commit 8608514b264754bc33788708467b3f294f2f3c92 Author: Ariel Antonitis Date: Wed Aug 7 20:26:15 2019 -0400 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e46a5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +*.exe +*.o +*.i +*.elf +*.gba +*.sgm +*.sa1 +*.sg1 +*.1bpp +*.4bpp +*.8bpp +*.gbapal +*.lz +*.rl +*.latfont +*.hwjpnfont +*.fwjpnfont +sound/**/*.bin +sound/songs/midi/*.s +tools/agbcc +tools/binutils +tools/br_ips/br_ips +tools/br_ips/ips_patch +*.map +*.ld +*.bat +*.dump +*.sa* +Thumbs.db +build/ +.DS_Store +*.ddump +.idea/ +porymap.project.cfg +.vscode/ +.ropeproject/ +.ccls-cache/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4a3d245 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +AS := tools/binutils/bin/arm-none-eabi-as +LD := tools/binutils/bin/arm-none-eabi-ld +OBJCOPY := tools/binutils/bin/arm-none-eabi-objcopy +SHA1SUM := sha1sum -c +GBAFIX := tools/gbafix/gbafix + +ASFLAGS := -mcpu=arm7tdmi + +ASFILE := $(wildcard asm/*.s data/*.s) +OBJFILE := $(ASFILE:.s=.o) +NAME := pokeemerald_jp +ROM := $(NAME).gba +ELF := $(NAME).elf +TITLE := POKEMON EMER +GAMECODE := BPEJ + +.PHONY: all compare clean + +all: $(ROM) + +compare: $(ROM) + $(SHA1SUM) rom_jp.sha1 + +clean: + rm -f $(ROM) $(ELF) $(OBJFILE) + +$(ROM): $(ELF) + $(OBJCOPY) -O binary $< $@ + +$(ELF): %.elf: $(OBJFILE) ld_script_jp.txt + $(LD) -T ld_script_jp.txt -Map $*.map -o $@ $(OBJFILE) -L tools/agbcc/lib -lgcc -lc + $(GBAFIX) -t"$(TITLE)" -c$(GAMECODE) -m01 --silent $@ + +$(OBJFILE): %.o: %.s + $(AS) $(ASFLAGS) -o $@ $< diff --git a/asm/agb_flash.s b/asm/agb_flash.s new file mode 100644 index 0000000..3080566 --- /dev/null +++ b/asm/agb_flash.s @@ -0,0 +1,1173 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start SwitchFlashBank +SwitchFlashBank: @ 0x0828FDE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0828FE00 + movs r1, #0xaa + strb r1, [r3] + ldr r2, _0828FE04 + movs r1, #0x55 + strb r1, [r2] + movs r1, #0xb0 + strb r1, [r3] + movs r1, #0xe0 + lsls r1, r1, #0x14 + strb r0, [r1] + bx lr + .align 2, 0 +_0828FE00: .4byte 0x0E005555 +_0828FE04: .4byte 0x0E002AAA + thumb_func_end SwitchFlashBank + + thumb_func_start ReadFlashId +ReadFlashId: @ 0x0828FE08 + push {r4, r5, lr} + sub sp, #0x44 + mov r0, sp + bl SetReadFlash1 + mov r5, sp + adds r5, #1 + ldr r2, _0828FE30 + movs r0, #0xaa + strb r0, [r2] + ldr r1, _0828FE34 + movs r0, #0x55 + strb r0, [r1] + movs r0, #0x90 + strb r0, [r2] + add r1, sp, #0x40 + ldr r2, _0828FE38 + adds r0, r2, #0 + b _0828FE40 + .align 2, 0 +_0828FE30: .4byte 0x0E005555 +_0828FE34: .4byte 0x0E002AAA +_0828FE38: .4byte 0x00004E20 +_0828FE3C: + ldrh r0, [r1] + subs r0, #1 +_0828FE40: + strh r0, [r1] + ldrh r0, [r1] + cmp r0, #0 + bne _0828FE3C + ldr r0, _0828FE7C + bl _call_via_r5 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0x14 + bl _call_via_r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + orrs r4, r0 + ldr r1, _0828FE80 + movs r0, #0xaa + strb r0, [r1] + ldr r2, _0828FE84 + movs r0, #0x55 + strb r0, [r2] + movs r0, #0xf0 + strb r0, [r1] + strb r0, [r1] + add r1, sp, #0x40 + ldr r2, _0828FE88 + adds r0, r2, #0 + b _0828FE90 + .align 2, 0 +_0828FE7C: .4byte 0x0E000001 +_0828FE80: .4byte 0x0E005555 +_0828FE84: .4byte 0x0E002AAA +_0828FE88: .4byte 0x00004E20 +_0828FE8C: + ldrh r0, [r1] + subs r0, #1 +_0828FE90: + strh r0, [r1] + ldrh r0, [r1] + cmp r0, #0 + bne _0828FE8C + adds r0, r4, #0 + add sp, #0x44 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end ReadFlashId + + thumb_func_start FlashTimerIntr +FlashTimerIntr: @ 0x0828FEA4 + push {lr} + ldr r1, _0828FEC4 + ldrh r0, [r1] + cmp r0, #0 + beq _0828FEC0 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0828FEC0 + ldr r1, _0828FEC8 + movs r0, #1 + strb r0, [r1] +_0828FEC0: + pop {r0} + bx r0 + .align 2, 0 +_0828FEC4: .4byte gUnknown_3001A6A +_0828FEC8: .4byte gUnknown_30075E0 + thumb_func_end FlashTimerIntr + + thumb_func_start SetFlashTimerIntr +SetFlashTimerIntr: @ 0x0828FECC + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bhi _0828FF00 + ldr r0, _0828FEF0 + strb r1, [r0] + ldr r1, _0828FEF4 + ldrb r0, [r0] + lsls r0, r0, #2 + ldr r3, _0828FEF8 + adds r0, r0, r3 + str r0, [r1] + ldr r0, _0828FEFC + str r0, [r2] + movs r0, #0 + b _0828FF02 + .align 2, 0 +_0828FEF0: .4byte gUnknown_3001A68 +_0828FEF4: .4byte gUnknown_3001A6C +_0828FEF8: .4byte 0x04000100 +_0828FEFC: .4byte FlashTimerIntr +_0828FF00: + movs r0, #1 +_0828FF02: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end SetFlashTimerIntr + + thumb_func_start StartFlashTimer +StartFlashTimer: @ 0x0828FF08 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0828FF8C + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #1 + ldr r0, [r1] + adds r2, r2, r0 + ldr r1, _0828FF90 + ldr r0, _0828FF94 + mov sb, r0 + ldrh r0, [r0] + strh r0, [r1] + movs r3, #0 + mov r1, sb + strh r3, [r1] + ldr r0, _0828FF98 + mov r8, r0 + ldr r4, [r0] + strh r3, [r4, #2] + ldr r6, _0828FF9C + ldr r1, _0828FFA0 + mov sl, r1 + ldrb r1, [r1] + movs r5, #8 + adds r0, r5, #0 + lsls r0, r1 + adds r1, r0, #0 + ldrh r0, [r6] + orrs r0, r1 + strh r0, [r6] + ldr r0, _0828FFA4 + strb r3, [r0] + ldr r1, _0828FFA8 + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + ldrh r0, [r2] + strh r0, [r4] + adds r0, r4, #2 + mov r1, r8 + str r0, [r1] + ldrh r0, [r2, #2] + strh r0, [r4, #2] + str r4, [r1] + ldr r1, _0828FFAC + mov r2, sl + ldrb r0, [r2] + lsls r5, r0 + strh r5, [r1] + movs r0, #1 + mov r3, sb + strh r0, [r3] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828FF8C: .4byte gUnknown_3007604 +_0828FF90: .4byte gUnknown_3001A70 +_0828FF94: .4byte 0x04000208 +_0828FF98: .4byte gUnknown_3001A6C +_0828FF9C: .4byte 0x04000200 +_0828FFA0: .4byte gUnknown_3001A68 +_0828FFA4: .4byte gUnknown_30075E0 +_0828FFA8: .4byte gUnknown_3001A6A +_0828FFAC: .4byte 0x04000202 + thumb_func_end StartFlashTimer + + thumb_func_start StopFlashTimer +StopFlashTimer: @ 0x0828FFB0 + ldr r3, _0828FFE0 + movs r1, #0 + strh r1, [r3] + ldr r2, _0828FFE4 + ldr r0, [r2] + strh r1, [r0] + adds r0, #2 + str r0, [r2] + strh r1, [r0] + subs r0, #2 + str r0, [r2] + ldr r2, _0828FFE8 + ldr r0, _0828FFEC + ldrb r0, [r0] + movs r1, #8 + lsls r1, r0 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] + ldr r0, _0828FFF0 + ldrh r0, [r0] + strh r0, [r3] + bx lr + .align 2, 0 +_0828FFE0: .4byte 0x04000208 +_0828FFE4: .4byte gUnknown_3001A6C +_0828FFE8: .4byte 0x04000200 +_0828FFEC: .4byte gUnknown_3001A68 +_0828FFF0: .4byte gUnknown_3001A70 + thumb_func_end StopFlashTimer + + thumb_func_start ReadFlash1 +ReadFlash1: @ 0x0828FFF4 + ldrb r0, [r0] + bx lr + thumb_func_end ReadFlash1 + + thumb_func_start SetReadFlash1 +SetReadFlash1: @ 0x0828FFF8 + push {lr} + adds r2, r0, #0 + ldr r1, _08290014 + adds r0, r2, #1 + str r0, [r1] + ldr r3, _08290018 + movs r0, #1 + eors r3, r0 + ldr r0, _0829001C + ldr r1, _08290018 + subs r0, r0, r1 + lsls r0, r0, #0xf + b _0829002C + .align 2, 0 +_08290014: .4byte gUnknown_30075E4 +_08290018: .4byte ReadFlash1 +_0829001C: .4byte SetReadFlash1 +_08290020: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_0829002C: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08290020 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end SetReadFlash1 + + thumb_func_start ReadFlash_Core +ReadFlash_Core: @ 0x08290038 + push {r4, lr} + adds r4, r0, #0 + subs r3, r2, #1 + cmp r2, #0 + beq _08290054 + movs r2, #1 + rsbs r2, r2, #0 +_08290046: + ldrb r0, [r4] + strb r0, [r1] + adds r4, #1 + adds r1, #1 + subs r3, #1 + cmp r3, r2 + bne _08290046 +_08290054: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end ReadFlash_Core + + thumb_func_start ReadFlash +ReadFlash: @ 0x0829005C + push {r4, r5, r6, r7, lr} + sub sp, #0x80 + adds r5, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + lsls r3, r0, #0x10 + lsrs r4, r3, #0x10 + ldr r2, _082900A8 + ldrh r0, [r2] + ldr r1, _082900AC + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + ldr r0, _082900B0 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r1, r0 + bne _08290094 + lsrs r0, r3, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ands r4, r0 +_08290094: + ldr r3, _082900B4 + movs r0, #1 + eors r3, r0 + mov r2, sp + ldr r0, _082900B8 + ldr r1, _082900B4 + subs r0, r0, r1 + lsls r0, r0, #0xf + b _082900C8 + .align 2, 0 +_082900A8: .4byte 0x04000204 +_082900AC: .4byte 0x0000FFFC +_082900B0: .4byte gUnknown_30075F0 +_082900B4: .4byte ReadFlash_Core +_082900B8: .4byte ReadFlash +_082900BC: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_082900C8: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082900BC + mov r3, sp + adds r3, #1 + ldr r0, _082900F4 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r4, r0 + adds r0, r4, #0 + movs r2, #0xe0 + lsls r2, r2, #0x14 + adds r1, r5, r2 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r7, #0 + bl _call_via_r3 + add sp, #0x80 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082900F4: .4byte gUnknown_30075F0 + thumb_func_end ReadFlash + + thumb_func_start VerifyFlashSector_Core +VerifyFlashSector_Core: @ 0x082900F8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r3, r1, #0 + subs r4, r2, #1 + cmp r2, #0 + beq _0829011E + movs r2, #1 + rsbs r2, r2, #0 +_08290108: + ldrb r1, [r3] + ldrb r0, [r5] + adds r5, #1 + adds r3, #1 + cmp r1, r0 + beq _08290118 + subs r0, r3, #1 + b _08290120 +_08290118: + subs r4, #1 + cmp r4, r2 + bne _08290108 +_0829011E: + movs r0, #0 +_08290120: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end VerifyFlashSector_Core + + thumb_func_start VerifyFlashSector +VerifyFlashSector: @ 0x08290128 + push {r4, r5, lr} + sub sp, #0x100 + adds r5, r1, #0 + lsls r3, r0, #0x10 + lsrs r4, r3, #0x10 + ldr r2, _08290170 + ldrh r0, [r2] + ldr r1, _08290174 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + ldr r0, _08290178 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r1, r0 + bne _0829015C + lsrs r0, r3, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ands r4, r0 +_0829015C: + ldr r3, _0829017C + movs r0, #1 + eors r3, r0 + mov r2, sp + ldr r0, _08290180 + ldr r1, _0829017C + subs r0, r0, r1 + lsls r0, r0, #0xf + b _08290190 + .align 2, 0 +_08290170: .4byte 0x04000204 +_08290174: .4byte 0x0000FFFC +_08290178: .4byte gUnknown_30075F0 +_0829017C: .4byte VerifyFlashSector_Core +_08290180: .4byte VerifyFlashSector +_08290184: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_08290190: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08290184 + mov r3, sp + adds r3, #1 + ldr r0, _082901BC + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r4, r1 + adds r1, r4, #0 + movs r2, #0xe0 + lsls r2, r2, #0x14 + adds r1, r1, r2 + ldrh r2, [r0, #4] + adds r0, r5, #0 + bl _call_via_r3 + add sp, #0x100 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_082901BC: .4byte gUnknown_30075F0 + thumb_func_end VerifyFlashSector + + thumb_func_start VerifyFlashSectorNBytes +VerifyFlashSectorNBytes: @ 0x082901C0 + push {r4, r5, r6, lr} + sub sp, #0x100 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r2, r0, #0x10 + lsrs r4, r2, #0x10 + ldr r0, _08290208 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r1, r0 + bne _082901E8 + lsrs r0, r2, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ands r4, r0 +_082901E8: + ldr r2, _0829020C + ldrh r0, [r2] + ldr r1, _08290210 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + ldr r3, _08290214 + movs r0, #1 + eors r3, r0 + mov r2, sp + ldr r0, _08290218 + ldr r1, _08290214 + subs r0, r0, r1 + lsls r0, r0, #0xf + b _08290228 + .align 2, 0 +_08290208: .4byte gUnknown_30075F0 +_0829020C: .4byte 0x04000204 +_08290210: .4byte 0x0000FFFC +_08290214: .4byte VerifyFlashSector_Core +_08290218: .4byte VerifyFlashSector +_0829021C: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r0, r1, #1 + lsls r0, r0, #0x10 +_08290228: + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829021C + mov r3, sp + adds r3, #1 + ldr r0, _08290254 + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r4, r1 + adds r1, r4, #0 + movs r0, #0xe0 + lsls r0, r0, #0x14 + adds r1, r1, r0 + adds r0, r5, #0 + adds r2, r6, #0 + bl _call_via_r3 + add sp, #0x100 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08290254: .4byte gUnknown_30075F0 + thumb_func_end VerifyFlashSectorNBytes + + thumb_func_start ProgramFlashSectorAndVerify +ProgramFlashSectorAndVerify: @ 0x08290258 + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r6, #0 + b _0829026A +_08290264: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0829026A: + cmp r6, #2 + bhi _08290290 + ldr r0, _08290298 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + bne _08290264 + adds r0, r4, #0 + adds r1, r5, #0 + bl VerifyFlashSector + adds r2, r0, #0 + cmp r2, #0 + bne _08290264 +_08290290: + adds r0, r2, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08290298: .4byte gUnknown_30075EC + thumb_func_end ProgramFlashSectorAndVerify + + thumb_func_start ProgramFlashSectorAndVerifyNBytes +ProgramFlashSectorAndVerifyNBytes: @ 0x0829029C + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + adds r7, r2, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r6, #0 + b _082902B0 +_082902AA: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_082902B0: + cmp r6, #2 + bhi _082902D8 + ldr r0, _082902E0 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _082902AA + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl VerifyFlashSectorNBytes + adds r3, r0, #0 + cmp r3, #0 + bne _082902AA +_082902D8: + adds r0, r3, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_082902E0: .4byte gUnknown_30075EC + thumb_func_end ProgramFlashSectorAndVerifyNBytes + + thumb_func_start IdentifyFlash +IdentifyFlash: @ 0x082902E4 + push {r4, lr} + ldr r2, _08290304 + ldrh r0, [r2] + ldr r1, _08290308 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + bl ReadFlashId + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, _0829030C + movs r4, #1 + b _08290312 + .align 2, 0 +_08290304: .4byte 0x04000204 +_08290308: .4byte 0x0000FFFC +_0829030C: .4byte gUnknown_890ED54 +_08290310: + adds r2, #4 +_08290312: + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _08290326 + ldrh r0, [r1, #0x2c] + cmp r3, r0 + bne _08290310 + movs r4, #0 +_08290326: + ldr r1, _08290368 + ldr r0, [r2] + ldr r0, [r0] + str r0, [r1] + ldr r1, _0829036C + ldr r0, [r2] + ldr r0, [r0, #4] + str r0, [r1] + ldr r1, _08290370 + ldr r0, [r2] + ldr r0, [r0, #8] + str r0, [r1] + ldr r1, _08290374 + ldr r0, [r2] + ldr r0, [r0, #0xc] + str r0, [r1] + ldr r1, _08290378 + ldr r0, [r2] + ldr r0, [r0, #0x10] + str r0, [r1] + ldr r1, _0829037C + ldr r0, [r2] + ldr r0, [r0, #0x14] + str r0, [r1] + ldr r1, _08290380 + ldr r0, [r2] + adds r0, #0x18 + str r0, [r1] + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08290368: .4byte gUnknown_30075F4 +_0829036C: .4byte gUnknown_30075EC +_08290370: .4byte gUnknown_30075FC +_08290374: .4byte gUnknown_3007600 +_08290378: .4byte gUnknown_30075E8 +_0829037C: .4byte gUnknown_3007604 +_08290380: .4byte gUnknown_30075F0 + thumb_func_end IdentifyFlash + + thumb_func_start WaitForFlashWrite_Common +WaitForFlashWrite_Common: @ 0x08290384 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r0, #0 + mov r8, r0 + adds r0, r7, #0 + bl StartFlashTimer + ldr r6, _082903A8 + ldr r1, _082903AC + mov sb, r1 + b _082903E8 + .align 2, 0 +_082903A8: .4byte gUnknown_30075E4 +_082903AC: .4byte 0x0E005555 +_082903B0: + movs r0, #0xf0 + mov r1, sb + strb r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #8 + b _082903DE +_082903BC: + ldr r0, _082903E4 + ldrb r0, [r0] + cmp r0, #0 + beq _082903E8 + ldr r1, [r6] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + beq _08290410 + movs r0, #0xf0 + mov r1, sb + strb r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #8 +_082903DE: + orrs r7, r0 + mov r8, r7 + b _08290410 + .align 2, 0 +_082903E4: .4byte gUnknown_30075E0 +_082903E8: + ldr r1, [r6] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r5 + beq _08290410 + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _082903BC + ldr r1, [r6] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _082903B0 +_08290410: + bl StopFlashTimer + mov r0, r8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end WaitForFlashWrite_Common + + thumb_func_start EraseFlashChip_MX +EraseFlashChip_MX: @ 0x08290424 + push {r4, r5, r6, lr} + sub sp, #0x40 + ldr r5, _08290480 + ldrh r1, [r5] + ldr r6, _08290484 + ands r1, r6 + ldr r0, _08290488 + ldr r0, [r0] + ldrh r0, [r0, #0x10] + orrs r1, r0 + strh r1, [r5] + ldr r1, _0829048C + movs r4, #0xaa + strb r4, [r1] + ldr r3, _08290490 + movs r2, #0x55 + strb r2, [r3] + movs r0, #0x80 + strb r0, [r1] + strb r4, [r1] + strb r2, [r3] + movs r0, #0x10 + strb r0, [r1] + mov r0, sp + bl SetReadFlash1 + ldr r0, _08290494 + movs r1, #0xe0 + lsls r1, r1, #0x14 + ldr r3, [r0] + movs r0, #3 + movs r2, #0xff + bl _call_via_r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r5] + ands r1, r6 + movs r2, #3 + orrs r1, r2 + strh r1, [r5] + add sp, #0x40 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08290480: .4byte 0x04000204 +_08290484: .4byte 0x0000FFFC +_08290488: .4byte gUnknown_30075F0 +_0829048C: .4byte 0x0E005555 +_08290490: .4byte 0x0E002AAA +_08290494: .4byte gUnknown_30075E8 + thumb_func_end EraseFlashChip_MX + + thumb_func_start EraseFlashSector_MX +EraseFlashSector_MX: @ 0x08290498 + push {r4, r5, r6, r7, lr} + sub sp, #0x40 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _082904B0 + ldr r0, [r0] + ldrh r0, [r0, #0xa] + cmp r6, r0 + blo _082904B8 + ldr r0, _082904B4 + b _08290558 + .align 2, 0 +_082904B0: .4byte gUnknown_30075F0 +_082904B4: .4byte 0x000080FF +_082904B8: + lsrs r0, r6, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ands r6, r0 + movs r7, #0 +_082904C8: + ldr r3, _08290530 + ldrh r1, [r3] + ldr r0, _08290534 + ands r1, r0 + ldr r0, _08290538 + ldr r2, [r0] + ldrh r0, [r2, #0x10] + orrs r1, r0 + strh r1, [r3] + ldrb r4, [r2, #8] + adds r0, r6, #0 + lsls r0, r4 + adds r4, r0, #0 + movs r0, #0xe0 + lsls r0, r0, #0x14 + adds r4, r4, r0 + ldr r1, _0829053C + movs r5, #0xaa + strb r5, [r1] + ldr r3, _08290540 + movs r2, #0x55 + strb r2, [r3] + movs r0, #0x80 + strb r0, [r1] + strb r5, [r1] + strb r2, [r3] + movs r0, #0x30 + strb r0, [r4] + mov r0, sp + bl SetReadFlash1 + ldr r0, _08290544 + ldr r3, [r0] + movs r0, #2 + adds r1, r4, #0 + movs r2, #0xff + bl _call_via_r3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r0, #0xa0 + lsls r0, r0, #8 + ands r0, r3 + cmp r0, #0 + beq _08290548 + cmp r7, #3 + bhi _08290548 + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + b _082904C8 + .align 2, 0 +_08290530: .4byte 0x04000204 +_08290534: .4byte 0x0000FFFC +_08290538: .4byte gUnknown_30075F0 +_0829053C: .4byte 0x0E005555 +_08290540: .4byte 0x0E002AAA +_08290544: .4byte gUnknown_30075E8 +_08290548: + ldr r2, _08290560 + ldrh r0, [r2] + ldr r1, _08290564 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strh r0, [r2] + adds r0, r3, #0 +_08290558: + add sp, #0x40 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08290560: .4byte 0x04000204 +_08290564: .4byte 0x0000FFFC + thumb_func_end EraseFlashSector_MX + + thumb_func_start ProgramFlashByte_MX +ProgramFlashByte_MX: @ 0x08290568 + push {r4, r5, r6, r7, lr} + sub sp, #0x40 + adds r6, r1, #0 + lsls r1, r0, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r5, _082905D8 + ldr r0, [r5] + ldr r0, [r0, #4] + cmp r6, r0 + bhs _082905F0 + lsrs r0, r1, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ldr r1, [r5] + ands r4, r0 + ldrb r1, [r1, #8] + lsls r4, r1 + movs r1, #0xe0 + lsls r1, r1, #0x14 + adds r0, r6, r1 + adds r4, r4, r0 + mov r0, sp + bl SetReadFlash1 + ldr r2, _082905DC + ldrh r0, [r2] + ldr r1, _082905E0 + ands r0, r1 + ldr r1, [r5] + ldrh r1, [r1, #0x10] + orrs r0, r1 + strh r0, [r2] + ldr r2, _082905E4 + movs r0, #0xaa + strb r0, [r2] + ldr r1, _082905E8 + movs r0, #0x55 + strb r0, [r1] + movs r0, #0xa0 + strb r0, [r2] + strb r7, [r4] + ldr r0, _082905EC + ldr r3, [r0] + movs r0, #1 + adds r1, r4, #0 + adds r2, r7, #0 + bl _call_via_r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _082905F4 + .align 2, 0 +_082905D8: .4byte gUnknown_30075F0 +_082905DC: .4byte 0x04000204 +_082905E0: .4byte 0x0000FFFC +_082905E4: .4byte 0x0E005555 +_082905E8: .4byte 0x0E002AAA +_082905EC: .4byte gUnknown_30075E8 +_082905F0: + movs r0, #0x80 + lsls r0, r0, #8 +_082905F4: + add sp, #0x40 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end ProgramFlashByte_MX + + thumb_func_start sub_082905FC +sub_082905FC: @ 0x082905FC + push {r4, lr} + ldr r4, _08290628 + movs r2, #0xaa + strb r2, [r4] + ldr r3, _0829062C + movs r2, #0x55 + strb r2, [r3] + movs r2, #0xa0 + strb r2, [r4] + ldrb r2, [r0] + strb r2, [r1] + ldr r3, _08290630 + ldrb r2, [r0] + ldr r3, [r3] + movs r0, #1 + bl _call_via_r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08290628: .4byte 0x0E005555 +_0829062C: .4byte 0x0E002AAA +_08290630: .4byte gUnknown_30075E8 + thumb_func_end sub_082905FC + + thumb_func_start ProgramFlashSector_MX +ProgramFlashSector_MX: @ 0x08290634 + push {r4, r5, r6, r7, lr} + sub sp, #0x40 + adds r7, r1, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0829064C + ldr r0, [r0] + ldrh r0, [r0, #0xa] + cmp r4, r0 + blo _08290654 + ldr r0, _08290650 + b _082906CE + .align 2, 0 +_0829064C: .4byte gUnknown_30075F0 +_08290650: .4byte 0x000080FF +_08290654: + adds r0, r4, #0 + bl EraseFlashSector_MX + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _082906CC + lsrs r0, r4, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SwitchFlashBank + movs r0, #0xf + ands r4, r0 + mov r0, sp + bl SetReadFlash1 + ldr r3, _0829069C + ldrh r1, [r3] + ldr r0, _082906A0 + ands r1, r0 + ldr r0, _082906A4 + ldr r2, [r0] + ldrh r0, [r2, #0x10] + orrs r1, r0 + strh r1, [r3] + ldr r1, _082906A8 + ldr r0, [r2, #4] + strh r0, [r1] + ldrb r0, [r2, #8] + lsls r4, r0 + movs r0, #0xe0 + lsls r0, r0, #0x14 + adds r4, r4, r0 + adds r6, r1, #0 + b _082906B6 + .align 2, 0 +_0829069C: .4byte 0x04000204 +_082906A0: .4byte 0x0000FFFC +_082906A4: .4byte gUnknown_30075F0 +_082906A8: .4byte gUnknown_30075F8 +_082906AC: + ldrh r0, [r6] + subs r0, #1 + strh r0, [r6] + adds r7, #1 + adds r4, #1 +_082906B6: + ldrh r0, [r6] + cmp r0, #0 + beq _082906CC + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_082905FC + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _082906AC +_082906CC: + adds r0, r5, #0 +_082906CE: + add sp, #0x40 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end ProgramFlashSector_MX diff --git a/asm/libagbsyscall.s b/asm/libagbsyscall.s new file mode 100644 index 0000000..e35abcc --- /dev/null +++ b/asm/libagbsyscall.s @@ -0,0 +1,107 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start ArcTan2 +ArcTan2: @ 0x082959B0 + svc #0xa + bx lr + thumb_func_end ArcTan2 + + thumb_func_start BgAffineSet +BgAffineSet: @ 0x082959B4 + svc #0xe + bx lr + thumb_func_end BgAffineSet + + thumb_func_start CpuFastSet +CpuFastSet: @ 0x082959B8 + svc #0xc + bx lr + thumb_func_end CpuFastSet + + thumb_func_start CpuSet +CpuSet: @ 0x082959BC + svc #0xb + bx lr + thumb_func_end CpuSet + + thumb_func_start Div +Div: @ 0x082959C0 + svc #6 + bx lr + thumb_func_end Div + + thumb_func_start LZ77UnCompVram +LZ77UnCompVram: @ 0x082959C4 + svc #0x12 + bx lr + thumb_func_end LZ77UnCompVram + + thumb_func_start LZ77UnCompWram +LZ77UnCompWram: @ 0x082959C8 + svc #0x11 + bx lr + thumb_func_end LZ77UnCompWram + + thumb_func_start MultiBoot +MultiBoot: @ 0x082959CC + movs r1, #1 + svc #0x25 + bx lr + .align 2, 0 + thumb_func_end MultiBoot + + thumb_func_start ObjAffineSet +ObjAffineSet: @ 0x082959D4 + svc #0xf + bx lr + thumb_func_end ObjAffineSet + + thumb_func_start RLUnCompVram +RLUnCompVram: @ 0x082959D8 + svc #0x15 + bx lr + thumb_func_end RLUnCompVram + + thumb_func_start RLUnCompWram +RLUnCompWram: @ 0x082959DC + svc #0x14 + bx lr + thumb_func_end RLUnCompWram + + thumb_func_start RegisterRamReset +RegisterRamReset: @ 0x082959E0 + svc #1 + bx lr + thumb_func_end RegisterRamReset + + thumb_func_start SoftReset +SoftReset: @ 0x082959E4 + ldr r3, _082959F4 + movs r2, #0 + strb r2, [r3] + ldr r1, _082959F8 + mov sp, r1 + svc #1 + svc #0 + movs r0, r0 + .align 2, 0 +_082959F4: .4byte 0x04000208 +_082959F8: .4byte gUnknown_3007F00 + thumb_func_end SoftReset + + thumb_func_start Sqrt +Sqrt: @ 0x082959FC + svc #8 + bx lr + thumb_func_end Sqrt + + thumb_func_start VBlankIntrWait +VBlankIntrWait: @ 0x08295A00 + movs r2, #0 + svc #5 + bx lr + .align 2, 0 + thumb_func_end VBlankIntrWait diff --git a/asm/libc.s b/asm/libc.s new file mode 100644 index 0000000..f66e53e --- /dev/null +++ b/asm/libc.s @@ -0,0 +1,8850 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start memcpy +memcpy: @ 0x08297D0C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r3, r1, #0 + cmp r2, #0xf + bls _08297D4C + adds r0, r3, #0 + orrs r0, r5 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297D4C + adds r1, r5, #0 +_08297D26: + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + subs r2, #0x10 + cmp r2, #0xf + bhi _08297D26 + cmp r2, #3 + bls _08297D4A +_08297D40: + ldm r3!, {r0} + stm r1!, {r0} + subs r2, #4 + cmp r2, #3 + bhi _08297D40 +_08297D4A: + adds r4, r1, #0 +_08297D4C: + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _08297D66 + adds r1, r0, #0 +_08297D58: + ldrb r0, [r3] + strb r0, [r4] + adds r3, #1 + adds r4, #1 + subs r2, #1 + cmp r2, r1 + bne _08297D58 +_08297D66: + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end memcpy + + thumb_func_start memset +memset: @ 0x08297D6C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r5, #0 + cmp r2, #3 + bls _08297DB2 + movs r0, #3 + ands r0, r5 + cmp r0, #0 + bne _08297DB2 + adds r1, r5, #0 + movs r0, #0xff + ands r4, r0 + lsls r3, r4, #8 + orrs r3, r4 + lsls r0, r3, #0x10 + orrs r3, r0 + cmp r2, #0xf + bls _08297DA6 +_08297D92: + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + subs r2, #0x10 + cmp r2, #0xf + bhi _08297D92 + b _08297DA6 +_08297DA2: + stm r1!, {r3} + subs r2, #4 +_08297DA6: + cmp r2, #3 + bhi _08297DA2 + adds r3, r1, #0 + b _08297DB2 +_08297DAE: + strb r4, [r3] + adds r3, #1 +_08297DB2: + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bne _08297DAE + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end memset + + thumb_func_start strcmp +strcmp: @ 0x08297DC0 + push {r4, r5, lr} + adds r2, r0, #0 + adds r3, r1, #0 + orrs r0, r3 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297E06 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + bne _08297E06 + ldr r5, _08297DEC + ldr r4, _08297DF0 +_08297DDC: + ldr r1, [r2] + adds r0, r1, r5 + bics r0, r1 + ands r0, r4 + cmp r0, #0 + beq _08297DF4 + movs r0, #0 + b _08297E18 + .align 2, 0 +_08297DEC: .4byte 0xFEFEFEFF +_08297DF0: .4byte 0x80808080 +_08297DF4: + adds r2, #4 + adds r3, #4 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + beq _08297DDC + b _08297E06 +_08297E02: + adds r2, #1 + adds r3, #1 +_08297E06: + ldrb r0, [r2] + cmp r0, #0 + beq _08297E12 + ldrb r1, [r3] + cmp r0, r1 + beq _08297E02 +_08297E12: + ldrb r2, [r2] + ldrb r3, [r3] + subs r0, r2, r3 +_08297E18: + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end strcmp + + thumb_func_start strcpy +strcpy: @ 0x08297E1C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r3, r6, #0 + adds r2, r1, #0 + adds r0, r2, #0 + orrs r0, r6 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297E54 + ldr r1, [r2] + ldr r5, _08297E3C + adds r0, r1, r5 + bics r0, r1 + ldr r4, _08297E40 + b _08297E4E + .align 2, 0 +_08297E3C: .4byte 0xFEFEFEFF +_08297E40: .4byte 0x80808080 +_08297E44: + ldm r2!, {r0} + stm r3!, {r0} + ldr r1, [r2] + adds r0, r1, r5 + bics r0, r1 +_08297E4E: + ands r0, r4 + cmp r0, #0 + beq _08297E44 +_08297E54: + ldrb r0, [r2] + strb r0, [r3] + lsls r0, r0, #0x18 + adds r2, #1 + adds r3, #1 + cmp r0, #0 + bne _08297E54 + adds r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end strcpy + + thumb_func_start vsprintf +vsprintf: @ 0x08297E68 + push {r4, r5, lr} + sub sp, #0x58 + mov r4, sp + movs r5, #0 + movs r3, #0x82 + lsls r3, r3, #2 + strh r3, [r4, #0xc] + str r0, [sp] + str r0, [sp, #0x10] + ldr r0, _08297E94 + str r0, [sp, #8] + str r0, [sp, #0x14] + ldr r0, _08297E98 + ldr r0, [r0] + str r0, [sp, #0x54] + mov r0, sp + bl vfprintf + ldr r1, [sp] + strb r5, [r1] + add sp, #0x58 + pop {r4, r5, pc} + .align 2, 0 +_08297E94: .4byte 0x7FFFFFFF +_08297E98: .4byte gUnknown_203CF1C + thumb_func_end vsprintf + + thumb_func_start sub_08297E9C +sub_08297E9C: @ 0x08297E9C + push {r4, lr} + adds r4, r1, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _08297EB4 + adds r1, r4, #0 + bl __sfvwrite + movs r1, #0 + str r1, [r4, #8] + str r1, [r4, #4] + b _08297EB8 +_08297EB4: + str r1, [r4, #4] + movs r0, #0 +_08297EB8: + pop {r4, pc} + .align 2, 0 + thumb_func_end sub_08297E9C + + thumb_func_start sub_08297EBC +sub_08297EBC: @ 0x08297EBC + push {r4, r5, lr} + ldr r4, _08297F2C + add sp, r4 + adds r5, r0, #0 + ldr r0, [r5, #0x54] + str r0, [sp, #0x54] + mov r3, sp + movs r0, #3 + rsbs r0, r0, #0 + ldrh r4, [r5, #0xc] + ands r0, r4 + movs r4, #0 + strh r0, [r3, #0xc] + ldrh r0, [r5, #0xe] + strh r0, [r3, #0xe] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x24] + str r0, [sp, #0x24] + add r0, sp, #0x58 + str r0, [sp] + str r0, [sp, #0x10] + movs r0, #0x80 + lsls r0, r0, #3 + str r0, [sp, #8] + str r0, [sp, #0x14] + str r4, [sp, #0x18] + mov r0, sp + bl vfprintf + adds r4, r0, #0 + cmp r4, #0 + blt _08297F0C + mov r0, sp + bl fflush + cmp r0, #0 + beq _08297F0C + movs r4, #1 + rsbs r4, r4, #0 +_08297F0C: + mov r1, sp + movs r0, #0x40 + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0 + beq _08297F20 + movs r0, #0x40 + ldrh r1, [r5, #0xc] + orrs r0, r1 + strh r0, [r5, #0xc] +_08297F20: + adds r0, r4, #0 + movs r3, #0x8b + lsls r3, r3, #3 + add sp, r3 + pop {r4, r5, pc} + .align 2, 0 +_08297F2C: .4byte 0xFFFFFBA8 + thumb_func_end sub_08297EBC + + thumb_func_start vfprintf +vfprintf: @ 0x08297F30 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldr r0, [r4, #0x54] + adds r1, r4, #0 + adds r2, r5, #0 + bl _vfprintf_r + pop {r4, r5, pc} + thumb_func_end vfprintf + + thumb_func_start _vfprintf_r +_vfprintf_r: @ 0x08297F44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _08297FAC + add sp, r4 + str r0, [sp, #0x1dc] + str r1, [sp, #0x1e0] + adds r4, r2, #0 + mov sl, r3 + bl localeconv + ldr r0, [r0] + str r0, [sp, #0x1f8] + movs r1, #0 + add r0, sp, #0x1d0 + str r1, [r0] + ldr r1, [sp, #0x1e0] + ldr r0, [r1, #0x54] + cmp r0, #0 + bne _08297F76 + ldr r0, _08297FB0 + ldr r0, [r0] + str r0, [r1, #0x54] +_08297F76: + ldr r2, [sp, #0x1e0] + ldr r1, [r2, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08297F86 + adds r0, r1, #0 + bl __sinit +_08297F86: + movs r0, #8 + ldr r1, [sp, #0x1e0] + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0 + beq _08297F9A + ldr r2, [sp, #0x1e0] + ldr r0, [r2, #0x10] + cmp r0, #0 + bne _08297FB4 +_08297F9A: + ldr r0, [sp, #0x1e0] + bl __swsetup + cmp r0, #0 + beq _08297FB4 + movs r0, #1 + rsbs r0, r0, #0 + bl _08298E94 + .align 2, 0 +_08297FAC: .4byte 0xFFFFFDE0 +_08297FB0: .4byte gUnknown_203CF1C +_08297FB4: + movs r0, #0x1a + ldr r1, [sp, #0x1e0] + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0xa + bne _08297FD8 + ldr r2, [sp, #0x1e0] + movs r1, #0xe + ldrsh r0, [r2, r1] + cmp r0, #0 + blt _08297FD8 + adds r0, r2, #0 + adds r1, r4, #0 + mov r2, sl + bl sub_08297EBC + bl _08298E94 +_08297FD8: + str r4, [sp, #0x1e4] + add r1, sp, #0x1c + add r5, sp, #0x28 + str r5, [sp, #0x1c] + movs r0, #0 + str r0, [r1, #8] + str r0, [r1, #4] + movs r2, #0 + str r2, [sp, #0x1f0] + mov sb, r1 + movs r4, #0xe6 + lsls r4, r4, #1 + add r4, sp + str r4, [sp, #0x214] + movs r0, #0xe8 + lsls r0, r0, #1 + add r0, sp + str r0, [sp, #0x218] +_08297FFC: + ldr r1, [sp, #0x1e4] + mov r8, r1 +_08298000: + ldr r0, _082980AC + ldr r0, [r0] + ldr r1, _082980B0 + ldr r3, [r1] + ldr r2, [sp, #0x218] + str r2, [sp] + ldr r1, [sp, #0x214] + ldr r2, [sp, #0x1e4] + bl _mbtowc_r + adds r4, r0, #0 + cmp r4, #0 + ble _0829802E + ldr r0, [sp, #0x1e4] + adds r0, r0, r4 + str r0, [sp, #0x1e4] + add r0, sp, #0x1cc + ldr r0, [r0] + cmp r0, #0x25 + bne _08298000 + ldr r1, [sp, #0x1e4] + subs r1, #1 + str r1, [sp, #0x1e4] +_0829802E: + ldr r2, [sp, #0x1e4] + mov r0, r8 + subs r6, r2, r0 + cmp r6, #0 + beq _08298066 + str r0, [r5] + str r6, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r6 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298060 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _0829805E + bl _08298E80 +_0829805E: + add r5, sp, #0x28 +_08298060: + ldr r2, [sp, #0x1f0] + adds r2, r2, r6 + str r2, [sp, #0x1f0] +_08298066: + cmp r4, #0 + bgt _0829806E + bl _08298E68 +_0829806E: + ldr r4, [sp, #0x1e4] + adds r4, #1 + str r4, [sp, #0x1e4] + movs r0, #0 + str r0, [sp, #0x1ec] + movs r1, #0 + str r1, [sp, #0x208] + movs r2, #0 + str r2, [sp, #0x1f4] + movs r6, #1 + rsbs r6, r6, #0 + ldr r0, _082980B4 + add r0, sp + strb r2, [r0] +_0829808A: + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + str r0, [sp, #0x1e8] + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] +_08298096: + ldr r0, [sp, #0x1e8] + subs r0, #0x20 + cmp r0, #0x58 + bls _082980A0 + b _08298752 +_082980A0: + lsls r0, r0, #2 + ldr r1, _082980B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_082980AC: .4byte gUnknown_203CF1C +_082980B0: .4byte gUnknown_203CF20 +_082980B4: .4byte 0x000001C9 +_082980B8: .4byte _082980BC +_082980BC: @ jump table + .4byte _08298220 @ case 0 + .4byte _08298752 @ case 1 + .4byte _08298752 @ case 2 + .4byte _08298238 @ case 3 + .4byte _08298752 @ case 4 + .4byte _08298752 @ case 5 + .4byte _08298752 @ case 6 + .4byte _08298752 @ case 7 + .4byte _08298752 @ case 8 + .4byte _08298752 @ case 9 + .4byte _0829823C @ case 10 + .4byte _08298256 @ case 11 + .4byte _08298752 @ case 12 + .4byte _08298252 @ case 13 + .4byte _08298264 @ case 14 + .4byte _08298752 @ case 15 + .4byte _082982C4 @ case 16 + .4byte _082982C8 @ case 17 + .4byte _082982C8 @ case 18 + .4byte _082982C8 @ case 19 + .4byte _082982C8 @ case 20 + .4byte _082982C8 @ case 21 + .4byte _082982C8 @ case 22 + .4byte _082982C8 @ case 23 + .4byte _082982C8 @ case 24 + .4byte _082982C8 @ case 25 + .4byte _08298752 @ case 26 + .4byte _08298752 @ case 27 + .4byte _08298752 @ case 28 + .4byte _08298752 @ case 29 + .4byte _08298752 @ case 30 + .4byte _08298752 @ case 31 + .4byte _08298752 @ case 32 + .4byte _08298752 @ case 33 + .4byte _08298752 @ case 34 + .4byte _08298752 @ case 35 + .4byte _08298332 @ case 36 + .4byte _08298384 @ case 37 + .4byte _08298752 @ case 38 + .4byte _08298384 @ case 39 + .4byte _08298752 @ case 40 + .4byte _08298752 @ case 41 + .4byte _08298752 @ case 42 + .4byte _08298752 @ case 43 + .4byte _082982EC @ case 44 + .4byte _08298752 @ case 45 + .4byte _08298752 @ case 46 + .4byte _0829853A @ case 47 + .4byte _08298752 @ case 48 + .4byte _08298752 @ case 49 + .4byte _08298752 @ case 50 + .4byte _08298752 @ case 51 + .4byte _08298752 @ case 52 + .4byte _082985D2 @ case 53 + .4byte _08298752 @ case 54 + .4byte _08298752 @ case 55 + .4byte _0829860E @ case 56 + .4byte _08298752 @ case 57 + .4byte _08298752 @ case 58 + .4byte _08298752 @ case 59 + .4byte _08298752 @ case 60 + .4byte _08298752 @ case 61 + .4byte _08298752 @ case 62 + .4byte _08298752 @ case 63 + .4byte _08298752 @ case 64 + .4byte _08298752 @ case 65 + .4byte _08298752 @ case 66 + .4byte _08298320 @ case 67 + .4byte _0829833A @ case 68 + .4byte _08298384 @ case 69 + .4byte _08298384 @ case 70 + .4byte _08298384 @ case 71 + .4byte _082982F0 @ case 72 + .4byte _0829833A @ case 73 + .4byte _08298752 @ case 74 + .4byte _08298752 @ case 75 + .4byte _082982F4 @ case 76 + .4byte _08298752 @ case 77 + .4byte _082984F4 @ case 78 + .4byte _08298542 @ case 79 + .4byte _08298570 @ case 80 + .4byte _08298316 @ case 81 + .4byte _08298752 @ case 82 + .4byte _08298590 @ case 83 + .4byte _08298752 @ case 84 + .4byte _082985DA @ case 85 + .4byte _08298752 @ case 86 + .4byte _08298752 @ case 87 + .4byte _08298618 @ case 88 +_08298220: + ldr r1, _08298234 + add r1, sp + ldrb r0, [r1] + cmp r0, #0 + beq _0829822C + b _0829808A +_0829822C: + movs r0, #0x20 + strb r0, [r1] + b _0829808A + .align 2, 0 +_08298234: .4byte 0x000001C9 +_08298238: + movs r0, #1 + b _08298304 +_0829823C: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + str r0, [sp, #0x1f4] + cmp r0, #0 + blt _0829824E + b _0829808A +_0829824E: + rsbs r0, r0, #0 + str r0, [sp, #0x1f4] +_08298252: + movs r0, #4 + b _08298318 +_08298256: + ldr r1, _08298260 + add r1, sp + movs r0, #0x2b + strb r0, [r1] + b _0829808A + .align 2, 0 +_08298260: .4byte 0x000001C9 +_08298264: + ldr r2, [sp, #0x1e4] + ldrb r2, [r2] + str r2, [sp, #0x1e8] + ldr r4, [sp, #0x1e4] + adds r4, #1 + str r4, [sp, #0x1e4] + cmp r2, #0x2a + bne _0829828E + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r4, [r0] + adds r6, r4, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + blt _0829828A + b _0829808A +_0829828A: + adds r6, r0, #0 + b _0829808A +_0829828E: + movs r4, #0 + ldr r0, [sp, #0x1e8] + b _082982AE +_08298294: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + subs r0, #0x30 + ldr r1, [sp, #0x1e8] + adds r4, r0, r1 + ldr r2, [sp, #0x1e4] + ldrb r2, [r2] + str r2, [sp, #0x1e8] + ldr r0, [sp, #0x1e4] + adds r0, #1 + str r0, [sp, #0x1e4] + adds r0, r2, #0 +_082982AE: + subs r0, #0x30 + cmp r0, #9 + bls _08298294 + adds r6, r4, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + blt _082982C0 + b _08298096 +_082982C0: + adds r6, r0, #0 + b _08298096 +_082982C4: + movs r0, #0x80 + b _08298318 +_082982C8: + movs r4, #0 +_082982CA: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + subs r0, #0x30 + ldr r2, [sp, #0x1e8] + adds r4, r0, r2 + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + str r0, [sp, #0x1e8] + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] + subs r0, #0x30 + cmp r0, #9 + bls _082982CA + str r4, [sp, #0x1f4] + b _08298096 +_082982EC: + movs r0, #8 + b _08298304 +_082982F0: + movs r0, #0x40 + b _0829830E +_082982F4: + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + cmp r0, #0x6c + bne _0829830C + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] + movs r0, #0x20 +_08298304: + ldr r2, [sp, #0x1ec] + orrs r2, r0 + str r2, [sp, #0x1ec] + b _0829808A +_0829830C: + movs r0, #0x10 +_0829830E: + ldr r4, [sp, #0x1ec] + orrs r4, r0 + str r4, [sp, #0x1ec] + b _0829808A +_08298316: + movs r0, #0x20 +_08298318: + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] + b _0829808A +_08298320: + add r2, sp, #0x68 + mov r8, r2 + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + strb r0, [r2] + b _08298760 +_08298332: + movs r0, #0x10 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] +_0829833A: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _0829834A + movs r4, #4 + add sl, r4 + b _08298366 +_0829834A: + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298362 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + movs r1, #0 + ldrsh r4, [r0, r1] + b _0829836C +_08298362: + movs r2, #4 + add sl, r2 +_08298366: + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829836C: + cmp r4, #0 + bge _0829837A + rsbs r4, r4, #0 + ldr r1, _08298380 + add r1, sp + movs r0, #0x2d + strb r0, [r1] +_0829837A: + movs r2, #1 + b _08298666 + .align 2, 0 +_08298380: .4byte 0x000001C9 +_08298384: + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + bne _08298390 + movs r6, #6 + b _082983A0 +_08298390: + ldr r4, [sp, #0x1e8] + cmp r4, #0x67 + beq _0829839A + cmp r4, #0x47 + bne _082983A0 +_0829839A: + cmp r6, #0 + bne _082983A0 + movs r6, #1 +_082983A0: + movs r0, #8 + ldr r1, [sp, #0x1ec] + ands r0, r1 + movs r2, #8 + add sl, r2 + mov r0, sl + subs r0, #8 + ldr r1, [r0] + ldr r2, [r0, #4] + str r1, [sp, #0x1fc] + str r2, [sp, #0x200] + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl isinf + cmp r0, #0 + beq _082983F4 + ldr r3, _082983E8 + ldr r2, _082983E4 + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __ltdf2 + cmp r0, #0 + bge _082983DA + ldr r1, _082983EC + add r1, sp + movs r0, #0x2d + strb r0, [r1] +_082983DA: + ldr r2, _082983F0 + mov r8, r2 + movs r3, #3 + b _0829876A + .align 2, 0 +_082983E4: .4byte 0x00000000 +_082983E8: .4byte 0x00000000 +_082983EC: .4byte 0x000001C9 +_082983F0: .4byte gUnknown_890F17C +_082983F4: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl isnan + cmp r0, #0 + beq _0829840C + ldr r4, _08298408 + mov r8, r4 + movs r3, #3 + b _0829876A + .align 2, 0 +_08298408: .4byte gUnknown_890F180 +_0829840C: + movs r0, #0x80 + lsls r0, r0, #1 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] + str r1, [sp] + add r0, sp, #0x1c8 + str r0, [sp, #4] + add r0, sp, #0x1d4 + str r0, [sp, #8] + ldr r2, [sp, #0x1e8] + str r2, [sp, #0xc] + add r0, sp, #0x1d8 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1dc] + ldr r1, [sp, #0x1fc] + ldr r2, [sp, #0x200] + adds r3, r6, #0 + bl sub_08298EA4 + mov r8, r0 + ldr r4, [sp, #0x1e8] + cmp r4, #0x67 + beq _08298440 + cmp r4, #0x47 + bne _08298462 +_08298440: + add r0, sp, #0x1d4 + ldr r1, [r0] + movs r0, #4 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08298450 + cmp r1, r6 + ble _0829845E +_08298450: + movs r0, #0x45 + ldr r1, [sp, #0x1e8] + cmp r1, #0x67 + bne _0829845A + movs r0, #0x65 +_0829845A: + str r0, [sp, #0x1e8] + b _08298462 +_0829845E: + movs r2, #0x67 + str r2, [sp, #0x1e8] +_08298462: + ldr r4, [sp, #0x1e8] + cmp r4, #0x65 + bgt _08298488 + add r0, sp, #0x1d4 + ldr r1, [r0] + subs r1, #1 + str r1, [r0] + add r0, sp, #0x14 + ldr r2, [sp, #0x1e8] + bl sub_08298F98 + str r0, [sp, #0x204] + add r0, sp, #0x1d8 + ldr r0, [r0] + ldr r1, [sp, #0x204] + adds r3, r1, r0 + cmp r0, #1 + bgt _082984C8 + b _082984BE +_08298488: + ldr r4, [sp, #0x1e8] + cmp r4, #0x66 + bne _082984B0 + add r0, sp, #0x1d4 + ldr r0, [r0] + cmp r0, #0 + ble _082984AC + adds r3, r0, #0 + cmp r6, #0 + bne _082984A6 + movs r0, #1 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _082984D8 +_082984A6: + adds r0, r3, #1 + adds r3, r0, r6 + b _082984D8 +_082984AC: + adds r3, r6, #2 + b _082984D8 +_082984B0: + add r0, sp, #0x1d4 + ldr r1, [r0] + add r0, sp, #0x1d8 + ldr r0, [r0] + cmp r1, r0 + blt _082984CC + adds r3, r1, #0 +_082984BE: + movs r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _082984D8 +_082984C8: + adds r3, #1 + b _082984D8 +_082984CC: + cmp r1, #0 + bgt _082984D6 + adds r0, #2 + subs r3, r0, r1 + b _082984D8 +_082984D6: + adds r3, r0, #1 +_082984D8: + add r0, sp, #0x1c8 + ldrb r0, [r0] + adds r7, r5, #0 + adds r7, #8 + cmp r0, #0 + bne _082984E6 + b _0829876E +_082984E6: + ldr r1, _082984F0 + add r1, sp + movs r0, #0x2d + strb r0, [r1] + b _0829876E + .align 2, 0 +_082984F0: .4byte 0x000001C9 +_082984F4: + movs r0, #0x10 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + beq _0829850E + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + ldr r1, [sp, #0x1f0] + str r1, [r0] + b _08297FFC +_0829850E: + movs r0, #0x40 + ldr r2, [sp, #0x1ec] + ands r2, r0 + cmp r2, #0 + beq _0829852A + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + add r1, sp, #0x1f0 + ldrh r1, [r1] + strh r1, [r0] + b _08297FFC +_0829852A: + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + ldr r4, [sp, #0x1f0] + str r4, [r0] + b _08297FFC +_0829853A: + movs r0, #0x10 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] +_08298542: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _08298562 + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298562 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829856C +_08298562: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829856C: + movs r2, #0 + b _0829865E +_08298570: + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r4, [r0] + movs r2, #2 + ldr r1, _0829858C + str r1, [sp, #0x210] + ldr r0, [sp, #0x1ec] + orrs r0, r2 + str r0, [sp, #0x1ec] + movs r1, #0x78 + str r1, [sp, #0x1e8] + b _0829865E + .align 2, 0 +_0829858C: .4byte gUnknown_890F184 +_08298590: + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + mov r8, r0 + cmp r0, #0 + bne _082985A4 + ldr r4, _082985C4 + mov r8, r4 +_082985A4: + cmp r6, #0 + blt _082985C8 + mov r0, r8 + movs r1, #0 + adds r2, r6, #0 + bl memchr + cmp r0, #0 + beq _082985C0 + mov r1, r8 + subs r3, r0, r1 + cmp r3, r6 + bgt _082985C0 + b _08298762 +_082985C0: + adds r3, r6, #0 + b _08298762 + .align 2, 0 +_082985C4: .4byte gUnknown_890F198 +_082985C8: + mov r0, r8 + bl strlen + adds r3, r0, #0 + b _08298762 +_082985D2: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + orrs r2, r0 + str r2, [sp, #0x1ec] +_082985DA: + movs r0, #0x10 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + beq _082985EA + movs r0, #4 + add sl, r0 + b _08298604 +_082985EA: + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298600 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829860A +_08298600: + movs r4, #4 + add sl, r4 +_08298604: + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829860A: + movs r2, #1 + b _0829865E +_0829860E: + ldr r0, _08298614 + str r0, [sp, #0x210] + b _0829861C + .align 2, 0 +_08298614: .4byte gUnknown_890F1A0 +_08298618: + ldr r1, _0829863C + str r1, [sp, #0x210] +_0829861C: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _08298640 + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298640 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829864A + .align 2, 0 +_0829863C: .4byte gUnknown_890F184 +_08298640: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829864A: + movs r2, #2 + movs r0, #1 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _0829865E + cmp r4, #0 + beq _0829865E + orrs r1, r2 + str r1, [sp, #0x1ec] +_0829865E: + ldr r1, _082986A8 + add r1, sp + movs r0, #0 + strb r0, [r1] +_08298666: + str r6, [sp, #0x208] + cmp r6, #0 + blt _08298676 + movs r0, #0x81 + rsbs r0, r0, #0 + ldr r1, [sp, #0x1ec] + ands r1, r0 + str r1, [sp, #0x1ec] +_08298676: + movs r0, #0xe2 + lsls r0, r0, #1 + add r0, sp + mov r8, r0 + cmp r4, #0 + bne _0829868C + adds r7, r5, #0 + adds r7, #8 + ldr r1, [sp, #0x208] + cmp r1, #0 + beq _08298744 +_0829868C: + cmp r2, #1 + beq _082986EA + cmp r2, #1 + blo _082986B0 + cmp r2, #2 + beq _08298724 + ldr r2, _082986AC + mov r8, r2 + mov r0, r8 + bl strlen + adds r3, r0, #0 + b _0829876A + .align 2, 0 +_082986A8: .4byte 0x000001C9 +_082986AC: .4byte gUnknown_890F1B4 +_082986B0: + adds r7, r5, #0 + adds r7, #8 + movs r2, #7 +_082986B6: + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + adds r0, r4, #0 + ands r0, r2 + adds r1, r0, #0 + adds r1, #0x30 + mov r0, r8 + strb r1, [r0] + lsrs r4, r4, #3 + cmp r4, #0 + bne _082986B6 + movs r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _08298744 + cmp r1, #0x30 + beq _08298744 + movs r4, #1 + rsbs r4, r4, #0 + add r8, r4 + movs r0, #0x30 + mov r1, r8 + strb r0, [r1] + b _08298744 +_082986EA: + adds r7, r5, #0 + adds r7, #8 + cmp r4, #9 + bls _08298714 +_082986F2: + movs r2, #1 + rsbs r2, r2, #0 + add r8, r2 + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0x30 + mov r1, r8 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r4, r0, #0 + cmp r4, #9 + bhi _082986F2 +_08298714: + movs r2, #1 + rsbs r2, r2, #0 + add r8, r2 + adds r0, r4, #0 + adds r0, #0x30 + mov r4, r8 + strb r0, [r4] + b _08298744 +_08298724: + adds r7, r5, #0 + adds r7, #8 + movs r1, #0xf +_0829872A: + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + adds r0, r4, #0 + ands r0, r1 + ldr r2, [sp, #0x210] + adds r0, r2, r0 + ldrb r0, [r0] + mov r2, r8 + strb r0, [r2] + lsrs r4, r4, #4 + cmp r4, #0 + bne _0829872A +_08298744: + add r4, sp, #0x14 + mov r1, r8 + subs r0, r4, r1 + movs r2, #0xd8 + lsls r2, r2, #1 + adds r3, r0, r2 + b _0829876E +_08298752: + ldr r4, [sp, #0x1e8] + cmp r4, #0 + bne _0829875A + b _08298E68 +_0829875A: + add r0, sp, #0x68 + mov r8, r0 + strb r4, [r0] +_08298760: + movs r3, #1 +_08298762: + ldr r1, _0829878C + add r1, sp + movs r0, #0 + strb r0, [r1] +_0829876A: + adds r7, r5, #0 + adds r7, #8 +_0829876E: + str r3, [sp, #0x20c] + ldr r2, [sp, #0x208] + cmp r3, r2 + bge _08298778 + str r2, [sp, #0x20c] +_08298778: + ldr r0, _0829878C + add r0, sp + ldrb r0, [r0] + cmp r0, #0 + beq _08298790 + ldr r4, [sp, #0x20c] + adds r4, #1 + str r4, [sp, #0x20c] + b _082987A0 + .align 2, 0 +_0829878C: .4byte 0x000001C9 +_08298790: + movs r0, #2 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _082987A0 + ldr r2, [sp, #0x20c] + adds r2, #2 + str r2, [sp, #0x20c] +_082987A0: + movs r0, #0x84 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + bne _08298820 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298820 + ldr r1, _0829884C + cmp r4, #0x10 + ble _082987F4 + mov r6, sb +_082987BC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, r7, #0 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _082987EA + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _082987E6 + b _08298E80 +_082987E6: + add r5, sp, #0x28 + ldr r1, _0829884C +_082987EA: + subs r4, #0x10 + adds r7, r5, #0 + adds r7, #8 + cmp r4, #0x10 + bgt _082987BC +_082987F4: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + adds r5, r7, #0 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298820 + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829881E + b _08298E80 +_0829881E: + add r5, sp, #0x28 +_08298820: + ldr r1, _08298850 + add r1, sp + ldrb r0, [r1] + cmp r0, #0 + beq _08298854 + str r1, [r5] + movs r0, #1 + str r0, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298894 + ldr r0, [sp, #0x1e0] + mov r1, sb + b _08298884 + .align 2, 0 +_0829884C: .4byte gUnknown_890F15C +_08298850: .4byte 0x000001C9 +_08298854: + movs r2, #2 + ldr r0, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _08298894 + add r1, sp, #0x1c4 + movs r0, #0x30 + strb r0, [r1] + add r0, sp, #0x1e8 + ldrb r0, [r0] + strb r0, [r1, #1] + str r1, [r5] + str r2, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298894 + ldr r0, [sp, #0x1e0] +_08298884: + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _08298892 + b _08298E80 +_08298892: + add r5, sp, #0x28 +_08298894: + movs r0, #0x84 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0x80 + bne _08298910 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298910 + ldr r1, _082989AC + cmp r4, #0x10 + ble _082988E4 + mov r6, sb +_082988B0: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _082988DE + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _082988DA + b _08298E80 +_082988DA: + add r5, sp, #0x28 + ldr r1, _082989AC +_082988DE: + subs r4, #0x10 + cmp r4, #0x10 + bgt _082988B0 +_082988E4: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298910 + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829890E + b _08298E80 +_0829890E: + add r5, sp, #0x28 +_08298910: + ldr r0, [sp, #0x208] + subs r4, r0, r3 + cmp r4, #0 + ble _0829897E + ldr r1, _082989AC + cmp r4, #0x10 + ble _08298954 + mov r6, sb +_08298920: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _0829894E + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829894A + b _08298E80 +_0829894A: + add r5, sp, #0x28 + ldr r1, _082989AC +_0829894E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298920 +_08298954: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _0829897E + ldr r0, [sp, #0x1e0] + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829897C + b _08298E80 +_0829897C: + add r5, sp, #0x28 +_0829897E: + movs r0, #0x80 + lsls r0, r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _082989B0 + mov r4, r8 + str r4, [r5] + str r3, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r3 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + bgt _082989A6 + b _08298DC6 +_082989A6: + ldr r0, [sp, #0x1e0] + b _08298DBC + .align 2, 0 +_082989AC: .4byte gUnknown_890F16C +_082989B0: + ldr r2, [sp, #0x1e8] + cmp r2, #0x65 + bgt _082989B8 + b _08298C9C +_082989B8: + ldr r3, _08298A84 + ldr r2, _08298A80 + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __eqdf2 + cmp r0, #0 + bne _08298A90 + ldr r0, _08298A88 + str r0, [r5] + movs r6, #1 + str r6, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _082989F4 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _082989F2 + b _08298E80 +_082989F2: + add r5, sp, #0x28 +_082989F4: + add r0, sp, #0x1d4 + ldr r1, [r0] + add r4, sp, #0x1d8 + ldr r0, [r4] + cmp r1, r0 + blt _08298A0A + ldr r0, [sp, #0x1ec] + ands r0, r6 + cmp r0, #0 + bne _08298A0A + b _08298DC6 +_08298A0A: + ldr r0, [sp, #0x1f8] + str r0, [r5] + str r6, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298A32 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298A30 + b _08298E80 +_08298A30: + add r5, sp, #0x28 +_08298A32: + ldr r0, [r4] + subs r4, r0, #1 + cmp r4, #0 + bgt _08298A3C + b _08298DC6 +_08298A3C: + ldr r1, _08298A8C + cmp r4, #0x10 + ble _08298A74 + mov r6, sb +_08298A44: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298A6E + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298A6A + b _08298E80 +_08298A6A: + add r5, sp, #0x28 + ldr r1, _08298A8C +_08298A6E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298A44 +_08298A74: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + b _08298DAA + .align 2, 0 +_08298A80: .4byte 0x00000000 +_08298A84: .4byte 0x00000000 +_08298A88: .4byte gUnknown_890F1D0 +_08298A8C: .4byte gUnknown_890F16C +_08298A90: + add r6, sp, #0x1d4 + ldr r2, [r6] + cmp r2, #0 + bgt _08298B78 + ldr r0, _08298B70 + str r0, [r5] + movs r4, #1 + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298AC2 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298AC0 + b _08298E80 +_08298AC0: + add r5, sp, #0x28 +_08298AC2: + ldr r2, [sp, #0x1f8] + str r2, [r5] + str r4, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298AEC + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298AEA + b _08298E80 +_08298AEA: + add r5, sp, #0x28 +_08298AEC: + ldr r0, [r6] + rsbs r4, r0, #0 + cmp r4, #0 + ble _08298B52 + ldr r1, _08298B74 + cmp r4, #0x10 + ble _08298B2C + mov r6, sb +_08298AFC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298B26 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298B22 + b _08298E80 +_08298B22: + add r5, sp, #0x28 + ldr r1, _08298B74 +_08298B26: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298AFC +_08298B2C: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298B52 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298B50 + b _08298E80 +_08298B50: + add r5, sp, #0x28 +_08298B52: + mov r2, r8 + str r2, [r5] + add r0, sp, #0x1d8 + ldr r1, [r0] + str r1, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, r0, r1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + b _08298DB4 + .align 2, 0 +_08298B70: .4byte gUnknown_890F1D0 +_08298B74: .4byte gUnknown_890F16C +_08298B78: + add r4, sp, #0x1d8 + ldr r1, [r4] + cmp r2, r1 + blt _08298C34 + mov r0, r8 + str r0, [r5] + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r1 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298BAA + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298BA8 + b _08298E80 +_08298BA8: + add r5, sp, #0x28 +_08298BAA: + ldr r1, [r6] + ldr r0, [r4] + subs r4, r1, r0 + cmp r4, #0 + ble _08298C12 + ldr r1, _08298C2C + cmp r4, #0x10 + ble _08298BEC + mov r6, sb +_08298BBC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298BE6 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298BE2 + b _08298E80 +_08298BE2: + add r5, sp, #0x28 + ldr r1, _08298C2C +_08298BE6: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298BBC +_08298BEC: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298C12 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298C10 + b _08298E80 +_08298C10: + add r5, sp, #0x28 +_08298C12: + movs r1, #1 + ldr r0, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + bne _08298C1E + b _08298DC6 +_08298C1E: + ldr r0, _08298C30 + str r0, [r5] + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, #1 + b _08298DAA + .align 2, 0 +_08298C2C: .4byte gUnknown_890F16C +_08298C30: .4byte gUnknown_890F1D4 +_08298C34: + mov r0, r8 + str r0, [r5] + str r2, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298C5C + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298C5A + b _08298E80 +_08298C5A: + add r5, sp, #0x28 +_08298C5C: + ldr r0, [r6] + add r8, r0 + ldr r0, _08298C98 + str r0, [r5] + movs r0, #1 + str r0, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, #1 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298C8C + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298C8A + b _08298E80 +_08298C8A: + add r5, sp, #0x28 +_08298C8C: + mov r0, r8 + str r0, [r5] + ldr r1, [r4] + ldr r0, [r6] + subs r1, r1, r0 + b _08298DA2 + .align 2, 0 +_08298C98: .4byte gUnknown_890F1D4 +_08298C9C: + add r4, sp, #0x1d8 + ldr r0, [r4] + cmp r0, #1 + bgt _08298CAE + movs r1, #1 + ldr r0, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298D74 +_08298CAE: + add r1, sp, #0x1c4 + mov r2, r8 + ldrb r0, [r2] + strb r0, [r1] + movs r0, #1 + add r8, r0 + movs r0, #0x2e + strb r0, [r1, #1] + str r1, [r5] + movs r0, #2 + str r0, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298CE6 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298CE4 + b _08298E80 +_08298CE4: + add r5, sp, #0x28 +_08298CE6: + ldr r3, _08298D10 + ldr r2, _08298D0C + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __nedf2 + cmp r0, #0 + beq _08298D14 + mov r2, r8 + str r2, [r5] + ldr r1, [r4] + subs r0, r1, #1 + str r0, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + subs r0, #1 + adds r0, r0, r1 + b _08298D80 + .align 2, 0 +_08298D0C: .4byte 0x00000000 +_08298D10: .4byte 0x00000000 +_08298D14: + ldr r0, [r4] + subs r4, r0, #1 + cmp r4, #0 + ble _08298D9C + ldr r1, _08298D70 + cmp r4, #0x10 + ble _08298D54 + mov r6, sb +_08298D24: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298D4E + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298D4A + b _08298E80 +_08298D4A: + add r5, sp, #0x28 + ldr r1, _08298D70 +_08298D4E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298D24 +_08298D54: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298D9C + ldr r0, [sp, #0x1e0] + b _08298D92 + .align 2, 0 +_08298D70: .4byte gUnknown_890F16C +_08298D74: + mov r2, r8 + str r2, [r5] + str r1, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 +_08298D80: + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298D9C + ldr r0, [sp, #0x1e0] + mov r1, sb +_08298D92: + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 +_08298D9C: + add r0, sp, #0x14 + str r0, [r5] + ldr r1, [sp, #0x204] +_08298DA2: + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r1 +_08298DAA: + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] +_08298DB4: + cmp r0, #7 + ble _08298DC6 + ldr r0, [sp, #0x1e0] + mov r1, sb +_08298DBC: + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 +_08298DC6: + movs r0, #4 + ldr r4, [sp, #0x1ec] + ands r4, r0 + cmp r4, #0 + beq _08298E32 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298E32 + ldr r1, _08298E64 + cmp r4, #0x10 + ble _08298E10 + mov r6, sb +_08298DE2: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298E0A + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 + ldr r1, _08298E64 +_08298E0A: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298DE2 +_08298E10: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298E32 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E32: + ldr r0, [sp, #0x20c] + ldr r4, [sp, #0x1f4] + cmp r0, r4 + bge _08298E3C + adds r0, r4, #0 +_08298E3C: + ldr r1, [sp, #0x1f0] + adds r1, r1, r0 + str r1, [sp, #0x1f0] + mov r2, sb + ldr r0, [r2, #8] + cmp r0, #0 + beq _08298E56 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E56: + movs r0, #0 + mov r4, sb + str r0, [r4, #4] + add r5, sp, #0x28 + bl _08297FFC + .align 2, 0 +_08298E64: .4byte gUnknown_890F15C +_08298E68: + mov r1, sb + ldr r0, [r1, #8] + cmp r0, #0 + beq _08298E7A + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E7A: + movs r0, #0 + mov r1, sb + str r0, [r1, #4] +_08298E80: + movs r0, #0x40 + ldr r2, [sp, #0x1e0] + ldrh r2, [r2, #0xc] + ands r0, r2 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, #0 + bne _08298E92 + ldr r1, [sp, #0x1f0] +_08298E92: + adds r0, r1, #0 +_08298E94: + movs r3, #0x88 + lsls r3, r3, #2 + add sp, r3 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end _vfprintf_r + + thumb_func_start sub_08298EA4 +sub_08298EA4: @ 0x08298EA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + str r0, [sp, #0x18] + adds r5, r2, #0 + adds r4, r1, #0 + mov r8, r3 + ldr r6, [sp, #0x3c] + ldr r0, [sp, #0x44] + mov sl, r0 + ldr r1, [sp, #0x48] + mov sb, r1 + cmp r1, #0x66 + bne _08298ECA + movs r7, #3 + b _08298EDA +_08298ECA: + mov r0, sb + cmp r0, #0x65 + beq _08298ED4 + cmp r0, #0x45 + bne _08298ED8 +_08298ED4: + movs r1, #1 + add r8, r1 +_08298ED8: + movs r7, #2 +_08298EDA: + lsls r0, r4, #0x1f + lsrs r0, r0, #0x1f + cmp r0, #0 + beq _08298EF0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __negdf2 + adds r5, r1, #0 + adds r4, r0, #0 + movs r0, #0x2d +_08298EF0: + ldr r1, [sp, #0x40] + strb r0, [r1] + mov r0, r8 + str r0, [sp] + mov r1, sl + str r1, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + adds r2, r5, #0 + adds r1, r4, #0 + adds r3, r7, #0 + bl _dtoa_r + adds r7, r0, #0 + mov r1, sb + cmp r1, #0x67 + beq _08298F1C + cmp r1, #0x47 + bne _08298F24 +_08298F1C: + movs r0, #1 + ands r6, r0 + cmp r6, #0 + beq _08298F78 +_08298F24: + mov r0, r8 + adds r6, r7, r0 + mov r1, sb + cmp r1, #0x66 + bne _08298F54 + ldrb r0, [r7] + cmp r0, #0x30 + bne _08298F4E + ldr r3, _08298F94 + ldr r2, _08298F90 + adds r1, r5, #0 + adds r0, r4, #0 + bl __nedf2 + cmp r0, #0 + beq _08298F4E + mov r1, r8 + rsbs r0, r1, #0 + adds r0, #1 + mov r1, sl + str r0, [r1] +_08298F4E: + mov r1, sl + ldr r0, [r1] + adds r6, r6, r0 +_08298F54: + ldr r3, _08298F94 + ldr r2, _08298F90 + adds r1, r5, #0 + adds r0, r4, #0 + bl __eqdf2 + cmp r0, #0 + bne _08298F66 + str r6, [sp, #0x14] +_08298F66: + ldr r0, [sp, #0x14] + cmp r0, r6 + bhs _08298F78 + movs r1, #0x30 +_08298F6E: + strb r1, [r0] + adds r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + blo _08298F6E +_08298F78: + ldr r0, [sp, #0x14] + subs r0, r0, r7 + ldr r1, [sp, #0x4c] + str r0, [r1] + adds r0, r7, #0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08298F90: .4byte 0x00000000 +_08298F94: .4byte 0x00000000 + thumb_func_end sub_08298EA4 + + thumb_func_start sub_08298F98 +sub_08298F98: @ 0x08298F98 + push {r4, r5, r6, r7, lr} + sub sp, #0x134 + adds r7, r0, #0 + adds r6, r1, #0 + strb r2, [r7] + adds r5, r7, #1 + cmp r6, #0 + bge _08298FAE + rsbs r6, r6, #0 + movs r0, #0x2d + b _08298FB0 +_08298FAE: + movs r0, #0x2b +_08298FB0: + strb r0, [r7, #1] + adds r5, #1 + add r4, sp, #0x134 + cmp r6, #9 + ble _08298FF2 +_08298FBA: + subs r4, #1 + adds r0, r6, #0 + movs r1, #0xa + bl __modsi3 + adds r0, #0x30 + strb r0, [r4] + adds r0, r6, #0 + movs r1, #0xa + bl __divsi3 + adds r6, r0, #0 + cmp r6, #9 + bgt _08298FBA + subs r4, #1 + adds r0, #0x30 + strb r0, [r4] + add r0, sp, #0x134 + cmp r4, r0 + bhs _08299000 + adds r1, r0, #0 +_08298FE4: + ldrb r0, [r4] + strb r0, [r5] + adds r4, #1 + adds r5, #1 + cmp r4, r1 + blo _08298FE4 + b _08299000 +_08298FF2: + movs r0, #0x30 + strb r0, [r5] + adds r5, #1 + adds r0, r6, #0 + adds r0, #0x30 + strb r0, [r5] + adds r5, #1 +_08299000: + subs r0, r5, r7 + add sp, #0x134 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end sub_08298F98 + + thumb_func_start __swsetup +__swsetup: @ 0x08299008 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08299018 + ldr r0, _08299044 + ldr r0, [r0] + str r0, [r4, #0x54] +_08299018: + ldr r1, [r4, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08299026 + adds r0, r1, #0 + bl __sinit +_08299026: + ldrh r1, [r4, #0xc] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + cmp r5, #0 + bne _08299080 + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08299048 + movs r0, #1 + rsbs r0, r0, #0 + b _082990B2 + .align 2, 0 +_08299044: .4byte gUnknown_203CF1C +_08299048: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08299078 + ldr r1, [r4, #0x30] + cmp r1, #0 + beq _08299066 + adds r0, r4, #0 + adds r0, #0x40 + cmp r1, r0 + beq _08299064 + ldr r0, [r4, #0x54] + bl _free_r +_08299064: + str r5, [r4, #0x30] +_08299066: + movs r0, #0x25 + rsbs r0, r0, #0 + ldrh r1, [r4, #0xc] + ands r0, r1 + movs r1, #0 + strh r0, [r4, #0xc] + str r1, [r4, #4] + ldr r0, [r4, #0x10] + str r0, [r4] +_08299078: + movs r0, #8 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] +_08299080: + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0829908C + adds r0, r4, #0 + bl __smakebuf +_0829908C: + ldrh r1, [r4, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _082990A2 + movs r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + rsbs r0, r0, #0 + str r0, [r4, #0x18] + b _082990B0 +_082990A2: + movs r0, #2 + ands r0, r1 + movs r1, #0 + cmp r0, #0 + bne _082990AE + ldr r1, [r4, #0x14] +_082990AE: + str r1, [r4, #8] +_082990B0: + movs r0, #0 +_082990B2: + pop {r4, r5, pc} + thumb_func_end __swsetup + + thumb_func_start sub_082990B4 +sub_082990B4: @ 0x082990B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + ldr r7, [r1, #0x10] + ldr r0, [r0, #0x10] + cmp r0, r7 + bge _082990D0 + movs r0, #0 + b _08299204 +_082990D0: + ldr r0, [sp, #4] + adds r0, #0x14 + mov r8, r0 + subs r7, #1 + lsls r0, r7, #2 + mov r1, r8 + adds r1, r1, r0 + str r1, [sp, #0xc] + ldr r4, [sp] + adds r4, #0x14 + adds r5, r4, r0 + ldr r1, [r1] + adds r1, #1 + ldr r2, [r5] + mov sl, r2 + mov r0, sl + bl __udivsi3 + str r0, [sp, #8] + mov r3, r8 + str r3, [sp, #0x14] + str r4, [sp, #0x10] + cmp r0, #0 + beq _0829917A + movs r6, #0 + mov sb, r6 + ldr r0, _08299164 + mov ip, r0 +_08299108: + mov r2, r8 + adds r2, #4 + mov r8, r2 + subs r2, #4 + ldm r2!, {r1} + adds r0, r1, #0 + mov r3, ip + ands r0, r3 + ldr r2, [sp, #8] + muls r0, r2, r0 + mov r3, sb + adds r2, r0, r3 + lsrs r0, r1, #0x10 + ldr r3, [sp, #8] + adds r1, r0, #0 + muls r1, r3, r1 + lsrs r0, r2, #0x10 + adds r3, r1, r0 + lsrs r0, r3, #0x10 + mov sb, r0 + ldr r0, [r4] + mov r1, ip + ands r0, r1 + ands r2, r1 + subs r0, r0, r2 + adds r2, r0, r6 + asrs r6, r2, #0x10 + ldr r0, [r4] + lsrs r1, r0, #0x10 + mov r0, ip + ands r3, r0 + subs r1, r1, r3 + adds r0, r1, r6 + asrs r6, r0, #0x10 + strh r0, [r4] + strh r2, [r4, #2] + adds r4, #4 + ldr r1, [sp, #0xc] + cmp r8, r1 + bls _08299108 + mov r2, sl + cmp r2, #0 + bne _0829917A + ldr r4, [sp, #0x10] + b _0829916A + .align 2, 0 +_08299164: .4byte 0x0000FFFF +_08299168: + subs r7, #1 +_0829916A: + subs r5, #4 + cmp r5, r4 + bls _08299176 + ldr r0, [r5] + cmp r0, #0 + beq _08299168 +_08299176: + ldr r3, [sp] + str r7, [r3, #0x10] +_0829917A: + ldr r0, [sp] + ldr r1, [sp, #4] + bl __mcmp + cmp r0, #0 + blt _08299202 + ldr r0, [sp, #8] + adds r0, #1 + str r0, [sp, #8] + movs r6, #0 + mov sb, r6 + ldr r4, [sp, #0x10] + ldr r1, [sp, #0x14] + mov r8, r1 + lsls r2, r7, #2 + mov sl, r2 + ldr r5, _082991EC +_0829919C: + mov r3, r8 + adds r3, #4 + mov r8, r3 + subs r3, #4 + ldm r3!, {r1} + adds r0, r1, #0 + ands r0, r5 + mov r3, sb + adds r2, r0, r3 + lsrs r1, r1, #0x10 + lsrs r0, r2, #0x10 + adds r3, r1, r0 + lsrs r0, r3, #0x10 + mov sb, r0 + ldr r1, [r4] + adds r0, r1, #0 + ands r0, r5 + ands r2, r5 + subs r0, r0, r2 + adds r2, r0, r6 + asrs r6, r2, #0x10 + lsrs r1, r1, #0x10 + ands r3, r5 + subs r1, r1, r3 + adds r0, r1, r6 + asrs r6, r0, #0x10 + strh r0, [r4] + strh r2, [r4, #2] + adds r4, #4 + ldr r1, [sp, #0xc] + cmp r8, r1 + bls _0829919C + ldr r4, [sp, #0x10] + mov r2, sl + adds r5, r4, r2 + ldr r0, [r5] + cmp r0, #0 + bne _08299202 + b _082991F2 + .align 2, 0 +_082991EC: .4byte 0x0000FFFF +_082991F0: + subs r7, #1 +_082991F2: + subs r5, #4 + cmp r5, r4 + bls _082991FE + ldr r0, [r5] + cmp r0, #0 + beq _082991F0 +_082991FE: + ldr r3, [sp] + str r7, [r3, #0x10] +_08299202: + ldr r0, [sp, #8] +_08299204: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end sub_082990B4 + + thumb_func_start _dtoa_r +_dtoa_r: @ 0x08299210 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x84 + mov sl, r0 + str r3, [sp, #0xc] + ldr r4, [sp, #0xac] + str r1, [sp, #0x40] + str r2, [sp, #0x44] + ldr r2, [r0, #0x40] + cmp r2, #0 + beq _08299248 + ldr r0, [r0, #0x44] + str r0, [r2, #4] + mov r0, sl + ldr r1, [r0, #0x44] + movs r0, #1 + lsls r0, r1 + str r0, [r2, #8] + mov r0, sl + adds r1, r2, #0 + bl _Bfree + movs r0, #0 + mov r1, sl + str r0, [r1, #0x40] +_08299248: + movs r0, #0x80 + lsls r0, r0, #0x18 + ldr r1, [sp, #0x40] + ands r0, r1 + cmp r0, #0 + beq _08299264 + movs r0, #1 + str r0, [r4] + ldr r0, _08299260 + ands r1, r0 + str r1, [sp, #0x40] + b _08299266 + .align 2, 0 +_08299260: .4byte 0x7FFFFFFF +_08299264: + str r0, [r4] +_08299266: + ldr r1, _082992A8 + ldr r2, [sp, #0x40] + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + bne _082992BC + ldr r0, _082992AC + ldr r3, [sp, #0xa8] + str r0, [r3] + ldr r0, _082992B0 + mov sb, r0 + ldr r1, [sp, #0x44] + cmp r1, #0 + bne _0829928E + ldr r0, _082992B4 + ands r2, r0 + cmp r2, #0 + bne _0829928E + ldr r2, _082992B8 + mov sb, r2 +_0829928E: + ldr r3, [sp, #0xb0] + cmp r3, #0 + beq _082992E0 + mov r1, sb + ldrb r0, [r1, #3] + adds r1, #3 + cmp r0, #0 + beq _082992A0 + adds r1, #5 +_082992A0: + ldr r2, [sp, #0xb0] + str r1, [r2] + b _082992E0 + .align 2, 0 +_082992A8: .4byte 0x7FF00000 +_082992AC: .4byte 0x0000270F +_082992B0: .4byte gUnknown_890F1E4 +_082992B4: .4byte 0x000FFFFF +_082992B8: .4byte gUnknown_890F1D8 +_082992BC: + ldr r3, _082992EC + ldr r2, _082992E8 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __eqdf2 + cmp r0, #0 + bne _082992F4 + movs r0, #1 + ldr r3, [sp, #0xa8] + str r0, [r3] + ldr r0, _082992F0 + mov sb, r0 + ldr r1, [sp, #0xb0] + cmp r1, #0 + beq _082992E0 + adds r0, #1 + str r0, [r1] +_082992E0: + mov r0, sb + bl _08299EFA + .align 2, 0 +_082992E8: .4byte 0x00000000 +_082992EC: .4byte 0x00000000 +_082992F0: .4byte gUnknown_890F1E8 +_082992F4: + add r0, sp, #8 + str r0, [sp] + mov r0, sl + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + add r3, sp, #4 + bl _d2b + str r0, [sp, #0x5c] + ldr r2, [sp, #0x40] + lsls r0, r2, #1 + lsrs r0, r0, #0x15 + mov r8, r0 + cmp r0, #0 + beq _08299344 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r0, _08299338 + ldr r1, [sp, #0x48] + ands r1, r0 + str r1, [sp, #0x48] + ldr r0, _0829933C + adds r2, r1, #0 + orrs r2, r0 + str r2, [sp, #0x48] + ldr r3, _08299340 + add r8, r3 + movs r0, #0 + str r0, [sp, #0x58] + ldr r6, [sp, #8] + b _082993A4 + .align 2, 0 +_08299338: .4byte 0x000FFFFF +_0829933C: .4byte 0x3FF00000 +_08299340: .4byte 0xFFFFFC01 +_08299344: + ldr r1, [sp, #8] + ldr r0, [sp, #4] + adds r2, r1, r0 + ldr r3, _0829936C + adds r3, r3, r2 + mov r8, r3 + adds r6, r1, #0 + cmp r3, #0x20 + ble _08299374 + movs r0, #0x40 + subs r0, r0, r3 + ldr r4, [sp, #0x40] + lsls r4, r0 + ldr r1, _08299370 + adds r0, r2, r1 + ldr r2, [sp, #0x44] + lsrs r2, r0 + adds r0, r2, #0 + orrs r4, r0 + b _0829937E + .align 2, 0 +_0829936C: .4byte 0x00000432 +_08299370: .4byte 0x00000412 +_08299374: + movs r0, #0x20 + mov r3, r8 + subs r0, r0, r3 + ldr r4, [sp, #0x44] + lsls r4, r0 +_0829937E: + adds r0, r4, #0 + bl __floatsidf + cmp r4, #0 + bge _08299390 + ldr r3, _08299454 + ldr r2, _08299450 + bl __adddf3 +_08299390: + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r1, _08299458 + ldr r0, [sp, #0x48] + adds r1, r0, r1 + str r1, [sp, #0x48] + ldr r2, _0829945C + add r8, r2 + movs r3, #1 + str r3, [sp, #0x58] +_082993A4: + ldr r2, _08299460 + ldr r3, _08299464 + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x4c] + bl __subdf3 + ldr r2, _08299468 + ldr r3, _0829946C + bl __muldf3 + ldr r2, _08299470 + ldr r3, _08299474 + bl __adddf3 + adds r5, r1, #0 + adds r4, r0, #0 + mov r0, r8 + bl __floatsidf + ldr r2, _08299478 + ldr r3, _0829947C + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __adddf3 + str r0, [sp, #0x6c] + str r1, [sp, #0x70] + bl __fixdfsi + str r0, [sp, #0x24] + ldr r2, _08299480 + ldr r3, _08299484 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __ltdf2 + cmp r0, #0 + bge _08299414 + ldr r0, [sp, #0x24] + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __nedf2 + cmp r0, #0 + beq _08299414 + ldr r0, [sp, #0x24] + subs r0, #1 + str r0, [sp, #0x24] +_08299414: + movs r1, #1 + str r1, [sp, #0x2c] + ldr r2, [sp, #0x24] + cmp r2, #0x16 + bhi _0829943E + ldr r1, _08299488 + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r2, [r0] + ldr r3, [r0, #4] + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ltdf2 + cmp r0, #0 + bge _0829943A + ldr r3, [sp, #0x24] + subs r3, #1 + str r3, [sp, #0x24] +_0829943A: + movs r0, #0 + str r0, [sp, #0x2c] +_0829943E: + mov r1, r8 + subs r0, r6, r1 + subs r4, r0, #1 + cmp r4, #0 + blt _0829948C + movs r2, #0 + str r2, [sp, #0x10] + str r4, [sp, #0x34] + b _08299494 + .align 2, 0 +_08299450: .4byte 0x41F00000 +_08299454: .4byte 0x00000000 +_08299458: .4byte 0xFE100000 +_0829945C: .4byte 0xFFFFFBCD +_08299460: .4byte 0x3FF80000 +_08299464: .4byte 0x00000000 +_08299468: .4byte 0x3FD287A7 +_0829946C: .4byte 0x636F4361 +_08299470: .4byte 0x3FC68A28 +_08299474: .4byte 0x8B60C8B3 +_08299478: .4byte 0x3FD34413 +_0829947C: .4byte 0x509F79FB +_08299480: .4byte 0x00000000 +_08299484: .4byte 0x00000000 +_08299488: .4byte gUnknown_890F234 +_0829948C: + rsbs r4, r4, #0 + str r4, [sp, #0x10] + movs r3, #0 + str r3, [sp, #0x34] +_08299494: + ldr r0, [sp, #0x24] + cmp r0, #0 + blt _082994A8 + movs r1, #0 + str r1, [sp, #0x14] + str r0, [sp, #0x38] + ldr r2, [sp, #0x34] + adds r2, r2, r0 + str r2, [sp, #0x34] + b _082994B8 +_082994A8: + ldr r3, [sp, #0x10] + ldr r0, [sp, #0x24] + subs r3, r3, r0 + str r3, [sp, #0x10] + rsbs r1, r0, #0 + str r1, [sp, #0x14] + movs r2, #0 + str r2, [sp, #0x38] +_082994B8: + ldr r3, [sp, #0xc] + cmp r3, #9 + bls _082994C2 + movs r0, #0 + str r0, [sp, #0xc] +_082994C2: + movs r5, #1 + ldr r1, [sp, #0xc] + cmp r1, #5 + ble _082994D0 + subs r1, #4 + str r1, [sp, #0xc] + movs r5, #0 +_082994D0: + movs r2, #1 + str r2, [sp, #0x30] + ldr r3, [sp, #0xc] + cmp r3, #5 + bhi _0829954A + lsls r0, r3, #2 + ldr r1, _082994E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_082994E4: .4byte _082994E8 +_082994E8: @ jump table + .4byte _08299500 @ case 0 + .4byte _08299500 @ case 1 + .4byte _08299512 @ case 2 + .4byte _0829952E @ case 3 + .4byte _08299516 @ case 4 + .4byte _08299532 @ case 5 +_08299500: + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x20] + movs r1, #0x12 + mov r8, r1 + movs r2, #0 + str r2, [sp, #0xa4] + b _0829954A +_08299512: + movs r3, #0 + str r3, [sp, #0x30] +_08299516: + ldr r0, [sp, #0xa4] + cmp r0, #0 + bgt _08299520 + movs r1, #1 + str r1, [sp, #0xa4] +_08299520: + ldr r2, [sp, #0xa4] + mov r8, r2 + mov r3, r8 + str r3, [sp, #0x20] + mov r0, r8 + str r0, [sp, #0x18] + b _0829954A +_0829952E: + movs r1, #0 + str r1, [sp, #0x30] +_08299532: + ldr r2, [sp, #0xa4] + ldr r3, [sp, #0x24] + adds r0, r2, r3 + adds r1, r0, #1 + mov r8, r1 + mov r2, r8 + str r2, [sp, #0x18] + str r0, [sp, #0x20] + cmp r1, #0 + bgt _0829954A + movs r3, #1 + mov r8, r3 +_0829954A: + movs r4, #4 + movs r0, #0 + mov r1, sl + str r0, [r1, #0x44] + mov r2, r8 + cmp r2, #0x17 + bls _0829956A + movs r1, #0 +_0829955A: + adds r1, #1 + lsls r4, r4, #1 + adds r0, r4, #0 + adds r0, #0x14 + cmp r0, r8 + bls _0829955A + mov r3, sl + str r1, [r3, #0x44] +_0829956A: + mov r0, sl + ldr r1, [r0, #0x44] + bl _Balloc + mov r1, sl + str r0, [r1, #0x40] + str r0, [sp, #0x74] + mov sb, r0 + ldr r2, [sp, #0x18] + cmp r2, #0xe + bls _08299582 + b _082998F4 +_08299582: + cmp r5, #0 + bne _08299588 + b _082998F4 +_08299588: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + str r0, [sp, #0x78] + str r1, [sp, #0x7c] + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r1, [sp, #0x24] + str r1, [sp, #0x28] + str r2, [sp, #0x1c] + movs r7, #2 + cmp r1, #0 + ble _08299618 + ldr r0, _08299610 + movs r2, #0xf + ands r1, r2 + lsls r1, r1, #3 + adds r3, r1, r0 + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [sp, #0x6c] + str r1, [sp, #0x70] + ldr r1, [sp, #0x24] + asrs r4, r1, #4 + movs r0, #0x10 + ands r0, r4 + cmp r0, #0 + beq _082995D4 + ands r4, r2 + ldr r0, _08299614 + ldr r2, [r0, #0x20] + ldr r3, [r0, #0x24] + ldr r0, [sp, #0x78] + ldr r1, [sp, #0x7c] + bl __divdf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + movs r7, #3 +_082995D4: + cmp r4, #0 + beq _082995FC + ldr r5, _08299614 +_082995DA: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _082995F4 + adds r7, #1 + ldr r2, [r5] + ldr r3, [r5, #4] + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __muldf3 + str r0, [sp, #0x6c] + str r1, [sp, #0x70] +_082995F4: + asrs r4, r4, #1 + adds r5, #8 + cmp r4, #0 + bne _082995DA +_082995FC: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __divdf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + b _08299664 + .align 2, 0 +_08299610: .4byte gUnknown_890F234 +_08299614: .4byte gUnknown_890F2FC +_08299618: + ldr r2, [sp, #0x24] + rsbs r6, r2, #0 + cmp r6, #0 + beq _08299664 + ldr r1, _0829970C + movs r0, #0xf + ands r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [sp, #0x78] + ldr r3, [sp, #0x7c] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + asrs r4, r6, #4 + cmp r4, #0 + beq _08299664 + ldr r5, _08299710 +_08299642: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0829965C + adds r7, #1 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_0829965C: + asrs r4, r4, #1 + adds r5, #8 + cmp r4, #0 + bne _08299642 +_08299664: + ldr r3, [sp, #0x2c] + cmp r3, #0 + beq _082996A2 + ldr r2, _08299714 + ldr r3, _08299718 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ltdf2 + cmp r0, #0 + bge _082996A2 + ldr r0, [sp, #0x18] + cmp r0, #0 + ble _082996A2 + ldr r1, [sp, #0x20] + cmp r1, #0 + bgt _08299688 + b _082998E0 +_08299688: + str r1, [sp, #0x18] + ldr r2, [sp, #0x24] + subs r2, #1 + str r2, [sp, #0x24] + ldr r0, _0829971C + ldr r1, _08299720 + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + adds r7, #1 +_082996A2: + adds r0, r7, #0 + bl __floatsidf + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + ldr r2, _08299724 + ldr r3, _08299728 + bl __adddf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + ldr r0, _0829972C + ldr r3, [sp, #0x50] + adds r0, r3, r0 + str r0, [sp, #0x50] + ldr r1, [sp, #0x18] + cmp r1, #0 + bne _08299738 + movs r2, #0 + str r2, [sp, #0x64] + movs r3, #0 + str r3, [sp, #0x68] + ldr r2, _08299730 + ldr r3, _08299734 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __gtdf2 + cmp r0, #0 + ble _082996F0 + b _08299C6A +_082996F0: + ldr r0, [sp, #0x50] + ldr r1, [sp, #0x54] + bl __negdf2 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __ltdf2 + cmp r0, #0 + bge _0829970A + b _08299C62 +_0829970A: + b _082998E0 + .align 2, 0 +_0829970C: .4byte gUnknown_890F234 +_08299710: .4byte gUnknown_890F2FC +_08299714: .4byte 0x3FF00000 +_08299718: .4byte 0x00000000 +_0829971C: .4byte 0x40240000 +_08299720: .4byte 0x00000000 +_08299724: .4byte 0x401C0000 +_08299728: .4byte 0x00000000 +_0829972C: .4byte 0xFCC00000 +_08299730: .4byte 0x40140000 +_08299734: .4byte 0x00000000 +_08299738: + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _08299808 + ldr r1, _08299768 + ldr r0, [sp, #0x18] + subs r0, #1 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, [r0] + ldr r3, [r0, #4] + ldr r0, _0829976C + ldr r1, _08299770 + bl __divdf3 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __subdf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + movs r1, #0 + mov r8, r1 + b _08299794 + .align 2, 0 +_08299768: .4byte gUnknown_890F234 +_0829976C: .4byte 0x3FE00000 +_08299770: .4byte 0x00000000 +_08299774: + ldr r1, _082997FC + ldr r0, _082997F8 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __muldf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + ldr r1, _082997FC + ldr r0, _082997F8 + adds r3, r5, #0 + adds r2, r4, #0 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_08299794: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r2, sb + strb r0, [r2] + movs r3, #1 + add sb, r3 + adds r1, r5, #0 + adds r0, r4, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __ltdf2 + cmp r0, #0 + bge _082997D0 + b _08299EDA +_082997D0: + ldr r0, _08299800 + ldr r1, _08299804 + adds r3, r5, #0 + adds r2, r4, #0 + bl __subdf3 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __ltdf2 + cmp r0, #0 + bge _082997EA + b _082999F4 +_082997EA: + movs r0, #1 + add r8, r0 + ldr r1, [sp, #0x18] + cmp r8, r1 + blt _08299774 + b _082998E0 + .align 2, 0 +_082997F8: .4byte 0x40240000 +_082997FC: .4byte 0x00000000 +_08299800: .4byte 0x3FF00000 +_08299804: .4byte 0x00000000 +_08299808: + ldr r1, _08299828 + ldr r0, [sp, #0x18] + subs r0, #1 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __muldf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + movs r2, #1 + mov r8, r2 + b _08299840 + .align 2, 0 +_08299828: .4byte gUnknown_890F234 +_0829982C: + movs r3, #1 + add r8, r3 + ldr r1, _082998D4 + ldr r0, _082998D0 + adds r3, r5, #0 + adds r2, r4, #0 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_08299840: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x18] + cmp r8, r3 + bne _0829982C + ldr r6, _082998D8 + ldr r7, _082998DC + adds r1, r7, #0 + adds r0, r6, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __adddf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __gtdf2 + cmp r0, #0 + ble _08299892 + b _082999F4 +_08299892: + adds r1, r7, #0 + adds r0, r6, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __subdf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __ltdf2 + cmp r0, #0 + bge _082998E0 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x30 + beq _082998BE + b _08299A1A +_082998BE: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x30 + beq _082998BE + b _08299A1A + .align 2, 0 +_082998D0: .4byte 0x40240000 +_082998D4: .4byte 0x00000000 +_082998D8: .4byte 0x3FE00000 +_082998DC: .4byte 0x00000000 +_082998E0: + ldr r1, [sp, #0x74] + mov sb, r1 + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x4c] + str r2, [sp, #0x40] + str r3, [sp, #0x44] + ldr r3, [sp, #0x28] + str r3, [sp, #0x24] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x18] +_082998F4: + ldr r0, [sp, #4] + cmp r0, #0 + bge _082998FC + b _08299A30 +_082998FC: + ldr r1, [sp, #0x24] + cmp r1, #0xe + ble _08299904 + b _08299A30 +_08299904: + ldr r1, _08299950 + ldr r2, [sp, #0x24] + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r1, [r0] + ldr r2, [r0, #4] + str r1, [sp, #0x6c] + str r2, [sp, #0x70] + ldr r2, [sp, #0xa4] + cmp r2, #0 + bge _0829995C + ldr r3, [sp, #0x18] + cmp r3, #0 + bgt _0829995C + movs r0, #0 + str r0, [sp, #0x64] + movs r1, #0 + str r1, [sp, #0x68] + cmp r3, #0 + bge _0829992E + b _08299C62 +_0829992E: + ldr r2, _08299954 + ldr r3, _08299958 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ledf2 + cmp r0, #0 + bgt _0829994C + b _08299C62 +_0829994C: + b _08299C6A + .align 2, 0 +_08299950: .4byte gUnknown_890F234 +_08299954: .4byte 0x40140000 +_08299958: .4byte 0x00000000 +_0829995C: + movs r2, #1 + mov r8, r2 + b _08299980 +_08299962: + ldr r1, _08299A24 + ldr r0, _08299A20 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + ldr r2, _08299A28 + ldr r3, _08299A2C + bl __eqdf2 + cmp r0, #0 + bne _0829997C + b _08299EDA +_0829997C: + movs r3, #1 + add r8, r3 +_08299980: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __divdf3 + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r1, sb + strb r0, [r1] + movs r0, #1 + add sb, r0 + ldr r1, [sp, #0x18] + cmp r8, r1 + bne _08299962 + adds r1, r3, #0 + adds r0, r2, #0 + bl __adddf3 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __gtdf2 + cmp r0, #0 + bgt _082999F4 + adds r1, r5, #0 + adds r0, r4, #0 + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __eqdf2 + cmp r0, #0 + beq _082999EA + b _08299EDA +_082999EA: + movs r0, #1 + ands r0, r6 + cmp r0, #0 + bne _082999F4 + b _08299EDA +_082999F4: + movs r0, #0x30 +_082999F6: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x39 + bne _08299A12 + ldr r1, [sp, #0x74] + cmp sb, r1 + bne _082999F6 + ldr r2, [sp, #0x24] + adds r2, #1 + str r2, [sp, #0x24] + strb r0, [r1] +_08299A12: + mov r3, sb + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_08299A1A: + movs r0, #1 + add sb, r0 + b _08299EDA + .align 2, 0 +_08299A20: .4byte 0x40240000 +_08299A24: .4byte 0x00000000 +_08299A28: .4byte 0x00000000 +_08299A2C: .4byte 0x00000000 +_08299A30: + ldr r5, [sp, #0x10] + ldr r6, [sp, #0x14] + movs r1, #0 + str r1, [sp, #0x60] + movs r2, #0 + str r2, [sp, #0x64] + ldr r3, [sp, #0x30] + cmp r3, #0 + beq _08299AA6 + ldr r1, [sp, #0xc] + cmp r1, #1 + bgt _08299A64 + ldr r2, [sp, #0x58] + cmp r2, #0 + beq _08299A5C + ldr r3, _08299A58 + adds r3, r3, r0 + mov r8, r3 + b _08299A90 + .align 2, 0 +_08299A58: .4byte 0x00000433 +_08299A5C: + ldr r1, [sp, #8] + movs r0, #0x36 + subs r0, r0, r1 + b _08299A8E +_08299A64: + ldr r4, [sp, #0x18] + subs r4, #1 + ldr r0, [sp, #0x14] + cmp r0, r4 + blt _08299A72 + subs r6, r0, r4 + b _08299A82 +_08299A72: + ldr r1, [sp, #0x14] + subs r4, r4, r1 + ldr r2, [sp, #0x38] + adds r2, r2, r4 + str r2, [sp, #0x38] + adds r1, r1, r4 + str r1, [sp, #0x14] + movs r6, #0 +_08299A82: + ldr r3, [sp, #0x18] + mov r8, r3 + cmp r3, #0 + bge _08299A90 + subs r5, r5, r3 + movs r0, #0 +_08299A8E: + mov r8, r0 +_08299A90: + ldr r1, [sp, #0x10] + add r1, r8 + str r1, [sp, #0x10] + ldr r2, [sp, #0x34] + add r2, r8 + str r2, [sp, #0x34] + mov r0, sl + movs r1, #1 + bl _i2b + str r0, [sp, #0x64] +_08299AA6: + cmp r5, #0 + ble _08299AC8 + ldr r3, [sp, #0x34] + cmp r3, #0 + ble _08299AC8 + mov r8, r3 + cmp r8, r5 + ble _08299AB8 + mov r8, r5 +_08299AB8: + ldr r0, [sp, #0x10] + mov r1, r8 + subs r0, r0, r1 + str r0, [sp, #0x10] + subs r5, r5, r1 + ldr r2, [sp, #0x34] + subs r2, r2, r1 + str r2, [sp, #0x34] +_08299AC8: + ldr r3, [sp, #0x14] + cmp r3, #0 + ble _08299B16 + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _08299B0A + cmp r6, #0 + ble _08299AFA + mov r0, sl + ldr r1, [sp, #0x64] + adds r2, r6, #0 + bl _pow5mult + str r0, [sp, #0x64] + mov r0, sl + ldr r1, [sp, #0x64] + ldr r2, [sp, #0x5c] + bl _multiply + adds r4, r0, #0 + mov r0, sl + ldr r1, [sp, #0x5c] + bl _Bfree + str r4, [sp, #0x5c] +_08299AFA: + ldr r1, [sp, #0x14] + subs r4, r1, r6 + cmp r4, #0 + beq _08299B16 + mov r0, sl + ldr r1, [sp, #0x5c] + adds r2, r4, #0 + b _08299B10 +_08299B0A: + mov r0, sl + ldr r1, [sp, #0x5c] + ldr r2, [sp, #0x14] +_08299B10: + bl _pow5mult + str r0, [sp, #0x5c] +_08299B16: + mov r0, sl + movs r1, #1 + bl _i2b + str r0, [sp, #0x68] + ldr r2, [sp, #0x38] + cmp r2, #0 + ble _08299B30 + mov r0, sl + ldr r1, [sp, #0x68] + bl _pow5mult + str r0, [sp, #0x68] +_08299B30: + ldr r3, [sp, #0xc] + cmp r3, #1 + bgt _08299B6C + ldr r0, [sp, #0x44] + cmp r0, #0 + bne _08299B68 + ldr r0, _08299B60 + ldr r1, [sp, #0x40] + ands r0, r1 + cmp r0, #0 + bne _08299B68 + ldr r0, _08299B64 + ands r1, r0 + cmp r1, #0 + beq _08299B68 + ldr r1, [sp, #0x10] + adds r1, #1 + str r1, [sp, #0x10] + ldr r2, [sp, #0x34] + adds r2, #1 + str r2, [sp, #0x34] + movs r3, #1 + str r3, [sp, #0x3c] + b _08299B6C + .align 2, 0 +_08299B60: .4byte 0x000FFFFF +_08299B64: .4byte 0x7FF00000 +_08299B68: + movs r0, #0 + str r0, [sp, #0x3c] +_08299B6C: + ldr r1, [sp, #0x38] + cmp r1, #0 + beq _08299B98 + ldr r2, [sp, #0x68] + ldr r1, [r2, #0x10] + subs r1, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x14 + adds r0, r0, r1 + ldr r0, [r0] + bl _hi0bits + ldr r1, [sp, #0x34] + adds r1, #0x20 + subs r1, r1, r0 + mov r8, r1 + movs r0, #0x1f + mov r3, r8 + ands r3, r0 + mov r8, r3 + b _08299BA6 +_08299B98: + ldr r0, [sp, #0x34] + adds r0, #1 + mov r8, r0 + movs r0, #0x1f + mov r1, r8 + ands r1, r0 + mov r8, r1 +_08299BA6: + mov r2, r8 + cmp r2, #0 + beq _08299BB2 + movs r0, #0x20 + subs r2, r0, r2 + mov r8, r2 +_08299BB2: + mov r3, r8 + cmp r3, #4 + ble _08299BBE + movs r0, #4 + rsbs r0, r0, #0 + b _08299BC6 +_08299BBE: + mov r3, r8 + cmp r3, #3 + bgt _08299BD6 + movs r0, #0x1c +_08299BC6: + add r8, r0 + ldr r1, [sp, #0x10] + add r1, r8 + str r1, [sp, #0x10] + add r5, r8 + ldr r2, [sp, #0x34] + add r2, r8 + str r2, [sp, #0x34] +_08299BD6: + ldr r3, [sp, #0x10] + cmp r3, #0 + ble _08299BE8 + mov r0, sl + ldr r1, [sp, #0x5c] + adds r2, r3, #0 + bl _lshift + str r0, [sp, #0x5c] +_08299BE8: + ldr r0, [sp, #0x34] + cmp r0, #0 + ble _08299BFA + mov r0, sl + ldr r1, [sp, #0x68] + ldr r2, [sp, #0x34] + bl _lshift + str r0, [sp, #0x68] +_08299BFA: + ldr r1, [sp, #0x2c] + cmp r1, #0 + beq _08299C38 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + cmp r0, #0 + bge _08299C38 + ldr r2, [sp, #0x24] + subs r2, #1 + str r2, [sp, #0x24] + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + ldr r3, [sp, #0x30] + cmp r3, #0 + beq _08299C34 + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] +_08299C34: + ldr r0, [sp, #0x20] + str r0, [sp, #0x18] +_08299C38: + ldr r1, [sp, #0x18] + cmp r1, #0 + bgt _08299C7C + ldr r2, [sp, #0xc] + cmp r2, #2 + ble _08299C7C + cmp r1, #0 + blt _08299C62 + mov r0, sl + ldr r1, [sp, #0x68] + movs r2, #5 + movs r3, #0 + bl _multadd + str r0, [sp, #0x68] + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + cmp r0, #0 + bgt _08299C6A +_08299C62: + ldr r3, [sp, #0xa4] + mvns r3, r3 + str r3, [sp, #0x24] + b _08299EB2 +_08299C6A: + movs r0, #0x31 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x24] + adds r3, #1 + str r3, [sp, #0x24] + b _08299EB2 +_08299C7C: + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _08299C84 + b _08299DFA +_08299C84: + cmp r5, #0 + ble _08299C94 + mov r0, sl + ldr r1, [sp, #0x64] + adds r2, r5, #0 + bl _lshift + str r0, [sp, #0x64] +_08299C94: + ldr r1, [sp, #0x64] + str r1, [sp, #0x60] + ldr r2, [sp, #0x3c] + cmp r2, #0 + beq _08299CC6 + ldr r1, [r1, #4] + mov r0, sl + bl _Balloc + str r0, [sp, #0x64] + adds r0, #0xc + ldr r1, [sp, #0x60] + adds r1, #0xc + ldr r3, [sp, #0x60] + ldr r2, [r3, #0x10] + lsls r2, r2, #2 + adds r2, #8 + bl memcpy + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #1 + bl _lshift + str r0, [sp, #0x64] +_08299CC6: + movs r0, #1 + mov r8, r0 + mov r1, r8 + ldr r2, [sp, #0x44] + ands r2, r1 + str r2, [sp, #0x80] + b _08299D1C +_08299CD4: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + ldr r3, [sp, #0x60] + ldr r0, [sp, #0x64] + cmp r3, r0 + bne _08299CFC + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] + str r0, [sp, #0x60] + b _08299D18 +_08299CFC: + mov r0, sl + ldr r1, [sp, #0x60] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x60] + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] +_08299D18: + movs r1, #1 + add r8, r1 +_08299D1C: + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl sub_082990B4 + adds r7, r0, #0 + adds r7, #0x30 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x60] + bl __mcmp + adds r4, r0, #0 + mov r0, sl + ldr r1, [sp, #0x68] + ldr r2, [sp, #0x64] + bl __mdiff + adds r5, r0, #0 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _08299D50 + ldr r0, [sp, #0x5c] + adds r1, r5, #0 + bl __mcmp + adds r6, r0, #0 + b _08299D52 +_08299D50: + movs r6, #1 +_08299D52: + mov r0, sl + adds r1, r5, #0 + bl _Bfree + cmp r6, #0 + bne _08299D7E + ldr r2, [sp, #0xc] + cmp r2, #0 + bne _08299D7E + ldr r3, [sp, #0x80] + cmp r3, #0 + bne _08299D7E + cmp r7, #0x39 + beq _08299DD0 + cmp r4, #0 + ble _08299D74 + adds r7, #1 +_08299D74: + mov r0, sb + strb r7, [r0] + movs r1, #1 + add sb, r1 + b _08299EB2 +_08299D7E: + cmp r4, #0 + blt _08299D92 + cmp r4, #0 + bne _08299DC8 + ldr r2, [sp, #0xc] + cmp r2, #0 + bne _08299DC8 + ldr r3, [sp, #0x80] + cmp r3, #0 + bne _08299DC8 +_08299D92: + cmp r6, #0 + ble _08299DC2 + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #1 + bl _lshift + str r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + adds r6, r0, #0 + cmp r6, #0 + bgt _08299DBC + cmp r6, #0 + bne _08299DC2 + adds r0, r7, #0 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08299DC2 +_08299DBC: + adds r7, #1 + cmp r7, #0x3a + beq _08299DD0 +_08299DC2: + mov r2, sb + strb r7, [r2] + b _08299E7A +_08299DC8: + cmp r6, #0 + ble _08299DE8 + cmp r7, #0x39 + bne _08299DDC +_08299DD0: + movs r0, #0x39 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + b _08299E50 +_08299DDC: + adds r0, r7, #1 + mov r3, sb + strb r0, [r3] + movs r0, #1 + add sb, r0 + b _08299EB2 +_08299DE8: + mov r1, sb + strb r7, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x18] + cmp r8, r3 + beq _08299DF8 + b _08299CD4 +_08299DF8: + b _08299E2C +_08299DFA: + movs r0, #1 + mov r8, r0 + b _08299E12 +_08299E00: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + movs r1, #1 + add r8, r1 +_08299E12: + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl sub_082990B4 + adds r7, r0, #0 + adds r7, #0x30 + mov r2, sb + strb r7, [r2] + movs r3, #1 + add sb, r3 + ldr r0, [sp, #0x18] + cmp r8, r0 + blt _08299E00 +_08299E2C: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #1 + bl _lshift + str r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + adds r4, r0, #0 + cmp r4, #0 + bgt _08299E50 + cmp r4, #0 + bne _08299E92 + movs r0, #1 + ands r7, r0 + cmp r7, #0 + beq _08299E92 +_08299E50: + movs r1, #1 + rsbs r1, r1, #0 + add sb, r1 + mov r2, sb + ldrb r2, [r2] + cmp r2, #0x39 + bne _08299E72 +_08299E5E: + ldr r3, [sp, #0x74] + cmp sb, r3 + beq _08299E80 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x39 + beq _08299E5E +_08299E72: + mov r2, sb + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_08299E7A: + movs r3, #1 + add sb, r3 + b _08299EB2 +_08299E80: + ldr r0, [sp, #0x24] + adds r0, #1 + str r0, [sp, #0x24] + movs r0, #0x31 + ldr r1, [sp, #0x74] + strb r0, [r1] + adds r1, #1 + mov sb, r1 + b _08299EB2 +_08299E92: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x30 + bne _08299EAE +_08299EA0: + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x30 + beq _08299EA0 +_08299EAE: + movs r2, #1 + add sb, r2 +_08299EB2: + mov r0, sl + ldr r1, [sp, #0x68] + bl _Bfree + ldr r3, [sp, #0x64] + cmp r3, #0 + beq _08299EDA + ldr r0, [sp, #0x60] + cmp r0, #0 + beq _08299ED2 + cmp r0, r3 + beq _08299ED2 + mov r0, sl + ldr r1, [sp, #0x60] + bl _Bfree +_08299ED2: + mov r0, sl + ldr r1, [sp, #0x64] + bl _Bfree +_08299EDA: + mov r0, sl + ldr r1, [sp, #0x5c] + bl _Bfree + movs r0, #0 + mov r1, sb + strb r0, [r1] + ldr r0, [sp, #0x24] + adds r0, #1 + ldr r2, [sp, #0xa8] + str r0, [r2] + ldr r3, [sp, #0xb0] + cmp r3, #0 + beq _08299EF8 + str r1, [r3] +_08299EF8: + ldr r0, [sp, #0x74] +_08299EFA: + add sp, #0x84 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _dtoa_r + + thumb_func_start fflush +fflush: @ 0x08299F08 + push {r4, r5, r6, lr} + adds r4, r0, #0 + cmp r4, #0 + bne _08299F24 + ldr r0, _08299F1C + ldr r0, [r0] + ldr r1, _08299F20 + bl _fwalk + b _08299F9A + .align 2, 0 +_08299F1C: .4byte gUnknown_203CF1C +_08299F20: .4byte fflush +_08299F24: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08299F30 + ldr r0, _08299F64 + ldr r0, [r0] + str r0, [r4, #0x54] +_08299F30: + ldr r1, [r4, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08299F3E + adds r0, r1, #0 + bl __sinit +_08299F3E: + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08299F98 + ldr r6, [r4, #0x10] + cmp r6, #0 + beq _08299F98 + ldr r0, [r4] + subs r5, r0, r6 + str r6, [r4] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08299F76 + ldr r0, [r4, #0x14] + b _08299F78 + .align 2, 0 +_08299F64: .4byte gUnknown_203CF1C +_08299F68: + movs r0, #0x40 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + movs r0, #1 + rsbs r0, r0, #0 + b _08299F9A +_08299F76: + movs r0, #0 +_08299F78: + str r0, [r4, #8] + cmp r5, #0 + ble _08299F98 +_08299F7E: + ldr r0, [r4, #0x1c] + ldr r3, [r4, #0x24] + adds r1, r6, #0 + adds r2, r5, #0 + bl _call_via_r3 + adds r1, r0, #0 + cmp r1, #0 + ble _08299F68 + adds r6, r6, r1 + subs r5, r5, r1 + cmp r5, #0 + bgt _08299F7E +_08299F98: + movs r0, #0 +_08299F9A: + pop {r4, r5, r6, pc} + thumb_func_end fflush + + thumb_func_start sub_08299F9C +sub_08299F9C: @ 0x08299F9C + push {r4, lr} + movs r4, #0 + str r4, [r0] + str r4, [r0, #4] + str r4, [r0, #8] + strh r1, [r0, #0xc] + strh r2, [r0, #0xe] + str r4, [r0, #0x10] + str r4, [r0, #0x18] + str r0, [r0, #0x1c] + ldr r1, _08299FC4 + str r1, [r0, #0x20] + ldr r1, _08299FC8 + str r1, [r0, #0x24] + ldr r1, _08299FCC + str r1, [r0, #0x28] + ldr r1, _08299FD0 + str r1, [r0, #0x2c] + str r3, [r0, #0x54] + pop {r4, pc} + .align 2, 0 +_08299FC4: .4byte __sread +_08299FC8: .4byte __swrite +_08299FCC: .4byte __sseek +_08299FD0: .4byte __sclose + thumb_func_end sub_08299F9C + + thumb_func_start __sfmoreglue +__sfmoreglue: @ 0x08299FD4 + push {r4, r5, r6, lr} + adds r5, r1, #0 + movs r1, #0x58 + adds r6, r5, #0 + muls r6, r1, r6 + adds r1, r6, #0 + adds r1, #0xc + bl _malloc_r + adds r4, r0, #0 + cmp r4, #0 + beq _0829A000 + adds r0, #0xc + movs r1, #0 + str r1, [r4] + str r5, [r4, #4] + str r0, [r4, #8] + adds r2, r6, #0 + bl memset + adds r0, r4, #0 + b _0829A002 +_0829A000: + movs r0, #0 +_0829A002: + pop {r4, r5, r6, pc} + thumb_func_end __sfmoreglue + + thumb_func_start __sfp +__sfp: @ 0x0829A004 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x38] + cmp r0, #0 + bne _0829A014 + adds r0, r5, #0 + bl __sinit +_0829A014: + movs r0, #0xec + lsls r0, r0, #1 + adds r4, r5, r0 + b _0829A01E +_0829A01C: + ldr r4, [r4] +_0829A01E: + ldr r2, [r4, #8] + ldr r0, [r4, #4] + b _0829A02E +_0829A024: + movs r3, #0xc + ldrsh r1, [r2, r3] + cmp r1, #0 + beq _0829A050 + adds r2, #0x58 +_0829A02E: + subs r0, #1 + cmp r0, #0 + bge _0829A024 + ldr r0, [r4] + cmp r0, #0 + bne _0829A01C + adds r0, r5, #0 + movs r1, #4 + bl __sfmoreglue + str r0, [r4] + cmp r0, #0 + bne _0829A01C + movs r0, #0xc + str r0, [r5] + movs r0, #0 + b _0829A070 +_0829A050: + movs r0, #1 + strh r0, [r2, #0xc] + str r1, [r2] + str r1, [r2, #8] + str r1, [r2, #4] + str r1, [r2, #0x10] + str r1, [r2, #0x14] + str r1, [r2, #0x18] + ldr r0, _0829A074 + strh r0, [r2, #0xe] + str r1, [r2, #0x30] + str r1, [r2, #0x34] + str r1, [r2, #0x44] + str r1, [r2, #0x48] + str r5, [r2, #0x54] + adds r0, r2, #0 +_0829A070: + pop {r4, r5, pc} + .align 2, 0 +_0829A074: .4byte 0x0000FFFF + thumb_func_end __sfp + + thumb_func_start _cleanup_r +_cleanup_r: @ 0x0829A078 + push {lr} + ldr r1, _0829A084 + bl _fwalk + pop {pc} + .align 2, 0 +_0829A084: .4byte fflush + thumb_func_end _cleanup_r + + thumb_func_start _cleanup +_cleanup: @ 0x0829A088 + push {lr} + ldr r0, _0829A094 + ldr r0, [r0] + bl _cleanup_r + pop {pc} + .align 2, 0 +_0829A094: .4byte gUnknown_203CF1C + thumb_func_end _cleanup + + thumb_func_start __sinit +__sinit: @ 0x0829A098 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0829A0F4 + str r0, [r5, #0x3c] + movs r0, #1 + str r0, [r5, #0x38] + movs r0, #0xf2 + lsls r0, r0, #1 + adds r4, r5, r0 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + adds r3, r5, #0 + bl sub_08299F9C + movs r1, #0x8f + lsls r1, r1, #2 + adds r0, r5, r1 + movs r1, #9 + movs r2, #1 + adds r3, r5, #0 + bl sub_08299F9C + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r5, r1 + movs r1, #0xa + movs r2, #2 + adds r3, r5, #0 + bl sub_08299F9C + movs r0, #0xec + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #0 + str r0, [r1] + movs r0, #0xee + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #3 + str r0, [r1] + movs r1, #0xf0 + lsls r1, r1, #1 + adds r0, r5, r1 + str r4, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0829A0F4: .4byte _cleanup_r + thumb_func_end __sinit + + thumb_func_start _free_r +_free_r: @ 0x0829A0F8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r4, r1, #0 + cmp r4, #0 + bne _0829A10A + b _0829A2AE +_0829A10A: + bl __malloc_lock + adds r5, r4, #0 + subs r5, #8 + ldr r1, [r5, #4] + movs r6, #2 + rsbs r6, r6, #0 + ands r6, r1 + adds r7, r5, r6 + ldr r4, [r7, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r4, r0 + ldr r0, _0829A16C + mov ip, r0 + ldr r0, [r0, #8] + cmp r7, r0 + bne _0829A178 + adds r6, r6, r4 + movs r4, #1 + ands r1, r4 + cmp r1, #0 + bne _0829A146 + ldr r0, [r5] + subs r5, r5, r0 + adds r6, r6, r0 + ldr r3, [r5, #0xc] + ldr r2, [r5, #8] + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A146: + adds r0, r6, #0 + orrs r0, r4 + str r0, [r5, #4] + mov r2, ip + str r5, [r2, #8] + ldr r0, _0829A170 + ldr r0, [r0] + cmp r6, r0 + blo _0829A162 + ldr r0, _0829A174 + ldr r1, [r0] + mov r0, sb + bl _malloc_trim_r +_0829A162: + mov r0, sb + bl __malloc_unlock + b _0829A2AE + .align 2, 0 +_0829A16C: .4byte gUnknown_203CF34 +_0829A170: .4byte gUnknown_203D33C +_0829A174: .4byte gUnknown_203D340 +_0829A178: + str r4, [r7, #4] + movs r0, #0 + mov r8, r0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _0829A1A4 + ldr r0, [r5] + subs r5, r5, r0 + adds r6, r6, r0 + ldr r1, [r5, #8] + mov r0, ip + adds r0, #8 + cmp r1, r0 + bne _0829A19C + movs r2, #1 + mov r8, r2 + b _0829A1A4 +_0829A19C: + ldr r3, [r5, #0xc] + adds r2, r1, #0 + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A1A4: + adds r0, r7, r4 + ldr r0, [r0, #4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0829A1DC + adds r6, r6, r4 + ldr r1, [r7, #8] + mov r0, r8 + cmp r0, #0 + bne _0829A1D4 + ldr r0, _0829A1D0 + cmp r1, r0 + bne _0829A1D4 + movs r2, #1 + mov r8, r2 + str r5, [r1, #0xc] + str r5, [r1, #8] + str r1, [r5, #0xc] + str r1, [r5, #8] + b _0829A1DC + .align 2, 0 +_0829A1D0: .4byte gUnknown_203CF3C +_0829A1D4: + ldr r3, [r7, #0xc] + adds r2, r1, #0 + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A1DC: + movs r1, #1 + adds r0, r6, #0 + orrs r0, r1 + str r0, [r5, #4] + adds r0, r5, r6 + str r6, [r0] + mov r0, r8 + cmp r0, #0 + bne _0829A2A8 + ldr r0, _0829A20C + cmp r6, r0 + bhi _0829A214 + lsrs r4, r6, #3 + ldr r2, _0829A210 + adds r0, r4, #0 + asrs r0, r0, #2 + lsls r1, r0 + ldr r0, [r2, #4] + orrs r0, r1 + str r0, [r2, #4] + lsls r0, r4, #3 + adds r3, r0, r2 + ldr r2, [r3, #8] + b _0829A2A0 + .align 2, 0 +_0829A20C: .4byte 0x000001FF +_0829A210: .4byte gUnknown_203CF34 +_0829A214: + lsrs r1, r6, #9 + cmp r1, #0 + bne _0829A21E + lsrs r4, r6, #3 + b _0829A266 +_0829A21E: + cmp r1, #4 + bhi _0829A22A + lsrs r0, r6, #6 + adds r4, r0, #0 + adds r4, #0x38 + b _0829A266 +_0829A22A: + cmp r1, #0x14 + bhi _0829A234 + adds r4, r1, #0 + adds r4, #0x5b + b _0829A266 +_0829A234: + cmp r1, #0x54 + bhi _0829A240 + lsrs r0, r6, #0xc + adds r4, r0, #0 + adds r4, #0x6e + b _0829A266 +_0829A240: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r1, r0 + bhi _0829A250 + lsrs r0, r6, #0xf + adds r4, r0, #0 + adds r4, #0x77 + b _0829A266 +_0829A250: + ldr r0, _0829A260 + cmp r1, r0 + bhi _0829A264 + lsrs r0, r6, #0x12 + adds r4, r0, #0 + adds r4, #0x7c + b _0829A266 + .align 2, 0 +_0829A260: .4byte 0x00000554 +_0829A264: + movs r4, #0x7e +_0829A266: + lsls r0, r4, #3 + ldr r7, _0829A284 + adds r3, r0, r7 + ldr r2, [r3, #8] + cmp r2, r3 + bne _0829A288 + adds r0, r4, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r0, [r7, #4] + orrs r0, r1 + str r0, [r7, #4] + b _0829A2A0 + .align 2, 0 +_0829A284: .4byte gUnknown_203CF34 +_0829A288: + ldr r0, [r2, #4] + movs r1, #4 + rsbs r1, r1, #0 + b _0829A298 +_0829A290: + ldr r2, [r2, #8] + cmp r2, r3 + beq _0829A29E + ldr r0, [r2, #4] +_0829A298: + ands r0, r1 + cmp r6, r0 + blo _0829A290 +_0829A29E: + ldr r3, [r2, #0xc] +_0829A2A0: + str r3, [r5, #0xc] + str r2, [r5, #8] + str r5, [r3, #8] + str r5, [r2, #0xc] +_0829A2A8: + mov r0, sb + bl __malloc_unlock +_0829A2AE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _free_r + + thumb_func_start _malloc_trim_r +_malloc_trim_r: @ 0x0829A2B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + bl __malloc_lock + ldr r0, _0829A340 + mov r8, r0 + ldr r0, [r0, #8] + ldr r6, [r0, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r6, r0 + subs r4, r6, r4 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r1, _0829A344 + adds r4, r4, r1 + adds r0, r4, #0 + adds r1, r5, #0 + bl __udivsi3 + subs r0, #1 + lsls r4, r0, #0xc + cmp r4, r5 + blt _0829A336 + adds r0, r7, #0 + movs r1, #0 + bl _sbrk_r + adds r2, r0, #0 + mov r1, r8 + ldr r0, [r1, #8] + adds r0, r0, r6 + cmp r2, r0 + bne _0829A336 + rsbs r1, r4, #0 + adds r0, r7, #0 + bl _sbrk_r + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0829A350 + adds r0, r7, #0 + movs r1, #0 + bl _sbrk_r + adds r2, r0, #0 + mov r0, r8 + ldr r3, [r0, #8] + subs r6, r2, r3 + cmp r6, #0xf + ble _0829A336 + ldr r1, _0829A348 + ldr r0, _0829A34C + ldr r0, [r0] + subs r0, r2, r0 + str r0, [r1] + movs r0, #1 + orrs r6, r0 + str r6, [r3, #4] +_0829A336: + adds r0, r7, #0 + bl __malloc_unlock + movs r0, #0 + b _0829A36C + .align 2, 0 +_0829A340: .4byte gUnknown_203CF34 +_0829A344: .4byte 0x00000FEF +_0829A348: .4byte gUnknown_203D350 +_0829A34C: .4byte gUnknown_203D344 +_0829A350: + mov r1, r8 + ldr r2, [r1, #8] + subs r0, r6, r4 + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + ldr r1, _0829A374 + ldr r0, [r1] + subs r0, r0, r4 + str r0, [r1] + adds r0, r7, #0 + bl __malloc_unlock + movs r0, #1 +_0829A36C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A374: .4byte gUnknown_203D350 + thumb_func_end _malloc_trim_r + + thumb_func_start __sfvwrite +__sfvwrite: @ 0x0829A378 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + mov sl, r1 + ldr r6, [r1, #8] + cmp r6, #0 + bne _0829A390 + b _0829A586 +_0829A390: + movs r0, #8 + ldrh r1, [r5, #0xc] + ands r0, r1 + cmp r0, #0 + beq _0829A3A0 + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _0829A3AC +_0829A3A0: + adds r0, r5, #0 + bl __swsetup + cmp r0, #0 + beq _0829A3AC + b _0829A592 +_0829A3AC: + mov r2, sl + ldr r2, [r2] + mov r8, r2 + movs r6, #0 + ldrh r1, [r5, #0xc] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0829A400 +_0829A3BE: + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + cmp r6, #0 + bne _0829A3D4 +_0829A3C6: + mov r1, r8 + ldr r7, [r1] + ldr r6, [r1, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A3C6 +_0829A3D4: + adds r2, r6, #0 + movs r1, #0x80 + lsls r1, r1, #3 + cmp r6, r1 + bls _0829A3E0 + adds r2, r1, #0 +_0829A3E0: + adds r1, r7, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + bgt _0829A3EE + b _0829A58A +_0829A3EE: + adds r7, r7, r4 + subs r6, r6, r4 + mov r1, sl + ldr r0, [r1, #8] + subs r0, r0, r4 + str r0, [r1, #8] + cmp r0, #0 + bne _0829A3BE + b _0829A586 +_0829A400: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0829A4BA +_0829A408: + ldrh r1, [r5, #0xc] + ldr r0, [r5, #8] + ldr r3, [r5] + cmp r6, #0 + bne _0829A420 +_0829A412: + mov r2, r8 + ldr r7, [r2] + ldr r6, [r2, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A412 +_0829A420: + adds r4, r0, #0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0829A44E + cmp r6, r4 + bhs _0829A434 + adds r4, r6, #0 +_0829A434: + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r4, r6, #0 + b _0829A4A8 +_0829A44E: + ldr r0, [r5, #0x10] + cmp r3, r0 + bls _0829A476 + cmp r6, r4 + bls _0829A476 + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r0, r5, #0 + bl fflush + cmp r0, #0 + beq _0829A474 + b _0829A58A +_0829A474: + b _0829A4A8 +_0829A476: + ldr r4, [r5, #0x14] + cmp r6, r4 + blo _0829A490 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + adds r1, r7, #0 + adds r2, r4, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + ble _0829A58A + b _0829A4A8 +_0829A490: + adds r4, r6, #0 + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] +_0829A4A8: + adds r7, r7, r4 + subs r6, r6, r4 + mov r1, sl + ldr r0, [r1, #8] + subs r0, r0, r4 + str r0, [r1, #8] + cmp r0, #0 + bne _0829A408 + b _0829A586 +_0829A4BA: + movs r2, #0 + str r2, [sp] +_0829A4BE: + cmp r6, #0 + bne _0829A4D4 + movs r0, #0 + str r0, [sp] +_0829A4C6: + mov r1, r8 + ldr r7, [r1] + ldr r6, [r1, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A4C6 +_0829A4D4: + ldr r0, [sp] + cmp r0, #0 + bne _0829A4F8 + adds r0, r7, #0 + movs r1, #0xa + adds r2, r6, #0 + bl memchr + adds r1, r0, #0 + cmp r1, #0 + beq _0829A4F0 + subs r0, r7, #1 + subs r1, r1, r0 + b _0829A4F2 +_0829A4F0: + adds r1, r6, #1 +_0829A4F2: + mov sb, r1 + movs r2, #1 + str r2, [sp] +_0829A4F8: + mov r2, sb + cmp sb, r6 + bls _0829A500 + adds r2, r6, #0 +_0829A500: + ldr r0, [r5, #8] + ldr r1, [r5, #0x14] + adds r4, r0, r1 + ldr r0, [r5, #0x10] + ldr r3, [r5] + cmp r3, r0 + bls _0829A52E + cmp r2, r4 + ble _0829A52E + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r0, r5, #0 + bl fflush + cmp r0, #0 + bne _0829A58A + b _0829A55E +_0829A52E: + adds r4, r1, #0 + cmp r2, r4 + blt _0829A548 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + adds r1, r7, #0 + adds r2, r4, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + ble _0829A58A + b _0829A55E +_0829A548: + adds r4, r2, #0 + adds r0, r3, #0 + adds r1, r7, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] +_0829A55E: + mov r0, sb + subs r0, r0, r4 + mov sb, r0 + cmp r0, #0 + bne _0829A576 + adds r0, r5, #0 + bl fflush + cmp r0, #0 + bne _0829A58A + movs r1, #0 + str r1, [sp] +_0829A576: + adds r7, r7, r4 + subs r6, r6, r4 + mov r2, sl + ldr r0, [r2, #8] + subs r0, r0, r4 + str r0, [r2, #8] + cmp r0, #0 + bne _0829A4BE +_0829A586: + movs r0, #0 + b _0829A596 +_0829A58A: + movs r0, #0x40 + ldrh r1, [r5, #0xc] + orrs r0, r1 + strh r0, [r5, #0xc] +_0829A592: + movs r0, #1 + rsbs r0, r0, #0 +_0829A596: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end __sfvwrite + + thumb_func_start _fwalk +_fwalk: @ 0x0829A5A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + movs r7, #0 + movs r1, #0xec + lsls r1, r1, #1 + adds r6, r0, r1 + cmp r6, #0 + beq _0829A5DC +_0829A5B8: + ldr r5, [r6, #8] + ldr r4, [r6, #4] + b _0829A5D0 +_0829A5BE: + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0829A5CE + adds r0, r5, #0 + bl _call_via_r8 + orrs r7, r0 +_0829A5CE: + adds r5, #0x58 +_0829A5D0: + subs r4, #1 + cmp r4, #0 + bge _0829A5BE + ldr r6, [r6] + cmp r6, #0 + bne _0829A5B8 +_0829A5DC: + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + thumb_func_end _fwalk + + thumb_func_start _setlocale_r +_setlocale_r: @ 0x0829A5E4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + beq _0829A618 + ldr r1, _0829A60C + adds r0, r4, #0 + bl strcmp + cmp r0, #0 + beq _0829A614 + ldr r1, _0829A610 + adds r0, r4, #0 + bl strcmp + cmp r0, #0 + beq _0829A614 + movs r0, #0 + b _0829A61A + .align 2, 0 +_0829A60C: .4byte gUnknown_890F224 +_0829A610: .4byte gUnknown_890F21C +_0829A614: + str r6, [r5, #0x30] + str r4, [r5, #0x34] +_0829A618: + ldr r0, _0829A61C +_0829A61A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0829A61C: .4byte gUnknown_890F224 + thumb_func_end _setlocale_r + + thumb_func_start _localeconv_r +_localeconv_r: @ 0x0829A620 + ldr r0, _0829A624 + bx lr + .align 2, 0 +_0829A624: .4byte gUnknown_890F1EC + thumb_func_end _localeconv_r + + thumb_func_start setlocale +setlocale: @ 0x0829A628 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0829A63C + ldr r0, [r0] + adds r1, r3, #0 + bl _setlocale_r + pop {pc} + .align 2, 0 +_0829A63C: .4byte gUnknown_203CF1C + thumb_func_end setlocale + + thumb_func_start localeconv +localeconv: @ 0x0829A640 + push {lr} + ldr r0, _0829A64C + ldr r0, [r0] + bl _localeconv_r + pop {pc} + .align 2, 0 +_0829A64C: .4byte gUnknown_203CF1C + thumb_func_end localeconv + + thumb_func_start __smakebuf +__smakebuf: @ 0x0829A650 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + adds r4, r0, #0 + movs r0, #2 + ldrh r1, [r4, #0xc] + ands r0, r1 + cmp r0, #0 + bne _0829A6E6 + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + blt _0829A678 + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + mov r2, sp + bl _fstat_r + cmp r0, #0 + bge _0829A68A +_0829A678: + movs r7, #0 + movs r6, #0x80 + lsls r6, r6, #3 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + ldrh r2, [r4, #0xc] + orrs r0, r2 + b _0829A6CE +_0829A68A: + movs r7, #0 + ldr r1, [sp, #4] + movs r0, #0xf0 + lsls r0, r0, #8 + ands r1, r0 + movs r0, #0x80 + lsls r0, r0, #6 + cmp r1, r0 + bne _0829A69E + movs r7, #1 +_0829A69E: + movs r6, #0x80 + lsls r6, r6, #3 + movs r0, #0x80 + lsls r0, r0, #8 + cmp r1, r0 + bne _0829A6C4 + ldr r1, [r4, #0x28] + ldr r0, _0829A6C0 + cmp r1, r0 + bne _0829A6C4 + adds r0, r6, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + str r6, [r4, #0x4c] + b _0829A6D0 + .align 2, 0 +_0829A6C0: .4byte __sseek +_0829A6C4: + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 +_0829A6CE: + strh r0, [r4, #0xc] +_0829A6D0: + ldr r0, [r4, #0x54] + adds r1, r6, #0 + bl _malloc_r + adds r2, r0, #0 + cmp r2, #0 + bne _0829A6F4 + movs r0, #2 + ldrh r2, [r4, #0xc] + orrs r0, r2 + strh r0, [r4, #0xc] +_0829A6E6: + adds r0, r4, #0 + adds r0, #0x43 + str r0, [r4] + str r0, [r4, #0x10] + movs r0, #1 + str r0, [r4, #0x14] + b _0829A722 +_0829A6F4: + ldr r1, [r4, #0x54] + ldr r0, _0829A728 + str r0, [r1, #0x3c] + movs r0, #0x80 + movs r5, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + str r2, [r4] + str r2, [r4, #0x10] + str r6, [r4, #0x14] + cmp r7, #0 + beq _0829A722 + movs r2, #0xe + ldrsh r0, [r4, r2] + bl isatty + cmp r0, #0 + beq _0829A722 + movs r0, #1 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] +_0829A722: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A728: .4byte _cleanup_r + thumb_func_end __smakebuf + + thumb_func_start sub_0829A72C +sub_0829A72C: @ 0x0829A72C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + ldr r0, _0829A7A0 + ldr r0, [r0, #8] + mov r8, r0 + ldr r7, [r0, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r7, r0 + mov r2, r8 + adds r4, r2, r7 + ldr r0, _0829A7A4 + ldr r0, [r0] + adds r1, r1, r0 + adds r6, r1, #0 + adds r6, #0x10 + ldr r3, _0829A7A8 + mov sl, r3 + ldr r0, [r3] + movs r2, #1 + rsbs r2, r2, #0 + mov sb, r2 + cmp r0, sb + beq _0829A76E + ldr r3, _0829A7AC + adds r6, r1, r3 + ldr r0, _0829A7B0 + ands r6, r0 +_0829A76E: + ldr r0, [sp] + adds r1, r6, #0 + bl _sbrk_r + adds r5, r0, #0 + cmp r5, sb + beq _0829A870 + cmp r5, r4 + bhs _0829A786 + ldr r0, _0829A7A0 + cmp r8, r0 + bne _0829A870 +_0829A786: + ldr r1, _0829A7B4 + ldr r0, [r1] + adds r2, r0, r6 + str r2, [r1] + cmp r5, r4 + bne _0829A7B8 + adds r2, r6, r7 + ldr r3, _0829A7A0 + ldr r1, [r3, #8] + movs r0, #1 + orrs r2, r0 + str r2, [r1, #4] + b _0829A858 + .align 2, 0 +_0829A7A0: .4byte gUnknown_203CF34 +_0829A7A4: .4byte gUnknown_203D340 +_0829A7A8: .4byte gUnknown_203D344 +_0829A7AC: .4byte 0x0000100F +_0829A7B0: .4byte 0xFFFFF000 +_0829A7B4: .4byte gUnknown_203D350 +_0829A7B8: + mov r3, sl + ldr r0, [r3] + cmp r0, sb + bne _0829A7C4 + str r5, [r3] + b _0829A7CA +_0829A7C4: + subs r0, r5, r4 + adds r0, r2, r0 + str r0, [r1] +_0829A7CA: + adds r1, r5, #0 + adds r1, #8 + movs r0, #7 + ands r1, r0 + cmp r1, #0 + beq _0829A7DE + movs r0, #8 + subs r4, r0, r1 + adds r5, r5, r4 + b _0829A7E0 +_0829A7DE: + movs r4, #0 +_0829A7E0: + adds r0, r5, r6 + movs r1, #0x80 + lsls r1, r1, #5 + subs r1, #1 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #5 + subs r0, r1, r0 + adds r4, r4, r0 + ldr r0, [sp] + adds r1, r4, #0 + bl _sbrk_r + adds r2, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829A870 + ldr r1, _0829A828 + ldr r0, [r1] + adds r0, r0, r4 + str r0, [r1] + ldr r1, _0829A82C + str r5, [r1, #8] + subs r0, r2, r5 + adds r2, r0, r4 + movs r3, #1 + orrs r2, r3 + str r2, [r5, #4] + cmp r8, r1 + beq _0829A858 + cmp r7, #0xf + bhi _0829A830 + str r3, [r5, #4] + b _0829A870 + .align 2, 0 +_0829A828: .4byte gUnknown_203D350 +_0829A82C: .4byte gUnknown_203CF34 +_0829A830: + subs r7, #0xc + movs r0, #8 + rsbs r0, r0, #0 + ands r7, r0 + mov r2, r8 + ldr r0, [r2, #4] + ands r0, r3 + orrs r0, r7 + str r0, [r2, #4] + adds r1, r2, r7 + movs r0, #5 + str r0, [r1, #4] + str r0, [r1, #8] + cmp r7, #0xf + bls _0829A858 + mov r1, r8 + adds r1, #8 + ldr r0, [sp] + bl _free_r +_0829A858: + ldr r0, _0829A87C + ldr r2, _0829A880 + ldr r1, [r0] + ldr r0, [r2] + cmp r1, r0 + bls _0829A866 + str r1, [r2] +_0829A866: + ldr r2, _0829A884 + ldr r0, [r2] + cmp r1, r0 + bls _0829A870 + str r1, [r2] +_0829A870: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A87C: .4byte gUnknown_203D350 +_0829A880: .4byte gUnknown_203D348 +_0829A884: .4byte gUnknown_203D34C + thumb_func_end sub_0829A72C + + thumb_func_start _malloc_r +_malloc_r: @ 0x0829A888 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + adds r1, #0xb + cmp r1, #0x16 + ble _0829A8AA + movs r0, #8 + rsbs r0, r0, #0 + mov r8, r0 + mov r2, r8 + ands r2, r1 + mov r8, r2 + b _0829A8AE +_0829A8AA: + movs r3, #0x10 + mov r8, r3 +_0829A8AE: + ldr r0, [sp] + bl __malloc_lock + ldr r0, _0829A8F4 + cmp r8, r0 + bhi _0829A902 + mov r4, r8 + lsrs r4, r4, #3 + mov ip, r4 + ldr r0, _0829A8F8 + mov r7, r8 + adds r2, r7, r0 + ldr r5, [r2, #0xc] + cmp r5, r2 + bne _0829A8D6 + adds r2, r5, #0 + adds r2, #8 + ldr r5, [r2, #0xc] + cmp r5, r2 + beq _0829A8FC +_0829A8D6: + ldr r2, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r2, r0 + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + adds r2, r5, r2 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E + .align 2, 0 +_0829A8F4: .4byte 0x000001F7 +_0829A8F8: .4byte gUnknown_203CF34 +_0829A8FC: + movs r0, #2 + add ip, r0 + b _0829A9AE +_0829A902: + mov r2, r8 + lsrs r1, r2, #9 + cmp r1, #0 + bne _0829A90E + lsrs r2, r2, #3 + b _0829A95E +_0829A90E: + cmp r1, #4 + bhi _0829A91C + mov r3, r8 + lsrs r0, r3, #6 + adds r0, #0x38 + mov ip, r0 + b _0829A960 +_0829A91C: + cmp r1, #0x14 + bhi _0829A926 + adds r1, #0x5b + mov ip, r1 + b _0829A960 +_0829A926: + cmp r1, #0x54 + bhi _0829A934 + mov r4, r8 + lsrs r0, r4, #0xc + adds r0, #0x6e + mov ip, r0 + b _0829A960 +_0829A934: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r1, r0 + bhi _0829A946 + mov r7, r8 + lsrs r0, r7, #0xf + adds r0, #0x77 + mov ip, r0 + b _0829A960 +_0829A946: + ldr r0, _0829A958 + cmp r1, r0 + bhi _0829A95C + mov r1, r8 + lsrs r0, r1, #0x12 + adds r0, #0x7c + mov ip, r0 + b _0829A960 + .align 2, 0 +_0829A958: .4byte 0x00000554 +_0829A95C: + movs r2, #0x7e +_0829A95E: + mov ip, r2 +_0829A960: + mov r3, ip + lsls r0, r3, #3 + ldr r1, _0829A984 + adds r4, r0, r1 + ldr r5, [r4, #0xc] + cmp r5, r4 + beq _0829A9AA + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + ble _0829A988 + adds r0, #3 + add ip, r0 + b _0829A9AA + .align 2, 0 +_0829A984: .4byte gUnknown_203CF34 +_0829A988: + cmp r3, #0 + blt _0829A98E + b _0829ABC8 +_0829A98E: + ldr r5, [r5, #0xc] + cmp r5, r4 + beq _0829A9AA + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r2, r8 + subs r3, r1, r2 + cmp r3, #0xf + ble _0829A988 + movs r3, #1 + rsbs r3, r3, #0 + add ip, r3 +_0829A9AA: + movs r4, #1 + add ip, r4 +_0829A9AE: + ldr r0, _0829A9EC + ldr r5, [r0, #8] + mov sl, r0 + cmp r5, sl + bne _0829A9BA + b _0829AABC +_0829A9BA: + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + ble _0829A9F0 + adds r2, r5, r7 + movs r1, #1 + adds r0, r7, #0 + orrs r0, r1 + str r0, [r5, #4] + mov r4, sl + str r2, [r4, #0xc] + str r2, [r4, #8] + str r4, [r2, #0xc] + str r4, [r2, #8] + adds r0, r3, #0 + orrs r0, r1 + str r0, [r2, #4] + adds r0, r2, r3 + str r3, [r0] + b _0829AC2E + .align 2, 0 +_0829A9EC: .4byte gUnknown_203CF3C +_0829A9F0: + mov r7, sl + str r7, [r7, #0xc] + str r7, [r7, #8] + cmp r3, #0 + blt _0829AA06 + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E +_0829AA06: + ldr r0, _0829AA28 + cmp r1, r0 + bhi _0829AA2C + lsrs r2, r1, #3 + mov r3, sl + subs r3, #8 + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r0, [r3, #4] + orrs r0, r1 + str r0, [r3, #4] + lsls r0, r2, #3 + adds r6, r0, r3 + ldr r4, [r6, #8] + b _0829AAB4 + .align 2, 0 +_0829AA28: .4byte 0x000001FF +_0829AA2C: + lsrs r2, r1, #9 + cmp r2, #0 + bne _0829AA36 + lsrs r2, r1, #3 + b _0829AA7A +_0829AA36: + cmp r2, #4 + bhi _0829AA42 + lsrs r0, r1, #6 + adds r2, r0, #0 + adds r2, #0x38 + b _0829AA7A +_0829AA42: + cmp r2, #0x14 + bhi _0829AA4A + adds r2, #0x5b + b _0829AA7A +_0829AA4A: + cmp r2, #0x54 + bhi _0829AA56 + lsrs r0, r1, #0xc + adds r2, r0, #0 + adds r2, #0x6e + b _0829AA7A +_0829AA56: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r2, r0 + bhi _0829AA66 + lsrs r0, r1, #0xf + adds r2, r0, #0 + adds r2, #0x77 + b _0829AA7A +_0829AA66: + ldr r0, _0829AA74 + cmp r2, r0 + bhi _0829AA78 + lsrs r0, r1, #0x12 + adds r2, r0, #0 + adds r2, #0x7c + b _0829AA7A + .align 2, 0 +_0829AA74: .4byte 0x00000554 +_0829AA78: + movs r2, #0x7e +_0829AA7A: + lsls r0, r2, #3 + ldr r3, _0829AA98 + adds r6, r0, r3 + ldr r4, [r6, #8] + cmp r4, r6 + bne _0829AA9C + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r7, _0829AA98 + ldr r0, [r7, #4] + orrs r0, r1 + str r0, [r7, #4] + b _0829AAB4 + .align 2, 0 +_0829AA98: .4byte gUnknown_203CF34 +_0829AA9C: + ldr r0, [r4, #4] + movs r2, #4 + rsbs r2, r2, #0 + b _0829AAAC +_0829AAA4: + ldr r4, [r4, #8] + cmp r4, r6 + beq _0829AAB2 + ldr r0, [r4, #4] +_0829AAAC: + ands r0, r2 + cmp r1, r0 + blo _0829AAA4 +_0829AAB2: + ldr r6, [r4, #0xc] +_0829AAB4: + str r6, [r5, #0xc] + str r4, [r5, #8] + str r5, [r6, #8] + str r5, [r4, #0xc] +_0829AABC: + mov r0, ip + cmp r0, #0 + bge _0829AAC4 + adds r0, #3 +_0829AAC4: + asrs r0, r0, #2 + movs r6, #1 + lsls r6, r0 + ldr r0, _0829AAE8 + ldr r1, [r0, #4] + cmp r6, r1 + bhi _0829AB86 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0829AAFA + movs r0, #4 + rsbs r0, r0, #0 + mov r2, ip + ands r0, r2 + adds r0, #4 + mov ip, r0 + b _0829AAF0 + .align 2, 0 +_0829AAE8: .4byte gUnknown_203CF34 +_0829AAEC: + movs r3, #4 + add ip, r3 +_0829AAF0: + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0829AAEC +_0829AAFA: + ldr r4, _0829AB78 + mov sb, r4 +_0829AAFE: + mov r7, ip + str r7, [sp, #4] + mov r1, ip + lsls r0, r1, #3 + mov r3, sb + adds r2, r0, r3 + adds r4, r2, #0 +_0829AB0C: + ldr r5, [r4, #0xc] + cmp r5, r4 + beq _0829AB2C + movs r0, #4 + rsbs r0, r0, #0 +_0829AB16: + ldr r1, [r5, #4] + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + bgt _0829ABDC + cmp r3, #0 + bge _0829AC04 + ldr r5, [r5, #0xc] + cmp r5, r4 + bne _0829AB16 +_0829AB2C: + adds r4, #8 + movs r0, #1 + add ip, r0 + mov r0, ip + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AB0C +_0829AB3C: + ldr r0, [sp, #4] + ands r0, r1 + cmp r0, #0 + beq _0829AB7C + ldr r3, [sp, #4] + subs r3, #1 + str r3, [sp, #4] + subs r2, #8 + ldr r0, [r2, #8] + cmp r0, r2 + beq _0829AB3C +_0829AB52: + lsls r6, r6, #1 + mov r4, sb + ldr r1, [r4, #4] + cmp r6, r1 + bhi _0829AB86 + cmp r6, #0 + beq _0829AB86 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0829AAFE +_0829AB68: + movs r7, #4 + add ip, r7 + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0829AB68 + b _0829AAFE + .align 2, 0 +_0829AB78: .4byte gUnknown_203CF34 +_0829AB7C: + mov r1, sb + ldr r0, [r1, #4] + bics r0, r6 + str r0, [r1, #4] + b _0829AB52 +_0829AB86: + ldr r2, _0829ABC4 + ldr r0, [r2, #8] + ldr r0, [r0, #4] + movs r4, #4 + rsbs r4, r4, #0 + ands r0, r4 + mov r7, r8 + subs r3, r0, r7 + cmp r0, r8 + blo _0829AB9E + cmp r3, #0xf + bgt _0829AC18 +_0829AB9E: + ldr r0, [sp] + mov r1, r8 + bl sub_0829A72C + ldr r1, _0829ABC4 + ldr r0, [r1, #8] + ldr r0, [r0, #4] + ands r0, r4 + mov r2, r8 + subs r3, r0, r2 + cmp r0, r8 + blo _0829ABBA + cmp r3, #0xf + bgt _0829AC18 +_0829ABBA: + ldr r0, [sp] + bl __malloc_unlock + movs r0, #0 + b _0829AC38 + .align 2, 0 +_0829ABC4: .4byte gUnknown_203CF34 +_0829ABC8: + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E +_0829ABDC: + mov r4, r8 + adds r2, r5, r4 + movs r1, #1 + orrs r4, r1 + str r4, [r5, #4] + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + mov r7, sl + str r2, [r7, #0xc] + str r2, [r7, #8] + str r7, [r2, #0xc] + str r7, [r2, #8] + adds r0, r3, #0 + orrs r0, r1 + str r0, [r2, #4] + adds r0, r2, r3 + str r3, [r0] + b _0829AC2E +_0829AC04: + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + b _0829AC2E +_0829AC18: + ldr r2, _0829AC44 + ldr r5, [r2, #8] + movs r1, #1 + mov r0, r8 + orrs r0, r1 + str r0, [r5, #4] + mov r4, r8 + adds r0, r5, r4 + str r0, [r2, #8] + orrs r3, r1 + str r3, [r0, #4] +_0829AC2E: + ldr r0, [sp] + bl __malloc_unlock + adds r0, r5, #0 + adds r0, #8 +_0829AC38: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829AC44: .4byte gUnknown_203CF34 + thumb_func_end _malloc_r + + thumb_func_start _mbtowc_r +_mbtowc_r: @ 0x0829AC48 + sub sp, #4 + cmp r1, #0 + bne _0829AC50 + mov r1, sp +_0829AC50: + cmp r2, #0 + beq _0829AC6C + cmp r3, #0 + bne _0829AC5E + movs r0, #1 + rsbs r0, r0, #0 + b _0829AC6E +_0829AC5E: + ldrb r0, [r2] + str r0, [r1] + ldrb r0, [r2] + cmp r0, #0 + beq _0829AC6C + movs r0, #1 + b _0829AC6E +_0829AC6C: + movs r0, #0 +_0829AC6E: + add sp, #4 + bx lr + .align 2, 0 + thumb_func_end _mbtowc_r + + thumb_func_start memchr +memchr: @ 0x0829AC74 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + adds r1, r0, #0 + movs r0, #0xff + ands r5, r0 + cmp r2, #3 + bls _0829ACE8 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829ACE8 + adds r4, r1, #0 + movs r6, #0 + movs r1, #0 +_0829AC90: + lsls r0, r6, #8 + adds r6, r0, r5 + adds r1, #1 + cmp r1, #3 + bls _0829AC90 + cmp r2, #3 + bls _0829ACCE + ldr r0, _0829ACD4 + mov ip, r0 + ldr r7, _0829ACD8 +_0829ACA4: + ldr r1, [r4] + eors r1, r6 + mov r3, ip + adds r0, r1, r3 + bics r0, r1 + ands r0, r7 + cmp r0, #0 + beq _0829ACC6 + adds r1, r4, #0 + movs r3, #0 +_0829ACB8: + ldrb r0, [r1] + cmp r0, r5 + beq _0829ACE2 + adds r1, #1 + adds r3, #1 + cmp r3, #3 + bls _0829ACB8 +_0829ACC6: + subs r2, #4 + adds r4, #4 + cmp r2, #3 + bhi _0829ACA4 +_0829ACCE: + adds r1, r4, #0 + b _0829ACE8 + .align 2, 0 +_0829ACD4: .4byte 0xFEFEFEFF +_0829ACD8: .4byte 0x80808080 +_0829ACDC: + ldrb r0, [r1] + cmp r0, r5 + bne _0829ACE6 +_0829ACE2: + adds r0, r1, #0 + b _0829ACF2 +_0829ACE6: + adds r1, #1 +_0829ACE8: + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bne _0829ACDC + movs r0, #0 +_0829ACF2: + pop {r4, r5, r6, r7, pc} + thumb_func_end memchr + + thumb_func_start memmove +memmove: @ 0x0829ACF4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r3, r1, #0 + cmp r3, r5 + bhs _0829AD26 + adds r0, r3, r2 + cmp r5, r0 + bhs _0829AD26 + adds r3, r0, #0 + adds r4, r5, r2 + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829AD78 + adds r1, r0, #0 +_0829AD16: + subs r4, #1 + subs r3, #1 + ldrb r0, [r3] + strb r0, [r4] + subs r2, #1 + cmp r2, r1 + bne _0829AD16 + b _0829AD78 +_0829AD26: + cmp r2, #0xf + bls _0829AD5E + adds r0, r3, #0 + orrs r0, r4 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AD5E + adds r1, r3, #0 +_0829AD38: + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + subs r2, #0x10 + cmp r2, #0xf + bhi _0829AD38 + cmp r2, #3 + bls _0829AD5C +_0829AD52: + ldm r1!, {r0} + stm r4!, {r0} + subs r2, #4 + cmp r2, #3 + bhi _0829AD52 +_0829AD5C: + adds r3, r1, #0 +_0829AD5E: + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829AD78 + adds r1, r0, #0 +_0829AD6A: + ldrb r0, [r3] + strb r0, [r4] + adds r3, #1 + adds r4, #1 + subs r2, #1 + cmp r2, r1 + bne _0829AD6A +_0829AD78: + adds r0, r5, #0 + pop {r4, r5, pc} + thumb_func_end memmove + + thumb_func_start __malloc_lock +__malloc_lock: @ 0x0829AD7C + bx lr + .align 2, 0 + thumb_func_end __malloc_lock + + thumb_func_start __malloc_unlock +__malloc_unlock: @ 0x0829AD80 + bx lr + .align 2, 0 + thumb_func_end __malloc_unlock + + thumb_func_start _Balloc +_Balloc: @ 0x0829AD84 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + bne _0829ADA0 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0x10 + bl _calloc_r + str r0, [r4, #0x4c] + cmp r0, #0 + beq _0829ADC8 +_0829ADA0: + ldr r1, [r4, #0x4c] + lsls r0, r6, #2 + adds r2, r0, r1 + ldr r1, [r2] + cmp r1, #0 + beq _0829ADB2 + ldr r0, [r1] + str r0, [r2] + b _0829ADD0 +_0829ADB2: + movs r5, #1 + lsls r5, r6 + lsls r2, r5, #2 + adds r2, #0x14 + adds r0, r4, #0 + movs r1, #1 + bl _calloc_r + adds r1, r0, #0 + cmp r1, #0 + bne _0829ADCC +_0829ADC8: + movs r0, #0 + b _0829ADD8 +_0829ADCC: + str r6, [r1, #4] + str r5, [r1, #8] +_0829ADD0: + movs r0, #0 + str r0, [r1, #0x10] + str r0, [r1, #0xc] + adds r0, r1, #0 +_0829ADD8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end _Balloc + + thumb_func_start _Bfree +_Bfree: @ 0x0829ADDC + adds r3, r0, #0 + adds r2, r1, #0 + cmp r2, #0 + beq _0829ADF2 + ldr r0, [r2, #4] + ldr r1, [r3, #0x4c] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] +_0829ADF2: + bx lr + thumb_func_end _Bfree + + thumb_func_start _multadd +_multadd: @ 0x0829ADF4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r5, r1, #0 + adds r4, r2, #0 + mov r8, r3 + ldr r6, [r5, #0x10] + adds r3, r5, #0 + adds r3, #0x14 + movs r7, #0 + ldr r0, _0829AE88 + mov ip, r0 +_0829AE10: + ldr r1, [r3] + adds r0, r1, #0 + mov r2, ip + ands r0, r2 + adds r2, r0, #0 + muls r2, r4, r2 + add r2, r8 + lsrs r1, r1, #0x10 + adds r0, r1, #0 + muls r0, r4, r0 + lsrs r1, r2, #0x10 + adds r0, r0, r1 + lsrs r1, r0, #0x10 + mov r8, r1 + lsls r0, r0, #0x10 + mov r1, ip + ands r2, r1 + adds r0, r0, r2 + stm r3!, {r0} + adds r7, #1 + cmp r7, r6 + blt _0829AE10 + mov r2, r8 + cmp r2, #0 + beq _0829AE7E + ldr r0, [r5, #8] + cmp r6, r0 + blt _0829AE6E + ldr r1, [r5, #4] + adds r1, #1 + mov r0, sb + bl _Balloc + adds r4, r0, #0 + adds r0, #0xc + adds r1, r5, #0 + adds r1, #0xc + ldr r2, [r5, #0x10] + lsls r2, r2, #2 + adds r2, #8 + bl memcpy + mov r0, sb + adds r1, r5, #0 + bl _Bfree + adds r5, r4, #0 +_0829AE6E: + lsls r1, r6, #2 + adds r0, r5, #0 + adds r0, #0x14 + adds r0, r0, r1 + mov r1, r8 + str r1, [r0] + adds r6, #1 + str r6, [r5, #0x10] +_0829AE7E: + adds r0, r5, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829AE88: .4byte 0x0000FFFF + thumb_func_end _multadd + + thumb_func_start _s2b +_s2b: @ 0x0829AE8C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + mov r0, r8 + adds r0, #8 + movs r1, #9 + bl __divsi3 + movs r1, #0 + movs r2, #1 + cmp r0, #1 + ble _0829AEB4 +_0829AEAC: + lsls r2, r2, #1 + adds r1, #1 + cmp r0, r2 + bgt _0829AEAC +_0829AEB4: + adds r0, r7, #0 + bl _Balloc + adds r1, r0, #0 + ldr r0, [sp, #0x18] + str r0, [r1, #0x14] + movs r0, #1 + str r0, [r1, #0x10] + movs r5, #9 + cmp r6, #9 + ble _0829AEE6 + adds r4, #9 +_0829AECC: + ldrb r3, [r4] + subs r3, #0x30 + adds r4, #1 + adds r0, r7, #0 + movs r2, #0xa + bl _multadd + adds r1, r0, #0 + adds r5, #1 + cmp r5, r6 + blt _0829AECC + adds r4, #1 + b _0829AEE8 +_0829AEE6: + adds r4, #0xa +_0829AEE8: + cmp r5, r8 + bge _0829AF06 + mov r0, r8 + subs r5, r0, r5 +_0829AEF0: + ldrb r3, [r4] + subs r3, #0x30 + adds r4, #1 + adds r0, r7, #0 + movs r2, #0xa + bl _multadd + adds r1, r0, #0 + subs r5, #1 + cmp r5, #0 + bne _0829AEF0 +_0829AF06: + adds r0, r1, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _s2b + + thumb_func_start _hi0bits +_hi0bits: @ 0x0829AF10 + adds r1, r0, #0 + movs r2, #0 + ldr r0, _0829AF60 + ands r0, r1 + cmp r0, #0 + bne _0829AF20 + movs r2, #0x10 + lsls r1, r1, #0x10 +_0829AF20: + movs r0, #0xff + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF2E + adds r2, #8 + lsls r1, r1, #8 +_0829AF2E: + movs r0, #0xf0 + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF3C + adds r2, #4 + lsls r1, r1, #4 +_0829AF3C: + movs r0, #0xc0 + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF4A + adds r2, #2 + lsls r1, r1, #2 +_0829AF4A: + cmp r1, #0 + blt _0829AF64 + adds r2, #1 + movs r0, #0x80 + lsls r0, r0, #0x17 + ands r0, r1 + cmp r0, #0 + bne _0829AF64 + movs r0, #0x20 + b _0829AF66 + .align 2, 0 +_0829AF60: .4byte 0xFFFF0000 +_0829AF64: + adds r0, r2, #0 +_0829AF66: + bx lr + thumb_func_end _hi0bits + + thumb_func_start _lo0bits +_lo0bits: @ 0x0829AF68 + adds r3, r0, #0 + ldr r1, [r3] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _0829AF98 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0829AF80 + movs r0, #0 + b _0829AFE8 +_0829AF80: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0829AF90 + lsrs r0, r1, #1 + str r0, [r3] + movs r0, #1 + b _0829AFE8 +_0829AF90: + lsrs r0, r1, #2 + str r0, [r3] + movs r0, #2 + b _0829AFE8 +_0829AF98: + movs r2, #0 + ldr r0, _0829AFE0 + ands r0, r1 + cmp r0, #0 + bne _0829AFA6 + movs r2, #0x10 + lsrs r1, r1, #0x10 +_0829AFA6: + movs r0, #0xff + ands r0, r1 + cmp r0, #0 + bne _0829AFB2 + adds r2, #8 + lsrs r1, r1, #8 +_0829AFB2: + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0829AFBE + adds r2, #4 + lsrs r1, r1, #4 +_0829AFBE: + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AFCA + adds r2, #2 + lsrs r1, r1, #2 +_0829AFCA: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0829AFE4 + adds r2, #1 + lsrs r1, r1, #1 + cmp r1, #0 + bne _0829AFE4 + movs r0, #0x20 + b _0829AFE8 + .align 2, 0 +_0829AFE0: .4byte 0x0000FFFF +_0829AFE4: + str r1, [r3] + adds r0, r2, #0 +_0829AFE8: + bx lr + .align 2, 0 + thumb_func_end _lo0bits + + thumb_func_start _i2b +_i2b: @ 0x0829AFEC + push {r4, lr} + adds r4, r1, #0 + movs r1, #1 + bl _Balloc + str r4, [r0, #0x14] + movs r1, #1 + str r1, [r0, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end _i2b + + thumb_func_start _multiply +_multiply: @ 0x0829B000 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [r4, #0x10] + ldr r0, [r5, #0x10] + cmp r1, r0 + bge _0829B020 + str r4, [sp] + adds r4, r5, #0 + ldr r5, [sp] +_0829B020: + ldr r1, [r4, #4] + ldr r6, [r4, #0x10] + ldr r0, [r5, #0x10] + mov r8, r0 + mov r2, r8 + adds r2, r6, r2 + str r2, [sp, #4] + ldr r0, [r4, #8] + cmp r2, r0 + ble _0829B036 + adds r1, #1 +_0829B036: + adds r0, r3, #0 + bl _Balloc + str r0, [sp] + adds r7, r0, #0 + adds r7, #0x14 + ldr r1, [sp, #4] + lsls r0, r1, #2 + adds r2, r7, r0 + str r2, [sp, #8] + str r0, [sp, #0x18] + adds r1, r4, #0 + adds r1, #0x14 + lsls r3, r6, #2 + adds r2, r5, #0 + adds r2, #0x14 + mov r5, r8 + lsls r4, r5, #2 + ldr r0, [sp, #8] + cmp r7, r0 + bhs _0829B06A + movs r0, #0 +_0829B062: + stm r7!, {r0} + ldr r5, [sp, #8] + cmp r7, r5 + blo _0829B062 +_0829B06A: + str r1, [sp, #8] + adds r3, r1, r3 + str r3, [sp, #0xc] + mov r8, r2 + add r4, r8 + str r4, [sp, #0x10] + ldr r0, [sp] + adds r0, #0x14 + mov sb, r0 + mov r1, sb + str r1, [sp, #0x20] + cmp r8, r4 + bhs _0829B132 +_0829B084: + mov r2, r8 + ldm r2!, {r6} + str r2, [sp, #0x14] + ldr r0, _0829B140 + ands r6, r0 + mov r4, sb + adds r4, #4 + str r4, [sp, #0x1c] + cmp r6, #0 + beq _0829B0DC + ldr r7, [sp, #8] + mov r5, sb + movs r1, #0 + mov ip, r1 + mov sl, r0 +_0829B0A2: + ldm r7!, {r3} + adds r0, r3, #0 + mov r2, sl + ands r0, r2 + adds r1, r0, #0 + muls r1, r6, r1 + ldr r2, [r5] + adds r0, r2, #0 + mov r4, sl + ands r0, r4 + adds r1, r1, r0 + mov r0, ip + adds r4, r1, r0 + lsrs r1, r4, #0x10 + lsrs r3, r3, #0x10 + adds r0, r3, #0 + muls r0, r6, r0 + lsrs r2, r2, #0x10 + adds r0, r0, r2 + adds r2, r0, r1 + lsrs r0, r2, #0x10 + mov ip, r0 + strh r2, [r5] + strh r4, [r5, #2] + adds r5, #4 + ldr r1, [sp, #0xc] + cmp r7, r1 + blo _0829B0A2 + str r0, [r5] +_0829B0DC: + mov r2, r8 + ldrh r6, [r2, #2] + cmp r6, #0 + beq _0829B124 + ldr r7, [sp, #8] + mov r5, sb + movs r4, #0 + mov ip, r4 + ldr r2, [r5] + ldr r3, _0829B140 +_0829B0F0: + ldm r7!, {r1} + adds r0, r1, #0 + ands r0, r3 + muls r0, r6, r0 + ldrh r4, [r5, #2] + adds r4, r4, r0 + mov r8, r4 + add r4, ip + lsrs r0, r4, #0x10 + mov ip, r0 + strh r4, [r5] + strh r2, [r5, #2] + adds r5, #4 + lsrs r1, r1, #0x10 + muls r1, r6, r1 + ldr r0, [r5] + ands r0, r3 + adds r1, r1, r0 + mov r4, ip + adds r2, r1, r4 + lsrs r0, r2, #0x10 + mov ip, r0 + ldr r1, [sp, #0xc] + cmp r7, r1 + blo _0829B0F0 + str r2, [r5] +_0829B124: + ldr r2, [sp, #0x14] + mov r8, r2 + ldr r4, [sp, #0x1c] + mov sb, r4 + ldr r5, [sp, #0x10] + cmp r8, r5 + blo _0829B084 +_0829B132: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x18] + adds r5, r0, r1 + ldr r2, [sp, #4] + cmp r2, #0 + ble _0829B156 + b _0829B14E + .align 2, 0 +_0829B140: .4byte 0x0000FFFF +_0829B144: + ldr r4, [sp, #4] + subs r4, #1 + str r4, [sp, #4] + cmp r4, #0 + ble _0829B156 +_0829B14E: + subs r5, #4 + ldr r0, [r5] + cmp r0, #0 + beq _0829B144 +_0829B156: + ldr r5, [sp, #4] + ldr r0, [sp] + str r5, [r0, #0x10] + ldr r0, [sp] + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _multiply + + thumb_func_start _pow5mult +_pow5mult: @ 0x0829B16C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r1, #3 + ands r1, r6 + cmp r1, #0 + beq _0829B196 + ldr r0, _0829B1B8 + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + mov r0, r8 + adds r1, r7, #0 + movs r3, #0 + bl _multadd + adds r7, r0, #0 +_0829B196: + asrs r6, r6, #2 + cmp r6, #0 + beq _0829B1FC + mov r0, r8 + ldr r5, [r0, #0x48] + adds r4, r5, #0 + cmp r5, #0 + bne _0829B1D8 + ldr r1, _0829B1BC + bl _i2b + mov r1, r8 + str r0, [r1, #0x48] + adds r5, r0, #0 + str r4, [r5] + b _0829B1D8 + .align 2, 0 +_0829B1B8: .4byte gUnknown_890F228 +_0829B1BC: .4byte 0x00000271 +_0829B1C0: + ldr r0, [r5] + adds r4, r0, #0 + cmp r0, #0 + bne _0829B1D6 + mov r0, r8 + adds r1, r5, #0 + adds r2, r5, #0 + bl _multiply + str r0, [r5] + str r4, [r0] +_0829B1D6: + adds r5, r0, #0 +_0829B1D8: + movs r0, #1 + ands r0, r6 + cmp r0, #0 + beq _0829B1F6 + mov r0, r8 + adds r1, r7, #0 + adds r2, r5, #0 + bl _multiply + adds r4, r0, #0 + mov r0, r8 + adds r1, r7, #0 + bl _Bfree + adds r7, r4, #0 +_0829B1F6: + asrs r6, r6, #1 + cmp r6, #0 + bne _0829B1C0 +_0829B1FC: + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + thumb_func_end _pow5mult + + thumb_func_start _lshift +_lshift: @ 0x0829B204 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov r8, r1 + adds r5, r2, #0 + asrs r6, r5, #5 + ldr r1, [r1, #4] + mov r2, r8 + ldr r0, [r2, #0x10] + adds r0, r6, r0 + adds r7, r0, #1 + ldr r2, [r2, #8] + cmp r7, r2 + ble _0829B22E +_0829B226: + adds r1, #1 + lsls r2, r2, #1 + cmp r7, r2 + bgt _0829B226 +_0829B22E: + mov r0, sl + bl _Balloc + mov sb, r0 + mov r4, sb + adds r4, #0x14 + mov r0, r8 + adds r0, #0x14 + cmp r6, #0 + ble _0829B24E + movs r1, #0 + adds r2, r6, #0 +_0829B246: + stm r4!, {r1} + subs r2, #1 + cmp r2, #0 + bne _0829B246 +_0829B24E: + adds r3, r0, #0 + mov r1, r8 + ldr r0, [r1, #0x10] + lsls r0, r0, #2 + adds r6, r3, r0 + movs r0, #0x1f + ands r5, r0 + cmp r5, #0 + beq _0829B280 + movs r0, #0x20 + subs r1, r0, r5 + movs r2, #0 +_0829B266: + ldr r0, [r3] + lsls r0, r5 + orrs r0, r2 + stm r4!, {r0} + ldm r3!, {r2} + lsrs r2, r1 + cmp r3, r6 + blo _0829B266 + str r2, [r4] + cmp r2, #0 + beq _0829B288 + adds r7, #1 + b _0829B288 +_0829B280: + ldm r3!, {r0} + stm r4!, {r0} + cmp r3, r6 + blo _0829B280 +_0829B288: + subs r0, r7, #1 + mov r2, sb + str r0, [r2, #0x10] + mov r0, sl + mov r1, r8 + bl _Bfree + mov r0, sb + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _lshift + + thumb_func_start __mcmp +__mcmp: @ 0x0829B2A4 + push {r4, r5, lr} + adds r2, r0, #0 + adds r5, r1, #0 + ldr r0, [r2, #0x10] + ldr r1, [r5, #0x10] + subs r0, r0, r1 + cmp r0, #0 + bne _0829B2E0 + adds r4, r2, #0 + adds r4, #0x14 + lsls r1, r1, #2 + adds r3, r4, r1 + adds r0, r5, #0 + adds r0, #0x14 + adds r1, r0, r1 +_0829B2C2: + subs r3, #4 + subs r1, #4 + ldr r0, [r3] + ldr r2, [r1] + cmp r0, r2 + beq _0829B2DA + movs r1, #1 + cmp r0, r2 + bhs _0829B2D6 + subs r1, #2 +_0829B2D6: + adds r0, r1, #0 + b _0829B2E0 +_0829B2DA: + cmp r3, r4 + bhi _0829B2C2 + movs r0, #0 +_0829B2E0: + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end __mcmp + + thumb_func_start __mdiff +__mdiff: @ 0x0829B2E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r0, #0 + adds r5, r1, #0 + mov r8, r2 + adds r0, r5, #0 + mov r1, r8 + bl __mcmp + adds r4, r0, #0 + cmp r4, #0 + bne _0829B316 + adds r0, r6, #0 + movs r1, #0 + bl _Balloc + adds r7, r0, #0 + movs r0, #1 + str r0, [r7, #0x10] + str r4, [r7, #0x14] + b _0829B3C6 +_0829B316: + cmp r4, #0 + bge _0829B324 + adds r7, r5, #0 + mov r5, r8 + mov r8, r7 + movs r4, #1 + b _0829B326 +_0829B324: + movs r4, #0 +_0829B326: + ldr r1, [r5, #4] + adds r0, r6, #0 + bl _Balloc + adds r7, r0, #0 + str r4, [r7, #0xc] + ldr r0, [r5, #0x10] + mov sb, r0 + adds r6, r5, #0 + adds r6, #0x14 + lsls r0, r0, #2 + adds r0, r0, r6 + mov sl, r0 + mov r1, r8 + ldr r0, [r1, #0x10] + movs r3, #0x14 + add r3, r8 + mov ip, r3 + lsls r0, r0, #2 + add r0, ip + str r0, [sp] + adds r4, r7, #0 + adds r4, #0x14 + movs r5, #0 + ldr r0, _0829B3B0 + mov r8, r0 +_0829B35A: + ldm r6!, {r1} + str r1, [sp, #4] + mov r3, r8 + ands r1, r3 + mov r0, ip + adds r0, #4 + mov ip, r0 + subs r0, #4 + ldm r0!, {r2} + adds r0, r2, #0 + ands r0, r3 + subs r1, r1, r0 + adds r0, r1, r5 + asrs r5, r0, #0x10 + ldr r1, [sp, #4] + lsrs r3, r1, #0x10 + lsrs r2, r2, #0x10 + subs r3, r3, r2 + adds r1, r3, r5 + asrs r5, r1, #0x10 + strh r1, [r4] + strh r0, [r4, #2] + adds r4, #4 + ldr r3, [sp] + cmp ip, r3 + blo _0829B35A + cmp r6, sl + bhs _0829B3BA + ldr r2, _0829B3B0 +_0829B394: + ldm r6!, {r1} + adds r0, r1, #0 + ands r0, r2 + adds r0, r0, r5 + asrs r5, r0, #0x10 + lsrs r1, r1, #0x10 + adds r1, r1, r5 + asrs r5, r1, #0x10 + strh r1, [r4] + strh r0, [r4, #2] + adds r4, #4 + cmp r6, sl + blo _0829B394 + b _0829B3BA + .align 2, 0 +_0829B3B0: .4byte 0x0000FFFF +_0829B3B4: + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 +_0829B3BA: + subs r4, #4 + ldr r0, [r4] + cmp r0, #0 + beq _0829B3B4 + mov r1, sb + str r1, [r7, #0x10] +_0829B3C6: + adds r0, r7, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end __mdiff + + thumb_func_start _ulp +_ulp: @ 0x0829B3D4 + push {r4, lr} + ldr r2, _0829B3E8 + ands r2, r0 + ldr r0, _0829B3EC + adds r2, r2, r0 + cmp r2, #0 + ble _0829B3F0 + adds r3, r2, #0 + movs r4, #0 + b _0829B41A + .align 2, 0 +_0829B3E8: .4byte 0x7FF00000 +_0829B3EC: .4byte 0xFCC00000 +_0829B3F0: + rsbs r0, r2, #0 + asrs r2, r0, #0x14 + cmp r2, #0x13 + bgt _0829B404 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r3, r0, #0 + asrs r3, r2 + movs r4, #0 + b _0829B41A +_0829B404: + movs r3, #0 + subs r2, #0x14 + cmp r2, #0x1e + bgt _0829B416 + movs r0, #0x1f + subs r0, r0, r2 + movs r1, #1 + lsls r1, r0 + b _0829B418 +_0829B416: + movs r1, #1 +_0829B418: + adds r4, r1, #0 +_0829B41A: + adds r1, r4, #0 + adds r0, r3, #0 + pop {r4, pc} + thumb_func_end _ulp + + thumb_func_start _b2d +_b2d: @ 0x0829B420 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r1, #0 + movs r1, #0x14 + adds r1, r1, r0 + mov r8, r1 + ldr r0, [r0, #0x10] + lsls r0, r0, #2 + adds r5, r1, r0 + subs r5, #4 + ldr r2, [r5] + adds r0, r2, #0 + str r2, [sp] + bl _hi0bits + adds r3, r0, #0 + movs r0, #0x20 + subs r0, r0, r3 + str r0, [r4] + ldr r2, [sp] + cmp r3, #0xa + bgt _0829B480 + movs r0, #0xb + subs r0, r0, r3 + adds r1, r2, #0 + lsrs r1, r0 + ldr r0, _0829B468 + adds r6, r1, #0 + orrs r6, r0 + cmp r5, r8 + bls _0829B46C + subs r5, #4 + ldr r1, [r5] + b _0829B46E + .align 2, 0 +_0829B468: .4byte 0x3FF00000 +_0829B46C: + movs r1, #0 +_0829B46E: + adds r0, r3, #0 + adds r0, #0x15 + lsls r2, r0 + movs r0, #0xb + subs r0, r0, r3 + lsrs r1, r0 + adds r7, r2, #0 + orrs r7, r1 + b _0829B4CC +_0829B480: + cmp r5, r8 + bls _0829B48A + subs r5, #4 + ldr r4, [r5] + b _0829B48C +_0829B48A: + movs r4, #0 +_0829B48C: + subs r3, #0xb + cmp r3, #0 + beq _0829B4C4 + lsls r2, r3 + movs r0, #0x20 + subs r0, r0, r3 + adds r1, r4, #0 + lsrs r1, r0 + ldr r0, _0829B4B0 + orrs r1, r0 + adds r6, r2, #0 + orrs r6, r1 + cmp r5, r8 + bls _0829B4B4 + subs r5, #4 + ldr r2, [r5] + b _0829B4B6 + .align 2, 0 +_0829B4B0: .4byte 0x3FF00000 +_0829B4B4: + movs r2, #0 +_0829B4B6: + lsls r4, r3 + movs r0, #0x20 + subs r0, r0, r3 + lsrs r2, r0 + adds r7, r4, #0 + orrs r7, r2 + b _0829B4CC +_0829B4C4: + ldr r0, _0829B4D8 + adds r6, r2, #0 + orrs r6, r0 + adds r7, r4, #0 +_0829B4CC: + adds r1, r7, #0 + adds r0, r6, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B4D8: .4byte 0x3FF00000 + thumb_func_end _b2d + + thumb_func_start _d2b +_d2b: @ 0x0829B4DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r3 + ldr r3, [sp, #0x28] + mov sl, r3 + adds r5, r2, #0 + adds r4, r1, #0 + movs r1, #1 + bl _Balloc + adds r6, r0, #0 + movs r0, #0x14 + adds r0, r0, r6 + mov r8, r0 + ldr r2, _0829B544 + adds r1, r4, #0 + ands r2, r1 + str r2, [sp, #4] + ldr r0, _0829B548 + ands r4, r0 + lsrs r7, r4, #0x14 + cmp r7, #0 + beq _0829B51A + movs r0, #0x80 + lsls r0, r0, #0xd + orrs r0, r2 + str r0, [sp, #4] +_0829B51A: + str r5, [sp] + cmp r5, #0 + beq _0829B564 + mov r0, sp + bl _lo0bits + adds r2, r0, #0 + cmp r2, #0 + beq _0829B54C + movs r0, #0x20 + subs r0, r0, r2 + ldr r1, [sp, #4] + lsls r1, r0 + ldr r0, [sp] + orrs r0, r1 + str r0, [r6, #0x14] + ldr r0, [sp, #4] + lsrs r0, r2 + str r0, [sp, #4] + b _0829B550 + .align 2, 0 +_0829B544: .4byte 0x000FFFFF +_0829B548: .4byte 0x7FFFFFFF +_0829B54C: + ldr r0, [sp] + str r0, [r6, #0x14] +_0829B550: + ldr r0, [sp, #4] + mov r1, r8 + str r0, [r1, #4] + movs r1, #1 + cmp r0, #0 + beq _0829B55E + movs r1, #2 +_0829B55E: + str r1, [r6, #0x10] + adds r4, r1, #0 + b _0829B578 +_0829B564: + add r0, sp, #4 + bl _lo0bits + adds r2, r0, #0 + ldr r0, [sp, #4] + str r0, [r6, #0x14] + movs r0, #1 + str r0, [r6, #0x10] + movs r4, #1 + adds r2, #0x20 +_0829B578: + cmp r7, #0 + beq _0829B594 + ldr r3, _0829B590 + adds r0, r2, r3 + adds r0, r7, r0 + mov r1, sb + str r0, [r1] + movs r0, #0x35 + subs r0, r0, r2 + mov r3, sl + str r0, [r3] + b _0829B5B0 + .align 2, 0 +_0829B590: .4byte 0xFFFFFBCD +_0829B594: + ldr r1, _0829B5C0 + adds r0, r2, r1 + mov r3, sb + str r0, [r3] + lsls r0, r4, #2 + add r0, r8 + subs r0, #4 + ldr r0, [r0] + bl _hi0bits + lsls r1, r4, #5 + subs r1, r1, r0 + mov r0, sl + str r1, [r0] +_0829B5B0: + adds r0, r6, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B5C0: .4byte 0xFFFFFBCE + thumb_func_end _d2b + + thumb_func_start _ratio +_ratio: @ 0x0829B5C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + mov r1, sp + bl _b2d + str r0, [sp, #8] + str r1, [sp, #0xc] + add r1, sp, #4 + adds r0, r5, #0 + bl _b2d + adds r7, r1, #0 + adds r6, r0, #0 + ldr r2, [sp] + ldr r0, [sp, #4] + subs r2, r2, r0 + ldr r0, [r4, #0x10] + ldr r1, [r5, #0x10] + subs r0, r0, r1 + lsls r0, r0, #5 + adds r0, r2, r0 + cmp r0, #0 + ble _0829B600 + lsls r0, r0, #0x14 + ldr r1, [sp, #8] + adds r0, r1, r0 + str r0, [sp, #8] + b _0829B604 +_0829B600: + lsls r0, r0, #0x14 + subs r6, r6, r0 +_0829B604: + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + adds r3, r7, #0 + adds r2, r6, #0 + bl __divdf3 + add sp, #0x10 + pop {r4, r5, r6, r7, pc} + thumb_func_end _ratio + + thumb_func_start _mprec_log10 +_mprec_log10: @ 0x0829B614 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0829B630 + ldr r0, _0829B62C + cmp r4, #0x17 + bgt _0829B638 + ldr r0, _0829B634 + lsls r1, r4, #3 + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, [r1, #4] + b _0829B64A + .align 2, 0 +_0829B62C: .4byte 0x3FF00000 +_0829B630: .4byte 0x00000000 +_0829B634: .4byte gUnknown_890F234 +_0829B638: + cmp r4, #0 + ble _0829B64A +_0829B63C: + ldr r3, _0829B650 + ldr r2, _0829B64C + bl __muldf3 + subs r4, #1 + cmp r4, #0 + bgt _0829B63C +_0829B64A: + pop {r4, pc} + .align 2, 0 +_0829B64C: .4byte 0x40240000 +_0829B650: .4byte 0x00000000 + thumb_func_end _mprec_log10 + + thumb_func_start isinf +isinf: @ 0x0829B654 + ldr r3, _0829B670 + ands r3, r0 + rsbs r2, r1, #0 + orrs r2, r1 + lsrs r2, r2, #0x1f + orrs r3, r2 + ldr r0, _0829B674 + subs r3, r0, r3 + rsbs r0, r3, #0 + orrs r3, r0 + lsrs r3, r3, #0x1f + movs r0, #1 + subs r0, r0, r3 + bx lr + .align 2, 0 +_0829B670: .4byte 0x7FFFFFFF +_0829B674: .4byte 0x7FF00000 + thumb_func_end isinf + + thumb_func_start isnan +isnan: @ 0x0829B678 + ldr r3, _0829B690 + ands r3, r0 + rsbs r2, r1, #0 + orrs r2, r1 + lsrs r2, r2, #0x1f + orrs r3, r2 + ldr r0, _0829B694 + subs r3, r0, r3 + lsrs r3, r3, #0x1f + adds r0, r3, #0 + bx lr + .align 2, 0 +_0829B690: .4byte 0x7FFFFFFF +_0829B694: .4byte 0x7FF00000 + thumb_func_end isnan + + thumb_func_start _sbrk_r +_sbrk_r: @ 0x0829B698 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + ldr r4, _0829B6C0 + movs r1, #0 + str r1, [r4] + bl _sbrk + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829B6BA + ldr r0, [r4] + cmp r0, #0 + beq _0829B6BA + str r0, [r5] +_0829B6BA: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829B6C0: .4byte gUnknown_300764C + thumb_func_end _sbrk_r + + thumb_func_start __sread +__sread: @ 0x0829B6C4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r0, [r5, #0x54] + movs r2, #0xe + ldrsh r1, [r5, r2] + adds r2, r4, #0 + bl _read_r + adds r1, r0, #0 + cmp r1, #0 + blt _0829B6E6 + ldr r0, [r5, #0x50] + adds r0, r0, r1 + str r0, [r5, #0x50] + b _0829B6EE +_0829B6E6: + ldr r0, _0829B6F4 + ldrh r2, [r5, #0xc] + ands r0, r2 + strh r0, [r5, #0xc] +_0829B6EE: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829B6F4: .4byte 0xFFFFEFFF + thumb_func_end __sread + + thumb_func_start __swrite +__swrite: @ 0x0829B6F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + movs r0, #0x80 + lsls r0, r0, #1 + ldrh r1, [r4, #0xc] + ands r0, r1 + cmp r0, #0 + beq _0829B71A + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #2 + bl _lseek_r +_0829B71A: + ldr r0, _0829B734 + ldrh r1, [r4, #0xc] + ands r0, r1 + strh r0, [r4, #0xc] + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + adds r2, r5, #0 + adds r3, r6, #0 + bl _write_r + pop {r4, r5, r6, pc} + .align 2, 0 +_0829B734: .4byte 0xFFFFEFFF + thumb_func_end __swrite + + thumb_func_start __sseek +__sseek: @ 0x0829B738 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r0, [r5, #0x54] + movs r2, #0xe + ldrsh r1, [r5, r2] + adds r2, r4, #0 + bl _lseek_r + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829B764 + ldr r0, _0829B760 + ldrh r2, [r5, #0xc] + ands r0, r2 + strh r0, [r5, #0xc] + b _0829B772 + .align 2, 0 +_0829B760: .4byte 0xFFFFEFFF +_0829B764: + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r2, #0 + ldrh r2, [r5, #0xc] + orrs r0, r2 + strh r0, [r5, #0xc] + str r1, [r5, #0x50] +_0829B772: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end __sseek + + thumb_func_start __sclose +__sclose: @ 0x0829B778 + push {lr} + ldr r2, [r0, #0x54] + movs r3, #0xe + ldrsh r1, [r0, r3] + adds r0, r2, #0 + bl _close_r + pop {pc} + thumb_func_end __sclose + + thumb_func_start strlen +strlen: @ 0x0829B788 + push {r4, r5, lr} + adds r1, r0, #0 + adds r5, r1, #0 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829B7C0 + adds r2, r1, #0 + ldr r1, [r2] + ldr r4, _0829B7A4 + adds r0, r1, r4 + bics r0, r1 + ldr r3, _0829B7A8 + b _0829B7B4 + .align 2, 0 +_0829B7A4: .4byte 0xFEFEFEFF +_0829B7A8: .4byte 0x80808080 +_0829B7AC: + adds r2, #4 + ldr r1, [r2] + adds r0, r1, r4 + bics r0, r1 +_0829B7B4: + ands r0, r3 + cmp r0, #0 + beq _0829B7AC + adds r1, r2, #0 + b _0829B7C0 +_0829B7BE: + adds r1, #1 +_0829B7C0: + ldrb r0, [r1] + cmp r0, #0 + bne _0829B7BE + subs r0, r1, r5 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end strlen + + thumb_func_start sub_0829B7CC +sub_0829B7CC: @ 0x0829B7CC + adds r3, r0, #0 + movs r1, #0 + ldr r2, _0829B7D4 + b _0829B7E0 + .align 2, 0 +_0829B7D4: .4byte gUnknown_3001AB0 +_0829B7D8: + adds r2, #8 + adds r1, #1 + cmp r1, #0x13 + bgt _0829B7E6 +_0829B7E0: + ldr r0, [r2] + cmp r0, r3 + bne _0829B7D8 +_0829B7E6: + adds r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0829B7CC + + thumb_func_start sub_0829B7EC +sub_0829B7EC: @ 0x0829B7EC + adds r2, r0, #0 + ldr r0, _0829B800 + ldr r1, [r0] + ldr r0, [r1, #4] + movs r3, #0xe + ldrsh r0, [r0, r3] + cmp r2, r0 + bne _0829B808 + ldr r0, _0829B804 + b _0829B82E + .align 2, 0 +_0829B800: .4byte gUnknown_203CF1C +_0829B804: .4byte gUnknown_3001AA4 +_0829B808: + ldr r0, [r1, #8] + movs r3, #0xe + ldrsh r0, [r0, r3] + cmp r2, r0 + bne _0829B81C + ldr r0, _0829B818 + b _0829B82E + .align 2, 0 +_0829B818: .4byte gUnknown_3001AA8 +_0829B81C: + ldr r0, [r1, #0xc] + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r2, r0 + beq _0829B82C + adds r0, r2, #0 + subs r0, #0x20 + b _0829B830 +_0829B82C: + ldr r0, _0829B834 +_0829B82E: + ldr r0, [r0] +_0829B830: + bx lr + .align 2, 0 +_0829B834: .4byte gUnknown_3001AAC + thumb_func_end sub_0829B7EC + + thumb_func_start initialise_monitor_handles +initialise_monitor_handles: @ 0x0829B838 + push {r4, r5, lr} + sub sp, #0xc + ldr r4, _0829B894 + str r4, [sp] + movs r3, #3 + str r3, [sp, #8] + movs r0, #0 + str r0, [sp, #4] + movs r5, #1 + adds r0, r5, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + ldr r5, _0829B898 + str r2, [r5] + str r4, [sp] + str r3, [sp, #8] + movs r0, #4 + str r0, [sp, #4] + ldr r3, _0829B89C + movs r4, #1 + adds r0, r4, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + ldr r0, _0829B8A0 + str r2, [r0] + str r2, [r3] + ldr r2, _0829B8A4 + adds r1, r2, #0 + subs r4, #2 + adds r0, r2, #0 + adds r0, #0x98 +_0829B87A: + str r4, [r0] + subs r0, #8 + cmp r0, r1 + bge _0829B87A + movs r0, #0 + ldr r1, [r5] + str r1, [r2] + str r0, [r2, #4] + ldr r1, [r3] + str r1, [r2, #8] + str r0, [r2, #0xc] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0829B894: .4byte gUnknown_890F34C +_0829B898: .4byte gUnknown_3001AA4 +_0829B89C: .4byte gUnknown_3001AA8 +_0829B8A0: .4byte gUnknown_3001AAC +_0829B8A4: .4byte gUnknown_3001AB0 + thumb_func_end initialise_monitor_handles + + thumb_func_start sub_0829B8A8 +sub_0829B8A8: @ 0x0829B8A8 + push {r4, lr} + movs r3, #0x13 + movs r4, #0 + adds r0, r3, #0 + adds r1, r4, #0 + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end sub_0829B8A8 + + thumb_func_start sub_0829B8BC +sub_0829B8BC: @ 0x0829B8BC + push {r4, r5, lr} + adds r5, r0, #0 + bl __errno + adds r4, r0, #0 + bl sub_0829B8A8 + str r0, [r4] + adds r0, r5, #0 + pop {r4, r5, pc} + thumb_func_end sub_0829B8BC + + thumb_func_start sub_0829B8D0 +sub_0829B8D0: @ 0x0829B8D0 + push {lr} + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0829B8E0 + adds r0, r1, #0 + b _0829B8E6 +_0829B8E0: + adds r0, r1, #0 + bl sub_0829B8BC +_0829B8E6: + pop {pc} + thumb_func_end sub_0829B8D0 + + thumb_func_start _swiread +_swiread: @ 0x0829B8E8 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_0829B7EC + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r3, #6 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _swiread + + thumb_func_start _read +_read: @ 0x0829B90C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + bl sub_0829B7EC + bl sub_0829B7CC + adds r6, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl _swiread + cmp r0, #0 + bge _0829B936 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0829B8BC + b _0829B94C +_0829B936: + subs r2, r7, r0 + cmp r6, #0x14 + beq _0829B94A + ldr r0, _0829B950 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] +_0829B94A: + adds r0, r2, #0 +_0829B94C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B950: .4byte gUnknown_3001AB0 + thumb_func_end _read + + thumb_func_start _swilseek +_swilseek: @ 0x0829B954 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + adds r5, r1, #0 + adds r4, r2, #0 + bl sub_0829B7EC + adds r7, r0, #0 + bl sub_0829B7CC + adds r6, r0, #0 + cmp r4, #1 + bne _0829B98A + cmp r6, #0x14 + bne _0829B97C + movs r0, #1 + rsbs r0, r0, #0 + b _0829B9CC +_0829B97C: + ldr r0, _0829B9D4 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r5, r5, r0 + movs r4, #0 +_0829B98A: + cmp r4, #2 + bne _0829B99C + str r7, [sp] + movs r3, #0xc + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r5, r5, r2 +_0829B99C: + mov r0, r8 + bl sub_0829B7EC + str r0, [sp] + str r5, [sp, #4] + movs r3, #0xa + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + cmp r6, #0x14 + beq _0829B9C2 + cmp r2, #0 + bne _0829B9C2 + ldr r0, _0829B9D4 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + str r5, [r1] +_0829B9C2: + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, #0 + bne _0829B9CC + adds r0, r5, #0 +_0829B9CC: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B9D4: .4byte gUnknown_3001AB0 + thumb_func_end _swilseek + + thumb_func_start _lseek +_lseek: @ 0x0829B9D8 + push {lr} + bl _swilseek + bl sub_0829B8D0 + pop {pc} + thumb_func_end _lseek + + thumb_func_start _swiwrite +_swiwrite: @ 0x0829B9E4 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_0829B7EC + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r3, #5 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _swiwrite + + thumb_func_start _write +_write: @ 0x0829BA08 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_0829B7EC + bl sub_0829B7CC + adds r7, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl _swiwrite + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0829BA30 + cmp r0, r6 + bne _0829BA38 +_0829BA30: + adds r0, r1, #0 + bl sub_0829B8BC + b _0829BA4E +_0829BA38: + subs r2, r6, r0 + cmp r7, #0x14 + beq _0829BA4C + ldr r0, _0829BA50 + lsls r1, r7, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] +_0829BA4C: + adds r0, r2, #0 +_0829BA4E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829BA50: .4byte gUnknown_3001AB0 + thumb_func_end _write + + thumb_func_start _swiopen +_swiopen: @ 0x0829BA54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r7, r0, #0 + adds r4, r1, #0 + movs r5, #0 + movs r6, #1 + rsbs r6, r6, #0 + adds r0, r6, #0 + bl sub_0829B7CC + mov r8, r0 + cmp r0, #0x14 + bne _0829BA76 + adds r0, r6, #0 + b _0829BAEA +_0829BA76: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0829BA80 + movs r5, #2 +_0829BA80: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0829BA8E + movs r0, #4 + orrs r5, r0 +_0829BA8E: + movs r0, #0x80 + lsls r0, r0, #3 + ands r0, r4 + cmp r0, #0 + beq _0829BA9C + movs r0, #4 + orrs r5, r0 +_0829BA9C: + movs r1, #8 + ands r4, r1 + cmp r4, #0 + beq _0829BAAC + movs r0, #5 + rsbs r0, r0, #0 + ands r5, r0 + orrs r5, r1 +_0829BAAC: + str r7, [sp] + adds r0, r7, #0 + bl strlen + str r0, [sp, #8] + str r5, [sp, #4] + movs r2, #1 + adds r0, r2, #0 + mov r1, sp + svc #0xab + adds r3, r0, #0 + cmp r3, #0 + blt _0829BAE4 + ldr r0, _0829BAE0 + mov r1, r8 + lsls r2, r1, #3 + adds r1, r2, r0 + str r3, [r1] + adds r0, #4 + adds r2, r2, r0 + movs r0, #0 + str r0, [r2] + adds r0, r3, #0 + adds r0, #0x20 + b _0829BAEA + .align 2, 0 +_0829BAE0: .4byte gUnknown_3001AB0 +_0829BAE4: + adds r0, r3, #0 + bl sub_0829B8BC +_0829BAEA: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _swiopen + + thumb_func_start _open +_open: @ 0x0829BAF4 + push {r1, r2, r3} + push {lr} + ldr r1, [sp, #4] + bl _swiopen + bl sub_0829B8D0 + pop {r3} + add sp, #0xc + bx r3 + thumb_func_end _open + + thumb_func_start _swiclose +_swiclose: @ 0x0829BB08 + push {lr} + sub sp, #4 + bl sub_0829B7EC + str r0, [sp] + bl sub_0829B7CC + adds r1, r0, #0 + cmp r1, #0x14 + beq _0829BB28 + ldr r0, _0829BB38 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] +_0829BB28: + movs r3, #2 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #4 + pop {pc} + .align 2, 0 +_0829BB38: .4byte gUnknown_3001AB0 + thumb_func_end _swiclose + + thumb_func_start _close +_close: @ 0x0829BB3C + push {lr} + bl _swiclose + bl sub_0829B8D0 + pop {pc} + thumb_func_end _close + + thumb_func_start _exit +_exit: @ 0x0829BB48 + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BB64 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BB64: .4byte 0x00020026 + thumb_func_end _exit + + thumb_func_start _kill +_kill: @ 0x0829BB68 + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BB84 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BB84: .4byte 0x00020026 + thumb_func_end _kill + + thumb_func_start _getpid +_getpid: @ 0x0829BB88 + movs r0, #1 + bx lr + thumb_func_end _getpid + + thumb_func_start _sbrk +_sbrk: @ 0x0829BB8C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _0829BBBC + ldr r0, [r4] + cmp r0, #0 + bne _0829BB9C + ldr r0, _0829BBC0 + str r0, [r4] +_0829BB9C: + ldr r5, [r4] + adds r0, r5, r6 + cmp r0, sp + bls _0829BBB2 + ldr r1, _0829BBC4 + movs r0, #1 + movs r2, #0x20 + bl _write + bl abort +_0829BBB2: + ldr r0, [r4] + adds r0, r0, r6 + str r0, [r4] + adds r0, r5, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0829BBBC: .4byte gUnknown_3001AA0 +_0829BBC0: .4byte gUnknown_88BA568 +_0829BBC4: .4byte gUnknown_890F350 + thumb_func_end _sbrk + + thumb_func_start _fstat +_fstat: @ 0x0829BBC8 + movs r0, #0x80 + lsls r0, r0, #6 + str r0, [r1, #4] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end _fstat + + thumb_func_start _unlink +_unlink: @ 0x0829BBD4 + movs r0, #1 + rsbs r0, r0, #0 + bx lr + .align 2, 0 + thumb_func_end _unlink + + thumb_func_start _raise +_raise: @ 0x0829BBDC + bx lr + .align 2, 0 + thumb_func_end _raise + + thumb_func_start _gettimeofday +_gettimeofday: @ 0x0829BBE0 + push {r4, r5, lr} + adds r2, r0, #0 + adds r3, r1, #0 + cmp r2, #0 + beq _0829BBFE + movs r4, #0x11 + movs r5, #0 + adds r0, r4, #0 + adds r1, r5, #0 + svc #0xab + adds r5, r0, #0 + adds r4, r5, #0 + str r4, [r2] + movs r0, #0 + str r0, [r2, #4] +_0829BBFE: + cmp r3, #0 + beq _0829BC08 + movs r0, #0 + str r0, [r3] + str r0, [r3, #4] +_0829BC08: + movs r0, #0 + pop {r4, r5, pc} + thumb_func_end _gettimeofday + + thumb_func_start _times +_times: @ 0x0829BC0C + push {r4, r5, lr} + adds r2, r0, #0 + movs r4, #0x10 + movs r5, #0 + adds r0, r4, #0 + adds r1, r5, #0 + svc #0xab + adds r3, r0, #0 + cmp r2, #0 + beq _0829BC2A + str r3, [r2] + movs r0, #0 + str r0, [r2, #4] + str r0, [r2, #8] + str r0, [r2, #0xc] +_0829BC2A: + adds r0, r3, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _times + + thumb_func_start _write_r +_write_r: @ 0x0829BC30 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BC5C + movs r3, #0 + str r3, [r4] + bl _write + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BC56 + ldr r0, [r4] + cmp r0, #0 + beq _0829BC56 + str r0, [r5] +_0829BC56: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BC5C: .4byte gUnknown_300764C + thumb_func_end _write_r + + thumb_func_start _calloc_r +_calloc_r: @ 0x0829BC60 + push {r4, lr} + muls r1, r2, r1 + bl _malloc_r + adds r4, r0, #0 + cmp r4, #0 + bne _0829BC72 + movs r0, #0 + b _0829BCB6 +_0829BC72: + adds r0, r4, #0 + subs r0, #8 + ldr r0, [r0, #4] + movs r1, #4 + rsbs r1, r1, #0 + ands r0, r1 + subs r2, r0, #4 + cmp r2, #0x24 + bhi _0829BCAC + adds r1, r4, #0 + cmp r2, #0x13 + bls _0829BCA2 + movs r0, #0 + stm r1!, {r0} + str r0, [r4, #4] + adds r1, #4 + cmp r2, #0x1b + bls _0829BCA2 + stm r1!, {r0} + stm r1!, {r0} + cmp r2, #0x23 + bls _0829BCA2 + stm r1!, {r0} + stm r1!, {r0} +_0829BCA2: + movs r0, #0 + stm r1!, {r0} + stm r1!, {r0} + str r0, [r1] + b _0829BCB4 +_0829BCAC: + adds r0, r4, #0 + movs r1, #0 + bl memset +_0829BCB4: + adds r0, r4, #0 +_0829BCB6: + pop {r4, pc} + thumb_func_end _calloc_r + + thumb_func_start _close_r +_close_r: @ 0x0829BCB8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + ldr r4, _0829BCE0 + movs r1, #0 + str r1, [r4] + bl _close + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BCDA + ldr r0, [r4] + cmp r0, #0 + beq _0829BCDA + str r0, [r5] +_0829BCDA: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BCE0: .4byte gUnknown_300764C + thumb_func_end _close_r + + thumb_func_start __errno +__errno: @ 0x0829BCE4 + ldr r0, _0829BCEC + ldr r0, [r0] + bx lr + .align 2, 0 +_0829BCEC: .4byte gUnknown_203CF1C + thumb_func_end __errno + + thumb_func_start _fstat_r +_fstat_r: @ 0x0829BCF0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + ldr r4, _0829BD18 + movs r2, #0 + str r2, [r4] + bl _fstat + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD14 + ldr r0, [r4] + cmp r0, #0 + beq _0829BD14 + str r0, [r5] +_0829BD14: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BD18: .4byte gUnknown_300764C + thumb_func_end _fstat_r + + thumb_func_start abort +abort: @ 0x0829BD1C + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BD38 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BD38: .4byte 0x00020022 + thumb_func_end abort + + thumb_func_start isatty +isatty: @ 0x0829BD3C + movs r0, #1 + bx lr + thumb_func_end isatty + + thumb_func_start alarm +alarm: @ 0x0829BD40 + bx lr + .align 2, 0 + thumb_func_end alarm + + thumb_func_start _lseek_r +_lseek_r: @ 0x0829BD44 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BD70 + movs r3, #0 + str r3, [r4] + bl _lseek + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD6A + ldr r0, [r4] + cmp r0, #0 + beq _0829BD6A + str r0, [r5] +_0829BD6A: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BD70: .4byte gUnknown_300764C + thumb_func_end _lseek_r + + thumb_func_start _read_r +_read_r: @ 0x0829BD74 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BDA0 + movs r3, #0 + str r3, [r4] + bl _read + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD9A + ldr r0, [r4] + cmp r0, #0 + beq _0829BD9A + str r0, [r5] +_0829BD9A: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BDA0: .4byte gUnknown_300764C diff --git a/asm/libgcc.s b/asm/libgcc.s new file mode 100644 index 0000000..a808181 --- /dev/null +++ b/asm/libgcc.s @@ -0,0 +1,5046 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start _call_via_r0 +_call_via_r0: @ 0x08295A08 + bx r0 + nop + thumb_func_end _call_via_r0 + + thumb_func_start _call_via_r1 +_call_via_r1: @ 0x08295A0C + bx r1 + nop + thumb_func_end _call_via_r1 + + thumb_func_start _call_via_r2 +_call_via_r2: @ 0x08295A10 + bx r2 + nop + thumb_func_end _call_via_r2 + + thumb_func_start _call_via_r3 +_call_via_r3: @ 0x08295A14 + bx r3 + nop + thumb_func_end _call_via_r3 + + thumb_func_start _call_via_r4 +_call_via_r4: @ 0x08295A18 + bx r4 + nop + thumb_func_end _call_via_r4 + + thumb_func_start _call_via_r5 +_call_via_r5: @ 0x08295A1C + bx r5 + nop + thumb_func_end _call_via_r5 + + thumb_func_start _call_via_r6 +_call_via_r6: @ 0x08295A20 + bx r6 + nop + thumb_func_end _call_via_r6 + + thumb_func_start _call_via_r7 +_call_via_r7: @ 0x08295A24 + bx r7 + nop + thumb_func_end _call_via_r7 + + thumb_func_start _call_via_r8 +_call_via_r8: @ 0x08295A28 + bx r8 + nop + thumb_func_end _call_via_r8 + + thumb_func_start _call_via_r9 +_call_via_r9: @ 0x08295A2C + bx sb + nop + thumb_func_end _call_via_r9 + + thumb_func_start _call_via_sl +_call_via_sl: @ 0x08295A30 + bx sl + nop + thumb_func_end _call_via_sl + + thumb_func_start _call_via_fp +_call_via_fp: @ 0x08295A34 + bx fp + nop + thumb_func_end _call_via_fp + + thumb_func_start _call_via_ip +_call_via_ip: @ 0x08295A38 + bx ip + nop + thumb_func_end _call_via_ip + + thumb_func_start _call_via_sp +_call_via_sp: @ 0x08295A3C + bx sp + nop + thumb_func_end _call_via_sp + + thumb_func_start _call_via_lr +_call_via_lr: @ 0x08295A40 + bx lr + nop + thumb_func_end _call_via_lr + + thumb_func_start __divdi3 +__divdi3: @ 0x08295A44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + movs r4, #0 + str r4, [sp] + adds r5, r1, #0 + adds r4, r0, #0 + cmp r5, #0 + bge _08295A74 + ldr r0, [sp] + mvns r0, r0 + str r0, [sp] + rsbs r0, r4, #0 + adds r6, r0, #0 + rsbs r1, r5, #0 + cmp r0, #0 + beq _08295A6E + subs r1, #1 +_08295A6E: + adds r7, r1, #0 + adds r5, r7, #0 + adds r4, r6, #0 +_08295A74: + cmp r3, #0 + bge _08295A90 + ldr r1, [sp] + mvns r1, r1 + str r1, [sp] + rsbs r0, r2, #0 + str r0, [sp, #4] + rsbs r2, r3, #0 + cmp r0, #0 + beq _08295A8A + subs r2, #1 +_08295A8A: + str r2, [sp, #8] + ldr r2, [sp, #4] + ldr r3, [sp, #8] +_08295A90: + adds r7, r2, #0 + adds r6, r3, #0 + mov sl, r4 + mov r8, r5 + cmp r6, #0 + beq _08295A9E + b _08295CEC +_08295A9E: + cmp r7, r8 + bls _08295B78 + ldr r0, _08295AB4 + cmp r7, r0 + bhi _08295AB8 + movs r1, #0 + cmp r7, #0xff + bls _08295AC2 + movs r1, #8 + b _08295AC2 + .align 2, 0 +_08295AB4: .4byte 0x0000FFFF +_08295AB8: + ldr r0, _08295B6C + movs r1, #0x18 + cmp r7, r0 + bhi _08295AC2 + movs r1, #0x10 +_08295AC2: + ldr r0, _08295B70 + lsrs r2, r1 + adds r0, r2, r0 + ldrb r0, [r0] + adds r0, r0, r1 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + beq _08295AEA + lsls r7, r2 + mov r3, r8 + lsls r3, r2 + subs r1, r1, r2 + mov r0, sl + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, sl + lsls r4, r2 + mov sl, r4 +_08295AEA: + lsrs r0, r7, #0x10 + mov sb, r0 + ldr r1, _08295B74 + ands r1, r7 + str r1, [sp, #0xc] + mov r0, r8 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + mov r0, r8 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r3, [sp, #0xc] + adds r2, r6, #0 + muls r2, r3, r2 + lsls r4, r4, #0x10 + mov r1, sl + lsrs r0, r1, #0x10 + orrs r4, r0 + cmp r4, r2 + bhs _08295B2A + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _08295B2A + cmp r4, r2 + bhs _08295B2A + subs r6, #1 + adds r4, r4, r7 +_08295B2A: + subs r4, r4, r2 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r1, r0, #0 + ldr r3, [sp, #0xc] + adds r2, r1, #0 + muls r2, r3, r2 + lsls r5, r5, #0x10 + ldr r0, _08295B74 + mov r4, sl + ands r4, r0 + orrs r5, r4 + cmp r5, r2 + bhs _08295B62 + subs r1, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _08295B62 + cmp r5, r2 + bhs _08295B62 + subs r1, #1 +_08295B62: + lsls r6, r6, #0x10 + orrs r6, r1 + movs r0, #0 + str r0, [sp, #0x10] + b _08295E42 + .align 2, 0 +_08295B6C: .4byte 0x00FFFFFF +_08295B70: .4byte gUnknown_890EF58 +_08295B74: .4byte 0x0000FFFF +_08295B78: + cmp r2, #0 + bne _08295B86 + movs r0, #1 + movs r1, #0 + bl __udivsi3 + adds r7, r0, #0 +_08295B86: + adds r1, r7, #0 + ldr r0, _08295B98 + cmp r7, r0 + bhi _08295B9C + movs r2, #0 + cmp r7, #0xff + bls _08295BA6 + movs r2, #8 + b _08295BA6 + .align 2, 0 +_08295B98: .4byte 0x0000FFFF +_08295B9C: + ldr r0, _08295BC4 + movs r2, #0x18 + cmp r7, r0 + bhi _08295BA6 + movs r2, #0x10 +_08295BA6: + ldr r0, _08295BC8 + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r0, r2 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + bne _08295BCC + mov r1, r8 + subs r1, r1, r7 + mov r8, r1 + movs r2, #1 + str r2, [sp, #0x10] + b _08295C6A + .align 2, 0 +_08295BC4: .4byte 0x00FFFFFF +_08295BC8: .4byte gUnknown_890EF58 +_08295BCC: + subs r1, r1, r2 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, sl + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, sl + lsls r4, r2 + mov sl, r4 + lsrs r0, r7, #0x10 + mov sb, r0 + ldr r1, _08295CE8 + ands r1, r7 + str r1, [sp, #0x14] + adds r0, r5, #0 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + adds r0, r5, #0 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r2, [sp, #0x14] + adds r1, r6, #0 + muls r1, r2, r1 + lsls r4, r4, #0x10 + mov r3, r8 + lsrs r0, r3, #0x10 + orrs r4, r0 + cmp r4, r1 + bhs _08295C26 + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _08295C26 + cmp r4, r1 + bhs _08295C26 + subs r6, #1 + adds r4, r4, r7 +_08295C26: + subs r4, r4, r1 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r2, r0, #0 + ldr r4, [sp, #0x14] + adds r1, r2, #0 + muls r1, r4, r1 + lsls r5, r5, #0x10 + ldr r0, _08295CE8 + mov r3, r8 + ands r3, r0 + orrs r5, r3 + cmp r5, r1 + bhs _08295C60 + subs r2, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _08295C60 + cmp r5, r1 + bhs _08295C60 + subs r2, #1 + adds r5, r5, r7 +_08295C60: + lsls r6, r6, #0x10 + orrs r6, r2 + str r6, [sp, #0x10] + subs r1, r5, r1 + mov r8, r1 +_08295C6A: + lsrs r4, r7, #0x10 + mov sb, r4 + ldr r0, _08295CE8 + ands r0, r7 + str r0, [sp, #0x18] + mov r0, r8 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + mov r0, r8 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r1, [sp, #0x18] + adds r2, r6, #0 + muls r2, r1, r2 + lsls r4, r4, #0x10 + mov r3, sl + lsrs r0, r3, #0x10 + orrs r4, r0 + cmp r4, r2 + bhs _08295CAA + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _08295CAA + cmp r4, r2 + bhs _08295CAA + subs r6, #1 + adds r4, r4, r7 +_08295CAA: + subs r4, r4, r2 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r1, r0, #0 + ldr r4, [sp, #0x18] + adds r2, r1, #0 + muls r2, r4, r2 + lsls r5, r5, #0x10 + ldr r0, _08295CE8 + mov r3, sl + ands r3, r0 + orrs r5, r3 + cmp r5, r2 + bhs _08295CE2 + subs r1, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _08295CE2 + cmp r5, r2 + bhs _08295CE2 + subs r1, #1 +_08295CE2: + lsls r6, r6, #0x10 + orrs r6, r1 + b _08295E42 + .align 2, 0 +_08295CE8: .4byte 0x0000FFFF +_08295CEC: + cmp r6, r8 + bls _08295CF8 + movs r6, #0 + movs r4, #0 + str r4, [sp, #0x10] + b _08295E42 +_08295CF8: + adds r1, r6, #0 + ldr r0, _08295D0C + cmp r6, r0 + bhi _08295D10 + movs r2, #0 + cmp r6, #0xff + bls _08295D1A + movs r2, #8 + b _08295D1A + .align 2, 0 +_08295D0C: .4byte 0x0000FFFF +_08295D10: + ldr r0, _08295D3C + movs r2, #0x18 + cmp r6, r0 + bhi _08295D1A + movs r2, #0x10 +_08295D1A: + ldr r0, _08295D40 + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r0, r2 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + bne _08295D48 + cmp r8, r6 + bhi _08295D34 + cmp sl, r7 + blo _08295D44 +_08295D34: + movs r6, #1 + mov r1, sl + b _08295E3C + .align 2, 0 +_08295D3C: .4byte 0x00FFFFFF +_08295D40: .4byte gUnknown_890EF58 +_08295D44: + movs r6, #0 + b _08295E3E +_08295D48: + subs r1, r1, r2 + lsls r6, r2 + adds r0, r7, #0 + lsrs r0, r1 + orrs r6, r0 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, sl + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, sl + lsls r4, r2 + mov sl, r4 + lsrs r0, r6, #0x10 + mov sb, r0 + ldr r1, _08295E74 + ands r1, r6 + str r1, [sp, #0x1c] + adds r0, r5, #0 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + adds r0, r5, #0 + mov r1, sb + bl __udivsi3 + adds r3, r0, #0 + ldr r2, [sp, #0x1c] + adds r1, r3, #0 + muls r1, r2, r1 + lsls r4, r4, #0x10 + mov r2, r8 + lsrs r0, r2, #0x10 + orrs r4, r0 + cmp r4, r1 + bhs _08295DAA + subs r3, #1 + adds r4, r4, r6 + cmp r4, r6 + blo _08295DAA + cmp r4, r1 + bhs _08295DAA + subs r3, #1 + adds r4, r4, r6 +_08295DAA: + subs r4, r4, r1 + adds r0, r4, #0 + mov r1, sb + str r3, [sp, #0x30] + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r2, r0, #0 + ldr r4, [sp, #0x1c] + adds r1, r2, #0 + muls r1, r4, r1 + lsls r5, r5, #0x10 + ldr r0, _08295E74 + mov r4, r8 + ands r4, r0 + orrs r5, r4 + ldr r3, [sp, #0x30] + cmp r5, r1 + bhs _08295DE8 + subs r2, #1 + adds r5, r5, r6 + cmp r5, r6 + blo _08295DE8 + cmp r5, r1 + bhs _08295DE8 + subs r2, #1 + adds r5, r5, r6 +_08295DE8: + lsls r6, r3, #0x10 + orrs r6, r2 + subs r1, r5, r1 + mov r8, r1 + ldr r0, _08295E74 + mov sb, r0 + adds r1, r6, #0 + ands r1, r0 + lsrs r3, r6, #0x10 + adds r0, r7, #0 + mov r2, sb + ands r0, r2 + lsrs r2, r7, #0x10 + adds r5, r1, #0 + muls r5, r0, r5 + adds r4, r1, #0 + muls r4, r2, r4 + adds r1, r3, #0 + muls r1, r0, r1 + muls r3, r2, r3 + lsrs r0, r5, #0x10 + adds r4, r4, r0 + adds r4, r4, r1 + cmp r4, r1 + bhs _08295E20 + movs r0, #0x80 + lsls r0, r0, #9 + adds r3, r3, r0 +_08295E20: + lsrs r0, r4, #0x10 + adds r3, r3, r0 + mov r1, sb + ands r4, r1 + lsls r0, r4, #0x10 + ands r5, r1 + adds r1, r0, r5 + cmp r3, r8 + bhi _08295E3A + cmp r3, r8 + bne _08295E3E + cmp r1, sl + bls _08295E3E +_08295E3A: + subs r6, #1 +_08295E3C: + subs r0, r1, r7 +_08295E3E: + movs r2, #0 + str r2, [sp, #0x10] +_08295E42: + str r6, [sp, #0x20] + ldr r3, [sp, #0x10] + str r3, [sp, #0x24] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + ldr r4, [sp] + cmp r4, #0 + beq _08295E64 + rsbs r0, r1, #0 + str r0, [sp, #0x28] + rsbs r1, r2, #0 + cmp r0, #0 + beq _08295E5E + subs r1, #1 +_08295E5E: + str r1, [sp, #0x2c] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] +_08295E64: + adds r0, r1, #0 + adds r1, r2, #0 + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08295E74: .4byte 0x0000FFFF + thumb_func_end __divdi3 + + thumb_func_start __divsi3 +__divsi3: @ 0x08295E78 + cmp r1, #0 + beq _08295F00 + push {r4} + adds r4, r0, #0 + eors r4, r1 + mov ip, r4 + movs r3, #1 + movs r2, #0 + cmp r1, #0 + bpl _08295E8E + rsbs r1, r1, #0 +_08295E8E: + cmp r0, #0 + bpl _08295E94 + rsbs r0, r0, #0 +_08295E94: + cmp r0, r1 + blo _08295EF2 + movs r4, #1 + lsls r4, r4, #0x1c +_08295E9C: + cmp r1, r4 + bhs _08295EAA + cmp r1, r0 + bhs _08295EAA + lsls r1, r1, #4 + lsls r3, r3, #4 + b _08295E9C +_08295EAA: + lsls r4, r4, #3 +_08295EAC: + cmp r1, r4 + bhs _08295EBA + cmp r1, r0 + bhs _08295EBA + lsls r1, r1, #1 + lsls r3, r3, #1 + b _08295EAC +_08295EBA: + cmp r0, r1 + blo _08295EC2 + subs r0, r0, r1 + orrs r2, r3 +_08295EC2: + lsrs r4, r1, #1 + cmp r0, r4 + blo _08295ECE + subs r0, r0, r4 + lsrs r4, r3, #1 + orrs r2, r4 +_08295ECE: + lsrs r4, r1, #2 + cmp r0, r4 + blo _08295EDA + subs r0, r0, r4 + lsrs r4, r3, #2 + orrs r2, r4 +_08295EDA: + lsrs r4, r1, #3 + cmp r0, r4 + blo _08295EE6 + subs r0, r0, r4 + lsrs r4, r3, #3 + orrs r2, r4 +_08295EE6: + cmp r0, #0 + beq _08295EF2 + lsrs r3, r3, #4 + beq _08295EF2 + lsrs r1, r1, #4 + b _08295EBA +_08295EF2: + adds r0, r2, #0 + mov r4, ip + cmp r4, #0 + bpl _08295EFC + rsbs r0, r0, #0 +_08295EFC: + pop {r4} + mov pc, lr +_08295F00: + push {lr} + bl __div0 + movs r0, #0 + pop {pc} + .align 2, 0 + thumb_func_end __divsi3 + + thumb_func_start __div0 +__div0: @ 0x08295F0C + mov pc, lr + .align 2, 0 + thumb_func_end __div0 + + thumb_func_start __fixunsdfsi +__fixunsdfsi: @ 0x08295F10 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r0, #0 + ldr r3, _08295F30 + ldr r2, _08295F2C + bl __gedf2 + cmp r0, #0 + bge _08295F34 + adds r1, r5, #0 + adds r0, r4, #0 + bl __fixdfsi + b _08295F4A + .align 2, 0 +_08295F2C: .4byte 0x41E00000 +_08295F30: .4byte 0x00000000 +_08295F34: + ldr r3, _08295F50 + ldr r2, _08295F4C + adds r1, r5, #0 + adds r0, r4, #0 + bl __adddf3 + bl __fixdfsi + movs r1, #0x80 + lsls r1, r1, #0x18 + adds r0, r0, r1 +_08295F4A: + pop {r4, r5, pc} + .align 2, 0 +_08295F4C: .4byte 0xC1E00000 +_08295F50: .4byte 0x00000000 + thumb_func_end __fixunsdfsi + + thumb_func_start __fixunssfsi +__fixunssfsi: @ 0x08295F54 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08295F6C + bl __gesf2 + cmp r0, #0 + bge _08295F70 + adds r0, r4, #0 + bl __fixsfsi + b _08295F82 + .align 2, 0 +_08295F6C: .4byte 0x4F000000 +_08295F70: + ldr r1, _08295F84 + adds r0, r4, #0 + bl __addsf3 + bl __fixsfsi + movs r1, #0x80 + lsls r1, r1, #0x18 + adds r0, r0, r1 +_08295F82: + pop {r4, pc} + .align 2, 0 +_08295F84: .4byte 0xCF000000 + thumb_func_end __fixunssfsi + + thumb_func_start __modsi3 +__modsi3: @ 0x08295F88 + movs r3, #1 + cmp r1, #0 + beq _0829604C + bpl _08295F92 + rsbs r1, r1, #0 +_08295F92: + push {r4} + push {r0} + cmp r0, #0 + bpl _08295F9C + rsbs r0, r0, #0 +_08295F9C: + cmp r0, r1 + blo _08296040 + movs r4, #1 + lsls r4, r4, #0x1c +_08295FA4: + cmp r1, r4 + bhs _08295FB2 + cmp r1, r0 + bhs _08295FB2 + lsls r1, r1, #4 + lsls r3, r3, #4 + b _08295FA4 +_08295FB2: + lsls r4, r4, #3 +_08295FB4: + cmp r1, r4 + bhs _08295FC2 + cmp r1, r0 + bhs _08295FC2 + lsls r1, r1, #1 + lsls r3, r3, #1 + b _08295FB4 +_08295FC2: + movs r2, #0 + cmp r0, r1 + blo _08295FCA + subs r0, r0, r1 +_08295FCA: + lsrs r4, r1, #1 + cmp r0, r4 + blo _08295FDC + subs r0, r0, r4 + mov ip, r3 + movs r4, #1 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08295FDC: + lsrs r4, r1, #2 + cmp r0, r4 + blo _08295FEE + subs r0, r0, r4 + mov ip, r3 + movs r4, #2 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08295FEE: + lsrs r4, r1, #3 + cmp r0, r4 + blo _08296000 + subs r0, r0, r4 + mov ip, r3 + movs r4, #3 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08296000: + mov ip, r3 + cmp r0, #0 + beq _0829600E + lsrs r3, r3, #4 + beq _0829600E + lsrs r1, r1, #4 + b _08295FC2 +_0829600E: + movs r4, #0xe + lsls r4, r4, #0x1c + ands r2, r4 + beq _08296040 + mov r3, ip + movs r4, #3 + rors r3, r4 + tst r2, r3 + beq _08296024 + lsrs r4, r1, #3 + adds r0, r0, r4 +_08296024: + mov r3, ip + movs r4, #2 + rors r3, r4 + tst r2, r3 + beq _08296032 + lsrs r4, r1, #2 + adds r0, r0, r4 +_08296032: + mov r3, ip + movs r4, #1 + rors r3, r4 + tst r2, r3 + beq _08296040 + lsrs r4, r1, #1 + adds r0, r0, r4 +_08296040: + pop {r4} + cmp r4, #0 + bpl _08296048 + rsbs r0, r0, #0 +_08296048: + pop {r4} + mov pc, lr +_0829604C: + push {lr} + bl __div0 + movs r0, #0 + pop {pc} + .align 2, 0 + thumb_func_end __modsi3 + + thumb_func_start __muldi3 +__muldi3: @ 0x08296058 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r3, [sp] + ldr r0, _082960C4 + mov ip, r0 + adds r2, r3, #0 + ands r2, r0 + lsrs r3, r3, #0x10 + ldr r1, [sp, #8] + adds r0, r1, #0 + mov r4, ip + ands r0, r4 + lsrs r1, r1, #0x10 + adds r5, r2, #0 + muls r5, r0, r5 + adds r4, r2, #0 + muls r4, r1, r4 + adds r2, r3, #0 + muls r2, r0, r2 + muls r3, r1, r3 + lsrs r0, r5, #0x10 + adds r4, r4, r0 + adds r4, r4, r2 + cmp r4, r2 + bhs _08296098 + movs r0, #0x80 + lsls r0, r0, #9 + adds r3, r3, r0 +_08296098: + lsrs r0, r4, #0x10 + adds r7, r3, r0 + mov r1, ip + ands r4, r1 + lsls r0, r4, #0x10 + ands r5, r1 + adds r6, r0, #0 + orrs r6, r5 + adds r1, r7, #0 + adds r0, r6, #0 + ldr r3, [sp] + ldr r4, [sp, #0xc] + adds r2, r3, #0 + muls r2, r4, r2 + ldr r5, [sp, #4] + ldr r4, [sp, #8] + adds r3, r5, #0 + muls r3, r4, r3 + adds r2, r2, r3 + adds r1, r7, r2 + add sp, #0x10 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_082960C4: .4byte 0x0000FFFF + thumb_func_end __muldi3 + + thumb_func_start __udivdi3 +__udivdi3: @ 0x082960C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r7, r2, #0 + adds r6, r3, #0 + mov sl, r0 + mov r8, r1 + cmp r6, #0 + beq _082960E2 + b _08296330 +_082960E2: + cmp r7, r8 + bls _082961BC + ldr r0, _082960F8 + cmp r7, r0 + bhi _082960FC + movs r1, #0 + cmp r7, #0xff + bls _08296106 + movs r1, #8 + b _08296106 + .align 2, 0 +_082960F8: .4byte 0x0000FFFF +_082960FC: + ldr r0, _082961B0 + movs r1, #0x18 + cmp r7, r0 + bhi _08296106 + movs r1, #0x10 +_08296106: + ldr r0, _082961B4 + lsrs r2, r1 + adds r0, r2, r0 + ldrb r0, [r0] + adds r0, r0, r1 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + beq _08296132 + lsls r7, r2 + mov r0, r8 + lsls r0, r2 + mov r8, r0 + subs r1, r1, r2 + mov r0, sl + lsrs r0, r1 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + mov r3, sl + lsls r3, r2 + mov sl, r3 +_08296132: + lsrs r4, r7, #0x10 + mov sb, r4 + ldr r0, _082961B8 + ands r0, r7 + str r0, [sp] + mov r0, r8 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + mov r0, r8 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r1, [sp] + adds r2, r6, #0 + muls r2, r1, r2 + lsls r4, r4, #0x10 + mov r3, sl + lsrs r0, r3, #0x10 + orrs r4, r0 + cmp r4, r2 + bhs _08296172 + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _08296172 + cmp r4, r2 + bhs _08296172 + subs r6, #1 + adds r4, r4, r7 +_08296172: + subs r4, r4, r2 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r1, r0, #0 + ldr r4, [sp] + adds r2, r1, #0 + muls r2, r4, r2 + lsls r5, r5, #0x10 + ldr r0, _082961B8 + mov r3, sl + ands r3, r0 + orrs r5, r3 + cmp r5, r2 + bhs _082961AA + subs r1, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _082961AA + cmp r5, r2 + bhs _082961AA + subs r1, #1 +_082961AA: + lsls r6, r6, #0x10 + orrs r6, r1 + b _08296336 + .align 2, 0 +_082961B0: .4byte 0x00FFFFFF +_082961B4: .4byte gUnknown_890F058 +_082961B8: .4byte 0x0000FFFF +_082961BC: + cmp r2, #0 + bne _082961CA + movs r0, #1 + movs r1, #0 + bl __udivsi3 + adds r7, r0, #0 +_082961CA: + adds r1, r7, #0 + ldr r0, _082961DC + cmp r7, r0 + bhi _082961E0 + movs r2, #0 + cmp r7, #0xff + bls _082961EA + movs r2, #8 + b _082961EA + .align 2, 0 +_082961DC: .4byte 0x0000FFFF +_082961E0: + ldr r0, _08296208 + movs r2, #0x18 + cmp r7, r0 + bhi _082961EA + movs r2, #0x10 +_082961EA: + ldr r0, _0829620C + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r0, r2 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + bne _08296210 + mov r0, r8 + subs r0, r0, r7 + mov r8, r0 + movs r1, #1 + str r1, [sp, #4] + b _082962AE + .align 2, 0 +_08296208: .4byte 0x00FFFFFF +_0829620C: .4byte gUnknown_890F058 +_08296210: + subs r1, r1, r2 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, sl + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, sl + lsls r4, r2 + mov sl, r4 + lsrs r0, r7, #0x10 + mov sb, r0 + ldr r1, _0829632C + ands r1, r7 + str r1, [sp, #8] + adds r0, r5, #0 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + adds r0, r5, #0 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r2, [sp, #8] + adds r1, r6, #0 + muls r1, r2, r1 + lsls r4, r4, #0x10 + mov r3, r8 + lsrs r0, r3, #0x10 + orrs r4, r0 + cmp r4, r1 + bhs _0829626A + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _0829626A + cmp r4, r1 + bhs _0829626A + subs r6, #1 + adds r4, r4, r7 +_0829626A: + subs r4, r4, r1 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r2, r0, #0 + ldr r4, [sp, #8] + adds r1, r2, #0 + muls r1, r4, r1 + lsls r5, r5, #0x10 + ldr r0, _0829632C + mov r3, r8 + ands r3, r0 + orrs r5, r3 + cmp r5, r1 + bhs _082962A4 + subs r2, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _082962A4 + cmp r5, r1 + bhs _082962A4 + subs r2, #1 + adds r5, r5, r7 +_082962A4: + lsls r6, r6, #0x10 + orrs r6, r2 + str r6, [sp, #4] + subs r1, r5, r1 + mov r8, r1 +_082962AE: + lsrs r4, r7, #0x10 + mov sb, r4 + ldr r0, _0829632C + ands r0, r7 + str r0, [sp, #0xc] + mov r0, r8 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + mov r0, r8 + mov r1, sb + bl __udivsi3 + adds r6, r0, #0 + ldr r1, [sp, #0xc] + adds r2, r6, #0 + muls r2, r1, r2 + lsls r4, r4, #0x10 + mov r3, sl + lsrs r0, r3, #0x10 + orrs r4, r0 + cmp r4, r2 + bhs _082962EE + subs r6, #1 + adds r4, r4, r7 + cmp r4, r7 + blo _082962EE + cmp r4, r2 + bhs _082962EE + subs r6, #1 + adds r4, r4, r7 +_082962EE: + subs r4, r4, r2 + adds r0, r4, #0 + mov r1, sb + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r1, r0, #0 + ldr r4, [sp, #0xc] + adds r2, r1, #0 + muls r2, r4, r2 + lsls r5, r5, #0x10 + ldr r0, _0829632C + mov r3, sl + ands r3, r0 + orrs r5, r3 + cmp r5, r2 + bhs _08296326 + subs r1, #1 + adds r5, r5, r7 + cmp r5, r7 + blo _08296326 + cmp r5, r2 + bhs _08296326 + subs r1, #1 +_08296326: + lsls r6, r6, #0x10 + orrs r6, r1 + b _08296486 + .align 2, 0 +_0829632C: .4byte 0x0000FFFF +_08296330: + cmp r6, r8 + bls _0829633C + movs r6, #0 +_08296336: + movs r4, #0 + str r4, [sp, #4] + b _08296486 +_0829633C: + adds r1, r6, #0 + ldr r0, _08296350 + cmp r6, r0 + bhi _08296354 + movs r2, #0 + cmp r6, #0xff + bls _0829635E + movs r2, #8 + b _0829635E + .align 2, 0 +_08296350: .4byte 0x0000FFFF +_08296354: + ldr r0, _08296380 + movs r2, #0x18 + cmp r6, r0 + bhi _0829635E + movs r2, #0x10 +_0829635E: + ldr r0, _08296384 + lsrs r1, r2 + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, r0, r2 + movs r1, #0x20 + subs r2, r1, r0 + cmp r2, #0 + bne _0829638C + cmp r8, r6 + bhi _08296378 + cmp sl, r7 + blo _08296388 +_08296378: + movs r6, #1 + mov r1, sl + b _08296480 + .align 2, 0 +_08296380: .4byte 0x00FFFFFF +_08296384: .4byte gUnknown_890F058 +_08296388: + movs r6, #0 + b _08296482 +_0829638C: + subs r1, r1, r2 + lsls r6, r2 + adds r0, r7, #0 + lsrs r0, r1 + orrs r6, r0 + lsls r7, r2 + mov r5, r8 + lsrs r5, r1 + mov r3, r8 + lsls r3, r2 + mov r0, sl + lsrs r0, r1 + orrs r3, r0 + mov r8, r3 + mov r4, sl + lsls r4, r2 + mov sl, r4 + lsrs r0, r6, #0x10 + mov sb, r0 + ldr r1, _0829649C + ands r1, r6 + str r1, [sp, #0x10] + adds r0, r5, #0 + mov r1, sb + bl __umodsi3 + adds r4, r0, #0 + adds r0, r5, #0 + mov r1, sb + bl __udivsi3 + adds r3, r0, #0 + ldr r2, [sp, #0x10] + adds r1, r3, #0 + muls r1, r2, r1 + lsls r4, r4, #0x10 + mov r2, r8 + lsrs r0, r2, #0x10 + orrs r4, r0 + cmp r4, r1 + bhs _082963EE + subs r3, #1 + adds r4, r4, r6 + cmp r4, r6 + blo _082963EE + cmp r4, r1 + bhs _082963EE + subs r3, #1 + adds r4, r4, r6 +_082963EE: + subs r4, r4, r1 + adds r0, r4, #0 + mov r1, sb + str r3, [sp, #0x1c] + bl __umodsi3 + adds r5, r0, #0 + adds r0, r4, #0 + mov r1, sb + bl __udivsi3 + adds r2, r0, #0 + ldr r4, [sp, #0x10] + adds r1, r2, #0 + muls r1, r4, r1 + lsls r5, r5, #0x10 + ldr r0, _0829649C + mov r4, r8 + ands r4, r0 + orrs r5, r4 + ldr r3, [sp, #0x1c] + cmp r5, r1 + bhs _0829642C + subs r2, #1 + adds r5, r5, r6 + cmp r5, r6 + blo _0829642C + cmp r5, r1 + bhs _0829642C + subs r2, #1 + adds r5, r5, r6 +_0829642C: + lsls r6, r3, #0x10 + orrs r6, r2 + subs r1, r5, r1 + mov r8, r1 + ldr r0, _0829649C + mov sb, r0 + adds r1, r6, #0 + ands r1, r0 + lsrs r3, r6, #0x10 + adds r0, r7, #0 + mov r2, sb + ands r0, r2 + lsrs r2, r7, #0x10 + adds r5, r1, #0 + muls r5, r0, r5 + adds r4, r1, #0 + muls r4, r2, r4 + adds r1, r3, #0 + muls r1, r0, r1 + muls r3, r2, r3 + lsrs r0, r5, #0x10 + adds r4, r4, r0 + adds r4, r4, r1 + cmp r4, r1 + bhs _08296464 + movs r0, #0x80 + lsls r0, r0, #9 + adds r3, r3, r0 +_08296464: + lsrs r0, r4, #0x10 + adds r3, r3, r0 + mov r1, sb + ands r4, r1 + lsls r0, r4, #0x10 + ands r5, r1 + adds r1, r0, r5 + cmp r3, r8 + bhi _0829647E + cmp r3, r8 + bne _08296482 + cmp r1, sl + bls _08296482 +_0829647E: + subs r6, #1 +_08296480: + subs r0, r1, r7 +_08296482: + movs r2, #0 + str r2, [sp, #4] +_08296486: + str r6, [sp, #0x14] + ldr r3, [sp, #4] + str r3, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829649C: .4byte 0x0000FFFF + thumb_func_end __udivdi3 + + thumb_func_start __udivsi3 +__udivsi3: @ 0x082964A0 + cmp r1, #0 + beq _0829650E + movs r3, #1 + movs r2, #0 + push {r4} + cmp r0, r1 + blo _08296508 + movs r4, #1 + lsls r4, r4, #0x1c +_082964B2: + cmp r1, r4 + bhs _082964C0 + cmp r1, r0 + bhs _082964C0 + lsls r1, r1, #4 + lsls r3, r3, #4 + b _082964B2 +_082964C0: + lsls r4, r4, #3 +_082964C2: + cmp r1, r4 + bhs _082964D0 + cmp r1, r0 + bhs _082964D0 + lsls r1, r1, #1 + lsls r3, r3, #1 + b _082964C2 +_082964D0: + cmp r0, r1 + blo _082964D8 + subs r0, r0, r1 + orrs r2, r3 +_082964D8: + lsrs r4, r1, #1 + cmp r0, r4 + blo _082964E4 + subs r0, r0, r4 + lsrs r4, r3, #1 + orrs r2, r4 +_082964E4: + lsrs r4, r1, #2 + cmp r0, r4 + blo _082964F0 + subs r0, r0, r4 + lsrs r4, r3, #2 + orrs r2, r4 +_082964F0: + lsrs r4, r1, #3 + cmp r0, r4 + blo _082964FC + subs r0, r0, r4 + lsrs r4, r3, #3 + orrs r2, r4 +_082964FC: + cmp r0, #0 + beq _08296508 + lsrs r3, r3, #4 + beq _08296508 + lsrs r1, r1, #4 + b _082964D0 +_08296508: + adds r0, r2, #0 + pop {r4} + mov pc, lr +_0829650E: + push {lr} + bl __div0 + movs r0, #0 + pop {pc} + thumb_func_end __udivsi3 + + thumb_func_start __umodsi3 +__umodsi3: @ 0x08296518 + cmp r1, #0 + beq _082965CE + movs r3, #1 + cmp r0, r1 + bhs _08296524 + mov pc, lr +_08296524: + push {r4} + movs r4, #1 + lsls r4, r4, #0x1c +_0829652A: + cmp r1, r4 + bhs _08296538 + cmp r1, r0 + bhs _08296538 + lsls r1, r1, #4 + lsls r3, r3, #4 + b _0829652A +_08296538: + lsls r4, r4, #3 +_0829653A: + cmp r1, r4 + bhs _08296548 + cmp r1, r0 + bhs _08296548 + lsls r1, r1, #1 + lsls r3, r3, #1 + b _0829653A +_08296548: + movs r2, #0 + cmp r0, r1 + blo _08296550 + subs r0, r0, r1 +_08296550: + lsrs r4, r1, #1 + cmp r0, r4 + blo _08296562 + subs r0, r0, r4 + mov ip, r3 + movs r4, #1 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08296562: + lsrs r4, r1, #2 + cmp r0, r4 + blo _08296574 + subs r0, r0, r4 + mov ip, r3 + movs r4, #2 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08296574: + lsrs r4, r1, #3 + cmp r0, r4 + blo _08296586 + subs r0, r0, r4 + mov ip, r3 + movs r4, #3 + rors r3, r4 + orrs r2, r3 + mov r3, ip +_08296586: + mov ip, r3 + cmp r0, #0 + beq _08296594 + lsrs r3, r3, #4 + beq _08296594 + lsrs r1, r1, #4 + b _08296548 +_08296594: + movs r4, #0xe + lsls r4, r4, #0x1c + ands r2, r4 + bne _082965A0 + pop {r4} + mov pc, lr +_082965A0: + mov r3, ip + movs r4, #3 + rors r3, r4 + tst r2, r3 + beq _082965AE + lsrs r4, r1, #3 + adds r0, r0, r4 +_082965AE: + mov r3, ip + movs r4, #2 + rors r3, r4 + tst r2, r3 + beq _082965BC + lsrs r4, r1, #2 + adds r0, r0, r4 +_082965BC: + mov r3, ip + movs r4, #1 + rors r3, r4 + tst r2, r3 + beq _082965CA + lsrs r4, r1, #1 + adds r0, r0, r4 +_082965CA: + pop {r4} + mov pc, lr +_082965CE: + push {lr} + bl __div0 + movs r0, #0 + pop {pc} + thumb_func_end __umodsi3 + + thumb_func_start __pack_d +__pack_d: @ 0x082965D8 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r1, r0, #0 + ldr r4, [r1, #0xc] + ldr r5, [r1, #0x10] + ldr r7, [r1, #4] + movs r6, #0 + movs r2, #0 + ldr r0, [r1] + cmp r0, #1 + bhi _082965F0 + movs r2, #1 +_082965F0: + cmp r2, #0 + beq _08296610 + ldr r6, _08296604 + ldr r2, _08296608 + ldr r3, _0829660C + adds r0, r4, #0 + adds r1, r5, #0 + orrs r1, r3 + b _082966C8 + .align 2, 0 +_08296604: .4byte 0x000007FF +_08296608: .4byte 0x00000000 +_0829660C: .4byte 0x00080000 +_08296610: + movs r2, #0 + cmp r0, #4 + bne _08296618 + movs r2, #1 +_08296618: + cmp r2, #0 + bne _08296664 + movs r2, #0 + cmp r0, #2 + bne _08296624 + movs r2, #1 +_08296624: + cmp r2, #0 + beq _0829662E + movs r4, #0 + movs r5, #0 + b _082966CC +_0829662E: + adds r0, r5, #0 + orrs r0, r4 + cmp r0, #0 + beq _082966CC + ldr r2, [r1, #8] + ldr r0, _0829664C + cmp r2, r0 + bge _0829665E + subs r2, r0, r2 + cmp r2, #0x38 + ble _08296650 + movs r4, #0 + movs r5, #0 + b _082966BE + .align 2, 0 +_0829664C: .4byte 0xFFFFFC02 +_08296650: + adds r1, r5, #0 + adds r0, r4, #0 + bl __lshrdi3 + adds r5, r1, #0 + adds r4, r0, #0 + b _082966BE +_0829665E: + ldr r0, _0829666C + cmp r2, r0 + ble _08296674 +_08296664: + ldr r6, _08296670 + movs r4, #0 + movs r5, #0 + b _082966CC + .align 2, 0 +_0829666C: .4byte 0x000003FF +_08296670: .4byte 0x000007FF +_08296674: + ldr r0, _0829669C + adds r6, r2, r0 + movs r0, #0xff + adds r1, r4, #0 + ands r1, r0 + movs r2, #0 + cmp r1, #0x80 + bne _082966A0 + cmp r2, #0 + bne _082966A0 + adds r0, #1 + adds r1, r4, #0 + ands r1, r0 + adds r0, r2, #0 + orrs r0, r1 + cmp r0, #0 + beq _082966A8 + movs r0, #0x80 + movs r1, #0 + b _082966A4 + .align 2, 0 +_0829669C: .4byte 0x000003FF +_082966A0: + movs r0, #0x7f + movs r1, #0 +_082966A4: + adds r4, r4, r0 + adcs r5, r1 +_082966A8: + ldr r0, _0829670C + cmp r5, r0 + bls _082966BE + lsls r3, r5, #0x1f + lsrs r2, r4, #1 + adds r0, r3, #0 + orrs r0, r2 + lsrs r1, r5, #1 + adds r5, r1, #0 + adds r4, r0, #0 + adds r6, #1 +_082966BE: + lsls r3, r5, #0x18 + lsrs r2, r4, #8 + adds r0, r3, #0 + orrs r0, r2 + lsrs r1, r5, #8 +_082966C8: + adds r5, r1, #0 + adds r4, r0, #0 +_082966CC: + str r4, [sp] + ldr r2, _08296710 + ands r2, r5 + ldr r0, [sp, #4] + ldr r1, _08296714 + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r2, sp + ldr r1, _08296718 + adds r0, r1, #0 + ands r6, r0 + lsls r1, r6, #4 + ldr r0, _0829671C + ldrh r3, [r2, #6] + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #6] + lsls r1, r7, #7 + movs r0, #0x7f + ldrb r3, [r2, #7] + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #7] + ldr r1, [sp] + ldr r0, [sp, #4] + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp] + ldr r1, [sp, #4] + add sp, #8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829670C: .4byte 0x1FFFFFFF +_08296710: .4byte 0x000FFFFF +_08296714: .4byte 0xFFF00000 +_08296718: .4byte 0x000007FF +_0829671C: .4byte 0xFFFF800F + thumb_func_end __pack_d + + thumb_func_start __unpack_d +__unpack_d: @ 0x08296720 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r2, r0, #0 + adds r6, r1, #0 + ldr r1, [r2, #4] + str r1, [sp] + ldr r0, [r2] + str r0, [sp, #4] + mov r2, sp + adds r4, r1, #0 + lsls r0, r0, #0xc + lsrs r5, r0, #0xc + ldrh r3, [r2, #6] + lsls r0, r3, #0x11 + lsrs r3, r0, #0x15 + ldrb r2, [r2, #7] + lsrs r0, r2, #7 + str r0, [r6, #4] + cmp r3, #0 + bne _08296794 + orrs r1, r5 + cmp r1, #0 + bne _08296754 + movs r0, #2 + str r0, [r6] + b _082967E8 +_08296754: + ldr r0, _0829678C + str r0, [r6, #8] + lsrs r3, r4, #0x18 + lsls r2, r5, #8 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #8 + adds r5, r1, #0 + adds r4, r0, #0 + movs r0, #3 + str r0, [r6] + ldr r0, _08296790 + cmp r5, r0 + bhi _082967C4 + adds r7, r0, #0 +_08296772: + lsrs r3, r4, #0x1f + lsls r2, r5, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #1 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r0, [r6, #8] + subs r0, #1 + str r0, [r6, #8] + cmp r5, r7 + bls _08296772 + b _082967C4 + .align 2, 0 +_0829678C: .4byte 0xFFFFFC02 +_08296790: .4byte 0x0FFFFFFF +_08296794: + ldr r0, _082967A8 + cmp r3, r0 + bne _082967CA + orrs r1, r5 + cmp r1, #0 + bne _082967AC + movs r0, #4 + str r0, [r6] + b _082967E8 + .align 2, 0 +_082967A8: .4byte 0x000007FF +_082967AC: + movs r2, #0x80 + lsls r2, r2, #0xc + movs r0, #0 + adds r1, r5, #0 + ands r1, r2 + orrs r1, r0 + cmp r1, #0 + beq _082967C2 + movs r0, #1 + str r0, [r6] + b _082967C4 +_082967C2: + str r1, [r6] +_082967C4: + str r4, [r6, #0xc] + str r5, [r6, #0x10] + b _082967E8 +_082967CA: + ldr r1, _082967EC + adds r0, r3, r1 + str r0, [r6, #8] + movs r0, #3 + str r0, [r6] + lsrs r3, r4, #0x18 + lsls r2, r5, #8 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #8 + ldr r2, _082967F0 + ldr r3, _082967F4 + orrs r1, r3 + str r0, [r6, #0xc] + str r1, [r6, #0x10] +_082967E8: + add sp, #8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_082967EC: .4byte 0xFFFFFC01 +_082967F0: .4byte 0x00000000 +_082967F4: .4byte 0x10000000 + thumb_func_end __unpack_d + + thumb_func_start sub_082967F8 +sub_082967F8: @ 0x082967F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r3, r0, #0 + adds r4, r1, #0 + mov sl, r2 + movs r0, #0 + ldr r2, [r3] + cmp r2, #1 + bhi _08296814 + movs r0, #1 +_08296814: + cmp r0, #0 + beq _0829681C +_08296818: + adds r0, r3, #0 + b _08296A54 +_0829681C: + movs r1, #0 + ldr r0, [r4] + cmp r0, #1 + bhi _08296826 + movs r1, #1 +_08296826: + cmp r1, #0 + bne _0829689E + movs r1, #0 + cmp r2, #4 + bne _08296832 + movs r1, #1 +_08296832: + cmp r1, #0 + beq _08296854 + movs r1, #0 + cmp r0, #4 + bne _0829683E + movs r1, #1 +_0829683E: + cmp r1, #0 + beq _08296818 + ldr r1, [r3, #4] + ldr r0, [r4, #4] + cmp r1, r0 + beq _08296818 + ldr r0, _08296850 + b _08296A54 + .align 2, 0 +_08296850: .4byte gUnknown_3001A78 +_08296854: + movs r1, #0 + cmp r0, #4 + bne _0829685C + movs r1, #1 +_0829685C: + cmp r1, #0 + bne _0829689E + movs r1, #0 + cmp r0, #2 + bne _08296868 + movs r1, #1 +_08296868: + cmp r1, #0 + beq _08296890 + movs r0, #0 + cmp r2, #2 + bne _08296874 + movs r0, #1 +_08296874: + cmp r0, #0 + beq _08296818 + mov r1, sl + adds r0, r3, #0 + ldm r0!, {r2, r5, r6} + stm r1!, {r2, r5, r6} + ldm r0!, {r2, r5} + stm r1!, {r2, r5} + ldr r0, [r3, #4] + ldr r1, [r4, #4] + ands r0, r1 + mov r6, sl + str r0, [r6, #4] + b _08296A52 +_08296890: + movs r1, #0 + ldr r0, [r3] + cmp r0, #2 + bne _0829689A + movs r1, #1 +_0829689A: + cmp r1, #0 + beq _082968A2 +_0829689E: + adds r0, r4, #0 + b _08296A54 +_082968A2: + ldr r0, [r3, #8] + mov sb, r0 + ldr r1, [r4, #8] + mov r8, r1 + ldr r6, [r3, #0xc] + ldr r7, [r3, #0x10] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + str r0, [sp] + str r1, [sp, #4] + mov r1, sb + mov r2, r8 + subs r0, r1, r2 + cmp r0, #0 + bge _082968C2 + rsbs r0, r0, #0 +_082968C2: + cmp r0, #0x3f + bgt _08296940 + ldr r3, [r3, #4] + mov ip, r3 + ldr r4, [r4, #4] + str r4, [sp, #8] + cmp sb, r8 + ble _0829690C + mov r3, sb + mov r4, r8 + subs r3, r3, r4 + mov r8, r3 +_082968DA: + movs r5, #1 + rsbs r5, r5, #0 + add r8, r5 + ldr r2, [sp] + movs r0, #1 + ands r2, r0 + movs r3, #0 + ldr r1, [sp, #4] + lsls r5, r1, #0x1f + ldr r0, [sp] + lsrs r4, r0, #1 + adds r0, r5, #0 + orrs r0, r4 + adds r4, r1, #0 + lsrs r1, r4, #1 + adds r5, r2, #0 + orrs r5, r0 + str r5, [sp] + adds r4, r3, #0 + orrs r4, r1 + str r4, [sp, #4] + mov r5, r8 + cmp r5, #0 + bne _082968DA + mov r8, sb +_0829690C: + cmp r8, sb + ble _0829695C + mov r0, r8 + mov r1, sb + subs r0, r0, r1 + mov sb, r0 +_08296918: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + movs r2, #1 + ands r2, r6 + movs r3, #0 + lsls r5, r7, #0x1f + lsrs r4, r6, #1 + adds r0, r5, #0 + orrs r0, r4 + lsrs r1, r7, #1 + adds r6, r2, #0 + orrs r6, r0 + adds r7, r3, #0 + orrs r7, r1 + mov r3, sb + cmp r3, #0 + bne _08296918 + mov sb, r8 + b _0829695C +_08296940: + cmp sb, r8 + ble _0829694E + movs r0, #0 + movs r1, #0 + str r0, [sp] + str r1, [sp, #4] + b _08296954 +_0829694E: + mov sb, r8 + movs r6, #0 + movs r7, #0 +_08296954: + ldr r3, [r3, #4] + mov ip, r3 + ldr r4, [r4, #4] + str r4, [sp, #8] +_0829695C: + ldr r1, [sp, #8] + cmp ip, r1 + beq _08296A04 + mov r2, ip + cmp r2, #0 + beq _0829697E + adds r1, r7, #0 + adds r0, r6, #0 + bl __negdi2 + adds r3, r1, #0 + adds r2, r0, #0 + ldr r4, [sp] + ldr r5, [sp, #4] + adds r2, r2, r4 + adcs r3, r5 + b _0829698A +_0829697E: + adds r3, r7, #0 + adds r2, r6, #0 + ldr r0, [sp] + ldr r1, [sp, #4] + subs r2, r2, r0 + sbcs r3, r1 +_0829698A: + cmp r3, #0 + blt _082969A0 + movs r0, #0 + mov r1, sl + str r0, [r1, #4] + mov r4, sb + str r4, [r1, #8] + mov r5, sl + str r2, [r5, #0xc] + str r3, [r5, #0x10] + b _082969B8 +_082969A0: + movs r0, #1 + mov r6, sl + str r0, [r6, #4] + mov r0, sb + str r0, [r6, #8] + adds r1, r3, #0 + adds r0, r2, #0 + bl __negdi2 + mov r2, sl + str r0, [r2, #0xc] + str r1, [r2, #0x10] +_082969B8: + mov r4, sl + ldr r2, [r4, #0xc] + ldr r3, [r4, #0x10] + movs r0, #1 + rsbs r0, r0, #0 + asrs r1, r0, #0x1f +_082969C4: + adds r2, r2, r0 + adcs r3, r1 + ldr r0, _08296A00 + cmp r3, r0 + bhi _08296A1C + cmp r3, r0 + bne _082969DA + movs r0, #2 + rsbs r0, r0, #0 + cmp r2, r0 + bhi _08296A1C +_082969DA: + mov r5, sl + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x10] + lsrs r3, r0, #0x1f + lsls r2, r1, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r0, #1 + mov r6, sl + str r0, [r6, #0xc] + str r1, [r6, #0x10] + ldr r2, [r6, #8] + subs r2, #1 + str r2, [r6, #8] + movs r2, #1 + rsbs r2, r2, #0 + asrs r3, r2, #0x1f + b _082969C4 + .align 2, 0 +_08296A00: .4byte 0x0FFFFFFF +_08296A04: + mov r0, ip + mov r1, sl + str r0, [r1, #4] + mov r2, sb + str r2, [r1, #8] + ldr r3, [sp] + ldr r4, [sp, #4] + adds r6, r6, r3 + adcs r7, r4 + mov r4, sl + str r6, [r4, #0xc] + str r7, [r4, #0x10] +_08296A1C: + movs r0, #3 + mov r5, sl + str r0, [r5] + ldr r1, [r5, #0x10] + ldr r0, _08296A60 + cmp r1, r0 + bls _08296A52 + ldr r4, [r5, #0xc] + ldr r5, [r5, #0x10] + movs r2, #1 + adds r0, r4, #0 + ands r0, r2 + movs r1, #0 + lsls r6, r5, #0x1f + mov r8, r6 + lsrs r6, r4, #1 + mov r2, r8 + orrs r2, r6 + lsrs r3, r5, #1 + orrs r0, r2 + orrs r1, r3 + mov r2, sl + str r0, [r2, #0xc] + str r1, [r2, #0x10] + ldr r0, [r2, #8] + adds r0, #1 + str r0, [r2, #8] +_08296A52: + mov r0, sl +_08296A54: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08296A60: .4byte 0x1FFFFFFF + thumb_func_end sub_082967F8 + + thumb_func_start __adddf3 +__adddf3: @ 0x08296A64 + push {r4, lr} + sub sp, #0x4c + str r0, [sp, #0x3c] + str r1, [sp, #0x40] + str r2, [sp, #0x44] + str r3, [sp, #0x48] + add r0, sp, #0x3c + mov r1, sp + bl __unpack_d + add r0, sp, #0x44 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + add r2, sp, #0x28 + mov r0, sp + adds r1, r4, #0 + bl sub_082967F8 + bl __pack_d + add sp, #0x4c + pop {r4, pc} + thumb_func_end __adddf3 + + thumb_func_start __subdf3 +__subdf3: @ 0x08296A94 + push {r4, lr} + sub sp, #0x4c + str r0, [sp, #0x3c] + str r1, [sp, #0x40] + str r2, [sp, #0x44] + str r3, [sp, #0x48] + add r0, sp, #0x3c + mov r1, sp + bl __unpack_d + add r0, sp, #0x44 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + ldr r0, [r4, #4] + movs r1, #1 + eors r0, r1 + str r0, [r4, #4] + add r2, sp, #0x28 + mov r0, sp + adds r1, r4, #0 + bl sub_082967F8 + bl __pack_d + add sp, #0x4c + pop {r4, pc} + thumb_func_end __subdf3 + + thumb_func_start __muldf3 +__muldf3: @ 0x08296ACC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x74 + str r0, [sp, #0x3c] + str r1, [sp, #0x40] + str r2, [sp, #0x44] + str r3, [sp, #0x48] + add r0, sp, #0x3c + mov r1, sp + bl __unpack_d + add r0, sp, #0x44 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + mov r8, sp + add r0, sp, #0x28 + mov sl, r0 + movs r0, #0 + ldr r1, [sp] + cmp r1, #1 + bhi _08296B02 + movs r0, #1 +_08296B02: + cmp r0, #0 + bne _08296B66 + movs r2, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _08296B10 + movs r2, #1 +_08296B10: + cmp r2, #0 + beq _08296B18 + ldr r0, [sp, #4] + b _08296B88 +_08296B18: + movs r2, #0 + cmp r1, #4 + bne _08296B20 + movs r2, #1 +_08296B20: + cmp r2, #0 + beq _08296B32 + movs r1, #0 + cmp r0, #2 + bne _08296B2C + movs r1, #1 +_08296B2C: + cmp r1, #0 + bne _08296B4A + b _08296B66 +_08296B32: + movs r2, #0 + cmp r0, #4 + bne _08296B3A + movs r2, #1 +_08296B3A: + cmp r2, #0 + beq _08296B5A + movs r0, #0 + cmp r1, #2 + bne _08296B46 + movs r0, #1 +_08296B46: + cmp r0, #0 + beq _08296B54 +_08296B4A: + ldr r0, _08296B50 + b _08296D52 + .align 2, 0 +_08296B50: .4byte gUnknown_3001A78 +_08296B54: + mov r1, r8 + ldr r0, [r1, #4] + b _08296B88 +_08296B5A: + movs r2, #0 + cmp r1, #2 + bne _08296B62 + movs r2, #1 +_08296B62: + cmp r2, #0 + beq _08296B78 +_08296B66: + ldr r0, [sp, #4] + ldr r1, [sp, #0x18] + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [sp, #4] + mov r0, sp + b _08296D52 +_08296B78: + movs r1, #0 + cmp r0, #2 + bne _08296B80 + movs r1, #1 +_08296B80: + cmp r1, #0 + beq _08296B98 + mov r2, r8 + ldr r0, [r2, #4] +_08296B88: + ldr r1, [sp, #0x18] + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [sp, #0x18] + adds r0, r4, #0 + b _08296D52 +_08296B98: + mov r4, r8 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + adds r6, r0, #0 + movs r7, #0 + str r1, [sp, #0x4c] + movs r5, #0 + str r5, [sp, #0x50] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + adds r4, r0, #0 + str r1, [sp, #0x54] + movs r0, #0 + str r0, [sp, #0x58] + adds r1, r5, #0 + adds r0, r4, #0 + adds r3, r7, #0 + adds r2, r6, #0 + bl __muldi3 + str r0, [sp, #0x5c] + str r1, [sp, #0x60] + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x58] + adds r3, r7, #0 + adds r2, r6, #0 + bl __muldi3 + adds r7, r1, #0 + adds r6, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + ldr r2, [sp, #0x4c] + ldr r3, [sp, #0x50] + bl __muldi3 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x58] + ldr r2, [sp, #0x4c] + ldr r3, [sp, #0x50] + bl __muldi3 + str r0, [sp, #0x64] + str r1, [sp, #0x68] + movs r1, #0 + movs r2, #0 + str r1, [sp, #0x6c] + str r2, [sp, #0x70] + adds r3, r7, #0 + adds r2, r6, #0 + adds r2, r2, r4 + adcs r3, r5 + cmp r7, r3 + bhi _08296C10 + cmp r7, r3 + bne _08296C18 + cmp r6, r2 + bls _08296C18 +_08296C10: + ldr r5, _08296D68 + ldr r4, _08296D64 + str r4, [sp, #0x6c] + str r5, [sp, #0x70] +_08296C18: + adds r1, r2, #0 + movs r6, #0 + adds r7, r1, #0 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x60] + adds r6, r6, r0 + adcs r7, r1 + cmp r1, r7 + bhi _08296C34 + ldr r1, [sp, #0x60] + cmp r1, r7 + bne _08296C44 + cmp r0, r6 + bls _08296C44 +_08296C34: + movs r0, #1 + movs r1, #0 + ldr r4, [sp, #0x6c] + ldr r5, [sp, #0x70] + adds r4, r4, r0 + adcs r5, r1 + str r4, [sp, #0x6c] + str r5, [sp, #0x70] +_08296C44: + adds r0, r3, #0 + adds r2, r0, #0 + movs r3, #0 + adds r5, r3, #0 + adds r4, r2, #0 + ldr r0, [sp, #0x64] + ldr r1, [sp, #0x68] + adds r4, r4, r0 + adcs r5, r1 + ldr r1, [sp, #0x6c] + ldr r2, [sp, #0x70] + adds r4, r4, r1 + adcs r5, r2 + mov r0, r8 + ldr r2, [r0, #8] + ldr r0, [sp, #0x1c] + adds r2, r2, r0 + str r2, [sp, #0x30] + mov r0, r8 + ldr r1, [r0, #4] + ldr r0, [sp, #0x18] + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + str r0, [sp, #0x2c] + adds r2, #4 + str r2, [sp, #0x30] + ldr r0, _08296D6C + cmp r5, r0 + bls _08296CC6 + movs r1, #1 + mov sb, r1 + mov r8, r0 + mov ip, r2 +_08296C8A: + movs r2, #1 + add ip, r2 + mov r0, sb + ands r0, r4 + cmp r0, #0 + beq _08296CB0 + lsls r3, r7, #0x1f + lsrs r2, r6, #1 + adds r0, r3, #0 + orrs r0, r2 + lsrs r1, r7, #1 + adds r7, r1, #0 + adds r6, r0, #0 + adds r0, r6, #0 + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r1, r7 + adds r7, r1, #0 + adds r6, r0, #0 +_08296CB0: + lsls r3, r5, #0x1f + lsrs r2, r4, #1 + adds r0, r3, #0 + orrs r0, r2 + lsrs r1, r5, #1 + adds r5, r1, #0 + adds r4, r0, #0 + cmp r5, r8 + bhi _08296C8A + mov r0, ip + str r0, [sp, #0x30] +_08296CC6: + ldr r0, _08296D70 + cmp r5, r0 + bhi _08296D18 + movs r1, #0x80 + lsls r1, r1, #0x18 + mov sb, r1 + mov r8, r0 + ldr r2, [sp, #0x30] + mov ip, r2 +_08296CD8: + movs r0, #1 + rsbs r0, r0, #0 + add ip, r0 + lsrs r3, r4, #0x1f + lsls r2, r5, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #1 + adds r5, r1, #0 + adds r4, r0, #0 + movs r0, #0 + mov r1, sb + ands r1, r7 + orrs r0, r1 + cmp r0, #0 + beq _08296D02 + movs r0, #1 + orrs r0, r4 + adds r1, r5, #0 + adds r5, r1, #0 + adds r4, r0, #0 +_08296D02: + lsrs r3, r6, #0x1f + lsls r2, r7, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r6, #1 + adds r7, r1, #0 + adds r6, r0, #0 + cmp r5, r8 + bls _08296CD8 + mov r1, ip + str r1, [sp, #0x30] +_08296D18: + movs r0, #0xff + adds r1, r4, #0 + ands r1, r0 + movs r2, #0 + cmp r1, #0x80 + bne _08296D46 + cmp r2, #0 + bne _08296D46 + adds r0, #1 + adds r1, r4, #0 + ands r1, r0 + adds r0, r2, #0 + orrs r0, r1 + cmp r0, #0 + bne _08296D3E + adds r0, r7, #0 + orrs r0, r6 + cmp r0, #0 + beq _08296D46 +_08296D3E: + movs r0, #0x80 + movs r1, #0 + adds r4, r4, r0 + adcs r5, r1 +_08296D46: + str r4, [sp, #0x34] + str r5, [sp, #0x38] + movs r0, #3 + mov r2, sl + str r0, [r2] + add r0, sp, #0x28 +_08296D52: + bl __pack_d + add sp, #0x74 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08296D64: .4byte 0x00000000 +_08296D68: .4byte 0x00000001 +_08296D6C: .4byte 0x1FFFFFFF +_08296D70: .4byte 0x0FFFFFFF + thumb_func_end __muldf3 + + thumb_func_start __divdf3 +__divdf3: @ 0x08296D74 + push {r4, r5, r6, r7, lr} + sub sp, #0x48 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + mov ip, sp + movs r0, #0 + ldr r3, [sp] + cmp r3, #1 + bhi _08296D9E + movs r0, #1 +_08296D9E: + cmp r0, #0 + beq _08296DA6 + mov r1, sp + b _08296EE8 +_08296DA6: + movs r0, #0 + ldr r2, [sp, #0x14] + adds r5, r2, #0 + cmp r2, #1 + bhi _08296DB2 + movs r0, #1 +_08296DB2: + cmp r0, #0 + beq _08296DBA + adds r1, r4, #0 + b _08296EE8 +_08296DBA: + ldr r0, [sp, #4] + ldr r1, [sp, #0x18] + eors r0, r1 + str r0, [sp, #4] + movs r0, #0 + cmp r3, #4 + bne _08296DCA + movs r0, #1 +_08296DCA: + cmp r0, #0 + bne _08296DDA + movs r4, #0 + cmp r3, #2 + bne _08296DD6 + movs r4, #1 +_08296DD6: + cmp r4, #0 + beq _08296DEC +_08296DDA: + mov r1, ip + ldr r0, [r1] + cmp r0, r5 + beq _08296DE4 + b _08296EE8 +_08296DE4: + ldr r1, _08296DE8 + b _08296EE8 + .align 2, 0 +_08296DE8: .4byte gUnknown_3001A78 +_08296DEC: + movs r0, #0 + cmp r2, #4 + bne _08296DF4 + movs r0, #1 +_08296DF4: + cmp r0, #0 + beq _08296E06 + movs r0, #0 + movs r1, #0 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r4, [sp, #8] + mov r1, sp + b _08296EE8 +_08296E06: + movs r0, #0 + cmp r2, #2 + bne _08296E0E + movs r0, #1 +_08296E0E: + cmp r0, #0 + beq _08296E1A + movs r0, #4 + mov r2, ip + str r0, [r2] + b _08296EE6 +_08296E1A: + mov r3, ip + ldr r1, [r3, #8] + ldr r0, [sp, #0x1c] + subs r6, r1, r0 + str r6, [r3, #8] + ldr r4, [r3, #0xc] + ldr r5, [r3, #0x10] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + str r0, [sp, #0x38] + str r1, [sp, #0x3c] + cmp r1, r5 + bhi _08296E3E + ldr r1, [sp, #0x3c] + cmp r1, r5 + bne _08296E52 + cmp r0, r4 + bls _08296E52 +_08296E3E: + lsrs r3, r4, #0x1f + lsls r2, r5, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #1 + adds r5, r1, #0 + adds r4, r0, #0 + subs r0, r6, #1 + mov r2, ip + str r0, [r2, #8] +_08296E52: + ldr r7, _08296EF8 + ldr r6, _08296EF4 + movs r0, #0 + movs r1, #0 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_08296E5E: + ldr r1, [sp, #0x3c] + cmp r1, r5 + bhi _08296E82 + cmp r1, r5 + bne _08296E6E + ldr r2, [sp, #0x38] + cmp r2, r4 + bhi _08296E82 +_08296E6E: + ldr r0, [sp, #0x40] + orrs r0, r6 + ldr r1, [sp, #0x44] + orrs r1, r7 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x3c] + subs r4, r4, r0 + sbcs r5, r1 +_08296E82: + lsls r3, r7, #0x1f + lsrs r2, r6, #1 + adds r0, r3, #0 + orrs r0, r2 + lsrs r1, r7, #1 + adds r7, r1, #0 + adds r6, r0, #0 + lsrs r3, r4, #0x1f + lsls r2, r5, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r4, #1 + adds r5, r1, #0 + adds r4, r0, #0 + adds r0, r7, #0 + orrs r0, r6 + cmp r0, #0 + bne _08296E5E + movs r0, #0xff + ldr r1, [sp, #0x40] + ands r1, r0 + movs r2, #0 + cmp r1, #0x80 + bne _08296EDC + cmp r2, #0 + bne _08296EDC + adds r0, #1 + ldr r1, [sp, #0x40] + ands r1, r0 + adds r0, r2, #0 + orrs r0, r1 + cmp r0, #0 + bne _08296ECC + adds r0, r5, #0 + orrs r0, r4 + cmp r0, #0 + beq _08296EDC +_08296ECC: + movs r0, #0x80 + movs r1, #0 + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + adds r2, r2, r0 + adcs r3, r1 + str r2, [sp, #0x40] + str r3, [sp, #0x44] +_08296EDC: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + mov r2, ip + str r0, [r2, #0xc] + str r1, [r2, #0x10] +_08296EE6: + mov r1, ip +_08296EE8: + adds r0, r1, #0 + bl __pack_d + add sp, #0x48 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08296EF4: .4byte 0x00000000 +_08296EF8: .4byte 0x10000000 + thumb_func_end __divdf3 + + thumb_func_start __fpcmp_parts_d +__fpcmp_parts_d: @ 0x08296EFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0 + ldr r1, [r5] + cmp r1, #1 + bhi _08296F0C + movs r0, #1 +_08296F0C: + cmp r0, #0 + bne _08296F1E + movs r0, #0 + ldr r2, [r6] + cmp r2, #1 + bhi _08296F1A + movs r0, #1 +_08296F1A: + cmp r0, #0 + beq _08296F22 +_08296F1E: + movs r0, #1 + b _08296FF8 +_08296F22: + movs r0, #0 + cmp r1, #4 + bne _08296F2A + movs r0, #1 +_08296F2A: + cmp r0, #0 + beq _08296F42 + movs r0, #0 + cmp r2, #4 + bne _08296F36 + movs r0, #1 +_08296F36: + cmp r0, #0 + beq _08296F42 + ldr r0, [r6, #4] + ldr r1, [r5, #4] + subs r0, r0, r1 + b _08296FF8 +_08296F42: + movs r1, #0 + ldr r0, [r5] + cmp r0, #4 + bne _08296F4C + movs r1, #1 +_08296F4C: + cmp r1, #0 + bne _08296F9A + movs r1, #0 + cmp r2, #4 + bne _08296F58 + movs r1, #1 +_08296F58: + cmp r1, #0 + beq _08296F6A +_08296F5C: + ldr r0, [r6, #4] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, #0 + beq _08296FA4 + movs r1, #1 + b _08296FA4 +_08296F6A: + movs r1, #0 + cmp r0, #2 + bne _08296F72 + movs r1, #1 +_08296F72: + cmp r1, #0 + beq _08296F82 + movs r1, #0 + cmp r2, #2 + bne _08296F7E + movs r1, #1 +_08296F7E: + cmp r1, #0 + bne _08296FF6 +_08296F82: + movs r1, #0 + cmp r0, #2 + bne _08296F8A + movs r1, #1 +_08296F8A: + cmp r1, #0 + bne _08296F5C + movs r0, #0 + cmp r2, #2 + bne _08296F96 + movs r0, #1 +_08296F96: + cmp r0, #0 + beq _08296FA8 +_08296F9A: + ldr r0, [r5, #4] + movs r1, #1 + cmp r0, #0 + beq _08296FA4 + subs r1, #2 +_08296FA4: + adds r0, r1, #0 + b _08296FF8 +_08296FA8: + ldr r0, [r6, #4] + ldr r4, [r5, #4] + cmp r4, r0 + beq _08296FBA +_08296FB0: + movs r0, #1 + cmp r4, #0 + beq _08296FF8 + subs r0, #2 + b _08296FF8 +_08296FBA: + ldr r1, [r5, #8] + ldr r0, [r6, #8] + cmp r1, r0 + bgt _08296FB0 + cmp r1, r0 + bge _08296FD2 +_08296FC6: + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, #0 + beq _08296FF8 + movs r0, #1 + b _08296FF8 +_08296FD2: + ldr r3, [r5, #0x10] + ldr r2, [r6, #0x10] + cmp r3, r2 + bhi _08296FB0 + cmp r3, r2 + bne _08296FE6 + ldr r1, [r5, #0xc] + ldr r0, [r6, #0xc] + cmp r1, r0 + bhi _08296FB0 +_08296FE6: + cmp r2, r3 + bhi _08296FC6 + cmp r2, r3 + bne _08296FF6 + ldr r1, [r6, #0xc] + ldr r0, [r5, #0xc] + cmp r1, r0 + bhi _08296FC6 +_08296FF6: + movs r0, #0 +_08296FF8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end __fpcmp_parts_d + + thumb_func_start __cmpdf2 +__cmpdf2: @ 0x08296FFC + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d + add sp, #0x38 + pop {r4, pc} + .align 2, 0 + thumb_func_end __cmpdf2 + + thumb_func_start __eqdf2 +__eqdf2: @ 0x08297028 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297050 + movs r1, #1 +_08297050: + cmp r1, #0 + bne _08297062 + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _0829705E + movs r1, #1 +_0829705E: + cmp r1, #0 + beq _08297066 +_08297062: + movs r0, #1 + b _0829706E +_08297066: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_0829706E: + add sp, #0x38 + pop {r4, pc} + .align 2, 0 + thumb_func_end __eqdf2 + + thumb_func_start __nedf2 +__nedf2: @ 0x08297074 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _0829709C + movs r1, #1 +_0829709C: + cmp r1, #0 + bne _082970AE + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _082970AA + movs r1, #1 +_082970AA: + cmp r1, #0 + beq _082970B2 +_082970AE: + movs r0, #1 + b _082970BA +_082970B2: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_082970BA: + add sp, #0x38 + pop {r4, pc} + .align 2, 0 + thumb_func_end __nedf2 + + thumb_func_start __gtdf2 +__gtdf2: @ 0x082970C0 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _082970E8 + movs r1, #1 +_082970E8: + cmp r1, #0 + bne _082970FA + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _082970F6 + movs r1, #1 +_082970F6: + cmp r1, #0 + beq _08297100 +_082970FA: + movs r0, #1 + rsbs r0, r0, #0 + b _08297108 +_08297100: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_08297108: + add sp, #0x38 + pop {r4, pc} + thumb_func_end __gtdf2 + + thumb_func_start __gedf2 +__gedf2: @ 0x0829710C + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297134 + movs r1, #1 +_08297134: + cmp r1, #0 + bne _08297146 + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _08297142 + movs r1, #1 +_08297142: + cmp r1, #0 + beq _0829714C +_08297146: + movs r0, #1 + rsbs r0, r0, #0 + b _08297154 +_0829714C: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_08297154: + add sp, #0x38 + pop {r4, pc} + thumb_func_end __gedf2 + + thumb_func_start __ltdf2 +__ltdf2: @ 0x08297158 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297180 + movs r1, #1 +_08297180: + cmp r1, #0 + bne _08297192 + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _0829718E + movs r1, #1 +_0829718E: + cmp r1, #0 + beq _08297196 +_08297192: + movs r0, #1 + b _0829719E +_08297196: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_0829719E: + add sp, #0x38 + pop {r4, pc} + .align 2, 0 + thumb_func_end __ltdf2 + + thumb_func_start __ledf2 +__ledf2: @ 0x082971A4 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x28] + str r1, [sp, #0x2c] + str r2, [sp, #0x30] + str r3, [sp, #0x34] + add r0, sp, #0x28 + mov r1, sp + bl __unpack_d + add r0, sp, #0x30 + add r4, sp, #0x14 + adds r1, r4, #0 + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _082971CC + movs r1, #1 +_082971CC: + cmp r1, #0 + bne _082971DE + movs r1, #0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bhi _082971DA + movs r1, #1 +_082971DA: + cmp r1, #0 + beq _082971E2 +_082971DE: + movs r0, #1 + b _082971EA +_082971E2: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_d +_082971EA: + add sp, #0x38 + pop {r4, pc} + .align 2, 0 + thumb_func_end __ledf2 + + thumb_func_start __floatsidf +__floatsidf: @ 0x082971F0 + push {r4, r5, lr} + sub sp, #0x14 + adds r2, r0, #0 + movs r0, #3 + str r0, [sp] + lsrs r1, r2, #0x1f + str r1, [sp, #4] + cmp r2, #0 + bne _08297208 + movs r0, #2 + str r0, [sp] + b _0829725E +_08297208: + movs r0, #0x3c + str r0, [sp, #8] + cmp r1, #0 + beq _0829722E + movs r0, #0x80 + lsls r0, r0, #0x18 + cmp r2, r0 + bne _08297228 + ldr r1, _08297224 + ldr r0, _08297220 + b _08297264 + .align 2, 0 +_08297220: .4byte 0xC1E00000 +_08297224: .4byte 0x00000000 +_08297228: + rsbs r0, r2, #0 + asrs r1, r0, #0x1f + b _08297232 +_0829722E: + adds r0, r2, #0 + asrs r1, r2, #0x1f +_08297232: + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [sp, #0x10] + ldr r1, _08297268 + cmp r0, r1 + bhi _0829725E + adds r5, r1, #0 + ldr r4, [sp, #8] +_08297242: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + lsrs r3, r0, #0x1f + lsls r2, r1, #1 + adds r1, r3, #0 + orrs r1, r2 + lsls r0, r0, #1 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + subs r4, #1 + ldr r0, [sp, #0x10] + cmp r0, r5 + bls _08297242 + str r4, [sp, #8] +_0829725E: + mov r0, sp + bl __pack_d +_08297264: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_08297268: .4byte 0x0FFFFFFF + thumb_func_end __floatsidf + + thumb_func_start __fixdfsi +__fixdfsi: @ 0x0829726C + push {lr} + sub sp, #0x1c + str r0, [sp, #0x14] + str r1, [sp, #0x18] + add r0, sp, #0x14 + mov r1, sp + bl __unpack_d + movs r1, #0 + ldr r0, [sp] + cmp r0, #2 + bne _08297286 + movs r1, #1 +_08297286: + cmp r1, #0 + bne _082972BA + movs r1, #0 + cmp r0, #1 + bhi _08297292 + movs r1, #1 +_08297292: + cmp r1, #0 + bne _082972BA + movs r1, #0 + cmp r0, #4 + bne _0829729E + movs r1, #1 +_0829729E: + cmp r1, #0 + beq _082972B4 +_082972A2: + ldr r0, [sp, #4] + ldr r1, _082972B0 + cmp r0, #0 + beq _082972D8 + adds r1, #1 + b _082972D8 + .align 2, 0 +_082972B0: .4byte 0x7FFFFFFF +_082972B4: + ldr r0, [sp, #8] + cmp r0, #0 + bge _082972BE +_082972BA: + movs r0, #0 + b _082972DA +_082972BE: + cmp r0, #0x1e + bgt _082972A2 + movs r2, #0x3c + subs r2, r2, r0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + bl __lshrdi3 + adds r1, r0, #0 + ldr r0, [sp, #4] + cmp r0, #0 + beq _082972D8 + rsbs r1, r1, #0 +_082972D8: + adds r0, r1, #0 +_082972DA: + add sp, #0x1c + pop {pc} + .align 2, 0 + thumb_func_end __fixdfsi + + thumb_func_start __negdf2 +__negdf2: @ 0x082972E0 + push {lr} + sub sp, #0x1c + str r0, [sp, #0x14] + str r1, [sp, #0x18] + add r0, sp, #0x14 + mov r1, sp + bl __unpack_d + movs r1, #0 + ldr r0, [sp, #4] + cmp r0, #0 + bne _082972FA + movs r1, #1 +_082972FA: + str r1, [sp, #4] + mov r0, sp + bl __pack_d + add sp, #0x1c + pop {pc} + .align 2, 0 + thumb_func_end __negdf2 + + thumb_func_start __make_dp +__make_dp: @ 0x08297308 + sub sp, #4 + push {r4, lr} + sub sp, #0x14 + str r3, [sp, #0x1c] + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x20] + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, sp + bl __pack_d + add sp, #0x14 + pop {r4} + pop {r3} + add sp, #4 + bx r3 + .align 2, 0 + thumb_func_end __make_dp + + thumb_func_start __truncdfsf2 +__truncdfsf2: @ 0x08297330 + push {r4, r5, lr} + sub sp, #0x1c + str r0, [sp, #0x14] + str r1, [sp, #0x18] + add r0, sp, #0x14 + mov r1, sp + bl __unpack_d + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + lsls r5, r3, #2 + lsrs r4, r2, #0x1e + adds r0, r5, #0 + orrs r0, r4 + adds r5, r0, #0 + ldr r4, _08297370 + adds r0, r2, #0 + ands r0, r4 + movs r1, #0 + orrs r0, r1 + cmp r0, #0 + beq _08297360 + movs r0, #1 + orrs r5, r0 +_08297360: + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + adds r3, r5, #0 + bl __make_fp + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 +_08297370: .4byte 0x3FFFFFFF + thumb_func_end __truncdfsf2 + + thumb_func_start __pack_f +__pack_f: @ 0x08297374 + push {r4, r5, r6, lr} + ldr r2, [r0, #0xc] + ldr r6, [r0, #4] + movs r5, #0 + movs r1, #0 + ldr r3, [r0] + cmp r3, #1 + bhi _08297386 + movs r1, #1 +_08297386: + cmp r1, #0 + beq _08297394 + movs r5, #0xff + movs r0, #0x80 + lsls r0, r0, #0xd + orrs r2, r0 + b _082973FA +_08297394: + movs r1, #0 + cmp r3, #4 + bne _0829739C + movs r1, #1 +_0829739C: + cmp r1, #0 + bne _082973D0 + movs r1, #0 + cmp r3, #2 + bne _082973A8 + movs r1, #1 +_082973A8: + cmp r1, #0 + beq _082973B0 + movs r2, #0 + b _082973FA +_082973B0: + cmp r2, #0 + beq _082973FA + ldr r0, [r0, #8] + movs r3, #0x7e + rsbs r3, r3, #0 + cmp r0, r3 + bge _082973CC + subs r0, r3, r0 + cmp r0, #0x19 + ble _082973C8 + movs r2, #0 + b _082973F8 +_082973C8: + lsrs r2, r0 + b _082973F8 +_082973CC: + cmp r0, #0x7f + ble _082973D6 +_082973D0: + movs r5, #0xff + movs r2, #0 + b _082973FA +_082973D6: + adds r5, r0, #0 + adds r5, #0x7f + movs r0, #0x7f + ands r0, r2 + cmp r0, #0x40 + bne _082973EE + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _082973F0 + adds r2, #0x40 + b _082973F0 +_082973EE: + adds r2, #0x3f +_082973F0: + cmp r2, #0 + bge _082973F8 + lsrs r2, r2, #1 + adds r5, #1 +_082973F8: + lsrs r2, r2, #7 +_082973FA: + ldr r0, _0829741C + ands r2, r0 + ldr r0, _08297420 + ands r4, r0 + orrs r4, r2 + movs r0, #0xff + ands r5, r0 + lsls r1, r5, #0x17 + ldr r0, _08297424 + ands r4, r0 + orrs r4, r1 + lsls r1, r6, #0x1f + ldr r0, _08297428 + ands r4, r0 + orrs r4, r1 + adds r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0829741C: .4byte 0x007FFFFF +_08297420: .4byte 0xFF800000 +_08297424: .4byte 0x807FFFFF +_08297428: .4byte 0x7FFFFFFF + thumb_func_end __pack_f + + thumb_func_start __unpack_f +__unpack_f: @ 0x0829742C + push {r4, lr} + adds r3, r1, #0 + ldr r0, [r0] + lsls r1, r0, #9 + lsrs r2, r1, #9 + lsls r1, r0, #1 + lsrs r1, r1, #0x18 + lsrs r0, r0, #0x1f + str r0, [r3, #4] + cmp r1, #0 + bne _08297470 + cmp r2, #0 + bne _0829744C + movs r0, #2 + str r0, [r3] + b _082974A4 +_0829744C: + adds r4, r1, #0 + subs r4, #0x7e + str r4, [r3, #8] + lsls r2, r2, #7 + movs r0, #3 + str r0, [r3] + ldr r1, _0829746C + cmp r2, r1 + bhi _0829748C + adds r0, r4, #0 +_08297460: + lsls r2, r2, #1 + subs r0, #1 + cmp r2, r1 + bls _08297460 + str r0, [r3, #8] + b _0829748C + .align 2, 0 +_0829746C: .4byte 0x3FFFFFFF +_08297470: + cmp r1, #0xff + bne _08297490 + cmp r2, #0 + bne _0829747E + movs r0, #4 + str r0, [r3] + b _082974A4 +_0829747E: + movs r0, #0x80 + lsls r0, r0, #0xd + ands r0, r2 + cmp r0, #0 + beq _0829748A + movs r0, #1 +_0829748A: + str r0, [r3] +_0829748C: + str r2, [r3, #0xc] + b _082974A4 +_08297490: + adds r0, r1, #0 + subs r0, #0x7f + str r0, [r3, #8] + movs r0, #3 + str r0, [r3] + lsls r0, r2, #7 + movs r1, #0x80 + lsls r1, r1, #0x17 + orrs r0, r1 + str r0, [r3, #0xc] +_082974A4: + pop {r4, pc} + .align 2, 0 + thumb_func_end __unpack_f + + thumb_func_start sub_082974A8 +sub_082974A8: @ 0x082974A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r7, r1, #0 + adds r5, r2, #0 + movs r0, #0 + ldr r2, [r6] + cmp r2, #1 + bhi _082974BE + movs r0, #1 +_082974BE: + cmp r0, #0 + beq _082974C6 +_082974C2: + adds r0, r6, #0 + b _0829761C +_082974C6: + movs r1, #0 + ldr r0, [r7] + cmp r0, #1 + bhi _082974D0 + movs r1, #1 +_082974D0: + cmp r1, #0 + bne _08297544 + movs r1, #0 + cmp r2, #4 + bne _082974DC + movs r1, #1 +_082974DC: + cmp r1, #0 + beq _082974FC + movs r1, #0 + cmp r0, #4 + bne _082974E8 + movs r1, #1 +_082974E8: + cmp r1, #0 + beq _082974C2 + ldr r1, [r6, #4] + ldr r0, [r7, #4] + cmp r1, r0 + beq _082974C2 + ldr r0, _082974F8 + b _0829761C + .align 2, 0 +_082974F8: .4byte gUnknown_3001A90 +_082974FC: + movs r1, #0 + cmp r0, #4 + bne _08297504 + movs r1, #1 +_08297504: + cmp r1, #0 + bne _08297544 + movs r1, #0 + cmp r0, #2 + bne _08297510 + movs r1, #1 +_08297510: + cmp r1, #0 + beq _08297536 + movs r0, #0 + cmp r2, #2 + bne _0829751C + movs r0, #1 +_0829751C: + cmp r0, #0 + beq _082974C2 + adds r1, r5, #0 + adds r0, r6, #0 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r0, [r0] + str r0, [r1] + ldr r0, [r6, #4] + ldr r1, [r7, #4] + ands r0, r1 + str r0, [r5, #4] + b _0829761A +_08297536: + movs r1, #0 + ldr r0, [r6] + cmp r0, #2 + bne _08297540 + movs r1, #1 +_08297540: + cmp r1, #0 + beq _08297548 +_08297544: + adds r0, r7, #0 + b _0829761C +_08297548: + ldr r1, [r6, #8] + ldr r3, [r7, #8] + ldr r2, [r6, #0xc] + ldr r4, [r7, #0xc] + subs r0, r1, r3 + cmp r0, #0 + bge _08297558 + rsbs r0, r0, #0 +_08297558: + cmp r0, #0x1f + bgt _0829759C + ldr r6, [r6, #4] + ldr r7, [r7, #4] + mov r8, r7 + cmp r1, r3 + ble _0829757E + movs r7, #1 + mov ip, r7 + subs r3, r1, r3 +_0829756C: + subs r3, #1 + adds r0, r4, #0 + mov r7, ip + ands r0, r7 + lsrs r4, r4, #1 + orrs r4, r0 + cmp r3, #0 + bne _0829756C + adds r3, r1, #0 +_0829757E: + cmp r3, r1 + ble _082975AE + movs r0, #1 + mov ip, r0 + subs r1, r3, r1 +_08297588: + subs r1, #1 + adds r0, r2, #0 + mov r7, ip + ands r0, r7 + lsrs r2, r2, #1 + orrs r2, r0 + cmp r1, #0 + bne _08297588 + adds r1, r3, #0 + b _082975AE +_0829759C: + cmp r1, r3 + ble _082975A4 + movs r4, #0 + b _082975A8 +_082975A4: + adds r1, r3, #0 + movs r2, #0 +_082975A8: + ldr r6, [r6, #4] + ldr r7, [r7, #4] + mov r8, r7 +_082975AE: + cmp r6, r8 + beq _082975F8 + cmp r6, #0 + beq _082975BA + subs r3, r4, r2 + b _082975BC +_082975BA: + subs r3, r2, r4 +_082975BC: + cmp r3, #0 + blt _082975CA + movs r0, #0 + str r0, [r5, #4] + str r1, [r5, #8] + str r3, [r5, #0xc] + b _082975D4 +_082975CA: + movs r0, #1 + str r0, [r5, #4] + str r1, [r5, #8] + rsbs r0, r3, #0 + str r0, [r5, #0xc] +_082975D4: + ldr r1, [r5, #0xc] + subs r0, r1, #1 + ldr r2, _082975F4 + cmp r0, r2 + bhi _08297600 +_082975DE: + lsls r0, r1, #1 + str r0, [r5, #0xc] + ldr r1, [r5, #8] + subs r1, #1 + str r1, [r5, #8] + adds r1, r0, #0 + subs r0, r1, #1 + cmp r0, r2 + bls _082975DE + b _08297600 + .align 2, 0 +_082975F4: .4byte 0x3FFFFFFE +_082975F8: + str r6, [r5, #4] + str r1, [r5, #8] + adds r0, r2, r4 + str r0, [r5, #0xc] +_08297600: + movs r0, #3 + str r0, [r5] + ldr r1, [r5, #0xc] + cmp r1, #0 + bge _0829761A + movs r0, #1 + ands r0, r1 + lsrs r1, r1, #1 + orrs r0, r1 + str r0, [r5, #0xc] + ldr r0, [r5, #8] + adds r0, #1 + str r0, [r5, #8] +_0829761A: + adds r0, r5, #0 +_0829761C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end sub_082974A8 + + thumb_func_start __addsf3 +__addsf3: @ 0x08297624 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x30] + str r1, [sp, #0x34] + add r0, sp, #0x30 + mov r1, sp + bl __unpack_f + add r0, sp, #0x34 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + add r2, sp, #0x20 + mov r0, sp + adds r1, r4, #0 + bl sub_082974A8 + bl __pack_f + add sp, #0x38 + pop {r4, pc} + thumb_func_end __addsf3 + + thumb_func_start __subsf3 +__subsf3: @ 0x08297650 + push {r4, lr} + sub sp, #0x38 + str r0, [sp, #0x30] + str r1, [sp, #0x34] + add r0, sp, #0x30 + mov r1, sp + bl __unpack_f + add r0, sp, #0x34 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + ldr r0, [r4, #4] + movs r1, #1 + eors r0, r1 + str r0, [r4, #4] + add r2, sp, #0x20 + mov r0, sp + adds r1, r4, #0 + bl sub_082974A8 + bl __pack_f + add sp, #0x38 + pop {r4, pc} + thumb_func_end __subsf3 + + thumb_func_start __mulsf3 +__mulsf3: @ 0x08297684 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x38 + str r0, [sp, #0x30] + str r1, [sp, #0x34] + add r0, sp, #0x30 + mov r1, sp + bl __unpack_f + add r0, sp, #0x34 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + mov r7, sp + add r0, sp, #0x20 + mov r8, r0 + movs r0, #0 + ldr r1, [sp] + mov sb, r8 + cmp r1, #1 + bhi _082976B6 + movs r0, #1 +_082976B6: + cmp r0, #0 + bne _08297714 + movs r2, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _082976C4 + movs r2, #1 +_082976C4: + cmp r2, #0 + beq _082976CC + ldr r0, [sp, #4] + b _08297734 +_082976CC: + movs r2, #0 + cmp r1, #4 + bne _082976D4 + movs r2, #1 +_082976D4: + cmp r2, #0 + beq _082976E6 + movs r1, #0 + cmp r0, #2 + bne _082976E0 + movs r1, #1 +_082976E0: + cmp r1, #0 + bne _082976FE + b _08297714 +_082976E6: + movs r2, #0 + cmp r0, #4 + bne _082976EE + movs r2, #1 +_082976EE: + cmp r2, #0 + beq _08297708 + movs r0, #0 + cmp r1, #2 + bne _082976FA + movs r0, #1 +_082976FA: + cmp r0, #0 + beq _08297732 +_082976FE: + ldr r0, _08297704 + b _082977D6 + .align 2, 0 +_08297704: .4byte gUnknown_3001A90 +_08297708: + movs r2, #0 + cmp r1, #2 + bne _08297710 + movs r2, #1 +_08297710: + cmp r2, #0 + beq _08297726 +_08297714: + ldr r0, [sp, #4] + ldr r1, [sp, #0x14] + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [sp, #4] + mov r0, sp + b _082977D6 +_08297726: + movs r1, #0 + cmp r0, #2 + bne _0829772E + movs r1, #1 +_0829772E: + cmp r1, #0 + beq _08297744 +_08297732: + ldr r0, [r7, #4] +_08297734: + ldr r1, [sp, #0x14] + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [sp, #0x14] + adds r0, r4, #0 + b _082977D6 +_08297744: + ldr r0, [r7, #0xc] + movs r1, #0 + ldr r2, [sp, #0x1c] + movs r3, #0 + bl __muldi3 + adds r2, r1, #0 + adds r5, r2, #0 + adds r6, r0, #0 + ldr r4, [r7, #8] + ldr r0, [sp, #0x18] + adds r4, r4, r0 + str r4, [sp, #0x28] + ldr r1, [r7, #4] + ldr r0, [sp, #0x14] + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + str r0, [sp, #0x24] + adds r4, #2 + str r4, [sp, #0x28] + cmp r2, #0 + bge _08297790 + movs r2, #1 + movs r1, #0x80 + lsls r1, r1, #0x18 +_0829777A: + adds r4, #1 + adds r0, r5, #0 + ands r0, r2 + cmp r0, #0 + beq _08297788 + lsrs r6, r6, #1 + orrs r6, r1 +_08297788: + lsrs r5, r5, #1 + cmp r5, #0 + blt _0829777A + str r4, [sp, #0x28] +_08297790: + ldr r0, _082977E4 + cmp r5, r0 + bhi _082977B6 + movs r4, #0x80 + lsls r4, r4, #0x18 + movs r3, #1 + adds r2, r0, #0 + ldr r1, [sp, #0x28] +_082977A0: + subs r1, #1 + lsls r5, r5, #1 + adds r0, r6, #0 + ands r0, r4 + cmp r0, #0 + beq _082977AE + orrs r5, r3 +_082977AE: + lsls r6, r6, #1 + cmp r5, r2 + bls _082977A0 + str r1, [sp, #0x28] +_082977B6: + movs r0, #0x7f + ands r0, r5 + cmp r0, #0x40 + bne _082977CC + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + bne _082977CA + cmp r6, #0 + beq _082977CC +_082977CA: + adds r5, #0x40 +_082977CC: + str r5, [sp, #0x2c] + movs r0, #3 + mov r1, r8 + str r0, [r1] + mov r0, sb +_082977D6: + bl __pack_f + add sp, #0x38 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_082977E4: .4byte 0x3FFFFFFF + thumb_func_end __mulsf3 + + thumb_func_start __divsf3 +__divsf3: @ 0x082977E8 + push {r4, r5, r6, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r5, sp, #0x10 + adds r1, r5, #0 + bl __unpack_f + mov r4, sp + movs r0, #0 + ldr r3, [sp] + cmp r3, #1 + bhi _0829780E + movs r0, #1 +_0829780E: + cmp r0, #0 + beq _08297816 + mov r1, sp + b _082978C8 +_08297816: + movs r0, #0 + ldr r2, [sp, #0x10] + adds r6, r2, #0 + cmp r2, #1 + bhi _08297822 + movs r0, #1 +_08297822: + cmp r0, #0 + beq _0829782A + adds r1, r5, #0 + b _082978C8 +_0829782A: + ldr r0, [sp, #4] + ldr r1, [sp, #0x14] + eors r0, r1 + str r0, [sp, #4] + movs r0, #0 + cmp r3, #4 + bne _0829783A + movs r0, #1 +_0829783A: + cmp r0, #0 + bne _0829784A + movs r0, #0 + cmp r3, #2 + bne _08297846 + movs r0, #1 +_08297846: + cmp r0, #0 + beq _0829785C +_0829784A: + ldr r0, [r4] + adds r1, r4, #0 + cmp r0, r6 + bne _082978C8 + ldr r1, _08297858 + b _082978C8 + .align 2, 0 +_08297858: .4byte gUnknown_3001A90 +_0829785C: + movs r1, #0 + cmp r2, #4 + bne _08297864 + movs r1, #1 +_08297864: + cmp r1, #0 + beq _08297870 + str r0, [sp, #0xc] + str r0, [sp, #8] + mov r1, sp + b _082978C8 +_08297870: + movs r0, #0 + cmp r2, #2 + bne _08297878 + movs r0, #1 +_08297878: + cmp r0, #0 + beq _08297882 + movs r0, #4 + str r0, [r4] + b _082978C6 +_08297882: + ldr r1, [r4, #8] + ldr r0, [sp, #0x18] + subs r0, r1, r0 + str r0, [r4, #8] + ldr r2, [r4, #0xc] + ldr r3, [sp, #0x1c] + cmp r2, r3 + bhs _08297898 + lsls r2, r2, #1 + subs r0, #1 + str r0, [r4, #8] +_08297898: + movs r0, #0x80 + lsls r0, r0, #0x17 + movs r1, #0 +_0829789E: + cmp r2, r3 + blo _082978A6 + orrs r1, r0 + subs r2, r2, r3 +_082978A6: + lsrs r0, r0, #1 + lsls r2, r2, #1 + cmp r0, #0 + bne _0829789E + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x40 + bne _082978C4 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _082978C2 + cmp r2, #0 + beq _082978C4 +_082978C2: + adds r1, #0x40 +_082978C4: + str r1, [r4, #0xc] +_082978C6: + adds r1, r4, #0 +_082978C8: + adds r0, r1, #0 + bl __pack_f + add sp, #0x28 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end __divsf3 + + thumb_func_start __fpcmp_parts_f +__fpcmp_parts_f: @ 0x082978D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + ldr r2, [r4] + cmp r2, #1 + bhi _082978E2 + movs r0, #1 +_082978E2: + cmp r0, #0 + bne _082978F4 + movs r0, #0 + ldr r3, [r1] + cmp r3, #1 + bhi _082978F0 + movs r0, #1 +_082978F0: + cmp r0, #0 + beq _082978F8 +_082978F4: + movs r0, #1 + b _082979B6 +_082978F8: + movs r0, #0 + cmp r2, #4 + bne _08297900 + movs r0, #1 +_08297900: + cmp r0, #0 + beq _08297918 + movs r0, #0 + cmp r3, #4 + bne _0829790C + movs r0, #1 +_0829790C: + cmp r0, #0 + beq _08297918 + ldr r0, [r1, #4] + ldr r1, [r4, #4] + subs r0, r0, r1 + b _082979B6 +_08297918: + movs r2, #0 + ldr r0, [r4] + cmp r0, #4 + bne _08297922 + movs r2, #1 +_08297922: + cmp r2, #0 + bne _08297970 + movs r2, #0 + cmp r3, #4 + bne _0829792E + movs r2, #1 +_0829792E: + cmp r2, #0 + beq _08297940 +_08297932: + ldr r0, [r1, #4] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, #0 + beq _0829797A + movs r1, #1 + b _0829797A +_08297940: + movs r2, #0 + cmp r0, #2 + bne _08297948 + movs r2, #1 +_08297948: + cmp r2, #0 + beq _08297958 + movs r2, #0 + cmp r3, #2 + bne _08297954 + movs r2, #1 +_08297954: + cmp r2, #0 + bne _082979B4 +_08297958: + movs r2, #0 + cmp r0, #2 + bne _08297960 + movs r2, #1 +_08297960: + cmp r2, #0 + bne _08297932 + movs r0, #0 + cmp r3, #2 + bne _0829796C + movs r0, #1 +_0829796C: + cmp r0, #0 + beq _0829797E +_08297970: + ldr r0, [r4, #4] + movs r1, #1 + cmp r0, #0 + beq _0829797A + subs r1, #2 +_0829797A: + adds r0, r1, #0 + b _082979B6 +_0829797E: + ldr r3, [r4, #4] + ldr r0, [r1, #4] + cmp r3, r0 + beq _08297990 +_08297986: + movs r0, #1 + cmp r3, #0 + beq _082979B6 + subs r0, #2 + b _082979B6 +_08297990: + ldr r2, [r4, #8] + ldr r0, [r1, #8] + cmp r2, r0 + bgt _08297986 + cmp r2, r0 + bge _082979A8 +_0829799C: + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, #0 + beq _082979B6 + movs r0, #1 + b _082979B6 +_082979A8: + ldr r0, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r0, r1 + bhi _08297986 + cmp r0, r1 + blo _0829799C +_082979B4: + movs r0, #0 +_082979B6: + pop {r4, pc} + thumb_func_end __fpcmp_parts_f + + thumb_func_start __cmpsf2 +__cmpsf2: @ 0x082979B8 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f + add sp, #0x28 + pop {r4, pc} + .align 2, 0 + thumb_func_end __cmpsf2 + + thumb_func_start __eqsf2 +__eqsf2: @ 0x082979E0 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297A04 + movs r1, #1 +_08297A04: + cmp r1, #0 + bne _08297A16 + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297A12 + movs r1, #1 +_08297A12: + cmp r1, #0 + beq _08297A1A +_08297A16: + movs r0, #1 + b _08297A22 +_08297A1A: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297A22: + add sp, #0x28 + pop {r4, pc} + .align 2, 0 + thumb_func_end __eqsf2 + + thumb_func_start __nesf2 +__nesf2: @ 0x08297A28 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297A4C + movs r1, #1 +_08297A4C: + cmp r1, #0 + bne _08297A5E + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297A5A + movs r1, #1 +_08297A5A: + cmp r1, #0 + beq _08297A62 +_08297A5E: + movs r0, #1 + b _08297A6A +_08297A62: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297A6A: + add sp, #0x28 + pop {r4, pc} + .align 2, 0 + thumb_func_end __nesf2 + + thumb_func_start __gtsf2 +__gtsf2: @ 0x08297A70 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297A94 + movs r1, #1 +_08297A94: + cmp r1, #0 + bne _08297AA6 + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297AA2 + movs r1, #1 +_08297AA2: + cmp r1, #0 + beq _08297AAC +_08297AA6: + movs r0, #1 + rsbs r0, r0, #0 + b _08297AB4 +_08297AAC: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297AB4: + add sp, #0x28 + pop {r4, pc} + thumb_func_end __gtsf2 + + thumb_func_start __gesf2 +__gesf2: @ 0x08297AB8 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297ADC + movs r1, #1 +_08297ADC: + cmp r1, #0 + bne _08297AEE + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297AEA + movs r1, #1 +_08297AEA: + cmp r1, #0 + beq _08297AF4 +_08297AEE: + movs r0, #1 + rsbs r0, r0, #0 + b _08297AFC +_08297AF4: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297AFC: + add sp, #0x28 + pop {r4, pc} + thumb_func_end __gesf2 + + thumb_func_start __ltsf2 +__ltsf2: @ 0x08297B00 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297B24 + movs r1, #1 +_08297B24: + cmp r1, #0 + bne _08297B36 + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297B32 + movs r1, #1 +_08297B32: + cmp r1, #0 + beq _08297B3A +_08297B36: + movs r0, #1 + b _08297B42 +_08297B3A: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297B42: + add sp, #0x28 + pop {r4, pc} + .align 2, 0 + thumb_func_end __ltsf2 + + thumb_func_start __lesf2 +__lesf2: @ 0x08297B48 + push {r4, lr} + sub sp, #0x28 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, sp, #0x20 + mov r1, sp + bl __unpack_f + add r0, sp, #0x24 + add r4, sp, #0x10 + adds r1, r4, #0 + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #1 + bhi _08297B6C + movs r1, #1 +_08297B6C: + cmp r1, #0 + bne _08297B7E + movs r1, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bhi _08297B7A + movs r1, #1 +_08297B7A: + cmp r1, #0 + beq _08297B82 +_08297B7E: + movs r0, #1 + b _08297B8A +_08297B82: + mov r0, sp + adds r1, r4, #0 + bl __fpcmp_parts_f +_08297B8A: + add sp, #0x28 + pop {r4, pc} + .align 2, 0 + thumb_func_end __lesf2 + + thumb_func_start __floatsisf +__floatsisf: @ 0x08297B90 + push {lr} + sub sp, #0x10 + adds r1, r0, #0 + movs r0, #3 + str r0, [sp] + lsrs r2, r1, #0x1f + str r2, [sp, #4] + cmp r1, #0 + bne _08297BA8 + movs r0, #2 + str r0, [sp] + b _08297BE0 +_08297BA8: + movs r0, #0x1e + str r0, [sp, #8] + cmp r2, #0 + beq _08297BC6 + movs r0, #0x80 + lsls r0, r0, #0x18 + cmp r1, r0 + bne _08297BC0 + ldr r0, _08297BBC + b _08297BE6 + .align 2, 0 +_08297BBC: .4byte 0xCF000000 +_08297BC0: + rsbs r0, r1, #0 + str r0, [sp, #0xc] + b _08297BC8 +_08297BC6: + str r1, [sp, #0xc] +_08297BC8: + ldr r2, [sp, #0xc] + ldr r3, _08297BEC + cmp r2, r3 + bhi _08297BE0 + ldr r1, [sp, #8] +_08297BD2: + lsls r0, r2, #1 + subs r1, #1 + adds r2, r0, #0 + cmp r0, r3 + bls _08297BD2 + str r1, [sp, #8] + str r0, [sp, #0xc] +_08297BE0: + mov r0, sp + bl __pack_f +_08297BE6: + add sp, #0x10 + pop {pc} + .align 2, 0 +_08297BEC: .4byte 0x3FFFFFFF + thumb_func_end __floatsisf + + thumb_func_start __fixsfsi +__fixsfsi: @ 0x08297BF0 + push {lr} + sub sp, #0x14 + str r0, [sp, #0x10] + add r0, sp, #0x10 + mov r1, sp + bl __unpack_f + movs r1, #0 + ldr r0, [sp] + cmp r0, #2 + bne _08297C08 + movs r1, #1 +_08297C08: + cmp r1, #0 + bne _08297C3A + movs r1, #0 + cmp r0, #1 + bhi _08297C14 + movs r1, #1 +_08297C14: + cmp r1, #0 + bne _08297C3A + movs r1, #0 + cmp r0, #4 + bne _08297C20 + movs r1, #1 +_08297C20: + cmp r1, #0 + beq _08297C34 +_08297C24: + ldr r0, [sp, #4] + ldr r1, _08297C30 + cmp r0, #0 + beq _08297C52 + adds r1, #1 + b _08297C52 + .align 2, 0 +_08297C30: .4byte 0x7FFFFFFF +_08297C34: + ldr r1, [sp, #8] + cmp r1, #0 + bge _08297C3E +_08297C3A: + movs r0, #0 + b _08297C54 +_08297C3E: + cmp r1, #0x1e + bgt _08297C24 + movs r0, #0x1e + subs r0, r0, r1 + ldr r1, [sp, #0xc] + lsrs r1, r0 + ldr r0, [sp, #4] + cmp r0, #0 + beq _08297C52 + rsbs r1, r1, #0 +_08297C52: + adds r0, r1, #0 +_08297C54: + add sp, #0x14 + pop {pc} + thumb_func_end __fixsfsi + + thumb_func_start __negsf2 +__negsf2: @ 0x08297C58 + push {lr} + sub sp, #0x14 + str r0, [sp, #0x10] + add r0, sp, #0x10 + mov r1, sp + bl __unpack_f + movs r1, #0 + ldr r0, [sp, #4] + cmp r0, #0 + bne _08297C70 + movs r1, #1 +_08297C70: + str r1, [sp, #4] + mov r0, sp + bl __pack_f + add sp, #0x14 + pop {pc} + thumb_func_end __negsf2 + + thumb_func_start __make_fp +__make_fp: @ 0x08297C7C + push {lr} + sub sp, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + mov r0, sp + bl __pack_f + add sp, #0x10 + pop {pc} + .align 2, 0 + thumb_func_end __make_fp + + thumb_func_start __extendsfdf2 +__extendsfdf2: @ 0x08297C94 + push {r4, r5, r6, lr} + sub sp, #0x18 + str r0, [sp, #0x14] + add r0, sp, #0x14 + add r1, sp, #4 + bl __unpack_f + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + movs r4, #0 + lsrs r6, r3, #2 + lsls r5, r4, #0x1e + adds r4, r6, #0 + orrs r4, r5 + lsls r3, r3, #0x1e + str r4, [sp] + bl __make_dp + add sp, #0x18 + pop {r4, r5, r6, pc} + thumb_func_end __extendsfdf2 + + thumb_func_start __lshrdi3 +__lshrdi3: @ 0x08297CC0 + push {r4, r5, r6, lr} + adds r6, r1, #0 + adds r5, r0, #0 + cmp r2, #0 + beq _08297CF0 + movs r0, #0x20 + subs r0, r0, r2 + cmp r0, #0 + bgt _08297CDC + movs r4, #0 + rsbs r0, r0, #0 + adds r3, r6, #0 + lsrs r3, r0 + b _08297CEC +_08297CDC: + adds r1, r6, #0 + lsls r1, r0 + adds r4, r6, #0 + lsrs r4, r2 + adds r0, r5, #0 + lsrs r0, r2 + adds r3, r0, #0 + orrs r3, r1 +_08297CEC: + adds r1, r4, #0 + adds r0, r3, #0 +_08297CF0: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end __lshrdi3 + + thumb_func_start __negdi2 +__negdi2: @ 0x08297CF4 + push {r4, lr} + rsbs r2, r0, #0 + adds r3, r2, #0 + rsbs r1, r1, #0 + cmp r2, #0 + beq _08297D02 + subs r1, #1 +_08297D02: + adds r4, r1, #0 + adds r1, r4, #0 + adds r0, r3, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end __negdi2 diff --git a/asm/libgcnmultiboot.s b/asm/libgcnmultiboot.s new file mode 100644 index 0000000..b67d978 --- /dev/null +++ b/asm/libgcnmultiboot.s @@ -0,0 +1,454 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + thumb_func_start GameCubeMultiBoot_Hash +GameCubeMultiBoot_Hash: @ 0x0828D2F8 + push {r4, lr} + ldr r4, _0828D400 + eors r3, r1 + movs r2, #0x20 +_0828D300: + lsrs r3, r3, #1 + blo _0828D306 + eors r3, r4 +_0828D306: + subs r2, #1 + bne _0828D300 + pop {r4, pc} + thumb_func_end GameCubeMultiBoot_Hash + + thumb_func_start GameCubeMultiBoot_Main +GameCubeMultiBoot_Main: @ 0x0828D30C + ldr r1, [r0, #0x28] + cmp r1, #0 + beq _0828D332 + ldrb r1, [r0, #1] + adds r1, #1 + strb r1, [r0, #1] + ldrb r1, [r0, #2] + cmp r1, #2 + beq _0828D37C + ldr r3, _0828D5C0 + ldrh r2, [r3, #8] + movs r1, #0 + strh r1, [r3, #8] + ldrb r1, [r0] + cmp r1, #0xa + bgt _0828D330 + adds r1, #1 + strb r1, [r0] +_0828D330: + strh r2, [r3, #8] +_0828D332: + bhs GameCubeMultiBoot_Init + ldrb r1, [r0, #2] + cmp r1, #0 + bne _0828D37E + ldr r1, [r0, #0x24] + ldr r2, [r0, #0x20] + subs r1, r1, r2 + beq _0828D3FE + cmp r1, #0xa0 + blo _0828D3FE + push {r4, r5, r6} + movs r1, #0x98 + adds r2, #4 + ldr r4, _0828D408 +_0828D34E: + ldm r2!, {r5} + ldm r4!, {r6} + cmp r5, r6 + bne _0828D364 + subs r1, #4 + bne _0828D34E + ldm r2!, {r5} + ldm r4!, {r6} + eors r5, r6 + lsrs r5, r5, #8 + str r2, [r0, #0x20] +_0828D364: + pop {r4, r5, r6} + bne GameCubeMultiBoot_Init + movs r1, #1 + strb r1, [r0, #2] + ldr r1, [r0, #4] + ldr r2, [r0, #8] + eors r1, r2 + str r1, [r0, #0x18] + ldr r2, _0828D404 + muls r1, r2, r1 + adds r1, #1 + str r1, [r0, #0x14] +_0828D37C: + bx lr +_0828D37E: + ldr r1, [r0, #0x24] + mov ip, r1 + ldr r3, [r0, #0x18] + push {r4, r5, r6, r7} + ldr r4, [r0, #0x20] + ldr r5, _0828D404 + ldr r6, [r0, #0x14] + ldr r7, _0828D400 +_0828D38E: + cmp r4, ip + bhs _0828D3AE + ldr r1, [r4] + eors r1, r6 + adds r1, r1, r3 + stm r4!, {r1} + eors r3, r1 + movs r2, #0x20 +_0828D39E: + lsrs r3, r3, #1 + blo _0828D3A4 + eors r3, r7 +_0828D3A4: + subs r2, #1 + bne _0828D39E + muls r6, r5, r6 + adds r6, #1 + b _0828D38E +_0828D3AE: + str r4, [r0, #0x20] + str r6, [r0, #0x14] + pop {r4, r5, r6, r7} + str r3, [r0, #0x18] + ldrh r1, [r0, #0x12] + cmp r1, #0 + bne _0828D3FE + ldr r1, [r0, #0x24] + ldr r2, [r0, #0x20] + cmp r1, r2 + bne _0828D3FE + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _0828D3E8 + ldrh r1, [r0, #0x10] + cmp r1, #0 + beq _0828D37C + mov ip, lr + movs r1, #0xbb + ldr r3, [r0, #0xc] + bl GameCubeMultiBoot_Hash + ldrh r1, [r0, #0x10] + mov lr, ip + subs r1, r1, r3 + bne GameCubeMultiBoot_Init + movs r1, #2 + strb r1, [r0, #2] + bx lr +_0828D3E8: + mov ip, lr + ldrb r1, [r0, #3] + lsls r1, r1, #0x18 + subs r1, #1 + str r1, [r0, #0xc] + bl GameCubeMultiBoot_Hash + lsls r3, r3, #8 + adds r3, #0xff + str r3, [r0, #0x1c] + bx ip +_0828D3FE: + bx lr + .align 2, 0 +_0828D400: .4byte 0x0000A1C1 +_0828D404: .4byte 0x6177614B +_0828D408: .4byte 0x08000004 + thumb_func_end GameCubeMultiBoot_Main + + thumb_func_start GameCubeMultiBoot_ExecuteProgram +GameCubeMultiBoot_ExecuteProgram: @ 0x0828D40C + ldrb r1, [r0, #2] + cmp r1, #2 + bne _0828D41E + ldr r3, _0828D5C0 + movs r1, #0 + strh r1, [r3, #8] + ldr r1, _0828D5D0 + adds r1, #0xc0 + bx r1 +_0828D41E: + bx lr + thumb_func_end GameCubeMultiBoot_ExecuteProgram + + thumb_func_start GameCubeMultiBoot_Init +GameCubeMultiBoot_Init: + ldr r3, _0828D5C0 + ldrh r2, [r3, #8] + movs r1, #0 + strh r1, [r3, #8] + add r3, pc, #0x54 + str r3, [r0, #0x28] + ldrb r3, [r0, #3] + push {r3} + ldrb r3, [r0, #1] + push {r0, r3} + adds r3, r0, #0 + adds r3, #0x20 +_0828D438: + stm r0!, {r1} + cmp r0, r3 + blo _0828D438 + pop {r0, r3} + lsrs r3, r3, #1 + strb r3, [r0, #3] + pop {r3} + strb r3, [r0, #1] + ldr r3, _0828D5C4 + lsls r0, r3, #0xa + strh r0, [r3, #0x14] + movs r0, #0xc0 + lsls r0, r0, #8 + strh r0, [r3, #0x14] + movs r0, #0x47 + strh r0, [r3, #0x20] + strh r1, [r3, #0x38] + ldr r3, _0828D5C0 + movs r0, #0x80 + strh r0, [r3, #2] + ldrh r1, [r3] + orrs r1, r0 + strh r1, [r3] + strh r2, [r3, #8] + bx lr + thumb_func_end GameCubeMultiBoot_ExecuteProgram + + non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt +GameCubeMultiBoot_HandleSerialInterrupt: @ 0x0828D46A + ldr r3, _0828D5C4 + ldrh r1, [r3, #0x20] + strh r1, [r3, #0x20] + movs r2, #0 + strb r2, [r0] + ldr r2, [r0, #0x28] + cmp r2, #0 + beq _0828D48C + lsrs r1, r1, #1 + bhs _0828D48E + mov pc, r2 +_0828D480: + movs r2, #0 + strh r2, [r3, #0x38] +_0828D484: + str r2, [r0, #0x28] +_0828D486: + ldr r3, _0828D5C8 + ldrh r1, [r3, #2] + strb r1, [r0, #3] +_0828D48C: + bx lr +_0828D48E: + ldr r1, [r3, #0x30] + ldr r1, _0828D5CC + str r1, [r3, #0x34] + movs r1, #0x10 + strh r1, [r3, #0x38] + ldrb r1, [r0, #3] + strb r1, [r0, #9] + ldrb r1, [r0, #2] + cmp r1, #0 + bne _0828D480 + ldr r1, _0828D5D0 + str r1, [r0, #0x20] + str r1, [r0, #0x24] + add r2, pc, #0x0 + b _0828D484 + thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt + + thumb_func_start GcMbIntrHandler_CheckGameCodeSent +GcMbIntrHandler_CheckGameCodeSent: @ 0x0828D4AC + lsls r1, r1, #0x1f + blo _0828D480 + bmi _0828D4BC + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckGameCodeSent + + thumb_func_start GcMbIntrHandler_CheckHandshakeResponse +GcMbIntrHandler_CheckHandshakeResponse: @ 0x0828D4B8 + lsrs r1, r1, #1 + blo _0828D480 +_0828D4BC: + ldr r1, [r3, #0x30] + ldr r2, _0828D5CC + cmp r1, r2 + bne _0828D480 + ldrb r1, [r0, #3] + strb r1, [r0, #0xb] + add r2, pc, #0x0 + b _0828D484 + thumb_func_end GcMbIntrHandler_CheckHandshakeResponse + + thumb_func_start GcMbIntrHandler_ReceiveKeyA +GcMbIntrHandler_ReceiveKeyA: @ 0x0828D4CC + lsrs r1, r1, #1 + blo _0828D480 + ldr r1, [r3, #0x30] + lsrs r2, r1, #0x18 + cmp r2, #0xdd + bne _0828D480 + str r1, [r0, #4] + ldrb r1, [r0, #1] + strb r1, [r0, #0xa] + movs r2, #0 + movs r3, #0 + ldr r1, [r0, #8] + lsrs r1, r1, #8 +_0828D4E6: + lsrs r1, r1, #1 + adcs r2, r3 + cmp r1, #0 + bne _0828D4E6 + cmp r2, #0xe + bgt _0828D4F8 + cmp r2, #7 + bge _0828D4FA + movs r1, #0xff +_0828D4F8: + strb r1, [r0, #0xa] +_0828D4FA: + ldr r1, [r0, #8] + adds r1, #0xee + ldr r3, _0828D5C4 + str r1, [r3, #0x34] + movs r1, #0x30 + strh r1, [r3, #0x38] + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_ReceiveKeyA + + thumb_func_start GcMbIntrHandler_CheckKeyBSent +GcMbIntrHandler_CheckKeyBSent: @ 0x0828D50C + lsls r1, r1, #0x1f + blo _0828D480 + bmi _0828D51C + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckKeyBSent + + thumb_func_start GcMbIntrHandler_CheckImageSizeResponse +GcMbIntrHandler_CheckImageSizeResponse: @ 0x0828D518 + lsrs r1, r1, #1 + blo _0828D480 +_0828D51C: + ldr r1, [r3, #0x30] + ldr r2, _0828D5BC + cmp r1, r2 + bhs _0828D480 + adds r1, #1 + adds r1, r1, r1 + strh r1, [r0, #0x12] + ldrb r1, [r0, #2] + cmp r1, #0 +_0828D52E: + bne _0828D480 + ldr r1, _0828D5D0 + str r1, [r0, #0x20] + str r1, [r0, #0x24] + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckImageSizeResponse + + thumb_func_start GcMbIntrHandler_CheckImageResponse +GcMbIntrHandler_CheckImageResponse: @ 0x0828D53C + lsrs r1, r1, #1 + blo _0828D480 + ldr r2, [r0, #0x24] + movs r1, #4 + ands r1, r2 + adds r1, #8 + lsls r1, r1, #2 + strh r1, [r3, #0x38] + ldr r1, [r3, #0x30] + stm r2!, {r1} + str r2, [r0, #0x24] + ldrh r1, [r0, #0x12] + subs r1, #1 + strh r1, [r0, #0x12] + bne _0828D486 +_0828D55A: + ldrb r1, [r0, #1] + lsls r1, r1, #8 + adds r1, #0xcc + str r1, [r3, #0x34] + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckImageResponse + + thumb_func_start GcMbIntrHandler_CheckCounter2Sent +GcMbIntrHandler_CheckCounter2Sent: @ 0x0828D568 + lsls r1, r1, #0x1f +_0828D56A: + blo _0828D480 + ldr r1, [r0, #0x1c] + cmp r1, #0 + beq _0828D55A + str r1, [r3, #0x34] + add r2, pc, #0x0 + b _0828D484 + thumb_func_end GcMbIntrHandler_CheckCounter2Sent + + thumb_func_start GcMbIntrHandler_CheckKeyCDerivationSent +GcMbIntrHandler_CheckKeyCDerivationSent: @ 0x0828D578 + lsls r1, r1, #0x1f + blo _0828D56A + bmi _0828D588 + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckKeyCDerivationSent + + thumb_func_start GcMbIntrHandler_CheckBootKeyResponse +GcMbIntrHandler_CheckBootKeyResponse: @ 0x0828D584 + lsrs r1, r1, #1 + blo _0828D56A +_0828D588: + ldr r1, [r3, #0x30] + lsrs r2, r1, #0x18 + cmp r2, #0xbb + bne _0828D52E + strh r1, [r0, #0x10] + add r2, pc, #0x4 + b _0828D484 + .align 2, 0 + thumb_func_end GcMbIntrHandler_CheckBootKeyResponse + + thumb_func_start GcMbIntrHandler_StopUnconditionally +GcMbIntrHandler_StopUnconditionally: @ 0x0828D598 + b _0828D480 + thumb_func_end GcMbIntrHandler_StopUnconditionally + + non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit +GameCubeMultiBoot_Quit: @ 0x0828D59A + ldr r3, _0828D5C0 + ldrh r2, [r3, #8] + movs r1, #0 + strh r1, [r3, #8] + ldr r3, _0828D5C4 + movs r0, #7 + strh r0, [r3, #0x20] + lsls r0, r3, #0xa + strh r0, [r3, #0x14] + ldr r3, _0828D5C0 + movs r0, #0x80 + strh r0, [r3, #2] + ldrh r1, [r3] + bics r1, r0 + strh r1, [r3] + strh r2, [r3, #8] + bx lr + .align 2, 0 +_0828D5BC: .4byte 0x00004000 +_0828D5C0: .4byte 0x04000200 +_0828D5C4: .4byte 0x04000120 +_0828D5C8: .4byte 0x04000004 +_0828D5CC: .4byte 0x4A565841 +_0828D5D0: .4byte gUnknown_2000000 + thumb_func_end GameCubeMultiBoot_Quit diff --git a/asm/libisagbprn.s b/asm/libisagbprn.s new file mode 100644 index 0000000..ca99840 --- /dev/null +++ b/asm/libisagbprn.s @@ -0,0 +1,502 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start AGBPrintInit +AGBPrintInit: @ 0x08295600 + push {r4, r7, lr} + sub sp, #0x10 + mov r7, sp + ldr r0, _0829567C + str r0, [r7] + ldr r0, _08295680 + str r0, [r7, #4] + ldr r0, _08295684 + str r0, [r7, #8] + adds r0, r7, #0 + adds r0, #0xc + ldr r1, [r7, #4] + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #4] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, [r7, #8] + movs r1, #0x20 + strh r1, [r0] + ldr r0, [r7] + ldr r1, [r7] + ldr r2, [r7] + ldrh r3, [r2, #6] + movs r4, #0 + ands r3, r4 + adds r4, r3, #0 + strh r4, [r2, #6] + ldrh r2, [r1, #4] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + strh r3, [r1, #4] + ldrh r1, [r0] + movs r2, #0 + ands r1, r2 + adds r2, r1, #0 + strh r2, [r0] + ldr r0, [r7] + ldrh r1, [r0, #2] + movs r2, #0 + ands r1, r2 + adds r2, r1, #0 + movs r3, #0xfd + adds r1, r2, #0 + orrs r1, r3 + adds r2, r1, #0 + strh r2, [r0, #2] + ldr r0, [r7, #8] + movs r1, #0 + strh r1, [r0] + ldr r0, [r7, #4] + adds r1, r7, #0 + adds r1, #0xc + ldrh r2, [r1] + strh r2, [r0] + add sp, #0x10 + pop {r4, r7} + pop {r0} + bx r0 + .align 2, 0 +_0829567C: .4byte 0x09FE20F8 +_08295680: .4byte 0x04000204 +_08295684: .4byte 0x09FE2FFE + thumb_func_end AGBPrintInit + + thumb_func_start AGBPutcInternal +AGBPutcInternal: @ 0x08295688 + push {r4, r7, lr} + sub sp, #0x14 + mov r7, sp + adds r1, r7, #0 + strb r0, [r1] + ldr r0, _08295708 + str r0, [r7, #4] + ldr r0, [r7, #4] + ldrh r1, [r0, #2] + lsls r2, r1, #0x10 + lsrs r0, r2, #0x10 + lsls r1, r0, #0x10 + movs r2, #0x80 + lsls r2, r2, #0x14 + adds r0, r1, r2 + str r0, [r7, #8] + ldr r0, _0829570C + str r0, [r7, #0xc] + adds r0, r7, #0 + adds r0, #0x10 + ldr r1, [r7, #4] + ldrh r2, [r1, #6] + lsls r1, r2, #0x10 + lsrs r2, r1, #0x10 + lsrs r1, r2, #1 + adds r3, r1, #0 + lsls r2, r3, #0x10 + lsrs r1, r2, #0x10 + adds r2, r1, #0 + lsls r1, r2, #1 + ldr r2, [r7, #8] + adds r1, r1, r2 + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #0xc] + movs r1, #0x20 + strh r1, [r0] + adds r0, r7, #0 + adds r0, #0x10 + ldr r1, [r7, #4] + ldrh r2, [r1, #6] + movs r3, #1 + adds r1, r2, #0 + ands r1, r3 + adds r3, r1, #0 + lsls r2, r3, #0x10 + lsrs r1, r2, #0x10 + cmp r1, #0 + beq _08295710 + adds r1, r7, #0 + adds r1, #0x10 + ldrh r2, [r1] + movs r3, #0xff + adds r1, r2, #0 + ands r1, r3 + adds r2, r7, #0 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #8 + adds r2, r3, #0 + adds r3, r1, #0 + orrs r3, r2 + adds r1, r3, #0 + b _08295728 + .align 2, 0 +_08295708: .4byte 0x09FE20F8 +_0829570C: .4byte 0x09FE2FFE +_08295710: + adds r2, r7, #0 + adds r2, #0x10 + ldrh r3, [r2] + movs r4, #0xff + lsls r4, r4, #8 + adds r2, r3, #0 + ands r2, r4 + adds r3, r7, #0 + ldrb r4, [r3] + adds r3, r4, #0 + orrs r3, r2 + adds r1, r3, #0 +_08295728: + strh r1, [r0] + ldr r0, [r7, #4] + ldrh r1, [r0, #6] + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + lsrs r0, r1, #1 + adds r2, r0, #0 + lsls r1, r2, #0x10 + lsrs r0, r1, #0x10 + adds r1, r0, #0 + lsls r0, r1, #1 + ldr r1, [r7, #8] + adds r0, r0, r1 + adds r1, r7, #0 + adds r1, #0x10 + ldrh r2, [r1] + strh r2, [r0] + ldr r1, [r7, #4] + ldr r0, [r7, #4] + ldr r1, [r7, #4] + ldrh r2, [r1, #6] + adds r1, r2, #1 + ldrh r2, [r0, #6] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strh r1, [r0, #6] + ldr r0, [r7, #0xc] + movs r1, #0 + strh r1, [r0] + add sp, #0x14 + pop {r4, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end AGBPutcInternal + + thumb_func_start AGBPutc +AGBPutc: @ 0x08295774 + push {r7, lr} + sub sp, #0x10 + mov r7, sp + adds r1, r7, #0 + strb r0, [r1] + ldr r0, _082957CC + str r0, [r7, #4] + adds r0, r7, #0 + adds r0, #8 + ldr r1, [r7, #4] + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #4] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r2, #0 + strh r1, [r0] + adds r0, r7, #0 + ldrb r1, [r0] + adds r0, r1, #0 + bl AGBPutcInternal + ldr r0, [r7, #4] + adds r1, r7, #0 + adds r1, #8 + ldrh r2, [r1] + strh r2, [r0] + ldr r0, _082957D0 + str r0, [r7, #0xc] + ldr r1, [r7, #0xc] + ldrh r0, [r1, #6] + ldr r1, [r7, #0xc] + ldrh r2, [r1, #4] + subs r1, r2, #1 + lsls r2, r1, #0x10 + lsrs r1, r2, #0x10 + cmp r0, r1 + bne _082957C4 + bl AGBPrintFlush1Block +_082957C4: + add sp, #0x10 + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_082957CC: .4byte 0x04000204 +_082957D0: .4byte 0x09FE20F8 + thumb_func_end AGBPutc + + thumb_func_start AGBPrint +AGBPrint: @ 0x082957D4 + push {r7, lr} + sub sp, #0x10 + mov r7, sp + str r0, [r7] + ldr r0, _08295804 + str r0, [r7, #4] + ldr r0, _08295808 + str r0, [r7, #8] + adds r0, r7, #0 + adds r0, #0xc + ldr r1, [r7, #8] + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #8] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r2, #0 + strh r1, [r0] +_082957F8: + ldr r0, [r7] + ldrb r1, [r0] + cmp r1, #0 + bne _0829580C + b _0829581E + .align 2, 0 +_08295804: .4byte 0x09FE20F8 +_08295808: .4byte 0x04000204 +_0829580C: + ldr r0, [r7] + ldrb r1, [r0] + adds r0, r1, #0 + bl AGBPutc + ldr r0, [r7] + adds r1, r0, #1 + str r1, [r7] + b _082957F8 +_0829581E: + ldr r0, [r7, #8] + adds r1, r7, #0 + adds r1, #0xc + ldrh r2, [r1] + strh r2, [r0] + add sp, #0x10 + pop {r7} + pop {r0} + bx r0 + thumb_func_end AGBPrint + + thumb_func_start AGBPrintf +AGBPrintf: @ 0x08295830 + push {r0, r1, r2, r3} + push {r7, lr} + sub sp, #0x104 + mov r7, sp + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r7, r1 + adds r1, r7, #0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r2, r7, r3 + str r0, [r2] + adds r0, r7, #0 + adds r1, r7, #0 + movs r1, #0x80 + lsls r1, r1, #1 + adds r3, r7, r1 + ldr r2, [r3] + movs r3, #0x86 + lsls r3, r3, #1 + adds r3, r3, r7 + ldr r1, [r3] + bl vsprintf + adds r1, r7, #0 + adds r0, r1, #0 + bl AGBPrint + add sp, #0x104 + pop {r7} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 + thumb_func_end AGBPrintf + + thumb_func_start AGBPrintTransferDataInternal +AGBPrintTransferDataInternal: @ 0x08295874 + push {r4, r7, lr} + sub sp, #0x20 + mov r7, sp + str r0, [r7] + ldr r0, _082958DC + str r0, [r7, #0x18] + ldr r0, _082958E0 + str r0, [r7, #0x1c] + ldr r0, _082958E4 + str r0, [r7, #4] + ldr r0, _082958E8 + str r0, [r7, #8] + adds r0, r7, #0 + adds r0, #0xc + ldr r1, [r7, #8] + ldrh r2, [r1] + strh r2, [r0] + ldr r0, _082958EC + str r0, [r7, #0x10] + adds r0, r7, #0 + adds r0, #0x14 + ldr r1, [r7, #0x10] + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #8] + adds r1, r7, #0 + adds r1, #0xc + ldrh r2, [r1] + ldr r3, _082958F0 + adds r1, r2, #0 + ands r1, r3 + adds r2, r1, #0 + strh r2, [r0] + ldr r0, [r7, #0x10] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, [r7] + cmp r0, #0 + beq _0829590A +_082958C6: + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x1c] + ldrh r1, [r1, #6] + lsls r2, r1, #0x10 + lsrs r1, r2, #0x10 + ldrh r0, [r0, #4] + lsls r2, r0, #0x10 + lsrs r0, r2, #0x10 + cmp r1, r0 + bne _082958F4 + b _08295908 + .align 2, 0 +_082958DC: .4byte 0x09FE2FFE +_082958E0: .4byte 0x09FE20F8 +_082958E4: .4byte 0x09FE209D +_082958E8: .4byte 0x04000208 +_082958EC: .4byte 0x04000204 +_082958F0: .4byte 0x0000FFFE +_082958F4: + ldr r0, [r7, #0x18] + movs r1, #0x20 + strh r1, [r0] + ldr r4, [r7, #4] + bl _call_via_r4 + ldr r0, [r7, #0x18] + movs r1, #0 + strh r1, [r0] + b _082958C6 +_08295908: + b _08295930 +_0829590A: + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x1c] + ldrh r1, [r1, #6] + lsls r2, r1, #0x10 + lsrs r1, r2, #0x10 + ldrh r0, [r0, #4] + lsls r2, r0, #0x10 + lsrs r0, r2, #0x10 + cmp r1, r0 + beq _08295930 + ldr r0, [r7, #0x18] + movs r1, #0x20 + strh r1, [r0] + ldr r4, [r7, #4] + bl _call_via_r4 + ldr r0, [r7, #0x18] + movs r1, #0 + strh r1, [r0] +_08295930: + ldr r0, [r7, #0x10] + adds r1, r7, #0 + adds r1, #0x14 + ldrh r2, [r1] + strh r2, [r0] + ldr r0, [r7, #8] + adds r1, r7, #0 + adds r1, #0xc + ldrh r2, [r1] + strh r2, [r0] + add sp, #0x20 + pop {r4, r7} + pop {r0} + bx r0 + thumb_func_end AGBPrintTransferDataInternal + + thumb_func_start AGBPrintFlush1Block +AGBPrintFlush1Block: @ 0x0829594C + push {r7, lr} + mov r7, sp + movs r0, #0 + bl AGBPrintTransferDataInternal + pop {r7} + pop {r0} + bx r0 + thumb_func_end AGBPrintFlush1Block + + thumb_func_start AGBPrintFlush +AGBPrintFlush: @ 0x0829595C + push {r7, lr} + mov r7, sp + movs r0, #1 + bl AGBPrintTransferDataInternal + pop {r7} + pop {r0} + bx r0 + thumb_func_end AGBPrintFlush + + thumb_func_start AGBAssert +AGBAssert: @ 0x0829596C + push {r7, lr} + sub sp, #0x10 + mov r7, sp + str r0, [r7] + str r1, [r7, #4] + str r2, [r7, #8] + str r3, [r7, #0xc] + ldr r0, [r7, #0xc] + cmp r0, #0 + beq _08295998 + ldr r0, _08295994 + ldr r2, [r7, #4] + ldr r3, [r7, #8] + ldr r1, [r7] + bl AGBPrintf + bl AGBPrintFlush + .hword 0xEFFF + b _082959A4 + .align 2, 0 +_08295994: .4byte gUnknown_890EEF4 +_08295998: + ldr r0, _082959AC + ldr r2, [r7, #4] + ldr r3, [r7, #8] + ldr r1, [r7] + bl AGBPrintf +_082959A4: + add sp, #0x10 + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_082959AC: .4byte gUnknown_890EF28 + thumb_func_end AGBAssert diff --git a/asm/librfu.s b/asm/librfu.s new file mode 100644 index 0000000..2f944ec --- /dev/null +++ b/asm/librfu.s @@ -0,0 +1,395 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start sub_082952F4 +sub_082952F4: @ 0x082952F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0829530C + ldrh r0, [r0] + cmp r0, #0 + bne _08295310 + movs r0, #1 + rsbs r0, r0, #0 + b _08295390 + .align 2, 0 +_0829530C: .4byte 0x04000208 +_08295310: + ldr r0, _0829533C + ldrh r0, [r0] + mov r8, r0 + ldr r4, _08295340 + ldr r1, [r4] + movs r0, #0xa + str r0, [r1] + ldr r0, _08295344 + bl STWI_set_Callback_ID + bl sub_082953A8 + ldr r0, [r4] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r1, _08295348 + adds r4, r0, r1 + lsls r0, r5, #0x1b + lsrs r5, r0, #0x18 + movs r7, #0 + b _0829535E + .align 2, 0 +_0829533C: .4byte 0x04000200 +_08295340: .4byte gUnknown_3007608 +_08295344: .4byte sub_08295510 +_08295348: .4byte 0x04000100 +_0829534C: + strh r6, [r4, #2] + strh r6, [r4] + movs r0, #0x83 + strh r0, [r4, #2] +_08295354: + ldrh r0, [r4] + cmp r0, #0x1f + bls _08295354 + strh r7, [r4, #2] + strh r7, [r4] +_0829535E: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xff + beq _08295372 + bl sub_0829541C + adds r6, r0, #0 + cmp r6, #0 + beq _0829534C +_08295372: + ldr r1, _0829539C + movs r0, #0 + strh r0, [r1] + ldr r0, _082953A0 + mov r2, r8 + strh r2, [r0] + movs r0, #1 + strh r0, [r1] + ldr r0, _082953A4 + ldr r1, [r0] + movs r0, #0 + str r0, [r1] + bl STWI_set_Callback_ID + adds r0, r6, #0 +_08295390: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0829539C: .4byte 0x04000208 +_082953A0: .4byte 0x04000200 +_082953A4: .4byte gUnknown_3007608 + thumb_func_end sub_082952F4 + + thumb_func_start sub_082953A8 +sub_082953A8: @ 0x082953A8 + push {r4, r5, lr} + sub sp, #4 + ldr r3, _08295400 + movs r4, #0 + strh r4, [r3] + ldr r2, _08295404 + ldr r0, _08295408 + ldr r0, [r0] + movs r1, #8 + ldrb r0, [r0, #0xa] + lsls r1, r0 + movs r5, #0x80 + orrs r1, r5 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] + movs r0, #1 + strh r0, [r3] + ldr r0, _0829540C + strh r4, [r0] + subs r2, #0xd8 + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r1, #0 + strh r0, [r2] + ldrh r0, [r2] + movs r3, #0x81 + lsls r3, r3, #7 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #0 + str r0, [sp] + ldr r1, _08295410 + ldr r2, _08295414 + mov r0, sp + bl CpuSet + ldr r0, _08295418 + strh r5, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08295400: .4byte 0x04000208 +_08295404: .4byte 0x04000200 +_08295408: .4byte gUnknown_3007608 +_0829540C: .4byte 0x04000134 +_08295410: .4byte gUnknown_3007640 +_08295414: .4byte 0x05000003 +_08295418: .4byte 0x04000202 + thumb_func_end sub_082953A8 + + thumb_func_start sub_0829541C +sub_0829541C: @ 0x0829541C + push {r4, r5, r6, r7, lr} + ldr r0, _08295430 + ldrb r1, [r0, #1] + mov ip, r1 + adds r7, r0, #0 + cmp r1, #0 + beq _08295434 + cmp r1, #1 + beq _0829546C + b _08295504 + .align 2, 0 +_08295430: .4byte gUnknown_3007640 +_08295434: + movs r6, #1 + strb r6, [r7] + ldr r3, _08295460 + ldrh r0, [r3] + movs r5, #1 + orrs r0, r5 + strh r0, [r3] + ldr r4, _08295464 + mov r0, ip + strh r0, [r4] + ldr r2, _08295468 + ldrh r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r2] + strh r6, [r4] + strb r5, [r7, #1] + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] + b _08295508 + .align 2, 0 +_08295460: .4byte 0x04000128 +_08295464: .4byte 0x04000208 +_08295468: .4byte 0x04000200 +_0829546C: + ldrh r0, [r7, #0xa] + cmp r0, #0 + bne _08295500 + ldrb r0, [r7] + cmp r0, #1 + bne _0829549C + ldrh r0, [r7, #2] + cmp r0, #0 + bne _08295508 + ldr r3, _08295494 + strh r0, [r3] + ldr r2, _08295498 + ldrh r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r2] + mov r1, ip + strh r1, [r3] + b _08295508 + .align 2, 0 +_08295494: .4byte 0x04000208 +_08295498: .4byte 0x04000128 +_0829549C: + ldrh r1, [r7, #4] + ldr r0, _082954E8 + cmp r1, r0 + beq _08295508 + ldrh r6, [r7, #2] + cmp r6, #0 + bne _08295508 + ldr r4, _082954EC + strh r6, [r4] + ldr r3, _082954F0 + ldrh r1, [r3] + ldr r0, _082954F4 + ands r0, r1 + strh r0, [r3] + mov r7, ip + strh r7, [r4] + ldr r2, _082954F8 + strh r6, [r2] + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r1, #0 + strh r0, [r2] + ldr r0, _082954FC + movs r5, #0x80 + strh r5, [r0] + ldrh r0, [r2] + movs r7, #0x81 + lsls r7, 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, ip + strh r0, [r4] + b _08295508 + .align 2, 0 +_082954E8: .4byte 0x00008001 +_082954EC: .4byte 0x04000208 +_082954F0: .4byte 0x04000200 +_082954F4: .4byte 0x0000FF7F +_082954F8: .4byte 0x04000128 +_082954FC: .4byte 0x04000202 +_08295500: + movs r0, #2 + strb r0, [r7, #1] +_08295504: + ldrh r0, [r7, #0xa] + b _0829550A +_08295508: + movs r0, #0 +_0829550A: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0829541C + + thumb_func_start sub_08295510 +sub_08295510: @ 0x08295510 + push {r4, r5, lr} + ldr r0, _08295558 + ldr r5, [r0] + ldr r0, _0829555C + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #1 + beq _0829552A + ldr r0, _08295560 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] +_0829552A: + ldrb r2, [r4] + lsls r1, r2, #4 + adds r0, r5, #0 + lsls r0, r1 + lsrs r1, r0, #0x10 + movs r0, #1 + subs r0, r0, r2 + lsls r0, r0, #4 + lsls r5, r0 + adds r0, r5, #0 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #0xa] + cmp r0, #0 + bne _0829557E + ldrh r2, [r4, #6] + cmp r1, r2 + bne _0829557C + ldrh r3, [r4, #2] + cmp r3, #3 + bls _08295564 + strh r5, [r4, #0xa] + b _0829557E + .align 2, 0 +_08295558: .4byte 0x04000120 +_0829555C: .4byte gUnknown_3007640 +_08295560: .4byte 0x04000128 +_08295564: + ldrh r0, [r4, #4] + mvns r0, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bne _0829557E + mvns r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r5, r0 + bne _0829557E + adds r0, r3, #1 +_0829557C: + strh r0, [r4, #2] +_0829557E: + ldrh r0, [r4, #2] + cmp r0, #3 + bhi _08295594 + lsls r0, r0, #1 + ldr r1, _08295590 + adds r0, r0, r1 + ldrh r0, [r0] + b _08295596 + .align 2, 0 +_08295590: .4byte gUnknown_890EEDC +_08295594: + ldr r0, _082955EC +_08295596: + strh r0, [r4, #4] + mvns r0, r5 + strh r0, [r4, #6] + ldr r3, _082955F0 + ldrh r2, [r4, #4] + ldrb r1, [r4] + movs r0, #1 + subs r0, r0, r1 + lsls r0, r0, #4 + lsls r2, r0 + ldrh r0, [r4, #6] + lsls r1, r1, #4 + lsls r0, r1 + adds r2, r2, r0 + str r2, [r3] + ldrb r0, [r4] + cmp r0, #1 + bne _082955E4 + ldrh r0, [r4, #2] + cmp r0, #0 + bne _082955C6 + ldr r0, _082955F4 + cmp r5, r0 + bne _082955E4 +_082955C6: + movs r0, #0 + ldr r1, _082955F8 +_082955CA: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r1 + bls _082955CA + ldrh r0, [r4, #0xa] + cmp r0, #0 + bne _082955E4 + ldr r0, _082955FC + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] +_082955E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_082955EC: .4byte 0x00008001 +_082955F0: .4byte 0x04000120 +_082955F4: .4byte 0x0000494E +_082955F8: .4byte 0x00000257 +_082955FC: .4byte 0x04000128 + thumb_func_end sub_08295510 diff --git a/asm/librfu_intr.s b/asm/librfu_intr.s new file mode 100644 index 0000000..0a8e36f --- /dev/null +++ b/asm/librfu_intr.s @@ -0,0 +1,700 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + arm_func_start IntrSIO32 +IntrSIO32: @ 0x08291ADC + mov ip, sp + push {fp, ip, lr, pc} + ldr r3, _08291B3C + ldr r0, [r3] + ldr r2, [r0] + sub fp, ip, #4 + cmp r2, #0xa + bne _08291B18 + ldr r0, [r0, #0x20] + cmp r0, #0 + ldmdbeq fp, {fp, sp, lr} + bxeq lr + arm_func_end IntrSIO32 + + arm_func_start sub_08291B0C +sub_08291B0C: @ 0x08291B0C + bl sub_08292438 + ldmdb fp, {fp, sp, lr} + bx lr +_08291B18: + ldrb r3, [r0, #0x14] + cmp r3, #1 + bne _08291B30 + bl sio32intr_clock_master + ldmdb fp, {fp, sp, lr} + bx lr +_08291B30: + bl sio32intr_clock_slave + ldmdb fp, {fp, sp, lr} + bx lr + .align 2, 0 +_08291B3C: .4byte gUnknown_3007608 + arm_func_end sub_08291B0C + + arm_func_start sio32intr_clock_master +sio32intr_clock_master: @ 0x08291B40 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + mov r0, #0x50 + sub fp, ip, #4 + bl STWI_set_timer_in_RAM + mov r4, #0x120 + ldr r2, _08291DB4 + add r4, r4, #0x4000000 + ldr lr, [r4] + ldr ip, [r2] + ldr r3, [ip] + mov r6, r2 + cmp r3, #0 + bne _08291BC0 + cmp lr, #-0x80000000 + bne _08291C40 + ldrb r2, [ip, #5] + ldrb r3, [ip, #4] + cmp r2, r3 + bhi _08291BB0 + ldr r3, [ip, #0x24] + mov r1, r2 + ldr r2, [r3, r1, lsl #2] + str r2, [r4] + ldrb r3, [ip, #5] + add r3, r3, #1 + strb r3, [ip, #5] + b _08291C9C +_08291BB0: + mov r3, #1 + str r3, [ip] + str lr, [r4] + b _08291C9C +_08291BC0: + ldr r3, [ip] + cmp r3, #1 + bne _08291C50 + mov r3, #-0x67000000 + add r3, r3, #0x660000 + mov r5, #-0x80000000 + and r2, lr, r5, asr #15 + cmp r2, r3 + bne _08291C40 + mov r3, #0 + strb r3, [ip, #8] + ldr r1, [r6] + ldrb r0, [r1, #8] + ldr r2, [r1, #0x28] + str lr, [r2, r0, lsl #2] + ldrb r3, [r1, #8] + add r3, r3, #1 + strb r3, [r1, #8] + ldr r2, [r6] + strb lr, [r2, #9] + ldr r3, [r6] + lsr r2, lr, #8 + strb r2, [r3, #7] + ldr r1, [r6] + ldrb r2, [r1, #7] + ldrb r3, [r1, #8] + cmp r2, r3 + blo _08291C88 + mov r3, #2 + str r3, [r1] + str r5, [r4] + b _08291C9C +_08291C40: + bl STWI_stop_timer_in_RAM + mov r0, #0x82 + bl STWI_set_timer_in_RAM + b _08291DC8 +_08291C50: + ldr r3, [ip] + cmp r3, #2 + bne _08291C9C + ldrb r1, [ip, #8] + ldr r2, [ip, #0x28] + str lr, [r2, r1, lsl #2] + ldrb r3, [ip, #8] + add r3, r3, #1 + strb r3, [ip, #8] + ldr r1, [r6] + ldrb r2, [r1, #7] + ldrb r3, [r1, #8] + cmp r2, r3 + bhs _08291C94 +_08291C88: + mov r3, #3 + str r3, [r1] + b _08291C9C +_08291C94: + mov r3, #-0x80000000 + str r3, [r4] +_08291C9C: + mov r0, #1 + bl handshake_wait + lsl r0, r0, #0x10 + cmp r0, #0x10000 + beq _08291DC8 + mov r4, #0x128 + add r4, r4, #0x4000000 + mov r5, #0x5000 + add r3, r5, #0xb + strh r3, [r4] + mov r0, #0 + bl handshake_wait + lsl r0, r0, #0x10 + cmp r0, #0x10000 + beq _08291DC8 + bl STWI_stop_timer_in_RAM + ldr r1, [r6] + ldr r0, [r1] + cmp r0, #3 + bne _08291DB8 + ldrb r3, [r1, #9] + cmp r3, #0xa5 + cmpne r3, #0xa7 + beq _08291D10 + and r3, r3, #0xff + cmp r3, #0xb5 + beq _08291D10 + cmp r3, #0xb7 + bne _08291D58 +_08291D10: + mov r1, #0x120 + add r1, r1, #0x4000000 + mov ip, #0x128 + add ip, ip, #0x4000000 + ldr r0, [r6] + mov r3, #0 + strb r3, [r0, #0x14] + mov r2, #-0x80000000 + str r2, [r1] + add r3, r3, #0x5000 + add r2, r3, #2 + strh r2, [ip] + add r3, r3, #0x82 + strh r3, [ip] + ldr r2, [r6] + mov r3, #5 + str r3, [r2] + b _08291D88 +_08291D58: + cmp r3, #0xee + bne _08291D78 + add r3, r5, #3 + strh r3, [r4] + mov r2, #4 + str r2, [r1] + strh r0, [r1, #0x12] + b _08291D88 +_08291D78: + add r3, r5, #3 + strh r3, [r4] + mov r2, #4 + str r2, [r1] +_08291D88: + ldr r2, [r6] + mov r3, #0 + strb r3, [r2, #0x2c] + ldr r0, [r6] + ldr r2, [r0, #0x18] + cmp r2, r3 + beq _08291DC8 + ldrh r1, [r0, #0x12] + ldrb r0, [r0, #6] + bl sub_08292430 + b _08291DC8 + .align 2, 0 +_08291DB4: .4byte gUnknown_3007608 +_08291DB8: + add r3, r5, #3 + strh r3, [r4] + add r2, r5, #0x83 + strh r2, [r4] +_08291DC8: + ldmdb fp, {r4, r5, r6, fp, sp, lr} + bx lr + arm_func_end sio32intr_clock_master + + arm_func_start sio32intr_clock_slave +sio32intr_clock_slave: @ 0x08291DD0 + mov ip, sp + push {r4, r5, r6, fp, ip, lr, pc} + ldr r4, _0829217C + mov r0, #0x64 + ldr r3, [r4] + mov r6, #0 + strb r6, [r3, #0x10] + sub fp, ip, #4 + bl STWI_set_timer_in_RAM + mov r0, r6 + bl handshake_wait + lsl r0, r0, #0x10 + cmp r0, #0x10000 + mov r5, r4 + beq _082921D4 + 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 ip, [lr] + ldr r3, [r0] + cmp r3, #5 + bne _08291F00 + ldr r3, [r0, #0x28] + mov r4, #1 + mov r0, #-0x67000000 + str ip, [r3] + add r0, r0, #0x660000 + ldr r2, [r5] + lsr r3, r0, #0x10 + strb r4, [r2, #5] + cmp r3, ip, lsr #16 + bne _0829204C + ldr r3, [r5] + lsr r2, ip, #8 + strb r2, [r3, #4] + ldr r2, [r5] + strb ip, [r2, #6] + ldr r1, [r5] + ldrb r3, [r1, #4] + cmp r3, r6 + bne _08291EE4 + ldrb r2, [r1, #6] + sub r3, r2, #0x27 + cmp r2, #0x36 + cmpne r3, #2 + bhi _08291EB8 + add r3, r2, #0x80 + strb r3, [r1, #9] + ldr r2, [r5] + ldrb r3, [r2, #9] + ldr r1, [r2, #0x24] + add r3, r3, r0 + b _08291F68 +_08291EB8: + ldr r2, [r1, #0x24] + ldr r3, _08292180 + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, #6] + sub r3, r3, #0x10 + cmp r3, #0x2d + bhi _08291FA0 + ldr r3, [r2, #0x24] + str r4, [r3, #4] + b _08291FAC +_08291EE4: + mov r3, #-0x80000000 + str r3, [lr] + strb r4, [r1, #5] + ldr r2, [r5] + add r3, r3, #-0x7ffffffa + str r3, [r2] + b _0829205C +_08291F00: + ldr r3, [r0] + cmp r3, #6 + bne _08292000 + ldrb r1, [r0, #5] + ldr r2, [r0, #0x28] + str ip, [r2, r1, lsl #2] + ldrb r3, [r0, #5] + add r3, r3, #1 + strb r3, [r0, #5] + ldr r1, [r5] + ldrb r2, [r1, #4] + ldrb r3, [r1, #5] + cmp r2, r3 + bhs _08291FF4 + ldrb r2, [r1, #6] + sub r3, r2, #0x28 + cmp r2, #0x36 + cmpne r3, #1 + bhi _08291F78 + add r3, r2, #0x80 + strb r3, [r1, #9] + ldr r2, [r5] + ldrb r3, [r2, #9] + ldr r1, [r2, #0x24] + orr r3, r3, #0x99000000 + orr r3, r3, #0x660000 +_08291F68: + str r3, [r1] + ldr r2, [r5] + strb r6, [r2, #7] + b _08291FC4 +_08291F78: + ldr r2, [r1, #0x24] + ldr r3, _08292180 + str r3, [r2] + ldr r2, [r5] + ldrb r3, [r2, #6] + sub r3, r3, #0x10 + cmp r3, #0x2d + ldrls r2, [r2, #0x24] + movls r3, #1 + bls _08291FA8 +_08291FA0: + ldr r2, [r2, #0x24] + mov r3, #2 +_08291FA8: + str r3, [r2, #4] +_08291FAC: + ldr r2, [r5] + mov r3, #1 + strb r3, [r2, #7] + ldr r1, [r5] + add r3, r3, #2 + strh r3, [r1, #0x12] +_08291FC4: + ldr r0, [r5] + ldr r2, [r0, #0x24] + mov r3, #0x120 + ldr r1, [r2] + add r3, r3, #0x4000000 + str r1, [r3] + mov r2, #1 + strb r2, [r0, #8] + ldr r1, [r5] + mov r3, #7 + str r3, [r1] + b _0829205C +_08291FF4: + mov r3, #-0x80000000 + str r3, [lr] + b _0829205C +_08292000: + ldr r3, [r0] + cmp r3, #7 + bne _0829205C + cmp ip, #-0x80000000 + bne _0829204C + ldrb r2, [r0, #7] + ldrb r3, [r0, #8] + cmp r2, r3 + movlo r3, #8 + strlo r3, [r0] + blo _0829205C + ldrb r1, [r0, #8] + ldr r3, [r0, #0x24] + ldr r2, [r3, r1, lsl #2] + str r2, [lr] + ldrb r3, [r0, #8] + add r3, r3, #1 + strb r3, [r0, #8] + b _0829205C +_0829204C: + bl STWI_stop_timer_in_RAM + mov r0, #0x64 + bl STWI_set_timer_in_RAM + b _082921D4 +_0829205C: + mov r0, #1 + bl handshake_wait + lsl r0, r0, #0x10 + cmp r0, #0x10000 + beq _082921D4 + mov r6, r5 + ldr r3, [r6] + ldr r2, [r3] + cmp r2, #8 + bne _08292124 + mov r4, #0x128 + add r4, r4, #0x4000000 + mov r3, #0x5000 + add r3, r3, #2 + strh r3, [r4] + bl STWI_stop_timer_in_RAM + arm_func_end sio32intr_clock_slave + + arm_func_start sub_0829209C +sub_0829209C: @ 0x0829209C + ldr r0, [r6] + ldrh r3, [r0, #0x12] + cmp r3, #3 + bne _082920D0 + bl STWI_init_slave + ldr r3, [r6] + ldr r1, [r3, #0x1c] + cmp r1, #0 + beq _082921D4 + mov r0, #0x1ec + add r0, r0, #2 + bl sub_08292434 + b _082921D4 +_082920D0: + mov r3, #0x120 + add r3, r3, #0x4000000 + mov r1, #0 + str r1, [r3] + mov r2, #0x5000 + strh r1, [r4] + add r2, r2, #3 + strh r2, [r4] + mov r3, #1 + strb r3, [r0, #0x14] + ldr r0, [r5] + ldr r2, [r0, #0x1c] + str r1, [r0] + cmp r2, r1 + beq _082921D4 + ldrb r3, [r0, #4] + ldrb r0, [r0, #6] + mov r1, r2 + orr r0, r0, r3, lsl #8 + bl sub_08292434 + b _082921D4 +_08292124: + 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 _082921A8 + ldrh r3, [r2] + tst r3, #3 + bne _08292184 + mov r2, #0xff00 + add r1, r1, #0x4000000 + ldrh r3, [r1] + add r2, r2, #0x9b + cmp r3, r2 + bls _082921A8 +_0829216C: + ldrh r3, [r1] + cmp r3, r2 + bhi _0829216C + b _082921A8 + .align 2, 0 +_0829217C: .4byte gUnknown_3007608 +_08292180: .4byte 0x996601EE +_08292184: + mov r2, #0xff00 + add r1, r1, #0x4000000 + ldrh r3, [r1] + add r2, r2, #0xfe + cmp r3, r2 + bls _082921A8 +_0829219C: + ldrh r3, [r1] + cmp r3, r2 + bhi _0829219C +_082921A8: + mov r1, #0x128 + add r1, r1, #0x4000000 + mov r0, #0x208 + add r0, r0, #0x4000000 + mov r3, #0x5000 + add r2, r3, #2 + strh r2, [r1] + add r3, r3, #0x82 + strh r3, [r1] + mov r2, #1 + strh r2, [r0] +_082921D4: + ldmdb fp, {r4, r5, r6, fp, sp, lr} + bx lr + arm_func_end sub_0829209C + + arm_func_start handshake_wait +handshake_wait: @ 0x082921DC + mov ip, sp + push {fp, ip, lr, pc} + mov r1, #0x128 + add r1, r1, #0x4000000 + lsl r0, r0, #0x10 + ldr r2, _08292240 + sub fp, ip, #4 + lsr lr, r0, #0xe + ldr ip, [r2] +_08292200: + ldrb r3, [ip, #0x10] + and r0, r3, #0xff + cmp r0, #1 + beq _0829222C + ldrh r3, [r1] + and r3, r3, #4 + cmp r3, lr + bne _08292200 + mov r0, #0 + ldmdb fp, {fp, sp, lr} + bx lr +_0829222C: + ldr r2, [r2] + mov r3, #0 + strb r3, [r2, #0x10] + ldmdb fp, {fp, sp, lr} + bx lr + .align 2, 0 +_08292240: .4byte gUnknown_3007608 + arm_func_end handshake_wait + + arm_func_start STWI_set_timer_in_RAM +STWI_set_timer_in_RAM: @ 0x08292244 + mov ip, sp + push {r4, r5, fp, ip, lr, pc} + mov r1, #0x208 + add r1, r1, #0x4000000 + mov r3, #0 + sub fp, ip, #4 + ldr ip, _082922FC + and lr, r0, #0xff + ldr r2, [ip] + cmp lr, #0x50 + ldrb r0, [r2, #0xa] + mov r4, ip + mov r2, lr + strh r3, [r1] + lsl r0, r0, #2 + add r3, r3, #0x100 + add r1, r3, #0x4000000 + add r3, r3, #0x4000002 + add r5, r0, r3 + beq _082922CC + bgt _082922A4 + cmp lr, #0x32 + beq _082922B8 + b _08292318 +_082922A4: + cmp r2, #0x64 + beq _082922E4 + cmp r2, #0x82 + beq _08292300 + b _08292318 +_082922B8: + mvn r3, #0x334 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, #1 + b _08292314 +_082922CC: + mov r3, #-0x52000000 + asr r3, r3, #0x14 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, #2 + b _08292314 +_082922E4: + mvn r3, #0x660 + sub r3, r3, #9 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, #3 + b _08292314 + .align 2, 0 +_082922FC: .4byte gUnknown_3007608 +_08292300: + mvn r3, #0x850 + sub r3, r3, #2 + strh r3, [r0, r1] + ldr r2, [r4] + mov r3, #4 +_08292314: + str r3, [r2, #0xc] +_08292318: + mov ip, #0x200 + add ip, ip, #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 + lsl r3, r3, r0 + strh r3, [ip] + mov r2, #1 + strh r2, [r1] + ldmdb fp, {r4, r5, fp, sp, lr} + bx lr +STWI_stop_timer_in_RAM: + mov ip, sp + push {fp, ip, lr, pc} + mov r1, #0x100 + ldr lr, _082923A0 + add r0, r1, #0x4000000 + ldr r2, [lr] + sub fp, ip, #4 + ldrb r3, [r2, #0xa] + mov ip, #0 + str ip, [r2, #0xc] + lsl r3, r3, #2 + strh ip, [r3, r0] + ldr r2, [lr] + ldrb r3, [r2, #0xa] + add r1, r1, #0x4000002 + lsl r3, r3, #2 + strh ip, [r3, r1] + ldmdb fp, {fp, sp, lr} + bx lr + .align 2, 0 +_082923A0: .4byte gUnknown_3007608 + arm_func_end STWI_set_timer_in_RAM + + arm_func_start STWI_init_slave +STWI_init_slave: @ 0x082923A4 + mov ip, sp + push {fp, ip, lr, pc} + ldr r0, _0829242C + ldr r2, [r0] + mov r3, #5 + str r3, [r2] + mov r1, #0 + strb r1, [r2, #0x14] + ldr r3, [r0] + strb r1, [r3, #4] + ldr r2, [r0] + strb r1, [r2, #5] + ldr r3, [r0] + strb r1, [r3, #6] + ldr r2, [r0] + strb r1, [r2, #7] + ldr r3, [r0] + strb r1, [r3, #8] + ldr r2, [r0] + strb r1, [r2, #9] + ldr r3, [r0] + str r1, [r3, #0xc] + sub fp, ip, #4 + strb r1, [r3, #0x10] + mov r2, #0x128 + ldr ip, [r0] + add r2, r2, #0x4000000 + strh r1, [ip, #0x12] + mov r3, #0x5000 + strb r1, [ip, #0x15] + add r3, r3, #0x82 + strh r3, [r2] + ldmdb fp, {fp, sp, lr} + bx lr + .align 2, 0 +_0829242C: .4byte gUnknown_3007608 + arm_func_end STWI_init_slave + + arm_func_start sub_08292430 +sub_08292430: @ 0x08292430 + bx r2 + arm_func_end sub_08292430 + + arm_func_start sub_08292434 +sub_08292434: @ 0x08292434 + bx r1 + arm_func_end sub_08292434 + + arm_func_start sub_08292438 +sub_08292438: @ 0x08292438 + bx r0 + arm_func_end sub_08292438 diff --git a/asm/librfu_rfu.s b/asm/librfu_rfu.s new file mode 100644 index 0000000..0fbc8f2 --- /dev/null +++ b/asm/librfu_rfu.s @@ -0,0 +1,6285 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start rfu_initializeAPI +rfu_initializeAPI: @ 0x0829243C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + mov ip, r2 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r0, #0xf0 + lsls r0, r0, #0x14 + ands r0, r4 + movs r1, #0x80 + lsls r1, r1, #0x12 + cmp r0, r1 + bne _0829245C + cmp r7, #0 + bne _08292464 +_0829245C: + movs r0, #3 + ands r0, r4 + cmp r0, #0 + beq _08292468 +_08292464: + movs r0, #2 + b _08292540 +_08292468: + cmp r7, #0 + beq _08292474 + ldr r3, _08292470 + b _08292476 + .align 2, 0 +_08292470: .4byte 0x00000E64 +_08292474: + ldr r3, _08292480 +_08292476: + cmp r2, r3 + bhs _08292484 + movs r0, #1 + b _08292540 + .align 2, 0 +_08292480: .4byte 0x00000504 +_08292484: + ldr r0, _08292548 + str r4, [r0] + ldr r1, _0829254C + adds r0, r4, #0 + adds r0, #0xb4 + str r0, [r1] + ldr r1, _08292550 + adds r0, #0x28 + str r0, [r1] + ldr r2, _08292554 + movs r1, #0xde + lsls r1, r1, #1 + adds r0, r4, r1 + str r0, [r2] + ldr r1, _08292558 + movs r3, #0xdf + lsls r3, r3, #2 + adds r0, r4, r3 + str r0, [r1] + movs r5, #1 + adds r6, r2, #0 + adds r4, r1, #0 +_082924B0: + lsls r2, r5, #2 + adds r3, r2, r6 + subs r1, r5, #1 + lsls r1, r1, #2 + adds r0, r1, r6 + ldr r0, [r0] + adds r0, #0x70 + str r0, [r3] + adds r2, r2, r4 + adds r1, r1, r4 + ldr r0, [r1] + adds r0, #0x1c + str r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _082924B0 + ldr r0, _08292550 + ldr r1, [r0] + adds r1, #0xdc + ldr r4, _08292558 + ldr r0, [r4, #0xc] + adds r0, #0x1c + str r0, [r1] + mov r1, ip + adds r2, r7, #0 + bl STWI_init_all + bl rfu_STC_clearAPIVariables + movs r5, #0 + ldr r3, _08292554 + movs r2, #0 +_082924F4: + lsls r1, r5, #2 + adds r0, r1, r3 + ldr r0, [r0] + str r2, [r0, #0x68] + str r2, [r0, #0x6c] + adds r1, r1, r4 + ldr r0, [r1] + str r2, [r0, #0x14] + str r2, [r0, #0x18] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _082924F4 + ldr r4, _0829255C + movs r0, #2 + rsbs r0, r0, #0 + ands r4, r0 + ldr r1, _08292550 + ldr r0, [r1] + adds r2, r0, #0 + adds r2, #8 + movs r3, #0x2f + ldr r5, _08292560 +_08292524: + ldrh r0, [r4] + strh r0, [r2] + adds r4, #2 + adds r2, #2 + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r5 + bne _08292524 + ldr r1, [r1] + adds r0, r1, #0 + adds r0, #9 + str r0, [r1, #4] + movs r0, #0 +_08292540: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08292548: .4byte gUnknown_3007630 +_0829254C: .4byte gUnknown_3007634 +_08292550: .4byte gUnknown_3007638 +_08292554: .4byte gUnknown_3007620 +_08292558: .4byte gUnknown_3007610 +_0829255C: .4byte sub_0829397C +_08292560: .4byte 0x0000FFFF + thumb_func_end rfu_initializeAPI + + thumb_func_start rfu_STC_clearAPIVariables +rfu_STC_clearAPIVariables: @ 0x08292564 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _082925D8 + ldrh r0, [r1] + adds r7, r0, #0 + movs r6, #0 + strh r6, [r1] + ldr r5, _082925DC + ldr r1, [r5] + ldrb r4, [r1] + mov r0, sp + strh r6, [r0] + ldr r2, _082925E0 + bl CpuSet + ldr r2, [r5] + movs r0, #8 + ands r4, r0 + movs r1, #0 + strb r4, [r2] + mov r0, sp + adds r0, #2 + strh r1, [r0] + ldr r4, _082925E4 + ldr r1, [r4] + ldr r2, _082925E8 + bl CpuSet + ldr r1, [r4] + movs r0, #4 + strb r0, [r1, #9] + ldr r0, [r5] + strb r6, [r0, #6] + ldr r1, [r4] + movs r0, #0xff + strb r0, [r1] + bl rfu_clearAllSlot + ldr r0, [r5] + strb r6, [r0, #9] + movs r2, #0 + movs r3, #0 +_082925B8: + ldr r0, [r5] + lsls r1, r2, #1 + adds r0, #0x12 + adds r0, r0, r1 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _082925B8 + ldr r0, _082925D8 + strh r7, [r0] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082925D8: .4byte 0x04000208 +_082925DC: .4byte gUnknown_3007634 +_082925E0: .4byte 0x01000014 +_082925E4: .4byte gUnknown_3007630 +_082925E8: .4byte 0x0100005A + thumb_func_end rfu_STC_clearAPIVariables + + thumb_func_start rfu_REQ_PARENT_resumeRetransmitAndChange +rfu_REQ_PARENT_resumeRetransmitAndChange: @ 0x082925EC + push {lr} + ldr r0, _082925FC + bl STWI_set_Callback_M + bl STWI_send_ResumeRetransmitAndChangeREQ + pop {r0} + bx r0 + .align 2, 0 +_082925FC: .4byte rfu_STC_REQ_callback + thumb_func_end rfu_REQ_PARENT_resumeRetransmitAndChange + + thumb_func_start rfu_UNI_PARENT_getDRAC_ACK +rfu_UNI_PARENT_getDRAC_ACK: @ 0x08292600 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0 + strb r0, [r4] + ldr r5, _08292618 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, #1 + beq _0829261C + movs r0, #0xc0 + lsls r0, r0, #2 + b _08292642 + .align 2, 0 +_08292618: .4byte gUnknown_3007630 +_0829261C: + bl rfu_getSTWIRecvBuffer + adds r1, r0, #0 + ldrb r0, [r1] + cmp r0, #0x28 + beq _0829262C + cmp r0, #0x36 + bne _08292640 +_0829262C: + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08292638 + ldr r0, [r5] + ldrb r0, [r0, #2] + b _0829263A +_08292638: + ldrb r0, [r1, #4] +_0829263A: + strb r0, [r4] + movs r0, #0 + b _08292642 +_08292640: + movs r0, #0x10 +_08292642: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end rfu_UNI_PARENT_getDRAC_ACK + + thumb_func_start rfu_setTimerInterrupt +rfu_setTimerInterrupt: @ 0x08292648 + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r2, #0 + bl STWI_init_timer + pop {r0} + bx r0 + thumb_func_end rfu_setTimerInterrupt + + thumb_func_start rfu_getSTWIRecvBuffer +rfu_getSTWIRecvBuffer: @ 0x0829265C + ldr r0, _08292668 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + bx lr + .align 2, 0 +_08292668: .4byte gUnknown_3007638 + thumb_func_end rfu_getSTWIRecvBuffer + + thumb_func_start rfu_setMSCCallback +rfu_setMSCCallback: @ 0x0829266C + push {lr} + bl STWI_set_Callback_S + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end rfu_setMSCCallback + + thumb_func_start rfu_setREQCallback +rfu_setREQCallback: @ 0x08292678 + push {lr} + adds r1, r0, #0 + ldr r0, _08292690 + ldr r0, [r0] + str r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bl rfu_enableREQCallback + pop {r0} + bx r0 + .align 2, 0 +_08292690: .4byte gUnknown_3007638 + thumb_func_end rfu_setREQCallback + + thumb_func_start rfu_enableREQCallback +rfu_enableREQCallback: @ 0x08292694 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _082926AC + ldr r0, _082926A8 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + b _082926B6 + .align 2, 0 +_082926A8: .4byte gUnknown_3007634 +_082926AC: + ldr r0, _082926BC + ldr r2, [r0] + ldrb r1, [r2] + movs r0, #0xf7 + ands r0, r1 +_082926B6: + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_082926BC: .4byte gUnknown_3007634 + thumb_func_end rfu_enableREQCallback + + thumb_func_start rfu_STC_REQ_callback +rfu_STC_REQ_callback: @ 0x082926C0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _082926F4 + bl STWI_set_Callback_M + ldr r0, _082926F8 + ldr r0, [r0] + strh r4, [r0, #0x1c] + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _082926EE + ldr r0, _082926FC + ldr r0, [r0] + ldr r2, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r2 +_082926EE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_082926F4: .4byte rfu_CB_defaultCallback +_082926F8: .4byte gUnknown_3007634 +_082926FC: .4byte gUnknown_3007638 + thumb_func_end rfu_STC_REQ_callback + + thumb_func_start rfu_CB_defaultCallback +rfu_CB_defaultCallback: @ 0x08292700 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + cmp r0, #0xff + bne _0829275C + ldr r0, _08292764 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0829272A + ldr r0, _08292768 + ldr r0, [r0] + ldr r2, [r0] + movs r0, #0xff + adds r1, r3, #0 + bl _call_via_r2 +_0829272A: + ldr r0, _0829276C + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + adds r5, r0, #0 + orrs r5, r1 + movs r4, #0 +_08292738: + adds r0, r5, #0 + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0829274A + adds r0, r4, #0 + bl rfu_STC_removeLinkData +_0829274A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08292738 + ldr r0, _0829276C + ldr r1, [r0] + movs r0, #0xff + strb r0, [r1] +_0829275C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08292764: .4byte gUnknown_3007634 +_08292768: .4byte gUnknown_3007638 +_0829276C: .4byte gUnknown_3007630 + thumb_func_end rfu_CB_defaultCallback + + thumb_func_start rfu_waitREQComplete +rfu_waitREQComplete: @ 0x08292770 + push {lr} + bl STWI_poll_CommandEnd + ldr r0, _08292780 + ldr r0, [r0] + ldrh r0, [r0, #0x1c] + pop {r1} + bx r1 + .align 2, 0 +_08292780: .4byte gUnknown_3007634 + thumb_func_end rfu_waitREQComplete + + thumb_func_start rfu_REQ_RFUStatus +rfu_REQ_RFUStatus: @ 0x08292784 + push {lr} + ldr r0, _08292794 + bl STWI_set_Callback_M + bl STWI_send_SystemStatusREQ + pop {r0} + bx r0 + .align 2, 0 +_08292794: .4byte rfu_STC_REQ_callback + thumb_func_end rfu_REQ_RFUStatus + + thumb_func_start rfu_getRFUStatus +rfu_getRFUStatus: @ 0x08292798 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _082927B0 + ldr r0, [r5] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0x93 + beq _082927B4 + movs r0, #0x10 + b _082927CE + .align 2, 0 +_082927B0: .4byte gUnknown_3007638 +_082927B4: + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + cmp r0, #0 + bne _082927C8 + ldr r0, [r5] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #7] + b _082927CA +_082927C8: + movs r0, #0xff +_082927CA: + strb r0, [r4] + movs r0, #0 +_082927CE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end rfu_getRFUStatus + + thumb_func_start sub_082927D4 +sub_082927D4: @ 0x082927D4 + push {lr} + ldr r2, _082927DC + ldr r3, _082927E0 + b _082927EE + .align 2, 0 +_082927DC: .4byte gUnknown_890EED0 +_082927E0: .4byte gUnknown_30000F0 +_082927E4: + ldrb r0, [r3] + adds r3, #1 + adds r2, #1 + cmp r1, r0 + bne _08292844 +_082927EE: + ldrb r1, [r2] + cmp r1, #0 + bne _082927E4 + movs r2, #0xc0 + lsls r2, r2, #0x12 + movs r3, #0 + movs r1, #0 +_082927FC: + ldrh r0, [r2] + adds r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r2, #2 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x59 + bls _082927FC + ldr r0, _08292838 + ldrh r0, [r0] + cmp r3, r0 + bne _08292844 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ldr r1, _0829283C + ldr r1, [r1] + movs r2, #0x5a + bl CpuSet + ldr r0, _08292840 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, #0 + b _08292846 + .align 2, 0 +_08292838: .4byte gUnknown_30000FA +_0829283C: .4byte gUnknown_3007630 +_08292840: .4byte gUnknown_3007634 +_08292844: + movs r0, #1 +_08292846: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_082927D4 + + thumb_func_start rfu_REQ_stopMode +rfu_REQ_stopMode: @ 0x0829284C + push {lr} + ldr r0, _0829286C + ldrh r0, [r0] + cmp r0, #0 + bne _08292874 + movs r0, #0x3d + movs r1, #6 + bl rfu_STC_REQ_callback + ldr r0, _08292870 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + movs r0, #6 + strh r0, [r1, #0x12] + b _082928EA + .align 2, 0 +_0829286C: .4byte 0x04000208 +_08292870: .4byte gUnknown_3007608 +_08292874: + bl AgbRFU_SoftReset + bl rfu_STC_clearAPIVariables + movs r0, #8 + bl sub_082952F4 + ldr r1, _082928C4 + cmp r0, r1 + bne _082928D8 + ldr r0, _082928C8 + ldr r0, [r0] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r2, _082928CC + adds r1, r0, r2 + movs r0, #0 + str r0, [r1] + movs r0, #0x83 + lsls r0, r0, #0x10 + str r0, [r1] + ldr r0, [r1] + lsls r0, r0, #0x10 + ldr r2, _082928D0 + ldr r3, _082928D4 + cmp r0, r2 + bhi _082928B2 +_082928AA: + ldr r0, [r1] + lsls r0, r0, #0x10 + cmp r0, r2 + bls _082928AA +_082928B2: + movs r0, #0 + str r0, [r1] + adds r0, r3, #0 + bl STWI_set_Callback_M + bl STWI_send_StopModeREQ + b _082928EA + .align 2, 0 +_082928C4: .4byte 0x00008001 +_082928C8: .4byte gUnknown_3007608 +_082928CC: .4byte 0x04000100 +_082928D0: .4byte 0x0105FFFF +_082928D4: .4byte rfu_CB_stopMode +_082928D8: + ldr r1, _082928F0 + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0x3d + movs r1, #0 + bl rfu_STC_REQ_callback +_082928EA: + pop {r0} + bx r0 + .align 2, 0 +_082928F0: .4byte 0x04000128 + thumb_func_end rfu_REQ_stopMode + + thumb_func_start rfu_CB_stopMode +rfu_CB_stopMode: @ 0x082928F4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r2, r1, #0 + cmp r2, #0 + bne _0829290E + ldr r1, _0829291C + movs r4, #0x80 + lsls r4, r4, #6 + adds r0, r4, #0 + strh r0, [r1] +_0829290E: + adds r0, r3, #0 + adds r1, r2, #0 + bl rfu_STC_REQ_callback + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0829291C: .4byte 0x04000128 + thumb_func_end rfu_CB_stopMode + + thumb_func_start rfu_REQBN_softReset_and_checkID +rfu_REQBN_softReset_and_checkID: @ 0x08292920 + push {lr} + ldr r0, _08292930 + ldrh r0, [r0] + cmp r0, #0 + bne _08292934 + movs r0, #1 + rsbs r0, r0, #0 + b _08292954 + .align 2, 0 +_08292930: .4byte 0x04000208 +_08292934: + bl AgbRFU_SoftReset + bl rfu_STC_clearAPIVariables + movs r0, #0x1e + bl sub_082952F4 + adds r2, r0, #0 + cmp r2, #0 + bne _08292952 + ldr r1, _08292958 + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + strh r0, [r1] +_08292952: + adds r0, r2, #0 +_08292954: + pop {r1} + bx r1 + .align 2, 0 +_08292958: .4byte 0x04000128 + thumb_func_end rfu_REQBN_softReset_and_checkID + + thumb_func_start rfu_REQ_reset +rfu_REQ_reset: @ 0x0829295C + push {lr} + ldr r0, _0829296C + bl STWI_set_Callback_M + bl STWI_send_ResetREQ + pop {r0} + bx r0 + .align 2, 0 +_0829296C: .4byte rfu_CB_reset + thumb_func_end rfu_REQ_reset + + thumb_func_start rfu_CB_reset +rfu_CB_reset: @ 0x08292970 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r4, r1, #0 + cmp r4, #0 + bne _08292984 + bl rfu_STC_clearAPIVariables +_08292984: + adds r0, r5, #0 + adds r1, r4, #0 + bl rfu_STC_REQ_callback + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end rfu_CB_reset + + thumb_func_start rfu_REQ_configSystem +rfu_REQ_configSystem: @ 0x08292994 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _082929CC + bl STWI_set_Callback_M + movs r0, #3 + 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 _082929D4 + ldr r0, _082929D0 + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #0x1a] + b _082929EE + .align 2, 0 +_082929CC: .4byte rfu_STC_REQ_callback +_082929D0: .4byte gUnknown_3007634 +_082929D4: + ldr r5, _082929F4 + ldrh r4, [r5] + movs r0, #0 + strh r0, [r5] + movs r0, #0x96 + lsls r0, r0, #2 + adds r1, r6, #0 + bl Div + ldr r1, _082929F8 + ldr r1, [r1] + strh r0, [r1, #0x1a] + strh r4, [r5] +_082929EE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_082929F4: .4byte 0x04000208 +_082929F8: .4byte gUnknown_3007634 + thumb_func_end rfu_REQ_configSystem + + thumb_func_start rfu_REQ_configGameData +rfu_REQ_configGameData: @ 0x082929FC + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r4, r2, #0 + adds r7, r3, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r1, #0x10 + adds r5, r4, #0 + mov r0, sp + strb r1, [r0] + lsrs r2, r2, #0x18 + strb r2, [r0, #1] + cmp r6, #0 + beq _08292A22 + movs r1, #0x80 + orrs r2, r1 + movs r1, #0 + orrs r2, r1 + strb r2, [r0, #1] +_08292A22: + movs r2, #2 + ldr r0, _08292A84 + mov ip, r0 +_08292A28: + mov r3, sp + adds r1, r3, r2 + ldrb r0, [r4] + strb r0, [r1] + adds r4, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xe + bls _08292A28 + movs r3, #0 + adds r1, r7, #0 + movs r2, #0 +_08292A42: + ldrb r0, [r1] + adds r0, r3, r0 + lsls r0, r0, #0x18 + adds r1, #1 + lsrs r0, r0, #0x18 + ldrb r3, [r5] + adds r0, r0, r3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r5, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _08292A42 + mov r1, sp + mvns r0, r3 + strb r0, [r1, #0xf] + cmp r6, #0 + beq _08292A6E + movs r0, #0 + strb r0, [r1, #0xe] +_08292A6E: + mov r0, ip + bl STWI_set_Callback_M + mov r0, sp + adds r1, r7, #0 + bl STWI_send_GameConfigREQ + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08292A84: .4byte rfu_CB_configGameData + thumb_func_end rfu_REQ_configGameData + + thumb_func_start rfu_CB_configGameData +rfu_CB_configGameData: @ 0x08292A88 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + cmp r7, #0 + bne _08292B12 + ldr r0, _08292ACC + ldr r0, [r0] + ldr r1, [r0, #0x24] + ldr r0, _08292AD0 + ldr r6, [r0] + ldrb r2, [r1, #4] + adds r5, r6, #0 + adds r5, #0x98 + strh r2, [r5] + ldrb r0, [r1, #5] + lsls r3, r0, #8 + orrs r3, r2 + strh r3, [r5] + adds r4, r1, #6 + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08292AD4 + eors r3, r1 + strh r3, [r5] + adds r1, r6, #0 + adds r1, #0x97 + movs r0, #1 + b _08292ADA + .align 2, 0 +_08292ACC: .4byte gUnknown_3007608 +_08292AD0: .4byte gUnknown_3007630 +_08292AD4: + adds r1, r6, #0 + adds r1, #0x97 + movs r0, #0 +_08292ADA: + strb r0, [r1] + movs r2, #0 + ldr r3, _08292B20 +_08292AE0: + ldr r0, [r3] + adds r0, #0x9a + adds r0, r0, r2 + ldrb r1, [r4] + strb r1, [r0] + adds r4, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xc + bls _08292AE0 + adds r4, #1 + movs r2, #0 + ldr r3, _08292B20 +_08292AFC: + ldr r0, [r3] + adds r0, #0xa9 + adds r0, r0, r2 + ldrb r1, [r4] + strb r1, [r0] + adds r4, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _08292AFC +_08292B12: + mov r0, ip + adds r1, r7, #0 + bl rfu_STC_REQ_callback + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08292B20: .4byte gUnknown_3007630 + thumb_func_end rfu_CB_configGameData + + thumb_func_start rfu_REQ_startSearchChild +rfu_REQ_startSearchChild: @ 0x08292B24 + push {r4, lr} + movs r1, #0 + ldr r4, _08292B6C + ldr r3, _08292B70 + movs r2, #0 +_08292B2E: + ldr r0, [r3] + adds r0, #0xe + adds r0, r0, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #3 + bls _08292B2E + adds r0, r4, #0 + bl STWI_set_Callback_M + bl STWI_send_SystemStatusREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08292B78 + ldr r0, _08292B74 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08292B7E + movs r0, #1 + bl rfu_STC_clearLinkStatus + b _08292B7E + .align 2, 0 +_08292B6C: .4byte rfu_CB_defaultCallback +_08292B70: .4byte gUnknown_3007634 +_08292B74: .4byte gUnknown_3007638 +_08292B78: + movs r0, #0x19 + bl rfu_STC_REQ_callback +_08292B7E: + ldr r0, _08292B90 + bl STWI_set_Callback_M + bl STWI_send_SC_StartREQ + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08292B90: .4byte rfu_CB_startSearchChild + thumb_func_end rfu_REQ_startSearchChild + + thumb_func_start rfu_CB_startSearchChild +rfu_CB_startSearchChild: @ 0x08292B94 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r2, r1, #0 + cmp r2, #0 + bne _08292BAC + ldr r0, _08292BB8 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #9] +_08292BAC: + adds r0, r3, #0 + adds r1, r2, #0 + bl rfu_STC_REQ_callback + pop {r0} + bx r0 + .align 2, 0 +_08292BB8: .4byte gUnknown_3007634 + thumb_func_end rfu_CB_startSearchChild + + thumb_func_start rfu_STC_clearLinkStatus +rfu_STC_clearLinkStatus: @ 0x08292BBC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl rfu_clearAllSlot + cmp r4, #0 + beq _08292BE4 + mov r0, sp + movs r5, #0 + strh r5, [r0] + ldr r4, _08292C18 + ldr r1, [r4] + adds r1, #0x14 + ldr r2, _08292C1C + bl CpuSet + ldr r0, [r4] + strb r5, [r0, #8] +_08292BE4: + movs r1, #0 + ldr r2, _08292C18 + adds r4, r2, #0 + movs r3, #0 +_08292BEC: + ldr r0, [r4] + adds r0, #0xa + adds r0, r0, r1 + strb r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _08292BEC + ldr r0, [r2] + movs r1, #0 + strb r1, [r0, #1] + ldr r0, [r2] + strb r1, [r0, #2] + ldr r0, [r2] + strb r1, [r0, #3] + ldr r0, [r2] + strb r1, [r0, #7] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08292C18: .4byte gUnknown_3007630 +_08292C1C: .4byte 0x01000040 + thumb_func_end rfu_STC_clearLinkStatus + + thumb_func_start rfu_REQ_pollSearchChild +rfu_REQ_pollSearchChild: @ 0x08292C20 + push {lr} + ldr r0, _08292C30 + bl STWI_set_Callback_M + bl STWI_send_SC_PollingREQ + pop {r0} + bx r0 + .align 2, 0 +_08292C30: .4byte rfu_CB_pollAndEndSearchChild + thumb_func_end rfu_REQ_pollSearchChild + + thumb_func_start rfu_REQ_endSearchChild +rfu_REQ_endSearchChild: @ 0x08292C34 + push {lr} + ldr r0, _08292C44 + bl STWI_set_Callback_M + bl STWI_send_SC_EndREQ + pop {r0} + bx r0 + .align 2, 0 +_08292C44: .4byte rfu_CB_pollAndEndSearchChild + thumb_func_end rfu_REQ_endSearchChild + + thumb_func_start rfu_CB_pollAndEndSearchChild +rfu_CB_pollAndEndSearchChild: @ 0x08292C48 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + cmp r6, #0 + bne _08292C5A + bl rfu_STC_readChildList +_08292C5A: + cmp r4, #0x1a + bne _08292C9C + ldr r5, _08292C90 + ldr r0, [r5] + adds r0, #0x94 + ldrh r0, [r0] + cmp r0, #0 + bne _08292CB8 + ldr r0, _08292C94 + bl STWI_set_Callback_M + bl STWI_send_SystemStatusREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08292CB8 + ldr r1, [r5] + ldr r0, _08292C98 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrh r0, [r0, #4] + adds r1, #0x94 + strh r0, [r1] + b _08292CB8 + .align 2, 0 +_08292C90: .4byte gUnknown_3007630 +_08292C94: .4byte rfu_CB_defaultCallback +_08292C98: .4byte gUnknown_3007638 +_08292C9C: + cmp r4, #0x1b + bne _08292CB8 + ldr r0, _08292CC8 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0xff + bne _08292CB0 + adds r1, #0x94 + movs r0, #0 + strh r0, [r1] +_08292CB0: + ldr r0, _08292CCC + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #9] +_08292CB8: + adds r0, r4, #0 + adds r1, r6, #0 + bl rfu_STC_REQ_callback + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08292CC8: .4byte gUnknown_3007630 +_08292CCC: .4byte gUnknown_3007634 + thumb_func_end rfu_CB_pollAndEndSearchChild + + thumb_func_start rfu_STC_readChildList +rfu_STC_readChildList: @ 0x08292CD0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08292D80 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r7, [r0, #1] + adds r6, r0, #4 + cmp r7, #0 + beq _08292D76 + ldr r0, _08292D84 + mov r8, r0 + ldr r1, _08292D88 + mov ip, r1 +_08292CEE: + ldrb r4, [r6, #2] + cmp r4, #3 + bhi _08292D6A + mov r2, ip + ldr r1, [r2] + ldrb r0, [r1, #2] + asrs r0, r4 + movs r5, #1 + ands r0, r5 + cmp r0, #0 + bne _08292D6A + ldrb r0, [r1, #3] + asrs r0, r4 + ands r0, r5 + cmp r0, #0 + bne _08292D6A + mov r1, r8 + ldr r0, [r1] + adds r0, #0xe + adds r0, r0, r4 + movs r1, #0xf0 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xa + adds r0, r0, r4 + movs r1, #0x10 + strb r1, [r0] + ldr r2, [r2] + adds r0, r5, #0 + lsls r0, r4 + ldrb r1, [r2, #2] + orrs r0, r1 + strb r0, [r2, #2] + mov r2, ip + ldr r1, [r2] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + ldr r1, [r2] + lsls r3, r4, #5 + adds r1, r1, r3 + ldrh r0, [r6] + strh r0, [r1, #0x14] + strb r4, [r1, #0x16] + ldr r0, [r2] + strb r5, [r0] + mov r0, r8 + ldr r2, [r0] + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + mov r2, r8 + ldr r1, [r2] + lsls r0, r4, #1 + adds r1, #0x12 + adds r1, r1, r0 + mov r2, ip + ldr r0, [r2] + adds r0, r0, r3 + ldrh r0, [r0, #0x14] + strh r0, [r1] +_08292D6A: + subs r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r6, #4 + cmp r7, #0 + bne _08292CEE +_08292D76: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08292D80: .4byte gUnknown_3007638 +_08292D84: .4byte gUnknown_3007634 +_08292D88: .4byte gUnknown_3007630 + thumb_func_end rfu_STC_readChildList + + thumb_func_start rfu_REQ_startSearchParent +rfu_REQ_startSearchParent: @ 0x08292D8C + push {lr} + ldr r0, _08292D9C + bl STWI_set_Callback_M + bl STWI_send_SP_StartREQ + pop {r0} + bx r0 + .align 2, 0 +_08292D9C: .4byte rfu_CB_startSearchParent + thumb_func_end rfu_REQ_startSearchParent + + thumb_func_start rfu_CB_startSearchParent +rfu_CB_startSearchParent: @ 0x08292DA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r4, r1, #0 + cmp r4, #0 + bne _08292DB6 + movs r0, #0 + bl rfu_STC_clearLinkStatus +_08292DB6: + adds r0, r5, #0 + adds r1, r4, #0 + bl rfu_STC_REQ_callback + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end rfu_CB_startSearchParent + + thumb_func_start rfu_REQ_pollSearchParent +rfu_REQ_pollSearchParent: @ 0x08292DC4 + push {lr} + ldr r0, _08292DD4 + bl STWI_set_Callback_M + bl STWI_send_SP_PollingREQ + pop {r0} + bx r0 + .align 2, 0 +_08292DD4: .4byte sub_08292DD8 + thumb_func_end rfu_REQ_pollSearchParent + + thumb_func_start sub_08292DD8 +sub_08292DD8: @ 0x08292DD8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r4, r1, #0 + cmp r4, #0 + bne _08292DEC + bl rfu_STC_readParentCandidateList +_08292DEC: + adds r0, r5, #0 + adds r1, r4, #0 + bl rfu_STC_REQ_callback + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08292DD8 + + thumb_func_start rfu_REQ_endSearchParent +rfu_REQ_endSearchParent: @ 0x08292DFC + push {lr} + ldr r0, _08292E0C + bl STWI_set_Callback_M + bl STWI_send_SP_EndREQ + pop {r0} + bx r0 + .align 2, 0 +_08292E0C: .4byte rfu_STC_REQ_callback + thumb_func_end rfu_REQ_endSearchParent + + thumb_func_start rfu_STC_readParentCandidateList +rfu_STC_readParentCandidateList: @ 0x08292E10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r0, sp + movs r4, #0 + strh r4, [r0] + ldr r5, _08292EB8 + ldr r1, [r5] + adds r1, #0x14 + ldr r2, _08292EBC + bl CpuSet + ldr r0, _08292EC0 + ldr r0, [r0] + adds r0, #0xdc + ldr r2, [r0] + ldrb r7, [r2, #1] + adds r2, #4 + ldr r0, [r5] + strb r4, [r0, #8] + movs r6, #0 + cmp r7, #0 + beq _08292F14 + mov ip, r5 + ldr r0, _08292EC4 + mov r8, r0 +_08292E46: + subs r0, r7, #7 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r1, r2, #6 + adds r2, #0x13 + ldrb r0, [r2] + mvns r0, r0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r2, #1 + movs r4, #0 + movs r3, #0 + adds r6, #1 +_08292E60: + ldrb r0, [r2] + adds r0, r4, r0 + lsls r0, r0, #0x18 + adds r2, #1 + lsrs r0, r0, #0x18 + ldrb r4, [r1] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r1, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #7 + bls _08292E60 + cmp r4, r5 + bne _08292F08 + subs r2, #0x1c + mov r0, ip + ldr r1, [r0] + ldrb r0, [r1, #8] + lsls r0, r0, #5 + adds r0, #0x14 + adds r4, r1, r0 + ldrh r0, [r2] + movs r3, #0 + strh r0, [r4] + adds r2, #2 + ldrb r0, [r2] + strb r0, [r4, #2] + adds r2, #2 + ldrh r1, [r2] + mov r0, r8 + ands r0, r1 + strh r0, [r4, #4] + ldrh r1, [r2] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08292EC8 + movs r0, #1 + strb r0, [r4, #3] + b _08292ECA + .align 2, 0 +_08292EB8: .4byte gUnknown_3007630 +_08292EBC: .4byte 0x01000040 +_08292EC0: .4byte gUnknown_3007638 +_08292EC4: .4byte 0x00007FFF +_08292EC8: + strb r3, [r4, #3] +_08292ECA: + adds r2, #2 + movs r3, #0 + adds r5, r4, #0 + adds r5, #0x15 + adds r4, #6 +_08292ED4: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xc + bls _08292ED4 + adds r2, #1 + movs r3, #0 + adds r4, r5, #0 +_08292EEC: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #7 + bls _08292EEC + mov r4, ip + ldr r1, [r4] + ldrb r0, [r1, #8] + adds r0, #1 + strb r0, [r1, #8] +_08292F08: + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bhi _08292F14 + cmp r7, #0 + bne _08292E46 +_08292F14: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end rfu_STC_readParentCandidateList + + thumb_func_start rfu_REQ_startConnectParent +rfu_REQ_startConnectParent: @ 0x08292F20 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #0 + movs r2, #0 + ldr r1, _08292F6C + ldr r0, [r1] + ldrh r0, [r0, #0x14] + cmp r0, r4 + beq _08292F4C + adds r5, r1, #0 +_08292F36: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bhi _08292F4C + ldr r0, [r5] + lsls r1, r2, #5 + adds r0, r0, r1 + ldrh r0, [r0, #0x14] + cmp r0, r4 + bne _08292F36 +_08292F4C: + cmp r2, #4 + bne _08292F54 + movs r3, #0x80 + lsls r3, r3, #1 +_08292F54: + cmp r3, #0 + bne _08292F78 + ldr r0, _08292F70 + ldr r0, [r0] + strh r4, [r0, #0x1e] + ldr r0, _08292F74 + bl STWI_set_Callback_M + adds r0, r4, #0 + bl STWI_send_CP_StartREQ + b _08292F80 + .align 2, 0 +_08292F6C: .4byte gUnknown_3007630 +_08292F70: .4byte gUnknown_3007634 +_08292F74: .4byte rfu_STC_REQ_callback +_08292F78: + movs r0, #0x1f + adds r1, r3, #0 + bl rfu_STC_REQ_callback +_08292F80: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end rfu_REQ_startConnectParent + + thumb_func_start rfu_REQ_pollConnectParent +rfu_REQ_pollConnectParent: @ 0x08292F88 + push {lr} + ldr r0, _08292F98 + bl STWI_set_Callback_M + bl STWI_send_CP_PollingREQ + pop {r0} + bx r0 + .align 2, 0 +_08292F98: .4byte rfu_CB_pollConnectParent + thumb_func_end rfu_REQ_pollConnectParent + + thumb_func_start rfu_CB_pollConnectParent +rfu_CB_pollConnectParent: @ 0x08292F9C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x28] + cmp r1, #0 + bne _0829309E + ldr r0, _08293058 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrh r5, [r0, #4] + ldrb r1, [r0, #6] + mov sl, r1 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0829309E + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r1 + lsrs r2, r0, #0x18 + ldr r4, _0829305C + ldr r3, [r4] + ldrb r1, [r3, #2] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0829309E + adds r0, r2, #0 + orrs r0, r1 + strb r0, [r3, #2] + ldr r1, [r4] + ldrb r0, [r1, #3] + bics r0, r2 + strb r0, [r1, #3] + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x94 + movs r2, #0 + strh r5, [r0] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + ldr r0, [r4] + strb r2, [r0] + ldr r3, _08293060 + 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 +_0829301A: + 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 _08293072 + ldrb r0, [r2, #8] + cmp r0, #0 + beq _08293068 + mov sb, 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, _08293064 + bl CpuSet + ldr r0, [r7] + mov r1, r8 + strb r1, [r0, #8] + b _0829307C + .align 2, 0 +_08293058: .4byte gUnknown_3007638 +_0829305C: .4byte gUnknown_3007630 +_08293060: .4byte gUnknown_3007634 +_08293064: .4byte 0x01000040 +_08293068: + adds r0, r4, #0 + adds r0, #0x14 + adds r2, r2, r0 + mov sb, r2 + b _0829307C +_08293072: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _0829301A +_0829307C: + cmp r5, #3 + bhi _0829309E + ldr r4, _082930B8 + mov r0, sl + lsls r5, r0, #5 + adds r0, r5, #0 + adds r0, #0x14 + ldr r1, [r4] + adds r1, r1, r0 + mov r0, sb + movs r2, #0x10 + bl CpuSet + ldr r0, [r4] + adds r0, r0, r5 + mov r1, sl + strb r1, [r0, #0x16] +_0829309E: + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + bl rfu_STC_REQ_callback + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082930B8: .4byte gUnknown_3007630 + thumb_func_end rfu_CB_pollConnectParent + + thumb_func_start rfu_getConnectParentStatus +rfu_getConnectParentStatus: @ 0x082930BC + push {lr} + adds r3, r0, #0 + movs r0, #0xff + strb r0, [r3] + ldr r0, _082930DC + ldr r0, [r0] + adds r0, #0xdc + ldr r2, [r0] + ldrb r0, [r2] + adds r0, #0x60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _082930E0 + movs r0, #0x10 + b _082930EC + .align 2, 0 +_082930DC: .4byte gUnknown_3007638 +_082930E0: + adds r2, #6 + ldrb r0, [r2] + strb r0, [r1] + ldrb r0, [r2, #1] + strb r0, [r3] + movs r0, #0 +_082930EC: + pop {r1} + bx r1 + thumb_func_end rfu_getConnectParentStatus + + thumb_func_start rfu_REQ_endConnectParent +rfu_REQ_endConnectParent: @ 0x082930F0 + push {lr} + ldr r0, _0829311C + bl STWI_set_Callback_M + bl STWI_send_CP_EndREQ + ldr r0, _08293120 + ldr r0, [r0] + adds r0, #0xdc + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #3 + bhi _08293118 + ldr r0, _08293124 + ldr r0, [r0] + adds r0, #0xa + ldrb r1, [r1, #6] + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_08293118: + pop {r0} + bx r0 + .align 2, 0 +_0829311C: .4byte rfu_CB_pollConnectParent +_08293120: .4byte gUnknown_3007638 +_08293124: .4byte gUnknown_3007634 + thumb_func_end rfu_REQ_endConnectParent + + thumb_func_start rfu_syncVBlank +rfu_syncVBlank: @ 0x08293128 + push {r4, r5, lr} + bl rfu_NI_checkCommFailCounter + ldr r0, _08293170 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xff + beq _08293200 + ldr r4, _08293174 + ldr r1, [r4] + ldrb r0, [r1, #6] + cmp r0, #0 + beq _08293146 + subs r0, #1 + strb r0, [r1, #6] +_08293146: + bl rfu_getMasterSlave + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, [r4] + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08293178 + cmp r3, #0 + bne _08293186 + movs r0, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4] + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r1, #0x20] + b _08293182 + .align 2, 0 +_08293170: .4byte gUnknown_3007630 +_08293174: .4byte gUnknown_3007634 +_08293178: + cmp r3, #0 + beq _08293198 + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] +_08293182: + cmp r3, #0 + beq _08293198 +_08293186: + ldr r3, _08293194 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, #0xfd + ands r0, r1 + b _082931A2 + .align 2, 0 +_08293194: .4byte gUnknown_3007634 +_08293198: + ldr r3, _082931F4 + ldr r2, [r3] + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 +_082931A2: + strb r0, [r2] + ldr r3, [r3] + ldrb r1, [r3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08293200 + ldrh r0, [r3, #0x20] + cmp r0, #0 + bne _082931FC + movs r0, #0xfb + ands r0, r1 + strb r0, [r3] + ldr r0, _082931F8 + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + adds r5, r0, #0 + orrs r5, r1 + movs r4, #0 +_082931CA: + adds r0, r5, #0 + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _082931DC + adds r0, r4, #0 + bl rfu_STC_removeLinkData +_082931DC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _082931CA + ldr r0, _082931F8 + ldr r1, [r0] + movs r0, #0xff + strb r0, [r1] + movs r0, #1 + b _08293202 + .align 2, 0 +_082931F4: .4byte gUnknown_3007634 +_082931F8: .4byte gUnknown_3007630 +_082931FC: + subs r0, #1 + strh r0, [r3, #0x20] +_08293200: + movs r0, #0 +_08293202: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end rfu_syncVBlank + + thumb_func_start rfu_REQBN_watchLink +rfu_REQBN_watchLink: @ 0x08293208 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + mov r8, r1 + str r2, [sp] + str r3, [sp, #4] + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0 + str r0, [sp, #8] + 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, #4] + strb r0, [r2] + ldr r5, _082932A8 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, #0xff + bne _08293246 + b _082935D6 +_08293246: + ldr r0, _082932AC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _08293252 + b _082935D6 +_08293252: + ldr r3, _082932B0 + ldr r2, [r3] + ldrb r1, [r2] + movs r4, #4 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08293268 + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r2, #0x20] +_08293268: + ldr r1, [r3] + ldrb r0, [r1, #6] + cmp r0, #0 + bne _08293276 + strb r4, [r1, #6] + movs r1, #1 + str r1, [sp, #8] +_08293276: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x29 + bne _082932B8 + ldr r0, _082932B4 + ldr r0, [r0] + adds r0, #0xdc + ldr r1, [r0] + ldrb r0, [r1, #4] + mov r2, r8 + strb r0, [r2] + ldrb r0, [r1, #5] + ldr r1, [sp] + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _082932A0 + ldr r0, [r5] + ldrb r0, [r0, #2] + strb r0, [r2] +_082932A0: + movs r2, #2 + str r2, [sp, #8] + b _08293310 + .align 2, 0 +_082932A8: .4byte gUnknown_3007630 +_082932AC: .4byte gUnknown_3007608 +_082932B0: .4byte gUnknown_3007634 +_082932B4: .4byte gUnknown_3007638 +_082932B8: + movs r0, #0x9b + lsls r0, r0, #1 + cmp r6, r0 + bne _08293308 + ldr r0, _08293364 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r6, [r0, #5] + ldr r0, [r5] + ldrb r0, [r0, #2] + eors r6, r0 + ands r6, r0 + mov r0, r8 + strb r6, [r0] + movs r0, #1 + ldr r1, [sp] + strb r0, [r1] + movs r5, #0 +_082932DE: + mov r2, r8 + ldrb r0, [r2] + asrs r0, r5 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _082932FE + ldr r0, _08293368 + ldr r0, [r0] + adds r0, #0xa + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + adds r0, r5, #0 + bl rfu_STC_removeLinkData +_082932FE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _082932DE +_08293308: + ldr r0, [sp, #8] + cmp r0, #0 + bne _08293310 + b _082935D6 +_08293310: + ldr r4, _08293364 + ldr r0, [r4] + adds r0, #0xdc + ldr r0, [r0] + ldr r1, [r0] + str r1, [sp, #0x10] + ldr r0, [r0, #4] + str r0, [sp, #0x14] + ldr r0, _0829336C + bl STWI_set_Callback_M + bl STWI_send_LinkStatusREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + cmp r0, #0 + bne _08293370 + ldr r0, [r4] + adds r0, #0xdc + ldr r0, [r0] + adds r2, r0, #4 + movs r5, #0 + ldr r3, _08293368 +_08293344: + ldr r0, [r3] + adds r0, #0xa + adds r0, r0, r5 + ldrb r1, [r2] + strb r1, [r0] + adds r2, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08293344 + movs r2, #0 + mov sb, r2 + movs r5, #0 + b _0829337C + .align 2, 0 +_08293364: .4byte gUnknown_3007638 +_08293368: .4byte gUnknown_3007630 +_0829336C: .4byte rfu_CB_defaultCallback +_08293370: + movs r0, #0x11 + ldr r1, [sp, #0xc] + bl rfu_STC_REQ_callback + ldr r0, [sp, #0xc] + b _082935D8 +_0829337C: + ldr r1, _08293404 + ldr r0, [r1] + adds r0, #0xe + adds r2, r0, r5 + ldrb r0, [r2] + adds r3, r1, #0 + cmp r0, #0 + beq _082933A2 + subs r0, #4 + strb r0, [r2] + ldr r0, _08293408 + ldr r0, [r0] + adds r0, #0xa + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, #0xf + bhi _082933A2 + movs r0, #0x10 + strb r0, [r1] +_082933A2: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r5 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + mov sl, r0 + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _082933B6 + b _0829358A +_082933B6: + ldr r2, [sp, #8] + cmp r2, #1 + bne _08293498 + ldr r4, _08293408 + ldr r1, [r4] + ldrb r0, [r1, #2] + ands r0, r6 + cmp r0, #0 + beq _08293498 + adds r0, r1, #0 + adds r0, #0xa + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _0829348C + ldrb r0, [r1] + cmp r0, #1 + bne _0829340C + ldr r1, [r3] + adds r1, #0xa + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r3] + adds r0, #0xa + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #3 + bls _08293498 + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, #0 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + ldr r0, [sp] + strb r2, [r0] + b _08293498 + .align 2, 0 +_08293404: .4byte gUnknown_3007634 +_08293408: .4byte gUnknown_3007630 +_0829340C: + bl STWI_send_SystemStatusREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08293498 + ldr r0, _0829343C + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08293440 + mov r2, r8 + ldrb r1, [r2] + adds r0, r6, #0 + orrs r0, r1 + strb r0, [r2] + mov r0, sp + ldrb r1, [r0, #8] + ldr r0, [sp] + b _08293496 + .align 2, 0 +_0829343C: .4byte gUnknown_3007638 +_08293440: + ldr r2, _08293488 + ldr r1, [r2] + adds r1, #0xa + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + ldr r2, [r2] + lsrs r0, r0, #0x18 + ldrh r1, [r2, #0x1a] + cmp r0, r1 + bls _08293498 + adds r0, r2, #0 + adds r0, #0xa + adds r0, r0, r5 + mov r2, sp + ldrb r2, [r2, #0xc] + strb r2, [r0] + ldr r0, [r4] + ldrb r0, [r0, #2] + bl STWI_send_DisconnectREQ + bl STWI_poll_CommandEnd + 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, #8] + ldr r2, [sp] + strb r0, [r2] + b _08293498 + .align 2, 0 +_08293488: .4byte gUnknown_3007634 +_0829348C: + ldr r0, [r3] + adds r0, #0xa + adds r0, r0, r5 + mov r1, sp + ldrb r1, [r1, #0xc] +_08293496: + strb r1, [r0] +_08293498: + ldr r2, _082934F8 + mov ip, r2 + ldr r1, [r2] + ldrb r7, [r1] + adds r0, r5, #1 + mov sl, r0 + cmp r7, #1 + bne _0829358A + adds r0, r1, #0 + adds r0, #0xa + adds r4, r0, r5 + ldrb r3, [r4] + cmp r3, #0 + beq _0829358A + ldrb r2, [r1, #3] + adds r0, r6, #0 + ands r0, r2 + cmp r0, #0 + beq _08293506 + cmp r3, #0xa + bls _08293500 + ldr r2, [sp, #4] + ldrb r1, [r2] + adds r0, r6, #0 + orrs r0, r1 + strb r0, [r2] + mov r0, ip + ldr r2, [r0] + ldrb r1, [r2, #2] + adds r0, r6, #0 + orrs r0, r1 + movs r3, #0 + strb r0, [r2, #2] + mov r2, ip + ldr r1, [r2] + ldrb r0, [r1, #3] + bics r0, r6 + strb r0, [r1, #3] + ldr r1, [r2] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + ldr r0, _082934FC + ldr r0, [r0] + adds r0, #0xa + adds r0, r0, r5 + strb r3, [r0] + b _0829358A + .align 2, 0 +_082934F8: .4byte gUnknown_3007630 +_082934FC: .4byte gUnknown_3007634 +_08293500: + movs r0, #0 + strb r0, [r4] + b _0829358A +_08293506: + ldrb r0, [r1, #2] + orrs r0, r2 + ands r0, r6 + cmp r0, #0 + bne _0829358A + bl STWI_send_SlotStatusREQ + bl STWI_poll_CommandEnd + ldr r0, _08293550 + ldr r0, [r0] + adds r0, #0xdc + ldr r2, [r0] + ldrb r0, [r2, #1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r2, #8 + cmp r3, #0 + beq _0829358A + ldrh r4, [r2] + ldrb r0, [r2, #2] + cmp r0, r5 + bne _08293558 + ldr r0, _08293554 + ldr r0, [r0] + lsls r1, r5, #1 + adds r0, #0x12 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _08293558 + lsls r7, r5 + mov r0, sb + orrs r0, r7 + lsls r0, r0, #0x18 + b _08293586 + .align 2, 0 +_08293550: .4byte gUnknown_3007638 +_08293554: .4byte gUnknown_3007634 +_08293558: + adds r2, #4 + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0829358A + ldrh r4, [r2] + ldrb r0, [r2, #2] + cmp r0, r5 + bne _08293558 + ldr r0, _082935E8 + ldr r0, [r0] + lsls r1, r5, #1 + adds r0, #0x12 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _08293558 + movs r0, #1 + lsls r0, r5 + mov r1, sb + orrs r1, r0 + lsls r0, r1, #0x18 +_08293586: + lsrs r0, r0, #0x18 + mov sb, r0 +_0829358A: + ldr r0, _082935EC + ldr r0, [r0] + ldrb r1, [r0, #2] + mov r2, r8 + ldrb r0, [r2] + ands r0, r1 + ands r6, r0 + cmp r6, #0 + beq _082935A4 + adds r0, r5, #0 + movs r1, #0 + bl rfu_STC_removeLinkData +_082935A4: + mov r1, sl + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bhi _082935B0 + b _0829337C +_082935B0: + mov r2, sb + cmp r2, #0 + beq _082935C0 + mov r0, sb + bl STWI_send_DisconnectREQ + bl STWI_poll_CommandEnd +_082935C0: + ldr r1, _082935F0 + 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, #4] +_082935D6: + movs r0, #0 +_082935D8: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_082935E8: .4byte gUnknown_3007634 +_082935EC: .4byte gUnknown_3007630 +_082935F0: .4byte gUnknown_3007638 + thumb_func_end rfu_REQBN_watchLink + + thumb_func_start rfu_STC_removeLinkData +rfu_STC_removeLinkData: @ 0x082935F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov ip, r1 + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r7 + lsrs r6, r0, #0x18 + ldr r0, _082936A4 + ldr r0, [r0] + adds r0, #0xe + adds r0, r0, r7 + movs r1, #0 + strb r1, [r0] + ldr r1, _082936A8 + ldr r4, [r1] + ldrb r0, [r4, #2] + ands r0, r6 + mov r8, r1 + cmp r0, #0 + beq _08293632 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _08293632 + subs r0, #1 + strb r0, [r4, #1] +_08293632: + mov r3, r8 + ldr r2, [r3] + mvns r5, r6 + ldrb r1, [r2, #2] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #2] + ldr r2, [r3] + ldrb r1, [r2, #3] + adds r0, r6, #0 + orrs r0, r1 + strb r0, [r2, #3] + ldr r3, [r3] + ldr r0, [r3] + ldr r1, _082936AC + ands r0, r1 + cmp r0, #0 + bne _0829365A + movs r0, #0xff + strb r0, [r3] +_0829365A: + mov r0, ip + cmp r0, #0 + beq _08293698 + 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, r1, r0 + ldr r2, _082936B0 + mov r0, sp + bl CpuSet + mov r0, r8 + ldr r2, [r0] + ldrb r1, [r2, #3] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #3] + mov r2, r8 + ldr r1, [r2] + ldrb r0, [r1, #7] + ands r5, r0 + strb r5, [r1, #7] + ldr r0, [r2] + adds r0, #0xa + adds r0, r0, r7 + strb r4, [r0] +_08293698: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082936A4: .4byte gUnknown_3007634 +_082936A8: .4byte gUnknown_3007630 +_082936AC: .4byte 0x00FF00FF +_082936B0: .4byte 0x01000010 + thumb_func_end rfu_STC_removeLinkData + + thumb_func_start rfu_REQ_disconnect +rfu_REQ_disconnect: @ 0x082936B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _082936F8 + ldr r1, [r2] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + orrs r0, r1 + ands r0, r4 + cmp r0, #0 + beq _08293738 + ldr r0, _082936FC + ldr r1, [r0] + strb r4, [r1, #5] + ldr r2, [r2] + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #0xff + bne _08293700 + ldr r0, [r3] + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08293700 + ldrb r0, [r2, #3] + ands r0, r4 + cmp r0, #0 + beq _08293738 + movs r0, #0x30 + movs r1, #0 + bl rfu_CB_disconnect + b _08293738 + .align 2, 0 +_082936F8: .4byte gUnknown_3007630 +_082936FC: .4byte gUnknown_3007634 +_08293700: + ldr r0, [r3] + ldrb r0, [r0, #9] + cmp r0, #0 + beq _0829372C + ldr r0, _08293728 + bl STWI_set_Callback_M + bl STWI_send_SC_EndREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0829372C + movs r0, #0x1b + bl rfu_STC_REQ_callback + b _08293738 + .align 2, 0 +_08293728: .4byte rfu_CB_defaultCallback +_0829372C: + ldr r0, _08293740 + bl STWI_set_Callback_M + adds r0, r4, #0 + bl STWI_send_DisconnectREQ +_08293738: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08293740: .4byte rfu_CB_disconnect + thumb_func_end rfu_REQ_disconnect + + thumb_func_start rfu_CB_disconnect +rfu_CB_disconnect: @ 0x08293744 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + cmp r5, #3 + bne _08293780 + ldr r0, _08293814 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + bne _08293780 + ldr r0, _08293818 + bl STWI_set_Callback_M + bl STWI_send_SystemStatusREQ + bl STWI_poll_CommandEnd + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08293780 + ldr r0, _0829381C + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08293780 + movs r5, #0 +_08293780: + ldr r3, _08293820 + ldr r2, [r3] + ldr r0, _08293814 + ldr r1, [r0] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + orrs r0, r1 + ldrb r1, [r2, #5] + ands r0, r1 + strb r0, [r2, #5] + ldr r0, _0829381C + ldr r0, [r0] + adds r0, #0xdc + ldr r1, [r0] + ldr r0, [r3] + ldrb r0, [r0, #5] + strb r0, [r1, #8] + cmp r5, #0 + bne _082937CE + movs r4, #0 +_082937A8: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r4 + lsrs r0, r0, #0x18 + ldr r1, _08293820 + ldr r1, [r1] + ldrb r1, [r1, #5] + ands r0, r1 + cmp r0, #0 + beq _082937C4 + adds r0, r4, #0 + movs r1, #1 + bl rfu_STC_removeLinkData +_082937C4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _082937A8 +_082937CE: + ldr r0, _08293814 + ldr r2, [r0] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + orrs r0, r1 + cmp r0, #0 + bne _082937E0 + movs r0, #0xff + strb r0, [r2] +_082937E0: + adds r0, r6, #0 + adds r1, r5, #0 + bl rfu_STC_REQ_callback + ldr r0, _08293820 + ldr r0, [r0] + ldrb r0, [r0, #9] + cmp r0, #0 + beq _0829380E + ldr r0, _08293818 + bl STWI_set_Callback_M + bl STWI_send_SC_StartREQ + bl STWI_poll_CommandEnd + adds r5, r0, #0 + cmp r5, #0 + beq _0829380E + movs r0, #0x19 + adds r1, r5, #0 + bl rfu_STC_REQ_callback +_0829380E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08293814: .4byte gUnknown_3007630 +_08293818: .4byte rfu_CB_defaultCallback +_0829381C: .4byte gUnknown_3007638 +_08293820: .4byte gUnknown_3007634 + thumb_func_end rfu_CB_disconnect + + thumb_func_start rfu_REQ_CHILD_startConnectRecovery +rfu_REQ_CHILD_startConnectRecovery: @ 0x08293824 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08293874 + ldr r0, [r0] + strb r5, [r0, #5] + movs r4, #0 + movs r0, #1 + ands r0, r5 + ldr r2, _08293878 + cmp r0, #0 + bne _08293852 + movs r1, #1 +_0829383E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bhi _08293852 + adds r0, r5, #0 + asrs r0, r4 + ands r0, r1 + cmp r0, #0 + beq _0829383E +_08293852: + adds r0, r2, #0 + bl STWI_set_Callback_M + ldr r0, _0829387C + 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 +_08293874: .4byte gUnknown_3007634 +_08293878: .4byte rfu_STC_REQ_callback +_0829387C: .4byte gUnknown_3007630 + thumb_func_end rfu_REQ_CHILD_startConnectRecovery + + thumb_func_start rfu_REQ_CHILD_pollConnectRecovery +rfu_REQ_CHILD_pollConnectRecovery: @ 0x08293880 + push {lr} + ldr r0, _08293890 + bl STWI_set_Callback_M + bl STWI_send_CPR_PollingREQ + pop {r0} + bx r0 + .align 2, 0 +_08293890: .4byte rfu_CB_CHILD_pollConnectRecovery + thumb_func_end rfu_REQ_CHILD_pollConnectRecovery + + thumb_func_start rfu_CB_CHILD_pollConnectRecovery +rfu_CB_CHILD_pollConnectRecovery: @ 0x08293894 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + cmp r7, #0 + bne _08293918 + ldr r0, _0829392C + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + bne _08293918 + ldr r0, _08293930 + ldr r1, [r0] + ldrb r1, [r1, #5] + adds r6, r0, #0 + cmp r1, #0 + beq _08293918 + ldr r1, _08293934 + ldr r0, [r1] + strb r7, [r0] + movs r4, #0 + adds r5, r1, #0 + mov ip, r4 +_082938CE: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r4 + lsrs r3, r0, #0x18 + ldr r2, [r5] + ldr r0, [r6] + ldrb r0, [r0, #5] + ands r0, r3 + ldrb r1, [r2, #3] + ands r0, r1 + cmp r0, #0 + beq _08293908 + ldrb r1, [r2, #2] + adds r0, r3, #0 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r5] + ldrb r0, [r1, #3] + bics r0, r3 + strb r0, [r1, #3] + ldr r1, [r5] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + ldr r0, [r6] + adds r0, #0xa + adds r0, r0, r4 + mov r1, ip + strb r1, [r0] +_08293908: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _082938CE + ldr r1, [r6] + movs r0, #0 + strb r0, [r1, #5] +_08293918: + mov r0, r8 + adds r1, r7, #0 + bl rfu_STC_REQ_callback + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0829392C: .4byte gUnknown_3007638 +_08293930: .4byte gUnknown_3007634 +_08293934: .4byte gUnknown_3007630 + thumb_func_end rfu_CB_CHILD_pollConnectRecovery + + thumb_func_start rfu_CHILD_getConnectRecoveryStatus +rfu_CHILD_getConnectRecoveryStatus: @ 0x08293938 + push {lr} + adds r2, r0, #0 + movs r0, #0xff + strb r0, [r2] + ldr r0, _08293958 + ldr r0, [r0] + adds r0, #0xdc + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #0x4d + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0829395C + movs r0, #0x10 + b _08293962 + .align 2, 0 +_08293958: .4byte gUnknown_3007638 +_0829395C: + ldrb r0, [r1, #4] + strb r0, [r2] + movs r0, #0 +_08293962: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end rfu_CHILD_getConnectRecoveryStatus + + thumb_func_start rfu_REQ_CHILD_endConnectRecovery +rfu_REQ_CHILD_endConnectRecovery: @ 0x08293968 + push {lr} + ldr r0, _08293978 + bl STWI_set_Callback_M + bl STWI_send_CPR_EndREQ + pop {r0} + bx r0 + .align 2, 0 +_08293978: .4byte rfu_CB_CHILD_pollConnectRecovery + thumb_func_end rfu_REQ_CHILD_endConnectRecovery + + thumb_func_start sub_0829397C +sub_0829397C: @ 0x0829397C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r3, [r5] + ldr r1, [r6] + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _082939A0 + adds r4, r0, #0 +_08293992: + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r1, #1 + subs r2, #1 + cmp r2, r4 + bne _08293992 +_082939A0: + str r3, [r5] + str r1, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0829397C + + thumb_func_start rfu_REQ_changeMasterSlave +rfu_REQ_changeMasterSlave: @ 0x082939AC + push {lr} + movs r0, #1 + bl STWI_read_status + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _082939CC + ldr r0, _082939C8 + bl STWI_set_Callback_M + bl STWI_send_MS_ChangeREQ + b _082939D4 + .align 2, 0 +_082939C8: .4byte rfu_STC_REQ_callback +_082939CC: + movs r0, #0x27 + movs r1, #0 + bl rfu_STC_REQ_callback +_082939D4: + pop {r0} + bx r0 + thumb_func_end rfu_REQ_changeMasterSlave + + thumb_func_start rfu_getMasterSlave +rfu_getMasterSlave: @ 0x082939D8 + push {lr} + movs r0, #1 + bl STWI_read_status + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bne _08293A06 + ldr r0, _08293A0C + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _08293A06 + ldrb r0, [r1, #6] + cmp r0, #0x27 + beq _08293A04 + cmp r0, #0x25 + beq _08293A04 + cmp r0, #0x37 + bne _08293A06 +_08293A04: + movs r2, #0 +_08293A06: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_08293A0C: .4byte gUnknown_3007608 + thumb_func_end rfu_getMasterSlave + + thumb_func_start rfu_clearAllSlot +rfu_clearAllSlot: @ 0x08293A10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r1, _08293A94 + ldrh r0, [r1] + mov r8, r0 + movs r0, #0 + strh r0, [r1] + movs r5, #0 + mov r0, sp + adds r0, #2 + movs r7, #0 + adds r6, r0, #0 +_08293A2C: + mov r0, sp + strh r7, [r0] + ldr r0, _08293A98 + lsls r4, r5, #2 + adds r0, r4, r0 + ldr r1, [r0] + mov r0, sp + ldr r2, _08293A9C + bl CpuSet + strh r7, [r6] + ldr r0, _08293AA0 + adds r4, r4, r0 + ldr r1, [r4] + adds r0, r6, #0 + ldr r2, _08293AA4 + bl CpuSet + ldr r3, _08293AA8 + ldr r0, [r3] + adds r0, #0x10 + adds r0, r0, r5 + movs r1, #0x10 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _08293A2C + ldr r2, [r3] + movs r1, #0 + movs r0, #0x57 + strb r0, [r2, #0xf] + ldr r0, [r3] + strb r1, [r0, #4] + ldr r0, [r3] + strb r1, [r0, #5] + ldr r0, [r3] + strb r1, [r0, #6] + ldr r0, _08293AAC + ldr r0, [r0] + strb r1, [r0, #2] + ldr r0, _08293A94 + mov r1, r8 + strh r1, [r0] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08293A94: .4byte 0x04000208 +_08293A98: .4byte gUnknown_3007620 +_08293A9C: .4byte 0x01000034 +_08293AA0: .4byte gUnknown_3007610 +_08293AA4: .4byte 0x0100000A +_08293AA8: .4byte gUnknown_3007630 +_08293AAC: .4byte gUnknown_3007634 + thumb_func_end rfu_clearAllSlot + + thumb_func_start rfu_STC_releaseFrame +rfu_STC_releaseFrame: @ 0x08293AB0 + push {r4, r5, r6, lr} + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r0, _08293AE8 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08293AF0 + ldr r6, _08293AEC + cmp r3, #0 + bne _08293ADC + ldr r1, [r6] + ldrb r0, [r1, #0xf] + ldrh r4, [r4, #0x2e] + adds r0, r0, r4 + strb r0, [r1, #0xf] +_08293ADC: + ldr r1, [r6] + ldrb r0, [r1, #0xf] + adds r0, #3 + strb r0, [r1, #0xf] + b _08293B10 + .align 2, 0 +_08293AE8: .4byte gUnknown_3007634 +_08293AEC: .4byte gUnknown_3007630 +_08293AF0: + ldr r6, _08293B18 + cmp r3, #0 + bne _08293B04 + ldr r1, [r6] + adds r1, #0x10 + adds r1, r1, r2 + ldrb r0, [r1] + ldrh r4, [r4, #0x2e] + adds r0, r0, r4 + strb r0, [r1] +_08293B04: + ldr r1, [r6] + adds r1, #0x10 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] +_08293B10: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08293B18: .4byte gUnknown_3007630 + thumb_func_end rfu_STC_releaseFrame + + thumb_func_start rfu_clearSlot +rfu_clearSlot: @ 0x08293B1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + cmp r7, #3 + bls _08293B3C + movs r0, #0x80 + lsls r0, r0, #3 + b _08293CB4 +_08293B3C: + movs r0, #0xf + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _08293B4C + movs r0, #0xc0 + lsls r0, r0, #3 + b _08293CB4 +_08293B4C: + ldr r1, _08293B90 + ldrh r0, [r1] + mov sl, r0 + movs r0, #0 + strh r0, [r1] + movs r0, #0xc + mov r2, r8 + ands r0, r2 + cmp r0, #0 + beq _08293C14 + movs r3, #0 + ldr r1, _08293B94 + lsls r0, r7, #2 + adds r0, r0, r1 + mov sb, r0 +_08293B6A: + movs r4, #0 + cmp r3, #0 + bne _08293B9C + movs r0, #4 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08293BBC + mov r2, sb + ldr r4, [r2] + ldr r0, _08293B98 + ldr r2, [r0] + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + ldrb r0, [r2, #4] + bics r0, r1 + strb r0, [r2, #4] + b _08293BBC + .align 2, 0 +_08293B90: .4byte 0x04000208 +_08293B94: .4byte gUnknown_3007620 +_08293B98: .4byte gUnknown_3007630 +_08293B9C: + movs r0, #8 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08293BBC + mov r2, sb + ldr r0, [r2] + adds r4, r0, #0 + adds r4, #0x34 + ldr r0, _08293C50 + ldr r2, [r0] + movs r1, #1 + lsls r1, r7 + ldrb r0, [r2, #5] + bics r0, r1 + strb r0, [r2, #5] +_08293BBC: + adds r6, r3, #1 + cmp r4, #0 + beq _08293C0C + ldrh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #8 + adds r1, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08293BFC + lsls r1, r3, #0x18 + lsrs r1, r1, #0x18 + adds r0, r7, #0 + adds r2, r4, #0 + bl rfu_STC_releaseFrame + movs r1, #0 + adds r2, r4, #0 + adds r2, #0x2c + movs r5, #1 + movs r3, #0 +_08293BE6: + ldrb r0, [r2] + asrs r0, r1 + ands r0, r5 + cmp r0, #0 + beq _08293BF2 + strh r3, [r4, #2] +_08293BF2: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #3 + bls _08293BE6 +_08293BFC: + mov r1, sp + movs r0, #0 + strh r0, [r1] + mov r0, sp + adds r1, r4, #0 + ldr r2, _08293C54 + bl CpuSet +_08293C0C: + lsls r0, r6, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #1 + bls _08293B6A +_08293C14: + movs r0, #1 + mov r4, r8 + ands r0, r4 + cmp r0, #0 + beq _08293C8A + ldr r1, _08293C58 + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r3, [r0] + ldrh r1, [r3] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08293C7C + ldr r0, _08293C5C + ldr r0, [r0] + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08293C60 + ldr r2, _08293C50 + ldr r1, [r2] + ldrb r0, [r1, #0xf] + adds r0, #3 + ldrb r4, [r3, #4] + adds r0, r0, r4 + strb r0, [r1, #0xf] + b _08293C72 + .align 2, 0 +_08293C50: .4byte gUnknown_3007630 +_08293C54: .4byte 0x0100001A +_08293C58: .4byte gUnknown_3007610 +_08293C5C: .4byte gUnknown_3007634 +_08293C60: + ldr r2, _08293CC4 + ldr r1, [r2] + adds r1, #0x10 + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #2 + ldrb r4, [r3, #4] + adds r0, r0, r4 + strb r0, [r1] +_08293C72: + ldr r2, [r2] + ldrb r1, [r3, #3] + ldrb r0, [r2, #6] + bics r0, r1 + strb r0, [r2, #6] +_08293C7C: + mov r0, sp + movs r1, #0 + strh r1, [r0] + ldr r2, _08293CC8 + adds r1, r3, #0 + bl CpuSet +_08293C8A: + movs r0, #2 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08293CAC + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08293CCC + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0xc + ldr r2, _08293CD0 + mov r0, sp + bl CpuSet +_08293CAC: + ldr r0, _08293CD4 + mov r2, sl + strh r2, [r0] + movs r0, #0 +_08293CB4: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08293CC4: .4byte gUnknown_3007630 +_08293CC8: .4byte 0x01000006 +_08293CCC: .4byte gUnknown_3007610 +_08293CD0: .4byte 0x01000004 +_08293CD4: .4byte 0x04000208 + thumb_func_end rfu_clearSlot + + thumb_func_start rfu_setRecvBuffer +rfu_setRecvBuffer: @ 0x08293CD8 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r2, r3, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r4, r1, #0 + cmp r1, #3 + bls _08293CF4 + movs r0, #0x80 + lsls r0, r0, #3 + b _08293D2C +_08293CF4: + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _08293D10 + ldr r0, _08293D0C + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r5, [r0, #0x68] + str r6, [r0, #0x6c] + b _08293D2A + .align 2, 0 +_08293D0C: .4byte gUnknown_3007620 +_08293D10: + movs r0, #0x10 + ands r2, r0 + cmp r2, #0 + bne _08293D1E + movs r0, #0xc0 + lsls r0, r0, #3 + b _08293D2C +_08293D1E: + ldr r0, _08293D34 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r5, [r0, #0x14] + str r6, [r0, #0x18] +_08293D2A: + movs r0, #0 +_08293D2C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08293D34: .4byte gUnknown_3007610 + thumb_func_end rfu_setRecvBuffer + + thumb_func_start rfu_NI_setSendData +rfu_NI_setSendData: @ 0x08293D38 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + 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, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end rfu_NI_setSendData + + thumb_func_start rfu_UNI_setSendData +rfu_UNI_setSendData: @ 0x08293D64 + push {lr} + sub sp, #4 + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _08293D80 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _08293D84 + adds r0, r2, #3 + b _08293D86 + .align 2, 0 +_08293D80: .4byte gUnknown_3007630 +_08293D84: + adds r0, r2, #2 +_08293D86: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #0x10 + bl rfu_STC_setSendData_org + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end rfu_UNI_setSendData + + thumb_func_start rfu_NI_CHILD_setSendGameName +rfu_NI_CHILD_setSendGameName: @ 0x08293DA0 + push {lr} + sub sp, #4 + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + lsls r1, r0 + lsrs r1, r1, #0x18 + ldr r0, _08293DD0 + ldr r3, [r0] + adds r3, #0x98 + movs r0, #0x1a + str r0, [sp] + movs r0, #0x40 + bl rfu_STC_setSendData_org + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_08293DD0: .4byte gUnknown_3007630 + thumb_func_end rfu_NI_CHILD_setSendGameName + + thumb_func_start rfu_STC_setSendData_org +rfu_STC_setSendData_org: @ 0x08293DD4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r3, [sp] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r0, _08293E00 + ldr r2, [r0] + ldrb r1, [r2] + mov sl, r0 + cmp r1, #0xff + bne _08293E08 + ldr r0, _08293E04 + b _08293FBE + .align 2, 0 +_08293E00: .4byte gUnknown_3007630 +_08293E04: .4byte 0x00000301 +_08293E08: + movs r0, #0xf + ands r0, r3 + cmp r0, #0 + bne _08293E16 + movs r0, #0x80 + lsls r0, r0, #3 + b _08293FBE +_08293E16: + ldrb r0, [r2, #2] + ldrb r1, [r2, #3] + orrs r0, r1 + ands r0, r3 + cmp r0, r3 + beq _08293E2C + ldr r0, _08293E28 + b _08293FBE + .align 2, 0 +_08293E28: .4byte 0x00000401 +_08293E2C: + movs r0, #0x10 + ands r0, r6 + cmp r0, #0 + beq _08293E38 + ldrb r0, [r2, #6] + b _08293E3A +_08293E38: + ldrb r0, [r2, #4] +_08293E3A: + ands r0, r3 + cmp r0, #0 + beq _08293E48 + ldr r0, _08293E44 + b _08293FBE + .align 2, 0 +_08293E44: .4byte 0x00000402 +_08293E48: + movs r2, #0 + movs r0, #1 + ands r0, r3 + ldr r4, _08293E78 + cmp r0, #0 + bne _08293E6A + movs r1, #1 +_08293E56: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bhi _08293E6A + adds r0, r3, #0 + asrs r0, r2 + ands r0, r1 + cmp r0, #0 + beq _08293E56 +_08293E6A: + mov r0, sl + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #1 + bne _08293E7C + adds r1, #0xf + b _08293E86 + .align 2, 0 +_08293E78: .4byte gUnknown_890EEA4 +_08293E7C: + cmp r0, #0 + bne _08293E88 + adds r0, r2, #0 + adds r0, #0x10 + adds r1, r1, r0 +_08293E86: + mov sb, r1 +_08293E88: + mov r1, sl + ldr r0, [r1] + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r4 + ldrb r4, [r0] + mov r0, sb + ldrb r0, [r0] + cmp r8, r0 + bhi _08293EA0 + cmp r8, r4 + bhi _08293EA6 +_08293EA0: + movs r0, #0xa0 + lsls r0, r0, #3 + b _08293FBE +_08293EA6: + ldr r1, _08293EF4 + ldrh r0, [r1] + str r0, [sp, #4] + movs r7, #0 + strh r7, [r1] + movs r0, #0x20 + ands r0, r6 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08293EC0 + cmp r6, #0x40 + bne _08293F7C +_08293EC0: + ldr r1, _08293EF8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + mov ip, r0 + movs r1, #0 + strh r1, [r0, #0x18] + mov r1, ip + adds r1, #0x2d + mov r2, ip + str r1, [r2, #4] + movs r0, #7 + str r0, [r2, #0x14] + mov r0, ip + adds r0, #0x2c + strb r3, [r0] + strb r3, [r2, #0x1a] + mov r2, r8 + subs r0, r2, r4 + mov r2, ip + strh r0, [r2, #0x2e] + cmp r5, #0 + beq _08293EFC + strb r7, [r1] + b _08293F00 + .align 2, 0 +_08293EF4: .4byte 0x04000208 +_08293EF8: .4byte gUnknown_3007620 +_08293EFC: + movs r0, #1 + strb r0, [r1] +_08293F00: + ldr r0, [sp, #0x28] + mov r1, ip + str r0, [r1, #0x30] + ldr r2, [sp] + str r2, [r1, #0x28] + movs r1, #0 + mov r0, ip + strb r1, [r0, #0x1f] + adds r0, #0x20 + strb r1, [r0] + mov r4, ip + adds r4, #0x1b + movs r6, #0 + mov r2, ip + adds r2, #0x21 + movs r5, #1 +_08293F20: + adds r0, r4, r1 + strb r6, [r0] + adds r0, r2, r1 + strb r5, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _08293F20 + movs r2, #0 + movs r5, #1 + ldr r4, _08293F74 + movs r1, #0 +_08293F3A: + adds r0, r3, #0 + asrs r0, r2 + ands r0, r5 + cmp r0, #0 + beq _08293F4C + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r0, [r0] + strh r1, [r0, #2] +_08293F4C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _08293F3A + mov r1, sl + ldr r2, [r1] + ldrb r1, [r2, #4] + adds r0, r3, #0 + orrs r0, r1 + strb r0, [r2, #4] + mov r2, sb + ldrb r0, [r2] + mov r1, r8 + subs r0, r0, r1 + strb r0, [r2] + ldr r0, _08293F78 + mov r2, ip + strh r0, [r2] + b _08293FB4 + .align 2, 0 +_08293F74: .4byte gUnknown_3007620 +_08293F78: .4byte 0x00008021 +_08293F7C: + movs r0, #0x10 + ands r0, r6 + cmp r0, #0 + beq _08293FB4 + ldr r1, _08293FD0 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, [r0] + strb r3, [r1, #3] + ldr r0, [sp] + str r0, [r1, #8] + mov r2, r8 + subs r0, r2, r4 + strh r0, [r1, #4] + mov r2, sb + ldrb r0, [r2] + mov r2, r8 + subs r0, r0, r2 + mov r2, sb + strb r0, [r2] + ldr r0, _08293FD4 + strh r0, [r1] + mov r0, sl + ldr r2, [r0] + ldrb r1, [r2, #6] + adds r0, r3, #0 + orrs r0, r1 + strb r0, [r2, #6] +_08293FB4: + ldr r0, _08293FD8 + mov r1, sp + ldrh r1, [r1, #4] + strh r1, [r0] + movs r0, #0 +_08293FBE: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08293FD0: .4byte gUnknown_3007610 +_08293FD4: .4byte 0x00008024 +_08293FD8: .4byte 0x04000208 + thumb_func_end rfu_STC_setSendData_org + + thumb_func_start rfu_changeSendTarget +rfu_changeSendTarget: @ 0x08293FDC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + cmp r7, #3 + bls _08294000 + movs r0, #0x80 + lsls r0, r0, #3 + b _08294134 +_08294000: + cmp r0, #0x20 + bne _082940A0 + ldr r0, _08294090 + mov ip, r0 + lsls r0, r7, #2 + add r0, ip + ldr r5, [r0] + ldrh r2, [r5] + ldr r1, _08294094 + adds r0, r1, #0 + ands r0, r2 + cmp r0, r1 + bne _082940B6 + ldrb r0, [r5, #0x1a] + adds r3, r6, #0 + eors r3, r0 + adds r2, r3, #0 + ands r2, r6 + cmp r2, #0 + bne _082940EE + cmp r3, #0 + bne _0829402E + b _08294132 +_0829402E: + ldr r1, _08294098 + ldrh r0, [r1] + mov r8, r0 + strh r2, [r1] + movs r2, #0 + mvns r1, r3 + str r1, [sp] + lsls r4, r6, #0x18 + mov sl, r4 + movs r0, #1 + mov sb, r0 + movs r1, #0 +_08294046: + adds r0, r3, #0 + asrs r0, r2 + mov r4, sb + ands r0, r4 + cmp r0, #0 + beq _0829405A + lsls r0, r2, #2 + add r0, ip + ldr r0, [r0] + strh r1, [r0, #2] +_0829405A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _08294046 + ldr r0, _0829409C + ldr r1, [r0] + ldrb r0, [r1, #4] + ldr r2, [sp] + ands r2, r0 + strb r2, [r1, #4] + strb r6, [r5, #0x1a] + mov r0, sl + cmp r0, #0 + bne _08294086 + adds r0, r7, #0 + movs r1, #0 + adds r2, r5, #0 + bl rfu_STC_releaseFrame + movs r0, #0x27 + strh r0, [r5] +_08294086: + ldr r0, _08294098 + mov r1, r8 + strh r1, [r0] + b _08294132 + .align 2, 0 +_08294090: .4byte gUnknown_3007620 +_08294094: .4byte 0x00008020 +_08294098: .4byte 0x04000208 +_0829409C: .4byte gUnknown_3007630 +_082940A0: + cmp r3, #0x10 + bne _0829412C + ldr r3, _082940BC + lsls r1, r7, #2 + adds r0, r1, r3 + ldr r0, [r0] + ldrh r2, [r0] + ldr r0, _082940C0 + adds r5, r3, #0 + cmp r2, r0 + beq _082940C8 +_082940B6: + ldr r0, _082940C4 + b _08294134 + .align 2, 0 +_082940BC: .4byte gUnknown_3007610 +_082940C0: .4byte 0x00008024 +_082940C4: .4byte 0x00000403 +_082940C8: + movs r3, #0 + movs r2, #0 + adds r4, r5, #0 +_082940CE: + cmp r2, r7 + beq _082940DC + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrb r0, [r0, #3] + orrs r3, r0 +_082940DC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _082940CE + adds r2, r6, #0 + ands r2, r3 + cmp r2, #0 + beq _082940F8 +_082940EE: + ldr r0, _082940F4 + b _08294134 + .align 2, 0 +_082940F4: .4byte 0x00000404 +_082940F8: + ldr r3, _08294124 + ldrh r0, [r3] + mov r8, r0 + strh r2, [r3] + ldr r4, _08294128 + ldr r2, [r4] + adds r5, r1, r5 + ldr r0, [r5] + ldrb r1, [r0, #3] + ldrb r0, [r2, #6] + bics r0, r1 + strb r0, [r2, #6] + ldr r2, [r4] + ldrb r1, [r2, #6] + adds r0, r6, #0 + orrs r0, r1 + strb r0, [r2, #6] + ldr r0, [r5] + strb r6, [r0, #3] + mov r2, r8 + strh r2, [r3] + b _08294132 + .align 2, 0 +_08294124: .4byte 0x04000208 +_08294128: .4byte gUnknown_3007630 +_0829412C: + movs r0, #0xc0 + lsls r0, r0, #3 + b _08294134 +_08294132: + movs r0, #0 +_08294134: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end rfu_changeSendTarget + + thumb_func_start rfu_NI_stopReceivingData +rfu_NI_stopReceivingData: @ 0x08294144 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _08294154 + movs r0, #0x80 + lsls r0, r0, #3 + b _082941AE +_08294154: + ldr r1, _08294180 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] + adds r5, r2, #0 + adds r5, #0x34 + ldr r1, _08294184 + ldrh r0, [r1] + adds r4, r0, #0 + movs r0, #0 + strh r0, [r1] + ldrh r1, [r2, #0x34] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _082941A8 + ldr r0, _08294188 + cmp r1, r0 + bne _0829418C + movs r0, #0x48 + b _0829418E + .align 2, 0 +_08294180: .4byte gUnknown_3007620 +_08294184: .4byte 0x04000208 +_08294188: .4byte 0x00008043 +_0829418C: + movs r0, #0x47 +_0829418E: + strh r0, [r2, #0x34] + ldr r0, _082941B4 + ldr r2, [r0] + movs r1, #1 + lsls r1, r3 + ldrb r0, [r2, #5] + bics r0, r1 + strb r0, [r2, #5] + adds r0, r3, #0 + movs r1, #1 + adds r2, r5, #0 + bl rfu_STC_releaseFrame +_082941A8: + ldr r0, _082941B8 + strh r4, [r0] + movs r0, #0 +_082941AE: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_082941B4: .4byte gUnknown_3007630 +_082941B8: .4byte 0x04000208 + thumb_func_end rfu_NI_stopReceivingData + + thumb_func_start rfu_UNI_changeAndReadySendData +rfu_UNI_changeAndReadySendData: @ 0x082941BC + push {r4, r5, r6, r7, lr} + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + cmp r0, #3 + bls _082941D4 + movs r0, #0x80 + lsls r0, r0, #3 + b _08294248 +_082941D4: + ldr r1, _082941E8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldrh r1, [r4] + ldr r0, _082941EC + cmp r1, r0 + beq _082941F4 + ldr r0, _082941F0 + b _08294248 + .align 2, 0 +_082941E8: .4byte gUnknown_3007610 +_082941EC: .4byte 0x00008024 +_082941F0: .4byte 0x00000403 +_082941F4: + ldr r0, _08294208 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #1 + bne _0829420C + adds r6, r1, #0 + adds r6, #0xf + ldrb r0, [r4, #4] + ldrb r1, [r1, #0xf] + b _0829421A + .align 2, 0 +_08294208: .4byte gUnknown_3007630 +_0829420C: + adds r0, r3, #0 + adds r0, #0x10 + adds r6, r1, r0 + adds r1, #0x10 + adds r1, r1, r3 + ldrb r0, [r4, #4] + ldrb r1, [r1] +_0829421A: + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r5 + blo _08294244 + ldr r2, _08294240 + ldrh r1, [r2] + movs r0, #0 + strh r0, [r2] + str r7, [r4, #8] + subs r0, r3, r5 + strb r0, [r6] + strh r5, [r4, #4] + movs r0, #1 + strb r0, [r4, #2] + strh r1, [r2] + movs r0, #0 + b _08294248 + .align 2, 0 +_08294240: .4byte 0x04000208 +_08294244: + movs r0, #0xa0 + lsls r0, r0, #3 +_08294248: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end rfu_UNI_changeAndReadySendData + + thumb_func_start rfu_UNI_readySendData +rfu_UNI_readySendData: @ 0x08294250 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _0829426E + ldr r1, _08294274 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrh r1, [r2] + ldr r0, _08294278 + cmp r1, r0 + bne _0829426E + movs r0, #1 + strb r0, [r2, #2] +_0829426E: + pop {r0} + bx r0 + .align 2, 0 +_08294274: .4byte gUnknown_3007610 +_08294278: .4byte 0x00008024 + thumb_func_end rfu_UNI_readySendData + + thumb_func_start rfu_UNI_clearRecvNewDataFlag +rfu_UNI_clearRecvNewDataFlag: @ 0x0829427C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _08294292 + ldr r1, _08294298 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #0x12] +_08294292: + pop {r0} + bx r0 + .align 2, 0 +_08294298: .4byte gUnknown_3007610 + thumb_func_end rfu_UNI_clearRecvNewDataFlag + + thumb_func_start rfu_REQ_sendData +rfu_REQ_sendData: @ 0x0829429C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _082942E8 + ldr r2, [r0] + ldrb r1, [r2] + adds r4, r0, #0 + cmp r1, #0xff + bne _082942B0 + b _082943D6 +_082942B0: + cmp r1, #1 + bne _08294340 + ldrb r0, [r2, #4] + ldrb r1, [r2, #5] + adds r3, r0, #0 + orrs r3, r1 + ldrb r0, [r2, #6] + orrs r3, r0 + cmp r3, #0 + bne _08294340 + ldr r0, _082942EC + ldr r2, [r0] + ldrb r1, [r2, #3] + adds r4, r0, #0 + cmp r1, #0 + beq _082942D8 + movs r0, #0x10 + strb r0, [r2, #8] + ldr r0, [r4] + strb r3, [r0, #7] +_082942D8: + ldr r1, [r4] + ldrb r0, [r1, #8] + cmp r0, #0 + beq _082942F0 + subs r0, #1 + strb r0, [r1, #8] + b _082942F6 + .align 2, 0 +_082942E8: .4byte gUnknown_3007630 +_082942EC: .4byte gUnknown_3007634 +_082942F0: + ldrb r0, [r1, #7] + adds r0, #1 + strb r0, [r1, #7] +_082942F6: + ldr r1, [r4] + ldrb r0, [r1, #8] + cmp r0, #0 + bne _08294308 + ldrb r1, [r1, #7] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0829439A +_08294308: + ldr r4, _0829432C + ldr r1, [r4] + movs r0, #1 + str r0, [r1, #0x68] + movs r0, #0xff + str r0, [r1, #0x78] + ldr r0, _08294330 + bl STWI_set_Callback_M + cmp r5, #0 + bne _08294334 + ldr r0, [r4] + adds r0, #0x68 + movs r1, #1 + bl STWI_send_DataTxREQ + b _082943D6 + .align 2, 0 +_0829432C: .4byte gUnknown_3007638 +_08294330: .4byte sub_08294488 +_08294334: + ldr r0, [r4] + adds r0, #0x68 + movs r1, #1 + bl STWI_send_DataTxAndChangeREQ + b _082943D6 +_08294340: + ldr r0, [r4] + ldrb r0, [r0, #0xe] + cmp r0, #0 + bne _0829434C + bl rfu_constructSendLLFrame +_0829434C: + ldr r0, [r4] + ldrb r0, [r0, #0xe] + cmp r0, #0 + beq _0829439A + ldr r0, _08294378 + bl STWI_set_Callback_M + cmp r5, #0 + beq _08294384 + ldr r0, _0829437C + ldr r0, [r0] + adds r0, #0x68 + ldr r1, _08294380 + ldr r1, [r1] + ldr r1, [r1, #0x24] + adds r1, #4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl STWI_send_DataTxAndChangeREQ + b _082943D6 + .align 2, 0 +_08294378: .4byte rfu_CB_sendData +_0829437C: .4byte gUnknown_3007638 +_08294380: .4byte gUnknown_3007634 +_08294384: + ldr r0, _082943BC + ldr r0, [r0] + adds r0, #0x68 + ldr r1, _082943C0 + ldr r1, [r1] + ldr r1, [r1, #0x24] + adds r1, #4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl STWI_send_DataTxREQ +_0829439A: + cmp r5, #0 + beq _082943D6 + ldr r0, _082943C4 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _082943CC + ldr r0, _082943C8 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + cmp r1, #0 + beq _082943D6 + movs r0, #0x27 + bl _call_via_r1 + b _082943D6 + .align 2, 0 +_082943BC: .4byte gUnknown_3007638 +_082943C0: .4byte gUnknown_3007634 +_082943C4: .4byte gUnknown_3007630 +_082943C8: .4byte gUnknown_3007608 +_082943CC: + ldr r0, _082943DC + bl STWI_set_Callback_M + bl STWI_send_MS_ChangeREQ +_082943D6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_082943DC: .4byte rfu_CB_sendData2 + thumb_func_end rfu_REQ_sendData + + thumb_func_start rfu_CB_sendData +rfu_CB_sendData: @ 0x082943E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + cmp r7, #0 + bne _0829444A + movs r6, #0 + ldr r0, _08294468 + mov r8, r0 +_082943F4: + ldr r0, _0829446C + lsls r2, r6, #2 + adds r0, r2, r0 + ldr r1, [r0] + ldrb r0, [r1, #2] + cmp r0, #0 + beq _08294406 + movs r0, #0 + strb r0, [r1, #2] +_08294406: + ldr r0, _08294470 + adds r0, r2, r0 + ldr r4, [r0] + ldrh r0, [r4] + cmp r0, r8 + bne _08294440 + adds r0, r6, #0 + movs r1, #0 + adds r2, r4, #0 + bl rfu_STC_releaseFrame + ldr r5, _08294474 + ldr r2, [r5] + ldrb r1, [r4, #0x1a] + ldrb r0, [r2, #4] + bics r0, r1 + strb r0, [r2, #4] + adds r0, r4, #0 + adds r0, #0x2d + ldrb r3, [r0] + cmp r3, #1 + bne _0829443C + ldr r1, [r5] + lsls r3, r6 + ldrb r0, [r1, #7] + orrs r3, r0 + strb r3, [r1, #7] +_0829443C: + movs r0, #0x26 + strh r0, [r4] +_08294440: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _082943F4 +_0829444A: + ldr r0, _08294474 + ldr r1, [r0] + ldrb r0, [r1, #0xe] + movs r0, #0 + strb r0, [r1, #0xe] + movs r0, #0x24 + adds r1, r7, #0 + bl rfu_STC_REQ_callback + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08294468: .4byte 0x00008020 +_0829446C: .4byte gUnknown_3007610 +_08294470: .4byte gUnknown_3007620 +_08294474: .4byte gUnknown_3007630 + thumb_func_end rfu_CB_sendData + + thumb_func_start rfu_CB_sendData2 +rfu_CB_sendData2: @ 0x08294478 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x24 + bl rfu_STC_REQ_callback + pop {r0} + bx r0 + thumb_func_end rfu_CB_sendData2 + + thumb_func_start sub_08294488 +sub_08294488: @ 0x08294488 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0 + beq _0829449E + movs r0, #0x24 + bl rfu_STC_REQ_callback + b _082944AA +_0829449E: + cmp r0, #0xff + bne _082944AA + movs r0, #0xff + movs r1, #0 + bl rfu_STC_REQ_callback +_082944AA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08294488 + + thumb_func_start rfu_constructSendLLFrame +rfu_constructSendLLFrame: @ 0x082944B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _0829455C + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, #0xff + bne _082944C8 + b _082945CC +_082944C8: + ldrb r0, [r2, #4] + ldrb r1, [r2, #5] + orrs r0, r1 + ldrb r1, [r2, #6] + orrs r0, r1 + cmp r0, #0 + beq _082945CC + ldrb r0, [r2, #0xe] + movs r0, #0 + strb r0, [r2, #0xe] + mov r8, r0 + ldr r0, _08294560 + ldr r0, [r0] + adds r0, #0x6c + str r0, [sp] + movs r6, #0 + movs r0, #0x80 + lsls r0, r0, #8 + mov sb, r0 + ldr r1, _08294564 + mov sl, r1 +_082944F2: + movs r5, #0 + ldr r0, _08294568 + lsls r7, r6, #2 + adds r4, r7, r0 + ldr r2, [r4] + ldrh r1, [r2] + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _08294512 + adds r0, r6, #0 + mov r1, sp + bl rfu_STC_NI_constructLLSF + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08294512: + ldr r2, [r4] + ldrh r1, [r2, #0x34] + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _0829452E + adds r2, #0x34 + adds r0, r6, #0 + mov r1, sp + bl rfu_STC_NI_constructLLSF + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r5, r0 +_0829452E: + ldr r0, _0829456C + adds r0, r7, r0 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, sl + bne _08294548 + adds r0, r6, #0 + mov r1, sp + bl rfu_STC_UNI_constructLLSF + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r5, r0 +_08294548: + cmp r5, #0 + beq _0829457C + ldr r0, _0829455C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _08294570 + add r8, r5 + b _0829457C + .align 2, 0 +_0829455C: .4byte gUnknown_3007630 +_08294560: .4byte gUnknown_3007638 +_08294564: .4byte 0x00008024 +_08294568: .4byte gUnknown_3007620 +_0829456C: .4byte gUnknown_3007610 +_08294570: + adds r0, r7, r6 + adds r0, #8 + lsls r5, r0 + mov r2, r8 + orrs r2, r5 + mov r8, r2 +_0829457C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _082944F2 + ldr r6, _082945DC + mov r0, r8 + cmp r0, #0 + beq _082945C6 + ldr r2, [sp] + movs r0, #3 + ands r0, r2 + ldr r5, _082945E0 + ldr r1, _082945E4 + cmp r0, #0 + beq _082945AE + movs r4, #0 + movs r3, #3 +_082945A0: + strb r4, [r2] + adds r0, r2, #1 + str r0, [sp] + adds r2, r0, #0 + ands r0, r3 + cmp r0, #0 + bne _082945A0 +_082945AE: + ldr r0, [r1] + mov r2, r8 + str r2, [r0, #0x68] + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, #0 + bne _082945C6 + ldr r0, [sp] + subs r0, #0x6c + ldr r1, [r1] + subs r0, r0, r1 + mov r8, r0 +_082945C6: + ldr r0, [r6] + mov r1, r8 + str r1, [r0, #0x24] +_082945CC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082945DC: .4byte gUnknown_3007634 +_082945E0: .4byte gUnknown_3007630 +_082945E4: .4byte gUnknown_3007638 + thumb_func_end rfu_constructSendLLFrame + + thumb_func_start rfu_STC_NI_constructLLSF +rfu_STC_NI_constructLLSF: @ 0x082945E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov ip, r1 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r2, _08294664 + ldr r0, [r2] + ldrb r0, [r0] + lsls r0, r0, #4 + ldr r1, _08294668 + adds r0, r0, r1 + mov r8, r0 + ldrh r1, [r4] + ldr r0, _0829466C + cmp r1, r0 + bne _08294652 + adds r3, r4, #0 + adds r3, #0x20 + ldrb r1, [r3] + lsls r1, r1, #2 + adds r5, r4, #4 + adds r1, r5, r1 + ldr r2, [r4, #0x28] + ldr r0, [r4, #0x30] + adds r2, r2, r0 + ldr r0, [r1] + adds r6, r3, #0 + cmp r0, r2 + blo _08294652 + movs r7, #0 +_08294630: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _08294640 + strb r7, [r6] +_08294640: + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r5, r1 + ldr r2, [r4, #0x28] + ldr r0, [r4, #0x30] + adds r2, r2, r0 + ldr r0, [r1] + cmp r0, r2 + bhs _08294630 +_08294652: + ldrh r1, [r4] + movs r0, #0x40 + ands r0, r1 + mov sb, r1 + cmp r0, #0 + beq _08294670 + movs r5, #0 + b _082946B4 + .align 2, 0 +_08294664: .4byte gUnknown_3007630 +_08294668: .4byte gUnknown_890EEA4 +_0829466C: .4byte 0x00008022 +_08294670: + ldr r0, _0829469C + cmp sb, r0 + bne _082946A4 + adds r3, r4, #0 + adds r3, #0x20 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r1, r4, #4 + adds r1, 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 _082946A0 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _082946B8 + .align 2, 0 +_0829469C: .4byte 0x00008022 +_082946A0: + adds r5, r7, #0 + b _082946B8 +_082946A4: + ldrh r2, [r4, #0x2e] + ldr r0, [r4, #0x14] + cmp r0, r2 + blo _082946B0 + adds r5, r2, #0 + b _082946B4 +_082946B0: + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_082946B4: + adds r6, r4, #0 + adds r6, #0x20 +_082946B8: + movs r3, #0xf + mov r0, sb + ands r3, r0 + mov r1, r8 + ldrb r1, [r1, #3] + lsls r3, r1 + ldrb r0, [r4, #0x1f] + mov r2, r8 + ldrb r2, [r2, #4] + lsls r0, r2 + orrs r3, r0 + ldrb r1, [r6] + adds r0, r1, #0 + mov r7, r8 + ldrb r7, [r7, #5] + lsls r0, r7 + orrs r3, r0 + adds r0, r4, #0 + adds r0, #0x21 + adds r0, r0, r1 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1, #6] + lsls r0, r1 + orrs r3, r0 + orrs r3, r5 + str r3, [sp] + ldr r2, _08294774 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #1 + bne _08294700 + ldrb r0, [r4, #0x1a] + lsls r0, r0, #0x12 + orrs r3, r0 + str r3, [sp] +_08294700: + mov r2, sp + movs r3, #0 + mov r7, r8 + ldrb r7, [r7] + cmp r3, r7 + bhs _0829472A +_0829470C: + mov r0, ip + ldr r1, [r0] + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + mov r7, ip + str r1, [r7] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r0, r8 + ldrb r0, [r0] + cmp r3, r0 + blo _0829470C +_0829472A: + cmp r5, #0 + beq _0829474A + ldrb r1, [r6] + lsls r1, r1, #2 + adds r0, r4, #4 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, _08294778 + ldr r1, [r0] + add r0, sp, #4 + ldr r3, [r1, #4] + mov r1, ip + adds r2, r5, #0 + bl _call_via_r3 +_0829474A: + ldrh r1, [r4] + ldr r0, _0829477C + cmp r1, r0 + bne _08294764 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _08294764 + movs r0, #0 + strb r0, [r6] +_08294764: + ldr r0, _08294774 + ldr r2, [r0] + ldrb r1, [r2] + cmp r1, #1 + bne _08294780 + ldrb r0, [r2, #0xe] + strb r1, [r2, #0xe] + b _0829478E + .align 2, 0 +_08294774: .4byte gUnknown_3007630 +_08294778: .4byte gUnknown_3007638 +_0829477C: .4byte 0x00008022 +_08294780: + movs r0, #1 + mov r1, sl + lsls r0, r1 + ldrb r1, [r2, #0xe] + orrs r0, r1 + ldrb r1, [r2, #0xe] + strb r0, [r2, #0xe] +_0829478E: + mov r2, r8 + ldrb r0, [r2] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end rfu_STC_NI_constructLLSF + + thumb_func_start rfu_STC_UNI_constructLLSF +rfu_STC_UNI_constructLLSF: @ 0x082947A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _082947D0 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldrb r0, [r4, #2] + cmp r0, #0 + beq _082947CC + ldrb r0, [r4, #3] + cmp r0, #0 + bne _082947D4 +_082947CC: + movs r0, #0 + b _08294870 + .align 2, 0 +_082947D0: .4byte gUnknown_3007610 +_082947D4: + ldr r0, _0829484C + ldr r2, [r0] + ldrb r0, [r2] + lsls r0, r0, #4 + ldr r1, _08294850 + adds r5, r0, r1 + ldrh r0, [r4] + movs r1, #0xf + ands r1, r0 + ldrb r0, [r5, #3] + lsls r1, r0 + ldrh r0, [r4, #4] + orrs r1, r0 + str r1, [sp] + ldrb r0, [r2] + cmp r0, #1 + bne _082947FE + ldrb r0, [r4, #3] + lsls r0, r0, #0x12 + orrs r1, r0 + str r1, [sp] +_082947FE: + mov r2, sp + movs r3, #0 + ldr r1, _08294854 + mov ip, r1 + add r7, sp, #4 + ldrb r0, [r5] + cmp r3, r0 + bhs _08294826 +_0829480E: + ldr r1, [r6] + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + str r1, [r6] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r1, [r5] + cmp r3, r1 + blo _0829480E +_08294826: + ldr r0, [r4, #8] + str r0, [sp, #4] + mov r2, ip + ldr r0, [r2] + ldrh r2, [r4, #4] + ldr r3, [r0, #4] + adds r0, r7, #0 + adds r1, r6, #0 + bl _call_via_r3 + ldr r0, _0829484C + ldr r2, [r0] + ldrb r0, [r2] + cmp r0, #1 + bne _08294858 + ldrb r0, [r2, #0xe] + movs r0, #0x10 + b _08294864 + .align 2, 0 +_0829484C: .4byte gUnknown_3007630 +_08294850: .4byte gUnknown_890EEA4 +_08294854: .4byte gUnknown_3007638 +_08294858: + movs r0, #0x10 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r2, #0xe] + orrs r0, r1 + ldrb r1, [r2, #0xe] +_08294864: + strb r0, [r2, #0xe] + ldrh r0, [r4, #4] + ldrb r5, [r5] + adds r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_08294870: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end rfu_STC_UNI_constructLLSF + + thumb_func_start rfu_REQ_recvData +rfu_REQ_recvData: @ 0x0829487C + push {r4, lr} + ldr r0, _082948B0 + ldr r4, [r0] + ldrb r0, [r4] + cmp r0, #0xff + beq _082948A8 + ldr r2, _082948B4 + ldr r3, [r2] + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + orrs r0, r1 + ldrb r1, [r4, #6] + orrs r0, r1 + movs r1, #0 + strb r0, [r3, #3] + ldr r0, [r2] + strb r1, [r0, #4] + ldr r0, _082948B8 + bl STWI_set_Callback_M + bl STWI_send_DataRxREQ +_082948A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_082948B0: .4byte gUnknown_3007630 +_082948B4: .4byte gUnknown_3007634 +_082948B8: .4byte rfu_CB_recvData + thumb_func_end rfu_REQ_recvData + + thumb_func_start rfu_CB_recvData +rfu_CB_recvData: @ 0x082948BC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + cmp r7, #0 + bne _08294980 + ldr r0, _082948F8 + ldr r0, [r0] + adds r0, #0xdc + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08294980 + ldr r0, _082948FC + ldr r0, [r0] + strb r7, [r0, #1] + ldr r0, _08294900 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _08294904 + bl rfu_STC_PARENT_analyzeRecvPacket + b _08294908 + .align 2, 0 +_082948F8: .4byte gUnknown_3007638 +_082948FC: .4byte gUnknown_3007634 +_08294900: .4byte gUnknown_3007630 +_08294904: + bl rfu_STC_CHILD_analyzeRecvPacket +_08294908: + movs r6, #0 + ldr r0, _08294998 + mov r8, r0 + ldr r3, _0829499C +_08294910: + ldr r0, _082949A0 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r4, [r1] + ldrh r0, [r4, #0x34] + cmp r0, r8 + bne _08294962 + ldr r0, _082949A4 + ldr r0, [r0] + ldrb r0, [r0, #1] + asrs r0, r6 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08294962 + adds r5, r4, #0 + adds r5, #0x34 + adds r0, r4, #0 + adds r0, #0x61 + ldrb r2, [r0] + cmp r2, #1 + bne _08294946 + ldr r1, [r3] + lsls r2, r6 + ldrb r0, [r1, #7] + orrs r2, r0 + strb r2, [r1, #7] +_08294946: + adds r0, r6, #0 + movs r1, #1 + adds r2, r5, #0 + str r3, [sp] + bl rfu_STC_releaseFrame + ldr r3, [sp] + ldr r2, [r3] + ldrb r1, [r5, #0x1a] + ldrb r0, [r2, #5] + bics r0, r1 + strb r0, [r2, #5] + movs r0, #0x46 + strh r0, [r4, #0x34] +_08294962: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _08294910 + ldr r0, _082949A4 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #0 + beq _08294980 + adds r7, r0, #0 + movs r1, #0xe0 + lsls r1, r1, #3 + adds r0, r1, #0 + orrs r7, r0 +_08294980: + mov r0, sb + adds r1, r7, #0 + bl rfu_STC_REQ_callback + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08294998: .4byte 0x00008043 +_0829499C: .4byte gUnknown_3007630 +_082949A0: .4byte gUnknown_3007620 +_082949A4: .4byte gUnknown_3007634 + thumb_func_end rfu_CB_recvData + + thumb_func_start rfu_STC_PARENT_analyzeRecvPacket +rfu_STC_PARENT_analyzeRecvPacket: @ 0x082949A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _08294A38 + ldr r0, [r1] + adds r0, #0xdc + ldr r0, [r0] + ldr r0, [r0, #4] + lsrs r3, r0, #8 + movs r5, #0 + mov ip, r1 + movs r7, #0x1f + ldr r4, _08294A3C + movs r6, #1 +_082949C2: + mov r0, sp + adds r1, r0, r5 + adds r0, r3, #0 + ands r0, r7 + strb r0, [r1] + lsrs r3, r3, #5 + cmp r0, #0 + bne _082949DE + ldr r0, [r4] + adds r1, r6, #0 + lsls r1, r5 + ldrb r2, [r0, #1] + orrs r1, r2 + strb r1, [r0, #1] +_082949DE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _082949C2 + mov r1, ip + ldr r0, [r1] + adds r0, #0xdc + ldr r0, [r0] + adds r6, r0, #0 + adds r6, #8 + movs r5, #0 +_082949F6: + mov r0, sp + adds r1, r0, r5 + ldrb r0, [r1] + adds r7, r5, #1 + cmp r0, #0 + beq _08294A28 + adds r4, r1, #0 +_08294A04: + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl rfu_STC_analyzeLLSF + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r6, r0 + ldrb r1, [r4] + subs r1, r1, r0 + strb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08294A28 + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08294A04 +_08294A28: + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _082949F6 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08294A38: .4byte gUnknown_3007638 +_08294A3C: .4byte gUnknown_3007634 + thumb_func_end rfu_STC_PARENT_analyzeRecvPacket + + thumb_func_start rfu_STC_CHILD_analyzeRecvPacket +rfu_STC_CHILD_analyzeRecvPacket: @ 0x08294A40 + push {r4, r5, r6, lr} + ldr r0, _08294A90 + ldr r0, [r0] + adds r0, #0xdc + ldr r1, [r0] + ldrh r0, [r1, #4] + movs r4, #0x7f + ands r4, r0 + adds r5, r1, #0 + adds r5, #8 + cmp r4, #0 + bne _08294A60 + ldr r0, _08294A94 + ldr r1, [r0] + movs r0, #0xf + strb r0, [r1, #1] +_08294A60: + movs r0, #0x80 + lsls r0, r0, #8 + adds r6, r0, #0 +_08294A66: + cmp r4, #0 + beq _08294A88 + movs r0, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl rfu_STC_analyzeLLSF + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r5, r0 + subs r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + ands r0, r6 + cmp r0, #0 + beq _08294A66 +_08294A88: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08294A90: .4byte gUnknown_3007638 +_08294A94: .4byte gUnknown_3007634 + thumb_func_end rfu_STC_CHILD_analyzeRecvPacket + + thumb_func_start rfu_STC_analyzeLLSF +rfu_STC_analyzeLLSF: @ 0x08294A98 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r2, r2, #0x10 + lsrs r3, r2, #0x10 + ldr r2, _08294ACC + ldr r0, [r2] + ldrb r0, [r0] + mvns r0, r0 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #4 + ldr r1, _08294AD0 + adds r6, r0, r1 + ldrb r0, [r6] + cmp r3, r0 + bhs _08294AD4 + adds r0, r3, #0 + b _08294CC6 + .align 2, 0 +_08294ACC: .4byte gUnknown_3007630 +_08294AD0: .4byte gUnknown_890EEA4 +_08294AD4: + movs r5, #0 + movs r4, #0 + ldrb r3, [r6, #1] + ldrb r1, [r6, #7] + mov r8, r1 + ldr r2, [sp] + mov sb, r2 + cmp r4, r0 + bhs _08294AFC + adds r2, r0, #0 +_08294AE8: + ldrb r0, [r7] + lsls r1, r4, #3 + lsls r0, r1 + orrs r5, r0 + adds r7, #1 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r2 + blo _08294AE8 +_08294AFC: + adds r0, r5, #0 + lsrs r0, r3 + mov r3, r8 + ands r0, r3 + ldr r1, _08294BD4 + mov sl, r1 + mov r3, sl + mov r2, sb + ands r3, r2 + orrs r3, r0 + str r3, [sp] + adds r0, r5, #0 + ldrb r1, [r6, #2] + lsrs r0, r1 + ldrb r1, [r6, #8] + ands r0, r1 + lsls r0, r0, #8 + ldr r4, _08294BD8 + adds r2, r4, #0 + ands r2, r3 + orrs r2, r0 + str r2, [sp] + adds r0, r5, #0 + ldrb r3, [r6, #3] + lsrs r0, r3 + ldrb r1, [r6, #9] + ands r0, r1 + lsls r0, r0, #0x10 + ldr r3, _08294BDC + ands r3, r2 + orrs r3, r0 + str r3, [sp] + adds r0, r5, #0 + ldrb r1, [r6, #4] + lsrs r0, r1 + ldrb r1, [r6, #0xa] + ands r0, r1 + lsls r0, r0, #0x18 + ldr r2, _08294BE0 + 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, #5] + lsrs r1, r2 + ldrb r0, [r6, #0xb] + ands r1, r0 + mov sb, sp + ldr r2, [sp, #4] + mov r3, sl + ands r2, r3 + orrs r2, r1 + str r2, [sp, #4] + adds r0, r5, #0 + ldrb r1, [r6, #6] + lsrs r0, r1 + ldrb r1, [r6, #0xc] + ands r0, r1 + lsls r0, r0, #8 + ands r4, r2 + orrs r4, r0 + str r4, [sp, #4] + ldrh r0, [r6, #0xe] + ands r5, r0 + lsls r1, r5, #0x10 + ldr r0, _08294BE4 + ands r0, r4 + orrs r0, r1 + str r0, [sp, #4] + lsrs r0, r0, #0x10 + ldrb r6, [r6] + adds r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + beq _08294BA2 + b _08294CC4 +_08294BA2: + ldr r2, _08294BE8 + ldr r3, [r2] + ldrb r2, [r3] + cmp r2, #1 + bne _08294C60 + ldrb r0, [r3, #2] + mov r5, ip + asrs r0, r5 + ands r0, r2 + cmp r0, #0 + bne _08294BBA + b _08294CC4 +_08294BBA: + mov r1, r8 + lsrs r0, r1, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _08294BEC + mov r0, ip + mov r1, sp + adds r2, r7, #0 + bl rfu_STC_UNI_receive + b _08294CC4 + .align 2, 0 +_08294BD4: .4byte 0xFFFFFF00 +_08294BD8: .4byte 0xFFFF00FF +_08294BDC: .4byte 0xFF00FFFF +_08294BE0: .4byte 0x00FFFFFF +_08294BE4: .4byte 0x0000FFFF +_08294BE8: .4byte gUnknown_3007630 +_08294BEC: + mov r5, sb + ldrb r0, [r5, #3] + cmp r0, #0 + bne _08294C00 + mov r0, ip + mov r1, sp + adds r2, r7, #0 + bl rfu_STC_NI_receive_Receiver + b _08294CC4 +_08294C00: + movs r4, #0 + ldr r1, _08294C18 + ldr r0, [r1] + ldrb r0, [r0, #0x1a] + mov r5, ip + asrs r0, r5 + ands r0, r2 + cmp r0, #0 + beq _08294C1C + ldrb r0, [r3, #4] + b _08294C42 + .align 2, 0 +_08294C18: .4byte gUnknown_3007620 +_08294C1C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bhi _08294CC4 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + mov r2, ip + asrs r0, r2 + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _08294C1C + ldr r3, _08294C5C + ldr r0, [r3] + ldrb r0, [r0, #4] + mov r5, ip +_08294C42: + asrs r0, r5 + ands r0, r2 + cmp r0, #0 + beq _08294C1C + cmp r4, #3 + bhi _08294CC4 + adds r0, r4, #0 + mov r1, ip + mov r2, sp + adds r3, r7, #0 + bl rfu_STC_NI_receive_Sender + b _08294CC4 + .align 2, 0 +_08294C5C: .4byte gUnknown_3007630 +_08294C60: + ldrb r1, [r3, #2] + mov r2, sb + ldrb r0, [r2, #1] + adds r5, r1, #0 + ands r5, r0 + cmp r5, #0 + beq _08294CC4 + movs r4, #0 + movs r6, #1 +_08294C72: + adds r0, r5, #0 + asrs r0, r4 + ands r0, r6 + cmp r0, #0 + beq _08294CBA + mov r1, sp + ldrb r0, [r1, #2] + cmp r0, #4 + bne _08294C8E + adds r0, r4, #0 + adds r2, r7, #0 + bl rfu_STC_UNI_receive + b _08294CBA +_08294C8E: + ldrb r0, [r1, #3] + cmp r0, #0 + bne _08294CA0 + adds r0, r4, #0 + mov r1, sp + adds r2, r7, #0 + bl rfu_STC_NI_receive_Receiver + b _08294CBA +_08294CA0: + ldr r0, _08294CD8 + ldr r0, [r0] + ldrb r0, [r0, #4] + asrs r0, r4 + ands r0, r6 + cmp r0, #0 + beq _08294CBA + adds r0, r4, #0 + adds r1, r4, #0 + mov r2, sp + adds r3, r7, #0 + bl rfu_STC_NI_receive_Sender +_08294CBA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08294C72 +_08294CC4: + mov r0, sl +_08294CC6: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08294CD8: .4byte gUnknown_3007630 + thumb_func_end rfu_STC_analyzeLLSF + + thumb_func_start rfu_STC_UNI_receive +rfu_STC_UNI_receive: @ 0x08294CDC + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r1, #0 + str r2, [sp] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08294D10 + lsls r1, r7, #2 + adds r1, r1, r2 + ldr r3, [r1] + adds r5, r3, #0 + adds r5, #0xc + movs r4, #0 + movs r0, #0 + strh r0, [r5, #2] + ldr r0, [r1] + ldr r0, [r0, #0x18] + adds r1, r2, #0 + ldrh r2, [r6, #6] + cmp r0, r2 + bhs _08294D18 + movs r0, #0x49 + strh r0, [r3, #0xc] + ldr r0, _08294D14 + strh r0, [r5, #2] + b _08294D66 + .align 2, 0 +_08294D10: .4byte gUnknown_3007610 +_08294D14: .4byte 0x00000701 +_08294D18: + ldrb r0, [r5, #7] + cmp r0, #0 + beq _08294D30 + ldrb r0, [r5, #6] + cmp r0, #0 + beq _08294D3C + ldr r0, _08294D2C + strh r0, [r5, #2] + b _08294D66 + .align 2, 0 +_08294D2C: .4byte 0x00000709 +_08294D30: + ldrb r0, [r5, #6] + cmp r0, #0 + beq _08294D3C + movs r0, #0xe1 + lsls r0, r0, #3 + strh r0, [r5, #2] +_08294D3C: + movs r4, #0 + ldr r0, _08294D84 + strh r0, [r5] + ldrh r0, [r6, #6] + strh r0, [r5, #4] + ldrh r2, [r6, #6] + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0, #0x14] + str r0, [sp, #4] + ldr r0, _08294D88 + ldr r0, [r0] + add r1, sp, #4 + ldr r3, [r0, #4] + mov r0, sp + bl _call_via_r3 + movs r0, #1 + strb r0, [r5, #6] + strh r4, [r5] +_08294D66: + ldrh r0, [r5, #2] + cmp r0, #0 + beq _08294D7A + ldr r0, _08294D8C + ldr r2, [r0] + movs r0, #0x10 + lsls r0, r7 + ldrb r1, [r2, #4] + orrs r0, r1 + strb r0, [r2, #4] +_08294D7A: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08294D84: .4byte 0x00008042 +_08294D88: .4byte gUnknown_3007638 +_08294D8C: .4byte gUnknown_3007634 + thumb_func_end rfu_STC_UNI_receive + + thumb_func_start rfu_STC_NI_receive_Sender +rfu_STC_NI_receive_Sender: @ 0x08294D90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r2, #0 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + ldr r1, _08294E5C + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + mov ip, r0 + ldrh r0, [r0] + mov sb, r0 + mov r0, ip + adds r0, #0x21 + ldrb r2, [r6, #4] + adds r0, r0, r2 + ldrb r0, [r0] + str r0, [sp] + ldrb r2, [r6, #2] + cmp r2, #2 + bne _08294DCC + ldr r0, _08294E60 + cmp sb, r0 + beq _08294DE6 +_08294DCC: + cmp r2, #1 + bne _08294DD6 + ldr r0, _08294E64 + cmp sb, r0 + beq _08294DE6 +_08294DD6: + movs r3, #0x1b + add r3, ip + mov r8, r3 + cmp r2, #3 + bne _08294E0A + ldr r0, _08294E68 + cmp sb, r0 + bne _08294E0A +_08294DE6: + ldrb r1, [r6, #4] + mov r0, ip + adds r0, #0x21 + adds r0, r0, r1 + ldrb r0, [r0] + movs r7, #0x1b + add r7, ip + mov r8, r7 + ldrb r2, [r6, #5] + cmp r0, r2 + bne _08294E0A + adds r0, r7, r1 + movs r1, #1 + mov r3, sl + lsls r1, r3 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] +_08294E0A: + ldrb r2, [r6, #4] + mov r7, r8 + adds r0, r7, r2 + ldrb r0, [r0] + mov r3, ip + ldrb r1, [r3, #0x1a] + ands r0, r1 + cmp r0, r1 + bne _08294F06 + adds r3, #0x21 + adds r2, r3, r2 + ldrb r0, [r2] + adds r0, #1 + movs r1, #3 + ands r0, r1 + movs r1, #0 + strb r0, [r2] + ldrb r0, [r6, #4] + add r0, r8 + strb r1, [r0] + mov r7, ip + ldrh r1, [r7] + ldr r2, _08294E6C + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r3, #0 + cmp r0, #1 + bhi _08294EF8 + ldr r0, _08294E64 + cmp r1, r0 + bne _08294E70 + ldrb r1, [r6, #4] + lsls r1, r1, #2 + subs r3, #0x1d + adds r1, r3, r1 + ldrh r2, [r7, #0x2e] + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] + b _08294E86 + .align 2, 0 +_08294E5C: .4byte gUnknown_3007620 +_08294E60: .4byte 0x00008022 +_08294E64: .4byte 0x00008021 +_08294E68: .4byte 0x00008023 +_08294E6C: .4byte 0x00007FDF +_08294E70: + ldrb r2, [r6, #4] + lsls r2, r2, #2 + mov r3, ip + adds r3, #4 + adds r2, r3, r2 + mov r7, ip + ldrh r1, [r7, #0x2e] + lsls r1, r1, #2 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] +_08294E86: + mov r0, ip + ldrh r1, [r0, #0x2e] + ldr r0, [r0, #0x14] + subs r0, r0, r1 + mov r1, ip + str r0, [r1, #0x14] + cmp r0, #0 + beq _08294E9A + cmp r0, #0 + bge _08294F06 +_08294E9A: + mov r0, ip + adds r0, #0x20 + movs r2, #0 + strb r2, [r0] + mov r7, ip + ldrh r1, [r7] + ldr r0, _08294EDC + cmp r1, r0 + bne _08294EE4 + movs r4, #0 +_08294EAE: + adds r0, r5, r4 + movs r1, #1 + strb r1, [r0] + lsls r1, r4, #2 + adds r1, r3, r1 + mov r2, ip + ldrh r0, [r2, #0x2e] + adds r2, r0, #0 + muls r2, r4, r2 + mov r7, ip + ldr r0, [r7, #0x28] + adds r0, r0, r2 + str r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08294EAE + ldr r0, [r7, #0x30] + str r0, [r7, #0x14] + ldr r0, _08294EE0 + strh r0, [r7] + b _08294F06 + .align 2, 0 +_08294EDC: .4byte 0x00008021 +_08294EE0: .4byte 0x00008022 +_08294EE4: + strb r2, [r5] + mov r0, ip + str r2, [r0, #0x14] + ldr r0, _08294EF4 + mov r1, ip + strh r0, [r1] + b _08294F06 + .align 2, 0 +_08294EF4: .4byte 0x00008023 +_08294EF8: + lsls r1, r1, #0x10 + ldr r0, _08294F68 + cmp r1, r0 + bne _08294F06 + ldr r0, _08294F6C + mov r2, ip + strh r0, [r2] +_08294F06: + mov r3, ip + ldrh r0, [r3] + cmp r0, sb + bne _08294F30 + ldrb r2, [r6, #4] + mov r0, ip + adds r0, #0x21 + adds r0, r0, r2 + ldrb r0, [r0] + ldr r7, [sp] + cmp r0, r7 + bne _08294F30 + mov r1, r8 + adds r0, r1, r2 + ldrb r0, [r0] + mov r2, sl + asrs r0, r2 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08294F56 +_08294F30: + ldr r4, _08294F70 + ldrh r2, [r4] + movs r0, #0 + strh r0, [r4] + ldr r0, _08294F74 + ldr r3, [r0] + movs r0, #0x10 + mov r7, sl + lsls r0, r7 + ldrb r1, [r3, #2] + orrs r0, r1 + movs r1, #0 + strb r0, [r3, #2] + lsls r0, r7, #2 + ldr r3, _08294F78 + adds r0, r0, r3 + ldr r0, [r0] + strh r1, [r0, #2] + strh r2, [r4] +_08294F56: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08294F68: .4byte 0x80230000 +_08294F6C: .4byte 0x00008020 +_08294F70: .4byte 0x04000208 +_08294F74: .4byte gUnknown_3007634 +_08294F78: .4byte gUnknown_3007620 + thumb_func_end rfu_STC_NI_receive_Sender + + thumb_func_start rfu_STC_NI_receive_Receiver +rfu_STC_NI_receive_Receiver: @ 0x08294F7C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r1, #0 + str r2, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r7, #0 + ldr r1, _08294FDC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r5, r4, #0 + adds r5, #0x34 + ldrh r0, [r4, #0x34] + mov sb, r0 + ldrb r0, [r6, #4] + adds r3, r4, #0 + adds r3, #0x55 + adds r0, r3, r0 + ldrb r0, [r0] + mov sl, r0 + ldrb r0, [r6, #2] + cmp r0, #3 + bne _08294FEC + ldr r0, _08294FE0 + ldr r2, [r0] + movs r0, #1 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r2, #1] + orrs r0, r1 + strb r0, [r2, #1] + ldrh r1, [r4, #0x34] + ldr r0, _08294FE4 + cmp r1, r0 + bne _08295032 + adds r0, r4, #0 + adds r0, #0x54 + strb r7, [r0] + strb r7, [r3] + ldr r0, _08294FE8 + strh r0, [r4, #0x34] + b _08295032 + .align 2, 0 +_08294FDC: .4byte gUnknown_3007620 +_08294FE0: .4byte gUnknown_3007634 +_08294FE4: .4byte 0x00008042 +_08294FE8: .4byte 0x00008043 +_08294FEC: + cmp r0, #2 + bne _08295018 + ldr r0, _08295010 + cmp sb, r0 + bne _08295004 + ldr r0, [r5, #0x14] + cmp r0, #0 + bne _08295004 + mov r0, r8 + adds r1, r5, #0 + bl rfu_STC_NI_initSlot_asRecvDataEntity +_08295004: + ldrh r1, [r5] + ldr r0, _08295014 + cmp r1, r0 + bne _08295032 + b _08295036 + .align 2, 0 +_08295010: .4byte 0x00008041 +_08295014: .4byte 0x00008042 +_08295018: + cmp r0, #1 + bne _08295032 + ldr r7, _082950E4 + cmp sb, r7 + beq _08295036 + mov r0, r8 + adds r1, r5, #0 + bl rfu_STC_NI_initSlot_asRecvControllData + ldrh r0, [r4, #0x34] + cmp r0, r7 + bne _082950D2 + movs r7, #1 +_08295032: + cmp r7, #0 + beq _0829508C +_08295036: + ldrb r2, [r6, #5] + ldrb r3, [r6, #4] + adds r4, r5, #0 + adds r4, #0x21 + adds r0, r4, r3 + ldrb r0, [r0] + adds r0, #1 + movs r1, #3 + ands r0, r1 + cmp r2, r0 + bne _0829508C + ldr r0, _082950E8 + ldr r0, [r0] + lsls r1, r3, #2 + adds r1, #4 + adds r1, r5, r1 + ldrh r2, [r6, #6] + ldr r3, [r0, #4] + mov r0, sp + bl _call_via_r3 + ldrh r1, [r5] + ldr r0, _082950EC + cmp r1, r0 + bne _0829507C + ldrb r0, [r6, #4] + lsls r0, r0, #2 + adds r2, r5, #4 + adds r2, r2, r0 + ldrh r0, [r5, #0x2e] + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] +_0829507C: + ldrh r1, [r6, #6] + ldr r0, [r5, #0x14] + subs r0, r0, r1 + str r0, [r5, #0x14] + ldrb r0, [r6, #4] + adds r0, r4, r0 + ldrb r1, [r6, #5] + strb r1, [r0] +_0829508C: + ldrh r0, [r5, #0x18] + cmp r0, #0 + bne _082950D2 + ldrb r0, [r6, #4] + adds r1, r5, #0 + adds r1, #0x20 + strb r0, [r1] + ldrh r0, [r5] + cmp r0, sb + bne _082950B4 + adds r0, r5, #0 + adds r0, #0x21 + ldrb r2, [r6, #4] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, sl + bne _082950B4 + ldrb r6, [r6, #5] + cmp r0, r6 + bne _082950D2 +_082950B4: + ldr r3, _082950F0 + ldrh r2, [r3] + movs r0, #0 + strh r0, [r3] + ldr r0, _082950F4 + ldr r4, [r0] + movs r0, #1 + mov r1, r8 + lsls r0, r1 + ldrb r1, [r4, #2] + orrs r0, r1 + movs r1, #0 + strb r0, [r4, #2] + strh r1, [r5, #2] + strh r2, [r3] +_082950D2: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082950E4: .4byte 0x00008041 +_082950E8: .4byte gUnknown_3007638 +_082950EC: .4byte 0x00008042 +_082950F0: .4byte 0x04000208 +_082950F4: .4byte gUnknown_3007634 + thumb_func_end rfu_STC_NI_receive_Receiver + + thumb_func_start rfu_STC_NI_initSlot_asRecvControllData +rfu_STC_NI_initSlot_asRecvControllData: @ 0x082950F8 + push {r4, r5, r6, r7, lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08295114 + ldr r3, [r0] + ldrb r1, [r3] + mov ip, r0 + cmp r1, #1 + bne _08295118 + movs r5, #3 + adds r1, r3, #0 + adds r1, #0xf + b _08295120 + .align 2, 0 +_08295114: .4byte gUnknown_3007630 +_08295118: + movs r5, #2 + adds r0, r4, #0 + adds r0, #0x10 + adds r1, r3, r0 +_08295120: + movs r7, #1 + adds r0, r7, #0 + lsls r0, r4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, r6, #0 + ldrh r3, [r2] + cmp r3, #0 + bne _0829517E + ldrb r0, [r1] + cmp r0, r5 + bhs _08295158 + movs r0, #0x49 + strh r0, [r2] + ldr r0, _08295150 + strh r0, [r2, #0x18] + ldr r0, _08295154 + ldr r2, [r0] + ldrb r1, [r2, #4] + adds r0, r6, #0 + orrs r0, r1 + strb r0, [r2, #4] + b _0829517E + .align 2, 0 +_08295150: .4byte 0x00000702 +_08295154: .4byte gUnknown_3007634 +_08295158: + strh r3, [r2, #0x18] + ldrb r0, [r1] + subs r0, r0, r5 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x2d + str r0, [r2, #4] + movs r0, #7 + str r0, [r2, #0x14] + strb r7, [r2, #0x1f] + strh r3, [r2, #0x2e] + strb r4, [r2, #0x1a] + ldr r0, _08295184 + strh r0, [r2] + mov r0, ip + ldr r1, [r0] + ldrb r0, [r1, #5] + orrs r4, r0 + strb r4, [r1, #5] +_0829517E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08295184: .4byte 0x00008041 + thumb_func_end rfu_STC_NI_initSlot_asRecvControllData + + thumb_func_start rfu_STC_NI_initSlot_asRecvDataEntity +rfu_STC_NI_initSlot_asRecvDataEntity: @ 0x08295188 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #1 + bne _082951AC + ldr r0, _082951A8 + lsls r1, r5, #5 + adds r1, #0x14 + ldr r0, [r0] + adds r0, r0, r1 + adds r0, #4 + b _08295202 + .align 2, 0 +_082951A8: .4byte gUnknown_3007630 +_082951AC: + ldr r1, _082951F0 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldr r1, [r4, #0x30] + ldr r0, [r2, #0x6c] + cmp r1, r0 + bls _08295200 + movs r1, #0x80 + lsls r1, r1, #0x11 + lsls r1, r5 + lsrs r1, r1, #0x18 + ldr r0, _082951F4 + ldr r3, [r0] + ldrb r2, [r3, #4] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r3, #4] + ldr r0, _082951F8 + ldr r2, [r0] + ldrb r0, [r2, #5] + bics r0, r1 + strb r0, [r2, #5] + ldr r0, _082951FC + strh r0, [r4, #0x18] + movs r0, #0x47 + strh r0, [r4] + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl rfu_STC_releaseFrame + b _08295234 + .align 2, 0 +_082951F0: .4byte gUnknown_3007620 +_082951F4: .4byte gUnknown_3007634 +_082951F8: .4byte gUnknown_3007630 +_082951FC: .4byte 0x00000701 +_08295200: + ldr r0, [r2, #0x68] +_08295202: + str r0, [r4, #4] + movs r3, #0 + adds r6, r4, #0 + adds r6, #0x21 + movs r7, #0 + adds r5, r4, #4 +_0829520E: + 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, r2 + ldr r0, [r4, #4] + adds r0, r0, r2 + str r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0829520E + ldr r0, [r4, #0x30] + str r0, [r4, #0x14] + ldr r0, _0829523C + strh r0, [r4] +_08295234: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0829523C: .4byte 0x00008042 + thumb_func_end rfu_STC_NI_initSlot_asRecvDataEntity + + thumb_func_start rfu_NI_checkCommFailCounter +rfu_NI_checkCommFailCounter: @ 0x08295240 + push {r4, r5, r6, r7, lr} + ldr r2, _082952CC + ldr r0, [r2] + ldrb r1, [r0, #4] + ldrb r0, [r0, #5] + orrs r0, r1 + cmp r0, #0 + beq _082952C6 + ldr r1, _082952D0 + ldrh r0, [r1] + mov ip, r0 + movs r0, #0 + strh r0, [r1] + ldr r1, _082952D4 + ldr r0, [r1] + ldrb r0, [r0, #2] + lsrs r7, r0, #4 + movs r3, #0 + adds r6, r1, #0 + adds r5, r2, #0 + ldr r4, _082952D8 +_0829526A: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r3 + lsrs r2, r0, #0x18 + ldr r0, [r5] + ldrb r0, [r0, #4] + ands r0, r2 + cmp r0, #0 + beq _08295292 + ldr r0, [r6] + ldrb r0, [r0, #2] + ands r0, r2 + cmp r0, #0 + bne _08295292 + lsls r0, r3, #2 + adds r0, r0, r4 + ldr r1, [r0] + ldrh r0, [r1, #2] + adds r0, #1 + strh r0, [r1, #2] +_08295292: + ldr r0, [r5] + ldrb r0, [r0, #5] + ands r0, r2 + cmp r0, #0 + beq _082952B0 + adds r0, r7, #0 + ands r0, r2 + cmp r0, #0 + bne _082952B0 + lsls r0, r3, #2 + adds r0, r0, r4 + ldr r1, [r0] + ldrh r0, [r1, #0x36] + adds r0, #1 + strh r0, [r1, #0x36] +_082952B0: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0829526A + ldr r0, [r6] + movs r1, #0 + strb r1, [r0, #2] + ldr r0, _082952D0 + mov r1, ip + strh r1, [r0] +_082952C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082952CC: .4byte gUnknown_3007630 +_082952D0: .4byte 0x04000208 +_082952D4: .4byte gUnknown_3007634 +_082952D8: .4byte gUnknown_3007620 + thumb_func_end rfu_NI_checkCommFailCounter + + thumb_func_start rfu_REQ_noise +rfu_REQ_noise: @ 0x082952DC + push {lr} + ldr r0, _082952F0 + bl STWI_set_Callback_M + movs r0, #1 + movs r1, #0 + bl STWI_send_TestModeREQ + pop {r0} + bx r0 + .align 2, 0 +_082952F0: .4byte rfu_STC_REQ_callback + thumb_func_end rfu_REQ_noise diff --git a/asm/librfu_stwi.s b/asm/librfu_stwi.s new file mode 100644 index 0000000..2f5cd2a --- /dev/null +++ b/asm/librfu_stwi.s @@ -0,0 +1,1560 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start STWI_init_all +STWI_init_all: @ 0x08290FA0 + push {r4, lr} + adds r3, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #1 + bne _08290FDC + adds r2, r3, #0 + adds r2, #0xe8 + str r2, [r1] + ldr r1, _08290FC8 + ldr r0, _08290FCC + str r0, [r1] + str r2, [r1, #4] + ldr r0, _08290FD0 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r1, _08290FD4 + ldr r2, _08290FD8 + adds r0, r3, r2 + b _08290FE6 + .align 2, 0 +_08290FC8: .4byte 0x040000D4 +_08290FCC: .4byte IntrSIO32 +_08290FD0: .4byte 0x800004B0 +_08290FD4: .4byte gUnknown_3007608 +_08290FD8: .4byte 0x00000A48 +_08290FDC: + ldr r0, _08291060 + str r0, [r1] + ldr r1, _08291064 + adds r0, r3, #0 + adds r0, #0xe8 +_08290FE6: + 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, #1 + strb r0, [r1, #0x14] + ldr r0, [r2] + str r4, [r0] + strb r4, [r0, #4] + ldr r0, [r2] + strb r4, [r0, #5] + ldr r0, [r2] + strb r4, [r0, #7] + ldr r0, [r2] + strb r4, [r0, #8] + ldr r0, [r2] + strb r4, [r0, #9] + 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, _08291068 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #0xc + ldr r2, _0829106C + adds r0, r2, #0 + strh r0, [r1] + bl STWI_init_Callback_M + bl STWI_init_Callback_S + ldr r3, _08291070 + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _08291074 + ldrh r0, [r4] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08291060: .4byte IntrSIO32 +_08291064: .4byte gUnknown_3007608 +_08291068: .4byte 0x04000134 +_0829106C: .4byte 0x00005003 +_08291070: .4byte 0x04000208 +_08291074: .4byte 0x04000200 + thumb_func_end STWI_init_all + + thumb_func_start STWI_init_timer +STWI_init_timer: @ 0x08291078 + push {r4, r5, lr} + ldr r2, _082910A4 + str r2, [r0] + ldr r5, _082910A8 + ldr r0, [r5] + movs r4, #0 + strb r1, [r0, #0xa] + ldr r3, _082910AC + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _082910B0 + ldr r1, [r5] + movs r0, #8 + 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 +_082910A4: .4byte STWI_intr_timer +_082910A8: .4byte gUnknown_3007608 +_082910AC: .4byte 0x04000208 +_082910B0: .4byte 0x04000200 + thumb_func_end STWI_init_timer + + thumb_func_start AgbRFU_SoftReset +AgbRFU_SoftReset: @ 0x082910B4 + push {r4, r5, lr} + ldr r5, _0829114C + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r1, #0 + strh r0, [r5] + ldr r2, _08291150 + adds r0, r2, #0 + strh r0, [r5] + ldr r1, _08291154 + ldr r0, [r1] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r3, _08291158 + adds r2, r0, r3 + ldr r4, _0829115C + 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 _082910F4 + ldr r0, _08291160 + adds r1, r0, #0 +_082910EC: + strh r1, [r5] + ldrh r0, [r2] + cmp r0, #0x11 + bls _082910EC +_082910F4: + movs r0, #3 + strh r0, [r3] + ldr r1, _0829114C + ldr r2, _08291150 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #0xc + ldr r3, _08291164 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, [r4] + movs r2, #0 + str r2, [r0] + strb r2, [r0, #4] + ldr r0, [r4] + strb r2, [r0, #5] + ldr r0, [r4] + strb r2, [r0, #6] + ldr r0, [r4] + strb r2, [r0, #7] + ldr r0, [r4] + strb r2, [r0, #8] + ldr r0, [r4] + strb r2, [r0, #9] + 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, #1 + 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 +_0829114C: .4byte 0x04000134 +_08291150: .4byte 0x000080A0 +_08291154: .4byte gUnknown_3007608 +_08291158: .4byte 0x04000100 +_0829115C: .4byte 0x04000102 +_08291160: .4byte 0x000080A2 +_08291164: .4byte 0x00005003 + thumb_func_end AgbRFU_SoftReset + + thumb_func_start STWI_set_MS_mode +STWI_set_MS_mode: @ 0x08291168 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08291178 + ldr r1, [r1] + ldrb r2, [r1, #0x14] + strb r0, [r1, #0x14] + bx lr + .align 2, 0 +_08291178: .4byte gUnknown_3007608 + thumb_func_end STWI_set_MS_mode + + thumb_func_start STWI_read_status +STWI_read_status: @ 0x0829117C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _082911A8 + cmp r0, #1 + bgt _08291192 + cmp r0, #0 + beq _0829119C + b _082911D0 +_08291192: + cmp r1, #2 + beq _082911B4 + cmp r1, #3 + beq _082911C4 + b _082911D0 +_0829119C: + ldr r0, _082911A4 + ldr r0, [r0] + ldrh r0, [r0, #0x12] + b _082911D2 + .align 2, 0 +_082911A4: .4byte gUnknown_3007608 +_082911A8: + ldr r0, _082911B0 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + b _082911D2 + .align 2, 0 +_082911B0: .4byte gUnknown_3007608 +_082911B4: + ldr r0, _082911C0 + ldr r0, [r0] + ldr r0, [r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _082911D2 + .align 2, 0 +_082911C0: .4byte gUnknown_3007608 +_082911C4: + ldr r0, _082911CC + ldr r0, [r0] + ldrb r0, [r0, #6] + b _082911D2 + .align 2, 0 +_082911CC: .4byte gUnknown_3007608 +_082911D0: + ldr r0, _082911D8 +_082911D2: + pop {r1} + bx r1 + .align 2, 0 +_082911D8: .4byte 0x0000FFFF + thumb_func_end STWI_read_status + + thumb_func_start STWI_init_Callback_M +STWI_init_Callback_M: @ 0x082911DC + 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: @ 0x082911E8 + 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: @ 0x082911F4 + ldr r1, _082911FC + ldr r1, [r1] + str r0, [r1, #0x18] + bx lr + .align 2, 0 +_082911FC: .4byte gUnknown_3007608 + thumb_func_end STWI_set_Callback_M + + thumb_func_start STWI_set_Callback_S +STWI_set_Callback_S: @ 0x08291200 + ldr r1, _08291208 + ldr r1, [r1] + str r0, [r1, #0x1c] + bx lr + .align 2, 0 +_08291208: .4byte gUnknown_3007608 + thumb_func_end STWI_set_Callback_S + + thumb_func_start STWI_set_Callback_ID +STWI_set_Callback_ID: @ 0x0829120C + ldr r1, _08291214 + ldr r1, [r1] + str r0, [r1, #0x20] + bx lr + .align 2, 0 +_08291214: .4byte gUnknown_3007608 + thumb_func_end STWI_set_Callback_ID + + thumb_func_start STWI_poll_CommandEnd +STWI_poll_CommandEnd: @ 0x08291218 + push {lr} + ldr r0, _0829123C + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x2c + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #1 + bne _08291232 + adds r1, r2, #0 +_0829122C: + ldrb r0, [r1] + cmp r0, #1 + beq _0829122C +_08291232: + ldr r0, [r3] + ldrh r0, [r0, #0x12] + pop {r1} + bx r1 + .align 2, 0 +_0829123C: .4byte gUnknown_3007608 + thumb_func_end STWI_poll_CommandEnd + + thumb_func_start STWI_send_ResetREQ +STWI_send_ResetREQ: @ 0x08291240 + push {lr} + movs r0, #0x10 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829125A + ldr r0, _08291260 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829125A: + pop {r0} + bx r0 + .align 2, 0 +_08291260: .4byte gUnknown_3007608 + thumb_func_end STWI_send_ResetREQ + + thumb_func_start STWI_send_LinkStatusREQ +STWI_send_LinkStatusREQ: @ 0x08291264 + push {lr} + movs r0, #0x11 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829127E + ldr r0, _08291284 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829127E: + pop {r0} + bx r0 + .align 2, 0 +_08291284: .4byte gUnknown_3007608 + thumb_func_end STWI_send_LinkStatusREQ + + thumb_func_start STWI_send_VersionStatusREQ +STWI_send_VersionStatusREQ: @ 0x08291288 + push {lr} + movs r0, #0x12 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082912A2 + ldr r0, _082912A8 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082912A2: + pop {r0} + bx r0 + .align 2, 0 +_082912A8: .4byte gUnknown_3007608 + thumb_func_end STWI_send_VersionStatusREQ + + thumb_func_start STWI_send_SystemStatusREQ +STWI_send_SystemStatusREQ: @ 0x082912AC + push {lr} + movs r0, #0x13 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082912C6 + ldr r0, _082912CC + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082912C6: + pop {r0} + bx r0 + .align 2, 0 +_082912CC: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SystemStatusREQ + + thumb_func_start STWI_send_SlotStatusREQ +STWI_send_SlotStatusREQ: @ 0x082912D0 + push {lr} + movs r0, #0x14 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082912EA + ldr r0, _082912F0 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082912EA: + pop {r0} + bx r0 + .align 2, 0 +_082912F0: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SlotStatusREQ + + thumb_func_start STWI_send_ConfigStatusREQ +STWI_send_ConfigStatusREQ: @ 0x082912F4 + push {lr} + movs r0, #0x15 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829130E + ldr r0, _08291314 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829130E: + pop {r0} + bx r0 + .align 2, 0 +_08291314: .4byte gUnknown_3007608 + thumb_func_end STWI_send_ConfigStatusREQ + + thumb_func_start STWI_send_GameConfigREQ +STWI_send_GameConfigREQ: @ 0x08291318 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0x16 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08291364 + ldr r2, _0829136C + ldr r1, [r2] + movs r0, #6 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r1, [r0, #0x24] + adds r1, #4 + ldrh r0, [r4] + strh r0, [r1] + adds r1, #2 + adds r4, #2 + movs r2, #0xd +_08291342: + ldrb r0, [r4] + strb r0, [r1] + adds r1, #1 + adds r4, #1 + subs r2, #1 + cmp r2, #0 + bge _08291342 + movs r2, #7 +_08291352: + ldrb r0, [r5] + strb r0, [r1] + adds r1, #1 + adds r5, #1 + subs r2, #1 + cmp r2, #0 + bge _08291352 + bl STWI_start_Command +_08291364: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0829136C: .4byte gUnknown_3007608 + thumb_func_end STWI_send_GameConfigREQ + + thumb_func_start STWI_send_SystemConfigREQ +STWI_send_SystemConfigREQ: @ 0x08291370 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r0, #0x17 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _082913A6 + ldr r2, _082913AC + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r0, [r0, #0x24] + adds r0, #4 + strb r4, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #1 + strh r6, [r0] + bl STWI_start_Command +_082913A6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_082913AC: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SystemConfigREQ + + thumb_func_start STWI_send_SC_StartREQ +STWI_send_SC_StartREQ: @ 0x082913B0 + push {lr} + movs r0, #0x19 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082913CA + ldr r0, _082913D0 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082913CA: + pop {r0} + bx r0 + .align 2, 0 +_082913D0: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SC_StartREQ + + thumb_func_start STWI_send_SC_PollingREQ +STWI_send_SC_PollingREQ: @ 0x082913D4 + push {lr} + movs r0, #0x1a + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082913EE + ldr r0, _082913F4 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082913EE: + pop {r0} + bx r0 + .align 2, 0 +_082913F4: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SC_PollingREQ + + thumb_func_start STWI_send_SC_EndREQ +STWI_send_SC_EndREQ: @ 0x082913F8 + push {lr} + movs r0, #0x1b + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08291412 + ldr r0, _08291418 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_08291412: + pop {r0} + bx r0 + .align 2, 0 +_08291418: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SC_EndREQ + + thumb_func_start STWI_send_SP_StartREQ +STWI_send_SP_StartREQ: @ 0x0829141C + push {lr} + movs r0, #0x1c + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08291436 + ldr r0, _0829143C + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_08291436: + pop {r0} + bx r0 + .align 2, 0 +_0829143C: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SP_StartREQ + + thumb_func_start STWI_send_SP_PollingREQ +STWI_send_SP_PollingREQ: @ 0x08291440 + push {lr} + movs r0, #0x1d + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829145A + ldr r0, _08291460 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829145A: + pop {r0} + bx r0 + .align 2, 0 +_08291460: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SP_PollingREQ + + thumb_func_start STWI_send_SP_EndREQ +STWI_send_SP_EndREQ: @ 0x08291464 + push {lr} + movs r0, #0x1e + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829147E + ldr r0, _08291484 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829147E: + pop {r0} + bx r0 + .align 2, 0 +_08291484: .4byte gUnknown_3007608 + thumb_func_end STWI_send_SP_EndREQ + + thumb_func_start STWI_send_CP_StartREQ +STWI_send_CP_StartREQ: @ 0x08291488 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x1f + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _082914AC + ldr r2, _082914B4 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r0, [r0, #0x24] + str r4, [r0, #4] + bl STWI_start_Command +_082914AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_082914B4: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CP_StartREQ + + thumb_func_start STWI_send_CP_PollingREQ +STWI_send_CP_PollingREQ: @ 0x082914B8 + push {lr} + movs r0, #0x20 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082914D2 + ldr r0, _082914D8 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082914D2: + pop {r0} + bx r0 + .align 2, 0 +_082914D8: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CP_PollingREQ + + thumb_func_start STWI_send_CP_EndREQ +STWI_send_CP_EndREQ: @ 0x082914DC + push {lr} + movs r0, #0x21 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082914F6 + ldr r0, _082914FC + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082914F6: + pop {r0} + bx r0 + .align 2, 0 +_082914FC: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CP_EndREQ + + thumb_func_start STWI_send_DataTxREQ +STWI_send_DataTxREQ: @ 0x08291500 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r4, r1, #0x18 + lsrs r5, r4, #0x18 + movs r0, #0x24 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0829153E + lsrs r2, r4, #0x1a + movs r0, #3 + ands r0, r5 + cmp r0, #0 + beq _08291520 + adds r2, #1 +_08291520: + ldr r1, _08291544 + ldr r0, [r1] + strb r2, [r0, #4] + ldr r0, [r1] + ldr r1, [r0, #0x24] + adds r1, #4 + ldrb r2, [r0, #4] + movs r0, #0x80 + lsls r0, r0, #0x13 + orrs r2, r0 + adds r0, r6, #0 + bl CpuSet + bl STWI_start_Command +_0829153E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08291544: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DataTxREQ + + thumb_func_start STWI_send_DataTxAndChangeREQ +STWI_send_DataTxAndChangeREQ: @ 0x08291548 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r4, r1, #0x18 + lsrs r5, r4, #0x18 + movs r0, #0x25 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08291586 + lsrs r2, r4, #0x1a + movs r0, #3 + ands r0, r5 + cmp r0, #0 + beq _08291568 + adds r2, #1 +_08291568: + ldr r1, _0829158C + ldr r0, [r1] + strb r2, [r0, #4] + ldr r0, [r1] + ldr r1, [r0, #0x24] + adds r1, #4 + ldrb r2, [r0, #4] + movs r0, #0x80 + lsls r0, r0, #0x13 + orrs r2, r0 + adds r0, r6, #0 + bl CpuSet + bl STWI_start_Command +_08291586: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0829158C: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DataTxAndChangeREQ + + thumb_func_start STWI_send_DataRxREQ +STWI_send_DataRxREQ: @ 0x08291590 + push {lr} + movs r0, #0x26 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082915AA + ldr r0, _082915B0 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082915AA: + pop {r0} + bx r0 + .align 2, 0 +_082915B0: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DataRxREQ + + thumb_func_start STWI_send_MS_ChangeREQ +STWI_send_MS_ChangeREQ: @ 0x082915B4 + push {lr} + movs r0, #0x27 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _082915CE + ldr r0, _082915D4 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_082915CE: + pop {r0} + bx r0 + .align 2, 0 +_082915D4: .4byte gUnknown_3007608 + thumb_func_end STWI_send_MS_ChangeREQ + + thumb_func_start STWI_send_DataReadyAndChangeREQ +STWI_send_DataReadyAndChangeREQ: @ 0x082915D8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r0, #0x28 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _0829161E + cmp r4, #0 + bne _08291600 + ldr r0, _082915FC + ldr r0, [r0] + strb r3, [r0, #4] + b _0829161A + .align 2, 0 +_082915FC: .4byte gUnknown_3007608 +_08291600: + ldr r2, _08291624 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r0, [r0, #0x24] + adds r0, #4 + strb r5, [r0] + adds r0, #1 + strb r3, [r0] + adds r0, #1 + strb r3, [r0] + strb r3, [r0, #1] +_0829161A: + bl STWI_start_Command +_0829161E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08291624: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DataReadyAndChangeREQ + + thumb_func_start STWI_send_DisconnectedAndChangeREQ +STWI_send_DisconnectedAndChangeREQ: @ 0x08291628 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r0, #0x29 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _0829165E + ldr r2, _08291664 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r0, [r0, #0x24] + adds r0, #4 + strb r4, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #1 + strb r3, [r0] + strb r3, [r0, #1] + bl STWI_start_Command +_0829165E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08291664: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DisconnectedAndChangeREQ + + thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ +STWI_send_ResumeRetransmitAndChangeREQ: @ 0x08291668 + push {lr} + movs r0, #0x37 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08291682 + ldr r0, _08291688 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_08291682: + pop {r0} + bx r0 + .align 2, 0 +_08291688: .4byte gUnknown_3007608 + thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ + + thumb_func_start STWI_send_DisconnectREQ +STWI_send_DisconnectREQ: @ 0x0829168C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x30 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _082916B0 + ldr r2, _082916B8 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r0, [r0, #0x24] + str r4, [r0, #4] + bl STWI_start_Command +_082916B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_082916B8: .4byte gUnknown_3007608 + thumb_func_end STWI_send_DisconnectREQ + + thumb_func_start STWI_send_TestModeREQ +STWI_send_TestModeREQ: @ 0x082916BC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r0, #0x31 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _082916E8 + ldr r2, _082916F0 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #4] + ldr r0, [r2] + ldr r1, [r0, #0x24] + lsls r0, r4, #8 + orrs r0, r5 + str r0, [r1, #4] + bl STWI_start_Command +_082916E8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_082916F0: .4byte gUnknown_3007608 + thumb_func_end STWI_send_TestModeREQ + + thumb_func_start STWI_send_CPR_StartREQ +STWI_send_CPR_StartREQ: @ 0x082916F4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r0, #0x32 + bl STWI_init + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08291726 + ldr r2, _0829172C + ldr r1, [r2] + movs r0, #2 + strb r0, [r1, #4] + lsls r0, r5, #0x10 + orrs r0, r4 + ldr r1, [r2] + ldr r1, [r1, #0x24] + str r0, [r1, #4] + str r6, [r1, #8] + bl STWI_start_Command +_08291726: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0829172C: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CPR_StartREQ + + thumb_func_start STWI_send_CPR_PollingREQ +STWI_send_CPR_PollingREQ: @ 0x08291730 + push {lr} + movs r0, #0x33 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829174A + ldr r0, _08291750 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829174A: + pop {r0} + bx r0 + .align 2, 0 +_08291750: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CPR_PollingREQ + + thumb_func_start STWI_send_CPR_EndREQ +STWI_send_CPR_EndREQ: @ 0x08291754 + push {lr} + movs r0, #0x34 + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0829176E + ldr r0, _08291774 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_0829176E: + pop {r0} + bx r0 + .align 2, 0 +_08291774: .4byte gUnknown_3007608 + thumb_func_end STWI_send_CPR_EndREQ + + thumb_func_start STWI_send_StopModeREQ +STWI_send_StopModeREQ: @ 0x08291778 + push {lr} + movs r0, #0x3d + bl STWI_init + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08291792 + ldr r0, _08291798 + ldr r0, [r0] + strb r1, [r0, #4] + bl STWI_start_Command +_08291792: + pop {r0} + bx r0 + .align 2, 0 +_08291798: .4byte gUnknown_3007608 + thumb_func_end STWI_send_StopModeREQ + + thumb_func_start STWI_intr_timer +STWI_intr_timer: @ 0x0829179C + push {r4, lr} + ldr r4, _082917B4 + ldr r1, [r4] + ldr r0, [r1, #0xc] + cmp r0, #2 + beq _082917C2 + cmp r0, #2 + bgt _082917B8 + cmp r0, #1 + beq _082917D0 + b _082917F8 + .align 2, 0 +_082917B4: .4byte gUnknown_3007608 +_082917B8: + cmp r0, #3 + beq _082917DA + cmp r0, #4 + beq _082917D0 + b _082917F8 +_082917C2: + ldrb r0, [r1, #0x10] + movs r0, #1 + strb r0, [r1, #0x10] + movs r0, #0x32 + bl STWI_set_timer + b _082917F8 +_082917D0: + bl STWI_stop_timer + bl STWI_restart_Command + b _082917F8 +_082917DA: + ldrb r0, [r1, #0x10] + movs r0, #1 + strb r0, [r1, #0x10] + bl STWI_stop_timer + bl STWI_reset_ClockCounter + ldr r0, [r4] + ldr r2, [r0, #0x18] + cmp r2, #0 + beq _082917F8 + movs r0, #0xff + movs r1, #0 + bl _call_via_r2 +_082917F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end STWI_intr_timer + + thumb_func_start STWI_set_timer +STWI_set_timer: @ 0x08291800 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r5, r3, #0 + ldr r2, _08291830 + ldr r0, [r2] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r1, _08291834 + adds r4, r0, r1 + adds r1, #2 + adds r7, r0, r1 + ldr r1, _08291838 + movs r0, #0 + strh r0, [r1] + adds r6, r2, #0 + cmp r3, #0x50 + beq _08291858 + cmp r3, #0x50 + bgt _0829183C + cmp r3, #0x32 + beq _08291846 + b _08291884 + .align 2, 0 +_08291830: .4byte gUnknown_3007608 +_08291834: .4byte 0x04000100 +_08291838: .4byte 0x04000208 +_0829183C: + cmp r5, #0x64 + beq _08291868 + cmp r5, #0x82 + beq _08291878 + b _08291884 +_08291846: + ldr r1, _08291854 + adds r0, r1, #0 + strh r0, [r4] + ldr r1, [r6] + movs r0, #1 + b _08291882 + .align 2, 0 +_08291854: .4byte 0x0000FCCB +_08291858: + ldr r1, _08291864 + adds r0, r1, #0 + strh r0, [r4] + ldr r1, [r6] + movs r0, #2 + b _08291882 + .align 2, 0 +_08291864: .4byte 0x0000FAE0 +_08291868: + ldr r1, _08291874 + adds r0, r1, #0 + strh r0, [r4] + ldr r1, [r6] + movs r0, #3 + b _08291882 + .align 2, 0 +_08291874: .4byte 0x0000F996 +_08291878: + ldr r1, _082918A0 + adds r0, r1, #0 + strh r0, [r4] + ldr r1, [r6] + movs r0, #4 +_08291882: + str r0, [r1, #0xc] +_08291884: + movs r0, #0xc3 + strh r0, [r7] + ldr r2, _082918A4 + ldr r1, [r6] + movs r0, #8 + ldrb r1, [r1, #0xa] + lsls r0, r1 + strh r0, [r2] + ldr r1, _082918A8 + movs r0, #1 + strh r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_082918A0: .4byte 0x0000F7AD +_082918A4: .4byte 0x04000202 +_082918A8: .4byte 0x04000208 + thumb_func_end STWI_set_timer + + thumb_func_start STWI_stop_timer +STWI_stop_timer: @ 0x082918AC + ldr r2, _082918CC + ldr r0, [r2] + movs r1, #0 + str r1, [r0, #0xc] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r3, _082918D0 + adds r0, r0, r3 + strh r1, [r0] + ldr r0, [r2] + ldrb r0, [r0, #0xa] + lsls r0, r0, #2 + ldr r2, _082918D4 + adds r0, r0, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_082918CC: .4byte gUnknown_3007608 +_082918D0: .4byte 0x04000100 +_082918D4: .4byte 0x04000102 + thumb_func_end STWI_stop_timer + + thumb_func_start STWI_init +STWI_init: @ 0x082918D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + ldr r0, _08291904 + ldrh r0, [r0] + cmp r0, #0 + bne _0829190C + ldr r0, _08291908 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + movs r0, #6 + strh r0, [r1, #0x12] + ldr r2, [r1, #0x18] + cmp r2, #0 + beq _08291956 + ldrh r1, [r1, #0x12] + adds r0, r5, #0 + bl _call_via_r2 + b _08291956 + .align 2, 0 +_08291904: .4byte 0x04000208 +_08291908: .4byte gUnknown_3007608 +_0829190C: + ldr r4, _08291938 + ldr r2, [r4] + adds r3, r2, #0 + adds r3, #0x2c + ldrb r0, [r3] + cmp r0, #1 + bne _0829193C + ldrh r0, [r2, #0x12] + movs r1, #0 + movs r0, #2 + strh r0, [r2, #0x12] + ldrb r0, [r3] + strb r1, [r3] + ldr r0, [r4] + ldr r2, [r0, #0x18] + cmp r2, #0 + beq _08291956 + ldrh r1, [r0, #0x12] + adds r0, r5, #0 + bl _call_via_r2 + b _08291956 + .align 2, 0 +_08291938: .4byte gUnknown_3007608 +_0829193C: + ldrb r0, [r2, #0x14] + cmp r0, #0 + bne _0829195A + ldrh r0, [r2, #0x12] + movs r0, #4 + strh r0, [r2, #0x12] + ldr r3, [r2, #0x18] + cmp r3, #0 + beq _08291956 + ldrh r1, [r2, #0x12] + adds r0, r5, #0 + bl _call_via_r3 +_08291956: + movs r0, #1 + b _082919A2 +_0829195A: + ldrb r0, [r3] + movs r1, #0 + movs r0, #1 + strb r0, [r3] + ldr r0, [r4] + strb r6, [r0, #6] + ldr r0, [r4] + str r1, [r0] + strb r1, [r0, #4] + ldr r0, [r4] + strb r1, [r0, #5] + ldr r0, [r4] + strb r1, [r0, #7] + ldr r0, [r4] + strb r1, [r0, #8] + ldr r0, [r4] + strb r1, [r0, #9] + 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, _082919A8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #0xc + ldr r2, _082919AC + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 +_082919A2: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_082919A8: .4byte 0x04000134 +_082919AC: .4byte 0x00005003 + thumb_func_end STWI_init + + thumb_func_start STWI_start_Command +STWI_start_Command: @ 0x082919B0 + push {r4, r5, lr} + ldr r5, _08291A08 + ldr r0, [r5] + ldr r3, [r0, #0x24] + ldrb r1, [r0, #4] + lsls r1, r1, #8 + ldrb r0, [r0, #6] + ldr r2, _08291A0C + orrs r0, r2 + orrs r1, r0 + str r1, [r3] + ldr r2, _08291A10 + ldr r1, [r5] + ldr r0, [r1, #0x24] + ldr r0, [r0] + str r0, [r2] + movs r2, #0 + str r2, [r1] + movs r0, #1 + strb r0, [r1, #5] + ldr r4, _08291A14 + ldrh r3, [r4] + strh r2, [r4] + ldr r2, _08291A18 + ldr r1, [r5] + movs r0, #8 + 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, _08291A1C + ldr r2, _08291A20 + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08291A08: .4byte gUnknown_3007608 +_08291A0C: .4byte 0x99660000 +_08291A10: .4byte 0x04000120 +_08291A14: .4byte 0x04000208 +_08291A18: .4byte 0x04000200 +_08291A1C: .4byte 0x04000128 +_08291A20: .4byte 0x00005083 + thumb_func_end STWI_start_Command + + thumb_func_start STWI_restart_Command +STWI_restart_Command: @ 0x08291A24 + push {r4, lr} + ldr r4, _08291A3C + ldr r2, [r4] + ldrb r0, [r2, #0x15] + adds r3, r4, #0 + cmp r0, #1 + bhi _08291A40 + adds r0, #1 + strb r0, [r2, #0x15] + bl STWI_start_Command + b _08291A9A + .align 2, 0 +_08291A3C: .4byte gUnknown_3007608 +_08291A40: + ldrb r0, [r2, #6] + cmp r0, #0x27 + beq _08291A52 + cmp r0, #0x25 + beq _08291A52 + cmp r0, #0x35 + beq _08291A52 + cmp r0, #0x37 + bne _08291A74 +_08291A52: + ldr r0, [r3] + ldrh r1, [r0, #0x12] + movs r2, #0 + movs r1, #1 + strh r1, [r0, #0x12] + adds r0, #0x2c + ldrb r1, [r0] + strb r2, [r0] + ldr r1, [r3] + ldr r2, [r1, #0x18] + cmp r2, #0 + beq _08291A9A + ldrb r0, [r1, #6] + ldrh r1, [r1, #0x12] + bl _call_via_r2 + b _08291A9A +_08291A74: + ldrh r0, [r2, #0x12] + movs r1, #0 + movs r0, #1 + 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 _08291A94 + ldrb r0, [r1, #6] + ldrh r1, [r1, #0x12] + bl _call_via_r2 +_08291A94: + ldr r1, [r4] + movs r0, #4 + str r0, [r1] +_08291A9A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end STWI_restart_Command + + thumb_func_start STWI_reset_ClockCounter +STWI_reset_ClockCounter: @ 0x08291AA4 + ldr r3, _08291AD0 + ldr r1, [r3] + movs r0, #5 + str r0, [r1] + movs r2, #0 + strb r2, [r1, #4] + ldr r0, [r3] + strb r2, [r0, #5] + ldr r1, _08291AD4 + movs r0, #0x80 + lsls r0, r0, #0x18 + str r0, [r1] + adds r1, #8 + strh r2, [r1] + ldr r2, _08291AD8 + 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 +_08291AD0: .4byte gUnknown_3007608 +_08291AD4: .4byte 0x04000120 +_08291AD8: .4byte 0x00005003 + thumb_func_end STWI_reset_ClockCounter diff --git a/asm/libs.s.bak b/asm/libs.s.bak new file mode 100644 index 0000000..f66e53e --- /dev/null +++ b/asm/libs.s.bak @@ -0,0 +1,8850 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start memcpy +memcpy: @ 0x08297D0C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r3, r1, #0 + cmp r2, #0xf + bls _08297D4C + adds r0, r3, #0 + orrs r0, r5 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297D4C + adds r1, r5, #0 +_08297D26: + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + ldm r3!, {r0} + stm r1!, {r0} + subs r2, #0x10 + cmp r2, #0xf + bhi _08297D26 + cmp r2, #3 + bls _08297D4A +_08297D40: + ldm r3!, {r0} + stm r1!, {r0} + subs r2, #4 + cmp r2, #3 + bhi _08297D40 +_08297D4A: + adds r4, r1, #0 +_08297D4C: + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _08297D66 + adds r1, r0, #0 +_08297D58: + ldrb r0, [r3] + strb r0, [r4] + adds r3, #1 + adds r4, #1 + subs r2, #1 + cmp r2, r1 + bne _08297D58 +_08297D66: + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end memcpy + + thumb_func_start memset +memset: @ 0x08297D6C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r5, #0 + cmp r2, #3 + bls _08297DB2 + movs r0, #3 + ands r0, r5 + cmp r0, #0 + bne _08297DB2 + adds r1, r5, #0 + movs r0, #0xff + ands r4, r0 + lsls r3, r4, #8 + orrs r3, r4 + lsls r0, r3, #0x10 + orrs r3, r0 + cmp r2, #0xf + bls _08297DA6 +_08297D92: + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + stm r1!, {r3} + subs r2, #0x10 + cmp r2, #0xf + bhi _08297D92 + b _08297DA6 +_08297DA2: + stm r1!, {r3} + subs r2, #4 +_08297DA6: + cmp r2, #3 + bhi _08297DA2 + adds r3, r1, #0 + b _08297DB2 +_08297DAE: + strb r4, [r3] + adds r3, #1 +_08297DB2: + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bne _08297DAE + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end memset + + thumb_func_start strcmp +strcmp: @ 0x08297DC0 + push {r4, r5, lr} + adds r2, r0, #0 + adds r3, r1, #0 + orrs r0, r3 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297E06 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + bne _08297E06 + ldr r5, _08297DEC + ldr r4, _08297DF0 +_08297DDC: + ldr r1, [r2] + adds r0, r1, r5 + bics r0, r1 + ands r0, r4 + cmp r0, #0 + beq _08297DF4 + movs r0, #0 + b _08297E18 + .align 2, 0 +_08297DEC: .4byte 0xFEFEFEFF +_08297DF0: .4byte 0x80808080 +_08297DF4: + adds r2, #4 + adds r3, #4 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + beq _08297DDC + b _08297E06 +_08297E02: + adds r2, #1 + adds r3, #1 +_08297E06: + ldrb r0, [r2] + cmp r0, #0 + beq _08297E12 + ldrb r1, [r3] + cmp r0, r1 + beq _08297E02 +_08297E12: + ldrb r2, [r2] + ldrb r3, [r3] + subs r0, r2, r3 +_08297E18: + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end strcmp + + thumb_func_start strcpy +strcpy: @ 0x08297E1C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r3, r6, #0 + adds r2, r1, #0 + adds r0, r2, #0 + orrs r0, r6 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08297E54 + ldr r1, [r2] + ldr r5, _08297E3C + adds r0, r1, r5 + bics r0, r1 + ldr r4, _08297E40 + b _08297E4E + .align 2, 0 +_08297E3C: .4byte 0xFEFEFEFF +_08297E40: .4byte 0x80808080 +_08297E44: + ldm r2!, {r0} + stm r3!, {r0} + ldr r1, [r2] + adds r0, r1, r5 + bics r0, r1 +_08297E4E: + ands r0, r4 + cmp r0, #0 + beq _08297E44 +_08297E54: + ldrb r0, [r2] + strb r0, [r3] + lsls r0, r0, #0x18 + adds r2, #1 + adds r3, #1 + cmp r0, #0 + bne _08297E54 + adds r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end strcpy + + thumb_func_start vsprintf +vsprintf: @ 0x08297E68 + push {r4, r5, lr} + sub sp, #0x58 + mov r4, sp + movs r5, #0 + movs r3, #0x82 + lsls r3, r3, #2 + strh r3, [r4, #0xc] + str r0, [sp] + str r0, [sp, #0x10] + ldr r0, _08297E94 + str r0, [sp, #8] + str r0, [sp, #0x14] + ldr r0, _08297E98 + ldr r0, [r0] + str r0, [sp, #0x54] + mov r0, sp + bl vfprintf + ldr r1, [sp] + strb r5, [r1] + add sp, #0x58 + pop {r4, r5, pc} + .align 2, 0 +_08297E94: .4byte 0x7FFFFFFF +_08297E98: .4byte gUnknown_203CF1C + thumb_func_end vsprintf + + thumb_func_start sub_08297E9C +sub_08297E9C: @ 0x08297E9C + push {r4, lr} + adds r4, r1, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _08297EB4 + adds r1, r4, #0 + bl __sfvwrite + movs r1, #0 + str r1, [r4, #8] + str r1, [r4, #4] + b _08297EB8 +_08297EB4: + str r1, [r4, #4] + movs r0, #0 +_08297EB8: + pop {r4, pc} + .align 2, 0 + thumb_func_end sub_08297E9C + + thumb_func_start sub_08297EBC +sub_08297EBC: @ 0x08297EBC + push {r4, r5, lr} + ldr r4, _08297F2C + add sp, r4 + adds r5, r0, #0 + ldr r0, [r5, #0x54] + str r0, [sp, #0x54] + mov r3, sp + movs r0, #3 + rsbs r0, r0, #0 + ldrh r4, [r5, #0xc] + ands r0, r4 + movs r4, #0 + strh r0, [r3, #0xc] + ldrh r0, [r5, #0xe] + strh r0, [r3, #0xe] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x24] + str r0, [sp, #0x24] + add r0, sp, #0x58 + str r0, [sp] + str r0, [sp, #0x10] + movs r0, #0x80 + lsls r0, r0, #3 + str r0, [sp, #8] + str r0, [sp, #0x14] + str r4, [sp, #0x18] + mov r0, sp + bl vfprintf + adds r4, r0, #0 + cmp r4, #0 + blt _08297F0C + mov r0, sp + bl fflush + cmp r0, #0 + beq _08297F0C + movs r4, #1 + rsbs r4, r4, #0 +_08297F0C: + mov r1, sp + movs r0, #0x40 + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0 + beq _08297F20 + movs r0, #0x40 + ldrh r1, [r5, #0xc] + orrs r0, r1 + strh r0, [r5, #0xc] +_08297F20: + adds r0, r4, #0 + movs r3, #0x8b + lsls r3, r3, #3 + add sp, r3 + pop {r4, r5, pc} + .align 2, 0 +_08297F2C: .4byte 0xFFFFFBA8 + thumb_func_end sub_08297EBC + + thumb_func_start vfprintf +vfprintf: @ 0x08297F30 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldr r0, [r4, #0x54] + adds r1, r4, #0 + adds r2, r5, #0 + bl _vfprintf_r + pop {r4, r5, pc} + thumb_func_end vfprintf + + thumb_func_start _vfprintf_r +_vfprintf_r: @ 0x08297F44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _08297FAC + add sp, r4 + str r0, [sp, #0x1dc] + str r1, [sp, #0x1e0] + adds r4, r2, #0 + mov sl, r3 + bl localeconv + ldr r0, [r0] + str r0, [sp, #0x1f8] + movs r1, #0 + add r0, sp, #0x1d0 + str r1, [r0] + ldr r1, [sp, #0x1e0] + ldr r0, [r1, #0x54] + cmp r0, #0 + bne _08297F76 + ldr r0, _08297FB0 + ldr r0, [r0] + str r0, [r1, #0x54] +_08297F76: + ldr r2, [sp, #0x1e0] + ldr r1, [r2, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08297F86 + adds r0, r1, #0 + bl __sinit +_08297F86: + movs r0, #8 + ldr r1, [sp, #0x1e0] + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0 + beq _08297F9A + ldr r2, [sp, #0x1e0] + ldr r0, [r2, #0x10] + cmp r0, #0 + bne _08297FB4 +_08297F9A: + ldr r0, [sp, #0x1e0] + bl __swsetup + cmp r0, #0 + beq _08297FB4 + movs r0, #1 + rsbs r0, r0, #0 + bl _08298E94 + .align 2, 0 +_08297FAC: .4byte 0xFFFFFDE0 +_08297FB0: .4byte gUnknown_203CF1C +_08297FB4: + movs r0, #0x1a + ldr r1, [sp, #0x1e0] + ldrh r1, [r1, #0xc] + ands r0, r1 + cmp r0, #0xa + bne _08297FD8 + ldr r2, [sp, #0x1e0] + movs r1, #0xe + ldrsh r0, [r2, r1] + cmp r0, #0 + blt _08297FD8 + adds r0, r2, #0 + adds r1, r4, #0 + mov r2, sl + bl sub_08297EBC + bl _08298E94 +_08297FD8: + str r4, [sp, #0x1e4] + add r1, sp, #0x1c + add r5, sp, #0x28 + str r5, [sp, #0x1c] + movs r0, #0 + str r0, [r1, #8] + str r0, [r1, #4] + movs r2, #0 + str r2, [sp, #0x1f0] + mov sb, r1 + movs r4, #0xe6 + lsls r4, r4, #1 + add r4, sp + str r4, [sp, #0x214] + movs r0, #0xe8 + lsls r0, r0, #1 + add r0, sp + str r0, [sp, #0x218] +_08297FFC: + ldr r1, [sp, #0x1e4] + mov r8, r1 +_08298000: + ldr r0, _082980AC + ldr r0, [r0] + ldr r1, _082980B0 + ldr r3, [r1] + ldr r2, [sp, #0x218] + str r2, [sp] + ldr r1, [sp, #0x214] + ldr r2, [sp, #0x1e4] + bl _mbtowc_r + adds r4, r0, #0 + cmp r4, #0 + ble _0829802E + ldr r0, [sp, #0x1e4] + adds r0, r0, r4 + str r0, [sp, #0x1e4] + add r0, sp, #0x1cc + ldr r0, [r0] + cmp r0, #0x25 + bne _08298000 + ldr r1, [sp, #0x1e4] + subs r1, #1 + str r1, [sp, #0x1e4] +_0829802E: + ldr r2, [sp, #0x1e4] + mov r0, r8 + subs r6, r2, r0 + cmp r6, #0 + beq _08298066 + str r0, [r5] + str r6, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r6 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298060 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _0829805E + bl _08298E80 +_0829805E: + add r5, sp, #0x28 +_08298060: + ldr r2, [sp, #0x1f0] + adds r2, r2, r6 + str r2, [sp, #0x1f0] +_08298066: + cmp r4, #0 + bgt _0829806E + bl _08298E68 +_0829806E: + ldr r4, [sp, #0x1e4] + adds r4, #1 + str r4, [sp, #0x1e4] + movs r0, #0 + str r0, [sp, #0x1ec] + movs r1, #0 + str r1, [sp, #0x208] + movs r2, #0 + str r2, [sp, #0x1f4] + movs r6, #1 + rsbs r6, r6, #0 + ldr r0, _082980B4 + add r0, sp + strb r2, [r0] +_0829808A: + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + str r0, [sp, #0x1e8] + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] +_08298096: + ldr r0, [sp, #0x1e8] + subs r0, #0x20 + cmp r0, #0x58 + bls _082980A0 + b _08298752 +_082980A0: + lsls r0, r0, #2 + ldr r1, _082980B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_082980AC: .4byte gUnknown_203CF1C +_082980B0: .4byte gUnknown_203CF20 +_082980B4: .4byte 0x000001C9 +_082980B8: .4byte _082980BC +_082980BC: @ jump table + .4byte _08298220 @ case 0 + .4byte _08298752 @ case 1 + .4byte _08298752 @ case 2 + .4byte _08298238 @ case 3 + .4byte _08298752 @ case 4 + .4byte _08298752 @ case 5 + .4byte _08298752 @ case 6 + .4byte _08298752 @ case 7 + .4byte _08298752 @ case 8 + .4byte _08298752 @ case 9 + .4byte _0829823C @ case 10 + .4byte _08298256 @ case 11 + .4byte _08298752 @ case 12 + .4byte _08298252 @ case 13 + .4byte _08298264 @ case 14 + .4byte _08298752 @ case 15 + .4byte _082982C4 @ case 16 + .4byte _082982C8 @ case 17 + .4byte _082982C8 @ case 18 + .4byte _082982C8 @ case 19 + .4byte _082982C8 @ case 20 + .4byte _082982C8 @ case 21 + .4byte _082982C8 @ case 22 + .4byte _082982C8 @ case 23 + .4byte _082982C8 @ case 24 + .4byte _082982C8 @ case 25 + .4byte _08298752 @ case 26 + .4byte _08298752 @ case 27 + .4byte _08298752 @ case 28 + .4byte _08298752 @ case 29 + .4byte _08298752 @ case 30 + .4byte _08298752 @ case 31 + .4byte _08298752 @ case 32 + .4byte _08298752 @ case 33 + .4byte _08298752 @ case 34 + .4byte _08298752 @ case 35 + .4byte _08298332 @ case 36 + .4byte _08298384 @ case 37 + .4byte _08298752 @ case 38 + .4byte _08298384 @ case 39 + .4byte _08298752 @ case 40 + .4byte _08298752 @ case 41 + .4byte _08298752 @ case 42 + .4byte _08298752 @ case 43 + .4byte _082982EC @ case 44 + .4byte _08298752 @ case 45 + .4byte _08298752 @ case 46 + .4byte _0829853A @ case 47 + .4byte _08298752 @ case 48 + .4byte _08298752 @ case 49 + .4byte _08298752 @ case 50 + .4byte _08298752 @ case 51 + .4byte _08298752 @ case 52 + .4byte _082985D2 @ case 53 + .4byte _08298752 @ case 54 + .4byte _08298752 @ case 55 + .4byte _0829860E @ case 56 + .4byte _08298752 @ case 57 + .4byte _08298752 @ case 58 + .4byte _08298752 @ case 59 + .4byte _08298752 @ case 60 + .4byte _08298752 @ case 61 + .4byte _08298752 @ case 62 + .4byte _08298752 @ case 63 + .4byte _08298752 @ case 64 + .4byte _08298752 @ case 65 + .4byte _08298752 @ case 66 + .4byte _08298320 @ case 67 + .4byte _0829833A @ case 68 + .4byte _08298384 @ case 69 + .4byte _08298384 @ case 70 + .4byte _08298384 @ case 71 + .4byte _082982F0 @ case 72 + .4byte _0829833A @ case 73 + .4byte _08298752 @ case 74 + .4byte _08298752 @ case 75 + .4byte _082982F4 @ case 76 + .4byte _08298752 @ case 77 + .4byte _082984F4 @ case 78 + .4byte _08298542 @ case 79 + .4byte _08298570 @ case 80 + .4byte _08298316 @ case 81 + .4byte _08298752 @ case 82 + .4byte _08298590 @ case 83 + .4byte _08298752 @ case 84 + .4byte _082985DA @ case 85 + .4byte _08298752 @ case 86 + .4byte _08298752 @ case 87 + .4byte _08298618 @ case 88 +_08298220: + ldr r1, _08298234 + add r1, sp + ldrb r0, [r1] + cmp r0, #0 + beq _0829822C + b _0829808A +_0829822C: + movs r0, #0x20 + strb r0, [r1] + b _0829808A + .align 2, 0 +_08298234: .4byte 0x000001C9 +_08298238: + movs r0, #1 + b _08298304 +_0829823C: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + str r0, [sp, #0x1f4] + cmp r0, #0 + blt _0829824E + b _0829808A +_0829824E: + rsbs r0, r0, #0 + str r0, [sp, #0x1f4] +_08298252: + movs r0, #4 + b _08298318 +_08298256: + ldr r1, _08298260 + add r1, sp + movs r0, #0x2b + strb r0, [r1] + b _0829808A + .align 2, 0 +_08298260: .4byte 0x000001C9 +_08298264: + ldr r2, [sp, #0x1e4] + ldrb r2, [r2] + str r2, [sp, #0x1e8] + ldr r4, [sp, #0x1e4] + adds r4, #1 + str r4, [sp, #0x1e4] + cmp r2, #0x2a + bne _0829828E + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r4, [r0] + adds r6, r4, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + blt _0829828A + b _0829808A +_0829828A: + adds r6, r0, #0 + b _0829808A +_0829828E: + movs r4, #0 + ldr r0, [sp, #0x1e8] + b _082982AE +_08298294: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + subs r0, #0x30 + ldr r1, [sp, #0x1e8] + adds r4, r0, r1 + ldr r2, [sp, #0x1e4] + ldrb r2, [r2] + str r2, [sp, #0x1e8] + ldr r0, [sp, #0x1e4] + adds r0, #1 + str r0, [sp, #0x1e4] + adds r0, r2, #0 +_082982AE: + subs r0, #0x30 + cmp r0, #9 + bls _08298294 + adds r6, r4, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + blt _082982C0 + b _08298096 +_082982C0: + adds r6, r0, #0 + b _08298096 +_082982C4: + movs r0, #0x80 + b _08298318 +_082982C8: + movs r4, #0 +_082982CA: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + subs r0, #0x30 + ldr r2, [sp, #0x1e8] + adds r4, r0, r2 + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + str r0, [sp, #0x1e8] + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] + subs r0, #0x30 + cmp r0, #9 + bls _082982CA + str r4, [sp, #0x1f4] + b _08298096 +_082982EC: + movs r0, #8 + b _08298304 +_082982F0: + movs r0, #0x40 + b _0829830E +_082982F4: + ldr r0, [sp, #0x1e4] + ldrb r0, [r0] + cmp r0, #0x6c + bne _0829830C + ldr r1, [sp, #0x1e4] + adds r1, #1 + str r1, [sp, #0x1e4] + movs r0, #0x20 +_08298304: + ldr r2, [sp, #0x1ec] + orrs r2, r0 + str r2, [sp, #0x1ec] + b _0829808A +_0829830C: + movs r0, #0x10 +_0829830E: + ldr r4, [sp, #0x1ec] + orrs r4, r0 + str r4, [sp, #0x1ec] + b _0829808A +_08298316: + movs r0, #0x20 +_08298318: + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] + b _0829808A +_08298320: + add r2, sp, #0x68 + mov r8, r2 + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + strb r0, [r2] + b _08298760 +_08298332: + movs r0, #0x10 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] +_0829833A: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _0829834A + movs r4, #4 + add sl, r4 + b _08298366 +_0829834A: + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298362 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + movs r1, #0 + ldrsh r4, [r0, r1] + b _0829836C +_08298362: + movs r2, #4 + add sl, r2 +_08298366: + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829836C: + cmp r4, #0 + bge _0829837A + rsbs r4, r4, #0 + ldr r1, _08298380 + add r1, sp + movs r0, #0x2d + strb r0, [r1] +_0829837A: + movs r2, #1 + b _08298666 + .align 2, 0 +_08298380: .4byte 0x000001C9 +_08298384: + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + bne _08298390 + movs r6, #6 + b _082983A0 +_08298390: + ldr r4, [sp, #0x1e8] + cmp r4, #0x67 + beq _0829839A + cmp r4, #0x47 + bne _082983A0 +_0829839A: + cmp r6, #0 + bne _082983A0 + movs r6, #1 +_082983A0: + movs r0, #8 + ldr r1, [sp, #0x1ec] + ands r0, r1 + movs r2, #8 + add sl, r2 + mov r0, sl + subs r0, #8 + ldr r1, [r0] + ldr r2, [r0, #4] + str r1, [sp, #0x1fc] + str r2, [sp, #0x200] + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl isinf + cmp r0, #0 + beq _082983F4 + ldr r3, _082983E8 + ldr r2, _082983E4 + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __ltdf2 + cmp r0, #0 + bge _082983DA + ldr r1, _082983EC + add r1, sp + movs r0, #0x2d + strb r0, [r1] +_082983DA: + ldr r2, _082983F0 + mov r8, r2 + movs r3, #3 + b _0829876A + .align 2, 0 +_082983E4: .4byte 0x00000000 +_082983E8: .4byte 0x00000000 +_082983EC: .4byte 0x000001C9 +_082983F0: .4byte gUnknown_890F17C +_082983F4: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl isnan + cmp r0, #0 + beq _0829840C + ldr r4, _08298408 + mov r8, r4 + movs r3, #3 + b _0829876A + .align 2, 0 +_08298408: .4byte gUnknown_890F180 +_0829840C: + movs r0, #0x80 + lsls r0, r0, #1 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] + str r1, [sp] + add r0, sp, #0x1c8 + str r0, [sp, #4] + add r0, sp, #0x1d4 + str r0, [sp, #8] + ldr r2, [sp, #0x1e8] + str r2, [sp, #0xc] + add r0, sp, #0x1d8 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1dc] + ldr r1, [sp, #0x1fc] + ldr r2, [sp, #0x200] + adds r3, r6, #0 + bl sub_08298EA4 + mov r8, r0 + ldr r4, [sp, #0x1e8] + cmp r4, #0x67 + beq _08298440 + cmp r4, #0x47 + bne _08298462 +_08298440: + add r0, sp, #0x1d4 + ldr r1, [r0] + movs r0, #4 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08298450 + cmp r1, r6 + ble _0829845E +_08298450: + movs r0, #0x45 + ldr r1, [sp, #0x1e8] + cmp r1, #0x67 + bne _0829845A + movs r0, #0x65 +_0829845A: + str r0, [sp, #0x1e8] + b _08298462 +_0829845E: + movs r2, #0x67 + str r2, [sp, #0x1e8] +_08298462: + ldr r4, [sp, #0x1e8] + cmp r4, #0x65 + bgt _08298488 + add r0, sp, #0x1d4 + ldr r1, [r0] + subs r1, #1 + str r1, [r0] + add r0, sp, #0x14 + ldr r2, [sp, #0x1e8] + bl sub_08298F98 + str r0, [sp, #0x204] + add r0, sp, #0x1d8 + ldr r0, [r0] + ldr r1, [sp, #0x204] + adds r3, r1, r0 + cmp r0, #1 + bgt _082984C8 + b _082984BE +_08298488: + ldr r4, [sp, #0x1e8] + cmp r4, #0x66 + bne _082984B0 + add r0, sp, #0x1d4 + ldr r0, [r0] + cmp r0, #0 + ble _082984AC + adds r3, r0, #0 + cmp r6, #0 + bne _082984A6 + movs r0, #1 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _082984D8 +_082984A6: + adds r0, r3, #1 + adds r3, r0, r6 + b _082984D8 +_082984AC: + adds r3, r6, #2 + b _082984D8 +_082984B0: + add r0, sp, #0x1d4 + ldr r1, [r0] + add r0, sp, #0x1d8 + ldr r0, [r0] + cmp r1, r0 + blt _082984CC + adds r3, r1, #0 +_082984BE: + movs r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _082984D8 +_082984C8: + adds r3, #1 + b _082984D8 +_082984CC: + cmp r1, #0 + bgt _082984D6 + adds r0, #2 + subs r3, r0, r1 + b _082984D8 +_082984D6: + adds r3, r0, #1 +_082984D8: + add r0, sp, #0x1c8 + ldrb r0, [r0] + adds r7, r5, #0 + adds r7, #8 + cmp r0, #0 + bne _082984E6 + b _0829876E +_082984E6: + ldr r1, _082984F0 + add r1, sp + movs r0, #0x2d + strb r0, [r1] + b _0829876E + .align 2, 0 +_082984F0: .4byte 0x000001C9 +_082984F4: + movs r0, #0x10 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + beq _0829850E + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + ldr r1, [sp, #0x1f0] + str r1, [r0] + b _08297FFC +_0829850E: + movs r0, #0x40 + ldr r2, [sp, #0x1ec] + ands r2, r0 + cmp r2, #0 + beq _0829852A + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + add r1, sp, #0x1f0 + ldrh r1, [r1] + strh r1, [r0] + b _08297FFC +_0829852A: + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + ldr r4, [sp, #0x1f0] + str r4, [r0] + b _08297FFC +_0829853A: + movs r0, #0x10 + ldr r1, [sp, #0x1ec] + orrs r1, r0 + str r1, [sp, #0x1ec] +_08298542: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _08298562 + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298562 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829856C +_08298562: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829856C: + movs r2, #0 + b _0829865E +_08298570: + movs r0, #4 + add sl, r0 + mov r0, sl + subs r0, #4 + ldr r4, [r0] + movs r2, #2 + ldr r1, _0829858C + str r1, [sp, #0x210] + ldr r0, [sp, #0x1ec] + orrs r0, r2 + str r0, [sp, #0x1ec] + movs r1, #0x78 + str r1, [sp, #0x1e8] + b _0829865E + .align 2, 0 +_0829858C: .4byte gUnknown_890F184 +_08298590: + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldr r0, [r0] + mov r8, r0 + cmp r0, #0 + bne _082985A4 + ldr r4, _082985C4 + mov r8, r4 +_082985A4: + cmp r6, #0 + blt _082985C8 + mov r0, r8 + movs r1, #0 + adds r2, r6, #0 + bl memchr + cmp r0, #0 + beq _082985C0 + mov r1, r8 + subs r3, r0, r1 + cmp r3, r6 + bgt _082985C0 + b _08298762 +_082985C0: + adds r3, r6, #0 + b _08298762 + .align 2, 0 +_082985C4: .4byte gUnknown_890F198 +_082985C8: + mov r0, r8 + bl strlen + adds r3, r0, #0 + b _08298762 +_082985D2: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + orrs r2, r0 + str r2, [sp, #0x1ec] +_082985DA: + movs r0, #0x10 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + beq _082985EA + movs r0, #4 + add sl, r0 + b _08298604 +_082985EA: + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298600 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829860A +_08298600: + movs r4, #4 + add sl, r4 +_08298604: + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829860A: + movs r2, #1 + b _0829865E +_0829860E: + ldr r0, _08298614 + str r0, [sp, #0x210] + b _0829861C + .align 2, 0 +_08298614: .4byte gUnknown_890F1A0 +_08298618: + ldr r1, _0829863C + str r1, [sp, #0x210] +_0829861C: + movs r0, #0x10 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _08298640 + movs r0, #0x40 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298640 + movs r2, #4 + add sl, r2 + mov r0, sl + subs r0, #4 + ldrh r4, [r0] + b _0829864A + .align 2, 0 +_0829863C: .4byte gUnknown_890F184 +_08298640: + movs r4, #4 + add sl, r4 + mov r0, sl + subs r0, #4 + ldr r4, [r0] +_0829864A: + movs r2, #2 + movs r0, #1 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _0829865E + cmp r4, #0 + beq _0829865E + orrs r1, r2 + str r1, [sp, #0x1ec] +_0829865E: + ldr r1, _082986A8 + add r1, sp + movs r0, #0 + strb r0, [r1] +_08298666: + str r6, [sp, #0x208] + cmp r6, #0 + blt _08298676 + movs r0, #0x81 + rsbs r0, r0, #0 + ldr r1, [sp, #0x1ec] + ands r1, r0 + str r1, [sp, #0x1ec] +_08298676: + movs r0, #0xe2 + lsls r0, r0, #1 + add r0, sp + mov r8, r0 + cmp r4, #0 + bne _0829868C + adds r7, r5, #0 + adds r7, #8 + ldr r1, [sp, #0x208] + cmp r1, #0 + beq _08298744 +_0829868C: + cmp r2, #1 + beq _082986EA + cmp r2, #1 + blo _082986B0 + cmp r2, #2 + beq _08298724 + ldr r2, _082986AC + mov r8, r2 + mov r0, r8 + bl strlen + adds r3, r0, #0 + b _0829876A + .align 2, 0 +_082986A8: .4byte 0x000001C9 +_082986AC: .4byte gUnknown_890F1B4 +_082986B0: + adds r7, r5, #0 + adds r7, #8 + movs r2, #7 +_082986B6: + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + adds r0, r4, #0 + ands r0, r2 + adds r1, r0, #0 + adds r1, #0x30 + mov r0, r8 + strb r1, [r0] + lsrs r4, r4, #3 + cmp r4, #0 + bne _082986B6 + movs r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _08298744 + cmp r1, #0x30 + beq _08298744 + movs r4, #1 + rsbs r4, r4, #0 + add r8, r4 + movs r0, #0x30 + mov r1, r8 + strb r0, [r1] + b _08298744 +_082986EA: + adds r7, r5, #0 + adds r7, #8 + cmp r4, #9 + bls _08298714 +_082986F2: + movs r2, #1 + rsbs r2, r2, #0 + add r8, r2 + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0x30 + mov r1, r8 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r4, r0, #0 + cmp r4, #9 + bhi _082986F2 +_08298714: + movs r2, #1 + rsbs r2, r2, #0 + add r8, r2 + adds r0, r4, #0 + adds r0, #0x30 + mov r4, r8 + strb r0, [r4] + b _08298744 +_08298724: + adds r7, r5, #0 + adds r7, #8 + movs r1, #0xf +_0829872A: + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + adds r0, r4, #0 + ands r0, r1 + ldr r2, [sp, #0x210] + adds r0, r2, r0 + ldrb r0, [r0] + mov r2, r8 + strb r0, [r2] + lsrs r4, r4, #4 + cmp r4, #0 + bne _0829872A +_08298744: + add r4, sp, #0x14 + mov r1, r8 + subs r0, r4, r1 + movs r2, #0xd8 + lsls r2, r2, #1 + adds r3, r0, r2 + b _0829876E +_08298752: + ldr r4, [sp, #0x1e8] + cmp r4, #0 + bne _0829875A + b _08298E68 +_0829875A: + add r0, sp, #0x68 + mov r8, r0 + strb r4, [r0] +_08298760: + movs r3, #1 +_08298762: + ldr r1, _0829878C + add r1, sp + movs r0, #0 + strb r0, [r1] +_0829876A: + adds r7, r5, #0 + adds r7, #8 +_0829876E: + str r3, [sp, #0x20c] + ldr r2, [sp, #0x208] + cmp r3, r2 + bge _08298778 + str r2, [sp, #0x20c] +_08298778: + ldr r0, _0829878C + add r0, sp + ldrb r0, [r0] + cmp r0, #0 + beq _08298790 + ldr r4, [sp, #0x20c] + adds r4, #1 + str r4, [sp, #0x20c] + b _082987A0 + .align 2, 0 +_0829878C: .4byte 0x000001C9 +_08298790: + movs r0, #2 + ldr r1, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _082987A0 + ldr r2, [sp, #0x20c] + adds r2, #2 + str r2, [sp, #0x20c] +_082987A0: + movs r0, #0x84 + ldr r4, [sp, #0x1ec] + ands r0, r4 + cmp r0, #0 + bne _08298820 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298820 + ldr r1, _0829884C + cmp r4, #0x10 + ble _082987F4 + mov r6, sb +_082987BC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, r7, #0 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _082987EA + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _082987E6 + b _08298E80 +_082987E6: + add r5, sp, #0x28 + ldr r1, _0829884C +_082987EA: + subs r4, #0x10 + adds r7, r5, #0 + adds r7, #8 + cmp r4, #0x10 + bgt _082987BC +_082987F4: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + adds r5, r7, #0 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298820 + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829881E + b _08298E80 +_0829881E: + add r5, sp, #0x28 +_08298820: + ldr r1, _08298850 + add r1, sp + ldrb r0, [r1] + cmp r0, #0 + beq _08298854 + str r1, [r5] + movs r0, #1 + str r0, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298894 + ldr r0, [sp, #0x1e0] + mov r1, sb + b _08298884 + .align 2, 0 +_0829884C: .4byte gUnknown_890F15C +_08298850: .4byte 0x000001C9 +_08298854: + movs r2, #2 + ldr r0, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + beq _08298894 + add r1, sp, #0x1c4 + movs r0, #0x30 + strb r0, [r1] + add r0, sp, #0x1e8 + ldrb r0, [r0] + strb r0, [r1, #1] + str r1, [r5] + str r2, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298894 + ldr r0, [sp, #0x1e0] +_08298884: + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _08298892 + b _08298E80 +_08298892: + add r5, sp, #0x28 +_08298894: + movs r0, #0x84 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0x80 + bne _08298910 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298910 + ldr r1, _082989AC + cmp r4, #0x10 + ble _082988E4 + mov r6, sb +_082988B0: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _082988DE + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _082988DA + b _08298E80 +_082988DA: + add r5, sp, #0x28 + ldr r1, _082989AC +_082988DE: + subs r4, #0x10 + cmp r4, #0x10 + bgt _082988B0 +_082988E4: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298910 + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829890E + b _08298E80 +_0829890E: + add r5, sp, #0x28 +_08298910: + ldr r0, [sp, #0x208] + subs r4, r0, r3 + cmp r4, #0 + ble _0829897E + ldr r1, _082989AC + cmp r4, #0x10 + ble _08298954 + mov r6, sb +_08298920: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _0829894E + ldr r0, [sp, #0x1e0] + mov r1, sb + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829894A + b _08298E80 +_0829894A: + add r5, sp, #0x28 + ldr r1, _082989AC +_0829894E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298920 +_08298954: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _0829897E + ldr r0, [sp, #0x1e0] + str r3, [sp, #0x21c] + bl sub_08297E9C + ldr r3, [sp, #0x21c] + cmp r0, #0 + beq _0829897C + b _08298E80 +_0829897C: + add r5, sp, #0x28 +_0829897E: + movs r0, #0x80 + lsls r0, r0, #1 + ldr r2, [sp, #0x1ec] + ands r0, r2 + cmp r0, #0 + bne _082989B0 + mov r4, r8 + str r4, [r5] + str r3, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r3 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + bgt _082989A6 + b _08298DC6 +_082989A6: + ldr r0, [sp, #0x1e0] + b _08298DBC + .align 2, 0 +_082989AC: .4byte gUnknown_890F16C +_082989B0: + ldr r2, [sp, #0x1e8] + cmp r2, #0x65 + bgt _082989B8 + b _08298C9C +_082989B8: + ldr r3, _08298A84 + ldr r2, _08298A80 + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __eqdf2 + cmp r0, #0 + bne _08298A90 + ldr r0, _08298A88 + str r0, [r5] + movs r6, #1 + str r6, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _082989F4 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _082989F2 + b _08298E80 +_082989F2: + add r5, sp, #0x28 +_082989F4: + add r0, sp, #0x1d4 + ldr r1, [r0] + add r4, sp, #0x1d8 + ldr r0, [r4] + cmp r1, r0 + blt _08298A0A + ldr r0, [sp, #0x1ec] + ands r0, r6 + cmp r0, #0 + bne _08298A0A + b _08298DC6 +_08298A0A: + ldr r0, [sp, #0x1f8] + str r0, [r5] + str r6, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298A32 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298A30 + b _08298E80 +_08298A30: + add r5, sp, #0x28 +_08298A32: + ldr r0, [r4] + subs r4, r0, #1 + cmp r4, #0 + bgt _08298A3C + b _08298DC6 +_08298A3C: + ldr r1, _08298A8C + cmp r4, #0x10 + ble _08298A74 + mov r6, sb +_08298A44: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298A6E + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298A6A + b _08298E80 +_08298A6A: + add r5, sp, #0x28 + ldr r1, _08298A8C +_08298A6E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298A44 +_08298A74: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + b _08298DAA + .align 2, 0 +_08298A80: .4byte 0x00000000 +_08298A84: .4byte 0x00000000 +_08298A88: .4byte gUnknown_890F1D0 +_08298A8C: .4byte gUnknown_890F16C +_08298A90: + add r6, sp, #0x1d4 + ldr r2, [r6] + cmp r2, #0 + bgt _08298B78 + ldr r0, _08298B70 + str r0, [r5] + movs r4, #1 + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298AC2 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298AC0 + b _08298E80 +_08298AC0: + add r5, sp, #0x28 +_08298AC2: + ldr r2, [sp, #0x1f8] + str r2, [r5] + str r4, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298AEC + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298AEA + b _08298E80 +_08298AEA: + add r5, sp, #0x28 +_08298AEC: + ldr r0, [r6] + rsbs r4, r0, #0 + cmp r4, #0 + ble _08298B52 + ldr r1, _08298B74 + cmp r4, #0x10 + ble _08298B2C + mov r6, sb +_08298AFC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298B26 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298B22 + b _08298E80 +_08298B22: + add r5, sp, #0x28 + ldr r1, _08298B74 +_08298B26: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298AFC +_08298B2C: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298B52 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298B50 + b _08298E80 +_08298B50: + add r5, sp, #0x28 +_08298B52: + mov r2, r8 + str r2, [r5] + add r0, sp, #0x1d8 + ldr r1, [r0] + str r1, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, r0, r1 + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + b _08298DB4 + .align 2, 0 +_08298B70: .4byte gUnknown_890F1D0 +_08298B74: .4byte gUnknown_890F16C +_08298B78: + add r4, sp, #0x1d8 + ldr r1, [r4] + cmp r2, r1 + blt _08298C34 + mov r0, r8 + str r0, [r5] + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r1 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298BAA + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298BA8 + b _08298E80 +_08298BA8: + add r5, sp, #0x28 +_08298BAA: + ldr r1, [r6] + ldr r0, [r4] + subs r4, r1, r0 + cmp r4, #0 + ble _08298C12 + ldr r1, _08298C2C + cmp r4, #0x10 + ble _08298BEC + mov r6, sb +_08298BBC: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298BE6 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298BE2 + b _08298E80 +_08298BE2: + add r5, sp, #0x28 + ldr r1, _08298C2C +_08298BE6: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298BBC +_08298BEC: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298C12 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298C10 + b _08298E80 +_08298C10: + add r5, sp, #0x28 +_08298C12: + movs r1, #1 + ldr r0, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + bne _08298C1E + b _08298DC6 +_08298C1E: + ldr r0, _08298C30 + str r0, [r5] + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, #1 + b _08298DAA + .align 2, 0 +_08298C2C: .4byte gUnknown_890F16C +_08298C30: .4byte gUnknown_890F1D4 +_08298C34: + mov r0, r8 + str r0, [r5] + str r2, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298C5C + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298C5A + b _08298E80 +_08298C5A: + add r5, sp, #0x28 +_08298C5C: + ldr r0, [r6] + add r8, r0 + ldr r0, _08298C98 + str r0, [r5] + movs r0, #1 + str r0, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, #1 + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298C8C + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298C8A + b _08298E80 +_08298C8A: + add r5, sp, #0x28 +_08298C8C: + mov r0, r8 + str r0, [r5] + ldr r1, [r4] + ldr r0, [r6] + subs r1, r1, r0 + b _08298DA2 + .align 2, 0 +_08298C98: .4byte gUnknown_890F1D4 +_08298C9C: + add r4, sp, #0x1d8 + ldr r0, [r4] + cmp r0, #1 + bgt _08298CAE + movs r1, #1 + ldr r0, [sp, #0x1ec] + ands r0, r1 + cmp r0, #0 + beq _08298D74 +_08298CAE: + add r1, sp, #0x1c4 + mov r2, r8 + ldrb r0, [r2] + strb r0, [r1] + movs r0, #1 + add r8, r0 + movs r0, #0x2e + strb r0, [r1, #1] + str r1, [r5] + movs r0, #2 + str r0, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, #2 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298CE6 + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + beq _08298CE4 + b _08298E80 +_08298CE4: + add r5, sp, #0x28 +_08298CE6: + ldr r3, _08298D10 + ldr r2, _08298D0C + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x200] + bl __nedf2 + cmp r0, #0 + beq _08298D14 + mov r2, r8 + str r2, [r5] + ldr r1, [r4] + subs r0, r1, #1 + str r0, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + subs r0, #1 + adds r0, r0, r1 + b _08298D80 + .align 2, 0 +_08298D0C: .4byte 0x00000000 +_08298D10: .4byte 0x00000000 +_08298D14: + ldr r0, [r4] + subs r4, r0, #1 + cmp r4, #0 + ble _08298D9C + ldr r1, _08298D70 + cmp r4, #0x10 + ble _08298D54 + mov r6, sb +_08298D24: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298D4E + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + beq _08298D4A + b _08298E80 +_08298D4A: + add r5, sp, #0x28 + ldr r1, _08298D70 +_08298D4E: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298D24 +_08298D54: + str r1, [r5] + str r4, [r5, #4] + mov r1, sb + ldr r0, [r1, #8] + adds r0, r0, r4 + str r0, [r1, #8] + adds r5, #8 + ldr r0, [r1, #4] + adds r0, #1 + str r0, [r1, #4] + cmp r0, #7 + ble _08298D9C + ldr r0, [sp, #0x1e0] + b _08298D92 + .align 2, 0 +_08298D70: .4byte gUnknown_890F16C +_08298D74: + mov r2, r8 + str r2, [r5] + str r1, [r5, #4] + mov r4, sb + ldr r0, [r4, #8] + adds r0, #1 +_08298D80: + str r0, [r4, #8] + adds r5, #8 + ldr r0, [r4, #4] + adds r0, #1 + str r0, [r4, #4] + cmp r0, #7 + ble _08298D9C + ldr r0, [sp, #0x1e0] + mov r1, sb +_08298D92: + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 +_08298D9C: + add r0, sp, #0x14 + str r0, [r5] + ldr r1, [sp, #0x204] +_08298DA2: + str r1, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r1 +_08298DAA: + str r0, [r2, #8] + adds r5, #8 + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] +_08298DB4: + cmp r0, #7 + ble _08298DC6 + ldr r0, [sp, #0x1e0] + mov r1, sb +_08298DBC: + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 +_08298DC6: + movs r0, #4 + ldr r4, [sp, #0x1ec] + ands r4, r0 + cmp r4, #0 + beq _08298E32 + ldr r0, [sp, #0x1f4] + ldr r1, [sp, #0x20c] + subs r4, r0, r1 + cmp r4, #0 + ble _08298E32 + ldr r1, _08298E64 + cmp r4, #0x10 + ble _08298E10 + mov r6, sb +_08298DE2: + str r1, [r5] + movs r0, #0x10 + str r0, [r5, #4] + ldr r0, [r6, #8] + adds r0, #0x10 + str r0, [r6, #8] + adds r5, #8 + ldr r0, [r6, #4] + adds r0, #1 + str r0, [r6, #4] + cmp r0, #7 + ble _08298E0A + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 + add r5, sp, #0x28 + ldr r1, _08298E64 +_08298E0A: + subs r4, #0x10 + cmp r4, #0x10 + bgt _08298DE2 +_08298E10: + str r1, [r5] + str r4, [r5, #4] + mov r2, sb + ldr r0, [r2, #8] + adds r0, r0, r4 + str r0, [r2, #8] + ldr r0, [r2, #4] + adds r0, #1 + str r0, [r2, #4] + cmp r0, #7 + ble _08298E32 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E32: + ldr r0, [sp, #0x20c] + ldr r4, [sp, #0x1f4] + cmp r0, r4 + bge _08298E3C + adds r0, r4, #0 +_08298E3C: + ldr r1, [sp, #0x1f0] + adds r1, r1, r0 + str r1, [sp, #0x1f0] + mov r2, sb + ldr r0, [r2, #8] + cmp r0, #0 + beq _08298E56 + ldr r0, [sp, #0x1e0] + mov r1, sb + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E56: + movs r0, #0 + mov r4, sb + str r0, [r4, #4] + add r5, sp, #0x28 + bl _08297FFC + .align 2, 0 +_08298E64: .4byte gUnknown_890F15C +_08298E68: + mov r1, sb + ldr r0, [r1, #8] + cmp r0, #0 + beq _08298E7A + ldr r0, [sp, #0x1e0] + bl sub_08297E9C + cmp r0, #0 + bne _08298E80 +_08298E7A: + movs r0, #0 + mov r1, sb + str r0, [r1, #4] +_08298E80: + movs r0, #0x40 + ldr r2, [sp, #0x1e0] + ldrh r2, [r2, #0xc] + ands r0, r2 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, #0 + bne _08298E92 + ldr r1, [sp, #0x1f0] +_08298E92: + adds r0, r1, #0 +_08298E94: + movs r3, #0x88 + lsls r3, r3, #2 + add sp, r3 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end _vfprintf_r + + thumb_func_start sub_08298EA4 +sub_08298EA4: @ 0x08298EA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + str r0, [sp, #0x18] + adds r5, r2, #0 + adds r4, r1, #0 + mov r8, r3 + ldr r6, [sp, #0x3c] + ldr r0, [sp, #0x44] + mov sl, r0 + ldr r1, [sp, #0x48] + mov sb, r1 + cmp r1, #0x66 + bne _08298ECA + movs r7, #3 + b _08298EDA +_08298ECA: + mov r0, sb + cmp r0, #0x65 + beq _08298ED4 + cmp r0, #0x45 + bne _08298ED8 +_08298ED4: + movs r1, #1 + add r8, r1 +_08298ED8: + movs r7, #2 +_08298EDA: + lsls r0, r4, #0x1f + lsrs r0, r0, #0x1f + cmp r0, #0 + beq _08298EF0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __negdf2 + adds r5, r1, #0 + adds r4, r0, #0 + movs r0, #0x2d +_08298EF0: + ldr r1, [sp, #0x40] + strb r0, [r1] + mov r0, r8 + str r0, [sp] + mov r1, sl + str r1, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + adds r2, r5, #0 + adds r1, r4, #0 + adds r3, r7, #0 + bl _dtoa_r + adds r7, r0, #0 + mov r1, sb + cmp r1, #0x67 + beq _08298F1C + cmp r1, #0x47 + bne _08298F24 +_08298F1C: + movs r0, #1 + ands r6, r0 + cmp r6, #0 + beq _08298F78 +_08298F24: + mov r0, r8 + adds r6, r7, r0 + mov r1, sb + cmp r1, #0x66 + bne _08298F54 + ldrb r0, [r7] + cmp r0, #0x30 + bne _08298F4E + ldr r3, _08298F94 + ldr r2, _08298F90 + adds r1, r5, #0 + adds r0, r4, #0 + bl __nedf2 + cmp r0, #0 + beq _08298F4E + mov r1, r8 + rsbs r0, r1, #0 + adds r0, #1 + mov r1, sl + str r0, [r1] +_08298F4E: + mov r1, sl + ldr r0, [r1] + adds r6, r6, r0 +_08298F54: + ldr r3, _08298F94 + ldr r2, _08298F90 + adds r1, r5, #0 + adds r0, r4, #0 + bl __eqdf2 + cmp r0, #0 + bne _08298F66 + str r6, [sp, #0x14] +_08298F66: + ldr r0, [sp, #0x14] + cmp r0, r6 + bhs _08298F78 + movs r1, #0x30 +_08298F6E: + strb r1, [r0] + adds r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + blo _08298F6E +_08298F78: + ldr r0, [sp, #0x14] + subs r0, r0, r7 + ldr r1, [sp, #0x4c] + str r0, [r1] + adds r0, r7, #0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08298F90: .4byte 0x00000000 +_08298F94: .4byte 0x00000000 + thumb_func_end sub_08298EA4 + + thumb_func_start sub_08298F98 +sub_08298F98: @ 0x08298F98 + push {r4, r5, r6, r7, lr} + sub sp, #0x134 + adds r7, r0, #0 + adds r6, r1, #0 + strb r2, [r7] + adds r5, r7, #1 + cmp r6, #0 + bge _08298FAE + rsbs r6, r6, #0 + movs r0, #0x2d + b _08298FB0 +_08298FAE: + movs r0, #0x2b +_08298FB0: + strb r0, [r7, #1] + adds r5, #1 + add r4, sp, #0x134 + cmp r6, #9 + ble _08298FF2 +_08298FBA: + subs r4, #1 + adds r0, r6, #0 + movs r1, #0xa + bl __modsi3 + adds r0, #0x30 + strb r0, [r4] + adds r0, r6, #0 + movs r1, #0xa + bl __divsi3 + adds r6, r0, #0 + cmp r6, #9 + bgt _08298FBA + subs r4, #1 + adds r0, #0x30 + strb r0, [r4] + add r0, sp, #0x134 + cmp r4, r0 + bhs _08299000 + adds r1, r0, #0 +_08298FE4: + ldrb r0, [r4] + strb r0, [r5] + adds r4, #1 + adds r5, #1 + cmp r4, r1 + blo _08298FE4 + b _08299000 +_08298FF2: + movs r0, #0x30 + strb r0, [r5] + adds r5, #1 + adds r0, r6, #0 + adds r0, #0x30 + strb r0, [r5] + adds r5, #1 +_08299000: + subs r0, r5, r7 + add sp, #0x134 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end sub_08298F98 + + thumb_func_start __swsetup +__swsetup: @ 0x08299008 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08299018 + ldr r0, _08299044 + ldr r0, [r0] + str r0, [r4, #0x54] +_08299018: + ldr r1, [r4, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08299026 + adds r0, r1, #0 + bl __sinit +_08299026: + ldrh r1, [r4, #0xc] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + cmp r5, #0 + bne _08299080 + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08299048 + movs r0, #1 + rsbs r0, r0, #0 + b _082990B2 + .align 2, 0 +_08299044: .4byte gUnknown_203CF1C +_08299048: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08299078 + ldr r1, [r4, #0x30] + cmp r1, #0 + beq _08299066 + adds r0, r4, #0 + adds r0, #0x40 + cmp r1, r0 + beq _08299064 + ldr r0, [r4, #0x54] + bl _free_r +_08299064: + str r5, [r4, #0x30] +_08299066: + movs r0, #0x25 + rsbs r0, r0, #0 + ldrh r1, [r4, #0xc] + ands r0, r1 + movs r1, #0 + strh r0, [r4, #0xc] + str r1, [r4, #4] + ldr r0, [r4, #0x10] + str r0, [r4] +_08299078: + movs r0, #8 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] +_08299080: + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _0829908C + adds r0, r4, #0 + bl __smakebuf +_0829908C: + ldrh r1, [r4, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _082990A2 + movs r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + rsbs r0, r0, #0 + str r0, [r4, #0x18] + b _082990B0 +_082990A2: + movs r0, #2 + ands r0, r1 + movs r1, #0 + cmp r0, #0 + bne _082990AE + ldr r1, [r4, #0x14] +_082990AE: + str r1, [r4, #8] +_082990B0: + movs r0, #0 +_082990B2: + pop {r4, r5, pc} + thumb_func_end __swsetup + + thumb_func_start sub_082990B4 +sub_082990B4: @ 0x082990B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + ldr r7, [r1, #0x10] + ldr r0, [r0, #0x10] + cmp r0, r7 + bge _082990D0 + movs r0, #0 + b _08299204 +_082990D0: + ldr r0, [sp, #4] + adds r0, #0x14 + mov r8, r0 + subs r7, #1 + lsls r0, r7, #2 + mov r1, r8 + adds r1, r1, r0 + str r1, [sp, #0xc] + ldr r4, [sp] + adds r4, #0x14 + adds r5, r4, r0 + ldr r1, [r1] + adds r1, #1 + ldr r2, [r5] + mov sl, r2 + mov r0, sl + bl __udivsi3 + str r0, [sp, #8] + mov r3, r8 + str r3, [sp, #0x14] + str r4, [sp, #0x10] + cmp r0, #0 + beq _0829917A + movs r6, #0 + mov sb, r6 + ldr r0, _08299164 + mov ip, r0 +_08299108: + mov r2, r8 + adds r2, #4 + mov r8, r2 + subs r2, #4 + ldm r2!, {r1} + adds r0, r1, #0 + mov r3, ip + ands r0, r3 + ldr r2, [sp, #8] + muls r0, r2, r0 + mov r3, sb + adds r2, r0, r3 + lsrs r0, r1, #0x10 + ldr r3, [sp, #8] + adds r1, r0, #0 + muls r1, r3, r1 + lsrs r0, r2, #0x10 + adds r3, r1, r0 + lsrs r0, r3, #0x10 + mov sb, r0 + ldr r0, [r4] + mov r1, ip + ands r0, r1 + ands r2, r1 + subs r0, r0, r2 + adds r2, r0, r6 + asrs r6, r2, #0x10 + ldr r0, [r4] + lsrs r1, r0, #0x10 + mov r0, ip + ands r3, r0 + subs r1, r1, r3 + adds r0, r1, r6 + asrs r6, r0, #0x10 + strh r0, [r4] + strh r2, [r4, #2] + adds r4, #4 + ldr r1, [sp, #0xc] + cmp r8, r1 + bls _08299108 + mov r2, sl + cmp r2, #0 + bne _0829917A + ldr r4, [sp, #0x10] + b _0829916A + .align 2, 0 +_08299164: .4byte 0x0000FFFF +_08299168: + subs r7, #1 +_0829916A: + subs r5, #4 + cmp r5, r4 + bls _08299176 + ldr r0, [r5] + cmp r0, #0 + beq _08299168 +_08299176: + ldr r3, [sp] + str r7, [r3, #0x10] +_0829917A: + ldr r0, [sp] + ldr r1, [sp, #4] + bl __mcmp + cmp r0, #0 + blt _08299202 + ldr r0, [sp, #8] + adds r0, #1 + str r0, [sp, #8] + movs r6, #0 + mov sb, r6 + ldr r4, [sp, #0x10] + ldr r1, [sp, #0x14] + mov r8, r1 + lsls r2, r7, #2 + mov sl, r2 + ldr r5, _082991EC +_0829919C: + mov r3, r8 + adds r3, #4 + mov r8, r3 + subs r3, #4 + ldm r3!, {r1} + adds r0, r1, #0 + ands r0, r5 + mov r3, sb + adds r2, r0, r3 + lsrs r1, r1, #0x10 + lsrs r0, r2, #0x10 + adds r3, r1, r0 + lsrs r0, r3, #0x10 + mov sb, r0 + ldr r1, [r4] + adds r0, r1, #0 + ands r0, r5 + ands r2, r5 + subs r0, r0, r2 + adds r2, r0, r6 + asrs r6, r2, #0x10 + lsrs r1, r1, #0x10 + ands r3, r5 + subs r1, r1, r3 + adds r0, r1, r6 + asrs r6, r0, #0x10 + strh r0, [r4] + strh r2, [r4, #2] + adds r4, #4 + ldr r1, [sp, #0xc] + cmp r8, r1 + bls _0829919C + ldr r4, [sp, #0x10] + mov r2, sl + adds r5, r4, r2 + ldr r0, [r5] + cmp r0, #0 + bne _08299202 + b _082991F2 + .align 2, 0 +_082991EC: .4byte 0x0000FFFF +_082991F0: + subs r7, #1 +_082991F2: + subs r5, #4 + cmp r5, r4 + bls _082991FE + ldr r0, [r5] + cmp r0, #0 + beq _082991F0 +_082991FE: + ldr r3, [sp] + str r7, [r3, #0x10] +_08299202: + ldr r0, [sp, #8] +_08299204: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end sub_082990B4 + + thumb_func_start _dtoa_r +_dtoa_r: @ 0x08299210 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x84 + mov sl, r0 + str r3, [sp, #0xc] + ldr r4, [sp, #0xac] + str r1, [sp, #0x40] + str r2, [sp, #0x44] + ldr r2, [r0, #0x40] + cmp r2, #0 + beq _08299248 + ldr r0, [r0, #0x44] + str r0, [r2, #4] + mov r0, sl + ldr r1, [r0, #0x44] + movs r0, #1 + lsls r0, r1 + str r0, [r2, #8] + mov r0, sl + adds r1, r2, #0 + bl _Bfree + movs r0, #0 + mov r1, sl + str r0, [r1, #0x40] +_08299248: + movs r0, #0x80 + lsls r0, r0, #0x18 + ldr r1, [sp, #0x40] + ands r0, r1 + cmp r0, #0 + beq _08299264 + movs r0, #1 + str r0, [r4] + ldr r0, _08299260 + ands r1, r0 + str r1, [sp, #0x40] + b _08299266 + .align 2, 0 +_08299260: .4byte 0x7FFFFFFF +_08299264: + str r0, [r4] +_08299266: + ldr r1, _082992A8 + ldr r2, [sp, #0x40] + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + bne _082992BC + ldr r0, _082992AC + ldr r3, [sp, #0xa8] + str r0, [r3] + ldr r0, _082992B0 + mov sb, r0 + ldr r1, [sp, #0x44] + cmp r1, #0 + bne _0829928E + ldr r0, _082992B4 + ands r2, r0 + cmp r2, #0 + bne _0829928E + ldr r2, _082992B8 + mov sb, r2 +_0829928E: + ldr r3, [sp, #0xb0] + cmp r3, #0 + beq _082992E0 + mov r1, sb + ldrb r0, [r1, #3] + adds r1, #3 + cmp r0, #0 + beq _082992A0 + adds r1, #5 +_082992A0: + ldr r2, [sp, #0xb0] + str r1, [r2] + b _082992E0 + .align 2, 0 +_082992A8: .4byte 0x7FF00000 +_082992AC: .4byte 0x0000270F +_082992B0: .4byte gUnknown_890F1E4 +_082992B4: .4byte 0x000FFFFF +_082992B8: .4byte gUnknown_890F1D8 +_082992BC: + ldr r3, _082992EC + ldr r2, _082992E8 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __eqdf2 + cmp r0, #0 + bne _082992F4 + movs r0, #1 + ldr r3, [sp, #0xa8] + str r0, [r3] + ldr r0, _082992F0 + mov sb, r0 + ldr r1, [sp, #0xb0] + cmp r1, #0 + beq _082992E0 + adds r0, #1 + str r0, [r1] +_082992E0: + mov r0, sb + bl _08299EFA + .align 2, 0 +_082992E8: .4byte 0x00000000 +_082992EC: .4byte 0x00000000 +_082992F0: .4byte gUnknown_890F1E8 +_082992F4: + add r0, sp, #8 + str r0, [sp] + mov r0, sl + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + add r3, sp, #4 + bl _d2b + str r0, [sp, #0x5c] + ldr r2, [sp, #0x40] + lsls r0, r2, #1 + lsrs r0, r0, #0x15 + mov r8, r0 + cmp r0, #0 + beq _08299344 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r0, _08299338 + ldr r1, [sp, #0x48] + ands r1, r0 + str r1, [sp, #0x48] + ldr r0, _0829933C + adds r2, r1, #0 + orrs r2, r0 + str r2, [sp, #0x48] + ldr r3, _08299340 + add r8, r3 + movs r0, #0 + str r0, [sp, #0x58] + ldr r6, [sp, #8] + b _082993A4 + .align 2, 0 +_08299338: .4byte 0x000FFFFF +_0829933C: .4byte 0x3FF00000 +_08299340: .4byte 0xFFFFFC01 +_08299344: + ldr r1, [sp, #8] + ldr r0, [sp, #4] + adds r2, r1, r0 + ldr r3, _0829936C + adds r3, r3, r2 + mov r8, r3 + adds r6, r1, #0 + cmp r3, #0x20 + ble _08299374 + movs r0, #0x40 + subs r0, r0, r3 + ldr r4, [sp, #0x40] + lsls r4, r0 + ldr r1, _08299370 + adds r0, r2, r1 + ldr r2, [sp, #0x44] + lsrs r2, r0 + adds r0, r2, #0 + orrs r4, r0 + b _0829937E + .align 2, 0 +_0829936C: .4byte 0x00000432 +_08299370: .4byte 0x00000412 +_08299374: + movs r0, #0x20 + mov r3, r8 + subs r0, r0, r3 + ldr r4, [sp, #0x44] + lsls r4, r0 +_0829937E: + adds r0, r4, #0 + bl __floatsidf + cmp r4, #0 + bge _08299390 + ldr r3, _08299454 + ldr r2, _08299450 + bl __adddf3 +_08299390: + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r1, _08299458 + ldr r0, [sp, #0x48] + adds r1, r0, r1 + str r1, [sp, #0x48] + ldr r2, _0829945C + add r8, r2 + movs r3, #1 + str r3, [sp, #0x58] +_082993A4: + ldr r2, _08299460 + ldr r3, _08299464 + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x4c] + bl __subdf3 + ldr r2, _08299468 + ldr r3, _0829946C + bl __muldf3 + ldr r2, _08299470 + ldr r3, _08299474 + bl __adddf3 + adds r5, r1, #0 + adds r4, r0, #0 + mov r0, r8 + bl __floatsidf + ldr r2, _08299478 + ldr r3, _0829947C + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __adddf3 + str r0, [sp, #0x6c] + str r1, [sp, #0x70] + bl __fixdfsi + str r0, [sp, #0x24] + ldr r2, _08299480 + ldr r3, _08299484 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __ltdf2 + cmp r0, #0 + bge _08299414 + ldr r0, [sp, #0x24] + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __nedf2 + cmp r0, #0 + beq _08299414 + ldr r0, [sp, #0x24] + subs r0, #1 + str r0, [sp, #0x24] +_08299414: + movs r1, #1 + str r1, [sp, #0x2c] + ldr r2, [sp, #0x24] + cmp r2, #0x16 + bhi _0829943E + ldr r1, _08299488 + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r2, [r0] + ldr r3, [r0, #4] + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ltdf2 + cmp r0, #0 + bge _0829943A + ldr r3, [sp, #0x24] + subs r3, #1 + str r3, [sp, #0x24] +_0829943A: + movs r0, #0 + str r0, [sp, #0x2c] +_0829943E: + mov r1, r8 + subs r0, r6, r1 + subs r4, r0, #1 + cmp r4, #0 + blt _0829948C + movs r2, #0 + str r2, [sp, #0x10] + str r4, [sp, #0x34] + b _08299494 + .align 2, 0 +_08299450: .4byte 0x41F00000 +_08299454: .4byte 0x00000000 +_08299458: .4byte 0xFE100000 +_0829945C: .4byte 0xFFFFFBCD +_08299460: .4byte 0x3FF80000 +_08299464: .4byte 0x00000000 +_08299468: .4byte 0x3FD287A7 +_0829946C: .4byte 0x636F4361 +_08299470: .4byte 0x3FC68A28 +_08299474: .4byte 0x8B60C8B3 +_08299478: .4byte 0x3FD34413 +_0829947C: .4byte 0x509F79FB +_08299480: .4byte 0x00000000 +_08299484: .4byte 0x00000000 +_08299488: .4byte gUnknown_890F234 +_0829948C: + rsbs r4, r4, #0 + str r4, [sp, #0x10] + movs r3, #0 + str r3, [sp, #0x34] +_08299494: + ldr r0, [sp, #0x24] + cmp r0, #0 + blt _082994A8 + movs r1, #0 + str r1, [sp, #0x14] + str r0, [sp, #0x38] + ldr r2, [sp, #0x34] + adds r2, r2, r0 + str r2, [sp, #0x34] + b _082994B8 +_082994A8: + ldr r3, [sp, #0x10] + ldr r0, [sp, #0x24] + subs r3, r3, r0 + str r3, [sp, #0x10] + rsbs r1, r0, #0 + str r1, [sp, #0x14] + movs r2, #0 + str r2, [sp, #0x38] +_082994B8: + ldr r3, [sp, #0xc] + cmp r3, #9 + bls _082994C2 + movs r0, #0 + str r0, [sp, #0xc] +_082994C2: + movs r5, #1 + ldr r1, [sp, #0xc] + cmp r1, #5 + ble _082994D0 + subs r1, #4 + str r1, [sp, #0xc] + movs r5, #0 +_082994D0: + movs r2, #1 + str r2, [sp, #0x30] + ldr r3, [sp, #0xc] + cmp r3, #5 + bhi _0829954A + lsls r0, r3, #2 + ldr r1, _082994E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_082994E4: .4byte _082994E8 +_082994E8: @ jump table + .4byte _08299500 @ case 0 + .4byte _08299500 @ case 1 + .4byte _08299512 @ case 2 + .4byte _0829952E @ case 3 + .4byte _08299516 @ case 4 + .4byte _08299532 @ case 5 +_08299500: + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x20] + movs r1, #0x12 + mov r8, r1 + movs r2, #0 + str r2, [sp, #0xa4] + b _0829954A +_08299512: + movs r3, #0 + str r3, [sp, #0x30] +_08299516: + ldr r0, [sp, #0xa4] + cmp r0, #0 + bgt _08299520 + movs r1, #1 + str r1, [sp, #0xa4] +_08299520: + ldr r2, [sp, #0xa4] + mov r8, r2 + mov r3, r8 + str r3, [sp, #0x20] + mov r0, r8 + str r0, [sp, #0x18] + b _0829954A +_0829952E: + movs r1, #0 + str r1, [sp, #0x30] +_08299532: + ldr r2, [sp, #0xa4] + ldr r3, [sp, #0x24] + adds r0, r2, r3 + adds r1, r0, #1 + mov r8, r1 + mov r2, r8 + str r2, [sp, #0x18] + str r0, [sp, #0x20] + cmp r1, #0 + bgt _0829954A + movs r3, #1 + mov r8, r3 +_0829954A: + movs r4, #4 + movs r0, #0 + mov r1, sl + str r0, [r1, #0x44] + mov r2, r8 + cmp r2, #0x17 + bls _0829956A + movs r1, #0 +_0829955A: + adds r1, #1 + lsls r4, r4, #1 + adds r0, r4, #0 + adds r0, #0x14 + cmp r0, r8 + bls _0829955A + mov r3, sl + str r1, [r3, #0x44] +_0829956A: + mov r0, sl + ldr r1, [r0, #0x44] + bl _Balloc + mov r1, sl + str r0, [r1, #0x40] + str r0, [sp, #0x74] + mov sb, r0 + ldr r2, [sp, #0x18] + cmp r2, #0xe + bls _08299582 + b _082998F4 +_08299582: + cmp r5, #0 + bne _08299588 + b _082998F4 +_08299588: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + str r0, [sp, #0x78] + str r1, [sp, #0x7c] + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + ldr r1, [sp, #0x24] + str r1, [sp, #0x28] + str r2, [sp, #0x1c] + movs r7, #2 + cmp r1, #0 + ble _08299618 + ldr r0, _08299610 + movs r2, #0xf + ands r1, r2 + lsls r1, r1, #3 + adds r3, r1, r0 + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [sp, #0x6c] + str r1, [sp, #0x70] + ldr r1, [sp, #0x24] + asrs r4, r1, #4 + movs r0, #0x10 + ands r0, r4 + cmp r0, #0 + beq _082995D4 + ands r4, r2 + ldr r0, _08299614 + ldr r2, [r0, #0x20] + ldr r3, [r0, #0x24] + ldr r0, [sp, #0x78] + ldr r1, [sp, #0x7c] + bl __divdf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + movs r7, #3 +_082995D4: + cmp r4, #0 + beq _082995FC + ldr r5, _08299614 +_082995DA: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _082995F4 + adds r7, #1 + ldr r2, [r5] + ldr r3, [r5, #4] + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __muldf3 + str r0, [sp, #0x6c] + str r1, [sp, #0x70] +_082995F4: + asrs r4, r4, #1 + adds r5, #8 + cmp r4, #0 + bne _082995DA +_082995FC: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __divdf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + b _08299664 + .align 2, 0 +_08299610: .4byte gUnknown_890F234 +_08299614: .4byte gUnknown_890F2FC +_08299618: + ldr r2, [sp, #0x24] + rsbs r6, r2, #0 + cmp r6, #0 + beq _08299664 + ldr r1, _0829970C + movs r0, #0xf + ands r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [sp, #0x78] + ldr r3, [sp, #0x7c] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + asrs r4, r6, #4 + cmp r4, #0 + beq _08299664 + ldr r5, _08299710 +_08299642: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0829965C + adds r7, #1 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_0829965C: + asrs r4, r4, #1 + adds r5, #8 + cmp r4, #0 + bne _08299642 +_08299664: + ldr r3, [sp, #0x2c] + cmp r3, #0 + beq _082996A2 + ldr r2, _08299714 + ldr r3, _08299718 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ltdf2 + cmp r0, #0 + bge _082996A2 + ldr r0, [sp, #0x18] + cmp r0, #0 + ble _082996A2 + ldr r1, [sp, #0x20] + cmp r1, #0 + bgt _08299688 + b _082998E0 +_08299688: + str r1, [sp, #0x18] + ldr r2, [sp, #0x24] + subs r2, #1 + str r2, [sp, #0x24] + ldr r0, _0829971C + ldr r1, _08299720 + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + adds r7, #1 +_082996A2: + adds r0, r7, #0 + bl __floatsidf + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + bl __muldf3 + ldr r2, _08299724 + ldr r3, _08299728 + bl __adddf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + ldr r0, _0829972C + ldr r3, [sp, #0x50] + adds r0, r3, r0 + str r0, [sp, #0x50] + ldr r1, [sp, #0x18] + cmp r1, #0 + bne _08299738 + movs r2, #0 + str r2, [sp, #0x64] + movs r3, #0 + str r3, [sp, #0x68] + ldr r2, _08299730 + ldr r3, _08299734 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __gtdf2 + cmp r0, #0 + ble _082996F0 + b _08299C6A +_082996F0: + ldr r0, [sp, #0x50] + ldr r1, [sp, #0x54] + bl __negdf2 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __ltdf2 + cmp r0, #0 + bge _0829970A + b _08299C62 +_0829970A: + b _082998E0 + .align 2, 0 +_0829970C: .4byte gUnknown_890F234 +_08299710: .4byte gUnknown_890F2FC +_08299714: .4byte 0x3FF00000 +_08299718: .4byte 0x00000000 +_0829971C: .4byte 0x40240000 +_08299720: .4byte 0x00000000 +_08299724: .4byte 0x401C0000 +_08299728: .4byte 0x00000000 +_0829972C: .4byte 0xFCC00000 +_08299730: .4byte 0x40140000 +_08299734: .4byte 0x00000000 +_08299738: + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _08299808 + ldr r1, _08299768 + ldr r0, [sp, #0x18] + subs r0, #1 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, [r0] + ldr r3, [r0, #4] + ldr r0, _0829976C + ldr r1, _08299770 + bl __divdf3 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __subdf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + movs r1, #0 + mov r8, r1 + b _08299794 + .align 2, 0 +_08299768: .4byte gUnknown_890F234 +_0829976C: .4byte 0x3FE00000 +_08299770: .4byte 0x00000000 +_08299774: + ldr r1, _082997FC + ldr r0, _082997F8 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __muldf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + ldr r1, _082997FC + ldr r0, _082997F8 + adds r3, r5, #0 + adds r2, r4, #0 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_08299794: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r2, sb + strb r0, [r2] + movs r3, #1 + add sb, r3 + adds r1, r5, #0 + adds r0, r4, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __ltdf2 + cmp r0, #0 + bge _082997D0 + b _08299EDA +_082997D0: + ldr r0, _08299800 + ldr r1, _08299804 + adds r3, r5, #0 + adds r2, r4, #0 + bl __subdf3 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __ltdf2 + cmp r0, #0 + bge _082997EA + b _082999F4 +_082997EA: + movs r0, #1 + add r8, r0 + ldr r1, [sp, #0x18] + cmp r8, r1 + blt _08299774 + b _082998E0 + .align 2, 0 +_082997F8: .4byte 0x40240000 +_082997FC: .4byte 0x00000000 +_08299800: .4byte 0x3FF00000 +_08299804: .4byte 0x00000000 +_08299808: + ldr r1, _08299828 + ldr r0, [sp, #0x18] + subs r0, #1 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __muldf3 + str r0, [sp, #0x50] + str r1, [sp, #0x54] + movs r2, #1 + mov r8, r2 + b _08299840 + .align 2, 0 +_08299828: .4byte gUnknown_890F234 +_0829982C: + movs r3, #1 + add r8, r3 + ldr r1, _082998D4 + ldr r0, _082998D0 + adds r3, r5, #0 + adds r2, r4, #0 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] +_08299840: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r5, r1, #0 + adds r4, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x18] + cmp r8, r3 + bne _0829982C + ldr r6, _082998D8 + ldr r7, _082998DC + adds r1, r7, #0 + adds r0, r6, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __adddf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __gtdf2 + cmp r0, #0 + ble _08299892 + b _082999F4 +_08299892: + adds r1, r7, #0 + adds r0, r6, #0 + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x54] + bl __subdf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r1, r5, #0 + adds r0, r4, #0 + bl __ltdf2 + cmp r0, #0 + bge _082998E0 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x30 + beq _082998BE + b _08299A1A +_082998BE: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x30 + beq _082998BE + b _08299A1A + .align 2, 0 +_082998D0: .4byte 0x40240000 +_082998D4: .4byte 0x00000000 +_082998D8: .4byte 0x3FE00000 +_082998DC: .4byte 0x00000000 +_082998E0: + ldr r1, [sp, #0x74] + mov sb, r1 + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x4c] + str r2, [sp, #0x40] + str r3, [sp, #0x44] + ldr r3, [sp, #0x28] + str r3, [sp, #0x24] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x18] +_082998F4: + ldr r0, [sp, #4] + cmp r0, #0 + bge _082998FC + b _08299A30 +_082998FC: + ldr r1, [sp, #0x24] + cmp r1, #0xe + ble _08299904 + b _08299A30 +_08299904: + ldr r1, _08299950 + ldr r2, [sp, #0x24] + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r1, [r0] + ldr r2, [r0, #4] + str r1, [sp, #0x6c] + str r2, [sp, #0x70] + ldr r2, [sp, #0xa4] + cmp r2, #0 + bge _0829995C + ldr r3, [sp, #0x18] + cmp r3, #0 + bgt _0829995C + movs r0, #0 + str r0, [sp, #0x64] + movs r1, #0 + str r1, [sp, #0x68] + cmp r3, #0 + bge _0829992E + b _08299C62 +_0829992E: + ldr r2, _08299954 + ldr r3, _08299958 + ldr r0, [sp, #0x6c] + ldr r1, [sp, #0x70] + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __ledf2 + cmp r0, #0 + bgt _0829994C + b _08299C62 +_0829994C: + b _08299C6A + .align 2, 0 +_08299950: .4byte gUnknown_890F234 +_08299954: .4byte 0x40140000 +_08299958: .4byte 0x00000000 +_0829995C: + movs r2, #1 + mov r8, r2 + b _08299980 +_08299962: + ldr r1, _08299A24 + ldr r0, _08299A20 + bl __muldf3 + str r0, [sp, #0x40] + str r1, [sp, #0x44] + ldr r2, _08299A28 + ldr r3, _08299A2C + bl __eqdf2 + cmp r0, #0 + bne _0829997C + b _08299EDA +_0829997C: + movs r3, #1 + add r8, r3 +_08299980: + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __divdf3 + bl __fixdfsi + adds r6, r0, #0 + bl __floatsidf + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __muldf3 + adds r3, r1, #0 + adds r2, r0, #0 + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x44] + bl __subdf3 + adds r3, r1, #0 + adds r2, r0, #0 + adds r0, r6, #0 + adds r0, #0x30 + mov r1, sb + strb r0, [r1] + movs r0, #1 + add sb, r0 + ldr r1, [sp, #0x18] + cmp r8, r1 + bne _08299962 + adds r1, r3, #0 + adds r0, r2, #0 + bl __adddf3 + adds r5, r1, #0 + adds r4, r0, #0 + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __gtdf2 + cmp r0, #0 + bgt _082999F4 + adds r1, r5, #0 + adds r0, r4, #0 + ldr r2, [sp, #0x6c] + ldr r3, [sp, #0x70] + bl __eqdf2 + cmp r0, #0 + beq _082999EA + b _08299EDA +_082999EA: + movs r0, #1 + ands r0, r6 + cmp r0, #0 + bne _082999F4 + b _08299EDA +_082999F4: + movs r0, #0x30 +_082999F6: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x39 + bne _08299A12 + ldr r1, [sp, #0x74] + cmp sb, r1 + bne _082999F6 + ldr r2, [sp, #0x24] + adds r2, #1 + str r2, [sp, #0x24] + strb r0, [r1] +_08299A12: + mov r3, sb + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_08299A1A: + movs r0, #1 + add sb, r0 + b _08299EDA + .align 2, 0 +_08299A20: .4byte 0x40240000 +_08299A24: .4byte 0x00000000 +_08299A28: .4byte 0x00000000 +_08299A2C: .4byte 0x00000000 +_08299A30: + ldr r5, [sp, #0x10] + ldr r6, [sp, #0x14] + movs r1, #0 + str r1, [sp, #0x60] + movs r2, #0 + str r2, [sp, #0x64] + ldr r3, [sp, #0x30] + cmp r3, #0 + beq _08299AA6 + ldr r1, [sp, #0xc] + cmp r1, #1 + bgt _08299A64 + ldr r2, [sp, #0x58] + cmp r2, #0 + beq _08299A5C + ldr r3, _08299A58 + adds r3, r3, r0 + mov r8, r3 + b _08299A90 + .align 2, 0 +_08299A58: .4byte 0x00000433 +_08299A5C: + ldr r1, [sp, #8] + movs r0, #0x36 + subs r0, r0, r1 + b _08299A8E +_08299A64: + ldr r4, [sp, #0x18] + subs r4, #1 + ldr r0, [sp, #0x14] + cmp r0, r4 + blt _08299A72 + subs r6, r0, r4 + b _08299A82 +_08299A72: + ldr r1, [sp, #0x14] + subs r4, r4, r1 + ldr r2, [sp, #0x38] + adds r2, r2, r4 + str r2, [sp, #0x38] + adds r1, r1, r4 + str r1, [sp, #0x14] + movs r6, #0 +_08299A82: + ldr r3, [sp, #0x18] + mov r8, r3 + cmp r3, #0 + bge _08299A90 + subs r5, r5, r3 + movs r0, #0 +_08299A8E: + mov r8, r0 +_08299A90: + ldr r1, [sp, #0x10] + add r1, r8 + str r1, [sp, #0x10] + ldr r2, [sp, #0x34] + add r2, r8 + str r2, [sp, #0x34] + mov r0, sl + movs r1, #1 + bl _i2b + str r0, [sp, #0x64] +_08299AA6: + cmp r5, #0 + ble _08299AC8 + ldr r3, [sp, #0x34] + cmp r3, #0 + ble _08299AC8 + mov r8, r3 + cmp r8, r5 + ble _08299AB8 + mov r8, r5 +_08299AB8: + ldr r0, [sp, #0x10] + mov r1, r8 + subs r0, r0, r1 + str r0, [sp, #0x10] + subs r5, r5, r1 + ldr r2, [sp, #0x34] + subs r2, r2, r1 + str r2, [sp, #0x34] +_08299AC8: + ldr r3, [sp, #0x14] + cmp r3, #0 + ble _08299B16 + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _08299B0A + cmp r6, #0 + ble _08299AFA + mov r0, sl + ldr r1, [sp, #0x64] + adds r2, r6, #0 + bl _pow5mult + str r0, [sp, #0x64] + mov r0, sl + ldr r1, [sp, #0x64] + ldr r2, [sp, #0x5c] + bl _multiply + adds r4, r0, #0 + mov r0, sl + ldr r1, [sp, #0x5c] + bl _Bfree + str r4, [sp, #0x5c] +_08299AFA: + ldr r1, [sp, #0x14] + subs r4, r1, r6 + cmp r4, #0 + beq _08299B16 + mov r0, sl + ldr r1, [sp, #0x5c] + adds r2, r4, #0 + b _08299B10 +_08299B0A: + mov r0, sl + ldr r1, [sp, #0x5c] + ldr r2, [sp, #0x14] +_08299B10: + bl _pow5mult + str r0, [sp, #0x5c] +_08299B16: + mov r0, sl + movs r1, #1 + bl _i2b + str r0, [sp, #0x68] + ldr r2, [sp, #0x38] + cmp r2, #0 + ble _08299B30 + mov r0, sl + ldr r1, [sp, #0x68] + bl _pow5mult + str r0, [sp, #0x68] +_08299B30: + ldr r3, [sp, #0xc] + cmp r3, #1 + bgt _08299B6C + ldr r0, [sp, #0x44] + cmp r0, #0 + bne _08299B68 + ldr r0, _08299B60 + ldr r1, [sp, #0x40] + ands r0, r1 + cmp r0, #0 + bne _08299B68 + ldr r0, _08299B64 + ands r1, r0 + cmp r1, #0 + beq _08299B68 + ldr r1, [sp, #0x10] + adds r1, #1 + str r1, [sp, #0x10] + ldr r2, [sp, #0x34] + adds r2, #1 + str r2, [sp, #0x34] + movs r3, #1 + str r3, [sp, #0x3c] + b _08299B6C + .align 2, 0 +_08299B60: .4byte 0x000FFFFF +_08299B64: .4byte 0x7FF00000 +_08299B68: + movs r0, #0 + str r0, [sp, #0x3c] +_08299B6C: + ldr r1, [sp, #0x38] + cmp r1, #0 + beq _08299B98 + ldr r2, [sp, #0x68] + ldr r1, [r2, #0x10] + subs r1, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x14 + adds r0, r0, r1 + ldr r0, [r0] + bl _hi0bits + ldr r1, [sp, #0x34] + adds r1, #0x20 + subs r1, r1, r0 + mov r8, r1 + movs r0, #0x1f + mov r3, r8 + ands r3, r0 + mov r8, r3 + b _08299BA6 +_08299B98: + ldr r0, [sp, #0x34] + adds r0, #1 + mov r8, r0 + movs r0, #0x1f + mov r1, r8 + ands r1, r0 + mov r8, r1 +_08299BA6: + mov r2, r8 + cmp r2, #0 + beq _08299BB2 + movs r0, #0x20 + subs r2, r0, r2 + mov r8, r2 +_08299BB2: + mov r3, r8 + cmp r3, #4 + ble _08299BBE + movs r0, #4 + rsbs r0, r0, #0 + b _08299BC6 +_08299BBE: + mov r3, r8 + cmp r3, #3 + bgt _08299BD6 + movs r0, #0x1c +_08299BC6: + add r8, r0 + ldr r1, [sp, #0x10] + add r1, r8 + str r1, [sp, #0x10] + add r5, r8 + ldr r2, [sp, #0x34] + add r2, r8 + str r2, [sp, #0x34] +_08299BD6: + ldr r3, [sp, #0x10] + cmp r3, #0 + ble _08299BE8 + mov r0, sl + ldr r1, [sp, #0x5c] + adds r2, r3, #0 + bl _lshift + str r0, [sp, #0x5c] +_08299BE8: + ldr r0, [sp, #0x34] + cmp r0, #0 + ble _08299BFA + mov r0, sl + ldr r1, [sp, #0x68] + ldr r2, [sp, #0x34] + bl _lshift + str r0, [sp, #0x68] +_08299BFA: + ldr r1, [sp, #0x2c] + cmp r1, #0 + beq _08299C38 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + cmp r0, #0 + bge _08299C38 + ldr r2, [sp, #0x24] + subs r2, #1 + str r2, [sp, #0x24] + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + ldr r3, [sp, #0x30] + cmp r3, #0 + beq _08299C34 + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] +_08299C34: + ldr r0, [sp, #0x20] + str r0, [sp, #0x18] +_08299C38: + ldr r1, [sp, #0x18] + cmp r1, #0 + bgt _08299C7C + ldr r2, [sp, #0xc] + cmp r2, #2 + ble _08299C7C + cmp r1, #0 + blt _08299C62 + mov r0, sl + ldr r1, [sp, #0x68] + movs r2, #5 + movs r3, #0 + bl _multadd + str r0, [sp, #0x68] + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + cmp r0, #0 + bgt _08299C6A +_08299C62: + ldr r3, [sp, #0xa4] + mvns r3, r3 + str r3, [sp, #0x24] + b _08299EB2 +_08299C6A: + movs r0, #0x31 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x24] + adds r3, #1 + str r3, [sp, #0x24] + b _08299EB2 +_08299C7C: + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _08299C84 + b _08299DFA +_08299C84: + cmp r5, #0 + ble _08299C94 + mov r0, sl + ldr r1, [sp, #0x64] + adds r2, r5, #0 + bl _lshift + str r0, [sp, #0x64] +_08299C94: + ldr r1, [sp, #0x64] + str r1, [sp, #0x60] + ldr r2, [sp, #0x3c] + cmp r2, #0 + beq _08299CC6 + ldr r1, [r1, #4] + mov r0, sl + bl _Balloc + str r0, [sp, #0x64] + adds r0, #0xc + ldr r1, [sp, #0x60] + adds r1, #0xc + ldr r3, [sp, #0x60] + ldr r2, [r3, #0x10] + lsls r2, r2, #2 + adds r2, #8 + bl memcpy + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #1 + bl _lshift + str r0, [sp, #0x64] +_08299CC6: + movs r0, #1 + mov r8, r0 + mov r1, r8 + ldr r2, [sp, #0x44] + ands r2, r1 + str r2, [sp, #0x80] + b _08299D1C +_08299CD4: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + ldr r3, [sp, #0x60] + ldr r0, [sp, #0x64] + cmp r3, r0 + bne _08299CFC + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] + str r0, [sp, #0x60] + b _08299D18 +_08299CFC: + mov r0, sl + ldr r1, [sp, #0x60] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x60] + mov r0, sl + ldr r1, [sp, #0x64] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x64] +_08299D18: + movs r1, #1 + add r8, r1 +_08299D1C: + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl sub_082990B4 + adds r7, r0, #0 + adds r7, #0x30 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x60] + bl __mcmp + adds r4, r0, #0 + mov r0, sl + ldr r1, [sp, #0x68] + ldr r2, [sp, #0x64] + bl __mdiff + adds r5, r0, #0 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _08299D50 + ldr r0, [sp, #0x5c] + adds r1, r5, #0 + bl __mcmp + adds r6, r0, #0 + b _08299D52 +_08299D50: + movs r6, #1 +_08299D52: + mov r0, sl + adds r1, r5, #0 + bl _Bfree + cmp r6, #0 + bne _08299D7E + ldr r2, [sp, #0xc] + cmp r2, #0 + bne _08299D7E + ldr r3, [sp, #0x80] + cmp r3, #0 + bne _08299D7E + cmp r7, #0x39 + beq _08299DD0 + cmp r4, #0 + ble _08299D74 + adds r7, #1 +_08299D74: + mov r0, sb + strb r7, [r0] + movs r1, #1 + add sb, r1 + b _08299EB2 +_08299D7E: + cmp r4, #0 + blt _08299D92 + cmp r4, #0 + bne _08299DC8 + ldr r2, [sp, #0xc] + cmp r2, #0 + bne _08299DC8 + ldr r3, [sp, #0x80] + cmp r3, #0 + bne _08299DC8 +_08299D92: + cmp r6, #0 + ble _08299DC2 + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #1 + bl _lshift + str r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + adds r6, r0, #0 + cmp r6, #0 + bgt _08299DBC + cmp r6, #0 + bne _08299DC2 + adds r0, r7, #0 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08299DC2 +_08299DBC: + adds r7, #1 + cmp r7, #0x3a + beq _08299DD0 +_08299DC2: + mov r2, sb + strb r7, [r2] + b _08299E7A +_08299DC8: + cmp r6, #0 + ble _08299DE8 + cmp r7, #0x39 + bne _08299DDC +_08299DD0: + movs r0, #0x39 + mov r1, sb + strb r0, [r1] + movs r2, #1 + add sb, r2 + b _08299E50 +_08299DDC: + adds r0, r7, #1 + mov r3, sb + strb r0, [r3] + movs r0, #1 + add sb, r0 + b _08299EB2 +_08299DE8: + mov r1, sb + strb r7, [r1] + movs r2, #1 + add sb, r2 + ldr r3, [sp, #0x18] + cmp r8, r3 + beq _08299DF8 + b _08299CD4 +_08299DF8: + b _08299E2C +_08299DFA: + movs r0, #1 + mov r8, r0 + b _08299E12 +_08299E00: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #0xa + movs r3, #0 + bl _multadd + str r0, [sp, #0x5c] + movs r1, #1 + add r8, r1 +_08299E12: + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl sub_082990B4 + adds r7, r0, #0 + adds r7, #0x30 + mov r2, sb + strb r7, [r2] + movs r3, #1 + add sb, r3 + ldr r0, [sp, #0x18] + cmp r8, r0 + blt _08299E00 +_08299E2C: + mov r0, sl + ldr r1, [sp, #0x5c] + movs r2, #1 + bl _lshift + str r0, [sp, #0x5c] + ldr r1, [sp, #0x68] + bl __mcmp + adds r4, r0, #0 + cmp r4, #0 + bgt _08299E50 + cmp r4, #0 + bne _08299E92 + movs r0, #1 + ands r7, r0 + cmp r7, #0 + beq _08299E92 +_08299E50: + movs r1, #1 + rsbs r1, r1, #0 + add sb, r1 + mov r2, sb + ldrb r2, [r2] + cmp r2, #0x39 + bne _08299E72 +_08299E5E: + ldr r3, [sp, #0x74] + cmp sb, r3 + beq _08299E80 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x39 + beq _08299E5E +_08299E72: + mov r2, sb + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_08299E7A: + movs r3, #1 + add sb, r3 + b _08299EB2 +_08299E80: + ldr r0, [sp, #0x24] + adds r0, #1 + str r0, [sp, #0x24] + movs r0, #0x31 + ldr r1, [sp, #0x74] + strb r0, [r1] + adds r1, #1 + mov sb, r1 + b _08299EB2 +_08299E92: + movs r2, #1 + rsbs r2, r2, #0 + add sb, r2 + mov r3, sb + ldrb r3, [r3] + cmp r3, #0x30 + bne _08299EAE +_08299EA0: + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + ldrb r1, [r1] + cmp r1, #0x30 + beq _08299EA0 +_08299EAE: + movs r2, #1 + add sb, r2 +_08299EB2: + mov r0, sl + ldr r1, [sp, #0x68] + bl _Bfree + ldr r3, [sp, #0x64] + cmp r3, #0 + beq _08299EDA + ldr r0, [sp, #0x60] + cmp r0, #0 + beq _08299ED2 + cmp r0, r3 + beq _08299ED2 + mov r0, sl + ldr r1, [sp, #0x60] + bl _Bfree +_08299ED2: + mov r0, sl + ldr r1, [sp, #0x64] + bl _Bfree +_08299EDA: + mov r0, sl + ldr r1, [sp, #0x5c] + bl _Bfree + movs r0, #0 + mov r1, sb + strb r0, [r1] + ldr r0, [sp, #0x24] + adds r0, #1 + ldr r2, [sp, #0xa8] + str r0, [r2] + ldr r3, [sp, #0xb0] + cmp r3, #0 + beq _08299EF8 + str r1, [r3] +_08299EF8: + ldr r0, [sp, #0x74] +_08299EFA: + add sp, #0x84 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _dtoa_r + + thumb_func_start fflush +fflush: @ 0x08299F08 + push {r4, r5, r6, lr} + adds r4, r0, #0 + cmp r4, #0 + bne _08299F24 + ldr r0, _08299F1C + ldr r0, [r0] + ldr r1, _08299F20 + bl _fwalk + b _08299F9A + .align 2, 0 +_08299F1C: .4byte gUnknown_203CF1C +_08299F20: .4byte fflush +_08299F24: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08299F30 + ldr r0, _08299F64 + ldr r0, [r0] + str r0, [r4, #0x54] +_08299F30: + ldr r1, [r4, #0x54] + ldr r0, [r1, #0x38] + cmp r0, #0 + bne _08299F3E + adds r0, r1, #0 + bl __sinit +_08299F3E: + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08299F98 + ldr r6, [r4, #0x10] + cmp r6, #0 + beq _08299F98 + ldr r0, [r4] + subs r5, r0, r6 + str r6, [r4] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08299F76 + ldr r0, [r4, #0x14] + b _08299F78 + .align 2, 0 +_08299F64: .4byte gUnknown_203CF1C +_08299F68: + movs r0, #0x40 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + movs r0, #1 + rsbs r0, r0, #0 + b _08299F9A +_08299F76: + movs r0, #0 +_08299F78: + str r0, [r4, #8] + cmp r5, #0 + ble _08299F98 +_08299F7E: + ldr r0, [r4, #0x1c] + ldr r3, [r4, #0x24] + adds r1, r6, #0 + adds r2, r5, #0 + bl _call_via_r3 + adds r1, r0, #0 + cmp r1, #0 + ble _08299F68 + adds r6, r6, r1 + subs r5, r5, r1 + cmp r5, #0 + bgt _08299F7E +_08299F98: + movs r0, #0 +_08299F9A: + pop {r4, r5, r6, pc} + thumb_func_end fflush + + thumb_func_start sub_08299F9C +sub_08299F9C: @ 0x08299F9C + push {r4, lr} + movs r4, #0 + str r4, [r0] + str r4, [r0, #4] + str r4, [r0, #8] + strh r1, [r0, #0xc] + strh r2, [r0, #0xe] + str r4, [r0, #0x10] + str r4, [r0, #0x18] + str r0, [r0, #0x1c] + ldr r1, _08299FC4 + str r1, [r0, #0x20] + ldr r1, _08299FC8 + str r1, [r0, #0x24] + ldr r1, _08299FCC + str r1, [r0, #0x28] + ldr r1, _08299FD0 + str r1, [r0, #0x2c] + str r3, [r0, #0x54] + pop {r4, pc} + .align 2, 0 +_08299FC4: .4byte __sread +_08299FC8: .4byte __swrite +_08299FCC: .4byte __sseek +_08299FD0: .4byte __sclose + thumb_func_end sub_08299F9C + + thumb_func_start __sfmoreglue +__sfmoreglue: @ 0x08299FD4 + push {r4, r5, r6, lr} + adds r5, r1, #0 + movs r1, #0x58 + adds r6, r5, #0 + muls r6, r1, r6 + adds r1, r6, #0 + adds r1, #0xc + bl _malloc_r + adds r4, r0, #0 + cmp r4, #0 + beq _0829A000 + adds r0, #0xc + movs r1, #0 + str r1, [r4] + str r5, [r4, #4] + str r0, [r4, #8] + adds r2, r6, #0 + bl memset + adds r0, r4, #0 + b _0829A002 +_0829A000: + movs r0, #0 +_0829A002: + pop {r4, r5, r6, pc} + thumb_func_end __sfmoreglue + + thumb_func_start __sfp +__sfp: @ 0x0829A004 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x38] + cmp r0, #0 + bne _0829A014 + adds r0, r5, #0 + bl __sinit +_0829A014: + movs r0, #0xec + lsls r0, r0, #1 + adds r4, r5, r0 + b _0829A01E +_0829A01C: + ldr r4, [r4] +_0829A01E: + ldr r2, [r4, #8] + ldr r0, [r4, #4] + b _0829A02E +_0829A024: + movs r3, #0xc + ldrsh r1, [r2, r3] + cmp r1, #0 + beq _0829A050 + adds r2, #0x58 +_0829A02E: + subs r0, #1 + cmp r0, #0 + bge _0829A024 + ldr r0, [r4] + cmp r0, #0 + bne _0829A01C + adds r0, r5, #0 + movs r1, #4 + bl __sfmoreglue + str r0, [r4] + cmp r0, #0 + bne _0829A01C + movs r0, #0xc + str r0, [r5] + movs r0, #0 + b _0829A070 +_0829A050: + movs r0, #1 + strh r0, [r2, #0xc] + str r1, [r2] + str r1, [r2, #8] + str r1, [r2, #4] + str r1, [r2, #0x10] + str r1, [r2, #0x14] + str r1, [r2, #0x18] + ldr r0, _0829A074 + strh r0, [r2, #0xe] + str r1, [r2, #0x30] + str r1, [r2, #0x34] + str r1, [r2, #0x44] + str r1, [r2, #0x48] + str r5, [r2, #0x54] + adds r0, r2, #0 +_0829A070: + pop {r4, r5, pc} + .align 2, 0 +_0829A074: .4byte 0x0000FFFF + thumb_func_end __sfp + + thumb_func_start _cleanup_r +_cleanup_r: @ 0x0829A078 + push {lr} + ldr r1, _0829A084 + bl _fwalk + pop {pc} + .align 2, 0 +_0829A084: .4byte fflush + thumb_func_end _cleanup_r + + thumb_func_start _cleanup +_cleanup: @ 0x0829A088 + push {lr} + ldr r0, _0829A094 + ldr r0, [r0] + bl _cleanup_r + pop {pc} + .align 2, 0 +_0829A094: .4byte gUnknown_203CF1C + thumb_func_end _cleanup + + thumb_func_start __sinit +__sinit: @ 0x0829A098 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0829A0F4 + str r0, [r5, #0x3c] + movs r0, #1 + str r0, [r5, #0x38] + movs r0, #0xf2 + lsls r0, r0, #1 + adds r4, r5, r0 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + adds r3, r5, #0 + bl sub_08299F9C + movs r1, #0x8f + lsls r1, r1, #2 + adds r0, r5, r1 + movs r1, #9 + movs r2, #1 + adds r3, r5, #0 + bl sub_08299F9C + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r5, r1 + movs r1, #0xa + movs r2, #2 + adds r3, r5, #0 + bl sub_08299F9C + movs r0, #0xec + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #0 + str r0, [r1] + movs r0, #0xee + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #3 + str r0, [r1] + movs r1, #0xf0 + lsls r1, r1, #1 + adds r0, r5, r1 + str r4, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0829A0F4: .4byte _cleanup_r + thumb_func_end __sinit + + thumb_func_start _free_r +_free_r: @ 0x0829A0F8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r4, r1, #0 + cmp r4, #0 + bne _0829A10A + b _0829A2AE +_0829A10A: + bl __malloc_lock + adds r5, r4, #0 + subs r5, #8 + ldr r1, [r5, #4] + movs r6, #2 + rsbs r6, r6, #0 + ands r6, r1 + adds r7, r5, r6 + ldr r4, [r7, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r4, r0 + ldr r0, _0829A16C + mov ip, r0 + ldr r0, [r0, #8] + cmp r7, r0 + bne _0829A178 + adds r6, r6, r4 + movs r4, #1 + ands r1, r4 + cmp r1, #0 + bne _0829A146 + ldr r0, [r5] + subs r5, r5, r0 + adds r6, r6, r0 + ldr r3, [r5, #0xc] + ldr r2, [r5, #8] + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A146: + adds r0, r6, #0 + orrs r0, r4 + str r0, [r5, #4] + mov r2, ip + str r5, [r2, #8] + ldr r0, _0829A170 + ldr r0, [r0] + cmp r6, r0 + blo _0829A162 + ldr r0, _0829A174 + ldr r1, [r0] + mov r0, sb + bl _malloc_trim_r +_0829A162: + mov r0, sb + bl __malloc_unlock + b _0829A2AE + .align 2, 0 +_0829A16C: .4byte gUnknown_203CF34 +_0829A170: .4byte gUnknown_203D33C +_0829A174: .4byte gUnknown_203D340 +_0829A178: + str r4, [r7, #4] + movs r0, #0 + mov r8, r0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _0829A1A4 + ldr r0, [r5] + subs r5, r5, r0 + adds r6, r6, r0 + ldr r1, [r5, #8] + mov r0, ip + adds r0, #8 + cmp r1, r0 + bne _0829A19C + movs r2, #1 + mov r8, r2 + b _0829A1A4 +_0829A19C: + ldr r3, [r5, #0xc] + adds r2, r1, #0 + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A1A4: + adds r0, r7, r4 + ldr r0, [r0, #4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0829A1DC + adds r6, r6, r4 + ldr r1, [r7, #8] + mov r0, r8 + cmp r0, #0 + bne _0829A1D4 + ldr r0, _0829A1D0 + cmp r1, r0 + bne _0829A1D4 + movs r2, #1 + mov r8, r2 + str r5, [r1, #0xc] + str r5, [r1, #8] + str r1, [r5, #0xc] + str r1, [r5, #8] + b _0829A1DC + .align 2, 0 +_0829A1D0: .4byte gUnknown_203CF3C +_0829A1D4: + ldr r3, [r7, #0xc] + adds r2, r1, #0 + str r3, [r2, #0xc] + str r2, [r3, #8] +_0829A1DC: + movs r1, #1 + adds r0, r6, #0 + orrs r0, r1 + str r0, [r5, #4] + adds r0, r5, r6 + str r6, [r0] + mov r0, r8 + cmp r0, #0 + bne _0829A2A8 + ldr r0, _0829A20C + cmp r6, r0 + bhi _0829A214 + lsrs r4, r6, #3 + ldr r2, _0829A210 + adds r0, r4, #0 + asrs r0, r0, #2 + lsls r1, r0 + ldr r0, [r2, #4] + orrs r0, r1 + str r0, [r2, #4] + lsls r0, r4, #3 + adds r3, r0, r2 + ldr r2, [r3, #8] + b _0829A2A0 + .align 2, 0 +_0829A20C: .4byte 0x000001FF +_0829A210: .4byte gUnknown_203CF34 +_0829A214: + lsrs r1, r6, #9 + cmp r1, #0 + bne _0829A21E + lsrs r4, r6, #3 + b _0829A266 +_0829A21E: + cmp r1, #4 + bhi _0829A22A + lsrs r0, r6, #6 + adds r4, r0, #0 + adds r4, #0x38 + b _0829A266 +_0829A22A: + cmp r1, #0x14 + bhi _0829A234 + adds r4, r1, #0 + adds r4, #0x5b + b _0829A266 +_0829A234: + cmp r1, #0x54 + bhi _0829A240 + lsrs r0, r6, #0xc + adds r4, r0, #0 + adds r4, #0x6e + b _0829A266 +_0829A240: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r1, r0 + bhi _0829A250 + lsrs r0, r6, #0xf + adds r4, r0, #0 + adds r4, #0x77 + b _0829A266 +_0829A250: + ldr r0, _0829A260 + cmp r1, r0 + bhi _0829A264 + lsrs r0, r6, #0x12 + adds r4, r0, #0 + adds r4, #0x7c + b _0829A266 + .align 2, 0 +_0829A260: .4byte 0x00000554 +_0829A264: + movs r4, #0x7e +_0829A266: + lsls r0, r4, #3 + ldr r7, _0829A284 + adds r3, r0, r7 + ldr r2, [r3, #8] + cmp r2, r3 + bne _0829A288 + adds r0, r4, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r0, [r7, #4] + orrs r0, r1 + str r0, [r7, #4] + b _0829A2A0 + .align 2, 0 +_0829A284: .4byte gUnknown_203CF34 +_0829A288: + ldr r0, [r2, #4] + movs r1, #4 + rsbs r1, r1, #0 + b _0829A298 +_0829A290: + ldr r2, [r2, #8] + cmp r2, r3 + beq _0829A29E + ldr r0, [r2, #4] +_0829A298: + ands r0, r1 + cmp r6, r0 + blo _0829A290 +_0829A29E: + ldr r3, [r2, #0xc] +_0829A2A0: + str r3, [r5, #0xc] + str r2, [r5, #8] + str r5, [r3, #8] + str r5, [r2, #0xc] +_0829A2A8: + mov r0, sb + bl __malloc_unlock +_0829A2AE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _free_r + + thumb_func_start _malloc_trim_r +_malloc_trim_r: @ 0x0829A2B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + bl __malloc_lock + ldr r0, _0829A340 + mov r8, r0 + ldr r0, [r0, #8] + ldr r6, [r0, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r6, r0 + subs r4, r6, r4 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r1, _0829A344 + adds r4, r4, r1 + adds r0, r4, #0 + adds r1, r5, #0 + bl __udivsi3 + subs r0, #1 + lsls r4, r0, #0xc + cmp r4, r5 + blt _0829A336 + adds r0, r7, #0 + movs r1, #0 + bl _sbrk_r + adds r2, r0, #0 + mov r1, r8 + ldr r0, [r1, #8] + adds r0, r0, r6 + cmp r2, r0 + bne _0829A336 + rsbs r1, r4, #0 + adds r0, r7, #0 + bl _sbrk_r + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0829A350 + adds r0, r7, #0 + movs r1, #0 + bl _sbrk_r + adds r2, r0, #0 + mov r0, r8 + ldr r3, [r0, #8] + subs r6, r2, r3 + cmp r6, #0xf + ble _0829A336 + ldr r1, _0829A348 + ldr r0, _0829A34C + ldr r0, [r0] + subs r0, r2, r0 + str r0, [r1] + movs r0, #1 + orrs r6, r0 + str r6, [r3, #4] +_0829A336: + adds r0, r7, #0 + bl __malloc_unlock + movs r0, #0 + b _0829A36C + .align 2, 0 +_0829A340: .4byte gUnknown_203CF34 +_0829A344: .4byte 0x00000FEF +_0829A348: .4byte gUnknown_203D350 +_0829A34C: .4byte gUnknown_203D344 +_0829A350: + mov r1, r8 + ldr r2, [r1, #8] + subs r0, r6, r4 + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + ldr r1, _0829A374 + ldr r0, [r1] + subs r0, r0, r4 + str r0, [r1] + adds r0, r7, #0 + bl __malloc_unlock + movs r0, #1 +_0829A36C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A374: .4byte gUnknown_203D350 + thumb_func_end _malloc_trim_r + + thumb_func_start __sfvwrite +__sfvwrite: @ 0x0829A378 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + mov sl, r1 + ldr r6, [r1, #8] + cmp r6, #0 + bne _0829A390 + b _0829A586 +_0829A390: + movs r0, #8 + ldrh r1, [r5, #0xc] + ands r0, r1 + cmp r0, #0 + beq _0829A3A0 + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _0829A3AC +_0829A3A0: + adds r0, r5, #0 + bl __swsetup + cmp r0, #0 + beq _0829A3AC + b _0829A592 +_0829A3AC: + mov r2, sl + ldr r2, [r2] + mov r8, r2 + movs r6, #0 + ldrh r1, [r5, #0xc] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0829A400 +_0829A3BE: + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + cmp r6, #0 + bne _0829A3D4 +_0829A3C6: + mov r1, r8 + ldr r7, [r1] + ldr r6, [r1, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A3C6 +_0829A3D4: + adds r2, r6, #0 + movs r1, #0x80 + lsls r1, r1, #3 + cmp r6, r1 + bls _0829A3E0 + adds r2, r1, #0 +_0829A3E0: + adds r1, r7, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + bgt _0829A3EE + b _0829A58A +_0829A3EE: + adds r7, r7, r4 + subs r6, r6, r4 + mov r1, sl + ldr r0, [r1, #8] + subs r0, r0, r4 + str r0, [r1, #8] + cmp r0, #0 + bne _0829A3BE + b _0829A586 +_0829A400: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0829A4BA +_0829A408: + ldrh r1, [r5, #0xc] + ldr r0, [r5, #8] + ldr r3, [r5] + cmp r6, #0 + bne _0829A420 +_0829A412: + mov r2, r8 + ldr r7, [r2] + ldr r6, [r2, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A412 +_0829A420: + adds r4, r0, #0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0829A44E + cmp r6, r4 + bhs _0829A434 + adds r4, r6, #0 +_0829A434: + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r4, r6, #0 + b _0829A4A8 +_0829A44E: + ldr r0, [r5, #0x10] + cmp r3, r0 + bls _0829A476 + cmp r6, r4 + bls _0829A476 + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r0, r5, #0 + bl fflush + cmp r0, #0 + beq _0829A474 + b _0829A58A +_0829A474: + b _0829A4A8 +_0829A476: + ldr r4, [r5, #0x14] + cmp r6, r4 + blo _0829A490 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + adds r1, r7, #0 + adds r2, r4, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + ble _0829A58A + b _0829A4A8 +_0829A490: + adds r4, r6, #0 + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] +_0829A4A8: + adds r7, r7, r4 + subs r6, r6, r4 + mov r1, sl + ldr r0, [r1, #8] + subs r0, r0, r4 + str r0, [r1, #8] + cmp r0, #0 + bne _0829A408 + b _0829A586 +_0829A4BA: + movs r2, #0 + str r2, [sp] +_0829A4BE: + cmp r6, #0 + bne _0829A4D4 + movs r0, #0 + str r0, [sp] +_0829A4C6: + mov r1, r8 + ldr r7, [r1] + ldr r6, [r1, #4] + movs r2, #8 + add r8, r2 + cmp r6, #0 + beq _0829A4C6 +_0829A4D4: + ldr r0, [sp] + cmp r0, #0 + bne _0829A4F8 + adds r0, r7, #0 + movs r1, #0xa + adds r2, r6, #0 + bl memchr + adds r1, r0, #0 + cmp r1, #0 + beq _0829A4F0 + subs r0, r7, #1 + subs r1, r1, r0 + b _0829A4F2 +_0829A4F0: + adds r1, r6, #1 +_0829A4F2: + mov sb, r1 + movs r2, #1 + str r2, [sp] +_0829A4F8: + mov r2, sb + cmp sb, r6 + bls _0829A500 + adds r2, r6, #0 +_0829A500: + ldr r0, [r5, #8] + ldr r1, [r5, #0x14] + adds r4, r0, r1 + ldr r0, [r5, #0x10] + ldr r3, [r5] + cmp r3, r0 + bls _0829A52E + cmp r2, r4 + ble _0829A52E + adds r0, r3, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl memmove + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] + adds r0, r5, #0 + bl fflush + cmp r0, #0 + bne _0829A58A + b _0829A55E +_0829A52E: + adds r4, r1, #0 + cmp r2, r4 + blt _0829A548 + ldr r0, [r5, #0x1c] + ldr r3, [r5, #0x24] + adds r1, r7, #0 + adds r2, r4, #0 + bl _call_via_r3 + adds r4, r0, #0 + cmp r4, #0 + ble _0829A58A + b _0829A55E +_0829A548: + adds r4, r2, #0 + adds r0, r3, #0 + adds r1, r7, #0 + bl memmove + ldr r0, [r5, #8] + subs r0, r0, r4 + str r0, [r5, #8] + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r5] +_0829A55E: + mov r0, sb + subs r0, r0, r4 + mov sb, r0 + cmp r0, #0 + bne _0829A576 + adds r0, r5, #0 + bl fflush + cmp r0, #0 + bne _0829A58A + movs r1, #0 + str r1, [sp] +_0829A576: + adds r7, r7, r4 + subs r6, r6, r4 + mov r2, sl + ldr r0, [r2, #8] + subs r0, r0, r4 + str r0, [r2, #8] + cmp r0, #0 + bne _0829A4BE +_0829A586: + movs r0, #0 + b _0829A596 +_0829A58A: + movs r0, #0x40 + ldrh r1, [r5, #0xc] + orrs r0, r1 + strh r0, [r5, #0xc] +_0829A592: + movs r0, #1 + rsbs r0, r0, #0 +_0829A596: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end __sfvwrite + + thumb_func_start _fwalk +_fwalk: @ 0x0829A5A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + movs r7, #0 + movs r1, #0xec + lsls r1, r1, #1 + adds r6, r0, r1 + cmp r6, #0 + beq _0829A5DC +_0829A5B8: + ldr r5, [r6, #8] + ldr r4, [r6, #4] + b _0829A5D0 +_0829A5BE: + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0829A5CE + adds r0, r5, #0 + bl _call_via_r8 + orrs r7, r0 +_0829A5CE: + adds r5, #0x58 +_0829A5D0: + subs r4, #1 + cmp r4, #0 + bge _0829A5BE + ldr r6, [r6] + cmp r6, #0 + bne _0829A5B8 +_0829A5DC: + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + thumb_func_end _fwalk + + thumb_func_start _setlocale_r +_setlocale_r: @ 0x0829A5E4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + beq _0829A618 + ldr r1, _0829A60C + adds r0, r4, #0 + bl strcmp + cmp r0, #0 + beq _0829A614 + ldr r1, _0829A610 + adds r0, r4, #0 + bl strcmp + cmp r0, #0 + beq _0829A614 + movs r0, #0 + b _0829A61A + .align 2, 0 +_0829A60C: .4byte gUnknown_890F224 +_0829A610: .4byte gUnknown_890F21C +_0829A614: + str r6, [r5, #0x30] + str r4, [r5, #0x34] +_0829A618: + ldr r0, _0829A61C +_0829A61A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0829A61C: .4byte gUnknown_890F224 + thumb_func_end _setlocale_r + + thumb_func_start _localeconv_r +_localeconv_r: @ 0x0829A620 + ldr r0, _0829A624 + bx lr + .align 2, 0 +_0829A624: .4byte gUnknown_890F1EC + thumb_func_end _localeconv_r + + thumb_func_start setlocale +setlocale: @ 0x0829A628 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0829A63C + ldr r0, [r0] + adds r1, r3, #0 + bl _setlocale_r + pop {pc} + .align 2, 0 +_0829A63C: .4byte gUnknown_203CF1C + thumb_func_end setlocale + + thumb_func_start localeconv +localeconv: @ 0x0829A640 + push {lr} + ldr r0, _0829A64C + ldr r0, [r0] + bl _localeconv_r + pop {pc} + .align 2, 0 +_0829A64C: .4byte gUnknown_203CF1C + thumb_func_end localeconv + + thumb_func_start __smakebuf +__smakebuf: @ 0x0829A650 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + adds r4, r0, #0 + movs r0, #2 + ldrh r1, [r4, #0xc] + ands r0, r1 + cmp r0, #0 + bne _0829A6E6 + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + blt _0829A678 + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + mov r2, sp + bl _fstat_r + cmp r0, #0 + bge _0829A68A +_0829A678: + movs r7, #0 + movs r6, #0x80 + lsls r6, r6, #3 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + ldrh r2, [r4, #0xc] + orrs r0, r2 + b _0829A6CE +_0829A68A: + movs r7, #0 + ldr r1, [sp, #4] + movs r0, #0xf0 + lsls r0, r0, #8 + ands r1, r0 + movs r0, #0x80 + lsls r0, r0, #6 + cmp r1, r0 + bne _0829A69E + movs r7, #1 +_0829A69E: + movs r6, #0x80 + lsls r6, r6, #3 + movs r0, #0x80 + lsls r0, r0, #8 + cmp r1, r0 + bne _0829A6C4 + ldr r1, [r4, #0x28] + ldr r0, _0829A6C0 + cmp r1, r0 + bne _0829A6C4 + adds r0, r6, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + str r6, [r4, #0x4c] + b _0829A6D0 + .align 2, 0 +_0829A6C0: .4byte __sseek +_0829A6C4: + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 +_0829A6CE: + strh r0, [r4, #0xc] +_0829A6D0: + ldr r0, [r4, #0x54] + adds r1, r6, #0 + bl _malloc_r + adds r2, r0, #0 + cmp r2, #0 + bne _0829A6F4 + movs r0, #2 + ldrh r2, [r4, #0xc] + orrs r0, r2 + strh r0, [r4, #0xc] +_0829A6E6: + adds r0, r4, #0 + adds r0, #0x43 + str r0, [r4] + str r0, [r4, #0x10] + movs r0, #1 + str r0, [r4, #0x14] + b _0829A722 +_0829A6F4: + ldr r1, [r4, #0x54] + ldr r0, _0829A728 + str r0, [r1, #0x3c] + movs r0, #0x80 + movs r5, #0 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] + str r2, [r4] + str r2, [r4, #0x10] + str r6, [r4, #0x14] + cmp r7, #0 + beq _0829A722 + movs r2, #0xe + ldrsh r0, [r4, r2] + bl isatty + cmp r0, #0 + beq _0829A722 + movs r0, #1 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r4, #0xc] +_0829A722: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A728: .4byte _cleanup_r + thumb_func_end __smakebuf + + thumb_func_start sub_0829A72C +sub_0829A72C: @ 0x0829A72C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + ldr r0, _0829A7A0 + ldr r0, [r0, #8] + mov r8, r0 + ldr r7, [r0, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r7, r0 + mov r2, r8 + adds r4, r2, r7 + ldr r0, _0829A7A4 + ldr r0, [r0] + adds r1, r1, r0 + adds r6, r1, #0 + adds r6, #0x10 + ldr r3, _0829A7A8 + mov sl, r3 + ldr r0, [r3] + movs r2, #1 + rsbs r2, r2, #0 + mov sb, r2 + cmp r0, sb + beq _0829A76E + ldr r3, _0829A7AC + adds r6, r1, r3 + ldr r0, _0829A7B0 + ands r6, r0 +_0829A76E: + ldr r0, [sp] + adds r1, r6, #0 + bl _sbrk_r + adds r5, r0, #0 + cmp r5, sb + beq _0829A870 + cmp r5, r4 + bhs _0829A786 + ldr r0, _0829A7A0 + cmp r8, r0 + bne _0829A870 +_0829A786: + ldr r1, _0829A7B4 + ldr r0, [r1] + adds r2, r0, r6 + str r2, [r1] + cmp r5, r4 + bne _0829A7B8 + adds r2, r6, r7 + ldr r3, _0829A7A0 + ldr r1, [r3, #8] + movs r0, #1 + orrs r2, r0 + str r2, [r1, #4] + b _0829A858 + .align 2, 0 +_0829A7A0: .4byte gUnknown_203CF34 +_0829A7A4: .4byte gUnknown_203D340 +_0829A7A8: .4byte gUnknown_203D344 +_0829A7AC: .4byte 0x0000100F +_0829A7B0: .4byte 0xFFFFF000 +_0829A7B4: .4byte gUnknown_203D350 +_0829A7B8: + mov r3, sl + ldr r0, [r3] + cmp r0, sb + bne _0829A7C4 + str r5, [r3] + b _0829A7CA +_0829A7C4: + subs r0, r5, r4 + adds r0, r2, r0 + str r0, [r1] +_0829A7CA: + adds r1, r5, #0 + adds r1, #8 + movs r0, #7 + ands r1, r0 + cmp r1, #0 + beq _0829A7DE + movs r0, #8 + subs r4, r0, r1 + adds r5, r5, r4 + b _0829A7E0 +_0829A7DE: + movs r4, #0 +_0829A7E0: + adds r0, r5, r6 + movs r1, #0x80 + lsls r1, r1, #5 + subs r1, #1 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #5 + subs r0, r1, r0 + adds r4, r4, r0 + ldr r0, [sp] + adds r1, r4, #0 + bl _sbrk_r + adds r2, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829A870 + ldr r1, _0829A828 + ldr r0, [r1] + adds r0, r0, r4 + str r0, [r1] + ldr r1, _0829A82C + str r5, [r1, #8] + subs r0, r2, r5 + adds r2, r0, r4 + movs r3, #1 + orrs r2, r3 + str r2, [r5, #4] + cmp r8, r1 + beq _0829A858 + cmp r7, #0xf + bhi _0829A830 + str r3, [r5, #4] + b _0829A870 + .align 2, 0 +_0829A828: .4byte gUnknown_203D350 +_0829A82C: .4byte gUnknown_203CF34 +_0829A830: + subs r7, #0xc + movs r0, #8 + rsbs r0, r0, #0 + ands r7, r0 + mov r2, r8 + ldr r0, [r2, #4] + ands r0, r3 + orrs r0, r7 + str r0, [r2, #4] + adds r1, r2, r7 + movs r0, #5 + str r0, [r1, #4] + str r0, [r1, #8] + cmp r7, #0xf + bls _0829A858 + mov r1, r8 + adds r1, #8 + ldr r0, [sp] + bl _free_r +_0829A858: + ldr r0, _0829A87C + ldr r2, _0829A880 + ldr r1, [r0] + ldr r0, [r2] + cmp r1, r0 + bls _0829A866 + str r1, [r2] +_0829A866: + ldr r2, _0829A884 + ldr r0, [r2] + cmp r1, r0 + bls _0829A870 + str r1, [r2] +_0829A870: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829A87C: .4byte gUnknown_203D350 +_0829A880: .4byte gUnknown_203D348 +_0829A884: .4byte gUnknown_203D34C + thumb_func_end sub_0829A72C + + thumb_func_start _malloc_r +_malloc_r: @ 0x0829A888 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + adds r1, #0xb + cmp r1, #0x16 + ble _0829A8AA + movs r0, #8 + rsbs r0, r0, #0 + mov r8, r0 + mov r2, r8 + ands r2, r1 + mov r8, r2 + b _0829A8AE +_0829A8AA: + movs r3, #0x10 + mov r8, r3 +_0829A8AE: + ldr r0, [sp] + bl __malloc_lock + ldr r0, _0829A8F4 + cmp r8, r0 + bhi _0829A902 + mov r4, r8 + lsrs r4, r4, #3 + mov ip, r4 + ldr r0, _0829A8F8 + mov r7, r8 + adds r2, r7, r0 + ldr r5, [r2, #0xc] + cmp r5, r2 + bne _0829A8D6 + adds r2, r5, #0 + adds r2, #8 + ldr r5, [r2, #0xc] + cmp r5, r2 + beq _0829A8FC +_0829A8D6: + ldr r2, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r2, r0 + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + adds r2, r5, r2 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E + .align 2, 0 +_0829A8F4: .4byte 0x000001F7 +_0829A8F8: .4byte gUnknown_203CF34 +_0829A8FC: + movs r0, #2 + add ip, r0 + b _0829A9AE +_0829A902: + mov r2, r8 + lsrs r1, r2, #9 + cmp r1, #0 + bne _0829A90E + lsrs r2, r2, #3 + b _0829A95E +_0829A90E: + cmp r1, #4 + bhi _0829A91C + mov r3, r8 + lsrs r0, r3, #6 + adds r0, #0x38 + mov ip, r0 + b _0829A960 +_0829A91C: + cmp r1, #0x14 + bhi _0829A926 + adds r1, #0x5b + mov ip, r1 + b _0829A960 +_0829A926: + cmp r1, #0x54 + bhi _0829A934 + mov r4, r8 + lsrs r0, r4, #0xc + adds r0, #0x6e + mov ip, r0 + b _0829A960 +_0829A934: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r1, r0 + bhi _0829A946 + mov r7, r8 + lsrs r0, r7, #0xf + adds r0, #0x77 + mov ip, r0 + b _0829A960 +_0829A946: + ldr r0, _0829A958 + cmp r1, r0 + bhi _0829A95C + mov r1, r8 + lsrs r0, r1, #0x12 + adds r0, #0x7c + mov ip, r0 + b _0829A960 + .align 2, 0 +_0829A958: .4byte 0x00000554 +_0829A95C: + movs r2, #0x7e +_0829A95E: + mov ip, r2 +_0829A960: + mov r3, ip + lsls r0, r3, #3 + ldr r1, _0829A984 + adds r4, r0, r1 + ldr r5, [r4, #0xc] + cmp r5, r4 + beq _0829A9AA + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + ble _0829A988 + adds r0, #3 + add ip, r0 + b _0829A9AA + .align 2, 0 +_0829A984: .4byte gUnknown_203CF34 +_0829A988: + cmp r3, #0 + blt _0829A98E + b _0829ABC8 +_0829A98E: + ldr r5, [r5, #0xc] + cmp r5, r4 + beq _0829A9AA + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r2, r8 + subs r3, r1, r2 + cmp r3, #0xf + ble _0829A988 + movs r3, #1 + rsbs r3, r3, #0 + add ip, r3 +_0829A9AA: + movs r4, #1 + add ip, r4 +_0829A9AE: + ldr r0, _0829A9EC + ldr r5, [r0, #8] + mov sl, r0 + cmp r5, sl + bne _0829A9BA + b _0829AABC +_0829A9BA: + ldr r1, [r5, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + ble _0829A9F0 + adds r2, r5, r7 + movs r1, #1 + adds r0, r7, #0 + orrs r0, r1 + str r0, [r5, #4] + mov r4, sl + str r2, [r4, #0xc] + str r2, [r4, #8] + str r4, [r2, #0xc] + str r4, [r2, #8] + adds r0, r3, #0 + orrs r0, r1 + str r0, [r2, #4] + adds r0, r2, r3 + str r3, [r0] + b _0829AC2E + .align 2, 0 +_0829A9EC: .4byte gUnknown_203CF3C +_0829A9F0: + mov r7, sl + str r7, [r7, #0xc] + str r7, [r7, #8] + cmp r3, #0 + blt _0829AA06 + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E +_0829AA06: + ldr r0, _0829AA28 + cmp r1, r0 + bhi _0829AA2C + lsrs r2, r1, #3 + mov r3, sl + subs r3, #8 + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r0, [r3, #4] + orrs r0, r1 + str r0, [r3, #4] + lsls r0, r2, #3 + adds r6, r0, r3 + ldr r4, [r6, #8] + b _0829AAB4 + .align 2, 0 +_0829AA28: .4byte 0x000001FF +_0829AA2C: + lsrs r2, r1, #9 + cmp r2, #0 + bne _0829AA36 + lsrs r2, r1, #3 + b _0829AA7A +_0829AA36: + cmp r2, #4 + bhi _0829AA42 + lsrs r0, r1, #6 + adds r2, r0, #0 + adds r2, #0x38 + b _0829AA7A +_0829AA42: + cmp r2, #0x14 + bhi _0829AA4A + adds r2, #0x5b + b _0829AA7A +_0829AA4A: + cmp r2, #0x54 + bhi _0829AA56 + lsrs r0, r1, #0xc + adds r2, r0, #0 + adds r2, #0x6e + b _0829AA7A +_0829AA56: + movs r0, #0xaa + lsls r0, r0, #1 + cmp r2, r0 + bhi _0829AA66 + lsrs r0, r1, #0xf + adds r2, r0, #0 + adds r2, #0x77 + b _0829AA7A +_0829AA66: + ldr r0, _0829AA74 + cmp r2, r0 + bhi _0829AA78 + lsrs r0, r1, #0x12 + adds r2, r0, #0 + adds r2, #0x7c + b _0829AA7A + .align 2, 0 +_0829AA74: .4byte 0x00000554 +_0829AA78: + movs r2, #0x7e +_0829AA7A: + lsls r0, r2, #3 + ldr r3, _0829AA98 + adds r6, r0, r3 + ldr r4, [r6, #8] + cmp r4, r6 + bne _0829AA9C + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #1 + lsls r1, r0 + ldr r7, _0829AA98 + ldr r0, [r7, #4] + orrs r0, r1 + str r0, [r7, #4] + b _0829AAB4 + .align 2, 0 +_0829AA98: .4byte gUnknown_203CF34 +_0829AA9C: + ldr r0, [r4, #4] + movs r2, #4 + rsbs r2, r2, #0 + b _0829AAAC +_0829AAA4: + ldr r4, [r4, #8] + cmp r4, r6 + beq _0829AAB2 + ldr r0, [r4, #4] +_0829AAAC: + ands r0, r2 + cmp r1, r0 + blo _0829AAA4 +_0829AAB2: + ldr r6, [r4, #0xc] +_0829AAB4: + str r6, [r5, #0xc] + str r4, [r5, #8] + str r5, [r6, #8] + str r5, [r4, #0xc] +_0829AABC: + mov r0, ip + cmp r0, #0 + bge _0829AAC4 + adds r0, #3 +_0829AAC4: + asrs r0, r0, #2 + movs r6, #1 + lsls r6, r0 + ldr r0, _0829AAE8 + ldr r1, [r0, #4] + cmp r6, r1 + bhi _0829AB86 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0829AAFA + movs r0, #4 + rsbs r0, r0, #0 + mov r2, ip + ands r0, r2 + adds r0, #4 + mov ip, r0 + b _0829AAF0 + .align 2, 0 +_0829AAE8: .4byte gUnknown_203CF34 +_0829AAEC: + movs r3, #4 + add ip, r3 +_0829AAF0: + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0829AAEC +_0829AAFA: + ldr r4, _0829AB78 + mov sb, r4 +_0829AAFE: + mov r7, ip + str r7, [sp, #4] + mov r1, ip + lsls r0, r1, #3 + mov r3, sb + adds r2, r0, r3 + adds r4, r2, #0 +_0829AB0C: + ldr r5, [r4, #0xc] + cmp r5, r4 + beq _0829AB2C + movs r0, #4 + rsbs r0, r0, #0 +_0829AB16: + ldr r1, [r5, #4] + ands r1, r0 + mov r7, r8 + subs r3, r1, r7 + cmp r3, #0xf + bgt _0829ABDC + cmp r3, #0 + bge _0829AC04 + ldr r5, [r5, #0xc] + cmp r5, r4 + bne _0829AB16 +_0829AB2C: + adds r4, #8 + movs r0, #1 + add ip, r0 + mov r0, ip + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AB0C +_0829AB3C: + ldr r0, [sp, #4] + ands r0, r1 + cmp r0, #0 + beq _0829AB7C + ldr r3, [sp, #4] + subs r3, #1 + str r3, [sp, #4] + subs r2, #8 + ldr r0, [r2, #8] + cmp r0, r2 + beq _0829AB3C +_0829AB52: + lsls r6, r6, #1 + mov r4, sb + ldr r1, [r4, #4] + cmp r6, r1 + bhi _0829AB86 + cmp r6, #0 + beq _0829AB86 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0829AAFE +_0829AB68: + movs r7, #4 + add ip, r7 + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0829AB68 + b _0829AAFE + .align 2, 0 +_0829AB78: .4byte gUnknown_203CF34 +_0829AB7C: + mov r1, sb + ldr r0, [r1, #4] + bics r0, r6 + str r0, [r1, #4] + b _0829AB52 +_0829AB86: + ldr r2, _0829ABC4 + ldr r0, [r2, #8] + ldr r0, [r0, #4] + movs r4, #4 + rsbs r4, r4, #0 + ands r0, r4 + mov r7, r8 + subs r3, r0, r7 + cmp r0, r8 + blo _0829AB9E + cmp r3, #0xf + bgt _0829AC18 +_0829AB9E: + ldr r0, [sp] + mov r1, r8 + bl sub_0829A72C + ldr r1, _0829ABC4 + ldr r0, [r1, #8] + ldr r0, [r0, #4] + ands r0, r4 + mov r2, r8 + subs r3, r0, r2 + cmp r0, r8 + blo _0829ABBA + cmp r3, #0xf + bgt _0829AC18 +_0829ABBA: + ldr r0, [sp] + bl __malloc_unlock + movs r0, #0 + b _0829AC38 + .align 2, 0 +_0829ABC4: .4byte gUnknown_203CF34 +_0829ABC8: + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + b _0829AC2E +_0829ABDC: + mov r4, r8 + adds r2, r5, r4 + movs r1, #1 + orrs r4, r1 + str r4, [r5, #4] + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + mov r7, sl + str r2, [r7, #0xc] + str r2, [r7, #8] + str r7, [r2, #0xc] + str r7, [r2, #8] + adds r0, r3, #0 + orrs r0, r1 + str r0, [r2, #4] + adds r0, r2, r3 + str r3, [r0] + b _0829AC2E +_0829AC04: + adds r2, r5, r1 + ldr r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #4] + ldr r6, [r5, #0xc] + ldr r4, [r5, #8] + str r6, [r4, #0xc] + str r4, [r6, #8] + b _0829AC2E +_0829AC18: + ldr r2, _0829AC44 + ldr r5, [r2, #8] + movs r1, #1 + mov r0, r8 + orrs r0, r1 + str r0, [r5, #4] + mov r4, r8 + adds r0, r5, r4 + str r0, [r2, #8] + orrs r3, r1 + str r3, [r0, #4] +_0829AC2E: + ldr r0, [sp] + bl __malloc_unlock + adds r0, r5, #0 + adds r0, #8 +_0829AC38: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829AC44: .4byte gUnknown_203CF34 + thumb_func_end _malloc_r + + thumb_func_start _mbtowc_r +_mbtowc_r: @ 0x0829AC48 + sub sp, #4 + cmp r1, #0 + bne _0829AC50 + mov r1, sp +_0829AC50: + cmp r2, #0 + beq _0829AC6C + cmp r3, #0 + bne _0829AC5E + movs r0, #1 + rsbs r0, r0, #0 + b _0829AC6E +_0829AC5E: + ldrb r0, [r2] + str r0, [r1] + ldrb r0, [r2] + cmp r0, #0 + beq _0829AC6C + movs r0, #1 + b _0829AC6E +_0829AC6C: + movs r0, #0 +_0829AC6E: + add sp, #4 + bx lr + .align 2, 0 + thumb_func_end _mbtowc_r + + thumb_func_start memchr +memchr: @ 0x0829AC74 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + adds r1, r0, #0 + movs r0, #0xff + ands r5, r0 + cmp r2, #3 + bls _0829ACE8 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829ACE8 + adds r4, r1, #0 + movs r6, #0 + movs r1, #0 +_0829AC90: + lsls r0, r6, #8 + adds r6, r0, r5 + adds r1, #1 + cmp r1, #3 + bls _0829AC90 + cmp r2, #3 + bls _0829ACCE + ldr r0, _0829ACD4 + mov ip, r0 + ldr r7, _0829ACD8 +_0829ACA4: + ldr r1, [r4] + eors r1, r6 + mov r3, ip + adds r0, r1, r3 + bics r0, r1 + ands r0, r7 + cmp r0, #0 + beq _0829ACC6 + adds r1, r4, #0 + movs r3, #0 +_0829ACB8: + ldrb r0, [r1] + cmp r0, r5 + beq _0829ACE2 + adds r1, #1 + adds r3, #1 + cmp r3, #3 + bls _0829ACB8 +_0829ACC6: + subs r2, #4 + adds r4, #4 + cmp r2, #3 + bhi _0829ACA4 +_0829ACCE: + adds r1, r4, #0 + b _0829ACE8 + .align 2, 0 +_0829ACD4: .4byte 0xFEFEFEFF +_0829ACD8: .4byte 0x80808080 +_0829ACDC: + ldrb r0, [r1] + cmp r0, r5 + bne _0829ACE6 +_0829ACE2: + adds r0, r1, #0 + b _0829ACF2 +_0829ACE6: + adds r1, #1 +_0829ACE8: + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bne _0829ACDC + movs r0, #0 +_0829ACF2: + pop {r4, r5, r6, r7, pc} + thumb_func_end memchr + + thumb_func_start memmove +memmove: @ 0x0829ACF4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r3, r1, #0 + cmp r3, r5 + bhs _0829AD26 + adds r0, r3, r2 + cmp r5, r0 + bhs _0829AD26 + adds r3, r0, #0 + adds r4, r5, r2 + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829AD78 + adds r1, r0, #0 +_0829AD16: + subs r4, #1 + subs r3, #1 + ldrb r0, [r3] + strb r0, [r4] + subs r2, #1 + cmp r2, r1 + bne _0829AD16 + b _0829AD78 +_0829AD26: + cmp r2, #0xf + bls _0829AD5E + adds r0, r3, #0 + orrs r0, r4 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AD5E + adds r1, r3, #0 +_0829AD38: + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + ldm r1!, {r0} + stm r4!, {r0} + subs r2, #0x10 + cmp r2, #0xf + bhi _0829AD38 + cmp r2, #3 + bls _0829AD5C +_0829AD52: + ldm r1!, {r0} + stm r4!, {r0} + subs r2, #4 + cmp r2, #3 + bhi _0829AD52 +_0829AD5C: + adds r3, r1, #0 +_0829AD5E: + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0829AD78 + adds r1, r0, #0 +_0829AD6A: + ldrb r0, [r3] + strb r0, [r4] + adds r3, #1 + adds r4, #1 + subs r2, #1 + cmp r2, r1 + bne _0829AD6A +_0829AD78: + adds r0, r5, #0 + pop {r4, r5, pc} + thumb_func_end memmove + + thumb_func_start __malloc_lock +__malloc_lock: @ 0x0829AD7C + bx lr + .align 2, 0 + thumb_func_end __malloc_lock + + thumb_func_start __malloc_unlock +__malloc_unlock: @ 0x0829AD80 + bx lr + .align 2, 0 + thumb_func_end __malloc_unlock + + thumb_func_start _Balloc +_Balloc: @ 0x0829AD84 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + bne _0829ADA0 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0x10 + bl _calloc_r + str r0, [r4, #0x4c] + cmp r0, #0 + beq _0829ADC8 +_0829ADA0: + ldr r1, [r4, #0x4c] + lsls r0, r6, #2 + adds r2, r0, r1 + ldr r1, [r2] + cmp r1, #0 + beq _0829ADB2 + ldr r0, [r1] + str r0, [r2] + b _0829ADD0 +_0829ADB2: + movs r5, #1 + lsls r5, r6 + lsls r2, r5, #2 + adds r2, #0x14 + adds r0, r4, #0 + movs r1, #1 + bl _calloc_r + adds r1, r0, #0 + cmp r1, #0 + bne _0829ADCC +_0829ADC8: + movs r0, #0 + b _0829ADD8 +_0829ADCC: + str r6, [r1, #4] + str r5, [r1, #8] +_0829ADD0: + movs r0, #0 + str r0, [r1, #0x10] + str r0, [r1, #0xc] + adds r0, r1, #0 +_0829ADD8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end _Balloc + + thumb_func_start _Bfree +_Bfree: @ 0x0829ADDC + adds r3, r0, #0 + adds r2, r1, #0 + cmp r2, #0 + beq _0829ADF2 + ldr r0, [r2, #4] + ldr r1, [r3, #0x4c] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] +_0829ADF2: + bx lr + thumb_func_end _Bfree + + thumb_func_start _multadd +_multadd: @ 0x0829ADF4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r5, r1, #0 + adds r4, r2, #0 + mov r8, r3 + ldr r6, [r5, #0x10] + adds r3, r5, #0 + adds r3, #0x14 + movs r7, #0 + ldr r0, _0829AE88 + mov ip, r0 +_0829AE10: + ldr r1, [r3] + adds r0, r1, #0 + mov r2, ip + ands r0, r2 + adds r2, r0, #0 + muls r2, r4, r2 + add r2, r8 + lsrs r1, r1, #0x10 + adds r0, r1, #0 + muls r0, r4, r0 + lsrs r1, r2, #0x10 + adds r0, r0, r1 + lsrs r1, r0, #0x10 + mov r8, r1 + lsls r0, r0, #0x10 + mov r1, ip + ands r2, r1 + adds r0, r0, r2 + stm r3!, {r0} + adds r7, #1 + cmp r7, r6 + blt _0829AE10 + mov r2, r8 + cmp r2, #0 + beq _0829AE7E + ldr r0, [r5, #8] + cmp r6, r0 + blt _0829AE6E + ldr r1, [r5, #4] + adds r1, #1 + mov r0, sb + bl _Balloc + adds r4, r0, #0 + adds r0, #0xc + adds r1, r5, #0 + adds r1, #0xc + ldr r2, [r5, #0x10] + lsls r2, r2, #2 + adds r2, #8 + bl memcpy + mov r0, sb + adds r1, r5, #0 + bl _Bfree + adds r5, r4, #0 +_0829AE6E: + lsls r1, r6, #2 + adds r0, r5, #0 + adds r0, #0x14 + adds r0, r0, r1 + mov r1, r8 + str r1, [r0] + adds r6, #1 + str r6, [r5, #0x10] +_0829AE7E: + adds r0, r5, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829AE88: .4byte 0x0000FFFF + thumb_func_end _multadd + + thumb_func_start _s2b +_s2b: @ 0x0829AE8C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + mov r0, r8 + adds r0, #8 + movs r1, #9 + bl __divsi3 + movs r1, #0 + movs r2, #1 + cmp r0, #1 + ble _0829AEB4 +_0829AEAC: + lsls r2, r2, #1 + adds r1, #1 + cmp r0, r2 + bgt _0829AEAC +_0829AEB4: + adds r0, r7, #0 + bl _Balloc + adds r1, r0, #0 + ldr r0, [sp, #0x18] + str r0, [r1, #0x14] + movs r0, #1 + str r0, [r1, #0x10] + movs r5, #9 + cmp r6, #9 + ble _0829AEE6 + adds r4, #9 +_0829AECC: + ldrb r3, [r4] + subs r3, #0x30 + adds r4, #1 + adds r0, r7, #0 + movs r2, #0xa + bl _multadd + adds r1, r0, #0 + adds r5, #1 + cmp r5, r6 + blt _0829AECC + adds r4, #1 + b _0829AEE8 +_0829AEE6: + adds r4, #0xa +_0829AEE8: + cmp r5, r8 + bge _0829AF06 + mov r0, r8 + subs r5, r0, r5 +_0829AEF0: + ldrb r3, [r4] + subs r3, #0x30 + adds r4, #1 + adds r0, r7, #0 + movs r2, #0xa + bl _multadd + adds r1, r0, #0 + subs r5, #1 + cmp r5, #0 + bne _0829AEF0 +_0829AF06: + adds r0, r1, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _s2b + + thumb_func_start _hi0bits +_hi0bits: @ 0x0829AF10 + adds r1, r0, #0 + movs r2, #0 + ldr r0, _0829AF60 + ands r0, r1 + cmp r0, #0 + bne _0829AF20 + movs r2, #0x10 + lsls r1, r1, #0x10 +_0829AF20: + movs r0, #0xff + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF2E + adds r2, #8 + lsls r1, r1, #8 +_0829AF2E: + movs r0, #0xf0 + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF3C + adds r2, #4 + lsls r1, r1, #4 +_0829AF3C: + movs r0, #0xc0 + lsls r0, r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0829AF4A + adds r2, #2 + lsls r1, r1, #2 +_0829AF4A: + cmp r1, #0 + blt _0829AF64 + adds r2, #1 + movs r0, #0x80 + lsls r0, r0, #0x17 + ands r0, r1 + cmp r0, #0 + bne _0829AF64 + movs r0, #0x20 + b _0829AF66 + .align 2, 0 +_0829AF60: .4byte 0xFFFF0000 +_0829AF64: + adds r0, r2, #0 +_0829AF66: + bx lr + thumb_func_end _hi0bits + + thumb_func_start _lo0bits +_lo0bits: @ 0x0829AF68 + adds r3, r0, #0 + ldr r1, [r3] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _0829AF98 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0829AF80 + movs r0, #0 + b _0829AFE8 +_0829AF80: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0829AF90 + lsrs r0, r1, #1 + str r0, [r3] + movs r0, #1 + b _0829AFE8 +_0829AF90: + lsrs r0, r1, #2 + str r0, [r3] + movs r0, #2 + b _0829AFE8 +_0829AF98: + movs r2, #0 + ldr r0, _0829AFE0 + ands r0, r1 + cmp r0, #0 + bne _0829AFA6 + movs r2, #0x10 + lsrs r1, r1, #0x10 +_0829AFA6: + movs r0, #0xff + ands r0, r1 + cmp r0, #0 + bne _0829AFB2 + adds r2, #8 + lsrs r1, r1, #8 +_0829AFB2: + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0829AFBE + adds r2, #4 + lsrs r1, r1, #4 +_0829AFBE: + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829AFCA + adds r2, #2 + lsrs r1, r1, #2 +_0829AFCA: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0829AFE4 + adds r2, #1 + lsrs r1, r1, #1 + cmp r1, #0 + bne _0829AFE4 + movs r0, #0x20 + b _0829AFE8 + .align 2, 0 +_0829AFE0: .4byte 0x0000FFFF +_0829AFE4: + str r1, [r3] + adds r0, r2, #0 +_0829AFE8: + bx lr + .align 2, 0 + thumb_func_end _lo0bits + + thumb_func_start _i2b +_i2b: @ 0x0829AFEC + push {r4, lr} + adds r4, r1, #0 + movs r1, #1 + bl _Balloc + str r4, [r0, #0x14] + movs r1, #1 + str r1, [r0, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end _i2b + + thumb_func_start _multiply +_multiply: @ 0x0829B000 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [r4, #0x10] + ldr r0, [r5, #0x10] + cmp r1, r0 + bge _0829B020 + str r4, [sp] + adds r4, r5, #0 + ldr r5, [sp] +_0829B020: + ldr r1, [r4, #4] + ldr r6, [r4, #0x10] + ldr r0, [r5, #0x10] + mov r8, r0 + mov r2, r8 + adds r2, r6, r2 + str r2, [sp, #4] + ldr r0, [r4, #8] + cmp r2, r0 + ble _0829B036 + adds r1, #1 +_0829B036: + adds r0, r3, #0 + bl _Balloc + str r0, [sp] + adds r7, r0, #0 + adds r7, #0x14 + ldr r1, [sp, #4] + lsls r0, r1, #2 + adds r2, r7, r0 + str r2, [sp, #8] + str r0, [sp, #0x18] + adds r1, r4, #0 + adds r1, #0x14 + lsls r3, r6, #2 + adds r2, r5, #0 + adds r2, #0x14 + mov r5, r8 + lsls r4, r5, #2 + ldr r0, [sp, #8] + cmp r7, r0 + bhs _0829B06A + movs r0, #0 +_0829B062: + stm r7!, {r0} + ldr r5, [sp, #8] + cmp r7, r5 + blo _0829B062 +_0829B06A: + str r1, [sp, #8] + adds r3, r1, r3 + str r3, [sp, #0xc] + mov r8, r2 + add r4, r8 + str r4, [sp, #0x10] + ldr r0, [sp] + adds r0, #0x14 + mov sb, r0 + mov r1, sb + str r1, [sp, #0x20] + cmp r8, r4 + bhs _0829B132 +_0829B084: + mov r2, r8 + ldm r2!, {r6} + str r2, [sp, #0x14] + ldr r0, _0829B140 + ands r6, r0 + mov r4, sb + adds r4, #4 + str r4, [sp, #0x1c] + cmp r6, #0 + beq _0829B0DC + ldr r7, [sp, #8] + mov r5, sb + movs r1, #0 + mov ip, r1 + mov sl, r0 +_0829B0A2: + ldm r7!, {r3} + adds r0, r3, #0 + mov r2, sl + ands r0, r2 + adds r1, r0, #0 + muls r1, r6, r1 + ldr r2, [r5] + adds r0, r2, #0 + mov r4, sl + ands r0, r4 + adds r1, r1, r0 + mov r0, ip + adds r4, r1, r0 + lsrs r1, r4, #0x10 + lsrs r3, r3, #0x10 + adds r0, r3, #0 + muls r0, r6, r0 + lsrs r2, r2, #0x10 + adds r0, r0, r2 + adds r2, r0, r1 + lsrs r0, r2, #0x10 + mov ip, r0 + strh r2, [r5] + strh r4, [r5, #2] + adds r5, #4 + ldr r1, [sp, #0xc] + cmp r7, r1 + blo _0829B0A2 + str r0, [r5] +_0829B0DC: + mov r2, r8 + ldrh r6, [r2, #2] + cmp r6, #0 + beq _0829B124 + ldr r7, [sp, #8] + mov r5, sb + movs r4, #0 + mov ip, r4 + ldr r2, [r5] + ldr r3, _0829B140 +_0829B0F0: + ldm r7!, {r1} + adds r0, r1, #0 + ands r0, r3 + muls r0, r6, r0 + ldrh r4, [r5, #2] + adds r4, r4, r0 + mov r8, r4 + add r4, ip + lsrs r0, r4, #0x10 + mov ip, r0 + strh r4, [r5] + strh r2, [r5, #2] + adds r5, #4 + lsrs r1, r1, #0x10 + muls r1, r6, r1 + ldr r0, [r5] + ands r0, r3 + adds r1, r1, r0 + mov r4, ip + adds r2, r1, r4 + lsrs r0, r2, #0x10 + mov ip, r0 + ldr r1, [sp, #0xc] + cmp r7, r1 + blo _0829B0F0 + str r2, [r5] +_0829B124: + ldr r2, [sp, #0x14] + mov r8, r2 + ldr r4, [sp, #0x1c] + mov sb, r4 + ldr r5, [sp, #0x10] + cmp r8, r5 + blo _0829B084 +_0829B132: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x18] + adds r5, r0, r1 + ldr r2, [sp, #4] + cmp r2, #0 + ble _0829B156 + b _0829B14E + .align 2, 0 +_0829B140: .4byte 0x0000FFFF +_0829B144: + ldr r4, [sp, #4] + subs r4, #1 + str r4, [sp, #4] + cmp r4, #0 + ble _0829B156 +_0829B14E: + subs r5, #4 + ldr r0, [r5] + cmp r0, #0 + beq _0829B144 +_0829B156: + ldr r5, [sp, #4] + ldr r0, [sp] + str r5, [r0, #0x10] + ldr r0, [sp] + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _multiply + + thumb_func_start _pow5mult +_pow5mult: @ 0x0829B16C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r1, #3 + ands r1, r6 + cmp r1, #0 + beq _0829B196 + ldr r0, _0829B1B8 + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + mov r0, r8 + adds r1, r7, #0 + movs r3, #0 + bl _multadd + adds r7, r0, #0 +_0829B196: + asrs r6, r6, #2 + cmp r6, #0 + beq _0829B1FC + mov r0, r8 + ldr r5, [r0, #0x48] + adds r4, r5, #0 + cmp r5, #0 + bne _0829B1D8 + ldr r1, _0829B1BC + bl _i2b + mov r1, r8 + str r0, [r1, #0x48] + adds r5, r0, #0 + str r4, [r5] + b _0829B1D8 + .align 2, 0 +_0829B1B8: .4byte gUnknown_890F228 +_0829B1BC: .4byte 0x00000271 +_0829B1C0: + ldr r0, [r5] + adds r4, r0, #0 + cmp r0, #0 + bne _0829B1D6 + mov r0, r8 + adds r1, r5, #0 + adds r2, r5, #0 + bl _multiply + str r0, [r5] + str r4, [r0] +_0829B1D6: + adds r5, r0, #0 +_0829B1D8: + movs r0, #1 + ands r0, r6 + cmp r0, #0 + beq _0829B1F6 + mov r0, r8 + adds r1, r7, #0 + adds r2, r5, #0 + bl _multiply + adds r4, r0, #0 + mov r0, r8 + adds r1, r7, #0 + bl _Bfree + adds r7, r4, #0 +_0829B1F6: + asrs r6, r6, #1 + cmp r6, #0 + bne _0829B1C0 +_0829B1FC: + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + thumb_func_end _pow5mult + + thumb_func_start _lshift +_lshift: @ 0x0829B204 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov r8, r1 + adds r5, r2, #0 + asrs r6, r5, #5 + ldr r1, [r1, #4] + mov r2, r8 + ldr r0, [r2, #0x10] + adds r0, r6, r0 + adds r7, r0, #1 + ldr r2, [r2, #8] + cmp r7, r2 + ble _0829B22E +_0829B226: + adds r1, #1 + lsls r2, r2, #1 + cmp r7, r2 + bgt _0829B226 +_0829B22E: + mov r0, sl + bl _Balloc + mov sb, r0 + mov r4, sb + adds r4, #0x14 + mov r0, r8 + adds r0, #0x14 + cmp r6, #0 + ble _0829B24E + movs r1, #0 + adds r2, r6, #0 +_0829B246: + stm r4!, {r1} + subs r2, #1 + cmp r2, #0 + bne _0829B246 +_0829B24E: + adds r3, r0, #0 + mov r1, r8 + ldr r0, [r1, #0x10] + lsls r0, r0, #2 + adds r6, r3, r0 + movs r0, #0x1f + ands r5, r0 + cmp r5, #0 + beq _0829B280 + movs r0, #0x20 + subs r1, r0, r5 + movs r2, #0 +_0829B266: + ldr r0, [r3] + lsls r0, r5 + orrs r0, r2 + stm r4!, {r0} + ldm r3!, {r2} + lsrs r2, r1 + cmp r3, r6 + blo _0829B266 + str r2, [r4] + cmp r2, #0 + beq _0829B288 + adds r7, #1 + b _0829B288 +_0829B280: + ldm r3!, {r0} + stm r4!, {r0} + cmp r3, r6 + blo _0829B280 +_0829B288: + subs r0, r7, #1 + mov r2, sb + str r0, [r2, #0x10] + mov r0, sl + mov r1, r8 + bl _Bfree + mov r0, sb + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _lshift + + thumb_func_start __mcmp +__mcmp: @ 0x0829B2A4 + push {r4, r5, lr} + adds r2, r0, #0 + adds r5, r1, #0 + ldr r0, [r2, #0x10] + ldr r1, [r5, #0x10] + subs r0, r0, r1 + cmp r0, #0 + bne _0829B2E0 + adds r4, r2, #0 + adds r4, #0x14 + lsls r1, r1, #2 + adds r3, r4, r1 + adds r0, r5, #0 + adds r0, #0x14 + adds r1, r0, r1 +_0829B2C2: + subs r3, #4 + subs r1, #4 + ldr r0, [r3] + ldr r2, [r1] + cmp r0, r2 + beq _0829B2DA + movs r1, #1 + cmp r0, r2 + bhs _0829B2D6 + subs r1, #2 +_0829B2D6: + adds r0, r1, #0 + b _0829B2E0 +_0829B2DA: + cmp r3, r4 + bhi _0829B2C2 + movs r0, #0 +_0829B2E0: + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end __mcmp + + thumb_func_start __mdiff +__mdiff: @ 0x0829B2E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r0, #0 + adds r5, r1, #0 + mov r8, r2 + adds r0, r5, #0 + mov r1, r8 + bl __mcmp + adds r4, r0, #0 + cmp r4, #0 + bne _0829B316 + adds r0, r6, #0 + movs r1, #0 + bl _Balloc + adds r7, r0, #0 + movs r0, #1 + str r0, [r7, #0x10] + str r4, [r7, #0x14] + b _0829B3C6 +_0829B316: + cmp r4, #0 + bge _0829B324 + adds r7, r5, #0 + mov r5, r8 + mov r8, r7 + movs r4, #1 + b _0829B326 +_0829B324: + movs r4, #0 +_0829B326: + ldr r1, [r5, #4] + adds r0, r6, #0 + bl _Balloc + adds r7, r0, #0 + str r4, [r7, #0xc] + ldr r0, [r5, #0x10] + mov sb, r0 + adds r6, r5, #0 + adds r6, #0x14 + lsls r0, r0, #2 + adds r0, r0, r6 + mov sl, r0 + mov r1, r8 + ldr r0, [r1, #0x10] + movs r3, #0x14 + add r3, r8 + mov ip, r3 + lsls r0, r0, #2 + add r0, ip + str r0, [sp] + adds r4, r7, #0 + adds r4, #0x14 + movs r5, #0 + ldr r0, _0829B3B0 + mov r8, r0 +_0829B35A: + ldm r6!, {r1} + str r1, [sp, #4] + mov r3, r8 + ands r1, r3 + mov r0, ip + adds r0, #4 + mov ip, r0 + subs r0, #4 + ldm r0!, {r2} + adds r0, r2, #0 + ands r0, r3 + subs r1, r1, r0 + adds r0, r1, r5 + asrs r5, r0, #0x10 + ldr r1, [sp, #4] + lsrs r3, r1, #0x10 + lsrs r2, r2, #0x10 + subs r3, r3, r2 + adds r1, r3, r5 + asrs r5, r1, #0x10 + strh r1, [r4] + strh r0, [r4, #2] + adds r4, #4 + ldr r3, [sp] + cmp ip, r3 + blo _0829B35A + cmp r6, sl + bhs _0829B3BA + ldr r2, _0829B3B0 +_0829B394: + ldm r6!, {r1} + adds r0, r1, #0 + ands r0, r2 + adds r0, r0, r5 + asrs r5, r0, #0x10 + lsrs r1, r1, #0x10 + adds r1, r1, r5 + asrs r5, r1, #0x10 + strh r1, [r4] + strh r0, [r4, #2] + adds r4, #4 + cmp r6, sl + blo _0829B394 + b _0829B3BA + .align 2, 0 +_0829B3B0: .4byte 0x0000FFFF +_0829B3B4: + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 +_0829B3BA: + subs r4, #4 + ldr r0, [r4] + cmp r0, #0 + beq _0829B3B4 + mov r1, sb + str r1, [r7, #0x10] +_0829B3C6: + adds r0, r7, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + thumb_func_end __mdiff + + thumb_func_start _ulp +_ulp: @ 0x0829B3D4 + push {r4, lr} + ldr r2, _0829B3E8 + ands r2, r0 + ldr r0, _0829B3EC + adds r2, r2, r0 + cmp r2, #0 + ble _0829B3F0 + adds r3, r2, #0 + movs r4, #0 + b _0829B41A + .align 2, 0 +_0829B3E8: .4byte 0x7FF00000 +_0829B3EC: .4byte 0xFCC00000 +_0829B3F0: + rsbs r0, r2, #0 + asrs r2, r0, #0x14 + cmp r2, #0x13 + bgt _0829B404 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r3, r0, #0 + asrs r3, r2 + movs r4, #0 + b _0829B41A +_0829B404: + movs r3, #0 + subs r2, #0x14 + cmp r2, #0x1e + bgt _0829B416 + movs r0, #0x1f + subs r0, r0, r2 + movs r1, #1 + lsls r1, r0 + b _0829B418 +_0829B416: + movs r1, #1 +_0829B418: + adds r4, r1, #0 +_0829B41A: + adds r1, r4, #0 + adds r0, r3, #0 + pop {r4, pc} + thumb_func_end _ulp + + thumb_func_start _b2d +_b2d: @ 0x0829B420 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r1, #0 + movs r1, #0x14 + adds r1, r1, r0 + mov r8, r1 + ldr r0, [r0, #0x10] + lsls r0, r0, #2 + adds r5, r1, r0 + subs r5, #4 + ldr r2, [r5] + adds r0, r2, #0 + str r2, [sp] + bl _hi0bits + adds r3, r0, #0 + movs r0, #0x20 + subs r0, r0, r3 + str r0, [r4] + ldr r2, [sp] + cmp r3, #0xa + bgt _0829B480 + movs r0, #0xb + subs r0, r0, r3 + adds r1, r2, #0 + lsrs r1, r0 + ldr r0, _0829B468 + adds r6, r1, #0 + orrs r6, r0 + cmp r5, r8 + bls _0829B46C + subs r5, #4 + ldr r1, [r5] + b _0829B46E + .align 2, 0 +_0829B468: .4byte 0x3FF00000 +_0829B46C: + movs r1, #0 +_0829B46E: + adds r0, r3, #0 + adds r0, #0x15 + lsls r2, r0 + movs r0, #0xb + subs r0, r0, r3 + lsrs r1, r0 + adds r7, r2, #0 + orrs r7, r1 + b _0829B4CC +_0829B480: + cmp r5, r8 + bls _0829B48A + subs r5, #4 + ldr r4, [r5] + b _0829B48C +_0829B48A: + movs r4, #0 +_0829B48C: + subs r3, #0xb + cmp r3, #0 + beq _0829B4C4 + lsls r2, r3 + movs r0, #0x20 + subs r0, r0, r3 + adds r1, r4, #0 + lsrs r1, r0 + ldr r0, _0829B4B0 + orrs r1, r0 + adds r6, r2, #0 + orrs r6, r1 + cmp r5, r8 + bls _0829B4B4 + subs r5, #4 + ldr r2, [r5] + b _0829B4B6 + .align 2, 0 +_0829B4B0: .4byte 0x3FF00000 +_0829B4B4: + movs r2, #0 +_0829B4B6: + lsls r4, r3 + movs r0, #0x20 + subs r0, r0, r3 + lsrs r2, r0 + adds r7, r4, #0 + orrs r7, r2 + b _0829B4CC +_0829B4C4: + ldr r0, _0829B4D8 + adds r6, r2, #0 + orrs r6, r0 + adds r7, r4, #0 +_0829B4CC: + adds r1, r7, #0 + adds r0, r6, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B4D8: .4byte 0x3FF00000 + thumb_func_end _b2d + + thumb_func_start _d2b +_d2b: @ 0x0829B4DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r3 + ldr r3, [sp, #0x28] + mov sl, r3 + adds r5, r2, #0 + adds r4, r1, #0 + movs r1, #1 + bl _Balloc + adds r6, r0, #0 + movs r0, #0x14 + adds r0, r0, r6 + mov r8, r0 + ldr r2, _0829B544 + adds r1, r4, #0 + ands r2, r1 + str r2, [sp, #4] + ldr r0, _0829B548 + ands r4, r0 + lsrs r7, r4, #0x14 + cmp r7, #0 + beq _0829B51A + movs r0, #0x80 + lsls r0, r0, #0xd + orrs r0, r2 + str r0, [sp, #4] +_0829B51A: + str r5, [sp] + cmp r5, #0 + beq _0829B564 + mov r0, sp + bl _lo0bits + adds r2, r0, #0 + cmp r2, #0 + beq _0829B54C + movs r0, #0x20 + subs r0, r0, r2 + ldr r1, [sp, #4] + lsls r1, r0 + ldr r0, [sp] + orrs r0, r1 + str r0, [r6, #0x14] + ldr r0, [sp, #4] + lsrs r0, r2 + str r0, [sp, #4] + b _0829B550 + .align 2, 0 +_0829B544: .4byte 0x000FFFFF +_0829B548: .4byte 0x7FFFFFFF +_0829B54C: + ldr r0, [sp] + str r0, [r6, #0x14] +_0829B550: + ldr r0, [sp, #4] + mov r1, r8 + str r0, [r1, #4] + movs r1, #1 + cmp r0, #0 + beq _0829B55E + movs r1, #2 +_0829B55E: + str r1, [r6, #0x10] + adds r4, r1, #0 + b _0829B578 +_0829B564: + add r0, sp, #4 + bl _lo0bits + adds r2, r0, #0 + ldr r0, [sp, #4] + str r0, [r6, #0x14] + movs r0, #1 + str r0, [r6, #0x10] + movs r4, #1 + adds r2, #0x20 +_0829B578: + cmp r7, #0 + beq _0829B594 + ldr r3, _0829B590 + adds r0, r2, r3 + adds r0, r7, r0 + mov r1, sb + str r0, [r1] + movs r0, #0x35 + subs r0, r0, r2 + mov r3, sl + str r0, [r3] + b _0829B5B0 + .align 2, 0 +_0829B590: .4byte 0xFFFFFBCD +_0829B594: + ldr r1, _0829B5C0 + adds r0, r2, r1 + mov r3, sb + str r0, [r3] + lsls r0, r4, #2 + add r0, r8 + subs r0, #4 + ldr r0, [r0] + bl _hi0bits + lsls r1, r4, #5 + subs r1, r1, r0 + mov r0, sl + str r1, [r0] +_0829B5B0: + adds r0, r6, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B5C0: .4byte 0xFFFFFBCE + thumb_func_end _d2b + + thumb_func_start _ratio +_ratio: @ 0x0829B5C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + mov r1, sp + bl _b2d + str r0, [sp, #8] + str r1, [sp, #0xc] + add r1, sp, #4 + adds r0, r5, #0 + bl _b2d + adds r7, r1, #0 + adds r6, r0, #0 + ldr r2, [sp] + ldr r0, [sp, #4] + subs r2, r2, r0 + ldr r0, [r4, #0x10] + ldr r1, [r5, #0x10] + subs r0, r0, r1 + lsls r0, r0, #5 + adds r0, r2, r0 + cmp r0, #0 + ble _0829B600 + lsls r0, r0, #0x14 + ldr r1, [sp, #8] + adds r0, r1, r0 + str r0, [sp, #8] + b _0829B604 +_0829B600: + lsls r0, r0, #0x14 + subs r6, r6, r0 +_0829B604: + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + adds r3, r7, #0 + adds r2, r6, #0 + bl __divdf3 + add sp, #0x10 + pop {r4, r5, r6, r7, pc} + thumb_func_end _ratio + + thumb_func_start _mprec_log10 +_mprec_log10: @ 0x0829B614 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0829B630 + ldr r0, _0829B62C + cmp r4, #0x17 + bgt _0829B638 + ldr r0, _0829B634 + lsls r1, r4, #3 + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, [r1, #4] + b _0829B64A + .align 2, 0 +_0829B62C: .4byte 0x3FF00000 +_0829B630: .4byte 0x00000000 +_0829B634: .4byte gUnknown_890F234 +_0829B638: + cmp r4, #0 + ble _0829B64A +_0829B63C: + ldr r3, _0829B650 + ldr r2, _0829B64C + bl __muldf3 + subs r4, #1 + cmp r4, #0 + bgt _0829B63C +_0829B64A: + pop {r4, pc} + .align 2, 0 +_0829B64C: .4byte 0x40240000 +_0829B650: .4byte 0x00000000 + thumb_func_end _mprec_log10 + + thumb_func_start isinf +isinf: @ 0x0829B654 + ldr r3, _0829B670 + ands r3, r0 + rsbs r2, r1, #0 + orrs r2, r1 + lsrs r2, r2, #0x1f + orrs r3, r2 + ldr r0, _0829B674 + subs r3, r0, r3 + rsbs r0, r3, #0 + orrs r3, r0 + lsrs r3, r3, #0x1f + movs r0, #1 + subs r0, r0, r3 + bx lr + .align 2, 0 +_0829B670: .4byte 0x7FFFFFFF +_0829B674: .4byte 0x7FF00000 + thumb_func_end isinf + + thumb_func_start isnan +isnan: @ 0x0829B678 + ldr r3, _0829B690 + ands r3, r0 + rsbs r2, r1, #0 + orrs r2, r1 + lsrs r2, r2, #0x1f + orrs r3, r2 + ldr r0, _0829B694 + subs r3, r0, r3 + lsrs r3, r3, #0x1f + adds r0, r3, #0 + bx lr + .align 2, 0 +_0829B690: .4byte 0x7FFFFFFF +_0829B694: .4byte 0x7FF00000 + thumb_func_end isnan + + thumb_func_start _sbrk_r +_sbrk_r: @ 0x0829B698 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + ldr r4, _0829B6C0 + movs r1, #0 + str r1, [r4] + bl _sbrk + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829B6BA + ldr r0, [r4] + cmp r0, #0 + beq _0829B6BA + str r0, [r5] +_0829B6BA: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829B6C0: .4byte gUnknown_300764C + thumb_func_end _sbrk_r + + thumb_func_start __sread +__sread: @ 0x0829B6C4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r0, [r5, #0x54] + movs r2, #0xe + ldrsh r1, [r5, r2] + adds r2, r4, #0 + bl _read_r + adds r1, r0, #0 + cmp r1, #0 + blt _0829B6E6 + ldr r0, [r5, #0x50] + adds r0, r0, r1 + str r0, [r5, #0x50] + b _0829B6EE +_0829B6E6: + ldr r0, _0829B6F4 + ldrh r2, [r5, #0xc] + ands r0, r2 + strh r0, [r5, #0xc] +_0829B6EE: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829B6F4: .4byte 0xFFFFEFFF + thumb_func_end __sread + + thumb_func_start __swrite +__swrite: @ 0x0829B6F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + movs r0, #0x80 + lsls r0, r0, #1 + ldrh r1, [r4, #0xc] + ands r0, r1 + cmp r0, #0 + beq _0829B71A + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #2 + bl _lseek_r +_0829B71A: + ldr r0, _0829B734 + ldrh r1, [r4, #0xc] + ands r0, r1 + strh r0, [r4, #0xc] + ldr r0, [r4, #0x54] + movs r2, #0xe + ldrsh r1, [r4, r2] + adds r2, r5, #0 + adds r3, r6, #0 + bl _write_r + pop {r4, r5, r6, pc} + .align 2, 0 +_0829B734: .4byte 0xFFFFEFFF + thumb_func_end __swrite + + thumb_func_start __sseek +__sseek: @ 0x0829B738 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + ldr r0, [r5, #0x54] + movs r2, #0xe + ldrsh r1, [r5, r2] + adds r2, r4, #0 + bl _lseek_r + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829B764 + ldr r0, _0829B760 + ldrh r2, [r5, #0xc] + ands r0, r2 + strh r0, [r5, #0xc] + b _0829B772 + .align 2, 0 +_0829B760: .4byte 0xFFFFEFFF +_0829B764: + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r2, #0 + ldrh r2, [r5, #0xc] + orrs r0, r2 + strh r0, [r5, #0xc] + str r1, [r5, #0x50] +_0829B772: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end __sseek + + thumb_func_start __sclose +__sclose: @ 0x0829B778 + push {lr} + ldr r2, [r0, #0x54] + movs r3, #0xe + ldrsh r1, [r0, r3] + adds r0, r2, #0 + bl _close_r + pop {pc} + thumb_func_end __sclose + + thumb_func_start strlen +strlen: @ 0x0829B788 + push {r4, r5, lr} + adds r1, r0, #0 + adds r5, r1, #0 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0829B7C0 + adds r2, r1, #0 + ldr r1, [r2] + ldr r4, _0829B7A4 + adds r0, r1, r4 + bics r0, r1 + ldr r3, _0829B7A8 + b _0829B7B4 + .align 2, 0 +_0829B7A4: .4byte 0xFEFEFEFF +_0829B7A8: .4byte 0x80808080 +_0829B7AC: + adds r2, #4 + ldr r1, [r2] + adds r0, r1, r4 + bics r0, r1 +_0829B7B4: + ands r0, r3 + cmp r0, #0 + beq _0829B7AC + adds r1, r2, #0 + b _0829B7C0 +_0829B7BE: + adds r1, #1 +_0829B7C0: + ldrb r0, [r1] + cmp r0, #0 + bne _0829B7BE + subs r0, r1, r5 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end strlen + + thumb_func_start sub_0829B7CC +sub_0829B7CC: @ 0x0829B7CC + adds r3, r0, #0 + movs r1, #0 + ldr r2, _0829B7D4 + b _0829B7E0 + .align 2, 0 +_0829B7D4: .4byte gUnknown_3001AB0 +_0829B7D8: + adds r2, #8 + adds r1, #1 + cmp r1, #0x13 + bgt _0829B7E6 +_0829B7E0: + ldr r0, [r2] + cmp r0, r3 + bne _0829B7D8 +_0829B7E6: + adds r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0829B7CC + + thumb_func_start sub_0829B7EC +sub_0829B7EC: @ 0x0829B7EC + adds r2, r0, #0 + ldr r0, _0829B800 + ldr r1, [r0] + ldr r0, [r1, #4] + movs r3, #0xe + ldrsh r0, [r0, r3] + cmp r2, r0 + bne _0829B808 + ldr r0, _0829B804 + b _0829B82E + .align 2, 0 +_0829B800: .4byte gUnknown_203CF1C +_0829B804: .4byte gUnknown_3001AA4 +_0829B808: + ldr r0, [r1, #8] + movs r3, #0xe + ldrsh r0, [r0, r3] + cmp r2, r0 + bne _0829B81C + ldr r0, _0829B818 + b _0829B82E + .align 2, 0 +_0829B818: .4byte gUnknown_3001AA8 +_0829B81C: + ldr r0, [r1, #0xc] + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r2, r0 + beq _0829B82C + adds r0, r2, #0 + subs r0, #0x20 + b _0829B830 +_0829B82C: + ldr r0, _0829B834 +_0829B82E: + ldr r0, [r0] +_0829B830: + bx lr + .align 2, 0 +_0829B834: .4byte gUnknown_3001AAC + thumb_func_end sub_0829B7EC + + thumb_func_start initialise_monitor_handles +initialise_monitor_handles: @ 0x0829B838 + push {r4, r5, lr} + sub sp, #0xc + ldr r4, _0829B894 + str r4, [sp] + movs r3, #3 + str r3, [sp, #8] + movs r0, #0 + str r0, [sp, #4] + movs r5, #1 + adds r0, r5, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + ldr r5, _0829B898 + str r2, [r5] + str r4, [sp] + str r3, [sp, #8] + movs r0, #4 + str r0, [sp, #4] + ldr r3, _0829B89C + movs r4, #1 + adds r0, r4, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + ldr r0, _0829B8A0 + str r2, [r0] + str r2, [r3] + ldr r2, _0829B8A4 + adds r1, r2, #0 + subs r4, #2 + adds r0, r2, #0 + adds r0, #0x98 +_0829B87A: + str r4, [r0] + subs r0, #8 + cmp r0, r1 + bge _0829B87A + movs r0, #0 + ldr r1, [r5] + str r1, [r2] + str r0, [r2, #4] + ldr r1, [r3] + str r1, [r2, #8] + str r0, [r2, #0xc] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0829B894: .4byte gUnknown_890F34C +_0829B898: .4byte gUnknown_3001AA4 +_0829B89C: .4byte gUnknown_3001AA8 +_0829B8A0: .4byte gUnknown_3001AAC +_0829B8A4: .4byte gUnknown_3001AB0 + thumb_func_end initialise_monitor_handles + + thumb_func_start sub_0829B8A8 +sub_0829B8A8: @ 0x0829B8A8 + push {r4, lr} + movs r3, #0x13 + movs r4, #0 + adds r0, r3, #0 + adds r1, r4, #0 + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end sub_0829B8A8 + + thumb_func_start sub_0829B8BC +sub_0829B8BC: @ 0x0829B8BC + push {r4, r5, lr} + adds r5, r0, #0 + bl __errno + adds r4, r0, #0 + bl sub_0829B8A8 + str r0, [r4] + adds r0, r5, #0 + pop {r4, r5, pc} + thumb_func_end sub_0829B8BC + + thumb_func_start sub_0829B8D0 +sub_0829B8D0: @ 0x0829B8D0 + push {lr} + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0829B8E0 + adds r0, r1, #0 + b _0829B8E6 +_0829B8E0: + adds r0, r1, #0 + bl sub_0829B8BC +_0829B8E6: + pop {pc} + thumb_func_end sub_0829B8D0 + + thumb_func_start _swiread +_swiread: @ 0x0829B8E8 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_0829B7EC + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r3, #6 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _swiread + + thumb_func_start _read +_read: @ 0x0829B90C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + bl sub_0829B7EC + bl sub_0829B7CC + adds r6, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl _swiread + cmp r0, #0 + bge _0829B936 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0829B8BC + b _0829B94C +_0829B936: + subs r2, r7, r0 + cmp r6, #0x14 + beq _0829B94A + ldr r0, _0829B950 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] +_0829B94A: + adds r0, r2, #0 +_0829B94C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B950: .4byte gUnknown_3001AB0 + thumb_func_end _read + + thumb_func_start _swilseek +_swilseek: @ 0x0829B954 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + adds r5, r1, #0 + adds r4, r2, #0 + bl sub_0829B7EC + adds r7, r0, #0 + bl sub_0829B7CC + adds r6, r0, #0 + cmp r4, #1 + bne _0829B98A + cmp r6, #0x14 + bne _0829B97C + movs r0, #1 + rsbs r0, r0, #0 + b _0829B9CC +_0829B97C: + ldr r0, _0829B9D4 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r5, r5, r0 + movs r4, #0 +_0829B98A: + cmp r4, #2 + bne _0829B99C + str r7, [sp] + movs r3, #0xc + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r5, r5, r2 +_0829B99C: + mov r0, r8 + bl sub_0829B7EC + str r0, [sp] + str r5, [sp, #4] + movs r3, #0xa + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + cmp r6, #0x14 + beq _0829B9C2 + cmp r2, #0 + bne _0829B9C2 + ldr r0, _0829B9D4 + lsls r1, r6, #3 + adds r0, #4 + adds r1, r1, r0 + str r5, [r1] +_0829B9C2: + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, #0 + bne _0829B9CC + adds r0, r5, #0 +_0829B9CC: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829B9D4: .4byte gUnknown_3001AB0 + thumb_func_end _swilseek + + thumb_func_start _lseek +_lseek: @ 0x0829B9D8 + push {lr} + bl _swilseek + bl sub_0829B8D0 + pop {pc} + thumb_func_end _lseek + + thumb_func_start _swiwrite +_swiwrite: @ 0x0829B9E4 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_0829B7EC + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r3, #5 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _swiwrite + + thumb_func_start _write +_write: @ 0x0829BA08 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_0829B7EC + bl sub_0829B7CC + adds r7, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl _swiwrite + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0829BA30 + cmp r0, r6 + bne _0829BA38 +_0829BA30: + adds r0, r1, #0 + bl sub_0829B8BC + b _0829BA4E +_0829BA38: + subs r2, r6, r0 + cmp r7, #0x14 + beq _0829BA4C + ldr r0, _0829BA50 + lsls r1, r7, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] +_0829BA4C: + adds r0, r2, #0 +_0829BA4E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0829BA50: .4byte gUnknown_3001AB0 + thumb_func_end _write + + thumb_func_start _swiopen +_swiopen: @ 0x0829BA54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r7, r0, #0 + adds r4, r1, #0 + movs r5, #0 + movs r6, #1 + rsbs r6, r6, #0 + adds r0, r6, #0 + bl sub_0829B7CC + mov r8, r0 + cmp r0, #0x14 + bne _0829BA76 + adds r0, r6, #0 + b _0829BAEA +_0829BA76: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0829BA80 + movs r5, #2 +_0829BA80: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0829BA8E + movs r0, #4 + orrs r5, r0 +_0829BA8E: + movs r0, #0x80 + lsls r0, r0, #3 + ands r0, r4 + cmp r0, #0 + beq _0829BA9C + movs r0, #4 + orrs r5, r0 +_0829BA9C: + movs r1, #8 + ands r4, r1 + cmp r4, #0 + beq _0829BAAC + movs r0, #5 + rsbs r0, r0, #0 + ands r5, r0 + orrs r5, r1 +_0829BAAC: + str r7, [sp] + adds r0, r7, #0 + bl strlen + str r0, [sp, #8] + str r5, [sp, #4] + movs r2, #1 + adds r0, r2, #0 + mov r1, sp + svc #0xab + adds r3, r0, #0 + cmp r3, #0 + blt _0829BAE4 + ldr r0, _0829BAE0 + mov r1, r8 + lsls r2, r1, #3 + adds r1, r2, r0 + str r3, [r1] + adds r0, #4 + adds r2, r2, r0 + movs r0, #0 + str r0, [r2] + adds r0, r3, #0 + adds r0, #0x20 + b _0829BAEA + .align 2, 0 +_0829BAE0: .4byte gUnknown_3001AB0 +_0829BAE4: + adds r0, r3, #0 + bl sub_0829B8BC +_0829BAEA: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end _swiopen + + thumb_func_start _open +_open: @ 0x0829BAF4 + push {r1, r2, r3} + push {lr} + ldr r1, [sp, #4] + bl _swiopen + bl sub_0829B8D0 + pop {r3} + add sp, #0xc + bx r3 + thumb_func_end _open + + thumb_func_start _swiclose +_swiclose: @ 0x0829BB08 + push {lr} + sub sp, #4 + bl sub_0829B7EC + str r0, [sp] + bl sub_0829B7CC + adds r1, r0, #0 + cmp r1, #0x14 + beq _0829BB28 + ldr r0, _0829BB38 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] +_0829BB28: + movs r3, #2 + adds r0, r3, #0 + mov r1, sp + svc #0xab + adds r2, r0, #0 + adds r0, r2, #0 + add sp, #4 + pop {pc} + .align 2, 0 +_0829BB38: .4byte gUnknown_3001AB0 + thumb_func_end _swiclose + + thumb_func_start _close +_close: @ 0x0829BB3C + push {lr} + bl _swiclose + bl sub_0829B8D0 + pop {pc} + thumb_func_end _close + + thumb_func_start _exit +_exit: @ 0x0829BB48 + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BB64 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BB64: .4byte 0x00020026 + thumb_func_end _exit + + thumb_func_start _kill +_kill: @ 0x0829BB68 + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BB84 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BB84: .4byte 0x00020026 + thumb_func_end _kill + + thumb_func_start _getpid +_getpid: @ 0x0829BB88 + movs r0, #1 + bx lr + thumb_func_end _getpid + + thumb_func_start _sbrk +_sbrk: @ 0x0829BB8C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _0829BBBC + ldr r0, [r4] + cmp r0, #0 + bne _0829BB9C + ldr r0, _0829BBC0 + str r0, [r4] +_0829BB9C: + ldr r5, [r4] + adds r0, r5, r6 + cmp r0, sp + bls _0829BBB2 + ldr r1, _0829BBC4 + movs r0, #1 + movs r2, #0x20 + bl _write + bl abort +_0829BBB2: + ldr r0, [r4] + adds r0, r0, r6 + str r0, [r4] + adds r0, r5, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0829BBBC: .4byte gUnknown_3001AA0 +_0829BBC0: .4byte gUnknown_88BA568 +_0829BBC4: .4byte gUnknown_890F350 + thumb_func_end _sbrk + + thumb_func_start _fstat +_fstat: @ 0x0829BBC8 + movs r0, #0x80 + lsls r0, r0, #6 + str r0, [r1, #4] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end _fstat + + thumb_func_start _unlink +_unlink: @ 0x0829BBD4 + movs r0, #1 + rsbs r0, r0, #0 + bx lr + .align 2, 0 + thumb_func_end _unlink + + thumb_func_start _raise +_raise: @ 0x0829BBDC + bx lr + .align 2, 0 + thumb_func_end _raise + + thumb_func_start _gettimeofday +_gettimeofday: @ 0x0829BBE0 + push {r4, r5, lr} + adds r2, r0, #0 + adds r3, r1, #0 + cmp r2, #0 + beq _0829BBFE + movs r4, #0x11 + movs r5, #0 + adds r0, r4, #0 + adds r1, r5, #0 + svc #0xab + adds r5, r0, #0 + adds r4, r5, #0 + str r4, [r2] + movs r0, #0 + str r0, [r2, #4] +_0829BBFE: + cmp r3, #0 + beq _0829BC08 + movs r0, #0 + str r0, [r3] + str r0, [r3, #4] +_0829BC08: + movs r0, #0 + pop {r4, r5, pc} + thumb_func_end _gettimeofday + + thumb_func_start _times +_times: @ 0x0829BC0C + push {r4, r5, lr} + adds r2, r0, #0 + movs r4, #0x10 + movs r5, #0 + adds r0, r4, #0 + adds r1, r5, #0 + svc #0xab + adds r3, r0, #0 + cmp r2, #0 + beq _0829BC2A + str r3, [r2] + movs r0, #0 + str r0, [r2, #4] + str r0, [r2, #8] + str r0, [r2, #0xc] +_0829BC2A: + adds r0, r3, #0 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end _times + + thumb_func_start _write_r +_write_r: @ 0x0829BC30 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BC5C + movs r3, #0 + str r3, [r4] + bl _write + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BC56 + ldr r0, [r4] + cmp r0, #0 + beq _0829BC56 + str r0, [r5] +_0829BC56: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BC5C: .4byte gUnknown_300764C + thumb_func_end _write_r + + thumb_func_start _calloc_r +_calloc_r: @ 0x0829BC60 + push {r4, lr} + muls r1, r2, r1 + bl _malloc_r + adds r4, r0, #0 + cmp r4, #0 + bne _0829BC72 + movs r0, #0 + b _0829BCB6 +_0829BC72: + adds r0, r4, #0 + subs r0, #8 + ldr r0, [r0, #4] + movs r1, #4 + rsbs r1, r1, #0 + ands r0, r1 + subs r2, r0, #4 + cmp r2, #0x24 + bhi _0829BCAC + adds r1, r4, #0 + cmp r2, #0x13 + bls _0829BCA2 + movs r0, #0 + stm r1!, {r0} + str r0, [r4, #4] + adds r1, #4 + cmp r2, #0x1b + bls _0829BCA2 + stm r1!, {r0} + stm r1!, {r0} + cmp r2, #0x23 + bls _0829BCA2 + stm r1!, {r0} + stm r1!, {r0} +_0829BCA2: + movs r0, #0 + stm r1!, {r0} + stm r1!, {r0} + str r0, [r1] + b _0829BCB4 +_0829BCAC: + adds r0, r4, #0 + movs r1, #0 + bl memset +_0829BCB4: + adds r0, r4, #0 +_0829BCB6: + pop {r4, pc} + thumb_func_end _calloc_r + + thumb_func_start _close_r +_close_r: @ 0x0829BCB8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + ldr r4, _0829BCE0 + movs r1, #0 + str r1, [r4] + bl _close + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BCDA + ldr r0, [r4] + cmp r0, #0 + beq _0829BCDA + str r0, [r5] +_0829BCDA: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BCE0: .4byte gUnknown_300764C + thumb_func_end _close_r + + thumb_func_start __errno +__errno: @ 0x0829BCE4 + ldr r0, _0829BCEC + ldr r0, [r0] + bx lr + .align 2, 0 +_0829BCEC: .4byte gUnknown_203CF1C + thumb_func_end __errno + + thumb_func_start _fstat_r +_fstat_r: @ 0x0829BCF0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + ldr r4, _0829BD18 + movs r2, #0 + str r2, [r4] + bl _fstat + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD14 + ldr r0, [r4] + cmp r0, #0 + beq _0829BD14 + str r0, [r5] +_0829BD14: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BD18: .4byte gUnknown_300764C + thumb_func_end _fstat_r + + thumb_func_start abort +abort: @ 0x0829BD1C + mov ip, r3 + mov r3, r8 + push {r3} + mov r3, ip + movs r2, #0x18 + ldr r3, _0829BD38 + adds r0, r2, #0 + adds r1, r3, #0 + svc #0xab + mov r8, r0 + pop {r3} + mov r8, r3 + bx lr + .align 2, 0 +_0829BD38: .4byte 0x00020022 + thumb_func_end abort + + thumb_func_start isatty +isatty: @ 0x0829BD3C + movs r0, #1 + bx lr + thumb_func_end isatty + + thumb_func_start alarm +alarm: @ 0x0829BD40 + bx lr + .align 2, 0 + thumb_func_end alarm + + thumb_func_start _lseek_r +_lseek_r: @ 0x0829BD44 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BD70 + movs r3, #0 + str r3, [r4] + bl _lseek + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD6A + ldr r0, [r4] + cmp r0, #0 + beq _0829BD6A + str r0, [r5] +_0829BD6A: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BD70: .4byte gUnknown_300764C + thumb_func_end _lseek_r + + thumb_func_start _read_r +_read_r: @ 0x0829BD74 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r4, _0829BDA0 + movs r3, #0 + str r3, [r4] + bl _read + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0829BD9A + ldr r0, [r4] + cmp r0, #0 + beq _0829BD9A + str r0, [r5] +_0829BD9A: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 +_0829BDA0: .4byte gUnknown_300764C diff --git a/asm/m4a.s b/asm/m4a.s new file mode 100644 index 0000000..11d135d --- /dev/null +++ b/asm/m4a.s @@ -0,0 +1,5323 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start umul3232H32 +umul3232H32: @ 0x0828D5D4 + add r2, pc, #0x0 + bx r2 + thumb_func_end umul3232H32 + + arm_func_start __umul3232H32 +__umul3232H32: @ 0x0828D5D8 + umull r2, r3, r0, r1 + add r0, r3, #0 + bx lr + arm_func_end __umul3232H32 + + thumb_func_start SoundMain +SoundMain: @ 0x0828D5E4 + ldr r0, _0828D650 + ldr r0, [r0] + ldr r2, _0828D654 + ldr r3, [r0] + cmp r2, r3 + beq _0828D5F2 + bx lr +_0828D5F2: + adds r3, #1 + str r3, [r0] + push {r4, r5, r6, r7, lr} + mov r1, r8 + mov r2, sb + mov r3, sl + mov r4, fp + push {r0, r1, r2, r3, r4} + sub sp, #0x18 + ldrb r1, [r0, #0xc] + cmp r1, #0 + beq _0828D616 + ldr r2, _0828D65C + ldrb r2, [r2] + cmp r2, #0xa0 + bhs _0828D614 + adds r2, #0xe4 +_0828D614: + adds r1, r1, r2 +_0828D616: + str r1, [sp, #0x14] + ldr r3, [r0, #0x20] + cmp r3, #0 + beq _0828D626 + ldr r0, [r0, #0x24] + bl sub_0828DA1E + ldr r0, [sp, #0x18] +_0828D626: + ldr r3, [r0, #0x28] + bl sub_0828DA1E + ldr r0, [sp, #0x18] + ldr r3, [r0, #0x10] + mov r8, r3 + ldr r5, _0828D660 + adds r5, r5, r0 + ldrb r4, [r0, #4] + subs r7, r4, #1 + bls _0828D646 + ldrb r1, [r0, #0xb] + subs r1, r1, r7 + mov r2, r8 + muls r2, r1, r2 + adds r5, r5, r2 +_0828D646: + str r5, [sp, #8] + ldr r6, _0828D664 + ldr r3, _0828D658 + bx r3 + .align 2, 0 +_0828D650: .4byte gUnknown_3007FF0 +_0828D654: .4byte 0x68736D53 +_0828D658: .4byte gUnknown_3001B51 +_0828D65C: .4byte 0x04000006 +_0828D660: .4byte 0x00000350 +_0828D664: .4byte 0x00000630 + thumb_func_end SoundMain + + thumb_func_start SoundMainRAM +SoundMainRAM: @ 0x0828D668 + ldrb r3, [r0, #5] + cmp r3, #0 + beq _0828D6C8 + add r1, pc, #0x4 + bx r1 + .align 2, 0 + thumb_func_end SoundMainRAM + + arm_func_start SoundMainRAM_Reverb +SoundMainRAM_Reverb: @ 0x0828D674 + cmp r4, #2 + addeq r7, r0, #0x350 + addne r7, r5, r8 + mov r4, r8 +_0828D684: + ldrsb r0, [r5, r6] + ldrsb r1, [r5] + add r0, r0, r1 + ldrsb r1, [r7, r6] + add r0, r0, r1 + ldrsb r1, [r7], #1 + add r0, r0, r1 + mul r1, r0, r3 + asr r0, r1, #9 + tst r0, #0x80 + addne r0, r0, #1 + strb r0, [r5, r6] + strb r0, [r5], #1 + subs r4, r4, #1 + bgt _0828D684 + add r0, pc, #0x2f + bx r0 + .thumb +_0828D6C8: + movs r0, #0 + mov r1, r8 + adds r6, r6, r5 + lsrs r1, r1, #3 + blo _0828D6D6 + stm r5!, {r0} + stm r6!, {r0} +_0828D6D6: + lsrs r1, r1, #1 + blo _0828D6E2 + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} +_0828D6E2: + 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 _0828D6E2 + ldr r4, [sp, #0x18] + ldr r0, [r4, #0x18] + mov ip, r0 + ldrb r0, [r4, #6] + adds r4, #0x50 +_0828D700: + str r0, [sp, #4] + ldr r3, [r4, #0x24] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0828D720 + ldr r1, _0828D71C + ldrb r1, [r1] + cmp r1, #0xa0 + bhs _0828D714 + adds r1, #0xe4 +_0828D714: + cmp r1, r0 + blo _0828D720 + b _0828DA0A + .align 2, 0 +_0828D71C: .4byte 0x04000006 +_0828D720: + ldrb r6, [r4] + movs r0, #0xc7 + tst r0, r6 + bne _0828D72A + b _0828DA00 +_0828D72A: + movs r0, #0x80 + tst r0, r6 + beq _0828D760 + movs r0, #0x40 + tst r0, r6 + bne _0828D770 + movs r6, #3 + strb r6, [r4] + adds r0, r3, #0 + adds r0, #0x10 + ldr r1, [r4, #0x18] + adds r0, r0, r1 + str r0, [r4, #0x28] + ldr r0, [r3, #0xc] + subs r0, r0, r1 + str r0, [r4, #0x18] + movs r5, #0 + strb r5, [r4, #9] + str r5, [r4, #0x1c] + ldrb r2, [r3, #3] + movs r0, #0xc0 + tst r0, r2 + beq _0828D7B8 + movs r0, #0x10 + orrs r6, r0 + strb r6, [r4] + b _0828D7B8 +_0828D760: + ldrb r5, [r4, #9] + movs r0, #4 + tst r0, r6 + beq _0828D776 + ldrb r0, [r4, #0xd] + subs r0, #1 + strb r0, [r4, #0xd] + bhi _0828D7C6 +_0828D770: + movs r0, #0 + strb r0, [r4] + b _0828DA00 +_0828D776: + movs r0, #0x40 + tst r0, r6 + beq _0828D796 + ldrb r0, [r4, #7] + muls r5, r0, r5 + lsrs r5, r5, #8 + ldrb r0, [r4, #0xc] + cmp r5, r0 + bhi _0828D7C6 +_0828D788: + ldrb r5, [r4, #0xc] + cmp r5, #0 + beq _0828D770 + movs r0, #4 + orrs r6, r0 + strb r6, [r4] + b _0828D7C6 +_0828D796: + movs r2, #3 + ands r2, r6 + cmp r2, #2 + bne _0828D7B4 + ldrb r0, [r4, #5] + muls r5, r0, r5 + lsrs r5, r5, #8 + ldrb r0, [r4, #6] + cmp r5, r0 + bhi _0828D7C6 + adds r5, r0, #0 + beq _0828D788 + subs r6, #1 + strb r6, [r4] + b _0828D7C6 +_0828D7B4: + cmp r2, #3 + bne _0828D7C6 +_0828D7B8: + ldrb r0, [r4, #4] + adds r5, r5, r0 + cmp r5, #0xff + blo _0828D7C6 + movs r5, #0xff + subs r6, #1 + strb r6, [r4] +_0828D7C6: + strb r5, [r4, #9] + ldr r0, [sp, #0x18] + ldrb r0, [r0, #7] + adds r0, #1 + muls r0, r5, r0 + lsrs r5, r0, #4 + ldrb r0, [r4, #2] + muls r0, r5, r0 + lsrs r0, r0, #8 + strb r0, [r4, #0xa] + ldrb r0, [r4, #3] + muls r0, r5, r0 + lsrs r0, r0, #8 + strb r0, [r4, #0xb] + movs r0, #0x10 + ands r0, r6 + str r0, [sp, #0x10] + beq _0828D7FA + adds r0, r3, #0 + adds r0, #0x10 + ldr r1, [r3, #8] + adds r0, r0, r1 + str r0, [sp, #0xc] + ldr r0, [r3, #0xc] + subs r0, r0, r1 + str r0, [sp, #0x10] +_0828D7FA: + ldr r5, [sp, #8] + ldr r2, [r4, #0x18] + ldr r3, [r4, #0x28] + add r0, pc, #0x0 + bx r0 + arm_func_end SoundMainRAM_Reverb + + arm_func_start sub_0828D804 +sub_0828D804: @ 0x0828D804 + str r8, [sp] + ldr sb, [r4, #0x1c] + ldrb sl, [r4, #0xa] + ldrb fp, [r4, #0xb] + ldrb r0, [r4, #1] + tst r0, #0x30 + beq _0828D828 + bl sub_0828DA24 + b _0828D9E8 +_0828D828: + lsl sl, sl, #0x10 + lsl fp, fp, #0x10 + ldrb r0, [r4, #1] + tst r0, #8 + beq _0828D95C +_0828D83C: + cmp r2, #4 + ble _0828D8AC + subs r2, r2, r8 + movgt sb, #0 + bgt _0828D868 + mov sb, r8 + add r2, r2, r8 + sub r8, r2, #4 + sub sb, sb, r8 + ands r2, r2, #3 + moveq r2, #4 +_0828D868: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828D870: + ldrsb r0, [r3], #1 + mul r1, sl, r0 + bic r1, r1, #0xff0000 + add r6, r1, r6, ror #8 + mul r1, fp, r0 + bic r1, r1, #0xff0000 + add r7, r1, r7, ror #8 + adds r5, r5, #0x40000000 + blo _0828D870 + str r7, [r5, #0x630] + str r6, [r5], #4 + subs r8, r8, #4 + bgt _0828D868 + adds r8, r8, sb + beq _0828D9EC +_0828D8AC: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828D8B4: + ldrsb r0, [r3], #1 + mul r1, sl, r0 + bic r1, r1, #0xff0000 + add r6, r1, r6, ror #8 + mul r1, fp, r0 + bic r1, r1, #0xff0000 + add r7, r1, r7, ror #8 + subs r2, r2, #1 + beq _0828D924 +_0828D8D8: + adds r5, r5, #0x40000000 + blo _0828D8B4 + str r7, [r5, #0x630] + str r6, [r5], #4 + subs r8, r8, #4 + bgt _0828D83C + b _0828D9EC +_0828D8F4: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0828D918 + ldr r3, [sp, #0x14] + rsb lr, r2, #0 +_0828D908: + adds r2, r0, r2 + bgt _0828D9BC + sub lr, lr, r0 + b _0828D908 +_0828D918: + pop {r4, ip} + mov r2, #0 + b _0828D934 +_0828D924: + ldr r2, [sp, #0x10] + cmp r2, #0 + ldrne r3, [sp, #0xc] + bne _0828D8D8 +_0828D934: + strb r2, [r4] + lsr r0, r5, #0x1e + bic r5, r5, #0xc0000000 + rsb r0, r0, #3 + lsl r0, r0, #3 + ror r6, r6, r0 + ror r7, r7, r0 + str r7, [r5, #0x630] + str r6, [r5], #4 + b _0828D9F4 +_0828D95C: + push {r4, ip} + ldr r1, [r4, #0x20] + mul r4, ip, r1 + ldrsb r0, [r3] + ldrsb r1, [r3, #1]! + sub r1, r1, r0 +_0828D974: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828D97C: + mul lr, sb, r1 + add lr, r0, lr, asr #23 + mul ip, sl, lr + bic ip, ip, #0xff0000 + add r6, ip, r6, ror #8 + mul ip, fp, lr + bic ip, ip, #0xff0000 + add r7, ip, r7, ror #8 + add sb, sb, r4 + lsrs lr, sb, #0x17 + beq _0828D9C8 + bic sb, sb, #0x3f800000 + subs r2, r2, lr + ble _0828D8F4 + subs lr, lr, #1 + addeq r0, r0, r1 +_0828D9BC: + ldrsbne r0, [r3, lr]! + ldrsb r1, [r3, #1]! + sub r1, r1, r0 +_0828D9C8: + adds r5, r5, #0x40000000 + blo _0828D97C + str r7, [r5, #0x630] + str r6, [r5], #4 + subs r8, r8, #4 + bgt _0828D974 + sub r3, r3, #1 + pop {r4, ip} +_0828D9E8: + str sb, [r4, #0x1c] +_0828D9EC: + str r2, [r4, #0x18] + str r3, [r4, #0x28] +_0828D9F4: + ldr r8, [sp] + add r0, pc, #1 + bx r0 + .thumb +_0828DA00: + ldr r0, [sp, #4] + subs r0, #1 + ble _0828DA0A + adds r4, #0x40 + b _0828D700 +_0828DA0A: + ldr r0, [sp, #0x18] + ldr r3, _0828DA20 + str r3, [r0] + add sp, #0x1c + pop {r0, r1, r2, r3, r4, r5, r6, r7} + mov r8, r0 + mov sb, r1 + mov sl, r2 + mov fp, r3 + pop {r3} + arm_func_end sub_0828D804 + + non_word_aligned_thumb_func_start sub_0828DA1E +sub_0828DA1E: @ 0x0828DA1E + bx r3 + .align 2, 0 +_0828DA20: .4byte 0x68736D53 + thumb_func_end sub_0828DA1E + + arm_func_start sub_0828DA24 +sub_0828DA24: @ 0x0828DA24 + ldr r6, [r4, #0x24] + ldrb r0, [r4] + tst r0, #0x20 + bne _0828DA74 + orr r0, r0, #0x20 + strb r0, [r4] + ldrb r0, [r4, #1] + tst r0, #0x10 + beq _0828DA5C + ldr r1, [r6, #0xc] + add r1, r1, r6, lsl #1 + add r1, r1, #0x20 + sub r3, r1, r3 + str r3, [r4, #0x28] +_0828DA5C: + ldrh r0, [r6] + cmp r0, #0 + beq _0828DA74 + sub r3, r3, r6 + sub r3, r3, #0x10 + str r3, [r4, #0x28] +_0828DA74: + push {r8, ip, lr} + lsl sl, sl, #0x10 + lsl fp, fp, #0x10 + ldr r1, [r4, #0x20] + ldrb r0, [r4, #1] + tst r0, #8 + movne r8, #0x800000 + muleq r8, ip, r1 + ldrh r0, [r6] + cmp r0, #0 + beq _0828DC28 + mov r0, #-0x1000000 + str r0, [r4, #0x3c] + ldrb r0, [r4, #1] + tst r0, #0x10 + bne _0828DB80 + bl sub_0828DCE0 + mov r0, r1 + add r3, r3, #1 + bl sub_0828DCE0 + sub r1, r1, r0 +_0828DAC8: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828DAD0: + mul lr, sb, r1 + add lr, r0, lr, asr #23 + mul ip, sl, lr + bic ip, ip, #0xff0000 + add r6, ip, r6, ror #8 + mul ip, fp, lr + bic ip, ip, #0xff0000 + add r7, ip, r7, ror #8 + add sb, sb, r8 + lsrs lr, sb, #0x17 + beq _0828DB30 + bic sb, sb, #0x3f800000 + subs r2, r2, lr + ble _0828DB58 + subs lr, lr, #1 + bne _0828DB18 + add r0, r0, r1 + b _0828DB24 +_0828DB18: + add r3, r3, lr + bl sub_0828DCE0 + mov r0, r1 +_0828DB24: + add r3, r3, #1 + bl sub_0828DCE0 + sub r1, r1, r0 +_0828DB30: + adds r5, r5, #0x40000000 + blo _0828DAD0 + str r7, [r5, #0x630] + str r6, [r5], #4 + ldr r6, [sp] + subs r6, r6, #4 + str r6, [sp] + bgt _0828DAC8 + sub r3, r3, #1 + b _0828DCB0 +_0828DB58: + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _0828DCB4 + ldr r3, [r4, #0x24] + ldr r3, [r3, #8] + rsb lr, r2, #0 +_0828DB70: + adds r2, r2, r0 + bgt _0828DB18 + sub lr, lr, r0 + b _0828DB70 +_0828DB80: + sub r3, r3, #1 + bl sub_0828DCE0 + mov r0, r1 + sub r3, r3, #1 + bl sub_0828DCE0 + sub r1, r1, r0 +_0828DB98: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828DBA0: + mul lr, sb, r1 + add lr, r0, lr, asr #23 + mul ip, sl, lr + bic ip, ip, #0xff0000 + add r6, ip, r6, ror #8 + mul ip, fp, lr + bic ip, ip, #0xff0000 + add r7, ip, r7, ror #8 + add sb, sb, r8 + lsrs lr, sb, #0x17 + beq _0828DC00 + bic sb, sb, #0x3f800000 + subs r2, r2, lr + ble _0828DCB4 + subs lr, lr, #1 + bne _0828DBE8 + add r0, r0, r1 + b _0828DBF4 +_0828DBE8: + sub r3, r3, lr + bl sub_0828DCE0 + mov r0, r1 +_0828DBF4: + sub r3, r3, #1 + bl sub_0828DCE0 + sub r1, r1, r0 +_0828DC00: + adds r5, r5, #0x40000000 + blo _0828DBA0 + str r7, [r5, #0x630] + str r6, [r5], #4 + ldr r6, [sp] + subs r6, r6, #4 + str r6, [sp] + bgt _0828DB98 + add r3, r3, #2 + b _0828DCB0 +_0828DC28: + ldrb r0, [r4, #1] + tst r0, #0x10 + beq _0828DCB0 + ldrsb r0, [r3, #-1]! + ldrsb r1, [r3, #-1] + sub r1, r1, r0 +_0828DC40: + ldr r6, [r5] + ldr r7, [r5, #0x630] +_0828DC48: + mul lr, sb, r1 + add lr, r0, lr, asr #23 + mul ip, sl, lr + bic ip, ip, #0xff0000 + add r6, ip, r6, ror #8 + mul ip, fp, lr + bic ip, ip, #0xff0000 + add r7, ip, r7, ror #8 + add sb, sb, r8 + lsrs lr, sb, #0x17 + beq _0828DC8C + bic sb, sb, #0x3f800000 + subs r2, r2, lr + ble _0828DCB4 + ldrsb r0, [r3, -lr]! + ldrsb r1, [r3, #-1] + sub r1, r1, r0 +_0828DC8C: + adds r5, r5, #0x40000000 + blo _0828DC48 + str r7, [r5, #0x630] + str r6, [r5], #4 + ldr r6, [sp] + subs r6, r6, #4 + str r6, [sp] + bgt _0828DC40 + add r3, r3, #1 +_0828DCB0: + pop {r8, ip, pc} +_0828DCB4: + mov r2, #0 + strb r2, [r4] + lsr r0, r5, #0x1e + bic r5, r5, #0xc0000000 + rsb r0, r0, #3 + lsl r0, r0, #3 + ror r6, r6, r0 + ror r7, r7, r0 + str r7, [r5, #0x630] + str r6, [r5], #4 + pop {r8, ip, pc} + arm_func_end sub_0828DA24 + + arm_func_start sub_0828DCE0 +sub_0828DCE0: @ 0x0828DCE0 + push {r0, r2, r5, r6, r7, lr} + lsr r0, r3, #6 + ldr r1, [r4, #0x3c] + cmp r0, r1 + beq _0828DD54 + str r0, [r4, #0x3c] + mov r1, #0x21 + mul r2, r1, r0 + ldr r1, [r4, #0x24] + add r2, r2, r1 + add r2, r2, #0x10 + ldr r5, _0828DD64 + ldr r6, _0828DD68 + mov r7, #0x40 + ldrb lr, [r2], #1 + strb lr, [r5], #1 + ldrb r1, [r2], #1 + b _0828DD3C +_0828DD28: + ldrb r1, [r2], #1 + lsr r0, r1, #4 + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], #1 +_0828DD3C: + and r0, r1, #0xf + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], #1 + subs r7, r7, #2 + bgt _0828DD28 +_0828DD54: + ldr r5, _0828DD64 + and r0, r3, #0x3f + ldrsb r1, [r5, r0] + pop {r0, r2, r5, r6, r7, pc} + .align 2, 0 +_0828DD64: .4byte gUnknown_30012F8 +_0828DD68: .4byte gUnknown_85FD590 + arm_func_end sub_0828DCE0 + + thumb_func_start SoundMainBTM +SoundMainBTM: @ 0x0828DD6C + mov ip, r4 + movs r1, #0 + movs r2, #0 + movs r3, #0 + movs r4, #0 + stm r0!, {r1, r2, r3, r4} + stm r0!, {r1, r2, r3, r4} + stm r0!, {r1, r2, r3, r4} + stm r0!, {r1, r2, r3, r4} + mov r4, ip + bx lr + .align 2, 0 + thumb_func_end SoundMainBTM + + thumb_func_start RealClearChain +RealClearChain: @ 0x0828DD84 + ldr r3, [r0, #0x2c] + cmp r3, #0 + beq _0828DDA2 + ldr r1, [r0, #0x34] + ldr r2, [r0, #0x30] + cmp r2, #0 + beq _0828DD96 + str r1, [r2, #0x34] + b _0828DD98 +_0828DD96: + str r1, [r3, #0x20] +_0828DD98: + cmp r1, #0 + beq _0828DD9E + str r2, [r1, #0x30] +_0828DD9E: + movs r1, #0 + str r1, [r0, #0x2c] +_0828DDA2: + bx lr +ply_fine: + push {r4, r5, lr} + adds r5, r1, #0 + ldr r4, [r5, #0x20] + cmp r4, #0 + beq _0828DDC8 +_0828DDAE: + ldrb r1, [r4] + movs r0, #0xc7 + tst r0, r1 + beq _0828DDBC + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4] +_0828DDBC: + adds r0, r4, #0 + bl RealClearChain + ldr r4, [r4, #0x34] + cmp r4, #0 + bne _0828DDAE +_0828DDC8: + movs r0, #0 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end RealClearChain + + thumb_func_start MPlayJumpTableCopy +MPlayJumpTableCopy: @ 0x0828DDD4 + mov ip, lr + movs r1, #0x24 + ldr r2, _0828DE04 +_0828DDDA: + ldr r3, [r2] + bl _0828DDEE + stm r0!, {r3} + adds r2, #4 + subs r1, #1 + bgt _0828DDDA + bx ip + .align 2, 0 + thumb_func_end MPlayJumpTableCopy + + thumb_func_start sub_0828DDEC +sub_0828DDEC: @ 0x0828DDEC + ldrb r3, [r2] +_0828DDEE: + push {r0} + lsrs r0, r2, #0x19 + bne _0828DE00 + ldr r0, _0828DE04 + cmp r2, r0 + blo _0828DDFE + lsrs r0, r2, #0xe + beq _0828DE00 +_0828DDFE: + movs r3, #0 +_0828DE00: + pop {r0} + bx lr + .align 2, 0 +_0828DE04: .4byte gUnknown_85FD500 + thumb_func_end sub_0828DDEC + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i: @ 0x0828DE08 + ldr r2, [r1, #0x40] + thumb_func_end ld_r3_tp_adr_i + + non_word_aligned_thumb_func_start sub_0828DE0A +sub_0828DE0A: @ 0x0828DE0A + adds r3, r2, #1 + str r3, [r1, #0x40] + ldrb r3, [r2] + b _0828DDEE + .align 2, 0 +ply_goto: + push {lr} +_0828DE16: + ldr r2, [r1, #0x40] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + ldrb r3, [r2, #2] + orrs r0, r3 + lsls r0, r0, #8 + ldrb r3, [r2, #1] + orrs r0, r3 + lsls r0, r0, #8 + bl sub_0828DDEC + orrs r0, r3 + str r0, [r1, #0x40] + pop {r0} + bx r0 + thumb_func_end sub_0828DE0A + + thumb_func_start ply_patt +ply_patt: @ 0x0828DE34 + ldrb r2, [r1, #2] + cmp r2, #3 + bhs _0828DE4C + lsls r2, r2, #2 + adds r3, r1, r2 + ldr r2, [r1, #0x40] + adds r2, #4 + str r2, [r3, #0x44] + ldrb r2, [r1, #2] + adds r2, #1 + strb r2, [r1, #2] + b ply_goto +_0828DE4C: + b ply_fine + .align 2, 0 + thumb_func_end ply_patt + + thumb_func_start ply_pend +ply_pend: @ 0x0828DE50 + ldrb r2, [r1, #2] + cmp r2, #0 + beq _0828DE62 + subs r2, #1 + strb r2, [r1, #2] + lsls r2, r2, #2 + adds r3, r1, r2 + ldr r2, [r3, #0x44] + str r2, [r1, #0x40] +_0828DE62: + bx lr + thumb_func_end ply_pend + + thumb_func_start ply_rept +ply_rept: @ 0x0828DE64 + push {lr} + ldr r2, [r1, #0x40] + ldrb r3, [r2] + cmp r3, #0 + bne _0828DE74 + adds r2, #1 + str r2, [r1, #0x40] + b _0828DE16 +_0828DE74: + ldrb r3, [r1, #3] + adds r3, #1 + strb r3, [r1, #3] + mov ip, r3 + bl ld_r3_tp_adr_i + cmp ip, r3 + bhs _0828DE86 + b _0828DE16 +_0828DE86: + movs r3, #0 + strb r3, [r1, #3] + adds r2, #5 + str r2, [r1, #0x40] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end ply_rept + + thumb_func_start ply_prio +ply_prio: @ 0x0828DE94 + mov ip, lr + bl ld_r3_tp_adr_i + strb r3, [r1, #0x1d] + bx ip + .align 2, 0 + thumb_func_end ply_prio + + thumb_func_start ply_tempo +ply_tempo: @ 0x0828DEA0 + mov ip, lr + bl ld_r3_tp_adr_i + lsls r3, r3, #1 + strh r3, [r0, #0x1c] + ldrh r2, [r0, #0x1e] + muls r3, r2, r3 + lsrs r3, r3, #8 + strh r3, [r0, #0x20] + bx ip + thumb_func_end ply_tempo + + thumb_func_start ply_keysh +ply_keysh: @ 0x0828DEB4 + mov ip, lr + bl ld_r3_tp_adr_i + strb r3, [r1, #0xa] + ldrb r3, [r1] + movs r2, #0xc + orrs r3, r2 + strb r3, [r1] + bx ip + .align 2, 0 + thumb_func_end ply_keysh + + thumb_func_start ply_voice +ply_voice: @ 0x0828DEC8 + mov ip, lr + ldr r2, [r1, #0x40] + ldrb r3, [r2] + adds r2, #1 + str r2, [r1, #0x40] + lsls r2, r3, #1 + adds r2, r2, r3 + lsls r2, r2, #2 + ldr r3, [r0, #0x30] + adds r2, r2, r3 + ldr r3, [r2] + bl _0828DDEE + str r3, [r1, #0x24] + ldr r3, [r2, #4] + bl _0828DDEE + str r3, [r1, #0x28] + ldr r3, [r2, #8] + bl _0828DDEE + str r3, [r1, #0x2c] + bx ip + .align 2, 0 + thumb_func_end ply_voice + + thumb_func_start ply_vol +ply_vol: @ 0x0828DEF8 + mov ip, lr + bl ld_r3_tp_adr_i + strb r3, [r1, #0x12] + ldrb r3, [r1] + movs r2, #3 + orrs r3, r2 + strb r3, [r1] + bx ip + .align 2, 0 + thumb_func_end ply_vol + + thumb_func_start ply_pan +ply_pan: @ 0x0828DF0C + mov ip, lr + bl ld_r3_tp_adr_i + subs r3, #0x40 + strb r3, [r1, #0x14] + ldrb r3, [r1] + movs r2, #3 + orrs r3, r2 + strb r3, [r1] + bx ip + thumb_func_end ply_pan + + thumb_func_start ply_bend +ply_bend: @ 0x0828DF20 + mov ip, lr + bl ld_r3_tp_adr_i + subs r3, #0x40 + strb r3, [r1, #0xe] + ldrb r3, [r1] + movs r2, #0xc + orrs r3, r2 + strb r3, [r1] + bx ip + thumb_func_end ply_bend + + thumb_func_start ply_bendr +ply_bendr: @ 0x0828DF34 + mov ip, lr + bl ld_r3_tp_adr_i + strb r3, [r1, #0xf] + ldrb r3, [r1] + movs r2, #0xc + orrs r3, r2 + strb r3, [r1] + bx ip + .align 2, 0 + thumb_func_end ply_bendr + + thumb_func_start ply_lfodl +ply_lfodl: @ 0x0828DF48 + mov ip, lr + bl ld_r3_tp_adr_i + strb r3, [r1, #0x1b] + bx ip + .align 2, 0 + thumb_func_end ply_lfodl + + thumb_func_start ply_modt +ply_modt: @ 0x0828DF54 + mov ip, lr + bl ld_r3_tp_adr_i + ldrb r0, [r1, #0x18] + cmp r0, r3 + beq _0828DF6A + strb r3, [r1, #0x18] + ldrb r3, [r1] + movs r2, #0xf + orrs r3, r2 + strb r3, [r1] +_0828DF6A: + bx ip + thumb_func_end ply_modt + + thumb_func_start ply_tune +ply_tune: @ 0x0828DF6C + mov ip, lr + bl ld_r3_tp_adr_i + subs r3, #0x40 + strb r3, [r1, #0xc] + ldrb r3, [r1] + movs r2, #0xc + orrs r3, r2 + strb r3, [r1] + bx ip + thumb_func_end ply_tune + + thumb_func_start ply_port +ply_port: @ 0x0828DF80 + mov ip, lr + ldr r2, [r1, #0x40] + ldrb r3, [r2] + adds r2, #1 + ldr r0, _0828DF94 + adds r0, r0, r3 + bl sub_0828DE0A + strb r3, [r0] + bx ip + .align 2, 0 +_0828DF94: .4byte 0x04000060 + thumb_func_end ply_port + + thumb_func_start m4aSoundVSync +m4aSoundVSync: @ 0x0828DF98 + ldr r0, _0828E244 + ldr r0, [r0] + ldr r2, _0828E248 + ldr r3, [r0] + subs r3, r3, r2 + cmp r3, #1 + bhi _0828DFD8 + ldrb r1, [r0, #4] + subs r1, #1 + strb r1, [r0, #4] + bgt _0828DFD8 + ldrb r1, [r0, #0xb] + strb r1, [r0, #4] + ldr r2, _0828DFDC + ldr r1, [r2, #8] + lsls r1, r1, #7 + blo _0828DFBE + ldr r1, _0828DFE0 + str r1, [r2, #8] +_0828DFBE: + ldr r1, [r2, #0x14] + lsls r1, r1, #7 + blo _0828DFC8 + ldr r1, _0828DFE0 + str r1, [r2, #0x14] +_0828DFC8: + movs r1, #4 + lsls r1, r1, #8 + strh r1, [r2, #0xa] + strh r1, [r2, #0x16] + movs r1, #0xb6 + lsls r1, r1, #8 + strh r1, [r2, #0xa] + strh r1, [r2, #0x16] +_0828DFD8: + bx lr + .align 2, 0 +_0828DFDC: .4byte 0x040000BC +_0828DFE0: .4byte 0x84400004 + thumb_func_end m4aSoundVSync + + thumb_func_start MPlayMain +MPlayMain: @ 0x0828DFE4 + ldr r2, _0828E248 + ldr r3, [r0, #0x34] + cmp r2, r3 + beq _0828DFEE + bx lr +_0828DFEE: + adds r3, #1 + str r3, [r0, #0x34] + push {r0, lr} + ldr r3, [r0, #0x38] + cmp r3, #0 + beq _0828E000 + ldr r0, [r0, #0x3c] + bl sub_0828E23C +_0828E000: + pop {r0} + push {r4, r5, r6, r7} + mov r4, r8 + mov r5, sb + mov r6, sl + mov r7, fp + push {r4, r5, r6, r7} + adds r7, r0, #0 + ldr r0, [r7, #4] + cmp r0, #0 + bge _0828E018 + b _0828E22C +_0828E018: + ldr r0, _0828E244 + ldr r0, [r0] + mov r8, r0 + adds r0, r7, #0 + bl FadeOutBody + ldr r0, [r7, #4] + cmp r0, #0 + bge _0828E02C + b _0828E22C +_0828E02C: + ldrh r0, [r7, #0x22] + ldrh r1, [r7, #0x20] + adds r0, r0, r1 + b _0828E17C +_0828E034: + ldrb r6, [r7, #8] + ldr r5, [r7, #0x2c] + movs r3, #1 + movs r4, #0 +_0828E03C: + ldrb r0, [r5] + movs r1, #0x80 + tst r1, r0 + bne _0828E046 + b _0828E158 +_0828E046: + mov sl, r3 + orrs r4, r3 + mov fp, r4 + ldr r4, [r5, #0x20] + cmp r4, #0 + beq _0828E07A +_0828E052: + ldrb r1, [r4] + movs r0, #0xc7 + tst r0, r1 + beq _0828E06E + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0828E074 + subs r0, #1 + strb r0, [r4, #0x10] + bne _0828E074 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4] + b _0828E074 +_0828E06E: + adds r0, r4, #0 + bl ClearChain +_0828E074: + ldr r4, [r4, #0x34] + cmp r4, #0 + bne _0828E052 +_0828E07A: + ldrb r3, [r5] + movs r0, #0x40 + tst r0, r3 + beq _0828E0F8 + adds r0, r5, #0 + bl Clear64byte + movs r0, #0x80 + strb r0, [r5] + movs r0, #2 + strb r0, [r5, #0xf] + movs r0, #0x40 + strb r0, [r5, #0x13] + movs r0, #0x16 + strb r0, [r5, #0x19] + movs r0, #1 + adds r1, r5, #6 + strb r0, [r1, #0x1e] + b _0828E0F8 +_0828E0A0: + ldr r2, [r5, #0x40] + ldrb r1, [r2] + cmp r1, #0x80 + bhs _0828E0AC + ldrb r1, [r5, #7] + b _0828E0B6 +_0828E0AC: + adds r2, #1 + str r2, [r5, #0x40] + cmp r1, #0xbd + blo _0828E0B6 + strb r1, [r5, #7] +_0828E0B6: + cmp r1, #0xcf + blo _0828E0CC + mov r0, r8 + ldr r3, [r0, #0x38] + adds r0, r1, #0 + subs r0, #0xcf + adds r1, r7, #0 + adds r2, r5, #0 + bl sub_0828E23C + b _0828E0F8 +_0828E0CC: + cmp r1, #0xb0 + bls _0828E0EE + adds r0, r1, #0 + subs r0, #0xb1 + strb r0, [r7, #0xa] + mov r3, r8 + ldr r3, [r3, #0x34] + lsls r0, r0, #2 + ldr r3, [r3, r0] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_0828E23C + ldrb r0, [r5] + cmp r0, #0 + beq _0828E154 + b _0828E0F8 +_0828E0EE: + ldr r0, _0828E240 + subs r1, #0x80 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r5, #1] +_0828E0F8: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _0828E0A0 + subs r0, #1 + strb r0, [r5, #1] + ldrb r1, [r5, #0x19] + cmp r1, #0 + beq _0828E154 + ldrb r0, [r5, #0x17] + cmp r0, #0 + beq _0828E154 + ldrb r0, [r5, #0x1c] + cmp r0, #0 + beq _0828E11A + subs r0, #1 + strb r0, [r5, #0x1c] + b _0828E154 +_0828E11A: + ldrb r0, [r5, #0x1a] + adds r0, r0, r1 + strb r0, [r5, #0x1a] + adds r1, r0, #0 + subs r0, #0x40 + lsls r0, r0, #0x18 + bpl _0828E12E + lsls r2, r1, #0x18 + asrs r2, r2, #0x18 + b _0828E132 +_0828E12E: + movs r0, #0x80 + subs r2, r0, r1 +_0828E132: + ldrb r0, [r5, #0x17] + muls r0, r2, r0 + asrs r2, r0, #6 + ldrb r0, [r5, #0x16] + eors r0, r2 + lsls r0, r0, #0x18 + beq _0828E154 + strb r2, [r5, #0x16] + ldrb r0, [r5] + ldrb r1, [r5, #0x18] + cmp r1, #0 + bne _0828E14E + movs r1, #0xc + b _0828E150 +_0828E14E: + movs r1, #3 +_0828E150: + orrs r0, r1 + strb r0, [r5] +_0828E154: + mov r3, sl + mov r4, fp +_0828E158: + subs r6, #1 + ble _0828E164 + movs r0, #0x50 + adds r5, r5, r0 + lsls r3, r3, #1 + b _0828E03C +_0828E164: + ldr r0, [r7, #0xc] + adds r0, #1 + str r0, [r7, #0xc] + cmp r4, #0 + bne _0828E176 + movs r0, #0x80 + lsls r0, r0, #0x18 + str r0, [r7, #4] + b _0828E22C +_0828E176: + str r4, [r7, #4] + ldrh r0, [r7, #0x22] + subs r0, #0x96 +_0828E17C: + strh r0, [r7, #0x22] + cmp r0, #0x96 + blo _0828E184 + b _0828E034 +_0828E184: + ldrb r2, [r7, #8] + ldr r5, [r7, #0x2c] +_0828E188: + ldrb r0, [r5] + movs r1, #0x80 + tst r1, r0 + beq _0828E222 + movs r1, #0xf + tst r1, r0 + beq _0828E222 + mov sb, r2 + adds r0, r7, #0 + adds r1, r5, #0 + bl TrkVolPitSet + ldr r4, [r5, #0x20] + cmp r4, #0 + beq _0828E218 +_0828E1A6: + ldrb r1, [r4] + movs r0, #0xc7 + tst r0, r1 + bne _0828E1B6 + adds r0, r4, #0 + bl ClearChain + b _0828E212 +_0828E1B6: + ldrb r0, [r4, #1] + movs r6, #7 + ands r6, r0 + ldrb r3, [r5] + movs r0, #3 + tst r0, r3 + beq _0828E1D4 + bl ChnVolSetAsm + cmp r6, #0 + beq _0828E1D4 + ldrb r0, [r4, #0x1d] + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x1d] +_0828E1D4: + ldrb r3, [r5] + movs r0, #0xc + tst r0, r3 + beq _0828E212 + ldrb r1, [r4, #8] + movs r0, #8 + ldrsb r0, [r5, r0] + adds r2, r1, r0 + bpl _0828E1E8 + movs r2, #0 +_0828E1E8: + cmp r6, #0 + beq _0828E206 + mov r0, r8 + ldr r3, [r0, #0x30] + adds r1, r2, #0 + ldrb r2, [r5, #9] + adds r0, r6, #0 + bl sub_0828E23C + str r0, [r4, #0x20] + ldrb r0, [r4, #0x1d] + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #0x1d] + b _0828E212 +_0828E206: + adds r1, r2, #0 + ldrb r2, [r5, #9] + ldr r0, [r4, #0x24] + bl MidiKeyToFreq + str r0, [r4, #0x20] +_0828E212: + ldr r4, [r4, #0x34] + cmp r4, #0 + bne _0828E1A6 +_0828E218: + ldrb r0, [r5] + movs r1, #0xf0 + ands r0, r1 + strb r0, [r5] + mov r2, sb +_0828E222: + subs r2, #1 + ble _0828E22C + movs r0, #0x50 + adds r5, r5, r0 + bgt _0828E188 +_0828E22C: + ldr r0, _0828E248 + str r0, [r7, #0x34] + pop {r0, r1, r2, r3, r4, r5, r6, r7} + mov r8, r0 + mov sb, r1 + mov sl, r2 + mov fp, r3 + pop {r3} + thumb_func_end MPlayMain + + thumb_func_start sub_0828E23C +sub_0828E23C: @ 0x0828E23C + bx r3 + .align 2, 0 +_0828E240: .4byte gUnknown_85FD784 +_0828E244: .4byte gUnknown_3007FF0 +_0828E248: .4byte 0x68736D53 + thumb_func_end sub_0828E23C + + thumb_func_start TrackStop +TrackStop: @ 0x0828E24C + push {r4, r5, r6, lr} + adds r5, r1, #0 + ldrb r1, [r5] + movs r0, #0x80 + tst r0, r1 + beq _0828E284 + ldr r4, [r5, #0x20] + cmp r4, #0 + beq _0828E282 + movs r6, #0 +_0828E260: + ldrb r0, [r4] + cmp r0, #0 + beq _0828E27A + ldrb r0, [r4, #1] + movs r3, #7 + ands r0, r3 + beq _0828E278 + ldr r3, _0828E28C + ldr r3, [r3] + ldr r3, [r3, #0x2c] + bl sub_0828E23C +_0828E278: + strb r6, [r4] +_0828E27A: + str r6, [r4, #0x2c] + ldr r4, [r4, #0x34] + cmp r4, #0 + bne _0828E260 +_0828E282: + str r4, [r5, #0x20] +_0828E284: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828E28C: .4byte gUnknown_3007FF0 + thumb_func_end TrackStop + + thumb_func_start ChnVolSetAsm +ChnVolSetAsm: @ 0x0828E290 + ldrb r1, [r4, #0x12] + movs r0, #0x14 + ldrsb r2, [r4, r0] + movs r3, #0x80 + adds r3, r3, r2 + muls r3, r1, r3 + ldrb r0, [r5, #0x10] + muls r0, r3, r0 + asrs r0, r0, #0xe + cmp r0, #0xff + bls _0828E2A8 + movs r0, #0xff +_0828E2A8: + strb r0, [r4, #2] + movs r3, #0x7f + subs r3, r3, r2 + muls r3, r1, r3 + ldrb r0, [r5, #0x11] + muls r0, r3, r0 + asrs r0, r0, #0xe + cmp r0, #0xff + bls _0828E2BC + movs r0, #0xff +_0828E2BC: + strb r0, [r4, #3] + bx lr + thumb_func_end ChnVolSetAsm + + thumb_func_start ply_note +ply_note: @ 0x0828E2C0 + push {r4, r5, r6, r7, lr} + mov r4, r8 + mov r5, sb + mov r6, sl + mov r7, fp + push {r4, r5, r6, r7} + sub sp, #0x18 + str r1, [sp] + adds r5, r2, #0 + ldr r1, _0828E4BC + ldr r1, [r1] + str r1, [sp, #4] + ldr r1, _0828E4C0 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #4] + ldr r3, [r5, #0x40] + ldrb r0, [r3] + cmp r0, #0x80 + bhs _0828E306 + strb r0, [r5, #5] + adds r3, #1 + ldrb r0, [r3] + cmp r0, #0x80 + bhs _0828E304 + strb r0, [r5, #6] + adds r3, #1 + ldrb r0, [r3] + cmp r0, #0x80 + bhs _0828E304 + ldrb r1, [r5, #4] + adds r1, r1, r0 + strb r1, [r5, #4] + adds r3, #1 +_0828E304: + str r3, [r5, #0x40] +_0828E306: + movs r0, #0 + str r0, [sp, #0x14] + adds r4, r5, #0 + adds r4, #0x24 + ldrb r2, [r4] + movs r0, #0xc0 + tst r0, r2 + beq _0828E358 + ldrb r3, [r5, #5] + movs r0, #0x40 + tst r0, r2 + beq _0828E326 + ldr r1, [r5, #0x2c] + adds r1, r1, r3 + ldrb r0, [r1] + b _0828E328 +_0828E326: + adds r0, r3, #0 +_0828E328: + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, [r5, #0x28] + adds r1, r1, r0 + mov sb, r1 + mov r6, sb + ldrb r1, [r6] + movs r0, #0xc0 + tst r0, r1 + beq _0828E340 + b _0828E4AA +_0828E340: + movs r0, #0x80 + tst r0, r2 + beq _0828E35C + ldrb r1, [r6, #3] + movs r0, #0x80 + tst r0, r1 + beq _0828E354 + subs r1, #0xc0 + lsls r1, r1, #1 + str r1, [sp, #0x14] +_0828E354: + ldrb r3, [r6, #1] + b _0828E35C +_0828E358: + mov sb, r4 + ldrb r3, [r5, #5] +_0828E35C: + str r3, [sp, #8] + ldr r6, [sp] + ldrb r1, [r6, #9] + ldrb r0, [r5, #0x1d] + adds r0, r0, r1 + cmp r0, #0xff + bls _0828E36C + movs r0, #0xff +_0828E36C: + str r0, [sp, #0x10] + mov r6, sb + ldrb r0, [r6] + movs r6, #7 + ands r6, r0 + str r6, [sp, #0xc] + beq _0828E3AC + ldr r0, [sp, #4] + ldr r4, [r0, #0x1c] + cmp r4, #0 + bne _0828E384 + b _0828E4AA +_0828E384: + subs r6, #1 + lsls r0, r6, #6 + adds r4, r4, r0 + ldrb r1, [r4] + movs r0, #0xc7 + tst r0, r1 + beq _0828E400 + movs r0, #0x40 + tst r0, r1 + bne _0828E400 + ldrb r1, [r4, #0x13] + ldr r0, [sp, #0x10] + cmp r1, r0 + blo _0828E400 + beq _0828E3A4 + b _0828E4AA +_0828E3A4: + ldr r0, [r4, #0x2c] + cmp r0, r5 + bhs _0828E400 + b _0828E4AA +_0828E3AC: + ldr r6, [sp, #0x10] + adds r7, r5, #0 + movs r2, #0 + mov r8, r2 + ldr r4, [sp, #4] + ldrb r3, [r4, #6] + adds r4, #0x50 +_0828E3BA: + ldrb r1, [r4] + movs r0, #0xc7 + tst r0, r1 + beq _0828E400 + movs r0, #0x40 + tst r0, r1 + beq _0828E3D4 + cmp r2, #0 + bne _0828E3D8 + adds r2, #1 + ldrb r6, [r4, #0x13] + ldr r7, [r4, #0x2c] + b _0828E3F2 +_0828E3D4: + cmp r2, #0 + bne _0828E3F4 +_0828E3D8: + ldrb r0, [r4, #0x13] + cmp r0, r6 + bhs _0828E3E4 + adds r6, r0, #0 + ldr r7, [r4, #0x2c] + b _0828E3F2 +_0828E3E4: + bhi _0828E3F4 + ldr r0, [r4, #0x2c] + cmp r0, r7 + bls _0828E3F0 + adds r7, r0, #0 + b _0828E3F2 +_0828E3F0: + blo _0828E3F4 +_0828E3F2: + mov r8, r4 +_0828E3F4: + adds r4, #0x40 + subs r3, #1 + bgt _0828E3BA + mov r4, r8 + cmp r4, #0 + beq _0828E4AA +_0828E400: + 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 _0828E414 + str r4, [r3, #0x30] +_0828E414: + str r4, [r5, #0x20] + str r5, [r4, #0x2c] + ldrb r0, [r5, #0x1b] + strb r0, [r5, #0x1c] + cmp r0, r1 + beq _0828E426 + adds r1, r5, #0 + bl clear_modM +_0828E426: + ldr r0, [sp] + adds r1, r5, #0 + bl TrkVolPitSet + ldr r0, [r5, #4] + str r0, [r4, #0x10] + ldr r0, [sp, #0x10] + strb r0, [r4, #0x13] + ldr r0, [sp, #8] + strb r0, [r4, #8] + ldr r0, [sp, #0x14] + strb r0, [r4, #0x14] + mov r6, sb + ldrb r0, [r6] + strb r0, [r4, #1] + ldr r7, [r6, #4] + str r7, [r4, #0x24] + ldr r0, [r6, #8] + str r0, [r4, #4] + ldrh r0, [r5, #0x1e] + strh r0, [r4, #0xc] + bl ChnVolSetAsm + ldrb r1, [r4, #8] + movs r0, #8 + ldrsb r0, [r5, r0] + adds r3, r1, r0 + bpl _0828E460 + movs r3, #0 +_0828E460: + ldr r6, [sp, #0xc] + cmp r6, #0 + beq _0828E48E + mov r6, sb + ldrb r0, [r6, #2] + strb r0, [r4, #0x1e] + ldrb r1, [r6, #3] + movs r0, #0x80 + tst r0, r1 + bne _0828E47A + movs r0, #0x70 + tst r0, r1 + bne _0828E47C +_0828E47A: + movs r1, #8 +_0828E47C: + strb r1, [r4, #0x1f] + ldrb r2, [r5, #9] + adds r1, r3, #0 + ldr r0, [sp, #0xc] + ldr r3, [sp, #4] + ldr r3, [r3, #0x30] + bl sub_0828E23C + b _0828E49C +_0828E48E: + ldr r0, [r5, #0x3c] + str r0, [r4, #0x18] + ldrb r2, [r5, #9] + adds r1, r3, #0 + adds r0, r7, #0 + bl MidiKeyToFreq +_0828E49C: + str r0, [r4, #0x20] + movs r0, #0x80 + strb r0, [r4] + ldrb r1, [r5] + movs r0, #0xf0 + ands r0, r1 + strb r0, [r5] +_0828E4AA: + add sp, #0x18 + pop {r0, r1, r2, r3, r4, r5, r6, r7} + mov r8, r0 + mov sb, r1 + mov sl, r2 + mov fp, r3 + pop {r0} + bx r0 + .align 2, 0 +_0828E4BC: .4byte gUnknown_3007FF0 +_0828E4C0: .4byte gUnknown_85FD784 + thumb_func_end ply_note + + thumb_func_start ply_endtie +ply_endtie: @ 0x0828E4C4 + push {r4, r5} + ldr r2, [r1, #0x40] + ldrb r3, [r2] + cmp r3, #0x80 + bhs _0828E4D6 + strb r3, [r1, #5] + adds r2, #1 + str r2, [r1, #0x40] + b _0828E4D8 +_0828E4D6: + ldrb r3, [r1, #5] +_0828E4D8: + ldr r1, [r1, #0x20] + cmp r1, #0 + beq _0828E500 + movs r4, #0x83 + movs r5, #0x40 +_0828E4E2: + ldrb r2, [r1] + tst r2, r4 + beq _0828E4FA + tst r2, r5 + bne _0828E4FA + ldrb r0, [r1, #0x11] + cmp r0, r3 + bne _0828E4FA + movs r0, #0x40 + orrs r2, r0 + strb r2, [r1] + b _0828E500 +_0828E4FA: + ldr r1, [r1, #0x34] + cmp r1, #0 + bne _0828E4E2 +_0828E500: + pop {r4, r5} + bx lr + thumb_func_end ply_endtie + + thumb_func_start clear_modM +clear_modM: @ 0x0828E504 + movs r2, #0 + strb r2, [r1, #0x16] + strb r2, [r1, #0x1a] + ldrb r2, [r1, #0x18] + cmp r2, #0 + bne _0828E514 + movs r2, #0xc + b _0828E516 +_0828E514: + movs r2, #3 +_0828E516: + ldrb r3, [r1] + orrs r3, r2 + strb r3, [r1] + bx lr + .align 2, 0 + thumb_func_end clear_modM + + thumb_func_start sub_0828E520 +sub_0828E520: @ 0x0828E520 + ldr r2, [r1, #0x40] + adds r3, r2, #1 + str r3, [r1, #0x40] + ldrb r3, [r2] + bx lr + .align 2, 0 + thumb_func_end sub_0828E520 + + thumb_func_start ply_lfos +ply_lfos: @ 0x0828E52C + mov ip, lr + bl sub_0828E520 + strb r3, [r1, #0x19] + cmp r3, #0 + bne _0828E53C + bl clear_modM +_0828E53C: + bx ip + .align 2, 0 + thumb_func_end ply_lfos + + thumb_func_start ply_mod +ply_mod: @ 0x0828E540 + mov ip, lr + bl sub_0828E520 + strb r3, [r1, #0x17] + cmp r3, #0 + bne _0828E550 + bl clear_modM +_0828E550: + bx ip + .align 2, 0 + thumb_func_end ply_mod + + thumb_func_start MidiKeyToFreq +MidiKeyToFreq: @ 0x0828E554 + push {r4, r5, r6, r7, lr} + mov ip, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r7, r2, #0x18 + cmp r6, #0xb2 + bls _0828E568 + movs r6, #0xb2 + movs r7, #0xff + lsls r7, r7, #0x18 +_0828E568: + ldr r3, _0828E5B0 + adds r0, r6, r3 + ldrb r5, [r0] + ldr r4, _0828E5B4 + movs r2, #0xf + adds r0, r5, #0 + ands r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + lsrs r1, r5, #4 + ldr r5, [r0] + lsrs r5, r1 + adds r0, r6, #1 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r1, #0 + ands r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + lsrs r1, r1, #4 + ldr r0, [r0] + lsrs r0, r1 + mov r1, ip + ldr r4, [r1, #4] + subs r0, r0, r5 + adds r1, r7, #0 + bl umul3232H32 + adds r1, r0, #0 + adds r1, r5, r1 + adds r0, r4, #0 + bl umul3232H32 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0828E5B0: .4byte gUnknown_85FD5A0 +_0828E5B4: .4byte gUnknown_85FD654 + thumb_func_end MidiKeyToFreq + + thumb_func_start UnusedDummyFunc +UnusedDummyFunc: @ 0x0828E5B8 + bx lr + .align 2, 0 + thumb_func_end UnusedDummyFunc + + thumb_func_start MPlayContinue +MPlayContinue: @ 0x0828E5BC + adds r2, r0, #0 + ldr r3, [r2, #0x34] + ldr r0, _0828E5D0 + cmp r3, r0 + bne _0828E5CE + ldr r0, [r2, #4] + ldr r1, _0828E5D4 + ands r0, r1 + str r0, [r2, #4] +_0828E5CE: + bx lr + .align 2, 0 +_0828E5D0: .4byte 0x68736D53 +_0828E5D4: .4byte 0x7FFFFFFF + thumb_func_end MPlayContinue + + thumb_func_start MPlayFadeOut +MPlayFadeOut: @ 0x0828E5D8 + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [r2, #0x34] + ldr r0, _0828E5F4 + cmp r3, r0 + bne _0828E5F0 + strh r1, [r2, #0x26] + strh r1, [r2, #0x24] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x28] +_0828E5F0: + bx lr + .align 2, 0 +_0828E5F4: .4byte 0x68736D53 + thumb_func_end MPlayFadeOut + + thumb_func_start m4aSoundInit +m4aSoundInit: @ 0x0828E5F8 + push {r4, r5, r6, lr} + ldr r0, _0828E678 + movs r1, #2 + rsbs r1, r1, #0 + ands r0, r1 + ldr r1, _0828E67C + ldr r2, _0828E680 + bl CpuSet + ldr r0, _0828E684 + bl SoundInit + ldr r0, _0828E688 + bl MPlayExtender + ldr r0, _0828E68C + bl m4aSoundMode + ldr r0, _0828E690 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0828E646 + ldr r6, _0828E694 + adds r5, r0, #0 +_0828E62A: + ldr r4, [r6] + ldr r1, [r6, #4] + ldrb r2, [r6, #8] + adds r0, r4, #0 + bl MPlayOpen + ldrh r0, [r6, #0xa] + strb r0, [r4, #0xb] + ldr r0, _0828E698 + str r0, [r4, #0x18] + adds r6, #0xc + subs r5, #1 + cmp r5, #0 + bne _0828E62A +_0828E646: + ldr r0, _0828E69C + ldr r1, _0828E6A0 + movs r2, #0x34 + bl memcpy + movs r5, #0 + movs r6, #0 +_0828E654: + lsls r0, r5, #6 + ldr r1, _0828E6A4 + adds r0, r0, r1 + ldr r4, _0828E6A8 + adds r4, r6, r4 + adds r1, r4, #0 + movs r2, #2 + bl MPlayOpen + movs r0, #0 + str r0, [r4, #0x20] + adds r6, #0xa0 + adds r5, #1 + cmp r5, #1 + ble _0828E654 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828E678: .4byte SoundMainRAM +_0828E67C: .4byte gUnknown_3001B50 +_0828E680: .4byte 0x04000200 +_0828E684: .4byte gUnknown_3006120 +_0828E688: .4byte gUnknown_3007250 +_0828E68C: .4byte 0x0094C500 +_0828E690: .4byte 0x00000004 +_0828E694: .4byte gUnknown_863C27C +_0828E698: .4byte gUnknown_3007590 +_0828E69C: .4byte gUnknown_3007490 +_0828E6A0: .4byte gUnknown_85FD7B8 +_0828E6A4: .4byte gUnknown_3007140 +_0828E6A8: .4byte gUnknown_3007350 + thumb_func_end m4aSoundInit + + thumb_func_start m4aSoundMain +m4aSoundMain: @ 0x0828E6AC + push {lr} + bl SoundMain + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end m4aSoundMain + + thumb_func_start m4aSongNumStart +m4aSongNumStart: @ 0x0828E6B8 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _0828E6DC + ldr r1, _0828E6E0 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r3, [r0, #4] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r1, [r0] + adds r0, r2, #0 + bl MPlayStart + pop {r0} + bx r0 + .align 2, 0 +_0828E6DC: .4byte gUnknown_863C27C +_0828E6E0: .4byte gUnknown_863C2AC + thumb_func_end m4aSongNumStart + + thumb_func_start m4aSongNumStartOrChange +m4aSongNumStartOrChange: @ 0x0828E6E4 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _0828E710 + ldr r1, _0828E714 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r3, [r0, #4] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + ldr r3, [r1] + ldr r2, [r0] + cmp r3, r2 + beq _0828E718 + adds r0, r1, #0 + adds r1, r2, #0 + bl MPlayStart + b _0828E72C + .align 2, 0 +_0828E710: .4byte gUnknown_863C27C +_0828E714: .4byte gUnknown_863C2AC +_0828E718: + ldr r2, [r1, #4] + ldrh r0, [r1, #4] + cmp r0, #0 + beq _0828E724 + cmp r2, #0 + bge _0828E72C +_0828E724: + adds r0, r1, #0 + adds r1, r3, #0 + bl MPlayStart +_0828E72C: + pop {r0} + bx r0 + thumb_func_end m4aSongNumStartOrChange + + thumb_func_start m4aSongNumStartOrContinue +m4aSongNumStartOrContinue: @ 0x0828E730 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _0828E75C + ldr r1, _0828E760 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r3, [r0, #4] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + ldr r3, [r1] + ldr r2, [r0] + cmp r3, r2 + beq _0828E764 + adds r0, r1, #0 + adds r1, r2, #0 + bl MPlayStart + b _0828E780 + .align 2, 0 +_0828E75C: .4byte gUnknown_863C27C +_0828E760: .4byte gUnknown_863C2AC +_0828E764: + ldr r2, [r1, #4] + ldrh r0, [r1, #4] + cmp r0, #0 + bne _0828E776 + adds r0, r1, #0 + adds r1, r3, #0 + bl MPlayStart + b _0828E780 +_0828E776: + cmp r2, #0 + bge _0828E780 + adds r0, r1, #0 + bl MPlayContinue +_0828E780: + pop {r0} + bx r0 + thumb_func_end m4aSongNumStartOrContinue + + thumb_func_start m4aSongNumStop +m4aSongNumStop: @ 0x0828E784 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _0828E7B0 + ldr r1, _0828E7B4 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r3, [r0, #4] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r1, [r2] + ldr r0, [r0] + cmp r1, r0 + bne _0828E7AA + adds r0, r2, #0 + bl m4aMPlayStop +_0828E7AA: + pop {r0} + bx r0 + .align 2, 0 +_0828E7B0: .4byte gUnknown_863C27C +_0828E7B4: .4byte gUnknown_863C2AC + thumb_func_end m4aSongNumStop + + thumb_func_start m4aSongNumContinue +m4aSongNumContinue: @ 0x0828E7B8 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _0828E7E4 + ldr r1, _0828E7E8 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r3, [r0, #4] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r1, [r2] + ldr r0, [r0] + cmp r1, r0 + bne _0828E7DE + adds r0, r2, #0 + bl MPlayContinue +_0828E7DE: + pop {r0} + bx r0 + .align 2, 0 +_0828E7E4: .4byte gUnknown_863C27C +_0828E7E8: .4byte gUnknown_863C2AC + thumb_func_end m4aSongNumContinue + + thumb_func_start m4aMPlayAllStop +m4aMPlayAllStop: @ 0x0828E7EC + push {r4, r5, lr} + ldr r0, _0828E824 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0828E80A + ldr r5, _0828E828 + adds r4, r0, #0 +_0828E7FC: + ldr r0, [r5] + bl m4aMPlayStop + adds r5, #0xc + subs r4, #1 + cmp r4, #0 + bne _0828E7FC +_0828E80A: + ldr r5, _0828E82C + movs r4, #1 +_0828E80E: + adds r0, r5, #0 + bl m4aMPlayStop + adds r5, #0x40 + subs r4, #1 + cmp r4, #0 + bge _0828E80E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0828E824: .4byte 0x00000004 +_0828E828: .4byte gUnknown_863C27C +_0828E82C: .4byte gUnknown_3007140 + thumb_func_end m4aMPlayAllStop + + thumb_func_start m4aMPlayContinue +m4aMPlayContinue: @ 0x0828E830 + push {lr} + bl MPlayContinue + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end m4aMPlayContinue + + thumb_func_start m4aMPlayAllContinue +m4aMPlayAllContinue: @ 0x0828E83C + push {r4, r5, lr} + ldr r0, _0828E874 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0828E85A + ldr r5, _0828E878 + adds r4, r0, #0 +_0828E84C: + ldr r0, [r5] + bl MPlayContinue + adds r5, #0xc + subs r4, #1 + cmp r4, #0 + bne _0828E84C +_0828E85A: + ldr r5, _0828E87C + movs r4, #1 +_0828E85E: + adds r0, r5, #0 + bl MPlayContinue + adds r5, #0x40 + subs r4, #1 + cmp r4, #0 + bge _0828E85E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0828E874: .4byte 0x00000004 +_0828E878: .4byte gUnknown_863C27C +_0828E87C: .4byte gUnknown_3007140 + thumb_func_end m4aMPlayAllContinue + + thumb_func_start m4aMPlayFadeOut +m4aMPlayFadeOut: @ 0x0828E880 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl MPlayFadeOut + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end m4aMPlayFadeOut + + thumb_func_start m4aMPlayFadeOutTemporarily +m4aMPlayFadeOutTemporarily: @ 0x0828E890 + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [r2, #0x34] + ldr r0, _0828E8A8 + cmp r3, r0 + bne _0828E8A6 + strh r1, [r2, #0x26] + strh r1, [r2, #0x24] + ldr r0, _0828E8AC + strh r0, [r2, #0x28] +_0828E8A6: + bx lr + .align 2, 0 +_0828E8A8: .4byte 0x68736D53 +_0828E8AC: .4byte 0x00000101 + thumb_func_end m4aMPlayFadeOutTemporarily + + thumb_func_start m4aMPlayFadeIn +m4aMPlayFadeIn: @ 0x0828E8B0 + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [r2, #0x34] + ldr r0, _0828E8D0 + cmp r3, r0 + bne _0828E8CE + strh r1, [r2, #0x26] + strh r1, [r2, #0x24] + movs r0, #2 + strh r0, [r2, #0x28] + ldr r0, [r2, #4] + ldr r1, _0828E8D4 + ands r0, r1 + str r0, [r2, #4] +_0828E8CE: + bx lr + .align 2, 0 +_0828E8D0: .4byte 0x68736D53 +_0828E8D4: .4byte 0x7FFFFFFF + thumb_func_end m4aMPlayFadeIn + + thumb_func_start m4aMPlayImmInit +m4aMPlayImmInit: @ 0x0828E8D8 + push {r4, r5, r6, r7, lr} + ldrb r5, [r0, #8] + ldr r4, [r0, #0x2c] + cmp r5, #0 + ble _0828E91A + movs r7, #0x80 +_0828E8E4: + ldrb r1, [r4] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0828E912 + movs r6, #0x40 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0828E912 + adds r0, r4, #0 + bl Clear64byte + strb r7, [r4] + movs r0, #2 + strb r0, [r4, #0xf] + strb r6, [r4, #0x13] + movs r0, #0x16 + strb r0, [r4, #0x19] + adds r1, r4, #0 + adds r1, #0x24 + movs r0, #1 + strb r0, [r1] +_0828E912: + subs r5, #1 + adds r4, #0x50 + cmp r5, #0 + bgt _0828E8E4 +_0828E91A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end m4aMPlayImmInit + + thumb_func_start MPlayExtender +MPlayExtender: @ 0x0828E920 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r1, _0828E9E8 + movs r0, #0x8f + strh r0, [r1] + ldr r3, _0828E9EC + movs r2, #0 + strh r2, [r3] + ldr r0, _0828E9F0 + movs r1, #8 + strb r1, [r0] + adds r0, #6 + strb r1, [r0] + adds r0, #0x10 + strb r1, [r0] + subs r0, #0x14 + movs r1, #0x80 + strb r1, [r0] + adds r0, #8 + strb r1, [r0] + adds r0, #0x10 + strb r1, [r0] + subs r0, #0xd + strb r2, [r0] + movs r0, #0x77 + strb r0, [r3] + ldr r0, _0828E9F4 + ldr r4, [r0] + ldr r6, [r4] + ldr r0, _0828E9F8 + cmp r6, r0 + bne _0828E9E0 + adds r0, r6, #1 + str r0, [r4] + ldr r1, _0828E9FC + ldr r0, _0828EA00 + str r0, [r1, #0x20] + ldr r0, _0828EA04 + str r0, [r1, #0x44] + ldr r0, _0828EA08 + str r0, [r1, #0x4c] + ldr r0, _0828EA0C + str r0, [r1, #0x70] + ldr r0, _0828EA10 + str r0, [r1, #0x74] + ldr r0, _0828EA14 + str r0, [r1, #0x78] + ldr r0, _0828EA18 + str r0, [r1, #0x7c] + adds r2, r1, #0 + adds r2, #0x80 + ldr r0, _0828EA1C + str r0, [r2] + adds r1, #0x84 + ldr r0, _0828EA20 + str r0, [r1] + str r5, [r4, #0x1c] + ldr r0, _0828EA24 + str r0, [r4, #0x28] + ldr r0, _0828EA28 + str r0, [r4, #0x2c] + ldr r0, _0828EA2C + str r0, [r4, #0x30] + ldr r0, _0828EA30 + movs r1, #0 + strb r0, [r4, #0xc] + str r1, [sp] + ldr r2, _0828EA34 + mov r0, sp + adds r1, r5, #0 + bl CpuSet + movs r0, #1 + strb r0, [r5, #1] + movs r0, #0x11 + strb r0, [r5, #0x1c] + adds r1, r5, #0 + adds r1, #0x41 + movs r0, #2 + strb r0, [r1] + adds r1, #0x1b + movs r0, #0x22 + strb r0, [r1] + adds r1, #0x25 + movs r0, #3 + strb r0, [r1] + adds r1, #0x1b + movs r0, #0x44 + strb r0, [r1] + adds r1, #0x24 + movs r0, #4 + strb r0, [r1, #1] + movs r0, #0x88 + strb r0, [r1, #0x1c] + str r6, [r4] +_0828E9E0: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828E9E8: .4byte 0x04000084 +_0828E9EC: .4byte 0x04000080 +_0828E9F0: .4byte 0x04000063 +_0828E9F4: .4byte gUnknown_3007FF0 +_0828E9F8: .4byte 0x68736D53 +_0828E9FC: .4byte gUnknown_30071C0 +_0828EA00: .4byte ply_memacc +_0828EA04: .4byte ply_lfos +_0828EA08: .4byte ply_mod +_0828EA0C: .4byte ply_xcmd +_0828EA10: .4byte ply_endtie +_0828EA14: .4byte SampleFreqSet +_0828EA18: .4byte TrackStop +_0828EA1C: .4byte FadeOutBody +_0828EA20: .4byte TrkVolPitSet +_0828EA24: .4byte CgbSound +_0828EA28: .4byte CgbOscOff +_0828EA2C: .4byte MidiKeyToCgbFreq +_0828EA30: .4byte 0x00000000 +_0828EA34: .4byte 0x05000040 + thumb_func_end MPlayExtender + + thumb_func_start MusicPlayerJumpTableCopy +MusicPlayerJumpTableCopy: @ 0x0828EA38 + svc #0x2a + bx lr + thumb_func_end MusicPlayerJumpTableCopy + + thumb_func_start ClearChain +ClearChain: @ 0x0828EA3C + push {lr} + ldr r1, _0828EA4C + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0828EA4C: .4byte gUnknown_3007248 + thumb_func_end ClearChain + + thumb_func_start Clear64byte +Clear64byte: @ 0x0828EA50 + push {lr} + ldr r1, _0828EA60 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0828EA60: .4byte gUnknown_300724C + thumb_func_end Clear64byte + + thumb_func_start SoundInit +SoundInit: @ 0x0828EA64 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + movs r3, #0 + str r3, [r5] + ldr r1, _0828EB1C + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #0x12 + ands r0, r2 + cmp r0, #0 + beq _0828EA80 + ldr r0, _0828EB20 + str r0, [r1] +_0828EA80: + ldr r1, _0828EB24 + ldr r0, [r1] + ands r0, r2 + cmp r0, #0 + beq _0828EA8E + ldr r0, _0828EB20 + str r0, [r1] +_0828EA8E: + ldr r0, _0828EB28 + movs r2, #0x80 + lsls r2, r2, #3 + adds r1, r2, #0 + strh r1, [r0] + adds r0, #0xc + strh r1, [r0] + ldr r1, _0828EB2C + movs r0, #0x8f + strh r0, [r1] + subs r1, #2 + ldr r2, _0828EB30 + adds r0, r2, #0 + strh r0, [r1] + ldr r2, _0828EB34 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0828EB38 + movs r2, #0xd4 + lsls r2, r2, #2 + adds r0, r5, r2 + str r0, [r1] + adds r1, #4 + ldr r0, _0828EB3C + str r0, [r1] + adds r1, #8 + movs r2, #0x98 + lsls r2, r2, #4 + adds r0, r5, r2 + str r0, [r1] + adds r1, #4 + ldr r0, _0828EB40 + str r0, [r1] + ldr r0, _0828EB44 + str r5, [r0] + str r3, [sp] + ldr r2, _0828EB48 + mov r0, sp + adds r1, r5, #0 + bl CpuSet + movs r0, #8 + strb r0, [r5, #6] + movs r0, #0xf + strb r0, [r5, #7] + ldr r0, _0828EB4C + str r0, [r5, #0x38] + ldr r0, _0828EB50 + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + str r0, [r5, #0x30] + str r0, [r5, #0x3c] + ldr r4, _0828EB54 + adds r0, r4, #0 + bl MPlayJumpTableCopy + str r4, [r5, #0x34] + movs r0, #0x80 + lsls r0, r0, #0xb + bl SampleFreqSet + ldr r0, _0828EB58 + str r0, [r5] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0828EB1C: .4byte 0x040000C4 +_0828EB20: .4byte 0x84400004 +_0828EB24: .4byte 0x040000D0 +_0828EB28: .4byte 0x040000C6 +_0828EB2C: .4byte 0x04000084 +_0828EB30: .4byte 0x0000A90E +_0828EB34: .4byte 0x04000089 +_0828EB38: .4byte 0x040000BC +_0828EB3C: .4byte 0x040000A0 +_0828EB40: .4byte 0x040000A4 +_0828EB44: .4byte gUnknown_3007FF0 +_0828EB48: .4byte 0x050003EC +_0828EB4C: .4byte ply_note +_0828EB50: .4byte DummyFunc +_0828EB54: .4byte gUnknown_30071C0 +_0828EB58: .4byte 0x68736D53 + thumb_func_end SoundInit + + thumb_func_start SampleFreqSet +SampleFreqSet: @ 0x0828EB5C + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldr r0, _0828EBDC + ldr r4, [r0] + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r2 + lsrs r2, r0, #0x10 + movs r6, #0 + strb r2, [r4, #8] + ldr r1, _0828EBE0 + subs r0, r2, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r5, [r0] + str r5, [r4, #0x10] + movs r0, #0xc6 + lsls r0, r0, #3 + adds r1, r5, #0 + bl __divsi3 + strb r0, [r4, #0xb] + ldr r0, _0828EBE4 + muls r0, r5, r0 + ldr r1, _0828EBE8 + adds r0, r0, r1 + ldr r1, _0828EBEC + bl __divsi3 + adds r1, r0, #0 + str r1, [r4, #0x14] + movs r0, #0x80 + lsls r0, r0, #0x11 + bl __divsi3 + adds r0, #1 + asrs r0, r0, #1 + str r0, [r4, #0x18] + ldr r0, _0828EBF0 + strh r6, [r0] + ldr r4, _0828EBF4 + ldr r0, _0828EBF8 + adds r1, r5, #0 + bl __divsi3 + rsbs r0, r0, #0 + strh r0, [r4] + bl m4aSoundVSyncOn + ldr r1, _0828EBFC +_0828EBC0: + ldrb r0, [r1] + cmp r0, #0x9f + beq _0828EBC0 + ldr r1, _0828EBFC +_0828EBC8: + ldrb r0, [r1] + cmp r0, #0x9f + bne _0828EBC8 + ldr r1, _0828EBF0 + movs r0, #0x80 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828EBDC: .4byte gUnknown_3007FF0 +_0828EBE0: .4byte gUnknown_85FD684 +_0828EBE4: .4byte 0x00091D1B +_0828EBE8: .4byte 0x00001388 +_0828EBEC: .4byte 0x00002710 +_0828EBF0: .4byte 0x04000102 +_0828EBF4: .4byte 0x04000100 +_0828EBF8: .4byte 0x00044940 +_0828EBFC: .4byte 0x04000006 + thumb_func_end SampleFreqSet + + thumb_func_start m4aSoundMode +m4aSoundMode: @ 0x0828EC00 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r0, _0828EC8C + ldr r5, [r0] + ldr r1, [r5] + ldr r0, _0828EC90 + cmp r1, r0 + bne _0828EC86 + adds r0, r1, #1 + str r0, [r5] + movs r4, #0xff + ands r4, r3 + cmp r4, #0 + beq _0828EC22 + movs r0, #0x7f + ands r4, r0 + strb r4, [r5, #5] +_0828EC22: + movs r4, #0xf0 + lsls r4, r4, #4 + ands r4, r3 + cmp r4, #0 + beq _0828EC42 + lsrs r0, r4, #8 + strb r0, [r5, #6] + movs r4, #0xc + adds r0, r5, #0 + adds r0, #0x50 + movs r1, #0 +_0828EC38: + strb r1, [r0] + subs r4, #1 + adds r0, #0x40 + cmp r4, #0 + bne _0828EC38 +_0828EC42: + movs r4, #0xf0 + lsls r4, r4, #8 + ands r4, r3 + cmp r4, #0 + beq _0828EC50 + lsrs r0, r4, #0xc + strb r0, [r5, #7] +_0828EC50: + movs r4, #0xb0 + lsls r4, r4, #0x10 + ands r4, r3 + cmp r4, #0 + beq _0828EC6E + movs r0, #0xc0 + lsls r0, r0, #0xe + ands r0, r4 + lsrs r4, r0, #0xe + ldr r2, _0828EC94 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + orrs r0, r4 + strb r0, [r2] +_0828EC6E: + movs r4, #0xf0 + lsls r4, r4, #0xc + ands r4, r3 + cmp r4, #0 + beq _0828EC82 + bl m4aSoundVSyncOff + adds r0, r4, #0 + bl SampleFreqSet +_0828EC82: + ldr r0, _0828EC90 + str r0, [r5] +_0828EC86: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0828EC8C: .4byte gUnknown_3007FF0 +_0828EC90: .4byte 0x68736D53 +_0828EC94: .4byte 0x04000089 + thumb_func_end m4aSoundMode + + thumb_func_start SoundClear +SoundClear: @ 0x0828EC98 + push {r4, r5, r6, r7, lr} + ldr r0, _0828ECE4 + ldr r6, [r0] + ldr r1, [r6] + ldr r0, _0828ECE8 + cmp r1, r0 + bne _0828ECDE + adds r0, r1, #1 + str r0, [r6] + movs r5, #0xc + adds r4, r6, #0 + adds r4, #0x50 + movs r0, #0 +_0828ECB2: + strb r0, [r4] + subs r5, #1 + adds r4, #0x40 + cmp r5, #0 + bgt _0828ECB2 + ldr r4, [r6, #0x1c] + cmp r4, #0 + beq _0828ECDA + movs r5, #1 + movs r7, #0 +_0828ECC6: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r6, #0x2c] + bl _call_via_r1 + strb r7, [r4] + adds r5, #1 + adds r4, #0x40 + cmp r5, #4 + ble _0828ECC6 +_0828ECDA: + ldr r0, _0828ECE8 + str r0, [r6] +_0828ECDE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828ECE4: .4byte gUnknown_3007FF0 +_0828ECE8: .4byte 0x68736D53 + thumb_func_end SoundClear + + thumb_func_start m4aSoundVSyncOff +m4aSoundVSyncOff: @ 0x0828ECEC + push {lr} + sub sp, #4 + ldr r0, _0828ED4C + ldr r2, [r0] + ldr r1, [r2] + ldr r3, _0828ED50 + adds r0, r1, r3 + cmp r0, #1 + bhi _0828ED44 + adds r0, r1, #0 + adds r0, #0xa + str r0, [r2] + ldr r1, _0828ED54 + ldr r0, [r1] + movs r3, #0x80 + lsls r3, r3, #0x12 + ands r0, r3 + cmp r0, #0 + beq _0828ED16 + ldr r0, _0828ED58 + str r0, [r1] +_0828ED16: + ldr r1, _0828ED5C + ldr r0, [r1] + ands r0, r3 + cmp r0, #0 + beq _0828ED24 + ldr r0, _0828ED58 + str r0, [r1] +_0828ED24: + ldr r0, _0828ED60 + movs r3, #0x80 + lsls r3, r3, #3 + adds r1, r3, #0 + strh r1, [r0] + adds r0, #0xc + strh r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #0xd4 + lsls r0, r0, #2 + adds r1, r2, r0 + ldr r2, _0828ED64 + mov r0, sp + bl CpuSet +_0828ED44: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0828ED4C: .4byte gUnknown_3007FF0 +_0828ED50: .4byte 0x978C92AD +_0828ED54: .4byte 0x040000C4 +_0828ED58: .4byte 0x84400004 +_0828ED5C: .4byte 0x040000D0 +_0828ED60: .4byte 0x040000C6 +_0828ED64: .4byte 0x05000318 + thumb_func_end m4aSoundVSyncOff + + thumb_func_start m4aSoundVSyncOn +m4aSoundVSyncOn: @ 0x0828ED68 + push {r4, lr} + ldr r0, _0828ED98 + ldr r2, [r0] + ldr r3, [r2] + ldr r0, _0828ED9C + cmp r3, r0 + beq _0828ED90 + ldr r0, _0828EDA0 + movs r4, #0xb6 + lsls r4, r4, #8 + adds r1, r4, #0 + strh r1, [r0] + adds r0, #0xc + strh r1, [r0] + ldrb r0, [r2, #4] + movs r0, #0 + strb r0, [r2, #4] + adds r0, r3, #0 + subs r0, #0xa + str r0, [r2] +_0828ED90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0828ED98: .4byte gUnknown_3007FF0 +_0828ED9C: .4byte 0x68736D53 +_0828EDA0: .4byte 0x040000C6 + thumb_func_end m4aSoundVSyncOn + + thumb_func_start MPlayOpen +MPlayOpen: @ 0x0828EDA4 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #0 + beq _0828EE08 + cmp r4, #0x10 + bls _0828EDB8 + movs r4, #0x10 +_0828EDB8: + ldr r0, _0828EE10 + ldr r5, [r0] + ldr r1, [r5] + ldr r0, _0828EE14 + cmp r1, r0 + bne _0828EE08 + adds r0, r1, #1 + str r0, [r5] + adds r0, r7, #0 + bl Clear64byte + str r6, [r7, #0x2c] + strb r4, [r7, #8] + movs r0, #0x80 + lsls r0, r0, #0x18 + str r0, [r7, #4] + cmp r4, #0 + beq _0828EDEC + movs r1, #0 +_0828EDDE: + strb r1, [r6] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, #0x50 + cmp r4, #0 + bne _0828EDDE +_0828EDEC: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0828EDFC + str r0, [r7, #0x38] + ldr r0, [r5, #0x24] + str r0, [r7, #0x3c] + movs r0, #0 + str r0, [r5, #0x20] +_0828EDFC: + str r7, [r5, #0x24] + ldr r0, _0828EE18 + str r0, [r5, #0x20] + ldr r0, _0828EE14 + str r0, [r5] + str r0, [r7, #0x34] +_0828EE08: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828EE10: .4byte gUnknown_3007FF0 +_0828EE14: .4byte 0x68736D53 +_0828EE18: .4byte MPlayMain + thumb_func_end MPlayOpen + + thumb_func_start MPlayStart +MPlayStart: @ 0x0828EE1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r7, r1, #0 + ldr r1, [r5, #0x34] + ldr r0, _0828EEFC + cmp r1, r0 + bne _0828EEF2 + ldrb r0, [r5, #0xb] + ldrb r2, [r7, #2] + cmp r0, #0 + beq _0828EE5E + ldr r0, [r5] + cmp r0, #0 + beq _0828EE48 + ldr r1, [r5, #0x2c] + movs r0, #0x40 + ldrb r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0828EE54 +_0828EE48: + ldr r1, [r5, #4] + ldrh r0, [r5, #4] + cmp r0, #0 + beq _0828EE5E + cmp r1, #0 + blt _0828EE5E +_0828EE54: + ldrb r0, [r7, #2] + adds r2, r0, #0 + ldrb r0, [r5, #9] + cmp r0, r2 + bhi _0828EEF2 +_0828EE5E: + ldr r0, [r5, #0x34] + adds r0, #1 + str r0, [r5, #0x34] + movs r1, #0 + str r1, [r5, #4] + str r7, [r5] + ldr r0, [r7, #4] + str r0, [r5, #0x30] + strb r2, [r5, #9] + str r1, [r5, #0xc] + movs r0, #0x96 + strh r0, [r5, #0x1c] + strh r0, [r5, #0x20] + adds r0, #0x6a + strh r0, [r5, #0x1e] + strh r1, [r5, #0x22] + strh r1, [r5, #0x24] + movs r6, #0 + ldr r4, [r5, #0x2c] + ldrb r1, [r7] + cmp r6, r1 + bge _0828EEBE + ldrb r0, [r5, #8] + cmp r6, r0 + bge _0828EEDE + mov r8, r6 +_0828EE92: + adds r0, r5, #0 + adds r1, r4, #0 + bl TrackStop + movs r0, #0xc0 + strb r0, [r4] + mov r1, r8 + str r1, [r4, #0x20] + lsls r1, r6, #2 + adds r0, r7, #0 + adds r0, #8 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x40] + adds r6, #1 + adds r4, #0x50 + ldrb r0, [r7] + cmp r6, r0 + bge _0828EEBE + ldrb r1, [r5, #8] + cmp r6, r1 + blt _0828EE92 +_0828EEBE: + ldrb r0, [r5, #8] + cmp r6, r0 + bge _0828EEDE + movs r1, #0 + mov r8, r1 +_0828EEC8: + adds r0, r5, #0 + adds r1, r4, #0 + bl TrackStop + mov r0, r8 + strb r0, [r4] + adds r6, #1 + adds r4, #0x50 + ldrb r1, [r5, #8] + cmp r6, r1 + blt _0828EEC8 +_0828EEDE: + movs r0, #0x80 + ldrb r1, [r7, #3] + ands r0, r1 + cmp r0, #0 + beq _0828EEEE + ldrb r0, [r7, #3] + bl m4aSoundMode +_0828EEEE: + ldr r0, _0828EEFC + str r0, [r5, #0x34] +_0828EEF2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828EEFC: .4byte 0x68736D53 + thumb_func_end MPlayStart + + thumb_func_start m4aMPlayStop +m4aMPlayStop: @ 0x0828EF00 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r1, [r6, #0x34] + ldr r0, _0828EF3C + cmp r1, r0 + bne _0828EF36 + adds r0, r1, #1 + str r0, [r6, #0x34] + ldr r0, [r6, #4] + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r6, #4] + ldrb r4, [r6, #8] + ldr r5, [r6, #0x2c] + cmp r4, #0 + ble _0828EF32 +_0828EF22: + adds r0, r6, #0 + adds r1, r5, #0 + bl TrackStop + subs r4, #1 + adds r5, #0x50 + cmp r4, #0 + bgt _0828EF22 +_0828EF32: + ldr r0, _0828EF3C + str r0, [r6, #0x34] +_0828EF36: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828EF3C: .4byte 0x68736D53 + thumb_func_end m4aMPlayStop + + thumb_func_start FadeOutBody +FadeOutBody: @ 0x0828EF40 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrh r1, [r6, #0x24] + cmp r1, #0 + beq _0828F002 + ldrh r0, [r6, #0x26] + subs r0, #1 + strh r0, [r6, #0x26] + ldr r3, _0828EF80 + adds r2, r3, #0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _0828F002 + strh r1, [r6, #0x26] + ldrh r1, [r6, #0x28] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0828EF84 + adds r0, r1, #0 + adds r0, #0x10 + strh r0, [r6, #0x28] + ands r0, r2 + cmp r0, #0xff + bls _0828EFD6 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r6, #0x28] + strh r3, [r6, #0x24] + b _0828EFD6 + .align 2, 0 +_0828EF80: .4byte 0x0000FFFF +_0828EF84: + adds r0, r1, #0 + subs r0, #0x10 + strh r0, [r6, #0x28] + ands r0, r2 + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0828EFD6 + ldrb r5, [r6, #8] + ldr r4, [r6, #0x2c] + cmp r5, #0 + ble _0828EFB6 +_0828EF9A: + adds r0, r6, #0 + adds r1, r4, #0 + bl TrackStop + movs r0, #1 + ldrh r7, [r6, #0x28] + ands r0, r7 + cmp r0, #0 + bne _0828EFAE + strb r0, [r4] +_0828EFAE: + subs r5, #1 + adds r4, #0x50 + cmp r5, #0 + bgt _0828EF9A +_0828EFB6: + movs r0, #1 + ldrh r1, [r6, #0x28] + ands r0, r1 + cmp r0, #0 + beq _0828EFCA + ldr r0, [r6, #4] + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r0, r1 + b _0828EFCE +_0828EFCA: + movs r0, #0x80 + lsls r0, r0, #0x18 +_0828EFCE: + str r0, [r6, #4] + movs r0, #0 + strh r0, [r6, #0x24] + b _0828F002 +_0828EFD6: + ldrb r5, [r6, #8] + ldr r4, [r6, #0x2c] + cmp r5, #0 + ble _0828F002 + movs r3, #0x80 + movs r7, #0 + movs r2, #3 +_0828EFE4: + ldrb r1, [r4] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0828EFFA + ldrh r7, [r6, #0x28] + lsrs r0, r7, #2 + strb r0, [r4, #0x13] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r4] +_0828EFFA: + subs r5, #1 + adds r4, #0x50 + cmp r5, #0 + bgt _0828EFE4 +_0828F002: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end FadeOutBody + + thumb_func_start TrkVolPitSet +TrkVolPitSet: @ 0x0828F008 + push {r4, lr} + adds r2, r1, #0 + movs r0, #1 + ldrb r1, [r2] + ands r0, r1 + cmp r0, #0 + beq _0828F06C + ldrb r3, [r2, #0x13] + ldrb r1, [r2, #0x12] + adds r0, r3, #0 + muls r0, r1, r0 + lsrs r3, r0, #5 + ldrb r4, [r2, #0x18] + cmp r4, #1 + bne _0828F030 + movs r0, #0x16 + ldrsb r0, [r2, r0] + adds r0, #0x80 + muls r0, r3, r0 + lsrs r3, r0, #7 +_0828F030: + movs r0, #0x14 + ldrsb r0, [r2, r0] + lsls r0, r0, #1 + movs r1, #0x15 + ldrsb r1, [r2, r1] + adds r1, r0, r1 + cmp r4, #2 + bne _0828F046 + movs r0, #0x16 + ldrsb r0, [r2, r0] + adds r1, r1, r0 +_0828F046: + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0828F052 + adds r1, r0, #0 + b _0828F058 +_0828F052: + cmp r1, #0x7f + ble _0828F058 + movs r1, #0x7f +_0828F058: + adds r0, r1, #0 + adds r0, #0x80 + muls r0, r3, r0 + lsrs r0, r0, #8 + strb r0, [r2, #0x10] + movs r0, #0x7f + subs r0, r0, r1 + muls r0, r3, r0 + lsrs r0, r0, #8 + strb r0, [r2, #0x11] +_0828F06C: + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + adds r3, r1, #0 + cmp r0, #0 + beq _0828F0B0 + movs r0, #0xe + ldrsb r0, [r2, r0] + ldrb r1, [r2, #0xf] + muls r0, r1, r0 + movs r1, #0xc + ldrsb r1, [r2, r1] + adds r1, r1, r0 + lsls r1, r1, #2 + movs r0, #0xa + ldrsb r0, [r2, r0] + lsls r0, r0, #8 + adds r1, r1, r0 + movs r0, #0xb + ldrsb r0, [r2, r0] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #0xd] + adds r1, r0, r1 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0828F0AA + movs r0, #0x16 + ldrsb r0, [r2, r0] + lsls r0, r0, #4 + adds r1, r1, r0 +_0828F0AA: + asrs r0, r1, #8 + strb r0, [r2, #8] + strb r1, [r2, #9] +_0828F0B0: + movs r0, #0xfa + ands r0, r3 + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + thumb_func_end TrkVolPitSet + + thumb_func_start MidiKeyToCgbFreq +MidiKeyToCgbFreq: @ 0x0828F0BC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov ip, r2 + cmp r0, #4 + bne _0828F0F4 + cmp r5, #0x14 + bhi _0828F0D8 + movs r5, #0 + b _0828F0E6 +_0828F0D8: + adds r0, r5, #0 + subs r0, #0x15 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x3b + bls _0828F0E6 + movs r5, #0x3b +_0828F0E6: + ldr r0, _0828F0F0 + adds r0, r5, r0 + ldrb r0, [r0] + b _0828F156 + .align 2, 0 +_0828F0F0: .4byte gUnknown_85FD738 +_0828F0F4: + cmp r5, #0x23 + bhi _0828F100 + movs r0, #0 + mov ip, r0 + movs r5, #0 + b _0828F112 +_0828F100: + adds r0, r5, #0 + subs r0, #0x24 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x82 + bls _0828F112 + movs r5, #0x82 + movs r1, #0xff + mov ip, r1 +_0828F112: + ldr r3, _0828F15C + adds r0, r5, r3 + ldrb r6, [r0] + ldr r4, _0828F160 + movs r2, #0xf + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #1 + adds r0, r0, r4 + movs r7, #0 + ldrsh r1, [r0, r7] + asrs r0, r6, #4 + adds r6, r1, #0 + asrs r6, r0 + adds r0, r5, #1 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r1, #0 + ands r0, r2 + lsls r0, r0, #1 + adds r0, r0, r4 + movs r2, #0 + ldrsh r0, [r0, r2] + asrs r1, r1, #4 + asrs r0, r1 + subs r0, r0, r6 + mov r7, ip + muls r7, r0, r7 + adds r0, r7, #0 + asrs r0, r0, #8 + adds r0, r6, r0 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 +_0828F156: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0828F15C: .4byte gUnknown_85FD69C +_0828F160: .4byte gUnknown_85FD720 + thumb_func_end MidiKeyToCgbFreq + + thumb_func_start CgbOscOff +CgbOscOff: @ 0x0828F164 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #2 + beq _0828F18C + cmp r0, #2 + bgt _0828F178 + cmp r0, #1 + beq _0828F17E + b _0828F1A0 +_0828F178: + cmp r1, #3 + beq _0828F194 + b _0828F1A0 +_0828F17E: + ldr r1, _0828F188 + movs r0, #8 + strb r0, [r1] + adds r1, #2 + b _0828F1A8 + .align 2, 0 +_0828F188: .4byte 0x04000063 +_0828F18C: + ldr r1, _0828F190 + b _0828F1A2 + .align 2, 0 +_0828F190: .4byte 0x04000069 +_0828F194: + ldr r1, _0828F19C + movs r0, #0 + b _0828F1AA + .align 2, 0 +_0828F19C: .4byte 0x04000070 +_0828F1A0: + ldr r1, _0828F1B0 +_0828F1A2: + movs r0, #8 + strb r0, [r1] + adds r1, #4 +_0828F1A8: + movs r0, #0x80 +_0828F1AA: + strb r0, [r1] + bx lr + .align 2, 0 +_0828F1B0: .4byte 0x04000079 + thumb_func_end CgbOscOff + + thumb_func_start CgbModVol +CgbModVol: @ 0x0828F1B4 + push {r4, lr} + adds r2, r0, #0 + ldr r0, _0828F1E4 + ldr r1, [r0] + movs r0, #1 + ldrb r1, [r1, #9] + ands r0, r1 + cmp r0, #0 + bne _0828F1F4 + ldrb r0, [r2, #2] + lsls r1, r0, #0x18 + lsrs r4, r1, #0x18 + ldrb r3, [r2, #3] + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + cmp r4, r3 + blo _0828F1E8 + lsrs r0, r1, #0x19 + cmp r0, r3 + blo _0828F1F4 + movs r0, #0xf + strb r0, [r2, #0x1b] + b _0828F202 + .align 2, 0 +_0828F1E4: .4byte gUnknown_3007FF0 +_0828F1E8: + lsrs r0, r0, #0x19 + cmp r0, r4 + blo _0828F1F4 + movs r0, #0xf0 + strb r0, [r2, #0x1b] + b _0828F202 +_0828F1F4: + movs r0, #0xff + strb r0, [r2, #0x1b] + ldrb r1, [r2, #3] + ldrb r3, [r2, #2] + adds r0, r1, r3 + lsrs r0, r0, #4 + b _0828F212 +_0828F202: + ldrb r1, [r2, #3] + ldrb r3, [r2, #2] + adds r0, r1, r3 + lsrs r0, r0, #4 + strb r0, [r2, #0xa] + cmp r0, #0xf + bls _0828F214 + movs r0, #0xf +_0828F212: + strb r0, [r2, #0xa] +_0828F214: + ldrb r1, [r2, #6] + ldrb r3, [r2, #0xa] + adds r0, r1, #0 + muls r0, r3, r0 + adds r0, #0xf + asrs r0, r0, #4 + strb r0, [r2, #0x19] + ldrb r0, [r2, #0x1c] + ldrb r1, [r2, #0x1b] + ands r0, r1 + strb r0, [r2, #0x1b] + pop {r4} + pop {r0} + bx r0 + thumb_func_end CgbModVol + + thumb_func_start CgbSound +CgbSound: @ 0x0828F230 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r0, _0828F250 + ldr r0, [r0] + str r0, [sp, #4] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _0828F254 + subs r0, #1 + ldr r1, [sp, #4] + strb r0, [r1, #0xa] + b _0828F25A + .align 2, 0 +_0828F250: .4byte gUnknown_3007FF0 +_0828F254: + movs r0, #0xe + ldr r2, [sp, #4] + strb r0, [r2, #0xa] +_0828F25A: + movs r6, #1 + ldr r0, [sp, #4] + ldr r4, [r0, #0x1c] +_0828F260: + ldrb r1, [r4] + movs r0, #0xc7 + ands r0, r1 + adds r2, r6, #1 + mov sl, r2 + movs r2, #0x40 + adds r2, r2, r4 + mov sb, r2 + cmp r0, #0 + bne _0828F276 + b _0828F660 +_0828F276: + cmp r6, #2 + beq _0828F2A8 + cmp r6, #2 + bgt _0828F284 + cmp r6, #1 + beq _0828F28A + b _0828F2E0 +_0828F284: + cmp r6, #3 + beq _0828F2C0 + b _0828F2E0 +_0828F28A: + ldr r0, _0828F29C + str r0, [sp, #8] + ldr r7, _0828F2A0 + ldr r2, _0828F2A4 + str r2, [sp, #0xc] + adds r0, #4 + str r0, [sp, #0x10] + adds r2, #2 + b _0828F2F0 + .align 2, 0 +_0828F29C: .4byte 0x04000060 +_0828F2A0: .4byte 0x04000062 +_0828F2A4: .4byte 0x04000063 +_0828F2A8: + ldr r0, _0828F2B4 + str r0, [sp, #8] + ldr r7, _0828F2B8 + ldr r2, _0828F2BC + b _0828F2E8 + .align 2, 0 +_0828F2B4: .4byte 0x04000061 +_0828F2B8: .4byte 0x04000068 +_0828F2BC: .4byte 0x04000069 +_0828F2C0: + ldr r0, _0828F2D4 + str r0, [sp, #8] + ldr r7, _0828F2D8 + ldr r2, _0828F2DC + str r2, [sp, #0xc] + adds r0, #4 + str r0, [sp, #0x10] + adds r2, #2 + b _0828F2F0 + .align 2, 0 +_0828F2D4: .4byte 0x04000070 +_0828F2D8: .4byte 0x04000072 +_0828F2DC: .4byte 0x04000073 +_0828F2E0: + ldr r0, _0828F340 + str r0, [sp, #8] + ldr r7, _0828F344 + ldr r2, _0828F348 +_0828F2E8: + str r2, [sp, #0xc] + adds r0, #0xb + str r0, [sp, #0x10] + adds r2, #4 +_0828F2F0: + str r2, [sp, #0x14] + ldr r0, [sp, #4] + 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 _0828F3E6 + movs r3, #0x40 + adds r0, r3, #0 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #1 + mov sl, r0 + movs r1, #0x40 + adds r1, r1, r4 + mov sb, r1 + cmp r5, #0 + bne _0828F40A + movs r0, #3 + strb r0, [r4] + strb r0, [r4, #0x1d] + adds r0, r4, #0 + str r3, [sp, #0x18] + bl CgbModVol + ldr r3, [sp, #0x18] + cmp r6, #2 + beq _0828F358 + cmp r6, #2 + bgt _0828F34C + cmp r6, #1 + beq _0828F352 + b _0828F3AC + .align 2, 0 +_0828F340: .4byte 0x04000071 +_0828F344: .4byte 0x04000078 +_0828F348: .4byte 0x04000079 +_0828F34C: + cmp r6, #3 + beq _0828F364 + b _0828F3AC +_0828F352: + ldrb r0, [r4, #0x1f] + ldr r2, [sp, #8] + strb r0, [r2] +_0828F358: + ldr r0, [r4, #0x24] + lsls r0, r0, #6 + ldrb r1, [r4, #0x1e] + adds r0, r1, r0 + strb r0, [r7] + b _0828F3B8 +_0828F364: + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x28] + cmp r1, r0 + beq _0828F38C + ldr r2, [sp, #8] + strb r3, [r2] + ldr r1, _0828F3A0 + ldr r2, [r4, #0x24] + ldr r0, [r2] + str r0, [r1] + adds r1, #4 + ldr r0, [r2, #4] + str r0, [r1] + adds r1, #4 + ldr r0, [r2, #8] + str r0, [r1] + adds r1, #4 + ldr r0, [r2, #0xc] + str r0, [r1] + str r2, [r4, #0x28] +_0828F38C: + ldr r0, [sp, #8] + strb r5, [r0] + ldrb r0, [r4, #0x1e] + strb r0, [r7] + ldrb r0, [r4, #0x1e] + cmp r0, #0 + beq _0828F3A4 + movs r0, #0xc0 + b _0828F3C6 + .align 2, 0 +_0828F3A0: .4byte 0x04000090 +_0828F3A4: + movs r1, #0x80 + rsbs r1, r1, #0 + strb r1, [r4, #0x1a] + b _0828F3C8 +_0828F3AC: + ldrb r0, [r4, #0x1e] + strb r0, [r7] + ldr r0, [r4, #0x24] + lsls r0, r0, #3 + ldr r2, [sp, #0x10] + strb r0, [r2] +_0828F3B8: + ldrb r0, [r4, #4] + adds r0, #8 + mov r8, r0 + ldrb r0, [r4, #0x1e] + cmp r0, #0 + beq _0828F3C6 + movs r0, #0x40 +_0828F3C6: + strb r0, [r4, #0x1a] +_0828F3C8: + ldrb r1, [r4, #4] + movs r2, #0 + strb r1, [r4, #0xb] + movs r0, #0xff + ands r0, r1 + adds r1, r6, #1 + mov sl, r1 + movs r1, #0x40 + adds r1, r1, r4 + mov sb, r1 + cmp r0, #0 + bne _0828F3E2 + b _0828F51E +_0828F3E2: + strb r2, [r4, #9] + b _0828F54C +_0828F3E6: + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _0828F418 + ldrb r0, [r4, #0xd] + subs r0, #1 + strb r0, [r4, #0xd] + movs r2, #0xff + ands r0, r2 + lsls r0, r0, #0x18 + adds r1, r6, #1 + mov sl, r1 + movs r2, #0x40 + adds r2, r2, r4 + mov sb, r2 + cmp r0, #0 + ble _0828F40A + b _0828F55E +_0828F40A: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl CgbOscOff + movs r0, #0 + strb r0, [r4] + b _0828F65C +_0828F418: + movs r0, #0x40 + ands r0, r1 + adds r2, r6, #1 + mov sl, r2 + movs r2, #0x40 + adds r2, r2, r4 + mov sb, r2 + cmp r0, #0 + beq _0828F458 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0828F458 + movs r0, #0xfc + ands r0, r1 + movs r2, #0 + strb r0, [r4] + ldrb r1, [r4, #7] + strb r1, [r4, #0xb] + movs r0, #0xff + ands r0, r1 + cmp r0, #0 + beq _0828F48A + movs r0, #1 + ldrb r1, [r4, #0x1d] + orrs r0, r1 + strb r0, [r4, #0x1d] + cmp r6, #3 + beq _0828F54C + ldrb r2, [r4, #7] + mov r8, r2 + b _0828F54C +_0828F458: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0828F54C + cmp r6, #3 + bne _0828F46A + movs r0, #1 + ldrb r1, [r4, #0x1d] + orrs r0, r1 + strb r0, [r4, #0x1d] +_0828F46A: + adds r0, r4, #0 + bl CgbModVol + movs r0, #3 + ldrb r2, [r4] + ands r0, r2 + cmp r0, #0 + bne _0828F4BE + ldrb r0, [r4, #9] + subs r0, #1 + strb r0, [r4, #9] + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bgt _0828F4BA +_0828F48A: + ldrb r2, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r0, r2, #0 + muls r0, r1, r0 + adds r0, #0xff + asrs r0, r0, #8 + movs r1, #0 + strb r0, [r4, #9] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0828F40A + movs r0, #4 + ldrb r2, [r4] + orrs r0, r2 + strb r0, [r4] + movs r0, #1 + ldrb r1, [r4, #0x1d] + orrs r0, r1 + strb r0, [r4, #0x1d] + cmp r6, #3 + beq _0828F55E + movs r2, #8 + mov r8, r2 + b _0828F55E +_0828F4BA: + ldrb r0, [r4, #7] + b _0828F54A +_0828F4BE: + cmp r0, #1 + bne _0828F4CA +_0828F4C2: + ldrb r0, [r4, #0x19] + strb r0, [r4, #9] + movs r0, #7 + b _0828F54A +_0828F4CA: + cmp r0, #2 + bne _0828F50E + ldrb r0, [r4, #9] + subs r0, #1 + strb r0, [r4, #9] + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #0x18 + ldrb r2, [r4, #0x19] + lsls r1, r2, #0x18 + cmp r0, r1 + bgt _0828F50A +_0828F4E2: + ldrb r0, [r4, #6] + cmp r0, #0 + bne _0828F4F2 + movs r0, #0xfc + ldrb r1, [r4] + ands r0, r1 + strb r0, [r4] + b _0828F48A +_0828F4F2: + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + movs r0, #1 + ldrb r2, [r4, #0x1d] + orrs r0, r2 + strb r0, [r4, #0x1d] + cmp r6, #3 + beq _0828F4C2 + movs r0, #8 + mov r8, r0 + b _0828F4C2 +_0828F50A: + ldrb r0, [r4, #5] + b _0828F54A +_0828F50E: + ldrb r0, [r4, #9] + adds r0, #1 + strb r0, [r4, #9] + movs r1, #0xff + ands r0, r1 + ldrb r2, [r4, #0xa] + cmp r0, r2 + blo _0828F548 +_0828F51E: + ldrb r0, [r4] + subs r0, #1 + movs r2, #0 + strb r0, [r4] + ldrb r1, [r4, #5] + strb r1, [r4, #0xb] + movs r0, #0xff + ands r0, r1 + cmp r0, #0 + beq _0828F4E2 + movs r0, #1 + ldrb r1, [r4, #0x1d] + orrs r0, r1 + strb r0, [r4, #0x1d] + ldrb r0, [r4, #0xa] + strb r0, [r4, #9] + cmp r6, #3 + beq _0828F54C + ldrb r2, [r4, #5] + mov r8, r2 + b _0828F54C +_0828F548: + ldrb r0, [r4, #4] +_0828F54A: + strb r0, [r4, #0xb] +_0828F54C: + ldrb r0, [r4, #0xb] + subs r0, #1 + strb r0, [r4, #0xb] + ldr r0, [sp] + cmp r0, #0 + bne _0828F55E + subs r0, #1 + str r0, [sp] + b _0828F458 +_0828F55E: + movs r0, #2 + ldrb r1, [r4, #0x1d] + ands r0, r1 + cmp r0, #0 + beq _0828F5D6 + cmp r6, #3 + bgt _0828F59E + movs r0, #8 + ldrb r2, [r4, #1] + ands r0, r2 + cmp r0, #0 + beq _0828F59E + ldr r0, _0828F588 + ldrb r0, [r0] + cmp r0, #0x3f + bgt _0828F590 + ldr r0, [r4, #0x20] + adds r0, #2 + ldr r1, _0828F58C + b _0828F59A + .align 2, 0 +_0828F588: .4byte 0x04000089 +_0828F58C: .4byte 0x000007FC +_0828F590: + cmp r0, #0x7f + bgt _0828F59E + ldr r0, [r4, #0x20] + adds r0, #1 + ldr r1, _0828F5AC +_0828F59A: + ands r0, r1 + str r0, [r4, #0x20] +_0828F59E: + cmp r6, #4 + beq _0828F5B0 + ldr r0, [r4, #0x20] + ldr r1, [sp, #0x10] + strb r0, [r1] + b _0828F5BE + .align 2, 0 +_0828F5AC: .4byte 0x000007FE +_0828F5B0: + ldr r2, [sp, #0x10] + ldrb r0, [r2] + movs r1, #8 + ands r1, r0 + ldr r0, [r4, #0x20] + orrs r0, r1 + strb r0, [r2] +_0828F5BE: + 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] +_0828F5D6: + movs r0, #1 + ldrb r2, [r4, #0x1d] + ands r0, r2 + cmp r0, #0 + beq _0828F65C + ldr r1, _0828F620 + ldrb r0, [r1] + ldrb r2, [r4, #0x1c] + bics r0, r2 + ldrb r2, [r4, #0x1b] + orrs r0, r2 + strb r0, [r1] + cmp r6, #3 + bne _0828F628 + ldr r0, _0828F624 + ldrb r1, [r4, #9] + 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 _0828F65C + ldr r0, [sp, #8] + 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 _0828F65C + .align 2, 0 +_0828F620: .4byte 0x04000081 +_0828F624: .4byte gUnknown_85FD774 +_0828F628: + movs r0, #0xf + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldrb r2, [r4, #9] + 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, #1 + bne _0828F65C + ldr r0, [sp, #8] + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0828F65C + ldrb r0, [r4, #0x1a] + orrs r0, r2 + ldr r1, [sp, #0x14] + strb r0, [r1] +_0828F65C: + movs r0, #0 + strb r0, [r4, #0x1d] +_0828F660: + mov r6, sl + mov r4, sb + cmp r6, #4 + bgt _0828F66A + b _0828F260 +_0828F66A: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end CgbSound + + thumb_func_start m4aMPlayTempoControl +m4aMPlayTempoControl: @ 0x0828F67C + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [r2, #0x34] + ldr r0, _0828F6A0 + cmp r3, r0 + bne _0828F698 + strh r1, [r2, #0x1e] + ldrh r4, [r2, #0x1c] + adds r0, r1, #0 + muls r0, r4, r0 + asrs r0, r0, #8 + strh r0, [r2, #0x20] +_0828F698: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0828F6A0: .4byte 0x68736D53 + thumb_func_end m4aMPlayTempoControl + + thumb_func_start m4aMPlayVolumeControl +m4aMPlayVolumeControl: @ 0x0828F6A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r6, r2, #0x10 + ldr r3, [r4, #0x34] + ldr r0, _0828F708 + cmp r3, r0 + bne _0828F6FC + adds r0, r3, #1 + str r0, [r4, #0x34] + ldrb r2, [r4, #8] + ldr r1, [r4, #0x2c] + movs r5, #1 + cmp r2, #0 + ble _0828F6F8 + movs r0, #0x80 + mov r8, r0 + lsrs r6, r6, #0x12 + movs r0, #3 + mov ip, r0 +_0828F6D4: + adds r0, r7, #0 + ands r0, r5 + cmp r0, #0 + beq _0828F6EE + ldrb r3, [r1] + mov r0, r8 + ands r0, r3 + cmp r0, #0 + beq _0828F6EE + strb r6, [r1, #0x13] + mov r0, ip + orrs r0, r3 + strb r0, [r1] +_0828F6EE: + subs r2, #1 + adds r1, #0x50 + lsls r5, r5, #1 + cmp r2, #0 + bgt _0828F6D4 +_0828F6F8: + ldr r0, _0828F708 + str r0, [r4, #0x34] +_0828F6FC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828F708: .4byte 0x68736D53 + thumb_func_end m4aMPlayVolumeControl + + thumb_func_start m4aMPlayPitchControl +m4aMPlayPitchControl: @ 0x0828F70C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov ip, r1 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r3, [r4, #0x34] + ldr r0, _0828F77C + cmp r3, r0 + bne _0828F76E + adds r0, r3, #1 + str r0, [r4, #0x34] + ldrb r2, [r4, #8] + ldr r3, [r4, #0x2c] + movs r5, #1 + cmp r2, #0 + ble _0828F76A + movs r0, #0x80 + mov sb, r0 + lsls r0, r6, #0x10 + asrs r7, r0, #0x18 + movs r0, #0xc + mov r8, r0 +_0828F744: + mov r0, ip + ands r0, r5 + cmp r0, #0 + beq _0828F760 + ldrb r1, [r3] + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _0828F760 + strb r7, [r3, #0xb] + strb r6, [r3, #0xd] + mov r0, r8 + orrs r0, r1 + strb r0, [r3] +_0828F760: + subs r2, #1 + adds r3, #0x50 + lsls r5, r5, #1 + cmp r2, #0 + bgt _0828F744 +_0828F76A: + ldr r0, _0828F77C + str r0, [r4, #0x34] +_0828F76E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828F77C: .4byte 0x68736D53 + thumb_func_end m4aMPlayPitchControl + + thumb_func_start m4aMPlayPanpotControl +m4aMPlayPanpotControl: @ 0x0828F780 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r3, [r4, #0x34] + ldr r0, _0828F7E4 + cmp r3, r0 + bne _0828F7D8 + adds r0, r3, #1 + str r0, [r4, #0x34] + ldrb r2, [r4, #8] + ldr r1, [r4, #0x2c] + movs r5, #1 + cmp r2, #0 + ble _0828F7D4 + movs r0, #0x80 + mov r8, r0 + movs r0, #3 + mov ip, r0 +_0828F7B0: + adds r0, r7, #0 + ands r0, r5 + cmp r0, #0 + beq _0828F7CA + ldrb r3, [r1] + mov r0, r8 + ands r0, r3 + cmp r0, #0 + beq _0828F7CA + strb r6, [r1, #0x15] + mov r0, ip + orrs r0, r3 + strb r0, [r1] +_0828F7CA: + subs r2, #1 + adds r1, #0x50 + lsls r5, r5, #1 + cmp r2, #0 + bgt _0828F7B0 +_0828F7D4: + ldr r0, _0828F7E4 + str r0, [r4, #0x34] +_0828F7D8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828F7E4: .4byte 0x68736D53 + thumb_func_end m4aMPlayPanpotControl + + thumb_func_start ClearModM +ClearModM: @ 0x0828F7E8 + adds r1, r0, #0 + movs r2, #0 + movs r0, #0 + strb r0, [r1, #0x1a] + strb r0, [r1, #0x16] + ldrb r0, [r1, #0x18] + cmp r0, #0 + bne _0828F7FC + movs r0, #0xc + b _0828F7FE +_0828F7FC: + movs r0, #3 +_0828F7FE: + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 + thumb_func_end ClearModM + + thumb_func_start m4aMPlayModDepthSet +m4aMPlayModDepthSet: @ 0x0828F808 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r1, [r6, #0x34] + ldr r0, _0828F878 + cmp r1, r0 + bne _0828F868 + adds r0, r1, #1 + str r0, [r6, #0x34] + ldrb r5, [r6, #8] + ldr r4, [r6, #0x2c] + movs r7, #1 + cmp r5, #0 + ble _0828F864 + mov sb, r8 +_0828F838: + mov r0, sl + ands r0, r7 + cmp r0, #0 + beq _0828F85A + movs r0, #0x80 + ldrb r1, [r4] + ands r0, r1 + cmp r0, #0 + beq _0828F85A + mov r0, r8 + strb r0, [r4, #0x17] + mov r1, sb + cmp r1, #0 + bne _0828F85A + adds r0, r4, #0 + bl ClearModM +_0828F85A: + subs r5, #1 + adds r4, #0x50 + lsls r7, r7, #1 + cmp r5, #0 + bgt _0828F838 +_0828F864: + ldr r0, _0828F878 + str r0, [r6, #0x34] +_0828F868: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828F878: .4byte 0x68736D53 + thumb_func_end m4aMPlayModDepthSet + + thumb_func_start m4aMPlayLFOSpeedSet +m4aMPlayLFOSpeedSet: @ 0x0828F87C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r1, [r6, #0x34] + ldr r0, _0828F8EC + cmp r1, r0 + bne _0828F8DC + adds r0, r1, #1 + str r0, [r6, #0x34] + ldrb r5, [r6, #8] + ldr r4, [r6, #0x2c] + movs r7, #1 + cmp r5, #0 + ble _0828F8D8 + mov sb, r8 +_0828F8AC: + mov r0, sl + ands r0, r7 + cmp r0, #0 + beq _0828F8CE + movs r0, #0x80 + ldrb r1, [r4] + ands r0, r1 + cmp r0, #0 + beq _0828F8CE + mov r0, r8 + strb r0, [r4, #0x19] + mov r1, sb + cmp r1, #0 + bne _0828F8CE + adds r0, r4, #0 + bl ClearModM +_0828F8CE: + subs r5, #1 + adds r4, #0x50 + lsls r7, r7, #1 + cmp r5, #0 + bgt _0828F8AC +_0828F8D8: + ldr r0, _0828F8EC + str r0, [r6, #0x34] +_0828F8DC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0828F8EC: .4byte 0x68736D53 + thumb_func_end m4aMPlayLFOSpeedSet + + thumb_func_start ply_memacc +ply_memacc: @ 0x0828F8F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r1, [r6, #0x40] + ldrb r5, [r1] + adds r2, r1, #1 + str r2, [r6, #0x40] + ldr r0, [r4, #0x18] + ldrb r1, [r1, #1] + adds r3, r1, r0 + adds r0, r2, #1 + str r0, [r6, #0x40] + ldrb r2, [r2, #1] + adds r0, #1 + str r0, [r6, #0x40] + cmp r5, #0x11 + bls _0828F914 + b _0828FA42 +_0828F914: + lsls r0, r5, #2 + ldr r1, _0828F920 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0828F920: .4byte _0828F924 +_0828F924: @ jump table + .4byte _0828F96C @ case 0 + .4byte _0828F970 @ case 1 + .4byte _0828F978 @ case 2 + .4byte _0828F980 @ case 3 + .4byte _0828F98A @ case 4 + .4byte _0828F998 @ case 5 + .4byte _0828F9A6 @ case 6 + .4byte _0828F9AE @ case 7 + .4byte _0828F9B6 @ case 8 + .4byte _0828F9BE @ case 9 + .4byte _0828F9C6 @ case 10 + .4byte _0828F9CE @ case 11 + .4byte _0828F9D6 @ case 12 + .4byte _0828F9E4 @ case 13 + .4byte _0828F9F2 @ case 14 + .4byte _0828FA00 @ case 15 + .4byte _0828FA0E @ case 16 + .4byte _0828FA1C @ case 17 +_0828F96C: + strb r2, [r3] + b _0828FA42 +_0828F970: + ldrb r1, [r3] + adds r0, r1, r2 + strb r0, [r3] + b _0828FA42 +_0828F978: + ldrb r1, [r3] + subs r0, r1, r2 + strb r0, [r3] + b _0828FA42 +_0828F980: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r3] + b _0828FA42 +_0828F98A: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r1, [r3] + ldrb r0, [r0] + adds r0, r1, r0 + strb r0, [r3] + b _0828FA42 +_0828F998: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r1, [r3] + ldrb r0, [r0] + subs r0, r1, r0 + strb r0, [r3] + b _0828FA42 +_0828F9A6: + ldrb r3, [r3] + cmp r3, r2 + beq _0828FA28 + b _0828FA3C +_0828F9AE: + ldrb r3, [r3] + cmp r3, r2 + bne _0828FA28 + b _0828FA3C +_0828F9B6: + ldrb r3, [r3] + cmp r3, r2 + bhi _0828FA28 + b _0828FA3C +_0828F9BE: + ldrb r3, [r3] + cmp r3, r2 + bhs _0828FA28 + b _0828FA3C +_0828F9C6: + ldrb r3, [r3] + cmp r3, r2 + bls _0828FA28 + b _0828FA3C +_0828F9CE: + ldrb r3, [r3] + cmp r3, r2 + blo _0828FA28 + b _0828FA3C +_0828F9D6: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + beq _0828FA28 + b _0828FA3C +_0828F9E4: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + bne _0828FA28 + b _0828FA3C +_0828F9F2: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + bhi _0828FA28 + b _0828FA3C +_0828FA00: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + bhs _0828FA28 + b _0828FA3C +_0828FA0E: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + bls _0828FA28 + b _0828FA3C +_0828FA1C: + ldr r0, [r4, #0x18] + adds r0, r0, r2 + ldrb r3, [r3] + ldrb r0, [r0] + cmp r3, r0 + bhs _0828FA3C +_0828FA28: + ldr r0, _0828FA38 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r6, #0 + bl _call_via_r2 + b _0828FA42 + .align 2, 0 +_0828FA38: .4byte gUnknown_30071C4 +_0828FA3C: + ldr r0, [r6, #0x40] + adds r0, #4 + str r0, [r6, #0x40] +_0828FA42: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end ply_memacc + + thumb_func_start ply_xcmd +ply_xcmd: @ 0x0828FA48 + push {lr} + ldr r2, [r1, #0x40] + ldrb r3, [r2] + adds r2, #1 + str r2, [r1, #0x40] + ldr r2, _0828FA64 + lsls r3, r3, #2 + adds r3, r3, r2 + ldr r2, [r3] + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_0828FA64: .4byte gUnknown_85FD7EC + thumb_func_end ply_xcmd + + thumb_func_start ply_xxx +ply_xxx: @ 0x0828FA68 + push {lr} + ldr r2, _0828FA78 + ldr r2, [r2] + bl _call_via_r2 + pop {r0} + bx r0 + .align 2, 0 +_0828FA78: .4byte gUnknown_30071C0 + thumb_func_end ply_xxx + + thumb_func_start ply_xwave +ply_xwave: @ 0x0828FA7C + push {r4, lr} + ldr r2, [r1, #0x40] + ldr r0, _0828FAB4 + ands r4, r0 + ldrb r0, [r2] + orrs r4, r0 + ldrb r0, [r2, #1] + lsls r3, r0, #8 + ldr r0, _0828FAB8 + ands r4, r0 + orrs r4, r3 + ldrb r0, [r2, #2] + lsls r3, r0, #0x10 + ldr r0, _0828FABC + ands r4, r0 + orrs r4, r3 + ldrb r0, [r2, #3] + lsls r3, r0, #0x18 + ldr r0, _0828FAC0 + ands r4, r0 + orrs r4, r3 + str r4, [r1, #0x28] + adds r2, #4 + str r2, [r1, #0x40] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0828FAB4: .4byte 0xFFFFFF00 +_0828FAB8: .4byte 0xFFFF00FF +_0828FABC: .4byte 0xFF00FFFF +_0828FAC0: .4byte 0x00FFFFFF + thumb_func_end ply_xwave + + thumb_func_start ply_xtype +ply_xtype: @ 0x0828FAC4 + ldr r0, [r1, #0x40] + ldrb r2, [r0] + adds r0, r1, #0 + adds r0, #0x24 + strb r2, [r0] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xtype + + thumb_func_start ply_xatta +ply_xatta: @ 0x0828FAD8 + ldr r0, [r1, #0x40] + ldrb r2, [r0] + adds r0, r1, #0 + adds r0, #0x2c + strb r2, [r0] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xatta + + thumb_func_start ply_xdeca +ply_xdeca: @ 0x0828FAEC + ldr r0, [r1, #0x40] + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x2d + strb r0, [r2] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xdeca + + thumb_func_start ply_xsust +ply_xsust: @ 0x0828FB00 + ldr r0, [r1, #0x40] + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x2e + strb r0, [r2] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xsust + + thumb_func_start ply_xrele +ply_xrele: @ 0x0828FB14 + ldr r0, [r1, #0x40] + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x2f + strb r0, [r2] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xrele + + thumb_func_start ply_xiecv +ply_xiecv: @ 0x0828FB28 + ldr r0, [r1, #0x40] + ldrb r2, [r0] + strb r2, [r1, #0x1e] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + thumb_func_end ply_xiecv + + thumb_func_start ply_xiecl +ply_xiecl: @ 0x0828FB34 + ldr r0, [r1, #0x40] + ldrb r2, [r0] + strb r2, [r1, #0x1f] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + thumb_func_end ply_xiecl + + thumb_func_start ply_xleng +ply_xleng: @ 0x0828FB40 + ldr r0, [r1, #0x40] + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x26 + strb r0, [r2] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xleng + + thumb_func_start ply_xswee +ply_xswee: @ 0x0828FB54 + ldr r0, [r1, #0x40] + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x27 + strb r0, [r2] + ldr r0, [r1, #0x40] + adds r0, #1 + str r0, [r1, #0x40] + bx lr + .align 2, 0 + thumb_func_end ply_xswee + + thumb_func_start ply_xcmd_0C +ply_xcmd_0C: @ 0x0828FB68 + push {r4, lr} + adds r3, r1, #0 + ldr r4, [r3, #0x40] + ldr r0, _0828FB98 + ands r2, r0 + ldrb r0, [r4] + orrs r2, r0 + ldrb r0, [r4, #1] + lsls r1, r0, #8 + ldr r0, _0828FB9C + ands r2, r0 + orrs r2, r1 + ldrh r1, [r3, #0x3a] + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhs _0828FBA0 + adds r0, r1, #1 + strh r0, [r3, #0x3a] + subs r0, r4, #2 + str r0, [r3, #0x40] + movs r0, #1 + strb r0, [r3, #1] + b _0828FBA8 + .align 2, 0 +_0828FB98: .4byte 0xFFFFFF00 +_0828FB9C: .4byte 0xFFFF00FF +_0828FBA0: + movs r0, #0 + strh r0, [r3, #0x3a] + adds r0, r4, #2 + str r0, [r3, #0x40] +_0828FBA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end ply_xcmd_0C + + thumb_func_start ply_xcmd_0D +ply_xcmd_0D: @ 0x0828FBB0 + push {r4, lr} + ldr r2, [r1, #0x40] + ldr r0, _0828FBE8 + ands r4, r0 + ldrb r0, [r2] + orrs r4, r0 + ldrb r0, [r2, #1] + lsls r3, r0, #8 + ldr r0, _0828FBEC + ands r4, r0 + orrs r4, r3 + ldrb r0, [r2, #2] + lsls r3, r0, #0x10 + ldr r0, _0828FBF0 + ands r4, r0 + orrs r4, r3 + ldrb r0, [r2, #3] + lsls r3, r0, #0x18 + ldr r0, _0828FBF4 + ands r4, r0 + orrs r4, r3 + str r4, [r1, #0x3c] + adds r2, #4 + str r2, [r1, #0x40] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0828FBE8: .4byte 0xFFFFFF00 +_0828FBEC: .4byte 0xFFFF00FF +_0828FBF0: .4byte 0xFF00FFFF +_0828FBF4: .4byte 0x00FFFFFF + thumb_func_end ply_xcmd_0D + + thumb_func_start DummyFunc +DummyFunc: @ 0x0828FBF8 + bx lr + .align 2, 0 + thumb_func_end DummyFunc + + thumb_func_start SetPokemonCryTone +SetPokemonCryTone: @ 0x0828FBFC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + movs r6, #0 + movs r1, #0 + movs r4, #0 + ldr r0, _0828FCB8 + mov r8, r0 + ldr r7, _0828FCBC + ldr r0, _0828FCC0 + mov sl, r0 + mov r5, r8 + adds r5, #0xc + movs r3, #0 + ldr r0, _0828FCC4 + mov ip, r0 +_0828FC22: + mov r0, ip + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, #0 + bne _0828FC38 + ldr r0, [r2, #0x20] + cmp r0, #0 + beq _0828FC4E + ldr r0, [r0, #0x2c] + cmp r0, r2 + bne _0828FC4E +_0828FC38: + ldr r0, [r5] + cmp r6, r0 + bhs _0828FC42 + adds r6, r0, #0 + adds r1, r4, #0 +_0828FC42: + adds r5, #0x40 + adds r3, #0xa0 + adds r4, #1 + cmp r4, #1 + ble _0828FC22 + adds r4, r1, #0 +_0828FC4E: + lsls r5, r4, #6 + add r5, r8 + ldr r0, [r5, #0x34] + adds r0, #1 + str r0, [r5, #0x34] + movs r0, #0x34 + muls r4, r0, r4 + adds r6, r4, r7 + adds r0, r6, #0 + mov r1, sl + movs r2, #0x34 + bl memcpy + adds r0, r7, #4 + adds r0, r4, r0 + mov r1, sb + str r1, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r1, r4, r1 + adds r0, r7, #0 + adds r0, #0x11 + adds r0, r4, r0 + str r0, [r1] + adds r1, r7, #0 + adds r1, #0xc + adds r1, r4, r1 + adds r0, r7, #0 + adds r0, #0x18 + adds r0, r4, r0 + str r0, [r1] + adds r0, r7, #0 + adds r0, #0x14 + adds r0, r4, r0 + adds r1, r7, #0 + adds r1, #0x1a + adds r4, r4, r1 + str r4, [r0] + ldr r0, _0828FCC8 + str r0, [r5, #0x34] + adds r0, r5, #0 + adds r1, r6, #0 + bl MPlayStart + adds r0, r5, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0828FCB8: .4byte gUnknown_3007140 +_0828FCBC: .4byte gUnknown_30070D0 +_0828FCC0: .4byte gUnknown_3007490 +_0828FCC4: .4byte gUnknown_3007350 +_0828FCC8: .4byte 0x68736D53 + thumb_func_end SetPokemonCryTone + + thumb_func_start SetPokemonCryVolume +SetPokemonCryVolume: @ 0x0828FCCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0828FCDC + movs r1, #0x7f + ands r0, r1 + strb r0, [r2, #0x1d] + bx lr + .align 2, 0 +_0828FCDC: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryVolume + + thumb_func_start SetPokemonCryPanpot +SetPokemonCryPanpot: @ 0x0828FCE0 + ldr r2, _0828FCF4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #0x40 + movs r1, #0x7f + ands r0, r1 + adds r2, #0x28 + strb r0, [r2] + bx lr + .align 2, 0 +_0828FCF4: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryPanpot + + thumb_func_start SetPokemonCryPitch +SetPokemonCryPitch: @ 0x0828FCF8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + ldr r3, _0828FD2C + ldrb r2, [r3, #0x19] + ldrb r4, [r3, #0x12] + subs r1, r2, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r6, #0x80 + lsls r6, r6, #0x10 + adds r0, r0, r6 + asrs r2, r0, #0x18 + movs r5, #0x7f + movs r4, #0x7f + ands r2, r4 + movs r6, #0x2a + strb r2, [r6, r3] + asrs r0, r0, #0x11 + ands r0, r4 + strb r0, [r3, #0x12] + adds r1, r1, r0 + ands r1, r5 + strb r1, [r3, #0x19] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0828FD2C: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryPitch + + thumb_func_start SetPokemonCryLength +SetPokemonCryLength: @ 0x0828FD30 + ldr r1, _0828FD38 + strh r0, [r1, #0x2e] + bx lr + .align 2, 0 +_0828FD38: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryLength + + thumb_func_start SetPokemonCryRelease +SetPokemonCryRelease: @ 0x0828FD3C + ldr r1, _0828FD44 + adds r1, #0x26 + strb r0, [r1] + bx lr + .align 2, 0 +_0828FD44: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryRelease + + thumb_func_start SetPokemonCryProgress +SetPokemonCryProgress: @ 0x0828FD48 + ldr r1, _0828FD50 + str r0, [r1, #0x20] + bx lr + .align 2, 0 +_0828FD50: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryProgress + + thumb_func_start IsPokemonCryPlaying +IsPokemonCryPlaying: @ 0x0828FD54 + ldr r1, [r0, #0x2c] + ldr r0, [r1, #0x20] + cmp r0, #0 + beq _0828FD66 + ldr r0, [r0, #0x2c] + cmp r0, r1 + bne _0828FD66 + movs r0, #1 + b _0828FD68 +_0828FD66: + movs r0, #0 +_0828FD68: + bx lr + .align 2, 0 + thumb_func_end IsPokemonCryPlaying + + thumb_func_start SetPokemonCryChorus +SetPokemonCryChorus: @ 0x0828FD6C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r0, #0 + beq _0828FD8C + ldr r2, _0828FD88 + movs r0, #2 + strb r0, [r2] + ldrb r3, [r2, #0x12] + adds r0, r3, r1 + movs r1, #0x7f + ands r0, r1 + strb r0, [r2, #0x19] + b _0828FD92 + .align 2, 0 +_0828FD88: .4byte gUnknown_3007490 +_0828FD8C: + ldr r1, _0828FD94 + movs r0, #1 + strb r0, [r1] +_0828FD92: + bx lr + .align 2, 0 +_0828FD94: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryChorus + + thumb_func_start SetPokemonCryStereo +SetPokemonCryStereo: @ 0x0828FD98 + ldr r1, _0828FDB0 + ldr r2, [r1] + cmp r0, #0 + beq _0828FDBC + ldr r1, _0828FDB4 + ldr r3, _0828FDB8 + adds r0, r3, #0 + strh r0, [r1] + movs r0, #0xfe + ldrb r1, [r2, #9] + ands r0, r1 + b _0828FDCA + .align 2, 0 +_0828FDB0: .4byte gUnknown_3007FF0 +_0828FDB4: .4byte 0x04000082 +_0828FDB8: .4byte 0x0000210E +_0828FDBC: + ldr r1, _0828FDD0 + ldr r3, _0828FDD4 + adds r0, r3, #0 + strh r0, [r1] + movs r0, #1 + ldrb r1, [r2, #9] + orrs r0, r1 +_0828FDCA: + strb r0, [r2, #9] + bx lr + .align 2, 0 +_0828FDD0: .4byte 0x04000082 +_0828FDD4: .4byte 0x00003302 + thumb_func_end SetPokemonCryStereo + + thumb_func_start SetPokemonCryPriority +SetPokemonCryPriority: @ 0x0828FDD8 + ldr r1, _0828FDE0 + strb r0, [r1, #2] + bx lr + .align 2, 0 +_0828FDE0: .4byte gUnknown_3007490 + thumb_func_end SetPokemonCryPriority diff --git a/asm/macros.inc b/asm/macros.inc new file mode 100644 index 0000000..7c35e05 --- /dev/null +++ b/asm/macros.inc @@ -0,0 +1,135 @@ + .include "asm/macros/asm.inc" + .include "asm/macros/function.inc" + .include "asm/macros/movement.inc" + .include "asm/macros/window.inc" + .include "asm/macros/pokemon_data.inc" + .include "asm/macros/ec.inc" + .include "asm/macros/map.inc" + .include "asm/macros/field_effect_script.inc" + + .macro region_map_entry x, y, width, height, name + .byte \x + .byte \y + .byte \width + .byte \height + .4byte gMapName_\name + .endm + + .macro obj_tiles address, uncompressed_size, tag = 0 + .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 + .byte \x + .byte \y + .2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size + .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 door_anim_frame unknown, offset + .byte \unknown + .byte 0 @ padding + .2byte \offset + .endm + + .macro door_anim_gfx metatile_num, unknown, unknown2, tile_addr, palette_addr + .2byte \metatile_num + .byte \unknown + .byte \unknown2 + .4byte \tile_addr + .4byte \palette_addr + .endm diff --git a/asm/macros/asm.inc b/asm/macros/asm.inc new file mode 100644 index 0000000..4ac003f --- /dev/null +++ b/asm/macros/asm.inc @@ -0,0 +1,12 @@ + .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 diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc new file mode 100644 index 0000000..4c7646d --- /dev/null +++ b/asm/macros/battle_ai_script.inc @@ -0,0 +1,619 @@ + .macro if_random_less_than param0:req, param1:req + .byte 0x0 + .byte \param0 + .4byte \param1 + .endm + + .macro if_random_greater_than param0:req, param1:req + .byte 0x1 + .byte \param0 + .4byte \param1 + .endm + + .macro if_random_equal param0:req, param1:req + .byte 0x2 + .byte \param0 + .4byte \param1 + .endm + + .macro if_random_not_equal param0:req, param1:req + .byte 0x3 + .byte \param0 + .4byte \param1 + .endm + + .macro score param0:req + .byte 0x4 + .byte \param0 + .endm + + .macro if_hp_less_than battler:req, param1:req, param2:req + .byte 0x5 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_hp_more_than battler:req, param1:req, param2:req + .byte 0x6 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_hp_equal battler:req, param1:req, param2:req + .byte 0x7 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_hp_not_equal battler:req, param1:req, param2:req + .byte 0x8 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_status battler:req, status1:req, param2:req + .byte 0x9 + .byte \battler + .4byte \status1 + .4byte \param2 + .endm + + .macro if_not_status battler:req, status1:req, param2:req + .byte 0xa + .byte \battler + .4byte \status1 + .4byte \param2 + .endm + + .macro if_status2 battler:req, status2:req, param2:req + .byte 0xb + .byte \battler + .4byte \status2 + .4byte \param2 + .endm + + .macro if_not_status2 battler:req, status2:req, param2:req + .byte 0xc + .byte \battler + .4byte \status2 + .4byte \param2 + .endm + + .macro if_status3 battler:req, status3:req, param2:req + .byte 0xd + .byte \battler + .4byte \status3 + .4byte \param2 + .endm + + .macro if_not_status3 battler:req, status3:req, param2:req + .byte 0xe + .byte \battler + .4byte \status3 + .4byte \param2 + .endm + + .macro if_side_affecting battler:req, sidestatus:req, param2:req + .byte 0xf + .byte \battler + .4byte \sidestatus + .4byte \param2 + .endm + + .macro if_not_side_affecting battler:req, sidestatus:req, param2:req + .byte 0x10 + .byte \battler + .4byte \sidestatus + .4byte \param2 + .endm + + .macro if_less_than param0:req, param1:req + .byte 0x11 + .byte \param0 + .4byte \param1 + .endm + + .macro if_more_than param0:req, param1:req + .byte 0x12 + .byte \param0 + .4byte \param1 + .endm + + .macro if_equal param0:req, param1:req + .byte 0x13 + .byte \param0 + .4byte \param1 + .endm + + .macro if_not_equal param0:req, param1:req + .byte 0x14 + .byte \param0 + .4byte \param1 + .endm + + .macro if_less_than_ptr param0:req, param1:req + .byte 0x15 + .4byte \param0 + .4byte \param1 + .endm + + .macro if_more_than_ptr param0:req, param1:req + .byte 0x16 + .4byte \param0 + .4byte \param1 + .endm + + .macro if_equal_ptr param0:req, param1:req + .byte 0x17 + .4byte \param0 + .4byte \param1 + .endm + + .macro if_not_equal_ptr param0:req, param1:req + .byte 0x18 + .4byte \param0 + .4byte \param1 + .endm + + .macro if_move param0:req, param1:req + .byte 0x19 + .2byte \param0 + .4byte \param1 + .endm + + .macro if_not_move param0:req, param1:req + .byte 0x1a + .2byte \param0 + .4byte \param1 + .endm + + .macro if_in_bytes param0:req, param1:req + .byte 0x1b + .4byte \param0 + .4byte \param1 + .endm + + .macro if_not_in_bytes param0:req, param1:req + .byte 0x1c + .4byte \param0 + .4byte \param1 + .endm + + .macro if_in_hwords param0:req, param1:req + .byte 0x1d + .4byte \param0 + .4byte \param1 + .endm + + .macro if_not_in_hwords param0:req, param1:req + .byte 0x1e + .4byte \param0 + .4byte \param1 + .endm + + .macro if_user_has_attacking_move param0:req + .byte 0x1f + .4byte \param0 + .endm + + .macro if_user_has_no_attacking_moves param0:req + .byte 0x20 + .4byte \param0 + .endm + + .macro get_turn_count + .byte 0x21 + .endm + + .macro get_type param0:req + .byte 0x22 + .byte \param0 + .endm + + .macro get_considered_move_power + .byte 0x23 + .endm + + .macro get_how_powerful_move_is + .byte 0x24 + .endm + + .macro get_last_used_bank_move battler:req + .byte 0x25 + .byte \battler + .endm + + .macro if_equal_ param0:req, param1:req + .byte 0x26 + .byte \param0 + .4byte \param1 + .endm + + .macro if_not_equal_ param0:req, param1:req + .byte 0x27 + .byte \param0 + .4byte \param1 + .endm + + .macro if_user_goes param0:req, param1:req + .byte 0x28 + .byte \param0 + .4byte \param1 + .endm + + .macro if_user_doesnt_go param0:req, param1:req + .byte 0x29 + .byte \param0 + .4byte \param1 + .endm + + .macro nullsub_2A + .byte 0x2a + .endm + + .macro nullsub_2B + .byte 0x2b + .endm + + .macro count_usable_party_mons battler:req + .byte 0x2c + .byte \battler + .endm + + .macro get_considered_move + .byte 0x2d + .endm + + .macro get_considered_move_effect + .byte 0x2e + .endm + + .macro get_ability battler:req + .byte 0x2f + .byte \battler + .endm + + .macro get_highest_type_effectiveness + .byte 0x30 + .endm + + .macro if_type_effectiveness param0:req, param1:req + .byte 0x31 + .byte \param0 + .4byte \param1 + .endm + + .macro nullsub_32 + .byte 0x32 + .endm + + .macro nullsub_33 + .byte 0x33 + .endm + + .macro if_status_in_party battler:req, status1:req, param2:req + .byte 0x34 + .byte \battler + .4byte \status1 + .4byte \param2 + .endm + + .macro if_status_not_in_party battler:req, status1:req, param2:req + .byte 0x35 + .byte \battler + .4byte \status1 + .4byte \param2 + .endm + + .macro get_weather + .byte 0x36 + .endm + + .macro if_effect param0:req, param1:req + .byte 0x37 + .byte \param0 + .4byte \param1 + .endm + + .macro if_not_effect param0:req, param1:req + .byte 0x38 + .byte \param0 + .4byte \param1 + .endm + + .macro if_stat_level_less_than battler:req, stat:req, param2:req, param3:req + .byte 0x39 + .byte \battler + .byte \stat + .byte \param2 + .4byte \param3 + .endm + + .macro if_stat_level_more_than battler:req, stat:req, param2:req, param3:req + .byte 0x3a + .byte \battler + .byte \stat + .byte \param2 + .4byte \param3 + .endm + + .macro if_stat_level_equal battler:req, stat:req, param2:req, param3:req + .byte 0x3b + .byte \battler + .byte \stat + .byte \param2 + .4byte \param3 + .endm + + .macro if_stat_level_not_equal battler:req, stat:req, param2:req, param3:req + .byte 0x3c + .byte \battler + .byte \stat + .byte \param2 + .4byte \param3 + .endm + + .macro if_can_faint param0:req + .byte 0x3d + .4byte \param0 + .endm + + .macro if_cant_faint param0:req + .byte 0x3e + .4byte \param0 + .endm + + .macro if_has_move battler:req, param1:req, param2:req + .byte 0x3f + .byte \battler + .2byte \param1 + .4byte \param2 + .endm + + .macro if_doesnt_have_move battler:req, param1:req, param2:req + .byte 0x40 + .byte \battler + .2byte \param1 + .4byte \param2 + .endm + + .macro if_has_move_with_effect battler:req, param1:req, param2:req + .byte 0x41 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_doesnt_have_move_with_effect battler:req, param1:req, param2:req + .byte 0x42 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_any_move_disabled_or_encored battler:req, param1:req, param2:req + .byte 0x43 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro if_curr_move_disabled_or_encored param0:req, param1:req + .byte 0x44 + .byte \param0 + .4byte \param1 + .endm + + .macro flee + .byte 0x45 + .endm + + .macro if_random_safari_flee param0:req + .byte 0x46 + .4byte \param0 + .endm + + .macro watch + .byte 0x47 + .endm + + .macro get_hold_effect battler:req + .byte 0x48 + .byte \battler + .endm + + .macro get_gender battler:req + .byte 0x49 + .byte \battler + .endm + + .macro is_first_turn_for battler:req + .byte 0x4a + .byte \battler + .endm + + .macro get_stockpile_count battler:req + .byte 0x4b + .byte \battler + .endm + + .macro is_double_battle + .byte 0x4c + .endm + + .macro get_used_held_item battler:req + .byte 0x4d + .byte \battler + .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 battler:req + .byte 0x51 + .byte \battler + .endm + + .macro nullsub_52 + .byte 0x52 + .endm + + .macro nullsub_53 + .byte 0x53 + .endm + + .macro nullsub_54 + .byte 0x54 + .endm + + .macro nullsub_55 + .byte 0x55 + .endm + + .macro nullsub_56 + .byte 0x56 + .endm + + .macro nullsub_57 + .byte 0x57 + .endm + + .macro call param0:req + .byte 0x58 + .4byte \param0 + .endm + + .macro goto param0:req + .byte 0x59 + .4byte \param0 + .endm + + .macro end + .byte 0x5a + .endm + + .macro if_level_cond param0:req, param1:req + .byte 0x5b + .byte \param0 + .4byte \param1 + .endm + + .macro if_target_taunted param0:req + .byte 0x5c + .4byte \param0 + .endm + + .macro if_target_not_taunted param0:req + .byte 0x5d + .4byte \param0 + .endm + + .macro if_target_is_ally param0:req + .byte 0x5e + .4byte \param0 + .endm + + .macro is_of_type battler:req, type:req + .byte 0x5f + .byte \battler + .byte \type + .endm + + .macro check_ability battler:req, ability:req + .byte 0x60 + .byte \battler + .byte \ability + .endm + + .macro if_flash_fired battler:req, param1:req + .byte 0x61 + .byte \battler + .4byte \param1 + .endm + + .macro if_holds_item battler:req, param1:req, param2:req + .byte 0x62 + .byte \battler + .2byte \param1 + .4byte \param2 + .endm + +@ useful script macros + .macro get_curr_move_type + get_type AI_TYPE_MOVE + .endm + + .macro get_user_type1 + get_type AI_TYPE1_USER + .endm + + .macro get_user_type2 + get_type AI_TYPE2_USER + .endm + + .macro get_target_type1 + get_type AI_TYPE1_TARGET + .endm + + .macro get_target_type2 + get_type AI_TYPE2_TARGET + .endm + + .macro if_ability battler:req, ability:req, ptr:req + check_ability \battler, \ability + if_equal 1, \ptr + .endm + + .macro if_no_ability battler:req, ability:req, ptr:req + check_ability \battler, \ability + if_equal 0, \ptr + .endm + + .macro if_type battler:req, type:req, ptr:req + is_of_type \battler, \type + if_equal 1, \ptr + .endm + + .macro if_no_type battler:req, type:req, ptr:req + is_of_type \battler, \type + if_equal 0, \ptr + .endm + + .macro if_target_faster ptr:req + if_user_goes 1, \ptr + .endm + + .macro if_user_faster ptr:req + if_user_goes 0, \ptr + .endm + + .macro if_double_battle ptr:req + is_double_battle + if_equal 1, \ptr + .endm + + .macro if_not_double_battle ptr:req + is_double_battle + if_equal 0, \ptr + .endm + + .macro if_any_move_disabled battler:req, ptr:req + if_any_move_disabled_or_encored \battler, 0, \ptr + .endm + + .macro if_any_move_encored battler:req, ptr:req + if_any_move_disabled_or_encored \battler, 1, \ptr + .endm diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc new file mode 100644 index 0000000..5426cdf --- /dev/null +++ b/asm/macros/battle_anim_script.inc @@ -0,0 +1,285 @@ +@ commands + + .macro loadspritegfx tag:req + .byte 0x0 + .2byte \tag + .endm + + .macro unloadspritegfx tag:req + .byte 0x1 + .2byte \tag + .endm + +.macro createsprite template:req, anim_battler:req, subpriority_offset:req, argv:vararg + .byte 0x02 + .4byte \template + .if \anim_battler == ANIM_TARGET + .byte 0x80 | (\subpriority_offset & 0x7F) + .else + .byte (\subpriority_offset & 0x7F) + .endif + .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 +.Lsprite_\@_1: + .2byte \argv +.Lsprite_\@_2: + .endm + + .macro createvisualtask addr:req, priority:req, argv:vararg + .byte 0x03 + .4byte \addr + .byte \priority + .byte (.Lcreatetask_\@_2 - .Lcreatetask_\@_1) / 2 +.Lcreatetask_\@_1: + .2byte \argv +.Lcreatetask_\@_2: + .endm + + .macro delay param0:req + .byte 0x4 + .byte \param0 + .endm + + .macro waitforvisualfinish + .byte 0x5 + .endm + + .macro hang1 + .byte 0x6 + .endm + + .macro hang2 + .byte 0x7 + .endm + + .macro end + .byte 0x8 + .endm + + .macro playse se:req + .byte 0x9 + .2byte \se + .endm + + .macro monbg battler:req + .byte 0xa + .byte \battler + .endm + + .macro clearmonbg battler:req + .byte 0xb + .byte \battler + .endm + + .macro setalpha eva:req, evb:req + .byte 0x0C + .2byte ((\evb) << 8) | (\eva) + .endm + + .macro blendoff + .byte 0xd + .endm + + .macro call param0:req + .byte 0xe + .4byte \param0 + .endm + + .macro return + .byte 0xf + .endm + + .macro setarg param0:req, param1:req + .byte 0x10 + .byte \param0 + .2byte \param1 + .endm + + .macro choosetwoturnanim param0:req, param1:req + .byte 0x11 + .4byte \param0 + .4byte \param1 + .endm + + .macro jumpifmoveturn param0:req, ptr:req + .byte 0x12 + .byte \param0 + .4byte \ptr + .endm + + .macro goto ptr:req + .byte 0x13 + .4byte \ptr + .endm + + .macro fadetobg bg:req + .byte 0x14 + .byte \bg + .endm + + .macro restorebg + .byte 0x15 + .endm + + .macro waitbgfadeout + .byte 0x16 + .endm + + .macro waitbgfadein + .byte 0x17 + .endm + + .macro changebg bg:req + .byte 0x18 + .byte \bg + .endm + + .macro playsewithpan se:req, pan:req + .byte 0x19 + .2byte \se + .byte \pan + .endm + + .macro setpan pan:req + .byte 0x1a + .byte \pan + .endm + + .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req + .byte 0x1b + .2byte \se + .byte \param1 + .byte \param2 + .byte \param3 + .byte \param4 + .endm + + .macro loopsewithpan se:req, pan:req, wait:req, times:req + .byte 0x1c + .2byte \se + .byte \pan + .byte \wait + .byte \times + .endm + + .macro waitplaysewithpan se:req, pan:req, wait:req + .byte 0x1d + .2byte \se + .byte \pan + .byte \wait + .endm + + .macro setbldcnt param0:req + .byte 0x1e + .2byte \param0 + .endm + + .macro createsoundtask addr:req, 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 jumpargeq param0:req, param1:req, ptr:req + .byte 0x21 + .byte \param0 + .2byte \param1 + .4byte \ptr + .endm + + .macro monbg_22 battler:req + .byte 0x22 + .byte \battler + .endm + + .macro clearmonbg_23 battler:req + .byte 0x23 + .byte \battler + .endm + + .macro jumpifcontest ptr:req + .byte 0x24 + .4byte \ptr + .endm + + .macro fadetobgfromset param0:req, param1:req, param2:req + .byte 0x25 + .byte \param0 + .byte \param1 + .byte \param2 + .endm + + .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req + .byte 0x26 + .2byte \se + .byte \param1 + .byte \param2 + .byte \param3 + .byte \param4 + .endm + + .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req + .byte 0x27 + .2byte \se + .byte \param1 + .byte \param2 + .byte \param3 + .byte \param4 + .endm + + .macro monbgprio_28 battler:req + .byte 0x28 + .byte \battler + .endm + + .macro monbgprio_29 + .byte 0x29 + .endm + + .macro monbgprio_2A battler:req + .byte 0x2a + .byte \battler + .endm + + .macro invisible battler:req + .byte 0x2b + .byte \battler + .endm + + .macro visible battler:req + .byte 0x2c + .byte \battler + .endm + + .macro doublebattle_2D battler:req + .byte 0x2d + .byte \battler + .endm + + .macro doublebattle_2E battler:req + .byte 0x2e + .byte \battler + .endm + + .macro stopsound + .byte 0x2f + .endm + +@ useful macros + .macro jumpreteq value:req, ptr:req + jumpargeq ARG_RET_ID, \value, \ptr + .endm + + .macro jumprettrue ptr:req + jumpreteq TRUE, \ptr + .endm + + .macro jumpretfalse ptr:req + jumpreteq FALSE, \ptr + .endm diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc new file mode 100644 index 0000000..997af51 --- /dev/null +++ b/asm/macros/battle_script.inc @@ -0,0 +1,1433 @@ +@ commands + .macro attackcanceler + .byte 0x0 + .endm + + .macro accuracycheck param0:req, param1:req + .byte 0x1 + .4byte \param0 + .2byte \param1 + .endm + + .macro attackstring + .byte 0x2 + .endm + + .macro ppreduce + .byte 0x3 + .endm + + .macro critcalc + .byte 0x4 + .endm + + .macro damagecalc + .byte 0x5 + .endm + + .macro typecalc + .byte 0x6 + .endm + + .macro adjustnormaldamage + .byte 0x7 + .endm + + .macro adjustnormaldamage2 + .byte 0x8 + .endm + + .macro attackanimation + .byte 0x9 + .endm + + .macro waitanimation + .byte 0xa + .endm + + .macro healthbarupdate battler:req + .byte 0xb + .byte \battler + .endm + + .macro datahpupdate battler:req + .byte 0xc + .byte \battler + .endm + + .macro critmessage + .byte 0xd + .endm + + .macro effectivenesssound + .byte 0xe + .endm + + .macro resultmessage + .byte 0xf + .endm + + .macro printstring id:req + .byte 0x10 + .2byte \id + .endm + + .macro printselectionstring id:req + .byte 0x11 + .2byte \id + .endm + + .macro waitmessage param0:req + .byte 0x12 + .2byte \param0 + .endm + + .macro printfromtable ptr:req + .byte 0x13 + .4byte \ptr + .endm + + .macro printselectionstringfromtable ptr:req + .byte 0x14 + .4byte \ptr + .endm + + .macro seteffectwithchance + .byte 0x15 + .endm + + .macro seteffectprimary + .byte 0x16 + .endm + + .macro seteffectsecondary + .byte 0x17 + .endm + + .macro clearstatusfromeffect battler:req + .byte 0x18 + .byte \battler + .endm + + .macro tryfaintmon battler:req, param1:req, ptr:req + .byte 0x19 + .byte \battler + .byte \param1 + .4byte \ptr + .endm + + .macro dofaintanimation battler:req + .byte 0x1a + .byte \battler + .endm + + .macro cleareffectsonfaint battler:req + .byte 0x1b + .byte \battler + .endm + + .macro jumpifstatus battler:req, status1:req, ptr:req + .byte 0x1c + .byte \battler + .4byte \status1 + .4byte \ptr + .endm + + .macro jumpifstatus2 battler:req, status2:req, ptr:req + .byte 0x1d + .byte \battler + .4byte \status2 + .4byte \ptr + .endm + + .macro jumpifability param0:req, ability:req, ptr:req + .byte 0x1e + .byte \param0 + .byte \ability + .4byte \ptr + .endm + + .macro jumpifsideaffecting battler:req, sidestatus:req, ptr:req + .byte 0x1f + .byte \battler + .2byte \sidestatus + .4byte \ptr + .endm + + .macro jumpifstat battler:req, ifflag:req, stat:req, value:req, ptr + .byte 0x20 + .byte \battler + .byte \ifflag + .byte \stat + .byte \value + .4byte \ptr + .endm + + .macro jumpifstatus3condition battler:req, status3:req, param2:req, ptr:req + .byte 0x21 + .byte \battler + .4byte \status3 + .byte \param2 + .4byte \ptr + .endm + + .macro jumpiftype battler:req, type:req, ptr:req + .byte 0x22 + .byte \battler + .byte \type + .4byte \ptr + .endm + + .macro getexp battler:req + .byte 0x23 + .byte \battler + .endm + + .macro atk24 ptr:req + .byte 0x24 + .4byte \ptr + .endm + + .macro movevaluescleanup + .byte 0x25 + .endm + + .macro setmultihit value:req + .byte 0x26 + .byte \value + .endm + + .macro decrementmultihit value:req + .byte 0x27 + .4byte \value + .endm + + .macro goto ptr:req + .byte 0x28 + .4byte \ptr + .endm + + .macro jumpifbyte ifflag:req, param1:req, param2:req, param3:req + .byte 0x29 + .byte \ifflag + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifhalfword ifflag:req, param1:req, param2:req, param3:req + .byte 0x2a + .byte \ifflag + .4byte \param1 + .2byte \param2 + .4byte \param3 + .endm + + .macro jumpifword ifflag:req, param1:req, param2:req, param3:req + .byte 0x2b + .byte \ifflag + .4byte \param1 + .4byte \param2 + .4byte \param3 + .endm + + .macro jumpifarrayequal param0:req, param1:req, param2:req, param3:req + .byte 0x2c + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifarraynotequal param0:req, param1:req, param2:req, param3:req + .byte 0x2d + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro setbyte ptr:req, param1:req + .byte 0x2e + .4byte \ptr + .byte \param1 + .endm + + .macro addbyte ptr:req, param1:req + .byte 0x2f + .4byte \ptr + .byte \param1 + .endm + + .macro subbyte ptr:req, param1:req + .byte 0x30 + .4byte \ptr + .byte \param1 + .endm + + .macro copyarray param0:req, param1:req, param2:req + .byte 0x31 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro copyarraywithindex param0:req, param1:req, param2:req, param3:req + .byte 0x32 + .4byte \param0 + .4byte \param1 + .4byte \param2 + .byte \param3 + .endm + + .macro orbyte ptr:req, param1:req + .byte 0x33 + .4byte \ptr + .byte \param1 + .endm + + .macro orhalfword ptr:req, param1:req + .byte 0x34 + .4byte \ptr + .2byte \param1 + .endm + + .macro orword ptr:req, param1:req + .byte 0x35 + .4byte \ptr + .4byte \param1 + .endm + + .macro bicbyte ptr:req, param1:req + .byte 0x36 + .4byte \ptr + .byte \param1 + .endm + + .macro bichalfword ptr:req, param1:req + .byte 0x37 + .4byte \ptr + .2byte \param1 + .endm + + .macro bicword ptr:req, param1:req + .byte 0x38 + .4byte \ptr + .4byte \param1 + .endm + + .macro pause param0:req + .byte 0x39 + .2byte \param0 + .endm + + .macro waitstate + .byte 0x3a + .endm + + .macro healthbar_update battler:req + .byte 0x3b + .byte \battler + .endm + + .macro return + .byte 0x3c + .endm + + .macro end + .byte 0x3d + .endm + + .macro end2 + .byte 0x3e + .endm + + .macro end3 + .byte 0x3f + .endm + + .macro jumpifaffectedbyprotect ptr:req + .byte 0x40 + .4byte \ptr + .endm + + .macro call ptr:req + .byte 0x41 + .4byte \ptr + .endm + + .macro jumpiftype2 battler:req, type:req, ptr:req + .byte 0x42 + .byte \battler + .byte \type + .4byte \ptr + .endm + + .macro jumpifabilitypresent ability:req, ptr:req + .byte 0x43 + .byte \ability + .4byte \ptr + .endm + + .macro endselectionscript + .byte 0x44 + .endm + + .macro playanimation battler:req, param1:req, param2:req + .byte 0x45 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro playanimation2 battler:req, param1:req, param2:req + .byte 0x46 + .byte \battler + .4byte \param1 + .4byte \param2 + .endm + + .macro setgraphicalstatchangevalues + .byte 0x47 + .endm + + .macro playstatchangeanimation battler:req, param1:req, param2:req + .byte 0x48 + .byte \battler + .byte \param1 + .byte \param2 + .endm + + .macro moveend param0:req, param1:req + .byte 0x49 + .byte \param0 + .byte \param1 + .endm + + @ Help macros for 5 uses of moveend command + + @ All cases + .macro moveendall + setbyte sMOVEEND_STATE, 0 + moveend 0, 0 + .endm + + @ Chosen case + .macro moveendcase case:req + setbyte sMOVEEND_STATE, \case + moveend 1, 0 + .endm + + @ All cases from (inclusive) + .macro moveendfrom from:req + setbyte sMOVEEND_STATE, \from + moveend 0, 0 + .endm + + @ All cases from 0 to (not inclusive) + .macro moveendto to:req + setbyte sMOVEEND_STATE, 0 + moveend 2, \to + .endm + + @ Cases from (inclusive) to (not inclusive) + .macro moveendfromto from:req, to:req + setbyte sMOVEEND_STATE, \from + moveend 2, \to + .endm + + .macro typecalc2 + .byte 0x4a + .endm + + .macro returnatktoball + .byte 0x4b + .endm + + .macro getswitchedmondata battler:req + .byte 0x4c + .byte \battler + .endm + + .macro switchindataupdate battler:req + .byte 0x4d + .byte \battler + .endm + + .macro switchinanim battler:req, dontclearsubstitutebit:req + .byte 0x4e + .byte \battler + .byte \dontclearsubstitutebit + .endm + + .macro jumpifcantswitch battler:req, ptr:req + .byte 0x4f + .byte \battler + .4byte \ptr + .endm + + .macro openpartyscreen param0:req, param1:req + .byte 0x50 + .byte \param0 + .4byte \param1 + .endm + + .macro switchhandleorder battler:req, param1:req + .byte 0x51 + .byte \battler + .byte \param1 + .endm + + .macro switchineffects battler:req + .byte 0x52 + .byte \battler + .endm + + .macro trainerslidein battler:req + .byte 0x53 + .byte \battler + .endm + + .macro playse param0:req + .byte 0x54 + .2byte \param0 + .endm + + .macro fanfare param0:req + .byte 0x55 + .2byte \param0 + .endm + + .macro playfaintcry battler:req + .byte 0x56 + .byte \battler + .endm + + .macro atk57 + .byte 0x57 + .endm + + .macro returntoball battler:req + .byte 0x58 + .byte \battler + .endm + + .macro handlelearnnewmove param0:req, param1:req, param2:req + .byte 0x59 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro yesnoboxlearnmove param0:req + .byte 0x5a + .4byte \param0 + .endm + + .macro yesnoboxstoplearningmove param0:req + .byte 0x5b + .4byte \param0 + .endm + + .macro hitanimation battler:req + .byte 0x5c + .byte \battler + .endm + + .macro getmoneyreward + .byte 0x5d + .endm + + .macro atk5E battler:req + .byte 0x5e + .byte \battler + .endm + + .macro swapattackerwithtarget + .byte 0x5f + .endm + + .macro incrementgamestat param0:req + .byte 0x60 + .byte \param0 + .endm + + .macro drawpartystatussummary battler:req + .byte 0x61 + .byte \battler + .endm + + .macro hidepartystatussummary battler:req + .byte 0x62 + .byte \battler + .endm + + .macro jumptocalledmove param0:req + .byte 0x63 + .byte \param0 + .endm + + .macro statusanimation battler:req + .byte 0x64 + .byte \battler + .endm + + .macro status2animation battler:req, status2:req + .byte 0x65 + .byte \battler + .4byte \status2 + .endm + + .macro chosenstatusanimation battler:req, param1:req, param2:req + .byte 0x66 + .byte \battler + .byte \param1 + .4byte \param2 + .endm + + .macro yesnobox + .byte 0x67 + .endm + + .macro cancelallactions + .byte 0x68 + .endm + + .macro adjustsetdamage + .byte 0x69 + .endm + + .macro removeitem battler:req + .byte 0x6a + .byte \battler + .endm + + .macro atknameinbuff1 + .byte 0x6b + .endm + + .macro drawlvlupbox + .byte 0x6c + .endm + + .macro resetsentmonsvalue + .byte 0x6d + .endm + + .macro setatktoplayer0 + .byte 0x6e + .endm + + .macro makevisible battler:req + .byte 0x6f + .byte \battler + .endm + + .macro recordlastability battler:req + .byte 0x70 + .byte \battler + .endm + + .macro buffermovetolearn + .byte 0x71 + .endm + + .macro jumpifplayerran ptr:req + .byte 0x72 + .4byte \ptr + .endm + + .macro hpthresholds battler:req + .byte 0x73 + .byte \battler + .endm + + .macro hpthresholds2 battler:req + .byte 0x74 + .byte \battler + .endm + + .macro useitemonopponent + .byte 0x75 + .endm + + .macro various battler:req, param1:req + .byte 0x76 + .byte \battler + .byte \param1 + .endm + + .macro setprotectlike + .byte 0x77 + .endm + + .macro faintifabilitynotdamp + .byte 0x78 + .endm + + .macro setatkhptozero + .byte 0x79 + .endm + + .macro jumpifnexttargetvalid ptr:req + .byte 0x7a + .4byte \ptr + .endm + + .macro tryhealhalfhealth param0:req, battler:req + .byte 0x7b + .4byte \param0 + .byte \battler + .endm + + .macro trymirrormove + .byte 0x7c + .endm + + .macro setrain + .byte 0x7d + .endm + + .macro setreflect + .byte 0x7e + .endm + + .macro setseeded + .byte 0x7f + .endm + + .macro manipulatedamage param0:req + .byte 0x80 + .byte \param0 + .endm + + .macro trysetrest param0:req + .byte 0x81 + .4byte \param0 + .endm + + .macro jumpifnotfirstturn ptr:req + .byte 0x82 + .4byte \ptr + .endm + + .macro nop + .byte 0x83 + .endm + + .macro jumpifcantmakeasleep param0:req + .byte 0x84 + .4byte \param0 + .endm + + .macro stockpile + .byte 0x85 + .endm + + .macro stockpiletobasedamage param0:req + .byte 0x86 + .4byte \param0 + .endm + + .macro stockpiletohpheal param0:req + .byte 0x87 + .4byte \param0 + .endm + + .macro negativedamage + .byte 0x88 + .endm + + .macro statbuffchange param0:req, param1:req + .byte 0x89 + .byte \param0 + .4byte \param1 + .endm + + .macro normalisebuffs + .byte 0x8a + .endm + + .macro setbide + .byte 0x8b + .endm + + .macro confuseifrepeatingattackends + .byte 0x8c + .endm + + .macro setmultihitcounter param0:req + .byte 0x8d + .byte \param0 + .endm + + .macro initmultihitstring + .byte 0x8e + .endm + + .macro forcerandomswitch param0:req + .byte 0x8f + .4byte \param0 + .endm + + .macro tryconversiontypechange param0:req + .byte 0x90 + .4byte \param0 + .endm + + .macro givepaydaymoney + .byte 0x91 + .endm + + .macro setlightscreen + .byte 0x92 + .endm + + .macro tryKO param0:req + .byte 0x93 + .4byte \param0 + .endm + + .macro damagetohalftargethp + .byte 0x94 + .endm + + .macro setsandstorm + .byte 0x95 + .endm + + .macro weatherdamage + .byte 0x96 + .endm + + .macro tryinfatuating param0:req + .byte 0x97 + .4byte \param0 + .endm + + .macro updatestatusicon battler:req + .byte 0x98 + .byte \battler + .endm + + .macro setmist + .byte 0x99 + .endm + + .macro setfocusenergy + .byte 0x9a + .endm + + .macro transformdataexecution + .byte 0x9b + .endm + + .macro setsubstitute + .byte 0x9c + .endm + + .macro mimicattackcopy param0:req + .byte 0x9d + .4byte \param0 + .endm + + .macro metronome + .byte 0x9e + .endm + + .macro dmgtolevel + .byte 0x9f + .endm + + .macro psywavedamageeffect + .byte 0xa0 + .endm + + .macro counterdamagecalculator param0:req + .byte 0xa1 + .4byte \param0 + .endm + + .macro mirrorcoatdamagecalculator param0:req + .byte 0xa2 + .4byte \param0 + .endm + + .macro disablelastusedattack param0:req + .byte 0xa3 + .4byte \param0 + .endm + + .macro trysetencore param0:req + .byte 0xa4 + .4byte \param0 + .endm + + .macro painsplitdmgcalc param0:req + .byte 0xa5 + .4byte \param0 + .endm + + .macro settypetorandomresistance param0:req + .byte 0xa6 + .4byte \param0 + .endm + + .macro setalwayshitflag + .byte 0xa7 + .endm + + .macro copymovepermanently param0:req + .byte 0xa8 + .4byte \param0 + .endm + + .macro trychoosesleeptalkmove param0:req + .byte 0xa9 + .4byte \param0 + .endm + + .macro setdestinybond + .byte 0xaa + .endm + + .macro trysetdestinybondtohappen + .byte 0xab + .endm + + .macro remaininghptopower + .byte 0xac + .endm + + .macro tryspiteppreduce param0:req + .byte 0xad + .4byte \param0 + .endm + + .macro healpartystatus + .byte 0xae + .endm + + .macro cursetarget param0:req + .byte 0xaf + .4byte \param0 + .endm + + .macro trysetspikes param0:req + .byte 0xb0 + .4byte \param0 + .endm + + .macro setforesight + .byte 0xb1 + .endm + + .macro trysetperishsong param0:req + .byte 0xb2 + .4byte \param0 + .endm + + .macro rolloutdamagecalculation + .byte 0xb3 + .endm + + .macro jumpifconfusedandstatmaxed stat:req, ptr:req + .byte 0xb4 + .byte \stat + .4byte \ptr + .endm + + .macro furycuttercalc + .byte 0xb5 + .endm + + .macro happinesstodamagecalculation + .byte 0xb6 + .endm + + .macro presentdamagecalculation + .byte 0xb7 + .endm + + .macro setsafeguard + .byte 0xb8 + .endm + + .macro magnitudedamagecalculation + .byte 0xb9 + .endm + + .macro jumpifnopursuitswitchdmg param0:req + .byte 0xba + .4byte \param0 + .endm + + .macro setsunny + .byte 0xbb + .endm + + .macro maxattackhalvehp param0:req + .byte 0xbc + .4byte \param0 + .endm + + .macro copyfoestats param0:req + .byte 0xbd + .4byte \param0 + .endm + + .macro rapidspinfree + .byte 0xbe + .endm + + .macro setdefensecurlbit + .byte 0xbf + .endm + + .macro recoverbasedonsunlight param0:req + .byte 0xc0 + .4byte \param0 + .endm + + .macro hiddenpowercalc + .byte 0xc1 + .endm + + .macro selectfirstvalidtarget + .byte 0xc2 + .endm + + .macro trysetfutureattack param0:req + .byte 0xc3 + .4byte \param0 + .endm + + .macro trydobeatup param0:req, param1:req + .byte 0xc4 + .4byte \param0 + .4byte \param1 + .endm + + .macro setsemiinvulnerablebit + .byte 0xc5 + .endm + + .macro clearsemiinvulnerablebit + .byte 0xc6 + .endm + + .macro setminimize + .byte 0xc7 + .endm + + .macro sethail + .byte 0xc8 + .endm + + .macro jumpifattackandspecialattackcannotfall ptr:req + .byte 0xc9 + .4byte \ptr + .endm + + .macro setforcedtarget + .byte 0xca + .endm + + .macro setcharge + .byte 0xcb + .endm + + .macro callterrainattack + .byte 0xcc + .endm + + .macro cureifburnedparalysedorpoisoned param0:req + .byte 0xcd + .4byte \param0 + .endm + + .macro settorment param0:req + .byte 0xce + .4byte \param0 + .endm + + .macro jumpifnodamage param0:req + .byte 0xcf + .4byte \param0 + .endm + + .macro settaunt param0:req + .byte 0xd0 + .4byte \param0 + .endm + + .macro trysethelpinghand param0:req + .byte 0xd1 + .4byte \param0 + .endm + + .macro tryswapitems param0:req + .byte 0xd2 + .4byte \param0 + .endm + + .macro trycopyability param0:req + .byte 0xd3 + .4byte \param0 + .endm + + .macro trywish param0:req, param1:req + .byte 0xd4 + .byte \param0 + .4byte \param1 + .endm + + .macro trysetroots param0:req + .byte 0xd5 + .4byte \param0 + .endm + + .macro doubledamagedealtifdamaged + .byte 0xd6 + .endm + + .macro setyawn param0:req + .byte 0xd7 + .4byte \param0 + .endm + + .macro setdamagetohealthdifference param0:req + .byte 0xd8 + .4byte \param0 + .endm + + .macro scaledamagebyhealthratio + .byte 0xd9 + .endm + + .macro tryswapabilities param0:req + .byte 0xda + .4byte \param0 + .endm + + .macro tryimprison param0:req + .byte 0xdb + .4byte \param0 + .endm + + .macro trysetgrudge param0:req + .byte 0xdc + .4byte \param0 + .endm + + .macro weightdamagecalculation + .byte 0xdd + .endm + + .macro assistattackselect param0:req + .byte 0xde + .4byte \param0 + .endm + + .macro trysetmagiccoat param0:req + .byte 0xdf + .4byte \param0 + .endm + + .macro trysetsnatch param0:req + .byte 0xe0 + .4byte \param0 + .endm + + .macro trygetintimidatetarget param0:req + .byte 0xe1 + .4byte \param0 + .endm + + .macro switchoutabilities battler:req + .byte 0xe2 + .byte \battler + .endm + + .macro jumpifhasnohp battler:req, param1:req + .byte 0xe3 + .byte \battler + .4byte \param1 + .endm + + .macro getsecretpowereffect + .byte 0xe4 + .endm + + .macro pickup + .byte 0xe5 + .endm + + .macro docastformchangeanimation + .byte 0xe6 + .endm + + .macro trycastformdatachange + .byte 0xe7 + .endm + + .macro settypebasedhalvers param0:req + .byte 0xe8 + .4byte \param0 + .endm + + .macro setweatherballtype + .byte 0xe9 + .endm + + .macro tryrecycleitem param0:req + .byte 0xea + .4byte \param0 + .endm + + .macro settypetoterrain param0:req + .byte 0xeb + .4byte \param0 + .endm + + .macro pursuitrelated param0:req + .byte 0xec + .4byte \param0 + .endm + + .macro snatchsetbattlers + .byte 0xed + .endm + + .macro removelightscreenreflect + .byte 0xee + .endm + + .macro handleballthrow + .byte 0xef + .endm + + .macro givecaughtmon + .byte 0xf0 + .endm + + .macro trysetcaughtmondexflags param0:req + .byte 0xf1 + .4byte \param0 + .endm + + .macro displaydexinfo + .byte 0xf2 + .endm + + .macro trygivecaughtmonnick param0:req + .byte 0xf3 + .4byte \param0 + .endm + + .macro subattackerhpbydmg + .byte 0xf4 + .endm + + .macro removeattackerstatus1 + .byte 0xf5 + .endm + + .macro finishaction + .byte 0xf6 + .endm + + .macro finishturn + .byte 0xf7 + .endm + + .macro trainerslideout param0:req + .byte 0xf8 + .byte \param0 + .endm + +@ various command changed to more readable macros + .macro cancelmultiturnmoves battler:req + various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES + .endm + + .macro setmagiccoattarget battler:req + various \battler, VARIOUS_SET_MAGIC_COAT_TARGET + .endm + + .macro getifcantrunfrombattle battler:req + various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE + .endm + + .macro getmovetarget battler:req + various \battler, VARIOUS_GET_MOVE_TARGET + .endm + + .macro various4 battler:req + various \battler, 4 + .endm + + .macro resetintrimidatetracebits battler:req + various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .endm + + .macro updatechoicemoveonlvlup battler:req + various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + .endm + + .macro various7 battler:req + various \battler, 7 + .endm + + .macro various8 battler:req + various \battler, 8 + .endm + + .macro arenajudgmentwindow + various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW + .endm + + .macro arenaopponentmonlost + various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST + .endm + + .macro arenaplayermonlost + various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST + .endm + + .macro arenabothmonlost + various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST + .endm + + .macro forfeityesnobox battler:req + various \battler, VARIOUS_EMIT_YESNOBOX + .endm + + .macro various14 battler:req + various \battler, 14 + .endm + + .macro various15 battler:req + various \battler, 15 + .endm + + .macro arenajudmengtstring id:req + various \id, VARIOUS_ARENA_JUDGMENT_STRING + .endm + + .macro arenawaitmessage id:req + various \id, VARIOUS_ARENA_WAIT_STRING + .endm + + .macro waitcry battler:req + various \battler, VARIOUS_WAIT_CRY + .endm + + .macro returnopponentmon1toball battler:req + various \battler, VARIOUS_RETURN_OPPONENT_MON1 + .endm + + .macro returnopponentmon2toball battler:req + various \battler, VARIOUS_RETURN_OPPONENT_MON2 + .endm + + .macro volumedown + various BS_ATTACKER, VARIOUS_VOLUME_DOWN + .endm + + .macro volumeup + various BS_ATTACKER, VARIOUS_VOLUME_UP + .endm + + .macro setalreadystatusedmoveattempt battler:req + various \battler, 23 + .endm + + .macro various24 battler:req + various \battler, 24 + .endm + + .macro setoutcomeonteleport battler:req + various \battler, VARIOUS_SET_TELEPORT_OUTCOME + .endm + + .macro playtrainerdefeatbgm battler:req + various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + .endm + +@ helpful macros + .macro setstatchanger stat:req, stages:req, down:req + setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 + .endm + + .macro setmoveeffect effect:req + setbyte cEFFECT_CHOOSER \effect + .endm + + .macro chosenstatus1animation battler:req, status:req + chosenstatusanimation \battler 0x0 \status + .endm + + .macro chosenstatus2animation battler:req, status:req + chosenstatusanimation \battler 0x1 \status + .endm + + .macro sethword dst:req, value:req + setbyte \dst, (\value) & 0xFF + setbyte \dst + 1, ((\value) >> 8) & 0xFF + .endm + + .macro setword dst:req, value:req + setbyte \dst, (\value) & 0xFF + setbyte \dst + 1, ((\value) >> 8) & 0xFF + setbyte \dst + 2, ((\value) >> 16) & 0xFF + setbyte \dst + 3, ((\value) >> 24) & 0xFF + .endm + + .macro copybyte dst:req, src:req + copyarray \dst, \src, 0x1 + .endm + + .macro copyhword dst:req, src:req + copyarray \dst, \src, 0x2 + .endm + + .macro copyword dst:req, src:req + copyarray \dst, \src, 0x4 + .endm + + .macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req + jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req + jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifmove move:req, jumpptr:req + jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifnotmove move:req, jumpptr:req + jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifstatus3 battler:req, status:req, jumpptr:req + jumpifstatus3condition \battler, \status, 0x0, \jumpptr + .endm + + .macro jumpifnostatus3 battler:req, status:req, jumpptr:req + jumpifstatus3condition \battler, \status, 0x1, \jumpptr + .endm + + .macro jumpifmovehadnoeffect jumpptr:req + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr + .endm + + .macro jumpifbattletype flags:req, jumpptr:req + jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr + .endm + + .macro jumpifnotbattletype flags:req, jumpptr:req + jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr + .endm diff --git a/asm/macros/contest_ai_script.inc b/asm/macros/contest_ai_script.inc new file mode 100644 index 0000000..05d70e3 --- /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 0000000..a70b8e2 --- /dev/null +++ b/asm/macros/ec.inc @@ -0,0 +1,19 @@ + .macro ec_word word + .2byte EC_WORD_\word + .endm + + .macro ec_move1 name + .2byte (EC_GROUP_MOVE_1 << 9) | MOVE_\name + .endm + + .macro ec_move2 name + .2byte (EC_GROUP_MOVE_2 << 9) | MOVE_\name + .endm + + .macro ec_pokemon1 name + .2byte (EC_GROUP_POKEMON << 9) | SPECIES_\name + .endm + + .macro ec_pokemon2 name + .2byte (EC_GROUP_POKEMON2 << 9) | SPECIES_\name + .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc new file mode 100644 index 0000000..e00bdb6 --- /dev/null +++ b/asm/macros/event.inc @@ -0,0 +1,1668 @@ + @ 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:req + .byte 0x04 + .4byte \destination + .endm + + @ Jumps to destination and continues script execution from there. + .macro goto destination:req + .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:req, destination:req + .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:req, destination:req + .byte 0x07 + .byte \condition + .4byte \destination + .endm + + @ Jumps to the standard function at index function. + .macro gotostd function:req + .byte 0x08 + .byte \function + .endm + + @ callstd function names + STD_OBTAIN_ITEM = 0 + STD_FIND_ITEM = 1 + STD_OBTAIN_DECORATION = 7 + STD_REGISTER_MATCH_CALL = 8 + + @ Calls the standard function at index function. + .macro callstd function:req + .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:req, function:req + .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:req, function:req + .byte 0x0b + .byte \condition + .byte \function + .endm + + @ Executes a script stored in a default RAM location. + .macro returnram + .byte 0x0c + .endm + + @ Terminates script execution and "resets the script RAM". + .macro killscript + .byte 0x0d + .endm + + @ Sets some status related to Mystery Event. + .macro setmysteryeventstatus value:req + .byte 0x0e + .byte \value + .endm + + @ Sets the specified script bank to value. + .macro loadword destination:req, value:req + .byte 0x0f + .byte \destination + .4byte \value + .endm + + @ Sets the specified script bank to value. + .macro loadbyte destination:req, value:req + .byte 0x10 + .byte \destination + .byte \value + .endm + + @ Sets the byte at offset to value. + .macro writebytetoaddr value:req, offset:req + .byte 0x11 + .byte \value + .4byte \offset + .endm + + @ Copies the byte value at source into the specified script bank. + .macro loadbytefromaddr destination:req, source:req + .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:req, destination:req + .byte 0x13 + .byte \source + .4byte \destination + .endm + + @ Copies the contents of bank source into bank destination. + .macro copylocal destination:req, source:req + .byte 0x14 + .byte \destination + .byte \source + .endm + + @ Copies the byte at source to destination, replacing whatever byte was previously there. + .macro copybyte destination:req, source:req + .byte 0x15 + .4byte \destination + .4byte \source + .endm + + @ Changes the value of destination to value. + .macro setvar destination:req, value:req + .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:req, value:req + .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:req, value:req + .byte 0x18 + .2byte \destination + .2byte \value + .endm + + @ Copies the value of source into destination. + .macro copyvar destination:req, source:req + .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:req, source:req + .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:req, byte2:req + .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:req, b:req + .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:req, b:req + .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:req, b:req + .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:req, b:req + .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:req, b:req + .byte 0x20 + .4byte \a + .4byte \b + .endm + + @ Compares the value of `var` to a fixed word value (b). + .macro compare_var_to_value var:req, value:req + .byte 0x21 + .2byte \var + .2byte \value + .endm + + @ Compares the value of `var1` to the value of `var2`. + .macro compare_var_to_var var1:req, var2:req + .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:req, arg2:req + .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:req + .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:req + .byte 0x24 + .4byte \func + .endm + + @ Calls a special function; that is, a function designed for use by scripts and listed in a table of pointers. + .macro special function:req + .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:req, function:req + .byte 0x26 + .2byte \output + .2byte SPECIAL_\function + .endm + + @ temporary solution + .macro specialvar_ output:req, functionId:req + .byte 0x26 + .2byte \output + .2byte \functionId + .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:req + .byte 0x28 + .2byte \time + .endm + + @ Sets a to 1. + .macro setflag a:req + .byte 0x29 + .2byte \a + .endm + + @ Sets a to 0. + .macro clearflag a:req + .byte 0x2a + .2byte \a + .endm + + @ Compares a to 1. + .macro checkflag a:req + .byte 0x2b + .2byte \a + .endm + + @ Initializes the RTC`s local time offset to the given hour and minute. In FireRed, this command is a nop. + .macro initclock hour:req, minute:req + .byte 0x2c + .2byte \hour + .2byte \minute + .endm + + @ Runs time based events. In FireRed, this command is a nop. + .macro dotimebasedevents + .byte 0x2d + .endm + + @ Sets the values of variables 0x8000, 0x8001, and 0x8002 to the current hour, minute, and second. In FRLG, this command sets those variables to zero. + .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:req + .byte 0x2f + .2byte \sound_number + .endm + + @ Blocks script execution until the currently-playing sound (triggered by playse) finishes playing. + .macro waitse + .byte 0x30 + .endm + + @ Plays the specified (fanfare_number) fanfare. + .macro playfanfare fanfare_number:req + .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:req, unknown:req + .byte 0x33 + .2byte \song_number + .byte \unknown + .endm + + @ Saves the specified (song_number) song to be played later. + .macro savebgm song_number:req + .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:req + .byte 0x36 + .2byte \song_number + .endm + + @ Fades out the currently-playing song. + .macro fadeoutbgm speed:req + .byte 0x37 + .byte \speed + .endm + + @ Fades the previously-playing song back in. + .macro fadeinbgm speed:req + .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:req, warp:req, X:req, Y:req + .byte 0x39 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that does not play a sound effect. + .macro warpsilent map:req, warp:req, X:req, Y:req + .byte 0x3a + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Clone of warp that plays a door opening animation before stepping upwards into it. + .macro warpdoor map:req, warp:req, X:req, Y:req + .byte 0x3b + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Warps the player to another map using a hole animation. + .macro warphole map:req + .byte 0x3c + map \map + .endm + + @ Clone of warp that uses a teleport effect. It is apparently only used in R/S/E. + .macro warpteleport map:req, warp:req, X:req, Y:req + .byte 0x3d + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the warp destination to be used later. + .macro setwarp map:req, warp:req, X:req, Y:req + .byte 0x3e + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the warp destination that a warp to Warp 127 on Map 127.127 will connect to. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators). + .macro setdynamicwarp map:req, warp:req, X:req, Y:req + .byte 0x3f + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the destination that diving or emerging from a dive will take the player to. + .macro setdivewarp map:req, warp:req, X:req, Y:req + .byte 0x40 + map \map + .byte \warp + .2byte \X + .2byte \Y + .endm + + @ Sets the destination that falling into a hole will take the player to. + .macro setholewarp map:req, warp:req, X:req, Y:req + .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:req, Y:req + .byte 0x42 + .2byte \X + .2byte \Y + .endm + + @ Retrieves the number of Pokemon in the player's party, and stores that number in variable 0x800D (LASTRESULT). + .macro getpartysize + .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 giveitem index:req, quantity:req + .byte 0x44 + .2byte \index + .2byte \quantity + .endm + + @ Removes quantity of item index from the player's Bag. + .macro takeitem index:req, quantity:req + .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:req, quantity:req + .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:req, quantity:req + .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:req + .byte 0x48 + .2byte \index + .endm + + @ Adds a quantity amount of item index to the player's PC. Both arguments can be variables. + .macro givepcitem index:req, quantity:req + .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:req, quantity:req + .byte 0x4a + .2byte \index + .2byte \quantity + .endm + + @ Adds decoration to the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro givedecoration decoration:req + .byte 0x4b + .2byte \decoration + .endm + + @ Removes a decoration from the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro takedecoration decoration:req + .byte 0x4c + .2byte \decoration + .endm + + @ Checks for decoration in the player's PC. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro checkdecor decoration:req + .byte 0x4d + .2byte \decoration + .endm + + @ Checks if the player has enough space in their PC to hold decoration. Sets variable 0x800D (LASTRESULT) to 0x0001 if there is room, or 0x0000 is there is no room. In FireRed, this command is a nop. (The argument is read, but not used for anything.) + .macro checkdecorspace decoration:req + .byte 0x4e + .2byte \decoration + .endm + + @ Applies the movement data at movements to the specified (index) Object. Also closes any standard message boxes that are still open. + @ If no map is specified, then the current map is used. + .macro applymovement index:req, movements:req, map + .ifb \map + .byte 0x4f + .2byte \index + .4byte \movements + .else + @ Really only useful if the object has followed from one map to another (e.g. Wally during the catching event). + .byte 0x50 + .2byte \index + .4byte \movements + map \map + .endif + .endm + + @ Blocks script execution until the movements being applied to the specified (index) Object finish. If the specified Object is 0x0000, then the command will block script execution until all Objects affected by applymovement finish their movements. If the specified Object is not currently being manipulated with applymovement, then this command does nothing. + @ If no map is specified, then the current map is used. + .macro waitmovement index:req, map + .ifb \map + .byte 0x51 + .2byte \index + .else + .byte 0x52 + .2byte \index + map \map + .endif + .endm + + @ Attempts to hide the specified (index) Object on the specified (map_group, map_num) map, by setting its visibility flag if it has a valid one. If the Object does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used. + .macro removeobject index:req, map + .ifb \map + .byte 0x53 + .2byte \index + .else + .byte 0x54 + .2byte \index + map \map + .endif + .endm + + @ Unsets the specified (index) Object's visibility flag on the specified (map_group, map_num) map if it has a valid one. If the Object does not have a valid visibility flag, this command does nothing. + @ If no map is specified, then the current map is used. + .macro addobject index:req, map + .ifb \map + .byte 0x55 + .2byte \index + .else + .byte 0x56 + .2byte \index + map \map + .endif + .endm + + @ Sets the specified (index) Object's position on the current map. + .macro setobjectxy index:req, x:req, y:req + .byte 0x57 + .2byte \index + .2byte \x + .2byte \y + .endm + + .macro showobjectat index:req, map:req + .byte 0x58 + .2byte \index + map \map + .endm + + .macro hideobjectat index:req, map:req + .byte 0x59 + .2byte \index + map \map + .endm + + @ If the script was called by an Object, then that Object will turn to face toward the metatile that the player is standing on. + .macro faceplayer + .byte 0x5a + .endm + + .macro turnobject index:req, direction:req + .byte 0x5b + .2byte \index + .byte \direction + .endm + + @ If the Trainer flag for Trainer index is not set, this command does absolutely nothing. + .macro trainerbattle type:req, trainer:req, local_id:req, pointer1:req, pointer2, pointer3, pointer4 + .byte 0x5c + .byte \type + .2byte \trainer + .2byte \local_id + .if \type == TRAINER_BATTLE_SINGLE + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == TRAINER_BATTLE_CONTINUE_SCRIPT + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ event script + .elseif \type == TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT + .4byte \pointer1 @ text + .elseif \type == TRAINER_BATTLE_DOUBLE + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == TRAINER_BATTLE_REMATCH + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == TRAINER_BATTLE_REMATCH_DOUBLE + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .elseif \type == TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .4byte \pointer3 @ text + .4byte \pointer4 @ event script + .elseif \type == TRAINER_BATTLE_PYRAMID + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == TRAINER_BATTLE_SET_TRAINER_A + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == TRAINER_BATTLE_SET_TRAINER_B + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .elseif \type == TRAINER_BATTLE_12 + .4byte \pointer1 @ text + .4byte \pointer2 @ text + .endif + .endm + + NO_MUSIC = FALSE + + @ Starts a single trainer battle, takes a trainer, intro text, loss text, and an optional event script + @ when used with an event script, you can also pass in an optional flag to disable music + .macro trainerbattle_single trainer:req, intro_text:req, lose_text:req, event_script=FALSE, music=TRUE + .if \event_script == FALSE + trainerbattle TRAINER_BATTLE_SINGLE, \trainer, 0, \intro_text, \lose_text + .elseif \music == TRUE + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT, \trainer, 0, \intro_text, \lose_text, \event_script + .else + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC, \trainer, 0, \intro_text, \lose_text, \event_script + .endif + .endm + + @ Starts a double trainer battle, takes a trainer, intro text, loss text, text for when you have too few pokemon + @ and an optional event script, when used with an event script you can pass in an optional flag to disable music + .macro trainerbattle_double trainer:req, intro_text:req, lose_text:req, not_enough_pkmn_text:req, event_script=FALSE, music=TRUE + .if \event_script == FALSE + trainerbattle TRAINER_BATTLE_DOUBLE, \trainer, 0, \intro_text, \lose_text, \not_enough_pkmn_text + .elseif \music == TRUE + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE, \trainer, 0, \intro_text, \lose_text, \not_enough_pkmn_text, \event_script + .else + trainerbattle TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC, \trainer, 0, \intro_text, \lose_text, \not_enough_pkmn_text, \event_script + .endif + .endm + + @ Starts a rematch battle, takes a trainer, intro text and loss text + .macro trainerbattle_rematch trainer:req, intro_text:req, lose_text:req + trainerbattle TRAINER_BATTLE_REMATCH, \trainer, 0, \intro_text, \lose_text + .endm + + @ Starts a rematch double battle, takes a trainer, intro text, loss text, and text for when you have too few pokemon + .macro trainerbattle_rematch_double trainer:req, intro_text:req, lose_text:req, not_enough_pkmn_text:req + trainerbattle TRAINER_BATTLE_REMATCH_DOUBLE, \trainer, 0, \intro_text, \lose_text, \not_enough_pkmn_text + .endm + + @ Starts a trainer battle, skipping intro text, takes a trainer and loss text + .macro trainerbattle_no_intro trainer:req, lose_text:req + trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, \trainer, 0, \lose_text + .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 trainerbattlebegin + .byte 0x5d + .endm + + @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotopostbattlescript + .byte 0x5e + .endm + + @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c) + .macro gotobeatenscript + .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:req + .byte 0x60 + .2byte \trainer + .endm + + @ Sets Flag (trainer + 0x500). + .macro settrainerflag trainer:req + .byte 0x61 + .2byte \trainer + .endm + + @ Clears Flag (trainer + 0x500). + .macro cleartrainerflag trainer:req + .byte 0x62 + .2byte \trainer + .endm + + .macro setobjectxyperm index:req, x:req, y:req + .byte 0x63 + .2byte \index + .2byte \x + .2byte \y + .endm + + .macro moveobjectoffscreen index:req + .byte 0x64 + .2byte \index + .endm + + .macro setobjectmovementtype word:req, byte:req + .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:req + .byte 0x67 + .4byte \text + .endm + + @ Closes the current message box. + .macro closemessage + .byte 0x68 + .endm + + @ Ceases movement for all Objects on-screen. + .macro lockall + .byte 0x69 + .endm + + @ If the script was called by an Object, then that Object's movement will cease. + .macro lock + .byte 0x6a + .endm + + @ Resumes normal movement for all Objects on-screen, and closes any standard message boxes that are still open. + .macro releaseall + .byte 0x6b + .endm + + @ If the script was called by an Object, then that Object'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 waitbuttonpress + .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:req, y:req + .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 (gMultichoiceLists) 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:req, y:req, list:req, b:req + .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 (gMultichoiceLists) 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:req, y:req, list:req, default:req, b:req + .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 (gMultichoiceLists) 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:req, y:req, list:req, per_row:req, B:req + .byte 0x71 + .byte \x + .byte \y + .byte \list + .byte \per_row + .byte \B + .endm + + @ Nopped in Emerald. + .macro drawbox + .byte 0x72 + .endm + + @ Nopped in Emerald, but still consumes parameters. + .macro erasebox byte1:req, byte2:req, byte3:req, byte4:req + .byte 0x73 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + @ Nopped in Emerald, but still consumes parameters. + .macro drawboxtext byte1:req, byte2:req, byte3:req, byte4:req + .byte 0x74 + .byte \byte1 + .byte \byte2 + .byte \byte3 + .byte \byte4 + .endm + + @ Displays a box containing the front sprite for the specified (species) Pokemon species. + .macro drawmonpic species:req, x:req, y:req + .byte 0x75 + .2byte \species + .byte \x + .byte \y + .endm + + @ Hides all boxes displayed with drawmonpic. + .macro erasemonpic + .byte 0x76 + .endm + + @ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.) + .macro drawcontestwinner a:req + .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 and needs to provide six extra starting characters that are skipped (in RS, these characters determined the box's size and position, but in Emerald these are calculated automatically). + .macro braillemessage text:req + .byte 0x78 + .4byte \text + .endm + + @ Gives the player one of the specified (species) Pokemon at level level holding item. The unknown arguments should all be zeroes. + .macro givemon species:req, level:req, item:req, unknown1:req, unknown2:req, unknown3:req + .byte 0x79 + .2byte \species + .byte \level + .2byte \item + .4byte \unknown1 + .4byte \unknown2 + .byte \unknown3 + .endm + + .macro giveegg species:req + .byte 0x7a + .2byte \species + .endm + + .macro setmonmove index:req, slot:req, move:req + .byte 0x7b + .byte \index + .byte \slot + .2byte \move + .endm + + @ Checks if at least one Pokemon 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 first Pokemon that knows the move. If not, LASTRESULT is set to 0x0006. Variable 0x8004 is also set to this Pokemon's species. + .macro checkpartymove index:req + .byte 0x7c + .2byte \index + .endm + + @ Writes the name of the Pokemon at index species to the specified buffer. + .macro bufferspeciesname out:req, species:req + .byte 0x7d + .byte \out + .2byte \species + .endm + + @ Writes the name of the species of the first Pokemon in the player's party to the specified buffer. + .macro bufferleadmonspeciesname out:req + .byte 0x7e + .byte \out + .endm + + @ Writes the nickname of the Pokemon 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 bufferpartymonnick out:req, slot:req + .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 bufferitemname out:req, item:req + .byte 0x80 + .byte \out + .2byte \item + .endm + + @ Writes the name of the decoration at index decoration to the specified buffer. In FireRed, this command is a nop. + .macro bufferdecorationname out:req, decoration:req + .byte 0x81 + .byte \out + .2byte \decoration + .endm + + @ Writes the name of the move at index move to the specified buffer. + .macro buffermovename out:req, move:req + .byte 0x82 + .byte \out + .2byte \move + .endm + + @ Converts the value of input to a decimal string, and writes that string to the specified buffer. + .macro buffernumberstring out:req, input:req + .byte 0x83 + .byte \out + .2byte \input + .endm + + @ Writes the standard string identified by index to the specified buffer. This command has no protections in place at all, so specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption. + .macro bufferstdstring out:req, index:req + .byte 0x84 + .byte \out + .2byte \index + .endm + + @ Copies the string at offset to the specified buffer. + .macro bufferstring out:req, offset:req + .byte 0x85 + .byte \out + .4byte \offset + .endm + + @ Opens the Pokemart system, offering the specified products for sale. + .macro pokemart products:req + .byte 0x86 + .4byte \products + .endm + + @ Opens the Pokemart system and treats the list of items as decorations. + .macro pokemartdecoration products:req + .byte 0x87 + .4byte \products + .endm + + @ Apparent clone of pokemartdecoration. + .macro pokemartdecoration2 products:req + .byte 0x88 + .4byte \products + .endm + + @ Starts up the slot machine minigame. + .macro playslotmachine word:req + .byte 0x89 + .2byte \word + .endm + + @ Sets a berry tree's specific berry and growth stage. In FireRed, this command is a nop. + .macro setberrytree tree_id:req, berry:req, growth_stage:req + .byte 0x8a + .byte \tree_id + .byte \berry + .byte \growth_stage + .endm + + @ This allows you to choose a Pokemon to use in a contest. In FireRed, this command sets the byte at 0x03000EA8 to 0x01. + .macro choosecontestmon + .byte 0x8b + .endm + + @ Starts a contest. In FireRed, this command is a nop. + .macro startcontest + .byte 0x8c + .endm + + @ Shows the results of a contest. In FireRed, this command is a nop. + .macro showcontestresults + .byte 0x8d + .endm + + @ Starts a contest over a link connection. 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:req + .byte 0x8f + .2byte \limit + .endm + + @ If check is 0x00, this command adds value to the player's money. + .macro givemoney value:req, check:req + .byte 0x90 + .4byte \value + .byte \check + .endm + + @ If check is 0x00, this command subtracts value from the player's money. + .macro takemoney value:req, check:req + .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:req, check:req + .byte 0x92 + .4byte \value + .byte \check + .endm + + @ Spawns a secondary box showing how much money the player has. + .macro showmoneybox x:req, y:req, check:req + .byte 0x93 + .byte \x + .byte \y + .byte \check + .endm + + @ Hides the secondary box spawned by showmoney. + .macro hidemoneybox + .byte 0x94 + .endm + + @ Updates the secondary box spawned by showmoney. Consumes but does not use arguments. + .macro updatemoneybox x:req, y:req + .byte 0x95 + .byte \x + .byte \y + .endm + + @ Gets the price reduction for the index given. In FireRed, this command is a nop. + .macro getpricereduction index:req + .byte 0x96 + .2byte \index + .endm + + @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. + .macro fadescreen effect:req + .byte 0x97 + .byte \effect + .endm + + @ Fades the screen to and from black and white. Mode 0x00 fades from black, mode 0x01 fades out to black, mode 0x2 fades in from white, and mode 0x3 fades out to white. Other modes may exist. + .macro fadescreenspeed effect:req, speed:req + .byte 0x98 + .byte \effect + .byte \speed + .endm + + .macro setflashradius word:req + .byte 0x99 + .2byte \word + .endm + + .macro animateflash byte:req + .byte 0x9a + .byte \byte + .endm + + .macro messageautoscroll pointer:req + .byte 0x9b + .4byte \pointer + .endm + + @ Executes the specified field move animation. + .macro dofieldeffect animation:req + .byte 0x9c + .2byte \animation + .endm + + @ Sets up the field effect argument argument with the value value. + .macro setfieldeffectargument argument:req, param:req + .byte 0x9d + .byte \argument + .2byte \param + .endm + + @ Blocks script execution until all playing field move animations complete. + .macro waitfieldeffect animation:req + .byte 0x9e + .2byte \animation + .endm + + @ Sets which healing place the player will return to if all of the Pokemon in their party faint. + .macro setrespawn heallocation:req + .byte 0x9f + .2byte \heallocation + .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) Pokemon's cry. You can use waitcry to block script execution until the sound finishes. + .macro playmoncry species:req, effect:req + .byte 0xa1 + .2byte \species + .2byte \effect + .endm + + @ Changes the metatile at (x, y) on the current map. + .macro setmetatile x:req, y:req, metatile_number:req, has_collision:req + .byte 0xa2 + .2byte \x + .2byte \y + .2byte \metatile_number + .2byte \has_collision + .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:req + .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 setstepcallback subroutine:req + .byte 0xa6 + .byte \subroutine + .endm + + .macro setmaplayoutindex index:req + .byte 0xa7 + .2byte \index + .endm + + .macro setobjectpriority index:req, map:req, priority:req + .byte 0xa8 + .2byte \index + map \map + .byte \priority + .endm + + .macro resetobjectpriority index:req, map:req + .byte 0xa9 + .2byte \index + map \map + .endm + + .macro createvobject sprite:req, byte2:req, x:req, y:req, elevation, direction + .byte 0xaa + .byte \sprite + .byte \byte2 + .2byte \x + .2byte \y + .byte \elevation + .byte \direction + .endm + + .macro turnvobject index:req, direction:req + .byte 0xab + .byte \index + .byte \direction + .endm + + @ Opens the door metatile at (X, Y) with an animation. + .macro opendoor x:req, y:req + .byte 0xac + .2byte \x + .2byte \y + .endm + + @ Closes the door metatile at (X, Y) with an animation. + .macro closedoor x:req, y:req + .byte 0xad + .2byte \x + .2byte \y + .endm + + @ Waits for the door animation started with opendoor or closedoor to finish. + .macro waitdooranim + .byte 0xae + .endm + + @ Sets the door tile at (x, y) to be open without an animation. + .macro setdooropen x:req, y:req + .byte 0xaf + .2byte \x + .2byte \y + .endm + + @ Sets the door tile at (x, y) to be closed without an animation. + .macro setdoorclosed x:req, y:req + .byte 0xb0 + .2byte \x + .2byte \y + .endm + + @ In Emerald, this command consumes its parameters and does nothing. In FireRed, this command is a nop. + .macro addelevmenuitem a:req, b:req, c:req, d:req + .byte 0xb1 + .byte \a + .2byte \b + .2byte \c + .2byte \d + .endm + + @ In FireRed and Emerald, this command is a nop. + .macro showelevmenu + .byte 0xb2 + .endm + + .macro checkcoins out:req + .byte 0xb3 + .2byte \out + .endm + + .macro givecoins count:req + .byte 0xb4 + .2byte \count + .endm + + .macro takecoins count:req + .byte 0xb5 + .2byte \count + .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:req, level:req, item:req + .byte 0xb6 + .2byte \species + .byte \level + .2byte \item + .endm + + @ Starts a wild battle against the Pokemon generated by setwildbattle. Blocks script execution until the battle finishes. + .macro dowildbattle + .byte 0xb7 + .endm + + .macro setvaddress pointer:req + .byte 0xb8 + .4byte \pointer + .endm + + .macro vgoto pointer:req + .byte 0xb9 + .4byte \pointer + .endm + + .macro vcall pointer:req + .byte 0xba + .4byte \pointer + .endm + + .macro vgoto_if byte:req, pointer:req + .byte 0xbb + .byte \byte + .4byte \pointer + .endm + + .macro vcall_if byte:req, pointer:req + .byte 0xbc + .byte \byte + .4byte \pointer + .endm + + .macro vmessage pointer:req + .byte 0xbd + .4byte \pointer + .endm + + .macro vloadptr pointer:req + .byte 0xbe + .4byte \pointer + .endm + + .macro vbufferstring byte:req, pointer:req + .byte 0xbf + .byte \byte + .4byte \pointer + .endm + + @ Spawns a secondary box showing how many Coins the player has. + .macro showcoinsbox x:req, y:req + .byte 0xc0 + .byte \x + .byte \y + .endm + + @ Hides the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro hidecoinsbox x:req, y:req + .byte 0xc1 + .byte \x + .byte \y + .endm + + @ Updates the secondary box spawned by showcoins. It consumes its arguments but doesn't use them. + .macro updatecoinsbox x:req, y:req + .byte 0xc2 + .byte \x + .byte \y + .endm + + @ Increases the value of the specified game stat by 1. The stat's value will not be allowed to exceed 0x00FFFFFF. + .macro incrementgamestat stat:req + .byte 0xc3 + .byte \stat + .endm + + @ Sets the destination that using an Escape Rope or Dig will take the player to. + .macro setescapewarp map:req, warp:req, x:req, y:req + .byte 0xc4 + map \map + .byte \warp + .2byte \x + .2byte \y + .endm + + @ Blocks script execution until cry finishes. + .macro waitmoncry + .byte 0xc5 + .endm + + @ Writes the name of the specified (box) PC box to the specified buffer. + .macro bufferboxname out:req, box:req + .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:req + .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:req + .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:req, value:req + .byte 0xcc + .byte \a + .4byte \value + .endm + + @ Makes the Pokemon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle. + .macro setmonobedient slot:req + .byte 0xcd + .2byte \slot + .endm + + @ Checks if the Pokemon in the specified slot of the player's party is obedient. If the Pokemon is disobedient, 0x0001 is written to script variable 0x800D (LASTRESULT). If the Pokemon is obedient (or if the specified slot is empty or invalid), 0x0000 is written. + .macro checkmonobedience slot:req + .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 0x020375C0. + .macro gotoram + .byte 0xcf + .endm + + @ Sets worldmapflag to 1. This allows the player to Fly to the corresponding map, if that map has a flightspot. + .macro setworldmapflag worldmapflag:req + .byte 0xd0 + .2byte \worldmapflag + .endm + + @ Clone of warpteleport? It is apparently only used in FR/LG, and only with specials.[source] + .macro warpteleport2 map:req, warp:req, x:req, y:req + .byte 0xd1 + map \map + .byte \warp + .2byte \x + .2byte \y + .endm + + @ Changes the location where the player caught the Pokemon in the specified slot of their party. + .macro setmonmetlocation slot:req, location:req + .byte 0xd2 + .2byte \slot + .byte \location + .endm + + .macro mossdeepgym1 unknown:req + .byte 0xd3 + .2byte \unknown + .endm + + .macro mossdeepgym2 + .byte 0xd4 + .endm + + @ In FireRed, this command is a nop. + .macro mossdeepgym3 var:req + .byte 0xd5 + .2byte \var + .endm + + .macro mossdeepgym4 + .byte 0xd6 + .endm + + .macro warp7 map:req, byte:req, word1:req, word2:req + .byte 0xd7 + map \map + .byte \byte + .2byte \word1 + .2byte \word2 + .endm + + .macro cmdD8 + .byte 0xd8 + .endm + + .macro cmdD9 + .byte 0xd9 + .endm + + .macro hidebox2 + .byte 0xda + .endm + + .macro message3 pointer:req + .byte 0xdb + .4byte \pointer + .endm + + .macro fadescreenswapbuffers byte:req + .byte 0xdc + .byte \byte + .endm + + .macro buffertrainerclassname out:req, class:req + .byte 0xdd + .byte \out + .2byte \class + .endm + + .macro buffertrainername out:req, trainer:req + .byte 0xde + .byte \out + .2byte \trainer + .endm + + .macro pokenavcall pointer:req + .byte 0xdf + .4byte \pointer + .endm + + .macro warp8 map:req, byte:req, word1:req, word2:req + .byte 0xe0 + map \map + .byte \byte + .2byte \word1 + .2byte \word2 + .endm + + .macro buffercontesttypestring out:req, word:req + .byte 0xe1 + .byte \out + .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 bufferitemnameplural out:req, item:req, quantity:req + .byte 0xe2 + .byte \out + .2byte \item + .2byte \quantity + .endm + + +@ Supplementary + + .macro goto_if_unset flag:req, dest:req + checkflag \flag + goto_if 0, \dest + .endm + + .macro goto_if_set flag:req, dest:req + checkflag \flag + goto_if 1, \dest + .endm + + .macro goto_if_lt dest:req @ LESS THAN + goto_if 0, \dest + .endm + + .macro goto_if_eq dest:req @ EQUAL + goto_if 1, \dest + .endm + + .macro goto_if_gt dest:req @ GREATER THAN + goto_if 2, \dest + .endm + + .macro goto_if_le dest:req @ LESS THAN OR EQUAL + goto_if 3, \dest + .endm + + .macro goto_if_ge dest:req @ GREATER THAN OR EQUAL + goto_if 4, \dest + .endm + + .macro goto_if_ne dest:req @ NOT EQUAL + goto_if 5, \dest + .endm + + .macro call_if_unset flag:req, dest:req + checkflag \flag + call_if 0, \dest + .endm + + .macro call_if_set flag:req, dest:req + checkflag \flag + call_if 1, \dest + .endm + + .macro call_if_lt dest:req @ LESS THAN + call_if 0, \dest + .endm + + .macro call_if_eq dest:req @ EQUAL + call_if 1, \dest + .endm + + .macro call_if_gt dest:req @ GREATER THAN + call_if 2, \dest + .endm + + .macro call_if_le dest:req @ LESS THAN OR EQUAL + call_if 3, \dest + .endm + + .macro call_if_ge dest:req @ GREATER THAN OR EQUAL + call_if 4, \dest + .endm + + .macro call_if_ne dest:req @ NOT EQUAL + call_if 5, \dest + .endm + + .macro switch var:req + copyvar VAR_0x8000, \var + .endm + + .macro case condition:req, dest:req + compare VAR_0x8000, \condition + goto_if_eq \dest + .endm + + @ Message box types + MSGBOX_NPC = 2 + MSGBOX_SIGN = 3 + MSGBOX_DEFAULT = 4 + MSGBOX_YESNO = 5 + MSGBOX_AUTOCLOSE = 6 + + YES = 1 + NO = 0 + + .macro msgbox text:req, type=MSGBOX_DEFAULT + loadword 0, \text + callstd \type + .endm + + .macro giveitem_std item:req, amount=1, function=0 + setorcopyvar VAR_0x8000, \item + setorcopyvar VAR_0x8001, \amount + callstd \function + .endm + + .macro givedecoration_std decoration:req + setorcopyvar VAR_0x8000, \decoration + callstd STD_OBTAIN_DECORATION + .endm + + .macro register_matchcall trainer:req + setvar VAR_0x8004, \trainer + special SetMatchCallRegisteredFlag + setorcopyvar VAR_0x8000, \trainer + callstd STD_REGISTER_MATCH_CALL + .endm diff --git a/asm/macros/field_effect_script.inc b/asm/macros/field_effect_script.inc new file mode 100644 index 0000000..597b89a --- /dev/null +++ b/asm/macros/field_effect_script.inc @@ -0,0 +1,42 @@ + .macro field_eff_loadtiles address + .byte 0 + .4byte \address + .endm + + .macro field_eff_loadfadedpal address + .byte 1 + .4byte \address + .endm + + .macro field_eff_loadpal address + .byte 2 + .4byte \address + .endm + + .macro field_eff_callnative address + .byte 3 + .4byte \address + .endm + + .macro field_eff_end + .byte 4 + .endm + + .macro field_eff_loadgfx_callnative tiles_address, palette_address, function_address + .byte 5 + .4byte \tiles_address + .4byte \palette_address + .4byte \function_address + .endm + + .macro field_eff_loadtiles_callnative tiles_address, function_address + .byte 6 + .4byte \tiles_address + .4byte \function_address + .endm + + .macro field_eff_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 0000000..b109595 --- /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 0000000..6c5abc0 --- /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 0000000..c98364c --- /dev/null +++ b/asm/macros/map.inc @@ -0,0 +1,107 @@ + .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 index:req, gfx:req, replacement:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req + .byte \index, \gfx, \replacement, 0 + .2byte \x + .2byte \y + .byte \elevation, \movement_type, ((\y_radius << 4) | \x_radius), 0 + .2byte \trainer_type, \sight_radius_tree_etc + .4byte \script + .2byte \event_flag + .2byte 0 + 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, elevation, trigger, index, script + .2byte \x, \y + .byte \elevation, 0 + .2byte \trigger, \index, 0 + .4byte \script + inc _num_traps + .endm + + .macro coord_weather_event x, y, elevation, weather + .2byte \x, \y + .byte \elevation, 0 + .2byte \weather + .2byte 0, 0 + .4byte 0 + inc _num_traps + .endm + + .macro bg_event x, y, elevation, kind, arg6, arg7, arg8 + .2byte \x, \y + .byte \elevation, \kind + .2byte 0 + .if \kind < 5 + .4byte \arg6 + .else + .2byte \arg6 + .byte \arg7, \arg8 + .endif + inc _num_signs + .endm + + .macro bg_hidden_item_event x, y, height, item, flag + bg_event \x, \y, \height, 7, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START), 0 + .endm + + .macro bg_secret_base_event x, y, height, secret_base_id + bg_event \x, \y, \height, 8, \secret_base_id, 0, 0 + .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 + .4byte connection_\direction + .4byte \offset + map \map + .space 2 + .endm + + .macro map_header_flags allow_bike:req, allow_escape_rope:req, allow_run:req, show_map_name:req + .byte ((\show_map_name & 1) << 3) | ((\allow_run & 1) << 2) | ((\allow_escape_rope & 1) << 1) | \allow_bike + .endm diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc new file mode 100644 index 0000000..99b5c8f --- /dev/null +++ b/asm/macros/movement.inc @@ -0,0 +1,131 @@ + .macro create_movement_action name + enum _\name + .macro \name + .byte _\name + .endm + .endm + + enum_start + create_movement_action face_down + create_movement_action face_up + create_movement_action face_left + create_movement_action face_right + create_movement_action walk_slow_down + create_movement_action walk_slow_up + create_movement_action walk_slow_left + create_movement_action walk_slow_right + create_movement_action walk_down + create_movement_action walk_up + create_movement_action walk_left + create_movement_action walk_right + create_movement_action jump_2_down + create_movement_action jump_2_up + create_movement_action jump_2_left + create_movement_action jump_2_right + create_movement_action delay_1 + create_movement_action delay_2 + create_movement_action delay_4 + create_movement_action delay_8 + create_movement_action delay_16 + create_movement_action walk_fast_down + create_movement_action walk_fast_up + create_movement_action walk_fast_left + create_movement_action walk_fast_right + create_movement_action walk_in_place_slow_down + create_movement_action walk_in_place_slow_up + create_movement_action walk_in_place_slow_left + create_movement_action walk_in_place_slow_right + create_movement_action walk_in_place_down + create_movement_action walk_in_place_up + create_movement_action walk_in_place_left + create_movement_action walk_in_place_right + create_movement_action walk_in_place_fast_down + create_movement_action walk_in_place_fast_up + create_movement_action walk_in_place_fast_left + create_movement_action walk_in_place_fast_right + create_movement_action walk_in_place_fastest_down + create_movement_action walk_in_place_fastest_up + create_movement_action walk_in_place_fastest_left + create_movement_action walk_in_place_fastest_right + create_movement_action ride_water_current_down + create_movement_action ride_water_current_up + create_movement_action ride_water_current_left + create_movement_action ride_water_current_right + create_movement_action walk_fastest_down + create_movement_action walk_fastest_up + create_movement_action walk_fastest_left + create_movement_action walk_fastest_right + create_movement_action slide_down + create_movement_action slide_up + create_movement_action slide_left + create_movement_action slide_right + create_movement_action player_run_down + create_movement_action player_run_up + create_movement_action player_run_left + create_movement_action player_run_right + create_movement_action start_anim_in_direction + create_movement_action jump_special_down + create_movement_action jump_special_up + create_movement_action jump_special_left + create_movement_action jump_special_right + create_movement_action face_player + create_movement_action face_away_player + create_movement_action lock_facing_direction + create_movement_action unlock_facing_direction + create_movement_action jump_down + create_movement_action jump_up + create_movement_action jump_left + create_movement_action jump_right + create_movement_action jump_in_place_down + create_movement_action jump_in_place_up + create_movement_action jump_in_place_left + create_movement_action jump_in_place_right + create_movement_action jump_in_place_down_up + create_movement_action jump_in_place_up_down + create_movement_action jump_in_place_left_right + create_movement_action jump_in_place_right_left + create_movement_action face_original_direction + create_movement_action nurse_joy_bow + create_movement_action enable_jump_landing_ground_effect + create_movement_action disable_jump_landing_ground_effect + create_movement_action disable_anim + create_movement_action restore_anim + create_movement_action set_invisible + create_movement_action set_visible + create_movement_action emote_exclamation_mark + create_movement_action emote_question_mark + create_movement_action emote_heart + create_movement_action reveal_trainer + create_movement_action rock_smash_break + create_movement_action cut_tree + create_movement_action set_fixed_priority + create_movement_action clear_fixed_priority + create_movement_action init_affine_anim + create_movement_action clear_affine_anim + create_movement_action unknown_movement_1 + create_movement_action unknown_movement_2 + create_movement_action walk_down_start_affine + create_movement_action walk_down_affine + + enum_start 0x8C + create_movement_action walk_diag_northwest + create_movement_action walk_diag_northeast + create_movement_action walk_diag_southwest + create_movement_action walk_diag_southeast + create_movement_action walk_slow_diag_northwest + create_movement_action walk_slow_diag_northeast + create_movement_action walk_slow_diag_southwest + create_movement_action walk_slow_diag_southeast + create_movement_action store_lock_anim + create_movement_action free_unlock_anim + create_movement_action walk_left_affine + create_movement_action walk_right_affine + create_movement_action levitate + create_movement_action stop_levitate + create_movement_action destroy_extra_task + create_movement_action figure_8 + create_movement_action fly_up + create_movement_action fly_down + + enum_start 0xfe + create_movement_action step_end diff --git a/asm/macros/music_voice.inc b/asm/macros/music_voice.inc new file mode 100644 index 0000000..b7a9e7f --- /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 0000000..ce8ef98 --- /dev/null +++ b/asm/macros/pokemon_data.inc @@ -0,0 +1,56 @@ + .macro pokedex_entry height, width, text_pointer, pokemon_scale, pokemon_offset, trainer_scale, trainer_offset + .2byte \height @ in decimeters + .2byte \width @ in hectograms + .4byte \text_pointer + .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 + .endm diff --git a/asm/macros/window.inc b/asm/macros/window.inc new file mode 100644 index 0000000..a91782b --- /dev/null +++ b/asm/macros/window.inc @@ -0,0 +1,35 @@ + .macro window_template bg_id, x, y, width, height, palette, vram_tile_offset + .byte \bg_id + .byte \x + .byte \y + .byte \width + .byte \height + .byte \palette + .2byte \vram_tile_offset + .endm + + .macro null_window_template + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 + .endm + + .macro glyph_width_func font_id, func + .4byte \font_id + .4byte \func + .endm + + .macro keypad_icon tile_offset, width, height + .2byte \tile_offset + .byte \width + .byte \height + .endm + + .macro font_info func, max_glyph_width, glyph_height, glyph_spacing, line_spacing, text_color, shadow_color, bg_color + .4byte \func + .byte \max_glyph_width + .byte \glyph_height + .byte \glyph_spacing + .byte \line_spacing + .byte \text_color << 4 @ low nybble seems unused + .byte (\shadow_color << 4) | \bg_color + .2byte 0 @ padding + .endm diff --git a/asm/rom.s b/asm/rom.s new file mode 100644 index 0000000..e8b6c9f --- /dev/null +++ b/asm/rom.s @@ -0,0 +1,973185 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + arm_func_start _start +_start: @ 0x08000000 + b _init +_08000004: + .space 0xbc + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .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 0x00000003 + .4byte 0x00000001 + .4byte 0x656B6F70 + .4byte 0x206E6F6D + .4byte 0x72656D65 + .4byte 0x20646C61 + .4byte 0x73726576 + .4byte 0x006E6F69 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x082DDA1C + .4byte 0x082D6148 + .4byte 0x082D6F08 + .4byte 0x082D7CC8 + .4byte 0x08556804 + .4byte 0x08556EE4 + .4byte 0x0855709C + .4byte 0x082EA31C + .4byte 0x082EACC4 + .4byte 0x08580CD0 + .4byte 0x00001270 + .4byte 0x0000139C + .4byte 0x00000018 + .4byte 0x00000988 + .4byte 0x00003B24 + .4byte 0x00000046 + .4byte 0x000008E4 + .4byte 0x000008AC + .4byte 0x00000182 + .4byte 0x050A0507 + .4byte 0x07060807 + .4byte 0x0A120A04 + .4byte 0x0801050A + .4byte 0x00000007 + .4byte 0x00000F2C + .4byte 0x00003D88 + .4byte 0x00000234 + .4byte 0x00000238 + .4byte 0x00000009 + .4byte 0x0000000A + .4byte 0x00000000 + .4byte 0x00000008 + .4byte 0x00000CA8 + .4byte 0x00000CA8 + .4byte 0x000031C7 + .4byte 0x000031B3 + .4byte 0x00000000 + .4byte 0x082F0D54 + .4byte 0x082EBDC4 + .4byte 0x082EC034 + .4byte 0x0855CEE8 + .4byte 0x082ED220 + .4byte 0x082FCE0C + .4byte 0x082FCE6C + .4byte 0x000000A8 + .4byte 0x00000864 + .4byte 0x0000089B + .4byte 0x40101E1E + .4byte 0x0000322E + .4byte 0x00000498 + .4byte 0x000031A8 + .4byte 0x000031F8 + .4byte 0x00000034 + .4byte 0x00000000 + .4byte 0xFFFFFFFF + arm_func_end _start + + arm_func_start _init +_init: + mov r0, #0x12 + msr cpsr_fc, r0 + ldr sp, _0800023C + mov r0, #0x1f + msr cpsr_fc, r0 + ldr sp, _08000238 + ldr r1, _08000240 + add r0, pc, #0x20 + str r0, [r1] + ldr r1, _08000244 + mov lr, pc + bx r1 + b _init + .align 2, 0 +_08000238: .4byte gUnknown_3007E40 +_0800023C: .4byte gUnknown_3007FA0 +_08000240: .4byte gUnknown_3007FFC +_08000244: .4byte AgbMain + arm_func_end _init + + arm_func_start _intr +_intr: @ 0x08000248 + mov r3, #0x4000000 + add r3, r3, #0x200 + ldr r2, [r3] + ldrh r1, [r3, #8] + mrs r0, spsr + push {r0, r1, r2, r3, lr} + mov r0, #0 + strh r0, [r3, #8] + and r1, r2, r2, lsr #16 + mov ip, #0 + ands r0, r1, #4 + bne _08000320 + add ip, ip, #4 + mov r0, #1 + strh r0, [r3, #8] + ands r0, r1, #0x80 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x40 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #2 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #1 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #8 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x10 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x20 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x100 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x200 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x400 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x800 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x1000 + bne _08000320 + add ip, ip, #4 + ands r0, r1, #0x2000 + strbne r0, [r3, #-0x17c] +_0800031C: + bne _0800031C +_08000320: + strh r0, [r3, #2] + bic r2, r2, r0 + ldr r0, _0800039C + ldr r0, [r0] + ldrb r0, [r0, #0xa] + mov r1, #8 + lsl r0, r1, r0 + orr r0, r0, #0x2000 + orr r1, r0, #0xc6 + and r1, r1, r2 + strh r1, [r3] + mrs r3, cpsr + bic r3, r3, #0xdf + orr r3, r3, #0x1f + msr cpsr_fc, r3 + ldr r1, _080003A0 + add r1, r1, ip + ldr r0, [r1] + stmdb sp!, {lr} + add lr, pc, #0 + bx r0 + ldm sp!, {lr} + mrs r3, cpsr + bic r3, r3, #0xdf + orr r3, r3, #0x92 + msr cpsr_fc, r3 + pop {r0, r1, r2, r3, lr} + strh r2, [r3] + strh r1, [r3, #8] + msr spsr_fc, r0 + bx lr + .align 2, 0 +_0800039C: .4byte gUnknown_3007608 +_080003A0: .4byte gUnknown_30027B0 + arm_func_end _intr + + thumb_func_start AgbMain +AgbMain: @ 0x080003A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0xff + bl RegisterRamReset + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _08000468 + adds r0, r2, #0 + strh r0, [r1] + bl sub_08001074 + ldr r1, _0800046C + ldr r3, _08000470 + adds r0, r3, #0 + strh r0, [r1] + bl sub_080005BC + bl sub_08000684 + bl m4aSoundInit + bl sub_08000594 + bl sub_0800E194 + bl sub_0802EE80 + bl sub_08076570 + bl UpdateLinkAndCallCallbacks + bl sub_080A269C + bl sub_08000C48 + bl sub_08001308 + bl sub_080061A4 + ldr r0, _08000474 + movs r1, #0xe0 + lsls r1, r1, #9 + bl sub_08000BAC + ldr r0, _08000478 + movs r4, #0 + strb r4, [r0] + ldr r0, _0800047C + ldr r0, [r0] + cmp r0, #1 + beq _08000414 + movs r0, #0 + bl sub_08000540 +_08000414: + ldr r2, _08000480 + strb r4, [r2] + ldr r1, _08000484 + movs r3, #0xfc + lsls r3, r3, #4 + adds r0, r3, #0 + strh r0, [r1] + ldr r7, _08000488 + movs r0, #0 + mov r8, r0 + adds r6, r2, #0 +_0800042A: + bl sub_080005E4 + ldr r0, _08000478 + ldrb r0, [r0] + cmp r0, #0 + bne _08000454 + ldrh r1, [r7, #0x28] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08000454 + movs r0, #0xe + ands r0, r1 + cmp r0, #0xe + bne _08000454 + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + bl sub_080008F4 +_08000454: + bl sub_08086F98 + cmp r0, #1 + bne _0800048C + strb r0, [r6] + bl sub_080004C4 + movs r0, #0 + strb r0, [r6] + b _080004B2 + .align 2, 0 +_08000468: .4byte 0x00007FFF +_0800046C: .4byte 0x04000204 +_08000470: .4byte 0x00004014 +_08000474: .4byte gUnknown_2000000 +_08000478: .4byte gUnknown_30027A0 +_0800047C: .4byte gUnknown_3005AE8 +_08000480: .4byte gUnknown_3002354 +_08000484: .4byte gUnknown_3000000 +_08000488: .4byte gUnknown_3002360 +_0800048C: + ldr r5, _080004C0 + movs r0, #0 + strb r0, [r5] + bl sub_080004C4 + bl sub_08086F2C + adds r4, r0, #0 + cmp r4, #1 + bne _080004B2 + movs r0, #0 + strh r0, [r7, #0x2e] + bl sub_08006ED0 + strb r4, [r5] + bl sub_080004C4 + mov r2, r8 + strb r2, [r5] +_080004B2: + bl sub_08083BC4 + bl sub_080A26B0 + bl sub_080008AC + b _0800042A + .align 2, 0 +_080004C0: .4byte gUnknown_3002354 + thumb_func_end AgbMain + + thumb_func_start sub_080004C4 +sub_080004C4: @ 0x080004C4 + push {lr} + bl sub_0800AEE0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080004D4 + bl InitMainCallbacks +_080004D4: + pop {r0} + bx r0 + thumb_func_end sub_080004C4 + + thumb_func_start UpdateLinkAndCallCallbacks +UpdateLinkAndCallCallbacks: @ 0x080004D8 + push {lr} + ldr r2, _08000500 + movs r0, #0 + str r0, [r2, #0x20] + ldr r1, _08000504 + str r0, [r1] + str r0, [r2, #0x24] + str r0, [r2] + ldr r0, _08000508 + bl sub_08000540 + ldr r1, _0800050C + ldr r0, _08000510 + str r0, [r1] + ldr r1, _08000514 + ldr r0, _08000518 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08000500: .4byte gUnknown_3002360 +_08000504: .4byte gUnknown_203CC28 +_08000508: .4byte sub_0816CC90 +_0800050C: .4byte gUnknown_3005AF0 +_08000510: .4byte gUnknown_20246F8 +_08000514: .4byte gUnknown_3005AF4 +_08000518: .4byte gUnknown_20294AC + thumb_func_end UpdateLinkAndCallCallbacks + + thumb_func_start InitMainCallbacks +InitMainCallbacks: @ 0x0800051C + push {r4, lr} + ldr r4, _0800053C + ldr r0, [r4] + cmp r0, #0 + beq _0800052A + bl _call_via_r0 +_0800052A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _08000534 + bl _call_via_r0 +_08000534: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800053C: .4byte gUnknown_3002360 + thumb_func_end InitMainCallbacks + + thumb_func_start sub_08000540 +sub_08000540: @ 0x08000540 + ldr r1, _08000550 + str r0, [r1, #4] + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08000550: .4byte gUnknown_3002360 + thumb_func_end sub_08000540 + + thumb_func_start sub_08000554 +sub_08000554: @ 0x08000554 + ldr r1, _0800055C + movs r0, #0x80 + strh r0, [r1] + bx lr + .align 2, 0 +_0800055C: .4byte 0x04000106 + thumb_func_end sub_08000554 + + thumb_func_start sub_08000560 +sub_08000560: @ 0x08000560 + push {r4, lr} + ldr r0, _0800057C + ldrh r4, [r0] + adds r0, r4, #0 + bl sub_0806F07C + ldr r1, _08000580 + movs r0, #0 + strh r0, [r1] + ldr r0, _08000584 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800057C: .4byte 0x04000104 +_08000580: .4byte 0x04000106 +_08000584: .4byte gUnknown_2020000 + thumb_func_end sub_08000560 + + thumb_func_start sub_08000588 +sub_08000588: @ 0x08000588 + ldr r0, _08000590 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08000590: .4byte gUnknown_2020000 + thumb_func_end sub_08000588 + + thumb_func_start sub_08000594 +sub_08000594: @ 0x08000594 + push {lr} + movs r0, #4 + bl sub_080011D0 + movs r1, #0xff + ands r1, r0 + movs r2, #0x96 + lsls r2, r2, #8 + adds r0, r2, #0 + orrs r1, r0 + movs r0, #0x20 + orrs r1, r0 + movs r0, #4 + bl sub_08001144 + movs r0, #4 + bl sub_08001274 + pop {r0} + bx r0 + thumb_func_end sub_08000594 + + thumb_func_start sub_080005BC +sub_080005BC: @ 0x080005BC + ldr r1, _080005D8 + movs r0, #5 + strh r0, [r1] + ldr r1, _080005DC + movs r0, #0x28 + strh r0, [r1] + ldr r1, _080005E0 + 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 +_080005D8: .4byte gUnknown_300279C +_080005DC: .4byte gUnknown_3002350 +_080005E0: .4byte gUnknown_3002360 + thumb_func_end sub_080005BC + + thumb_func_start sub_080005E4 +sub_080005E4: @ 0x080005E4 + push {lr} + ldr r0, _08000620 + ldrh r1, [r0] + ldr r2, _08000624 + adds r0, r2, #0 + adds r3, r0, #0 + eors r3, r1 + ldr r1, _08000628 + 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 _08000630 + ldrh r0, [r2, #0x2c] + cmp r0, r3 + bne _08000630 + ldrh r0, [r2, #0x32] + subs r0, #1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08000636 + strh r3, [r2, #0x30] + ldr r0, _0800062C + b _08000632 + .align 2, 0 +_08000620: .4byte 0x04000130 +_08000624: .4byte 0x000003FF +_08000628: .4byte gUnknown_3002360 +_0800062C: .4byte gUnknown_300279C +_08000630: + ldr r0, _0800067C +_08000632: + ldrh r0, [r0] + strh r0, [r2, #0x32] +_08000636: + strh r3, [r2, #0x28] + strh r3, [r2, #0x2c] + ldr r0, _08000680 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #2 + bne _08000668 + ldrh r1, [r2, #0x2e] + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08000658 + movs r0, #1 + orrs r0, r1 + strh r0, [r2, #0x2e] +_08000658: + ldrh r1, [r2, #0x2c] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08000668 + movs r0, #1 + orrs r0, r1 + strh r0, [r2, #0x2c] +_08000668: + ldrh r1, [r2, #0x2e] + ldrh r0, [r2, #0x36] + ands r0, r1 + cmp r0, #0 + beq _08000676 + movs r0, #1 + strh r0, [r2, #0x34] +_08000676: + pop {r0} + bx r0 + .align 2, 0 +_0800067C: .4byte gUnknown_3002350 +_08000680: .4byte gUnknown_3005AF0 + thumb_func_end sub_080005E4 + + thumb_func_start sub_08000684 +sub_08000684: @ 0x08000684 + push {r4, r5, lr} + ldr r5, _080006D0 + ldr r4, _080006D4 + ldr r3, _080006D8 + ldr r2, _080006DC + movs r1, #0xd +_08000690: + ldm r3!, {r0} + stm r2!, {r0} + subs r1, #1 + cmp r1, #0 + bge _08000690 + ldr r0, _080006E0 + str r5, [r0] + str r4, [r0, #4] + ldr r1, _080006E4 + str r1, [r0, #8] + ldr r0, [r0, #8] + ldr r0, _080006E8 + str r4, [r0] + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_0800072C + ldr r1, _080006EC + movs r0, #1 + strh r0, [r1] + movs r0, #1 + bl sub_08001274 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080006D0: .4byte _intr +_080006D4: .4byte gUnknown_30027F0 +_080006D8: .4byte gUnknown_829BDBC +_080006DC: .4byte gUnknown_30027B0 +_080006E0: .4byte 0x040000D4 +_080006E4: .4byte 0x84000200 +_080006E8: .4byte gUnknown_3007FFC +_080006EC: .4byte 0x04000208 + thumb_func_end sub_08000684 + + thumb_func_start sub_080006F0 +sub_080006F0: @ 0x080006F0 + ldr r1, _080006F8 + str r0, [r1, #0xc] + bx lr + .align 2, 0 +_080006F8: .4byte gUnknown_3002360 + thumb_func_end sub_080006F0 + + thumb_func_start sub_080006FC +sub_080006FC: @ 0x080006FC + ldr r1, _08000704 + str r0, [r1, #0x10] + bx lr + .align 2, 0 +_08000704: .4byte gUnknown_3002360 + thumb_func_end sub_080006FC + + thumb_func_start sub_08000708 +sub_08000708: @ 0x08000708 + ldr r1, _08000710 + str r0, [r1, #0x14] + bx lr + .align 2, 0 +_08000710: .4byte gUnknown_3002360 + thumb_func_end sub_08000708 + + thumb_func_start sub_08000714 +sub_08000714: @ 0x08000714 + ldr r0, _08000720 + ldr r1, _08000724 + str r1, [r0, #4] + ldr r1, _08000728 + str r1, [r0, #8] + bx lr + .align 2, 0 +_08000720: .4byte gUnknown_30027B0 +_08000724: .4byte sub_08000878 +_08000728: .4byte sub_0800B4E4 + thumb_func_end sub_08000714 + + thumb_func_start sub_0800072C +sub_0800072C: @ 0x0800072C + ldr r1, _08000734 + str r0, [r1, #0x18] + bx lr + .align 2, 0 +_08000734: .4byte gUnknown_3002360 + thumb_func_end sub_0800072C + + thumb_func_start sub_08000738 +sub_08000738: @ 0x08000738 + push {r4, lr} + ldr r0, _08000748 + ldrb r0, [r0] + cmp r0, #0 + beq _0800074C + bl sub_080115A8 + b _08000758 + .align 2, 0 +_08000748: .4byte gUnknown_300319C +_0800074C: + ldr r0, _080007DC + ldrb r0, [r0] + cmp r0, #0 + bne _08000758 + bl sub_0800B474 +_08000758: + ldr r0, _080007E0 + ldr r1, [r0, #0x20] + adds r1, #1 + str r1, [r0, #0x20] + ldr r1, _080007E4 + ldr r1, [r1] + adds r4, r0, #0 + cmp r1, #0 + beq _08000778 + ldr r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + cmp r2, r0 + bhi _08000778 + adds r0, r2, #1 + str r0, [r1] +_08000778: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _08000782 + bl _call_via_r0 +_08000782: + ldr r0, [r4, #0x24] + adds r0, #1 + str r0, [r4, #0x24] + bl sub_08001110 + bl sub_08000C80 + ldr r1, _080007E8 + ldr r0, _080007EC + ldrb r0, [r0, #4] + strb r0, [r1] + bl m4aSoundMain + bl sub_080334E0 + ldr r1, _080007F0 + adds r0, r4, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080007BA + ldr r0, _080007F4 + ldr r0, [r0] + ldr r1, _080007F8 + ands r0, r1 + cmp r0, #0 + bne _080007BE +_080007BA: + bl sub_0806F050 +_080007BE: + bl sub_0800DC40 + ldr r2, _080007FC + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + ldr r0, _080007E0 + ldrh r2, [r0, #0x1c] + ldrh r3, [r0, #0x1c] + orrs r1, r2 + strh r1, [r0, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080007DC: .4byte gUnknown_30027E8 +_080007E0: .4byte gUnknown_3002360 +_080007E4: .4byte gUnknown_203CC28 +_080007E8: .4byte gUnknown_3002FF0 +_080007EC: .4byte gUnknown_3006120 +_080007F0: .4byte 0x00000439 +_080007F4: .4byte gUnknown_2022C90 +_080007F8: .4byte 0x013F0102 +_080007FC: .4byte gUnknown_3007FF8 + thumb_func_end sub_08000738 + + thumb_func_start sub_08000800 +sub_08000800: @ 0x08000800 + push {lr} + ldr r1, _08000810 + movs r0, #2 + bl SetFlashTimerIntr + pop {r0} + bx r0 + .align 2, 0 +_08000810: .4byte gUnknown_30027CC + thumb_func_end sub_08000800 + + thumb_func_start sub_08000814 +sub_08000814: @ 0x08000814 + push {r4, lr} + ldr r4, _0800083C + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _08000822 + bl _call_via_r0 +_08000822: + ldr r2, _08000840 + ldrh r0, [r2] + movs r1, #2 + 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 +_0800083C: .4byte gUnknown_3002360 +_08000840: .4byte gUnknown_3007FF8 + thumb_func_end sub_08000814 + + thumb_func_start sub_08000844 +sub_08000844: @ 0x08000844 + push {r4, lr} + ldr r4, _08000870 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _08000852 + bl _call_via_r0 +_08000852: + bl m4aSoundVSync + ldr r2, _08000874 + ldrh r0, [r2] + movs r1, #4 + 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 +_08000870: .4byte gUnknown_3002360 +_08000874: .4byte gUnknown_3007FF8 + thumb_func_end sub_08000844 + + thumb_func_start sub_08000878 +sub_08000878: @ 0x08000878 + push {r4, lr} + ldr r4, _080008A0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _08000886 + bl _call_via_r0 +_08000886: + ldr r2, _080008A4 + 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 +_080008A0: .4byte gUnknown_3002360 +_080008A4: .4byte gUnknown_3007FF8 + thumb_func_end sub_08000878 + + thumb_func_start sub_080008A8 +sub_080008A8: @ 0x080008A8 + bx lr + .align 2, 0 + thumb_func_end sub_080008A8 + + thumb_func_start sub_080008AC +sub_080008AC: @ 0x080008AC + push {lr} + ldr r2, _080008D4 + ldrh r1, [r2, #0x1c] + ldr r0, _080008D8 + ands r0, r1 + ldrh r1, [r2, #0x1c] + strh r0, [r2, #0x1c] + ldrh r1, [r2, #0x1c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080008D0 + movs r3, #1 +_080008C6: + ldrh r1, [r2, #0x1c] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080008C6 +_080008D0: + pop {r0} + bx r0 + .align 2, 0 +_080008D4: .4byte gUnknown_3002360 +_080008D8: .4byte 0x0000FFFE + thumb_func_end sub_080008AC + + thumb_func_start sub_080008DC +sub_080008DC: @ 0x080008DC + ldr r1, _080008E4 + str r0, [r1] + bx lr + .align 2, 0 +_080008E4: .4byte gUnknown_203CC28 + thumb_func_end sub_080008DC + + thumb_func_start sub_080008E8 +sub_080008E8: @ 0x080008E8 + ldr r1, _080008F0 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080008F0: .4byte gUnknown_203CC28 + thumb_func_end sub_080008E8 + + thumb_func_start sub_080008F4 +sub_080008F4: @ 0x080008F4 + push {r4, lr} + ldr r1, _08000950 + movs r0, #0 + strh r0, [r1] + bl m4aSoundVSyncOff + bl sub_080B9710 + ldr r1, _08000954 + ldrh r2, [r1, #0xa] + ldr r3, _08000958 + adds r0, r3, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r4, [r1, #0xa] + ldr r2, _0800095C + 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, _08000960 + 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] + bl SiiRtcProtect + movs r0, #0xff + bl SoftReset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08000950: .4byte 0x04000208 +_08000954: .4byte 0x040000BC +_08000958: .4byte 0x0000C5FF +_0800095C: .4byte 0x00007FFF +_08000960: .4byte 0x040000D4 + thumb_func_end sub_080008F4 + + thumb_func_start sub_08000964 +sub_08000964: @ 0x08000964 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08000980 + ldr r2, _08000984 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08000980: .4byte gUnknown_30070D0 +_08000984: .4byte 0x01000034 + thumb_func_end sub_08000964 + + thumb_func_start sub_08000988 +sub_08000988: @ 0x08000988 + push {r4, lr} + movs r4, #0 + strh r4, [r0] + ldr r4, _080009A0 + strh r4, [r0, #2] + str r3, [r0, #4] + str r1, [r0, #8] + str r2, [r0, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080009A0: .4byte 0x0000A3A3 + thumb_func_end sub_08000988 + + thumb_func_start sub_080009A4 +sub_080009A4: @ 0x080009A4 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + subs r3, #0x10 + adds r1, r2, #0 + bl sub_08000988 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080009A4 + + thumb_func_start sub_080009B8 +sub_080009B8: @ 0x080009B8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080009CC + lsrs r0, r1, #2 + adds r0, #1 + lsls r1, r0, #2 +_080009CC: + movs r2, #1 +_080009CE: + ldrh r0, [r4] + cmp r0, #0 + bne _08000A0C + ldr r3, [r4, #4] + cmp r3, r1 + blo _08000A0C + subs r0, r3, r1 + cmp r0, #0x1f + bhi _080009E4 + strh r2, [r4] + b _08000A06 +_080009E4: + subs r3, #0x10 + subs r3, r3, r1 + adds r0, r1, #0 + adds r0, #0x10 + adds r5, r4, r0 + strh r2, [r4] + str r1, [r4, #4] + ldr r2, [r4, #0xc] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08000988 + str r5, [r4, #0xc] + ldr r0, [r5, #0xc] + cmp r0, r6 + beq _08000A06 + str r5, [r0, #8] +_08000A06: + adds r0, r4, #0 + adds r0, #0x10 + b _08000A24 +_08000A0C: + ldr r0, [r4, #0xc] + cmp r0, r6 + beq _08000A16 + adds r4, r0, #0 + b _080009CE +_08000A16: + ldr r0, _08000A2C + movs r1, #0xae + ldr r2, _08000A30 + movs r3, #1 + bl AGBAssert + movs r0, #0 +_08000A24: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08000A2C: .4byte gUnknown_829BDF4 +_08000A30: .4byte gUnknown_829BE08 + thumb_func_end sub_080009B8 + + thumb_func_start sub_08000A34 +sub_08000A34: @ 0x08000A34 + push {r4, r5, r6, r7, lr} + cmp r1, #0 + bne _08000A50 + ldr r0, _08000A48 + ldr r2, _08000A4C + movs r1, #0xc3 + movs r3, #1 + bl AGBAssert + b _08000AF6 + .align 2, 0 +_08000A48: .4byte gUnknown_829BDF4 +_08000A4C: .4byte gUnknown_829BE0C +_08000A50: + adds r6, r0, #0 + adds r4, r1, #0 + subs r4, #0x10 + ldrh r0, [r4, #2] + ldr r7, _08000AFC + cmp r0, r7 + beq _08000A6A + ldr r0, _08000B00 + ldr r2, _08000B04 + movs r1, #0xcc + movs r3, #1 + bl AGBAssert +_08000A6A: + ldrh r0, [r4] + cmp r0, #1 + beq _08000A7C + ldr r0, _08000B00 + ldr r2, _08000B08 + movs r1, #0xcd + movs r3, #1 + bl AGBAssert +_08000A7C: + movs r0, #0 + strh r0, [r4] + ldr r0, [r4, #0xc] + cmp r0, r6 + beq _08000AB8 + ldrh r5, [r0] + cmp r5, #0 + bne _08000AB8 + ldrh r0, [r0, #2] + cmp r0, r7 + beq _08000A9E + ldr r0, _08000B00 + ldr r2, _08000B0C + movs r1, #0xd3 + movs r3, #1 + bl AGBAssert +_08000A9E: + ldr r0, [r4, #4] + adds r0, #0x10 + ldr r2, [r4, #0xc] + ldr r1, [r2, #4] + adds r0, r0, r1 + str r0, [r4, #4] + strh r5, [r2, #2] + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc] + str r0, [r4, #0xc] + cmp r0, r6 + beq _08000AB8 + str r4, [r0, #8] +_08000AB8: + cmp r4, r6 + beq _08000AF6 + ldr r0, [r4, #8] + ldrh r5, [r0] + cmp r5, #0 + bne _08000AF6 + ldrh r1, [r0, #2] + ldr r0, _08000AFC + cmp r1, r0 + beq _08000AD8 + ldr r0, _08000B00 + ldr r2, _08000B10 + movs r1, #0xe4 + movs r3, #1 + bl AGBAssert +_08000AD8: + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + str r0, [r1, #0xc] + ldr r1, [r4, #0xc] + cmp r1, r6 + beq _08000AE8 + ldr r0, [r4, #8] + str r0, [r1, #8] +_08000AE8: + strh r5, [r4, #2] + ldr r0, [r4, #8] + ldr r1, [r0, #4] + adds r1, #0x10 + ldr r2, [r4, #4] + adds r1, r1, r2 + str r1, [r0, #4] +_08000AF6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08000AFC: .4byte 0x0000A3A3 +_08000B00: .4byte gUnknown_829BDF4 +_08000B04: .4byte gUnknown_829BE18 +_08000B08: .4byte gUnknown_829BE40 +_08000B0C: .4byte gUnknown_829BE54 +_08000B10: .4byte gUnknown_829BE80 + thumb_func_end sub_08000A34 + + thumb_func_start sub_08000B14 +sub_08000B14: @ 0x08000B14 + push {r4, r5, lr} + sub sp, #4 + adds r4, r1, #0 + bl sub_080009B8 + adds r5, r0, #0 + cmp r5, #0 + beq _08000B48 + movs r0, #3 + ands r0, r4 + cmp r0, #0 + beq _08000B32 + lsrs r0, r4, #2 + adds r0, #1 + lsls r4, r0, #2 +_08000B32: + movs r0, #0 + str r0, [sp] + lsls r2, r4, #9 + lsrs r2, r2, #0xb + movs r0, #0xa0 + lsls r0, r0, #0x13 + orrs r2, r0 + mov r0, sp + adds r1, r5, #0 + bl CpuSet +_08000B48: + adds r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08000B14 + + thumb_func_start sub_08000B54 +sub_08000B54: @ 0x08000B54 + push {r4, r5, lr} + adds r5, r0, #0 + adds r3, r1, #0 + subs r3, #0x10 + ldrh r2, [r3, #2] + ldr r0, _08000BA0 + cmp r2, r0 + bne _08000B9A + ldr r0, [r3, #0xc] + ldrh r1, [r0, #2] + adds r4, r0, #0 + cmp r1, r2 + bne _08000B9A + cmp r4, r5 + beq _08000B78 + ldr r0, [r4, #8] + cmp r0, r3 + bne _08000B9A +_08000B78: + ldr r2, [r3, #8] + ldrh r1, [r2, #2] + ldr r0, _08000BA0 + cmp r1, r0 + bne _08000B9A + cmp r2, r5 + beq _08000B8C + ldr r0, [r2, #0xc] + cmp r0, r3 + bne _08000B9A +_08000B8C: + cmp r4, r5 + beq _08000BA4 + ldr r0, [r3, #4] + adds r0, #0x10 + adds r0, r3, r0 + cmp r4, r0 + beq _08000BA4 +_08000B9A: + movs r0, #0 + b _08000BA6 + .align 2, 0 +_08000BA0: .4byte 0x0000A3A3 +_08000BA4: + movs r0, #1 +_08000BA6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08000B54 + + thumb_func_start sub_08000BAC +sub_08000BAC: @ 0x08000BAC + push {lr} + ldr r2, _08000BC0 + str r0, [r2] + ldr r2, _08000BC4 + str r1, [r2] + bl sub_080009A4 + pop {r0} + bx r0 + .align 2, 0 +_08000BC0: .4byte gUnknown_3000004 +_08000BC4: .4byte gUnknown_3000008 + thumb_func_end sub_08000BAC + + thumb_func_start sub_08000BC8 +sub_08000BC8: @ 0x08000BC8 + push {lr} + adds r1, r0, #0 + ldr r0, _08000BD8 + ldr r0, [r0] + bl sub_080009B8 + pop {r1} + bx r1 + .align 2, 0 +_08000BD8: .4byte gUnknown_3000004 + thumb_func_end sub_08000BC8 + + thumb_func_start sub_08000BDC +sub_08000BDC: @ 0x08000BDC + push {lr} + adds r1, r0, #0 + ldr r0, _08000BEC + ldr r0, [r0] + bl sub_08000B14 + pop {r1} + bx r1 + .align 2, 0 +_08000BEC: .4byte gUnknown_3000004 + thumb_func_end sub_08000BDC + + thumb_func_start sub_08000BF0 +sub_08000BF0: @ 0x08000BF0 + push {lr} + adds r1, r0, #0 + ldr r0, _08000C00 + ldr r0, [r0] + bl sub_08000A34 + pop {r0} + bx r0 + .align 2, 0 +_08000C00: .4byte gUnknown_3000004 + thumb_func_end sub_08000BF0 + + thumb_func_start sub_08000C04 +sub_08000C04: @ 0x08000C04 + push {lr} + adds r1, r0, #0 + ldr r0, _08000C14 + ldr r0, [r0] + bl sub_08000B54 + pop {r1} + bx r1 + .align 2, 0 +_08000C14: .4byte gUnknown_3000004 + thumb_func_end sub_08000C04 + + thumb_func_start sub_08000C18 +sub_08000C18: @ 0x08000C18 + push {r4, r5, lr} + ldr r0, _08000C3C + ldr r4, [r0] + adds r5, r0, #0 +_08000C20: + ldr r0, [r5] + adds r1, r4, #0 + adds r1, #0x10 + bl sub_08000B54 + cmp r0, #0 + beq _08000C40 + ldr r4, [r4, #0xc] + ldr r0, [r5] + cmp r4, r0 + bne _08000C20 + movs r0, #1 + b _08000C42 + .align 2, 0 +_08000C3C: .4byte gUnknown_3000004 +_08000C40: + movs r0, #0 +_08000C42: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08000C18 + + thumb_func_start sub_08000C48 +sub_08000C48: @ 0x08000C48 + push {lr} + ldr r2, _08000C74 + movs r0, #1 + strb r0, [r2] + ldr r1, _08000C78 + movs r0, #0 + strb r0, [r1] + movs r3, #0 + ldr r0, _08000C7C + movs r1, #0x7f +_08000C5C: + strh r3, [r0, #8] + str r3, [r0] + str r3, [r0, #4] + adds r0, #0x10 + subs r1, #1 + cmp r1, #0 + bge _08000C5C + movs r0, #0 + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08000C74: .4byte gUnknown_3000810 +_08000C78: .4byte gUnknown_3000811 +_08000C7C: .4byte gUnknown_3000010 + thumb_func_end sub_08000C48 + + thumb_func_start sub_08000C80 +sub_08000C80: @ 0x08000C80 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r0, _08000CFC + ldrb r0, [r0] + cmp r0, #0 + beq _08000C96 + b _08000ED6 +_08000C96: + movs r0, #0 + str r0, [sp, #8] + ldr r1, _08000D00 + ldr r2, _08000D04 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0, #8] + mov ip, r2 + cmp r0, #0 + bne _08000CAE + b _08000ED6 +_08000CAE: + mov r8, r1 + adds r1, #4 + mov sl, r1 + movs r6, #0x80 + lsls r6, r6, #5 + ldr r7, _08000D08 + movs r2, #0 + mov sb, r2 +_08000CBE: + mov r3, ip + ldrb r0, [r3] + lsls r5, r0, #4 + mov r0, r8 + adds r1, r5, r0 + ldrh r0, [r1, #8] + ldr r2, [sp, #8] + adds r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + movs r0, #0xa0 + lsls r0, r0, #8 + ldr r3, [sp, #8] + cmp r3, r0 + bls _08000CE0 + b _08000ED6 +_08000CE0: + ldr r0, _08000D0C + ldrb r0, [r0] + cmp r0, #0xe0 + bls _08000CEA + b _08000ED6 +_08000CEA: + ldrh r0, [r1, #0xa] + cmp r0, #2 + beq _08000D60 + cmp r0, #2 + bgt _08000D10 + cmp r0, #1 + beq _08000D1C + b _08000E80 + .align 2, 0 +_08000CFC: .4byte gUnknown_3000810 +_08000D00: .4byte gUnknown_3000010 +_08000D04: .4byte gUnknown_3000811 +_08000D08: .4byte 0x040000D4 +_08000D0C: .4byte 0x04000006 +_08000D10: + cmp r0, #3 + beq _08000DCC + cmp r0, #4 + bne _08000D1A + b _08000E18 +_08000D1A: + b _08000E80 +_08000D1C: + ldr r3, [r1] + mov r2, sl + adds r0, r5, r2 + ldr r2, [r0] + ldrh r1, [r1, #8] + cmp r1, r6 + bhi _08000D36 + str r3, [r7] + str r2, [r7, #4] + lsrs r0, r1, #2 + movs r1, #0x84 + lsls r1, r1, #0x18 + b _08000E3A +_08000D36: + ldr r4, _08000D58 + str r3, [r4] + str r2, [r4, #4] + ldr r0, _08000D5C + str r0, [r4, #8] + ldr r0, [r4, #8] + adds r3, r3, r6 + adds r2, r2, r6 + subs r1, r1, r6 + cmp r1, r6 + bhi _08000D36 + str r3, [r4] + str r2, [r4, #4] + lsrs r0, r1, #2 + movs r1, #0x84 + lsls r1, r1, #0x18 + b _08000E06 + .align 2, 0 +_08000D58: .4byte 0x040000D4 +_08000D5C: .4byte 0x84000400 +_08000D60: + mov r3, sl + adds r0, r5, r3 + ldr r4, [r0] + ldrh r1, [r1, #8] + cmp r1, r6 + bhi _08000D84 + 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, #4] + lsrs r0, r1, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + b _08000E3A +_08000D84: + mov r2, ip + ldrb r0, [r2] + lsls r0, r0, #4 + mov r5, r8 + adds r5, #0xc + adds r0, r0, r5 + ldr r0, [r0] + str r0, [sp] + ldr r3, _08000DC4 + mov r0, sp + str r0, [r3] + str r4, [r3, #4] + ldr r0, _08000DC8 + str r0, [r3, #8] + ldr r0, [r3, #8] + adds r4, r4, r6 + subs r1, r1, r6 + cmp r1, r6 + bhi _08000D84 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r5 + ldr r0, [r0] + str r0, [sp] + mov r2, sp + str r2, [r3] + str r4, [r3, #4] + lsrs r0, r1, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + b _08000E7A + .align 2, 0 +_08000DC4: .4byte 0x040000D4 +_08000DC8: .4byte 0x85000400 +_08000DCC: + ldr r3, [r1] + mov r2, sl + adds r0, r5, r2 + ldr r2, [r0] + ldrh r1, [r1, #8] + cmp r1, r6 + bhi _08000DE6 + str r3, [r7] + str r2, [r7, #4] + lsrs r0, r1, #1 + movs r1, #0x80 + lsls r1, r1, #0x18 + b _08000E3A +_08000DE6: + ldr r4, _08000E10 + str r3, [r4] + str r2, [r4, #4] + ldr r0, _08000E14 + str r0, [r4, #8] + ldr r0, [r4, #8] + adds r3, r3, r6 + adds r2, r2, r6 + subs r1, r1, r6 + cmp r1, r6 + bhi _08000DE6 + str r3, [r4] + str r2, [r4, #4] + lsrs r0, r1, #1 + movs r1, #0x80 + lsls r1, r1, #0x18 +_08000E06: + orrs r0, r1 + str r0, [r4, #8] + ldr r0, [r4, #8] + b _08000E80 + .align 2, 0 +_08000E10: .4byte 0x040000D4 +_08000E14: .4byte 0x80000800 +_08000E18: + mov r3, sl + adds r0, r5, r3 + ldr r2, [r0] + ldrh r4, [r1, #8] + add r1, sp, #4 + cmp r4, r6 + bhi _08000E42 + mov r0, r8 + adds r0, #0xc + adds r0, r5, r0 + ldr r0, [r0] + strh r0, [r1] + str r1, [r7] + str r2, [r7, #4] + lsrs r0, r4, #1 + movs r1, #0x81 + lsls r1, r1, #0x18 +_08000E3A: + orrs r0, r1 + str r0, [r7, #8] + ldr r0, [r7, #8] + b _08000E80 +_08000E42: + mov r5, ip + ldrb r0, [r5] + lsls r0, r0, #4 + ldr r3, _08000EE8 + adds r0, r0, r3 + ldr r0, [r0] + strh r0, [r1] + ldr r3, _08000EEC + str r1, [r3] + str r2, [r3, #4] + ldr r0, _08000EF0 + str r0, [r3, #8] + ldr r0, [r3, #8] + adds r2, r2, r6 + subs r4, r4, r6 + cmp r4, r6 + bhi _08000E42 + ldrb r0, [r5] + lsls r0, r0, #4 + ldr r5, _08000EE8 + adds r0, r0, r5 + ldr r0, [r0] + strh r0, [r1] + str r1, [r3] + str r2, [r3, #4] + lsrs r0, r4, #1 + movs r1, #0x81 + lsls r1, r1, #0x18 +_08000E7A: + orrs r0, r1 + str r0, [r3, #8] + ldr r0, [r3, #8] +_08000E80: + ldr r1, _08000EF4 + mov r3, ip + ldrb r0, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + mov r2, sb + str r2, [r0] + ldrb r0, [r3] + lsls r0, r0, #4 + add r0, sl + str r2, [r0] + ldrb r0, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + movs r4, #0 + strh r2, [r0, #8] + ldrb r0, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + mov r5, sb + strh r5, [r0, #0xa] + ldrb r0, [r3] + lsls r0, r0, #4 + adds r1, #0xc + adds r0, r0, r1 + mov r1, sb + str r1, [r0] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + cmp r0, #0 + bge _08000EC4 + strb r4, [r3] +_08000EC4: + mov r2, ip + ldrb r0, [r2] + lsls r0, r0, #4 + ldr r3, _08000EF4 + adds r0, r0, r3 + ldrh r0, [r0, #8] + cmp r0, #0 + beq _08000ED6 + b _08000CBE +_08000ED6: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08000EE8: .4byte gUnknown_300001C +_08000EEC: .4byte 0x040000D4 +_08000EF0: .4byte 0x81000800 +_08000EF4: .4byte gUnknown_3000010 + thumb_func_end sub_08000C80 + + thumb_func_start sub_08000EF8 +sub_08000EF8: @ 0x08000EF8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov ip, r0 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + movs r5, #0 + ldr r1, _08000F44 + movs r0, #1 + strb r0, [r1] + ldr r0, _08000F48 + ldrb r2, [r0] + mov sl, r1 + ldr r6, _08000F4C + mov sb, r6 + lsls r0, r2, #4 + adds r1, r0, r6 +_08000F24: + lsls r3, r2, #4 + ldrh r0, [r1, #8] + cmp r0, #0 + bne _08000F64 + mov r0, ip + str r0, [r1] + mov r0, sb + adds r0, #4 + adds r0, r3, r0 + mov r3, r8 + str r3, [r0] + strh r7, [r1, #8] + cmp r4, #1 + bne _08000F50 + strh r4, [r1, #0xa] + b _08000F54 + .align 2, 0 +_08000F44: .4byte gUnknown_3000810 +_08000F48: .4byte gUnknown_3000811 +_08000F4C: .4byte gUnknown_3000010 +_08000F50: + movs r0, #3 + strh r0, [r1, #0xa] +_08000F54: + movs r0, #0 + ldr r1, _08000F60 + strb r0, [r1] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + b _08000F80 + .align 2, 0 +_08000F60: .4byte gUnknown_3000810 +_08000F64: + adds r1, #0x10 + adds r2, #1 + cmp r2, #0x7f + ble _08000F70 + adds r1, r6, #0 + movs r2, #0 +_08000F70: + adds r5, #1 + cmp r5, #0x7f + ble _08000F24 + movs r0, #0 + mov r3, sl + strb r0, [r3] + movs r0, #1 + rsbs r0, r0, #0 +_08000F80: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08000EF8 + + thumb_func_start sub_08000F90 +sub_08000F90: @ 0x08000F90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + movs r6, #0 + ldr r0, _08000FE8 + ldrb r2, [r0] + ldr r1, _08000FEC + movs r0, #1 + strb r0, [r1] + mov sl, r1 + ldr r0, _08000FF0 + mov ip, r0 + mov r4, ip + lsls r0, r2, #4 + adds r0, #8 + adds r1, r0, r4 +_08000FC0: + lsls r3, r2, #4 + ldrh r0, [r1] + cmp r0, #0 + bne _08001008 + adds r0, r4, #4 + adds r0, r3, r0 + mov r6, r8 + str r6, [r0] + strh r7, [r1] + strh r5, [r1, #2] + adds r0, r4, #0 + adds r0, #0xc + adds r0, r3, r0 + mov r3, sb + str r3, [r0] + cmp r5, #1 + bne _08000FF4 + movs r0, #2 + b _08000FF6 + .align 2, 0 +_08000FE8: .4byte gUnknown_3000811 +_08000FEC: .4byte gUnknown_3000810 +_08000FF0: .4byte gUnknown_3000010 +_08000FF4: + movs r0, #4 +_08000FF6: + strh r0, [r1, #2] + movs r0, #0 + ldr r6, _08001004 + strb r0, [r6] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + b _08001026 + .align 2, 0 +_08001004: .4byte gUnknown_3000810 +_08001008: + adds r1, #0x10 + adds r2, #1 + cmp r2, #0x7f + ble _08001016 + mov r1, ip + adds r1, #8 + movs r2, #0 +_08001016: + adds r6, #1 + cmp r6, #0x7f + ble _08000FC0 + movs r0, #0 + mov r1, sl + strb r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 +_08001026: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08000F90 + + thumb_func_start sub_08001034 +sub_08001034: @ 0x08001034 + push {lr} + movs r2, #0 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + movs r3, #1 + rsbs r3, r3, #0 + cmp r1, r3 + bne _0800105C + ldr r1, _08001058 +_08001046: + ldrh r0, [r1, #8] + cmp r0, #0 + bne _08001068 + adds r1, #0x10 + adds r2, #1 + cmp r2, #0x7f + ble _08001046 +_08001054: + movs r0, #0 + b _0800106C + .align 2, 0 +_08001058: .4byte gUnknown_3000010 +_0800105C: + ldr r0, _08001070 + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1, #8] + cmp r0, #0 + beq _08001054 +_08001068: + movs r0, #1 + rsbs r0, r0, #0 +_0800106C: + pop {r1} + bx r1 + .align 2, 0 +_08001070: .4byte gUnknown_3000010 + thumb_func_end sub_08001034 + + thumb_func_start sub_08001074 +sub_08001074: @ 0x08001074 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r2, #0 + ldr r7, _080010B8 + ldr r0, _080010BC + mov ip, r0 + ldr r1, _080010C0 + mov r8, r1 + ldr r6, _080010C4 + movs r5, #0 + ldr r4, _080010C8 + movs r3, #0xff +_0800108E: + adds r0, r2, r6 + strb r5, [r0] + adds r1, r2, r4 + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + adds r2, #1 + cmp r2, #0x5f + ble _0800108E + movs r0, #0 + strb r0, [r7] + mov r1, ip + strb r0, [r1] + movs r0, #0 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080010B8: .4byte gUnknown_30008D8 +_080010BC: .4byte gUnknown_30008D9 +_080010C0: .4byte gUnknown_30008DA +_080010C4: .4byte gUnknown_3000818 +_080010C8: .4byte gUnknown_3000878 + thumb_func_end sub_08001074 + + thumb_func_start sub_080010CC +sub_080010CC: @ 0x080010CC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bne _080010F8 + ldr r2, _080010EC + ldrh r1, [r2] + ldr r0, _080010F0 + ands r0, r1 + strh r0, [r2] + ldr r1, _080010F4 + ldrh r0, [r2] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2] + b _08001106 + .align 2, 0 +_080010EC: .4byte 0x04000004 +_080010F0: .4byte 0x0000FFE7 +_080010F4: .4byte gUnknown_300081C +_080010F8: + movs r0, #0x80 + lsls r0, r0, #0x13 + adds r0, r2, r0 + ldr r1, _0800110C + adds r1, r2, r1 + ldrh r1, [r1] + strh r1, [r0] +_08001106: + pop {r0} + bx r0 + .align 2, 0 +_0800110C: .4byte gUnknown_3000818 + thumb_func_end sub_080010CC + + thumb_func_start sub_08001110 +sub_08001110: @ 0x08001110 + push {r4, r5, lr} + ldr r0, _0800113C + ldrb r0, [r0] + cmp r0, #0 + bne _08001134 + movs r5, #0 +_0800111C: + ldr r0, _08001140 + adds r4, r5, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _08001134 + bl sub_080010CC + movs r0, #0xff + strb r0, [r4] + adds r5, #1 + cmp r5, #0x5f + ble _0800111C +_08001134: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800113C: .4byte gUnknown_30008D8 +_08001140: .4byte gUnknown_3000878 + thumb_func_end sub_08001110 + + thumb_func_start sub_08001144 +sub_08001144: @ 0x08001144 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r4, #0x5f + bhi _080011C0 + ldr r0, _08001180 + adds r0, r4, r0 + strh r1, [r0] + ldr r0, _08001184 + ldrh r1, [r0] + movs r0, #0xff + ands r0, r1 + subs r0, #0xa1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x40 + bls _08001178 + movs r0, #0x80 + lsls r0, r0, #0x13 + ldrh r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0800118E +_08001178: + adds r0, r4, #0 + bl sub_080010CC + b _080011C0 + .align 2, 0 +_08001180: .4byte gUnknown_3000818 +_08001184: .4byte 0x04000006 +_08001188: + movs r0, #0 + strb r0, [r5] + b _080011C0 +_0800118E: + ldr r2, _080011C8 + movs r0, #1 + strb r0, [r2] + movs r3, #0 + ldr r0, _080011CC + ldrb r1, [r0] + adds r5, r2, #0 + adds r2, r0, #0 + cmp r1, #0xff + beq _080011B8 + adds r1, r2, #0 +_080011A4: + ldrb r0, [r1] + cmp r0, r4 + beq _08001188 + adds r1, #1 + adds r3, #1 + cmp r3, #0x5f + bgt _080011B8 + ldrb r0, [r1] + cmp r0, #0xff + bne _080011A4 +_080011B8: + adds r0, r3, r2 + movs r1, #0 + strb r4, [r0] + strb r1, [r5] +_080011C0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080011C8: .4byte gUnknown_30008D8 +_080011CC: .4byte gUnknown_3000878 + thumb_func_end sub_08001144 + + thumb_func_start sub_080011D0 +sub_080011D0: @ 0x080011D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r1, #4 + bne _080011E4 + ldr r0, _080011E0 + b _080011F6 + .align 2, 0 +_080011E0: .4byte 0x04000004 +_080011E4: + cmp r1, #6 + beq _080011F4 + ldr r0, _080011F0 + adds r0, r1, r0 + ldrh r0, [r0] + b _080011F8 + .align 2, 0 +_080011F0: .4byte gUnknown_3000818 +_080011F4: + ldr r0, _080011FC +_080011F6: + ldrh r0, [r0] +_080011F8: + pop {r1} + bx r1 + .align 2, 0 +_080011FC: .4byte 0x04000006 + thumb_func_end sub_080011D0 + + thumb_func_start sub_08001200 +sub_08001200: @ 0x08001200 + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0800121C + adds r1, r0, r1 + ldrh r1, [r1] + orrs r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_0800121C: .4byte gUnknown_3000818 + thumb_func_end sub_08001200 + + thumb_func_start sub_08001220 +sub_08001220: @ 0x08001220 + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + ldr r1, _0800123C + adds r1, r0, r1 + ldrh r1, [r1] + lsrs r2, r2, #0x10 + bics r1, r2 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_0800123C: .4byte gUnknown_3000818 + thumb_func_end sub_08001220 + + thumb_func_start sub_08001240 +sub_08001240: @ 0x08001240 + push {r4, r5, lr} + ldr r5, _08001264 + ldrb r0, [r5] + cmp r0, #0 + beq _0800125E + ldr r2, _08001268 + ldrh r1, [r2] + movs r4, #0 + strh r4, [r2] + ldr r3, _0800126C + ldr r0, _08001270 + ldrh r0, [r0] + strh r0, [r3] + strh r1, [r2] + strb r4, [r5] +_0800125E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08001264: .4byte gUnknown_30008D9 +_08001268: .4byte 0x04000208 +_0800126C: .4byte 0x04000200 +_08001270: .4byte gUnknown_30008DA + thumb_func_end sub_08001240 + + thumb_func_start sub_08001274 +sub_08001274: @ 0x08001274 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _08001298 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + ldr r1, _0800129C + movs r0, #1 + strb r0, [r1] + bl sub_08001240 + ldrh r0, [r4] + bl sub_080012CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08001298: .4byte gUnknown_30008DA +_0800129C: .4byte gUnknown_30008D9 + thumb_func_end sub_08001274 + + thumb_func_start sub_080012A0 +sub_080012A0: @ 0x080012A0 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080012C4 + ldrh r1, [r4] + bics r1, r0 + strh r1, [r4] + ldr r1, _080012C8 + movs r0, #1 + strb r0, [r1] + bl sub_08001240 + ldrh r0, [r4] + bl sub_080012CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080012C4: .4byte gUnknown_30008DA +_080012C8: .4byte gUnknown_30008D9 + thumb_func_end sub_080012A0 + + thumb_func_start sub_080012CC +sub_080012CC: @ 0x080012CC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #4 + bl sub_080011D0 + movs r2, #0x18 + ands r2, r0 + movs r1, #1 + ands r1, r4 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r1, r0, #0x1f + movs r0, #8 + ands r1, r0 + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080012F8 + movs r0, #0x10 + orrs r1, r0 +_080012F8: + cmp r2, r1 + beq _08001302 + movs r0, #4 + bl sub_08001144 +_08001302: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080012CC + + thumb_func_start sub_08001308 +sub_08001308: @ 0x08001308 + push {lr} + bl sub_0800134C + ldr r1, _0800131C + movs r0, #0 + strh r0, [r1, #0x10] + bl sub_080016D4 + pop {r0} + bx r0 + .align 2, 0 +_0800131C: .4byte gUnknown_30008E0 + thumb_func_end sub_08001308 + + thumb_func_start sub_08001320 +sub_08001320: @ 0x08001320 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08001334 + ldrh r2, [r3, #0x10] + ldr r1, _08001338 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x10] + bx lr + .align 2, 0 +_08001334: .4byte gUnknown_30008E0 +_08001338: .4byte 0x0000FFF8 + thumb_func_end sub_08001320 + + thumb_func_start sub_0800133C +sub_0800133C: @ 0x0800133C + ldr r0, _08001348 + ldrb r1, [r0, #0x10] + movs r0, #7 + ands r0, r1 + bx lr + .align 2, 0 +_08001348: .4byte gUnknown_30008E0 + thumb_func_end sub_0800133C + + thumb_func_start sub_0800134C +sub_0800134C: @ 0x0800134C + push {lr} + ldr r2, _08001364 + ldr r0, _08001368 + ldr r0, [r0] + adds r1, r2, #0 + adds r1, #0xc +_08001358: + str r0, [r1] + subs r1, #4 + cmp r1, r2 + bge _08001358 + pop {r0} + bx r0 + .align 2, 0 +_08001364: .4byte gUnknown_30008E0 +_08001368: .4byte gUnknown_829BEAC + thumb_func_end sub_0800134C + + thumb_func_start sub_0800136C +sub_0800136C: @ 0x0800136C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800138A + ldr r1, _08001390 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, _08001394 + ldr r1, [r1] + str r1, [r0] +_0800138A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08001390: .4byte gUnknown_30008E0 +_08001394: .4byte gUnknown_829BEAC + thumb_func_end sub_0800136C + + thumb_func_start sub_08001398 +sub_08001398: @ 0x08001398 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + mov ip, r6 + ldr r6, [sp, #0x3c] + mov r8, r6 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + str r7, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, ip + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0xc] + adds r0, r7, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #0 + bne _080014B0 + ldr r2, _080014C0 + mov r8, r2 + mov r0, sl + cmp r0, #0xff + beq _0800140C + lsls r2, r7, #2 + add r2, r8 + movs r1, #3 + ands r1, r0 + ldrb r3, [r2, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #1] +_0800140C: + cmp r6, #0xff + beq _08001424 + lsls r1, r7, #2 + add r1, r8 + movs r0, #0x1f + ands r6, r0 + lsls r3, r6, #2 + ldrb r2, [r1, #1] + subs r0, #0x9c + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #1] +_08001424: + mov r1, sb + cmp r1, #0xff + beq _08001440 + lsls r1, r7, #2 + add r1, r8 + movs r0, #3 + mov r2, sb + ands r2, r0 + lsls r3, r2, #2 + ldrb r2, [r1] + subs r0, #0x10 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_08001440: + ldr r6, [sp, #4] + cmp r6, #0xff + beq _08001456 + lsls r1, r7, #2 + add r1, r8 + lsls r3, r6, #7 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #1] +_08001456: + cmp r5, #0xff + beq _0800146E + lsls r1, r7, #2 + add r1, r8 + movs r0, #3 + ands r5, r0 + lsls r3, r5, #4 + ldrb r2, [r1] + subs r0, #0x34 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_0800146E: + cmp r4, #0xff + beq _08001486 + lsls r1, r7, #2 + add r1, r8 + movs r0, #1 + ands r4, r0 + lsls r3, r4, #6 + ldrb r2, [r1] + subs r0, #0x42 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_08001486: + ldr r0, [sp, #0xc] + cmp r0, #0xff + beq _0800149C + 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] +_0800149C: + ldr r1, [sp] + lsls r0, r1, #2 + add r0, r8 + mov r2, ip + strb r2, [r0, #2] + strb r2, [r0, #3] + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_080014B0: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080014C0: .4byte gUnknown_30008E0 + thumb_func_end sub_08001398 + + thumb_func_start sub_080014C4 +sub_080014C4: @ 0x080014C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r0, r4, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08001570 + ldr r1, _080014FC + lsls r2, r4, #2 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + adds r3, r1, #0 + cmp r0, #0 + beq _08001570 + subs r0, r5, #1 + cmp r0, #7 + bhi _08001570 + lsls r0, r0, #2 + ldr r1, _08001500 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080014FC: .4byte gUnknown_30008E0 +_08001500: .4byte _08001504 +_08001504: @ jump table + .4byte _08001524 @ case 0 + .4byte _0800152E @ case 1 + .4byte _08001538 @ case 2 + .4byte _08001542 @ case 3 + .4byte _0800154C @ case 4 + .4byte _08001554 @ case 5 + .4byte _0800155E @ case 6 + .4byte _08001568 @ case 7 +_08001524: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + b _08001572 +_0800152E: + adds r0, r2, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + b _08001572 +_08001538: + adds r0, r2, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + b _08001572 +_08001542: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + b _08001572 +_0800154C: + adds r0, r2, r3 + ldrb r0, [r0, #1] + lsrs r0, r0, #7 + b _08001572 +_08001554: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + b _08001572 +_0800155E: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + b _08001572 +_08001568: + adds r0, r2, r3 + ldrb r0, [r0] + lsrs r0, r0, #7 + b _08001572 +_08001570: + movs r0, #0xff +_08001572: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080014C4 + + thumb_func_start sub_08001578 +sub_08001578: @ 0x08001578 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r6, r3, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r0, r4, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080015F0 + ldr r1, _080015B8 + lsls r0, r4, #2 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080015F0 + cmp r5, #1 + beq _080015BC + cmp r5, #2 + beq _080015C4 + movs r2, #0xff + b _080015F4 + .align 2, 0 +_080015B8: .4byte gUnknown_30008E0 +_080015BC: + ldrb r0, [r1, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x10 + b _080015CC +_080015C4: + ldrb r0, [r1, #1] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + lsls r0, r0, #0xb +_080015CC: + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r1, r0, r1 + mov r0, r8 + adds r2, r7, #0 + movs r3, #0 + bl sub_08000EF8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080015F4 +_080015F0: + movs r0, #0xff + b _080015F6 +_080015F4: + adds r0, r2, #0 +_080015F6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08001578 + + thumb_func_start sub_08001600 +sub_08001600: @ 0x08001600 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800166E + ldr r5, _08001674 + lsls r0, r4, #2 + adds r2, r0, r5 + ldrb r3, [r2] + lsls r0, r3, #0x1f + cmp r0, #0 + beq _0800166E + lsls r1, r3, #0x1a + lsrs r1, r1, #0x1e + ldrb r2, [r2, #1] + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1c + orrs r1, r0 + movs r0, #0x40 + ands r0, r3 + orrs r1, r0 + lsrs r0, r2, #7 + lsls r0, r0, #7 + orrs r1, r0 + lsls r2, r2, #0x19 + lsrs r2, r2, #0x1b + lsls r2, r2, #8 + orrs r1, r2 + lsrs r0, r3, #7 + lsls r0, r0, #0xd + orrs r1, r0 + lsls r0, r3, #0x1c + lsrs r0, r0, #0x1e + lsls r0, r0, #0xe + orrs r1, r0 + lsls r0, r4, #0x19 + movs r2, #0x80 + lsls r2, r2, #0x14 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + bl sub_08001144 + adds r1, r4, #0 + adds r1, #8 + movs r0, #1 + lsls r0, r1 + ldrh r1, [r5, #0x10] + orrs r0, r1 + ldr r1, _08001678 + ands r0, r1 + strh r0, [r5, #0x10] +_0800166E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08001674: .4byte gUnknown_30008E0 +_08001678: .4byte 0x00000F07 + thumb_func_end sub_08001600 + + thumb_func_start sub_0800167C +sub_0800167C: @ 0x0800167C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080017BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080016A2 + ldr r2, _080016A8 + adds r0, r4, #0 + adds r0, #8 + movs r1, #1 + lsls r1, r0 + ldrh r0, [r2, #0x10] + bics r0, r1 + ldr r1, _080016AC + ands r0, r1 + strh r0, [r2, #0x10] +_080016A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080016A8: .4byte gUnknown_30008E0 +_080016AC: .4byte 0x00000F07 + thumb_func_end sub_0800167C + + thumb_func_start sub_080016B0 +sub_080016B0: @ 0x080016B0 + push {lr} + movs r0, #0 + bl sub_080011D0 + ldr r1, _080016CC + ands r1, r0 + ldr r0, _080016D0 + ldrh r0, [r0, #0x10] + orrs r1, r0 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080016CC: .4byte 0x0000F0F8 +_080016D0: .4byte gUnknown_30008E0 + thumb_func_end sub_080016B0 + + thumb_func_start sub_080016D4 +sub_080016D4: @ 0x080016D4 + push {lr} + movs r0, #0 + bl sub_080011D0 + ldr r1, _080016EC + ands r1, r0 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080016EC: .4byte 0x0000F0F8 + thumb_func_end sub_080016D4 + + thumb_func_start sub_080016F0 +sub_080016F0: @ 0x080016F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x24 + mov ip, r1 + mov r8, r2 + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x40] + ldr r4, [sp, #0x44] + ldr r5, [sp, #0x48] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _08001734 + ldrh r0, [r0, #0x10] + movs r1, #7 + ands r1, r0 + cmp r1, #1 + beq _08001738 + cmp r1, #1 + ble _080017AE + cmp r1, #2 + beq _0800173E + b _080017AE + .align 2, 0 +_08001734: .4byte gUnknown_30008E0 +_08001738: + cmp r6, #2 + bne _080017AE + b _08001748 +_0800173E: + subs r0, r6, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080017AE +_08001748: + mov r0, ip + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + mov r0, sp + strh r3, [r0, #8] + 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, #1 + bl BgAffineSet + ldrh r1, [r4] + movs r0, #0x20 + bl sub_08001144 + ldrh r1, [r4, #2] + movs r0, #0x22 + bl sub_08001144 + ldrh r1, [r4, #4] + movs r0, #0x24 + bl sub_08001144 + ldrh r1, [r4, #6] + movs r0, #0x26 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x20 + bl sub_08001144 + ldrh r1, [r4, #8] + movs r0, #0x28 + bl sub_08001144 + ldrh r1, [r4, #0xa] + movs r0, #0x2a + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x2c + bl sub_08001144 + ldrh r1, [r4, #0xe] + movs r0, #0x2e + bl sub_08001144 +_080017AE: + add sp, #0x24 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080016F0 + + thumb_func_start sub_080017BC +sub_080017BC: @ 0x080017BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080017CA + movs r0, #0 + b _080017CC +_080017CA: + movs r0, #1 +_080017CC: + pop {r1} + bx r1 + thumb_func_end sub_080017BC + + thumb_func_start sub_080017D0 +sub_080017D0: @ 0x080017D0 + movs r0, #0 + bx lr + thumb_func_end sub_080017D0 + + thumb_func_start sub_080017D4 +sub_080017D4: @ 0x080017D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001308 + ldr r1, _080017F8 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xc +_080017E4: + str r2, [r0] + subs r0, #4 + cmp r0, r1 + bge _080017E4 + ldr r0, _080017FC + str r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080017F8: .4byte gUnknown_3000938 +_080017FC: .4byte gUnknown_3002FF4 + thumb_func_end sub_080017D4 + + thumb_func_start sub_08001800 +sub_08001800: @ 0x08001800 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + bl sub_08001320 + bl sub_0800134C + cmp r4, #0 + beq _080018AC + movs r7, #0 + ldr r0, _080018BC + mov sb, r0 + movs r2, #0xc + add r2, sb + mov sl, r2 + adds r6, r5, #0 + mov r8, r4 +_08001832: + ldr r4, [r6] + lsls r0, r4, #0x1e + lsrs r5, r0, #0x1e + cmp r5, #3 + bhi _0800189E + lsls r1, r4, #0x1c + lsrs r1, r1, #0x1e + lsls r2, r4, #0x17 + lsrs r2, r2, #0x1b + lsls r3, r4, #0x15 + lsrs r3, r3, #0x1e + lsls r0, r4, #0x14 + lsrs r0, r0, #0x1f + str r0, [sp] + lsls r0, r4, #0x12 + lsrs r0, r0, #0x1e + str r0, [sp, #4] + str r7, [sp, #8] + str r7, [sp, #0xc] + adds r0, r5, #0 + bl sub_08001398 + lsls r4, r5, #4 + mov r5, sb + adds r3, r4, r5 + ldr r2, [r6] + lsls r2, r2, #8 + lsrs r2, r2, #0x16 + ldrh r0, [r3] + ldr r5, _080018C0 + adds r1, r5, #0 + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + ldrb r0, [r3, #1] + movs r2, #0x3d + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r3, #1] + ldr r0, [r3] + ldr r1, _080018C4 + ands r0, r1 + str r0, [r3] + mov r0, sb + adds r0, #4 + adds r0, r4, r0 + str r7, [r0] + mov r0, sb + adds r0, #8 + adds r0, r4, r0 + str r7, [r0] + add r4, sl + str r7, [r4] +_0800189E: + adds r6, #4 + movs r5, #1 + rsbs r5, r5, #0 + add r8, r5 + mov r0, r8 + cmp r0, #0 + bne _08001832 +_080018AC: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080018BC: .4byte gUnknown_30008F8 +_080018C0: .4byte 0xFFFFFC00 +_080018C4: .4byte 0x00003FFF + thumb_func_end sub_08001800 + + thumb_func_start sub_080018C8 +sub_080018C8: @ 0x080018C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r7, r0, #0 + ldr r4, [r7] + lsls r0, r4, #0x1e + lsrs r5, r0, #0x1e + cmp r5, #3 + bhi _08001938 + lsls r1, r4, #0x1c + lsrs r1, r1, #0x1e + lsls r2, r4, #0x17 + lsrs r2, r2, #0x1b + lsls r3, r4, #0x15 + lsrs r3, r3, #0x1e + lsls r0, r4, #0x14 + lsrs r0, r0, #0x1f + str r0, [sp] + lsls r0, r4, #0x12 + lsrs r0, r0, #0x1e + str r0, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + str r6, [sp, #0xc] + adds r0, r5, #0 + bl sub_08001398 + ldr r4, _08001940 + lsls r5, r5, #4 + adds r3, r5, r4 + ldr r1, [r7] + lsls r1, r1, #8 + lsrs r1, r1, #0x16 + ldrh r2, [r3] + ldr r0, _08001944 + ands r0, r2 + orrs r0, r1 + strh r0, [r3] + ldrb r1, [r3, #1] + movs r0, #0x3d + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #1] + ldr r0, [r3] + ldr r1, _08001948 + ands r0, r1 + str r0, [r3] + adds r0, r4, #4 + adds r0, r5, r0 + str r6, [r0] + adds r0, r4, #0 + adds r0, #8 + adds r0, r5, r0 + str r6, [r0] + adds r4, #0xc + adds r5, r5, r4 + str r6, [r5] +_08001938: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08001940: .4byte gUnknown_30008F8 +_08001944: .4byte 0xFFFFFC00 +_08001948: .4byte 0x00003FFF + thumb_func_end sub_080018C8 + + thumb_func_start sub_0800194C +sub_0800194C: @ 0x0800194C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08001320 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800194C + + thumb_func_start sub_0800195C +sub_0800195C: @ 0x0800195C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + lsls r3, r3, #0x10 + lsrs r4, r3, #0x10 + adds r0, r5, #0 + movs r1, #5 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08001998 + ldr r1, _08001994 + lsls r0, r5, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + lsls r0, r0, #0x15 + b _080019A8 + .align 2, 0 +_08001994: .4byte gUnknown_30008F8 +_08001998: + ldr r1, _080019C8 + lsls r0, r5, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + lsls r0, r0, #0x16 +_080019A8: + lsrs r4, r0, #0x10 + movs r6, #1 + str r6, [sp] + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_08001578 + lsls r2, r0, #0x18 + lsrs r1, r2, #0x18 + adds r7, r1, #0 + cmp r1, #0xff + bne _080019D0 + ldr r0, _080019CC + b _080019FE + .align 2, 0 +_080019C8: .4byte gUnknown_30008F8 +_080019CC: .4byte 0x0000FFFF +_080019D0: + ldr r0, _08001A0C + lsrs r2, r2, #0x1d + lsls r2, r2, #2 + adds r2, 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, _08001A10 + ldr r0, [r0] + cmp r0, #1 + bne _080019FC + lsrs r1, r4, #5 + mov r0, r8 + lsrs r2, r0, #5 + adds r0, r5, #0 + movs r3, #1 + bl sub_080017D0 +_080019FC: + adds r0, r7, #0 +_080019FE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08001A0C: .4byte gUnknown_3000938 +_08001A10: .4byte gUnknown_3002FF4 + thumb_func_end sub_0800195C + + thumb_func_start sub_08001A14 +sub_08001A14: @ 0x08001A14 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x11 + lsrs r3, r3, #0x10 + movs r4, #2 + str r4, [sp] + bl sub_08001578 + lsls r2, r0, #0x18 + lsrs r3, r2, #0x18 + cmp r3, #0xff + beq _08001A54 + ldr r0, _08001A50 + lsrs r2, r2, #0x1d + lsls r2, r2, #2 + adds r2, r2, r0 + movs r0, #0x1f + ands r0, r3 + movs r1, #1 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + adds r0, r3, #0 + b _08001A56 + .align 2, 0 +_08001A50: .4byte gUnknown_3000938 +_08001A54: + ldr r0, _08001A60 +_08001A56: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08001A60: .4byte 0x0000FFFF + thumb_func_end sub_08001A14 + + thumb_func_start sub_08001A64 +sub_08001A64: @ 0x08001A64 + push {r4, r5, r6, r7, lr} + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08001AB0 + ldr r1, _08001AB4 + lsls r0, r4, #4 + adds r0, r0, r1 + ldrb r1, [r0, #1] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1c + lsls r1, r1, #5 + lsls r0, r5, #1 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0xa0 + lsls r0, r0, #0x13 + adds r1, r1, r0 + adds r0, r7, #0 + adds r2, r6, #0 + movs r3, #0 + bl sub_08000EF8 + lsls r3, r0, #0x18 + asrs r1, r3, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08001ABC +_08001AB0: + ldr r0, _08001AB8 + b _08001AE0 + .align 2, 0 +_08001AB4: .4byte gUnknown_30008F8 +_08001AB8: .4byte 0x0000FFFF +_08001ABC: + ldr r4, _08001AE8 + adds r0, r1, #0 + cmp r1, #0 + bge _08001AC6 + adds r0, #0x1f +_08001AC6: + asrs r0, r0, #5 + lsls r2, r0, #2 + adds r2, r2, r4 + lsls r0, r0, #5 + subs r0, r1, r0 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + lsrs r0, r3, #0x18 +_08001AE0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08001AE8: .4byte gUnknown_3000938 + thumb_func_end sub_08001A64 + + thumb_func_start sub_08001AEC +sub_08001AEC: @ 0x08001AEC + push {r4, r5, r6, r7, lr} + movs r5, #0 + movs r7, #1 + rsbs r7, r7, #0 +_08001AF4: + adds r0, r5, #0 + cmp r5, #0 + bge _08001AFC + adds r0, #0x1f +_08001AFC: + asrs r0, r0, #5 + lsls r2, r0, #0x18 + lsls r0, r0, #5 + subs r0, r5, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08001B30 + lsrs r2, r2, #0x16 + adds r4, r2, r1 + movs r6, #1 + lsls r6, r0 + ldr r0, [r4] + ands r0, r6 + cmp r0, #0 + beq _08001B3A + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + bl sub_08001034 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r7 + bne _08001B34 + movs r0, #1 + b _08001B42 + .align 2, 0 +_08001B30: .4byte gUnknown_3000938 +_08001B34: + ldr r0, [r4] + bics r0, r6 + str r0, [r4] +_08001B3A: + adds r5, #1 + cmp r5, #0x7f + ble _08001AF4 + movs r0, #0 +_08001B42: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08001AEC + + thumb_func_start sub_08001B48 +sub_08001B48: @ 0x08001B48 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08001600 + bl sub_080016B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08001B48 + + thumb_func_start sub_08001B5C +sub_08001B5C: @ 0x08001B5C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800167C + bl sub_080016B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08001B5C + + thumb_func_start sub_08001B70 +sub_08001B70: @ 0x08001B70 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + subs r0, r1, #1 + cmp r0, #6 + bhi _08001C2A + lsls r0, r0, #2 + ldr r1, _08001B90 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001B90: .4byte _08001B94 +_08001B94: @ jump table + .4byte _08001BB0 @ case 0 + .4byte _08001BC0 @ case 1 + .4byte _08001BD2 @ case 2 + .4byte _08001BE8 @ case 3 + .4byte _08001BFC @ case 4 + .4byte _08001C14 @ case 5 + .4byte _08001BF2 @ case 6 +_08001BB0: + movs r0, #0xff + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r4, #0 + adds r1, r3, #0 + b _08001C0A +_08001BC0: + movs r0, #0xff + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xff + adds r2, r3, #0 + b _08001C0C +_08001BD2: + movs r0, #0xff + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xff + movs r2, #0xff + bl sub_08001398 + b _08001C2A +_08001BE8: + str r3, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r0, [sp, #8] + b _08001C04 +_08001BF2: + movs r0, #0xff + str r0, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + b _08001C04 +_08001BFC: + movs r0, #0xff + str r0, [sp] + str r0, [sp, #4] + str r3, [sp, #8] +_08001C04: + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xff +_08001C0A: + movs r2, #0xff +_08001C0C: + movs r3, #0xff + bl sub_08001398 + b _08001C2A +_08001C14: + movs r0, #0xff + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xff + movs r2, #0xff + movs r3, #0xff + bl sub_08001398 +_08001C2A: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08001B70 + + thumb_func_start sub_08001C34 +sub_08001C34: @ 0x08001C34 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r1, #1 + cmp r0, #9 + bhi _08001D10 + lsls r0, r0, #2 + ldr r1, _08001C50 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08001C50: .4byte _08001C54 +_08001C54: @ jump table + .4byte _08001C7C @ case 0 + .4byte _08001C86 @ case 1 + .4byte _08001C90 @ case 2 + .4byte _08001C9A @ case 3 + .4byte _08001CAE @ case 4 + .4byte _08001CB8 @ case 5 + .4byte _08001CA4 @ case 6 + .4byte _08001CC2 @ case 7 + .4byte _08001CF0 @ case 8 + .4byte _08001CFC @ case 9 +_08001C7C: + adds r0, r4, #0 + movs r1, #2 + bl sub_080014C4 + b _08001CF6 +_08001C86: + adds r0, r4, #0 + movs r1, #3 + bl sub_080014C4 + b _08001CF6 +_08001C90: + adds r0, r4, #0 + movs r1, #4 + bl sub_080014C4 + b _08001CF6 +_08001C9A: + adds r0, r4, #0 + movs r1, #5 + bl sub_080014C4 + b _08001CF6 +_08001CA4: + adds r0, r4, #0 + movs r1, #6 + bl sub_080014C4 + b _08001CF6 +_08001CAE: + adds r0, r4, #0 + movs r1, #7 + bl sub_080014C4 + b _08001CF6 +_08001CB8: + adds r0, r4, #0 + movs r1, #8 + bl sub_080014C4 + b _08001CF6 +_08001CC2: + adds r0, r4, #0 + bl sub_08002A24 + cmp r0, #0 + beq _08001CD4 + cmp r0, #1 + beq _08001CE2 + movs r0, #0 + b _08001D12 +_08001CD4: + adds r0, r4, #0 + movs r1, #0 + bl sub_080028C8 + lsls r0, r0, #0x1b + lsrs r0, r0, #0x10 + b _08001D12 +_08001CE2: + adds r0, r4, #0 + movs r1, #0 + bl sub_08002938 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + b _08001D12 +_08001CF0: + adds r0, r4, #0 + bl sub_08002A24 +_08001CF6: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08001D12 +_08001CFC: + ldr r0, _08001D0C + lsls r1, r4, #4 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + b _08001D12 + .align 2, 0 +_08001D0C: .4byte gUnknown_30008F8 +_08001D10: + ldr r0, _08001D18 +_08001D12: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08001D18: .4byte 0x0000FFFF + thumb_func_end sub_08001C34 + + thumb_func_start sub_08001D1C +sub_08001D1C: @ 0x08001D1C + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08001D40 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08001D46 +_08001D40: + movs r0, #1 + rsbs r0, r0, #0 + b _08001E4C +_08001D46: + cmp r5, #1 + beq _08001D64 + cmp r5, #1 + ble _08001D52 + cmp r5, #2 + beq _08001D78 +_08001D52: + ldr r0, _08001D60 + lsls r1, r4, #4 + adds r0, #8 + adds r0, r1, r0 + str r6, [r0] + adds r5, r1, #0 + b _08001D88 + .align 2, 0 +_08001D60: .4byte gUnknown_30008F8 +_08001D64: + ldr r0, _08001D74 + lsls r2, r4, #4 + adds r0, #8 + adds r0, r2, r0 + ldr r1, [r0] + adds r1, r1, r6 + b _08001D84 + .align 2, 0 +_08001D74: .4byte gUnknown_30008F8 +_08001D78: + ldr r0, _08001DA0 + lsls r2, r4, #4 + adds r0, #8 + adds r0, r2, r0 + ldr r1, [r0] + subs r1, r1, r6 +_08001D84: + str r1, [r0] + adds r5, r2, #0 +_08001D88: + bl sub_0800133C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #1 + beq _08001DC4 + cmp r4, #1 + bgt _08001DA4 + cmp r4, #0 + beq _08001DAE + b _08001E44 + .align 2, 0 +_08001DA0: .4byte gUnknown_30008F8 +_08001DA4: + cmp r4, #2 + beq _08001DD8 + cmp r4, #3 + beq _08001E10 + b _08001E44 +_08001DAE: + ldr r0, _08001DC0 + ldr r0, [r0, #8] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x10 + bl sub_08001144 + b _08001E44 + .align 2, 0 +_08001DC0: .4byte gUnknown_30008F8 +_08001DC4: + ldr r0, _08001DD4 + ldr r0, [r0, #0x18] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x14 + bl sub_08001144 + b _08001E44 + .align 2, 0 +_08001DD4: .4byte gUnknown_30008F8 +_08001DD8: + cmp r0, #0 + bne _08001DF0 + ldr r0, _08001DEC + ldr r0, [r0, #0x28] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x18 + bl sub_08001144 + b _08001E44 + .align 2, 0 +_08001DEC: .4byte gUnknown_30008F8 +_08001DF0: + ldr r0, _08001E0C + ldr r0, [r0, #0x28] + lsrs r1, r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x2a + bl sub_08001144 + movs r0, #0x28 + adds r1, r4, #0 + bl sub_08001144 + b _08001E44 + .align 2, 0 +_08001E0C: .4byte gUnknown_30008F8 +_08001E10: + cmp r0, #0 + bne _08001E28 + ldr r0, _08001E24 + ldr r0, [r0, #0x38] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x1c + bl sub_08001144 + b _08001E44 + .align 2, 0 +_08001E24: .4byte gUnknown_30008F8 +_08001E28: + cmp r0, #2 + bne _08001E44 + ldr r0, _08001E54 + ldr r0, [r0, #0x38] + lsrs r1, r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x3a + bl sub_08001144 + movs r0, #0x38 + adds r1, r4, #0 + bl sub_08001144 +_08001E44: + ldr r0, _08001E54 + adds r0, #8 + adds r0, r5, r0 + ldr r0, [r0] +_08001E4C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08001E54: .4byte gUnknown_30008F8 + thumb_func_end sub_08001D1C + + thumb_func_start sub_08001E58 +sub_08001E58: @ 0x08001E58 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08001E88 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08001E88 + ldr r0, _08001E84 + lsls r1, r4, #4 + adds r0, #8 + adds r1, r1, r0 + ldr r0, [r1] + b _08001E8C + .align 2, 0 +_08001E84: .4byte gUnknown_30008F8 +_08001E88: + movs r0, #1 + rsbs r0, r0, #0 +_08001E8C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08001E58 + + thumb_func_start sub_08001E94 +sub_08001E94: @ 0x08001E94 + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08001EB8 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08001EBE +_08001EB8: + movs r0, #1 + rsbs r0, r0, #0 + b _08001FC4 +_08001EBE: + cmp r5, #1 + beq _08001EDC + cmp r5, #1 + ble _08001ECA + cmp r5, #2 + beq _08001EF0 +_08001ECA: + ldr r0, _08001ED8 + lsls r1, r4, #4 + adds r0, #0xc + adds r0, r1, r0 + str r6, [r0] + adds r5, r1, #0 + b _08001F00 + .align 2, 0 +_08001ED8: .4byte gUnknown_30008F8 +_08001EDC: + ldr r0, _08001EEC + lsls r2, r4, #4 + adds r0, #0xc + adds r0, r2, r0 + ldr r1, [r0] + adds r1, r1, r6 + b _08001EFC + .align 2, 0 +_08001EEC: .4byte gUnknown_30008F8 +_08001EF0: + ldr r0, _08001F18 + lsls r2, r4, #4 + adds r0, #0xc + adds r0, r2, r0 + ldr r1, [r0] + subs r1, r1, r6 +_08001EFC: + str r1, [r0] + adds r5, r2, #0 +_08001F00: + bl sub_0800133C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #1 + beq _08001F3C + cmp r4, #1 + bgt _08001F1C + cmp r4, #0 + beq _08001F26 + b _08001FBC + .align 2, 0 +_08001F18: .4byte gUnknown_30008F8 +_08001F1C: + cmp r4, #2 + beq _08001F50 + cmp r4, #3 + beq _08001F88 + b _08001FBC +_08001F26: + ldr r0, _08001F38 + ldr r0, [r0, #0xc] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x12 + bl sub_08001144 + b _08001FBC + .align 2, 0 +_08001F38: .4byte gUnknown_30008F8 +_08001F3C: + ldr r0, _08001F4C + ldr r0, [r0, #0x1c] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x16 + bl sub_08001144 + b _08001FBC + .align 2, 0 +_08001F4C: .4byte gUnknown_30008F8 +_08001F50: + cmp r0, #0 + bne _08001F68 + ldr r0, _08001F64 + ldr r0, [r0, #0x2c] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x1a + bl sub_08001144 + b _08001FBC + .align 2, 0 +_08001F64: .4byte gUnknown_30008F8 +_08001F68: + ldr r0, _08001F84 + ldr r0, [r0, #0x2c] + lsrs r1, r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x2e + bl sub_08001144 + movs r0, #0x2c + adds r1, r4, #0 + bl sub_08001144 + b _08001FBC + .align 2, 0 +_08001F84: .4byte gUnknown_30008F8 +_08001F88: + cmp r0, #0 + bne _08001FA0 + ldr r0, _08001F9C + ldr r0, [r0, #0x3c] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + movs r0, #0x1e + bl sub_08001144 + b _08001FBC + .align 2, 0 +_08001F9C: .4byte gUnknown_30008F8 +_08001FA0: + cmp r0, #2 + bne _08001FBC + ldr r0, _08001FCC + ldr r0, [r0, #0x3c] + lsrs r1, r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x3e + bl sub_08001144 + movs r0, #0x3c + adds r1, r4, #0 + bl sub_08001144 +_08001FBC: + ldr r0, _08001FCC + adds r0, #0xc + adds r0, r5, r0 + ldr r0, [r0] +_08001FC4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08001FCC: .4byte gUnknown_30008F8 + thumb_func_end sub_08001E94 + + thumb_func_start sub_08001FD0 +sub_08001FD0: @ 0x08001FD0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08002000 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08002000 + ldr r0, _08001FFC + lsls r1, r4, #4 + adds r0, #0xc + adds r1, r1, r0 + ldr r0, [r1] + b _08002004 + .align 2, 0 +_08001FFC: .4byte gUnknown_30008F8 +_08002000: + movs r0, #1 + rsbs r0, r0, #0 +_08002004: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08001FD0 + + thumb_func_start sub_0800200C +sub_0800200C: @ 0x0800200C + push {r4, r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + str r6, [sp, #8] + str r7, [sp, #0xc] + bl sub_080016F0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0800200C + + thumb_func_start sub_0800204C +sub_0800204C: @ 0x0800204C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r0, #0x4c + bl sub_080011D0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r1, #0xf + movs r3, #0xf + ands r3, r5 + lsrs r2, r0, #0x14 + ands r2, r1 + movs r0, #0xff + lsls r0, r0, #8 + ands r5, r0 + cmp r6, #6 + bhi _080020A0 + lsls r0, r6, #2 + ldr r1, _08002080 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08002080: .4byte _08002084 +_08002084: @ jump table + .4byte _080020A0 @ case 0 + .4byte _080020A8 @ case 1 + .4byte _080020AE @ case 2 + .4byte _080020C0 @ case 3 + .4byte _080020D6 @ case 4 + .4byte _080020DC @ case 5 + .4byte _080020EE @ case 6 +_080020A0: + movs r3, #0xf + ands r3, r4 + lsrs r2, r4, #4 + b _08002102 +_080020A8: + movs r3, #0xf + ands r3, r4 + b _08002102 +_080020AE: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r4 + cmp r0, #0xf + ble _080020BC + movs r3, #0xf + b _08002102 +_080020BC: + adds r0, r3, r4 + b _080020D0 +_080020C0: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r4 + cmp r0, #0 + bge _080020CE + movs r3, #0 + b _08002102 +_080020CE: + subs r0, r3, r4 +_080020D0: + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + b _08002102 +_080020D6: + movs r2, #0xf + ands r2, r4 + b _08002102 +_080020DC: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r4 + cmp r0, #0xf + ble _080020EA + movs r2, #0xf + b _08002102 +_080020EA: + adds r0, r2, r4 + b _080020FE +_080020EE: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r4 + cmp r0, #0 + bge _080020FC + movs r2, #0 + b _08002102 +_080020FC: + subs r0, r2, r4 +_080020FE: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08002102: + lsls r0, r2, #0x10 + asrs r0, r0, #0xc + movs r1, #0xf0 + ands r0, r1 + orrs r5, r0 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + orrs r5, r0 + lsls r0, r5, #0x10 + lsrs r5, r0, #0x10 + movs r0, #0x4c + adds r1, r5, #0 + bl sub_08001144 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0800204C + + thumb_func_start sub_0800212C +sub_0800212C: @ 0x0800212C + push {r4, r5, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08002156 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08002156 + ldr r0, _0800215C + lsls r1, r4, #4 + adds r0, #4 + adds r1, r1, r0 + str r5, [r1] +_08002156: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800215C: .4byte gUnknown_30008F8 + thumb_func_end sub_0800212C + + thumb_func_start sub_08002160 +sub_08002160: @ 0x08002160 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08002A78 + adds r5, r0, #0 + cmp r5, #0 + bne _0800218A + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800218A + ldr r0, _08002190 + lsls r1, r4, #4 + adds r0, #4 + adds r1, r1, r0 + str r5, [r1] +_0800218A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08002190: .4byte gUnknown_30008F8 + thumb_func_end sub_08002160 + + thumb_func_start sub_08002194 +sub_08002194: @ 0x08002194 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_08002A78 + cmp r0, #0 + bne _080021C4 + adds r0, r4, #0 + movs r1, #1 + bl sub_080014C4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080021C4 + ldr r0, _080021C0 + lsls r1, r4, #4 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + b _080021C6 + .align 2, 0 +_080021C0: .4byte gUnknown_30008F8 +_080021C4: + movs r0, #0 +_080021C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08002194 + + thumb_func_start sub_080021CC +sub_080021CC: @ 0x080021CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov sb, r4 + lsls r7, r2, #0x10 + lsrs r6, r7, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + mov r8, r5 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _08002234 + adds r0, r4, #0 + bl sub_08002A8C + cmp r0, #0 + bne _08002234 + cmp r6, #0 + beq _0800221C + ldr r0, _08002218 + lsls r1, r4, #4 + adds r0, #4 + adds r1, r1, r0 + lsls r0, r5, #1 + ldr r1, [r1] + adds r1, r1, r0 + lsrs r2, r7, #0x11 + mov r0, sl + bl CpuSet + b _08002234 + .align 2, 0 +_08002218: .4byte gUnknown_30008F8 +_0800221C: + ldr r0, _08002244 + mov r2, sb + lsls r1, r2, #4 + adds r0, #4 + adds r1, r1, r0 + mov r2, r8 + lsls r0, r2, #1 + ldr r1, [r1] + adds r1, r1, r0 + mov r0, sl + bl LZ77UnCompWram +_08002234: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08002244: .4byte gUnknown_30008F8 + thumb_func_end sub_080021CC + + thumb_func_start sub_08002248 +sub_08002248: @ 0x08002248 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08002A78 + cmp r0, #0 + bne _080022A4 + adds r0, r4, #0 + bl sub_08002A8C + cmp r0, #0 + bne _080022A4 + adds r0, r4, #0 + bl sub_08002A24 + cmp r0, #0 + beq _08002276 + cmp r0, #1 + beq _08002282 + movs r2, #0 + b _0800228E +_08002276: + adds r0, r4, #0 + movs r1, #0 + bl sub_080028C8 + lsls r0, r0, #0x1b + b _0800228C +_08002282: + adds r0, r4, #0 + movs r1, #0 + bl sub_08002938 + lsls r0, r0, #0x18 +_0800228C: + lsrs r2, r0, #0x10 +_0800228E: + ldr r0, _080022AC + lsls r1, r4, #4 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r3, #0 + bl sub_08001578 +_080022A4: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080022AC: .4byte gUnknown_30008F8 + thumb_func_end sub_08002248 + + thumb_func_start sub_080022B0 +sub_080022B0: @ 0x080022B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r1 + ldr r1, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r4, r4, #0x18 + lsrs r6, r4, #0x18 + adds r0, r5, #0 + bl sub_08002A78 + cmp r0, #0 + bne _080023A0 + adds r0, r5, #0 + bl sub_08002A8C + cmp r0, #0 + bne _080023A0 + adds r0, r5, #0 + bl sub_08002A24 + cmp r0, #0 + beq _080022FE + cmp r0, #1 + beq _0800234C + b _080023A0 +_080022FE: + mov r4, r8 + adds r3, r7, #0 + adds r0, r3, r6 + cmp r3, r0 + bge _080023A0 + mov ip, r0 + lsls r1, r5, #4 + ldr r0, _08002348 + adds r1, r1, r0 + mov r8, r1 +_08002312: + mov r2, sl + mov r1, sb + adds r0, r2, r1 + adds r7, r3, #1 + cmp r2, r0 + bge _0800233C + mov r1, r8 + ldr r6, [r1] + lsls r5, r3, #5 + adds r3, r0, #0 +_08002326: + adds r0, r5, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r4] + strh r1, [r0] + adds r4, #2 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + blt _08002326 +_0800233C: + lsls r0, r7, #0x10 + lsrs r3, r0, #0x10 + cmp r3, ip + blt _08002312 + b _080023A0 + .align 2, 0 +_08002348: .4byte gUnknown_30008FC +_0800234C: + mov r4, r8 + adds r0, r5, #0 + movs r1, #1 + bl sub_08002938 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + adds r3, r7, #0 + adds r0, r3, r6 + cmp r3, r0 + bge _080023A0 + mov ip, r0 + lsls r5, r5, #4 + mov r8, r5 +_0800236A: + mov r2, sl + mov r1, sb + adds r0, r2, r1 + adds r7, r3, #1 + cmp r2, r0 + bge _08002398 + ldr r6, _080023B0 + add r6, r8 + ldr r1, [sp] + adds r5, r3, #0 + muls r5, r1, r5 + adds r3, r0, #0 +_08002382: + ldr r1, [r6] + adds r0, r5, r2 + adds r1, r1, r0 + ldrb r0, [r4] + strb r0, [r1] + adds r4, #1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + blt _08002382 +_08002398: + lsls r0, r7, #0x10 + lsrs r3, r0, #0x10 + cmp r3, ip + blt _0800236A +_080023A0: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080023B0: .4byte gUnknown_30008FC + thumb_func_end sub_080022B0 + + thumb_func_start sub_080023B4 +sub_080023B4: @ 0x080023B4 + push {r4, r5, r6, lr} + sub sp, #0x24 + ldr r4, [sp, #0x34] + ldr r5, [sp, #0x38] + ldr r6, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r2, [sp, #8] + 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_080023F8 + add sp, #0x24 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080023B4 + + thumb_func_start sub_080023F8 +sub_080023F8: @ 0x080023F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + str r1, [sp, #8] + 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 sb, r7 + ldr r7, [sp, #0x7c] + mov sl, r7 + ldr r7, [sp, #0x80] + mov ip, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0xc] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x10] + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x14] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x18] + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x1c] + mov r2, sl + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x20] + mov r0, ip + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x24] + ldr r0, [sp, #4] + bl sub_08002A78 + cmp r0, #0 + beq _0800246E + b _080025CA +_0800246E: + ldr r0, [sp, #4] + bl sub_08002A8C + cmp r0, #0 + beq _0800247A + b _080025CA +_0800247A: + ldr r0, [sp, #4] + movs r1, #4 + bl sub_080014C4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x30] + ldr r0, [sp, #4] + movs r1, #1 + bl sub_080028C8 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [sp, #4] + movs r1, #2 + bl sub_080028C8 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #4] + bl sub_08002A24 + cmp r0, #0 + beq _080024B4 + cmp r0, #1 + beq _08002550 + b _080025CA +_080024B4: + ldr r1, [sp, #0x10] + adds r0, r1, #0 + muls r0, r7, r0 + ldr r2, [sp, #0xc] + adds r0, r0, r2 + lsls r0, r0, #1 + ldr r1, [sp, #8] + adds r6, r1, r0 + adds r0, r5, r4 + cmp r5, r0 + blt _080024CC + b _080025CA +_080024CC: + ldr r2, [sp, #0x18] + subs r2, r7, r2 + str r2, [sp, #0x34] + str r0, [sp, #0x38] +_080024D4: + ldr r4, [sp, #0x14] + ldr r7, [sp, #0x18] + adds r0, r4, r7 + adds r1, r5, #1 + str r1, [sp, #0x3c] + cmp r4, r0 + bge _08002536 + ldr r2, [sp, #4] + lsls r0, r2, #4 + ldr r1, _0800254C + adds r0, r0, r1 + mov sl, r0 + ldr r7, [sp, #0x20] + lsls r7, r7, #0x10 + mov sb, r7 + ldr r1, [sp, #0x24] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 +_080024FA: + 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_08002990 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + mov r7, sl + ldr r1, [r7] + adds r1, r1, r0 + mov r0, r8 + str r0, [sp] + adds r0, r6, #0 + ldr r2, [sp, #0x1c] + mov r7, sb + asrs r3, r7, #0x10 + bl sub_080029C8 + adds r6, #2 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + adds r0, r1, r2 + cmp r4, r0 + blt _080024FA +_08002536: + ldr r5, [sp, #0x34] + lsls r0, r5, #1 + adds r6, r6, r0 + ldr r7, [sp, #0x3c] + lsls r0, r7, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [sp, #0x38] + cmp r5, r0 + blt _080024D4 + b _080025CA + .align 2, 0 +_0800254C: .4byte gUnknown_30008FC +_08002550: + ldr r1, [sp, #0x10] + adds r0, r1, #0 + muls r0, r7, r0 + ldr r2, [sp, #0xc] + adds r0, r0, r2 + ldr r1, [sp, #8] + adds r6, r1, r0 + ldr r0, [sp, #4] + movs r1, #1 + bl sub_08002938 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + adds r0, r5, r4 + cmp r5, r0 + bge _080025CA + ldr r2, [sp, #0x18] + subs r2, r7, r2 + str r2, [sp, #0x34] + str r0, [sp, #0x38] + ldr r7, _080025DC + mov sl, r7 + ldr r0, [sp, #4] + lsls r0, r0, #4 + mov r8, r0 +_08002584: + ldr r4, [sp, #0x14] + ldr r1, [sp, #0x18] + adds r0, r4, r1 + adds r2, r5, #1 + str r2, [sp, #0x3c] + cmp r4, r0 + bge _080025BA + mov r3, r8 + add r3, sl + mov r7, sb + muls r7, r5, r7 + mov ip, r7 + adds r2, r0, #0 +_0800259E: + ldr r1, [r3] + mov r5, ip + adds r0, r5, r4 + adds r1, r1, r0 + ldrb r0, [r6] + ldr r7, [sp, #0x20] + adds r0, r0, r7 + strb r0, [r1] + adds r6, #1 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r2 + blt _0800259E +_080025BA: + ldr r0, [sp, #0x34] + adds r6, r6, r0 + ldr r1, [sp, #0x3c] + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + ldr r2, [sp, #0x38] + cmp r5, r2 + blt _08002584 +_080025CA: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080025DC: .4byte gUnknown_30008FC + thumb_func_end sub_080023F8 + + thumb_func_start sub_080025E0 +sub_080025E0: @ 0x080025E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sb, r4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_08002A78 + cmp r0, #0 + bne _080026CC + adds r0, r6, #0 + bl sub_08002A8C + cmp r0, #0 + bne _080026CC + adds r0, r6, #0 + bl sub_08002A24 + cmp r0, #0 + beq _08002632 + cmp r0, #1 + beq _0800267C + b _080026CC +_08002632: + adds r3, r7, #0 + adds r5, r3, r5 + cmp r3, r5 + bge _080026CC + adds r7, r5, #0 + lsls r1, r6, #4 + ldr r0, _08002678 + adds r1, r1, r0 + mov ip, r1 +_08002644: + mov r2, sl + mov r1, sb + adds r0, r2, r1 + adds r6, r3, #1 + cmp r2, r0 + bge _0800266C + mov r5, ip + ldr r4, [r5] + lsls r3, r3, #5 + adds r1, r0, #0 +_08002658: + adds r0, r3, r2 + lsls r0, r0, #1 + adds r0, r0, r4 + mov r5, r8 + strh r5, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r1 + blt _08002658 +_0800266C: + lsls r0, r6, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r7 + blt _08002644 + b _080026CC + .align 2, 0 +_08002678: .4byte gUnknown_30008FC +_0800267C: + adds r0, r6, #0 + movs r1, #1 + bl sub_08002938 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + adds r3, r7, #0 + adds r5, r3, r5 + cmp r3, r5 + bge _080026CC + adds r7, r5, #0 + lsls r6, r6, #4 + mov ip, r6 +_08002698: + mov r2, sl + mov r1, sb + adds r0, r2, r1 + adds r6, r3, #1 + cmp r2, r0 + bge _080026C4 + ldr r5, _080026DC + add r5, ip + ldr r1, [sp] + adds r4, r3, #0 + muls r4, r1, r4 + adds r3, r0, #0 +_080026B0: + ldr r0, [r5] + adds r1, r4, r2 + adds r0, r0, r1 + mov r1, r8 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + blt _080026B0 +_080026C4: + lsls r0, r6, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r7 + blt _08002698 +_080026CC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080026DC: .4byte gUnknown_30008FC + thumb_func_end sub_080025E0 + + thumb_func_start sub_080026E0 +sub_080026E0: @ 0x080026E0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r6, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r4, #0 + str r4, [sp, #0xc] + bl sub_0800271C + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080026E0 + + thumb_func_start sub_0800271C +sub_0800271C: @ 0x0800271C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + add r0, sp, #4 + strh r1, [r0] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #8] + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + lsls r5, r5, #0x18 + lsrs r4, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0xc] + mov r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x10] + mov r0, sb + bl sub_08002A78 + cmp r0, #0 + beq _0800276A + b _080028B0 +_0800276A: + mov r0, sb + bl sub_08002A8C + cmp r0, #0 + beq _08002776 + b _080028B0 +_08002776: + mov r0, sb + movs r1, #4 + bl sub_080014C4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x1c] + mov r0, sb + movs r1, #1 + bl sub_080028C8 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + str r0, [sp, #0x14] + mov r0, sb + movs r1, #2 + bl sub_080028C8 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] + mov r0, sb + bl sub_08002A24 + cmp r0, #0 + beq _080027B0 + cmp r0, #1 + beq _08002838 + b _080028B0 +_080027B0: + adds r5, r7, #0 + adds r0, r5, r4 + cmp r5, r0 + bge _080028B0 + str r0, [sp, #0x24] + add r7, sp, #4 +_080027BC: + ldr r4, [sp, #8] + mov r1, sl + adds r0, r4, r1 + adds r2, r5, #1 + mov r8, r2 + cmp r4, r0 + bge _08002820 + mov r3, sb + lsls r1, r3, #4 + ldr r0, _08002830 + adds r6, r1, r0 +_080027D2: + 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_08002990 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + ldr r1, [r6] + adds r1, r1, r0 + movs r0, #0 + str r0, [sp] + add r0, sp, #4 + ldr r2, [sp, #0xc] + movs r3, #0 + bl sub_080029C8 + ldrh r0, [r7] + movs r2, #0xfc + lsls r2, r2, #8 + adds r1, r2, #0 + adds r2, r0, #0 + ands r2, r1 + ldr r3, [sp, #0x10] + adds r0, r0, r3 + ldr r3, _08002834 + adds r1, r3, #0 + ands r0, r1 + adds r2, r2, r0 + strh r2, [r7] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [sp, #8] + add r0, sl + cmp r4, r0 + blt _080027D2 +_08002820: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + ldr r2, [sp, #0x24] + cmp r5, r2 + blt _080027BC + b _080028B0 + .align 2, 0 +_08002830: .4byte gUnknown_30008FC +_08002834: .4byte 0x000003FF +_08002838: + mov r0, sb + movs r1, #1 + bl sub_08002938 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x20] + adds r5, r7, #0 + adds r0, r5, r4 + cmp r5, r0 + bge _080028B0 + str r0, [sp, #0x24] + mov r3, sb + lsls r3, r3, #4 + mov ip, r3 +_08002856: + ldr r4, [sp, #8] + mov r7, sl + adds r0, r4, r7 + adds r1, r5, #1 + mov r8, r1 + cmp r4, r0 + bge _080028A4 + ldr r2, _080028C0 + add r2, ip + str r2, [sp, #0x28] + ldr r7, [sp, #0x20] + adds r3, r5, #0 + muls r3, r7, r3 + add r2, sp, #4 + movs r1, #0xfc + lsls r1, r1, #8 + mov sb, r1 + ldr r7, _080028C4 + adds r5, r7, #0 + adds r6, r0, #0 +_0800287E: + ldr r0, [sp, #0x28] + ldr r1, [r0] + adds r0, r3, r4 + adds r1, r1, r0 + ldrh r0, [r2] + strb r0, [r1] + ldrh r0, [r2] + mov r1, sb + ands r1, r0 + ldr r7, [sp, #0x10] + adds r0, r0, r7 + ands r0, r5 + adds r1, r1, r0 + strh r1, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r6 + blt _0800287E +_080028A4: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + ldr r2, [sp, #0x24] + cmp r5, r2 + blt _08002856 +_080028B0: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080028C0: .4byte gUnknown_30008FC +_080028C4: .4byte 0x000003FF + thumb_func_end sub_0800271C + + thumb_func_start sub_080028C8 +sub_080028C8: @ 0x080028C8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r5, r4, #0 + movs r1, #4 + bl sub_080014C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #1 + beq _08002908 + cmp r4, #1 + bgt _080028EC + cmp r4, #0 + beq _080028F2 + b _0800292E +_080028EC: + cmp r5, #2 + beq _0800291A + b _0800292E +_080028F2: + cmp r0, #2 + bgt _08002900 + cmp r0, #1 + bge _0800292A +_080028FA: + cmp r0, #0 + beq _08002922 + b _0800292E +_08002900: + cmp r0, #3 + bne _0800292E + movs r0, #4 + b _08002930 +_08002908: + cmp r0, #1 + beq _0800292A + cmp r0, #1 + ble _080028FA + cmp r0, #2 + beq _08002922 + cmp r0, #3 + bne _0800292E + b _0800292A +_0800291A: + cmp r0, #0 + blt _0800292E + cmp r0, #1 + bgt _08002926 +_08002922: + movs r0, #1 + b _08002930 +_08002926: + cmp r0, #3 + bgt _0800292E +_0800292A: + movs r0, #2 + b _08002930 +_0800292E: + movs r0, #0 +_08002930: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080028C8 + + thumb_func_start sub_08002938 +sub_08002938: @ 0x08002938 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r1, #4 + bl sub_080014C4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r1, #0 + cmp r4, #0 + beq _08002960 + cmp r4, #0 + blt _08002988 + cmp r4, #2 + bgt _08002988 + movs r0, #0x10 + lsls r0, r1 + b _0800298A +_08002960: + cmp r1, #1 + beq _0800297C + cmp r1, #1 + bgt _0800296E + cmp r1, #0 + beq _08002978 + b _08002988 +_0800296E: + cmp r0, #2 + beq _08002980 + cmp r0, #3 + beq _08002984 + b _08002988 +_08002978: + movs r0, #1 + b _0800298A +_0800297C: + movs r0, #4 + b _0800298A +_08002980: + movs r0, #0x10 + b _0800298A +_08002984: + movs r0, #0x40 + b _0800298A +_08002988: + movs r0, #0 +_0800298A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08002938 + + thumb_func_start sub_08002990 +sub_08002990: @ 0x08002990 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [sp, #8] + subs r3, #1 + ands r4, r3 + subs r0, #1 + ands r1, r0 + cmp r2, #1 + beq _080029B4 + cmp r2, #1 + ble _080029BC + cmp r2, #2 + beq _080029BC + cmp r2, #3 + bne _080029BC + cmp r1, #0x1f + ble _080029B4 + adds r1, #0x20 +_080029B4: + cmp r4, #0x1f + ble _080029BC + subs r4, #0x20 + adds r1, #0x20 +_080029BC: + lsls r0, r1, #5 + adds r0, r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08002990 + + thumb_func_start sub_080029C8 +sub_080029C8: @ 0x080029C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, [sp, #0x10] + cmp r2, #0x10 + beq _080029F0 + cmp r2, #0x10 + bgt _08002A10 + cmp r2, #0 + blt _08002A10 + ldrh r0, [r4] + adds r0, r0, r3 + ldr r3, _080029EC + adds r1, r3, #0 + ands r0, r1 + adds r1, r2, r5 + lsls r1, r1, #0xc + b _08002A16 + .align 2, 0 +_080029EC: .4byte 0x00000FFF +_080029F0: + ldrh r1, [r6] + movs r0, #0xfc + lsls r0, r0, #8 + ands r1, r0 + lsls r2, r5, #0xc + adds r2, r1, r2 + ldrh r0, [r4] + adds r0, r0, r3 + ldr r3, _08002A0C + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + b _08002A18 + .align 2, 0 +_08002A0C: .4byte 0x000003FF +_08002A10: + ldrh r0, [r4] + adds r0, r0, r3 + lsls r1, r5, #0xc +_08002A16: + adds r0, r0, r1 +_08002A18: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + strh r1, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080029C8 + + thumb_func_start sub_08002A24 +sub_08002A24: @ 0x08002A24 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_0800133C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #2 + beq _08002A52 + cmp r4, #2 + ble _08002A42 + cmp r4, #3 + beq _08002A62 + b _08002A6A +_08002A42: + cmp r5, #0 + blt _08002A6A + cmp r0, #1 + bgt _08002A6A + cmp r0, #0 + blt _08002A6A +_08002A4E: + movs r0, #0 + b _08002A6C +_08002A52: + cmp r0, #0 + beq _08002A4E + cmp r0, #0 + blt _08002A6A + cmp r0, #2 + bgt _08002A6A +_08002A5E: + movs r0, #1 + b _08002A6C +_08002A62: + cmp r0, #0 + beq _08002A4E + cmp r0, #2 + beq _08002A5E +_08002A6A: + ldr r0, _08002A74 +_08002A6C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08002A74: .4byte 0x0000FFFF + thumb_func_end sub_08002A24 + + thumb_func_start sub_08002A78 +sub_08002A78: @ 0x08002A78 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _08002A86 + movs r0, #0 + b _08002A88 +_08002A86: + movs r0, #1 +_08002A88: + pop {r1} + bx r1 + thumb_func_end sub_08002A78 + + thumb_func_start sub_08002A8C +sub_08002A8C: @ 0x08002A8C + push {lr} + lsls r0, r0, #0x18 + ldr r1, _08002AA8 + lsrs r0, r0, #0x14 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08002AAC + cmp r1, r0 + bhi _08002AB0 + cmp r1, #0 + beq _08002AB0 + movs r0, #0 + b _08002AB2 + .align 2, 0 +_08002AA8: .4byte gUnknown_30008F8 +_08002AAC: .4byte 0x03008000 +_08002AB0: + movs r0, #1 +_08002AB2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08002A8C + + thumb_func_start sub_08002AB8 +sub_08002AB8: @ 0x08002AB8 + push {r4, r5, r6, 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, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + str r7, [sp, #0xc] + movs r4, #0xff + str r4, [sp, #0x10] + bl sub_08002AFC + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08002AB8 + + thumb_func_start sub_08002AFC +sub_08002AFC: @ 0x08002AFC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp, #0x4c] + ldr r1, [sp, #0x50] + ldr r4, [sp, #0x54] + ldr r5, [sp, #0x58] + ldr r6, [sp, #0x5c] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #8] + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x10] + ldr r0, [sp, #4] + ldrh r3, [r0, #4] + ldr r1, [sp, #0xc] + subs r0, r3, r1 + adds r2, r2, r4 + mov r8, r2 + cmp r0, r4 + bge _08002B50 + ldr r2, [sp, #8] + adds r0, r0, r2 + mov r8, r0 +_08002B50: + ldr r4, [sp, #4] + ldrh r0, [r4, #6] + mov r1, sb + subs r0, r0, r1 + adds r2, r5, r7 + str r2, [sp, #0x14] + cmp r0, r5 + bge _08002B64 + adds r0, r0, r7 + str r0, [sp, #0x14] +_08002B64: + ldr r4, [sp] + ldrh r1, [r4, #4] + movs r2, #7 + adds r0, r1, #0 + ands r0, r2 + adds r1, r1, r0 + asrs r1, r1, #3 + str r1, [sp, #0x18] + adds r0, r3, #0 + ands r0, r2 + adds r0, r3, r0 + asrs r0, r0, #3 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r0, #0xff + bne _08002C22 + adds r3, r7, #0 + mov r1, sb + ldr r2, [sp, #0x14] + cmp r3, r2 + blt _08002B90 + b _08002CCA +_08002B90: + ldr r5, [sp, #8] + ldr r6, [sp, #0xc] + adds r4, r3, #1 + str r4, [sp, #0x24] + adds r0, r1, #1 + str r0, [sp, #0x28] + cmp r5, r8 + bge _08002C16 + movs r7, #3 + asrs r0, r3, #3 + ldr r2, [sp, #0x18] + muls r0, r2, r0 + lsls r0, r0, #5 + mov sl, r0 + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1b + mov sb, r0 + asrs r0, r1, #3 + ldr r4, [sp, #0x1c] + muls r0, r4, r0 + lsls r0, r0, #5 + mov ip, r0 + lsls r0, r1, #0x1d + lsrs r3, r0, #0x1b +_08002BC0: + asrs r0, r5, #1 + ands r0, r7 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r1, r0 + asrs r0, r5, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, sl + mov r4, sb + adds r2, r1, r4 + asrs r0, r6, #1 + ands r0, r7 + ldr r4, [sp, #4] + ldr r1, [r4] + adds r1, r1, r0 + asrs r0, r6, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r3 + ldrb r2, [r2] + adds r0, r5, #0 + movs r1, #1 + ands r0, r1 + lsls r0, 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, #1 + adds r6, #1 + cmp r5, r8 + blt _08002BC0 +_08002C16: + ldr r3, [sp, #0x24] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x14] + cmp r3, r2 + blt _08002B90 + b _08002CCA +_08002C22: + adds r3, r7, #0 + mov r1, sb + ldr r4, [sp, #0x14] + cmp r3, r4 + bge _08002CCA +_08002C2C: + ldr r5, [sp, #8] + ldr r6, [sp, #0xc] + adds r0, r3, #1 + str r0, [sp, #0x24] + adds r2, r1, #1 + str r2, [sp, #0x28] + cmp r5, r8 + bge _08002CC0 + movs r4, #3 + mov sb, r4 + asrs r0, r3, #3 + ldr r2, [sp, #0x18] + muls r0, r2, r0 + lsls r0, r0, #5 + str r0, [sp, #0x20] + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1b + mov sl, r0 + movs r3, #1 + asrs r0, r1, #3 + ldr r4, [sp, #0x1c] + muls r0, r4, r0 + lsls r0, r0, #5 + mov ip, r0 + lsls r0, r1, #0x1d + lsrs r7, r0, #0x1b +_08002C60: + asrs r0, r5, #1 + mov r1, sb + ands r0, r1 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r1, r0 + asrs r0, r5, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r4, [sp, #0x20] + adds r1, r1, r4 + mov r0, sl + adds r2, r1, r0 + asrs r0, r6, #1 + mov r1, sb + ands r0, r1 + ldr r4, [sp, #4] + ldr r1, [r4] + adds r1, r1, r0 + asrs r0, r6, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r7 + ldrb r2, [r2] + adds r0, r5, #0 + ands r0, r3 + lsls r0, r0, #2 + asrs r2, r0 + movs r0, #0xf + ands r2, r0 + ldr r0, [sp, #0x10] + cmp r2, r0 + beq _08002CB8 + 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] +_08002CB8: + adds r5, #1 + adds r6, #1 + cmp r5, r8 + blt _08002C60 +_08002CC0: + ldr r3, [sp, #0x24] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x14] + cmp r3, r2 + blt _08002C2C +_08002CCA: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08002AFC + + thumb_func_start sub_08002CDC +sub_08002CDC: @ 0x08002CDC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r0 + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r5, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + adds r4, r1, r3 + mov r3, sb + ldrh r1, [r3, #4] + cmp r4, r1 + ble _08002D12 + adds r4, r1, #0 +_08002D12: + adds r2, r2, r0 + mov ip, r2 + mov r2, sb + ldrh r0, [r2, #6] + cmp ip, r0 + ble _08002D20 + mov ip, r0 +_08002D20: + movs r0, #7 + ands r0, r1 + adds r0, r1, r0 + asrs r0, r0, #3 + str r0, [sp] + adds r1, r5, #0 + cmp r1, ip + bge _08002D88 +_08002D30: + mov r3, sl + adds r0, r1, #1 + mov r8, r0 + cmp r3, r4 + bge _08002D82 + asrs r0, r1, #3 + ldr r2, [sp] + muls r0, r2, r0 + lsls r6, r0, #5 + lsls r0, r1, #0x1d + lsrs r5, r0, #0x1b +_08002D46: + asrs r2, r3, #1 + movs r0, #3 + ands r2, r0 + mov r0, sb + ldr r1, [r0] + adds r1, r1, r2 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, r1, r6 + adds r2, r1, r5 + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _08002D72 + ldrb r0, [r2] + movs r1, #0xf + ands r1, r0 + lsls r0, r7, #4 + orrs r1, r0 + strb r1, [r2] + b _08002D7C +_08002D72: + ldrb r1, [r2] + movs r0, #0xf0 + ands r0, r1 + orrs r0, r7 + strb r0, [r2] +_08002D7C: + adds r3, #1 + cmp r3, r4 + blt _08002D46 +_08002D82: + mov r1, r8 + cmp r1, ip + blt _08002D30 +_08002D88: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08002CDC + + thumb_func_start sub_08002D98 +sub_08002D98: @ 0x08002D98 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x3c + str r0, [sp] + str r1, [sp, #4] + 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, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #8] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x10] + mov r0, r8 + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsls r0, r6, #0x1c + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + ldr r1, [sp, #4] + ldrh r0, [r1, #4] + ldr r2, [sp, #0xc] + subs r0, r0, r2 + ldr r1, [sp, #8] + adds r1, r5, r1 + str r1, [sp, #0x18] + cmp r0, r5 + bge _08002DFE + ldr r2, [sp, #8] + adds r0, r0, r2 + str r0, [sp, #0x18] +_08002DFE: + ldr r5, [sp, #4] + ldrh r1, [r5, #6] + subs r0, r1, r7 + cmp r0, r4 + bge _08002E10 + adds r0, r3, r1 + subs r0, r0, r7 + str r0, [sp, #0x1c] + b _08002E14 +_08002E10: + adds r4, r3, r4 + str r4, [sp, #0x1c] +_08002E14: + ldr r0, [sp] + ldrh r1, [r0, #4] + movs r2, #7 + adds r0, r1, #0 + ands r0, r2 + adds r1, r1, r0 + asrs r1, r1, #3 + str r1, [sp, #0x20] + ldr r5, [sp, #4] + ldrh r1, [r5, #4] + adds r0, r1, #0 + ands r0, r2 + adds r1, r1, r0 + asrs r1, r1, #3 + str r1, [sp, #0x24] + ldr r0, [sp, #0x10] + cmp r0, #0xff + bne _08002EF4 + adds r2, r3, #0 + adds r5, r7, #0 + ldr r1, [sp, #0x1c] + cmp r2, r1 + blt _08002E44 + b _08002FD6 +_08002E44: + ldr r3, [sp, #8] + lsrs r3, r3, #1 + str r3, [sp, #0x2c] + movs r0, #3 + ands r3, r0 + str r3, [sp, #0x2c] + ldr r7, [sp, #8] + lsrs r0, r7, #3 + lsls r0, r0, #5 + str r0, [sp, #0x30] +_08002E58: + ldr r0, [sp] + ldr r1, [r0] + ldr r3, [sp, #0x2c] + adds r1, r1, r3 + ldr r7, [sp, #0x30] + adds r1, r1, r7 + asrs r0, r2, #3 + ldr r3, [sp, #0x20] + muls r0, r3, r0 + lsls r0, r0, #5 + mov r8, r0 + add r1, r8 + lsls r0, r2, #0x1d + lsrs r7, r0, #0x1b + adds r6, r1, r7 + ldr r3, [sp, #8] + ldr r4, [sp, #0xc] + adds r2, #1 + mov sl, r2 + adds r0, r5, #1 + str r0, [sp, #0x38] + ldr r1, [sp, #0x18] + cmp r3, r1 + bge _08002EE8 + asrs r0, r5, #3 + ldr r2, [sp, #0x24] + muls r0, r2, r0 + lsls r0, r0, #6 + mov ip, r0 + lsls r0, r5, #0x1d + lsrs r0, r0, #0x1a + mov sb, r0 +_08002E98: + movs r0, #7 + ands r0, r4 + ldr r5, [sp, #4] + ldr r1, [r5] + adds r1, r1, r0 + asrs r0, r4, #3 + lsls r0, r0, #6 + adds r1, r1, r0 + add r1, ip + mov r0, sb + adds r5, r1, r0 + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _08002EBC + ldrb r0, [r6] + lsrs r0, r0, #4 + b _08002ED8 +_08002EBC: + asrs r2, r3, #1 + movs r0, #3 + ands r2, r0 + ldr r0, [sp] + ldr r1, [r0] + adds r1, r1, r2 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, r8 + adds r6, r1, r7 + ldrb r1, [r6] + movs r0, #0xf + ands r0, r1 +_08002ED8: + ldr r1, [sp, #0x14] + adds r0, r1, r0 + strb r0, [r5] + adds r3, #1 + adds r4, #1 + ldr r2, [sp, #0x18] + cmp r3, r2 + blt _08002E98 +_08002EE8: + mov r2, sl + ldr r5, [sp, #0x38] + ldr r3, [sp, #0x1c] + cmp r2, r3 + blt _08002E58 + b _08002FD6 +_08002EF4: + adds r2, r3, #0 + adds r5, r7, #0 + ldr r7, [sp, #0x1c] + cmp r2, r7 + bge _08002FD6 + ldr r0, [sp, #8] + lsrs r0, r0, #1 + str r0, [sp, #0x34] + movs r0, #3 + ldr r1, [sp, #0x34] + ands r1, r0 + str r1, [sp, #0x34] +_08002F0C: + ldr r3, [sp] + ldr r1, [r3] + ldr r7, [sp, #0x34] + adds r1, r1, r7 + ldr r3, [sp, #8] + lsrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + asrs r0, r2, #3 + ldr r7, [sp, #0x20] + muls r0, r7, r0 + lsls r0, r0, #5 + mov r8, r0 + add r1, r8 + lsls r0, r2, #0x1d + lsrs r7, r0, #0x1b + adds r6, r1, r7 + ldr r4, [sp, #0xc] + adds r2, #1 + mov sl, r2 + adds r0, r5, #1 + str r0, [sp, #0x38] + ldr r1, [sp, #0x18] + cmp r3, r1 + bge _08002FCC + asrs r0, r5, #3 + ldr r2, [sp, #0x24] + muls r0, r2, r0 + lsls r0, r0, #6 + mov sb, r0 + lsls r0, r5, #0x1d + lsrs r0, r0, #0x1a + mov ip, r0 +_08002F4E: + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _08002F82 + ldrb r2, [r6] + movs r0, #0xf0 + ands r0, r2 + ldr r5, [sp, #0x28] + cmp r0, r5 + beq _08002FC2 + adds r0, r4, #0 + movs r1, #7 + ands r0, r1 + ldr r5, [sp, #4] + ldr r1, [r5] + adds r1, r1, r0 + asrs r0, r4, #3 + lsls r0, r0, #6 + adds r1, r1, r0 + add r1, sb + mov r0, ip + adds r5, r1, r0 + lsrs r0, r2, #4 + ldr r1, [sp, #0x14] + adds r0, r1, r0 + b _08002FC0 +_08002F82: + asrs r2, r3, #1 + movs r0, #3 + ands r2, r0 + ldr r5, [sp] + ldr r1, [r5] + adds r1, r1, r2 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, 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 _08002FC2 + adds r0, r4, #0 + movs r1, #7 + ands r0, r1 + ldr r5, [sp, #4] + ldr r1, [r5] + adds r1, r1, r0 + asrs r0, r4, #3 + lsls r0, r0, #6 + adds r1, r1, r0 + add r1, sb + mov r0, ip + adds r5, r1, r0 + ldr r1, [sp, #0x14] + adds r0, r1, r2 +_08002FC0: + strb r0, [r5] +_08002FC2: + adds r3, #1 + adds r4, #1 + ldr r2, [sp, #0x18] + cmp r3, r2 + blt _08002F4E +_08002FCC: + mov r2, sl + ldr r5, [sp, #0x38] + ldr r3, [sp, #0x1c] + cmp r2, r3 + blt _08002F0C +_08002FD6: + add sp, #0x3c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08002D98 + + thumb_func_start sub_08002FE8 +sub_08002FE8: @ 0x08002FE8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov r8, r0 + ldr r0, [sp, #0x28] + ldr r4, [sp, #0x2c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r6, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sb, r4 + adds r5, r1, r3 + mov r3, r8 + ldrh r1, [r3, #4] + cmp r5, r1 + ble _08003020 + adds r5, r1, #0 +_08003020: + adds r7, r2, r0 + mov r2, r8 + ldrh r0, [r2, #6] + cmp r7, r0 + ble _0800302C + adds r7, r0, #0 +_0800302C: + movs r0, #7 + ands r0, r1 + adds r0, r1, r0 + asrs r0, r0, #3 + str r0, [sp] + adds r1, r6, #0 + cmp r1, r7 + bge _0800307C +_0800303C: + mov r3, sl + adds r6, r1, #1 + str r6, [sp, #4] + cmp r3, r5 + bge _08003076 + movs r0, #7 + mov ip, r0 + asrs r0, r1, #3 + ldr r2, [sp] + muls r0, r2, r0 + lsls r4, r0, #6 + lsls r0, r1, #0x1d + lsrs r2, r0, #0x1a +_08003056: + adds r0, r3, #0 + mov r6, ip + ands r0, r6 + mov r6, r8 + ldr r1, [r6] + adds r1, r1, r0 + asrs r0, r3, #3 + lsls r0, r0, #6 + adds r1, r1, r0 + adds r1, r1, r4 + adds r1, r1, r2 + mov r0, sb + strb r0, [r1] + adds r3, #1 + cmp r3, r5 + blt _08003056 +_08003076: + ldr r1, [sp, #4] + cmp r1, r7 + blt _0800303C +_0800307C: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08002FE8 + + thumb_func_start sub_0800308C +sub_0800308C: @ 0x0800308C + bx lr + .align 2, 0 + thumb_func_end sub_0800308C + + thumb_func_start sub_08003090 +sub_08003090: @ 0x08003090 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + movs r0, #0 + mov r8, r0 + ldr r4, _08003124 +_080030A4: + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002194 + cmp r0, #0 + beq _080030B4 + ldr r0, _08003128 +_080030B4: + str r0, [r4] + adds r4, #4 + movs r2, #1 + add r8, r2 + mov r0, r8 + cmp r0, #3 + ble _080030A4 + ldr r0, _0800312C + ldr r2, [r0] + ldr r3, [r0, #4] + ldr r1, _08003130 + movs r0, #0 + movs r4, #0x1f + mov r8, r4 +_080030D0: + str r2, [r1] + str r3, [r1, #4] + str r0, [r1, #8] + adds r1, #0xc + movs r4, #1 + rsbs r4, r4, #0 + add r8, r4 + mov r4, r8 + cmp r4, #0 + bge _080030D0 + movs r0, #0 + mov r8, r0 + movs r1, #0 + str r1, [sp] + ldrb r7, [r5] + cmp r7, #0xff + bne _080030F4 + b _0800322C +_080030F4: + adds r6, r5, #0 + movs r2, #0 + str r2, [sp, #4] +_080030FA: + ldr r0, _08003134 + ldr r0, [r0] + cmp r0, #1 + bne _08003138 + ldrb r1, [r6, #3] + ldrb r0, [r6, #4] + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r7, #0 + movs r1, #0 + movs r3, #0 + bl sub_080017D0 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + ldr r4, [sp] + cmp r4, r0 + bne _08003138 +_08003120: + movs r0, #0 + b _08003234 + .align 2, 0 +_08003124: .4byte gUnknown_3003010 +_08003128: .4byte sub_0800308C +_0800312C: .4byte gUnknown_829BEB0 +_08003130: .4byte gUnknown_2020004 +_08003134: .4byte gUnknown_3002FF4 +_08003138: + ldr r0, _08003170 + mov sb, r0 + lsls r0, r7, #2 + mov r2, sb + adds r1, r0, r2 + ldr r1, [r1] + mov sl, r0 + cmp r1, #0 + bne _0800319A + adds r0, r7, #0 + movs r1, #8 + bl sub_08001C34 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _08003174 + cmp r5, r0 + beq _0800319A + adds r0, r5, #0 + bl sub_08000BDC + adds r4, r0, #0 + cmp r4, #0 + bne _08003178 + bl sub_080034D4 + b _08003120 + .align 2, 0 +_08003170: .4byte gUnknown_3003010 +_08003174: .4byte 0x0000FFFF +_08003178: + movs r1, #0 + mov r3, sb + cmp r1, r5 + bge _0800318C + movs r2, #0 +_08003182: + adds r0, r4, r1 + strb r2, [r0] + adds r1, #1 + cmp r1, r5 + blt _08003182 +_0800318C: + mov r1, sl + adds r0, r1, r3 + str r4, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0800212C +_0800319A: + ldrb r1, [r6, #3] + ldrb r0, [r6, #4] + muls r0, r1, r0 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + bl sub_08000BDC + adds r4, r0, #0 + cmp r4, #0 + bne _080031DC + adds r0, r7, #0 + bl sub_08004100 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08003120 + ldr r0, _080031D4 + mov r2, sl + adds r5, r2, r0 + ldr r1, [r5] + ldr r0, _080031D8 + cmp r1, r0 + beq _08003120 + adds r0, r1, #0 + bl sub_08000BF0 + str r4, [r5] + b _08003120 + .align 2, 0 +_080031D4: .4byte gUnknown_3003010 +_080031D8: .4byte sub_0800308C +_080031DC: + ldr r1, _08003244 + adds r0, r1, #0 + adds r0, #8 + ldr r2, [sp, #4] + adds r0, r2, r0 + str r4, [r0] + adds r2, r2, r1 + ldr r0, [r6] + ldr r1, [r6, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _08003248 + ldr r0, [r0] + cmp r0, #1 + bne _08003212 + mov r4, sp + ldrh r4, [r4] + strh r4, [r2, #6] + ldrb r0, [r6, #3] + ldrb r1, [r6, #4] + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r7, #0 + ldr r1, [sp] + movs r3, #1 + bl sub_080017D0 +_08003212: + adds r6, #8 + ldr r0, [sp, #4] + adds r0, #0xc + str r0, [sp, #4] + movs r1, #1 + add r8, r1 + ldrb r7, [r6] + cmp r7, #0xff + beq _0800322C + mov r2, r8 + cmp r2, #0x1f + bgt _0800322C + b _080030FA +_0800322C: + ldr r1, _0800324C + movs r0, #0 + strb r0, [r1] + movs r0, #1 +_08003234: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08003244: .4byte gUnknown_2020004 +_08003248: .4byte gUnknown_3002FF4 +_0800324C: .4byte gUnknown_3003000 + thumb_func_end sub_08003090 + + thumb_func_start sub_08003250 +sub_08003250: @ 0x08003250 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + movs r6, #0 + ldr r1, _08003340 + ldrb r0, [r1] + cmp r0, #0xff + beq _08003280 +_08003268: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x1f + bhi _08003280 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _08003268 +_08003280: + cmp r6, #0x20 + beq _0800333A + mov r0, r8 + ldrb r7, [r0] + movs r1, #0 + mov sb, r1 + ldr r0, _08003344 + ldr r0, [r0] + cmp r0, #1 + bne _080032B2 + mov r2, r8 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r7, #0 + movs r1, #0 + movs r3, #0 + bl sub_080017D0 + mov sb, r0 + movs r0, #1 + rsbs r0, r0, #0 + cmp sb, r0 + beq _0800333A +_080032B2: + ldr r3, _08003348 + mov sl, r3 + lsls r0, r7, #2 + adds r1, r0, r3 + ldr r1, [r1] + str r0, [sp] + cmp r1, #0 + bne _08003302 + adds r0, r7, #0 + movs r1, #8 + bl sub_08001C34 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0800334C + cmp r5, r0 + beq _08003302 + adds r0, r5, #0 + bl sub_08000BDC + adds r4, r0, #0 + cmp r4, #0 + beq _0800333A + movs r1, #0 + mov r3, sl + cmp r1, r5 + bge _080032F4 + movs r2, #0 +_080032EA: + adds r0, r4, r1 + strb r2, [r0] + adds r1, #1 + cmp r1, r5 + blt _080032EA +_080032F4: + ldr r1, [sp] + adds r0, r1, r3 + str r4, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0800212C +_08003302: + mov r2, r8 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + muls r0, r1, r0 + lsls r0, r0, #0x15 + lsrs r0, r0, #0x10 + bl sub_08000BDC + adds r4, r0, #0 + cmp r4, #0 + bne _08003354 + adds r0, r7, #0 + bl sub_08004100 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800333A + ldr r0, _08003348 + ldr r3, [sp] + adds r5, r3, r0 + ldr r1, [r5] + ldr r0, _08003350 + cmp r1, r0 + beq _0800333A + adds r0, r1, #0 + bl sub_08000BF0 + str r4, [r5] +_0800333A: + movs r0, #0xff + b _08003390 + .align 2, 0 +_08003340: .4byte gUnknown_2020004 +_08003344: .4byte gUnknown_3002FF4 +_08003348: .4byte gUnknown_3003010 +_0800334C: .4byte 0x0000FFFF +_08003350: .4byte sub_0800308C +_08003354: + ldr r2, _080033A0 + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + str r4, [r0] + adds r2, r1, r2 + mov r3, r8 + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _080033A4 + ldr r0, [r0] + cmp r0, #1 + bne _0800338E + mov r0, sb + strh r0, [r2, #6] + ldrb r0, [r2, #3] + ldrb r1, [r2, #4] + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r7, #0 + mov r1, sb + movs r3, #1 + bl sub_080017D0 +_0800338E: + adds r0, r6, #0 +_08003390: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080033A0: .4byte gUnknown_2020004 +_080033A4: .4byte gUnknown_3002FF4 + thumb_func_end sub_08003250 + + thumb_func_start sub_080033A8 +sub_080033A8: @ 0x080033A8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r1, _080033FC + ldrb r0, [r1] + cmp r0, #0xff + beq _080033CE +_080033B6: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1f + bhi _080033CE + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _080033B6 +_080033CE: + cmp r4, #0x20 + beq _080033F8 + ldrb r6, [r5] + movs r3, #0 + ldr r0, _08003400 + ldr r0, [r0] + cmp r0, #1 + bne _08003404 + ldrb r1, [r5, #3] + ldrb r0, [r5, #4] + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r6, #0 + movs r1, #0 + bl sub_080017D0 + adds r3, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + bne _08003404 +_080033F8: + movs r0, #0xff + b _08003434 + .align 2, 0 +_080033FC: .4byte gUnknown_2020004 +_08003400: .4byte gUnknown_3002FF4 +_08003404: + ldr r1, _0800343C + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r2, r0, r1 + ldr r0, [r5] + ldr r1, [r5, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _08003440 + ldr r0, [r0] + cmp r0, #1 + bne _08003432 + strh r3, [r2, #6] + ldrb r0, [r2, #3] + ldrb r1, [r2, #4] + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r6, #0 + adds r1, r3, #0 + movs r3, #1 + bl sub_080017D0 +_08003432: + adds r0, r4, #0 +_08003434: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0800343C: .4byte gUnknown_2020004 +_08003440: .4byte gUnknown_3002FF4 + thumb_func_end sub_080033A8 + + thumb_func_start sub_08003444 +sub_08003444: @ 0x08003444 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080034C0 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r3, [r4] + adds r7, r3, #0 + ldr r0, _080034C4 + ldr r0, [r0] + cmp r0, #1 + bne _08003470 + ldrh r1, [r4, #6] + ldrb r2, [r4, #3] + ldrb r0, [r4, #4] + muls r2, r0, r2 + adds r0, r3, #0 + movs r3, #2 + bl sub_080017D0 +_08003470: + ldr r0, _080034C8 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r4] + str r1, [r4, #4] + adds r0, r7, #0 + bl sub_08004100 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0800349E + ldr r0, _080034CC + lsls r1, r7, #2 + adds r4, r1, r0 + ldr r1, [r4] + ldr r0, _080034D0 + cmp r1, r0 + beq _0800349E + adds r0, r1, #0 + bl sub_08000BF0 + str r5, [r4] +_0800349E: + ldr r1, _080034C0 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r1, #8 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, #0 + beq _080034B8 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080034B8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080034C0: .4byte gUnknown_2020004 +_080034C4: .4byte gUnknown_3002FF4 +_080034C8: .4byte gUnknown_829BEB0 +_080034CC: .4byte gUnknown_3003010 +_080034D0: .4byte sub_0800308C + thumb_func_end sub_08003444 + + thumb_func_start sub_080034D4 +sub_080034D4: @ 0x080034D4 + push {r4, r5, r6, lr} + ldr r4, _0800351C + movs r5, #3 +_080034DA: + ldr r1, [r4] + cmp r1, #0 + beq _080034F0 + ldr r0, _08003520 + cmp r1, r0 + beq _080034F0 + adds r0, r1, #0 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080034F0: + adds r4, #4 + subs r5, #1 + cmp r5, #0 + bge _080034DA + ldr r0, _08003524 + adds r4, r0, #0 + adds r4, #8 + movs r6, #0 + movs r5, #0x1f +_08003502: + ldr r0, [r4] + cmp r0, #0 + beq _0800350E + bl sub_08000BF0 + str r6, [r4] +_0800350E: + adds r4, #0xc + subs r5, #1 + cmp r5, #0 + bge _08003502 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800351C: .4byte gUnknown_3003010 +_08003520: .4byte sub_0800308C +_08003524: .4byte gUnknown_2020004 + thumb_func_end sub_080034D4 + + thumb_func_start sub_08003528 +sub_08003528: @ 0x08003528 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + adds r5, r3, #0 + ldr r2, _08003560 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + mov r0, sp + adds r1, r1, r2 + ldm r1!, {r2, r4, r6} + stm r0!, {r2, r4, r6} + mov r0, sp + ldrb r1, [r0, #3] + ldrb r0, [r0, #4] + muls r0, r1, r0 + lsls r0, r0, #0x15 + lsrs r4, r0, #0x10 + cmp r3, #2 + beq _08003574 + cmp r3, #2 + bgt _08003564 + cmp r3, #1 + beq _0800356A + b _0800359E + .align 2, 0 +_08003560: .4byte gUnknown_2020004 +_08003564: + cmp r5, #3 + beq _08003586 + b _0800359E +_0800356A: + mov r0, sp + ldrb r0, [r0] + bl sub_08002248 + b _0800359E +_08003574: + mov r0, sp + ldrb r0, [r0] + ldr r1, [sp, #8] + mov r2, sp + ldrh r3, [r2, #6] + adds r2, r4, #0 + bl sub_0800195C + b _0800359E +_08003586: + mov r0, sp + ldrb r0, [r0] + ldr r1, [sp, #8] + mov r2, sp + ldrh r3, [r2, #6] + adds r2, r4, #0 + bl sub_0800195C + mov r0, sp + ldrb r0, [r0] + bl sub_08002248 +_0800359E: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08003528 + + thumb_func_start sub_080035A8 +sub_080035A8: @ 0x080035A8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + mov ip, r3 + ldr r3, [sp, #0x24] + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _08003652 + cmp r3, #0 + beq _08003652 + ldr r2, _080035FC + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + mov r1, sp + adds r0, r0, r2 + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} + subs r2, r3, #1 + mov r0, sp + ldrb r1, [r0, #3] + adds r3, r2, #0 + muls r3, r1, r3 + subs r0, r1, r4 + adds r3, r3, r0 + ldr r2, [sp, #0x20] + adds r0, r4, r2 + subs r0, r1, r0 + subs r3, r3, r0 + lsls r3, r3, #5 + mov r0, ip + muls r0, r1, r0 + adds r4, r0, r4 + cmp r5, #2 + beq _08003610 + cmp r5, #2 + bhi _08003600 + cmp r5, #1 + beq _08003606 + b _08003652 + .align 2, 0 +_080035FC: .4byte gUnknown_2020004 +_08003600: + cmp r5, #3 + beq _0800362E + b _08003652 +_08003606: + mov r0, sp + ldrb r0, [r0] + bl sub_08002248 + b _08003652 +_08003610: + mov r0, sp + ldrb r0, [r0] + lsls r2, r4, #5 + ldr r1, [sp, #8] + adds r1, r1, r2 + lsls r2, r3, #0x10 + lsrs r2, r2, #0x10 + mov r3, sp + ldrh r3, [r3, #6] + adds r3, r3, r4 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + bl sub_0800195C + b _08003652 +_0800362E: + mov r0, sp + ldrb r0, [r0] + lsls r2, r4, #5 + ldr r1, [sp, #8] + adds r1, r1, r2 + lsls r2, r3, #0x10 + lsrs r2, r2, #0x10 + mov r3, sp + ldrh r3, [r3, #6] + adds r3, r3, r4 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + bl sub_0800195C + mov r0, sp + ldrb r0, [r0] + bl sub_08002248 +_08003652: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080035A8 + + thumb_func_start sub_0800365C +sub_0800365C: @ 0x0800365C + push {r4, lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080036B8 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + add r0, sp, #0x10 + adds r1, r1, r2 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + add r0, sp, #0x10 + ldrb r0, [r0] + movs r1, #0xa + bl sub_08001C34 + adds r1, r0, #0 + add r0, sp, #0x10 + ldrh r0, [r0, #6] + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + add r0, sp, #0x10 + ldrb r0, [r0] + add r2, sp, #0x10 + ldrb r2, [r2, #1] + add r3, sp, #0x10 + ldrb r3, [r3, #2] + add r4, sp, #0x10 + ldrb r4, [r4, #3] + str r4, [sp] + add r4, sp, #0x10 + ldrb r4, [r4, #4] + str r4, [sp, #4] + add r4, sp, #0x10 + ldrb r4, [r4, #5] + str r4, [sp, #8] + movs r4, #1 + str r4, [sp, #0xc] + bl sub_0800271C + add sp, #0x1c + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080036B8: .4byte gUnknown_2020004 + thumb_func_end sub_0800365C + + thumb_func_start sub_080036BC +sub_080036BC: @ 0x080036BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r4, [sp, #0x44] + ldr r5, [sp, #0x48] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x1c] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp, #0x20] + ldr r2, _08003770 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + add r0, sp, #0x10 + adds r1, r1, r2 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + add r0, sp, #0x10 + ldrb r0, [r0] + movs r1, #0xa + bl sub_08001C34 + add r2, sp, #0x10 + adds r1, r2, #0 + ldrb r1, [r1, #3] + mov r3, sb + muls r3, r1, r3 + adds r1, r3, #0 + ldrh r2, [r2, #6] + adds r1, r1, r2 + add r1, sl + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r5, #0 + cmp r5, r8 + bge _0800375E + add r4, sp, #0x10 + movs r7, #1 +_0800372A: + ldrb r0, [r4] + ldrb r2, [r4, #1] + add r2, sl + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + add r3, sb + adds r3, r3, r5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, [sp, #0x1c] + str r1, [sp] + str r7, [sp, #4] + ldr r1, [sp, #0x20] + str r1, [sp, #8] + str r7, [sp, #0xc] + adds r1, r6, #0 + bl sub_0800271C + ldrb r0, [r4, #3] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r5, #1 + cmp r5, r8 + blt _0800372A +_0800375E: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003770: .4byte gUnknown_2020004 + thumb_func_end sub_080036BC + + thumb_func_start sub_08003774 +sub_08003774: @ 0x08003774 + push {r4, lr} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080037BC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + add r0, sp, #0xc + adds r1, r1, r2 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + add r0, sp, #0xc + ldrb r0, [r0] + ldr r1, _080037C0 + ldrb r1, [r1] + add r2, sp, #0xc + ldrb r2, [r2, #1] + add r3, sp, #0xc + ldrb r3, [r3, #2] + add r4, sp, #0xc + ldrb r4, [r4, #3] + str r4, [sp] + add r4, sp, #0xc + ldrb r4, [r4, #4] + str r4, [sp, #4] + add r4, sp, #0xc + ldrb r4, [r4, #5] + str r4, [sp, #8] + bl sub_080026E0 + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080037BC: .4byte gUnknown_2020004 +_080037C0: .4byte gUnknown_3003000 + thumb_func_end sub_08003774 + + thumb_func_start sub_080037C4 +sub_080037C4: @ 0x080037C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, [sp, #0x40] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x1c] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + ldr r2, _08003870 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + add r0, sp, #0x10 + adds r1, r1, r2 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + add r0, sp, #0x10 + ldrb r0, [r0] + movs r1, #0xa + bl sub_08001C34 + add r2, sp, #0x10 + adds r1, r2, #0 + ldrb r1, [r1, #3] + mov r3, sb + muls r3, r1, r3 + adds r1, r3, #0 + ldrh r2, [r2, #6] + adds r1, r1, r2 + add r1, sl + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r5, #0 + cmp r5, r8 + bge _0800385E + add r4, sp, #0x10 + movs r7, #1 +_0800382A: + ldrb r0, [r4] + ldrb r2, [r4, #1] + add r2, sl + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + add r3, sb + adds r3, r3, r5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, [sp, #0x1c] + str r1, [sp] + str r7, [sp, #4] + ldrb r1, [r4, #5] + str r1, [sp, #8] + str r7, [sp, #0xc] + adds r1, r6, #0 + bl sub_0800271C + ldrb r0, [r4, #3] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r5, #1 + cmp r5, r8 + blt _0800382A +_0800385E: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003870: .4byte gUnknown_2020004 + thumb_func_end sub_080037C4 + + thumb_func_start sub_08003874 +sub_08003874: @ 0x08003874 + push {r4, r5, lr} + sub sp, #0x18 + ldr r4, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r4, [sp] + str r5, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + str r4, [sp, #0x10] + str r5, [sp, #0x14] + movs r2, #0 + movs r3, #0 + bl sub_080038AC + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08003874 + + thumb_func_start sub_080038AC +sub_080038AC: @ 0x080038AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r4, [sp, #0x44] + ldr r5, [sp, #0x48] + ldr r6, [sp, #0x4c] + mov r8, r6 + ldr r6, [sp, #0x50] + mov sb, r6 + ldr r6, [sp, #0x54] + mov sl, r6 + ldr r6, [sp, #0x58] + mov ip, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + mov r6, r8 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r8, r6 + mov r6, sb + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov sb, r6 + mov r6, sl + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov sl, r6 + mov r6, ip + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov ip, r6 + str r1, [sp, #0x14] + ldr r7, _08003960 + lsls r5, r5, #0x10 + ldr r6, _08003964 + lsrs r4, r4, #0x10 + orrs r4, r5 + str r4, [sp, #0x18] + ldr r1, _08003968 + lsls r5, r0, #1 + adds r5, r5, r0 + lsls r5, r5, #2 + adds r0, r1, #0 + adds r0, #8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, #0x1c] + adds r5, r5, r1 + ldrb r0, [r5, #3] + lsls r0, r0, #3 + add r1, sp, #0x1c + ldr r4, [r1, #4] + ands r4, r7 + orrs r4, r0 + str r4, [r1, #4] + ldrb r0, [r5, #4] + lsls r0, r0, #0x13 + ands r6, r4 + orrs r6, r0 + str r6, [r1, #4] + mov r0, r8 + str r0, [sp] + mov r6, sb + str r6, [sp, #4] + mov r0, sl + str r0, [sp, #8] + mov r6, ip + str r6, [sp, #0xc] + movs r0, #0 + str r0, [sp, #0x10] + add r0, sp, #0x14 + bl sub_08002AFC + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003960: .4byte 0xFFFF0000 +_08003964: .4byte 0x0000FFFF +_08003968: .4byte gUnknown_2020004 + thumb_func_end sub_080038AC + + thumb_func_start sub_0800396C +sub_0800396C: @ 0x0800396C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + ldr r4, [sp, #0x48] + ldr r5, [sp, #0x4c] + ldr r6, [sp, #0x50] + mov r8, r6 + ldr r7, [sp, #0x54] + mov sb, r7 + ldr r6, [sp, #0x58] + mov sl, r6 + ldr r7, [sp, #0x5c] + mov ip, r7 + ldr r6, [sp, #0x60] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + mov r7, r8 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov r8, r7 + mov r7, sb + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov sb, r7 + mov r7, sl + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov sl, r7 + mov r7, ip + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov ip, r7 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x24] + str r1, [sp, #0x14] + lsls r5, r5, #0x10 + ldr r6, _08003A28 + lsrs r4, r4, #0x10 + orrs r4, r5 + str r4, [sp, #0x18] + ldr r1, _08003A2C + lsls r5, r0, #1 + adds r5, r5, r0 + lsls r5, r5, #2 + adds r0, r1, #0 + adds r0, #8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, #0x1c] + adds r5, r5, r1 + ldrb r0, [r5, #3] + lsls r0, r0, #3 + add r1, sp, #0x1c + ldr r4, [r1, #4] + ldr r7, _08003A30 + ands r4, r7 + orrs r4, r0 + str r4, [r1, #4] + ldrb r0, [r5, #4] + lsls r0, r0, #0x13 + ands r6, r4 + orrs r6, r0 + str r6, [r1, #4] + mov r0, r8 + str r0, [sp] + mov r6, sb + str r6, [sp, #4] + mov r7, sl + str r7, [sp, #8] + mov r0, ip + str r0, [sp, #0xc] + ldr r6, [sp, #0x24] + str r6, [sp, #0x10] + add r0, sp, #0x14 + bl sub_08002AFC + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08003A28: .4byte 0x0000FFFF +_08003A2C: .4byte gUnknown_2020004 +_08003A30: .4byte 0xFFFF0000 + thumb_func_end sub_0800396C + + thumb_func_start sub_08003A34 +sub_08003A34: @ 0x08003A34 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + mov sb, r3 + ldr r3, [sp, #0x28] + ldr r4, [sp, #0x2c] + mov r8, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r4, sb + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov sb, r4 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r4, r8 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r8, r4 + ldr r5, _08003AB4 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r5, #0 + adds r0, #8 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp, #8] + adds r4, r4, r5 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r6, _08003AB8 + ldr r5, [sp, #0xc] + ands r5, r6 + orrs r5, r0 + str r5, [sp, #0xc] + ldrb r4, [r4, #4] + lsls r4, r4, #0x13 + ldr r0, _08003ABC + ands r0, r5 + orrs r0, r4 + str r0, [sp, #0xc] + mov r0, r8 + str r0, [sp] + str r1, [sp, #4] + add r0, sp, #8 + adds r1, r2, #0 + mov r2, sb + bl sub_08002CDC + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003AB4: .4byte gUnknown_2020004 +_08003AB8: .4byte 0xFFFF0000 +_08003ABC: .4byte 0x0000FFFF + thumb_func_end sub_08003A34 + + thumb_func_start sub_08003AC0 +sub_08003AC0: @ 0x08003AC0 + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r5, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r2, r3, #0x10 + cmp r5, #0 + beq _08003AF4 + ldr r1, _08003AF0 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + lsls r2, r2, #5 + ldr r1, [r0] + adds r1, r1, r2 + lsrs r2, r5, #0x11 + adds r0, r6, #0 + bl CpuSet + b _08003B0C + .align 2, 0 +_08003AF0: .4byte gUnknown_2020004 +_08003AF4: + ldr r1, _08003B14 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + lsls r2, r2, #5 + ldr r1, [r0] + adds r1, r1, r2 + adds r0, r6, #0 + bl LZ77UnCompWram +_08003B0C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003B14: .4byte gUnknown_2020004 + thumb_func_end sub_08003AC0 + + thumb_func_start sub_08003B18 +sub_08003B18: @ 0x08003B18 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r5, _08003B60 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r4, r5 + ldrb r2, [r0, #3] + ldrb r0, [r0, #4] + muls r2, r0, r2 + lsls r0, r1, #0x18 + lsls r3, r1, #0x10 + orrs r0, r3 + lsls r3, r1, #8 + orrs r0, r3 + orrs r0, r1 + str r0, [sp] + adds r5, #8 + adds r4, r4, r5 + ldr r1, [r4] + lsls r2, r2, #3 + movs r0, #0x80 + lsls r0, r0, #0x11 + orrs r2, r0 + mov r0, sp + bl CpuFastSet + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08003B60: .4byte gUnknown_2020004 + thumb_func_end sub_08003B18 + + thumb_func_start sub_08003B64 +sub_08003B64: @ 0x08003B64 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _08003C00 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r4, r1, r2 + adds r2, #8 + adds r1, r1, r2 + ldr r5, [r1] + lsls r7, r3, #0x18 + lsls r0, r3, #0x10 + orrs r7, r0 + lsls r0, r3, #8 + orrs r7, r0 + orrs r7, r3 + ldr r1, [r4] + ldr r2, [r4, #4] + ldrb r3, [r4, #4] + lsrs r0, r1, #0x18 + muls r0, r3, r0 + lsls r6, r0, #5 + lsrs r1, r1, #0x18 + mov ip, r1 + mov r0, r8 + cmp r0, #1 + bne _08003BB8 + b _08003D6E +_08003BB8: + cmp r0, #1 + ble _08003BBE + b _08003F16 +_08003BBE: + cmp r0, #0 + beq _08003BC4 + b _08003F16 +_08003BC4: + movs r4, #0 + cmp r4, r6 + blt _08003BCC + b _08003F16 +_08003BCC: + movs r1, #8 + rsbs r1, r1, #0 + mov sb, r1 + movs r2, #7 + mov r8, r2 + mov sl, r5 +_08003BD8: + ldr r3, [sp] + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + adds r0, r3, #0 + mov r2, r8 + ands r0, r2 + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003C04 + adds r0, r5, r1 + ldr r0, [r0] + mov r1, sl + str r0, [r1] + b _08003C08 + .align 2, 0 +_08003C00: .4byte gUnknown_2020004 +_08003C04: + mov r2, sl + str r7, [r2] +_08003C08: + adds r3, #1 + adds r2, r4, #4 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003C34 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003C38 +_08003C34: + adds r0, r5, r2 + str r7, [r0] +_08003C38: + adds r3, #1 + adds r2, r4, #0 + adds r2, #8 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003C66 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003C6A +_08003C66: + adds r0, r5, r2 + str r7, [r0] +_08003C6A: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0xc + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003C98 + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003C9C +_08003C98: + adds r0, r5, r2 + str r7, [r0] +_08003C9C: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x10 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003CCA + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003CCE +_08003CCA: + adds r0, r5, r2 + str r7, [r0] +_08003CCE: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x14 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003CFC + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003D00 +_08003CFC: + adds r0, r5, r2 + str r7, [r0] +_08003D00: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x18 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003D2E + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003D32 +_08003D2E: + adds r0, r5, r2 + str r7, [r0] +_08003D32: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x1c + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + adds r0, r1, #0 + mov r1, r8 + ands r3, r1 + orrs r0, r3 + lsls r0, r0, #2 + adds r1, r4, r0 + cmp r1, r6 + bge _08003D5C + adds r0, r5, r2 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003D60 +_08003D5C: + adds r0, r5, r2 + str r7, [r0] +_08003D60: + movs r2, #0x20 + add sl, r2 + adds r4, #0x20 + cmp r4, r6 + bge _08003D6C + b _08003BD8 +_08003D6C: + b _08003F16 +_08003D6E: + subs r0, r6, #4 + adds r5, r5, r0 + movs r4, #0 + cmp r4, r6 + blt _08003D7A + b _08003F16 +_08003D7A: + movs r0, #8 + rsbs r0, r0, #0 + mov sb, r0 + movs r1, #7 + mov r8, r1 + mov sl, r5 +_08003D86: + ldr r3, [sp] + adds r0, r3, #0 + mov r2, sb + ands r0, r2 + mov r1, ip + muls r1, r0, r1 + adds r0, r3, #0 + mov r2, r8 + ands r0, r2 + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003DAC + subs r0, r5, r1 + ldr r0, [r0] + mov r1, sl + str r0, [r1] + b _08003DB0 +_08003DAC: + mov r2, sl + str r7, [r2] +_08003DB0: + adds r3, #1 + adds r2, r4, #4 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003DDC + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003DE0 +_08003DDC: + subs r0, r5, r2 + str r7, [r0] +_08003DE0: + adds r3, #1 + adds r2, r4, #0 + adds r2, #8 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003E0E + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003E12 +_08003E0E: + subs r0, r5, r2 + str r7, [r0] +_08003E12: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0xc + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003E40 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003E44 +_08003E40: + subs r0, r5, r2 + str r7, [r0] +_08003E44: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x10 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003E72 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003E76 +_08003E72: + subs r0, r5, r2 + str r7, [r0] +_08003E76: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x14 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003EA4 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003EA8 +_08003EA4: + subs r0, r5, r2 + str r7, [r0] +_08003EA8: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x18 + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + str r1, [sp, #4] + adds r0, r3, #0 + mov r1, r8 + ands r0, r1 + ldr r1, [sp, #4] + orrs r1, r0 + lsls r1, r1, #2 + adds r1, r4, r1 + cmp r1, r6 + bge _08003ED6 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003EDA +_08003ED6: + subs r0, r5, r2 + str r7, [r0] +_08003EDA: + adds r3, #1 + adds r2, r4, #0 + adds r2, #0x1c + adds r0, r3, #0 + mov r1, sb + ands r0, r1 + mov r1, ip + muls r1, r0, r1 + adds r0, r1, #0 + mov r1, r8 + ands r3, r1 + orrs r0, r3 + lsls r0, r0, #2 + adds r1, r4, r0 + cmp r1, r6 + bge _08003F04 + subs r0, r5, r2 + subs r1, r5, r1 + ldr r1, [r1] + str r1, [r0] + b _08003F08 +_08003F04: + subs r0, r5, r2 + str r7, [r0] +_08003F08: + movs r2, #0x20 + rsbs r2, r2, #0 + add sl, r2 + adds r4, #0x20 + cmp r4, r6 + bge _08003F16 + b _08003D86 +_08003F16: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08003B64 + + thumb_func_start sub_08003F28 +sub_08003F28: @ 0x08003F28 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08003F74 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r5, [r1] + ldr r6, [r1, #4] + ldrb r0, [r1] + lsrs r1, r5, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsrs r2, r5, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsrs r3, r5, #0x18 + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + lsrs r4, r6, #8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + bl _call_via_r8 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08003F74: .4byte gUnknown_2020004 + thumb_func_end sub_08003F28 + + thumb_func_start sub_08003F78 +sub_08003F78: @ 0x08003F78 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #7 + bhi _08004012 + lsls r0, r0, #2 + ldr r1, _08003F90 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08003F90: .4byte _08003F94 +_08003F94: @ jump table + .4byte _08004012 @ case 0 + .4byte _08003FB4 @ case 1 + .4byte _08003FC8 @ case 2 + .4byte _08004012 @ case 3 + .4byte _08004012 @ case 4 + .4byte _08003FDC @ case 5 + .4byte _08003FF0 @ case 6 + .4byte _08004004 @ case 7 +_08003FB4: + ldr r1, _08003FC4 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r2, [r0, #1] + movs r0, #0 + b _08004014 + .align 2, 0 +_08003FC4: .4byte gUnknown_2020004 +_08003FC8: + ldr r1, _08003FD8 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r2, [r0, #2] + movs r0, #0 + b _08004014 + .align 2, 0 +_08003FD8: .4byte gUnknown_2020004 +_08003FDC: + ldr r1, _08003FEC + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r2, [r0, #5] + movs r0, #0 + b _08004014 + .align 2, 0 +_08003FEC: .4byte gUnknown_2020004 +_08003FF0: + ldr r1, _08004000 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r2, [r0, #6] + movs r0, #0 + b _08004014 + .align 2, 0 +_08004000: .4byte gUnknown_2020004 +_08004004: + ldr r1, _08004018 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + str r2, [r0] +_08004012: + movs r0, #1 +_08004014: + pop {r1} + bx r1 + .align 2, 0 +_08004018: .4byte gUnknown_2020004 + thumb_func_end sub_08003F78 + + thumb_func_start sub_0800401C +sub_0800401C: @ 0x0800401C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #7 + bhi _080040F8 + lsls r0, r0, #2 + ldr r1, _08004034 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08004034: .4byte _08004038 +_08004038: @ jump table + .4byte _08004058 @ case 0 + .4byte _0800406C @ case 1 + .4byte _08004080 @ case 2 + .4byte _08004094 @ case 3 + .4byte _080040A8 @ case 4 + .4byte _080040BC @ case 5 + .4byte _080040D0 @ case 6 + .4byte _080040E4 @ case 7 +_08004058: + ldr r0, _08004068 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + b _080040FA + .align 2, 0 +_08004068: .4byte gUnknown_2020004 +_0800406C: + ldr r0, _0800407C + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + b _080040FA + .align 2, 0 +_0800407C: .4byte gUnknown_2020004 +_08004080: + ldr r0, _08004090 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + b _080040FA + .align 2, 0 +_08004090: .4byte gUnknown_2020004 +_08004094: + ldr r0, _080040A4 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #3] + b _080040FA + .align 2, 0 +_080040A4: .4byte gUnknown_2020004 +_080040A8: + ldr r0, _080040B8 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + b _080040FA + .align 2, 0 +_080040B8: .4byte gUnknown_2020004 +_080040BC: + ldr r0, _080040CC + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #5] + b _080040FA + .align 2, 0 +_080040CC: .4byte gUnknown_2020004 +_080040D0: + ldr r0, _080040E0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + b _080040FA + .align 2, 0 +_080040E0: .4byte gUnknown_2020004 +_080040E4: + ldr r0, _080040F4 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, #8 + adds r1, r1, r0 + ldr r0, [r1] + b _080040FA + .align 2, 0 +_080040F4: .4byte gUnknown_2020004 +_080040F8: + movs r0, #0 +_080040FA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800401C + + thumb_func_start sub_08004100 +sub_08004100: @ 0x08004100 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + ldr r2, _08004128 + movs r1, #0x1f +_0800410C: + ldrb r0, [r2] + cmp r0, r4 + bne _08004118 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_08004118: + adds r2, #0xc + subs r1, #1 + cmp r1, #0 + bge _0800410C + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08004128: .4byte gUnknown_2020004 + thumb_func_end sub_08004100 + + thumb_func_start sub_0800412C +sub_0800412C: @ 0x0800412C + bx lr + .align 2, 0 + thumb_func_end sub_0800412C + + thumb_func_start sub_08004130 +sub_08004130: @ 0x08004130 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + movs r6, #0 + ldr r1, _080041F8 + ldrb r0, [r1] + cmp r0, #0xff + beq _0800415E +_08004146: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x1f + bhi _0800415E + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _08004146 +_0800415E: + cmp r6, #0x20 + beq _080041F2 + mov r0, sb + ldrb r7, [r0] + ldr r1, _080041FC + mov sl, r1 + lsls r2, r7, #2 + mov r8, r2 + mov r0, r8 + add r0, sl + ldr r0, [r0] + cmp r0, #0 + bne _080041BA + adds r0, r7, #0 + movs r1, #8 + bl sub_08001C34 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _08004200 + cmp r5, r0 + beq _080041BA + adds r0, r5, #0 + bl sub_08000BC8 + adds r4, r0, #0 + cmp r4, #0 + beq _080041F2 + movs r1, #0 + mov ip, sl + mov r3, r8 + cmp r1, r5 + bge _080041AC + movs r2, #0 +_080041A2: + adds r0, r4, r1 + strb r2, [r0] + adds r1, #1 + cmp r1, r5 + blt _080041A2 +_080041AC: + mov r1, ip + adds r0, r3, r1 + str r4, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0800212C +_080041BA: + mov r2, sb + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + muls r0, r1, r0 + lsls r0, r0, #0x16 + lsrs r0, r0, #0x10 + bl sub_08000BC8 + adds r4, r0, #0 + cmp r4, #0 + bne _08004208 + adds r0, r7, #0 + bl sub_08004448 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080041F2 + ldr r0, _080041FC + lsls r1, r7, #2 + adds r5, r1, r0 + ldr r1, [r5] + ldr r0, _08004204 + cmp r1, r0 + beq _080041F2 + adds r0, r1, #0 + bl sub_08000BF0 + str r4, [r5] +_080041F2: + movs r0, #0xff + b _08004226 + .align 2, 0 +_080041F8: .4byte gUnknown_2020004 +_080041FC: .4byte gUnknown_3003010 +_08004200: .4byte 0x0000FFFF +_08004204: .4byte sub_0800412C +_08004208: + ldr r1, _08004234 + lsls r2, r6, #1 + adds r2, r2, r6 + lsls r2, r2, #2 + adds r0, r1, #0 + adds r0, #8 + adds r0, r2, r0 + str r4, [r0] + adds r2, r2, r1 + mov r3, sb + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [r2] + str r1, [r2, #4] + adds r0, r6, #0 +_08004226: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08004234: .4byte gUnknown_2020004 + thumb_func_end sub_08004130 + + thumb_func_start sub_08004238 +sub_08004238: @ 0x08004238 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r6, _08004274 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r4, r1, #2 + adds r0, r4, r6 + ldrb r1, [r0, #3] + ldrb r0, [r0, #4] + muls r0, r1, r0 + lsls r0, r0, #0x16 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r3 + bge _0800426E + adds r0, r6, #0 + adds r0, #8 + adds r1, r4, r0 +_08004262: + ldr r0, [r1] + adds r0, r0, r2 + strb r5, [r0] + adds r2, #1 + cmp r2, r3 + blt _08004262 +_0800426E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08004274: .4byte gUnknown_2020004 + thumb_func_end sub_08004238 + + thumb_func_start sub_08004278 +sub_08004278: @ 0x08004278 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + mov sb, r3 + ldr r3, [sp, #0x28] + ldr r4, [sp, #0x2c] + mov r8, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r4, sb + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov sb, r4 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r4, r8 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r8, r4 + ldr r5, _080042F8 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r5, #0 + adds r0, #8 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp, #8] + adds r4, r4, r5 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r6, _080042FC + ldr r5, [sp, #0xc] + ands r5, r6 + orrs r5, r0 + str r5, [sp, #0xc] + ldrb r4, [r4, #4] + lsls r4, r4, #0x13 + ldr r0, _08004300 + ands r0, r5 + orrs r0, r4 + str r0, [sp, #0xc] + mov r0, r8 + str r0, [sp] + str r1, [sp, #4] + add r0, sp, #8 + adds r1, r2, #0 + mov r2, sb + bl sub_08002FE8 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080042F8: .4byte gUnknown_2020004 +_080042FC: .4byte 0xFFFF0000 +_08004300: .4byte 0x0000FFFF + thumb_func_end sub_08004278 + + thumb_func_start sub_08004304 +sub_08004304: @ 0x08004304 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + ldr r4, [sp, #0x4c] + ldr r5, [sp, #0x50] + ldr r6, [sp, #0x54] + mov r8, r6 + ldr r7, [sp, #0x58] + mov sb, r7 + ldr r6, [sp, #0x5c] + mov sl, r6 + ldr r7, [sp, #0x60] + mov ip, r7 + ldr r6, [sp, #0x64] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + mov r7, r8 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov r8, r7 + mov r7, sb + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov sb, r7 + mov r7, sl + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov sl, r7 + mov r7, ip + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov ip, r7 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x28] + str r1, [sp, #0x18] + lsls r5, r5, #0x10 + ldr r6, _080043C4 + lsrs r4, r4, #0x10 + orrs r4, r5 + str r4, [sp, #0x1c] + ldr r1, _080043C8 + lsls r5, r0, #1 + adds r5, r5, r0 + lsls r5, r5, #2 + adds r0, r1, #0 + adds r0, #8 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [sp, #0x20] + adds r5, r5, r1 + ldrb r0, [r5, #3] + lsls r0, r0, #3 + add r1, sp, #0x20 + ldr r4, [r1, #4] + ldr r7, _080043CC + ands r4, r7 + orrs r4, r0 + str r4, [r1, #4] + ldrb r0, [r5, #4] + lsls r0, r0, #0x13 + ands r6, r4 + orrs r6, r0 + str r6, [r1, #4] + mov r0, r8 + str r0, [sp] + mov r6, sb + str r6, [sp, #4] + mov r7, sl + str r7, [sp, #8] + mov r0, ip + 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_08002D98 + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080043C4: .4byte 0x0000FFFF +_080043C8: .4byte gUnknown_2020004 +_080043CC: .4byte 0xFFFF0000 + thumb_func_end sub_08004304 + + thumb_func_start sub_080043D0 +sub_080043D0: @ 0x080043D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + adds r5, r2, #0 + ldr r6, _08004404 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08004408 + adds r3, r1, r0 + str r3, [r6] + ldr r4, _0800440C + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + muls r0, r1, r0 + lsls r0, r0, #6 + strh r0, [r4] + cmp r2, #2 + beq _0800441E + cmp r2, #2 + bgt _08004410 + cmp r2, #1 + beq _08004416 + b _08004440 + .align 2, 0 +_08004404: .4byte gUnknown_2020184 +_08004408: .4byte gUnknown_2020004 +_0800440C: .4byte gUnknown_2020188 +_08004410: + cmp r5, #3 + beq _0800442C + b _08004440 +_08004416: + ldrb r0, [r3] + bl sub_08002248 + b _08004440 +_0800441E: + ldrb r0, [r3] + ldr r1, [r3, #8] + ldrh r2, [r4] + ldrh r3, [r3, #6] + bl sub_0800195C + b _08004440 +_0800442C: + ldrb r0, [r3] + ldr r1, [r3, #8] + ldrh r2, [r4] + ldrh r3, [r3, #6] + bl sub_0800195C + ldr r0, [r6] + ldrb r0, [r0] + bl sub_08002248 +_08004440: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080043D0 + + thumb_func_start sub_08004448 +sub_08004448: @ 0x08004448 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + ldr r2, _08004470 + movs r1, #0x1f +_08004454: + ldrb r0, [r2] + cmp r0, r4 + bne _08004460 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_08004460: + adds r2, #0xc + subs r1, #1 + cmp r1, #0 + bge _08004454 + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08004470: .4byte gUnknown_2020004 + thumb_func_end sub_08004448 + + thumb_func_start sub_08004474 +sub_08004474: @ 0x08004474 + ldr r1, _0800447C + str r0, [r1] + bx lr + .align 2, 0 +_0800447C: .4byte gUnknown_3003020 + thumb_func_end sub_08004474 + + thumb_func_start sub_08004480 +sub_08004480: @ 0x08004480 + push {lr} + ldr r1, _08004498 + movs r2, #0 + movs r3, #0xf8 + lsls r3, r3, #2 + adds r0, r1, r3 +_0800448C: + strb r2, [r0, #0x1b] + subs r0, #0x20 + cmp r0, r1 + bge _0800448C + pop {r0} + bx r0 + .align 2, 0 +_08004498: .4byte gUnknown_20201AC + thumb_func_end sub_08004480 + + thumb_func_start sub_0800449C +sub_0800449C: @ 0x0800449C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r4, [sp, #0x28] + ldr r5, [sp, #0x2c] + ldr r7, [sp, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r8, r5 + str r2, [sp] + mov r2, sp + strb r0, [r2, #4] + mov r0, sp + strb r1, [r0, #5] + strb r3, [r0, #6] + strb r4, [r0, #7] + strb r3, [r0, #8] + strb r4, [r0, #9] + ldr r0, _08004544 + ldr r0, [r0] + lsls r3, r1, #1 + adds r3, r3, r1 + lsls r3, r3, #2 + adds r3, r3, r0 + ldrb r0, [r3, #6] + strb r0, [r2, #0xa] + mov r1, sp + ldrb r0, [r3, #7] + strb r0, [r1, #0xb] + mov r5, sp + ldrb r1, [r3, #8] + lsls r1, r1, #0x1c + movs r6, #0xf + lsrs r1, r1, #0x1c + ldrb r4, [r5, #0xc] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, #0xc] + mov r4, sp + ldrb r1, [r3, #8] + lsrs r1, r1, #4 + lsls r1, r1, #4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, #0xc] + ldrb r0, [r3, #9] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + 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, #9] + lsrs r0, r0, #4 + lsls r0, r0, #4 + ands r2, r6 + orrs r2, r0 + strb r2, [r1, #0xd] + mov r0, sp + mov r1, r8 + adds r2, r7, #0 + bl sub_08004548 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08004544: .4byte gUnknown_3003020 + thumb_func_end sub_0800449C + + thumb_func_start sub_08004548 +sub_08004548: @ 0x08004548 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + mov ip, r2 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _08004560 + ldr r0, [r0] + cmp r0, #0 + bne _08004564 + movs r0, #0 + b _0800461E + .align 2, 0 +_08004560: .4byte gUnknown_3003020 +_08004564: + ldr r0, _080045CC + movs r2, #0 + movs r1, #1 + 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, #6 + adds r0, #0x1a +_0800457A: + strb r2, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _0800457A + 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, ip + str r0, [r4, #0x10] + ldrb r0, [r6, #0xc] + lsrs r0, r0, #4 + ldrb r2, [r6, #0xd] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsrs r2, r2, #4 + bl sub_080046E4 + cmp r5, #0xff + beq _080045D4 + cmp r5, #0 + beq _080045D4 + ldrb r0, [r4, #0x1d] + subs r0, #1 + strb r0, [r4, #0x1d] + ldr r0, _080045D0 + ldrb r1, [r6, #4] + lsls r1, r1, #5 + adds r1, r1, r0 + adds r0, r4, #0 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + ldm r0!, {r4, r7} + stm r1!, {r4, r7} + b _08004616 + .align 2, 0 +_080045CC: .4byte gUnknown_202018C +_080045D0: .4byte gUnknown_20201AC +_080045D4: + ldr r1, _080045E0 + movs r0, #0 + strb r0, [r1, #0x1d] + movs r4, #0 + ldr r7, _080045E4 + b _080045EE + .align 2, 0 +_080045E0: .4byte gUnknown_202018C +_080045E4: .4byte 0x000003FF +_080045E8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080045EE: + cmp r4, r7 + bhi _080045FC + ldr r0, _08004624 + bl sub_080046B8 + cmp r0, #1 + bne _080045E8 +_080045FC: + cmp r5, #0xff + beq _0800460A + ldr r0, _08004624 + ldrb r0, [r0, #4] + movs r1, #2 + bl sub_08003528 +_0800460A: + ldr r0, _08004628 + ldrb r1, [r6, #4] + lsls r1, r1, #5 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1, #0x1b] +_08004616: + ldr r1, _0800462C + movs r0, #0 + strb r0, [r1] + movs r0, #1 +_0800461E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08004624: .4byte gUnknown_202018C +_08004628: .4byte gUnknown_20201AC +_0800462C: .4byte gUnknown_3003024 + thumb_func_end sub_08004548 + + thumb_func_start sub_08004630 +sub_08004630: @ 0x08004630 + push {r4, r5, r6, r7, lr} + ldr r0, _08004660 + ldrb r0, [r0] + cmp r0, #0 + bne _080046A0 + movs r6, #0 + movs r7, #0x1f +_0800463E: + ldr r0, _08004664 + adds r5, r6, r0 + ldrb r0, [r5, #0x1b] + cmp r0, #0 + beq _08004698 + adds r0, r5, #0 + bl sub_080046B8 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + beq _08004694 + cmp r4, #1 + bgt _08004668 + cmp r4, #0 + beq _0800466E + b _08004698 + .align 2, 0 +_08004660: .4byte gUnknown_3003024 +_08004664: .4byte gUnknown_20201AC +_08004668: + cmp r4, #3 + beq _08004676 + b _08004698 +_0800466E: + ldrb r0, [r5, #4] + movs r1, #2 + bl sub_08003528 +_08004676: + ldr r1, _08004690 + adds r0, r1, #0 + adds r0, #0x10 + adds r0, r6, r0 + ldr r2, [r0] + cmp r2, #0 + beq _08004698 + adds r0, r6, r1 + adds r1, r4, #0 + bl _call_via_r2 + b _08004698 + .align 2, 0 +_08004690: .4byte gUnknown_20201AC +_08004694: + movs r0, #0 + strb r0, [r5, #0x1b] +_08004698: + adds r6, #0x20 + subs r7, #1 + cmp r7, #0 + bge _0800463E +_080046A0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08004630 + + thumb_func_start sub_080046A8 +sub_080046A8: @ 0x080046A8 + lsls r0, r0, #0x18 + ldr r1, _080046B4 + lsrs r0, r0, #0x13 + adds r0, r0, r1 + ldrb r0, [r0, #0x1b] + bx lr + .align 2, 0 +_080046B4: .4byte gUnknown_20201AC + thumb_func_end sub_080046A8 + + thumb_func_start sub_080046B8 +sub_080046B8: @ 0x080046B8 + push {r4, lr} + adds r4, r0, #0 +_080046BC: + ldrb r1, [r4, #5] + ldr r0, _080046E0 + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + beq _080046BC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080046E0: .4byte gUnknown_3003020 + thumb_func_end sub_080046B8 + + thumb_func_start sub_080046E4 +sub_080046E4: @ 0x080046E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r1, [sp] + str r0, [sp, #4] + str r2, [sp, #8] + ldr r3, _08004788 + strh r1, [r3] + ldr r1, _0800478C + strh r0, [r1] + ldr r0, _08004790 + strh r2, [r0] + movs r0, #0 + mov ip, r0 + movs r1, #0 +_08004714: + movs r2, #0 + lsls r0, r1, #2 + adds r1, #1 + mov sl, r1 + add r0, sp + mov r8, r0 +_08004720: + movs r1, #0 + lsls r0, r2, #2 + adds r2, #1 + mov sb, r2 + add r0, sp + str r0, [sp, #0xc] +_0800472C: + lsls r0, r1, #2 + adds r6, r1, #1 + mov r1, sp + adds r4, r1, r0 + mov r5, sp + mov r7, ip + lsls r0, r7, #1 + ldr r1, _08004794 + adds r2, r0, r1 + movs r3, #2 +_08004740: + ldm r5!, {r1} + lsls r1, r1, #0xc + ldr r0, [r4] + lsls r0, r0, #8 + orrs r1, r0 + ldr r7, [sp, #0xc] + ldr r0, [r7] + lsls r0, r0, #4 + orrs r1, r0 + mov r7, r8 + ldr r0, [r7] + orrs r0, r1 + strh r0, [r2] + adds r2, #2 + movs r0, #1 + add ip, r0 + subs r3, #1 + cmp r3, #0 + bge _08004740 + adds r1, r6, #0 + cmp r1, #2 + ble _0800472C + mov r2, sb + cmp r2, #2 + ble _08004720 + mov r1, sl + cmp r1, #2 + ble _08004714 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08004788: .4byte gUnknown_30009EA +_0800478C: .4byte gUnknown_30009EC +_08004790: .4byte gUnknown_30009EE +_08004794: .4byte gUnknown_3000948 + thumb_func_end sub_080046E4 + + thumb_func_start sub_08004798 +sub_08004798: @ 0x08004798 + ldr r3, _080047AC + ldrh r3, [r3] + strb r3, [r1] + ldr r1, _080047B0 + ldrh r1, [r1] + strb r1, [r0] + ldr r0, _080047B4 + ldrh r0, [r0] + strb r0, [r2] + bx lr + .align 2, 0 +_080047AC: .4byte gUnknown_30009EA +_080047B0: .4byte gUnknown_30009EC +_080047B4: .4byte gUnknown_30009EE + thumb_func_end sub_08004798 + + thumb_func_start sub_080047B8 +sub_080047B8: @ 0x080047B8 + push {lr} + ldrb r0, [r0] + ldrb r1, [r1] + ldrb r2, [r2] + bl sub_080046E4 + pop {r0} + bx r0 + thumb_func_end sub_080047B8 + + thumb_func_start sub_080047C8 +sub_080047C8: @ 0x080047C8 + push {r4, r5, lr} + adds r2, r0, #0 + movs r3, #0 + ldr r5, _080047E0 + ldr r4, _080047E4 +_080047D2: + lsls r0, r3, #0x1f + cmp r0, #0 + beq _080047E8 + ldrb r0, [r2] + adds r2, #2 + b _080047EC + .align 2, 0 +_080047E0: .4byte gUnknown_3000948 +_080047E4: .4byte gUnknown_829BEB8 +_080047E8: + ldrh r0, [r2] + lsrs r0, r0, #8 +_080047EC: + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + adds r3, #1 + cmp r3, #0xf + ble _080047D2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080047C8 + + thumb_func_start sub_08004808 +sub_08004808: @ 0x08004808 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _0800483C + cmp r0, #1 + bgt _0800481E + cmp r0, #0 + beq _08004824 + b _08004848 +_0800481E: + cmp r1, #2 + beq _08004830 + b _08004848 +_08004824: + ldr r0, _0800482C + ldrb r0, [r0] + b _0800484A + .align 2, 0 +_0800482C: .4byte gUnknown_30009EC +_08004830: + ldr r0, _08004838 + ldrb r0, [r0] + b _0800484A + .align 2, 0 +_08004838: .4byte gUnknown_30009EA +_0800483C: + ldr r0, _08004844 + ldrb r0, [r0] + b _0800484A + .align 2, 0 +_08004844: .4byte gUnknown_30009EE +_08004848: + movs r0, #0 +_0800484A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08004808 + + thumb_func_start sub_08004850 +sub_08004850: @ 0x08004850 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x6c + adds r6, r0, #0 + ldr r0, _080048C0 + mov sb, r0 + ldrb r1, [r6, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, sb + adds r2, r0, r1 + ldrb r0, [r2, #3] + lsls r0, r0, #3 + ldrb r1, [r6, #8] + subs r1, r0, r1 + ldr r3, _080048C4 + mov r8, r3 + mov r0, r8 + adds r0, #0x80 + ldrb r7, [r0] + cmp r1, r7 + bge _08004886 + adds r7, r1, #0 +_08004886: + ldrb r0, [r2, #4] + lsls r0, r0, #3 + ldrb r4, [r6, #9] + subs r0, r0, r4 + adds r1, r3, #0 + adds r1, #0x81 + ldrb r1, [r1] + mov sl, r1 + adds r5, r4, #0 + cmp r0, sl + bge _0800489E + mov sl, r0 +_0800489E: + movs r1, #0 + cmp r7, #8 + ble _080048A6 + movs r1, #1 +_080048A6: + mov r0, sl + cmp r0, #8 + ble _080048B0 + movs r0, #2 + orrs r1, r0 +_080048B0: + cmp r1, #1 + beq _08004970 + cmp r1, #1 + bgt _080048C8 + cmp r1, #0 + beq _080048D6 + b _08004E38 + .align 2, 0 +_080048C0: .4byte gUnknown_2020004 +_080048C4: .4byte gUnknown_3003030 +_080048C8: + cmp r1, #2 + bne _080048CE + b _08004AA4 +_080048CE: + cmp r1, #3 + bne _080048D4 + b _08004BDC +_080048D4: + b _08004E38 +_080048D6: + adds r2, r3, #0 + movs r1, #0 + adds r0, r5, #0 + cmp r1, sl + blt _080048E2 + b _08004E38 +_080048E2: + ldm r2!, {r3} + str r3, [sp] + movs r5, #0 + ldrb r4, [r6, #8] + str r2, [sp, #0x28] + adds r1, #1 + str r1, [sp, #0x20] + adds r1, r0, #1 + str r1, [sp, #0x24] + cmp r5, r7 + bge _08004960 + ldr r2, _0800496C + mov ip, r2 + asrs r3, r0, #3 + mov sb, r3 + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004906: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + mov r1, ip + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r3, ip + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, 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 _08004958 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004958: + adds r5, #1 + adds r4, #1 + cmp r5, r7 + blt _08004906 +_08004960: + ldr r2, [sp, #0x28] + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x24] + cmp r1, sl + blt _080048E2 + b _08004E38 + .align 2, 0 +_0800496C: .4byte gUnknown_2020004 +_08004970: + movs r2, #0 + adds r1, r5, #0 + cmp r2, sl + bge _080049FA +_08004978: + ldm r3!, {r0} + mov sb, r0 + movs r5, #0 + ldrb r4, [r6, #8] + lsls r0, r1, #0x1d + str r3, [sp, #0x38] + adds r2, #1 + str r2, [sp, #0x30] + adds r2, r1, #1 + str r2, [sp, #0x34] + asrs r1, r1, #3 + mov ip, r1 + lsrs r0, r0, #0x1b + mov r8, r0 +_08004994: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r1, _08004A9C + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _08004A9C + adds r3, r3, r0 + ldrb r0, [r3, #3] + mov r2, ip + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, sb + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _080049E8 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_080049E8: + adds r5, #1 + adds r4, #1 + cmp r5, #7 + ble _08004994 + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x34] + cmp r2, sl + blt _08004978 +_080049FA: + ldr r3, _08004AA0 + movs r2, #0 + ldrb r1, [r6, #9] + cmp r2, sl + blt _08004A06 + b _08004E38 +_08004A06: + subs r7, #8 + str r7, [sp, #0x64] + str r7, [sp, #4] +_08004A0C: + ldm r3!, {r0} + mov ip, r0 + movs r5, #0 + ldrb r0, [r6, #8] + adds r4, r0, #0 + adds r4, #8 + str r3, [sp, #0x50] + adds r2, #1 + str r2, [sp, #0x48] + adds r2, r1, #1 + str r2, [sp, #0x4c] + ldr r3, [sp, #4] + cmp r5, r3 + bge _08004A90 + ldr r7, _08004A9C + asrs r0, r1, #3 + mov sb, r0 + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004A34: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r1, r7, #0 + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r3, r3, r7 + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, ip + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004A86 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004A86: + adds r5, #1 + adds r4, #1 + ldr r1, [sp, #0x64] + cmp r5, r1 + blt _08004A34 +_08004A90: + ldr r3, [sp, #0x50] + ldr r2, [sp, #0x48] + ldr r1, [sp, #0x4c] + cmp r2, sl + blt _08004A0C + b _08004E38 + .align 2, 0 +_08004A9C: .4byte gUnknown_2020004 +_08004AA0: .4byte gUnknown_3003050 +_08004AA4: + adds r1, r3, #0 + movs r2, #0 + adds r0, r5, #0 + mov r3, sl + subs r3, #8 + str r3, [sp, #0x68] +_08004AB0: + ldm r1!, {r3} + mov sl, r3 + movs r5, #0 + ldrb r4, [r6, #8] + str r1, [sp, #0x60] + adds r2, #1 + str r2, [sp, #0x58] + adds r1, r0, #1 + str r1, [sp, #0x5c] + cmp r5, r7 + bge _08004B2E + ldr r2, _08004BD4 + mov ip, r2 + asrs r3, r0, #3 + mov sb, r3 + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004AD4: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + mov r1, ip + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r3, ip + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, sl + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004B26 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004B26: + adds r5, #1 + adds r4, #1 + cmp r5, r7 + blt _08004AD4 +_08004B2E: + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x58] + ldr r0, [sp, #0x5c] + cmp r2, #7 + ble _08004AB0 + ldr r2, _08004BD8 + movs r1, #0 + ldrb r0, [r6, #9] + adds r0, #8 + ldr r3, [sp, #0x68] + cmp r1, r3 + blt _08004B48 + b _08004E38 +_08004B48: + ldm r2!, {r3} + mov sl, r3 + movs r5, #0 + ldrb r4, [r6, #8] + str r2, [sp, #0x1c] + adds r1, #1 + str r1, [sp, #0x14] + adds r1, r0, #1 + str r1, [sp, #0x18] + cmp r5, r7 + bge _08004BC6 + ldr r2, _08004BD4 + mov ip, r2 + asrs r3, r0, #3 + mov sb, r3 + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004B6C: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + mov r1, ip + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r3, ip + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, sl + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004BBE + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004BBE: + adds r5, #1 + adds r4, #1 + cmp r5, r7 + blt _08004B6C +_08004BC6: + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x68] + cmp r1, r3 + blt _08004B48 + b _08004E38 + .align 2, 0 +_08004BD4: .4byte gUnknown_2020004 +_08004BD8: .4byte gUnknown_3003070 +_08004BDC: + mov r2, r8 + movs r3, #0 + adds r1, r4, #0 + subs r7, #8 + str r7, [sp, #0x64] + mov r0, sl + subs r0, #8 + str r0, [sp, #0x68] +_08004BEC: + ldm r2!, {r0} + mov sb, r0 + movs r5, #0 + ldrb r4, [r6, #8] + lsls r0, r1, #0x1d + str r2, [sp, #0x2c] + adds r3, #1 + mov sl, r3 + adds r2, r1, #1 + mov ip, r2 + asrs r1, r1, #3 + mov r8, r1 + lsrs r7, r0, #0x1b +_08004C06: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r1, _08004D0C + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _08004D0C + adds r3, r3, r0 + ldrb r0, [r3, #3] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r3, r1, r7 + lsls r0, r5, #2 + mov r2, sb + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004C58 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004C58: + adds r5, #1 + adds r4, #1 + cmp r5, #7 + ble _08004C06 + ldr r2, [sp, #0x2c] + mov r3, sl + mov r1, ip + cmp r3, #7 + ble _08004BEC + ldr r3, _08004D10 + movs r2, #0 + ldrb r1, [r6, #9] + ldr r0, [sp, #0x64] + mov ip, r0 +_08004C74: + ldm r3!, {r0} + mov sl, r0 + movs r5, #0 + ldrb r0, [r6, #8] + adds r4, r0, #0 + adds r4, #8 + str r3, [sp, #0x44] + adds r2, #1 + str r2, [sp, #0x3c] + adds r2, r1, #1 + str r2, [sp, #0x40] + cmp r5, ip + bge _08004CF4 + ldr r7, _08004D0C + asrs r3, r1, #3 + mov sb, r3 + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004C9A: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r1, r7, #0 + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r3, r3, r7 + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, sl + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004CEC + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004CEC: + adds r5, #1 + adds r4, #1 + cmp r5, ip + blt _08004C9A +_08004CF4: + ldr r3, [sp, #0x44] + ldr r2, [sp, #0x3c] + ldr r1, [sp, #0x40] + cmp r2, #7 + ble _08004C74 + ldr r3, _08004D14 + movs r2, #0 + ldrb r0, [r6, #9] + adds r1, r0, #0 + adds r1, #8 + b _08004D92 + .align 2, 0 +_08004D0C: .4byte gUnknown_2020004 +_08004D10: .4byte gUnknown_3003050 +_08004D14: .4byte gUnknown_3003070 +_08004D18: + ldm r3!, {r0} + mov sb, r0 + movs r5, #0 + ldrb r4, [r6, #8] + lsls r0, r1, #0x1d + str r3, [sp, #0x54] + adds r2, #1 + mov sl, r2 + adds r2, r1, #1 + mov ip, r2 + asrs r1, r1, #3 + mov r8, r1 + lsrs r7, r0, #0x1b +_08004D32: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r1, _08004E48 + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _08004E48 + adds r3, r3, r0 + ldrb r0, [r3, #3] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r3, r1, r7 + lsls r0, r5, #2 + mov r2, sb + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004D84 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004D84: + adds r5, #1 + adds r4, #1 + cmp r5, #7 + ble _08004D32 + ldr r3, [sp, #0x54] + mov r2, sl + mov r1, ip +_08004D92: + ldr r0, [sp, #0x68] + cmp r2, r0 + blt _08004D18 + ldr r3, _08004E4C + movs r2, #0 + ldrb r0, [r6, #9] + adds r1, r0, #0 + adds r1, #8 + ldr r0, [sp, #0x68] + cmp r2, r0 + bge _08004E38 + ldr r0, [sp, #0x64] + mov sl, r0 +_08004DAC: + ldm r3!, {r0} + mov ip, r0 + movs r5, #0 + ldrb r0, [r6, #8] + adds r4, r0, #0 + adds r4, #8 + str r3, [sp, #0x10] + adds r2, #1 + str r2, [sp, #8] + adds r2, r1, #1 + str r2, [sp, #0xc] + cmp r5, sl + bge _08004E2C + ldr r7, _08004E48 + asrs r3, r1, #3 + mov sb, r3 + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1b + mov r8, r0 +_08004DD2: + ldrb r0, [r6, #4] + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r1, r7, #0 + adds r1, #8 + adds r1, r3, r1 + asrs r2, r4, #1 + movs r0, #3 + ands r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + asrs r0, r4, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r3, r3, r7 + ldrb r0, [r3, #3] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r0, r8 + adds r3, r1, r0 + lsls r0, r5, #2 + mov r2, ip + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004E24 + movs r0, #1 + ands r0, r4 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r3] + ands r1, r0 + orrs r2, r1 + strb r2, [r3] +_08004E24: + adds r5, #1 + adds r4, #1 + cmp r5, sl + blt _08004DD2 +_08004E2C: + ldr r3, [sp, #0x10] + ldr r2, [sp, #8] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x68] + cmp r2, r0 + blt _08004DAC +_08004E38: + add sp, #0x6c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08004E48: .4byte gUnknown_2020004 +_08004E4C: .4byte gUnknown_3003090 + thumb_func_end sub_08004850 + + thumb_func_start sub_08004E50 +sub_08004E50: @ 0x08004E50 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + str r0, [sp] + ldr r0, [sp, #0x60] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #8] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + subs r1, r3, r1 + ldr r5, _08004EC4 + adds r0, r5, #0 + adds r0, #0x80 + ldrb r7, [r0] + adds r2, r5, #0 + cmp r1, r7 + bge _08004E86 + adds r7, r1, #0 +_08004E86: + ldr r1, [sp, #8] + subs r0, r4, r1 + adds r1, r2, #0 + adds r1, #0x81 + ldrb r1, [r1] + str r1, [sp, #0xc] + cmp r0, r1 + bge _08004E98 + str r0, [sp, #0xc] +_08004E98: + movs r1, #0 + movs r0, #7 + ands r0, r3 + adds r0, r3, r0 + lsrs r0, r0, #3 + str r0, [sp, #0x10] + cmp r7, #8 + ble _08004EAA + movs r1, #1 +_08004EAA: + ldr r3, [sp, #0xc] + cmp r3, #8 + ble _08004EB4 + movs r0, #2 + orrs r1, r0 +_08004EB4: + cmp r1, #1 + beq _08004F54 + cmp r1, #1 + bgt _08004EC8 + cmp r1, #0 + beq _08004ED6 + b _0800533C + .align 2, 0 +_08004EC4: .4byte gUnknown_3003030 +_08004EC8: + cmp r1, #2 + bne _08004ECE + b _08005058 +_08004ECE: + cmp r1, #3 + bne _08004ED4 + b _08005158 +_08004ED4: + b _0800533C +_08004ED6: + adds r1, r2, #0 + movs r0, #0 + ldr r2, [sp, #8] + ldr r3, [sp, #0xc] + cmp r0, r3 + blt _08004EE4 + b _0800533C +_08004EE4: + ldm r1!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #4] + str r1, [sp, #0x28] + adds r0, #1 + mov sb, r0 + adds r0, r2, #1 + mov sl, r0 + cmp r5, r7 + bge _08004F46 + asrs r0, r2, #3 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + lsls r0, r0, #5 + mov ip, r0 + lsls r0, r2, #0x1d + lsrs r6, r0, #0x1b +_08004F08: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r6 + lsls r0, r5, #2 + mov r2, r8 + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004F3E + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08004F3E: + adds r5, #1 + adds r3, #1 + cmp r5, r7 + blt _08004F08 +_08004F46: + ldr r1, [sp, #0x28] + mov r0, sb + mov r2, sl + ldr r3, [sp, #0xc] + cmp r0, r3 + blt _08004EE4 + b _0800533C +_08004F54: + adds r5, r2, #0 + movs r4, #0 + ldr r2, [sp, #8] + ldr r0, [sp, #0xc] + cmp r4, r0 + bge _08004FCA +_08004F60: + ldm r5!, {r1} + mov r8, r1 + movs r6, #0 + ldr r3, [sp, #4] + asrs r0, r2, #3 + lsls r1, r2, #0x1d + str r5, [sp, #0x2c] + adds r4, #1 + mov sb, r4 + adds r2, #1 + mov sl, r2 + ldr r2, [sp, #0x10] + muls r0, r2, r0 + lsls r0, r0, #5 + mov ip, r0 + lsrs r5, r1, #0x1b +_08004F80: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r5 + lsls r0, r6, #2 + mov r2, r8 + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _08004FB6 + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08004FB6: + adds r6, #1 + adds r3, #1 + cmp r6, #7 + ble _08004F80 + ldr r5, [sp, #0x2c] + mov r4, sb + mov r2, sl + ldr r1, [sp, #0xc] + cmp r4, r1 + blt _08004F60 +_08004FCA: + ldr r1, _08005054 + movs r0, #0 + ldr r2, [sp, #8] + ldr r3, [sp, #0xc] + cmp r0, r3 + blt _08004FD8 + b _0800533C +_08004FD8: + subs r7, #8 + str r7, [sp, #0x18] + str r7, [sp, #0x14] +_08004FDE: + ldm r1!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #4] + adds r3, #8 + mov ip, r1 + adds r0, #1 + mov sb, r0 + adds r0, r2, #1 + mov sl, r0 + ldr r1, [sp, #0x14] + cmp r5, r1 + bge _08005044 + asrs r0, r2, #3 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + lsls r7, r0, #5 + lsls r0, r2, #0x1d + lsrs r6, r0, #0x1b +_08005004: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, 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 _0800503A + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800503A: + adds r5, #1 + adds r3, #1 + ldr r0, [sp, #0x18] + cmp r5, r0 + blt _08005004 +_08005044: + mov r1, ip + mov r0, sb + mov r2, sl + ldr r3, [sp, #0xc] + cmp r0, r3 + blt _08004FDE + b _0800533C + .align 2, 0 +_08005054: .4byte gUnknown_3003050 +_08005058: + adds r0, r2, #0 + movs r1, #0 + ldr r2, [sp, #8] + adds r3, r2, #0 + adds r3, #8 + str r3, [sp, #0x1c] + ldr r3, [sp, #0xc] + subs r3, #8 + str r3, [sp, #0x20] +_0800506A: + ldm r0!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #4] + str r0, [sp, #0x34] + adds r1, #1 + mov sb, r1 + adds r0, r2, #1 + mov sl, r0 + cmp r5, r7 + bge _080050CC + asrs r0, r2, #3 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + lsls r0, r0, #5 + mov ip, r0 + lsls r0, r2, #0x1d + lsrs r6, r0, #0x1b +_0800508E: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r6 + lsls r0, r5, #2 + mov r2, r8 + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _080050C4 + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080050C4: + adds r5, #1 + adds r3, #1 + cmp r5, r7 + blt _0800508E +_080050CC: + ldr r0, [sp, #0x34] + mov r1, sb + mov r2, sl + cmp r1, #7 + ble _0800506A + ldr r2, _08005154 + movs r0, #0 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x20] + cmp r0, r3 + blt _080050E4 + b _0800533C +_080050E4: + ldm r2!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #4] + str r2, [sp, #0x38] + adds r0, #1 + mov sb, r0 + adds r0, r1, #1 + mov sl, r0 + cmp r5, r7 + bge _08005146 + asrs r0, r1, #3 + ldr r2, [sp, #0x10] + muls r0, r2, r0 + lsls r0, r0, #5 + mov ip, r0 + lsls r0, r1, #0x1d + lsrs r6, r0, #0x1b +_08005108: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + add r1, ip + adds r4, r1, r6 + lsls r0, r5, #2 + mov r2, r8 + lsrs r2, r0 + movs r0, #0xf + ands r2, r0 + cmp r2, #0 + beq _0800513E + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800513E: + adds r5, #1 + adds r3, #1 + cmp r5, r7 + blt _08005108 +_08005146: + ldr r2, [sp, #0x38] + mov r0, sb + mov r1, sl + ldr r3, [sp, #0x20] + cmp r0, r3 + blt _080050E4 + b _0800533C + .align 2, 0 +_08005154: .4byte gUnknown_3003070 +_08005158: + movs r2, #0 + ldr r4, [sp, #8] + ldr r0, [sp, #4] + adds r0, #8 + str r0, [sp, #0x3c] + subs r7, #8 + str r7, [sp, #0x18] + adds r1, r4, #0 + adds r1, #8 + str r1, [sp, #0x1c] + ldr r3, [sp, #0xc] + subs r3, #8 + str r3, [sp, #0x20] +_08005172: + ldm r5!, {r0} + mov r8, r0 + movs r6, #0 + ldr r3, [sp, #4] + asrs r0, r4, #3 + lsls r1, r4, #0x1d + mov sl, r5 + adds r2, #1 + mov ip, r2 + adds r4, #1 + mov sb, r4 + ldr r2, [sp, #0x10] + muls r0, r2, r0 + lsls r7, r0, #5 + lsrs r5, r1, #0x1b +_08005190: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, 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 _080051C6 + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080051C6: + adds r6, #1 + adds r3, #1 + cmp r6, #7 + ble _08005190 + mov r5, sl + mov r2, ip + mov r4, sb + cmp r2, #7 + ble _08005172 + ldr r1, _0800534C + movs r0, #0 + ldr r2, [sp, #8] + ldr r3, [sp, #0x18] + mov ip, r3 +_080051E2: + ldm r1!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #0x3c] + str r1, [sp, #0x24] + adds r0, #1 + mov sb, r0 + adds r0, r2, #1 + mov sl, r0 + cmp r5, ip + bge _08005242 + asrs r0, r2, #3 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + lsls r7, r0, #5 + lsls r0, r2, #0x1d + lsrs r6, r0, #0x1b +_08005204: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, 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 _0800523A + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_0800523A: + adds r5, #1 + adds r3, #1 + cmp r5, ip + blt _08005204 +_08005242: + ldr r1, [sp, #0x24] + mov r0, sb + mov r2, sl + cmp r0, #7 + ble _080051E2 + ldr r6, _08005350 + movs r4, #0 + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + cmp r4, r3 + bge _080052C0 +_08005258: + ldm r6!, {r0} + mov r8, r0 + movs r5, #0 + ldr r3, [sp, #4] + asrs r0, r2, #3 + lsls r1, r2, #0x1d + mov ip, r6 + adds r4, #1 + mov sb, r4 + adds r2, #1 + mov sl, r2 + ldr r2, [sp, #0x10] + muls r0, r2, r0 + lsls r7, r0, #5 + lsrs r6, r1, #0x1b +_08005276: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, 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 _080052AC + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_080052AC: + adds r5, #1 + adds r3, #1 + cmp r5, #7 + ble _08005276 + mov r6, ip + mov r4, sb + mov r2, sl + ldr r1, [sp, #0x20] + cmp r4, r1 + blt _08005258 +_080052C0: + ldr r2, _08005354 + movs r0, #0 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x20] + cmp r0, r3 + bge _0800533C + ldr r3, [sp, #0x18] + mov ip, r3 +_080052D0: + ldm r2!, {r3} + mov r8, r3 + movs r5, #0 + ldr r3, [sp, #0x3c] + str r2, [sp, #0x30] + adds r0, #1 + mov sb, r0 + adds r0, r1, #1 + mov sl, r0 + cmp r5, ip + bge _08005330 + asrs r0, r1, #3 + ldr r2, [sp, #0x10] + muls r0, r2, r0 + lsls r7, r0, #5 + lsls r0, r1, #0x1d + lsrs r6, r0, #0x1b +_080052F2: + asrs r1, r3, #1 + movs r0, #3 + ands r1, r0 + ldr r0, [sp] + adds r1, r0, r1 + asrs r0, r3, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, 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 _08005328 + movs r0, #1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + movs r1, #0xf0 + asrs r1, r0 + ldrb r0, [r4] + ands r1, r0 + orrs r2, r1 + strb r2, [r4] +_08005328: + adds r5, #1 + adds r3, #1 + cmp r5, ip + blt _080052F2 +_08005330: + ldr r2, [sp, #0x30] + mov r0, sb + mov r1, sl + ldr r3, [sp, #0x20] + cmp r0, r3 + blt _080052D0 +_0800533C: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800534C: .4byte gUnknown_3003050 +_08005350: .4byte gUnknown_3003070 +_08005354: .4byte gUnknown_3003090 + thumb_func_end sub_08004E50 + + thumb_func_start sub_08005358 +sub_08005358: @ 0x08005358 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0800537C + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_0800537C: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08005358 + + thumb_func_start sub_0800538C +sub_0800538C: @ 0x0800538C + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080053B4 + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_080053B4: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800538C + + thumb_func_start sub_080053C4 +sub_080053C4: @ 0x080053C4 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080053EC + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_080053EC: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080053C4 + + thumb_func_start sub_080053FC +sub_080053FC: @ 0x080053FC + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08005424 + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_08005424: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080053FC + + thumb_func_start sub_08005434 +sub_08005434: @ 0x08005434 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0800545C + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_0800545C: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08005434 + + thumb_func_start sub_0800546C +sub_0800546C: @ 0x0800546C + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x14 + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08005494 + ldrb r1, [r2, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] +_08005494: + adds r0, r2, #0 + bl sub_08005760 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800546C + + thumb_func_start sub_080054A4 +sub_080054A4: @ 0x080054A4 + push {lr} + adds r2, r0, #0 + adds r2, #0x14 + ldr r0, _080054BC + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080054C0 + movs r0, #0 + strb r0, [r2, #2] + b _080054D0 + .align 2, 0 +_080054BC: .4byte gUnknown_30030B4 +_080054C0: + ldrb r0, [r2, #1] + movs r1, #0x61 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x20 + rsbs r0, r0, #0 + ands r1, r0 + strb r1, [r2, #1] +_080054D0: + pop {r0} + bx r0 + thumb_func_end sub_080054A4 + + thumb_func_start sub_080054D4 +sub_080054D4: @ 0x080054D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + adds r5, r0, #0 + adds r6, r5, #0 + adds r6, #0x14 + ldr r7, _08005508 + ldrb r1, [r7] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0800559A + ldrb r2, [r6, #1] + movs r0, #0x1f + ands r0, r2 + cmp r0, #0 + beq _0800550C + ldr r0, [r5, #0x14] + lsls r0, r0, #0x13 + lsrs r0, r0, #0x1b + subs r0, #1 + movs r1, #0x1f + ands r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + b _08005594 + .align 2, 0 +_08005508: .4byte gUnknown_30030B4 +_0800550C: + ldrb r0, [r5, #4] + ldrb r2, [r5, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + ldrb r2, [r5, #8] + ldrb r3, [r5, #9] + movs r4, #8 + str r4, [sp] + movs r4, #0x10 + str r4, [sp, #4] + bl sub_08003A34 + ldr r0, [r7] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + cmp r0, #0 + beq _08005536 + cmp r0, #1 + beq _08005540 +_08005536: + ldr r7, _0800553C + b _08005542 + .align 2, 0 +_0800553C: .4byte gUnknown_829BFB8 +_08005540: + ldr r7, _080055A4 +_08005542: + ldrb r0, [r5, #4] + ldr r2, _080055A8 + ldr r1, [r6] + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1e + adds r1, r1, r2 + ldrb r3, [r1] + movs r4, #8 + str r4, [sp] + movs r2, #0x10 + str r2, [sp, #4] + ldrb r1, [r5, #8] + str r1, [sp, #8] + ldrb r1, [r5, #9] + str r1, [sp, #0xc] + str r4, [sp, #0x10] + str r2, [sp, #0x14] + adds r1, r7, #0 + movs r2, #0 + bl sub_080038AC + ldrb r0, [r5, #4] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r6, #1] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r6, #1] + ldr r0, [r6] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1e + adds r0, #1 + movs r2, #3 + ands r0, r2 + lsls r0, r0, #5 + movs r2, #0x61 + rsbs r2, r2, #0 +_08005594: + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #1] +_0800559A: + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080055A4: .4byte gUnknown_829C078 +_080055A8: .4byte gUnknown_829C638 + thumb_func_end sub_080054D4 + + thumb_func_start sub_080055AC +sub_080055AC: @ 0x080055AC + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldrb r0, [r5, #4] + ldrb r2, [r5, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + ldrb r2, [r5, #8] + ldrb r3, [r5, #9] + movs r4, #8 + str r4, [sp] + movs r4, #0x10 + str r4, [sp, #4] + bl sub_08003A34 + ldrb r0, [r5, #4] + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080055AC + + thumb_func_start sub_080055E0 +sub_080055E0: @ 0x080055E0 + push {lr} + adds r1, r0, #0 + adds r1, #0x14 + ldrb r0, [r1, #2] + cmp r0, #0x31 + beq _080055F4 + adds r0, #1 + strb r0, [r1, #2] + movs r0, #0 + b _080055F6 +_080055F4: + movs r0, #1 +_080055F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080055E0 + + thumb_func_start sub_080055FC +sub_080055FC: @ 0x080055FC + push {r4, lr} + adds r2, r0, #0 + movs r4, #0 + ldr r0, _0800561C + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08005620 + adds r0, r2, #0 + bl sub_080055E0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _0800563A + .align 2, 0 +_0800561C: .4byte gUnknown_30030B4 +_08005620: + adds r0, r2, #0 + bl sub_080054D4 + ldr r0, _08005644 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0800563A + movs r4, #1 + movs r0, #5 + bl sub_080A306C +_0800563A: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08005644: .4byte gUnknown_3002360 + thumb_func_end sub_080055FC + + thumb_func_start sub_08005648 +sub_08005648: @ 0x08005648 + push {r4, lr} + adds r2, r0, #0 + movs r4, #0 + ldr r0, _08005668 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0800566C + adds r0, r2, #0 + bl sub_080055E0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _08005680 + .align 2, 0 +_08005668: .4byte gUnknown_30030B4 +_0800566C: + ldr r0, _08005688 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08005680 + movs r4, #1 + movs r0, #5 + bl sub_080A306C +_08005680: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08005688: .4byte gUnknown_3002360 + thumb_func_end sub_08005648 + + thumb_func_start sub_0800568C +sub_0800568C: @ 0x0800568C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + ldr r4, [sp, #0x38] + ldr r5, [sp, #0x3c] + mov sb, r5 + ldr r5, [sp, #0x40] + mov sl, r5 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sb + ldrb r0, [r1] + cmp r0, #0 + beq _080056C6 + subs r0, #1 + strb r0, [r1] + b _08005746 +_080056C6: + lsls r1, r3, #4 + orrs r1, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #8 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r5, #0 + mov r2, r8 + adds r3, r7, #0 + bl sub_08003A34 + cmp r4, #0 + bne _08005746 + ldr r0, _080056F8 + ldr r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + cmp r0, #0 + beq _080056F4 + cmp r0, #1 + beq _08005700 +_080056F4: + ldr r6, _080056FC + b _08005702 + .align 2, 0 +_080056F8: .4byte gUnknown_30030B4 +_080056FC: .4byte gUnknown_829BFB8 +_08005700: + ldr r6, _08005758 +_08005702: + ldr r2, _0800575C + mov r0, sl + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r3, [r0] + movs r4, #8 + str r4, [sp] + movs r1, #0x10 + str r1, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + subs r0, r7, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + str r4, [sp, #0x10] + str r1, [sp, #0x14] + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_080038AC + adds r0, r5, #0 + movs r1, #2 + bl sub_08003528 + mov r1, sb + strb r4, [r1] + mov r5, sl + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] +_08005746: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08005758: .4byte gUnknown_829C078 +_0800575C: .4byte gUnknown_829C638 + thumb_func_end sub_0800568C + + thumb_func_start sub_08005760 +sub_08005760: @ 0x08005760 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r6, #0 + adds r4, #0x14 + ldrb r0, [r6, #0x1c] + cmp r0, #6 + bls _08005770 + b _08005C40 +_08005770: + lsls r0, r0, #2 + ldr r1, _0800577C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800577C: .4byte _08005780 +_08005780: @ jump table + .4byte _0800579C @ case 0 + .4byte _08005B50 @ case 1 + .4byte _08005B62 @ case 2 + .4byte _08005B8C @ case 3 + .4byte _08005BC4 @ case 4 + .4byte _08005C1C @ case 5 + .4byte _08005C2E @ case 6 +_0800579C: + ldr r2, _080057F0 + ldrh r1, [r2, #0x2c] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080057B6 + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080057B6 + movs r0, #0 + strb r0, [r6, #0x1e] +_080057B6: + ldrb r1, [r6, #0x1e] + cmp r1, #0 + beq _080057F8 + ldrb r0, [r6, #0x1d] + cmp r0, #0 + beq _080057F8 + subs r0, r1, #1 + strb r0, [r6, #0x1e] + ldr r0, _080057F4 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080057D4 + b _08005A96 +_080057D4: + ldrh r1, [r2, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080057E0 + b _08005A96 +_080057E0: + ldrb r0, [r4] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4] + movs r0, #0 + strb r0, [r6, #0x1e] + b _08005A96 + .align 2, 0 +_080057F0: .4byte gUnknown_3002360 +_080057F4: .4byte gUnknown_30030B4 +_080057F8: + ldr r0, _08005818 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08005820 + ldr r0, _0800581C + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08005820 + movs r0, #3 + b _08005822 + .align 2, 0 +_08005818: .4byte gUnknown_2022C90 +_0800581C: .4byte gUnknown_30030B4 +_08005820: + ldrb r0, [r6, #0x1d] +_08005822: + strb r0, [r6, #0x1e] + ldr r0, [r6] + ldrb r3, [r0] + adds r0, #1 + str r0, [r6] + adds r0, r3, #0 + subs r0, #0xf8 + cmp r0, #7 + bls _08005836 + b _08005AD4 +_08005836: + lsls r0, r0, #2 + ldr r1, _08005840 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005840: .4byte _08005844 +_08005844: @ jump table + .4byte _08005AAC @ case 0 + .4byte _08005A9A @ case 1 + .4byte _08005A8C @ case 2 + .4byte _08005A88 @ case 3 + .4byte _08005888 @ case 4 + .4byte _08005A80 @ case 5 + .4byte _08005864 @ case 6 + .4byte _08005C40 @ case 7 +_08005864: + ldrb r0, [r6, #6] + strb r0, [r6, #8] + ldrb r1, [r6, #5] + ldr r0, _08005884 + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r6, #0xb] + ldrb r0, [r0, #5] + adds r1, r1, r0 + ldrb r0, [r6, #9] + adds r0, r0, r1 + b _08005A62 + .align 2, 0 +_08005884: .4byte gUnknown_3003020 +_08005888: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, #1 + str r0, [r6] + subs r0, r3, #1 + cmp r0, #0x17 + bls _08005898 + b _08005AD4 +_08005898: + lsls r0, r0, #2 + ldr r1, _080058A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080058A4: .4byte _080058A8 +_080058A8: @ jump table + .4byte _08005908 @ case 0 + .4byte _0800592A @ case 1 + .4byte _0800594E @ case 2 + .4byte _08005968 @ case 3 + .4byte _08005A80 @ case 4 + .4byte _080059B6 @ case 5 + .4byte _080059B2 @ case 6 + .4byte _080059CC @ case 7 + .4byte _080059DC @ case 8 + .4byte _080059F8 @ case 9 + .4byte _080059FC @ case 10 + .4byte _08005A9A @ case 11 + .4byte _08005A30 @ case 12 + .4byte _08005A3C @ case 13 + .4byte _08005A4C @ case 14 + .4byte _08005A16 @ case 15 + .4byte _08005A80 @ case 16 + .4byte _08005A80 @ case 17 + .4byte _08005A80 @ case 18 + .4byte _08005A80 @ case 19 + .4byte _080059B2 @ case 20 + .4byte _080059B2 @ case 21 + .4byte _08005A66 @ case 22 + .4byte _08005A74 @ case 23 +_08005908: + ldr r2, [r6] + ldrb r1, [r2] + lsls r1, r1, #4 + ldrb r3, [r6, #0xc] + movs r0, #0xf + ands r0, r3 + orrs r0, r1 + strb r0, [r6, #0xc] + adds r2, #1 + str r2, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + ldrb r2, [r6, #0xd] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsrs r2, r2, #4 + b _080059AE +_0800592A: + ldr r1, [r6] + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + ldrb r3, [r6, #0xd] + movs r2, #0x10 + rsbs r2, r2, #0 + ands r2, r3 + orrs r2, r0 + strb r2, [r6, #0xd] + adds r1, #1 + str r1, [r6] + ldrb r0, [r6, #0xc] + lsrs r0, r0, #4 + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsrs r2, r2, #4 + b _080059AE +_0800594E: + ldr r1, [r6] + ldrb r0, [r1] + lsls r0, r0, #4 + ldrb r3, [r6, #0xd] + movs r2, #0xf + ands r2, r3 + orrs r2, r0 + strb r2, [r6, #0xd] + adds r1, #1 + str r1, [r6] + ldrb r0, [r6, #0xc] + lsrs r0, r0, #4 + b _080059A6 +_08005968: + ldr r3, [r6] + ldrb r1, [r3] + lsls r1, 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, #1 + str r5, [r6] + ldrb r3, [r3, #1] + adds r1, r2, #0 + ands r1, r3 + ldrb r4, [r6, #0xd] + movs r3, #0x10 + rsbs r3, r3, #0 + ands r3, r4 + orrs r3, r1 + strb r3, [r6, #0xd] + adds r4, r5, #1 + str r4, [r6] + ldrb r1, [r5, #1] + lsls r1, r1, #4 + ands r2, r3 + orrs r2, r1 + strb r2, [r6, #0xd] + adds r4, #1 + str r4, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c +_080059A6: + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsls r2, r2, #0x18 + lsrs r2, r2, #0x1c +_080059AE: + bl sub_080046E4 +_080059B2: + movs r0, #2 + b _08005C42 +_080059B6: + ldr r0, [r6] + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + ldrb r2, [r4] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + b _08005A80 +_080059CC: + ldr r0, [r6] + ldrb r1, [r0] + strb r1, [r6, #0x1e] + adds r0, #1 + str r0, [r6] + movs r0, #6 + strb r0, [r6, #0x1c] + b _080059B2 +_080059DC: + movs r0, #1 + strb r0, [r6, #0x1c] + ldr r0, _080059F4 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08005A96 + movs r0, #0 + strb r0, [r4, #2] + b _08005A96 + .align 2, 0 +_080059F4: .4byte gUnknown_30030B4 +_080059F8: + movs r0, #5 + b _08005C2A +_080059FC: + ldr r0, [r6] + ldrb r3, [r0] + adds r1, r0, #1 + str r1, [r6] + ldrb r0, [r0, #1] + lsls r0, r0, #8 + orrs r3, r0 + adds r1, #1 + str r1, [r6] + adds r0, r3, #0 + bl sub_080A3040 + b _080059B2 +_08005A16: + ldr r0, [r6] + ldrb r3, [r0] + adds r1, r0, #1 + str r1, [r6] + ldrb r0, [r0, #1] + lsls r0, r0, #8 + orrs r3, r0 + adds r1, #1 + str r1, [r6] + adds r0, r3, #0 + bl sub_080A306C + b _080059B2 +_08005A30: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, #6] + adds r0, r0, r2 + strb r0, [r6, #8] + b _08005A46 +_08005A3C: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, #7] + adds r0, r0, r2 + strb r0, [r6, #9] +_08005A46: + adds r1, #1 + str r1, [r6] + b _080059B2 +_08005A4C: + ldrb r0, [r6, #4] + ldrb r2, [r6, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrb r0, [r6, #6] + strb r0, [r6, #8] + ldrb r0, [r6, #7] +_08005A62: + strb r0, [r6, #9] + b _080059B2 +_08005A66: + ldr r0, _08005A70 + bl m4aMPlayStop + b _080059B2 + .align 2, 0 +_08005A70: .4byte gUnknown_30074D0 +_08005A74: + ldr r0, _08005A7C + bl m4aMPlayContinue + b _080059B2 + .align 2, 0 +_08005A7C: .4byte gUnknown_30074D0 +_08005A80: + ldr r0, [r6] + adds r0, #1 + str r0, [r6] + b _080059B2 +_08005A88: + movs r0, #2 + b _08005A8E +_08005A8C: + movs r0, #3 +_08005A8E: + strb r0, [r6, #0x1c] + adds r0, r6, #0 + bl sub_080054A4 +_08005A96: + movs r0, #3 + b _08005C42 +_08005A9A: + ldr r0, [r6] + ldrb r3, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r3, r1 + adds r0, #1 + str r0, [r6] + b _08005AD4 +_08005AAC: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, #1 + str r0, [r6] + ldrb r0, [r6, #4] + adds r1, r3, #0 + ldrb r2, [r6, #8] + ldrb r3, [r6, #9] + bl sub_08006124 + ldr r1, _08005AD0 + adds r1, #0x80 + strb r0, [r1] + ldrb r1, [r6, #0xa] + adds r0, r0, r1 + ldrb r2, [r6, #8] + adds r0, r0, r2 + b _08005B46 + .align 2, 0 +_08005AD0: .4byte gUnknown_3003030 +_08005AD4: + ldr r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #5 + bhi _08005B32 + lsls r0, r0, #2 + ldr r1, _08005AE8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005AE8: .4byte _08005AEC +_08005AEC: @ jump table + .4byte _08005B04 @ case 0 + .4byte _08005B0C @ case 1 + .4byte _08005B14 @ case 2 + .4byte _08005B1C @ case 3 + .4byte _08005B24 @ case 4 + .4byte _08005B2C @ case 5 +_08005B04: + adds r0, r3, #0 + bl sub_080062B4 + b _08005B32 +_08005B0C: + adds r0, r3, #0 + bl sub_08006304 + b _08005B32 +_08005B14: + adds r0, r3, #0 + bl sub_08006354 + b _08005B32 +_08005B1C: + adds r0, r3, #0 + bl sub_08006418 + b _08005B32 +_08005B24: + adds r0, r3, #0 + bl sub_080064B8 + b _08005B32 +_08005B2C: + adds r0, r3, #0 + bl sub_0800657C +_08005B32: + adds r0, r6, #0 + bl sub_08004850 + ldr r0, _08005B4C + adds r0, #0x80 + ldrb r1, [r6, #0xa] + ldrb r0, [r0] + adds r1, r1, r0 + ldrb r0, [r6, #8] + adds r0, r0, r1 +_08005B46: + strb r0, [r6, #8] + movs r0, #0 + b _08005C42 + .align 2, 0 +_08005B4C: .4byte gUnknown_3003030 +_08005B50: + adds r0, r6, #0 + bl sub_08005648 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08005A96 + movs r0, #0 + strb r0, [r6, #0x1c] + b _08005A96 +_08005B62: + adds r0, r6, #0 + bl sub_080055FC + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08005A96 + ldrb r0, [r6, #4] + ldrb r2, [r6, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrb r0, [r6, #6] + movs r1, #0 + strb r0, [r6, #8] + ldrb r0, [r6, #7] + strb r0, [r6, #9] + strb r1, [r6, #0x1c] + b _08005A96 +_08005B8C: + adds r0, r6, #0 + bl sub_080055FC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08005B9A + b _08005A96 +_08005B9A: + adds r0, r6, #0 + bl sub_080055AC + ldrb r1, [r6, #5] + ldr r0, _08005BC0 + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r6, #0xb] + ldrb r0, [r0, #5] + adds r1, r1, r0 + strb r1, [r6, #0x1f] + ldrb r0, [r6, #6] + strb r0, [r6, #8] + movs r0, #4 + strb r0, [r6, #0x1c] + b _08005A96 + .align 2, 0 +_08005BC0: .4byte gUnknown_3003020 +_08005BC4: + ldrb r0, [r6, #0x1f] + cmp r0, #0 + beq _08005C18 + bl sub_08197768 + ldr r1, _08005BF0 + adds r0, r0, r1 + ldrb r4, [r0] + ldrb r2, [r6, #0x1f] + cmp r2, r4 + bge _08005BF4 + ldrb r0, [r6, #4] + ldrb r1, [r6, #0xd] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #0 + bl sub_08003B64 + movs r0, #0 + b _08005C0C + .align 2, 0 +_08005BF0: .4byte gUnknown_829C63C +_08005BF4: + ldrb r0, [r6, #4] + ldrb r1, [r6, #0xd] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #0 + adds r2, r4, #0 + bl sub_08003B64 + ldrb r0, [r6, #0x1f] + subs r0, r0, r4 +_08005C0C: + strb r0, [r6, #0x1f] + ldrb r0, [r6, #4] + movs r1, #2 + bl sub_08003528 + b _08005A96 +_08005C18: + strb r0, [r6, #0x1c] + b _08005A96 +_08005C1C: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08005C2A + b _08005A96 +_08005C2A: + strb r0, [r6, #0x1c] + b _08005A96 +_08005C2E: + ldrb r0, [r6, #0x1e] + adds r1, r0, #0 + cmp r1, #0 + beq _08005C3C + subs r0, #1 + strb r0, [r6, #0x1e] + b _08005A96 +_08005C3C: + strb r1, [r6, #0x1c] + b _08005A96 +_08005C40: + movs r0, #1 +_08005C42: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08005760 + + thumb_func_start sub_08005C48 +sub_08005C48: @ 0x08005C48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + movs r2, #0 + mov r1, sp + adds r1, #7 +_08005C60: + strb r2, [r1] + subs r1, #1 + cmp r1, sp + bge _08005C60 + movs r5, #0 + movs r6, #0 + adds r4, r0, #0 + movs r2, #0 +_08005C70: + adds r0, r4, r2 + ldrb r3, [r0] + adds r2, #1 + adds r0, r3, #0 + subs r0, #0xf7 + cmp r0, #8 + bhi _08005D3E + lsls r0, r0, #2 + ldr r1, _08005C88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005C88: .4byte _08005C8C +_08005C8C: @ jump table + .4byte _08005D38 @ case 0 + .4byte _08005D3C @ case 1 + .4byte _08005D3C @ case 2 + .4byte _08005D44 @ case 3 + .4byte _08005D44 @ case 4 + .4byte _08005CC0 @ case 5 + .4byte _08005D38 @ case 6 + .4byte _08005CB0 @ case 7 + .4byte _08005CB0 @ case 8 +_08005CB0: + mov r1, sp + adds r0, r1, r6 + strb r5, [r0] + movs r5, #0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _08005D44 +_08005CC0: + adds r0, r4, r2 + ldrb r0, [r0] + adds r2, #1 + subs r0, #1 + cmp r0, #0x15 + bhi _08005D44 + lsls r0, r0, #2 + ldr r1, _08005CD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005CD8: .4byte _08005CDC +_08005CDC: @ jump table + .4byte _08005D38 @ case 0 + .4byte _08005D38 @ case 1 + .4byte _08005D38 @ case 2 + .4byte _08005D34 @ case 3 + .4byte _08005D38 @ case 4 + .4byte _08005D38 @ case 5 + .4byte _08005D44 @ case 6 + .4byte _08005D38 @ case 7 + .4byte _08005D44 @ case 8 + .4byte _08005D44 @ case 9 + .4byte _08005D36 @ case 10 + .4byte _08005D38 @ case 11 + .4byte _08005D38 @ case 12 + .4byte _08005D38 @ case 13 + .4byte _08005D44 @ case 14 + .4byte _08005D36 @ case 15 + .4byte _08005D38 @ case 16 + .4byte _08005D38 @ case 17 + .4byte _08005D38 @ case 18 + .4byte _08005D38 @ case 19 + .4byte _08005D44 @ case 20 + .4byte _08005D44 @ case 21 +_08005D34: + adds r2, #1 +_08005D36: + adds r2, #1 +_08005D38: + adds r2, #1 + b _08005D44 +_08005D3C: + adds r2, #1 +_08005D3E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08005D44: + cmp r3, #0xff + bne _08005C70 + movs r5, #0 + movs r2, #0 +_08005D4C: + mov r1, sp + adds r0, r1, r2 + ldrb r1, [r0] + cmp r5, r1 + bhs _08005D58 + ldrb r5, [r0] +_08005D58: + adds r2, #1 + cmp r2, #7 + ble _08005D4C + adds r0, r7, #0 + movs r1, #0 + bl sub_080061B4 + add r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r5, r0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08005C48 + + thumb_func_start sub_08005D7C +sub_08005D7C: @ 0x08005D7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + ldr r0, _08005D94 + adds r2, r0, #4 + adds r1, r0, #0 +_08005D8A: + ldr r0, [r1] + cmp r4, r0 + bne _08005D98 + ldr r0, [r2] + b _08005DA4 + .align 2, 0 +_08005D94: .4byte gUnknown_829C640 +_08005D98: + adds r2, #8 + adds r1, #8 + adds r3, #1 + cmp r3, #5 + bls _08005D8A + movs r0, #0 +_08005DA4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08005D7C + + thumb_func_start sub_08005DAC +sub_08005DAC: @ 0x08005DAC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r0, #0 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + bl sub_08005D7C + adds r6, r0, #0 + cmp r6, #0 + bne _08005DD0 +_08005DCC: + movs r0, #0 + b _08005F6C +_08005DD0: + lsls r0, r5, #0x10 + asrs r2, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + mov sl, r0 + cmp r2, r1 + bne _08005DEC + adds r0, r7, #0 + movs r1, #2 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _08005DEE +_08005DEC: + adds r7, r2, #0 +_08005DEE: + movs r0, #0 + mov sb, r0 + mov r8, r0 + movs r5, #0 + b _08005F5A +_08005DF8: + ldrb r1, [r4] + adds r0, r1, #0 + subs r0, #0xf7 + cmp r0, #7 + bls _08005E04 + b _08005F4E +_08005E04: + lsls r0, r0, #2 + ldr r1, _08005E10 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005E10: .4byte _08005E14 +_08005E14: @ jump table + .4byte _08005E6E @ case 0 + .4byte _08005F40 @ case 1 + .4byte _08005F40 @ case 2 + .4byte _08005F58 @ case 3 + .4byte _08005F58 @ case 4 + .4byte _08005E9A @ case 5 + .4byte _08005E42 @ case 6 + .4byte _08005E34 @ case 7 +_08005E34: + cmp r8, sb + bhi _08005E3A + b _08005F58 +_08005E3A: + mov sb, r8 + movs r2, #0 + mov r8, r2 + b _08005F58 +_08005E42: + adds r4, #1 + ldrb r0, [r4] + cmp r0, #3 + beq _08005E64 + cmp r0, #3 + bgt _08005E54 + cmp r0, #2 + beq _08005E5A + b _08005DCC +_08005E54: + cmp r0, #4 + beq _08005E6C + b _08005DCC +_08005E5A: + ldr r5, _08005E60 + b _08005E6E + .align 2, 0 +_08005E60: .4byte gUnknown_2021C40 +_08005E64: + ldr r5, _08005E68 + b _08005E6E + .align 2, 0 +_08005E68: .4byte gUnknown_2021C54 +_08005E6C: + ldr r5, _08005E80 +_08005E6E: + cmp r5, #0 + bne _08005E90 + adds r4, #1 + ldrb r0, [r4] + bl sub_081AF94C + adds r5, r0, #0 + b _08005E90 + .align 2, 0 +_08005E80: .4byte gUnknown_2021C68 +_08005E84: + ldrb r0, [r5] + bl _call_via_r6 + adds r0, r0, r7 + add r8, r0 + adds r5, #1 +_08005E90: + ldrb r0, [r5] + cmp r0, #0xff + bne _08005E84 + movs r5, #0 + b _08005F58 +_08005E9A: + adds r4, #1 + ldrb r0, [r4] + subs r0, #1 + cmp r0, #0x15 + bhi _08005F58 + lsls r0, r0, #2 + ldr r1, _08005EB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005EB0: .4byte _08005EB4 +_08005EB4: @ jump table + .4byte _08005F3C @ case 0 + .4byte _08005F3C @ case 1 + .4byte _08005F3C @ case 2 + .4byte _08005F0C @ case 3 + .4byte _08005F3C @ case 4 + .4byte _08005F12 @ case 5 + .4byte _08005F58 @ case 6 + .4byte _08005F3C @ case 7 + .4byte _08005F58 @ case 8 + .4byte _08005F58 @ case 9 + .4byte _08005F0E @ case 10 + .4byte _08005F3C @ case 11 + .4byte _08005F3C @ case 12 + .4byte _08005F3C @ case 13 + .4byte _08005F58 @ case 14 + .4byte _08005F0E @ case 15 + .4byte _08005F3C @ case 16 + .4byte _08005F3C @ case 17 + .4byte _08005F3C @ case 18 + .4byte _08005F3C @ case 19 + .4byte _08005F58 @ case 20 + .4byte _08005F58 @ case 21 +_08005F0C: + adds r4, #1 +_08005F0E: + adds r4, #1 + b _08005F3C +_08005F12: + adds r4, #1 + ldrb r0, [r4] + bl sub_08005D7C + adds r6, r0, #0 + cmp r6, #0 + bne _08005F22 + b _08005DCC +_08005F22: + mov r0, sl + asrs r1, r0, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08005F58 + ldrb r0, [r4] + movs r1, #2 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _08005F58 +_08005F3C: + adds r4, #1 + b _08005F58 +_08005F40: + adds r4, #1 + ldrb r0, [r4] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r0, r1 + b _08005F50 +_08005F4E: + adds r0, r1, #0 +_08005F50: + bl _call_via_r6 + adds r0, r0, r7 + add r8, r0 +_08005F58: + adds r4, #1 +_08005F5A: + ldrb r0, [r4] + cmp r0, #0xff + beq _08005F62 + b _08005DF8 +_08005F62: + cmp r8, sb + bhi _08005F6A + mov r0, sb + b _08005F6C +_08005F6A: + mov r0, r8 +_08005F6C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08005DAC + + thumb_func_start sub_08005F7C +sub_08005F7C: @ 0x08005F7C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r0 + adds r6, r2, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + mov r4, sp + adds r4, #1 + mov r5, sp + adds r5, #2 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08004798 + movs r0, #1 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #3 + mov sl, r0 + movs r0, #1 + movs r1, #0 + movs r2, #3 + bl sub_080046E4 + adds r7, r6, #0 + movs r6, #0 +_08005FBE: + adds r0, r7, r6 + ldrb r0, [r0] + mov r8, r0 + adds r6, #1 + subs r0, #0xf7 + cmp r0, #8 + bhi _080060BA + lsls r0, r0, #2 + ldr r1, _08005FD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005FD8: .4byte _08005FDC +_08005FDC: @ jump table + .4byte _080060B2 @ case 0 + .4byte _080060B2 @ case 1 + .4byte _080060B2 @ case 2 + .4byte _080060F2 @ case 3 + .4byte _080060F2 @ case 4 + .4byte _08006000 @ case 5 + .4byte _080060B2 @ case 6 + .4byte _080060F2 @ case 7 + .4byte _080060F2 @ case 8 +_08006000: + adds r0, r7, r6 + ldrb r0, [r0] + adds r6, #1 + subs r0, #1 + cmp r0, #0x15 + bhi _080060F2 + lsls r0, r0, #2 + ldr r1, _08006018 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08006018: .4byte _0800601C +_0800601C: @ jump table + .4byte _08006086 @ case 0 + .4byte _08006090 @ case 1 + .4byte _08006098 @ case 2 + .4byte _08006074 @ case 3 + .4byte _080060B2 @ case 4 + .4byte _080060AC @ case 5 + .4byte _080060F2 @ case 6 + .4byte _080060B2 @ case 7 + .4byte _080060F2 @ case 8 + .4byte _080060F2 @ case 9 + .4byte _080060B6 @ case 10 + .4byte _080060B2 @ case 11 + .4byte _080060B2 @ case 12 + .4byte _080060B2 @ case 13 + .4byte _080060F2 @ case 14 + .4byte _080060B6 @ case 15 + .4byte _080060B2 @ case 16 + .4byte _080060B2 @ case 17 + .4byte _080060B2 @ case 18 + .4byte _080060B2 @ case 19 + .4byte _080060F2 @ case 20 + .4byte _080060F2 @ case 21 +_08006074: + adds r0, r7, r6 + ldrb r0, [r0] + str r0, [sp, #8] + adds r6, #1 + adds r0, r7, r6 + ldrb r0, [r0] + str r0, [sp, #0xc] + adds r6, #1 + b _08006098 +_08006086: + adds r0, r7, r6 + ldrb r0, [r0] + str r0, [sp, #8] + adds r6, #1 + b _080060A2 +_08006090: + adds r0, r7, r6 + ldrb r0, [r0] + str r0, [sp, #0xc] + b _0800609E +_08006098: + adds r0, r7, r6 + ldrb r0, [r0] + mov sl, r0 +_0800609E: + adds r6, #1 + ldr r0, [sp, #8] +_080060A2: + ldr r1, [sp, #0xc] + mov r2, sl + bl sub_080046E4 + b _080060F2 +_080060AC: + adds r0, r7, r6 + ldrb r0, [r0] + str r0, [sp, #4] +_080060B2: + adds r6, #1 + b _080060F2 +_080060B6: + adds r6, #1 + b _080060B2 +_080060BA: + ldr r0, [sp, #4] + cmp r0, #1 + beq _080060CC + cmp r0, #7 + bne _080060CC + mov r0, r8 + bl sub_08006640 + b _080060D2 +_080060CC: + mov r0, r8 + bl sub_08006304 +_080060D2: + ldr r4, _0800611C + ldr r5, _08006120 + adds r0, r4, #0 + mov r1, sb + adds r2, r5, #0 + bl CpuSet + adds r4, #0x40 + mov r1, sb + adds r1, #0x20 + adds r0, r4, #0 + adds r2, r5, #0 + bl CpuSet + movs r0, #0x40 + add sb, r0 +_080060F2: + mov r0, r8 + cmp r0, #0xff + beq _080060FA + b _08005FBE +_080060FA: + mov r0, sp + mov r1, sp + adds r1, #1 + mov r2, sp + adds r2, #2 + bl sub_080047B8 + movs r0, #1 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800611C: .4byte gUnknown_3003030 +_08006120: .4byte 0x04000008 + thumb_func_end sub_08005F7C + + thumb_func_start sub_08006124 +sub_08006124: @ 0x08006124 + push {r4, r5, lr} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r4, _0800616C + lsrs r1, r1, #0x16 + adds r1, r1, r4 + ldrh r5, [r1] + lsls r5, r5, #5 + ldr r4, _08006170 + adds r5, r5, r4 + movs r4, #0x80 + str r4, [sp] + str r4, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldrb r4, [r1, #2] + str r4, [sp, #0x10] + ldrb r1, [r1, #3] + str r1, [sp, #0x14] + adds r1, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080038AC + adds r0, r4, #0 + add sp, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0800616C: .4byte gUnknown_829C670 +_08006170: .4byte gUnknown_829C6A4 + thumb_func_end sub_08006124 + + thumb_func_start sub_08006174 +sub_08006174: @ 0x08006174 + lsls r0, r0, #0x18 + ldr r1, _08006180 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08006180: .4byte gUnknown_829C670 + thumb_func_end sub_08006174 + + thumb_func_start sub_08006184 +sub_08006184: @ 0x08006184 + lsls r0, r0, #0x18 + ldr r1, _08006190 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r0, [r0, #2] + bx lr + .align 2, 0 +_08006190: .4byte gUnknown_829C670 + thumb_func_end sub_08006184 + + thumb_func_start sub_08006194 +sub_08006194: @ 0x08006194 + lsls r0, r0, #0x18 + ldr r1, _080061A0 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r0, [r0, #3] + bx lr + .align 2, 0 +_080061A0: .4byte gUnknown_829C670 + thumb_func_end sub_08006194 + + thumb_func_start sub_080061A4 +sub_080061A4: @ 0x080061A4 + push {lr} + ldr r0, _080061B0 + bl sub_08004474 + pop {r0} + bx r0 + .align 2, 0 +_080061B0: .4byte gUnknown_829CEA4 + thumb_func_end sub_080061A4 + + thumb_func_start sub_080061B4 +sub_080061B4: @ 0x080061B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + cmp r1, #7 + bhi _08006292 + lsls r0, r1, #2 + ldr r1, _080061D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080061D0: .4byte _080061D4 +_080061D4: @ jump table + .4byte _080061F4 @ case 0 + .4byte _08006208 @ case 1 + .4byte _0800621C @ case 2 + .4byte _08006230 @ case 3 + .4byte _08006244 @ case 4 + .4byte _08006258 @ case 5 + .4byte _0800626C @ case 6 + .4byte _08006284 @ case 7 +_080061F4: + ldr r1, _08006204 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #4] + b _08006292 + .align 2, 0 +_08006204: .4byte gUnknown_829CEA4 +_08006208: + ldr r1, _08006218 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + b _08006292 + .align 2, 0 +_08006218: .4byte gUnknown_829CEA4 +_0800621C: + ldr r1, _0800622C + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #6] + b _08006292 + .align 2, 0 +_0800622C: .4byte gUnknown_829CEA4 +_08006230: + ldr r1, _08006240 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #7] + b _08006292 + .align 2, 0 +_08006240: .4byte gUnknown_829CEA4 +_08006244: + ldr r0, _08006254 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #8] + b _08006278 + .align 2, 0 +_08006254: .4byte gUnknown_829CEA4 +_08006258: + ldr r0, _08006268 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #8] + b _08006290 + .align 2, 0 +_08006268: .4byte gUnknown_829CEA4 +_0800626C: + ldr r0, _08006280 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #9] +_08006278: + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + b _08006292 + .align 2, 0 +_08006280: .4byte gUnknown_829CEA4 +_08006284: + ldr r0, _08006298 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #9] +_08006290: + lsrs r0, r0, #4 +_08006292: + pop {r1} + bx r1 + .align 2, 0 +_08006298: .4byte gUnknown_829CEA4 + thumb_func_end sub_080061B4 + + thumb_func_start sub_0800629C +sub_0800629C: @ 0x0800629C + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080062B0 + lsrs r0, r0, #0x17 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080062B0: .4byte gUnknown_829CF04 + thumb_func_end sub_0800629C + + thumb_func_start sub_080062B4 +sub_080062B4: @ 0x080062B4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x14 + lsls r4, r4, #9 + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r1, r0 + lsrs r1, r1, #0xc + ldr r0, _080062F8 + adds r1, r1, r0 + adds r4, r4, r1 + ldr r5, _080062FC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + movs r0, #0x80 + lsls r0, r0, #1 + adds r4, r4, r0 + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + bl sub_080047C8 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #8 + strb r0, [r1] + adds r5, #0x81 + movs r0, #0xc + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080062F8: .4byte gUnknown_829CF14 +_080062FC: .4byte gUnknown_3003030 + thumb_func_end sub_080062B4 + + thumb_func_start sub_08006300 +sub_08006300: @ 0x08006300 + movs r0, #8 + bx lr + thumb_func_end sub_08006300 + + thumb_func_start sub_08006304 +sub_08006304: @ 0x08006304 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x14 + lsls r4, r4, #9 + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r1, r0 + lsrs r1, r1, #0xc + ldr r0, _08006348 + adds r1, r1, r0 + adds r4, r4, r1 + ldr r5, _0800634C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + movs r0, #0x80 + lsls r0, r0, #1 + adds r4, r4, r0 + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + bl sub_080047C8 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #8 + strb r0, [r1] + adds r5, #0x81 + movs r0, #0x10 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08006348: .4byte gUnknown_82A0F14 +_0800634C: .4byte gUnknown_3003030 + thumb_func_end sub_08006304 + + thumb_func_start sub_08006350 +sub_08006350: @ 0x08006350 + movs r0, #8 + bx lr + thumb_func_end sub_08006350 + + thumb_func_start sub_08006354 +sub_08006354: @ 0x08006354 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _08006390 + movs r0, #2 + bl sub_08004808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + ldr r3, _0800638C + 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 +_0800637C: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, #1 + cmp r1, #0x7f + ble _0800637C + b _080063E6 + .align 2, 0 +_0800638C: .4byte gUnknown_3003030 +_08006390: + lsrs r2, r0, #0x13 + lsls r2, r2, #9 + movs r0, #7 + ands r0, r6 + lsls r0, r0, #5 + ldr r1, _080063EC + adds r0, r0, r1 + adds r4, r2, r0 + ldr r5, _080063F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + adds r0, r4, #0 + adds r0, #0x10 + adds r1, r5, #0 + adds r1, #0x20 + bl sub_080047C8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x40 + bl sub_080047C8 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x60 + bl sub_080047C8 + ldr r0, _080063F4 + 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 + strb r0, [r1] +_080063E6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080063EC: .4byte gUnknown_82A4F14 +_080063F0: .4byte gUnknown_3003030 +_080063F4: .4byte gUnknown_82ACF14 + thumb_func_end sub_08006354 + + thumb_func_start sub_080063F8 +sub_080063F8: @ 0x080063F8 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08006410 + ldr r0, _0800640C + adds r0, r1, r0 + ldrb r0, [r0] + b _08006412 + .align 2, 0 +_0800640C: .4byte gUnknown_82ACF14 +_08006410: + movs r0, #0xa +_08006412: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080063F8 + + thumb_func_start sub_08006418 +sub_08006418: @ 0x08006418 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08006454 + movs r0, #2 + bl sub_08004808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + ldr r3, _08006450 + 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 +_08006440: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, #1 + cmp r1, #0x7f + ble _08006440 + b _080064A4 + .align 2, 0 +_08006450: .4byte gUnknown_3003030 +_08006454: + lsrs r2, r0, #0x13 + lsls r2, r2, #9 + movs r0, #7 + ands r0, r1 + lsls r0, r0, #5 + ldr r1, _080064AC + adds r0, r0, r1 + adds r5, r2, r0 + ldr r4, _080064B0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080047C8 + adds r0, r5, #0 + adds r0, #0x10 + adds r1, r4, #0 + adds r1, #0x20 + bl sub_080047C8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r5, r1 + adds r1, r4, #0 + adds r1, #0x40 + bl sub_080047C8 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r5, r1 + adds r1, r4, #0 + adds r1, #0x60 + bl sub_080047C8 + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0xa + strb r0, [r1] + adds r1, #1 + movs r0, #0xc + strb r0, [r1] +_080064A4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080064AC: .4byte gUnknown_82A4F14 +_080064B0: .4byte gUnknown_3003030 + thumb_func_end sub_08006418 + + thumb_func_start sub_080064B4 +sub_080064B4: @ 0x080064B4 + movs r0, #0xa + bx lr + thumb_func_end sub_080064B4 + + thumb_func_start sub_080064B8 +sub_080064B8: @ 0x080064B8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _080064F4 + movs r0, #2 + bl sub_08004808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + ldr r3, _080064F0 + 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 +_080064E0: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, #1 + cmp r1, #0x7f + ble _080064E0 + b _0800654A + .align 2, 0 +_080064F0: .4byte gUnknown_3003030 +_080064F4: + lsrs r2, r0, #0x13 + lsls r2, r2, #9 + movs r0, #7 + ands r0, r6 + lsls r0, r0, #5 + ldr r1, _08006550 + adds r0, r0, r1 + adds r4, r2, r0 + ldr r5, _08006554 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + adds r0, r4, #0 + adds r0, #0x10 + adds r1, r5, #0 + adds r1, #0x20 + bl sub_080047C8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x40 + bl sub_080047C8 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x60 + bl sub_080047C8 + ldr r0, _08006558 + 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 + strb r0, [r1] +_0800654A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08006550: .4byte gUnknown_82AD02C +_08006554: .4byte gUnknown_3003030 +_08006558: .4byte gUnknown_82B502C + thumb_func_end sub_080064B8 + + thumb_func_start sub_0800655C +sub_0800655C: @ 0x0800655C + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08006574 + ldr r0, _08006570 + adds r0, r1, r0 + ldrb r0, [r0] + b _08006576 + .align 2, 0 +_08006570: .4byte gUnknown_82B502C +_08006574: + movs r0, #0xa +_08006576: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800655C + + thumb_func_start sub_0800657C +sub_0800657C: @ 0x0800657C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _080065B8 + movs r0, #2 + bl sub_08004808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + ldr r3, _080065B4 + 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 +_080065A4: + adds r0, r1, r3 + strb r2, [r0] + strb r6, [r7] + strb r4, [r5] + adds r1, #1 + cmp r1, #0x7f + ble _080065A4 + b _0800660E + .align 2, 0 +_080065B4: .4byte gUnknown_3003030 +_080065B8: + lsrs r2, r0, #0x13 + lsls r2, r2, #9 + movs r0, #7 + ands r0, r6 + lsls r0, r0, #5 + ldr r1, _08006614 + adds r0, r0, r1 + adds r4, r2, r0 + ldr r5, _08006618 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + adds r0, r4, #0 + adds r0, #0x10 + adds r1, r5, #0 + adds r1, #0x20 + bl sub_080047C8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x40 + bl sub_080047C8 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r1, r5, #0 + adds r1, #0x60 + bl sub_080047C8 + ldr r0, _0800661C + 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 + strb r0, [r1] +_0800660E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08006614: .4byte gUnknown_82B5144 +_08006618: .4byte gUnknown_3003030 +_0800661C: .4byte gUnknown_82BD144 + thumb_func_end sub_0800657C + + thumb_func_start sub_08006620 +sub_08006620: @ 0x08006620 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08006638 + ldr r0, _08006634 + adds r0, r1, r0 + ldrb r0, [r0] + b _0800663A + .align 2, 0 +_08006634: .4byte gUnknown_82BD144 +_08006638: + movs r0, #0xa +_0800663A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08006620 + + thumb_func_start sub_08006640 +sub_08006640: @ 0x08006640 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x14 + lsls r4, r4, #9 + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r1, r0 + lsrs r1, r1, #0xc + ldr r0, _08006684 + adds r1, r1, r0 + adds r4, r4, r1 + ldr r5, _08006688 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080047C8 + movs r0, #0x80 + lsls r0, r0, #1 + adds r4, r4, r0 + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + bl sub_080047C8 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #8 + strb r0, [r1] + adds r5, #0x81 + movs r0, #0xc + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08006684: .4byte gUnknown_82BD25C +_08006688: .4byte gUnknown_3003030 + thumb_func_end sub_08006640 + + thumb_func_start sub_0800668C +sub_0800668C: @ 0x0800668C + push {r4, lr} + movs r0, #0 + movs r1, #0x80 + bl sub_08006E68 + bl sub_080072A4 + bl sub_08006ED0 + bl sub_08008094 + bl sub_080082F8 + ldr r1, _080066C8 + movs r0, #0x40 + strb r0, [r1] + ldr r0, _080066CC + movs r4, #0 + strh r4, [r0] + movs r0, #0 + bl sub_08006FB4 + ldr r0, _080066D0 + strh r4, [r0] + ldr r0, _080066D4 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080066C8: .4byte gUnknown_2021AB4 +_080066CC: .4byte gUnknown_2021AB6 +_080066D0: .4byte gUnknown_2021B38 +_080066D4: .4byte gUnknown_2021B3A + thumb_func_end sub_0800668C + + thumb_func_start sub_080066D8 +sub_080066D8: @ 0x080066D8 + push {r4, r5, r6, r7, lr} + movs r6, #0 + movs r7, #1 +_080066DE: + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _08006720 + 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 _0800670E + 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 _0800670E + adds r0, r4, #0 + bl sub_08007358 +_0800670E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x3f + bls _080066DE + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08006720: .4byte gUnknown_20205AC + thumb_func_end sub_080066D8 + + thumb_func_start sub_08006724 +sub_08006724: @ 0x08006724 + push {r4, r5, lr} + bl sub_08006770 + bl sub_08006834 + bl sub_08006874 + ldr r5, _08006764 + ldr r0, _08006768 + adds r5, r5, r0 + ldrb r0, [r5] + lsls r4, r0, #0x1f + lsrs r4, r4, #0x1f + movs r1, #1 + orrs r0, r1 + strb r0, [r5] + bl sub_08006A80 + bl sub_08006A34 + movs r2, #1 + ldrb r1, [r5] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + orrs r4, r0 + strb r4, [r5] + ldr r0, _0800676C + strb r2, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08006764: .4byte gUnknown_3002360 +_08006768: .4byte 0x00000439 +_0800676C: .4byte gUnknown_20217B0 + thumb_func_end sub_08006724 + + thumb_func_start sub_08006770 +sub_08006770: @ 0x08006770 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r7, _080067DC + ldr r0, _080067E0 + adds r5, r0, #0 + ldr r6, _080067E4 +_0800677C: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r0, r7 + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #5 + ands r0, r1 + cmp r0, #1 + bne _08006822 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080067F0 + movs r2, #0x20 + ldrsh r1, [r3, r2] + movs r2, #0x24 + ldrsh r0, [r3, r2] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + ldr r0, _080067E8 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r1, r1, r0 + ands r1, r5 + ldrh r2, [r3, #2] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r3, #0x26] + ldrh r0, [r3, #0x22] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x29 + ldrb r0, [r0] + ldr r2, _080067EC + adds r0, r0, r1 + ldrb r2, [r2] + adds r0, r0, r2 + b _08006820 + .align 2, 0 +_080067DC: .4byte gUnknown_20205AC +_080067E0: .4byte 0x000001FF +_080067E4: .4byte 0xFFFFFE00 +_080067E8: .4byte gUnknown_2021B38 +_080067EC: .4byte gUnknown_2021B3A +_080067F0: + movs r2, #0x20 + ldrsh r1, [r3, r2] + movs r2, #0x24 + ldrsh r0, [r3, r2] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + ands r1, r5 + ldrh r2, [r3, #2] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldrh r1, [r3, #0x26] + ldrh r0, [r3, #0x22] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x29 + ldrb r0, [r0] + adds r0, r0, r1 +_08006820: + strb r0, [r3] +_08006822: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x3f + bls _0800677C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08006770 + + thumb_func_start sub_08006834 +sub_08006834: @ 0x08006834 + push {r4, lr} + movs r2, #0 + ldr r4, _0800686C + ldr r3, _08006870 +_0800683C: + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r1, r0, #0 + adds r1, #0x43 + ldrb r1, [r1] + ldrb r0, [r0, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + lsls r0, r0, #8 + orrs r1, r0 + lsls r0, r2, #1 + adds r0, r0, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x3f + bls _0800683C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800686C: .4byte gUnknown_20205AC +_08006870: .4byte gUnknown_20216F0 + thumb_func_end sub_08006834 + + thumb_func_start sub_08006874 +sub_08006874: @ 0x08006874 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #1 + mov ip, r0 + ldr r1, _0800693C + mov sl, r1 + ldr r3, _08006940 + mov sb, r3 + ldr r6, _08006944 + mov r8, r6 +_08006890: + mov r5, ip + mov r0, ip + subs r0, #1 + add r0, sl + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r7, _08006948 + adds r3, r0, r7 + mov r0, ip + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r7 + lsls r2, r2, #1 + ldr r0, _0800694C + adds r2, r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, #0 + cmp r0, #0x9f + ble _080068D2 + add r0, sb + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_080068D2: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _080068E0 + add r0, sb + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080068E0: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _08006904 + ldrb r0, [r3, #1] + lsrs r0, r0, #6 + cmp r0, #0 + beq _080068F6 + cmp r0, #2 + bne _08006904 +_080068F6: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x80 + ble _08006904 + add r0, sb + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_08006904: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _08006928 + ldrb r0, [r4, #1] + lsrs r0, r0, #6 + cmp r0, #0 + beq _0800691A + cmp r0, #2 + bne _08006928 +_0800691A: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x80 + ble _08006928 + add r0, sb + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08006928: + movs r7, #1 + add ip, r7 + cmp r5, #0 + beq _08006A0E + ldr r0, [sp] + cmp r0, r6 + bhi _08006950 + cmp r0, r6 + bne _08006A0E + b _08006A06 + .align 2, 0 +_0800693C: .4byte gUnknown_2021770 +_08006940: .4byte 0xFFFFFF00 +_08006944: .4byte 0xC0000300 +_08006948: .4byte gUnknown_20205AC +_0800694C: .4byte gUnknown_20216F0 +_08006950: + mov r1, sl + adds r3, r5, r1 + ldrb r4, [r3] + subs r2, r5, #1 + adds r1, r2, r1 + ldrb r0, [r1] + strb r0, [r3] + strb r4, [r1] + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + subs r0, r5, #1 + add r0, sl + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r6, _08006A2C + adds r3, r0, r6 + mov r7, sl + adds r0, r5, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r6 + lsls r2, r2, #1 + ldr r0, _08006A30 + adds r2, r2, r0 + ldrh r2, [r2] + str r2, [sp] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r6, [r1] + ldrb r1, [r3] + ldrb r2, [r4] + adds r0, r1, #0 + cmp r0, #0x9f + ble _080069A2 + add r0, sb + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_080069A2: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _080069B0 + add r0, sb + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080069B0: + ldr r0, [r3] + mov r7, r8 + ands r0, r7 + cmp r0, r8 + bne _080069D4 + ldrb r0, [r3, #1] + lsrs r0, r0, #6 + cmp r0, #0 + beq _080069C6 + cmp r0, #2 + bne _080069D4 +_080069C6: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x80 + ble _080069D4 + add r0, sb + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_080069D4: + ldr r0, [r4] + mov r3, r8 + ands r0, r3 + cmp r0, r8 + bne _080069F8 + ldrb r0, [r4, #1] + lsrs r0, r0, #6 + cmp r0, #0 + beq _080069EA + cmp r0, #2 + bne _080069F8 +_080069EA: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x80 + ble _080069F8 + add r0, sb + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080069F8: + cmp r5, #0 + beq _08006A0E + ldr r7, [sp] + cmp r7, r6 + bhi _08006950 + cmp r7, r6 + bne _08006A0E +_08006A06: + lsls r1, r1, #0x10 + lsls r0, r2, #0x10 + cmp r1, r0 + blt _08006950 +_08006A0E: + mov r1, ip + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #0x3f + bhi _08006A1C + b _08006890 +_08006A1C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08006A2C: .4byte gUnknown_20205AC +_08006A30: .4byte gUnknown_20216F0 + thumb_func_end sub_08006874 + + thumb_func_start sub_08006A34 +sub_08006A34: @ 0x08006A34 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r5, _08006A78 + ldr r6, _08006A7C +_08006A3C: + lsls r2, r4, #2 + lsls r1, r4, #5 + adds r1, r1, r5 + lsls r3, r4, #3 + adds r3, r3, r6 + ldrh r0, [r3] + strh r0, [r1, #0x3e] + adds r0, r2, #1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r3, #2] + strh r1, [r0, #0x3e] + adds r0, r2, #2 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r3, #4] + strh r1, [r0, #0x3e] + adds r2, #3 + lsls r2, r2, #3 + adds r2, r2, r5 + ldrh r0, [r3, #6] + strh r0, [r2, #0x3e] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _08006A3C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08006A78: .4byte gUnknown_3002360 +_08006A7C: .4byte gUnknown_2021B3C + thumb_func_end sub_08006A34 + + thumb_func_start sub_08006A80 +sub_08006A80: @ 0x08006A80 + push {r4, r5, r6, lr} + sub sp, #4 + movs r4, #0 + mov r0, sp + strb r4, [r0] +_08006A8A: + ldr r0, _08006AF8 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08006AFC + adds r2, r0, r1 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #5 + ands r0, r1 + cmp r0, #1 + bne _08006AB6 + adds r0, r2, #0 + mov r1, sp + bl sub_08008598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08006AF0 +_08006AB6: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x3f + bls _08006A8A + mov r0, sp + ldr r4, _08006B00 + ldrb r0, [r0] + ldrb r1, [r4] + cmp r0, r1 + bhs _08006AF0 + mov r1, sp + ldr r5, _08006B04 + ldr r0, _08006B08 + ldr r2, [r0] + ldr r3, [r0, #4] +_08006AD6: + ldrb r0, [r1] + lsls r0, r0, #3 + adds r0, r0, r5 + str r2, [r0] + str r3, [r0, #4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r6, [r4] + cmp r0, r6 + blo _08006AD6 +_08006AF0: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08006AF8: .4byte gUnknown_2021770 +_08006AFC: .4byte gUnknown_20205AC +_08006B00: .4byte gUnknown_2021AB4 +_08006B04: .4byte gUnknown_3002398 +_08006B08: .4byte gUnknown_82BF2F8 + thumb_func_end sub_08006A80 + + thumb_func_start sub_08006B0C +sub_08006B0C: @ 0x08006B0C + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + movs r3, #0 + ldr r0, _08006B48 + mov ip, r0 + lsls r5, r1, #0x10 + lsls r6, r2, #0x10 +_08006B20: + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + add r0, ip + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08006B4C + str r4, [sp] + adds r0, r3, #0 + adds r1, r7, #0 + asrs r2, r5, #0x10 + asrs r3, r6, #0x10 + bl sub_08006C14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08006B58 + .align 2, 0 +_08006B48: .4byte gUnknown_20205AC +_08006B4C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x3f + bls _08006B20 + movs r0, #0x40 +_08006B58: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08006B0C + + thumb_func_start sub_08006B60 +sub_08006B60: @ 0x08006B60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + movs r3, #0x3f + ldr r0, _08006BAC + mov r8, r0 + movs r0, #1 + rsbs r0, r0, #0 + mov ip, r0 + lsls r4, r1, #0x10 + lsls r5, r2, #0x10 +_08006B7E: + lsls r0, r3, #0x10 + asrs r1, r0, #0x10 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08006BB0 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + str r6, [sp] + adds r1, r7, #0 + asrs r2, r4, #0x10 + asrs r3, r5, #0x10 + bl sub_08006C14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08006BBE + .align 2, 0 +_08006BAC: .4byte gUnknown_20205AC +_08006BB0: + subs r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, ip + bgt _08006B7E + movs r0, #0x40 +_08006BBE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08006B60 + + thumb_func_start sub_08006BCC +sub_08006BCC: @ 0x08006BCC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08006C04 + movs r1, #0 + movs r2, #0 + movs r3, #0x1f + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _08006C0C + ldr r4, _08006C08 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r2, r1, r4 + adds r2, #0x3e + ldrb r0, [r2] + movs r3, #4 + orrs r0, r3 + strb r0, [r2] + adds r4, #0x1c + adds r1, r1, r4 + str r6, [r1] + adds r0, r5, #0 + b _08006C0E + .align 2, 0 +_08006C04: .4byte gUnknown_82BF314 +_08006C08: .4byte gUnknown_20205AC +_08006C0C: + movs r0, #0x40 +_08006C0E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08006BCC + + thumb_func_start sub_08006C14 +sub_08006C14: @ 0x08006C14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r1 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r4, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #4 + add r0, sl + lsls r0, r0, #2 + ldr r1, _08006CD8 + adds r7, r0, r1 + adds r0, r7, #0 + bl sub_08006F5C + adds r2, r7, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x3f + adds r0, r0, r7 + mov sb, r0 + ldrb r0, [r0] + movs r1, #4 + orrs r0, r1 + movs r1, #8 + orrs r0, r1 + movs r1, #0x40 + orrs r0, r1 + mov r1, sb + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x43 + strb r4, [r0] + mov r1, r8 + ldr r0, [r1, #4] + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r7] + str r1, [r7, #4] + mov r1, r8 + ldr r0, [r1, #8] + str r0, [r7, #8] + 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, #1] + lsrs r1, r3, #6 + ldrb r2, [r7, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r7, #0 + bl sub_08006F70 + mov r0, r8 + ldrh r1, [r0] + ldr r4, _08006CDC + lsrs r0, r4, #0x10 + cmp r1, r0 + bne _08006D10 + mov r1, r8 + ldr r0, [r1, #0xc] + str r0, [r7, #0xc] + ldrh r0, [r0, #4] + lsrs r0, r0, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08006FB4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + asrs r1, r4, #0x10 + cmp r0, r1 + bne _08006CE0 + adds r0, r7, #0 + bl sub_08006F5C + movs r0, #0x40 + b _08006D58 + .align 2, 0 +_08006CD8: .4byte gUnknown_20205AC +_08006CDC: .4byte 0xFFFF0000 +_08006CE0: + ldr r1, _08006D08 + adds r0, r1, #0 + ands r2, r0 + ldrh r1, [r7, #4] + ldr r0, _08006D0C + ands r0, r1 + orrs r0, r2 + strh r0, [r7, #4] + mov r0, sb + ldrb r1, [r0] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, sb + strb r0, [r1] + adds r1, r7, #0 + adds r1, #0x40 + movs r0, #0 + strh r0, [r1] + b _08006D24 + .align 2, 0 +_08006D08: .4byte 0x000003FF +_08006D0C: .4byte 0xFFFFFC00 +_08006D10: + mov r1, r8 + ldrh r0, [r1] + bl sub_08008338 + adds r1, r7, #0 + adds r1, #0x40 + strh r0, [r1] + adds r0, r7, #0 + bl sub_0800803C +_08006D24: + ldrb r0, [r7, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08006D38 + adds r0, r7, #0 + bl sub_08008140 +_08006D38: + mov r0, r8 + ldrh r1, [r0, #2] + ldr r0, _08006D68 + cmp r1, r0 + beq _08006D56 + mov r1, r8 + ldrh r0, [r1, #2] + bl sub_0800851C + lsls r0, r0, #4 + ldrb r2, [r7, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #5] +_08006D56: + mov r0, sl +_08006D58: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08006D68: .4byte 0x0000FFFF + thumb_func_end sub_08006C14 + + thumb_func_start sub_08006D6C +sub_08006D6C: @ 0x08006D6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + movs r3, #0 + ldr r5, _08006DDC + lsls r1, r1, #0x10 + mov ip, r1 + lsls r2, r2, #0x10 + mov r8, r2 +_08006D8C: + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r6, r0, #2 + adds r4, r6, r5 + adds r7, r4, #0 + adds r7, #0x3e + ldrb r0, [r7] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08006DE4 + mov r0, sb + str r0, [sp] + adds r0, r3, #0 + mov r1, sl + mov r3, ip + asrs r2, r3, #0x10 + mov r5, r8 + asrs r3, r5, #0x10 + bl sub_08006C14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + cmp r5, #0x40 + beq _08006DEE + ldr r1, _08006DE0 + adds r0, r6, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r7] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08006DD8 + adds r0, r4, #0 + bl sub_08007358 +_08006DD8: + adds r0, r5, #0 + b _08006DF0 + .align 2, 0 +_08006DDC: .4byte gUnknown_20205AC +_08006DE0: .4byte gUnknown_20205C8 +_08006DE4: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x3f + bls _08006D8C +_08006DEE: + movs r0, #0x40 +_08006DF0: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08006D6C + + thumb_func_start sub_08006E00 +sub_08006E00: @ 0x08006E00 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08006E5C + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08006E56 + ldr r0, [r5, #0xc] + ldrh r2, [r0, #4] + lsrs r2, r2, #5 + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r1, r0, #0x16 + adds r4, r1, r2 + adds r3, r1, #0 + cmp r3, r4 + bhs _08006E56 + ldr r0, _08006E64 + mov ip, r0 + movs r6, #7 + movs r7, #1 +_08006E3A: + lsrs r2, r3, #3 + add r2, ip + 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, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blo _08006E3A +_08006E56: + adds r0, r5, #0 + bl sub_08006F5C +_08006E5C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08006E64: .4byte gUnknown_2021AB8 + thumb_func_end sub_08006E00 + + thumb_func_start sub_08006E68 +sub_08006E68: @ 0x08006E68 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + bhs _08006E90 + ldr r6, _08006E98 + ldr r5, _08006E9C +_08006E7A: + lsls r0, r3, #3 + adds r0, r0, r6 + ldr r1, [r5] + ldr r2, [r5, #4] + str r1, [r0] + str r2, [r0, #4] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + blo _08006E7A +_08006E90: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08006E98: .4byte gUnknown_3002398 +_08006E9C: .4byte gUnknown_82BF2F8 + thumb_func_end sub_08006E68 + + thumb_func_start sub_08006EA0 +sub_08006EA0: @ 0x08006EA0 + push {lr} + ldr r2, _08006EC4 + ldr r1, _08006EC8 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08006EC0 + adds r0, r2, #0 + adds r0, #0x38 + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _08006ECC + bl CpuSet +_08006EC0: + pop {r0} + bx r0 + .align 2, 0 +_08006EC4: .4byte gUnknown_3002360 +_08006EC8: .4byte 0x00000439 +_08006ECC: .4byte 0x04000100 + thumb_func_end sub_08006EA0 + + thumb_func_start sub_08006ED0 +sub_08006ED0: @ 0x08006ED0 + push {r4, r5, lr} + ldr r0, _08006F04 + movs r1, #0 + strb r1, [r0] + ldr r0, _08006F08 + strb r1, [r0] + movs r2, #0 + ldr r4, _08006F0C + movs r3, #0 + adds r5, r4, #4 +_08006EE4: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r4 + str r3, [r1] + adds r0, r0, r5 + str r3, [r0] + strh r3, [r1, #8] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _08006EE4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08006F04: .4byte gUnknown_20217B0 +_08006F08: .4byte gUnknown_20217B1 +_08006F0C: .4byte gUnknown_20217B4 + thumb_func_end sub_08006ED0 + + thumb_func_start sub_08006F10 +sub_08006F10: @ 0x08006F10 + push {r4, lr} + movs r1, #0 + ldr r4, _08006F38 + movs r3, #0 + movs r2, #0x80 + lsls r2, r2, #1 +_08006F1C: + lsls r0, r1, #3 + adds r0, r0, r4 + strh r2, [r0] + strh r3, [r0, #2] + strh r3, [r0, #4] + strh r2, [r0, #6] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1f + bls _08006F1C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08006F38: .4byte gUnknown_2021B3C + thumb_func_end sub_08006F10 + + thumb_func_start sub_08006F3C +sub_08006F3C: @ 0x08006F3C + push {r4, r5, lr} + ldr r5, [sp, #0xc] + lsls r0, r0, #0x18 + ldr r4, _08006F58 + lsrs r0, r0, #0x15 + adds r0, r0, r4 + strh r1, [r0] + strh r2, [r0, #2] + strh r3, [r0, #4] + strh r5, [r0, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08006F58: .4byte gUnknown_2021B3C + thumb_func_end sub_08006F3C + + thumb_func_start sub_08006F5C +sub_08006F5C: @ 0x08006F5C + push {lr} + ldr r1, _08006F6C + movs r2, #0x44 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_08006F6C: .4byte gUnknown_82BF2B4 + thumb_func_end sub_08006F5C + + thumb_func_start sub_08006F70 +sub_08006F70: @ 0x08006F70 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _08006FB0 + lsrs r2, r2, #0x17 + lsrs r1, r1, #0x15 + adds r2, r2, r1 + adds r0, r2, r4 + ldrb r5, [r0] + adds r4, #1 + adds r2, r2, r4 + ldrb r1, [r2] + movs r0, #2 + ands r3, r0 + cmp r3, #0 + beq _08006F9E + lsls r0, r5, #0x19 + lsrs r5, r0, #0x18 + lsls r0, r1, #0x19 + lsrs r1, r0, #0x18 +_08006F9E: + adds r0, r6, #0 + adds r0, #0x28 + strb r5, [r0] + adds r0, #1 + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08006FB0: .4byte gUnknown_82BF299 + thumb_func_end sub_08006F70 + + thumb_func_start sub_08006FB4 +sub_08006FB4: @ 0x08006FB4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _0800700A + ldr r0, _08006FF8 + ldrh r3, [r0] + ldr r0, _08006FFC + cmp r3, r0 + bhi _08006FF2 + ldr r7, _08007000 + movs r6, #7 + adds r4, r0, #0 + movs r5, #1 +_08006FD6: + lsrs r2, r3, #3 + adds r2, 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, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + bls _08006FD6 +_08006FF2: + movs r0, #0 + b _080070BC + .align 2, 0 +_08006FF8: .4byte gUnknown_2021AB6 +_08006FFC: .4byte 0x000003FF +_08007000: .4byte gUnknown_2021AB8 +_08007004: + movs r0, #1 + rsbs r0, r0, #0 + b _080070BC +_0800700A: + ldr r0, _080070C8 + ldrh r3, [r0] + ldr r0, _080070CC + mov sb, r0 + movs r7, #7 + movs r6, #1 +_08007016: + lsrs r0, r3, #3 + add r0, sb + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, #0 + beq _0800704A + movs r5, #0x80 + lsls r5, r5, #3 + ldr r2, _080070CC +_0800702E: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r5 + beq _08007004 + lsrs r0, r0, #0x13 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, #0 + bne _0800702E +_0800704A: + mov r8, r3 + movs r2, #1 + cmp r2, r4 + beq _08007084 + movs r1, #0x80 + lsls r1, r1, #3 + mov ip, r1 + ldr r5, _080070CC +_0800705A: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, ip + beq _08007004 + lsrs r0, r0, #0x13 + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r7 + asrs r1, r0 + ands r1, r6 + cmp r1, #0 + bne _08007080 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r4 + bne _0800705A +_08007080: + cmp r2, r4 + bne _08007016 +_08007084: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r3, r0, #0x10 + asrs r1, r0, #0x10 + adds r1, r4, r1 + adds r6, r0, #0 + cmp r3, r1 + bge _080070BA + ldr r0, _080070CC + mov r8, r0 + movs r7, #7 + adds r4, r1, #0 + movs r5, #1 +_0800709E: + 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, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blt _0800709E +_080070BA: + asrs r0, r6, #0x10 +_080070BC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080070C8: .4byte gUnknown_2021AB6 +_080070CC: .4byte gUnknown_2021AB8 + thumb_func_end sub_08006FB4 + + thumb_func_start sub_080070D0 +sub_080070D0: @ 0x080070D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r0, #0x13 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r6, r3, #0 + movs r0, #7 + ands r2, r0 + adds r4, r2, #0 + movs r5, #0 + cmp r1, #0 + bne _08007108 + movs r0, #1 + lsls r0, r2 + mvns r0, r0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08007104 + adds r0, r3, r0 + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _08007134 + .align 2, 0 +_08007104: .4byte gUnknown_2021AB8 +_08007108: + cmp r1, #1 + bne _08007124 + lsls r1, r2 + lsls r0, r1, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08007120 + adds r0, r3, r0 + ldrb r1, [r0] + orrs r2, r1 + strb r2, [r0] + b _08007134 + .align 2, 0 +_08007120: .4byte gUnknown_2021AB8 +_08007124: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r4 + lsrs r5, r0, #0x18 + ldr r0, _0800713C + adds r0, r6, r0 + ldrb r0, [r0] + ands r5, r0 +_08007134: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0800713C: .4byte gUnknown_2021AB8 + thumb_func_end sub_080070D0 + + thumb_func_start sub_08007140 +sub_08007140: @ 0x08007140 + bx lr + .align 2, 0 + thumb_func_end sub_08007140 + + thumb_func_start sub_08007144 +sub_08007144: @ 0x08007144 + push {r4, r5, r6, r7, lr} + ldr r0, _08007194 + ldrb r0, [r0] + cmp r0, #0 + beq _0800718C + movs r4, #0 + ldr r1, _08007198 + ldrb r0, [r1] + cmp r0, #0 + beq _08007186 + ldr r6, _0800719C + adds r7, r6, #4 + adds r5, r1, #0 +_0800715E: + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r2, r1, r6 + ldr r0, [r2] + adds r1, r1, r7 + ldr r1, [r1] + ldrh r2, [r2, #8] + lsrs r2, r2, #1 + bl CpuSet + ldrb r1, [r5] + subs r1, #1 + strb r1, [r5] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _0800715E +_08007186: + ldr r1, _08007194 + movs r0, #0 + strb r0, [r1] +_0800718C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08007194: .4byte gUnknown_20217B0 +_08007198: .4byte gUnknown_20217B1 +_0800719C: .4byte gUnknown_20217B4 + thumb_func_end sub_08007144 + + thumb_func_start sub_080071A0 +sub_080071A0: @ 0x080071A0 + push {r4, r5, r6, lr} + adds r5, r2, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r4, _080071F8 + ldrb r0, [r4] + cmp r0, #0x3f + bhi _080071F0 + ldr r3, _080071FC + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + lsls r2, r2, #3 + adds r2, r2, r5 + ldr r1, [r2] + str r1, [r0] + ldrb r0, [r4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r3, #4 + adds r1, r1, r0 + lsls r0, r6, #5 + ldr r5, _08007200 + adds r0, r0, r5 + str r0, [r1] + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r2, #4] + strh r1, [r0, #8] + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_080071F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080071F8: .4byte gUnknown_20217B1 +_080071FC: .4byte gUnknown_20217B4 +_08007200: .4byte 0x06010000 + thumb_func_end sub_080071A0 + + thumb_func_start sub_08007204 +sub_08007204: @ 0x08007204 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r3, _0800724C + ldrb r0, [r3] + cmp r0, #0x3f + bhi _08007244 + ldr r2, _08007250 + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + str r4, [r0] + ldrb r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #4 + adds r0, r0, r1 + str r5, [r0] + ldrb r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #8] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_08007244: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800724C: .4byte gUnknown_20217B1 +_08007250: .4byte gUnknown_20217B4 + thumb_func_end sub_08007204 + + thumb_func_start sub_08007254 +sub_08007254: @ 0x08007254 + push {r4, lr} + adds r1, r0, #0 + ldr r3, _08007274 + movs r2, #0 + ldr r4, _08007278 +_0800725E: + ldrb r0, [r3] + strb r0, [r1] + adds r1, #1 + adds r3, #1 + adds r2, #1 + cmp r2, r4 + bls _0800725E + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007274: .4byte gUnknown_20205AC +_08007278: .4byte 0x000010FF + thumb_func_end sub_08007254 + + thumb_func_start sub_0800727C +sub_0800727C: @ 0x0800727C + push {r4, lr} + adds r1, r0, #0 + ldr r3, _0800729C + movs r2, #0 + ldr r4, _080072A0 +_08007286: + ldrb r0, [r1] + strb r0, [r3] + adds r1, #1 + adds r3, #1 + adds r2, #1 + cmp r2, r4 + bls _08007286 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800729C: .4byte gUnknown_20205AC +_080072A0: .4byte 0x000010FF + thumb_func_end sub_0800727C + + thumb_func_start sub_080072A4 +sub_080072A4: @ 0x080072A4 + push {r4, r5, lr} + movs r4, #0 +_080072A8: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r5, _080072D8 + adds r0, r0, r5 + bl sub_08006F5C + ldr r0, _080072DC + adds r0, r4, r0 + strb r4, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x3f + bls _080072A8 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006F5C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080072D8: .4byte gUnknown_20205AC +_080072DC: .4byte gUnknown_2021770 + thumb_func_end sub_080072A4 + + thumb_func_start sub_080072E0 +sub_080072E0: @ 0x080072E0 + push {lr} + ldr r2, [r0, #0x14] + ldrh r1, [r2] + ldr r0, _080072F8 + cmp r1, r0 + beq _080072F2 + adds r0, r1, #0 + bl sub_08008280 +_080072F2: + pop {r0} + bx r0 + .align 2, 0 +_080072F8: .4byte 0x0000FFFF + thumb_func_end sub_080072E0 + + thumb_func_start sub_080072FC +sub_080072FC: @ 0x080072FC + push {lr} + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080072FC + + thumb_func_start sub_0800730C +sub_0800730C: @ 0x0800730C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08007332 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] +_08007332: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0800730C + + thumb_func_start sub_08007338 +sub_08007338: @ 0x08007338 + push {r4, lr} + adds r4, r0, #0 + bl sub_080072E0 + adds r0, r4, #0 + bl sub_080072FC + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08007338 + + thumb_func_start sub_08007358 +sub_08007358: @ 0x08007358 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08007394 + adds r5, r4, #0 + adds r5, #0x3f + ldrb r1, [r5] + movs r0, #4 + ands r0, r1 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, _08007398 + ldrb r0, [r0] + cmp r0, #0 + bne _0800738E + ldr r0, _0800739C + ldrb r1, [r5] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1f + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0800738E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08007394: .4byte gUnknown_82BF32C +_08007398: .4byte gUnknown_2021C3C +_0800739C: .4byte gUnknown_82BF334 + thumb_func_end sub_08007358 + + thumb_func_start sub_080073A0 +sub_080073A0: @ 0x080073A0 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 + rsbs r0, r0, #0 + 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, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + mov sb, r0 + lsls r0, r0, #0x10 + mov r8, r0 + asrs r1, r0, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08007484 + ldrb r1, [r5] + subs r0, #4 + ands r0, r1 + strb r0, [r5] + ldrb r1, [r2] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r0, #0xa + lsrs r3, r1, #0x1a + lsls r1, r0, #9 + lsrs r7, r1, #0x1f + lsls r0, r0, #8 + lsrs r6, r0, #0x1f + cmp r3, #0 + beq _0800741C + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0800741C: + 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, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08007446 + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_08007C08 +_08007446: + ldrb r1, [r5] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08007474 + adds r0, r4, #0 + adds r0, #0x40 + ldrh r1, [r0] + add r1, sb + ldr r2, _0800746C + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r4, #4] + ldr r0, _08007470 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + b _08007484 + .align 2, 0 +_0800746C: .4byte 0x000003FF +_08007470: .4byte 0xFFFFFC00 +_08007474: + mov r1, r8 + lsrs r0, r1, #0x10 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r2, [r4, #0xc] + bl sub_080071A0 +_08007484: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080073A0 + + thumb_func_start sub_08007490 +sub_08007490: @ 0x08007490 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + beq _080074E0 + adds r0, r4, #0 + bl sub_08007D0C + adds r0, r4, #0 + adds r0, #0x2a + ldrb r1, [r0] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r0, #9 + lsrs r3, r1, #0x1f + lsls r0, r0, #8 + lsrs r2, r0, #0x1f + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08007526 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_08007C08 + b _08007526 +_080074E0: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08007526 + adds r2, r4, #0 + adds r2, #0x2b + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x2a + ldrb r0, [r0] + ldr r1, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + movs r2, #3 + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + bge _08007516 + adds r0, #3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08007516: + ldr r0, _0800752C + lsls r1, r2, #0x10 + asrs r1, r1, #0xe + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08007526: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800752C: .4byte gUnknown_82BF33C + thumb_func_end sub_08007490 + + thumb_func_start sub_08007530 +sub_08007530: @ 0x08007530 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r0, #0x2a + ldrb r1, [r0] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r7, [r0] + mov r8, r7 + ldr r0, [r0] + lsls r1, r0, #0xa + lsrs r3, r1, #0x1a + lsls r1, r0, #9 + lsrs r6, r1, #0x1f + lsls r0, r0, #8 + lsrs r5, r0, #0x1f + cmp r3, #0 + beq _0800756A + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0800756A: + 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, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08007594 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08007C08 +_08007594: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080075C4 + adds r0, r4, #0 + adds r0, #0x40 + ldrh r1, [r0] + adds r1, r1, r7 + ldr r2, _080075BC + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r4, #4] + ldr r0, _080075C0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + b _080075D2 + .align 2, 0 +_080075BC: .4byte 0x000003FF +_080075C0: .4byte 0xFFFFFC00 +_080075C4: + mov r0, r8 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r2, [r4, #0xc] + bl sub_080071A0 +_080075D2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08007530 + + thumb_func_start sub_080075DC +sub_080075DC: @ 0x080075DC + adds r2, r0, #0 + adds r2, #0x2b + ldrb r1, [r2] + subs r1, #1 + strb r1, [r2] + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #0x10 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_080075DC + + thumb_func_start sub_080075F4 +sub_080075F4: @ 0x080075F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x2a + ldrb r1, [r3] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r2, r4, #0 + adds r2, #0x2b + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0xa + lsrs r0, r0, #0x1a + strb r0, [r2] + ldrb r0, [r3] + ldr r1, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r2] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r7, [r1] + mov r8, r7 + ldr r0, [r1] + lsls r1, r0, #0xa + lsrs r3, r1, #0x1a + lsls r1, r0, #9 + lsrs r6, r1, #0x1f + lsls r0, r0, #8 + lsrs r5, r0, #0x1f + cmp r3, #0 + beq _08007648 + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_08007648: + 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, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08007672 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08007C08 +_08007672: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080076A4 + adds r0, r4, #0 + adds r0, #0x40 + ldrh r1, [r0] + adds r1, r1, r7 + ldr r2, _0800769C + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r4, #4] + ldr r0, _080076A0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + b _080076B2 + .align 2, 0 +_0800769C: .4byte 0x000003FF +_080076A0: .4byte 0xFFFFFC00 +_080076A4: + mov r0, r8 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r2, [r4, #0xc] + bl sub_080071A0 +_080076B2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080075F4 + + thumb_func_start sub_080076BC +sub_080076BC: @ 0x080076BC + push {lr} + adds r1, r0, #0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + beq _080076D0 + adds r0, r1, #0 + bl sub_08007714 + b _080076D6 +_080076D0: + adds r0, r1, #0 + bl sub_080076DC +_080076D6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080076BC + + thumb_func_start sub_080076DC +sub_080076DC: @ 0x080076DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x2a + ldrb r1, [r0] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0xa + lsrs r0, r0, #0x1a + adds r1, r4, #0 + adds r1, #0x2d + strb r0, [r1] + adds r0, r4, #0 + bl sub_08007734 + adds r0, r4, #0 + bl sub_08007490 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080076DC + + thumb_func_start sub_08007714 +sub_08007714: @ 0x08007714 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x2d + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08007734 + adds r0, r4, #0 + bl sub_08007490 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08007714 + + thumb_func_start sub_08007734 +sub_08007734: @ 0x08007734 + push {r4, r5, r6, r7, lr} + mov ip, r0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + beq _080077A0 + mov r3, ip + adds r3, #0x2b + ldrb r0, [r3] + subs r0, #1 + strb r0, [r3] + mov r5, ip + adds r5, #0x2a + ldrb r1, [r5] + mov r2, ip + ldr r0, [r2, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + subs r0, #4 + movs r7, #0 + ldrsh r0, [r0, r7] + movs r1, #3 + rsbs r1, r1, #0 + adds r4, r3, #0 + cmp r0, r1 + beq _0800779A + adds r6, r1, #0 + adds r2, r4, #0 +_08007774: + ldrb r0, [r2] + cmp r0, #0 + beq _0800779A + subs r0, #1 + strb r0, [r3] + ldrb r1, [r5] + mov r7, ip + ldr r0, [r7, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + subs r0, #4 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, r6 + bne _08007774 +_0800779A: + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] +_080077A0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08007734 + + thumb_func_start sub_080077A8 +sub_080077A8: @ 0x080077A8 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r0, #0 + ldrb r0, [r6, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0800782A + ldr r0, [r6, #0x10] + ldr r0, [r0] + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _08007834 + cmp r1, r0 + beq _0800782A + adds r0, r6, #0 + bl sub_08007B10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08007C7C + mov r5, sp + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sp + bl sub_08007E14 + adds r7, r6, #0 + adds r7, #0x3f + ldrb r1, [r7] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r7] + adds r0, r4, #0 + mov r1, sp + bl sub_08007E80 + ldr r1, _08007838 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r5, #5] + strb r1, [r0, #2] + ldrb r1, [r7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0800782A + movs r0, #0x3a + ldrsh r1, [r6, r0] + movs r0, #0x3c + ldrsh r2, [r6, r0] + adds r0, r6, #0 + bl sub_08007B6C +_0800782A: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08007834: .4byte 0x00007FFF +_08007838: .4byte gUnknown_3000B70 + thumb_func_end sub_080077A8 + + thumb_func_start sub_0800783C +sub_0800783C: @ 0x0800783C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080078DE + adds r0, r4, #0 + bl sub_08007B10 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + ldr r1, _08007874 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #2] + cmp r0, #0 + beq _08007878 + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_080078F0 + b _080078C2 + .align 2, 0 +_08007874: .4byte gUnknown_3000B70 +_08007878: + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080078DE + ldrb r0, [r3, #1] + adds r0, #1 + strb r0, [r3, #1] + ldrb r0, [r3] + ldr r1, [r4, #0x10] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r3, #1] + ldr r0, [r0] + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #3 + movs r0, #0 + ldrsh r1, [r1, r0] + ldr r0, _080078E4 + cmp r1, r0 + ble _080078B0 + ldr r2, _080078E8 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080078B0: + ldr r0, _080078EC + lsls r1, r2, #0x10 + asrs r1, r1, #0xe + adds r1, r1, r0 + ldr r2, [r1] + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r2 +_080078C2: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080078DE + movs r0, #0x3a + ldrsh r1, [r4, r0] + movs r0, #0x3c + ldrsh r2, [r4, r0] + adds r0, r4, #0 + bl sub_08007B6C +_080078DE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080078E4: .4byte 0x00007FFC +_080078E8: .4byte 0xFFFF8003 +_080078EC: .4byte gUnknown_82BF34C + thumb_func_end sub_0800783C + + thumb_func_start sub_080078F0 +sub_080078F0: @ 0x080078F0 + push {r4, r5, lr} + sub sp, #8 + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08007D34 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800791A + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_08007E14 + adds r0, r4, #0 + mov r1, sp + bl sub_08007D64 +_0800791A: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080078F0 + + thumb_func_start sub_08007924 +sub_08007924: @ 0x08007924 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08007948 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _0800794C + adds r0, r2, #0 + adds r1, r3, #0 + bl sub_08007994 + b _08007954 + .align 2, 0 +_08007948: .4byte gUnknown_3000B70 +_0800794C: + adds r0, r2, #0 + adds r1, r3, #0 + bl sub_08007958 +_08007954: + pop {r0} + bx r0 + thumb_func_end sub_08007924 + + thumb_func_start sub_08007958 +sub_08007958: @ 0x08007958 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08007990 + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r1 + ldrb r2, [r3] + ldr r1, [r4, #0x10] + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r1, [r3, #1] + ldr r2, [r2] + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r1, [r1, #2] + strb r1, [r3, #3] + adds r1, r4, #0 + bl sub_080079C4 + adds r0, r4, #0 + bl sub_0800783C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007990: .4byte gUnknown_3000B70 + thumb_func_end sub_08007958 + + thumb_func_start sub_08007994 +sub_08007994: @ 0x08007994 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080079C0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #3] + subs r2, #1 + strb r2, [r1, #3] + adds r1, r4, #0 + bl sub_080079C4 + adds r0, r4, #0 + bl sub_0800783C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080079C0: .4byte gUnknown_3000B70 + thumb_func_end sub_08007994 + + thumb_func_start sub_080079C4 +sub_080079C4: @ 0x080079C4 + push {r4, r5, r6, r7, lr} + mov ip, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080079E8 + lsls r3, r5, #1 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r0, [r2, #3] + adds r6, r1, #0 + cmp r0, #0 + beq _08007A24 + ldrb r0, [r2, #1] + subs r0, #1 + strb r0, [r2, #1] + adds r4, r3, #0 + b _080079F4 + .align 2, 0 +_080079E8: .4byte gUnknown_3000B70 +_080079EC: + cmp r2, #0 + beq _08007A18 + subs r0, r2, #1 + strb r0, [r3, #1] +_080079F4: + adds r0, r4, r5 + lsls r0, r0, #2 + adds r3, r0, r6 + ldrb r0, [r3] + mov r2, ip + ldr r1, [r2, #0x10] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r3, #1] + ldr r1, [r0] + lsls r0, r2, #3 + adds r0, r0, r1 + subs r0, #8 + movs r7, #0 + ldrsh r1, [r0, r7] + ldr r0, _08007A2C + cmp r1, r0 + bne _080079EC +_08007A18: + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #1] + subs r0, #1 + strb r0, [r1, #1] +_08007A24: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08007A2C: .4byte 0x00007FFD + thumb_func_end sub_080079C4 + + thumb_func_start sub_08007A30 +sub_08007A30: @ 0x08007A30 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08007A78 + lsls r4, r5, #1 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrb r2, [r4] + ldr r0, [r1, #0x10] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r0, [r4, #1] + ldr r2, [r2] + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #2] + strb r0, [r4, #1] + mov r6, sp + adds r0, r5, #0 + mov r2, sp + bl sub_08007E14 + adds r0, r5, #0 + mov r1, sp + bl sub_08007E80 + ldrb r0, [r6, #5] + strb r0, [r4, #2] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08007A78: .4byte gUnknown_3000B70 + thumb_func_end sub_08007A30 + + thumb_func_start sub_08007A7C +sub_08007A7C: @ 0x08007A7C + push {lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + movs r3, #0 + str r2, [sp] + str r3, [sp, #4] + adds r1, #0x3f + ldrb r2, [r1] + movs r3, #0x20 + orrs r2, r3 + strb r2, [r1] + ldr r2, _08007AB4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #1] + subs r2, #1 + strb r2, [r1, #1] + mov r1, sp + bl sub_08007D64 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08007AB4: .4byte gUnknown_3000B70 + thumb_func_end sub_08007A7C + + thumb_func_start sub_08007AB8 +sub_08007AB8: @ 0x08007AB8 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r5, sp + adds r0, r4, #0 + mov r2, sp + bl sub_08007E14 + adds r0, r4, #0 + mov r1, sp + bl sub_08007E80 + ldr r1, _08007AEC + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r5, #5] + strb r1, [r0, #2] + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08007AEC: .4byte gUnknown_3000B70 + thumb_func_end sub_08007AB8 + + thumb_func_start sub_08007AF0 +sub_08007AF0: @ 0x08007AF0 + lsls r0, r0, #0x18 + ldr r2, _08007B0C + lsrs r0, r0, #0x15 + adds r0, r0, r2 + ldrh r2, [r1] + strh r2, [r0] + ldrh r2, [r1, #2] + strh r2, [r0, #2] + ldrh r2, [r1, #4] + strh r2, [r0, #4] + ldrh r1, [r1, #6] + strh r1, [r0, #6] + bx lr + .align 2, 0 +_08007B0C: .4byte gUnknown_2021B3C + thumb_func_end sub_08007AF0 + + thumb_func_start sub_08007B10 +sub_08007B10: @ 0x08007B10 + push {lr} + adds r2, r0, #0 + movs r3, #0 + ldrb r0, [r2, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08007B2A + ldrb r0, [r2, #3] + lsls r0, r0, #0x1a + lsrs r3, r0, #0x1b +_08007B2A: + adds r0, r3, #0 + pop {r1} + bx r1 + thumb_func_end sub_08007B10 + + thumb_func_start sub_08007B30 +sub_08007B30: @ 0x08007B30 + 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_08007B30 + + thumb_func_start sub_08007B40 +sub_08007B40: @ 0x08007B40 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r2, #0 + subs r0, r1, r3 + cmp r0, #0 + bge _08007B52 + rsbs r0, r0, #0 + asrs r4, r0, #9 + b _08007B56 +_08007B52: + asrs r0, r0, #9 + rsbs r4, r0, #0 +_08007B56: + adds r0, r5, #0 + muls r0, r1, r0 + adds r1, r3, #0 + bl __udivsi3 + adds r0, r0, r4 + subs r0, r5, r0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08007B40 + + thumb_func_start sub_08007B6C +sub_08007B6C: @ 0x08007B6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + ldrb r1, [r5, #3] + lsls r0, r1, #0x1a + lsrs r7, r0, #0x1b + movs r0, #0x80 + lsls r0, r0, #4 + mov sb, r0 + cmp r6, sb + beq _08007BBA + ldr r2, _08007C00 + lsrs r1, r1, #6 + lsls r1, r1, #3 + ldrb r0, [r5, #1] + lsrs r0, r0, #6 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, r1, r2 + ldr r0, [r1] + lsls r4, r0, #8 + lsls r0, r0, #0x10 + ldr r2, _08007C04 + lsls r1, r7, #3 + adds r1, 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_08007B40 + strh r0, [r5, #0x24] +_08007BBA: + cmp r8, sb + beq _08007BF2 + ldr r2, _08007C00 + ldrb r1, [r5, #3] + lsrs r1, r1, #6 + lsls r1, r1, #3 + ldrb r0, [r5, #1] + lsrs r0, r0, #6 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r2, #4 + adds r1, r1, r2 + ldr r0, [r1] + lsls r4, r0, #8 + lsls r0, r0, #0x10 + ldr r2, _08007C04 + lsls r1, r7, #3 + adds r1, r1, r2 + movs r2, #6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, #0 + adds r0, r4, #0 + mov r2, r8 + bl sub_08007B40 + strh r0, [r5, #0x26] +_08007BF2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08007C00: .4byte gUnknown_82BF35C +_08007C04: .4byte gUnknown_2021B3C + thumb_func_end sub_08007B6C + + thumb_func_start sub_08007C08 +sub_08007C08: @ 0x08007C08 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r6, [r0, #3] + lsls r3, r6, #0x1a + lsrs r3, r3, #0x1b + movs r4, #7 + ands r3, r4 + lsls r3, r3, #1 + subs r4, #0x46 + mov r8, r4 + mov r5, r8 + ands r5, r6 + orrs r5, r3 + strb r5, [r0, #3] + lsls r4, r5, #0x1a + lsrs r4, r4, #0x1b + movs r6, #0x3f + adds r6, r6, r0 + mov ip, r6 + ldrb r3, [r6] + lsls r3, r3, #0x1f + lsrs r3, r3, #0x1f + eors r1, r3 + movs r6, #1 + ands r1, r6 + lsls r1, r1, #3 + orrs r4, r1 + lsls r4, r4, #1 + mov r3, r8 + ands r3, r5 + orrs r3, r4 + strb r3, [r0, #3] + lsls r4, r3, #0x1a + lsrs r4, r4, #0x1b + mov r5, ip + ldrb r1, [r5] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1f + eors r2, r1 + ands r2, r6 + lsls r2, r2, #4 + orrs r4, r2 + lsls r4, r4, #1 + mov r6, r8 + ands r3, r6 + orrs r3, r4 + strb r3, [r0, #3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08007C08 + + thumb_func_start sub_08007C7C +sub_08007C7C: @ 0x08007C7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08007C94 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0 + strb r0, [r1, #1] + strb r0, [r1, #2] + strb r0, [r1, #3] + bx lr + .align 2, 0 +_08007C94: .4byte gUnknown_3000B70 + thumb_func_end sub_08007C7C + + thumb_func_start sub_08007C98 +sub_08007C98: @ 0x08007C98 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08007CBC + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + movs r3, #0 + strb r1, [r2] + strb r3, [r2, #1] + strb r3, [r2, #2] + strb r3, [r2, #3] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #4] + strh r0, [r2, #6] + strh r3, [r2, #8] + bx lr + .align 2, 0 +_08007CBC: .4byte gUnknown_3000B70 + thumb_func_end sub_08007C98 + + thumb_func_start sub_08007CC0 +sub_08007CC0: @ 0x08007CC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08007CE4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r1, #2] + strb r0, [r1, #3] + movs r2, #0x80 + lsls r2, r2, #1 + strh r2, [r1, #4] + strh r2, [r1, #6] + strh r0, [r1, #8] + bx lr + .align 2, 0 +_08007CE4: .4byte gUnknown_3000B70 + thumb_func_end sub_08007CC0 + + thumb_func_start sub_08007CE8 +sub_08007CE8: @ 0x08007CE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08007D08 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r0, [r1] + strh r0, [r2, #4] + ldrh r0, [r1, #2] + strh r0, [r2, #6] + ldrb r0, [r1, #4] + lsls r0, r0, #8 + strh r0, [r2, #8] + bx lr + .align 2, 0 +_08007D08: .4byte gUnknown_3000B70 + thumb_func_end sub_08007CE8 + + thumb_func_start sub_08007D0C +sub_08007D0C: @ 0x08007D0C + push {lr} + adds r3, r0, #0 + adds r3, #0x2c + ldrb r2, [r3] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + bne _08007D30 + lsls r0, r2, #0x1a + lsrs r0, r0, #0x1a + subs r0, #1 + movs r1, #0x3f + ands r0, r1 + movs r1, #0x40 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08007D30: + pop {r0} + bx r0 + thumb_func_end sub_08007D0C + + thumb_func_start sub_08007D34 +sub_08007D34: @ 0x08007D34 + push {lr} + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + adds r3, r0, #0 + adds r3, #0x2c + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08007D58 + ldr r0, _08007D60 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + subs r0, #1 + strb r0, [r1, #2] +_08007D58: + ldrb r0, [r3] + lsrs r0, r0, #7 + pop {r1} + bx r1 + .align 2, 0 +_08007D60: .4byte gUnknown_3000B70 + thumb_func_end sub_08007D34 + + thumb_func_start sub_08007D64 +sub_08007D64: @ 0x08007D64 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08007DEC + lsls r4, r5, #1 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrh r0, [r1] + ldrh r2, [r4, #4] + adds r0, r0, r2 + strh r0, [r4, #4] + ldrh r0, [r1, #2] + ldrh r2, [r4, #6] + adds r0, r0, r2 + strh r0, [r4, #6] + ldrb r0, [r1, #4] + lsls r0, r0, #8 + ldrh r1, [r4, #8] + adds r0, r0, r1 + ldr r2, _08007DF0 + adds r1, r2, #0 + ands r0, r1 + strh r0, [r4, #8] + movs r1, #4 + ldrsh r0, [r4, r1] + bl sub_08007DFC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r6, _08007DF4 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] + movs r2, #6 + ldrsh r0, [r4, r2] + bl sub_08007DFC + lsls r0, r0, #0x10 + ldr r2, _08007DF8 + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldrh r1, [r4, #8] + ldr r0, [sp, #4] + ands r0, r6 + orrs r0, r1 + str r0, [sp, #4] + add r4, sp, #8 + mov r0, sp + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08007AF0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08007DEC: .4byte gUnknown_3000B70 +_08007DF0: .4byte 0xFFFFFF00 +_08007DF4: .4byte 0xFFFF0000 +_08007DF8: .4byte 0x0000FFFF + thumb_func_end sub_08007D64 + + thumb_func_start sub_08007DFC +sub_08007DFC: @ 0x08007DFC + push {lr} + adds r1, r0, #0 + movs r0, #0x80 + lsls r0, r0, #9 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08007DFC + + thumb_func_start sub_08007E14 +sub_08007E14: @ 0x08007E14 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08007E7C + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r3 + ldrb r3, [r4] + ldr r0, [r1, #0x10] + lsls r3, r3, #2 + adds r3, r3, r0 + ldrb r0, [r4, #1] + ldr r3, [r3] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r2] + ldrb r3, [r4] + ldr r0, [r1, #0x10] + lsls r3, r3, #2 + adds r3, r3, r0 + ldrb r0, [r4, #1] + ldr r3, [r3] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrh r0, [r0, #2] + strh r0, [r2, #2] + ldrb r3, [r4] + ldr r0, [r1, #0x10] + lsls r3, r3, #2 + adds r3, r3, r0 + ldrb r0, [r4, #1] + ldr r3, [r3] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #4] + strb r0, [r2, #4] + ldrb r3, [r4] + ldr r0, [r1, #0x10] + lsls r3, r3, #2 + adds r3, r3, r0 + ldrb r0, [r4, #1] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #5] + strb r0, [r2, #5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08007E7C: .4byte gUnknown_3000B70 + thumb_func_end sub_08007E14 + + thumb_func_start sub_08007E80 +sub_08007E80: @ 0x08007E80 + push {r4, lr} + sub sp, #8 + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + movs r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldrb r0, [r2, #5] + cmp r0, #0 + beq _08007EA6 + subs r0, #1 + strb r0, [r2, #5] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08007D64 + b _08007EB6 +_08007EA6: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08007CE8 + adds r0, r4, #0 + mov r1, sp + bl sub_08007D64 +_08007EB6: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08007E80 + + thumb_func_start sub_08007EC0 +sub_08007EC0: @ 0x08007EC0 + adds r2, r0, #0 + adds r2, #0x2a + strb r1, [r2] + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + movs r2, #0x11 + rsbs r2, r2, #0 + ands r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_08007EC0 + + thumb_func_start sub_08007ED8 +sub_08007ED8: @ 0x08007ED8 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, #0x2a + ldrb r0, [r0] + cmp r0, r1 + beq _08007EEE + adds r0, r2, #0 + bl sub_08007EC0 +_08007EEE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08007ED8 + + thumb_func_start sub_08007EF4 +sub_08007EF4: @ 0x08007EF4 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r4, r3, #0 + adds r4, #0x2c + ldrb r0, [r4] + lsls r0, r0, #0x19 + lsrs r6, r0, #0x1f + subs r1, #1 + adds r0, r3, #0 + adds r0, #0x2b + strb r1, [r0] + ldrb r1, [r4] + movs r7, #0x40 + rsbs r7, r7, #0 + adds r0, r7, #0 + ands r0, r1 + strb r0, [r4] + adds r2, r3, #0 + adds r2, #0x3f + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4] + movs r5, #0x41 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4] + adds r0, r3, #0 + bl sub_08007490 + ldrb r2, [r4] + movs r0, #0x3f + ands r0, r2 + cmp r0, #0 + beq _08007F5C + lsls r0, r2, #0x1a + lsrs r0, r0, #0x1a + adds r0, #1 + movs r1, #0x3f + ands r0, r1 + adds r1, r7, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] +_08007F5C: + lsls r2, r6, #6 + ldrb r1, [r4] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08007EF4 + + thumb_func_start sub_08007F70 +sub_08007F70: @ 0x08007F70 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_08007B10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_08007C98 + adds r5, #0x3f + ldrb r0, [r5] + movs r1, #8 + orrs r0, r1 + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08007F70 + + thumb_func_start sub_08007F9C +sub_08007F9C: @ 0x08007F9C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_08007B10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08007FCC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _08007FC4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08007F70 +_08007FC4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08007FCC: .4byte gUnknown_3000B70 + thumb_func_end sub_08007F9C + + thumb_func_start sub_08007FD0 +sub_08007FD0: @ 0x08007FD0 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_08007B10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08008004 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + strb r4, [r1] + adds r5, #0x3f + ldrb r0, [r5] + movs r1, #8 + orrs r0, r1 + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08008004: .4byte gUnknown_3000B70 + thumb_func_end sub_08007FD0 + + thumb_func_start sub_08008008 +sub_08008008: @ 0x08008008 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_08007B10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08008038 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, r4 + beq _08008030 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08007FD0 +_08008030: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08008038: .4byte gUnknown_3000B70 + thumb_func_end sub_08008008 + + thumb_func_start sub_0800803C +sub_0800803C: @ 0x0800803C + push {lr} + adds r3, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08008088 + adds r0, r3, #0 + adds r0, #0x2a + ldrb r1, [r0] + ldr r0, [r3, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r2, [r0] + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _08008070 + movs r2, #0 +_08008070: + adds r0, r3, #0 + adds r0, #0x40 + ldrh r1, [r0] + adds r1, r1, r2 + ldr r2, _0800808C + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + ldr r0, _08008090 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] +_08008088: + pop {r0} + bx r0 + .align 2, 0 +_0800808C: .4byte 0x000003FF +_08008090: .4byte 0xFFFFFC00 + thumb_func_end sub_0800803C + + thumb_func_start sub_08008094 +sub_08008094: @ 0x08008094 + push {r4, lr} + ldr r1, _080080C0 + movs r0, #0 + strb r0, [r1] + ldr r1, _080080C4 + movs r0, #0 + str r0, [r1] + bl sub_08006F10 + movs r4, #0 +_080080A8: + adds r0, r4, #0 + bl sub_08007CC0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _080080A8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080080C0: .4byte gUnknown_2021C3C +_080080C4: .4byte gUnknown_30030B8 + thumb_func_end sub_08008094 + + thumb_func_start sub_080080C8 +sub_080080C8: @ 0x080080C8 + push {r4, lr} + movs r2, #0 + movs r1, #1 + ldr r0, _080080E8 + ldr r4, [r0] + adds r3, r0, #0 +_080080D4: + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _080080EC + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r0, r2, #0 + b _080080FA + .align 2, 0 +_080080E8: .4byte gUnknown_30030B8 +_080080EC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #1 + cmp r2, #0x1f + bls _080080D4 + movs r0, #0xff +_080080FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080080C8 + + thumb_func_start sub_08008100 +sub_08008100: @ 0x08008100 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0 + movs r1, #1 + ldr r3, _0800813C + cmp r0, r2 + bhs _0800811E +_08008112: + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #1 + cmp r0, r2 + blo _08008112 +_0800811E: + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + movs r1, #0x80 + lsls r1, r1, #1 + str r1, [sp] + adds r0, r2, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0800813C: .4byte gUnknown_30030B8 + thumb_func_end sub_08008100 + + thumb_func_start sub_08008140 +sub_08008140: @ 0x08008140 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080080C8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xff + beq _08008188 + ldrb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 + movs r0, #0x1f + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_08007CC0 +_08008188: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08008140 + + thumb_func_start sub_08008190 +sub_08008190: @ 0x08008190 + push {r4, r5, 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, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_08007DFC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08008208 + mov r8, r1 + ldr r1, [sp] + mov r2, r8 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_08007DFC + lsls r0, r0, #0x10 + ldr r2, _0800820C + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r0, [sp, #4] + mov r1, r8 + ands r0, r1 + orrs r0, r5 + str r0, [sp, #4] + add r4, sp, #8 + mov r0, sp + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08007AF0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08008208: .4byte 0xFFFF0000 +_0800820C: .4byte 0x0000FFFF + thumb_func_end sub_08008190 + + thumb_func_start sub_08008210 +sub_08008210: @ 0x08008210 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r0, [r5, #4] + lsrs r0, r0, #5 + bl sub_08006FB4 + lsls r4, r0, #0x10 + asrs r6, r4, #0x10 + cmp r6, #0 + blt _0800824C + ldrh r0, [r5, #6] + lsrs r4, r4, #0x10 + ldrh r2, [r5, #4] + lsrs r2, r2, #5 + adds r1, r4, #0 + bl sub_080083DC + ldr r0, [r5] + lsls r1, r6, #5 + ldr r2, _08008248 + adds r1, r1, r2 + ldrh r2, [r5, #4] + lsrs r2, r2, #1 + bl CpuSet + adds r0, r4, #0 + b _0800824E + .align 2, 0 +_08008248: .4byte 0x06010000 +_0800824C: + movs r0, #0 +_0800824E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08008210 + + thumb_func_start sub_08008254 +sub_08008254: @ 0x08008254 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r0, [r5] + cmp r0, #0 + beq _08008278 +_08008260: + lsls r0, r4, #3 + adds r0, r5, r0 + bl sub_08008210 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #3 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, #0 + bne _08008260 +_08008278: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08008254 + + thumb_func_start sub_08008280 +sub_08008280: @ 0x08008280 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008364 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _080082DE + ldr r0, _080082E8 + lsls r1, r4, #2 + adds r2, r1, r0 + adds r0, #2 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r3, [r2] + adds r0, r3, r0 + ldr r1, _080082EC + mov r8, r1 + lsls r5, r4, #1 + cmp r3, r0 + bge _080082D6 + ldr r1, _080082F0 + mov ip, r1 + movs r6, #7 + movs r7, #1 + adds r4, r0, #0 +_080082BA: + lsrs r2, r3, #3 + add r2, ip + 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, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blt _080082BA +_080082D6: + mov r0, r8 + adds r1, r5, r0 + ldr r0, _080082F4 + strh r0, [r1] +_080082DE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080082E8: .4byte gUnknown_3000A70 +_080082EC: .4byte gUnknown_30009F0 +_080082F0: .4byte gUnknown_2021AB8 +_080082F4: .4byte 0x0000FFFF + thumb_func_end sub_08008280 + + thumb_func_start sub_080082F8 +sub_080082F8: @ 0x080082F8 + push {r4, r5, r6, r7, lr} + movs r2, #0 + ldr r7, _0800832C + ldr r0, _08008330 + adds r6, r0, #0 + ldr r4, _08008334 + movs r3, #0 + adds r5, r4, #2 +_08008308: + lsls r1, r2, #1 + adds r1, r1, r7 + ldrh r0, [r1] + orrs r0, r6 + strh r0, [r1] + lsls r1, r2, #2 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r1, r5 + strh r3, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _08008308 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800832C: .4byte gUnknown_30009F0 +_08008330: .4byte 0x0000FFFF +_08008334: .4byte gUnknown_3000A70 + thumb_func_end sub_080082F8 + + thumb_func_start sub_08008338 +sub_08008338: @ 0x08008338 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008364 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _08008358 + ldr r0, _08008354 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1] + b _0800835A + .align 2, 0 +_08008354: .4byte gUnknown_3000A70 +_08008358: + ldr r0, _08008360 +_0800835A: + pop {r1} + bx r1 + .align 2, 0 +_08008360: .4byte 0x0000FFFF + thumb_func_end sub_08008338 + + thumb_func_start sub_08008364 +sub_08008364: @ 0x08008364 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + ldr r3, _0800837C +_0800836E: + lsls r0, r1, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08008380 + adds r0, r1, #0 + b _0800838C + .align 2, 0 +_0800837C: .4byte gUnknown_30009F0 +_08008380: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x3f + bls _0800836E + movs r0, #0xff +_0800838C: + pop {r1} + bx r1 + thumb_func_end sub_08008364 + + thumb_func_start sub_08008390 +sub_08008390: @ 0x08008390 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r6, _080083B8 + ldr r5, _080083BC + ldr r4, _080083C0 +_0800839E: + lsls r0, r2, #1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r5 + beq _080083C4 + lsls r0, r2, #2 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, r3 + bne _080083C4 + ldrh r0, [r1] + b _080083D0 + .align 2, 0 +_080083B8: .4byte gUnknown_30009F0 +_080083BC: .4byte 0x0000FFFF +_080083C0: .4byte gUnknown_3000A70 +_080083C4: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _0800839E + ldr r0, _080083D8 +_080083D0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080083D8: .4byte 0x0000FFFF + thumb_func_end sub_08008390 + + thumb_func_start sub_080083DC +sub_080083DC: @ 0x080083DC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, _08008418 + bl sub_08008364 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0800841C + lsls r1, r0, #1 + adds r1, r1, r2 + strh r4, [r1] + ldr r1, _08008420 + lsls r0, r0, #2 + adds r2, r0, r1 + strh r5, [r2] + adds r1, #2 + adds r0, r0, r1 + strh r6, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08008418: .4byte 0x0000FFFF +_0800841C: .4byte gUnknown_30009F0 +_08008420: .4byte gUnknown_3000A70 + thumb_func_end sub_080083DC + + thumb_func_start sub_08008424 +sub_08008424: @ 0x08008424 + push {r4, lr} + ldr r1, _08008450 + movs r0, #0 + strb r0, [r1] + movs r2, #0 + ldr r4, _08008454 + ldr r0, _08008458 + adds r3, r0, #0 +_08008434: + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _08008434 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08008450: .4byte gUnknown_30030BC +_08008454: .4byte gUnknown_3000CF0 +_08008458: .4byte 0x0000FFFF + thumb_func_end sub_08008424 + + thumb_func_start sub_0800845C +sub_0800845C: @ 0x0800845C + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _08008472 + adds r0, r4, #0 + b _080084A2 +_08008472: + ldr r0, _08008498 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _080084A0 + ldr r1, _0800849C + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r5, #4] + strh r1, [r0] + ldr r0, [r5] + lsls r1, r4, #4 + bl sub_080084D4 + adds r0, r4, #0 + b _080084A2 + .align 2, 0 +_08008498: .4byte 0x0000FFFF +_0800849C: .4byte gUnknown_3000CF0 +_080084A0: + movs r0, #0xff +_080084A2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0800845C + + thumb_func_start sub_080084A8 +sub_080084A8: @ 0x080084A8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + b _080084B6 +_080084B0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080084B6: + lsls r0, r4, #3 + adds r1, r0, r5 + ldr r0, [r1] + cmp r0, #0 + beq _080084CE + adds r0, r1, #0 + bl sub_0800845C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080084B0 +_080084CE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080084A8 + + thumb_func_start sub_080084D4 +sub_080084D4: @ 0x080084D4 + push {lr} + lsls r1, r1, #0x10 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080084D4 + + thumb_func_start sub_080084EC +sub_080084EC: @ 0x080084EC + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0800850C + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08008514 + ldr r1, _08008510 + lsls r0, r2, #1 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + b _08008516 + .align 2, 0 +_0800850C: .4byte 0x0000FFFF +_08008510: .4byte gUnknown_3000CF0 +_08008514: + movs r0, #0xff +_08008516: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080084EC + + thumb_func_start sub_0800851C +sub_0800851C: @ 0x0800851C + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0800853C + ldrb r1, [r0] + cmp r1, #0xf + bhi _0800854E + ldr r3, _08008540 +_0800852C: + lsls r0, r1, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08008544 + adds r0, r1, #0 + b _08008550 + .align 2, 0 +_0800853C: .4byte gUnknown_30030BC +_08008540: .4byte gUnknown_3000CF0 +_08008544: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _0800852C +_0800854E: + movs r0, #0xff +_08008550: + pop {r1} + bx r1 + thumb_func_end sub_0800851C + + thumb_func_start sub_08008554 +sub_08008554: @ 0x08008554 + lsls r0, r0, #0x18 + ldr r1, _08008560 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08008560: .4byte gUnknown_3000CF0 + thumb_func_end sub_08008554 + + thumb_func_start sub_08008564 +sub_08008564: @ 0x08008564 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _08008580 + ldr r0, _08008584 + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r0, _08008588 + strh r0, [r1] +_08008580: + pop {r0} + bx r0 + .align 2, 0 +_08008584: .4byte gUnknown_3000CF0 +_08008588: .4byte 0x0000FFFF + thumb_func_end sub_08008564 + + thumb_func_start sub_0800858C +sub_0800858C: @ 0x0800858C + str r1, [r0, #0x18] + adds r0, #0x42 + movs r1, #0x40 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_0800858C + + thumb_func_start sub_08008598 +sub_08008598: @ 0x08008598 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldr r1, _080085AC + ldrb r0, [r3] + ldrb r1, [r1] + cmp r0, r1 + blo _080085B0 + movs r0, #1 + b _080085F8 + .align 2, 0 +_080085AC: .4byte gUnknown_2021AB4 +_080085B0: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _080085C4 + adds r0, r4, #0 + adds r0, #0x42 + ldrb r1, [r0] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _080085E4 +_080085C4: + ldr r0, _080085E0 + ldrb r2, [r3] + lsls r2, r2, #3 + adds r0, #0x38 + adds r2, r2, r0 + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r2] + str r1, [r2, #4] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + movs r0, #0 + b _080085F8 + .align 2, 0 +_080085E0: .4byte gUnknown_3002360 +_080085E4: + ldrb r1, [r3] + lsls r1, r1, #3 + ldr r0, _08008600 + adds r1, r1, r0 + adds r0, r4, #0 + adds r2, r3, #0 + bl sub_08008604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080085F8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08008600: .4byte gUnknown_3002398 + thumb_func_end sub_08008598 + + thumb_func_start sub_08008604 +sub_08008604: @ 0x08008604 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r3, r0, #0 + str r1, [sp] + mov r8, r2 + ldr r0, _08008624 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + blo _08008628 +_08008620: + movs r0, #1 + b _080087FE + .align 2, 0 +_08008624: .4byte gUnknown_2021AB4 +_08008628: + adds r0, r3, #0 + adds r0, #0x42 + ldrb r1, [r0] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x17 + ldr r2, [r3, #0x18] + adds r7, r2, r1 + mov ip, r3 + str r0, [sp, #0x18] + cmp r7, #0 + beq _08008644 + ldr r0, [r7, #4] + cmp r0, #0 + bne _0800865A +_08008644: + mov r2, ip + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [sp] + str r0, [r2] + str r1, [r2, #4] + mov r1, r8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080087FC +_0800865A: + mov r2, ip + ldrh r0, [r2, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + str r0, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #0xc] + ldrb r0, [r2, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + asrs r1, r0, #3 + str r1, [sp, #0x10] + movs r1, #1 + ldr r2, [sp, #0x10] + ands r2, r1 + str r2, [sp, #0x10] + asrs r0, r0, #4 + mov sl, r0 + ands r0, r1 + mov sl, r0 + mov r1, ip + ldrh r0, [r1, #2] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x17 + adds r1, #0x28 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + mov r1, ip + ldrb r0, [r1] + adds r1, #0x29 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + movs r0, #0 + mov sb, r0 + ldr r1, [sp, #0xc] + cmp sb, r1 + blo _080086B8 + b _080087FC +_080086B8: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #0x14] +_080086BE: + mov r2, r8 + ldrb r0, [r2] + ldr r1, _08008810 + ldrb r1, [r1] + cmp r0, r1 + bhs _08008620 + ldr r0, [r7, #4] + mov r2, sb + lsls r6, r2, #2 + adds r2, r6, r0 + movs r0, #0 + ldrsb r0, [r2, r0] + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + ldrsb r0, [r2, r0] + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _08008714 + ldr r0, [r2] + lsls r1, r0, #0xc + lsrs r1, r1, #0x1e + lsls r1, r1, #2 + lsls r0, r0, #0xe + lsrs r0, r0, #0x1e + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r0, _08008814 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mvns r0, r4 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08008714: + mov r1, sl + cmp r1, #0 + beq _08008746 + ldr r0, [r2] + lsls r1, r0, #0xc + lsrs r1, r1, #0x1e + lsls r1, r1, #2 + lsls r0, r0, #0xe + lsrs r0, r0, #0x1e + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r2, _08008814 + adds r1, r1, r2 + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mvns r0, r5 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08008746: + mov r1, sb + lsls r0, r1, #3 + ldr r2, [sp] + adds r3, r0, r2 + mov r2, ip + ldr r0, [r2] + ldr r1, [r2, #4] + str r0, [r3] + str r1, [r3, #4] + ldr r0, [r7, #4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, r1, #0xe + lsrs r1, r1, #0x1e + lsls r1, r1, #6 + ldrb r2, [r3, #1] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] + ldr r0, [r7, #4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, r1, #0xc + lsrs r1, r1, #0x1e + lsls r1, r1, #6 + ldrb r2, [r3, #3] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #3] + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + ldr r0, [sp, #0x14] + adds r1, r0, r1 + ldr r2, _08008818 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #2] + ldr r0, _0800881C + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #2] + ldr r1, [sp, #8] + adds r0, r1, r5 + strb r0, [r3] + ldr r0, [r7, #4] + adds r0, r6, r0 + ldr r1, [r0] + lsls r1, r1, #2 + lsrs r1, r1, #0x16 + ldr r2, [sp, #4] + adds r1, r2, r1 + ldr r2, _08008820 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + ldr r0, _08008824 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + ldr r0, [sp, #0x18] + ldrb r1, [r0] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + beq _080087E2 + ldr r0, [r7, #4] + adds r0, r6, r0 + ldr r1, [r0] + lsrs r1, r1, #0x1e + lsls r1, r1, #2 + ldrb r2, [r3, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] +_080087E2: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r1, r8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r2, [sp, #0xc] + cmp sb, r2 + bhs _080087FC + b _080086BE +_080087FC: + movs r0, #0 +_080087FE: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08008810: .4byte gUnknown_2021AB4 +_08008814: .4byte gUnknown_82BF3BC +_08008818: .4byte 0x000001FF +_0800881C: .4byte 0xFFFFFE00 +_08008820: .4byte 0x000003FF +_08008824: .4byte 0xFFFFFC00 + thumb_func_end sub_08008604 + + thumb_func_start sub_08008828 +sub_08008828: @ 0x08008828 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #5 + movs r3, #0 +_08008830: + adds r2, r4, r3 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08008844 + adds r0, r2, #0 + b _08008854 +_08008844: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r5 + blo _08008830 + adds r0, r4, r3 + movs r1, #0xff + strb r1, [r0] +_08008854: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008828 + + thumb_func_start sub_0800885C +sub_0800885C: @ 0x0800885C + push {r4, lr} + adds r3, r0, #0 + movs r4, #5 + movs r2, #0 +_08008864: + adds r1, r3, r2 + ldrb r0, [r1] + cmp r0, #0xff + bne _08008870 + adds r0, r1, #0 + b _08008880 +_08008870: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r4 + blo _08008864 + adds r0, r3, r2 + movs r1, #0xff + strb r1, [r0] +_08008880: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800885C + + thumb_func_start sub_08008888 +sub_08008888: @ 0x08008888 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #5 + movs r3, #0 +_08008890: + adds r2, r4, r3 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080088A4 + adds r0, r2, #0 + b _080088B0 +_080088A4: + adds r3, #1 + cmp r3, r5 + blt _08008890 + adds r0, r4, r3 + movs r1, #0xff + strb r1, [r0] +_080088B0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008888 + + thumb_func_start sub_080088B8 +sub_080088B8: @ 0x080088B8 + push {lr} + adds r3, r0, #0 + b _080088C4 +_080088BE: + strb r2, [r3] + adds r3, #1 + adds r1, #1 +_080088C4: + ldrb r2, [r1] + adds r0, r2, #0 + cmp r0, #0xff + bne _080088BE + movs r0, #0xff + strb r0, [r3] + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080088B8 + + thumb_func_start sub_080088D8 +sub_080088D8: @ 0x080088D8 + push {lr} + adds r2, r0, #0 + b _080088E0 +_080088DE: + adds r2, #1 +_080088E0: + ldrb r0, [r2] + cmp r0, #0xff + bne _080088DE + adds r0, r2, #0 + bl sub_080088B8 + pop {r1} + bx r1 + thumb_func_end sub_080088D8 + + thumb_func_start sub_080088F0 +sub_080088F0: @ 0x080088F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r3, #0 + adds r0, r5, #0 + cmp r3, r0 + bhs _08008916 + adds r2, r0, #0 +_08008904: + adds r1, r4, r3 + adds r0, r6, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r2 + blo _08008904 +_08008916: + adds r0, r4, r5 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080088F0 + + thumb_func_start sub_08008920 +sub_08008920: @ 0x08008920 + push {lr} + adds r3, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + b _0800892C +_0800892A: + adds r3, #1 +_0800892C: + ldrb r0, [r3] + cmp r0, #0xff + bne _0800892A + adds r0, r3, #0 + bl sub_080088F0 + pop {r1} + bx r1 + thumb_func_end sub_08008920 + + thumb_func_start sub_0800893C +sub_0800893C: @ 0x0800893C + push {lr} + adds r2, r0, #0 + movs r1, #0 + ldrb r0, [r2] + cmp r0, #0xff + beq _08008956 +_08008948: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _08008948 +_08008956: + adds r0, r1, #0 + pop {r1} + bx r1 + thumb_func_end sub_0800893C + + thumb_func_start sub_0800895C +sub_0800895C: @ 0x0800895C + push {lr} + adds r2, r0, #0 + b _0800896E +_08008962: + cmp r0, #0xff + bne _0800896A + movs r0, #0 + b _0800897C +_0800896A: + adds r2, #1 + adds r1, #1 +_0800896E: + ldrb r0, [r2] + ldrb r3, [r1] + cmp r0, r3 + beq _08008962 + ldrb r0, [r2] + ldrb r1, [r1] + subs r0, r0, r1 +_0800897C: + pop {r1} + bx r1 + thumb_func_end sub_0800895C + + thumb_func_start sub_08008980 +sub_08008980: @ 0x08008980 + push {r4, lr} + adds r3, r0, #0 + b _08008998 +_08008986: + cmp r0, #0xff + beq _08008994 + adds r3, #1 + adds r1, #1 + subs r2, #1 + cmp r2, #0 + bne _08008998 +_08008994: + movs r0, #0 + b _080089A6 +_08008998: + ldrb r0, [r3] + ldrb r4, [r1] + cmp r0, r4 + beq _08008986 + ldrb r0, [r3] + ldrb r1, [r1] + subs r0, r0, r1 +_080089A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08008980 + + thumb_func_start sub_080089AC +sub_080089AC: @ 0x080089AC + push {lr} + adds r3, r0, #0 + movs r2, #0 + cmp r2, r1 + bge _080089D0 +_080089B6: + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080089C6 + cmp r0, #0xff + beq _080089C6 + movs r0, #1 + b _080089D2 +_080089C6: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blt _080089B6 +_080089D0: + movs r0, #0 +_080089D2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080089AC + + thumb_func_start sub_080089D8 +sub_080089D8: @ 0x080089D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r3, r3, #0x18 + ldr r0, _08008A28 + lsrs r3, r3, #0x16 + subs r3, #4 + adds r3, r3, r0 + ldr r0, [r3] + movs r7, #0 + cmp r2, #1 + bne _080089F6 + movs r7, #2 +_080089F6: + cmp r2, #2 + bne _080089FC + movs r7, #1 +_080089FC: + adds r5, r0, #0 + cmp r5, #0 + ble _08008A68 + ldr r0, _08008A2C + mov r8, r0 +_08008A06: + adds r0, r6, #0 + adds r1, r5, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r0, r5, #0 + muls r0, r2, r0 + subs r1, r6, r0 + cmp r7, #1 + bne _08008A30 + adds r3, r4, #0 + adds r4, #1 + cmp r2, #9 + bls _08008A42 + b _08008A4A + .align 2, 0 +_08008A28: .4byte gUnknown_82BF44C +_08008A2C: .4byte gUnknown_82BF43C +_08008A30: + cmp r2, #0 + bne _08008A38 + cmp r5, #1 + bne _08008A50 +_08008A38: + movs r7, #1 + adds r3, r4, #0 + adds r4, #1 + cmp r2, #9 + bhi _08008A4A +_08008A42: + mov r6, r8 + adds r0, r2, r6 + ldrb r0, [r0] + b _08008A4C +_08008A4A: + movs r0, #0xac +_08008A4C: + strb r0, [r3] + b _08008A58 +_08008A50: + cmp r7, #2 + bne _08008A58 + strb r2, [r4] + adds r4, #1 +_08008A58: + adds r6, r1, #0 + adds r0, r5, #0 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 + cmp r5, #0 + bgt _08008A06 +_08008A68: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080089D8 + + thumb_func_start sub_08008A78 +sub_08008A78: @ 0x08008A78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r3, r3, #0x18 + ldr r0, _08008AC8 + lsrs r3, r3, #0x16 + subs r3, #4 + adds r3, r3, r0 + ldr r0, [r3] + movs r7, #0 + cmp r2, #1 + bne _08008A96 + movs r7, #2 +_08008A96: + cmp r2, #2 + bne _08008A9C + movs r7, #1 +_08008A9C: + adds r5, r0, #0 + cmp r5, #0 + ble _08008B08 + ldr r0, _08008ACC + mov r8, r0 +_08008AA6: + adds r0, r6, #0 + adds r1, r5, #0 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r0, r5, #0 + muls r0, r2, r0 + subs r1, r6, r0 + cmp r7, #1 + bne _08008AD0 + adds r3, r4, #0 + adds r4, #1 + cmp r2, #9 + bls _08008AE2 + b _08008AEA + .align 2, 0 +_08008AC8: .4byte gUnknown_82BF44C +_08008ACC: .4byte gUnknown_82BF43C +_08008AD0: + cmp r2, #0 + bne _08008AD8 + cmp r5, #1 + bne _08008AF0 +_08008AD8: + movs r7, #1 + adds r3, r4, #0 + adds r4, #1 + cmp r2, #9 + bhi _08008AEA +_08008AE2: + mov r6, r8 + adds r0, r2, r6 + ldrb r0, [r0] + b _08008AEC +_08008AEA: + movs r0, #0xac +_08008AEC: + strb r0, [r3] + b _08008AF8 +_08008AF0: + cmp r7, #2 + bne _08008AF8 + strb r2, [r4] + adds r4, #1 +_08008AF8: + adds r6, r1, #0 + adds r0, r5, #0 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 + cmp r5, #0 + bgt _08008AA6 +_08008B08: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08008A78 + + thumb_func_start sub_08008B18 +sub_08008B18: @ 0x08008B18 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r6, r0, #0 + adds r7, r1, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #1 + movs r0, #1 + cmp r1, r3 + bhs _08008B3C +_08008B30: + lsls r1, r1, #4 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r3 + blo _08008B30 +_08008B3C: + movs r3, #0 + cmp r2, #1 + bne _08008B44 + movs r3, #2 +_08008B44: + cmp r2, #2 + bne _08008B4A + movs r3, #1 +_08008B4A: + adds r5, r1, #0 + cmp r5, #0 + ble _08008BB8 + ldr r0, _08008B7C + mov r8, r0 +_08008B54: + 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, #1 + bne _08008B80 + adds r2, r6, #0 + adds r6, #1 + cmp r4, #0xf + bls _08008B92 + b _08008B9A + .align 2, 0 +_08008B7C: .4byte gUnknown_82BF43C +_08008B80: + cmp r4, #0 + bne _08008B88 + cmp r5, #1 + bne _08008BA0 +_08008B88: + movs r3, #1 + adds r2, r6, #0 + adds r6, #1 + cmp r4, #0xf + bhi _08008B9A +_08008B92: + mov r7, r8 + adds r0, r4, r7 + ldrb r0, [r0] + b _08008B9C +_08008B9A: + movs r0, #0xac +_08008B9C: + strb r0, [r2] + b _08008BA8 +_08008BA0: + cmp r3, #2 + bne _08008BA8 + strb r4, [r6] + adds r6, #1 +_08008BA8: + adds r7, r1, #0 + adds r0, r5, #0 + cmp r5, #0 + bge _08008BB2 + adds r0, #0xf +_08008BB2: + asrs r5, r0, #4 + cmp r5, #0 + bgt _08008B54 +_08008BB8: + movs r0, #0xff + strb r0, [r6] + adds r0, r6, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008B18 + + thumb_func_start sub_08008BCC +sub_08008BCC: @ 0x08008BCC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 +_08008BD2: + ldrb r2, [r5] + adds r5, #1 + adds r0, r2, #0 + subs r0, #0xfa + cmp r0, #5 + bhi _08008CA6 + lsls r0, r0, #2 + ldr r1, _08008BE8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08008BE8: .4byte _08008BEC +_08008BEC: @ jump table + .4byte _08008CA6 @ case 0 + .4byte _08008CA6 @ case 1 + .4byte _08008C18 @ case 2 + .4byte _08008C04 @ case 3 + .4byte _08008CA6 @ case 4 + .4byte _08008CAC @ case 5 +_08008C04: + ldrb r0, [r5] + adds r5, #1 + bl sub_08008DC4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08008BCC + adds r4, r0, #0 + b _08008BD2 +_08008C18: + strb r2, [r4] + adds r4, #1 + ldrb r2, [r5] + adds r5, #1 + strb r2, [r4] + adds r4, #1 + subs r0, r2, #4 + cmp r0, #0x14 + bhi _08008C9C + lsls r0, r0, #2 + ldr r1, _08008C34 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08008C34: .4byte _08008C38 +_08008C38: @ jump table + .4byte _08008C8C @ case 0 + .4byte _08008C9C @ case 1 + .4byte _08008C9C @ case 2 + .4byte _08008BD2 @ case 3 + .4byte _08008C9C @ case 4 + .4byte _08008BD2 @ case 5 + .4byte _08008C9C @ case 6 + .4byte _08008C94 @ case 7 + .4byte _08008C9C @ case 8 + .4byte _08008C9C @ case 9 + .4byte _08008C9C @ case 10 + .4byte _08008BD2 @ case 11 + .4byte _08008C9C @ case 12 + .4byte _08008C9C @ case 13 + .4byte _08008C9C @ case 14 + .4byte _08008C9C @ case 15 + .4byte _08008C9C @ case 16 + .4byte _08008BD2 @ case 17 + .4byte _08008BD2 @ case 18 + .4byte _08008BD2 @ case 19 + .4byte _08008BD2 @ case 20 +_08008C8C: + ldrb r0, [r5] + strb r0, [r4] + adds r5, #1 + adds r4, #1 +_08008C94: + ldrb r0, [r5] + strb r0, [r4] + adds r5, #1 + adds r4, #1 +_08008C9C: + ldrb r0, [r5] + strb r0, [r4] + adds r5, #1 + adds r4, #1 + b _08008BD2 +_08008CA6: + strb r2, [r4] + adds r4, #1 + b _08008BD2 +_08008CAC: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08008BCC + + thumb_func_start sub_08008CB8 +sub_08008CB8: @ 0x08008CB8 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _08008CF0 + mov r0, sp + movs r2, #4 + bl memcpy + add r4, sp, #4 + ldr r1, _08008CF4 + adds r0, r4, #0 + movs r2, #5 + bl memcpy + adds r0, r5, #0 + mov r1, sp +_08008CDA: + bl sub_080088B8 + adds r5, r0, #0 +_08008CE0: + ldrb r0, [r6] + adds r6, #1 + cmp r0, #0xfe + beq _08008CF8 + cmp r0, #0xff + bne _08008CFE + b _08008D0A + .align 2, 0 +_08008CF0: .4byte gUnknown_82BF474 +_08008CF4: .4byte gUnknown_82BF478 +_08008CF8: + adds r0, r5, #0 + adds r1, r4, #0 + b _08008CDA +_08008CFE: + strb r0, [r5] + adds r5, #1 + adds r0, #0x40 + strb r0, [r5] + adds r5, #1 + b _08008CE0 +_08008D0A: + strb r0, [r5] + adds r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008CB8 + + thumb_func_start sub_08008D18 +sub_08008D18: @ 0x08008D18 + ldr r0, _08008D1C + bx lr + .align 2, 0 +_08008D1C: .4byte gUnknown_2022064 + thumb_func_end sub_08008D18 + + thumb_func_start sub_08008D20 +sub_08008D20: @ 0x08008D20 + ldr r0, _08008D28 + ldr r0, [r0] + bx lr + .align 2, 0 +_08008D28: .4byte gUnknown_3005AF0 + thumb_func_end sub_08008D20 + + thumb_func_start sub_08008D2C +sub_08008D2C: @ 0x08008D2C + ldr r0, _08008D30 + bx lr + .align 2, 0 +_08008D30: .4byte gUnknown_2021C40 + thumb_func_end sub_08008D2C + + thumb_func_start sub_08008D34 +sub_08008D34: @ 0x08008D34 + ldr r0, _08008D38 + bx lr + .align 2, 0 +_08008D38: .4byte gUnknown_2021C54 + thumb_func_end sub_08008D34 + + thumb_func_start sub_08008D3C +sub_08008D3C: @ 0x08008D3C + ldr r0, _08008D40 + bx lr + .align 2, 0 +_08008D40: .4byte gUnknown_2021C68 + thumb_func_end sub_08008D3C + + thumb_func_start sub_08008D44 +sub_08008D44: @ 0x08008D44 + push {lr} + ldr r0, _08008D54 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _08008D5C + ldr r0, _08008D58 + b _08008D5E + .align 2, 0 +_08008D54: .4byte gUnknown_3005AF0 +_08008D58: .4byte gUnknown_85C8C28 +_08008D5C: + ldr r0, _08008D64 +_08008D5E: + pop {r1} + bx r1 + .align 2, 0 +_08008D64: .4byte gUnknown_85C8C25 + thumb_func_end sub_08008D44 + + thumb_func_start sub_08008D68 +sub_08008D68: @ 0x08008D68 + push {lr} + ldr r0, _08008D78 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _08008D80 + ldr r0, _08008D7C + b _08008D82 + .align 2, 0 +_08008D78: .4byte gUnknown_3005AF0 +_08008D7C: .4byte gUnknown_85C8C5A +_08008D80: + ldr r0, _08008D88 +_08008D82: + pop {r1} + bx r1 + .align 2, 0 +_08008D88: .4byte gUnknown_85C8C5E + thumb_func_end sub_08008D68 + + thumb_func_start sub_08008D8C +sub_08008D8C: @ 0x08008D8C + ldr r0, _08008D90 + bx lr + .align 2, 0 +_08008D90: .4byte gUnknown_85C8C36 + thumb_func_end sub_08008D8C + + thumb_func_start sub_08008D94 +sub_08008D94: @ 0x08008D94 + ldr r0, _08008D98 + bx lr + .align 2, 0 +_08008D98: .4byte gUnknown_85C8C3C + thumb_func_end sub_08008D94 + + thumb_func_start sub_08008D9C +sub_08008D9C: @ 0x08008D9C + ldr r0, _08008DA0 + bx lr + .align 2, 0 +_08008DA0: .4byte gUnknown_85C8C40 + thumb_func_end sub_08008D9C + + thumb_func_start sub_08008DA4 +sub_08008DA4: @ 0x08008DA4 + ldr r0, _08008DA8 + bx lr + .align 2, 0 +_08008DA8: .4byte gUnknown_85C8C44 + thumb_func_end sub_08008DA4 + + thumb_func_start sub_08008DAC +sub_08008DAC: @ 0x08008DAC + ldr r0, _08008DB0 + bx lr + .align 2, 0 +_08008DB0: .4byte gUnknown_85C8C49 + thumb_func_end sub_08008DAC + + thumb_func_start sub_08008DB4 +sub_08008DB4: @ 0x08008DB4 + ldr r0, _08008DB8 + bx lr + .align 2, 0 +_08008DB8: .4byte gUnknown_85C8C4E + thumb_func_end sub_08008DB4 + + thumb_func_start sub_08008DBC +sub_08008DBC: @ 0x08008DBC + ldr r0, _08008DC0 + bx lr + .align 2, 0 +_08008DC0: .4byte gUnknown_85C8C54 + thumb_func_end sub_08008DBC + + thumb_func_start sub_08008DC4 +sub_08008DC4: @ 0x08008DC4 + push {lr} + cmp r0, #0xd + bhi _08008DDC + ldr r1, _08008DD8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _08008DDE + .align 2, 0 +_08008DD8: .4byte gUnknown_82BF480 +_08008DDC: + ldr r0, _08008DE4 +_08008DDE: + pop {r1} + bx r1 + .align 2, 0 +_08008DE4: .4byte gUnknown_85C8C24 + thumb_func_end sub_08008DC4 + + thumb_func_start sub_08008DE8 +sub_08008DE8: @ 0x08008DE8 + push {lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #0 + cmp r0, r2 + bhs _08008E08 +_08008DFA: + strb r1, [r3] + adds r3, #1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r2 + blo _08008DFA +_08008E08: + movs r0, #0xff + strb r0, [r3] + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008DE8 + + thumb_func_start sub_08008E14 +sub_08008E14: @ 0x08008E14 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + b _08008E34 +_08008E24: + strb r1, [r4] + adds r5, #1 + adds r4, #1 + cmp r3, #0 + beq _08008E34 + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_08008E34: + ldrb r1, [r5] + adds r0, r1, #0 + cmp r0, #0xff + bne _08008E24 + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _08008E64 + cmp r3, r0 + beq _08008E58 + adds r1, r0, #0 +_08008E4A: + strb r2, [r4] + adds r4, #1 + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + bne _08008E4A +_08008E58: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08008E64: .4byte 0x0000FFFF + thumb_func_end sub_08008E14 + + thumb_func_start sub_08008E68 +sub_08008E68: @ 0x08008E68 + push {lr} + lsls r2, r1, #0x10 + lsrs r2, r2, #0x10 + movs r1, #0xff + bl sub_08008DE8 + pop {r1} + bx r1 + thumb_func_end sub_08008E68 + + thumb_func_start sub_08008E78 +sub_08008E78: @ 0x08008E78 + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + subs r2, #1 + movs r5, #1 + rsbs r5, r5, #0 + b _08008E9E +_08008E86: + strb r0, [r4] + adds r3, #1 + adds r4, #1 + subs r0, r3, #1 + ldrb r0, [r0] + cmp r0, #0xf9 + bne _08008E9C + ldrb r0, [r3] + strb r0, [r4] + adds r3, #1 + adds r4, #1 +_08008E9C: + subs r2, #1 +_08008E9E: + cmp r2, r5 + beq _08008EAA + ldrb r0, [r3] + adds r1, r0, #0 + cmp r1, #0xff + bne _08008E86 +_08008EAA: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008E78 + + thumb_func_start sub_08008EB8 +sub_08008EB8: @ 0x08008EB8 + push {lr} + adds r2, r0, #0 + movs r3, #0 + b _08008ECA +_08008EC0: + cmp r1, #0xf9 + bne _08008EC6 + adds r2, #1 +_08008EC6: + adds r2, #1 + adds r3, #1 +_08008ECA: + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #0xff + bne _08008EC0 + adds r0, r3, #0 + pop {r1} + bx r1 + thumb_func_end sub_08008EB8 + + thumb_func_start sub_08008ED8 +sub_08008ED8: @ 0x08008ED8 + push {lr} + adds r3, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0xfc + strb r0, [r3] + adds r3, #1 + cmp r1, #1 + beq _08008EFA + cmp r1, #1 + blo _08008EF4 + cmp r1, #2 + beq _08008F00 + b _08008F04 +_08008EF4: + movs r0, #1 + strb r0, [r3] + b _08008F02 +_08008EFA: + movs r0, #3 + strb r0, [r3] + b _08008F02 +_08008F00: + strb r1, [r3] +_08008F02: + adds r3, #1 +_08008F04: + strb r2, [r3] + adds r3, #1 + movs r0, #0xff + strb r0, [r3] + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008ED8 + + thumb_func_start sub_08008F14 +sub_08008F14: @ 0x08008F14 + push {lr} + adds r2, r0, #0 + b _08008F2A +_08008F1A: + adds r0, r1, #0 + cmp r0, #0xa0 + bhi _08008F28 + cmp r0, #0 + beq _08008F28 + movs r0, #1 + b _08008F34 +_08008F28: + adds r2, #1 +_08008F2A: + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #0xff + bne _08008F1A + movs r0, #0 +_08008F34: + pop {r1} + bx r1 + thumb_func_end sub_08008F14 + + thumb_func_start sub_08008F38 +sub_08008F38: @ 0x08008F38 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + movs r1, #0 + b _08008F54 +_08008F42: + adds r0, r2, #0 + cmp r0, #0xa0 + bhi _08008F50 + cmp r0, #0 + beq _08008F50 + movs r0, #1 + b _08008F62 +_08008F50: + adds r3, #1 + adds r1, #1 +_08008F54: + ldrb r2, [r3] + adds r0, r2, #0 + cmp r0, #0xff + beq _08008F60 + cmp r1, r4 + blt _08008F42 +_08008F60: + movs r0, #0 +_08008F62: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08008F38 + + thumb_func_start sub_08008F68 +sub_08008F68: @ 0x08008F68 + push {lr} + bl sub_0800AF5C + bl sub_0800E1C4 + bl sub_0800B97C + ldr r1, _08008F8C + cmp r0, r1 + beq _08008F90 + bl sub_0800AF78 + bl sub_08009384 + bl sub_08000714 + movs r0, #0 + b _08008F9A + .align 2, 0 +_08008F8C: .4byte 0x00008001 +_08008F90: + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + movs r0, #1 +_08008F9A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08008F68 + + thumb_func_start sub_08008FA0 +sub_08008FA0: @ 0x08008FA0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08008FA0 + + thumb_func_start sub_08008FB0 +sub_08008FB0: @ 0x08008FB0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r4, [sp, #0x18] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0800900C + lsls r1, r5, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r3, _08009010 + ldr r0, _08009014 + str r0, [r3] + lsls r2, r7, #0xe + lsls r0, r4, #5 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + adds r2, r2, r0 + str r2, [r3, #4] + ldr r0, _08009018 + str r0, [r3, #8] + ldr r0, [r3, #8] + ldr r0, _0800901C + str r6, [r0] + str r5, [r0, #4] + str r4, [r0, #8] + mov r0, r8 + cmp r0, #2 + beq _0800903A + cmp r0, #2 + bgt _08009020 + cmp r0, #1 + beq _08009028 + b _0800905C + .align 2, 0 +_0800900C: .4byte gUnknown_82BFB6C +_08009010: .4byte 0x040000D4 +_08009014: .4byte gUnknown_82BFB8C +_08009018: .4byte 0x80000110 +_0800901C: .4byte gUnknown_30031D0 +_08009020: + mov r0, r8 + cmp r0, #3 + beq _0800904C + b _0800905C +_08009028: + lsls r1, r6, #8 + movs r0, #1 + orrs r1, r0 + lsls r0, r7, #2 + orrs r1, r0 + movs r0, #0xa + bl sub_08001144 + b _0800905C +_0800903A: + lsls r1, r6, #8 + movs r0, #1 + orrs r1, r0 + lsls r0, r7, #2 + orrs r1, r0 + movs r0, #0xc + bl sub_08001144 + b _0800905C +_0800904C: + lsls r1, r6, #8 + movs r0, #1 + orrs r1, r0 + lsls r0, r7, #2 + orrs r1, r0 + movs r0, #0xe + bl sub_08001144 +_0800905C: + mov r0, r8 + lsls r4, r0, #2 + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08001144 + adds r4, #0x12 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08001144 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08008FB0 + + thumb_func_start sub_08009088 +sub_08009088: @ 0x08009088 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r6, r1, #0 + adds r4, r2, #0 + adds r5, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080090F4 + mov r2, r8 + lsls r1, r2, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r2, _080090F8 + ldr r0, _080090FC + str r0, [r2] + lsls r0, r5, #0xe + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + str r0, [r2, #4] + ldr r0, _08009100 + str r0, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _08009104 + str r4, [r0] + mov r1, r8 + str r1, [r0, #4] + movs r1, #0 + str r1, [r0, #8] + ldr r0, _08009108 + adds r6, r6, r0 + ldrb r0, [r6] + lsls r4, r4, #8 + lsls r5, r5, #2 + orrs r4, r5 + adds r1, r4, #0 + bl sub_08001144 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080090F4: .4byte gUnknown_82BFB6C +_080090F8: .4byte 0x040000D4 +_080090FC: .4byte gUnknown_82BFB8C +_08009100: .4byte 0x80000110 +_08009104: .4byte gUnknown_30031D0 +_08009108: .4byte gUnknown_82BFF20 + thumb_func_end sub_08009088 + + thumb_func_start sub_0800910C +sub_0800910C: @ 0x0800910C + push {r4, lr} + sub sp, #4 + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + ldr r0, _080091A0 + bl sub_080006F0 + bl sub_08009EA4 + ldr r1, _080091A4 + ldr r2, _080091A8 + adds r0, r2, #0 + strh r0, [r1] + bl sub_080092D0 + ldr r0, _080091AC + ldrh r0, [r0, #0x24] + bl sub_0806F07C + movs r4, #0 +_0800913C: + bl sub_0806F050 + ldr r1, _080091B0 + ldr r1, [r1] + adds r1, #0xa + adds r1, r1, r4 + strb r0, [r1] + adds r4, #1 + cmp r4, #3 + ble _0800913C + movs r4, #0 + str r4, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #4 + movs r3, #0 + bl sub_08008FB0 + movs r1, #0xaa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _080091B4 + movs r1, #0 + bl sub_080A8878 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + ldr r0, _080091B8 + str r4, [r0] + bl sub_080091D4 + ldr r0, _080091BC + movs r1, #0 + bl sub_080A8878 + ldr r0, _080091C0 + bl sub_08000540 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080091A0: .4byte sub_08009258 +_080091A4: .4byte gUnknown_202267E +_080091A8: .4byte 0x00001111 +_080091AC: .4byte gUnknown_3002360 +_080091B0: .4byte gUnknown_3005AF0 +_080091B4: .4byte sub_08008FA0 +_080091B8: .4byte gUnknown_3000D60 +_080091BC: .4byte sub_0800A414 +_080091C0: .4byte sub_08009558 + thumb_func_end sub_0800910C + + thumb_func_start sub_080091C4 +sub_080091C4: @ 0x080091C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080091D0 + strh r0, [r1, #0x18] + bx lr + .align 2, 0 +_080091D0: .4byte gUnknown_2022684 + thumb_func_end sub_080091C4 + + thumb_func_start sub_080091D4 +sub_080091D4: @ 0x080091D4 + push {r4, r5, lr} + ldr r5, _08009240 + ldr r4, _08009244 + ldr r1, [r4] + ldrb r2, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r2, r0 + str r2, [r5, #4] + adds r0, r5, #0 + adds r0, #8 + bl sub_080088B8 + ldr r0, [r4] + ldrb r0, [r0, #8] + strb r0, [r5, #0x13] + ldr r0, _08009248 + ldrh r0, [r0] + str r0, [r5, #0x14] + ldr r0, _0800924C + ldrb r0, [r0] + strh r0, [r5, #0x1a] + ldr r0, _08009250 + ldrb r0, [r0] + movs r2, #0x80 + lsls r2, r2, #7 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r5] + movs r0, #0x80 + lsls r0, r0, #8 + strh r0, [r5, #2] + bl sub_0809CD04 + strb r0, [r5, #0x10] + ldr r0, _08009254 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800923A + ldrb r0, [r5, #0x10] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5, #0x10] +_0800923A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08009240: .4byte gUnknown_2022684 +_08009244: .4byte gUnknown_3005AF0 +_08009248: .4byte gUnknown_202267E +_0800924C: .4byte gUnknown_829BDA5 +_08009250: .4byte gUnknown_829BDA4 +_08009254: .4byte 0x0000087F + thumb_func_end sub_080091D4 + + thumb_func_start sub_08009258 +sub_08009258: @ 0x08009258 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08009258 + + thumb_func_start sub_0800926C +sub_0800926C: @ 0x0800926C + push {lr} + ldr r3, _0800928C + ldr r1, _08009290 + ldr r2, _08009294 + adds r0, r1, #0 + adds r0, #0xe +_08009278: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _08009278 + movs r0, #1 + strb r0, [r3] + bl sub_0800B050 + pop {r0} + bx r0 + .align 2, 0 +_0800928C: .4byte gUnknown_202267C +_08009290: .4byte gUnknown_30031B0 +_08009294: .4byte 0x0000EFFF + thumb_func_end sub_0800926C + + thumb_func_start sub_08009298 +sub_08009298: @ 0x08009298 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080092C8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _080092C2 + ldr r1, _080092CC + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_080A8964 +_080092C2: + pop {r0} + bx r0 + .align 2, 0 +_080092C8: .4byte gUnknown_3005B60 +_080092CC: .4byte gUnknown_30031E4 + thumb_func_end sub_08009298 + + thumb_func_start sub_080092D0 +sub_080092D0: @ 0x080092D0 + push {r4, r5, r6, lr} + ldr r0, _08009318 + ldrb r4, [r0] + cmp r4, #0 + bne _08009344 + bl sub_0800B0E4 + bl sub_0800926C + ldr r1, _0800931C + ldr r0, _08009320 + str r0, [r1] + ldr r0, _08009324 + strb r4, [r0] + ldr r0, _08009328 + strb r4, [r0] + ldr r0, _0800932C + strb r4, [r0] + bl sub_0800A178 + bl sub_08009EA4 + ldr r0, _08009330 + str r4, [r0] + ldr r0, _08009334 + strb r4, [r0] + ldr r0, _08009338 + strb r4, [r0] + ldr r0, _0800933C + strh r4, [r0] + ldr r0, _08009340 + movs r1, #2 + bl sub_080A8878 + b _08009348 + .align 2, 0 +_08009318: .4byte gUnknown_300319C +_0800931C: .4byte gUnknown_30031E0 +_08009320: .4byte sub_0800A3E8 +_08009324: .4byte gUnknown_30027E8 +_08009328: .4byte gUnknown_300310C +_0800932C: .4byte gUnknown_3003198 +_08009330: .4byte gUnknown_3000D54 +_08009334: .4byte gUnknown_3003188 +_08009338: .4byte gUnknown_3003184 +_0800933C: .4byte gUnknown_3003194 +_08009340: .4byte sub_08009298 +_08009344: + bl sub_0800E1C4 +_08009348: + ldr r1, _08009374 + movs r0, #0 + strb r0, [r1] + movs r1, #0 + ldr r6, _08009378 + movs r2, #0 + movs r5, #1 + ldr r4, _0800937C + ldr r3, _08009380 +_0800935A: + adds r0, r1, r6 + strb r5, [r0] + adds r0, r1, r4 + strb r2, [r0] + adds r0, r1, r3 + strb r2, [r0] + adds r1, #1 + cmp r1, #3 + ble _0800935A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08009374: .4byte gUnknown_30031C4 +_08009378: .4byte gUnknown_3003118 +_0800937C: .4byte gUnknown_3003190 +_08009380: .4byte gUnknown_300318C + thumb_func_end sub_080092D0 + + thumb_func_start sub_08009384 +sub_08009384: @ 0x08009384 + push {r4, lr} + ldr r0, _080093A8 + movs r4, #0 + strb r4, [r0] + ldr r0, _080093AC + ldrb r0, [r0] + cmp r0, #0 + beq _08009398 + bl sub_0800E894 +_08009398: + ldr r0, _080093B0 + strb r4, [r0] + bl sub_0800AFF8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080093A8: .4byte gUnknown_30031C4 +_080093AC: .4byte gUnknown_300319C +_080093B0: .4byte gUnknown_202267C + thumb_func_end sub_08009384 + + thumb_func_start sub_080093B4 +sub_080093B4: @ 0x080093B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r5, _08009478 + ldr r4, _0800947C + ldrb r0, [r5] + ldrh r1, [r4] + cmp r0, r1 + beq _080093D8 + ldrh r0, [r4] + movs r1, #2 + movs r2, #3 + movs r3, #2 + bl sub_0800A2AC + ldrh r0, [r4] + strb r0, [r5] +_080093D8: + movs r5, #0 + ldr r7, _08009480 +_080093DC: + ldr r0, _08009484 + adds r6, r5, r0 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r4, r0, r7 + ldrb r0, [r6] + ldrh r1, [r4] + cmp r0, r1 + beq _08009404 + ldrh r0, [r4] + adds r2, r5, #4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #2 + movs r3, #2 + bl sub_0800A2AC + ldrh r0, [r4] + strb r0, [r6] +_08009404: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080093DC + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xf + bne _0800946A + movs r5, #0 + ldr r0, _08009480 + mov sb, r0 + ldr r1, _08009488 + mov r8, r1 +_08009424: + adds r0, r7, #0 + asrs r0, r5 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08009460 + lsls r0, r5, #8 + ldr r1, _0800948C + adds r0, r0, r1 + lsls r4, r5, #1 + adds r1, r4, r5 + lsls r1, r1, #2 + add r1, sb + ldrh r1, [r1, #2] + bl sub_0800A20C + ldr r1, _08009490 + adds r4, r4, r1 + movs r6, #0 + strh r0, [r4] + adds r0, r5, #0 + bl sub_0800A1B0 + ldrh r0, [r4] + cmp r0, r8 + beq _08009460 + ldr r0, _08009494 + strb r6, [r0] + ldr r0, _08009498 + strb r6, [r0] +_08009460: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08009424 +_0800946A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08009478: .4byte gUnknown_3000D64 +_0800947C: .4byte gUnknown_3000D10 +_08009480: .4byte gUnknown_3000D20 +_08009484: .4byte gUnknown_3000D68 +_08009488: .4byte 0x00000342 +_0800948C: .4byte gUnknown_202207C +_08009490: .4byte gUnknown_30031E8 +_08009494: .4byte gUnknown_2022074 +_08009498: .4byte gUnknown_2022075 + thumb_func_end sub_080093B4 + + thumb_func_start sub_0800949C +sub_0800949C: @ 0x0800949C + push {r4, r5, lr} + sub sp, #4 + ldr r4, _0800953C + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080094B2 + ldr r1, _08009540 + movs r0, #1 + strb r0, [r1] +_080094B2: + ldrh r1, [r4, #0x2c] + movs r5, #2 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080094C6 + ldr r0, _08009544 + ldr r1, _08009548 + bl sub_08009EB8 +_080094C6: + ldrh r1, [r4, #0x2e] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080094E2 + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_080094E2: + ldrh r1, [r4, #0x2e] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080094F2 + movs r0, #1 + bl sub_0800AE0C +_080094F2: + ldrh r1, [r4, #0x2e] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08009504 + movs r0, #1 + bl sub_08153274 +_08009504: + ldrh r1, [r4, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08009512 + bl sub_0800A7F8 +_08009512: + ldr r0, _0800954C + ldrb r0, [r0] + cmp r0, #0 + beq _08009532 + ldr r2, [r4, #0x24] + ldr r0, _08009550 + ldrb r1, [r0] + ldr r0, _08009554 + ldr r0, [r0] + cmp r0, #0 + bne _0800952C + movs r0, #0x10 + orrs r1, r0 +_0800952C: + adds r0, r2, #0 + bl sub_0800A558 +_08009532: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800953C: .4byte gUnknown_3002360 +_08009540: .4byte gUnknown_30031E4 +_08009544: .4byte gUnknown_2004000 +_08009548: .4byte 0x00002004 +_0800954C: .4byte gUnknown_2022074 +_08009550: .4byte gUnknown_30027E8 +_08009554: .4byte gUnknown_30031E0 + thumb_func_end sub_0800949C + + thumb_func_start sub_08009558 +sub_08009558: @ 0x08009558 + push {lr} + bl sub_0800949C + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_080093B4 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + thumb_func_end sub_08009558 + + thumb_func_start sub_0800957C +sub_0800957C: @ 0x0800957C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0800958C + ldrb r0, [r0] + cmp r0, #0 + bne _08009590 + movs r0, #0 + b _080095D8 + .align 2, 0 +_0800958C: .4byte gUnknown_202267C +_08009590: + movs r1, #0 + ldr r5, _080095E0 + ldr r3, _080095E4 + movs r2, #0 +_08009598: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _08009598 + ldrh r0, [r4] + strh r0, [r5] + ldr r0, _080095E8 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080095D4 + ldr r0, _080095EC + ldr r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + bl sub_0800963C + ldr r0, _080095F0 + ldr r0, [r0] + cmp r0, #0 + beq _080095D0 + bl _call_via_r0 +_080095D0: + bl sub_0800A990 +_080095D4: + ldr r0, _080095E8 + ldrh r0, [r0] +_080095D8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080095E0: .4byte gUnknown_3003124 +_080095E4: .4byte gUnknown_30031B0 +_080095E8: .4byte gUnknown_3003180 +_080095EC: .4byte 0x04000128 +_080095F0: .4byte gUnknown_30031E0 + thumb_func_end sub_0800957C + + thumb_func_start sub_080095F4 +sub_080095F4: @ 0x080095F4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + ldr r1, _08009608 + adds r0, r0, r1 + strb r5, [r0] + movs r4, #0 + adds r6, r1, #0 + b _08009614 + .align 2, 0 +_08009608: .4byte gUnknown_3003118 +_0800960C: + adds r0, r4, r6 + ldrb r0, [r0] + adds r5, r5, r0 + adds r4, #1 +_08009614: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _0800960C + cmp r5, #0 + bne _08009630 + ldr r1, _08009638 + ldrb r0, [r1] + cmp r0, #0 + bne _08009630 + movs r0, #1 + strb r0, [r1] +_08009630: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08009638: .4byte gUnknown_30031C4 + thumb_func_end sub_080095F4 + + thumb_func_start sub_0800963C +sub_0800963C: @ 0x0800963C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r6, #0 +_0800964A: + ldr r0, _08009694 + lsls r1, r6, #1 + adds r3, r1, r0 + movs r0, #0 + strh r0, [r3] + lsls r4, r6, #4 + ldr r5, _08009698 + adds r2, r4, r5 + ldrh r0, [r2] + mov ip, r1 + adds r7, r6, #1 + str r7, [sp] + cmp r0, #0 + bne _08009668 + b _08009906 +_08009668: + ldrh r1, [r2] + ldr r0, _0800969C + cmp r1, r0 + bne _08009672 + b _080098B8 +_08009672: + cmp r1, r0 + bgt _080096C0 + ldr r0, _080096A0 + cmp r1, r0 + bne _0800967E + b _080098FC +_0800967E: + cmp r1, r0 + bgt _080096AC + ldr r0, _080096A4 + cmp r1, r0 + beq _08009704 + ldr r0, _080096A8 + cmp r1, r0 + bne _08009690 + b _080098C0 +_08009690: + b _08009906 + .align 2, 0 +_08009694: .4byte gUnknown_30030C0 +_08009698: .4byte gUnknown_3003130 +_0800969C: .4byte 0x00005FFF +_080096A0: .4byte 0x00004444 +_080096A4: .4byte 0x00002222 +_080096A8: .4byte 0x00002FFE +_080096AC: + ldr r0, _080096BC + cmp r1, r0 + beq _08009754 + adds r0, #0x11 + cmp r1, r0 + beq _08009754 + b _08009906 + .align 2, 0 +_080096BC: .4byte 0x00005555 +_080096C0: + ldr r0, _080096DC + cmp r1, r0 + beq _08009760 + cmp r1, r0 + bgt _080096E8 + ldr r0, _080096E0 + cmp r1, r0 + beq _0800978C + ldr r0, _080096E4 + cmp r1, r0 + bne _080096D8 + b _080098D0 +_080096D8: + b _08009906 + .align 2, 0 +_080096DC: .4byte 0x0000BBBB +_080096E0: .4byte 0x00008888 +_080096E4: .4byte 0x0000AAAA +_080096E8: + ldr r0, _080096FC + cmp r1, r0 + bne _080096F0 + b _080098FC +_080096F0: + ldr r0, _08009700 + cmp r1, r0 + bne _080096F8 + b _080098D6 +_080096F8: + b _08009906 + .align 2, 0 +_080096FC: .4byte 0x0000CAFE +_08009700: .4byte 0x0000CCCC +_08009704: + bl sub_080091D4 + ldr r1, _08009748 + adds r1, #0x10 + ldr r0, _0800974C + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r5, r7} + stm r1!, {r2, r5, r7} + ldr r0, [r0] + str r0, [r1] + ldr r3, _08009750 + ldr r1, _08009748 + adds r0, r3, #0 + ldm r0!, {r4, r5, r7} + stm r1!, {r4, r5, r7} + ldrh r2, [r0] + strh r2, [r1] + ldrb r0, [r0, #2] + strb r0, [r1, #2] + ldr r0, _08009748 + adds r0, #0x2c + ldm r3!, {r1, r2, r4} + stm r0!, {r1, r2, r4} + ldrh r1, [r3] + strh r1, [r0] + ldrb r1, [r3, #2] + strb r1, [r0, #2] + ldr r0, _08009748 + movs r1, #0x3c + bl sub_08009EB8 + b _08009906 + .align 2, 0 +_08009748: .4byte gUnknown_30030D0 +_0800974C: .4byte gUnknown_2022684 +_08009750: .4byte gUnknown_82BFF24 +_08009754: + ldr r1, _0800975C + movs r0, #1 + strb r0, [r1] + b _08009906 + .align 2, 0 +_0800975C: .4byte gUnknown_3003188 +_08009760: + mov r5, ip + adds r1, r5, r6 + lsls r1, r1, #2 + ldr r7, _08009784 + adds r1, r1, r7 + movs r0, #0 + strh r0, [r1] + ldr r0, _08009788 + adds r0, #2 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r1, #2] + ldr r0, _08009788 + adds r0, #4 + adds r0, r4, r0 + ldrh r0, [r0] + strb r0, [r1, #9] + b _08009906 + .align 2, 0 +_08009784: .4byte gUnknown_3000D20 +_08009788: .4byte gUnknown_3003130 +_0800978C: + mov r1, ip + adds r0, r1, r6 + lsls r0, r0, #2 + ldr r2, _080097D0 + adds r3, r0, r2 + ldrh r1, [r3, #2] + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r2, #0 + mov sl, r5 + cmp r1, r0 + bls _080097DC + ldr r7, _080097D4 + mov r8, r7 + movs r2, #0 + adds r5, r3, #0 + ldr r7, _080097D8 + adds r3, r4, #0 +_080097B0: + ldrh r1, [r5] + lsrs r1, r1, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + add r1, r8 + adds r2, #1 + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r2, #6 + bls _080097B0 + b _0800980C + .align 2, 0 +_080097D0: .4byte gUnknown_3000D20 +_080097D4: .4byte gUnknown_201C000 +_080097D8: .4byte gUnknown_3003130 +_080097DC: + movs r2, #0 + ldr r0, _0800988C + mov sb, r0 + adds r7, r3, #0 + ldr r1, _08009890 + mov r8, r1 + lsls r5, r6, #8 + adds r3, r4, #0 +_080097EC: + ldrh r1, [r7] + lsrs r1, r1, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + add r1, sb + adds r2, #1 + lsls r0, r2, #1 + adds r0, r0, r3 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r2, #6 + bls _080097EC +_0800980C: + mov r2, ip + adds r1, r2, r6 + lsls r1, r1, #2 + add r1, sl + ldrh r0, [r1] + adds r0, #0xe + movs r3, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1, #2] + cmp r0, r1 + blo _08009906 + ldr r0, _08009894 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, #1 + bne _080098AE + lsls r1, r6, #8 + ldr r0, _0800988C + adds r1, r1, r0 + mov r8, r1 + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _08009898 + 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, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08009866 + strb r3, [r2, #0x12] + strb r3, [r2, #0x11] + strb r3, [r2, #0x10] +_08009866: + ldr r5, _0800989C + mov r0, r8 + adds r1, r5, #0 + bl strcmp + cmp r0, #0 + bne _08009882 + mov r0, r8 + adds r0, #0x2c + adds r1, r5, #0 + bl strcmp + cmp r0, #0 + beq _080098A4 +_08009882: + ldr r0, _080098A0 + bl sub_08000540 + b _08009906 + .align 2, 0 +_0800988C: .4byte gUnknown_202207C +_08009890: .4byte gUnknown_3003130 +_08009894: .4byte gUnknown_3003118 +_08009898: .4byte gUnknown_20226A0 +_0800989C: .4byte gUnknown_82BFF24 +_080098A0: .4byte sub_0800AA0C +_080098A4: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_080095F4 + b _08009906 +_080098AE: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A14C + b _08009906 +_080098B8: + ldr r0, _080098BC + b _080098C2 + .align 2, 0 +_080098BC: .4byte gUnknown_3003190 +_080098C0: + ldr r0, _080098CC +_080098C2: + adds r0, r6, r0 + movs r1, #1 + strb r1, [r0] + b _08009906 + .align 2, 0 +_080098CC: .4byte gUnknown_300318C +_080098D0: + bl sub_08009FDC + b _08009906 +_080098D6: + ldr r3, _080098F4 + ldr r0, _080098F8 + adds r0, #2 + adds r0, r4, r0 + ldrh r2, [r0] + lsls r2, r2, #3 + adds r0, r2, r3 + ldr r1, [r0] + adds r3, #4 + adds r2, r2, r3 + ldrh r2, [r2] + movs r0, #0 + bl sub_0800A070 + b _08009906 + .align 2, 0 +_080098F4: .4byte gUnknown_82BFEF8 +_080098F8: .4byte gUnknown_3003130 +_080098FC: + ldr r0, _08009924 + adds r0, #2 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r3] +_08009906: + ldr r1, [sp] + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bhi _08009912 + b _0800964A +_08009912: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08009924: .4byte gUnknown_3003130 + thumb_func_end sub_0800963C + + thumb_func_start sub_08009928 +sub_08009928: @ 0x08009928 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _08009954 + cmp r2, r0 + beq _080099F8 + cmp r2, r0 + bgt _08009988 + ldr r0, _08009958 + cmp r2, r0 + beq _080099E4 + cmp r2, r0 + bgt _08009964 + ldr r0, _0800995C + cmp r2, r0 + beq _080099D0 + ldr r0, _08009960 +_0800994A: + cmp r2, r0 + bne _08009950 + b _08009A7C +_08009950: + b _08009A9E + .align 2, 0 +_08009954: .4byte 0x00006666 +_08009958: .4byte 0x00004444 +_0800995C: .4byte 0x00002222 +_08009960: .4byte 0x00002FFE +_08009964: + ldr r0, _08009974 + cmp r2, r0 + bne _0800996C + b _08009A7C +_0800996C: + cmp r2, r0 + bgt _08009978 + subs r0, #0x11 + b _0800994A + .align 2, 0 +_08009974: .4byte 0x00005566 +_08009978: + ldr r0, _08009984 + cmp r2, r0 + bne _08009980 + b _08009A68 +_08009980: + b _08009A9E + .align 2, 0 +_08009984: .4byte 0x00005FFF +_08009988: + ldr r0, _0800999C + cmp r2, r0 + beq _08009A40 + cmp r2, r0 + bgt _080099A8 + ldr r0, _080099A0 + cmp r2, r0 + beq _08009A04 + ldr r0, _080099A4 + b _0800994A + .align 2, 0 +_0800999C: .4byte 0x0000AAAB +_080099A0: .4byte 0x00007777 +_080099A4: .4byte 0x0000AAAA +_080099A8: + ldr r0, _080099BC + cmp r2, r0 + beq _08009A88 + cmp r2, r0 + bgt _080099C4 + ldr r0, _080099C0 + cmp r2, r0 + beq _08009A24 + b _08009A9E + .align 2, 0 +_080099BC: .4byte 0x0000CAFE +_080099C0: .4byte 0x0000BBBB +_080099C4: + ldr r0, _080099CC + cmp r2, r0 + beq _08009A54 + b _08009A9E + .align 2, 0 +_080099CC: .4byte 0x0000CCCC +_080099D0: + ldr r0, _080099DC + strh r2, [r0] + ldr r1, _080099E0 + ldrh r1, [r1] + b _08009A9C + .align 2, 0 +_080099DC: .4byte gUnknown_30031B0 +_080099E0: .4byte gUnknown_202267E +_080099E4: + ldr r0, _080099F0 + strh r2, [r0] + ldr r1, _080099F4 + ldrh r1, [r1, #0x2c] + b _08009A9C + .align 2, 0 +_080099F0: .4byte gUnknown_30031B0 +_080099F4: .4byte gUnknown_3002360 +_080099F8: + ldr r0, _08009A00 + movs r1, #0 + b _08009A9A + .align 2, 0 +_08009A00: .4byte gUnknown_30031B0 +_08009A04: + ldr r0, _08009A20 + strh r2, [r0] + movs r1, #0 + adds r3, r0, #0 + movs r2, #0xee +_08009A0E: + adds r1, #1 + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #4 + bls _08009A0E + b _08009A9E + .align 2, 0 +_08009A20: .4byte gUnknown_30031B0 +_08009A24: + ldr r1, _08009A38 + strh r2, [r1] + ldr r2, _08009A3C + ldrh r0, [r2, #2] + strh r0, [r1, #2] + ldrb r0, [r2, #9] + adds r0, #0x80 + strh r0, [r1, #4] + b _08009A9E + .align 2, 0 +_08009A38: .4byte gUnknown_30031B0 +_08009A3C: .4byte gUnknown_3000D10 +_08009A40: + ldr r0, _08009A4C + strh r2, [r0] + ldr r1, _08009A50 + ldrh r1, [r1] + b _08009A9C + .align 2, 0 +_08009A4C: .4byte gUnknown_30031B0 +_08009A50: .4byte gUnknown_203CB48 +_08009A54: + ldr r0, _08009A60 + strh r2, [r0] + ldr r1, _08009A64 + ldrb r1, [r1] + b _08009A9C + .align 2, 0 +_08009A60: .4byte gUnknown_30031B0 +_08009A64: .4byte gUnknown_30031F0 +_08009A68: + ldr r0, _08009A74 + strh r2, [r0] + ldr r1, _08009A78 + ldrh r1, [r1] + b _08009A9C + .align 2, 0 +_08009A74: .4byte gUnknown_30031B0 +_08009A78: .4byte gUnknown_3003194 +_08009A7C: + ldr r0, _08009A84 + strh r2, [r0] + b _08009A9E + .align 2, 0 +_08009A84: .4byte gUnknown_30031B0 +_08009A88: + ldr r0, _08009AA4 + ldrh r1, [r0] + cmp r1, #0 + beq _08009A9E + ldr r0, _08009AA8 + ldrb r0, [r0] + cmp r0, #0 + bne _08009A9E + ldr r0, _08009AAC +_08009A9A: + strh r2, [r0] +_08009A9C: + strh r1, [r0, #2] +_08009A9E: + pop {r0} + bx r0 + .align 2, 0 +_08009AA4: .4byte gUnknown_3005B08 +_08009AA8: .4byte gUnknown_3002354 +_08009AAC: .4byte gUnknown_30031B0 + thumb_func_end sub_08009928 + + thumb_func_start sub_08009AB0 +sub_08009AB0: @ 0x08009AB0 + push {lr} + ldr r0, _08009AC8 + ldrb r0, [r0] + cmp r0, #0 + beq _08009ABE + bl sub_0800F2C4 +_08009ABE: + ldr r1, _08009ACC + ldr r0, _08009AD0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08009AC8: .4byte gUnknown_300319C +_08009ACC: .4byte gUnknown_30031E0 +_08009AD0: .4byte sub_08009B08 + thumb_func_end sub_08009AB0 + + thumb_func_start sub_08009AD4 +sub_08009AD4: @ 0x08009AD4 + push {lr} + ldr r0, _08009AE4 + ldrb r0, [r0] + cmp r0, #0 + beq _08009AE8 + bl sub_0800F2A4 + b _08009B02 + .align 2, 0 +_08009AE4: .4byte gUnknown_300319C +_08009AE8: + ldr r0, _08009AF8 + ldr r1, [r0] + ldr r0, _08009AFC + cmp r1, r0 + beq _08009B00 + movs r0, #0 + b _08009B02 + .align 2, 0 +_08009AF8: .4byte gUnknown_30031E0 +_08009AFC: .4byte sub_08009B08 +_08009B00: + movs r0, #1 +_08009B02: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08009AD4 + + thumb_func_start sub_08009B08 +sub_08009B08: @ 0x08009B08 + push {lr} + ldr r0, _08009B1C + ldrb r0, [r0] + cmp r0, #1 + bne _08009B18 + ldr r0, _08009B20 + bl sub_08009928 +_08009B18: + pop {r0} + bx r0 + .align 2, 0 +_08009B1C: .4byte gUnknown_30031C4 +_08009B20: .4byte 0x0000CAFE + thumb_func_end sub_08009B08 + + thumb_func_start sub_08009B24 +sub_08009B24: @ 0x08009B24 + push {lr} + ldr r0, _08009B34 + ldrb r1, [r0] + cmp r1, #0 + beq _08009B38 + bl sub_0800F2F8 + b _08009B3C + .align 2, 0 +_08009B34: .4byte gUnknown_300319C +_08009B38: + ldr r0, _08009B40 + str r1, [r0] +_08009B3C: + pop {r0} + bx r0 + .align 2, 0 +_08009B40: .4byte gUnknown_30031E0 + thumb_func_end sub_08009B24 + + thumb_func_start sub_08009B44 +sub_08009B44: @ 0x08009B44 + push {lr} + ldr r0, _08009B54 + ldrb r1, [r0] + cmp r1, #0 + beq _08009B58 + bl sub_0800F2F8 + b _08009B5C + .align 2, 0 +_08009B54: .4byte gUnknown_300319C +_08009B58: + ldr r0, _08009B60 + str r1, [r0] +_08009B5C: + pop {r0} + bx r0 + .align 2, 0 +_08009B60: .4byte gUnknown_30031E0 + thumb_func_end sub_08009B44 + + thumb_func_start sub_08009B64 +sub_08009B64: @ 0x08009B64 + push {lr} + ldr r0, _08009B7C + ldrb r0, [r0] + cmp r0, #0 + bne _08009B84 + ldr r0, _08009B80 + ldr r0, [r0] + movs r1, #0x1c + ands r0, r1 + lsrs r0, r0, #2 + b _08009B8C + .align 2, 0 +_08009B7C: .4byte gUnknown_300319C +_08009B80: .4byte gUnknown_3003180 +_08009B84: + bl sub_0800FFF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08009B8C: + pop {r1} + bx r1 + thumb_func_end sub_08009B64 + + thumb_func_start sub_08009B90 +sub_08009B90: @ 0x08009B90 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r2, #0 + cmp r2, r4 + bge _08009BC8 + movs r7, #0xff + ldr r3, _08009BBC +_08009BA8: + ldrh r0, [r3] + adds r1, r7, #0 + ands r1, r0 + cmp r1, r6 + beq _08009BB6 + cmp r1, r5 + bne _08009BC0 +_08009BB6: + movs r0, #1 + b _08009BCC + .align 2, 0 +_08009BBC: .4byte gUnknown_20226A0 +_08009BC0: + adds r3, #0x1c + adds r2, #1 + cmp r2, r4 + blt _08009BA8 +_08009BC8: + movs r0, #1 + rsbs r0, r0, #0 +_08009BCC: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08009B90 + + thumb_func_start sub_08009BD4 +sub_08009BD4: @ 0x08009BD4 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _08009BDC + b _08009BEE + .align 2, 0 +_08009BDC: .4byte gUnknown_20226A0 +_08009BE0: + ldrh r0, [r4, #0x1a] + cmp r0, #1 + beq _08009BEA + movs r0, #1 + b _08009BFC +_08009BEA: + adds r4, #0x1c + adds r5, #1 +_08009BEE: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _08009BE0 + movs r0, #0 +_08009BFC: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08009BD4 + + thumb_func_start sub_08009C04 +sub_08009C04: @ 0x08009C04 + push {lr} + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _08009C1E + movs r0, #2 + movs r1, #1 + bl sub_08009B90 + cmp r0, #0 + bge _08009C22 +_08009C1E: + movs r0, #0 + b _08009C24 +_08009C22: + movs r0, #1 +_08009C24: + pop {r1} + bx r1 + thumb_func_end sub_08009C04 + + thumb_func_start sub_08009C28 +sub_08009C28: @ 0x08009C28 + push {lr} + movs r0, #2 + movs r1, #1 + bl sub_08009B90 + cmp r0, #0 + bge _08009C3A + movs r0, #0 + b _08009C3C +_08009C3A: + movs r0, #1 +_08009C3C: + pop {r1} + bx r1 + thumb_func_end sub_08009C28 + + thumb_func_start sub_08009C40 +sub_08009C40: @ 0x08009C40 + push {lr} + movs r0, #4 + movs r1, #5 + bl sub_08009B90 + adds r2, r0, #0 + cmp r2, #0 + blt _08009C68 + ldr r0, _08009C64 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x1a] + cmp r0, #1 + bne _08009C68 + movs r0, #1 + b _08009C6A + .align 2, 0 +_08009C64: .4byte gUnknown_20226A0 +_08009C68: + movs r0, #0 +_08009C6A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08009C40 + + thumb_func_start sub_08009C70 +sub_08009C70: @ 0x08009C70 + push {lr} + ldr r0, _08009C84 + movs r1, #0 + str r1, [r0] + ldr r0, _08009C88 + strh r1, [r0] + bl sub_080092D0 + pop {r0} + bx r0 + .align 2, 0 +_08009C84: .4byte gUnknown_3000D5C +_08009C88: .4byte gUnknown_2022680 + thumb_func_end sub_08009C70 + + thumb_func_start sub_08009C8C +sub_08009C8C: @ 0x08009C8C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r7, #0 + ldr r0, _08009CB8 + ldrb r4, [r0] + cmp r4, #1 + beq _08009C9E + b _08009DD8 +_08009C9E: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bgt _08009CAE + cmp r0, r6 + ble _08009CC0 +_08009CAE: + ldr r1, _08009CBC + movs r0, #6 + str r0, [r1] + b _08009DF2 + .align 2, 0 +_08009CB8: .4byte gUnknown_30031C4 +_08009CBC: .4byte gUnknown_3000D5C +_08009CC0: + bl sub_08009B64 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08009CD2 + ldr r0, _08009CDC + strb r4, [r0] + bl sub_08009384 +_08009CD2: + movs r6, #0 + ldr r4, _08009CE0 + movs r5, #0 + b _08009CF8 + .align 2, 0 +_08009CDC: .4byte gUnknown_300310C +_08009CE0: .4byte gUnknown_20226A0 +_08009CE4: + adds r0, r4, #0 + adds r0, #0x14 + adds r0, r5, r0 + ldr r1, [r0] + ldr r0, [r4, #0x14] + cmp r1, r0 + bne _08009CF4 + adds r7, #1 +_08009CF4: + adds r5, #0x1c + adds r6, #1 +_08009CF8: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + blt _08009CE4 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r7, r0 + bne _08009D70 + ldr r0, _08009D30 + ldr r1, [r0, #0x14] + ldr r0, _08009D34 + cmp r1, r0 + bne _08009D60 + bl sub_0807A198 + cmp r0, #1 + beq _08009D48 + cmp r0, #1 + bgt _08009D3C + cmp r0, #0 + beq _08009D60 + ldr r3, _08009D38 + b _08009DF0 + .align 2, 0 +_08009D30: .4byte gUnknown_20226A0 +_08009D34: .4byte 0x00001133 +_08009D38: .4byte gUnknown_3000D5C +_08009D3C: + cmp r0, #2 + beq _08009D54 + ldr r3, _08009D44 + b _08009DF0 + .align 2, 0 +_08009D44: .4byte gUnknown_3000D5C +_08009D48: + ldr r1, _08009D50 + movs r0, #4 + b _08009D64 + .align 2, 0 +_08009D50: .4byte gUnknown_3000D5C +_08009D54: + ldr r1, _08009D5C + movs r0, #5 + b _08009D64 + .align 2, 0 +_08009D5C: .4byte gUnknown_3000D5C +_08009D60: + ldr r1, _08009D6C + movs r0, #1 +_08009D64: + str r0, [r1] + adds r3, r1, #0 + b _08009DF0 + .align 2, 0 +_08009D6C: .4byte gUnknown_3000D5C +_08009D70: + ldr r6, _08009DC4 + movs r0, #3 + str r0, [r6] + ldr r4, _08009DC8 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, #0x14 + adds r1, r1, r4 + ldr r5, [r1] + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r1, [r1] + ldr r2, _08009DCC + cmp r5, r2 + bne _08009DAE + ldr r0, _08009DD0 + cmp r1, r0 + beq _08009DBA +_08009DAE: + ldr r0, _08009DD0 + adds r3, r6, #0 + cmp r5, r0 + bne _08009DF0 + cmp r1, r2 + bne _08009DF0 +_08009DBA: + ldr r1, _08009DD4 + movs r0, #3 + strh r0, [r1] + ldr r3, _08009DC4 + b _08009DF0 + .align 2, 0 +_08009DC4: .4byte gUnknown_3000D5C +_08009DC8: .4byte gUnknown_20226A0 +_08009DCC: .4byte 0x00002266 +_08009DD0: .4byte 0x00002277 +_08009DD4: .4byte gUnknown_2037282 +_08009DD8: + ldr r0, _08009DF8 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + movs r0, #0x96 + lsls r0, r0, #0x12 + ldr r3, _08009DFC + cmp r1, r0 + bls _08009DF0 + movs r0, #2 + str r0, [r3] +_08009DF0: + ldrb r0, [r3] +_08009DF2: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08009DF8: .4byte gUnknown_2022680 +_08009DFC: .4byte gUnknown_3000D5C + thumb_func_end sub_08009C8C + + thumb_func_start sub_08009E00 +sub_08009E00: @ 0x08009E00 + push {r4, r5, r6, lr} + movs r6, #0 + movs r4, #0 + ldr r5, _08009E0C + b _08009E30 + .align 2, 0 +_08009E0C: .4byte gUnknown_20226A0 +_08009E10: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x14 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r5, #0x14] + cmp r1, r0 + bne _08009E2A + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08009E2A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08009E30: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _08009E10 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _08009E54 + movs r2, #1 + ldr r0, _08009E50 + str r2, [r0] + b _08009E5C + .align 2, 0 +_08009E50: .4byte gUnknown_3000D5C +_08009E54: + movs r2, #0 + ldr r1, _08009E64 + movs r0, #3 + str r0, [r1] +_08009E5C: + adds r0, r2, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08009E64: .4byte gUnknown_3000D5C + thumb_func_end sub_08009E00 + + thumb_func_start sub_08009E68 +sub_08009E68: @ 0x08009E68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08009E7C + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, #4 + adds r1, r1, r2 + ldr r0, [r1] + bx lr + .align 2, 0 +_08009E7C: .4byte gUnknown_20226A0 + thumb_func_end sub_08009E68 + + thumb_func_start sub_08009E80 +sub_08009E80: @ 0x08009E80 + push {r4, r5, lr} + ldr r5, _08009EA0 + movs r4, #4 +_08009E86: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x1c + bl memset + adds r5, #0x1c + subs r4, #1 + cmp r4, #0 + bge _08009E86 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08009EA0: .4byte gUnknown_20226A0 + thumb_func_end sub_08009E80 + + thumb_func_start sub_08009EA4 +sub_08009EA4: @ 0x08009EA4 + ldr r1, _08009EB4 + movs r0, #0 + strb r0, [r1, #8] + strh r0, [r1] + strh r0, [r1, #2] + str r0, [r1, #4] + bx lr + .align 2, 0 +_08009EB4: .4byte gUnknown_3000D10 + thumb_func_end sub_08009EA4 + + thumb_func_start sub_08009EB8 +sub_08009EB8: @ 0x08009EB8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + ldr r4, _08009ECC + ldrb r5, [r4, #8] + cmp r5, #0 + beq _08009ED0 + movs r0, #0 + b _08009F0E + .align 2, 0 +_08009ECC: .4byte gUnknown_3000D10 +_08009ED0: + bl sub_0800A02C + strb r0, [r4, #9] + movs r0, #1 + strb r0, [r4, #8] + strh r6, [r4, #2] + strh r5, [r4] + adds r0, #0xff + cmp r6, r0 + bls _08009EE8 + str r7, [r4, #4] + b _08009EFA +_08009EE8: + ldr r5, _08009F14 + cmp r7, r5 + beq _08009EF8 + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl memcpy +_08009EF8: + str r5, [r4, #4] +_08009EFA: + ldr r0, _08009F18 + bl sub_08009928 + ldr r1, _08009F1C + ldr r0, _08009F20 + str r0, [r1] + ldr r1, _08009F24 + movs r0, #0 + str r0, [r1] + movs r0, #1 +_08009F0E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08009F14: .4byte gUnknown_202257C +_08009F18: .4byte 0x0000BBBB +_08009F1C: .4byte gUnknown_30031E0 +_08009F20: .4byte sub_08009F28 +_08009F24: .4byte gUnknown_3000D50 + thumb_func_end sub_08009EB8 + + thumb_func_start sub_08009F28 +sub_08009F28: @ 0x08009F28 + push {lr} + ldr r1, _08009F40 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #2 + bls _08009F3C + ldr r1, _08009F44 + ldr r0, _08009F48 + str r0, [r1] +_08009F3C: + pop {r0} + bx r0 + .align 2, 0 +_08009F40: .4byte gUnknown_3000D50 +_08009F44: .4byte gUnknown_30031E0 +_08009F48: .4byte sub_08009F4C + thumb_func_end sub_08009F28 + + thumb_func_start sub_08009F4C +sub_08009F4C: @ 0x08009F4C + push {r4, r5, r6, lr} + ldr r0, _08009F9C + ldr r5, [r0, #4] + ldr r2, _08009FA0 + ldr r1, _08009FA4 + strh r1, [r2] + movs r3, #0 + adds r4, r0, #0 + adds r6, r4, #0 + adds r2, #2 +_08009F60: + lsls r0, r3, #1 + ldrh r1, [r6] + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r1, [r0, #1] + lsls r1, r1, #8 + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r2] + adds r2, #2 + adds r3, #1 + cmp r3, #6 + ble _08009F60 + ldrh r0, [r4] + adds r0, #0xe + strh r0, [r4] + ldrh r1, [r4, #2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _08009F94 + movs r0, #0 + strb r0, [r4, #8] + ldr r1, _08009FA8 + ldr r0, _08009FAC + str r0, [r1] +_08009F94: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08009F9C: .4byte gUnknown_3000D10 +_08009FA0: .4byte gUnknown_30031B0 +_08009FA4: .4byte 0x00008888 +_08009FA8: .4byte gUnknown_30031E0 +_08009FAC: .4byte sub_08009FB0 + thumb_func_end sub_08009F4C + + thumb_func_start sub_08009FB0 +sub_08009FB0: @ 0x08009FB0 + ldr r1, _08009FB8 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_08009FB8: .4byte gUnknown_30031E0 + thumb_func_end sub_08009FB0 + + thumb_func_start sub_08009FBC +sub_08009FBC: @ 0x08009FBC + push {lr} + bl sub_0800A02C + ldr r0, _08009FD4 + bl sub_08009928 + ldr r1, _08009FD8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08009FD4: .4byte 0x00004444 +_08009FD8: .4byte gUnknown_2022078 + thumb_func_end sub_08009FBC + + thumb_func_start sub_08009FDC +sub_08009FDC: @ 0x08009FDC + push {lr} + ldr r1, _08009FF4 + movs r0, #0 + str r0, [r1] + ldr r0, _08009FF8 + ldrb r0, [r0] + cmp r0, #0 + beq _08009FFC + bl sub_0800F334 + b _0800A002 + .align 2, 0 +_08009FF4: .4byte gUnknown_2022078 +_08009FF8: .4byte gUnknown_300319C +_08009FFC: + ldr r1, _0800A008 + ldr r0, _0800A00C + str r0, [r1] +_0800A002: + pop {r0} + bx r0 + .align 2, 0 +_0800A008: .4byte gUnknown_30031E0 +_0800A00C: .4byte sub_08009FBC + thumb_func_end sub_08009FDC + + thumb_func_start sub_0800A010 +sub_0800A010: @ 0x0800A010 + ldr r0, _0800A018 + ldr r0, [r0] + bx lr + .align 2, 0 +_0800A018: .4byte gUnknown_2022078 + thumb_func_end sub_0800A010 + + thumb_func_start sub_0800A01C +sub_0800A01C: @ 0x0800A01C + push {lr} + ldr r0, _0800A028 + bl sub_08009928 + pop {r0} + bx r0 + .align 2, 0 +_0800A028: .4byte 0x0000AAAA + thumb_func_end sub_0800A01C + + thumb_func_start sub_0800A02C +sub_0800A02C: @ 0x0800A02C + push {lr} + ldr r0, _0800A040 + ldrb r0, [r0] + cmp r0, #1 + beq _0800A048 + ldr r0, _0800A044 + ldr r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + b _0800A050 + .align 2, 0 +_0800A040: .4byte gUnknown_300319C +_0800A044: .4byte 0x04000128 +_0800A048: + bl sub_0800FFD0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0800A050: + pop {r1} + bx r1 + thumb_func_end sub_0800A02C + + thumb_func_start sub_0800A054 +sub_0800A054: @ 0x0800A054 + push {lr} + bl sub_0800A02C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + lsls r0, r1 + movs r1, #0xf + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0800A054 + + thumb_func_start sub_0800A070 +sub_0800A070: @ 0x0800A070 + push {lr} + adds r3, r1, #0 + lsls r2, r2, #0x10 + lsrs r1, r2, #0x10 + ldr r0, _0800A088 + ldrb r0, [r0] + cmp r0, #1 + beq _0800A08C + adds r0, r3, #0 + bl sub_08009EB8 + b _0800A092 + .align 2, 0 +_0800A088: .4byte gUnknown_300319C +_0800A08C: + adds r0, r3, #0 + bl sub_0800F968 +_0800A092: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800A070 + + thumb_func_start sub_0800A09C +sub_0800A09C: @ 0x0800A09C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + ldr r0, _0800A0B8 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A0BC + adds r0, r1, #0 + bl sub_0800FC00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0800A0D8 + .align 2, 0 +_0800A0B8: .4byte gUnknown_300319C +_0800A0BC: + ldr r0, _0800A0C8 + ldr r0, [r0] + cmp r0, #0 + beq _0800A0CC + movs r0, #0 + b _0800A0D8 + .align 2, 0 +_0800A0C8: .4byte gUnknown_30031E0 +_0800A0CC: + ldr r0, _0800A0DC + strb r2, [r0] + ldr r0, _0800A0E0 + bl sub_08009928 + movs r0, #1 +_0800A0D8: + pop {r1} + bx r1 + .align 2, 0 +_0800A0DC: .4byte gUnknown_30031F0 +_0800A0E0: .4byte 0x0000CCCC + thumb_func_end sub_0800A09C + + thumb_func_start sub_0800A0E4 +sub_0800A0E4: @ 0x0800A0E4 + push {lr} + ldr r0, _0800A0F8 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A0FC + bl sub_08010000 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0800A10A + .align 2, 0 +_0800A0F8: .4byte gUnknown_300319C +_0800A0FC: + movs r1, #0 + ldr r0, _0800A110 + ldr r0, [r0] + cmp r0, #0 + bne _0800A108 + movs r1, #1 +_0800A108: + adds r0, r1, #0 +_0800A10A: + pop {r1} + bx r1 + .align 2, 0 +_0800A110: .4byte gUnknown_30031E0 + thumb_func_end sub_0800A0E4 + + thumb_func_start sub_0800A114 +sub_0800A114: @ 0x0800A114 + push {lr} + ldr r0, _0800A138 + ldrb r0, [r0] + cmp r0, #1 + beq _0800A140 + ldr r2, _0800A13C + ldrb r0, [r2, #3] + lsls r0, r0, #3 + ldrb r1, [r2, #2] + lsls r1, r1, #2 + orrs r0, r1 + ldrb r1, [r2, #1] + lsls r1, r1, #1 + orrs r0, r1 + ldrb r1, [r2] + orrs r0, r1 + b _0800A144 + .align 2, 0 +_0800A138: .4byte gUnknown_300319C +_0800A13C: .4byte gUnknown_300311C +_0800A140: + bl sub_0800F7BC +_0800A144: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0800A114 + + thumb_func_start sub_0800A14C +sub_0800A14C: @ 0x0800A14C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0800A164 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A168 + adds r0, r1, #0 + bl sub_0800F1BC + b _0800A170 + .align 2, 0 +_0800A164: .4byte gUnknown_300319C +_0800A168: + ldr r0, _0800A174 + adds r0, r1, r0 + movs r1, #1 + strb r1, [r0] +_0800A170: + pop {r0} + bx r0 + .align 2, 0 +_0800A174: .4byte gUnknown_300311C + thumb_func_end sub_0800A14C + + thumb_func_start sub_0800A178 +sub_0800A178: @ 0x0800A178 + push {r4, lr} + ldr r0, _0800A194 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A198 + movs r4, #0 +_0800A184: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800F1E8 + adds r4, #1 + cmp r4, #4 + ble _0800A184 + b _0800A1A6 + .align 2, 0 +_0800A194: .4byte gUnknown_300319C +_0800A198: + ldr r1, _0800A1AC + movs r2, #0 + adds r0, r1, #3 +_0800A19E: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _0800A19E +_0800A1A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800A1AC: .4byte gUnknown_300311C + thumb_func_end sub_0800A178 + + thumb_func_start sub_0800A1B0 +sub_0800A1B0: @ 0x0800A1B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0800A1C8 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A1CC + adds r0, r1, #0 + bl sub_0800F1E8 + b _0800A1DA + .align 2, 0 +_0800A1C8: .4byte gUnknown_300319C +_0800A1CC: + ldr r0, _0800A1E0 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0800A1DA + movs r0, #0 + strb r0, [r1] +_0800A1DA: + pop {r0} + bx r0 + .align 2, 0 +_0800A1E0: .4byte gUnknown_300311C + thumb_func_end sub_0800A1B0 + + thumb_func_start sub_0800A1E4 +sub_0800A1E4: @ 0x0800A1E4 + push {lr} + ldr r0, _0800A204 + ldr r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0800A200 + movs r0, #0x1c + ands r1, r0 + cmp r1, #4 + bls _0800A200 + ldr r1, _0800A208 + movs r0, #1 + strb r0, [r1] +_0800A200: + pop {r0} + bx r0 + .align 2, 0 +_0800A204: .4byte gUnknown_3003180 +_0800A208: .4byte gUnknown_30031E4 + thumb_func_end sub_0800A1E4 + + thumb_func_start sub_0800A20C +sub_0800A20C: @ 0x0800A20C + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + movs r3, #0 + movs r2, #0 + lsrs r1, r1, #0x11 + cmp r3, r1 + bhs _0800A232 +_0800A21C: + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r0, [r0] + adds r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r1 + blo _0800A21C +_0800A232: + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800A20C + + thumb_func_start sub_0800A23C +sub_0800A23C: @ 0x0800A23C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + ldr r4, _0800A270 + ldr r3, [r4] + lsls r3, r3, #0xb + movs r5, #0xc0 + lsls r5, r5, #0x13 + adds r3, r3, r5 + lsrs r2, r2, #0x13 + adds r2, r2, r1 + lsls r2, r2, #1 + adds r2, r2, r3 + ldr r3, [r4, #4] + lsls r3, r3, #0xc + ldr r1, [r4, #8] + adds r1, #1 + adds r0, r0, r1 + orrs r3, r0 + strh r3, [r2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A270: .4byte gUnknown_30031D0 + thumb_func_end sub_0800A23C + + thumb_func_start sub_0800A274 +sub_0800A274: @ 0x0800A274 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + ldr r4, _0800A2A8 + ldr r3, [r4] + lsls r3, r3, #0xb + movs r5, #0xc0 + lsls r5, r5, #0x13 + adds r3, r3, r5 + lsrs r2, r2, #0x13 + adds r2, r2, r1 + lsls r2, r2, #1 + adds r2, r2, r3 + ldr r3, [r4, #4] + lsls r3, r3, #0xc + ldr r1, [r4, #8] + adds r1, r1, r0 + orrs r3, r1 + strh r3, [r2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A2A8: .4byte gUnknown_30031D0 + thumb_func_end sub_0800A274 + + thumb_func_start sub_0800A2AC +sub_0800A2AC: @ 0x0800A2AC + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r4, #0 + cmp r4, r3 + bge _0800A2D8 + movs r2, #0xf +_0800A2C6: + mov r0, sp + adds r1, r0, r4 + adds r0, r5, #0 + ands r0, r2 + strb r0, [r1] + lsrs r5, r5, #4 + adds r4, #1 + cmp r4, r3 + blt _0800A2C6 +_0800A2D8: + subs r4, r3, #1 + cmp r4, #0 + blt _0800A2F8 +_0800A2DE: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800A23C + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + subs r4, #1 + cmp r4, #0 + bge _0800A2DE +_0800A2F8: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0800A2AC + + thumb_func_start sub_0800A300 +sub_0800A300: @ 0x0800A300 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0x10] + cmp r6, #0 + bge _0800A32C + str r7, [sp, #0x10] + rsbs r6, r6, #0 +_0800A32C: + movs r5, #0 + movs r1, #1 + rsbs r1, r1, #0 + add r1, r8 + mov sl, r1 + cmp r5, r8 + bge _0800A358 +_0800A33A: + mov r0, sp + adds r4, r0, r5 + adds r0, r6, #0 + movs r1, #0xa + bl __modsi3 + strb r0, [r4] + adds r0, r6, #0 + movs r1, #0xa + bl __divsi3 + adds r6, r0, #0 + adds r5, #1 + cmp r5, r8 + blt _0800A33A +_0800A358: + mov r5, sl + cmp r5, #0 + blt _0800A378 +_0800A35E: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + adds r1, r7, #0 + mov r2, sb + bl sub_0800A23C + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + subs r5, #1 + cmp r5, #0 + bge _0800A35E +_0800A378: + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, [sp, #0x10] + cmp r1, r0 + beq _0800A38E + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0xa + mov r2, sb + bl sub_0800A23C +_0800A38E: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800A300 + + thumb_func_start sub_0800A3A0 +sub_0800A3A0: @ 0x0800A3A0 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r6, #0 + ldrb r0, [r3] + cmp r0, #0 + beq _0800A3E0 + adds r4, r3, #0 + lsls r5, r2, #0x18 +_0800A3B8: + ldrb r0, [r4] + cmp r0, #0xa + bne _0800A3C8 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r5, r5, r0 + movs r6, #0 + b _0800A3D8 +_0800A3C8: + ldrb r0, [r4] + adds r1, r7, r6 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsrs r2, r5, #0x18 + bl sub_0800A274 + adds r6, #1 +_0800A3D8: + adds r4, #1 + ldrb r0, [r4] + cmp r0, #0 + bne _0800A3B8 +_0800A3E0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800A3A0 + + thumb_func_start sub_0800A3E8 +sub_0800A3E8: @ 0x0800A3E8 + push {lr} + ldr r0, _0800A408 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0800A3FC + ldr r0, _0800A40C + bl sub_08009928 +_0800A3FC: + ldr r1, _0800A410 + movs r0, #0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800A408: .4byte gUnknown_3003180 +_0800A40C: .4byte 0x00002222 +_0800A410: .4byte gUnknown_30031E0 + thumb_func_end sub_0800A3E8 + + thumb_func_start sub_0800A414 +sub_0800A414: @ 0x0800A414 + push {r4, r5, r6, lr} + sub sp, #0x20 + ldr r1, _0800A534 + mov r0, sp + bl strcpy + mov r0, sp + movs r1, #5 + movs r2, #2 + bl sub_0800A3A0 + ldr r0, _0800A538 + ldrb r0, [r0] + movs r1, #2 + movs r2, #1 + movs r3, #2 + bl sub_0800A2AC + ldr r4, _0800A53C + ldr r0, [r4] + movs r1, #0xf + movs r2, #1 + movs r3, #8 + bl sub_0800A2AC + ldr r0, _0800A540 + ldrb r0, [r0, #1] + movs r1, #2 + movs r2, #0xa + movs r3, #2 + bl sub_0800A2AC + ldr r0, [r4] + movs r1, #0x1c + ands r0, r1 + lsrs r0, r0, #2 + movs r1, #0xf + movs r2, #0xa + movs r3, #2 + bl sub_0800A2AC + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xf + movs r2, #0xc + movs r3, #2 + bl sub_0800A2AC + ldr r0, _0800A544 + ldrb r0, [r0] + movs r1, #0x19 + movs r2, #1 + movs r3, #2 + bl sub_0800A2AC + ldr r0, _0800A548 + ldrb r0, [r0] + movs r1, #0x19 + movs r2, #2 + movs r3, #2 + bl sub_0800A2AC + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xf + movs r2, #5 + movs r3, #2 + bl sub_0800A2AC + ldr r0, _0800A54C + ldr r0, [r0] + movs r1, #2 + movs r2, #0xc + movs r3, #8 + bl sub_0800A2AC + ldr r0, _0800A550 + ldr r0, [r0] + movs r1, #2 + movs r2, #0xd + movs r3, #8 + bl sub_0800A2AC + bl sub_0800ADC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x19 + movs r2, #5 + movs r3, #1 + bl sub_0800A2AC + bl sub_0800ADD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x19 + movs r2, #6 + movs r3, #1 + bl sub_0800A2AC + bl sub_0800ADFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x19 + movs r2, #7 + movs r3, #1 + bl sub_0800A2AC + bl sub_0800AE18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x19 + movs r2, #8 + movs r3, #1 + bl sub_0800A2AC + movs r6, #0 + movs r5, #0x80 + lsls r5, r5, #0x13 + ldr r4, _0800A554 +_0800A512: + ldrh r0, [r4] + lsrs r2, r5, #0x18 + movs r1, #0xa + movs r3, #4 + bl sub_0800A2AC + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r5, r5, r0 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0800A512 + add sp, #0x20 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800A534: .4byte gUnknown_82BFF34 +_0800A538: .4byte gUnknown_30031E4 +_0800A53C: .4byte gUnknown_3003180 +_0800A540: .4byte gUnknown_3003210 +_0800A544: .4byte gUnknown_3003200 +_0800A548: .4byte gUnknown_30041D0 +_0800A54C: .4byte gUnknown_30030CC +_0800A550: .4byte gUnknown_3003110 +_0800A554: .4byte gUnknown_30031E8 + thumb_func_end sub_0800A414 + + thumb_func_start sub_0800A558 +sub_0800A558: @ 0x0800A558 + ldr r2, _0800A564 + str r0, [r2] + ldr r0, _0800A568 + str r1, [r0] + bx lr + .align 2, 0 +_0800A564: .4byte gUnknown_30030CC +_0800A568: .4byte gUnknown_3003110 + thumb_func_end sub_0800A558 + + thumb_func_start sub_0800A56C +sub_0800A56C: @ 0x0800A56C + push {r4, lr} + movs r1, #0 + movs r2, #0 + ldr r0, _0800A598 + ldrb r0, [r0] + cmp r1, r0 + bge _0800A58E + movs r4, #1 + adds r3, r0, #0 +_0800A57E: + adds r0, r4, #0 + lsls r0, r2 + orrs r1, r0 + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + adds r2, #1 + cmp r2, r3 + blt _0800A57E +_0800A58E: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800A598: .4byte gUnknown_30031A0 + thumb_func_end sub_0800A56C + + thumb_func_start sub_0800A59C +sub_0800A59C: @ 0x0800A59C + push {r4, r5, r6, lr} + movs r4, #0 + movs r5, #0 + movs r6, #1 + b _0800A5B2 +_0800A5A6: + adds r0, r6, #0 + lsls r0, r5 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + adds r5, #1 +_0800A5B2: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _0800A5A6 + adds r0, r4, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800A59C + + thumb_func_start sub_0800A5C8 +sub_0800A5C8: @ 0x0800A5C8 + push {r4, r5, r6, r7, lr} + ldr r1, _0800A5FC + strb r0, [r1] + bl sub_0800A02C + ldr r1, _0800A600 + strb r0, [r1] + ldr r4, _0800A604 + ldr r3, _0800A608 + movs r2, #4 +_0800A5DC: + adds r0, r3, #0 + adds r1, r4, #0 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldr r1, [r1] + str r1, [r0] + adds r4, #0x1c + adds r3, #0x1c + subs r2, #1 + cmp r2, #0 + bge _0800A5DC + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800A5FC: .4byte gUnknown_30031A0 +_0800A600: .4byte gUnknown_30031C0 +_0800A604: .4byte gUnknown_20226A0 +_0800A608: .4byte gUnknown_202272C + thumb_func_end sub_0800A5C8 + + thumb_func_start sub_0800A60C +sub_0800A60C: @ 0x0800A60C + ldr r0, _0800A614 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800A614: .4byte gUnknown_30031A0 + thumb_func_end sub_0800A60C + + thumb_func_start sub_0800A618 +sub_0800A618: @ 0x0800A618 + ldr r0, _0800A620 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800A620: .4byte gUnknown_30031C0 + thumb_func_end sub_0800A618 + + thumb_func_start sub_0800A624 +sub_0800A624: @ 0x0800A624 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r3, #0 + ldr r0, _0800A694 + ldrb r1, [r0] + mov sb, r0 + cmp r3, r1 + bge _0800A678 + ldr r0, _0800A698 + mov ip, r0 + ldr r0, _0800A69C + ldr r2, _0800A6A0 + mov r8, r2 + ldr r7, _0800A6A4 + mov r6, ip + adds r6, #0x14 + adds r5, r0, #4 + movs r4, #0 + adds r2, r1, #0 +_0800A64E: + mov r0, ip + adds r0, #4 + adds r0, r4, r0 + ldr r1, [r0] + ldr r0, [r5] + cmp r1, r0 + bne _0800A66C + ldrh r0, [r7] + cmp r0, r8 + bne _0800A66A + adds r1, r0, #0 + ldr r0, [r6] + cmp r1, r0 + bne _0800A66C +_0800A66A: + adds r3, #1 +_0800A66C: + adds r6, #0x1c + adds r5, #0x1c + adds r4, #0x1c + subs r2, #1 + cmp r2, #0 + bne _0800A64E +_0800A678: + mov r0, sb + ldrb r0, [r0] + cmp r3, r0 + bne _0800A6A8 + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sb + ldrb r1, [r1] + cmp r0, r1 + bne _0800A6A8 + movs r0, #1 + b _0800A6AA + .align 2, 0 +_0800A694: .4byte gUnknown_30031A0 +_0800A698: .4byte gUnknown_20226A0 +_0800A69C: .4byte gUnknown_202272C +_0800A6A0: .4byte 0x00002288 +_0800A6A4: .4byte gUnknown_202267E +_0800A6A8: + movs r0, #0 +_0800A6AA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800A624 + + thumb_func_start sub_0800A6B8 +sub_0800A6B8: @ 0x0800A6B8 + push {r4, r5, lr} + ldr r5, _0800A6D8 + movs r4, #3 +_0800A6BE: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x1c + bl CpuSet + adds r5, #0x1c + subs r4, #1 + cmp r4, #0 + bge _0800A6BE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800A6D8: .4byte gUnknown_202272C + thumb_func_end sub_0800A6B8 + + thumb_func_start sub_0800A6DC +sub_0800A6DC: @ 0x0800A6DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r4, #0 + ldr r0, _0800A748 + ldrb r0, [r0] + cmp r4, r0 + bhs _0800A73C + ldr r6, _0800A74C + ldr r5, _0800A750 + movs r0, #8 + adds r0, r0, r6 + mov r8, r0 + adds r7, r5, #0 + adds r7, #8 +_0800A6FA: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r2, r0, #2 + adds r1, r6, #4 + adds r1, r2, r1 + adds r0, r5, #4 + adds r0, r2, r0 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + bne _0800A71E + mov r1, r8 + adds r0, r2, r1 + adds r1, r2, r7 + bl sub_0800895C + cmp r0, #0 + beq _0800A72E +_0800A71E: + ldr r1, _0800A754 + movs r0, #1 + strb r0, [r1] + bl sub_08009384 + ldr r0, _0800A758 + bl sub_08000540 +_0800A72E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0800A748 + ldrb r0, [r0] + cmp r4, r0 + blo _0800A6FA +_0800A73C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800A748: .4byte gUnknown_30031A0 +_0800A74C: .4byte gUnknown_202272C +_0800A750: .4byte gUnknown_20226A0 +_0800A754: .4byte gUnknown_300310C +_0800A758: .4byte sub_0800AA0C + thumb_func_end sub_0800A6DC + + thumb_func_start sub_0800A75C +sub_0800A75C: @ 0x0800A75C + ldr r0, _0800A768 + movs r1, #0 + strb r1, [r0] + ldr r0, _0800A76C + strb r1, [r0] + bx lr + .align 2, 0 +_0800A768: .4byte gUnknown_30031A0 +_0800A76C: .4byte gUnknown_30031C0 + thumb_func_end sub_0800A75C + + thumb_func_start sub_0800A770 +sub_0800A770: @ 0x0800A770 + ldr r0, _0800A77C + ldr r0, [r0] + movs r1, #0x1c + ands r0, r1 + lsrs r0, r0, #2 + bx lr + .align 2, 0 +_0800A77C: .4byte gUnknown_3003180 + thumb_func_end sub_0800A770 + + thumb_func_start sub_0800A780 +sub_0800A780: @ 0x0800A780 + push {lr} + ldr r0, _0800A798 + ldrb r0, [r0] + cmp r0, #0 + bne _0800A7A0 + ldr r0, _0800A79C + ldr r0, [r0] + lsrs r0, r0, #5 + movs r1, #1 + ands r0, r1 + b _0800A7A8 + .align 2, 0 +_0800A798: .4byte gUnknown_300319C +_0800A79C: .4byte gUnknown_3003180 +_0800A7A0: + bl sub_0801159C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0800A7A8: + pop {r1} + bx r1 + thumb_func_end sub_0800A780 + + thumb_func_start sub_0800A7AC +sub_0800A7AC: @ 0x0800A7AC + ldr r0, _0800A7B4 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800A7B4: .4byte gUnknown_3000D58 + thumb_func_end sub_0800A7AC + + thumb_func_start sub_0800A7B8 +sub_0800A7B8: @ 0x0800A7B8 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _0800A7CC + ldrb r0, [r0] + cmp r0, #1 + bne _0800A7D0 + bl sub_0800FD94 + b _0800A7E4 + .align 2, 0 +_0800A7CC: .4byte gUnknown_300319C +_0800A7D0: + ldr r2, _0800A7E8 + ldr r1, [r2] + cmp r1, #0 + bne _0800A7E4 + ldr r0, _0800A7EC + str r0, [r2] + ldr r0, _0800A7F0 + strb r1, [r0] + ldr r0, _0800A7F4 + strh r3, [r0] +_0800A7E4: + pop {r0} + bx r0 + .align 2, 0 +_0800A7E8: .4byte gUnknown_30031E0 +_0800A7EC: .4byte sub_0800A844 +_0800A7F0: .4byte gUnknown_3003184 +_0800A7F4: .4byte gUnknown_3003194 + thumb_func_end sub_0800A7B8 + + thumb_func_start sub_0800A7F8 +sub_0800A7F8: @ 0x0800A7F8 + push {lr} + ldr r0, _0800A808 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A80C + bl sub_0800FD94 + b _0800A834 + .align 2, 0 +_0800A808: .4byte gUnknown_300319C +_0800A80C: + ldr r2, _0800A820 + ldr r1, [r2] + cmp r1, #0 + beq _0800A828 + ldr r1, _0800A824 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0800A834 + .align 2, 0 +_0800A820: .4byte gUnknown_30031E0 +_0800A824: .4byte gUnknown_20227C0 +_0800A828: + ldr r0, _0800A838 + str r0, [r2] + ldr r0, _0800A83C + strb r1, [r0] + ldr r0, _0800A840 + strh r1, [r0] +_0800A834: + pop {r0} + bx r0 + .align 2, 0 +_0800A838: .4byte sub_0800A844 +_0800A83C: .4byte gUnknown_3003184 +_0800A840: .4byte gUnknown_3003194 + thumb_func_end sub_0800A7F8 + + thumb_func_start sub_0800A844 +sub_0800A844: @ 0x0800A844 + push {lr} + ldr r0, _0800A860 + ldrb r0, [r0] + cmp r0, #0 + bne _0800A85A + ldr r0, _0800A864 + bl sub_08009928 + ldr r1, _0800A868 + ldr r0, _0800A86C + str r0, [r1] +_0800A85A: + pop {r0} + bx r0 + .align 2, 0 +_0800A860: .4byte gUnknown_30041D0 +_0800A864: .4byte 0x00005FFF +_0800A868: .4byte gUnknown_30031E0 +_0800A86C: .4byte sub_0800A870 + thumb_func_end sub_0800A844 + + thumb_func_start sub_0800A870 +sub_0800A870: @ 0x0800A870 + push {r4, lr} + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r3, #0 + movs r1, #0 + cmp r3, r2 + bge _0800A894 + ldr r4, _0800A8C0 +_0800A884: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0800A88E + adds r3, #1 +_0800A88E: + adds r1, #1 + cmp r1, r2 + blt _0800A884 +_0800A894: + cmp r3, r2 + bne _0800A8B8 + ldr r2, _0800A8C4 + ldr r0, [r2] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + ldr r0, _0800A8C8 + movs r4, #1 + strb r4, [r0] + bl sub_08009384 + ldr r1, _0800A8CC + movs r0, #0 + str r0, [r1] + ldr r0, _0800A8D0 + strb r4, [r0] +_0800A8B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800A8C0: .4byte gUnknown_3003190 +_0800A8C4: .4byte gUnknown_2022C90 +_0800A8C8: .4byte gUnknown_30027E8 +_0800A8CC: .4byte gUnknown_30031E0 +_0800A8D0: .4byte gUnknown_3003184 + thumb_func_end sub_0800A870 + + thumb_func_start sub_0800A8D4 +sub_0800A8D4: @ 0x0800A8D4 + push {lr} + ldr r0, _0800A8E4 + ldrb r0, [r0] + cmp r0, #1 + bne _0800A8E8 + bl sub_0800FF34 + b _0800A8FA + .align 2, 0 +_0800A8E4: .4byte gUnknown_300319C +_0800A8E8: + ldr r1, _0800A900 + ldr r0, [r1] + cmp r0, #0 + bne _0800A8F4 + ldr r0, _0800A904 + str r0, [r1] +_0800A8F4: + ldr r1, _0800A908 + movs r0, #0 + strb r0, [r1] +_0800A8FA: + pop {r0} + bx r0 + .align 2, 0 +_0800A900: .4byte gUnknown_30031E0 +_0800A904: .4byte sub_0800A90C +_0800A908: .4byte gUnknown_3003184 + thumb_func_end sub_0800A8D4 + + thumb_func_start sub_0800A90C +sub_0800A90C: @ 0x0800A90C + push {lr} + ldr r0, _0800A928 + ldrb r0, [r0] + cmp r0, #0 + bne _0800A922 + ldr r0, _0800A92C + bl sub_08009928 + ldr r1, _0800A930 + ldr r0, _0800A934 + str r0, [r1] +_0800A922: + pop {r0} + bx r0 + .align 2, 0 +_0800A928: .4byte gUnknown_30041D0 +_0800A92C: .4byte 0x00002FFE +_0800A930: .4byte gUnknown_30031E0 +_0800A934: .4byte sub_0800A938 + thumb_func_end sub_0800A90C + + thumb_func_start sub_0800A938 +sub_0800A938: @ 0x0800A938 + push {r4, lr} + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + cmp r1, r2 + bhs _0800A962 + ldr r3, _0800A988 + ldrb r0, [r3] + cmp r0, #0 + beq _0800A962 +_0800A950: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + bhs _0800A962 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0800A950 +_0800A962: + cmp r1, r2 + bne _0800A980 + movs r1, #0 + ldr r4, _0800A98C + ldr r3, _0800A988 + movs r2, #0 +_0800A96E: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _0800A96E + movs r0, #0 + str r0, [r4] +_0800A980: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800A988: .4byte gUnknown_300318C +_0800A98C: .4byte gUnknown_30031E0 + thumb_func_end sub_0800A938 + + thumb_func_start sub_0800A990 +sub_0800A990: @ 0x0800A990 + push {lr} + ldr r0, _0800A9D4 + ldrb r0, [r0] + cmp r0, #0 + beq _0800A9D0 + ldr r0, _0800A9D8 + ldr r2, [r0] + movs r0, #0xfe + lsls r0, r0, #0xb + ands r0, r2 + cmp r0, #0 + beq _0800A9D0 + ldr r0, _0800A9DC + ldrb r0, [r0] + cmp r0, #0 + bne _0800A9C6 + ldr r1, _0800A9E0 + str r2, [r1] + ldr r0, _0800A9E4 + ldrb r0, [r0] + strb r0, [r1, #4] + ldr r0, _0800A9E8 + ldrb r0, [r0] + strb r0, [r1, #5] + ldr r0, _0800A9EC + bl sub_08000540 +_0800A9C6: + ldr r1, _0800A9F0 + movs r0, #1 + strb r0, [r1] + bl sub_08009384 +_0800A9D0: + pop {r0} + bx r0 + .align 2, 0 +_0800A9D4: .4byte gUnknown_202267C +_0800A9D8: .4byte gUnknown_3003180 +_0800A9DC: .4byte gUnknown_3003198 +_0800A9E0: .4byte gUnknown_20227B8 +_0800A9E4: .4byte gUnknown_30041D0 +_0800A9E8: .4byte gUnknown_3003200 +_0800A9EC: .4byte sub_0800AA0C +_0800A9F0: .4byte gUnknown_300310C + thumb_func_end sub_0800A990 + + thumb_func_start sub_0800A9F4 +sub_0800A9F4: @ 0x0800A9F4 + push {r4, lr} + ldr r4, _0800AA08 + str r0, [r4] + strb r1, [r4, #5] + strb r2, [r4, #4] + strb r3, [r4, #6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800AA08: .4byte gUnknown_20227B8 + thumb_func_end sub_0800A9F4 + + thumb_func_start sub_0800AA0C +sub_0800AA0C: @ 0x0800AA0C + push {r4, lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r0, _0800AB20 + bl m4aMPlayStop + ldr r0, _0800AB24 + bl m4aMPlayStop + ldr r0, _0800AB28 + bl m4aMPlayStop + ldr r0, _0800AB2C + movs r1, #0xe0 + lsls r1, r1, #9 + bl sub_08000BAC + bl sub_0800668C + bl sub_08008424 + bl sub_080A1898 + movs r0, #0 + movs r1, #0 + movs r2, #2 + bl sub_080A1238 + bl sub_080A8818 + bl sub_080B9710 + ldr r1, _0800AB30 + ldrb r0, [r1] + cmp r0, #0 + beq _0800AA68 + ldr r0, _0800AB34 + ldrb r0, [r0, #6] + cmp r0, #0 + bne _0800AA64 + movs r0, #3 + strb r0, [r1] +_0800AA64: + bl sub_0800E0C8 +_0800AA68: + ldr r0, _0800AB38 + bl sub_080006F0 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0800AB3C + movs r0, #0 + movs r2, #2 + bl sub_08001800 + ldr r4, _0800AB40 + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BC8 + adds r1, r0, #0 + str r1, [r4] + movs r0, #1 + bl sub_0800212C + ldr r0, _0800AB44 + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800AB18 + bl sub_08004480 + bl sub_081996B8 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r1, #0xe0 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001220 + ldr r0, _0800AB48 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0800AB4C + movs r0, #0 + strb r0, [r1] + ldr r0, _0800AB50 + movs r1, #0 + bl sub_080A8878 + bl sub_080A27F8 + ldr r1, _0800AB54 + movs r0, #0 + str r0, [r1] + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + ldr r0, _0800AB58 + bl sub_08000540 +_0800AB18: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800AB20: .4byte gUnknown_3007510 +_0800AB24: .4byte gUnknown_3007550 +_0800AB28: .4byte gUnknown_30075A0 +_0800AB2C: .4byte gUnknown_2000000 +_0800AB30: .4byte gUnknown_300319C +_0800AB34: .4byte gUnknown_20227B8 +_0800AB38: .4byte sub_08009258 +_0800AB3C: .4byte gUnknown_82BFF4C +_0800AB40: .4byte gUnknown_20227C4 +_0800AB44: .4byte gUnknown_82BFF54 +_0800AB48: .4byte gUnknown_85D7B04 +_0800AB4C: .4byte gUnknown_30027A0 +_0800AB50: .4byte sub_08008FA0 +_0800AB54: .4byte gUnknown_3002360 +_0800AB58: .4byte sub_0800AC7C + thumb_func_end sub_0800AA0C + + thumb_func_start sub_0800AB5C +sub_0800AB5C: @ 0x0800AB5C + push {r4, r5, lr} + sub sp, #0xc + ldr r1, _0800ABF8 + movs r0, #0 + movs r2, #0x20 + movs r3, #0 + bl sub_0800195C + ldr r1, _0800ABFC + movs r5, #0 + str r5, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0800AC00 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + ldr r0, _0800AC04 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r4, _0800AC08 + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0800AC0C + str r0, [sp, #8] + movs r0, #0 + movs r1, #3 + movs r2, #0x18 + movs r3, #5 + bl sub_08199AFC + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0800AC10 + str r0, [sp, #8] + movs r0, #2 + movs r1, #3 + movs r2, #3 + movs r3, #2 + bl sub_08199AFC + movs r0, #0 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + movs r0, #0 + movs r1, #0 + bl sub_08003528 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800ABF8: .4byte gUnknown_82BFEB8 +_0800ABFC: .4byte gUnknown_82BF4D8 +_0800AC00: .4byte gUnknown_82BF980 +_0800AC04: .4byte gUnknown_82BF4B8 +_0800AC08: .4byte gUnknown_82BFF74 +_0800AC0C: .4byte gUnknown_82BFE50 +_0800AC10: .4byte gUnknown_82BFE62 + thumb_func_end sub_0800AB5C + + thumb_func_start sub_0800AC14 +sub_0800AC14: @ 0x0800AC14 + push {lr} + sub sp, #0xc + ldr r1, _0800AC70 + movs r0, #0 + movs r2, #0x20 + movs r3, #0 + bl sub_0800195C + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0800AC74 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0800AC78 + str r0, [sp, #8] + movs r0, #1 + movs r1, #3 + movs r2, #3 + movs r3, #0 + bl sub_08199AFC + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + movs r0, #1 + movs r1, #0 + bl sub_08003528 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0800AC70: .4byte gUnknown_82BFEB8 +_0800AC74: .4byte gUnknown_82BFF74 +_0800AC78: .4byte gUnknown_82BFE00 + thumb_func_end sub_0800AC14 + + thumb_func_start sub_0800AC7C +sub_0800AC7C: @ 0x0800AC7C + push {r4, lr} + sub sp, #0xc + ldr r0, _0800AC9C + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x1e + beq _0800ACE8 + cmp r0, #0x1e + bgt _0800ACA0 + cmp r0, #0 + beq _0800ACB4 + cmp r0, #2 + beq _0800ACCE + b _0800AD3C + .align 2, 0 +_0800AC9C: .4byte gUnknown_3002360 +_0800ACA0: + cmp r0, #0x5a + beq _0800ACE8 + cmp r0, #0x5a + bgt _0800ACAE + cmp r0, #0x3c + beq _0800ACE8 + b _0800AD3C +_0800ACAE: + cmp r0, #0x82 + beq _0800ACF0 + b _0800AD3C +_0800ACB4: + ldr r0, _0800ACC4 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0800ACC8 + bl sub_0800AB5C + b _0800AD3C + .align 2, 0 +_0800ACC4: .4byte gUnknown_20227B8 +_0800ACC8: + bl sub_0800AC14 + b _0800AD3C +_0800ACCE: + movs r0, #0 + bl sub_08001B48 + ldr r0, _0800ACE4 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0800AD3C + movs r0, #1 + bl sub_08001B48 + b _0800AD3C + .align 2, 0 +_0800ACE4: .4byte gUnknown_20227B8 +_0800ACE8: + movs r0, #0x16 + bl sub_080A306C + b _0800AD3C +_0800ACF0: + ldr r0, _0800AD14 + ldrb r0, [r0] + cmp r0, #2 + bne _0800AD20 + ldr r0, _0800AD18 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0800AD1C + str r0, [sp, #8] + movs r0, #0 + movs r1, #3 + movs r2, #0x18 + movs r3, #0x12 + bl sub_08199AFC + b _0800AD3C + .align 2, 0 +_0800AD14: .4byte gUnknown_300319C +_0800AD18: .4byte gUnknown_82BFF74 +_0800AD1C: .4byte gUnknown_82BFE9F +_0800AD20: + cmp r0, #1 + bne _0800AD3C + ldr r0, _0800AD70 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0800AD74 + str r0, [sp, #8] + movs r0, #0 + movs r1, #3 + movs r2, #0x18 + movs r3, #0x12 + bl sub_08199AFC +_0800AD3C: + ldr r0, _0800AD78 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r0, r2 + ldrb r1, [r1] + cmp r1, #0xa0 + bne _0800ADAC + ldr r4, _0800AD7C + ldrb r2, [r4] + cmp r2, #1 + bne _0800AD84 + ldrh r0, [r0, #0x2e] + ands r2, r0 + cmp r2, #0 + beq _0800AD9E + movs r0, #0x15 + bl sub_080A306C + movs r0, #0 + strb r0, [r4] + ldr r1, _0800AD80 + movs r0, #0 + strb r0, [r1, #6] + bl sub_0816FEF0 + b _0800AD9E + .align 2, 0 +_0800AD70: .4byte gUnknown_82BFF74 +_0800AD74: .4byte gUnknown_82BFE8D +_0800AD78: .4byte gUnknown_3002360 +_0800AD7C: .4byte gUnknown_300319C +_0800AD80: .4byte gUnknown_20227B8 +_0800AD84: + cmp r2, #2 + bne _0800AD9E + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0800AD9E + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + bl sub_080008F4 +_0800AD9E: + ldr r0, _0800ADC0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r0, r2 + ldrb r1, [r1] + cmp r1, #0xa0 + beq _0800ADB8 +_0800ADAC: + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r0, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0800ADB8: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800ADC0: .4byte gUnknown_3002360 + thumb_func_end sub_0800AC7C + + thumb_func_start sub_0800ADC4 +sub_0800ADC4: @ 0x0800ADC4 + ldr r0, _0800ADD0 + ldrh r0, [r0] + lsrs r0, r0, #2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0800ADD0: .4byte 0x04000128 + thumb_func_end sub_0800ADC4 + + thumb_func_start sub_0800ADD4 +sub_0800ADD4: @ 0x0800ADD4 + push {lr} + movs r3, #0 + ldr r2, _0800ADF8 + ldrh r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0800ADF0 + ldrh r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0800ADF0 + movs r3, #1 +_0800ADF0: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_0800ADF8: .4byte 0x04000128 + thumb_func_end sub_0800ADD4 + + thumb_func_start sub_0800ADFC +sub_0800ADFC: @ 0x0800ADFC + ldr r0, _0800AE08 + ldr r0, [r0] + lsrs r0, r0, #6 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0800AE08: .4byte gUnknown_3003180 + thumb_func_end sub_0800ADFC + + thumb_func_start sub_0800AE0C +sub_0800AE0C: @ 0x0800AE0C + ldr r1, _0800AE14 + strb r0, [r1] + bx lr + .align 2, 0 +_0800AE14: .4byte gUnknown_3003198 + thumb_func_end sub_0800AE0C + + thumb_func_start sub_0800AE18 +sub_0800AE18: @ 0x0800AE18 + ldr r0, _0800AE20 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800AE20: .4byte gUnknown_300310C + thumb_func_end sub_0800AE18 + + thumb_func_start sub_0800AE24 +sub_0800AE24: @ 0x0800AE24 + push {r4, r5, r6, lr} + bl sub_080091D4 + ldr r1, _0800AE70 + adds r2, r1, #0 + adds r2, #0x10 + ldr r0, _0800AE74 + ldm r0!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r0!, {r3, r4, r6} + stm r2!, {r3, r4, r6} + ldr r0, [r0] + str r0, [r2] + ldr r3, _0800AE78 + adds r2, r1, #0 + adds r0, r3, #0 + ldm r0!, {r4, r5, r6} + stm r2!, {r4, r5, r6} + ldrh r4, [r0] + strh r4, [r2] + ldrb r0, [r0, #2] + strb r0, [r2, #2] + 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, #2] + strb r2, [r0, #2] + ldr r0, _0800AE7C + movs r2, #0x3c + bl memcpy + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800AE70: .4byte gUnknown_30030D0 +_0800AE74: .4byte gUnknown_2022684 +_0800AE78: .4byte gUnknown_82BFF24 +_0800AE7C: .4byte gUnknown_202257C + thumb_func_end sub_0800AE24 + + thumb_func_start sub_0800AE80 +sub_0800AE80: @ 0x0800AE80 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #8 + ldr r1, _0800AED0 + adds r4, r2, r1 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0800AED4 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x10 + 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 r5, _0800AED8 + adds r0, r4, #0 + adds r1, r5, #0 + bl strcmp + cmp r0, #0 + bne _0800AEC2 + adds r0, r4, #0 + adds r0, #0x2c + adds r1, r5, #0 + bl strcmp + cmp r0, #0 + beq _0800AEC8 +_0800AEC2: + ldr r0, _0800AEDC + bl sub_08000540 +_0800AEC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800AED0: .4byte gUnknown_202207C +_0800AED4: .4byte gUnknown_20226A0 +_0800AED8: .4byte gUnknown_82BFF24 +_0800AEDC: .4byte sub_0800AA0C + thumb_func_end sub_0800AE80 + + thumb_func_start sub_0800AEE0 +sub_0800AEE0: @ 0x0800AEE0 + push {r4, r5, lr} + ldr r0, _0800AF18 + ldrb r0, [r0] + cmp r0, #0 + bne _0800AF30 + ldr r0, _0800AF1C + ldr r1, _0800AF20 + ldr r2, _0800AF24 + bl sub_0800B0F4 + ldr r4, _0800AF28 + str r0, [r4] + ldr r0, _0800AF2C + bl sub_0800957C + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0800AF54 + bl sub_08086FD0 + cmp r0, #1 + bne _0800AF54 +_0800AF12: + movs r0, #1 + b _0800AF56 + .align 2, 0 +_0800AF18: .4byte gUnknown_300319C +_0800AF1C: .4byte gUnknown_30031E4 +_0800AF20: .4byte gUnknown_30031B0 +_0800AF24: .4byte gUnknown_3003130 +_0800AF28: .4byte gUnknown_3003180 +_0800AF2C: .4byte gUnknown_300238C +_0800AF30: + bl sub_080109B0 + adds r4, r0, #0 + bl sub_08010A0C + adds r5, r0, #0 + bl sub_08086FD0 + cmp r0, #1 + bne _0800AF54 + cmp r4, #1 + beq _0800AF12 + bl sub_0800EB78 + cmp r0, #0 + bne _0800AF12 + cmp r5, #0 + bne _0800AF12 +_0800AF54: + movs r0, #0 +_0800AF56: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0800AEE0 + + thumb_func_start sub_0800AF5C +sub_0800AF5C: @ 0x0800AF5C + push {lr} + ldr r0, _0800AF70 + ldrb r0, [r0] + cmp r0, #0 + bne _0800AF6C + ldr r1, _0800AF74 + movs r0, #1 + strb r0, [r1] +_0800AF6C: + pop {r0} + bx r0 + .align 2, 0 +_0800AF70: .4byte gUnknown_30031C4 +_0800AF74: .4byte gUnknown_300319C + thumb_func_end sub_0800AF5C + + thumb_func_start sub_0800AF78 +sub_0800AF78: @ 0x0800AF78 + push {lr} + ldr r0, _0800AF8C + ldrb r1, [r0] + cmp r1, #0 + bne _0800AF86 + ldr r0, _0800AF90 + strb r1, [r0] +_0800AF86: + pop {r0} + bx r0 + .align 2, 0 +_0800AF8C: .4byte gUnknown_30031C4 +_0800AF90: .4byte gUnknown_300319C + thumb_func_end sub_0800AF78 + + thumb_func_start sub_0800AF94 +sub_0800AF94: @ 0x0800AF94 + push {lr} + ldr r0, _0800AFA8 + ldrb r1, [r0] + cmp r1, #0 + bne _0800AFA2 + ldr r0, _0800AFAC + strb r1, [r0] +_0800AFA2: + pop {r0} + bx r0 + .align 2, 0 +_0800AFA8: .4byte gUnknown_30031C4 +_0800AFAC: .4byte gUnknown_300319C + thumb_func_end sub_0800AF94 + + thumb_func_start sub_0800AFB0 +sub_0800AFB0: @ 0x0800AFB0 + push {lr} + ldr r0, _0800AFC4 + ldrb r0, [r0] + cmp r0, #0 + bne _0800AFD0 + ldr r0, _0800AFC8 + ldr r1, _0800AFCC + adds r0, r0, r1 + ldrb r0, [r0] + b _0800AFD4 + .align 2, 0 +_0800AFC4: .4byte gUnknown_300319C +_0800AFC8: .4byte gUnknown_3003210 +_0800AFCC: .4byte 0x00000FBD +_0800AFD0: + bl sub_08011FC0 +_0800AFD4: + pop {r1} + bx r1 + thumb_func_end sub_0800AFB0 + + thumb_func_start sub_0800AFD8 +sub_0800AFD8: @ 0x0800AFD8 + push {lr} + bl sub_0800AFB0 + cmp r0, #2 + bhi _0800AFE6 + movs r0, #0 + b _0800AFE8 +_0800AFE6: + movs r0, #1 +_0800AFE8: + pop {r1} + bx r1 + thumb_func_end sub_0800AFD8 + + thumb_func_start sub_0800AFEC +sub_0800AFEC: @ 0x0800AFEC + ldr r0, _0800AFF4 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800AFF4: .4byte gUnknown_300319C + thumb_func_end sub_0800AFEC + + thumb_func_start sub_0800AFF8 +sub_0800AFF8: @ 0x0800AFF8 + push {lr} + sub sp, #4 + movs r0, #0xc0 + bl sub_080012A0 + ldr r1, _0800B038 + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0800B03C + movs r2, #0 + strh r2, [r0] + adds r1, #0xda + movs r0, #0xc0 + strh r0, [r1] + ldr r0, _0800B040 + strh r2, [r0] + ldr r2, _0800B044 + movs r0, #0 + movs r1, #0 + str r0, [r2] + str r1, [r2, #4] + str r0, [sp] + ldr r1, _0800B048 + ldr r2, _0800B04C + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0800B038: .4byte 0x04000128 +_0800B03C: .4byte 0x0400010E +_0800B040: .4byte 0x0400012A +_0800B044: .4byte 0x04000120 +_0800B048: .4byte gUnknown_3003210 +_0800B04C: .4byte 0x050003F0 + thumb_func_end sub_0800AFF8 + + thumb_func_start sub_0800B050 +sub_0800B050: @ 0x0800B050 + push {r4, r5, lr} + sub sp, #4 + movs r0, #0xc0 + bl sub_080012A0 + ldr r0, _0800B0B0 + movs r4, #0 + strh r4, [r0] + ldr r2, _0800B0B4 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r1, #0 + strh r0, [r2] + ldrh r0, [r2] + ldr r3, _0800B0B8 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #0x80 + bl sub_08001274 + ldr r0, _0800B0BC + strh r4, [r0] + movs r5, #0 + str r5, [sp] + ldr r1, _0800B0C0 + ldr r2, _0800B0C4 + mov r0, sp + bl CpuSet + ldr r0, _0800B0C8 + strb r4, [r0] + ldr r0, _0800B0CC + strh r5, [r0] + ldr r0, _0800B0D0 + strh r5, [r0] + ldr r0, _0800B0D4 + strb r4, [r0] + ldr r0, _0800B0D8 + strb r4, [r0] + ldr r0, _0800B0DC + strb r4, [r0] + ldr r0, _0800B0E0 + strb r4, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800B0B0: .4byte 0x04000134 +_0800B0B4: .4byte 0x04000128 +_0800B0B8: .4byte 0x00004003 +_0800B0BC: .4byte 0x0400012A +_0800B0C0: .4byte gUnknown_3003210 +_0800B0C4: .4byte 0x050003F0 +_0800B0C8: .4byte gUnknown_3000D6C +_0800B0CC: .4byte gUnknown_3000D6E +_0800B0D0: .4byte gUnknown_3000D70 +_0800B0D4: .4byte gUnknown_3000D72 +_0800B0D8: .4byte gUnknown_3000D73 +_0800B0DC: .4byte gUnknown_3003200 +_0800B0E0: .4byte gUnknown_30041D0 + thumb_func_end sub_0800B050 + + thumb_func_start sub_0800B0E4 +sub_0800B0E4: @ 0x0800B0E4 + push {lr} + bl sub_0800B050 + bl sub_0800AFF8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800B0E4 + + thumb_func_start sub_0800B0F4 +sub_0800B0F4: @ 0x0800B0F4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r0, _0800B110 + ldrb r0, [r0, #1] + cmp r0, #4 + bhi _0800B1A6 + lsls r0, r0, #2 + ldr r1, _0800B114 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800B110: .4byte gUnknown_3003210 +_0800B114: .4byte _0800B118 +_0800B118: @ jump table + .4byte _0800B12C @ case 0 + .4byte _0800B13C @ case 1 + .4byte _0800B154 @ case 2 + .4byte _0800B190 @ case 3 + .4byte _0800B19A @ case 4 +_0800B12C: + bl sub_0800AFF8 + ldr r1, _0800B138 + movs r0, #1 + strb r0, [r1, #1] + b _0800B1A6 + .align 2, 0 +_0800B138: .4byte gUnknown_3003210 +_0800B13C: + ldrb r0, [r4] + cmp r0, #1 + bne _0800B1A6 + bl sub_0800B050 + ldr r1, _0800B150 + movs r0, #2 + strb r0, [r1, #1] + b _0800B1A6 + .align 2, 0 +_0800B150: .4byte gUnknown_3003210 +_0800B154: + ldrb r1, [r4] + cmp r1, #1 + beq _0800B164 + cmp r1, #2 + beq _0800B17C + bl sub_0800B220 + b _0800B1A6 +_0800B164: + ldr r2, _0800B178 + ldrb r0, [r2] + cmp r0, #8 + bne _0800B1A6 + ldrb r0, [r2, #3] + cmp r0, #1 + bls _0800B1A6 + strb r1, [r2, #0xe] + b _0800B1A6 + .align 2, 0 +_0800B178: .4byte gUnknown_3003210 +_0800B17C: + ldr r0, _0800B188 + movs r1, #0 + strb r1, [r0, #1] + ldr r0, _0800B18C + strh r1, [r0] + b _0800B1A6 + .align 2, 0 +_0800B188: .4byte gUnknown_3003210 +_0800B18C: .4byte 0x0400012A +_0800B190: + bl sub_0800B24C + ldr r1, _0800B1E0 + movs r0, #4 + strb r0, [r1, #1] +_0800B19A: + adds r0, r5, #0 + bl sub_0800B27C + adds r0, r6, #0 + bl sub_0800B364 +_0800B1A6: + movs r0, #0 + strb r0, [r4] + ldr r1, _0800B1E0 + ldrb r2, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #2 + orrs r2, r0 + ldrb r0, [r1] + cmp r0, #8 + bne _0800B1BE + movs r0, #0x20 + orrs r2, r0 +_0800B1BE: + ldrb r0, [r1, #0xc] + lsls r3, r0, #8 + ldrb r0, [r1, #0xf] + lsls r4, r0, #9 + ldrb r0, [r1, #0x10] + lsls r5, r0, #0xc + ldrb r0, [r1, #0x11] + lsls r6, r0, #0xd + ldrb r0, [r1, #0x12] + lsls r7, r0, #0xe + ldrb r0, [r1, #1] + cmp r0, #4 + bne _0800B1E4 + movs r0, #0x40 + orrs r0, r3 + orrs r0, r2 + b _0800B1E8 + .align 2, 0 +_0800B1E0: .4byte gUnknown_3003210 +_0800B1E4: + adds r0, r2, #0 + orrs r0, r3 +_0800B1E8: + orrs r0, r4 + orrs r0, r5 + orrs r0, r6 + orrs r0, r7 + adds r2, r0, #0 + ldrb r3, [r1, #0x13] + cmp r3, #1 + bne _0800B1FE + movs r0, #0x80 + lsls r0, r0, #9 + orrs r2, r0 +_0800B1FE: + ldrb r0, [r1, #2] + cmp r0, #3 + bls _0800B20A + movs r0, #0x80 + lsls r0, r0, #0xa + orrs r2, r0 +_0800B20A: + adds r1, r2, #0 + cmp r3, #2 + bne _0800B216 + movs r0, #0x80 + lsls r0, r0, #0xb + orrs r1, r0 +_0800B216: + adds r0, r1, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800B0F4 + + thumb_func_start sub_0800B220 +sub_0800B220: @ 0x0800B220 + push {lr} + ldr r0, _0800B23C + ldr r1, [r0] + movs r0, #0xc + ands r1, r0 + ldr r2, _0800B240 + cmp r1, #8 + bne _0800B244 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _0800B244 + strb r1, [r2] + b _0800B248 + .align 2, 0 +_0800B23C: .4byte 0x04000128 +_0800B240: .4byte gUnknown_3003210 +_0800B244: + movs r0, #0 + strb r0, [r2] +_0800B248: + pop {r0} + bx r0 + thumb_func_end sub_0800B220 + + thumb_func_start sub_0800B24C +sub_0800B24C: @ 0x0800B24C + push {lr} + ldr r0, _0800B270 + ldrb r0, [r0] + cmp r0, #0 + beq _0800B26A + ldr r1, _0800B274 + ldr r2, _0800B278 + adds r0, r2, #0 + strh r0, [r1] + adds r1, #2 + movs r0, #0x41 + strh r0, [r1] + movs r0, #0x40 + bl sub_08001274 +_0800B26A: + pop {r0} + bx r0 + .align 2, 0 +_0800B270: .4byte gUnknown_3003210 +_0800B274: .4byte 0x0400010C +_0800B278: .4byte 0x0000FF3B + thumb_func_end sub_0800B24C + + thumb_func_start sub_0800B27C +sub_0800B27C: @ 0x0800B27C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r3, r0, #0 + ldr r2, _0800B2F4 + ldr r1, _0800B2F8 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + ldr r1, _0800B2FC + ldr r4, _0800B300 + adds r0, r1, r4 + ldrb r4, [r0] + adds r6, r1, #0 + cmp r4, #0x31 + bhi _0800B30C + movs r1, #0xce + lsls r1, r1, #2 + adds r0, r6, r1 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x31 + bls _0800B2BA + subs r0, #0x32 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0800B2BA: + movs r2, #0 + ldr r4, _0800B304 + mov sb, r4 + ldr r1, _0800B308 + mov sl, r1 + lsls r5, r0, #1 + movs r0, #0x18 + adds r0, r0, r6 + mov r8, r0 + mov ip, r2 + movs r7, #0x64 +_0800B2D0: + ldrh r0, [r4] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r4] + adds r0, r2, #0 + muls r0, r7, r0 + adds r0, r5, r0 + add r0, r8 + strh r1, [r0] + mov r1, ip + strh r1, [r3] + adds r3, #2 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0800B2D0 + b _0800B318 + .align 2, 0 +_0800B2F4: .4byte gUnknown_30041D4 +_0800B2F8: .4byte 0x04000208 +_0800B2FC: .4byte gUnknown_3003210 +_0800B300: .4byte 0x00000339 +_0800B304: .4byte gUnknown_3000D6E +_0800B308: .4byte gUnknown_3003200 +_0800B30C: + movs r0, #1 + strb r0, [r6, #0x12] + ldr r2, _0800B350 + mov sb, r2 + ldr r4, _0800B354 + mov sl, r4 +_0800B318: + mov r1, sb + ldrh r0, [r1] + cmp r0, #0 + beq _0800B330 + ldr r2, _0800B358 + adds r0, r6, r2 + ldrb r1, [r0] + adds r1, #1 + movs r2, #0 + strb r1, [r0] + mov r4, sb + strh r2, [r4] +_0800B330: + ldr r1, _0800B35C + ldr r2, _0800B360 + ldrh r0, [r2] + strh r0, [r1] + ldr r4, _0800B358 + adds r0, r6, r4 + ldrb r0, [r0] + mov r1, sl + strb r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B350: .4byte gUnknown_3000D6E +_0800B354: .4byte gUnknown_3003200 +_0800B358: .4byte 0x00000339 +_0800B35C: .4byte 0x04000208 +_0800B360: .4byte gUnknown_30041D4 + thumb_func_end sub_0800B27C + + thumb_func_start sub_0800B364 +sub_0800B364: @ 0x0800B364 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + ldr r2, _0800B3C0 + ldr r1, _0800B3C4 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + ldr r1, _0800B3C8 + ldr r3, _0800B3CC + adds r0, r1, r3 + ldrb r0, [r0] + mov ip, r1 + cmp r0, #0 + bne _0800B3D0 + movs r3, #0 + ldrb r0, [r1, #3] + cmp r3, r0 + bhs _0800B3B6 + movs r5, #0 + adds r6, r0, #0 +_0800B396: + movs r2, #0 + lsls r1, r3, #4 + adds r4, r3, #1 + add r1, sb +_0800B39E: + lsls r0, r2, #1 + adds r0, r0, r1 + strh r5, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0800B39E + lsls r0, r4, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r6 + blo _0800B396 +_0800B3B6: + movs r0, #1 + mov r7, ip + strb r0, [r7, #0xc] + b _0800B44C + .align 2, 0 +_0800B3C0: .4byte gUnknown_30041D4 +_0800B3C4: .4byte 0x04000208 +_0800B3C8: .4byte gUnknown_3003210 +_0800B3CC: .4byte 0x00000FBD +_0800B3D0: + movs r3, #0 + mov r0, ip + ldrb r1, [r0, #3] + cmp r3, r1 + bhs _0800B426 + ldr r0, _0800B464 + add r0, ip + ldrb r0, [r0] + lsls r6, r0, #1 + movs r2, #0xcf + lsls r2, r2, #2 + add r2, ip + mov r8, r2 + mov sl, r1 +_0800B3EC: + movs r2, #0 + lsls r1, r3, #4 + adds r4, r3, #1 + lsls r0, r3, #1 + mov r7, sb + adds r5, r1, r7 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r3 + lsls r3, r0, #5 +_0800B400: + lsls r1, r2, #1 + adds r1, r1, r5 + movs r7, #0x64 + adds r0, r2, #0 + muls r0, r7, r0 + adds r0, r6, r0 + adds r0, r0, r3 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0800B400 + lsls r0, r4, #0x18 + lsrs r3, r0, #0x18 + cmp r3, sl + blo _0800B3EC +_0800B426: + mov r2, ip + ldr r0, _0800B468 + adds r1, r2, r0 + ldrb r0, [r1] + subs r0, #1 + movs r3, #0 + strb r0, [r1] + ldr r1, _0800B464 + adds r2, r2, r1 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x31 + bls _0800B448 + strb r3, [r2] +_0800B448: + mov r2, ip + strb r3, [r2, #0xc] +_0800B44C: + ldr r1, _0800B46C + ldr r3, _0800B470 + ldrh r0, [r3] + strh r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B464: .4byte 0x00000FBC +_0800B468: .4byte 0x00000FBD +_0800B46C: .4byte 0x04000208 +_0800B470: .4byte gUnknown_30041D4 + thumb_func_end sub_0800B364 + + thumb_func_start sub_0800B474 +sub_0800B474: @ 0x0800B474 + push {r4, lr} + ldr r3, _0800B49C + ldrb r4, [r3] + cmp r4, #0 + beq _0800B4B0 + ldrb r0, [r3, #1] + cmp r0, #2 + beq _0800B4AA + cmp r0, #4 + bne _0800B4DA + movs r0, #0xd + ldrsb r0, [r3, r0] + cmp r0, #8 + bgt _0800B4A0 + ldrb r0, [r3, #0x10] + cmp r0, #1 + beq _0800B4AA + movs r0, #1 + strb r0, [r3, #0x13] + b _0800B4DA + .align 2, 0 +_0800B49C: .4byte gUnknown_3003210 +_0800B4A0: + ldrb r0, [r3, #0x13] + cmp r0, #1 + beq _0800B4DA + movs r0, #0 + strb r0, [r3, #0xd] +_0800B4AA: + bl sub_0800B57C + b _0800B4DA +_0800B4B0: + ldrb r2, [r3, #1] + cmp r2, #4 + beq _0800B4BA + cmp r2, #2 + bne _0800B4DA +_0800B4BA: + ldr r1, _0800B4E0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bls _0800B4DA + cmp r2, #4 + bne _0800B4D2 + movs r0, #2 + strb r0, [r3, #0x13] +_0800B4D2: + cmp r2, #2 + bne _0800B4DA + strb r4, [r3, #3] + strb r4, [r3, #0xf] +_0800B4DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B4E0: .4byte gUnknown_3000D6C + thumb_func_end sub_0800B474 + + thumb_func_start sub_0800B4E4 +sub_0800B4E4: @ 0x0800B4E4 + push {lr} + bl sub_0800B854 + bl sub_0800B57C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800B4E4 + + thumb_func_start sub_0800B4F4 +sub_0800B4F4: @ 0x0800B4F4 + push {r4, lr} + ldr r4, _0800B520 + ldr r0, _0800B524 + ldr r1, [r0] + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r4, #2] + ldrb r0, [r4, #1] + cmp r0, #2 + beq _0800B528 + cmp r0, #4 + bne _0800B546 + lsls r0, r1, #0x19 + lsrs r0, r0, #0x1f + strb r0, [r4, #0x10] + bl sub_0800B688 + bl sub_0800B7A0 + bl sub_0800B888 + b _0800B546 + .align 2, 0 +_0800B520: .4byte gUnknown_3003210 +_0800B524: .4byte 0x04000128 +_0800B528: + bl sub_0800B58C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800B546 + ldrb r0, [r4] + cmp r0, #0 + beq _0800B542 + movs r0, #3 + strb r0, [r4, #1] + movs r0, #8 + strb r0, [r4, #0xd] + b _0800B546 +_0800B542: + movs r0, #4 + strb r0, [r4, #1] +_0800B546: + ldr r3, _0800B56C + ldrb r0, [r3, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r3, #0xd] + ldr r1, _0800B570 + strb r2, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #8 + bne _0800B566 + ldr r0, _0800B574 + ldr r2, _0800B578 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] +_0800B566: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B56C: .4byte gUnknown_3003210 +_0800B570: .4byte gUnknown_3000D6C +_0800B574: .4byte gUnknown_30041D0 +_0800B578: .4byte 0x00000FBD + thumb_func_end sub_0800B4F4 + + thumb_func_start sub_0800B57C +sub_0800B57C: @ 0x0800B57C + ldr r0, _0800B588 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_0800B588: .4byte 0x04000128 + thumb_func_end sub_0800B57C + + thumb_func_start sub_0800B58C +sub_0800B58C: @ 0x0800B58C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r5, #0 + ldr r6, _0800B5A8 + ldr r0, _0800B5AC + ldrb r1, [r0, #0xe] + adds r7, r0, #0 + cmp r1, #1 + bne _0800B5B8 + ldr r1, _0800B5B0 + ldr r2, _0800B5B4 + b _0800B5BC + .align 2, 0 +_0800B5A8: .4byte 0x0000FFFF +_0800B5AC: .4byte gUnknown_3003210 +_0800B5B0: .4byte 0x0400012A +_0800B5B4: .4byte 0x00008FFF +_0800B5B8: + ldr r1, _0800B610 + ldr r2, _0800B614 +_0800B5BC: + adds r0, r2, #0 + strh r0, [r1] + ldr r2, _0800B618 + ldr r3, _0800B61C + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [r2] + str r1, [r2, #4] + movs r0, #0 + movs r1, #0 + str r0, [r3] + str r1, [r3, #4] + strb r0, [r2, #0xa] + movs r4, #0 + ldr r0, _0800B620 + mov sb, r0 + mov r8, r2 + ldr r2, _0800B624 + ldr r1, _0800B628 + mov ip, r1 +_0800B5E4: + lsls r0, r4, #1 + add r0, r8 + ldrh r3, [r0] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + ldr r1, _0800B614 + cmp r0, r1 + beq _0800B5FC + adds r0, r3, #0 + cmp r0, r2 + bne _0800B62C +_0800B5FC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r3, #0 + cmp r6, r0 + bls _0800B634 + cmp r0, #0 + beq _0800B634 + adds r6, r3, #0 + b _0800B634 + .align 2, 0 +_0800B610: .4byte 0x0400012A +_0800B614: .4byte 0x0000B9A0 +_0800B618: .4byte gUnknown_3003214 +_0800B61C: .4byte 0x04000120 +_0800B620: .4byte gUnknown_3000D73 +_0800B624: .4byte 0x00008FFF +_0800B628: .4byte 0x0000FFFF +_0800B62C: + cmp r0, ip + beq _0800B63E + movs r5, #0 + b _0800B63E +_0800B634: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800B5E4 +_0800B63E: + strb r5, [r7, #3] + adds r0, r5, #0 + cmp r0, #1 + bls _0800B66E + mov r2, sb + ldrb r2, [r2] + cmp r0, r2 + bne _0800B660 + ldrh r1, [r7, #4] + ldr r0, _0800B65C + cmp r1, r0 + bne _0800B660 + movs r0, #1 + b _0800B67A + .align 2, 0 +_0800B65C: .4byte 0x00008FFF +_0800B660: + ldrb r0, [r7, #3] + cmp r0, #1 + bls _0800B66E + movs r0, #3 + ands r6, r0 + adds r0, r6, #1 + b _0800B670 +_0800B66E: + movs r0, #0 +_0800B670: + strb r0, [r7, #0xf] + ldrb r0, [r7, #3] + mov r1, sb + strb r0, [r1] + movs r0, #0 +_0800B67A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800B58C + + thumb_func_start sub_0800B688 +sub_0800B688: @ 0x0800B688 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r0, _0800B6E0 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0800B6E4 + ldrb r1, [r0, #0x16] + adds r6, r0, #0 + cmp r1, #0 + bne _0800B6EC + movs r4, #0 + ldr r7, _0800B6E8 + ldrb r0, [r6, #3] + cmp r4, r0 + bhs _0800B6D6 + adds r5, r6, #0 + ldrh r1, [r6, #0x14] + adds r3, r7, #0 + adds r2, r6, #0 +_0800B6B6: + lsls r0, r4, #1 + add r0, sp + ldrh r0, [r0] + cmp r1, r0 + beq _0800B6CA + ldrb r0, [r3] + cmp r0, #0 + beq _0800B6CA + movs r0, #1 + strb r0, [r5, #0x11] +_0800B6CA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r2, #3] + cmp r4, r0 + blo _0800B6B6 +_0800B6D6: + movs r0, #0 + strh r0, [r6, #0x14] + movs r0, #1 + strb r0, [r7] + b _0800B78C + .align 2, 0 +_0800B6E0: .4byte 0x04000120 +_0800B6E4: .4byte gUnknown_3003210 +_0800B6E8: .4byte gUnknown_3000D72 +_0800B6EC: + ldr r2, _0800B75C + adds r1, r6, r2 + adds r2, #1 + adds r0, r6, r2 + ldrb r2, [r0] + ldrb r1, [r1] + adds r0, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x31 + bls _0800B708 + subs r0, #0x32 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0800B708: + cmp r2, #0x31 + bhi _0800B764 + movs r4, #0 + ldrb r1, [r6, #3] + cmp r4, r1 + bhs _0800B768 + adds r5, r6, #0 + ldr r7, _0800B760 + lsls r0, r0, #1 + mov ip, r0 + movs r2, #0xcf + lsls r2, r2, #2 + adds r2, r2, r6 + mov r8, r2 +_0800B724: + 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, r0 + add r0, ip + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r4 + lsls r1, r1, #5 + adds r0, r0, r1 + add r0, r8 + strh r3, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5, #3] + cmp r4, r0 + blo _0800B724 + b _0800B768 + .align 2, 0 +_0800B75C: .4byte 0x00000FBC +_0800B760: .4byte gUnknown_3000D70 +_0800B764: + movs r0, #2 + strb r0, [r6, #0x12] +_0800B768: + ldrb r0, [r6, #0x17] + adds r0, #1 + strb r0, [r6, #0x17] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _0800B78C + ldr r2, _0800B798 + ldrh r0, [r2] + cmp r0, #0 + beq _0800B78C + ldr r1, _0800B79C + adds r0, r6, r1 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + movs r0, #0 + strh r0, [r2] +_0800B78C: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B798: .4byte gUnknown_3000D70 +_0800B79C: .4byte 0x00000FBD + thumb_func_end sub_0800B688 + + thumb_func_start sub_0800B7A0 +sub_0800B7A0: @ 0x0800B7A0 + push {r4, lr} + ldr r0, _0800B7DC + ldrb r1, [r0, #0x16] + adds r4, r0, #0 + cmp r1, #8 + bne _0800B7F2 + ldr r1, _0800B7E0 + ldrh r0, [r4, #0x14] + strh r0, [r1] + ldr r1, _0800B7E4 + ldrb r2, [r1] + cmp r2, #0 + bne _0800B7EC + ldr r0, _0800B7E8 + adds r1, r4, r0 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + movs r0, #0xce + lsls r0, r0, #2 + adds r1, r4, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x31 + bls _0800B848 + strb r2, [r1] + b _0800B848 + .align 2, 0 +_0800B7DC: .4byte gUnknown_3003210 +_0800B7E0: .4byte 0x0400012A +_0800B7E4: .4byte gUnknown_3000D6D +_0800B7E8: .4byte 0x00000339 +_0800B7EC: + movs r0, #0 + strb r0, [r1] + b _0800B848 +_0800B7F2: + ldr r1, _0800B818 + ldrb r0, [r1] + cmp r0, #0 + bne _0800B80E + ldr r2, _0800B81C + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0800B808 + movs r0, #1 + strb r0, [r1] +_0800B808: + ldrb r0, [r1] + cmp r0, #0 + beq _0800B824 +_0800B80E: + ldr r1, _0800B820 + movs r0, #0 + strh r0, [r1] + b _0800B842 + .align 2, 0 +_0800B818: .4byte gUnknown_3000D6D +_0800B81C: .4byte 0x00000339 +_0800B820: .4byte 0x0400012A +_0800B824: + ldr r3, _0800B850 + movs r1, #0xce + lsls r1, r1, #2 + adds r0, r4, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + ldrb r2, [r4, #0x16] + movs r1, #0x64 + muls r1, r2, r1 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x18 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3] +_0800B842: + ldrb r0, [r4, #0x16] + adds r0, #1 + strb r0, [r4, #0x16] +_0800B848: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800B850: .4byte 0x0400012A + thumb_func_end sub_0800B7A0 + + thumb_func_start sub_0800B854 +sub_0800B854: @ 0x0800B854 + push {lr} + ldr r0, _0800B874 + ldrb r0, [r0] + cmp r0, #0 + beq _0800B870 + ldr r2, _0800B878 + ldrh r1, [r2] + ldr r0, _0800B87C + ands r0, r1 + strh r0, [r2] + ldr r1, _0800B880 + ldr r2, _0800B884 + adds r0, r2, #0 + strh r0, [r1] +_0800B870: + pop {r0} + bx r0 + .align 2, 0 +_0800B874: .4byte gUnknown_3003210 +_0800B878: .4byte 0x0400010E +_0800B87C: .4byte 0x0000FF7F +_0800B880: .4byte 0x0400010C +_0800B884: .4byte 0x0000FF3B + thumb_func_end sub_0800B854 + + thumb_func_start sub_0800B888 +sub_0800B888: @ 0x0800B888 + push {lr} + ldr r1, _0800B89C + ldrb r0, [r1, #0x17] + cmp r0, #8 + bne _0800B8A0 + movs r0, #0 + strb r0, [r1, #0x16] + strb r0, [r1, #0x17] + b _0800B8B0 + .align 2, 0 +_0800B89C: .4byte gUnknown_3003210 +_0800B8A0: + ldrb r0, [r1] + cmp r0, #0 + beq _0800B8B0 + ldr r0, _0800B8B4 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] +_0800B8B0: + pop {r0} + bx r0 + .align 2, 0 +_0800B8B4: .4byte 0x0400010E + thumb_func_end sub_0800B888 + + thumb_func_start sub_0800B8B8 +sub_0800B8B8: @ 0x0800B8B8 + push {r4, r5, r6, lr} + ldr r1, _0800B900 + ldr r2, _0800B904 + adds r0, r1, r2 + movs r2, #0 + strb r2, [r0] + movs r3, #0xce + lsls r3, r3, #2 + adds r0, r1, r3 + strb r2, [r0] + movs r0, #0 + movs r6, #0x64 + adds r5, r1, #0 + adds r5, #0x18 + ldr r4, _0800B908 +_0800B8D6: + movs r2, #0 + adds r1, r0, #1 + adds r3, r0, #0 + muls r3, r6, r3 +_0800B8DE: + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r5 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x31 + bls _0800B8DE + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _0800B8D6 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800B900: .4byte gUnknown_3003210 +_0800B904: .4byte 0x00000339 +_0800B908: .4byte 0x0000EFFF + thumb_func_end sub_0800B8B8 + + thumb_func_start sub_0800B90C +sub_0800B90C: @ 0x0800B90C + push {r4, r5, r6, r7, lr} + ldr r1, _0800B96C + ldr r2, _0800B970 + adds r0, r1, r2 + movs r2, #0 + strb r2, [r0] + ldr r3, _0800B974 + adds r0, r1, r3 + strb r2, [r0] + movs r0, #0x64 + mov ip, r0 + movs r3, #0xcf + lsls r3, r3, #2 + adds r7, r1, r3 + ldr r6, _0800B978 +_0800B92A: + movs r3, #0 + lsls r0, r2, #1 + adds r5, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r2 + lsls r4, r0, #5 +_0800B938: + movs r2, #0 + adds r1, r3, #1 + mov r0, ip + muls r0, r3, r0 + adds r3, r0, #0 +_0800B942: + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r4 + adds r0, r0, r7 + strh r6, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x31 + bls _0800B942 + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #7 + bls _0800B938 + lsls r0, r5, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0800B92A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800B96C: .4byte gUnknown_3003210 +_0800B970: .4byte 0x00000FBD +_0800B974: .4byte 0x00000FBC +_0800B978: .4byte 0x0000EFFF + thumb_func_end sub_0800B90C + + thumb_func_start sub_0800B97C +sub_0800B97C: @ 0x0800B97C + push {r4, lr} + bl rfu_REQBN_softReset_and_checkID + adds r4, r0, #0 + ldr r0, _0800B9C0 + cmp r4, r0 + bne _0800B990 + ldr r1, _0800B9C4 + movs r0, #1 + strb r0, [r1, #8] +_0800B990: + ldr r0, _0800B9C4 + ldrb r2, [r0, #4] + adds r1, r0, #0 + cmp r2, #0x17 + beq _0800B9A4 + cmp r2, #1 + beq _0800B9A4 + movs r0, #0 + strb r0, [r1, #5] + strb r0, [r1, #4] +_0800B9A4: + movs r0, #0 + strb r0, [r1, #7] + strb r0, [r1, #0xd] + strb r0, [r1, #1] + strb r0, [r1] + movs r0, #0xff + strb r0, [r1, #6] + bl sub_0800D0CC + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800B9C0: .4byte 0x00008001 +_0800B9C4: .4byte gUnknown_30041E0 + thumb_func_end sub_0800B97C + + thumb_func_start sub_0800B9C8 +sub_0800B9C8: @ 0x0800B9C8 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0800B9E8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + bne _0800B9F0 + ldr r0, _0800B9EC + ldrb r0, [r0, #2] + movs r2, #0 + cmp r0, #1 + bne _0800B9F8 + movs r2, #1 + b _0800B9F8 + .align 2, 0 +_0800B9E8: .4byte gUnknown_3007630 +_0800B9EC: .4byte gUnknown_30041E0 +_0800B9F0: + ldr r0, _0800BA04 + ldrb r1, [r0, #3] + movs r1, #0 + strb r1, [r0, #3] +_0800B9F8: + adds r0, r2, #0 + bl rfu_REQ_sendData + pop {r0} + bx r0 + .align 2, 0 +_0800BA04: .4byte gUnknown_30041E0 + thumb_func_end sub_0800B9C8 + + thumb_func_start sub_0800BA08 +sub_0800BA08: @ 0x0800BA08 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + cmp r5, #0 + beq _0800BA50 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r4, _0800BA40 + ldr r2, _0800BA44 + mov r0, sp + adds r1, r4, #0 + bl CpuSet + movs r0, #0xff + strb r0, [r4, #6] + str r5, [r4, #0x40] + str r6, [r4, #0x44] + ldr r0, _0800BA48 + bl rfu_setMSCCallback + ldr r0, _0800BA4C + bl rfu_setREQCallback + movs r0, #0 + b _0800BA52 + .align 2, 0 +_0800BA40: .4byte gUnknown_30041E0 +_0800BA44: .4byte 0x01000024 +_0800BA48: .4byte sub_0800C96C +_0800BA4C: .4byte sub_0800C270 +_0800BA50: + movs r0, #4 +_0800BA52: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800BA08 + + thumb_func_start sub_0800BA5C +sub_0800BA5C: @ 0x0800BA5C + push {r4, lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r4, _0800BA80 + ldr r2, _0800BA84 + mov r0, sp + adds r1, r4, #0 + bl CpuSet + movs r0, #0xff + strb r0, [r4, #6] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800BA80: .4byte gUnknown_30041E0 +_0800BA84: .4byte 0x01000020 + thumb_func_end sub_0800BA5C + + thumb_func_start sub_0800BA88 +sub_0800BA88: @ 0x0800BA88 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800BABC + ldr r1, _0800BAB8 + movs r2, #1 + strb r2, [r1, #4] + movs r0, #2 + strb r0, [r1, #5] + str r4, [r1, #0x3c] + ldrb r0, [r4, #0x11] + strb r0, [r1, #9] + ldrh r0, [r4, #0x12] + strh r0, [r1, #0x32] + ldrh r0, [r4, #0x14] + strh r0, [r1, #0x18] + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0800BAB0 + strb r2, [r1, #0xb] +_0800BAB0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800BAB8: .4byte gUnknown_30041E0 + thumb_func_end sub_0800BA88 + + thumb_func_start sub_0800BABC +sub_0800BABC: @ 0x0800BABC + push {r4, r5, lr} + ldr r2, _0800BB00 + movs r0, #0 + strb r0, [r2, #5] + strb r0, [r2, #4] + movs r1, #0xff + strb r1, [r2, #6] + strb r0, [r2, #7] + 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 +_0800BAE4: + lsls r1, r3, #1 + adds r0, r1, r5 + strh r4, [r0] + adds r1, r1, r2 + strh r4, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800BAE4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800BB00: .4byte gUnknown_30041E0 + thumb_func_end sub_0800BABC + + thumb_func_start sub_0800BB04 +sub_0800BB04: @ 0x0800BB04 + ldr r1, _0800BB0C + movs r0, #0x15 + strb r0, [r1, #4] + bx lr + .align 2, 0 +_0800BB0C: .4byte gUnknown_30041E0 + thumb_func_end sub_0800BB04 + + thumb_func_start sub_0800BB10 +sub_0800BB10: @ 0x0800BB10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + ldr r1, _0800BB48 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0800BB4C + cmp r0, #8 + bne _0800BB36 + cmp r5, #1 + beq _0800BB4C +_0800BB36: + movs r0, #1 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #1 + b _0800BBDE + .align 2, 0 +_0800BB48: .4byte gUnknown_30041E0 +_0800BB4C: + bl rfu_getMasterSlave + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800BB6C + ldr r1, _0800BB68 + movs r0, #2 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #2 + b _0800BBDE + .align 2, 0 +_0800BB68: .4byte gUnknown_30041E0 +_0800BB6C: + movs r2, #0 + ldrh r0, [r6] + ldr r4, _0800BBA0 + adds r1, r6, #2 + ldr r3, _0800BBA4 + cmp r0, r4 + beq _0800BB8C +_0800BB7A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bhi _0800BB8C + ldrh r0, [r1] + adds r1, #2 + cmp r0, r4 + bne _0800BB7A +_0800BB8C: + cmp r2, #0x10 + bne _0800BBA8 + movs r0, #4 + strh r0, [r3, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #4 + b _0800BBDE + .align 2, 0 +_0800BBA0: .4byte 0x0000FFFF +_0800BBA4: .4byte gUnknown_30041E0 +_0800BBA8: + cmp r5, #1 + bls _0800BBB6 + movs r0, #1 + strb r0, [r3, #7] + movs r5, #1 + movs r7, #0 + b _0800BBBA +_0800BBB6: + movs r0, #0 + strb r0, [r3, #7] +_0800BBBA: + cmp r5, #0 + beq _0800BBC4 + movs r0, #5 + strb r0, [r3, #4] + b _0800BBD2 +_0800BBC4: + movs r0, #9 + strb r0, [r3, #4] + ldrb r0, [r3, #0xb] + cmp r0, #0 + beq _0800BBD2 + movs r0, #2 + strb r0, [r3, #0xb] +_0800BBD2: + strb r5, [r3, #6] + strh r7, [r3, #0x1a] + mov r0, r8 + strh r0, [r3, #0x26] + str r6, [r3, #0x20] + movs r0, #0 +_0800BBDE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0800BB10 + + thumb_func_start sub_0800BBE8 +sub_0800BBE8: @ 0x0800BBE8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + ldr r1, _0800BC1C + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0800BC20 + subs r0, #9 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _0800BC20 + movs r0, #1 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #1 + b _0800BCC0 + .align 2, 0 +_0800BC1C: .4byte gUnknown_30041E0 +_0800BC20: + bl rfu_getMasterSlave + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800BC40 + ldr r1, _0800BC3C + movs r0, #2 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #2 + b _0800BCC0 + .align 2, 0 +_0800BC3C: .4byte gUnknown_30041E0 +_0800BC40: + movs r2, #0 + ldr r0, _0800BC8C + ldr r1, [r0] + ldrb r3, [r1, #8] + ldr r5, _0800BC90 + adds r7, r0, #0 + cmp r2, r3 + bhs _0800BC6E + ldrh r0, [r1, #0x14] + cmp r0, r6 + beq _0800BC6E + adds r4, r1, #0 + adds r1, r3, #0 +_0800BC5A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + bhs _0800BC6E + lsls r0, r2, #5 + adds r0, r4, r0 + ldrh r0, [r0, #0x14] + cmp r0, r6 + bne _0800BC5A +_0800BC6E: + ldr r0, [r7] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0800BC7A + cmp r2, r0 + bne _0800BC94 +_0800BC7A: + movs r0, #3 + strh r0, [r5, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #3 + b _0800BCC0 + .align 2, 0 +_0800BC8C: .4byte gUnknown_3007630 +_0800BC90: .4byte gUnknown_30041E0 +_0800BC94: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0800BC9E + cmp r0, #9 + bne _0800BCA6 +_0800BC9E: + movs r0, #0xc + strb r0, [r5, #4] + movs r0, #0xd + b _0800BCAC +_0800BCA6: + movs r0, #0xb + strb r0, [r5, #4] + movs r0, #0xc +_0800BCAC: + strb r0, [r5, #5] + strh r6, [r5, #0x1e] + mov r0, r8 + strh r0, [r5, #0x1a] + ldrb r0, [r5, #7] + cmp r0, #0 + beq _0800BCBE + movs r0, #7 + strb r0, [r5, #7] +_0800BCBE: + movs r0, #0 +_0800BCC0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800BBE8 + + thumb_func_start sub_0800BCCC +sub_0800BCCC: @ 0x0800BCCC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r6, _0800BD30 + adds r3, r6, #0 + adds r3, #0x30 + ldrb r2, [r3] + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _0800BD28 + adds r0, r2, #0 + bics r0, r1 + strb r0, [r3] + movs r4, #0 + ldr r7, _0800BD34 + movs r5, #1 + adds r3, #4 + movs r2, #0 +_0800BCF2: + adds r0, r1, #0 + asrs r0, r4 + ands r0, r5 + cmp r0, #0 + beq _0800BD02 + lsls r0, r4, #1 + adds r0, r0, r3 + strh r2, [r0] +_0800BD02: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800BCF2 + ldr r0, [r7] + ldrb r4, [r0, #3] + ands r4, r1 + cmp r4, #0 + beq _0800BD1C + adds r0, r4, #0 + bl sub_0800CDF0 +_0800BD1C: + ldr r0, _0800BD30 + strh r4, [r0, #0x14] + movs r0, #0x33 + adds r1, r4, #0 + bl sub_0800CDC8 +_0800BD28: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800BD30: .4byte gUnknown_30041E0 +_0800BD34: .4byte gUnknown_3007630 + thumb_func_end sub_0800BCCC + + thumb_func_start sub_0800BD38 +sub_0800BD38: @ 0x0800BD38 + push {r4, r5, lr} + lsls r0, r0, #0x18 + movs r2, #0 + ldr r1, _0800BD54 + strb r2, [r1, #7] + adds r5, r1, #0 + cmp r0, #0 + beq _0800BD58 + bl sub_0800BABC + movs r0, #0x17 + strb r0, [r5, #4] + b _0800BE22 + .align 2, 0 +_0800BD54: .4byte gUnknown_30041E0 +_0800BD58: + ldrb r0, [r5, #4] + subs r0, #5 + cmp r0, #0xd + bhi _0800BE0E + lsls r0, r0, #2 + ldr r1, _0800BD6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800BD6C: .4byte _0800BD70 +_0800BD70: @ jump table + .4byte _0800BDA8 @ case 0 + .4byte _0800BDB4 @ case 1 + .4byte _0800BDB4 @ case 2 + .4byte _0800BE14 @ case 3 + .4byte _0800BDBE @ case 4 + .4byte _0800BDC8 @ case 5 + .4byte _0800BDC8 @ case 6 + .4byte _0800BDD2 @ case 7 + .4byte _0800BDDC @ case 8 + .4byte _0800BDDC @ case 9 + .4byte _0800BE14 @ case 10 + .4byte _0800BDE2 @ case 11 + .4byte _0800BE08 @ case 12 + .4byte _0800BE08 @ case 13 +_0800BDA8: + movs r1, #0 + movs r0, #8 + strb r0, [r5, #4] + strb r1, [r5, #5] + movs r2, #0x13 + b _0800BE14 +_0800BDB4: + movs r0, #7 + strb r0, [r5, #4] + movs r0, #8 + strb r0, [r5, #5] + b _0800BE14 +_0800BDBE: + movs r0, #0 + strb r0, [r5, #5] + strb r0, [r5, #4] + movs r2, #0x21 + b _0800BE14 +_0800BDC8: + movs r1, #0 + movs r0, #0xb + strb r0, [r5, #4] + strb r1, [r5, #5] + b _0800BE14 +_0800BDD2: + movs r0, #0 + strb r0, [r5, #5] + strb r0, [r5, #4] + movs r2, #0x23 + b _0800BE14 +_0800BDDC: + movs r0, #0xe + strb r0, [r5, #4] + b _0800BE14 +_0800BDE2: + ldrb r0, [r5, #0x11] + strb r0, [r5, #4] + ldrb r0, [r5, #0x12] + strb r0, [r5, #5] + ldr r4, _0800BE04 + ldr r0, [r4] + ldrb r0, [r0, #3] + bl sub_0800CDF0 + ldr r0, [r4] + ldrb r0, [r0, #3] + strh r0, [r5, #0x14] + movs r0, #0x33 + movs r1, #1 + bl sub_0800CDC8 + b _0800BE22 + .align 2, 0 +_0800BE04: .4byte gUnknown_3007630 +_0800BE08: + movs r0, #0x12 + strb r0, [r5, #4] + b _0800BE14 +_0800BE0E: + strb r2, [r5, #5] + strb r2, [r5, #4] + movs r2, #0x43 +_0800BE14: + ldrb r0, [r5, #4] + cmp r0, #0 + bne _0800BE22 + adds r0, r2, #0 + movs r1, #0 + bl sub_0800CDC8 +_0800BE22: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0800BD38 + + thumb_func_start sub_0800BE28 +sub_0800BE28: @ 0x0800BE28 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + mov r8, r1 + mov r5, sp + adds r5, #1 + mov r4, sp + adds r4, #2 + mov r1, sp + adds r2, r5, #0 + adds r3, r4, #0 + bl rfu_REQBN_watchLink + mov r0, sp + ldrb r0, [r0] + adds r7, r4, #0 + cmp r0, #0 + beq _0800BEFA + ldr r1, _0800BEC4 + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, #0x14] + ldrb r0, [r5] + strh r0, [r1, #0x16] + ldrb r0, [r1, #9] + adds r6, r1, #0 + cmp r0, #0 + beq _0800BEE2 + movs r0, #1 + strb r0, [r6, #0xa] + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0800BE7E + ldrb r0, [r5] + cmp r0, #0 + bne _0800BE7E + movs r0, #4 + strb r0, [r6, #0xa] +_0800BE7E: + ldrb r0, [r6, #0xa] + cmp r0, #1 + bne _0800BEC8 + movs r2, #0 + mov r4, sp + movs r5, #1 + mov ip, r6 + mov r3, ip + adds r3, #0x30 + movs r6, #0x34 + add r6, ip + mov sb, r6 +_0800BE96: + ldrb r0, [r4] + asrs r0, r2 + ands r0, r5 + cmp r0, #0 + beq _0800BEB4 + adds r0, r5, #0 + lsls r0, r2 + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + lsls r0, r2, #1 + add r0, sb + mov r6, ip + ldrh r1, [r6, #0x32] + strh r1, [r0] +_0800BEB4: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0800BE96 + movs r0, #0x31 + b _0800BEDA + .align 2, 0 +_0800BEC4: .4byte gUnknown_30041E0 +_0800BEC8: + movs r0, #0 + strb r0, [r6, #0xa] + mov r0, sp + ldrb r0, [r0] + bl sub_0800CDF0 + movs r0, #1 + mov r8, r0 + movs r0, #0x33 +_0800BEDA: + movs r1, #1 + bl sub_0800CDC8 + b _0800BEF6 +_0800BEE2: + mov r0, sp + ldrb r0, [r0] + bl sub_0800CDF0 + movs r1, #1 + mov r8, r1 + movs r0, #0x30 + movs r1, #2 + bl sub_0800CDC8 +_0800BEF6: + bl sub_0800D0CC +_0800BEFA: + ldr r0, _0800BFE4 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _0800BFD4 + ldrb r0, [r7] + cmp r0, #0 + beq _0800BF58 + movs r2, #0 + ldr r6, _0800BFE8 + movs r3, #1 + adds r4, r6, #0 + adds r4, #0x34 + adds r6, #0x30 + adds r5, r7, #0 +_0800BF18: + ldrb r0, [r6] + asrs r0, r2 + ands r0, r3 + cmp r0, #0 + beq _0800BF34 + ldrb r0, [r5] + asrs r0, r2 + ands r0, r3 + cmp r0, #0 + beq _0800BF34 + lsls r0, r2, #1 + adds r0, r0, r4 + movs r1, #0 + strh r1, [r0] +_0800BF34: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0800BF18 + ldr r3, _0800BFE8 + 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, #1 + bl sub_0800CDC8 +_0800BF58: + ldr r0, _0800BFE8 + adds r3, r0, #0 + adds r3, #0x30 + ldrb r1, [r3] + adds r6, r0, #0 + cmp r1, #0 + beq _0800BFD0 + movs r4, #0 + movs r2, #0 + movs r5, #1 +_0800BF6C: + ldrb r0, [r3] + asrs r0, r2 + ands r0, r5 + cmp r0, #0 + beq _0800BF9E + lsls r1, r2, #1 + adds r0, r6, #0 + adds r0, #0x34 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _0800BF9E + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0800BF9E + adds r0, r5, #0 + lsls r0, r2 + ldrb r1, [r3] + bics r1, r0 + strb r1, [r3] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0800BF9E: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0800BF6C + cmp r4, #0 + beq _0800BFC2 + adds r0, r4, #0 + bl sub_0800CDF0 + movs r6, #1 + mov r8, r6 + ldr r0, _0800BFE8 + strh r4, [r0, #0x14] + movs r0, #0x33 + movs r1, #1 + bl sub_0800CDC8 +_0800BFC2: + ldr r0, _0800BFE8 + adds r1, r0, #0 + adds r1, #0x30 + ldrb r1, [r1] + adds r6, r0, #0 + cmp r1, #0 + bne _0800BFD4 +_0800BFD0: + movs r0, #0 + strb r0, [r6, #0xa] +_0800BFD4: + mov r0, r8 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800BFE4: .4byte gUnknown_3007630 +_0800BFE8: .4byte gUnknown_30041E0 + thumb_func_end sub_0800BE28 + + thumb_func_start sub_0800BFEC +sub_0800BFEC: @ 0x0800BFEC + push {lr} + bl rfu_syncVBlank + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C004 + movs r0, #0xf1 + movs r1, #0 + bl sub_0800CDC8 + bl sub_0800D0CC +_0800C004: + pop {r0} + bx r0 + thumb_func_end sub_0800BFEC + + thumb_func_start sub_0800C008 +sub_0800C008: @ 0x0800C008 + push {r4, lr} + adds r3, r0, #0 + ldr r1, _0800C020 + ldr r2, [r1, #0x40] + cmp r2, #0 + bne _0800C024 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0800C024 + strb r2, [r1, #4] + b _0800C1F2 + .align 2, 0 +_0800C020: .4byte gUnknown_30041E0 +_0800C024: + ldr r0, _0800C058 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0800C032 + adds r0, r3, #0 + bl sub_0800C200 +_0800C032: + ldr r4, _0800C058 + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0800C03C + b _0800C1BC +_0800C03C: + bl rfu_waitREQComplete + movs r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #4] + subs r0, #1 + cmp r0, #0x16 + bls _0800C04E + b _0800C1B2 +_0800C04E: + lsls r0, r0, #2 + ldr r1, _0800C05C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800C058: .4byte gUnknown_30041E0 +_0800C05C: .4byte _0800C060 +_0800C060: @ jump table + .4byte _0800C0E0 @ case 0 + .4byte _0800C118 @ case 1 + .4byte _0800C11E @ case 2 + .4byte _0800C134 @ case 3 + .4byte _0800C14C @ case 4 + .4byte _0800C152 @ case 5 + .4byte _0800C158 @ case 6 + .4byte _0800C1B2 @ case 7 + .4byte _0800C15E @ case 8 + .4byte _0800C164 @ case 9 + .4byte _0800C16A @ case 10 + .4byte _0800C170 @ case 11 + .4byte _0800C180 @ case 12 + .4byte _0800C186 @ case 13 + .4byte _0800C1B2 @ case 14 + .4byte _0800C18C @ case 15 + .4byte _0800C19C @ case 16 + .4byte _0800C1A2 @ case 17 + .4byte _0800C1A8 @ case 18 + .4byte _0800C1B2 @ case 19 + .4byte _0800C1AE @ case 20 + .4byte _0800C1B2 @ case 21 + .4byte _0800C0BC @ case 22 +_0800C0BC: + bl sub_0800B97C + ldr r1, _0800C0D8 + movs r2, #0xff + cmp r0, r1 + bne _0800C0CA + movs r2, #0x44 +_0800C0CA: + ldr r1, _0800C0DC + movs r0, #0 + strb r0, [r1, #5] + strb r0, [r1, #4] + adds r0, r2, #0 + b _0800C10A + .align 2, 0 +_0800C0D8: .4byte 0x00008001 +_0800C0DC: .4byte gUnknown_30041E0 +_0800C0E0: + bl sub_0800B97C + ldr r1, _0800C0F8 + cmp r0, r1 + bne _0800C100 + ldr r0, _0800C0FC + ldrb r1, [r0, #5] + strb r1, [r0, #4] + movs r1, #3 + strb r1, [r0, #5] + b _0800C1B2 + .align 2, 0 +_0800C0F8: .4byte 0x00008001 +_0800C0FC: .4byte gUnknown_30041E0 +_0800C100: + ldr r1, _0800C114 + movs r0, #0 + strb r0, [r1, #5] + strb r0, [r1, #4] + movs r0, #0xff +_0800C10A: + movs r1, #0 + bl sub_0800CDC8 + b _0800C1B2 + .align 2, 0 +_0800C114: .4byte gUnknown_30041E0 +_0800C118: + bl rfu_REQ_reset + b _0800C1B2 +_0800C11E: + ldr r0, _0800C130 + ldr r2, [r0, #0x3c] + ldrh r0, [r2, #2] + ldrb r1, [r2] + ldrb r2, [r2, #1] + bl rfu_REQ_configSystem + b _0800C1B2 + .align 2, 0 +_0800C130: .4byte gUnknown_30041E0 +_0800C134: + ldr r0, _0800C148 + ldr r3, [r0, #0x3c] + ldrb r0, [r3, #4] + ldrh r1, [r3, #6] + ldr r2, [r3, #8] + ldr r3, [r3, #0xc] + bl rfu_REQ_configGameData + b _0800C1B2 + .align 2, 0 +_0800C148: .4byte gUnknown_30041E0 +_0800C14C: + bl rfu_REQ_startSearchChild + b _0800C1B2 +_0800C152: + bl rfu_REQ_pollSearchChild + b _0800C1B2 +_0800C158: + bl rfu_REQ_endSearchChild + b _0800C1B2 +_0800C15E: + bl rfu_REQ_startSearchParent + b _0800C1B2 +_0800C164: + bl rfu_REQ_pollSearchParent + b _0800C1B2 +_0800C16A: + bl rfu_REQ_endSearchParent + b _0800C1B2 +_0800C170: + ldr r0, _0800C17C + ldrh r0, [r0, #0x1e] + bl rfu_REQ_startConnectParent + b _0800C1B2 + .align 2, 0 +_0800C17C: .4byte gUnknown_30041E0 +_0800C180: + bl rfu_REQ_pollConnectParent + b _0800C1B2 +_0800C186: + bl rfu_REQ_endConnectParent + b _0800C1B2 +_0800C18C: + ldr r0, _0800C198 + ldr r0, [r0] + ldrb r0, [r0, #3] + bl rfu_REQ_CHILD_startConnectRecovery + b _0800C1B2 + .align 2, 0 +_0800C198: .4byte gUnknown_3007630 +_0800C19C: + bl rfu_REQ_CHILD_pollConnectRecovery + b _0800C1B2 +_0800C1A2: + bl rfu_REQ_CHILD_endConnectRecovery + b _0800C1B2 +_0800C1A8: + bl rfu_REQ_changeMasterSlave + b _0800C1B2 +_0800C1AE: + bl rfu_REQ_stopMode +_0800C1B2: + bl rfu_waitREQComplete + ldr r1, _0800C1F8 + movs r0, #0 + strb r0, [r1, #0xe] +_0800C1BC: + ldr r0, _0800C1F8 + ldrb r0, [r0, #4] + subs r0, #0x12 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0800C1CC + b _0800C032 +_0800C1CC: + ldr r0, _0800C1FC + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _0800C1E2 + movs r0, #0 + bl sub_0800BE28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800C1F2 +_0800C1E2: + bl sub_0800C9F0 + bl sub_0800CC14 + bl sub_0800CD24 + bl sub_0800CEF0 +_0800C1F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800C1F8: .4byte gUnknown_30041E0 +_0800C1FC: .4byte gUnknown_3007630 + thumb_func_end sub_0800C008 + + thumb_func_start sub_0800C200 +sub_0800C200: @ 0x0800C200 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _0800C224 + ldrb r1, [r0, #7] + adds r4, r0, #0 + cmp r1, #5 + bne _0800C22A + movs r2, #1 + strb r2, [r4, #6] + strb r1, [r4, #4] + ldrh r0, [r4, #0x1c] + strh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C228 + movs r0, #6 + strb r0, [r4, #7] + b _0800C22A + .align 2, 0 +_0800C224: .4byte gUnknown_30041E0 +_0800C228: + strb r2, [r4, #7] +_0800C22A: + ldrb r0, [r4, #7] + cmp r0, #1 + bne _0800C254 + strb r0, [r4, #6] + movs r0, #5 + strb r0, [r4, #4] + adds r0, r3, #0 + movs r1, #0x8c + bl __umodsi3 + strh r0, [r4, #0x1a] + movs r1, #0x8c + subs r1, r1, r0 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C250 + movs r0, #2 + b _0800C252 +_0800C250: + movs r0, #3 +_0800C252: + strb r0, [r4, #7] +_0800C254: + ldrb r0, [r4, #7] + cmp r0, #3 + bne _0800C26A + movs r0, #0 + strb r0, [r4, #6] + movs r0, #0x28 + strh r0, [r4, #0x1a] + movs r0, #4 + strb r0, [r4, #7] + movs r0, #9 + strb r0, [r4, #4] +_0800C26A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0800C200 + + thumb_func_start sub_0800C270 +sub_0800C270: @ 0x0800C270 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r0, _0800C2A8 + ldrb r1, [r0, #0xe] + adds r7, r0, #0 + cmp r1, #0 + bne _0800C28E + b _0800C754 +_0800C28E: + movs r0, #0 + strb r0, [r7, #0xe] + mov r0, r8 + subs r0, #0x10 + cmp r0, #0x2d + bls _0800C29C + b _0800C746 +_0800C29C: + lsls r0, r0, #2 + ldr r1, _0800C2AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800C2A8: .4byte gUnknown_30041E0 +_0800C2AC: .4byte _0800C2B0 +_0800C2B0: @ jump table + .4byte _0800C368 @ case 0 + .4byte _0800C746 @ case 1 + .4byte _0800C746 @ case 2 + .4byte _0800C746 @ case 3 + .4byte _0800C746 @ case 4 + .4byte _0800C746 @ case 5 + .4byte _0800C394 @ case 6 + .4byte _0800C380 @ case 7 + .4byte _0800C746 @ case 8 + .4byte _0800C3A8 @ case 9 + .4byte _0800C3B8 @ case 10 + .4byte _0800C3DC @ case 11 + .4byte _0800C3FC @ case 12 + .4byte _0800C41C @ case 13 + .4byte _0800C48C @ case 14 + .4byte _0800C4BE @ case 15 + .4byte _0800C4D4 @ case 16 + .4byte _0800C51C @ case 17 + .4byte _0800C746 @ case 18 + .4byte _0800C746 @ case 19 + .4byte _0800C746 @ case 20 + .4byte _0800C746 @ case 21 + .4byte _0800C746 @ case 22 + .4byte _0800C694 @ case 23 + .4byte _0800C746 @ case 24 + .4byte _0800C746 @ case 25 + .4byte _0800C746 @ case 26 + .4byte _0800C746 @ case 27 + .4byte _0800C746 @ case 28 + .4byte _0800C746 @ case 29 + .4byte _0800C746 @ case 30 + .4byte _0800C746 @ case 31 + .4byte _0800C746 @ case 32 + .4byte _0800C746 @ case 33 + .4byte _0800C58C @ case 34 + .4byte _0800C5D8 @ case 35 + .4byte _0800C620 @ case 36 + .4byte _0800C746 @ case 37 + .4byte _0800C746 @ case 38 + .4byte _0800C746 @ case 39 + .4byte _0800C746 @ case 40 + .4byte _0800C746 @ case 41 + .4byte _0800C746 @ case 42 + .4byte _0800C746 @ case 43 + .4byte _0800C746 @ case 44 + .4byte _0800C734 @ case 45 +_0800C368: + cmp r6, #0 + beq _0800C36E + b _0800C746 +_0800C36E: + ldr r0, _0800C37C + ldrb r1, [r0, #5] + strb r1, [r0, #4] + movs r1, #4 + strb r1, [r0, #5] + b _0800C746 + .align 2, 0 +_0800C37C: .4byte gUnknown_30041E0 +_0800C380: + cmp r6, #0 + beq _0800C386 + b _0800C746 +_0800C386: + ldr r0, _0800C390 + ldrb r1, [r0, #5] + strb r1, [r0, #4] + strb r6, [r0, #5] + b _0800C746 + .align 2, 0 +_0800C390: .4byte gUnknown_30041E0 +_0800C394: + cmp r6, #0 + beq _0800C39A + b _0800C746 +_0800C39A: + ldr r0, _0800C3A4 + strb r6, [r0, #5] + strb r6, [r0, #4] + movs r0, #0 + b _0800C6B2 + .align 2, 0 +_0800C3A4: .4byte gUnknown_30041E0 +_0800C3A8: + cmp r6, #0 + beq _0800C3AE + b _0800C746 +_0800C3AE: + ldr r1, _0800C3B4 + movs r0, #6 + b _0800C4C8 + .align 2, 0 +_0800C3B4: .4byte gUnknown_30041E0 +_0800C3B8: + ldr r1, _0800C3D8 + ldrh r0, [r1, #0x1a] + cmp r0, #0 + bne _0800C3C2 + b _0800C746 +_0800C3C2: + subs r0, #1 + strh r0, [r1, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C3CE + b _0800C746 +_0800C3CE: + movs r0, #7 + strb r0, [r1, #4] + movs r0, #8 + strb r0, [r1, #5] + b _0800C746 + .align 2, 0 +_0800C3D8: .4byte gUnknown_30041E0 +_0800C3DC: + cmp r6, #0 + beq _0800C3E2 + b _0800C746 +_0800C3E2: + ldr r0, _0800C3F8 + ldrb r1, [r0, #5] + strb r1, [r0, #4] + strb r6, [r0, #5] + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0800C3F2 + b _0800C746 +_0800C3F2: + movs r0, #0x13 + b _0800C6B2 + .align 2, 0 +_0800C3F8: .4byte gUnknown_30041E0 +_0800C3FC: + cmp r6, #0 + beq _0800C402 + b _0800C746 +_0800C402: + ldrb r0, [r7, #0xb] + cmp r0, #1 + bne _0800C412 + ldrh r0, [r7, #0x1a] + cmp r0, #1 + bls _0800C412 + subs r0, #1 + strh r0, [r7, #0x1a] +_0800C412: + ldr r1, _0800C418 + movs r0, #0xa + b _0800C4C8 + .align 2, 0 +_0800C418: .4byte gUnknown_30041E0 +_0800C41C: + cmp r6, #0 + bne _0800C462 + bl sub_0800CD50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + ldr r4, _0800C484 + strh r0, [r4, #0x14] + cmp r0, #0 + beq _0800C43C + movs r0, #0x20 + movs r1, #1 + bl sub_0800CDC8 +_0800C43C: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0800C462 + ldrh r0, [r4, #0x1a] + cmp r0, #1 + beq _0800C462 + ldr r0, _0800C488 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #4 + bne _0800C462 + bl rfu_REQ_endSearchParent + bl rfu_waitREQComplete + movs r0, #9 + strb r0, [r4, #4] + movs r0, #1 + strb r0, [r4, #0xb] +_0800C462: + ldr r1, _0800C484 + ldrh r0, [r1, #0x1a] + cmp r0, #0 + bne _0800C46C + b _0800C746 +_0800C46C: + subs r0, #1 + strh r0, [r1, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C478 + b _0800C746 +_0800C478: + movs r0, #0xb + strb r0, [r1, #4] + movs r0, #0 + strb r0, [r1, #5] + b _0800C746 + .align 2, 0 +_0800C484: .4byte gUnknown_30041E0 +_0800C488: .4byte gUnknown_3007630 +_0800C48C: + cmp r6, #0 + beq _0800C492 + b _0800C746 +_0800C492: + ldr r2, _0800C4AC + ldrb r0, [r2, #5] + strb r0, [r2, #4] + ldrb r1, [r2, #7] + cmp r1, #0 + bne _0800C4B0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800C4A6 + b _0800C746 +_0800C4A6: + movs r0, #0x21 + b _0800C6B2 + .align 2, 0 +_0800C4AC: .4byte gUnknown_30041E0 +_0800C4B0: + cmp r1, #7 + bne _0800C4B6 + b _0800C746 +_0800C4B6: + movs r0, #5 + strb r0, [r2, #4] + strb r0, [r2, #7] + b _0800C746 +_0800C4BE: + cmp r6, #0 + beq _0800C4C4 + b _0800C746 +_0800C4C4: + ldr r1, _0800C4D0 + movs r0, #0xd +_0800C4C8: + strb r0, [r1, #5] + strb r0, [r1, #4] + b _0800C746 + .align 2, 0 +_0800C4D0: .4byte gUnknown_30041E0 +_0800C4D4: + cmp r6, #0 + bne _0800C4F8 + ldr r4, _0800C514 + mov r0, sp + adds r1, r4, #0 + bl rfu_getConnectParentStatus + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0800C4F8 + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _0800C4F8 + adds r1, r4, #0 + subs r1, #0x10 + movs r0, #0xe + strb r0, [r1, #4] +_0800C4F8: + ldr r1, _0800C518 + ldrh r0, [r1, #0x1a] + cmp r0, #0 + bne _0800C502 + b _0800C746 +_0800C502: + subs r0, #1 + strh r0, [r1, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C50E + b _0800C746 +_0800C50E: + movs r0, #0xe + strb r0, [r1, #4] + b _0800C746 + .align 2, 0 +_0800C514: .4byte gUnknown_30041F0 +_0800C518: .4byte gUnknown_30041E0 +_0800C51C: + cmp r6, #0 + beq _0800C522 + b _0800C746 +_0800C522: + ldr r4, _0800C554 + mov r0, sp + adds r1, r4, #0 + bl rfu_getConnectParentStatus + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C534 + b _0800C746 +_0800C534: + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _0800C558 + adds r1, r4, #0 + subs r1, #0x10 + movs r0, #0x13 + strb r0, [r1, #4] + movs r0, #0xf + strb r0, [r1, #5] + movs r0, #0x22 + strh r0, [r1, #0x1e] + ldrb r0, [r1, #0x10] + strh r0, [r1, #0x14] + b _0800C578 + .align 2, 0 +_0800C554: .4byte gUnknown_30041F0 +_0800C558: + adds r1, r4, #0 + subs r1, #0x10 + strb r6, [r1, #5] + strb r6, [r1, #4] + movs r0, #0x23 + strh r0, [r1, #0x1e] + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, #0x14] + ldrb r0, [r1, #7] + cmp r0, #0 + beq _0800C578 + movs r0, #3 + strb r0, [r1, #7] + movs r0, #9 + strb r0, [r1, #4] +_0800C578: + ldr r4, _0800C588 + ldrb r0, [r4, #0x1e] + movs r1, #1 + bl sub_0800CDC8 + movs r0, #0 + strh r0, [r4, #0x1e] + b _0800C746 + .align 2, 0 +_0800C588: .4byte gUnknown_30041E0 +_0800C58C: + cmp r6, #0 + beq _0800C592 + b _0800C746 +_0800C592: + ldr r2, _0800C5D4 + ldr r3, [r2] + ldrb r0, [r3, #3] + movs r1, #0 + strh r0, [r7, #0x14] + movs r0, #0x11 + strb r0, [r7, #5] + strb r0, [r7, #4] + strb r1, [r7, #0x10] + ldrb r0, [r3, #3] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0800C5B0 + b _0800C746 +_0800C5B0: + adds r1, r7, #0 + movs r3, #1 +_0800C5B4: + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0800C5C4 + b _0800C746 +_0800C5C4: + ldr r0, [r2] + ldrb r0, [r0, #3] + ldrb r4, [r7, #0x10] + asrs r0, r4 + ands r0, r3 + cmp r0, #0 + beq _0800C5B4 + b _0800C746 + .align 2, 0 +_0800C5D4: .4byte gUnknown_3007630 +_0800C5D8: + cmp r6, #0 + bne _0800C5F6 + mov r0, sp + bl rfu_CHILD_getConnectRecoveryStatus + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0800C5F6 + mov r0, sp + ldrb r0, [r0] + cmp r0, #1 + bhi _0800C5F6 + ldr r1, _0800C61C + movs r0, #0x12 + strb r0, [r1, #4] +_0800C5F6: + ldr r2, _0800C61C + ldrb r0, [r2, #0x10] + lsls r0, r0, #1 + adds r1, r2, #0 + adds r1, #0x34 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + bne _0800C60A + b _0800C746 +_0800C60A: + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C616 + b _0800C746 +_0800C616: + movs r0, #0x12 + strb r0, [r2, #4] + b _0800C746 + .align 2, 0 +_0800C61C: .4byte gUnknown_30041E0 +_0800C620: + cmp r6, #0 + beq _0800C626 + b _0800C746 +_0800C626: + mov r0, sp + bl rfu_CHILD_getConnectRecoveryStatus + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800C634 + b _0800C746 +_0800C634: + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _0800C650 + ldr r1, _0800C64C + movs r0, #0x13 + strb r0, [r1, #4] + movs r0, #0x16 + strb r0, [r1, #5] + movs r0, #0x32 + strh r0, [r1, #0x1e] + b _0800C664 + .align 2, 0 +_0800C64C: .4byte gUnknown_30041E0 +_0800C650: + ldr r4, _0800C68C + strb r6, [r4, #5] + strb r6, [r4, #4] + ldr r0, _0800C690 + ldr r0, [r0] + ldrb r0, [r0, #3] + bl sub_0800CDF0 + movs r0, #0x33 + strh r0, [r4, #0x1e] +_0800C664: + ldr r5, _0800C68C + ldrb r0, [r5, #0x10] + lsls r0, r0, #1 + adds r1, r5, #0 + adds r1, #0x34 + adds r0, 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, #1 + bl sub_0800CDC8 + strh r4, [r5, #0x1e] + b _0800C746 + .align 2, 0 +_0800C68C: .4byte gUnknown_30041E0 +_0800C690: .4byte gUnknown_3007630 +_0800C694: + cmp r6, #0 + bne _0800C746 + ldr r5, _0800C6BC + ldrb r1, [r5, #5] + adds r0, r1, #0 + cmp r0, #0x16 + bne _0800C6C0 + ldrb r0, [r5, #0x11] + strb r0, [r5, #4] + ldrb r0, [r5, #0x12] + strb r0, [r5, #5] + ldrb r0, [r5, #2] + movs r0, #1 + strb r0, [r5, #2] + movs r0, #0x41 +_0800C6B2: + movs r1, #0 + bl sub_0800CDC8 + b _0800C746 + .align 2, 0 +_0800C6BC: .4byte gUnknown_30041E0 +_0800C6C0: + cmp r0, #0xf + bne _0800C746 + strb r1, [r5, #4] + ldrb r0, [r5, #2] + movs r4, #1 + strb r4, [r5, #2] + movs r0, #0x41 + movs r1, #0 + bl sub_0800CDC8 + 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, r0, #1 + adds r1, #4 + adds r0, r0, r1 + ldrh r1, [r5, #0x26] + movs r7, #0 + strh r1, [r0] + ldrb r1, [r5, #0x10] + movs r0, #4 + bl rfu_clearSlot + mov r4, sp + ldrb r0, [r5, #0x10] + movs r1, #0xe + bl rfu_NI_CHILD_setSendGameName + strb r0, [r4] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800C746 + strb r7, [r5, #5] + strb r7, [r5, #4] + bl sub_0800D0CC + ldr r0, _0800C730 + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + orrs r0, r1 + bl sub_0800CDF0 + mov r0, sp + ldrb r0, [r0] + strh r0, [r5, #0x14] + movs r0, #0x25 + movs r1, #1 + bl sub_0800CDC8 + b _0800C746 + .align 2, 0 +_0800C730: .4byte gUnknown_3007630 +_0800C734: + cmp r6, #0 + bne _0800C746 + ldr r0, _0800C750 + strb r6, [r0, #5] + strb r6, [r0, #4] + movs r0, #0x42 + movs r1, #0 + bl sub_0800CDC8 +_0800C746: + ldr r1, _0800C750 + movs r0, #1 + strb r0, [r1, #0xe] + b _0800C7A2 + .align 2, 0 +_0800C750: .4byte gUnknown_30041E0 +_0800C754: + cmp r6, #3 + bne _0800C7A2 + ldrb r0, [r7, #0xf] + cmp r0, #0 + beq _0800C7A2 + mov r3, r8 + cmp r3, #0x24 + beq _0800C76C + cmp r3, #0x26 + beq _0800C76C + cmp r3, #0x27 + bne _0800C7A2 +_0800C76C: + bl rfu_REQ_RFUStatus + bl rfu_waitREQComplete + mov r0, sp + bl rfu_getRFUStatus + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _0800C7A2 + ldr r4, _0800C7B8 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + bne _0800C7A2 + bl rfu_getSTWIRecvBuffer + ldr r1, [r4] + ldrb r1, [r1, #2] + strb r1, [r0, #4] + movs r1, #1 + strb r1, [r0, #5] + movs r0, #0x29 + bl sub_0800BE28 + movs r6, #0 +_0800C7A2: + mov r4, r8 + cmp r4, #0x26 + bne _0800C7AA + b _0800C8BE +_0800C7AA: + cmp r4, #0x26 + bgt _0800C7BC + cmp r4, #0x10 + bne _0800C7B4 + b _0800C8DC +_0800C7B4: + b _0800C8FA + .align 2, 0 +_0800C7B8: .4byte gUnknown_3007630 +_0800C7BC: + mov r0, r8 + cmp r0, #0x30 + beq _0800C7CA + cmp r0, #0x3d + bne _0800C7C8 + b _0800C8DC +_0800C7C8: + b _0800C8FA +_0800C7CA: + cmp r6, #0 + beq _0800C7D0 + b _0800C8FE +_0800C7D0: + bl rfu_getSTWIRecvBuffer + ldr r4, _0800C880 + ldrb r0, [r0, #8] + strh r0, [r4, #0x14] + bl sub_0800CE14 + adds r2, r4, #0 + adds r2, #0x30 + ldrb r1, [r2] + cmp r1, #0 + beq _0800C826 + 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, #1 + adds r4, r1, #0 + adds r4, #0x34 + movs r2, #0 +_0800C800: + ldrh r0, [r1, #0x14] + asrs r0, r3 + ands r0, r5 + cmp r0, #0 + beq _0800C810 + lsls r0, r3, #1 + adds r0, r0, r4 + strh r2, [r0] +_0800C810: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800C800 + ldr r1, _0800C880 + ldrb r0, [r1, #6] + cmp r0, #0 + bne _0800C826 + strb r0, [r1, #5] + strb r0, [r1, #4] +_0800C826: + mov r3, sp + ldr r1, _0800C880 + ldrb r2, [r1] + ldrb r0, [r1, #0x14] + ands r0, r2 + strb r0, [r3] + movs r3, #0 + adds r7, r1, #0 + ldr r2, _0800C884 + mov r1, sp + movs r5, #1 + adds r4, r7, #0 +_0800C83E: + ldrb r0, [r1] + asrs r0, r3 + ands r0, r5 + cmp r0, #0 + beq _0800C852 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0800C852 + subs r0, #1 + strb r0, [r7, #1] +_0800C852: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800C83E + ldrb r1, [r7, #0x14] + ldrb r0, [r7] + bics r0, r1 + strb r0, [r7] + ldrb r1, [r7, #7] + cmp r1, #0 + beq _0800C89C + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #0xff + bne _0800C8AE + cmp r1, #8 + bne _0800C888 + ldrh r0, [r7, #0x1c] + strh r0, [r7, #0x1a] + movs r0, #6 + strb r0, [r7, #7] + b _0800C89A + .align 2, 0 +_0800C880: .4byte gUnknown_30041E0 +_0800C884: .4byte gUnknown_3007630 +_0800C888: + ldrb r0, [r7, #4] + subs r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0800C89C + movs r0, #1 + strb r0, [r7, #7] + movs r0, #5 +_0800C89A: + strb r0, [r7, #4] +_0800C89C: + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #0xff + bne _0800C8AE + ldrb r0, [r7, #4] + cmp r0, #0 + bne _0800C8AE + movs r0, #0xff + strb r0, [r7, #6] +_0800C8AE: + ldrb r0, [r7, #0xe] + cmp r0, #0 + bne _0800C8FA + movs r0, #0x40 + movs r1, #1 + bl sub_0800CDC8 + b _0800C8FA +_0800C8BE: + bl sub_0800CCC8 + ldr r0, _0800C8D8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xff + beq _0800C8FA + movs r0, #0x50 + movs r1, #0 + bl sub_0800CDC8 + b _0800C8FA + .align 2, 0 +_0800C8D8: .4byte gUnknown_3007630 +_0800C8DC: + cmp r6, #0 + bne _0800C8FE + ldr r0, _0800C928 + strb r6, [r0, #0xd] + strb r6, [r0, #1] + strb r6, [r0] + movs r1, #0xff + strb r1, [r0, #6] + bl sub_0800D0CC + mov r4, r8 + cmp r4, #0x3d + bne _0800C8FA + bl sub_0800BA5C +_0800C8FA: + cmp r6, #0 + beq _0800C94E +_0800C8FE: + ldr r7, _0800C928 + mov r0, r8 + cmp r0, #0x1c + bne _0800C930 + cmp r6, #0 + beq _0800C930 + ldrb r0, [r7, #7] + cmp r0, #4 + bne _0800C930 + ldr r2, _0800C92C + ldr r1, [r2] + movs r0, #1 + strb r0, [r1] + ldr r1, [r2] + movs r0, #0xf + strb r0, [r1, #2] + bl sub_0800CDF0 + bl rfu_waitREQComplete + b _0800C960 + .align 2, 0 +_0800C928: .4byte gUnknown_30041E0 +_0800C92C: .4byte gUnknown_3007630 +_0800C930: + movs r1, #0 + mov r3, r8 + strh r3, [r7, #0x14] + strh r6, [r7, #0x16] + ldrb r0, [r7, #0xe] + cmp r0, #0 + beq _0800C942 + strb r1, [r7, #5] + strb r1, [r7, #4] +_0800C942: + movs r0, #0xf0 + movs r1, #2 + bl sub_0800CDC8 + bl sub_0800D0CC +_0800C94E: + mov r4, r8 + cmp r4, #0xff + bne _0800C960 + movs r0, #0xf2 + movs r1, #0 + bl sub_0800CDC8 + bl sub_0800D0CC +_0800C960: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0800C270 + + thumb_func_start sub_0800C96C +sub_0800C96C: @ 0x0800C96C + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r4, _0800C9A0 + ldrb r7, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + ldr r0, _0800C9A4 + ldr r0, [r0] + ldrb r5, [r0] + cmp r5, #0 + bne _0800C9A8 + adds r0, r6, #0 + bl sub_0800BE28 + ldrb r0, [r4, #2] + cmp r0, #1 + beq _0800C9C0 + bl sub_0800D0CC + strb r5, [r4, #0xf] + strb r7, [r4, #0xe] + b _0800C9E4 + .align 2, 0 +_0800C9A0: .4byte gUnknown_30041E0 +_0800C9A4: .4byte gUnknown_3007630 +_0800C9A8: + mov r0, sp + bl rfu_UNI_PARENT_getDRAC_ACK + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0800C9C0 + mov r1, sp + ldrb r0, [r4, #3] + ldrb r1, [r1] + orrs r0, r1 + ldrb r1, [r4, #3] + strb r0, [r4, #3] +_0800C9C0: + ldr r4, _0800C9EC + ldr r1, [r4, #0x44] + cmp r1, #0 + beq _0800C9DC + adds r0, r6, #0 + bl _call_via_r1 + bl rfu_waitREQComplete + ldrb r0, [r4, #2] + cmp r0, #2 + bne _0800C9DC + bl sub_0800D0CC +_0800C9DC: + ldr r1, _0800C9EC + movs r0, #0 + strb r0, [r1, #0xf] + strb r7, [r1, #0xe] +_0800C9E4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800C9EC: .4byte gUnknown_30041E0 + thumb_func_end sub_0800C96C + + thumb_func_start sub_0800C9F0 +sub_0800C9F0: @ 0x0800C9F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r1, _0800CA74 + ldrb r0, [r1, #4] + subs r0, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r1, #0 + cmp r0, #3 + bls _0800CA0E + b _0800CC02 +_0800CA0E: + ldr r0, _0800CA78 + ldr r2, [r0] + ldrb r1, [r2, #2] + ldrb r0, [r3, #0xc] + adds r4, r1, #0 + eors r4, r0 + ands r4, r1 + ldrb r0, [r2, #7] + bics r4, r0 + mov r8, r4 + strb r1, [r3, #0xc] + cmp r4, #0 + beq _0800CA36 + strh r4, [r3, #0x14] + movs r0, #0x10 + movs r1, #1 + str r3, [sp, #4] + bl sub_0800CDC8 + ldr r3, [sp, #4] +_0800CA36: + movs r0, #0 + str r0, [sp] + movs r6, #0 + adds r7, r3, #0 + movs r1, #0x24 + adds r1, r1, r3 + mov sb, r1 +_0800CA44: + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r6 + lsrs r4, r0, #0x18 + movs r5, #0 + mov r0, r8 + ands r0, r4 + cmp r0, #0 + beq _0800CA96 + lsls r1, r6, #1 + adds r0, r7, #0 + adds r0, #0x28 + adds r1, r1, r0 + ldrh r0, [r7, #0x26] + strh r0, [r1] + mov r2, sb + ldrb r1, [r2] + adds r0, r4, #0 + orrs r0, r1 + strb r0, [r2] + adds r6, #1 + mov sl, r6 + b _0800CB4C + .align 2, 0 +_0800CA74: .4byte gUnknown_30041E0 +_0800CA78: .4byte gUnknown_3007630 +_0800CA7C: + ldrb r1, [r7] + adds r0, r4, #0 + orrs r0, r1 + strb r0, [r7] + ldrb r0, [r7, #1] + adds r0, #1 + strb r0, [r7, #1] + ldr r0, [sp] + orrs r0, r4 + str r0, [sp] + movs r0, #1 + orrs r5, r0 + b _0800CAE0 +_0800CA96: + mov r1, sb + ldrb r0, [r1] + ands r0, r4 + adds r2, r6, #1 + mov sl, r2 + cmp r0, #0 + beq _0800CB4C + ldr r0, _0800CAF0 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r1, [r1] + ldrh r0, [r1, #0x34] + cmp r0, #0x46 + bne _0800CAFC + adds r0, r1, #0 + adds r0, #0x61 + ldrb r0, [r0] + cmp r0, #1 + bne _0800CB14 + movs r5, #2 + ldr r3, [r3, #0x20] + ldrh r2, [r3] + ldr r0, _0800CAF4 + cmp r2, r0 + beq _0800CAE0 + ldr r0, _0800CAF8 + ldr r0, [r0] + lsls r1, r6, #5 + adds r0, r0, r1 + ldrh r0, [r0, #0x18] + ldr r1, _0800CAF4 +_0800CAD4: + cmp r0, r2 + beq _0800CA7C + adds r3, #2 + ldrh r2, [r3] + cmp r2, r1 + bne _0800CAD4 +_0800CAE0: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _0800CB14 + movs r0, #4 + orrs r5, r0 + b _0800CB14 + .align 2, 0 +_0800CAF0: .4byte gUnknown_3007620 +_0800CAF4: .4byte 0x0000FFFF +_0800CAF8: .4byte gUnknown_3007630 +_0800CAFC: + lsls r1, r6, #1 + adds r0, r3, #0 + adds r0, #0x28 + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldr r1, _0800CBD0 + ands r0, r1 + cmp r0, #0 + bne _0800CB14 + movs r5, #6 +_0800CB14: + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _0800CB3A + mov r2, sb + ldrb r0, [r2] + bics r0, r4 + movs r2, #0 + mov r1, sb + strb r0, [r1] + lsls r0, r6, #1 + adds r1, r7, #0 + adds r1, #0x28 + adds r0, r0, r1 + strh r2, [r0] + movs r0, #8 + adds r1, r6, #0 + bl rfu_clearSlot +_0800CB3A: + movs r0, #4 + ands r5, r0 + ldr r3, _0800CBD4 + cmp r5, #0 + beq _0800CB4C + ldrb r1, [r7, #0xd] + adds r0, r4, #0 + orrs r0, r1 + strb r0, [r7, #0xd] +_0800CB4C: + mov r2, sl + lsls r0, r2, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bhi _0800CB58 + b _0800CA44 +_0800CB58: + ldr r4, [sp] + cmp r4, #0 + beq _0800CB6A + ldr r0, _0800CBD4 + strh r4, [r0, #0x14] + movs r0, #0x11 + movs r1, #1 + bl sub_0800CDC8 +_0800CB6A: + ldr r1, _0800CBD4 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0800CBA6 + movs r5, #1 + ldr r0, _0800CBD8 + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0800CB8A + ldrb r0, [r1, #3] + ldrb r1, [r1] + ands r0, r1 + cmp r0, r1 + beq _0800CB8A + movs r5, #0 +_0800CB8A: + cmp r5, #0 + beq _0800CBA6 + ldr r4, _0800CBD4 + ldrb r0, [r4, #0xd] + bl sub_0800CDF0 + ldrb r0, [r4, #0xd] + movs r1, #0 + strh r0, [r4, #0x14] + strb r1, [r4, #0xd] + movs r0, #0x12 + movs r1, #1 + bl sub_0800CDC8 +_0800CBA6: + ldr r0, _0800CBD4 + adds r1, r0, #0 + adds r1, #0x24 + ldrb r1, [r1] + adds r3, r0, #0 + cmp r1, #0 + bne _0800CC02 + ldrb r0, [r3, #4] + cmp r0, #8 + bne _0800CC02 + ldrb r0, [r3, #7] + cmp r0, #0 + bne _0800CBDC + strb r0, [r3, #5] + strb r0, [r3, #4] + movs r0, #0x14 + movs r1, #0 + bl sub_0800CDC8 + b _0800CC02 + .align 2, 0 +_0800CBD0: .4byte 0x0000FFFF +_0800CBD4: .4byte gUnknown_30041E0 +_0800CBD8: .4byte gUnknown_3007630 +_0800CBDC: + cmp r0, #2 + bne _0800CBE8 + movs r0, #3 + strb r0, [r3, #7] + movs r0, #9 + b _0800CBEE +_0800CBE8: + movs r0, #1 + strb r0, [r3, #7] + movs r0, #5 +_0800CBEE: + strb r0, [r3, #4] + ldrb r0, [r3] + cmp r0, #0 + beq _0800CC02 + movs r0, #0 + strh r0, [r3, #0x1a] + movs r0, #8 + strb r0, [r3, #7] + movs r0, #5 + strb r0, [r3, #4] +_0800CC02: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800C9F0 + + thumb_func_start sub_0800CC14 +sub_0800CC14: @ 0x0800CC14 + push {r4, r5, r6, lr} + ldr r1, _0800CCB8 + ldrh r0, [r1] + adds r6, r0, #0 + movs r0, #0 + strh r0, [r1] + ldr r4, _0800CCBC + ldrb r0, [r4, #4] + cmp r0, #0xf + bne _0800CC78 + ldrb r1, [r4, #0x10] + lsls r1, r1, #1 + adds r5, r4, #0 + adds r5, #0x28 + adds r1, r1, r5 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0800CC4E + ldr r1, _0800CCC0 + ldrb r0, [r4, #0x10] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0x27 + bne _0800CC78 +_0800CC4E: + bl sub_0800D0EC + movs r0, #0x18 + strb r0, [r4, #4] + ldrb r1, [r4, #0x10] + movs r0, #4 + bl rfu_clearSlot + adds r2, r4, #0 + adds r2, #0x24 + movs r1, #1 + ldrb r0, [r4, #0x10] + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x10] + lsls r0, r0, #1 + adds r0, r0, r5 + movs r1, #0 + strh r1, [r0] +_0800CC78: + ldr r0, _0800CCB8 + strh r6, [r0] + ldr r5, _0800CCBC + ldrb r0, [r5, #4] + cmp r0, #0x18 + bne _0800CCB2 + ldrb r0, [r5, #2] + cmp r0, #1 + bne _0800CC8E + bl sub_0800D0EC +_0800CC8E: + ldrb r0, [r5, #2] + adds r4, r0, #0 + cmp r4, #0 + bne _0800CCB2 + strb r4, [r5, #5] + strb r4, [r5, #4] + ldr r0, _0800CCC4 + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + orrs r0, r1 + bl sub_0800CDF0 + strh r4, [r5, #0x14] + movs r0, #0x25 + movs r1, #1 + bl sub_0800CDC8 +_0800CCB2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800CCB8: .4byte 0x04000208 +_0800CCBC: .4byte gUnknown_30041E0 +_0800CCC0: .4byte gUnknown_3007620 +_0800CCC4: .4byte gUnknown_3007630 + thumb_func_end sub_0800CC14 + + thumb_func_start sub_0800CCC8 +sub_0800CCC8: @ 0x0800CCC8 + push {r4, r5, lr} + ldr r5, _0800CD1C + ldrb r0, [r5, #4] + cmp r0, #0xf + bne _0800CD14 + ldr r1, _0800CD20 + ldrb r2, [r5, #0x10] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0x26 + bne _0800CD14 + movs r4, #0 + strb r4, [r5, #5] + strb r4, [r5, #4] + movs r0, #4 + adds r1, r2, #0 + bl rfu_clearSlot + adds r2, r5, #0 + adds r2, #0x24 + movs r1, #1 + ldrb r0, [r5, #0x10] + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0x10] + lsls r0, r0, #1 + adds r1, r5, #0 + adds r1, #0x28 + adds r0, r0, r1 + strh r4, [r0] + movs r0, #0x24 + movs r1, #0 + bl sub_0800CDC8 +_0800CD14: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800CD1C: .4byte gUnknown_30041E0 +_0800CD20: .4byte gUnknown_3007620 + thumb_func_end sub_0800CCC8 + + thumb_func_start sub_0800CD24 +sub_0800CD24: @ 0x0800CD24 + push {lr} + ldr r1, _0800CD4C + ldrb r0, [r1, #6] + cmp r0, #0 + bne _0800CD48 + ldrb r0, [r1, #0xa] + cmp r0, #1 + bne _0800CD48 + ldrb r0, [r1, #4] + strb r0, [r1, #0x11] + ldrb r0, [r1, #5] + strb r0, [r1, #0x12] + movs r0, #0x10 + strb r0, [r1, #4] + movs r0, #0x11 + strb r0, [r1, #5] + movs r0, #2 + strb r0, [r1, #0xa] +_0800CD48: + pop {r0} + bx r0 + .align 2, 0 +_0800CD4C: .4byte gUnknown_30041E0 + thumb_func_end sub_0800CD24 + + thumb_func_start sub_0800CD50 +sub_0800CD50: @ 0x0800CD50 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r6, #0 + movs r5, #0 + ldr r1, _0800CDBC + ldr r0, [r1] + ldrb r0, [r0, #8] + cmp r6, r0 + bhs _0800CDAC + mov r8, r0 + ldr r0, _0800CDC0 + mov sl, r0 + mov sb, r1 +_0800CD70: + mov r1, sl + ldr r3, [r1, #0x20] + ldrh r2, [r3] + adds r0, r5, #1 + mov ip, r0 + ldr r1, _0800CDC4 + cmp r2, r1 + beq _0800CDA2 + mov r1, sb + ldr r0, [r1] + lsls r1, r5, #5 + adds r0, r0, r1 + ldrh r4, [r0, #0x18] + ldr r7, _0800CDC4 + movs r1, #1 + lsls r1, r5 +_0800CD90: + cmp r4, r2 + bne _0800CD9A + orrs r6, r1 + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 +_0800CD9A: + adds r3, #2 + ldrh r2, [r3] + cmp r2, r7 + bne _0800CD90 +_0800CDA2: + mov r1, ip + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r8 + blo _0800CD70 +_0800CDAC: + adds r0, r6, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800CDBC: .4byte gUnknown_3007630 +_0800CDC0: .4byte gUnknown_30041E0 +_0800CDC4: .4byte 0x0000FFFF + thumb_func_end sub_0800CD50 + + thumb_func_start sub_0800CDC8 +sub_0800CDC8: @ 0x0800CDC8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r4, _0800CDEC + ldr r2, [r4, #0x40] + cmp r2, #0 + beq _0800CDDE + bl _call_via_r2 +_0800CDDE: + movs r0, #0 + strh r0, [r4, #0x16] + strh r0, [r4, #0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800CDEC: .4byte gUnknown_30041E0 + thumb_func_end sub_0800CDC8 + + thumb_func_start sub_0800CDF0 +sub_0800CDF0: @ 0x0800CDF0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0800CE10 + ldrb r5, [r4, #0xe] + movs r1, #1 + 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 +_0800CE10: .4byte gUnknown_30041E0 + thumb_func_end sub_0800CDF0 + + thumb_func_start sub_0800CE14 +sub_0800CE14: @ 0x0800CE14 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0800CEE0 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0800CE5C + movs r4, #0 +_0800CE26: + ldr r1, _0800CEE4 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #8 + adds r1, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0800CE52 + ldrb r1, [r2, #0x1a] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0800CE52 + adds r2, r1, #0 + bics r2, r5 + movs r0, #0x20 + adds r1, r4, #0 + bl rfu_changeSendTarget +_0800CE52: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800CE26 +_0800CE5C: + ldr r0, _0800CEE0 + ldr r0, [r0] + ldrb r0, [r0, #5] + cmp r0, #0 + beq _0800CE9A + movs r4, #0 +_0800CE68: + ldr r1, _0800CEE4 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrh r0, [r2, #0x34] + movs r3, #0x80 + lsls r3, r3, #8 + adds r1, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0800CE90 + adds r0, r2, #0 + adds r0, #0x4e + ldrb r0, [r0] + ands r0, r5 + cmp r0, #0 + beq _0800CE90 + adds r0, r4, #0 + bl rfu_NI_stopReceivingData +_0800CE90: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800CE68 +_0800CE9A: + ldr r0, _0800CEE0 + ldr r3, [r0] + ldrb r2, [r3, #6] + cmp r2, #0 + beq _0800CED8 + mvns r1, r5 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #6] + movs r4, #0 + ldr r7, _0800CEE8 + ldr r6, _0800CEEC +_0800CEB2: + lsls r0, r4, #2 + adds r0, r0, r7 + ldr r2, [r0] + ldrh r0, [r2] + cmp r0, r6 + bne _0800CECE + ldrb r3, [r2, #3] + adds r0, r5, #0 + ands r0, r3 + cmp r0, #0 + beq _0800CECE + adds r0, r1, #0 + ands r0, r3 + strb r0, [r2, #3] +_0800CECE: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800CEB2 +_0800CED8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800CEE0: .4byte gUnknown_3007630 +_0800CEE4: .4byte gUnknown_3007620 +_0800CEE8: .4byte gUnknown_3007610 +_0800CEEC: .4byte 0x00008024 + thumb_func_end sub_0800CE14 + + thumb_func_start sub_0800CEF0 +sub_0800CEF0: @ 0x0800CEF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _0800CFDC + ldrh r0, [r0, #0x18] + cmp r0, #0 + beq _0800CFCC + ldr r0, _0800CFE0 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0800CF90 + movs r6, #0 +_0800CF10: + ldr r3, _0800CFE4 + lsls r2, r6, #2 + adds r0, r2, r3 + ldr r0, [r0] + ldrh r1, [r0] + movs r4, #0x80 + lsls r4, r4, #8 + adds r0, r4, #0 + ands r1, r0 + adds r7, r2, #0 + adds r0, r6, #1 + mov sb, r0 + cmp r1, #0 + beq _0800CF86 + movs r5, #0 + movs r4, #0 + movs r1, #1 + mov r8, r1 + mov sl, r3 +_0800CF36: + adds r0, r7, r3 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + asrs r0, r4 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0800CF60 + lsls r0, r4, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldr r1, _0800CFDC + ldrh r0, [r0, #2] + ldrh r1, [r1, #0x18] + cmp r0, r1 + bls _0800CF60 + mov r0, r8 + lsls r0, r4 + orrs r5, r0 + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 +_0800CF60: + cmp r5, #0 + beq _0800CF7C + mov r1, sl + 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] +_0800CF7C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800CF36 +_0800CF86: + mov r3, sb + lsls r0, r3, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _0800CF10 +_0800CF90: + ldr r0, _0800CFE0 + ldr r0, [r0] + ldrb r0, [r0, #5] + cmp r0, #0 + beq _0800CFCC + movs r6, #0 +_0800CF9C: + ldr r1, _0800CFE4 + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrh r0, [r2, #0x34] + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0800CFC2 + ldr r1, _0800CFDC + ldrh r0, [r2, #0x36] + ldrh r1, [r1, #0x18] + cmp r0, r1 + bls _0800CFC2 + adds r0, r6, #0 + bl rfu_NI_stopReceivingData +_0800CFC2: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _0800CF9C +_0800CFCC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800CFDC: .4byte gUnknown_30041E0 +_0800CFE0: .4byte gUnknown_3007630 +_0800CFE4: .4byte gUnknown_3007620 + thumb_func_end sub_0800CEF0 + + thumb_func_start sub_0800CFE8 +sub_0800CFE8: @ 0x0800CFE8 + push {lr} + ldr r1, _0800CFF8 + str r0, [r1, #0x44] + ldr r0, _0800CFFC + bl rfu_setMSCCallback + pop {r0} + bx r0 + .align 2, 0 +_0800CFF8: .4byte gUnknown_30041E0 +_0800CFFC: .4byte sub_0800C96C + thumb_func_end sub_0800CFE8 + + thumb_func_start sub_0800D000 +sub_0800D000: @ 0x0800D000 + ldr r1, _0800D008 + str r0, [r1, #0x40] + bx lr + .align 2, 0 +_0800D008: .4byte gUnknown_30041E0 + thumb_func_end sub_0800D000 + + thumb_func_start sub_0800D00C +sub_0800D00C: @ 0x0800D00C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r0, _0800D030 + ldrb r1, [r0, #9] + adds r3, r0, #0 + cmp r1, #0 + beq _0800D034 + cmp r4, #0 + bne _0800D034 + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #0 + beq _0800D034 + movs r0, #5 + b _0800D044 + .align 2, 0 +_0800D030: .4byte gUnknown_30041E0 +_0800D034: + ldr r2, _0800D04C + ldrh r1, [r2] + movs r0, #0 + strh r0, [r2] + strb r4, [r3, #9] + strh r5, [r3, #0x32] + strh r1, [r2] + movs r0, #0 +_0800D044: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0800D04C: .4byte 0x04000208 + thumb_func_end sub_0800D00C + + thumb_func_start sub_0800D050 +sub_0800D050: @ 0x0800D050 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0800D06C + ldr r0, [r0] + ldrb r1, [r0, #4] + ldrb r0, [r0, #5] + orrs r0, r1 + cmp r0, #0 + bne _0800D074 + ldr r0, _0800D070 + strh r2, [r0, #0x18] + movs r0, #0 + b _0800D084 + .align 2, 0 +_0800D06C: .4byte gUnknown_3007630 +_0800D070: .4byte gUnknown_30041E0 +_0800D074: + ldr r1, _0800D088 + movs r0, #6 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #6 +_0800D084: + pop {r1} + bx r1 + .align 2, 0 +_0800D088: .4byte gUnknown_30041E0 + thumb_func_end sub_0800D050 + + thumb_func_start sub_0800D08C +sub_0800D08C: @ 0x0800D08C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + ldr r1, _0800D0B4 + ldrb r0, [r1, #4] + subs r0, #9 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0800D0B8 + movs r0, #7 + strh r0, [r1, #0x14] + movs r0, #0xf3 + movs r1, #1 + bl sub_0800CDC8 + movs r0, #7 + b _0800D0C6 + .align 2, 0 +_0800D0B4: .4byte gUnknown_30041E0 +_0800D0B8: + cmp r2, #0 + beq _0800D0C2 + movs r0, #1 + strb r0, [r1, #0xb] + b _0800D0C4 +_0800D0C2: + strb r3, [r1, #0xb] +_0800D0C4: + movs r0, #0 +_0800D0C6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800D08C + + thumb_func_start sub_0800D0CC +sub_0800D0CC: @ 0x0800D0CC + push {lr} + ldr r1, _0800D0E8 + ldrb r0, [r1, #2] + cmp r0, #0 + beq _0800D0E4 + ldrb r0, [r1, #2] + movs r0, #0 + strb r0, [r1, #2] + movs r0, #0x45 + movs r1, #0 + bl sub_0800CDC8 +_0800D0E4: + pop {r0} + bx r0 + .align 2, 0 +_0800D0E8: .4byte gUnknown_30041E0 + thumb_func_end sub_0800D0CC + + thumb_func_start sub_0800D0EC +sub_0800D0EC: @ 0x0800D0EC + push {lr} + ldr r1, _0800D100 + ldrb r0, [r1, #2] + cmp r0, #0 + bne _0800D104 + movs r0, #0x45 + movs r1, #0 + bl sub_0800CDC8 + b _0800D110 + .align 2, 0 +_0800D100: .4byte gUnknown_30041E0 +_0800D104: + ldrb r0, [r1, #2] + cmp r0, #1 + bne _0800D110 + ldrb r0, [r1, #2] + movs r0, #2 + strb r0, [r1, #2] +_0800D110: + pop {r0} + bx r0 + thumb_func_end sub_0800D0EC + + thumb_func_start sub_0800D114 +sub_0800D114: @ 0x0800D114 + push {lr} + ldr r0, _0800D134 + ldrb r1, [r0, #7] + adds r2, r0, #0 + cmp r1, #0 + beq _0800D17E + ldrb r0, [r2, #4] + subs r0, #5 + cmp r0, #6 + bhi _0800D17E + lsls r0, r0, #2 + ldr r1, _0800D138 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800D134: .4byte gUnknown_30041E0 +_0800D138: .4byte _0800D13C +_0800D13C: @ jump table + .4byte _0800D158 @ case 0 + .4byte _0800D160 @ case 1 + .4byte _0800D16A @ case 2 + .4byte _0800D16A @ case 3 + .4byte _0800D170 @ case 4 + .4byte _0800D170 @ case 5 + .4byte _0800D176 @ case 6 +_0800D158: + movs r0, #3 + strb r0, [r2, #7] + movs r0, #9 + b _0800D17C +_0800D160: + movs r0, #2 + strb r0, [r2, #7] + movs r0, #1 + strh r0, [r2, #0x1a] + b _0800D17E +_0800D16A: + movs r0, #2 + strb r0, [r2, #7] + b _0800D17E +_0800D170: + movs r0, #0x28 + strh r0, [r2, #0x1a] + b _0800D17E +_0800D176: + movs r0, #0x28 + strh r0, [r2, #0x1a] + movs r0, #0xa +_0800D17C: + strb r0, [r2, #4] +_0800D17E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800D114 + + thumb_func_start sub_0800D184 +sub_0800D184: @ 0x0800D184 + push {r4, r5, lr} + adds r3, r0, #0 + movs r0, #0 + movs r4, #0 + movs r5, #0x46 +_0800D18E: + adds r2, r0, #1 + movs r1, #0x45 + muls r0, r5, r0 + adds r0, r0, r3 + adds r0, #0x45 +_0800D198: + strb r4, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _0800D198 + adds r0, r2, #0 + cmp r0, #0x13 + ble _0800D18E + movs r1, #0 + ldr r2, _0800D1D4 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, #0xaf + lsls r2, r2, #3 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D1D8 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D1DC + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D1D4: .4byte 0x00000579 +_0800D1D8: .4byte 0x0000057A +_0800D1DC: .4byte 0x0000057B + thumb_func_end sub_0800D184 + + thumb_func_start sub_0800D1E0 +sub_0800D1E0: @ 0x0800D1E0 + push {r4, lr} + adds r3, r0, #0 + movs r1, #0 + movs r4, #0 +_0800D1E8: + lsls r0, r1, #3 + adds r2, r1, #1 + subs r0, r0, r1 + movs r1, #0xd + lsls r0, r0, #1 + adds r0, r0, r3 + adds r0, #0xd +_0800D1F6: + strb r4, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _0800D1F6 + adds r1, r2, #0 + cmp r1, #0x27 + ble _0800D1E8 + movs r1, #0 + ldr r2, _0800D230 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, #0x8c + lsls r2, r2, #2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D234 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D238 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800D230: .4byte 0x00000231 +_0800D234: .4byte 0x00000232 +_0800D238: .4byte 0x00000233 + thumb_func_end sub_0800D1E0 + + thumb_func_start sub_0800D23C +sub_0800D23C: @ 0x0800D23C + push {r4, lr} + adds r3, r0, #0 + movs r1, #0 + movs r4, #0 +_0800D244: + lsls r0, r1, #8 + adds r2, r1, #1 + movs r1, #0xff + adds r0, r0, r3 + adds r0, #0xff +_0800D24E: + strb r4, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _0800D24E + adds r1, r2, #0 + cmp r1, #1 + ble _0800D244 + movs r1, #0 + ldr r2, _0800D288 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D28C + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + ldr r2, _0800D290 + adds r0, r3, r2 + ldrb r2, [r0] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800D288: .4byte 0x00000201 +_0800D28C: .4byte 0x00000202 +_0800D290: .4byte 0x00000203 + thumb_func_end sub_0800D23C + + thumb_func_start sub_0800D294 +sub_0800D294: @ 0x0800D294 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _0800D32C + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0x13 + bhi _0800D334 + ldr r0, _0800D330 + ldrh r1, [r0] + adds r7, r1, #0 + movs r1, #0 + strh r1, [r0] + movs r3, #0 + movs r2, #0 +_0800D2B2: + adds r1, r6, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _0800D2C6 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _0800D2C6 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0800D2C6: + adds r2, #0xe + cmp r2, #0x45 + ble _0800D2B2 + cmp r3, #5 + beq _0800D324 + movs r2, #0 + movs r0, #0xaf + lsls r0, r0, #3 + adds r3, r5, r0 + movs r4, #0x46 +_0800D2DA: + ldrb r0, [r3] + adds r1, r0, #0 + muls r1, r4, r1 + adds r1, r2, r1 + adds r1, r5, r1 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #0x45 + ble _0800D2DA + movs r1, #0xaf + lsls r1, r1, #3 + adds r4, r5, r1 + ldrb r0, [r4] + adds r0, #1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _0800D32C + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, #0 + adds r0, r6, #0 + adds r0, #0x45 +_0800D31C: + strb r1, [r0] + subs r0, #1 + cmp r0, r6 + bge _0800D31C +_0800D324: + ldr r0, _0800D330 + strh r7, [r0] + b _0800D33E + .align 2, 0 +_0800D32C: .4byte 0x0000057A +_0800D330: .4byte 0x04000208 +_0800D334: + ldr r1, _0800D344 + adds r0, r5, r1 + ldrb r1, [r0] + movs r1, #1 + strb r1, [r0] +_0800D33E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D344: .4byte 0x0000057B + thumb_func_end sub_0800D294 + + thumb_func_start sub_0800D348 +sub_0800D348: @ 0x0800D348 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + ldr r1, _0800D3D8 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0x27 + bhi _0800D3E0 + ldr r1, _0800D3DC + ldrh r0, [r1] + adds r7, r0, #0 + movs r0, #0 + strh r0, [r1] + movs r2, #0 + ldrb r0, [r5] + cmp r0, #0 + bne _0800D378 +_0800D36A: + adds r2, #1 + cmp r2, #0xd + bgt _0800D378 + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0800D36A +_0800D378: + cmp r2, #0xe + beq _0800D3D0 + movs r2, #0 + movs r0, #0x8c + lsls r0, r0, #2 + adds r3, r6, r0 +_0800D384: + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r2, r0 + adds r0, r6, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0xd + ble _0800D384 + movs r1, #0x8c + lsls r1, r1, #2 + adds r4, r6, r1 + ldrb r0, [r4] + adds r0, #1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _0800D3D8 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, #0 + adds r0, r5, #0 + adds r0, #0xd +_0800D3C8: + strb r1, [r0] + subs r0, #1 + cmp r0, r5 + bge _0800D3C8 +_0800D3D0: + ldr r0, _0800D3DC + strh r7, [r0] + b _0800D3EA + .align 2, 0 +_0800D3D8: .4byte 0x00000232 +_0800D3DC: .4byte 0x04000208 +_0800D3E0: + ldr r1, _0800D3F0 + adds r0, r6, r1 + ldrb r1, [r0] + movs r1, #1 + strb r1, [r0] +_0800D3EA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D3F0: .4byte 0x00000233 + thumb_func_end sub_0800D348 + + thumb_func_start sub_0800D3F4 +sub_0800D3F4: @ 0x0800D3F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r3, r1, #0 + ldr r1, _0800D43C + ldrh r0, [r1] + mov r8, r0 + movs r0, #0 + strh r0, [r1] + movs r1, #0xaf + lsls r1, r1, #3 + adds r0, r5, r1 + ldr r7, _0800D440 + adds r4, r5, r7 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _0800D424 + ldr r1, _0800D444 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0800D448 +_0800D424: + movs r1, #0 + adds r0, r3, #0 + adds r0, #0x45 +_0800D42A: + strb r1, [r0] + subs r0, #1 + cmp r0, r3 + bge _0800D42A + ldr r0, _0800D43C + mov r7, r8 + strh r7, [r0] + movs r0, #0 + b _0800D490 + .align 2, 0 +_0800D43C: .4byte 0x04000208 +_0800D440: .4byte 0x00000579 +_0800D444: .4byte 0x0000057B +_0800D448: + movs r2, #0 + movs r6, #0x46 +_0800D44C: + adds r1, r3, r2 + ldrb r0, [r4] + adds r7, r0, #0 + muls r7, r6, r7 + adds r0, r7, #0 + adds r0, r2, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #0x45 + ble _0800D44C + ldr r0, _0800D49C + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, #1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x14 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r7, _0800D4A0 + adds r1, r5, r7 + ldrb r0, [r1] + subs r0, #1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _0800D4A4 + mov r1, r8 + strh r1, [r0] + movs r0, #1 +_0800D490: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800D49C: .4byte 0x00000579 +_0800D4A0: .4byte 0x0000057A +_0800D4A4: .4byte 0x04000208 + thumb_func_end sub_0800D3F4 + + thumb_func_start sub_0800D4A8 +sub_0800D4A8: @ 0x0800D4A8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r1, #0x8c + lsls r1, r1, #2 + adds r0, r5, r1 + adds r1, #1 + adds r4, r5, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _0800D4CC + ldr r1, _0800D4D0 + adds r0, r5, r1 + ldrb r0, [r0] + adds r2, r0, #0 + cmp r2, #0 + beq _0800D4D4 +_0800D4CC: + movs r0, #0 + b _0800D520 + .align 2, 0 +_0800D4D0: .4byte 0x00000233 +_0800D4D4: + ldr r1, _0800D528 + ldrh r0, [r1] + adds r7, r0, #0 + strh r2, [r1] + movs r3, #0 +_0800D4DE: + adds r2, r6, r3 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r3, r0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r3, #1 + cmp r3, #0xd + ble _0800D4DE + ldr r0, _0800D52C + adds r4, r5, r0 + ldrb r0, [r4] + adds r0, #1 + ldrb r1, [r4] + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x28 + bl __umodsi3 + ldrb r1, [r4] + strb r0, [r4] + ldr r0, _0800D530 + adds r1, r5, r0 + ldrb r0, [r1] + subs r0, #1 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _0800D528 + strh r7, [r0] + movs r0, #1 +_0800D520: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800D528: .4byte 0x04000208 +_0800D52C: .4byte 0x00000231 +_0800D530: .4byte 0x00000232 + thumb_func_end sub_0800D4A8 + + thumb_func_start sub_0800D534 +sub_0800D534: @ 0x0800D534 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0800D54A + adds r0, r2, #0 + movs r1, #0 + bl sub_0800D594 + b _0800D58C +_0800D54A: + movs r3, #0 +_0800D54C: + ldrb r1, [r2, #0x1c] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r3, r0 + adds r0, r2, r0 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, #0xd + ble _0800D54C + ldrb r0, [r2, #0x1c] + adds r0, #1 + ldrb r1, [r2, #0x1c] + strb r0, [r2, #0x1c] + ldrb r1, [r2, #0x1c] + movs r0, #1 + ands r0, r1 + ldrb r1, [r2, #0x1c] + strb r0, [r2, #0x1c] + ldrb r0, [r2, #0x1e] + cmp r0, #1 + bhi _0800D586 + ldrb r0, [r2, #0x1e] + adds r0, #1 + ldrb r1, [r2, #0x1e] + strb r0, [r2, #0x1e] + b _0800D58C +_0800D586: + ldrb r0, [r2, #0x1c] + ldrb r1, [r2, #0x1d] + strb r0, [r2, #0x1d] +_0800D58C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800D534 + + thumb_func_start sub_0800D594 +sub_0800D594: @ 0x0800D594 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + ldrb r0, [r3, #0x1e] + cmp r0, #0 + bne _0800D5A4 + movs r0, #0 + b _0800D5DE +_0800D5A4: + cmp r5, #0 + beq _0800D5C2 + movs r4, #0 +_0800D5AA: + adds r2, r5, r4 + ldrb r1, [r3, #0x1d] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r4, r0 + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r2] + adds r4, #1 + cmp r4, #0xd + ble _0800D5AA +_0800D5C2: + ldrb r0, [r3, #0x1d] + adds r0, #1 + ldrb r1, [r3, #0x1d] + strb r0, [r3, #0x1d] + ldrb r1, [r3, #0x1d] + movs r0, #1 + ands r0, r1 + ldrb r1, [r3, #0x1d] + strb r0, [r3, #0x1d] + ldrb r0, [r3, #0x1e] + subs r0, #1 + ldrb r1, [r3, #0x1e] + strb r0, [r3, #0x1e] + movs r0, #1 +_0800D5DE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0800D594 + + thumb_func_start sub_0800D5E4 +sub_0800D5E4: @ 0x0800D5E4 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + ldr r1, _0800D638 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + bhi _0800D63C + movs r2, #0 + movs r0, #0x80 + lsls r0, r0, #2 + adds r4, r3, r0 +_0800D5FC: + ldrb r0, [r4] + lsls r0, r0, #8 + adds r0, r2, r0 + adds r0, r3, r0 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0xff + ble _0800D5FC + movs r0, #0x80 + lsls r0, r0, #2 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _0800D638 + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + b _0800D646 + .align 2, 0 +_0800D638: .4byte 0x00000202 +_0800D63C: + ldr r1, _0800D64C + adds r0, r3, r1 + ldrb r1, [r0] + movs r1, #1 + strb r1, [r0] +_0800D646: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D64C: .4byte 0x00000203 + thumb_func_end sub_0800D5E4 + + thumb_func_start sub_0800D650 +sub_0800D650: @ 0x0800D650 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r3, r1 + adds r1, #1 + adds r4, r3, r1 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + beq _0800D672 + ldr r1, _0800D678 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0800D67C +_0800D672: + movs r0, #0 + b _0800D6B6 + .align 2, 0 +_0800D678: .4byte 0x00000203 +_0800D67C: + movs r2, #0 +_0800D67E: + adds r0, r5, r2 + ldrb r1, [r4] + lsls r1, r1, #8 + adds r1, r2, r1 + adds r1, r3, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0xff + ble _0800D67E + ldr r0, _0800D6BC + adds r1, r3, r0 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + ldrb r2, [r1] + strb r0, [r1] + ldr r0, _0800D6C0 + adds r1, r3, r0 + ldrb r0, [r1] + subs r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #1 +_0800D6B6: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0800D6BC: .4byte 0x00000201 +_0800D6C0: .4byte 0x00000202 + thumb_func_end sub_0800D650 + + thumb_func_start sub_0800D6C4 +sub_0800D6C4: @ 0x0800D6C4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r1, #0 + movs r5, #0 + cmp r1, #1 + beq _0800D702 + cmp r1, #1 + bgt _0800D6DE + cmp r1, #0 + beq _0800D6E8 + b _0800D776 +_0800D6DE: + cmp r0, #2 + beq _0800D722 + cmp r0, #3 + beq _0800D742 + b _0800D776 +_0800D6E8: + movs r4, #0 +_0800D6EA: + adds r0, r6, r4 + adds r1, r4, #1 + strb r1, [r0] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, r1, #0 + cmp r4, #0xc7 + ble _0800D6EA + b _0800D73C +_0800D702: + movs r4, #0 + adds r2, r6, #0 + adds r2, #0xc8 +_0800D708: + adds r0, r6, r4 + adds r1, r4, #1 + strb r1, [r0] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, r1, #0 + cmp r4, #0x63 + ble _0800D708 + strh r5, [r2] + b _0800D776 +_0800D722: + movs r4, #0 +_0800D724: + bl sub_0806F050 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r6, r4 + strb r0, [r1] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, #1 + cmp r4, #0xc7 + ble _0800D724 +_0800D73C: + adds r0, r6, r4 + strh r5, [r0] + b _0800D776 +_0800D742: + movs r4, #0 + ldr r3, _0800D77C + ldrb r1, [r3] + ldrb r0, [r3] + adds r7, r0, #1 + adds r2, r1, #1 + movs r0, #0xff + mov ip, r0 +_0800D752: + adds r0, r6, r4 + adds r1, r4, #1 + strb r2, [r0] + adds r0, r4, r7 + mov r4, ip + ands r0, r4 + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r2, #1 + adds r4, r1, #0 + cmp r1, #0xc7 + ble _0800D752 + adds r0, r6, r1 + strh r5, [r0] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_0800D776: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D77C: .4byte gUnknown_3000D74 + thumb_func_end sub_0800D6C4 + + thumb_func_start sub_0800D780 +sub_0800D780: @ 0x0800D780 + push {r4, r5, lr} + adds r4, r0, #0 + movs r3, #0 + ldrb r0, [r1] + cmp r0, #0xff + beq _0800D7A4 + ldr r5, _0800D7B0 + adds r2, r1, #0 +_0800D790: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + adds r3, #1 + ldrb r0, [r2] + cmp r0, #0xff + bne _0800D790 +_0800D7A4: + adds r1, r4, r3 + movs r0, #0 + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D7B0: .4byte gUnknown_82C01C0 + thumb_func_end sub_0800D780 + + thumb_func_start sub_0800D7B4 +sub_0800D7B4: @ 0x0800D7B4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r3, #0 + ldrb r0, [r1] + cmp r0, #0 + beq _0800D7D8 + ldr r5, _0800D7E4 + adds r2, r1, #0 +_0800D7C4: + adds r1, r4, r3 + ldrb r0, [r2] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + adds r3, #1 + ldrb r0, [r2] + cmp r0, #0 + bne _0800D7C4 +_0800D7D8: + adds r1, r4, r3 + movs r0, #0xff + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800D7E4: .4byte gUnknown_82C00C0 + thumb_func_end sub_0800D7B4 + + thumb_func_start sub_0800D7E8 +sub_0800D7E8: @ 0x0800D7E8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r0, _0800D810 + ldr r4, [r0] + ldrb r2, [r4, #2] + ldrb r1, [r4] + adds r7, r0, #0 + cmp r1, #1 + bne _0800D83E + movs r3, #0 + ands r1, r2 + cmp r1, #0 + beq _0800D81A + cmp r5, #1 + bne _0800D814 + ldrb r0, [r4, #0xa] + b _0800D858 + .align 2, 0 +_0800D810: .4byte gUnknown_3007630 +_0800D814: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0800D81A: + lsrs r2, r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bhi _0800D856 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0800D81A + adds r0, r6, #1 + cmp r5, r0 + bne _0800D814 +_0800D834: + ldr r0, [r7] + adds r0, #0xa + adds r0, r0, r3 + ldrb r0, [r0] + b _0800D858 +_0800D83E: + movs r3, #0 + movs r1, #1 +_0800D842: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0800D834 + lsrs r2, r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800D842 +_0800D856: + movs r0, #0 +_0800D858: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800D7E8 + + thumb_func_start sub_0800D860 +sub_0800D860: @ 0x0800D860 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r4, #0 + ldr r0, _0800D93C + mov r8, r0 + adds r6, r7, #2 + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0xa +_0800D87E: + adds r0, r6, r4 + adds r1, r5, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #1 + ble _0800D87E + movs r4, #0 + lsls r2, r2, #7 + mov ip, r2 + adds r1, r7, #4 +_0800D894: + adds r0, r1, r4 + strb r3, [r0] + asrs r3, r3, #8 + adds r4, #1 + cmp r4, #3 + ble _0800D894 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #8] + movs r6, #1 + movs r1, #1 + ands r1, r0 + ldrb r2, [r7, #0xb] + movs r5, #2 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #0xb] + movs r4, #0x7f + mov r1, sb + ands r1, r4 + ldrb r2, [r7, #0xa] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + ands r0, r4 + mov r1, ip + orrs r0, r1 + strb r0, [r7, #0xa] + ldrb r0, [r7] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r6 + ldrb r2, [r7, #1] + movs r0, #0x3d + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #0xc + orrs r0, r2 + strb r0, [r7, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r1, r0 + subs r0, #0x10 + ands r1, r0 + subs r0, #0x20 + ands r1, r0 + strb r1, [r7] + ldr r0, _0800D940 + bl sub_0809D068 + lsls r0, r0, #7 + ldrb r1, [r7] + ands r4, r1 + orrs r4, r0 + strb r4, [r7] + bl sub_0809CD04 + ands r0, r6 + ldrb r1, [r7, #1] + ands r5, r1 + orrs r5, r0 + strb r5, [r7, #1] + ldr r0, _0800D944 + bl sub_0809D068 + ands r6, r0 + lsls r6, r6, #1 + ldrb r1, [r7, #1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r7, #1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800D93C: .4byte gUnknown_3005AF0 +_0800D940: .4byte 0x0000087F +_0800D944: .4byte 0x00000864 + thumb_func_end sub_0800D860 + + thumb_func_start sub_0800D948 +sub_0800D948: @ 0x0800D948 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + ldr r0, _0800D99C + ldrb r0, [r0, #6] + cmp r0, #1 + bne _0800D9A4 + movs r0, #1 + mov sb, r0 + ldr r6, _0800D9A0 + ldr r0, [r6] + lsls r4, r5, #5 + adds r0, r0, r4 + ldrh r0, [r0, #0x18] + bl sub_0800FF54 + cmp r0, #0 + beq _0800D984 + ldr r1, [r6] + ldrb r0, [r1, #7] + asrs r0, r5 + mov r2, sb + ands r0, r2 + cmp r0, #0 + bne _0800D9BC +_0800D984: + adds r0, r7, #0 + movs r1, #0 + movs r2, #0xd + bl memset + mov r0, r8 + movs r1, #0 + movs r2, #8 + bl memset + b _0800D9F0 + .align 2, 0 +_0800D99C: .4byte gUnknown_30041E0 +_0800D9A0: .4byte gUnknown_3007630 +_0800D9A4: + movs r0, #0 + mov sb, r0 + ldr r6, _0800D9D8 + ldr r0, [r6] + lsls r4, r5, #5 + adds r0, r0, r4 + ldrh r0, [r0, #0x18] + bl sub_0800FF54 + cmp r0, #0 + beq _0800D9DC + ldr r1, [r6] +_0800D9BC: + 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, #8 + bl memcpy + b _0800D9F0 + .align 2, 0 +_0800D9D8: .4byte gUnknown_3007630 +_0800D9DC: + adds r0, r7, #0 + movs r1, #0 + movs r2, #0xd + bl memset + mov r0, r8 + movs r1, #0 + movs r2, #8 + bl memset +_0800D9F0: + mov r0, sb + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800D948 + + thumb_func_start sub_0800DA00 +sub_0800DA00: @ 0x0800DA00 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + movs r7, #0 + ldr r6, _0800DA38 + ldr r0, [r6] + lsrs r4, r2, #0x13 + adds r2, r0, r4 + ldrh r1, [r2, #0x18] + ldr r0, _0800DA3C + cmp r1, r0 + bne _0800DA40 + 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, #8 + bl memcpy + movs r7, #1 + b _0800DA54 + .align 2, 0 +_0800DA38: .4byte gUnknown_3007630 +_0800DA3C: .4byte 0x00007F7F +_0800DA40: + adds r0, r3, #0 + movs r1, #0 + movs r2, #0xd + bl memset + adds r0, r5, #0 + movs r1, #0 + movs r2, #8 + bl memset +_0800DA54: + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0800DA00 + + thumb_func_start sub_0800DA5C +sub_0800DA5C: @ 0x0800DA5C + push {r4, lr} + adds r4, r1, #0 + ldr r1, _0800DA78 + movs r2, #0xd + bl memcpy + ldr r1, _0800DA7C + adds r0, r4, #0 + movs r2, #8 + bl memcpy + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800DA78: .4byte gUnknown_20227CC +_0800DA7C: .4byte gUnknown_20227DA + thumb_func_end sub_0800DA5C + + thumb_func_start sub_0800DA80 +sub_0800DA80: @ 0x0800DA80 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + cmp r3, #0 + bne _0800DA96 + cmp r2, #0 + bne _0800DA96 + movs r3, #0xe7 + movs r2, #8 +_0800DA96: + ldr r0, _0800DAD8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _0800DAF0 + ldr r0, _0800DADC + adds r1, r3, #0 + movs r3, #0 + bl sub_08006B0C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0800DAE0 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, _0800DAE4 + strh r0, [r4, #0x3c] + ldr r0, _0800DAE8 + ldrh r0, [r0, #6] + bl sub_08008338 + strh r0, [r4, #0x3a] + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldr r0, _0800DAEC + strb r5, [r0] + b _0800DB36 + .align 2, 0 +_0800DAD8: .4byte gUnknown_3007630 +_0800DADC: .4byte gUnknown_82C0340 +_0800DAE0: .4byte gUnknown_20205AC +_0800DAE4: .4byte 0x00001234 +_0800DAE8: .4byte gUnknown_82C0330 +_0800DAEC: .4byte gUnknown_20227C8 +_0800DAF0: + ldr r0, _0800DB3C + adds r1, r3, #0 + movs r3, #0 + bl sub_08006B0C + ldr r4, _0800DB40 + strb r0, [r4] + ldr r5, _0800DB44 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0800DB48 + strh r1, [r0, #0x3c] + ldr r0, _0800DB4C + ldrh r0, [r0, #6] + bl sub_08008338 + ldrb r2, [r4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + strh r0, [r1, #0x3a] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0800DB36: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800DB3C: .4byte gUnknown_82C0340 +_0800DB40: .4byte gUnknown_20227C8 +_0800DB44: .4byte gUnknown_20205AC +_0800DB48: .4byte 0x00001234 +_0800DB4C: .4byte gUnknown_82C0330 + thumb_func_end sub_0800DA80 + + thumb_func_start sub_0800DB50 +sub_0800DB50: @ 0x0800DB50 + push {r4, lr} + ldr r4, _0800DB9C + ldr r3, _0800DBA0 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r4 + movs r0, #0x3c + ldrsh r1, [r2, r0] + ldr r0, _0800DBA4 + cmp r1, r0 + bne _0800DB96 + movs r0, #0 + strh r0, [r2, #0x3c] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r3, _0800DBA8 + movs r0, #0x84 + lsls r0, r0, #3 + adds r3, r3, r0 + ldr r0, _0800DBAC + ldr r1, [r0] + ldr r2, [r0, #4] + str r1, [r3] + str r2, [r3, #4] + ldr r1, _0800DBB0 + movs r2, #4 + bl CpuSet +_0800DB96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800DB9C: .4byte gUnknown_20205AC +_0800DBA0: .4byte gUnknown_20227C8 +_0800DBA4: .4byte 0x00001234 +_0800DBA8: .4byte gUnknown_3002360 +_0800DBAC: .4byte gUnknown_82BF2F8 +_0800DBB0: .4byte 0x070003E8 + thumb_func_end sub_0800DB50 + + thumb_func_start sub_0800DBB4 +sub_0800DBB4: @ 0x0800DBB4 + push {r4, lr} + ldr r4, _0800DBE0 + ldrh r0, [r4, #6] + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _0800DBE4 + cmp r0, r1 + bne _0800DBCC + adds r0, r4, #0 + bl sub_08034388 +_0800DBCC: + ldr r0, _0800DBE8 + bl sub_0800845C + ldr r1, _0800DBEC + movs r0, #0xff + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800DBE0: .4byte gUnknown_82C0330 +_0800DBE4: .4byte 0xFFFF0000 +_0800DBE8: .4byte gUnknown_82C0338 +_0800DBEC: .4byte gUnknown_20227C8 + thumb_func_end sub_0800DBB4 + + thumb_func_start sub_0800DBF0 +sub_0800DBF0: @ 0x0800DBF0 + push {r4, lr} + ldr r1, _0800DC10 + ldr r0, [r1] + ldrb r2, [r0, #2] + movs r3, #0 + movs r4, #1 +_0800DBFC: + adds r0, r2, #0 + ands r0, r4 + cmp r0, #0 + beq _0800DC14 + ldr r0, [r1] + adds r0, #0xa + adds r0, r0, r3 + ldrb r0, [r0] + b _0800DC22 + .align 2, 0 +_0800DC10: .4byte gUnknown_3007630 +_0800DC14: + lsrs r2, r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800DBFC + movs r0, #0 +_0800DC22: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0800DBF0 + + thumb_func_start sub_0800DC28 +sub_0800DC28: @ 0x0800DC28 + push {lr} + adds r2, r0, #0 + movs r3, #0x32 + ldrsh r0, [r2, r3] + cmp r0, r1 + beq _0800DC3C + movs r0, #0 + strh r1, [r2, #0x32] + strh r0, [r2, #0x34] + strh r0, [r2, #0x36] +_0800DC3C: + pop {r0} + bx r0 + thumb_func_end sub_0800DC28 + + thumb_func_start sub_0800DC40 +sub_0800DC40: @ 0x0800DC40 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _0800DC84 + ldrb r0, [r1] + cmp r0, #0xff + bne _0800DC50 + b _0800DE12 +_0800DC50: + ldr r2, _0800DC88 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + movs r0, #0x3c + ldrsh r1, [r2, r0] + ldr r0, _0800DC8C + cmp r1, r0 + beq _0800DC68 + b _0800DE12 +_0800DC68: + adds r6, r2, #0 + movs r5, #0xff + movs r4, #0 + ldr r0, _0800DC90 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #1 + bne _0800DCC2 + adds r7, r6, #0 + adds r7, #0x28 + movs r1, #0x29 + adds r1, r1, r6 + mov r8, r1 + b _0800DCB2 + .align 2, 0 +_0800DC84: .4byte gUnknown_20227C8 +_0800DC88: .4byte gUnknown_20205AC +_0800DC8C: .4byte 0x00001234 +_0800DC90: .4byte gUnknown_3007630 +_0800DC94: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0800D7E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blo _0800DCB2 + adds r0, r4, #0 + bl sub_0800D7E8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0800DCB2: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r4, r0 + blt _0800DC94 + b _0800DCD4 +_0800DCC2: + bl sub_0800DBF0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r6, #0 + adds r7, #0x28 + movs r2, #0x29 + adds r2, r2, r6 + mov r8, r2 +_0800DCD4: + bl sub_08011D10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0800DCE4 + movs r0, #4 + b _0800DD12 +_0800DCE4: + cmp r5, #0x18 + bhi _0800DCEC + movs r0, #3 + b _0800DD12 +_0800DCEC: + adds r0, r5, #0 + subs r0, #0x19 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x65 + bhi _0800DCFC + movs r0, #2 + b _0800DD12 +_0800DCFC: + adds r0, r5, #0 + subs r0, #0x7f + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x65 + bhi _0800DD0C + movs r0, #1 + b _0800DD12 +_0800DD0C: + cmp r5, #0xe4 + bls _0800DD14 + movs r0, #0 +_0800DD12: + strh r0, [r6, #0x2e] +_0800DD14: + movs r3, #0x2e + ldrsh r1, [r6, r3] + movs r2, #0x30 + ldrsh r0, [r6, r2] + cmp r1, r0 + beq _0800DD2A + adds r0, r6, #0 + bl sub_0800DC28 + ldrh r0, [r6, #0x2e] + strh r0, [r6, #0x30] +_0800DD2A: + movs r0, #0x32 + ldrsh r1, [r6, r0] + ldr r2, [r6, #8] + lsls r1, r1, #2 + adds r1, r1, r2 + movs r3, #0x36 + ldrsh r0, [r6, r3] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0xa + lsrs r0, r0, #0x1a + movs r3, #0x34 + ldrsh r1, [r6, r3] + cmp r0, r1 + bge _0800DD78 + ldrh r0, [r6, #0x36] + adds r0, #1 + movs r3, #0 + strh r0, [r6, #0x36] + strh r3, [r6, #0x34] + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0x36 + ldrsh r1, [r6, r2] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0800DD7E + strh r3, [r6, #0x36] + b _0800DD7E +_0800DD78: + ldrh r0, [r6, #0x34] + adds r0, #1 + strh r0, [r6, #0x34] +_0800DD7E: + ldr r4, _0800DE1C + movs r1, #0x84 + lsls r1, r1, #3 + adds r0, r4, r1 + ldr r1, _0800DE20 + ldr r2, [r1, #4] + ldr r1, [r1] + str r1, [r0] + str r2, [r0, #4] + movs r3, #0x20 + ldrsh r2, [r6, r3] + movs r1, #0 + ldrsb r1, [r7, r1] + adds r2, r2, r1 + ldr r1, _0800DE24 + adds r5, r4, r1 + ldr r3, _0800DE28 + adds r1, r3, #0 + ands r2, r1 + ldrh r3, [r5] + ldr r1, _0800DE2C + ands r1, r3 + orrs r1, r2 + strh r1, [r5] + ldrh r1, [r6, #0x22] + mov r2, r8 + ldrb r2, [r2] + adds r1, r1, r2 + strb r1, [r0] + ldrb r2, [r6, #5] + ldr r3, _0800DE30 + adds r5, r4, r3 + lsrs r2, r2, #4 + lsls r2, 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, #8] + lsls r2, r2, #2 + adds r2, r2, r1 + movs r3, #0x36 + ldrsh r1, [r6, r3] + ldr r2, [r2] + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r1] + ldrh r6, [r6, #0x3a] + adds r2, r2, r6 + ldr r1, _0800DE34 + adds r4, r4, r1 + ldr r3, _0800DE38 + adds r1, r3, #0 + ands r2, r1 + ldrh r3, [r4] + ldr r1, _0800DE3C + ands r1, r3 + orrs r1, r2 + strh r1, [r4] + ldr r1, _0800DE40 + movs r2, #4 + bl CpuSet + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0800DE12 + bl sub_0800DB50 +_0800DE12: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800DE1C: .4byte gUnknown_3002360 +_0800DE20: .4byte gUnknown_82C02C0 +_0800DE24: .4byte 0x00000422 +_0800DE28: .4byte 0x000001FF +_0800DE2C: .4byte 0xFFFFFE00 +_0800DE30: .4byte 0x00000425 +_0800DE34: .4byte 0x00000424 +_0800DE38: .4byte 0x000003FF +_0800DE3C: .4byte 0xFFFFFC00 +_0800DE40: .4byte 0x070003E8 + thumb_func_end sub_0800DC40 + + thumb_func_start sub_0800DE44 +sub_0800DE44: @ 0x0800DE44 + push {lr} + stm r0!, {r1} + adds r1, r2, #0 + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800DE44 + + thumb_func_start sub_0800DE54 +sub_0800DE54: @ 0x0800DE54 + push {lr} + adds r2, r0, #0 + movs r1, #0 +_0800DE5A: + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0800DE66 + movs r0, #1 + b _0800DE6E +_0800DE66: + adds r1, #1 + cmp r1, #7 + ble _0800DE5A + movs r0, #0 +_0800DE6E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800DE54 + + thumb_func_start sub_0800DE74 +sub_0800DE74: @ 0x0800DE74 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r0, _0800DE98 + ldrb r0, [r0] + cmp r0, #0 + bne _0800DE8A + b _0800DFE8 +_0800DE8A: + movs r0, #0xf0 + bl sub_08000BDC + str r0, [sp, #0x14] + movs r4, #0 + b _0800DF00 + .align 2, 0 +_0800DE98: .4byte gUnknown_300319C +_0800DE9C: + lsls r2, r4, #2 + mov r0, sp + adds r1, r0, r2 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + movs r5, #0 + mov r8, r2 + lsls r0, r4, #3 + adds r1, r4, #1 + mov sb, r1 + subs r0, r0, r4 + lsls r0, r0, #2 + str r0, [sp, #0x1c] + ldr r7, _0800DF24 + mov sl, r7 + ldr r6, _0800DF28 + movs r4, #0 + mov r0, sl + subs r0, #4 + ldr r1, [sp, #0x1c] + adds r3, r1, r0 +_0800DEC8: + ldrh r1, [r3] + ldr r0, _0800DF2C + ldr r2, [r0] + ldr r7, _0800DF28 + adds r0, r2, r7 + adds r0, r0, r4 + ldr r0, [r0] + cmp r1, r0 + bne _0800DEF4 + adds r1, r2, r6 + adds r1, #4 + ldr r0, [sp, #0x1c] + add r0, sl + str r3, [sp, #0x18] + bl sub_0800895C + ldr r3, [sp, #0x18] + cmp r0, #0 + bne _0800DEF4 + mov r0, sp + add r0, r8 + str r5, [r0] +_0800DEF4: + adds r6, #0xc + adds r4, #0xc + adds r5, #1 + cmp r5, #0x13 + ble _0800DEC8 + mov r4, sb +_0800DF00: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _0800DE9C + movs r7, #0 + movs r4, #0 + ldr r0, _0800DF30 + mov sl, r0 + mov r6, sp + movs r1, #8 + add r1, sl + mov sb, r1 + mov r8, r4 + ldr r5, [sp, #0x14] + b _0800DF78 + .align 2, 0 +_0800DF24: .4byte gUnknown_20226A8 +_0800DF28: .4byte 0x00003B98 +_0800DF2C: .4byte gUnknown_3005AEC +_0800DF30: .4byte gUnknown_20226A0 +_0800DF34: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _0800DF6E + mov r0, sl + adds r0, #4 + add r0, r8 + ldrh r1, [r0] + adds r0, r5, #0 + mov r2, sb + bl sub_0800DE44 + ldr r2, [r6] + cmp r2, #0 + blt _0800DF6A + ldr r0, _0800DFF8 + ldr r1, [r0] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _0800DFFC + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] +_0800DF6A: + adds r5, #0xc + adds r7, #1 +_0800DF6E: + adds r6, #4 + movs r1, #0x1c + add sb, r1 + add r8, r1 + adds r4, #1 +_0800DF78: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _0800DF34 + movs r4, #0 + ldr r0, _0800DFF8 + mov sb, r0 + ldr r6, _0800E000 + mov r8, r4 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, [sp, #0x14] + adds r5, r0, r1 +_0800DF98: + mov r1, sb + ldr r0, [r1] + adds r0, r0, r6 + adds r0, #4 + bl sub_0800DE54 + cmp r0, #0 + beq _0800DFC6 + mov r0, sb + ldr r2, [r0] + ldr r1, _0800E000 + adds r0, r2, r1 + add r0, r8 + ldr r1, [r0] + adds r2, r2, r6 + adds r2, #4 + adds r0, r5, #0 + bl sub_0800DE44 + adds r5, #0xc + adds r7, #1 + cmp r7, #0x13 + bgt _0800DFD2 +_0800DFC6: + adds r6, #0xc + movs r0, #0xc + add r8, r0 + adds r4, #1 + cmp r4, #0x13 + ble _0800DF98 +_0800DFD2: + ldr r0, _0800DFF8 + ldr r0, [r0] + ldr r1, _0800E000 + adds r0, r0, r1 + ldr r1, [sp, #0x14] + movs r2, #0xf0 + bl memcpy + ldr r0, [sp, #0x14] + bl sub_08000BF0 +_0800DFE8: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800DFF8: .4byte gUnknown_3005AEC +_0800DFFC: .4byte 0x00003B9C +_0800E000: .4byte 0x00003B98 + thumb_func_end sub_0800DE74 + + thumb_func_start sub_0800E004 +sub_0800E004: @ 0x0800E004 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r7, #0 + ldr r6, _0800E040 + ldr r4, _0800E044 + movs r5, #0 +_0800E01C: + ldr r0, [r6] + adds r0, r0, r4 + adds r0, #4 + mov r1, sb + bl sub_0800895C + cmp r0, #0 + bne _0800E048 + ldr r0, [r6] + ldr r1, _0800E044 + adds r0, r0, r1 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r8 + bne _0800E048 + movs r0, #1 + b _0800E062 + .align 2, 0 +_0800E040: .4byte gUnknown_3005AEC +_0800E044: .4byte 0x00003B98 +_0800E048: + ldr r0, [r6] + adds r0, r0, r4 + adds r0, #4 + bl sub_0800DE54 + cmp r0, #0 + beq _0800E060 + adds r4, #0xc + adds r5, #0xc + adds r7, #1 + cmp r7, #0x13 + ble _0800E01C +_0800E060: + movs r0, #0 +_0800E062: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800E004 + + thumb_func_start sub_0800E070 +sub_0800E070: @ 0x0800E070 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r0, _0800E0B4 + mov r8, r0 + movs r7, #0 + mov r6, r8 + movs r5, #0 + movs r4, #0x13 +_0800E084: + ldr r0, _0800E0B8 + ldr r1, [r0] + mov r2, r8 + adds r0, r1, r2 + adds r0, r0, r5 + str r7, [r0] + mov r0, sp + strh r7, [r0] + adds r1, r1, r6 + adds r1, #4 + ldr r2, _0800E0BC + bl CpuSet + adds r6, #0xc + adds r5, #0xc + subs r4, #1 + cmp r4, #0 + bge _0800E084 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E0B4: .4byte 0x00003B98 +_0800E0B8: .4byte gUnknown_3005AEC +_0800E0BC: .4byte 0x01000004 + thumb_func_end sub_0800E070 + + thumb_func_start sub_0800E0C0 +sub_0800E0C0: @ 0x0800E0C0 + bx lr + .align 2, 0 + thumb_func_end sub_0800E0C0 + + thumb_func_start sub_0800E0C4 +sub_0800E0C4: @ 0x0800E0C4 + bx lr + .align 2, 0 + thumb_func_end sub_0800E0C4 + + thumb_func_start sub_0800E0C8 +sub_0800E0C8: @ 0x0800E0C8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + ldr r6, _0800E16C + adds r5, r6, #0 + adds r5, #0xee + ldrb r4, [r5] + mov r0, sp + movs r7, #0 + strh r7, [r0] + ldr r2, _0800E170 + adds r1, r6, #0 + bl CpuSet + ldrb r0, [r5] + strb r4, [r5] + movs r0, #0xff + strb r0, [r6, #0xc] + ldrb r0, [r5] + cmp r0, #4 + beq _0800E0FA + ldrb r0, [r5] + strb r7, [r5] +_0800E0FA: + mov r7, sp + adds r7, #2 + add r0, sp, #4 + mov r8, r0 + movs r0, #6 + add r0, sp + mov sb, r0 + adds r5, r6, #0 + adds r5, #0x80 + movs r4, #4 +_0800E10E: + adds r0, r5, #0 + bl sub_0800F7A8 + adds r5, #0x14 + subs r4, #1 + cmp r4, #0 + bge _0800E10E + movs r5, #0 + ldr r4, _0800E174 + adds r0, r4, #0 + bl sub_0800F7A8 + adds r0, r4, #0 + adds r0, #0xb8 + bl sub_0800D184 + ldr r0, _0800E178 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800D1E0 + strh r5, [r7] + ldr r1, _0800E17C + ldr r2, _0800E180 + adds r0, r7, #0 + bl CpuSet + mov r0, r8 + strh r5, [r0] + ldr r1, _0800E184 + ldr r2, _0800E188 + bl CpuSet + mov r0, sb + strh r5, [r0] + ldr r1, _0800E18C + ldr r2, _0800E190 + bl CpuSet + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E16C: .4byte gUnknown_30050A0 +_0800E170: .4byte 0x010004D6 +_0800E174: .4byte gUnknown_300510C +_0800E178: .4byte 0x00000634 +_0800E17C: .4byte gUnknown_30031B0 +_0800E180: .4byte 0x01000008 +_0800E184: .4byte gUnknown_3003130 +_0800E188: .4byte 0x01000028 +_0800E18C: .4byte gUnknown_20226A0 +_0800E190: .4byte 0x01000046 + thumb_func_end sub_0800E0C8 + + thumb_func_start sub_0800E194 +sub_0800E194: @ 0x0800E194 + push {r4, r5, r6, lr} + ldr r4, _0800E1BC + ldr r5, [r4, #4] + ldr r6, [r4, #8] + bl sub_0800E1C4 + bl rfu_REQ_stopMode + bl rfu_waitREQComplete + ldr r1, _0800E1C0 + movs r0, #0 + strh r0, [r1] + str r5, [r4, #4] + str r6, [r4, #8] + movs r0, #1 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E1BC: .4byte gUnknown_30027B0 +_0800E1C0: .4byte 0x04000208 + thumb_func_end sub_0800E194 + + thumb_func_start sub_0800E1C4 +sub_0800E1C4: @ 0x0800E1C4 + push {r4, lr} + ldr r0, _0800E1FC + ldr r1, _0800E200 + ldr r4, _0800E204 + adds r2, r4, #0 + movs r3, #1 + bl rfu_initializeAPI + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0800E1F6 + ldr r0, _0800E208 + strh r1, [r0] + bl sub_0800A6B8 + movs r0, #0 + bl sub_08010CA0 + bl sub_0800E0C8 + adds r1, r4, #4 + movs r0, #3 + bl rfu_setTimerInterrupt +_0800E1F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E1FC: .4byte gUnknown_3004230 +_0800E200: .4byte 0x00000E64 +_0800E204: .4byte gUnknown_30027B4 +_0800E208: .4byte gUnknown_202267E + thumb_func_end sub_0800E1C4 + + thumb_func_start sub_0800E20C +sub_0800E20C: @ 0x0800E20C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08010250 + ldr r0, _0800E22C + ldrh r0, [r0, #4] + cmp r0, #0x12 + bls _0800E220 + b _0800E326 +_0800E220: + lsls r0, r0, #2 + ldr r1, _0800E230 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800E22C: .4byte gUnknown_30050A0 +_0800E230: .4byte _0800E234 +_0800E234: @ jump table + .4byte _0800E280 @ case 0 + .4byte _0800E326 @ case 1 + .4byte _0800E2A8 @ case 2 + .4byte _0800E326 @ case 3 + .4byte _0800E2D8 @ case 4 + .4byte _0800E326 @ case 5 + .4byte _0800E326 @ case 6 + .4byte _0800E326 @ case 7 + .4byte _0800E326 @ case 8 + .4byte _0800E326 @ case 9 + .4byte _0800E326 @ case 10 + .4byte _0800E326 @ case 11 + .4byte _0800E326 @ case 12 + .4byte _0800E326 @ case 13 + .4byte _0800E326 @ case 14 + .4byte _0800E326 @ case 15 + .4byte _0800E326 @ case 16 + .4byte _0800E326 @ case 17 + .4byte _0800E2EC @ case 18 +_0800E280: + ldr r0, _0800E29C + bl sub_0800BA88 + ldr r0, _0800E2A0 + movs r2, #1 + strh r2, [r0, #4] + ldr r1, _0800E2A4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0xa] + b _0800E326 + .align 2, 0 +_0800E29C: .4byte gUnknown_20227E4 +_0800E2A0: .4byte gUnknown_30050A0 +_0800E2A4: .4byte gUnknown_3005B60 +_0800E2A8: + ldr r4, _0800E2CC + ldrb r0, [r4, #0xc] + ldr r3, _0800E2D0 + movs r1, #0 + movs r2, #0xf0 + bl sub_0800BB10 + movs r0, #3 + strh r0, [r4, #4] + ldr r1, _0800E2D4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #6 + strh r1, [r0, #0xa] + b _0800E326 + .align 2, 0 +_0800E2CC: .4byte gUnknown_30050A0 +_0800E2D0: .4byte gUnknown_82C0430 +_0800E2D4: .4byte gUnknown_3005B60 +_0800E2D8: + movs r0, #0 + bl sub_0800BD38 + ldr r1, _0800E2E8 + movs r0, #5 + strh r0, [r1, #4] + b _0800E326 + .align 2, 0 +_0800E2E8: .4byte gUnknown_30050A0 +_0800E2EC: + ldr r4, _0800E32C + ldr r0, _0800E330 + adds r1, r4, r0 + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r0, _0800E334 + bl sub_0800CFE8 + bl sub_0800E578 + bl sub_0800E5C0 + movs r0, #0x14 + strh r0, [r4, #4] + ldr r1, _0800E338 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + strh r1, [r0, #0xa] + ldr r0, _0800E33C + movs r1, #5 + bl sub_080A8878 + adds r0, r5, #0 + bl sub_080A8964 +_0800E326: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800E32C: .4byte gUnknown_30050A0 +_0800E330: .4byte 0x00000993 +_0800E334: .4byte sub_0800E87C +_0800E338: .4byte gUnknown_3005B60 +_0800E33C: .4byte sub_0801034C + thumb_func_end sub_0800E20C + + thumb_func_start sub_0800E340 +sub_0800E340: @ 0x0800E340 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0800E34C + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0800E34C: .4byte gUnknown_82C03F5 + thumb_func_end sub_0800E340 + + thumb_func_start sub_0800E350 +sub_0800E350: @ 0x0800E350 + push {r4, r5, r6, r7, lr} + adds r2, r0, #0 + adds r5, r1, #0 + movs r4, #1 + adds r1, r2, #0 + movs r6, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _0800E390 + movs r3, #0 + movs r5, #1 + ldr r1, _0800E38C +_0800E36A: + adds r0, r2, #0 + ands r0, r5 + cmp r0, #0 + beq _0800E37C + adds r0, r3, r1 + strb r4, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0800E37C: + asrs r2, r2, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800E36A + b _0800E406 + .align 2, 0 +_0800E38C: .4byte gUnknown_3005A36 +_0800E390: + movs r3, #0 + mvns r0, r1 + mov ip, r0 + movs r7, #1 + ldr r4, _0800E40C +_0800E39A: + adds r2, r1, #0 + ands r2, r7 + cmp r2, #0 + bne _0800E3A6 + adds r0, r3, r4 + strb r2, [r0] +_0800E3A6: + asrs r1, r1, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800E39A + movs r4, #4 + ldr r0, _0800E40C + ldrb r7, [r0] +_0800E3B8: + movs r3, #0 + subs r1, r4, #1 + cmp r7, r4 + beq _0800E3D4 + ldr r2, _0800E40C +_0800E3C2: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bhi _0800E3D4 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, r4 + bne _0800E3C2 +_0800E3D4: + cmp r3, #4 + bne _0800E3DA + adds r6, r4, #0 +_0800E3DA: + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0800E3B8 + mov r0, ip + ands r5, r0 + movs r3, #0 + movs r2, #1 + ldr r1, _0800E40C +_0800E3EC: + adds r0, r5, #0 + ands r0, r2 + cmp r0, #0 + beq _0800E3FA + adds r0, r3, r1 + strb r6, [r0] + adds r6, #1 +_0800E3FA: + asrs r5, r5, #1 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0800E3EC +_0800E406: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E40C: .4byte gUnknown_3005A36 + thumb_func_end sub_0800E350 + + thumb_func_start sub_0800E410 +sub_0800E410: @ 0x0800E410 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0800E42C + ldrh r3, [r0, #4] + adds r7, r0, #0 + cmp r3, #0xc + bls _0800E422 + b _0800E55E +_0800E422: + lsls r0, r3, #2 + ldr r1, _0800E430 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800E42C: .4byte gUnknown_30050A0 +_0800E430: .4byte _0800E434 +_0800E434: @ jump table + .4byte _0800E468 @ case 0 + .4byte _0800E55E @ case 1 + .4byte _0800E55E @ case 2 + .4byte _0800E55E @ case 3 + .4byte _0800E55E @ case 4 + .4byte _0800E55E @ case 5 + .4byte _0800E480 @ case 6 + .4byte _0800E55E @ case 7 + .4byte _0800E55E @ case 8 + .4byte _0800E4A8 @ case 9 + .4byte _0800E55E @ case 10 + .4byte _0800E4BC @ case 11 + .4byte _0800E500 @ case 12 +_0800E468: + ldr r0, _0800E478 + bl sub_0800BA88 + ldr r0, _0800E47C + movs r2, #1 + strh r2, [r0, #4] + b _0800E490 + .align 2, 0 +_0800E478: .4byte gUnknown_82C0358 +_0800E47C: .4byte gUnknown_30050A0 +_0800E480: + ldrb r0, [r7, #0xc] + ldr r3, _0800E4A0 + movs r1, #0 + movs r2, #0xf0 + bl sub_0800BB10 + movs r2, #7 + strh r2, [r7, #4] +_0800E490: + ldr r1, _0800E4A4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0xa] + b _0800E55E + .align 2, 0 +_0800E4A0: .4byte gUnknown_82C0430 +_0800E4A4: .4byte gUnknown_3005B60 +_0800E4A8: + ldr r0, _0800E4B8 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xa + strh r0, [r1, #0xa] + b _0800E55E + .align 2, 0 +_0800E4B8: .4byte gUnknown_3005B60 +_0800E4BC: + bl sub_080102A0 + cmp r0, #6 + beq _0800E4E0 + cmp r0, #6 + bgt _0800E4CE + cmp r0, #5 + beq _0800E4D4 + b _0800E55E +_0800E4CE: + cmp r0, #9 + beq _0800E4E0 + b _0800E55E +_0800E4D4: + ldr r1, _0800E4DC + movs r0, #0xc + strh r0, [r1, #4] + b _0800E55E + .align 2, 0 +_0800E4DC: .4byte gUnknown_30050A0 +_0800E4E0: + bl sub_0800D0EC + ldr r0, _0800E4F8 + ldr r1, _0800E4FC + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + adds r0, r6, #0 + bl sub_080A8964 + b _0800E55E + .align 2, 0 +_0800E4F8: .4byte gUnknown_30050A0 +_0800E4FC: .4byte 0x0000099C +_0800E500: + ldr r0, _0800E564 + adds r4, r7, r0 + ldrb r0, [r4] + movs r5, #0x80 + lsls r5, r5, #0x11 + lsls r5, r0 + lsrs r5, r5, #0x18 + ldrb r1, [r4] + movs r0, #0xc + bl rfu_clearSlot + ldrb r1, [r4] + ldr r0, _0800E568 + 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, _0800E56C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + strh r1, [r0, #0xa] + adds r0, r6, #0 + bl sub_080A8964 + ldr r4, _0800E570 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0800E556 + bl sub_08011D68 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] +_0800E556: + ldr r0, _0800E574 + movs r1, #5 + bl sub_080A8878 +_0800E55E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800E564: .4byte 0x000008F6 +_0800E568: .4byte 0x000008F7 +_0800E56C: .4byte gUnknown_3005B60 +_0800E570: .4byte gUnknown_20227FC +_0800E574: .4byte sub_0801034C + thumb_func_end sub_0800E410 + + thumb_func_start sub_0800E578 +sub_0800E578: @ 0x0800E578 + push {r4, r5, lr} + ldr r0, _0800E5B8 + ldrb r5, [r0] + movs r4, #0 +_0800E580: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _0800E5A4 + lsls r2, r4, #3 + subs r2, r2, r4 + lsls r2, r2, #1 + ldr r0, _0800E5BC + adds r2, r2, r0 + movs r0, #0x10 + adds r1, r4, #0 + movs r3, #0xe + bl rfu_setRecvBuffer + movs r0, #3 + adds r1, r4, #0 + bl rfu_clearSlot +_0800E5A4: + lsrs r5, r5, #1 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800E580 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800E5B8: .4byte gUnknown_30041E0 +_0800E5BC: .4byte gUnknown_30050B4 + thumb_func_end sub_0800E578 + + thumb_func_start sub_0800E5C0 +sub_0800E5C0: @ 0x0800E5C0 + push {r4, r5, r6, lr} + ldr r0, _0800E5FC + ldrb r5, [r0] + ldr r4, _0800E600 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x46 + bl rfu_UNI_setSendData + adds r0, r5, #0 + bl sub_0800E340 + ldr r1, _0800E604 + adds r6, r4, r1 + adds r1, r4, #0 + adds r1, #0x53 + strb r0, [r1] + adds r4, #0x5b + strb r5, [r4] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r5, #0 + bl sub_0800E350 + movs r0, #1 + strb r0, [r6, #0xc] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E5FC: .4byte gUnknown_30041E0 +_0800E600: .4byte gUnknown_30059DF +_0800E604: .4byte 0xFFFFF6C1 + thumb_func_end sub_0800E5C0 + + thumb_func_start sub_0800E608 +sub_0800E608: @ 0x0800E608 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x54 + bne _0800E63C + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0800E63C + ldr r0, _0800E654 + ldrb r0, [r0] + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + movs r0, #0 + movs r1, #0 + bl sub_08011554 +_0800E63C: + ldr r0, _0800E658 + ldrh r2, [r0, #4] + adds r6, r0, #0 + cmp r2, #0x12 + bls _0800E648 + b _0800E7BA +_0800E648: + lsls r0, r2, #2 + ldr r1, _0800E65C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800E654: .4byte gUnknown_30041E0 +_0800E658: .4byte gUnknown_30050A0 +_0800E65C: .4byte _0800E660 +_0800E660: @ jump table + .4byte _0800E6AC @ case 0 + .4byte _0800E7BA @ case 1 + .4byte _0800E7BA @ case 2 + .4byte _0800E7BA @ case 3 + .4byte _0800E7BA @ case 4 + .4byte _0800E7BA @ case 5 + .4byte _0800E7BA @ case 6 + .4byte _0800E7BA @ case 7 + .4byte _0800E7BA @ case 8 + .4byte _0800E7BA @ case 9 + .4byte _0800E7BA @ case 10 + .4byte _0800E7BA @ case 11 + .4byte _0800E7BA @ case 12 + .4byte _0800E6FC @ case 13 + .4byte _0800E75C @ case 14 + .4byte _0800E7BA @ case 15 + .4byte _0800E770 @ case 16 + .4byte _0800E6D4 @ case 17 + .4byte _0800E7BA @ case 18 +_0800E6AC: + ldr r0, _0800E6C8 + bl sub_0800BA88 + ldr r0, _0800E6CC + movs r2, #1 + strh r2, [r0, #4] + ldr r1, _0800E6D0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0xa] + b _0800E7BA + .align 2, 0 +_0800E6C8: .4byte gUnknown_20227E4 +_0800E6CC: .4byte gUnknown_30050A0 +_0800E6D0: .4byte gUnknown_3005B60 +_0800E6D4: + ldr r3, _0800E6F0 + movs r0, #2 + movs r1, #0 + movs r2, #0xf0 + bl sub_0800BB10 + ldr r0, _0800E6F4 + bl sub_0800CFE8 + ldr r1, _0800E6F8 + movs r0, #0x12 + strh r0, [r1, #4] + b _0800E7BA + .align 2, 0 +_0800E6F0: .4byte gUnknown_82C0430 +_0800E6F4: .4byte sub_0800E7F4 +_0800E6F8: .4byte gUnknown_30050A0 +_0800E6FC: + ldr r1, _0800E740 + adds r0, r6, r1 + ldrb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r1 + lsrs r0, r0, #0x18 + adds r1, r6, #0 + adds r1, #0x4c + movs r2, #0xe + bl rfu_UNI_setSendData + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0800E7BA + strb r0, [r6, #0xc] + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _0800E744 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x16 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0800E74C + ldr r0, _0800E748 + movs r1, #1 + bl sub_080A8878 + b _0800E7BA + .align 2, 0 +_0800E740: .4byte 0x000008F6 +_0800E744: .4byte gUnknown_3005B60 +_0800E748: .4byte sub_080107FC +_0800E74C: + ldr r0, _0800E758 + movs r1, #5 + bl sub_080A8878 + b _0800E7BA + .align 2, 0 +_0800E758: .4byte sub_0801034C +_0800E75C: + movs r0, #0 + bl sub_0800BD38 + ldr r1, _0800E76C + movs r0, #0xf + strh r0, [r1, #4] + b _0800E7BA + .align 2, 0 +_0800E76C: .4byte gUnknown_30050A0 +_0800E770: + ldr r0, _0800E7C0 + adds r1, r6, r0 + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r0, _0800E7C4 + bl sub_0800CFE8 + movs r0, #1 + bl sub_08010B58 + bl sub_0800E578 + bl sub_0800E5C0 + movs r0, #0x14 + strh r0, [r6, #4] + ldr r1, _0800E7C8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + strh r1, [r0, #0xa] + movs r4, #1 + strb r4, [r6, #0xc] + ldr r0, _0800E7CC + movs r1, #5 + bl sub_080A8878 + movs r1, #0x9a + lsls r1, r1, #4 + adds r0, r6, r1 + strb r4, [r0] + adds r0, r5, #0 + bl sub_080A8964 +_0800E7BA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E7C0: .4byte 0x00000993 +_0800E7C4: .4byte sub_0800E87C +_0800E7C8: .4byte gUnknown_3005B60 +_0800E7CC: .4byte sub_0801034C + thumb_func_end sub_0800E608 + + thumb_func_start sub_0800E7D0 +sub_0800E7D0: @ 0x0800E7D0 + push {lr} + ldr r3, _0800E7E4 + movs r0, #1 + movs r1, #0 + movs r2, #0xf0 + bl sub_0800BB10 + pop {r0} + bx r0 + .align 2, 0 +_0800E7E4: .4byte gUnknown_82C0430 + thumb_func_end sub_0800E7D0 + + thumb_func_start sub_0800E7E8 +sub_0800E7E8: @ 0x0800E7E8 + push {lr} + movs r0, #0 + bl sub_0800BD38 + pop {r0} + bx r0 + thumb_func_end sub_0800E7E8 + + thumb_func_start sub_0800E7F4 +sub_0800E7F4: @ 0x0800E7F4 + push {r4, lr} + ldr r0, _0800E864 + movs r2, #0 + movs r1, #0xd + adds r0, #0x59 +_0800E7FE: + strb r2, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _0800E7FE + bl rfu_REQ_recvData + bl rfu_waitREQComplete + ldr r1, _0800E868 + ldr r3, _0800E864 + ldr r0, _0800E86C + adds r4, r3, r0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _0800E858 + ldr r2, _0800E870 + adds r1, r3, r2 + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r1, #0x92 + lsls r1, r1, #1 + adds r0, r3, r1 + ldr r2, _0800E874 + adds r1, r3, r2 + bl sub_0800D294 + ldr r1, _0800E878 + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + bl sub_0800EB08 + ldrb r0, [r4] + bl rfu_UNI_readySendData + ldrb r0, [r4] + bl rfu_UNI_clearRecvNewDataFlag +_0800E858: + movs r0, #1 + bl sub_0800B9C8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800E864: .4byte gUnknown_30050A0 +_0800E868: .4byte gUnknown_3007610 +_0800E86C: .4byte 0x000008F6 +_0800E870: .4byte 0x00000988 +_0800E874: .4byte 0x000008F7 +_0800E878: .4byte gUnknown_20227FC + thumb_func_end sub_0800E7F4 + + thumb_func_start sub_0800E87C +sub_0800E87C: @ 0x0800E87C + ldr r0, _0800E88C + ldr r1, _0800E890 + adds r0, r0, r1 + ldrb r1, [r0] + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_0800E88C: .4byte gUnknown_30050A0 +_0800E890: .4byte 0x00000993 + thumb_func_end sub_0800E87C + + thumb_func_start sub_0800E894 +sub_0800E894: @ 0x0800E894 + push {r4, r5, r6, lr} + bl sub_0800BB04 + ldr r4, _0800E8A8 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _0800E8B0 + ldr r0, _0800E8AC + b _0800E8B6 + .align 2, 0 +_0800E8A8: .4byte gUnknown_30050A0 +_0800E8AC: .4byte sub_0800E20C +_0800E8B0: + cmp r0, #0 + bne _0800E8D8 + ldr r0, _0800E8D4 +_0800E8B6: + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0800E8F8 + adds r0, r4, #0 + adds r0, #0x67 + ldrb r0, [r0] + bl sub_080A8964 + bl sub_0800E0C8 + b _0800E8F8 + .align 2, 0 +_0800E8D4: .4byte sub_0800E410 +_0800E8D8: + cmp r0, #2 + bne _0800E8F8 + ldr r0, _0800E930 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0800E8F8 + adds r0, r4, #0 + adds r0, #0x67 + ldrb r0, [r0] + bl sub_080A8964 + bl sub_0800E0C8 +_0800E8F8: + movs r5, #0 + ldr r6, _0800E934 +_0800E8FC: + lsls r0, r5, #2 + adds r0, r0, r6 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0800E91E + adds r0, r4, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0800E91E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0800E8FC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800E930: .4byte sub_0800E608 +_0800E934: .4byte gUnknown_82C0530 + thumb_func_end sub_0800E894 + + thumb_func_start sub_0800E938 +sub_0800E938: @ 0x0800E938 + push {lr} + ldr r0, _0800E94C + movs r1, #1 + bl sub_080A8878 + ldr r1, _0800E950 + adds r1, #0x67 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800E94C: .4byte sub_0800E20C +_0800E950: .4byte gUnknown_30050A0 + thumb_func_end sub_0800E938 + + thumb_func_start sub_0800E954 +sub_0800E954: @ 0x0800E954 + push {lr} + ldr r1, _0800E96C + ldrh r0, [r1, #4] + cmp r0, #7 + bne _0800E974 + ldr r2, _0800E970 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0800E974 + movs r0, #1 + b _0800E976 + .align 2, 0 +_0800E96C: .4byte gUnknown_30050A0 +_0800E970: .4byte 0x00000985 +_0800E974: + movs r0, #0 +_0800E976: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800E954 + + thumb_func_start sub_0800E97C +sub_0800E97C: @ 0x0800E97C + push {r4, lr} + ldr r4, _0800E9AC + ldrh r0, [r4, #4] + cmp r0, #7 + bne _0800E9B8 + ldr r0, _0800E9B0 + ldr r1, [r0] + ldr r2, _0800E9B4 + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + movs r1, #0xf0 + bl sub_0800BBE8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800E9B8 + movs r0, #9 + strh r0, [r4, #4] + movs r0, #1 + b _0800E9BA + .align 2, 0 +_0800E9AC: .4byte gUnknown_30050A0 +_0800E9B0: .4byte gUnknown_3007630 +_0800E9B4: .4byte 0x000008F5 +_0800E9B8: + movs r0, #0 +_0800E9BA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0800E97C + + thumb_func_start sub_0800E9C0 +sub_0800E9C0: @ 0x0800E9C0 + push {lr} + ldr r0, _0800E9D4 + movs r1, #1 + bl sub_080A8878 + ldr r1, _0800E9D8 + adds r1, #0x67 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800E9D4: .4byte sub_0800E410 +_0800E9D8: .4byte gUnknown_30050A0 + thumb_func_end sub_0800E9C0 + + thumb_func_start sub_0800E9DC +sub_0800E9DC: @ 0x0800E9DC + push {lr} + ldr r0, _0800E9EC + ldrb r0, [r0] + cmp r0, #0 + bne _0800E9F0 + movs r0, #0 + b _0800E9F2 + .align 2, 0 +_0800E9EC: .4byte gUnknown_30041E0 +_0800E9F0: + movs r0, #1 +_0800E9F2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800E9DC + + thumb_func_start sub_0800E9F8 +sub_0800E9F8: @ 0x0800E9F8 + ldr r1, _0800EA0C + movs r0, #4 + strh r0, [r1, #4] + ldr r0, _0800EA10 + ldrb r0, [r0] + ldr r2, _0800EA14 + adds r1, r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0800EA0C: .4byte gUnknown_30050A0 +_0800EA10: .4byte gUnknown_30041E0 +_0800EA14: .4byte 0x0000099F + thumb_func_end sub_0800E9F8 + + thumb_func_start sub_0800EA18 +sub_0800EA18: @ 0x0800EA18 + push {lr} + adds r1, r0, #0 + ldr r2, _0800EA30 + ldrh r0, [r2, #4] + cmp r0, #0x11 + beq _0800EA28 + cmp r1, #0 + beq _0800EA34 +_0800EA28: + movs r0, #0x12 + strh r0, [r2, #4] + movs r0, #1 + b _0800EA36 + .align 2, 0 +_0800EA30: .4byte gUnknown_30050A0 +_0800EA34: + movs r0, #0 +_0800EA36: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800EA18 + + thumb_func_start sub_0800EA3C +sub_0800EA3C: @ 0x0800EA3C + ldr r1, _0800EA44 + movs r0, #0xe + strh r0, [r1, #4] + bx lr + .align 2, 0 +_0800EA44: .4byte gUnknown_30050A0 + thumb_func_end sub_0800EA3C + + thumb_func_start sub_0800EA48 +sub_0800EA48: @ 0x0800EA48 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0 + b _0800EA5A +_0800EA52: + lsrs r1, r1, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_0800EA5A: + cmp r2, #3 + bhi _0800EA6C + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0800EA52 + adds r0, r2, #0 + bl rfu_UNI_readySendData +_0800EA6C: + pop {r0} + bx r0 + thumb_func_end sub_0800EA48 + + thumb_func_start sub_0800EA70 +sub_0800EA70: @ 0x0800EA70 + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r2, #0 + ldr r7, _0800EAC4 + ldr r0, _0800EAC8 + adds r6, r7, #0 + ldr r1, _0800EACC + adds r5, r0, r1 +_0800EA80: + movs r3, #0 + lsls r0, r2, #3 + lsls r1, r2, #4 + adds r4, r2, #1 + subs r0, r0, r2 + lsls r0, r0, #1 + adds r2, r0, r5 + adds r1, r1, r6 +_0800EA90: + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r2, #1] + ldrh r0, [r1] + strb r0, [r2] + adds r2, #2 + adds r1, #2 + adds r3, #1 + cmp r3, #6 + ble _0800EA90 + adds r2, r4, #0 + cmp r2, #4 + ble _0800EA80 + movs r0, #0 + mov r1, sp + strh r0, [r1] + ldr r2, _0800EAD0 + mov r0, sp + adds r1, r7, #0 + bl CpuSet + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800EAC4: .4byte gUnknown_3003130 +_0800EAC8: .4byte gUnknown_30050A0 +_0800EACC: .4byte 0x0000093F +_0800EAD0: .4byte 0x01000028 + thumb_func_end sub_0800EA70 + + thumb_func_start sub_0800EAD4 +sub_0800EAD4: @ 0x0800EAD4 + push {lr} + ldr r3, _0800EB00 + ldr r2, _0800EB04 + movs r1, #6 +_0800EADC: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _0800EADC + ldr r1, _0800EB00 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xc +_0800EAF2: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _0800EAF2 + pop {r0} + bx r0 + .align 2, 0 +_0800EB00: .4byte gUnknown_30031B0 +_0800EB04: .4byte gUnknown_3003130 + thumb_func_end sub_0800EAD4 + + thumb_func_start sub_0800EB08 +sub_0800EB08: @ 0x0800EB08 + push {r4, r5, lr} + ldr r4, _0800EB68 + ldr r0, _0800EB6C + adds r5, r4, r0 + ldrb r0, [r5] + cmp r0, #0 + beq _0800EB3A + ldr r1, _0800EB70 + adds r0, r4, r1 + adds r1, r4, #0 + adds r1, #0x4c + bl sub_0800D594 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0800EB74 + adds r0, r4, r1 + ldrb r0, [r0] + adds r1, r0, #0 + cmp r1, #0 + bne _0800EB36 + ldrb r0, [r5] + strb r1, [r5] +_0800EB36: + cmp r2, #0 + bne _0800EB60 +_0800EB3A: + ldr r5, _0800EB68 + ldr r1, _0800EB6C + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0800EB60 + movs r1, #0xd4 + lsls r1, r1, #3 + adds r0, r5, r1 + adds r4, r5, #0 + adds r4, #0x4c + adds r1, r4, #0 + bl sub_0800D4A8 + ldr r1, _0800EB70 + adds r0, r5, r1 + adds r1, r4, #0 + bl sub_0800D534 +_0800EB60: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800EB68: .4byte gUnknown_30050A0 +_0800EB6C: .4byte 0x000008F4 +_0800EB70: .4byte 0x000008D4 +_0800EB74: .4byte 0x000008F2 + thumb_func_end sub_0800EB08 + + thumb_func_start sub_0800EB78 +sub_0800EB78: @ 0x0800EB78 + push {r4, lr} + ldr r0, _0800EB88 + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #0 + bne _0800EB8C +_0800EB84: + movs r0, #0 + b _0800EBAC + .align 2, 0 +_0800EB88: .4byte gUnknown_3007630 +_0800EB8C: + movs r3, #0 + ldr r4, _0800EBB4 +_0800EB90: + movs r2, #0 + lsls r0, r3, #4 + adds r1, r0, r4 +_0800EB96: + ldrh r0, [r1] + cmp r0, #0 + bne _0800EB84 + adds r1, #2 + adds r2, #1 + cmp r2, #6 + ble _0800EB96 + adds r3, #1 + cmp r3, #4 + ble _0800EB90 + movs r0, #1 +_0800EBAC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800EBB4: .4byte gUnknown_3003130 + thumb_func_end sub_0800EB78 + + thumb_func_start sub_0800EBB8 +sub_0800EBB8: @ 0x0800EBB8 + push {r4, r5, r6, lr} + ldr r6, _0800EBD4 + ldrh r0, [r6, #4] + cmp r0, #0x13 + bhi _0800EBD8 + bl rfu_REQ_recvData + bl rfu_waitREQComplete + movs r0, #0 + bl sub_0800B9C8 + b _0800EC92 + .align 2, 0 +_0800EBD4: .4byte gUnknown_30050A0 +_0800EBD8: + ldr r0, _0800EC34 + adds r1, r6, r0 + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r0, _0800EC38 + adds r1, r6, r0 + ldr r0, _0800EC3C + ldr r0, [r0] + ldrb r1, [r1] + ldrb r0, [r0, #2] + ands r0, r1 + cmp r0, r1 + bne _0800EC92 + cmp r0, #0 + beq _0800EC92 + ldr r1, _0800EC40 + adds r0, r6, r1 + ldrb r0, [r0] + adds r5, r0, #0 + cmp r5, #0 + bne _0800EC88 + ldr r0, _0800EC44 + adds r4, r6, r0 + ldrb r0, [r4] + cmp r0, #0 + beq _0800EC68 + bl sub_08011858 + strb r5, [r4] + ldr r1, _0800EC48 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _0800EC4C + movs r4, #0x80 + lsls r4, r4, #8 + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 + adds r0, r4, #0 + bl sub_08010C60 + b _0800EC92 + .align 2, 0 +_0800EC34: .4byte 0x00000993 +_0800EC38: .4byte 0x0000099A +_0800EC3C: .4byte gUnknown_3007630 +_0800EC40: .4byte 0x00000994 +_0800EC44: .4byte 0x0000099B +_0800EC48: .4byte 0x0000099C +_0800EC4C: + ldr r0, _0800EC60 + ldrb r4, [r0] + cmp r4, #0 + bne _0800EC68 + bl sub_0800E894 + ldr r0, _0800EC64 + strb r4, [r0] + b _0800EC92 + .align 2, 0 +_0800EC60: .4byte gUnknown_30041E0 +_0800EC64: .4byte gUnknown_30031C4 +_0800EC68: + bl sub_0800EA70 + ldr r0, _0800EC80 + ldr r1, _0800EC84 + adds r0, r0, r1 + ldrb r0, [r0] + bl rfu_UNI_readySendData + movs r0, #1 + bl sub_0800B9C8 + b _0800EC8C + .align 2, 0 +_0800EC80: .4byte gUnknown_30050A0 +_0800EC84: .4byte 0x00000992 +_0800EC88: + bl rfu_REQ_PARENT_resumeRetransmitAndChange +_0800EC8C: + ldr r1, _0800EC9C + movs r0, #1 + strb r0, [r1, #0xe] +_0800EC92: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0800EC9C: .4byte gUnknown_30050A0 + thumb_func_end sub_0800EBB8 + + thumb_func_start sub_0800ECA0 +sub_0800ECA0: @ 0x0800ECA0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _0800ED80 + ldrh r1, [r0, #4] + adds r6, r0, #0 + cmp r1, #0x13 + bhi _0800ECB8 + b _0800EF1A +_0800ECB8: + ldrb r0, [r6, #0xe] + cmp r0, #1 + beq _0800ECC0 + b _0800EF1A +_0800ECC0: + bl rfu_waitREQComplete + ldr r0, _0800ED84 + adds r2, r6, r0 + ldrb r0, [r2] + cmp r0, #0 + bne _0800ECE0 + adds r1, r6, #0 + adds r1, #0xee +_0800ECD2: + ldrb r0, [r1] + cmp r0, #0 + beq _0800ECDA + b _0800EF40 +_0800ECDA: + ldrb r0, [r2] + cmp r0, #0 + beq _0800ECD2 +_0800ECE0: + bl rfu_REQ_recvData + bl rfu_waitREQComplete + ldr r2, _0800ED88 + ldr r4, _0800ED80 + ldr r1, _0800ED8C + adds r0, r4, r1 + ldrb r1, [r2, #3] + ldrb r0, [r0] + ands r1, r0 + cmp r1, r0 + beq _0800ECFC + b _0800EF04 +_0800ECFC: + ldr r6, _0800ED90 + adds r1, r4, r6 + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r1, _0800ED94 + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + ldrb r7, [r2] + movs r5, #0 +_0800ED12: + movs r0, #1 + ands r0, r7 + lsrs r1, r7, #1 + str r1, [sp, #4] + adds r2, r5, #1 + str r2, [sp] + cmp r0, #0 + bne _0800ED24 + b _0800EE24 +_0800ED24: + ldr r1, _0800ED80 + 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, #0x18 + mov sl, r1 + cmp r0, #0 + beq _0800EE1C + ldr r2, _0800ED98 + adds r0, r6, r2 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _0800EDA0 + adds r0, r6, #0 + adds r0, #0x14 + adds r0, r4, r0 + ldrb r2, [r0] + lsrs r2, r2, #5 + ldrb r0, [r1] + adds r0, #1 + movs r1, #7 + ands r0, r1 + cmp r2, r0 + beq _0800EDA0 + ldr r0, _0800ED9C + adds r1, r6, r0 + adds r1, r5, r1 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _0800EE1C + movs r0, #0x81 + lsls r0, r0, #8 + bl sub_08010C60 + b _0800EE1C + .align 2, 0 +_0800ED80: .4byte gUnknown_30050A0 +_0800ED84: .4byte 0x00000993 +_0800ED88: .4byte gUnknown_30041E0 +_0800ED8C: .4byte 0x0000099A +_0800ED90: .4byte 0x00000994 +_0800ED94: .4byte gUnknown_20227FC +_0800ED98: .4byte 0x000009A6 +_0800ED9C: .4byte 0x000009A2 +_0800EDA0: + ldr r2, _0800EEE0 + ldr r6, _0800EEE4 + adds r1, r2, r6 + adds r1, r5, r1 + subs r3, r3, r5 + lsls r3, r3, #1 + adds r4, r2, #0 + adds r4, #0x14 + adds r2, r3, r4 + ldrb r0, [r2] + lsrs r0, r0, #5 + strb r0, [r1] + ldr r1, _0800EEE0 + subs r6, #4 + 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, _0800EEE8 + adds r0, r5, r2 + ldrb r0, [r0] + movs r6, #0 + lsls r1, r5, #0x18 + mov sl, r1 + lsrs r2, r7, #1 + str r2, [sp, #4] + adds r5, #1 + str r5, [sp] + ldr r1, _0800EEEC + mov sb, r1 + adds r5, r3, #0 + adds r7, r4, #0 + lsls r0, r0, #4 + mov r8, r0 + adds r2, r5, #1 + mov ip, r2 +_0800EDF0: + lsls r1, r6, #1 + mov r0, r8 + adds r4, r1, r0 + add r4, sb + mov r2, ip + adds r3, r1, r2 + adds r3, r3, r7 + ldrb r2, [r3] + lsls r2, r2, #8 + adds r1, r1, r5 + adds r1, r1, r7 + ldrb r0, [r1] + orrs r0, r2 + strh r0, [r4] + movs r0, #0 + strb r0, [r3] + strb r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #6 + bls _0800EDF0 +_0800EE1C: + mov r1, sl + lsrs r0, r1, #0x18 + bl rfu_UNI_clearRecvNewDataFlag +_0800EE24: + ldr r2, [sp, #4] + lsls r0, r2, #0x10 + lsrs r7, r0, #0x10 + ldr r6, [sp] + lsls r0, r6, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bhi _0800EE36 + b _0800ED12 +_0800EE36: + bl sub_0800EAD4 + movs r0, #0 + bl sub_0800F350 + bl sub_08010028 + ldr r4, _0800EEE0 + ldr r1, _0800EEF0 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0800EF12 + ldr r2, _0800EEF4 + adds r0, r4, r2 + ldrb r2, [r0] + cmp r2, #0 + bne _0800EF12 + ldr r0, _0800EEF8 + ldrb r1, [r0, #0xe] + strb r2, [r0, #0xe] + ldr r6, _0800EEFC + adds r0, r4, r6 + ldrb r1, [r0] + movs r0, #3 + bl rfu_clearSlot + movs r5, #0 + adds r7, r4, #0 + adds r7, #0x14 +_0800EE72: + ldr r0, _0800EEF0 + adds r6, r4, r0 + ldrb r0, [r6] + asrs r0, r5 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0800EE96 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r5, #3 + subs r2, r2, r5 + lsls r2, r2, #1 + adds r2, r2, r7 + movs r0, #0x10 + movs r3, #0xe + bl rfu_setRecvBuffer +_0800EE96: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _0800EE72 + subs r4, r6, #3 + ldrb r0, [r4] + ldrb r2, [r6] + adds r1, r0, #0 + orrs r1, r2 + bl sub_0800E350 + ldrb r1, [r6] + movs r2, #0 + strb r1, [r6, #4] + 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_0800E340 + adds r1, r6, #0 + subs r1, #0xb + strb r0, [r1] + ldr r0, _0800EF00 + movs r1, #0 + bl sub_080A8878 + b _0800EF12 + .align 2, 0 +_0800EEE0: .4byte gUnknown_30050A0 +_0800EEE4: .4byte 0x000009A6 +_0800EEE8: .4byte gUnknown_3005A36 +_0800EEEC: .4byte gUnknown_3003130 +_0800EEF0: .4byte 0x0000099D +_0800EEF4: .4byte 0x00000991 +_0800EEF8: .4byte gUnknown_20227FC +_0800EEFC: .4byte 0x00000992 +_0800EF00: .4byte sub_080105A4 +_0800EF04: + ldr r2, _0800EF34 + adds r1, r4, r2 + ldrb r0, [r1] + movs r2, #0 + movs r0, #1 + strb r0, [r1] + strb r2, [r4, #0xe] +_0800EF12: + ldr r1, _0800EF38 + movs r0, #0 + strb r0, [r1, #0xe] + adds r6, r1, #0 +_0800EF1A: + ldr r1, _0800EF34 + adds r0, r6, r1 + ldrb r0, [r0] + adds r1, r0, #0 + ldr r0, _0800EF3C + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0800EF44 + movs r0, #1 + ands r0, r1 + b _0800EF46 + .align 2, 0 +_0800EF34: .4byte 0x00000994 +_0800EF38: .4byte gUnknown_30050A0 +_0800EF3C: .4byte gUnknown_3007630 +_0800EF40: + movs r0, #0 + b _0800EF46 +_0800EF44: + movs r0, #0 +_0800EF46: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800ECA0 + + thumb_func_start sub_0800EF58 +sub_0800EF58: @ 0x0800EF58 + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r1, #0 + ldrh r1, [r4] + cmp r1, #0 + beq _0800EF9C + ldr r0, _0800EF98 + movs r5, #0x81 + lsls r5, r5, #1 + adds r3, r0, r5 + ldrb r0, [r3] + lsls r0, r0, #5 + orrs r0, r1 + strh r0, [r4] + ldrb r0, [r3] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r3] + adds r3, r4, #0 + movs r4, #6 +_0800EF82: + ldrh r1, [r3] + lsrs r0, r1, #8 + strb r0, [r2, #1] + strb r1, [r2] + adds r2, #2 + adds r3, #2 + subs r4, #1 + cmp r4, #0 + bge _0800EF82 + b _0800EFAA + .align 2, 0 +_0800EF98: .4byte gUnknown_30050A0 +_0800EF9C: + movs r1, #0 + adds r0, r2, #0 + adds r0, #0xd +_0800EFA2: + strb r1, [r0] + subs r0, #1 + cmp r0, r2 + bge _0800EFA2 +_0800EFAA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0800EF58 + + thumb_func_start sub_0800EFB0 +sub_0800EFB0: @ 0x0800EFB0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x58 + ldr r0, _0800F0D4 + mov r1, sp + bl sub_0800D3F4 + movs r1, #0 + ldr r0, _0800F0D8 + mov ip, r0 +_0800EFC6: + movs r4, #0 + lsls r0, r1, #3 + adds r2, r1, #1 + mov r8, r2 + lsls r6, r1, #4 + subs r0, r0, r1 + lsls r5, r0, #1 +_0800EFD4: + lsls r1, r4, #1 + adds r3, r1, r6 + add r3, ip + adds r1, r5, r1 + adds r0, r1, #1 + add r0, sp + ldrb r2, [r0] + lsls r2, r2, #8 + mov r7, sp + adds r0, r7, r1 + ldrb r0, [r0] + orrs r0, r2 + strh r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _0800EFD4 + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _0800EFC6 + movs r0, #0 + bl sub_0800F350 + ldr r0, _0800F0DC + ldrb r0, [r0, #2] + cmp r0, #0 + bne _0800F080 + ldr r0, _0800F0E0 + ldr r2, _0800F0E4 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0800F080 + ldr r0, _0800F0E8 + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + orrs r0, r1 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0800F04C + cmp r0, #6 + beq _0800F04C + cmp r0, #9 + beq _0800F04C + movs r1, #0x90 + lsls r1, r1, #8 + movs r0, #2 + bl sub_08011554 +_0800F04C: + bl rfu_clearAllSlot + ldr r1, _0800F0EC + movs r0, #0 + strb r0, [r1] + ldr r0, _0800F0E0 + movs r5, #0 + str r5, [r0] + ldr r7, _0800F0E4 + adds r6, r0, r7 + ldrb r0, [r6] + cmp r0, #1 + bne _0800F078 + movs r4, #0x90 + lsls r4, r4, #8 + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 + adds r0, r4, #0 + bl sub_08010C60 +_0800F078: + ldr r0, _0800F0DC + strb r5, [r0, #5] + strb r5, [r0, #4] + strb r5, [r6] +_0800F080: + ldr r6, _0800F0E0 + ldr r0, _0800F0F0 + adds r2, r6, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _0800F0C4 + ldrb r0, [r2] + subs r0, #1 + ldrb r1, [r2] + strb r0, [r2] + bl sub_08010028 + ldr r5, _0800F0F4 + add r4, sp, #0x48 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0800EF58 + movs r1, #0xd4 + lsls r1, r1, #3 + adds r0, r6, r1 + adds r1, r4, #0 + bl sub_0800D348 + movs r1, #0 + movs r2, #0 +_0800F0B4: + lsls r0, r1, #1 + adds r0, r0, r5 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #6 + bls _0800F0B4 +_0800F0C4: + bl sub_0800EB78 + add sp, #0x58 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800F0D4: .4byte gUnknown_30051C4 +_0800F0D8: .4byte gUnknown_3003130 +_0800F0DC: .4byte gUnknown_30041E0 +_0800F0E0: .4byte gUnknown_30050A0 +_0800F0E4: .4byte 0x0000099C +_0800F0E8: .4byte gUnknown_3007630 +_0800F0EC: .4byte gUnknown_30031C4 +_0800F0F0: .4byte 0x00000988 +_0800F0F4: .4byte gUnknown_30031B0 + thumb_func_end sub_0800EFB0 + + thumb_func_start sub_0800F0F8 +sub_0800F0F8: @ 0x0800F0F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0800F1A4 + ldr r2, [r0, #0x70] + mov sl, r2 + movs r5, #0 + adds r2, r0, #0 + adds r2, #0x6e + ldrh r3, [r2] + cmp r5, r3 + bge _0800F194 + mov sb, r0 + ldr r0, _0800F1A8 + mov r8, r0 +_0800F11A: + movs r0, #1 + ands r0, r1 + lsrs r7, r1, #1 + adds r6, r5, #1 + cmp r0, #0 + bne _0800F188 + ldr r1, _0800F1AC + 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, _0800F1B0 + mov ip, r3 + adds r0, r0, r5 + lsls r0, r0, #2 + mov r1, sl + adds r2, r0, r1 + mov r3, r8 + adds r3, #2 +_0800F146: + ldrb r1, [r2, #1] + lsls r1, r1, #8 + ldrb r0, [r2] + orrs r0, r1 + strh r0, [r3] + adds r2, #2 + adds r3, #2 + adds r4, #1 + cmp r4, #6 + ble _0800F146 + movs r4, #0 + ldr r2, _0800F1A8 + ldr r1, _0800F1B0 +_0800F160: + ldrh r0, [r2] + lsrs r0, r0, #8 + strb r0, [r1, #1] + ldrh r0, [r2] + strb r0, [r1] + adds r2, #2 + adds r1, #2 + adds r4, #1 + cmp r4, #6 + ble _0800F160 + ldr r0, _0800F1B4 + mov r1, ip + bl sub_0800D348 + movs r1, #1 + lsls r1, r5 + mov r2, sb + ldr r0, [r2, #0x78] + orrs r0, r1 + str r0, [r2, #0x78] +_0800F188: + adds r1, r7, #0 + adds r5, r6, #0 + ldr r3, _0800F1B8 + ldrh r3, [r3] + cmp r5, r3 + blt _0800F11A +_0800F194: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F1A4: .4byte gUnknown_30050A0 +_0800F1A8: .4byte gUnknown_3000D90 +_0800F1AC: .4byte 0xFFFF8900 +_0800F1B0: .4byte gUnknown_3000D80 +_0800F1B4: .4byte gUnknown_3005740 +_0800F1B8: .4byte gUnknown_300510E + thumb_func_end sub_0800F0F8 + + thumb_func_start sub_0800F1BC +sub_0800F1BC: @ 0x0800F1BC + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0800F1D8 + ldrb r2, [r0, #0xc] + cmp r2, #1 + bne _0800F1DC + cmp r1, #0 + beq _0800F1DC + adds r0, #0x61 + adds r0, r1, r0 + strb r2, [r0] + b _0800F1E4 + .align 2, 0 +_0800F1D8: .4byte gUnknown_30050A0 +_0800F1DC: + adds r0, #0x5c + adds r0, r1, r0 + movs r1, #1 + strb r1, [r0] +_0800F1E4: + pop {r0} + bx r0 + thumb_func_end sub_0800F1BC + + thumb_func_start sub_0800F1E8 +sub_0800F1E8: @ 0x0800F1E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0800F208 + adds r1, r3, #0 + adds r1, #0x5c + adds r1, r0, r1 + movs r2, #0 + strb r2, [r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + adds r1, #0x92 + strb r2, [r1] + bx lr + .align 2, 0 +_0800F208: .4byte gUnknown_30050A0 + thumb_func_end sub_0800F1E8 + + thumb_func_start sub_0800F20C +sub_0800F20C: @ 0x0800F20C + push {r4, r5, lr} + adds r3, r0, #0 + ldr r0, _0800F220 + ldrb r1, [r0, #0xc] + adds r5, r0, #0 + cmp r1, #1 + bne _0800F224 + movs r0, #0 + b _0800F246 + .align 2, 0 +_0800F220: .4byte gUnknown_30050A0 +_0800F224: + movs r2, #0 + ldr r0, _0800F24C + adds r4, r5, r0 +_0800F22A: + adds r1, r2, r4 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0800F22A + ldr r1, _0800F250 + adds r0, r5, r1 + ldrb r0, [r0] + adds r0, r0, r3 + ldrb r0, [r0] +_0800F246: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0800F24C: .4byte 0x00000996 +_0800F250: .4byte 0x000008F6 + thumb_func_end sub_0800F20C + + thumb_func_start sub_0800F254 +sub_0800F254: @ 0x0800F254 + push {lr} + ldr r0, _0800F28C + ldrb r0, [r0] + cmp r0, #0 + beq _0800F286 + ldr r3, _0800F290 + ldrh r2, [r3] + cmp r2, #0 + beq _0800F286 + ldr r0, _0800F294 + ldrb r0, [r0] + cmp r0, #1 + beq _0800F286 + ldr r1, _0800F298 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r0, r2 + strh r0, [r3] + movs r0, #0xbe + lsls r0, r0, #8 + bl sub_0800F7F8 +_0800F286: + pop {r0} + bx r0 + .align 2, 0 +_0800F28C: .4byte gUnknown_30031C4 +_0800F290: .4byte gUnknown_3005B08 +_0800F294: .4byte gUnknown_3002354 +_0800F298: .4byte gUnknown_3000D78 + thumb_func_end sub_0800F254 + + thumb_func_start sub_0800F29C +sub_0800F29C: @ 0x0800F29C + ldr r0, _0800F2A0 + bx lr + .align 2, 0 +_0800F2A0: .4byte gUnknown_20227CC + thumb_func_end sub_0800F29C + + thumb_func_start sub_0800F2A4 +sub_0800F2A4: @ 0x0800F2A4 + push {lr} + movs r2, #0 + ldr r0, _0800F2BC + ldr r1, [r0] + ldr r0, _0800F2C0 + cmp r1, r0 + bne _0800F2B4 + movs r2, #1 +_0800F2B4: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_0800F2BC: .4byte gUnknown_30050A0 +_0800F2C0: .4byte sub_0800F254 + thumb_func_end sub_0800F2A4 + + thumb_func_start sub_0800F2C4 +sub_0800F2C4: @ 0x0800F2C4 + push {r4, lr} + ldr r4, _0800F2E4 + ldr r0, [r4] + cmp r0, #0 + beq _0800F2DA + ldr r0, _0800F2E8 + ldr r1, _0800F2EC + ldr r2, _0800F2F0 + movs r3, #1 + bl AGBAssert +_0800F2DA: + ldr r0, _0800F2F4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800F2E4: .4byte gUnknown_30050A0 +_0800F2E8: .4byte gUnknown_82C053C +_0800F2EC: .4byte 0x000005E6 +_0800F2F0: .4byte gUnknown_82C0544 +_0800F2F4: .4byte sub_0800F254 + thumb_func_end sub_0800F2C4 + + thumb_func_start sub_0800F2F8 +sub_0800F2F8: @ 0x0800F2F8 + ldr r1, _0800F300 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_0800F300: .4byte gUnknown_30050A0 + thumb_func_end sub_0800F2F8 + + thumb_func_start sub_0800F304 +sub_0800F304: @ 0x0800F304 + push {lr} + movs r0, #0x88 + lsls r0, r0, #7 + bl sub_0800F7F8 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800F320 + bl sub_08082734 + ldr r1, _0800F32C + strh r0, [r1, #0xc] +_0800F320: + ldr r1, _0800F330 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0800F32C: .4byte gUnknown_30031B0 +_0800F330: .4byte gUnknown_2022078 + thumb_func_end sub_0800F304 + + thumb_func_start sub_0800F334 +sub_0800F334: @ 0x0800F334 + push {lr} + ldr r1, _0800F348 + ldr r0, [r1] + cmp r0, #0 + bne _0800F342 + ldr r0, _0800F34C + str r0, [r1] +_0800F342: + pop {r0} + bx r0 + .align 2, 0 +_0800F348: .4byte gUnknown_30050A0 +_0800F34C: .4byte sub_0800F304 + thumb_func_end sub_0800F334 + + thumb_func_start sub_0800F350 +sub_0800F350: @ 0x0800F350 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov r8, r0 +_0800F35E: + mov r1, r8 + lsls r0, r1, #4 + ldr r2, _0800F3A4 + adds r1, r0, r2 + ldrh r7, [r1] + movs r3, #0xff + lsls r3, r3, #8 + adds r1, r3, #0 + ands r1, r7 + movs r2, #0x88 + lsls r2, r2, #8 + adds r5, r0, #0 + cmp r1, r2 + beq _0800F444 + cmp r1, r2 + bgt _0800F3BA + movs r0, #0xcc + lsls r0, r0, #7 + cmp r1, r0 + bne _0800F388 + b _0800F5C4 +_0800F388: + cmp r1, r0 + bgt _0800F3A8 + movs r0, #0x88 + lsls r0, r0, #7 + cmp r1, r0 + bne _0800F396 + b _0800F6D8 +_0800F396: + movs r0, #0xbe + lsls r0, r0, #7 + cmp r1, r0 + bne _0800F3A0 + b _0800F5B4 +_0800F3A0: + b _0800F6E8 + .align 2, 0 +_0800F3A4: .4byte gUnknown_3003130 +_0800F3A8: + movs r0, #0xee + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F404 + movs r0, #0xf0 + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F3F2 + b _0800F6E8 +_0800F3BA: + movs r0, #0xbe + lsls r0, r0, #8 + cmp r1, r0 + bne _0800F3C4 + b _0800F6D8 +_0800F3C4: + cmp r1, r0 + bgt _0800F3DC + movs r0, #0x89 + lsls r0, r0, #8 + cmp r1, r0 + beq _0800F4AC + movs r0, #0xa1 + lsls r0, r0, #8 + cmp r1, r0 + bne _0800F3DA + b _0800F590 +_0800F3DA: + b _0800F6E8 +_0800F3DC: + movs r0, #0xed + lsls r0, r0, #8 + cmp r1, r0 + bne _0800F3E6 + b _0800F5F4 +_0800F3E6: + movs r0, #0xee + lsls r0, r0, #8 + cmp r1, r0 + bne _0800F3F0 + b _0800F694 +_0800F3F0: + b _0800F6E8 +_0800F3F2: + ldr r4, _0800F42C + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0800F404 + ldr r0, _0800F430 + ldrb r0, [r0] + cmp r0, #0 + beq _0800F404 + b _0800F734 +_0800F404: + ldr r0, _0800F434 + ldr r0, [r0] + ldrb r0, [r0] + mov r6, r8 + adds r6, #1 + cmp r0, #0 + beq _0800F414 + b _0800F6EC +_0800F414: + ldr r1, _0800F438 + adds r0, r5, r1 + ldrh r0, [r0] + ldr r2, _0800F42C + strb r0, [r2, #0xd] + ldr r3, _0800F43C + adds r0, r5, r3 + bl sub_0800F20C + ldr r4, _0800F440 + strb r0, [r4] + b _0800F6EC + .align 2, 0 +_0800F42C: .4byte gUnknown_30050A0 +_0800F430: .4byte gUnknown_30031C4 +_0800F434: .4byte gUnknown_3007630 +_0800F438: .4byte gUnknown_3003132 +_0800F43C: .4byte gUnknown_3003134 +_0800F440: .4byte gUnknown_3005A26 +_0800F444: + ldr r0, _0800F4A0 + mov sb, r0 + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r7, r0, #2 + mov r2, sb + adds r3, r7, r2 + movs r4, #0x92 + adds r4, r4, r3 + mov ip, r4 + ldrb r4, [r4] + mov r6, r8 + adds r6, #1 + cmp r4, #0 + beq _0800F466 + b _0800F6EC +_0800F466: + adds r0, r3, #0 + adds r0, #0x80 + movs r2, #0 + strh r4, [r0] + ldr r1, _0800F4A4 + adds r0, r5, r1 + ldrh r0, [r0] + adds r1, r3, #0 + adds r1, #0x82 + strh r0, [r1] + ldr r1, _0800F4A8 + adds r0, r5, r1 + ldrh r1, [r0] + adds r0, r3, #0 + adds r0, #0x91 + strb r1, [r0] + mov r0, sb + adds r0, #0x88 + adds r0, r7, r0 + str r4, [r0] + movs r0, #1 + mov r3, ip + strb r0, [r3] + mov r0, sb + adds r0, #0x5c + add r0, r8 + strb r2, [r0] + b _0800F6EC + .align 2, 0 +_0800F4A0: .4byte gUnknown_30050A0 +_0800F4A4: .4byte gUnknown_3003132 +_0800F4A8: .4byte gUnknown_3003134 +_0800F4AC: + ldr r4, _0800F57C + mov sb, r4 + mov r0, r8 + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r4, r0, #2 + mov r3, sb + adds r2, r4, r3 + adds r0, r2, #0 + adds r0, #0x92 + ldrb r3, [r0] + mov sl, r1 + mov r6, r8 + adds r6, #1 + cmp r3, #1 + beq _0800F4CE + b _0800F6EC +_0800F4CE: + movs r0, #0xff + ands r0, r7 + adds r2, #0x80 + strh r0, [r2] + mov r1, sb + adds r1, #0x88 + adds r1, r4, r1 + lsls r3, r0 + ldr r0, [r1] + orrs r0, r3 + str r0, [r1] + movs r4, #0 + ldr r0, _0800F580 + mov sb, r0 + mov ip, r2 + mov r1, r8 + lsls r7, r1, #8 + adds r3, r5, #0 +_0800F4F2: + mov r2, ip + ldrh r0, [r2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + lsls r1, r1, #1 + adds r1, r1, r7 + add r1, sb + adds r2, r4, #1 + lsls r0, r2, #1 + adds r0, r0, r3 + ldr r4, _0800F584 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + cmp r4, #5 + bls _0800F4F2 + ldr r4, _0800F57C + mov r0, sl + add r0, r8 + lsls r0, 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, r0, #2 + ldr r3, _0800F588 + adds r0, r0, r3 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + beq _0800F540 + b _0800F6EC +_0800F540: + adds r1, r2, #0 + adds r1, #0x92 + movs r0, #2 + strb r0, [r1] + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800F1BC + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + beq _0800F562 + b _0800F6EC +_0800F562: + ldr r0, _0800F58C + ldrb r0, [r0] + cmp r0, #0 + bne _0800F56C + b _0800F6EC +_0800F56C: + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0800F574 + b _0800F6EC +_0800F574: + ldr r0, _0800F580 + bl sub_08010568 + b _0800F6EC + .align 2, 0 +_0800F57C: .4byte gUnknown_30050A0 +_0800F580: .4byte gUnknown_202207C +_0800F584: .4byte gUnknown_3003130 +_0800F588: .4byte gUnknown_82C0378 +_0800F58C: .4byte gUnknown_30031C4 +_0800F590: + ldr r2, _0800F5AC + ldr r3, _0800F5B0 + adds r0, r5, r3 + ldrh r1, [r0] + lsls r1, r1, #3 + adds r0, r1, r2 + ldr r0, [r0] + adds r2, #4 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_0800F968 + b _0800F6E8 + .align 2, 0 +_0800F5AC: .4byte gUnknown_82C0408 +_0800F5B0: .4byte gUnknown_3003132 +_0800F5B4: + ldr r1, _0800F5C0 + add r1, r8 + movs r0, #1 + strb r0, [r1] + b _0800F6E8 + .align 2, 0 +_0800F5C0: .4byte gUnknown_3005184 +_0800F5C4: + ldr r2, _0800F5EC + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r2, r4 + ldr r3, _0800F5F0 + adds r1, r5, r3 + ldrh r0, [r0] + mov r6, r8 + adds r6, #1 + ldrh r1, [r1] + cmp r0, r1 + beq _0800F5DE + b _0800F6EC +_0800F5DE: + adds r0, r2, #0 + adds r0, #0xe9 + add r0, r8 + movs r1, #1 + strb r1, [r0] + b _0800F6EC + .align 2, 0 +_0800F5EC: .4byte gUnknown_30050A0 +_0800F5F0: .4byte gUnknown_3003132 +_0800F5F4: + ldr r7, _0800F640 + ldrb r2, [r7, #0xc] + cmp r2, #0 + bne _0800F65C + ldr r3, _0800F644 + ldrb r0, [r3] + mov r6, r8 + adds r6, #1 + cmp r0, #0 + beq _0800F6EC + ldr r0, _0800F648 + adds r4, r5, r0 + ldrh r1, [r4] + ldr r0, _0800F64C + ldr r0, [r0] + ldrb r0, [r0, #2] + ands r1, r0 + cmp r1, #0 + beq _0800F62C + strb r2, [r3] + bl sub_0800D0EC + ldr r1, _0800F650 + adds r0, r5, r1 + ldrh r1, [r0] + ldr r2, _0800F654 + adds r0, r7, r2 + strb r1, [r0] +_0800F62C: + ldr r0, _0800F658 + adds r0, #6 + adds r0, r5, r0 + ldrh r0, [r0] + strb r0, [r7, #0xd] + ldrh r0, [r4] + bl sub_080104E8 + b _0800F6EC + .align 2, 0 +_0800F640: .4byte gUnknown_30050A0 +_0800F644: .4byte gUnknown_30031C4 +_0800F648: .4byte gUnknown_3003132 +_0800F64C: .4byte gUnknown_3007630 +_0800F650: .4byte gUnknown_3003134 +_0800F654: .4byte 0x0000099C +_0800F658: .4byte gUnknown_3003130 +_0800F65C: + movs r0, #0xee + lsls r0, r0, #8 + bl sub_0800F7F8 + ldr r1, _0800F684 + ldr r3, _0800F688 + adds r0, r5, r3 + ldrh r0, [r0] + strh r0, [r1, #2] + ldr r4, _0800F68C + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1, #4] + ldr r0, _0800F690 + adds r0, #6 + adds r0, r5, r0 + ldrh r0, [r0] + strh r0, [r1, #6] + b _0800F6E8 + .align 2, 0 +_0800F684: .4byte gUnknown_30031B0 +_0800F688: .4byte gUnknown_3003132 +_0800F68C: .4byte gUnknown_3003134 +_0800F690: .4byte gUnknown_3003130 +_0800F694: + ldr r4, _0800F6C4 + ldrb r0, [r4, #0xc] + mov r6, r8 + adds r6, #1 + cmp r0, #1 + bne _0800F728 + ldr r0, _0800F6C8 + adds r2, r4, r0 + ldr r1, _0800F6CC + adds r3, r5, r1 + ldrb r1, [r3] + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0800F6D0 + adds r0, r5, r2 + ldrh r1, [r0] + ldr r2, _0800F6D4 + adds r0, r4, r2 + strb r1, [r0] + ldrh r0, [r3] + bl sub_080104E8 + b _0800F6EC + .align 2, 0 +_0800F6C4: .4byte gUnknown_30050A0 +_0800F6C8: .4byte 0x0000099B +_0800F6CC: .4byte gUnknown_3003132 +_0800F6D0: .4byte gUnknown_3003134 +_0800F6D4: .4byte 0x0000099C +_0800F6D8: + ldr r0, _0800F718 + mov r3, r8 + lsls r1, r3, #1 + adds r1, r1, r0 + ldr r4, _0800F71C + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1] +_0800F6E8: + mov r6, r8 + adds r6, #1 +_0800F6EC: + ldr r3, _0800F720 + ldrb r4, [r3, #0xc] + cmp r4, #1 + bne _0800F728 + 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 _0800F728 + cmp r1, #4 + bne _0800F724 + adds r0, r3, #0 + adds r0, #0x5c + add r0, r8 + movs r1, #0 + strb r4, [r0] + strb r1, [r2] + b _0800F728 + .align 2, 0 +_0800F718: .4byte gUnknown_30030C0 +_0800F71C: .4byte gUnknown_3003132 +_0800F720: .4byte gUnknown_30050A0 +_0800F724: + adds r0, #1 + strb r0, [r2] +_0800F728: + lsls r0, r6, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #4 + bhi _0800F734 + b _0800F35E +_0800F734: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0800F350 + + thumb_func_start sub_0800F744 +sub_0800F744: @ 0x0800F744 + push {lr} + movs r2, #0 + ldr r0, _0800F758 + adds r1, r0, #0 + adds r1, #0x92 +_0800F74E: + ldrb r0, [r1] + cmp r0, #0 + beq _0800F75C + movs r0, #0 + b _0800F766 + .align 2, 0 +_0800F758: .4byte gUnknown_30050A0 +_0800F75C: + adds r1, #0x14 + adds r2, #1 + cmp r2, #4 + ble _0800F74E + movs r0, #1 +_0800F766: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800F744 + + thumb_func_start sub_0800F76C +sub_0800F76C: @ 0x0800F76C + push {r4, lr} + movs r1, #0 + ldr r2, _0800F794 + ldrb r0, [r2, #0xd] + cmp r1, r0 + bge _0800F7A0 + adds r4, r0, #0 + adds r3, r2, #0 + adds r3, #0x92 + adds r2, #0x5c +_0800F780: + ldrb r0, [r3] + cmp r0, #2 + bne _0800F78E + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + beq _0800F798 +_0800F78E: + movs r0, #0 + b _0800F7A2 + .align 2, 0 +_0800F794: .4byte gUnknown_30050A0 +_0800F798: + adds r3, #0x14 + adds r1, #1 + cmp r1, r4 + blt _0800F780 +_0800F7A0: + movs r0, #1 +_0800F7A2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0800F76C + + thumb_func_start sub_0800F7A8 +sub_0800F7A8: @ 0x0800F7A8 + movs r2, #0 + movs r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + str r1, [r0, #4] + str r1, [r0, #8] + strb r2, [r0, #0x10] + strb r2, [r0, #0x11] + strb r2, [r0, #0x12] + bx lr + thumb_func_end sub_0800F7A8 + + thumb_func_start sub_0800F7BC +sub_0800F7BC: @ 0x0800F7BC + push {r4, lr} + movs r2, #0 + movs r1, #0 + ldr r0, _0800F7F4 + adds r3, r0, #0 + adds r3, #0x92 + adds r4, r0, #0 + adds r4, #0x5c +_0800F7CC: + ldrb r0, [r3] + cmp r0, #2 + bne _0800F7E2 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + bne _0800F7E2 + lsls r0, r1 + orrs r2, r0 + lsls r0, r2, #0x18 + lsrs r2, r0, #0x18 +_0800F7E2: + adds r3, #0x14 + adds r1, #1 + cmp r1, #4 + ble _0800F7CC + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800F7F4: .4byte gUnknown_30050A0 + thumb_func_end sub_0800F7BC + + thumb_func_start sub_0800F7F8 +sub_0800F7F8: @ 0x0800F7F8 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r5, _0800F830 + strh r1, [r5] + movs r0, #0xf0 + lsls r0, r0, #7 + adds r4, r5, #0 + cmp r1, r0 + beq _0800F894 + cmp r1, r0 + bgt _0800F846 + movs r0, #0xbe + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F8E4 + cmp r1, r0 + bgt _0800F834 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + beq _0800F904 + movs r0, #0x88 + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F8F8 + b _0800F92A + .align 2, 0 +_0800F830: .4byte gUnknown_30031B0 +_0800F834: + movs r0, #0xcc + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F8E4 + movs r0, #0xee + lsls r0, r0, #7 + cmp r1, r0 + beq _0800F894 + b _0800F92A +_0800F846: + movs r0, #0xbe + lsls r0, r0, #8 + cmp r1, r0 + beq _0800F924 + cmp r1, r0 + bgt _0800F92A + movs r0, #0x88 + lsls r0, r0, #8 + cmp r1, r0 + beq _0800F864 + movs r0, #0xa1 + lsls r0, r0, #8 + cmp r1, r0 + beq _0800F87C + b _0800F92A +_0800F864: + ldr r0, _0800F878 + adds r1, r0, #0 + adds r1, #0x6e + ldrh r1, [r1] + strh r1, [r5, #2] + adds r0, #0x7d + ldrb r0, [r0] + adds r0, #0x80 + strh r0, [r5, #4] + b _0800F92A + .align 2, 0 +_0800F878: .4byte gUnknown_30050A0 +_0800F87C: + bl sub_0800F744 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800F92A + ldr r0, _0800F890 + adds r0, #0x5a + ldrb r0, [r0] + b _0800F928 + .align 2, 0 +_0800F890: .4byte gUnknown_30050A0 +_0800F894: + ldr r3, _0800F8D0 + ldr r1, _0800F8D4 + adds r0, r3, r1 + ldr r2, _0800F8D8 + adds r1, r3, r2 + ldrb r2, [r0] + ldrb r0, [r1] + eors r0, r2 + ldr r1, _0800F8DC + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r3, #0xd] + ldrb r0, [r3, #0xd] + strh r0, [r4, #2] + adds r2, r4, #4 + movs r4, #0 + ldr r0, _0800F8E0 + adds r3, r3, r0 +_0800F8BA: + adds r1, r2, r4 + adds r0, r4, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0800F8BA + b _0800F92A + .align 2, 0 +_0800F8D0: .4byte gUnknown_30050A0 +_0800F8D4: .4byte 0x0000099A +_0800F8D8: .4byte 0x0000099B +_0800F8DC: .4byte gUnknown_82C03E5 +_0800F8E0: .4byte 0x00000996 +_0800F8E4: + ldr r0, _0800F8F4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #2] + b _0800F92A + .align 2, 0 +_0800F8F4: .4byte gUnknown_30050A0 +_0800F8F8: + strh r1, [r5] + ldr r0, _0800F900 + ldrh r0, [r0, #0x2c] + b _0800F928 + .align 2, 0 +_0800F900: .4byte gUnknown_3002360 +_0800F904: + movs r4, #0 + ldr r3, _0800F920 +_0800F908: + adds r2, r4, #1 + lsls r1, r2, #1 + adds r1, r1, r5 + lsls r0, r4, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #5 + bls _0800F908 + b _0800F92A + .align 2, 0 +_0800F920: .4byte gUnknown_3005192 +_0800F924: + ldr r0, _0800F930 + ldrh r0, [r0] +_0800F928: + strh r0, [r5, #2] +_0800F92A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F930: .4byte gUnknown_3005B08 + thumb_func_end sub_0800F7F8 + + thumb_func_start sub_0800F934 +sub_0800F934: @ 0x0800F934 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0800F960 + ldrh r0, [r0] + cmp r0, #0 + bne _0800F95A + bl sub_08011570 + cmp r0, #0 + bne _0800F95A + ldr r0, _0800F964 + adds r1, r4, #0 + movs r2, #0xc + bl memcpy + movs r0, #0xbc + lsls r0, r0, #6 + bl sub_0800F7F8 +_0800F95A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800F960: .4byte gUnknown_30031B0 +_0800F964: .4byte gUnknown_3005192 + thumb_func_end sub_0800F934 + + thumb_func_start sub_0800F968 +sub_0800F968: @ 0x0800F968 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r6, r1, #0 + cmp r6, #0xfc + bls _0800F984 + ldr r0, _0800F9B0 + ldr r1, _0800F9B4 + ldr r2, _0800F9B8 + movs r3, #1 + bl AGBAssert +_0800F984: + ldr r5, _0800F9BC + ldr r0, [r5] + cmp r0, #0 + bne _0800F9AC + ldr r0, _0800F9C0 + ldrh r0, [r0] + cmp r0, #0 + bne _0800F9AC + movs r0, #0x7c + adds r0, r0, r5 + mov sb, r0 + ldrb r1, [r0] + mov r8, r1 + cmp r1, #0 + beq _0800F9C8 + ldr r1, _0800F9C4 + adds r1, #0x83 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0800F9AC: + movs r0, #0 + b _0800FA32 + .align 2, 0 +_0800F9B0: .4byte gUnknown_82C053C +_0800F9B4: .4byte 0x00000755 +_0800F9B8: .4byte gUnknown_82C0558 +_0800F9BC: .4byte gUnknown_30050A0 +_0800F9C0: .4byte gUnknown_30031B0 +_0800F9C4: .4byte gUnknown_20227FC +_0800F9C8: + adds r0, r6, #0 + movs r1, #0xc + bl __umodsi3 + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_0800A02C + adds r1, r5, #0 + adds r1, #0x7d + strb r0, [r1] + movs r0, #1 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + movs r1, #0xc + bl __udivsi3 + adds r0, 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, r0, #1 + cmp r6, r0 + bls _0800FA0A + str r7, [r5, #0x70] + b _0800FA1C +_0800FA0A: + ldr r4, _0800FA40 + cmp r7, r4 + beq _0800FA1A + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl memcpy +_0800FA1A: + str r4, [r5, #0x70] +_0800FA1C: + movs r0, #0x88 + lsls r0, r0, #8 + bl sub_0800F7F8 + ldr r0, _0800FA44 + ldr r1, _0800FA48 + str r1, [r0] + adds r0, #0x5b + movs r1, #0 + strb r1, [r0] + movs r0, #1 +_0800FA32: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0800FA40: .4byte gUnknown_202257C +_0800FA44: .4byte gUnknown_30050A0 +_0800FA48: .4byte sub_0800FA4C + thumb_func_end sub_0800F968 + + thumb_func_start sub_0800FA4C +sub_0800FA4C: @ 0x0800FA4C + push {r4, r5, lr} + ldr r0, _0800FA7C + ldrh r0, [r0] + cmp r0, #0 + bne _0800FAA0 + movs r5, #0x88 + lsls r5, r5, #8 + adds r0, r5, #0 + bl sub_0800F7F8 + ldr r4, _0800FA80 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _0800FA84 + adds r1, r4, #0 + adds r1, #0x5b + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _0800FAA0 + b _0800FA9C + .align 2, 0 +_0800FA7C: .4byte gUnknown_30031B0 +_0800FA80: .4byte gUnknown_30050A0 +_0800FA84: + bl sub_0800A02C + ldr r1, _0800FAA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, r5 + bne _0800FAA0 +_0800FA9C: + ldr r0, _0800FAAC + str r0, [r4] +_0800FAA0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800FAA8: .4byte gUnknown_3003130 +_0800FAAC: .4byte sub_0800FAB0 + thumb_func_end sub_0800FA4C + + thumb_func_start sub_0800FAB0 +sub_0800FAB0: @ 0x0800FAB0 + push {r4, r5, r6, lr} + ldr r0, _0800FB1C + mov ip, r0 + ldr r5, [r0, #0x70] + ldr r3, _0800FB20 + mov r2, ip + adds r2, #0x6c + ldrh r1, [r2] + movs r4, #0x89 + lsls r4, r4, #8 + adds r0, r4, #0 + orrs r0, r1 + strh r0, [r3] + movs r4, #0 + adds r6, r2, #0 + adds r3, #2 +_0800FAD0: + lsls r2, r4, #1 + ldrh r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r1, [r0, #1] + lsls r1, r1, #8 + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r3] + adds r3, #2 + adds r4, #1 + cmp r4, #6 + ble _0800FAD0 + mov r0, ip + adds r0, #0x6c + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + adds r0, #2 + ldrh r0, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r0, r1 + bhi _0800FB14 + mov r0, ip + adds r0, #0x7c + movs r1, #0 + strb r1, [r0] + ldr r0, _0800FB24 + mov r1, ip + str r0, [r1] +_0800FB14: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0800FB1C: .4byte gUnknown_30050A0 +_0800FB20: .4byte gUnknown_30031B0 +_0800FB24: .4byte sub_0800FB28 + thumb_func_end sub_0800FAB0 + + thumb_func_start sub_0800FB28 +sub_0800FB28: @ 0x0800FB28 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r5, _0800FBD0 + ldr r0, [r5, #0x70] + mov r8, r0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0800FBF0 + ldr r3, _0800FBD4 + adds r2, r5, #0 + adds r2, #0x6e + ldrh r0, [r2] + subs r0, #1 + ldr r4, _0800FBD8 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r3] + movs r4, #0 + mov sb, r5 + ldr r0, _0800FBDC + mov ip, r0 + lsls r5, r6, #4 + adds r7, r2, #0 + adds r3, #2 +_0800FB64: + lsls r2, r4, #1 + ldrh r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + add r0, r8 + adds r1, r0, #0 + subs r1, #0xb + ldrb r1, [r1] + lsls r1, r1, #8 + subs r0, #0xc + ldrb r0, [r0] + orrs r0, r1 + strh r0, [r3] + adds r3, #2 + adds r4, #1 + cmp r4, #6 + ble _0800FB64 + mov r1, ip + adds r0, r5, r1 + ldrb r1, [r0] + mov r3, sb + adds r0, r3, #0 + adds r0, #0x6e + ldrh r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _0800FBF4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x88 + adds r1, r0, r1 + ldr r2, _0800FBE0 + adds r0, r0, r3 + adds r0, #0x82 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + beq _0800FBE8 + adds r0, r6, #0 + bl sub_0800F0F8 + ldr r1, _0800FBE4 + adds r1, #0x64 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0800FBF4 + .align 2, 0 +_0800FBD0: .4byte gUnknown_30050A0 +_0800FBD4: .4byte gUnknown_30031B0 +_0800FBD8: .4byte 0xFFFF8900 +_0800FBDC: .4byte gUnknown_3003130 +_0800FBE0: .4byte gUnknown_82C0378 +_0800FBE4: .4byte gUnknown_20227FC +_0800FBE8: + movs r0, #0 + mov r4, sb + str r0, [r4] + b _0800FBF4 +_0800FBF0: + movs r0, #0 + str r0, [r5] +_0800FBF4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0800FB28 + + thumb_func_start sub_0800FC00 +sub_0800FC00: @ 0x0800FC00 + push {lr} + ldr r1, _0800FC18 + adds r1, #0x5a + strb r0, [r1] + movs r0, #0xa1 + lsls r0, r0, #8 + bl sub_0800F7F8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0800FC18: .4byte gUnknown_30050A0 + thumb_func_end sub_0800FC00 + + thumb_func_start sub_0800FC1C +sub_0800FC1C: @ 0x0800FC1C + push {lr} + bl rfu_clearAllSlot + bl sub_0800BB04 + ldr r1, _0800FC40 + movs r0, #0 + strb r0, [r1] + ldr r2, _0800FC44 + adds r3, r2, #0 + adds r3, #0xef + movs r1, #0 + movs r0, #1 + strb r0, [r3] + str r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0800FC40: .4byte gUnknown_30031C4 +_0800FC44: .4byte gUnknown_30050A0 + thumb_func_end sub_0800FC1C + + thumb_func_start sub_0800FC48 +sub_0800FC48: @ 0x0800FC48 + push {lr} + ldr r0, _0800FC64 + ldr r0, [r0] + ldrb r1, [r0, #2] + ldrb r0, [r0, #3] + orrs r0, r1 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + bl sub_0800FC1C + pop {r0} + bx r0 + .align 2, 0 +_0800FC64: .4byte gUnknown_3007630 + thumb_func_end sub_0800FC48 + + thumb_func_start sub_0800FC68 +sub_0800FC68: @ 0x0800FC68 + push {r4, lr} + ldr r4, _0800FC80 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0800FC88 + bl sub_0800D0EC + ldr r0, _0800FC84 + adds r1, r4, r0 + movs r0, #2 + strb r0, [r1] + b _0800FC8C + .align 2, 0 +_0800FC80: .4byte gUnknown_30050A0 +_0800FC84: .4byte 0x0000099C +_0800FC88: + ldr r0, _0800FC94 + str r0, [r4] +_0800FC8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800FC94: .4byte sub_0800FC48 + thumb_func_end sub_0800FC68 + + thumb_func_start sub_0800FC98 +sub_0800FC98: @ 0x0800FC98 + push {lr} + bl sub_0800D0EC + ldr r2, _0800FCBC + ldr r0, _0800FCC0 + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] + ldr r0, _0800FCC4 + ldr r1, [r0] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + orrs r0, r1 + ldr r1, _0800FCC8 + adds r2, r2, r1 + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0800FCBC: .4byte gUnknown_30050A0 +_0800FCC0: .4byte 0x0000099C +_0800FCC4: .4byte gUnknown_3007630 +_0800FCC8: .4byte 0x0000099B + thumb_func_end sub_0800FC98 + + thumb_func_start sub_0800FCCC +sub_0800FCCC: @ 0x0800FCCC + push {r4, r5, lr} + ldr r0, _0800FD14 + ldrb r5, [r0, #0xd] + movs r2, #0 + movs r1, #0 + adds r3, r0, #0 + adds r4, r3, #0 + adds r4, #0xe4 +_0800FCDC: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0800FCE6 + adds r2, #1 +_0800FCE6: + adds r1, #1 + cmp r1, #4 + ble _0800FCDC + cmp r2, r5 + bne _0800FD20 + ldr r2, _0800FD18 + ldr r0, [r2] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _0800FD1C + adds r0, r3, #0 + adds r0, #0xee + ldrb r1, [r0] + movs r1, #3 + strb r1, [r0] + bl sub_0800FC68 + b _0800FD20 + .align 2, 0 +_0800FD14: .4byte gUnknown_30050A0 +_0800FD18: .4byte gUnknown_2022C90 +_0800FD1C: + ldr r0, _0800FD28 + str r0, [r3] +_0800FD20: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800FD28: .4byte sub_0800FC68 + thumb_func_end sub_0800FCCC + + thumb_func_start sub_0800FD2C +sub_0800FD2C: @ 0x0800FD2C + push {r4, lr} + ldr r0, _0800FD58 + ldrh r0, [r0] + cmp r0, #0 + bne _0800FD50 + ldr r4, _0800FD5C + movs r1, #0x9a + lsls r1, r1, #4 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FD50 + movs r0, #0xbe + lsls r0, r0, #7 + bl sub_0800F7F8 + ldr r0, _0800FD60 + str r0, [r4] +_0800FD50: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800FD58: .4byte gUnknown_30031B0 +_0800FD5C: .4byte gUnknown_30050A0 +_0800FD60: .4byte sub_0800FCCC + thumb_func_end sub_0800FD2C + + thumb_func_start sub_0800FD64 +sub_0800FD64: @ 0x0800FD64 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _0800FD88 + ldr r0, [r2] + cmp r0, #0 + bne _0800FD84 + ldr r1, _0800FD8C + adds r0, r2, r1 + movs r1, #1 + strb r1, [r0] + ldr r0, _0800FD90 + str r0, [r2] + adds r0, r3, #0 + bl sub_080A8964 +_0800FD84: + pop {r0} + bx r0 + .align 2, 0 +_0800FD88: .4byte gUnknown_30050A0 +_0800FD8C: .4byte 0x00000991 +_0800FD90: .4byte sub_0800FD2C + thumb_func_end sub_0800FD64 + + thumb_func_start sub_0800FD94 +sub_0800FD94: @ 0x0800FD94 + push {r4, lr} + ldr r4, _0800FDB4 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0800FDAC + adds r0, r4, #0 + movs r1, #5 + bl sub_080A8878 +_0800FDAC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800FDB4: .4byte sub_0800FD64 + thumb_func_end sub_0800FD94 + + thumb_func_start sub_0800FDB8 +sub_0800FDB8: @ 0x0800FDB8 + push {r4, r5, lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800FDE6 + ldr r1, _0800FE50 + ldr r2, _0800FE54 + adds r0, r1, r2 + ldrb r0, [r0] + adds r4, r0, #0 + cmp r4, #0 + bne _0800FDE6 + adds r5, r1, #0 + adds r5, #0xfe + ldrh r0, [r5] + cmp r0, #0x3c + bls _0800FDE6 + movs r0, #0xcc + lsls r0, r0, #7 + bl sub_0800F7F8 + strh r4, [r5] +_0800FDE6: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + cmp r1, r2 + bhs _0800FE12 + ldr r0, _0800FE50 + adds r3, r0, #0 + adds r3, #0xe9 + ldrb r0, [r3] + cmp r0, #0 + beq _0800FE12 +_0800FE00: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + bhs _0800FE12 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FE00 +_0800FE12: + ldr r4, _0800FE50 + cmp r1, r2 + bne _0800FE3E + movs r1, #0 + adds r3, r4, #0 + adds r3, #0xe9 + movs r2, #0 +_0800FE20: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _0800FE20 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, r1 + ldrh r1, [r0] + adds r1, #1 + movs r2, #0 + strh r1, [r0] + str r2, [r4] +_0800FE3E: + adds r1, r4, #0 + adds r1, #0xfe + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0800FE50: .4byte gUnknown_30050A0 +_0800FE54: .4byte 0x0000069E + thumb_func_end sub_0800FDB8 + + thumb_func_start sub_0800FE58 +sub_0800FE58: @ 0x0800FE58 + push {r4, lr} + ldr r4, _0800FE80 + ldr r1, _0800FE84 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FE7A + ldr r0, _0800FE88 + ldrh r0, [r0] + cmp r0, #0 + bne _0800FE7A + movs r0, #0xcc + lsls r0, r0, #7 + bl sub_0800F7F8 + ldr r0, _0800FE8C + str r0, [r4] +_0800FE7A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800FE80: .4byte gUnknown_30050A0 +_0800FE84: .4byte 0x0000069E +_0800FE88: .4byte gUnknown_30031B0 +_0800FE8C: .4byte sub_0800FDB8 + thumb_func_end sub_0800FE58 + + thumb_func_start sub_0800FE90 +sub_0800FE90: @ 0x0800FE90 + push {r4, lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0800FECC + ldr r4, _0800FEBC + ldr r1, _0800FEC0 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FF1E + ldr r0, _0800FEC4 + ldrh r0, [r0] + cmp r0, #0 + bne _0800FF1E + movs r0, #0xcc + lsls r0, r0, #7 + bl sub_0800F7F8 + ldr r0, _0800FEC8 + b _0800FF1C + .align 2, 0 +_0800FEBC: .4byte gUnknown_30050A0 +_0800FEC0: .4byte 0x0000069E +_0800FEC4: .4byte gUnknown_30031B0 +_0800FEC8: .4byte sub_0800FDB8 +_0800FECC: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #1 + cmp r1, r2 + bhs _0800FEFA + ldr r3, _0800FF24 + adds r0, r3, #0 + adds r0, #0xea + ldrb r0, [r0] + cmp r0, #0 + beq _0800FEFA + adds r3, #0xe9 +_0800FEE8: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + bhs _0800FEFA + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FEE8 +_0800FEFA: + cmp r1, r2 + bne _0800FF1E + ldr r4, _0800FF24 + ldr r1, _0800FF28 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0800FF1E + ldr r0, _0800FF2C + ldrh r0, [r0] + cmp r0, #0 + bne _0800FF1E + movs r0, #0xcc + lsls r0, r0, #7 + bl sub_0800F7F8 + ldr r0, _0800FF30 +_0800FF1C: + str r0, [r4] +_0800FF1E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800FF24: .4byte gUnknown_30050A0 +_0800FF28: .4byte 0x0000069E +_0800FF2C: .4byte gUnknown_30031B0 +_0800FF30: .4byte sub_0800FE58 + thumb_func_end sub_0800FE90 + + thumb_func_start sub_0800FF34 +sub_0800FF34: @ 0x0800FF34 + push {lr} + ldr r1, _0800FF4C + ldr r2, [r1] + cmp r2, #0 + bne _0800FF48 + ldr r0, _0800FF50 + str r0, [r1] + adds r0, r1, #0 + adds r0, #0xfe + strh r2, [r0] +_0800FF48: + pop {r0} + bx r0 + .align 2, 0 +_0800FF4C: .4byte gUnknown_30050A0 +_0800FF50: .4byte sub_0800FE90 + thumb_func_end sub_0800FF34 + + thumb_func_start sub_0800FF54 +sub_0800FF54: @ 0x0800FF54 + push {r4, lr} + adds r3, r0, #0 + ldr r1, _0800FF70 + ldrh r0, [r1] + cmp r0, r3 + beq _0800FF82 + ldr r4, _0800FF74 + adds r2, r1, #0 +_0800FF64: + ldrh r0, [r2] + cmp r0, r4 + bne _0800FF78 + movs r0, #0 + b _0800FF84 + .align 2, 0 +_0800FF70: .4byte gUnknown_82C0430 +_0800FF74: .4byte 0x0000FFFF +_0800FF78: + adds r1, #2 + adds r2, #2 + ldrh r0, [r1] + cmp r0, r3 + bne _0800FF64 +_0800FF82: + movs r0, #1 +_0800FF84: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800FF54 + + thumb_func_start sub_0800FF8C +sub_0800FF8C: @ 0x0800FF8C + push {lr} + cmp r0, #0 + beq _0800FFA0 + movs r1, #0x96 + lsls r1, r1, #2 + movs r0, #1 + bl sub_0800D00C + movs r0, #0 + b _0800FFAC +_0800FFA0: + movs r0, #0 + movs r1, #0 + bl sub_0800D00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0800FFAC: + pop {r1} + bx r1 + thumb_func_end sub_0800FF8C + + thumb_func_start sub_0800FFB0 +sub_0800FFB0: @ 0x0800FFB0 + push {lr} + ldr r0, _0800FFC8 + ldr r1, _0800FFCC + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + movs r0, #0 + bl sub_0800BD38 + pop {r0} + bx r0 + .align 2, 0 +_0800FFC8: .4byte gUnknown_30050A0 +_0800FFCC: .4byte 0x00000991 + thumb_func_end sub_0800FFB0 + + thumb_func_start sub_0800FFD0 +sub_0800FFD0: @ 0x0800FFD0 + push {lr} + ldr r1, _0800FFE4 + ldrb r0, [r1, #0xc] + cmp r0, #1 + beq _0800FFEC + ldr r2, _0800FFE8 + adds r0, r1, r2 + ldrb r0, [r0] + b _0800FFEE + .align 2, 0 +_0800FFE4: .4byte gUnknown_30050A0 +_0800FFE8: .4byte 0x00000986 +_0800FFEC: + movs r0, #0 +_0800FFEE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0800FFD0 + + thumb_func_start sub_0800FFF4 +sub_0800FFF4: @ 0x0800FFF4 + ldr r0, _0800FFFC + ldrb r0, [r0, #0xd] + bx lr + .align 2, 0 +_0800FFFC: .4byte gUnknown_30050A0 + thumb_func_end sub_0800FFF4 + + thumb_func_start sub_08010000 +sub_08010000: @ 0x08010000 + push {lr} + ldr r2, _08010014 + adds r0, r2, #0 + adds r0, #0xf1 + ldrb r0, [r0] + cmp r0, #2 + bne _08010018 + movs r0, #0 + b _08010024 + .align 2, 0 +_08010014: .4byte gUnknown_30050A0 +_08010018: + movs r1, #0 + ldr r0, [r2] + cmp r0, #0 + bne _08010022 + movs r1, #1 +_08010022: + adds r0, r1, #0 +_08010024: + pop {r1} + bx r1 + thumb_func_end sub_08010000 + + thumb_func_start sub_08010028 +sub_08010028: @ 0x08010028 + push {lr} + ldr r0, _0801003C + ldr r0, [r0] + cmp r0, #0 + beq _08010036 + bl _call_via_r0 +_08010036: + pop {r0} + bx r0 + .align 2, 0 +_0801003C: .4byte gUnknown_30050A0 + thumb_func_end sub_08010028 + + thumb_func_start sub_08010040 +sub_08010040: @ 0x08010040 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r7, #0 + movs r5, #0 + ldr r6, _080100AC + ldr r0, _080100B0 + adds r0, r0, r6 + mov r8, r0 +_08010052: + ldr r1, _080100B4 + adds r0, r6, r1 + adds r4, r5, r0 + ldrb r0, [r4] + subs r0, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080100DA + ldr r1, _080100B8 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0, #0x34] + cmp r0, #0x46 + beq _08010076 + cmp r0, #0x48 + bne _080100C0 +_08010076: + ldr r2, _080100BC + adds r0, r6, r2 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #8 + bne _080100DA + movs r0, #9 + strb r0, [r4] + movs r0, #0xa + strb r0, [r1] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + movs r0, #8 + bl rfu_clearSlot + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r5 + lsrs r0, r0, #0x18 + movs r1, #8 + adds r2, r4, #0 + movs r3, #1 + bl rfu_NI_setSendData + movs r7, #1 + b _080100DA + .align 2, 0 +_080100AC: .4byte gUnknown_30050A0 +_080100B0: .4byte 0x000008F6 +_080100B4: .4byte 0x00000989 +_080100B8: .4byte gUnknown_3007620 +_080100BC: .4byte 0x0000098D +_080100C0: + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0, #0x34] + cmp r0, #0x47 + bne _080100DA + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + movs r0, #8 + bl rfu_clearSlot +_080100DA: + adds r5, #1 + cmp r5, #3 + ble _08010052 + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08010040 + + thumb_func_start sub_080100EC +sub_080100EC: @ 0x080100EC + push {r4, r5, r6, lr} + movs r3, #0 + movs r1, #0 + ldr r5, _08010138 + movs r6, #1 + movs r4, #0 +_080100F8: + adds r2, r1, r5 + ldrb r0, [r2] + cmp r0, #0xb + bne _0801010C + adds r0, r6, #0 + lsls r0, r1 + orrs r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + strb r4, [r2] +_0801010C: + adds r1, #1 + cmp r1, #3 + ble _080100F8 + cmp r3, #0 + beq _08010120 + adds r0, r3, #0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_08010120: + movs r1, #0 + ldr r2, _08010138 +_08010124: + adds r0, r1, r2 + ldrb r0, [r0] + subs r0, #0xa + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0801013C + movs r0, #1 + b _08010144 + .align 2, 0 +_08010138: .4byte gUnknown_3005A2D +_0801013C: + adds r1, #1 + cmp r1, #3 + ble _08010124 + movs r0, #0 +_08010144: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080100EC + + thumb_func_start sub_0801014C +sub_0801014C: @ 0x0801014C + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r1, r2, #0 + bl sub_080117D0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _08010180 + ldr r0, _08010178 + ldr r2, _0801017C + adds r0, r0, r2 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #9 + beq _08010180 + movs r0, #0 + b _08010182 + .align 2, 0 +_08010178: .4byte gUnknown_30050A0 +_0801017C: .4byte 0x00000989 +_08010180: + movs r0, #1 +_08010182: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801014C + + thumb_func_start sub_08010188 +sub_08010188: @ 0x08010188 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, r2, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080117D0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080101CC + ldr r0, _080101D0 + adds r5, r5, r0 + adds r5, r4, r5 + strb r6, [r5] + movs r0, #4 + adds r1, r4, #0 + bl rfu_clearSlot + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r4 + lsrs r0, r0, #0x18 + movs r1, #8 + adds r2, r5, #0 + movs r3, #1 + bl rfu_NI_setSendData + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080101CC: .4byte gUnknown_30050A0 +_080101D0: .4byte 0x00000989 + thumb_func_end sub_08010188 + + thumb_func_start sub_080101D4 +sub_080101D4: @ 0x080101D4 + push {r4, r5, lr} + ldr r4, _08010208 + ldr r0, _0801020C + adds r5, r4, r0 + movs r0, #8 + strb r0, [r5] + ldr r0, _08010210 + adds r4, r4, r0 + ldrb r1, [r4] + movs r0, #4 + bl rfu_clearSlot + ldrb r1, [r4] + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r1 + lsrs r0, r0, #0x18 + movs r1, #8 + adds r2, r5, #0 + movs r3, #1 + bl rfu_NI_setSendData + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08010208: .4byte gUnknown_30050A0 +_0801020C: .4byte 0x0000093D +_08010210: .4byte 0x000008F6 + thumb_func_end sub_080101D4 + + thumb_func_start sub_08010214 +sub_08010214: @ 0x08010214 + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r1, r2, #0 + bl sub_080117D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08010230 + movs r0, #2 + b _0801024A +_08010230: + ldr r1, _08010244 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0 + beq _08010248 + movs r0, #0 + b _0801024A + .align 2, 0 +_08010244: .4byte gUnknown_3007620 +_08010248: + movs r0, #1 +_0801024A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08010214 + + thumb_func_start sub_08010250 +sub_08010250: @ 0x08010250 + push {r4, r5, lr} + bl sub_08010040 + movs r4, #0 + ldr r0, _08010294 + ldr r1, _08010298 + adds r5, r0, r1 +_0801025E: + ldr r1, _0801029C + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0] + subs r0, #0x26 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08010288 + adds r1, r4, r5 + ldrb r0, [r1] + cmp r0, #0xa + bne _0801027E + movs r0, #0xb + strb r0, [r1] +_0801027E: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #4 + bl rfu_clearSlot +_08010288: + adds r4, #1 + cmp r4, #3 + ble _0801025E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08010294: .4byte gUnknown_30050A0 +_08010298: .4byte 0x0000098D +_0801029C: .4byte gUnknown_3007620 + thumb_func_end sub_08010250 + + thumb_func_start sub_080102A0 +sub_080102A0: @ 0x080102A0 + push {r4, r5, lr} + movs r4, #0 + ldr r1, _08010318 + ldr r2, _0801031C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #8 + bne _080102DA + ldr r2, _08010320 + ldr r0, _08010324 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0x26 + beq _080102D2 + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0x27 + bne _080102DA +_080102D2: + ldrb r1, [r1] + movs r0, #4 + bl rfu_clearSlot +_080102DA: + ldr r2, _08010320 + ldr r5, _08010318 + ldr r0, _08010324 + adds r1, r5, r0 + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0, #0x34] + cmp r0, #0x46 + beq _080102FE + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0, #0x34] + cmp r0, #0x48 + bne _0801032C +_080102FE: + ldrb r1, [r1] + movs r0, #8 + bl rfu_clearSlot + ldr r2, _08010328 + adds r4, r5, r2 + ldrb r0, [r4] + movs r1, #0 + bl sub_08011554 + ldrb r4, [r4] + b _08010344 + .align 2, 0 +_08010318: .4byte gUnknown_30050A0 +_0801031C: .4byte 0x0000093D +_08010320: .4byte gUnknown_3007620 +_08010324: .4byte 0x000008F6 +_08010328: .4byte 0x0000093E +_0801032C: + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0, #0x34] + cmp r0, #0x47 + bne _08010344 + ldrb r1, [r1] + movs r0, #8 + bl rfu_clearSlot + movs r4, #6 +_08010344: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080102A0 + + thumb_func_start sub_0801034C +sub_0801034C: @ 0x0801034C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _0801039C + adds r0, r5, #0 + adds r0, #0xf1 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08010374 + movs r0, #0x9a + lsls r0, r0, #4 + adds r1, r5, r0 + movs r0, #0 + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A8964 +_08010374: + ldr r2, _080103A0 + lsls r1, r6, #2 + adds r0, r1, r6 + lsls r0, r0, #3 + adds r4, r0, r2 + movs r2, #8 + ldrsh r0, [r4, r2] + adds r7, r1, #0 + cmp r0, #3 + beq _0801041C + cmp r0, #3 + bgt _080103A4 + cmp r0, #1 + beq _080103CC + cmp r0, #1 + bgt _08010418 + cmp r0, #0 + beq _080103B6 + b _080104D4 + .align 2, 0 +_0801039C: .4byte gUnknown_30050A0 +_080103A0: .4byte gUnknown_3005B60 +_080103A4: + cmp r0, #5 + beq _08010450 + cmp r0, #5 + blt _0801043E + cmp r0, #6 + beq _08010484 + cmp r0, #0x65 + beq _08010404 + b _080104D4 +_080103B6: + bl sub_0800F744 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080103C2 + b _080104D4 +_080103C2: + bl sub_0800A178 + bl sub_0800AE24 + b _08010448 +_080103CC: + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _0801040C + ldr r0, _080103E4 + ldrb r0, [r0] + cmp r0, #0 + beq _080103E8 + movs r0, #0xf0 + lsls r0, r0, #7 + bl sub_0800F7F8 + b _080103F0 + .align 2, 0 +_080103E4: .4byte gUnknown_30031C4 +_080103E8: + movs r0, #0xee + lsls r0, r0, #7 + bl sub_0800F7F8 +_080103F0: + ldr r0, _08010400 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x65 + strh r0, [r1, #8] + b _080104D4 + .align 2, 0 +_08010400: .4byte gUnknown_3005B60 +_08010404: + ldr r0, _08010414 + ldrh r0, [r0] + cmp r0, #0 + bne _080104D4 +_0801040C: + movs r0, #2 + strh r0, [r4, #8] + b _080104D4 + .align 2, 0 +_08010414: .4byte gUnknown_30031B0 +_08010418: + ldrb r0, [r5, #0xd] + b _08010444 +_0801041C: + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _08010448 + bl sub_0800F744 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080104D4 + adds r1, r5, #0 + adds r1, #0x5a + movs r0, #0 + strb r0, [r1] + movs r0, #0xa1 + lsls r0, r0, #8 + bl sub_0800F7F8 + b _08010448 +_0801043E: + bl sub_0800F76C + lsls r0, r0, #0x18 +_08010444: + cmp r0, #0 + beq _080104D4 +_08010448: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080104D4 +_08010450: + movs r4, #0 + ldrb r0, [r5, #0xd] + cmp r4, r0 + bge _0801046E +_08010458: + adds r0, r4, #0 + bl sub_0800AE80 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800F1E8 + adds r4, #1 + ldrb r2, [r5, #0xd] + cmp r4, r2 + blt _08010458 +_0801046E: + ldr r0, _08010480 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080104D4 + .align 2, 0 +_08010480: .4byte gUnknown_3005B60 +_08010484: + adds r0, r6, #0 + bl sub_080A8964 + ldr r1, _080104DC + movs r0, #1 + strb r0, [r1] + movs r0, #0x9a + lsls r0, r0, #4 + adds r1, r5, r0 + movs r0, #0 + strb r0, [r1] + movs r1, #0x96 + lsls r1, r1, #2 + movs r0, #1 + bl sub_0800D00C + ldr r2, _080104E0 + adds r1, r5, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _080104D4 + movs r4, #0 + adds r2, r1, #0 + movs r3, #1 + ldr r0, _080104E4 + adds r5, r5, r0 +_080104B8: + ldrb r0, [r2] + asrs r0, r4 + ands r0, r3 + cmp r0, #0 + beq _080104CE + adds r0, r3, #0 + lsls r0, r4 + strb r0, [r5] + ldrb r1, [r2] + eors r0, r1 + strb r0, [r2] +_080104CE: + adds r4, #1 + cmp r4, #3 + ble _080104B8 +_080104D4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080104DC: .4byte gUnknown_30031C4 +_080104E0: .4byte 0x0000099E +_080104E4: .4byte 0x0000099D + thumb_func_end sub_0801034C + + thumb_func_start sub_080104E8 +sub_080104E8: @ 0x080104E8 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + movs r5, #1 + ldr r4, _08010510 + movs r3, #0 +_080104F6: + adds r0, r2, #0 + asrs r0, r1 + ands r0, r5 + cmp r0, #0 + beq _08010504 + adds r0, r1, r4 + strb r3, [r0] +_08010504: + adds r1, #1 + cmp r1, #3 + ble _080104F6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08010510: .4byte gUnknown_3005A36 + thumb_func_end sub_080104E8 + + thumb_func_start sub_08010514 +sub_08010514: @ 0x08010514 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldr r1, _0801055C + ldrb r0, [r3, #0xf] + strb r0, [r1, #0xd] + movs r2, #0 + ldr r0, _08010560 + adds r5, r1, r0 + adds r4, r3, #0 + adds r4, #0x10 +_08010528: + adds r0, r2, r5 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _08010528 + ldr r4, _08010564 + movs r2, #4 +_0801053A: + adds r0, r4, #0 + adds r1, r3, #0 + adds r1, #0x14 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldr r1, [r1] + str r1, [r0] + adds r3, #0x1c + adds r4, #0x1c + subs r2, #1 + cmp r2, #0 + bge _0801053A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801055C: .4byte gUnknown_30050A0 +_08010560: .4byte 0x00000996 +_08010564: .4byte gUnknown_20226A0 + thumb_func_end sub_08010514 + + thumb_func_start sub_08010568 +sub_08010568: @ 0x08010568 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _0801059C + adds r1, r4, #0 + bl strcmp + adds r5, r0, #0 + cmp r5, #0 + bne _08010594 + adds r0, r4, #0 + bl sub_08010514 + mov r0, sp + strh r5, [r0] + ldr r2, _080105A0 + adds r1, r4, #0 + bl CpuSet + movs r0, #0 + bl sub_0800A1B0 +_08010594: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801059C: .4byte gUnknown_82C0564 +_080105A0: .4byte 0x0100007E + thumb_func_end sub_08010568 + + thumb_func_start sub_080105A4 +sub_080105A4: @ 0x080105A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _08010604 + ldr r2, _08010608 + ldr r1, _0801060C + adds r0, r3, r1 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r2, _08010610 + adds r0, r3, r2 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r4, [r0] + adds r0, r3, #0 + adds r0, #0xf1 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080105E2 + movs r0, #0x9a + lsls r0, r0, #4 + adds r1, r3, r0 + movs r0, #0 + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A8964 +_080105E2: + ldr r0, _08010614 + lsls r2, r6, #2 + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #8 + ldrsh r1, [r1, r3] + adds r3, r0, #0 + adds r7, r2, #0 + cmp r1, #5 + bls _080105FA + b _080107E2 +_080105FA: + lsls r0, r1, #2 + ldr r1, _08010618 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08010604: .4byte gUnknown_30050A0 +_08010608: .4byte gUnknown_82C03DC +_0801060C: .4byte 0x000009A1 +_08010610: .4byte 0x00000996 +_08010614: .4byte gUnknown_3005B60 +_08010618: .4byte _0801061C +_0801061C: @ jump table + .4byte _08010634 @ case 0 + .4byte _08010654 @ case 1 + .4byte _0801066C @ case 2 + .4byte _080106B0 @ case 3 + .4byte _080106FA @ case 4 + .4byte _08010784 @ case 5 +_08010634: + ldr r0, _08010650 + ldrh r0, [r0] + cmp r0, #0 + beq _0801063E + b _080107E2 +_0801063E: + adds r0, r4, #0 + bl sub_0800A1B0 + movs r0, #0xf0 + lsls r0, r0, #7 + bl sub_0800F7F8 + b _0801073A + .align 2, 0 +_08010650: .4byte gUnknown_30031B0 +_08010654: + ldr r0, _08010668 + ldrh r0, [r0] + cmp r0, #0 + beq _0801065E + b _080107E2 +_0801065E: + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r3 + b _08010742 + .align 2, 0 +_08010668: .4byte gUnknown_30031B0 +_0801066C: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08010680 + b _080107E2 +_08010680: + adds r0, r4, #0 + bl sub_0800A1B0 + lsls r1, r4, #8 + ldr r0, _080106A8 + adds r1, r1, r0 + ldr r2, _080106AC + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r1, #0x10 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldr r1, [r1] + str r1, [r0] + b _0801073A + .align 2, 0 +_080106A8: .4byte gUnknown_202207C +_080106AC: .4byte gUnknown_20226A0 +_080106B0: + ldr r5, _0801074C + adds r1, r5, #0 + ldr r0, _08010750 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldrh r2, [r0] + strh r2, [r1] + ldrb r0, [r0, #2] + strb r0, [r1, #2] + ldr r1, _08010754 + ldrb r0, [r1, #0xd] + strb r0, [r5, #0xf] + movs r2, #0 + adds r4, r5, #0 + adds r4, #0x10 + ldr r0, _08010758 + adds r3, r1, r0 +_080106D2: + adds r0, r4, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _080106D2 + ldr r1, _0801075C + adds r0, r5, #0 + adds r0, #0x14 + movs r2, #0x8c + bl memcpy + ldr r0, _08010760 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_080106FA: + ldr r5, _0801074C + ldr r1, _08010754 + ldrb r0, [r1, #0xd] + strb r0, [r5, #0xf] + movs r2, #0 + ldr r3, _0801075C + mov ip, r3 + adds r4, r5, #0 + adds r4, #0x10 + ldr r0, _08010758 + adds r3, r1, r0 +_08010710: + adds r0, r4, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _08010710 + adds r0, r5, #0 + adds r0, #0x14 + mov r1, ip + movs r2, #0x8c + bl memcpy + ldr r1, _0801074C + movs r0, #0 + movs r2, #0xa0 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080107E2 +_0801073A: + ldr r0, _08010760 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 +_08010742: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080107E2 + .align 2, 0 +_0801074C: .4byte gUnknown_202257C +_08010750: .4byte gUnknown_82C0564 +_08010754: .4byte gUnknown_30050A0 +_08010758: .4byte 0x00000996 +_0801075C: .4byte gUnknown_20226A0 +_08010760: .4byte gUnknown_3005B60 +_08010764: + adds r0, r3, #0 + lsls r0, r2 + ldr r2, _08010780 + adds r1, r5, r2 + strb r0, [r1] + ldrb r1, [r4] + eors r0, r1 + strb r0, [r4] + movs r4, #0x9a + lsls r4, r4, #4 + adds r0, r5, r4 + strb r3, [r0] + b _080107DC + .align 2, 0 +_08010780: .4byte 0x0000099D +_08010784: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080107E2 + bl sub_0800A114 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080107E2 + mov r0, sp + movs r4, #0 + strh r4, [r0] + ldr r1, _080107EC + ldr r2, _080107F0 + bl CpuSet + movs r0, #0 + bl sub_0800A1B0 + ldr r1, _080107F4 + movs r2, #0x9a + lsls r2, r2, #4 + adds r0, r1, r2 + strb r4, [r0] + ldr r4, _080107F8 + adds r3, r1, r4 + ldrb r0, [r3] + cmp r0, #0 + beq _080107DC + movs r2, #0 + adds r5, r1, #0 + adds r4, r3, #0 + ldrb r1, [r4] + movs r3, #1 +_080107CC: + adds r0, r1, #0 + asrs r0, r2 + ands r0, r3 + cmp r0, #0 + bne _08010764 + adds r2, #1 + cmp r2, #3 + ble _080107CC +_080107DC: + adds r0, r6, #0 + bl sub_080A8964 +_080107E2: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080107EC: .4byte gUnknown_202207C +_080107F0: .4byte 0x0100007E +_080107F4: .4byte gUnknown_30050A0 +_080107F8: .4byte 0x0000099E + thumb_func_end sub_080105A4 + + thumb_func_start sub_080107FC +sub_080107FC: @ 0x080107FC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _08010838 + adds r0, r6, #0 + adds r0, #0xf1 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0801081A + adds r0, r5, #0 + bl sub_080A8964 +_0801081A: + ldr r1, _0801083C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08010860 + cmp r0, #1 + bgt _08010840 + cmp r0, #0 + beq _08010846 + b _08010896 + .align 2, 0 +_08010838: .4byte gUnknown_30050A0 +_0801083C: .4byte gUnknown_3005B60 +_08010840: + cmp r0, #2 + beq _08010872 + b _08010896 +_08010846: + ldrb r0, [r6, #0xd] + cmp r0, #0 + beq _08010896 + bl sub_0800AE24 + ldr r1, _0801085C + movs r0, #0 + movs r2, #0x3c + bl sub_0800A070 + b _0801086A + .align 2, 0 +_0801085C: .4byte gUnknown_202257C +_08010860: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08010896 +_0801086A: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08010896 +_08010872: + bl sub_0800A114 + movs r4, #1 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + beq _08010896 + ldr r0, _0801089C + bl sub_08010514 + movs r0, #0 + bl sub_0800A1B0 + ldr r0, _080108A0 + strb r4, [r0] + adds r0, r5, #0 + bl sub_080A8964 +_08010896: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801089C: .4byte gUnknown_202207C +_080108A0: .4byte gUnknown_30031C4 + thumb_func_end sub_080107FC + + thumb_func_start sub_080108A4 +sub_080108A4: @ 0x080108A4 + push {r4, r5, r6, r7, lr} + ldr r0, _0801092C + adds r1, r0, #0 + adds r1, #0xee + ldrb r1, [r1] + adds r3, r0, #0 + cmp r1, #1 + bne _0801094C + ldr r2, _08010930 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _0801094C + ldr r0, _08010934 + ldr r1, [r0, #4] + ldr r0, _08010938 + cmp r1, r0 + beq _080108CE + ldr r0, [r2, #0x3c] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _080108D4 +_080108CE: + ldr r1, _0801093C + movs r0, #2 + strb r0, [r1] +_080108D4: + ldr r4, _08010940 + adds r0, r4, #0 + bl sub_08000540 + ldr r0, _08010934 + str r4, [r0, #8] + ldr r5, _0801092C + ldrh r0, [r5, #0xa] + lsls r4, r0, #0x10 + ldrh r0, [r5, #0x10] + lsls r0, r0, #8 + orrs r4, r0 + ldrh r0, [r5, #0x12] + orrs r4, r0 + ldr r1, _08010944 + adds r0, r5, r1 + ldrb r0, [r0] + adds r7, r0, #0 + ldr r1, _08010948 + adds r0, r5, r1 + ldrb r0, [r0] + adds r6, r0, #0 + bl sub_08011564 + movs r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08010910 + movs r3, #1 +_08010910: + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0800A9F4 + adds r0, r5, #0 + adds r0, #0xee + ldrb r1, [r0] + movs r1, #2 + strb r1, [r0] + bl sub_08009384 + b _0801097E + .align 2, 0 +_0801092C: .4byte gUnknown_30050A0 +_08010930: .4byte gUnknown_30041E0 +_08010934: .4byte gUnknown_3002360 +_08010938: .4byte sub_08017ED0 +_0801093C: .4byte gUnknown_300319C +_08010940: .4byte sub_0800AA0C +_08010944: .4byte 0x0000069E +_08010948: .4byte 0x000008D2 +_0801094C: + ldr r1, _08010984 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _08010960 + ldr r1, _08010988 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _0801097E +_08010960: + ldr r0, _0801098C + ldrb r0, [r0, #2] + cmp r0, #0 + beq _0801096C + bl sub_0800D0EC +_0801096C: + movs r4, #0xe0 + lsls r4, r4, #7 + movs r0, #1 + adds r1, r4, #0 + bl sub_08011554 + adds r0, r4, #0 + bl sub_08010C60 +_0801097E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08010984: .4byte 0x000008D3 +_08010988: .4byte 0x0000069F +_0801098C: .4byte gUnknown_30041E0 + thumb_func_end sub_080108A4 + + thumb_func_start sub_08010990 +sub_08010990: @ 0x08010990 + push {lr} + ldr r0, _080109AC + ldrb r0, [r0, #6] + cmp r0, #1 + bne _080109A8 + bl rfu_REQ_recvData + bl rfu_waitREQComplete + movs r0, #0 + bl sub_0800B9C8 +_080109A8: + pop {r0} + bx r0 + .align 2, 0 +_080109AC: .4byte gUnknown_30041E0 + thumb_func_end sub_08010990 + + thumb_func_start sub_080109B0 +sub_080109B0: @ 0x080109B0 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _080109E4 + ldr r1, _080109E8 + adds r0, r4, r1 + strb r5, [r0] + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0800C008 + adds r0, r4, #0 + adds r0, #0xef + ldrb r0, [r0] + cmp r0, #0 + bne _08010A04 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080109F2 + cmp r0, #1 + bgt _080109EC + cmp r0, #0 + beq _080109F8 + b _08010A04 + .align 2, 0 +_080109E4: .4byte gUnknown_30050A0 +_080109E8: .4byte 0x00000985 +_080109EC: + cmp r0, #2 + beq _08010A00 + b _08010A04 +_080109F2: + bl sub_0800EBB8 + b _08010A04 +_080109F8: + bl sub_0800EFB0 + adds r5, r0, #0 + b _08010A04 +_08010A00: + bl sub_08010990 +_08010A04: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080109B0 + + thumb_func_start sub_08010A0C +sub_08010A0C: @ 0x08010A0C + push {r4, lr} + movs r4, #0 + ldr r1, _08010A34 + adds r0, r1, #0 + adds r0, #0xef + ldrb r0, [r0] + cmp r0, #0 + bne _08010A2C + ldrb r0, [r1, #0xc] + cmp r0, #1 + bne _08010A28 + bl sub_0800ECA0 + adds r4, r0, #0 +_08010A28: + bl sub_080108A4 +_08010A2C: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08010A34: .4byte gUnknown_30050A0 + thumb_func_end sub_08010A0C + + thumb_func_start sub_08010A38 +sub_08010A38: @ 0x08010A38 + push {lr} + ldr r0, _08010A48 + ldr r1, _08010A4C + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_08010A48: .4byte gUnknown_20227DA +_08010A4C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08010A38 + + thumb_func_start sub_08010A50 +sub_08010A50: @ 0x08010A50 + push {r4, lr} + ldr r4, _08010A70 + 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_0800D860 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08010A70: .4byte gUnknown_20227CC + thumb_func_end sub_08010A50 + + thumb_func_start sub_08010A74 +sub_08010A74: @ 0x08010A74 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08010A8C + adds r1, r4, #0 + bl sub_0800D860 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08010A8C: .4byte gUnknown_20227CC + thumb_func_end sub_08010A74 + + thumb_func_start sub_08010A90 +sub_08010A90: @ 0x08010A90 + push {r4, r5, lr} + ldr r5, _08010AB8 + movs r4, #1 + ands r0, r4 + lsls r0, r0, #4 + ldrb r3, [r5] + movs r2, #0x11 + rsbs r2, r2, #0 + ands r2, r3 + orrs r2, r0 + ands r1, r4 + lsls r1, r1, #5 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r2, r0 + orrs r2, r1 + strb r2, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08010AB8: .4byte gUnknown_20227CC + thumb_func_end sub_08010A90 + + thumb_func_start sub_08010ABC +sub_08010ABC: @ 0x08010ABC + push {r4, r5, lr} + ldr r5, _08010AF0 + lsls r0, r0, #2 + ldrb r4, [r5, #9] + movs r3, #3 + ands r3, r4 + orrs r3, r0 + strb r3, [r5, #9] + ldr r3, _08010AF4 + adds r0, r3, #0 + ands r1, r0 + ldrh r3, [r5, #8] + ldr r0, _08010AF8 + ands r0, r3 + orrs r0, r1 + strh r0, [r5, #8] + lsls r2, r2, #1 + ldrb r1, [r5, #0xb] + movs r0, #1 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0xb] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08010AF0: .4byte gUnknown_20227CC +_08010AF4: .4byte 0x000003FF +_08010AF8: .4byte 0xFFFFFC00 + thumb_func_end sub_08010ABC + + thumb_func_start sub_08010AFC +sub_08010AFC: @ 0x08010AFC + push {r4, lr} + movs r4, #0x80 + ldr r3, _08010B28 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r0, r1, r3 + ldrb r2, [r0, #0x13] + lsls r2, r2, #3 + orrs r2, r4 + adds r3, #4 + adds r1, r1, r3 + ldr r0, [r1] + movs r1, #7 + ands r0, r1 + orrs r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08010B28: .4byte gUnknown_20226A0 + thumb_func_end sub_08010AFC + + thumb_func_start sub_08010B2C +sub_08010B2C: @ 0x08010B2C + push {r4, r5, lr} + ldr r5, _08010B34 + movs r4, #1 + b _08010B44 + .align 2, 0 +_08010B34: .4byte gUnknown_20227CC +_08010B38: + adds r0, r4, #0 + bl sub_08010AFC + adds r1, r5, r4 + strb r0, [r1, #3] + adds r4, #1 +_08010B44: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _08010B38 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08010B2C + + thumb_func_start sub_08010B58 +sub_08010B58: @ 0x08010B58 + push {lr} + lsls r0, r0, #0x18 + ldr r2, _08010B78 + lsrs r0, r0, #0x11 + ldrb r3, [r2, #0xa] + movs r1, #0x7f + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #0xa] + ldr r3, _08010B7C + movs r0, #0 + movs r1, #2 + bl rfu_REQ_configGameData + pop {r0} + bx r0 + .align 2, 0 +_08010B78: .4byte gUnknown_20227CC +_08010B7C: .4byte gUnknown_20227DA + thumb_func_end sub_08010B58 + + thumb_func_start sub_08010B80 +sub_08010B80: @ 0x08010B80 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08010B8E + bl sub_08010A74 +_08010B8E: + ldr r2, _08010BA0 + ldr r3, _08010BA4 + movs r0, #0 + movs r1, #2 + bl rfu_REQ_configGameData + pop {r0} + bx r0 + .align 2, 0 +_08010BA0: .4byte gUnknown_20227CC +_08010BA4: .4byte gUnknown_20227DA + thumb_func_end sub_08010B80 + + thumb_func_start sub_08010BA8 +sub_08010BA8: @ 0x08010BA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + bne _08010C3C + movs r5, #0 + movs r7, #0 + ldr r3, _08010C4C + ldr r1, _08010C50 + adds r0, r3, r1 + ldr r2, _08010C54 + 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, #1 + ldr r2, _08010C58 + mov ip, r2 + ldr r0, _08010C5C + adds r0, r0, r3 + mov sl, r0 + mov r3, ip + adds r3, #4 +_08010BEC: + mov r0, r8 + asrs r0, r4 + ands r0, r6 + cmp r0, #0 + beq _08010C2C + mov r1, sl + adds r0, r4, r1 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r2, ip + adds r1, r0, r2 + ldrb r1, [r1, #0x13] + adds r2, r6, #0 + ands r2, r1 + lsls r2, r2, #3 + adds r0, r0, r3 + ldr r1, [r0] + movs r0, #7 + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + orrs r2, r1 + lsls r0, r5, #3 + lsls r2, r0 + orrs r7, r2 + adds r5, #1 + mov r0, sb + subs r0, #1 + cmp r5, r0 + beq _08010C32 +_08010C2C: + adds r4, #1 + cmp r4, #3 + ble _08010BEC +_08010C32: + movs r0, #0x45 + adds r1, r7, #0 + movs r2, #0 + bl sub_08010B80 +_08010C3C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08010C4C: .4byte gUnknown_30050A0 +_08010C50: .4byte 0x0000099A +_08010C54: .4byte 0x0000099B +_08010C58: .4byte gUnknown_20226A0 +_08010C5C: .4byte 0x00000996 + thumb_func_end sub_08010BA8 + + thumb_func_start sub_08010C60 +sub_08010C60: @ 0x08010C60 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08010C88 + adds r3, r2, #0 + adds r3, #0xee + ldrb r0, [r3] + cmp r0, #0 + bne _08010C82 + ldr r1, _08010C8C + 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, #1 + strb r0, [r3] +_08010C82: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08010C88: .4byte gUnknown_30050A0 +_08010C8C: .4byte gUnknown_30041E0 + thumb_func_end sub_08010C60 + + thumb_func_start sub_08010C90 +sub_08010C90: @ 0x08010C90 + ldr r0, _08010C9C + adds r0, #0xee + ldrb r1, [r0] + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_08010C9C: .4byte gUnknown_30050A0 + thumb_func_end sub_08010C90 + + thumb_func_start sub_08010CA0 +sub_08010CA0: @ 0x08010CA0 + push {lr} + adds r2, r0, #0 + cmp r2, #0 + bne _08010CB8 + ldr r0, _08010CB4 + adds r0, #0xee + ldrb r1, [r0] + strb r2, [r0] + b _08010CC2 + .align 2, 0 +_08010CB4: .4byte gUnknown_30050A0 +_08010CB8: + ldr r0, _08010CC8 + adds r0, #0xee + ldrb r1, [r0] + movs r1, #4 + strb r1, [r0] +_08010CC2: + pop {r0} + bx r0 + .align 2, 0 +_08010CC8: .4byte gUnknown_30050A0 + thumb_func_end sub_08010CA0 + + thumb_func_start sub_08010CCC +sub_08010CCC: @ 0x08010CCC + push {lr} + ldr r0, _08010CE4 + ldrb r0, [r0] + movs r1, #1 + bl sub_08011980 + ldr r1, _08010CE8 + movs r0, #0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08010CE4: .4byte gUnknown_30041E0 +_08010CE8: .4byte gUnknown_30050A0 + thumb_func_end sub_08010CCC + + thumb_func_start sub_08010CEC +sub_08010CEC: @ 0x08010CEC + ldr r1, _08010CF4 + ldr r0, _08010CF8 + str r0, [r1] + bx lr + .align 2, 0 +_08010CF4: .4byte gUnknown_30050A0 +_08010CF8: .4byte sub_08010CCC + thumb_func_end sub_08010CEC + + thumb_func_start sub_08010CFC +sub_08010CFC: @ 0x08010CFC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r6, #0 + cmp r4, #0x32 + bne _08010D12 + b _08010E50 +_08010D12: + cmp r4, #0x32 + bgt _08010D42 + cmp r4, #0x13 + bgt _08010D30 + cmp r4, #0x12 + blt _08010D20 + b _08010EDE +_08010D20: + cmp r4, #0x10 + bne _08010D26 + b _08010EDE +_08010D26: + cmp r4, #0x10 + bgt _08010D7C + cmp r4, #0 + beq _08010D6E + b _08010EDE +_08010D30: + cmp r4, #0x30 + bne _08010D36 + b _08010E5C +_08010D36: + cmp r4, #0x30 + ble _08010D3C + b _08010E44 +_08010D3C: + cmp r4, #0x14 + beq _08010E18 + b _08010EDE +_08010D42: + cmp r4, #0x44 + bgt _08010D54 + cmp r4, #0x42 + blt _08010D4C + b _08010EDE +_08010D4C: + cmp r4, #0x33 + bne _08010D52 + b _08010E5C +_08010D52: + b _08010EDE +_08010D54: + cmp r4, #0xf3 + bne _08010D5A + b _08010EAA +_08010D5A: + cmp r4, #0xf3 + bgt _08010D66 + cmp r4, #0xf0 + bge _08010D64 + b _08010EDE +_08010D64: + b _08010EC4 +_08010D66: + cmp r4, #0xff + bne _08010D6C + b _08010EC4 +_08010D6C: + b _08010EDE +_08010D6E: + ldr r1, _08010D78 + movs r0, #2 + strh r0, [r1, #4] + b _08010EDE + .align 2, 0 +_08010D78: .4byte gUnknown_30050A0 +_08010D7C: + ldr r0, _08010DE0 + ldrh r0, [r0, #0x14] + bl sub_080110DC + movs r5, #0 + movs r0, #1 + mov r8, r0 + ldr r1, _08010DE4 + mov sb, r1 + ldr r3, _08010DE8 + add r3, sb + mov sl, r3 + movs r7, #0x7f +_08010D96: + ldr r0, _08010DE0 + ldrh r0, [r0, #0x14] + asrs r0, r5 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08010DFE + ldr r0, _08010DEC + lsls r1, r5, #5 + adds r1, #0x14 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + adds r4, r7, #0 + ands r4, r0 + bl sub_0800F29C + ldrb r1, [r0, #0xa] + adds r0, r7, #0 + ands r0, r1 + cmp r4, r0 + bne _08010DF4 + ldr r0, _08010DF0 + add r0, sb + adds r0, r5, r0 + movs r1, #0 + strb r1, [r0] + mov r3, sl + adds r2, r5, r3 + strb r1, [r2] + movs r0, #0x20 + adds r1, r5, #0 + movs r3, #1 + bl rfu_setRecvBuffer + b _08010DFE + .align 2, 0 +_08010DE0: .4byte gUnknown_30041E0 +_08010DE4: .4byte gUnknown_30050A0 +_08010DE8: .4byte 0x0000098D +_08010DEC: .4byte gUnknown_3007630 +_08010DF0: .4byte 0x00000989 +_08010DF4: + mov r0, r8 + lsls r0, r5 + orrs r6, r0 + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 +_08010DFE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08010D96 + cmp r6, #0 + beq _08010EDE + adds r0, r6, #0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + b _08010EDE +_08010E18: + ldr r4, _08010E38 + ldr r1, _08010E3C + adds r0, r4, r1 + ldr r1, _08010E40 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + beq _08010E32 + eors r0, r2 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_08010E32: + movs r0, #0x11 + strh r0, [r4, #4] + b _08010EDE + .align 2, 0 +_08010E38: .4byte gUnknown_30050A0 +_08010E3C: .4byte 0x0000099F +_08010E40: .4byte gUnknown_30041E0 +_08010E44: + ldr r0, _08010E4C + adds r0, #0xf0 + b _08010EDA + .align 2, 0 +_08010E4C: .4byte gUnknown_30050A0 +_08010E50: + ldr r0, _08010E58 + adds r0, #0xf0 + movs r1, #3 + b _08010EDC + .align 2, 0 +_08010E58: .4byte gUnknown_30050A0 +_08010E5C: + ldr r1, _08010E8C + adds r2, r1, #0 + adds r2, #0xf0 + movs r0, #4 + strb r0, [r2] + ldr r3, _08010E90 + adds r1, r1, r3 + ldr r0, _08010E94 + ldrb r2, [r0, #0x14] + ldrb r0, [r1] + adds r3, r0, #0 + bics r3, r2 + adds r2, r3, #0 + strb r2, [r1] + ldr r0, _08010E98 + ldrb r0, [r0] + cmp r0, #1 + bne _08010EA0 + cmp r2, #0 + bne _08010E9C + adds r0, r4, #0 + bl sub_08010C60 + b _08010EA0 + .align 2, 0 +_08010E8C: .4byte gUnknown_30050A0 +_08010E90: .4byte 0x0000099A +_08010E94: .4byte gUnknown_30041E0 +_08010E98: .4byte gUnknown_30031C4 +_08010E9C: + bl sub_08010CEC +_08010EA0: + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 + b _08010EDE +_08010EAA: + movs r0, #1 + movs r1, #0xf3 + bl sub_08011554 + movs r0, #0xf3 + bl sub_08010C60 + ldr r0, _08010EC0 + adds r0, #0xef + b _08010EDA + .align 2, 0 +_08010EC0: .4byte gUnknown_30050A0 +_08010EC4: + adds r0, r4, #0 + bl sub_08010C60 + movs r0, #1 + adds r1, r4, #0 + bl sub_08011554 + ldr r0, _08010EEC + ldr r1, _08010EF0 + adds r0, r0, r1 + ldrb r1, [r0] +_08010EDA: + movs r1, #1 +_08010EDC: + strb r1, [r0] +_08010EDE: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08010EEC: .4byte gUnknown_30050A0 +_08010EF0: .4byte 0x00000993 + thumb_func_end sub_08010CFC + + thumb_func_start sub_08010EF4 +sub_08010EF4: @ 0x08010EF4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x31 + bne _08010F00 + b _08011060 +_08010F00: + cmp r4, #0x31 + bgt _08010F2E + cmp r4, #0x22 + beq _08010F84 + cmp r4, #0x22 + bgt _08010F1C + cmp r4, #0x20 + beq _08010F6C + cmp r4, #0x20 + ble _08010F16 + b _080110CE +_08010F16: + cmp r4, #0 + beq _08010F5E + b _080110CE +_08010F1C: + cmp r4, #0x24 + beq _08010FAA + cmp r4, #0x24 + blt _08010FA0 + cmp r4, #0x25 + beq _08010FF4 + cmp r4, #0x30 + beq _08010FFE + b _080110CE +_08010F2E: + cmp r4, #0x44 + bgt _08010F44 + cmp r4, #0x42 + blt _08010F38 + b _080110CE +_08010F38: + cmp r4, #0x33 + beq _08011012 + cmp r4, #0x33 + bge _08010F42 + b _0801107C +_08010F42: + b _080110CE +_08010F44: + cmp r4, #0xf3 + bne _08010F4A + b _0801109C +_08010F4A: + cmp r4, #0xf3 + bgt _08010F56 + cmp r4, #0xf0 + bge _08010F54 + b _080110CE +_08010F54: + b _080110B4 +_08010F56: + cmp r4, #0xff + bne _08010F5C + b _080110B4 +_08010F5C: + b _080110CE +_08010F5E: + ldr r1, _08010F68 + movs r0, #6 + strh r0, [r1, #4] + b _080110CE + .align 2, 0 +_08010F68: .4byte gUnknown_30050A0 +_08010F6C: + ldr r0, _08010F78 + ldr r1, _08010F7C + ldrh r1, [r1, #0x14] + ldr r2, _08010F80 + adds r0, r0, r2 + b _080110CC + .align 2, 0 +_08010F78: .4byte gUnknown_30050A0 +_08010F7C: .4byte gUnknown_30041E0 +_08010F80: .4byte 0x00000985 +_08010F84: + ldr r0, _08010F94 + ldr r1, _08010F98 + ldrh r1, [r1, #0x14] + ldr r2, _08010F9C + adds r0, r0, r2 + ldrb r2, [r0] + b _080110CC + .align 2, 0 +_08010F94: .4byte gUnknown_30050A0 +_08010F98: .4byte gUnknown_30041E0 +_08010F9C: .4byte 0x000008F6 +_08010FA0: + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 + b _080110CE +_08010FAA: + ldr r4, _08010FE0 + movs r1, #0 + movs r0, #0xb + strh r0, [r4, #4] + ldr r2, _08010FE4 + adds r0, r4, r2 + strb r1, [r0] + ldr r0, _08010FE8 + adds r2, r4, r0 + strb r1, [r2] + ldr r1, _08010FEC + adds r5, r4, r1 + ldrb r1, [r5] + movs r0, #0x20 + movs r3, #1 + bl rfu_setRecvBuffer + ldrb r1, [r5] + ldr r2, _08010FF0 + adds r4, r4, r2 + movs r0, #0x10 + adds r2, r4, #0 + movs r3, #0x46 + bl rfu_setRecvBuffer + b _080110CE + .align 2, 0 +_08010FE0: .4byte gUnknown_30050A0 +_08010FE4: .4byte 0x0000093D +_08010FE8: .4byte 0x0000093E +_08010FEC: .4byte 0x000008F6 +_08010FF0: .4byte 0x000008F7 +_08010FF4: + movs r0, #2 + movs r1, #0x25 + bl sub_08011554 + b _080110CE +_08010FFE: + ldr r0, _08011050 + adds r2, r0, #0 + adds r2, #0xf0 + movs r1, #2 + strb r1, [r2] + ldr r1, _08011054 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #6 + beq _080110CE +_08011012: + ldr r2, _08011050 + adds r1, r2, #0 + adds r1, #0xf0 + ldrb r0, [r1] + cmp r0, #2 + beq _08011022 + movs r0, #4 + strb r0, [r1] +_08011022: + ldr r1, _08011054 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #9 + beq _08011034 + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 +_08011034: + ldr r0, _08011058 + movs r1, #5 + movs r2, #5 + bl sub_0800E0C0 + ldr r0, _0801105C + ldrb r0, [r0] + cmp r0, #1 + bne _080110CE + adds r0, r4, #0 + bl sub_08010C60 + b _080110CE + .align 2, 0 +_08011050: .4byte gUnknown_30050A0 +_08011054: .4byte 0x0000093E +_08011058: .4byte gUnknown_82C0578 +_0801105C: .4byte gUnknown_30031C4 +_08011060: + ldr r0, _08011074 + adds r0, #0xf0 + movs r1, #1 + strb r1, [r0] + ldr r0, _08011078 + movs r1, #5 + movs r2, #5 + bl sub_0800E0C0 + b _080110CE + .align 2, 0 +_08011074: .4byte gUnknown_30050A0 +_08011078: .4byte gUnknown_82C0590 +_0801107C: + ldr r1, _08011094 + adds r2, r1, #0 + adds r2, #0xf0 + movs r0, #3 + strb r0, [r2] + ldr r2, _08011098 + adds r1, r1, r2 + ldrb r0, [r1] + movs r0, #1 + strb r0, [r1] + b _080110CE + .align 2, 0 +_08011094: .4byte gUnknown_30050A0 +_08011098: .4byte 0x000008F4 +_0801109C: + movs r0, #1 + movs r1, #0xf3 + bl sub_08011554 + movs r0, #0xf3 + bl sub_08010C60 + ldr r0, _080110B0 + adds r0, #0xef + b _080110CA + .align 2, 0 +_080110B0: .4byte gUnknown_30050A0 +_080110B4: + movs r0, #1 + adds r1, r4, #0 + bl sub_08011554 + adds r0, r4, #0 + bl sub_08010C60 + ldr r0, _080110D4 + ldr r1, _080110D8 + adds r0, r0, r1 + ldrb r1, [r0] +_080110CA: + movs r1, #1 +_080110CC: + strb r1, [r0] +_080110CE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080110D4: .4byte gUnknown_30050A0 +_080110D8: .4byte 0x00000993 + thumb_func_end sub_08010EF4 + + thumb_func_start sub_080110DC +sub_080110DC: @ 0x080110DC + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r2, #0 + movs r6, #1 + ldr r0, _08011110 + ldr r4, _08011114 + adds r1, r0, r4 + movs r5, #0 + movs r4, #0xff +_080110EE: + adds r0, r3, #0 + asrs r0, r2 + ands r0, r6 + cmp r0, #0 + beq _08011100 + strb r5, [r1] + ldrb r0, [r1, #4] + orrs r0, r4 + strb r0, [r1, #4] +_08011100: + adds r1, #1 + adds r2, #1 + cmp r2, #3 + ble _080110EE + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08011110: .4byte gUnknown_30050A0 +_08011114: .4byte 0x000009A2 + thumb_func_end sub_080110DC + + thumb_func_start sub_08011118 +sub_08011118: @ 0x08011118 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r3, #0 + movs r2, #0 + movs r4, #1 + ldr r6, _08011160 + movs r7, #0x7f +_08011126: + adds r0, r5, #0 + asrs r0, r2 + ands r0, r4 + cmp r0, #0 + beq _0801114C + lsls r1, r2, #5 + adds r1, #0x14 + ldr r0, [r6] + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x45 + bne _0801114C + adds r0, r4, #0 + lsls r0, r2 + orrs r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 +_0801114C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _08011126 + adds r0, r3, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08011160: .4byte gUnknown_3007630 + thumb_func_end sub_08011118 + + thumb_func_start sub_08011164 +sub_08011164: @ 0x08011164 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x25 + bne _08011170 + b _080113DC +_08011170: + cmp r4, #0x25 + bgt _080111B2 + cmp r4, #0x14 + bne _0801117A + b _080112F4 +_0801117A: + cmp r4, #0x14 + bgt _08011192 + cmp r4, #0x11 + beq _08011212 + cmp r4, #0x11 + ble _08011188 + b _08011532 +_08011188: + cmp r4, #0 + beq _080111FC + cmp r4, #0x10 + beq _08011208 + b _08011532 +_08011192: + cmp r4, #0x22 + bne _08011198 + b _08011358 +_08011198: + cmp r4, #0x22 + bgt _080111A4 + cmp r4, #0x20 + bne _080111A2 + b _08011340 +_080111A2: + b _08011532 +_080111A4: + cmp r4, #0x23 + bne _080111AA + b _08011374 +_080111AA: + cmp r4, #0x24 + bne _080111B0 + b _080113AA +_080111B0: + b _08011532 +_080111B2: + cmp r4, #0x44 + bgt _080111E2 + cmp r4, #0x42 + blt _080111BC + b _08011532 +_080111BC: + cmp r4, #0x32 + bne _080111C2 + b _08011404 +_080111C2: + cmp r4, #0x32 + bgt _080111D4 + cmp r4, #0x30 + bne _080111CC + b _08011430 +_080111CC: + cmp r4, #0x31 + bne _080111D2 + b _080113E6 +_080111D2: + b _08011532 +_080111D4: + cmp r4, #0x33 + bne _080111DA + b _08011438 +_080111DA: + cmp r4, #0x40 + bne _080111E0 + b _080114EC +_080111E0: + b _08011532 +_080111E2: + cmp r4, #0xf3 + bne _080111E8 + b _080114FC +_080111E8: + cmp r4, #0xf3 + bgt _080111F4 + cmp r4, #0xf0 + bge _080111F2 + b _08011532 +_080111F2: + b _08011518 +_080111F4: + cmp r4, #0xff + bne _080111FA + b _08011518 +_080111FA: + b _08011532 +_080111FC: + ldr r1, _08011204 + movs r0, #0x11 + strh r0, [r1, #4] + b _08011532 + .align 2, 0 +_08011204: .4byte gUnknown_30050A0 +_08011208: + movs r0, #4 + movs r1, #0 + bl sub_08011554 + b _08011532 +_08011212: + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + bne _080112CC + ldr r5, _08011278 + ldr r1, _0801127C + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080112CC + ldr r0, _08011280 + ldrh r0, [r0, #0x14] + bl sub_08011118 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08011296 + adds r0, r4, #0 + bl sub_0800E340 + movs r2, #1 + mov ip, r2 + mov r1, ip + lsls r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r7, _08011284 + adds r6, r5, r7 + ldrb r2, [r6] + cmp r2, #0 + bne _08011288 + movs r0, #0x9a + lsls r0, r0, #4 + adds r3, r5, r0 + ldrb r0, [r3] + cmp r0, #0 + bne _08011288 + subs r7, #1 + adds r0, r5, r7 + strb r1, [r0] + eors r1, r4 + orrs r1, r2 + strb r1, [r6] + mov r0, ip + strb r0, [r3] + b _08011296 + .align 2, 0 +_08011278: .4byte gUnknown_30050A0 +_0801127C: .4byte 0x00000991 +_08011280: .4byte gUnknown_30041E0 +_08011284: .4byte 0x0000099E +_08011288: + ldr r0, _080112B8 + ldr r1, _080112BC + adds r0, r0, r1 + ldrb r2, [r0] + adds r1, r4, #0 + orrs r1, r2 + strb r1, [r0] +_08011296: + ldr r0, _080112C0 + ldrh r1, [r0, #0x14] + cmp r4, r1 + beq _080112E6 + ldr r2, _080112B8 + ldr r7, _080112C4 + adds r3, r2, r7 + adds r0, r4, #0 + eors r0, r1 + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + ldr r0, _080112C8 + adds r2, r2, r0 + movs r0, #2 + strb r0, [r2] + b _080112E6 + .align 2, 0 +_080112B8: .4byte gUnknown_30050A0 +_080112BC: .4byte 0x0000099E +_080112C0: .4byte gUnknown_30041E0 +_080112C4: .4byte 0x0000099B +_080112C8: .4byte 0x0000099C +_080112CC: + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x54 + bne _080112E6 + ldr r0, _080112F0 + ldrb r0, [r0] + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_080112E6: + ldr r0, _080112F0 + ldrh r0, [r0, #0x14] + bl sub_080110DC + b _08011532 + .align 2, 0 +_080112F0: .4byte gUnknown_30041E0 +_080112F4: + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + beq _08011326 + ldr r4, _08011338 + ldrb r0, [r4, #1] + cmp r0, #1 + bls _08011326 + ldrb r0, [r4, #0x14] + bl sub_0800E340 + movs r1, #0x80 + lsls r1, r1, #0x11 + lsls r1, r0 + lsrs r1, r1, #0x18 + ldrb r0, [r4] + eors r1, r0 + adds r0, r1, #0 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete +_08011326: + ldr r1, _0801133C + ldrh r0, [r1, #4] + cmp r0, #0xf + beq _08011330 + b _08011532 +_08011330: + movs r0, #0x10 + strh r0, [r1, #4] + b _08011532 + .align 2, 0 +_08011338: .4byte gUnknown_30041E0 +_0801133C: .4byte gUnknown_30050A0 +_08011340: + ldr r0, _0801134C + ldr r1, _08011350 + ldrh r1, [r1, #0x14] + ldr r2, _08011354 + adds r0, r0, r2 + b _08011530 + .align 2, 0 +_0801134C: .4byte gUnknown_30050A0 +_08011350: .4byte gUnknown_30041E0 +_08011354: .4byte 0x00000985 +_08011358: + ldr r0, _08011368 + ldr r1, _0801136C + ldrh r1, [r1, #0x14] + ldr r7, _08011370 + adds r0, r0, r7 + ldrb r2, [r0] + b _08011530 + .align 2, 0 +_08011368: .4byte gUnknown_30050A0 +_0801136C: .4byte gUnknown_30041E0 +_08011370: .4byte 0x000008F6 +_08011374: + ldr r1, _08011394 + movs r0, #0x12 + strh r0, [r1, #4] + ldr r0, _08011398 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #1 + bhi _080113A0 + adds r0, #1 + strb r0, [r1] + ldr r0, _0801139C + movs r1, #2 + bl sub_080A8878 + b _08011532 + .align 2, 0 +_08011394: .4byte gUnknown_30050A0 +_08011398: .4byte 0x00000987 +_0801139C: .4byte sub_08011B88 +_080113A0: + movs r0, #2 + movs r1, #0x23 + bl sub_08011554 + b _08011532 +_080113AA: + ldr r4, _080113D0 + movs r0, #0xd + strh r0, [r4, #4] + movs r0, #3 + movs r1, #0 + bl sub_08011554 + ldr r1, _080113D4 + adds r0, r4, r1 + ldrb r1, [r0] + ldr r2, _080113D8 + adds r4, r4, r2 + movs r0, #0x10 + adds r2, r4, #0 + movs r3, #0x46 + bl rfu_setRecvBuffer + b _08011532 + .align 2, 0 +_080113D0: .4byte gUnknown_30050A0 +_080113D4: .4byte 0x000008F6 +_080113D8: .4byte 0x000008F7 +_080113DC: + movs r0, #2 + movs r1, #0x25 + bl sub_08011554 + b _08011532 +_080113E6: + ldr r0, _080113FC + ldrb r1, [r0] + ldrh r0, [r0, #0x14] + ands r1, r0 + cmp r1, #0 + bne _080113F4 + b _08011532 +_080113F4: + ldr r0, _08011400 + adds r0, #0xf0 + movs r1, #1 + b _08011530 + .align 2, 0 +_080113FC: .4byte gUnknown_30041E0 +_08011400: .4byte gUnknown_30050A0 +_08011404: + ldr r2, _08011424 + adds r1, r2, #0 + adds r1, #0xf0 + movs r0, #3 + strb r0, [r1] + ldr r0, _08011428 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + beq _0801141A + b _08011532 +_0801141A: + ldr r7, _0801142C + adds r0, r2, r7 + ldrb r1, [r0] + movs r1, #1 + b _08011530 + .align 2, 0 +_08011424: .4byte gUnknown_30050A0 +_08011428: .4byte gUnknown_3007630 +_0801142C: .4byte 0x000008F4 +_08011430: + ldr r0, _08011470 + adds r0, #0xf0 + movs r1, #2 + strb r1, [r0] +_08011438: + ldr r2, _08011470 + adds r1, r2, #0 + adds r1, #0xf0 + ldrb r0, [r1] + cmp r0, #2 + beq _08011448 + movs r0, #4 + strb r0, [r1] +_08011448: + ldrb r0, [r2, #0xc] + cmp r0, #1 + bne _08011486 + ldr r0, _08011474 + ldrb r0, [r0] + cmp r0, #1 + bne _080114A4 + ldr r0, _08011478 + adds r2, r2, r0 + ldr r0, _0801147C + ldrb r1, [r0, #0x14] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + cmp r0, #0 + bne _08011480 + adds r0, r4, #0 + bl sub_08010C60 + b _080114A4 + .align 2, 0 +_08011470: .4byte gUnknown_30050A0 +_08011474: .4byte gUnknown_30031C4 +_08011478: .4byte 0x0000099A +_0801147C: .4byte gUnknown_30041E0 +_08011480: + bl sub_08010CEC + b _080114A4 +_08011486: + ldr r1, _080114D4 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #2 + beq _080114A4 + ldr r0, _080114D8 + ldrb r0, [r0] + cmp r0, #1 + bne _080114A4 + adds r0, r4, #0 + bl sub_08010C60 + movs r0, #0 + bl sub_0800BD38 +_080114A4: + ldr r0, _080114DC + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xff + bne _080114CA + ldr r0, _080114E0 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _080114CA + ldr r0, _080114E4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080114CA + ldr r1, _080114E8 + movs r0, #0x11 + strh r0, [r1, #4] +_080114CA: + movs r0, #2 + adds r1, r4, #0 + bl sub_08011554 + b _08011532 + .align 2, 0 +_080114D4: .4byte 0x0000099C +_080114D8: .4byte gUnknown_30031C4 +_080114DC: .4byte gUnknown_3007630 +_080114E0: .4byte gUnknown_30041E0 +_080114E4: .4byte sub_0800E608 +_080114E8: .4byte gUnknown_30050A0 +_080114EC: + ldr r0, _080114F4 + ldr r2, _080114F8 + adds r0, r0, r2 + b _0801152E + .align 2, 0 +_080114F4: .4byte gUnknown_30050A0 +_080114F8: .4byte 0x0000099B +_080114FC: + movs r0, #1 + movs r1, #0xf3 + bl sub_08011554 + movs r0, #0xf3 + bl sub_08010C60 + ldr r0, _08011514 + adds r0, #0xef + movs r1, #1 + b _08011530 + .align 2, 0 +_08011514: .4byte gUnknown_30050A0 +_08011518: + adds r0, r4, #0 + bl sub_08010C60 + movs r0, #1 + adds r1, r4, #0 + bl sub_08011554 + ldr r0, _08011538 + ldr r7, _0801153C + adds r0, r0, r7 + ldrb r1, [r0] +_0801152E: + movs r1, #0 +_08011530: + strb r1, [r0] +_08011532: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08011538: .4byte gUnknown_30050A0 +_0801153C: .4byte 0x00000993 + thumb_func_end sub_08011164 + + thumb_func_start sub_08011540 +sub_08011540: @ 0x08011540 + ldr r0, _0801154C + ldr r1, _08011550 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + bx lr + .align 2, 0 +_0801154C: .4byte gUnknown_30050A0 +_08011550: .4byte 0x0000099C + thumb_func_end sub_08011540 + + thumb_func_start sub_08011554 +sub_08011554: @ 0x08011554 + ldr r2, _08011560 + adds r3, r2, #0 + adds r3, #0xf1 + strb r0, [r3] + strh r1, [r2, #0xa] + bx lr + .align 2, 0 +_08011560: .4byte gUnknown_30050A0 + thumb_func_end sub_08011554 + + thumb_func_start sub_08011564 +sub_08011564: @ 0x08011564 + ldr r0, _0801156C + adds r0, #0xf1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0801156C: .4byte gUnknown_30050A0 + thumb_func_end sub_08011564 + + thumb_func_start sub_08011570 +sub_08011570: @ 0x08011570 + push {lr} + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #1 + bls _08011584 + movs r0, #0 + b _08011586 +_08011584: + movs r0, #1 +_08011586: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08011570 + + thumb_func_start sub_0801158C +sub_0801158C: @ 0x0801158C + ldr r0, _08011598 + movs r1, #0x9a + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08011598: .4byte gUnknown_30050A0 + thumb_func_end sub_0801158C + + thumb_func_start sub_0801159C +sub_0801159C: @ 0x0801159C + ldr r0, _080115A4 + ldrb r0, [r0, #0xc] + bx lr + .align 2, 0 +_080115A4: .4byte gUnknown_30050A0 + thumb_func_end sub_0801159C + + thumb_func_start sub_080115A8 +sub_080115A8: @ 0x080115A8 + push {lr} + bl sub_0800BFEC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080115A8 + + thumb_func_start sub_080115B4 +sub_080115B4: @ 0x080115B4 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r1, _080115CC + ldr r2, _080115D0 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080115CC: .4byte gUnknown_3003130 +_080115D0: .4byte 0x05000014 + thumb_func_end sub_080115B4 + + thumb_func_start sub_080115D4 +sub_080115D4: @ 0x080115D4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080115D4 + + thumb_func_start sub_080115E8 +sub_080115E8: @ 0x080115E8 + push {r4, lr} + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + bl sub_080A133C + ldr r0, _08011664 + bl sub_080006F0 + bl sub_08008F68 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801165C + ldr r1, _08011668 + ldr r2, _0801166C + adds r0, r2, #0 + strh r0, [r1] + bl sub_0800AF5C + bl sub_080092D0 + ldr r0, _08011670 + ldrh r0, [r0, #0x24] + bl sub_0806F07C + movs r4, #0 +_08011624: + bl sub_0806F050 + ldr r1, _08011674 + ldr r1, [r1] + adds r1, #0xa + adds r1, r1, r4 + strb r0, [r1] + adds r4, #1 + cmp r4, #3 + ble _08011624 + movs r1, #0xaa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + bl sub_08011690 + ldr r0, _08011678 + bl sub_08000540 +_0801165C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011664: .4byte sub_080115D4 +_08011668: .4byte gUnknown_202267E +_0801166C: .4byte 0x00001111 +_08011670: .4byte gUnknown_3002360 +_08011674: .4byte gUnknown_3005AF0 +_08011678: .4byte sub_080116E4 + thumb_func_end sub_080115E8 + + thumb_func_start sub_0801167C +sub_0801167C: @ 0x0801167C + push {lr} + ldr r0, _0801168C + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0801168C: .4byte sub_0800E608 + thumb_func_end sub_0801167C + + thumb_func_start sub_08011690 +sub_08011690: @ 0x08011690 + push {r4, lr} + ldr r4, _080116B4 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080116AE + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + ldr r1, _080116B8 + adds r1, #0x66 + strb r0, [r1] +_080116AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080116B4: .4byte sub_08011FD4 +_080116B8: .4byte gUnknown_30050A0 + thumb_func_end sub_08011690 + + thumb_func_start sub_080116BC +sub_080116BC: @ 0x080116BC + push {lr} + ldr r0, _080116DC + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080116D6 + ldr r0, _080116E0 + adds r0, #0x66 + ldrb r0, [r0] + bl sub_080A8964 +_080116D6: + pop {r0} + bx r0 + .align 2, 0 +_080116DC: .4byte sub_08011FD4 +_080116E0: .4byte gUnknown_30050A0 + thumb_func_end sub_080116BC + + thumb_func_start sub_080116E4 +sub_080116E4: @ 0x080116E4 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080116E4 + + thumb_func_start sub_080116FC +sub_080116FC: @ 0x080116FC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r1, _08011734 + movs r0, #1 + strb r0, [r1, #0xc] + bl sub_08010A38 + ldr r0, _08011738 + movs r1, #0 + bl sub_0800BA08 + ldr r2, _0801173C + adds r1, r2, #0 + ldr r0, _08011740 + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldr r0, _08011744 + subs r4, #1 + adds r4, r4, r0 + ldrb r0, [r4] + strh r0, [r2, #2] + bl sub_0800E938 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08011734: .4byte gUnknown_30050A0 +_08011738: .4byte sub_08010CFC +_0801173C: .4byte gUnknown_20227E4 +_08011740: .4byte gUnknown_82C0358 +_08011744: .4byte gUnknown_82C0370 + thumb_func_end sub_080116FC + + thumb_func_start sub_08011748 +sub_08011748: @ 0x08011748 + push {lr} + ldr r1, _08011764 + movs r0, #0 + strb r0, [r1, #0xc] + bl sub_08010A38 + ldr r0, _08011768 + ldr r1, _0801176C + bl sub_0800BA08 + bl sub_0800E9C0 + pop {r0} + bx r0 + .align 2, 0 +_08011764: .4byte gUnknown_30050A0 +_08011768: .4byte sub_08010EF4 +_0801176C: .4byte sub_0800E7F4 + thumb_func_end sub_08011748 + + thumb_func_start sub_08011770 +sub_08011770: @ 0x08011770 + push {r4, r5, r6, r7, lr} + ldr r4, _080117B0 + movs r5, #0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08010A38 + ldr r0, _080117B4 + movs r1, #0 + bl sub_0800BA08 + ldr r2, _080117B8 + adds r1, r2, #0 + ldr r0, _080117BC + 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, r0, #2 + strh r0, [r2, #0x12] + ldr r0, _080117C0 + movs r1, #1 + bl sub_080A8878 + adds r4, #0x67 + strb r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080117B0: .4byte gUnknown_30050A0 +_080117B4: .4byte sub_08011164 +_080117B8: .4byte gUnknown_20227E4 +_080117BC: .4byte gUnknown_82C0358 +_080117C0: .4byte sub_0800E608 + thumb_func_end sub_08011770 + + thumb_func_start sub_080117C4 +sub_080117C4: @ 0x080117C4 + ldrb r1, [r0, #1] + lsls r1, r1, #8 + ldrb r0, [r0] + orrs r0, r1 + bx lr + .align 2, 0 + thumb_func_end sub_080117C4 + + thumb_func_start sub_080117D0 +sub_080117D0: @ 0x080117D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + movs r0, #0xff + mov sb, r0 + movs r7, #0 + ldr r1, _08011854 + mov r8, r1 +_080117EE: + lsls r4, r7, #5 + adds r5, r4, #0 + adds r5, #0x14 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r5 + adds r0, #8 + bl sub_080117C4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + ldrh r0, [r0, #0x18] + bl sub_0800FF54 + cmp r0, #0 + beq _08011838 + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r5 + adds r1, #0x15 + ldr r0, [sp] + bl sub_0800895C + cmp r0, #0 + bne _08011838 + cmp sl, r6 + bne _08011838 + mov sb, r7 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + ldrb r0, [r0, #0x16] + cmp r0, #0xff + bne _08011842 +_08011838: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080117EE +_08011842: + mov r0, sb + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08011854: .4byte gUnknown_3007630 + thumb_func_end sub_080117D0 + + thumb_func_start sub_08011858 +sub_08011858: @ 0x08011858 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl rfu_REQ_disconnect + bl rfu_waitREQComplete + ldr r4, _0801189C + ldr r0, _080118A0 + adds r5, r4, r0 + ldrb r0, [r5] + bics r0, r6 + strb r0, [r5] + ldr r1, _080118A4 + adds r6, r4, r1 + ldrb r1, [r6] + movs r0, #1 + bl rfu_clearSlot + ldrb r0, [r5] + ldr r1, _080118A8 + adds r4, r4, r1 + adds r1, r4, #0 + movs r2, #0x46 + bl rfu_UNI_setSendData + ldrb r0, [r5] + bl sub_0800E340 + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801189C: .4byte gUnknown_30050A0 +_080118A0: .4byte 0x0000099A +_080118A4: .4byte 0x00000992 +_080118A8: .4byte 0x0000093F + thumb_func_end sub_08011858 + + thumb_func_start sub_080118AC +sub_080118AC: @ 0x080118AC + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080117D0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _080118C6 + movs r0, #1 + lsls r0, r1 + bl sub_08011858 +_080118C6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080118AC + + thumb_func_start sub_080118CC +sub_080118CC: @ 0x080118CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0801190C + movs r3, #0 + movs r2, #0 + ldr r5, _08011914 + adds r6, r5, #4 +_080118DC: + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r4 + bne _080118FA + ldrb r0, [r6] + asrs r0, r2 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080118FA + adds r0, r1, #0 + lsls r0, r2 + orrs r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 +_080118FA: + adds r2, #1 + cmp r2, #3 + ble _080118DC + cmp r3, #0 + beq _0801190C + adds r0, r3, #0 + movs r1, #2 + bl sub_08011980 +_0801190C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08011914: .4byte gUnknown_3005A36 + thumb_func_end sub_080118CC + + thumb_func_start sub_08011918 +sub_08011918: @ 0x08011918 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _08011970 + ldrh r0, [r6] + cmp r0, #0 + bne _08011968 + ldr r5, _08011974 + movs r1, #0x9a + lsls r1, r1, #4 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08011968 + movs r0, #0xed + lsls r0, r0, #8 + bl sub_0800F7F8 + ldr r1, _08011978 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + strh r1, [r6, #2] + ldrh r1, [r0, #0xa] + strh r1, [r6, #4] + ldr r1, _0801197C + movs r2, #8 + ldrsh r0, [r0, r2] + adds r0, r0, r1 + ldrb r1, [r5, #0xd] + ldrb r0, [r0] + subs r1, r1, r0 + strb r1, [r5, #0xd] + ldrb r0, [r5, #0xd] + strh r0, [r6, #6] + adds r0, r4, #0 + bl sub_080A8964 +_08011968: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08011970: .4byte gUnknown_30031B0 +_08011974: .4byte gUnknown_30050A0 +_08011978: .4byte gUnknown_3005B60 +_0801197C: .4byte gUnknown_82C03E5 + thumb_func_end sub_08011918 + + thumb_func_start sub_08011980 +sub_08011980: @ 0x08011980 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _080119B0 + adds r0, r5, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _080119B8 + adds r0, r5, #0 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080119B4 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + b _080119C8 + .align 2, 0 +_080119B0: .4byte sub_08011918 +_080119B4: .4byte gUnknown_3005B60 +_080119B8: + ldr r0, _080119DC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + orrs r4, r0 + strh r4, [r1, #8] +_080119C8: + ldr r1, _080119DC + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0xa] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080119DC: .4byte gUnknown_3005B60 + thumb_func_end sub_08011980 + + thumb_func_start sub_080119E0 +sub_080119E0: @ 0x080119E0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08011A38 + adds r4, r0, r1 + bl sub_0800E954 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08011A90 + adds r0, r4, #0 + adds r0, #0x10 + bl sub_080117C4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_080117D0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08011A78 + ldr r0, _08011A3C + ldr r0, [r0] + lsls r1, r2, #5 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] + cmp r0, #0xff + beq _08011A48 + ldr r0, _08011A40 + ldr r1, _08011A44 + adds r0, r0, r1 + strb r2, [r0] + bl sub_0800E97C + cmp r0, #0 + beq _08011A96 + b _08011A70 + .align 2, 0 +_08011A38: .4byte gUnknown_3005B68 +_08011A3C: .4byte gUnknown_3007630 +_08011A40: .4byte gUnknown_30050A0 +_08011A44: .4byte 0x000008F5 +_08011A48: + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r5, #0x7f + adds r0, r5, #0 + ands r0, r1 + cmp r0, #6 + beq _08011A90 + bl sub_0800F29C + ldrb r1, [r0, #0xa] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #7 + beq _08011A90 + movs r1, #0xe0 + lsls r1, r1, #7 + movs r0, #2 + bl sub_08011554 +_08011A70: + adds r0, r6, #0 + bl sub_080A8964 + b _08011A96 +_08011A78: + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + ldr r0, _08011A88 + ldr r1, _08011A8C + adds r0, r0, r1 + strb r2, [r0] + b _08011A96 + .align 2, 0 +_08011A88: .4byte gUnknown_30050A0 +_08011A8C: .4byte 0x000008F5 +_08011A90: + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] +_08011A96: + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0xf0 + ble _08011AAE + movs r1, #0xe0 + lsls r1, r1, #7 + movs r0, #2 + bl sub_08011554 + adds r0, r6, #0 + bl sub_080A8964 +_08011AAE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080119E0 + + thumb_func_start sub_08011AB4 +sub_08011AB4: @ 0x08011AB4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r5, r1, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _08011AEC + adds r0, #0xf1 + movs r1, #0 + strb r1, [r0] + ldr r0, _08011AF0 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08011AF4 + adds r4, r4, r0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080088B8 + strh r5, [r4, #0x10] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08011AEC: .4byte gUnknown_30050A0 +_08011AF0: .4byte sub_080119E0 +_08011AF4: .4byte gUnknown_3005B68 + thumb_func_end sub_08011AB4 + + thumb_func_start sub_08011AF8 +sub_08011AF8: @ 0x08011AF8 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_0800F29C + ldrb r1, [r0, #0xa] + movs r2, #0x7f + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x45 + bne _08011B1E + ldrb r1, [r4, #0xa] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x45 + beq _08011B7E +_08011B1A: + movs r0, #1 + b _08011B80 +_08011B1E: + ldrb r1, [r4, #0xa] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x40 + bne _08011B1A + cmp r5, #0x44 + bne _08011B7E + ldr r5, _08011B4C + ldrh r0, [r5, #8] + ldr r3, _08011B50 + adds r2, r3, #0 + ands r2, r0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r2, r0 + bne _08011B54 + ldrh r1, [r4, #8] + adds r0, r3, #0 + ands r0, r1 + cmp r0, r2 + beq _08011B7E + b _08011B1A + .align 2, 0 +_08011B4C: .4byte gUnknown_30051AA +_08011B50: .4byte 0x000003FF +_08011B54: + ldrh r1, [r4, #8] + adds r0, r3, #0 + ands r0, r1 + cmp r0, r2 + bne _08011B1A + 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 _08011B1A + ldrb r2, [r4, #9] + movs r0, #0xfc + ldrb r3, [r5, #9] + adds r1, r0, #0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _08011B1A +_08011B7E: + movs r0, #0 +_08011B80: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08011AF8 + + thumb_func_start sub_08011B88 +sub_08011B88: @ 0x08011B88 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r8, r5 + ldr r6, _08011C40 + adds r0, r6, #0 + adds r0, #0xf1 + ldrb r0, [r0] + cmp r0, #4 + bne _08011BA6 + adds r0, r5, #0 + bl sub_080A8964 +_08011BA6: + ldr r1, _08011C44 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #0x11 + cmp r0, r1 + ble _08011BD0 + movs r1, #0xe0 + lsls r1, r1, #7 + movs r0, #2 + bl sub_08011554 + adds r0, r5, #0 + bl sub_080A8964 +_08011BD0: + ldr r1, _08011C48 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08011C68 + ldr r0, _08011C4C + ldrb r0, [r0, #6] + cmp r0, #0 + bne _08011C68 + movs r2, #0x86 + lsls r2, r2, #1 + adds r0, r6, r2 + bl sub_080117C4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _08011C50 + adds r0, r6, r2 + bl sub_080117D0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08011C68 + movs r1, #0xa + ldrsh r0, [r4, r1] + ldr r7, _08011C54 + lsls r4, r2, #5 + adds r2, r4, #0 + adds r2, #0x14 + ldr r1, [r7] + adds r1, r1, r2 + adds r1, #6 + bl sub_08011AF8 + cmp r0, #0 + bne _08011C58 + ldr r0, [r7] + adds r1, r0, r4 + ldrb r0, [r1, #0x16] + cmp r0, #0xff + beq _08011C68 + ldrh r0, [r1, #0x14] + movs r1, #0x5a + bl sub_0800BBE8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08011C68 + movs r0, #0xa + strh r0, [r6, #4] + adds r0, r5, #0 + bl sub_080A8964 + b _08011C68 + .align 2, 0 +_08011C40: .4byte gUnknown_30050A0 +_08011C44: .4byte gUnknown_3005B60 +_08011C48: .4byte 0x00000985 +_08011C4C: .4byte gUnknown_30041E0 +_08011C50: .4byte 0x00000119 +_08011C54: .4byte gUnknown_3007630 +_08011C58: + movs r1, #0xe0 + lsls r1, r1, #7 + movs r0, #2 + bl sub_08011554 + mov r0, r8 + bl sub_080A8964 +_08011C68: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08011B88 + + thumb_func_start sub_08011C74 +sub_08011C74: @ 0x08011C74 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + adds r5, r1, #0 + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _08011CE4 + ldr r1, _08011CE8 + adds r0, r6, r1 + movs r7, #0 + strb r7, [r0] + adds r0, r6, #0 + adds r0, #0xf1 + strb r7, [r0] + ldr r1, _08011CEC + adds r0, r6, r1 + adds r1, r3, #0 + bl sub_080088B8 + movs r1, #0x85 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r1, r5, #0 + movs r2, #0xd + bl memcpy + bl sub_0800D114 + ldr r0, _08011CF0 + movs r1, #2 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08011CF4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + strh r4, [r1, #0xa] + ldr r0, _08011CF8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + cmp r4, #0x45 + bne _08011CFC + cmp r1, #0xff + beq _08011D0A + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0, #0x16] + b _08011D0A + .align 2, 0 +_08011CE4: .4byte gUnknown_30050A0 +_08011CE8: .4byte 0x00000987 +_08011CEC: .4byte 0x00000119 +_08011CF0: .4byte sub_08011B88 +_08011CF4: .4byte gUnknown_3005B60 +_08011CF8: .4byte sub_0800E608 +_08011CFC: + cmp r2, #0xff + beq _08011D0A + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r7, [r0, #0x16] +_08011D0A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08011C74 + + thumb_func_start sub_08011D10 +sub_08011D10: @ 0x08011D10 + push {lr} + ldr r0, _08011D20 + adds r0, #0xf0 + ldrb r0, [r0] + cmp r0, #1 + beq _08011D24 + movs r0, #0 + b _08011D26 + .align 2, 0 +_08011D20: .4byte gUnknown_30050A0 +_08011D24: + movs r0, #1 +_08011D26: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08011D10 + + thumb_func_start sub_08011D2C +sub_08011D2C: @ 0x08011D2C + push {r4, lr} + movs r1, #0 + ldr r0, _08011D50 + ldrb r2, [r0] + ldr r4, _08011D54 + movs r3, #1 +_08011D38: + adds r0, r2, #0 + asrs r0, r1 + ands r0, r3 + cmp r0, #0 + beq _08011D58 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _08011D58 + movs r0, #0 + b _08011D60 + .align 2, 0 +_08011D50: .4byte gUnknown_30041E0 +_08011D54: .4byte gUnknown_3005A29 +_08011D58: + adds r1, #1 + cmp r1, #3 + ble _08011D38 + movs r0, #1 +_08011D60: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08011D2C + + thumb_func_start sub_08011D68 +sub_08011D68: @ 0x08011D68 + push {r4, lr} + movs r4, #0 +_08011D6C: + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _08011D84 + movs r1, #0 + bl sub_0800E0C0 + adds r4, #1 + cmp r4, #0x13 + ble _08011D6C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08011D84: .4byte gUnknown_82C05A8 + thumb_func_end sub_08011D68 + + thumb_func_start sub_08011D88 +sub_08011D88: @ 0x08011D88 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x1c + movs r2, #0x13 + movs r3, #2 + bl sub_0800E0C4 + ldr r4, _08011E58 + ldr r0, [r4] + ldrb r0, [r0, #2] + movs r1, #0x14 + movs r2, #1 + movs r3, #1 + bl sub_0800E0C4 + ldr r0, [r4] + ldrb r0, [r0, #3] + movs r1, #0x17 + movs r2, #1 + movs r3, #1 + bl sub_0800E0C4 + ldr r0, _08011E5C + ldrb r0, [r0, #0xc] + cmp r0, #1 + bne _08011E64 + movs r6, #0 + adds r7, r4, #0 + movs r5, #0x14 +_08011DCC: + ldr r2, [r7] + ldrb r0, [r2, #7] + asrs r0, r6 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08011E0A + lsls r0, r6, #5 + adds r0, r2, r0 + ldrh r0, [r0, #0x18] + adds r4, r6, #3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800E0C4 + ldr r0, [r7] + adds r0, r0, r5 + adds r0, #6 + movs r1, #6 + adds r2, r4, #0 + bl sub_0800E0C0 + ldr r0, [r7] + adds r0, r0, r5 + adds r0, #0x15 + movs r1, #0x16 + adds r2, r4, #0 + bl sub_0800E0C0 +_08011E0A: + adds r5, #0x20 + adds r6, #1 + cmp r6, #3 + ble _08011DCC + movs r6, #0 + ldr r0, _08011E5C + mov r8, r0 +_08011E18: + movs r5, #0 + adds r7, r6, #1 + lsls r0, r6, #3 + adds r2, r6, #0 + adds r2, #0xb + subs r0, r0, r6 + lsls r0, r0, #1 + mov r1, r8 + adds r1, #0x14 + adds r4, r0, r1 + lsls r6, r2, #0x18 +_08011E2E: + ldrb r0, [r4] + lsls r1, r5, #0x19 + lsrs r1, r1, #0x18 + lsrs r2, r6, #0x18 + movs r3, #2 + bl sub_0800E0C4 + adds r4, #1 + adds r5, #1 + cmp r5, #0xd + ble _08011E2E + adds r6, r7, #0 + cmp r6, #3 + ble _08011E18 + ldr r0, _08011E60 + movs r1, #1 + movs r2, #0xf + bl sub_0800E0C0 + b _08011F96 + .align 2, 0 +_08011E58: .4byte gUnknown_3007630 +_08011E5C: .4byte gUnknown_30050A0 +_08011E60: .4byte gUnknown_82C05E4 +_08011E64: + ldr r1, [r4] + ldrb r0, [r1, #2] + cmp r0, #0 + beq _08011F00 + ldrb r0, [r1, #7] + cmp r0, #0 + beq _08011F00 + movs r6, #0 + movs r5, #0xc0 + lsls r5, r5, #0x12 +_08011E78: + lsrs r4, r5, #0x18 + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800E0C4 + ldr r0, _08011EEC + movs r1, #6 + adds r2, r4, #0 + bl sub_0800E0C0 + ldr r0, _08011EF0 + movs r1, #0x16 + adds r2, r4, #0 + bl sub_0800E0C0 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r5, r5, r1 + adds r6, #1 + cmp r6, #3 + ble _08011E78 + ldr r5, _08011EF4 + ldr r1, [r5] + ldr r4, _08011EF8 + ldr r0, _08011EFC + adds r4, r4, r0 + ldrb r0, [r4] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + movs r1, #1 + movs r2, #3 + movs r3, #4 + bl sub_0800E0C4 + ldrb r1, [r4] + lsls r1, r1, #5 + adds r1, #0x14 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #6 + movs r1, #6 + movs r2, #3 + bl sub_0800E0C0 + ldrb r1, [r4] + lsls r1, r1, #5 + adds r1, #0x14 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #0x15 + movs r1, #0x16 + movs r2, #3 + bl sub_0800E0C0 + b _08011F96 + .align 2, 0 +_08011EEC: .4byte gUnknown_82C05C7 +_08011EF0: .4byte gUnknown_82C05D7 +_08011EF4: .4byte gUnknown_3007630 +_08011EF8: .4byte gUnknown_30050A0 +_08011EFC: .4byte 0x000008F6 +_08011F00: + movs r6, #0 + ldr r1, _08011FA0 + ldr r0, [r1] + ldrb r0, [r0, #8] + cmp r6, r0 + bge _08011F5C + adds r7, r1, #0 + movs r1, #0x14 + mov r8, r1 +_08011F12: + ldr r0, [r7] + lsls r5, r6, #5 + adds r1, r0, r5 + ldrb r0, [r1, #0x16] + cmp r0, #0xff + beq _08011F4E + ldrh r0, [r1, #0x18] + adds r4, r6, #3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #1 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800E0C4 + ldr r0, [r7] + adds r0, r0, r5 + ldrh r0, [r0, #0x14] + movs r1, #6 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800E0C4 + ldr r0, [r7] + add r0, r8 + adds r0, #0x15 + movs r1, #0x16 + adds r2, r4, #0 + bl sub_0800E0C0 +_08011F4E: + movs r0, #0x20 + add r8, r0 + adds r6, #1 + ldr r0, [r7] + ldrb r0, [r0, #8] + cmp r6, r0 + blt _08011F12 +_08011F5C: + cmp r6, #3 + bgt _08011F96 + lsls r0, r6, #0x18 + movs r1, #0xc0 + lsls r1, r1, #0x12 + adds r5, r0, r1 +_08011F68: + lsrs r4, r5, #0x18 + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800E0C4 + ldr r0, _08011FA4 + movs r1, #6 + adds r2, r4, #0 + bl sub_0800E0C0 + ldr r0, _08011FA8 + movs r1, #0x16 + adds r2, r4, #0 + bl sub_0800E0C0 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r5, r5, r0 + adds r6, #1 + cmp r6, #3 + ble _08011F68 +_08011F96: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08011FA0: .4byte gUnknown_3007630 +_08011FA4: .4byte gUnknown_82C05C7 +_08011FA8: .4byte gUnknown_82C05D7 + thumb_func_end sub_08011D88 + + thumb_func_start sub_08011FAC +sub_08011FAC: @ 0x08011FAC + ldr r0, _08011FB8 + ldr r1, _08011FBC + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08011FB8: .4byte gUnknown_30050A0 +_08011FBC: .4byte 0x000008D2 + thumb_func_end sub_08011FAC + + thumb_func_start sub_08011FC0 +sub_08011FC0: @ 0x08011FC0 + ldr r0, _08011FCC + ldr r1, _08011FD0 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08011FCC: .4byte gUnknown_30050A0 +_08011FD0: .4byte 0x0000069E + thumb_func_end sub_08011FC0 + + thumb_func_start sub_08011FD4 +sub_08011FD4: @ 0x08011FD4 + bx lr + .align 2, 0 + thumb_func_end sub_08011FD4 + + thumb_func_start sub_08011FD8 +sub_08011FD8: @ 0x08011FD8 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r6, #0 + movs r1, #0x11 + bl sub_08003B18 + lsls r4, r4, #8 + movs r0, #0x90 + lsls r0, r0, #6 + cmp r4, r0 + beq _08012074 + cmp r4, r0 + bgt _08012012 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r4, r0 + beq _08012024 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + beq _08012030 + b _08012092 +_08012012: + movs r0, #0x94 + lsls r0, r0, #6 + cmp r4, r0 + beq _08012040 + movs r0, #0xd4 + lsls r0, r0, #6 + cmp r4, r0 + beq _08012050 + b _08012092 +_08012024: + ldr r1, _0801202C + subs r0, r5, #1 + lsls r0, r0, #2 + b _08012058 + .align 2, 0 +_0801202C: .4byte gUnknown_82C0840 +_08012030: + ldr r1, _0801203C + subs r0, r5, #1 + lsls r0, r0, #2 + adds r1, #0x14 + b _08012058 + .align 2, 0 +_0801203C: .4byte gUnknown_82C0840 +_08012040: + ldr r1, _0801204C + subs r0, r5, #1 + lsls r0, r0, #2 + adds r1, #0x28 + b _08012058 + .align 2, 0 +_0801204C: .4byte gUnknown_82C0840 +_08012050: + ldr r1, _08012070 + subs r0, r5, #1 + lsls r0, r0, #2 + adds r1, #0x3c +_08012058: + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #3 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + movs r3, #2 + bl sub_08016EA4 + b _08012092 + .align 2, 0 +_08012070: .4byte gUnknown_82C0840 +_08012074: + ldr r1, _080120A4 + subs r0, r5, #1 + lsls r0, r0, #2 + adds r1, #0x50 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #3 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + movs r3, #2 + bl sub_08016EA4 +_08012092: + adds r0, r6, #0 + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080120A4: .4byte gUnknown_82C0840 + thumb_func_end sub_08011FD8 + + thumb_func_start sub_080120A8 +sub_080120A8: @ 0x080120A8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x28 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0801212C + mov r8, r0 + ldr r1, [r0] + add r0, sp, #8 + movs r2, #5 + bl sub_08008E78 + movs r0, #3 + str r0, [sp] + movs r1, #0 + mov sb, r1 + str r1, [sp, #4] + adds r0, r4, #0 + movs r1, #1 + add r2, sp, #8 + movs r3, #2 + bl sub_08016EA4 + add r5, sp, #0x1c + ldr r1, _08012130 + adds r0, r5, #0 + bl sub_080088B8 + add r6, sp, #0x10 + mov r1, r8 + ldr r0, [r1] + adds r0, #0xa + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r6, #0 + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080088D8 + movs r0, #0x10 + str r0, [sp] + mov r0, sb + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #2 + bl sub_08016EA4 + add sp, #0x28 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801212C: .4byte gUnknown_3005AF0 +_08012130: .4byte gUnknown_82C0648 + thumb_func_end sub_080120A8 + + thumb_func_start sub_08012134 +sub_08012134: @ 0x08012134 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r1, #1 + cmp r0, #0x1b + bhi _080121C8 + lsls r0, r0, #2 + ldr r1, _0801214C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801214C: .4byte _08012150 +_08012150: @ jump table + .4byte _080121C0 @ case 0 + .4byte _080121C0 @ case 1 + .4byte _080121C0 @ case 2 + .4byte _080121C0 @ case 3 + .4byte _080121C8 @ case 4 + .4byte _080121C0 @ case 5 + .4byte _080121C0 @ case 6 + .4byte _080121C8 @ case 7 + .4byte _080121C0 @ case 8 + .4byte _080121C0 @ case 9 + .4byte _080121C0 @ case 10 + .4byte _080121C8 @ case 11 + .4byte _080121C8 @ case 12 + .4byte _080121C0 @ case 13 + .4byte _080121C0 @ case 14 + .4byte _080121C0 @ case 15 + .4byte _080121C8 @ case 16 + .4byte _080121C8 @ case 17 + .4byte _080121C8 @ case 18 + .4byte _080121C8 @ case 19 + .4byte _080121C8 @ case 20 + .4byte _080121C8 @ case 21 + .4byte _080121C0 @ case 22 + .4byte _080121C0 @ case 23 + .4byte _080121C0 @ case 24 + .4byte _080121C0 @ case 25 + .4byte _080121C0 @ case 26 + .4byte _080121C0 @ case 27 +_080121C0: + ldr r0, _080121CC + ldr r1, _080121D0 + bl sub_08008BCC +_080121C8: + pop {r0} + bx r0 + .align 2, 0 +_080121CC: .4byte gUnknown_2021C7C +_080121D0: .4byte gUnknown_82C069C + thumb_func_end sub_08012134 + + thumb_func_start sub_080121D4 +sub_080121D4: @ 0x080121D4 + push {lr} + subs r0, #9 + cmp r0, #0x12 + bhi _0801223C + lsls r0, r0, #2 + ldr r1, _080121E8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080121E8: .4byte _080121EC +_080121EC: @ jump table + .4byte _08012238 @ case 0 + .4byte _08012238 @ case 1 + .4byte _08012238 @ case 2 + .4byte _0801223C @ case 3 + .4byte _0801223C @ case 4 + .4byte _0801223C @ case 5 + .4byte _08012238 @ case 6 + .4byte _08012238 @ case 7 + .4byte _0801223C @ case 8 + .4byte _0801223C @ case 9 + .4byte _0801223C @ case 10 + .4byte _0801223C @ case 11 + .4byte _0801223C @ case 12 + .4byte _0801223C @ case 13 + .4byte _08012238 @ case 14 + .4byte _08012238 @ case 15 + .4byte _08012238 @ case 16 + .4byte _08012238 @ case 17 + .4byte _08012238 @ case 18 +_08012238: + movs r0, #1 + b _0801223E +_0801223C: + movs r0, #0 +_0801223E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080121D4 + + thumb_func_start sub_08012244 +sub_08012244: @ 0x08012244 + push {lr} + ldr r0, _08012274 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08012278 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0801227C + adds r1, r1, r0 + str r1, [r2] + ldr r0, _08012280 + str r1, [r0] + movs r0, #0 + strb r0, [r1, #0xc] + strb r0, [r1, #0xd] + ldr r1, _08012284 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08012274: .4byte sub_08012288 +_08012278: .4byte gUnknown_20228E4 +_0801227C: .4byte gUnknown_3005B68 +_08012280: .4byte gUnknown_3000DA0 +_08012284: .4byte gUnknown_2037290 + thumb_func_end sub_08012244 + + thumb_func_start sub_08012288 +sub_08012288: @ 0x08012288 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080122A8 + ldr r5, [r0] + ldrb r0, [r5, #0xc] + cmp r0, #0x1e + bls _0801229E + bl _08012A54 +_0801229E: + lsls r0, r0, #2 + ldr r1, _080122AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080122A8: .4byte gUnknown_20228E4 +_080122AC: .4byte _080122B0 +_080122B0: @ jump table + .4byte _0801232C @ case 0 + .4byte _08012A54 @ case 1 + .4byte _08012A54 @ case 2 + .4byte _080123A4 @ case 3 + .4byte _080124CC @ case 4 + .4byte _08012554 @ case 5 + .4byte _08012570 @ case 6 + .4byte _08012690 @ case 7 + .4byte _08012A54 @ case 8 + .4byte _08012600 @ case 9 + .4byte _08012618 @ case 10 + .4byte _080126AC @ case 11 + .4byte _08012760 @ case 12 + .4byte _0801285E @ case 13 + .4byte _0801287C @ case 14 + .4byte _0801288E @ case 15 + .4byte _080128AC @ case 16 + .4byte _08012966 @ case 17 + .4byte _0801297C @ case 18 + .4byte _080128F6 @ case 19 + .4byte _08012914 @ case 20 + .4byte _080129D4 @ case 21 + .4byte _08012A00 @ case 22 + .4byte _080129D4 @ case 23 + .4byte _080129EA @ case 24 + .4byte _08012A54 @ case 25 + .4byte _08012A18 @ case 26 + .4byte _08012A54 @ case 27 + .4byte _08012A54 @ case 28 + .4byte _08012658 @ case 29 + .4byte _080129BA @ case 30 +_0801232C: + ldr r0, _0801238C + ldrh r2, [r0] + adds r3, r0, #0 + cmp r2, #0x14 + bne _0801234C + ldr r0, _08012390 + ldr r0, [r0] + ldr r1, _08012394 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801234C + adds r0, r2, #1 + strh r0, [r3] +_0801234C: + ldr r2, _08012398 + ldr r1, _0801239C + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + strb r0, [r2] + ldr r4, _080123A0 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsrs r0, r0, #8 + strb r0, [r4] + ldrb r0, [r2] + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + bl sub_080116FC + movs r0, #3 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_0801238C: .4byte gUnknown_2037280 +_08012390: .4byte gUnknown_3005AF0 +_08012394: .4byte 0x00000CA9 +_08012398: .4byte gUnknown_20228E0 +_0801239C: .4byte gUnknown_82C1FCC +_080123A0: .4byte gUnknown_20228E1 +_080123A4: + movs r0, #0x70 + bl sub_08000BDC + str r0, [r5, #4] + movs r0, #0xa0 + bl sub_08000BDC + str r0, [r5] + movs r0, #0xa0 + bl sub_08000BDC + str r0, [r5, #8] + ldr r0, [r5, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r5] + movs r1, #5 + bl sub_08017044 + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x10 + bl sub_0800DA5C + ldr r1, [r5] + movs r3, #0 + movs r0, #0 + strh r0, [r1, #0x18] + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + subs r0, #4 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x1a] + ldr r0, [r5] + strb r3, [r0, #0x1b] + ldr r0, [r5, #4] + movs r1, #0xff + bl sub_08016AD0 + strb r0, [r5, #0x17] + ldr r0, _08012424 + bl sub_08003250 + strb r0, [r5, #0x10] + ldr r0, _08012428 + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + cmp r1, #2 + blt _0801243C + cmp r1, #4 + ble _0801242C + cmp r1, #5 + beq _08012434 + b _0801243C + .align 2, 0 +_08012424: .4byte gUnknown_82C1FC4 +_08012428: .4byte gUnknown_20228E1 +_0801242C: + ldr r0, _08012430 + b _08012436 + .align 2, 0 +_08012430: .4byte gUnknown_82C2024 +_08012434: + ldr r0, _080124B8 +_08012436: + bl sub_08003250 + strb r0, [r5, #0xf] +_0801243C: + ldr r0, _080124BC + bl sub_08003250 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + movs r1, #0x22 + bl sub_08003B18 + ldrb r0, [r5, #0x10] + ldr r2, _080124C0 + movs r1, #2 + str r1, [sp] + movs r4, #4 + str r4, [sp, #4] + movs r1, #1 + movs r3, #8 + bl sub_08016EA4 + ldrb r0, [r5, #0x10] + bl sub_0800365C + ldrb r0, [r5, #0x10] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r5, #0xf] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _080124C4 + adds r2, r0, #0 + ldr r1, _080124C8 + 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_081AE25C + strb r0, [r5, #0x12] + ldrb r0, [r5, #0x11] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5, #0x11] + bl sub_0800365C + ldrb r0, [r5, #0x11] + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + strb r0, [r5, #0x13] + strb r4, [r5, #0xc] + b _08012A54 + .align 2, 0 +_080124B8: .4byte gUnknown_82C202C +_080124BC: .4byte gUnknown_82C2034 +_080124C0: .4byte gUnknown_82C08A4 +_080124C4: .4byte gUnknown_3006050 +_080124C8: .4byte gUnknown_82C2064 +_080124CC: + ldr r0, _08012504 + ldr r2, _08012508 + ldr r4, _0801250C + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _08012510 + ldrb r2, [r0] + lsrs r0, r2, #4 + cmp r0, #0 + beq _08012530 + ldrb r1, [r5, #0x13] + subs r0, #1 + cmp r1, r0 + ble _0801251C + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + beq _0801251C + ldr r0, _08012514 + ldr r1, _08012518 + bl sub_08008BCC + b _08012538 + .align 2, 0 +_08012504: .4byte gUnknown_2021C40 +_08012508: .4byte gUnknown_82C1E58 +_0801250C: .4byte gUnknown_20228E0 +_08012510: .4byte gUnknown_20228E1 +_08012514: .4byte gUnknown_2021C7C +_08012518: .4byte gUnknown_82C06B8 +_0801251C: + ldr r0, _08012528 + ldr r1, _0801252C + bl sub_08008BCC + b _08012538 + .align 2, 0 +_08012528: .4byte gUnknown_2021C7C +_0801252C: .4byte gUnknown_82C069C +_08012530: + ldr r0, _0801254C + ldrb r1, [r4] + bl sub_08012134 +_08012538: + ldrb r0, [r5, #0x11] + ldr r1, _08012550 + ldrb r1, [r1] + ldrb r2, [r5, #0x13] + bl sub_08011FD8 + movs r0, #5 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_0801254C: .4byte gUnknown_2021C7C +_08012550: .4byte gUnknown_20228E1 +_08012554: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _0801256C + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012566 + b _08012A54 +_08012566: + movs r0, #6 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_0801256C: .4byte gUnknown_2021C7C +_08012570: + adds r0, r5, #0 + movs r1, #7 + movs r2, #0xa + bl sub_08012D0C + ldr r0, _08012590 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080125AC + ldrb r0, [r5, #0x13] + cmp r0, #1 + bne _08012594 + movs r0, #0x17 + b _080125AA + .align 2, 0 +_08012590: .4byte gUnknown_3002360 +_08012594: + ldr r0, _080125A4 + ldrb r1, [r0] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080125A8 + movs r0, #0x1e + b _080125AA + .align 2, 0 +_080125A4: .4byte gUnknown_20228E1 +_080125A8: + movs r0, #0x13 +_080125AA: + strb r0, [r5, #0xc] +_080125AC: + ldr r0, _080125F8 + ldrb r2, [r0] + lsrs r0, r2, #4 + cmp r0, #0 + beq _080125E2 + ldrb r1, [r5, #0x13] + subs r0, #1 + cmp r1, r0 + ble _080125E2 + movs r4, #0xf + adds r0, r4, #0 + ands r0, r2 + cmp r0, #0 + beq _080125E2 + bl sub_08011D2C + cmp r0, #0 + beq _080125E2 + ldr r0, _080125FC + ldrh r1, [r0, #0x2e] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080125E2 + strb r4, [r5, #0xc] + bl sub_0800E9F8 +_080125E2: + ldrb r0, [r5, #0xc] + cmp r0, #6 + beq _080125EA + b _08012A54 +_080125EA: + bl sub_080100EC + cmp r0, #0 + bne _080125F4 + b _08012A54 +_080125F4: + b _0801275A + .align 2, 0 +_080125F8: .4byte gUnknown_20228E1 +_080125FC: .4byte gUnknown_3002360 +_08012600: + bl sub_080100EC + cmp r0, #0 + beq _0801260A + b _08012A54 +_0801260A: + movs r0, #6 + strb r0, [r5, #0xc] + ldr r0, [r5] + bl sub_08012E9C + strb r0, [r5, #0x13] + b _08012A54 +_08012618: + movs r3, #0 + ldr r0, _08012650 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #2 + bne _08012628 + movs r3, #1 +_08012628: + adds r0, r5, #0 + adds r0, #0xd + ldr r2, _08012654 + lsls r1, r3, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012640 + b _08012A54 +_08012640: + ldr r0, [r5] + bl sub_08012E9C + strb r0, [r5, #0x13] + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 + b _08012960 + .align 2, 0 +_08012650: .4byte gUnknown_20228E0 +_08012654: .4byte gUnknown_82C09E0 +_08012658: + ldr r0, _08012688 + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + movs r0, #2 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r3, r0, #0x1f + adds r0, r5, #0 + adds r0, #0xd + ldr r2, _0801268C + lsls r1, r3, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012682 + b _08012A54 +_08012682: + movs r0, #0x15 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_08012688: .4byte gUnknown_20228E1 +_0801268C: .4byte gUnknown_82C09E0 +_08012690: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _080126A8 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080126A2 + b _08012A54 +_080126A2: + movs r0, #0xb + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_080126A8: .4byte gUnknown_2021C7C +_080126AC: + adds r4, r5, #0 + adds r4, #0xd + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r2, [r5, #0x13] + lsls r2, r2, #5 + ldr r1, [r5] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_0801014C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801272C + cmp r1, r0 + bgt _080126F0 + subs r0, #2 + cmp r1, r0 + beq _0801275A + b _08012A54 +_080126F0: + cmp r1, #0 + beq _080126FA + cmp r1, #1 + beq _0801272C + b _08012A54 +_080126FA: + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + movs r0, #5 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + ldr r2, [r5] + adds r2, r2, r0 + adds r2, #0x10 + movs r0, #5 + b _08012750 +_0801272C: + movs r0, #6 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + ldr r2, [r5] + adds r2, r2, r0 + adds r2, #0x10 + movs r0, #6 +_08012750: + bl sub_08010188 + movs r0, #0xc + strb r0, [r5, #0xc] + b _08012A54 +_0801275A: + movs r0, #9 + strb r0, [r5, #0xc] + b _08012A54 +_08012760: + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r2, [r5, #0x13] + lsls r2, r2, #5 + ldr r1, [r5] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_08010214 + cmp r0, #1 + bne _0801284E + ldrb r0, [r5, #0x19] + cmp r0, #5 + bne _08012808 + ldr r1, [r5] + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1, #0x1b] + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 + ldrb r0, [r5, #0x13] + adds r0, #1 + strb r0, [r5, #0x13] + ldr r1, _080127C4 + ldrb r1, [r1] + movs r3, #0xf + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, #0 + ands r0, r1 + cmp r2, r0 + bne _08012844 + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + bne _080127C0 + cmp r2, #4 + bne _080127C8 +_080127C0: + strb r3, [r5, #0xc] + b _080127E4 + .align 2, 0 +_080127C4: .4byte gUnknown_20228E1 +_080127C8: + ldr r0, _080127F8 + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r2, [r5] + adds r1, r1, r2 + subs r1, #0x10 + bl sub_08008888 + ldr r0, _080127FC + ldr r1, _08012800 + bl sub_08008BCC + movs r0, #0xd + strb r0, [r5, #0xc] +_080127E4: + bl sub_0800E9F8 + ldrb r0, [r5, #0x11] + ldr r1, _08012804 + ldrb r1, [r1] + ldrb r2, [r5, #0x13] + bl sub_08011FD8 + b _08012848 + .align 2, 0 +_080127F8: .4byte gUnknown_2021C40 +_080127FC: .4byte gUnknown_2021C7C +_08012800: .4byte gUnknown_82C0948 +_08012804: .4byte gUnknown_20228E1 +_08012808: + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r4, r0, #0 + adds r4, #0x10 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_080118AC + ldr r1, [r5] + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r2, [r1, #0x1a] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x1a] + ldr r0, [r5] + bl sub_08012E9C + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 +_08012844: + movs r0, #4 + strb r0, [r5, #0xc] +_08012848: + movs r0, #0 + strb r0, [r5, #0x19] + b _08012A54 +_0801284E: + cmp r0, #2 + beq _08012854 + b _08012A54 +_08012854: + movs r0, #0 + movs r1, #0 + bl sub_08011554 + b _08012960 +_0801285E: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _08012878 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012870 + b _08012A54 +_08012870: + movs r0, #0xe + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_08012878: .4byte gUnknown_2021C7C +_0801287C: + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x78 + bhi _0801288C + b _08012A54 +_0801288C: + b _080128D2 +_0801288E: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _080128A8 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080128A0 + b _08012A54 +_080128A0: + movs r0, #0x10 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_080128A8: .4byte gUnknown_82C0914 +_080128AC: + adds r0, r5, #0 + adds r0, #0xd + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080128D2 + cmp r1, #0 + bgt _080128CC + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080128D8 + b _08012A54 +_080128CC: + cmp r1, #1 + beq _080128D8 + b _08012A54 +_080128D2: + movs r0, #0x11 + strb r0, [r5, #0xc] + b _08012A54 +_080128D8: + ldr r0, _080128EC + ldrb r1, [r0] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080128F0 + movs r0, #0x1e + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_080128EC: .4byte gUnknown_20228E1 +_080128F0: + movs r0, #0x13 + strb r0, [r5, #0xc] + b _08012A54 +_080128F6: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _08012910 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012908 + b _08012A54 +_08012908: + movs r0, #0x14 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_08012910: .4byte gUnknown_82C092C +_08012914: + adds r0, r5, #0 + adds r0, #0xd + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080129CA + cmp r1, #0 + bgt _08012934 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801293A + b _08012A54 +_08012934: + cmp r1, #1 + beq _0801293A + b _08012A54 +_0801293A: + ldr r0, _0801294C + ldrb r2, [r0] + movs r0, #0xf0 + ands r0, r2 + cmp r0, #0 + beq _08012950 + movs r0, #0xf + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_0801294C: .4byte gUnknown_20228E1 +_08012950: + movs r3, #0xf + ldrb r1, [r5, #0x13] + adds r0, r3, #0 + ands r0, r2 + cmp r1, r0 + bne _08012960 + strb r3, [r5, #0xc] + b _08012A54 +_08012960: + movs r0, #4 + strb r0, [r5, #0xc] + b _08012A54 +_08012966: + adds r0, r5, #0 + movs r1, #7 + movs r2, #0x1d + bl sub_08012D0C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08012A54 + movs r0, #0x12 + strb r0, [r5, #0xc] + b _08012A54 +_0801297C: + bl sub_0800E9DC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080129B2 + movs r0, #0 + bl sub_0800EA18 + cmp r0, #0 + beq _08012998 + movs r0, #0x1a + strb r0, [r5, #0xc] + b _08012A54 +_08012998: + ldrh r0, [r5, #0x1a] + adds r0, #1 + strh r0, [r5, #0x1a] + lsls r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _08012A54 + movs r0, #0x1d + strb r0, [r5, #0xc] + movs r0, #0 + strb r0, [r5, #0xd] + b _08012A54 +_080129B2: + movs r0, #0x1d + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + b _08012A54 +_080129BA: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _080129D0 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08012A54 +_080129CA: + movs r0, #0x17 + strb r0, [r5, #0xc] + b _08012A54 + .align 2, 0 +_080129D0: .4byte gUnknown_82C09A8 +_080129D4: + bl sub_0800DB50 + bl sub_0800E894 + adds r0, r5, #0 + bl sub_08012A64 + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + b _08012A54 +_080129EA: + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 + ldr r1, _080129FC + movs r0, #5 + strh r0, [r1] + b _08012A54 + .align 2, 0 +_080129FC: .4byte gUnknown_2037290 +_08012A00: + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 + ldr r1, _08012A14 + movs r0, #8 + strh r0, [r1] + b _08012A54 + .align 2, 0 +_08012A14: .4byte gUnknown_2037290 +_08012A18: + bl sub_08011570 + cmp r0, #0 + beq _08012A26 + movs r0, #0x1d + strb r0, [r5, #0xc] + b _08012A54 +_08012A26: + ldr r0, _08012A5C + ldrb r0, [r0] + cmp r0, #0 + beq _08012A54 + ldr r0, _08012A60 + ldrb r0, [r0] + bl sub_080121D4 + cmp r0, #0 + beq _08012A3E + bl sub_08010B2C +_08012A3E: + movs r0, #1 + bl sub_08010B58 + bl sub_080144CC + adds r0, r5, #0 + bl sub_08012A64 + adds r0, r4, #0 + bl sub_080A8964 +_08012A54: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08012A5C: .4byte gUnknown_30031C4 +_08012A60: .4byte gUnknown_20228E0 + thumb_func_end sub_08012288 + + thumb_func_start sub_08012A64 +sub_08012A64: @ 0x08012A64 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x11] + bl sub_08003774 + ldrb r0, [r4, #0x11] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4, #0x12] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r4, #0x10] + bl sub_08003774 + ldrb r0, [r4, #0xf] + movs r1, #0 + bl sub_08197060 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r4, #0x11] + bl sub_08003444 + ldrb r0, [r4, #0xf] + bl sub_08003444 + ldrb r0, [r4, #0x10] + bl sub_08003444 + ldrb r0, [r4, #0x17] + bl sub_080A8964 + ldr r0, [r4, #8] + bl sub_08000BF0 + ldr r0, [r4] + bl sub_08000BF0 + ldr r0, [r4, #4] + bl sub_08000BF0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08012A64 + + thumb_func_start sub_08012AC4 +sub_08012AC4: @ 0x08012AC4 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r1, #1 + cmp r0, #0x1b + bhi _08012B70 + lsls r0, r0, #2 + ldr r1, _08012ADC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08012ADC: .4byte _08012AE0 +_08012AE0: @ jump table + .4byte _08012B50 @ case 0 + .4byte _08012B50 @ case 1 + .4byte _08012B68 @ case 2 + .4byte _08012B50 @ case 3 + .4byte _08012B70 @ case 4 + .4byte _08012B58 @ case 5 + .4byte _08012B58 @ case 6 + .4byte _08012B70 @ case 7 + .4byte _08012B68 @ case 8 + .4byte _08012B68 @ case 9 + .4byte _08012B68 @ case 10 + .4byte _08012B70 @ case 11 + .4byte _08012B70 @ case 12 + .4byte _08012B50 @ case 13 + .4byte _08012B68 @ case 14 + .4byte _08012B68 @ case 15 + .4byte _08012B70 @ case 16 + .4byte _08012B70 @ case 17 + .4byte _08012B70 @ case 18 + .4byte _08012B70 @ case 19 + .4byte _08012B70 @ case 20 + .4byte _08012B70 @ case 21 + .4byte _08012B68 @ case 22 + .4byte _08012B68 @ case 23 + .4byte _08012B68 @ case 24 + .4byte _08012B68 @ case 25 + .4byte _08012B68 @ case 26 + .4byte _08012B50 @ case 27 +_08012B50: + ldr r1, _08012B54 + b _08012B5A + .align 2, 0 +_08012B54: .4byte gUnknown_82C08C4 +_08012B58: + ldr r1, _08012B64 +_08012B5A: + adds r0, r2, #0 + bl sub_08008BCC + b _08012B70 + .align 2, 0 +_08012B64: .4byte gUnknown_82C08DC +_08012B68: + ldr r1, _08012B74 + adds r0, r2, #0 + bl sub_08008BCC +_08012B70: + pop {r0} + bx r0 + .align 2, 0 +_08012B74: .4byte gUnknown_82C08F8 + thumb_func_end sub_08012AC4 + + thumb_func_start sub_08012B78 +sub_08012B78: @ 0x08012B78 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #0x44 + beq _08012B98 + cmp r1, #0x44 + bgt _08012B8E + cmp r1, #0x41 + beq _08012B98 + b _08012BAA +_08012B8E: + cmp r2, #0x45 + beq _08012BA4 + cmp r2, #0x48 + beq _08012BA4 + b _08012BAA +_08012B98: + ldr r1, _08012BA0 + bl sub_08008BCC + b _08012BAA + .align 2, 0 +_08012BA0: .4byte gUnknown_82C0EE0 +_08012BA4: + ldr r1, _08012BB0 + bl sub_08008BCC +_08012BAA: + pop {r0} + bx r0 + .align 2, 0 +_08012BB0: .4byte gUnknown_82C0EF4 + thumb_func_end sub_08012B78 + + thumb_func_start sub_08012BB4 +sub_08012BB4: @ 0x08012BB4 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r1, #1 + cmp r0, #0x1b + bhi _08012C58 + lsls r0, r0, #2 + ldr r1, _08012BCC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08012BCC: .4byte _08012BD0 +_08012BD0: @ jump table + .4byte _08012C40 @ case 0 + .4byte _08012C40 @ case 1 + .4byte _08012C50 @ case 2 + .4byte _08012C40 @ case 3 + .4byte _08012C58 @ case 4 + .4byte _08012C40 @ case 5 + .4byte _08012C40 @ case 6 + .4byte _08012C58 @ case 7 + .4byte _08012C50 @ case 8 + .4byte _08012C50 @ case 9 + .4byte _08012C50 @ case 10 + .4byte _08012C58 @ case 11 + .4byte _08012C58 @ case 12 + .4byte _08012C40 @ case 13 + .4byte _08012C50 @ case 14 + .4byte _08012C50 @ case 15 + .4byte _08012C58 @ case 16 + .4byte _08012C58 @ case 17 + .4byte _08012C58 @ case 18 + .4byte _08012C58 @ case 19 + .4byte _08012C58 @ case 20 + .4byte _08012C58 @ case 21 + .4byte _08012C50 @ case 22 + .4byte _08012C50 @ case 23 + .4byte _08012C50 @ case 24 + .4byte _08012C50 @ case 25 + .4byte _08012C50 @ case 26 + .4byte _08012C40 @ case 27 +_08012C40: + ldr r1, _08012C4C + adds r0, r2, #0 + bl sub_08008BCC + b _08012C58 + .align 2, 0 +_08012C4C: .4byte gUnknown_82C1C80 +_08012C50: + ldr r1, _08012C5C + adds r0, r2, #0 + bl sub_08008BCC +_08012C58: + pop {r0} + bx r0 + .align 2, 0 +_08012C5C: .4byte gUnknown_82C1C94 + thumb_func_end sub_08012BB4 + + thumb_func_start sub_08012C60 +sub_08012C60: @ 0x08012C60 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r1, #1 + cmp r0, #0x1b + bhi _08012D04 + lsls r0, r0, #2 + ldr r1, _08012C78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08012C78: .4byte _08012C7C +_08012C7C: @ jump table + .4byte _08012CEC @ case 0 + .4byte _08012CEC @ case 1 + .4byte _08012CFC @ case 2 + .4byte _08012CEC @ case 3 + .4byte _08012D04 @ case 4 + .4byte _08012CEC @ case 5 + .4byte _08012CEC @ case 6 + .4byte _08012D04 @ case 7 + .4byte _08012CFC @ case 8 + .4byte _08012CFC @ case 9 + .4byte _08012CFC @ case 10 + .4byte _08012D04 @ case 11 + .4byte _08012D04 @ case 12 + .4byte _08012CEC @ case 13 + .4byte _08012CFC @ case 14 + .4byte _08012CFC @ case 15 + .4byte _08012D04 @ case 16 + .4byte _08012D04 @ case 17 + .4byte _08012D04 @ case 18 + .4byte _08012D04 @ case 19 + .4byte _08012D04 @ case 20 + .4byte _08012D04 @ case 21 + .4byte _08012CFC @ case 22 + .4byte _08012CFC @ case 23 + .4byte _08012CFC @ case 24 + .4byte _08012CFC @ case 25 + .4byte _08012CFC @ case 26 + .4byte _08012CEC @ case 27 +_08012CEC: + ldr r1, _08012CF8 + adds r0, r2, #0 + bl sub_08008BCC + b _08012D04 + .align 2, 0 +_08012CF8: .4byte gUnknown_82C09F8 +_08012CFC: + ldr r1, _08012D08 + adds r0, r2, #0 + bl sub_08008BCC +_08012D04: + pop {r0} + bx r0 + .align 2, 0 +_08012D08: .4byte gUnknown_82C0A10 + thumb_func_end sub_08012C60 + + thumb_func_start sub_08012D0C +sub_08012D0C: @ 0x08012D0C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + ldr r0, [r4] + bl sub_08012DD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08012D28 + cmp r0, #2 + beq _08012D60 + b _08012D74 +_08012D28: + movs r0, #2 + bl sub_080A306C + ldrb r0, [r4, #0x12] + bl sub_081AE3E4 + ldr r0, _08012D54 + ldrb r2, [r4, #0x13] + lsls r2, r2, #5 + ldr r1, [r4] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_08008888 + ldr r0, _08012D58 + ldr r1, _08012D5C + ldrb r1, [r1] + bl sub_08012AC4 + strb r6, [r4, #0xc] + b _08012D74 + .align 2, 0 +_08012D54: .4byte gUnknown_2021C54 +_08012D58: .4byte gUnknown_2021C7C +_08012D5C: .4byte gUnknown_20228E0 +_08012D60: + movs r0, #0 + movs r1, #0 + bl sub_08011554 + ldrb r0, [r4, #0x12] + bl sub_081AE3E4 + strb r5, [r4, #0xc] + movs r0, #1 + b _08012D76 +_08012D74: + movs r0, #0 +_08012D76: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08012D0C + + thumb_func_start sub_08012D7C +sub_08012D7C: @ 0x08012D7C + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _08012DA8 + ldr r3, [r0] + movs r2, #0 + ldr r1, [r3] + lsls r0, r4, #5 + adds r1, r1, r0 + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _08012DAC + cmp r0, #2 + beq _08012DB6 + b _08012DB8 + .align 2, 0 +_08012DA8: .4byte gUnknown_20228E4 +_08012DAC: + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _08012DB8 + movs r2, #2 + b _08012DB8 +_08012DB6: + movs r2, #1 +_08012DB8: + lsls r0, r4, #5 + ldr r3, [r3] + adds r3, r3, r0 + str r2, [sp] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_08017360 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08012D7C + + thumb_func_start sub_08012DD8 +sub_08012DD8: @ 0x08012DD8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r0, _08012E30 + ldr r5, [r0] + movs r0, #0 + mov r8, r0 + movs r3, #1 +_08012DEC: + ldr r0, [r5] + lsls r6, r3, #5 + adds r2, r0, r6 + ldrb r0, [r2, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + mov sb, r0 + cmp r0, #1 + bne _08012E4C + ldr r1, [r5, #4] + adds r0, r2, #0 + str r3, [sp] + bl sub_080171A8 + adds r4, r0, #0 + ldr r3, [sp] + cmp r4, #0xff + beq _08012E34 + ldr r1, [r5] + ldr r0, [r5, #4] + lsls r2, r4, #3 + subs r2, r2, r4 + lsls r2, r2, #2 + adds r1, r1, r6 + adds r0, 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, r0, r6 + mov r1, sb + strh r1, [r0, #0x18] + b _08012E4C + .align 2, 0 +_08012E30: .4byte gUnknown_20228E4 +_08012E34: + ldr r2, [r5] + adds r2, r2, r6 + ldrb r1, [r2, #0x1a] + movs r4, #4 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r1, r0 + movs r0, #2 + orrs r1, r0 + strb r1, [r2, #0x1a] + movs r7, #2 + mov r8, r7 +_08012E4C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #4 + bls _08012DEC + movs r6, #0 + movs r4, #3 +_08012E5A: + ldr r0, [r5] + ldr r1, [r5, #4] + adds r1, r1, r6 + movs r2, #5 + bl sub_080171F8 + adds r6, #0x1c + subs r4, #1 + ldr r0, [r5] + cmp r4, #0 + bge _08012E5A + mov r1, r8 + cmp r1, #2 + beq _08012E8C + adds r1, r0, #0 + movs r4, #4 +_08012E7A: + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _08012E84 + movs r2, #1 + mov r8, r2 +_08012E84: + adds r1, #0x20 + subs r4, #1 + cmp r4, #0 + bge _08012E7A +_08012E8C: + mov r0, r8 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08012DD8 + + thumb_func_start sub_08012E9C +sub_08012E9C: @ 0x08012E9C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08012F70 + ldr r4, [r0] + movs r3, #0 +_08012EAC: + ldr r0, [r4, #8] + lsls r2, r3, #5 + ldr r1, [r4] + adds r0, r0, r2 + adds r1, 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, #1 + ldr r0, [r4, #8] + ldr r1, [r4] + cmp r3, #4 + ble _08012EAC + movs r5, #0 + mov r8, r1 + mov sb, r0 + movs r3, #4 +_08012ED4: + mov r1, sb + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08012EF6 + 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, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08012EF6: + movs r7, #0x20 + add sb, r7 + subs r3, #1 + cmp r3, #0 + bge _08012ED4 + mov sl, r5 + cmp r5, #4 + bhi _08012F58 + ldr r0, _08012F74 + mov sb, r0 + movs r1, #0 + mov ip, r1 + movs r2, #4 + rsbs r2, r2, #0 + mov r8, r2 +_08012F14: + ldr r1, [r4] + lsls r3, r5, #5 + adds r1, r1, r3 + mov r0, sb + 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, r0, r3 + movs r1, #0 + strh r1, [r0, #0x18] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1, #0x1a] + mov r0, r8 + ands r0, r2 + strb r0, [r1, #0x1a] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1, #0x1a] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x1a] + ldr r0, [r4] + adds r0, r0, r3 + mov r6, ip + strb r6, [r0, #0x1b] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _08012F14 +_08012F58: + movs r3, #0 + ldr r1, [r4] + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08012F78 + ldrb r0, [r1, #0x1b] + cmp r0, #0x40 + bne _08012F78 + mov sl, r3 + b _08012F98 + .align 2, 0 +_08012F70: .4byte gUnknown_20228E4 +_08012F74: .4byte gUnknown_82C2364 +_08012F78: + adds r3, #1 + cmp r3, #4 + bgt _08012F98 + lsls r0, r3, #5 + adds r2, r1, r0 + ldrb r0, [r2, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08012F78 + ldrb r0, [r2, #0x1b] + cmp r0, #0x40 + bne _08012F78 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_08012F98: + mov r0, sl + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08012E9C + + thumb_func_start sub_08012FA8 +sub_08012FA8: @ 0x08012FA8 + push {lr} + ldr r0, _08012FD8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08012FDC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08012FE0 + adds r1, r1, r0 + str r1, [r2] + ldr r0, _08012FE4 + str r1, [r0] + movs r0, #0 + strb r0, [r1, #8] + strb r0, [r1, #9] + ldr r1, _08012FE8 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08012FD8: .4byte sub_08012FEC +_08012FDC: .4byte gUnknown_20228E4 +_08012FE0: .4byte gUnknown_3005B68 +_08012FE4: .4byte gUnknown_3000DA4 +_08012FE8: .4byte gUnknown_2037290 + thumb_func_end sub_08012FA8 + + thumb_func_start sub_08012FEC +sub_08012FEC: @ 0x08012FEC + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0801300C + ldr r6, [r0] + ldrb r0, [r6, #8] + cmp r0, #0x17 + bls _08013000 + b _08013686 +_08013000: + lsls r0, r0, #2 + ldr r1, _08013010 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801300C: .4byte gUnknown_20228E4 +_08013010: .4byte _08013014 +_08013014: @ jump table + .4byte _08013074 @ case 0 + .4byte _080130E4 @ case 1 + .4byte _08013110 @ case 2 + .4byte _080131DC @ case 3 + .4byte _08013686 @ case 4 + .4byte _0801328C @ case 5 + .4byte _080132C8 @ case 6 + .4byte _08013514 @ case 7 + .4byte _08013530 @ case 8 + .4byte _0801357E @ case 9 + .4byte _08013590 @ case 10 + .4byte _08013618 @ case 11 + .4byte _08013590 @ case 12 + .4byte _080135E8 @ case 13 + .4byte _08013590 @ case 14 + .4byte _08013628 @ case 15 + .4byte _08013686 @ case 16 + .4byte _08013686 @ case 17 + .4byte _08013590 @ case 18 + .4byte _08013648 @ case 19 + .4byte _08013590 @ case 20 + .4byte _0801367C @ case 21 + .4byte _08013686 @ case 22 + .4byte _0801366C @ case 23 +_08013074: + ldr r0, _080130D0 + ldrh r2, [r0] + adds r3, r0, #0 + cmp r2, #0x14 + bne _08013094 + ldr r0, _080130D4 + ldr r0, [r0] + ldr r1, _080130D8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08013094 + adds r0, r2, #1 + strh r0, [r3] +_08013094: + ldr r2, _080130DC + ldr r1, _080130E0 + ldrh r0, [r3] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldrb r0, [r2] + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011748 + movs r0, #0x70 + bl sub_08000BDC + str r0, [r6, #4] + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r6] + movs r0, #1 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_080130D0: .4byte gUnknown_2037280 +_080130D4: .4byte gUnknown_3005AF0 +_080130D8: .4byte 0x00000CA9 +_080130DC: .4byte gUnknown_20228E0 +_080130E0: .4byte gUnknown_82C2438 +_080130E4: + adds r0, r6, #0 + adds r0, #9 + ldr r2, _08013108 + ldr r1, _0801310C + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08013100 + b _08013686 +_08013100: + movs r0, #2 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_08013108: .4byte gUnknown_82C1BE4 +_0801310C: .4byte gUnknown_2037280 +_08013110: + ldr r0, [r6, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r6] + movs r1, #0x10 + bl sub_08017044 + ldr r0, [r6, #4] + ldr r1, _080131C0 + ldrh r1, [r1] + bl sub_08016AD0 + movs r4, #0 + strb r0, [r6, #0x11] + ldr r0, _080131C4 + bl sub_08003250 + strb r0, [r6, #0xc] + ldr r0, _080131C8 + bl sub_08003250 + strb r0, [r6, #0xb] + ldr r0, _080131CC + bl sub_08003250 + strb r0, [r6, #0xd] + ldrb r0, [r6, #0xc] + movs r1, #0x22 + bl sub_08003B18 + ldrb r0, [r6, #0xc] + ldr r2, _080131D0 + movs r1, #2 + str r1, [sp] + movs r1, #4 + str r1, [sp, #4] + movs r1, #1 + movs r3, #8 + bl sub_08016EA4 + ldrb r0, [r6, #0xc] + bl sub_0800365C + ldrb r0, [r6, #0xc] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r6, #0xb] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _080131D4 + adds r2, r0, #0 + ldr r1, _080131D8 + 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_081AE25C + strb r0, [r6, #0xe] + ldrb r0, [r6, #0xd] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r6, #0xd] + bl sub_0800365C + ldrb r0, [r6, #0xd] + bl sub_080120A8 + ldrb r0, [r6, #0xd] + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + strb r4, [r6, #0xf] + movs r0, #3 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_080131C0: .4byte gUnknown_2037280 +_080131C4: .4byte gUnknown_82C1FC4 +_080131C8: .4byte gUnknown_82C207C +_080131CC: .4byte gUnknown_82C2084 +_080131D0: .4byte gUnknown_82C19B8 +_080131D4: .4byte gUnknown_3006050 +_080131D8: .4byte gUnknown_82C210C +_080131DC: + bl sub_0801394C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _080131F6 + cmp r4, #1 + beq _080131EE + b _08013576 +_080131EE: + movs r0, #2 + bl sub_080A306C + b _08013576 +_080131F6: + ldrb r0, [r6, #0xe] + bl sub_081AE2DC + adds r4, r0, #0 + ldr r0, _08013244 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08013274 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08013274 + ldr r0, [r6] + lsls r1, r4, #5 + adds r0, r0, r1 + ldrb r1, [r0, #0xa] + ldrb r0, [r0, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _0801326C + lsrs r0, r1, #7 + cmp r0, #0 + bne _0801326C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08013690 + adds r1, r0, #0 + cmp r1, #0 + bne _08013248 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080136DC + movs r0, #5 + b _0801325A + .align 2, 0 +_08013244: .4byte gUnknown_3002360 +_08013248: + ldr r0, _08013264 + ldr r2, _08013268 + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + movs r0, #0x12 +_0801325A: + strb r0, [r6, #8] + movs r0, #0x6e + bl sub_080A306C + b _08013686 + .align 2, 0 +_08013264: .4byte gUnknown_2021C7C +_08013268: .4byte gUnknown_82C09A0 +_0801326C: + movs r0, #7 + bl sub_080A306C + b _08013686 +_08013274: + ldr r0, _08013288 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08013282 + b _08013686 +_08013282: + movs r0, #0xa + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_08013288: .4byte gUnknown_3002360 +_0801328C: + ldr r4, _080132BC + ldr r0, _080132C0 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08012BB4 + adds r0, r6, #0 + adds r0, #9 + adds r1, r4, #0 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080132AA + b _08013686 +_080132AA: + ldr r0, _080132C4 + ldrb r2, [r6, #0xf] + lsls r2, r2, #5 + ldr r1, [r6] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_08008888 + b _0801358A + .align 2, 0 +_080132BC: .4byte gUnknown_2021C7C +_080132C0: .4byte gUnknown_20228E0 +_080132C4: .4byte gUnknown_2021C40 +_080132C8: + ldr r0, _080132FC + ldrb r0, [r0] + cmp r0, #0 + beq _0801337E + ldr r4, _08013300 + ldr r1, [r6] + ldrb r0, [r6, #0xf] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + strb r0, [r4] + movs r0, #0 + movs r1, #0 + bl sub_08011554 + ldrb r0, [r4] + subs r0, #1 + cmp r0, #0x1b + bhi _0801337E + lsls r0, r0, #2 + ldr r1, _08013304 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080132FC: .4byte gUnknown_30031C4 +_08013300: .4byte gUnknown_20228E0 +_08013304: .4byte _08013308 +_08013308: @ jump table + .4byte _08013378 @ case 0 + .4byte _08013378 @ case 1 + .4byte _08013378 @ case 2 + .4byte _08013378 @ case 3 + .4byte _08013378 @ case 4 + .4byte _08013378 @ case 5 + .4byte _08013378 @ case 6 + .4byte _0801337E @ case 7 + .4byte _08013378 @ case 8 + .4byte _08013378 @ case 9 + .4byte _08013378 @ case 10 + .4byte _0801337E @ case 11 + .4byte _08013378 @ case 12 + .4byte _08013378 @ case 13 + .4byte _08013378 @ case 14 + .4byte _08013378 @ case 15 + .4byte _0801337E @ case 16 + .4byte _0801337E @ case 17 + .4byte _0801337E @ case 18 + .4byte _0801337E @ case 19 + .4byte _0801337E @ case 20 + .4byte _0801337E @ case 21 + .4byte _08013378 @ case 22 + .4byte _08013378 @ case 23 + .4byte _08013378 @ case 24 + .4byte _08013378 @ case 25 + .4byte _08013378 @ case 26 + .4byte _08013378 @ case 27 +_08013378: + movs r0, #0x14 + strb r0, [r6, #8] + b _08013686 +_0801337E: + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #8 + bls _0801338E + b _080134F0 +_0801338E: + lsls r0, r0, #2 + ldr r1, _08013398 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08013398: .4byte _0801339C +_0801339C: @ jump table + .4byte _080133C0 @ case 0 + .4byte _080133C6 @ case 1 + .4byte _080134F0 @ case 2 + .4byte _080134F0 @ case 3 + .4byte _080133CC @ case 4 + .4byte _080133C6 @ case 5 + .4byte _08013438 @ case 6 + .4byte _080134F0 @ case 7 + .4byte _080133C6 @ case 8 +_080133C0: + movs r0, #0xc + strb r0, [r6, #8] + b _080134F0 +_080133C6: + movs r0, #0xe + strb r0, [r6, #8] + b _080134F0 +_080133CC: + ldr r5, _08013400 + ldr r4, _08013404 + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_08012C60 + adds r0, r6, #0 + adds r0, #9 + adds r1, r5, #0 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080133EA + b _080134F0 +_080133EA: + ldrb r0, [r4] + cmp r0, #0x1c + beq _080133F4 + cmp r0, #0xe + bne _08013408 +_080133F4: + movs r0, #0xc + movs r1, #0 + bl sub_08011554 + b _080134F0 + .align 2, 0 +_08013400: .4byte gUnknown_2021C7C +_08013404: .4byte gUnknown_20228E0 +_08013408: + movs r0, #7 + movs r1, #0 + bl sub_08011554 + ldr r0, _0801342C + ldr r2, _08013430 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r1, _08013434 + adds r0, r5, #0 + bl sub_08008BCC + b _080134F0 + .align 2, 0 +_0801342C: .4byte gUnknown_2021C40 +_08013430: .4byte gUnknown_82C1E58 +_08013434: .4byte gUnknown_82C0A4C +_08013438: + ldrb r0, [r6, #0x15] + adds r2, r0, #0 + cmp r2, #0xf0 + bls _08013460 + adds r0, r6, #0 + adds r0, #9 + ldr r1, _0801345C + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080134F0 + movs r0, #0xc + movs r1, #0 + bl sub_08011554 + movs r0, #0 + b _080134EE + .align 2, 0 +_0801345C: .4byte gUnknown_2021C7C +_08013460: + ldr r0, _08013474 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #0x1b + bhi _080134EC + lsls r0, r0, #2 + ldr r1, _08013478 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08013474: .4byte gUnknown_20228E0 +_08013478: .4byte _0801347C +_0801347C: @ jump table + .4byte _080134F0 @ case 0 + .4byte _080134F0 @ case 1 + .4byte _080134EC @ case 2 + .4byte _080134F0 @ case 3 + .4byte _080134EC @ case 4 + .4byte _080134EC @ case 5 + .4byte _080134EC @ case 6 + .4byte _080134EC @ case 7 + .4byte _080134EC @ case 8 + .4byte _080134EC @ case 9 + .4byte _080134EC @ case 10 + .4byte _080134EC @ case 11 + .4byte _080134EC @ case 12 + .4byte _080134F0 @ case 13 + .4byte _080134EC @ case 14 + .4byte _080134EC @ case 15 + .4byte _080134EC @ case 16 + .4byte _080134EC @ case 17 + .4byte _080134EC @ case 18 + .4byte _080134EC @ case 19 + .4byte _080134EC @ case 20 + .4byte _080134EC @ case 21 + .4byte _080134EC @ case 22 + .4byte _080134EC @ case 23 + .4byte _080134EC @ case 24 + .4byte _080134EC @ case 25 + .4byte _080134EC @ case 26 + .4byte _080134F0 @ case 27 +_080134EC: + adds r0, r2, #1 +_080134EE: + strb r0, [r6, #0x15] +_080134F0: + bl sub_08011564 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080134FC + b _08013686 +_080134FC: + ldr r0, _08013510 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0801350A + b _08013686 +_0801350A: + movs r0, #7 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_08013510: .4byte gUnknown_3002360 +_08013514: + adds r0, r6, #0 + adds r0, #9 + ldr r1, _0801352C + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08013526 + b _08013686 +_08013526: + movs r0, #8 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_0801352C: .4byte gUnknown_82C0A64 +_08013530: + adds r4, r6, #0 + adds r4, #9 + bl sub_08011564 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801356E + cmp r1, r0 + bgt _0801355C + subs r0, #2 + cmp r1, r0 + beq _08013572 + b _08013686 +_0801355C: + cmp r1, #0 + beq _08013566 + cmp r1, #1 + beq _0801356E + b _08013686 +_08013566: + bl sub_080101D4 + movs r0, #9 + b _08013574 +_0801356E: + movs r0, #5 + b _08013574 +_08013572: + movs r0, #6 +_08013574: + strb r0, [r6, #8] +_08013576: + ldrb r0, [r6, #0xe] + bl sub_081AE3E4 + b _08013686 +_0801357E: + bl sub_08011564 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801358A + b _08013686 +_0801358A: + movs r0, #6 + strb r0, [r6, #8] + b _08013686 +_08013590: + ldrb r0, [r6, #0xd] + bl sub_08003774 + ldrb r0, [r6, #0xd] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r6, #0xe] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r6, #0xc] + bl sub_08003774 + ldrb r0, [r6, #0xb] + movs r1, #0 + bl sub_08197060 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r6, #0xd] + bl sub_08003444 + ldrb r0, [r6, #0xb] + bl sub_08003444 + ldrb r0, [r6, #0xc] + bl sub_08003444 + ldrb r0, [r6, #0x11] + bl sub_080A8964 + ldr r0, [r6] + bl sub_08000BF0 + ldr r0, [r6, #4] + bl sub_08000BF0 + ldrb r0, [r6, #8] + adds r0, #1 + strb r0, [r6, #8] + b _08013686 +_080135E8: + bl sub_0800DB50 + adds r5, r6, #0 + adds r5, #9 + ldr r4, _08013610 + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08013686 + ldr r0, _08013614 + movs r1, #6 + b _0801365C + .align 2, 0 +_08013610: .4byte gUnknown_82C0A84 +_08013614: .4byte gUnknown_2037290 +_08013618: + bl sub_0800DB50 + ldr r0, _08013624 + movs r1, #5 + b _0801365C + .align 2, 0 +_08013624: .4byte gUnknown_2037290 +_08013628: + bl sub_0800DB50 + adds r5, r6, #0 + adds r5, #9 + ldr r4, _08013644 + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + b _0801364E + .align 2, 0 +_08013644: .4byte gUnknown_82C0A84 +_08013648: + adds r0, r6, #0 + adds r0, #9 + ldr r1, _08013664 +_0801364E: + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08013686 + ldr r0, _08013668 + movs r1, #8 +_0801365C: + strh r1, [r0] + movs r0, #0x17 + strb r0, [r6, #8] + b _08013686 + .align 2, 0 +_08013664: .4byte gUnknown_2021C7C +_08013668: .4byte gUnknown_2037290 +_0801366C: + adds r0, r4, #0 + bl sub_080A8964 + bl sub_08016E98 + bl sub_0800E894 + b _08013686 +_0801367C: + bl sub_080144CC + adds r0, r4, #0 + bl sub_080A8964 +_08013686: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08012FEC + + thumb_func_start sub_08013690 +sub_08013690: @ 0x08013690 + push {lr} + lsls r1, r1, #5 + ldr r0, [r0] + adds r3, r0, r1 + ldr r0, _080136C0 + ldrb r0, [r0] + cmp r0, #4 + bne _080136D2 + ldrb r1, [r3, #1] + movs r0, #0x3c + ands r0, r1 + cmp r0, #0xc + beq _080136D2 + ldr r0, _080136C4 + ldr r0, [r0] + ldrb r1, [r0, #9] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _080136C8 + movs r0, #1 + b _080136D8 + .align 2, 0 +_080136C0: .4byte gUnknown_20228E0 +_080136C4: .4byte gUnknown_3005AF0 +_080136C8: + ldrb r1, [r3] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080136D6 +_080136D2: + movs r0, #0 + b _080136D8 +_080136D6: + movs r0, #2 +_080136D8: + pop {r1} + bx r1 + thumb_func_end sub_08013690 + + thumb_func_start sub_080136DC +sub_080136DC: @ 0x080136DC + push {r4, lr} + adds r4, r0, #0 + strb r1, [r4, #0xf] + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + ldrb r0, [r4, #0xe] + bl sub_081AE3E4 + ldr r0, _0801373C + ldrb r2, [r4, #0xf] + lsls r2, r2, #5 + ldr r1, [r4] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_08008888 + ldr r1, _08013740 + ldr r0, _08013744 + ldrh r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + ldrb r1, [r4, #0xf] + lsls r1, r1, #5 + ldr r0, [r4] + adds r0, r0, r1 + adds r4, r0, #0 + adds r4, #0x10 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08011AB4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801373C: .4byte gUnknown_2021C40 +_08013740: .4byte gUnknown_82C2438 +_08013744: .4byte gUnknown_2037280 + thumb_func_end sub_080136DC + + thumb_func_start sub_08013748 +sub_08013748: @ 0x08013748 + push {lr} + ldr r0, _08013774 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08013778 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _0801377C + adds r1, r1, r2 + str r1, [r3] + movs r2, #0 + strb r2, [r1, #8] + strb r2, [r1, #9] + ldr r2, _08013780 + str r1, [r2] + pop {r1} + bx r1 + .align 2, 0 +_08013774: .4byte sub_08013784 +_08013778: .4byte gUnknown_20228E4 +_0801377C: .4byte gUnknown_3005B68 +_08013780: .4byte gUnknown_3000DA4 + thumb_func_end sub_08013748 + + thumb_func_start sub_08013784 +sub_08013784: @ 0x08013784 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080137A0 + ldr r4, [r0] + ldrb r0, [r4, #8] + cmp r0, #0xb + bhi _08013888 + lsls r0, r0, #2 + ldr r1, _080137A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080137A0: .4byte gUnknown_20228E4 +_080137A4: .4byte _080137A8 +_080137A8: @ jump table + .4byte _080137D8 @ case 0 + .4byte _08013888 @ case 1 + .4byte _0801380C @ case 2 + .4byte _08013830 @ case 3 + .4byte _08013888 @ case 4 + .4byte _08013888 @ case 5 + .4byte _08013888 @ case 6 + .4byte _08013888 @ case 7 + .4byte _08013888 @ case 8 + .4byte _08013888 @ case 9 + .4byte _08013860 @ case 10 + .4byte _0801387E @ case 11 +_080137D8: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011748 + movs r0, #1 + bl sub_08010CA0 + movs r0, #0x70 + bl sub_08000BDC + str r0, [r4, #4] + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + movs r0, #2 + strb r0, [r4, #8] + b _08013888 +_0801380C: + ldr r0, [r4, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r4] + movs r1, #0x10 + bl sub_08017044 + ldr r0, [r4, #4] + movs r1, #0xff + bl sub_08016AD0 + movs r1, #0 + strb r0, [r4, #0x11] + strb r1, [r4, #0xf] + movs r0, #3 + strb r0, [r4, #8] + b _08013888 +_08013830: + bl sub_0801394C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08013842 + movs r0, #2 + bl sub_080A306C +_08013842: + ldr r0, _0801385C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x26 + ldrsh r0, [r1, r2] + cmp r0, #0xff + bne _08013888 + movs r0, #0xa + strb r0, [r4, #8] + b _08013888 + .align 2, 0 +_0801385C: .4byte gUnknown_3005B60 +_08013860: + ldrb r0, [r4, #0x11] + bl sub_080A8964 + ldr r0, [r4] + bl sub_08000BF0 + ldr r0, [r4, #4] + bl sub_08000BF0 + bl sub_0800E894 + ldrb r0, [r4, #8] + adds r0, #1 + strb r0, [r4, #8] + b _08013888 +_0801387E: + bl sub_0800E894 + adds r0, r5, #0 + bl sub_080A8964 +_08013888: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08013784 + + thumb_func_start sub_08013890 +sub_08013890: @ 0x08013890 + push {lr} + adds r2, r0, #0 + cmp r1, #0xff + bne _0801389C +_08013898: + movs r0, #1 + b _080138C0 +_0801389C: + cmp r1, #0x16 + bhi _080138BE + ldr r0, _080138AC + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + b _080138B8 + .align 2, 0 +_080138AC: .4byte gUnknown_82C23E0 +_080138B0: + ldrb r0, [r1] + cmp r0, r2 + beq _08013898 + adds r1, #1 +_080138B8: + ldrb r0, [r1] + cmp r0, #0xff + bne _080138B0 +_080138BE: + movs r0, #0 +_080138C0: + pop {r1} + bx r1 + thumb_func_end sub_08013890 + + thumb_func_start sub_080138C4 +sub_080138C4: @ 0x080138C4 + push {lr} + ldr r0, [r0] + lsls r1, r1, #5 + adds r1, r0, r1 + ldrb r2, [r1, #0x1a] + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080138F6 + ldrb r0, [r1, #0xa] + lsrs r0, r0, #7 + cmp r0, #0 + beq _080138E2 + movs r0, #3 + b _080138F8 +_080138E2: + lsls r0, r2, #0x1d + cmp r0, #0 + bge _080138EC + movs r0, #1 + b _080138F8 +_080138EC: + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _080138F6 + movs r0, #2 + b _080138F8 +_080138F6: + movs r0, #0 +_080138F8: + pop {r1} + bx r1 + thumb_func_end sub_080138C4 + + thumb_func_start sub_080138FC +sub_080138FC: @ 0x080138FC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _08013948 + ldr r0, [r0] + mov r8, r0 + bl sub_080138C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #5 + mov r2, r8 + ldr r3, [r2] + adds r3, r3, r1 + str r0, [sp] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + adds r0, r5, #0 + movs r1, #9 + adds r2, r6, #0 + bl sub_0801727C + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08013948: .4byte gUnknown_20228E4 + thumb_func_end sub_080138FC + + thumb_func_start sub_0801394C +sub_0801394C: @ 0x0801394C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r0, _080139B4 + ldr r6, [r0] + movs r7, #0 + movs r3, #0 +_0801395C: + ldr r0, [r6] + lsls r5, r3, #5 + adds r2, r0, r5 + ldrb r0, [r2, #0x1a] + lsls r0, r0, #0x1e + mov r8, r5 + cmp r0, #0 + beq _08013A28 + ldr r1, [r6, #4] + adds r0, r2, #0 + str r3, [sp] + bl sub_080171A8 + adds r4, r0, #0 + ldr r3, [sp] + cmp r4, #0xff + beq _080139F6 + ldr r0, [r6] + adds r2, r0, r5 + ldrb r1, [r2, #0x1a] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080139D4 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r4, r0, #2 + ldr r1, [r6, #4] + adds r1, r1, r4 + adds r0, r2, #0 + bl sub_0801713C + ldr r3, [sp] + cmp r0, #0 + beq _080139B8 + ldr r1, [r6] + ldr r0, [r6, #4] + adds r1, r1, r5 + adds r0, r0, r4 + ldm r0!, {r2, r4, r7} + stm r1!, {r2, r4, r7} + ldm r0!, {r2, r4, r7} + stm r1!, {r2, r4, r7} + b _080139E2 + .align 2, 0 +_080139B4: .4byte gUnknown_20228E4 +_080139B8: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _080139EC + subs r0, #1 + strb r0, [r1, #0x1b] + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0, #0x1b] + cmp r0, #0 + bne _080139EC + movs r7, #2 + b _080139EC +_080139D4: + movs r4, #4 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x1a] +_080139E2: + ldr r0, [r6] + adds r0, r0, r5 + movs r1, #0x40 + strb r1, [r0, #0x1b] + movs r7, #1 +_080139EC: + ldr r0, [r6] + add r0, r8 + movs r1, #0 + strh r1, [r0, #0x18] + b _08013A28 +_080139F6: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + beq _08013A28 + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + ldr r0, [r6] + adds r2, r0, r5 + ldrh r1, [r2, #0x18] + ldr r0, _08013A64 + cmp r1, r0 + bls _08013A28 + ldrb r0, [r2, #0x1a] + movs r7, #4 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x1a] + movs r7, #2 +_08013A28: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _0801395C + movs r5, #0 + movs r4, #3 +_08013A36: + ldr r0, [r6] + ldr r1, [r6, #4] + adds r1, r1, r5 + movs r2, #0x10 + bl sub_080171F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08013A4C + movs r7, #1 +_08013A4C: + adds r5, #0x1c + subs r4, #1 + cmp r4, #0 + bge _08013A36 + adds r0, r7, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08013A64: .4byte 0x0000012B + thumb_func_end sub_0801394C + + thumb_func_start sub_08013A68 +sub_08013A68: @ 0x08013A68 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08076DB4 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08013A68 + + thumb_func_start sub_08013A80 +sub_08013A80: @ 0x08013A80 + push {lr} + ldr r0, _08013A94 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08013A94: .4byte sub_08013A68 + thumb_func_end sub_08013A80 + + thumb_func_start sub_08013A98 +sub_08013A98: @ 0x08013A98 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08013AD4 + mov r8, r0 + bl sub_0800A02C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08017BDC + adds r7, r0, #0 + ldr r1, _08013AD8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08013B04 + cmp r0, #1 + bgt _08013ADC + cmp r0, #0 + beq _08013AE6 + b _08013BC4 + .align 2, 0 +_08013AD4: .4byte gUnknown_20228F4 +_08013AD8: .4byte gUnknown_3005B60 +_08013ADC: + cmp r0, #2 + beq _08013B40 + cmp r0, #3 + beq _08013B78 + b _08013BC4 +_08013AE6: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _08013B00 + adds r1, r1, r0 + movs r0, #0 + movs r2, #0x64 + bl sub_0800A070 + b _08013BC4 + .align 2, 0 +_08013B00: .4byte gUnknown_2024190 +_08013B04: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08013BC4 + bl sub_0800A02C + adds r1, r0, #0 + ldr r0, _08013B38 + movs r2, #1 + eors r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + ldr r2, _08013B3C + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + movs r0, #0x32 + bl sub_0808414C + bl sub_0800A178 + b _08013B62 + .align 2, 0 +_08013B38: .4byte gUnknown_20243E8 +_08013B3C: .4byte gUnknown_202207C +_08013B40: + ldr r4, _08013B6C + ldr r0, _08013B70 + ldr r1, [r0] + ldr r0, _08013B74 + adds r1, r1, r0 + adds r0, r4, #0 + movs r2, #0xdc + bl memcpy + movs r0, #0 + adds r1, r4, #0 + movs r2, #0xdc + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08013BC4 +_08013B62: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _08013BC4 + .align 2, 0 +_08013B6C: .4byte gUnknown_202257C +_08013B70: .4byte gUnknown_3005AEC +_08013B74: .4byte 0x00002BE0 +_08013B78: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08013BC4 + ldr r4, _08013BD0 + bl sub_0800A02C + adds r1, r0, #0 + movs r0, #1 + eors r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + ldr r0, _08013BD4 + adds r1, r1, r0 + adds r0, r4, #0 + movs r2, #0xd8 + bl memcpy + bl sub_0800A178 + ldr r1, _08013BD8 + strb r7, [r1] + movs r0, #6 + strb r0, [r1, #1] + ldr r1, _08013BDC + ldr r0, _08013BE0 + str r0, [r1, #8] + ldr r0, _08013BE4 + bl sub_08000540 + mov r0, r8 + bl sub_08017B38 + adds r0, r6, #0 + bl sub_080A8964 +_08013BC4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08013BD0: .4byte gUnknown_2031E60 +_08013BD4: .4byte gUnknown_202207C +_08013BD8: .4byte gUnknown_2031F38 +_08013BDC: .4byte gUnknown_3002360 +_08013BE0: .4byte sub_08085A30 +_08013BE4: .4byte sub_0807A8AC + thumb_func_end sub_08013A98 + + thumb_func_start sub_08013BE8 +sub_08013BE8: @ 0x08013BE8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08013C08 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08013C0C + cmp r0, #1 + beq _08013C24 + b _08013CA6 + .align 2, 0 +_08013C08: .4byte gUnknown_3005B60 +_08013C0C: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08013C1C + movs r0, #2 + bl sub_0800A09C +_08013C1C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08013CA6 +_08013C24: + bl sub_0800A114 + adds r4, r0, #0 + bl sub_0800A59C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _08013CA6 + movs r4, #0 + ldr r5, _08013C3C + b _08013C5A + .align 2, 0 +_08013C3C: .4byte gUnknown_20226A0 +_08013C40: + lsls r1, r4, #8 + ldr r0, _08013C90 + adds r3, r1, r0 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08013C94 + adds r0, r0, r1 + ldrb r2, [r5] + adds r1, r3, #0 + bl sub_080C2750 + adds r5, #0x1c + adds r4, #1 +_08013C5A: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _08013C40 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08013C98 + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldr r1, _08013C90 + adds r3, r0, r1 + adds r0, r3, #0 + adds r0, #0x60 + ldrh r0, [r0] + bl sub_0801B464 + b _08013C9C + .align 2, 0 +_08013C90: .4byte gUnknown_202207C +_08013C94: .4byte gUnknown_20397F8 +_08013C98: + bl sub_0801B458 +_08013C9C: + bl sub_0800A178 + adds r0, r6, #0 + bl sub_080A8964 +_08013CA6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08013BE8 + + thumb_func_start sub_08013CAC +sub_08013CAC: @ 0x08013CAC + push {r4, lr} + ldr r0, _08013CC4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _08013CC8 + cmp r0, #1 + beq _08013CDC + b _08013CFA + .align 2, 0 +_08013CC4: .4byte gUnknown_3002360 +_08013CC8: + ldr r0, _08013CD8 + movs r1, #5 + bl sub_080A8878 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08013CFA + .align 2, 0 +_08013CD8: .4byte sub_08013BE8 +_08013CDC: + ldr r0, _08013D10 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08013CFA + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08013D14 + bl sub_080C4798 +_08013CFA: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08013D10: .4byte sub_08013BE8 +_08013D14: .4byte sub_08085A30 + thumb_func_end sub_08013CAC + + thumb_func_start sub_08013D18 +sub_08013D18: @ 0x08013D18 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + bl sub_080F9A10 + bl sub_08076794 + bl sub_080768D4 + ldr r5, _08013D84 + ldr r0, _08013D88 + str r0, [r5, #0x14] + bl sub_0800A02C + adds r4, r0, #0 + bl sub_0800A02C + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x18] + bl sub_0800A02C + adds r4, r0, #0 + bl sub_0800A02C + movs r2, #1 + eors r4, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r5 + eors r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x18] + ldr r1, _08013D8C + ldr r0, _08013D90 + str r0, [r1, #8] + ldr r0, _08013D94 + str r6, [r0] + bl sub_0806E0D8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08013D84: .4byte gUnknown_20226A0 +_08013D88: .4byte 0x00002211 +_08013D8C: .4byte gUnknown_3002360 +_08013D90: .4byte sub_080B2D68 +_08013D94: .4byte gUnknown_2022C90 + thumb_func_end sub_08013D18 + + thumb_func_start sub_08013D98 +sub_08013D98: @ 0x08013D98 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _08013E04 + adds r1, r3, #0 + bl sub_0809CF88 + ldr r6, _08013E08 + ldr r1, [r6] + movs r0, #4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + mov r8, r2 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + str r5, [sp] + adds r3, r4, #0 + bl sub_08084554 + ldr r0, [r6] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + str r4, [sp] + str r5, [sp, #4] + movs r0, #0 + mov r3, r8 + bl sub_080845E4 + bl sub_08084540 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08013E04: .4byte 0x00004087 +_08013E08: .4byte gUnknown_3005AEC + thumb_func_end sub_08013D98 + + thumb_func_start sub_08013E0C +sub_08013E0C: @ 0x08013E0C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + adds r6, r3, #0 + ldr r1, [sp, #0x18] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _08013E7C + strh r1, [r0] + ldr r0, _08013E80 + bl sub_0809CF88 + bl sub_08009B64 + ldr r1, _08013E84 + strb r0, [r1] + bl sub_0800A02C + ldr r1, _08013E88 + strb r0, [r1] + bl sub_0809CB94 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + mov r0, r8 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + str r6, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + mov r3, r8 + bl sub_08084554 + bl sub_08084540 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08013E7C: .4byte gUnknown_2037280 +_08013E80: .4byte 0x00004087 +_08013E84: .4byte gUnknown_3005B18 +_08013E88: .4byte gUnknown_3005B14 + thumb_func_end sub_08013E0C + + thumb_func_start sub_08013E8C +sub_08013E8C: @ 0x08013E8C + push {r4, lr} + ldr r0, _08013EA4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _08013EA8 + cmp r0, #1 + beq _08013EBC + b _08013ECE + .align 2, 0 +_08013EA4: .4byte gUnknown_3002360 +_08013EA8: + ldr r0, _08013EB8 + movs r1, #5 + bl sub_080A8878 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08013ECE + .align 2, 0 +_08013EB8: .4byte sub_08013BE8 +_08013EBC: + ldr r0, _08013EE4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08013ECE + ldr r0, _08013EE8 + bl sub_08000540 +_08013ECE: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08013EE4: .4byte sub_08013BE8 +_08013EE8: .4byte sub_080859DC + thumb_func_end sub_08013E8C + + thumb_func_start sub_08013EEC +sub_08013EEC: @ 0x08013EEC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080C26D4 + cmp r5, #0 + beq _08013F06 + bl sub_0801AE5C + adds r1, r4, #0 + adds r1, #0x60 + strh r0, [r1] + b _08013F0C +_08013F06: + adds r0, r4, #0 + adds r0, #0x60 + strh r5, [r0] +_08013F0C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08013EEC + + thumb_func_start sub_08013F14 +sub_08013F14: @ 0x08013F14 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0801B458 + ldr r0, _08013F34 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #0xe + bhi _08013F7C + lsls r0, r0, #2 + ldr r1, _08013F38 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08013F34: .4byte gUnknown_20228E0 +_08013F38: .4byte _08013F3C +_08013F3C: @ jump table + .4byte _08013F78 @ case 0 + .4byte _08013F78 @ case 1 + .4byte _08013F78 @ case 2 + .4byte _08013F78 @ case 3 + .4byte _08013F7C @ case 4 + .4byte _08013F7C @ case 5 + .4byte _08013F7C @ case 6 + .4byte _08013F7C @ case 7 + .4byte _08013F78 @ case 8 + .4byte _08013F78 @ case 9 + .4byte _08013F78 @ case 10 + .4byte _08013F7C @ case 11 + .4byte _08013F78 @ case 12 + .4byte _08013F7C @ case 13 + .4byte _08013F78 @ case 14 +_08013F78: + bl sub_0800DE74 +_08013F7C: + ldr r0, _08013F94 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #0x50 + bls _08013F88 + b _0801426C +_08013F88: + lsls r0, r0, #2 + ldr r1, _08013F98 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08013F94: .4byte gUnknown_20228E0 +_08013F98: .4byte _08013F9C +_08013F9C: @ jump table + .4byte _080140FC @ case 0 + .4byte _08014128 @ case 1 + .4byte _08014154 @ case 2 + .4byte _08014180 @ case 3 + .4byte _080141E0 @ case 4 + .4byte _0801426C @ case 5 + .4byte _0801426C @ case 6 + .4byte _08014204 @ case 7 + .4byte _0801421C @ case 8 + .4byte _0801423C @ case 9 + .4byte _08014254 @ case 10 + .4byte _0801426C @ case 11 + .4byte _0801426C @ case 12 + .4byte _0801426C @ case 13 + .4byte _080141A0 @ case 14 + .4byte _0801426C @ case 15 + .4byte _0801426C @ case 16 + .4byte _0801426C @ case 17 + .4byte _0801426C @ case 18 + .4byte _0801426C @ case 19 + .4byte _0801426C @ case 20 + .4byte _0801426C @ case 21 + .4byte _0801426C @ case 22 + .4byte _0801426C @ case 23 + .4byte _0801426C @ case 24 + .4byte _0801426C @ case 25 + .4byte _0801426C @ case 26 + .4byte _0801426C @ case 27 + .4byte _0801426C @ case 28 + .4byte _0801426C @ case 29 + .4byte _0801426C @ case 30 + .4byte _0801426C @ case 31 + .4byte _0801426C @ case 32 + .4byte _0801426C @ case 33 + .4byte _0801426C @ case 34 + .4byte _0801426C @ case 35 + .4byte _0801426C @ case 36 + .4byte _0801426C @ case 37 + .4byte _0801426C @ case 38 + .4byte _0801426C @ case 39 + .4byte _0801426C @ case 40 + .4byte _0801426C @ case 41 + .4byte _0801426C @ case 42 + .4byte _0801426C @ case 43 + .4byte _0801426C @ case 44 + .4byte _0801426C @ case 45 + .4byte _0801426C @ case 46 + .4byte _0801426C @ case 47 + .4byte _0801426C @ case 48 + .4byte _0801426C @ case 49 + .4byte _0801426C @ case 50 + .4byte _0801426C @ case 51 + .4byte _0801426C @ case 52 + .4byte _0801426C @ case 53 + .4byte _0801426C @ case 54 + .4byte _0801426C @ case 55 + .4byte _0801426C @ case 56 + .4byte _0801426C @ case 57 + .4byte _0801426C @ case 58 + .4byte _0801426C @ case 59 + .4byte _0801426C @ case 60 + .4byte _0801426C @ case 61 + .4byte _0801426C @ case 62 + .4byte _0801426C @ case 63 + .4byte _080140E0 @ case 64 + .4byte _0801426C @ case 65 + .4byte _0801426C @ case 66 + .4byte _080141CC @ case 67 + .4byte _080141E0 @ case 68 + .4byte _0801426C @ case 69 + .4byte _0801426C @ case 70 + .4byte _08014204 @ case 71 + .4byte _0801426C @ case 72 + .4byte _0801426C @ case 73 + .4byte _0801426C @ case 74 + .4byte _0801426C @ case 75 + .4byte _0801426C @ case 76 + .4byte _0801426C @ case 77 + .4byte _0801426C @ case 78 + .4byte _0801426C @ case 79 + .4byte _080140E0 @ case 80 +_080140E0: + bl sub_0808569C + ldr r1, _080140F4 + ldr r0, _080140F8 + str r0, [r1, #8] + movs r0, #3 + bl sub_081B81B8 + b _0801426C + .align 2, 0 +_080140F4: .4byte gUnknown_3002360 +_080140F8: .4byte sub_0801A728 +_080140FC: + bl sub_0808569C + ldr r0, _08014124 + movs r1, #1 + bl sub_08013EEC + bl sub_080F9A10 + bl sub_08076794 + bl sub_080768D4 + movs r0, #1 + str r0, [sp] + movs r0, #0x19 + movs r1, #0x18 + movs r2, #6 + movs r3, #8 + b _080141B8 + .align 2, 0 +_08014124: .4byte gUnknown_202257C +_08014128: + bl sub_0808569C + bl sub_080F9A10 + bl sub_08076794 + bl sub_080768D4 + ldr r0, _08014150 + movs r1, #1 + bl sub_08013EEC + movs r0, #2 + str r0, [sp] + movs r0, #0x19 + movs r1, #0x18 + movs r2, #6 + movs r3, #8 + b _080141B8 + .align 2, 0 +_08014150: .4byte gUnknown_202257C +_08014154: + bl sub_0808569C + bl sub_080F9A10 + bl sub_08076794 + bl sub_080768D4 + ldr r0, _0801417C + movs r1, #1 + bl sub_08013EEC + movs r0, #5 + str r0, [sp] + movs r0, #0x19 + movs r1, #0x1b + movs r2, #5 + movs r3, #8 + b _080141B8 + .align 2, 0 +_0801417C: .4byte gUnknown_202257C +_08014180: + ldr r0, _0801419C + movs r1, #1 + bl sub_08013EEC + bl sub_0808569C + movs r0, #3 + str r0, [sp] + movs r0, #0x19 + movs r1, #0x19 + movs r2, #5 + movs r3, #8 + b _080141B8 + .align 2, 0 +_0801419C: .4byte gUnknown_202257C +_080141A0: + ldr r0, _080141C4 + movs r1, #1 + bl sub_08013EEC + bl sub_0808569C + movs r0, #4 + str r0, [sp] + movs r0, #0x19 + movs r1, #0x1a + movs r2, #8 + movs r3, #9 +_080141B8: + bl sub_08013E0C + ldr r0, _080141C8 + bl sub_08000540 + b _0801426C + .align 2, 0 +_080141C4: .4byte gUnknown_202257C +_080141C8: .4byte sub_08013E8C +_080141CC: + bl sub_0808569C + ldr r0, _080141DC + movs r1, #0 + bl sub_080A8878 + b _0801426C + .align 2, 0 +_080141DC: .4byte sub_08013A98 +_080141E0: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080141F0 + bl sub_0800E7D0 + b _080141FE +_080141F0: + bl sub_0800E7E8 + movs r0, #0x45 + movs r1, #0 + movs r2, #1 + bl sub_08010A74 +_080141FE: + bl sub_0801DBBC + b _0801426C +_08014204: + ldr r0, _08014214 + movs r1, #0 + bl sub_08013EEC + ldr r0, _08014218 + bl sub_08000540 + b _0801426C + .align 2, 0 +_08014214: .4byte gUnknown_202257C +_08014218: .4byte sub_08013CAC +_0801421C: + movs r0, #8 + movs r1, #5 + movs r2, #1 + bl sub_08013D98 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08014238 + bl sub_0802A69C + b _0801426C + .align 2, 0 +_08014238: .4byte sub_08085934 +_0801423C: + movs r0, #7 + movs r1, #9 + movs r2, #1 + bl sub_08013D98 + ldr r0, _08014250 + bl sub_08020988 + b _0801426C + .align 2, 0 +_08014250: .4byte sub_08085934 +_08014254: + movs r0, #8 + movs r1, #5 + movs r2, #1 + bl sub_08013D98 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0801428C + bl sub_08024704 +_0801426C: + adds r0, r4, #0 + bl sub_080A8964 + ldr r1, _08014290 + movs r0, #1 + strh r0, [r1] + ldr r0, _08014294 + ldrb r0, [r0] + cmp r0, #0x44 + beq _08014284 + bl sub_080987E8 +_08014284: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801428C: .4byte sub_08085934 +_08014290: .4byte gUnknown_2037290 +_08014294: .4byte gUnknown_20228E0 + thumb_func_end sub_08013F14 + + thumb_func_start sub_08014298 +sub_08014298: @ 0x08014298 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080142C8 + adds r7, r0, r1 + ldr r0, _080142CC + mov sb, r0 + movs r1, #0 + ldrsh r0, [r7, r1] + mov r2, sb + cmp r0, #8 + bls _080142BE + b _080144BA +_080142BE: + lsls r0, r0, #2 + ldr r1, _080142D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080142C8: .4byte gUnknown_3005B68 +_080142CC: .4byte gUnknown_202257C +_080142D0: .4byte _080142D4 +_080142D4: @ jump table + .4byte _080142F8 @ case 0 + .4byte _080143D4 @ case 1 + .4byte _080143EC @ case 2 + .4byte _08014426 @ case 3 + .4byte _0801443C @ case 4 + .4byte _08014452 @ case 5 + .4byte _0801448E @ case 6 + .4byte _0801449A @ case 7 + .4byte _080144A4 @ case 8 +_080142F8: + ldr r1, _08014314 + movs r0, #1 + strh r0, [r1] + ldr r0, _08014318 + ldrb r0, [r0] + subs r0, #0xe + cmp r0, #0xe + bhi _080143CA + lsls r0, r0, #2 + ldr r1, _0801431C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014314: .4byte gUnknown_2037290 +_08014318: .4byte gUnknown_20228E0 +_0801431C: .4byte _08014320 +_08014320: @ jump table + .4byte _0801435C @ case 0 + .4byte _080143CA @ case 1 + .4byte _080143C0 @ case 2 + .4byte _080143CA @ case 3 + .4byte _080143CA @ case 4 + .4byte _080143CA @ case 5 + .4byte _080143CA @ case 6 + .4byte _080143CA @ case 7 + .4byte _080143CA @ case 8 + .4byte _080143C0 @ case 9 + .4byte _080143C0 @ case 10 + .4byte _080143C0 @ case 11 + .4byte _080143C0 @ case 12 + .4byte _080143C0 @ case 13 + .4byte _0801435C @ case 14 +_0801435C: + ldr r1, _080143AC + ldr r0, _080143B0 + str r0, [r1, #0x14] + movs r2, #0 + mov r8, r2 + mov r0, r8 + strh r0, [r1, #0x18] + movs r0, #2 + strh r0, [r1, #0x34] + ldr r6, _080143B4 + ldrb r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080143B8 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + mov r1, sb + strh r0, [r1] + ldrb r0, [r6, #1] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + mov r2, sb + strh r0, [r2, #2] + ldr r0, _080143BC + mov r1, r8 + str r1, [r0, #8] + movs r0, #4 + strh r0, [r7] + bl sub_0800DE74 + bl sub_0800A178 + b _080144BA + .align 2, 0 +_080143AC: .4byte gUnknown_20226A0 +_080143B0: .4byte 0x00002211 +_080143B4: .4byte gUnknown_203CBC4 +_080143B8: .4byte gUnknown_202412C +_080143BC: .4byte gUnknown_3002360 +_080143C0: + bl sub_0800DE74 + adds r0, r4, #0 + bl sub_080A8964 +_080143CA: + bl sub_080988C4 + movs r0, #1 + strh r0, [r7] + b _080144BA +_080143D4: + bl sub_08098800 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080144BA + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + movs r0, #2 + strh r0, [r7] + b _080144BA +_080143EC: + ldr r0, _08014410 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080144BA + ldr r0, _08014414 + ldrb r0, [r0] + cmp r0, #0x1d + bne _0801441C + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _08014418 + bl sub_08000540 + b _080144BA + .align 2, 0 +_08014410: .4byte gUnknown_2037C74 +_08014414: .4byte gUnknown_20228E0 +_08014418: .4byte sub_08076DB4 +_0801441C: + bl sub_0800A8D4 + movs r0, #3 + strh r0, [r7] + b _080144BA +_08014426: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080144BA + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080144E0 + b _080144BA +_0801443C: + movs r0, #0 + adds r1, r2, #0 + movs r2, #0xe + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080144BA + movs r0, #5 + strh r0, [r7] + b _080144BA +_08014452: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _080144BA + bl sub_0800A178 + ldr r0, _08014480 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r0, r2 + bl sub_080B23D0 + cmp r0, #0 + beq _08014488 + ldr r0, _08014484 + movs r1, #0xb + strh r1, [r0] + movs r0, #7 + strh r0, [r7] + b _080144BA + .align 2, 0 +_08014480: .4byte gUnknown_202207C +_08014484: .4byte gUnknown_2037290 +_08014488: + movs r0, #6 + strh r0, [r7] + b _080144BA +_0801448E: + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 + b _080144BA +_0801449A: + bl sub_0800A7F8 + movs r0, #8 + strh r0, [r7] + b _080144BA +_080144A4: + ldr r0, _080144C8 + ldrb r0, [r0] + cmp r0, #0 + bne _080144BA + bl sub_0800DB50 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_080144BA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080144C8: .4byte gUnknown_30031C4 + thumb_func_end sub_08014298 + + thumb_func_start sub_080144CC +sub_080144CC: @ 0x080144CC + push {lr} + ldr r0, _080144DC + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080144DC: .4byte sub_08014298 + thumb_func_end sub_080144CC + + thumb_func_start sub_080144E0 +sub_080144E0: @ 0x080144E0 + push {lr} + ldr r0, _08014500 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08014504 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08014500: .4byte sub_08013F14 +_08014504: .4byte gUnknown_3005B60 + thumb_func_end sub_080144E0 + + thumb_func_start sub_08014508 +sub_08014508: @ 0x08014508 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08014538 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0801453C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08014540 + adds r1, r1, r0 + str r1, [r2] + movs r2, #0 + strb r2, [r1, #0xc] + strb r2, [r1, #0xd] + strb r4, [r1, #0x18] + ldr r0, _08014544 + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08014538: .4byte sub_08014548 +_0801453C: .4byte gUnknown_20228E4 +_08014540: .4byte gUnknown_3005B68 +_08014544: .4byte gUnknown_2037290 + thumb_func_end sub_08014508 + + thumb_func_start sub_08014548 +sub_08014548: @ 0x08014548 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08014568 + ldr r5, [r0] + ldrb r0, [r5, #0xc] + cmp r0, #0x11 + bls _0801455C + b _080149FA +_0801455C: + lsls r0, r0, #2 + ldr r1, _0801456C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014568: .4byte gUnknown_20228E4 +_0801456C: .4byte _08014570 +_08014570: @ jump table + .4byte _080145B8 @ case 0 + .4byte _080145F4 @ case 1 + .4byte _080146C4 @ case 2 + .4byte _080146F4 @ case 3 + .4byte _08014704 @ case 4 + .4byte _08014754 @ case 5 + .4byte _0801472C @ case 6 + .4byte _0801475A @ case 7 + .4byte _080147FA @ case 8 + .4byte _080148C4 @ case 9 + .4byte _080148D4 @ case 10 + .4byte _080148EA @ case 11 + .4byte _08014902 @ case 12 + .4byte _0801491E @ case 13 + .4byte _08014956 @ case 14 + .4byte _0801497C @ case 15 + .4byte _080149B0 @ case 16 + .4byte _080149EA @ case 17 +_080145B8: + ldr r1, _080145EC + ldrb r0, [r5, #0x18] + strb r0, [r1] + ldr r1, _080145F0 + movs r0, #2 + strb r0, [r1] + ldrb r0, [r5, #0x18] + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + movs r0, #0 + movs r1, #0 + bl sub_08010A90 + bl sub_0800AF5C + bl sub_080092D0 + movs r0, #2 + bl sub_080116FC + movs r0, #1 + strb r0, [r5, #0xc] + b _080149FA + .align 2, 0 +_080145EC: .4byte gUnknown_20228E0 +_080145F0: .4byte gUnknown_20228E1 +_080145F4: + movs r0, #0x70 + bl sub_08000BDC + str r0, [r5, #4] + movs r0, #0xa0 + bl sub_08000BDC + str r0, [r5] + movs r0, #0xa0 + bl sub_08000BDC + str r0, [r5, #8] + ldr r0, [r5, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r5] + movs r1, #5 + bl sub_08017044 + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x10 + bl sub_0800DA5C + ldr r1, [r5] + movs r3, #0 + movs r0, #0 + strh r0, [r1, #0x18] + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + subs r0, #4 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x1a] + ldr r0, [r5] + strb r3, [r0, #0x1b] + ldr r0, [r5, #4] + movs r1, #0xff + bl sub_08016AD0 + strb r0, [r5, #0x17] + ldr r0, _080146B0 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + bl sub_08019328 + lsls r0, r0, #0x10 + ldr r2, _080146B4 + ldr r1, [sp, #4] + ands r1, r2 + orrs r1, r0 + ldr r0, _080146B8 + ands r1, r0 + movs r0, #0xc0 + lsls r0, r0, #4 + orrs r1, r0 + str r1, [sp, #4] + mov r0, sp + bl sub_08003250 + strb r0, [r5, #0xf] + ldrb r0, [r5, #0xf] + bl sub_0801822C + ldr r0, _080146BC + adds r2, r0, #0 + ldr r1, _080146C0 + 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_081AE25C + strb r0, [r5, #0x12] + movs r0, #0 + bl sub_08002248 + movs r0, #1 + strb r0, [r5, #0x13] + b _0801474A + .align 2, 0 +_080146B0: .4byte gUnknown_82C2024 +_080146B4: .4byte 0x0000FFFF +_080146B8: .4byte 0xFFFF00FF +_080146BC: .4byte gUnknown_3006050 +_080146C0: .4byte gUnknown_82C2064 +_080146C4: + ldr r0, _080146E4 + ldr r2, _080146E8 + ldr r4, _080146EC + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _080146F0 + ldrb r1, [r4] + bl sub_08012134 + movs r0, #3 + strb r0, [r5, #0xc] + b _080149FA + .align 2, 0 +_080146E4: .4byte gUnknown_2021C40 +_080146E8: .4byte gUnknown_82C1E58 +_080146EC: .4byte gUnknown_20228E0 +_080146F0: .4byte gUnknown_2021C7C +_080146F4: + ldr r0, _08014700 + bl sub_0801832C + movs r0, #4 + strb r0, [r5, #0xc] + b _080149FA + .align 2, 0 +_08014700: .4byte gUnknown_2021C7C +_08014704: + adds r0, r5, #0 + movs r1, #5 + movs r2, #6 + bl sub_08012D0C + ldr r0, _08014728 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0801471C + b _080149FA +_0801471C: + movs r0, #0xd + strb r0, [r5, #0xc] + bl sub_0800DB50 + b _080149FA + .align 2, 0 +_08014728: .4byte gUnknown_3002360 +_0801472C: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _08014750 + bl sub_080183A4 + cmp r0, #0 + bne _0801473C + b _080149FA +_0801473C: + ldr r0, [r5] + bl sub_08012E9C + strb r0, [r5, #0x13] + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 +_0801474A: + movs r0, #2 + strb r0, [r5, #0xc] + b _080149FA + .align 2, 0 +_08014750: .4byte gUnknown_82C0AE4 +_08014754: + movs r0, #7 + strb r0, [r5, #0xc] + b _080149FA +_0801475A: + adds r0, r5, #0 + adds r0, #0xd + adds r1, r5, #0 + adds r1, #0x14 + ldr r3, _08014780 + movs r2, #0 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + beq _0801478A + cmp r4, #0 + bgt _08014784 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _080147CC + b _080149FA + .align 2, 0 +_08014780: .4byte gUnknown_2021C7C +_08014784: + cmp r4, #1 + beq _080147CC + b _080149FA +_0801478A: + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + ldr r1, [r5] + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + adds r1, r1, r0 + strb r4, [r1, #0x1b] + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 + movs r0, #5 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + ldr r2, [r5] + adds r2, r2, r0 + adds r2, #0x10 + movs r0, #5 + b _080147F0 +_080147CC: + movs r0, #6 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + ldr r2, [r5] + adds r2, r2, r0 + adds r2, #0x10 + movs r0, #6 +_080147F0: + bl sub_08010188 + movs r0, #8 + strb r0, [r5, #0xc] + b _080149FA +_080147FA: + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r0, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r2, [r5, #0x13] + lsls r2, r2, #5 + ldr r1, [r5] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_08010214 + adds r4, r0, #0 + cmp r4, #1 + bne _080148B2 + ldrb r0, [r5, #0x19] + cmp r0, #5 + bne _0801486C + ldr r1, [r5] + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1, #0x1b] + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 + ldrb r0, [r5, #0x13] + adds r0, #1 + strb r0, [r5, #0x13] + ldr r0, _08014860 + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r2, [r5] + adds r1, r1, r2 + subs r1, #0x10 + bl sub_08008888 + ldr r0, _08014864 + ldr r1, _08014868 + bl sub_08008BCC + movs r0, #9 + strb r0, [r5, #0xc] + bl sub_0800E9F8 + b _080148AC + .align 2, 0 +_08014860: .4byte gUnknown_2021C40 +_08014864: .4byte gUnknown_2021C7C +_08014868: .4byte gUnknown_82C0948 +_0801486C: + ldrb r1, [r5, #0x13] + lsls r1, r1, #5 + ldr r0, [r5] + adds r0, r0, r1 + adds r4, r0, #0 + adds r4, #0x10 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_080118AC + ldr r1, [r5] + ldrb r0, [r5, #0x13] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r2, [r1, #0x1a] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x1a] + ldr r0, [r5] + bl sub_08012E9C + ldrb r0, [r5, #0x12] + bl sub_081AE3E4 + movs r0, #2 + strb r0, [r5, #0xc] +_080148AC: + movs r0, #0 + strb r0, [r5, #0x19] + b _080149FA +_080148B2: + cmp r4, #2 + beq _080148B8 + b _080149FA +_080148B8: + movs r0, #0 + movs r1, #0 + bl sub_08011554 + strb r4, [r5, #0xc] + b _080149FA +_080148C4: + ldr r0, _080148D0 + bl sub_0801832C + movs r0, #0xa + strb r0, [r5, #0xc] + b _080149FA + .align 2, 0 +_080148D0: .4byte gUnknown_2021C7C +_080148D4: + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x78 + bhi _080148E4 + b _080149FA +_080148E4: + movs r0, #0xb + strb r0, [r5, #0xc] + b _080149FA +_080148EA: + adds r0, r5, #0 + movs r1, #5 + movs r2, #6 + bl sub_08012D0C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080148FC + b _080149FA +_080148FC: + movs r0, #0xc + strb r0, [r5, #0xc] + b _080149FA +_08014902: + bl sub_0800E9DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08014918 + movs r0, #0 + bl sub_0800EA18 + movs r0, #0xf + strb r0, [r5, #0xc] + b _080149FA +_08014918: + movs r0, #6 + strb r0, [r5, #0xc] + b _080149FA +_0801491E: + bl sub_0800DB50 + bl sub_0800E894 + ldrb r0, [r5, #0x12] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r5, #0xf] + bl sub_08003444 + ldrb r0, [r5, #0x17] + bl sub_080A8964 + ldr r0, [r5, #8] + bl sub_08000BF0 + ldr r0, [r5] + bl sub_08000BF0 + ldr r0, [r5, #4] + bl sub_08000BF0 + b _080149E2 +_08014956: + adds r0, r5, #0 + adds r0, #0xd + ldr r1, _08014974 + bl sub_080183A4 + cmp r0, #0 + beq _080149FA + adds r0, r4, #0 + bl sub_080A8964 + ldr r1, _08014978 + movs r0, #5 + strh r0, [r1] + b _080149FA + .align 2, 0 +_08014974: .4byte gUnknown_82C064C +_08014978: .4byte gUnknown_2037290 +_0801497C: + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08014994 + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0801499A +_08014994: + movs r0, #0xd + strb r0, [r5, #0xc] + b _080149FA +_0801499A: + ldr r0, _080149AC + ldrb r0, [r0] + cmp r0, #0 + beq _080149FA + movs r0, #1 + bl sub_08010B58 + b _080149E2 + .align 2, 0 +_080149AC: .4byte gUnknown_30031C4 +_080149B0: + ldrb r0, [r5, #0x12] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r5, #0xf] + bl sub_08003444 + ldrb r0, [r5, #0x17] + bl sub_080A8964 + ldr r0, [r5, #8] + bl sub_08000BF0 + ldr r0, [r5] + bl sub_08000BF0 + ldr r0, [r5, #4] + bl sub_08000BF0 + bl sub_0800A8D4 +_080149E2: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + b _080149FA +_080149EA: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080149FA + adds r0, r4, #0 + bl sub_080A8964 +_080149FA: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08014548 + + thumb_func_start sub_08014A04 +sub_08014A04: @ 0x08014A04 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08014A3C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08014A40 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08014A44 + adds r1, r1, r0 + str r1, [r2] + ldr r0, _08014A48 + str r1, [r0] + movs r2, #0 + strb r2, [r1, #8] + strb r2, [r1, #9] + subs r4, #6 + strb r4, [r1, #0x12] + ldr r0, _08014A4C + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08014A3C: .4byte sub_08014A50 +_08014A40: .4byte gUnknown_20228E4 +_08014A44: .4byte gUnknown_3005B68 +_08014A48: .4byte gUnknown_3000DA4 +_08014A4C: .4byte gUnknown_2037290 + thumb_func_end sub_08014A04 + + thumb_func_start sub_08014A50 +sub_08014A50: @ 0x08014A50 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08014A70 + ldr r7, [r0] + ldrb r0, [r7, #8] + cmp r0, #0xc + bls _08014A64 + b _08014DA8 +_08014A64: + lsls r0, r0, #2 + ldr r1, _08014A74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014A70: .4byte gUnknown_20228E4 +_08014A74: .4byte _08014A78 +_08014A78: @ jump table + .4byte _08014AAC @ case 0 + .4byte _08014AE0 @ case 1 + .4byte _08014AF0 @ case 2 + .4byte _08014BC0 @ case 3 + .4byte _08014C88 @ case 4 + .4byte _08014CAC @ case 5 + .4byte _08014D0C @ case 6 + .4byte _08014D68 @ case 7 + .4byte _08014D0C @ case 8 + .4byte _08014D42 @ case 9 + .4byte _08014D0C @ case 10 + .4byte _08014D8C @ case 11 + .4byte _08014D98 @ case 12 +_08014AAC: + ldrb r0, [r7, #0x12] + adds r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011748 + movs r0, #0x70 + bl sub_08000BDC + str r0, [r7, #4] + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r7] + movs r0, #1 + strb r0, [r7, #8] + b _08014DA8 +_08014AE0: + ldr r0, _08014AEC + bl sub_0801832C + movs r0, #2 + strb r0, [r7, #8] + b _08014DA8 + .align 2, 0 +_08014AEC: .4byte gUnknown_82C19CC +_08014AF0: + ldr r0, [r7, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r7] + movs r1, #0x10 + bl sub_08017044 + ldr r0, [r7, #4] + ldrb r1, [r7, #0x12] + adds r1, #7 + bl sub_08016AD0 + movs r6, #0 + strb r0, [r7, #0x11] + ldr r0, _08014BA8 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + bl sub_08019328 + lsls r0, r0, #0x10 + ldr r2, _08014BAC + ldr r1, [sp, #4] + ands r1, r2 + orrs r1, r0 + ldr r5, _08014BB0 + ands r1, r5 + movs r4, #0xc0 + lsls r4, r4, #4 + orrs r1, r4 + str r1, [sp, #4] + mov r0, sp + bl sub_08003250 + strb r0, [r7, #0xb] + ldr r0, _08014BB4 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, sp, #8 + ldr r1, [r0, #4] + ands r1, r5 + orrs r1, r4 + str r1, [r0, #4] + bl sub_08003250 + strb r0, [r7, #0xd] + ldrb r0, [r7, #0xb] + bl sub_0801822C + ldr r0, _08014BB8 + adds r2, r0, #0 + ldr r1, _08014BBC + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldrb r1, [r7, #0xb] + strb r1, [r0, #0x10] + movs r1, #0 + movs r2, #0 + bl sub_081AE25C + strb r0, [r7, #0xe] + ldrb r0, [r7, #0xd] + bl sub_0801822C + ldrb r0, [r7, #0xd] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r7, #0xd] + bl sub_0800365C + ldrb r0, [r7, #0xd] + bl sub_080120A8 + ldrb r0, [r7, #0xd] + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + strb r6, [r7, #0xf] + movs r0, #3 + strb r0, [r7, #8] + b _08014DA8 + .align 2, 0 +_08014BA8: .4byte gUnknown_82C207C +_08014BAC: .4byte 0x0000FFFF +_08014BB0: .4byte 0xFFFF00FF +_08014BB4: .4byte gUnknown_82C2084 +_08014BB8: .4byte gUnknown_3006050 +_08014BBC: .4byte gUnknown_82C210C +_08014BC0: + bl sub_0801394C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08014BDE + cmp r2, #1 + bne _08014BD6 + movs r0, #2 + bl sub_080A306C +_08014BD6: + ldrb r0, [r7, #0xe] + bl sub_081AE3E4 + b _08014DA8 +_08014BDE: + ldrb r0, [r7, #0xe] + bl sub_081AE2DC + adds r2, r0, #0 + ldr r0, _08014C60 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08014C70 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _08014C70 + ldr r0, [r7] + lsls r1, r2, #5 + adds r0, r0, r1 + ldrb r1, [r0, #0xa] + ldrb r0, [r0, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08014C68 + lsrs r0, r1, #7 + cmp r0, #0 + bne _08014C68 + strb r2, [r7, #0xf] + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + ldrb r0, [r7, #0xe] + bl sub_081AE3E4 + ldr r0, _08014C64 + ldrb r2, [r7, #0xf] + lsls r2, r2, #5 + ldr r1, [r7] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_080088B8 + ldrb r1, [r7, #0xf] + lsls r1, r1, #5 + ldr r0, [r7] + adds r0, r0, r1 + adds r4, r0, #0 + adds r4, #0x10 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08011AB4 + movs r0, #0x6e + bl sub_080A306C + movs r0, #4 + strb r0, [r7, #8] + b _08014DA8 + .align 2, 0 +_08014C60: .4byte gUnknown_3002360 +_08014C64: .4byte gUnknown_2021C40 +_08014C68: + movs r0, #7 + bl sub_080A306C + b _08014DA8 +_08014C70: + ldr r0, _08014C84 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08014C7E + b _08014DA8 +_08014C7E: + movs r0, #6 + strb r0, [r7, #8] + b _08014DA8 + .align 2, 0 +_08014C84: .4byte gUnknown_3002360 +_08014C88: + ldr r0, _08014CA4 + bl sub_0801832C + ldr r0, _08014CA8 + ldrb r2, [r7, #0xf] + lsls r2, r2, #5 + ldr r1, [r7] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_080088B8 + movs r0, #5 + strb r0, [r7, #8] + b _08014DA8 + .align 2, 0 +_08014CA4: .4byte gUnknown_82C1C80 +_08014CA8: .4byte gUnknown_2021C40 +_08014CAC: + ldr r0, _08014CE4 + ldrb r0, [r0] + cmp r0, #0 + beq _08014CCA + ldr r2, _08014CE8 + ldr r1, [r7] + ldrb r0, [r7, #0xf] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + strb r0, [r2] + movs r0, #0xa + strb r0, [r7, #8] +_08014CCA: + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + beq _08014CF6 + cmp r0, #5 + bgt _08014CEC + cmp r0, #2 + bgt _08014DA8 + cmp r0, #1 + blt _08014DA8 + b _08014CF0 + .align 2, 0 +_08014CE4: .4byte gUnknown_30031C4 +_08014CE8: .4byte gUnknown_20228E0 +_08014CEC: + cmp r0, #6 + bne _08014DA8 +_08014CF0: + movs r0, #8 + strb r0, [r7, #8] + b _08014DA8 +_08014CF6: + ldr r0, _08014D08 + bl sub_0801832C + movs r0, #0 + movs r1, #0 + bl sub_08011554 + b _08014DA8 + .align 2, 0 +_08014D08: .4byte gUnknown_82C09F8 +_08014D0C: + ldrb r0, [r7, #0xe] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r7, #0xd] + bl sub_08003444 + ldrb r0, [r7, #0xb] + bl sub_08003444 + ldrb r0, [r7, #0x11] + bl sub_080A8964 + ldr r0, [r7] + bl sub_08000BF0 + ldr r0, [r7, #4] + bl sub_08000BF0 + ldrb r0, [r7, #8] + adds r0, #1 + strb r0, [r7, #8] + b _08014DA8 +_08014D42: + adds r5, r7, #0 + adds r5, #9 + ldr r4, _08014D64 + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080183A4 + cmp r0, #0 + beq _08014DA8 + bl sub_0800DB50 + b _08014D72 + .align 2, 0 +_08014D64: .4byte gUnknown_82C0B1C +_08014D68: + bl sub_0800DB50 + ldr r0, _08014D84 + bl sub_0801832C +_08014D72: + adds r0, r6, #0 + bl sub_080A8964 + bl sub_0800E894 + ldr r1, _08014D88 + movs r0, #5 + strh r0, [r1] + b _08014DA8 + .align 2, 0 +_08014D84: .4byte gUnknown_82C064C +_08014D88: .4byte gUnknown_2037290 +_08014D8C: + ldrb r0, [r7, #8] + adds r0, #1 + strb r0, [r7, #8] + bl sub_0800A8D4 + b _08014DA8 +_08014D98: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08014DA8 + adds r0, r6, #0 + bl sub_080A8964 +_08014DA8: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08014A50 + + thumb_func_start sub_08014DB0 +sub_08014DB0: @ 0x08014DB0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08014DE8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08014DEC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08014DF0 + adds r1, r1, r0 + str r1, [r2] + ldr r0, _08014DF4 + str r1, [r0] + movs r2, #0 + strb r2, [r1, #8] + strb r2, [r1, #9] + subs r4, #6 + strb r4, [r1, #0x12] + ldr r0, _08014DF8 + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08014DE8: .4byte sub_08014DFC +_08014DEC: .4byte gUnknown_20228E4 +_08014DF0: .4byte gUnknown_3005B68 +_08014DF4: .4byte gUnknown_3000DA4 +_08014DF8: .4byte gUnknown_2037290 + thumb_func_end sub_08014DB0 + + thumb_func_start sub_08014DFC +sub_08014DFC: @ 0x08014DFC + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08014E1C + ldr r5, [r0] + ldrb r0, [r5, #8] + cmp r0, #0xe + bls _08014E10 + b _0801510C +_08014E10: + lsls r0, r0, #2 + ldr r1, _08014E20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08014E1C: .4byte gUnknown_20228E4 +_08014E20: .4byte _08014E24 +_08014E24: @ jump table + .4byte _08014E60 @ case 0 + .4byte _08014E8E @ case 1 + .4byte _08014EA0 @ case 2 + .4byte _08014F28 @ case 3 + .4byte _08014FE8 @ case 4 + .4byte _0801500C @ case 5 + .4byte _0801506C @ case 6 + .4byte _080150B0 @ case 7 + .4byte _0801506C @ case 8 + .4byte _080150A2 @ case 9 + .4byte _0801506C @ case 10 + .4byte _080150BC @ case 11 + .4byte _0801506C @ case 12 + .4byte _080150F0 @ case 13 + .4byte _080150FC @ case 14 +_08014E60: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011748 + movs r0, #0x70 + bl sub_08000BDC + str r0, [r5, #4] + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r5] + movs r0, #1 + strb r0, [r5, #8] + b _0801510C +_08014E8E: + ldr r0, _08014E9C + bl sub_0801832C + movs r0, #2 + strb r0, [r5, #8] + b _0801510C + .align 2, 0 +_08014E9C: .4byte gUnknown_82C1C3C +_08014EA0: + ldr r0, [r5, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r5] + movs r1, #0x10 + bl sub_08017044 + ldr r0, [r5, #4] + ldrb r1, [r5, #0x12] + adds r1, #7 + bl sub_08016B00 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _08014F0C + ldr r0, _08014F18 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + bl sub_08019328 + lsls r0, r0, #0x10 + ldr r2, _08014F1C + ldr r1, [sp, #4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, #4] + mov r0, sp + bl sub_08003250 + strb r0, [r5, #0xb] + ldrb r0, [r5, #0xb] + bl sub_0801822C + ldr r0, _08014F20 + adds r2, r0, #0 + ldr r1, _08014F24 + 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_081AE25C + strb r0, [r5, #0xe] + movs r0, #0 + bl sub_08002248 +_08014F0C: + movs r0, #0 + strb r0, [r5, #0xf] + movs r0, #3 + strb r0, [r5, #8] + b _0801510C + .align 2, 0 +_08014F18: .4byte gUnknown_82C207C +_08014F1C: .4byte 0x0000FFFF +_08014F20: .4byte gUnknown_3006050 +_08014F24: .4byte gUnknown_82C210C +_08014F28: + bl sub_0801394C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08014F4E + cmp r0, #1 + bne _08014F3E + movs r0, #2 + bl sub_080A306C +_08014F3E: + ldrb r0, [r5, #0x13] + cmp r0, #0 + bne _08014F46 + b _0801510C +_08014F46: + ldrb r0, [r5, #0xe] + bl sub_081AE3E4 + b _0801510C +_08014F4E: + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _08014F5A + ldrb r0, [r5, #0xe] + bl sub_081AE2DC +_08014F5A: + ldrb r0, [r5, #0x14] + cmp r0, #0x78 + bls _08014FC8 + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08014FDC + ldrb r1, [r2, #0xa] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08014FDC + ldrb r1, [r5, #0x12] + adds r1, #7 + adds r0, r2, #0 + bl sub_08016A2C + cmp r0, #0 + beq _08014FBC + strb r4, [r5, #0xf] + strb r4, [r5, #0x14] + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + ldr r0, [r5] + adds r4, r0, #0 + adds r4, #0x10 + adds r0, #2 + bl sub_08015160 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08011AB4 + movs r0, #0x6e + bl sub_080A306C + movs r0, #4 + strb r0, [r5, #8] + b _08014FDC +_08014FBC: + movs r0, #0x16 + bl sub_080A306C + movs r0, #0xa + strb r0, [r5, #8] + b _08014FDC +_08014FC8: + ldr r0, _08014FE4 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08014FDC + movs r1, #0 + movs r0, #6 + strb r0, [r5, #8] + strb r1, [r5, #0x14] +_08014FDC: + ldrb r0, [r5, #0x14] + adds r0, #1 + strb r0, [r5, #0x14] + b _0801510C + .align 2, 0 +_08014FE4: .4byte gUnknown_3002360 +_08014FE8: + ldr r0, _08015004 + bl sub_0801832C + ldr r0, _08015008 + ldrb r2, [r5, #0xf] + lsls r2, r2, #5 + ldr r1, [r5] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_080088B8 + movs r0, #5 + strb r0, [r5, #8] + b _0801510C + .align 2, 0 +_08015004: .4byte gUnknown_82C1CB8 +_08015008: .4byte gUnknown_2021C40 +_0801500C: + ldr r0, _08015044 + ldrb r0, [r0] + cmp r0, #0 + beq _0801502A + ldr r2, _08015048 + ldr r1, [r5] + ldrb r0, [r5, #0xf] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + strb r0, [r2] + movs r0, #0xc + strb r0, [r5, #8] +_0801502A: + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + beq _08015056 + cmp r0, #5 + bgt _0801504C + cmp r0, #2 + bgt _0801510C + cmp r0, #1 + blt _0801510C + b _08015050 + .align 2, 0 +_08015044: .4byte gUnknown_30031C4 +_08015048: .4byte gUnknown_20228E0 +_0801504C: + cmp r0, #6 + bne _0801510C +_08015050: + movs r0, #8 + strb r0, [r5, #8] + b _0801510C +_08015056: + ldr r0, _08015068 + bl sub_0801832C + movs r0, #0 + movs r1, #0 + bl sub_08011554 + b _0801510C + .align 2, 0 +_08015068: .4byte gUnknown_82C0AAC +_0801506C: + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _08015088 + ldrb r0, [r5, #0xe] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08002248 + ldrb r0, [r5, #0xb] + bl sub_08003444 +_08015088: + ldrb r0, [r5, #0x11] + bl sub_080A8964 + ldr r0, [r5] + bl sub_08000BF0 + ldr r0, [r5, #4] + bl sub_08000BF0 + ldrb r0, [r5, #8] + adds r0, #1 + strb r0, [r5, #8] + b _0801510C +_080150A2: + adds r0, r5, #0 + adds r0, #9 + ldr r1, _080150AC + b _080150CA + .align 2, 0 +_080150AC: .4byte gUnknown_82C0AC8 +_080150B0: + adds r0, r5, #0 + adds r0, #9 + ldr r1, _080150B8 + b _080150CA + .align 2, 0 +_080150B8: .4byte gUnknown_82C066C +_080150BC: + adds r0, r5, #0 + adds r0, #9 + ldr r2, _080150E8 + ldrb r1, [r5, #0x12] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] +_080150CA: + bl sub_080183A4 + cmp r0, #0 + beq _0801510C + bl sub_0800DB50 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_0800E894 + ldr r1, _080150EC + movs r0, #5 + strh r0, [r1] + b _0801510C + .align 2, 0 +_080150E8: .4byte gUnknown_82C1D30 +_080150EC: .4byte gUnknown_2037290 +_080150F0: + ldrb r0, [r5, #8] + adds r0, #1 + strb r0, [r5, #8] + bl sub_0800A8D4 + b _0801510C +_080150FC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801510C + adds r0, r4, #0 + bl sub_080A8964 +_0801510C: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08014DFC + + thumb_func_start sub_08015114 +sub_08015114: @ 0x08015114 + push {r4, lr} + bl sub_08010A50 + ldr r0, _08015150 + movs r1, #0xa + bl sub_080A8878 + ldr r4, _08015154 + movs r0, #0x89 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + ldr r1, _08015158 + str r0, [r1] + movs r1, #0 + strb r1, [r0, #0x14] + strb r1, [r0, #0x16] + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _0801515C + strh r1, [r0] + movs r0, #0xd0 + movs r1, #1 + bl sub_08199F54 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08015150: .4byte sub_080151E8 +_08015154: .4byte gUnknown_20228E4 +_08015158: .4byte gUnknown_3000DA8 +_0801515C: .4byte gUnknown_2037290 + thumb_func_end sub_08015114 + + thumb_func_start sub_08015160 +sub_08015160: @ 0x08015160 + ldrb r1, [r0, #1] + lsls r1, r1, #8 + ldrb r0, [r0] + orrs r0, r1 + bx lr + .align 2, 0 + thumb_func_end sub_08015160 + + thumb_func_start sub_0801516C +sub_0801516C: @ 0x0801516C + push {lr} + adds r3, r1, #0 + ldr r1, _0801518C + ldr r2, [r1] + movs r1, #8 + strb r1, [r2, #0x14] + strb r0, [r2, #0x15] + ldr r0, _08015190 + cmp r3, r0 + beq _08015186 + adds r1, r3, #0 + bl sub_08008BCC +_08015186: + pop {r0} + bx r0 + .align 2, 0 +_0801518C: .4byte gUnknown_20228E4 +_08015190: .4byte gUnknown_2021C7C + thumb_func_end sub_0801516C + + thumb_func_start sub_08015194 +sub_08015194: @ 0x08015194 + push {lr} + adds r2, r0, #0 + ldr r0, _080151B0 + ldr r1, [r0] + movs r0, #0x1a + strb r0, [r1, #0x14] + ldr r0, _080151B4 + cmp r2, r0 + beq _080151AC + adds r1, r2, #0 + bl sub_08008BCC +_080151AC: + pop {r0} + bx r0 + .align 2, 0 +_080151B0: .4byte gUnknown_20228E4 +_080151B4: .4byte gUnknown_2021C7C + thumb_func_end sub_08015194 + + thumb_func_start sub_080151B8 +sub_080151B8: @ 0x080151B8 + push {lr} + ldr r3, _080151CC + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r3, #0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_080151CC: .4byte gUnknown_201FF00 + thumb_func_end sub_080151B8 + + thumb_func_start sub_080151D0 +sub_080151D0: @ 0x080151D0 + push {lr} + ldr r0, [r0] + ldr r1, _080151E4 + movs r2, #0x80 + lsls r2, r2, #1 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_080151E4: .4byte gUnknown_201FF00 + thumb_func_end sub_080151D0 + + thumb_func_start sub_080151E8 +sub_080151E8: @ 0x080151E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + ldr r0, _08015214 + ldr r6, [r0] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08015218 + adds r7, r0, r1 + ldrb r0, [r6, #0x14] + cmp r0, #0x38 + bls _0801520A + bl _0801638C +_0801520A: + lsls r0, r0, #2 + ldr r1, _0801521C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08015214: .4byte gUnknown_20228E4 +_08015218: .4byte gUnknown_3005B68 +_0801521C: .4byte _08015220 +_08015220: @ jump table + .4byte _08015304 @ case 0 + .4byte _0801535C @ case 1 + .4byte _08015380 @ case 2 + .4byte _080153D0 @ case 3 + .4byte _080154AE @ case 4 + .4byte _08015964 @ case 5 + .4byte _0801575C @ case 6 + .4byte _08015964 @ case 7 + .4byte _08016378 @ case 8 + .4byte _08015CD4 @ case 9 + .4byte _08015DE0 @ case 10 + .4byte _08015BB4 @ case 11 + .4byte _08015BCE @ case 12 + .4byte _08015E30 @ case 13 + .4byte _08015E54 @ case 14 + .4byte _08015E5C @ case 15 + .4byte _08015E6C @ case 16 + .4byte _08015E9A @ case 17 + .4byte _08015EAE @ case 18 + .4byte _08015A3A @ case 19 + .4byte _08015AC0 @ case 20 + .4byte _08015ADE @ case 21 + .4byte _08015B52 @ case 22 + .4byte _080155E2 @ case 23 + .4byte _08015608 @ case 24 + .4byte _08015680 @ case 25 + .4byte _0801634C @ case 26 + .4byte _08015854 @ case 27 + .4byte _0801583C @ case 28 + .4byte _080158D8 @ case 29 + .4byte _08015732 @ case 30 + .4byte _080158AE @ case 31 + .4byte _080158A4 @ case 32 + .4byte _08015C64 @ case 33 + .4byte _08015C84 @ case 34 + .4byte _08015CC4 @ case 35 + .4byte _08015DE8 @ case 36 + .4byte _08015E24 @ case 37 + .4byte _080156FC @ case 38 + .4byte _08015C10 @ case 39 + .4byte _0801599C @ case 40 + .4byte _080159CC @ case 41 + .4byte _08015ED8 @ case 42 + .4byte _08015F6C @ case 43 + .4byte _080160B8 @ case 44 + .4byte _08016120 @ case 45 + .4byte _0801613C @ case 46 + .4byte _08015F88 @ case 47 + .4byte _08016144 @ case 48 + .4byte _0801624C @ case 49 + .4byte _08016280 @ case 50 + .4byte _08016308 @ case 51 + .4byte _0801603C @ case 52 + .4byte _08015FF0 @ case 53 + .4byte _08016004 @ case 54 + .4byte _0801609C @ case 55 + .4byte _080160EC @ case 56 +_08015304: + movs r0, #0x70 + bl sub_08000BDC + str r0, [r6, #4] + movs r0, #0x70 + bl sub_08000BDC + str r0, [r6, #0xc] + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r6] + movs r0, #0x20 + bl sub_08000BDC + str r0, [r6, #8] + ldr r0, [r6] + movs r1, #8 + bl sub_08017044 + ldr r1, _08015358 + movs r0, #0x40 + strb r0, [r1] + ldr r0, [r6, #0xc] + ldr r1, [r6, #4] + movs r2, #9 + bl sub_08016900 + adds r1, r6, #0 + adds r1, #0x20 + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x88 + bl sub_080195B4 + bl sub_080199C8 + movs r0, #1 + bl _0801638A + .align 2, 0 +_08015358: .4byte gUnknown_20228E0 +_0801535C: + adds r0, r6, #0 + adds r0, #0x21 + movs r2, #0 + ldrsh r1, [r7, r2] + bl sub_0801990C + ldrh r0, [r7] + adds r0, #1 + strh r0, [r7] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + beq _0801537A + bl _0801638C +_0801537A: + movs r0, #2 + bl _0801638A +_08015380: + movs r0, #0x40 + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + ldr r2, _080153C8 + ldrh r0, [r2, #2] + ldrh r1, [r2, #0xa] + ldrh r2, [r2, #0xc] + bl sub_08010ABC + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011770 + ldr r0, [r6, #8] + movs r1, #1 + bl sub_08017044 + ldr r0, [r6, #4] + movs r1, #4 + bl sub_080170B0 + ldr r0, [r6, #0xc] + movs r1, #4 + bl sub_080170B0 + ldr r1, _080153CC + movs r0, #0 + strh r0, [r1] + movs r0, #3 + bl _0801638A + .align 2, 0 +_080153C8: .4byte gUnknown_20228F4 +_080153CC: .4byte gUnknown_2037290 +_080153D0: + bl sub_081B1030 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + beq _080153E8 + bl sub_081B1030 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bne _080154A8 +_080153E8: + ldr r4, _08015404 + ldrh r0, [r4] + cmp r0, #0 + beq _080154A8 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4] + cmp r0, #1 + beq _08015408 + cmp r0, #2 + beq _08015458 + b _08015496 + .align 2, 0 +_08015404: .4byte gUnknown_20228F4 +_08015408: + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + cmp r5, #5 + bls _08015434 + adds r0, r4, #0 + bl sub_08017B38 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010ABC + ldr r0, _08015430 + bl sub_08015194 + b _08015496 + .align 2, 0 +_08015430: .4byte gUnknown_82C1808 +_08015434: + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_08017B5C + cmp r0, #0 + bne _08015454 + ldr r1, _08015450 + movs r0, #0x34 + bl sub_0801516C + b _08015496 + .align 2, 0 +_08015450: .4byte gUnknown_82C17CC +_08015454: + movs r0, #0x37 + b _08015494 +_08015458: + adds r0, r6, #0 + bl sub_080151D0 + ldrb r0, [r4, #8] + strh r0, [r7, #2] + cmp r5, #5 + bls _08015474 + ldr r0, _08015470 + bl sub_08015194 + b _08015496 + .align 2, 0 +_08015470: .4byte gUnknown_82C1830 +_08015474: + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + ldr r1, _080154A0 + movs r0, #0x44 + strb r0, [r1] + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_08017BA4 + movs r0, #0x33 +_08015494: + strb r0, [r6, #0x14] +_08015496: + ldr r1, _080154A4 + movs r0, #0 + strh r0, [r1] + bl _0801638C + .align 2, 0 +_080154A0: .4byte gUnknown_20228E0 +_080154A4: .4byte gUnknown_20228F4 +_080154A8: + movs r0, #4 + bl _0801638A +_080154AE: + ldr r4, _080154DC + ldrh r0, [r4] + cmp r0, #0 + beq _08015512 + cmp r0, #9 + bne _080154E8 + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + movs r0, #2 + bl sub_080A306C + ldr r0, _080154E0 + ldr r1, _080154E4 + ldr r1, [r1] + bl sub_080088B8 + movs r1, #0 + movs r0, #0x2a + b _0801550A + .align 2, 0 +_080154DC: .4byte gUnknown_2037290 +_080154E0: .4byte gUnknown_2021C40 +_080154E4: .4byte gUnknown_3005AF0 +_080154E8: + cmp r0, #0xb + bne _080154FC + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + movs r1, #0 + movs r0, #0x17 + b _0801550A +_080154FC: + movs r0, #0 + strh r0, [r7] + ldrh r0, [r4] + subs r0, #1 + strh r0, [r7, #2] + movs r1, #0 + movs r0, #0x18 +_0801550A: + strb r0, [r6, #0x14] + strh r1, [r4] + bl _0801638C +_08015512: + bl sub_080987F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08015522 + bl _0801638C +_08015522: + ldr r0, _08015550 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08015588 + ldr r0, [r6] + adds r2, r7, #2 + adds r3, r6, #0 + adds r3, #0x21 + adds r1, r7, #0 + bl sub_08019D60 + cmp r0, #0 + beq _08015554 + movs r0, #5 + bl sub_080A306C + bl sub_08017C88 + movs r0, #0x18 + bl _0801638A + .align 2, 0 +_08015550: .4byte gUnknown_3002360 +_08015554: + bl sub_080173FC + cmp r0, #0 + beq _08015588 + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + movs r0, #2 + bl sub_080A306C + bl sub_08017C88 + ldr r0, _08015580 + ldr r1, _08015584 + ldr r1, [r1] + bl sub_080088B8 + movs r0, #0x2d + bl _0801638A + .align 2, 0 +_08015580: .4byte gUnknown_2021C40 +_08015584: .4byte gUnknown_3005AF0 +_08015588: + bl sub_08016610 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080155AA + cmp r0, #2 + bgt _0801559E + cmp r0, #1 + beq _080155A4 + b _080155D8 +_0801559E: + cmp r0, #4 + beq _080155B2 + b _080155D8 +_080155A4: + movs r0, #2 + bl sub_080A306C +_080155AA: + adds r0, r6, #0 + bl sub_08019D2C + b _080155D8 +_080155B2: + movs r0, #0xb + strb r0, [r6, #0x14] + bl sub_08017C88 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010ABC + adds r0, r6, #0 + bl sub_08017C98 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x53 + movs r2, #0 + bl sub_08010B80 +_080155D8: + adds r0, r6, #0 + bl sub_08019D3C + bl _0801638C +_080155E2: + ldr r0, _08015604 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080155F2 + bl _0801638C +_080155F2: + movs r0, #0x40 + movs r1, #0 + movs r2, #0 + bl sub_08010B80 + movs r0, #4 + bl _0801638A + .align 2, 0 +_08015604: .4byte sub_0809F30C +_08015608: + bl sub_08016B5C + movs r3, #2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + ldr r0, [r6] + ldrb r1, [r7] + ldrb r2, [r7, #2] + adds r3, r4, #0 + bl sub_08017484 + cmp r0, #1 + beq _0801564C + cmp r0, #1 + bgt _0801563E + cmp r0, #0 + beq _08015646 + bl _0801638C +_0801563E: + cmp r0, #2 + beq _08015670 + bl _0801638C +_08015646: + movs r0, #0x1a + bl _0801638A +_0801564C: + movs r1, #2 + ldrsh r0, [r7, r1] + lsls r0, r0, #5 + ldr r1, [r6] + adds r1, r1, r0 + adds r0, r1, #0 + adds r0, #0x10 + ldr r2, _0801566C + ldrb r2, [r2] + bl sub_08011C74 + strh r5, [r6, #0x12] + movs r0, #0x19 + bl _0801638A + .align 2, 0 +_0801566C: .4byte gUnknown_20228E0 +_08015670: + ldr r1, _0801567C + movs r0, #0x13 + bl sub_0801516C + bl _0801638C + .align 2, 0 +_0801567C: .4byte gUnknown_2021C7C +_08015680: + bl sub_08016B5C + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + blt _080156C6 + cmp r4, #2 + ble _080156A2 + cmp r4, #4 + bne _080156C6 + movs r0, #1 + bl sub_08017C48 + strb r4, [r6, #0x14] + b _080156C6 +_080156A2: + bl sub_0801167C + cmp r0, #1 + bne _080156B8 + ldr r0, _080156B4 + bl sub_08015194 + b _080156C0 + .align 2, 0 +_080156B4: .4byte gUnknown_82C0FE0 +_080156B8: + ldr r1, _080156E8 + movs r0, #0x1e + bl sub_0801516C +_080156C0: + ldr r1, _080156EC + movs r0, #0x40 + strb r0, [r1] +_080156C6: + ldr r0, _080156F0 + ldrb r0, [r0] + cmp r0, #0 + bne _080156D2 + bl _0801638C +_080156D2: + ldr r0, _080156F4 + movs r1, #1 + bl sub_08013EEC + ldr r0, _080156F8 + movs r1, #5 + bl sub_080A8878 + movs r0, #0x26 + bl _0801638A + .align 2, 0 +_080156E8: .4byte gUnknown_82C0FE0 +_080156EC: .4byte gUnknown_20228E0 +_080156F0: .4byte gUnknown_30031C4 +_080156F4: .4byte gUnknown_202257C +_080156F8: .4byte sub_08013BE8 +_080156FC: + ldr r0, _08015720 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801570C + bl _0801638C +_0801570C: + ldr r0, _08015724 + ldrb r0, [r0] + cmp r0, #0x44 + bne _0801572C + ldr r1, _08015728 + movs r0, #0x1f + bl sub_0801516C + bl _0801638C + .align 2, 0 +_08015720: .4byte sub_08013BE8 +_08015724: .4byte gUnknown_20228E0 +_08015728: .4byte gUnknown_82C0B80 +_0801572C: + movs r0, #5 + bl _0801638A +_08015732: + ldr r0, _08015758 + ldrb r0, [r0] + cmp r0, #0 + beq _0801573E + bl _0801638C +_0801573E: + movs r0, #0 + bl sub_08017C48 + movs r2, #0 + ldrsh r0, [r7, r2] + movs r3, #2 + ldrsh r1, [r7, r3] + ldr r2, [r6] + bl sub_08019E88 + movs r0, #2 + bl _0801638A + .align 2, 0 +_08015758: .4byte gUnknown_30031C4 +_0801575C: + adds r0, r6, #0 + adds r0, #0x16 + adds r1, r6, #0 + adds r1, #0x1b + adds r2, r6, #0 + adds r2, #0x1c + ldr r3, _08015790 + ldr r4, _08015794 + str r4, [sp] + bl sub_08016C88 + adds r5, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _08015780 + bl _0801638C +_08015780: + ldr r0, _08015798 + ldrb r0, [r0] + cmp r0, #0 + bne _0801579C + movs r0, #0x1c + bl _0801638A + .align 2, 0 +_08015790: .4byte gUnknown_82C2124 +_08015794: .4byte gUnknown_82C214C +_08015798: .4byte gUnknown_30031C4 +_0801579C: + adds r1, r6, #0 + adds r1, #0x80 + movs r0, #0 + strh r0, [r1] + movs r2, #2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_080177B8 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _080157BA + cmp r5, #0x40 + bne _080157EC +_080157BA: + adds r0, r6, #0 + adds r0, #0x4c + movs r1, #0x40 + strh r1, [r0] + bl sub_0800F934 + ldr r0, _080157E0 + ldr r2, _080157E4 + ldr r1, _080157E8 + ldrb r1, [r1, #0x13] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + movs r0, #0x20 + bl _0801638A + .align 2, 0 +_080157E0: .4byte gUnknown_2021C7C +_080157E4: .4byte gUnknown_82C12BC +_080157E8: .4byte gUnknown_20226A0 +_080157EC: + ldr r0, _08015814 + strb r5, [r0] + ldr r1, _08015818 + lsrs r0, r5, #8 + strb r0, [r1] + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x41 + bne _08015820 + bl sub_08017AE0 + cmp r0, #0 + bne _08015820 + ldr r1, _0801581C + movs r0, #5 + bl sub_0801516C + bl _0801638C + .align 2, 0 +_08015814: .4byte gUnknown_20228E0 +_08015818: .4byte gUnknown_20228E1 +_0801581C: .4byte gUnknown_82C12E4 +_08015820: + ldr r0, _08015838 + ldrb r0, [r0] + movs r1, #0x40 + orrs r1, r0 + adds r0, r6, #0 + adds r0, #0x4c + strh r1, [r0] + bl sub_0800F934 + movs r0, #0x1b + bl _0801638A + .align 2, 0 +_08015838: .4byte gUnknown_20228E0 +_0801583C: + ldr r0, _0801584C + ldr r1, _08015850 + bl sub_080088B8 + movs r0, #0x24 + bl _0801638A + .align 2, 0 +_0801584C: .4byte gUnknown_2021C7C +_08015850: .4byte gUnknown_82C12C4 +_08015854: + adds r0, r6, #0 + bl sub_08017A94 + movs r3, #2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + adds r0, r6, #0 + adds r0, #0x4c + ldrh r1, [r0] + movs r0, #0x3f + ands r0, r1 + bl sub_08017440 + adds r5, r0, #0 + adds r0, r6, #0 + adds r0, #0x16 + ldr r3, _080158A0 + lsls r1, r5, #2 + lsls r2, r4, #4 + adds r1, r1, r2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08015894 + bl _0801638C +_08015894: + movs r0, #0 + strh r0, [r7, #6] + movs r0, #0x1d + bl _0801638A + .align 2, 0 +_080158A0: .4byte gUnknown_82C10A4 +_080158A4: + bl sub_0800A7F8 + movs r0, #0x24 + bl _0801638A +_080158AE: + adds r0, r6, #0 + adds r0, #0x4c + movs r1, #0x44 + strh r1, [r0] + ldr r2, _080158D4 + 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_0800F934 + movs r0, #0x1d + bl _0801638A + .align 2, 0 +_080158D4: .4byte gUnknown_20228F4 +_080158D8: + ldr r0, _080158F0 + ldrb r0, [r0] + cmp r0, #0 + bne _080158FC + ldr r0, _080158F4 + ldr r1, _080158F8 + bl sub_080088B8 + movs r0, #0x1c + bl _0801638A + .align 2, 0 +_080158F0: .4byte gUnknown_30031C4 +_080158F4: .4byte gUnknown_2021C7C +_080158F8: .4byte gUnknown_82C12C4 +_080158FC: + adds r0, r6, #0 + bl sub_08017A94 + adds r0, r6, #0 + adds r0, #0x80 + ldrh r0, [r0] + cmp r0, #0x51 + bne _08015932 + ldr r0, _08015924 + ldrb r0, [r0] + cmp r0, #8 + bne _0801592C + ldr r0, _08015928 + adds r1, r6, #0 + movs r2, #0 + bl sub_08017CDC + movs r0, #0x28 + bl _0801638A + .align 2, 0 +_08015924: .4byte gUnknown_20228E0 +_08015928: .4byte gUnknown_2021C7C +_0801592C: + movs r0, #0xd + bl _0801638A +_08015932: + cmp r0, #0x52 + beq _0801593A + bl _0801638C +_0801593A: + movs r5, #0 + movs r0, #0x20 + strb r0, [r6, #0x14] + ldr r0, _08015958 + ldr r4, _0801595C + ldrb r2, [r4] + movs r1, #0x40 + orrs r1, r2 + ldr r2, _08015960 + ldrb r2, [r2, #0x13] + bl sub_0801785C + strb r5, [r4] + bl _0801638C + .align 2, 0 +_08015958: .4byte gUnknown_2021C7C +_0801595C: .4byte gUnknown_20228E0 +_08015960: .4byte gUnknown_20226A0 +_08015964: + movs r0, #2 + ldrsh r1, [r7, r0] + lsls r1, r1, #5 + ldr r0, [r6] + adds r0, r0, r1 + bl sub_08017468 + adds r5, r0, #0 + movs r1, #2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + ldr r2, _08015998 + lsls r0, r4, #2 + lsls r1, r5, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #6 + bl sub_0801516C + bl _0801638C + .align 2, 0 +_08015998: .4byte gUnknown_82C0D3C +_0801599C: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _080159C8 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080159B0 + bl _0801638C +_080159B0: + movs r4, #0 + movs r0, #0x29 + strb r0, [r6, #0x14] + bl sub_0800A8D4 + adds r0, r6, #0 + adds r0, #0x80 + strh r4, [r0] + adds r0, #2 + strh r4, [r0] + bl _0801638C + .align 2, 0 +_080159C8: .4byte gUnknown_2021C7C +_080159CC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080159DA + bl _0801638C +_080159DA: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08015A34 + ldr r5, _08015A24 + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r4, _08015A28 + adds r1, r1, r4 + adds r0, r5, #0 + bl sub_080088B8 + ldrh r0, [r4, #0x18] + adds r4, #0x1c + adds r1, r4, #0 + bl sub_0800E004 + adds r5, r0, #0 + ldr r0, _08015A2C + ldr r2, _08015A30 + lsls r1, r5, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08008BCC + movs r0, #0x21 + bl _0801638A + .align 2, 0 +_08015A24: .4byte gUnknown_2021C40 +_08015A28: .4byte gUnknown_20226A8 +_08015A2C: .4byte gUnknown_2021C7C +_08015A30: .4byte gUnknown_82C0DE4 +_08015A34: + movs r0, #7 + bl _0801638A +_08015A3A: + adds r0, r6, #0 + adds r0, #0x16 + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r5, r0, #0x18 + cmp r5, #0 + beq _08015A64 + cmp r5, #0 + bgt _08015A5C + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _08015AA0 + bl _0801638C +_08015A5C: + cmp r5, #1 + beq _08015AA0 + bl _0801638C +_08015A64: + movs r0, #0 + bl sub_08002248 + ldr r4, _08015A9C + movs r0, #0x45 + strb r0, [r4] + movs r0, #0x45 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + movs r2, #2 + ldrsh r0, [r7, r2] + lsls r0, r0, #5 + ldr r1, [r6] + adds r1, r1, r0 + adds r0, r1, #0 + adds r0, #0x10 + ldrb r2, [r4] + bl sub_08011C74 + ldrh r0, [r7, #2] + strh r0, [r6, #0x12] + movs r0, #0x14 + strb r0, [r6, #0x14] + strh r5, [r7, #6] + bl _0801638C + .align 2, 0 +_08015A9C: .4byte gUnknown_20228E0 +_08015AA0: + movs r3, #2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + ldr r1, _08015ABC + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08015194 + bl _0801638C + .align 2, 0 +_08015ABC: .4byte gUnknown_82C1364 +_08015AC0: + ldrh r0, [r7, #4] + adds r0, #1 + strh r0, [r7, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + bgt _08015AD2 + bl _0801638C +_08015AD2: + movs r1, #0 + movs r0, #0x15 + strb r0, [r6, #0x14] + strh r1, [r7, #4] + bl _0801638C +_08015ADE: + bl sub_08011564 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + beq _08015B44 + cmp r4, #3 + ble _08015AFC + cmp r4, #4 + bne _08015B48 + movs r0, #1 + bl sub_08017C48 + strb r4, [r6, #0x14] + b _08015B48 +_08015AFC: + cmp r4, #1 + blt _08015B48 + movs r1, #2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + bl sub_0801167C + cmp r0, #1 + bne _08015B30 + ldr r0, _08015B2C + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08015194 + b _08015B48 + .align 2, 0 +_08015B2C: .4byte gUnknown_82C13C4 +_08015B30: + ldr r0, _08015B40 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #0x1e + bl sub_0801516C + b _08015B48 + .align 2, 0 +_08015B40: .4byte gUnknown_82C13C4 +_08015B44: + movs r0, #0x16 + strb r0, [r6, #0x14] +_08015B48: + ldrh r0, [r7, #6] + adds r0, #1 + strh r0, [r7, #6] + bl _0801638C +_08015B52: + bl sub_08011570 + cmp r0, #0 + beq _08015B9A + movs r2, #2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_080177B8 + adds r4, r0, #0 + movs r0, #0x54 + movs r1, #0 + movs r2, #1 + bl sub_08010B80 + bl sub_0801167C + cmp r0, #1 + bne _08015B8C + ldr r0, _08015B88 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08015194 + b _08015B9A + .align 2, 0 +_08015B88: .4byte gUnknown_82C13C4 +_08015B8C: + ldr r0, _08015BAC + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #0x1e + bl sub_0801516C +_08015B9A: + ldr r0, _08015BB0 + ldrb r0, [r0] + cmp r0, #0 + bne _08015BA6 + bl _0801638C +_08015BA6: + movs r0, #0x10 + bl _0801638A + .align 2, 0 +_08015BAC: .4byte gUnknown_82C13C4 +_08015BB0: .4byte gUnknown_30031C4 +_08015BB4: + movs r0, #0x49 + bl sub_080A306C + bl sub_0800EA3C + movs r0, #0 + movs r1, #0xc + strb r1, [r6, #0x14] + adds r1, r6, #0 + adds r1, #0x82 + strh r0, [r1] + bl _0801638C +_08015BCE: + bl sub_08011570 + cmp r0, #0 + beq _08015BE2 + movs r0, #0 + bl sub_08017C48 + movs r0, #2 + bl _0801638A +_08015BE2: + ldr r0, _08015C04 + ldrb r0, [r0] + cmp r0, #0 + bne _08015BEE + bl _0801638C +_08015BEE: + ldr r0, _08015C08 + movs r1, #1 + bl sub_08013EEC + ldr r0, _08015C0C + movs r1, #5 + bl sub_080A8878 + movs r0, #0x27 + b _0801638A + .align 2, 0 +_08015C04: .4byte gUnknown_30031C4 +_08015C08: .4byte gUnknown_202257C +_08015C0C: .4byte sub_08013BE8 +_08015C10: + adds r0, r6, #0 + bl sub_080163B0 + ldr r0, _08015C50 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08015C24 + b _0801638C +_08015C24: + movs r0, #0x21 + strb r0, [r6, #0x14] + ldr r0, _08015C54 + ldr r4, _08015C58 + adds r1, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + subs r0, #0x24 + ldrh r0, [r0, #0x20] + adds r1, r4, #0 + bl sub_0800E004 + adds r5, r0, #0 + ldr r0, _08015C5C + ldr r2, _08015C60 + lsls r1, r5, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08008BCC + b _0801638C + .align 2, 0 +_08015C50: .4byte sub_08013BE8 +_08015C54: .4byte gUnknown_2021C40 +_08015C58: .4byte gUnknown_20226C4 +_08015C5C: .4byte gUnknown_2021C7C +_08015C60: .4byte gUnknown_82C0DB8 +_08015C64: + adds r0, r6, #0 + bl sub_080163B0 + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08015C80 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08015C7C + b _0801638C +_08015C7C: + movs r0, #0x22 + b _0801638A + .align 2, 0 +_08015C80: .4byte gUnknown_2021C7C +_08015C84: + adds r0, r6, #0 + bl sub_080163B0 + adds r0, r6, #0 + bl sub_080163F0 + cmp r0, #0 + bne _08015C96 + b _0801638C +_08015C96: + ldr r0, _08015CB8 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08015CA4 + b _0801638C +_08015CA4: + movs r0, #1 + bl sub_080118CC + ldr r0, _08015CBC + ldr r1, _08015CC0 + bl sub_080088B8 + movs r0, #0x24 + b _0801638A + .align 2, 0 +_08015CB8: .4byte gUnknown_3002360 +_08015CBC: .4byte gUnknown_2021C7C +_08015CC0: .4byte gUnknown_82C0F04 +_08015CC4: + ldr r1, _08015CD0 + movs r0, #9 + bl sub_0801516C + b _0801638C + .align 2, 0 +_08015CD0: .4byte gUnknown_2021C7C +_08015CD4: + adds r0, r6, #0 + adds r0, #0x16 + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08015CFA + cmp r1, #0 + bgt _08015CF4 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08015DBA + b _0801638C +_08015CF4: + cmp r1, #1 + beq _08015DBA + b _0801638C +_08015CFA: + adds r0, r6, #0 + adds r0, #0x4c + movs r1, #0x51 + strh r1, [r0] + ldr r1, _08015D28 + ldrb r1, [r1] + adds r5, r0, #0 + cmp r1, #0x45 + bne _08015D2C + movs r4, #0x40 + orrs r4, r1 + movs r0, #1 + bl sub_08010AFC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #0 + bl sub_08010B80 + b _08015D4A + .align 2, 0 +_08015D28: .4byte gUnknown_20228E0 +_08015D2C: + movs r0, #0x40 + adds r4, r1, #0 + orrs r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_08010AFC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #1 + bl sub_08010B80 +_08015D4A: + ldr r1, [r6, #8] + movs r0, #0 + strb r0, [r1, #0x1b] + strh r0, [r7, #6] + ldr r0, _08015D7C + ldrb r0, [r0] + cmp r0, #0x41 + bne _08015D92 + bl sub_08017AE0 + cmp r0, #0 + bne _08015D88 + movs r0, #0x52 + strh r0, [r5] + adds r0, r5, #0 + bl sub_0800F934 + movs r0, #0xa + strb r0, [r6, #0x14] + ldr r0, _08015D80 + ldr r1, _08015D84 + bl sub_080088B8 + b _0801638C + .align 2, 0 +_08015D7C: .4byte gUnknown_20228E0 +_08015D80: .4byte gUnknown_2021C7C +_08015D84: .4byte gUnknown_82C1310 +_08015D88: + adds r0, r5, #0 + bl sub_0800F934 + movs r0, #0xd + b _0801638A +_08015D92: + cmp r0, #0x48 + bne _08015DB0 + adds r0, r5, #0 + bl sub_0800F934 + ldr r0, _08015DAC + adds r1, r6, #0 + movs r2, #1 + bl sub_08017CDC + movs r0, #0x28 + b _0801638A + .align 2, 0 +_08015DAC: .4byte gUnknown_2021C7C +_08015DB0: + adds r0, r5, #0 + bl sub_0800F934 + movs r0, #0xd + b _0801638A +_08015DBA: + adds r0, r6, #0 + adds r0, #0x4c + movs r1, #0x52 + strh r1, [r0] + bl sub_0800F934 + movs r0, #0xa + strb r0, [r6, #0x14] + ldr r0, _08015DD8 + ldr r1, _08015DDC + ldrb r1, [r1] + bl sub_08012B78 + b _0801638C + .align 2, 0 +_08015DD8: .4byte gUnknown_2021C7C +_08015DDC: .4byte gUnknown_20228E0 +_08015DE0: + bl sub_0800A7F8 + movs r0, #0x24 + b _0801638A +_08015DE8: + ldr r0, _08015E18 + ldrb r4, [r0] + cmp r4, #0 + beq _08015DF2 + b _0801638C +_08015DF2: + ldr r1, _08015E1C + movs r0, #0x40 + strb r0, [r1] + ldr r1, _08015E20 + movs r0, #0x25 + bl sub_0801516C + adds r0, r6, #0 + adds r0, #0x4c + movs r1, #0 + movs r2, #0xc + bl memset + adds r0, r6, #0 + adds r0, #0x82 + strh r4, [r0] + subs r0, #2 + strh r4, [r0] + b _0801638C + .align 2, 0 +_08015E18: .4byte gUnknown_30031C4 +_08015E1C: .4byte gUnknown_20228E0 +_08015E20: .4byte gUnknown_2021C7C +_08015E24: + movs r0, #2 + strb r0, [r6, #0x14] + movs r0, #0 + bl sub_08017C48 + b _0801638C +_08015E30: + ldr r4, _08015E4C + ldr r0, _08015E50 + ldrb r0, [r0] + movs r1, #0x40 + orrs r1, r0 + adds r0, r4, #0 + bl sub_080178C0 + movs r0, #0xe + adds r1, r4, #0 + bl sub_0801516C + b _0801638C + .align 2, 0 +_08015E4C: .4byte gUnknown_2021C7C +_08015E50: .4byte gUnknown_20228E0 +_08015E54: + bl sub_0800A8D4 + movs r0, #0xf + b _0801638A +_08015E5C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08015E68 + b _0801638C +_08015E68: + movs r0, #0x10 + b _0801638A +_08015E6C: + ldr r0, [r6, #8] + bl sub_08000BF0 + ldr r0, [r6] + bl sub_08000BF0 + ldr r0, [r6, #0xc] + bl sub_08000BF0 + ldr r0, [r6, #4] + bl sub_08000BF0 + adds r0, r6, #0 + adds r0, #0x20 + ldrb r0, [r0] + bl sub_080A8964 + adds r0, r6, #0 + adds r0, #0x21 + bl sub_080199A0 + movs r0, #0x11 + b _0801638A +_08015E9A: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #0x12 + b _0801638A +_08015EAE: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08015EBA + b _0801638C +_08015EBA: + bl sub_080198D8 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _08015ED4 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080144E0 + b _0801638C + .align 2, 0 +_08015ED4: .4byte gUnknown_20228E4 +_08015ED8: + bl sub_0800F29C + ldrh r1, [r0, #8] + ldr r4, _08015EEC + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _08015EF0 + movs r0, #0x2b + b _0801638A + .align 2, 0 +_08015EEC: .4byte 0x000003FF +_08015EF0: + bl sub_0800F29C + ldrh r1, [r0, #8] + adds r0, r4, #0 + ands r0, r1 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _08015F14 + ldr r0, _08015F0C + ldr r1, _08015F10 + bl sub_080088B8 + b _08015F4C + .align 2, 0 +_08015F0C: .4byte gUnknown_2021C7C +_08015F10: .4byte gUnknown_82C1864 +_08015F14: + ldr r4, _08015F58 + bl sub_0800F29C + ldrh r0, [r0, #8] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _08015F5C + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r4, _08015F60 + bl sub_0800F29C + ldrb r1, [r0, #0xb] + lsrs r1, r1, #1 + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _08015F64 + ldr r1, _08015F68 + bl sub_08008BCC +_08015F4C: + ldr r1, _08015F64 + movs r0, #0x2c + bl sub_0801516C + b _0801638C + .align 2, 0 +_08015F58: .4byte gUnknown_2021C40 +_08015F5C: .4byte gUnknown_82EA31C +_08015F60: .4byte gUnknown_2021C54 +_08015F64: .4byte gUnknown_2021C7C +_08015F68: .4byte gUnknown_82C1844 +_08015F6C: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08015F84 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08015F7E + b _0801638C +_08015F7E: + movs r0, #0x2f + b _0801638A + .align 2, 0 +_08015F84: .4byte gUnknown_82C169C +_08015F88: + adds r0, r6, #0 + adds r0, #0x16 + adds r1, r6, #0 + adds r1, #0x1d + adds r2, r6, #0 + adds r2, #0x1e + ldr r3, _08015FC0 + ldr r4, _08015FC4 + str r4, [sp] + bl sub_08016C88 + adds r5, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _08015FAA + b _0801638C +_08015FAA: + subs r0, #1 + cmp r5, r0 + beq _08015FB4 + cmp r5, #3 + bne _08015FC8 +_08015FB4: + movs r0, #4 + strb r0, [r6, #0x14] + movs r0, #1 + bl sub_08017C48 + b _0801638C + .align 2, 0 +_08015FC0: .4byte gUnknown_82C2164 +_08015FC4: .4byte gUnknown_82C2184 +_08015FC8: + cmp r5, #1 + beq _08015FD2 + cmp r5, #2 + beq _08015FE0 + b _0801638C +_08015FD2: + ldr r1, _08015FDC + movs r0, #0x35 + bl sub_0801516C + b _0801638C + .align 2, 0 +_08015FDC: .4byte gUnknown_82C17E8 +_08015FE0: + ldr r1, _08015FEC + movs r0, #0x2f + bl sub_0801516C + b _0801638C + .align 2, 0 +_08015FEC: .4byte gUnknown_82C16E0 +_08015FF0: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #0x36 + b _0801638A +_08016004: + ldr r0, _08016028 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08016012 + b _0801638C +_08016012: + ldr r1, _0801602C + movs r0, #1 + strh r0, [r1] + ldr r1, _08016030 + ldr r0, _08016034 + str r0, [r1] + ldr r1, _08016038 + movs r0, #8 + bl sub_081B85A4 + b _0801638C + .align 2, 0 +_08016028: .4byte gUnknown_2037C74 +_0801602C: .4byte gUnknown_20228F4 +_08016030: .4byte gUnknown_3005B0C +_08016034: .4byte sub_080AEA24 +_08016038: .4byte sub_08085A30 +_0801603C: + adds r0, r6, #0 + adds r0, #0x16 + adds r1, r6, #0 + adds r1, #0x1d + adds r2, r6, #0 + adds r2, #0x1e + ldr r3, _08016080 + ldr r4, _08016084 + str r4, [sp] + bl sub_08016C88 + adds r5, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _0801605E + b _0801638C +_0801605E: + subs r0, #1 + cmp r5, r0 + beq _08016068 + cmp r5, #0x12 + bne _08016090 +_08016068: + ldr r0, _08016088 + bl sub_08017B38 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010ABC + ldr r0, _0801608C + bl sub_08015194 + b _0801638C + .align 2, 0 +_08016080: .4byte gUnknown_82C219C +_08016084: .4byte gUnknown_82C2234 +_08016088: .4byte gUnknown_20228F4 +_0801608C: .4byte gUnknown_82C1808 +_08016090: + ldr r0, _08016098 + strh r5, [r0, #2] + movs r0, #0x37 + b _0801638A + .align 2, 0 +_08016098: .4byte gUnknown_20228F4 +_0801609C: + ldr r2, _080160B0 + ldrh r0, [r2, #2] + ldrh r1, [r2, #0xa] + ldrh r2, [r2, #0xc] + bl sub_08010ABC + ldr r0, _080160B4 + bl sub_08015194 + b _0801638C + .align 2, 0 +_080160B0: .4byte gUnknown_20228F4 +_080160B4: .4byte gUnknown_82C181C +_080160B8: + adds r0, r6, #0 + adds r0, #0x16 + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080160DE + cmp r1, #0 + bgt _080160D8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080160E2 + b _0801638C +_080160D8: + cmp r1, #1 + beq _080160E2 + b _0801638C +_080160DE: + movs r0, #0x38 + b _0801638A +_080160E2: + movs r0, #1 + bl sub_08017C48 + movs r0, #4 + b _0801638A +_080160EC: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08016118 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080160FE + b _0801638C +_080160FE: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08010ABC + ldr r0, _0801611C + bl sub_08017B38 + movs r0, #1 + bl sub_08017C48 + movs r0, #4 + b _0801638A + .align 2, 0 +_08016118: .4byte gUnknown_82C1880 +_0801611C: .4byte gUnknown_20228F4 +_08016120: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08016138 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08016132 + b _0801638C +_08016132: + movs r0, #0x2e + b _0801638A + .align 2, 0 +_08016138: .4byte gUnknown_82C1688 +_0801613C: + bl sub_08016E74 + movs r0, #0x30 + b _0801638A +_08016144: + 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, _08016184 + str r4, [sp] + ldr r4, _08016188 + str r4, [sp, #4] + ldr r4, [r6] + str r4, [sp, #8] + bl sub_08016D5C + adds r5, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _08016170 + b _0801638C +_08016170: + subs r0, #1 + cmp r5, r0 + beq _0801617A + cmp r5, #8 + bne _0801618C +_0801617A: + movs r0, #1 + bl sub_08017C48 + movs r0, #4 + b _0801638A + .align 2, 0 +_08016184: .4byte gUnknown_82C2254 +_08016188: .4byte gUnknown_82C22AC +_0801618C: + bl sub_08016E74 + ldr r1, [r6] + lsls r4, r5, #5 + adds r1, r1, r4 + ldrb r0, [r1, #9] + lsrs r0, r0, #2 + ldrh r1, [r1, #8] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + bl sub_080177C4 + cmp r0, #1 + beq _080161D8 + cmp r0, #1 + bgt _080161B2 + cmp r0, #0 + beq _080161B8 + b _0801638C +_080161B2: + cmp r0, #2 + beq _08016210 + b _0801638C +_080161B8: + ldr r0, _080161D0 + ldr r1, [r6] + adds r1, r1, r4 + adds r1, #0x10 + bl sub_080088B8 + ldr r1, _080161D4 + movs r0, #0x31 + bl sub_0801516C + strh r5, [r7, #2] + b _0801638C + .align 2, 0 +_080161D0: .4byte gUnknown_2021C40 +_080161D4: .4byte gUnknown_82C18CC +_080161D8: + ldr r0, _08016200 + ldr r1, [r6] + adds r1, r1, r4 + adds r1, #0x10 + bl sub_080088B8 + ldr r0, _08016204 + ldr r1, [r6] + adds r1, r1, r4 + ldrb r2, [r1, #9] + lsrs r2, r2, #2 + lsls r1, r2, #2 + adds r1, r1, r2 + ldr r2, _08016208 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _0801620C + b _08016234 + .align 2, 0 +_08016200: .4byte gUnknown_2021C40 +_08016204: .4byte gUnknown_2021C54 +_08016208: .4byte gUnknown_82EBC88 +_0801620C: .4byte gUnknown_82C1918 +_08016210: + ldr r0, _0801623C + ldr r1, [r6] + adds r1, r1, r4 + adds r1, #0x10 + bl sub_080088B8 + ldr r0, _08016240 + ldr r1, [r6] + adds r1, r1, r4 + ldrb r2, [r1, #9] + lsrs r2, r2, #2 + lsls r1, r2, #2 + adds r1, r1, r2 + ldr r2, _08016244 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _08016248 +_08016234: + movs r0, #0x2e + bl sub_0801516C + b _0801638C + .align 2, 0 +_0801623C: .4byte gUnknown_2021C40 +_08016240: .4byte gUnknown_2021C54 +_08016244: .4byte gUnknown_82EBC88 +_08016248: .4byte gUnknown_82C1938 +_0801624C: + adds r0, r6, #0 + adds r0, #0x16 + movs r1, #0 + bl sub_08016BC8 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08016272 + cmp r1, #0 + bgt _0801626C + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08016276 + b _0801638C +_0801626C: + cmp r1, #1 + beq _08016276 + b _0801638C +_08016272: + movs r0, #0x32 + b _0801638A +_08016276: + movs r0, #1 + bl sub_08017C48 + movs r0, #4 + b _0801638A +_08016280: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _080162E8 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08016292 + b _0801638C +_08016292: + ldr r4, _080162EC + movs r0, #2 + strh r0, [r4] + ldr r2, _080162F0 + movs r3, #2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + lsls r0, r0, #5 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r2, _080162F4 + ldr r1, [r6] + movs r3, #2 + ldrsh r0, [r7, r3] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r0, [r1, #9] + lsrs r0, r0, #2 + strb r0, [r2] + ldr r2, _080162F8 + ldr r1, [r6] + movs r3, #2 + ldrsh r0, [r7, r3] + lsls r0, r0, #5 + adds r1, r1, r0 + ldrh r0, [r1, #8] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + strh r0, [r2] + ldr r1, _080162FC + ldr r0, _08016300 + str r0, [r1] + ldr r1, _08016304 + movs r0, #9 + bl sub_081B85A4 + adds r0, r6, #0 + bl sub_080151B8 + ldrh r0, [r7, #2] + strb r0, [r4, #8] + b _0801638C + .align 2, 0 +_080162E8: .4byte gUnknown_82C17E8 +_080162EC: .4byte gUnknown_20228F4 +_080162F0: .4byte gUnknown_20228EC +_080162F4: .4byte gUnknown_20228F2 +_080162F8: .4byte gUnknown_20228F0 +_080162FC: .4byte gUnknown_3005B0C +_08016300: .4byte sub_080AEA24 +_08016304: .4byte sub_08085A30 +_08016308: + ldr r1, _08016340 + movs r0, #0x44 + strb r0, [r1] + movs r1, #2 + ldrsh r0, [r7, r1] + lsls r0, r0, #5 + ldr r1, [r6] + adds r1, r1, r0 + adds r0, r1, #0 + adds r0, #0x10 + movs r2, #0x44 + bl sub_08011C74 + ldr r0, _08016344 + movs r3, #2 + ldrsh r2, [r7, r3] + lsls r2, r2, #5 + ldr r1, [r6] + adds r1, r1, r2 + adds r1, #0x10 + bl sub_080088B8 + ldr r0, _08016348 + ldr r0, [r0, #8] + bl sub_08016B30 + movs r0, #0x19 + b _0801638A + .align 2, 0 +_08016340: .4byte gUnknown_20228E0 +_08016344: .4byte gUnknown_2021C40 +_08016348: .4byte gUnknown_82C0CD8 +_0801634C: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08016374 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801638C + movs r0, #1 + bl sub_08017C48 + movs r1, #0 + ldrsh r0, [r7, r1] + movs r2, #2 + ldrsh r1, [r7, r2] + ldr r2, [r6] + bl sub_08019E88 + movs r0, #4 + b _0801638A + .align 2, 0 +_08016374: .4byte gUnknown_2021C7C +_08016378: + adds r0, r6, #0 + adds r0, #0x16 + ldr r1, _08016394 + bl sub_08016B74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801638C + ldrb r0, [r6, #0x15] +_0801638A: + strb r0, [r6, #0x14] +_0801638C: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08016394: .4byte gUnknown_2021C7C + thumb_func_end sub_080151E8 + + thumb_func_start sub_08016398 +sub_08016398: @ 0x08016398 + push {lr} + bl sub_08017AC0 + cmp r0, #1 + bne _080163A8 + ldr r1, _080163AC + movs r0, #0xb + strh r0, [r1] +_080163A8: + pop {r0} + bx r0 + .align 2, 0 +_080163AC: .4byte gUnknown_2037290 + thumb_func_end sub_08016398 + + thumb_func_start sub_080163B0 +sub_080163B0: @ 0x080163B0 + push {r4, r5, lr} + adds r2, r0, #0 + ldr r3, _080163EC + ldrh r5, [r3, #0x12] + adds r4, r5, #0 + cmp r4, #0 + beq _080163E4 + ldrh r0, [r3, #0x10] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _080163E4 + adds r0, r2, #0 + adds r0, #0x82 + strh r5, [r0] + cmp r4, #0x44 + bne _080163E4 + ldrh r1, [r3, #0x14] + adds r0, #2 + strh r1, [r0] + ldrh r1, [r3, #0x16] + adds r0, #2 + strh r1, [r0] +_080163E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080163EC: .4byte gUnknown_3003130 + thumb_func_end sub_080163B0 + + thumb_func_start sub_080163F0 +sub_080163F0: @ 0x080163F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x82 + ldrh r0, [r5] + cmp r0, #0 + beq _08016440 + ldr r0, _08016424 + ldr r1, _08016428 + adds r1, #0x2f + ldrb r1, [r1] + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_08017960 + cmp r0, #0 + beq _08016440 + cmp r0, #1 + bne _08016430 + movs r0, #0x23 + strb r0, [r4, #0x14] + ldr r1, _0801642C + ldrh r0, [r5] + strb r0, [r1] + movs r0, #0 + b _08016442 + .align 2, 0 +_08016424: .4byte gUnknown_2021C7C +_08016428: .4byte gUnknown_20226A0 +_0801642C: .4byte gUnknown_20228E0 +_08016430: + cmp r0, #2 + bne _08016440 + movs r0, #0x24 + strb r0, [r4, #0x14] + bl sub_0800A7F8 + movs r0, #0 + b _08016442 +_08016440: + movs r0, #1 +_08016442: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080163F0 + + thumb_func_start sub_08016448 +sub_08016448: @ 0x08016448 + push {r4, r5, lr} + ldr r5, _08016480 + movs r0, #0xff + strb r0, [r5] + ldr r0, _08016484 + movs r1, #0 + bl sub_080A8878 + ldr r4, _08016488 + movs r0, #0x89 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + ldr r1, _0801648C + str r0, [r1] + movs r1, #0 + strb r1, [r0, #0x14] + strb r1, [r0, #0x16] + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08016480: .4byte gUnknown_20228D8 +_08016484: .4byte sub_08016490 +_08016488: .4byte gUnknown_20228E4 +_0801648C: .4byte gUnknown_3000DA8 + thumb_func_end sub_08016448 + + thumb_func_start sub_08016490 +sub_08016490: @ 0x08016490 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080164AC + ldr r4, [r0] + ldrb r0, [r4, #0x14] + cmp r0, #4 + bls _080164A2 + b _080165D8 +_080164A2: + lsls r0, r0, #2 + ldr r1, _080164B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080164AC: .4byte gUnknown_20228E4 +_080164B0: .4byte _080164B4 +_080164B4: @ jump table + .4byte _080164C8 @ case 0 + .4byte _080164CE @ case 1 + .4byte _080164F0 @ case 2 + .4byte _08016540 @ case 3 + .4byte _080165A4 @ case 4 +_080164C8: + movs r0, #1 + strb r0, [r4, #0x14] + b _080165D8 +_080164CE: + movs r0, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08010A74 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011770 + movs r0, #1 + bl sub_08010CA0 + movs r0, #2 + strb r0, [r4, #0x14] + b _080165D8 +_080164F0: + movs r0, #0x70 + bl sub_08000BDC + str r0, [r4, #4] + movs r1, #4 + bl sub_080170B0 + movs r0, #0x70 + bl sub_08000BDC + str r0, [r4, #0xc] + movs r1, #4 + bl sub_080170B0 + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r4] + movs r1, #8 + bl sub_08017044 + movs r0, #0x20 + bl sub_08000BDC + str r0, [r4, #8] + movs r1, #1 + bl sub_08017044 + ldr r0, [r4, #0xc] + ldr r1, [r4, #4] + movs r2, #0xa + bl sub_08016900 + adds r1, r4, #0 + adds r1, #0x20 + strb r0, [r1] + movs r0, #3 + strb r0, [r4, #0x14] + b _080165D8 +_08016540: + bl sub_08016610 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + blt _080165D8 + cmp r0, #2 + bgt _080165D8 + ldr r0, _0801658C + ldrb r0, [r0] + cmp r0, #0xff + bne _080165D8 + movs r6, #0 +_0801655A: + ldr r0, [r4] + lsls r5, r6, #5 + adds r1, r0, r5 + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08016582 + adds r0, r1, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r4] + adds r1, r1, r5 + adds r1, #0x10 + bl sub_0800E004 + cmp r0, #0 + bne _08016590 +_08016582: + adds r6, #1 + cmp r6, #7 + ble _0801655A + b _080165D8 + .align 2, 0 +_0801658C: .4byte gUnknown_20228D8 +_08016590: + ldr r0, _080165A0 + ldr r1, [r4] + adds r1, r1, r5 + adds r1, #0x10 + bl sub_080088B8 + b _080165D8 + .align 2, 0 +_080165A0: .4byte gUnknown_20228D8 +_080165A4: + ldr r0, [r4, #8] + bl sub_08000BF0 + ldr r0, [r4] + bl sub_08000BF0 + ldr r0, [r4, #0xc] + bl sub_08000BF0 + ldr r0, [r4, #4] + bl sub_08000BF0 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + bl sub_080A8964 + ldr r0, _080165E0 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_0800E894 + adds r0, r5, #0 + bl sub_080A8964 +_080165D8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080165E0: .4byte gUnknown_20228E4 + thumb_func_end sub_08016490 + + thumb_func_start sub_080165E4 +sub_080165E4: @ 0x080165E4 + push {r4, lr} + ldr r4, _080165F4 + ldrb r0, [r4] + cmp r0, #0xff + bne _080165F8 + movs r0, #0 + b _08016606 + .align 2, 0 +_080165F4: .4byte gUnknown_20228D8 +_080165F8: + ldr r0, _0801660C + adds r1, r4, #0 + bl sub_080088B8 + movs r0, #0xff + strb r0, [r4] + movs r0, #1 +_08016606: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801660C: .4byte gUnknown_2021C40 + thumb_func_end sub_080165E4 + + thumb_func_start sub_08016610 +sub_08016610: @ 0x08016610 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _08016664 + ldr r4, [r0] + movs r7, #0 + movs r6, #0 + movs r5, #0 +_08016622: + ldr r0, [r4, #0xc] + adds r0, r0, r5 + ldr r1, _08016668 + bl sub_080170F4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bne _0801666C + ldr r1, [r4, #0xc] + ldr r0, [r4, #8] + adds r1, 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, #8] + movs r0, #0 + strh r0, [r1, #0x18] + ldr r2, [r4, #8] + ldrb r1, [r2, #0x1a] + movs r5, #4 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldr r0, [r4, #8] + strb r3, [r0, #0x1b] + movs r0, #4 + b _080167A0 + .align 2, 0 +_08016664: .4byte gUnknown_20228E4 +_08016668: .4byte gUnknown_82C2364 +_0801666C: + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _08016622 + movs r6, #0 + mov sb, r6 +_08016678: + ldr r0, [r4] + mov r1, sb + lsls r5, r1, #5 + adds r2, r0, r5 + ldrb r0, [r2, #0x1a] + lsls r0, r0, #0x1e + mov r8, r5 + cmp r0, #0 + beq _0801676C + ldr r1, [r4, #4] + adds r0, r2, #0 + bl sub_080171A8 + adds r6, r0, #0 + cmp r6, #0xff + beq _08016712 + ldr r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2, #0x1a] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080166F0 + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r6, r0, #2 + ldr r1, [r4, #4] + adds r1, r1, r6 + adds r0, r2, #0 + bl sub_0801713C + cmp r0, #0 + beq _080166D6 + ldr r1, [r4] + ldr r0, [r4, #4] + adds r1, r1, r5 + adds r0, 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, r0, r5 + movs r1, #0x40 + strb r1, [r0, #0x1b] + movs r7, #1 + b _08016708 +_080166D6: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _08016708 + subs r0, #1 + strb r0, [r1, #0x1b] + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0, #0x1b] + cmp r0, #0 + bne _08016708 + b _08016706 +_080166F0: + movs r3, #4 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0, #0x1b] +_08016706: + movs r7, #2 +_08016708: + ldr r0, [r4] + add r0, r8 + movs r1, #0 + strh r1, [r0, #0x18] + b _0801676C +_08016712: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, #0x1a] + lsls r2, r0, #0x1e + lsrs r0, r2, #0x1e + cmp r0, #2 + beq _0801674C + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, #0x18] + ldr r0, _08016748 + cmp r1, r0 + bls _0801676C + ldrb r0, [r2, #0x1a] + movs r5, #4 + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x1a] + movs r7, #2 + b _0801676C + .align 2, 0 +_08016748: .4byte 0x00000257 +_0801674C: + lsrs r0, r2, #0x1e + cmp r0, #2 + bne _0801676C + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, #0x18] + ldr r0, _080167AC + cmp r1, r0 + bls _0801676C + adds r0, r2, #0 + movs r1, #1 + bl sub_08017044 +_0801676C: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #7 + bhi _0801677C + b _08016678 +_0801677C: + movs r5, #0 + movs r6, #3 +_08016780: + ldr r0, [r4] + ldr r1, [r4, #4] + adds r1, r1, r5 + movs r2, #8 + bl sub_080171F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08016796 + movs r7, #1 +_08016796: + adds r5, #0x1c + subs r6, #1 + cmp r6, #0 + bge _08016780 + adds r0, r7, #0 +_080167A0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080167AC: .4byte 0x00000383 + thumb_func_end sub_08016610 + + thumb_func_start sub_080167B0 +sub_080167B0: @ 0x080167B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + ldr r1, _080168A0 + adds r6, r0, r1 + movs r7, #0 + mov r0, sp + adds r0, #0x10 + str r0, [sp, #0x18] +_080167D4: + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldr r1, [sp, #0x18] + bl sub_0800D948 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r0, sp + ldrb r0, [r0, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + mov r2, sl + lsls r1, r2, #2 + add r1, sl + lsls r1, r1, #3 + ldr r3, _080168A4 + adds r1, r1, r3 + movs r5, #0x10 + ldrsh r1, [r1, r5] + bl sub_08013890 + cmp r0, #0 + bne _08016810 + mov r1, sp + ldr r0, _080168A8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} +_08016810: + mov r0, sp + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + beq _08016828 + mov r1, sp + ldr r0, _080168A8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} +_08016828: + cmp r4, #0 + bne _080168AC + lsls r0, r7, #3 + mov r8, r0 + adds r1, r7, #1 + mov sb, r1 + cmp r7, #0 + ble _08016868 + movs r2, #0 + str r2, [sp, #0x1c] + adds r4, r7, #0 +_0801683E: + ldr r0, [r6, #4] + ldr r3, [sp, #0x1c] + adds r0, r0, r3 + mov r1, sp + bl sub_080170F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801685C + mov r1, sp + ldr r0, _080168A8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} +_0801685C: + ldr r5, [sp, #0x1c] + adds r5, #0x1c + str r5, [sp, #0x1c] + subs r4, #1 + cmp r4, #0 + bne _0801683E +_08016868: + ldr r1, [r6, #4] + mov r0, r8 + subs r4, r0, r7 + lsls r4, r4, #2 + adds r1, 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, #4] + adds r0, r0, r4 + ldr r1, _080168A8 + bl sub_080170F4 + ldr r3, [r6, #4] + adds r3, r3, r4 + movs r2, #1 + ands r2, r0 + ldrb r0, [r3, #0x18] + movs r4, #2 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + b _080168E4 + .align 2, 0 +_080168A0: .4byte gUnknown_3005B68 +_080168A4: .4byte gUnknown_3005B60 +_080168A8: .4byte gUnknown_82C2364 +_080168AC: + ldr r1, [r6] + lsls r4, r7, #3 + subs r4, r4, r7 + lsls r4, r4, #2 + adds r1, 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, r0, r4 + ldr r1, _080168FC + bl sub_080170F4 + ldr r3, [r6] + adds r3, r3, r4 + movs r2, #1 + ands r2, r0 + ldrb r0, [r3, #0x18] + movs r4, #2 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + adds r7, #1 + mov sb, r7 +_080168E4: + mov r7, sb + cmp r7, #3 + bgt _080168EC + b _080167D4 +_080168EC: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080168FC: .4byte gUnknown_82C2364 + thumb_func_end sub_080167B0 + + thumb_func_start sub_08016900 +sub_08016900: @ 0x08016900 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r0, _0801692C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _08016930 + adds r3, r1, r2 + str r4, [r3] + str r5, [r3, #4] + adds r2, r2, r1 + strh r6, [r2, #8] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0801692C: .4byte sub_080167B0 +_08016930: .4byte gUnknown_3005B68 + thumb_func_end sub_08016900 + + thumb_func_start sub_08016934 +sub_08016934: @ 0x08016934 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + ldr r1, _08016A20 + adds r6, r0, r1 + movs r3, #0 +_08016952: + lsls r4, r3, #3 + subs r0, r4, r3 + lsls r5, r0, #2 + ldr r0, [r6] + adds r0, r0, r5 + adds r1, r0, #0 + adds r1, #0x10 + lsls r2, r3, #0x18 + lsrs r2, r2, #0x18 + str r3, [sp] + bl sub_0800D948 + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + mov r2, sl + lsls r1, r2, #2 + add r1, sl + lsls r1, r1, #3 + ldr r7, _08016A24 + adds r1, r1, r7 + movs r2, #0xc + ldrsh r1, [r1, r2] + bl sub_08013890 + mov r8, r4 + ldr r3, [sp] + cmp r0, #0 + bne _0801699E + ldr r1, [r6] + adds r1, r1, r5 + ldr r0, _08016A28 + ldm r0!, {r2, r4, r7} + stm r1!, {r2, r4, r7} + ldm r0!, {r2, r4, r7} + stm r1!, {r2, r4, r7} +_0801699E: + adds r4, r3, #1 + mov sb, r4 + cmp r3, #0 + ble _080169E2 + str r5, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + adds r4, r3, #0 +_080169AE: + ldr r1, [r6] + ldr r7, [sp, #8] + adds r0, r1, r7 + ldr r2, [sp, #4] + adds r1, r1, r2 + str r3, [sp] + bl sub_080170F4 + lsls r0, r0, #0x18 + ldr r3, [sp] + cmp r0, #0 + bne _080169D6 + ldr r1, [r6] + ldr r5, [sp, #4] + adds r1, r1, r5 + ldr r0, _08016A28 + ldm r0!, {r2, r5, r7} + stm r1!, {r2, r5, r7} + ldm r0!, {r2, r5, r7} + stm r1!, {r2, r5, r7} +_080169D6: + ldr r7, [sp, #8] + adds r7, #0x1c + str r7, [sp, #8] + subs r4, #1 + cmp r4, #0 + bne _080169AE +_080169E2: + mov r0, r8 + subs r4, r0, r3 + lsls r4, r4, #2 + ldr r0, [r6] + adds r0, r0, r4 + ldr r1, _08016A28 + bl sub_080170F4 + ldr r3, [r6] + adds r3, r3, r4 + movs r2, #1 + ands r2, r0 + ldrb r0, [r3, #0x18] + movs r4, #2 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + mov r3, sb + cmp r3, #3 + ble _08016952 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08016A20: .4byte gUnknown_3005B68 +_08016A24: .4byte gUnknown_3005B60 +_08016A28: .4byte gUnknown_82C2364 + thumb_func_end sub_08016934 + + thumb_func_start sub_08016A2C +sub_08016A2C: @ 0x08016A2C + push {lr} + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #7 + bne _08016A3C + ldrb r1, [r0] + movs r0, #0x20 + b _08016A44 +_08016A3C: + cmp r1, #8 + bne _08016A4E + ldrb r1, [r0] + movs r0, #0x10 +_08016A44: + ands r0, r1 + cmp r0, #0 + beq _08016A4E + movs r0, #1 + b _08016A50 +_08016A4E: + movs r0, #0 +_08016A50: + pop {r1} + bx r1 + thumb_func_end sub_08016A2C + + thumb_func_start sub_08016A54 +sub_08016A54: @ 0x08016A54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08016AC8 + adds r4, r1, r0 + movs r6, #0 + subs r0, #8 + movs r5, #0 + adds r1, r1, r0 + mov r8, r1 +_08016A72: + ldr r0, [r4] + adds r0, r0, r5 + adds r1, r0, #0 + adds r1, #0x10 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + bl sub_0800DA00 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08016A96 + ldr r0, [r4] + adds r0, r0, r5 + mov r2, r8 + movs r3, #0xc + ldrsh r1, [r2, r3] + bl sub_08016A2C +_08016A96: + ldr r0, [r4] + adds r0, r0, r5 + ldr r1, _08016ACC + bl sub_080170F4 + ldr r3, [r4] + adds r3, r3, r5 + movs r2, #1 + ands r2, r0 + ldrb r0, [r3, #0x18] + movs r7, #2 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _08016A72 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08016AC8: .4byte gUnknown_3005B68 +_08016ACC: .4byte gUnknown_82C2364 + thumb_func_end sub_08016A54 + + thumb_func_start sub_08016AD0 +sub_08016AD0: @ 0x08016AD0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08016AF8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + ldr r1, _08016AFC + adds r3, r2, r1 + str r4, [r3] + adds r1, r1, r2 + strh r5, [r1, #4] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08016AF8: .4byte sub_08016934 +_08016AFC: .4byte gUnknown_3005B68 + thumb_func_end sub_08016AD0 + + thumb_func_start sub_08016B00 +sub_08016B00: @ 0x08016B00 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08016B28 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + ldr r1, _08016B2C + adds r3, r2, r1 + str r4, [r3] + adds r1, r1, r2 + strh r5, [r1, #4] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08016B28: .4byte sub_08016A54 +_08016B2C: .4byte gUnknown_3005B68 + thumb_func_end sub_08016B00 + + thumb_func_start sub_08016B30 +sub_08016B30: @ 0x08016B30 + push {r4, lr} + adds r4, r0, #0 + bl sub_08196F98 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + ldr r0, _08016B58 + adds r1, r4, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #1 + bl sub_08196F50 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08016B58: .4byte gUnknown_2021C7C + thumb_func_end sub_08016B30 + + thumb_func_start sub_08016B5C +sub_08016B5C: @ 0x08016B5C + push {lr} + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08016B6C + movs r0, #0 + b _08016B6E +_08016B6C: + movs r0, #1 +_08016B6E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08016B5C + + thumb_func_start sub_08016B74 +sub_08016B74: @ 0x08016B74 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _08016B86 + cmp r0, #1 + beq _08016BAC + b _08016BBE +_08016B86: + bl sub_08196F98 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + ldr r0, _08016BA8 + adds r1, r5, #0 + bl sub_08008BCC + movs r0, #1 + bl sub_08196F04 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08016BBE + .align 2, 0 +_08016BA8: .4byte gUnknown_2021C7C +_08016BAC: + bl sub_08196E18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _08016BBE + strb r0, [r4] + movs r0, #1 + b _08016BC0 +_08016BBE: + movs r0, #0 +_08016BC0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08016B74 + + thumb_func_start sub_08016BC8 +sub_08016BC8: @ 0x08016BC8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _08016BDA + cmp r0, #1 + beq _08016BF0 + b _08016C1C +_08016BDA: + cmp r5, #0 + beq _08016BE4 + movs r0, #3 + rsbs r0, r0, #0 + b _08016C20 +_08016BE4: + bl sub_08197714 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08016C1C +_08016BF0: + cmp r5, #0 + beq _08016C02 + bl sub_08198D88 + movs r0, #0 + strb r0, [r4] + movs r0, #3 + rsbs r0, r0, #0 + b _08016C20 +_08016C02: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _08016C1C + strb r5, [r4] + adds r0, r1, #0 + b _08016C20 +_08016C1C: + movs r0, #2 + rsbs r0, r0, #0 +_08016C20: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08016BC8 + + thumb_func_start sub_08016C28 +sub_08016C28: @ 0x08016C28 + push {r4, lr} + sub sp, #8 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08196FF0 + adds r0, r4, #0 + movs r1, #0xff + bl sub_08003B18 + ldr r2, _08016C74 + movs r0, #1 + str r0, [sp] + movs r0, #6 + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #1 + movs r3, #8 + bl sub_08016EA4 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08016C74: .4byte gUnknown_82C1D60 + thumb_func_end sub_08016C28 + + thumb_func_start sub_08016C78 +sub_08016C78: @ 0x08016C78 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08016C78 + + thumb_func_start sub_08016C88 +sub_08016C88: @ 0x08016C88 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r5, r1, #0 + mov sb, r2 + adds r0, r3, #0 + ldrb r4, [r7] + cmp r4, #0 + beq _08016CA4 + cmp r4, #1 + beq _08016CE4 + b _08016D4A +_08016CA4: + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _08016CE0 + 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_081AE25C + mov r1, sb + strb r0, [r1] + ldrb r0, [r5] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + b _08016D4A + .align 2, 0 +_08016CE0: .4byte gUnknown_3006050 +_08016CE4: + mov r3, sb + ldrb r0, [r3] + bl sub_081AE2DC + mov r8, r0 + ldr r0, _08016D1C + ldrh r1, [r0, #0x2e] + ands r4, r1 + cmp r4, #0 + beq _08016D20 + mov r4, sb + ldrb r0, [r4] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r5] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r5] + bl sub_08003444 + movs r0, #0 + strb r0, [r7] + mov r0, r8 + b _08016D4E + .align 2, 0 +_08016D1C: .4byte gUnknown_3002360 +_08016D20: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08016D4A + mov r6, sb + ldrb r0, [r6] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r5] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r5] + bl sub_08003444 + strb r4, [r7] + movs r0, #2 + rsbs r0, r0, #0 + b _08016D4E +_08016D4A: + movs r0, #1 + rsbs r0, r0, #0 +_08016D4E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08016C88 + + thumb_func_start sub_08016D5C +sub_08016D5C: @ 0x08016D5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + adds r5, r1, #0 + mov sl, r2 + mov r8, r3 + ldrb r4, [r6] + cmp r4, #1 + beq _08016DC8 + cmp r4, #1 + bgt _08016D7E + cmp r4, #0 + beq _08016D84 + b _08016E60 +_08016D7E: + cmp r4, #2 + beq _08016DD8 + b _08016E60 +_08016D84: + ldr r0, _08016DC0 + bl sub_08016C28 + mov r1, r8 + strb r0, [r1] + ldr r0, [sp, #0x20] + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _08016DC4 + adds r2, r0, #0 + ldr r1, [sp, #0x24] + ldm r1!, {r3, r4, r7} + stm r2!, {r3, r4, r7} + ldm r1!, {r3, r4, r7} + stm r2!, {r3, r4, r7} + ldrb r1, [r5] + strb r1, [r0, #0x10] + movs r1, #0 + movs r2, #1 + bl sub_081AE25C + mov r1, sl + strb r0, [r1] + b _08016DD0 + .align 2, 0 +_08016DC0: .4byte gUnknown_82C224C +_08016DC4: .4byte gUnknown_3006050 +_08016DC8: + ldrb r0, [r5] + movs r1, #1 + bl sub_08003528 +_08016DD0: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _08016E60 +_08016DD8: + mov r3, sl + ldrb r0, [r3] + bl sub_081AE2DC + adds r1, r0, #0 + ldr r0, _08016E20 + ldrh r2, [r0, #0x2e] + movs r0, #3 + ands r0, r2 + cmp r0, #0 + beq _08016E60 + cmp r1, #8 + beq _08016DFA + ands r4, r2 + mov sb, r4 + cmp r4, #0 + beq _08016E24 +_08016DFA: + mov r4, sl + ldrb r0, [r4] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r5] + bl sub_08003444 + mov r7, r8 + ldrb r0, [r7] + bl sub_08016C78 + movs r0, #0 + strb r0, [r6] + movs r0, #2 + rsbs r0, r0, #0 + b _08016E64 + .align 2, 0 +_08016E20: .4byte gUnknown_3002360 +_08016E24: + ldr r0, [sp, #0x28] + bl sub_08017770 + adds r4, r0, #0 + cmp r4, #0 + blt _08016E5A + mov r1, sl + ldrb r0, [r1] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r5] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r5] + bl sub_08003444 + mov r3, r8 + ldrb r0, [r3] + bl sub_08016C78 + mov r7, sb + strb r7, [r6] + adds r0, r4, #0 + b _08016E64 +_08016E5A: + movs r0, #7 + bl sub_080A306C +_08016E60: + movs r0, #1 + rsbs r0, r0, #0 +_08016E64: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08016D5C + + thumb_func_start sub_08016E74 +sub_08016E74: @ 0x08016E74 + push {lr} + sub sp, #0xc + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_08016E74 + + thumb_func_start sub_08016E98 +sub_08016E98: @ 0x08016E98 + push {lr} + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08016E98 + + thumb_func_start sub_08016EA4 +sub_08016EA4: @ 0x08016EA4 + push {r4, r5, lr} + sub sp, #0x10 + ldr r5, [sp, #0x1c] + ldr r4, [sp, #0x20] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r2, [sp] + mov r2, sp + strb r0, [r2, #4] + mov r0, sp + strb r1, [r0, #5] + strb r3, [r0, #6] + strb r5, [r0, #7] + strb r3, [r0, #8] + strb r5, [r0, #9] + ldrb r1, [r2, #0xc] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xc] + ldr r2, _08016EF0 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + cmp r4, #6 + bls _08016EE6 + b _08017032 +_08016EE6: + lsls r0, r4, #2 + ldr r1, _08016EF4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08016EF0: .4byte gUnknown_30030B4 +_08016EF4: .4byte _08016EF8 +_08016EF8: @ jump table + .4byte _08016F14 @ case 0 + .4byte _08016F40 @ case 1 + .4byte _08016F6C @ case 2 + .4byte _08016F98 @ case 3 + .4byte _08016FC4 @ case 4 + .4byte _08016FF0 @ case 5 + .4byte _08017008 @ case 6 +_08016F14: + 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 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0xd] + ands r0, r3 + movs r1, #0x30 + b _0801702E +_08016F40: + 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 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0xd] + ands r0, r3 + movs r1, #0x50 + b _0801702E +_08016F6C: + 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 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0xd] + ands r0, r3 + movs r1, #0x70 + b _0801702E +_08016F98: + 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 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0xd] + ands r0, r3 + movs r1, #0x30 + b _0801702E +_08016FC4: + 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 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0xd] + ands r0, r3 + movs r1, #0x30 + b _0801702E +_08016FF0: + 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 _0801701E +_08017008: + 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 +_0801701E: + 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 +_0801702E: + orrs r0, r1 + strb r0, [r2, #0xd] +_08017032: + mov r0, sp + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08016EA4 + + thumb_func_start sub_08017044 +sub_08017044: @ 0x08017044 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + beq _0801709C + ldr r2, _080170AC + mov r8, r2 + movs r5, #0 + mov sb, r5 + movs r6, #4 + rsbs r6, r6, #0 + mov ip, r6 + adds r2, r0, #0 + adds r2, #0x18 + adds r4, r0, #0 + movs r7, #0xff + mov sl, r7 + adds r3, r1, #0 +_08017070: + adds r1, r4, #0 + mov r0, r8 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + mov r0, sl + strh r0, [r2] + ldrb r1, [r2, #2] + mov r0, ip + ands r0, r1 + movs r1, #5 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2, #2] + mov r5, sb + strb r5, [r2, #3] + adds r2, #0x20 + adds r4, #0x20 + subs r3, #1 + cmp r3, #0 + bne _08017070 +_0801709C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080170AC: .4byte gUnknown_82C2364 + thumb_func_end sub_08017044 + + thumb_func_start sub_080170B0 +sub_080170B0: @ 0x080170B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _080170F0 + mov ip, r1 + movs r5, #2 + rsbs r5, r5, #0 + mov r8, r5 + adds r2, r0, #0 + adds r2, #0x18 + adds r3, r0, #0 + movs r4, #3 +_080170C8: + adds r1, r3, #0 + mov r0, ip + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldrb r1, [r2] + mov r0, r8 + ands r0, r1 + strb r0, [r2] + adds r2, #0x1c + adds r3, #0x1c + subs r4, #1 + cmp r4, #0 + bge _080170C8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080170F0: .4byte gUnknown_82C2364 + thumb_func_end sub_080170B0 + + thumb_func_start sub_080170F4 +sub_080170F4: @ 0x080170F4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r2, #0 + adds r4, r5, #2 + adds r3, r6, #2 +_08017100: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _08017128 + adds r2, #1 + cmp r2, #1 + ble _08017100 + movs r2, #0 + adds r4, r5, #0 + adds r4, #0x10 + adds r3, r6, #0 + adds r3, #0x10 +_0801711C: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _0801712C +_08017128: + movs r0, #1 + b _08017134 +_0801712C: + adds r2, #1 + cmp r2, #7 + ble _0801711C + movs r0, #0 +_08017134: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080170F4 + + thumb_func_start sub_0801713C +sub_0801713C: @ 0x0801713C + push {r4, r5, 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 _080171A0 + movs r0, #0x80 + adds r1, r0, #0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _080171A0 + movs r2, #0 + adds r4, r5, #4 + adds r3, r6, #4 +_08017164: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _080171A0 + adds r2, #1 + cmp r2, #3 + ble _08017164 + ldrh r2, [r5, #8] + ldr r0, _0801719C + ldrh r3, [r6, #8] + adds r1, r0, #0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _080171A0 + ldrb r2, [r5, #9] + movs r0, #0xfc + ldrb r3, [r6, #9] + adds r1, r0, #0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _080171A0 + movs r0, #0 + b _080171A2 + .align 2, 0 +_0801719C: .4byte 0x000003FF +_080171A0: + movs r0, #1 +_080171A2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801713C + + thumb_func_start sub_080171A8 +sub_080171A8: @ 0x080171A8 + push {r4, r5, r6, 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 +_080171BA: + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080171E2 + mov r0, r8 + adds r1, r5, #0 + bl sub_080170F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080171E2 + lsls r0, r6, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r4] + movs r2, #2 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r4] +_080171E2: + adds r4, #0x1c + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _080171BA + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080171A8 + + thumb_func_start sub_080171F8 +sub_080171F8: @ 0x080171F8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r3, r0, #0 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldrb r1, [r1, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801726C + movs r5, #0 + cmp r5, r6 + bge _0801726C + movs r0, #4 + rsbs r0, r0, #0 + mov sb, r0 + movs r1, #2 + rsbs r1, r1, #0 + mov ip, r1 + adds r2, r3, #0 + adds r2, #0x18 + adds r1, r3, #0 +_0801722A: + ldrb r0, [r2, #2] + movs r3, #3 + ands r3, r0 + cmp r3, #0 + bne _08017262 + 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, #2] + mov r0, sb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + movs r0, #0x40 + strb r0, [r2, #3] + mov r0, r8 + ldrb r1, [r0, #0x18] + mov r0, ip + ands r0, r1 + mov r1, r8 + strb r0, [r1, #0x18] + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + b _0801726E +_08017262: + adds r2, #0x20 + adds r1, #0x20 + adds r5, #1 + cmp r5, r6 + blt _0801722A +_0801726C: + movs r0, #0xff +_0801726E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080171F8 + + thumb_func_start sub_0801727C +sub_0801727C: @ 0x0801727C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r4, r1, #0 + adds r5, r3, #0 + ldr r3, [sp, #0x2c] + ldr r1, [sp, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r6, _08017354 + adds r1, #1 + adds r0, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r1, _08017358 + adds r0, r6, #0 + bl sub_080088D8 + str r7, [sp] + movs r0, #0 + str r0, [sp, #4] + mov r0, r8 + movs r1, #1 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08016EA4 + adds r4, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5, #0xa] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x19 + ldrb r1, [r5, #0x1a] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08017344 + movs r0, #0x40 + ands r2, r0 + cmp r2, #0 + bne _08017344 + adds r1, r5, #0 + adds r1, #0x10 + adds r0, r6, #0 + movs r2, #5 + bl sub_08008E78 + str r7, [sp] + mov r0, sb + str r0, [sp, #4] + mov r0, r8 + movs r1, #2 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08016EA4 + ldrb r1, [r5, #2] + ldrb r0, [r5, #3] + lsls r0, r0, #8 + orrs r1, r0 + add r0, sp, #8 + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + ldr r1, _0801735C + adds r0, r6, #0 + bl sub_080088B8 + adds r0, r6, #0 + add r1, sp, #8 + bl sub_080088D8 + adds r3, r4, #0 + adds r3, #0x38 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r7, [sp] + mov r0, sb + str r0, [sp, #4] + mov r0, r8 + movs r1, #1 + adds r2, r6, #0 + bl sub_08016EA4 +_08017344: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08017354: .4byte gUnknown_2021C7C +_08017358: .4byte gUnknown_82C0644 +_0801735C: .4byte gUnknown_82C0648 + thumb_func_end sub_0801727C + + thumb_func_start sub_08017360 +sub_08017360: @ 0x08017360 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r5, r3, #0 + ldr r3, [sp, #0x2c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + ldrb r1, [r5, #0x1a] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _080173E6 + ldr r4, _080173F4 + adds r1, r5, #0 + adds r1, #0x10 + adds r0, r4, #0 + movs r2, #5 + bl sub_08008E78 + mov r0, r8 + str r0, [sp] + str r7, [sp, #4] + mov r0, sb + movs r1, #2 + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_08016EA4 + ldrb r1, [r5, #2] + ldrb r0, [r5, #3] + lsls r0, r0, #8 + orrs r1, r0 + add r0, sp, #8 + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + ldr r1, _080173F8 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + add r1, sp, #8 + bl sub_080088D8 + adds r3, r6, #0 + adds r3, #0x38 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + str r0, [sp] + str r7, [sp, #4] + mov r0, sb + movs r1, #1 + adds r2, r4, #0 + bl sub_08016EA4 +_080173E6: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080173F4: .4byte gUnknown_2021C7C +_080173F8: .4byte gUnknown_82C0648 + thumb_func_end sub_08017360 + + thumb_func_start sub_080173FC +sub_080173FC: @ 0x080173FC + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #9 + bne _08017434 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #8 + bne _08017434 + ldr r0, _08017430 + ldrb r0, [r0, #3] + cmp r0, #2 + beq _0801742A + cmp r0, #0 + bne _08017434 +_0801742A: + movs r0, #1 + b _08017436 + .align 2, 0 +_08017430: .4byte gUnknown_2037230 +_08017434: + movs r0, #0 +_08017436: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080173FC + + thumb_func_start sub_08017440 +sub_08017440: @ 0x08017440 + push {lr} + cmp r0, #4 + beq _08017458 + cmp r0, #4 + ble _08017460 + cmp r0, #5 + beq _08017454 + cmp r0, #8 + beq _0801745C + b _08017460 +_08017454: + movs r0, #1 + b _08017462 +_08017458: + movs r0, #2 + b _08017462 +_0801745C: + movs r0, #3 + b _08017462 +_08017460: + movs r0, #0 +_08017462: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08017440 + + thumb_func_start sub_08017468 +sub_08017468: @ 0x08017468 + push {r4, lr} + adds r4, r0, #0 + adds r0, r4, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, #0x10 + adds r1, r4, #0 + bl sub_0800E004 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08017468 + + thumb_func_start sub_08017484 +sub_08017484: @ 0x08017484 + push {r4, r5, r6, lr} + adds r6, r3, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x13 + adds r5, r0, r2 + ldrb r1, [r5, #0xa] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08017500 + cmp r4, #0 + bne _08017500 + ldr r4, _080174E0 + adds r1, r5, #0 + adds r1, #0x10 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r5, #2 + bl sub_08015160 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0800E004 + adds r2, r0, #0 + ldrb r1, [r5, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + bne _080174EC + ldr r0, _080174E4 + ldr r3, _080174E8 + lsls r1, r6, #2 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_08008BCC + movs r0, #2 + b _080175DE + .align 2, 0 +_080174E0: .4byte gUnknown_2021C40 +_080174E4: .4byte gUnknown_2021C7C +_080174E8: .4byte gUnknown_82C0FD0 +_080174EC: + ldr r0, _080174FC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08016B30 + movs r0, #1 + b _080175DE + .align 2, 0 +_080174FC: .4byte gUnknown_82C0CD8 +_08017500: + ldr r0, _08017530 + adds r1, r5, #0 + adds r1, #0x10 + bl sub_080088B8 + cmp r4, #0 + beq _08017518 + adds r0, r5, r4 + ldrb r0, [r0, #3] + lsrs r6, r0, #3 + movs r0, #1 + ands r6, r0 +_08017518: + ldrb r0, [r5, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + movs r1, #0x3f + ands r1, r0 + cmp r1, #4 + beq _08017564 + cmp r1, #4 + bgt _08017534 + cmp r1, #1 + beq _0801753E + b _080175D4 + .align 2, 0 +_08017530: .4byte gUnknown_2021C40 +_08017534: + cmp r1, #5 + beq _08017584 + cmp r1, #8 + beq _080175A8 + b _080175D4 +_0801753E: + ldr r5, _0801755C + ldr r4, _08017560 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0xe + lsls r0, r6, #4 + adds r1, r1, r0 + adds r1, r1, r4 + ldr r1, [r1] + b _080175C2 + .align 2, 0 +_0801755C: .4byte gUnknown_2021C7C +_08017560: .4byte gUnknown_82C1498 +_08017564: + ldr r5, _0801757C + ldr r4, _08017580 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + lsls r1, r6, #4 + b _080175BC + .align 2, 0 +_0801757C: .4byte gUnknown_2021C7C +_08017580: .4byte gUnknown_82C1668 +_08017584: + ldr r5, _080175A0 + ldr r4, _080175A4 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0xe + lsls r0, r6, #4 + adds r1, r1, r0 + adds r1, r1, r4 + ldr r1, [r1] + b _080175C2 + .align 2, 0 +_080175A0: .4byte gUnknown_2021C7C +_080175A4: .4byte gUnknown_82C1564 +_080175A8: + ldr r5, _080175CC + ldr r4, _080175D0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + lsls r1, r6, #3 +_080175BC: + adds r0, r0, r1 + adds r0, r0, r4 + ldr r1, [r0] +_080175C2: + adds r0, r5, #0 + bl sub_08008BCC + b _080175DC + .align 2, 0 +_080175CC: .4byte gUnknown_2021C7C +_080175D0: .4byte gUnknown_82C15E8 +_080175D4: + ldr r0, _080175E4 + ldr r1, _080175E8 + bl sub_08008BCC +_080175DC: + movs r0, #0 +_080175DE: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080175E4: .4byte gUnknown_2021C7C +_080175E8: .4byte gUnknown_82C0FE0 + thumb_func_end sub_08017484 + + thumb_func_start sub_080175EC +sub_080175EC: @ 0x080175EC + bx lr + .align 2, 0 + thumb_func_end sub_080175EC + + thumb_func_start sub_080175F0 +sub_080175F0: @ 0x080175F0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r4, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + ldrh r0, [r2, #8] + lsls r0, r0, #0x16 + lsrs r4, r0, #0x16 + ldrb r0, [r2, #9] + lsrs r0, r0, #2 + mov r8, r0 + ldrb r0, [r2, #0xb] + lsrs r0, r0, #1 + mov sb, r0 + str r5, [sp] + str r7, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + adds r2, r3, #0 + movs r3, #0xa + bl sub_08016EA4 + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bne _08017648 + ldr r2, _08017644 + str r5, [sp] + str r7, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + movs r3, #0x46 + bl sub_08016EA4 + b _0801769E + .align 2, 0 +_08017644: .4byte gUnknown_82C19AC +_08017648: + mov r1, r8 + adds r1, #1 + adds r0, r6, #0 + movs r2, #0x46 + adds r3, r5, #0 + bl sub_08199F90 + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #1 + ldr r0, _080176AC + adds r2, r2, r0 + str r5, [sp] + str r7, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + movs r3, #0x78 + bl sub_08016EA4 + add r0, sp, #8 + mov r1, sb + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + movs r0, #1 + add r1, sp, #8 + movs r2, #0 + bl sub_08005DAC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r3, #0xdc + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r7, [sp, #4] + adds r0, r6, #0 + movs r1, #1 + add r2, sp, #8 + bl sub_08016EA4 +_0801769E: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080176AC: .4byte gUnknown_82EA31C + thumb_func_end sub_080175F0 + + thumb_func_start sub_080176B0 +sub_080176B0: @ 0x080176B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + ldr r0, _08017700 + ldr r0, [r0] + mov r8, r0 + movs r0, #3 + rsbs r0, r0, #0 + cmp r4, r0 + bne _0801772C + cmp r2, #1 + bne _0801772C + bl sub_0800F29C + adds r2, r0, #0 + ldrh r1, [r2, #8] + ldr r0, _08017704 + ands r0, r1 + cmp r0, #0 + beq _08017760 + ldr r0, _08017708 + ldr r3, [r0] + movs r0, #5 + str r0, [sp] + mov r0, sl + movs r1, #1 + bl sub_080175F0 + b _08017760 + .align 2, 0 +_08017700: .4byte gUnknown_20228E4 +_08017704: .4byte 0x000003FF +_08017708: .4byte gUnknown_3005AF0 +_0801770C: + adds r1, r7, r4 + adds r1, #0x10 + add r0, sp, #4 + bl sub_080088B8 + mov r0, r8 + ldr r2, [r0] + adds r2, r2, r4 + movs r0, #6 + str r0, [sp] + mov r0, sl + mov r1, sb + add r3, sp, #4 + bl sub_080175F0 + b _08017760 +_0801772C: + movs r5, #0 + movs r1, #0 + mov r0, r8 + ldr r7, [r0] + adds r2, r7, #0 + adds r2, #8 + movs r3, #0 + adds r6, r4, #1 +_0801773C: + ldrb r0, [r2, #0x12] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r4, r3, #0 + cmp r0, #1 + bne _08017752 + ldrh r0, [r2] + lsls r0, r0, #0x16 + cmp r0, #0 + beq _08017752 + adds r5, #1 +_08017752: + cmp r5, r6 + beq _0801770C + adds r2, #0x20 + adds r3, #0x20 + adds r1, #1 + cmp r1, #7 + ble _0801773C +_08017760: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080176B0 + + thumb_func_start sub_08017770 +sub_08017770: @ 0x08017770 + push {r4, r5, r6, r7, lr} + movs r4, #0 + movs r3, #0 + movs r7, #3 + ldr r6, _080177A0 + adds r2, r0, #0 + adds r2, #8 + adds r5, r1, #1 +_08017780: + ldrb r1, [r2, #0x12] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #1 + bne _08017796 + ldrh r1, [r2] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08017796 + adds r4, #1 +_08017796: + cmp r4, r5 + bne _080177A4 + adds r0, r3, #0 + b _080177B0 + .align 2, 0 +_080177A0: .4byte 0x000003FF +_080177A4: + adds r2, #0x20 + adds r3, #1 + cmp r3, #7 + ble _08017780 + movs r0, #1 + rsbs r0, r0, #0 +_080177B0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08017770 + + thumb_func_start sub_080177B8 +sub_080177B8: @ 0x080177B8 + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #0xb] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bx lr + thumb_func_end sub_080177B8 + + thumb_func_start sub_080177C4 +sub_080177C4: @ 0x080177C4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _08017804 + movs r4, #0 + b _080177EE +_080177D4: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _080177FC + adds r0, r0, r1 + movs r1, #0x41 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _08017834 + adds r4, #1 +_080177EE: + ldr r0, _08017800 + ldrb r0, [r0] + cmp r4, r0 + blt _080177D4 + movs r0, #2 + b _08017850 + .align 2, 0 +_080177FC: .4byte gUnknown_2024190 +_08017800: .4byte gUnknown_202418D +_08017804: + movs r4, #0 + ldr r0, _08017838 + ldrb r0, [r0] + cmp r4, r0 + bge _0801784E + ldr r6, _0801783C +_08017810: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08017840 + adds r0, r0, r1 + movs r1, #0x41 + bl sub_0806A058 + adds r1, r0, #0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + ldrb r0, [r1, #6] + cmp r0, r5 + beq _08017834 + ldrb r0, [r1, #7] + cmp r0, r5 + bne _08017844 +_08017834: + movs r0, #0 + b _08017850 + .align 2, 0 +_08017838: .4byte gUnknown_202418D +_0801783C: .4byte gUnknown_82F0D54 +_08017840: .4byte gUnknown_2024190 +_08017844: + adds r4, #1 + ldr r0, _08017858 + ldrb r0, [r0] + cmp r4, r0 + blt _08017810 +_0801784E: + movs r0, #1 +_08017850: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08017858: .4byte gUnknown_202418D + thumb_func_end sub_080177C4 + + thumb_func_start sub_0801785C +sub_0801785C: @ 0x0801785C + push {lr} + adds r3, r0, #0 + cmp r1, #0x44 + beq _08017898 + cmp r1, #0x44 + bgt _0801786E + cmp r1, #0x41 + beq _08017878 + b _080178B6 +_0801786E: + cmp r1, #0x45 + beq _08017888 + cmp r1, #0x48 + beq _080178A8 + b _080178B6 +_08017878: + ldr r0, _08017884 + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + b _0801789A + .align 2, 0 +_08017884: .4byte gUnknown_82C1224 +_08017888: + ldr r0, _08017894 + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + b _0801789A + .align 2, 0 +_08017894: .4byte gUnknown_82C13C4 +_08017898: + ldr r1, _080178A4 +_0801789A: + adds r0, r3, #0 + bl sub_08008BCC + b _080178B6 + .align 2, 0 +_080178A4: .4byte gUnknown_82C1998 +_080178A8: + ldr r0, _080178BC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r3, #0 + bl sub_08008BCC +_080178B6: + pop {r0} + bx r0 + .align 2, 0 +_080178BC: .4byte gUnknown_82C127C + thumb_func_end sub_0801785C + + thumb_func_start sub_080178C0 +sub_080178C0: @ 0x080178C0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r6, r4, #0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080178F4 + movs r0, #1 + adds r1, r3, #0 + eors r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x13] + cmp r4, #0x44 + beq _08017914 + cmp r4, #0x44 + bgt _080178F8 + cmp r4, #0x41 + beq _080178FE + b _08017954 + .align 2, 0 +_080178F4: .4byte gUnknown_20226A0 +_080178F8: + cmp r6, #0x45 + beq _08017938 + b _08017954 +_080178FE: + ldr r2, _08017910 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08017926 + .align 2, 0 +_08017910: .4byte gUnknown_82C1188 +_08017914: + ldr r2, _08017934 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r2, #8 +_08017926: + adds r1, r1, r2 + ldr r1, [r1] + adds r0, r5, #0 + bl sub_080088B8 + b _08017954 + .align 2, 0 +_08017934: .4byte gUnknown_82C1188 +_08017938: + ldr r2, _0801795C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r2, #4 + adds r1, r1, r2 + ldr r1, [r1] + adds r0, r5, #0 + bl sub_080088B8 +_08017954: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801795C: .4byte gUnknown_82C1188 + thumb_func_end sub_080178C0 + + thumb_func_start sub_08017960 +sub_08017960: @ 0x08017960 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r6, r2, #0 + adds r5, r3, #0 + movs r2, #0 + mov r8, r2 + ldrh r0, [r6] + subs r0, #0x40 + cmp r0, #8 + bls _0801797A + b _08017A82 +_0801797A: + lsls r0, r0, #2 + ldr r1, _08017984 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08017984: .4byte _08017988 +_08017988: @ jump table + .4byte _08017A78 @ case 0 + .4byte _080179AC @ case 1 + .4byte _08017A82 @ case 2 + .4byte _08017A82 @ case 3 + .4byte _080179E8 @ case 4 + .4byte _080179B4 @ case 5 + .4byte _08017A82 @ case 6 + .4byte _08017A82 @ case 7 + .4byte _08017A68 @ case 8 +_080179AC: + ldr r1, _080179B0 + b _08017A6A + .align 2, 0 +_080179B0: .4byte gUnknown_82C0E1C +_080179B4: + ldr r1, _080179B8 + b _08017A6A + .align 2, 0 +_080179B8: .4byte gUnknown_82C0E40 +_080179BC: + adds r0, r5, #0 + adds r0, #0x6c + ldrh r1, [r6, #4] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r5, #0 + adds r0, #0x76 + ldrh r2, [r6, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080179E4 + adds r1, r1, r2 + bl sub_080088B8 + ldrh r6, [r6, #2] + mov r8, r6 + b _08017A20 + .align 2, 0 +_080179E4: .4byte gUnknown_82EA31C +_080179E8: + adds r0, r5, #0 + adds r0, #0x58 + ldr r4, _08017A34 + ldrh r1, [r4, #0xc] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r5, #0 + adds r0, #0x62 + ldrh r2, [r4, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _08017A38 + adds r1, r1, r2 + bl sub_080088B8 + movs r4, #0 + ldr r0, _08017A3C + ldr r1, [r0] +_08017A12: + ldrh r0, [r1, #0x18] + cmp r0, #2 + beq _080179BC + adds r1, #0x20 + adds r4, #1 + cmp r4, #3 + ble _08017A12 +_08017A20: + movs r0, #0xce + lsls r0, r0, #1 + cmp r8, r0 + bne _08017A44 + ldr r1, _08017A40 + adds r0, r7, #0 + bl sub_080088B8 + b _08017A70 + .align 2, 0 +_08017A34: .4byte gUnknown_20228F4 +_08017A38: .4byte gUnknown_82EA31C +_08017A3C: .4byte gUnknown_3007630 +_08017A40: .4byte gUnknown_82C0EA8 +_08017A44: + movs r4, #0 + adds r5, #0x58 +_08017A48: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + bl sub_081AF8E4 + adds r5, #0xa + adds r4, #1 + cmp r4, #3 + ble _08017A48 + ldr r1, _08017A64 + adds r0, r7, #0 + bl sub_081AF900 + b _08017A70 + .align 2, 0 +_08017A64: .4byte gUnknown_82C0E68 +_08017A68: + ldr r1, _08017A74 +_08017A6A: + adds r0, r7, #0 + bl sub_08008BCC +_08017A70: + movs r2, #1 + b _08017A82 + .align 2, 0 +_08017A74: .4byte gUnknown_82C0DEC +_08017A78: + ldr r1, _08017A90 + adds r0, r7, #0 + bl sub_08008BCC + movs r2, #2 +_08017A82: + adds r0, r2, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08017A90: .4byte gUnknown_82C0ED4 + thumb_func_end sub_08017960 + + thumb_func_start sub_08017A94 +sub_08017A94: @ 0x08017A94 + push {lr} + adds r2, r0, #0 + ldr r0, _08017AB4 + ldrh r1, [r0, #2] + cmp r1, #0 + beq _08017AB8 + cmp r1, #0x51 + beq _08017AA8 + cmp r1, #0x52 + bne _08017AB8 +_08017AA8: + adds r0, r2, #0 + adds r0, #0x80 + strh r1, [r0] + movs r0, #1 + b _08017ABA + .align 2, 0 +_08017AB4: .4byte gUnknown_3003130 +_08017AB8: + movs r0, #0 +_08017ABA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08017A94 + + thumb_func_start sub_08017AC0 +sub_08017AC0: @ 0x08017AC0 + push {lr} + movs r2, #0 + ldr r0, _08017AD8 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _08017ADC + cmp r1, r0 + bne _08017AD2 + movs r2, #1 +_08017AD2: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_08017AD8: .4byte gUnknown_3005AEC +_08017ADC: .4byte 0x00003C19 + thumb_func_end sub_08017AC0 + + thumb_func_start sub_08017AE0 +sub_08017AE0: @ 0x08017AE0 + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 + ldr r0, _08017B28 + ldrb r0, [r0] + cmp r6, r0 + bge _08017B20 +_08017AEE: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08017B2C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x1e + bhi _08017B16 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08017B16 + adds r6, #1 +_08017B16: + adds r5, #1 + ldr r0, _08017B28 + ldrb r0, [r0] + cmp r5, r0 + blt _08017AEE +_08017B20: + cmp r6, #1 + bgt _08017B30 + movs r0, #0 + b _08017B32 + .align 2, 0 +_08017B28: .4byte gUnknown_202418D +_08017B2C: .4byte gUnknown_2024190 +_08017B30: + movs r0, #1 +_08017B32: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08017AE0 + + thumb_func_start sub_08017B38 +sub_08017B38: @ 0x08017B38 + movs r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + str r1, [r0, #4] + 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_08017B38 + + thumb_func_start sub_08017B4C +sub_08017B4C: @ 0x08017B4C + push {lr} + ldr r0, _08017B58 + bl sub_08017B38 + pop {r0} + bx r0 + .align 2, 0 +_08017B58: .4byte gUnknown_20228F4 + thumb_func_end sub_08017B4C + + thumb_func_start sub_08017B5C +sub_08017B5C: @ 0x08017B5C + push {r4, r5, lr} + adds r5, r1, #0 + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _08017B98 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + strh r0, [r5, #0xa] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + strh r0, [r5, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r5, #4] + ldrh r1, [r5, #0xa] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _08017B9C + movs r0, #0 + b _08017B9E + .align 2, 0 +_08017B98: .4byte gUnknown_2024190 +_08017B9C: + movs r0, #1 +_08017B9E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08017B5C + + thumb_func_start sub_08017BA4 +sub_08017BA4: @ 0x08017BA4 + push {r4, r5, lr} + adds r5, r1, #0 + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _08017BD8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + strh r0, [r5, #0xe] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + strh r0, [r5, #0x10] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r5, #0x14] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08017BD8: .4byte gUnknown_2024190 + thumb_func_end sub_08017BA4 + + thumb_func_start sub_08017BDC +sub_08017BDC: @ 0x08017BDC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r1, r1, #0x18 + movs r2, #0 + mov r8, r2 + cmp r1, #0 + bne _08017BFA + ldrh r7, [r0, #0xa] + ldr r6, [r0, #4] + b _08017BFE +_08017BF2: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + b _08017C32 +_08017BFA: + ldrh r7, [r0, #0xe] + ldr r6, [r0, #0x14] +_08017BFE: + movs r5, #0 + b _08017C2A +_08017C02: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08017C40 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + cmp r0, r6 + bne _08017C28 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r7 + beq _08017BF2 +_08017C28: + adds r5, #1 +_08017C2A: + ldr r0, _08017C44 + ldrb r0, [r0] + cmp r5, r0 + blt _08017C02 +_08017C32: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08017C40: .4byte gUnknown_2024190 +_08017C44: .4byte gUnknown_202418D + thumb_func_end sub_08017BDC + + thumb_func_start sub_08017C48 +sub_08017C48: @ 0x08017C48 + push {r4, lr} + adds r4, r0, #0 + bl sub_08016E74 + bl sub_080987E8 + bl sub_08097EAC + ldr r1, _08017C80 + movs r0, #0 + strb r0, [r1] + cmp r4, #0 + beq _08017C78 + ldr r2, _08017C84 + ldrh r0, [r2, #2] + ldrh r1, [r2, #0xa] + ldrh r2, [r2, #0xc] + bl sub_08010ABC + movs r0, #0x40 + movs r1, #0 + movs r2, #0 + bl sub_08010B80 +_08017C78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08017C80: .4byte gUnknown_20228E0 +_08017C84: .4byte gUnknown_20228F4 + thumb_func_end sub_08017C48 + + thumb_func_start sub_08017C88 +sub_08017C88: @ 0x08017C88 + push {lr} + bl sub_080987DC + bl sub_08097D70 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08017C88 + + thumb_func_start sub_08017C98 +sub_08017C98: @ 0x08017C98 + push {r4, lr} + movs r3, #0x80 + movs r2, #0 + ldr r4, [r0, #0xc] +_08017CA0: + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r4, r0 + ldrb r0, [r1, #0x18] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08017CC8 + ldrb r0, [r1, #0xb] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + lsls r0, r0, #3 + orrs r3, r0 + ldrb r1, [r1, #2] + movs r0, #7 + ands r0, r1 + orrs r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + b _08017CD2 +_08017CC8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _08017CA0 +_08017CD2: + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08017C98 + + thumb_func_start sub_08017CDC +sub_08017CDC: @ 0x08017CDC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _08017E68 + adds r1, r1, r0 + mov r8, r1 + bl sub_081AF8C8 + mov r7, sb + adds r7, #0xa8 + bl sub_080686F0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xb + muls r1, r0, r1 + ldr r0, _08017E6C + adds r1, r1, r0 + adds r0, r7, #0 + bl sub_080088B8 + movs r0, #0 + adds r1, r7, #0 + bl sub_081AF8E4 + mov r1, r8 + adds r1, #0x30 + movs r0, #1 + bl sub_081AF8E4 + mov r6, sb + adds r6, #0xb7 + ldr r1, _08017E70 + mov r2, r8 + ldrb r0, [r2, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_080088B8 + movs r0, #2 + adds r1, r6, #0 + bl sub_081AF8E4 + mov r5, sb + adds r5, #0xc6 + mov r0, r8 + ldrh r1, [r0, #0xc] + adds r0, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + movs r0, #3 + adds r1, r5, #0 + bl sub_081AF8E4 + movs r2, #0xd5 + add r2, sb + mov sl, r2 + mov r0, r8 + ldrh r1, [r0, #0x10] + mov r0, sl + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + mov r4, sb + adds r4, #0xe4 + mov r2, r8 + ldrh r1, [r2, #0x12] + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + movs r0, #4 + mov r1, sl + bl sub_081AF8E4 + movs r0, #5 + adds r1, r4, #0 + bl sub_081AF8E4 + movs r4, #0xae + lsls r4, r4, #1 + add r4, sb + ldr r1, _08017E74 + adds r0, r4, #0 + bl sub_081AF900 + ldr r0, _08017E78 + adds r1, r4, #0 + bl sub_080088B8 + mov r0, r8 + ldrh r1, [r0, #0x14] + ldr r4, _08017E7C + cmp r1, r4 + ble _08017DC6 + adds r1, r4, #0 +_08017DC6: + adds r0, r7, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + movs r0, #0 + adds r1, r7, #0 + bl sub_081AF8E4 + mov r2, r8 + ldrh r1, [r2, #0x16] + cmp r1, r4 + ble _08017DE2 + adds r1, r4, #0 +_08017DE2: + adds r0, r6, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + movs r0, #2 + adds r1, r6, #0 + bl sub_081AF8E4 + mov r0, r8 + ldrh r1, [r0, #0x20] + adds r0, r5, #0 + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + movs r0, #3 + adds r1, r5, #0 + bl sub_081AF8E4 + movs r7, #0 + movs r6, #0x80 + lsls r6, r6, #0x13 + mov r5, r8 + adds r5, #0x28 + mov r4, sl +_08017E16: + ldrh r1, [r5] + adds r0, r4, #0 + bl sub_0811F180 + lsrs r0, r6, #0x18 + adds r1, r4, #0 + bl sub_081AF8E4 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r6, r6, r2 + adds r5, #2 + adds r4, #0xf + adds r7, #1 + cmp r7, #3 + ble _08017E16 + movs r4, #0xae + lsls r4, r4, #1 + add r4, sb + ldr r1, _08017E80 + adds r0, r4, #0 + bl sub_081AF900 + ldr r5, _08017E78 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088D8 + ldr r0, [sp] + cmp r0, #1 + bne _08017E88 + ldr r1, _08017E84 + adds r0, r4, #0 + bl sub_081AF900 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088D8 + b _08017EA8 + .align 2, 0 +_08017E68: .4byte gUnknown_20397F8 +_08017E6C: .4byte gUnknown_82E3564 +_08017E70: .4byte gUnknown_82C1F08 +_08017E74: .4byte gUnknown_82C1F1C +_08017E78: .4byte gUnknown_2021C7C +_08017E7C: .4byte 0x0000270F +_08017E80: .4byte gUnknown_82C1F54 +_08017E84: .4byte gUnknown_82C1FAC +_08017E88: + ldr r2, [sp] + cmp r2, #0 + bne _08017EA8 + ldr r0, _08017EB8 + mov r2, r8 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl sub_081AF900 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088D8 +_08017EA8: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08017EB8: .4byte gUnknown_82C1FA4 + thumb_func_end sub_08017CDC + + thumb_func_start sub_08017EBC +sub_08017EBC: @ 0x08017EBC + push {lr} + bl sub_08007144 + bl sub_08006EA0 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08017EBC + + thumb_func_start sub_08017ED0 +sub_08017ED0: @ 0x08017ED0 + push {lr} + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08017ED0 + + thumb_func_start sub_08017EE8 +sub_08017EE8: @ 0x08017EE8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r7, r0, #0 + ldr r0, _08017F08 + movs r1, #0x87 + lsls r1, r1, #3 + adds r6, r0, r1 + ldrb r0, [r6] + cmp r0, #1 + bne _08017EFE + b _0801800C +_08017EFE: + cmp r0, #1 + bgt _08017F0C + cmp r0, #0 + beq _08017F1A + b _080180D8 + .align 2, 0 +_08017F08: .4byte gUnknown_3002360 +_08017F0C: + cmp r0, #2 + bne _08017F12 + b _0801808C +_08017F12: + cmp r0, #3 + bne _08017F18 + b _080180AC +_08017F18: + b _080180D8 +_08017F1A: + movs r0, #0 + bl sub_080006F0 + bl sub_080A133C + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + bl sub_080B9710 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08018004 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #2 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + movs r0, #3 + bl sub_08019330 + ldr r0, _08018008 + bl sub_08003090 + bl sub_08004480 + movs r1, #0xc0 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001220 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + b _080180A4 + .align 2, 0 +_08018004: .4byte gUnknown_82C24A4 +_08018008: .4byte gUnknown_82C24B4 +_0801800C: + ldr r0, _08018088 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #2 + bl sub_080985A0 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0xc0 + bl sub_08197694 + movs r0, #0 + movs r1, #0xa + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #0 + movs r1, #1 + movs r2, #0xf0 + bl sub_08098144 + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #3 + bl sub_08018240 + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + bl sub_08018180 + b _080180A4 + .align 2, 0 +_08018088: .4byte gUnknown_82C2454 +_0801808C: + movs r0, #3 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #0 + bl sub_08002248 +_080180A4: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _080180D8 +_080180AC: + movs r0, #0 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r0, _080180D0 + bl sub_080A3040 + ldr r0, _080180D4 + bl sub_080006F0 + movs r0, #0xc5 + bl sub_08001274 + movs r0, #1 + b _080180DA + .align 2, 0 +_080180D0: .4byte 0x0000021D +_080180D4: .4byte sub_08017EBC +_080180D8: + movs r0, #0 +_080180DA: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08017EE8 + + thumb_func_start sub_080180E4 +sub_080180E4: @ 0x080180E4 + push {lr} + movs r0, #0 + bl sub_08017EE8 + cmp r0, #0 + beq _08018100 + ldr r0, _08018108 + bl sub_08000540 + ldr r1, _0801810C + movs r0, #0 + strb r0, [r1] + bl sub_08018C14 +_08018100: + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 +_08018108: .4byte sub_08017ED0 +_0801810C: .4byte gUnknown_2022914 + thumb_func_end sub_080180E4 + + thumb_func_start sub_08018110 +sub_08018110: @ 0x08018110 + push {lr} + movs r0, #1 + bl sub_08017EE8 + cmp r0, #0 + beq _0801812C + ldr r0, _08018130 + bl sub_08000540 + ldr r1, _08018134 + movs r0, #1 + strb r0, [r1] + bl sub_081D4694 +_0801812C: + pop {r0} + bx r0 + .align 2, 0 +_08018130: .4byte sub_08017ED0 +_08018134: .4byte gUnknown_2022914 + thumb_func_end sub_08018110 + + thumb_func_start sub_08018138 +sub_08018138: @ 0x08018138 + push {lr} + ldr r1, _08018178 + movs r0, #0 + strb r0, [r1] + bl sub_080034D4 + movs r0, #0 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #2 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #3 + bl sub_08002194 + bl sub_08000BF0 + ldr r0, _0801817C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08018178: .4byte gUnknown_2022914 +_0801817C: .4byte sub_080AA06C + thumb_func_end sub_08018138 + + thumb_func_start sub_08018180 +sub_08018180: @ 0x08018180 + push {r4, r5, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + cmp r5, #0 + bne _080181D4 + str r5, [sp] + str r5, [sp, #4] + ldr r4, _080181C8 + str r4, [sp, #8] + str r5, [sp, #0xc] + ldr r0, _080181CC + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08199B84 + str r5, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + ldr r0, _080181D0 + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #0 + movs r2, #0x64 + movs r3, #2 + bl sub_08199B84 + b _08018208 + .align 2, 0 +_080181C8: .4byte gUnknown_82C2B64 +_080181CC: .4byte gUnknown_82C2B44 +_080181D0: .4byte gUnknown_82C2B50 +_080181D4: + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + ldr r5, _08018220 + str r5, [sp, #8] + str r4, [sp, #0xc] + ldr r0, _08018224 + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08199B84 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + str r4, [sp, #0xc] + ldr r0, _08018228 + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #0 + movs r2, #0x78 + movs r3, #2 + bl sub_08199B84 +_08018208: + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_0800365C + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08018220: .4byte gUnknown_82C2B64 +_08018224: .4byte gUnknown_85CCED5 +_08018228: .4byte gUnknown_85CCEDF + thumb_func_end sub_08018180 + + thumb_func_start sub_0801822C +sub_0801822C: @ 0x0801822C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + movs r2, #0xf + bl sub_080981E0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801822C + + thumb_func_start sub_08018240 +sub_08018240: @ 0x08018240 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0 + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r0, r4, #0x18 + movs r1, #0x20 + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r1, #0x11 + str r1, [sp, #8] + movs r1, #3 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + mov r8, r4 + movs r4, #1 +_08018270: + movs r7, #0 + mov r0, sb + adds r0, #2 + movs r1, #1 + add r1, sb + mov sl, r1 + lsls r5, r0, #0x18 + movs r6, #0 +_08018280: + mov r1, sb + ands r1, r4 + adds r0, r7, #0 + ands r0, r4 + cmp r1, r0 + beq _080182A4 + lsrs r2, r6, #0x18 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + mov r1, r8 + lsrs r0, r1, #0x18 + movs r1, #1 + lsrs r3, r5, #0x18 + bl sub_080026E0 + b _080182BA +_080182A4: + lsrs r2, r6, #0x18 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + mov r1, r8 + lsrs r0, r1, #0x18 + movs r1, #2 + lsrs r3, r5, #0x18 + bl sub_080026E0 +_080182BA: + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r6, r6, r0 + adds r7, #1 + cmp r7, #0x1f + ble _08018280 + mov sb, sl + mov r1, sb + cmp r1, #0x11 + ble _08018270 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08018240 + + thumb_func_start sub_080182E0 +sub_080182E0: @ 0x080182E0 + push {lr} + sub sp, #0xc + cmp r0, #0 + beq _080182EE + cmp r0, #1 + beq _08018306 + b _0801831E +_080182EE: + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + b _0801831E +_08018306: + movs r0, #0x20 + str r0, [sp] + movs r0, #0x1e + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #2 + bl sub_080026E0 +_0801831E: + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080182E0 + + thumb_func_start sub_0801832C +sub_0801832C: @ 0x0801832C + push {r4, lr} + sub sp, #0x14 + adds r1, r0, #0 + ldr r4, _08018380 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + movs r1, #0 + str r1, [sp] + movs r0, #1 + str r0, [sp, #4] + ldr r0, _08018384 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r4, [sp, #0x10] + movs r0, #1 + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08199B84 + movs r0, #1 + movs r1, #1 + movs r2, #0xf + bl sub_080981E0 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08018380: .4byte gUnknown_2021C7C +_08018384: .4byte gUnknown_82C2B6C + thumb_func_end sub_0801832C + + thumb_func_start sub_08018388 +sub_08018388: @ 0x08018388 + push {lr} + movs r0, #1 + bl sub_08098504 + movs r0, #1 + bl sub_08003774 + movs r0, #1 + movs r1, #1 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08018388 + + thumb_func_start sub_080183A4 +sub_080183A4: @ 0x080183A4 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + adds r0, r1, #0 + ldrb r2, [r4] + cmp r2, #1 + beq _080183CC + cmp r2, #1 + bgt _080183BC + cmp r2, #0 + beq _080183C6 + b _0801842C +_080183BC: + cmp r2, #2 + beq _08018400 + cmp r2, #0xff + beq _08018428 + b _0801842C +_080183C6: + bl sub_0801832C + b _080183F0 +_080183CC: + movs r0, #0 + str r0, [sp] + ldr r0, _080183F8 + str r0, [sp, #4] + adds r0, #1 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0xd0 + movs r2, #0x14 + movs r3, #1 + bl sub_0800568C + ldr r0, _080183FC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0801842C +_080183F0: + ldrb r0, [r4] + adds r0, #1 + b _0801842A + .align 2, 0 +_080183F8: .4byte gUnknown_202290C +_080183FC: .4byte gUnknown_3002360 +_08018400: + movs r0, #1 + str r0, [sp] + ldr r0, _08018424 + str r0, [sp, #4] + adds r0, #1 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0xd0 + movs r2, #0x14 + movs r3, #1 + bl sub_0800568C + movs r0, #0 + strb r0, [r4] + bl sub_08018388 + movs r0, #1 + b _0801842E + .align 2, 0 +_08018424: .4byte gUnknown_202290C +_08018428: + movs r0, #2 +_0801842A: + strb r0, [r4] +_0801842C: + movs r0, #0 +_0801842E: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080183A4 + + thumb_func_start sub_08018438 +sub_08018438: @ 0x08018438 + push {lr} + sub sp, #0xc + movs r0, #0 + str r0, [sp] + ldr r0, _0801845C + str r0, [sp, #4] + adds r0, #1 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0xd0 + movs r2, #0x14 + movs r3, #1 + bl sub_0800568C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0801845C: .4byte gUnknown_202290C + thumb_func_end sub_08018438 + + thumb_func_start sub_08018460 +sub_08018460: @ 0x08018460 + push {lr} + sub sp, #0xc + movs r0, #1 + str r0, [sp] + ldr r0, _08018484 + str r0, [sp, #4] + adds r0, #1 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0xd0 + movs r2, #0x14 + movs r3, #1 + bl sub_0800568C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08018484: .4byte gUnknown_202290C + thumb_func_end sub_08018460 + + thumb_func_start sub_08018488 +sub_08018488: @ 0x08018488 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _08018498 + cmp r0, #1 + beq _080184B4 + b _080184C0 +_08018498: + bl sub_08018438 + ldr r0, _080184B0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080184C0 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _080184C0 + .align 2, 0 +_080184B0: .4byte gUnknown_3002360 +_080184B4: + bl sub_08018460 + movs r0, #0 + strb r0, [r4] + movs r0, #1 + b _080184C2 +_080184C0: + movs r0, #0 +_080184C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08018488 + + thumb_func_start sub_080184C8 +sub_080184C8: @ 0x080184C8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + bne _080184D8 + adds r0, r1, #0 + bl sub_0801832C +_080184D8: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x78 + bhi _080184EA + movs r0, #0 + b _080184F4 +_080184EA: + movs r0, #0 + strb r0, [r4] + bl sub_08018388 + movs r0, #1 +_080184F4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080184C8 + + thumb_func_start sub_080184FC +sub_080184FC: @ 0x080184FC + push {r4, r5, lr} + sub sp, #0x1c + lsls r2, r2, #0x18 + add r1, sp, #4 + ldr r0, _08018518 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + cmp r2, #0 + bne _08018520 + ldr r0, _0801851C + b _08018522 + .align 2, 0 +_08018518: .4byte gUnknown_82C256C +_0801851C: .4byte gUnknown_82C253C +_08018520: + ldr r0, _08018558 +_08018522: + str r0, [sp, #4] + ldr r0, _0801855C + movs r1, #0xe0 + str r1, [sp] + add r1, sp, #4 + movs r2, #1 + movs r3, #0xa + bl sub_081AE134 + adds r4, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0801854C + movs r0, #2 + bl sub_08003774 + movs r0, #2 + movs r1, #1 + bl sub_08003528 +_0801854C: + adds r0, r4, #0 + add sp, #0x1c + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08018558: .4byte gUnknown_82C2554 +_0801855C: .4byte gUnknown_82C24EC + thumb_func_end sub_080184FC + + thumb_func_start sub_08018560 +sub_08018560: @ 0x08018560 + push {r4, r5, r6, lr} + sub sp, #0x1c + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r3, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldrb r0, [r5] + cmp r0, #1 + beq _080185F4 + cmp r0, #1 + bgt _0801857E + cmp r0, #0 + beq _0801858A + b _080186A6 +_0801857E: + cmp r0, #2 + beq _0801864C + cmp r0, #0xff + bne _08018588 + b _08018682 +_08018588: + b _080186A6 +_0801858A: + ldr r0, _08018598 + bl sub_08008BCC + cmp r6, #0 + bne _080185A0 + ldr r0, _0801859C + b _080185A2 + .align 2, 0 +_08018598: .4byte gUnknown_2021C7C +_0801859C: .4byte gUnknown_82C24D4 +_080185A0: + ldr r0, _080185E8 +_080185A2: + bl sub_08003250 + strh r0, [r4] + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4] + movs r2, #0 + str r2, [sp] + movs r1, #1 + str r1, [sp, #4] + ldr r1, _080185EC + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r1, _080185F0 + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08199B84 + ldrb r0, [r4] + movs r1, #1 + movs r2, #0xf + bl sub_080981E0 + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r4] + bl sub_0800365C + b _0801863E + .align 2, 0 +_080185E8: .4byte gUnknown_82C24DC +_080185EC: .4byte gUnknown_82C2B6C +_080185F0: .4byte gUnknown_2021C7C +_080185F4: + ldr r0, _08018610 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + cmp r6, #0 + bne _08018618 + ldr r0, _08018614 + ldr r1, [sp, #0x14] + ands r1, r0 + movs r0, #0x90 + lsls r0, r0, #0xc + b _08018622 + .align 2, 0 +_08018610: .4byte gUnknown_82C24F4 +_08018614: .4byte 0xFF00FFFF +_08018618: + ldr r0, _08018648 + ldr r1, [sp, #0x14] + ands r1, r0 + movs r0, #0xf0 + lsls r0, r0, #0xc +_08018622: + orrs r1, r0 + str r1, [sp, #0x14] + movs r0, #0xa + str r0, [sp] + movs r0, #0xe + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + add r0, sp, #0x14 + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 +_0801863E: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _080186A6 + .align 2, 0 +_08018648: .4byte 0xFF00FFFF +_0801864C: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r6, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _080186A6 + movs r0, #0 + strb r0, [r5] + ldrb r0, [r4] + bl sub_08098504 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r4] + bl sub_08003444 + adds r0, r6, #0 + b _080186AA +_08018682: + movs r0, #0 + strb r0, [r5] + ldrb r0, [r4] + bl sub_08098504 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #1 + rsbs r0, r0, #0 + b _080186AA +_080186A6: + movs r0, #2 + rsbs r0, r0, #0 +_080186AA: + add sp, #0x1c + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08018560 + + thumb_func_start sub_080186B4 +sub_080186B4: @ 0x080186B4 + push {r4, r5, r6, lr} + sub sp, #0x14 + adds r6, r0, #0 + adds r5, r1, #0 + ldrb r0, [r6] + cmp r0, #1 + beq _08018754 + cmp r0, #1 + bgt _080186CC + cmp r0, #0 + beq _080186D4 + b _080187F8 +_080186CC: + cmp r0, #0xff + bne _080186D2 + b _080187D4 +_080186D2: + b _080187F8 +_080186D4: + cmp r2, #0 + bne _080186EC + ldr r0, _080186E4 + ldr r1, _080186E8 + bl sub_08008BCC + b _080186F4 + .align 2, 0 +_080186E4: .4byte gUnknown_2021C7C +_080186E8: .4byte gUnknown_82C2974 +_080186EC: + ldr r0, _08018744 + ldr r1, _08018748 + bl sub_08008BCC +_080186F4: + ldr r0, _0801874C + bl sub_08003250 + strh r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5] + movs r2, #0 + str r2, [sp] + movs r1, #1 + str r1, [sp, #4] + ldr r1, _08018750 + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r1, _08018744 + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08199B84 + ldrb r0, [r5] + movs r1, #1 + movs r2, #0xf + bl sub_080981E0 + ldrb r0, [r5] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r5] + bl sub_0800365C + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _080187F8 + .align 2, 0 +_08018744: .4byte gUnknown_2021C7C +_08018748: .4byte gUnknown_82C2984 +_0801874C: .4byte gUnknown_82C24E4 +_08018750: .4byte gUnknown_82C2B6C +_08018754: + cmp r3, #0 + beq _0801877C + cmp r2, #0 + bne _0801876C + ldr r0, _08018764 + ldr r1, _08018768 + b _08018794 + .align 2, 0 +_08018764: .4byte gUnknown_82C2504 +_08018768: .4byte gUnknown_82C260C +_0801876C: + ldr r0, _08018774 + ldr r1, _08018778 + b _08018794 + .align 2, 0 +_08018774: .4byte gUnknown_82C250C +_08018778: .4byte gUnknown_82C263C +_0801877C: + cmp r2, #0 + bne _08018790 + ldr r0, _08018788 + ldr r1, _0801878C + b _08018794 + .align 2, 0 +_08018788: .4byte gUnknown_82C24FC +_0801878C: .4byte gUnknown_82C25F4 +_08018790: + ldr r0, _080187CC + ldr r1, _080187D0 +_08018794: + movs r2, #0xe0 + str r2, [sp] + movs r2, #1 + movs r3, #0xa + bl sub_081AE134 + adds r4, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _080187F8 + movs r0, #0 + strb r0, [r6] + ldrb r0, [r5] + bl sub_08098504 + ldrb r0, [r5] + bl sub_08003774 + ldrb r0, [r5] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r5] + bl sub_08003444 + adds r0, r4, #0 + b _080187FC + .align 2, 0 +_080187CC: .4byte gUnknown_82C2504 +_080187D0: .4byte gUnknown_82C2624 +_080187D4: + movs r0, #0 + strb r0, [r6] + ldrb r0, [r5] + bl sub_08098504 + ldrb r0, [r5] + bl sub_08003774 + ldrb r0, [r5] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r5] + bl sub_08003444 + movs r0, #2 + rsbs r0, r0, #0 + b _080187FC +_080187F8: + movs r0, #1 + rsbs r0, r0, #0 +_080187FC: + add sp, #0x14 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080186B4 + + thumb_func_start sub_08018804 +sub_08018804: @ 0x08018804 + push {lr} + cmp r0, #0 + beq _08018810 + bl sub_0801ABA0 + b _08018814 +_08018810: + bl sub_0801AD40 +_08018814: + pop {r1} + bx r1 + thumb_func_end sub_08018804 + + thumb_func_start sub_08018818 +sub_08018818: @ 0x08018818 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _08018828 + cmp r0, #1 + beq _08018850 + b _0801886C +_08018828: + cmp r1, #0 + bne _08018840 + bl sub_0801AAF4 + adds r4, r0, #0 + bl sub_0801AB08 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0801B5D8 + b _08018848 +_08018840: + bl sub_0801AAE0 + bl sub_0801C224 +_08018848: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0801886C +_08018850: + cmp r1, #0 + bne _0801885E + bl sub_0801B69C +_08018858: + cmp r0, #0 + bne _08018864 + b _0801886C +_0801885E: + bl sub_0801C2AC + b _08018858 +_08018864: + movs r0, #0 + strb r0, [r5] + movs r0, #1 + b _0801886E +_0801886C: + movs r0, #0 +_0801886E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08018818 + + thumb_func_start sub_08018874 +sub_08018874: @ 0x08018874 + push {lr} + cmp r0, #0 + bne _08018880 + bl sub_0801ACB0 + b _08018884 +_08018880: + bl sub_0801AB44 +_08018884: + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08018874 + + thumb_func_start sub_0801888C +sub_0801888C: @ 0x0801888C + push {lr} + cmp r0, #0 + bne _080188A0 + bl sub_0801B8B0 + cmp r0, #0 + beq _080188A8 + bl sub_0801B670 + b _080188B0 +_080188A0: + bl sub_0801C588 + cmp r0, #0 + bne _080188AC +_080188A8: + movs r0, #0 + b _080188B2 +_080188AC: + bl sub_0801C280 +_080188B0: + movs r0, #1 +_080188B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801888C + + thumb_func_start sub_080188B8 +sub_080188B8: @ 0x080188B8 + push {lr} + cmp r2, #0 + beq _080188C8 + ldr r3, _080188C4 + b _080188CA + .align 2, 0 +_080188C4: .4byte gUnknown_82C2AB4 +_080188C8: + ldr r3, _080188D8 +_080188CA: + movs r2, #1 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080188D8: .4byte gUnknown_82C2A94 + thumb_func_end sub_080188B8 + + thumb_func_start sub_080188DC +sub_080188DC: @ 0x080188DC + push {lr} + cmp r1, #0 + beq _080188EC + ldr r1, _080188E8 + b _080188EE + .align 2, 0 +_080188E8: .4byte gUnknown_82C2B38 +_080188EC: + ldr r1, _080188F8 +_080188EE: + bl sub_080183A4 + pop {r1} + bx r1 + .align 2, 0 +_080188F8: .4byte gUnknown_82C2B28 + thumb_func_end sub_080188DC + + thumb_func_start sub_080188FC +sub_080188FC: @ 0x080188FC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #4 + bhi _0801896C + lsls r0, r0, #2 + ldr r1, _08018910 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018910: .4byte _08018914 +_08018914: @ jump table + .4byte _08018928 @ case 0 + .4byte _08018934 @ case 1 + .4byte _0801893C @ case 2 + .4byte _08018948 @ case 3 + .4byte _08018960 @ case 4 +_08018928: + ldr r0, _08018930 + bl sub_0801832C + b _08018954 + .align 2, 0 +_08018930: .4byte gUnknown_82C2AEC +_08018934: + movs r0, #0 + bl sub_08153274 + b _08018954 +_0801893C: + ldr r0, _08018944 + bl sub_0801832C + b _08018954 + .align 2, 0 +_08018944: .4byte gUnknown_82C2B08 +_08018948: + ldr r0, _0801895C + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0801896C +_08018954: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801896C + .align 2, 0 +_0801895C: .4byte gUnknown_3002360 +_08018960: + movs r0, #0 + strb r0, [r4] + bl sub_08018388 + movs r0, #1 + b _0801896E +_0801896C: + movs r0, #0 +_0801896E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080188FC + + thumb_func_start sub_08018974 +sub_08018974: @ 0x08018974 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r2, #0 + str r2, [r4] + cmp r3, #0xe + bls _0801898A + b _08018A9C +_0801898A: + lsls r0, r3, #2 + ldr r1, _08018994 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018994: .4byte _08018998 +_08018998: @ jump table + .4byte _080189D4 @ case 0 + .4byte _080189E0 @ case 1 + .4byte _080189EC @ case 2 + .4byte _08018A04 @ case 3 + .4byte _08018A1C @ case 4 + .4byte _08018A28 @ case 5 + .4byte _08018A34 @ case 6 + .4byte _08018A40 @ case 7 + .4byte _08018A4C @ case 8 + .4byte _08018A58 @ case 9 + .4byte _08018A64 @ case 10 + .4byte _08018A7C @ case 11 + .4byte _08018A88 @ case 12 + .4byte _08018A94 @ case 13 + .4byte _08018A98 @ case 14 +_080189D4: + movs r0, #0 + str r0, [r4] + ldr r2, _080189DC + b _08018A9C + .align 2, 0 +_080189DC: .4byte gUnknown_82C2960 +_080189E0: + movs r0, #0 + str r0, [r4] + ldr r2, _080189E8 + b _08018A9C + .align 2, 0 +_080189E8: .4byte gUnknown_82C2904 +_080189EC: + movs r0, #1 + str r0, [r4] + ldr r2, _080189FC + cmp r5, #0 + bne _08018A9C + ldr r2, _08018A00 + b _08018A9C + .align 2, 0 +_080189FC: .4byte gUnknown_82C2804 +_08018A00: .4byte gUnknown_82C2838 +_08018A04: + movs r0, #1 + str r0, [r4] + ldr r2, _08018A14 + cmp r5, #0 + bne _08018A9C + ldr r2, _08018A18 + b _08018A9C + .align 2, 0 +_08018A14: .4byte gUnknown_82C2820 +_08018A18: .4byte gUnknown_82C2854 +_08018A1C: + movs r0, #1 + str r0, [r4] + ldr r2, _08018A24 + b _08018A9C + .align 2, 0 +_08018A24: .4byte gUnknown_82C286C +_08018A28: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A30 + b _08018A9C + .align 2, 0 +_08018A30: .4byte gUnknown_82C28A0 +_08018A34: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A3C + b _08018A9C + .align 2, 0 +_08018A3C: .4byte gUnknown_82C28D0 +_08018A40: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A48 + b _08018A9C + .align 2, 0 +_08018A48: .4byte gUnknown_82C28B8 +_08018A4C: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A54 + b _08018A9C + .align 2, 0 +_08018A54: .4byte gUnknown_82C28E8 +_08018A58: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A60 + b _08018A9C + .align 2, 0 +_08018A60: .4byte gUnknown_82C27A0 +_08018A64: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A74 + cmp r6, #0 + bne _08018A9C + ldr r2, _08018A78 + b _08018A9C + .align 2, 0 +_08018A74: .4byte gUnknown_82C2944 +_08018A78: .4byte gUnknown_82C2924 +_08018A7C: + movs r0, #0 + str r0, [r4] + ldr r2, _08018A84 + b _08018A9C + .align 2, 0 +_08018A84: .4byte gUnknown_82C2790 +_08018A88: + movs r0, #1 + str r0, [r4] + ldr r2, _08018A90 + b _08018A9C + .align 2, 0 +_08018A90: .4byte gUnknown_82C2884 +_08018A94: + movs r0, #1 + b _08018A9A +_08018A98: + movs r0, #0 +_08018A9A: + str r0, [r4] +_08018A9C: + adds r0, r2, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08018974 + + thumb_func_start sub_08018AA4 +sub_08018AA4: @ 0x08018AA4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + ldrb r4, [r6] + cmp r4, #1 + beq _08018AD6 + cmp r4, #1 + bgt _08018ABC + cmp r4, #0 + beq _08018AC2 + b _08018B02 +_08018ABC: + cmp r4, #2 + beq _08018AEC + b _08018B02 +_08018AC2: + cmp r0, #0 + beq _08018ACA + bl sub_0801832C +_08018ACA: + movs r0, #0xb9 + lsls r0, r0, #1 + bl sub_080A29AC + strh r4, [r5] + b _08018AE4 +_08018AD6: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf0 + bls _08018B02 +_08018AE4: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _08018B02 +_08018AEC: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08018B02 + movs r0, #0 + strb r0, [r6] + bl sub_08018388 + movs r0, #1 + b _08018B04 +_08018B02: + movs r0, #0 +_08018B04: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08018AA4 + + thumb_func_start sub_08018B0C +sub_08018B0C: @ 0x08018B0C + push {r4, lr} + adds r3, r0, #0 + ldr r1, _08018B28 + movs r0, #0 + str r0, [r3] + adds r4, r1, #0 + cmp r2, #0xe + bhi _08018BCE + lsls r0, r2, #2 + ldr r1, _08018B2C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018B28: .4byte gUnknown_82C2790 +_08018B2C: .4byte _08018B30 +_08018B30: @ jump table + .4byte _08018B6C @ case 0 + .4byte _08018B74 @ case 1 + .4byte _08018B7C @ case 2 + .4byte _08018B84 @ case 3 + .4byte _08018B90 @ case 4 + .4byte _08018B98 @ case 5 + .4byte _08018BA0 @ case 6 + .4byte _08018BA8 @ case 7 + .4byte _08018BB0 @ case 8 + .4byte _08018BB8 @ case 9 + .4byte _08018BCC @ case 10 + .4byte _08018BC0 @ case 11 + .4byte _08018BC4 @ case 12 + .4byte _08018BC4 @ case 13 + .4byte _08018BCC @ case 14 +_08018B6C: + ldr r1, _08018B70 + b _08018BCE + .align 2, 0 +_08018B70: .4byte gUnknown_82C2960 +_08018B74: + ldr r1, _08018B78 + b _08018BCE + .align 2, 0 +_08018B78: .4byte gUnknown_82C2904 +_08018B7C: + ldr r1, _08018B80 + b _08018B86 + .align 2, 0 +_08018B80: .4byte gUnknown_82C29C0 +_08018B84: + ldr r1, _08018B8C +_08018B86: + movs r0, #1 + str r0, [r3] + b _08018BCE + .align 2, 0 +_08018B8C: .4byte gUnknown_82C29D8 +_08018B90: + ldr r1, _08018B94 + b _08018BCE + .align 2, 0 +_08018B94: .4byte gUnknown_82C29EC +_08018B98: + ldr r1, _08018B9C + b _08018BCE + .align 2, 0 +_08018B9C: .4byte gUnknown_82C2A14 +_08018BA0: + ldr r1, _08018BA4 + b _08018BCE + .align 2, 0 +_08018BA4: .4byte gUnknown_82C2A48 +_08018BA8: + ldr r1, _08018BAC + b _08018BCE + .align 2, 0 +_08018BAC: .4byte gUnknown_82C2A30 +_08018BB0: + ldr r1, _08018BB4 + b _08018BCE + .align 2, 0 +_08018BB4: .4byte gUnknown_82C28E8 +_08018BB8: + ldr r1, _08018BBC + b _08018BCE + .align 2, 0 +_08018BBC: .4byte gUnknown_82C2A60 +_08018BC0: + adds r1, r4, #0 + b _08018BCE +_08018BC4: + ldr r1, _08018BC8 + b _08018BCE + .align 2, 0 +_08018BC8: .4byte gUnknown_82C2A00 +_08018BCC: + ldr r1, _08018BD8 +_08018BCE: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08018BD8: .4byte gUnknown_82C2A78 + thumb_func_end sub_08018B0C + + thumb_func_start sub_08018BDC +sub_08018BDC: @ 0x08018BDC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sp + bl sub_08018B0C + adds r1, r0, #0 + ldr r0, [sp] + cmp r0, #0 + bne _08018C02 + adds r0, r4, #0 + bl sub_080183A4 + b _08018C0A +_08018C02: + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08018AA4 +_08018C0A: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08018BDC + + thumb_func_start sub_08018C14 +sub_08018C14: @ 0x08018C14 + push {r4, lr} + ldr r0, _08018C54 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08018C58 + adds r4, r4, r0 + movs r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #9] + 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, #2] + strh r0, [r4, #4] + strh r0, [r4, #6] + strb r1, [r4, #0xe] + movs r0, #0x40 + bl sub_08000BDC + str r0, [r4, #0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08018C54: .4byte sub_08018C5C +_08018C58: .4byte gUnknown_3005B68 + thumb_func_end sub_08018C14 + + thumb_func_start sub_08018C5C +sub_08018C5C: @ 0x08018C5C + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08018C80 + adds r5, r0, r1 + ldrb r0, [r5, #8] + cmp r0, #0x25 + bls _08018C76 + b _0801931A +_08018C76: + lsls r0, r0, #2 + ldr r1, _08018C84 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018C80: .4byte gUnknown_3005B68 +_08018C84: .4byte _08018C88 +_08018C88: @ jump table + .4byte _08018D20 @ case 0 + .4byte _08018D26 @ case 1 + .4byte _08018D64 @ case 2 + .4byte _08018D8C @ case 3 + .4byte _08018DB0 @ case 4 + .4byte _08018DFC @ case 5 + .4byte _08018E5A @ case 6 + .4byte _08018E90 @ case 7 + .4byte _08018EA0 @ case 8 + .4byte _08018F10 @ case 9 + .4byte _08018F34 @ case 10 + .4byte _08018F4C @ case 11 + .4byte _08018F7C @ case 12 + .4byte _08018FB6 @ case 13 + .4byte _08018FCC @ case 14 + .4byte _08018FFC @ case 15 + .4byte _080192EC @ case 16 + .4byte _08019056 @ case 17 + .4byte _08019066 @ case 18 + .4byte _0801931A @ case 19 + .4byte _08019078 @ case 20 + .4byte _080190C2 @ case 21 + .4byte _08019130 @ case 22 + .4byte _0801915E @ case 23 + .4byte _08019190 @ case 24 + .4byte _080191A6 @ case 25 + .4byte _080191B8 @ case 26 + .4byte _080191C4 @ case 27 + .4byte _080191CC @ case 28 + .4byte _080191DC @ case 29 + .4byte _0801920A @ case 30 + .4byte _08019238 @ case 31 + .4byte _0801927C @ case 32 + .4byte _0801928E @ case 33 + .4byte _080192A8 @ case 34 + .4byte _080192BC @ case 35 + .4byte _080192EC @ case 36 + .4byte _08019304 @ case 37 +_08018D20: + movs r0, #1 +_08018D22: + strb r0, [r5, #8] + b _0801931A +_08018D26: + adds r0, r5, #0 + adds r0, #9 + adds r1, r5, #0 + movs r2, #0 + bl sub_080184FC + adds r1, r0, #0 + cmp r1, #1 + beq _08018D50 + cmp r1, #1 + blo _08018D46 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08018D60 + b _0801931A +_08018D46: + movs r0, #0 + strb r0, [r5, #0xc] + bl sub_0801AD40 + b _08018D56 +_08018D50: + strb r1, [r5, #0xc] + bl sub_0801ABA0 +_08018D56: + cmp r0, #1 + bne _08018D5C + b _08019230 +_08018D5C: + movs r0, #2 + b _08018D22 +_08018D60: + movs r0, #0x25 + b _08018D22 +_08018D64: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08018D7C + adds r0, r5, #0 + adds r0, #9 + ldr r1, _08018D78 + bl sub_080183A4 + b _080191D2 + .align 2, 0 +_08018D78: .4byte gUnknown_82C26C4 +_08018D7C: + adds r0, r5, #0 + adds r0, #9 + ldr r1, _08018D88 + bl sub_080183A4 + b _080191D2 + .align 2, 0 +_08018D88: .4byte gUnknown_82C26E8 +_08018D8C: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08018DA0 + ldr r0, _08018D9C + bl sub_0801832C + b _08018DA6 + .align 2, 0 +_08018D9C: .4byte gUnknown_82C2710 +_08018DA0: + ldr r0, _08018DAC + bl sub_0801832C +_08018DA6: + movs r0, #4 + b _08018D22 + .align 2, 0 +_08018DAC: .4byte gUnknown_82C272C +_08018DB0: + adds r0, r5, #0 + adds r0, #9 + adds r1, r5, #0 + movs r2, #1 + bl sub_080184FC + adds r4, r0, #0 + cmp r4, #1 + beq _08018DDE + cmp r4, #1 + blo _08018DD0 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08018DEA + b _0801931A +_08018DD0: + bl sub_08018388 + movs r1, #0 + movs r0, #5 + strb r0, [r5, #8] + strb r1, [r5, #0xd] + b _0801931A +_08018DDE: + bl sub_08018388 + movs r0, #5 + strb r0, [r5, #8] + strb r4, [r5, #0xd] + b _0801931A +_08018DEA: + bl sub_08018388 + ldrb r0, [r5, #0xc] + bl sub_08018804 + cmp r0, #0 + beq _08018DFA + b _08019230 +_08018DFA: + b _08018D22 +_08018DFC: + ldr r0, _08018E18 + movs r1, #0xff + strb r1, [r0] + ldr r0, _08018E1C + strb r1, [r0] + ldr r0, _08018E20 + strb r1, [r0] + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _08018E24 + cmp r0, #1 + beq _08018E3E + b _08018E56 + .align 2, 0 +_08018E18: .4byte gUnknown_2021C40 +_08018E1C: .4byte gUnknown_2021C54 +_08018E20: .4byte gUnknown_2021C68 +_08018E24: + ldrb r0, [r5, #0xd] + cmp r0, #1 + bne _08018E32 + movs r0, #6 + bl sub_08014A04 + b _08018E56 +_08018E32: + cmp r0, #0 + bne _08018E56 + movs r0, #6 + bl sub_08014DB0 + b _08018E56 +_08018E3E: + ldrb r0, [r5, #0xd] + cmp r0, #1 + bne _08018E4C + movs r0, #7 + bl sub_08014A04 + b _08018E56 +_08018E4C: + cmp r0, #0 + bne _08018E56 + movs r0, #7 + bl sub_08014DB0 +_08018E56: + movs r0, #6 + b _08018D22 +_08018E5A: + ldr r0, _08018E74 + ldrb r0, [r0] + cmp r0, #0 + beq _08018E78 + movs r0, #1 + bl sub_080182E0 + movs r0, #7 + strb r0, [r5, #8] + ldrb r0, [r5, #0xc] + bl sub_0801D294 + b _0801931A + .align 2, 0 +_08018E74: .4byte gUnknown_30031C4 +_08018E78: + ldr r0, _08018E8C + ldrh r0, [r0] + cmp r0, #5 + beq _08018E82 + b _0801931A +_08018E82: + movs r0, #1 + bl sub_080182E0 + b _080191D8 + .align 2, 0 +_08018E8C: .4byte gUnknown_2037290 +_08018E90: + ldr r0, _08018E9C + bl sub_0801832C + movs r0, #8 + b _08018D22 + .align 2, 0 +_08018E9C: .4byte gUnknown_82C276C +_08018EA0: + adds r0, r5, #0 + bl sub_0801D2B8 + subs r0, #2 + cmp r0, #4 + bls _08018EAE + b _0801931A +_08018EAE: + lsls r0, r0, #2 + ldr r1, _08018EB8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08018EB8: .4byte _08018EBC +_08018EBC: @ jump table + .4byte _08018EF6 @ case 0 + .4byte _08018EF2 @ case 1 + .4byte _08018EFA @ case 2 + .4byte _08018EDC @ case 3 + .4byte _08018ED0 @ case 4 +_08018ED0: + bl sub_0800FD94 + ldrh r0, [r5] + strb r0, [r5, #0xe] + movs r0, #0xd + b _08018D22 +_08018EDC: + ldr r4, [r5, #0x10] + bl sub_0801D304 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0x40 + bl memcpy + bl sub_0801D2F4 + b _0801931A +_08018EF2: + movs r0, #0xa + b _08018D22 +_08018EF6: + movs r0, #9 + b _08018D22 +_08018EFA: + movs r0, #0xb + strb r0, [r5, #8] + ldr r0, _08018F08 + ldr r1, _08018F0C + bl sub_080088B8 + b _0801931A + .align 2, 0 +_08018F08: .4byte gUnknown_2021C40 +_08018F0C: .4byte gUnknown_20226A8 +_08018F10: + adds r4, r5, #0 + adds r4, #9 + bl sub_0801D304 + adds r3, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #1 + beq _08018FA8 + cmp r1, #1 + bhs _08018F96 + movs r0, #0 + b _08018FAA +_08018F34: + adds r4, r5, #0 + adds r4, #9 + bl sub_0801D304 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080183A4 + cmp r0, #0 + bne _08018F4A + b _0801931A +_08018F4A: + b _08018FAE +_08018F4C: + adds r0, r5, #0 + adds r0, #9 + ldr r3, _08018F74 + adds r1, r5, #0 + movs r2, #0 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #1 + beq _08018FA8 + cmp r1, #1 + bhs _08018F96 + bl sub_0801AEB8 + cmp r0, #1 + bne _08018F78 + movs r0, #0xc + b _08018D22 + .align 2, 0 +_08018F74: .4byte gUnknown_82C27B4 +_08018F78: + movs r0, #0 + b _08018FAA +_08018F7C: + adds r0, r5, #0 + adds r0, #9 + ldr r3, _08018FA0 + adds r1, r5, #0 + movs r2, #0 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #1 + beq _08018FA8 + cmp r1, #1 + blo _08018FA4 +_08018F96: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08018FA8 + b _0801931A + .align 2, 0 +_08018FA0: .4byte gUnknown_82C27DC +_08018FA4: + movs r0, #0 + b _08018FAA +_08018FA8: + movs r0, #1 +_08018FAA: + bl sub_0801D310 +_08018FAE: + bl sub_0801D2F4 + movs r0, #7 + b _08018D22 +_08018FB6: + ldr r0, _08018FC8 + ldrb r0, [r0] + cmp r0, #0 + beq _08018FC0 + b _0801931A +_08018FC0: + bl sub_0800DB50 + movs r0, #0xe + b _08018D22 + .align 2, 0 +_08018FC8: .4byte gUnknown_30031C4 +_08018FCC: + adds r0, r5, #0 + adds r0, #9 + ldr r1, _08018FF0 + bl sub_080184C8 + cmp r0, #0 + bne _08018FDC + b _0801931A +_08018FDC: + ldrb r0, [r5, #0xd] + cmp r0, #1 + bne _08018FEA + ldr r0, _08018FF4 + ldr r1, _08018FF8 + bl sub_080088B8 +_08018FEA: + movs r0, #0xf + b _08018D22 + .align 2, 0 +_08018FF0: .4byte gUnknown_82C277C +_08018FF4: .4byte gUnknown_2021C40 +_08018FF8: .4byte gUnknown_20226A8 +_08018FFC: + ldrb r1, [r5, #0xc] + ldrb r2, [r5, #0xd] + ldrb r3, [r5, #0xe] + mov r0, sp + bl sub_08018974 + adds r1, r0, #0 + cmp r1, #0 + bne _08019010 + ldr r1, [r5, #0x10] +_08019010: + ldr r0, [sp] + cmp r0, #0 + beq _08019022 + adds r0, r5, #0 + adds r0, #9 + adds r2, r5, #0 + bl sub_08018AA4 + b _0801902A +_08019022: + adds r0, r5, #0 + adds r0, #9 + bl sub_080183A4 +_0801902A: + adds r1, r0, #0 + cmp r1, #0 + bne _08019032 + b _0801931A +_08019032: + ldrb r0, [r5, #0xe] + cmp r0, #3 + bne _0801904C + ldrb r0, [r5, #0xd] + cmp r0, #1 + bne _08019046 + movs r0, #1 + bl sub_0801D978 + b _0801904C +_08019046: + movs r0, #2 + bl sub_0801D978 +_0801904C: + ldr r0, [sp] + cmp r0, #0 + beq _08019054 + b _080192E0 +_08019054: + b _08018D22 +_08019056: + adds r0, r5, #0 + adds r0, #9 + bl sub_080188FC + cmp r0, #0 + bne _08019064 + b _0801931A +_08019064: + b _08019230 +_08019066: + adds r0, r5, #0 + adds r0, #9 + ldrb r1, [r5, #0xc] + bl sub_08018818 + cmp r0, #0 + bne _08019076 + b _0801931A +_08019076: + b _0801912C +_08019078: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080190A0 + ldr r2, _0801909C + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801908E + movs r0, #0x15 + strb r0, [r5, #8] +_0801908E: + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0801909A + b _0801931A +_0801909A: + b _080190BE + .align 2, 0 +_0801909C: .4byte gUnknown_3002360 +_080190A0: + ldr r0, _080190B4 + ldrh r0, [r0, #0x2e] + bl sub_0801C7D4 + cmp r0, #0 + beq _080190B8 + cmp r0, #1 + beq _080190BE + b _0801931A + .align 2, 0 +_080190B4: .4byte gUnknown_3002360 +_080190B8: + bl sub_0801C754 + b _0801918C +_080190BE: + movs r0, #0x1b + b _08018D22 +_080190C2: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080190DC + bl sub_0801ADC8 + cmp r0, #0 + beq _080190F0 + adds r0, r5, #0 + adds r0, #9 + ldrb r2, [r5, #0xc] + adds r1, r5, #0 + movs r3, #0 + b _080190FA +_080190DC: + bl sub_0801ABF8 + cmp r0, #0 + beq _080190F0 + adds r0, r5, #0 + adds r0, #9 + ldrb r2, [r5, #0xc] + adds r1, r5, #0 + movs r3, #0 + b _080190FA +_080190F0: + adds r0, r5, #0 + adds r0, #9 + ldrb r2, [r5, #0xc] + adds r1, r5, #0 + movs r3, #1 +_080190FA: + bl sub_080186B4 + adds r1, r0, #0 + cmp r1, #1 + beq _0801911A + cmp r1, #1 + blo _08019116 + cmp r1, #2 + beq _0801911E + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08019122 + b _0801931A +_08019116: + movs r0, #0x1c + b _08018D22 +_0801911A: + movs r0, #0x1d + b _08018D22 +_0801911E: + movs r0, #0x16 + b _08018D22 +_08019122: + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _0801912C + bl sub_0801C794 +_0801912C: + movs r0, #0x14 + b _08018D22 +_08019130: + adds r0, r5, #0 + adds r0, #9 + ldrb r2, [r5, #0xc] + adds r1, r5, #0 + bl sub_080188B8 + adds r1, r0, #0 + cmp r1, #0 + beq _0801914C + cmp r1, #0 + ble _08019178 + cmp r1, #1 + beq _0801918C + b _0801931A +_0801914C: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08019188 + bl sub_0801AEB8 + cmp r0, #1 + bne _08019188 + movs r0, #0x17 + b _08018D22 +_0801915E: + adds r0, r5, #0 + adds r0, #9 + ldr r3, _08019184 + adds r1, r5, #0 + movs r2, #1 + bl sub_08018560 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #1 + beq _0801918C + cmp r1, #1 + blo _08019188 +_08019178: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801918C + b _0801931A + .align 2, 0 +_08019184: .4byte gUnknown_82C2ACC +_08019188: + movs r0, #0x18 + b _08018D22 +_0801918C: + movs r0, #0x15 + b _08018D22 +_08019190: + ldrb r0, [r5, #0xc] + bl sub_0801888C + cmp r0, #0 + bne _0801919C + b _0801931A +_0801919C: + ldrb r0, [r5, #0xc] + bl sub_08018874 + movs r0, #0x19 + b _08018D22 +_080191A6: + adds r0, r5, #0 + adds r0, #9 + bl sub_080188FC + cmp r0, #0 + bne _080191B4 + b _0801931A +_080191B4: + movs r0, #0x1a + b _08018D22 +_080191B8: + adds r0, r5, #0 + adds r0, #9 + ldrb r1, [r5, #0xc] + bl sub_080188DC + b _080192F6 +_080191C4: + ldrb r0, [r5, #0xc] + bl sub_0801888C + b _080192F6 +_080191CC: + ldrb r0, [r5, #0xc] + bl sub_0801888C +_080191D2: + cmp r0, #0 + bne _080191D8 + b _0801931A +_080191D8: + movs r0, #3 + b _08018D22 +_080191DC: + ldrb r0, [r5, #0xc] + bl sub_0801888C + cmp r0, #0 + bne _080191E8 + b _0801931A +_080191E8: + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _080191F4 + cmp r0, #1 + beq _080191FC + b _08019202 +_080191F4: + movs r0, #6 + bl sub_08014508 + b _08019202 +_080191FC: + movs r0, #7 + bl sub_08014508 +_08019202: + movs r0, #1 + strb r0, [r5, #0xd] + movs r0, #0x1e + b _08018D22 +_0801920A: + ldr r0, _0801921C + ldrb r0, [r0] + cmp r0, #0 + beq _08019220 + movs r0, #1 + bl sub_080182E0 + movs r0, #0x1f + b _08018D22 + .align 2, 0 +_0801921C: .4byte gUnknown_30031C4 +_08019220: + ldr r0, _08019234 + ldrh r0, [r0] + cmp r0, #5 + beq _0801922A + b _0801931A +_0801922A: + movs r0, #1 + bl sub_080182E0 +_08019230: + movs r0, #0x12 + b _08018D22 + .align 2, 0 +_08019234: .4byte gUnknown_2037290 +_08019238: + ldr r0, _08019258 + movs r1, #0xff + strb r1, [r0] + ldr r0, _0801925C + strb r1, [r0] + ldr r0, _08019260 + strb r1, [r0] + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08019268 + ldr r0, _08019264 + bl sub_0801832C + bl sub_0801CB48 + b _08019272 + .align 2, 0 +_08019258: .4byte gUnknown_2021C40 +_0801925C: .4byte gUnknown_2021C54 +_08019260: .4byte gUnknown_2021C68 +_08019264: .4byte gUnknown_82C2994 +_08019268: + ldr r0, _08019278 + bl sub_0801832C + bl sub_0801CB24 +_08019272: + movs r0, #0x20 + b _08018D22 + .align 2, 0 +_08019278: .4byte gUnknown_82C29AC +_0801927C: + adds r0, r5, #0 + bl sub_0801CB6C + cmp r0, #3 + bne _0801931A + ldrh r0, [r5] + strb r0, [r5, #0xe] + movs r0, #0x21 + b _08018D22 +_0801928E: + bl sub_0800FD94 + ldr r0, _080192A0 + ldr r1, _080192A4 + bl sub_080088B8 + movs r0, #0x22 + b _08018D22 + .align 2, 0 +_080192A0: .4byte gUnknown_2021C40 +_080192A4: .4byte gUnknown_20226C4 +_080192A8: + ldr r0, _080192B8 + ldrb r0, [r0] + cmp r0, #0 + bne _0801931A + bl sub_0800DB50 + movs r0, #0x23 + b _08018D22 + .align 2, 0 +_080192B8: .4byte gUnknown_30031C4 +_080192BC: + adds r0, r5, #0 + adds r0, #9 + ldrb r2, [r5, #0xd] + ldrb r3, [r5, #0xe] + adds r1, r5, #0 + bl sub_08018BDC + cmp r0, #0 + beq _0801931A + ldr r0, [r5, #0xc] + ldr r1, _080192E4 + ands r0, r1 + ldr r1, _080192E8 + cmp r0, r1 + bne _080192FA + movs r0, #3 + bl sub_0801D978 +_080192E0: + movs r0, #0x11 + b _08018D22 + .align 2, 0 +_080192E4: .4byte 0x00FFFF00 +_080192E8: .4byte 0x00030100 +_080192EC: + adds r0, r5, #0 + adds r0, #9 + ldr r1, _08019300 + bl sub_080183A4 +_080192F6: + cmp r0, #0 + beq _0801931A +_080192FA: + movs r0, #0 + b _08018D22 + .align 2, 0 +_08019300: .4byte gUnknown_82C2790 +_08019304: + bl sub_08009384 + ldr r0, [r5, #0x10] + bl sub_08000BF0 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _08019324 + bl sub_08000540 +_0801931A: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08019324: .4byte sub_08018138 + thumb_func_end sub_08018C5C + + thumb_func_start sub_08019328 +sub_08019328: @ 0x08019328 + ldr r0, _0801932C + bx lr + .align 2, 0 +_0801932C: .4byte 0x000001A9 + thumb_func_end sub_08019328 + + thumb_func_start sub_08019330 +sub_08019330: @ 0x08019330 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0801934C + movs r2, #0x80 + lsls r2, r2, #1 + movs r3, #0 + str r3, [sp] + bl sub_081997A0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0801934C: .4byte gUnknown_82C2474 + thumb_func_end sub_08019330 + + thumb_func_start sub_08019350 +sub_08019350: @ 0x08019350 + push {lr} + ldr r0, _08019364 + ldrb r0, [r0, #3] + cmp r0, #2 + beq _0801935E + cmp r0, #0 + bne _08019368 +_0801935E: + movs r0, #1 + b _0801936A + .align 2, 0 +_08019364: .4byte gUnknown_2037230 +_08019368: + movs r0, #0 +_0801936A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08019350 + + thumb_func_start sub_08019370 +sub_08019370: @ 0x08019370 + ldr r3, _08019384 + movs r2, #7 + ands r2, r1 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r2, r2, r1 + adds r2, r2, r3 + ldrb r0, [r2] + bx lr + .align 2, 0 +_08019384: .4byte gUnknown_82C2B7C + thumb_func_end sub_08019370 + + thumb_func_start sub_08019388 +sub_08019388: @ 0x08019388 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _080193D0 + mov r8, r4 + lsls r0, r0, #2 + adds r4, r0, r4 + movs r6, #0 + ldrsh r5, [r4, r6] + ldr r6, _080193D4 + lsls r1, r1, #1 + adds r4, r1, r6 + ldrb r4, [r4] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r5, r5, r4 + adds r5, #7 + str r5, [r2] + movs r2, #2 + add r8, r2 + add r0, r8 + movs r4, #0 + ldrsh r0, [r0, r4] + adds r6, #1 + adds r1, r1, r6 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + adds r0, #7 + str r0, [r3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080193D0: .4byte gUnknown_82C2B90 +_080193D4: .4byte gUnknown_82C2BB0 + thumb_func_end sub_08019388 + + thumb_func_start sub_080193D8 +sub_080193D8: @ 0x080193D8 + push {r4, r5, r6, r7, lr} + mov ip, r3 + ldr r7, _08019418 + lsls r5, r0, #2 + adds r0, r5, r7 + movs r4, #0 + ldrsh r3, [r0, r4] + ldr r6, _0801941C + lsls r4, r1, #1 + adds r0, r4, r6 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r3, r3, r0 + adds r3, #7 + cmp r3, r2 + bne _08019420 + adds r0, r7, #2 + adds r0, r5, r0 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r0, r6, #1 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + adds r1, #7 + cmp r1, ip + bne _08019420 + movs r0, #1 + b _08019422 + .align 2, 0 +_08019418: .4byte gUnknown_82C2B90 +_0801941C: .4byte gUnknown_82C2BB0 +_08019420: + movs r0, #0 +_08019422: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080193D8 + + thumb_func_start sub_08019428 +sub_08019428: @ 0x08019428 + push {lr} + ldr r1, _08019440 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08019440: .4byte 0x000002BF + thumb_func_end sub_08019428 + + thumb_func_start sub_08019444 +sub_08019444: @ 0x08019444 + push {lr} + ldr r1, _08019458 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_08019458: .4byte 0x000002BF + thumb_func_end sub_08019444 + + thumb_func_start sub_0801945C +sub_0801945C: @ 0x0801945C + push {lr} + ldr r1, _08019470 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_08019470: .4byte 0x000002BF + thumb_func_end sub_0801945C + + thumb_func_start sub_08019474 +sub_08019474: @ 0x08019474 + push {lr} + ldr r2, _0801948C + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0801948C: .4byte 0x00004010 + thumb_func_end sub_08019474 + + thumb_func_start sub_08019490 +sub_08019490: @ 0x08019490 + push {lr} + ldr r1, _080194A8 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _080194AC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D61C + pop {r0} + bx r0 + .align 2, 0 +_080194A8: .4byte gUnknown_82C2BC4 +_080194AC: .4byte gUnknown_3005AEC + thumb_func_end sub_08019490 + + thumb_func_start sub_080194B0 +sub_080194B0: @ 0x080194B0 + push {lr} + ldr r1, _080194C8 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _080194CC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D234 + pop {r0} + bx r0 + .align 2, 0 +_080194C8: .4byte gUnknown_82C2BC4 +_080194CC: .4byte gUnknown_3005AEC + thumb_func_end sub_080194B0 + + thumb_func_start sub_080194D0 +sub_080194D0: @ 0x080194D0 + push {r4, r5, lr} + sub sp, #4 + adds r5, r1, #0 + ldr r1, _0801951C + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _08019520 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08019536 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08019524 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08019536 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_08092B30 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08019528 + movs r0, #1 + b _08019538 + .align 2, 0 +_0801951C: .4byte gUnknown_82C2BC4 +_08019520: .4byte gUnknown_3005AEC +_08019524: .4byte gUnknown_2036FF0 +_08019528: + ldr r0, _08019540 + movs r1, #0xc1 + lsls r1, r1, #1 + ldr r2, _08019544 + movs r3, #1 + bl AGBAssert +_08019536: + movs r0, #0 +_08019538: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08019540: .4byte gUnknown_82C2BDC +_08019544: .4byte gUnknown_82C2BF0 + thumb_func_end sub_080194D0 + + thumb_func_start sub_08019548 +sub_08019548: @ 0x08019548 + push {r4, lr} + sub sp, #4 + ldr r1, _08019584 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _08019588 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080195A8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0801958C + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08019590 + movs r0, #0 + b _080195AA + .align 2, 0 +_08019584: .4byte gUnknown_82C2BC4 +_08019588: .4byte gUnknown_3005AEC +_0801958C: .4byte gUnknown_2036FF0 +_08019590: + bl sub_080987F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080195A2 + adds r0, r4, #0 + bl sub_08096E84 + b _080195A8 +_080195A2: + adds r0, r4, #0 + bl sub_08096D74 +_080195A8: + movs r0, #1 +_080195AA: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08019548 + + thumb_func_start sub_080195B4 +sub_080195B4: @ 0x080195B4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080195F8 + movs r1, #0 + str r1, [r0] + ldr r0, _080195FC + str r4, [r0] + cmp r4, #0 + bne _080195D2 + ldr r0, _08019600 + ldr r1, _08019604 + ldr r2, _08019608 + movs r3, #1 + bl AGBAssert +_080195D2: + movs r1, #0 + adds r0, r4, #0 + movs r2, #7 +_080195D8: + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r0, #2] + strb r1, [r0, #3] + adds r0, #4 + subs r2, #1 + cmp r2, #0 + bge _080195D8 + bl sub_08019878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080195F8: .4byte gUnknown_202291C +_080195FC: .4byte gUnknown_2022918 +_08019600: .4byte gUnknown_82C2BDC +_08019604: .4byte 0x000001B9 +_08019608: .4byte gUnknown_82C2BF4 + thumb_func_end sub_080195B4 + + thumb_func_start sub_0801960C +sub_0801960C: @ 0x0801960C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _08019620 + cmp r0, #1 + beq _08019640 + b _0801965E +_08019620: + ldr r1, _0801963C + adds r0, r4, #0 + bl sub_080194D0 + cmp r0, #1 + bne _0801965E + adds r0, r4, #0 + bl sub_08019444 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0801965E + .align 2, 0 +_0801963C: .4byte gUnknown_82C2C09 +_08019640: + adds r0, r4, #0 + bl sub_08019548 + cmp r0, #0 + beq _0801965E + adds r0, r4, #0 + bl sub_080194B0 + adds r0, r4, #0 + bl sub_08019444 + movs r0, #0 + strb r0, [r5] + movs r0, #1 + b _08019660 +_0801965E: + movs r0, #0 +_08019660: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801960C + + thumb_func_start sub_08019668 +sub_08019668: @ 0x08019668 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #2 + beq _08019704 + cmp r0, #2 + bgt _08019684 + cmp r0, #0 + beq _0801968A + b _08019716 +_08019684: + cmp r0, #3 + beq _080196EC + b _08019716 +_0801968A: + bl sub_08019350 + cmp r0, #0 + beq _08019716 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + 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_080193D8 + cmp r0, #1 + beq _08019716 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B440 + 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_080193D8 + cmp r0, #1 + beq _08019716 + ldrb r1, [r7, #1] + adds r0, r5, #0 + bl sub_08019474 + adds r0, r5, #0 + bl sub_08019490 + adds r0, r5, #0 + bl sub_0801945C + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_080196EC: + ldr r1, _08019700 + adds r0, r5, #0 + bl sub_080194D0 + cmp r0, #1 + bne _08019716 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _08019716 + .align 2, 0 +_08019700: .4byte gUnknown_82C2C0B +_08019704: + adds r0, r5, #0 + bl sub_08019548 + cmp r0, #0 + beq _08019716 + movs r0, #0 + strb r0, [r6] + movs r0, #1 + b _08019718 +_08019716: + movs r0, #0 +_08019718: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08019668 + + thumb_func_start sub_08019720 +sub_08019720: @ 0x08019720 + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, _08019758 + lsls r0, r0, #2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, #0 + bne _08019740 + ldr r0, _0801975C + movs r1, #0x8c + lsls r1, r1, #2 + ldr r2, _08019760 + movs r3, #1 + bl AGBAssert +_08019740: + movs r0, #1 + strb r0, [r4, #3] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08019370 + strb r0, [r4, #1] + ldrb r0, [r4] + cmp r0, #0 + beq _08019764 + movs r0, #0 + b _08019766 + .align 2, 0 +_08019758: .4byte gUnknown_2022918 +_0801975C: .4byte gUnknown_82C2BDC +_08019760: .4byte gUnknown_82C2BF4 +_08019764: + movs r0, #1 +_08019766: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08019720 + + thumb_func_start sub_0801976C +sub_0801976C: @ 0x0801976C + push {r4, lr} + ldr r1, _08019798 + lsls r0, r0, #2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, #0 + bne _08019788 + ldr r0, _0801979C + movs r1, #0x90 + lsls r1, r1, #2 + ldr r2, _080197A0 + movs r3, #1 + bl AGBAssert +_08019788: + movs r0, #2 + strb r0, [r4, #3] + ldrb r0, [r4] + cmp r0, #1 + beq _080197A4 + movs r0, #0 + b _080197A6 + .align 2, 0 +_08019798: .4byte gUnknown_2022918 +_0801979C: .4byte gUnknown_82C2BDC +_080197A0: .4byte gUnknown_82C2BF4 +_080197A4: + movs r0, #1 +_080197A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801976C + + thumb_func_start sub_080197AC +sub_080197AC: @ 0x080197AC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r1, [r4] + cmp r1, #1 + beq _0801980E + cmp r1, #1 + bgt _080197C2 + cmp r1, #0 + beq _080197CC + b _0801982E +_080197C2: + cmp r1, #2 + beq _080197D8 + cmp r1, #3 + beq _0801981C + b _0801982E +_080197CC: + ldrb r0, [r4, #3] + cmp r0, #1 + bne _0801982E + movs r0, #2 + strb r0, [r4] + strb r1, [r4, #2] +_080197D8: + adds r0, r5, #0 + movs r1, #0 + bl sub_08019A28 + adds r1, r0, #0 + cmp r1, #0 + bne _080197FE + ldrb r0, [r4, #3] + cmp r0, #2 + bne _080197FE + strb r1, [r4] + strb r1, [r4, #2] + adds r0, r5, #0 + bl sub_080194B0 + adds r0, r5, #0 + bl sub_08019444 + b _0801982E +_080197FE: + adds r0, r4, #2 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08019668 + cmp r0, #1 + bne _0801982E + b _0801982C +_0801980E: + ldrb r0, [r4, #3] + cmp r0, #2 + bne _0801982E + movs r1, #0 + movs r0, #3 + strb r0, [r4] + strb r1, [r4, #2] +_0801981C: + adds r0, r4, #2 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0801960C + cmp r0, #1 + bne _0801982E + movs r0, #0 +_0801982C: + strb r0, [r4] +_0801982E: + movs r0, #0 + strb r0, [r4, #3] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080197AC + + thumb_func_start sub_08019838 +sub_08019838: @ 0x08019838 + push {r4, r5, lr} + ldr r5, _08019868 + ldr r0, [r5] + cmp r0, #0 + bne _0801984E + ldr r0, _0801986C + ldr r1, _08019870 + ldr r2, _08019874 + movs r3, #1 + bl AGBAssert +_0801984E: + movs r4, #0 +_08019850: + lsls r0, r4, #2 + ldr r1, [r5] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080197AC + adds r4, #1 + cmp r4, #7 + ble _08019850 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08019868: .4byte gUnknown_2022918 +_0801986C: .4byte gUnknown_82C2BDC +_08019870: .4byte 0x00000282 +_08019874: .4byte gUnknown_82C2BF4 + thumb_func_end sub_08019838 + + thumb_func_start sub_08019878 +sub_08019878: @ 0x08019878 + push {r4, lr} + ldr r4, _08019898 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0801989C + adds r0, r4, #0 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080198AA + .align 2, 0 +_08019898: .4byte sub_08019838 +_0801989C: + ldr r0, _080198B0 + ldr r1, _080198B4 + ldr r2, _080198B8 + movs r3, #1 + bl AGBAssert + movs r0, #0x10 +_080198AA: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080198B0: .4byte gUnknown_82C2BDC +_080198B4: .4byte 0x0000028E +_080198B8: .4byte gUnknown_82C2BF0 + thumb_func_end sub_08019878 + + thumb_func_start sub_080198BC +sub_080198BC: @ 0x080198BC + push {lr} + ldr r0, _080198D4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bhi _080198D0 + bl sub_080A8964 +_080198D0: + pop {r0} + bx r0 + .align 2, 0 +_080198D4: .4byte sub_08019838 + thumb_func_end sub_080198BC + + thumb_func_start sub_080198D8 +sub_080198D8: @ 0x080198D8 + push {r4, lr} + movs r4, #0 +_080198DC: + adds r0, r4, #0 + bl sub_08019428 + cmp r0, #0 + bne _080198F2 + adds r0, r4, #0 + bl sub_080194B0 + adds r0, r4, #0 + bl sub_08019444 +_080198F2: + adds r4, #1 + cmp r4, #7 + ble _080198DC + ldr r1, _08019908 + movs r0, #0 + str r0, [r1] + bl sub_080198BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08019908: .4byte gUnknown_2022918 + thumb_func_end sub_080198D8 + + thumb_func_start sub_0801990C +sub_0801990C: @ 0x0801990C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + str r0, [sp, #8] + mov sb, r1 + movs r7, #0 + mov r0, sb + lsls r0, r0, #2 + mov r8, r0 + ldr r0, _08019998 + mov r2, r8 + adds r1, r2, r0 + ldrh r1, [r1] + mov r2, sp + strh r1, [r2, #0xc] + adds r0, #2 + add r0, r8 + ldrh r0, [r0] + mov sl, r0 + ldr r6, _0801999C +_0801993A: + mov r5, r8 + add r5, sb + adds r5, r5, r7 + adds r4, r5, #0 + subs r4, #0x38 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r2, #0 + ldrsb r2, [r6, r2] + mov r0, sp + ldrh r0, [r0, #0xc] + adds r2, r0, r2 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r6, r3] + add r3, sl + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r0, #3 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x41 + adds r1, r4, #0 + bl sub_0808D77C + ldr r1, [sp, #8] + adds r5, r1, r5 + strb r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_080975B4 + adds r6, #2 + adds r7, #1 + cmp r7, #4 + ble _0801993A + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08019998: .4byte gUnknown_82C2B90 +_0801999C: .4byte gUnknown_82C2BB0 + thumb_func_end sub_0801990C + + thumb_func_start sub_080199A0 +sub_080199A0: @ 0x080199A0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r6, _080199C4 +_080199A8: + adds r0, r5, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + adds r4, #1 + cmp r4, #0x27 + ble _080199A8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080199C4: .4byte gUnknown_20205AC + thumb_func_end sub_080199A0 + + thumb_func_start sub_080199C8 +sub_080199C8: @ 0x080199C8 + push {r4, r5, r6, r7, lr} + sub sp, #8 + movs r5, #0 + add r7, sp, #4 +_080199D0: + movs r4, #0 + adds r6, r5, #1 +_080199D4: + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, sp + adds r3, r7, #0 + bl sub_08019388 + ldr r0, [sp] + ldr r1, [sp, #4] + movs r2, #0 + bl sub_080884F8 + adds r4, #1 + cmp r4, #4 + ble _080199D4 + adds r5, r6, #0 + cmp r5, #7 + ble _080199D0 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080199C8 + + thumb_func_start sub_08019A00 +sub_08019A00: @ 0x08019A00 + push {lr} + adds r1, r0, #0 + cmp r1, #0 + beq _08019A14 + ldr r0, _08019A10 + adds r0, r1, r0 + ldrb r0, [r0] + b _08019A24 + .align 2, 0 +_08019A10: .4byte gUnknown_82C2BBF +_08019A14: + ldrb r1, [r2, #0xa] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x45 + beq _08019A22 + movs r0, #4 + b _08019A24 +_08019A22: + movs r0, #1 +_08019A24: + pop {r1} + bx r1 + thumb_func_end sub_08019A00 + + thumb_func_start sub_08019A28 +sub_08019A28: @ 0x08019A28 + push {lr} + adds r2, r0, #0 + lsls r0, r2, #2 + adds r0, r0, r2 + adds r0, r0, r1 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080975FC + pop {r1} + bx r1 + thumb_func_end sub_08019A28 + + thumb_func_start sub_08019A40 +sub_08019A40: @ 0x08019A40 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r5, r0, #0 + adds r6, r1, #0 + mov sb, r3 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r0, r5, #2 + adds r0, r0, r5 + adds r7, r0, r6 + adds r0, r5, #0 + bl sub_08019A28 + cmp r0, #1 + bne _08019A7E + adds r4, r7, #0 + subs r4, #0x38 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_080975B4 + adds r0, r4, #0 + movs r1, #1 + bl sub_08097634 +_08019A7E: + adds r0, r7, #0 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + bl sub_08097524 + adds r0, r6, #0 + adds r1, r5, #0 + mov r2, sb + bl sub_08019A00 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08019E68 + add r3, sp, #4 + adds r0, r5, #0 + adds r1, r6, #0 + mov r2, sp + bl sub_08019388 + ldr r0, [sp] + ldr r1, [sp, #4] + movs r2, #1 + bl sub_080884F8 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08019A40 + + thumb_func_start sub_08019AC8 +sub_08019AC8: @ 0x08019AC8 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + adds r0, r0, r5 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_08097634 + add r3, sp, #4 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_08019388 + ldr r0, [sp] + ldr r1, [sp, #4] + movs r2, #0 + bl sub_080884F8 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08019AC8 + + thumb_func_start sub_08019B00 +sub_08019B00: @ 0x08019B00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r7, r0, #0 + mov r8, r1 + mov r6, sp + adds r6, #2 + mov r0, sp + adds r1, r6, #0 + bl sub_0808B410 + add r4, sp, #4 + mov r5, sp + adds r5, #6 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808B440 + lsls r0, r7, #2 + adds r0, r0, r7 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080975FC + mov sl, r6 + mov sb, r4 + adds r6, r5, #0 + cmp r0, #1 + bne _08019B8C + mov r0, sp + movs r1, #0 + ldrsh r2, [r0, r1] + mov r0, sl + movs r1, #0 + ldrsh r3, [r0, r1] + adds r0, r7, #0 + movs r1, #0 + bl sub_080193D8 + cmp r0, #1 + beq _08019BF8 + movs r0, #0 + ldrsh r2, [r4, r0] + movs r1, #0 + ldrsh r3, [r6, r1] + adds r0, r7, #0 + movs r1, #0 + bl sub_080193D8 + cmp r0, #1 + beq _08019BF8 + mov r2, r8 + ldrb r0, [r2, #0xb] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + ldrb r1, [r2, #2] + bl sub_08019370 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + movs r1, #0 + mov r3, r8 + bl sub_08019A40 +_08019B8C: + movs r5, #1 + mov r4, r8 + adds r4, #4 +_08019B92: + ldrb r0, [r4] + cmp r0, #0 + bne _08019BA2 + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_08019AC8 + b _08019BF0 +_08019BA2: + mov r0, sp + movs r1, #0 + ldrsh r2, [r0, r1] + mov r0, sl + movs r1, #0 + ldrsh r3, [r0, r1] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_080193D8 + cmp r0, #0 + bne _08019BF0 + mov r0, sb + movs r1, #0 + ldrsh r2, [r0, r1] + movs r0, #0 + ldrsh r3, [r6, r0] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_080193D8 + cmp r0, #0 + bne _08019BF0 + ldrb r2, [r4] + lsrs r0, r2, #3 + movs r1, #1 + ands r0, r1 + movs r1, #7 + ands r1, r2 + bl sub_08019370 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + adds r1, r5, #0 + mov r3, r8 + bl sub_08019A40 +_08019BF0: + adds r4, #1 + adds r5, #1 + cmp r5, #4 + ble _08019B92 +_08019BF8: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08019B00 + + thumb_func_start sub_08019C08 +sub_08019C08: @ 0x08019C08 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + subs r0, #0x40 + cmp r0, #0x14 + bhi _08019CAC + lsls r0, r0, #2 + ldr r1, _08019C24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08019C24: .4byte _08019C28 +_08019C28: @ jump table + .4byte _08019C7C @ case 0 + .4byte _08019C9C @ case 1 + .4byte _08019CAC @ case 2 + .4byte _08019CAC @ case 3 + .4byte _08019C9C @ case 4 + .4byte _08019C9C @ case 5 + .4byte _08019CAC @ case 6 + .4byte _08019CAC @ case 7 + .4byte _08019C9C @ case 8 + .4byte _08019CAC @ case 9 + .4byte _08019CAC @ case 10 + .4byte _08019CAC @ case 11 + .4byte _08019CAC @ case 12 + .4byte _08019CAC @ case 13 + .4byte _08019CAC @ case 14 + .4byte _08019CAC @ case 15 + .4byte _08019CAC @ case 16 + .4byte _08019C9C @ case 17 + .4byte _08019C9C @ case 18 + .4byte _08019C9C @ case 19 + .4byte _08019C7C @ case 20 +_08019C7C: + ldrb r1, [r4, #0xb] + lsls r1, r1, #0x1f + lsrs r1, r1, #0x1f + ldrb r2, [r4, #2] + adds r0, r5, #0 + bl sub_08019720 + movs r4, #0 +_08019C8C: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019AC8 + adds r4, #1 + cmp r4, #4 + bls _08019C8C + b _08019CB8 +_08019C9C: + adds r0, r5, #0 + bl sub_0801976C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019B00 + b _08019CB8 +_08019CAC: + ldr r0, _08019CC0 + ldr r1, _08019CC4 + ldr r2, _08019CC8 + movs r3, #1 + bl AGBAssert +_08019CB8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08019CC0: .4byte gUnknown_82C2BDC +_08019CC4: .4byte 0x000003D3 +_08019CC8: .4byte gUnknown_82C2BF0 + thumb_func_end sub_08019C08 + + thumb_func_start sub_08019CCC +sub_08019CCC: @ 0x08019CCC + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0801976C + movs r4, #0 +_08019CD6: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019AC8 + adds r4, #1 + cmp r4, #4 + ble _08019CD6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08019CCC + + thumb_func_start sub_08019CEC +sub_08019CEC: @ 0x08019CEC + push {r4, r5, lr} + ldr r2, _08019D0C + movs r1, #0 + str r1, [r2] + movs r5, #0 + ldr r4, [r0] +_08019CF8: + ldrb r0, [r4, #0x1a] + movs r1, #3 + ands r1, r0 + cmp r1, #1 + bne _08019D10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019C08 + b _08019D1C + .align 2, 0 +_08019D0C: .4byte gUnknown_202291C +_08019D10: + cmp r1, #2 + bne _08019D1C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019CCC +_08019D1C: + adds r4, #0x20 + adds r5, #1 + cmp r5, #7 + ble _08019CF8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08019CEC + + thumb_func_start sub_08019D2C +sub_08019D2C: @ 0x08019D2C + ldr r1, _08019D38 + movs r0, #0x96 + lsls r0, r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08019D38: .4byte gUnknown_202291C + thumb_func_end sub_08019D2C + + thumb_func_start sub_08019D3C +sub_08019D3C: @ 0x08019D3C + push {lr} + adds r2, r0, #0 + ldr r0, _08019D5C + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + movs r0, #0x96 + lsls r0, r0, #1 + cmp r1, r0 + bls _08019D56 + adds r0, r2, #0 + bl sub_08019CEC +_08019D56: + pop {r0} + bx r0 + .align 2, 0 +_08019D5C: .4byte gUnknown_202291C + thumb_func_end sub_08019D3C + + thumb_func_start sub_08019D60 +sub_08019D60: @ 0x08019D60 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r5, r0, #0 + str r1, [sp, #4] + str r2, [sp, #8] + bl sub_08019350 + cmp r0, #0 + bne _08019DA8 + b _08019E4E +_08019D7C: + ldr r4, _08019DA4 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r2, [r0] + adds r0, r6, #0 + ldr r1, [sp, #0xc] + bl sub_08019E68 + ldr r0, [sp, #4] + strh r6, [r0] + mov r1, sp + ldrh r2, [r1, #0xc] + ldr r1, [sp, #8] + strh r2, [r1] + movs r0, #1 + b _08019E50 + .align 2, 0 +_08019DA4: .4byte gUnknown_82C2BBA +_08019DA8: + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + movs r0, #0 + str r0, [sp, #0xc] + ldr r0, _08019E60 + adds r7, r5, #0 + movs r1, #0 + mov sl, r1 + adds r2, r0, #2 + str r2, [sp, #0x10] + str r0, [sp, #0x14] +_08019DC6: + movs r6, #0 + ldr r4, [sp, #0x14] + movs r0, #0 + ldrsh r4, [r4, r0] + mov sb, r4 + ldr r1, [sp, #0x10] + mov r8, r1 + ldr r5, _08019E64 +_08019DD6: + mov r2, sl + adds r3, r2, r6 + mov r0, sp + movs r4, #0 + ldrsh r1, [r0, r4] + movs r0, #0 + ldrsb r0, [r5, r0] + add r0, sb + adds r0, #7 + cmp r1, r0 + bne _08019E2A + mov r1, sp + movs r2, #2 + ldrsh r0, [r1, r2] + mov r4, r8 + movs r2, #0 + ldrsh r1, [r4, r2] + movs r2, #1 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + adds r1, #7 + cmp r0, r1 + bne _08019E2A + adds r0, r3, #0 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080975FC + cmp r0, #0 + bne _08019E2A + adds r0, r4, #0 + bl sub_08097724 + cmp r0, #0 + bne _08019E2A + ldrb r1, [r7, #0x1a] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + beq _08019D7C +_08019E2A: + adds r5, #2 + adds r6, #1 + cmp r6, #4 + ble _08019DD6 + adds r7, #0x20 + movs r4, #5 + add sl, r4 + ldr r0, [sp, #0x10] + adds r0, #4 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + adds r1, #4 + str r1, [sp, #0x14] + ldr r2, [sp, #0xc] + adds r2, #1 + str r2, [sp, #0xc] + cmp r2, #7 + ble _08019DC6 +_08019E4E: + movs r0, #0 +_08019E50: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08019E60: .4byte gUnknown_82C2B90 +_08019E64: .4byte gUnknown_82C2BB0 + thumb_func_end sub_08019D60 + + thumb_func_start sub_08019E68 +sub_08019E68: @ 0x08019E68 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + subs r0, #0x38 + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080974E8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08019E68 + + thumb_func_start sub_08019E88 +sub_08019E88: @ 0x08019E88 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r3, r4, #5 + adds r3, r3, r2 + adds r2, r3, #0 + bl sub_08019A00 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08019E68 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08019E88 + + thumb_func_start sub_08019EAC +sub_08019EAC: @ 0x08019EAC + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08019ECC + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 +_08019ECC: + pop {r0} + bx r0 + thumb_func_end sub_08019EAC + + thumb_func_start sub_08019ED0 +sub_08019ED0: @ 0x08019ED0 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08019ED0 + + thumb_func_start sub_08019EE4 +sub_08019EE4: @ 0x08019EE4 + push {lr} + ldr r0, _08019EF0 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08019EF0: .4byte sub_08019EF4 + thumb_func_end sub_08019EE4 + + thumb_func_start sub_08019EF4 +sub_08019EF4: @ 0x08019EF4 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r5, _0801A018 + movs r0, #0x6c + bl sub_08000BDC + str r0, [r5] + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0801A01C + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + ldr r1, _0801A020 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0801A024 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r0, _0801A028 + bl sub_08003090 + bl sub_08004480 + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_080B9710 + bl m4aSoundVSyncOn + ldr r0, _0801A02C + bl sub_080006F0 + ldr r0, _0801A030 + movs r1, #0 + bl sub_080A8878 + ldr r1, [r5] + adds r1, #0x60 + strb r0, [r1] + bl sub_08013748 + ldr r1, [r5] + adds r1, #0x61 + strb r0, [r1] + ldr r1, [r5] + movs r0, #1 + str r0, [r1, #0x1c] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, _0801A034 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0xf0 + bl sub_08197694 + bl sub_081AF8C8 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #1 + bl sub_08002248 + ldr r0, _0801A038 + bl sub_08000540 + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801A018: .4byte gUnknown_3000DAC +_0801A01C: .4byte gUnknown_82C31B4 +_0801A020: .4byte gUnknown_82C2E10 +_0801A024: .4byte gUnknown_82C3020 +_0801A028: .4byte gUnknown_82C31BC +_0801A02C: .4byte sub_08019ED0 +_0801A030: .4byte sub_0801A168 +_0801A034: .4byte gUnknown_82C2C10 +_0801A038: .4byte sub_08019EAC + thumb_func_end sub_08019EF4 + + thumb_func_start sub_0801A03C +sub_0801A03C: @ 0x0801A03C + push {r4, lr} + bl sub_080034D4 + movs r4, #0 +_0801A044: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002194 + bl sub_08000BF0 + adds r4, #1 + cmp r4, #1 + ble _0801A044 + ldr r0, _0801A06C + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _0801A070 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801A06C: .4byte gUnknown_3000DAC +_0801A070: .4byte sub_08085B34 + thumb_func_end sub_0801A03C + + thumb_func_start sub_0801A074 +sub_0801A074: @ 0x0801A074 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _0801A09C + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xe + bne _0801A098 + movs r0, #0 + strh r0, [r1] +_0801A098: + movs r0, #0 + strh r0, [r2] +_0801A09C: + movs r2, #0 + ldrsh r0, [r1, r2] + adds r0, #2 + lsls r0, r0, #5 + ldr r1, _0801A0B4 + adds r0, r0, r1 + movs r1, #0 + movs r2, #0x10 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_0801A0B4: .4byte gUnknown_82C2C10 + thumb_func_end sub_0801A074 + + thumb_func_start sub_0801A0B8 +sub_0801A0B8: @ 0x0801A0B8 + push {r4, r5, lr} + sub sp, #8 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r4, _0801A164 + ldr r2, [r4] + movs r0, #6 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0 + movs r1, #1 + movs r3, #2 + bl sub_0801A384 + movs r1, #0 + adds r5, r4, #0 +_0801A0EE: + adds r4, r1, #1 + lsls r0, r4, #2 + adds r0, r0, r5 + ldr r2, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #0x19 + movs r1, #0xa0 + lsls r1, r1, #0x14 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r1, #1 + movs r3, #0 + bl sub_0801A384 + adds r1, r4, #0 + cmp r4, #2 + ble _0801A0EE + ldr r1, _0801A164 + adds r0, r4, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r0, r4, #4 + subs r0, r0, r4 + lsls r0, r0, #0x19 + movs r1, #0xa0 + lsls r1, r1, #0x14 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0801A384 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801A164: .4byte gUnknown_82C3238 + thumb_func_end sub_0801A0B8 + + thumb_func_start sub_0801A168 +sub_0801A168: @ 0x0801A168 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0801A198 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #5 + bls _0801A18C + b _0801A36C +_0801A18C: + lsls r0, r0, #2 + ldr r1, _0801A19C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A198: .4byte gUnknown_3005B60 +_0801A19C: .4byte _0801A1A0 +_0801A1A0: @ jump table + .4byte _0801A1B8 @ case 0 + .4byte _0801A1D4 @ case 1 + .4byte _0801A1F8 @ case 2 + .4byte _0801A214 @ case 3 + .4byte _0801A32C @ case 4 + .4byte _0801A354 @ case 5 +_0801A1B8: + bl sub_0801A0B8 + ldr r0, _0801A1D0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0801A36C + .align 2, 0 +_0801A1D0: .4byte gUnknown_3005B60 +_0801A1D4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001B48 + movs r0, #0 + bl sub_08002248 + movs r0, #0 + bl sub_08001B48 + b _0801A33C +_0801A1F8: + ldr r0, _0801A210 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801A206 + b _0801A36C +_0801A206: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + b _0801A346 + .align 2, 0 +_0801A210: .4byte gUnknown_2037C74 +_0801A214: + ldr r0, _0801A28C + 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_0801A504 + lsls r1, r5, #2 + mov sb, r1 + cmp r0, #0 + beq _0801A2C6 + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + movs r4, #0 + ldr r7, _0801A290 + movs r2, #0xa0 + lsls r2, r2, #0x14 + mov r8, r2 + movs r6, #0 +_0801A246: + ldr r0, _0801A28C + ldr r0, [r0] + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r1, [r0] + add r0, sp, #8 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + add r1, sp, #8 + bl sub_081AF8E4 + ldr r1, _0801A294 + adds r1, r6, r1 + adds r0, r7, #0 + bl sub_081AF900 + cmp r4, #3 + beq _0801A298 + mov r1, r8 + lsrs r0, r1, #0x18 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #2 + movs r1, #1 + adds r2, r7, #0 + movs r3, #0 + bl sub_0801A384 + b _0801A2AA + .align 2, 0 +_0801A28C: .4byte gUnknown_3000DAC +_0801A290: .4byte gUnknown_2021C7C +_0801A294: .4byte gUnknown_82C3220 +_0801A298: + movs r0, #0x64 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r1, #1 + adds r2, r7, #0 + movs r3, #0 + bl sub_0801A384 +_0801A2AA: + movs r2, #0xf0 + lsls r2, r2, #0x15 + add r8, r2 + adds r6, #6 + adds r4, #1 + cmp r4, #3 + ble _0801A246 + movs r0, #2 + bl sub_0800365C + movs r0, #2 + movs r1, #3 + bl sub_08003528 +_0801A2C6: + ldr r0, _0801A31C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0801A2DA + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801A304 +_0801A2DA: + movs r0, #5 + bl sub_080A306C + ldr r2, _0801A320 + ldr r0, _0801A324 + ldr r0, [r0] + adds r0, #0x61 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xff + strh r1, [r0, #0x26] + mov r0, sb + adds r1, r0, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0801A304: + mov r2, sb + adds r1, r2, r5 + lsls r1, r1, #3 + ldr r0, _0801A328 + adds r1, r1, r0 + adds r0, r1, #0 + adds r0, #0xe + adds r1, #0x10 + bl sub_0801A074 + b _0801A36C + .align 2, 0 +_0801A31C: .4byte gUnknown_3002360 +_0801A320: .4byte gUnknown_3005B60 +_0801A324: .4byte gUnknown_3000DAC +_0801A328: .4byte gUnknown_3005B68 +_0801A32C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0801A33C: + ldr r1, _0801A350 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 +_0801A346: + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _0801A36C + .align 2, 0 +_0801A350: .4byte gUnknown_3005B60 +_0801A354: + ldr r0, _0801A37C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801A36C + ldr r0, _0801A380 + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_0801A36C: + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801A37C: .4byte gUnknown_2037C74 +_0801A380: .4byte sub_0801A03C + thumb_func_end sub_0801A168 + + thumb_func_start sub_0801A384 +sub_0801A384: @ 0x0801A384 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + mov ip, r2 + ldr r2, [sp, #0x2c] + ldr r4, [sp, #0x30] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r0, r4, #0x18 + cmp r0, #4 + bhi _0801A40E + lsls r0, r0, #2 + ldr r1, _0801A3B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A3B0: .4byte _0801A3B4 +_0801A3B4: @ jump table + .4byte _0801A3C8 @ case 0 + .4byte _0801A3D6 @ case 1 + .4byte _0801A3E4 @ case 2 + .4byte _0801A3F2 @ case 3 + .4byte _0801A400 @ case 4 +_0801A3C8: + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + movs r0, #3 + b _0801A40C +_0801A3D6: + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strb r0, [r1, #1] + movs r0, #3 + b _0801A40C +_0801A3E4: + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + movs r0, #4 + strb r0, [r1, #1] + movs r0, #5 + b _0801A40C +_0801A3F2: + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + movs r0, #7 + strb r0, [r1, #1] + movs r0, #6 + b _0801A40C +_0801A400: + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strb r0, [r1, #1] + movs r0, #2 +_0801A40C: + strb r0, [r1, #2] +_0801A40E: + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0xc] + mov r0, ip + str r0, [sp, #0x10] + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0801A384 + + thumb_func_start sub_0801A434 +sub_0801A434: @ 0x0801A434 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov ip, r0 + adds r7, r1, #0 + ldrb r0, [r0, #0xa] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + mov r8, r0 + movs r4, #0 + ldr r0, _0801A4AC + mov sb, r0 + movs r1, #1 + add r1, sb + mov sl, r1 + mov r3, ip + adds r3, #4 + str r3, [sp] +_0801A45E: + lsls r0, r4, #1 + adds r2, r0, r4 + mov r3, sb + adds r1, r2, r3 + adds r5, r0, #0 + adds r6, r4, #1 + ldrb r1, [r1] + cmp r8, r1 + bne _0801A4C2 + mov r0, ip + ldrb r1, [r0, #0x1a] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801A4C2 + mov r0, sb + adds r0, #2 + adds r3, r2, r0 + ldrb r0, [r3] + cmp r0, #0 + bne _0801A4B0 + movs r2, #0 + movs r1, #0 + ldr r3, [sp] +_0801A48E: + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0801A498 + adds r2, #1 +_0801A498: + adds r1, #1 + cmp r1, #3 + ble _0801A48E + adds r2, #1 + adds r0, r5, r4 + add r0, sl + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r7 + b _0801A4BC + .align 2, 0 +_0801A4AC: .4byte gUnknown_82C324C +_0801A4B0: + mov r1, sl + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r3] +_0801A4BC: + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] +_0801A4C2: + adds r4, r6, #0 + cmp r4, #0x1e + bls _0801A45E + mov r0, r8 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801A434 + + thumb_func_start sub_0801A4DC +sub_0801A4DC: @ 0x0801A4DC + push {r4, lr} + movs r4, #0 + adds r3, r1, #0 + adds r2, r0, #0 +_0801A4E4: + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + beq _0801A4F0 + movs r0, #1 + b _0801A4FC +_0801A4F0: + adds r3, #4 + adds r2, #4 + adds r4, #1 + cmp r4, #3 + ble _0801A4E4 + movs r0, #0 +_0801A4FC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801A4DC + + thumb_func_start sub_0801A504 +sub_0801A504: @ 0x0801A504 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r6, r0, #0 + mov sb, r1 + adds r5, r2, #0 + lsls r4, r3, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + mov r8, r0 + mov r0, sp + movs r1, #0 + movs r2, #0x10 + bl memset + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0801A56C + adds r7, r0, r1 + movs r4, #0 +_0801A532: + lsls r1, r4, #5 + ldr r0, [r7] + adds r0, r0, r1 + mov r1, sp + bl sub_0801A434 + adds r1, r0, #0 + ldr r0, [r5] + cmp r1, r0 + beq _0801A54C + str r1, [r5] + movs r2, #1 + mov r8, r2 +_0801A54C: + adds r5, #4 + adds r4, #1 + cmp r4, #0xf + ble _0801A532 + mov r0, sp + mov r1, sb + bl sub_0801A4DC + cmp r0, #0 + bne _0801A570 + mov r3, r8 + cmp r3, #1 + beq _0801A598 + movs r0, #0 + b _0801A59A + .align 2, 0 +_0801A56C: .4byte gUnknown_3005B68 +_0801A570: + adds r1, r6, #0 + mov r0, sp + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r0, [r0] + str r0, [r1] + mov r1, sb + mov r0, sp + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r0, [r0] + str r0, [r1] + ldr r0, [r6] + ldr r1, [r6, #4] + adds r0, r0, r1 + ldr r1, [r6, #8] + adds r0, r0, r1 + ldr r1, [r6, #0xc] + adds r0, r0, r1 + str r0, [r6, #0xc] +_0801A598: + movs r0, #1 +_0801A59A: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0801A504 + + thumb_func_start sub_0801A5A8 +sub_0801A5A8: @ 0x0801A5A8 + push {r4, r5, r6, r7, lr} + movs r0, #0xa + bl sub_08013D18 + movs r4, #0 + movs r7, #0x64 + ldr r6, _0801A628 + ldr r5, _0801A62C +_0801A5B8: + ldr r0, _0801A630 + adds r0, r4, r0 + ldrb r0, [r0] + subs r0, #1 + adds r1, r0, #0 + muls r1, r7, r1 + adds r1, r1, r6 + adds r0, r5, #0 + movs r2, #0x64 + bl memcpy + adds r5, #0x64 + adds r4, #1 + cmp r4, #1 + ble _0801A5B8 + ldr r4, _0801A628 + movs r0, #0xfa + lsls r0, r0, #1 + adds r5, r4, r0 +_0801A5DE: + adds r0, r4, #0 + bl sub_08067670 + adds r4, #0x64 + cmp r4, r5 + ble _0801A5DE + ldr r4, _0801A628 + movs r5, #0 + adds r6, r4, #0 + adds r6, #0x64 +_0801A5F2: + ldr r1, _0801A62C + adds r1, r5, r1 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy + adds r4, #0x64 + adds r5, #0x64 + cmp r4, r6 + ble _0801A5F2 + movs r0, #0x32 + bl sub_0808414C + bl sub_0806B004 + ldr r0, _0801A634 + movs r2, #0xc0 + lsls r2, r2, #4 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, _0801A638 + bl sub_08000540 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801A628: .4byte gUnknown_2024190 +_0801A62C: .4byte gUnknown_20243E8 +_0801A630: .4byte gUnknown_203CBC4 +_0801A634: .4byte gUnknown_203886A +_0801A638: .4byte sub_080365B4 + thumb_func_end sub_0801A5A8 + + thumb_func_start sub_0801A63C +sub_0801A63C: @ 0x0801A63C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + ldr r4, [sp, #0x38] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0 + mov sb, r0 + movs r1, #1 + mov sl, r1 + ldr r0, _0801A6AC + mov r8, r0 + ldrb r0, [r0] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + str r3, [sp, #0x14] + bl sub_08003B18 + mov r1, sb + str r1, [sp] + mov r0, sl + str r0, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + str r7, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + ldr r3, [sp, #0x14] + bl sub_08199B84 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801A6AC: .4byte gUnknown_82C32C0 + thumb_func_end sub_0801A63C + + thumb_func_start sub_0801A6B0 +sub_0801A6B0: @ 0x0801A6B0 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0801A6C8 + cmp r0, #1 + beq _0801A6F6 + b _0801A70A +_0801A6C8: + movs r0, #0 + movs r1, #1 + movs r2, #0xd + bl sub_080981E0 + str r5, [sp] + movs r0, #0 + adds r1, r6, #0 + movs r2, #1 + movs r3, #1 + bl sub_0801A63C + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0801A70A +_0801A6F6: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0801A70A + strh r0, [r4] + movs r0, #1 + b _0801A70C +_0801A70A: + movs r0, #0 +_0801A70C: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801A6B0 + + thumb_func_start sub_0801A714 +sub_0801A714: @ 0x0801A714 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801A714 + + thumb_func_start sub_0801A728 +sub_0801A728: @ 0x0801A728 + push {r4, lr} + sub sp, #0xc + ldr r1, _0801A748 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x33 + bls _0801A73E + b _0801AA82 +_0801A73E: + lsls r0, r0, #2 + ldr r1, _0801A74C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801A748: .4byte gUnknown_3002360 +_0801A74C: .4byte _0801A750 +_0801A750: @ jump table + .4byte _0801A820 @ case 0 + .4byte _0801A8D0 @ case 1 + .4byte _0801A8F8 @ case 2 + .4byte _0801A91C @ case 3 + .4byte _0801A96C @ case 4 + .4byte _0801AA82 @ case 5 + .4byte _0801AA50 @ case 6 + .4byte _0801AA2C @ case 7 + .4byte _0801AA50 @ case 8 + .4byte _0801AA6C @ case 9 + .4byte _0801AA82 @ case 10 + .4byte _0801AA82 @ case 11 + .4byte _0801AA82 @ case 12 + .4byte _0801AA82 @ case 13 + .4byte _0801AA82 @ case 14 + .4byte _0801AA82 @ case 15 + .4byte _0801AA82 @ case 16 + .4byte _0801AA82 @ case 17 + .4byte _0801AA82 @ case 18 + .4byte _0801AA82 @ case 19 + .4byte _0801AA82 @ case 20 + .4byte _0801AA82 @ case 21 + .4byte _0801AA82 @ case 22 + .4byte _0801AA82 @ case 23 + .4byte _0801AA82 @ case 24 + .4byte _0801AA82 @ case 25 + .4byte _0801AA82 @ case 26 + .4byte _0801AA82 @ case 27 + .4byte _0801AA82 @ case 28 + .4byte _0801AA82 @ case 29 + .4byte _0801AA82 @ case 30 + .4byte _0801AA82 @ case 31 + .4byte _0801AA82 @ case 32 + .4byte _0801AA82 @ case 33 + .4byte _0801AA82 @ case 34 + .4byte _0801AA82 @ case 35 + .4byte _0801AA82 @ case 36 + .4byte _0801AA82 @ case 37 + .4byte _0801AA82 @ case 38 + .4byte _0801AA82 @ case 39 + .4byte _0801AA82 @ case 40 + .4byte _0801AA82 @ case 41 + .4byte _0801AA82 @ case 42 + .4byte _0801AA82 @ case 43 + .4byte _0801AA82 @ case 44 + .4byte _0801AA82 @ case 45 + .4byte _0801AA82 @ case 46 + .4byte _0801AA82 @ case 47 + .4byte _0801AA82 @ case 48 + .4byte _0801AA82 @ case 49 + .4byte _0801A9F8 @ case 50 + .4byte _0801AA14 @ case 51 +_0801A820: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r4, _0801A8BC + movs r0, #4 + bl sub_08000BDC + str r0, [r4] + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0801A8C0 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + bl sub_081996B8 + ldr r0, _0801A8C4 + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0801A860 + b _0801AA96 +_0801A860: + bl sub_08004480 + movs r0, #0 + bl sub_08003774 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_08098144 + bl sub_08197680 + ldr r0, _0801A8C8 + bl sub_080006F0 + ldr r1, _0801A8CC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0801AA5E + .align 2, 0 +_0801A8BC: .4byte gUnknown_2022920 +_0801A8C0: .4byte gUnknown_82C32AC +_0801A8C4: .4byte gUnknown_82C32B0 +_0801A8C8: .4byte sub_0801A714 +_0801A8CC: .4byte gUnknown_3002360 +_0801A8D0: + ldr r0, _0801A8EC + ldr r0, [r0] + ldr r1, _0801A8F0 + movs r2, #0 + bl sub_0801A6B0 + cmp r0, #0 + bne _0801A8E2 + b _0801AA82 +_0801A8E2: + ldr r1, _0801A8F4 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0801AA5E + .align 2, 0 +_0801A8EC: .4byte gUnknown_2022920 +_0801A8F0: .4byte gUnknown_82C32C3 +_0801A8F4: .4byte gUnknown_3002360 +_0801A8F8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + bl sub_08001B48 + ldr r1, _0801A918 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0801AA5E + .align 2, 0 +_0801A918: .4byte gUnknown_3002360 +_0801A91C: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801A928 + b _0801AA82 +_0801A928: + ldr r4, _0801A944 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x20 + bl memset + ldr r0, _0801A948 + ldrb r1, [r0] + ldrb r0, [r0, #1] + cmn r1, r0 + bne _0801A94C + movs r0, #0x52 + b _0801A94E + .align 2, 0 +_0801A944: .4byte gUnknown_202257C +_0801A948: .4byte gUnknown_203CBC4 +_0801A94C: + movs r0, #0x51 +_0801A94E: + strb r0, [r4] + ldr r1, _0801A964 + movs r0, #0 + movs r2, #0x20 + bl sub_0800A070 + ldr r1, _0801A968 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0801AA5E + .align 2, 0 +_0801A964: .4byte gUnknown_202257C +_0801A968: .4byte gUnknown_3002360 +_0801A96C: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _0801A97A + b _0801AA82 +_0801A97A: + ldr r1, _0801A9AC + ldrh r0, [r1] + cmp r0, #0x51 + bne _0801A9B4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #0x51 + bne _0801A9B4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0801A9B0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0x32 + b _0801A9EA + .align 2, 0 +_0801A9AC: .4byte gUnknown_202207C +_0801A9B0: .4byte gUnknown_3002360 +_0801A9B4: + bl sub_0800A7F8 + ldr r4, _0801A9D8 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0x52 + bne _0801A9E0 + ldr r0, _0801A9DC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #6 + b _0801A9EA + .align 2, 0 +_0801A9D8: .4byte gUnknown_202207C +_0801A9DC: .4byte gUnknown_3002360 +_0801A9E0: + ldr r0, _0801A9F4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #8 +_0801A9EA: + strb r1, [r0] + bl sub_0800A178 + b _0801AA82 + .align 2, 0 +_0801A9F4: .4byte gUnknown_3002360 +_0801A9F8: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801AA82 + bl sub_0800A8D4 + ldr r1, _0801AA10 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0801AA5E + .align 2, 0 +_0801AA10: .4byte gUnknown_3002360 +_0801AA14: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801AA82 + ldr r0, _0801AA28 + bl sub_08000540 + b _0801AA82 + .align 2, 0 +_0801AA28: .4byte sub_0801A5A8 +_0801AA2C: + ldr r0, _0801AA44 + ldr r0, [r0] + ldr r1, _0801AA48 + movs r2, #1 + bl sub_0801A6B0 + cmp r0, #0 + beq _0801AA82 + ldr r0, _0801AA4C + bl sub_08000540 + b _0801AA82 + .align 2, 0 +_0801AA44: .4byte gUnknown_2022920 +_0801AA48: .4byte gUnknown_82C32F3 +_0801AA4C: .4byte sub_08085A30 +_0801AA50: + ldr r0, _0801AA68 + ldrb r0, [r0] + cmp r0, #0 + bne _0801AA82 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 +_0801AA5E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0801AA82 + .align 2, 0 +_0801AA68: .4byte gUnknown_30031C4 +_0801AA6C: + ldr r0, _0801AAA0 + ldr r0, [r0] + ldr r1, _0801AAA4 + movs r2, #1 + bl sub_0801A6B0 + cmp r0, #0 + beq _0801AA82 + ldr r0, _0801AAA8 + bl sub_08000540 +_0801AA82: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 +_0801AA96: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801AAA0: .4byte gUnknown_2022920 +_0801AAA4: .4byte gUnknown_82C32E1 +_0801AAA8: .4byte sub_08085A30 + thumb_func_end sub_0801A728 + + thumb_func_start sub_0801AAAC +sub_0801AAAC: @ 0x0801AAAC + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r0, _0801AAD4 + ldr r1, [r0] + ldr r0, _0801AAD8 + adds r1, r1, r0 + ldr r2, _0801AADC + mov r0, sp + bl CpuSet + bl sub_0801AC50 + bl sub_0811FE10 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0801AAD4: .4byte gUnknown_3005AEC +_0801AAD8: .4byte 0x0000322C +_0801AADC: .4byte 0x0500007A + thumb_func_end sub_0801AAAC + + thumb_func_start sub_0801AAE0 +sub_0801AAE0: @ 0x0801AAE0 + ldr r0, _0801AAEC + ldr r0, [r0] + ldr r1, _0801AAF0 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801AAEC: .4byte gUnknown_3005AEC +_0801AAF0: .4byte 0x00003230 + thumb_func_end sub_0801AAE0 + + thumb_func_start sub_0801AAF4 +sub_0801AAF4: @ 0x0801AAF4 + ldr r0, _0801AB00 + ldr r0, [r0] + ldr r1, _0801AB04 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801AB00: .4byte gUnknown_3005AEC +_0801AB04: .4byte 0x00003314 + thumb_func_end sub_0801AAF4 + + thumb_func_start sub_0801AB08 +sub_0801AB08: @ 0x0801AB08 + ldr r0, _0801AB14 + ldr r0, [r0] + ldr r1, _0801AB18 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801AB14: .4byte gUnknown_3005AEC +_0801AB18: .4byte 0x000033BC + thumb_func_end sub_0801AB08 + + thumb_func_start sub_0801AB1C +sub_0801AB1C: @ 0x0801AB1C + ldr r0, _0801AB28 + ldr r0, [r0] + ldr r1, _0801AB2C + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801AB28: .4byte gUnknown_3005AEC +_0801AB2C: .4byte 0x000033E8 + thumb_func_end sub_0801AB1C + + thumb_func_start sub_0801AB30 +sub_0801AB30: @ 0x0801AB30 + ldr r0, _0801AB3C + ldr r0, [r0] + ldr r1, _0801AB40 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801AB3C: .4byte gUnknown_3005AEC +_0801AB40: .4byte 0x000033E0 + thumb_func_end sub_0801AB30 + + thumb_func_start sub_0801AB44 +sub_0801AB44: @ 0x0801AB44 + push {lr} + bl sub_0801AC1C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801AB44 + + thumb_func_start sub_0801AB50 +sub_0801AB50: @ 0x0801AB50 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0801ABE4 + cmp r0, #0 + beq _0801AB98 + bl sub_0801AC1C + ldr r4, _0801AB8C + ldr r0, [r4] + ldr r5, _0801AB90 + adds r0, r0, r5 + adds r1, r6, #0 + movs r2, #0xe0 + bl memcpy + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0xe0 + bl sub_0806F3AC + ldr r1, [r4] + ldr r2, _0801AB94 + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1] + movs r0, #1 + b _0801AB9A + .align 2, 0 +_0801AB8C: .4byte gUnknown_3005AEC +_0801AB90: .4byte 0x00003230 +_0801AB94: .4byte 0x0000322C +_0801AB98: + movs r0, #0 +_0801AB9A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801AB50 + + thumb_func_start sub_0801ABA0 +sub_0801ABA0: @ 0x0801ABA0 + push {r4, lr} + ldr r4, _0801ABD0 + ldr r0, [r4] + ldr r1, _0801ABD4 + adds r0, r0, r1 + movs r1, #0xe0 + bl sub_0806F3AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, [r4] + ldr r2, _0801ABD8 + adds r1, r4, r2 + ldr r1, [r1] + cmp r0, r1 + bne _0801ABDC + ldr r1, _0801ABD4 + adds r0, r4, r1 + bl sub_0801ABE4 + cmp r0, #0 + beq _0801ABDC + movs r0, #1 + b _0801ABDE + .align 2, 0 +_0801ABD0: .4byte gUnknown_3005AEC +_0801ABD4: .4byte 0x00003230 +_0801ABD8: .4byte 0x0000322C +_0801ABDC: + movs r0, #0 +_0801ABDE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801ABA0 + + thumb_func_start sub_0801ABE4 +sub_0801ABE4: @ 0x0801ABE4 + push {lr} + ldrh r0, [r0] + cmp r0, #0 + beq _0801ABF0 + movs r0, #1 + b _0801ABF2 +_0801ABF0: + movs r0, #0 +_0801ABF2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801ABE4 + + thumb_func_start sub_0801ABF8 +sub_0801ABF8: @ 0x0801ABF8 + push {lr} + ldr r0, _0801AC0C + ldr r0, [r0] + ldr r1, _0801AC10 + adds r0, r0, r1 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _0801AC14 + movs r0, #1 + b _0801AC16 + .align 2, 0 +_0801AC0C: .4byte gUnknown_3005AEC +_0801AC10: .4byte 0x00003230 +_0801AC14: + movs r0, #0 +_0801AC16: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801ABF8 + + thumb_func_start sub_0801AC1C +sub_0801AC1C: @ 0x0801AC1C + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + bl sub_0801AAE0 + adds r1, r0, #0 + ldr r2, _0801AC44 + mov r0, sp + bl CpuSet + ldr r0, _0801AC48 + ldr r0, [r0] + ldr r1, _0801AC4C + adds r0, r0, r1 + str r4, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801AC44: .4byte 0x05000038 +_0801AC48: .4byte gUnknown_3005AEC +_0801AC4C: .4byte 0x0000322C + thumb_func_end sub_0801AC1C + + thumb_func_start sub_0801AC50 +sub_0801AC50: @ 0x0801AC50 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + bl sub_0801AB1C + adds r1, r0, #0 + ldr r2, _0801AC70 + mov r0, sp + bl CpuSet + bl sub_0801D9D0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0801AC70: .4byte 0x05000001 + thumb_func_end sub_0801AC50 + + thumb_func_start sub_0801AC74 +sub_0801AC74: @ 0x0801AC74 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0801AC8C + ldr r0, [r0] + ldr r1, _0801AC90 + adds r4, r0, r1 + bl sub_0801ABA0 + cmp r0, #0 + bne _0801AC94 +_0801AC88: + movs r0, #0 + b _0801ACAA + .align 2, 0 +_0801AC8C: .4byte gUnknown_3005AEC +_0801AC90: .4byte 0x00003230 +_0801AC94: + movs r2, #0 +_0801AC96: + adds r0, r4, r2 + adds r1, r5, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0801AC88 + adds r2, #1 + cmp r2, #0xdf + bls _0801AC96 + movs r0, #1 +_0801ACAA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0801AC74 + + thumb_func_start sub_0801ACB0 +sub_0801ACB0: @ 0x0801ACB0 + push {lr} + bl sub_0801ADF0 + bl sub_0801AE28 + bl sub_0801B524 + bl sub_08098A58 + bl sub_0809CDB0 + bl sub_0809CE48 + ldr r0, _0801ACDC + ldr r0, [r0] + ldr r1, _0801ACE0 + adds r0, r0, r1 + bl sub_081651C8 + pop {r0} + bx r0 + .align 2, 0 +_0801ACDC: .4byte gUnknown_3005AF0 +_0801ACE0: .4byte 0x00000BEC + thumb_func_end sub_0801ACB0 + + thumb_func_start sub_0801ACE4 +sub_0801ACE4: @ 0x0801ACE4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0801AD8C + cmp r0, #0 + beq _0801AD38 + bl sub_0801ACB0 + ldr r4, _0801AD28 + ldr r0, [r4] + ldr r5, _0801AD2C + adds r0, r0, r5 + adds r1, r6, #0 + movs r2, #0xa4 + bl memcpy + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0xa4 + bl sub_0806F3AC + ldr r1, [r4] + ldr r3, _0801AD30 + adds r2, r1, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r2] + ldr r0, _0801AD34 + adds r2, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1, #2] + strh r0, [r2, #6] + movs r0, #1 + b _0801AD3A + .align 2, 0 +_0801AD28: .4byte gUnknown_3005AEC +_0801AD2C: .4byte 0x00003314 +_0801AD30: .4byte 0x00003310 +_0801AD34: .4byte 0x000033BC +_0801AD38: + movs r0, #0 +_0801AD3A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801ACE4 + + thumb_func_start sub_0801AD40 +sub_0801AD40: @ 0x0801AD40 + push {r4, r5, lr} + ldr r5, _0801AD78 + ldr r0, [r5] + ldr r1, _0801AD7C + adds r4, r0, r1 + adds r1, #4 + adds r0, r0, r1 + movs r1, #0xa4 + bl sub_0806F3AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r4] + cmp r1, r0 + bne _0801AD84 + ldr r0, [r5] + ldr r1, _0801AD80 + adds r0, r0, r1 + bl sub_0801AD8C + cmp r0, #0 + beq _0801AD84 + bl sub_08098B80 + cmp r0, #0 + beq _0801AD84 + movs r0, #1 + b _0801AD86 + .align 2, 0 +_0801AD78: .4byte gUnknown_3005AEC +_0801AD7C: .4byte 0x00003310 +_0801AD80: .4byte 0x00003314 +_0801AD84: + movs r0, #0 +_0801AD86: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0801AD40 + + thumb_func_start sub_0801AD8C +sub_0801AD8C: @ 0x0801AD8C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2] + cmp r0, #0 + beq _0801ADC2 + ldrb r1, [r2, #8] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + bhi _0801ADC2 + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _0801ADB0 + cmp r0, #0x40 + beq _0801ADB0 + cmp r0, #0x80 + bne _0801ADC2 +_0801ADB0: + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1c + cmp r0, #7 + bhi _0801ADC2 + ldrb r0, [r2, #9] + cmp r0, #7 + bhi _0801ADC2 + movs r0, #1 + b _0801ADC4 +_0801ADC2: + movs r0, #0 +_0801ADC4: + pop {r1} + bx r1 + thumb_func_end sub_0801AD8C + + thumb_func_start sub_0801ADC8 +sub_0801ADC8: @ 0x0801ADC8 + push {lr} + ldr r0, _0801ADE0 + ldr r0, [r0] + ldr r1, _0801ADE4 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _0801ADE8 + movs r0, #1 + b _0801ADEA + .align 2, 0 +_0801ADE0: .4byte gUnknown_3005AEC +_0801ADE4: .4byte 0x00003314 +_0801ADE8: + movs r0, #0 +_0801ADEA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801ADC8 + + thumb_func_start sub_0801ADF0 +sub_0801ADF0: @ 0x0801ADF0 + push {r4, r5, lr} + sub sp, #4 + movs r5, #0 + str r5, [sp] + ldr r4, _0801AE18 + ldr r1, [r4] + ldr r0, _0801AE1C + adds r1, r1, r0 + ldr r2, _0801AE20 + mov r0, sp + bl CpuSet + ldr r0, [r4] + ldr r1, _0801AE24 + adds r0, r0, r1 + str r5, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801AE18: .4byte gUnknown_3005AEC +_0801AE1C: .4byte 0x00003314 +_0801AE20: .4byte 0x05000029 +_0801AE24: .4byte 0x00003310 + thumb_func_end sub_0801ADF0 + + thumb_func_start sub_0801AE28 +sub_0801AE28: @ 0x0801AE28 + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + bl sub_0801AB08 + adds r1, r0, #0 + ldr r2, _0801AE50 + mov r0, sp + bl CpuSet + ldr r0, _0801AE54 + ldr r0, [r0] + ldr r1, _0801AE58 + adds r0, r0, r1 + str r4, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801AE50: .4byte 0x05000009 +_0801AE54: .4byte gUnknown_3005AEC +_0801AE58: .4byte 0x000033B8 + thumb_func_end sub_0801AE28 + + thumb_func_start sub_0801AE5C +sub_0801AE5C: @ 0x0801AE5C + push {lr} + bl sub_0801AD40 + cmp r0, #0 + bne _0801AE6A + movs r0, #0 + b _0801AE74 +_0801AE6A: + ldr r0, _0801AE78 + ldr r0, [r0] + ldr r1, _0801AE7C + adds r0, r0, r1 + ldrh r0, [r0] +_0801AE74: + pop {r1} + bx r1 + .align 2, 0 +_0801AE78: .4byte gUnknown_3005AEC +_0801AE7C: .4byte 0x00003314 + thumb_func_end sub_0801AE5C + + thumb_func_start sub_0801AE80 +sub_0801AE80: @ 0x0801AE80 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #8] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x40 + bne _0801AE94 + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #8] +_0801AE94: + pop {r0} + bx r0 + thumb_func_end sub_0801AE80 + + thumb_func_start sub_0801AE98 +sub_0801AE98: @ 0x0801AE98 + push {lr} + lsls r0, r0, #0x10 + ldr r1, _0801AEAC + adds r0, r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #0x13 + bls _0801AEB0 + movs r0, #0 + b _0801AEB2 + .align 2, 0 +_0801AEAC: .4byte 0xFC180000 +_0801AEB0: + movs r0, #1 +_0801AEB2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801AE98 + + thumb_func_start sub_0801AEB8 +sub_0801AEB8: @ 0x0801AEB8 + push {r4, lr} + bl sub_0801AE5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0801AE98 + cmp r0, #0 + beq _0801AEF0 + ldr r1, _0801AEE8 + ldr r2, _0801AEEC + adds r0, r4, r2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0801AEF0 + movs r0, #1 + b _0801AEF2 + .align 2, 0 +_0801AEE8: .4byte gUnknown_82C3304 +_0801AEEC: .4byte 0xFFFFFC18 +_0801AEF0: + movs r0, #0 +_0801AEF2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801AEB8 + + thumb_func_start sub_0801AEF8 +sub_0801AEF8: @ 0x0801AEF8 + push {lr} + movs r3, #0 + cmp r3, r1 + bge _0801AF1A + adds r2, r0, #0 + adds r2, #8 +_0801AF04: + ldrh r0, [r2, #0xe] + cmp r0, #0 + beq _0801AF12 + ldrh r0, [r2] + cmp r0, #0 + beq _0801AF12 + adds r3, #1 +_0801AF12: + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bne _0801AF04 +_0801AF1A: + adds r0, r3, #0 + pop {r1} + bx r1 + thumb_func_end sub_0801AEF8 + + thumb_func_start sub_0801AF20 +sub_0801AF20: @ 0x0801AF20 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r1, #0 + cmp r1, r2 + bge _0801AF5A + ldrh r6, [r4, #2] + movs r0, #0x16 + adds r0, r0, r5 + mov ip, r0 +_0801AF34: + lsls r3, r1, #1 + mov r7, ip + ldrh r0, [r7] + cmp r0, r6 + beq _0801AF4C + adds r0, r5, #0 + adds r0, #8 + adds r0, r0, r3 + ldrh r0, [r0] + ldrh r3, [r4] + cmp r0, r3 + bne _0801AF50 +_0801AF4C: + movs r0, #1 + b _0801AF5C +_0801AF50: + movs r7, #2 + add ip, r7 + adds r1, #1 + cmp r1, r2 + blt _0801AF34 +_0801AF5A: + movs r0, #0 +_0801AF5C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801AF20 + + thumb_func_start sub_0801AF64 +sub_0801AF64: @ 0x0801AF64 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _0801AF84 + ldrh r1, [r1] + cmp r1, #0 + beq _0801AF84 + ldr r0, _0801AF80 + cmp r1, r0 + bhi _0801AF84 + movs r0, #1 + b _0801AF86 + .align 2, 0 +_0801AF80: .4byte 0x0000019B +_0801AF84: + movs r0, #0 +_0801AF86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801AF64 + + thumb_func_start sub_0801AF8C +sub_0801AF8C: @ 0x0801AF8C + push {lr} + bl sub_0801AD40 + cmp r0, #0 + beq _0801AFC0 + ldr r0, _0801AFB4 + ldr r3, [r0] + ldr r0, _0801AFB8 + adds r2, r3, r0 + ldrb r1, [r2, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801AFC0 + ldr r1, _0801AFBC + adds r0, r3, r1 + ldrb r1, [r2, #9] + bl sub_0801AEF8 + b _0801AFC2 + .align 2, 0 +_0801AFB4: .4byte gUnknown_3005AEC +_0801AFB8: .4byte 0x00003314 +_0801AFBC: .4byte 0x000033BC +_0801AFC0: + movs r0, #0 +_0801AFC2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801AF8C + + thumb_func_start sub_0801AFC8 +sub_0801AFC8: @ 0x0801AFC8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0801AFF4 + ldr r0, [r6] + ldr r1, _0801AFF8 + adds r0, r0, r1 + ldrb r4, [r0, #9] + adds r0, r5, #0 + bl sub_0801AF64 + cmp r0, #0 + beq _0801B032 + ldr r0, [r6] + ldr r1, _0801AFFC + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0801AF20 + cmp r0, #0 + beq _0801B00C + b _0801B032 + .align 2, 0 +_0801AFF4: .4byte gUnknown_3005AEC +_0801AFF8: .4byte 0x00003314 +_0801AFFC: .4byte 0x000033BC +_0801B000: + ldrh r0, [r5, #2] + strh r0, [r1] + ldrh r0, [r5] + strh r0, [r2] + movs r0, #1 + b _0801B034 +_0801B00C: + movs r3, #0 + cmp r3, r4 + bge _0801B032 + ldr r0, [r6] + ldr r6, _0801B03C + adds r2, r0, r6 + adds r6, #0xe + adds r1, r0, r6 +_0801B01C: + ldrh r0, [r2, #0xe] + cmp r0, #0 + bne _0801B028 + ldrh r0, [r2] + cmp r0, #0 + beq _0801B000 +_0801B028: + adds r2, #2 + adds r1, #2 + adds r3, #1 + cmp r3, r4 + blt _0801B01C +_0801B032: + movs r0, #0 +_0801B034: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0801B03C: .4byte 0x000033C4 + thumb_func_end sub_0801AFC8 + + thumb_func_start sub_0801B040 +sub_0801B040: @ 0x0801B040 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0 + str r0, [sp] + ldr r2, _0801B074 + mov r0, sp + adds r1, r5, #0 + bl CpuSet + ldr r0, _0801B078 + str r0, [r5] + movs r0, #1 + strh r0, [r5, #4] + str r0, [r5, #8] + cmp r4, #0 + beq _0801B080 + movs r0, #5 + strh r0, [r5, #0xc] + ldr r0, _0801B07C + b _0801B088 + .align 2, 0 +_0801B074: .4byte 0x05000019 +_0801B078: .4byte 0x00000101 +_0801B07C: .4byte 0x00000201 +_0801B080: + movs r0, #4 + strh r0, [r5, #0xc] + movs r0, #0x80 + lsls r0, r0, #2 +_0801B088: + str r0, [r5, #0x10] + bl sub_0801AD40 + cmp r0, #0 + beq _0801B0BC + bl sub_0801AAF4 + ldrh r0, [r0] + strh r0, [r5, #0x14] + bl sub_0801AB08 + adds r1, r5, #0 + adds r1, #0x20 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + bl sub_0801AAF4 + ldrb r1, [r0, #9] + adds r0, r5, #0 + adds r0, #0x44 + strb r1, [r0] + b _0801B0BE +_0801B0BC: + strh r0, [r5, #0x14] +_0801B0BE: + adds r4, r5, #0 + adds r4, #0x4c + ldr r0, _0801B148 + mov r8, r0 + adds r6, r5, #0 + adds r6, #0x45 + adds r7, r5, #0 + adds r7, #0x50 + movs r1, #0x5c + adds r1, r1, r5 + mov sb, r1 + movs r2, #0x60 + adds r2, r2, r5 + mov sl, r2 + ldr r0, _0801B14C + ldr r0, [r0] + ldr r3, _0801B150 + adds r2, r0, r3 + adds r1, r5, #0 + adds r1, #0x16 + movs r3, #3 +_0801B0E8: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0801B0E8 + mov r0, r8 + ldr r1, [r0] + adds r1, #0xa + adds r0, r4, #0 + bl sub_08083C7C + mov r2, r8 + ldr r1, [r2] + adds r0, r6, #0 + bl sub_080088B8 + ldr r0, _0801B14C + ldr r0, [r0] + ldr r3, _0801B154 + adds r2, r0, r3 + adds r1, r7, #0 + movs r3, #5 +_0801B118: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0801B118 + ldr r1, _0801B158 + mov r0, sb + movs r2, #4 + bl memcpy + ldr r0, _0801B15C + ldrb r0, [r0] + mov r4, sl + strb r0, [r4] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801B148: .4byte gUnknown_3005AF0 +_0801B14C: .4byte gUnknown_3005AEC +_0801B150: .4byte 0x000033E0 +_0801B154: .4byte 0x00002BB0 +_0801B158: .4byte 0x080000AC +_0801B15C: .4byte 0x080000BC + thumb_func_end sub_0801B040 + + thumb_func_start sub_0801B160 +sub_0801B160: @ 0x0801B160 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldr r1, [r2] + ldr r0, _0801B1A0 + cmp r1, r0 + bne _0801B19C + ldrh r1, [r2, #4] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0801B19C + ldr r0, [r2, #8] + ands r0, r3 + cmp r0, #0 + beq _0801B19C + cmp r4, #0 + bne _0801B1A4 + ldrh r1, [r2, #0xc] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0801B19C + ldr r0, [r2, #0x10] + movs r1, #0xe0 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0801B1A4 +_0801B19C: + movs r0, #0 + b _0801B1A6 + .align 2, 0 +_0801B1A0: .4byte 0x00000101 +_0801B1A4: + movs r0, #1 +_0801B1A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801B160 + + thumb_func_start sub_0801B1AC +sub_0801B1AC: @ 0x0801B1AC + push {lr} + ldrh r1, [r1, #0x14] + cmp r1, #0 + bne _0801B1B8 + movs r0, #0 + b _0801B1C4 +_0801B1B8: + ldrh r0, [r0] + cmp r0, r1 + beq _0801B1C2 + movs r0, #2 + b _0801B1C4 +_0801B1C2: + movs r0, #1 +_0801B1C4: + pop {r1} + bx r1 + thumb_func_end sub_0801B1AC + + thumb_func_start sub_0801B1C8 +sub_0801B1C8: @ 0x0801B1C8 + push {r4, r5, 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_0801AEF8 + ldrb r2, [r4] + subs r4, r2, r0 + cmp r4, #0 + bne _0801B1E8 + movs r0, #1 + b _0801B202 +_0801B1E8: + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801AF20 + cmp r0, #0 + beq _0801B1F8 + movs r0, #3 + b _0801B202 +_0801B1F8: + cmp r4, #1 + beq _0801B200 + movs r0, #2 + b _0801B202 +_0801B200: + movs r0, #4 +_0801B202: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801B1C8 + + thumb_func_start sub_0801B208 +sub_0801B208: @ 0x0801B208 + push {r4, lr} + movs r3, #0 + adds r2, r0, #0 + adds r2, #0x16 +_0801B210: + ldrh r0, [r2] + ldrh r4, [r1] + cmp r0, r4 + beq _0801B21C + movs r0, #0 + b _0801B228 +_0801B21C: + adds r1, #2 + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _0801B210 + movs r0, #1 +_0801B228: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801B208 + + thumb_func_start sub_0801B230 +sub_0801B230: @ 0x0801B230 + push {lr} + adds r2, r0, #0 + adds r2, #0x20 + adds r0, #0x44 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_0801AEF8 + pop {r1} + bx r1 + thumb_func_end sub_0801B230 + + thumb_func_start sub_0801B244 +sub_0801B244: @ 0x0801B244 + push {lr} + adds r2, r0, #0 + cmp r1, #4 + bhi _0801B290 + lsls r0, r1, #2 + ldr r1, _0801B258 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B258: .4byte _0801B25C +_0801B25C: @ jump table + .4byte _0801B270 @ case 0 + .4byte _0801B274 @ case 1 + .4byte _0801B278 @ case 2 + .4byte _0801B27C @ case 3 + .4byte _0801B288 @ case 4 +_0801B270: + ldrh r0, [r2, #0x20] + b _0801B29E +_0801B274: + ldrh r0, [r2, #0x22] + b _0801B29E +_0801B278: + ldrh r0, [r2, #0x24] + b _0801B29E +_0801B27C: + adds r0, r2, #0 + bl sub_0801B230 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0801B29E +_0801B288: + adds r0, r2, #0 + adds r0, #0x44 + ldrb r0, [r0] + b _0801B29E +_0801B290: + ldr r0, _0801B2A4 + ldr r1, _0801B2A8 + ldr r2, _0801B2AC + movs r3, #1 + bl AGBAssert + movs r0, #0 +_0801B29E: + pop {r1} + bx r1 + .align 2, 0 +_0801B2A4: .4byte gUnknown_82C332C +_0801B2A8: .4byte 0x0000034F +_0801B2AC: .4byte gUnknown_82C3338 + thumb_func_end sub_0801B244 + + thumb_func_start sub_0801B2B0 +sub_0801B2B0: @ 0x0801B2B0 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0801B2D8 + ldr r0, [r2] + ldr r1, _0801B2DC + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + adds r3, r2, #0 + cmp r0, #2 + bne _0801B34A + movs r2, #0 + cmp r4, #4 + bhi _0801B318 + lsls r0, r4, #2 + ldr r1, _0801B2E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B2D8: .4byte gUnknown_3005AEC +_0801B2DC: .4byte 0x00003314 +_0801B2E0: .4byte _0801B2E4 +_0801B2E4: @ jump table + .4byte _0801B2F8 @ case 0 + .4byte _0801B304 @ case 1 + .4byte _0801B310 @ case 2 + .4byte _0801B318 @ case 3 + .4byte _0801B318 @ case 4 +_0801B2F8: + ldr r0, [r3] + ldr r1, _0801B300 + b _0801B316 + .align 2, 0 +_0801B300: .4byte 0x000033BC +_0801B304: + ldr r0, [r3] + ldr r1, _0801B30C + b _0801B316 + .align 2, 0 +_0801B30C: .4byte 0x000033BE +_0801B310: + ldr r0, [r3] + movs r1, #0xcf + lsls r1, r1, #6 +_0801B316: + adds r2, r0, r1 +_0801B318: + cmp r2, #0 + bne _0801B338 + ldr r0, _0801B32C + ldr r1, _0801B330 + ldr r2, _0801B334 + movs r3, #1 + bl AGBAssert + b _0801B34A + .align 2, 0 +_0801B32C: .4byte gUnknown_82C332C +_0801B330: .4byte 0x0000037A +_0801B334: .4byte gUnknown_82C3338 +_0801B338: + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0801B350 + cmp r0, r1 + bls _0801B34A + strh r1, [r2] +_0801B34A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801B350: .4byte 0x000003E7 + thumb_func_end sub_0801B2B0 + + thumb_func_start sub_0801B354 +sub_0801B354: @ 0x0801B354 + push {lr} + cmp r0, #4 + bhi _0801B438 + lsls r0, r0, #2 + ldr r1, _0801B364 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B364: .4byte _0801B368 +_0801B368: @ jump table + .4byte _0801B37C @ case 0 + .4byte _0801B3A4 @ case 1 + .4byte _0801B3CC @ case 2 + .4byte _0801B3F4 @ case 3 + .4byte _0801B418 @ case 4 +_0801B37C: + ldr r0, _0801B398 + ldr r2, [r0] + ldr r1, _0801B39C + adds r0, r2, r1 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _0801B438 + ldr r1, _0801B3A0 + adds r0, r2, r1 + ldrh r0, [r0] + b _0801B446 + .align 2, 0 +_0801B398: .4byte gUnknown_3005AEC +_0801B39C: .4byte 0x00003314 +_0801B3A0: .4byte 0x000033BC +_0801B3A4: + ldr r0, _0801B3C0 + ldr r2, [r0] + ldr r1, _0801B3C4 + adds r0, r2, r1 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _0801B438 + ldr r1, _0801B3C8 + adds r0, r2, r1 + ldrh r0, [r0, #2] + b _0801B446 + .align 2, 0 +_0801B3C0: .4byte gUnknown_3005AEC +_0801B3C4: .4byte 0x00003314 +_0801B3C8: .4byte 0x000033BC +_0801B3CC: + ldr r0, _0801B3E8 + ldr r2, [r0] + ldr r1, _0801B3EC + adds r0, r2, r1 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _0801B438 + ldr r1, _0801B3F0 + adds r0, r2, r1 + ldrh r0, [r0, #4] + b _0801B446 + .align 2, 0 +_0801B3E8: .4byte gUnknown_3005AEC +_0801B3EC: .4byte 0x00003314 +_0801B3F0: .4byte 0x000033BC +_0801B3F4: + ldr r0, _0801B410 + ldr r0, [r0] + ldr r1, _0801B414 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801B438 + bl sub_0801AF8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0801B446 + .align 2, 0 +_0801B410: .4byte gUnknown_3005AEC +_0801B414: .4byte 0x00003314 +_0801B418: + ldr r0, _0801B430 + ldr r0, [r0] + ldr r1, _0801B434 + adds r2, r0, r1 + ldrb r1, [r2, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801B438 + ldrb r0, [r2, #9] + b _0801B446 + .align 2, 0 +_0801B430: .4byte gUnknown_3005AEC +_0801B434: .4byte 0x00003314 +_0801B438: + ldr r0, _0801B44C + ldr r1, _0801B450 + ldr r2, _0801B454 + movs r3, #1 + bl AGBAssert + movs r0, #0 +_0801B446: + pop {r1} + bx r1 + .align 2, 0 +_0801B44C: .4byte gUnknown_82C332C +_0801B450: .4byte 0x000003A7 +_0801B454: .4byte gUnknown_82C3338 + thumb_func_end sub_0801B354 + + thumb_func_start sub_0801B458 +sub_0801B458: @ 0x0801B458 + ldr r1, _0801B460 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_0801B460: .4byte gUnknown_2022924 + thumb_func_end sub_0801B458 + + thumb_func_start sub_0801B464 +sub_0801B464: @ 0x0801B464 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r0, #0 + ldr r5, _0801B494 + movs r0, #0 + str r0, [r5] + cmp r4, #0 + beq _0801B4A2 + bl sub_0801AD40 + cmp r0, #0 + beq _0801B4A0 + ldr r0, _0801B498 + ldr r0, [r0] + ldr r1, _0801B49C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0801B4A0 + movs r0, #1 + str r0, [r5] + b _0801B4A2 + .align 2, 0 +_0801B494: .4byte gUnknown_2022924 +_0801B498: .4byte gUnknown_3005AEC +_0801B49C: .4byte 0x00003314 +_0801B4A0: + movs r0, #0 +_0801B4A2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0801B464 + + thumb_func_start sub_0801B4A8 +sub_0801B4A8: @ 0x0801B4A8 + push {lr} + adds r2, r0, #0 + ldr r0, _0801B4D0 + ldr r0, [r0] + cmp r0, #0 + beq _0801B514 + cmp r2, #1 + beq _0801B4EC + cmp r2, #1 + blo _0801B4D8 + cmp r2, #2 + bne _0801B508 + ldr r0, _0801B4D4 + ldr r2, [r0] + movs r0, #0xd0 + lsls r0, r0, #6 + adds r2, r2, r0 + movs r0, #2 + b _0801B4F6 + .align 2, 0 +_0801B4D0: .4byte gUnknown_2022924 +_0801B4D4: .4byte gUnknown_3005AEC +_0801B4D8: + ldr r0, _0801B4E4 + ldr r2, [r0] + ldr r0, _0801B4E8 + adds r2, r2, r0 + movs r0, #0 + b _0801B4F6 + .align 2, 0 +_0801B4E4: .4byte gUnknown_3005AEC +_0801B4E8: .4byte 0x000033EC +_0801B4EC: + ldr r0, _0801B500 + ldr r2, [r0] + ldr r0, _0801B504 + adds r2, r2, r0 + movs r0, #1 +_0801B4F6: + movs r3, #5 + bl sub_0801B5B8 + b _0801B514 + .align 2, 0 +_0801B500: .4byte gUnknown_3005AEC +_0801B504: .4byte 0x000033EC +_0801B508: + ldr r0, _0801B518 + ldr r1, _0801B51C + ldr r2, _0801B520 + movs r3, #1 + bl AGBAssert +_0801B514: + pop {r0} + bx r0 + .align 2, 0 +_0801B518: .4byte gUnknown_82C332C +_0801B51C: .4byte 0x000003F2 +_0801B520: .4byte gUnknown_82C3338 + thumb_func_end sub_0801B4A8 + + thumb_func_start sub_0801B524 +sub_0801B524: @ 0x0801B524 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r0, _0801B544 + ldr r1, [r0] + ldr r0, _0801B548 + adds r1, r1, r0 + ldr r2, _0801B54C + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0801B544: .4byte gUnknown_3005AEC +_0801B548: .4byte 0x000033EC +_0801B54C: .4byte 0x0500000A + thumb_func_end sub_0801B524 + + thumb_func_start sub_0801B550 +sub_0801B550: @ 0x0801B550 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r1, #0 + cmp r1, r2 + bge _0801B572 + ldr r0, [r4] + cmp r0, r5 + beq _0801B572 + adds r3, r4, #0 +_0801B564: + adds r3, #4 + adds r1, #1 + cmp r1, r2 + bge _0801B572 + ldr r0, [r3] + cmp r0, r5 + bne _0801B564 +_0801B572: + cmp r1, r2 + bne _0801B594 + subs r3, r1, #1 + cmp r3, #0 + ble _0801B58E + lsls r0, r3, #2 + subs r0, #4 + adds r2, r0, r4 +_0801B582: + ldr r0, [r2] + str r0, [r2, #4] + subs r2, #4 + subs r3, #1 + cmp r3, #0 + bgt _0801B582 +_0801B58E: + str r5, [r4] + movs r0, #1 + b _0801B5B0 +_0801B594: + adds r3, r1, #0 + cmp r3, #0 + ble _0801B5AC + lsls r0, r3, #2 + subs r0, #4 + adds r2, r0, r4 +_0801B5A0: + ldr r0, [r2] + str r0, [r2, #4] + subs r2, #4 + subs r3, #1 + cmp r3, #0 + bgt _0801B5A0 +_0801B5AC: + str r5, [r4] + movs r0, #0 +_0801B5B0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801B550 + + thumb_func_start sub_0801B5B8 +sub_0801B5B8: @ 0x0801B5B8 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + bl sub_0801B550 + cmp r0, #0 + beq _0801B5D0 + adds r0, r4, #0 + bl sub_0801B2B0 +_0801B5D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801B5B8 + + thumb_func_start sub_0801B5D8 +sub_0801B5D8: @ 0x0801B5D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + cmp r4, #0 + beq _0801B5F4 + cmp r5, #0 + beq _0801B5F4 + ldr r6, _0801B5F8 + ldr r0, _0801B5FC + bl sub_08000BDC + str r0, [r6] + cmp r0, #0 + bne _0801B600 +_0801B5F4: + movs r0, #0 + b _0801B664 + .align 2, 0 +_0801B5F8: .4byte gUnknown_2022928 +_0801B5FC: .4byte 0x0000126C +_0801B600: + adds r1, r4, #0 + movs r2, #0xa4 + bl memcpy + ldr r0, [r6] + adds r0, #0xa4 + adds r1, r5, #0 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldr r2, [r6] + ldrb r1, [r2, #8] + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1c + cmp r0, #7 + bls _0801B62E + movs r0, #0x3d + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #8] +_0801B62E: + ldr r2, [r6] + ldrb r1, [r2, #8] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + bls _0801B642 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #8] +_0801B642: + ldr r1, [r6] + ldrb r0, [r1, #9] + cmp r0, #7 + bls _0801B64E + movs r0, #0 + strb r0, [r1, #9] +_0801B64E: + ldr r0, [r6] + adds r2, r0, #0 + adds r2, #0xc8 + ldrb r0, [r0, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + lsls r0, r0, #4 + ldr r1, _0801B66C + adds r0, r0, r1 + str r0, [r2] + movs r0, #1 +_0801B664: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0801B66C: .4byte gUnknown_82C428C + thumb_func_end sub_0801B5D8 + + thumb_func_start sub_0801B670 +sub_0801B670: @ 0x0801B670 + push {r4, lr} + ldr r4, _0801B694 + ldr r0, [r4] + cmp r0, #0 + beq _0801B68C + ldr r2, _0801B698 + movs r1, #0 + bl memset + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0801B68C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801B694: .4byte gUnknown_2022928 +_0801B698: .4byte 0x0000126C + thumb_func_end sub_0801B670 + + thumb_func_start sub_0801B69C +sub_0801B69C: @ 0x0801B69C + push {r4, r5, r6, lr} + sub sp, #0x24 + ldr r4, _0801B6B0 + ldr r0, [r4] + cmp r0, #0 + bne _0801B6B4 + movs r0, #1 + rsbs r0, r0, #0 + b _0801B8A4 + .align 2, 0 +_0801B6B0: .4byte gUnknown_2022928 +_0801B6B4: + adds r0, #0xcc + ldrb r0, [r0] + cmp r0, #7 + bls _0801B6BE + b _0801B880 +_0801B6BE: + lsls r0, r0, #2 + ldr r1, _0801B6C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B6C8: .4byte _0801B6CC +_0801B6CC: @ jump table + .4byte _0801B6EC @ case 0 + .4byte _0801B6FE @ case 1 + .4byte _0801B70C @ case 2 + .4byte _0801B7A0 @ case 3 + .4byte _0801B824 @ case 4 + .4byte _0801B82A @ case 5 + .4byte _0801B844 @ case 6 + .4byte _0801B84A @ case 7 +_0801B6EC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0801B896 +_0801B6FE: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801B70A + b _0801B896 +_0801B70A: + b _0801B8A2 +_0801B70C: + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + ldr r5, _0801B798 + ldr r0, [r5] + adds r0, #0xc8 + ldr r0, [r0] + ldr r1, [r0, #4] + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #8 + bl sub_08199728 + ldr r4, _0801B79C + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r5] + adds r1, #0xce + strh r0, [r1] + adds r0, r4, #0 + adds r0, #8 + bl sub_08003250 + ldr r1, [r5] + adds r1, #0xd0 + strh r0, [r1] + adds r4, #0x10 + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r5] + adds r1, #0xd2 + strh r0, [r1] + b _0801B896 + .align 2, 0 +_0801B798: .4byte gUnknown_2022928 +_0801B79C: .4byte gUnknown_82C3348 +_0801B7A0: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _0801B8A2 + movs r0, #1 + bl sub_080985A0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + ldr r2, _0801B81C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r5, _0801B820 + ldr r0, [r5] + adds r0, #0xc8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldr r0, [r0, #8] + movs r4, #0x9b + lsls r4, r4, #2 + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r1, [r5] + adds r1, r1, r4 + movs r2, #0x1e + str r2, [sp] + movs r0, #0x14 + str r0, [sp, #4] + str r6, [sp, #8] + str r6, [sp, #0xc] + str r2, [sp, #0x10] + str r0, [sp, #0x14] + movs r0, #1 + str r0, [sp, #0x18] + movs r0, #8 + str r0, [sp, #0x1c] + str r6, [sp, #0x20] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + movs r0, #2 + bl sub_08002248 + b _0801B896 + .align 2, 0 +_0801B81C: .4byte gUnknown_2037C74 +_0801B820: .4byte gUnknown_2022928 +_0801B824: + bl sub_0801B9F0 + b _0801B896 +_0801B82A: + movs r0, #0 + bl sub_0801BCA4 + movs r0, #1 + bl sub_0801BCA4 + movs r0, #2 + bl sub_0801BCA4 + movs r0, #1 + bl sub_08002248 + b _0801B896 +_0801B844: + bl sub_080D27A4 + b _0801B896 +_0801B84A: + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r2, _0801B87C + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + bl sub_0801C04C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + bl sub_080A12E4 + b _0801B896 + .align 2, 0 +_0801B87C: .4byte gUnknown_2037C74 +_0801B880: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0801B8A2 + ldr r0, [r4] + adds r0, #0xcc + strb r1, [r0] + movs r0, #1 + b _0801B8A4 +_0801B896: + ldr r0, _0801B8AC + ldr r1, [r0] + adds r1, #0xcc + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0801B8A2: + movs r0, #0 +_0801B8A4: + add sp, #0x24 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0801B8AC: .4byte gUnknown_2022928 + thumb_func_end sub_0801B69C + + thumb_func_start sub_0801B8B0 +sub_0801B8B0: @ 0x0801B8B0 + push {r4, r5, lr} + sub sp, #8 + ldr r4, _0801B8C4 + ldr r0, [r4] + cmp r0, #0 + bne _0801B8C8 + movs r0, #1 + rsbs r0, r0, #0 + b _0801B9E4 + .align 2, 0 +_0801B8C4: .4byte gUnknown_2022928 +_0801B8C8: + adds r0, #0xcc + ldrb r0, [r0] + cmp r0, #5 + bhi _0801B9C0 + lsls r0, r0, #2 + ldr r1, _0801B8DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B8DC: .4byte _0801B8E0 +_0801B8E0: @ jump table + .4byte _0801B8F8 @ case 0 + .4byte _0801B90A @ case 1 + .4byte _0801B916 @ case 2 + .4byte _0801B95E @ case 3 + .4byte _0801B990 @ case 4 + .4byte _0801B99A @ case 5 +_0801B8F8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0801B9D6 +_0801B90A: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801B9D6 + b _0801B9E2 +_0801B916: + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _0801B9D6 +_0801B95E: + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + ldr r4, _0801B98C + ldr r0, [r4] + adds r0, #0xd2 + ldrb r0, [r0] + bl sub_08003444 + ldr r0, [r4] + adds r0, #0xd0 + ldrb r0, [r0] + bl sub_08003444 + ldr r0, [r4] + adds r0, #0xce + ldrb r0, [r0] + bl sub_08003444 + b _0801B9D6 + .align 2, 0 +_0801B98C: .4byte gUnknown_2022928 +_0801B990: + bl sub_0801C17C + bl sub_080D283C + b _0801B9D6 +_0801B99A: + ldr r0, _0801B9BC + ldrb r0, [r0] + bl sub_08018180 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0801B9D6 + .align 2, 0 +_0801B9BC: .4byte gUnknown_2022914 +_0801B9C0: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0801B9E2 + ldr r0, [r4] + adds r0, #0xcc + strb r1, [r0] + movs r0, #1 + b _0801B9E4 +_0801B9D6: + ldr r0, _0801B9EC + ldr r1, [r0] + adds r1, #0xcc + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0801B9E2: + movs r0, #0 +_0801B9E4: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0801B9EC: .4byte gUnknown_2022928 + thumb_func_end sub_0801B8B0 + + thumb_func_start sub_0801B9F0 +sub_0801B9F0: @ 0x0801B9F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r5, #0 + mov r0, sp + movs r1, #0 + movs r2, #6 + bl memset + ldr r4, _0801BAC4 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xe3 + adds r1, #0xa + movs r2, #0x12 + bl memcpy + ldr r0, [r4] + adds r0, #0xf5 + movs r1, #0xff + strb r1, [r0] + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xf6 + adds r1, #0x1c + movs r2, #0xd + bl memcpy + ldr r0, [r4] + ldr r2, _0801BAC8 + adds r1, r0, r2 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + ldr r1, [r4] + ldr r0, [r1, #4] + ldr r2, _0801BACC + cmp r0, r2 + bls _0801BA42 + str r2, [r1, #4] +_0801BA42: + ldr r1, [r4] + movs r3, #0x82 + lsls r3, r3, #1 + adds r0, r1, r3 + ldr r1, [r1, #4] + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + adds r6, r4, #0 +_0801BA56: + ldr r2, [r6] + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r4, r1, r5 + adds r0, r4, r2 + ldr r3, _0801BAD0 + adds r0, r0, r3 + adds r1, r1, r2 + adds r1, #0x29 + movs r2, #0x14 + bl memcpy + ldr r1, [r6] + ldr r0, _0801BAD4 + adds r1, r1, r0 + adds r1, r1, r4 + movs r2, #1 + rsbs r2, r2, #0 + adds r7, r2, #0 + movs r0, #0xff + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _0801BA56 + ldr r6, _0801BAC4 + ldr r1, [r6] + ldr r3, _0801BAD8 + adds r0, r1, r3 + adds r1, #0x79 + movs r2, #0x14 + bl memcpy + ldr r0, [r6] + ldr r2, _0801BADC + adds r1, r0, r2 + movs r3, #1 + rsbs r3, r3, #0 + adds r4, r3, #0 + movs r0, #0xff + strb r0, [r1] + ldr r1, [r6] + ldrb r0, [r1, #8] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _0801BAFE + cmp r0, #1 + bgt _0801BAE0 + cmp r0, #0 + beq _0801BAE6 + b _0801BC96 + .align 2, 0 +_0801BAC4: .4byte gUnknown_2022928 +_0801BAC8: .4byte 0x00000103 +_0801BACC: .4byte 0x000F423F +_0801BAD0: .4byte 0x0000010B +_0801BAD4: .4byte 0x0000011F +_0801BAD8: .4byte 0x0000015F +_0801BADC: .4byte 0x00000173 +_0801BAE0: + cmp r0, #2 + beq _0801BB0C + b _0801BC96 +_0801BAE6: + movs r2, #0xba + lsls r2, r2, #1 + adds r0, r1, r2 + adds r1, #0x8d + movs r2, #0x14 + bl memcpy + ldr r1, [r6] + movs r3, #0xc4 + lsls r3, r3, #1 + adds r1, r1, r3 + b _0801BB04 +_0801BAFE: + movs r6, #0xba + lsls r6, r6, #1 + adds r1, r1, r6 +_0801BB04: + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + b _0801BC96 +_0801BB0C: + movs r2, #0xba + lsls r2, r2, #1 + adds r0, r1, r2 + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + mov r3, sp + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0xa4 + ldrh r0, [r0] + ldr r2, _0801BBB8 + cmp r0, r2 + bls _0801BB2A + adds r0, r2, #0 +_0801BB2A: + strh r0, [r3] + mov r3, sp + adds r0, r1, #0 + adds r0, #0xa6 + ldrh r0, [r0] + cmp r0, r2 + bls _0801BB3A + adds r0, r2, #0 +_0801BB3A: + strh r0, [r3, #2] + mov r3, sp + adds r0, r1, #0 + adds r0, #0xa8 + ldrh r0, [r0] + cmp r0, r2 + bls _0801BB4A + adds r0, r2, #0 +_0801BB4A: + strh r0, [r3, #4] + movs r5, #0 +_0801BB4E: + lsls r4, r5, #3 + subs r4, r4, r5 + lsls r4, r4, #2 + movs r3, #0xc6 + lsls r3, r3, #1 + adds r4, r4, r3 + ldr r0, [r6] + adds r0, r0, r4 + adds r0, #0x16 + movs r1, #0xff + movs r2, #4 + bl memset + ldr r0, [r6] + adds r0, r0, r4 + adds r0, #1 + movs r1, #0xff + movs r2, #0x15 + bl memset + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #7 + bls _0801BB4E + movs r5, #0 + movs r4, #0 + ldr r7, _0801BBBC + movs r6, #0xc6 + lsls r6, r6, #1 + mov r8, r6 +_0801BB8C: + ldr r2, [r7] + adds r1, r2, #0 + adds r1, #0x8d + adds r0, r1, r5 + ldrb r3, [r0] + cmp r3, #0xf7 + beq _0801BBC4 + adds r0, r2, #0 + adds r0, #0xcd + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r6, _0801BBC0 + adds r1, r2, r6 + adds r1, r1, r0 + strb r3, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _0801BC8A + .align 2, 0 +_0801BBB8: .4byte 0x000003E7 +_0801BBBC: .4byte gUnknown_2022928 +_0801BBC0: .4byte 0x0000018D +_0801BBC4: + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + cmp r3, #2 + bls _0801BBD4 + adds r0, r5, #2 + lsls r0, r0, #0x10 + b _0801BC88 +_0801BBD4: + adds r0, r2, #0 + adds r0, #0xcd + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, r2, r0 + adds r0, #0x16 + lsls r1, r3, #1 + add r1, sp + ldrh r1, [r1] + movs r2, #2 + movs r3, #3 + bl sub_080089D8 + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0xcd + ldrb r2, [r0] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r1, r0 + adds r6, r5, #2 + adds r1, #0x8d + adds r1, r1, r6 + ldrb r1, [r1] + add r0, r8 + strb r1, [r0] + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xcd + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + add r2, r8 + ldrb r5, [r2] + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + cmp r5, r4 + ble _0801BC70 + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + ldr r3, [r7] + adds r1, r3, #0 + adds r1, #0xcd + ldrb r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r3, r3, r1 + adds r4, r4, r0 + movs r0, #0xc6 + lsls r0, r0, #1 + adds r3, r3, r0 + strb r4, [r3] +_0801BC70: + ldr r1, [r7] + adds r1, #0xcd + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0xcd + ldrb r0, [r0] + cmp r0, #7 + bhi _0801BC96 + movs r4, #0 + lsls r0, r6, #0x10 +_0801BC88: + lsrs r5, r0, #0x10 +_0801BC8A: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x13 + bhi _0801BC96 + b _0801BB8C +_0801BC96: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801B9F0 + + thumb_func_start sub_0801BCA4 +sub_0801BCA4: @ 0x0801BCA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r0, #0 + str r0, [sp, #0xc] + ldr r1, _0801BCF0 + mov sl, r1 + ldr r0, [r1] + lsls r1, r4, #1 + adds r0, #0xce + adds r0, r0, r1 + ldrh r0, [r0] + lsls r7, r0, #0x18 + lsrs r3, r7, #0x18 + mov sb, r3 + mov r0, sb + bl sub_0800365C + mov r0, sb + movs r1, #0 + bl sub_08003B18 + cmp r4, #1 + bne _0801BCE2 + b _0801BE20 +_0801BCE2: + cmp r4, #1 + bgt _0801BCF4 + cmp r4, #0 + beq _0801BCFE + mov r8, r7 + b _0801C02A + .align 2, 0 +_0801BCF0: .4byte gUnknown_2022928 +_0801BCF4: + cmp r5, #2 + bne _0801BCFA + b _0801BE84 +_0801BCFA: + mov r8, r7 + b _0801C02A +_0801BCFE: + mov r0, sl + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r3, _0801BE1C + adds r1, r1, r3 + str r1, [sp] + ldr r0, [sp, #0xc] + str r0, [sp, #4] + adds r2, #0xe3 + str r2, [sp, #8] + mov r0, sb + movs r1, #3 + movs r2, #0 + movs r3, #1 + bl sub_08199AFC + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r5, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + adds r6, r0, #0 + mov r1, sl + ldr r0, [r1] + adds r0, #0xf6 + bl sub_0800893C + mov r8, r0 + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r5, r5, r6 + movs r6, #0xd + adds r2, r5, #0 + muls r2, r6, r2 + mov r3, r8 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + mov r0, r8 + muls r0, r4, r0 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sl + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + lsls r0, r1, #1 + adds r0, r0, r1 + ldr r1, _0801BE1C + adds r0, r0, r1 + str r0, [sp] + ldr r0, [sp, #0xc] + str r0, [sp, #4] + adds r3, #0xf6 + str r3, [sp, #8] + mov r0, sb + movs r1, #3 + movs r3, #0x11 + bl sub_08199AFC + mov r1, sl + ldr r0, [r1] + ldr r0, [r0, #4] + mov r8, r7 + cmp r0, #0 + bne _0801BDC4 + b _0801C02A +_0801BDC4: + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + adds r2, r4, #0 + muls r2, r6, r2 + adds r2, #6 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sl + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + lsls r0, r1, #1 + adds r0, r0, r1 + ldr r1, _0801BE1C + adds r0, r0, r1 + str r0, [sp] + ldr r0, [sp, #0xc] + str r0, [sp, #4] + movs r1, #0x82 + lsls r1, r1, #1 + adds r0, r3, r1 + str r0, [sp, #8] + mov r0, sb + movs r1, #0 + movs r3, #0x11 + bl sub_08199AFC + b _0801C02A + .align 2, 0 +_0801BE1C: .4byte gUnknown_82C333C +_0801BE20: + mov r8, r7 +_0801BE22: + ldr r3, [sp, #0xc] + lsls r4, r3, #0x18 + asrs r4, r4, #0x18 + lsls r3, r4, #4 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0801BE78 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0] + lsrs r0, r0, #4 + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, _0801BE7C + adds r1, r1, r0 + str r1, [sp] + movs r0, #0 + str r0, [sp, #4] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0801BE80 + adds r0, r0, r1 + adds r2, r2, r0 + str r2, [sp, #8] + mov r1, r8 + lsrs r0, r1, #0x18 + movs r1, #3 + movs r2, #2 + bl sub_08199AFC + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r3, r4, #0x18 + str r3, [sp, #0xc] + asrs r4, r4, #0x18 + cmp r4, #3 + ble _0801BE22 + b _0801C02A + .align 2, 0 +_0801BE78: .4byte gUnknown_2022928 +_0801BE7C: .4byte gUnknown_82C333C +_0801BE80: .4byte 0x0000010B +_0801BE84: + ldr r4, _0801BF08 + mov r0, sl + ldr r2, [r0] + ldrb r0, [r2, #8] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r0, r0, r4 + ldrb r3, [r0] + adds r0, r2, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r5, _0801BF0C + adds r1, r1, r5 + str r1, [sp] + ldr r1, [sp, #0xc] + str r1, [sp, #4] + ldr r1, _0801BF10 + adds r0, r2, r1 + str r0, [sp, #8] + mov r0, sb + movs r1, #3 + movs r2, #2 + bl sub_08199AFC + mov r3, sl + ldr r2, [r3] + ldrb r1, [r2, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _0801BF14 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + adds r0, r0, r4 + ldrb r3, [r0] + adds r3, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r2, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r1, [r0, #1] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, r0, r5 + str r0, [sp] + ldr r0, [sp, #0xc] + str r0, [sp, #4] + movs r1, #0xba + lsls r1, r1, #1 + adds r0, r2, r1 + str r0, [sp, #8] + mov r0, sb + movs r1, #3 + movs r2, #2 + bl sub_08199AFC + mov r8, r7 + b _0801C02A + .align 2, 0 +_0801BF08: .4byte gUnknown_82C3344 +_0801BF0C: .4byte gUnknown_82C333C +_0801BF10: .4byte 0x0000015F +_0801BF14: + movs r3, #0xde + mov sb, r3 + adds r0, r2, #0 + adds r0, #0xcd + ldrb r0, [r0] + lsls r0, r0, #0x18 + mov r8, r7 + cmp r0, #0 + bge _0801BF28 + b _0801C02A +_0801BF28: + mov r1, sl + ldr r4, [r1] + asrs r7, r0, #0x18 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r6, r0, #2 + adds r2, r4, r6 + movs r3, #0xd1 + lsls r3, r3, #1 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, #0xff + beq _0801BF9A + mov r1, sb + subs r1, #0x18 + subs r3, #0x16 + adds r0, r2, r3 + ldrb r0, [r0] + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r1, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r4, #8] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _0801C044 + adds r0, r0, r1 + ldrb r3, [r0] + adds r3, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, _0801C048 + adds r1, r1, r0 + str r1, [sp] + movs r0, #0 + str r0, [sp, #4] + movs r1, #0xc6 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r0, r4, r0 + adds r0, #0x16 + str r0, [sp, #8] + mov r1, r8 + lsrs r0, r1, #0x18 + movs r1, #0 + bl sub_08199AFC +_0801BF9A: + movs r3, #0xc6 + lsls r3, r3, #1 + adds r6, r6, r3 + mov r1, sl + ldr r0, [r1] + adds r0, r0, r6 + adds r0, #1 + bl sub_0800893C + adds r5, r0, #0 + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + adds r0, r5, #0 + muls r0, r4, r0 + mov r3, sb + subs r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + mov r0, sl + ldr r4, [r0] + ldrb r0, [r4, #8] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _0801C044 + adds r0, r0, r1 + ldrb r3, [r0] + adds r3, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, _0801C048 + adds r1, r1, r0 + str r1, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r4, r4, r6 + adds r4, #1 + str r4, [sp, #8] + mov r1, r8 + lsrs r0, r1, #0x18 + movs r1, #3 + bl sub_08199AFC + subs r0, r7, #1 + lsls r0, r0, #0x18 + cmp r0, #0 + blt _0801C02A + b _0801BF28 +_0801C02A: + mov r3, r8 + lsrs r0, r3, #0x18 + movs r1, #3 + bl sub_08003528 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C044: .4byte gUnknown_82C3344 +_0801C048: .4byte gUnknown_82C333C + thumb_func_end sub_0801BCA4 + + thumb_func_start sub_0801C04C +sub_0801C04C: @ 0x0801C04C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + movs r7, #0 + ldr r4, _0801C164 + ldr r0, [r4] + adds r0, #0xd4 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xaa + ldrh r0, [r1] + cmp r0, #0 + beq _0801C0A8 + bl sub_080D2724 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0801C168 + str r7, [sp] + str r7, [sp, #4] + movs r2, #0xdc + movs r3, #0x14 + bl sub_080D2618 + ldr r1, [r4] + adds r1, #0xd4 + strb r0, [r1] + ldr r2, _0801C16C + ldr r0, [r4] + adds r0, #0xd4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #5] +_0801C0A8: + ldr r1, [r4] + ldrb r0, [r1, #9] + cmp r0, #0 + beq _0801C156 + ldrb r1, [r1, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801C156 + ldr r0, _0801C170 + bl sub_080347E0 + ldr r0, [r4] + adds r0, #0xc8 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsrs r0, r0, #4 + lsls r0, r0, #3 + ldr r1, _0801C174 + adds r0, r0, r1 + bl sub_0800845C + ldr r0, [r4] + ldrb r0, [r0, #9] + cmp r7, r0 + bhs _0801C156 + adds r6, r4, #0 + movs r0, #0xff + mov sb, r0 + movs r1, #0 + mov r8, r1 +_0801C0E6: + ldr r1, [r6] + lsls r4, r7, #1 + adds r1, #0xd5 + adds r1, r1, r4 + ldrb r0, [r1] + mov r2, sb + orrs r0, r2 + strb r0, [r1] + ldr r1, [r6] + adds r1, #0xd6 + adds r1, r1, r4 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + lsls r1, r7, #5 + movs r0, #0xd8 + subs r5, r0, r1 + ldr r0, _0801C178 + adds r1, r5, #0 + movs r2, #0x90 + movs r3, #8 + bl sub_08006B0C + ldr r1, [r6] + adds r1, #0xd5 + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0xac + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, #0 + beq _0801C148 + bl sub_080D2724 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + str r1, [sp] + str r1, [sp, #4] + ldr r1, _0801C168 + adds r2, r5, #0 + movs r3, #0x88 + bl sub_080D2618 + ldr r1, [r6] + adds r1, #0xd6 + adds r1, r1, r4 + strb r0, [r1] +_0801C148: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [r6] + ldrb r0, [r0, #9] + cmp r7, r0 + blo _0801C0E6 +_0801C156: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C164: .4byte gUnknown_2022928 +_0801C168: .4byte sub_08007140 +_0801C16C: .4byte gUnknown_20205AC +_0801C170: .4byte gUnknown_82C422C +_0801C174: .4byte gUnknown_82C4234 +_0801C178: .4byte gUnknown_82C4274 + thumb_func_end sub_0801C04C + + thumb_func_start sub_0801C17C +sub_0801C17C: @ 0x0801C17C + push {r4, r5, r6, r7, lr} + movs r6, #0 + ldr r4, _0801C21C + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xd4 + ldrb r0, [r1] + cmp r0, #0xff + beq _0801C19E + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0801C220 + adds r0, r0, r1 + bl sub_080D2798 +_0801C19E: + ldr r0, [r4] + ldrb r2, [r0, #9] + cmp r2, #0 + beq _0801C214 + ldrb r1, [r0, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0801C214 + cmp r6, r2 + bhs _0801C204 + adds r7, r4, #0 +_0801C1B6: + ldr r0, [r7] + lsls r4, r6, #1 + adds r0, #0xd5 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0xff + beq _0801C1F6 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0801C220 + adds r0, r0, r5 + bl sub_08006E00 + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0xd5 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xff + beq _0801C1F6 + adds r0, r1, #0 + adds r0, #0xd6 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_080D2798 +_0801C1F6: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [r7] + ldrb r0, [r0, #9] + cmp r6, r0 + blo _0801C1B6 +_0801C204: + movs r4, #0x80 + lsls r4, r4, #8 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 +_0801C214: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C21C: .4byte gUnknown_2022928 +_0801C220: .4byte gUnknown_20205AC + thumb_func_end sub_0801C17C + + thumb_func_start sub_0801C224 +sub_0801C224: @ 0x0801C224 + push {r4, r5, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0801C23A + ldr r5, _0801C240 + ldr r0, _0801C244 + bl sub_08000BDC + str r0, [r5] + cmp r0, #0 + bne _0801C248 +_0801C23A: + movs r0, #0 + b _0801C274 + .align 2, 0 +_0801C240: .4byte gUnknown_202292C +_0801C244: .4byte 0x000011EC +_0801C248: + adds r1, r4, #0 + movs r2, #0xe0 + bl memcpy + ldr r1, [r5] + ldrb r0, [r1, #3] + cmp r0, #7 + bls _0801C25C + movs r0, #0 + strb r0, [r1, #3] +_0801C25C: + ldr r2, [r5] + adds r3, r2, #0 + adds r3, #0xe0 + ldrb r0, [r2, #3] + lsls r0, r0, #4 + ldr r1, _0801C27C + adds r0, r0, r1 + str r0, [r3] + adds r2, #0xe5 + movs r0, #0xff + strb r0, [r2] + movs r0, #1 +_0801C274: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0801C27C: .4byte gUnknown_82C49F4 + thumb_func_end sub_0801C224 + + thumb_func_start sub_0801C280 +sub_0801C280: @ 0x0801C280 + push {r4, lr} + ldr r4, _0801C2A4 + ldr r0, [r4] + cmp r0, #0 + beq _0801C29C + ldr r2, _0801C2A8 + movs r1, #0 + bl memset + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0801C29C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801C2A4: .4byte gUnknown_202292C +_0801C2A8: .4byte 0x000011EC + thumb_func_end sub_0801C280 + + thumb_func_start sub_0801C2AC +sub_0801C2AC: @ 0x0801C2AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r4, _0801C2C8 + ldr r0, [r4] + cmp r0, #0 + bne _0801C2CC + movs r0, #1 + rsbs r0, r0, #0 + b _0801C572 + .align 2, 0 +_0801C2C8: .4byte gUnknown_202292C +_0801C2CC: + adds r0, #0xe4 + ldrb r0, [r0] + lsrs r0, r0, #1 + cmp r0, #6 + bls _0801C2D8 + b _0801C540 +_0801C2D8: + lsls r0, r0, #2 + ldr r1, _0801C2E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801C2E4: .4byte _0801C2E8 +_0801C2E8: @ jump table + .4byte _0801C304 @ case 0 + .4byte _0801C316 @ case 1 + .4byte _0801C37C @ case 2 + .4byte _0801C418 @ case 3 + .4byte _0801C4D4 @ case 4 + .4byte _0801C4DA @ case 5 + .4byte _0801C4EC @ case 6 +_0801C304: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0801C55A +_0801C316: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801C322 + b _0801C570 +_0801C322: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + ldr r1, _0801C378 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x1f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x1b + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + b _0801C55A + .align 2, 0 +_0801C378: .4byte 0x00001C98 +_0801C37C: + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + ldr r5, _0801C410 + ldr r0, [r5] + adds r0, #0xe0 + ldr r0, [r0] + ldr r1, [r0, #4] + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #8 + bl sub_08199728 + ldr r4, _0801C414 + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r5] + adds r1, #0xec + strh r0, [r1] + adds r4, #8 + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r5] + adds r1, #0xee + strh r0, [r1] + b _0801C55A + .align 2, 0 +_0801C410: .4byte gUnknown_202292C +_0801C414: .4byte gUnknown_82C4314 +_0801C418: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + beq _0801C426 + b _0801C570 +_0801C426: + movs r0, #1 + bl sub_080985A0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + ldr r2, _0801C4CC + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r0, _0801C4D0 + mov r8, r0 + ldr r0, [r0] + adds r0, #0xe0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + mov r2, r8 + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0xe0 + ldr r0, [r0] + ldr r0, [r0, #8] + movs r6, #0xf6 + lsls r6, r6, #1 + adds r1, r1, r6 + bl LZ77UnCompWram + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r6 + movs r4, #0x1e + str r4, [sp] + movs r5, #3 + str r5, [sp, #4] + str r7, [sp, #8] + str r7, [sp, #0xc] + str r4, [sp, #0x10] + str r5, [sp, #0x14] + movs r2, #1 + mov sl, r2 + str r2, [sp, #0x18] + movs r0, #8 + mov sb, r0 + str r0, [sp, #0x1c] + str r7, [sp, #0x20] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r6 + str r4, [sp] + movs r0, #0x17 + str r0, [sp, #4] + str r7, [sp, #8] + str r5, [sp, #0xc] + str r4, [sp, #0x10] + str r0, [sp, #0x14] + mov r0, sl + str r0, [sp, #0x18] + mov r2, sb + str r2, [sp, #0x1c] + str r7, [sp, #0x20] + movs r0, #3 + movs r2, #0 + movs r3, #3 + bl sub_080023F8 + movs r0, #1 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _0801C55A + .align 2, 0 +_0801C4CC: .4byte gUnknown_2037C74 +_0801C4D0: .4byte gUnknown_202292C +_0801C4D4: + bl sub_0801C8B4 + b _0801C55A +_0801C4DA: + bl sub_0801C95C + movs r0, #0 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _0801C55A +_0801C4EC: + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r2, _0801C538 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r4, _0801C53C + ldr r1, [r4] + movs r2, #0xee + lsls r2, r2, #1 + adds r0, r1, r2 + adds r1, #0xea + bl sub_081AF058 + ldr r1, [r4] + adds r1, #0xe5 + movs r2, #0 + strb r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + str r2, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + bl sub_080A12E4 + b _0801C55A + .align 2, 0 +_0801C538: .4byte gUnknown_2037C74 +_0801C53C: .4byte gUnknown_202292C +_0801C540: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801C570 + ldr r0, [r4] + adds r0, #0xe4 + ldrb r2, [r0] + movs r1, #1 + ands r1, r2 + strb r1, [r0] + movs r0, #1 + b _0801C572 +_0801C55A: + ldr r0, _0801C584 + ldr r2, [r0] + adds r2, #0xe4 + ldrb r3, [r2] + lsrs r1, r3, #1 + adds r1, #1 + lsls r1, r1, #1 + movs r0, #1 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_0801C570: + movs r0, #0 +_0801C572: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0801C584: .4byte gUnknown_202292C + thumb_func_end sub_0801C2AC + + thumb_func_start sub_0801C588 +sub_0801C588: @ 0x0801C588 + push {r4, r5, lr} + sub sp, #8 + ldr r4, _0801C59C + ldr r0, [r4] + cmp r0, #0 + bne _0801C5A0 + movs r0, #1 + rsbs r0, r0, #0 + b _0801C746 + .align 2, 0 +_0801C59C: .4byte gUnknown_202292C +_0801C5A0: + adds r0, #0xe4 + ldrb r0, [r0] + lsrs r0, r0, #1 + cmp r0, #5 + bls _0801C5AC + b _0801C714 +_0801C5AC: + lsls r0, r0, #2 + ldr r1, _0801C5B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801C5B8: .4byte _0801C5BC +_0801C5BC: @ jump table + .4byte _0801C5D4 @ case 0 + .4byte _0801C5E6 @ case 1 + .4byte _0801C628 @ case 2 + .4byte _0801C688 @ case 3 + .4byte _0801C6B0 @ case 4 + .4byte _0801C6E4 @ case 5 +_0801C5D4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0801C72E +_0801C5E6: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801C5F2 + b _0801C744 +_0801C5F2: + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + b _0801C72E +_0801C628: + movs r4, #0x1e + str r4, [sp] + movs r5, #0x14 + str r5, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + movs r5, #0x18 + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _0801C72E +_0801C688: + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + ldr r4, _0801C6AC + ldr r0, [r4] + adds r0, #0xee + ldrb r0, [r0] + bl sub_08003444 + ldr r0, [r4] + adds r0, #0xec + ldrb r0, [r0] + bl sub_08003444 + b _0801C72E + .align 2, 0 +_0801C6AC: .4byte gUnknown_202292C +_0801C6B0: + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r4, _0801C6E0 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xe5 + ldrb r0, [r1] + cmp r0, #0xff + beq _0801C72E + bl sub_081AF2F8 + ldr r0, [r4] + adds r0, #0xe5 + movs r1, #0xff + strb r1, [r0] + b _0801C72E + .align 2, 0 +_0801C6E0: .4byte gUnknown_202292C +_0801C6E4: + ldr r0, _0801C710 + ldrb r0, [r0] + bl sub_08018180 + movs r0, #3 + bl sub_08018240 + movs r0, #0 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0801C72E + .align 2, 0 +_0801C710: .4byte gUnknown_2022914 +_0801C714: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801C744 + ldr r0, [r4] + adds r0, #0xe4 + ldrb r2, [r0] + movs r1, #1 + ands r1, r2 + strb r1, [r0] + movs r0, #1 + b _0801C746 +_0801C72E: + ldr r0, _0801C750 + ldr r2, [r0] + adds r2, #0xe4 + ldrb r3, [r2] + lsrs r1, r3, #1 + adds r1, #1 + lsls r1, r1, #1 + movs r0, #1 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_0801C744: + movs r0, #0 +_0801C746: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0801C750: .4byte gUnknown_202292C + thumb_func_end sub_0801C588 + + thumb_func_start sub_0801C754 +sub_0801C754: @ 0x0801C754 + push {r4, lr} + ldr r4, _0801C790 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0xe4 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0801C78A + adds r1, r2, #0 + adds r1, #0xe5 + ldrb r0, [r1] + cmp r0, #0xff + beq _0801C78A + bl sub_081AF2F8 + ldr r0, [r4] + adds r0, #0xe5 + movs r1, #0xff + strb r1, [r0] + ldr r1, [r4] + adds r1, #0xe4 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] +_0801C78A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801C790: .4byte gUnknown_202292C + thumb_func_end sub_0801C754 + + thumb_func_start sub_0801C794 +sub_0801C794: @ 0x0801C794 + push {r4, lr} + ldr r4, _0801C7D0 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0xe4 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801C7CA + movs r1, #0xee + lsls r1, r1, #1 + adds r0, r2, r1 + adds r1, r2, #0 + adds r1, #0xea + bl sub_081AF058 + ldr r1, [r4] + adds r1, #0xe5 + strb r0, [r1] + ldr r1, [r4] + adds r1, #0xe4 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0801C7CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801C7D0: .4byte gUnknown_202292C + thumb_func_end sub_0801C794 + + thumb_func_start sub_0801C7D4 +sub_0801C7D4: @ 0x0801C7D4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r4, r3, #0 + ldr r2, _0801C7FC + ldr r0, [r2] + mov ip, r0 + adds r0, #0xe6 + ldrb r1, [r0] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0801C800 + bl sub_0801CA6C +_0801C7F6: + movs r0, #0xff + b _0801C8AE + .align 2, 0 +_0801C7FC: .4byte gUnknown_202292C +_0801C800: + cmp r3, #2 + beq _0801C81C + cmp r3, #2 + bgt _0801C80E + cmp r3, #1 + beq _0801C818 + b _0801C7F6 +_0801C80E: + cmp r4, #0x40 + beq _0801C820 + cmp r4, #0x80 + beq _0801C848 + b _0801C7F6 +_0801C818: + movs r0, #0 + b _0801C8AE +_0801C81C: + movs r0, #1 + b _0801C8AE +_0801C820: + mov r0, ip + adds r0, #0xea + ldrh r0, [r0] + cmp r0, #0 + beq _0801C7F6 + mov r0, ip + adds r0, #0xe4 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _0801C7F6 + mov r2, ip + adds r2, #0xe7 + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _0801C872 +_0801C848: + mov r0, ip + adds r0, #0xea + mov r1, ip + adds r1, #0xe8 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _0801C7F6 + mov r0, ip + adds r0, #0xe4 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _0801C7F6 + mov r0, ip + adds r0, #0xe7 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_0801C872: + ldr r1, [r6] + adds r1, #0xe6 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + ldr r3, [r6] + adds r3, #0xe6 + ldrb r1, [r3] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldr r1, [r6] + adds r1, #0xe7 + ldrb r3, [r1] + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0xe7 + ldrb r0, [r0] + ands r2, r0 + cmp r2, #0 + beq _0801C8AC + movs r0, #3 + b _0801C8AE +_0801C8AC: + movs r0, #2 +_0801C8AE: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801C7D4 + + thumb_func_start sub_0801C8B4 +sub_0801C8B4: @ 0x0801C8B4 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r4, _0801C94C + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xf2 + adds r1, #4 + movs r2, #0x14 + bl memcpy + ldr r0, [r4] + movs r2, #0x83 + lsls r2, r2, #1 + adds r1, r0, r2 + movs r0, #0xff + strb r0, [r1] + adds r6, r4, #0 +_0801C8D6: + ldr r2, [r6] + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r4, r1, r5 + adds r0, r4, r2 + ldr r3, _0801C950 + adds r0, r0, r3 + adds r1, r1, r2 + adds r1, #0x18 + movs r2, #0x14 + bl memcpy + ldr r0, [r6] + ldr r1, _0801C954 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] + cmp r5, #7 + bls _0801C916 + ldr r1, [r6] + ldr r2, _0801C950 + adds r0, r1, r2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xff + beq _0801C916 + adds r1, #0xe8 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0801C916: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _0801C8D6 + ldr r2, _0801C94C + ldr r1, [r2] + movs r3, #0xee + lsls r3, r3, #1 + adds r1, r1, r3 + ldr r0, _0801C958 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, [r0] + str r0, [r1] + ldr r2, [r2] + adds r0, r2, #0 + adds r0, #0xe8 + ldrh r1, [r0] + movs r4, #0xf2 + lsls r4, r4, #1 + adds r0, r2, r4 + strh r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801C94C: .4byte gUnknown_202292C +_0801C950: .4byte 0x00000107 +_0801C954: .4byte 0x0000011B +_0801C958: .4byte gUnknown_82C4324 + thumb_func_end sub_0801C8B4 + + thumb_func_start sub_0801C95C +sub_0801C95C: @ 0x0801C95C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + movs r7, #0 + ldr r6, _0801CA60 + ldr r0, [r6] + adds r0, #0xec + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r6] + adds r0, #0xee + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r6] + adds r0, #0xec + ldrb r0, [r0] + movs r1, #0 + bl sub_08003B18 + ldr r0, [r6] + adds r0, #0xee + ldrb r0, [r0] + movs r1, #0 + bl sub_08003B18 + ldr r0, [r6] + adds r0, #0xf2 + bl sub_0800893C + adds r5, r0, #0 + movs r0, #3 + movs r1, #2 + bl sub_080061B4 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0 + bl sub_080061B4 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + adds r0, r5, #0 + muls r0, r4, r0 + asrs r0, r0, #1 + movs r2, #0x71 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, [r6] + adds r0, r4, #0 + adds r0, #0xec + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0xe0 + ldr r1, [r1] + ldrb r1, [r1] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + lsls r3, r1, #1 + adds r3, r3, r1 + ldr r1, _0801CA64 + adds r3, r3, r1 + str r3, [sp] + str r7, [sp, #4] + adds r4, #0xf2 + str r4, [sp, #8] + movs r1, #3 + movs r3, #6 + bl sub_08199AFC +_0801C9F4: + ldr r5, _0801CA60 + ldr r4, [r5] + adds r0, r4, #0 + adds r0, #0xee + ldrb r0, [r0] + lsls r3, r7, #4 + adds r3, #4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r1, r4, #0 + adds r1, #0xe0 + ldr r1, [r1] + ldrb r1, [r1] + lsrs r1, r1, #4 + lsls r2, r1, #1 + adds r2, r2, r1 + ldr r1, _0801CA64 + adds r2, r2, r1 + str r2, [sp] + movs r1, #0 + str r1, [sp, #4] + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r7 + ldr r2, _0801CA68 + adds r1, r1, r2 + adds r4, r4, r1 + str r4, [sp, #8] + movs r1, #3 + movs r2, #3 + bl sub_08199AFC + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #9 + bls _0801C9F4 + ldr r0, [r5] + adds r0, #0xec + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + ldr r0, [r5] + adds r0, #0xee + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801CA60: .4byte gUnknown_202292C +_0801CA64: .4byte gUnknown_82C430C +_0801CA68: .4byte 0x00000107 + thumb_func_end sub_0801C95C + + thumb_func_start sub_0801CA6C +sub_0801CA6C: @ 0x0801CA6C + push {r4, r5, lr} + ldr r0, _0801CAA0 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xe6 + ldrb r0, [r0] + lsrs r4, r0, #1 + lsls r4, r4, #8 + adds r1, #0xe7 + ldrb r1, [r1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801CAA4 + movs r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + movs r0, #3 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + b _0801CAB8 + .align 2, 0 +_0801CAA0: .4byte gUnknown_202292C +_0801CAA4: + movs r0, #2 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001E94 + movs r0, #3 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001E94 +_0801CAB8: + ldr r2, _0801CAF8 + ldr r0, [r2] + adds r4, r0, #0 + adds r4, #0xe7 + ldrb r3, [r4] + lsrs r1, r3, #1 + adds r0, #0xe6 + ldrb r0, [r0] + lsrs r0, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + movs r5, #1 + adds r0, r5, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0xe7 + ldrb r3, [r0] + lsrs r0, r3, #1 + adds r4, r2, #0 + cmp r0, #0xf + bls _0801CB1E + adds r0, r5, #0 + ands r0, r3 + cmp r0, #0 + beq _0801CAFC + adds r1, #0xea + ldrh r0, [r1] + adds r0, #1 + b _0801CB02 + .align 2, 0 +_0801CAF8: .4byte gUnknown_202292C +_0801CAFC: + adds r1, #0xea + ldrh r0, [r1] + subs r0, #1 +_0801CB02: + strh r0, [r1] + ldr r1, [r4] + adds r1, #0xe6 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + adds r1, #0xe7 + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + strb r0, [r1] +_0801CB1E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0801CA6C + + thumb_func_start sub_0801CB24 +sub_0801CB24: @ 0x0801CB24 + push {r4, lr} + ldr r4, _0801CB40 + movs r0, #0x60 + bl sub_08000BDC + str r0, [r4] + ldr r1, _0801CB44 + movs r2, #0 + movs r3, #1 + bl sub_0801CBA8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801CB40: .4byte gUnknown_2022930 +_0801CB44: .4byte gUnknown_82C4F60 + thumb_func_end sub_0801CB24 + + thumb_func_start sub_0801CB48 +sub_0801CB48: @ 0x0801CB48 + push {r4, lr} + ldr r4, _0801CB64 + movs r0, #0x60 + bl sub_08000BDC + str r0, [r4] + ldr r1, _0801CB68 + movs r2, #0 + movs r3, #1 + bl sub_0801CBA8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801CB64: .4byte gUnknown_2022930 +_0801CB68: .4byte gUnknown_82C4FC0 + thumb_func_end sub_0801CB48 + + thumb_func_start sub_0801CB6C +sub_0801CB6C: @ 0x0801CB6C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _0801CB7C + ldr r0, [r4] + cmp r0, #0 + bne _0801CB80 + movs r0, #3 + b _0801CBA0 + .align 2, 0 +_0801CB7C: .4byte gUnknown_2022930 +_0801CB80: + bl sub_0801D240 + adds r5, r0, #0 + cmp r5, #3 + bne _0801CB9E + ldr r0, [r4] + ldr r1, [r0, #4] + strh r1, [r6] + bl sub_0801CBFC + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0801CB9E: + adds r0, r5, #0 +_0801CBA0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801CB6C + + thumb_func_start sub_0801CBA8 +sub_0801CBA8: @ 0x0801CBA8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r4, r0, #0 + adds r6, r1, #0 + mov r8, r2 + mov sb, r3 + movs r5, #0 + str r5, [r4] + str r5, [r4, #8] + movs r0, #0xa4 + bl sub_08000BDC + str r0, [r4, #0x18] + movs r0, #0xe0 + bl sub_08000BDC + str r0, [r4, #0x1c] + movs r0, #0x80 + lsls r0, r0, #3 + bl sub_08000BDC + str r0, [r4, #0x14] + movs r0, #0x64 + bl sub_08000BDC + str r0, [r4, #0x20] + str r6, [r4, #0x10] + str r5, [r4, #0xc] + adds r4, #0x38 + adds r0, r4, #0 + mov r1, r8 + mov r2, sb + bl sub_0801D6E8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0801CBA8 + + thumb_func_start sub_0801CBFC +sub_0801CBFC: @ 0x0801CBFC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x18] + bl sub_08000BF0 + ldr r0, [r4, #0x1c] + bl sub_08000BF0 + ldr r0, [r4, #0x14] + bl sub_08000BF0 + ldr r0, [r4, #0x20] + bl sub_08000BF0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801CBFC + + thumb_func_start sub_0801CC20 +sub_0801CC20: @ 0x0801CC20 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + adds r4, r3, #0 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + bls _0801CC3E + ldr r0, _0801CC54 + ldr r1, _0801CC58 + ldr r2, _0801CC5C + movs r3, #1 + bl AGBAssert +_0801CC3E: + adds r0, r5, #0 + adds r0, #0x38 + adds r1, r6, #0 + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_0801D714 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801CC54: .4byte gUnknown_82C4A74 +_0801CC58: .4byte 0x00000101 +_0801CC5C: .4byte gUnknown_82C4A84 + thumb_func_end sub_0801CC20 + + thumb_func_start sub_0801CC60 +sub_0801CC60: @ 0x0801CC60 + push {lr} + cmp r0, #0 + bne _0801CC68 + adds r0, r1, #0 +_0801CC68: + pop {r1} + bx r1 + thumb_func_end sub_0801CC60 + + thumb_func_start sub_0801CC6C +sub_0801CC6C: @ 0x0801CC6C + push {lr} + cmp r1, r0 + bhs _0801CC76 + movs r0, #0 + b _0801CC80 +_0801CC76: + cmp r1, r0 + beq _0801CC7E + movs r0, #2 + b _0801CC80 +_0801CC7E: + movs r0, #1 +_0801CC80: + pop {r1} + bx r1 + thumb_func_end sub_0801CC6C + + thumb_func_start sub_0801CC84 +sub_0801CC84: @ 0x0801CC84 + movs r1, #4 + str r1, [r0, #8] + movs r0, #0 + bx lr + thumb_func_end sub_0801CC84 + + thumb_func_start sub_0801CC8C +sub_0801CC8C: @ 0x0801CC8C + movs r0, #3 + bx lr + thumb_func_end sub_0801CC8C + + thumb_func_start sub_0801CC90 +sub_0801CC90: @ 0x0801CC90 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x38 + bl sub_0801D6D0 + cmp r0, #0 + beq _0801CCA2 + movs r0, #4 + str r0, [r4, #8] +_0801CCA2: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801CC90 + + thumb_func_start sub_0801CCAC +sub_0801CCAC: @ 0x0801CCAC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x38 + bl sub_0801D6DC + cmp r0, #0 + beq _0801CCBE + movs r0, #4 + str r0, [r4, #8] +_0801CCBE: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801CCAC + + thumb_func_start sub_0801CCC8 +sub_0801CCC8: @ 0x0801CCC8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0xc] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, [r5, #0x10] + adds r4, r2, r1 + adds r0, #1 + str r0, [r5, #0xc] + ldr r0, [r4] + cmp r0, #0x1e + bls _0801CCE4 + b _0801D238 +_0801CCE4: + lsls r0, r0, #2 + ldr r1, _0801CCF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801CCF0: .4byte _0801CCF4 +_0801CCF4: @ jump table + .4byte _0801CD70 @ case 0 + .4byte _0801CD98 @ case 1 + .4byte _0801CD9E @ case 2 + .4byte _0801CDCC @ case 3 + .4byte _0801CEB0 @ case 4 + .4byte _0801CDEC @ case 5 + .4byte _0801CE30 @ case 6 + .4byte _0801CEC4 @ case 7 + .4byte _0801CEF4 @ case 8 + .4byte _0801CF34 @ case 9 + .4byte _0801CF68 @ case 10 + .4byte _0801CF98 @ case 11 + .4byte _0801CFC0 @ case 12 + .4byte _0801D020 @ case 13 + .4byte _0801CFEC @ case 14 + .4byte _0801D088 @ case 15 + .4byte _0801D054 @ case 16 + .4byte _0801D0F2 @ case 17 + .4byte _0801D0A0 @ case 18 + .4byte _0801D0B8 @ case 19 + .4byte _0801D0E4 @ case 20 + .4byte _0801D150 @ case 21 + .4byte _0801D100 @ case 22 + .4byte _0801D12C @ case 23 + .4byte _0801D178 @ case 24 + .4byte _0801D182 @ case 25 + .4byte _0801D18C @ case 26 + .4byte _0801D1C8 @ case 27 + .4byte _0801D200 @ case 28 + .4byte _0801D22C @ case 29 + .4byte _0801CE6C @ case 30 +_0801CD70: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CD84 + ldr r0, _0801CD90 + movs r1, #0xb1 + lsls r1, r1, #1 + ldr r2, _0801CD94 + movs r3, #1 + bl AGBAssert +_0801CD84: + movs r0, #1 + str r0, [r5, #8] + ldr r0, [r4, #4] + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CD90: .4byte gUnknown_82C4A74 +_0801CD94: .4byte gUnknown_82C4AA0 +_0801CD98: + movs r0, #3 + str r0, [r5, #8] + b _0801D238 +_0801CD9E: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CDB2 + ldr r0, _0801CDC4 + movs r1, #0xb6 + lsls r1, r1, #1 + ldr r2, _0801CDC8 + movs r3, #1 + bl AGBAssert +_0801CDB2: + adds r0, r5, #0 + adds r0, #0x38 + ldr r1, [r4, #4] + ldr r2, [r5, #0x14] + bl sub_0801D738 + movs r0, #2 + str r0, [r5, #8] + b _0801D238 + .align 2, 0 +_0801CDC4: .4byte gUnknown_82C4A74 +_0801CDC8: .4byte gUnknown_82C4AA0 +_0801CDCC: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CEBA + ldr r0, _0801CDE4 + movs r1, #0xb9 + lsls r1, r1, #1 + ldr r2, _0801CDE8 + movs r3, #1 + bl AGBAssert + b _0801CEBA + .align 2, 0 +_0801CDE4: .4byte gUnknown_82C4A74 +_0801CDE8: .4byte gUnknown_82C4AB8 +_0801CDEC: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CE00 + ldr r0, _0801CE20 + movs r1, #0xbc + lsls r1, r1, #1 + ldr r2, _0801CE24 + movs r3, #1 + bl AGBAssert +_0801CE00: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CE12 + ldr r0, _0801CE20 + ldr r1, _0801CE28 + ldr r2, _0801CE2C + movs r3, #1 + bl AGBAssert +_0801CE12: + ldr r0, [r5, #0x20] + ldr r1, [r5, #0x14] + movs r2, #0x64 + bl memcpy + b _0801D238 + .align 2, 0 +_0801CE20: .4byte gUnknown_82C4A74 +_0801CE24: .4byte gUnknown_82C4AB8 +_0801CE28: .4byte 0x00000179 +_0801CE2C: .4byte gUnknown_82C4AA0 +_0801CE30: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CE44 + ldr r0, _0801CE5C + movs r1, #0xbf + lsls r1, r1, #1 + ldr r2, _0801CE60 + movs r3, #1 + bl AGBAssert +_0801CE44: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CE56 + ldr r0, _0801CE5C + ldr r1, _0801CE64 + ldr r2, _0801CE68 + movs r3, #1 + bl AGBAssert +_0801CE56: + ldr r0, [r5, #0x20] + movs r1, #0 + b _0801CE96 + .align 2, 0 +_0801CE5C: .4byte gUnknown_82C4A74 +_0801CE60: .4byte gUnknown_82C4AB8 +_0801CE64: .4byte 0x0000017F +_0801CE68: .4byte gUnknown_82C4AA0 +_0801CE6C: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CE80 + ldr r0, _0801CEA0 + movs r1, #0xc2 + lsls r1, r1, #1 + ldr r2, _0801CEA4 + movs r3, #1 + bl AGBAssert +_0801CE80: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CE92 + ldr r0, _0801CEA0 + ldr r1, _0801CEA8 + ldr r2, _0801CEAC + movs r3, #1 + bl AGBAssert +_0801CE92: + ldr r0, [r5, #0x20] + movs r1, #1 +_0801CE96: + bl sub_0801B160 + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CEA0: .4byte gUnknown_82C4A74 +_0801CEA4: .4byte gUnknown_82C4AB8 +_0801CEA8: .4byte 0x00000185 +_0801CEAC: .4byte gUnknown_82C4AA0 +_0801CEB0: + ldr r1, [r5, #4] + ldr r0, [r4, #4] + cmp r1, r0 + beq _0801CEBA + b _0801D238 +_0801CEBA: + movs r0, #0 + str r0, [r5, #0xc] + ldr r0, [r4, #8] + str r0, [r5, #0x10] + b _0801D238 +_0801CEC4: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CED8 + ldr r0, _0801CEEC + movs r1, #0xc9 + lsls r1, r1, #1 + ldr r2, _0801CEF0 + movs r3, #1 + bl AGBAssert +_0801CED8: + ldr r0, [r4, #8] + ldr r1, [r5, #0x18] + bl sub_0801CC60 + adds r2, r0, #0 + ldr r1, [r5, #0x20] + bl sub_0801B1AC + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CEEC: .4byte gUnknown_82C4A74 +_0801CEF0: .4byte gUnknown_82C4AB8 +_0801CEF4: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CF08 + ldr r0, _0801CF24 + movs r1, #0xcc + lsls r1, r1, #1 + ldr r2, _0801CF28 + movs r3, #1 + bl AGBAssert +_0801CF08: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CF1A + ldr r0, _0801CF24 + ldr r1, _0801CF2C + ldr r2, _0801CF30 + movs r3, #1 + bl AGBAssert +_0801CF1A: + ldr r0, [r5, #0x14] + ldr r0, [r0] + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CF24: .4byte gUnknown_82C4A74 +_0801CF28: .4byte gUnknown_82C4AB8 +_0801CF2C: .4byte 0x00000199 +_0801CF30: .4byte gUnknown_82C4AA0 +_0801CF34: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CF48 + ldr r0, _0801CF60 + movs r1, #0xcf + lsls r1, r1, #1 + ldr r2, _0801CF64 + movs r3, #1 + bl AGBAssert +_0801CF48: + ldr r0, [r4, #8] + adds r1, r5, #0 + adds r1, #0x34 + bl sub_0801CC60 + adds r2, r0, #0 + ldr r1, [r5, #0x20] + bl sub_0801B1C8 + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CF60: .4byte gUnknown_82C4A74 +_0801CF64: .4byte gUnknown_82C4AB8 +_0801CF68: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801CF7A + ldr r0, _0801CF8C + ldr r1, _0801CF90 + ldr r2, _0801CF94 + movs r3, #1 + bl AGBAssert +_0801CF7A: + ldr r0, [r5, #0x20] + ldr r1, [r4, #4] + bl sub_0801B244 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CF8C: .4byte gUnknown_82C4A74 +_0801CF90: .4byte 0x000001A5 +_0801CF94: .4byte gUnknown_82C4AA0 +_0801CF98: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CFAC + ldr r0, _0801CFB8 + movs r1, #0xd5 + lsls r1, r1, #1 + ldr r2, _0801CFBC + movs r3, #1 + bl AGBAssert +_0801CFAC: + ldr r0, [r5, #0x20] + ldr r1, [r4, #8] + bl sub_0801B208 + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CFB8: .4byte gUnknown_82C4A74 +_0801CFBC: .4byte gUnknown_82C4AB8 +_0801CFC0: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801CFD4 + ldr r0, _0801CFE4 + movs r1, #0xd8 + lsls r1, r1, #1 + ldr r2, _0801CFE8 + movs r3, #1 + bl AGBAssert +_0801CFD4: + ldr r0, [r4, #8] + ldr r1, [r5, #0x14] + ldr r1, [r1] + bl sub_0801CC6C + str r0, [r5, #4] + b _0801D238 + .align 2, 0 +_0801CFE4: .4byte gUnknown_82C4A74 +_0801CFE8: .4byte gUnknown_82C4AB8 +_0801CFEC: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D000 + ldr r0, _0801D018 + movs r1, #0xdb + lsls r1, r1, #1 + ldr r2, _0801D01C + movs r3, #1 + bl AGBAssert +_0801D000: + ldr r0, [r4, #8] + ldr r1, [r5, #0x1c] + bl sub_0801CC60 + adds r2, r0, #0 + adds r0, r5, #0 + movs r1, #0x17 + movs r3, #0xe0 + bl sub_0801CC20 + b _0801D238 + .align 2, 0 +_0801D018: .4byte gUnknown_82C4A74 +_0801D01C: .4byte gUnknown_82C4AB8 +_0801D020: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D034 + ldr r0, _0801D04C + movs r1, #0xde + lsls r1, r1, #1 + ldr r2, _0801D050 + movs r3, #1 + bl AGBAssert +_0801D034: + ldr r0, [r4, #8] + ldr r1, [r5, #0x18] + bl sub_0801CC60 + adds r2, r0, #0 + adds r0, r5, #0 + movs r1, #0x16 + movs r3, #0xa4 + bl sub_0801CC20 + b _0801D238 + .align 2, 0 +_0801D04C: .4byte gUnknown_82C4A74 +_0801D050: .4byte gUnknown_82C4AB8 +_0801D054: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D068 + ldr r0, _0801D080 + movs r1, #0xe1 + lsls r1, r1, #1 + ldr r2, _0801D084 + movs r3, #1 + bl AGBAssert +_0801D068: + ldr r0, [r4, #8] + adds r1, r5, #0 + adds r1, #0x34 + bl sub_0801CC60 + adds r2, r0, #0 + adds r0, r5, #0 + movs r1, #0x18 + movs r3, #4 + bl sub_0801CC20 + b _0801D238 + .align 2, 0 +_0801D080: .4byte gUnknown_82C4A74 +_0801D084: .4byte gUnknown_82C4AB8 +_0801D088: + ldr r2, [r4, #8] + cmp r2, #0 + bne _0801D094 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + b _0801D096 +_0801D094: + ldr r3, [r4, #4] +_0801D096: + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0801CC20 + b _0801D238 +_0801D0A0: + ldr r2, [r4, #8] + cmp r2, #0 + bne _0801D0AC + ldr r2, [r5, #0x2c] + ldr r3, [r5, #0x30] + b _0801D0AE +_0801D0AC: + ldr r3, [r4, #4] +_0801D0AE: + adds r0, r5, #0 + movs r1, #0x10 + bl sub_0801CC20 + b _0801D238 +_0801D0B8: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D0CC + ldr r0, _0801D0DC + movs r1, #0xec + lsls r1, r1, #1 + ldr r2, _0801D0E0 + movs r3, #1 + bl AGBAssert +_0801D0CC: + ldr r2, [r4, #8] + adds r0, r5, #0 + movs r1, #0x1a + movs r3, #0xbc + bl sub_0801CC20 + b _0801D238 + .align 2, 0 +_0801D0DC: .4byte gUnknown_82C4A74 +_0801D0E0: .4byte gUnknown_82C4AB8 +_0801D0E4: + ldr r2, [r4, #8] + ldr r3, [r4, #4] + adds r0, r5, #0 + movs r1, #0x15 + bl sub_0801CC20 + b _0801D238 +_0801D0F2: + ldr r2, [r4, #8] + ldr r3, [r4, #4] + adds r0, r5, #0 + movs r1, #0x1c + bl sub_0801CC20 + b _0801D238 +_0801D100: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D112 + ldr r0, _0801D120 + ldr r1, _0801D124 + ldr r2, _0801D128 + movs r3, #1 + bl AGBAssert +_0801D112: + ldr r0, [r5, #0x18] + ldr r1, [r4, #8] + movs r2, #0xa4 + bl memcpy + b _0801D238 + .align 2, 0 +_0801D120: .4byte gUnknown_82C4A74 +_0801D124: .4byte 0x000001E7 +_0801D128: .4byte gUnknown_82C4AB8 +_0801D12C: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D140 + ldr r0, _0801D148 + movs r1, #0xf6 + lsls r1, r1, #1 + ldr r2, _0801D14C + movs r3, #1 + bl AGBAssert +_0801D140: + ldr r0, [r5, #0x1c] + ldr r1, [r4, #8] + b _0801D1EA + .align 2, 0 +_0801D148: .4byte gUnknown_82C4A74 +_0801D14C: .4byte gUnknown_82C4AB8 +_0801D150: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D162 + ldr r0, _0801D16C + ldr r1, _0801D170 + ldr r2, _0801D174 + movs r3, #1 + bl AGBAssert +_0801D162: + ldr r0, [r4, #8] + ldr r0, [r0] + str r0, [r5, #0x34] + b _0801D238 + .align 2, 0 +_0801D16C: .4byte gUnknown_82C4A74 +_0801D170: .4byte 0x000001F1 +_0801D174: .4byte gUnknown_82C4AB8 +_0801D178: + ldr r0, [r4, #8] + str r0, [r5, #0x24] + ldr r0, [r4, #4] + str r0, [r5, #0x28] + b _0801D238 +_0801D182: + ldr r0, [r4, #8] + str r0, [r5, #0x2c] + ldr r0, [r4, #4] + str r0, [r5, #0x30] + b _0801D238 +_0801D18C: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0801D198 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801D1A6 +_0801D198: + ldr r0, _0801D1C0 + movs r1, #0x80 + lsls r1, r1, #2 + ldr r2, _0801D1C4 + movs r3, #1 + bl AGBAssert +_0801D1A6: + ldr r4, [r5, #0x18] + bl sub_0801AAF4 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0xa4 + bl memcpy + ldr r0, [r5, #0x18] + bl sub_0801AE80 + b _0801D238 + .align 2, 0 +_0801D1C0: .4byte gUnknown_82C4A74 +_0801D1C4: .4byte gUnknown_82C4ACC +_0801D1C8: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0801D1D4 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801D1E0 +_0801D1D4: + ldr r0, _0801D1F4 + ldr r1, _0801D1F8 + ldr r2, _0801D1FC + movs r3, #1 + bl AGBAssert +_0801D1E0: + ldr r4, [r5, #0x1c] + bl sub_0801AAE0 + adds r1, r0, #0 + adds r0, r4, #0 +_0801D1EA: + movs r2, #0xe0 + bl memcpy + b _0801D238 + .align 2, 0 +_0801D1F4: .4byte gUnknown_82C4A74 +_0801D1F8: .4byte 0x00000206 +_0801D1FC: .4byte gUnknown_82C4ACC +_0801D200: + ldr r0, [r4, #4] + cmp r0, #0 + bne _0801D20C + ldr r0, [r4, #8] + cmp r0, #0 + beq _0801D218 +_0801D20C: + ldr r0, _0801D220 + ldr r1, _0801D224 + ldr r2, _0801D228 + movs r3, #1 + bl AGBAssert +_0801D218: + bl sub_08098BCC + str r0, [r5, #0x24] + b _0801D238 + .align 2, 0 +_0801D220: .4byte gUnknown_82C4A74 +_0801D224: .4byte 0x0000020B +_0801D228: .4byte gUnknown_82C4ACC +_0801D22C: + ldr r2, [r4, #8] + ldr r3, [r4, #4] + adds r0, r5, #0 + movs r1, #0x1b + bl sub_0801CC20 +_0801D238: + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0801CCC8 + + thumb_func_start sub_0801D240 +sub_0801D240: @ 0x0801D240 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #4 + bls _0801D258 + ldr r0, _0801D284 + movs r1, #0x8a + lsls r1, r1, #2 + ldr r2, _0801D288 + movs r3, #1 + bl AGBAssert +_0801D258: + ldr r1, _0801D28C + ldr r0, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #4 + bls _0801D27C + ldr r0, _0801D284 + ldr r1, _0801D290 + ldr r2, _0801D288 + movs r3, #1 + bl AGBAssert +_0801D27C: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0801D284: .4byte gUnknown_82C4A74 +_0801D288: .4byte gUnknown_82C4B10 +_0801D28C: .4byte gUnknown_82C4AFC +_0801D290: .4byte 0x0000022A + thumb_func_end sub_0801D240 + + thumb_func_start sub_0801D294 +sub_0801D294: @ 0x0801D294 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0801D2B4 + movs r0, #0x50 + bl sub_08000BDC + str r0, [r4] + movs r1, #1 + movs r2, #0 + bl sub_0801D31C + ldr r0, [r4] + str r5, [r0, #0x4c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801D2B4: .4byte gUnknown_2022934 + thumb_func_end sub_0801D294 + + thumb_func_start sub_0801D2B8 +sub_0801D2B8: @ 0x0801D2B8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _0801D2C8 + ldr r0, [r4] + cmp r0, #0 + bne _0801D2CC + movs r0, #6 + b _0801D2EC + .align 2, 0 +_0801D2C8: .4byte gUnknown_2022934 +_0801D2CC: + bl sub_0801D6A4 + adds r5, r0, #0 + cmp r5, #6 + bne _0801D2EA + ldr r0, [r4] + ldr r1, [r0, #4] + strh r1, [r6] + bl sub_0801D36C + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0801D2EA: + adds r0, r5, #0 +_0801D2EC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801D2B8 + + thumb_func_start sub_0801D2F4 +sub_0801D2F4: @ 0x0801D2F4 + ldr r0, _0801D300 + ldr r1, [r0] + ldr r0, [r1, #0xc] + adds r0, #1 + str r0, [r1, #0xc] + bx lr + .align 2, 0 +_0801D300: .4byte gUnknown_2022934 + thumb_func_end sub_0801D2F4 + + thumb_func_start sub_0801D304 +sub_0801D304: @ 0x0801D304 + ldr r0, _0801D30C + ldr r0, [r0] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 +_0801D30C: .4byte gUnknown_2022934 + thumb_func_end sub_0801D304 + + thumb_func_start sub_0801D310 +sub_0801D310: @ 0x0801D310 + ldr r1, _0801D318 + ldr r1, [r1] + str r0, [r1, #4] + bx lr + .align 2, 0 +_0801D318: .4byte gUnknown_2022934 + thumb_func_end sub_0801D310 + + thumb_func_start sub_0801D31C +sub_0801D31C: @ 0x0801D31C + push {r4, r5, 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, #8] + str r0, [r4, #0xc] + movs r5, #0x80 + lsls r5, r5, #3 + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4, #0x14] + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4, #0x18] + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4, #0x1c] + movs r0, #0x40 + bl sub_08000BDC + str r0, [r4, #0x20] + adds r4, #0x24 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, r8 + bl sub_0801D6E8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801D31C + + thumb_func_start sub_0801D36C +sub_0801D36C: @ 0x0801D36C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x14] + bl sub_08000BF0 + ldr r0, [r4, #0x18] + bl sub_08000BF0 + ldr r0, [r4, #0x1c] + bl sub_08000BF0 + ldr r0, [r4, #0x20] + bl sub_08000BF0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801D36C + + thumb_func_start sub_0801D390 +sub_0801D390: @ 0x0801D390 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x18] + movs r2, #0x80 + lsls r2, r2, #3 + bl memcpy + movs r0, #0 + str r0, [r4, #0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801D390 + + thumb_func_start sub_0801D3AC +sub_0801D3AC: @ 0x0801D3AC + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + movs r0, #0 + str r0, [sp] + ldr r1, [r4, #0x14] + ldr r2, _0801D3DC + 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, #4 + bl sub_0801D714 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801D3DC: .4byte 0x05000100 + thumb_func_end sub_0801D3AC + + thumb_func_start sub_0801D3E0 +sub_0801D3E0: @ 0x0801D3E0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, _0801D404 + movs r2, #0x80 + lsls r2, r2, #3 + bl memcpy + movs r1, #0 + str r1, [r4, #0x10] + movs r0, #4 + str r0, [r4, #8] + str r1, [r4, #0xc] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801D404: .4byte gUnknown_82C4B6C + thumb_func_end sub_0801D3E0 + + thumb_func_start sub_0801D408 +sub_0801D408: @ 0x0801D408 + movs r0, #6 + bx lr + thumb_func_end sub_0801D408 + + thumb_func_start sub_0801D40C +sub_0801D40C: @ 0x0801D40C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x24 + bl sub_0801D6D0 + cmp r0, #0 + beq _0801D422 + movs r0, #4 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] +_0801D422: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801D40C + + thumb_func_start sub_0801D42C +sub_0801D42C: @ 0x0801D42C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x24 + bl sub_0801D6DC + cmp r0, #0 + beq _0801D442 + movs r0, #4 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] +_0801D442: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801D42C + + thumb_func_start sub_0801D44C +sub_0801D44C: @ 0x0801D44C + 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, #1 + str r0, [r4, #0x10] + ldr r0, [r2] + cmp r0, #0x15 + bls _0801D464 + b _0801D614 +_0801D464: + lsls r0, r0, #2 + ldr r1, _0801D470 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801D470: .4byte _0801D474 +_0801D474: @ jump table + .4byte _0801D614 @ case 0 + .4byte _0801D4CC @ case 1 + .4byte _0801D4D4 @ case 2 + .4byte _0801D4E4 @ case 3 + .4byte _0801D51E @ case 4 + .4byte _0801D526 @ case 5 + .4byte _0801D50E @ case 6 + .4byte _0801D518 @ case 7 + .4byte _0801D574 @ case 8 + .4byte _0801D5A0 @ case 9 + .4byte _0801D598 @ case 10 + .4byte _0801D53C @ case 11 + .4byte _0801D552 @ case 12 + .4byte _0801D568 @ case 13 + .4byte _0801D58C @ case 14 + .4byte _0801D5C8 @ case 15 + .4byte _0801D5CC @ case 16 + .4byte _0801D5D4 @ case 17 + .4byte _0801D5E0 @ case 18 + .4byte _0801D4FA @ case 19 + .4byte _0801D4E8 @ case 20 + .4byte _0801D600 @ case 21 +_0801D4CC: + ldr r0, [r2, #4] + str r0, [r4, #4] + movs r0, #1 + b _0801D60E +_0801D4D4: + adds r0, r4, #0 + adds r0, #0x24 + ldr r1, [r2, #4] + ldr r2, [r4, #0x18] + bl sub_0801D738 + movs r0, #2 + b _0801D60E +_0801D4E4: + movs r0, #3 + b _0801D60E +_0801D4E8: + adds r0, r4, #0 + adds r0, #0x24 + ldr r2, [r4, #0x14] + movs r1, #0x14 + movs r3, #0 + bl sub_0801D714 + movs r0, #3 + b _0801D60E +_0801D4FA: + ldrb r0, [r2, #4] + bl sub_08084180 + adds r2, r0, #0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0801D3AC + movs r0, #3 + b _0801D60E +_0801D50E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0801D516 + b _0801D614 +_0801D516: + b _0801D51E +_0801D518: + ldr r0, [r4, #4] + cmp r0, #1 + bne _0801D614 +_0801D51E: + adds r0, r4, #0 + bl sub_0801D390 + b _0801D614 +_0801D526: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x18] + movs r2, #0x40 + bl memcpy + movs r0, #5 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #2 + b _0801D616 +_0801D53C: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x18] + movs r2, #0x40 + bl memcpy + movs r0, #5 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #3 + b _0801D616 +_0801D552: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x18] + movs r2, #0x40 + bl memcpy + movs r0, #5 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #5 + b _0801D616 +_0801D568: + movs r0, #5 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #4 + b _0801D616 +_0801D574: + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x4c] + bl sub_0801B040 + adds r0, r4, #0 + adds r0, #0x24 + ldr r2, [r4, #0x14] + movs r1, #0x11 + movs r3, #0x64 + bl sub_0801D714 + b _0801D614 +_0801D58C: + ldr r2, [r4, #4] + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0801D3AC + b _0801D614 +_0801D598: + ldr r0, [r4, #0x18] + bl sub_0801ACE4 + b _0801D614 +_0801D5A0: + ldr r0, [r4, #0x18] + bl sub_0801AC74 + cmp r0, #0 + bne _0801D5BC + ldr r0, [r4, #0x18] + bl sub_0801AB50 + adds r0, r4, #0 + movs r1, #0x13 + movs r2, #0 + bl sub_0801D3AC + b _0801D614 +_0801D5BC: + adds r0, r4, #0 + movs r1, #0x13 + movs r2, #1 + bl sub_0801D3AC + b _0801D614 +_0801D5C8: + movs r0, #6 + b _0801D60E +_0801D5CC: + ldr r0, [r4, #0x18] + bl sub_0801AFC8 + b _0801D614 +_0801D5D4: + ldr r0, [r4, #0x18] + movs r1, #0xfa + lsls r1, r1, #2 + bl sub_08098C28 + b _0801D614 +_0801D5E0: + ldr r0, _0801D5F8 + ldr r0, [r0] + ldr r1, _0801D5FC + adds r0, r0, r1 + ldr r1, [r4, #0x18] + movs r2, #0xbc + bl memcpy + bl sub_08165130 + b _0801D614 + .align 2, 0 +_0801D5F8: .4byte gUnknown_3005AF0 +_0801D5FC: .4byte 0x00000BEC +_0801D600: + ldr r0, _0801D61C + ldr r1, [r4, #0x18] + movs r2, #0x80 + lsls r2, r2, #3 + bl memcpy + movs r0, #7 +_0801D60E: + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] +_0801D614: + movs r0, #1 +_0801D616: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801D61C: .4byte gUnknown_201C000 + thumb_func_end sub_0801D44C + + thumb_func_start sub_0801D620 +sub_0801D620: @ 0x0801D620 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0xc] + cmp r0, #0 + beq _0801D632 + movs r0, #4 + str r0, [r1, #8] + movs r0, #0 + str r0, [r1, #0xc] +_0801D632: + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0801D620 + + thumb_func_start sub_0801D638 +sub_0801D638: @ 0x0801D638 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0801D648 + cmp r0, #1 + beq _0801D656 + b _0801D668 +_0801D648: + ldr r0, [r4, #0x18] + bl sub_081537AC + ldr r0, [r4, #0xc] + adds r0, #1 + str r0, [r4, #0xc] + b _0801D668 +_0801D656: + adds r0, r4, #4 + bl sub_081537C0 + adds r1, r0, #0 + cmp r1, #0 + bne _0801D668 + movs r0, #4 + str r0, [r4, #8] + str r1, [r4, #0xc] +_0801D668: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801D638 + + thumb_func_start sub_0801D670 +sub_0801D670: @ 0x0801D670 + push {r4, lr} + adds r4, r0, #0 + ldr r3, _0801D698 + adds r0, r4, #4 + ldr r1, _0801D69C + ldr r1, [r1] + ldr r2, _0801D6A0 + ldr r2, [r2] + bl _call_via_r3 + cmp r0, #1 + bne _0801D690 + movs r0, #4 + str r0, [r4, #8] + movs r0, #0 + str r0, [r4, #0xc] +_0801D690: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801D698: .4byte gUnknown_201C000 +_0801D69C: .4byte gUnknown_3005AF0 +_0801D6A0: .4byte gUnknown_3005AEC + thumb_func_end sub_0801D670 + + thumb_func_start sub_0801D6A4 +sub_0801D6A4: @ 0x0801D6A4 + push {r4, r5, lr} + sub sp, #0x20 + mov r2, sp + ldr r1, _0801D6CC + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4} + stm r2!, {r3, r4} + ldr r1, [r0, #8] + lsls r1, 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 +_0801D6CC: .4byte gUnknown_82C4B34 + thumb_func_end sub_0801D6A4 + + thumb_func_start sub_0801D6D0 +sub_0801D6D0: @ 0x0801D6D0 + push {lr} + ldr r1, [r0, #0x20] + bl _call_via_r1 + pop {r1} + bx r1 + thumb_func_end sub_0801D6D0 + + thumb_func_start sub_0801D6DC +sub_0801D6DC: @ 0x0801D6DC + push {lr} + ldr r1, [r0, #0x24] + bl _call_via_r1 + pop {r1} + bx r1 + thumb_func_end sub_0801D6DC + + thumb_func_start sub_0801D6E8 +sub_0801D6E8: @ 0x0801D6E8 + movs r3, #0 + strb r1, [r0, #4] + strb r2, [r0, #5] + 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, #8] + str r3, [r0, #0x1c] + str r3, [r0, #0x18] + ldr r1, _0801D70C + str r1, [r0, #0x24] + ldr r1, _0801D710 + str r1, [r0, #0x20] + bx lr + .align 2, 0 +_0801D70C: .4byte sub_0801D86C +_0801D710: .4byte sub_0801D798 + thumb_func_end sub_0801D6E8 + + thumb_func_start sub_0801D714 +sub_0801D714: @ 0x0801D714 + 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 _0801D72A + strh r3, [r4, #0x14] + b _0801D730 +_0801D72A: + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x14] +_0801D730: + str r2, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0801D714 + + thumb_func_start sub_0801D738 +sub_0801D738: @ 0x0801D738 + movs r3, #0 + str r3, [r0] + strh r1, [r0, #6] + strh r3, [r0, #8] + strh r3, [r0, #0xa] + strh r3, [r0, #0xc] + str r2, [r0, #0x18] + bx lr + thumb_func_end sub_0801D738 + + thumb_func_start sub_0801D748 +sub_0801D748: @ 0x0801D748 + push {lr} + adds r3, r0, #0 + adds r0, r1, #0 + lsls r3, r3, #8 + ldr r1, _0801D760 + adds r3, r3, r1 + adds r1, r3, #0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_0801D760: .4byte gUnknown_202207C + thumb_func_end sub_0801D748 + + thumb_func_start sub_0801D764 +sub_0801D764: @ 0x0801D764 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0801D77E + movs r0, #0 + b _0801D780 +_0801D77E: + movs r0, #1 +_0801D780: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801D764 + + thumb_func_start sub_0801D788 +sub_0801D788: @ 0x0801D788 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A1B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801D788 + + thumb_func_start sub_0801D798 +sub_0801D798: @ 0x0801D798 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r6, [r5] + cmp r6, #1 + beq _0801D7FC + cmp r6, #1 + bgt _0801D7AE + cmp r6, #0 + beq _0801D7B4 + b _0801D862 +_0801D7AE: + cmp r6, #2 + beq _0801D848 + b _0801D862 +_0801D7B4: + ldrb r0, [r5, #5] + bl sub_0801D764 + cmp r0, #0 + beq _0801D862 + ldrb r0, [r5, #5] + mov r4, sp + mov r1, sp + movs r2, #8 + bl sub_0801D748 + ldrh r1, [r4, #4] + strh r1, [r5, #0xc] + ldrh r0, [r4, #2] + strh r0, [r5, #0xa] + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x13 + cmp r1, r0 + bls _0801D7E2 +_0801D7DC: + bl sub_0800FC98 + b _0801D862 +_0801D7E2: + mov r1, sp + ldrh r0, [r5, #6] + ldrh r1, [r1] + cmp r0, r1 + bne _0801D7DC + strh r6, [r5, #8] + ldrb r0, [r5, #5] + bl sub_0801D788 + ldr r0, [r5] + adds r0, #1 + str r0, [r5] + b _0801D862 +_0801D7FC: + ldrb r0, [r5, #5] + bl sub_0801D764 + cmp r0, #0 + beq _0801D862 + ldrh r0, [r5, #8] + lsls r1, r0, #6 + subs r1, r1, r0 + lsls r3, r1, #2 + ldrh r0, [r5, #0xc] + subs r2, r0, r3 + cmp r2, #0xfc + bhi _0801D82E + ldrb r0, [r5, #5] + ldr r1, [r5, #0x18] + adds r1, r1, r3 + bl sub_0801D748 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + ldr r0, [r5] + adds r0, #1 + str r0, [r5] + b _0801D840 +_0801D82E: + ldrb r0, [r5, #5] + ldr r1, [r5, #0x18] + adds r1, r1, r3 + movs r2, #0xfc + bl sub_0801D748 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_0801D840: + ldrb r0, [r5, #5] + bl sub_0801D788 + b _0801D862 +_0801D848: + ldr r0, [r5, #0x18] + ldrh r1, [r5, #0xc] + bl sub_0806F3AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r5, #0xa] + cmp r0, r1 + bne _0801D7DC + movs r0, #0 + str r0, [r5] + movs r0, #1 + b _0801D864 +_0801D862: + movs r0, #0 +_0801D864: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801D798 + + thumb_func_start sub_0801D86C +sub_0801D86C: @ 0x0801D86C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r5, [r4] + cmp r5, #1 + beq _0801D8D8 + cmp r5, #1 + bgt _0801D882 + cmp r5, #0 + beq _0801D88C + b _0801D96E +_0801D882: + cmp r5, #2 + beq _0801D92C + cmp r5, #3 + beq _0801D956 + b _0801D96E +_0801D88C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801D96E + ldrh r1, [r4, #0xe] + ldr r2, _0801D8D0 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldrh r1, [r4, #0x14] + ldr r0, [sp, #4] + ands r0, r2 + orrs r0, r1 + str r0, [sp, #4] + ldr r0, [r4, #0x1c] + bl sub_0806F3AC + lsls r0, r0, #0x10 + ldr r2, _0801D8D4 + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + lsrs r1, r1, #0x10 + strh r1, [r4, #0x12] + strh r5, [r4, #0x10] + movs r0, #0 + mov r1, sp + movs r2, #8 + bl sub_0800A070 + b _0801D94E + .align 2, 0 +_0801D8D0: .4byte 0xFFFF0000 +_0801D8D4: .4byte 0x0000FFFF +_0801D8D8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801D96E + ldrb r0, [r4, #4] + bl sub_0801D764 + cmp r0, #0 + beq _0801D96E + ldrb r0, [r4, #4] + bl sub_0801D788 + ldrh r1, [r4, #0x10] + lsls r0, r1, #6 + subs r0, r0, r1 + lsls r3, r0, #2 + ldrh r0, [r4, #0x14] + subs r0, r0, r3 + cmp r0, #0xfc + bhi _0801D918 + ldr r1, [r4, #0x1c] + adds r1, r1, r3 + lsls r2, r0, #0x10 + lsrs r2, r2, #0x10 + movs r0, #0 + bl sub_0800A070 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + b _0801D94E +_0801D918: + ldr r1, [r4, #0x1c] + adds r1, r1, r3 + movs r0, #0 + movs r2, #0xfc + bl sub_0800A070 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + b _0801D96E +_0801D92C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801D96E + ldr r0, [r4, #0x1c] + ldrh r1, [r4, #0x14] + bl sub_0806F3AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4, #0x12] + cmp r0, r1 + beq _0801D94E + bl sub_0800FC98 + b _0801D96E +_0801D94E: + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + b _0801D96E +_0801D956: + ldrb r0, [r4, #4] + bl sub_0801D764 + cmp r0, #0 + beq _0801D96E + ldrb r0, [r4, #4] + bl sub_0801D788 + movs r0, #0 + str r0, [r4] + movs r0, #1 + b _0801D970 +_0801D96E: + movs r0, #0 +_0801D970: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0801D86C + + thumb_func_start sub_0801D978 +sub_0801D978: @ 0x0801D978 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0801AB1C + adds r5, r0, #0 + movs r0, #3 + adds r1, r4, #0 + ands r1, r0 + ldrb r2, [r5] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + cmp r4, #2 + bhi _0801D99E + cmp r4, #1 + bhs _0801D9A4 + b _0801D9C8 +_0801D99E: + cmp r4, #3 + beq _0801D9B6 + b _0801D9C8 +_0801D9A4: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + bl __umodsi3 + adds r0, #0x10 + b _0801D9C6 +_0801D9B6: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + bl __umodsi3 + adds r0, #1 +_0801D9C6: + strb r0, [r5, #1] +_0801D9C8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801D978 + + thumb_func_start sub_0801D9D0 +sub_0801D9D0: @ 0x0801D9D0 + push {lr} + bl sub_0801AB1C + movs r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + ldr r0, _0801D9E8 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0801D9E8: .4byte 0x0000402E + thumb_func_end sub_0801D9D0 + + thumb_func_start sub_0801D9EC +sub_0801D9EC: @ 0x0801D9EC + push {r4, lr} + ldr r0, _0801DA28 + bl sub_0809CF20 + adds r4, r0, #0 + bl sub_0801AB1C + adds r2, r0, #0 + ldr r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1d + cmp r0, #4 + bls _0801DA20 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + ldr r1, _0801DA2C + cmp r0, r1 + bls _0801DA20 + ldrb r0, [r2] + movs r1, #0x1f + ands r1, r0 + strb r1, [r2] + movs r0, #0 + strh r0, [r4] +_0801DA20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801DA28: .4byte 0x0000402E +_0801DA2C: .4byte 0x01F30000 + thumb_func_end sub_0801D9EC + + thumb_func_start sub_0801DA30 +sub_0801DA30: @ 0x0801DA30 + push {r4, r5, r6, lr} + ldr r6, _0801DA50 + bl sub_0801AB1C + adds r4, r0, #0 + bl sub_0809CD68 + cmp r0, #0 + beq _0801DA4A + bl sub_0801ABA0 + cmp r0, #0 + bne _0801DA54 +_0801DA4A: + movs r0, #0 + b _0801DAB6 + .align 2, 0 +_0801DA50: .4byte gUnknown_2037290 +_0801DA54: + adds r0, r4, #0 + bl sub_0801DB54 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #6 + bhi _0801DAB4 + lsls r0, r5, #2 + ldr r1, _0801DA6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801DA6C: .4byte _0801DA70 +_0801DA70: @ jump table + .4byte _0801DAB4 @ case 0 + .4byte _0801DA8C @ case 1 + .4byte _0801DA8C @ case 2 + .4byte _0801DAB4 @ case 3 + .4byte _0801DA96 @ case 4 + .4byte _0801DAA6 @ case 5 + .4byte _0801DAB4 @ case 6 +_0801DA8C: + adds r0, r4, #0 + bl sub_0801DABC + strh r0, [r6] + b _0801DAB4 +_0801DA96: + adds r0, r4, #0 + bl sub_0801DABC + strh r0, [r6] + adds r0, r4, #0 + bl sub_0801DAE8 + b _0801DAB4 +_0801DAA6: + adds r0, r4, #0 + bl sub_0801DABC + strh r0, [r6] + adds r0, r4, #0 + bl sub_0801DADC +_0801DAB4: + adds r0, r5, #0 +_0801DAB6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801DA30 + + thumb_func_start sub_0801DABC +sub_0801DABC: @ 0x0801DABC + push {r4, lr} + ldrb r2, [r0] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r4, [r0, #1] + adds r4, #0x84 + movs r1, #0 + strb r1, [r0, #1] + bl sub_0801DB20 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801DABC + + thumb_func_start sub_0801DADC +sub_0801DADC: @ 0x0801DADC + ldrb r2, [r0] + movs r1, #0x1d + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_0801DADC + + thumb_func_start sub_0801DAE8 +sub_0801DAE8: @ 0x0801DAE8 + push {r4, lr} + adds r3, r0, #0 + ldr r0, [r3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1d + adds r0, #1 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #2 + ldrb r1, [r3] + movs r4, #0x1d + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r3] + ldr r0, [r3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1d + cmp r0, #4 + bls _0801DB1A + ands r2, r4 + movs r0, #0x10 + orrs r2, r0 + strb r2, [r3] +_0801DB1A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0801DAE8 + + thumb_func_start sub_0801DB20 +sub_0801DB20: @ 0x0801DB20 + push {r4, lr} + adds r3, r0, #0 + ldr r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1d + adds r0, #1 + lsls r0, 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, r0, #0x18 + lsrs r0, r0, #0x1d + cmp r0, #5 + bls _0801DB4C + ands r2, r4 + movs r0, #0xa0 + orrs r2, r0 + strb r2, [r3] +_0801DB4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801DB20 + + thumb_func_start sub_0801DB54 +sub_0801DB54: @ 0x0801DB54 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2] + movs r0, #0xe0 + ands r0, r1 + cmp r0, #0xa0 + bne _0801DB66 + movs r0, #6 + b _0801DBB0 +_0801DB66: + ldr r1, [r2] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _0801DB88 + cmp r0, #1 + bgt _0801DB7A + cmp r0, #0 + beq _0801DB84 + b _0801DBA0 +_0801DB7A: + cmp r0, #2 + beq _0801DB8C + cmp r0, #3 + beq _0801DB90 + b _0801DBA0 +_0801DB84: + movs r0, #3 + b _0801DBB0 +_0801DB88: + movs r0, #1 + b _0801DBB0 +_0801DB8C: + movs r0, #2 + b _0801DBB0 +_0801DB90: + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1d + cmp r0, #2 + bhi _0801DB9C + movs r0, #4 + b _0801DBB0 +_0801DB9C: + movs r0, #5 + b _0801DBB0 +_0801DBA0: + ldr r0, _0801DBB4 + movs r1, #0xc0 + lsls r1, r1, #1 + ldr r2, _0801DBB8 + movs r3, #1 + bl AGBAssert + movs r0, #0 +_0801DBB0: + pop {r1} + bx r1 + .align 2, 0 +_0801DBB4: .4byte gUnknown_82C5050 +_0801DBB8: .4byte gUnknown_82C5060 + thumb_func_end sub_0801DB54 + + thumb_func_start sub_0801DBBC +sub_0801DBBC: @ 0x0801DBBC + push {r4, lr} + ldr r4, _0801DBE8 + movs r0, #0xde + lsls r0, r0, #1 + bl sub_08000BC8 + str r0, [r4] + bl sub_0801DBF4 + ldr r1, _0801DBEC + movs r0, #0x14 + strh r0, [r1] + movs r0, #0 + bl sub_080006F0 + ldr r0, _0801DBF0 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801DBE8: .4byte gUnknown_2022938 +_0801DBEC: .4byte gUnknown_3002350 +_0801DBF0: .4byte sub_0801DC78 + thumb_func_end sub_0801DBBC + + thumb_func_start sub_0801DBF4 +sub_0801DBF4: @ 0x0801DBF4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r5, #0 + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + 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_08009B64 + strb r0, [r4, #0xd] + bl sub_0800A02C + strb r0, [r4, #0x13] + strb r5, [r4, #0x17] + strb r5, [r4, #0x18] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r4, r1 + bl sub_0801ED2C + ldr r7, _0801DC4C + ldr r6, _0801DC50 + adds r4, #0xb9 + movs r5, #9 +_0801DC32: + ldr r1, [r7] + adds r1, r1, r6 + adds r0, r4, #0 + bl sub_080088B8 + adds r6, #0x15 + adds r4, #0x15 + subs r5, #1 + cmp r5, #0 + bge _0801DC32 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801DC4C: .4byte gUnknown_3005AEC +_0801DC50: .4byte 0x00003C88 + thumb_func_end sub_0801DBF4 + + thumb_func_start sub_0801DC54 +sub_0801DC54: @ 0x0801DC54 + push {r4, lr} + ldr r4, _0801DC74 + ldr r0, [r4] + ldrb r0, [r0, #0xe] + bl sub_080A8964 + ldr r0, [r4] + ldrb r0, [r0, #0xf] + bl sub_080A8964 + ldr r0, [r4] + bl sub_08000BF0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801DC74: .4byte gUnknown_2022938 + thumb_func_end sub_0801DC54 + + thumb_func_start sub_0801DC78 +sub_0801DC78: @ 0x0801DC78 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r0, _0801DC94 + movs r1, #0x87 + lsls r1, r1, #3 + adds r6, r0, r1 + ldrb r0, [r6] + cmp r0, #1 + beq _0801DCB0 + cmp r0, #1 + bgt _0801DC98 + cmp r0, #0 + beq _0801DC9E + b _0801DD28 + .align 2, 0 +_0801DC94: .4byte gUnknown_3002360 +_0801DC98: + cmp r0, #2 + beq _0801DCEC + b _0801DD28 +_0801DC9E: + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + bl sub_0801F2E0 + b _0801DCE0 +_0801DCB0: + bl sub_0801F3C8 + bl sub_0801F344 + adds r5, r0, #0 + cmp r5, #0 + bne _0801DD28 + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + str r5, [sp] + adds r0, r4, #0 + adds r1, r4, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0801DCE8 + bl sub_080006F0 +_0801DCE0: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _0801DD28 + .align 2, 0 +_0801DCE8: .4byte sub_0801DD44 +_0801DCEC: + bl sub_080A12E4 + ldr r0, _0801DD30 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801DD28 + ldr r0, _0801DD34 + bl sub_08000540 + ldr r0, _0801DD38 + movs r1, #8 + bl sub_080A8878 + ldr r4, _0801DD3C + ldr r1, [r4] + strb r0, [r1, #0xe] + ldr r0, _0801DD40 + movs r1, #7 + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1, #0xf] + bl sub_0800DBB4 + movs r0, #0xe8 + movs r1, #0x96 + bl sub_0800DA80 +_0801DD28: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801DD30: .4byte gUnknown_2037C74 +_0801DD34: .4byte sub_0801DD5C +_0801DD38: .4byte sub_0801DD78 +_0801DD3C: .4byte gUnknown_2022938 +_0801DD40: .4byte sub_0801F0C4 + thumb_func_end sub_0801DC78 + + thumb_func_start sub_0801DD44 +sub_0801DD44: @ 0x0801DD44 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801DD44 + + thumb_func_start sub_0801DD5C +sub_0801DD5C: @ 0x0801DD5C + push {lr} + bl sub_080A89D4 + bl sub_0801F3C8 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801DD5C + + thumb_func_start sub_0801DD78 +sub_0801DD78: @ 0x0801DD78 + push {r4, lr} + ldr r4, _0801DD90 + ldr r0, [r4] + ldrb r0, [r0, #0x17] + cmp r0, #2 + beq _0801DD9E + cmp r0, #2 + bgt _0801DD94 + cmp r0, #1 + beq _0801DD9A + b _0801DDAE + .align 2, 0 +_0801DD90: .4byte gUnknown_2022938 +_0801DD94: + cmp r0, #3 + beq _0801DDA2 + b _0801DDAE +_0801DD9A: + movs r0, #6 + b _0801DDA4 +_0801DD9E: + movs r0, #7 + b _0801DDA4 +_0801DDA2: + movs r0, #8 +_0801DDA4: + bl sub_0801E9F8 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #0x17] +_0801DDAE: + ldr r1, _0801DDC8 + ldr r0, _0801DDCC + ldr r0, [r0] + ldrh r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_0801DD78 + + thumb_func_start sub_0801DDC0 +sub_0801DDC0: @ 0x0801DDC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801DDC8: .4byte gUnknown_82C5064 +_0801DDCC: .4byte gUnknown_2022938 + thumb_func_end sub_0801DDC0 + + thumb_func_start sub_0801DDD0 +sub_0801DDD0: @ 0x0801DDD0 + push {r4, lr} + ldr r4, _0801DDE8 + ldr r0, [r4] + ldrh r1, [r0, #6] + cmp r1, #1 + beq _0801DE04 + cmp r1, #1 + bgt _0801DDEC + cmp r1, #0 + beq _0801DDF2 + b _0801DE4C + .align 2, 0 +_0801DDE8: .4byte gUnknown_2022938 +_0801DDEC: + cmp r1, #2 + beq _0801DE3C + b _0801DE4C +_0801DDF2: + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_0801ED34 + ldr r1, [r4] + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] +_0801DE04: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801DE4C + bl sub_0801158C + cmp r0, #0 + bne _0801DE4C + ldr r4, _0801DE38 + ldr r1, [r4] + movs r0, #0xc8 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + movs r2, #0x28 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801DE4C + ldr r1, [r4] + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801DE4C + .align 2, 0 +_0801DE38: .4byte gUnknown_2022938 +_0801DE3C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801DE4C + movs r0, #1 + bl sub_0801E9F8 +_0801DE4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801DDD0 + + thumb_func_start sub_0801DE54 +sub_0801DE54: @ 0x0801DE54 + push {r4, r5, lr} + ldr r5, _0801DE68 + ldr r3, [r5] + ldrh r0, [r3, #6] + cmp r0, #0 + beq _0801DE6C + cmp r0, #1 + beq _0801DF1A + b _0801DF3C + .align 2, 0 +_0801DE68: .4byte gUnknown_2022938 +_0801DE6C: + ldr r1, _0801DE88 + ldrh r2, [r1, #0x2e] + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0801DE8C + ldrb r0, [r3, #0x15] + cmp r0, #0 + beq _0801DF3C + movs r0, #4 + bl sub_0801E9F8 + b _0801DF3C + .align 2, 0 +_0801DE88: .4byte gUnknown_3002360 +_0801DE8C: + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _0801DE9C + movs r0, #2 + bl sub_0801E9F8 + b _0801DF3C +_0801DE9C: + ldrh r1, [r1, #0x30] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801DEC8 + ldrb r0, [r3, #0x15] + cmp r0, #0 + beq _0801DEC0 + bl sub_0801EB74 + movs r0, #8 + movs r1, #0 + bl sub_0801F3FC + ldr r1, [r5] + movs r0, #1 + strh r0, [r1, #6] + b _0801DF3C +_0801DEC0: + movs r0, #3 + bl sub_0801E9F8 + b _0801DF3C +_0801DEC8: + movs r4, #1 + adds r0, r4, #0 + ands r0, r2 + cmp r0, #0 + beq _0801DEE4 + bl sub_0801EAB8 + movs r0, #8 + movs r1, #0 + bl sub_0801F3FC + movs r0, #2 + movs r1, #1 + b _0801DF10 +_0801DEE4: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0801DF04 + ldrb r0, [r3, #0x10] + cmp r0, #4 + beq _0801DEFC + bl sub_0801EBA0 + movs r0, #8 + b _0801DF0E +_0801DEFC: + movs r0, #5 + bl sub_0801E9F8 + b _0801DF3C +_0801DF04: + bl sub_0801EA08 + cmp r0, #0 + beq _0801DF3C + movs r0, #1 +_0801DF0E: + movs r1, #0 +_0801DF10: + bl sub_0801F3FC + ldr r0, [r5] + strh r4, [r0, #6] + b _0801DF3C +_0801DF1A: + movs r0, #0 + bl sub_0801F454 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_0801F454 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r4, #0 + bne _0801DF3C + cmp r1, #0 + bne _0801DF3C + ldr r0, [r5] + strh r1, [r0, #6] +_0801DF3C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801DE54 + + thumb_func_start sub_0801DF44 +sub_0801DF44: @ 0x0801DF44 + push {r4, r5, r6, lr} + ldr r0, _0801DF5C + ldr r0, [r0] + ldrh r0, [r0, #6] + cmp r0, #4 + bls _0801DF52 + b _0801E05E +_0801DF52: + lsls r0, r0, #2 + ldr r1, _0801DF60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801DF5C: .4byte gUnknown_2022938 +_0801DF60: .4byte _0801DF64 +_0801DF64: @ jump table + .4byte _0801DF78 @ case 0 + .4byte _0801DF82 @ case 1 + .4byte _0801DFA0 @ case 2 + .4byte _0801E02C @ case 3 + .4byte _0801E040 @ case 4 +_0801DF78: + movs r0, #3 + movs r1, #0 + bl sub_0801F3FC + b _0801DF8E +_0801DF82: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E05E +_0801DF8E: + ldr r0, _0801DF9C + ldr r1, [r0] + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801E05E + .align 2, 0 +_0801DF9C: .4byte gUnknown_2022938 +_0801DFA0: + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r0, r0, #8 + lsrs r6, r0, #0x10 + asrs r4, r0, #0x10 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0801DFD8 + adds r0, #1 + cmp r4, r0 + beq _0801DFF8 + movs r0, #4 + movs r1, #0 + bl sub_0801F3FC + ldr r5, _0801DFD4 + ldr r2, [r5] + ldrb r0, [r2, #0x10] + cmp r0, r4 + beq _0801E000 + cmp r4, #5 + bne _0801E010 + b _0801E000 + .align 2, 0 +_0801DFD4: .4byte gUnknown_2022938 +_0801DFD8: + ldr r0, _0801DFF4 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0801E05E + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_081985E8 + b _0801E05E + .align 2, 0 +_0801DFF4: .4byte gUnknown_3002360 +_0801DFF8: + movs r0, #4 + movs r1, #0 + bl sub_0801F3FC +_0801E000: + ldr r0, _0801E00C + ldr r1, [r0] + movs r0, #3 + strh r0, [r1, #6] + b _0801E05E + .align 2, 0 +_0801E00C: .4byte gUnknown_2022938 +_0801E010: + movs r1, #0 + strb r1, [r2, #0x11] + ldr r0, [r5] + strb r1, [r0, #0x12] + movs r0, #5 + movs r1, #1 + bl sub_0801F3FC + ldr r0, [r5] + strb r6, [r0, #0x10] + ldr r1, [r5] + movs r0, #4 + strh r0, [r1, #6] + b _0801E05E +_0801E02C: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E05E + movs r0, #1 + bl sub_0801E9F8 + b _0801E05E +_0801E040: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E05E + movs r0, #1 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E05E + movs r0, #1 + bl sub_0801E9F8 +_0801E05E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0801DF44 + + thumb_func_start sub_0801E064 +sub_0801E064: @ 0x0801E064 + push {r4, r5, lr} + ldr r1, _0801E080 + ldr r0, [r1] + ldrh r0, [r0, #6] + adds r2, r1, #0 + cmp r0, #0xa + bls _0801E074 + b _0801E27C +_0801E074: + lsls r0, r0, #2 + ldr r1, _0801E084 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E080: .4byte gUnknown_2022938 +_0801E084: .4byte _0801E088 +_0801E088: @ jump table + .4byte _0801E0B4 @ case 0 + .4byte _0801E0CC @ case 1 + .4byte _0801E0E8 @ case 2 + .4byte _0801E146 @ case 3 + .4byte _0801E1F8 @ case 4 + .4byte _0801E248 @ case 5 + .4byte _0801E27C @ case 6 + .4byte _0801E27C @ case 7 + .4byte _0801E19C @ case 8 + .4byte _0801E15C @ case 9 + .4byte _0801E180 @ case 10 +_0801E0B4: + movs r0, #6 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E0C8 + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E0C8: .4byte gUnknown_2022938 +_0801E0CC: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E0DA + b _0801E27C +_0801E0DA: + ldr r0, _0801E0E4 + ldr r1, [r0] + movs r0, #2 + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E0E4: .4byte gUnknown_2022938 +_0801E0E8: + bl sub_0801FD30 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0801E10A + cmp r1, #0 + bgt _0801E102 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801E1BA + b _0801E27C +_0801E102: + cmp r1, #1 + beq _0801E108 + b _0801E27C +_0801E108: + b _0801E1BA +_0801E10A: + ldr r4, _0801E130 + ldr r1, [r4] + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _0801E134 + movs r2, #0xc8 + lsls r2, r2, #1 + adds r0, r1, r2 + bl sub_0801EDE0 + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r1, [r4] + movs r0, #9 + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E130: .4byte gUnknown_2022938 +_0801E134: + movs r2, #0xc8 + lsls r2, r2, #1 + adds r0, r1, r2 + bl sub_0801ED8C + ldr r1, [r4] + movs r0, #4 + strh r0, [r1, #6] + b _0801E27C +_0801E146: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E154 + b _0801E27C +_0801E154: + movs r0, #1 + bl sub_0801E9F8 + b _0801E27C +_0801E15C: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E16A + b _0801E27C +_0801E16A: + movs r0, #0x14 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E17C + ldr r1, [r0] + movs r0, #0xa + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E17C: .4byte gUnknown_2022938 +_0801E180: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E18E + b _0801E27C +_0801E18E: + ldr r0, _0801E198 + ldr r1, [r0] + movs r0, #8 + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E198: .4byte gUnknown_2022938 +_0801E19C: + bl sub_0801FD30 + lsls r0, r0, #0x18 + asrs r5, r0, #0x18 + cmp r5, #0 + beq _0801E1D0 + cmp r5, #0 + bgt _0801E1B6 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _0801E1BA + b _0801E27C +_0801E1B6: + cmp r5, #1 + bne _0801E27C +_0801E1BA: + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E1CC + ldr r1, [r0] + movs r0, #3 + strh r0, [r1, #6] + b _0801E27C + .align 2, 0 +_0801E1CC: .4byte gUnknown_2022938 +_0801E1D0: + bl sub_0800FFB0 + ldr r4, _0801E1F4 + ldr r0, [r4] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_0801EDE0 + ldr r0, [r4] + movs r1, #4 + strh r1, [r0, #6] + movs r2, #0xdc + lsls r2, r2, #1 + adds r0, r0, r2 + strh r5, [r0] + b _0801E27C + .align 2, 0 +_0801E1F4: .4byte gUnknown_2022938 +_0801E1F8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E238 + bl sub_0801158C + cmp r0, #0 + bne _0801E238 + ldr r4, _0801E230 + ldr r1, [r4] + movs r0, #0xc8 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + movs r2, #0x28 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E238 + ldr r1, [r4] + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _0801E234 + movs r0, #6 + b _0801E236 + .align 2, 0 +_0801E230: .4byte gUnknown_2022938 +_0801E234: + movs r0, #5 +_0801E236: + strh r0, [r1, #6] +_0801E238: + ldr r0, _0801E244 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E27C + b _0801E250 + .align 2, 0 +_0801E244: .4byte gUnknown_30031C4 +_0801E248: + ldr r0, _0801E258 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E25C +_0801E250: + movs r0, #9 + bl sub_0801E9F8 + b _0801E27C + .align 2, 0 +_0801E258: .4byte gUnknown_30031C4 +_0801E25C: + ldr r3, [r2] + movs r1, #0xdc + lsls r1, r1, #1 + adds r2, r3, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _0801E27C + movs r0, #0 + strh r0, [r2] + movs r0, #4 + strh r0, [r3, #6] +_0801E27C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801E064 + + thumb_func_start sub_0801E284 +sub_0801E284: @ 0x0801E284 + push {r4, lr} + ldr r1, _0801E2A0 + ldr r0, [r1] + ldrh r0, [r0, #6] + adds r2, r1, #0 + cmp r0, #7 + bls _0801E294 + b _0801E3E0 +_0801E294: + lsls r0, r0, #2 + ldr r1, _0801E2A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E2A0: .4byte gUnknown_2022938 +_0801E2A4: .4byte _0801E2A8 +_0801E2A8: @ jump table + .4byte _0801E2C8 @ case 0 + .4byte _0801E2EC @ case 1 + .4byte _0801E30C @ case 2 + .4byte _0801E330 @ case 3 + .4byte _0801E364 @ case 4 + .4byte _0801E384 @ case 5 + .4byte _0801E3A8 @ case 6 + .4byte _0801E3CC @ case 7 +_0801E2C8: + ldr r0, _0801E2E4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E2D6 + b _0801E3E0 +_0801E2D6: + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E2E8 + ldr r1, [r0] + b _0801E3BE + .align 2, 0 +_0801E2E4: .4byte sub_0801F0C4 +_0801E2E8: .4byte gUnknown_2022938 +_0801E2EC: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E3E0 + movs r0, #0x12 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E308 + ldr r1, [r0] + b _0801E3BE + .align 2, 0 +_0801E308: .4byte gUnknown_2022938 +_0801E30C: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E3E0 + ldr r4, _0801E32C + ldr r0, [r4] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_0801EDB8 + ldr r1, [r4] + b _0801E3BE + .align 2, 0 +_0801E32C: .4byte gUnknown_2022938 +_0801E330: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E3E0 + bl sub_0801158C + cmp r0, #0 + bne _0801E3E0 + ldr r4, _0801E360 + ldr r1, [r4] + movs r0, #0xc8 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + movs r2, #0x28 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E3E0 + ldr r1, [r4] + b _0801E3BE + .align 2, 0 +_0801E360: .4byte gUnknown_2022938 +_0801E364: + bl sub_0800A114 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0801E3E0 + bl sub_0801158C + cmp r0, #0 + bne _0801E3E0 + ldr r0, _0801E380 + ldr r1, [r0] + b _0801E3BE + .align 2, 0 +_0801E380: .4byte gUnknown_2022938 +_0801E384: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E3E0 + bl sub_0801158C + adds r4, r0, #0 + cmp r4, #0 + bne _0801E3E0 + bl sub_0800A7F8 + ldr r0, _0801E3A4 + ldr r1, [r0] + strh r4, [r1, #0xa] + b _0801E3BE + .align 2, 0 +_0801E3A4: .4byte gUnknown_2022938 +_0801E3A8: + ldr r1, [r2] + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bhi _0801E3B4 + adds r0, #1 + strh r0, [r1, #0xa] +_0801E3B4: + ldr r0, _0801E3C8 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E3E0 + ldr r1, [r2] +_0801E3BE: + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801E3E0 + .align 2, 0 +_0801E3C8: .4byte gUnknown_30031C4 +_0801E3CC: + ldr r1, [r2] + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bls _0801E3DC + movs r0, #9 + bl sub_0801E9F8 + b _0801E3E0 +_0801E3DC: + adds r0, #1 + strh r0, [r1, #0xa] +_0801E3E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801E284 + + thumb_func_start sub_0801E3E8 +sub_0801E3E8: @ 0x0801E3E8 + push {r4, r5, lr} + ldr r5, _0801E400 + ldr r1, [r5] + ldrh r0, [r1, #6] + cmp r0, #1 + beq _0801E428 + cmp r0, #1 + bgt _0801E404 + cmp r0, #0 + beq _0801E40E + b _0801E486 + .align 2, 0 +_0801E400: .4byte gUnknown_2022938 +_0801E404: + cmp r0, #2 + beq _0801E452 + cmp r0, #3 + beq _0801E474 + b _0801E486 +_0801E40E: + ldr r0, _0801E424 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E486 + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + b _0801E464 + .align 2, 0 +_0801E424: .4byte sub_0801F0C4 +_0801E428: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E486 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E486 + bl sub_0801158C + adds r4, r0, #0 + cmp r4, #0 + bne _0801E486 + bl sub_0800A7F8 + ldr r1, [r5] + strh r4, [r1, #0xa] + b _0801E466 +_0801E452: + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bhi _0801E45C + adds r0, #1 + strh r0, [r1, #0xa] +_0801E45C: + ldr r0, _0801E470 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E486 +_0801E464: + ldr r1, [r5] +_0801E466: + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801E486 + .align 2, 0 +_0801E470: .4byte gUnknown_30031C4 +_0801E474: + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bls _0801E482 + movs r0, #9 + bl sub_0801E9F8 + b _0801E486 +_0801E482: + adds r0, #1 + strh r0, [r1, #0xa] +_0801E486: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0801E3E8 + + thumb_func_start sub_0801E48C +sub_0801E48C: @ 0x0801E48C + push {r4, lr} + ldr r1, _0801E4A4 + ldr r0, [r1] + ldrh r0, [r0, #6] + adds r2, r1, #0 + cmp r0, #4 + bhi _0801E580 + lsls r0, r0, #2 + ldr r1, _0801E4A8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E4A4: .4byte gUnknown_2022938 +_0801E4A8: .4byte _0801E4AC +_0801E4AC: @ jump table + .4byte _0801E4C0 @ case 0 + .4byte _0801E4EC @ case 1 + .4byte _0801E514 @ case 2 + .4byte _0801E548 @ case 3 + .4byte _0801E56C @ case 4 +_0801E4C0: + ldr r0, _0801E4E4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E580 + ldr r4, _0801E4E8 + ldr r0, [r4] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _0801E4DE + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC +_0801E4DE: + ldr r1, [r4] + b _0801E55E + .align 2, 0 +_0801E4E4: .4byte sub_0801F0C4 +_0801E4E8: .4byte gUnknown_2022938 +_0801E4EC: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E580 + ldr r4, _0801E510 + ldr r0, [r4] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _0801E50A + movs r0, #0x13 + movs r1, #0 + bl sub_0801F3FC +_0801E50A: + ldr r1, [r4] + b _0801E55E + .align 2, 0 +_0801E510: .4byte gUnknown_2022938 +_0801E514: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0801E580 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E580 + bl sub_0801158C + adds r4, r0, #0 + cmp r4, #0 + bne _0801E580 + bl sub_0800A7F8 + ldr r0, _0801E544 + ldr r1, [r0] + strh r4, [r1, #0xa] + b _0801E55E + .align 2, 0 +_0801E544: .4byte gUnknown_2022938 +_0801E548: + ldr r1, [r2] + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bhi _0801E554 + adds r0, #1 + strh r0, [r1, #0xa] +_0801E554: + ldr r0, _0801E568 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E580 + ldr r1, [r2] +_0801E55E: + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801E580 + .align 2, 0 +_0801E568: .4byte gUnknown_30031C4 +_0801E56C: + ldr r1, [r2] + ldrh r0, [r1, #0xa] + cmp r0, #0x95 + bls _0801E57C + movs r0, #9 + bl sub_0801E9F8 + b _0801E580 +_0801E57C: + adds r0, #1 + strh r0, [r1, #0xa] +_0801E580: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801E48C + + thumb_func_start sub_0801E588 +sub_0801E588: @ 0x0801E588 + push {r4, lr} + ldr r1, _0801E5A0 + ldr r0, [r1] + ldrh r0, [r0, #6] + adds r4, r1, #0 + cmp r0, #4 + bhi _0801E654 + lsls r0, r0, #2 + ldr r1, _0801E5A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E5A0: .4byte gUnknown_2022938 +_0801E5A4: .4byte _0801E5A8 +_0801E5A8: @ jump table + .4byte _0801E5BC @ case 0 + .4byte _0801E5E4 @ case 1 + .4byte _0801E618 @ case 2 + .4byte _0801E626 @ case 3 + .4byte _0801E644 @ case 4 +_0801E5BC: + ldr r0, _0801E5CC + ldrb r0, [r0] + cmp r0, #0 + bne _0801E5D0 + movs r0, #1 + bl sub_0801E9F8 + b _0801E654 + .align 2, 0 +_0801E5CC: .4byte gUnknown_30031C4 +_0801E5D0: + ldr r0, [r4] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_0801ED5C + ldr r1, [r4] + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] +_0801E5E4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0801E654 + bl sub_0801158C + cmp r0, #0 + bne _0801E654 + ldr r4, _0801E614 + ldr r1, [r4] + movs r0, #0xc8 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + movs r2, #0x28 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E654 + ldr r1, [r4] + b _0801E636 + .align 2, 0 +_0801E614: .4byte gUnknown_2022938 +_0801E618: + bl sub_0801EC20 + movs r0, #8 + movs r1, #0 + bl sub_0801F3FC + b _0801E632 +_0801E626: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E654 +_0801E632: + ldr r0, _0801E640 + ldr r1, [r0] +_0801E636: + ldrh r0, [r1, #6] + adds r0, #1 + strh r0, [r1, #6] + b _0801E654 + .align 2, 0 +_0801E640: .4byte gUnknown_2022938 +_0801E644: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E654 + movs r0, #1 + bl sub_0801E9F8 +_0801E654: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801E588 + + thumb_func_start sub_0801E65C +sub_0801E65C: @ 0x0801E65C + push {r4, lr} + ldr r0, _0801E674 + ldr r0, [r0] + ldrh r0, [r0, #6] + cmp r0, #6 + bls _0801E66A + b _0801E78C +_0801E66A: + lsls r0, r0, #2 + ldr r1, _0801E678 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E674: .4byte gUnknown_2022938 +_0801E678: .4byte _0801E67C +_0801E67C: @ jump table + .4byte _0801E698 @ case 0 + .4byte _0801E6C8 @ case 1 + .4byte _0801E71C @ case 2 + .4byte _0801E734 @ case 3 + .4byte _0801E744 @ case 4 + .4byte _0801E758 @ case 5 + .4byte _0801E770 @ case 6 +_0801E698: + bl sub_0801EBD4 + cmp r0, #0 + beq _0801E6B4 + movs r0, #9 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E6B0 + ldr r1, [r0] + movs r0, #2 + b _0801E78A + .align 2, 0 +_0801E6B0: .4byte gUnknown_2022938 +_0801E6B4: + movs r0, #0xd + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E6C4 + ldr r1, [r0] + movs r0, #5 + b _0801E78A + .align 2, 0 +_0801E6C4: .4byte gUnknown_2022938 +_0801E6C8: + ldr r0, _0801E6E8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801E6F0 + bl sub_0801EBF0 + movs r0, #0xb + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E6EC + ldr r1, [r0] + movs r0, #3 + b _0801E78A + .align 2, 0 +_0801E6E8: .4byte gUnknown_3002360 +_0801E6EC: .4byte gUnknown_2022938 +_0801E6F0: + movs r4, #2 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0801E6FE + movs r0, #0xa + b _0801E77E +_0801E6FE: + bl sub_0801EA08 + cmp r0, #0 + beq _0801E78C + movs r0, #1 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E718 + ldr r0, [r0] + strh r4, [r0, #6] + b _0801E78C + .align 2, 0 +_0801E718: .4byte gUnknown_2022938 +_0801E71C: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E78C + ldr r0, _0801E730 + ldr r1, [r0] + movs r0, #1 + b _0801E78A + .align 2, 0 +_0801E730: .4byte gUnknown_2022938 +_0801E734: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E78C + movs r0, #0xa + b _0801E77E +_0801E744: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E78C + movs r0, #1 + bl sub_0801E9F8 + b _0801E78C +_0801E758: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E78C + ldr r0, _0801E76C + ldr r1, [r0] + movs r0, #6 + b _0801E78A + .align 2, 0 +_0801E76C: .4byte gUnknown_2022938 +_0801E770: + ldr r0, _0801E794 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0801E78C + movs r0, #7 +_0801E77E: + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E798 + ldr r1, [r0] + movs r0, #4 +_0801E78A: + strh r0, [r1, #6] +_0801E78C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801E794: .4byte gUnknown_3002360 +_0801E798: .4byte gUnknown_2022938 + thumb_func_end sub_0801E65C + + thumb_func_start sub_0801E79C +sub_0801E79C: @ 0x0801E79C + push {r4, lr} + sub sp, #4 + ldr r1, _0801E7B8 + ldr r0, [r1] + ldrh r0, [r0, #6] + adds r4, r1, #0 + cmp r0, #0xd + bls _0801E7AE + b _0801E9E6 +_0801E7AE: + lsls r0, r0, #2 + ldr r1, _0801E7BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E7B8: .4byte gUnknown_2022938 +_0801E7BC: .4byte _0801E7C0 +_0801E7C0: @ jump table + .4byte _0801E7F8 @ case 0 + .4byte _0801E812 @ case 1 + .4byte _0801E838 @ case 2 + .4byte _0801E87C @ case 3 + .4byte _0801E8A0 @ case 4 + .4byte _0801E8BC @ case 5 + .4byte _0801E900 @ case 6 + .4byte _0801E928 @ case 7 + .4byte _0801E94C @ case 8 + .4byte _0801E964 @ case 9 + .4byte _0801E988 @ case 10 + .4byte _0801E996 @ case 11 + .4byte _0801E9AC @ case 12 + .4byte _0801E9CC @ case 13 +_0801E7F8: + ldr r1, [r4] + ldrb r0, [r1, #0x18] + cmp r0, #0 + bne _0801E802 + b _0801E9A6 +_0801E802: + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r1, [r4] + movs r0, #1 + strh r0, [r1, #6] + b _0801E9E6 +_0801E812: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E820 + b _0801E9E6 +_0801E820: + movs r0, #0xe + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E834 + ldr r1, [r0] + movs r0, #2 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E834: .4byte gUnknown_2022938 +_0801E838: + bl sub_0801FD30 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0801E864 + cmp r1, #0 + bgt _0801E852 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801E858 + b _0801E9E6 +_0801E852: + cmp r1, #1 + beq _0801E858 + b _0801E9E6 +_0801E858: + ldr r0, _0801E860 + ldr r1, [r0] + b _0801E9A6 + .align 2, 0 +_0801E860: .4byte gUnknown_2022938 +_0801E864: + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E878 + ldr r1, [r0] + movs r0, #3 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E878: .4byte gUnknown_2022938 +_0801E87C: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E88A + b _0801E9E6 +_0801E88A: + movs r0, #0xf + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E89C + ldr r1, [r0] + movs r0, #4 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E89C: .4byte gUnknown_2022938 +_0801E8A0: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801E8AE + b _0801E9E6 +_0801E8AE: + ldr r0, _0801E8B8 + ldr r1, [r0] + movs r0, #5 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E8B8: .4byte gUnknown_2022938 +_0801E8BC: + bl sub_0801FD30 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0801E8E8 + cmp r1, #0 + bgt _0801E8D6 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0801E8DC + b _0801E9E6 +_0801E8D6: + cmp r1, #1 + beq _0801E8DC + b _0801E9E6 +_0801E8DC: + ldr r0, _0801E8E4 + ldr r1, [r0] + b _0801E9A6 + .align 2, 0 +_0801E8E4: .4byte gUnknown_2022938 +_0801E8E8: + movs r0, #7 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E8FC + ldr r1, [r0] + movs r0, #6 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E8FC: .4byte gUnknown_2022938 +_0801E900: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E9E6 + movs r0, #0x10 + movs r1, #0 + bl sub_0801F3FC + bl sub_0801EC3C + ldr r0, _0801E924 + ldr r1, [r0] + movs r0, #7 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E924: .4byte gUnknown_2022938 +_0801E928: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E9E6 + bl sub_08076764 + movs r0, #0 + bl sub_08153274 + ldr r0, _0801E948 + ldr r1, [r0] + movs r0, #8 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E948: .4byte gUnknown_2022938 +_0801E94C: + movs r0, #0x11 + movs r1, #0 + bl sub_0801F3FC + ldr r0, _0801E960 + ldr r1, [r0] + movs r0, #9 + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E960: .4byte gUnknown_2022938 +_0801E964: + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801E9E6 + movs r0, #0x37 + bl sub_080A306C + bl sub_08076780 + ldr r0, _0801E984 + ldr r1, [r0] + movs r0, #0xa + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E984: .4byte gUnknown_2022938 +_0801E988: + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #0x19] + ldr r1, [r4] + movs r0, #0xb + strh r0, [r1, #6] + b _0801E9E6 +_0801E996: + ldr r0, [r4] + ldrb r1, [r0, #0x19] + adds r1, #1 + strb r1, [r0, #0x19] + ldr r1, [r4] + ldrb r0, [r1, #0x19] + cmp r0, #0x78 + bls _0801E9E6 +_0801E9A6: + movs r0, #0xc + strh r0, [r1, #6] + b _0801E9E6 +_0801E9AC: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0801E9C8 + ldr r1, [r0] + movs r0, #0xd + strh r0, [r1, #6] + b _0801E9E6 + .align 2, 0 +_0801E9C8: .4byte gUnknown_2022938 +_0801E9CC: + ldr r0, _0801E9F0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801E9E6 + bl sub_0801F354 + bl sub_0801DC54 + ldr r0, _0801E9F4 + bl sub_08000540 +_0801E9E6: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801E9F0: .4byte gUnknown_2037C74 +_0801E9F4: .4byte sub_08085A30 + thumb_func_end sub_0801E79C + + thumb_func_start sub_0801E9F8 +sub_0801E9F8: @ 0x0801E9F8 + ldr r1, _0801EA04 + ldr r1, [r1] + movs r2, #0 + strh r0, [r1, #4] + strh r2, [r1, #6] + bx lr + .align 2, 0 +_0801EA04: .4byte gUnknown_2022938 + thumb_func_end sub_0801E9F8 + + thumb_func_start sub_0801EA08 +sub_0801EA08: @ 0x0801EA08 + push {lr} + ldr r0, _0801EA38 + ldrh r2, [r0, #0x30] + movs r0, #0x40 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _0801EA92 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _0801EA48 + ldr r0, _0801EA3C + ldr r2, [r0] + ldr r1, _0801EA40 + ldrb r0, [r2, #0x10] + adds r0, r0, r1 + ldrb r1, [r2, #0x12] + ldrb r0, [r0] + cmp r1, r0 + bhs _0801EA44 + adds r0, r1, #1 + b _0801EAAC + .align 2, 0 +_0801EA38: .4byte gUnknown_3002360 +_0801EA3C: .4byte gUnknown_2022938 +_0801EA40: .4byte gUnknown_82C508C +_0801EA44: + strb r3, [r2, #0x12] + b _0801EAAE +_0801EA48: + ldr r0, _0801EA6C + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #4 + beq _0801EA8E + movs r0, #0x20 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _0801EA76 + ldrb r0, [r1, #0x11] + cmp r0, #0 + beq _0801EA70 + subs r0, #1 + strb r0, [r1, #0x11] + b _0801EAAE + .align 2, 0 +_0801EA6C: .4byte gUnknown_2022938 +_0801EA70: + movs r0, #4 + strb r0, [r1, #0x11] + b _0801EAAE +_0801EA76: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _0801EA8E + ldrb r0, [r1, #0x11] + cmp r0, #3 + bhi _0801EA8A + adds r0, #1 + strb r0, [r1, #0x11] + b _0801EAAE +_0801EA8A: + strb r3, [r1, #0x11] + b _0801EAAE +_0801EA8E: + movs r0, #0 + b _0801EAB0 +_0801EA92: + ldr r0, _0801EAA0 + ldr r2, [r0] + ldrb r0, [r2, #0x12] + cmp r0, #0 + beq _0801EAA4 + subs r0, #1 + b _0801EAAC + .align 2, 0 +_0801EAA0: .4byte gUnknown_2022938 +_0801EAA4: + ldr r0, _0801EAB4 + ldrb r1, [r2, #0x10] + adds r1, r1, r0 + ldrb r0, [r1] +_0801EAAC: + strb r0, [r2, #0x12] +_0801EAAE: + movs r0, #1 +_0801EAB0: + pop {r1} + bx r1 + .align 2, 0 +_0801EAB4: .4byte gUnknown_82C508C + thumb_func_end sub_0801EA08 + + thumb_func_start sub_0801EAB8 +sub_0801EAB8: @ 0x0801EAB8 + push {r4, r5, r6, lr} + ldr r0, _0801EAF4 + ldr r5, [r0] + ldrb r0, [r5, #0x10] + cmp r0, #4 + beq _0801EAFC + ldr r3, _0801EAF8 + ldrb r1, [r5, #0x12] + lsls r1, r1, #2 + adds r2, r0, #0 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r4, [r1] + ldrb r0, [r5, #0x11] + cmp r0, #0 + beq _0801EAF0 + adds r1, r0, #0 +_0801EAE0: + ldrb r0, [r4] + cmp r0, #0xf9 + bne _0801EAE8 + adds r4, #1 +_0801EAE8: + adds r4, #1 + subs r1, #1 + cmp r1, #0 + bne _0801EAE0 +_0801EAF0: + movs r5, #1 + b _0801EB12 + .align 2, 0 +_0801EAF4: .4byte gUnknown_2022938 +_0801EAF8: .4byte gUnknown_82C5180 +_0801EAFC: + ldrb r1, [r5, #0x12] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0xb9 + adds r4, r5, r0 + adds r0, r4, #0 + bl sub_08008EB8 + adds r5, r0, #0 +_0801EB12: + ldr r6, _0801EB70 + ldr r1, [r6] + ldrb r0, [r1, #0x15] + strb r0, [r1, #0x14] + cmp r4, #0 + beq _0801EB6A + bl sub_0801EC94 + adds r2, r0, #0 + subs r5, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _0801EB66 + ldr r0, [r6] + ldrb r0, [r0, #0x15] + cmp r0, #0xe + bhi _0801EB66 + adds r3, r6, #0 +_0801EB38: + ldrb r0, [r4] + cmp r0, #0xf9 + bne _0801EB44 + strb r0, [r2] + adds r4, #1 + adds r2, #1 +_0801EB44: + ldrb r0, [r4] + strb r0, [r2] + adds r4, #1 + adds r2, #1 + ldr r1, [r3] + ldrb r0, [r1, #0x15] + adds r0, #1 + strb r0, [r1, #0x15] + subs r5, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _0801EB66 + ldr r0, [r3] + ldrb r0, [r0, #0x15] + cmp r0, #0xe + bls _0801EB38 +_0801EB66: + movs r0, #0xff + strb r0, [r2] +_0801EB6A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801EB70: .4byte gUnknown_2022938 + thumb_func_end sub_0801EAB8 + + thumb_func_start sub_0801EB74 +sub_0801EB74: @ 0x0801EB74 + push {r4, lr} + ldr r4, _0801EB9C + ldr r1, [r4] + ldrb r0, [r1, #0x15] + strb r0, [r1, #0x14] + ldr r0, [r4] + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _0801EB96 + bl sub_0801ECB8 + movs r1, #0xff + strb r1, [r0] + ldr r1, [r4] + ldrb r0, [r1, #0x15] + subs r0, #1 + strb r0, [r1, #0x15] +_0801EB96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801EB9C: .4byte gUnknown_2022938 + thumb_func_end sub_0801EB74 + + thumb_func_start sub_0801EBA0 +sub_0801EBA0: @ 0x0801EBA0 + push {lr} + ldr r0, _0801EBCC + ldr r1, [r0] + ldrb r0, [r1, #0x15] + subs r0, #1 + strb r0, [r1, #0x14] + bl sub_0801ECB8 + adds r2, r0, #0 + ldrb r0, [r2] + cmp r0, #0xf9 + beq _0801EBC8 + cmp r0, #0xee + bhi _0801EBC8 + ldr r1, _0801EBD0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0801EBC8 + strb r0, [r2] +_0801EBC8: + pop {r0} + bx r0 + .align 2, 0 +_0801EBCC: .4byte gUnknown_2022938 +_0801EBD0: .4byte gUnknown_82C5091 + thumb_func_end sub_0801EBA0 + + thumb_func_start sub_0801EBD4 +sub_0801EBD4: @ 0x0801EBD4 + push {lr} + ldr r0, _0801EBE4 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0801EBE8 + movs r0, #0 + b _0801EBEA + .align 2, 0 +_0801EBE4: .4byte gUnknown_2022938 +_0801EBE8: + movs r0, #1 +_0801EBEA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801EBD4 + + thumb_func_start sub_0801EBF0 +sub_0801EBF0: @ 0x0801EBF0 + push {r4, lr} + bl sub_0801EF14 + adds r1, r0, #0 + ldr r4, _0801EC1C + ldr r0, [r4] + ldrb r3, [r0, #0x12] + lsls r2, r3, #2 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r3 + adds r2, #0xb9 + adds r0, r0, r2 + bl sub_080088B8 + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #0x18] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801EC1C: .4byte gUnknown_2022938 + thumb_func_end sub_0801EBF0 + + thumb_func_start sub_0801EC20 +sub_0801EC20: @ 0x0801EC20 + ldr r1, _0801EC38 + 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 +_0801EC38: .4byte gUnknown_2022938 + thumb_func_end sub_0801EC20 + + thumb_func_start sub_0801EC3C +sub_0801EC3C: @ 0x0801EC3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0801EC70 + mov r8, r0 + ldr r7, _0801EC74 + movs r6, #0xb9 + ldr r5, _0801EC78 + movs r4, #9 +_0801EC4E: + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r5 + ldr r1, [r7] + adds r1, r1, r6 + bl sub_080088B8 + adds r6, #0x15 + adds r5, #0x15 + subs r4, #1 + cmp r4, #0 + bge _0801EC4E + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801EC70: .4byte gUnknown_3005AEC +_0801EC74: .4byte gUnknown_2022938 +_0801EC78: .4byte 0x00003C88 + thumb_func_end sub_0801EC3C + + thumb_func_start sub_0801EC7C +sub_0801EC7C: @ 0x0801EC7C + ldr r2, _0801EC90 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r0 + adds r1, #0xb9 + ldr r0, [r2] + adds r0, r0, r1 + bx lr + .align 2, 0 +_0801EC90: .4byte gUnknown_2022938 + thumb_func_end sub_0801EC7C + + thumb_func_start sub_0801EC94 +sub_0801EC94: @ 0x0801EC94 + push {lr} + ldr r0, _0801ECB4 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x1a + ldrb r0, [r0, #0x1a] + cmp r0, #0xff + beq _0801ECAC +_0801ECA4: + adds r1, #1 + ldrb r0, [r1] + cmp r0, #0xff + bne _0801ECA4 +_0801ECAC: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0801ECB4: .4byte gUnknown_2022938 + thumb_func_end sub_0801EC94 + + thumb_func_start sub_0801ECB8 +sub_0801ECB8: @ 0x0801ECB8 + push {lr} + ldr r0, _0801ECE4 + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0x1a + adds r1, r2, #0 + ldrb r0, [r0, #0x1a] + cmp r0, #0xff + beq _0801ECDC +_0801ECCA: + adds r2, r1, #0 + ldrb r0, [r2] + cmp r0, #0xf9 + bne _0801ECD4 + adds r1, r2, #1 +_0801ECD4: + adds r1, #1 + ldrb r0, [r1] + cmp r0, #0xff + bne _0801ECCA +_0801ECDC: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_0801ECE4: .4byte gUnknown_2022938 + thumb_func_end sub_0801ECB8 + + thumb_func_start sub_0801ECE8 +sub_0801ECE8: @ 0x0801ECE8 + push {r4, lr} + ldr r4, _0801ED28 + ldr r0, [r4] + adds r0, #0x1a + bl sub_08008EB8 + adds r2, r0, #0 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x1a + movs r4, #0 + cmp r2, #0xa + bls _0801ED1C + subs r2, #0xa + movs r3, #0 + cmp r4, r2 + bhs _0801ED1C +_0801ED0A: + ldrb r0, [r1] + cmp r0, #0xf9 + bne _0801ED12 + adds r1, #1 +_0801ED12: + adds r1, #1 + adds r4, #1 + adds r3, #1 + cmp r3, r2 + blo _0801ED0A +_0801ED1C: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801ED28: .4byte gUnknown_2022938 + thumb_func_end sub_0801ECE8 + + thumb_func_start sub_0801ED2C +sub_0801ED2C: @ 0x0801ED2C + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_0801ED2C + + thumb_func_start sub_0801ED34 +sub_0801ED34: @ 0x0801ED34 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4] + adds r0, r4, #1 + ldr r1, _0801ED54 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _0801ED58 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + strb r0, [r4, #9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801ED54: .4byte gUnknown_3005AF0 +_0801ED58: .4byte gUnknown_2022938 + thumb_func_end sub_0801ED34 + + thumb_func_start sub_0801ED5C +sub_0801ED5C: @ 0x0801ED5C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4] + adds r0, r4, #1 + ldr r1, _0801ED84 + ldr r1, [r1] + bl sub_080088B8 + adds r4, #9 + ldr r0, _0801ED88 + ldr r1, [r0] + adds r1, #0x1a + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801ED84: .4byte gUnknown_3005AF0 +_0801ED88: .4byte gUnknown_2022938 + thumb_func_end sub_0801ED5C + + thumb_func_start sub_0801ED8C +sub_0801ED8C: @ 0x0801ED8C + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4] + adds r0, r4, #1 + ldr r1, _0801EDB0 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _0801EDB4 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + strb r0, [r4, #9] + bl sub_08011540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801EDB0: .4byte gUnknown_3005AF0 +_0801EDB4: .4byte gUnknown_2022938 + thumb_func_end sub_0801ED8C + + thumb_func_start sub_0801EDB8 +sub_0801EDB8: @ 0x0801EDB8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + strb r0, [r4] + adds r0, r4, #1 + ldr r1, _0801EDD8 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _0801EDDC + ldr r0, [r0] + ldrb r0, [r0, #0x13] + strb r0, [r4, #9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801EDD8: .4byte gUnknown_3005AF0 +_0801EDDC: .4byte gUnknown_2022938 + thumb_func_end sub_0801EDB8 + + thumb_func_start sub_0801EDE0 +sub_0801EDE0: @ 0x0801EDE0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4] + adds r0, r4, #1 + ldr r1, _0801EE00 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _0801EE04 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + strb r0, [r4, #9] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801EE00: .4byte gUnknown_3005AF0 +_0801EE04: .4byte gUnknown_2022938 + thumb_func_end sub_0801EDE0 + + thumb_func_start sub_0801EE08 +sub_0801EE08: @ 0x0801EE08 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4] + adds r1, r0, #0 + adds r5, r4, #1 + adds r4, r5, #0 + adds r4, #8 + cmp r0, #2 + beq _0801EE30 + cmp r0, #2 + bgt _0801EE26 + cmp r0, #1 + beq _0801EE54 + b _0801EEA8 +_0801EE26: + cmp r1, #3 + beq _0801EE7C + cmp r1, #5 + beq _0801EE70 + b _0801EEA8 +_0801EE30: + ldr r0, _0801EE4C + ldr r0, [r0] + ldrb r0, [r0, #0x13] + ldrb r1, [r5, #8] + cmp r0, r1 + beq _0801EEA8 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r5, #0 + bl sub_081AF8E4 + ldr r1, _0801EE50 + b _0801EE96 + .align 2, 0 +_0801EE4C: .4byte gUnknown_2022938 +_0801EE50: .4byte gUnknown_85CC663 +_0801EE54: + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + movs r1, #0xf0 + strb r1, [r0] + adds r0, #1 + adds r1, r4, #0 + bl sub_080088B8 + movs r0, #1 + b _0801EEAA +_0801EE70: + ldr r0, _0801EEA0 + ldr r0, [r0] + adds r0, #0x79 + adds r1, r5, #0 + bl sub_080088B8 +_0801EE7C: + ldr r0, _0801EEA0 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + ldrb r4, [r4] + cmp r0, r4 + beq _0801EEA8 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r5, #0 + bl sub_081AF8E4 + ldr r1, _0801EEA4 +_0801EE96: + adds r0, r6, #0 + bl sub_081AF900 + movs r0, #1 + b _0801EEAA + .align 2, 0 +_0801EEA0: .4byte gUnknown_2022938 +_0801EEA4: .4byte gUnknown_85CC672 +_0801EEA8: + movs r0, #0 +_0801EEAA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0801EE08 + + thumb_func_start sub_0801EEB0 +sub_0801EEB0: @ 0x0801EEB0 + ldr r0, _0801EEB8 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + bx lr + .align 2, 0 +_0801EEB8: .4byte gUnknown_2022938 + thumb_func_end sub_0801EEB0 + + thumb_func_start sub_0801EEBC +sub_0801EEBC: @ 0x0801EEBC + ldr r2, _0801EECC + ldr r3, [r2] + ldrb r2, [r3, #0x11] + strb r2, [r0] + ldrb r0, [r3, #0x12] + strb r0, [r1] + bx lr + .align 2, 0 +_0801EECC: .4byte gUnknown_2022938 + thumb_func_end sub_0801EEBC + + thumb_func_start sub_0801EED0 +sub_0801EED0: @ 0x0801EED0 + ldr r0, _0801EED8 + ldr r0, [r0] + adds r0, #0x1a + bx lr + .align 2, 0 +_0801EED8: .4byte gUnknown_2022938 + thumb_func_end sub_0801EED0 + + thumb_func_start sub_0801EEDC +sub_0801EEDC: @ 0x0801EEDC + push {lr} + bl sub_0801EED0 + bl sub_08008EB8 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801EEDC + + thumb_func_start sub_0801EEEC +sub_0801EEEC: @ 0x0801EEEC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0801EF04 + ldr r0, [r0] + ldrb r3, [r0, #0x15] + ldrb r2, [r0, #0x14] + subs r0, r3, r2 + cmp r0, #0 + bge _0801EF08 + rsbs r0, r0, #0 + str r3, [r4] + b _0801EF0A + .align 2, 0 +_0801EF04: .4byte gUnknown_2022938 +_0801EF08: + str r2, [r4] +_0801EF0A: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801EEEC + + thumb_func_start sub_0801EF14 +sub_0801EF14: @ 0x0801EF14 + push {lr} + bl sub_0801ECE8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0801EF40 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x1a + cmp r2, #0 + beq _0801EF3A +_0801EF2A: + ldrb r0, [r1] + cmp r0, #0xf9 + bne _0801EF32 + adds r1, #1 +_0801EF32: + adds r1, #1 + subs r2, #1 + cmp r2, #0 + bne _0801EF2A +_0801EF3A: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0801EF40: .4byte gUnknown_2022938 + thumb_func_end sub_0801EF14 + + thumb_func_start sub_0801EF44 +sub_0801EF44: @ 0x0801EF44 + push {r4, lr} + bl sub_0801ECE8 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0801EF7C + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x1a + movs r2, #0 + movs r3, #0 + cmp r2, r4 + bhs _0801EF74 +_0801EF5E: + ldrb r0, [r1] + cmp r0, #0xf9 + bne _0801EF66 + adds r1, #1 +_0801EF66: + adds r1, #1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r3, #1 + cmp r3, r4 + blo _0801EF5E +_0801EF74: + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801EF7C: .4byte gUnknown_2022938 + thumb_func_end sub_0801EF44 + + thumb_func_start sub_0801EF80 +sub_0801EF80: @ 0x0801EF80 + ldr r0, _0801EF88 + ldr r0, [r0] + adds r0, #0x39 + bx lr + .align 2, 0 +_0801EF88: .4byte gUnknown_2022938 + thumb_func_end sub_0801EF80 + + thumb_func_start sub_0801EF8C +sub_0801EF8C: @ 0x0801EF8C + ldr r0, _0801EF94 + ldr r0, [r0] + ldrb r0, [r0, #0x16] + bx lr + .align 2, 0 +_0801EF94: .4byte gUnknown_2022938 + thumb_func_end sub_0801EF8C + + thumb_func_start sub_0801EF98 +sub_0801EF98: @ 0x0801EF98 + ldr r0, _0801EFA0 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + bx lr + .align 2, 0 +_0801EFA0: .4byte gUnknown_2022938 + thumb_func_end sub_0801EF98 + + thumb_func_start sub_0801EFA4 +sub_0801EFA4: @ 0x0801EFA4 + push {lr} + bl sub_0801ECB8 + ldrb r1, [r0] + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x4f + bhi _0801EFBA + movs r0, #0 + b _0801EFDC +_0801EFBA: + adds r0, r1, #0 + subs r0, #0x51 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x4f + bhi _0801EFCA + movs r0, #1 + b _0801EFDC +_0801EFCA: + adds r0, r1, #0 + adds r0, #0x45 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x33 + bls _0801EFDA + movs r0, #3 + b _0801EFDC +_0801EFDA: + movs r0, #2 +_0801EFDC: + pop {r1} + bx r1 + thumb_func_end sub_0801EFA4 + + thumb_func_start sub_0801EFE0 +sub_0801EFE0: @ 0x0801EFE0 + ldr r0, _0801EFE8 + ldr r0, [r0] + adds r0, #0x79 + bx lr + .align 2, 0 +_0801EFE8: .4byte gUnknown_2022938 + thumb_func_end sub_0801EFE0 + + thumb_func_start sub_0801EFEC +sub_0801EFEC: @ 0x0801EFEC + push {r4, lr} + ldr r4, _0801F070 + ldr r0, [r4] + ldr r1, _0801F074 + adds r0, r0, r1 + ldr r1, _0801F078 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F07C + adds r0, r0, r1 + ldr r1, _0801F080 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F084 + adds r0, r0, r1 + ldr r1, _0801F088 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F08C + adds r0, r0, r1 + ldr r1, _0801F090 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F094 + adds r0, r0, r1 + ldr r1, _0801F098 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F09C + adds r0, r0, r1 + ldr r1, _0801F0A0 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F0A4 + adds r0, r0, r1 + ldr r1, _0801F0A8 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F0AC + adds r0, r0, r1 + ldr r1, _0801F0B0 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F0B4 + adds r0, r0, r1 + ldr r1, _0801F0B8 + bl sub_080088B8 + ldr r0, [r4] + ldr r1, _0801F0BC + adds r0, r0, r1 + ldr r1, _0801F0C0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801F070: .4byte gUnknown_3005AEC +_0801F074: .4byte 0x00003C88 +_0801F078: .4byte gUnknown_85CC769 +_0801F07C: .4byte 0x00003C9D +_0801F080: .4byte gUnknown_85CC76F +_0801F084: .4byte 0x00003CB2 +_0801F088: .4byte gUnknown_85CC774 +_0801F08C: .4byte 0x00003CC7 +_0801F090: .4byte gUnknown_85CC779 +_0801F094: .4byte 0x00003CDC +_0801F098: .4byte gUnknown_85CC77E +_0801F09C: .4byte 0x00003CF1 +_0801F0A0: .4byte gUnknown_85CC783 +_0801F0A4: .4byte 0x00003D06 +_0801F0A8: .4byte gUnknown_85CC787 +_0801F0AC: .4byte 0x00003D1B +_0801F0B0: .4byte gUnknown_85CC78C +_0801F0B4: .4byte 0x00003D30 +_0801F0B8: .4byte gUnknown_85CC792 +_0801F0BC: .4byte 0x00003D45 +_0801F0C0: .4byte gUnknown_85CC798 + thumb_func_end sub_0801EFEC + + thumb_func_start sub_0801F0C4 +sub_0801F0C4: @ 0x0801F0C4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0801F0E8 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #7 + bls _0801F0DE + b _0801F2D4 +_0801F0DE: + lsls r0, r0, #2 + ldr r1, _0801F0EC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801F0E8: .4byte gUnknown_3005B68 +_0801F0EC: .4byte _0801F0F0 +_0801F0F0: @ jump table + .4byte _0801F110 @ case 0 + .4byte _0801F11E @ case 1 + .4byte _0801F2B8 @ case 2 + .4byte _0801F16C @ case 3 + .4byte _0801F258 @ case 4 + .4byte _0801F290 @ case 5 + .4byte _0801F2A4 @ case 6 + .4byte _0801F248 @ case 7 +_0801F110: + ldr r0, _0801F144 + ldrb r0, [r0] + cmp r0, #0 + bne _0801F11A + b _0801F2AC +_0801F11A: + movs r0, #1 + strh r0, [r4] +_0801F11E: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + strh r0, [r4, #8] + ldr r3, _0801F148 + ldr r0, [r3] + ldrb r1, [r0, #0xd] + movs r5, #8 + ldrsh r0, [r4, r5] + cmp r1, r0 + beq _0801F14C + movs r0, #2 + strh r0, [r4] + ldr r0, [r3] + strb r2, [r0, #0xd] + b _0801F2D4 + .align 2, 0 +_0801F144: .4byte gUnknown_30031C4 +_0801F148: .4byte gUnknown_2022938 +_0801F14C: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #6] + cmp r0, #0 + bne _0801F164 + bl sub_0801158C + cmp r0, #0 + beq _0801F164 + b _0801F2D4 +_0801F164: + movs r0, #0 + strh r0, [r4, #2] + movs r0, #3 + strh r0, [r4] +_0801F16C: + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #4 + bgt _0801F1A6 + movs r2, #6 + ldrsh r0, [r4, r2] + movs r3, #2 + ldrsh r1, [r4, r3] + asrs r0, r1 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0801F1A6 + movs r2, #1 +_0801F188: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bgt _0801F1A6 + movs r5, #6 + ldrsh r0, [r4, r5] + movs r3, #2 + ldrsh r1, [r4, r3] + asrs r0, r1 + ands r0, r2 + cmp r0, #0 + beq _0801F188 +_0801F1A6: + ldrh r1, [r4, #2] + movs r5, #2 + ldrsh r0, [r4, r5] + cmp r0, #5 + bne _0801F1B2 + b _0801F2D0 +_0801F1B2: + strh r1, [r4, #4] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A1B0 + movs r1, #2 + ldrsh r0, [r4, r1] + lsls r0, r0, #8 + ldr r1, _0801F1D8 + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #4 + bhi _0801F1F4 + lsls r0, r0, #2 + ldr r1, _0801F1DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801F1D8: .4byte gUnknown_202207C +_0801F1DC: .4byte _0801F1E0 +_0801F1E0: @ jump table + .4byte _0801F1F4 @ case 0 + .4byte _0801F1F8 @ case 1 + .4byte _0801F1FC @ case 2 + .4byte _0801F200 @ case 3 + .4byte _0801F204 @ case 4 +_0801F1F4: + movs r0, #3 + b _0801F206 +_0801F1F8: + movs r0, #3 + b _0801F206 +_0801F1FC: + movs r0, #4 + b _0801F206 +_0801F200: + movs r0, #5 + b _0801F206 +_0801F204: + movs r0, #6 +_0801F206: + strh r0, [r4, #0xa] + ldr r5, _0801F234 + ldr r0, [r5] + adds r0, #0x39 + movs r2, #2 + ldrsh r1, [r4, r2] + lsls r1, r1, #8 + ldr r2, _0801F238 + adds r1, r1, r2 + bl sub_0801EE08 + cmp r0, #0 + beq _0801F23C + ldr r0, [r5] + ldrh r1, [r4, #2] + strb r1, [r0, #0x16] + movs r0, #0xc + movs r1, #2 + bl sub_0801F3FC + movs r0, #7 + b _0801F23E + .align 2, 0 +_0801F234: .4byte gUnknown_2022938 +_0801F238: .4byte gUnknown_202207C +_0801F23C: + ldrh r0, [r4, #0xa] +_0801F23E: + strh r0, [r4] + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + b _0801F2D4 +_0801F248: + movs r0, #2 + bl sub_0801F454 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F2D4 + ldrh r0, [r4, #0xa] + b _0801F2D2 +_0801F258: + ldr r6, _0801F280 + ldr r0, [r6] + ldrb r0, [r0, #0x13] + cmp r0, #0 + bne _0801F28C + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0801F28C + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0801F284 + bl sub_0800FFB0 + ldr r1, [r6] + movs r0, #1 + b _0801F2AA + .align 2, 0 +_0801F280: .4byte gUnknown_2022938 +_0801F284: + movs r5, #4 + ldrsh r0, [r4, r5] + bl sub_080118CC +_0801F28C: + movs r0, #3 + b _0801F2D2 +_0801F290: + ldr r0, _0801F2A0 + ldr r1, [r0] + ldrb r0, [r1, #0x13] + cmp r0, #0 + beq _0801F2AC + movs r0, #2 + b _0801F2AA + .align 2, 0 +_0801F2A0: .4byte gUnknown_2022938 +_0801F2A4: + ldr r0, _0801F2B4 + ldr r1, [r0] + movs r0, #3 +_0801F2AA: + strb r0, [r1, #0x17] +_0801F2AC: + adds r0, r5, #0 + bl sub_080A8964 + b _0801F2D4 + .align 2, 0 +_0801F2B4: .4byte gUnknown_2022938 +_0801F2B8: + bl sub_0801158C + cmp r0, #0 + bne _0801F2D4 + ldr r0, _0801F2DC + ldr r1, [r0] + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _0801F2D0 + ldrb r0, [r1, #0xd] + bl sub_08010BA8 +_0801F2D0: + movs r0, #1 +_0801F2D2: + strh r0, [r4] +_0801F2D4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801F2DC: .4byte gUnknown_2022938 + thumb_func_end sub_0801F0C4 + + thumb_func_start sub_0801F2E0 +sub_0801F2E0: @ 0x0801F2E0 + push {r4, lr} + ldr r4, _0801F32C + ldr r0, _0801F330 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + beq _0801F33C + bl sub_080205AC + cmp r0, #0 + beq _0801F33C + movs r0, #0 + bl sub_080017D4 + ldr r1, _0801F334 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _0801F338 + bl sub_08003090 + bl sub_081996B8 + bl sub_0802048C + ldr r0, [r4] + bl sub_0801F384 + bl sub_0801F390 + movs r0, #0 + movs r1, #0 + bl sub_0801F3FC + movs r0, #1 + b _0801F33E + .align 2, 0 +_0801F32C: .4byte gUnknown_202293C +_0801F330: .4byte 0x00002168 +_0801F334: .4byte gUnknown_82C56F4 +_0801F338: .4byte gUnknown_82C5704 +_0801F33C: + movs r0, #0 +_0801F33E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801F2E0 + + thumb_func_start sub_0801F344 +sub_0801F344: @ 0x0801F344 + push {lr} + movs r0, #0 + bl sub_0801F454 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0801F344 + + thumb_func_start sub_0801F354 +sub_0801F354: @ 0x0801F354 + push {r4, lr} + bl sub_080205EC + ldr r4, _0801F37C + ldr r0, [r4] + cmp r0, #0 + beq _0801F36A + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0801F36A: + bl sub_080034D4 + ldr r1, _0801F380 + movs r0, #3 + strb r0, [r1, #0x15] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801F37C: .4byte gUnknown_202293C +_0801F380: .4byte gUnknown_20397C8 + thumb_func_end sub_0801F354 + + thumb_func_start sub_0801F384 +sub_0801F384: @ 0x0801F384 + movs r2, #0 + movs r1, #0xff + strh r1, [r0, #0x18] + strh r1, [r0, #0x1e] + strh r2, [r0, #0x1a] + bx lr + thumb_func_end sub_0801F384 + + thumb_func_start sub_0801F390 +sub_0801F390: @ 0x0801F390 + push {r4, r5, lr} + ldr r1, _0801F3C0 + ldr r0, [r1] + cmp r0, #0 + beq _0801F3B8 + movs r2, #0 + adds r4, r1, #0 + ldr r5, _0801F3C4 + movs r3, #0 +_0801F3A2: + ldr r0, [r4] + lsls r1, r2, #3 + adds r0, r0, r1 + str r5, [r0] + strb r3, [r0, #4] + ldr r0, [r4] + adds r0, r0, r1 + strb r3, [r0, #5] + adds r2, #1 + cmp r2, #2 + ble _0801F3A2 +_0801F3B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0801F3C0: .4byte gUnknown_202293C +_0801F3C4: .4byte sub_0801FBE8 + thumb_func_end sub_0801F390 + + thumb_func_start sub_0801F3C8 +sub_0801F3C8: @ 0x0801F3C8 + push {r4, r5, r6, lr} + ldr r1, _0801F3F8 + ldr r0, [r1] + cmp r0, #0 + beq _0801F3F0 + movs r5, #0 + adds r6, r1, #0 +_0801F3D6: + ldr r1, [r6] + lsls r4, r5, #3 + adds r1, r1, r4 + adds r0, r1, #5 + ldr r1, [r1] + bl _call_via_r1 + ldr r1, [r6] + adds r1, r1, r4 + strb r0, [r1, #4] + adds r5, #1 + cmp r5, #2 + ble _0801F3D6 +_0801F3F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0801F3F8: .4byte gUnknown_202293C + thumb_func_end sub_0801F3C8 + + thumb_func_start sub_0801F3FC +sub_0801F3FC: @ 0x0801F3FC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + ldr r3, _0801F438 + ldr r0, [r3] + lsrs r1, r1, #0x15 + adds r0, r0, r1 + ldr r2, _0801F43C + str r2, [r0] + movs r4, #0 + adds r5, r3, #0 + adds r3, r1, #0 + mov ip, r4 + ldr r1, _0801F440 + movs r7, #1 + adds r2, r1, #4 +_0801F41E: + ldrh r0, [r1] + cmp r0, r6 + bne _0801F444 + ldr r1, [r5] + adds r1, r1, r3 + ldr r0, [r2] + str r0, [r1] + strb r7, [r1, #4] + ldr r0, [r5] + adds r0, r0, r3 + mov r1, ip + strb r1, [r0, #5] + b _0801F44E + .align 2, 0 +_0801F438: .4byte gUnknown_202293C +_0801F43C: .4byte sub_0801FBE8 +_0801F440: .4byte gUnknown_82C572C +_0801F444: + adds r1, #8 + adds r2, #8 + adds r4, #1 + cmp r4, #0x14 + bls _0801F41E +_0801F44E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0801F3FC + + thumb_func_start sub_0801F454 +sub_0801F454: @ 0x0801F454 + lsls r0, r0, #0x18 + ldr r1, _0801F464 + ldr r1, [r1] + lsrs r0, r0, #0x15 + adds r1, r1, r0 + ldrb r0, [r1, #4] + bx lr + .align 2, 0 +_0801F464: .4byte gUnknown_202293C + thumb_func_end sub_0801F454 + + thumb_func_start sub_0801F468 +sub_0801F468: @ 0x0801F468 + push {r4, lr} + adds r4, r0, #0 + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0801F4FE + ldrb r0, [r4] + cmp r0, #6 + bhi _0801F4F4 + lsls r0, r0, #2 + ldr r1, _0801F488 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801F488: .4byte _0801F48C +_0801F48C: @ jump table + .4byte _0801F4A8 @ case 0 + .4byte _0801F4B2 @ case 1 + .4byte _0801F4B8 @ case 2 + .4byte _0801F4BE @ case 3 + .4byte _0801F4C4 @ case 4 + .4byte _0801F4CA @ case 5 + .4byte _0801F4DC @ case 6 +_0801F4A8: + bl sub_0802019C + bl sub_08020254 + b _0801F4F8 +_0801F4B2: + bl sub_080202A0 + b _0801F4F8 +_0801F4B8: + bl sub_080202D0 + b _0801F4F8 +_0801F4BE: + bl sub_08020320 + b _0801F4F8 +_0801F4C4: + bl sub_0802039C + b _0801F4F8 +_0801F4CA: + bl sub_080203C0 + bl sub_080203EC + bl sub_0802045C + bl sub_08020404 + b _0801F4F8 +_0801F4DC: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F4F8 + bl sub_08020604 + bl sub_08020780 + bl sub_08020838 + b _0801F4F8 +_0801F4F4: + movs r0, #0 + b _0801F500 +_0801F4F8: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_0801F4FE: + movs r0, #1 +_0801F500: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F468 + + thumb_func_start sub_0801F508 +sub_0801F508: @ 0x0801F508 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F518 + cmp r0, #1 + beq _0801F526 + b _0801F530 +_0801F518: + bl sub_080200D8 + movs r0, #3 + movs r1, #3 + bl sub_08003528 + b _0801F530 +_0801F526: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801F538 +_0801F530: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #1 +_0801F538: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F508 + + thumb_func_start sub_0801F540 +sub_0801F540: @ 0x0801F540 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F550 + cmp r0, #1 + beq _0801F55E + b _0801F568 +_0801F550: + bl sub_0802012C + movs r0, #3 + movs r1, #3 + bl sub_08003528 + b _0801F568 +_0801F55E: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801F570 +_0801F568: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #1 +_0801F570: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F540 + + thumb_func_start sub_0801F578 +sub_0801F578: @ 0x0801F578 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #1 + beq _0801F5AE + cmp r0, #1 + bgt _0801F58C + cmp r0, #0 + beq _0801F592 + b _0801F5D4 +_0801F58C: + cmp r0, #2 + beq _0801F5BA + b _0801F5D4 +_0801F592: + movs r0, #1 + bl sub_08020638 + bl sub_08020048 + cmp r0, #0 + bne _0801F5DA + bl sub_0801FF88 + movs r0, #2 + movs r1, #2 + bl sub_08003528 + b _0801F5D4 +_0801F5AE: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0801F5D4 + b _0801F5DA +_0801F5BA: + bl sub_08020090 + cmp r0, #0 + bne _0801F5DA + bl sub_08020658 + movs r0, #0 + bl sub_08020638 + bl sub_08020898 + movs r0, #0 + b _0801F5DC +_0801F5D4: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_0801F5DA: + movs r0, #1 +_0801F5DC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F578 + + thumb_func_start sub_0801F5E4 +sub_0801F5E4: @ 0x0801F5E4 + push {lr} + bl sub_08020658 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0801F5E4 + + thumb_func_start sub_0801F5F0 +sub_0801F5F0: @ 0x0801F5F0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F600 + cmp r0, #1 + beq _0801F624 + b _0801F62E +_0801F600: + movs r0, #0 + movs r1, #0 + bl sub_0801FD40 + movs r0, #0x17 + movs r1, #0xb + movs r2, #1 + bl sub_0801FBEC + ldr r0, _0801F620 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + b _0801F62E + .align 2, 0 +_0801F620: .4byte gUnknown_202293C +_0801F624: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801F636 +_0801F62E: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #1 +_0801F636: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801F5F0 + + thumb_func_start sub_0801F63C +sub_0801F63C: @ 0x0801F63C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F64C + cmp r0, #1 + beq _0801F65C + b _0801F672 +_0801F64C: + bl sub_0801FEBC + bl sub_0801FCE4 + movs r0, #0 + bl sub_08002248 + b _0801F672 +_0801F65C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F678 + bl sub_0801FEF0 + bl sub_0801FD0C + movs r0, #0 + b _0801F67A +_0801F672: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_0801F678: + movs r0, #1 +_0801F67A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801F63C + + thumb_func_start sub_0801F680 +sub_0801F680: @ 0x0801F680 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F692 + cmp r0, #1 + beq _0801F6CA + b _0801F6DC +_0801F692: + add r1, sp, #8 + add r0, sp, #4 + bl sub_0801EEEC + ldr r0, [sp, #4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #8] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r2, #0 + bl sub_0801FF14 + bl sub_0801EED0 + adds r1, r0, #0 + movs r0, #2 + str r0, [sp] + movs r0, #0 + movs r2, #3 + movs r3, #1 + bl sub_0801FF40 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _0801F6DC +_0801F6CA: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F6E2 + bl sub_08020898 + movs r0, #0 + b _0801F6E4 +_0801F6DC: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_0801F6E2: + movs r0, #1 +_0801F6E4: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0801F680 + + thumb_func_start sub_0801F6EC +sub_0801F6EC: @ 0x0801F6EC + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldrb r0, [r6] + cmp r0, #1 + beq _0801F748 + cmp r0, #1 + bgt _0801F702 + cmp r0, #0 + beq _0801F70C + b _0801F782 +_0801F702: + cmp r0, #2 + beq _0801F76C + cmp r0, #3 + beq _0801F77E + b _0801F782 +_0801F70C: + bl sub_0801EF44 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0801EF14 + adds r5, r0, #0 + bl sub_08008EB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x66 + bl sub_0801FF14 + movs r0, #5 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #4 + bl sub_0801FF40 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _0801F782 +_0801F748: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F788 + movs r0, #1 + movs r1, #0x10 + bl sub_0801FD40 + ldr r0, _0801F768 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + b _0801F782 + .align 2, 0 +_0801F768: .4byte gUnknown_202293C +_0801F76C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F788 + movs r0, #1 + bl sub_080206C4 + b _0801F782 +_0801F77E: + movs r0, #0 + b _0801F78A +_0801F782: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_0801F788: + movs r0, #1 +_0801F78A: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F6EC + + thumb_func_start sub_0801F794 +sub_0801F794: @ 0x0801F794 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldrb r0, [r6] + cmp r0, #1 + beq _0801F7F0 + cmp r0, #1 + bgt _0801F7AA + cmp r0, #0 + beq _0801F7B4 + b _0801F82A +_0801F7AA: + cmp r0, #2 + beq _0801F810 + cmp r0, #3 + beq _0801F826 + b _0801F82A +_0801F7B4: + bl sub_0801EF44 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0801EF14 + adds r5, r0, #0 + bl sub_08008EB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_0801FF14 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + movs r3, #1 + bl sub_0801FF40 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _0801F82A +_0801F7F0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F830 + bl sub_0801FEBC + ldr r0, _0801F80C + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + b _0801F82A + .align 2, 0 +_0801F80C: .4byte gUnknown_202293C +_0801F810: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F830 + movs r0, #0 + bl sub_080206C4 + bl sub_0801FEF0 + b _0801F82A +_0801F826: + movs r0, #0 + b _0801F832 +_0801F82A: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_0801F830: + movs r0, #1 +_0801F832: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F794 + + thumb_func_start sub_0801F83C +sub_0801F83C: @ 0x0801F83C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F84C + cmp r0, #1 + beq _0801F860 + b _0801F86E +_0801F84C: + bl sub_0801FF88 + movs r0, #2 + movs r1, #2 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801F86E +_0801F860: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F86E + movs r0, #0 + b _0801F870 +_0801F86E: + movs r0, #1 +_0801F870: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F83C + + thumb_func_start sub_0801F878 +sub_0801F878: @ 0x0801F878 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6] + cmp r0, #4 + bhi _0801F94A + lsls r0, r0, #2 + ldr r1, _0801F88C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801F88C: .4byte _0801F890 +_0801F890: @ jump table + .4byte _0801F8A4 @ case 0 + .4byte _0801F8D0 @ case 1 + .4byte _0801F900 @ case 2 + .4byte _0801F924 @ case 3 + .4byte _0801F8EE @ case 4 +_0801F8A4: + ldr r0, _0801F8CC + ldr r0, [r0] + ldrh r5, [r0, #0x1a] + bl sub_0801EF80 + adds r4, r0, #0 + bl sub_0801EF8C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08020140 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + b _0801F944 + .align 2, 0 +_0801F8CC: .4byte gUnknown_202293C +_0801F8D0: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0801F94A + ldr r0, _0801F8F4 + ldr r1, [r0] + ldrh r0, [r1, #0x1a] + cmp r0, #0xa + bhi _0801F8F8 + adds r0, #1 + strh r0, [r1, #0x1a] + movs r0, #4 + strb r0, [r6] +_0801F8EE: + movs r0, #0 + b _0801F94C + .align 2, 0 +_0801F8F4: .4byte gUnknown_202293C +_0801F8F8: + strh r2, [r1, #0x1c] + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_0801F900: + movs r0, #0 + movs r1, #0 + movs r2, #4 + movs r3, #0x11 + bl sub_08003B64 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + ldr r0, _0801F940 + ldr r1, [r0] + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_0801F924: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F94A + ldr r0, _0801F940 + ldr r0, [r0] + ldrh r0, [r0, #0x1c] + cmp r0, #2 + bhi _0801F944 + ldrb r0, [r6] + subs r0, #1 + b _0801F948 + .align 2, 0 +_0801F940: .4byte gUnknown_202293C +_0801F944: + ldrb r0, [r6] + adds r0, #1 +_0801F948: + strb r0, [r6] +_0801F94A: + movs r0, #1 +_0801F94C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F878 + + thumb_func_start sub_0801F954 +sub_0801F954: @ 0x0801F954 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F964 + cmp r0, #1 + beq _0801F970 + b _0801F976 +_0801F964: + bl sub_080206F8 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801F976 +_0801F970: + bl sub_08020734 + b _0801F978 +_0801F976: + movs r0, #1 +_0801F978: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F954 + + thumb_func_start sub_0801F980 +sub_0801F980: @ 0x0801F980 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F990 + cmp r0, #1 + beq _0801F9B0 + b _0801F9BA +_0801F990: + movs r0, #3 + movs r1, #0x10 + bl sub_0801FD40 + ldr r0, _0801F9AC + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801F9BA + .align 2, 0 +_0801F9AC: .4byte gUnknown_202293C +_0801F9B0: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801F9BC +_0801F9BA: + movs r0, #1 +_0801F9BC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F980 + + thumb_func_start sub_0801F9C4 +sub_0801F9C4: @ 0x0801F9C4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801F9D4 + cmp r0, #1 + beq _0801F9F4 + b _0801F9FE +_0801F9D4: + movs r0, #4 + movs r1, #0 + bl sub_0801FD40 + ldr r0, _0801F9F0 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801F9FE + .align 2, 0 +_0801F9F0: .4byte gUnknown_202293C +_0801F9F4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FA00 +_0801F9FE: + movs r0, #1 +_0801FA00: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801F9C4 + + thumb_func_start sub_0801FA08 +sub_0801FA08: @ 0x0801FA08 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FA18 + cmp r0, #1 + beq _0801FA48 + b _0801FA52 +_0801FA18: + bl sub_081AF8C8 + bl sub_0801EFE0 + adds r1, r0, #0 + movs r0, #0 + bl sub_081AF8E4 + movs r0, #5 + movs r1, #0 + bl sub_0801FD40 + ldr r0, _0801FA44 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FA52 + .align 2, 0 +_0801FA44: .4byte gUnknown_202293C +_0801FA48: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FA54 +_0801FA52: + movs r0, #1 +_0801FA54: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FA08 + + thumb_func_start sub_0801FA5C +sub_0801FA5C: @ 0x0801FA5C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FA6C + cmp r0, #1 + beq _0801FA98 + b _0801FAA2 +_0801FA6C: + movs r0, #6 + movs r1, #0 + bl sub_0801FD40 + movs r0, #0x17 + movs r1, #0xa + movs r2, #1 + bl sub_0801FBEC + ldr r0, _0801FA94 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FAA2 + .align 2, 0 +_0801FA94: .4byte gUnknown_202293C +_0801FA98: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FAA4 +_0801FAA2: + movs r0, #1 +_0801FAA4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FA5C + + thumb_func_start sub_0801FAAC +sub_0801FAAC: @ 0x0801FAAC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FABC + cmp r0, #1 + beq _0801FAE8 + b _0801FAF2 +_0801FABC: + movs r0, #7 + movs r1, #0 + bl sub_0801FD40 + movs r0, #0x17 + movs r1, #0xa + movs r2, #1 + bl sub_0801FBEC + ldr r0, _0801FAE4 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FAF2 + .align 2, 0 +_0801FAE4: .4byte gUnknown_202293C +_0801FAE8: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FAF4 +_0801FAF2: + movs r0, #1 +_0801FAF4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FAAC + + thumb_func_start sub_0801FAFC +sub_0801FAFC: @ 0x0801FAFC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FB0C + cmp r0, #1 + beq _0801FB2C + b _0801FB36 +_0801FB0C: + movs r0, #8 + movs r1, #0 + bl sub_0801FD40 + ldr r0, _0801FB28 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FB36 + .align 2, 0 +_0801FB28: .4byte gUnknown_202293C +_0801FB2C: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FB38 +_0801FB36: + movs r0, #1 +_0801FB38: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FAFC + + thumb_func_start sub_0801FB40 +sub_0801FB40: @ 0x0801FB40 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FB50 + cmp r0, #1 + beq _0801FB84 + b _0801FB8E +_0801FB50: + bl sub_081AF8C8 + ldr r0, _0801FB7C + ldr r1, [r0] + movs r0, #0 + bl sub_081AF8E4 + movs r0, #9 + movs r1, #0 + bl sub_0801FD40 + ldr r0, _0801FB80 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FB8E + .align 2, 0 +_0801FB7C: .4byte gUnknown_3005AF0 +_0801FB80: .4byte gUnknown_202293C +_0801FB84: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FB90 +_0801FB8E: + movs r0, #1 +_0801FB90: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FB40 + + thumb_func_start sub_0801FB98 +sub_0801FB98: @ 0x0801FB98 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0801FBA8 + cmp r0, #1 + beq _0801FBD4 + b _0801FBDE +_0801FBA8: + movs r0, #0xa + movs r1, #0 + bl sub_0801FD40 + movs r0, #0x17 + movs r1, #0xa + movs r2, #1 + bl sub_0801FBEC + ldr r0, _0801FBD0 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0801FBDE + .align 2, 0 +_0801FBD0: .4byte gUnknown_202293C +_0801FBD4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0801FBE0 +_0801FBDE: + movs r0, #1 +_0801FBE0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FB98 + + thumb_func_start sub_0801FBE8 +sub_0801FBE8: @ 0x0801FBE8 + movs r0, #0 + bx lr + thumb_func_end sub_0801FBE8 + + thumb_func_start sub_0801FBEC +sub_0801FBEC: @ 0x0801FBEC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r4, _0801FCC4 + ldr r2, [sp, #0xc] + ands r2, r4 + lsrs r0, r0, #0x10 + ldr r3, _0801FCC8 + ands r2, r3 + orrs r2, r0 + lsrs r1, r1, #8 + ldr r0, _0801FCCC + ands r2, r0 + orrs r2, r1 + ldr r0, _0801FCD0 + ands r2, r0 + movs r0, #0xc0 + lsls r0, r0, #0x13 + orrs r2, r0 + str r2, [sp, #0xc] + ldr r0, [sp, #0x10] + ands r0, r4 + movs r1, #4 + orrs r0, r1 + ands r0, r3 + movs r1, #0xe0 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _0801FCD4 + ands r0, r1 + movs r1, #0xb2 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [sp, #0x10] + add r0, sp, #0xc + bl sub_08003250 + adds r1, r0, #0 + ldr r6, _0801FCD8 + ldr r0, [r6] + movs r7, #0 + strh r1, [r0, #0x18] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + beq _0801FCB8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r6] + ldrb r0, [r0, #0x18] + bl sub_0800365C + ldr r0, [r6] + ldrb r0, [r0, #0x18] + ldr r2, _0801FCDC + movs r5, #2 + str r5, [sp] + movs r4, #0xff + str r4, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + movs r3, #0xa + bl sub_0800449C + ldr r0, [r6] + ldrb r0, [r0, #0x18] + ldr r2, _0801FCE0 + movs r1, #0x10 + str r1, [sp] + str r4, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + movs r3, #0xa + bl sub_0800449C + ldr r0, [r6] + ldrb r0, [r0, #0x18] + movs r1, #1 + movs r2, #0xd + bl sub_080981E0 + ldr r0, [r6] + ldrb r0, [r0, #0x18] + movs r1, #0xe + str r1, [sp] + str r5, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 +_0801FCB8: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801FCC4: .4byte 0xFFFFFF00 +_0801FCC8: .4byte 0xFFFF00FF +_0801FCCC: .4byte 0xFF00FFFF +_0801FCD0: .4byte 0x00FFFFFF +_0801FCD4: .4byte 0x0000FFFF +_0801FCD8: .4byte gUnknown_202293C +_0801FCDC: .4byte gUnknown_85CAAD8 +_0801FCE0: .4byte gUnknown_85CAADB + thumb_func_end sub_0801FBEC + + thumb_func_start sub_0801FCE4 +sub_0801FCE4: @ 0x0801FCE4 + push {r4, lr} + ldr r4, _0801FD08 + ldr r0, [r4] + ldrh r0, [r0, #0x18] + cmp r0, #0xff + beq _0801FD02 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08198134 + ldr r0, [r4] + ldrb r0, [r0, #0x18] + bl sub_08003774 +_0801FD02: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FD08: .4byte gUnknown_202293C + thumb_func_end sub_0801FCE4 + + thumb_func_start sub_0801FD0C +sub_0801FD0C: @ 0x0801FD0C + push {r4, lr} + ldr r4, _0801FD2C + ldr r0, [r4] + ldrh r0, [r0, #0x18] + cmp r0, #0xff + beq _0801FD26 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + ldr r1, [r4] + movs r0, #0xff + strh r0, [r1, #0x18] +_0801FD26: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FD2C: .4byte gUnknown_202293C + thumb_func_end sub_0801FD0C + + thumb_func_start sub_0801FD30 +sub_0801FD30: @ 0x0801FD30 + push {lr} + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0801FD30 + + thumb_func_start sub_0801FD40 +sub_0801FD40: @ 0x0801FD40 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x1c + adds r7, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + ldr r1, _0801FDEC + ldr r3, [sp, #0x14] + ands r3, r1 + ldr r2, _0801FDF0 + ands r3, r2 + movs r0, #0x80 + lsls r0, r0, #4 + orrs r3, r0 + ldr r0, _0801FDF4 + ands r3, r0 + movs r0, #0x80 + lsls r0, r0, #0xd + orrs r3, r0 + ldr r5, _0801FDF8 + ands r3, r5 + movs r0, #0xa8 + lsls r0, r0, #0x15 + orrs r3, r0 + str r3, [sp, #0x14] + ldr r0, [sp, #0x18] + ands r0, r1 + movs r1, #4 + orrs r0, r1 + ands r0, r2 + movs r1, #0xe0 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _0801FDFC + ands r0, r1 + movs r1, #0xe2 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [sp, #0x18] + ldr r1, _0801FE00 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0801FDC0 + lsls r0, r3, #0x10 + movs r1, #0xf9 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ands r2, r3 + orrs r2, r0 + lsrs r1, r2, #0x18 + adds r1, #7 + lsls r1, r1, #0x18 + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] +_0801FDC0: + add r0, sp, #0x14 + bl sub_08003250 + ldr r5, _0801FE04 + ldr r1, [r5] + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x1e] + mov r8, r0 + cmp r0, #0xff + beq _0801FEAA + ldrb r0, [r4, #9] + cmp r0, #0 + beq _0801FE08 + adds r0, r1, #0 + adds r0, #0x22 + ldr r1, [r4] + bl sub_081AF900 + ldr r0, [r5] + adds r6, r0, #0 + adds r6, #0x22 + b _0801FE0A + .align 2, 0 +_0801FDEC: .4byte 0xFFFFFF00 +_0801FDF0: .4byte 0xFFFF00FF +_0801FDF4: .4byte 0xFF00FFFF +_0801FDF8: .4byte 0x00FFFFFF +_0801FDFC: .4byte 0x0000FFFF +_0801FE00: .4byte gUnknown_82C57D4 +_0801FE04: .4byte gUnknown_202293C +_0801FE08: + ldr r6, [r4] +_0801FE0A: + mov r0, sb + lsls r1, r0, #8 + movs r0, #0 + movs r2, #0 + bl sub_08001E94 + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + ldr r1, _0801FE74 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r0, [r4, #4] + cmp r0, #1 + bne _0801FE78 + adds r0, r5, #0 + movs r1, #0xa + movs r2, #2 + bl sub_08098368 + ldrb r3, [r4, #5] + adds r3, #8 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4, #6] + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + ldrb r0, [r4, #7] + str r0, [sp, #0xc] + ldrb r0, [r4, #8] + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_08199C0C + b _0801FEA2 + .align 2, 0 +_0801FE74: .4byte gUnknown_82C57D4 +_0801FE78: + adds r0, r5, #0 + movs r1, #0xa + movs r2, #2 + bl sub_080981E0 + ldrb r3, [r4, #5] + ldrb r0, [r4, #6] + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + ldrb r0, [r4, #7] + str r0, [sp, #0xc] + ldrb r0, [r4, #8] + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_08199C0C +_0801FEA2: + ldr r0, _0801FEB8 + ldr r0, [r0] + mov r1, r8 + strh r1, [r0, #0x1e] +_0801FEAA: + add sp, #0x1c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0801FEB8: .4byte gUnknown_202293C + thumb_func_end sub_0801FD40 + + thumb_func_start sub_0801FEBC +sub_0801FEBC: @ 0x0801FEBC + push {r4, lr} + ldr r4, _0801FEEC + ldr r0, [r4] + ldrh r0, [r0, #0x1e] + cmp r0, #0xff + beq _0801FEDA + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08198134 + ldr r0, [r4] + ldrb r0, [r0, #0x1e] + bl sub_08003774 +_0801FEDA: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FEEC: .4byte gUnknown_202293C + thumb_func_end sub_0801FEBC + + thumb_func_start sub_0801FEF0 +sub_0801FEF0: @ 0x0801FEF0 + push {r4, lr} + ldr r4, _0801FF10 + ldr r0, [r4] + ldrh r0, [r0, #0x1e] + cmp r0, #0xff + beq _0801FF0A + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + ldr r1, [r4] + movs r0, #0xff + strh r0, [r1, #0x1e] +_0801FF0A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FF10: .4byte gUnknown_202293C + thumb_func_end sub_0801FEF0 + + thumb_func_start sub_0801FF14 +sub_0801FF14: @ 0x0801FF14 + push {lr} + sub sp, #8 + adds r3, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x13 + lsrs r3, r3, #0x10 + lsls r1, r1, #0x13 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r0, #0xe + str r0, [sp, #4] + movs r0, #1 + adds r1, r2, #0 + adds r2, r3, #0 + movs r3, #1 + bl sub_08003A34 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0801FF14 + + thumb_func_start sub_0801FF40 +sub_0801FF40: @ 0x0801FF40 + push {r4, r5, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, [sp, #0x1c] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + add r0, sp, #0xc + strb r2, [r0] + strb r3, [r0, #1] + strb r1, [r0, #2] + adds r0, r5, #0 + bl sub_08008EB8 + lsls r4, r4, #0x1b + lsrs r4, r4, #0x18 + add r0, sp, #0xc + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08199AFC + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0801FF40 + + thumb_func_start sub_0801FF88 +sub_0801FF88: @ 0x0801FF88 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + movs r0, #2 + movs r1, #0xff + bl sub_08003B18 + bl sub_0801EEB0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + add r1, sp, #0xc + movs r0, #0 + strb r0, [r1] + movs r0, #0xe + strb r0, [r1, #1] + movs r0, #0xd + strb r0, [r1, #2] + cmp r2, #4 + beq _0801FFF4 + movs r5, #0 + movs r6, #0 + lsls r0, r2, #2 + ldr r1, _0801FFF0 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 +_0801FFBC: + ldr r1, [r4] + cmp r1, #0 + beq _0802003A + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #6 + bl sub_08199AFC + adds r4, #4 + adds r5, #1 + adds r0, r6, #0 + adds r0, #0xb + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r5, #9 + ble _0801FFBC + b _0802003A + .align 2, 0 +_0801FFF0: .4byte gUnknown_82C5180 +_0801FFF4: + movs r5, #0 + movs r6, #0 + ldr r7, _08020044 +_0801FFFA: + ldr r4, [r7] + adds r4, #0x22 + adds r0, r5, #0 + bl sub_0801EC7C + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #5 + bl sub_08008E78 + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, [r7] + adds r0, #0x22 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #6 + bl sub_08199AFC + adds r5, #1 + adds r0, r6, #0 + adds r0, #0xb + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r5, #9 + ble _0801FFFA +_0802003A: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08020044: .4byte gUnknown_202293C + thumb_func_end sub_0801FF88 + + thumb_func_start sub_08020048 +sub_08020048: @ 0x08020048 + push {r4, lr} + ldr r1, _0802006C + ldr r2, [r1] + ldrh r3, [r2, #0x20] + movs r4, #0x20 + ldrsh r0, [r2, r4] + cmp r0, #0x37 + bgt _0802007C + adds r0, r3, #0 + adds r0, #0xc + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x37 + ble _08020070 + movs r0, #0x38 + strh r0, [r2, #0x20] + b _0802007C + .align 2, 0 +_0802006C: .4byte gUnknown_202293C +_08020070: + movs r1, #0x20 + ldrsh r0, [r2, r1] + bl sub_080204DC + movs r0, #1 + b _08020088 +_0802007C: + ldr r0, [r1] + movs r4, #0x20 + ldrsh r0, [r0, r4] + bl sub_08020534 + movs r0, #0 +_08020088: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08020048 + + thumb_func_start sub_08020090 +sub_08020090: @ 0x08020090 + push {r4, lr} + ldr r1, _080200B4 + ldr r2, [r1] + ldrh r3, [r2, #0x20] + movs r4, #0x20 + ldrsh r0, [r2, r4] + cmp r0, #0 + ble _080200C4 + adds r0, r3, #0 + subs r0, #0xc + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080200B8 + movs r0, #0 + strh r0, [r2, #0x20] + b _080200C4 + .align 2, 0 +_080200B4: .4byte gUnknown_202293C +_080200B8: + movs r1, #0x20 + ldrsh r0, [r2, r1] + bl sub_080204DC + movs r0, #1 + b _080200D0 +_080200C4: + ldr r0, [r1] + movs r4, #0x20 + ldrsh r0, [r0, r4] + bl sub_08020534 + movs r0, #0 +_080200D0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08020090 + + thumb_func_start sub_080200D8 +sub_080200D8: @ 0x080200D8 + push {lr} + sub sp, #0xc + movs r0, #3 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #3 + movs r1, #1 + movs r2, #0xd + bl sub_080981E0 + ldr r0, _08020128 + str r0, [sp] + movs r0, #3 + movs r1, #1 + movs r2, #0xd + movs r3, #6 + bl sub_08198964 + bl sub_0801EEB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xd + str r1, [sp] + movs r1, #6 + str r1, [sp, #4] + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_081984B0 + movs r0, #3 + bl sub_0800365C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08020128: .4byte gUnknown_82C5858 + thumb_func_end sub_080200D8 + + thumb_func_start sub_0802012C +sub_0802012C: @ 0x0802012C + push {lr} + movs r0, #3 + movs r1, #0 + bl sub_08198134 + movs r0, #3 + bl sub_08003774 + pop {r0} + bx r0 + thumb_func_end sub_0802012C + + thumb_func_start sub_08020140 +sub_08020140: @ 0x08020140 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x18 + add r3, sp, #0xc + movs r1, #1 + strb r1, [r3] + lsrs r2, r2, #0x17 + adds r1, r2, #2 + strb r1, [r3, #1] + adds r1, r3, #0 + adds r2, #3 + strb r2, [r1, #2] + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r3, r4, #0x12 + lsrs r3, r3, #0x10 + movs r0, #0xa8 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0 + bl sub_08003A34 + lsls r4, r4, #0x1a + lsrs r4, r4, #0x18 + add r0, sp, #0xc + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + adds r3, r4, #0 + bl sub_08199AFC + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08020140 + + thumb_func_start sub_0802019C +sub_0802019C: @ 0x0802019C + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r1, #0xe0 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001220 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + ldr r1, _08020250 + movs r0, #0x40 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0x90 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3d + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3f + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08020250: .4byte 0x000040F0 + thumb_func_end sub_0802019C + + thumb_func_start sub_08020254 +sub_08020254: @ 0x08020254 + push {r4, lr} + ldr r4, _08020290 + ldr r1, [r4] + movs r0, #0x94 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _08020294 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _08020298 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _0802029C + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020290: .4byte gUnknown_202293C +_08020294: .4byte 0x00000928 +_08020298: .4byte 0x00001128 +_0802029C: .4byte 0x00001928 + thumb_func_end sub_08020254 + + thumb_func_start sub_080202A0 +sub_080202A0: @ 0x080202A0 + push {lr} + sub sp, #8 + movs r1, #0xc0 + lsls r1, r1, #0x13 + movs r0, #0 + movs r2, #0x20 + movs r3, #1 + bl sub_08000F90 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_080202A0 + + thumb_func_start sub_080202D0 +sub_080202D0: @ 0x080202D0 + push {lr} + sub sp, #4 + ldr r0, _08020310 + movs r1, #0x70 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08020314 + movs r1, #0xc0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08020318 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _0802031C + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08020310: .4byte gUnknown_82C5220 +_08020314: .4byte gUnknown_82C5348 +_08020318: .4byte gUnknown_82C5240 +_0802031C: .4byte gUnknown_82C529C + thumb_func_end sub_080202D0 + + thumb_func_start sub_08020320 +sub_08020320: @ 0x08020320 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _08020384 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08020388 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r5, r0, #0 + cmp r5, #0 + beq _0802036A + movs r1, #0x88 + lsls r1, r1, #2 + adds r0, r5, r1 + ldr r4, _0802038C + ldr r1, [r4] + ldr r2, _08020390 + adds r1, r1, r2 + movs r2, #8 + bl CpuFastSet + movs r1, #0x84 + lsls r1, r1, #3 + adds r0, r5, r1 + ldr r1, [r4] + ldr r2, _08020394 + adds r1, r1, r2 + movs r2, #8 + bl CpuFastSet +_0802036A: + ldr r1, _08020398 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #2 + bl sub_08002248 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08020384: .4byte gUnknown_82C5368 +_08020388: .4byte gUnknown_82C5388 +_0802038C: .4byte gUnknown_202293C +_08020390: .4byte 0x00002128 +_08020394: .4byte 0x00002148 +_08020398: .4byte gUnknown_82C55BC + thumb_func_end sub_08020320 + + thumb_func_start sub_0802039C +sub_0802039C: @ 0x0802039C + push {lr} + ldr r0, _080203B8 + movs r1, #0x80 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080203BC + movs r0, #0 + movs r2, #0x20 + movs r3, #1 + bl sub_08000F90 + pop {r0} + bx r0 + .align 2, 0 +_080203B8: .4byte gUnknown_82C56B4 +_080203BC: .4byte 0x06004020 + thumb_func_end sub_0802039C + + thumb_func_start sub_080203C0 +sub_080203C0: @ 0x080203C0 + push {lr} + ldr r0, _080203E8 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #0 + movs r1, #3 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 +_080203E8: .4byte gUnknown_82C56D4 + thumb_func_end sub_080203C0 + + thumb_func_start sub_080203EC +sub_080203EC: @ 0x080203EC + push {lr} + movs r0, #2 + bl sub_0800365C + bl sub_0801FF88 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + pop {r0} + bx r0 + thumb_func_end sub_080203EC + + thumb_func_start sub_08020404 +sub_08020404: @ 0x08020404 + push {r4, lr} + sub sp, #0xc + add r1, sp, #8 + movs r0, #0 + strb r0, [r1] + movs r0, #0xff + strb r0, [r1, #1] + movs r4, #0 +_08020414: + ldr r0, _08020454 + ldr r1, [r0] + ldr r0, _08020458 + adds r1, r1, r0 + lsls r2, r4, #0x13 + lsrs r2, r2, #0x10 + movs r0, #8 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + movs r0, #1 + movs r3, #0 + bl sub_08003874 + adds r4, #1 + cmp r4, #0xe + ble _08020414 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020454: .4byte gUnknown_202293C +_08020458: .4byte 0x00002128 + thumb_func_end sub_08020404 + + thumb_func_start sub_0802045C +sub_0802045C: @ 0x0802045C + push {lr} + movs r0, #3 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #3 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #3 + movs r1, #0xa + movs r2, #0x20 + bl sub_08098144 + ldr r0, _08020488 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_08020488: .4byte gUnknown_85D7B04 + thumb_func_end sub_0802045C + + thumb_func_start sub_0802048C +sub_0802048C: @ 0x0802048C + push {lr} + sub sp, #0x10 + ldr r0, _080204C8 + str r0, [sp, #4] + ldr r0, _080204CC + str r0, [sp] + mov r2, sp + movs r1, #0 + movs r0, #1 + strb r0, [r2, #8] + mov r0, sp + strb r1, [r0, #9] + ldr r0, _080204D0 + ldr r0, [r0] + strh r1, [r0, #0x20] + str r1, [sp, #0xc] + add r0, sp, #0xc + ldr r1, _080204D4 + ldr r2, _080204D8 + bl CpuFastSet + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_080204C8: .4byte 0xA2600001 +_080204CC: .4byte 0x04000014 +_080204D0: .4byte gUnknown_202293C +_080204D4: .4byte gUnknown_20388C8 +_080204D8: .4byte 0x010003C0 + thumb_func_end sub_0802048C + + thumb_func_start sub_080204DC +sub_080204DC: @ 0x080204DC + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + strh r0, [r1] + ldr r5, _08020524 + ldrb r0, [r5, #0x14] + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #7 + ldr r4, _08020528 + adds r1, r1, r4 + ldr r2, _0802052C + mov r0, sp + bl CpuSet + mov r0, sp + adds r0, #2 + movs r1, #0 + strh r1, [r0] + ldrb r2, [r5, #0x14] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #7 + movs r2, #0x90 + lsls r2, r2, #1 + adds r4, r4, r2 + adds r1, r1, r4 + ldr r2, _08020530 + bl CpuSet + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08020524: .4byte gUnknown_20397C8 +_08020528: .4byte gUnknown_20388C8 +_0802052C: .4byte 0x01000090 +_08020530: .4byte 0x01000010 + thumb_func_end sub_080204DC + + thumb_func_start sub_08020534 +sub_08020534: @ 0x08020534 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sp + strh r4, [r0] + ldr r5, _080205A0 + ldr r0, _080205A4 + mov sb, r0 + mov r0, sp + adds r1, r5, #0 + mov r2, sb + bl CpuSet + mov r0, sp + adds r0, #2 + movs r6, #0 + strh r6, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + adds r1, r5, r2 + ldr r2, _080205A8 + mov r8, r2 + bl CpuSet + add r0, sp, #4 + strh r4, [r0] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r5, r2 + mov r2, sb + bl CpuSet + mov r0, sp + adds r0, #6 + strh r6, [r0] + movs r1, #0x8a + lsls r1, r1, #4 + adds r5, r5, r1 + adds r1, r5, #0 + mov r2, r8 + bl CpuSet + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080205A0: .4byte gUnknown_20388C8 +_080205A4: .4byte 0x01000090 +_080205A8: .4byte 0x01000010 + thumb_func_end sub_08020534 + + thumb_func_start sub_080205AC +sub_080205AC: @ 0x080205AC + push {r4, r5, lr} + movs r5, #0 + ldr r4, _080205D8 +_080205B2: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #4 + bls _080205B2 + ldr r0, _080205DC + bl sub_0800845C + ldr r4, _080205E0 + movs r0, #0x18 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + beq _080205E4 + movs r0, #1 + b _080205E6 + .align 2, 0 +_080205D8: .4byte gUnknown_82C5D4C +_080205DC: .4byte gUnknown_82C5D74 +_080205E0: .4byte gUnknown_2022940 +_080205E4: + movs r0, #0 +_080205E6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080205AC + + thumb_func_start sub_080205EC +sub_080205EC: @ 0x080205EC + push {lr} + ldr r0, _08020600 + ldr r0, [r0] + cmp r0, #0 + beq _080205FA + bl sub_08000BF0 +_080205FA: + pop {r0} + bx r0 + .align 2, 0 +_08020600: .4byte gUnknown_2022940 + thumb_func_end sub_080205EC + + thumb_func_start sub_08020604 +sub_08020604: @ 0x08020604 + push {lr} + ldr r0, _0802062C + movs r1, #0xa + movs r2, #0x18 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08020630 + ldr r2, [r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08020634 + adds r1, r1, r0 + str r1, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0802062C: .4byte gUnknown_82C5DB4 +_08020630: .4byte gUnknown_2022940 +_08020634: .4byte gUnknown_20205AC + thumb_func_end sub_08020604 + + thumb_func_start sub_08020638 +sub_08020638: @ 0x08020638 + ldr r1, _08020654 + ldr r1, [r1] + ldr r2, [r1] + adds r2, #0x3e + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + ldrb r3, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08020654: .4byte gUnknown_2022940 + thumb_func_end sub_08020638 + + thumb_func_start sub_08020658 +sub_08020658: @ 0x08020658 + push {r4, r5, lr} + sub sp, #4 + bl sub_0801EEB0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r5, sp + adds r5, #1 + mov r0, sp + adds r1, r5, #0 + bl sub_0801EEBC + cmp r4, #4 + beq _08020698 + ldr r4, _08020694 + ldr r0, [r4] + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + ldr r1, [r4] + ldr r2, [r1] + mov r0, sp + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, #0xa + strh r0, [r2, #0x20] + ldr r2, [r1] + b _080206AE + .align 2, 0 +_08020694: .4byte gUnknown_2022940 +_08020698: + ldr r4, _080206C0 + ldr r0, [r4] + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + ldr r2, [r4] + ldr r1, [r2] + movs r0, #0x18 + strh r0, [r1, #0x20] + ldr r2, [r2] +_080206AE: + ldrb r1, [r5] + movs r0, #0xb + muls r0, r1, r0 + adds r0, #0x18 + strh r0, [r2, #0x22] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080206C0: .4byte gUnknown_2022940 + thumb_func_end sub_08020658 + + thumb_func_start sub_080206C4 +sub_080206C4: @ 0x080206C4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #2 + ldr r0, _080206F0 + adds r4, r4, r0 + movs r0, #0 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + ldr r0, _080206F4 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #4 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080206F0: .4byte gUnknown_82C588A +_080206F4: .4byte 0x01010000 + thumb_func_end sub_080206C4 + + thumb_func_start sub_080206F8 +sub_080206F8: @ 0x080206F8 + push {lr} + bl sub_0801EEB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _08020718 + ldr r0, _08020714 + ldr r0, [r0] + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + b _08020724 + .align 2, 0 +_08020714: .4byte gUnknown_2022940 +_08020718: + ldr r0, _08020730 + ldr r0, [r0] + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 +_08020724: + ldr r0, _08020730 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #0x14] + pop {r0} + bx r0 + .align 2, 0 +_08020730: .4byte gUnknown_2022940 + thumb_func_end sub_080206F8 + + thumb_func_start sub_08020734 +sub_08020734: @ 0x08020734 + push {r4, lr} + ldr r4, _08020744 + ldr r1, [r4] + ldrh r0, [r1, #0x14] + cmp r0, #3 + bls _08020748 +_08020740: + movs r0, #0 + b _0802077A + .align 2, 0 +_08020744: .4byte gUnknown_2022940 +_08020748: + adds r0, #1 + strh r0, [r1, #0x14] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _08020778 + bl sub_0801EEB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _0802076C + ldr r0, [r4] + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + b _08020740 +_0802076C: + ldr r0, [r4] + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + b _08020740 +_08020778: + movs r0, #1 +_0802077A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08020734 + + thumb_func_start sub_08020780 +sub_08020780: @ 0x08020780 + push {r4, r5, lr} + ldr r0, _080207C4 + movs r1, #0x4c + movs r2, #0x98 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080207C8 + ldr r2, [r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r4, _080207CC + adds r1, r1, r4 + str r1, [r2, #8] + ldr r0, _080207D0 + movs r1, #0x40 + movs r2, #0x98 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + str r1, [r2, #4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080207C4: .4byte gUnknown_82C5DD4 +_080207C8: .4byte gUnknown_2022940 +_080207CC: .4byte gUnknown_20205AC +_080207D0: .4byte gUnknown_82C5DEC + thumb_func_end sub_08020780 + + thumb_func_start sub_080207D4 +sub_080207D4: @ 0x080207D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801EF98 + adds r3, r0, #0 + cmp r3, #0xf + bne _080207F0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _08020804 +_080207F0: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + lsls r0, r3, #3 + adds r0, #0x4c + strh r0, [r4, #0x20] +_08020804: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080207D4 + + thumb_func_start sub_0802080C +sub_0802080C: @ 0x0802080C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + movs r2, #0 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08020832 + strh r2, [r1, #0x2e] + ldrh r0, [r1, #0x24] + adds r0, #1 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08020832 + strh r2, [r1, #0x24] +_08020832: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802080C + + thumb_func_start sub_08020838 +sub_08020838: @ 0x08020838 + push {r4, r5, lr} + ldr r0, _08020888 + movs r1, #8 + movs r2, #0x98 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0802088C + ldr r2, [r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r4, _08020890 + adds r1, r1, r4 + str r1, [r2, #0xc] + ldr r0, _08020894 + movs r1, #0x20 + movs r2, #0x98 + movs r3, #4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + str r1, [r2, #0x10] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08020888: .4byte gUnknown_82C5E44 +_0802088C: .4byte gUnknown_2022940 +_08020890: .4byte gUnknown_20205AC +_08020894: .4byte gUnknown_82C5E5C + thumb_func_end sub_08020838 + + thumb_func_start sub_08020898 +sub_08020898: @ 0x08020898 + push {r4, lr} + bl sub_0801EEB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _080208D0 + bl sub_0801EEDC + cmp r0, #0 + beq _080208DA + ldr r3, _080208CC + ldr r0, [r3] + ldr r1, [r0, #0x10] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r0, [r0, #0x10] + movs r1, #3 + bl sub_08007EC0 + b _0802090E + .align 2, 0 +_080208CC: .4byte gUnknown_2022940 +_080208D0: + bl sub_0801EFA4 + adds r4, r0, #0 + cmp r4, #3 + bne _080208F0 +_080208DA: + ldr r0, _080208EC + ldr r0, [r0] + ldr r1, [r0, #0x10] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + b _0802090E + .align 2, 0 +_080208EC: .4byte gUnknown_2022940 +_080208F0: + ldr r3, _08020914 + ldr r0, [r3] + ldr r1, [r0, #0x10] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r0, [r0, #0x10] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 +_0802090E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020914: .4byte gUnknown_2022940 + thumb_func_end sub_08020898 + + thumb_func_start sub_08020918 +sub_08020918: @ 0x08020918 + ldr r0, _08020920 + ldr r0, [r0] + bx lr + .align 2, 0 +_08020920: .4byte gUnknown_2022944 + thumb_func_end sub_08020918 + + thumb_func_start sub_08020924 +sub_08020924: @ 0x08020924 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08020934 + ldr r0, [r5] + cmp r0, #0 + bne _08020938 + movs r0, #2 + b _08020974 + .align 2, 0 +_08020934: .4byte gUnknown_2022944 +_08020938: + cmp r4, #0 + bne _0802093E + ldr r4, [r0] +_0802093E: + ldrb r0, [r0, #0xa] + bl sub_080A8964 + ldr r0, [r5] + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] + adds r0, r4, #0 + bl sub_08000540 + ldr r0, _0802097C + cmp r4, r0 + bne _08020972 + ldr r2, _08020980 + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xc8 + lsls r0, r0, #1 + bl sub_080A27D8 + ldr r0, _08020984 + bl sub_080857F0 +_08020972: + movs r0, #0 +_08020974: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0802097C: .4byte sub_08085A30 +_08020980: .4byte gUnknown_30030B4 +_08020984: .4byte sub_0808576C + thumb_func_end sub_08020924 + + thumb_func_start sub_08020988 +sub_08020988: @ 0x08020988 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0 + mov r8, r0 + ldr r0, _080209B8 + ldrb r0, [r0] + cmp r0, #0 + beq _080209A6 + ldr r0, _080209BC + ldrb r0, [r0] + cmp r0, #0 + bne _080209C4 +_080209A6: + adds r0, r4, #0 + bl sub_08000540 + ldr r0, _080209C0 + mov r1, r8 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + b _08020A10 + .align 2, 0 +_080209B8: .4byte gUnknown_30031C4 +_080209BC: .4byte gUnknown_300319C +_080209C0: .4byte gUnknown_30050A0 +_080209C4: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r0, r8 + cmp r0, #1 + bls _080209E0 + cmp r7, r8 + blo _080209F4 +_080209E0: + adds r0, r4, #0 + bl sub_08000540 + ldr r0, _080209F0 + movs r1, #0 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + b _08020A10 + .align 2, 0 +_080209F0: .4byte gUnknown_30050A0 +_080209F4: + ldr r6, _08020A1C + ldr r0, _08020A20 + bl sub_08000BDC + adds r5, r0, #0 + str r5, [r6] + cmp r5, #0 + bne _08020A28 + adds r0, r4, #0 + bl sub_08000540 + ldr r0, _08020A24 + strh r5, [r0, #0x10] + strh r5, [r0, #0x12] +_08020A10: + adds r0, #0xee + ldrb r1, [r0] + movs r1, #1 + strb r1, [r0] + b _08020A8C + .align 2, 0 +_08020A1C: .4byte gUnknown_2022944 +_08020A20: .4byte 0x000041AC +_08020A24: .4byte gUnknown_30050A0 +_08020A28: + str r4, [r5] + movs r4, #0 + strb r7, [r5, #8] + ldr r0, [r6] + mov r1, r8 + strb r1, [r0, #9] + ldr r0, [r6] + bl sub_08020CE0 + ldr r1, [r6] + movs r2, #1 + movs r0, #1 + strh r0, [r1, #0x12] + strb r2, [r1, #0xe] + ldr r1, [r6] + movs r0, #6 + strb r0, [r1, #0xf] + ldr r0, [r6] + adds r0, #0x36 + movs r2, #1 + rsbs r2, r2, #0 + movs r1, #0x10 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_080243D0 + ldr r2, [r6] + adds r2, #0x36 + movs r0, #4 + movs r1, #1 + bl sub_08022950 + ldr r0, _08020A98 + bl sub_08000540 + ldr r0, _08020A9C + movs r1, #8 + bl sub_080A8878 + ldr r1, [r6] + strb r0, [r1, #0xa] + ldr r2, _08020AA0 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08020A8C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08020A98: .4byte sub_08020CA4 +_08020A9C: .4byte sub_08020CBC +_08020AA0: .4byte gUnknown_30030B4 + thumb_func_end sub_08020988 + + thumb_func_start sub_08020AA4 +sub_08020AA4: @ 0x08020AA4 + push {r4, lr} + sub sp, #0xc + ldr r1, _08020ABC + ldrh r0, [r1] + subs r0, #0x85 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x2b + bls _08020AC0 + movs r0, #0x85 + strh r0, [r1] + b _08020AC8 + .align 2, 0 +_08020ABC: .4byte gUnknown_203CB48 +_08020AC0: + ldrh r0, [r1] + movs r1, #1 + bl sub_080D62BC +_08020AC8: + ldr r4, _08020B28 + ldr r2, [r4] + ldrb r1, [r2, #8] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r1, _08020B2C + ldrh r1, [r1] + subs r1, #0x85 + adds r0, #0xa0 + movs r3, #0 + strh r1, [r0] + movs r0, #1 + strb r0, [r2, #0xe] + ldr r1, [r4] + movs r0, #9 + strb r0, [r1, #0xf] + ldr r0, [r4] + adds r0, #0x36 + movs r2, #1 + rsbs r2, r2, #0 + movs r1, #0x10 + str r1, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + movs r1, #0 + bl sub_080243D0 + ldr r2, [r4] + adds r2, #0x36 + movs r0, #4 + movs r1, #1 + bl sub_08022950 + ldr r0, _08020B30 + movs r1, #8 + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1, #0xa] + ldr r0, _08020B34 + bl sub_08000540 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020B28: .4byte gUnknown_2022944 +_08020B2C: .4byte gUnknown_203CB48 +_08020B30: .4byte sub_08020CBC +_08020B34: .4byte sub_08020CA4 + thumb_func_end sub_08020AA4 + + thumb_func_start sub_08020B38 +sub_08020B38: @ 0x08020B38 + push {lr} + ldr r0, _08020B50 + ldr r0, [r0] + ldrb r0, [r0, #0xa] + bl sub_080A8964 + ldr r0, _08020B54 + bl sub_081AA968 + pop {r0} + bx r0 + .align 2, 0 +_08020B50: .4byte gUnknown_2022944 +_08020B54: .4byte sub_08020AA4 + thumb_func_end sub_08020B38 + + thumb_func_start sub_08020B58 +sub_08020B58: @ 0x08020B58 + push {lr} + ldr r0, _08020B64 + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 +_08020B64: .4byte sub_08020C90 + thumb_func_end sub_08020B58 + + thumb_func_start sub_08020B68 +sub_08020B68: @ 0x08020B68 + push {lr} + movs r0, #0 + bl sub_080006F0 + pop {r0} + bx r0 + thumb_func_end sub_08020B68 + + thumb_func_start sub_08020B74 +sub_08020B74: @ 0x08020B74 + push {r4, r5, r6, lr} + ldr r4, _08020BB8 + ldr r0, [r4] + adds r0, #0x6c + ldrh r2, [r0] + lsls r2, r2, #8 + movs r1, #0xf0 + lsls r1, r1, #6 + adds r0, r2, #0 + bl sub_081515D8 + adds r2, r0, #0 + ldr r0, [r4] + adds r0, #0x72 + ldrh r3, [r0] + lsls r3, r3, #8 + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_081515D8 + adds r3, r0, #0 + ldr r0, _08020BBC + ands r3, r0 + ldr r2, [r4] + strh r3, [r2, #0x16] + ldrb r0, [r2, #9] + cmp r0, #3 + beq _08020BF8 + cmp r0, #3 + bgt _08020BC0 + cmp r0, #2 + beq _08020BCA + b _08020C64 + .align 2, 0 +_08020BB8: .4byte gUnknown_2022944 +_08020BBC: .4byte 0x0000FFFF +_08020BC0: + cmp r0, #4 + beq _08020C08 + cmp r0, #5 + beq _08020C3C + b _08020C64 +_08020BCA: + ldr r5, _08020BF4 + ldr r1, [r5] + movs r0, #0xf6 + lsls r0, r0, #1 + adds r1, r1, r0 + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + bls _08020C64 + adds r2, #0x25 + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, #0x16] + movs r2, #0xf6 + lsls r2, r2, #1 + b _08020C30 + .align 2, 0 +_08020BF4: .4byte gUnknown_3005AF0 +_08020BF8: + ldr r5, _08020C04 + ldr r0, [r5] + movs r6, #0xf7 + lsls r6, r6, #1 + b _08020C44 + .align 2, 0 +_08020C04: .4byte gUnknown_3005AF0 +_08020C08: + ldr r5, _08020C38 + ldr r1, [r5] + movs r0, #0xf8 + lsls r0, r0, #1 + adds r1, r1, r0 + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + bls _08020C64 + adds r2, #0x25 + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r1, [r4] + ldrh r1, [r1, #0x16] + movs r2, #0xf8 + lsls r2, r2, #1 +_08020C30: + adds r0, r0, r2 + strh r1, [r0] + b _08020C64 + .align 2, 0 +_08020C38: .4byte gUnknown_3005AF0 +_08020C3C: + ldr r5, _08020C88 + ldr r0, [r5] + movs r6, #0xf9 + lsls r6, r6, #1 +_08020C44: + adds r1, r0, r6 + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + bls _08020C64 + adds r2, #0x25 + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r5] + ldr r0, [r4] + ldrh r0, [r0, #0x16] + adds r1, r1, r6 + strh r0, [r1] +_08020C64: + ldr r4, _08020C8C + ldr r1, [r4] + ldr r0, [r1, #0x68] + str r0, [r1, #0x1c] + bl sub_080244CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020C82 + ldr r0, [r4] + adds r0, #0x25 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_08020C82: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08020C88: .4byte gUnknown_3005AF0 +_08020C8C: .4byte gUnknown_2022944 + thumb_func_end sub_08020B74 + + thumb_func_start sub_08020C90 +sub_08020C90: @ 0x08020C90 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08020C90 + + thumb_func_start sub_08020CA4 +sub_08020CA4: @ 0x08020CA4 + push {lr} + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08020CA4 + + thumb_func_start sub_08020CBC +sub_08020CBC: @ 0x08020CBC + push {r4, lr} + ldr r4, _08020CDC + ldr r0, [r4] + ldr r2, [r0, #4] + cmp r2, #0 + beq _08020CD0 + adds r1, r0, #0 + adds r1, #0x36 + bl _call_via_r2 +_08020CD0: + ldr r0, [r4] + bl sub_0802117C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020CDC: .4byte gUnknown_2022944 + thumb_func_end sub_08020CBC + + thumb_func_start sub_08020CE0 +sub_08020CE0: @ 0x08020CE0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + b _08020D0A +_08020CE8: + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r4, r1, r6 + adds r0, r4, #0 + adds r0, #0x98 + ldr r2, _08020D54 + adds r1, r1, r2 + movs r2, #7 + bl memcpy + adds r4, #0x9f + movs r0, #0xff + strb r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08020D0A: + ldrb r0, [r6, #9] + cmp r5, r0 + blo _08020CE8 + cmp r5, #4 + bhi _08020D3A +_08020D14: + lsls r4, r5, #3 + subs r4, r4, r5 + lsls r4, r4, #2 + adds r0, r4, #0 + adds r0, #0x98 + adds r0, r6, r0 + movs r1, #1 + movs r2, #7 + bl memset + adds r4, r6, r4 + adds r4, #0x9f + movs r0, #0xff + strb r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _08020D14 +_08020D3A: + ldr r0, _08020D58 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #1 + beq _08020D66 + cmp r0, #1 + bgt _08020D5C + cmp r0, #0 + beq _08020D62 + b _08020D6E + .align 2, 0 +_08020D54: .4byte gUnknown_20226A8 +_08020D58: .4byte gUnknown_3005AF0 +_08020D5C: + cmp r0, #2 + beq _08020D6A + b _08020D6E +_08020D62: + movs r0, #8 + b _08020D6C +_08020D66: + movs r0, #4 + b _08020D6C +_08020D6A: + movs r0, #1 +_08020D6C: + strb r0, [r6, #0xb] +_08020D6E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08020CE0 + + thumb_func_start sub_08020D74 +sub_08020D74: @ 0x08020D74 + push {r4, r5, lr} + sub sp, #0xc + bl sub_08020918 + adds r5, r0, #0 + cmp r5, #0 + bne _08020D88 + movs r0, #1 + rsbs r0, r0, #0 + b _08021030 +_08020D88: + ldrb r0, [r5, #0xc] + cmp r0, #9 + bls _08020D90 + b _08021028 +_08020D90: + lsls r0, r0, #2 + ldr r1, _08020D9C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020D9C: .4byte _08020DA0 +_08020DA0: @ jump table + .4byte _08020DC8 @ case 0 + .4byte _08020DE6 @ case 1 + .4byte _08020E0C @ case 2 + .4byte _08020E1A @ case 3 + .4byte _08020EA4 @ case 4 + .4byte _08020EEA @ case 5 + .4byte _08020F18 @ case 6 + .4byte _08020F48 @ case 7 + .4byte _08020FA4 @ case 8 + .4byte _08020FE0 @ case 9 +_08020DC8: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + movs r1, #0 + bl sub_08001144 + bl sub_080B9710 + bl sub_081996B8 + b _08021028 +_08020DE6: + add r0, sp, #8 + movs r4, #0 + strh r4, [r0] + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _08020E04 + bl CpuSet + ldr r0, _08020E08 + strb r4, [r0] + movs r0, #3 + bl sub_08034AAC + b _08021028 + .align 2, 0 +_08020E04: .4byte 0x01000200 +_08020E08: .4byte gUnknown_30030BC +_08020E0C: + bl sub_080A133C + bl sub_0800668C + bl sub_08008424 + b _08021028 +_08020E1A: + movs r0, #0 + bl sub_080017D4 + ldr r1, _08020E98 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0xd6 + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #1 + bl sub_0800212C + ldr r0, _08020E9C + adds r1, r5, r0 + movs r0, #2 + bl sub_0800212C + ldr r0, _08020EA0 + adds r1, r5, r0 + movs r0, #3 + bl sub_0800212C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + b _08021028 + .align 2, 0 +_08020E98: .4byte gUnknown_82C5EE0 +_08020E9C: .4byte 0x000021AC +_08020EA0: .4byte 0x000031AC +_08020EA4: + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + movs r0, #0x40 + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + b _08021028 +_08020EEA: + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + ldr r1, _08020F14 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _08021028 + .align 2, 0 +_08020F14: .4byte gUnknown_82C6104 +_08020F18: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08020F24 + b _0802102E +_08020F24: + bl sub_08196DC4 + bl sub_08196DF4 + adds r0, r5, #0 + bl sub_080222E8 + adds r0, r5, #0 + bl sub_08022360 + ldr r0, _08020F44 + ldrb r1, [r0, #8] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #8] + b _08021028 + .align 2, 0 +_08020F44: .4byte gUnknown_2037C74 +_08020F48: + ldr r0, _08020F94 + movs r2, #0xc0 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A1200 + ldr r1, _08020F98 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _08020F9C + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _08020FA0 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + adds r0, r5, #0 + bl sub_08022434 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _08021028 + .align 2, 0 +_08020F94: .4byte gUnknown_82C5F84 +_08020F98: .4byte gUnknown_82C74D4 +_08020F9C: .4byte gUnknown_82C7604 +_08020FA0: .4byte gUnknown_82C779C +_08020FA4: + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + adds r0, r5, #0 + bl sub_08022494 + ldr r0, _08020FDC + ldrh r1, [r0] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x16 + bl sub_08001144 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + b _08021028 + .align 2, 0 +_08020FDC: .4byte gUnknown_2021B3A +_08020FE0: + ldr r2, _08021024 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + bl sub_08020B58 + movs r0, #0 + strb r0, [r5, #0xc] + movs r0, #1 + b _08021030 + .align 2, 0 +_08021024: .4byte gUnknown_2037C74 +_08021028: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_0802102E: + movs r0, #0 +_08021030: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08020D74 + + thumb_func_start sub_08021038 +sub_08021038: @ 0x08021038 + push {r4, r5, lr} + sub sp, #8 + bl sub_08020918 + adds r5, r0, #0 + cmp r5, #0 + bne _0802104C + movs r0, #1 + rsbs r0, r0, #0 + b _08021172 +_0802104C: + ldrb r0, [r5, #0xc] + cmp r0, #7 + bls _08021054 + b _0802116A +_08021054: + lsls r0, r0, #2 + ldr r1, _08021060 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021060: .4byte _08021064 +_08021064: @ jump table + .4byte _08021084 @ case 0 + .4byte _0802108A @ case 1 + .4byte _08021094 @ case 2 + .4byte _080210AA @ case 3 + .4byte _080210B6 @ case 4 + .4byte _08021112 @ case 5 + .4byte _08021152 @ case 6 + .4byte _08021162 @ case 7 +_08021084: + bl sub_0800FF34 + b _0802116A +_0802108A: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08021170 +_08021094: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl sub_080A12E4 + b _0802116A +_080210AA: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802116A + b _08021170 +_080210B6: + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _0802116A +_08021112: + bl sub_080034D4 + movs r0, #0 + bl sub_08001B5C + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08001B5C + movs r0, #1 + bl sub_08002160 + movs r0, #2 + bl sub_08001B5C + movs r0, #2 + bl sub_08002160 + movs r0, #3 + bl sub_08001B5C + movs r0, #3 + bl sub_08002160 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001220 + b _0802116A +_08021152: + bl sub_0800DB50 + adds r0, r5, #0 + bl sub_080226C4 + bl sub_08034B20 + b _0802116A +_08021162: + movs r0, #0 + strb r0, [r5, #0xc] + movs r0, #1 + b _08021172 +_0802116A: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_08021170: + movs r0, #0 +_08021172: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08021038 + + thumb_func_start sub_0802117C +sub_0802117C: @ 0x0802117C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080211B0 + ldrh r1, [r4, #0x2c] + ldrh r2, [r4, #0x2a] + adds r1, r1, r2 + strh r1, [r0] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x16 + bl sub_08001144 + ldrh r0, [r4, #0x12] + cmp r0, #7 + bne _080211A8 + movs r1, #0x92 + lsls r1, r1, #1 + adds r0, r4, r1 + ldrh r1, [r4, #0x28] + bl sub_08022284 +_080211A8: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080211B0: .4byte gUnknown_2021B3A + thumb_func_end sub_0802117C + + thumb_func_start sub_080211B4 +sub_080211B4: @ 0x080211B4 + movs r1, #0 + ldr r2, _080211C8 + strh r2, [r0, #0x2a] + strh r1, [r0, #0x2c] + ldr r0, _080211CC + strh r1, [r0] + ldr r0, _080211D0 + strh r2, [r0] + bx lr + .align 2, 0 +_080211C8: .4byte 0x0000FF98 +_080211CC: .4byte gUnknown_2021B38 +_080211D0: .4byte gUnknown_2021B3A + thumb_func_end sub_080211B4 + + thumb_func_start sub_080211D4 +sub_080211D4: @ 0x080211D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sl, r0 + str r1, [sp] + movs r0, #0 + mov sb, r0 + mov r1, sl + ldrb r1, [r1, #9] + cmp sb, r1 + blo _080211F2 + b _08021314 +_080211F2: + ldr r1, _08021324 + mov r2, sb + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r2, [r0] + mov r1, sb + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + adds r0, #0xa0 + ldrh r3, [r0] + adds r3, #0x85 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r0, _08021328 + adds r1, r2, #0 + bl sub_081AFC0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, sb + lsls r3, r2, #2 + ldr r1, [sp] + adds r1, #0x38 + adds r6, r1, r3 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0802132C + adds r1, r1, r0 + str r1, [r6] + ldrb r0, [r1, #5] + movs r2, #0xc + orrs r0, r2 + strb r0, [r1, #5] + 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, r0, r3 + mov r8, r0 + ldr r0, [r0] + ldrh r0, [r0, #8] + adds r0, #0x78 + strh r0, [r1, #0x20] + ldr r1, [r6] + ldr r0, _08021330 + strh r0, [r1, #0x22] + ldr r3, [r6] + adds r5, r3, #0 + adds r5, #0x2e + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #2] + movs r0, #0x20 + strh r0, [r5, #4] + movs r0, #0x70 + strh r0, [r5, #0xe] + mov r2, r8 + ldr r1, [r2] + ldrh r0, [r1, #0xa] + ldrh r1, [r1, #8] + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + adds r0, r1, #0 + cmp r1, #0 + bge _08021288 + adds r0, r1, #3 +_08021288: + asrs r0, r0, #2 + strh r0, [r5, #0xc] + lsls r0, r1, #0x17 + lsrs r7, r0, #0x10 + movs r2, #0x80 + lsls r2, r2, #2 + adds r2, #0x20 + lsrs r2, r2, #1 + movs r0, #7 + movs r1, #0xfe + lsls r1, r1, #6 + str r3, [sp, #4] + bl sub_081515B0 + adds r4, r0, #0 + ldr r0, [r6] + ldrh r0, [r0, #0x20] + lsls r0, r0, #7 + ldr r3, [sp, #4] + strh r0, [r3, #0x2e] + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #7 + adds r2, r4, #0 + bl sub_081515B0 + strh r0, [r5, #6] + movs r0, #7 + adds r1, r4, #0 + movs r2, #0x55 + bl sub_0815152C + adds r2, r0, #0 + movs r0, #0 + strh r0, [r5, #8] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r0, #7 + movs r1, #0xfe + lsls r1, r1, #6 + bl sub_081515B0 + strh r0, [r5, #0xa] + ldrh r0, [r5, #0xe] + ldr r2, _08021334 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r5, #0xe] + mov r1, r8 + ldr r0, [r1] + movs r2, #8 + ldrsh r0, [r0, r2] + cmp r0, #0 + bge _08021300 + ldr r0, [r6] + movs r1, #1 + bl sub_08007F70 +_08021300: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, sl + ldrb r0, [r0, #9] + cmp sb, r0 + bhs _08021314 + b _080211F2 +_08021314: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08021324: .4byte gUnknown_82C7A74 +_08021328: .4byte gUnknown_82C7BF8 +_0802132C: .4byte gUnknown_20205AC +_08021330: .4byte 0x0000FFF0 +_08021334: .4byte 0xFFFF8000 + thumb_func_end sub_080211D4 + + thumb_func_start sub_08021338 +sub_08021338: @ 0x08021338 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x2e + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + strh r0, [r5, #0x26] + movs r1, #0xe + ldrsh r0, [r4, r1] + movs r6, #0x80 + lsls r6, r6, #8 + ands r0, r6 + cmp r0, #0 + beq _0802139E + ldrh r0, [r4, #6] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r5, #0x2e] + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #8] + adds r0, r0, r1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + movs r2, #0xc + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r5, #0x24] + movs r1, #0xe + ldrsh r0, [r4, r1] + ands r0, r6 + cmp r0, #0 + beq _0802139E + ldrh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + cmp r0, #0x7e + ble _0802139E + movs r0, #0 + strh r0, [r5, #0x24] + ldrh r1, [r4, #0xe] + ldr r0, _080213D0 + ands r0, r1 + strh r0, [r4, #0xe] +_0802139E: + ldrh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + strh r0, [r5, #0x20] + movs r2, #0x22 + ldrsh r1, [r5, r2] + movs r2, #0x26 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + ldrh r2, [r4, #0xe] + ldr r0, _080213D0 + ands r0, r2 + cmp r1, r0 + blt _080213CA + ldr r0, _080213D4 + str r0, [r5, #0x1c] + adds r0, r5, #0 + bl sub_0800730C + adds r0, r5, #0 + bl sub_08006E00 +_080213CA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080213D0: .4byte 0x00007FFF +_080213D4: .4byte sub_08007140 + thumb_func_end sub_08021338 + + thumb_func_start sub_080213D8 +sub_080213D8: @ 0x080213D8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r5, #0 + ldrb r0, [r6, #9] + cmp r5, r0 + bhs _08021404 + ldr r7, _0802140C +_080213E6: + lsls r0, r5, #1 + adds r0, r0, r7 + ldrh r4, [r0] + adds r0, r4, #0 + bl sub_08008564 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6, #9] + cmp r5, r0 + blo _080213E6 +_08021404: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802140C: .4byte gUnknown_82C7A74 + thumb_func_end sub_080213D8 + + thumb_func_start sub_08021410 +sub_08021410: @ 0x08021410 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r6, r0, #0 + str r1, [sp] + movs r0, #0 + str r0, [sp, #4] + movs r1, #0x4e + adds r1, r1, r6 + mov sl, r1 + mov sb, r0 + ldrb r2, [r6, #9] + cmp r0, r2 + bhs _080214DE + ldr r7, _08021474 +_08021434: + mov r3, sl + ldrh r0, [r3, #0xa] + mov r4, sb + lsls r1, r4, #1 + add r1, sb + asrs r0, r1 + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + lsrs r1, r1, #0x10 + mov r8, r1 + cmp r1, #0 + beq _080214CE + ldr r0, [sp, #4] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08021478 + lsls r4, r4, #2 + ldr r5, [sp] + adds r5, #0x24 + adds r0, r5, r4 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + b _0802148A + .align 2, 0 +_08021474: .4byte gUnknown_82C7A58 +_08021478: + mov r0, sb + lsls r4, r0, #2 + ldr r5, [sp] + adds r5, #0x24 + adds r0, r5, r4 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 +_0802148A: + adds r3, r5, r4 + ldr r2, [r3] + adds r2, #0x3e + ldrb r0, [r2] + movs r4, #5 + rsbs r4, r4, #0 + 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, #3 + mov r1, r8 + ands r1, r0 + mov r8, r1 + subs r1, #1 + lsls r1, r1, #1 + adds r0, r1, r7 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r2, #0x24] + ldr r2, [r3] + ldr r3, _080214EC + adds r1, r1, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + strh r0, [r2, #0x26] +_080214CE: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrb r4, [r6, #9] + cmp sb, r4 + blo _08021434 +_080214DE: + ldr r0, [sp, #4] + cmp r0, #0 + bne _080214F0 + adds r2, r6, #0 + adds r2, #0x25 + ldrb r1, [r2] + b _080215CC + .align 2, 0 +_080214EC: .4byte gUnknown_82C7A59 +_080214F0: + ldrh r0, [r6, #0x28] + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r1, r8 + str r1, [sp, #8] + movs r2, #0 + mov sb, r2 + mov r3, sl + ldrh r1, [r3, #0xc] + lsls r0, r1, #1 + adds r0, #3 + adds r6, #0x25 + str r6, [sp, #0xc] + adds r3, r1, #0 + cmp sb, r0 + bge _080215C0 +_08021518: + mov r4, sb + 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, #4 + ands r0, r1 + cmp r0, #0 + beq _080215AE + ldr r0, _08021584 + str r0, [r2, #0x1c] + lsls r1, r4, #1 + ldr r3, _08021588 + 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, _0802158C + adds r1, 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, #8] + lsls r1, r2, #2 + adds r0, r4, #0 + bl __divsi3 + adds r4, r4, r0 + strh r4, [r5, #0x24] + ldr r0, [r7] + strh r6, [r0, #0x26] + mov r3, sl + ldrb r1, [r3, #4] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08021590 + ldr r0, [r7] + movs r1, #1 + bl sub_08007EC0 + b _08021598 + .align 2, 0 +_08021584: .4byte sub_0802288C +_08021588: .4byte gUnknown_82C7A5E +_0802158C: .4byte gUnknown_82C7A5F +_08021590: + ldr r0, [r7] + movs r1, #0 + bl sub_08007EC0 +_08021598: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + mov r4, sl + ldrh r3, [r4, #0xc] + cmp r0, #3 + bls _080215AE + movs r0, #0 + mov r8, r0 +_080215AE: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r3, #1 + adds r0, #3 + cmp sb, r0 + blt _08021518 +_080215C0: + ldr r2, [sp, #0xc] + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080215D6 +_080215CC: + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _080215F4 +_080215D6: + ldr r3, [sp, #4] + cmp r3, #1 + bne _080215E4 + movs r0, #0x4e + bl sub_080A306C + b _080215EA +_080215E4: + movs r0, #0x4d + bl sub_080A306C +_080215EA: + ldr r4, [sp, #0xc] + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] +_080215F4: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08021410 + + thumb_func_start sub_08021604 +sub_08021604: @ 0x08021604 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r2, #0 + ldrb r0, [r5, #9] + cmp r2, r0 + bhs _08021636 + adds r4, r6, #0 + adds r4, #0x24 + movs r7, #4 + adds r3, r0, #0 +_0802161A: + 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 _08021650 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _0802161A +_08021636: + movs r2, #0 + adds r3, r6, #0 + adds r3, #0x4c + movs r4, #4 +_0802163E: + 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 _08021654 +_08021650: + movs r0, #0 + b _0802166C +_08021654: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xa + bls _0802163E + movs r1, #0x2c + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0802166A + movs r0, #0 + strh r0, [r5, #0x2c] +_0802166A: + movs r0, #1 +_0802166C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08021604 + + thumb_func_start sub_08021674 +sub_08021674: @ 0x08021674 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r4, r1, #0x10 + lsrs r4, r4, #0x10 + movs r7, #0 + movs r5, #0xe1 + lsls r5, r5, #4 + adds r0, r4, #0 + adds r1, r5, #0 + bl __udivsi3 + strh r0, [r6, #4] + adds r0, r4, #0 + adds r1, r5, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x3c + bl __udivsi3 + strh r0, [r6, #6] + adds r0, r4, #0 + movs r1, #0x3c + bl __umodsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_08151510 + adds r2, r7, #0 + lsls r0, r0, #0x10 + asrs r3, r0, #0x10 + movs r0, #7 + mov ip, r0 + ldr r5, _080216F0 + movs r4, #1 +_080216C0: + mov r0, ip + subs r1, r0, r2 + adds r0, r3, #0 + asrs r0, r1 + ands r0, r4 + cmp r0, #0 + beq _080216D6 + lsls r0, r2, #2 + adds r0, r0, r5 + ldr r0, [r0] + adds r7, r7, r0 +_080216D6: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _080216C0 + ldr r1, _080216F4 + adds r0, r7, #0 + bl __udivsi3 + strh r0, [r6, #8] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080216F0: .4byte gUnknown_82C5F64 +_080216F4: .4byte 0x000F4240 + thumb_func_end sub_08021674 + + thumb_func_start sub_080216F8 +sub_080216F8: @ 0x080216F8 + push {r4, r5, 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, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + mov r1, r8 + bl sub_08005DAC + lsls r4, r4, #2 + lsrs r0, r0, #1 + subs r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r5, #1 + adds r0, r0, r5 + ldr r1, _08021754 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_08199AFC + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08021754: .4byte gUnknown_82C5EF0 + thumb_func_end sub_080216F8 + + thumb_func_start sub_08021758 +sub_08021758: @ 0x08021758 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + str r0, [sp, #0xc] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x10] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x18] + movs r7, #0 + movs r0, #0 + str r0, [sp, #0x1c] + movs r1, #0 + str r1, [sp, #0x20] + ldr r2, [sp, #0xc] + adds r2, #0x68 + str r2, [sp, #0x24] + ldr r4, [sp, #0xc] + ldrb r4, [r4, #9] + cmp r7, r4 + blo _08021792 + b _08021A9A +_08021792: + ldr r0, [sp, #0x10] + lsls r0, r0, #2 + str r0, [sp, #0x28] + movs r2, #0xd3 + lsls r2, r2, #1 + ldr r1, [sp, #0xc] + adds r2, r1, r2 + str r2, [sp, #0x2c] +_080217A2: + bl sub_081AF8C8 + ldr r4, [sp, #0x10] + cmp r4, #1 + beq _0802188C + cmp r4, #1 + bgt _080217B6 + cmp r4, #0 + beq _080217CE + b _080217BE +_080217B6: + ldr r4, [sp, #0x10] + cmp r4, #2 + bne _080217BE + b _08021990 +_080217BE: + ldr r0, [sp, #0x20] + adds r0, #0xa2 + mov r8, r0 + ldr r1, [sp, #0x1c] + lsls r5, r1, #3 + adds r2, r7, #1 + mov sb, r2 + b _08021A0A +_080217CE: + ldr r0, [sp, #0x24] + adds r0, #0x20 + adds r0, r0, r7 + ldrb r0, [r0] + str r0, [sp, #0x1c] + lsls r3, r7, #1 + ldr r2, [sp, #0x24] + adds r2, #0xc + cmp r7, #0 + beq _080217F4 + adds r0, r2, r3 + subs r1, r7, #1 + lsls r1, r1, #1 + adds r1, r2, r1 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _080217F4 + str r7, [sp, #0x20] +_080217F4: + ldr r4, [sp, #0x28] + ldr r1, [sp, #0x10] + adds r0, r4, r1 + lsls r0, r0, #1 + adds r0, r3, r0 + adds r0, r2, r0 + ldrh r1, [r0] + ldr r0, _08021880 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r0, _08021884 + adds r0, r4, r0 + ldr r5, [r0] + movs r0, #1 + adds r1, r5, #0 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + ldr r2, [sp, #0x14] + subs r0, r2, r0 + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, [sp, #0x2c] + ldrb r0, [r4] + movs r1, #0xd + adds r4, r7, #0 + muls r4, r1, r4 + ldr r1, [sp, #0x18] + adds r4, r1, r4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r2, _08021888 + str r2, [sp] + movs r1, #0 + str r1, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08199AFC + ldr r2, [sp, #0x2c] + ldrb r0, [r2] + adds r2, r6, #0 + subs r2, #0x21 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _08021888 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _08021880 + str r1, [sp, #8] + movs r1, #0 + adds r3, r4, #0 + bl sub_08199AFC + ldr r2, [sp, #0x20] + adds r2, #0xa2 + mov r8, r2 + ldr r4, [sp, #0x1c] + lsls r5, r4, #3 + adds r0, r7, #1 + mov sb, r0 + b _08021A0A + .align 2, 0 +_08021880: .4byte gUnknown_2021C40 +_08021884: .4byte gUnknown_82C7C40 +_08021888: .4byte gUnknown_82C5EF0 +_0802188C: + ldr r1, [sp, #0x24] + adds r0, r1, r7 + adds r0, #0x28 + ldrb r0, [r0] + str r0, [sp, #0x1c] + lsls r3, r7, #1 + adds r2, r1, #0 + adds r2, #0xc + cmp r7, #0 + beq _080218B6 + adds r0, r3, #0 + adds r0, #0xa + adds r0, r2, r0 + adds r1, r3, #0 + adds r1, #8 + adds r1, r2, r1 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _080218B6 + str r7, [sp, #0x20] +_080218B6: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x10] + adds r4, r0, r1 + lsls r4, r4, #1 + adds r4, r3, r4 + adds r4, r2, r4 + ldrh r1, [r4] + lsrs r1, r1, #4 + ldr r0, _08021974 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + movs r3, #0 + ldrb r0, [r4] + movs r6, #0xf + ands r6, r0 + movs r2, #0 + ldr r4, [sp, #0x10] + lsls r4, r4, #2 + str r4, [sp, #0x34] + ldr r0, [sp, #0x14] + subs r0, #0x34 + str r0, [sp, #0x30] + ldr r1, [sp, #0x20] + adds r1, #0xa2 + mov r8, r1 + ldr r4, [sp, #0x1c] + lsls r5, r4, #3 + adds r0, r7, #1 + mov sb, r0 + movs r1, #3 + mov sl, r1 + movs r4, #1 + mov ip, r4 + ldr r4, _08021978 +_080218FE: + mov r0, sl + subs r1, r0, r2 + adds r0, r6, #0 + asrs r0, r1 + mov r1, ip + ands r0, r1 + cmp r0, #0 + beq _08021916 + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r0, [r0] + adds r3, r3, r0 +_08021916: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080218FE + adds r0, r3, #0 + ldr r1, _0802197C + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08021980 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, _08021984 + ldr r2, [sp, #0x34] + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _08021988 + bl sub_08008BCC + ldr r4, [sp, #0x2c] + ldrb r0, [r4] + ldr r1, [sp, #0x30] + lsls r2, r1, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0xd + adds r3, r7, #0 + muls r3, r1, r3 + ldr r4, [sp, #0x18] + adds r3, r4, r3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _0802198C + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r1, _08021988 + str r1, [sp, #8] + movs r1, #0 + bl sub_08199AFC + b _08021A0A + .align 2, 0 +_08021974: .4byte gUnknown_2021C40 +_08021978: .4byte gUnknown_82C5F64 +_0802197C: .4byte 0x000F4240 +_08021980: .4byte gUnknown_2021C54 +_08021984: .4byte gUnknown_82C7C40 +_08021988: .4byte gUnknown_2021C7C +_0802198C: .4byte gUnknown_82C5EF0 +_08021990: + str r7, [sp, #0x1c] + str r7, [sp, #0x20] + lsls r4, r7, #3 + subs r0, r4, r7 + lsls r0, r0, #2 + ldr r2, [sp, #0xc] + adds r0, r2, r0 + adds r0, #0xa0 + ldrb r2, [r0] + cmp r2, #0x2b + bls _080219A8 + movs r2, #0 +_080219A8: + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r0, _08021A20 + adds r1, r1, r0 + ldr r0, _08021A24 + bl sub_080088B8 + ldr r0, _08021A28 + ldr r1, [r0, #8] + ldr r0, _08021A2C + bl sub_08008BCC + movs r0, #1 + ldr r1, _08021A2C + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + adds r2, r0, #0 + ldr r0, [sp, #0x14] + subs r2, r0, r2 + subs r2, #4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [sp, #0x2c] + ldrb r0, [r1] + movs r1, #0xd + adds r3, r7, #0 + muls r3, r1, r3 + ldr r1, [sp, #0x18] + adds r3, r1, r3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _08021A30 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _08021A2C + str r1, [sp, #8] + movs r1, #1 + bl sub_08199AFC + movs r2, #0xa2 + adds r2, r2, r7 + mov r8, r2 + adds r5, r4, #0 + adds r4, r7, #1 + mov sb, r4 +_08021A0A: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldrb r0, [r0, #8] + cmp r1, r0 + bne _08021A3C + ldr r0, _08021A34 + ldr r1, _08021A38 + bl sub_080088B8 + b _08021A44 + .align 2, 0 +_08021A20: .4byte gUnknown_8563150 +_08021A24: .4byte gUnknown_2021C40 +_08021A28: .4byte gUnknown_82C7C40 +_08021A2C: .4byte gUnknown_2021C7C +_08021A30: .4byte gUnknown_82C5EF0 +_08021A34: .4byte gUnknown_2021C68 +_08021A38: .4byte gUnknown_85CC9C8 +_08021A3C: + ldr r0, _08021AAC + ldr r1, _08021AB0 + bl sub_080088B8 +_08021A44: + ldr r4, _08021AAC + mov r1, r8 + strb r1, [r4] + ldr r2, [sp, #0x1c] + subs r1, r5, r2 + lsls r1, r1, #2 + adds r1, #0x98 + ldr r0, [sp, #0xc] + adds r1, r0, r1 + movs r0, #0 + bl sub_081AF8E4 + ldr r0, _08021AB4 + adds r1, r4, #0 + bl sub_081AF900 + ldr r1, [sp, #0x2c] + ldrb r0, [r1] + movs r1, #0xd + adds r3, r7, #0 + muls r3, r1, r3 + ldr r2, [sp, #0x18] + adds r3, r2, r3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _08021AB8 + str r4, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r2, _08021AB4 + str r2, [sp, #8] + movs r1, #1 + movs r2, #4 + bl sub_08199AFC + mov r4, sb + lsls r0, r4, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [sp, #0xc] + ldrb r0, [r0, #9] + cmp r7, r0 + bhs _08021A9A + b _080217A2 +_08021A9A: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08021AAC: .4byte gUnknown_2021C68 +_08021AB0: .4byte gUnknown_85CC9D4 +_08021AB4: .4byte gUnknown_2021C7C +_08021AB8: .4byte gUnknown_82C5EF0 + thumb_func_end sub_08021758 + + thumb_func_start sub_08021ABC +sub_08021ABC: @ 0x08021ABC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + mov r8, r0 + movs r0, #0 + mov sl, r0 + movs r6, #0 + movs r1, #0 + str r1, [sp, #0xc] + mov r2, r8 + adds r2, #0x68 + str r2, [sp, #0x10] + movs r4, #0xd3 + lsls r4, r4, #1 + add r4, r8 + mov sb, r4 + ldrb r0, [r4] + movs r1, #4 + bl sub_0800401C + lsls r0, r0, #0x1b + movs r1, #0xda + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r7, r0, #0x18 + movs r0, #0x92 + lsls r0, r0, #1 + add r0, r8 + ldr r2, [sp, #0x10] + ldrh r1, [r2, #4] + bl sub_08021674 + ldrb r0, [r4] + ldr r4, _08021CF4 + str r4, [sp] + str r6, [sp, #4] + ldr r1, _08021CF8 + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + adds r3, r7, #0 + bl sub_08199AFC + ldr r4, _08021CFC + movs r0, #1 + adds r1, r4, #0 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + movs r1, #0xae + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r2, sb + ldrb r0, [r2] + ldr r1, _08021CF4 + str r1, [sp] + mov r2, sl + str r2, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + adds r0, r6, #0 + subs r0, #0x29 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x95 + lsls r0, r0, #1 + add r0, r8 + movs r4, #0 + ldrsh r1, [r0, r4] + ldr r0, _08021D00 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, _08021D04 + movs r1, #0x96 + lsls r1, r1, #1 + add r1, r8 + movs r2, #0 + ldrsh r1, [r1, r2] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r5, _08021D08 + ldr r1, _08021D0C + adds r0, r5, #0 + bl sub_08008BCC + mov r4, sb + ldrb r0, [r4] + ldr r1, _08021CF4 + str r1, [sp] + mov r2, sl + str r2, [sp, #4] + str r5, [sp, #8] + movs r1, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + ldr r4, _08021D10 + movs r0, #1 + adds r1, r4, #0 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + subs r1, r6, #1 + subs r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r1, sb + ldrb r0, [r1] + ldr r2, _08021CF4 + str r2, [sp] + mov r1, sl + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + adds r0, r6, #0 + subs r0, #9 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x94 + lsls r0, r0, #1 + add r0, r8 + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _08021D00 + movs r2, #2 + movs r3, #1 + bl sub_080089D8 + ldr r1, _08021D14 + adds r0, r5, #0 + bl sub_08008BCC + mov r4, sb + ldrb r0, [r4] + ldr r1, _08021CF4 + str r1, [sp] + mov r2, sl + str r2, [sp, #4] + str r5, [sp, #8] + movs r1, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + adds r0, r7, #0 + adds r0, #0xd + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r4] + ldr r4, _08021CF4 + str r4, [sp] + mov r1, sl + str r1, [sp, #4] + ldr r1, _08021D18 + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + adds r3, r7, #0 + bl sub_08199AFC + ldr r4, _08021D1C + movs r0, #1 + adds r1, r4, #0 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + movs r2, #0xae + subs r0, r2, r0 + lsls r0, r0, #0x18 + str r0, [sp, #0x18] + lsrs r6, r0, #0x18 + mov r1, sb + ldrb r0, [r1] + ldr r2, _08021CF4 + str r2, [sp] + mov r1, sl + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + mov r4, r8 + ldrb r2, [r4, #0x16] + ldrh r0, [r4, #0x16] + mov ip, r0 + movs r1, #7 + mov sb, r1 + movs r5, #1 + ldr r3, _08021D20 +_08021C62: + mov r4, sb + mov r0, sl + subs r1, r4, r0 + adds r0, r2, #0 + asrs r0, r1 + ands r0, r5 + cmp r0, #0 + beq _08021C80 + mov r1, sl + lsls r0, r1, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldr r4, [sp, #0xc] + adds r4, r4, r0 + str r4, [sp, #0xc] +_08021C80: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #7 + bls _08021C62 + ldr r0, _08021D00 + mov r2, ip + lsrs r1, r2, #8 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _08021D04 + ldr r1, _08021D24 + ldr r0, [sp, #0xc] + bl __udivsi3 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _08021D08 + ldr r1, _08021D28 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r6, #0 + subs r0, #0x31 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r0, r8 + adds r0, #0x25 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08021D30 + movs r0, #0xd3 + lsls r0, r0, #1 + add r0, r8 + ldrb r0, [r0] + ldr r1, _08021D2C + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + b _08021D4A + .align 2, 0 +_08021CF4: .4byte gUnknown_82C5EF0 +_08021CF8: .4byte gUnknown_85CC9F0 +_08021CFC: .4byte gUnknown_85CCA14 +_08021D00: .4byte gUnknown_2021C40 +_08021D04: .4byte gUnknown_2021C54 +_08021D08: .4byte gUnknown_2021C7C +_08021D0C: .4byte gUnknown_85CCA0C +_08021D10: .4byte gUnknown_85CCA08 +_08021D14: .4byte gUnknown_85CCA04 +_08021D18: .4byte gUnknown_85CC9F4 +_08021D1C: .4byte gUnknown_85CCA20 +_08021D20: .4byte gUnknown_82C5F64 +_08021D24: .4byte 0x000F4240 +_08021D28: .4byte gUnknown_85CCA18 +_08021D2C: .4byte gUnknown_82C5EFF +_08021D30: + movs r0, #0xd3 + lsls r0, r0, #1 + add r0, r8 + ldrb r0, [r0] + ldr r1, _08021DC8 + str r1, [sp] + str r2, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC +_08021D4A: + adds r0, r7, #0 + adds r0, #0xd + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0xd3 + lsls r4, r4, #1 + add r8, r4 + mov r1, r8 + ldrb r0, [r1] + ldr r2, _08021DC8 + mov sb, r2 + str r2, [sp] + movs r5, #0 + str r5, [sp, #4] + ldr r1, _08021DCC + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + adds r3, r7, #0 + bl sub_08199AFC + ldr r0, _08021DD0 + ldr r4, [sp, #0x10] + ldrh r1, [r4, #8] + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _08021DD4 + ldr r1, _08021DD8 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + movs r2, #0x52 + rsbs r2, r2, #0 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r1, r8 + ldrb r0, [r1] + mov r2, sb + str r2, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08199AFC + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08021DC8: .4byte gUnknown_82C5EF0 +_08021DCC: .4byte gUnknown_85CC9FC +_08021DD0: .4byte gUnknown_2021C40 +_08021DD4: .4byte gUnknown_2021C7C +_08021DD8: .4byte gUnknown_85CCA28 + thumb_func_end sub_08021ABC + + thumb_func_start sub_08021DDC +sub_08021DDC: @ 0x08021DDC + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r6, r1, #0 + adds r0, r6, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #5 + bls _08021DF0 + b _08021F88 +_08021DF0: + lsls r0, r0, #2 + ldr r1, _08021DFC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021DFC: .4byte _08021E00 +_08021E00: @ jump table + .4byte _08021E18 @ case 0 + .4byte _08021E64 @ case 1 + .4byte _08021E78 @ case 2 + .4byte _08021E9C @ case 3 + .4byte _08021F68 @ case 4 + .4byte _08021F70 @ case 5 +_08021E18: + ldrb r0, [r4, #9] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #0 + bl sub_080222B4 + ldrh r0, [r4, #0x12] + lsls r0, r0, #3 + ldr r2, _08021E40 + mov r1, sp + adds r0, r0, r2 + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + ldrh r0, [r4, #0x12] + cmp r0, #0xd + bne _08021E48 + ldr r0, _08021E44 + adds r0, #4 + b _08021E4A + .align 2, 0 +_08021E40: .4byte gUnknown_82C5EE4 +_08021E44: .4byte gUnknown_82C5F5C +_08021E48: + ldr r0, _08021E60 +_08021E4A: + adds r0, r5, r0 + ldrb r1, [r0] + mov r0, sp + strb r1, [r0, #4] + mov r0, sp + bl sub_08003250 + adds r1, r6, #0 + adds r1, #0x82 + strb r0, [r1] + b _08021F88 + .align 2, 0 +_08021E60: .4byte gUnknown_82C5F5C +_08021E64: + adds r4, r6, #0 + adds r4, #0x82 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + b _08021F88 +_08021E78: + adds r5, r6, #0 + adds r5, #0x82 + ldrb r0, [r5] + ldr r4, _08021E98 + adds r1, r4, #0 + movs r2, #0xd0 + bl sub_08098144 + ldrb r0, [r5] + movs r1, #0 + adds r2, r4, #0 + movs r3, #0xd + bl sub_08197F44 + b _08021F88 + .align 2, 0 +_08021E98: .4byte 0x0000021D +_08021E9C: + ldrb r0, [r4, #9] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4, #0x12] + cmp r0, #0xc + beq _08021EF8 + cmp r0, #0xc + bgt _08021EB4 + cmp r0, #0xb + beq _08021EBA + b _08021F88 +_08021EB4: + cmp r0, #0xd + beq _08021F44 + b _08021F88 +_08021EBA: + adds r0, r6, #0 + adds r0, #0x82 + ldrb r0, [r0] + ldr r3, _08021EF0 + movs r1, #0x14 + movs r2, #3 + bl sub_080216F8 + ldr r0, _08021EF4 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r3, r3, #3 + ldrb r1, [r4, #9] + movs r0, #0xd + muls r0, r1, r0 + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0xa0 + bl sub_08021758 + adds r1, r6, #0 + adds r1, #0x80 + movs r0, #5 + b _08021F90 + .align 2, 0 +_08021EF0: .4byte gUnknown_85CCA30 +_08021EF4: .4byte gUnknown_82C5F5C +_08021EF8: + adds r0, r6, #0 + adds r0, #0x82 + ldrb r0, [r0] + ldr r2, _08021F3C + adds r1, r4, #0 + adds r1, #0x8f + ldrb r1, [r1] + adds r1, #3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r3, [r1] + movs r1, #0x14 + movs r2, #4 + bl sub_080216F8 + ldr r0, _08021F40 + adds r0, r5, r0 + ldrb r3, [r0] + lsls r3, r3, #3 + ldrb r1, [r4, #9] + movs r0, #0xd + muls r0, r1, r0 + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0xa0 + bl sub_08021758 + adds r1, r6, #0 + adds r1, #0x80 + movs r0, #5 + b _08021F90 + .align 2, 0 +_08021F3C: .4byte gUnknown_82C7C40 +_08021F40: .4byte gUnknown_82C5F5C +_08021F44: + adds r0, r6, #0 + adds r0, #0x82 + ldrb r0, [r0] + ldr r3, _08021F64 + movs r1, #0x16 + movs r2, #3 + bl sub_080216F8 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0xb0 + movs r3, #0x12 + bl sub_08021758 + b _08021F88 + .align 2, 0 +_08021F64: .4byte gUnknown_85CCA40 +_08021F68: + adds r0, r4, #0 + bl sub_08021ABC + b _08021F88 +_08021F70: + adds r0, r6, #0 + adds r0, #0x82 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + adds r1, r6, #0 + adds r1, #0x80 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _08021F94 +_08021F88: + adds r1, r6, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 +_08021F90: + strb r0, [r1] + movs r0, #0 +_08021F94: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08021DDC + + thumb_func_start sub_08021F9C +sub_08021F9C: @ 0x08021F9C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xd3 + lsls r0, r0, #1 + adds r5, r4, r0 + ldrb r0, [r5] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r5] + bl sub_08003444 + adds r0, r4, #0 + bl sub_08022360 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08021F9C + + thumb_func_start sub_08021FC0 +sub_08021FC0: @ 0x08021FC0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + mov sb, r0 + movs r1, #0 + str r1, [sp, #0xc] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08021FF4 + adds r6, r0, r1 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #1 + beq _08022040 + cmp r0, #1 + bgt _08021FF8 + cmp r0, #0 + beq _08022006 + b _0802221A + .align 2, 0 +_08021FF4: .4byte gUnknown_3005B68 +_08021FF8: + cmp r0, #2 + bne _08021FFE + b _080221E0 +_08021FFE: + cmp r0, #3 + bne _08022004 + b _080221F4 +_08022004: + b _0802221A +_08022006: + ldr r0, _08022038 + bl sub_08003250 + strh r0, [r6, #2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + ldrb r0, [r6, #2] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r6, #2] + ldr r4, _0802203C + adds r1, r4, #0 + movs r2, #0xd0 + bl sub_08098144 + ldrb r0, [r6, #2] + movs r1, #0 + adds r2, r4, #0 + movs r3, #0xd + bl sub_08197F44 + b _0802221A + .align 2, 0 +_08022038: .4byte gUnknown_82C5F04 +_0802203C: .4byte 0x0000021D +_08022040: + ldr r0, _080221B0 + mov sl, r0 + movs r1, #1 + rsbs r1, r1, #0 + mov r8, r1 + movs r0, #1 + mov r1, sl + mov r2, r8 + bl sub_08005DAC + lsrs r0, r0, #1 + movs r4, #0x60 + subs r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r6, #2] + ldr r5, _080221B4 + str r5, [sp] + mov r1, sb + str r1, [sp, #4] + mov r1, sl + str r1, [sp, #8] + movs r1, #1 + adds r2, r7, #0 + movs r3, #2 + bl sub_08199AFC + ldr r0, _080221B8 + mov sl, r0 + movs r0, #1 + mov r1, sl + mov r2, r8 + bl sub_08005DAC + lsrs r0, r0, #1 + subs r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + ldrb r0, [r6, #2] + str r5, [sp] + mov r1, sb + str r1, [sp, #4] + mov r1, sl + str r1, [sp, #8] + movs r1, #1 + adds r2, r7, #0 + movs r3, #0x12 + bl sub_08199AFC + movs r0, #0x2a + mov sl, r0 +_080220A6: + mov r1, sb + adds r1, #2 + ldr r0, _080221BC + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r0, _080221C0 + ldr r1, _080221C4 + bl sub_08008BCC + ldrb r0, [r6, #2] + ldr r1, _080221C8 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _080221C0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #4 + mov r3, sl + bl sub_08199AFC + movs r0, #1 + ldr r1, _080221CC + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + movs r1, #0xbc + subs r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldrb r0, [r6, #2] + ldr r1, _080221C8 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _080221CC + str r1, [sp, #8] + movs r1, #1 + adds r2, r7, #0 + mov r3, sl + bl sub_08199AFC + movs r2, #0 + mov r0, sb + lsls r4, r0, #1 + mov r1, sl + adds r1, #0xd + str r1, [sp, #0x10] + movs r0, #1 + add sb, r0 + adds r0, r4, r6 + ldrb r3, [r0, #4] + movs r1, #1 + mov r8, r1 + ldr r5, _080221D0 +_0802211A: + movs r0, #7 + subs r1, r0, r2 + adds r0, r3, #0 + asrs r0, r1 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08022136 + lsls r0, r2, #2 + adds r0, r0, r5 + ldr r0, [r0] + ldr r1, [sp, #0xc] + adds r1, r1, r0 + str r1, [sp, #0xc] +_08022136: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0802211A + adds r0, r4, r6 + ldrh r1, [r0, #4] + lsrs r1, r1, #8 + ldr r0, _080221BC + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [sp, #0xc] + ldr r1, _080221D4 + bl __udivsi3 + adds r1, r0, #0 + ldr r0, _080221D8 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, _080221C0 + ldr r1, _080221DC + bl sub_08008BCC + adds r0, r7, #0 + subs r0, #0x31 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r6, #2] + ldr r1, _080221C8 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _080221C0 + str r1, [sp, #8] + movs r1, #0 + adds r2, r7, #0 + mov r3, sl + bl sub_08199AFC + ldr r1, [sp, #0x10] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r0, #0 + str r0, [sp, #0xc] + mov r1, sb + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #3 + bls _080220A6 + ldrb r0, [r6, #2] + movs r1, #3 + bl sub_08003528 + b _0802221A + .align 2, 0 +_080221B0: .4byte gUnknown_85CCA70 +_080221B4: .4byte gUnknown_82C5EF9 +_080221B8: .4byte gUnknown_85CCA7C +_080221BC: .4byte gUnknown_2021C40 +_080221C0: .4byte gUnknown_2021C7C +_080221C4: .4byte gUnknown_85CCA8C +_080221C8: .4byte gUnknown_82C5EF0 +_080221CC: .4byte gUnknown_85CCA20 +_080221D0: .4byte gUnknown_82C5F64 +_080221D4: .4byte 0x000F4240 +_080221D8: .4byte gUnknown_2021C54 +_080221DC: .4byte gUnknown_85CCA18 +_080221E0: + ldr r0, _080221F0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0802221A + b _08022220 + .align 2, 0 +_080221F0: .4byte gUnknown_3002360 +_080221F4: + ldrb r0, [r6, #2] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r6, #2] + bl sub_08003774 + ldrb r0, [r6, #2] + bl sub_08003444 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 + bl sub_080987E8 + mov r0, sb + b _0802221E +_0802221A: + ldrh r0, [r6] + adds r0, #1 +_0802221E: + strh r0, [r6] +_08022220: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08021FC0 + + thumb_func_start sub_08022230 +sub_08022230: @ 0x08022230 + push {lr} + bl sub_080987DC + ldr r0, _08022278 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802227C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _08022280 + ldr r2, [r0] + movs r3, #0xf6 + lsls r3, r3, #1 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, #0xc] + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, #0xe] + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, #0x10] + adds r3, #2 + adds r0, r2, r3 + ldrh r0, [r0] + strh r0, [r1, #0x12] + pop {r0} + bx r0 + .align 2, 0 +_08022278: .4byte sub_08021FC0 +_0802227C: .4byte gUnknown_3005B60 +_08022280: .4byte gUnknown_3005AF0 + thumb_func_end sub_08022230 + + thumb_func_start sub_08022284 +sub_08022284: @ 0x08022284 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08021674 + movs r0, #4 + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_08034E9C + movs r0, #6 + ldrsh r1, [r4, r0] + movs r0, #1 + bl sub_08034E9C + movs r0, #8 + ldrsh r1, [r4, r0] + movs r0, #2 + bl sub_08034E9C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08022284 + + thumb_func_start sub_080222B4 +sub_080222B4: @ 0x080222B4 + push {lr} + ldr r2, [r0, #0x78] + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #4 + orrs r1, r3 + strb r1, [r2] + ldr r1, [r0, #0x7c] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + movs r0, #2 + movs r1, #1 + bl sub_080352D4 + movs r0, #1 + movs r1, #1 + bl sub_080352D4 + movs r0, #0 + movs r1, #1 + bl sub_080352D4 + pop {r0} + bx r0 + thumb_func_end sub_080222B4 + + thumb_func_start sub_080222E8 +sub_080222E8: @ 0x080222E8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r6, #0 + ldrb r0, [r5, #9] + cmp r6, r0 + bhs _08022348 + ldr r7, _08022350 +_080222F6: + lsls r0, r6, #2 + movs r1, #0x98 + lsls r1, r1, #1 + adds r2, r5, r1 + adds r2, r2, r0 + ldrb r1, [r5, #9] + subs r1, #2 + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r6, r0 + adds r0, r0, r7 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08022354 + adds r0, r0, r1 + str r0, [r2] + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r1, _08022358 + adds r0, r0, r1 + bl sub_08003250 + ldr r1, _0802235C + adds r4, r5, r1 + adds r4, r4, r6 + strb r0, [r4] + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r5, #9] + cmp r6, r0 + blo _080222F6 +_08022348: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08022350: .4byte gUnknown_82C7A08 +_08022354: .4byte gUnknown_82C7A1C +_08022358: .4byte gUnknown_82C5F0C +_0802235C: .4byte 0x000001A7 + thumb_func_end sub_080222E8 + + thumb_func_start sub_08022360 +sub_08022360: @ 0x08022360 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r7, r0, #0 + movs r6, #0 + ldrb r0, [r7, #9] + cmp r6, r0 + bhs _0802241A + mov r8, r6 +_08022374: + ldr r1, _080223C0 + adds r0, r7, r1 + adds r5, r0, r6 + ldrb r0, [r5] + bl sub_0800365C + ldrb r0, [r7, #8] + cmp r6, r0 + bne _080223C8 + lsls r4, r6, #3 + subs r4, r4, r6 + lsls r4, r4, #2 + adds r4, #0x98 + adds r4, r7, r4 + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + bl sub_08005DAC + lsrs r0, r0, #1 + movs r2, #0x24 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r1, [sp, #4] + ldr r1, _080223C4 + str r1, [sp, #8] + mov r1, r8 + str r1, [sp, #0xc] + str r4, [sp, #0x10] + movs r1, #1 + movs r3, #1 + bl sub_08199B84 + b _08022400 + .align 2, 0 +_080223C0: .4byte 0x000001A7 +_080223C4: .4byte gUnknown_82C5EF3 +_080223C8: + lsls r4, r6, #3 + subs r4, r4, r6 + lsls r4, r4, #2 + adds r4, #0x98 + adds r4, r7, r4 + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + bl sub_08005DAC + lsrs r0, r0, #1 + movs r2, #0x24 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r5] + mov r1, r8 + str r1, [sp] + str r1, [sp, #4] + ldr r1, _0802242C + str r1, [sp, #8] + mov r1, r8 + str r1, [sp, #0xc] + str r4, [sp, #0x10] + movs r1, #1 + movs r3, #1 + bl sub_08199B84 +_08022400: + ldr r1, _08022430 + adds r0, r7, r1 + adds r0, r0, r6 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r7, #9] + cmp r6, r0 + blo _08022374 +_0802241A: + movs r0, #0 + bl sub_08002248 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802242C: .4byte gUnknown_82C5EF6 +_08022430: .4byte 0x000001A7 + thumb_func_end sub_08022360 + + thumb_func_start sub_08022434 +sub_08022434: @ 0x08022434 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + movs r5, #0 + ldr r0, _08022448 + ldr r4, _0802244C + adds r1, r4, #0 + bl LZ77UnCompWram + b _0802247E + .align 2, 0 +_08022448: .4byte gUnknown_82C79C4 +_0802244C: .4byte gUnknown_201C000 +_08022450: + lsls r1, r5, #2 + movs r2, #0x98 + lsls r2, r2, #1 + adds r0, r6, r2 + adds r0, r0, r1 + ldr r3, [r0] + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r4, r1 + ldrb r2, [r3, #1] + ldrb r3, [r3, #2] + movs r0, #0xa + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #3 + bl sub_080022B0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0802247E: + ldrb r0, [r6, #9] + cmp r5, r0 + blo _08022450 + movs r0, #3 + bl sub_08002248 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08022434 + + thumb_func_start sub_08022494 +sub_08022494: @ 0x08022494 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r5, #0 + ldr r0, _08022694 + strh r0, [r6, #0x2a] + strh r5, [r6, #0x2c] + ldr r1, _08022698 + strh r5, [r1] + ldr r1, _0802269C + strh r0, [r1] + ldr r4, _080226A0 +_080224AA: + lsls r0, r5, #3 + adds r0, r0, r4 + bl sub_08034388 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080224AA + ldr r0, _080226A4 + bl sub_080084A8 + ldr r0, _080226A8 + movs r1, #0x78 + movs r2, #0x58 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0xa2 + lsls r0, r0, #1 + adds r3, r6, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080226AC + adds r0, r0, r1 + str r0, [r3] + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + ldr r1, [r3] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #2 + 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, #9] + cmp r5, r1 + bhs _08022586 + movs r7, #4 +_0802250E: + lsls r4, r5, #2 + movs r3, #0x98 + lsls r3, r3, #1 + adds r0, r6, r3 + adds r0, r0, r4 + ldr r0, [r0] + ldrh r1, [r0, #4] + adds r1, #0x78 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r0, #6] + adds r2, #0x20 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r0, _080226B0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0xa4 + lsls r0, r0, #1 + adds r3, r6, r0 + adds r3, r3, r4 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r0, _080226AC + adds r1, r1, r0 + str r1, [r3] + ldrb r0, [r1, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r0, r2 + orrs r0, r7 + strb r0, [r1, #5] + 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, #2 + 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, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6, #9] + cmp r5, r0 + blo _0802250E +_08022586: + movs r5, #0 + ldr r4, _080226B4 + adds r7, r4, #1 +_0802258C: + lsls r2, r5, #1 + adds r0, r2, r4 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r1, #0x78 + adds r2, r2, r7 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r2, #0x88 + ldr r0, _080226B8 + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r5, #2 + movs r1, #0xb8 + lsls r1, r1, #1 + adds r3, r6, r1 + adds r3, r3, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080226AC + adds r0, r0, r1 + str r0, [r3] + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + ldr r2, [r3] + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + 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, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xa + bls _0802258C + movs r5, #0 +_080225F2: + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #0x13 + movs r3, #0xb0 + lsls r3, r3, #0x10 + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldr r0, _080226BC + movs r2, #8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r5, #2 + movs r4, #0xce + lsls r4, r4, #1 + adds r3, r6, r4 + adds r3, r3, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080226AC + adds r0, r0, r1 + str r0, [r3] + ldrb r1, [r0, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r1, r2 + strb r1, [r0, #5] + ldr r2, [r3] + adds r2, #0x3e + ldrb r0, [r2] + adds r4, #8 + adds r1, r4, #0 + ands r0, r1 + strb r0, [r2] + ldr r2, [r3] + adds r2, #0x2c + ldrb r0, [r2] + movs r3, #0x41 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _080225F2 + ldr r4, _080226C0 + movs r0, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_08034B6C + adds r2, r4, #0 + adds r2, #0x10 + movs r0, #1 + movs r1, #0 + bl sub_08034B6C + adds r4, #0x20 + movs r0, #2 + movs r1, #0 + adds r2, r4, #0 + bl sub_08034B6C + ldrh r0, [r6, #0x12] + cmp r0, #1 + bne _0802268C + movs r4, #0x92 + lsls r4, r4, #1 + adds r0, r6, r4 + bl sub_080222B4 +_0802268C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08022694: .4byte 0x0000FF98 +_08022698: .4byte gUnknown_2021B38 +_0802269C: .4byte gUnknown_2021B3A +_080226A0: .4byte gUnknown_82C7A80 +_080226A4: .4byte gUnknown_82C7AA8 +_080226A8: .4byte gUnknown_82C7B98 +_080226AC: .4byte gUnknown_20205AC +_080226B0: .4byte gUnknown_82C7BB0 +_080226B4: .4byte gUnknown_82C7A5E +_080226B8: .4byte gUnknown_82C7BC8 +_080226BC: .4byte gUnknown_82C7BE0 +_080226C0: .4byte gUnknown_82C7C10 + thumb_func_end sub_08022494 + + thumb_func_start sub_080226C4 +sub_080226C4: @ 0x080226C4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #4 + bl sub_08008280 + movs r0, #3 + bl sub_08008280 + movs r0, #2 + bl sub_08008280 + movs r0, #1 + bl sub_08008280 + movs r0, #4 + bl sub_08008564 + movs r0, #2 + bl sub_08008564 + movs r0, #1 + bl sub_08008564 + movs r0, #0xce + lsls r0, r0, #1 + adds r6, r5, r0 +_080226FA: + lsls r0, r4, #2 + adds r0, r6, r0 + ldr r0, [r0] + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _080226FA + movs r0, #2 + bl sub_08035234 + movs r0, #1 + bl sub_08035234 + movs r0, #0 + bl sub_08035234 + movs r4, #0 + movs r1, #0xb8 + lsls r1, r1, #1 + adds r6, r5, r1 +_08022728: + lsls r0, r4, #2 + adds r0, r6, r0 + ldr r0, [r0] + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xa + bls _08022728 + movs r4, #0 + ldrb r2, [r5, #9] + cmp r4, r2 + bhs _08022760 +_08022744: + lsls r1, r4, #2 + movs r2, #0xa4 + lsls r2, r2, #1 + adds r0, r5, r2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5, #9] + cmp r4, r0 + blo _08022744 +_08022760: + movs r1, #0xa2 + lsls r1, r1, #1 + adds r0, r5, r1 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802277C + adds r0, r2, #0 + bl sub_08006E00 +_0802277C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080226C4 + + thumb_func_start sub_08022784 +sub_08022784: @ 0x08022784 + push {lr} + adds r3, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080227AA + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + subs r2, #0x12 + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] +_080227AA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08022784 + + thumb_func_start sub_080227B0 +sub_080227B0: @ 0x080227B0 + push {r4, r5, lr} + adds r3, r0, #0 + movs r1, #0 + ldr r5, _080227F4 + adds r2, r3, #0 + adds r2, #0x2e + movs r4, #0 +_080227BE: + lsls r0, r1, #1 + adds r0, r2, r0 + strh r4, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _080227BE + movs r0, #0 + strh r0, [r3, #0x24] + strh r0, [r3, #0x26] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + 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 +_080227F4: .4byte sub_08007140 + thumb_func_end sub_080227B0 + + thumb_func_start sub_080227F8 +sub_080227F8: @ 0x080227F8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x2e + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + strh r0, [r5, #0x26] + movs r1, #0xe + ldrsh r0, [r4, r1] + movs r6, #0x80 + lsls r6, r6, #8 + ands r0, r6 + cmp r0, #0 + beq _0802285E + ldrh r0, [r4, #6] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r5, #0x2e] + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #8] + adds r0, r0, r1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + movs r2, #0xc + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r5, #0x24] + movs r1, #0xe + ldrsh r0, [r4, r1] + ands r0, r6 + cmp r0, #0 + beq _0802285E + ldrh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + cmp r0, #0x7e + ble _0802285E + movs r0, #0 + strh r0, [r5, #0x24] + ldrh r1, [r4, #0xe] + ldr r0, _08022884 + ands r0, r1 + strh r0, [r4, #0xe] +_0802285E: + ldrh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + strh r0, [r5, #0x20] + movs r2, #0x22 + ldrsh r1, [r5, r2] + movs r2, #0x26 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + ldrh r2, [r4, #0xe] + ldr r0, _08022884 + ands r0, r2 + cmp r1, r0 + ble _0802287E + ldr r0, _08022888 + str r0, [r5, #0x1c] +_0802287E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08022884: .4byte 0x00007FFF +_08022888: .4byte sub_080227B0 + thumb_func_end sub_080227F8 + + thumb_func_start sub_0802288C +sub_0802288C: @ 0x0802288C + push {r4, r5, r6, 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, r2, #2 + strh r2, [r7, #2] + movs r0, #0x20 + strh r0, [r7, #4] + movs r1, #0xa8 + strh r1, [r7, #0xe] + movs r0, #0x24 + ldrsh r4, [r6, r0] + lsls r4, r4, #0x17 + lsrs r4, r4, #0x10 + ldrh r0, [r6, #0x22] + subs r1, r1, r0 + lsls r1, r1, #0x17 + asrs r1, r1, #0x10 + adds r2, #0x20 + asrs r2, r2, #1 + movs r0, #7 + bl sub_081515B0 + adds r5, r0, #0 + ldrh r0, [r6, #0x20] + lsls r0, r0, #7 + strh r0, [r6, #0x2e] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + movs r0, #7 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081515B0 + strh r0, [r7, #6] + movs r0, #7 + adds r1, r5, #0 + movs r2, #0x55 + bl sub_0815152C + adds r2, r0, #0 + mov r1, r8 + strh r1, [r7, #8] + movs r1, #0xfe + lsls r1, r1, #6 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r0, #7 + bl sub_081515B0 + strh r0, [r7, #0xa] + movs r2, #0x24 + ldrsh r0, [r6, r2] + cmp r0, #0 + bge _0802290A + adds r0, #3 +_0802290A: + asrs r0, r0, #2 + strh r0, [r7, #0xc] + ldrh r0, [r7, #0xe] + ldr r2, _08022948 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7, #0xe] + mov r0, r8 + strh r0, [r6, #0x26] + strh r0, [r6, #0x24] + ldr r0, _0802294C + str r0, [r6, #0x1c] + adds r2, r6, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r2, #0x12 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08022948: .4byte 0xFFFF8000 +_0802294C: .4byte sub_080227F8 + thumb_func_end sub_0802288C + + thumb_func_start sub_08022950 +sub_08022950: @ 0x08022950 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r2, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + mov r8, r4 + bl sub_08020918 + adds r6, r0, #0 + cmp r5, #0x19 + bls _0802296E + movs r5, #0 +_0802296E: + cmp r4, #0 + beq _08022978 + cmp r4, #1 + beq _080229A4 + b _080229AE +_08022978: + cmp r5, #0 + beq _0802298C + ldr r0, _080229A0 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r2, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + bl _call_via_r2 +_0802298C: + ldrb r0, [r6, #0xe] + cmp r0, #0x19 + bls _08022996 + mov r0, r8 + strb r0, [r6, #0xe] +_08022996: + ldr r0, _080229A0 + ldrb r1, [r6, #0xe] + lsls r1, r1, #2 + b _080229A8 + .align 2, 0 +_080229A0: .4byte gUnknown_82C7C58 +_080229A4: + ldr r0, _080229B8 + lsls r1, r5, #2 +_080229A8: + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r6, #4] +_080229AE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080229B8: .4byte gUnknown_82C7C58 + thumb_func_end sub_08022950 + + thumb_func_start sub_080229BC +sub_080229BC: @ 0x080229BC + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldrb r2, [r1] + ldrb r3, [r1, #1] + lsls r3, r3, #8 + orrs r2, r3 + ldrb r3, [r1, #2] + lsls r3, r3, #0x10 + orrs r2, r3 + ldrb r3, [r1, #3] + lsls r3, r3, #0x18 + adds r0, r2, #0 + orrs r0, r3 + ldrb r2, [r1, #9] + strb r2, [r1] + ldrb r4, [r1, #8] + lsls r4, r4, #8 + ldrb r2, [r1, #7] + orrs r4, r2 + ldr r5, _08022A10 + ldrb r3, [r5, #8] + movs r2, #0x7f + ands r2, r3 + strb r2, [r5, #8] + movs r5, #4 + ldrsb r5, [r1, r5] + ldrb r2, [r1, #5] + ldrb r3, [r1, #6] + str r4, [sp] + adds r1, r5, #0 + bl sub_080A139C + bl sub_080A12E4 + movs r0, #2 + strb r0, [r6, #0xe] + movs r0, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08022A10: .4byte gUnknown_2037C74 + thumb_func_end sub_080229BC + + thumb_func_start sub_08022A14 +sub_08022A14: @ 0x08022A14 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08022A48 + cmp r0, #1 + bgt _08022A2A + cmp r0, #0 + beq _08022A34 + b _08022A6A +_08022A2A: + cmp r0, #2 + beq _08022A4E + cmp r0, #3 + beq _08022A5A + b _08022A6A +_08022A34: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022A70 + ldrb r0, [r5] + cmp r0, #0 + bne _08022A6A + movs r0, #3 + b _08022A6E +_08022A48: + bl sub_0800FF34 + b _08022A6A +_08022A4E: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022A6A + b _08022A70 +_08022A5A: + ldrb r0, [r4, #0xf] + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #0 + strb r0, [r4, #0xc] + b _08022A72 +_08022A6A: + ldrb r0, [r4, #0xc] + adds r0, #1 +_08022A6E: + strb r0, [r4, #0xc] +_08022A70: + movs r0, #0 +_08022A72: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08022A14 + + thumb_func_start sub_08022A78 +sub_08022A78: @ 0x08022A78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r7, r0, #0 + adds r5, r1, #0 + ldrb r4, [r5, #3] + lsls r4, r4, #8 + ldrb r0, [r5, #2] + orrs r4, r0 + ldrb r6, [r7, #0xc] + cmp r6, #1 + beq _08022B24 + cmp r6, #1 + bgt _08022A9C + cmp r6, #0 + beq _08022AA6 + b _08022B6C +_08022A9C: + cmp r6, #2 + beq _08022B3C + cmp r6, #3 + beq _08022B4C + b _08022B6C +_08022AA6: + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldrb r1, [r5, #1] + movs r0, #2 + mov r8, r0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08022AF4 + ldr r4, _08022AEC + ldr r1, _08022AF0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + ldrb r3, [r7, #0xb] + str r6, [sp] + mov r0, r8 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_08196E2C + b _08022B16 + .align 2, 0 +_08022AEC: .4byte gUnknown_2021C7C +_08022AF0: .4byte gUnknown_82C5EBC +_08022AF4: + ldr r1, _08022B20 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r3, [r7, #0xb] + str r4, [sp] + mov r0, r8 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C +_08022B16: + movs r0, #0 + movs r1, #3 + bl sub_08003528 + b _08022B6C + .align 2, 0 +_08022B20: .4byte gUnknown_82C5EBC +_08022B24: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08022B72 + cmp r4, #0 + bne _08022B6C + ldrb r0, [r7, #0xc] + adds r0, #1 + strb r0, [r7, #0xc] + b _08022B6C +_08022B3C: + ldr r0, _08022B48 + ldrh r0, [r0, #0x2e] + ands r4, r0 + cmp r4, #0 + bne _08022B6C + b _08022B72 + .align 2, 0 +_08022B48: .4byte gUnknown_3002360 +_08022B4C: + ldrb r1, [r5, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08022B5E + movs r0, #0 + movs r1, #1 + bl sub_08197028 +_08022B5E: + ldrb r0, [r7, #0xe] + movs r1, #1 + movs r2, #0 + bl sub_08022950 + ldrb r0, [r5, #4] + b _08022B70 +_08022B6C: + ldrb r0, [r7, #0xc] + adds r0, #1 +_08022B70: + strb r0, [r7, #0xc] +_08022B72: + movs r0, #0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08022A78 + + thumb_func_start sub_08022B80 +sub_08022B80: @ 0x08022B80 + push {r4, lr} + adds r4, r0, #0 + bl sub_08020D74 + cmp r0, #0 + beq _08022B98 + ldrb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x36 + movs r1, #0 + bl sub_08022950 +_08022B98: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08022B80 + + thumb_func_start sub_08022BA0 +sub_08022BA0: @ 0x08022BA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08021038 + cmp r0, #0 + beq _08022BB8 + ldrb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x36 + movs r1, #0 + bl sub_08022950 +_08022BB8: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08022BA0 + + thumb_func_start sub_08022BC0 +sub_08022BC0: @ 0x08022BC0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08022BD0 + cmp r0, #1 + beq _08022BD6 + b _08022C00 +_08022BD0: + bl sub_0800FF34 + b _08022C00 +_08022BD6: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022C06 + ldr r0, _08022BFC + bl sub_080A27D8 + movs r0, #7 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #3 + strh r0, [r4, #0x12] + strb r1, [r4, #0xc] + b _08022C06 + .align 2, 0 +_08022BFC: .4byte 0x000001E5 +_08022C00: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_08022C06: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08022BC0 + + thumb_func_start sub_08022C10 +sub_08022C10: @ 0x08022C10 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08022C26 + cmp r0, #1 + beq _08022C4C + adds r0, #1 + b _08022C5C +_08022C26: + adds r0, r4, #0 + bl sub_08024340 + movs r0, #1 + str r0, [sp] + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + movs r3, #0 + bl sub_08024410 + movs r0, #7 + strb r0, [r4, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _08022C5E +_08022C4C: + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #5 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #2 +_08022C5C: + strb r0, [r4, #0xc] +_08022C5E: + movs r0, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08022C10 + + thumb_func_start sub_08022C68 +sub_08022C68: @ 0x08022C68 + push {lr} + movs r1, #0 + str r1, [r0, #4] + ldr r0, _08022C7C + bl sub_08000540 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08022C7C: .4byte sub_08020B38 + thumb_func_end sub_08022C68 + + thumb_func_start sub_08022C80 +sub_08022C80: @ 0x08022C80 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r2, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #5 + bls _08022C90 + b _08022DCC +_08022C90: + lsls r0, r0, #2 + ldr r1, _08022C9C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022C9C: .4byte _08022CA0 +_08022CA0: @ jump table + .4byte _08022CB8 @ case 0 + .4byte _08022CD8 @ case 1 + .4byte _08022CDE @ case 2 + .4byte _08022D12 @ case 3 + .4byte _08022D22 @ case 4 + .4byte _08022DB0 @ case 5 +_08022CB8: + movs r0, #1 + str r0, [sp] + adds r0, r2, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_08024410 + movs r0, #9 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _08022DD2 +_08022CD8: + bl sub_0800FF34 + b _08022DCC +_08022CDE: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022DD2 + adds r4, r5, #0 + adds r4, #0x42 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0xc + bl memset + ldrb r1, [r5, #8] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r0, #0xa0 + ldrh r0, [r0] + strh r0, [r4] + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_0800A070 + b _08022DCC +_08022D12: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022DD2 + movs r0, #0 + strh r0, [r5, #0x10] + b _08022DCC +_08022D22: + bl sub_0800A114 + ldr r2, _08022DA4 + ldrb r4, [r5, #9] + subs r1, r4, #2 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _08022DD2 + movs r3, #0 + cmp r3, r4 + bhs _08022D8A + ldr r7, _08022DA8 + movs r6, #0 + ldr r4, _08022DAC +_08022D44: + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r5, r0 + lsls r1, r3, #8 + adds r1, r1, r7 + ldrh r1, [r1] + adds r2, r0, #0 + adds r2, #0xa0 + strh r1, [r2] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xb0 + bls _08022D62 + strh r6, [r2] +_08022D62: + ldrh r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r5, #0x18] + ldrb r1, [r1] + adds r0, r0, r1 + strh r0, [r5, #0x18] + ldrh r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #2] + ldr r0, [r5, #0x1c] + adds r0, r0, r1 + str r0, [r5, #0x1c] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r5, #9] + cmp r3, r0 + blo _08022D44 +_08022D8A: + movs r0, #0 + strh r0, [r5, #0x10] + bl sub_0800A178 + movs r1, #0x18 + ldrsh r0, [r5, r1] + lsls r0, r0, #8 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_081515D8 + str r0, [r5, #0x20] + b _08022DCC + .align 2, 0 +_08022DA4: .4byte gUnknown_82C7CD4 +_08022DA8: .4byte gUnknown_202207C +_08022DAC: .4byte gUnknown_8563604 +_08022DB0: + movs r0, #0 + movs r1, #1 + bl sub_08197028 + movs r0, #0xa + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #4 + strh r0, [r5, #0x12] + strb r1, [r5, #0xc] + b _08022DD2 +_08022DCC: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_08022DD2: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08022C80 + + thumb_func_start sub_08022DDC +sub_08022DDC: @ 0x08022DDC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #6 + bls _08022DE8 + b _08022F14 +_08022DE8: + lsls r0, r0, #2 + ldr r1, _08022DF4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022DF4: .4byte _08022DF8 +_08022DF8: @ jump table + .4byte _08022E14 @ case 0 + .4byte _08022E26 @ case 1 + .4byte _08022E54 @ case 2 + .4byte _08022E8C @ case 3 + .4byte _08022EBC @ case 4 + .4byte _08022EDE @ case 5 + .4byte _08022EF0 @ case 6 +_08022E14: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r4, r0 + adds r0, r4, #0 + bl sub_080211D4 + bl sub_0800FF34 + b _08022F14 +_08022E26: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022F1A + movs r2, #0x92 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r0, #0 + strb r0, [r1] + ldr r3, _08022E50 + adds r1, r4, r3 + strb r0, [r1] + adds r2, #2 + adds r1, r4, r2 + strb r0, [r1] + adds r3, #2 + adds r1, r4, r3 + strb r0, [r1] + b _08022F14 + .align 2, 0 +_08022E50: .4byte 0x00000125 +_08022E54: + movs r0, #0x92 + lsls r0, r0, #1 + adds r3, r4, r0 + ldrb r0, [r3] + lsls r0, r0, #2 + movs r2, #0xae + lsls r2, r2, #1 + adds r1, r4, r2 + adds r0, r1, r0 + ldr r2, [r0] + ldr r0, _08022E88 + str r0, [r2, #0x1c] + ldrb r0, [r3] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r1, #0x2c + ldrb r2, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1] + movs r0, #0x3d + bl sub_080A306C + b _08022F14 + .align 2, 0 +_08022E88: .4byte sub_08021338 +_08022E8C: + movs r3, #0x92 + lsls r3, r3, #1 + adds r2, r4, r3 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r3, #0x38 + adds r1, r4, r3 + adds r3, r1, r0 + ldr r0, [r3] + ldr r1, [r0, #0x1c] + ldr r0, _08022EB8 + cmp r1, r0 + beq _08022F1A + movs r0, #0 + str r0, [r3] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + bl sub_0800FF34 + b _08022F14 + .align 2, 0 +_08022EB8: .4byte sub_08021338 +_08022EBC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022F1A + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r4, r0 + ldrb r0, [r1] + ldrb r2, [r4, #9] + cmp r0, r2 + bhs _08022ED8 + movs r0, #2 + b _08022F18 +_08022ED8: + movs r0, #0 + strb r0, [r1] + b _08022F14 +_08022EDE: + movs r3, #0x92 + lsls r3, r3, #1 + adds r1, r4, r3 + adds r0, r4, #0 + bl sub_080213D8 + bl sub_0800FF34 + b _08022F14 +_08022EF0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08022F1A + movs r0, #0x2b + bl sub_080A306C + movs r0, #0xb + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #5 + strh r0, [r4, #0x12] + strb r1, [r4, #0xc] + b _08022F1A +_08022F14: + ldrb r0, [r4, #0xc] + adds r0, #1 +_08022F18: + strb r0, [r4, #0xc] +_08022F1A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08022DDC + + thumb_func_start sub_08022F24 +sub_08022F24: @ 0x08022F24 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #1 + beq _08022F88 + cmp r1, #1 + bgt _08022F38 + cmp r1, #0 + beq _08022F42 + b _08023048 +_08022F38: + cmp r1, #2 + beq _08023008 + cmp r1, #3 + beq _0802302A + b _08023048 +_08022F42: + ldrh r0, [r4, #0x2a] + adds r0, #4 + strh r0, [r4, #0x2a] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08022F50 + b _0802304E +_08022F50: + strh r1, [r4, #0x2a] + ldr r0, _08022F80 + adds r3, r4, r0 + movs r0, #4 + strb r0, [r3] + movs r2, #0x92 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r0, #0 + strb r0, [r1] + ldr r2, _08022F84 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + movs r2, #0x93 + lsls r2, r2, #1 + adds r1, r4, r2 + strb r0, [r1] + movs r0, #0xd6 + bl sub_080A306C + b _08023048 + .align 2, 0 +_08022F80: .4byte 0x00000125 +_08022F84: .4byte gUnknown_82C5E84 +_08022F88: + ldr r7, _08023000 + movs r0, #0x92 + lsls r0, r0, #1 + adds r6, r4, r0 + ldr r1, _08023004 + adds r5, r4, r1 + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + ldrb r2, [r6] + adds r0, r0, r2 + adds r0, r0, r7 + movs r1, #0 + ldrsb r1, [r0, r1] + strh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x12 + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1e + bl sub_08001144 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + movs r1, #0x93 + lsls r1, r1, #1 + adds r2, r4, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r2] + cmp r0, r1 + blo _0802304E + ldrb r0, [r5] + cmp r0, #0 + beq _08023048 + subs r0, #1 + strb r0, [r5] + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #0 + strb r0, [r6] + b _0802304E + .align 2, 0 +_08023000: .4byte gUnknown_82C5E84 +_08023004: .4byte 0x00000125 +_08023008: + movs r0, #0 + strh r0, [r4, #0x2c] + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + bl sub_0800FF34 + b _08023048 +_0802302A: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802304E + movs r0, #0xc + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #6 + strh r0, [r4, #0x12] + strb r1, [r4, #0xc] + b _0802304E +_08023048: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0802304E: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08022F24 + + thumb_func_start sub_08023058 +sub_08023058: @ 0x08023058 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08023078 + cmp r0, #1 + bgt _0802306E + cmp r0, #0 + beq _0802309E + b _080230F8 +_0802306E: + cmp r0, #2 + beq _08023096 + cmp r0, #3 + beq _080230A4 + b _080230F8 +_08023078: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080230FE + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x78 + movs r3, #0x50 + bl sub_0802E788 + b _080230F8 +_08023096: + bl sub_0802E7E8 + cmp r0, #0 + bne _080230FE +_0802309E: + bl sub_0800FF34 + b _080230F8 +_080230A4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080230FE + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r4, r0 + movs r0, #0 + strb r0, [r1] + ldr r2, _080230E0 + adds r1, r4, r2 + strb r0, [r1] + adds r2, #1 + adds r1, r4, r2 + strb r0, [r1] + adds r2, #1 + adds r1, r4, r2 + strb r0, [r1] + strh r0, [r4, #0x10] + ldrb r0, [r4, #8] + cmp r0, #0 + bne _080230E4 + movs r0, #0xd + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _080230EE + .align 2, 0 +_080230E0: .4byte 0x00000125 +_080230E4: + movs r0, #0xe + movs r1, #1 + movs r2, #0 + bl sub_08022950 +_080230EE: + movs r1, #0 + movs r0, #7 + strh r0, [r4, #0x12] + strb r1, [r4, #0xc] + b _080230FE +_080230F8: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_080230FE: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08023058 + + thumb_func_start sub_08023108 +sub_08023108: @ 0x08023108 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + movs r0, #0 + mov r8, r0 + movs r2, #0 + adds r6, r2, #0 + ldrb r1, [r5, #9] + cmp r6, r1 + blo _08023124 + b _0802322E +_08023124: + movs r2, #0x5e + adds r2, r2, r5 + mov sb, r2 + ldr r3, _080231D4 + mov sl, r3 +_0802312E: + lsls r0, r6, #4 + ldr r1, _080231D8 + adds r2, r0, r1 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + movs r3, #0xbc + lsls r3, r3, #6 + cmp r0, r3 + bne _08023220 + ldrh r0, [r2, #2] + cmp r0, #2 + bne _08023220 + ldrb r1, [r2, #4] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08023214 + mov r0, sb + ldrb r2, [r0] + lsrs r1, r2, #3 + mov r3, sl + adds r0, r6, r3 + ldrb r0, [r0] + orrs r1, r0 + lsls r1, r1, #3 + movs r0, #7 + ands r0, r2 + orrs r0, r1 + mov r1, sb + strb r0, [r1] + lsls r2, r6, #3 + subs r0, r2, r6 + lsls r0, r0, #2 + adds r3, r5, r0 + adds r1, r3, #0 + adds r1, #0xb1 + movs r0, #1 + strb r0, [r1] + subs r1, #7 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + subs r1, #8 + ldrh r0, [r5, #0x28] + ldrh r1, [r1] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0xa6 + adds r0, r0, r3 + mov ip, r0 + ldrh r1, [r0] + subs r0, r1, #1 + adds r7, r2, #0 + cmp r4, r0 + blt _080231DC + adds r0, r1, #1 + cmp r4, r0 + bgt _080231DC + adds r1, r3, #0 + adds r1, #0xa4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + mov r2, ip + strh r4, [r2] + adds r0, r3, #0 + adds r0, #0xa8 + ldrh r1, [r1] + ldrh r3, [r0] + cmp r1, r3 + bls _080231EE + strh r1, [r0] + b _080231EE + .align 2, 0 +_080231D4: .4byte gUnknown_82C5E74 +_080231D8: .4byte gUnknown_3003130 +_080231DC: + subs r0, r7, r6 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r2, r0, #0 + adds r2, #0xa4 + movs r1, #0 + strh r1, [r2] + adds r0, #0xa6 + strh r4, [r0] +_080231EE: + subs r0, r7, r6 + lsls r0, r0, #2 + adds r0, r5, r0 + ldrh r1, [r5, #0x28] + adds r3, r0, #0 + adds r3, #0xa2 + movs r4, #0 + strh r1, [r3] + adds r2, r0, #0 + adds r2, #0xb0 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _08023220 + strb r4, [r2] + b _08023220 +_08023214: + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r0, #0xb1 + strb r1, [r0] +_08023220: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r5, #9] + cmp r6, r0 + bhs _0802322E + b _0802312E +_0802322E: + mov r1, r8 + cmp r1, #1 + bls _08023268 + movs r6, #0 + ldrb r2, [r5, #9] + cmp r6, r2 + bhs _08023268 +_0802323C: + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r1, r5, r0 + adds r3, r1, #0 + adds r3, #0xb1 + ldrb r2, [r3] + cmp r2, #0 + beq _0802325C + movs r0, #2 + orrs r0, r2 + strb r0, [r3] + adds r1, #0xac + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0802325C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r3, [r5, #9] + cmp r6, r3 + blo _0802323C +_08023268: + mov r0, r8 + cmp r0, #0 + beq _080232D0 + ldrh r0, [r5, #0x2e] + add r0, r8 + strh r0, [r5, #0x2e] + ldr r1, _080232B8 + mov r0, r8 + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + add r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r0, [r5, #0x34] + add r0, r8 + strh r0, [r5, #0x34] + ldrh r0, [r5, #0x1a] + add r0, r8 + strh r0, [r5, #0x1a] + movs r1, #0x18 + ldrsh r0, [r5, r1] + movs r3, #0x1a + ldrsh r2, [r5, r3] + subs r0, r0, r2 + cmp r0, #0 + ble _080232BC + lsls r2, r2, #8 + ldr r1, [r5, #0x20] + adds r0, r2, #0 + bl sub_081515D8 + adds r2, r0, #0 + asrs r2, r2, #8 + adds r0, r5, #0 + adds r0, #0x24 + strb r2, [r0] + b _080232D0 + .align 2, 0 +_080232B8: .4byte gUnknown_82C5E7C +_080232BC: + adds r1, r5, #0 + adds r1, #0x24 + movs r0, #0x20 + strb r0, [r1] + adds r2, r5, #0 + adds r2, #0x5e + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_080232D0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08023108 + + thumb_func_start sub_080232E0 +sub_080232E0: @ 0x080232E0 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r6, #0 + movs r1, #0 + adds r4, r1, #0 + ldrb r0, [r3, #9] + cmp r4, r0 + bhs _0802333C + adds r5, r3, #0 + adds r5, #0x64 +_080232F4: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r3, r0 + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r2, [r0] + cmp r2, #0 + beq _08023330 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r1, #0 + adds r0, #0xb0 + ldrb r0, [r0] + adds r1, r0, #1 + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _08023320 + movs r0, #4 + orrs r1, r0 +_08023320: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r1, r0 + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + ldrh r0, [r5] + orrs r1, r0 + strh r1, [r5] +_08023330: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r1, [r3, #9] + cmp r4, r1 + blo _080232F4 +_0802333C: + adds r0, r3, #0 + adds r0, #0x24 + ldrb r1, [r0] + adds r0, #0x3c + strh r1, [r0] + cmp r6, #0 + bne _08023360 + ldr r2, _0802335C + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0802342C + movs r4, #0x92 + lsls r4, r4, #1 + adds r1, r3, r4 + b _0802339E + .align 2, 0 +_0802335C: .4byte 0x00000127 +_08023360: + ldr r5, _0802338C + adds r2, r3, r5 + ldrb r0, [r2] + cmp r0, #0 + beq _080233A6 + ldr r0, _08023390 + adds r1, r3, r0 + ldrb r2, [r1] + cmp r6, r2 + beq _08023398 + subs r0, r6, #1 + strb r0, [r1] + ldr r1, _08023394 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #0x93 + lsls r4, r4, #1 + adds r1, r3, r4 + strb r0, [r1] + b _080233CC + .align 2, 0 +_0802338C: .4byte 0x00000127 +_08023390: .4byte 0x00000125 +_08023394: .4byte gUnknown_82C5EA8 +_08023398: + movs r5, #0x92 + lsls r5, r5, #1 + adds r1, r3, r5 +_0802339E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080233CC +_080233A6: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r3, r0 + movs r0, #0 + strb r0, [r1] + subs r0, r6, #1 + ldr r4, _080233FC + adds r1, r3, r4 + strb r0, [r1] + ldr r1, _08023400 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r5, #0x93 + lsls r5, r5, #1 + adds r1, r3, r5 + strb r0, [r1] + movs r0, #1 + strb r0, [r2] +_080233CC: + ldr r0, _08023404 + adds r4, r3, r0 + ldrb r0, [r4] + cmp r0, #0 + beq _0802342C + movs r2, #0x92 + lsls r2, r2, #1 + adds r1, r3, r2 + movs r5, #0x93 + lsls r5, r5, #1 + adds r2, r3, r5 + ldrb r0, [r1] + ldrb r5, [r2] + cmp r0, r5 + blo _08023408 + movs r0, #0 + strb r0, [r1] + ldr r5, _080233FC + adds r1, r3, r5 + strb r0, [r1] + strb r0, [r2] + strb r0, [r4] + movs r1, #0 + b _0802341C + .align 2, 0 +_080233FC: .4byte 0x00000125 +_08023400: .4byte gUnknown_82C5EA8 +_08023404: .4byte 0x00000127 +_08023408: + ldr r2, _08023424 + ldrb r1, [r1] + ldr r4, _08023428 + adds r0, r3, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] +_0802341C: + adds r0, r3, #0 + adds r0, #0x5f + strb r1, [r0] + b _08023434 + .align 2, 0 +_08023424: .4byte gUnknown_82C5EA8 +_08023428: .4byte 0x00000125 +_0802342C: + adds r1, r3, #0 + adds r1, #0x5f + movs r0, #0 + strb r0, [r1] +_08023434: + ldrh r1, [r3, #0x26] + adds r0, r3, #0 + adds r0, #0x62 + strh r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080232E0 + + thumb_func_start sub_08023444 +sub_08023444: @ 0x08023444 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r3, _080234DC + ldrh r1, [r3, #0x2e] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08023466 + adds r2, r5, #0 + adds r2, #0x5e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08023466: + ldrh r1, [r3, #0x2c] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0802348A + ldrb r1, [r5, #8] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r1, r0, #0 + adds r1, #0xae + ldrh r0, [r1] + ldrh r2, [r5, #0x28] + cmp r0, r2 + bhs _0802348A + adds r0, #1 + strh r0, [r1] +_0802348A: + ldrb r0, [r5, #8] + adds r7, r5, #0 + adds r7, #0x5e + cmp r0, #0 + beq _080234A0 + ldrb r1, [r7] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080234A0 + b _080235DC +_080234A0: + adds r4, r5, #0 + adds r4, #0x5c + movs r0, #2 + strh r0, [r4] + ldrh r0, [r5, #0x28] + movs r1, #0x1e + bl __umodsi3 + lsls r0, r0, #0x10 + mov r8, r4 + adds r6, r5, #0 + adds r6, #0x25 + cmp r0, #0 + bne _080234F8 + movs r0, #0x2e + ldrsh r2, [r5, r0] + ldr r1, _080234E0 + ldrb r0, [r5, #9] + subs r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + ble _080234E4 + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + ldrb r0, [r6] + movs r1, #0x10 + orrs r0, r1 + b _080234EC + .align 2, 0 +_080234DC: .4byte gUnknown_3002360 +_080234E0: .4byte gUnknown_82C7CD0 +_080234E4: + ldrb r1, [r6] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 +_080234EC: + strb r0, [r6] + movs r0, #0 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] +_080234F8: + ldrh r0, [r5, #0x28] + movs r1, #0xf + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802356E + movs r0, #0x34 + ldrsh r2, [r5, r0] + ldr r3, _08023524 + ldrb r0, [r5, #9] + subs r0, #2 + lsls r1, r0, #2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bge _08023528 + ldrb r1, [r6] + movs r0, #0x1f + ands r0, r1 + strb r0, [r6] + b _08023568 + .align 2, 0 +_08023524: .4byte gUnknown_82C7CC0 +_08023528: + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0802353C + ldrb r0, [r6] + movs r1, #0x1f + ands r1, r0 + movs r0, #0x20 + b _08023564 +_0802353C: + adds r0, r3, #2 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0802354C + movs r0, #2 + strh r0, [r5, #0x34] + b _08023568 +_0802354C: + adds r0, r3, #3 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r2, r0 + bge _0802355C + movs r0, #3 + strh r0, [r5, #0x34] + b _08023568 +_0802355C: + ldrb r0, [r6] + movs r1, #0x1f + ands r1, r0 + movs r0, #0x80 +_08023564: + orrs r1, r0 + strb r1, [r6] +_08023568: + movs r0, #0 + strh r0, [r5, #0x34] + b _0802359A +_0802356E: + ldrh r0, [r5, #0x10] + adds r0, #1 + strh r0, [r5, #0x10] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x3c + bls _0802359A + cmp r0, #0x46 + bls _0802358A + bl sub_080115B4 + movs r0, #0 + strh r0, [r5, #0x10] + b _0802359A +_0802358A: + ldrb r0, [r7] + movs r4, #0xf8 + ands r4, r0 + cmp r4, #0 + bne _0802359A + bl sub_080115B4 + strh r4, [r5, #0x10] +_0802359A: + ldrh r1, [r5, #0x28] + ldr r0, _080235E8 + cmp r1, r0 + bls _080235AA + ldrb r0, [r7] + movs r1, #1 + orrs r0, r1 + strb r0, [r7] +_080235AA: + ldrb r1, [r6] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1f + lsls r1, r1, #1 + ldrb r2, [r7] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7] + ldrb r0, [r6] + lsrs r0, 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_0800F934 +_080235DC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080235E8: .4byte 0x00008C9F + thumb_func_end sub_08023444 + + thumb_func_start sub_080235EC +sub_080235EC: @ 0x080235EC + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r3, _0802363C + ldrb r0, [r5, #9] + cmp r4, r0 + bhs _08023614 + movs r1, #0 +_080235FC: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r0, #0xb1 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5, #9] + cmp r4, r0 + blo _080235FC +_08023614: + adds r2, r3, #0 + ldrh r0, [r2] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _0802362C + ldrh r0, [r2, #2] + cmp r0, #2 + beq _08023640 +_0802362C: + adds r2, r5, #0 + adds r2, #0x25 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _0802367E + .align 2, 0 +_0802363C: .4byte gUnknown_3003130 +_08023640: + adds r4, r5, #0 + adds r4, #0x4e + adds r0, r4, #0 + adds r1, r3, #0 + movs r2, #0xe + bl memcpy + ldrh r0, [r4, #6] + strh r0, [r5, #0x2a] + movs r0, #5 + ldrsb r0, [r4, r0] + strh r0, [r5, #0x2c] + ldrh r0, [r4, #8] + strh r0, [r5, #0x28] + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + adds r0, r5, #0 + bl sub_08021410 + ldrb r1, [r4, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802367E + adds r0, r5, #0 + adds r0, #0x25 + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] +_0802367E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080235EC + + thumb_func_start sub_08023684 +sub_08023684: @ 0x08023684 + 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_080235EC + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x12 + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1e + bl sub_08001144 + adds r0, r4, #0 + adds r0, #0x25 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0802370C + ldrh r1, [r4, #0x28] + ldr r0, _080236F4 + cmp r1, r0 + bls _080236F8 + adds r0, #1 + strh r0, [r4, #0x28] + movs r0, #0x10 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _08023702 + .align 2, 0 +_080236F4: .4byte 0x00008C9F +_080236F8: + movs r0, #0xf + movs r1, #1 + movs r2, #0 + bl sub_08022950 +_08023702: + movs r1, #0 + movs r0, #0 + strh r0, [r4, #0x10] + strb r1, [r4, #0xc] + b _08023726 +_0802370C: + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + adds r0, r4, #0 + bl sub_08023108 + adds r0, r4, #0 + bl sub_080232E0 + adds r0, r4, #0 + bl sub_08023444 + movs r0, #0 +_08023726: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08023684 + + thumb_func_start sub_0802372C +sub_0802372C: @ 0x0802372C + 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_080235EC + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x12 + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1e + bl sub_08001144 + adds r0, r4, #0 + adds r0, #0x25 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080237B4 + ldrh r1, [r4, #0x28] + ldr r0, _0802379C + cmp r1, r0 + bls _080237A0 + adds r0, #1 + strh r0, [r4, #0x28] + movs r0, #0x10 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _080237AA + .align 2, 0 +_0802379C: .4byte 0x00008C9F +_080237A0: + movs r0, #0xf + movs r1, #1 + movs r2, #0 + bl sub_08022950 +_080237AA: + movs r1, #0 + movs r0, #0 + strh r0, [r4, #0x10] + strb r1, [r4, #0xc] + b _080237BC +_080237B4: + adds r0, r4, #0 + bl sub_08023444 + movs r0, #0 +_080237BC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802372C + + thumb_func_start sub_080237C4 +sub_080237C4: @ 0x080237C4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #5 + bls _080237D0 + b _08023946 +_080237D0: + lsls r0, r0, #2 + ldr r1, _080237DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080237DC: .4byte _080237E0 +_080237E0: @ jump table + .4byte _080237F8 @ case 0 + .4byte _08023820 @ case 1 + .4byte _08023870 @ case 2 + .4byte _080238F0 @ case 3 + .4byte _0802390E @ case 4 + .4byte _08023928 @ case 5 +_080237F8: + movs r0, #8 + strh r0, [r4, #0x12] + movs r0, #0xd6 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + ldr r2, _0802381C + movs r1, #8 + bl sub_080A22E8 + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r4, r0 + movs r0, #2 + strb r0, [r1] + b _08023946 + .align 2, 0 +_0802381C: .4byte 0x000003FF +_08023820: + movs r1, #0x92 + lsls r1, r1, #1 + adds r5, r4, r1 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08023836 + b _0802394C +_08023836: + movs r0, #1 + rsbs r0, r0, #0 + ldr r2, _08023864 + movs r1, #0 + bl sub_080A22E8 + ldr r2, _08023868 + adds r1, r4, r2 + movs r0, #4 + strb r0, [r1] + movs r0, #0 + strb r0, [r5] + ldr r2, _0802386C + ldrb r1, [r1] + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + movs r2, #0x93 + lsls r2, r2, #1 + adds r1, r4, r2 + strb r0, [r1] + b _08023946 + .align 2, 0 +_08023864: .4byte 0x000003FF +_08023868: .4byte 0x00000125 +_0802386C: .4byte gUnknown_82C5E84 +_08023870: + ldr r7, _080238E8 + movs r0, #0x92 + lsls r0, r0, #1 + adds r6, r4, r0 + ldr r1, _080238EC + adds r5, r4, r1 + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + ldrb r2, [r6] + adds r0, r0, r2 + adds r0, r0, r7 + movs r1, #0 + ldrsb r1, [r0, r1] + strh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x12 + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldrh r1, [r4, #0x2c] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1e + bl sub_08001144 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + movs r1, #0x93 + lsls r1, r1, #1 + adds r2, r4, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r2] + cmp r0, r1 + blo _0802394C + ldrb r0, [r5] + cmp r0, #0 + beq _08023946 + subs r0, #1 + strb r0, [r5] + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #0 + strb r0, [r6] + b _0802394C + .align 2, 0 +_080238E8: .4byte gUnknown_82C5E84 +_080238EC: .4byte 0x00000125 +_080238F0: + movs r0, #0 + strh r0, [r4, #0x2c] + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + b _08023946 +_0802390E: + movs r2, #0x92 + lsls r2, r2, #1 + adds r1, r4, r2 + adds r0, r4, #0 + bl sub_08021604 + cmp r0, #0 + beq _0802394C + bl sub_0800FF34 + movs r0, #0 + strh r0, [r4, #0x10] + b _08023946 +_08023928: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802394C + movs r0, #0x11 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #0 + strh r0, [r4, #0x10] + strb r1, [r4, #0xc] + b _0802394E +_08023946: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0802394C: + movs r0, #0 +_0802394E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080237C4 + + thumb_func_start sub_08023954 +sub_08023954: @ 0x08023954 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #1 + beq _08023998 + cmp r0, #1 + bgt _0802396C + cmp r0, #0 + beq _08023976 + b _08023A30 +_0802396C: + cmp r0, #2 + beq _080239BE + cmp r0, #3 + beq _080239F0 + b _08023A30 +_08023976: + movs r0, #9 + strh r0, [r5, #0x12] + movs r0, #0x20 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #8 + movs r2, #0x1f + bl sub_080A22E8 + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #4 + strb r0, [r1] + b _08023A30 +_08023998: + movs r0, #0x92 + lsls r0, r0, #1 + adds r4, r5, r0 + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08023A36 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + movs r2, #0x1f + bl sub_080A22E8 + movs r0, #0 + strb r0, [r4] + b _08023A30 +_080239BE: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + adds r0, r5, #0 + bl sub_08021604 + cmp r0, #0 + beq _08023A36 + bl sub_0800FF34 + movs r0, #0 + strh r0, [r5, #0x10] + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + b _08023A30 +_080239F0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08023A36 + ldr r0, _08023A2C + ldr r1, [r5, #0x1c] + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + movs r4, #0 + str r4, [sp] + adds r0, r6, #0 + movs r1, #7 + movs r2, #1 + movs r3, #0 + bl sub_08024410 + movs r0, #0x13 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #0 + strh r4, [r5, #0x10] + b _08023A34 + .align 2, 0 +_08023A2C: .4byte gUnknown_2021C40 +_08023A30: + ldrb r0, [r5, #0xc] + adds r0, #1 +_08023A34: + strb r0, [r5, #0xc] +_08023A36: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08023954 + + thumb_func_start sub_08023A40 +sub_08023A40: @ 0x08023A40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov r8, r0 + ldrb r0, [r0, #0xc] + cmp r0, #7 + bls _08023A56 + b _08023DF4 +_08023A56: + lsls r0, r0, #2 + ldr r1, _08023A60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08023A60: .4byte _08023A64 +_08023A64: @ jump table + .4byte _08023A84 @ case 0 + .4byte _08023ACA @ case 1 + .4byte _08023ADE @ case 2 + .4byte _08023B52 @ case 3 + .4byte _08023CE2 @ case 4 + .4byte _08023D8E @ case 5 + .4byte _08023DA0 @ case 6 + .4byte _08023DD4 @ case 7 +_08023A84: + mov r4, r8 + adds r4, #0x42 + adds r0, r4, #0 + movs r1, #0 + movs r2, #4 + bl memset + mov r1, r8 + ldrb r0, [r1, #8] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0xae + mov r3, r8 + ldrh r2, [r3, #0x28] + ldrh r0, [r1] + cmp r0, r2 + bls _08023AAC + strh r2, [r1] +_08023AAC: + mov r5, r8 + ldrb r0, [r5, #8] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0xae + ldrh r0, [r1] + strh r0, [r4] + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_0800A070 + b _08023DF4 +_08023ACA: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08023AD6 + b _08023DFC +_08023AD6: + movs r0, #0 + mov r6, r8 + strh r0, [r6, #0x10] + b _08023DF4 +_08023ADE: + bl sub_0800A114 + ldr r2, _08023B44 + mov r1, r8 + ldrb r3, [r1, #9] + subs r1, r3, #2 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _08023AF8 + b _08023DFC +_08023AF8: + movs r2, #0 + mov sb, r2 + mov r4, r8 + adds r4, #0x42 + cmp sb, r3 + bhs _08023B2C + ldr r2, _08023B48 +_08023B06: + mov r3, sb + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + add r1, r8 + lsls r0, r3, #8 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, #0xae + strh r0, [r1] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r5, r8 + ldrb r5, [r5, #9] + cmp sb, r5 + blo _08023B06 +_08023B2C: + movs r0, #0 + mov r6, r8 + strh r0, [r6, #0x10] + strh r0, [r4] + bl sub_0800A178 + ldrb r0, [r6, #8] + cmp r0, #0 + bne _08023B4C + movs r0, #3 + strb r0, [r6, #0xc] + b _08023DFC + .align 2, 0 +_08023B44: .4byte gUnknown_82C7CD4 +_08023B48: .4byte gUnknown_202207C +_08023B4C: + movs r0, #6 + mov r1, r8 + b _08023DFA +_08023B52: + mov r0, r8 + adds r0, #0x68 + movs r1, #0 + movs r2, #0x30 + bl memset + mov r2, r8 + ldrh r1, [r2, #0x28] + mov r0, r8 + adds r0, #0x6c + strh r1, [r0] + movs r3, #0x18 + ldrsh r4, [r2, r3] + ldrh r0, [r2, #0x28] + movs r1, #0x3c + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl __divsi3 + mov r1, r8 + adds r1, #0x6e + strh r0, [r1] + mov r5, r8 + movs r6, #0x30 + ldrsh r0, [r5, r6] + lsls r0, r0, #8 + movs r4, #0xc8 + lsls r4, r4, #6 + adds r1, r4, #0 + bl sub_08151550 + adds r2, r0, #0 + movs r0, #0x32 + ldrsh r1, [r5, r0] + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_081515D8 + adds r2, r0, r4 + asrs r2, r2, #8 + movs r1, #0x7f + adds r0, r2, #0 + ands r0, r1 + mov r1, r8 + adds r1, #0x70 + strh r0, [r1] + lsls r2, r2, #8 + movs r1, #0xc8 + lsls r1, r1, #7 + adds r0, r2, #0 + bl sub_081515D8 + adds r2, r0, #0 + ldrb r1, [r5, #9] + ldr r0, [r5, #0x1c] + muls r0, r1, r0 + lsls r4, r0, #8 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08151550 + adds r4, r0, #0 + asrs r0, r4, #8 + str r0, [r5, #0x68] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + mov r1, r8 + adds r1, #0x8f + strb r0, [r1] + movs r2, #0 + mov sb, r2 + adds r7, r1, #0 + ldrb r3, [r5, #9] + cmp sb, r3 + blo _08023BFC + b _08023DF4 +_08023BFC: + mov r0, r8 + adds r0, #0x88 + add r0, sb + mov r5, sb + strb r5, [r0] + mov r0, r8 + adds r0, #0x90 + add r0, sb + strb r5, [r0] + mov r6, sb + lsls r2, r6, #1 + mov r1, r8 + adds r1, #0x74 + adds r1, r1, r2 + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + mov r5, r8 + adds r3, r5, r0 + adds r5, r3, #0 + adds r5, #0xaa + ldrh r0, [r5] + strh r0, [r1] + mov r1, r8 + adds r1, #0x72 + ldrh r6, [r1] + adds r0, r0, r6 + strh r0, [r1] + ldrb r0, [r7] + adds r6, r2, #0 + cmp r0, #1 + beq _08023C6A + cmp r0, #1 + bgt _08023C46 + cmp r0, #0 + beq _08023C4C + b _08023CC4 +_08023C46: + cmp r0, #2 + beq _08023C88 + b _08023CC4 +_08023C4C: + ldrh r0, [r5] + cmp r0, #0 + beq _08023C8E + adds r0, r3, #0 + adds r0, #0xa8 + ldrh r2, [r0] + lsls r2, r2, #8 + adds r0, r2, #0 + movs r1, #0xc8 + lsls r1, r1, #7 + bl sub_08151550 + adds r2, r0, #0 + ldrh r4, [r5] + b _08023CBA +_08023C6A: + ldrh r0, [r5] + cmp r0, #0 + beq _08023C8E + adds r0, r3, #0 + adds r0, #0xac + ldrh r2, [r0] + lsls r2, r2, #8 + adds r0, r2, #0 + movs r1, #0xc8 + lsls r1, r1, #7 + bl sub_08151550 + adds r2, r0, #0 + ldrh r4, [r5] + b _08023CBA +_08023C88: + ldrh r0, [r5] + cmp r0, #0 + bne _08023C92 +_08023C8E: + movs r4, #0 + b _08023CC4 +_08023C92: + adds r1, r3, #0 + adds r1, #0xae + ldrh r0, [r1] + mov r2, r8 + ldrh r2, [r2, #0x28] + cmp r0, r2 + blo _08023CA6 + movs r4, #0xc8 + lsls r4, r4, #7 + b _08023CC4 +_08023CA6: + ldrh r2, [r1] + lsls r2, r2, #8 + adds r0, r2, #0 + movs r1, #0xc8 + lsls r1, r1, #7 + bl sub_08151550 + adds r2, r0, #0 + mov r3, r8 + ldrh r4, [r3, #0x28] +_08023CBA: + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_081515D8 + adds r4, r0, #0 +_08023CC4: + asrs r4, r4, #4 + mov r0, r8 + adds r0, #0x7e + adds r0, r0, r6 + strh r4, [r0] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r5, r8 + ldrb r5, [r5, #9] + cmp sb, r5 + blo _08023BFC + b _08023DF4 +_08023CE2: + movs r6, #0 + mov sb, r6 + mov r1, r8 + ldrb r0, [r1, #9] + subs r0, #1 + adds r1, #0x68 + str r1, [sp, #0xc] + cmp sb, r0 + bge _08023D82 +_08023CF4: + mov r2, r8 + ldrb r0, [r2, #9] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r3, sb + adds r3, #1 + str r3, [sp, #8] + cmp r4, sb + bls _08023D70 + adds r2, #0x74 + str r2, [sp] + mov r5, r8 + adds r5, #0x88 + str r5, [sp, #4] + movs r6, #0x90 + add r6, r8 + mov sl, r6 + movs r0, #0x7e + add r0, r8 + mov ip, r0 +_08023D1E: + subs r7, r4, #1 + lsls r6, r7, #1 + ldr r1, [sp] + adds r3, r1, r6 + lsls r5, r4, #1 + adds r1, r1, r5 + ldrh r2, [r3] + ldrh r0, [r1] + cmp r2, r0 + bhs _08023D46 + ldrh r0, [r1] + strh r2, [r1] + strh r0, [r3] + ldr r1, [sp, #4] + adds r2, r1, r4 + ldrb r3, [r2] + adds r1, r1, r7 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] +_08023D46: + mov r2, ip + adds r3, r2, r6 + adds r1, r2, r5 + ldrh r2, [r3] + ldrh r5, [r1] + cmp r2, r5 + bhs _08023D68 + ldrh r0, [r1] + strh r2, [r1] + strh r0, [r3] + mov r6, sl + adds r2, r6, r4 + ldrb r3, [r2] + adds r1, r6, r7 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] +_08023D68: + lsls r0, r7, #0x18 + lsrs r4, r0, #0x18 + cmp r4, sb + bhi _08023D1E +_08023D70: + ldr r1, [sp, #8] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r2, r8 + ldrb r0, [r2, #9] + subs r0, #1 + cmp sb, r0 + blt _08023CF4 +_08023D82: + movs r0, #0 + ldr r1, [sp, #0xc] + movs r2, #0x30 + bl sub_0800A070 + b _08023DF4 +_08023D8E: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08023DFC + movs r0, #0 + mov r3, r8 + strh r0, [r3, #0x10] + b _08023DF4 +_08023DA0: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08023DFC + mov r4, r8 + adds r4, #0x68 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x30 + bl memset + ldr r1, _08023DD0 + adds r0, r4, #0 + movs r2, #0x30 + bl memcpy + bl sub_0800A178 + movs r0, #0 + mov r5, r8 + strh r0, [r5, #0x10] + b _08023DF4 + .align 2, 0 +_08023DD0: .4byte gUnknown_202207C +_08023DD4: + bl sub_08020B74 + movs r0, #0x12 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #0 + movs r1, #0xb + mov r6, r8 + strh r1, [r6, #0x12] + strb r0, [r6, #0xc] + mov r1, r8 + adds r1, #0x24 + strb r0, [r1] + b _08023DFC +_08023DF4: + mov r1, r8 + ldrb r0, [r1, #0xc] + adds r0, #1 +_08023DFA: + strb r0, [r1, #0xc] +_08023DFC: + movs r0, #0 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08023A40 + + thumb_func_start sub_08023E10 +sub_08023E10: @ 0x08023E10 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #4 + bhi _08023EEC + lsls r0, r0, #2 + ldr r1, _08023E28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08023E28: .4byte _08023E2C +_08023E2C: @ jump table + .4byte _08023E40 @ case 0 + .4byte _08023E52 @ case 1 + .4byte _08023E64 @ case 2 + .4byte _08023E94 @ case 3 + .4byte _08023EA4 @ case 4 +_08023E40: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + adds r0, r5, #0 + bl sub_08021DDC + cmp r0, #0 + bne _08023EEC + b _08023EF2 +_08023E52: + movs r0, #0 + bl sub_08002248 + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #0x1e + strb r0, [r1] + b _08023EEC +_08023E64: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _08023E76 + subs r0, #1 + strb r0, [r1] + b _08023EF2 +_08023E76: + ldr r0, _08023E90 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08023EF2 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_08021F9C + b _08023EEC + .align 2, 0 +_08023E90: .4byte gUnknown_3002360 +_08023E94: + ldrh r0, [r5, #0x12] + cmp r0, #0xc + bhi _08023EEC + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x12] + strb r1, [r5, #0xc] + b _08023EF2 +_08023EA4: + ldr r0, _08023EE4 + ldr r1, [r5, #0x1c] + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldr r4, _08023EE8 + bl sub_08024588 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + movs r4, #0 + str r4, [sp] + adds r0, r6, #0 + movs r1, #2 + movs r2, #3 + movs r3, #0 + bl sub_08024410 + movs r0, #0x13 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + strb r4, [r5, #0xc] + b _08023EF2 + .align 2, 0 +_08023EE4: .4byte gUnknown_2021C40 +_08023EE8: .4byte gUnknown_2021C54 +_08023EEC: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_08023EF2: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08023E10 + + thumb_func_start sub_08023EFC +sub_08023EFC: @ 0x08023EFC + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #4 + bhi _08023FE0 + lsls r0, r0, #2 + ldr r1, _08023F14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08023F14: .4byte _08023F18 +_08023F18: @ jump table + .4byte _08023F2C @ case 0 + .4byte _08023F68 @ case 1 + .4byte _08023F6E @ case 2 + .4byte _08023FB8 @ case 3 + .4byte _08023FCC @ case 4 +_08023F2C: + ldrh r1, [r5, #0x28] + ldr r0, _08023F64 + cmp r1, r0 + bls _08023F3E + movs r1, #0x92 + lsls r1, r1, #1 + adds r0, r5, r1 + bl sub_080222B4 +_08023F3E: + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r1, #8 + movs r2, #0 + movs r3, #0 + bl sub_08024410 + movs r4, #0 + movs r0, #0x13 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + strb r4, [r5, #0xc] + b _08023FE6 + .align 2, 0 +_08023F64: .4byte 0x00008C9F +_08023F68: + bl sub_0800FF34 + b _08023FE0 +_08023F6E: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08023FE6 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _08023FB0 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _08023FB4 + movs r1, #0 + bl sub_080A8878 + b _08023FE0 + .align 2, 0 +_08023FB0: .4byte gUnknown_8277071 +_08023FB4: .4byte sub_081535C4 +_08023FB8: + ldr r0, _08023FC8 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08023FE0 + b _08023FE6 + .align 2, 0 +_08023FC8: .4byte sub_081535C4 +_08023FCC: + movs r0, #0x14 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r1, #0 + movs r0, #0xf + strh r0, [r5, #0x12] + strb r1, [r5, #0xc] + b _08023FE6 +_08023FE0: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_08023FE6: + movs r0, #0 + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08023EFC + + thumb_func_start sub_08023FF0 +sub_08023FF0: @ 0x08023FF0 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #1 + beq _08024032 + cmp r0, #1 + bgt _08024008 + cmp r0, #0 + beq _0802400E + b _08024098 +_08024008: + cmp r0, #2 + beq _08024038 + b _08024098 +_0802400E: + movs r0, #1 + str r0, [sp] + adds r0, r6, #0 + movs r1, #4 + movs r2, #0 + movs r3, #0 + bl sub_08024410 + movs r0, #0x14 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #0 + strb r0, [r5, #0xc] + b _080240A0 +_08024032: + bl sub_08197714 + b _08024098 +_08024038: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0802409E + adds r0, r5, #0 + adds r0, #0x42 + movs r1, #0 + movs r2, #0xc + bl memset + cmp r4, #0 + bne _0802406A + bl sub_080D5FDC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024066 + strh r4, [r5, #0x14] + b _0802406E +_08024066: + movs r0, #3 + b _0802406C +_0802406A: + movs r0, #1 +_0802406C: + strh r0, [r5, #0x14] +_0802406E: + movs r0, #0 + movs r1, #1 + bl sub_08197028 + movs r4, #0 + str r4, [sp] + adds r0, r6, #0 + movs r1, #8 + movs r2, #0 + movs r3, #0 + bl sub_08024410 + movs r0, #0x15 + strb r0, [r5, #0xe] + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + strb r4, [r5, #0xc] + b _0802409E +_08024098: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_0802409E: + movs r0, #0 +_080240A0: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08023FF0 + + thumb_func_start sub_080240A8 +sub_080240A8: @ 0x080240A8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r5, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080240CE + cmp r0, #1 + bgt _080240BE + cmp r0, #0 + beq _080240C8 + b _08024174 +_080240BE: + cmp r0, #2 + beq _080240F0 + cmp r0, #3 + beq _080240FE + b _08024174 +_080240C8: + bl sub_0800FF34 + b _08024174 +_080240CE: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802417A + 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, #2 + bl sub_0800A070 + b _08024174 +_080240F0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802417A + strh r5, [r4, #0x10] + b _08024174 +_080240FE: + bl sub_0800A114 + ldr r2, _08024150 + ldrb r3, [r4, #9] + subs r1, r3, #2 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _0802417A + adds r7, r4, #0 + adds r7, #0x42 + adds r6, r4, #0 + adds r6, #0x4e + cmp r5, r3 + bhs _0802413C + adds r1, r6, #0 + ldr r2, _08024154 +_08024124: + lsls r0, r5, #8 + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r4, #9] + cmp r5, r0 + blo _08024124 +_0802413C: + ldrh r0, [r6] + cmp r0, #0 + beq _08024158 + movs r0, #0x17 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + b _08024162 + .align 2, 0 +_08024150: .4byte gUnknown_82C7CD4 +_08024154: .4byte gUnknown_202207C +_08024158: + movs r0, #0x16 + movs r1, #1 + movs r2, #0 + bl sub_08022950 +_08024162: + bl sub_0800A178 + movs r1, #0 + movs r0, #0 + strh r0, [r7] + strh r0, [r6] + strh r0, [r4, #0x10] + strb r1, [r4, #0xc] + b _0802417C +_08024174: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0802417A: + movs r0, #0 +_0802417C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080240A8 + + thumb_func_start sub_08024184 +sub_08024184: @ 0x08024184 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _080241B2 + cmp r4, #1 + bgt _0802419A + cmp r4, #0 + beq _080241A4 + b _080241FC +_0802419A: + cmp r4, #2 + beq _080241BE + cmp r4, #3 + beq _080241E2 + b _080241FC +_080241A4: + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #1 + movs r2, #0 + movs r3, #0x10 + b _080241D8 +_080241B2: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080241FC + b _08024202 +_080241BE: + movs r0, #0 + movs r1, #1 + bl sub_08197028 + adds r0, r5, #0 + bl sub_080211B4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 +_080241D8: + bl sub_080A139C + bl sub_080A12E4 + b _080241FC +_080241E2: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024202 + movs r0, #7 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + movs r0, #0 + strh r4, [r5, #0x12] + b _08024200 +_080241FC: + ldrb r0, [r5, #0xc] + adds r0, #1 +_08024200: + strb r0, [r5, #0xc] +_08024202: + movs r0, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08024184 + + thumb_func_start sub_0802420C +sub_0802420C: @ 0x0802420C + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _08024284 + cmp r4, #1 + bgt _08024222 + cmp r4, #0 + beq _08024228 + b _080242BE +_08024222: + cmp r4, #2 + beq _0802429C + b _080242BE +_08024228: + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldrh r1, [r5, #0x14] + cmp r1, #3 + bne _08024258 + ldr r0, _08024254 + ldr r2, [r0, #0x14] + ldrb r3, [r5, #0xb] + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + str r1, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + b _08024274 + .align 2, 0 +_08024254: .4byte gUnknown_82C5EBC +_08024258: + ldr r0, _08024280 + ldr r2, [r0, #0x18] + ldrb r3, [r5, #0xb] + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C +_08024274: + movs r0, #0 + movs r1, #3 + bl sub_08003528 + b _080242BE + .align 2, 0 +_08024280: .4byte gUnknown_82C5EBC +_08024284: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080242C4 + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + movs r0, #0x78 + strb r0, [r1] + b _080242BE +_0802429C: + movs r0, #0x92 + lsls r0, r0, #1 + adds r1, r5, r0 + ldrb r0, [r1] + adds r4, r0, #0 + cmp r4, #0 + beq _080242B0 + subs r0, #1 + strb r0, [r1] + b _080242C4 +_080242B0: + movs r0, #0x18 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + strb r4, [r5, #0xc] + b _080242C4 +_080242BE: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_080242C4: + movs r0, #0 + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802420C + + thumb_func_start sub_080242D0 +sub_080242D0: @ 0x080242D0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _080242F0 + cmp r4, #1 + bgt _080242E4 + cmp r4, #0 + beq _080242EA + b _08024320 +_080242E4: + cmp r4, #2 + beq _08024300 + b _08024320 +_080242EA: + bl sub_0800FF34 + b _08024320 +_080242F0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024326 + bl sub_0800A7F8 + b _08024320 +_08024300: + ldr r0, _0802431C + ldrb r0, [r0] + cmp r0, #0 + bne _08024326 + movs r0, #0x19 + strb r0, [r5, #0xe] + movs r0, #5 + movs r1, #1 + movs r2, #0 + bl sub_08022950 + strb r4, [r5, #0xc] + b _08024326 + .align 2, 0 +_0802431C: .4byte gUnknown_30031C4 +_08024320: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] +_08024326: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080242D0 + + thumb_func_start sub_08024330 +sub_08024330: @ 0x08024330 + push {lr} + movs r0, #0 + bl sub_08020924 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08024330 + + thumb_func_start sub_08024340 +sub_08024340: @ 0x08024340 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #0 + movs r0, #0x33 + bl sub_0808414C + strb r5, [r4, #0xd] + movs r1, #0 + strh r5, [r4, #0x10] + movs r0, #2 + 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, _080243CC + strh r0, [r4, #0x32] + strh r5, [r4, #0x30] + strh r5, [r4, #0x34] + movs r6, #0 + movs r3, #0 +_08024380: + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r2, r4, r0 + adds r1, r2, #0 + adds r1, #0xa0 + ldr r0, _080243CC + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0xa2 + strh r3, [r0] + adds r0, #2 + strh r3, [r0] + adds r1, #6 + movs r0, #1 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0xa8 + strh r3, [r0] + adds r0, #2 + strh r3, [r0] + adds r0, #2 + strh r3, [r0] + adds r0, #2 + strh r3, [r0] + adds r0, #2 + strb r6, [r0] + adds r0, #1 + strb r6, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _08024380 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080243CC: .4byte 0x0000FFFF + thumb_func_end sub_08024340 + + thumb_func_start sub_080243D0 +sub_080243D0: @ 0x080243D0 + push {r4, r5, r6, lr} + sub sp, #8 + str r2, [sp, #4] + ldr r5, [sp, #0x18] + ldr r6, [sp, #0x1c] + ldr r4, [sp, #0x20] + mov r2, sp + strh r4, [r2] + add r4, sp, #4 + ldrb r2, [r4] + strb r2, [r0] + ldrb r2, [r4, #1] + strb r2, [r0, #1] + ldrb r2, [r4, #2] + strb r2, [r0, #2] + ldrb r2, [r4, #3] + strb r2, [r0, #3] + strb r3, [r0, #4] + strb r5, [r0, #5] + strb r6, [r0, #6] + mov r2, sp + ldrb r2, [r2] + strb r2, [r0, #7] + mov r2, sp + ldrb r2, [r2, #1] + strb r2, [r0, #8] + strb r1, [r0, #9] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080243D0 + + thumb_func_start sub_08024410 +sub_08024410: @ 0x08024410 + push {r4, r5, lr} + sub sp, #4 + ldr r5, [sp, #0x10] + mov r4, sp + strh r3, [r4] + strb r1, [r0] + strb r2, [r0, #1] + mov r1, sp + ldrb r1, [r1] + strb r1, [r0, #2] + mov r1, sp + ldrb r1, [r1, #1] + strb r1, [r0, #3] + strb r5, [r0, #4] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08024410 + + thumb_func_start sub_08024434 +sub_08024434: @ 0x08024434 + ldr r1, _08024444 + ldr r1, [r1] + adds r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_08024444: .4byte gUnknown_3005AF0 + thumb_func_end sub_08024434 + + thumb_func_start sub_08024448 +sub_08024448: @ 0x08024448 + ldr r2, _08024458 + ldr r2, [r2] + adds r2, #0xac + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_08024458: .4byte gUnknown_3005AF0 + thumb_func_end sub_08024448 + + thumb_func_start sub_0802445C +sub_0802445C: @ 0x0802445C + push {lr} + adds r1, r0, #0 + ldr r0, _08024474 + ldr r0, [r0] + movs r2, #0xfa + lsls r2, r2, #1 + adds r0, r0, r2 + bl sub_08076B20 + pop {r0} + bx r0 + .align 2, 0 +_08024474: .4byte gUnknown_3005AF0 + thumb_func_end sub_0802445C + + thumb_func_start sub_08024478 +sub_08024478: @ 0x08024478 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08024494 + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08024434 + cmp r0, r4 + blo _08024498 + movs r0, #1 + b _0802449A + .align 2, 0 +_08024494: .4byte gUnknown_3005AF0 +_08024498: + movs r0, #0 +_0802449A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08024478 + + thumb_func_start sub_080244A0 +sub_080244A0: @ 0x080244A0 + push {lr} + ldr r0, _080244BC + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08024434 + ldr r1, _080244C0 + ldrh r1, [r1] + cmp r0, r1 + blo _080244C4 + movs r0, #1 + b _080244C6 + .align 2, 0 +_080244BC: .4byte gUnknown_3005AF0 +_080244C0: .4byte gUnknown_2037280 +_080244C4: + movs r0, #0 +_080244C6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080244A0 + + thumb_func_start sub_080244CC +sub_080244CC: @ 0x080244CC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080244F4 + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_08024434 + adds r1, r0, r4 + ldr r2, _080244F8 + cmp r1, r2 + bhi _080244FC + adds r0, r5, #0 + bl sub_08024448 + movs r0, #1 + b _08024506 + .align 2, 0 +_080244F4: .4byte gUnknown_3005AF0 +_080244F8: .4byte 0x0001869F +_080244FC: + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_08024448 + movs r0, #0 +_08024506: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080244CC + + thumb_func_start sub_0802450C +sub_0802450C: @ 0x0802450C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0802453C + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r4, r0, r1 + adds r0, r5, #0 + bl sub_08024478 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024540 + adds r0, r4, #0 + bl sub_08024434 + adds r1, r0, #0 + subs r1, r1, r5 + adds r0, r4, #0 + bl sub_08024448 + movs r0, #1 + b _08024542 + .align 2, 0 +_0802453C: .4byte gUnknown_3005AF0 +_08024540: + movs r0, #0 +_08024542: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0802450C + + thumb_func_start sub_08024548 +sub_08024548: @ 0x08024548 + push {r4, r5, lr} + ldr r0, _08024578 + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r4, r0, r1 + ldr r5, _0802457C + ldrh r0, [r5] + bl sub_08024478 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024580 + adds r0, r4, #0 + bl sub_08024434 + adds r1, r0, #0 + ldrh r0, [r5] + subs r1, r1, r0 + adds r0, r4, #0 + bl sub_08024448 + movs r0, #1 + b _08024582 + .align 2, 0 +_08024578: .4byte gUnknown_3005AF0 +_0802457C: .4byte gUnknown_2037280 +_08024580: + movs r0, #0 +_08024582: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08024548 + + thumb_func_start sub_08024588 +sub_08024588: @ 0x08024588 + push {lr} + ldr r0, _0802459C + ldr r0, [r0] + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08024434 + pop {r1} + bx r1 + .align 2, 0 +_0802459C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08024588 + + thumb_func_start sub_080245A0 +sub_080245A0: @ 0x080245A0 + push {r4, r5, r6, lr} + mov r6, sb + 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, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080245F4 + mov sb, r0 + movs r2, #1 + movs r3, #5 + bl sub_080089D8 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #0 + mov r2, sb + mov r3, r8 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080245F4: .4byte gUnknown_2021C40 + thumb_func_end sub_080245A0 + + thumb_func_start sub_080245F8 +sub_080245F8: @ 0x080245F8 + push {r4, r5, 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, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08197F44 + ldr r2, _08024650 + movs r4, #0 + str r4, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r4, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + str r4, [sp] + adds r0, r6, #0 + mov r1, r8 + movs r2, #0x10 + movs r3, #0xc + bl sub_080245A0 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08024650: .4byte gUnknown_85CCCEE + thumb_func_end sub_080245F8 + + thumb_func_start sub_08024654 +sub_08024654: @ 0x08024654 + push {lr} + sub sp, #4 + bl sub_08024588 + adds r1, r0, #0 + ldr r0, _08024674 + ldrb r0, [r0] + movs r2, #0 + str r2, [sp] + movs r2, #0x10 + movs r3, #0xc + bl sub_080245A0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08024674: .4byte gUnknown_2022948 + thumb_func_end sub_08024654 + + thumb_func_start sub_08024678 +sub_08024678: @ 0x08024678 + push {r4, r5, lr} + sub sp, #0x18 + movs r0, #7 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x20 + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_08198B34 + ldr r4, _080246D8 + add r0, sp, #0x10 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + ldr r5, _080246DC + adds r1, r5, #0 + movs r2, #0xd0 + bl sub_08098144 + ldrb r4, [r4] + bl sub_08024588 + adds r3, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xd + bl sub_080245F8 + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080246D8: .4byte gUnknown_2022948 +_080246DC: .4byte 0x0000021D + thumb_func_end sub_08024678 + + thumb_func_start sub_080246E0 +sub_080246E0: @ 0x080246E0 + push {r4, lr} + ldr r4, _08024700 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08024700: .4byte gUnknown_2022948 + thumb_func_end sub_080246E0 + + thumb_func_start sub_08024704 +sub_08024704: @ 0x08024704 + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r1, _080247AC + movs r0, #0 + str r0, [r1] + ldr r0, _080247B0 + ldrb r0, [r0] + cmp r0, #0 + beq _080247D8 + ldr r4, _080247B4 + ldr r0, _080247B8 + bl sub_08000BDC + str r0, [r4] + cmp r0, #0 + beq _080247D8 + bl sub_080247E4 + ldr r0, [r4] + bl sub_080247F8 + ldr r0, [r4] + str r5, [r0] + bl sub_0800A02C + ldr r1, [r4] + adds r1, #0x28 + strb r0, [r1] + ldr r1, [r4] + ldr r2, _080247BC + adds r0, r1, r2 + adds r2, r1, #0 + adds r2, #0x28 + ldrb r3, [r2] + lsls r2, r3, #4 + subs r2, r2, r3 + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r2, _080247C0 + adds r1, r1, r2 + movs r2, #0x3c + bl memcpy + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x28 + ldrb r1, [r1] + lsls r1, r1, #2 + ldr r2, _080247C4 + adds r1, r1, r2 + adds r0, r0, r1 + movs r1, #0x64 + muls r1, r6, r1 + ldr r2, _080247C8 + adds r1, r1, r2 + bl sub_08025FC0 + ldr r0, _080247CC + movs r1, #1 + bl sub_080A8878 + ldr r0, _080247D0 + bl sub_08000540 + bl sub_080271B0 + 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_0802691C + bl sub_080A27F8 + ldr r0, _080247D4 + bl sub_080A27D8 + b _080247DE + .align 2, 0 +_080247AC: .4byte gUnknown_3000DB0 +_080247B0: .4byte gUnknown_30031C4 +_080247B4: .4byte gUnknown_202294C +_080247B8: .4byte 0x00003330 +_080247BC: .4byte 0x000032CC +_080247C0: .4byte 0x000031A0 +_080247C4: .4byte 0x0000318C +_080247C8: .4byte gUnknown_2024190 +_080247CC: .4byte sub_08024990 +_080247D0: .4byte sub_08025F94 +_080247D4: .4byte 0x0000021E +_080247D8: + adds r0, r5, #0 + bl sub_08000540 +_080247DE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08024704 + + thumb_func_start sub_080247E4 +sub_080247E4: @ 0x080247E4 + push {lr} + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080247E4 + + thumb_func_start sub_080247F8 +sub_080247F8: @ 0x080247F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r3, #1 + adds r1, r2, r3 + str r0, [r1] + movs r7, #0x90 + lsls r7, 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, #4 + 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 +_0802483E: + adds r0, r1, r5 + strb r3, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _0802483E + 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, r1, r2 + mov sl, r1 + movs r3, #0x4c + adds r3, r3, r2 + mov sb, r3 + movs r7, #0x4e + adds r7, r7, r2 + mov ip, 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, #4] + adds r1, #0x25 + str r1, [sp, #8] + subs r3, #0xbc + str r3, [sp, #0x10] + movs r7, #0x24 + adds r7, r7, r2 + mov r8, r7 + subs r0, #0xc0 + str r0, [sp, #0x18] + movs r3, #0 + movs r1, #0x86 + lsls r1, r1, #1 + adds r4, r2, r1 + movs r7, #0x98 + lsls r7, r7, #1 + adds r2, r2, r7 +_080248AA: + 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, r0, r5 + lsls r0, r0, #2 + mov r7, sl + adds r1, r7, r0 + strh r3, [r1] + mov r7, sb + adds r1, r7, r0 + strh r3, [r1] + mov r7, ip + 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, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _080248AA + movs r5, #0 + movs r3, #0 + movs r4, #0xff + ldr r6, [sp, #0x1c] +_080248F4: + 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, #4] + adds r2, r0, r1 + ldrb r0, [r2] + orrs r0, r4 + strb r0, [r2] + ldr r7, [sp, #8] + adds r1, r7, r1 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xa + bls _080248F4 + bl sub_0800A02C + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024932 + movs r1, #1 +_08024932: + ldr r0, [sp, #0x10] + strb r1, [r0] + bl sub_08009B64 + mov r1, r8 + strb r0, [r1] + bl sub_0800A02C + ldr r3, [sp, #0x18] + strb r0, [r3] + movs r5, #1 + mov r7, r8 + ldrb r7, [r7] + cmp r5, r7 + bhs _0802497E + ldr r7, [sp, #0x18] + mov r6, r8 +_08024954: + adds r4, r7, r5 + subs r0, r5, #1 + adds r0, r7, r0 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r4] + ldrb r2, [r4] + ldrb r1, [r6] + subs r0, r1, #1 + cmp r2, r0 + ble _08024972 + adds r0, r2, #0 + bl __umodsi3 + strb r0, [r4] +_08024972: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6] + cmp r5, r0 + blo _08024954 +_0802497E: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080247F8 + + thumb_func_start sub_08024990 +sub_08024990: @ 0x08024990 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080249B0 + ldr r0, [r0] + ldrb r0, [r0, #0xc] + cmp r0, #7 + bls _080249A4 + b _08024AFC +_080249A4: + lsls r0, r0, #2 + ldr r1, _080249B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080249B0: .4byte gUnknown_202294C +_080249B4: .4byte _080249B8 +_080249B8: @ jump table + .4byte _080249D8 @ case 0 + .4byte _080249EC @ case 1 + .4byte _08024A14 @ case 2 + .4byte _08024A22 @ case 3 + .4byte _08024A48 @ case 4 + .4byte _08024A9C @ case 5 + .4byte _08024AAE @ case 6 + .4byte _08024AD8 @ case 7 +_080249D8: + movs r0, #0 + bl sub_080006F0 + ldr r0, _080249E8 + movs r1, #4 + bl sub_08025FD4 + b _08024AE8 + .align 2, 0 +_080249E8: .4byte sub_080256D8 +_080249EC: + ldr r0, _08024A0C + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080249FA + b _08024B08 +_080249FA: + ldr r4, _08024A10 + ldr r0, [r4] + movs r1, #0xb0 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08028FA0 + ldr r1, [r4] + b _08024AEC + .align 2, 0 +_08024A0C: .4byte sub_080256D8 +_08024A10: .4byte gUnknown_202294C +_08024A14: + bl sub_0802A464 + cmp r0, #0 + bne _08024B08 + bl sub_0800FF34 + b _08024AE8 +_08024A22: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024B08 + ldr r0, _08024A44 + ldrb r0, [r0] + cmp r0, #0 + beq _08024AE8 + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _08024AE8 + .align 2, 0 +_08024A44: .4byte gUnknown_30031C4 +_08024A48: + ldr r0, _08024A94 + ldr r0, [r0] + adds r0, #0x24 + ldrb r5, [r0] + bl sub_080280D4 + movs r4, #0 + cmp r4, r5 + bhs _08024A82 +_08024A5A: + ldr r0, _08024A94 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x34 + adds r0, r0, r4 + ldrb r2, [r0] + lsls r0, r2, #2 + ldr r3, _08024A98 + adds r0, r0, r3 + adds r0, r1, r0 + adds r1, #0x24 + ldrb r3, [r1] + adds r1, r4, #0 + bl sub_08028134 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08024A5A +_08024A82: + ldr r4, _08024A94 + ldr r0, [r4] + adds r0, #0x24 + ldrb r1, [r0] + movs r0, #0 + bl sub_080283B8 + ldr r1, [r4] + b _08024AEC + .align 2, 0 +_08024A94: .4byte gUnknown_202294C +_08024A98: .4byte 0x0000318C +_08024A9C: + bl sub_08028760 + bl sub_080287B4 + bl sub_08028A70 + bl sub_08028460 + b _08024AE8 +_08024AAE: + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _08024AD4 + bl sub_080006F0 + b _08024AE8 + .align 2, 0 +_08024AD4: .4byte sub_08025FAC +_08024AD8: + bl sub_080A12E4 + ldr r0, _08024AF4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08024B08 +_08024AE8: + ldr r0, _08024AF8 + ldr r1, [r0] +_08024AEC: + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] + b _08024B08 + .align 2, 0 +_08024AF4: .4byte gUnknown_2037C74 +_08024AF8: .4byte gUnknown_202294C +_08024AFC: + adds r0, r1, #0 + bl sub_080A8964 + ldr r0, _08024B10 + bl sub_08025FE4 +_08024B08: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08024B10: .4byte sub_08025664 + thumb_func_end sub_08024990 + + thumb_func_start sub_08024B14 +sub_08024B14: @ 0x08024B14 + push {lr} + bl sub_08025ACC + ldr r1, _08024B40 + ldr r0, _08024B44 + ldr r0, [r0] + ldrb r0, [r0, #0x18] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_08024B14 + + thumb_func_start sub_08024B2C +sub_08024B2C: @ 0x08024B2C + ldr r0, _08024B48 + ldr r0, [r0] + cmp r0, #0 + bne _08024B38 + bl sub_080268B4 +_08024B38: + bl sub_08025B18 + pop {r0} + bx r0 + .align 2, 0 +_08024B40: .4byte gUnknown_82CB350 +_08024B44: .4byte gUnknown_202294C +_08024B48: .4byte gUnknown_3000DB0 + thumb_func_end sub_08024B2C + + thumb_func_start sub_08024B4C +sub_08024B4C: @ 0x08024B4C + push {lr} + bl sub_08025BD4 + ldr r1, _08024B78 + ldr r0, _08024B7C + ldr r0, [r0] + ldrb r0, [r0, #0x18] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_08024B4C + + thumb_func_start sub_08024B64 +sub_08024B64: @ 0x08024B64 + ldr r0, _08024B80 + ldr r0, [r0] + cmp r0, #0 + bne _08024B70 + bl sub_080268E8 +_08024B70: + bl sub_08025CA0 + pop {r0} + bx r0 + .align 2, 0 +_08024B78: .4byte gUnknown_82CB380 +_08024B7C: .4byte gUnknown_202294C +_08024B80: .4byte gUnknown_3000DB0 + thumb_func_end sub_08024B64 + + thumb_func_start sub_08024B84 +sub_08024B84: @ 0x08024B84 + push {r4, lr} + ldr r4, _08024B98 + ldr r0, [r4] + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _08024B9C + cmp r0, #1 + beq _08024BB2 + b _08024BC0 + .align 2, 0 +_08024B98: .4byte gUnknown_202294C +_08024B9C: + movs r0, #1 + bl sub_08028230 + movs r0, #1 + bl sub_0802900C + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08024BC0 +_08024BB2: + bl sub_0802A464 + cmp r0, #0 + bne _08024BC0 + movs r0, #1 + bl sub_08026008 +_08024BC0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08024B84 + + thumb_func_start sub_08024BC8 +sub_08024BC8: @ 0x08024BC8 + push {r4, lr} + ldr r4, _08024BE4 + ldr r1, [r4] + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _08024BE8 + bl sub_08026088 + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08024BF8 + .align 2, 0 +_08024BE4: .4byte gUnknown_202294C +_08024BE8: + movs r0, #0x8c + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + str r0, [r1] + movs r0, #2 + bl sub_08026008 +_08024BF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08024BC8 + + thumb_func_start sub_08024C00 +sub_08024C00: @ 0x08024C00 + push {r4, lr} + sub sp, #4 + ldr r1, _08024C1C + ldr r0, [r1] + ldrb r0, [r0, #0x10] + adds r4, r1, #0 + cmp r0, #5 + bhi _08024CD0 + lsls r0, r0, #2 + ldr r1, _08024C20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08024C1C: .4byte gUnknown_202294C +_08024C20: .4byte _08024C24 +_08024C24: @ jump table + .4byte _08024C3C @ case 0 + .4byte _08024C58 @ case 1 + .4byte _08024C68 @ case 2 + .4byte _08024C8C @ case 3 + .4byte _08024CA0 @ case 4 + .4byte _08024CC0 @ case 5 +_08024C3C: + movs r0, #0 + str r0, [sp] + movs r0, #7 + movs r1, #8 + movs r2, #0x78 + movs r3, #0x50 + bl sub_0802E788 + ldr r0, _08024C54 + ldr r1, [r0] + b _08024CB8 + .align 2, 0 +_08024C54: .4byte gUnknown_202294C +_08024C58: + bl sub_0800FF34 + ldr r0, _08024C64 + ldr r1, [r0] + b _08024CB8 + .align 2, 0 +_08024C64: .4byte gUnknown_202294C +_08024C68: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024CD0 + ldr r2, _08024C88 + ldr r1, [r2] + ldrb r0, [r1, #0x10] + adds r0, #1 + movs r3, #0 + strb r0, [r1, #0x10] + ldr r0, [r2] + adds r0, #0x30 + strb r3, [r0] + b _08024CD0 + .align 2, 0 +_08024C88: .4byte gUnknown_202294C +_08024C8C: + bl sub_0802E7E8 + cmp r0, #0 + bne _08024CD0 + ldr r0, _08024C9C + ldr r1, [r0] + b _08024CB8 + .align 2, 0 +_08024C9C: .4byte gUnknown_202294C +_08024CA0: + ldr r1, [r4] + adds r1, #0x30 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _08024CD0 + bl sub_0800FF34 + ldr r1, [r4] +_08024CB8: + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08024CD0 +_08024CC0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024CD0 + movs r0, #3 + bl sub_08026008 +_08024CD0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08024C00 + + thumb_func_start sub_08024CD8 +sub_08024CD8: @ 0x08024CD8 + push {lr} + ldr r0, _08024CFC + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _08024CF6 + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + beq _08024CF6 + movs r0, #4 + bl sub_08026008 +_08024CF6: + pop {r0} + bx r0 + .align 2, 0 +_08024CFC: .4byte gUnknown_202294C + thumb_func_end sub_08024CD8 + + thumb_func_start sub_08024D00 +sub_08024D00: @ 0x08024D00 + push {r4, lr} + ldr r4, _08024D40 + ldr r2, [r4] + ldrb r0, [r2, #0x10] + cmp r0, #0 + bne _08024DBE + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bhi _08024DB0 + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0 + bne _08024DB6 + ldr r0, _08024D44 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08024D50 + ldr r1, _08024D48 + adds r0, r2, r1 + ldrb r1, [r0] + cmp r1, #0 + bne _08024DB6 + ldr r3, _08024D4C + adds r0, r2, r3 + strb r1, [r0] + movs r0, #2 + b _08024D8A + .align 2, 0 +_08024D40: .4byte gUnknown_202294C +_08024D44: .4byte gUnknown_3002360 +_08024D48: .4byte 0x000031CC +_08024D4C: .4byte 0x000031D0 +_08024D50: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08024D70 + ldr r3, _08024D6C + adds r0, r2, r3 + ldrb r1, [r0] + cmp r1, #0 + bne _08024DB6 + adds r3, #4 + adds r0, r2, r3 + strb r1, [r0] + movs r0, #1 + b _08024D8A + .align 2, 0 +_08024D6C: .4byte 0x000031CC +_08024D70: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08024D9C + ldr r3, _08024D98 + adds r0, r2, r3 + ldrb r1, [r0] + cmp r1, #0 + bne _08024DB6 + adds r3, #4 + adds r0, r2, r3 + strb r1, [r0] + movs r0, #3 +_08024D8A: + bl sub_080272D8 + ldr r1, [r4] + ldr r2, _08024D98 + adds r1, r1, r2 + strb r0, [r1] + b _08024DB6 + .align 2, 0 +_08024D98: .4byte 0x000031CC +_08024D9C: + movs r0, #0 + bl sub_080272D8 + ldr r1, [r4] + ldr r3, _08024DAC + adds r1, r1, r3 + strb r0, [r1] + b _08024DB6 + .align 2, 0 +_08024DAC: .4byte 0x000031CC +_08024DB0: + movs r0, #0xb + bl sub_08026008 +_08024DB6: + bl sub_080264E4 + bl sub_08025D10 +_08024DBE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08024D00 + + thumb_func_start sub_08024DC4 +sub_08024DC4: @ 0x08024DC4 + push {lr} + ldr r0, _08024E04 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bhi _08024E8C + ldr r0, _08024E08 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08024E14 + adds r0, r2, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r1, _08024E0C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08024E92 + ldr r3, _08024E10 + adds r1, r2, r3 + movs r0, #2 + strb r0, [r1] + b _08024E92 + .align 2, 0 +_08024E04: .4byte gUnknown_202294C +_08024E08: .4byte gUnknown_3002360 +_08024E0C: .4byte 0x000031CC +_08024E10: .4byte 0x000032F8 +_08024E14: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08024E48 + adds r0, r2, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r1, _08024E40 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08024E92 + ldr r3, _08024E44 + adds r1, r2, r3 + movs r0, #1 + strb r0, [r1] + b _08024E92 + .align 2, 0 +_08024E40: .4byte 0x000031CC +_08024E44: .4byte 0x000032F8 +_08024E48: + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08024E80 + adds r0, r2, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r1, _08024E78 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08024E92 + ldr r3, _08024E7C + adds r1, r2, r3 + movs r0, #3 + strb r0, [r1] + b _08024E92 + .align 2, 0 +_08024E78: .4byte 0x000031CC +_08024E7C: .4byte 0x000032F8 +_08024E80: + ldr r3, _08024E88 + adds r0, r2, r3 + strb r1, [r0] + b _08024E92 + .align 2, 0 +_08024E88: .4byte 0x000032F8 +_08024E8C: + movs r0, #0xb + bl sub_08026008 +_08024E92: + bl sub_08025E0C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08024DC4 + + thumb_func_start sub_08024E9C +sub_08024E9C: @ 0x08024E9C + push {r4, r5, lr} + bl sub_080264E4 + bl sub_08025D10 + bl sub_08026A10 + cmp r0, #1 + bne _08024EBA + bl sub_08027064 + movs r0, #5 + bl sub_08026008 + b _08024F18 +_08024EBA: + ldr r0, _08024EE8 + ldr r2, [r0] + movs r1, #0x96 + lsls r1, r1, #1 + adds r4, r2, r1 + movs r1, #1 + str r1, [r4] + movs r3, #1 + adds r1, r2, #0 + adds r1, #0x24 + adds r5, r0, #0 + ldrb r1, [r1] + cmp r3, r1 + bhs _08024F18 + movs r1, #0x9a + lsls r1, r1, #1 + adds r0, r2, r1 + ldr r0, [r0] + cmp r0, #1 + beq _08024EEC + movs r0, #0 + str r0, [r4] + b _08024F18 + .align 2, 0 +_08024EE8: .4byte gUnknown_202294C +_08024EEC: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, [r5] + adds r0, r2, #0 + adds r0, #0x24 + ldrb r0, [r0] + cmp r3, r0 + bhs _08024F18 + lsls r0, r3, #2 + movs r4, #0x98 + lsls r4, r4, #1 + adds r1, r2, r4 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #1 + beq _08024EEC + movs r0, #0x96 + lsls r0, r0, #1 + adds r1, r2, r0 + movs r0, #0 + str r0, [r1] +_08024F18: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08024E9C + + thumb_func_start sub_08024F20 +sub_08024F20: @ 0x08024F20 + push {lr} + bl sub_08025E0C + bl sub_08026A50 + cmp r0, #1 + bne _08024F34 + movs r0, #5 + bl sub_08026008 +_08024F34: + pop {r0} + bx r0 + thumb_func_end sub_08024F20 + + thumb_func_start sub_08024F38 +sub_08024F38: @ 0x08024F38 + push {r4, lr} + bl sub_0800A114 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800A59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _08024F54 + movs r0, #0 + b _08024F5A +_08024F54: + bl sub_0800A178 + movs r0, #1 +_08024F5A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08024F38 + + thumb_func_start sub_08024F60 +sub_08024F60: @ 0x08024F60 + push {r4, r5, lr} + ldr r5, _08024F78 + ldr r1, [r5] + ldrb r4, [r1, #0x10] + cmp r4, #1 + beq _08024F98 + cmp r4, #1 + bgt _08024F7C + cmp r4, #0 + beq _08024F82 + b _08024FD4 + .align 2, 0 +_08024F78: .4byte gUnknown_202294C +_08024F7C: + cmp r4, #2 + beq _08024FA4 + b _08024FD4 +_08024F82: + adds r1, #0x4a + movs r0, #0 + movs r2, #0x3c + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024FEE + ldr r0, [r5] + strb r4, [r0, #8] + b _08024FCA +_08024F98: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024FEE + b _08024FCA +_08024FA4: + bl sub_08024F38 + cmp r0, #0 + beq _08024FB6 + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x24 + ldrb r1, [r1] + strb r1, [r0, #8] +_08024FB6: + ldr r2, [r5] + adds r1, r2, #0 + adds r1, #0x24 + ldrb r0, [r2, #8] + ldrb r1, [r1] + cmp r0, r1 + blo _08024FEE + ldrb r0, [r2, #0x14] + adds r0, #1 + strb r0, [r2, #0x14] +_08024FCA: + ldr r1, [r5] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08024FEE +_08024FD4: + movs r0, #1 + bl sub_080A295C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08024FEE + movs r0, #6 + bl sub_08026008 + ldr r0, _08024FF4 + movs r1, #4 + bl sub_080A2850 +_08024FEE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08024FF4: .4byte 0x0000020B + thumb_func_end sub_08024F60 + + thumb_func_start sub_08024FF8 +sub_08024FF8: @ 0x08024FF8 + push {r4, r5, lr} + ldr r5, _08025010 + ldr r2, [r5] + ldrb r4, [r2, #0x10] + cmp r4, #1 + beq _0802503C + cmp r4, #1 + bgt _08025014 + cmp r4, #0 + beq _0802501A + b _080250A4 + .align 2, 0 +_08025010: .4byte gUnknown_202294C +_08025014: + cmp r4, #2 + beq _0802504A + b _080250A4 +_0802501A: + ldrb r0, [r2, #0x14] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, #0x4a + adds r1, r2, r1 + movs r0, #0 + movs r2, #0x3c + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080250DE + ldr r0, [r5] + strb r4, [r0, #8] + ldr r1, [r5] + b _08025094 +_0802503C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080250DE + ldr r1, [r5] + b _08025094 +_0802504A: + bl sub_08024F38 + cmp r0, #0 + beq _0802507C + movs r4, #0 + b _08025072 +_08025056: + ldr r0, [r5] + adds r0, #0x4a + ldr r1, _0802509C + movs r2, #0x3c + bl memcpy + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + strb r0, [r1, #8] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08025072: + ldr r0, [r5] + adds r0, #0x24 + ldrb r0, [r0] + cmp r4, r0 + blo _08025056 +_0802507C: + ldr r3, _080250A0 + ldr r2, [r3] + adds r1, r2, #0 + adds r1, #0x24 + ldrb r0, [r2, #8] + ldrb r1, [r1] + cmp r0, r1 + blo _080250DE + ldrb r0, [r2, #0x14] + adds r0, #1 + strb r0, [r2, #0x14] + ldr r1, [r3] +_08025094: + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _080250DE + .align 2, 0 +_0802509C: .4byte gUnknown_202207C +_080250A0: .4byte gUnknown_202294C +_080250A4: + movs r0, #1 + bl sub_080A295C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080250DE + ldr r0, _080250E4 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x54 + adds r0, r0, r1 + ldrh r1, [r0] + movs r3, #0x8a + lsls r3, r3, #1 + adds r0, r2, r3 + strh r1, [r0] + movs r0, #6 + bl sub_08026008 + ldr r0, _080250E8 + movs r1, #4 + bl sub_080A2850 +_080250DE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080250E4: .4byte gUnknown_202294C +_080250E8: .4byte 0x0000020B + thumb_func_end sub_08024FF8 + + thumb_func_start sub_080250EC +sub_080250EC: @ 0x080250EC + push {r4, r5, lr} + sub sp, #4 + movs r1, #1 + mov r0, sp + strb r1, [r0] + ldr r0, _0802510C + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #4 + bls _08025102 + b _08025220 +_08025102: + lsls r0, r0, #2 + ldr r1, _08025110 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802510C: .4byte gUnknown_202294C +_08025110: .4byte _08025114 +_08025114: @ jump table + .4byte _08025128 @ case 0 + .4byte _0802514C @ case 1 + .4byte _08025164 @ case 2 + .4byte _08025184 @ case 3 + .4byte _080251A4 @ case 4 +_08025128: + bl sub_0802725C + movs r0, #1 + bl sub_08028714 + bl sub_08028B28 + movs r0, #1 + bl sub_08028BF4 + movs r0, #2 + bl sub_0802900C + ldr r0, _08025148 + ldr r1, [r0] + b _08025210 + .align 2, 0 +_08025148: .4byte gUnknown_202294C +_0802514C: + bl sub_0802A464 + cmp r0, #0 + bne _0802522E + movs r0, #5 + bl sub_0802900C + ldr r0, _08025160 + ldr r1, [r0] + b _08025210 + .align 2, 0 +_08025160: .4byte gUnknown_202294C +_08025164: + bl sub_0802A488 + mov r1, sp + strb r0, [r1] + movs r0, #0 + movs r2, #1 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802522E + ldr r0, _08025180 + ldr r1, [r0] + b _08025210 + .align 2, 0 +_08025180: .4byte gUnknown_202294C +_08025184: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802522E + ldr r3, _080251A0 + ldr r1, [r3] + ldrb r0, [r1, #0x10] + adds r0, #1 + movs r2, #0 + strb r0, [r1, #0x10] + ldr r0, [r3] + strb r2, [r0, #8] + b _0802522E + .align 2, 0 +_080251A0: .4byte gUnknown_202294C +_080251A4: + bl sub_08024F38 + cmp r0, #0 + beq _080251EA + movs r2, #0 + ldr r1, _08025218 + ldr r0, [r1] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + bhs _080251EA + adds r3, r1, #0 + movs r5, #0x86 + lsls r5, r5, #1 + ldr r4, _0802521C +_080251C2: + ldr r1, [r3] + adds r1, r2, r1 + adds r1, r1, r5 + lsls r0, r2, #8 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + strb r0, [r1, #8] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, [r3] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + blo _080251C2 +_080251EA: + ldr r4, _08025218 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x24 + ldrb r0, [r2, #8] + ldrb r1, [r1] + cmp r0, r1 + blo _0802522E + ldrb r0, [r2, #0x14] + adds r0, #1 + strb r0, [r2, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + bls _0802522E + movs r0, #6 + bl sub_0802900C + ldr r1, [r4] +_08025210: + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _0802522E + .align 2, 0 +_08025218: .4byte gUnknown_202294C +_0802521C: .4byte gUnknown_202207C +_08025220: + bl sub_0802A464 + cmp r0, #0 + bne _0802522E + movs r0, #7 + bl sub_08026008 +_0802522E: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080250EC + + thumb_func_start sub_08025238 +sub_08025238: @ 0x08025238 + push {r4, r5, lr} + sub sp, #4 + ldr r4, _08025254 + ldr r0, [r4] + ldrb r0, [r0, #0x10] + cmp r0, #7 + bls _08025248 + b _080253CE +_08025248: + lsls r0, r0, #2 + ldr r1, _08025258 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08025254: .4byte gUnknown_202294C +_08025258: .4byte _0802525C +_0802525C: @ jump table + .4byte _0802527C @ case 0 + .4byte _0802529C @ case 1 + .4byte _080252B8 @ case 2 + .4byte _080252CC @ case 3 + .4byte _080252E8 @ case 4 + .4byte _08025304 @ case 5 + .4byte _0802532C @ case 6 + .4byte _08025340 @ case 7 +_0802527C: + bl sub_08027508 + ldr r1, _08025294 + cmp r0, r1 + bls _0802528C + movs r0, #4 + bl sub_0802900C +_0802528C: + ldr r0, _08025298 + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_08025294: .4byte 0x00000BB7 +_08025298: .4byte gUnknown_202294C +_0802529C: + bl sub_0802A464 + cmp r0, #0 + beq _080252A6 + b _08025404 +_080252A6: + movs r0, #3 + bl sub_0802900C + ldr r0, _080252B4 + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_080252B4: .4byte gUnknown_202294C +_080252B8: + bl sub_08028CF8 + bl sub_080270A8 + ldr r0, _080252C8 + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_080252C8: .4byte gUnknown_202294C +_080252CC: + bl sub_0802A488 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + cmp r0, #0 + bne _080252DE + b _08025404 +_080252DE: + ldr r0, _080252E4 + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_080252E4: .4byte gUnknown_202294C +_080252E8: + bl sub_0802A464 + cmp r0, #0 + beq _080252F2 + b _08025404 +_080252F2: + movs r0, #5 + bl sub_0802900C + ldr r0, _08025300 + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_08025300: .4byte gUnknown_202294C +_08025304: + bl sub_0802A488 + mov r1, sp + strb r0, [r1] + movs r0, #0 + movs r2, #1 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08025404 + ldr r2, _08025328 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #8] + ldr r1, [r2] + b _080253B0 + .align 2, 0 +_08025328: .4byte gUnknown_202294C +_0802532C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08025404 + ldr r0, _0802533C + ldr r1, [r0] + b _080253B0 + .align 2, 0 +_0802533C: .4byte gUnknown_202294C +_08025340: + bl sub_08024F38 + cmp r0, #0 + beq _08025386 + movs r2, #0 + ldr r1, _080253B8 + ldr r0, [r1] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + bhs _08025386 + adds r3, r1, #0 + movs r5, #0x86 + lsls r5, r5, #1 + ldr r4, _080253BC +_0802535E: + ldr r1, [r3] + adds r1, r2, r1 + adds r1, r1, r5 + lsls r0, r2, #8 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + strb r0, [r1, #8] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, [r3] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + blo _0802535E +_08025386: + ldr r4, _080253B8 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x24 + ldrb r0, [r2, #8] + ldrb r1, [r1] + cmp r0, r1 + blo _080253C0 + ldrb r0, [r2, #0x14] + adds r0, #1 + strb r0, [r2, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + bls _08025404 + bl sub_080273C8 + movs r0, #6 + bl sub_0802900C + ldr r1, [r4] +_080253B0: + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08025404 + .align 2, 0 +_080253B8: .4byte gUnknown_202294C +_080253BC: .4byte gUnknown_202207C +_080253C0: + bl sub_08027314 + b _08025404 +_080253C6: + movs r0, #8 + bl sub_08026008 + b _08025404 +_080253CE: + bl sub_0802A464 + cmp r0, #0 + bne _08025404 + movs r2, #0 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + bhs _080253FE + movs r4, #0x86 + lsls r4, r4, #1 + adds r3, r1, r4 + adds r1, r0, #0 +_080253EC: + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #2 + beq _080253C6 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080253EC +_080253FE: + movs r0, #0xa + bl sub_08026008 +_08025404: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08025238 + + thumb_func_start sub_0802540C +sub_0802540C: @ 0x0802540C + push {r4, lr} + ldr r4, _08025424 + ldr r0, [r4] + ldrb r0, [r0, #0x10] + cmp r0, #1 + beq _0802543A + cmp r0, #1 + bgt _08025428 + cmp r0, #0 + beq _0802542E + b _0802545A + .align 2, 0 +_08025424: .4byte gUnknown_202294C +_08025428: + cmp r0, #2 + beq _08025444 + b _0802545A +_0802542E: + bl sub_0800A7F8 + movs r0, #7 + bl sub_0802900C + b _08025450 +_0802543A: + bl sub_0802A464 + cmp r0, #0 + bne _08025468 + b _08025450 +_08025444: + bl sub_0802A488 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bne _08025468 +_08025450: + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08025468 +_0802545A: + ldr r0, _08025470 + ldrb r0, [r0] + cmp r0, #0 + bne _08025468 + movs r0, #9 + bl sub_08026008 +_08025468: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08025470: .4byte gUnknown_30031C4 + thumb_func_end sub_0802540C + + thumb_func_start sub_08025474 +sub_08025474: @ 0x08025474 + push {r4, lr} + sub sp, #4 + ldr r4, _0802548C + ldr r0, [r4] + ldrb r1, [r0, #0x10] + cmp r1, #1 + beq _080254A8 + cmp r1, #1 + bgt _08025490 + cmp r1, #0 + beq _08025496 + b _080254F0 + .align 2, 0 +_0802548C: .4byte gUnknown_202294C +_08025490: + cmp r1, #2 + beq _080254C0 + b _080254F0 +_08025496: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _080254E2 +_080254A8: + bl sub_080A12E4 + ldr r0, _080254BC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08025514 + b _080254E2 + .align 2, 0 +_080254BC: .4byte gUnknown_2037C74 +_080254C0: + bl sub_080288AC + bl sub_08028510 + ldr r0, [r4] + adds r0, #0x24 + ldrb r0, [r0] + bl sub_08028340 + bl sub_08028BB0 + ldr r1, _080254EC + movs r0, #1 + str r0, [r1] + movs r0, #8 + bl sub_0802900C +_080254E2: + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08025514 + .align 2, 0 +_080254EC: .4byte gUnknown_3000DB0 +_080254F0: + bl sub_0802A464 + cmp r0, #0 + bne _08025514 + ldr r4, _0802551C + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000540 + ldr r0, [r4] + ldrb r0, [r0, #4] + bl sub_080A8964 + ldr r0, [r4] + bl sub_08000BF0 + bl sub_080034D4 +_08025514: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802551C: .4byte gUnknown_202294C + thumb_func_end sub_08025474 + + thumb_func_start sub_08025520 +sub_08025520: @ 0x08025520 + push {r4, lr} + sub sp, #4 + ldr r4, _0802553C + ldr r1, [r4] + ldrb r0, [r1, #0x10] + cmp r0, #6 + bls _08025530 + b _08025624 +_08025530: + lsls r0, r0, #2 + ldr r1, _08025540 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802553C: .4byte gUnknown_202294C +_08025540: .4byte _08025544 +_08025544: @ jump table + .4byte _08025560 @ case 0 + .4byte _08025600 @ case 1 + .4byte _08025578 @ case 2 + .4byte _080255CA @ case 3 + .4byte _080255D0 @ case 4 + .4byte _080255E0 @ case 5 + .4byte _08025600 @ case 6 +_08025560: + movs r0, #9 + bl sub_0802900C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08025610 +_08025578: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + b _08025610 +_080255CA: + bl sub_080A27F8 + b _08025610 +_080255D0: + ldr r0, _080255DC + bl sub_080A27D8 + bl sub_08028B78 + b _08025610 + .align 2, 0 +_080255DC: .4byte 0x0000021E +_080255E0: + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _08025610 +_08025600: + bl sub_080A12E4 + ldr r0, _0802561C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08025654 +_08025610: + ldr r0, _08025620 + ldr r1, [r0] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _08025654 + .align 2, 0 +_0802561C: .4byte gUnknown_2037C74 +_08025620: .4byte gUnknown_202294C +_08025624: + ldrb r0, [r1, #4] + bl sub_080A8964 + ldr r0, _0802565C + bl sub_08025FE4 + bl sub_08028D68 + ldr r0, [r4] + bl sub_080247F8 + ldr r0, _08025660 + ldrb r0, [r0] + cmp r0, #0 + bne _0802564A + ldr r0, [r4] + adds r0, #0x24 + movs r1, #1 + strb r1, [r0] +_0802564A: + bl sub_080271B0 + movs r0, #0 + bl sub_08028BF4 +_08025654: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802565C: .4byte sub_08025664 +_08025660: .4byte gUnknown_30031C4 + thumb_func_end sub_08025520 + + thumb_func_start sub_08025664 +sub_08025664: @ 0x08025664 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08025680 + ldr r0, [r1] + ldrb r0, [r0, #0x10] + adds r4, r1, #0 + cmp r0, #1 + beq _08025690 + cmp r0, #1 + bgt _08025684 + cmp r0, #0 + beq _0802568A + b _080256A8 + .align 2, 0 +_08025680: .4byte gUnknown_202294C +_08025684: + cmp r0, #2 + beq _08025696 + b _080256A8 +_0802568A: + bl sub_0802602C + b _0802569A +_08025690: + bl sub_08028410 + b _0802569E +_08025696: + bl sub_08028554 +_0802569A: + cmp r0, #1 + bne _080256CC +_0802569E: + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + b _080256CC +_080256A8: + ldr r0, [r4] + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _080256C0 + ldr r0, _080256BC + bl sub_08025FE4 + b _080256C6 + .align 2, 0 +_080256BC: .4byte sub_08024B14 +_080256C0: + ldr r0, _080256D4 + bl sub_08025FE4 +_080256C6: + adds r0, r5, #0 + bl sub_080A8964 +_080256CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080256D4: .4byte sub_08024B4C + thumb_func_end sub_08025664 + + thumb_func_start sub_080256D8 +sub_080256D8: @ 0x080256D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080256FC + adds r5, r0, r1 + movs r0, #0 + ldrsh r4, [r5, r0] + cmp r4, #1 + beq _08025734 + cmp r4, #1 + bgt _08025700 + cmp r4, #0 + beq _08025706 + b _080257B0 + .align 2, 0 +_080256FC: .4byte gUnknown_3005B68 +_08025700: + cmp r4, #2 + beq _08025746 + b _080257B0 +_08025706: + ldr r6, _0802572C + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #2 + ldr r2, _08025730 + adds r0, r0, r2 + adds r1, r1, r0 + movs r0, #0 + movs r2, #1 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080257B0 + ldr r0, [r6] + strb r4, [r0, #8] + b _0802573E + .align 2, 0 +_0802572C: .4byte gUnknown_202294C +_08025730: .4byte 0x0000318C +_08025734: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080257B0 +_0802573E: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _080257B0 +_08025746: + bl sub_08024F38 + cmp r0, #0 + beq _0802578C + movs r2, #0 + ldr r1, _080257B8 + ldr r0, [r1] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + bhs _0802578C + adds r3, r1, #0 + ldr r5, _080257BC + ldr r4, _080257C0 +_08025762: + ldr r0, [r3] + lsls r1, r2, #2 + adds r1, r1, r0 + adds r1, r1, r4 + lsls r0, r2, #8 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + strb r0, [r1, #8] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, [r3] + adds r0, #0x24 + ldrb r0, [r0] + cmp r2, r0 + blo _08025762 +_0802578C: + ldr r4, _080257B8 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x24 + ldrb r0, [r0, #8] + ldrb r1, [r1] + cmp r0, r1 + blo _080257B0 + adds r0, r6, #0 + bl sub_080A8964 + movs r0, #6 + bl sub_0802900C + ldr r1, [r4] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] +_080257B0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080257B8: .4byte gUnknown_202294C +_080257BC: .4byte gUnknown_202207C +_080257C0: .4byte 0x0000318C + thumb_func_end sub_080256D8 + + thumb_func_start sub_080257C4 +sub_080257C4: @ 0x080257C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + ldr r6, _080258A0 + ldr r0, [r6] + adds r1, r0, #0 + adds r1, #0x24 + ldrb r7, [r1] + ldr r2, _080258A4 + adds r1, r0, r2 + ldr r3, _080258A8 + adds r2, r0, r3 + ldr r4, _080258AC + adds r3, r0, r4 + ldr r5, _080258B0 + adds r4, r0, r5 + str r4, [sp] + adds r5, #0x3c + adds r4, r0, r5 + str r4, [sp, #4] + adds r5, #0x3c + adds r4, r0, r5 + str r4, [sp, #8] + adds r4, r0, #0 + adds r4, #0x40 + str r4, [sp, #0xc] + movs r5, #0x90 + lsls r5, r5, #1 + adds r4, r0, r5 + str r4, [sp, #0x10] + movs r4, #0x96 + lsls r4, r4, #1 + adds r0, r0, r4 + str r0, [sp, #0x14] + movs r0, #0 + bl sub_08027E90 + ldr r1, [r6] + ldr r5, _080258B4 + adds r2, r1, r5 + str r0, [r2] + movs r0, #0x94 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + movs r5, #1 + cmp r5, r7 + bhs _0802586C +_08025828: + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0xa8 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _08025862 + lsls r0, r5, #4 + subs r0, r0, r5 + lsls r4, r0, #2 + adds r1, r4, r1 + ldr r2, _080258A8 + adds r1, r1, r2 + adds r0, r5, #0 + bl sub_08028044 + adds r1, r0, #0 + cmp r1, #0 + bne _08025862 + ldr r0, [r6] + adds r0, r0, r4 + ldr r3, _080258A8 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r6] + movs r4, #0x94 + lsls r4, r4, #1 + adds r0, r0, r4 + strb r1, [r0] +_08025862: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _08025828 +_0802586C: + ldr r5, _080258A0 + ldr r1, [r5] + movs r6, #0x92 + lsls r6, r6, #1 + adds r1, r1, r6 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bls _080258CA + ldr r1, [r5] + movs r2, #0x94 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, #0 + beq _080258B8 + bl sub_080115B4 + ldr r0, [r5] + adds r0, r0, r6 + movs r1, #0 + strb r1, [r0] + b _080258CA + .align 2, 0 +_080258A0: .4byte gUnknown_202294C +_080258A4: .4byte 0x000031A0 +_080258A8: .4byte 0x000031CC +_080258AC: .4byte 0x00003208 +_080258B0: .4byte 0x00003244 +_080258B4: .4byte 0x000031B0 +_080258B8: + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, #0x46 + bls _080258CA + bl sub_080115B4 + ldr r0, [r5] + adds r0, r0, r6 + strb r4, [r0] +_080258CA: + movs r5, #0 + cmp r5, r7 + bhs _080259BE + ldr r3, _08025914 + mov ip, r3 + ldr r4, _08025918 + mov r8, r4 +_080258D8: + mov r6, r8 + ldr r2, [r6] + lsls r0, r5, #4 + subs r1, r0, r5 + lsls r1, r1, #2 + adds r1, r2, r1 + add r1, ip + ldrb r1, [r1] + adds r6, r0, #0 + cmp r1, #0 + beq _080258FE + adds r0, r2, #0 + adds r0, #0xa8 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, #0 + bne _080258FE + movs r0, #1 + strb r0, [r1] +_080258FE: + adds r3, r4, #0 + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0xa8 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #3 + bgt _0802591C + cmp r0, #1 + bge _08025922 + b _080259B4 + .align 2, 0 +_08025914: .4byte 0x000031CC +_08025918: .4byte gUnknown_202294C +_0802591C: + cmp r0, #4 + beq _08025970 + b _080259B4 +_08025922: + adds r1, #0xb0 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _080259B4 + ldr r0, [r3] + adds r0, #0xb0 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r3] + adds r0, #0xa8 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r3] + subs r1, r6, r5 + lsls r1, r1, #2 + adds r0, r0, r1 + add r0, ip + strb r2, [r0] + ldr r0, [r3] + adds r0, r0, r1 + ldr r6, _08025968 + adds r0, r0, r6 + strb r2, [r0] + ldr r0, [r3] + adds r0, r0, r1 + ldr r1, _0802596C + adds r0, r0, r1 + b _080259B2 + .align 2, 0 +_08025968: .4byte 0x000031D0 +_0802596C: .4byte 0x000031D4 +_08025970: + adds r1, #0xb0 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x27 + bls _080259B4 + ldr r0, [r4] + adds r0, #0xb0 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r4] + adds r0, #0xa8 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r4] + subs r1, r6, r5 + lsls r1, r1, #2 + adds r0, r0, r1 + add r0, ip + strb r2, [r0] + ldr r0, [r4] + adds r0, r0, r1 + ldr r3, _080259CC + adds r0, r0, r3 + strb r2, [r0] + ldr r0, [r4] + adds r0, r0, r1 + ldr r6, _080259D0 + adds r0, r0, r6 +_080259B2: + strb r2, [r0] +_080259B4: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _080258D8 +_080259BE: + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080259CC: .4byte 0x000031D0 +_080259D0: .4byte 0x000031D4 + thumb_func_end sub_080257C4 + + thumb_func_start sub_080259D4 +sub_080259D4: @ 0x080259D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r5, _08025A98 + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x24 + ldrb r6, [r1] + ldr r2, _08025A9C + adds r1, r0, r2 + ldr r3, _08025AA0 + adds r2, r0, r3 + ldr r4, _08025AA4 + adds r3, r0, r4 + ldr r7, _08025AA8 + adds r4, r0, r7 + str r4, [sp] + adds r7, #0x3c + adds r4, r0, r7 + str r4, [sp, #4] + adds r7, #0x3c + adds r4, r0, r7 + str r4, [sp, #8] + adds r4, r0, #0 + adds r4, #0x40 + str r4, [sp, #0xc] + movs r7, #0x90 + lsls r7, r7, #1 + adds r4, r0, r7 + str r4, [sp, #0x10] + movs r4, #0x96 + lsls r4, r4, #1 + adds r0, r0, r4 + str r0, [sp, #0x14] + movs r0, #0 + bl sub_08027E90 + ldr r1, [r5] + ldr r7, _08025AAC + adds r2, r1, r7 + str r0, [r2] + movs r0, #0x94 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + movs r4, #1 + cmp r4, r6 + bhs _08025A64 +_08025A34: + adds r0, r4, #0 + bl sub_080280A0 + cmp r0, #0 + beq _08025A5A + ldr r0, _08025A98 + ldr r2, [r0] + lsls r1, r4, #2 + movs r3, #0x98 + lsls r3, r3, #1 + adds r0, r2, r3 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] + movs r7, #0x94 + lsls r7, r7, #1 + adds r1, r2, r7 + movs r0, #0 + strb r0, [r1] +_08025A5A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _08025A34 +_08025A64: + ldr r5, _08025A98 + ldr r1, [r5] + movs r6, #0x92 + lsls r6, r6, #1 + adds r1, r1, r6 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bls _08025AC2 + ldr r1, [r5] + movs r2, #0x94 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, #0 + beq _08025AB0 + bl sub_080115B4 + ldr r0, [r5] + adds r0, r0, r6 + movs r1, #0 + strb r1, [r0] + b _08025AC2 + .align 2, 0 +_08025A98: .4byte gUnknown_202294C +_08025A9C: .4byte 0x000031A0 +_08025AA0: .4byte 0x000031CC +_08025AA4: .4byte 0x00003208 +_08025AA8: .4byte 0x00003244 +_08025AAC: .4byte 0x000031B0 +_08025AB0: + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, #0x46 + bls _08025AC2 + bl sub_080115B4 + ldr r0, [r5] + adds r0, r0, r6 + strb r4, [r0] +_08025AC2: + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080259D4 + + thumb_func_start sub_08025ACC +sub_08025ACC: @ 0x08025ACC + push {r4, r5, lr} + ldr r5, _08025AE4 + ldr r0, [r5] + ldrb r0, [r0, #0x18] + cmp r0, #4 + beq _08025B08 + cmp r0, #4 + bgt _08025AE8 + cmp r0, #3 + beq _08025AEE + b _08025B12 + .align 2, 0 +_08025AE4: .4byte gUnknown_202294C +_08025AE8: + cmp r0, #0xb + beq _08025B0E + b _08025B12 +_08025AEE: + bl sub_08026978 + adds r4, r0, #0 + cmp r4, #1 + bne _08025B12 + bl sub_080269E8 + ldr r0, [r5] + movs r1, #0x8e + lsls r1, r1, #1 + adds r0, r0, r1 + str r4, [r0] + b _08025B12 +_08025B08: + bl sub_080257C4 + b _08025B12 +_08025B0E: + bl sub_080259D4 +_08025B12: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08025ACC + + thumb_func_start sub_08025B18 +sub_08025B18: @ 0x08025B18 + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r0, _08025B2C + ldr r5, [r0] + ldrb r0, [r5, #0x18] + cmp r0, #4 + beq _08025B30 + cmp r0, #0xb + beq _08025B80 + b _08025BBC + .align 2, 0 +_08025B2C: .4byte gUnknown_202294C +_08025B30: + ldr r1, _08025B70 + adds r0, r5, r1 + ldr r2, _08025B74 + adds r1, r5, r2 + ldr r3, _08025B78 + adds r2, r5, r3 + ldr r4, _08025B7C + adds r3, r5, r4 + movs r6, #0xca + lsls r6, r6, #6 + adds r4, r5, r6 + str r4, [sp] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #4] + adds r4, r5, #0 + adds r4, #0x40 + ldrb r4, [r4] + str r4, [sp, #8] + movs r6, #0x90 + lsls r6, 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_08027B5C + b _08025BBC + .align 2, 0 +_08025B70: .4byte 0x000032CC +_08025B74: .4byte 0x000031CC +_08025B78: .4byte 0x00003208 +_08025B7C: .4byte 0x00003244 +_08025B80: + ldr r1, _08025BC4 + adds r0, r5, r1 + ldr r2, _08025BC8 + adds r1, r5, r2 + ldr r3, _08025BCC + adds r2, r5, r3 + ldr r4, _08025BD0 + adds r3, r5, r4 + movs r6, #0xca + lsls r6, r6, #6 + adds r4, r5, r6 + str r4, [sp] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #4] + adds r4, r5, #0 + adds r4, #0x40 + ldrb r4, [r4] + str r4, [sp, #8] + movs r6, #0x90 + lsls r6, 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_08027B5C +_08025BBC: + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08025BC4: .4byte 0x000032CC +_08025BC8: .4byte 0x000031CC +_08025BCC: .4byte 0x00003208 +_08025BD0: .4byte 0x00003244 + thumb_func_end sub_08025B18 + + thumb_func_start sub_08025BD4 +sub_08025BD4: @ 0x08025BD4 + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r0, _08025BE8 + ldr r5, [r0] + ldrb r0, [r5, #0x18] + cmp r0, #4 + beq _08025BEC + cmp r0, #0xb + beq _08025C44 + b _08025C88 + .align 2, 0 +_08025BE8: .4byte gUnknown_202294C +_08025BEC: + adds r0, r5, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _08025C34 + adds r1, r1, r2 + adds r1, r5, r1 + ldr r3, _08025C38 + adds r2, r5, r3 + ldr r4, _08025C3C + adds r3, r5, r4 + ldr r6, _08025C40 + adds r4, r5, r6 + str r4, [sp] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #4] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #8] + adds r4, r5, #0 + adds r4, #0x40 + str r4, [sp, #0xc] + movs r6, #0x90 + lsls r6, r6, #1 + adds r4, r5, r6 + str r4, [sp, #0x10] + adds r6, #0xc + adds r4, r5, r6 + str r4, [sp, #0x14] + bl sub_08027E90 + b _08025C88 + .align 2, 0 +_08025C34: .4byte 0x000031A0 +_08025C38: .4byte 0x000031CC +_08025C3C: .4byte 0x00003208 +_08025C40: .4byte 0x00003244 +_08025C44: + adds r0, r5, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _08025C90 + adds r1, r1, r2 + adds r1, r5, r1 + ldr r3, _08025C94 + adds r2, r5, r3 + ldr r4, _08025C98 + adds r3, r5, r4 + ldr r6, _08025C9C + adds r4, r5, r6 + str r4, [sp] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #4] + adds r6, #0x3c + adds r4, r5, r6 + str r4, [sp, #8] + adds r4, r5, #0 + adds r4, #0x40 + str r4, [sp, #0xc] + movs r6, #0x90 + lsls r6, r6, #1 + adds r4, r5, r6 + str r4, [sp, #0x10] + adds r6, #0xc + adds r4, r5, r6 + str r4, [sp, #0x14] + bl sub_08027E90 +_08025C88: + add sp, #0x18 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08025C90: .4byte 0x000031A0 +_08025C94: .4byte 0x000031CC +_08025C98: .4byte 0x00003208 +_08025C9C: .4byte 0x00003244 + thumb_func_end sub_08025BD4 + + thumb_func_start sub_08025CA0 +sub_08025CA0: @ 0x08025CA0 + push {r4, lr} + ldr r4, _08025CB8 + ldr r1, [r4] + ldrb r0, [r1, #0x18] + cmp r0, #4 + beq _08025CD6 + cmp r0, #4 + bgt _08025CBC + cmp r0, #3 + beq _08025CC2 + b _08025D08 + .align 2, 0 +_08025CB8: .4byte gUnknown_202294C +_08025CBC: + cmp r0, #0xb + beq _08025CEC + b _08025D08 +_08025CC2: + movs r0, #1 + bl sub_08027AFC + ldr r0, [r4] + movs r1, #0x8e + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] + b _08025D08 +_08025CD6: + ldr r2, _08025CE8 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _08025D08 + bl sub_08028018 + b _08025D08 + .align 2, 0 +_08025CE8: .4byte 0x000032F8 +_08025CEC: + movs r2, #0x90 + lsls r2, r2, #1 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + bne _08025D08 + adds r2, #0xc + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + bne _08025D08 + movs r0, #1 + bl sub_0802807C +_08025D08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025CA0 + + thumb_func_start sub_08025D10 +sub_08025D10: @ 0x08025D10 + push {r4, r5, r6, lr} + ldr r6, _08025D48 + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, r0 + ldr r3, _08025D4C + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _08025D50 + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08025DB2 + ldr r0, [r6] + movs r2, #0xa2 + lsls r2, r2, #1 + adds r0, r0, r2 + strb r1, [r0] + b _08025DB2 + .align 2, 0 +_08025D48: .4byte gUnknown_202294C +_08025D4C: .4byte 0x000031CC +_08025D50: + ldr r3, _08025D7C + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, #1 + bne _08025D80 + movs r1, #0xa2 + lsls r1, r1, #1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08025DB2 + movs r0, #0x1f + bl m4aSongNumStop + movs r0, #0x1f + bl sub_080A306C + ldr r0, [r6] + movs r2, #0xa2 + lsls r2, r2, #1 + adds r0, r0, r2 + b _08025DB0 + .align 2, 0 +_08025D7C: .4byte 0x000031D0 +_08025D80: + ldr r3, _08025DDC + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, #1 + bne _08025DB2 + movs r5, #0xa2 + lsls r5, r5, #1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _08025DB2 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08025DB2 + movs r0, #0x16 + bl sub_080A306C + movs r0, #1 + bl sub_080281F8 + ldr r0, [r6] + adds r0, r0, r5 +_08025DB0: + strb r4, [r0] +_08025DB2: + ldr r0, _08025DE0 + ldr r2, [r0] + movs r5, #0xaa + lsls r5, r5, #1 + adds r1, r2, r5 + ldrb r1, [r1] + adds r4, r0, #0 + cmp r1, #0 + bne _08025DE4 + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _08025DE4 + bl sub_080A27F8 + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #1 + b _08025E02 + .align 2, 0 +_08025DDC: .4byte 0x000031D4 +_08025DE0: .4byte gUnknown_202294C +_08025DE4: + ldr r0, [r4] + movs r1, #0xaa + lsls r1, r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08025E04 + movs r0, #0xb + bl sub_080A2928 + ldr r0, [r4] + movs r2, #0xaa + lsls r2, r2, #1 + adds r0, r0, r2 + movs r1, #2 +_08025E02: + strb r1, [r0] +_08025E04: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025D10 + + thumb_func_start sub_08025E0C +sub_08025E0C: @ 0x08025E0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r6, _08025E58 + 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, r0, r1 + lsls r0, r0, #2 + adds r1, r2, r0 + ldr r3, _08025E5C + adds r0, r1, r3 + ldrb r3, [r0] + cmp r3, #0 + bne _08025E64 + ldr r4, _08025E60 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + beq _08025EC6 + adds r4, #4 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + beq _08025EC6 + movs r1, #0xa2 + lsls r1, r1, #1 + adds r0, r2, r1 + strb r3, [r0] + b _08025EC6 + .align 2, 0 +_08025E58: .4byte gUnknown_202294C +_08025E5C: .4byte 0x000031CC +_08025E60: .4byte 0x000031D0 +_08025E64: + ldr r3, _08025E90 + adds r0, r1, r3 + ldrb r4, [r0] + cmp r4, #1 + bne _08025E94 + movs r1, #0xa2 + lsls r1, r1, #1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08025EC6 + movs r0, #0x1f + bl m4aSongNumStop + movs r0, #0x1f + bl sub_080A306C + ldr r0, [r6] + movs r3, #0xa2 + lsls r3, r3, #1 + adds r0, r0, r3 + b _08025EC4 + .align 2, 0 +_08025E90: .4byte 0x000031D0 +_08025E94: + ldr r4, _08025F18 + adds r0, r1, r4 + ldrb r4, [r0] + cmp r4, #1 + bne _08025EC6 + movs r5, #0xa2 + lsls r5, r5, #1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _08025EC6 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08025EC6 + movs r0, #0x16 + bl sub_080A306C + movs r0, #1 + bl sub_080281F8 + ldr r0, [r6] + adds r0, r0, r5 +_08025EC4: + strb r4, [r0] +_08025EC6: + mov r4, r8 + cmp r4, r7 + bhs _08025F3A + ldr r5, _08025F1C +_08025ECE: + ldr r2, [r5] + adds r0, r2, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08025F20 + adds r0, r0, r1 + adds r0, r2, r0 + adds r1, r0, #0 + adds r1, #0x14 + adds r0, #0x1f + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #9 + bls _08025F24 + movs r3, #0xa4 + lsls r3, r3, #1 + adds r0, r2, r3 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _08025F30 + adds r0, r1, r4 + ldrb r0, [r0] + adds r0, #0x4a + bl sub_080A306C + ldr r0, [r5] + movs r1, #0xa4 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #1 + b _08025F2E + .align 2, 0 +_08025F18: .4byte 0x000031D4 +_08025F1C: .4byte gUnknown_202294C +_08025F20: .4byte 0x000031A0 +_08025F24: + movs r3, #0xa4 + lsls r3, r3, #1 + adds r0, r2, r3 + adds r0, r0, r4 + movs r1, #0 +_08025F2E: + strb r1, [r0] +_08025F30: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r7 + blo _08025ECE +_08025F3A: + ldr r0, _08025F64 + ldr r2, [r0] + movs r5, #0xaa + lsls r5, r5, #1 + adds r1, r2, r5 + ldrb r1, [r1] + adds r4, r0, #0 + cmp r1, #0 + bne _08025F68 + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _08025F68 + bl sub_080A27F8 + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #1 + b _08025F86 + .align 2, 0 +_08025F64: .4byte gUnknown_202294C +_08025F68: + ldr r0, [r4] + movs r1, #0xaa + lsls r1, r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08025F88 + movs r0, #0xb + bl sub_080A2928 + ldr r0, [r4] + movs r3, #0xaa + lsls r3, r3, #1 + adds r0, r0, r3 + movs r1, #2 +_08025F86: + strb r1, [r0] +_08025F88: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025E0C + + thumb_func_start sub_08025F94 +sub_08025F94: @ 0x08025F94 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025F94 + + thumb_func_start sub_08025FAC +sub_08025FAC: @ 0x08025FAC + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025FAC + + thumb_func_start sub_08025FC0 +sub_08025FC0: @ 0x08025FC0 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + bl sub_0806E630 + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025FC0 + + thumb_func_start sub_08025FD4 +sub_08025FD4: @ 0x08025FD4 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08025FD4 + + thumb_func_start sub_08025FE4 +sub_08025FE4: @ 0x08025FE4 + push {lr} + movs r1, #1 + bl sub_080A8878 + ldr r1, _08026004 + ldr r3, [r1] + movs r2, #0 + strb r0, [r3, #4] + 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 +_08026004: .4byte gUnknown_202294C + thumb_func_end sub_08025FE4 + + thumb_func_start sub_08026008 +sub_08026008: @ 0x08026008 + push {r4, lr} + ldr r2, _08026028 + 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 +_08026028: .4byte gUnknown_202294C + thumb_func_end sub_08026008 + + thumb_func_start sub_0802602C +sub_0802602C: @ 0x0802602C + push {r4, lr} + ldr r3, _08026060 + ldr r1, [r3] + ldrb r0, [r1, #0x14] + lsrs r2, r0, #2 + adds r0, #1 + strb r0, [r1, #0x14] + cmp r2, #0 + beq _08026080 + ldr r3, [r3] + ldrb r0, [r3, #0x14] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08026080 + ldr r1, _08026064 + adds r0, r3, #0 + adds r0, #0x24 + ldrb r0, [r0] + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + blo _08026068 + movs r0, #1 + b _08026082 + .align 2, 0 +_08026060: .4byte gUnknown_202294C +_08026064: .4byte gUnknown_82CB320 +_08026068: + lsls r4, r2, #3 + adds r1, r4, #0 + movs r0, #0x14 + bl sub_08001144 + rsbs r4, r4, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0x18 + adds r1, r4, #0 + bl sub_08001144 +_08026080: + movs r0, #0 +_08026082: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802602C + + thumb_func_start sub_08026088 +sub_08026088: @ 0x08026088 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r2, _080260E0 + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0x44 + adds r0, #0x48 + ldrb r5, [r0] + ldrb r1, [r1] + cmp r1, r5 + bhs _080260D4 + mov r8, r2 + ldr r0, _080260E4 + mov ip, r0 + movs r7, #0 + movs r6, #1 +_080260AA: + mov r2, r8 + ldr r0, [r2] + mov r2, ip + adds r4, r0, r2 + ldr r2, _080260E8 + adds r0, r0, r2 + adds r2, r0, r1 + movs r3, #0 + adds r0, r1, #0 + ands r0, r6 + cmp r0, #0 + bne _080260C4 + movs r3, #1 +_080260C4: + strb r3, [r2] + adds r0, r4, r1 + strb r7, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r5 + blo _080260AA +_080260D4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080260E0: .4byte gUnknown_202294C +_080260E4: .4byte 0x000032E0 +_080260E8: .4byte 0x000032EB + thumb_func_end sub_08026088 + + thumb_func_start sub_080260EC +sub_080260EC: @ 0x080260EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r0, _080261C0 + 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, #4] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + str r0, [sp, #8] + adds r0, r1, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _08026120 + b _080263DC +_08026120: + movs r6, #0 + ldr r0, [sp, #8] + cmp r6, r0 + bhs _08026208 +_08026128: + ldr r3, _080261C0 + lsls r0, r6, #4 + subs r1, r0, r6 + lsls r1, r1, #2 + ldr r2, [r3] + adds r1, r1, r2 + ldr r4, _080261C4 + adds r4, r4, r1 + mov r8, r4 + ldrb r1, [r4] + mov sb, r0 + adds r0, r6, #1 + str r0, [sp, #0xc] + cmp r1, #0 + beq _080261FC + adds r0, r2, #0 + adds r0, #0xa8 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #1 + bne _080261FC + ldr r1, [sp] + mov sl, r1 + ldr r2, [sp, #4] + cmp sl, r2 + bhs _080261FC + adds r7, r3, #0 +_0802615E: + ldr r0, _080261C8 + add r0, sl + ldrb r5, [r0] + ldr r1, [r7] + lsls r4, r5, #1 + adds r0, r1, #0 + adds r0, #0xf4 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r6 + beq _080261FC + adds r0, r1, #0 + adds r0, #0xf5 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r6 + beq _080261FC + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_080263FC + cmp r0, #1 + bne _080261D8 + movs r2, #0 + ldr r3, _080261C0 + mov r8, r4 +_08026196: + ldr r0, [r3] + mov r4, r8 + adds r1, r2, r4 + adds r0, #0xf4 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0xff + bne _080261CC + strb r6, [r1] + ldr r0, [r3] + adds r0, #0xa8 + adds r0, r0, r6 + movs r1, #2 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0xc4 + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0] + b _080261FC + .align 2, 0 +_080261C0: .4byte gUnknown_202294C +_080261C4: .4byte 0x000031CC +_080261C8: .4byte gUnknown_82C7D28 +_080261CC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bls _08026196 + b _080261FC +_080261D8: + ldr r0, [r7] + mov r2, sb + subs r1, r2, r6 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r4, _080262CC + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #1 + beq _080261FC + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, [sp, #4] + cmp sl, r0 + blo _0802615E +_080261FC: + ldr r1, [sp, #0xc] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + ldr r2, [sp, #8] + cmp r6, r2 + blo _08026128 +_08026208: + ldr r4, [sp] + mov sl, r4 + ldr r0, [sp, #4] + cmp sl, r0 + blo _08026214 + b _080263DC +_08026214: + ldr r1, _080262D0 + mov sb, r1 +_08026218: + movs r6, #0xff + ldr r0, _080262D4 + add r0, sl + ldrb r5, [r0] + mov r2, sb + ldr r0, [r2] + adds r0, #0xc4 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _08026230 + b _080263CA +_08026230: + adds r0, r5, #0 + bl sub_08026B4C + mov r1, sb + ldr r4, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r1, #0x90 + adds r1, r1, r0 + ldrb r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _08026256 + movs r3, #2 +_08026256: + ldr r2, _080262D8 + ldr r0, _080262DC + adds r1, r4, r0 + adds r1, r1, r5 + lsls r0, r3, #1 + adds r0, r0, r3 + ldrb r1, [r1] + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0xd0 + adds r0, r0, r5 + ldrb r0, [r0] + subs r2, r1, r0 + cmp r2, #5 + bgt _08026284 + adds r1, r4, #0 + adds r1, #0x9c + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, r0, r2 + strb r0, [r1] +_08026284: + mov r2, sb + ldr r1, [r2] + adds r1, #0x9c + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + movs r4, #0xff + ands r0, r4 + cmp r0, #5 + bhi _0802629E + b _080263CA +_0802629E: + mov r1, sb + ldr r0, [r1] + adds r0, #0x9c + adds r0, 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 _080262E0 + adds r0, r3, #0 + adds r0, #0xf5 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0xff + bne _080262C8 + b _080263CA +_080262C8: + b _080262F0 + .align 2, 0 +_080262CC: .4byte 0x000031D4 +_080262D0: .4byte gUnknown_202294C +_080262D4: .4byte gUnknown_82C7D28 +_080262D8: .4byte gUnknown_82CB314 +_080262DC: .4byte 0x000031B4 +_080262E0: + adds r0, r3, #0 + adds r0, #0xf5 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0xff + bne _080262F0 + ldrb r4, [r2] + b _08026316 +_080262F0: + mov r2, sb + 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_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _08026312 + adds r4, r7, #0 + b _08026316 +_08026312: + adds r4, r6, #0 + adds r6, r7, #0 +_08026316: + mov r1, sb + ldr r0, [r1] + ldr r2, _080263EC + adds r0, r0, r2 + adds r0, r0, r5 + movs r1, #7 + strb r1, [r0] + mov r1, sb + ldr r0, [r1] + adds r0, #0xc4 + adds r0, r0, r5 + movs r1, #2 + strb r1, [r0] + mov r2, sb + ldr r0, [r2] + adds r0, #0xa8 + adds r0, r0, r4 + movs r1, #3 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xb8 + adds r0, r0, r5 + strb r4, [r0] + ldr r1, [r2] + lsls r0, r4, #4 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r2, _080263F0 + adds r1, r1, r2 + movs r0, #1 + strb r0, [r1] + mov r2, sb + ldr r1, [r2] + lsls r0, r6, #4 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080263F4 + adds r1, r1, r0 + movs r2, #1 + strb r2, [r1] + mov r0, sb + ldr r1, [r0] + lsls r0, r4, #1 + adds r1, #0x86 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08026CDC + movs r0, #1 + bl sub_08026FF4 + adds r0, r4, #0 + bl sub_08026ADC + mov r1, sb + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0xe8 + adds r1, r1, r5 + ldr r2, _080263F8 + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + mov r4, sb + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r5 + movs r1, #3 + 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] +_080263CA: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r4, [sp, #4] + cmp sl, r4 + bhs _080263DC + b _08026218 +_080263DC: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080263EC: .4byte 0x000032EB +_080263F0: .4byte 0x000031D0 +_080263F4: .4byte 0x000031D4 +_080263F8: .4byte 0x000032E0 + thumb_func_end sub_080260EC + + thumb_func_start sub_080263FC +sub_080263FC: @ 0x080263FC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r7, #0 + ldr r2, _08026430 + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08026434 + adds r1, r1, r0 + mov ip, r2 + cmp r3, #2 + beq _08026438 + cmp r3, #2 + bgt _0802643E + cmp r3, #1 + beq _0802643C + b _0802643E + .align 2, 0 +_08026430: .4byte gUnknown_202294C +_08026434: .4byte 0x000032E0 +_08026438: + movs r7, #1 + b _0802643E +_0802643C: + movs r7, #2 +_0802643E: + adds r0, r1, #0 + adds r0, #0xb + adds r0, r0, r6 + ldrb r0, [r0] + subs r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0802649C + ldr r0, _08026490 + lsls r1, r4, #1 + adds r1, r1, r4 + adds r1, r7, r1 + lsls r2, r5, #4 + subs r2, r2, r5 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r1, [r1] + cmp r6, r1 + bne _080264D2 + mov r0, ip + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xc4 + adds r0, r0, r6 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08026498 + lsls r0, r4, #4 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r1, r0 + ldr r1, _08026494 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + b _080264D2 + .align 2, 0 +_08026490: .4byte gUnknown_82C7E3B +_08026494: .4byte 0x000031D4 +_08026498: + movs r0, #1 + b _080264D4 +_0802649C: + ldr r0, _080264DC + lsls r1, r4, #1 + adds r1, r1, r4 + adds r1, r7, r1 + lsls r2, r5, #4 + subs r2, r2, r5 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r1, [r1] + cmp r6, r1 + bne _080264D2 + mov r1, ip + ldr r0, [r1] + adds r0, #0xa8 + adds r0, r0, r4 + movs r1, #4 + strb r1, [r0] + mov r0, ip + ldr r1, [r0] + lsls r0, r4, #4 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080264E0 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] +_080264D2: + movs r0, #0 +_080264D4: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080264DC: .4byte gUnknown_82C7E3B +_080264E0: .4byte 0x000031D4 + thumb_func_end sub_080263FC + + thumb_func_start sub_080264E4 +sub_080264E4: @ 0x080264E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _080265B8 + ldr r4, [r2] + adds r0, r4, #0 + adds r0, #0x44 + ldrb r1, [r0] + adds r0, #4 + ldrb r0, [r0] + mov sb, r0 + movs r3, #0 + mov sl, r3 + movs r5, #0x90 + lsls r5, r5, #1 + adds r0, r4, r5 + str r3, [r0] + adds r5, r1, #0 + mov r0, sb + subs r0, #1 + cmp r5, r0 + blt _08026516 + b _08026734 +_08026516: + mov r8, r2 +_08026518: + mov r0, r8 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0xc4 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #1 + bls _0802652A + b _08026634 +_0802652A: + movs r1, #0x90 + lsls r1, r1, #1 + adds r0, r4, r1 + movs r2, #1 + str r2, [r0] + ldr r1, _080265BC + adds r0, r4, r1 + adds r6, r0, r5 + ldrb r0, [r6] + cmp r0, #9 + bls _080265C4 + movs r7, #0 + movs r0, #0xa + strb r0, [r6] + mov r1, r8 + ldr r0, [r1] + adds r0, #0xc4 + adds r0, r0, r5 + movs r1, #3 + strb r1, [r0] + mov r1, r8 + ldr r0, [r1] + movs r6, #0xa4 + lsls r6, r6, #1 + adds r0, r0, r6 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, #0 + bne _08026574 + strb r2, [r1] + ldr r2, _080265C0 + adds r0, r4, r2 + adds r0, r0, r5 + ldrb r0, [r0] + adds r0, #0x4a + bl sub_080A306C +_08026574: + mov r0, r8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _0802658A + mov r2, sl + cmp r2, #1 + beq _0802658A + b _08026724 +_0802658A: + movs r0, #1 + mov sl, r0 + adds r0, r1, r6 + adds r0, r0, r5 + strb r7, [r0] + mov r1, r8 + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0x40 + ldrb r0, [r1] + cmp r0, #9 + bhi _080265A6 + adds r0, #1 + strb r0, [r1] +_080265A6: + movs r0, #3 + adds r1, r5, #0 + movs r2, #0 + bl sub_08026CDC + movs r0, #0 + bl sub_08026FF4 + b _08026724 + .align 2, 0 +_080265B8: .4byte gUnknown_202294C +_080265BC: .4byte 0x000032EB +_080265C0: .4byte 0x000032E0 +_080265C4: + adds r0, r5, #0 + bl sub_08026B4C + mov r2, r8 + ldr r7, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r7, #0 + adds r1, #0x90 + adds r1, r1, r0 + ldrb r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _080265EA + movs r3, #2 +_080265EA: + ldr r2, _0802662C + ldr r0, _08026630 + adds r1, r4, r0 + adds r1, r1, r5 + lsls r0, r3, #1 + adds r0, r0, r3 + ldrb r1, [r1] + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r2, [r0] + adds r1, r7, #0 + adds r1, #0xd0 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r3, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r2 + blo _08026624 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + mov r1, r8 + ldr r0, [r1] + adds r0, #0xd0 + adds r0, r0, r5 + strb r3, [r0] +_08026624: + bl sub_080260EC + b _08026724 + .align 2, 0 +_0802662C: .4byte gUnknown_82CB314 +_08026630: .4byte 0x000032E0 +_08026634: + cmp r0, #2 + bne _080266B4 + adds r1, r4, #0 + adds r1, #0xdc + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r3, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _08026724 + mov r0, r8 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0xb8 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r1, _080266A8 + adds r2, r2, r1 + strb r3, [r2] + mov r2, r8 + ldr r0, [r2] + adds r0, #0xdc + adds r0, r0, r5 + strb r3, [r0] + ldr r0, [r2] + adds r0, #0xd0 + adds r0, r0, r5 + strb r3, [r0] + ldr r0, [r2] + adds r0, #0xc4 + adds r0, r0, r5 + strb r3, [r0] + ldr r1, _080266AC + adds r0, r4, r1 + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0] + adds r0, r5, #0 + bl sub_08026B4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + bl sub_08026B70 + ldr r2, _080266B0 + adds r1, r4, r2 + adds r1, r1, r5 + strb r0, [r1] + b _08026724 + .align 2, 0 +_080266A8: .4byte 0x000031D0 +_080266AC: .4byte 0x000032EB +_080266B0: .4byte 0x000032E0 +_080266B4: + cmp r0, #3 + bne _08026724 + adds r1, r4, #0 + adds r1, #0xdc + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _08026724 + mov r0, r8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bhi _08026724 + adds r0, r1, #0 + adds r0, #0xdc + adds r0, r0, r5 + strb r2, [r0] + mov r1, r8 + ldr r0, [r1] + adds r0, #0xd0 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r1] + adds r0, #0xc4 + adds r0, r0, r5 + strb r2, [r0] + ldr r2, _08026744 + adds r0, r4, r2 + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0] + mov r0, r8 + ldr r1, [r0] + adds r1, #0xe8 + adds r1, r1, r5 + subs r2, #0xb + adds r4, r4, r2 + adds r4, r4, r5 + ldrb r0, [r4] + strb r0, [r1] + adds r0, r5, #0 + bl sub_08026B4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + bl sub_08026B70 + strb r0, [r4] +_08026724: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sb + subs r0, #1 + cmp r5, r0 + bge _08026734 + b _08026518 +_08026734: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08026744: .4byte 0x000032EB + thumb_func_end sub_080264E4 + + thumb_func_start sub_08026748 +sub_08026748: @ 0x08026748 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _080267B0 + 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 + bhs _0802683A + ldr r0, _080267B4 + mov sb, r0 +_08026768: + ldr r0, _080267B0 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x28 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _080267B8 + adds r0, r0, r2 + adds r7, r3, r0 + movs r0, #0xb + adds r2, r1, #0 + muls r2, r0, r2 + adds r2, r6, r2 + adds r3, #0x24 + ldrb r1, [r3] + subs r1, #1 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #3 + subs r0, r0, r1 + adds r2, r2, r0 + add r2, sb + ldrb r4, [r2] + adds r0, r7, #0 + adds r0, #0x1f + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _080267BC + adds r0, r6, #0 + movs r1, #0 + bl sub_08028924 + b _080267C4 + .align 2, 0 +_080267B0: .4byte gUnknown_202294C +_080267B4: .4byte gUnknown_82C7D28 +_080267B8: .4byte 0x000031A0 +_080267BC: + adds r0, r6, #0 + movs r1, #1 + bl sub_08028924 +_080267C4: + adds r0, r7, #0 + adds r0, #0x1f + adds r5, r0, r4 + ldrb r0, [r5] + cmp r0, #9 + bls _080267F0 + adds r0, r7, #0 + adds r0, #0x14 + adds r0, r0, r4 + ldrb r1, [r0] + adds r1, #3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080289D0 + ldrb r1, [r5] + lsls r1, r1, #0x19 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r1, r1, r0 + b _08026812 +_080267F0: + adds r0, r7, #0 + adds r0, #0x14 + adds r3, r0, r4 + ldrb r0, [r3] + cmp r0, #3 + bne _0802681C + movs r0, #7 + strb r0, [r5] + adds r0, r6, #0 + movs r1, #6 + bl sub_080289D0 + ldrb r1, [r5] + lsls r1, r1, #0x19 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r1, r1, r2 +_08026812: + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080289A8 + b _08026830 +_0802681C: + ldrb r1, [r3] + adds r0, r6, #0 + bl sub_080289D0 + ldrb r1, [r5] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080289A8 +_08026830: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r8 + blo _08026768 +_0802683A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08026748 + + thumb_func_start sub_08026848 +sub_08026848: @ 0x08026848 + push {r4, r5, r6, lr} + ldr r1, _08026880 + ldr r0, [r1] + adds r0, #0x24 + ldrb r5, [r0] + movs r4, #0 + cmp r4, r5 + bhs _0802687A + adds r6, r1, #0 +_0802685A: + lsls r0, r4, #4 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, [r6] + adds r0, r0, r1 + ldr r1, _08026884 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080283E0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0802685A +_0802687A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08026880: .4byte gUnknown_202294C +_08026884: .4byte 0x000031CC + thumb_func_end sub_08026848 + + thumb_func_start sub_08026888 +sub_08026888: @ 0x08026888 + push {r4, r5, lr} + ldr r0, _080268B0 + ldr r0, [r0] + adds r0, #0x24 + ldrb r5, [r0] + movs r4, #0 + cmp r4, r5 + bhs _080268AA +_08026898: + adds r0, r4, #0 + movs r1, #4 + bl sub_080283E0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08026898 +_080268AA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080268B0: .4byte gUnknown_202294C + thumb_func_end sub_08026888 + + thumb_func_start sub_080268B4 +sub_080268B4: @ 0x080268B4 + push {lr} + bl sub_08026748 + ldr r0, _080268CC + ldr r0, [r0] + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _080268D0 + bl sub_08026888 + b _080268D4 + .align 2, 0 +_080268CC: .4byte gUnknown_202294C +_080268D0: + bl sub_08026848 +_080268D4: + ldr r0, _080268E4 + ldr r0, [r0] + adds r0, #0x40 + ldrb r0, [r0] + bl sub_08028600 + pop {r0} + bx r0 + .align 2, 0 +_080268E4: .4byte gUnknown_202294C + thumb_func_end sub_080268B4 + + thumb_func_start sub_080268E8 +sub_080268E8: @ 0x080268E8 + push {lr} + bl sub_08026748 + ldr r0, _08026900 + ldr r0, [r0] + adds r0, #0x40 + ldrb r0, [r0] + cmp r0, #9 + bls _08026904 + bl sub_08026888 + b _08026908 + .align 2, 0 +_08026900: .4byte gUnknown_202294C +_08026904: + bl sub_08026848 +_08026908: + ldr r0, _08026918 + ldr r0, [r0] + adds r0, #0x40 + ldrb r0, [r0] + bl sub_08028600 + pop {r0} + bx r0 + .align 2, 0 +_08026918: .4byte gUnknown_202294C + thumb_func_end sub_080268E8 + + thumb_func_start sub_0802691C +sub_0802691C: @ 0x0802691C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #4 + bhi _08026974 + lsls r0, r0, #2 + ldr r1, _08026934 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026934: .4byte _08026938 +_08026938: @ jump table + .4byte _0802694C @ case 0 + .4byte _08026954 @ case 1 + .4byte _0802695C @ case 2 + .4byte _08026964 @ case 3 + .4byte _0802696C @ case 4 +_0802694C: + movs r0, #4 + strb r0, [r3] + movs r0, #7 + b _08026972 +_08026954: + movs r0, #3 + strb r0, [r3] + movs r0, #8 + b _08026972 +_0802695C: + movs r0, #2 + strb r0, [r3] + movs r0, #9 + b _08026972 +_08026964: + movs r0, #1 + strb r0, [r3] + movs r0, #0xa + b _08026972 +_0802696C: + movs r0, #0 + strb r0, [r3] + movs r0, #0xb +_08026972: + strb r0, [r2] +_08026974: + pop {r0} + bx r0 + thumb_func_end sub_0802691C + + thumb_func_start sub_08026978 +sub_08026978: @ 0x08026978 + push {r4, r5, r6, lr} + ldr r1, _080269D0 + ldr r0, [r1] + adds r0, #0x24 + ldrb r5, [r0] + movs r4, #1 + cmp r4, r5 + bhs _080269DE + adds r6, r1, #0 +_0802698A: + ldr r0, [r6] + movs r1, #0xac + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080269AC + adds r0, r4, #0 + bl sub_08027B28 + ldr r1, [r6] + movs r2, #0xac + lsls r2, r2, #1 + adds r1, r1, r2 + adds r1, r1, r4 + strb r0, [r1] +_080269AC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0802698A + cmp r4, r5 + bhs _080269DE + ldr r0, _080269D0 + ldr r0, [r0] + movs r2, #0xac + lsls r2, r2, #1 + adds r1, r0, r2 +_080269C4: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080269D4 + movs r0, #0 + b _080269E0 + .align 2, 0 +_080269D0: .4byte gUnknown_202294C +_080269D4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _080269C4 +_080269DE: + movs r0, #1 +_080269E0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08026978 + + thumb_func_start sub_080269E8 +sub_080269E8: @ 0x080269E8 + push {r4, lr} + movs r1, #0 + ldr r4, _08026A0C + movs r3, #0xac + lsls r3, r3, #1 + movs r2, #0 +_080269F4: + ldr r0, [r4] + adds r0, r0, r3 + adds r0, r0, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _080269F4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08026A0C: .4byte gUnknown_202294C + thumb_func_end sub_080269E8 + + thumb_func_start sub_08026A10 +sub_08026A10: @ 0x08026A10 + push {r4, lr} + ldr r3, _08026A44 + ldr r1, [r3] + adds r2, r1, #0 + adds r2, #0x40 + ldrb r0, [r2] + cmp r0, #9 + bls _08026A48 + movs r4, #0x90 + lsls r4, r4, #1 + adds r0, r1, r4 + ldr r0, [r0] + cmp r0, #0 + bne _08026A48 + movs r0, #0xa + strb r0, [r2] + ldr r0, [r3] + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _08026A48 + movs r0, #1 + b _08026A4A + .align 2, 0 +_08026A44: .4byte gUnknown_202294C +_08026A48: + movs r0, #0 +_08026A4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08026A10 + + thumb_func_start sub_08026A50 +sub_08026A50: @ 0x08026A50 + push {r4, r5, r6, lr} + ldr r4, _08026AC8 + ldr r1, [r4] + adds r2, r1, #0 + adds r2, #0x40 + ldrb r0, [r2] + cmp r0, #9 + bls _08026AD4 + adds r0, r1, #0 + adds r0, #0x44 + ldrb r3, [r0] + adds r0, #4 + ldrb r5, [r0] + movs r0, #0xa + strb r0, [r2] + ldr r4, [r4] + mov ip, r4 + movs r0, #0x96 + lsls r0, r0, #1 + add r0, ip + ldr r0, [r0] + cmp r0, #0 + beq _08026AD4 + adds r4, r3, #0 + cmp r4, r5 + bhs _08026AC4 + mov r0, ip + adds r0, #0x28 + ldrb r3, [r0] + lsls r1, r3, #4 + subs r1, r1, r3 + lsls r1, r1, #2 + ldr r6, _08026ACC + subs r0, #4 + ldrb r2, [r0] + subs r2, #1 + add r1, ip + movs r0, #0xb + muls r3, r0, r3 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #3 + subs r2, r0, r2 + ldr r0, _08026AD0 + adds r1, r1, r0 +_08026AAA: + adds r0, r4, r3 + adds r0, r0, r2 + adds r0, r0, r6 + ldrb r0, [r0] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #0xa + bne _08026AD4 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08026AAA +_08026AC4: + movs r0, #1 + b _08026AD6 + .align 2, 0 +_08026AC8: .4byte gUnknown_202294C +_08026ACC: .4byte gUnknown_82C7D28 +_08026AD0: .4byte 0x000031BF +_08026AD4: + movs r0, #0 +_08026AD6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08026A50 + + thumb_func_start sub_08026ADC +sub_08026ADC: @ 0x08026ADC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08026B44 + mov r8, r0 + ldr r0, _08026B48 + ldr r6, [r0] + adds r0, r6, #0 + adds r0, #0x90 + adds r0, r0, r5 + mov sb, r0 + ldrb r7, [r0] + adds r0, r7, #0 + movs r1, #7 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + add r4, r8 + adds r0, r7, #0 + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldrb r4, [r4] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsls r5, r5, #1 + adds r6, #0x86 + adds r6, r6, r5 + ldrh r1, [r6] + lsrs r0, r0, #0x18 + cmp r1, r0 + blo _08026B36 + adds r0, r7, #1 + mov r1, sb + strb r0, [r1] +_08026B36: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08026B44: .4byte gUnknown_82CB328 +_08026B48: .4byte gUnknown_202294C + thumb_func_end sub_08026ADC + + thumb_func_start sub_08026B4C +sub_08026B4C: @ 0x08026B4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08026B68 + ldr r1, _08026B6C + ldr r1, [r1] + adds r1, #0x24 + ldrb r1, [r1] + subs r1, #1 + movs r2, #0xb + muls r1, r2, r1 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08026B68: .4byte gUnknown_82C7ED4 +_08026B6C: .4byte gUnknown_202294C + thumb_func_end sub_08026B4C + + thumb_func_start sub_08026B70 +sub_08026B70: @ 0x08026B70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r4, _08026BF0 + ldr r1, [r4] + adds r1, #0x24 + ldrb r2, [r1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08026BF4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r0, r2, #4 + subs r0, r0, r2 + adds r1, r1, r0 + adds r0, r1, r3 + ldrb r0, [r0] + mov ip, r0 + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r7, [r0] + adds r3, #2 + adds r1, r1, r3 + ldrb r1, [r1] + mov r8, r1 + movs r3, #0 + ldr r1, _08026BF8 + lsls r0, r2, #2 + adds r2, r0, r2 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08026BD8 + adds r6, r1, #0 +_08026BBE: + adds r0, r3, r2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r5, r0 + beq _08026BFC + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r3, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08026BBE +_08026BD8: + ldr r0, [r4] + adds r0, #0x90 + mov r1, ip + adds r2, r0, r1 + adds r1, r0, r7 + ldrb r0, [r2] + ldrb r3, [r1] + cmp r0, r3 + bls _08026C06 + adds r1, r0, #0 + b _08026C08 + .align 2, 0 +_08026BF0: .4byte gUnknown_202294C +_08026BF4: .4byte gUnknown_82C7E86 +_08026BF8: .4byte gUnknown_82C7F0B +_08026BFC: + ldr r0, [r4] + adds r0, #0x90 + adds r0, r0, r7 + ldrb r0, [r0] + b _08026C1A +_08026C06: + ldrb r1, [r1] +_08026C08: + ldr r0, [r4] + adds r0, #0x90 + mov r2, r8 + adds r4, r0, r2 + ldrb r0, [r4] + cmp r0, r1 + bls _08026C18 + adds r1, r0, #0 +_08026C18: + adds r0, r1, #0 +_08026C1A: + adds r1, r5, #0 + bl sub_08026C30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08026B70 + + thumb_func_start sub_08026C30 +sub_08026C30: @ 0x08026C30 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08026C5C + ldr r2, [r2] + adds r2, #0xe8 + adds r2, r2, r1 + ldrb r4, [r2] + movs r1, #7 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bhi _08026C9E + lsls r0, r0, #2 + ldr r1, _08026C60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026C5C: .4byte gUnknown_202294C +_08026C60: .4byte _08026C64 +_08026C64: @ jump table + .4byte _08026C9E @ case 0 + .4byte _08026C96 @ case 1 + .4byte _08026CA2 @ case 2 + .4byte _08026C80 @ case 3 + .4byte _08026C86 @ case 4 + .4byte _08026C8C @ case 5 + .4byte _08026C92 @ case 6 +_08026C80: + cmp r4, #0 + beq _08026C96 + b _08026C9E +_08026C86: + cmp r4, #0 + beq _08026CA2 + b _08026C9E +_08026C8C: + cmp r4, #2 + beq _08026C96 + b _08026CA2 +_08026C92: + cmp r4, #0 + bne _08026C9A +_08026C96: + movs r0, #1 + b _08026CA4 +_08026C9A: + cmp r4, #1 + beq _08026CA2 +_08026C9E: + movs r0, #0 + b _08026CA4 +_08026CA2: + movs r0, #2 +_08026CA4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08026C30 + + thumb_func_start sub_08026CAC +sub_08026CAC: @ 0x08026CAC + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 + adds r4, r0, #0 + b _08026CBE +_08026CB6: + ldrh r0, [r4, #6] + adds r6, r6, r0 + adds r4, #0xc + adds r5, #1 +_08026CBE: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _08026CB6 + cmp r6, #0xa + bgt _08026CD2 + movs r0, #0 + b _08026CD4 +_08026CD2: + movs r0, #1 +_08026CD4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08026CAC + + thumb_func_start sub_08026CDC +sub_08026CDC: @ 0x08026CDC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r6, _08026D04 + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r5, [r0] + cmp r3, #0 + bge _08026CFA + b _08026FEC +_08026CFA: + cmp r3, #2 + ble _08026D08 + cmp r3, #3 + beq _08026D38 + b _08026FEC + .align 2, 0 +_08026D04: .4byte gUnknown_202294C +_08026D08: + ldr r3, _08026D30 + adds r0, r1, r3 + adds r0, r0, r4 + ldrb r4, [r0] + lsls r4, r4, #1 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r4, r0 + adds r0, r1, #0 + adds r0, #0x4a + adds r0, r0, r4 + ldrh r0, [r0] + ldr r1, _08026D34 + bl sub_080277E8 + ldr r1, [r6] + adds r1, #0x4a + adds r1, r1, r4 + b _08026FEA + .align 2, 0 +_08026D30: .4byte 0x000031B4 +_08026D34: .4byte 0x00004E20 +_08026D38: + adds r0, r1, #0 + adds r0, #0x4a + bl sub_08026CAC + cmp r0, #0 + beq _08026D46 + b _08026FEC +_08026D46: + cmp r5, #3 + bne _08026D4C + b _08026F14 +_08026D4C: + cmp r5, #3 + bgt _08026D58 + cmp r5, #2 + bne _08026D56 + b _08026FA8 +_08026D56: + b _08026FEC +_08026D58: + cmp r5, #4 + bne _08026D5E + b _08026E50 +_08026D5E: + cmp r5, #5 + beq _08026D64 + b _08026FEC +_08026D64: + cmp r4, #9 + bls _08026D6A + b _08026FEC +_08026D6A: + lsls r0, r4, #2 + ldr r1, _08026D74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026D74: .4byte _08026D78 +_08026D78: @ jump table + .4byte _08026DA0 @ case 0 + .4byte _08026DB8 @ case 1 + .4byte _08026DC4 @ case 2 + .4byte _08026DDC @ case 3 + .4byte _08026DE8 @ case 4 + .4byte _08026E00 @ case 5 + .4byte _08026E0C @ case 6 + .4byte _08026E20 @ case 7 + .4byte _08026E2C @ case 8 + .4byte _08026E44 @ case 9 +_08026DA0: + ldr r0, _08026DB4 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x68 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x74 + b _08026FE6 + .align 2, 0 +_08026DB4: .4byte gUnknown_202294C +_08026DB8: + ldr r0, _08026DC0 + ldr r1, [r0] + adds r1, #0x74 + b _08026FE6 + .align 2, 0 +_08026DC0: .4byte gUnknown_202294C +_08026DC4: + ldr r0, _08026DD8 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x74 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x80 + b _08026FE6 + .align 2, 0 +_08026DD8: .4byte gUnknown_202294C +_08026DDC: + ldr r0, _08026DE4 + ldr r1, [r0] + adds r1, #0x80 + b _08026FE6 + .align 2, 0 +_08026DE4: .4byte gUnknown_202294C +_08026DE8: + ldr r0, _08026DFC + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x80 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026DFC: .4byte gUnknown_202294C +_08026E00: + ldr r0, _08026E08 + ldr r1, [r0] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026E08: .4byte gUnknown_202294C +_08026E0C: + ldr r0, _08026E1C + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x50 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _08026FE4 + .align 2, 0 +_08026E1C: .4byte gUnknown_202294C +_08026E20: + ldr r0, _08026E28 + ldr r1, [r0] + b _08026FE4 + .align 2, 0 +_08026E28: .4byte gUnknown_202294C +_08026E2C: + ldr r0, _08026E40 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x5c + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026E40: .4byte gUnknown_202294C +_08026E44: + ldr r0, _08026E4C + ldr r1, [r0] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026E4C: .4byte gUnknown_202294C +_08026E50: + subs r0, r4, #1 + cmp r0, #7 + bls _08026E58 + b _08026FEC +_08026E58: + lsls r0, r0, #2 + ldr r1, _08026E64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026E64: .4byte _08026E68 +_08026E68: @ jump table + .4byte _08026E88 @ case 0 + .4byte _08026EA0 @ case 1 + .4byte _08026EAC @ case 2 + .4byte _08026EC4 @ case 3 + .4byte _08026ED0 @ case 4 + .4byte _08026EE4 @ case 5 + .4byte _08026EF0 @ case 6 + .4byte _08026F08 @ case 7 +_08026E88: + ldr r0, _08026E9C + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x68 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x74 + b _08026FE6 + .align 2, 0 +_08026E9C: .4byte gUnknown_202294C +_08026EA0: + ldr r0, _08026EA8 + ldr r1, [r0] + adds r1, #0x74 + b _08026FE6 + .align 2, 0 +_08026EA8: .4byte gUnknown_202294C +_08026EAC: + ldr r0, _08026EC0 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x74 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026EC0: .4byte gUnknown_202294C +_08026EC4: + ldr r0, _08026ECC + ldr r1, [r0] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026ECC: .4byte gUnknown_202294C +_08026ED0: + ldr r0, _08026EE0 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x50 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _08026FE4 + .align 2, 0 +_08026EE0: .4byte gUnknown_202294C +_08026EE4: + ldr r0, _08026EEC + ldr r1, [r0] + b _08026FE4 + .align 2, 0 +_08026EEC: .4byte gUnknown_202294C +_08026EF0: + ldr r0, _08026F04 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x5c + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026F04: .4byte gUnknown_202294C +_08026F08: + ldr r0, _08026F10 + ldr r1, [r0] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026F10: .4byte gUnknown_202294C +_08026F14: + subs r0, r4, #2 + cmp r0, #5 + bhi _08026FEC + lsls r0, r0, #2 + ldr r1, _08026F24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08026F24: .4byte _08026F28 +_08026F28: @ jump table + .4byte _08026F40 @ case 0 + .4byte _08026F58 @ case 1 + .4byte _08026F64 @ case 2 + .4byte _08026F7C @ case 3 + .4byte _08026F88 @ case 4 + .4byte _08026F9C @ case 5 +_08026F40: + ldr r0, _08026F54 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x5c + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026F54: .4byte gUnknown_202294C +_08026F58: + ldr r0, _08026F60 + ldr r1, [r0] + adds r1, #0x68 + b _08026FE6 + .align 2, 0 +_08026F60: .4byte gUnknown_202294C +_08026F64: + ldr r0, _08026F78 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x68 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026F78: .4byte gUnknown_202294C +_08026F7C: + ldr r0, _08026F84 + ldr r1, [r0] + adds r1, #0x50 + b _08026FE6 + .align 2, 0 +_08026F84: .4byte gUnknown_202294C +_08026F88: + ldr r0, _08026F98 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x50 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _08026FE4 + .align 2, 0 +_08026F98: .4byte gUnknown_202294C +_08026F9C: + ldr r0, _08026FA4 + ldr r1, [r0] + b _08026FE4 + .align 2, 0 +_08026FA4: .4byte gUnknown_202294C +_08026FA8: + cmp r4, #4 + beq _08026FCE + cmp r4, #4 + bgt _08026FB6 + cmp r4, #3 + beq _08026FC0 + b _08026FEC +_08026FB6: + cmp r4, #5 + beq _08026FD4 + cmp r4, #6 + beq _08026FE2 + b _08026FEC +_08026FC0: + ldr r1, [r6] + adds r2, r1, #0 + adds r2, #0x50 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _08026FE4 +_08026FCE: + ldr r1, [r6] + adds r1, #0x50 + b _08026FE6 +_08026FD4: + ldr r1, [r6] + adds r2, r1, #0 + adds r2, #0x50 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _08026FE4 +_08026FE2: + ldr r1, [r6] +_08026FE4: + adds r1, #0x5c +_08026FE6: + ldrh r0, [r1] + adds r0, #1 +_08026FEA: + strh r0, [r1] +_08026FEC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08026CDC + + thumb_func_start sub_08026FF4 +sub_08026FF4: @ 0x08026FF4 + push {r4, r5, lr} + adds r1, r0, #0 + ldr r4, _08027038 + ldr r3, [r4] + adds r0, r3, #0 + adds r0, #0x24 + ldrb r0, [r0] + cmp r0, #5 + bne _0802705E + cmp r1, #1 + bne _08027040 + movs r5, #0x89 + lsls r5, r5, #1 + adds r1, r3, r5 + ldrh r0, [r1] + adds r2, r0, #1 + strh r2, [r1] + movs r0, #0x8a + lsls r0, r0, #1 + adds r1, r3, r0 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + ldrh r3, [r1] + cmp r0, r3 + bls _08027028 + strh r2, [r1] +_08027028: + ldr r0, [r4] + adds r2, r0, r5 + ldrh r0, [r2] + ldr r1, _0802703C + cmp r0, r1 + bls _0802705E + strh r1, [r2] + b _0802705E + .align 2, 0 +_08027038: .4byte gUnknown_202294C +_0802703C: .4byte 0x0000270F +_08027040: + movs r2, #0x89 + lsls r2, r2, #1 + adds r0, r3, r2 + movs r5, #0x8a + lsls r5, r5, #1 + adds r1, r3, r5 + ldrh r0, [r0] + ldrh r3, [r1] + cmp r0, r3 + bls _08027056 + strh r0, [r1] +_08027056: + ldr r0, [r4] + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0] +_0802705E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08026FF4 + + thumb_func_start sub_08027064 +sub_08027064: @ 0x08027064 + push {r4, r5, lr} + movs r3, #0 + ldr r2, _080270A4 + ldr r0, [r2] + adds r0, #0x24 + ldrb r0, [r0] + cmp r3, r0 + bhs _0802709C + adds r5, r2, #0 + movs r4, #0x8a + lsls r4, r4, #1 +_0802707A: + ldr r2, [r5] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x54 + adds r1, r1, r0 + adds r0, r2, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r2, #0x24 + ldrb r2, [r2] + cmp r3, r2 + blo _0802707A +_0802709C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080270A4: .4byte gUnknown_202294C + thumb_func_end sub_08027064 + + thumb_func_start sub_080270A8 +sub_080270A8: @ 0x080270A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r5, #0 + ldr r7, _08027198 + movs r4, #0 + ldr r0, _0802719C + mov sl, r0 +_080270BC: + movs r2, #0 + lsls r6, r5, #4 + lsls r1, r5, #1 + mov r8, r1 + lsls r0, r5, #3 + mov ip, r0 + adds r1, r5, #1 + mov sb, r1 + subs r0, r6, r5 + lsls r3, r0, #2 +_080270D0: + ldr r0, [r7] + adds r1, r2, r3 + add r0, sl + adds r0, r0, r1 + strb r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xa + bls _080270D0 + ldr r0, [r7] + subs r1, r6, r5 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r2, _080271A0 + adds r0, r0, r2 + strb r4, [r0] + ldr r0, [r7] + adds r0, r0, r1 + ldr r1, _080271A4 + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r7] + adds r0, #0x90 + adds r0, r0, r5 + strb r4, [r0] + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0x86 + add r0, r8 + strh r4, [r0] + add r1, ip + ldr r2, _080271A8 + adds r1, r1, r2 + strb r4, [r1] + ldr r2, [r7] + ldr r1, _080271AC + adds r0, r2, r1 + add r0, ip + str r4, [r0] + mov r0, r8 + adds r1, r0, r5 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x4a + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + adds r0, #0x4e + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + adds r0, #0x50 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + adds r0, #0x52 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #0 + adds r0, #0x54 + adds r0, r0, r1 + strh r4, [r0] + mov r1, sb + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _080270BC + ldr r2, _08027198 + ldr r0, [r2] + movs r1, #0xaa + lsls r1, r1, #1 + adds r0, r0, r1 + movs r2, #0 + strb r2, [r0] + ldr r1, _08027198 + ldr r0, [r1] + movs r1, #0x89 + lsls r1, r1, #1 + adds r3, r0, r1 + movs r1, #0 + strh r2, [r3] + adds r0, #0x40 + strb r1, [r0] + bl sub_08026848 + bl sub_08026748 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08027198: .4byte gUnknown_202294C +_0802719C: .4byte 0x000031BF +_080271A0: .4byte 0x000031CC +_080271A4: .4byte 0x000031D0 +_080271A8: .4byte 0x00003308 +_080271AC: .4byte 0x0000330C + thumb_func_end sub_080270A8 + + thumb_func_start sub_080271B0 +sub_080271B0: @ 0x080271B0 + push {r4, r5, lr} + movs r4, #0 + ldr r0, _080271C8 + ldr r0, [r0] + adds r0, #0x24 + ldrb r0, [r0] + cmp r0, #4 + beq _080271CC + cmp r0, #5 + beq _080271D0 + b _080271D2 + .align 2, 0 +_080271C8: .4byte gUnknown_202294C +_080271CC: + movs r4, #1 + b _080271D2 +_080271D0: + movs r4, #2 +_080271D2: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + lsls r1, r4, #2 + ldr r5, _08027214 + ldr r2, _08027218 + adds r1, r1, r4 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r2, [r0] +_080271F6: + ldr r1, [r5] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r1, #0x52 + adds r1, r1, r0 + strh r2, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #4 + bls _080271F6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08027214: .4byte gUnknown_202294C +_08027218: .4byte gUnknown_82CB330 + thumb_func_end sub_080271B0 + + thumb_func_start sub_0802721C +sub_0802721C: @ 0x0802721C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08027254 + ldr r2, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x4a + adds r0, r0, r1 + ldrh r3, [r0] + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r0, r1 + ldrh r0, [r0] + adds r2, #0x4e + adds r2, r2, r1 + adds r3, r3, r0 + ldrh r2, [r2] + adds r0, r3, r2 + ldr r1, _08027258 + cmp r0, r1 + bls _0802724E + adds r0, r1, #0 +_0802724E: + pop {r1} + bx r1 + .align 2, 0 +_08027254: .4byte gUnknown_202294C +_08027258: .4byte 0x0000270F + thumb_func_end sub_0802721C + + thumb_func_start sub_0802725C +sub_0802725C: @ 0x0802725C + push {r4, r5, r6, lr} + ldr r5, _080272C4 + ldr r0, [r5] + adds r0, #0x28 + ldrb r0, [r0] + bl sub_0802721C + ldr r1, _080272C8 + bl sub_080277F8 + adds r4, r0, #0 + ldr r0, [r5] + adds r0, #0x28 + ldrb r0, [r0] + bl sub_08027480 + ldr r1, _080272CC + bl sub_080277F8 + adds r2, r0, #0 + ldr r3, _080272D0 + ldr r0, [r3] + movs r6, #0x83 + lsls r6, r6, #2 + adds r1, r0, r6 + ldr r0, [r1] + cmp r0, r2 + bhs _08027296 + str r2, [r1] +_08027296: + ldr r0, [r3] + movs r2, #0x84 + lsls r2, r2, #2 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, r4 + bhs _080272A6 + strh r4, [r1] +_080272A6: + ldr r0, [r3] + ldr r6, _080272D4 + adds r2, r0, r6 + ldr r0, [r5] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r0, [r2] + cmp r0, r1 + bhs _080272BE + strh r1, [r2] +_080272BE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080272C4: .4byte gUnknown_202294C +_080272C8: .4byte 0x0000270F +_080272CC: .4byte 0x000F4236 +_080272D0: .4byte gUnknown_3005AF0 +_080272D4: .4byte 0x00000212 + thumb_func_end sub_0802725C + + thumb_func_start sub_080272D8 +sub_080272D8: @ 0x080272D8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08027310 + ldr r0, [r1] + adds r0, #0x9b + ldrb r6, [r0] + movs r3, #3 + adds r5, r1, #0 + adds r4, r5, #0 +_080272EC: + ldr r0, [r4] + adds r0, #0x98 + adds r2, r0, r3 + subs r1, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + cmp r3, #0 + bne _080272EC + ldr r0, [r5] + adds r0, #0x98 + strb r7, [r0] + adds r0, r6, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08027310: .4byte gUnknown_202294C + thumb_func_end sub_080272D8 + + thumb_func_start sub_08027314 +sub_08027314: @ 0x08027314 + push {r4, lr} + ldr r4, _08027348 + 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 _080273BC + ldr r0, _0802734C + ldrh r2, [r0, #0x2e] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _08027354 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r1, _08027350 + adds r0, r0, r1 + movs r1, #2 + b _0802738A + .align 2, 0 +_08027348: .4byte gUnknown_202294C +_0802734C: .4byte gUnknown_3002360 +_08027350: .4byte 0x000031CC +_08027354: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _08027370 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r1, _0802736C + adds r0, r0, r1 + movs r1, #3 + b _0802738A + .align 2, 0 +_0802736C: .4byte 0x000031CC +_08027370: + movs r0, #0x10 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _080273A8 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r1, _080273A4 + adds r0, r0, r1 + movs r1, #1 +_0802738A: + strb r1, [r0] + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x28 + adds r0, #0xb0 + ldrb r1, [r1] + adds r0, r0, r1 + movs r1, #6 + strb r1, [r0] + movs r0, #0xd4 + bl sub_080A306C + b _080273C0 + .align 2, 0 +_080273A4: .4byte 0x000031CC +_080273A8: + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r1, _080273B8 + adds r0, r0, r1 + strb r2, [r0] + b _080273C0 + .align 2, 0 +_080273B8: .4byte 0x000031CC +_080273BC: + subs r0, #1 + strb r0, [r2] +_080273C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08027314 + + thumb_func_start sub_080273C8 +sub_080273C8: @ 0x080273C8 + ldr r0, _080273E4 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x28 + ldrb r2, [r0] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080273E8 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080273E4: .4byte gUnknown_202294C +_080273E8: .4byte 0x000031CC + thumb_func_end sub_080273C8 + + thumb_func_start sub_080273EC +sub_080273EC: @ 0x080273EC + ldr r0, _0802740C + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x28 + ldrb r2, [r0] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, #0x52 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #0x85 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0802740C: .4byte gUnknown_202294C + thumb_func_end sub_080273EC + + thumb_func_start sub_08027410 +sub_08027410: @ 0x08027410 + ldr r0, _0802741C + ldr r0, [r0] + adds r0, #0x24 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0802741C: .4byte gUnknown_202294C + thumb_func_end sub_08027410 + + thumb_func_start sub_08027420 +sub_08027420: @ 0x08027420 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08027440 + ldrb r0, [r0] + cmp r0, #0 + bne _0802744C + ldr r0, _08027444 + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _08027448 + adds r1, r1, r2 + ldr r0, [r0] + b _08027454 + .align 2, 0 +_08027440: .4byte gUnknown_30031C4 +_08027444: .4byte gUnknown_202294C +_08027448: .4byte 0x000031A0 +_0802744C: + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _0802745C +_08027454: + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_0802745C: .4byte gUnknown_20226A8 + thumb_func_end sub_08027420 + + thumb_func_start sub_08027460 +sub_08027460: @ 0x08027460 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _0802747C + ldr r3, [r2] + lsrs r1, r1, #0x17 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r1, r1, r2 + adds r3, #0x4a + adds r3, r3, r1 + ldrh r0, [r3] + bx lr + .align 2, 0 +_0802747C: .4byte gUnknown_202294C + thumb_func_end sub_08027460 + + thumb_func_start sub_08027480 +sub_08027480: @ 0x08027480 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + movs r3, #0 + ldr r0, _080274EC + mov sb, r0 + ldr r2, _080274F0 + mov sl, r2 + ldr r2, [r0] + lsls r1, r4, #1 + adds r0, r1, r4 + lsls r0, r0, #2 + str r0, [sp] + adds r6, r2, #0 + adds r6, #0x4a + mov ip, r1 + mov r8, sl +_080274AE: + 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, r0 + adds r5, r5, r0 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _080274AE + mov r0, sb + ldr r1, [r0] + mov r2, ip + adds r0, r2, r4 + lsls r0, r0, #2 + adds r1, #0x50 + adds r1, r1, r0 + ldrh r1, [r1] + mov r3, sl + movs r7, #6 + ldrsh r0, [r3, r7] + muls r0, r1, r0 + cmp r5, r0 + bls _080274F4 + subs r0, r5, r0 + b _080274F6 + .align 2, 0 +_080274EC: .4byte gUnknown_202294C +_080274F0: .4byte gUnknown_82CB3B0 +_080274F4: + movs r0, #0 +_080274F6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08027480 + + thumb_func_start sub_08027508 +sub_08027508: @ 0x08027508 + push {r4, r5, r6, lr} + ldr r0, _08027544 + ldr r0, [r0] + adds r0, #0x24 + ldrb r6, [r0] + movs r0, #0 + bl sub_08027480 + adds r5, r0, #0 + movs r4, #1 + cmp r4, r6 + bhs _08027536 +_08027520: + adds r0, r4, #0 + bl sub_08027480 + cmp r0, r5 + bls _0802752C + adds r5, r0, #0 +_0802752C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _08027520 +_08027536: + ldr r1, _08027548 + adds r0, r5, #0 + bl sub_080277F8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08027544: .4byte gUnknown_202294C +_08027548: .4byte 0x000F4236 + thumb_func_end sub_08027508 + + thumb_func_start sub_0802754C +sub_0802754C: @ 0x0802754C + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r1, _0802758C + ldr r2, [r1] + adds r1, r2, #0 + adds r1, #0x24 + ldrb r5, [r1] + lsrs r4, r0, #0x17 + adds r2, #0x4a + adds r0, r2, r4 + ldrh r3, [r0] + movs r1, #0 + cmp r1, r5 + bhs _08027584 +_08027568: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, r3 + bls _0802757A + adds r3, r0, #0 +_0802757A: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r5 + blo _08027568 +_08027584: + adds r0, r3, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0802758C: .4byte gUnknown_202294C + thumb_func_end sub_0802754C + + thumb_func_start sub_08027590 +sub_08027590: @ 0x08027590 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #1 + ldr r0, _08027608 + ldr r0, [r0] + adds r0, #0x24 + ldrb r5, [r0] + movs r4, #0 + cmp r4, r5 + bhs _080275BE +_080275A8: + adds r0, r4, #0 + bl sub_08027480 + lsls r1, r4, #2 + add r1, sp + str r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _080275A8 +_080275BE: + lsls r7, r7, #2 + mov ip, r7 + cmp r6, #0 + beq _080275F8 + subs r7, r5, #1 +_080275C8: + movs r6, #0 + movs r4, #0 + cmp r6, r7 + bge _080275F4 + adds r5, r7, #0 +_080275D2: + lsls r0, r4, #2 + mov r2, sp + adds r1, r2, r0 + adds r4, #1 + lsls r0, r4, #2 + adds r3, r2, r0 + ldr r0, [r1] + ldr r2, [r3] + cmp r0, r2 + bhs _080275EC + str r2, [r1] + str r0, [r3] + movs r6, #1 +_080275EC: + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blt _080275D2 +_080275F4: + cmp r6, #0 + bne _080275C8 +_080275F8: + mov r0, sp + add r0, ip + ldr r0, [r0] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08027608: .4byte gUnknown_202294C + thumb_func_end sub_08027590 + + thumb_func_start sub_0802760C +sub_0802760C: @ 0x0802760C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sl, r0 + mov r8, r0 + mov sb, r0 + ldr r6, _080276EC + ldr r0, [r6] + adds r0, #0x24 + ldrb r5, [r0] + bl sub_08027508 + bl sub_08027508 + cmp r0, #0 + bne _08027660 + movs r4, #0 + cmp sb, r5 + bhs _08027660 + adds r2, r6, #0 + ldr r1, _080276F0 + mov ip, r1 + movs r7, #0 + movs r6, #4 + ldr r3, _080276F4 +_08027644: + ldr r0, [r2] + lsls r1, r4, #3 + adds r0, r0, r1 + add r0, ip + strb r6, [r0] + ldr r0, [r2] + adds r0, r0, r3 + adds r0, r0, r1 + str r7, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08027644 +_08027660: + movs r4, #0 + cmp r4, r5 + bhs _0802768A +_08027666: + adds r0, r4, #0 + bl sub_08027480 + ldr r1, _080276F8 + bl sub_080277F8 + ldr r1, _080276EC + ldr r1, [r1] + lsls r2, r4, #3 + ldr r3, _080276F4 + adds r1, r1, r3 + adds r1, r1, r2 + str r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08027666 +_0802768A: + mov r0, sl + bl sub_08027590 + adds r6, r0, #0 + mov r3, r8 + movs r4, #0 + cmp r4, r5 + bhs _080276D6 + ldr r7, _080276EC + mov sl, r7 +_0802769E: + mov r0, sl + ldr r2, [r0] + lsls r1, r4, #3 + ldr r7, _080276F4 + adds r0, r2, r7 + adds r0, r0, r1 + ldr r0, [r0] + cmp r6, r0 + bne _080276CC + adds r0, r2, r1 + ldr r1, _080276F0 + adds r0, r0, r1 + strb r3, [r0] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080276CC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0802769E +_080276D6: + mov sl, r8 + cmp sb, r5 + blo _0802768A + movs r0, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080276EC: .4byte gUnknown_202294C +_080276F0: .4byte 0x00003308 +_080276F4: .4byte 0x0000330C +_080276F8: .4byte 0x000F4236 + thumb_func_end sub_0802760C + + thumb_func_start sub_080276FC +sub_080276FC: @ 0x080276FC + lsls r1, r1, #0x18 + ldr r2, _08027714 + ldr r2, [r2] + lsrs r1, r1, #0x15 + ldr r3, _08027718 + adds r2, r2, r3 + adds r2, r2, r1 + ldr r1, [r2] + ldr r2, [r2, #4] + str r1, [r0] + str r2, [r0, #4] + bx lr + .align 2, 0 +_08027714: .4byte gUnknown_202294C +_08027718: .4byte 0x00003308 + thumb_func_end sub_080276FC + + thumb_func_start sub_0802771C +sub_0802771C: @ 0x0802771C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r7, #0 + ldr r0, _08027784 + 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 + bhs _08027754 +_0802773E: + adds r0, r4, #0 + bl sub_08027480 + lsls r1, r4, #2 + add r1, sp + str r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0802773E +_08027754: + lsls r0, r6, #2 + add r0, sp + ldr r1, [r0] + movs r4, #0 +_0802775C: + cmp r4, r6 + beq _08027770 + lsls r0, r4, #2 + add r0, sp + ldr r0, [r0] + cmp r1, r0 + bhs _08027770 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_08027770: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _0802775C + adds r0, r7, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08027784: .4byte gUnknown_202294C + thumb_func_end sub_0802771C + + thumb_func_start sub_08027788 +sub_08027788: @ 0x08027788 + push {r4, r5, r6, lr} + ldr r0, _080277B0 + ldr r0, [r0] + adds r0, #0x28 + ldrb r4, [r0] + bl sub_080273EC + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r6, r5, #0 + adds r0, r4, #0 + bl sub_08027480 + adds r4, r0, #0 + bl sub_08027508 + cmp r4, r0 + beq _080277B4 + movs r0, #3 + b _080277E2 + .align 2, 0 +_080277B0: .4byte gUnknown_202294C +_080277B4: + adds r0, r5, #0 + movs r1, #1 + bl sub_080D6018 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080277C6 + movs r0, #2 + b _080277E2 +_080277C6: + adds r0, r6, #0 + movs r1, #1 + bl sub_080D6140 + adds r0, r6, #0 + movs r1, #1 + bl sub_080D6018 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080277E0 + movs r0, #0 + b _080277E2 +_080277E0: + movs r0, #1 +_080277E2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08027788 + + thumb_func_start sub_080277E8 +sub_080277E8: @ 0x080277E8 + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + cmp r2, r0 + bhs _080277F4 + adds r0, r2, #1 +_080277F4: + pop {r1} + bx r1 + thumb_func_end sub_080277E8 + + thumb_func_start sub_080277F8 +sub_080277F8: @ 0x080277F8 + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + cmp r2, r0 + bhs _08027804 + adds r0, r2, #0 +_08027804: + pop {r1} + bx r1 + thumb_func_end sub_080277F8 + + thumb_func_start sub_08027808 +sub_08027808: @ 0x08027808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08027818 + ldr r1, [r1] + adds r1, #0x34 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_08027818: .4byte gUnknown_202294C + thumb_func_end sub_08027808 + + thumb_func_start sub_0802781C +sub_0802781C: @ 0x0802781C + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _0802784C +_08027822: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08027850 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _08027854 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0x55 + bne _08027854 + movs r0, #1 + strh r0, [r6] + b _08027860 + .align 2, 0 +_0802784C: .4byte gUnknown_2037290 +_08027850: .4byte gUnknown_2024190 +_08027854: + adds r5, #1 + cmp r5, #5 + ble _08027822 + ldr r1, _08027868 + movs r0, #0 + strh r0, [r1] +_08027860: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08027868: .4byte gUnknown_2037290 + thumb_func_end sub_0802781C + + thumb_func_start sub_0802786C +sub_0802786C: @ 0x0802786C + push {r4, lr} + ldr r4, _08027888 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08027888: .4byte sub_0802788C + thumb_func_end sub_0802786C + + thumb_func_start sub_0802788C +sub_0802788C: @ 0x0802788C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080278B0 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080278D8 + cmp r0, #1 + bgt _080278B4 + cmp r0, #0 + beq _080278BE + b _08027926 + .align 2, 0 +_080278B0: .4byte gUnknown_3005B68 +_080278B4: + cmp r0, #2 + beq _080278E4 + cmp r0, #3 + beq _0802790C + b _08027926 +_080278BE: + ldr r0, _080278D4 + bl sub_08003250 + strh r0, [r4, #2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0802792C + ldrb r0, [r4, #2] + movs r1, #3 + b _080278FA + .align 2, 0 +_080278D4: .4byte gUnknown_82CB3B8 +_080278D8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08027926 + b _080278FE +_080278E4: + ldr r0, _08027908 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08027926 + ldrb r0, [r4, #2] + bl sub_08098504 + ldrb r0, [r4, #2] + movs r1, #1 +_080278FA: + bl sub_08003528 +_080278FE: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _08027926 + .align 2, 0 +_08027908: .4byte gUnknown_3002360 +_0802790C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08027926 + ldrb r0, [r4, #2] + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_08027926: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0802788C + + thumb_func_start sub_0802792C +sub_0802792C: @ 0x0802792C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08027A28 + ldr r1, [r0] + movs r2, #0x84 + lsls r2, r2, #2 + adds r0, r1, r2 + ldrh r0, [r0] + str r0, [sp, #0xc] + subs r2, #4 + adds r0, r1, r2 + ldr r0, [r0] + str r0, [sp, #0x10] + ldr r0, _08027A2C + adds r1, r1, r0 + ldrh r0, [r1] + str r0, [sp, #0x14] + ldr r4, _08027A30 + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0xd0 + bl sub_08098144 + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0xd + bl sub_080981E0 + adds r0, r7, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _08027A34 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r6, #0 + ldr r2, _08027A38 + mov r8, r2 + movs r0, #0xff + mov sl, r0 + mov sb, r6 + mov r2, sp + adds r2, #0xc + str r2, [sp, #0x18] +_080279A2: + lsls r4, r6, #2 + ldr r0, [sp, #0x18] + ldm r0!, {r1} + str r0, [sp, #0x18] + ldr r0, _08027A3C + adds r0, r6, r0 + ldrb r3, [r0] + mov r0, r8 + movs r2, #0 + bl sub_080089D8 + movs r0, #1 + mov r1, r8 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + adds r5, r0, #0 + ldr r0, _08027A40 + adds r4, r4, r0 + ldr r2, [r4] + ldr r0, _08027A44 + lsls r4, r6, #1 + adds r0, r4, r0 + ldrb r0, [r0] + str r0, [sp] + mov r0, sl + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r3, #0xa0 + subs r3, r3, r5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _08027A48 + adds r4, r4, r0 + ldrb r0, [r4] + str r0, [sp] + mov r2, sl + str r2, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + mov r2, r8 + bl sub_0800449C + adds r6, #1 + cmp r6, #2 + ble _080279A2 + adds r0, r7, #0 + bl sub_0800365C + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08027A28: .4byte gUnknown_3005AF0 +_08027A2C: .4byte 0x00000212 +_08027A30: .4byte 0x0000021D +_08027A34: .4byte gUnknown_85CCCF5 +_08027A38: .4byte gUnknown_2021C40 +_08027A3C: .4byte gUnknown_82CB3CC +_08027A40: .4byte gUnknown_82CB3C0 +_08027A44: .4byte gUnknown_82CB3D0 +_08027A48: .4byte gUnknown_82CB3D6 + thumb_func_end sub_0802792C + + thumb_func_start sub_08027A4C +sub_08027A4C: @ 0x08027A4C + push {lr} + bl sub_08009B64 + ldr r1, _08027A60 + ldr r1, [r1] + adds r1, #0x24 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08027A60: .4byte gUnknown_202294C + thumb_func_end sub_08027A4C + + thumb_func_start sub_08027A64 +sub_08027A64: @ 0x08027A64 + push {r4, r5, r6, r7, lr} + ldr r0, _08027AEC + ldr r0, [r0] + adds r0, #0x24 + ldrb r4, [r0] + cmp r4, #4 + bhi _08027A92 + ldr r5, _08027AF0 +_08027A74: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _08027AF4 + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r5 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _08027A74 +_08027A92: + ldr r0, _08027AEC + ldr r1, [r0] + adds r1, #0x24 + movs r2, #5 + strb r2, [r1] + movs r1, #0 + mov ip, r0 +_08027AA0: + movs r4, #0 + mov r2, ip + ldr r0, [r2] + adds r0, #0x24 + adds r5, r1, #1 + ldrb r0, [r0] + cmp r4, r0 + bhs _08027ADE + ldr r7, _08027AEC + lsls r3, r1, #1 + ldr r6, _08027AF8 +_08027AB6: + ldr r2, [r7] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r3, r0 + adds r1, r2, #0 + adds r1, #0x4a + adds r1, r1, r0 + lsls r0, r4, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r2, #0x24 + ldrb r2, [r2] + cmp r4, r2 + blo _08027AB6 +_08027ADE: + lsls r0, r5, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _08027AA0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08027AEC: .4byte gUnknown_202294C +_08027AF0: .4byte gUnknown_82CB41C +_08027AF4: .4byte gUnknown_20226A8 +_08027AF8: .4byte gUnknown_82CB3DC + thumb_func_end sub_08027A64 + + thumb_func_start sub_08027AFC +sub_08027AFC: @ 0x08027AFC + push {lr} + sub sp, #8 + ldr r3, _08027B24 + ldr r1, [sp] + ands r1, r3 + movs r2, #1 + orrs r1, r2 + str r1, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [sp, #4] + ands r1, r3 + orrs r1, r0 + str r1, [sp, #4] + mov r0, sp + bl sub_0800F934 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08027B24: .4byte 0xFFFFFF00 + thumb_func_end sub_08027AFC + + thumb_func_start sub_08027B28 +sub_08027B28: @ 0x08027B28 + push {lr} + adds r2, r0, #0 + ldr r3, _08027B50 + ldrh r0, [r3] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _08027B4A + lsls r0, r2, #4 + adds r1, r3, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #1 + beq _08027B54 +_08027B4A: + movs r0, #0 + b _08027B56 + .align 2, 0 +_08027B50: .4byte gUnknown_3003130 +_08027B54: + ldrb r0, [r1, #4] +_08027B56: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08027B28 + + thumb_func_start sub_08027B5C +sub_08027B5C: @ 0x08027B5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, [sp, #0x48] + lsls r4, r4, #0x18 + str r4, [sp, #0x1c] + movs r4, #0x14 + adds r4, r4, r0 + mov sb, r4 + mov r5, sp + movs r4, #2 + strb r4, [r5] + mov sl, sp + mov r5, sb + ldrb r4, [r5, #0xb] + movs r7, #0xf + adds r5, r7, #0 + ands r5, r4 + mov r6, sl + ldrb r6, [r6, #1] + mov r8, r6 + movs r4, #0x10 + rsbs r4, r4, #0 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, sl + strb r4, [r5, #1] + mov r8, sp + mov r6, sb + ldrb r5, [r6, #0xc] + lsls r5, r5, #4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, #1] + ldrb r5, [r6, #0xd] + movs r6, #0xf + ands r5, r6 + mov r4, sl + ldrb r4, [r4, #2] + mov r8, r4 + movs r4, #0x10 + rsbs r4, r4, #0 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, sl + strb r4, [r5, #2] + mov r8, sp + mov r6, sb + ldrb r5, [r6, #0xe] + lsls r5, r5, #4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, #2] + ldrb r5, [r6, #0xf] + movs r6, #0xf + ands r5, r6 + mov r4, sl + ldrb r4, [r4, #3] + mov r8, r4 + movs r4, #0x10 + rsbs r4, r4, #0 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, sl + strb r4, [r5, #3] + mov r8, sp + mov r6, sb + ldrb r5, [r6, #0x10] + lsls r5, r5, #4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, #3] + ldrb r5, [r6, #0x11] + movs r6, #0xf + ands r5, r6 + mov r4, sl + ldrb r4, [r4, #4] + mov r8, r4 + movs r4, #0x10 + rsbs r4, r4, #0 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, sl + strb r4, [r5, #4] + mov r8, sp + mov r6, sb + ldrb r5, [r6, #0x12] + lsls r5, r5, #4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, #4] + ldrb r4, [r6, #0x13] + movs r6, #0xf + ands r4, r6 + mov r6, r8 + ldrb r5, [r6, #5] + movs r6, #0x10 + rsbs r6, r6, #0 + ands r6, r5 + orrs r6, r4 + str r6, [sp, #0xc] + mov r4, r8 + strb r6, [r4, #5] + mov r5, sp + mov r6, sb + ldrb r4, [r6, #0x14] + lsls r4, r4, #4 + ldr r6, [sp, #0xc] + ands r6, r7 + orrs r6, r4 + strb r6, [r5, #5] + mov r7, sp + movs r4, #3 + mov r8, r4 + ldrb r0, [r0, #0x14] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, #6] + movs r6, #4 + rsbs r6, r6, #0 + mov sl, r6 + mov r4, sl + ands r4, r5 + orrs r4, r0 + strb r4, [r7, #6] + mov r5, sb + ldrb r0, [r5, #1] + mov r6, r8 + ands r0, r6 + lsls r0, r0, #2 + movs r5, #0xd + rsbs r5, r5, #0 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, #6] + mov r0, sb + ldrb r4, [r0, #2] + ands r4, r6 + lsls r4, r4, #4 + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, #6] + mov r5, sp + mov r6, sb + ldrb r4, [r6, #3] + lsls r4, r4, #6 + movs r6, #0x3f + ands r0, r6 + orrs r0, r4 + strb r0, [r5, #6] + mov r4, sb + ldrb r0, [r4, #4] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, #7] + mov r4, sl + ands r4, r5 + orrs r4, r0 + strb r4, [r7, #7] + mov r6, sb + ldrb r0, [r6, #5] + mov r5, r8 + ands r0, r5 + lsls r0, r0, #2 + movs r5, #0xd + rsbs r5, r5, #0 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, #7] + ldrb r4, [r6, #6] + mov r6, r8 + ands r4, r6 + lsls r4, r4, #4 + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, #7] + mov r5, sp + mov r6, sb + ldrb r4, [r6, #7] + lsls r4, r4, #6 + movs r6, #0x3f + ands r0, r6 + orrs r0, r4 + strb r0, [r5, #7] + mov r8, sp + mov r0, sb + ldrb r4, [r0, #8] + movs r7, #3 + adds r0, r7, #0 + ands r0, r4 + mov r4, r8 + ldrb r5, [r4, #8] + mov r4, sl + ands r4, r5 + orrs r4, r0 + mov r5, r8 + strb r4, [r5, #8] + mov r6, sb + ldrb r5, [r6, #9] + adds r0, r7, #0 + ands r0, r5 + lsls r0, r0, #2 + movs r5, #0xd + rsbs r5, r5, #0 + ands r5, r4 + orrs r5, r0 + mov r0, r8 + strb r5, [r0, #8] + ldrb r0, [r1] + adds r4, r7, #0 + ands r4, r0 + lsls r4, r4, #4 + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, #8] + mov r5, sp + ldrb r4, [r2] + lsls r4, r4, #6 + movs r6, #0x3f + ands r0, r6 + orrs r0, r4 + strb r0, [r5, #8] + ldrb r4, [r3] + adds r0, r7, #0 + ands r0, r4 + ldrb r4, [r5, #9] + mov r6, sl + ands r6, r4 + orrs r6, r0 + mov sl, r6 + strb r6, [r5, #9] + ldr r0, [sp, #0x40] + ldrb r4, [r0] + adds r0, r7, #0 + ands r0, r4 + lsls r0, r0, #2 + movs r4, #0xd + rsbs r4, r4, #0 + ands r6, r4 + orrs r6, r0 + str r6, [sp, #0x10] + strb r6, [r5, #9] + 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, #9] + mov r5, sp + ldrb r0, [r1, #4] + movs r6, #1 + mov ip, r6 + mov r4, ip + ands r4, r0 + lsls r4, r4, #6 + movs r0, #0x41 + rsbs r0, r0, #0 + mov sl, r0 + ands r0, r7 + orrs r0, r4 + strb r0, [r5, #9] + ldrb r4, [r2, #4] + lsls r4, r4, #7 + movs r5, #0x7f + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, #9] + ldrb r4, [r3, #4] + mov r0, ip + ands r0, r4 + mov r5, r8 + ldrb r4, [r5, #0xa] + movs r7, #2 + rsbs r7, r7, #0 + adds r5, r7, #0 + ands r5, r4 + orrs r5, r0 + mov r6, r8 + strb r5, [r6, #0xa] + mov sb, sp + ldr r4, [sp, #0x40] + ldrb r0, [r4, #4] + mov r4, ip + ands r4, r0 + lsls r4, r4, #1 + movs r6, #3 + rsbs r6, r6, #0 + mov r8, r6 + mov r0, r8 + ands r0, r5 + orrs r0, r4 + mov r4, sb + strb r0, [r4, #0xa] + ldr r6, [sp, #0x44] + ldrb r5, [r6, #4] + mov r4, ip + ands r4, r5 + lsls r4, r4, #2 + movs r5, #5 + rsbs r5, r5, #0 + ands r0, r5 + orrs r0, r4 + mov r4, sb + strb r0, [r4, #0xa] + mov r4, sp + ldrb r1, [r1, #8] + mov r0, ip + ands r0, r1 + lsls r0, r0, #2 + ldrb r1, [r4, #0xb] + ands r5, r1 + orrs r5, r0 + strb r5, [r4, #0xb] + ldrb r1, [r2, #8] + mov r0, ip + ands r0, r1 + lsls r0, r0, #3 + movs r1, #9 + rsbs r1, r1, #0 + ands r1, r5 + orrs r1, r0 + strb r1, [r4, #0xb] + ldrb r2, [r3, #8] + mov r0, ip + ands r0, r2 + lsls r0, r0, #4 + movs r2, #0x11 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0xb] + mov r3, sp + ldr r5, [sp, #0x40] + ldrb r0, [r5, #8] + mov r1, ip + ands r1, r0 + lsls r1, r1, #5 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0xb] + mov r2, sp + ldrb r1, [r6, #8] + mov r6, ip + ands r6, r1 + lsls r1, r6, #6 + mov r3, sl + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0xb] + ldr r4, [sp, #0x1c] + lsrs r3, r4, #0x15 + ldrb r1, [r2, #0xa] + movs r0, #7 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #0xa] + mov r1, sp + ldr r5, [sp, #0x4c] + movs r6, #1 + 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_0800F934 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08027B5C + + thumb_func_start sub_08027E90 +sub_08027E90: @ 0x08027E90 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r0, [sp, #0x1c] + mov ip, r0 + ldr r1, [sp, #0x20] + mov r8, r1 + ldr r0, [sp, #0x24] + mov sb, r0 + adds r2, r7, #0 + adds r2, #0x14 + ldr r4, _08027ECC + ldrh r0, [r4] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _08027EC8 + adds r3, r4, #2 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _08027ED0 +_08027EC8: + movs r0, #0 + b _0802800A + .align 2, 0 +_08027ECC: .4byte gUnknown_3003130 +_08027ED0: + ldrb r0, [r3, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0xb] + ldrb r0, [r3, #1] + lsrs r0, r0, #4 + strb r0, [r2, #0xc] + ldrb r0, [r3, #2] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0xd] + ldrb r0, [r3, #2] + lsrs r0, r0, #4 + strb r0, [r2, #0xe] + ldrb r0, [r3, #3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0xf] + ldrb r0, [r3, #3] + lsrs r0, r0, #4 + strb r0, [r2, #0x10] + ldrb r0, [r3, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0x11] + ldrb r0, [r3, #4] + lsrs r0, r0, #4 + strb r0, [r2, #0x12] + ldrb r0, [r3, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0x13] + ldrb r0, [r3, #5] + lsrs r0, r0, #4 + strb r0, [r2, #0x14] + ldrb r0, [r3, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2, #0x15] + ldrb r0, [r3, #6] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r7, #0x14] + ldrb r0, [r3, #6] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strb r0, [r2, #1] + ldrb r0, [r3, #6] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r2, #2] + ldrb r0, [r3, #6] + lsrs r0, r0, #6 + strb r0, [r2, #3] + ldrb r0, [r3, #7] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r2, #4] + ldrb r0, [r3, #7] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strb r0, [r2, #5] + ldrb r0, [r3, #7] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r2, #6] + ldrb r0, [r3, #7] + lsrs r0, r0, #6 + strb r0, [r2, #7] + ldrb r0, [r3, #8] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r2, #8] + ldrb r0, [r3, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strb r0, [r2, #9] + ldrb r0, [r3, #6] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r2, #0xa] + ldrb r0, [r3, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r5] + ldrb r0, [r3, #9] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + strb r0, [r5, #4] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1f + strb r0, [r5, #8] + ldrb r0, [r3, #8] + lsrs r0, r0, #6 + strb r0, [r6] + ldrb r0, [r3, #9] + lsrs r0, r0, #7 + strb r0, [r6, #4] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1f + strb r0, [r6, #8] + ldrb r0, [r3, #9] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + mov r1, ip + strb r0, [r1] + ldrb r0, [r3, #0xa] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + strb r0, [r1, #4] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1f + strb r0, [r1, #8] + ldrb r0, [r3, #9] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + mov r1, r8 + strb r0, [r1] + ldrb r0, [r3, #0xa] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + strb r0, [r1, #4] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1f + strb r0, [r1, #8] + ldrb r0, [r3, #9] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + mov r1, sb + strb r0, [r1] + ldrb r0, [r3, #0xa] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1f + strb r0, [r1, #4] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + strb r0, [r1, #8] + ldrb r0, [r3, #0xa] + lsrs r0, r0, #3 + ldr r1, [sp, #0x28] + strb r0, [r1] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + ldr r1, [sp, #0x2c] + str r0, [r1] + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + ldr r1, [sp, #0x30] + str r0, [r1] + movs r0, #1 +_0802800A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08027E90 + + thumb_func_start sub_08028018 +sub_08028018: @ 0x08028018 + push {lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08028040 + ldr r1, [sp] + ands r1, r3 + movs r2, #3 + orrs r1, r2 + str r1, [sp] + ldr r1, [sp, #4] + ands r1, r3 + orrs r1, r0 + str r1, [sp, #4] + mov r0, sp + bl sub_0800F934 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08028040: .4byte 0xFFFFFF00 + thumb_func_end sub_08028018 + + thumb_func_start sub_08028044 +sub_08028044: @ 0x08028044 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldr r3, _0802806C + ldrh r0, [r3] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _08028068 + lsls r0, r2, #4 + adds r1, r3, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #3 + beq _08028070 +_08028068: + movs r0, #0 + b _08028076 + .align 2, 0 +_0802806C: .4byte gUnknown_3003130 +_08028070: + ldrb r0, [r1, #4] + strb r0, [r4] + movs r0, #1 +_08028076: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08028044 + + thumb_func_start sub_0802807C +sub_0802807C: @ 0x0802807C + push {lr} + sub sp, #8 + ldr r2, _0802809C + ldr r1, [sp] + ands r1, r2 + movs r2, #4 + orrs r1, r2 + str r1, [sp] + str r0, [sp, #4] + mov r0, sp + bl sub_0800F934 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_0802809C: .4byte 0xFFFFFF00 + thumb_func_end sub_0802807C + + thumb_func_start sub_080280A0 +sub_080280A0: @ 0x080280A0 + push {lr} + adds r2, r0, #0 + ldr r3, _080280C8 + ldrh r0, [r3] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _080280C2 + lsls r0, r2, #4 + adds r1, r3, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #4 + beq _080280CC +_080280C2: + movs r0, #0 + b _080280CE + .align 2, 0 +_080280C8: .4byte gUnknown_3003130 +_080280CC: + ldr r0, [r1, #4] +_080280CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080280A0 + + thumb_func_start sub_080280D4 +sub_080280D4: @ 0x080280D4 + push {r4, r5, lr} + sub sp, #0x18 + movs r5, #0xc0 + lsls r5, r5, #6 + adds r0, r5, #0 + bl sub_08000BDC + adds r4, r0, #0 + ldr r0, _08028128 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _0802812C + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, _08028130 + adds r1, r4, #0 + bl LZ77UnCompWram + cmp r4, #0 + beq _08028114 + str r4, [sp] + str r5, [sp, #4] + mov r0, sp + bl sub_08008210 + adds r0, r4, #0 + bl sub_08000BF0 +_08028114: + add r0, sp, #8 + bl sub_0800845C + add r0, sp, #0x10 + bl sub_0800845C + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08028128: .4byte gUnknown_82CEB64 +_0802812C: .4byte gUnknown_82CEB6C +_08028130: .4byte gUnknown_82CD148 + thumb_func_end sub_080280D4 + + thumb_func_start sub_08028134 +sub_08028134: @ 0x08028134 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x30 + adds r6, r1, #0 + mov r8, r2 + adds r5, r3, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + add r1, sp, #0x18 + movs r3, #0 + strh r3, [r1] + ldrb r2, [r0] + mov r0, sp + adds r0, #0x1a + strh r2, [r0] + ldr r0, _080281C0 + str r0, [sp, #0x1c] + ldr r0, _080281C4 + str r0, [sp, #0x20] + str r3, [sp, #0x24] + ldr r0, _080281C8 + str r0, [sp, #0x28] + ldr r0, _080281CC + str r0, [sp, #0x2c] + mov r0, sp + movs r2, #0x18 + bl memcpy + movs r0, #4 + bl sub_08000BDC + ldr r1, _080281D0 + mov r2, r8 + lsls r4, r2, #2 + adds r4, r4, r1 + str r0, [r4] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08028C40 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r0, sp + movs r2, #0x88 + movs r3, #3 + bl sub_08006B0C + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + movs r0, #1 + mov r1, r8 + bl sub_08028380 + add sp, #0x30 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080281C0: .4byte gUnknown_82CEA6C +_080281C4: .4byte gUnknown_82CEAB4 +_080281C8: .4byte gUnknown_82BF310 +_080281CC: .4byte sub_080281D4 +_080281D0: .4byte gUnknown_2022950 + thumb_func_end sub_08028134 + + thumb_func_start sub_080281D4 +sub_080281D4: @ 0x080281D4 + push {lr} + movs r2, #0x2e + ldrsh r1, [r0, r2] + cmp r1, #1 + beq _080281E8 + cmp r1, #1 + ble _080281F2 + cmp r1, #2 + beq _080281EE + b _080281F2 +_080281E8: + bl sub_08028268 + b _080281F2 +_080281EE: + bl sub_080282D8 +_080281F2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080281D4 + + thumb_func_start sub_080281F8 +sub_080281F8: @ 0x080281F8 + push {lr} + bl sub_0800A02C + ldr r1, _08028228 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802822C + adds r0, r0, r1 + movs r2, #0 + movs r1, #1 + 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 +_08028228: .4byte gUnknown_2022950 +_0802822C: .4byte gUnknown_20205AC + thumb_func_end sub_080281F8 + + thumb_func_start sub_08028230 +sub_08028230: @ 0x08028230 + push {lr} + bl sub_0800A02C + ldr r1, _08028260 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08028264 + adds r0, r0, r1 + movs r2, #0 + movs r1, #2 + 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 +_08028260: .4byte gUnknown_2022950 +_08028264: .4byte gUnknown_20205AC + thumb_func_end sub_08028230 + + thumb_func_start sub_08028268 +sub_08028268: @ 0x08028268 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + lsrs r0, r0, #0x1f + adds r0, r2, r0 + asrs r1, r0, #1 + adds r0, r1, #0 + cmp r1, #0 + bge _08028284 + adds r0, r1, #3 +_08028284: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r2, #2 + ble _080282CE + cmp r0, #2 + bgt _0802829A + cmp r0, #1 + bge _0802829E +_0802829A: + movs r0, #1 + b _080282A0 +_0802829E: + movs r0, #0xff +_080282A0: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + ble _080282CE + movs r0, #0 + strh r0, [r4, #0x2e] + bl sub_08027410 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08028C40 + strh r0, [r4, #0x20] +_080282CE: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08028268 + + thumb_func_start sub_080282D8 +sub_080282D8: @ 0x080282D8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xd + bl __divsi3 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + adds r0, r1, #0 + cmp r1, #0 + bge _080282F8 + adds r0, r1, #3 +_080282F8: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0x30 + ldrsh r0, [r5, r1] + movs r1, #0xd + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802831C + cmp r4, #0 + beq _0802831C + movs r0, #0xd4 + bl sub_080A306C +_0802831C: + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0x67 + ble _0802832A + movs r0, #0 + strh r0, [r5, #0x2e] + movs r4, #0 +_0802832A: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_080283E0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080282D8 + + thumb_func_start sub_08028340 +sub_08028340: @ 0x08028340 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _08028372 + ldr r6, _08028378 +_0802834E: + lsls r0, r4, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802837C + adds r0, r0, r1 + cmp r0, #0 + beq _08028368 + bl sub_08007338 +_08028368: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0802834E +_08028372: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08028378: .4byte gUnknown_2022950 +_0802837C: .4byte gUnknown_20205AC + thumb_func_end sub_08028340 + + thumb_func_start sub_08028380 +sub_08028380: @ 0x08028380 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _080283B0 + ldr r2, _080283B4 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldr r1, [r1] + ldrh r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + adds r2, #0x3e + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + ldrb r3, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_080283B0: .4byte gUnknown_20205AC +_080283B4: .4byte gUnknown_2022950 + thumb_func_end sub_08028380 + + thumb_func_start sub_080283B8 +sub_080283B8: @ 0x080283B8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _080283DA +_080283C8: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08028380 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _080283C8 +_080283DA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080283B8 + + thumb_func_start sub_080283E0 +sub_080283E0: @ 0x080283E0 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08028404 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08028408 + adds r0, r0, r2 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_08028404: .4byte gUnknown_2022950 +_08028408: .4byte gUnknown_20205AC + thumb_func_end sub_080283E0 + + thumb_func_start sub_0802840C +sub_0802840C: @ 0x0802840C + bx lr + .align 2, 0 + thumb_func_end sub_0802840C + + thumb_func_start sub_08028410 +sub_08028410: @ 0x08028410 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r0, _08028458 + mov ip, r0 + movs r6, #0 + ldr r5, _0802845C +_0802841C: + ldr r3, [r5] + lsls r1, r4, #1 + adds r0, r3, #0 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + lsls r0, r4, #4 + adds r0, #0x30 + strh r0, [r1, #0x20] + lsls r2, r4, #3 + movs r7, #8 + rsbs r7, r7, #0 + adds r0, r7, #0 + subs r0, r0, r2 + strh r0, [r1, #0x22] + adds r3, #0xc + adds r3, r3, r4 + strb r6, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _0802841C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028458: .4byte gUnknown_20205AC +_0802845C: .4byte gUnknown_20229A8 + thumb_func_end sub_08028410 + + thumb_func_start sub_08028460 +sub_08028460: @ 0x08028460 + push {r4, r5, r6, lr} + sub sp, #0x28 + movs r4, #0xc0 + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_08000BDC + adds r6, r0, #0 + ldr r0, _08028500 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + ldr r0, _08028504 + adds r1, r6, #0 + bl LZ77UnCompWram + cmp r6, #0 + beq _080284F0 + str r6, [sp, #0x18] + add r5, sp, #0x18 + movs r0, #0x80 + lsls r0, r0, #9 + orrs r0, r4 + str r0, [r5, #4] + mov r1, sp + ldr r0, _08028508 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r4, _0802850C + movs r0, #0x40 + bl sub_08000BDC + str r0, [r4] + adds r0, r5, #0 + bl sub_08008210 + add r0, sp, #0x20 + bl sub_0800845C + movs r4, #0 +_080284B6: + lsls r1, r4, #0x14 + movs r0, #0xc0 + lsls r0, r0, #0xe + adds r1, r1, r0 + asrs r1, r1, #0x10 + lsls r0, r4, #3 + movs r3, #8 + rsbs r3, r3, #0 + adds r2, r3, #0 + subs r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, sp + movs r3, #0 + bl sub_08006B0C + ldr r1, _0802850C + ldr r1, [r1] + lsls r2, r4, #1 + adds r1, #0x2a + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _080284B6 +_080284F0: + adds r0, r6, #0 + bl sub_08000BF0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08028500: .4byte gUnknown_82CEB74 +_08028504: .4byte gUnknown_82CCF6C +_08028508: .4byte gUnknown_82CEB7C +_0802850C: .4byte gUnknown_20229A8 + thumb_func_end sub_08028460 + + thumb_func_start sub_08028510 +sub_08028510: @ 0x08028510 + push {r4, r5, lr} + movs r4, #0 +_08028514: + ldr r5, _0802854C + ldr r0, [r5] + lsls r1, r4, #1 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08028550 + adds r0, r0, r1 + cmp r0, #0 + beq _08028532 + bl sub_08007338 +_08028532: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _08028514 + ldr r0, [r5] + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802854C: .4byte gUnknown_20229A8 +_08028550: .4byte gUnknown_20205AC + thumb_func_end sub_08028510 + + thumb_func_start sub_08028554 +sub_08028554: @ 0x08028554 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r3, #0 + movs r6, #0 + ldr r0, _080285E4 + mov sb, r0 +_08028566: + mov r7, sb + ldr r2, [r7] + lsls r5, r6, #1 + adds r0, r2, #0 + adds r0, #0x2a + adds r0, r0, r5 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080285E8 + adds r4, r0, r1 + adds r0, r2, #0 + adds r0, #0x16 + adds r0, r0, r5 + movs r1, #2 + strh r1, [r0] + adds r0, r2, #0 + adds r0, #0xc + adds r2, r0, r6 + ldrb r1, [r2] + cmp r1, #0 + beq _0802859C + movs r7, #0x22 + ldrsh r0, [r4, r7] + cmp r0, #8 + beq _080285D2 +_0802859C: + movs r3, #1 + movs r7, #0x22 + ldrsh r0, [r4, r7] + cmp r0, #8 + bne _080285C2 + cmp r1, #0 + bne _080285D2 + strb r3, [r2] + mov r1, sb + ldr r0, [r1] + adds r0, #0x16 + adds r0, r0, r5 + ldr r1, _080285EC + strh r1, [r0] + movs r0, #0x24 + str r3, [sp] + bl sub_080A306C + ldr r3, [sp] +_080285C2: + mov r7, sb + ldr r0, [r7] + adds r0, #0x16 + adds r0, r0, r5 + ldrh r0, [r0] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_080285D2: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #9 + bls _08028566 + cmp r3, #0 + bne _080285F0 + movs r0, #1 + b _080285F2 + .align 2, 0 +_080285E4: .4byte gUnknown_20229A8 +_080285E8: .4byte gUnknown_20205AC +_080285EC: .4byte 0x0000FFF0 +_080285F0: + movs r0, #0 +_080285F2: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08028554 + + thumb_func_start sub_08028600 +sub_08028600: @ 0x08028600 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xa + bls _0802863C + movs r4, #0 +_0802860C: + ldr r0, _08028634 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08028638 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _0802860C + b _08028706 + .align 2, 0 +_08028634: .4byte gUnknown_20229A8 +_08028638: .4byte gUnknown_20205AC +_0802863C: + movs r4, #0 + movs r0, #0xa + subs r0, r0, r5 + cmp r4, r0 + bge _08028702 + ldr r6, _0802866C +_08028648: + cmp r5, #6 + bls _080286B0 + ldr r0, _08028670 + ldr r2, [r0] + ldr r1, _08028674 + adds r0, r1, #0 + ldrh r1, [r2, #0x3e] + adds r0, r0, r1 + adds r0, r0, r5 + movs r1, #0 + strh r0, [r2, #0x3e] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bls _08028678 + strh r1, [r2, #0x3e] + b _080286CA + .align 2, 0 +_0802866C: .4byte gUnknown_20205AC +_08028670: .4byte gUnknown_20229A8 +_08028674: .4byte 0x0000FFFA +_08028678: + cmp r0, #0xa + bls _08028696 + lsls r1, r4, #1 + adds r0, r2, #0 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #2 + bl sub_08007EC0 + b _080286CA +_08028696: + lsls r1, r4, #1 + adds r0, r2, #0 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #0 + bl sub_08007EC0 + b _080286CA +_080286B0: + ldr r0, _080286DC + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #0 + bl sub_08007EC0 +_080286CA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0xa + subs r0, r0, r5 + cmp r4, r0 + blt _08028648 + b _08028702 + .align 2, 0 +_080286DC: .4byte gUnknown_20229A8 +_080286E0: + ldr r0, _0802870C + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08028710 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08028702: + cmp r4, #9 + bls _080286E0 +_08028706: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802870C: .4byte gUnknown_20229A8 +_08028710: .4byte gUnknown_20205AC + thumb_func_end sub_08028600 + + thumb_func_start sub_08028714 +sub_08028714: @ 0x08028714 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r7, _08028758 + movs r1, #1 + ands r0, r1 + lsls r4, r0, #2 + movs r6, #5 + rsbs r6, r6, #0 + ldr r5, _0802875C +_0802872A: + ldr r0, [r5] + lsls r1, r3, #1 + adds r0, #0x2a + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #9 + bls _0802872A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028758: .4byte gUnknown_20205AC +_0802875C: .4byte gUnknown_20229A8 + thumb_func_end sub_08028714 + + thumb_func_start sub_08028760 +sub_08028760: @ 0x08028760 + push {r4, r5, lr} + sub sp, #0x10 + movs r5, #0x90 + lsls r5, r5, #3 + adds r0, r5, #0 + bl sub_08000BDC + adds r4, r0, #0 + ldr r0, _080287AC + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _080287B0 + adds r1, r4, #0 + bl LZ77UnCompWram + cmp r4, #0 + beq _08028796 + str r4, [sp] + movs r0, #0x80 + lsls r0, r0, #0xa + orrs r0, r5 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 +_08028796: + add r0, sp, #8 + bl sub_0800845C + adds r0, r4, #0 + bl sub_08000BF0 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080287AC: .4byte gUnknown_82CEBA0 +_080287B0: .4byte gUnknown_82CB73C + thumb_func_end sub_08028760 + + thumb_func_start sub_080287B4 +sub_080287B4: @ 0x080287B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x30 + mov r1, sp + ldr r0, _08028844 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + add r2, sp, #0x18 + adds r1, r2, #0 + ldr r0, _08028848 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + movs r5, #0 + mov sb, r2 +_080287DC: + movs r0, #4 + bl sub_08000BDC + ldr r1, _0802884C + lsls r4, r5, #2 + adds r4, r4, r1 + str r0, [r4] + lsls r0, r5, #3 + lsls r1, r5, #4 + adds r1, r1, r0 + mov r0, sp + movs r2, #8 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + adds r0, r5, #0 + movs r1, #1 + bl sub_08028924 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xa + bls _080287DC + movs r5, #0 + ldr r7, _08028850 + ldr r4, _08028854 + mov r8, r4 +_0802881C: + movs r0, #4 + bl sub_08000BDC + lsls r1, r5, #2 + adds r4, r1, r7 + str r0, [r4] + adds r6, r1, #0 + cmp r5, #3 + bne _08028858 + mov r0, r8 + movs r2, #6 + ldrsh r1, [r0, r2] + mov r0, sb + movs r2, #0x39 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7, #0xc] + b _0802886C + .align 2, 0 +_08028844: .4byte gUnknown_82CEBB0 +_08028848: .4byte gUnknown_82CEBC8 +_0802884C: .4byte gUnknown_202296C +_08028850: .4byte gUnknown_2022998 +_08028854: .4byte gUnknown_82CEBA8 +_08028858: + lsls r0, r5, #1 + add r0, r8 + movs r3, #0 + ldrsh r1, [r0, r3] + mov r0, sb + movs r2, #0x3c + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] +_0802886C: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + adds r0, r6, r7 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080288A8 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_08007EC0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _0802881C + movs r0, #1 + bl sub_0802895C + add sp, #0x30 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080288A8: .4byte gUnknown_20205AC + thumb_func_end sub_080287B4 + + thumb_func_start sub_080288AC +sub_080288AC: @ 0x080288AC + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _08028918 +_080288B2: + lsls r0, r5, #2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802891C + adds r0, r0, r1 + cmp r0, #0 + beq _080288CC + bl sub_08006E00 +_080288CC: + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xa + bls _080288B2 + movs r5, #0 + ldr r6, _08028920 +_080288E4: + lsls r0, r5, #2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802891C + adds r0, r0, r1 + cmp r0, #0 + beq _080288FE + bl sub_08006E00 +_080288FE: + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080288E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08028918: .4byte gUnknown_202296C +_0802891C: .4byte gUnknown_20205AC +_08028920: .4byte gUnknown_2022998 + thumb_func_end sub_080288AC + + thumb_func_start sub_08028924 +sub_08028924: @ 0x08028924 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _08028954 + ldr r2, _08028958 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + adds r2, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_08028954: .4byte gUnknown_20205AC +_08028958: .4byte gUnknown_202296C + thumb_func_end sub_08028924 + + thumb_func_start sub_0802895C +sub_0802895C: @ 0x0802895C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r7, _080289A0 + ldr r6, _080289A4 + movs r1, #1 + ands r0, r1 + lsls r4, r0, #2 + movs r5, #5 + rsbs r5, r5, #0 +_08028972: + lsls r0, r3, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r5, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _08028972 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080289A0: .4byte gUnknown_20205AC +_080289A4: .4byte gUnknown_2022998 + thumb_func_end sub_0802895C + + thumb_func_start sub_080289A8 +sub_080289A8: @ 0x080289A8 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _080289C8 + ldr r2, _080289CC + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + lsrs r1, r1, #0x15 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_080289C8: .4byte gUnknown_20205AC +_080289CC: .4byte gUnknown_202296C + thumb_func_end sub_080289A8 + + thumb_func_start sub_080289D0 +sub_080289D0: @ 0x080289D0 + push {lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080289F4 + lsrs r0, r0, #0xe + adds r0, r0, r2 + ldr r0, [r0] + ldrh r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080289F8 + adds r0, r0, r2 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_080289F4: .4byte gUnknown_202296C +_080289F8: .4byte gUnknown_20205AC + thumb_func_end sub_080289D0 + + thumb_func_start sub_080289FC +sub_080289FC: @ 0x080289FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08028A1C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, #0x32 + strh r1, [r2, #0x20] + movs r0, #0x32 + strh r0, [r2, #0x22] + bx lr + .align 2, 0 +_08028A1C: .4byte gUnknown_20205AC + thumb_func_end sub_080289FC + + thumb_func_start sub_08028A20 +sub_08028A20: @ 0x08028A20 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x42 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _08028A62 + movs r3, #0 + ldr r7, _08028A68 + ldr r6, _08028A6C + movs r5, #0 +_08028A36: + lsls r0, r3, #2 + adds r2, r0, r6 + ldr r1, [r2] + ldrh r0, [r1, #2] + adds r0, #1 + strh r0, [r1, #2] + adds r1, r3, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + cmp r0, r1 + bls _08028A58 + ldrh r0, [r4, #0x20] + subs r0, #1 + strh r0, [r4, #0x20] + ldr r0, [r2] + strh r5, [r0, #2] +_08028A58: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _08028A36 +_08028A62: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028A68: .4byte gUnknown_82CEBE0 +_08028A6C: .4byte gUnknown_2022964 + thumb_func_end sub_08028A20 + + thumb_func_start sub_08028A70 +sub_08028A70: @ 0x08028A70 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x28 + movs r4, #0x80 + lsls r4, r4, #3 + adds r0, r4, #0 + bl sub_08000BDC + adds r6, r0, #0 + ldr r0, _08028B14 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + ldr r0, _08028B18 + adds r1, r6, #0 + bl LZ77UnCompWram + cmp r6, #0 + beq _08028AFE + str r6, [sp, #0x18] + add r0, sp, #0x18 + movs r1, #0xa0 + lsls r1, r1, #0xb + orrs r1, r4 + str r1, [r0, #4] + mov r2, sp + ldr r1, _08028B1C + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + bl sub_08008210 + add r0, sp, #0x20 + bl sub_0800845C + movs r5, #0 + ldr r7, _08028B20 + adds r0, r7, #2 + mov sb, r0 + ldr r1, _08028B24 + mov r8, r1 +_08028ACA: + movs r0, #4 + bl sub_08000BDC + 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, sb + movs r0, #0 + ldrsh r2, [r2, r0] + mov r0, sp + movs r3, #4 + bl sub_08006B0C + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _08028ACA +_08028AFE: + adds r0, r6, #0 + bl sub_08000BF0 + add sp, #0x28 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028B14: .4byte gUnknown_82CEBEC +_08028B18: .4byte gUnknown_82CD000 +_08028B1C: .4byte gUnknown_82CEBF4 +_08028B20: .4byte gUnknown_82CEBE2 +_08028B24: .4byte gUnknown_2022964 + thumb_func_end sub_08028A70 + + thumb_func_start sub_08028B28 +sub_08028B28: @ 0x08028B28 + push {r4, r5, r6, r7, lr} + movs r3, #0 + ldr r0, _08028B6C + mov ip, r0 + ldr r4, _08028B70 + adds r7, r4, #2 + ldr r6, _08028B74 + movs r5, #1 +_08028B38: + lsls r2, r3, #2 + mov r1, ip + adds r0, r2, r1 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, 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, r2, r7 + ldrh r0, [r2] + strh r0, [r1, #0x22] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _08028B38 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028B6C: .4byte gUnknown_2022964 +_08028B70: .4byte gUnknown_82CEBE2 +_08028B74: .4byte gUnknown_20205AC + thumb_func_end sub_08028B28 + + thumb_func_start sub_08028B78 +sub_08028B78: @ 0x08028B78 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _08028BA8 + ldr r4, _08028BAC + movs r3, #0 +_08028B82: + lsls r0, r2, #2 + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x42 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bls _08028B82 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08028BA8: .4byte gUnknown_2022964 +_08028BAC: .4byte gUnknown_20205AC + thumb_func_end sub_08028B78 + + thumb_func_start sub_08028BB0 +sub_08028BB0: @ 0x08028BB0 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _08028BEC +_08028BB6: + lsls r0, r5, #2 + adds r4, r0, r6 + ldr r0, [r4] + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08028BF0 + adds r0, r0, r1 + cmp r0, #0 + beq _08028BD0 + bl sub_08006E00 +_08028BD0: + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _08028BB6 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08028BEC: .4byte gUnknown_2022964 +_08028BF0: .4byte gUnknown_20205AC + thumb_func_end sub_08028BB0 + + thumb_func_start sub_08028BF4 +sub_08028BF4: @ 0x08028BF4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r7, _08028C38 + ldr r6, _08028C3C + movs r1, #1 + ands r0, r1 + lsls r4, r0, #2 + movs r5, #5 + rsbs r5, r5, #0 +_08028C0A: + lsls r0, r3, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r5, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _08028C0A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08028C38: .4byte gUnknown_20205AC +_08028C3C: .4byte gUnknown_2022964 + thumb_func_end sub_08028BF4 + + thumb_func_start sub_08028C40 +sub_08028C40: @ 0x08028C40 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0 + subs r0, r1, #1 + cmp r0, #4 + bhi _08028CF2 + lsls r0, r0, #2 + ldr r1, _08028C5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08028C5C: .4byte _08028C60 +_08028C60: @ jump table + .4byte _08028CE0 @ case 0 + .4byte _08028C74 @ case 1 + .4byte _08028C7E @ case 2 + .4byte _08028C92 @ case 3 + .4byte _08028CBA @ case 4 +_08028C74: + cmp r2, #0 + beq _08028CAA + cmp r2, #1 + bne _08028CF2 + b _08028CAE +_08028C7E: + cmp r2, #1 + beq _08028CE4 + cmp r2, #1 + bgt _08028C8C + cmp r2, #0 + beq _08028CE0 + b _08028CF2 +_08028C8C: + cmp r2, #2 + bne _08028CF2 + b _08028CF0 +_08028C92: + cmp r2, #1 + beq _08028CAE + cmp r2, #1 + bgt _08028CA0 + cmp r2, #0 + beq _08028CAA + b _08028CF2 +_08028CA0: + cmp r2, #2 + beq _08028CB2 + cmp r2, #3 + beq _08028CB6 + b _08028CF2 +_08028CAA: + movs r3, #0xc + b _08028CF2 +_08028CAE: + movs r3, #0x12 + b _08028CF2 +_08028CB2: + movs r3, #0x18 + b _08028CF2 +_08028CB6: + movs r3, #6 + b _08028CF2 +_08028CBA: + cmp r2, #4 + bhi _08028CF2 + lsls r0, r2, #2 + ldr r1, _08028CC8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08028CC8: .4byte _08028CCC +_08028CCC: @ jump table + .4byte _08028CE0 @ case 0 + .4byte _08028CE4 @ case 1 + .4byte _08028CE8 @ case 2 + .4byte _08028CEC @ case 3 + .4byte _08028CF0 @ case 4 +_08028CE0: + movs r3, #0xf + b _08028CF2 +_08028CE4: + movs r3, #0x15 + b _08028CF2 +_08028CE8: + movs r3, #0x1b + b _08028CF2 +_08028CEC: + movs r3, #3 + b _08028CF2 +_08028CF0: + movs r3, #9 +_08028CF2: + lsls r0, r3, #3 + pop {r1} + bx r1 + thumb_func_end sub_08028C40 + + thumb_func_start sub_08028CF8 +sub_08028CF8: @ 0x08028CF8 + push {r4, lr} + movs r4, #0 +_08028CFC: + adds r0, r4, #0 + movs r1, #1 + bl sub_08028924 + adds r0, r4, #0 + movs r1, #1 + bl sub_080289A8 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xa + bls _08028CFC + movs r0, #0 + bl sub_08028714 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08028CF8 + + thumb_func_start sub_08028D24 +sub_08028D24: @ 0x08028D24 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080980E0 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + movs r0, #0 + movs r3, #1 + bl sub_0800195C + adds r0, r4, #0 + bl sub_080980E0 + ldr r0, [r0, #4] + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08028D24 + + thumb_func_start sub_08028D58 +sub_08028D58: @ 0x08028D58 + push {lr} + movs r0, #0 + movs r1, #0xa + movs r2, #0xb0 + bl sub_08098144 + pop {r0} + bx r0 + thumb_func_end sub_08028D58 + + thumb_func_start sub_08028D68 +sub_08028D68: @ 0x08028D68 + ldr r3, _08028D98 + ldr r0, [r3] + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r0, r2 + movs r2, #0 + str r2, [r1] + ldr r1, _08028D9C + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, #4 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, #8 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r1, #4 + adds r0, r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_08028D98: .4byte gUnknown_20229AC +_08028D9C: .4byte 0x00003014 + thumb_func_end sub_08028D68 + + thumb_func_start sub_08028DA0 +sub_08028DA0: @ 0x08028DA0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r6, #0xa + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #1 + bl sub_080026E0 + ldrb r2, [r4, #1] + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4, #3] + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #2 + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #3 + bl sub_080026E0 + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r0, [r4, #4] + str r0, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #4 + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r0, [r4, #4] + str r0, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #6 + bl sub_080026E0 + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r0, [r4, #2] + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #7 + bl sub_080026E0 + ldrb r2, [r4, #1] + ldrb r3, [r4, #4] + ldrb r0, [r4, #2] + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4, #3] + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #8 + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r4, [r4, #2] + adds r3, r3, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #9 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08028DA0 + + thumb_func_start sub_08028EA0 +sub_08028EA0: @ 0x08028EA0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r6, #0xb + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0xa + bl sub_080026E0 + ldrb r2, [r4, #1] + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4, #3] + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0xb + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0xc + bl sub_080026E0 + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r0, [r4, #4] + str r0, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0xd + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r0, [r4, #4] + str r0, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0xf + bl sub_080026E0 + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r0, [r4, #2] + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0x10 + bl sub_080026E0 + ldrb r2, [r4, #1] + ldrb r3, [r4, #4] + ldrb r0, [r4, #2] + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4, #3] + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0x11 + bl sub_080026E0 + ldrb r2, [r4, #3] + ldrb r0, [r4, #1] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r4, [r4, #2] + adds r3, r3, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0x12 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08028EA0 + + thumb_func_start sub_08028FA0 +sub_08028FA0: @ 0x08028FA0 + push {r4, lr} + ldr r4, _08028FE8 + str r0, [r4] + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r0, r2 + movs r2, #0 + str r2, [r1] + ldr r3, _08028FEC + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _08028FF0 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r3, #0xc + adds r0, r0, r3 + strb r2, [r0] + ldr r0, [r4] + adds r1, #0xc + adds r0, r0, r1 + strb r2, [r0] + ldr r0, _08028FF4 + movs r1, #3 + bl sub_080A8878 + ldr r1, [r4] + ldr r2, _08028FF8 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, _08028FFC + bl sub_0802A420 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08028FE8: .4byte gUnknown_20229AC +_08028FEC: .4byte 0x00003014 +_08028FF0: .4byte 0x00003018 +_08028FF4: .4byte sub_08029040 +_08028FF8: .4byte 0x00003004 +_08028FFC: .4byte sub_08029064 + thumb_func_end sub_08028FA0 + + thumb_func_start sub_08029000 +sub_08029000: @ 0x08029000 + push {lr} + bl sub_080034D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08029000 + + thumb_func_start sub_0802900C +sub_0802900C: @ 0x0802900C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + ldr r5, _0802903C + adds r7, r5, #4 +_08029018: + lsls r1, r4, #3 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, r6 + bne _0802902A + adds r0, r1, r7 + ldr r0, [r0] + bl sub_0802A420 +_0802902A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _08029018 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802903C: .4byte gUnknown_82CEC98 + thumb_func_end sub_0802900C + + thumb_func_start sub_08029040 +sub_08029040: @ 0x08029040 + push {lr} + ldr r0, _08029060 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _0802905A + bl sub_0802A450 + bl _call_via_r0 +_0802905A: + pop {r0} + bx r0 + .align 2, 0 +_08029060: .4byte gUnknown_20229AC + thumb_func_end sub_08029040 + + thumb_func_start sub_08029064 +sub_08029064: @ 0x08029064 + push {lr} + ldr r0, _08029080 + ldr r1, [r0] + ldr r2, _08029084 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #4 + bhi _0802915C + lsls r0, r0, #2 + ldr r1, _08029088 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08029080: .4byte gUnknown_20229AC +_08029084: .4byte 0x00003014 +_08029088: .4byte _0802908C +_0802908C: @ jump table + .4byte _080290A0 @ case 0 + .4byte _080290A6 @ case 1 + .4byte _080290C0 @ case 2 + .4byte _08029104 @ case 3 + .4byte _08029130 @ case 4 +_080290A0: + bl sub_0802A49C + b _08029140 +_080290A6: + bl sub_0802A5DC + cmp r0, #1 + bne _08029166 + ldr r0, _080290B8 + ldr r1, [r0] + ldr r2, _080290BC + adds r1, r1, r2 + b _08029148 + .align 2, 0 +_080290B8: .4byte gUnknown_20229AC +_080290BC: .4byte 0x00003014 +_080290C0: + ldr r1, _080290F8 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _080290FC + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _08029100 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #3 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _08029140 + .align 2, 0 +_080290F8: .4byte gUnknown_82CE364 +_080290FC: .4byte gUnknown_82CE820 +_08029100: .4byte gUnknown_82CE5D0 +_08029104: + movs r0, #0 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r0, _08029128 + ldr r1, [r0] + ldr r2, _0802912C + adds r1, r1, r2 + b _08029148 + .align 2, 0 +_08029128: .4byte gUnknown_20229AC +_0802912C: .4byte 0x00003014 +_08029130: + ldr r0, _08029150 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_08028D24 + bl sub_08028D58 +_08029140: + ldr r0, _08029154 + ldr r1, [r0] + ldr r0, _08029158 + adds r1, r1, r0 +_08029148: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08029166 + .align 2, 0 +_08029150: .4byte gUnknown_3005AF0 +_08029154: .4byte gUnknown_20229AC +_08029158: .4byte 0x00003014 +_0802915C: + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r1, r2 + movs r0, #1 + str r0, [r1] +_08029166: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08029064 + + thumb_func_start sub_0802916C +sub_0802916C: @ 0x0802916C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r4, _080291AC + ldr r0, [r4] + ldr r2, _080291B0 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _080291B4 + cmp r0, #1 + bne _0802918C + b _08029318 +_0802918C: + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb4 + bhi _0802919A + b _080293BA +_0802919A: + bl sub_08027410 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + cmp r6, r7 + blo _080291AA + b _08029392 +_080291AA: + b _0802936C + .align 2, 0 +_080291AC: .4byte gUnknown_20229AC +_080291B0: .4byte 0x00003014 +_080291B4: + bl sub_08027410 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080292F0 + subs r0, r7, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r5, [r0] + ldr r2, _080292F4 + ldr r0, [sp, #0xc] + ands r0, r2 + ldr r1, _080292F8 + ands r0, r1 + movs r1, #0xe0 + lsls r1, r1, #0x13 + orrs r0, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ands r0, r2 + movs r1, #2 + orrs r0, r1 + ldr r1, _080292FC + ands r0, r1 + movs r1, #0xd0 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _08029300 + ands r0, r1 + movs r1, #0x98 + lsls r1, r1, #0xd + orrs r0, r1 + str r0, [sp, #0x10] + movs r6, #0 + cmp r6, r7 + bhs _080292E4 + mov r3, sp + adds r3, #0xc + str r3, [sp, #0x18] + mov sl, r4 + ldr r0, _08029304 + mov sb, r0 +_08029208: + movs r1, #0 + mov r8, r1 + adds r0, r6, #0 + bl sub_08027808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_08027420 + adds r1, r0, #0 + movs r0, #0 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + movs r1, #0x38 + subs r1, r1, r0 + lsrs r1, r1, #1 + str r1, [sp, #0x14] + ldrb r0, [r5] + lsls r0, r0, #8 + ldr r2, _080292FC + ldr r1, [sp, #0xc] + ands r1, r2 + orrs r1, r0 + str r1, [sp, #0xc] + ldrb r2, [r5, #1] + lsls r2, r2, #0x10 + ldr r0, _08029308 + ands r0, r1 + orrs r0, r2 + str r0, [sp, #0xc] + add r0, sp, #0xc + bl sub_08003250 + mov r2, sl + ldr r1, [r2] + add r1, sb + adds r1, r1, r6 + strb r0, [r1] + ldr r0, [r2] + add r0, sb + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_08003774 + mov r3, sl + ldr r0, [r3] + add r0, sb + adds r0, r0, r6 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _08029286 + movs r0, #2 + mov r8, r0 +_08029286: + adds r0, r4, #0 + bl sub_08027420 + adds r4, r0, #0 + mov r1, sl + ldr r0, [r1] + add r0, sb + adds r0, r0, r6 + ldrb r0, [r0] + ldr r3, [sp, #0x14] + lsls r2, r3, #0x18 + lsrs r2, r2, #0x18 + mov r3, r8 + lsls r1, r3, #1 + add r1, r8 + ldr r3, _0802930C + adds r1, r1, r3 + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + movs r3, #1 + bl sub_08199AFC + mov r2, sl + ldr r0, [r2] + add r0, sb + adds r0, r0, r6 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r3, [sp, #0x18] + ldrh r0, [r3, #6] + adds r0, #0xe + strh r0, [r3, #6] + add r0, sp, #0xc + bl sub_08028EA0 + adds r5, #4 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r7 + blo _08029208 +_080292E4: + ldr r0, _08029310 + ldr r1, [r0] + ldr r0, _08029314 + adds r1, r1, r0 + b _08029356 + .align 2, 0 +_080292F0: .4byte gUnknown_82CEC54 +_080292F4: .4byte 0xFFFFFF00 +_080292F8: .4byte 0x00FFFFFF +_080292FC: .4byte 0xFFFF00FF +_08029300: .4byte 0x0000FFFF +_08029304: .4byte 0x00003008 +_08029308: .4byte 0xFF00FFFF +_0802930C: .4byte gUnknown_82CEC0C +_08029310: .4byte gUnknown_20229AC +_08029314: .4byte 0x00003014 +_08029318: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080293BA + bl sub_08027410 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + cmp r6, r7 + bhs _08029348 +_08029330: + ldr r0, [r4] + ldr r1, _08029360 + adds r0, r0, r1 + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_0800365C + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r7 + blo _08029330 +_08029348: + movs r0, #0 + bl sub_08002248 + ldr r0, _08029364 + ldr r1, [r0] + ldr r2, _08029368 + adds r1, r1, r2 +_08029356: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080293BA + .align 2, 0 +_08029360: .4byte 0x00003008 +_08029364: .4byte gUnknown_20229AC +_08029368: .4byte 0x00003014 +_0802936C: + ldr r5, _080293CC + ldr r0, [r5] + ldr r4, _080293D0 + adds r0, r0, r4 + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_08003444 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r7 + blo _0802936C +_08029392: + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, _080293CC + ldr r0, [r0] + movs r3, #0xc0 + lsls r3, r3, #6 + adds r0, r0, r3 + movs r1, #1 + str r1, [r0] +_080293BA: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080293CC: .4byte gUnknown_20229AC +_080293D0: .4byte 0x00003008 + thumb_func_end sub_0802916C + + thumb_func_start sub_080293D4 +sub_080293D4: @ 0x080293D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x68 + lsls r0, r0, #0x18 + movs r1, #0 + mov r8, r1 + movs r6, #0 + lsrs r7, r0, #0x18 + add r4, sp, #0x2c + ldr r1, _08029588 + adds r0, r4, #0 + movs r2, #5 + bl memcpy + movs r5, #0 + cmp r5, r7 + bhs _08029424 + add r4, sp, #0x34 +_080293FE: + mov r0, sp + adds r0, r0, r5 + adds r0, #0x2c + strb r5, [r0] + add r0, sp, #0x5c + adds r1, r5, #0 + bl sub_080276FC + lsls r2, r5, #3 + adds r2, r4, r2 + ldr r0, [sp, #0x5c] + ldr r1, [sp, #0x60] + str r0, [r2] + str r1, [r2, #4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _080293FE +_08029424: + bl sub_08027508 + cmp r0, #0 + beq _0802945A +_0802942C: + movs r5, #0 + cmp r5, r7 + bhs _08029454 + add r2, sp, #0x34 + add r1, sp, #0x2c +_08029436: + lsls r0, r5, #3 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r8 + bne _0802944A + adds r0, r1, r6 + strb r5, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0802944A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _08029436 +_08029454: + mov r8, r6 + cmp r6, r7 + blo _0802942C +_0802945A: + movs r5, #0 + cmp r5, r7 + bhs _0802947E + add r6, sp, #0x34 + add r3, sp, #0x38 + subs r2, r7, #1 +_08029466: + lsls r1, r5, #3 + adds r0, r3, r1 + ldr r0, [r0] + cmp r0, #0 + bne _08029474 + adds r0, r6, r1 + strb r2, [r0] +_08029474: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _08029466 +_0802947E: + movs r5, #0 + cmp r5, r7 + bhs _08029576 + mov r2, sp + adds r2, #0x34 + str r2, [sp, #0x64] + ldr r3, _0802958C + mov sl, r3 +_0802948E: + movs r0, #0 + mov r8, r0 + mov r0, sp + adds r0, r0, r5 + adds r0, #0x2c + ldrb r0, [r0] + adds r4, r0, #0 + lsls r1, r4, #3 + add r0, sp, #0x38 + adds r0, r0, r1 + ldr r0, [r0] + mov sb, r0 + ldr r2, _08029590 + ldr r0, [r2] + add r0, sl + ldrb r0, [r0] + ldr r2, _08029594 + ldr r3, [sp, #0x64] + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r3, _08029598 + lsls r1, r5, #1 + adds r1, r1, r3 + ldrb r6, [r1] + str r6, [sp] + movs r1, #0xff + str r1, [sp, #4] + mov r3, r8 + str r3, [sp, #8] + movs r1, #0 + movs r3, #8 + bl sub_0800449C + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _080294E6 + movs r0, #2 + mov r8, r0 +_080294E6: + adds r0, r4, #0 + bl sub_08027420 + adds r3, r0, #0 + ldr r1, _08029590 + ldr r0, [r1] + add r0, sl + ldrb r0, [r0] + mov r2, r8 + lsls r1, r2, #1 + add r1, r8 + ldr r2, _0802959C + adds r1, r1, r2 + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + str r3, [sp, #8] + movs r1, #0 + movs r2, #0x1c + adds r3, r6, #0 + bl sub_08199AFC + add r0, sp, #0xc + mov r1, sb + movs r2, #0 + movs r3, #7 + bl sub_080089D8 + movs r0, #0 + add r1, sp, #0xc + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + ldr r2, _08029590 + ldr r1, [r2] + add r1, sl + ldrb r1, [r1] + movs r3, #0x91 + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r6, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + adds r0, r1, #0 + movs r1, #0 + add r2, sp, #0xc + bl sub_0800449C + ldr r3, _08029590 + ldr r0, [r3] + add r0, sl + ldrb r0, [r0] + str r6, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + movs r1, #0 + ldr r2, _080295A0 + movs r3, #0x9b + bl sub_0800449C + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r7 + blo _0802948E +_08029576: + add sp, #0x68 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08029588: .4byte gUnknown_82CECE8 +_0802958C: .4byte 0x00003009 +_08029590: .4byte gUnknown_20229AC +_08029594: .4byte gUnknown_82CEC68 +_08029598: .4byte gUnknown_82CEC8E +_0802959C: .4byte gUnknown_82CEC0C +_080295A0: .4byte gUnknown_85CCDE7 + thumb_func_end sub_080293D4 + + thumb_func_start sub_080295A4 +sub_080295A4: @ 0x080295A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + bl sub_08027410 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r6, _080295D4 + ldr r1, [r6] + ldr r2, _080295D8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xb + bls _080295CA + b _08029CC0 +_080295CA: + lsls r0, r0, #2 + ldr r1, _080295DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080295D4: .4byte gUnknown_20229AC +_080295D8: .4byte 0x00003014 +_080295DC: .4byte _080295E0 +_080295E0: @ jump table + .4byte _08029610 @ case 0 + .4byte _0802962C @ case 1 + .4byte _08029684 @ case 2 + .4byte _08029888 @ case 3 + .4byte _080298D4 @ case 4 + .4byte _08029918 @ case 5 + .4byte _0802997C @ case 6 + .4byte _080299B8 @ case 7 + .4byte _080299FC @ case 8 + .4byte _08029ABC @ case 9 + .4byte _08029C20 @ case 10 + .4byte _08029C74 @ case 11 +_08029610: + bl sub_0802760C + ldr r0, _08029624 + ldr r1, [r0] + ldr r0, _08029628 + adds r2, r1, r0 + movs r0, #0 + strh r0, [r2] + b _08029CA2 + .align 2, 0 +_08029624: .4byte gUnknown_20229AC +_08029628: .4byte 0x0000301C +_0802962C: + ldr r6, _08029674 + adds r0, r6, #0 + bl sub_08003250 + ldr r4, _08029678 + ldr r1, [r4] + ldr r2, _0802967C + mov r8, r2 + add r1, r8 + strb r0, [r1] + movs r0, #8 + adds r0, r0, r6 + mov sb, r0 + bl sub_08003250 + ldr r1, [r4] + ldr r5, _08029680 + adds r1, r1, r5 + strb r0, [r1] + ldr r0, [r4] + add r0, r8 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08003774 + adds r0, r6, #0 + bl sub_08028EA0 + mov r0, sb + bl sub_08028EA0 + b _08029CA0 + .align 2, 0 +_08029674: .4byte gUnknown_82CB448 +_08029678: .4byte gUnknown_20229AC +_0802967C: .4byte 0x00003008 +_08029680: .4byte 0x00003009 +_08029684: + ldr r4, _080297D0 + ldr r0, [r4] + ldr r5, _080297D4 + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r4] + ldr r1, _080297D8 + mov sb, r1 + add r0, sb + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _080297DC + mov r8, r2 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #0 + mov r1, r8 + bl sub_08005DAC + adds r1, r0, #0 + movs r0, #0xe0 + subs r0, r0, r1 + lsrs r3, r0, #1 + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #2 + str r1, [sp] + movs r6, #0xff + str r6, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r1, #0 + mov r2, r8 + bl sub_0800449C + ldr r0, [r4] + add r0, sb + ldrb r0, [r0] + ldr r2, _080297E0 + movs r1, #0x10 + str r1, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r1, #0 + movs r3, #0x44 + bl sub_0800449C + movs r0, #0 + mov sb, r0 + ldr r1, [sp, #0xc] + cmp sb, r1 + blo _080296FE + b _08029844 +_080296FE: + movs r4, #0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp sb, r0 + bne _0802970E + movs r4, #2 +_0802970E: + mov r0, sb + bl sub_08027420 + adds r6, r0, #0 + ldr r0, _080297D0 + ldr r0, [r0] + ldr r2, _080297D8 + adds r0, r0, r2 + ldrb r0, [r0] + mov r1, sb + lsls r5, r1, #1 + ldr r2, _080297E4 + adds r1, r5, r2 + ldrb r3, [r1] + lsls r1, r4, #1 + adds r1, r1, r4 + ldr r2, _080297E8 + adds r1, r1, r2 + str r1, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + str r6, [sp, #8] + movs r1, #0 + movs r2, #2 + bl sub_08199AFC + movs r7, #0 + mov r8, r5 + mov r0, sb + adds r0, #1 + str r0, [sp, #0x10] + ldr r1, _080297EC + mov sl, r1 +_08029752: + mov r0, sb + adds r1, r7, #0 + bl sub_08027460 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080297F0 + bl sub_080277F8 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + bl sub_0802754C + ldr r1, _080297F0 + bl sub_080277F8 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, sl + adds r1, r4, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + movs r0, #0 + mov r1, sl + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08005DAC + adds r5, r0, #0 + cmp r6, r4 + bne _080297FC + cmp r6, #0 + beq _080297FC + ldr r0, _080297D0 + ldr r0, [r0] + ldr r2, _080297D8 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r1, r7, #1 + ldr r2, _080297F4 + adds r1, r1, r2 + ldrb r2, [r1] + subs r2, r2, r5 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _080297E4 + add r1, r8 + ldrb r3, [r1] + ldr r1, _080297F8 + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + mov r1, sl + str r1, [sp, #8] + movs r1, #0 + bl sub_08199AFC + b _0802982A + .align 2, 0 +_080297D0: .4byte gUnknown_20229AC +_080297D4: .4byte 0x00003008 +_080297D8: .4byte 0x00003009 +_080297DC: .4byte gUnknown_85CCD34 +_080297E0: .4byte gUnknown_85CCD45 +_080297E4: .4byte gUnknown_82CEC84 +_080297E8: .4byte gUnknown_82CEC0C +_080297EC: .4byte gUnknown_2021C7C +_080297F0: .4byte 0x0000270F +_080297F4: .4byte gUnknown_82CEC7C +_080297F8: .4byte gUnknown_82CEC0F +_080297FC: + ldr r0, _0802986C + ldr r0, [r0] + ldr r2, _08029870 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r1, r7, #1 + ldr r2, _08029874 + adds r1, r1, r2 + ldrb r3, [r1] + subs r3, r3, r5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _08029878 + add r1, r8 + ldrb r1, [r1] + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + ldr r2, _0802987C + bl sub_0800449C +_0802982A: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _08029752 + ldr r1, [sp, #0x10] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r2, [sp, #0xc] + cmp sb, r2 + bhs _08029844 + b _080296FE +_08029844: + ldr r4, _0802986C + ldr r0, [r4] + ldr r1, _08029880 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + ldr r2, _08029870 + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r4] + ldr r0, _08029884 + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_0802986C: .4byte gUnknown_20229AC +_08029870: .4byte 0x00003009 +_08029874: .4byte gUnknown_82CEC7C +_08029878: .4byte gUnknown_82CEC84 +_0802987C: .4byte gUnknown_2021C7C +_08029880: .4byte 0x00003008 +_08029884: .4byte 0x00003014 +_08029888: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080298AC + ldr r4, _080298C4 + ldr r0, [r4] + ldr r1, _080298C8 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r4] + ldr r2, _080298CC + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_0800365C +_080298AC: + movs r0, #0 + bl sub_08002248 + movs r0, #0 + bl sub_0802895C + ldr r0, _080298C4 + ldr r1, [r0] + ldr r0, _080298D0 + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_080298C4: .4byte gUnknown_20229AC +_080298C8: .4byte 0x00003008 +_080298CC: .4byte 0x00003009 +_080298D0: .4byte 0x00003014 +_080298D4: + ldr r4, _0802990C + ldr r0, [r4] + ldr r1, _08029910 + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _080298EC + b _08029D10 +_080298EC: + ldr r0, _08029914 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080298FA + b _08029D10 +_080298FA: + movs r0, #0 + strh r0, [r2] + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_0802895C + b _08029CA0 + .align 2, 0 +_0802990C: .4byte gUnknown_20229AC +_08029910: .4byte 0x0000301C +_08029914: .4byte gUnknown_3002360 +_08029918: + ldr r4, _0802996C + ldr r0, [r4] + ldr r5, _08029970 + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r4] + ldr r1, _08029974 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r6, _08029978 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #0 + adds r1, r6, #0 + bl sub_08005DAC + adds r1, r0, #0 + movs r0, #0xe0 + subs r0, r0, r1 + lsrs r3, r0, #1 + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + adds r2, r6, #0 + bl sub_0800449C + b _08029CA0 + .align 2, 0 +_0802996C: .4byte gUnknown_20229AC +_08029970: .4byte 0x00003008 +_08029974: .4byte 0x00003009 +_08029978: .4byte gUnknown_85CCD5A +_0802997C: + ldr r0, [sp, #0xc] + bl sub_080293D4 + ldr r4, _080299A8 + ldr r0, [r4] + ldr r1, _080299AC + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + ldr r2, _080299B0 + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r4] + ldr r0, _080299B4 + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_080299A8: .4byte gUnknown_20229AC +_080299AC: .4byte 0x00003008 +_080299B0: .4byte 0x00003009 +_080299B4: .4byte 0x00003014 +_080299B8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080299DC + ldr r4, _080299EC + ldr r0, [r4] + ldr r1, _080299F0 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r4] + ldr r2, _080299F4 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_0800365C +_080299DC: + movs r0, #0 + bl sub_08002248 + ldr r0, _080299EC + ldr r1, [r0] + ldr r0, _080299F8 + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_080299EC: .4byte gUnknown_20229AC +_080299F0: .4byte 0x00003008 +_080299F4: .4byte 0x00003009 +_080299F8: .4byte 0x00003014 +_080299FC: + ldr r4, _08029A44 + ldr r0, [r4] + ldr r1, _08029A48 + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _08029A14 + b _08029D10 +_08029A14: + ldr r0, _08029A4C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08029A22 + b _08029D10 +_08029A22: + movs r0, #0 + strh r0, [r2] + movs r0, #5 + bl sub_080A306C + bl sub_08027508 + ldr r1, _08029A50 + cmp r0, r1 + bhi _08029A58 + ldr r0, [r4] + ldr r2, _08029A54 + adds r0, r0, r2 + movs r1, #0x7f + strb r1, [r0] + b _08029A68 + .align 2, 0 +_08029A44: .4byte gUnknown_20229AC +_08029A48: .4byte 0x0000301C +_08029A4C: .4byte gUnknown_3002360 +_08029A50: .4byte 0x00000BB7 +_08029A54: .4byte 0x00003014 +_08029A58: + bl sub_080A27F8 + ldr r1, [r4] + ldr r0, _08029AAC + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08029A68: + movs r0, #0x1e + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #5 + bl sub_080025E0 + ldr r5, _08029AB0 + ldr r0, [r5] + ldr r4, _08029AB4 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + ldr r6, _08029AB8 + adds r0, r6, #0 + bl sub_08003250 + ldr r1, [r5] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + adds r0, r6, #0 + bl sub_08028EA0 + b _08029D10 + .align 2, 0 +_08029AAC: .4byte 0x00003014 +_08029AB0: .4byte gUnknown_20229AC +_08029AB4: .4byte 0x00003009 +_08029AB8: .4byte gUnknown_82CB458 +_08029ABC: + ldr r0, _08029B94 + bl sub_080A27D8 + ldr r4, _08029B98 + ldr r0, [r4] + ldr r6, _08029B9C + adds r0, r0, r6 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r4] + ldr r1, _08029BA0 + mov sl, r1 + add r0, sl + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r5, _08029BA4 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #0 + adds r1, r5, #0 + bl sub_08005DAC + adds r1, r0, #0 + movs r0, #0xe0 + subs r0, r0, r1 + lsrs r3, r0, #1 + ldr r0, [r4] + adds r0, r0, r6 + ldrb r0, [r0] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r2, #2 + mov sb, r2 + str r2, [sp] + movs r1, #0xff + mov r8, r1 + str r1, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + movs r1, #0 + adds r2, r5, #0 + bl sub_0800449C + bl sub_081AF8C8 + bl sub_080273EC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r5, _08029BA8 + adds r1, r5, #0 + bl sub_080D5EC8 + movs r0, #0 + adds r1, r5, #0 + bl sub_081AF8E4 + ldr r7, _08029BAC + ldr r1, _08029BB0 + adds r0, r7, #0 + bl sub_081AF900 + ldr r0, [r4] + add r0, sl + ldrb r0, [r0] + mov r2, sb + str r2, [sp] + mov r1, r8 + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #0 + adds r2, r7, #0 + movs r3, #8 + bl sub_0800449C + bl sub_08027788 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + cmp r4, #0 + beq _08029BE2 + cmp r4, #3 + beq _08029BE2 + bl sub_081AF8C8 + bl sub_080273EC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_080D5EC8 + movs r0, #0 + adds r1, r5, #0 + bl sub_081AF8E4 + cmp r4, #2 + bne _08029BB8 + ldr r1, _08029BB4 + adds r0, r7, #0 + bl sub_081AF900 + b _08029BC4 + .align 2, 0 +_08029B94: .4byte 0x0000016F +_08029B98: .4byte gUnknown_20229AC +_08029B9C: .4byte 0x00003008 +_08029BA0: .4byte 0x00003009 +_08029BA4: .4byte gUnknown_85CCD68 +_08029BA8: .4byte gUnknown_2021C40 +_08029BAC: .4byte gUnknown_2021C7C +_08029BB0: .4byte gUnknown_85CCD86 +_08029BB4: .4byte gUnknown_85CCD9F +_08029BB8: + cmp r6, #1 + bne _08029BC4 + ldr r1, _08029C08 + adds r0, r7, #0 + bl sub_081AF900 +_08029BC4: + ldr r0, _08029C0C + ldr r0, [r0] + ldr r2, _08029C10 + adds r0, r0, r2 + ldrb r0, [r0] + ldr r2, _08029C14 + movs r1, #0x28 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r3, #8 + bl sub_0800449C +_08029BE2: + ldr r4, _08029C0C + ldr r0, [r4] + ldr r1, _08029C18 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + ldr r2, _08029C10 + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r4] + ldr r0, _08029C1C + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_08029C08: .4byte gUnknown_85CCDAB +_08029C0C: .4byte gUnknown_20229AC +_08029C10: .4byte 0x00003009 +_08029C14: .4byte gUnknown_2021C7C +_08029C18: .4byte 0x00003008 +_08029C1C: .4byte 0x00003014 +_08029C20: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029C44 + ldr r4, _08029C60 + ldr r0, [r4] + ldr r1, _08029C64 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r4] + ldr r2, _08029C68 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_0800365C +_08029C44: + movs r0, #0 + bl sub_08002248 + ldr r0, _08029C6C + movs r1, #0x14 + movs r2, #0xa + bl sub_080A2884 + ldr r0, _08029C60 + ldr r1, [r0] + ldr r0, _08029C70 + adds r1, r1, r0 + b _08029CA6 + .align 2, 0 +_08029C60: .4byte gUnknown_20229AC +_08029C64: .4byte 0x00003008 +_08029C68: .4byte 0x00003009 +_08029C6C: .4byte 0x0000020B +_08029C70: .4byte 0x00003014 +_08029C74: + ldr r4, _08029CB0 + ldr r0, [r4] + ldr r1, _08029CB4 + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bls _08029D10 + ldr r0, _08029CB8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08029D10 + movs r0, #0 + strh r0, [r2] + movs r0, #5 + bl sub_080A306C +_08029CA0: + ldr r1, [r4] +_08029CA2: + ldr r2, _08029CBC + adds r1, r1, r2 +_08029CA6: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08029D10 + .align 2, 0 +_08029CB0: .4byte gUnknown_20229AC +_08029CB4: .4byte 0x0000301C +_08029CB8: .4byte gUnknown_3002360 +_08029CBC: .4byte 0x00003014 +_08029CC0: + ldr r5, _08029D20 + adds r0, r1, r5 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + ldr r4, _08029D24 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08003444 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, [r6] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] +_08029D10: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08029D20: .4byte 0x00003008 +_08029D24: .4byte 0x00003009 + thumb_func_end sub_080295A4 + + thumb_func_start sub_08029D28 +sub_08029D28: @ 0x08029D28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r1, _08029D50 + ldr r2, [r1] + ldr r3, _08029D54 + adds r0, r2, r3 + ldrb r7, [r0] + adds r6, r1, #0 + cmp r7, #1 + beq _08029DDC + cmp r7, #1 + bgt _08029D58 + cmp r7, #0 + beq _08029D66 + b _08029FF4 + .align 2, 0 +_08029D50: .4byte gUnknown_20229AC +_08029D54: .4byte 0x00003014 +_08029D58: + cmp r7, #2 + bne _08029D5E + b _08029EA0 +_08029D5E: + cmp r7, #3 + bne _08029D64 + b _08029ED4 +_08029D64: + b _08029FF4 +_08029D66: + ldr r0, _08029DC4 + bl sub_08003250 + ldr r1, [r6] + ldr r5, _08029DC8 + adds r1, r1, r5 + strb r0, [r1] + ldr r0, _08029DC4 + adds r0, #8 + mov r8, r0 + bl sub_08003250 + ldr r1, [r6] + ldr r4, _08029DCC + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, _08029DC4 + bl sub_08028EA0 + mov r0, r8 + bl sub_08028DA0 + ldr r1, [r6] + ldr r2, _08029DD0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r6] + ldr r3, _08029DD4 + adds r0, r0, r3 + strb r7, [r0] + ldr r0, [r6] + ldr r1, _08029DD8 + adds r0, r0, r1 + strb r7, [r0] + b _0802A054 + .align 2, 0 +_08029DC4: .4byte gUnknown_82CB460 +_08029DC8: .4byte 0x00003008 +_08029DCC: .4byte 0x00003009 +_08029DD0: .4byte 0x00003014 +_08029DD4: .4byte 0x00003020 +_08029DD8: .4byte 0x00003024 +_08029DDC: + ldr r3, _08029E84 + mov r8, r3 + adds r0, r2, r3 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r6] + ldr r7, _08029E88 + adds r0, r0, r7 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + ldr r2, _08029E8C + movs r1, #6 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + ldr r2, _08029E90 + movs r3, #2 + mov sb, r3 + str r3, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0xc + bl sub_0800449C + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + ldr r2, _08029E94 + movs r1, #0x12 + str r1, [sp] + movs r3, #0xff + str r3, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0xc + bl sub_0800449C + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + ldr r2, _08029E98 + mov r1, sb + str r1, [sp] + movs r3, #0xff + str r3, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r6] + ldr r0, _08029E9C + adds r1, r1, r0 + b _08029FE8 + .align 2, 0 +_08029E84: .4byte 0x00003008 +_08029E88: .4byte 0x00003009 +_08029E8C: .4byte gUnknown_85CCDBD +_08029E90: .4byte gUnknown_85CAAD8 +_08029E94: .4byte gUnknown_85CAADB +_08029E98: .4byte gUnknown_85C9421 +_08029E9C: .4byte 0x00003014 +_08029EA0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029EC2 + ldr r0, [r6] + ldr r1, _08029ECC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r6] + ldr r2, _08029ED0 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_0800365C +_08029EC2: + movs r0, #0 + bl sub_08002248 + b _08029FE2 + .align 2, 0 +_08029ECC: .4byte 0x00003008 +_08029ED0: .4byte 0x00003009 +_08029ED4: + ldr r0, _08029F7C + mov sl, r0 + adds r0, r2, r0 + ldrb r7, [r0] + cmp r7, #0 + bne _08029EE2 + movs r7, #1 +_08029EE2: + ldr r1, _08029F80 + mov r8, r1 + adds r0, r2, r1 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + ldr r2, _08029F84 + movs r3, #2 + mov sb, r3 + str r3, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r1, #1 + movs r3, #0xc + bl sub_0800449C + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + ldr r2, _08029F88 + movs r1, #0x12 + str r1, [sp] + movs r3, #0xff + str r3, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0xc + bl sub_0800449C + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + ldr r2, _08029F8C + subs r1, r7, #1 + lsls r1, r1, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldr r0, [r6] + add r0, r8 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + ldr r0, _08029F90 + ldrh r1, [r0, #0x2e] + movs r4, #1 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08029F94 + movs r0, #5 + bl sub_080A306C + ldr r0, [r6] + mov r2, sl + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _08029FE2 + strb r4, [r1] + b _08029FE2 + .align 2, 0 +_08029F7C: .4byte 0x00003020 +_08029F80: .4byte 0x00003009 +_08029F84: .4byte gUnknown_85CAAD8 +_08029F88: .4byte gUnknown_85CAADB +_08029F8C: .4byte gUnknown_85C9421 +_08029F90: .4byte gUnknown_3002360 +_08029F94: + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _08029FCC + movs r0, #5 + bl sub_080A306C + ldr r0, [r6] + add r0, sl + ldrb r2, [r0] + cmp r2, #1 + beq _08029FC2 + cmp r2, #1 + bgt _08029FB6 + cmp r2, #0 + beq _08029FBC + b _0802A054 +_08029FB6: + cmp r2, #2 + beq _08029FC8 + b _0802A054 +_08029FBC: + mov r1, sb + strb r1, [r0] + b _0802A054 +_08029FC2: + mov r2, sb + strb r2, [r0] + b _0802A054 +_08029FC8: + strb r4, [r0] + b _0802A054 +_08029FCC: + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _0802A054 + movs r0, #5 + bl sub_080A306C + ldr r0, [r6] + add r0, sl + movs r1, #2 + strb r1, [r0] +_08029FE2: + ldr r1, [r6] + ldr r3, _08029FF0 + adds r1, r1, r3 +_08029FE8: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0802A054 + .align 2, 0 +_08029FF0: .4byte 0x00003014 +_08029FF4: + ldr r0, [r6] + ldr r2, _0802A064 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r3, _0802A068 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r6] + ldr r7, _0802A06C + adds r0, r0, r7 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + ldr r4, _0802A070 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + bl sub_08003444 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, [r6] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] +_0802A054: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A064: .4byte 0x00003020 +_0802A068: .4byte 0x00003024 +_0802A06C: .4byte 0x00003008 +_0802A070: .4byte 0x00003009 + thumb_func_end sub_08029D28 + + thumb_func_start sub_0802A074 +sub_0802A074: @ 0x0802A074 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r5, _0802A090 + ldr r0, [r5] + ldr r6, _0802A094 + adds r0, r0, r6 + ldrb r4, [r0] + cmp r4, #1 + beq _0802A0CC + cmp r4, #1 + bgt _0802A098 + cmp r4, #0 + beq _0802A0A2 + b _0802A114 + .align 2, 0 +_0802A090: .4byte gUnknown_20229AC +_0802A094: .4byte 0x00003014 +_0802A098: + cmp r4, #2 + beq _0802A0E0 + cmp r4, #3 + beq _0802A0F8 + b _0802A114 +_0802A0A2: + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0802A0C8 + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + b _0802A104 + .align 2, 0 +_0802A0C8: .4byte gUnknown_8277071 +_0802A0CC: + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, [r5] + ldr r0, _0802A0DC + adds r1, r1, r0 + b _0802A108 + .align 2, 0 +_0802A0DC: .4byte 0x00003014 +_0802A0E0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A13C + ldr r0, _0802A0F4 + movs r1, #0 + bl sub_080A8878 + b _0802A104 + .align 2, 0 +_0802A0F4: .4byte sub_081535C4 +_0802A0F8: + ldr r0, _0802A110 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A13C +_0802A104: + ldr r1, [r5] + adds r1, r1, r6 +_0802A108: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0802A13C + .align 2, 0 +_0802A110: .4byte sub_081535C4 +_0802A114: + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, _0802A144 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] +_0802A13C: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802A144: .4byte gUnknown_20229AC + thumb_func_end sub_0802A074 + + thumb_func_start sub_0802A148 +sub_0802A148: @ 0x0802A148 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r1, _0802A168 + ldr r2, [r1] + ldr r6, _0802A16C + adds r0, r2, r6 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #1 + beq _0802A1A0 + cmp r0, #1 + bgt _0802A170 + cmp r0, #0 + beq _0802A176 + b _0802A214 + .align 2, 0 +_0802A168: .4byte gUnknown_20229AC +_0802A16C: .4byte 0x00003014 +_0802A170: + cmp r0, #2 + beq _0802A1E8 + b _0802A214 +_0802A176: + ldr r4, _0802A198 + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r5] + ldr r2, _0802A19C + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_08003774 + adds r0, r4, #0 + bl sub_08028EA0 + b _0802A204 + .align 2, 0 +_0802A198: .4byte gUnknown_82CB478 +_0802A19C: .4byte 0x00003008 +_0802A1A0: + ldr r4, _0802A1DC + adds r0, r2, r4 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + ldr r2, _0802A1E0 + movs r1, #6 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #4 + bl sub_0800449C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r5] + ldr r0, _0802A1E4 + adds r1, r1, r0 + b _0802A208 + .align 2, 0 +_0802A1DC: .4byte 0x00003008 +_0802A1E0: .4byte gUnknown_85CCDEA +_0802A1E4: .4byte 0x00003014 +_0802A1E8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A1FE + ldr r0, [r5] + ldr r1, _0802A210 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C +_0802A1FE: + movs r0, #0 + bl sub_08002248 +_0802A204: + ldr r1, [r5] + adds r1, r1, r6 +_0802A208: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0802A220 + .align 2, 0 +_0802A210: .4byte 0x00003008 +_0802A214: + ldr r0, [r5] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] +_0802A220: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0802A148 + + thumb_func_start sub_0802A228 +sub_0802A228: @ 0x0802A228 + push {r4, r5, lr} + sub sp, #8 + ldr r5, _0802A274 + ldr r0, [r5] + ldr r4, _0802A278 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, [r5] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802A274: .4byte gUnknown_20229AC +_0802A278: .4byte 0x00003008 + thumb_func_end sub_0802A228 + + thumb_func_start sub_0802A27C +sub_0802A27C: @ 0x0802A27C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _0802A29C + ldr r1, [r0] + ldr r7, _0802A2A0 + adds r2, r1, r7 + ldrb r5, [r2] + adds r6, r0, #0 + cmp r5, #1 + beq _0802A304 + cmp r5, #1 + bgt _0802A2A4 + cmp r5, #0 + beq _0802A2AE + b _0802A398 + .align 2, 0 +_0802A29C: .4byte gUnknown_20229AC +_0802A2A0: .4byte 0x00003014 +_0802A2A4: + cmp r5, #2 + beq _0802A34C + cmp r5, #3 + beq _0802A378 + b _0802A398 +_0802A2AE: + ldr r4, _0802A2F4 + adds r0, r4, #0 + bl sub_08003250 + ldr r1, [r6] + ldr r2, _0802A2F8 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_08003774 + adds r0, r4, #0 + bl sub_08028EA0 + ldr r1, [r6] + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r6] + ldr r2, _0802A2FC + adds r1, r0, r2 + movs r2, #0 + strh r5, [r1] + ldr r1, _0802A300 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r6] + adds r1, #4 + adds r0, r0, r1 + strb r2, [r0] + b _0802A3DE + .align 2, 0 +_0802A2F4: .4byte gUnknown_82CB470 +_0802A2F8: .4byte 0x00003008 +_0802A2FC: .4byte 0x0000301C +_0802A300: .4byte 0x00003020 +_0802A304: + ldr r4, _0802A340 + adds r0, r1, r4 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + ldr r2, _0802A344 + movs r1, #6 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + ldr r1, [r6] + ldr r2, _0802A348 + adds r1, r1, r2 + b _0802A36C + .align 2, 0 +_0802A340: .4byte 0x00003008 +_0802A344: .4byte gUnknown_85CCDCB +_0802A348: .4byte 0x00003014 +_0802A34C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A362 + ldr r0, [r6] + ldr r1, _0802A374 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C +_0802A362: + movs r0, #0 + bl sub_08002248 + ldr r1, [r6] + adds r1, r1, r7 +_0802A36C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0802A3DE + .align 2, 0 +_0802A374: .4byte 0x00003008 +_0802A378: + ldr r0, _0802A394 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x77 + bls _0802A3DE + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _0802A3DE + .align 2, 0 +_0802A394: .4byte 0x0000301C +_0802A398: + ldr r0, [r6] + ldr r1, _0802A3E8 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + ldr r0, [r6] + ldr r4, _0802A3EC + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003774 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, [r6] + movs r2, #0xc0 + lsls r2, r2, #6 + adds r0, r0, r2 + movs r1, #1 + str r1, [r0] +_0802A3DE: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A3E8: .4byte 0x00003024 +_0802A3EC: .4byte 0x00003008 + thumb_func_end sub_0802A27C + + thumb_func_start sub_0802A3F0 +sub_0802A3F0: @ 0x0802A3F0 + push {r4, lr} + ldr r4, _0802A414 + ldr r0, [r4] + ldr r1, _0802A418 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080A8964 + ldr r0, [r4] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + movs r1, #1 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A414: .4byte gUnknown_20229AC +_0802A418: .4byte 0x00003004 + thumb_func_end sub_0802A3F0 + + thumb_func_start sub_0802A41C +sub_0802A41C: @ 0x0802A41C + bx lr + .align 2, 0 + thumb_func_end sub_0802A41C + + thumb_func_start sub_0802A420 +sub_0802A420: @ 0x0802A420 + push {r4, lr} + ldr r2, _0802A444 + ldr r1, [r2] + ldr r3, _0802A448 + adds r1, r1, r3 + movs r3, #0 + strb r3, [r1] + ldr r1, [r2] + movs r4, #0xc0 + lsls r4, r4, #6 + adds r2, r1, r4 + str r3, [r2] + ldr r2, _0802A44C + adds r1, r1, r2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A444: .4byte gUnknown_20229AC +_0802A448: .4byte 0x00003014 +_0802A44C: .4byte 0x00003028 + thumb_func_end sub_0802A420 + + thumb_func_start sub_0802A450 +sub_0802A450: @ 0x0802A450 + ldr r0, _0802A45C + ldr r0, [r0] + ldr r1, _0802A460 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0802A45C: .4byte gUnknown_20229AC +_0802A460: .4byte 0x00003028 + thumb_func_end sub_0802A450 + + thumb_func_start sub_0802A464 +sub_0802A464: @ 0x0802A464 + push {lr} + ldr r0, _0802A47C + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #1 + beq _0802A480 + movs r0, #1 + b _0802A482 + .align 2, 0 +_0802A47C: .4byte gUnknown_20229AC +_0802A480: + movs r0, #0 +_0802A482: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802A464 + + thumb_func_start sub_0802A488 +sub_0802A488: @ 0x0802A488 + ldr r0, _0802A494 + ldr r0, [r0] + ldr r1, _0802A498 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0802A494: .4byte gUnknown_20229AC +_0802A498: .4byte 0x00003024 + thumb_func_end sub_0802A488 + + thumb_func_start sub_0802A49C +sub_0802A49C: @ 0x0802A49C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #4 + mov r8, r0 + mov r2, sp + movs r6, #0 + ldr r1, _0802A5CC + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0802A5D0 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0802A4C2: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _0802A4C2 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _0802A5CC + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0802A5D4 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + bl sub_08196DC4 + bl sub_08196DF4 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r4, _0802A5D8 + ldr r1, [r4] + movs r0, #3 + bl sub_0800212C + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #6 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A5CC: .4byte 0x040000D4 +_0802A5D0: .4byte 0x81000800 +_0802A5D4: .4byte gUnknown_82CB430 +_0802A5D8: .4byte gUnknown_20229AC + thumb_func_end sub_0802A49C + + thumb_func_start sub_0802A5DC +sub_0802A5DC: @ 0x0802A5DC + push {lr} + sub sp, #4 + ldr r0, _0802A5F8 + ldr r0, [r0] + ldr r2, _0802A5FC + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #5 + bhi _0802A676 + lsls r0, r0, #2 + ldr r1, _0802A600 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802A5F8: .4byte gUnknown_20229AC +_0802A5FC: .4byte 0x00003018 +_0802A600: .4byte _0802A604 +_0802A604: @ jump table + .4byte _0802A61C @ case 0 + .4byte _0802A62C @ case 1 + .4byte _0802A632 @ case 2 + .4byte _0802A640 @ case 3 + .4byte _0802A658 @ case 4 + .4byte _0802A666 @ case 5 +_0802A61C: + ldr r0, _0802A628 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + b _0802A67E + .align 2, 0 +_0802A628: .4byte gUnknown_82CB67C +_0802A62C: + bl sub_081996B8 + b _0802A67E +_0802A632: + ldr r1, _0802A63C + movs r0, #0 + str r0, [sp] + movs r0, #3 + b _0802A648 + .align 2, 0 +_0802A63C: .4byte gUnknown_82CB910 +_0802A640: + ldr r1, _0802A654 + movs r0, #0 + str r0, [sp] + movs r0, #1 +_0802A648: + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _0802A67E + .align 2, 0 +_0802A654: .4byte gUnknown_82CC1A0 +_0802A658: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0802A67E + b _0802A68C +_0802A666: + movs r0, #3 + bl sub_080985A0 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + b _0802A67E +_0802A676: + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _0802A68E +_0802A67E: + ldr r0, _0802A694 + ldr r1, [r0] + ldr r0, _0802A698 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0802A68C: + movs r0, #0 +_0802A68E: + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_0802A694: .4byte gUnknown_20229AC +_0802A698: .4byte 0x00003018 + thumb_func_end sub_0802A5DC + + thumb_func_start sub_0802A69C +sub_0802A69C: @ 0x0802A69C + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _0802A714 + ldrb r0, [r0] + cmp r0, #0 + beq _0802A730 + ldr r5, _0802A718 + ldr r0, _0802A71C + bl sub_08000BC8 + str r0, [r5] + cmp r0, #0 + beq _0802A730 + bl sub_080A8818 + ldr r0, _0802A720 + movs r1, #1 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, [r5] + movs r1, #0 + strh r1, [r0, #8] + str r6, [r0] + strb r4, [r0, #4] + bl sub_0800A02C + ldr r1, [r5] + strb r0, [r1, #6] + ldr r0, [r5] + ldrb r2, [r0, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _0802A724 + adds r1, r1, r2 + adds r0, r0, r1 + movs r1, #0x64 + muls r1, r7, r1 + ldr r2, _0802A728 + adds r1, r1, r2 + bl sub_0802A920 + ldr r0, [r5] + bl sub_0802A754 + ldr r2, [r5] + adds r0, r4, #0 + movs r1, #2 + bl sub_080A8B44 + ldr r0, _0802A72C + bl sub_08000540 + b _0802A736 + .align 2, 0 +_0802A714: .4byte gUnknown_30031C4 +_0802A718: .4byte gUnknown_20229B0 +_0802A71C: .4byte 0x0000839C +_0802A720: .4byte sub_0802A994 +_0802A724: .4byte 0x000082A8 +_0802A728: .4byte gUnknown_2024190 +_0802A72C: .4byte sub_0802A960 +_0802A730: + adds r0, r6, #0 + bl sub_08000540 +_0802A736: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0802A69C + + thumb_func_start sub_0802A73C +sub_0802A73C: @ 0x0802A73C + push {lr} + bl sub_0802CDA0 + ldr r0, _0802A750 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_0802A750: .4byte gUnknown_20229B0 + thumb_func_end sub_0802A73C + + thumb_func_start sub_0802A754 +sub_0802A754: @ 0x0802A754 + push {r4, lr} + adds r4, r0, #0 + bl sub_08009B64 + movs r2, #0 + strb r0, [r4, #5] + adds r1, r4, #0 + adds r1, #0x70 + movs r0, #5 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x72 + strh r2, [r0] + bl sub_0802A814 + adds r0, r4, #0 + bl sub_0802A788 + ldrb r0, [r4, #5] + cmp r0, #5 + bne _0802A782 + bl sub_0802E0A0 +_0802A782: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802A754 + + thumb_func_start sub_0802A788 +sub_0802A788: @ 0x0802A788 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #6 + 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_0800A02C + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A7AE + movs r1, #1 +_0802A7AE: + adds r0, r4, #0 + adds r0, #0x47 + strb r1, [r0] + strh r5, [r4, #8] + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + str r5, [r4, #0x58] + strh r5, [r4, #0x3a] + subs r0, #3 + strb r6, [r0] + str r5, [r4, #0x54] + adds r0, #2 + strb r6, [r0] + adds r0, #3 + strb r6, [r0] + subs r0, #1 + movs r1, #1 + strb r1, [r0] + str r5, [r4, #0x78] + adds r0, #0x29 + strb r6, [r0] + adds r0, #3 + 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_0802A88C + bl sub_0802BDDC + movs r2, #0 + adds r5, r4, #0 + adds r5, #0x7c + movs r3, #0 + adds r1, r4, #0 + adds r1, #0x9a +_0802A800: + adds r0, r5, r2 + strb r3, [r0] + strh r3, [r1] + adds r1, #2 + adds r2, #1 + cmp r2, #4 + ble _0802A800 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0802A788 + + thumb_func_start sub_0802A814 +sub_0802A814: @ 0x0802A814 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r7, _0802A874 + movs r6, #0 + movs r5, #0 + ldr r0, _0802A878 + mov r8, r0 + movs r4, #4 +_0802A826: + ldr r0, [r7] + adds r0, r0, r5 + ldr r1, _0802A87C + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0802A8F4 + lsls r0, r0, #0x10 + ldr r1, [r7] + adds r1, r1, r6 + asrs r0, r0, #0xe + add r0, r8 + ldrh r0, [r0, #2] + ldr r2, _0802A880 + adds r1, r1, r2 + strh r0, [r1] + adds r6, #0x24 + adds r5, #0xc + subs r4, #1 + cmp r4, #0 + bge _0802A826 + ldr r0, _0802A874 + ldr r1, [r0] + ldr r0, _0802A884 + adds r3, r1, r0 + ldrb r2, [r1, #6] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0802A888 + adds r0, r0, r2 + adds r1, r1, r0 + str r1, [r3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A874: .4byte gUnknown_20229B0 +_0802A878: .4byte gUnknown_82CECF0 +_0802A87C: .4byte 0x000082A8 +_0802A880: .4byte 0x000082F0 +_0802A884: .4byte 0x00008398 +_0802A888: .4byte 0x000082E4 + thumb_func_end sub_0802A814 + + thumb_func_start sub_0802A88C +sub_0802A88C: @ 0x0802A88C + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r6, _0802A8DC + movs r4, #0 + movs r3, #0 +_0802A896: + ldr r2, [r6] + adds r1, r2, r3 + ldr r7, _0802A8E0 + adds r0, r1, r7 + strh r4, [r0] + adds r7, #2 + adds r0, r1, r7 + strh r4, [r0] + ldr r0, _0802A8E4 + adds r1, r1, r0 + strh r4, [r1] + ldr r1, _0802A8E8 + adds r0, r2, r1 + adds r0, r0, r3 + str r4, [r0] + subs r7, #0xc + adds r0, r2, r7 + adds r0, r0, r3 + ldr r1, _0802A8EC + str r1, [r0] + ldr r1, _0802A8F0 + adds r0, r2, r1 + adds r0, r0, r3 + str r4, [r0] + adds r2, #0x8b + adds r2, r2, r5 + movs r0, #9 + strb r0, [r2] + adds r3, #0x24 + adds r5, #1 + cmp r5, #4 + ble _0802A896 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A8DC: .4byte gUnknown_20229B0 +_0802A8E0: .4byte 0x000082F2 +_0802A8E4: .4byte 0x000082F6 +_0802A8E8: .4byte 0x000082E4 +_0802A8EC: .4byte 0x7FFFFFFF +_0802A8F0: .4byte 0x000082F8 + thumb_func_end sub_0802A88C + + thumb_func_start sub_0802A8F4 +sub_0802A8F4: @ 0x0802A8F4 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r1, #0 + ldr r2, _0802A90C +_0802A8FE: + ldrh r0, [r2] + cmp r0, r3 + bne _0802A910 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + b _0802A91C + .align 2, 0 +_0802A90C: .4byte gUnknown_82CECF0 +_0802A910: + adds r2, #4 + adds r1, #1 + cmp r1, #0x63 + bls _0802A8FE + movs r0, #1 + rsbs r0, r0, #0 +_0802A91C: + pop {r1} + bx r1 + thumb_func_end sub_0802A8F4 + + thumb_func_start sub_0802A920 +sub_0802A920: @ 0x0802A920 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + str r0, [r5, #4] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r5, #8] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802A920 + + thumb_func_start sub_0802A94C +sub_0802A94C: @ 0x0802A94C + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802A94C + + thumb_func_start sub_0802A960 +sub_0802A960: @ 0x0802A960 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802A960 + + thumb_func_start sub_0802A978 +sub_0802A978: @ 0x0802A978 + push {lr} + movs r1, #1 + bl sub_080A8878 + ldr r2, _0802A990 + ldr r1, [r2] + movs r3, #0 + strb r0, [r1, #4] + ldr r0, [r2] + strh r3, [r0, #8] + pop {r0} + bx r0 + .align 2, 0 +_0802A990: .4byte gUnknown_20229B0 + thumb_func_end sub_0802A978 + + thumb_func_start sub_0802A994 +sub_0802A994: @ 0x0802A994 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0802A9B4 + ldr r0, [r1] + ldrh r0, [r0, #8] + adds r2, r1, #0 + cmp r0, #5 + bls _0802A9AA + b _0802AAFC +_0802A9AA: + lsls r0, r0, #2 + ldr r1, _0802A9B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802A9B4: .4byte gUnknown_20229B0 +_0802A9B8: .4byte _0802A9BC +_0802A9BC: @ jump table + .4byte _0802A9D4 @ case 0 + .4byte _0802AA00 @ case 1 + .4byte _0802AA30 @ case 2 + .4byte _0802AA5C @ case 3 + .4byte _0802AA98 @ case 4 + .4byte _0802AAC4 @ case 5 +_0802A9D4: + movs r0, #0 + bl sub_080006F0 + bl sub_0800668C + bl sub_08008424 + ldr r0, _0802A9F8 + movs r1, #5 + bl sub_0802BB54 + movs r0, #4 + bl sub_080A2818 + ldr r0, _0802A9FC + ldr r1, [r0] + b _0802AAB4 + .align 2, 0 +_0802A9F8: .4byte sub_0802BA78 +_0802A9FC: .4byte gUnknown_20229B0 +_0802AA00: + ldr r0, _0802AA28 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AAFC + ldr r4, _0802AA2C + ldr r0, [r4] + adds r0, #0xa4 + bl sub_0802CD68 + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + ldr r1, [r4] + b _0802AAB4 + .align 2, 0 +_0802AA28: .4byte sub_0802BA78 +_0802AA2C: .4byte gUnknown_20229B0 +_0802AA30: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802AAFC + bl sub_080A2904 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0802AAFC + ldr r0, _0802AA54 + movs r1, #8 + bl sub_080A2850 + ldr r0, _0802AA58 + ldr r1, [r0] + b _0802AAB4 + .align 2, 0 +_0802AA54: .4byte 0x0000021A +_0802AA58: .4byte gUnknown_20229B0 +_0802AA5C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802AAFC + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + adds r1, r4, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0802AA90 + bl sub_080006F0 + ldr r0, _0802AA94 + ldr r1, [r0] + b _0802AAB4 + .align 2, 0 +_0802AA90: .4byte sub_0802A94C +_0802AA94: .4byte gUnknown_20229B0 +_0802AA98: + bl sub_080A12E4 + ldr r0, _0802AABC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0802AAFC + ldr r1, _0802AAC0 + ldr r0, [r1] + strb r2, [r0, #7] + ldr r1, [r1] +_0802AAB4: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802AAFC + .align 2, 0 +_0802AABC: .4byte gUnknown_2037C74 +_0802AAC0: .4byte gUnknown_20229B0 +_0802AAC4: + ldr r0, [r2] + ldrb r1, [r0, #7] + adds r1, #1 + strb r1, [r0, #7] + ldr r1, [r2] + ldrb r0, [r1, #7] + cmp r0, #0x13 + bls _0802AAFC + adds r0, r1, #0 + adds r0, #0x47 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AAEC + ldr r0, _0802AAE8 + bl sub_0802A978 + b _0802AAF2 + .align 2, 0 +_0802AAE8: .4byte sub_0802AC74 +_0802AAEC: + ldr r0, _0802AB04 + bl sub_0802A978 +_0802AAF2: + bl sub_0802BB74 + adds r0, r4, #0 + bl sub_080A8964 +_0802AAFC: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AB04: .4byte sub_0802AE88 + thumb_func_end sub_0802A994 + + thumb_func_start sub_0802AB08 +sub_0802AB08: @ 0x0802AB08 + push {lr} + adds r1, r0, #0 + cmp r1, #0 + bne _0802AB28 + ldr r0, _0802AB20 + ldr r1, [r0] + ldr r0, _0802AB24 + str r0, [r1, #0x30] + movs r0, #1 + str r0, [r1, #0x2c] + b _0802AB3A + .align 2, 0 +_0802AB20: .4byte gUnknown_20229B0 +_0802AB24: .4byte 0x00001111 +_0802AB28: + ldr r0, _0802AB40 + ldr r2, [r0] + subs r1, #1 + movs r0, #1 + lsls r0, r1 + subs r0, #1 + str r0, [r2, #0x30] + movs r0, #0 + str r0, [r2, #0x2c] +_0802AB3A: + pop {r0} + bx r0 + .align 2, 0 +_0802AB40: .4byte gUnknown_20229B0 + thumb_func_end sub_0802AB08 + + thumb_func_start sub_0802AB44 +sub_0802AB44: @ 0x0802AB44 + push {r4, r5, r6, lr} + ldr r4, _0802AB90 + ldr r1, [r4] + adds r1, #0x70 + movs r2, #0 + strb r0, [r1] + ldr r0, [r4] + movs r3, #0 + strh r2, [r0, #8] + strh r2, [r0, #0xa] + adds r0, #0x48 + movs r1, #1 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x49 + strb r3, [r0] + movs r3, #1 + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r3, r0 + bge _0802AB88 + adds r6, r4, #0 + ldr r5, _0802AB94 + movs r4, #0 + movs r2, #0x24 +_0802AB76: + ldr r1, [r6] + adds r0, r1, r5 + adds r0, r0, r2 + str r4, [r0] + adds r2, #0x24 + adds r3, #1 + ldrb r1, [r1, #5] + cmp r3, r1 + blt _0802AB76 +_0802AB88: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802AB90: .4byte gUnknown_20229B0 +_0802AB94: .4byte 0x000082FC + thumb_func_end sub_0802AB44 + + thumb_func_start sub_0802AB98 +sub_0802AB98: @ 0x0802AB98 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r4, #1 + movs r0, #0 + str r0, [sp, #4] + ldr r7, _0802AC60 + ldr r0, [r7] + ldrb r0, [r0, #5] + cmp r4, r0 + bge _0802AC3C + adds r1, r7, #0 + mov sl, r1 + movs r2, #2 + add r2, sp + mov r8, r2 + ldr r3, _0802AC64 + mov sb, r3 + movs r6, #0x24 +_0802ABC4: + mov r1, sl + ldr r0, [r1] + adds r1, r0, r6 + ldr r2, _0802AC68 + adds r1, r1, r2 + ldrh r5, [r1] + add r0, sb + adds r1, r4, #0 + mov r2, sp + mov r3, r8 + bl sub_0802DF5C + cmp r0, #0 + beq _0802AC04 + ldr r2, [r7] + lsls r1, r4, #1 + adds r0, r2, #0 + adds r0, #0x90 + adds r0, r0, r1 + mov r3, r8 + ldrh r1, [r3] + strh r1, [r0] + adds r2, #0x8b + adds r2, r2, r4 + mov r0, sp + ldrb r0, [r0] + strb r0, [r2] + ldr r0, [r7] + adds r0, r0, r6 + ldr r1, _0802AC6C + adds r0, r0, r1 + strh r5, [r0] +_0802AC04: + mov r2, sl + ldr r1, [r2] + ldr r3, _0802AC70 + adds r0, r1, r3 + adds r0, r0, r6 + ldr r0, [r0] + cmp r0, #0 + beq _0802AC2A + adds r0, r1, #0 + adds r0, #0x8b + adds r0, r0, r4 + adds r1, #0x70 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0802AC2A + ldr r0, [sp, #4] + adds r0, #1 + str r0, [sp, #4] +_0802AC2A: + movs r1, #0x24 + add sb, r1 + adds r6, #0x24 + adds r4, #1 + ldr r7, _0802AC60 + ldr r0, [r7] + ldrb r0, [r0, #5] + cmp r4, r0 + blt _0802ABC4 +_0802AC3C: + ldr r2, _0802AC60 + ldr r1, [r2] + ldrb r0, [r1, #5] + subs r0, #1 + ldr r3, [sp, #4] + cmp r3, r0 + bne _0802AC50 + adds r1, #0x49 + movs r0, #1 + strb r0, [r1] +_0802AC50: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802AC60: .4byte gUnknown_20229B0 +_0802AC64: .4byte 0x00008308 +_0802AC68: .4byte 0x000082F4 +_0802AC6C: .4byte 0x000082F6 +_0802AC70: .4byte 0x000082FC + thumb_func_end sub_0802AB98 + + thumb_func_start sub_0802AC74 +sub_0802AC74: @ 0x0802AC74 + push {r4, r5, lr} + bl sub_0802AB98 + bl sub_0802C130 + ldr r0, _0802ACF0 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x48 + ldrb r0, [r0] + cmp r0, #0 + bne _0802ACA6 + adds r0, r1, #0 + adds r0, #0x49 + ldrb r0, [r0] + cmp r0, #0 + beq _0802ACA6 + adds r0, r1, #0 + adds r0, #0x4c + ldrb r0, [r0] + bl sub_0802AB44 + movs r0, #3 + bl sub_0802AB08 +_0802ACA6: + ldr r4, _0802ACF0 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x48 + ldrb r5, [r0] + cmp r5, #1 + bne _0802ACE2 + ldr r1, _0802ACF4 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + adds r1, r0, #0 + cmp r1, #0 + bne _0802ACE2 + ldr r0, [r4] + adds r0, #0x48 + strb r1, [r0] + ldr r1, [r4] + ldrb r2, [r1, #6] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0802ACF8 + adds r1, r1, r2 + adds r1, r1, r0 + str r5, [r1] +_0802ACE2: + bl sub_0802BED0 + bl sub_0802ACFC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802ACF0: .4byte gUnknown_20229B0 +_0802ACF4: .4byte gUnknown_82CEE80 +_0802ACF8: .4byte 0x000082FC + thumb_func_end sub_0802AC74 + + thumb_func_start sub_0802ACFC +sub_0802ACFC: @ 0x0802ACFC + push {r4, lr} + ldr r4, _0802AD2C + ldr r1, [r4] + ldr r0, [r1, #0x2c] + cmp r0, #0 + bne _0802AD12 + ldr r2, _0802AD30 + adds r0, r1, r2 + adds r1, #0x70 + bl sub_0802DE30 +_0802AD12: + ldr r1, [r4] + ldr r2, [r1, #0x30] + ldr r0, _0802AD34 + cmp r2, r0 + beq _0802AD24 + ldr r0, [r1, #0x2c] + adds r0, #1 + ands r0, r2 + str r0, [r1, #0x2c] +_0802AD24: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AD2C: .4byte gUnknown_20229B0 +_0802AD30: .4byte 0x000082E4 +_0802AD34: .4byte 0x00001111 + thumb_func_end sub_0802ACFC + + thumb_func_start sub_0802AD38 +sub_0802AD38: @ 0x0802AD38 + ldr r2, _0802AD64 + ldr r1, [r2] + adds r1, #0x70 + movs r3, #0 + strb r0, [r1] + ldr r0, [r2] + strh r3, [r0, #8] + strh r3, [r0, #0xa] + adds r0, #0x48 + movs r1, #1 + strb r1, [r0] + ldr r1, [r2] + ldrb r2, [r1, #6] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0802AD68 + adds r1, r1, r2 + adds r1, r1, r0 + str r3, [r1] + bx lr + .align 2, 0 +_0802AD64: .4byte gUnknown_20229B0 +_0802AD68: .4byte 0x000082FC + thumb_func_end sub_0802AD38 + + thumb_func_start sub_0802AD6C +sub_0802AD6C: @ 0x0802AD6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r4, _0802ADE8 + ldr r0, [r4] + ldr r2, _0802ADEC + adds r1, r0, r2 + ldrh r1, [r1] + mov r8, r1 + ldr r3, _0802ADF0 + adds r0, r0, r3 + mov r1, sp + bl sub_0802DEB4 + cmp r0, #0 + beq _0802AE1C + ldr r2, [r4] + ldrb r0, [r2, #6] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r3, _0802ADF4 + adds r0, r2, r3 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #1 + bne _0802ADBA + mov r0, sp + adds r1, r2, #0 + adds r1, #0x70 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _0802ADBA + mov r0, sp + ldrb r0, [r0] + bl sub_0802AD38 +_0802ADBA: + ldr r3, _0802ADE8 + ldr r2, [r3] + ldr r0, [r2, #0x78] + ldr r1, [sp, #8] + cmp r0, r1 + beq _0802ADFC + str r1, [r2, #0x78] + movs r4, #1 + str r4, [r2, #0x5c] + mov r0, sp + ldrb r1, [r0, #1] + 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 _0802ADF8 + adds r0, #0x4d + strb r4, [r0] + b _0802ADFC + .align 2, 0 +_0802ADE8: .4byte gUnknown_20229B0 +_0802ADEC: .4byte 0x000082F4 +_0802ADF0: .4byte 0x000082E4 +_0802ADF4: .4byte 0x000082FC +_0802ADF8: + adds r0, #0x4d + strb r1, [r0] +_0802ADFC: + ldr r0, _0802AE78 + ldr r1, [r0] + mov r0, sp + ldrh r0, [r0, #2] + adds r2, r1, #0 + adds r2, #0x72 + strh r0, [r2] + mov r0, sp + ldrh r2, [r0, #4] + adds r0, r1, #0 + adds r0, #0x74 + strh r2, [r0] + ldr r0, _0802AE7C + adds r1, r1, r0 + mov r2, r8 + strh r2, [r1] +_0802AE1C: + movs r4, #1 + ldr r2, _0802AE78 + ldr r0, [r2] + ldrb r0, [r0, #5] + cmp r4, r0 + bge _0802AE6A + adds r7, r2, #0 + ldr r6, _0802AE80 + movs r5, #0x24 +_0802AE2E: + ldr r1, [r7] + ldrb r3, [r1, #6] + cmp r4, r3 + beq _0802AE5C + adds r0, r1, r5 + ldr r3, _0802AE84 + adds r0, r0, r3 + ldrh r0, [r0] + mov r8, r0 + adds r0, r1, r6 + adds r1, r4, #0 + str r2, [sp, #0xc] + bl sub_0802DFC8 + ldr r2, [sp, #0xc] + cmp r0, #0 + beq _0802AE5C + ldr r0, [r7] + adds r0, r0, r5 + ldr r1, _0802AE7C + adds r0, r0, r1 + mov r3, r8 + strh r3, [r0] +_0802AE5C: + adds r6, #0x24 + adds r5, #0x24 + adds r4, #1 + ldr r0, [r2] + ldrb r0, [r0, #5] + cmp r4, r0 + blt _0802AE2E +_0802AE6A: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802AE78: .4byte gUnknown_20229B0 +_0802AE7C: .4byte 0x000082F6 +_0802AE80: .4byte 0x00008308 +_0802AE84: .4byte 0x000082F4 + thumb_func_end sub_0802AD6C + + thumb_func_start sub_0802AE88 +sub_0802AE88: @ 0x0802AE88 + push {r4, lr} + bl sub_0802AD6C + ldr r4, _0802AEE4 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x48 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AED4 + ldr r1, _0802AEE8 + adds r0, r2, #0 + adds r0, #0x70 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + adds r1, r0, #0 + cmp r1, #0 + bne _0802AED4 + ldr r0, [r4] + adds r0, #0x48 + strb r1, [r0] + ldr r1, [r4] + ldrb r2, [r1, #6] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0802AEEC + adds r1, r1, r2 + adds r1, r1, r0 + movs r0, #1 + str r0, [r1] + movs r0, #3 + bl sub_0802AB08 +_0802AED4: + bl sub_0802BED0 + bl sub_0802AEF0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AEE4: .4byte gUnknown_20229B0 +_0802AEE8: .4byte gUnknown_82CEEA4 +_0802AEEC: .4byte 0x000082FC + thumb_func_end sub_0802AE88 + + thumb_func_start sub_0802AEF0 +sub_0802AEF0: @ 0x0802AEF0 + push {r4, lr} + ldr r4, _0802AF30 + ldr r2, [r4] + ldr r0, [r2, #0x2c] + cmp r0, #0 + bne _0802AF18 + ldrb r1, [r2, #6] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802AF34 + adds r0, r0, r1 + adds r0, r2, r0 + adds r1, r2, #0 + adds r1, #0x70 + ldrb r1, [r1] + adds r2, #0x42 + ldrh r2, [r2] + bl sub_0802DF2C +_0802AF18: + ldr r1, [r4] + ldr r2, [r1, #0x30] + ldr r0, _0802AF38 + cmp r2, r0 + beq _0802AF2A + ldr r0, [r1, #0x2c] + adds r0, #1 + ands r0, r2 + str r0, [r1, #0x2c] +_0802AF2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802AF30: .4byte gUnknown_20229B0 +_0802AF34: .4byte 0x000082E4 +_0802AF38: .4byte 0x00001111 + thumb_func_end sub_0802AEF0 + + thumb_func_start sub_0802AF3C +sub_0802AF3C: @ 0x0802AF3C + push {r4, lr} + ldr r4, _0802AF50 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802AF54 + cmp r0, #1 + beq _0802AF62 + b _0802AF88 + .align 2, 0 +_0802AF50: .4byte gUnknown_20229B0 +_0802AF54: + movs r0, #3 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802AF62: + bl sub_0802B4D4 + cmp r0, #0 + bne _0802AF88 + ldr r0, _0802AF84 + 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, #1 + strb r0, [r1] + movs r0, #0 + b _0802AF8A + .align 2, 0 +_0802AF84: .4byte gUnknown_20229B0 +_0802AF88: + movs r0, #1 +_0802AF8A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802AF3C + + thumb_func_start sub_0802AF90 +sub_0802AF90: @ 0x0802AF90 + push {r4, lr} + ldr r4, _0802AFA4 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802AFA8 + cmp r0, #1 + beq _0802AFBE + movs r0, #1 + b _0802AFC2 + .align 2, 0 +_0802AFA4: .4byte gUnknown_20229B0 +_0802AFA8: + movs r0, #0 + bl sub_0802AB08 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x72 + ldrh r0, [r0] + str r0, [r1, #0x24] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802AFBE: + bl sub_0802B4D4 +_0802AFC2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802AF90 + + thumb_func_start sub_0802AFC8 +sub_0802AFC8: @ 0x0802AFC8 + push {r4, lr} + ldr r4, _0802AFDC + ldr r1, [r4] + ldrh r0, [r1, #8] + cmp r0, #0 + beq _0802AFE0 + cmp r0, #1 + beq _0802AFF4 + b _0802B008 + .align 2, 0 +_0802AFDC: .4byte gUnknown_20229B0 +_0802AFE0: + bl sub_0802BDDC + movs r0, #5 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B008 +_0802AFF4: + adds r0, r1, #0 + adds r0, #0x49 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B008 + adds r1, #0x4c + movs r0, #2 + strb r0, [r1] + movs r0, #0 + b _0802B00A +_0802B008: + movs r0, #1 +_0802B00A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802AFC8 + + thumb_func_start sub_0802B010 +sub_0802B010: @ 0x0802B010 + push {r4, lr} + ldr r4, _0802B024 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802B028 + cmp r0, #1 + beq _0802B046 + b _0802B052 + .align 2, 0 +_0802B024: .4byte gUnknown_20229B0 +_0802B028: + bl sub_0802BDDC + movs r0, #0 + bl sub_0802AB08 + 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, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B046: + bl sub_0802C400 + cmp r0, #0 + beq _0802B052 + movs r0, #0 + b _0802B054 +_0802B052: + movs r0, #1 +_0802B054: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B010 + + thumb_func_start sub_0802B05C +sub_0802B05C: @ 0x0802B05C + push {lr} + bl sub_0802B5C0 + cmp r0, #0 + bne _0802B084 + ldr r0, _0802B080 + 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, #1 + strb r0, [r1] + b _0802B09E + .align 2, 0 +_0802B080: .4byte gUnknown_20229B0 +_0802B084: + bl sub_0802C22C + cmp r0, #0 + beq _0802B090 + movs r0, #1 + b _0802B0A0 +_0802B090: + bl sub_0802BDAC + ldr r0, _0802B0A4 + ldr r0, [r0] + adds r0, #0x4c + movs r1, #3 + strb r1, [r0] +_0802B09E: + movs r0, #0 +_0802B0A0: + pop {r1} + bx r1 + .align 2, 0 +_0802B0A4: .4byte gUnknown_20229B0 + thumb_func_end sub_0802B05C + + thumb_func_start sub_0802B0A8 +sub_0802B0A8: @ 0x0802B0A8 + push {lr} + bl sub_0802B5C0 + cmp r0, #0 + beq _0802B0C2 + bl sub_0802C22C + cmp r0, #0 + beq _0802B0BE + movs r0, #1 + b _0802B0C4 +_0802B0BE: + bl sub_0802BDAC +_0802B0C2: + movs r0, #0 +_0802B0C4: + pop {r1} + bx r1 + thumb_func_end sub_0802B0A8 + + thumb_func_start sub_0802B0C8 +sub_0802B0C8: @ 0x0802B0C8 + push {r4, lr} + ldr r4, _0802B0E0 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #1 + beq _0802B100 + cmp r0, #1 + bgt _0802B0E4 + cmp r0, #0 + beq _0802B0EA + b _0802B15C + .align 2, 0 +_0802B0E0: .4byte gUnknown_20229B0 +_0802B0E4: + cmp r0, #2 + beq _0802B154 + b _0802B15C +_0802B0EA: + bl sub_0802C22C + bl sub_0802C2D0 + cmp r0, #0 + beq _0802B15C + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B15C +_0802B100: + bl sub_0802B658 + cmp r0, #0 + bne _0802B15C + bl sub_0802C4B0 + cmp r0, #0 + beq _0802B122 + bl sub_0802C4D4 + ldr r1, [r4] + adds r2, r1, #0 + adds r2, #0x72 + strh r0, [r2] + adds r1, #0x4c + movs r0, #7 + b _0802B148 +_0802B122: + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x74 + ldrh r0, [r0] + cmp r0, #0xc7 + bls _0802B13C + ldrh r0, [r1, #0xe] + adds r2, r1, #0 + adds r2, #0x72 + strh r0, [r2] + adds r1, #0x4c + movs r0, #8 + b _0802B148 +_0802B13C: + ldrh r0, [r1, #0xe] + adds r2, r1, #0 + adds r2, #0x72 + strh r0, [r2] + adds r1, #0x4c + movs r0, #4 +_0802B148: + strb r0, [r1] + ldr r0, _0802B158 + ldr r1, [r0] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B154: + movs r0, #0 + b _0802B15E + .align 2, 0 +_0802B158: .4byte gUnknown_20229B0 +_0802B15C: + movs r0, #1 +_0802B15E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B0C8 + + thumb_func_start sub_0802B164 +sub_0802B164: @ 0x0802B164 + push {r4, lr} + ldr r4, _0802B17C + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #1 + beq _0802B1A4 + cmp r0, #1 + bgt _0802B180 + cmp r0, #0 + beq _0802B186 + b _0802B1B8 + .align 2, 0 +_0802B17C: .4byte gUnknown_20229B0 +_0802B180: + cmp r0, #2 + beq _0802B1B4 + b _0802B1B8 +_0802B186: + bl sub_0802C22C + cmp r0, #0 + bne _0802B192 + bl sub_0802BDAC +_0802B192: + bl sub_0802C2D0 + cmp r0, #0 + beq _0802B1B8 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B1B8 +_0802B1A4: + bl sub_0802B658 + cmp r0, #0 + bne _0802B1B8 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B1B4: + movs r0, #0 + b _0802B1BA +_0802B1B8: + movs r0, #1 +_0802B1BA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B164 + + thumb_func_start sub_0802B1C0 +sub_0802B1C0: @ 0x0802B1C0 + push {r4, lr} + ldr r4, _0802B1D8 + ldr r0, [r4] + ldrh r1, [r0, #8] + cmp r1, #1 + beq _0802B1F4 + cmp r1, #1 + bgt _0802B1DC + cmp r1, #0 + beq _0802B1E6 + b _0802B254 + .align 2, 0 +_0802B1D8: .4byte gUnknown_20229B0 +_0802B1DC: + cmp r1, #2 + beq _0802B220 + cmp r1, #3 + beq _0802B24A + b _0802B254 +_0802B1E6: + movs r0, #4 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B1F4: + bl sub_0802B878 + cmp r0, #0 + bne _0802B254 + ldr r4, _0802B21C + 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_0802E04C + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B254 + .align 2, 0 +_0802B21C: .4byte gUnknown_20229B0 +_0802B220: + adds r0, #0x49 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B254 + bl sub_0802C344 + cmp r0, #0 + beq _0802B238 + ldr r0, [r4] + adds r0, #0x4c + movs r1, #5 + b _0802B23E +_0802B238: + ldr r0, [r4] + adds r0, #0x4c + movs r1, #6 +_0802B23E: + strb r1, [r0] + ldr r0, _0802B250 + ldr r1, [r0] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B24A: + movs r0, #0 + b _0802B256 + .align 2, 0 +_0802B250: .4byte gUnknown_20229B0 +_0802B254: + movs r0, #1 +_0802B256: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B1C0 + + thumb_func_start sub_0802B25C +sub_0802B25C: @ 0x0802B25C + push {r4, lr} + ldr r4, _0802B270 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802B274 + cmp r0, #1 + beq _0802B282 + b _0802B2B4 + .align 2, 0 +_0802B270: .4byte gUnknown_20229B0 +_0802B274: + movs r0, #0 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B282: + bl sub_0802B878 + cmp r0, #0 + bne _0802B2B4 + ldr r4, _0802B2B0 + 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_0802E04C + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x45 + ldrb r1, [r1] + adds r0, #0x42 + strh r1, [r0] + movs r0, #0 + b _0802B2B6 + .align 2, 0 +_0802B2B0: .4byte gUnknown_20229B0 +_0802B2B4: + movs r0, #1 +_0802B2B6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B25C + + thumb_func_start sub_0802B2BC +sub_0802B2BC: @ 0x0802B2BC + push {r4, lr} + ldr r4, _0802B2D0 + ldr r1, [r4] + ldrh r0, [r1, #8] + cmp r0, #0 + beq _0802B2D4 + cmp r0, #1 + beq _0802B2E6 + b _0802B312 + .align 2, 0 +_0802B2D0: .4byte gUnknown_20229B0 +_0802B2D4: + bl sub_0802BA24 + cmp r0, #0 + bne _0802B312 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B312 +_0802B2E6: + adds r0, r1, #0 + adds r0, #0x49 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B312 + adds r0, r1, #0 + bl sub_0802A788 + bl sub_0806F050 + ldr r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + 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 _0802B314 +_0802B312: + movs r0, #1 +_0802B314: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B2BC + + thumb_func_start sub_0802B31C +sub_0802B31C: @ 0x0802B31C + push {r4, lr} + ldr r4, _0802B330 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802B334 + cmp r0, #1 + beq _0802B34A + b _0802B34E + .align 2, 0 +_0802B330: .4byte gUnknown_20229B0 +_0802B334: + bl sub_0802BA24 + cmp r0, #0 + bne _0802B34E + ldr r0, [r4] + bl sub_0802A788 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0802B34A: + movs r0, #0 + b _0802B350 +_0802B34E: + movs r0, #1 +_0802B350: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B31C + + thumb_func_start sub_0802B358 +sub_0802B358: @ 0x0802B358 + push {r4, lr} + ldr r4, _0802B370 + ldr r1, [r4] + ldrh r0, [r1, #8] + cmp r0, #1 + beq _0802B380 + cmp r0, #1 + bgt _0802B374 + cmp r0, #0 + beq _0802B37A + b _0802B3A4 + .align 2, 0 +_0802B370: .4byte gUnknown_20229B0 +_0802B374: + cmp r0, #2 + beq _0802B390 + b _0802B3A4 +_0802B37A: + movs r0, #1 + strh r0, [r1, #8] + b _0802B3A4 +_0802B380: + movs r0, #0 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B3A4 +_0802B390: + bl sub_0802B954 + cmp r0, #0 + bne _0802B3A4 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000540 + bl sub_0802A73C +_0802B3A4: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B358 + + thumb_func_start sub_0802B3AC +sub_0802B3AC: @ 0x0802B3AC + push {r4, lr} + ldr r4, _0802B3C0 + ldr r0, [r4] + ldrh r0, [r0, #8] + cmp r0, #0 + beq _0802B3C4 + cmp r0, #1 + beq _0802B3D4 + b _0802B3F0 + .align 2, 0 +_0802B3C0: .4byte gUnknown_20229B0 +_0802B3C4: + movs r0, #4 + bl sub_0802AB08 + ldr r1, [r4] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B3F0 +_0802B3D4: + bl sub_0802B74C + cmp r0, #0 + bne _0802B3F0 + ldr r0, [r4] + ldrh r1, [r0, #0xe] + adds r2, r0, #0 + adds r2, #0x72 + strh r1, [r2] + adds r0, #0x4c + movs r1, #8 + strb r1, [r0] + movs r0, #0 + b _0802B3F2 +_0802B3F0: + movs r0, #1 +_0802B3F2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B3AC + + thumb_func_start sub_0802B3F8 +sub_0802B3F8: @ 0x0802B3F8 + push {lr} + movs r0, #0 + bl sub_0802AB08 + bl sub_0802B74C + cmp r0, #0 + beq _0802B40C + movs r0, #1 + b _0802B40E +_0802B40C: + movs r0, #0 +_0802B40E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B3F8 + + thumb_func_start sub_0802B414 +sub_0802B414: @ 0x0802B414 + push {r4, lr} + ldr r1, _0802B42C + ldr r0, [r1] + ldrh r0, [r0, #8] + adds r4, r1, #0 + cmp r0, #4 + bhi _0802B4CC + lsls r0, r0, #2 + ldr r1, _0802B430 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B42C: .4byte gUnknown_20229B0 +_0802B430: .4byte _0802B434 +_0802B434: @ jump table + .4byte _0802B448 @ case 0 + .4byte _0802B464 @ case 1 + .4byte _0802B474 @ case 2 + .4byte _0802B48C @ case 3 + .4byte _0802B4B0 @ case 4 +_0802B448: + 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_0802E04C + movs r0, #5 + bl sub_0802CDBC + ldr r1, [r4] + b _0802B4A0 +_0802B464: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802B4CC + movs r0, #0 + bl sub_0802AB08 + b _0802B49C +_0802B474: + bl sub_0802C400 + cmp r0, #0 + beq _0802B4CC + ldr r0, _0802B488 + movs r1, #6 + bl sub_080A8878 + b _0802B49C + .align 2, 0 +_0802B488: .4byte sub_081535C4 +_0802B48C: + ldr r0, _0802B4A8 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B4CC + bl sub_0802D704 +_0802B49C: + ldr r0, _0802B4AC + ldr r1, [r0] +_0802B4A0: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0802B4CC + .align 2, 0 +_0802B4A8: .4byte sub_081535C4 +_0802B4AC: .4byte gUnknown_20229B0 +_0802B4B0: + bl sub_0802D734 + cmp r0, #0 + bne _0802B4CC + ldr r0, _0802B4C8 + ldr r0, [r0] + adds r0, #0x4c + movs r1, #4 + strb r1, [r0] + movs r0, #0 + b _0802B4CE + .align 2, 0 +_0802B4C8: .4byte gUnknown_20229B0 +_0802B4CC: + movs r0, #1 +_0802B4CE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B414 + + thumb_func_start sub_0802B4D4 +sub_0802B4D4: @ 0x0802B4D4 + push {r4, r5, lr} + ldr r1, _0802B4EC + ldr r0, [r1] + ldrh r0, [r0, #0xa] + adds r4, r1, #0 + cmp r0, #7 + bhi _0802B5B8 + lsls r0, r0, #2 + ldr r1, _0802B4F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B4EC: .4byte gUnknown_20229B0 +_0802B4F0: .4byte _0802B4F4 +_0802B4F4: @ jump table + .4byte _0802B514 @ case 0 + .4byte _0802B520 @ case 1 + .4byte _0802B540 @ case 2 + .4byte _0802B55A @ case 3 + .4byte _0802B56C @ case 4 + .4byte _0802B574 @ case 5 + .4byte _0802B594 @ case 6 + .4byte _0802B5AE @ case 7 +_0802B514: + movs r0, #2 + bl sub_0802CDBC + bl sub_0802DAD8 + b _0802B584 +_0802B520: + bl sub_0802CDE4 + adds r5, r0, #0 + cmp r5, #0 + bne _0802B5B8 + ldr r4, _0802B53C + ldr r0, [r4] + ldrb r0, [r0, #6] + bl sub_0802DAEC + ldr r1, [r4] + strh r5, [r1, #0x3c] + b _0802B588 + .align 2, 0 +_0802B53C: .4byte gUnknown_20229B0 +_0802B540: + ldr r1, [r4] + ldrh r0, [r1, #0x3c] + adds r0, #1 + strh r0, [r1, #0x3c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x78 + bls _0802B5B8 + movs r0, #3 + bl sub_0802CDBC + ldr r1, [r4] + b _0802B588 +_0802B55A: + bl sub_0802CDE4 + cmp r0, #1 + beq _0802B5B8 + bl sub_0802DB00 + cmp r0, #1 + beq _0802B5B8 + b _0802B584 +_0802B56C: + movs r0, #9 + bl sub_0802CDBC + b _0802B584 +_0802B574: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802B5B8 + bl sub_0802BF54 + bl sub_0802D458 +_0802B584: + ldr r0, _0802B590 + ldr r1, [r0] +_0802B588: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802B5B8 + .align 2, 0 +_0802B590: .4byte gUnknown_20229B0 +_0802B594: + bl sub_0802D47C + cmp r0, #0 + bne _0802B5B8 + bl sub_0802BF64 + bl sub_0802BB94 + ldr r0, _0802B5B4 + ldr r1, [r0] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_0802B5AE: + movs r0, #0 + b _0802B5BA + .align 2, 0 +_0802B5B4: .4byte gUnknown_20229B0 +_0802B5B8: + movs r0, #1 +_0802B5BA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0802B4D4 + + thumb_func_start sub_0802B5C0 +sub_0802B5C0: @ 0x0802B5C0 + push {r4, r5, lr} + bl sub_0802BBD8 + ldr r5, _0802B5D8 + ldr r1, [r5] + ldrh r4, [r1, #0x36] + cmp r4, #0 + beq _0802B5DC + movs r0, #0 + strh r0, [r1, #0x36] + b _0802B650 + .align 2, 0 +_0802B5D8: .4byte gUnknown_20229B0 +_0802B5DC: + ldrh r0, [r1, #0xa] + cmp r0, #1 + beq _0802B608 + cmp r0, #1 + bgt _0802B5EC + cmp r0, #0 + beq _0802B5F6 + b _0802B64E +_0802B5EC: + cmp r0, #2 + beq _0802B62C + cmp r0, #3 + beq _0802B640 + b _0802B64E +_0802B5F6: + movs r0, #0 + bl sub_0802BE24 + cmp r0, #0 + beq _0802B64E + ldr r1, [r5] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_0802B608: + ldr r0, _0802B624 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802B64E + bl sub_0802BE58 + movs r0, #3 + bl sub_0802AB08 + ldr r0, _0802B628 + ldr r1, [r0] + b _0802B638 + .align 2, 0 +_0802B624: .4byte gUnknown_3002360 +_0802B628: .4byte gUnknown_20229B0 +_0802B62C: + movs r0, #1 + bl sub_0802BE24 + cmp r0, #1 + bne _0802B64E + ldr r1, [r5] +_0802B638: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802B64E +_0802B640: + movs r0, #0 + bl sub_0802BE24 + cmp r0, #1 + bne _0802B64E + ldr r0, [r5] + strh r4, [r0, #0xa] +_0802B64E: + movs r0, #1 +_0802B650: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B5C0 + + thumb_func_start sub_0802B658 +sub_0802B658: @ 0x0802B658 + push {r4, r5, r6, lr} + ldr r1, _0802B670 + ldr r0, [r1] + ldrh r0, [r0, #0xa] + adds r5, r1, #0 + cmp r0, #4 + bhi _0802B744 + lsls r0, r0, #2 + ldr r1, _0802B674 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B670: .4byte gUnknown_20229B0 +_0802B674: .4byte _0802B678 +_0802B678: @ jump table + .4byte _0802B68C @ case 0 + .4byte _0802B6B0 @ case 1 + .4byte _0802B6F4 @ case 2 + .4byte _0802B718 @ case 3 + .4byte _0802B73A @ case 4 +_0802B68C: + movs r4, #0 + ldr r0, [r5] + ldrb r0, [r0, #5] + cmp r4, r0 + bge _0802B6AC + adds r6, r5, #0 +_0802B698: + adds r0, r4, #0 + bl sub_0802DAB0 + cmp r0, #1 + beq _0802B744 + adds r4, #1 + ldr r0, [r6] + ldrb r0, [r0, #5] + cmp r4, r0 + blt _0802B698 +_0802B6AC: + ldr r1, [r5] + b _0802B710 +_0802B6B0: + movs r4, #0 + ldr r0, [r5] + ldrb r0, [r0, #5] + cmp r4, r0 + bge _0802B6E0 + adds r6, r5, #0 + movs r5, #0 +_0802B6BE: + ldr r0, [r6] + adds r0, r0, r5 + ldr r1, _0802B6EC + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #2 + bne _0802B6D4 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0802DA98 +_0802B6D4: + adds r5, #0x24 + adds r4, #1 + ldr r0, [r6] + ldrb r0, [r0, #5] + cmp r4, r0 + blt _0802B6BE +_0802B6E0: + movs r0, #1 + bl sub_0802CDBC + ldr r0, _0802B6F0 + ldr r1, [r0] + b _0802B70C + .align 2, 0 +_0802B6EC: .4byte 0x000082F4 +_0802B6F0: .4byte gUnknown_20229B0 +_0802B6F4: + ldr r1, [r5] + ldrh r0, [r1, #0x3c] + adds r0, #1 + strh r0, [r1, #0x3c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x64 + bls _0802B744 + movs r0, #3 + bl sub_0802CDBC + ldr r1, [r5] +_0802B70C: + movs r0, #0 + strh r0, [r1, #0x3c] +_0802B710: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802B744 +_0802B718: + bl sub_0802CDE4 + adds r5, r0, #0 + cmp r5, #0 + bne _0802B744 + bl sub_0802DAC4 + ldr r4, _0802B740 + ldr r0, [r4] + adds r0, #0x71 + strb r5, [r0] + bl sub_0802BE08 + ldr r1, [r4] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_0802B73A: + movs r0, #0 + b _0802B746 + .align 2, 0 +_0802B740: .4byte gUnknown_20229B0 +_0802B744: + movs r0, #1 +_0802B746: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0802B658 + + thumb_func_start sub_0802B74C +sub_0802B74C: @ 0x0802B74C + push {r4, lr} + ldr r1, _0802B768 + ldr r0, [r1] + ldrh r0, [r0, #0xa] + adds r4, r1, #0 + cmp r0, #6 + bls _0802B75C + b _0802B870 +_0802B75C: + lsls r0, r0, #2 + ldr r1, _0802B76C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B768: .4byte gUnknown_20229B0 +_0802B76C: .4byte _0802B770 +_0802B770: @ jump table + .4byte _0802B78C @ case 0 + .4byte _0802B7AC @ case 1 + .4byte _0802B7C4 @ case 2 + .4byte _0802B7F4 @ case 3 + .4byte _0802B7AC @ case 4 + .4byte _0802B7C4 @ case 5 + .4byte _0802B864 @ case 6 +_0802B78C: + 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_0802C4FC + ldr r1, [r4] + ldrh r0, [r1, #0x3e] + adds r1, #0x40 + ldrh r1, [r1] + bl sub_0802D4DC + b _0802B7E4 +_0802B7AC: + bl sub_0802D664 + adds r2, r0, #0 + cmp r2, #0 + bne _0802B870 + ldr r0, _0802B7C0 + ldr r1, [r0] + strh r2, [r1, #0x3c] + b _0802B7E6 + .align 2, 0 +_0802B7C0: .4byte gUnknown_20229B0 +_0802B7C4: + ldr r1, [r4] + ldrh r0, [r1, #0x3c] + adds r2, r0, #1 + strh r2, [r1, #0x3c] + ldr r0, _0802B7F0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0802B7E0 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb4 + bls _0802B870 +_0802B7E0: + bl sub_0802D704 +_0802B7E4: + ldr r1, [r4] +_0802B7E6: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802B870 + .align 2, 0 +_0802B7F0: .4byte gUnknown_3002360 +_0802B7F4: + bl sub_0802D734 + cmp r0, #0 + bne _0802B870 + ldr r4, _0802B840 + ldr r1, [r4] + ldrh r0, [r1, #0x3e] + adds r1, #0x40 + ldrh r1, [r1] + bl sub_0802C574 + ldr r1, [r4] + adds r2, r1, #0 + adds r2, #0x40 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0802B84C + ldrh r0, [r1, #0x3e] + ldrh r1, [r2] + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802B84C + ldr r0, [r4] + ldrh r0, [r0, #0x3e] + movs r1, #1 + bl sub_080D6018 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B844 + ldr r0, [r4] + ldrh r0, [r0, #0x3e] + bl sub_0802D574 + b _0802B856 + .align 2, 0 +_0802B840: .4byte gUnknown_20229B0 +_0802B844: + ldr r1, [r4] + movs r0, #6 + strh r0, [r1, #0xa] + b _0802B870 +_0802B84C: + ldr r4, _0802B860 + ldr r0, [r4] + ldrh r0, [r0, #0x3e] + bl sub_0802D5EC +_0802B856: + ldr r1, [r4] + movs r0, #4 + strh r0, [r1, #0xa] + b _0802B870 + .align 2, 0 +_0802B860: .4byte gUnknown_20229B0 +_0802B864: + bl sub_0802D734 + cmp r0, #0 + bne _0802B870 + movs r0, #0 + b _0802B872 +_0802B870: + movs r0, #1 +_0802B872: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B74C + + thumb_func_start sub_0802B878 +sub_0802B878: @ 0x0802B878 + push {r4, lr} + ldr r0, _0802B890 + ldr r0, [r0] + ldrh r0, [r0, #0xa] + cmp r0, #6 + bhi _0802B94C + lsls r0, r0, #2 + ldr r1, _0802B894 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B890: .4byte gUnknown_20229B0 +_0802B894: .4byte _0802B898 +_0802B898: @ jump table + .4byte _0802B8B4 @ case 0 + .4byte _0802B8B8 @ case 1 + .4byte _0802B8C2 @ case 2 + .4byte _0802B910 @ case 3 + .4byte _0802B91A @ case 4 + .4byte _0802B930 @ case 5 + .4byte _0802B942 @ case 6 +_0802B8B4: + movs r0, #4 + b _0802B91C +_0802B8B8: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802B94C + b _0802B920 +_0802B8C2: + bl sub_0802D77C + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0802B8F8 + cmp r1, #0 + bgt _0802B8DC + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0802B8E0 + b _0802B94C +_0802B8DC: + cmp r1, #1 + bne _0802B94C +_0802B8E0: + ldr r4, _0802B8F4 + ldr r0, [r4] + adds r0, #0x45 + movs r1, #1 + strb r1, [r0] + movs r0, #6 + bl sub_0802CDBC + ldr r1, [r4] + b _0802B924 + .align 2, 0 +_0802B8F4: .4byte gUnknown_20229B0 +_0802B8F8: + ldr r4, _0802B90C + ldr r0, [r4] + adds r0, #0x45 + movs r1, #2 + strb r1, [r0] + movs r0, #6 + bl sub_0802CDBC + ldr r1, [r4] + b _0802B924 + .align 2, 0 +_0802B90C: .4byte gUnknown_20229B0 +_0802B910: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802B94C + b _0802B920 +_0802B91A: + movs r0, #8 +_0802B91C: + bl sub_0802CDBC +_0802B920: + ldr r0, _0802B92C + ldr r1, [r0] +_0802B924: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802B94C + .align 2, 0 +_0802B92C: .4byte gUnknown_20229B0 +_0802B930: + bl sub_0802CDE4 + cmp r0, #0 + bne _0802B94C + ldr r0, _0802B948 + ldr r1, [r0] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_0802B942: + movs r0, #0 + b _0802B94E + .align 2, 0 +_0802B948: .4byte gUnknown_20229B0 +_0802B94C: + movs r0, #1 +_0802B94E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802B878 + + thumb_func_start sub_0802B954 +sub_0802B954: @ 0x0802B954 + push {r4, lr} + sub sp, #4 + ldr r1, _0802B970 + ldr r0, [r1] + ldrh r0, [r0, #0xa] + adds r4, r1, #0 + cmp r0, #5 + bhi _0802BA18 + lsls r0, r0, #2 + ldr r1, _0802B974 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B970: .4byte gUnknown_20229B0 +_0802B974: .4byte _0802B978 +_0802B978: @ jump table + .4byte _0802B990 @ case 0 + .4byte _0802B996 @ case 1 + .4byte _0802B9A6 @ case 2 + .4byte _0802B9BC @ case 3 + .4byte _0802B9E2 @ case 4 + .4byte _0802BA08 @ case 5 +_0802B990: + bl sub_0802D704 + b _0802B9F2 +_0802B996: + bl sub_0802D734 + cmp r0, #0 + bne _0802BA18 + movs r0, #7 + bl sub_0802CDBC + b _0802B9F2 +_0802B9A6: + bl sub_0802CDE4 + adds r2, r0, #0 + cmp r2, #0 + bne _0802BA18 + ldr r0, _0802B9B8 + ldr r1, [r0] + strh r2, [r1, #0x3c] + b _0802B9F6 + .align 2, 0 +_0802B9B8: .4byte gUnknown_20229B0 +_0802B9BC: + ldr r1, [r4] + ldrh r0, [r1, #0x3c] + adds r0, #1 + strh r0, [r1, #0x3c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x78 + bls _0802BA18 + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + b _0802B9F6 +_0802B9E2: + ldr r0, _0802BA00 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802BA18 + bl sub_0800A7F8 +_0802B9F2: + ldr r0, _0802BA04 + ldr r1, [r0] +_0802B9F6: + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802BA18 + .align 2, 0 +_0802BA00: .4byte gUnknown_2037C74 +_0802BA04: .4byte gUnknown_20229B0 +_0802BA08: + ldr r0, _0802BA14 + ldrb r0, [r0] + cmp r0, #0 + bne _0802BA18 + movs r0, #0 + b _0802BA1A + .align 2, 0 +_0802BA14: .4byte gUnknown_30031C4 +_0802BA18: + movs r0, #1 +_0802BA1A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802B954 + + thumb_func_start sub_0802BA24 +sub_0802BA24: @ 0x0802BA24 + push {r4, lr} + ldr r4, _0802BA3C + ldr r0, [r4] + ldrh r0, [r0, #0xa] + cmp r0, #1 + beq _0802BA5A + cmp r0, #1 + bgt _0802BA40 + cmp r0, #0 + beq _0802BA46 + b _0802BA6E + .align 2, 0 +_0802BA3C: .4byte gUnknown_20229B0 +_0802BA40: + cmp r0, #2 + beq _0802BA6A + b _0802BA6E +_0802BA46: + bl sub_0802D704 + movs r0, #0 + bl sub_0802DA5C + ldr r1, [r4] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0802BA6E +_0802BA5A: + bl sub_0802D734 + cmp r0, #0 + bne _0802BA6E + ldr r1, [r4] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_0802BA6A: + movs r0, #0 + b _0802BA70 +_0802BA6E: + movs r0, #1 +_0802BA70: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802BA24 + + thumb_func_start sub_0802BA78 +sub_0802BA78: @ 0x0802BA78 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + ldr r1, _0802BAAC + adds r6, r0, r1 + mov r0, sl + movs r1, #0xe + bl sub_080A8B7C + mov r8, r0 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0802BABC + cmp r0, #1 + beq _0802BAD0 + b _0802BB3C + .align 2, 0 +_0802BAAC: .4byte gUnknown_3005B68 +_0802BAB0: + bl sub_0802A814 + mov r0, sl + bl sub_080A8964 + b _0802BB3C +_0802BABC: + movs r1, #0 + adds r0, r6, #0 + adds r0, #8 +_0802BAC2: + strh r1, [r0, #4] + subs r0, #2 + cmp r0, r6 + bge _0802BAC2 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] +_0802BAD0: + mov r3, r8 + ldrb r1, [r3, #6] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0802BB4C + adds r0, r0, r4 + add r0, r8 + bl sub_0802DDA4 + movs r2, #0 + adds r5, r6, #4 + mov sb, r2 + movs r7, #0x83 + lsls r7, r7, #8 + add r7, r8 + add r4, r8 +_0802BAF2: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0802BB2C + adds r0, r2, #0 + adds r1, r4, #0 + str r2, [sp] + bl sub_0802DDC8 + ldr r2, [sp] + cmp r0, #0 + beq _0802BB2C + ldr r1, _0802BB50 + add r1, sb + adds r0, r7, #0 + bl sub_080088B8 + movs r0, #1 + strh r0, [r5] + ldrh r0, [r6, #2] + adds r0, #1 + strh r0, [r6, #2] + movs r3, #2 + ldrsh r0, [r6, r3] + ldr r2, [sp] + mov r1, r8 + ldrb r1, [r1, #5] + cmp r0, r1 + beq _0802BAB0 +_0802BB2C: + adds r5, #2 + movs r3, #0x1c + add sb, r3 + adds r7, #0x24 + adds r4, #0xc + adds r2, #1 + cmp r2, #4 + ble _0802BAF2 +_0802BB3C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802BB4C: .4byte 0x000082A8 +_0802BB50: .4byte gUnknown_20226A8 + thumb_func_end sub_0802BA78 + + thumb_func_start sub_0802BB54 +sub_0802BB54: @ 0x0802BB54 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0802BB70 + ldr r2, [r1] + movs r1, #0xe + bl sub_080A8B44 + pop {r0} + bx r0 + .align 2, 0 +_0802BB70: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BB54 + + thumb_func_start sub_0802BB74 +sub_0802BB74: @ 0x0802BB74 + ldr r0, _0802BB90 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x4a + movs r1, #0 + strh r1, [r0] + movs r0, #6 + 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 +_0802BB90: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BB74 + + thumb_func_start sub_0802BB94 +sub_0802BB94: @ 0x0802BB94 + push {r4, lr} + ldr r3, _0802BBD0 + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x4a + movs r4, #0 + movs r2, #0 + strh r2, [r1] + ldr r1, _0802BBD4 + strh r1, [r0, #0x34] + movs r1, #7 + 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_0802BC70 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BBD0: .4byte gUnknown_20229B0 +_0802BBD4: .4byte 0x000006FF + thumb_func_end sub_0802BB94 + + thumb_func_start sub_0802BBD8 +sub_0802BBD8: @ 0x0802BBD8 + push {r4, lr} + ldr r4, _0802BC30 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x46 + ldrb r0, [r0] + cmp r0, #0 + beq _0802BC28 + adds r1, #0x4a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + bl sub_0802BC3C + ldr r3, [r4] + ldrh r1, [r3, #0x34] + adds r2, r1, r0 + strh r2, [r3, #0x34] + lsls r1, r2, #0x10 + ldr r0, _0802BC34 + cmp r1, r0 + bls _0802BC0A + ldr r1, _0802BC38 + adds r0, r2, r1 + strh r0, [r3, #0x34] +_0802BC0A: + ldr r1, [r4] + ldr r2, [r1, #0x14] + str r2, [r1, #0x18] + ldrh r0, [r1, #0x34] + lsrs r0, r0, #8 + str r0, [r1, #0x14] + cmp r0, #6 + bls _0802BC28 + cmp r2, #6 + bhi _0802BC28 + ldrh r0, [r1, #0x36] + adds r0, #1 + strh r0, [r1, #0x36] + bl sub_0802BC70 +_0802BC28: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BC30: .4byte gUnknown_20229B0 +_0802BC34: .4byte 0x09FE0000 +_0802BC38: .4byte 0xFFFFF601 + thumb_func_end sub_0802BBD8 + + thumb_func_start sub_0802BC3C +sub_0802BC3C: @ 0x0802BC3C + push {lr} + ldr r0, _0802BC4C + ldr r2, [r0] + ldr r0, [r2, #0x10] + cmp r0, #0 + beq _0802BC50 + movs r0, #0 + b _0802BC66 + .align 2, 0 +_0802BC4C: .4byte gUnknown_20229B0 +_0802BC50: + ldr r3, [r2, #0x1c] + ldrh r1, [r2, #0x34] + ldr r0, _0802BC6C + cmp r1, r0 + bhi _0802BC64 + ldr r0, [r2, #0x20] + adds r0, #0x50 + str r0, [r2, #0x20] + lsrs r0, r0, #8 + adds r3, r3, r0 +_0802BC64: + adds r0, r3, #0 +_0802BC66: + pop {r1} + bx r1 + .align 2, 0 +_0802BC6C: .4byte 0x000005FF + thumb_func_end sub_0802BC3C + + thumb_func_start sub_0802BC70 +sub_0802BC70: @ 0x0802BC70 + push {r4, lr} + ldr r4, _0802BCA0 + ldr r3, [r4] + movs r0, #0 + str r0, [r3, #0x20] + adds r1, r3, #0 + adds r1, #0x4e + ldrh r0, [r1] + cmp r0, #0 + beq _0802BCB4 + subs r0, #1 + strh r0, [r1] + ldr r0, [r3, #0x6c] + cmp r0, #0 + beq _0802BD7E + bl sub_0802BD8C + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0802BCA4 + ldr r1, [r4] + b _0802BD7A + .align 2, 0 +_0802BCA0: .4byte gUnknown_20229B0 +_0802BCA4: + ldr r1, [r4] + ldr r0, [r1, #0x28] + cmp r0, #0x36 + bls _0802BCB0 + movs r0, #0x1e + b _0802BD7C +_0802BCB0: + movs r0, #0x52 + b _0802BD7C +_0802BCB4: + adds r2, r3, #0 + adds r2, #0x50 + ldrb r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0802BD08 + ldr r0, _0802BD00 + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x51 + ldrb r2, [r0] + lsls r0, r2, #3 + subs r0, r0, r2 + ldrh r1, [r1] + adds r0, r0, r1 + str r0, [r3, #0x28] + bl sub_0802BD8C + ldr r2, [r4] + ldr r3, _0802BD04 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r0, [r1] + adds r0, #2 + adds r1, r2, #0 + adds r1, #0x4e + strh r0, [r1] + adds r2, #0x50 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _0802BD76 + .align 2, 0 +_0802BD00: .4byte gUnknown_82CEEC8 +_0802BD04: .4byte gUnknown_82CEED8 +_0802BD08: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _0802BD24 + adds r1, r3, #0 + adds r1, #0x51 + ldrb r0, [r1] + cmp r0, #2 + bhi _0802BD20 + adds r0, #1 + strb r0, [r1] + b _0802BD24 +_0802BD20: + movs r0, #1 + str r0, [r3, #0x6c] +_0802BD24: + ldr r2, _0802BD84 + ldr r4, _0802BD88 + ldr r0, [r4] + mov ip, r0 + mov r3, ip + adds r3, #0x50 + ldrb r0, [r3] + movs r1, #0xf + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + mov r0, ip + adds r0, #0x51 + ldrb r2, [r0] + lsls r0, r2, #3 + subs r0, r0, r2 + ldrh r1, [r1] + adds r0, r0, r1 + mov r1, ip + str r0, [r1, #0x28] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _0802BD76 + bl sub_0802BD8C + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _0802BD6E + ldr r1, [r4] + ldr r0, [r1, #0x28] + subs r0, #5 + str r0, [r1, #0x28] +_0802BD6E: + ldr r0, [r4] + adds r0, #0x50 + movs r1, #0 + strb r1, [r0] +_0802BD76: + ldr r0, _0802BD88 + ldr r1, [r0] +_0802BD7A: + ldr r0, [r1, #0x28] +_0802BD7C: + str r0, [r1, #0x1c] +_0802BD7E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802BD84: .4byte gUnknown_82CEEC8 +_0802BD88: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BC70 + + thumb_func_start sub_0802BD8C +sub_0802BD8C: @ 0x0802BD8C + ldr r0, _0802BDA0 + ldr r2, [r0] + ldr r1, [r2, #0x24] + ldr r0, _0802BDA4 + muls r0, r1, r0 + ldr r1, _0802BDA8 + adds r0, r0, r1 + str r0, [r2, #0x24] + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0802BDA0: .4byte gUnknown_20229B0 +_0802BDA4: .4byte 0x41C64E6D +_0802BDA8: .4byte 0x00006073 + thumb_func_end sub_0802BD8C + + thumb_func_start sub_0802BDAC +sub_0802BDAC: @ 0x0802BDAC + push {lr} + ldr r0, _0802BDC8 + ldr r1, [r0] + movs r0, #1 + str r0, [r1, #0x10] + movs r0, #6 + str r0, [r1, #0x14] + ldr r0, _0802BDCC + strh r0, [r1, #0x34] + bl sub_0802BF64 + pop {r0} + bx r0 + .align 2, 0 +_0802BDC8: .4byte gUnknown_20229B0 +_0802BDCC: .4byte 0x000005FF + thumb_func_end sub_0802BDAC + + thumb_func_start sub_0802BDD0 +sub_0802BDD0: @ 0x0802BDD0 + ldr r0, _0802BDD8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bx lr + .align 2, 0 +_0802BDD8: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BDD0 + + thumb_func_start sub_0802BDDC +sub_0802BDDC: @ 0x0802BDDC + push {r4, r5, lr} + ldr r5, _0802BE00 + ldr r4, _0802BE04 + movs r3, #0 + movs r2, #0 + movs r1, #4 +_0802BDE8: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r2 + str r3, [r0] + adds r2, #0x24 + subs r1, #1 + cmp r1, #0 + bge _0802BDE8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802BE00: .4byte gUnknown_20229B0 +_0802BE04: .4byte 0x000082F8 + thumb_func_end sub_0802BDDC + + thumb_func_start sub_0802BE08 +sub_0802BE08: @ 0x0802BE08 + ldr r0, _0802BE1C + ldr r0, [r0] + ldr r1, _0802BE20 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0 + strh r2, [r1, #0x10] + ldr r0, [r0] + strh r2, [r0, #0x12] + bx lr + .align 2, 0 +_0802BE1C: .4byte gUnknown_20229B0 +_0802BE20: .4byte 0x00008398 + thumb_func_end sub_0802BE08 + + thumb_func_start sub_0802BE24 +sub_0802BE24: @ 0x0802BE24 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0802BE48 + ldr r2, [r1] + ldrb r3, [r2, #6] + lsls r1, r3, #3 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r2, r2, r1 + ldr r1, _0802BE4C + adds r2, r2, r1 + ldrh r1, [r2] + cmp r1, r0 + beq _0802BE50 + movs r0, #0 + b _0802BE52 + .align 2, 0 +_0802BE48: .4byte gUnknown_20229B0 +_0802BE4C: .4byte 0x000082F4 +_0802BE50: + movs r0, #1 +_0802BE52: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802BE24 + + thumb_func_start sub_0802BE58 +sub_0802BE58: @ 0x0802BE58 + ldr r0, _0802BE78 + ldr r0, [r0] + ldr r1, _0802BE7C + 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, #1 + strh r0, [r1, #0x10] + bx lr + .align 2, 0 +_0802BE78: .4byte gUnknown_20229B0 +_0802BE7C: .4byte 0x00008398 + thumb_func_end sub_0802BE58 + + thumb_func_start sub_0802BE80 +sub_0802BE80: @ 0x0802BE80 + push {r4, lr} + ldr r0, _0802BEA8 + ldr r2, [r0] + ldr r0, _0802BEAC + adds r3, r2, r0 + ldr r1, [r3] + ldrh r0, [r1, #0x10] + strh r0, [r1, #0x12] + ldr r0, [r3] + movs r4, #2 + 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 +_0802BEA8: .4byte gUnknown_20229B0 +_0802BEAC: .4byte 0x00008398 + thumb_func_end sub_0802BE80 + + thumb_func_start sub_0802BEB0 +sub_0802BEB0: @ 0x0802BEB0 + ldr r0, _0802BEC8 + ldr r0, [r0] + ldr r1, _0802BECC + adds r0, 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 +_0802BEC8: .4byte gUnknown_20229B0 +_0802BECC: .4byte 0x00008398 + thumb_func_end sub_0802BEB0 + + thumb_func_start sub_0802BED0 +sub_0802BED0: @ 0x0802BED0 + push {r4, r5, lr} + ldr r4, _0802BF2C + ldr r1, [r4] + ldr r0, [r1, #0x5c] + cmp r0, #0 + beq _0802BF10 + ldr r0, [r1, #0x78] + bl sub_0802DA5C + ldr r1, [r4] + movs r5, #0 + str r5, [r1, #0x5c] + adds r0, r1, #0 + adds r0, #0x4d + ldrb r0, [r0] + cmp r0, #0 + beq _0802BF10 + adds r0, r1, #0 + adds r0, #0x71 + ldrb r0, [r0] + bl sub_0802D9C4 + ldr r1, _0802BF30 + subs r0, #2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080A306C + ldr r0, [r4] + adds r0, #0x4d + strb r5, [r0] +_0802BF10: + ldr r0, _0802BF2C + ldr r0, [r0] + adds r0, #0x74 + ldrh r0, [r0] + bl sub_0802DA6C + bl sub_0802BF74 + bl sub_0802BF34 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802BF2C: .4byte gUnknown_20229B0 +_0802BF30: .4byte gUnknown_82CEEE0 + thumb_func_end sub_0802BED0 + + thumb_func_start sub_0802BF34 +sub_0802BF34: @ 0x0802BF34 + push {lr} + ldr r0, _0802BF50 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x46 + ldrb r0, [r0] + cmp r0, #0 + beq _0802BF4A + ldr r0, [r1, #0x14] + bl sub_0802D994 +_0802BF4A: + pop {r0} + bx r0 + .align 2, 0 +_0802BF50: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BF34 + + thumb_func_start sub_0802BF54 +sub_0802BF54: @ 0x0802BF54 + ldr r0, _0802BF60 + ldr r0, [r0] + adds r0, #0x46 + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0802BF60: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BF54 + + thumb_func_start sub_0802BF64 +sub_0802BF64: @ 0x0802BF64 + ldr r0, _0802BF70 + ldr r0, [r0] + adds r0, #0x46 + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_0802BF70: .4byte gUnknown_20229B0 + thumb_func_end sub_0802BF64 + + thumb_func_start sub_0802BF74 +sub_0802BF74: @ 0x0802BF74 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r6, #0 + ldr r2, _0802BFB0 + ldr r0, [r2] + ldrb r0, [r0, #5] + mov sb, r0 + movs r5, #0 + cmp r6, sb + bge _0802C054 + mov sl, r2 + mov r8, r5 + movs r7, #0 +_0802BF96: + mov r0, sl + ldr r3, [r0] + adds r1, r3, r7 + ldr r2, _0802BFB4 + adds r0, r1, r2 + ldrh r2, [r0] + cmp r2, #1 + beq _0802BFC8 + cmp r2, #1 + bgt _0802BFB8 + cmp r2, #0 + beq _0802BFBE + b _0802C048 + .align 2, 0 +_0802BFB0: .4byte gUnknown_20229B0 +_0802BFB4: .4byte 0x000082F4 +_0802BFB8: + cmp r2, #2 + beq _0802C02C + b _0802C048 +_0802BFBE: + adds r0, r5, #0 + movs r1, #0 + bl sub_0802D978 + b _0802C048 +_0802BFC8: + ldr r0, _0802C01C + adds r4, r1, r0 + ldrh r0, [r4] + cmp r0, #1 + bne _0802BFEA + ldr r0, _0802C020 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x9a + add r1, r8 + str r1, [sp] + ldrh r1, [r0] + mov ip, r1 + ldr r0, [sp] + ldrh r0, [r0] + cmp ip, r0 + beq _0802C012 +_0802BFEA: + ldrb r3, [r3, #6] + cmp r5, r3 + bne _0802BFF2 + strh r2, [r4] +_0802BFF2: + orrs r6, r2 + mov r1, sl + ldr r2, [r1] + ldr r1, _0802C024 + adds r0, r2, r1 + adds r0, r0, r7 + ldr r1, _0802C028 + str r1, [r0] + adds r1, r2, #0 + adds r1, #0x9a + add r1, r8 + adds r2, r2, r7 + ldr r0, _0802C020 + adds r2, r2, r0 + ldrh r0, [r2] + strh r0, [r1] +_0802C012: + adds r0, r5, #0 + bl sub_0802C08C + b _0802C048 + .align 2, 0 +_0802C01C: .4byte 0x000082F6 +_0802C020: .4byte 0x000082F2 +_0802C024: .4byte 0x000082E8 +_0802C028: .4byte 0x7FFFFFFF +_0802C02C: + ldr r0, _0802C068 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #2 + beq _0802C048 + ldrb r3, [r3, #6] + cmp r5, r3 + bne _0802C03E + strh r2, [r1] +_0802C03E: + orrs r6, r2 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_0802DA80 +_0802C048: + movs r1, #2 + add r8, r1 + adds r7, #0x24 + adds r5, #1 + cmp r5, sb + blt _0802BF96 +_0802C054: + movs r0, #2 + ands r0, r6 + cmp r0, #0 + beq _0802C06C + movs r0, #0x83 + lsls r0, r0, #1 + bl sub_080A306C + b _0802C07A + .align 2, 0 +_0802C068: .4byte 0x000082F6 +_0802C06C: + movs r0, #1 + ands r6, r0 + cmp r6, #0 + beq _0802C07A + movs r0, #0xa + bl sub_080A306C +_0802C07A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802BF74 + + thumb_func_start sub_0802C08C +sub_0802C08C: @ 0x0802C08C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _0802C0B8 + ldr r2, [r0] + ldr r0, [r2, #0x68] + cmp r0, #0 + bne _0802C126 + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _0802C0BC + adds r0, r0, r1 + adds r5, r2, r0 + ldr r1, [r5, #4] + ldr r0, _0802C0C0 + cmp r1, r0 + beq _0802C0C4 + adds r0, r1, #1 + str r0, [r5, #4] + adds r3, r0, #0 + b _0802C0DC + .align 2, 0 +_0802C0B8: .4byte gUnknown_20229B0 +_0802C0BC: .4byte 0x000082E4 +_0802C0C0: .4byte 0x7FFFFFFF +_0802C0C4: + adds r0, r2, #0 + adds r0, #0x4a + ldrh r1, [r0] + ldrh r0, [r5, #0xe] + subs r3, r1, r0 + ldr r0, _0802C0FC + cmp r3, r0 + ble _0802C0DA + ldr r0, _0802C100 + adds r3, r3, r0 + adds r3, r3, r1 +_0802C0DA: + str r3, [r5, #4] +_0802C0DC: + cmp r3, #3 + ble _0802C126 + subs r3, #4 + cmp r3, #0x2f + bgt _0802C108 + ldr r2, _0802C104 + ldrh r1, [r5, #0xc] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r3, r0 + adds r0, r0, r2 + movs r4, #0 + ldrsb r4, [r0, r4] + b _0802C10A + .align 2, 0 +_0802C0FC: .4byte 0x0000FDE7 +_0802C100: .4byte 0xFFFF0218 +_0802C104: .4byte gUnknown_82CEEE8 +_0802C108: + movs r4, #0 +_0802C10A: + adds r1, r4, #0 + adds r0, r6, #0 + bl sub_0802D978 + cmp r4, #0 + bne _0802C124 + ldr r0, _0802C12C + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r6, r0 + bne _0802C124 + bl sub_0802BEB0 +_0802C124: + str r4, [r5] +_0802C126: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802C12C: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C08C + + thumb_func_start sub_0802C130 +sub_0802C130: @ 0x0802C130 + push {r4, r5, lr} + ldr r5, _0802C15C + ldr r1, [r5] + ldr r0, [r1, #0x14] + cmp r0, #8 + bne _0802C1C2 + ldr r0, [r1, #0x18] + cmp r0, #7 + bne _0802C1C2 + ldr r4, [r1, #0x58] + cmp r4, #0 + bne _0802C160 + bl sub_0802C474 + ldr r0, [r5] + str r4, [r0, #0x54] + movs r1, #1 + str r1, [r0, #0x58] + adds r0, #0x71 + strb r4, [r0] + b _0802C1C2 + .align 2, 0 +_0802C15C: .4byte gUnknown_20229B0 +_0802C160: + ldr r0, [r1, #0x54] + cmp r0, #5 + bne _0802C174 + ldrh r0, [r1, #0xc] + adds r0, #1 + strh r0, [r1, #0xc] + ldrh r0, [r1, #0xc] + bl sub_0802C494 + b _0802C178 +_0802C174: + movs r0, #0 + strh r0, [r1, #0xc] +_0802C178: + ldr r4, _0802C224 + ldr r1, [r4] + ldr r0, [r1, #0x54] + cmp r0, #1 + ble _0802C192 + movs r0, #1 + str r0, [r1, #0x64] + adds r0, r1, #0 + adds r0, #0x86 + adds r1, #0x81 + movs r2, #5 + bl memcpy +_0802C192: + bl sub_0802C474 + ldr r0, [r4] + movs r2, #0 + str r2, [r0, #0x54] + movs r1, #1 + 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, _0802C228 + cmp r1, r0 + bhi _0802C1B6 + adds r0, r1, #1 + strh r0, [r2] +_0802C1B6: + movs r0, #0xa + bl sub_0802C37C + movs r0, #3 + bl sub_0802AB08 +_0802C1C2: + ldr r4, _0802C224 + ldr r0, [r4] + ldr r0, [r0, #0x64] + cmp r0, #0 + beq _0802C1F8 + bl sub_0802C30C + cmp r0, #1 + beq _0802C1DC + ldr r0, [r4] + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _0802C1F8 +_0802C1DC: + ldr r0, [r4] + adds r0, #0x86 + bl sub_0802C430 + bl sub_0802C484 + bl sub_0802C37C + movs r0, #3 + bl sub_0802AB08 + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x64] +_0802C1F8: + ldr r4, _0802C224 + ldr r0, [r4] + ldr r0, [r0, #0x58] + cmp r0, #0 + beq _0802C21E + bl sub_0802C3A4 + adds r2, r0, #0 + ldr r1, [r4] + ldr r0, [r1, #0x54] + cmp r2, r0 + ble _0802C21E + str r2, [r1, #0x54] + adds r0, r1, #0 + adds r0, #0x81 + adds r1, #0x7c + movs r2, #5 + bl memcpy +_0802C21E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802C224: .4byte gUnknown_20229B0 +_0802C228: .4byte 0x0000270E + thumb_func_end sub_0802C130 + + thumb_func_start sub_0802C22C +sub_0802C22C: @ 0x0802C22C + push {r4, r5, lr} + ldr r5, _0802C260 + ldr r1, [r5] + ldr r0, [r1, #0x14] + cmp r0, #6 + bne _0802C276 + ldr r4, _0802C264 + adds r0, r1, r4 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #0 + bne _0802C276 + ldrh r0, [r1, #0x12] + cmp r0, #1 + bne _0802C26C + bl sub_0802BDD0 + adds r1, r0, #0 + cmp r1, #1 + bne _0802C26C + ldr r0, [r5] + adds r0, r0, r4 + ldr r0, [r0] + str r1, [r0, #0x14] + b _0802C276 + .align 2, 0 +_0802C260: .4byte gUnknown_20229B0 +_0802C264: .4byte 0x00008398 +_0802C268: + movs r0, #0 + b _0802C2BE +_0802C26C: + bl sub_0802BE80 + movs r0, #3 + bl sub_0802AB08 +_0802C276: + ldr r0, _0802C2C4 + ldr r1, [r0] + ldr r0, [r1, #0x14] + cmp r0, #7 + bne _0802C29C + ldr r0, [r1, #0x18] + cmp r0, #6 + bne _0802C29C + ldr r2, _0802C2C8 + adds r0, r1, r2 + ldr r1, [r0] + ldrh r0, [r1, #0x10] + cmp r0, #2 + beq _0802C29C + movs r0, #1 + str r0, [r1, #0x14] + movs r0, #3 + bl sub_0802AB08 +_0802C29C: + movs r2, #0 + ldr r0, _0802C2C4 + ldr r0, [r0] + ldrb r1, [r0, #5] + cmp r2, r1 + bge _0802C2BC + adds r3, r1, #0 + ldr r4, _0802C2CC + adds r1, r0, r4 +_0802C2AE: + ldrh r0, [r1] + cmp r0, #2 + beq _0802C268 + adds r1, #0x24 + adds r2, #1 + cmp r2, r3 + blt _0802C2AE +_0802C2BC: + movs r0, #1 +_0802C2BE: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0802C2C4: .4byte gUnknown_20229B0 +_0802C2C8: .4byte 0x00008398 +_0802C2CC: .4byte 0x000082F4 + thumb_func_end sub_0802C22C + + thumb_func_start sub_0802C2D0 +sub_0802C2D0: @ 0x0802C2D0 + push {r4, lr} + ldr r0, _0802C304 + ldr r0, [r0] + ldrb r3, [r0, #5] + movs r4, #0 + cmp r4, r3 + bge _0802C2F4 + ldr r1, _0802C308 + adds r2, r0, r1 + adds r1, r3, #0 +_0802C2E4: + ldr r0, [r2] + cmp r0, #0 + beq _0802C2EC + adds r4, #1 +_0802C2EC: + adds r2, #0x24 + subs r1, #1 + cmp r1, #0 + bne _0802C2E4 +_0802C2F4: + movs r0, #0 + cmp r4, r3 + bne _0802C2FC + movs r0, #1 +_0802C2FC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0802C304: .4byte gUnknown_20229B0 +_0802C308: .4byte 0x000082F8 + thumb_func_end sub_0802C2D0 + + thumb_func_start sub_0802C30C +sub_0802C30C: @ 0x0802C30C + push {r4, lr} + movs r2, #0 + ldr r0, _0802C32C + ldr r0, [r0] + ldrb r1, [r0, #5] + cmp r2, r1 + bge _0802C33C + adds r3, r1, #0 + ldr r4, _0802C330 + adds r1, r0, r4 +_0802C320: + ldr r0, [r1] + cmp r0, #1 + beq _0802C334 + movs r0, #0 + b _0802C33E + .align 2, 0 +_0802C32C: .4byte gUnknown_20229B0 +_0802C330: .4byte 0x000082F8 +_0802C334: + adds r1, #0x24 + adds r2, #1 + cmp r2, r3 + blt _0802C320 +_0802C33C: + movs r0, #1 +_0802C33E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802C30C + + thumb_func_start sub_0802C344 +sub_0802C344: @ 0x0802C344 + push {lr} + ldr r0, _0802C358 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _0802C35C +_0802C354: + movs r0, #0 + b _0802C378 + .align 2, 0 +_0802C358: .4byte gUnknown_20229B0 +_0802C35C: + movs r2, #1 + ldrb r0, [r1, #5] + cmp r2, r0 + bge _0802C376 + adds r3, r0, #0 + adds r1, #0x92 +_0802C368: + ldrh r0, [r1] + cmp r0, #1 + beq _0802C354 + adds r1, #2 + adds r2, #1 + cmp r2, r3 + blt _0802C368 +_0802C376: + movs r0, #1 +_0802C378: + pop {r1} + bx r1 + thumb_func_end sub_0802C344 + + thumb_func_start sub_0802C37C +sub_0802C37C: @ 0x0802C37C + push {lr} + ldr r1, _0802C39C + ldr r2, [r1] + ldr r1, [r2, #0x78] + adds r1, r1, r0 + str r1, [r2, #0x78] + movs r0, #1 + str r0, [r2, #0x5c] + ldr r0, _0802C3A0 + cmp r1, r0 + bls _0802C396 + adds r0, #1 + str r0, [r2, #0x78] +_0802C396: + pop {r0} + bx r0 + .align 2, 0 +_0802C39C: .4byte gUnknown_20229B0 +_0802C3A0: .4byte 0x00018695 + thumb_func_end sub_0802C37C + + thumb_func_start sub_0802C3A4 +sub_0802C3A4: @ 0x0802C3A4 + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r1, _0802C3DC + ldr r0, [r1] + ldrb r4, [r0, #5] + movs r2, #0 + cmp r5, r4 + bge _0802C3F6 + mov ip, r1 + movs r3, #0 + ldr r7, _0802C3E0 + movs r6, #0x1e + rsbs r6, r6, #0 +_0802C3BE: + mov r0, ip + ldr r1, [r0] + adds r0, r1, r7 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, r6 + bne _0802C3E4 + adds r0, r1, #0 + adds r0, #0x7c + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + adds r5, #1 + b _0802C3EE + .align 2, 0 +_0802C3DC: .4byte gUnknown_20229B0 +_0802C3E0: .4byte 0x000082E4 +_0802C3E4: + adds r0, r1, #0 + adds r0, #0x7c + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0] +_0802C3EE: + adds r3, #0x24 + adds r2, #1 + cmp r2, r4 + blt _0802C3BE +_0802C3F6: + adds r0, r5, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802C3A4 + + thumb_func_start sub_0802C400 +sub_0802C400: @ 0x0802C400 + push {lr} + movs r2, #0 + ldr r1, _0802C424 + ldr r3, _0802C428 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0802C41C + ldr r3, _0802C42C + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0802C41C + movs r2, #1 +_0802C41C: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_0802C424: .4byte gUnknown_30050A0 +_0802C428: .4byte 0x0000069E +_0802C42C: .4byte 0x000008D2 + thumb_func_end sub_0802C400 + + thumb_func_start sub_0802C430 +sub_0802C430: @ 0x0802C430 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + ldr r6, _0802C470 + movs r5, #1 +_0802C43E: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0802C44E + adds r0, r5, #0 + lsls r0, r1 + orrs r2, r0 + adds r3, #1 +_0802C44E: + adds r1, #1 + cmp r1, #4 + ble _0802C43E + ldr r0, [r6] + adds r0, #0x71 + strb r2, [r0] + cmp r2, #0 + beq _0802C466 + ldr r0, [r6] + adds r0, #0x4d + movs r1, #1 + strb r1, [r0] +_0802C466: + adds r0, r3, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0802C470: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C430 + + thumb_func_start sub_0802C474 +sub_0802C474: @ 0x0802C474 + ldr r0, _0802C480 + ldr r0, [r0] + adds r0, #0x44 + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0802C480: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C474 + + thumb_func_start sub_0802C484 +sub_0802C484: @ 0x0802C484 + ldr r1, _0802C490 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0802C490: .4byte gUnknown_82CEF78 + thumb_func_end sub_0802C484 + + thumb_func_start sub_0802C494 +sub_0802C494: @ 0x0802C494 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _0802C4AC + ldr r0, [r0] + ldrh r2, [r0, #0xe] + cmp r1, r2 + bls _0802C4A6 + strh r1, [r0, #0xe] +_0802C4A6: + pop {r0} + bx r0 + .align 2, 0 +_0802C4AC: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C494 + + thumb_func_start sub_0802C4B0 +sub_0802C4B0: @ 0x0802C4B0 + push {lr} + ldr r0, _0802C4C4 + ldr r0, [r0] + ldr r1, _0802C4C8 + ldr r2, [r0, #0x78] + ldr r0, [r1] + cmp r2, r0 + bhs _0802C4CC + movs r0, #0 + b _0802C4CE + .align 2, 0 +_0802C4C4: .4byte gUnknown_20229B0 +_0802C4C8: .4byte gUnknown_82CEFA0 +_0802C4CC: + movs r0, #1 +_0802C4CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802C4B0 + + thumb_func_start sub_0802C4D4 +sub_0802C4D4: @ 0x0802C4D4 + push {r4, lr} + bl sub_0802C50C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0802C52C + lsls r0, r0, #0x10 + lsrs r0, r0, #4 + ldr r1, _0802C4F8 + ands r4, r1 + orrs r0, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0802C4F8: .4byte 0x00000FFF + thumb_func_end sub_0802C4D4 + + thumb_func_start sub_0802C4FC +sub_0802C4FC: @ 0x0802C4FC + lsls r0, r0, #0x10 + lsrs r3, r0, #0x1c + strh r3, [r2] + lsls r0, r0, #4 + lsrs r0, r0, #0x14 + strh r0, [r1] + bx lr + .align 2, 0 + thumb_func_end sub_0802C4FC + + thumb_func_start sub_0802C50C +sub_0802C50C: @ 0x0802C50C + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + ldr r0, _0802C528 + lsrs r1, r1, #0xf + adds r1, r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0802C528: .4byte gUnknown_82CEF90 + thumb_func_end sub_0802C50C + + thumb_func_start sub_0802C52C +sub_0802C52C: @ 0x0802C52C + push {r4, r5, r6, lr} + movs r5, #0 + movs r4, #0 + ldr r3, _0802C560 + ldr r0, [r3] + ldr r2, _0802C564 + ldr r1, [r0, #0x78] + ldr r0, [r2] + cmp r1, r0 + blo _0802C568 + ldr r5, [r2, #4] + adds r6, r3, #0 + adds r3, r2, #4 +_0802C546: + adds r3, #8 + adds r2, #8 + adds r4, #1 + cmp r4, #4 + bhi _0802C568 + ldr r0, [r6] + ldr r1, [r0, #0x78] + ldr r0, [r2] + cmp r1, r0 + blo _0802C568 + ldr r5, [r3] + b _0802C546 + .align 2, 0 +_0802C560: .4byte gUnknown_20229B0 +_0802C564: .4byte gUnknown_82CEFA0 +_0802C568: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802C52C + + thumb_func_start sub_0802C574 +sub_0802C574: @ 0x0802C574 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + b _0802C586 +_0802C580: + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0802C586: + cmp r4, #0 + beq _0802C598 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D6018 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802C580 +_0802C598: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0802C574 + + thumb_func_start sub_0802C5A0 +sub_0802C5A0: @ 0x0802C5A0 + push {lr} + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802C5A0 + + thumb_func_start sub_0802C5B0 +sub_0802C5B0: @ 0x0802C5B0 + ldr r0, _0802C5B8 + ldr r0, [r0] + ldrb r0, [r0, #6] + bx lr + .align 2, 0 +_0802C5B8: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C5B0 + + thumb_func_start sub_0802C5BC +sub_0802C5BC: @ 0x0802C5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802C5D4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0802C5D8 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + bx lr + .align 2, 0 +_0802C5D4: .4byte gUnknown_20229B0 +_0802C5D8: .4byte 0x000082A8 + thumb_func_end sub_0802C5BC + + thumb_func_start sub_0802C5DC +sub_0802C5DC: @ 0x0802C5DC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0802C5F8 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + movs r1, #0x83 + lsls r1, r1, #8 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0802C5F8: .4byte gUnknown_20229B0 + thumb_func_end sub_0802C5DC + + thumb_func_start sub_0802C5FC +sub_0802C5FC: @ 0x0802C5FC + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0802A8F4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mvns r0, r0 + lsrs r0, r0, #0x1f + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802C5FC + + thumb_func_start sub_0802C614 +sub_0802C614: @ 0x0802C614 + push {r4, r5, lr} + movs r5, #0 +_0802C618: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0802C648 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _0802C650 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0802C5FC + cmp r0, #0 + beq _0802C650 + ldr r1, _0802C64C + movs r0, #1 + b _0802C65A + .align 2, 0 +_0802C648: .4byte gUnknown_2024190 +_0802C64C: .4byte gUnknown_2037290 +_0802C650: + adds r5, #1 + cmp r5, #5 + ble _0802C618 + ldr r1, _0802C664 + movs r0, #0 +_0802C65A: + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802C664: .4byte gUnknown_2037290 + thumb_func_end sub_0802C614 + + thumb_func_start sub_0802C668 +sub_0802C668: @ 0x0802C668 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r4, #0 + ldr r5, _0802C6A8 +_0802C670: + adds r0, r5, #0 + bl sub_08034388 + adds r5, #8 + adds r4, #1 + cmp r4, #4 + bls _0802C670 + movs r4, #0 + ldr r5, _0802C6AC +_0802C682: + adds r0, r5, #0 + bl sub_0800845C + adds r5, #8 + adds r4, #1 + cmp r4, #1 + bls _0802C682 + movs r0, #5 + bl sub_0800851C + strb r0, [r6, #0xe] + movs r0, #6 + bl sub_0800851C + strb r0, [r6, #0xf] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802C6A8: .4byte gUnknown_82CF694 +_0802C6AC: .4byte gUnknown_82CF6BC + thumb_func_end sub_0802C668 + + thumb_func_start sub_0802C6B0 +sub_0802C6B0: @ 0x0802C6B0 + push {lr} + movs r2, #0 + movs r1, #7 + adds r0, #0x3c +_0802C6B8: + strh r2, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _0802C6B8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802C6B0 + + thumb_func_start sub_0802C6C8 +sub_0802C6C8: @ 0x0802C6C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + mov sb, r0 + adds r7, r1, #0 + ldr r0, [sp, #0x54] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x28] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #0x2c] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r1, sp + ldr r0, _0802C71C + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + mov r8, r0 + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BC8 + mov sl, r0 + bl sub_0802C5B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r6, r0 + bne _0802C720 + movs r0, #3 + b _0802C726 + .align 2, 0 +_0802C71C: .4byte gUnknown_82CF6CC +_0802C720: + adds r0, r6, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0802C726: + str r0, [sp, #0x30] + mov r1, r8 + cmp r1, #0 + beq _0802C7E8 + mov r2, sl + cmp r2, #0 + beq _0802C7E8 + ldrh r2, [r7] + lsls r0, r2, #3 + ldr r1, _0802C7D4 + adds r0, r0, r1 + ldr r3, [r7, #8] + mov r1, r8 + bl sub_08034480 + mov r3, r8 + str r3, [sp, #0x18] + adds r4, r6, #0 + add r0, sp, #0x18 + ldr r5, _0802C7D8 + lsls r1, r4, #0x10 + movs r2, #0x80 + lsls r2, r2, #4 + orrs r1, r2 + str r1, [r0, #4] + bl sub_08008210 + ldrh r0, [r7] + ldr r1, [r7, #4] + ldr r2, [r7, #8] + bl sub_0806E1CC + str r0, [sp, #0x20] + add r0, sp, #0x20 + ldr r1, [r0, #4] + ands r1, r5 + orrs r1, r4 + str r1, [r0, #4] + bl sub_080343E4 + mov r0, r8 + bl sub_08000BF0 + mov r0, sl + bl sub_08000BF0 + mov r1, sp + mov r0, sp + ldrh r0, [r0] + adds r0, r0, r6 + strh r0, [r1] + mov r0, sp + ldrh r0, [r0, #2] + adds r0, r0, r6 + strh r0, [r1, #2] + ldr r4, [sp, #0x28] + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + ldr r0, [sp, #0x2c] + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + mov r0, sp + ldr r3, [sp, #0x30] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0802C7E8 + lsls r0, r6, #2 + ldr r2, _0802C7DC + add r2, sb + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802C7E0 + adds r0, r0, r1 + str r0, [r2] + ldr r0, _0802C7E4 + add r0, sb + adds r0, r0, r6 + add r1, sp, #0x30 + ldrb r1, [r1] + strb r1, [r0] + b _0802C7F4 + .align 2, 0 +_0802C7D4: .4byte gUnknown_82D4CA8 +_0802C7D8: .4byte 0xFFFF0000 +_0802C7DC: .4byte 0x000081A8 +_0802C7E0: .4byte gUnknown_20205AC +_0802C7E4: .4byte 0x000081FC +_0802C7E8: + lsls r0, r6, #2 + ldr r1, _0802C804 + add r1, sb + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_0802C7F4: + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802C804: .4byte 0x000081A8 + thumb_func_end sub_0802C6C8 + + thumb_func_start sub_0802C808 +sub_0802C808: @ 0x0802C808 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r6, r1, #2 + ldr r0, _0802C860 + adds r5, r4, r0 + adds r5, r5, r6 + ldr r0, [r5] + bl sub_0802C6B0 + ldr r2, [r5] + ldr r0, _0802C864 + adds r4, r4, r0 + adds r4, r4, r6 + ldr r1, [r4] + ldr r0, _0802C868 + subs r1, r1, r0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r1, r0, #8 + adds r0, r0, r1 + lsls r1, r0, #0x10 + adds r0, r0, r1 + rsbs r0, r0, #0 + asrs r0, r0, #2 + strh r0, [r2, #0x3c] + ldr r1, [r5] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + movs r0, #0x60 + strh r0, [r1, #0x22] + ldr r0, [r5] + ldr r1, _0802C86C + str r1, [r0, #0x1c] + movs r1, #1 + bl sub_08007EC0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802C860: .4byte 0x000081BC +_0802C864: .4byte 0x000081A8 +_0802C868: .4byte gUnknown_20205AC +_0802C86C: .4byte sub_0802C870 + thumb_func_end sub_0802C808 + + thumb_func_start sub_0802C870 +sub_0802C870: @ 0x0802C870 + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _0802C89C + cmp r0, #1 + bgt _0802C886 + cmp r0, #0 + beq _0802C88C + b _0802C8DA +_0802C886: + cmp r0, #2 + beq _0802C8BC + b _0802C8DA +_0802C88C: + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0802C8DA + b _0802C8CA +_0802C89C: + ldrh r1, [r2, #0x22] + subs r1, #1 + strh r1, [r2, #0x22] + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x48 + bgt _0802C8DA + movs r0, #0x48 + strh r0, [r2, #0x22] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + b _0802C8DA +_0802C8BC: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2f + ble _0802C8DA +_0802C8CA: + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldr r0, _0802C8E0 + str r0, [r2, #0x1c] +_0802C8DA: + pop {r0} + bx r0 + .align 2, 0 +_0802C8E0: .4byte sub_08007140 + thumb_func_end sub_0802C870 + + thumb_func_start sub_0802C8E4 +sub_0802C8E4: @ 0x0802C8E4 + push {lr} + lsls r1, r1, #2 + ldr r2, _0802C904 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r2, [r0] + ldr r1, _0802C908 + str r1, [r2, #0x1c] + movs r1, #0 + strh r1, [r2, #0x26] + ldr r0, [r0] + bl sub_0802C6B0 + pop {r0} + bx r0 + .align 2, 0 +_0802C904: .4byte 0x000081A8 +_0802C908: .4byte sub_0802C934 + thumb_func_end sub_0802C8E4 + + thumb_func_start sub_0802C90C +sub_0802C90C: @ 0x0802C90C + push {lr} + movs r2, #0 + lsls r1, r1, #2 + ldr r3, _0802C92C + adds r0, r0, r3 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + ldr r0, _0802C930 + cmp r1, r0 + bne _0802C924 + movs r2, #1 +_0802C924: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_0802C92C: .4byte 0x000081A8 +_0802C930: .4byte sub_0802C934 + thumb_func_end sub_0802C90C + + thumb_func_start sub_0802C934 +sub_0802C934: @ 0x0802C934 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0802C960 + ldrh r0, [r2, #0x32] + adds r0, #1 + strh r0, [r2, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0802C958 + movs r0, #2 + b _0802C95A +_0802C958: + ldr r0, _0802C974 +_0802C95A: + strh r0, [r2, #0x26] + movs r0, #0 + strh r0, [r2, #0x30] +_0802C960: + movs r1, #0x32 + ldrsh r0, [r2, r1] + cmp r0, #0xc + ble _0802C970 + movs r0, #0 + strh r0, [r2, #0x26] + ldr r0, _0802C978 + str r0, [r2, #0x1c] +_0802C970: + pop {r0} + bx r0 + .align 2, 0 +_0802C974: .4byte 0x0000FFFE +_0802C978: .4byte sub_08007140 + thumb_func_end sub_0802C934 + + thumb_func_start sub_0802C97C +sub_0802C97C: @ 0x0802C97C + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #2 + ldr r0, _0802C99C + adds r4, r4, r0 + adds r4, r4, r1 + ldr r0, [r4] + bl sub_0802C6B0 + ldr r1, [r4] + ldr r0, _0802C9A0 + str r0, [r1, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802C99C: .4byte 0x000081A8 +_0802C9A0: .4byte sub_0802C9FC + thumb_func_end sub_0802C97C + + thumb_func_start sub_0802C9A4 +sub_0802C9A4: @ 0x0802C9A4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0802C9E8 + movs r1, #5 + rsbs r1, r1, #0 + mov ip, r1 + ldr r1, _0802C9F0 + adds r3, r4, r1 + ldr r7, _0802C9F4 + ldr r6, _0802C9F8 + movs r5, #0xa + adds r4, r0, #0 +_0802C9C6: + ldr r2, [r3] + ldr r0, [r2, #0x1c] + cmp r0, r7 + bne _0802C9E0 + adds r2, #0x3e + ldrb r1, [r2] + mov r0, ip + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + str r6, [r0, #0x1c] + adds r0, #0x43 + strb r5, [r0] +_0802C9E0: + adds r3, #4 + subs r4, #1 + cmp r4, #0 + bne _0802C9C6 +_0802C9E8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802C9F0: .4byte 0x000081A8 +_0802C9F4: .4byte sub_0802C9FC +_0802C9F8: .4byte sub_08007140 + thumb_func_end sub_0802C9A4 + + thumb_func_start sub_0802C9FC +sub_0802C9FC: @ 0x0802C9FC + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0802CA2A + movs r0, #0 + strh r0, [r3, #0x2e] + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0802CA2A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802C9FC + + thumb_func_start sub_0802CA30 +sub_0802CA30: @ 0x0802CA30 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r3 + bge _0802CA5A + ldr r0, _0802CA60 + adds r5, r4, r0 + subs r0, #0x54 + adds r4, r4, r0 +_0802CA4A: + ldm r4!, {r0} + adds r1, r5, r2 + ldrb r1, [r1] + adds r0, #0x43 + strb r1, [r0] + adds r2, #1 + cmp r2, r3 + blt _0802CA4A +_0802CA5A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802CA60: .4byte 0x000081FC + thumb_func_end sub_0802CA30 + + thumb_func_start sub_0802CA64 +sub_0802CA64: @ 0x0802CA64 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #2 + ldr r0, _0802CA84 + adds r4, r4, r0 + adds r4, r4, r1 + ldr r0, [r4] + bl sub_0802C6B0 + ldr r1, [r4] + ldr r0, _0802CA88 + str r0, [r1, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802CA84: .4byte 0x000081A8 +_0802CA88: .4byte sub_0802CAC8 + thumb_func_end sub_0802CA64 + + thumb_func_start sub_0802CA8C +sub_0802CA8C: @ 0x0802CA8C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r3 + bge _0802CAC0 + ldr r5, _0802CAB0 + ldr r0, _0802CAB4 + adds r1, r4, r0 +_0802CAA4: + ldr r0, [r1] + ldr r0, [r0, #0x1c] + cmp r0, r5 + bne _0802CAB8 + movs r0, #1 + b _0802CAC2 + .align 2, 0 +_0802CAB0: .4byte sub_0802CAC8 +_0802CAB4: .4byte 0x000081A8 +_0802CAB8: + adds r1, #4 + adds r2, #1 + cmp r2, r3 + blt _0802CAA4 +_0802CAC0: + movs r0, #0 +_0802CAC2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0802CA8C + + thumb_func_start sub_0802CAC8 +sub_0802CAC8: @ 0x0802CAC8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r4, [r5, r0] + cmp r4, #0 + beq _0802CADA + cmp r4, #1 + beq _0802CAE8 + b _0802CB30 +_0802CADA: + movs r0, #0x22 + bl sub_080A306C + strh r4, [r5, #0x30] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_0802CAE8: + ldrh r0, [r5, #0x30] + adds r0, #4 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + ble _0802CAFA + movs r0, #0 + strh r0, [r5, #0x30] +_0802CAFA: + ldr r1, _0802CB28 + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + movs r0, #0x30 + ldrsh r1, [r5, r0] + cmp r1, #0 + bne _0802CB30 + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bgt _0802CB2C + strh r1, [r5, #0x2e] + b _0802CB30 + .align 2, 0 +_0802CB28: .4byte gUnknown_82FA8CC +_0802CB2C: + ldr r0, _0802CB38 + str r0, [r5, #0x1c] +_0802CB30: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802CB38: .4byte sub_08007140 + thumb_func_end sub_0802CAC8 + + thumb_func_start sub_0802CB3C +sub_0802CB3C: @ 0x0802CB3C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + ldr r0, _0802CB84 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0802CB7C + ldr r0, _0802CB88 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #4 + orrs r0, r2 + strb r0, [r3] + lsls r2, r4, #2 + ldr r3, _0802CB8C + adds r0, r5, r3 + adds r0, r0, r2 + str r1, [r0] +_0802CB7C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802CB84: .4byte gUnknown_82CF898 +_0802CB88: .4byte gUnknown_20205AC +_0802CB8C: .4byte 0x000081BC + thumb_func_end sub_0802CB3C + + thumb_func_start sub_0802CB90 +sub_0802CB90: @ 0x0802CB90 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r5, #0 + movs r4, #0 + ldr r6, _0802CC30 +_0802CB9A: + ldr r1, _0802CC34 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r2, _0802CC38 + lsls r1, r5, #1 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + movs r3, #0 + ldrsh r2, [r6, r3] + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r5, #2 + ldr r3, _0802CC3C + adds r2, r7, r3 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802CC40 + adds r0, r0, r1 + str r0, [r2] + adds r5, #1 + adds r6, #0x14 + adds r4, #1 + cmp r4, #3 + ble _0802CB9A + movs r4, #3 + movs r6, #0x3c +_0802CBDC: + ldr r1, _0802CC34 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r2, _0802CC38 + lsls r1, r5, #1 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + ldr r2, _0802CC30 + adds r2, r6, r2 + movs r3, #0 + ldrsh r2, [r2, r3] + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r5, #2 + ldr r3, _0802CC3C + adds r2, r7, r3 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802CC40 + adds r0, r0, r1 + str r0, [r2] + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + adds r5, #1 + subs r6, #0x14 + subs r4, #1 + cmp r4, #0 + bge _0802CBDC + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802CC30: .4byte gUnknown_82CF6E4 +_0802CC34: .4byte gUnknown_82CF744 +_0802CC38: .4byte gUnknown_82CF734 +_0802CC3C: .4byte 0x000081D0 +_0802CC40: .4byte gUnknown_20205AC + thumb_func_end sub_0802CB90 + + thumb_func_start sub_0802CC44 +sub_0802CC44: @ 0x0802CC44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r0, [sp, #8] + cmp r1, #5 + ble _0802CC64 + movs r0, #0xa + subs r1, r0, r1 + movs r0, #3 + str r0, [sp] + ldr r2, [sp, #8] + ldrb r0, [r2, #0xf] + b _0802CC6C +_0802CC64: + movs r3, #2 + str r3, [sp] + ldr r7, [sp, #8] + ldrb r0, [r7, #0xe] +_0802CC6C: + movs r6, #0 + lsls r2, r1, #1 + str r2, [sp, #4] + lsls r0, r0, #4 + mov sb, r0 + lsls r1, r1, #0x18 + mov r8, r1 + ldr r0, _0802CD30 + adds r4, r2, r0 + ldr r3, [sp] + lsls r3, r3, #2 + mov sl, r3 + movs r5, #3 +_0802CC86: + lsls r0, r6, #2 + ldr r7, [sp, #8] + ldr r1, _0802CD34 + adds r2, r7, r1 + adds r2, r2, r0 + ldr r1, [r2] + ldrh r0, [r4] + strh r0, [r1, #0x22] + ldr r3, [r2] + ldrb r0, [r3, #5] + movs r7, #0xd + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + mov r1, sl + orrs r0, r1 + strb r0, [r3, #5] + ldr r3, [r2] + ldrb r1, [r3, #5] + movs r0, #0xf + ands r0, r1 + mov r7, sb + orrs r0, r7 + strb r0, [r3, #5] + ldr r0, [r2] + mov r2, r8 + lsrs r1, r2, #0x18 + bl sub_08007EC0 + adds r6, #1 + adds r4, #0x14 + subs r5, #1 + cmp r5, #0 + bge _0802CC86 + movs r5, #3 + ldr r0, _0802CD30 + ldr r3, [sp, #4] + adds r0, r3, r0 + adds r4, r0, #0 + adds r4, #0x3c + ldr r7, [sp] + lsls r7, r7, #2 + mov sl, r7 +_0802CCDC: + lsls r0, r6, #2 + ldr r1, [sp, #8] + ldr r3, _0802CD34 + adds r2, r1, r3 + adds r2, r2, r0 + ldr r1, [r2] + ldrh r0, [r4] + strh r0, [r1, #0x22] + ldr r3, [r2] + ldrb r0, [r3, #5] + movs r7, #0xd + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + mov r1, sl + orrs r0, r1 + strb r0, [r3, #5] + ldr r3, [r2] + ldrb r1, [r3, #5] + movs r0, #0xf + ands r0, r1 + mov r7, sb + orrs r0, r7 + strb r0, [r3, #5] + ldr r0, [r2] + mov r2, r8 + lsrs r1, r2, #0x18 + bl sub_08007EC0 + adds r6, #1 + subs r4, #0x14 + subs r5, #1 + cmp r5, #0 + bge _0802CCDC + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802CD30: .4byte gUnknown_82CF6E4 +_0802CD34: .4byte 0x000081D0 + thumb_func_end sub_0802CC44 + + thumb_func_start sub_0802CD38 +sub_0802CD38: @ 0x0802CD38 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #0 + str r0, [sp] + movs r0, #9 + movs r1, #7 + movs r2, #0x78 + movs r3, #0x50 + bl sub_0802E788 + adds r0, r4, #0 + bl sub_0802CA30 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802CD38 + + thumb_func_start sub_0802CD5C +sub_0802CD5C: @ 0x0802CD5C + push {lr} + bl sub_0802E7E8 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802CD5C + + thumb_func_start sub_0802CD68 +sub_0802CD68: @ 0x0802CD68 + push {r4, lr} + ldr r4, _0802CD94 + str r0, [r4] + bl sub_0802CDB0 + ldr r0, _0802CD98 + movs r1, #3 + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1, #6] + ldr r2, [r4] + ldrb r0, [r2, #6] + movs r1, #2 + bl sub_080A8B44 + ldr r0, _0802CD9C + bl sub_0802CDFC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802CD94: .4byte gUnknown_20229B4 +_0802CD98: .4byte sub_0802CE20 +_0802CD9C: .4byte sub_0802CE44 + thumb_func_end sub_0802CD68 + + thumb_func_start sub_0802CDA0 +sub_0802CDA0: @ 0x0802CDA0 + push {lr} + bl sub_080034D4 + bl sub_08034B20 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802CDA0 + + thumb_func_start sub_0802CDB0 +sub_0802CDB0: @ 0x0802CDB0 + movs r1, #0 + strh r1, [r0, #4] + str r1, [r0] + movs r1, #0xff + strh r1, [r0, #0x12] + bx lr + thumb_func_end sub_0802CDB0 + + thumb_func_start sub_0802CDBC +sub_0802CDBC: @ 0x0802CDBC + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + ldr r4, _0802CDE0 +_0802CDC4: + ldr r0, [r4] + cmp r0, r6 + bne _0802CDD0 + ldr r0, [r4, #4] + bl sub_0802CDFC +_0802CDD0: + adds r4, #8 + adds r5, #1 + cmp r5, #9 + bls _0802CDC4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802CDE0: .4byte gUnknown_82D1A18 + thumb_func_end sub_0802CDBC + + thumb_func_start sub_0802CDE4 +sub_0802CDE4: @ 0x0802CDE4 + ldr r0, _0802CDF8 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #1 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_0802CDF8: .4byte gUnknown_20229B4 + thumb_func_end sub_0802CDE4 + + thumb_func_start sub_0802CDFC +sub_0802CDFC: @ 0x0802CDFC + push {r4, lr} + adds r2, r0, #0 + ldr r4, _0802CE1C + ldr r0, [r4] + ldrb r0, [r0, #6] + movs r1, #0 + bl sub_080A8B44 + ldr r1, [r4] + movs r0, #0 + strh r0, [r1, #4] + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802CE1C: .4byte gUnknown_20229B4 + thumb_func_end sub_0802CDFC + + thumb_func_start sub_0802CE20 +sub_0802CE20: @ 0x0802CE20 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0802CE40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + bne _0802CE3C + adds r0, r1, #0 + movs r1, #0 + bl sub_080A8B7C + bl _call_via_r0 +_0802CE3C: + pop {r0} + bx r0 + .align 2, 0 +_0802CE40: .4byte gUnknown_20229B4 + thumb_func_end sub_0802CE20 + + thumb_func_start sub_0802CE44 +sub_0802CE44: @ 0x0802CE44 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r6, _0802CE60 + ldr r1, [r6] + ldrh r5, [r1, #4] + cmp r5, #1 + bne _0802CE54 + b _0802CF8C +_0802CE54: + cmp r5, #1 + bgt _0802CE64 + cmp r5, #0 + beq _0802CE6C + b _0802CFCE + .align 2, 0 +_0802CE60: .4byte gUnknown_20229B4 +_0802CE64: + cmp r5, #2 + bne _0802CE6A + b _0802CFCA +_0802CE6A: + b _0802CFCE +_0802CE6C: + movs r0, #0 + bl sub_080017D4 + ldr r1, _0802CF5C + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _0802CF60 + bl sub_08003090 + bl sub_081996B8 + ldr r0, [r6] + bl sub_0802C668 + bl sub_0802DA00 + ldr r0, _0802CF64 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0802CF68 + str r5, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _0802CF6C + movs r4, #1 + str r4, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _0802CF70 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0802CF74 + str r5, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _0802CF78 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _0802CF7C + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0802CF80 + str r5, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _0802CF84 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _0802CF88 + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, [r6] + movs r0, #0xd3 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + bl sub_0800212C + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + bl sub_0802D884 + movs r0, #0 + bl sub_0802DA5C + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080985F4 + movs r0, #0 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + bl sub_08199A30 + b _0802CFC0 + .align 2, 0 +_0802CF5C: .4byte gUnknown_82D19F0 +_0802CF60: .4byte gUnknown_82D1A00 +_0802CF64: .4byte gUnknown_82CF8D0 +_0802CF68: .4byte gUnknown_82CF8F0 +_0802CF6C: .4byte gUnknown_82CFB1C +_0802CF70: .4byte gUnknown_82CFCCC +_0802CF74: .4byte gUnknown_82CFCEC +_0802CF78: .4byte gUnknown_82D063C +_0802CF7C: .4byte gUnknown_82D09F4 +_0802CF80: .4byte gUnknown_82D0A14 +_0802CF84: .4byte gUnknown_82D14C4 +_0802CF88: .4byte gUnknown_82CF8B0 +_0802CF8C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CFCE + bl sub_0802D8F0 + ldr r0, [r6] + bl sub_0802CB90 + ldr r0, [r6] + movs r1, #6 + bl sub_0802CC44 + movs r0, #3 + bl sub_08001B48 + movs r0, #0 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B5C +_0802CFC0: + ldr r1, [r6] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802CFCE +_0802CFCA: + movs r0, #1 + str r0, [r1] +_0802CFCE: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802CE44 + + thumb_func_start sub_0802CFD8 +sub_0802CFD8: @ 0x0802CFD8 + push {r4, lr} + ldr r4, _0802CFF0 + ldr r0, [r4] + ldrh r0, [r0, #4] + cmp r0, #1 + beq _0802D004 + cmp r0, #1 + bgt _0802CFF4 + cmp r0, #0 + beq _0802CFFE + b _0802D03E + .align 2, 0 +_0802CFF0: .4byte gUnknown_20229B4 +_0802CFF4: + cmp r0, #2 + beq _0802D016 + cmp r0, #3 + beq _0802D02E + b _0802D03E +_0802CFFE: + bl sub_0802DB14 + b _0802D024 +_0802D004: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D03E + movs r0, #0 + bl sub_0802DC68 + b _0802D024 +_0802D016: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D03E + bl sub_0802DCCC +_0802D024: + ldr r1, [r4] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D03E +_0802D02E: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D03E + ldr r1, [r4] + movs r0, #1 + str r0, [r1] +_0802D03E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802CFD8 + + thumb_func_start sub_0802D044 +sub_0802D044: @ 0x0802D044 + push {r4, lr} + ldr r4, _0802D05C + ldr r0, [r4] + ldrh r0, [r0, #4] + cmp r0, #1 + beq _0802D070 + cmp r0, #1 + bgt _0802D060 + cmp r0, #0 + beq _0802D06A + b _0802D0AA + .align 2, 0 +_0802D05C: .4byte gUnknown_20229B4 +_0802D060: + cmp r0, #2 + beq _0802D082 + cmp r0, #3 + beq _0802D09A + b _0802D0AA +_0802D06A: + bl sub_0802DB14 + b _0802D090 +_0802D070: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D0AA + movs r0, #1 + bl sub_0802DC68 + b _0802D090 +_0802D082: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D0AA + bl sub_0802DCCC +_0802D090: + ldr r1, [r4] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D0AA +_0802D09A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D0AA + ldr r1, [r4] + movs r0, #1 + str r0, [r1] +_0802D0AA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802D044 + + thumb_func_start sub_0802D0B0 +sub_0802D0B0: @ 0x0802D0B0 + push {r4, r5, lr} + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0802D0CC + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #0 + beq _0802D0D0 + cmp r0, #1 + beq _0802D104 + b _0802D132 + .align 2, 0 +_0802D0CC: .4byte gUnknown_20229B4 +_0802D0D0: + movs r4, #0 + cmp r4, r5 + bge _0802D0EC +_0802D0D6: + ldr r0, _0802D100 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x1c + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08003774 + adds r4, #1 + cmp r4, r5 + blt _0802D0D6 +_0802D0EC: + movs r0, #0 + bl sub_08002248 + ldr r0, _0802D100 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D132 + .align 2, 0 +_0802D100: .4byte gUnknown_20229B4 +_0802D104: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D132 + movs r4, #0 + cmp r4, r5 + bge _0802D12A +_0802D114: + ldr r0, _0802D138 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x1c + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08003444 + adds r4, #1 + cmp r4, r5 + blt _0802D114 +_0802D12A: + ldr r0, _0802D138 + ldr r1, [r0] + movs r0, #1 + str r0, [r1] +_0802D132: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802D138: .4byte gUnknown_20229B4 + thumb_func_end sub_0802D0B0 + + thumb_func_start sub_0802D13C +sub_0802D13C: @ 0x0802D13C + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _0802D154 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #1 + beq _0802D198 + cmp r4, #1 + bgt _0802D158 + cmp r4, #0 + beq _0802D15E + b _0802D1E0 + .align 2, 0 +_0802D154: .4byte gUnknown_20229B4 +_0802D158: + cmp r4, #2 + beq _0802D1D0 + b _0802D1E0 +_0802D15E: + movs r0, #1 + movs r1, #8 + movs r2, #0x14 + movs r3, #2 + bl sub_0802D78C + ldr r1, [r5] + strh r0, [r1, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802D194 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + b _0802D1C6 + .align 2, 0 +_0802D194: .4byte gUnknown_85CCE71 +_0802D198: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D1E0 + ldr r0, [r5] + ldrb r0, [r0, #0x12] + bl sub_0800365C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0x17 + movs r1, #7 + movs r2, #0 + bl sub_0802D808 + movs r0, #0 + bl sub_08002248 +_0802D1C6: + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D1E0 +_0802D1D0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D1E0 + ldr r1, [r5] + movs r0, #1 + str r0, [r1] +_0802D1E0: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0802D13C + + thumb_func_start sub_0802D1E8 +sub_0802D1E8: @ 0x0802D1E8 + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _0802D200 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #1 + beq _0802D244 + cmp r4, #1 + bgt _0802D204 + cmp r4, #0 + beq _0802D20A + b _0802D282 + .align 2, 0 +_0802D200: .4byte gUnknown_20229B4 +_0802D204: + cmp r4, #2 + beq _0802D272 + b _0802D282 +_0802D20A: + movs r0, #2 + movs r1, #7 + movs r2, #0x1a + movs r3, #4 + bl sub_0802D78C + ldr r1, [r5] + strh r0, [r1, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802D240 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + b _0802D268 + .align 2, 0 +_0802D240: .4byte gUnknown_8277071 +_0802D244: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D282 + ldr r0, [r5] + ldrb r0, [r0, #0x12] + bl sub_0800365C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_08002248 +_0802D268: + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D282 +_0802D272: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D282 + ldr r1, [r5] + movs r0, #1 + str r0, [r1] +_0802D282: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802D1E8 + + thumb_func_start sub_0802D28C +sub_0802D28C: @ 0x0802D28C + push {r4, r5, lr} + ldr r5, _0802D2A0 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #0 + beq _0802D2A4 + cmp r4, #1 + beq _0802D2BC + b _0802D2D2 + .align 2, 0 +_0802D2A0: .4byte gUnknown_20229B4 +_0802D2A4: + bl sub_0802D704 + bl sub_08198D88 + movs r0, #0 + bl sub_08002248 + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D2D2 +_0802D2BC: + bl sub_0802D734 + cmp r0, #0 + bne _0802D2D2 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D2D2 + ldr r0, [r5] + str r4, [r0] +_0802D2D2: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0802D28C + + thumb_func_start sub_0802D2D8 +sub_0802D2D8: @ 0x0802D2D8 + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _0802D2F0 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #1 + beq _0802D334 + cmp r4, #1 + bgt _0802D2F4 + cmp r4, #0 + beq _0802D2FA + b _0802D372 + .align 2, 0 +_0802D2F0: .4byte gUnknown_20229B4 +_0802D2F4: + cmp r4, #2 + beq _0802D362 + b _0802D372 +_0802D2FA: + movs r0, #2 + movs r1, #8 + movs r2, #0x16 + movs r3, #4 + bl sub_0802D78C + ldr r1, [r5] + strh r0, [r1, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802D330 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + b _0802D358 + .align 2, 0 +_0802D330: .4byte gUnknown_85CCE7F +_0802D334: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D372 + ldr r0, [r5] + ldrb r0, [r0, #0x12] + bl sub_0800365C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_08002248 +_0802D358: + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D372 +_0802D362: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D372 + ldr r1, [r5] + movs r0, #1 + str r0, [r1] +_0802D372: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802D2D8 + + thumb_func_start sub_0802D37C +sub_0802D37C: @ 0x0802D37C + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _0802D394 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #1 + beq _0802D3D8 + cmp r4, #1 + bgt _0802D398 + cmp r4, #0 + beq _0802D39E + b _0802D416 + .align 2, 0 +_0802D394: .4byte gUnknown_20229B4 +_0802D398: + cmp r4, #2 + beq _0802D406 + b _0802D416 +_0802D39E: + movs r0, #7 + movs r1, #0xa + movs r2, #0x10 + movs r3, #2 + bl sub_0802D78C + ldr r1, [r5] + strh r0, [r1, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802D3D4 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + b _0802D3FC + .align 2, 0 +_0802D3D4: .4byte gUnknown_85CCE99 +_0802D3D8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D416 + ldr r0, [r5] + ldrb r0, [r0, #0x12] + bl sub_0800365C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_08002248 +_0802D3FC: + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D416 +_0802D406: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D416 + ldr r1, [r5] + movs r0, #1 + str r0, [r1] +_0802D416: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802D37C + + thumb_func_start sub_0802D420 +sub_0802D420: @ 0x0802D420 + push {r4, r5, lr} + ldr r5, _0802D434 + ldr r0, [r5] + ldrh r4, [r0, #4] + cmp r4, #0 + beq _0802D438 + cmp r4, #1 + beq _0802D446 + b _0802D452 + .align 2, 0 +_0802D434: .4byte gUnknown_20229B4 +_0802D438: + bl sub_0802CD38 + ldr r1, [r5] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _0802D452 +_0802D446: + bl sub_0802CD5C + cmp r0, #0 + bne _0802D452 + ldr r0, [r5] + str r4, [r0] +_0802D452: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0802D420 + + thumb_func_start sub_0802D458 +sub_0802D458: @ 0x0802D458 + push {lr} + ldr r1, _0802D478 + ldr r0, [r1] + movs r2, #0 + strb r2, [r0, #0xa] + ldr r0, [r1] + strb r2, [r0, #0xb] + ldr r2, [r1] + movs r0, #6 + strb r0, [r2, #0xc] + ldr r0, [r1] + ldrb r0, [r0, #0xc] + bl sub_0802D994 + pop {r0} + bx r0 + .align 2, 0 +_0802D478: .4byte gUnknown_20229B4 + thumb_func_end sub_0802D458 + + thumb_func_start sub_0802D47C +sub_0802D47C: @ 0x0802D47C + push {r4, lr} + ldr r0, _0802D490 + ldr r2, [r0] + ldrb r3, [r2, #0xa] + adds r4, r0, #0 + cmp r3, #0 + beq _0802D494 + cmp r3, #1 + beq _0802D4CE + b _0802D4D2 + .align 2, 0 +_0802D490: .4byte gUnknown_20229B4 +_0802D494: + ldrb r0, [r2, #0xb] + adds r0, #1 + strb r0, [r2, #0xb] + ldr r1, [r4] + ldrb r0, [r1, #0xb] + cmp r0, #0xa + bls _0802D4BE + strb r3, [r1, #0xb] + ldr r0, [r4] + ldrb r1, [r0, #0xc] + adds r1, #1 + strb r1, [r0, #0xc] + ldr r1, [r4] + ldrb r0, [r1, #0xc] + cmp r0, #9 + bls _0802D4BE + strb r3, [r1, #0xc] + ldr r1, [r4] + ldrb r0, [r1, #0xa] + adds r0, #1 + strb r0, [r1, #0xa] +_0802D4BE: + ldr r0, [r4] + ldrb r0, [r0, #0xc] + bl sub_0802D994 + ldr r0, [r4] + ldrb r0, [r0, #0xc] + cmp r0, #7 + bne _0802D4D2 +_0802D4CE: + movs r0, #0 + b _0802D4D4 +_0802D4D2: + movs r0, #1 +_0802D4D4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802D47C + + thumb_func_start sub_0802D4DC +sub_0802D4DC: @ 0x0802D4DC + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _0802D568 + ldr r1, [r5] + adds r1, #0x26 + bl sub_080D5EC8 + ldr r0, [r5] + adds r0, #0x66 + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + bl sub_081AF8C8 + ldr r1, [r5] + adds r1, #0x26 + movs r0, #0 + bl sub_081AF8E4 + ldr r1, [r5] + adds r1, #0x66 + movs r0, #1 + bl sub_081AF8E4 + ldr r0, [r5] + adds r0, #0xa6 + ldr r1, _0802D56C + bl sub_081AF900 + movs r0, #4 + movs r1, #8 + movs r2, #0x16 + movs r3, #4 + bl sub_0802D78C + ldr r2, [r5] + movs r4, #0 + movs r3, #0 + strh r0, [r2, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, #0xa6 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r3, [sp, #8] + movs r1, #1 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + ldr r1, [r5] + ldr r0, _0802D570 + strh r0, [r1, #0x14] + strb r4, [r1, #0xd] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802D568: .4byte gUnknown_20229B4 +_0802D56C: .4byte gUnknown_85CCE36 +_0802D570: .4byte 0x0000016F + thumb_func_end sub_0802D4DC + + thumb_func_start sub_0802D574 +sub_0802D574: @ 0x0802D574 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0802D5E4 + ldr r1, [r4] + adds r1, #0x26 + bl sub_080D5EC8 + bl sub_081AF8C8 + ldr r1, [r4] + adds r1, #0x26 + movs r0, #0 + bl sub_081AF8E4 + ldr r0, [r4] + adds r0, #0xa6 + ldr r1, _0802D5E8 + bl sub_081AF900 + movs r0, #4 + movs r1, #8 + movs r2, #0x16 + movs r3, #4 + bl sub_0802D78C + ldr r2, [r4] + movs r6, #0 + movs r5, #0 + strh r0, [r2, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, #0xa6 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r4] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + strh r5, [r0, #0x14] + strb r6, [r0, #0xd] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802D5E4: .4byte gUnknown_20229B4 +_0802D5E8: .4byte gUnknown_85CCE52 + thumb_func_end sub_0802D574 + + thumb_func_start sub_0802D5EC +sub_0802D5EC: @ 0x0802D5EC + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0802D65C + ldr r1, [r4] + adds r1, #0x26 + bl sub_080D5EC8 + bl sub_081AF8C8 + ldr r1, [r4] + adds r1, #0x26 + movs r0, #0 + bl sub_081AF8E4 + ldr r0, [r4] + adds r0, #0xa6 + ldr r1, _0802D660 + bl sub_081AF900 + movs r0, #4 + movs r1, #9 + movs r2, #0x16 + movs r3, #2 + bl sub_0802D78C + ldr r2, [r4] + movs r6, #0 + movs r5, #0 + strh r0, [r2, #0x12] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, #0xa6 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r4] + ldrb r0, [r0, #0x12] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + strh r5, [r0, #0x14] + strb r6, [r0, #0xd] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802D65C: .4byte gUnknown_20229B4 +_0802D660: .4byte gUnknown_85CCE65 + thumb_func_end sub_0802D5EC + + thumb_func_start sub_0802D664 +sub_0802D664: @ 0x0802D664 + push {r4, lr} + ldr r4, _0802D67C + ldr r0, [r4] + ldrb r0, [r0, #0xd] + cmp r0, #1 + beq _0802D6B8 + cmp r0, #1 + bgt _0802D680 + cmp r0, #0 + beq _0802D68A + b _0802D6FC + .align 2, 0 +_0802D67C: .4byte gUnknown_20229B4 +_0802D680: + cmp r0, #2 + beq _0802D6DE + cmp r0, #3 + beq _0802D6F2 + b _0802D6FC +_0802D68A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D6FC + ldr r0, [r4] + ldrb r0, [r0, #0x12] + bl sub_0800365C + ldr r0, [r4] + ldrb r0, [r0, #0x12] + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_08002248 + ldr r1, [r4] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + b _0802D6FC +_0802D6B8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D6FC + ldr r1, [r4] + ldrh r0, [r1, #0x14] + cmp r0, #0 + bne _0802D6D0 + ldrb r0, [r1, #0xd] + adds r0, #2 + b _0802D6F0 +_0802D6D0: + ldrh r0, [r1, #0x14] + bl sub_080A29AC + ldr r1, [r4] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] +_0802D6DE: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802D6FC + ldr r0, _0802D6F8 + ldr r1, [r0] + ldrb r0, [r1, #0xd] + adds r0, #1 +_0802D6F0: + strb r0, [r1, #0xd] +_0802D6F2: + movs r0, #0 + b _0802D6FE + .align 2, 0 +_0802D6F8: .4byte gUnknown_20229B4 +_0802D6FC: + movs r0, #1 +_0802D6FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802D664 + + thumb_func_start sub_0802D704 +sub_0802D704: @ 0x0802D704 + push {r4, lr} + ldr r4, _0802D730 + ldr r0, [r4] + ldrh r0, [r0, #0x12] + cmp r0, #0xff + beq _0802D728 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08098504 + ldr r0, [r4] + ldrb r0, [r0, #0x12] + movs r1, #1 + bl sub_08003528 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #0xd] +_0802D728: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D730: .4byte gUnknown_20229B4 + thumb_func_end sub_0802D704 + + thumb_func_start sub_0802D734 +sub_0802D734: @ 0x0802D734 + push {r4, lr} + ldr r4, _0802D744 + ldr r1, [r4] + ldrh r0, [r1, #0x12] + cmp r0, #0xff + bne _0802D748 +_0802D740: + movs r0, #0 + b _0802D774 + .align 2, 0 +_0802D744: .4byte gUnknown_20229B4 +_0802D748: + ldrb r0, [r1, #0xd] + cmp r0, #0 + bne _0802D76E + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D772 + ldr r0, [r4] + ldrb r0, [r0, #0x12] + bl sub_08003444 + ldr r1, [r4] + movs r0, #0xff + strh r0, [r1, #0x12] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + b _0802D740 +_0802D76E: + cmp r0, #1 + beq _0802D740 +_0802D772: + movs r0, #1 +_0802D774: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802D734 + + thumb_func_start sub_0802D77C +sub_0802D77C: @ 0x0802D77C + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802D77C + + thumb_func_start sub_0802D78C +sub_0802D78C: @ 0x0802D78C + push {r4, r5, r6, lr} + sub sp, #8 + ldr r6, _0802D7F4 + ldr r4, [sp] + ands r4, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldr r5, _0802D7F8 + ands r4, r5 + orrs r4, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #8 + ldr r0, _0802D7FC + ands r4, r0 + orrs r4, r1 + lsls r2, r2, #0x18 + ldr r0, _0802D800 + ands r4, r0 + orrs r4, r2 + str r4, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, [sp, #4] + ands r0, r6 + orrs r0, r3 + ands r0, r5 + movs r1, #0xf0 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _0802D804 + ands r0, r1 + movs r1, #0xcc + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r4, #0 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0802D7F4: .4byte 0xFFFFFF00 +_0802D7F8: .4byte 0xFFFF00FF +_0802D7FC: .4byte 0xFF00FFFF +_0802D800: .4byte 0x00FFFFFF +_0802D804: .4byte 0x0000FFFF + thumb_func_end sub_0802D78C + + thumb_func_start sub_0802D808 +sub_0802D808: @ 0x0802D808 + push {r4, r5, lr} + sub sp, #0x14 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r5, _0802D870 + ldr r3, [sp, #0xc] + ands r3, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldr r4, _0802D874 + ands r3, r4 + orrs r3, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #8 + ldr r0, _0802D878 + ands r3, r0 + orrs r3, r1 + ldr r0, _0802D87C + ands r3, r0 + movs r0, #0xc0 + lsls r0, r0, #0x13 + orrs r3, r0 + str r3, [sp, #0xc] + ldr r0, [sp, #0x10] + ands r0, r5 + movs r1, #4 + orrs r0, r1 + ands r0, r4 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + ldr r1, _0802D880 + ands r0, r1 + movs r1, #0xd8 + lsls r1, r1, #0xd + orrs r0, r1 + str r0, [sp, #0x10] + movs r0, #1 + str r0, [sp] + movs r0, #0xd + str r0, [sp, #4] + str r2, [sp, #8] + add r0, sp, #0xc + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802D870: .4byte 0xFFFFFF00 +_0802D874: .4byte 0xFFFF00FF +_0802D878: .4byte 0xFF00FFFF +_0802D87C: .4byte 0x00FFFFFF +_0802D880: .4byte 0x0000FFFF + thumb_func_end sub_0802D808 + + thumb_func_start sub_0802D884 +sub_0802D884: @ 0x0802D884 + push {r4, lr} + sub sp, #0x10 + ldr r1, _0802D8E4 + add r0, sp, #0xc + movs r2, #3 + bl memcpy + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + add r0, sp, #0xc + str r0, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r0, _0802D8E8 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + add r0, sp, #0xc + str r0, [sp] + str r4, [sp, #4] + ldr r0, _0802D8EC + str r0, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D8E4: .4byte gUnknown_82D1A68 +_0802D8E8: .4byte gUnknown_85CCDF8 +_0802D8EC: .4byte gUnknown_85CCDFB + thumb_func_end sub_0802D884 + + thumb_func_start sub_0802D8F0 +sub_0802D8F0: @ 0x0802D8F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + ldr r1, _0802D96C + subs r0, #2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r5, [r0] + movs r6, #0 + cmp r6, sl + bge _0802D95A + ldr r0, _0802D970 + mov sb, r0 + ldr r1, _0802D974 + mov r8, r1 +_0802D91E: + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0802C5BC + adds r1, r0, #0 + ldrh r0, [r1] + lsls r0, r0, #2 + add r0, sb + ldrb r3, [r0, #1] + mov r2, r8 + ldr r0, [r2] + movs r7, #0 + ldrsh r2, [r5, r7] + adds r3, #0x70 + str r4, [sp] + bl sub_0802C6C8 + mov r1, r8 + ldr r0, [r1] + movs r2, #0 + ldrsh r1, [r5, r2] + movs r2, #0x70 + adds r3, r4, #0 + bl sub_0802CB3C + adds r5, #2 + adds r6, #1 + cmp r6, sl + blt _0802D91E +_0802D95A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802D96C: .4byte gUnknown_82D1AEC +_0802D970: .4byte gUnknown_82D45C8 +_0802D974: .4byte gUnknown_20229B4 + thumb_func_end sub_0802D8F0 + + thumb_func_start sub_0802D978 +sub_0802D978: @ 0x0802D978 + ldr r2, _0802D98C + ldr r2, [r2] + lsls r0, r0, #2 + ldr r3, _0802D990 + adds r2, r2, r3 + adds r2, r2, r0 + ldr r0, [r2] + strh r1, [r0, #0x26] + bx lr + .align 2, 0 +_0802D98C: .4byte gUnknown_20229B4 +_0802D990: .4byte 0x000081A8 + thumb_func_end sub_0802D978 + + thumb_func_start sub_0802D994 +sub_0802D994: @ 0x0802D994 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0802D9BC + ldr r0, [r0] + adds r1, r4, #0 + bl sub_0802CC44 + ldr r0, _0802D9C0 + adds r4, r4, r0 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #0xd + movs r0, #2 + movs r2, #0 + bl sub_08001E94 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802D9BC: .4byte gUnknown_20229B4 +_0802D9C0: .4byte gUnknown_82D1A6B + thumb_func_end sub_0802D994 + + thumb_func_start sub_0802D9C4 +sub_0802D9C4: @ 0x0802D9C4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + movs r6, #0 +_0802D9CE: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0802D9E2 + ldr r0, _0802D9FC + ldr r0, [r0] + adds r1, r5, #0 + bl sub_0802C808 + adds r6, #1 +_0802D9E2: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #4 + ble _0802D9CE + subs r0, r6, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0802DD04 + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0802D9FC: .4byte gUnknown_20229B4 + thumb_func_end sub_0802D9C4 + + thumb_func_start sub_0802DA00 +sub_0802DA00: @ 0x0802DA00 + push {r4, lr} + sub sp, #0x10 + mov r1, sp + movs r0, #0x40 + strb r0, [r1] + movs r0, #5 + strb r0, [r1, #1] + movs r0, #8 + strb r0, [r1, #2] + movs r0, #0x6c + strh r0, [r1, #4] + movs r4, #6 + strh r4, [r1, #6] + ldr r0, _0802DA54 + str r0, [sp, #8] + ldr r0, _0802DA58 + str r0, [sp, #0xc] + movs r0, #2 + bl sub_08034AAC + movs r0, #0 + movs r1, #0 + mov r2, sp + bl sub_08034B6C + mov r1, sp + movs r0, #4 + strb r0, [r1, #1] + movs r0, #0x1e + strh r0, [r1, #4] + mov r0, sp + strh r4, [r0, #6] + movs r0, #1 + movs r1, #0 + mov r2, sp + bl sub_08034B6C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802DA54: .4byte gUnknown_82D1A78 +_0802DA58: .4byte gUnknown_82D1A80 + thumb_func_end sub_0802DA00 + + thumb_func_start sub_0802DA5C +sub_0802DA5C: @ 0x0802DA5C + push {lr} + adds r1, r0, #0 + movs r0, #0 + bl sub_08034E9C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DA5C + + thumb_func_start sub_0802DA6C +sub_0802DA6C: @ 0x0802DA6C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + bl sub_08034E9C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DA6C + + thumb_func_start sub_0802DA80 +sub_0802DA80: @ 0x0802DA80 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0802DA94 + ldr r0, [r0] + bl sub_0802C8E4 + pop {r0} + bx r0 + .align 2, 0 +_0802DA94: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DA80 + + thumb_func_start sub_0802DA98 +sub_0802DA98: @ 0x0802DA98 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0802DAAC + ldr r0, [r0] + bl sub_0802C97C + pop {r0} + bx r0 + .align 2, 0 +_0802DAAC: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DA98 + + thumb_func_start sub_0802DAB0 +sub_0802DAB0: @ 0x0802DAB0 + push {lr} + adds r1, r0, #0 + ldr r0, _0802DAC0 + ldr r0, [r0] + bl sub_0802C90C + pop {r1} + bx r1 + .align 2, 0 +_0802DAC0: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DAB0 + + thumb_func_start sub_0802DAC4 +sub_0802DAC4: @ 0x0802DAC4 + push {lr} + ldr r0, _0802DAD4 + ldr r0, [r0] + bl sub_0802C9A4 + pop {r0} + bx r0 + .align 2, 0 +_0802DAD4: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DAC4 + + thumb_func_start sub_0802DAD8 +sub_0802DAD8: @ 0x0802DAD8 + push {lr} + ldr r0, _0802DAE8 + ldr r0, [r0] + bl sub_0802CA30 + pop {r0} + bx r0 + .align 2, 0 +_0802DAE8: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DAD8 + + thumb_func_start sub_0802DAEC +sub_0802DAEC: @ 0x0802DAEC + push {lr} + adds r1, r0, #0 + ldr r0, _0802DAFC + ldr r0, [r0] + bl sub_0802CA64 + pop {r0} + bx r0 + .align 2, 0 +_0802DAFC: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DAEC + + thumb_func_start sub_0802DB00 +sub_0802DB00: @ 0x0802DB00 + push {lr} + ldr r0, _0802DB10 + ldr r0, [r0] + bl sub_0802CA8C + pop {r1} + bx r1 + .align 2, 0 +_0802DB10: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DB00 + + thumb_func_start sub_0802DB14 +sub_0802DB14: @ 0x0802DB14 + push {r4, r5, r6, r7, lr} + sub sp, #8 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r1, _0802DBB4 + subs r0, r7, #2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldr r2, _0802DBB8 + ldr r0, [sp] + ands r0, r2 + ldr r1, _0802DBBC + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0x14 + orrs r0, r1 + str r0, [sp] + ldr r0, [sp, #4] + ands r0, r2 + movs r1, #2 + orrs r0, r1 + ldr r1, _0802DBC0 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + ldr r1, _0802DBC4 + ands r0, r1 + movs r1, #0xd8 + lsls r1, r1, #0xd + orrs r0, r1 + str r0, [sp, #4] + movs r5, #0 + cmp r5, r7 + bge _0802DBA4 + mov r6, sp +_0802DB62: + ldrb r0, [r4] + lsls r0, r0, #8 + ldr r2, _0802DBC0 + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldrb r2, [r4, #2] + lsls r2, r2, #0x10 + ldr r0, _0802DBC8 + ands r0, r1 + orrs r0, r2 + str r0, [sp] + mov r0, sp + bl sub_08003250 + ldr r1, _0802DBCC + ldr r1, [r1] + lsls r2, r5, #1 + adds r1, #0x1c + adds r1, r1, r2 + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003774 + ldrh r0, [r6, #6] + adds r0, #0x10 + strh r0, [r6, #6] + adds r4, #4 + adds r5, #1 + cmp r5, r7 + blt _0802DB62 +_0802DBA4: + movs r0, #0 + bl sub_08002248 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802DBB4: .4byte gUnknown_82D1AC0 +_0802DBB8: .4byte 0xFFFFFF00 +_0802DBBC: .4byte 0x00FFFFFF +_0802DBC0: .4byte 0xFFFF00FF +_0802DBC4: .4byte 0x0000FFFF +_0802DBC8: .4byte 0xFF00FFFF +_0802DBCC: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DB14 + + thumb_func_start sub_0802DBD0 +sub_0802DBD0: @ 0x0802DBD0 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + adds r5, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + strb r1, [r0] + strb r2, [r0, #1] + strb r3, [r0, #2] + ldr r6, _0802DC64 + ldr r0, [r6] + lsls r1, r5, #1 + mov r8, r1 + adds r0, #0x1c + add r0, r8 + ldrb r0, [r0] + movs r1, #0 + bl sub_08003B18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + bl sub_0802C5DC + adds r1, r0, #0 + movs r2, #1 + rsbs r2, r2, #0 + mov sb, r2 + movs r0, #0 + bl sub_08005DAC + movs r4, #0x40 + subs r4, r4, r0 + lsrs r4, r4, #1 + adds r0, r5, #0 + bl sub_0802C5DC + adds r1, r0, #0 + ldr r0, [r6] + adds r0, #0x1c + add r0, r8 + ldrb r0, [r0] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + add r2, sp, #0xc + str r2, [sp] + mov r2, sb + str r2, [sp, #4] + str r1, [sp, #8] + movs r1, #0 + adds r2, r4, #0 + movs r3, #2 + bl sub_08199AFC + ldr r0, [r6] + adds r0, #0x1c + add r0, r8 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802DC64: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DBD0 + + thumb_func_start sub_0802DC68 +sub_0802DC68: @ 0x0802DC68 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #0 + bne _0802DC92 + movs r4, #0 + cmp r4, r5 + bge _0802DCC4 +_0802DC7E: + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + movs r3, #3 + bl sub_0802DBD0 + adds r4, #1 + cmp r4, r5 + blt _0802DC7E + b _0802DCC4 +_0802DC92: + bl sub_0802C5B0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r4, #0 + cmp r4, r5 + bge _0802DCC4 +_0802DCA0: + cmp r6, r4 + beq _0802DCB2 + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + movs r3, #3 + bl sub_0802DBD0 + b _0802DCBE +_0802DCB2: + adds r0, r4, #0 + movs r1, #0 + movs r2, #4 + movs r3, #5 + bl sub_0802DBD0 +_0802DCBE: + adds r4, #1 + cmp r4, r5 + blt _0802DCA0 +_0802DCC4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DC68 + + thumb_func_start sub_0802DCCC +sub_0802DCCC: @ 0x0802DCCC + push {r4, r5, lr} + bl sub_0802C5A0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0 + cmp r4, r5 + bge _0802DCF2 +_0802DCDC: + ldr r0, _0802DD00 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x1c + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + adds r4, #1 + cmp r4, r5 + blt _0802DCDC +_0802DCF2: + movs r0, #0 + bl sub_08002248 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802DD00: .4byte gUnknown_20229B4 + thumb_func_end sub_0802DCCC + + thumb_func_start sub_0802DD04 +sub_0802DD04: @ 0x0802DD04 + push {r4, lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _0802DD48 + ldr r2, [r0] + movs r0, #0 + str r0, [r2, #0x18] + lsrs r1, r1, #0x19 + lsls r1, r1, #0x10 + movs r0, #1 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + ands r4, r0 + lsls r4, r4, #8 + subs r4, #0x28 + lsls r4, r4, #8 + adds r1, r4, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + bl sub_08001B48 + ldr r0, _0802DD4C + movs r1, #4 + bl sub_080A8878 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802DD48: .4byte gUnknown_20229B4 +_0802DD4C: .4byte sub_0802DD88 + thumb_func_end sub_0802DD04 + + thumb_func_start sub_0802DD50 +sub_0802DD50: @ 0x0802DD50 + push {r4, lr} + ldr r4, _0802DD60 + ldr r0, [r4] + ldr r0, [r0, #0x18] + cmp r0, #0x1f + bls _0802DD64 + movs r0, #0 + b _0802DD82 + .align 2, 0 +_0802DD60: .4byte gUnknown_20229B4 +_0802DD64: + movs r0, #1 + movs r1, #0x80 + movs r2, #1 + bl sub_08001E94 + ldr r1, [r4] + ldr r0, [r1, #0x18] + adds r0, #1 + str r0, [r1, #0x18] + cmp r0, #0x1f + bls _0802DD80 + movs r0, #1 + bl sub_08001B5C +_0802DD80: + movs r0, #1 +_0802DD82: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802DD50 + + thumb_func_start sub_0802DD88 +sub_0802DD88: @ 0x0802DD88 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0802DD50 + cmp r0, #0 + bne _0802DD9C + adds r0, r4, #0 + bl sub_080A8964 +_0802DD9C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DD88 + + thumb_func_start sub_0802DDA4 +sub_0802DDA4: @ 0x0802DDA4 + push {lr} + sub sp, #0xc + mov r2, sp + movs r1, #1 + strb r1, [r2] + ldrh r1, [r0] + strh r1, [r2, #2] + ldr r1, [r0, #4] + str r1, [sp, #8] + ldr r0, [r0, #8] + str r0, [sp, #4] + mov r0, sp + bl sub_0800F934 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DDA4 + + thumb_func_start sub_0802DDC8 +sub_0802DDC8: @ 0x0802DDC8 + push {r4, lr} + sub sp, #0xc + adds r4, r1, #0 + ldr r3, _0802DDFC + lsls r2, r0, #4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + movs r1, #0xbc + lsls r1, r1, #6 + cmp r0, r1 + bne _0802DDF8 + adds r1, r3, #2 + adds r1, r2, r1 + mov r0, sp + movs r2, #0xc + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, #1 + beq _0802DE00 +_0802DDF8: + movs r0, #0 + b _0802DE10 + .align 2, 0 +_0802DDFC: .4byte gUnknown_3003130 +_0802DE00: + mov r0, sp + ldrh r0, [r0, #2] + strh r0, [r4] + ldr r0, [sp, #8] + str r0, [r4, #4] + ldr r0, [sp, #4] + str r0, [r4, #8] + movs r0, #1 +_0802DE10: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802DDC8 + + thumb_func_start sub_0802DE18 +sub_0802DE18: @ 0x0802DE18 + push {lr} + sub sp, #0xc + mov r2, sp + movs r1, #2 + strb r1, [r2] + str r0, [sp, #4] + mov r0, sp + bl sub_0800F934 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_0802DE18 + + thumb_func_start sub_0802DE30 +sub_0802DE30: @ 0x0802DE30 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + mov r3, sp + movs r2, #3 + strb r2, [r3] + ldr r3, [r1, #8] + lsls r3, r3, #0xf + ldr r2, [sp, #8] + ldr r4, _0802DEAC + mov r8, r4 + ands r2, r4 + orrs r2, r3 + str r2, [sp, #8] + mov r6, sp + ldrb r2, [r1, #1] + movs r5, #0x1f + adds r3, r5, #0 + ands r3, r2 + ldrb r4, [r6, #3] + movs r2, #0x20 + rsbs r2, r2, #0 + ands r2, r4 + orrs r2, r3 + strb r2, [r6, #3] + mov r3, sp + ldrb r2, [r1] + strb r2, [r3, #1] + ldrh r2, [r1, #2] + strh r2, [r3, #6] + mov r4, sp + ldrh r2, [r1, #4] + mov r1, r8 + ands r2, r1 + ldrh r3, [r4, #8] + ldr r1, _0802DEB0 + ands r1, r3 + orrs r1, r2 + strh r1, [r4, #8] + mov r2, sp + ldrh r1, [r0, #0x10] + strb r1, [r2, #2] + mov r3, sp + ldr r1, [r0, #0x14] + lsls r1, r1, #5 + ldrb r2, [r3, #3] + ands r5, r2 + orrs r5, r1 + strb r5, [r3, #3] + mov r1, sp + ldrh r0, [r0, #0xe] + strh r0, [r1, #4] + mov r0, sp + bl sub_0800F934 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802DEAC: .4byte 0x00007FFF +_0802DEB0: .4byte 0xFFFF8000 + thumb_func_end sub_0802DE30 + + thumb_func_start sub_0802DEB4 +sub_0802DEB4: @ 0x0802DEB4 + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r4, r1, #0 + ldr r2, _0802DF1C + ldrh r0, [r2] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0xbc + lsls r0, r0, #6 + cmp r1, r0 + bne _0802DF20 + adds r1, r2, #2 + mov r0, sp + movs r2, #0xc + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, #3 + bne _0802DF20 + ldr r0, [sp, #8] + lsrs r0, r0, #0xf + str r0, [r4, #8] + mov r0, sp + ldrb r1, [r0, #3] + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1b + strb r0, [r4, #1] + mov r0, sp + ldrb r0, [r0, #1] + strb r0, [r4] + mov r0, sp + ldrh r0, [r0, #6] + strh r0, [r4, #2] + mov r0, sp + ldrh r0, [r0, #8] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x11 + strh r0, [r4, #4] + mov r0, sp + ldrb r0, [r0, #2] + strh r0, [r5, #0x10] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1d + str r1, [r5, #0x14] + mov r0, sp + ldrh r0, [r0, #4] + strh r0, [r5, #0xe] + movs r0, #1 + b _0802DF22 + .align 2, 0 +_0802DF1C: .4byte gUnknown_3003130 +_0802DF20: + movs r0, #0 +_0802DF22: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802DEB4 + + thumb_func_start sub_0802DF2C +sub_0802DF2C: @ 0x0802DF2C + push {r4, lr} + sub sp, #0xc + mov r4, sp + movs r3, #4 + strb r3, [r4] + ldrh r3, [r0, #0x10] + strb r3, [r4, #1] + ldr r3, [r0, #0x14] + strb r3, [r4, #2] + ldr r3, [r0, #0x18] + strb r3, [r4, #3] + mov r3, sp + ldrh r0, [r0, #0xe] + strh r0, [r3, #4] + mov r0, sp + strb r1, [r0, #6] + strh r2, [r0, #8] + bl sub_0800F934 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802DF2C + + thumb_func_start sub_0802DF5C +sub_0802DF5C: @ 0x0802DF5C + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r3, _0802DFB8 + lsls r2, r1, #4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + movs r1, #0xbc + lsls r1, r1, #6 + cmp r0, r1 + bne _0802DFBC + adds r1, r3, #2 + adds r1, r2, r1 + mov r0, sp + movs r2, #0xc + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, #4 + bne _0802DFBC + mov r0, sp + ldrb r0, [r0, #1] + strh r0, [r4, #0x10] + mov r0, sp + ldrb r0, [r0, #2] + str r0, [r4, #0x14] + mov r0, sp + ldrb r0, [r0, #3] + str r0, [r4, #0x18] + mov r0, sp + ldrh r0, [r0, #4] + strh r0, [r4, #0xe] + mov r0, sp + ldrb r0, [r0, #6] + strb r0, [r5] + mov r0, sp + ldrh r0, [r0, #8] + strh r0, [r6] + movs r0, #1 + b _0802DFBE + .align 2, 0 +_0802DFB8: .4byte gUnknown_3003130 +_0802DFBC: + movs r0, #0 +_0802DFBE: + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802DF5C + + thumb_func_start sub_0802DFC8 +sub_0802DFC8: @ 0x0802DFC8 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r3, _0802E014 + lsls r2, r1, #4 + adds r0, r2, r3 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + movs r1, #0xbc + lsls r1, r1, #6 + cmp r0, r1 + bne _0802E018 + adds r1, r3, #2 + adds r1, r2, r1 + mov r0, sp + movs r2, #0xc + bl memcpy + mov r0, sp + ldrb r0, [r0] + cmp r0, #4 + bne _0802E018 + mov r0, sp + ldrb r0, [r0, #1] + strh r0, [r4, #0x10] + mov r0, sp + ldrb r0, [r0, #2] + str r0, [r4, #0x14] + mov r0, sp + ldrb r0, [r0, #3] + str r0, [r4, #0x18] + mov r0, sp + ldrh r0, [r0, #4] + strh r0, [r4, #0xe] + movs r0, #1 + b _0802E01A + .align 2, 0 +_0802E014: .4byte gUnknown_3003130 +_0802E018: + movs r0, #0 +_0802E01A: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802DFC8 + + thumb_func_start sub_0802E024 +sub_0802E024: @ 0x0802E024 + ldr r0, _0802E030 + ldr r0, [r0] + movs r1, #0xfe + lsls r1, r1, #1 + adds r0, r0, r1 + bx lr + .align 2, 0 +_0802E030: .4byte gUnknown_3005AF0 + thumb_func_end sub_0802E024 + + thumb_func_start sub_0802E034 +sub_0802E034: @ 0x0802E034 + push {lr} + bl sub_0802E024 + movs r1, #0 + strh r1, [r0] + str r1, [r0, #0xc] + strh r1, [r0, #4] + strh r1, [r0, #6] + str r1, [r0, #8] + strh r1, [r0, #2] + pop {r0} + bx r0 + thumb_func_end sub_0802E034 + + thumb_func_start sub_0802E04C +sub_0802E04C: @ 0x0802E04C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + bl sub_0802E024 + adds r1, r0, #0 + movs r2, #0 + ldr r0, [r1, #0xc] + cmp r0, r4 + bhs _0802E070 + ldr r0, _0802E098 + cmp r4, r0 + bhi _0802E070 + str r4, [r1, #0xc] + movs r2, #1 +_0802E070: + ldrh r0, [r1] + cmp r0, r5 + bhs _0802E080 + ldr r0, _0802E09C + cmp r5, r0 + bhi _0802E080 + strh r5, [r1] + movs r2, #1 +_0802E080: + ldrh r0, [r1, #4] + cmp r0, r6 + bhs _0802E090 + ldr r0, _0802E09C + cmp r6, r0 + bhi _0802E090 + strh r6, [r1, #4] + movs r2, #1 +_0802E090: + adds r0, r2, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0802E098: .4byte 0x00018696 +_0802E09C: .4byte 0x0000270F + thumb_func_end sub_0802E04C + + thumb_func_start sub_0802E0A0 +sub_0802E0A0: @ 0x0802E0A0 + push {lr} + bl sub_0802E024 + adds r2, r0, #0 + ldrh r1, [r2, #6] + ldr r0, _0802E0B8 + cmp r1, r0 + bhi _0802E0B4 + adds r0, r1, #1 + strh r0, [r2, #6] +_0802E0B4: + pop {r0} + bx r0 + .align 2, 0 +_0802E0B8: .4byte 0x0000270E + thumb_func_end sub_0802E0A0 + + thumb_func_start sub_0802E0BC +sub_0802E0BC: @ 0x0802E0BC + push {r4, lr} + ldr r4, _0802E0D8 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802E0D8: .4byte sub_0802E0DC + thumb_func_end sub_0802E0BC + + thumb_func_start sub_0802E0DC +sub_0802E0DC: @ 0x0802E0DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0802E100 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0802E128 + cmp r0, #1 + bgt _0802E104 + cmp r0, #0 + beq _0802E10E + b _0802E176 + .align 2, 0 +_0802E100: .4byte gUnknown_3005B68 +_0802E104: + cmp r0, #2 + beq _0802E134 + cmp r0, #3 + beq _0802E15C + b _0802E176 +_0802E10E: + ldr r0, _0802E124 + bl sub_08003250 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + bl sub_0802E17C + ldrb r0, [r4, #2] + movs r1, #3 + b _0802E14A + .align 2, 0 +_0802E124: .4byte gUnknown_82D1AFC +_0802E128: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802E176 + b _0802E14E +_0802E134: + ldr r0, _0802E158 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0802E176 + ldrb r0, [r4, #2] + bl sub_08098504 + ldrb r0, [r4, #2] + movs r1, #1 +_0802E14A: + bl sub_08003528 +_0802E14E: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0802E176 + .align 2, 0 +_0802E158: .4byte gUnknown_3002360 +_0802E15C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802E176 + ldrb r0, [r4, #2] + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_0802E176: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0802E0DC + + thumb_func_start sub_0802E17C +sub_0802E17C: @ 0x0802E17C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] + bl sub_0802E024 + ldrh r1, [r0] + str r1, [sp, #0xc] + ldr r1, [r0, #0xc] + str r1, [sp, #0x10] + ldrh r0, [r0, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + lsls r4, r0, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0802E274 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xd0 + bl sub_08098144 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xd + bl sub_080981E0 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0802E278 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r6, #0 + adds r7, r4, #0 + movs r1, #0xff + mov sl, r1 + mov sb, r6 + mov r0, sp + adds r0, #0xc + str r0, [sp, #0x1c] + movs r1, #0xd0 + lsls r1, r1, #0x15 + mov r8, r1 + ldr r5, _0802E27C +_0802E1F2: + ldr r1, _0802E280 + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r2, [r0] + mov r0, r8 + lsrs r4, r0, #0x18 + str r4, [sp] + mov r1, sl + str r1, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [sp, #0x1c] + ldm r0!, {r1} + str r0, [sp, #0x1c] + adds r0, r5, #0 + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + adds r0, r5, #0 + bl sub_0802E284 + movs r0, #1 + adds r1, r5, #0 + movs r2, #0 + bl sub_08005DAC + movs r3, #0xa0 + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r4, [sp] + mov r1, sl + str r1, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_0800449C + movs r1, #0x80 + lsls r1, r1, #0x15 + add r8, r1 + adds r6, #1 + ldr r1, [sp, #0x18] + lsls r0, r1, #0x18 + cmp r6, #2 + bls _0802E1F2 + lsrs r0, r0, #0x18 + bl sub_0800365C + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802E274: .4byte 0x0000021D +_0802E278: .4byte gUnknown_85CCDFE +_0802E27C: .4byte gUnknown_2021C40 +_0802E280: .4byte gUnknown_82D1B04 + thumb_func_end sub_0802E17C + + thumb_func_start sub_0802E284 +sub_0802E284: @ 0x0802E284 + push {lr} + adds r1, r0, #0 + b _0802E28C +_0802E28A: + adds r1, #1 +_0802E28C: + ldrb r0, [r1] + cmp r0, #0xff + beq _0802E29A + cmp r0, #0 + bne _0802E28A + movs r0, #0xff + strb r0, [r1] +_0802E29A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802E284 + + thumb_func_start sub_0802E2A0 +sub_0802E2A0: @ 0x0802E2A0 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0802E2E0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0802E2E4 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + strh r5, [r0, #0xa] + ldr r0, _0802E2E8 + lsls r5, r5, #4 + adds r5, 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 +_0802E2E0: .4byte sub_0802E334 +_0802E2E4: .4byte gUnknown_3005B60 +_0802E2E8: .4byte gUnknown_82D1FD4 + thumb_func_end sub_0802E2A0 + + thumb_func_start sub_0802E2EC +sub_0802E2EC: @ 0x0802E2EC + push {lr} + ldr r0, _0802E310 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _0802E318 + ldr r0, _0802E314 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #2 + strh r0, [r1, #8] + movs r0, #1 + b _0802E31A + .align 2, 0 +_0802E310: .4byte sub_0802E334 +_0802E314: .4byte gUnknown_3005B60 +_0802E318: + movs r0, #0 +_0802E31A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802E2EC + + thumb_func_start sub_0802E320 +sub_0802E320: @ 0x0802E320 + push {lr} + ldr r0, _0802E330 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0802E330: .4byte sub_0802E334 + thumb_func_end sub_0802E320 + + thumb_func_start sub_0802E334 +sub_0802E334: @ 0x0802E334 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0802E358 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #3 + beq _0802E380 + cmp r0, #3 + bgt _0802E35C + cmp r0, #2 + beq _0802E362 + b _0802E3B6 + .align 2, 0 +_0802E358: .4byte gUnknown_3005B68 +_0802E35C: + cmp r0, #4 + beq _0802E39C + b _0802E3B6 +_0802E362: + ldr r1, _0802E37C + movs r2, #2 + ldrsh r0, [r4, r2] + lsls r0, r0, #4 + adds r1, #8 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r0, #3 + strh r0, [r4] + b _0802E3B6 + .align 2, 0 +_0802E37C: .4byte gUnknown_82D1FD4 +_0802E380: + ldr r0, _0802E398 + movs r2, #2 + ldrsh r1, [r4, r2] + lsls r1, r1, #4 + adds r0, #0xc + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _0802E3B6 + .align 2, 0 +_0802E398: .4byte gUnknown_82D1FD4 +_0802E39C: + ldr r0, _0802E3BC + movs r2, #2 + ldrsh r1, [r4, r2] + lsls r1, r1, #4 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + adds r0, r5, #0 + bl sub_080A8964 +_0802E3B6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E3BC: .4byte gUnknown_82D1FD4 + thumb_func_end sub_0802E334 + + thumb_func_start sub_0802E3C0 +sub_0802E3C0: @ 0x0802E3C0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r1, #6 + ldrsh r0, [r4, r1] + lsls r0, r0, #3 + ldr r1, _0802E490 + adds r0, r0, r1 + bl sub_08034388 + movs r2, #8 + ldrsh r0, [r4, r2] + lsls r0, r0, #3 + ldr r1, _0802E494 + adds r0, r0, r1 + bl sub_0800845C + movs r5, #0 + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r5, r0 + bge _0802E428 +_0802E3F4: + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0802E498 + adds r0, r0, r1 + movs r2, #0x12 + ldrsh r1, [r4, r2] + movs r3, #0x14 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #0xe] + bl sub_08006B0C + lsls r1, r5, #1 + adds r1, r1, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x1a] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _0802E3F4 +_0802E428: + movs r5, #0 + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r5, r0 + bge _0802E484 + movs r7, #3 + movs r3, #0xd + rsbs r3, r3, #0 + mov ip, r3 + ldr r6, _0802E49C +_0802E43C: + lsls r0, r5, #1 + adds r0, r0, r4 + movs r1, #0x1a + ldrsh r0, [r0, r1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrb r1, [r4, #0xc] + ands r1, r7 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + mov r0, ip + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + 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, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _0802E43C +_0802E484: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802E490: .4byte gUnknown_82D1F54 +_0802E494: .4byte gUnknown_82D1F64 +_0802E498: .4byte gUnknown_82D1FBC +_0802E49C: .4byte gUnknown_20205AC + thumb_func_end sub_0802E3C0 + + thumb_func_start sub_0802E4A0 +sub_0802E4A0: @ 0x0802E4A0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r1, _0802E520 + adds r4, r4, r1 + movs r5, #0 + strh r5, [r4, #4] + strh r5, [r4, #6] + strh r5, [r4, #8] + movs r1, #0x3c + strh r1, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + movs r1, #3 + strh r1, [r4, #0x10] + movs r1, #0x78 + strh r1, [r4, #0x12] + movs r1, #0x58 + strh r1, [r4, #0x14] + adds r1, r4, #0 + bl sub_0802E3C0 + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0802E524 + adds r0, r0, r5 + movs r1, #4 + bl sub_08007EC0 + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0802E528 + strh r1, [r0, #0x24] + movs r0, #0x1e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #5 + bl sub_08007EC0 + movs r0, #0x1e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x20 + strh r1, [r0, #0x24] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E520: .4byte gUnknown_3005B68 +_0802E524: .4byte gUnknown_20205AC +_0802E528: .4byte 0x0000FFE0 + thumb_func_end sub_0802E4A0 + + thumb_func_start sub_0802E52C +sub_0802E52C: @ 0x0802E52C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0802E540 + adds r4, r1, r0 + b _0802E560 + .align 2, 0 +_0802E540: .4byte gUnknown_3005B68 +_0802E544: + lsls r0, r5, #1 + adds r0, r0, r4 + movs r2, #0x1a + ldrsh r1, [r0, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802E590 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0802E560: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _0802E544 + ldr r1, _0802E594 + movs r2, #6 + ldrsh r0, [r4, r2] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #6] + bl sub_08008280 + ldr r1, _0802E598 + movs r2, #8 + ldrsh r0, [r4, r2] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_08008564 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802E590: .4byte gUnknown_20205AC +_0802E594: .4byte gUnknown_82D1F54 +_0802E598: .4byte gUnknown_82D1F64 + thumb_func_end sub_0802E52C + + thumb_func_start sub_0802E59C +sub_0802E59C: @ 0x0802E59C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x34 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0802E5E0 + adds r5, r0, r1 + movs r1, #0x16 + ldrsh r0, [r5, r1] + movs r2, #0xa + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, #0 + bne _0802E6AE + ldrh r2, [r5, #0x16] + movs r3, #0x16 + ldrsh r1, [r5, r3] + movs r3, #0x14 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0802E6AE + strh r2, [r5, #0x14] + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #4 + bhi _0802E6A8 + lsls r0, r0, #2 + ldr r1, _0802E5E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802E5E0: .4byte gUnknown_3005B68 +_0802E5E4: .4byte _0802E5E8 +_0802E5E8: @ jump table + .4byte _0802E5FC @ case 0 + .4byte _0802E60A @ case 1 + .4byte _0802E60A @ case 2 + .4byte _0802E61E @ case 3 + .4byte _0802E668 @ case 4 +_0802E5FC: + adds r2, r6, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0802E60A: + movs r0, #0x38 + bl sub_080A306C + ldrh r1, [r6, #0x32] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08007EC0 + b _0802E6A8 +_0802E61E: + movs r0, #0x15 + bl sub_080A306C + ldrh r1, [r6, #0x32] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08007EC0 + ldr r4, _0802E664 + movs r2, #0x1c + ldrsh r0, [r5, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r3, #0x1e + ldrsh r1, [r5, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _0802E6A8 + .align 2, 0 +_0802E664: .4byte gUnknown_20205AC +_0802E668: + adds r1, r6, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _0802E6A4 + movs r0, #0x1c + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + movs r0, #4 + strh r0, [r5] + b _0802E6AE + .align 2, 0 +_0802E6A4: .4byte gUnknown_20205AC +_0802E6A8: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] +_0802E6AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0802E59C + + thumb_func_start sub_0802E6B4 +sub_0802E6B4: @ 0x0802E6B4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _0802E708 + adds r6, r4, r5 + movs r0, #0x38 + bl sub_080A306C + ldr r2, _0802E70C + movs r0, #0x1a + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0802E710 + str r1, [r0] + movs r0, #0x1a + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + subs r5, #8 + adds r4, r4, r5 + movs r0, #3 + strh r0, [r4, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802E708: .4byte gUnknown_3005B68 +_0802E70C: .4byte gUnknown_20205AC +_0802E710: .4byte sub_0802E59C + thumb_func_end sub_0802E6B4 + + thumb_func_start sub_0802E714 +sub_0802E714: @ 0x0802E714 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0802E768 + adds r4, r1, r0 + ldr r0, _0802E76C + ldrb r0, [r0] + cmp r0, #0 + beq _0802E778 + ldr r1, _0802E770 + ldrh r0, [r1, #2] + ldr r5, _0802E774 + cmp r0, r5 + bne _0802E73C + ldrh r0, [r1, #4] + strh r0, [r4, #0x16] +_0802E73C: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802E77E + ldrh r0, [r4, #0x18] + adds r0, #1 + 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, #2] + mov r0, sp + bl sub_0800F934 + b _0802E77E + .align 2, 0 +_0802E768: .4byte gUnknown_3005B68 +_0802E76C: .4byte gUnknown_30031C4 +_0802E770: .4byte gUnknown_3003130 +_0802E774: .4byte 0x00007FFF +_0802E778: + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] +_0802E77E: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802E714 + + thumb_func_start sub_0802E788 +sub_0802E788: @ 0x0802E788 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r0, [sp, #0x18] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0802E7E0 + movs r1, #0x50 + str r3, [sp] + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0802E7E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, 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, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802E7E0: .4byte sub_0802E7FC +_0802E7E4: .4byte gUnknown_3005B60 + thumb_func_end sub_0802E788 + + thumb_func_start sub_0802E7E8 +sub_0802E7E8: @ 0x0802E7E8 + push {lr} + ldr r0, _0802E7F8 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0802E7F8: .4byte sub_0802E7FC + thumb_func_end sub_0802E7E8 + + thumb_func_start sub_0802E7FC +sub_0802E7FC: @ 0x0802E7FC + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0802E820 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0802E86C + cmp r0, #1 + bgt _0802E824 + cmp r0, #0 + beq _0802E82A + b _0802E8EE + .align 2, 0 +_0802E820: .4byte gUnknown_3005B68 +_0802E824: + cmp r0, #2 + beq _0802E8B0 + b _0802E8EE +_0802E82A: + ldrh r0, [r5, #4] + ldrh r1, [r5, #6] + bl sub_0802EBB4 + ldrh r0, [r5, #4] + ldrh r1, [r5, #6] + movs r3, #8 + ldrsh r2, [r5, r3] + movs r4, #0xa + ldrsh r3, [r5, r4] + ldrb r4, [r5, #0xc] + str r4, [sp] + bl sub_0802EC0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xe] + ldrh r0, [r5, #4] + ldrh r1, [r5, #6] + movs r3, #8 + 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, #4] + adds r4, #2 + str r4, [sp, #8] + bl sub_0802EC60 + b _0802E8A2 +_0802E86C: + ldrb r0, [r5, #0xe] + bl sub_0802E8FC + cmp r0, #0 + bne _0802E8EE + ldrb r0, [r5, #0xe] + ldrb r1, [r5, #0x10] + ldrb r2, [r5, #0x12] + bl sub_0802EA30 + movs r0, #0xe + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0802E8AC + adds r0, r0, r4 + bl sub_0800730C + movs r3, #0xe + ldrsh r1, [r5, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 +_0802E8A2: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0802E8EE + .align 2, 0 +_0802E8AC: .4byte gUnknown_20205AC +_0802E8B0: + ldrb r0, [r5, #0x10] + bl sub_0802EA94 + cmp r0, #0 + bne _0802E8EE + movs r4, #0x10 + ldrsh r1, [r5, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0802E8F8 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0x12 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrh r0, [r5, #4] + bl sub_08008280 + ldrh r0, [r5, #6] + bl sub_08008564 + adds r0, r6, #0 + bl sub_080A8964 +_0802E8EE: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802E8F8: .4byte gUnknown_20205AC + thumb_func_end sub_0802E7FC + + thumb_func_start sub_0802E8FC +sub_0802E8FC: @ 0x0802E8FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0802E920 + adds r4, r1, r0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #7 + bls _0802E916 + b _0802EA28 +_0802E916: + lsls r0, r0, #2 + ldr r1, _0802E924 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802E920: .4byte gUnknown_20205AC +_0802E924: .4byte _0802E928 +_0802E928: @ jump table + .4byte _0802E948 @ case 0 + .4byte _0802E95A @ case 1 + .4byte _0802E980 @ case 2 + .4byte _0802E990 @ case 3 + .4byte _0802E9B2 @ case 4 + .4byte _0802E9EA @ case 5 + .4byte _0802EA10 @ case 6 + .4byte _0802E9E6 @ case 7 +_0802E948: + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r4, #0 + movs r2, #0x1a + bl sub_08007B30 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0802E95A: + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0802E968 + movs r0, #0x39 + bl sub_080A306C +_0802E968: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0802EA28 + movs r0, #0 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #1 + b _0802EA06 +_0802E980: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0802EA28 + b _0802EA0A +_0802E990: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0802EA28 + movs r0, #0 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + movs r1, #2 + bl sub_08007F70 + b _0802EA28 +_0802E9B2: + ldrh r0, [r4, #0x22] + subs r0, #4 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0802EA28 + ldrh r1, [r4, #0x36] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #1 + bgt _0802E9E2 + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + movs r0, #0 + strh r0, [r4, #0x32] + b _0802EA0A +_0802E9E2: + movs r0, #7 + strh r0, [r4, #0x2e] +_0802E9E6: + movs r0, #0 + b _0802EA2A +_0802E9EA: + ldrh r0, [r4, #0x22] + adds r0, #4 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0802EA28 + movs r0, #0 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #3 +_0802EA06: + bl sub_08007F70 +_0802EA0A: + ldrh r0, [r4, #0x2e] + adds r0, #1 + b _0802EA26 +_0802EA10: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0802EA28 + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + movs r0, #1 +_0802EA26: + strh r0, [r4, #0x2e] +_0802EA28: + movs r0, #1 +_0802EA2A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0802E8FC + + thumb_func_start sub_0802EA30 +sub_0802EA30: @ 0x0802EA30 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _0802EA88 + mov r8, r0 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + adds r5, r4, r0 + ldr r0, _0802EA8C + strh r0, [r5, #0x26] + lsls r3, r2, #4 + adds r3, r3, r2 + lsls r3, r3, #2 + mov r1, r8 + adds r2, r3, r1 + strh r0, [r2, #0x26] + adds r5, #0x3e + ldrb r6, [r5] + movs r1, #5 + rsbs r1, r1, #0 + 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, _0802EA90 + str r0, [r4] + add r3, r8 + str r0, [r3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0802EA88: .4byte gUnknown_20205AC +_0802EA8C: .4byte 0x0000FFD8 +_0802EA90: .4byte sub_0802EAC0 + thumb_func_end sub_0802EA30 + + thumb_func_start sub_0802EA94 +sub_0802EA94: @ 0x0802EA94 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r2, _0802EAB8 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, #0x1c + adds r1, r1, r2 + ldr r1, [r1] + ldr r0, _0802EABC + cmp r1, r0 + bne _0802EAB2 + movs r3, #1 +_0802EAB2: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_0802EAB8: .4byte gUnknown_20205AC +_0802EABC: .4byte sub_0802EAC0 + thumb_func_end sub_0802EA94 + + thumb_func_start sub_0802EAC0 +sub_0802EAC0: @ 0x0802EAC0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x2e + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #4 + bhi _0802EBAA + lsls r0, r0, #2 + ldr r1, _0802EADC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802EADC: .4byte _0802EAE0 +_0802EAE0: @ jump table + .4byte _0802EAF4 @ case 0 + .4byte _0802EB04 @ case 1 + .4byte _0802EB2C @ case 2 + .4byte _0802EB60 @ case 3 + .4byte _0802EB98 @ case 4 +_0802EAF4: + movs r0, #0x40 + strh r0, [r4, #8] + ldrh r0, [r5, #0x26] + lsls r0, r0, #4 + strh r0, [r4, #0xa] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802EB04: + ldrh r1, [r4, #8] + ldrh r2, [r4, #0xa] + adds r0, r1, r2 + strh r0, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r5, #0x26] + cmp r0, #0 + blt _0802EBAA + movs r0, #0x39 + bl sub_080A306C + movs r0, #0 + strh r0, [r5, #0x26] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0802EBAA +_0802EB2C: + ldrh r0, [r4, #2] + adds r0, #0xc + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + ble _0802EB4A + movs r0, #0x39 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #2] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802EB4A: + ldr r0, _0802EB5C + movs r2, #2 + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + adds r1, r1, r0 + movs r2, #0 + ldrsh r0, [r1, r2] + asrs r0, r0, #4 + b _0802EB8E + .align 2, 0 +_0802EB5C: .4byte gUnknown_82FA8CC +_0802EB60: + ldrh r0, [r4, #2] + adds r0, #0x10 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + ble _0802EB7E + movs r0, #0x39 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #2] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802EB7E: + ldr r1, _0802EB94 + movs r2, #2 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 +_0802EB8E: + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + b _0802EBAA + .align 2, 0 +_0802EB94: .4byte gUnknown_82FA8CC +_0802EB98: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _0802EBAA + ldr r0, _0802EBB0 + str r0, [r5, #0x1c] +_0802EBAA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802EBB0: .4byte sub_08007140 + thumb_func_end sub_0802EAC0 + + thumb_func_start sub_0802EBB4 +sub_0802EBB4: @ 0x0802EBB4 + push {r4, lr} + sub sp, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _0802EBFC + ldr r3, [r2, #4] + ldr r2, [r2] + str r2, [sp] + str r3, [sp, #4] + ldr r2, _0802EC00 + ldr r3, [r2, #4] + ldr r2, [r2] + str r2, [sp, #8] + str r3, [sp, #0xc] + lsls r0, r0, #0x10 + ldr r3, _0802EC04 + ldr r2, [sp, #4] + ands r2, r3 + orrs r2, r0 + str r2, [sp, #4] + ldr r2, _0802EC08 + add r4, sp, #8 + ldr r0, [r4, #4] + ands r0, r2 + orrs r0, r1 + str r0, [r4, #4] + mov r0, sp + bl sub_08034388 + adds r0, r4, #0 + bl sub_0800845C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802EBFC: .4byte gUnknown_82D2458 +_0802EC00: .4byte gUnknown_82D2460 +_0802EC04: .4byte 0x0000FFFF +_0802EC08: .4byte 0xFFFF0000 + thumb_func_end sub_0802EBB4 + + thumb_func_start sub_0802EC0C +sub_0802EC0C: @ 0x0802EC0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + mov ip, r3 + ldr r3, [sp, #0x30] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + mov r5, sp + ldr r4, _0802EC5C + 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, #2] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, ip + lsls r6, r0, #0x10 + asrs r6, r6, #0x10 + mov r0, sp + adds r1, r2, #0 + adds r2, r6, #0 + mov r3, r8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0802EC5C: .4byte gUnknown_82D251C + thumb_func_end sub_0802EC0C + + thumb_func_start sub_0802EC60 +sub_0802EC60: @ 0x0802EC60 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + mov ip, r3 + ldr r6, [sp, #0x38] + ldr r3, [sp, #0x3c] + mov sb, r3 + ldr r4, [sp, #0x40] + mov r8, r4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov sl, r6 + mov r4, sp + ldr r3, _0802ED24 + ldm r3!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + ldm r3!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + mov r3, sp + strh r0, [r3] + mov r0, sp + strh r1, [r0, #2] + lsls r2, r2, #0x10 + asrs r4, r2, #0x10 + ldr r0, _0802ED28 + adds r2, r2, r0 + asrs r2, r2, #0x10 + mov r1, ip + lsls r5, r1, #0x10 + asrs r5, r5, #0x10 + mov r0, sp + adds r1, r2, #0 + adds r2, r5, #0 + mov r3, sl + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r3, sb + strh r0, [r3] + adds r4, #0x20 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + mov r3, sl + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r4, r8 + strh r0, [r4] + ldr r2, _0802ED2C + mov r5, sb + movs r6, #0 + ldrsh r1, [r5, r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #4 + orrs r1, r3 + strb r1, [r0] + movs r7, #0 + ldrsh r1, [r4, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + bl sub_08007EC0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802ED24: .4byte gUnknown_82D2534 +_0802ED28: .4byte 0xFFE00000 +_0802ED2C: .4byte gUnknown_20205AC + thumb_func_end sub_0802EC60 + + thumb_func_start sub_0802ED30 +sub_0802ED30: @ 0x0802ED30 + ldr r2, _0802ED40 + ldr r1, _0802ED44 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + bx lr + .align 2, 0 +_0802ED40: .4byte gUnknown_3000DCE +_0802ED44: .4byte 0x04000208 + thumb_func_end sub_0802ED30 + + thumb_func_start sub_0802ED48 +sub_0802ED48: @ 0x0802ED48 + ldr r0, _0802ED54 + ldr r1, _0802ED58 + ldrh r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_0802ED54: .4byte 0x04000208 +_0802ED58: .4byte gUnknown_3000DCE + thumb_func_end sub_0802ED48 + + thumb_func_start sub_0802ED5C +sub_0802ED5C: @ 0x0802ED5C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x9f + bhi _0802ED6E + movs r3, #0xf + ands r3, r2 + cmp r3, #9 + bls _0802ED72 +_0802ED6E: + movs r0, #0xff + b _0802ED80 +_0802ED72: + lsrs r1, r0, #0x1c + movs r0, #0xf + ands r1, r0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r3 +_0802ED80: + pop {r1} + bx r1 + thumb_func_end sub_0802ED5C + + thumb_func_start sub_0802ED84 +sub_0802ED84: @ 0x0802ED84 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + ands r0, r4 + cmp r0, #0 + bne _0802ED9C + adds r0, r4, #0 + movs r1, #0x64 + bl __umodsi3 + cmp r0, #0 + bne _0802EDAA +_0802ED9C: + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r4, #0 + bl __umodsi3 + cmp r0, #0 + bne _0802EDAE +_0802EDAA: + movs r0, #1 + b _0802EDB0 +_0802EDAE: + movs r0, #0 +_0802EDB0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802ED84 + + thumb_func_start sub_0802EDB8 +sub_0802EDB8: @ 0x0802EDB8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + movs r5, #0 + subs r4, r7, #1 + cmp r4, #0 + blt _0802EDF6 +_0802EDD4: + ldr r1, _0802EE3C + adds r0, r5, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_0802ED84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0802EDF0 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0802EDF0: + subs r4, #1 + cmp r4, #0 + bge _0802EDD4 +_0802EDF6: + subs r0, r6, #1 + cmp r0, #0 + ble _0802EE0E + ldr r1, _0802EE40 + adds r4, r0, #0 +_0802EE00: + ldm r1!, {r0} + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + subs r4, #1 + cmp r4, #0 + bne _0802EE00 +_0802EE0E: + cmp r6, #2 + bls _0802EE26 + adds r0, r7, #0 + bl sub_0802ED84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0802EE26 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0802EE26: + mov r1, r8 + adds r0, r5, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0802EE3C: .4byte 0x0000016D +_0802EE40: .4byte gUnknown_82D2558 + thumb_func_end sub_0802EDB8 + + thumb_func_start sub_0802EE44 +sub_0802EE44: @ 0x0802EE44 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6] + bl sub_0802ED5C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6, #1] + bl sub_0802ED5C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6, #2] + bl sub_0802ED5C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0802EDB8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802EE44 + + thumb_func_start sub_0802EE80 +sub_0802EE80: @ 0x0802EE80 + push {r4, r5, lr} + ldr r5, _0802EEAC + movs r0, #0 + strh r0, [r5] + bl sub_0802ED30 + bl SiiRtcUnprotect + bl SiiRtcProbe + ldr r4, _0802EEB0 + strb r0, [r4] + bl sub_0802ED48 + ldrb r4, [r4] + movs r0, #0xf + ands r0, r4 + cmp r0, #1 + beq _0802EEB4 + movs r0, #1 + strh r0, [r5] + b _0802EED2 + .align 2, 0 +_0802EEAC: .4byte gUnknown_3000DB8 +_0802EEB0: .4byte gUnknown_3000DCC +_0802EEB4: + movs r0, #0xf0 + ands r0, r4 + cmp r0, #0 + beq _0802EEBE + movs r0, #2 +_0802EEBE: + strh r0, [r5] + ldr r4, _0802EED8 + adds r0, r4, #0 + bl sub_0802EF4C + adds r0, r4, #0 + bl sub_0802EF60 + ldr r1, _0802EEDC + strh r0, [r1] +_0802EED2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802EED8: .4byte gUnknown_3000DC0 +_0802EEDC: .4byte gUnknown_3000DB8 + thumb_func_end sub_0802EE80 + + thumb_func_start sub_0802EEE0 +sub_0802EEE0: @ 0x0802EEE0 + ldr r0, _0802EEE8 + ldrh r0, [r0] + bx lr + .align 2, 0 +_0802EEE8: .4byte gUnknown_3000DB8 + thumb_func_end sub_0802EEE0 + + thumb_func_start sub_0802EEEC +sub_0802EEEC: @ 0x0802EEEC + push {r4, lr} + adds r2, r0, #0 + ldr r0, _0802EF08 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0802EF10 + adds r1, r2, #0 + ldr r0, _0802EF0C + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + b _0802EF16 + .align 2, 0 +_0802EF08: .4byte gUnknown_3000DB8 +_0802EF0C: .4byte gUnknown_82D254C +_0802EF10: + adds r0, r2, #0 + bl sub_0802EF4C +_0802EF16: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802EEEC + + thumb_func_start sub_0802EF1C +sub_0802EF1C: @ 0x0802EF1C + push {r4, lr} + adds r4, r0, #0 + bl sub_0802ED30 + adds r0, r4, #0 + bl SiiRtcGetDateTime + bl sub_0802ED48 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802EF1C + + thumb_func_start sub_0802EF34 +sub_0802EF34: @ 0x0802EF34 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802ED30 + adds r0, r4, #0 + bl SiiRtcGetStatus + bl sub_0802ED48 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802EF34 + + thumb_func_start sub_0802EF4C +sub_0802EF4C: @ 0x0802EF4C + push {r4, lr} + adds r4, r0, #0 + bl sub_0802EF34 + adds r0, r4, #0 + bl sub_0802EF1C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0802EF4C + + thumb_func_start sub_0802EF60 +sub_0802EF60: @ 0x0802EF60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r1, [r7, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + asrs r4, r0, #0x1f + movs r0, #0x20 + ands r4, r0 + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0802EF86 + movs r0, #0x10 + orrs r4, r0 +_0802EF86: + ldrb r0, [r7] + bl sub_0802ED5C + mov r8, r0 + cmp r0, #0xff + bne _0802EF9A + movs r0, #0x40 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802EF9A: + ldrb r0, [r7, #1] + bl sub_0802ED5C + adds r6, r0, #0 + cmp r6, #0xff + beq _0802EFAE + cmp r6, #0 + beq _0802EFAE + cmp r6, #0xc + ble _0802EFB6 +_0802EFAE: + movs r0, #0x80 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802EFB6: + ldrb r0, [r7, #2] + bl sub_0802ED5C + adds r5, r0, #0 + cmp r5, #0xff + bne _0802EFCE + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802EFCE: + cmp r6, #2 + bne _0802EFE8 + mov r0, r8 + bl sub_0802ED84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0802EFE4 + ldr r1, [r1, #4] + adds r0, r0, r1 + b _0802EFF2 + .align 2, 0 +_0802EFE4: .4byte gUnknown_82D2558 +_0802EFE8: + ldr r0, _0802F058 + subs r1, r6, #1 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] +_0802EFF2: + cmp r5, r0 + ble _0802F002 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802F002: + ldrb r0, [r7, #4] + bl sub_0802ED5C + adds r5, r0, #0 + cmp r5, #0x18 + ble _0802F01A + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r1, #0 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802F01A: + ldrb r0, [r7, #5] + bl sub_0802ED5C + adds r5, r0, #0 + cmp r5, #0x3c + ble _0802F032 + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r1, #0 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802F032: + ldrb r0, [r7, #6] + bl sub_0802ED5C + adds r5, r0, #0 + cmp r5, #0x3c + ble _0802F04A + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + orrs r4, r0 + lsls r0, r4, #0x10 + lsrs r4, r0, #0x10 +_0802F04A: + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0802F058: .4byte gUnknown_82D2558 + thumb_func_end sub_0802EF60 + + thumb_func_start sub_0802F05C +sub_0802F05C: @ 0x0802F05C + push {lr} + bl sub_0802ED30 + bl SiiRtcReset + bl sub_0802ED48 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F05C + + thumb_func_start sub_0802F070 +sub_0802F070: @ 0x0802F070 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + movs r4, #0xf0 + strb r4, [r0] + adds r0, #1 + adds r1, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + strb r4, [r0] + adds r0, #1 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + movs r1, #0xff + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F070 + + thumb_func_start sub_0802F0A8 +sub_0802F0A8: @ 0x0802F0A8 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + movs r2, #2 + movs r3, #2 + bl sub_08008B18 + movs r4, #0xf0 + strb r4, [r0] + adds r0, #1 + adds r1, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_08008B18 + strb r4, [r0] + adds r0, #1 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_08008B18 + movs r1, #0xff + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F0A8 + + thumb_func_start sub_0802F0E0 +sub_0802F0E0: @ 0x0802F0E0 + push {lr} + ldr r3, _0802F0F4 + ldrb r1, [r3, #4] + ldrb r2, [r3, #5] + ldrb r3, [r3, #6] + bl sub_0802F0A8 + pop {r0} + bx r0 + .align 2, 0 +_0802F0F4: .4byte gUnknown_3000DC0 + thumb_func_end sub_0802F0E0 + + thumb_func_start sub_0802F0F8 +sub_0802F0F8: @ 0x0802F0F8 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + movs r2, #2 + movs r3, #4 + bl sub_080089D8 + movs r4, #0xae + strb r4, [r0] + adds r0, #1 + adds r1, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + strb r4, [r0] + adds r0, #1 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + movs r1, #0xff + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F0F8 + + thumb_func_start sub_0802F130 +sub_0802F130: @ 0x0802F130 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + movs r2, #2 + movs r3, #4 + bl sub_08008B18 + movs r4, #0xae + strb r4, [r0] + adds r0, #1 + adds r1, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_08008B18 + strb r4, [r0] + adds r0, #1 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_08008B18 + movs r1, #0xff + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F130 + + thumb_func_start sub_0802F168 +sub_0802F168: @ 0x0802F168 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + bl sub_0802EE44 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5, #6] + bl sub_0802ED5C + ldrb r1, [r6, #4] + subs r0, r0, r1 + strb r0, [r7, #4] + ldrb r0, [r5, #5] + bl sub_0802ED5C + ldrb r1, [r6, #3] + subs r0, r0, r1 + strb r0, [r7, #3] + ldrb r0, [r5, #4] + bl sub_0802ED5C + ldrb r1, [r6, #2] + subs r0, r0, r1 + strb r0, [r7, #2] + ldrh r0, [r6] + subs r4, r4, r0 + strh r4, [r7] + ldrb r1, [r7, #4] + movs r0, #4 + ldrsb r0, [r7, r0] + cmp r0, #0 + bge _0802F1BA + adds r0, r1, #0 + adds r0, #0x3c + strb r0, [r7, #4] + ldrb r0, [r7, #3] + subs r0, #1 + strb r0, [r7, #3] +_0802F1BA: + ldrb r1, [r7, #3] + movs r0, #3 + ldrsb r0, [r7, r0] + cmp r0, #0 + bge _0802F1D0 + adds r0, r1, #0 + adds r0, #0x3c + strb r0, [r7, #3] + ldrb r0, [r7, #2] + subs r0, #1 + strb r0, [r7, #2] +_0802F1D0: + ldrb r1, [r7, #2] + movs r0, #2 + ldrsb r0, [r7, r0] + cmp r0, #0 + bge _0802F1E6 + adds r0, r1, #0 + adds r0, #0x18 + strb r0, [r7, #2] + ldrh r0, [r7] + subs r0, #1 + strh r0, [r7] +_0802F1E6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0802F168 + + thumb_func_start sub_0802F1EC +sub_0802F1EC: @ 0x0802F1EC + push {r4, lr} + ldr r4, _0802F20C + adds r0, r4, #0 + bl sub_0802EEEC + ldr r1, _0802F210 + ldr r0, _0802F214 + ldr r2, [r0] + adds r2, #0x98 + adds r0, r4, #0 + bl sub_0802F168 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802F20C: .4byte gUnknown_3000DC0 +_0802F210: .4byte gUnknown_3005A50 +_0802F214: .4byte gUnknown_3005AF0 + thumb_func_end sub_0802F1EC + + thumb_func_start sub_0802F218 +sub_0802F218: @ 0x0802F218 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + movs r0, #0 + adds r1, r3, #0 + movs r3, #0 + bl sub_0802F22C + pop {r0} + bx r0 + thumb_func_end sub_0802F218 + + thumb_func_start sub_0802F22C +sub_0802F22C: @ 0x0802F22C + push {r4, r5, lr} + ldr r4, _0802F254 + strh r0, [r4] + strb r1, [r4, #2] + strb r2, [r4, #3] + strb r3, [r4, #4] + ldr r5, _0802F258 + adds r0, r5, #0 + bl sub_0802EEEC + ldr r0, _0802F25C + ldr r1, [r0] + adds r1, #0x98 + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_0802F168 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802F254: .4byte gUnknown_3005A50 +_0802F258: .4byte gUnknown_3000DC0 +_0802F25C: .4byte gUnknown_3005AF0 + thumb_func_end sub_0802F22C + + thumb_func_start sub_0802F260 +sub_0802F260: @ 0x0802F260 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r3, [r2, #4] + ldrb r0, [r1, #4] + subs r5, r3, r0 + strb r5, [r4, #4] + ldrb r3, [r2, #3] + ldrb r0, [r1, #3] + subs r6, r3, r0 + strb r6, [r4, #3] + ldrb r0, [r2, #2] + ldrb r3, [r1, #2] + subs r0, r0, r3 + strb r0, [r4, #2] + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r4] + lsls r0, r5, #0x18 + cmp r0, #0 + bge _0802F294 + adds r0, r5, #0 + adds r0, #0x3c + strb r0, [r4, #4] + subs r0, r6, #1 + strb r0, [r4, #3] +_0802F294: + ldrb r1, [r4, #3] + movs r0, #3 + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _0802F2AA + adds r0, r1, #0 + adds r0, #0x3c + strb r0, [r4, #3] + ldrb r0, [r4, #2] + subs r0, #1 + strb r0, [r4, #2] +_0802F2AA: + ldrb r1, [r4, #2] + movs r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _0802F2C0 + adds r0, r1, #0 + adds r0, #0x18 + strb r0, [r4, #2] + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] +_0802F2C0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F260 + + thumb_func_start sub_0802F2C8 +sub_0802F2C8: @ 0x0802F2C8 + push {r4, lr} + ldr r4, _0802F2FC + adds r0, r4, #0 + bl sub_0802EEEC + adds r0, r4, #0 + bl sub_0802EE44 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + ldrb r2, [r4, #4] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r4, [r4, #5] + adds r0, r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0802F2FC: .4byte gUnknown_3000DC0 + thumb_func_end sub_0802F2C8 + + thumb_func_start sub_0802F300 +sub_0802F300: @ 0x0802F300 + push {lr} + ldr r0, _0802F310 + bl sub_0802EE44 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_0802F310: .4byte gUnknown_3000DC0 + thumb_func_end sub_0802F300 + + thumb_func_start sub_0802F314 +sub_0802F314: @ 0x0802F314 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F314 + + thumb_func_start sub_0802F32C +sub_0802F32C: @ 0x0802F32C + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0802F32C + + thumb_func_start sub_0802F340 +sub_0802F340: @ 0x0802F340 + push {lr} + movs r0, #0 + bl sub_0802F358 + pop {r0} + bx r0 + thumb_func_end sub_0802F340 + + thumb_func_start sub_0802F34C +sub_0802F34C: @ 0x0802F34C + push {lr} + movs r0, #1 + bl sub_0802F358 + pop {r0} + bx r0 + thumb_func_end sub_0802F34C + + thumb_func_start sub_0802F358 +sub_0802F358: @ 0x0802F358 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + add r1, sp, #4 + movs r0, #0 + strh r0, [r1] + ldr r1, _0802F434 + add r0, sp, #4 + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0802F438 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r5, #0 + str r5, [sp, #8] + add r0, sp, #8 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0802F43C + str r0, [r1, #8] + ldr r0, [r1, #8] + add r0, sp, #4 + strh r5, [r0] + str r0, [r1] + ldr r0, _0802F440 + str r0, [r1, #4] + ldr r0, _0802F444 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080A133C + ldr r0, _0802F448 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0802F44C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + cmp r4, #0 + beq _0802F450 + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0802F462 + .align 2, 0 +_0802F434: .4byte 0x040000D4 +_0802F438: .4byte 0x8100C000 +_0802F43C: .4byte 0x85000100 +_0802F440: .4byte 0x05000002 +_0802F444: .4byte 0x810001FF +_0802F448: .4byte gUnknown_82D2930 +_0802F44C: .4byte gUnknown_82D2950 +_0802F450: + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0802F520 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_0802F462: + movs r0, #0 + bl sub_080017D4 + ldr r1, _0802F524 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, _0802F528 + bl sub_08003090 + bl sub_08004480 + ldr r1, _0802F52C + movs r0, #0 + bl sub_08031D9C + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + bl sub_08001274 + ldr r0, _0802F530 + bl sub_080006F0 + ldr r0, _0802F534 + bl sub_08000540 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B5C + ldr r0, _0802F538 + movs r1, #0 + bl sub_080A8878 + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0802F520: .4byte 0x0000FFFF +_0802F524: .4byte gUnknown_82D2978 +_0802F528: .4byte gUnknown_82D28C8 +_0802F52C: .4byte 0x000001D5 +_0802F530: .4byte sub_0802F32C +_0802F534: .4byte sub_0802F314 +_0802F538: .4byte sub_0802F53C + thumb_func_end sub_0802F358 + + thumb_func_start sub_0802F53C +sub_0802F53C: @ 0x0802F53C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r6, r0, #3 + ldr r0, _0802F5C0 + mov r8, r0 + adds r4, r6, r0 + ldr r0, _0802F5C4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _0802F564 + b _0802F704 +_0802F564: + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x11 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x31 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc1 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #7 + bl sub_08001144 + bl sub_08008F68 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802F5AA + movs r0, #1 + strh r0, [r4, #0x1e] +_0802F5AA: + ldr r0, _0802F5C8 + ldrh r0, [r0] + cmp r0, #2 + beq _0802F614 + cmp r0, #2 + bgt _0802F5CC + cmp r0, #0 + beq _0802F66C + cmp r0, #1 + beq _0802F5D6 + b _0802F66C + .align 2, 0 +_0802F5C0: .4byte gUnknown_3005B68 +_0802F5C4: .4byte gUnknown_2037C74 +_0802F5C8: .4byte gUnknown_3005F50 +_0802F5CC: + cmp r0, #4 + beq _0802F688 + cmp r0, #0xff + beq _0802F628 + b _0802F66C +_0802F5D6: + strh r0, [r4] + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0802F5EE + bl sub_0809CD68 + cmp r0, #0 + beq _0802F5EE + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802F5EE: + bl sub_0809CD9C + cmp r0, #0 + beq _0802F5FC + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802F5FC: + ldr r0, _0802F60C + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0802F610 + str r0, [r1] + b _0802F69A + .align 2, 0 +_0802F60C: .4byte gUnknown_3005B60 +_0802F610: .4byte sub_0802F76C +_0802F614: + ldr r0, _0802F624 + bl sub_08031B84 + strh r5, [r4] + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + b _0802F696 + .align 2, 0 +_0802F624: .4byte gUnknown_85C8D6B +_0802F628: + ldr r0, _0802F664 + bl sub_08031B84 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _0802F668 + str r1, [r0] + movs r0, #1 + strh r0, [r4] + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0802F652 + bl sub_0809CD68 + cmp r0, #1 + bne _0802F652 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_0802F652: + bl sub_0809CD9C + cmp r0, #1 + bne _0802F69A + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0802F69A + .align 2, 0 +_0802F664: .4byte gUnknown_85C8D44 +_0802F668: .4byte sub_0802F718 +_0802F66C: + movs r0, #0 + strh r0, [r4] + ldr r1, _0802F680 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0802F684 + b _0802F698 + .align 2, 0 +_0802F680: .4byte gUnknown_3005B60 +_0802F684: .4byte sub_0802F76C +_0802F688: + ldr r0, _0802F6BC + bl sub_08031B84 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + strh r5, [r0, #8] +_0802F696: + ldr r1, _0802F6C0 +_0802F698: + str r1, [r0] +_0802F69A: + ldr r5, _0802F6C4 + ldrh r1, [r5] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0802F6F2 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #2 + beq _0802F6D2 + cmp r0, #2 + ble _0802F6C8 + cmp r0, #3 + beq _0802F6EE + b _0802F6F2 + .align 2, 0 +_0802F6BC: .4byte gUnknown_85C8D80 +_0802F6C0: .4byte sub_0802F718 +_0802F6C4: .4byte gUnknown_20229BA +_0802F6C8: + cmp r0, #0 + blt _0802F6F2 + ldrh r0, [r4] + adds r0, #1 + b _0802F6F0 +_0802F6D2: + bl sub_0809CD68 + cmp r0, #0 + bne _0802F6EA + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0802F6F2 + bl sub_0809CD9C + cmp r0, #0 + beq _0802F6F2 +_0802F6EA: + movs r0, #3 + b _0802F6F0 +_0802F6EE: + movs r0, #4 +_0802F6F0: + strh r0, [r5] +_0802F6F2: + ldr r2, _0802F710 + ldrh r1, [r2] + ldr r0, _0802F714 + ands r0, r1 + strh r0, [r2] + strh r0, [r4, #2] + ldrh r0, [r4] + adds r0, #2 + strh r0, [r4, #0x18] +_0802F704: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802F710: .4byte gUnknown_20229BA +_0802F714: .4byte 0x00007FFF + thumb_func_end sub_0802F53C + + thumb_func_start sub_0802F718 +sub_0802F718: @ 0x0802F718 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08004630 + movs r0, #7 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802F754 + ldr r0, _0802F75C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802F754 + movs r0, #7 + bl sub_08003774 + ldr r0, _0802F760 + bl sub_08031F48 + ldr r1, _0802F764 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0802F768 + str r1, [r0] +_0802F754: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802F75C: .4byte gUnknown_3002360 +_0802F760: .4byte gUnknown_82D2900 +_0802F764: .4byte gUnknown_3005B60 +_0802F768: .4byte sub_0802F76C + thumb_func_end sub_0802F718 + + thumb_func_start sub_0802F76C +sub_0802F76C: @ 0x0802F76C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _0802F7D8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802F7F8 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x11 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x31 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc1 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #7 + bl sub_08001144 + bl sub_0802EEE0 + movs r1, #0xff + lsls r1, r1, #4 + ands r1, r0 + cmp r1, #0 + bne _0802F7E4 + ldr r0, _0802F7DC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0802F7E0 + str r0, [r1] + b _0802F7F8 + .align 2, 0 +_0802F7D8: .4byte gUnknown_2037C74 +_0802F7DC: .4byte gUnknown_3005B60 +_0802F7E0: .4byte sub_0802F860 +_0802F7E4: + ldr r0, _0802F800 + bl sub_08031B84 + ldr r1, _0802F804 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0802F808 + str r1, [r0] +_0802F7F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0802F800: .4byte gUnknown_85C8D93 +_0802F804: .4byte gUnknown_3005B60 +_0802F808: .4byte sub_0802F80C + thumb_func_end sub_0802F76C + + thumb_func_start sub_0802F80C +sub_0802F80C: @ 0x0802F80C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08004630 + movs r0, #7 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802F848 + ldr r0, _0802F850 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802F848 + movs r0, #7 + bl sub_08003774 + ldr r0, _0802F854 + bl sub_08031F48 + ldr r1, _0802F858 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0802F85C + str r1, [r0] +_0802F848: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802F850: .4byte gUnknown_3002360 +_0802F854: .4byte gUnknown_82D2900 +_0802F858: .4byte gUnknown_3005B60 +_0802F85C: .4byte sub_0802F860 + thumb_func_end sub_0802F80C + + thumb_func_start sub_0802F860 +sub_0802F860: @ 0x0802F860 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _0802F924 + adds r6, r0, r1 + ldr r0, _0802F928 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0802F88C + b _0802FD6C +_0802F88C: + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x11 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x31 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc1 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #7 + bl sub_08001144 + add r0, sp, #0xc + strh r4, [r0] + movs r1, #0xfe + movs r2, #2 + bl sub_080A1200 + add r1, sp, #0xc + ldr r2, _0802F92C + adds r0, r2, #0 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xfa + movs r2, #2 + bl sub_080A1200 + add r1, sp, #0xc + ldr r2, _0802F930 + adds r0, r2, #0 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xfb + movs r2, #2 + bl sub_080A1200 + add r1, sp, #0xc + ldr r2, _0802F934 + adds r0, r2, #0 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xfc + movs r2, #2 + bl sub_080A1200 + ldr r0, _0802F938 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0802F940 + add r1, sp, #0xc + ldr r2, _0802F93C + adds r0, r2, #0 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xf1 + movs r2, #2 + bl sub_080A1200 + b _0802F952 + .align 2, 0 +_0802F924: .4byte gUnknown_3005B68 +_0802F928: .4byte gUnknown_2037C74 +_0802F92C: .4byte 0x00007FFF +_0802F930: .4byte 0x0000318C +_0802F934: .4byte 0x0000675A +_0802F938: .4byte gUnknown_3005AF0 +_0802F93C: .4byte 0x00007E04 +_0802F940: + add r1, sp, #0xc + ldr r2, _0802F9E4 + adds r0, r2, #0 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xf1 + movs r2, #2 + bl sub_080A1200 +_0802F952: + ldr r7, _0802F9E8 + mov r0, r8 + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r2, #8 + ldrsh r0, [r0, r2] + mov sb, r1 + cmp r0, #1 + beq _0802FA00 + cmp r0, #1 + ble _0802F978 + cmp r0, #2 + bne _0802F972 + b _0802FABC +_0802F972: + cmp r0, #3 + bne _0802F978 + b _0802FBFC +_0802F978: + movs r0, #0 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #1 + movs r1, #0xaa + bl sub_08003B18 + ldr r5, _0802F9EC + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _0802F9F0 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802F9F4 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + ldr r4, _0802F9F8 + ldr r5, _0802F9FC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08031DE4 + adds r4, #8 + b _0802FBDC + .align 2, 0 +_0802F9E4: .4byte 0x0000547F +_0802F9E8: .4byte gUnknown_3005B60 +_0802F9EC: .4byte gUnknown_82D2970 +_0802F9F0: .4byte gUnknown_85C8C70 +_0802F9F4: .4byte gUnknown_85C8C87 +_0802F9F8: .4byte gUnknown_82D28C8 +_0802F9FC: .4byte 0x000001D5 +_0802FA00: + movs r0, #2 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #3 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #4 + movs r1, #0xaa + bl sub_08003B18 + ldr r5, _0802FAA4 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _0802FAA8 + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FAAC + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FAB0 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + bl sub_08031BE8 + movs r0, #2 + bl sub_0800365C + movs r0, #3 + bl sub_0800365C + movs r0, #4 + bl sub_0800365C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + movs r1, #2 + bl sub_08003528 + movs r0, #4 + movs r1, #2 + bl sub_08003528 + ldr r4, _0802FAB4 + ldr r5, _0802FAB8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08031DE4 + adds r0, r4, #0 + adds r0, #8 + adds r1, r5, #0 + bl sub_08031DE4 + adds r4, #0x10 + b _0802FBDC + .align 2, 0 +_0802FAA4: .4byte gUnknown_82D2970 +_0802FAA8: .4byte gUnknown_85C8C7C +_0802FAAC: .4byte gUnknown_85C8C70 +_0802FAB0: .4byte gUnknown_85C8C87 +_0802FAB4: .4byte gUnknown_82D28D8 +_0802FAB8: .4byte 0x000001D5 +_0802FABC: + movs r0, #2 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #3 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #4 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #5 + movs r1, #0xaa + bl sub_08003B18 + ldr r4, _0802FB1C + str r4, [sp] + movs r5, #1 + rsbs r5, r5, #0 + str r5, [sp, #4] + ldr r0, _0802FB20 + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0802FB24 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + movs r1, #0x1e + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0802FB2C + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0802FB28 + b _0802FB3A + .align 2, 0 +_0802FB1C: .4byte gUnknown_82D2970 +_0802FB20: .4byte gUnknown_85C8C7C +_0802FB24: .4byte gUnknown_85C8C70 +_0802FB28: .4byte gUnknown_85C8C91 +_0802FB2C: + bl sub_0809CD68 + cmp r0, #0 + beq _0802FB50 + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0802FB4C +_0802FB3A: + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + b _0802FB64 + .align 2, 0 +_0802FB4C: .4byte gUnknown_85C8CA7 +_0802FB50: + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0802FBE8 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC +_0802FB64: + ldr r0, _0802FBEC + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _0802FBF0 + str r0, [sp, #8] + movs r0, #5 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + bl sub_08031BE8 + movs r0, #2 + bl sub_0800365C + movs r0, #3 + bl sub_0800365C + movs r0, #4 + bl sub_0800365C + movs r0, #5 + bl sub_0800365C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + movs r1, #2 + bl sub_08003528 + movs r0, #4 + movs r1, #2 + bl sub_08003528 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + ldr r4, _0802FBF4 + ldr r5, _0802FBF8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08031DE4 + adds r0, r4, #0 + adds r0, #8 + adds r1, r5, #0 + bl sub_08031DE4 + adds r0, r4, #0 + adds r0, #0x10 + adds r1, r5, #0 + bl sub_08031DE4 + adds r4, #0x18 +_0802FBDC: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08031DE4 + b _0802FD5E + .align 2, 0 +_0802FBE8: .4byte gUnknown_85C8C9C +_0802FBEC: .4byte gUnknown_82D2970 +_0802FBF0: .4byte gUnknown_85C8C87 +_0802FBF4: .4byte gUnknown_82D28D8 +_0802FBF8: .4byte 0x000001D5 +_0802FBFC: + movs r0, #2 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #3 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #4 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #5 + movs r1, #0xaa + bl sub_08003B18 + movs r0, #6 + movs r1, #0xaa + bl sub_08003B18 + ldr r5, _0802FD7C + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _0802FD80 + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FD84 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FD88 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FD8C + str r0, [sp, #8] + movs r0, #5 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0802FD90 + str r0, [sp, #8] + movs r0, #6 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + bl sub_08031BE8 + movs r0, #2 + bl sub_0800365C + movs r0, #3 + bl sub_0800365C + movs r0, #4 + bl sub_0800365C + movs r0, #5 + bl sub_0800365C + movs r0, #6 + bl sub_0800365C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + movs r1, #2 + bl sub_08003528 + movs r0, #4 + movs r1, #2 + bl sub_08003528 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + movs r0, #6 + movs r1, #2 + bl sub_08003528 + ldr r5, _0802FD94 + ldr r4, _0802FD98 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08031DE4 + adds r0, r5, #0 + adds r0, #8 + adds r1, r4, #0 + bl sub_08031DE4 + adds r0, r5, #0 + adds r0, #0x10 + adds r1, r4, #0 + bl sub_08031DE4 + adds r0, r5, #0 + adds r0, #0x18 + adds r1, r4, #0 + bl sub_08031DE4 + adds r0, r5, #0 + adds r0, #0x20 + adds r1, r4, #0 + bl sub_08031DE4 + ldr r0, _0802FD9C + ldr r4, _0802FDA0 + adds r1, r4, #0 + bl sub_081AF058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x1a] + movs r2, #0x1a + ldrsh r1, [r6, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + ldr r1, _0802FDA4 + str r1, [r0] + ldrh r0, [r4] + cmp r0, #4 + bne _0802FD5E + movs r4, #0x80 + lsls r4, r4, #6 + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + movs r0, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + movs r0, #1 + strh r0, [r6, #0x1c] + movs r0, #0x1a + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #1 + strh r1, [r0, #0x26] +_0802FD5E: + ldr r0, _0802FDA8 + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0802FDAC + str r0, [r1] +_0802FD6C: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0802FD7C: .4byte gUnknown_82D2970 +_0802FD80: .4byte gUnknown_85C8C7C +_0802FD84: .4byte gUnknown_85C8C70 +_0802FD88: .4byte gUnknown_85C8C9C +_0802FD8C: .4byte gUnknown_85C8CA7 +_0802FD90: .4byte gUnknown_85C8C87 +_0802FD94: .4byte gUnknown_82D28D8 +_0802FD98: .4byte 0x000001D5 +_0802FD9C: .4byte gUnknown_82D2984 +_0802FDA0: .4byte gUnknown_20229BA +_0802FDA4: .4byte sub_081AF274 +_0802FDA8: .4byte gUnknown_3005B60 +_0802FDAC: .4byte sub_0802FDB0 + thumb_func_end sub_0802F860 + + thumb_func_start sub_0802FDB0 +sub_0802FDB0: @ 0x0802FDB0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0802FDD8 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r0, [r4, #8] + ldrb r1, [r4, #0xa] + movs r3, #0x24 + ldrsh r2, [r4, r3] + bl sub_080303D8 + ldr r0, _0802FDDC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802FDD8: .4byte gUnknown_3005B60 +_0802FDDC: .4byte sub_0802FF4C + thumb_func_end sub_0802FDB0 + + thumb_func_start sub_0802FDE0 +sub_0802FDE0: @ 0x0802FDE0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r4, r1, #3 + ldr r7, _0802FE24 + adds r5, r4, r7 + ldr r1, _0802FE28 + ldrh r2, [r1, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0802FE30 + movs r0, #5 + bl sub_080A306C + bl sub_08008F68 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + adds r0, r7, #0 + subs r0, #8 + adds r0, r4, r0 + ldr r1, _0802FE2C + str r1, [r0] + b _0802FF40 + .align 2, 0 +_0802FE24: .4byte gUnknown_3005B68 +_0802FE28: .4byte gUnknown_3002360 +_0802FE2C: .4byte sub_0802FF7C +_0802FE30: + movs r0, #2 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _0802FE78 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0802FE70 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001144 + adds r0, r7, #0 + subs r0, #8 + adds r0, r4, r0 + ldr r1, _0802FE74 + str r1, [r0] + b _0802FF40 + .align 2, 0 +_0802FE70: .4byte 0x0000FFFF +_0802FE74: .4byte sub_08030284 +_0802FE78: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0802FECA + movs r0, #2 + ldrsh r2, [r5, r0] + cmp r2, #0 + ble _0802FECA + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #3 + bne _0802FEC4 + movs r1, #0x1c + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _0802FEC4 + cmp r2, #1 + bne _0802FEC4 + movs r4, #0x80 + lsls r4, r4, #6 + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001E94 + movs r0, #1 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001E94 + movs r2, #0x1a + ldrsh r1, [r5, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r7, r0 + strh r6, [r5, #0x1c] + strh r6, [r0, #0x1e] +_0802FEC4: + ldrh r0, [r5, #2] + subs r0, #1 + b _0802FF2C +_0802FECA: + ldrh r1, [r1, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802FF40 + movs r0, #2 + ldrsh r1, [r5, r0] + movs r2, #0x18 + ldrsh r0, [r5, r2] + subs r0, #1 + cmp r1, r0 + bge _0802FF40 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #3 + bne _0802FF28 + movs r2, #2 + ldrsh r0, [r5, r2] + cmp r0, #3 + bne _0802FF28 + movs r1, #0x1c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0802FF28 + movs r4, #0x80 + lsls r4, r4, #6 + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + movs r0, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + ldr r2, _0802FF38 + movs r0, #0x1a + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r5, #0x1c] + movs r1, #1 + strh r1, [r0, #0x26] +_0802FF28: + ldrh r0, [r5, #2] + adds r0, #1 +_0802FF2C: + strh r0, [r5, #2] + ldr r1, _0802FF3C + strh r0, [r1] + movs r0, #1 + b _0802FF42 + .align 2, 0 +_0802FF38: .4byte gUnknown_3005B60 +_0802FF3C: .4byte gUnknown_20229BA +_0802FF40: + movs r0, #0 +_0802FF42: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0802FDE0 + + thumb_func_start sub_0802FF4C +sub_0802FF4C: @ 0x0802FF4C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0802FDE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802FF6C + ldr r0, _0802FF74 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0802FF78 + str r0, [r1] +_0802FF6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802FF74: .4byte gUnknown_3005B60 +_0802FF78: .4byte sub_0802FDB0 + thumb_func_end sub_0802FF4C + + thumb_func_start sub_0802FF7C +sub_0802FF7C: @ 0x0802FF7C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _08030024 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802FF9A + b _08030272 +_0802FF9A: + ldr r2, _08030028 + mov r0, r8 + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r0, r0, #3 + adds r6, r0, r2 + movs r2, #8 + ldrsh r0, [r6, r2] + mov sb, r1 + cmp r0, #3 + bne _0802FFBA + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AF2F8 +_0802FFBA: + movs r0, #0 + movs r1, #1 + bl sub_08197060 + movs r0, #1 + movs r1, #1 + bl sub_08197060 + movs r0, #2 + movs r1, #1 + bl sub_08197060 + movs r0, #3 + movs r1, #1 + bl sub_08197060 + movs r0, #4 + movs r1, #1 + bl sub_08197060 + movs r0, #5 + movs r1, #1 + bl sub_08197060 + movs r0, #6 + movs r1, #1 + bl sub_08197060 + movs r0, #7 + movs r1, #1 + bl sub_08197060 + bl sub_08008F68 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #8 + ldrsh r0, [r6, r3] + cmp r0, #1 + beq _0803002C + cmp r0, #1 + ble _08030016 + cmp r0, #2 + beq _0803003E + cmp r0, #3 + beq _08030086 +_08030016: + movs r1, #0xa + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _080300B4 + cmp r0, #1 + bne _080300B4 + b _0803010C + .align 2, 0 +_08030024: .4byte gUnknown_2037C74 +_08030028: .4byte gUnknown_3005B60 +_0803002C: + movs r2, #0xa + ldrsh r0, [r6, r2] + cmp r0, #1 + beq _080300B4 + cmp r0, #1 + ble _080300B0 + cmp r0, #2 + bne _080300B0 + b _0803010C +_0803003E: + movs r3, #0xa + ldrsh r4, [r6, r3] + cmp r4, #1 + beq _080300B4 + cmp r4, #1 + ble _080300B0 + cmp r4, #2 + beq _08030054 + cmp r4, #3 + beq _0803010C + b _080300B0 +_08030054: + bl sub_0809CD9C + cmp r0, #0 + beq _0803007C + movs r1, #0x26 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _08030070 + movs r7, #3 + cmp r5, #0 + bne _0803010E + movs r7, #6 + strh r5, [r6, #8] + b _0803010E +_08030070: + cmp r5, #0 + beq _080300E8 + movs r7, #6 + movs r0, #1 + strh r0, [r6, #8] + b _0803010E +_0803007C: + cmp r5, #0 + beq _08030108 + movs r7, #6 + strh r4, [r6, #8] + b _0803010E +_08030086: + movs r2, #0xa + ldrsh r0, [r6, r2] + cmp r0, #4 + bhi _080300B0 + lsls r0, r0, #2 + ldr r1, _08030098 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08030098: .4byte _0803009C +_0803009C: @ jump table + .4byte _080300B0 @ case 0 + .4byte _080300B4 @ case 1 + .4byte _080300B8 @ case 2 + .4byte _080300EC @ case 3 + .4byte _0803010C @ case 4 +_080300B0: + movs r7, #1 + b _0803010E +_080300B4: + movs r7, #0 + b _0803010E +_080300B8: + ldr r0, _080300D8 + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #0x26 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _080300DC + movs r7, #3 + cmp r5, #0 + bne _0803010E + movs r7, #6 + strh r5, [r1, #8] + b _0803010E + .align 2, 0 +_080300D8: .4byte gUnknown_3005B60 +_080300DC: + cmp r5, #0 + beq _080300E8 + movs r7, #6 + movs r0, #1 + strh r0, [r1, #8] + b _0803010E +_080300E8: + movs r7, #5 + b _0803010E +_080300EC: + cmp r5, #0 + beq _08030108 + movs r7, #6 + ldr r0, _08030104 + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #2 + strh r0, [r1, #8] + b _0803010E + .align 2, 0 +_08030104: .4byte gUnknown_3005B60 +_08030108: + movs r7, #4 + b _0803010E +_0803010C: + movs r7, #2 +_0803010E: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + cmp r7, #6 + bhi _08030150 + lsls r0, r7, #2 + ldr r1, _08030130 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08030130: .4byte _08030134 +_08030134: @ jump table + .4byte _08030150 @ case 0 + .4byte _0803017C @ case 1 + .4byte _08030198 @ case 2 + .4byte _080301B0 @ case 3 + .4byte _080301B8 @ case 4 + .4byte _080301C0 @ case 5 + .4byte _080301D4 @ case 6 +_08030150: + ldr r0, _0803016C + movs r1, #0 + strh r1, [r0] + ldr r0, _08030170 + strh r1, [r0] + ldr r1, _08030174 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030178 + str r1, [r0] + b _08030250 + .align 2, 0 +_0803016C: .4byte gUnknown_20373B4 +_08030170: .4byte gUnknown_20377B4 +_08030174: .4byte gUnknown_3005B60 +_08030178: .4byte sub_080304F0 +_0803017C: + ldr r0, _0803018C + movs r1, #0 + strh r1, [r0] + ldr r0, _08030190 + strh r1, [r0] + ldr r0, _08030194 + b _080301C2 + .align 2, 0 +_0803018C: .4byte gUnknown_20373B4 +_08030190: .4byte gUnknown_20377B4 +_08030194: .4byte sub_08085B98 +_08030198: + ldr r0, _080301A4 + ldr r1, _080301A8 + str r1, [r0, #8] + ldr r0, _080301AC + b _080301C2 + .align 2, 0 +_080301A4: .4byte gUnknown_3002360 +_080301A8: .4byte sub_0802F34C +_080301AC: .4byte sub_080B9C34 +_080301B0: + ldr r0, _080301B4 + b _080301C2 + .align 2, 0 +_080301B4: .4byte sub_080180E4 +_080301B8: + ldr r0, _080301BC + b _080301C2 + .align 2, 0 +_080301BC: .4byte sub_0817882C +_080301C0: + ldr r0, _080301D0 +_080301C2: + bl sub_08000540 + mov r0, r8 + bl sub_080A8964 + b _08030250 + .align 2, 0 +_080301D0: .4byte sub_08018110 +_080301D4: + ldr r1, _0803023C + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r4, #0 + strh r4, [r0, #0xa] + ldr r1, _08030240 + str r1, [r0] + ldr r0, _08030244 + movs r2, #0xf1 + lsls r2, r2, #1 + adds r0, r0, r2 + ldr r1, _08030248 + strh r1, [r0] + ldr r0, _0803024C + adds r0, r0, r2 + strh r1, [r0] + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _08030272 + .align 2, 0 +_0803023C: .4byte gUnknown_3005B60 +_08030240: .4byte sub_080302E4 +_08030244: .4byte gUnknown_20373B4 +_08030248: .4byte 0x00007FFF +_0803024C: .4byte gUnknown_20377B4 +_08030250: + bl sub_080034D4 + cmp r7, #2 + beq _08030264 + ldr r1, _08030260 + movs r0, #0 + strh r0, [r1] + b _08030272 + .align 2, 0 +_08030260: .4byte gUnknown_20229BA +_08030264: + ldr r0, _08030280 + ldrh r1, [r0] + movs r3, #0x80 + lsls r3, r3, #8 + adds r2, r3, #0 + orrs r1, r2 + strh r1, [r0] +_08030272: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08030280: .4byte gUnknown_20229BA + thumb_func_end sub_0802FF7C + + thumb_func_start sub_08030284 +sub_08030284: @ 0x08030284 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + ldr r0, _080302D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080302CC + ldr r0, _080302D8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #3 + bne _080302B8 + ldrh r0, [r1, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AF2F8 +_080302B8: + ldr r0, _080302DC + strh r4, [r0] + bl sub_080034D4 + ldr r0, _080302E0 + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080302CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080302D4: .4byte gUnknown_2037C74 +_080302D8: .4byte gUnknown_3005B60 +_080302DC: .4byte gUnknown_20229BA +_080302E0: .4byte sub_080AA06C + thumb_func_end sub_08030284 + + thumb_func_start sub_080302E4 +sub_080302E4: @ 0x080302E4 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08030308 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #0xa + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0803037C + cmp r1, #1 + bgt _0803030C + cmp r1, #0 + beq _08030316 + b _080303C8 + .align 2, 0 +_08030308: .4byte gUnknown_3005B60 +_0803030C: + cmp r1, #2 + beq _0803038C + cmp r1, #3 + beq _080303A4 + b _080303C8 +_08030316: + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08030350 + cmp r0, #1 + bgt _0803033C + cmp r0, #0 + beq _08030342 + b _08030362 +_0803033C: + cmp r0, #2 + beq _0803035C + b _08030362 +_08030342: + ldr r0, _0803034C + bl sub_08031B84 + b _08030362 + .align 2, 0 +_0803034C: .4byte gUnknown_85C8CB1 +_08030350: + ldr r0, _08030358 + bl sub_08031B84 + b _08030362 + .align 2, 0 +_08030358: .4byte gUnknown_85C8CC7 +_0803035C: + ldr r0, _08030374 + bl sub_08031B84 +_08030362: + ldr r0, _08030378 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _080303C8 + .align 2, 0 +_08030374: .4byte gUnknown_85C8CEB +_08030378: .4byte gUnknown_3005B60 +_0803037C: + ldr r0, _08030388 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + b _08030398 + .align 2, 0 +_08030388: .4byte gUnknown_2037C74 +_0803038C: + bl sub_08004630 + movs r0, #7 + bl sub_080046A8 + lsls r0, r0, #0x10 +_08030398: + cmp r0, #0 + bne _080303C8 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _080303C8 +_080303A4: + ldr r0, _080303D0 + ldrh r0, [r0, #0x2e] + ands r1, r0 + cmp r1, #0 + beq _080303C8 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080303D4 + str r0, [r4] +_080303C8: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080303D0: .4byte gUnknown_3002360 +_080303D4: .4byte sub_08030284 + thumb_func_end sub_080302E4 + + thumb_func_start sub_080303D8 +sub_080303D8: @ 0x080303D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r1, _0803040C + movs r0, #0x40 + bl sub_08001144 + cmp r5, #1 + beq _0803041C + cmp r5, #1 + ble _080303FE + cmp r5, #2 + beq _08030440 + cmp r5, #3 + beq _08030468 +_080303FE: + cmp r4, #0 + beq _08030406 + cmp r4, #1 + beq _08030414 +_08030406: + ldr r1, _08030410 + b _080304CE + .align 2, 0 +_0803040C: .4byte 0x000009E7 +_08030410: .4byte 0x0000011F +_08030414: + ldr r1, _08030418 + b _080304CE + .align 2, 0 +_08030418: .4byte 0x0000213F +_0803041C: + cmp r4, #1 + beq _08030430 + cmp r4, #1 + ble _08030428 + cmp r4, #2 + beq _08030438 +_08030428: + ldr r1, _0803042C + b _080304CE + .align 2, 0 +_0803042C: .4byte 0x0000013F +_08030430: + ldr r1, _08030434 + b _080304CE + .align 2, 0 +_08030434: .4byte 0x0000415F +_08030438: + ldr r1, _0803043C + b _080304CE + .align 2, 0 +_0803043C: .4byte 0x0000617F +_08030440: + cmp r4, #1 + beq _08030458 + cmp r4, #1 + ble _08030450 + cmp r4, #2 + beq _08030460 + cmp r4, #3 + beq _080304CC +_08030450: + ldr r1, _08030454 + b _080304CE + .align 2, 0 +_08030454: .4byte 0x0000013F +_08030458: + ldr r1, _0803045C + b _080304CE + .align 2, 0 +_0803045C: .4byte 0x0000415F +_08030460: + ldr r1, _08030464 + b _080304CE + .align 2, 0 +_08030464: .4byte 0x0000617F +_08030468: + cmp r4, #4 + bhi _08030490 + lsls r0, r4, #2 + ldr r1, _08030478 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08030478: .4byte _0803047C +_0803047C: @ jump table + .4byte _08030490 @ case 0 + .4byte _08030498 @ case 1 + .4byte _080304AC @ case 2 + .4byte _080304C0 @ case 3 + .4byte _080304DC @ case 4 +_08030490: + ldr r1, _08030494 + b _080304CE + .align 2, 0 +_08030494: .4byte 0x0000013F +_08030498: + cmp r6, #0 + beq _080304A4 + ldr r1, _080304A0 + b _080304CE + .align 2, 0 +_080304A0: .4byte 0x0000213F +_080304A4: + ldr r1, _080304A8 + b _080304CE + .align 2, 0 +_080304A8: .4byte 0x0000415F +_080304AC: + cmp r6, #0 + beq _080304B8 + ldr r1, _080304B4 + b _080304CE + .align 2, 0 +_080304B4: .4byte 0x0000415F +_080304B8: + ldr r1, _080304BC + b _080304CE + .align 2, 0 +_080304BC: .4byte 0x0000617F +_080304C0: + cmp r6, #0 + beq _080304CC + ldr r1, _080304C8 + b _080304CE + .align 2, 0 +_080304C8: .4byte 0x0000617F +_080304CC: + ldr r1, _080304D8 +_080304CE: + movs r0, #0x44 + bl sub_08001144 + b _080304E4 + .align 2, 0 +_080304D8: .4byte 0x0000819F +_080304DC: + ldr r1, _080304EC + movs r0, #0x44 + bl sub_08001144 +_080304E4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080304EC: .4byte 0x0000819F + thumb_func_end sub_080303D8 + + thumb_func_start sub_080304F0 +sub_080304F0: @ 0x080304F0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _080305D0 + bl sub_080018C8 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r0, _080305D4 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _080305D8 + ldr r1, _080305DC + bl LZ77UnCompVram + ldr r0, _080305E0 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _080305E4 + movs r1, #1 + movs r2, #0x10 + bl sub_080A1200 + bl sub_080B9710 + bl sub_0800668C + bl sub_08008424 + bl sub_0818CCF8 + adds r0, r4, #0 + bl sub_0803166C + movs r0, #1 + rsbs r0, r0, #0 + movs r5, #0 + thumb_func_end sub_080304F0 + + thumb_func_start sub_0803058C +sub_0803058C: @ 0x0803058C + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _080305E8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0x10] + ldr r1, _080305EC + str r1, [r0] + movs r1, #0xff + strh r1, [r0, #0xc] + strh r1, [r0, #0xe] + movs r1, #0xd8 + strh r1, [r0, #0x16] + movs r0, #0xbb + lsls r0, r0, #1 + bl sub_080A3040 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080305D0: .4byte gUnknown_82D2980 +_080305D4: .4byte gUnknown_82D25C8 +_080305D8: .4byte gUnknown_82D277C +_080305DC: .4byte 0x06003800 +_080305E0: .4byte gUnknown_82D2588 +_080305E4: .4byte gUnknown_82D28B6 +_080305E8: .4byte gUnknown_3005B60 +_080305EC: .4byte sub_080305F0 + thumb_func_end sub_0803058C + + thumb_func_start sub_080305F0 +sub_080305F0: @ 0x080305F0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08030610 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0x16] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08030614 + subs r0, r1, #1 + strh r0, [r4, #0x16] + b _0803065A + .align 2, 0 +_08030610: .4byte gUnknown_3005B60 +_08030614: + ldrb r0, [r4, #0x18] + ldr r2, _08030660 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x88 + strh r0, [r1, #0x20] + movs r0, #0x3c + strh r0, [r1, #0x22] + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + subs r0, #0x41 + ands r0, r2 + strb r0, [r3] + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #1] + adds r0, r5, #0 + movs r1, #0xa + bl sub_080318EC + adds r0, r5, #0 + movs r1, #0x14 + bl sub_08031A74 + movs r0, #0x50 + strh r0, [r4, #0x16] + ldr r0, _08030664 + str r0, [r4] +_0803065A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08030660: .4byte gUnknown_20205AC +_08030664: .4byte sub_08030668 + thumb_func_end sub_080305F0 + + thumb_func_start sub_08030668 +sub_08030668: @ 0x08030668 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080306A8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080306F6 + ldr r2, _080306AC + movs r1, #0x18 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldrh r1, [r4, #0x16] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080306B0 + subs r0, r1, #1 + strh r0, [r4, #0x16] + b _080306F6 + .align 2, 0 +_080306A8: .4byte gUnknown_3005B60 +_080306AC: .4byte gUnknown_20205AC +_080306B0: + ldr r0, _080306FC + bl sub_08003090 + movs r0, #0 + movs r1, #0xdb + bl sub_08031D9C + movs r0, #0 + movs r1, #0xe4 + movs r2, #0xf0 + bl sub_08098104 + movs r0, #0 + movs r1, #1 + bl sub_0803213C + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08032010 + ldr r0, _08030700 + ldr r1, _08030704 + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r0, _08030708 + str r0, [r4] +_080306F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080306FC: .4byte gUnknown_82D2910 +_08030700: .4byte gUnknown_2021C7C +_08030704: .4byte gUnknown_8277095 +_08030708: .4byte sub_0803070C + thumb_func_end sub_08030668 + + thumb_func_start sub_0803070C +sub_0803070C: @ 0x0803070C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08030750 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803074A + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803074A + ldr r1, _08030754 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030758 + str r1, [r0] + ldr r0, _0803075C + ldr r1, _08030760 + bl sub_08008BCC + ldr r1, _08030764 + movs r0, #1 + bl sub_081978A4 + ldr r0, _08030768 + strb r4, [r0] +_0803074A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030750: .4byte gUnknown_2037C74 +_08030754: .4byte gUnknown_3005B60 +_08030758: .4byte sub_0803076C +_0803075C: .4byte gUnknown_2021C7C +_08030760: .4byte gUnknown_85C8F88 +_08030764: .4byte sub_08032098 +_08030768: .4byte gUnknown_3000DD0 + thumb_func_end sub_0803070C + + thumb_func_start sub_0803076C +sub_0803076C: @ 0x0803076C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08030798 + ldr r0, _080307A0 + ldr r1, _080307A4 + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r1, _080307A8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080307AC + str r1, [r0] +_08030798: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080307A0: .4byte gUnknown_2021C7C +_080307A4: .4byte gUnknown_8277102 +_080307A8: .4byte gUnknown_3005B60 +_080307AC: .4byte sub_0803090C + thumb_func_end sub_0803076C + + thumb_func_start sub_080307B0 +sub_080307B0: @ 0x080307B0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _0803083C + ldr r0, _08030840 + mov r8, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r0, [r0, #0x1a] + ldr r1, _08030844 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + movs r5, #0 + movs r1, #0x64 + strh r1, [r2, #0x20] + movs r1, #0x4b + strh r1, [r2, #0x22] + movs r1, #0x3e + adds r1, r1, r2 + mov ip, r1 + ldrb r3, [r1] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + mov r3, ip + strb r1, [r3] + strh r5, [r2, #0x2e] + ldrb r1, [r2, #5] + lsrs r1, r1, #4 + str r5, [sp] + str r5, [sp, #4] + movs r2, #0x20 + str r2, [sp, #8] + ldr r2, _08030848 + str r2, [sp, #0xc] + ldr r2, _0803084C + str r2, [sp, #0x10] + movs r2, #0x70 + movs r3, #0x3a + bl sub_08075E40 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + ldr r1, _08030850 + str r1, [r0] + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r6 + strh r5, [r0, #0x16] + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803083C: .4byte gUnknown_3005B60 +_08030840: .4byte gUnknown_3000DD0 +_08030844: .4byte gUnknown_20205AC +_08030848: .4byte 0x0000FFFF +_0803084C: .4byte 0x00000127 +_08030850: .4byte sub_08030854 + thumb_func_end sub_080307B0 + + thumb_func_start sub_08030854 +sub_08030854: @ 0x08030854 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08030898 + adds r5, r0, r1 + subs r1, #8 + mov r8, r1 + ldr r2, _0803089C + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + mov r1, r8 + adds r6, r0, r1 + movs r0, #0x1a + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080308A0 + adds r3, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + adds r7, r2, #0 + cmp r0, #0 + beq _080308A4 + cmp r0, #1 + beq _080308BC + b _080308D8 + .align 2, 0 +_08030898: .4byte gUnknown_3005B68 +_0803089C: .4byte gUnknown_3000DD0 +_080308A0: .4byte gUnknown_20205AC +_080308A4: + ldr r1, [r3, #0x1c] + ldr r0, _080308B8 + cmp r1, r0 + bne _080308FA + ldrb r1, [r3, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #1] + b _080308D8 + .align 2, 0 +_080308B8: .4byte sub_08007140 +_080308BC: + movs r1, #0x16 + ldrsh r0, [r6, r1] + cmp r0, #0x5f + ble _080308FA + adds r0, r4, #0 + bl sub_080A8964 + ldrb r1, [r7] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + mov r1, r8 + adds r2, r0, r1 + b _080308EA +_080308D8: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + ldr r2, _08030904 + ldrb r1, [r7] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r2, r0, r2 +_080308EA: + ldrh r3, [r2, #0x16] + movs r0, #0x16 + ldrsh r1, [r2, r0] + ldr r0, _08030908 + cmp r1, r0 + bgt _080308FA + adds r0, r3, #1 + strh r0, [r2, #0x16] +_080308FA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08030904: .4byte gUnknown_3005B60 +_08030908: .4byte 0x00003FFF + thumb_func_end sub_08030854 + + thumb_func_start sub_0803090C +sub_0803090C: @ 0x0803090C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0803093E + ldr r0, _08030944 + strb r1, [r0] + ldr r0, _08030948 + ldr r1, _0803094C + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r1, _08030950 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030954 + str r1, [r0] +_0803093E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030944: .4byte gUnknown_20229B8 +_08030948: .4byte gUnknown_2021C7C +_0803094C: .4byte gUnknown_82771F4 +_08030950: .4byte gUnknown_3005B60 +_08030954: .4byte sub_08030958 + thumb_func_end sub_0803090C + + thumb_func_start sub_08030958 +sub_08030958: @ 0x08030958 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080309BC + ldr r5, _080309C4 + ldr r0, _080309C8 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x18 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r3, [r1, #1] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + movs r3, #4 + orrs r0, r3 + strb r0, [r1, #1] + movs r0, #0x1a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #1] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, #1] + adds r0, r6, #0 + movs r1, #2 + bl sub_0803180C + adds r0, r6, #0 + movs r1, #1 + bl sub_080319C8 + movs r0, #0x40 + strh r0, [r4, #0x16] + ldr r0, _080309CC + str r0, [r4] +_080309BC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080309C4: .4byte gUnknown_20205AC +_080309C8: .4byte gUnknown_3005B60 +_080309CC: .4byte sub_080309D0 + thumb_func_end sub_08030958 + + thumb_func_start sub_080309D0 +sub_080309D0: @ 0x080309D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080309FC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + ldrh r3, [r2, #0x10] + movs r0, #0x10 + ldrsh r1, [r2, r0] + movs r0, #0x3c + rsbs r0, r0, #0 + cmp r1, r0 + beq _08030A00 + subs r0, r3, #2 + strh r0, [r2, #0x10] + ldrh r1, [r2, #0x10] + movs r0, #0x14 + bl sub_08001144 + b _08030A08 + .align 2, 0 +_080309FC: .4byte gUnknown_3005B60 +_08030A00: + ldr r0, _08030A0C + strh r0, [r2, #0x10] + ldr r0, _08030A10 + str r0, [r2] +_08030A08: + pop {r0} + bx r0 + .align 2, 0 +_08030A0C: .4byte 0x0000FFC4 +_08030A10: .4byte sub_08030A14 + thumb_func_end sub_080309D0 + + thumb_func_start sub_08030A14 +sub_08030A14: @ 0x08030A14 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _08030A6C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08030ABA + ldr r2, _08030A70 + movs r0, #0x18 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r7, #4 + orrs r1, r7 + strb r1, [r0] + movs r0, #0x1a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + ldrh r0, [r4, #0x16] + movs r1, #0x16 + ldrsh r6, [r4, r1] + cmp r6, #0 + beq _08030A74 + subs r0, #1 + strh r0, [r4, #0x16] + b _08030ABA + .align 2, 0 +_08030A6C: .4byte gUnknown_3005B60 +_08030A70: .4byte gUnknown_20205AC +_08030A74: + ldrb r3, [r4, #0x1c] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0xb4 + strh r0, [r1, #0x20] + movs r0, #0x3c + strh r0, [r1, #0x22] + movs r2, #0x3e + adds r2, r2, r1 + mov ip, r2 + ldrb r2, [r2] + subs r0, #0x41 + ands r0, r2 + mov r2, ip + strb r0, [r2] + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r7 + strb r0, [r1, #1] + strh r3, [r4, #0xc] + strh r6, [r4, #0x14] + adds r0, r5, #0 + movs r1, #2 + bl sub_080318EC + adds r0, r5, #0 + movs r1, #1 + bl sub_08031A74 + ldr r0, _08030AC0 + str r0, [r4] +_08030ABA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08030AC0: .4byte sub_08030AC4 + thumb_func_end sub_08030A14 + + thumb_func_start sub_08030AC4 +sub_08030AC4: @ 0x08030AC4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08030AFC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, r1, r2 + movs r1, #0x12 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _08030AF8 + ldr r2, _08030B00 + movs r1, #0xc + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, _08030B04 + str r0, [r3] +_08030AF8: + pop {r0} + bx r0 + .align 2, 0 +_08030AFC: .4byte gUnknown_3005B60 +_08030B00: .4byte gUnknown_20205AC +_08030B04: .4byte sub_08030B08 + thumb_func_end sub_08030AC4 + + thumb_func_start sub_08030B08 +sub_08030B08: @ 0x08030B08 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_08032010 + ldr r0, _08030B38 + ldr r1, _08030B3C + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r1, _08030B40 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030B44 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030B38: .4byte gUnknown_2021C7C +_08030B3C: .4byte gUnknown_8277200 +_08030B40: .4byte gUnknown_3005B60 +_08030B44: .4byte sub_08030B48 + thumb_func_end sub_08030B08 + + thumb_func_start sub_08030B48 +sub_08030B48: @ 0x08030B48 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08030B6A + bl sub_08031AB4 + ldr r0, _08030B70 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08030B74 + str r0, [r1] +_08030B6A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030B70: .4byte gUnknown_3005B60 +_08030B74: .4byte sub_08030B78 + thumb_func_end sub_08030B48 + + thumb_func_start sub_08030B78 +sub_08030B78: @ 0x08030B78 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08031B20 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + beq _08030B92 + cmp r4, #1 + beq _08030B92 + lsls r4, r5, #2 + b _08030BB6 +_08030B92: + movs r0, #5 + bl sub_080A306C + ldr r0, _08030C00 + ldr r0, [r0] + strb r4, [r0, #8] + movs r0, #1 + movs r1, #1 + bl sub_08031FD8 + ldr r1, _08030C04 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030C08 + str r1, [r0] + adds r4, r2, #0 +_08030BB6: + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _08030C04 + adds r0, r4, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r3, r0 + beq _08030BF8 + strh r3, [r4, #0x14] + ldr r2, _08030C0C + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #1] + adds r0, r5, #0 + movs r1, #0 + bl sub_0803180C + ldr r0, _08030C10 + str r0, [r4] +_08030BF8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08030C00: .4byte gUnknown_3005AF0 +_08030C04: .4byte gUnknown_3005B60 +_08030C08: .4byte sub_08030D14 +_08030C0C: .4byte gUnknown_20205AC +_08030C10: .4byte sub_08030C14 + thumb_func_end sub_08030B78 + + thumb_func_start sub_08030C14 +sub_08030C14: @ 0x08030C14 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08030C44 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r5, [r4, #0xc] + movs r2, #0x12 + ldrsh r0, [r4, r2] + adds r7, r1, #0 + cmp r0, #0 + bne _08030C4C + ldr r0, _08030C48 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + adds r0, #4 + strh r0, [r1, #0x20] + b _08030CB2 + .align 2, 0 +_08030C44: .4byte gUnknown_3005B60 +_08030C48: .4byte gUnknown_20205AC +_08030C4C: + ldr r3, _08030C6C + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08030C70 + ldrb r5, [r4, #0x1e] + b _08030C72 + .align 2, 0 +_08030C6C: .4byte gUnknown_20205AC +_08030C70: + ldrb r5, [r4, #0x1c] +_08030C72: + lsls r2, r5, #4 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r2, r2, r3 + movs r0, #0xf0 + strh r0, [r2, #0x20] + movs r0, #0x3c + strh r0, [r2, #0x22] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + subs r0, #0x41 + ands r0, r1 + strb r0, [r3] + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r7 + strh r5, [r4, #0xc] + ldrb r1, [r2, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #1] + adds r0, r6, #0 + movs r1, #0 + bl sub_080318EC + ldr r0, _08030CB8 + str r0, [r4] +_08030CB2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08030CB8: .4byte sub_08030CBC + thumb_func_end sub_08030C14 + + thumb_func_start sub_08030CBC +sub_08030CBC: @ 0x08030CBC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08030CE8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, r1, r2 + ldrb r1, [r3, #0xc] + ldr r2, _08030CEC + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrh r1, [r2, #0x20] + movs r4, #0x20 + ldrsh r0, [r2, r4] + cmp r0, #0xb4 + ble _08030CF0 + subs r0, r1, #4 + strh r0, [r2, #0x20] + b _08030D0A + .align 2, 0 +_08030CE8: .4byte gUnknown_3005B60 +_08030CEC: .4byte gUnknown_20205AC +_08030CF0: + movs r0, #0xb4 + strh r0, [r2, #0x20] + movs r1, #0x12 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _08030D0A + ldrb r0, [r2, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2, #1] + ldr r0, _08030D10 + str r0, [r3] +_08030D0A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030D10: .4byte sub_08030B78 + thumb_func_end sub_08030CBC + + thumb_func_start sub_08030D14 +sub_08030D14: @ 0x08030D14 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_08032010 + ldr r0, _08030D44 + ldr r1, _08030D48 + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r1, _08030D4C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030D50 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030D44: .4byte gUnknown_2021C7C +_08030D48: .4byte gUnknown_8277213 +_08030D4C: .4byte gUnknown_3005B60 +_08030D50: .4byte sub_08030D54 + thumb_func_end sub_08030D14 + + thumb_func_start sub_08030D54 +sub_08030D54: @ 0x08030D54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08030D72 + ldr r0, _08030D78 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08030D7C + str r0, [r1] +_08030D72: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030D78: .4byte gUnknown_3005B60 +_08030D7C: .4byte sub_08030D80 + thumb_func_end sub_08030D54 + + thumb_func_start sub_08030D80 +sub_08030D80: @ 0x08030D80 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08030DC4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08030D9C + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08030DBA +_08030D9C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08030DC8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030DCC + str r1, [r0] +_08030DBA: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030DC4: .4byte gUnknown_3002360 +_08030DC8: .4byte gUnknown_3005B60 +_08030DCC: .4byte sub_08030DD0 + thumb_func_end sub_08030D80 + + thumb_func_start sub_08030DD0 +sub_08030DD0: @ 0x08030DD0 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08030E34 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08030E2C + bl sub_080034D4 + ldr r1, _08030E38 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x1a] + bl sub_0818D54C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08031B30 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _08030E3C + ldr r1, [r0] + ldrb r2, [r1, #8] + str r5, [sp] + ldr r0, _08030E40 + str r0, [sp, #4] + movs r0, #0 + movs r3, #0 + bl sub_080E2244 +_08030E2C: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08030E34: .4byte gUnknown_2037C74 +_08030E38: .4byte gUnknown_3005B60 +_08030E3C: .4byte gUnknown_3005AF0 +_08030E40: .4byte sub_080313B8 + thumb_func_end sub_08030DD0 + + thumb_func_start sub_08030E44 +sub_08030E44: @ 0x08030E44 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_08032010 + ldr r0, _08030E74 + ldr r1, _08030E78 + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r1, _08030E7C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030E80 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030E74: .4byte gUnknown_2021C7C +_08030E78: .4byte gUnknown_8277224 +_08030E7C: .4byte gUnknown_3005B60 +_08030E80: .4byte sub_08030E84 + thumb_func_end sub_08030E44 + + thumb_func_start sub_08030E84 +sub_08030E84: @ 0x08030E84 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08030EB8 + movs r0, #2 + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #2 + movs r1, #1 + movs r2, #0xdb + movs r3, #0xc7 + bl sub_080320C4 + ldr r1, _08030EC0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08030EC4 + str r1, [r0] +_08030EB8: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08030EC0: .4byte gUnknown_3005B60 +_08030EC4: .4byte sub_08030EC8 + thumb_func_end sub_08030E84 + + thumb_func_start sub_08030EC8 +sub_08030EC8: @ 0x08030EC8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08030EEE + cmp r1, #0 + bgt _08030EE8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08030F3C + b _08030F50 +_08030EE8: + cmp r1, #1 + beq _08030F3C + b _08030F50 +_08030EEE: + movs r0, #5 + bl sub_080A306C + ldr r2, _08030F30 + ldr r0, _08030F34 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #1] + adds r0, r5, #0 + movs r1, #2 + bl sub_0803180C + adds r0, r5, #0 + movs r1, #1 + bl sub_080319C8 + ldr r0, _08030F38 + str r0, [r4] + b _08030F50 + .align 2, 0 +_08030F30: .4byte gUnknown_20205AC +_08030F34: .4byte gUnknown_3005B60 +_08030F38: .4byte sub_08030F60 +_08030F3C: + movs r0, #5 + bl sub_080A306C + ldr r0, _08030F58 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08030F5C + str r0, [r1] +_08030F50: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08030F58: .4byte gUnknown_3005B60 +_08030F5C: .4byte sub_08030B08 + thumb_func_end sub_08030EC8 + + thumb_func_start sub_08030F60 +sub_08030F60: @ 0x08030F60 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08030F88 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0x10] + movs r3, #0x10 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08030F8C + adds r0, r2, #2 + strh r0, [r1, #0x10] + ldrh r1, [r1, #0x10] + movs r0, #0x14 + bl sub_08001144 + b _08030F90 + .align 2, 0 +_08030F88: .4byte gUnknown_3005B60 +_08030F8C: + ldr r0, _08030F94 + str r0, [r1] +_08030F90: + pop {r0} + bx r0 + .align 2, 0 +_08030F94: .4byte sub_08030F98 + thumb_func_end sub_08030F60 + + thumb_func_start sub_08030F98 +sub_08030F98: @ 0x08030F98 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08031068 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r7, r0, r1 + movs r1, #0x12 + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _08031060 + ldr r5, _0803106C + movs r2, #0x1c + ldrsh r1, [r7, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #4 + mov ip, r3 + mov r2, ip + orrs r1, r2 + strb r1, [r0] + movs r3, #0x1e + ldrsh r1, [r7, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r7, #0x18] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r0, #0x88 + strh r0, [r1, #0x20] + movs r0, #0x3c + strh r0, [r1, #0x22] + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + movs r4, #5 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r3] + ldrb r3, [r1, #1] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + mov r3, ip + orrs r0, r3 + strb r0, [r1, #1] + ldrb r1, [r7, #0x1a] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x64 + strh r1, [r0, #0x20] + movs r1, #0x4b + strh r1, [r0, #0x22] + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + ands r4, r1 + strb r4, [r3] + ldrb r1, [r0, #1] + ands r2, r1 + mov r1, ip + orrs r2, r1 + strb r2, [r0, #1] + adds r0, r6, #0 + movs r1, #2 + bl sub_080318EC + adds r0, r6, #0 + movs r1, #1 + bl sub_08031A74 + movs r0, #0 + bl sub_08032010 + ldr r0, _08031070 + ldr r1, _08031074 + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r0, _08031078 + str r0, [r7] +_08031060: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08031068: .4byte gUnknown_3005B60 +_0803106C: .4byte gUnknown_20205AC +_08031070: .4byte gUnknown_2021C7C +_08031074: .4byte gUnknown_827722D +_08031078: .4byte sub_0803107C + thumb_func_end sub_08030F98 + + thumb_func_start sub_0803107C +sub_0803107C: @ 0x0803107C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08031118 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08031112 + ldr r7, _0803111C + movs r1, #0x18 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #1] + movs r6, #0xd + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1, #1] + movs r1, #0x1a + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1, #1] + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08031112 + movs r0, #0x18 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r2, [r0, #1] + adds r1, r6, #0 + ands r1, r2 + movs r3, #4 + orrs r1, r3 + strb r1, [r0, #1] + movs r1, #0x1a + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #1] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #1] + adds r0, r5, #0 + movs r1, #2 + bl sub_0803180C + adds r0, r5, #0 + movs r1, #1 + bl sub_080319C8 + movs r0, #0x40 + strh r0, [r4, #0x16] + ldr r0, _08031120 + str r0, [r4] +_08031112: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08031118: .4byte gUnknown_3005B60 +_0803111C: .4byte gUnknown_20205AC +_08031120: .4byte sub_08031124 + thumb_func_end sub_0803107C + + thumb_func_start sub_08031124 +sub_08031124: @ 0x08031124 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0803117C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r2, #0x12 + ldrsh r0, [r4, r2] + adds r7, r1, #0 + cmp r0, #0 + beq _080311F0 + ldr r2, _08031180 + movs r3, #0x18 + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #4 + orrs r1, r3 + strb r1, [r0] + movs r0, #0x1a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + ldrh r1, [r4, #0x16] + movs r3, #0x16 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08031184 + subs r0, r1, #1 + strh r0, [r4, #0x16] + b _080311F0 + .align 2, 0 +_0803117C: .4byte gUnknown_3005B60 +_08031180: .4byte gUnknown_20205AC +_08031184: + ldr r0, _08031194 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _08031198 + ldrb r5, [r4, #0x1e] + b _0803119A + .align 2, 0 +_08031194: .4byte gUnknown_3005AF0 +_08031198: + ldrb r5, [r4, #0x1c] +_0803119A: + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x78 + strh r0, [r1, #0x20] + movs r0, #0x3c + strh r0, [r1, #0x22] + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + subs r0, #0x41 + ands r0, r2 + strb r0, [r3] + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #1] + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r7 + strh r5, [r4, #0xc] + adds r0, r6, #0 + movs r1, #2 + bl sub_080318EC + adds r0, r6, #0 + movs r1, #1 + bl sub_08031A74 + ldr r0, _080311F8 + ldr r1, _080311FC + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r0, _08031200 + str r0, [r4] +_080311F0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080311F8: .4byte gUnknown_2021C7C +_080311FC: .4byte gUnknown_8277265 +_08031200: .4byte sub_08031204 + thumb_func_end sub_08031124 + + thumb_func_start sub_08031204 +sub_08031204: @ 0x08031204 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080312A8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r6, r1, r2 + movs r1, #0x12 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0803129C + ldr r7, _080312AC + movs r1, #0xc + ldrsh r0, [r6, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + bl sub_08196E18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #0 + bne _0803129C + ldrb r0, [r6, #0xc] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r5, r4, r7 + ldrb r1, [r5, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #1] + adds r0, r7, #0 + adds r0, #0x10 + adds r0, r4, r0 + ldr r1, _080312B0 + str r1, [r0] + adds r0, r5, #0 + bl sub_08008140 + adds r0, r5, #0 + movs r1, #0 + bl sub_08007F70 + adds r0, r7, #0 + adds r0, #0x1c + adds r4, r4, r0 + ldr r0, _080312B4 + str r0, [r4] + ldr r0, _080312B8 + mov r1, r8 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #4 + bl sub_080A2B08 + ldr r0, _080312BC + str r0, [r6] +_0803129C: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080312A8: .4byte gUnknown_3005B60 +_080312AC: .4byte gUnknown_20205AC +_080312B0: .4byte gUnknown_82D29A4 +_080312B4: .4byte sub_08031618 +_080312B8: .4byte 0x0000FFFF +_080312BC: .4byte sub_080312C0 + thumb_func_end sub_08031204 + + thumb_func_start sub_080312C0 +sub_080312C0: @ 0x080312C0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080312F0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, r1, r2 + ldrb r1, [r3, #0xc] + ldr r2, _080312F4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _080312EA + ldr r0, _080312F8 + str r0, [r3] +_080312EA: + pop {r0} + bx r0 + .align 2, 0 +_080312F0: .4byte gUnknown_3005B60 +_080312F4: .4byte gUnknown_20205AC +_080312F8: .4byte sub_080312FC + thumb_func_end sub_080312C0 + + thumb_func_start sub_080312FC +sub_080312FC: @ 0x080312FC + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08031354 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803134A + ldr r0, _08031358 + lsls r4, r2, #2 + adds r4, r4, r2 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r2, [r4, #0xc] + ldr r1, _0803135C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08031360 + str r1, [r0] + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _08031364 + ldr r1, _08031368 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0803136C + str r0, [r4] +_0803134A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031354: .4byte gUnknown_2037C74 +_08031358: .4byte gUnknown_3005B60 +_0803135C: .4byte gUnknown_20205AC +_08031360: .4byte sub_08031614 +_08031364: .4byte 0xFFFF0000 +_08031368: .4byte 0x0000FFFF +_0803136C: .4byte sub_08031370 + thumb_func_end sub_080312FC + + thumb_func_start sub_08031370 +sub_08031370: @ 0x08031370 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080313AC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080313A6 + bl sub_080034D4 + ldr r1, _080313B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x1a] + bl sub_0818D54C + bl sub_0818CCF8 + ldr r0, _080313B4 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_080313A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080313AC: .4byte gUnknown_2037C74 +_080313B0: .4byte gUnknown_3005B60 +_080313B4: .4byte sub_08085860 + thumb_func_end sub_08031370 + + thumb_func_start sub_080313B8 +sub_080313B8: @ 0x080313B8 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #0 + bl sub_080017D4 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r1, _080314E0 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + ldr r0, _080314E4 + bl sub_080018C8 + movs r0, #0 + bl sub_080006F0 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + add r0, sp, #4 + movs r4, #0 + strh r4, [r0] + ldr r1, _080314E8 + str r0, [r1] + movs r4, #0xc0 + lsls r4, r4, #0x13 + str r4, [r1, #4] + ldr r0, _080314EC + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0 + str r2, [sp, #8] + add r0, sp, #8 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _080314F0 + str r0, [r1, #8] + ldr r0, [r1, #8] + add r0, sp, #4 + strh r2, [r0] + str r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _080314F4 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080A133C + ldr r0, _080314F8 + adds r1, r4, #0 + bl LZ77UnCompVram + ldr r0, _080314FC + ldr r1, _08031500 + bl LZ77UnCompVram + ldr r0, _08031504 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _08031508 + movs r1, #1 + movs r2, #0x10 + bl sub_080A1200 + bl sub_080A8818 + ldr r0, _0803150C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08031510 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #5 + strh r0, [r4, #0x16] + ldr r0, _08031514 + strh r0, [r4, #0x10] + bl sub_080B9710 + bl sub_0800668C + bl sub_08008424 + bl sub_0818CCF8 + adds r0, r5, #0 + bl sub_0803166C + ldr r0, _08031518 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0803151C + movs r0, #1 + strh r0, [r4, #0x14] + ldrb r3, [r4, #0x1e] + b _08031520 + .align 2, 0 +_080314E0: .4byte gUnknown_82D2978 +_080314E4: .4byte gUnknown_82D2980 +_080314E8: .4byte 0x040000D4 +_080314EC: .4byte 0x8100C000 +_080314F0: .4byte 0x85000100 +_080314F4: .4byte 0x81000200 +_080314F8: .4byte gUnknown_82D25C8 +_080314FC: .4byte gUnknown_82D277C +_08031500: .4byte 0x06003800 +_08031504: .4byte gUnknown_82D2588 +_08031508: .4byte gUnknown_82D28A8 +_0803150C: .4byte sub_080324B4 +_08031510: .4byte gUnknown_3005B60 +_08031514: .4byte 0x0000FFC4 +_08031518: .4byte gUnknown_3005AF0 +_0803151C: + strh r0, [r4, #0x14] + ldrb r3, [r4, #0x1c] +_08031520: + ldr r0, _080315F4 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r4, #0 + movs r0, #0xb4 + strh r0, [r1, #0x20] + movs r0, #0x3c + strh r0, [r1, #0x22] + adds r1, #0x3e + ldrb r2, [r1] + subs r0, #0x41 + ands r0, r2 + strb r0, [r1] + ldr r1, _080315F8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r3, [r0, #0xc] + ldr r1, _080315FC + movs r0, #0x14 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + ldr r3, _08031600 + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _08031604 + ldrh r0, [r4] + movs r1, #1 + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + ldr r0, _08031608 + bl sub_080006F0 + ldr r0, _0803160C + bl sub_08000540 + ldr r0, _08031610 + bl sub_08003090 + movs r0, #0 + movs r1, #0xdb + bl sub_08031D9C + movs r0, #0 + movs r1, #0xe4 + movs r2, #0xf0 + bl sub_08098104 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080315F4: .4byte gUnknown_20205AC +_080315F8: .4byte gUnknown_3005B60 +_080315FC: .4byte 0x0000FFC4 +_08031600: .4byte 0x04000208 +_08031604: .4byte 0x04000200 +_08031608: .4byte sub_0802F32C +_0803160C: .4byte sub_0802F314 +_08031610: .4byte gUnknown_82D2910 + thumb_func_end sub_080313B8 + + thumb_func_start sub_08031614 +sub_08031614: @ 0x08031614 + bx lr + .align 2, 0 + thumb_func_end sub_08031614 + + thumb_func_start sub_08031618 +sub_08031618: @ 0x08031618 + movs r2, #0x22 + ldrsh r1, [r0, r2] + lsls r1, r1, #0x10 + movs r3, #0x2e + ldrsh r2, [r0, r3] + adds r1, r1, r2 + movs r2, #0xc0 + lsls r2, r2, #8 + adds r1, r1, r2 + lsrs r2, r1, #0x10 + strh r2, [r0, #0x22] + strh r1, [r0, #0x2e] + bx lr + .align 2, 0 + thumb_func_end sub_08031618 + + thumb_func_start sub_08031634 +sub_08031634: @ 0x08031634 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08031664 + str r0, [sp] + str r1, [sp, #4] + movs r0, #0xe + str r0, [sp, #8] + ldr r0, _08031668 + str r0, [sp, #0xc] + adds r0, r2, #0 + movs r1, #8 + movs r2, #0 + movs r3, #1 + bl sub_0818D110 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08031664: .4byte 0x00000127 +_08031668: .4byte 0x0000FFFF + thumb_func_end sub_08031634 + + thumb_func_start sub_0803166C +sub_0803166C: @ 0x0803166C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x88 + movs r1, #0x3c + movs r2, #1 + bl sub_080B569C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803178C + mov sb, r1 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + movs r3, #0x1c + add r3, sb + mov r8, r3 + adds r1, r2, r3 + ldr r7, _08031790 + str r7, [r1] + add r2, sb + ldrb r3, [r2, #5] + movs r6, #0xd + rsbs r6, r6, #0 + adds r1, r6, #0 + ands r1, r3 + strb r1, [r2, #5] + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #4 + mov sl, r3 + mov r3, sl + orrs r1, r3 + strb r1, [r2] + ldr r1, _08031794 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r1 + strh r0, [r5, #0x18] + movs r0, #0x64 + movs r1, #0x4b + bl sub_08031634 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + mov r4, r8 + adds r1, r2, r4 + str r7, [r1] + add r2, sb + ldrb r3, [r2, #5] + adds r1, r6, #0 + ands r1, r3 + strb r1, [r2, #5] + adds r2, #0x3e + ldrb r1, [r2] + mov r3, sl + orrs r1, r3 + strb r1, [r2] + strh r0, [r5, #0x1a] + movs r0, #0x3c + bl sub_0806EA7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08031798 + str r4, [sp] + movs r1, #0x78 + movs r2, #0x3c + movs r3, #0 + bl sub_080B55C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + mov r3, r8 + adds r1, r2, r3 + str r7, [r1] + add r2, sb + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + mov r4, sl + orrs r1, r4 + strb r1, [r3] + ldrb r3, [r2, #5] + adds r1, r6, #0 + ands r1, r3 + strb r1, [r2, #5] + strh r0, [r5, #0x1c] + movs r0, #0x3f + bl sub_0806EA7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08031798 + movs r2, #0x80 + lsls r2, r2, #4 + adds r4, r1, r2 + str r4, [sp] + movs r1, #0x78 + movs r2, #0x3c + movs r3, #0 + bl sub_080B55C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r8, r2 + mov r3, r8 + str r7, [r3] + add r2, sb + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + mov r4, sl + orrs r1, r4 + strb r1, [r3] + ldrb r1, [r2, #5] + ands r6, r1 + strb r6, [r2, #5] + strh r0, [r5, #0x1e] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803178C: .4byte gUnknown_20205AC +_08031790: .4byte sub_08031614 +_08031794: .4byte gUnknown_3005B60 +_08031798: .4byte gUnknown_201C000 + thumb_func_end sub_0803166C + + thumb_func_start sub_0803179C +sub_0803179C: @ 0x0803179C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r4, _080317D0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r2, r0, r4 + ldrh r1, [r2, #0xa] + movs r5, #0xa + ldrsh r0, [r2, r5] + cmp r0, #0 + bne _080317D4 + movs r1, #8 + ldrsh r0, [r2, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r0, #1 + strh r0, [r1, #0x12] + adds r0, r3, #0 + bl sub_080A8964 + b _08031804 + .align 2, 0 +_080317D0: .4byte gUnknown_3005B60 +_080317D4: + ldrh r3, [r2, #0x10] + movs r4, #0x10 + ldrsh r0, [r2, r4] + cmp r0, #0 + beq _080317E4 + subs r0, r3, #1 + strh r0, [r2, #0x10] + b _08031804 +_080317E4: + ldrh r0, [r2, #0xe] + strh r0, [r2, #0x10] + subs r1, #1 + strh r1, [r2, #0xa] + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + movs r5, #0xc + ldrsh r0, [r2, r5] + lsls r0, r0, #8 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_08031804: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0803179C + + thumb_func_start sub_0803180C +sub_0803180C: @ 0x0803180C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #0x94 + lsls r1, r1, #2 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r0, _08031874 + mov r8, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + movs r6, #0 + strh r6, [r0, #0x12] + ldr r0, _08031878 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + add r1, r8 + strh r4, [r1, #8] + movs r0, #0x10 + strh r0, [r1, #0xa] + strh r6, [r1, #0xc] + strh r5, [r1, #0xe] + strh r5, [r1, #0x10] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08031874: .4byte gUnknown_3005B60 +_08031878: .4byte sub_0803179C + thumb_func_end sub_0803180C + + thumb_func_start sub_0803187C +sub_0803187C: @ 0x0803187C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r4, _080318B0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r2, r0, r4 + ldrh r1, [r2, #0xa] + movs r5, #0xa + ldrsh r0, [r2, r5] + cmp r0, #0x10 + bne _080318B4 + movs r1, #8 + ldrsh r0, [r2, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r0, #1 + strh r0, [r1, #0x12] + adds r0, r3, #0 + bl sub_080A8964 + b _080318E4 + .align 2, 0 +_080318B0: .4byte gUnknown_3005B60 +_080318B4: + ldrh r3, [r2, #0x10] + movs r4, #0x10 + ldrsh r0, [r2, r4] + cmp r0, #0 + beq _080318C4 + subs r0, r3, #1 + strh r0, [r2, #0x10] + b _080318E4 +_080318C4: + ldrh r0, [r2, #0xe] + strh r0, [r2, #0x10] + adds r1, #1 + strh r1, [r2, #0xa] + ldrh r0, [r2, #0xc] + subs r0, #1 + strh r0, [r2, #0xc] + movs r5, #0xc + ldrsh r0, [r2, r5] + lsls r0, r0, #8 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_080318E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0803187C + + thumb_func_start sub_080318EC +sub_080318EC: @ 0x080318EC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #0x94 + lsls r1, r1, #2 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r0, _08031954 + mov r8, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + movs r6, #0 + strh r6, [r0, #0x12] + ldr r0, _08031958 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + add r1, r8 + strh r4, [r1, #8] + strh r6, [r1, #0xa] + movs r0, #0x10 + strh r0, [r1, #0xc] + strh r5, [r1, #0xe] + strh r5, [r1, #0x10] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08031954: .4byte gUnknown_3005B60 +_08031958: .4byte sub_0803187C + thumb_func_end sub_080318EC + + thumb_func_start sub_0803195C +sub_0803195C: @ 0x0803195C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0803197C + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r3, [r1, #0xc] + movs r4, #0xc + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _08031980 + subs r0, r3, #1 + strh r0, [r1, #0xc] + b _080319BC + .align 2, 0 +_0803197C: .4byte gUnknown_3005B60 +_08031980: + ldrh r3, [r1, #0xa] + movs r4, #0xa + ldrsh r0, [r1, r4] + cmp r0, #8 + bne _08031992 + adds r0, r2, #0 + bl sub_080A8964 + b _080319BC +_08031992: + ldrh r2, [r1, #0x10] + movs r4, #0x10 + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _080319A2 + subs r0, r2, #1 + strh r0, [r1, #0x10] + b _080319BC +_080319A2: + ldrh r0, [r1, #0xe] + strh r0, [r1, #0x10] + adds r0, r3, #1 + strh r0, [r1, #0xa] + movs r2, #0xa + ldrsh r0, [r1, r2] + lsls r0, r0, #1 + ldr r1, _080319C4 + adds r0, r0, r1 + movs r1, #1 + movs r2, #0x10 + bl sub_080A1200 +_080319BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080319C4: .4byte gUnknown_82D28A6 + thumb_func_end sub_0803195C + + thumb_func_start sub_080319C8 +sub_080319C8: @ 0x080319C8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08031A00 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08031A04 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r4, [r1, #8] + strh r0, [r1, #0xa] + movs r0, #8 + strh r0, [r1, #0xc] + strh r5, [r1, #0xe] + strh r5, [r1, #0x10] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08031A00: .4byte sub_0803195C +_08031A04: .4byte gUnknown_3005B60 + thumb_func_end sub_080319C8 + + thumb_func_start sub_08031A08 +sub_08031A08: @ 0x08031A08 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08031A28 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r3, [r1, #0xc] + movs r4, #0xc + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _08031A2C + subs r0, r3, #1 + strh r0, [r1, #0xc] + b _08031A68 + .align 2, 0 +_08031A28: .4byte gUnknown_3005B60 +_08031A2C: + ldrh r3, [r1, #0xa] + movs r4, #0xa + ldrsh r0, [r1, r4] + cmp r0, #0 + bne _08031A3E + adds r0, r2, #0 + bl sub_080A8964 + b _08031A68 +_08031A3E: + ldrh r2, [r1, #0x10] + movs r4, #0x10 + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _08031A4E + subs r0, r2, #1 + strh r0, [r1, #0x10] + b _08031A68 +_08031A4E: + ldrh r0, [r1, #0xe] + strh r0, [r1, #0x10] + subs r0, r3, #1 + strh r0, [r1, #0xa] + movs r2, #0xa + ldrsh r0, [r1, r2] + lsls r0, r0, #1 + ldr r1, _08031A70 + adds r0, r0, r1 + movs r1, #1 + movs r2, #0x10 + bl sub_080A1200 +_08031A68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031A70: .4byte gUnknown_82D28A6 + thumb_func_end sub_08031A08 + + thumb_func_start sub_08031A74 +sub_08031A74: @ 0x08031A74 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08031AAC + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08031AB0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + movs r0, #8 + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + strh r5, [r1, #0xe] + strh r5, [r1, #0x10] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08031AAC: .4byte sub_08031A08 +_08031AB0: .4byte gUnknown_3005B60 + thumb_func_end sub_08031A74 + + thumb_func_start sub_08031AB4 +sub_08031AB4: @ 0x08031AB4 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _08031B18 + movs r1, #0xdb + bl sub_08031DE4 + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #1 + movs r1, #0 + bl sub_0800629C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r5, #0x10 + str r5, [sp] + movs r4, #2 + str r4, [sp, #4] + ldr r0, _08031B1C + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #2 + bl sub_08198850 + str r5, [sp] + str r4, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08031B18: .4byte gUnknown_82D2918 +_08031B1C: .4byte gUnknown_82D29A8 + thumb_func_end sub_08031AB4 + + thumb_func_start sub_08031B20 +sub_08031B20: @ 0x08031B20 + push {lr} + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08031B20 + + thumb_func_start sub_08031B30 +sub_08031B30: @ 0x08031B30 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08031B48 + ldr r0, [r1] + ldrb r0, [r0, #8] + adds r5, r1, #0 + cmp r0, #0 + bne _08031B50 + ldr r1, _08031B4C + b _08031B52 + .align 2, 0 +_08031B48: .4byte gUnknown_3005AF0 +_08031B4C: .4byte gUnknown_82D29B8 +_08031B50: + ldr r1, _08031B7C +_08031B52: + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r3, [r0] + movs r2, #0 + ldr r4, _08031B80 +_08031B5C: + ldr r1, [r4] + adds r1, r1, r2 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _08031B5C + ldr r1, [r5] + movs r0, #0xff + strb r0, [r1, #5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08031B7C: .4byte gUnknown_82D2A08 +_08031B80: .4byte gUnknown_3005AF0 + thumb_func_end sub_08031B30 + + thumb_func_start sub_08031B84 +sub_08031B84: @ 0x08031B84 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #7 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #7 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #7 + bl sub_0800365C + movs r0, #7 + movs r1, #2 + bl sub_08003528 + ldr r0, _08031BD8 + ldr r1, _08031BDC + bl sub_08031DE4 + ldr r1, _08031BE0 + movs r0, #0x40 + bl sub_08001144 + ldr r1, _08031BE4 + movs r0, #0x44 + bl sub_08001144 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031BD8: .4byte gUnknown_82D2900 +_08031BDC: .4byte 0x000001D5 +_08031BE0: .4byte 0x000009E7 +_08031BE4: .4byte 0x0000719F + thumb_func_end sub_08031B84 + + thumb_func_start sub_08031BE8 +sub_08031BE8: @ 0x08031BE8 + push {lr} + bl sub_08031C00 + bl sub_08031CB0 + bl sub_08031C4C + bl sub_08031D28 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08031BE8 + + thumb_func_start sub_08031C00 +sub_08031C00: @ 0x08031C00 + push {r4, lr} + sub sp, #0xc + ldr r0, _08031C38 + ldr r1, _08031C3C + ldr r1, [r1] + bl sub_080088B8 + ldr r4, _08031C40 + ldr r1, _08031C44 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08031C48 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #0x11 + bl sub_08199AFC + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031C38: .4byte gUnknown_2021C40 +_08031C3C: .4byte gUnknown_3005AF0 +_08031C40: .4byte gUnknown_2021C7C +_08031C44: .4byte gUnknown_85CCCBD +_08031C48: .4byte gUnknown_82D2973 + thumb_func_end sub_08031C00 + + thumb_func_start sub_08031C4C +sub_08031C4C: @ 0x08031C4C + push {r4, lr} + sub sp, #0xc + ldr r0, _08031C98 + ldr r4, _08031C9C + ldr r1, [r4] + ldrh r1, [r1, #0xe] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _08031CA0 + ldr r1, [r4] + ldrb r1, [r1, #0x10] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _08031CA4 + ldr r1, _08031CA8 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08031CAC + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0x67 + movs r3, #0x11 + bl sub_08199AFC + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031C98: .4byte gUnknown_2021C40 +_08031C9C: .4byte gUnknown_3005AF0 +_08031CA0: .4byte gUnknown_2021C54 +_08031CA4: .4byte gUnknown_2021C7C +_08031CA8: .4byte gUnknown_85CCCC7 +_08031CAC: .4byte gUnknown_82D2973 + thumb_func_end sub_08031C4C + + thumb_func_start sub_08031CB0 +sub_08031CB0: @ 0x08031CB0 + push {r4, lr} + sub sp, #0xc + ldr r0, _08031CD4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08031D0E + bl sub_0809CD04 + cmp r0, #0 + beq _08031CD8 + movs r0, #1 + bl sub_080BFD4C + b _08031CDE + .align 2, 0 +_08031CD4: .4byte 0x00000861 +_08031CD8: + movs r0, #1 + bl sub_080BFD9C +_08031CDE: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08031D18 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r4, _08031D1C + ldr r1, _08031D20 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08031D24 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #0x21 + bl sub_08199AFC +_08031D0E: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08031D18: .4byte gUnknown_2021C40 +_08031D1C: .4byte gUnknown_2021C7C +_08031D20: .4byte gUnknown_85CCCD4 +_08031D24: .4byte gUnknown_82D2973 + thumb_func_end sub_08031CB0 + + thumb_func_start sub_08031D28 +sub_08031D28: @ 0x08031D28 + push {r4, r5, lr} + sub sp, #0xc + movs r5, #0 + ldr r4, _08031D84 +_08031D30: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08031D44 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08031D44: + adds r4, #1 + ldr r0, _08031D88 + cmp r4, r0 + bls _08031D30 + ldr r0, _08031D8C + adds r1, r5, #0 + movs r2, #2 + movs r3, #1 + bl sub_080089D8 + ldr r4, _08031D90 + ldr r1, _08031D94 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08031D98 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #0x6f + movs r3, #0x21 + bl sub_08199AFC + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08031D84: .4byte 0x00000867 +_08031D88: .4byte 0x0000086E +_08031D8C: .4byte gUnknown_2021C40 +_08031D90: .4byte gUnknown_2021C7C +_08031D94: .4byte gUnknown_85CCCE1 +_08031D98: .4byte gUnknown_82D2973 + thumb_func_end sub_08031D28 + + thumb_func_start sub_08031D9C +sub_08031D9C: @ 0x08031D9C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r6, _08031DE0 + ldr r0, [r6] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r3, r5, #0 + bl sub_0800195C + ldr r0, [r6] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r0, [r0, #4] + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08031DE0: .4byte gUnknown_3005AF0 + thumb_func_end sub_08031D9C + + thumb_func_start sub_08031DE4 +sub_08031DE4: @ 0x08031DE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r4, r0, #0 + lsls r6, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #9 + adds r0, r0, r6 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r1, #0x80 + lsls r1, r1, #0xa + adds r1, r1, r6 + lsrs r1, r1, #0x10 + mov sl, r1 + movs r7, #0xc0 + lsls r7, r7, #0xa + adds r1, r6, r7 + lsrs r1, r1, #0x10 + str r1, [sp, #0x18] + movs r0, #0xa0 + lsls r0, r0, #0xb + adds r1, r6, r0 + lsrs r1, r1, #0x10 + str r1, [sp, #0xc] + movs r7, #0xc0 + lsls r7, r7, #0xb + adds r1, r6, r7 + lsrs r1, r1, #0x10 + str r1, [sp, #0x10] + movs r0, #0xe0 + lsls r0, r0, #0xb + adds r1, r6, r0 + lsrs r1, r1, #0x10 + str r1, [sp, #0x14] + lsrs r1, r6, #0x10 + movs r7, #0x80 + lsls r7, r7, #0xc + adds r6, r6, r7 + lsrs r6, r6, #0x10 + ldrb r0, [r4] + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + movs r7, #2 + mov r8, r7 + str r7, [sp, #8] + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #1] + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r1, [r4, #3] + str r1, [sp] + str r5, [sp, #4] + str r7, [sp, #8] + mov r1, sb + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #3] + ldrb r1, [r4, #1] + adds r2, r2, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r7, [sp, #8] + mov r1, sl + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r1, [r4, #4] + str r1, [sp, #4] + str r7, [sp, #8] + ldr r1, [sp, #0x18] + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #3] + ldrb r7, [r4, #1] + adds r2, r2, r7 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #2] + str r5, [sp] + ldrb r1, [r4, #4] + str r1, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + ldr r1, [sp, #0xc] + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #1] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r7, [r4, #2] + adds r3, r3, r7 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + ldr r1, [sp, #0x10] + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #1] + ldrb r3, [r4, #4] + ldrb r7, [r4, #2] + adds r3, r3, r7 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r1, [r4, #3] + str r1, [sp] + str r5, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + ldr r1, [sp, #0x14] + bl sub_080026E0 + ldrb r0, [r4] + ldrb r2, [r4, #3] + ldrb r7, [r4, #1] + adds r2, r2, r7 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r4, #4] + ldrb r1, [r4, #2] + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r5, [sp] + str r5, [sp, #4] + mov r7, r8 + str r7, [sp, #8] + adds r1, r6, #0 + bl sub_080026E0 + ldrb r0, [r4] + bl sub_08002248 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08031DE4 + + thumb_func_start sub_08031F48 +sub_08031F48: @ 0x08031F48 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + ldrb r0, [r6] + ldrb r1, [r6, #1] + subs r2, r1, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r4, [r6, #2] + subs r3, r4, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r5, [r6, #3] + adds r1, r1, r5 + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + ldrb r1, [r6, #4] + adds r4, r4, r1 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + movs r1, #2 + str r1, [sp, #8] + movs r1, #0 + bl sub_080026E0 + ldrb r0, [r6] + bl sub_08002248 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08031F48 + + thumb_func_start sub_08031F90 +sub_08031F90: @ 0x08031F90 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + str r3, [sp] + adds r1, r1, r2 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r1, #2 + str r1, [sp, #8] + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08031F90 + + thumb_func_start sub_08031FD8 +sub_08031FD8: @ 0x08031FD8 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0803200C + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_08003774 + cmp r4, #1 + bne _08032006 + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08032006: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803200C: .4byte sub_08031F90 + thumb_func_end sub_08031FD8 + + thumb_func_start sub_08032010 +sub_08032010: @ 0x08032010 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #1 + movs r1, #6 + bl sub_080061B4 + mov sb, r0 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #3 + bl sub_0800401C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #4 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + muls r1, r4, r1 + str r1, [sp] + muls r0, r5, r0 + str r0, [sp, #4] + adds r0, r6, #0 + mov r1, sb + movs r2, #0 + movs r3, #0 + bl sub_08003A34 + adds r0, r6, #0 + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08032010 + + thumb_func_start sub_08032098 +sub_08032098: @ 0x08032098 + push {lr} + ldr r0, [r0] + subs r0, #2 + ldrb r0, [r0] + cmp r0, #8 + bne _080320B8 + ldr r1, _080320BC + ldrb r0, [r1] + cmp r0, #0 + bne _080320B8 + movs r0, #1 + strb r0, [r1] + ldr r0, _080320C0 + movs r1, #0 + bl sub_080A8878 +_080320B8: + pop {r0} + bx r0 + .align 2, 0 +_080320BC: .4byte gUnknown_20229B8 +_080320C0: .4byte sub_080307B0 + thumb_func_end sub_08032098 + + thumb_func_start sub_080320C4 +sub_080320C4: @ 0x080320C4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + ldr r6, [sp, #0x34] + ldr r1, [sp, #0x38] + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + mov r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r4, r4, r0 + lsrs r4, r4, #0x18 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + movs r0, #5 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + str r1, [sp, #8] + str r3, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08198B60 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x18 + mov r1, r8 + str r1, [sp] + str r6, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + add sp, #0x20 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080320C4 + + thumb_func_start sub_0803213C +sub_0803213C: @ 0x0803213C + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08032170 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + cmp r4, #1 + bne _0803216A + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_0803216A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08032170: .4byte sub_08032174 + thumb_func_end sub_0803213C + + thumb_func_start sub_08032174 +sub_08032174: @ 0x08032174 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + mov r8, r0 + adds r5, r2, #0 + ldr r2, [sp, #0x4c] + ldr r6, [sp, #0x50] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsls r5, r5, #0x18 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsrs r0, r1, #0x18 + str r0, [sp, #0xc] + movs r0, #0xfd + lsls r0, r0, #0x18 + adds r1, r1, r0 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsrs r1, r5, #0x18 + mov sl, r1 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe5 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, [sp, #0xc] + subs r0, #2 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe6 + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, [sp, #0xc] + subs r0, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x20] + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe7 + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, [sp, #0x10] + str r1, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe8 + ldr r2, [sp, #0xc] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + adds r7, r0, r1 + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x24] + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe9 + adds r3, r5, #0 + bl sub_080026E0 + adds r0, r7, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x28] + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xe6 + adds r3, r5, #0 + bl sub_080026E0 + adds r0, r7, #2 + lsls r2, r0, #0x18 + lsrs r7, r2, #0x18 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xea + adds r2, r7, #0 + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xeb + ldr r2, [sp, #0x18] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xf1 + ldr r2, [sp, #0x1c] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xef + ldr r2, [sp, #0x20] + mov r3, sl + bl sub_080026E0 + ldr r0, [sp, #0x10] + str r0, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xed + ldr r2, [sp, #0xc] + mov r3, sl + bl sub_080026E0 + ldr r1, _08032480 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xf1 + ldr r2, [sp, #0x28] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xee + adds r2, r7, #0 + mov r3, sl + bl sub_080026E0 + mov r5, sl + adds r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + movs r1, #2 + mov sb, r1 + str r1, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xeb + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + mov r0, sb + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xec + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, [sp, #0x10] + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + mov r1, sb + str r1, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xed + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + mov r0, sb + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xec + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + mov r1, sb + str r1, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #0xee + adds r2, r7, #0 + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08032484 + ldr r0, [sp, #0x14] + add sl, r0 + mov r5, sl + subs r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08032488 + mov sb, r1 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _0803248C + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08032490 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08032494 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + mov r1, sb + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08032498 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + adds r2, r7, #0 + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _0803249C + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + mov r3, sl + bl sub_080026E0 + ldr r5, _080324A0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + adds r1, r5, #0 + ldr r2, [sp, #0x1c] + mov r3, sl + bl sub_080026E0 + ldr r1, _080324A4 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + mov r3, sl + bl sub_080026E0 + ldr r1, _080324A8 + ldr r0, [sp, #0x10] + str r0, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + mov r3, sl + bl sub_080026E0 + ldr r1, _080324AC + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + adds r1, r5, #0 + ldr r2, [sp, #0x28] + mov r3, sl + bl sub_080026E0 + ldr r1, _080324B0 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + adds r2, r7, #0 + mov r3, sl + bl sub_080026E0 + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08032480: .4byte 0x000004EF +_08032484: .4byte 0x000008EB +_08032488: .4byte 0x000008F1 +_0803248C: .4byte 0x000008EF +_08032490: .4byte 0x000008ED +_08032494: .4byte 0x00000CEF +_08032498: .4byte 0x000008EE +_0803249C: .4byte 0x000008E5 +_080324A0: .4byte 0x000008E6 +_080324A4: .4byte 0x000008E7 +_080324A8: .4byte 0x000008E8 +_080324AC: .4byte 0x000008E9 +_080324B0: .4byte 0x000008EA + thumb_func_end sub_08032174 + + thumb_func_start sub_080324B4 +sub_080324B4: @ 0x080324B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080324E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x16] + subs r1, r0, #1 + strh r1, [r4, #0x16] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080324DC + movs r0, #0 + movs r1, #1 + bl sub_0803213C + ldr r0, _080324E8 + str r0, [r4] +_080324DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080324E4: .4byte gUnknown_3005B60 +_080324E8: .4byte sub_08030E44 + thumb_func_end sub_080324B4 + + thumb_func_start sub_080324EC +sub_080324EC: @ 0x080324EC + push {lr} + ldr r0, _08032524 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803251E + ldr r0, _08032528 + ldrb r0, [r0] + cmp r0, #0 + beq _08032506 + bl sub_0800AF5C +_08032506: + ldr r0, _0803252C + ldrb r0, [r0] + cmp r0, #0 + bne _08032512 + bl sub_080092D0 +_08032512: + ldr r0, _08032530 + movs r1, #0 + bl sub_080A8878 + bl sub_080330DC +_0803251E: + pop {r0} + bx r0 + .align 2, 0 +_08032524: .4byte gUnknown_2022C90 +_08032528: .4byte gUnknown_300319C +_0803252C: .4byte gUnknown_30031C4 +_08032530: .4byte sub_080B3188 + thumb_func_end sub_080324EC + + thumb_func_start sub_08032534 +sub_08032534: @ 0x08032534 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _080325D0 + ldr r1, _080325D4 + str r1, [r0] + movs r0, #0 + str r0, [sp, #0x10] + movs r1, #0 + ldr r7, _080325D8 + ldr r6, _080325DC + movs r2, #0 + ldr r5, _080325E0 + ldr r4, _080325E4 + ldr r3, _080325E8 +_08032550: + lsls r0, r1, #2 + adds r0, r0, r7 + str r4, [r0] + adds r1, r1, r3 + movs r0, #0xff + strb r0, [r1] + ldr r0, [sp, #0x10] + adds r0, r0, r6 + strb r2, [r0] + ldr r0, [sp, #0x10] + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [sp, #0x10] + adds r0, #1 + str r0, [sp, #0x10] + adds r1, r0, #0 + cmp r1, #3 + ble _08032550 + bl sub_080324EC + ldr r0, _080325EC + movs r5, #0 + str r5, [r0] + bl sub_080A31FC + bl sub_0806DEA8 + movs r0, #0xf + bl sub_08130920 + ldr r0, _080325F0 + ldr r0, [r0] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080325C0 + bl sub_08067710 + ldr r4, _080325F4 + movs r1, #0x90 + lsls r1, r1, #1 + str r5, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + adds r0, r4, #0 + movs r2, #2 + movs r3, #0x20 + bl sub_08067730 + str r5, [sp, #0x10] + adds r0, r4, #0 + movs r1, #0xc + add r2, sp, #0x10 + bl sub_0806A774 +_080325C0: + ldr r0, _080325F8 + str r5, [r0] + ldr r0, _080325FC + strb r5, [r0] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080325D0: .4byte gUnknown_3005A64 +_080325D4: .4byte sub_08039B0C +_080325D8: .4byte gUnknown_3005AC0 +_080325DC: .4byte gUnknown_2024150 +_080325E0: .4byte gUnknown_2024154 +_080325E4: .4byte sub_08057068 +_080325E8: .4byte gUnknown_2023D1A +_080325EC: .4byte gUnknown_2023D0C +_080325F0: .4byte gUnknown_2022C90 +_080325F4: .4byte gUnknown_20243E8 +_080325F8: .4byte gUnknown_2022C98 +_080325FC: .4byte gUnknown_2023F30 + thumb_func_end sub_08032534 + + thumb_func_start sub_08032600 +sub_08032600: @ 0x08032600 + push {r4, r5, lr} + ldr r0, _08032618 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _0803261C + movs r0, #1 + bl sub_08184C50 + b _08032622 + .align 2, 0 +_08032618: .4byte gUnknown_2022C90 +_0803261C: + movs r0, #2 + bl sub_08184C50 +_08032622: + ldr r4, _08032644 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08032634 + bl sub_08185C10 +_08032634: + ldr r0, [r4] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08032648 + bl sub_08032B58 + b _0803264C + .align 2, 0 +_08032644: .4byte gUnknown_2022C90 +_08032648: + bl sub_080326BC +_0803264C: + bl sub_08032EE8 + ldr r0, _080326B0 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0803267A + movs r4, #0 + ldr r0, _080326B4 + ldrb r1, [r0] + cmp r4, r1 + bge _0803267A + adds r5, r0, #0 +_08032668: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_081B8A04 + adds r4, #1 + ldrb r0, [r5] + cmp r4, r0 + blt _08032668 +_0803267A: + movs r4, #0 + ldr r3, _080326B8 + movs r2, #0xd2 + lsls r2, r2, #1 + movs r1, #0 +_08032684: + ldr r0, [r3] + adds r0, r4, r0 + adds r0, r0, r2 + strb r1, [r0] + adds r4, #1 + cmp r4, #0x5f + bls _08032684 + movs r4, #0 + ldr r3, _080326B8 + movs r2, #0x81 + lsls r2, r2, #2 + movs r1, #0 +_0803269C: + ldr r0, [r3] + adds r0, r4, r0 + adds r0, r0, r2 + strb r1, [r0] + adds r4, #1 + cmp r4, #0x67 + bls _0803269C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080326B0: .4byte gUnknown_2022C90 +_080326B4: .4byte gUnknown_2023D10 +_080326B8: .4byte gUnknown_2024140 + thumb_func_end sub_08032600 + + thumb_func_start sub_080326BC +sub_080326BC: @ 0x080326BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080326F4 + ldr r3, [r0] + movs r5, #0x80 + lsls r5, r5, #0xf + ands r5, r3 + cmp r5, #0 + beq _0803277C + ldr r1, _080326F8 + ldr r0, _080326FC + str r0, [r1] + movs r4, #0x80 + lsls r4, r4, #0x11 + ands r4, r3 + cmp r4, #0 + beq _0803270C + ldr r2, _08032700 + ldr r0, _08032704 + str r0, [r2] + ldr r1, _08032708 + movs r0, #0 + strb r0, [r1] + b _08032716 + .align 2, 0 +_080326F4: .4byte gUnknown_2022C90 +_080326F8: .4byte gUnknown_3005A64 +_080326FC: .4byte sub_08039B10 +_08032700: .4byte gUnknown_3005AC0 +_08032704: .4byte sub_08189678 +_08032708: .4byte gUnknown_2023D1A +_0803270C: + ldr r2, _08032760 + ldr r0, _08032764 + str r0, [r2] + ldr r1, _08032768 + strb r4, [r1] +_08032716: + ldr r3, _0803276C + str r3, [r2, #4] + movs r0, #1 + strb r0, [r1, #1] + ldr r0, _08032770 + str r0, [r2, #8] + movs r0, #2 + strb r0, [r1, #2] + str r3, [r2, #0xc] + movs r0, #3 + strb r0, [r1, #3] + ldr r1, _08032774 + movs r0, #4 + strb r0, [r1] + movs r0, #0 + movs r1, #0 + bl sub_081B8A04 + movs r0, #1 + movs r1, #0 + bl sub_081B8A04 + movs r0, #2 + movs r1, #1 + bl sub_081B8A04 + movs r0, #3 + movs r1, #1 + bl sub_081B8A04 + ldr r0, _08032778 + movs r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #3 + b _0803290E + .align 2, 0 +_08032760: .4byte gUnknown_3005AC0 +_08032764: .4byte sub_0805706C +_08032768: .4byte gUnknown_2023D1A +_0803276C: .4byte sub_0805ED80 +_08032770: .4byte sub_081BAA90 +_08032774: .4byte gUnknown_2023D10 +_08032778: .4byte gUnknown_2023D12 +_0803277C: + movs r7, #1 + adds r0, r3, #0 + ands r0, r7 + cmp r0, #0 + beq _08032788 + b _08032878 +_08032788: + ldr r0, _080327A0 + ldr r2, _080327A4 + str r2, [r0] + movs r1, #0x80 + ands r1, r3 + mov ip, r2 + cmp r1, #0 + beq _080327B0 + ldr r1, _080327A8 + ldr r0, _080327AC + b _080327CC + .align 2, 0 +_080327A0: .4byte gUnknown_3005A64 +_080327A4: .4byte sub_08039B10 +_080327A8: .4byte gUnknown_3005AC0 +_080327AC: .4byte sub_081592A8 +_080327B0: + movs r0, #0x80 + lsls r0, r0, #2 + ands r3, r0 + cmp r3, #0 + beq _080327C8 + ldr r1, _080327C0 + ldr r0, _080327C4 + b _080327CC + .align 2, 0 +_080327C0: .4byte gUnknown_3005AC0 +_080327C4: .4byte sub_081681C0 +_080327C8: + ldr r1, _08032828 + ldr r0, _0803282C +_080327CC: + str r0, [r1] + mov sl, r1 + ldr r4, _08032830 + movs r0, #0 + mov sb, r0 + mov r1, sb + strb r1, [r4] + mov r5, sl + ldr r2, _08032834 + mov r8, r2 + str r2, [r5, #4] + movs r6, #1 + strb r6, [r4, #1] + ldr r2, _08032838 + movs r7, #2 + strb r7, [r2] + ldr r0, _0803283C + ldr r3, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r3 + cmp r0, #0 + bne _080327FC + b _08032B4A +_080327FC: + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r1, r3 + cmp r1, #0 + beq _08032864 + movs r1, #0x80 + lsls r1, r1, #0x18 + ands r1, r3 + cmp r1, #0 + beq _0803284C + mov r1, ip + ldr r0, _08032840 + str r1, [r0] + ldr r0, _08032844 + str r0, [r5] + mov r1, sb + strb r1, [r4] + ldr r0, _08032848 + str r0, [r5, #4] + strb r6, [r4, #1] + strb r7, [r2] + b _08032B4A + .align 2, 0 +_08032828: .4byte gUnknown_3005AC0 +_0803282C: .4byte sub_0805706C +_08032830: .4byte gUnknown_2023D1A +_08032834: .4byte sub_0805ED80 +_08032838: .4byte gUnknown_2023D10 +_0803283C: .4byte gUnknown_2022C90 +_08032840: .4byte gUnknown_3005A64 +_08032844: .4byte sub_08189678 +_08032848: .4byte sub_08186218 +_0803284C: + ldr r0, _0803285C + str r0, [r5, #4] + strb r1, [r4, #1] + ldr r0, _08032860 + str r0, [r5] + strb r6, [r4] + strb r7, [r2] + b _08032B4A + .align 2, 0 +_0803285C: .4byte sub_08189678 +_08032860: .4byte sub_08186218 +_08032864: + ldr r0, _08032874 + mov r2, sl + str r0, [r2] + strb r1, [r4] + mov r0, r8 + str r0, [r2, #4] + strb r6, [r4, #1] + b _08032B4A + .align 2, 0 +_08032874: .4byte sub_08189678 +_08032878: + ldr r1, _08032914 + ldr r2, _08032918 + str r1, [r2] + ldr r2, _0803291C + ldr r0, _08032920 + str r0, [r2] + ldr r4, _08032924 + strb r5, [r4] + ldr r6, _08032928 + str r6, [r2, #4] + strb r7, [r4, #1] + str r0, [r2, #8] + movs r0, #2 + mov ip, r0 + mov r1, ip + strb r1, [r4, #2] + str r6, [r2, #0xc] + movs r0, #3 + mov r8, r0 + mov r1, r8 + strb r1, [r4, #3] + ldr r0, _0803292C + mov sl, r0 + movs r1, #4 + mov sb, r1 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r3 + cmp r0, #0 + bne _080328B8 + b _08032B4A +_080328B8: + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, r1 + bne _08032938 + ldr r0, _08032914 + ldr r1, _08032918 + str r0, [r1] + ldr r0, _08032930 + str r0, [r2] + strb r5, [r4] + str r6, [r2, #4] + strb r7, [r4, #1] + str r0, [r2, #8] + mov r0, ip + strb r0, [r4, #2] + str r6, [r2, #0xc] + mov r1, r8 + strb r1, [r4, #3] + mov r0, sb + mov r2, sl + strb r0, [r2] + movs r0, #0 + movs r1, #0 + bl sub_081B8A04 + movs r0, #1 + movs r1, #0 + bl sub_081B8A04 + movs r0, #2 + movs r1, #1 + bl sub_081B8A04 + movs r0, #3 + movs r1, #1 + bl sub_081B8A04 + ldr r0, _08032934 + strh r5, [r0] + strh r5, [r0, #2] + mov r1, r8 +_0803290E: + strh r1, [r0, #4] + strh r1, [r0, #6] + b _08032B4A + .align 2, 0 +_08032914: .4byte sub_08039B10 +_08032918: .4byte gUnknown_3005A64 +_0803291C: .4byte gUnknown_3005AC0 +_08032920: .4byte sub_0805706C +_08032924: .4byte gUnknown_2023D1A +_08032928: .4byte sub_0805ED80 +_0803292C: .4byte gUnknown_2023D10 +_08032930: .4byte sub_08189678 +_08032934: .4byte gUnknown_2023D12 +_08032938: + movs r5, #0x40 + ands r5, r3 + cmp r5, #0 + bne _08032942 + b _08032AD4 +_08032942: + ldr r0, _08032970 + ldrb r5, [r0] + movs r0, #0 + mov sl, r0 + ldr r1, _08032974 + mov ip, r1 + adds r7, r4, #0 + mov r8, r0 + ldr r6, _08032978 + movs r4, #0 + movs r2, #3 + mov sb, r2 +_0803295A: + mov r1, ip + adds r0, r4, r1 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _0803297C + cmp r0, #1 + bge _08032994 + cmp r0, #0 + beq _08032980 + b _0803299E + .align 2, 0 +_08032970: .4byte gUnknown_203C480 +_08032974: .4byte gUnknown_20226A0 +_08032978: .4byte gUnknown_2023D12 +_0803297C: + cmp r0, #3 + bne _0803299E +_08032980: + ldr r0, _08032990 + adds r0, r4, r0 + ldrb r0, [r0, #0x18] + movs r1, #0 + bl sub_081B8A04 + b _0803299E + .align 2, 0 +_08032990: .4byte gUnknown_20226A0 +_08032994: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081B8A04 +_0803299E: + cmp sl, r5 + bne _080329EE + ldr r0, _080329C4 + adds r3, r4, r0 + ldrh r1, [r3, #0x18] + lsls r1, r1, #2 + ldr r2, _080329C8 + adds r1, r1, r2 + ldr r2, _080329CC + str r2, [r1] + ldrh r1, [r3, #0x18] + mov ip, r0 + cmp r1, #2 + bgt _080329D0 + cmp r1, #1 + bge _080329E4 + cmp r1, #0 + beq _080329D4 + b _08032AC4 + .align 2, 0 +_080329C4: .4byte gUnknown_20226A0 +_080329C8: .4byte gUnknown_3005AC0 +_080329CC: .4byte sub_08189678 +_080329D0: + cmp r1, #3 + bne _08032AC4 +_080329D4: + mov r1, ip + adds r0, r4, r1 + ldrh r1, [r0, #0x18] + adds r1, r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, #0x18] + b _08032AAA +_080329E4: + adds r1, r1, r7 + movs r0, #2 + strb r0, [r1] + ldrh r0, [r3, #0x18] + b _08032ABC +_080329EE: + ldr r2, _08032A14 + adds r0, r4, r2 + ldrh r1, [r0, #0x18] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + mov ip, r2 + cmp r0, #0 + bne _08032A18 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08032A2A + b _08032A70 + .align 2, 0 +_08032A14: .4byte gUnknown_20226A0 +_08032A18: + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08032A70 +_08032A2A: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + lsls r0, r0, #2 + ldr r1, _08032A4C + adds r0, r0, r1 + ldr r1, _08032A50 + str r1, [r0] + ldrh r1, [r2, #0x18] + cmp r1, #2 + bgt _08032A54 + cmp r1, #1 + bge _08032A68 + cmp r1, #0 + beq _08032A58 + b _08032AC4 + .align 2, 0 +_08032A4C: .4byte gUnknown_3005AC0 +_08032A50: .4byte sub_08189678 +_08032A54: + cmp r1, #3 + bne _08032AC4 +_08032A58: + mov r2, ip + adds r0, r4, r2 + ldrh r1, [r0, #0x18] + adds r1, r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, #0x18] + b _08032AAA +_08032A68: + adds r1, r1, r7 + movs r0, #2 + strb r0, [r1] + b _08032ABA +_08032A70: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + lsls r0, r0, #2 + ldr r1, _08032A90 + adds r0, r0, r1 + ldr r1, _08032A94 + str r1, [r0] + ldrh r0, [r2, #0x18] + cmp r0, #2 + bgt _08032A98 + cmp r0, #1 + bge _08032AB4 + cmp r0, #0 + beq _08032A9C + b _08032AC4 + .align 2, 0 +_08032A90: .4byte gUnknown_3005AC0 +_08032A94: .4byte sub_08186218 +_08032A98: + cmp r0, #3 + bne _08032AC4 +_08032A9C: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + adds r0, r0, r7 + movs r1, #1 + strb r1, [r0] + ldrh r0, [r2, #0x18] +_08032AAA: + lsls r0, r0, #1 + adds r0, r0, r6 + mov r1, r8 + strh r1, [r0] + b _08032AC4 +_08032AB4: + adds r0, r0, r7 + mov r1, sb + strb r1, [r0] +_08032ABA: + ldrh r0, [r2, #0x18] +_08032ABC: + lsls r0, r0, #1 + adds r0, r0, r6 + mov r2, sb + strh r2, [r0] +_08032AC4: + adds r4, #0x1c + movs r0, #1 + add sl, r0 + mov r1, sl + cmp r1, #3 + bgt _08032AD2 + b _0803295A +_08032AD2: + b _08032B4A +_08032AD4: + movs r1, #4 + ands r1, r3 + cmp r1, #0 + beq _08032B14 + ldr r0, _08032B00 + str r0, [r2] + strb r5, [r4] + str r0, [r2, #8] + mov r0, ip + strb r0, [r4, #2] + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r3, r0 + cmp r3, #0 + beq _08032B08 + ldr r0, _08032B04 + str r0, [r2, #4] + strb r7, [r4, #1] + str r0, [r2, #0xc] + mov r1, r8 + strb r1, [r4, #3] + b _08032B4A + .align 2, 0 +_08032B00: .4byte sub_08189678 +_08032B04: .4byte sub_08186218 +_08032B08: + str r6, [r2, #4] + strb r7, [r4, #1] + str r6, [r2, #0xc] + mov r2, r8 + strb r2, [r4, #3] + b _08032B4A +_08032B14: + ldr r0, _08032B38 + str r0, [r2, #4] + strb r1, [r4, #1] + str r0, [r2, #0xc] + mov r0, ip + strb r0, [r4, #3] + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r3, r0 + cmp r3, #0 + beq _08032B40 + ldr r0, _08032B3C + str r0, [r2] + strb r7, [r4] + str r0, [r2, #8] + mov r1, r8 + strb r1, [r4, #2] + b _08032B4A + .align 2, 0 +_08032B38: .4byte sub_08189678 +_08032B3C: .4byte sub_08186218 +_08032B40: + str r6, [r2] + strb r7, [r4] + str r6, [r2, #8] + mov r2, r8 + strb r2, [r4, #2] +_08032B4A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080326BC + + thumb_func_start sub_08032B58 +sub_08032B58: @ 0x08032B58 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _08032B94 + ldr r1, [r4] + movs r5, #1 + adds r3, r1, #0 + ands r3, r5 + cmp r3, #0 + bne _08032BE0 + movs r4, #4 + ands r4, r1 + cmp r4, #0 + beq _08032BB4 + ldr r1, _08032B98 + ldr r0, _08032B9C + str r0, [r1] + ldr r2, _08032BA0 + ldr r0, _08032BA4 + str r0, [r2] + ldr r1, _08032BA8 + strb r3, [r1] + ldr r0, _08032BAC + str r0, [r2, #4] + strb r5, [r1, #1] + ldr r1, _08032BB0 + movs r0, #2 + b _08032ED2 + .align 2, 0 +_08032B94: .4byte gUnknown_2022C90 +_08032B98: .4byte gUnknown_3005A64 +_08032B9C: .4byte sub_08039B10 +_08032BA0: .4byte gUnknown_3005AC0 +_08032BA4: .4byte sub_0805706C +_08032BA8: .4byte gUnknown_2023D1A +_08032BAC: .4byte sub_08063F78 +_08032BB0: .4byte gUnknown_2023D10 +_08032BB4: + ldr r2, _08032BCC + ldr r0, _08032BD0 + str r0, [r2, #4] + ldr r1, _08032BD4 + strb r4, [r1, #1] + ldr r0, _08032BD8 + str r0, [r2] + strb r5, [r1] + ldr r1, _08032BDC + movs r0, #2 + b _08032ED2 + .align 2, 0 +_08032BCC: .4byte gUnknown_3005AC0 +_08032BD0: .4byte sub_0805706C +_08032BD4: .4byte gUnknown_2023D1A +_08032BD8: .4byte sub_08063F78 +_08032BDC: .4byte gUnknown_2023D10 +_08032BE0: + movs r0, #0x41 + ands r0, r1 + cmp r0, #1 + bne _08032C68 + movs r6, #4 + adds r3, r6, #0 + ands r3, r1 + cmp r3, #0 + beq _08032C30 + ldr r1, _08032C18 + ldr r0, _08032C1C + str r0, [r1] + ldr r2, _08032C20 + ldr r4, _08032C24 + str r4, [r2] + ldr r1, _08032C28 + movs r0, #0 + strb r0, [r1] + ldr r3, _08032C2C + str r3, [r2, #4] + strb r5, [r1, #1] + str r4, [r2, #8] + movs r0, #2 + strb r0, [r1, #2] + str r3, [r2, #0xc] + movs r0, #3 + strb r0, [r1, #3] + b _08032C4C + .align 2, 0 +_08032C18: .4byte gUnknown_3005A64 +_08032C1C: .4byte sub_08039B10 +_08032C20: .4byte gUnknown_3005AC0 +_08032C24: .4byte sub_0805706C +_08032C28: .4byte gUnknown_2023D1A +_08032C2C: .4byte sub_08063F78 +_08032C30: + ldr r2, _08032C54 + ldr r0, _08032C58 + str r0, [r2, #4] + ldr r1, _08032C5C + strb r3, [r1, #1] + ldr r3, _08032C60 + str r3, [r2] + strb r5, [r1] + str r0, [r2, #0xc] + movs r0, #2 + strb r0, [r1, #3] + str r3, [r2, #8] + movs r0, #3 + strb r0, [r1, #2] +_08032C4C: + ldr r0, _08032C64 + strb r6, [r0] + b _08032ED4 + .align 2, 0 +_08032C54: .4byte gUnknown_3005AC0 +_08032C58: .4byte sub_0805706C +_08032C5C: .4byte gUnknown_2023D1A +_08032C60: .4byte sub_08063F78 +_08032C64: .4byte gUnknown_2023D10 +_08032C68: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08032D24 + movs r4, #4 + adds r3, r4, #0 + ands r3, r1 + cmp r3, #0 + beq _08032CB4 + ldr r1, _08032C98 + ldr r0, _08032C9C + str r0, [r1] + ldr r2, _08032CA0 + ldr r0, _08032CA4 + str r0, [r2] + ldr r1, _08032CA8 + movs r0, #0 + strb r0, [r1] + ldr r3, _08032CAC + str r3, [r2, #4] + strb r5, [r1, #1] + ldr r0, _08032CB0 + b _08032CC6 + .align 2, 0 +_08032C98: .4byte gUnknown_3005A64 +_08032C9C: .4byte sub_08039B10 +_08032CA0: .4byte gUnknown_3005AC0 +_08032CA4: .4byte sub_0805706C +_08032CA8: .4byte gUnknown_2023D1A +_08032CAC: .4byte sub_0805ED80 +_08032CB0: .4byte sub_0814AF70 +_08032CB4: + ldr r2, _08032D08 + ldr r0, _08032D0C + str r0, [r2] + ldr r1, _08032D10 + strb r3, [r1] + ldr r3, _08032D14 + str r3, [r2, #4] + strb r5, [r1, #1] + ldr r0, _08032D18 +_08032CC6: + str r0, [r2, #8] + movs r0, #2 + strb r0, [r1, #2] + str r3, [r2, #0xc] + movs r0, #3 + strb r0, [r1, #3] + ldr r0, _08032D1C + strb r4, [r0] + movs r0, #0 + movs r1, #0 + bl sub_081B8A04 + movs r0, #1 + movs r1, #0 + bl sub_081B8A04 + movs r0, #2 + movs r1, #1 + bl sub_081B8A04 + movs r0, #3 + movs r1, #1 + bl sub_081B8A04 + ldr r0, _08032D20 + movs r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #3 + strh r1, [r0, #4] + strh r1, [r0, #6] + b _08032ED4 + .align 2, 0 +_08032D08: .4byte gUnknown_3005AC0 +_08032D0C: .4byte sub_0814AF70 +_08032D10: .4byte gUnknown_2023D1A +_08032D14: .4byte sub_08063F78 +_08032D18: .4byte sub_0805706C +_08032D1C: .4byte gUnknown_2023D10 +_08032D20: .4byte gUnknown_2023D12 +_08032D24: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r4] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _08032D3C + ldr r1, _08032D64 + ldr r0, _08032D68 + str r0, [r1] +_08032D3C: + movs r0, #0 + mov sl, r0 + ldr r1, _08032D6C + mov ip, r1 + ldr r7, _08032D70 + mov r8, r0 + ldr r6, _08032D74 + movs r4, #0 + movs r2, #3 + mov sb, r2 +_08032D50: + mov r1, ip + adds r0, r4, r1 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08032D78 + cmp r0, #1 + bge _08032D90 + cmp r0, #0 + beq _08032D7C + b _08032D9A + .align 2, 0 +_08032D64: .4byte gUnknown_3005A64 +_08032D68: .4byte sub_08039B10 +_08032D6C: .4byte gUnknown_20226A0 +_08032D70: .4byte gUnknown_2023D1A +_08032D74: .4byte gUnknown_2023D12 +_08032D78: + cmp r0, #3 + bne _08032D9A +_08032D7C: + ldr r0, _08032D8C + adds r0, r4, r0 + ldrb r0, [r0, #0x18] + movs r1, #0 + bl sub_081B8A04 + b _08032D9A + .align 2, 0 +_08032D8C: .4byte gUnknown_20226A0 +_08032D90: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081B8A04 +_08032D9A: + cmp sl, r5 + bne _08032DEA + ldr r0, _08032DC0 + adds r3, r4, r0 + ldrh r1, [r3, #0x18] + lsls r1, r1, #2 + ldr r2, _08032DC4 + adds r1, r1, r2 + ldr r2, _08032DC8 + str r2, [r1] + ldrh r1, [r3, #0x18] + mov ip, r0 + cmp r1, #2 + bgt _08032DCC + cmp r1, #1 + bge _08032DE0 + cmp r1, #0 + beq _08032DD0 + b _08032EC0 + .align 2, 0 +_08032DC0: .4byte gUnknown_20226A0 +_08032DC4: .4byte gUnknown_3005AC0 +_08032DC8: .4byte sub_0805706C +_08032DCC: + cmp r1, #3 + bne _08032EC0 +_08032DD0: + mov r1, ip + adds r0, r4, r1 + ldrh r1, [r0, #0x18] + adds r1, r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, #0x18] + b _08032EA6 +_08032DE0: + adds r1, r1, r7 + movs r0, #2 + strb r0, [r1] + ldrh r0, [r3, #0x18] + b _08032EB8 +_08032DEA: + ldr r2, _08032E10 + adds r0, r4, r2 + ldrh r1, [r0, #0x18] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + mov ip, r2 + cmp r0, #0 + bne _08032E14 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08032E26 + b _08032E6C + .align 2, 0 +_08032E10: .4byte gUnknown_20226A0 +_08032E14: + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08032E6C +_08032E26: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + lsls r0, r0, #2 + ldr r1, _08032E48 + adds r0, r0, r1 + ldr r1, _08032E4C + str r1, [r0] + ldrh r1, [r2, #0x18] + cmp r1, #2 + bgt _08032E50 + cmp r1, #1 + bge _08032E64 + cmp r1, #0 + beq _08032E54 + b _08032EC0 + .align 2, 0 +_08032E48: .4byte gUnknown_3005AC0 +_08032E4C: .4byte sub_0814AF70 +_08032E50: + cmp r1, #3 + bne _08032EC0 +_08032E54: + mov r2, ip + adds r0, r4, r2 + ldrh r1, [r0, #0x18] + adds r1, r1, r7 + mov r2, r8 + strb r2, [r1] + ldrh r0, [r0, #0x18] + b _08032EA6 +_08032E64: + adds r1, r1, r7 + movs r0, #2 + strb r0, [r1] + b _08032EB6 +_08032E6C: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + lsls r0, r0, #2 + ldr r1, _08032E8C + adds r0, r0, r1 + ldr r1, _08032E90 + str r1, [r0] + ldrh r0, [r2, #0x18] + cmp r0, #2 + bgt _08032E94 + cmp r0, #1 + bge _08032EB0 + cmp r0, #0 + beq _08032E98 + b _08032EC0 + .align 2, 0 +_08032E8C: .4byte gUnknown_3005AC0 +_08032E90: .4byte sub_08063F78 +_08032E94: + cmp r0, #3 + bne _08032EC0 +_08032E98: + mov r0, ip + adds r2, r4, r0 + ldrh r0, [r2, #0x18] + adds r0, r0, r7 + movs r1, #1 + strb r1, [r0] + ldrh r0, [r2, #0x18] +_08032EA6: + lsls r0, r0, #1 + adds r0, r0, r6 + mov r1, r8 + strh r1, [r0] + b _08032EC0 +_08032EB0: + adds r0, r0, r7 + mov r1, sb + strb r1, [r0] +_08032EB6: + ldrh r0, [r2, #0x18] +_08032EB8: + lsls r0, r0, #1 + adds r0, r0, r6 + mov r2, sb + strh r2, [r0] +_08032EC0: + adds r4, #0x1c + movs r0, #1 + add sl, r0 + mov r1, sl + cmp r1, #3 + bgt _08032ECE + b _08032D50 +_08032ECE: + ldr r1, _08032EE4 + movs r0, #4 +_08032ED2: + strb r0, [r1] +_08032ED4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08032EE4: .4byte gUnknown_2023D10 + thumb_func_end sub_08032B58 + + thumb_func_start sub_08032EE8 +sub_08032EE8: @ 0x08032EE8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08032F08 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08032F00 + b _08033034 +_08032F00: + movs r0, #0 + mov r8, r0 + b _08033012 + .align 2, 0 +_08032F08: .4byte gUnknown_2022C90 +_08032F0C: + movs r5, #0 + movs r0, #1 + add r0, r8 + mov sl, r0 + ldr r0, _08032F38 + add r0, r8 + mov sb, r0 + mov r0, r8 + lsls r6, r0, #1 + movs r7, #0 +_08032F20: + mov r0, r8 + cmp r0, #1 + bgt _08032F88 + mov r0, sb + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08032F40 + ldr r0, _08032F3C + b _08032F42 + .align 2, 0 +_08032F38: .4byte gUnknown_2023D1A +_08032F3C: .4byte gUnknown_2024190 +_08032F40: + ldr r0, _08032F80 +_08032F42: + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _08033008 + ldr r0, _08032F84 + adds r0, r6, r0 + strh r5, [r0] + b _08033010 + .align 2, 0 +_08032F80: .4byte gUnknown_20243E8 +_08032F84: .4byte gUnknown_2023D12 +_08032F88: + mov r0, sb + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08032FB0 + ldr r0, _08032FAC + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08033008 + adds r0, r4, #0 + movs r1, #0xb + b _08032FC4 + .align 2, 0 +_08032FAC: .4byte gUnknown_2024190 +_08032FB0: + ldr r0, _08033000 + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x41 +_08032FC4: + bl sub_0806A058 + cmp r0, #0 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08033008 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _08033008 + ldr r1, _08033004 + mov r0, r8 + subs r0, #2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _08033008 + adds r0, r6, r1 + strh r5, [r0] + b _08033010 + .align 2, 0 +_08033000: .4byte gUnknown_20243E8 +_08033004: .4byte gUnknown_2023D12 +_08033008: + adds r7, #0x64 + adds r5, #1 + cmp r5, #5 + ble _08032F20 +_08033010: + mov r8, sl +_08033012: + ldr r0, _08033044 + ldrb r0, [r0] + cmp r8, r0 + bge _0803301C + b _08032F0C +_0803301C: + ldr r0, _08033048 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08033034 + ldr r0, _0803304C + movs r1, #0 + strh r1, [r0, #2] + movs r1, #3 + strh r1, [r0, #6] +_08033034: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08033044: .4byte gUnknown_2023D10 +_08033048: .4byte gUnknown_2022C90 +_0803304C: .4byte gUnknown_2023D12 + thumb_func_end sub_08032EE8 + + thumb_func_start sub_08033050 +sub_08033050: @ 0x08033050 + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r5, r3, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _08033078 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803307C + adds r0, r3, #0 + adds r1, r2, #0 + adds r2, r4, #0 + bl sub_0803318C + b _080330CE + .align 2, 0 +_08033078: .4byte gUnknown_2022C90 +_0803307C: + cmp r5, #0 + beq _08033086 + cmp r5, #1 + beq _080330B0 + b _080330CE +_08033086: + movs r3, #0 + cmp r3, r2 + bge _080330CE + ldr r6, _080330A8 + ldr r5, _080330AC +_08033090: + ldrb r0, [r5] + lsls r0, r0, #9 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r1, [r4] + strb r1, [r0] + adds r4, #1 + adds r3, #1 + cmp r3, r2 + blt _08033090 + b _080330CE + .align 2, 0 +_080330A8: .4byte gUnknown_2022D08 +_080330AC: .4byte gUnknown_2023D08 +_080330B0: + movs r3, #0 + cmp r3, r2 + bge _080330CE + ldr r6, _080330D4 + ldr r5, _080330D8 +_080330BA: + ldrb r0, [r5] + lsls r0, r0, #9 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r1, [r4] + strb r1, [r0] + adds r4, #1 + adds r3, #1 + cmp r3, r2 + blt _080330BA +_080330CE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080330D4: .4byte gUnknown_2023508 +_080330D8: .4byte gUnknown_2023D08 + thumb_func_end sub_08033050 + + thumb_func_start sub_080330DC +sub_080330DC: @ 0x080330DC + push {r4, r5, r6, lr} + ldr r0, _08033174 + movs r1, #0 + bl sub_080A8878 + ldr r2, _08033178 + strb r0, [r2] + ldr r5, _0803317C + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r6, #0 + movs r4, #0 + strh r4, [r0, #0x1e] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x20] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x22] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x24] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x26] + ldr r0, _08033180 + movs r1, #0 + bl sub_080A8878 + ldr r2, _08033184 + strb r0, [r2] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x20] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x22] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x24] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x26] + ldr r0, _08033188 + strb r6, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033174: .4byte sub_0803330C +_08033178: .4byte gUnknown_20229BC +_0803317C: .4byte gUnknown_3005B60 +_08033180: .4byte sub_080335F4 +_08033184: .4byte gUnknown_20229BD +_08033188: .4byte gUnknown_20229BE + thumb_func_end sub_080330DC + + thumb_func_start sub_0803318C +sub_0803318C: @ 0x0803318C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r2 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov ip, r1 + movs r1, #3 + mov r0, ip + bics r0, r1 + adds r0, #4 + mov r8, r0 + ldr r2, _080332EC + ldr r3, _080332F0 + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r4, r0, r2 + movs r1, #0x24 + ldrsh r0, [r4, r1] + add r0, r8 + adds r0, #9 + movs r1, #0x80 + lsls r1, r1, #5 + adds r5, r2, #0 + cmp r0, r1 + ble _080331DE + ldrh r0, [r4, #0x24] + movs r2, #0 + strh r0, [r4, #0x20] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r2, [r0, #0x24] +_080331DE: + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0x24 + ldrsh r1, [r0, r2] + ldr r4, _080332F4 + ldr r0, [r4] + adds r0, r0, r1 + strb r6, [r0] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r7, #0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r1, r0 + ldr r0, _080332F8 + ldrb r0, [r0] + strb r0, [r1, #1] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0x24 + ldrsh r1, [r0, r2] + ldr r0, [r4] + adds r1, r1, r0 + ldr r0, _080332FC + ldrb r0, [r0] + strb r0, [r1, #2] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r7, #0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r1, r0 + ldr r0, _08033300 + ldrb r0, [r0] + strb r0, [r1, #3] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x24 + ldrsh r0, [r0, r1] + ldr r1, [r4] + adds r0, r0, r1 + mov r2, r8 + strb r2, [r0, #4] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r7, #0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r1, r0 + movs r0, #0xff + lsls r0, r0, #8 + mov r2, r8 + ands r0, r2 + asrs r0, r0, #8 + strb r0, [r1, #5] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r7, #0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r1, r0 + ldr r0, _08033304 + ldrb r0, [r0] + strb r0, [r1, #6] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0x24 + ldrsh r1, [r0, r2] + ldr r0, [r4] + adds r1, r1, r0 + ldr r0, _08033308 + ldrb r0, [r0] + strb r0, [r1, #7] + movs r2, #0 + cmp r2, ip + bge _080332CC + mov sl, r5 + adds r6, r3, #0 +_080332AA: + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, sl + movs r7, #0x24 + ldrsh r1, [r0, r7] + ldr r0, [r4] + adds r1, r2, r1 + adds r1, r1, r0 + mov r7, sb + adds r0, r7, r2 + ldrb r0, [r0] + strb r0, [r1, #8] + adds r2, #1 + cmp r2, ip + blt _080332AA +_080332CC: + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrh r0, [r1, #0x24] + add r0, r8 + adds r0, #8 + strh r0, [r1, #0x24] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080332EC: .4byte gUnknown_3005B60 +_080332F0: .4byte gUnknown_20229BC +_080332F4: .4byte gUnknown_2024144 +_080332F8: .4byte gUnknown_2023D08 +_080332FC: .4byte gUnknown_2023EAF +_08033300: .4byte gUnknown_2023EB0 +_08033304: .4byte gUnknown_2023EB4 +_08033308: .4byte gUnknown_2023EB2 + thumb_func_end sub_0803318C + + thumb_func_start sub_0803330C +sub_0803330C: @ 0x0803330C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08033334 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x1e + ldrsh r0, [r0, r2] + adds r7, r1, #0 + cmp r0, #5 + bls _08033328 + b _080334D8 +_08033328: + lsls r0, r0, #2 + ldr r1, _08033338 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08033334: .4byte gUnknown_3005B60 +_08033338: .4byte _0803333C +_0803333C: @ jump table + .4byte _08033354 @ case 0 + .4byte _08033362 @ case 1 + .4byte _0803337E @ case 2 + .4byte _08033408 @ case 3 + .4byte _0803347E @ case 4 + .4byte _080334BC @ case 5 +_08033354: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #0x64 + strh r1, [r0, #0x1c] + b _0803338E +_08033362: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r7 + ldrh r0, [r1, #0x1c] + subs r0, #1 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08033378 + b _080334D8 +_08033378: + ldrh r0, [r1, #0x1e] + adds r0, #1 + b _080334D6 +_0803337E: + ldr r0, _08033398 + ldrb r0, [r0] + cmp r0, #0 + beq _0803339C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r7 +_0803338E: + ldrh r1, [r0, #0x1e] + adds r1, #1 + strh r1, [r0, #0x1e] + b _080334D8 + .align 2, 0 +_08033398: .4byte gUnknown_300319C +_0803339C: + ldr r0, _080333B0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080333B4 + movs r5, #2 + b _080333C2 + .align 2, 0 +_080333B0: .4byte gUnknown_2022C90 +_080333B4: + movs r0, #0x40 + ands r1, r0 + movs r0, #2 + cmp r1, #0 + beq _080333C0 + movs r0, #4 +_080333C0: + adds r5, r0, #0 +_080333C2: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bhs _080333D0 + b _080334D8 +_080333D0: + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080333F4 + bl sub_0800A1E4 + ldr r0, _080333F0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1e] + adds r0, #1 + b _080334D6 + .align 2, 0 +_080333F0: .4byte gUnknown_3005B60 +_080333F4: + ldr r0, _08033404 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1e] + adds r0, #1 + b _080334D6 + .align 2, 0 +_08033404: .4byte gUnknown_3005B60 +_08033408: + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r0, r0, #3 + adds r2, r0, r7 + movs r3, #0x26 + ldrsh r5, [r2, r3] + movs r0, #0x24 + ldrsh r6, [r2, r0] + mov ip, r6 + cmp r5, ip + beq _080334D8 + ldrh r0, [r2, #0x22] + movs r6, #0x22 + ldrsh r3, [r2, r6] + cmp r3, #0 + bne _08033478 + cmp r5, ip + ble _08033438 + movs r6, #0x20 + ldrsh r0, [r2, r6] + cmp r5, r0 + bne _08033438 + strh r3, [r2, #0x20] + strh r3, [r2, #0x26] +_08033438: + adds r4, r1, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + movs r0, #0x26 + ldrsh r1, [r4, r0] + ldr r5, _08033474 + ldr r0, [r5] + adds r1, r1, r0 + ldrb r0, [r1, #4] + ldrb r1, [r1, #5] + lsls r1, r1, #8 + orrs r0, r1 + adds r0, #8 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x26 + ldrsh r2, [r4, r1] + ldr r1, [r5] + adds r1, r1, r2 + adds r2, r6, #0 + bl sub_0800A070 + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + b _080334D8 + .align 2, 0 +_08033474: .4byte gUnknown_2024144 +_08033478: + subs r0, #1 + strh r0, [r2, #0x22] + b _080334D8 +_0803347E: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080334D8 + ldr r0, _080334B4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #0x26 + ldrsh r2, [r1, r3] + ldr r0, _080334B8 + ldr r0, [r0] + adds r2, r2, r0 + ldrb r0, [r2, #4] + ldrb r2, [r2, #5] + lsls r2, r2, #8 + movs r3, #1 + strh r3, [r1, #0x22] + orrs r0, r2 + ldrh r6, [r1, #0x26] + adds r0, r0, r6 + adds r0, #8 + strh r0, [r1, #0x26] + b _080334D4 + .align 2, 0 +_080334B4: .4byte gUnknown_3005B60 +_080334B8: .4byte gUnknown_2024144 +_080334BC: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r7 + ldrh r0, [r1, #0x22] + subs r0, #1 + strh r0, [r1, #0x22] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080334D8 + movs r0, #1 + strh r0, [r1, #0x22] +_080334D4: + movs r0, #3 +_080334D6: + strh r0, [r1, #0x1e] +_080334D8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0803330C + + thumb_func_start sub_080334E0 +sub_080334E0: @ 0x080334E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0803350C + ldrb r0, [r0] + cmp r0, #0 + beq _080335D0 + ldr r0, _08033510 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080335D0 + bl sub_080116BC + movs r4, #0 + ldr r0, _08033514 + mov sl, r0 + b _080335C4 + .align 2, 0 +_0803350C: .4byte gUnknown_30031C4 +_08033510: .4byte gUnknown_2022C90 +_08033514: .4byte gUnknown_202207C +_08033518: + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080335E0 + lsls r1, r4, #2 + adds r1, r1, r2 + ldr r1, [r1] + ands r0, r1 + adds r1, r4, #1 + mov sb, r1 + cmp r0, #0 + beq _080335BE + adds r0, r4, #0 + bl sub_0800A1B0 + lsls r0, r4, #8 + mov r4, sl + adds r3, r0, r4 + ldr r1, _080335E4 + adds r0, r0, r1 + ldrh r6, [r0] + ldr r7, _080335E8 + ldr r4, _080335EC + mov ip, r4 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r2, r0, r7 + movs r0, #0x24 + ldrsh r1, [r2, r0] + adds r0, r6, #0 + adds r0, #9 + adds r1, r1, r0 + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + ble _08033578 + ldrh r0, [r2, #0x24] + strh r0, [r2, #0x20] + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #0 + strh r1, [r0, #0x24] +_08033578: + ldr r2, _080335F0 + mov r4, ip + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, 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, #8 + mov r8, r7 + mov r7, ip + cmp r2, r3 + bge _080335AC +_0803359E: + adds r0, r5, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, r3 + blt _0803359E +_080335AC: + ldrb r0, [r7] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + add r1, r8 + ldrh r0, [r1, #0x24] + adds r0, r6, r0 + adds r0, #8 + strh r0, [r1, #0x24] +_080335BE: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 +_080335C4: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _08033518 +_080335D0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080335E0: .4byte gUnknown_82FACB4 +_080335E4: .4byte gUnknown_2022080 +_080335E8: .4byte gUnknown_3005B60 +_080335EC: .4byte gUnknown_20229BD +_080335F0: .4byte gUnknown_2024148 + thumb_func_end sub_080334E0 + + thumb_func_start sub_080335F4 +sub_080335F4: @ 0x080335F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0803365C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r0, #0x26 + ldrsh r2, [r3, r0] + movs r4, #0x24 + ldrsh r0, [r3, r4] + cmp r2, r0 + bne _08033618 + b _08033734 +_08033618: + cmp r2, r0 + ble _0803362A + movs r4, #0x20 + ldrsh r0, [r3, r4] + cmp r2, r0 + bne _0803362A + movs r0, #0 + strh r0, [r3, #0x20] + strh r0, [r3, #0x26] +_0803362A: + lsls r2, r7, #2 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r0, #0x26 + ldrsh r1, [r5, r0] + ldr r3, _08033660 + mov r8, r3 + ldr r0, [r3] + adds r3, r1, r0 + ldrb r4, [r3, #1] + ldrb r6, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + orrs r6, r0 + ldrb r0, [r3] + mov sb, r2 + cmp r0, #1 + beq _080336F4 + cmp r0, #1 + bgt _08033664 + cmp r0, #0 + beq _0803366A + b _08033722 + .align 2, 0 +_0803365C: .4byte gUnknown_3005B60 +_08033660: .4byte gUnknown_2024148 +_08033664: + cmp r0, #2 + beq _0803370C + b _08033722 +_0803366A: + ldr r2, _080336D4 + ldr r1, _080336D8 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08033734 + lsls r0, r4, #9 + ldr r1, _080336DC + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #8 + adds r2, r6, #0 + bl memcpy + adds r0, r4, #0 + bl sub_0803F490 + ldr r0, _080336E0 + ldr r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _08033722 + ldr r2, _080336E4 + movs r4, #0x26 + ldrsh r0, [r5, r4] + mov r3, r8 + ldr r1, [r3] + adds r0, r0, r1 + ldrb r0, [r0, #2] + strb r0, [r2] + ldr r2, _080336E8 + movs r4, #0x26 + ldrsh r0, [r5, r4] + adds r0, r0, r1 + ldrb r0, [r0, #3] + strb r0, [r2] + ldr r2, _080336EC + movs r3, #0x26 + ldrsh r0, [r5, r3] + adds r0, r0, r1 + ldrb r0, [r0, #6] + strb r0, [r2] + ldr r2, _080336F0 + movs r4, #0x26 + ldrsh r0, [r5, r4] + adds r0, r0, r1 + ldrb r0, [r0, #7] + strb r0, [r2] + b _08033722 + .align 2, 0 +_080336D4: .4byte gUnknown_2023D0C +_080336D8: .4byte gUnknown_82FACB4 +_080336DC: .4byte gUnknown_2022D08 +_080336E0: .4byte gUnknown_2022C90 +_080336E4: .4byte gUnknown_2023EAF +_080336E8: .4byte gUnknown_2023EB0 +_080336EC: .4byte gUnknown_2023EB4 +_080336F0: .4byte gUnknown_2023EB2 +_080336F4: + lsls r0, r4, #9 + ldr r1, _08033708 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #8 + adds r2, r6, #0 + bl memcpy + b _08033722 + .align 2, 0 +_08033708: .4byte gUnknown_2023508 +_0803370C: + ldrb r2, [r3, #8] + ldr r3, _08033740 + ldr r1, _08033744 + lsls r0, r4, #2 + adds r0, r0, r1 + lsls r2, r2, #2 + ldr r1, [r0] + lsls r1, r2 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] +_08033722: + ldr r0, _08033748 + mov r2, sb + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, r6, r0 + adds r0, #8 + strh r0, [r1, #0x26] +_08033734: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08033740: .4byte gUnknown_2023D0C +_08033744: .4byte gUnknown_82FACB4 +_08033748: .4byte gUnknown_3005B60 + thumb_func_end sub_080335F4 + + thumb_func_start sub_0803374C +sub_0803374C: @ 0x0803374C + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803376C + movs r3, #0 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + strb r3, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803376C: .4byte gUnknown_20229C4 + thumb_func_end sub_0803374C + + thumb_func_start sub_08033770 +sub_08033770: @ 0x08033770 + push {r4, r5, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033794 + movs r4, #0 + movs r3, #1 + strb r3, [r1] + strb r5, [r1, #1] + strb r2, [r1, #2] + strb r4, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08033794: .4byte gUnknown_20229C4 + thumb_func_end sub_08033770 + + thumb_func_start sub_08033798 +sub_08033798: @ 0x08033798 + push {r4, r5, r6, lr} + ldr r4, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + ldr r0, _080337D4 + movs r3, #2 + strb r3, [r0] + strb r1, [r0, #1] + strb r2, [r0, #2] + adds r1, r0, #0 + cmp r5, #0 + beq _080337C6 + adds r3, r1, #3 + adds r2, r5, #0 +_080337B8: + ldrb r0, [r4] + strb r0, [r3] + adds r4, #1 + adds r3, #1 + subs r2, #1 + cmp r2, #0 + bne _080337B8 +_080337C6: + adds r2, r5, #3 + adds r0, r6, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080337D4: .4byte gUnknown_20229C4 + thumb_func_end sub_08033798 + + thumb_func_start sub_080337D8 +sub_080337D8: @ 0x080337D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + ldr r0, _08033814 + movs r2, #3 + strb r2, [r0] + strb r1, [r0, #1] + strb r4, [r0, #2] + adds r5, r0, #0 + cmp r4, #0 + beq _08033804 + adds r1, r5, #3 + adds r2, r4, #0 +_080337F6: + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r1, #1 + subs r2, #1 + cmp r2, #0 + bne _080337F6 +_08033804: + adds r2, r4, #3 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033814: .4byte gUnknown_20229C4 + thumb_func_end sub_080337D8 + + thumb_func_start sub_08033818 +sub_08033818: @ 0x08033818 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033834 + movs r2, #4 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033834: .4byte gUnknown_20229C4 + thumb_func_end sub_08033818 + + thumb_func_start sub_08033838 +sub_08033838: @ 0x08033838 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033858 + movs r3, #5 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + strb r3, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033858: .4byte gUnknown_20229C4 + thumb_func_end sub_08033838 + + thumb_func_start sub_0803385C +sub_0803385C: @ 0x0803385C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033878 + movs r2, #6 + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033878: .4byte gUnknown_20229C4 + thumb_func_end sub_0803385C + + thumb_func_start sub_0803387C +sub_0803387C: @ 0x0803387C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033898 + movs r2, #7 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033898: .4byte gUnknown_20229C4 + thumb_func_end sub_0803387C + + thumb_func_start sub_0803389C +sub_0803389C: @ 0x0803389C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080338B8 + movs r2, #8 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080338B8: .4byte gUnknown_20229C4 + thumb_func_end sub_0803389C + + thumb_func_start sub_080338BC +sub_080338BC: @ 0x080338BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080338D8 + movs r2, #9 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080338D8: .4byte gUnknown_20229C4 + thumb_func_end sub_080338BC + + thumb_func_start sub_080338DC +sub_080338DC: @ 0x080338DC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080338F8 + movs r2, #0xa + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080338F8: .4byte gUnknown_20229C4 + thumb_func_end sub_080338DC + + thumb_func_start sub_080338FC +sub_080338FC: @ 0x080338FC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033918 + movs r2, #0xb + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033918: .4byte gUnknown_20229C4 + thumb_func_end sub_080338FC + + thumb_func_start sub_0803391C +sub_0803391C: @ 0x0803391C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033938 + movs r2, #0xc + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033938: .4byte gUnknown_20229C4 + thumb_func_end sub_0803391C + + thumb_func_start sub_0803393C +sub_0803393C: @ 0x0803393C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033958 + movs r2, #0xd + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033958: .4byte gUnknown_20229C4 + thumb_func_end sub_0803393C + + thumb_func_start sub_0803395C +sub_0803395C: @ 0x0803395C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r1, _080339A0 + movs r0, #0xe + strb r0, [r1] + strb r4, [r1, #1] + lsls r0, r4, #1 + adds r0, r0, r4 + adds r5, r1, #0 + cmp r0, #0 + beq _0803398A + adds r1, r5, #2 + adds r3, r0, #0 +_0803397C: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bne _0803397C +_0803398A: + lsls r2, r4, #1 + adds r2, r2, r4 + adds r2, #2 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080339A0: .4byte gUnknown_20229C4 + thumb_func_end sub_0803395C + + thumb_func_start sub_080339A4 +sub_080339A4: @ 0x080339A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r6, [sp, #0x2c] + mov r8, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r7, _08033A3C + movs r0, #0 + mov ip, r0 + movs r0, #0xf + strb r0, [r7] + strb r1, [r7, #1] + lsrs r1, r1, #8 + strb r1, [r7, #2] + strb r2, [r7, #3] + strb r3, [r7, #4] + movs r6, #0xff + lsls r6, r6, #8 + lsrs r3, r3, #8 + strb r3, [r7, #5] + strb r4, [r7, #6] + adds r0, r4, #0 + ands r0, r6 + asrs r0, r0, #8 + strb r0, [r7, #7] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r4 + asrs r0, r0, #0x10 + strb r0, [r7, #8] + lsrs r4, r4, #0x18 + strb r4, [r7, #9] + strb r5, [r7, #0xa] + mov r0, r8 + strb r0, [r7, #0xb] + mov r0, ip + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08033A44 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08033A44 + ldr r0, _08033A40 + ldrh r0, [r0] + strb r0, [r7, #0xc] + ands r6, r0 + lsrs r0, r6, #8 + strb r0, [r7, #0xd] + adds r4, r7, #0 + b _08033A4E + .align 2, 0 +_08033A3C: .4byte gUnknown_20229C4 +_08033A40: .4byte gUnknown_2024070 +_08033A44: + ldr r0, _08033A78 + movs r1, #0 + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + adds r4, r0, #0 +_08033A4E: + movs r0, #0 + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x10 + ldr r1, [sp, #0x28] + movs r2, #0x1c + bl memcpy + mov r0, sb + adds r1, r4, #0 + movs r2, #0x2c + bl sub_08033050 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08033A78: .4byte gUnknown_20229C4 + thumb_func_end sub_080339A4 + + thumb_func_start sub_08033A7C +sub_08033A7C: @ 0x08033A7C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _08033B40 + movs r0, #0x10 + strb r0, [r2] + ldr r0, _08033B44 + ldrb r0, [r0] + strb r0, [r2, #1] + strb r1, [r2, #2] + lsrs r1, r1, #8 + strb r1, [r2, #3] + adds r0, r2, #4 + mov ip, r0 + ldr r4, _08033B48 + ldrh r0, [r4] + strh r0, [r2, #4] + ldr r0, _08033B4C + ldrh r0, [r0] + mov r1, ip + strh r0, [r1, #2] + ldr r0, _08033B50 + ldrh r0, [r0] + strh r0, [r1, #4] + ldr r0, _08033B54 + ldrb r0, [r0] + strb r0, [r1, #6] + ldr r0, _08033B58 + ldrb r0, [r0, #0x17] + strb r0, [r1, #7] + ldr r0, _08033B5C + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x52 + ldrb r1, [r1] + mov r3, ip + strb r1, [r3, #8] + adds r0, #0xb1 + ldrb r0, [r0] + strb r0, [r3, #9] + ldr r0, _08033B60 + ldrb r0, [r0] + strb r0, [r3, #0xa] + ldr r3, _08033B64 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + mov r1, ip + strb r0, [r1, #0xb] + movs r3, #0 + adds r7, r2, #0 + adds r2, #0x10 + ldr r0, _08033B68 + adds r4, r0, #0 + adds r4, #0x20 +_08033AFA: + adds r1, r2, r3 + ldrb r0, [r4] + strb r0, [r1] + adds r4, #0x58 + adds r3, #1 + cmp r3, #3 + ble _08033AFA + movs r3, #0 + mov r4, ip + adds r4, #0x10 + ldr r6, _08033B6C + mov r2, ip + adds r2, #0x20 + ldr r5, _08033B70 +_08033B16: + adds r1, r4, r3 + adds r0, r3, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r3 + adds r0, r3, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r3, #1 + cmp r3, #0xf + ble _08033B16 + mov r0, r8 + adds r1, r7, #0 + movs r2, #0x34 + bl sub_08033050 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08033B40: .4byte gUnknown_20229C4 +_08033B44: .4byte gUnknown_2023FDE +_08033B48: .4byte gUnknown_2023E8E +_08033B4C: .4byte gUnknown_2023E90 +_08033B50: .4byte gUnknown_2023EAC +_08033B54: .4byte gUnknown_2023EAE +_08033B58: .4byte gUnknown_2024118 +_08033B5C: .4byte gUnknown_2024140 +_08033B60: .4byte gUnknown_2023EB3 +_08033B64: .4byte gUnknown_82ED220 +_08033B68: .4byte gUnknown_2023D28 +_08033B6C: .4byte gUnknown_2022C0C +_08033B70: .4byte gUnknown_2022C1C + thumb_func_end sub_08033A7C + + thumb_func_start sub_08033B74 +sub_08033B74: @ 0x08033B74 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _08033C14 + movs r0, #0x11 + strb r0, [r2] + strb r0, [r2, #1] + strb r1, [r2, #2] + lsrs r1, r1, #8 + strb r1, [r2, #3] + adds r0, r2, #4 + mov ip, r0 + ldr r0, _08033C18 + ldrh r0, [r0] + strh r0, [r2, #4] + ldr r0, _08033C1C + ldrh r0, [r0] + mov r1, ip + strh r0, [r1, #2] + ldr r0, _08033C20 + ldrh r0, [r0] + strh r0, [r1, #4] + ldr r0, _08033C24 + ldrb r0, [r0] + strb r0, [r1, #6] + ldr r0, _08033C28 + ldrb r0, [r0, #0x17] + strb r0, [r1, #7] + ldr r0, _08033C2C + ldr r0, [r0] + adds r0, #0x52 + ldrb r0, [r0] + strb r0, [r1, #8] + movs r3, #0 + adds r7, r2, #0 + adds r4, r7, #0 + adds r4, #0x10 + ldr r0, _08033C30 + adds r2, r0, #0 + adds r2, #0x20 +_08033BCE: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #0x58 + adds r3, #1 + cmp r3, #3 + ble _08033BCE + movs r3, #0 + mov r4, ip + adds r4, #0x10 + ldr r6, _08033C34 + mov r2, ip + adds r2, #0x20 + ldr r5, _08033C38 +_08033BEA: + adds r1, r4, r3 + adds r0, r3, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r3 + adds r0, r3, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r3, #1 + cmp r3, #0xf + ble _08033BEA + mov r0, r8 + adds r1, r7, #0 + movs r2, #0x34 + bl sub_08033050 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08033C14: .4byte gUnknown_20229C4 +_08033C18: .4byte gUnknown_2023E8E +_08033C1C: .4byte gUnknown_2023E90 +_08033C20: .4byte gUnknown_2023EAC +_08033C24: .4byte gUnknown_2023EAE +_08033C28: .4byte gUnknown_2024118 +_08033C2C: .4byte gUnknown_2024140 +_08033C30: .4byte gUnknown_2023D28 +_08033C34: .4byte gUnknown_2022C0C +_08033C38: .4byte gUnknown_2022C1C + thumb_func_end sub_08033B74 + + thumb_func_start sub_08033C3C +sub_08033C3C: @ 0x08033C3C + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _08033C64 + movs r3, #0x12 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + lsrs r2, r2, #8 + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033C64: .4byte gUnknown_20229C4 + thumb_func_end sub_08033C3C + + thumb_func_start sub_08033C68 +sub_08033C68: @ 0x08033C68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033C84 + movs r2, #0x13 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033C84: .4byte gUnknown_20229C4 + thumb_func_end sub_08033C68 + + thumb_func_start sub_08033C88 +sub_08033C88: @ 0x08033C88 + push {r4, r5, r6, lr} + adds r5, r3, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _08033CC0 + movs r4, #0 + movs r0, #0x14 + strb r0, [r3] + strb r1, [r3, #1] + strb r2, [r3, #2] + strb r4, [r3, #3] + movs r2, #0 + adds r1, r3, #0 + adds r4, r1, #4 +_08033CA4: + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r4] + adds r4, #1 + adds r2, #1 + cmp r2, #0x13 + bls _08033CA4 + adds r0, r6, #0 + movs r2, #0x18 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033CC0: .4byte gUnknown_20229C4 + thumb_func_end sub_08033C88 + + thumb_func_start sub_08033CC4 +sub_08033CC4: @ 0x08033CC4 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08033CF4 + movs r0, #0x15 + strb r0, [r1] + movs r2, #0 + adds r3, r1, #1 +_08033CD6: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #2 + ble _08033CD6 + adds r0, r5, #0 + movs r2, #4 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08033CF4: .4byte gUnknown_20229C4 + thumb_func_end sub_08033CC4 + + thumb_func_start sub_08033CF8 +sub_08033CF8: @ 0x08033CF8 + push {r4, r5, r6, lr} + ldr r6, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08033D30 + movs r0, #0x16 + strb r0, [r4] + strb r1, [r4, #1] + strb r2, [r4, #2] + strb r3, [r4, #3] + movs r2, #0 + adds r1, r4, #0 + adds r3, r1, #4 +_08033D12: + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #2 + ble _08033D12 + adds r0, r5, #0 + movs r2, #8 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033D30: .4byte gUnknown_20229C4 + thumb_func_end sub_08033CF8 + + thumb_func_start sub_08033D34 +sub_08033D34: @ 0x08033D34 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033D50 + movs r2, #0x17 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033D50: .4byte gUnknown_20229C4 + thumb_func_end sub_08033D34 + + thumb_func_start sub_08033D54 +sub_08033D54: @ 0x08033D54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, _08033D88 + movs r4, #0 + movs r2, #0x18 + strb r2, [r3] + strb r4, [r3, #1] + strb r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0xff + lsls r2, r2, #8 + ands r1, r2 + asrs r1, r1, #8 + strb r1, [r3, #3] + adds r1, r3, #0 + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033D88: .4byte gUnknown_20229C4 + thumb_func_end sub_08033D54 + + thumb_func_start sub_08033D8C +sub_08033D8C: @ 0x08033D8C + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _08033DBC + movs r3, #0x19 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0xff + lsls r3, r3, #8 + ands r2, r3 + asrs r2, r2, #8 + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033DBC: .4byte gUnknown_20229C4 + thumb_func_end sub_08033D8C + + thumb_func_start sub_08033DC0 +sub_08033DC0: @ 0x08033DC0 + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033E10 + movs r3, #0x1a + strb r3, [r1] + strb r4, [r1, #1] + movs r6, #0xff + lsls r6, r6, #8 + adds r3, r4, #0 + ands r3, r6 + lsrs r3, r3, #8 + strb r3, [r1, #2] + movs r5, #0xff + lsls r5, r5, #0x10 + adds r3, r4, #0 + ands r3, r5 + lsrs r3, r3, #0x10 + strb r3, [r1, #3] + lsrs r4, r4, #0x18 + strb r4, [r1, #4] + strb r2, [r1, #5] + adds r3, r2, #0 + ands r3, r6 + lsrs r3, r3, #8 + strb r3, [r1, #6] + adds r3, r2, #0 + ands r3, r5 + lsrs r3, r3, #0x10 + strb r3, [r1, #7] + lsrs r2, r2, #0x18 + strb r2, [r1, #8] + movs r2, #9 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033E10: .4byte gUnknown_20229C4 + thumb_func_end sub_08033DC0 + + thumb_func_start sub_08033E14 +sub_08033E14: @ 0x08033E14 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033E4C + movs r3, #0x1b + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + movs r3, #0xff + lsls r3, r3, #8 + ands r3, r2 + lsrs r3, r3, #8 + strb r3, [r1, #3] + movs r3, #0xff + lsls r3, r3, #0x10 + ands r3, r2 + lsrs r3, r3, #0x10 + strb r3, [r1, #4] + lsrs r2, r2, #0x18 + strb r2, [r1, #5] + movs r2, #6 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033E4C: .4byte gUnknown_20229C4 + thumb_func_end sub_08033E14 + + thumb_func_start sub_08033E50 +sub_08033E50: @ 0x08033E50 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08033E6C + movs r2, #0x1c + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08033E6C: .4byte gUnknown_20229C4 + thumb_func_end sub_08033E50 + + thumb_func_start sub_08033E70 +sub_08033E70: @ 0x08033E70 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r1, _08033EB4 + movs r0, #0x1d + strb r0, [r1] + strb r0, [r1, #1] + strb r4, [r1, #2] + lsrs r0, r4, #8 + strb r0, [r1, #3] + adds r5, r1, #0 + cmp r4, #0 + beq _08033EA0 + adds r1, r5, #4 + adds r3, r4, #0 +_08033E92: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bne _08033E92 +_08033EA0: + adds r2, r4, #4 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033EB4: .4byte gUnknown_20229C4 + thumb_func_end sub_08033E70 + + thumb_func_start sub_08033EB8 +sub_08033EB8: @ 0x08033EB8 + push {r4, r5, r6, lr} + adds r4, r3, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + ldr r2, _08033F1C + movs r0, #0x1e + strb r0, [r2] + strb r1, [r2, #1] + movs r3, #0xff + lsls r3, r3, #8 + adds r0, r1, #0 + ands r0, r3 + lsrs r0, r0, #8 + strb r0, [r2, #2] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r2, #3] + lsrs r1, r1, #0x18 + strb r1, [r2, #4] + strb r5, [r2, #5] + adds r0, r5, #0 + ands r0, r3 + lsrs r0, r0, #8 + strb r0, [r2, #6] + adds r1, r2, #0 + cmp r5, #0 + beq _08033F08 + adds r3, r1, #7 + adds r2, r5, #0 +_08033EFA: + ldrb r0, [r4] + strb r0, [r3] + adds r4, #1 + adds r3, #1 + subs r2, #1 + cmp r2, #0 + bne _08033EFA +_08033F08: + adds r2, r5, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r6, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033F1C: .4byte gUnknown_20229C4 + thumb_func_end sub_08033EB8 + + thumb_func_start sub_08033F20 +sub_08033F20: @ 0x08033F20 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r1, _08033F64 + movs r0, #0x1f + strb r0, [r1] + strb r4, [r1, #1] + lsrs r0, r4, #8 + strb r0, [r1, #2] + adds r5, r1, #0 + cmp r4, #0 + beq _08033F4E + adds r1, r5, #3 + adds r3, r4, #0 +_08033F40: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bne _08033F40 +_08033F4E: + adds r2, r4, #3 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033F64: .4byte gUnknown_20229C4 + thumb_func_end sub_08033F20 + + thumb_func_start sub_08033F68 +sub_08033F68: @ 0x08033F68 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r1, _08033FAC + movs r0, #0x20 + strb r0, [r1] + strb r4, [r1, #1] + lsrs r0, r4, #8 + strb r0, [r1, #2] + adds r5, r1, #0 + cmp r4, #0 + beq _08033F96 + adds r1, r5, #3 + adds r3, r4, #0 +_08033F88: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bne _08033F88 +_08033F96: + adds r2, r4, #3 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08033050 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08033FAC: .4byte gUnknown_20229C4 + thumb_func_end sub_08033F68 + + thumb_func_start sub_08033FB0 +sub_08033FB0: @ 0x08033FB0 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _08033FD8 + movs r3, #0x21 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + lsrs r2, r2, #8 + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08033FD8: .4byte gUnknown_20229C4 + thumb_func_end sub_08033FB0 + + thumb_func_start sub_08033FDC +sub_08033FDC: @ 0x08033FDC + push {r4, r5, lr} + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08034010 + movs r0, #0x22 + strb r0, [r2] + strb r1, [r2, #1] + movs r3, #0 + adds r1, r2, #2 +_08033FF0: + adds r0, r4, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r1, #1 + adds r3, #1 + cmp r3, #2 + ble _08033FF0 + adds r0, r5, #0 + adds r1, r2, #0 + movs r2, #5 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034010: .4byte gUnknown_20229C4 + thumb_func_end sub_08033FDC + + thumb_func_start sub_08034014 +sub_08034014: @ 0x08034014 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, _0803403C + movs r4, #0 + movs r2, #0x23 + strb r2, [r3] + strb r1, [r3, #1] + lsrs r1, r1, #8 + strb r1, [r3, #2] + strb r4, [r3, #3] + adds r1, r3, #0 + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803403C: .4byte gUnknown_20229C4 + thumb_func_end sub_08034014 + + thumb_func_start sub_08034040 +sub_08034040: @ 0x08034040 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, _08034068 + movs r4, #0 + movs r2, #0x24 + strb r2, [r3] + strb r1, [r3, #1] + lsrs r1, r1, #8 + strb r1, [r3, #2] + strb r4, [r3, #3] + adds r1, r3, #0 + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034068: .4byte gUnknown_20229C4 + thumb_func_end sub_08034040 + + thumb_func_start sub_0803406C +sub_0803406C: @ 0x0803406C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08034088 + movs r2, #0x25 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08034088: .4byte gUnknown_20229C4 + thumb_func_end sub_0803406C + + thumb_func_start sub_0803408C +sub_0803408C: @ 0x0803408C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080340A8 + movs r2, #0x26 + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080340A8: .4byte gUnknown_20229C4 + thumb_func_end sub_0803408C + + thumb_func_start sub_080340AC +sub_080340AC: @ 0x080340AC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080340C8 + movs r2, #0x27 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080340C8: .4byte gUnknown_20229C4 + thumb_func_end sub_080340AC + + thumb_func_start sub_080340CC +sub_080340CC: @ 0x080340CC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080340E8 + movs r2, #0x28 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080340E8: .4byte gUnknown_20229C4 + thumb_func_end sub_080340CC + + thumb_func_start sub_080340EC +sub_080340EC: @ 0x080340EC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08034108 + movs r2, #0x29 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08034108: .4byte gUnknown_20229C4 + thumb_func_end sub_080340EC + + thumb_func_start sub_0803410C +sub_0803410C: @ 0x0803410C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08034128 + movs r2, #0x2a + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08034128: .4byte gUnknown_20229C4 + thumb_func_end sub_0803410C + + thumb_func_start sub_0803412C +sub_0803412C: @ 0x0803412C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, _08034154 + movs r4, #0 + movs r2, #0x2b + strb r2, [r3] + strb r1, [r3, #1] + lsrs r1, r1, #8 + strb r1, [r3, #2] + strb r4, [r3, #3] + adds r1, r3, #0 + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034154: .4byte gUnknown_20229C4 + thumb_func_end sub_0803412C + + thumb_func_start sub_08034158 +sub_08034158: @ 0x08034158 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _08034180 + movs r3, #0x2c + strb r3, [r4] + strb r1, [r4, #1] + lsrs r1, r1, #8 + strb r1, [r4, #2] + strb r2, [r4, #3] + adds r1, r4, #0 + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08034180: .4byte gUnknown_20229C4 + thumb_func_end sub_08034158 + + thumb_func_start sub_08034184 +sub_08034184: @ 0x08034184 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080341A0 + movs r2, #0x2d + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080341A0: .4byte gUnknown_20229C4 + thumb_func_end sub_08034184 + + thumb_func_start sub_080341A4 +sub_080341A4: @ 0x080341A4 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080341C0 + movs r2, #0x2e + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080341C0: .4byte gUnknown_20229C4 + thumb_func_end sub_080341A4 + + thumb_func_start sub_080341C4 +sub_080341C4: @ 0x080341C4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080341E0 + movs r2, #0x2f + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_080341E0: .4byte gUnknown_20229C4 + thumb_func_end sub_080341C4 + + thumb_func_start sub_080341E4 +sub_080341E4: @ 0x080341E4 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _08034228 + movs r3, #0x30 + strb r3, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1f + strb r0, [r1, #2] + strb r3, [r1, #3] + movs r2, #0 + adds r3, r1, #4 +_0803420C: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #0x2f + ble _0803420C + adds r0, r5, #0 + movs r2, #0x34 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034228: .4byte gUnknown_20229C4 + thumb_func_end sub_080341E4 + + thumb_func_start sub_0803422C +sub_0803422C: @ 0x0803422C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08034248 + movs r2, #0x31 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08034248: .4byte gUnknown_20229C4 + thumb_func_end sub_0803422C + + thumb_func_start sub_0803424C +sub_0803424C: @ 0x0803424C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08034268 + movs r2, #0x32 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_08034268: .4byte gUnknown_20229C4 + thumb_func_end sub_0803424C + + thumb_func_start sub_0803426C +sub_0803426C: @ 0x0803426C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803428C + movs r2, #0x33 + strb r2, [r1] + strb r3, [r1, #1] + strb r2, [r1, #2] + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_0803428C: .4byte gUnknown_20229C4 + thumb_func_end sub_0803426C + + thumb_func_start sub_08034290 +sub_08034290: @ 0x08034290 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _080342B8 + movs r3, #0x34 + strb r3, [r1] + strb r4, [r1, #1] + strb r2, [r1, #2] + lsrs r2, r2, #8 + strb r2, [r1, #3] + movs r2, #4 + bl sub_08033050 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080342B8: .4byte gUnknown_20229C4 + thumb_func_end sub_08034290 + + thumb_func_start sub_080342BC +sub_080342BC: @ 0x080342BC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, _080342E0 + movs r0, #0x35 + strb r0, [r4] + strb r1, [r4, #1] + cmp r2, #0 + beq _080342E4 + adds r0, r4, #4 + bl sub_08184F3C + strb r0, [r4, #2] + strb r0, [r4, #3] + b _080342E8 + .align 2, 0 +_080342E0: .4byte gUnknown_20229C4 +_080342E4: + strb r2, [r4, #2] + strb r2, [r4, #3] +_080342E8: + ldr r1, _080342FC + ldrb r2, [r1, #2] + adds r2, #4 + adds r0, r5, #0 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080342FC: .4byte gUnknown_20229C4 + thumb_func_end sub_080342BC + + thumb_func_start sub_08034300 +sub_08034300: @ 0x08034300 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803431C + movs r2, #0x36 + strb r2, [r1] + strb r3, [r1, #1] + movs r2, #2 + bl sub_08033050 + pop {r0} + bx r0 + .align 2, 0 +_0803431C: .4byte gUnknown_20229C4 + thumb_func_end sub_08034300 + + thumb_func_start sub_08034320 +sub_08034320: @ 0x08034320 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _08034364 + movs r0, #0x37 + strb r0, [r4] + strb r1, [r4, #1] + ldr r0, _08034368 + ldr r1, [r0] + ldr r0, _0803436C + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1f + strb r0, [r4, #2] + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1f + strb r0, [r4, #3] + adds r0, r4, #6 + bl sub_08184F3C + strb r0, [r4, #4] + strb r0, [r4, #5] + ldrb r2, [r4, #4] + adds r2, #6 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08033050 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034364: .4byte gUnknown_20229C4 +_08034368: .4byte gUnknown_3005AF0 +_0803436C: .4byte 0x00000CA9 + thumb_func_end sub_08034320 + + thumb_func_start sub_08034370 +sub_08034370: @ 0x08034370 + push {lr} + bl LZ77UnCompWram + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034370 + + thumb_func_start sub_0803437C +sub_0803437C: @ 0x0803437C + push {lr} + bl LZ77UnCompVram + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0803437C + + thumb_func_start sub_08034388 +sub_08034388: @ 0x08034388 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r0, [r4] + ldr r5, _080343B8 + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + ldrh r0, [r4, #4] + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080343B8: .4byte gUnknown_201C000 + thumb_func_end sub_08034388 + + thumb_func_start sub_080343BC +sub_080343BC: @ 0x080343BC + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4] + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + ldrh r0, [r4, #4] + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080343BC + + thumb_func_start sub_080343E4 +sub_080343E4: @ 0x080343E4 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r0, [r5] + ldr r4, _08034410 + adds r1, r4, #0 + bl LZ77UnCompWram + str r4, [sp] + ldrh r2, [r5, #4] + ldr r1, _08034414 + ldr r0, [sp, #4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_0800845C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034410: .4byte gUnknown_201C000 +_08034414: .4byte 0xFFFF0000 + thumb_func_end sub_080343E4 + + thumb_func_start sub_08034418 +sub_08034418: @ 0x08034418 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, [r5] + bl LZ77UnCompWram + str r4, [sp] + ldrh r2, [r5, #4] + ldr r1, _08034444 + ldr r0, [sp, #4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_0800845C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034444: .4byte 0xFFFF0000 + thumb_func_end sub_08034418 + + thumb_func_start sub_08034448 +sub_08034448: @ 0x08034448 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + ble _08034468 + ldr r0, _08034464 + ldr r0, [r0] + bl LZ77UnCompWram + b _08034470 + .align 2, 0 +_08034464: .4byte gUnknown_82DDA1C +_08034468: + ldr r0, [r3] + adds r1, r4, #0 + bl LZ77UnCompWram +_08034470: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08034A88 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034448 + + thumb_func_start sub_08034480 +sub_08034480: @ 0x08034480 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r0, r2, #3 + ldr r1, _080344A8 + adds r0, r0, r1 + movs r1, #0 + cmp r4, r0 + bne _08034496 + movs r1, #1 +_08034496: + str r1, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08034898 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080344A8: .4byte gUnknown_82DDA1C + thumb_func_end sub_08034480 + + thumb_func_start sub_080344AC +sub_080344AC: @ 0x080344AC + push {r4, r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r7, #0xc9 + bne _08034528 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r5 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r5 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r5 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r5 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080344FA + movs r1, #0xc9 + b _08034504 +_080344FA: + movs r2, #0xce + lsls r2, r2, #1 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_08034504: + mov r0, r8 + cmp r0, #0 + bne _08034518 + ldr r0, _08034514 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034534 + .align 2, 0 +_08034514: .4byte gUnknown_82D6148 +_08034518: + ldr r0, _08034524 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034534 + .align 2, 0 +_08034524: .4byte gUnknown_82DDA1C +_08034528: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + ble _08034540 + ldr r0, _0803453C + ldr r0, [r0] +_08034534: + adds r1, r4, #0 + bl LZ77UnCompWram + b _08034548 + .align 2, 0 +_0803453C: .4byte gUnknown_82DDA1C +_08034540: + ldr r0, [r6] + adds r1, r4, #0 + bl LZ77UnCompWram +_08034548: + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08034A88 + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + mov r3, r8 + bl sub_0806D128 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080344AC + + thumb_func_start sub_08034568 +sub_08034568: @ 0x08034568 + push {lr} + ldr r0, [r0] + bl LZ77UnCompWram + pop {r0} + bx r0 + thumb_func_end sub_08034568 + + thumb_func_start sub_08034574 +sub_08034574: @ 0x08034574 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + mov sb, r0 + str r1, [sp] + str r2, [sp, #4] + adds r5, r3, #0 + movs r0, #1 + mov r1, sb + ands r0, r1 + cmp r0, #0 + bne _08034594 + b _0803472C +_08034594: + asrs r0, r1, #1 + adds r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + movs r0, #0 + ldr r2, [sp] + cmp r0, r2 + blt _080345A8 + b _080347BC +_080345A8: + movs r4, #8 + subs r1, r4, r1 + str r1, [sp, #0x10] +_080345AE: + movs r7, #0 + adds r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + cmp r7, r0 + bge _0803462A + ldr r1, [sp, #8] + lsls r1, r1, #8 + str r1, [sp, #0x18] + movs r2, #0 + mov sl, r2 + mov r0, sb + movs r4, #8 + subs r0, r4, r0 + str r0, [sp, #0xc] +_080345CC: + movs r3, #0 + asrs r0, r7, #1 + adds r1, r7, #0 + movs r2, #1 + ands r1, r2 + str r1, [sp, #0x20] + lsls r0, r0, #8 + mov r8, r0 + mov ip, r5 +_080345DE: + lsls r1, r3, #5 + ldr r4, [sp, #0x18] + adds r0, r5, r4 + adds r0, r0, r1 + mov r1, r8 + adds r2, r0, r1 + mov r1, ip + add r1, r8 + movs r6, #0xf +_080345F0: + ldr r4, [sp, #0x20] + cmp r4, #0 + bne _08034600 + strb r4, [r1] + add r4, sp, #0x20 + ldrb r4, [r4] + strb r4, [r2, #0x10] + b _0803460E +_08034600: + mov r0, sl + strb r0, [r1, #0x10] + movs r4, #0x80 + lsls r4, r4, #1 + adds r4, r2, r4 + str r4, [sp, #0x1c] + strb r0, [r4] +_0803460E: + adds r2, #1 + adds r1, #1 + subs r6, #1 + cmp r6, #0 + bge _080345F0 + movs r0, #0x20 + add ip, r0 + adds r3, #1 + cmp r3, #7 + ble _080345DE + adds r7, #1 + ldr r1, [sp, #0xc] + cmp r7, r1 + blt _080345CC +_0803462A: + movs r7, #0 + movs r2, #0 +_0803462E: + movs r6, #0 + adds r4, r7, #1 + mov r8, r4 + lsls r4, r7, #5 +_08034636: + adds r0, r6, #1 + mov sl, r0 + lsls r1, r6, #8 + adds r0, r1, #0 + adds r0, #0xc0 + adds r0, r5, r0 + adds r0, r0, r4 + adds r1, r5, r1 + adds r1, r1, r4 + movs r3, #0x1f +_0803464A: + strb r2, [r1] + strb r2, [r0] + adds r0, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bge _0803464A + mov r6, sl + cmp r6, #7 + ble _08034636 + mov r7, r8 + cmp r7, #1 + ble _0803462E + mov r1, sb + cmp r1, #5 + bne _08034670 + movs r2, #0x90 + lsls r2, r2, #1 + adds r5, r5, r2 +_08034670: + movs r7, #0 + cmp r7, sb + bge _08034706 +_08034676: + movs r3, #0 + adds r7, #1 + mov r8, r7 + cmp r3, sb + bge _080346E6 +_08034680: + adds r3, #1 + mov sl, r3 + ldr r4, [sp, #4] + adds r4, #0x20 + adds r7, r5, #0 + adds r7, #0x20 + movs r0, #0x12 + adds r0, r0, r5 + mov ip, r0 + ldr r2, [sp, #4] + adds r3, r5, #0 + movs r6, #3 +_08034698: + ldrb r0, [r2] + mov r1, ip + strb r0, [r1] + ldrb r0, [r2, #1] + strb r0, [r1, #1] + ldrb r0, [r2, #2] + strb r0, [r1, #0x1e] + ldrb r0, [r2, #3] + strb r0, [r1, #0x1f] + movs r0, #0x81 + lsls r0, r0, #1 + adds r1, r3, r0 + ldrb r0, [r2, #0x10] + strb r0, [r1] + ldr r0, _080346F0 + adds r1, r3, r0 + ldrb r0, [r2, #0x11] + strb r0, [r1] + movs r0, #0x90 + lsls r0, r0, #1 + adds r1, r3, r0 + ldrb r0, [r2, #0x12] + strb r0, [r1] + ldr r0, _080346F4 + adds r1, r3, r0 + ldrb r0, [r2, #0x13] + strb r0, [r1] + movs r1, #4 + add ip, r1 + adds r2, #4 + adds r3, #4 + subs r6, #1 + cmp r6, #0 + bge _08034698 + str r4, [sp, #4] + adds r5, r7, #0 + mov r3, sl + cmp r3, sb + blt _08034680 +_080346E6: + mov r2, sb + cmp r2, #7 + bne _080346F8 + adds r5, #0x20 + b _08034700 + .align 2, 0 +_080346F0: .4byte 0x00000103 +_080346F4: .4byte 0x00000121 +_080346F8: + mov r4, sb + cmp r4, #5 + bne _08034700 + adds r5, #0x60 +_08034700: + mov r7, r8 + cmp r7, sb + blt _08034676 +_08034706: + mov r0, sb + cmp r0, #7 + bne _08034714 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r5, r1 + b _08034720 +_08034714: + mov r2, sb + cmp r2, #5 + bne _08034720 + movs r4, #0xf0 + lsls r4, r4, #1 + adds r5, r5, r4 +_08034720: + ldr r0, [sp, #0x14] + ldr r1, [sp] + cmp r0, r1 + bge _0803472A + b _080345AE +_0803472A: + b _080347BC +_0803472C: + movs r6, #0 + ldr r2, [sp] + cmp r6, r2 + bge _080347BC +_08034734: + adds r6, #1 + mov sl, r6 + mov r4, sb + cmp r4, #6 + bne _0803474C + movs r0, #0 + movs r3, #0xff +_08034742: + strb r0, [r5] + adds r5, #1 + subs r3, #1 + cmp r3, #0 + bge _08034742 +_0803474C: + movs r7, #0 + cmp r7, sb + bge _080347A0 +_08034752: + adds r7, #1 + mov r8, r7 + mov r1, sb + lsls r0, r1, #5 + cmp r1, #6 + bne _0803476C + movs r1, #0 + movs r3, #0x1f +_08034762: + strb r1, [r5] + adds r5, #1 + subs r3, #1 + cmp r3, #0 + bge _08034762 +_0803476C: + adds r1, r0, #0 + cmp r1, #0 + ble _08034786 + adds r3, r1, #0 +_08034774: + ldr r2, [sp, #4] + ldrb r0, [r2] + strb r0, [r5] + adds r2, #1 + str r2, [sp, #4] + adds r5, #1 + subs r3, #1 + cmp r3, #0 + bne _08034774 +_08034786: + mov r4, sb + cmp r4, #6 + bne _0803479A + movs r0, #0 + movs r3, #0x1f +_08034790: + strb r0, [r5] + adds r5, #1 + subs r3, #1 + cmp r3, #0 + bge _08034790 +_0803479A: + mov r7, r8 + cmp r7, sb + blt _08034752 +_080347A0: + mov r0, sb + cmp r0, #6 + bne _080347B4 + movs r0, #0 + movs r3, #0xff +_080347AA: + strb r0, [r5] + adds r5, #1 + subs r3, #1 + cmp r3, #0 + bge _080347AA +_080347B4: + mov r6, sl + ldr r1, [sp] + cmp r6, r1 + blt _08034734 +_080347BC: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08034574 + + thumb_func_start sub_080347CC +sub_080347CC: @ 0x080347CC + adds r2, r0, #0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + ldrb r1, [r2, #2] + lsls r1, r1, #8 + orrs r0, r1 + ldrb r1, [r2, #1] + orrs r0, r1 + bx lr + .align 2, 0 + thumb_func_end sub_080347CC + + thumb_func_start sub_080347E0 +sub_080347E0: @ 0x080347E0 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0] + lsrs r0, r0, #8 + bl sub_08000BDC + adds r5, r0, #0 + ldr r0, [r4] + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + ldrh r0, [r4, #4] + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + adds r0, r5, #0 + bl sub_08000BF0 + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080347E0 + + thumb_func_start sub_0803481C +sub_0803481C: @ 0x0803481C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0] + lsrs r0, r0, #8 + bl sub_08000BDC + adds r5, r0, #0 + ldr r0, [r4] + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r2, [r4, #4] + ldr r1, _0803485C + ldr r0, [sp, #4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_0800845C + adds r0, r5, #0 + bl sub_08000BF0 + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0803485C: .4byte 0xFFFF0000 + thumb_func_end sub_0803481C + + thumb_func_start sub_08034860 +sub_08034860: @ 0x08034860 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + ble _08034880 + ldr r0, _0803487C + ldr r0, [r0] + bl LZ77UnCompWram + b _08034888 + .align 2, 0 +_0803487C: .4byte gUnknown_82DDA1C +_08034880: + ldr r0, [r3] + adds r1, r4, #0 + bl LZ77UnCompWram +_08034888: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08034A88 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034860 + + thumb_func_start sub_08034898 +sub_08034898: @ 0x08034898 + push {r4, r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r7, #0xc9 + bne _08034914 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r5 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r5 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r5 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r5 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080348E6 + movs r1, #0xc9 + b _080348F0 +_080348E6: + movs r2, #0xce + lsls r2, r2, #1 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_080348F0: + mov r0, r8 + cmp r0, #0 + bne _08034904 + ldr r0, _08034900 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034920 + .align 2, 0 +_08034900: .4byte gUnknown_82D6148 +_08034904: + ldr r0, _08034910 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034920 + .align 2, 0 +_08034910: .4byte gUnknown_82DDA1C +_08034914: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + ble _0803492C + ldr r0, _08034928 + ldr r0, [r0] +_08034920: + adds r1, r4, #0 + bl LZ77UnCompWram + b _08034934 + .align 2, 0 +_08034928: .4byte gUnknown_82DDA1C +_0803492C: + ldr r0, [r6] + adds r1, r4, #0 + bl LZ77UnCompWram +_08034934: + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08034A88 + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + mov r3, r8 + bl sub_0806D128 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08034898 + + thumb_func_start sub_08034954 +sub_08034954: @ 0x08034954 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r0, r2, #3 + ldr r1, _0803497C + adds r0, r0, r1 + movs r1, #0 + cmp r4, r0 + bne _0803496A + movs r1, #1 +_0803496A: + str r1, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08034898 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803497C: .4byte gUnknown_82DDA1C + thumb_func_end sub_08034954 + + thumb_func_start sub_08034980 +sub_08034980: @ 0x08034980 + push {lr} + adds r3, r0, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r2, r0 + ble _0803499C + ldr r0, _08034998 + ldr r0, [r0] + bl LZ77UnCompWram + b _080349A2 + .align 2, 0 +_08034998: .4byte gUnknown_82DDA1C +_0803499C: + ldr r0, [r3] + bl LZ77UnCompWram +_080349A2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034980 + + thumb_func_start sub_080349A8 +sub_080349A8: @ 0x080349A8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r0, r2, #3 + ldr r1, _080349D0 + adds r0, r0, r1 + movs r1, #0 + cmp r4, r0 + bne _080349BE + movs r1, #1 +_080349BE: + str r1, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080349D4 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080349D0: .4byte gUnknown_82DDA1C + thumb_func_end sub_080349A8 + + thumb_func_start sub_080349D4 +sub_080349D4: @ 0x080349D4 + push {r4, r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r7, #0xc9 + bne _08034A50 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r4 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r4 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r4 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r4 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08034A22 + movs r1, #0xc9 + b _08034A2C +_08034A22: + movs r2, #0xce + lsls r2, r2, #1 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_08034A2C: + mov r0, r8 + cmp r0, #0 + bne _08034A40 + ldr r0, _08034A3C + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034A5C + .align 2, 0 +_08034A3C: .4byte gUnknown_82D6148 +_08034A40: + ldr r0, _08034A4C + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + b _08034A5C + .align 2, 0 +_08034A4C: .4byte gUnknown_82DDA1C +_08034A50: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + ble _08034A68 + ldr r0, _08034A64 + ldr r0, [r0] +_08034A5C: + adds r1, r5, #0 + bl LZ77UnCompWram + b _08034A70 + .align 2, 0 +_08034A64: .4byte gUnknown_82DDA1C +_08034A68: + ldr r0, [r6] + adds r1, r5, #0 + bl LZ77UnCompWram +_08034A70: + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + mov r3, r8 + bl sub_0806D128 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080349D4 + + thumb_func_start sub_08034A88 +sub_08034A88: @ 0x08034A88 + push {lr} + adds r3, r0, #0 + movs r0, #0xcd + lsls r0, r0, #1 + cmp r1, r0 + bne _08034AA2 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r3, r1 + ldr r2, _08034AA8 + adds r1, r3, #0 + bl CpuSet +_08034AA2: + pop {r0} + bx r0 + .align 2, 0 +_08034AA8: .4byte 0x04000200 + thumb_func_end sub_08034A88 + + thumb_func_start sub_08034AAC +sub_08034AAC: @ 0x08034AAC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r5, _08034ACC + ldr r0, [r5] + cmp r0, #0 + beq _08034ABC + bl sub_08034B20 +_08034ABC: + movs r0, #8 + bl sub_08000BC8 + str r0, [r5] + cmp r0, #0 + bne _08034AD0 + movs r0, #0 + b _08034B18 + .align 2, 0 +_08034ACC: .4byte gUnknown_2022AC4 +_08034AD0: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + bl sub_08000BC8 + ldr r1, [r5] + str r0, [r1, #4] + cmp r0, #0 + bne _08034AEC + adds r0, r1, #0 + bl sub_08000BF0 + movs r0, #0 + b _08034B18 +_08034AEC: + str r4, [r1] + movs r3, #0 + cmp r3, r4 + bhs _08034B16 + movs r7, #0 + movs r6, #0xff + movs r2, #0 +_08034AFA: + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r2, r0 + strb r7, [r0] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r2, r1 + ldrb r0, [r1, #1] + orrs r0, r6 + strb r0, [r1, #1] + adds r2, #0x1c + adds r3, #1 + cmp r3, r4 + blo _08034AFA +_08034B16: + movs r0, #1 +_08034B18: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08034AAC + + thumb_func_start sub_08034B20 +sub_08034B20: @ 0x08034B20 + push {r4, r5, lr} + ldr r2, _08034B68 + ldr r1, [r2] + cmp r1, #0 + beq _08034B60 + ldr r0, [r1, #4] + cmp r0, #0 + beq _08034B54 + movs r4, #0 + ldr r0, [r1] + cmp r4, r0 + bhs _08034B4A + adds r5, r2, #0 +_08034B3A: + adds r0, r4, #0 + bl sub_08035234 + adds r4, #1 + ldr r0, [r5] + ldr r0, [r0] + cmp r4, r0 + blo _08034B3A +_08034B4A: + ldr r0, _08034B68 + ldr r0, [r0] + ldr r0, [r0, #4] + bl sub_08000BF0 +_08034B54: + ldr r4, _08034B68 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08034B60: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08034B68: .4byte gUnknown_2022AC4 + thumb_func_end sub_08034B20 + + thumb_func_start sub_08034B6C +sub_08034B6C: @ 0x08034B6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov r8, r0 + mov sl, r1 + adds r5, r2, #0 + ldr r6, _08034BE4 + ldr r0, [r6] + cmp r0, #0 + beq _08034C2C + ldr r1, [r0, #4] + mov r0, r8 + lsls r2, r0, #3 + subs r0, r2, r0 + lsls r4, r0, #2 + adds r1, r4, r1 + ldrb r0, [r1] + mov sb, r2 + cmp r0, #0 + bne _08034C2C + ldrb r0, [r5, #1] + bl sub_08035370 + ldr r1, [r6] + ldr r1, [r1, #4] + adds r1, r4, r1 + strb r0, [r1, #1] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + ldrb r0, [r0, #1] + cmp r0, #0xff + beq _08034C2C + ldr r0, [r5, #8] + ldrh r0, [r0, #6] + bl sub_08008338 + ldr r2, [r6] + ldr r1, [r2, #4] + adds r1, r4, r1 + strh r0, [r1, #0xa] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldrh r1, [r0, #0xa] + ldr r7, _08034BE8 + lsrs r0, r7, #0x10 + cmp r1, r0 + bne _08034C38 + ldr r2, [r5, #8] + ldrh r0, [r2, #4] + adds r1, r2, #0 + cmp r0, #0 + beq _08034BEC + adds r0, r1, #0 + bl sub_08008210 + b _08034C0C + .align 2, 0 +_08034BE4: .4byte gUnknown_2022AC4 +_08034BE8: .4byte 0xFFFF0000 +_08034BEC: + ldr r0, [r2] + ldr r1, [r2, #4] + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r2] + bl sub_080347CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #4] + ands r1, r7 + orrs r1, r0 + str r1, [sp, #4] + mov r0, sp + bl sub_08034388 +_08034C0C: + ldr r1, [r6] + ldr r1, [r1, #4] + adds r1, r4, r1 + strh r0, [r1, #0xa] + ldr r0, _08034C30 + ldr r0, [r0] + ldr r1, [r0, #4] + mov r2, sb + mov r3, r8 + subs r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0xa] + ldr r0, _08034C34 + cmp r1, r0 + bne _08034C38 +_08034C2C: + movs r0, #0 + b _08034D40 + .align 2, 0 +_08034C30: .4byte gUnknown_2022AC4 +_08034C34: .4byte 0x0000FFFF +_08034C38: + ldr r0, [r5, #0xc] + ldrh r0, [r0, #4] + bl sub_0800851C + ldr r6, _08034D50 + ldr r1, [r6] + ldr r1, [r1, #4] + mov r4, sb + mov r3, r8 + subs r2, r4, r3 + lsls r4, r2, #2 + adds r1, r4, r1 + strb r0, [r1, #4] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + ldrb r0, [r0, #4] + cmp r0, #0xff + bne _08034C6C + ldr r0, [r5, #0xc] + bl sub_0800845C + ldr r1, [r6] + ldr r1, [r1, #4] + adds r1, r4, r1 + strb r0, [r1, #4] +_08034C6C: + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r1, #2] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + ldrb r1, [r5, #1] + strb r1, [r0, #3] + ldr r2, [r6] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldrh r1, [r5, #4] + strh r1, [r0, #0xc] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldrh r1, [r5, #6] + strh r1, [r0, #0xe] + ldr r1, [r2, #4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strb r0, [r1, #6] + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r5] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + strb r0, [r1, #5] + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r5] + lsrs r0, r0, #6 + strb r0, [r1, #7] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + ldrb r1, [r5, #2] + strb r1, [r0, #8] + ldrb r1, [r5] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1e + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + bl sub_08035450 + ldr r1, [r6] + ldr r1, [r1, #4] + adds r1, r4, r1 + strb r0, [r1, #9] + ldr r2, [r6] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldr r1, [r5, #8] + ldrh r1, [r1, #6] + strh r1, [r0, #0x10] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldr r1, [r5, #0xc] + ldrh r1, [r1, #4] + strh r1, [r0, #0x12] + ldr r0, [r2, #4] + adds r0, r4, r0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + str r1, [r0, #0x14] + movs r3, #1 + ldrb r0, [r5, #1] + cmp r3, r0 + bhs _08034D22 +_08034D0A: + ldr r0, [r6] + ldr r2, [r0, #4] + adds r2, r4, r2 + ldr r1, [r2, #0x14] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + str r0, [r2, #0x14] + adds r3, #1 + ldrb r2, [r5, #1] + cmp r3, r2 + blo _08034D0A +_08034D22: + ldr r0, _08034D50 + ldr r0, [r0] + mov r3, sb + mov r4, r8 + subs r1, r3, r4 + lsls r1, r1, #2 + ldr r0, [r0, #4] + adds r0, r0, r1 + bl sub_08034D54 + mov r0, r8 + mov r1, sl + bl sub_08034E9C + movs r0, #1 +_08034D40: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08034D50: .4byte gUnknown_2022AC4 + thumb_func_end sub_08034B6C + + thumb_func_start sub_08034D54 +sub_08034D54: @ 0x08034D54 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + ldrb r5, [r4, #1] + movs r0, #0xc + ldrsh r7, [r4, r0] + ldrb r0, [r4, #3] + adds r0, #1 + mov r8, r0 + mov r1, sp + movs r0, #0 + strh r0, [r1] + lsls r1, r5, #3 + ldr r2, _08034E84 + mov sb, r2 + add r1, sb + mov r0, r8 + lsls r2, r0, #2 + movs r0, #0x80 + lsls r0, r0, #0x11 + orrs r2, r0 + mov r0, sp + bl CpuSet + movs r6, #0 + ldrb r5, [r4, #1] + cmp r6, r8 + bhs _08034E26 + movs r1, #0x3f + mov sl, r1 + movs r2, #0xd + rsbs r2, r2, #0 + mov sb, r2 +_08034D9E: + lsls r0, r5, #3 + ldr r1, _08034E88 + adds r3, r0, r1 + ldrh r1, [r4, #0xe] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r2, _08034E8C + adds r0, r2, #0 + adds r1, r7, #0 + ands r1, r0 + ldrh r2, [r3, #0x3a] + ldr r0, _08034E90 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #0x3a] + ldrb r1, [r4, #6] + movs r0, #0x39 + adds r0, r0, r3 + mov ip, r0 + lsls r1, r1, #6 + ldrb r2, [r0] + mov r0, sl + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r4, #5] + movs r2, #0x3b + adds r2, r2, r3 + mov ip, r2 + lsls r1, r1, #6 + ldrb r2, [r2] + mov r0, sl + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r4, #0xa] + ldr r1, _08034E94 + ands r1, r0 + ldrh r2, [r3, #0x3c] + ldr r0, _08034E98 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #0x3c] + adds r3, #0x3d + movs r0, #3 + ldrb r1, [r4, #7] + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r2, [r4, #4] + lsls r2, r2, #4 + movs r1, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldrb r0, [r4, #8] + adds r7, r7, r0 + adds r6, #1 + adds r5, #1 + cmp r6, r8 + blo _08034D9E +_08034E26: + subs r5, #1 + ldr r0, _08034E88 + lsls r3, r5, #3 + adds r3, r3, r0 + movs r2, #0xc + ldrsh r1, [r4, r2] + ldrb r0, [r4, #8] + subs r1, r1, r0 + ldr r2, _08034E8C + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #0x3a] + ldr r0, _08034E90 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #0x3a] + adds r2, r3, #0 + adds r2, #0x39 + ldrb r1, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #9] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + ldrh r4, [r4, #0xa] + adds r1, r1, r4 + ldr r2, _08034E94 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #0x3c] + ldr r0, _08034E98 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #0x3c] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08034E84: .4byte gUnknown_3002398 +_08034E88: .4byte gUnknown_3002360 +_08034E8C: .4byte 0x000001FF +_08034E90: .4byte 0xFFFFFE00 +_08034E94: .4byte 0x000003FF +_08034E98: .4byte 0xFFFFFC00 + thumb_func_end sub_08034D54 + + thumb_func_start sub_08034E9C +sub_08034E9C: @ 0x08034E9C + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldr r0, _08034ECC + ldr r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _08034F00 + ldr r2, [r1, #4] + lsls r1, r3, #3 + subs r0, r1, r3 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r5, r1, #0 + cmp r0, #0 + beq _08034F00 + str r4, [r2, #0x18] + cmp r4, #0 + bge _08034ED0 + movs r2, #1 + rsbs r4, r4, #0 + b _08034ED2 + .align 2, 0 +_08034ECC: .4byte gUnknown_2022AC4 +_08034ED0: + movs r2, #0 +_08034ED2: + ldr r0, [r6] + ldr r1, [r0, #4] + subs r0, r5, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r3, [r0, #2] + cmp r3, #1 + beq _08034EF2 + cmp r3, #1 + ble _08034EEA + cmp r3, #2 + beq _08034EFA +_08034EEA: + adds r1, r4, #0 + bl sub_08034F08 + b _08034F00 +_08034EF2: + adds r1, r4, #0 + bl sub_08034FBC + b _08034F00 +_08034EFA: + adds r1, r4, #0 + bl sub_08035118 +_08034F00: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034E9C + + thumb_func_start sub_08034F08 +sub_08034F08: @ 0x08034F08 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + mov sb, r1 + str r2, [sp] + ldr r5, [r0, #0x14] + ldrb r7, [r0, #1] + ldr r0, _08034F8C + mov sl, r0 + cmp r5, #0 + beq _08034F72 + lsls r0, r7, #3 + adds r0, #0x3c + mov r1, sl + adds r6, r0, r1 +_08034F2E: + mov r0, sb + adds r1, r5, #0 + bl __udivsi3 + adds r4, r0, #0 + adds r0, r4, #0 + muls r0, r5, r0 + mov r2, sb + subs r2, r2, r0 + mov sb, r2 + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + adds r5, r0, #0 + mov r1, r8 + ldrb r0, [r1, #9] + adds r1, r4, #0 + muls r1, r0, r1 + mov r2, r8 + ldrh r2, [r2, #0xa] + adds r1, r1, r2 + ldr r2, _08034F90 + adds r0, r2, #0 + ands r1, r0 + ldrh r0, [r6] + ldr r2, _08034F94 + ands r0, r2 + orrs r0, r1 + strh r0, [r6] + adds r6, #8 + adds r7, #1 + cmp r5, #0 + bne _08034F2E +_08034F72: + ldr r0, [sp] + cmp r0, #0 + beq _08034F98 + lsls r0, r7, #3 + add r0, sl + adds r0, #0x39 + ldrb r2, [r0] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + b _08034FAC + .align 2, 0 +_08034F8C: .4byte gUnknown_3002360 +_08034F90: .4byte 0x000003FF +_08034F94: .4byte 0xFFFFFC00 +_08034F98: + lsls r2, r7, #3 + add r2, sl + adds r2, #0x39 + ldrb r1, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_08034FAC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08034F08 + + thumb_func_start sub_08034FBC +sub_08034FBC: @ 0x08034FBC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r0, #0 + mov r8, r1 + str r2, [sp] + ldr r5, [r6, #0x14] + ldr r3, _08035064 + ldrb r0, [r6, #1] + str r0, [r3] + ldr r2, _08035068 + movs r0, #0 + str r0, [r2] + ldr r1, _0803506C + subs r0, #1 + str r0, [r1] + adds r7, r3, #0 + mov sl, r1 + ldr r0, _08035070 + mov sb, r0 + cmp r5, #0 + beq _080350A4 +_08034FEE: + mov r0, r8 + adds r1, r5, #0 + bl __udivsi3 + adds r4, r0, #0 + adds r0, r4, #0 + muls r0, r5, r0 + mov r1, r8 + subs r1, r1, r0 + mov r8, r1 + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + adds r5, r0, #0 + cmp r4, #0 + bne _08035020 + mov r2, sl + ldr r1, [r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08035020 + cmp r5, #0 + bne _0803507C +_08035020: + ldr r2, [r7] + lsls r2, r2, #3 + add r2, sb + ldrb r0, [r6, #9] + adds r3, r4, #0 + muls r3, r0, r3 + ldrh r4, [r6, #0xa] + adds r3, r3, r4 + ldr r1, _08035074 + adds r0, r1, #0 + ands r3, r0 + ldrh r0, [r2, #0x3c] + ldr r4, _08035078 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r3 + strh r0, [r2, #0x3c] + adds r2, #0x39 + ldrb r0, [r2] + movs r1, #4 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + mov r2, sl + ldr r1, [r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08035092 + ldr r4, _08035068 + ldr r0, [r4] + str r0, [r2] + b _08035092 + .align 2, 0 +_08035064: .4byte gUnknown_3000DD4 +_08035068: .4byte gUnknown_3000DD8 +_0803506C: .4byte gUnknown_3000DDC +_08035070: .4byte gUnknown_3002360 +_08035074: .4byte 0x000003FF +_08035078: .4byte 0xFFFFFC00 +_0803507C: + ldr r0, [r7] + lsls r0, r0, #3 + add r0, sb + adds r0, #0x39 + ldrb r1, [r0] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_08035092: + ldr r0, [r7] + adds r0, #1 + str r0, [r7] + ldr r4, _080350E4 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + cmp r5, #0 + bne _08034FEE +_080350A4: + ldr r0, [sp] + cmp r0, #0 + beq _080350F0 + ldr r1, [r7] + lsls r1, r1, #3 + add r1, sb + adds r1, #0x39 + ldrb r2, [r1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r3, [r7] + lsls r3, r3, #3 + add r3, sb + movs r1, #0xc + ldrsh r2, [r6, r1] + mov r4, sl + ldr r0, [r4] + subs r0, #1 + ldrb r1, [r6, #8] + muls r0, r1, r0 + adds r2, r2, r0 + ldr r1, _080350E8 + adds r0, r1, #0 + ands r2, r0 + ldrh r1, [r3, #0x3a] + ldr r0, _080350EC + ands r0, r1 + orrs r0, r2 + strh r0, [r3, #0x3a] + b _08035106 + .align 2, 0 +_080350E4: .4byte gUnknown_3000DD8 +_080350E8: .4byte 0x000001FF +_080350EC: .4byte 0xFFFFFE00 +_080350F0: + ldr r0, [r7] + lsls r0, r0, #3 + add r0, sb + adds r0, #0x39 + ldrb r2, [r0] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_08035106: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08034FBC + + thumb_func_start sub_08035118 +sub_08035118: @ 0x08035118 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov r8, r0 + mov sl, r1 + str r2, [sp] + ldr r5, [r0, #0x14] + ldrb r3, [r0, #1] + movs r0, #0 + str r0, [sp, #4] + mov sb, r0 + cmp r5, #0 + beq _080351B2 +_08035138: + lsls r0, r3, #3 + adds r1, r0, #0 + adds r1, #0x39 + ldr r2, _080351FC + adds r7, r1, r2 + adds r0, #0x3c + adds r6, r0, r2 +_08035146: + mov r0, sl + adds r1, r5, #0 + str r3, [sp, #8] + bl __udivsi3 + adds r4, r0, #0 + adds r0, r4, #0 + muls r0, r5, r0 + mov r1, sl + subs r1, r1, r0 + mov sl, r1 + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + adds r5, r0, #0 + ldr r3, [sp, #8] + cmp r4, #0 + bne _08035176 + ldr r2, [sp, #4] + cmp r2, #0 + bne _08035176 + cmp r5, #0 + bne _08035138 +_08035176: + movs r0, #1 + str r0, [sp, #4] + mov r1, r8 + ldrb r0, [r1, #9] + adds r2, r4, #0 + muls r2, r0, r2 + ldrh r4, [r1, #0xa] + adds r2, r2, r4 + ldr r1, _08035200 + adds r0, r1, #0 + ands r2, r0 + ldrh r0, [r6] + ldr r4, _08035204 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strh r0, [r6] + ldrb r0, [r7] + movs r2, #4 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r7] + adds r7, #8 + adds r6, #8 + adds r3, #1 + movs r4, #1 + add sb, r4 + cmp r5, #0 + bne _08035146 +_080351B2: + mov r0, r8 + ldrb r0, [r0, #3] + cmp sb, r0 + bge _080351E2 + ldr r1, _080351FC + movs r5, #4 + rsbs r5, r5, #0 + movs r4, #2 + lsls r0, r3, #3 + adds r0, #0x39 + adds r2, r0, r1 +_080351C8: + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + adds r2, #8 + adds r3, #1 + movs r1, #1 + add sb, r1 + mov r0, r8 + ldrb r0, [r0, #3] + cmp sb, r0 + blt _080351C8 +_080351E2: + ldr r1, [sp] + cmp r1, #0 + beq _08035208 + lsls r0, r3, #3 + ldr r2, _080351FC + adds r0, r0, r2 + adds r0, #0x39 + ldrb r2, [r0] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + b _0803521E + .align 2, 0 +_080351FC: .4byte gUnknown_3002360 +_08035200: .4byte 0x000003FF +_08035204: .4byte 0xFFFFFC00 +_08035208: + lsls r2, r3, #3 + ldr r4, _08035230 + adds r2, r2, r4 + adds r2, #0x39 + ldrb r1, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_0803521E: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08035230: .4byte gUnknown_3002360 + thumb_func_end sub_08035118 + + thumb_func_start sub_08035234 +sub_08035234: @ 0x08035234 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _080352CC + ldr r0, [r0] + cmp r0, #0 + beq _080352C6 + ldr r2, [r0, #4] + lsls r1, r4, #3 + subs r0, r1, r4 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r5, r1, #0 + cmp r0, #0 + beq _080352C6 + ldrb r3, [r2, #3] + adds r0, r3, #1 + ldrb r2, [r2, #1] + cmp r0, #0 + beq _0803527E + ldr r1, _080352D0 + movs r7, #4 + rsbs r7, r7, #0 + movs r6, #2 + adds r3, r0, #0 + lsls r0, r2, #3 + adds r0, #0x39 + adds r2, r0, r1 +_0803526C: + ldrb r1, [r2] + adds r0, r7, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + subs r3, #1 + adds r2, #8 + cmp r3, #0 + bne _0803526C +_0803527E: + adds r0, r4, #0 + bl sub_080353C8 + cmp r0, #0 + bne _0803529A + ldr r0, _080352CC + ldr r0, [r0] + ldr r1, [r0, #4] + subs r0, r5, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x10] + bl sub_08008280 +_0803529A: + adds r0, r4, #0 + bl sub_0803540C + cmp r0, #0 + bne _080352B6 + ldr r0, _080352CC + ldr r0, [r0] + ldr r1, [r0, #4] + subs r0, r5, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x12] + bl sub_08008564 +_080352B6: + ldr r0, _080352CC + ldr r0, [r0] + ldr r1, [r0, #4] + subs r0, r5, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080352C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080352CC: .4byte gUnknown_2022AC4 +_080352D0: .4byte gUnknown_3002360 + thumb_func_end sub_08035234 + + thumb_func_start sub_080352D4 +sub_080352D4: @ 0x080352D4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08035328 + ldr r1, [r0] + adds r7, r0, #0 + cmp r1, #0 + beq _08035364 + ldr r2, [r1, #4] + lsls r1, r4, #3 + subs r0, r1, r4 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2] + adds r6, r1, #0 + cmp r0, #0 + beq _08035364 + ldrb r3, [r2, #3] + adds r1, r3, #1 + ldrb r0, [r2, #1] + cmp r5, #0 + beq _08035330 + cmp r1, #0 + beq _08035364 + ldr r1, _0803532C + movs r5, #4 + rsbs r5, r5, #0 + movs r4, #2 + adds r3, #1 + lsls r0, r0, #3 + adds r0, #0x39 + adds r2, r0, r1 +_08035314: + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + subs r3, #1 + adds r2, #8 + cmp r3, #0 + bne _08035314 + b _08035364 + .align 2, 0 +_08035328: .4byte gUnknown_2022AC4 +_0803532C: .4byte gUnknown_3002360 +_08035330: + cmp r1, #0 + beq _08035352 + ldr r1, _0803536C + movs r5, #4 + rsbs r5, r5, #0 + adds r3, #1 + lsls r0, r0, #3 + adds r0, #0x39 + adds r2, r0, r1 +_08035342: + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2] + subs r3, #1 + adds r2, #8 + cmp r3, #0 + bne _08035342 +_08035352: + ldr r0, [r7] + ldr r1, [r0, #4] + subs r0, r6, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0, #0x18] + adds r0, r4, #0 + bl sub_08034E9C +_08035364: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803536C: .4byte gUnknown_3002360 + thumb_func_end sub_080352D4 + + thumb_func_start sub_08035370 +sub_08035370: @ 0x08035370 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0x40 + movs r3, #0 + ldr r0, _0803539C + ldr r0, [r0] + ldr r2, [r0] + cmp r3, r2 + bhs _080353B2 + ldr r1, [r0, #4] +_08035386: + ldrb r0, [r1] + cmp r0, #0 + bne _080353A0 + ldrb r0, [r1, #1] + cmp r0, #0xff + beq _080353AA + ldrb r0, [r1, #3] + cmp r0, r4 + bhi _080353AA + ldrb r0, [r1, #1] + b _080353C2 + .align 2, 0 +_0803539C: .4byte gUnknown_2022AC4 +_080353A0: + adds r0, r5, #1 + ldrb r5, [r1, #3] + adds r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080353AA: + adds r1, #0x1c + adds r3, #1 + cmp r3, r2 + blo _08035386 +_080353B2: + adds r0, r5, r4 + adds r0, #1 + cmp r0, #0x80 + bgt _080353C0 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + b _080353C2 +_080353C0: + movs r0, #0xff +_080353C2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08035370 + + thumb_func_start sub_080353C8 +sub_080353C8: @ 0x080353C8 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r0, _080353F8 + ldr r0, [r0] + ldr r4, [r0] + cmp r2, r4 + bhs _08035404 + ldr r1, [r0, #4] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r5, r0, r1 +_080353E2: + ldrb r0, [r1] + cmp r0, #0 + beq _080353FC + cmp r2, r3 + beq _080353FC + ldrh r0, [r1, #0x10] + ldrh r6, [r5, #0x10] + cmp r0, r6 + bne _080353FC + movs r0, #1 + b _08035406 + .align 2, 0 +_080353F8: .4byte gUnknown_2022AC4 +_080353FC: + adds r1, #0x1c + adds r2, #1 + cmp r2, r4 + blo _080353E2 +_08035404: + movs r0, #0 +_08035406: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080353C8 + + thumb_func_start sub_0803540C +sub_0803540C: @ 0x0803540C + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r0, _0803543C + ldr r0, [r0] + ldr r4, [r0] + cmp r2, r4 + bhs _08035448 + ldr r1, [r0, #4] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r5, r0, r1 +_08035426: + ldrb r0, [r1] + cmp r0, #0 + beq _08035440 + cmp r2, r3 + beq _08035440 + ldrh r0, [r1, #0x12] + ldrh r6, [r5, #0x12] + cmp r0, r6 + bne _08035440 + movs r0, #1 + b _0803544A + .align 2, 0 +_0803543C: .4byte gUnknown_2022AC4 +_08035440: + adds r1, #0x1c + adds r2, #1 + cmp r2, r4 + blo _08035426 +_08035448: + movs r0, #0 +_0803544A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0803540C + + thumb_func_start sub_08035450 +sub_08035450: @ 0x08035450 + ldr r2, _0803545C + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_0803545C: .4byte gUnknown_82D2A58 + thumb_func_end sub_08035450 + + thumb_func_start sub_08035460 +sub_08035460: @ 0x08035460 + push {lr} + bl sub_0800668C + ldr r0, _08035494 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08035498 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r0, _0803549C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08035494: .4byte gUnknown_82EBAE0 +_08035498: .4byte gUnknown_20205AC +_0803549C: .4byte sub_080354A0 + thumb_func_end sub_08035460 + + thumb_func_start sub_080354A0 +sub_080354A0: @ 0x080354A0 + push {lr} + bl sub_080066D8 + bl sub_08006724 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080354A0 + + thumb_func_start sub_080354B0 +sub_080354B0: @ 0x080354B0 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _080354EC + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _080354F0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xb + ands r1, r0 + cmp r1, #0 + beq _080354FC + ldr r0, _080354F4 + adds r0, #0x24 + movs r1, #1 + strb r1, [r0] + ldr r4, _080354F8 + ldr r1, [r4] + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + movs r0, #2 + bl sub_0800212C + b _08035502 + .align 2, 0 +_080354EC: .4byte gUnknown_82EB860 +_080354F0: .4byte gUnknown_2022C90 +_080354F4: .4byte gUnknown_2024118 +_080354F8: .4byte gUnknown_2022D04 +_080354FC: + ldr r0, _08035520 + adds r0, #0x24 + strb r1, [r0] +_08035502: + ldr r1, _08035524 + ldr r0, _08035520 + adds r0, #0x24 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08003090 + bl sub_08004480 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08035520: .4byte gUnknown_2024118 +_08035524: .4byte gUnknown_82EB9F8 + thumb_func_end sub_080354B0 + + thumb_func_start sub_08035528 +sub_08035528: @ 0x08035528 + push {lr} + movs r0, #2 + bl sub_080012A0 + movs r0, #0xc5 + bl sub_08001274 + bl sub_080354B0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _08035560 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08035560: .4byte 0x0000B040 + thumb_func_end sub_08035528 + + thumb_func_start sub_08035564 +sub_08035564: @ 0x08035564 + push {lr} + movs r0, #2 + movs r1, #0x12 + movs r2, #0x10 + bl sub_080981B4 + movs r0, #2 + movs r1, #0x22 + movs r2, #0x10 + bl sub_080981B4 + ldr r0, _080355B8 + movs r1, #0x50 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _080355BC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _080355B2 + movs r0, #0x70 + bl sub_08197694 + movs r0, #0 + movs r1, #0x30 + movs r2, #0x70 + bl sub_08098104 + ldr r0, _080355C0 + adds r0, #0xec + movs r1, #0 + strh r1, [r0] + ldr r1, _080355C4 + movs r2, #1 + bl CpuSet +_080355B2: + pop {r0} + bx r0 + .align 2, 0 +_080355B8: .4byte gUnknown_8D855E4 +_080355BC: .4byte gUnknown_2022C90 +_080355C0: .4byte gUnknown_20373B4 +_080355C4: .4byte gUnknown_20378A0 + thumb_func_end sub_08035564 + + thumb_func_start sub_080355C8 +sub_080355C8: @ 0x080355C8 + push {r4, r5, lr} + ldr r0, _080355EC + ldr r1, [r0] + ldr r0, _080355F0 + ands r0, r1 + cmp r0, #0 + beq _08035608 + ldr r0, _080355F4 + ldr r1, _080355F8 + bl sub_0803437C + ldr r0, _080355FC + ldr r1, _08035600 + bl sub_0803437C + ldr r0, _08035604 + b _080358A6 + .align 2, 0 +_080355EC: .4byte gUnknown_2022C90 +_080355F0: .4byte 0x023F0902 +_080355F4: .4byte gUnknown_8D7C4E4 +_080355F8: .4byte 0x06008000 +_080355FC: .4byte gUnknown_8D7CACC +_08035600: .4byte 0x0600D000 +_08035604: .4byte gUnknown_8D7CA90 +_08035608: + movs r0, #0x80 + lsls r0, r0, #0x15 + ands r0, r1 + cmp r0, #0 + beq _0803563C + ldr r0, _08035628 + ldr r1, _0803562C + bl sub_0803437C + ldr r0, _08035630 + ldr r1, _08035634 + bl sub_0803437C + ldr r0, _08035638 + b _080358A6 + .align 2, 0 +_08035628: .4byte gUnknown_8D7BBB8 +_0803562C: .4byte 0x06008000 +_08035630: .4byte gUnknown_8D7C1F8 +_08035634: .4byte 0x0600D000 +_08035638: .4byte gUnknown_8D7DFD4 +_0803563C: + movs r0, #0x80 + lsls r0, r0, #0x16 + ands r0, r1 + cmp r0, #0 + beq _08035670 + ldr r0, _0803565C + ldr r1, _08035660 + bl sub_0803437C + ldr r0, _08035664 + ldr r1, _08035668 + bl sub_0803437C + ldr r0, _0803566C + b _080358A6 + .align 2, 0 +_0803565C: .4byte gUnknown_8D7A1AC +_08035660: .4byte 0x06008000 +_08035664: .4byte gUnknown_8D7A7C4 +_08035668: .4byte 0x0600D000 +_0803566C: .4byte gUnknown_8D7DF98 +_08035670: + movs r0, #0x80 + lsls r0, r0, #0x17 + ands r0, r1 + cmp r0, #0 + beq _080356A4 + ldr r0, _08035690 + ldr r1, _08035694 + bl sub_0803437C + ldr r0, _08035698 + ldr r1, _0803569C + bl sub_0803437C + ldr r0, _080356A0 + b _080358A6 + .align 2, 0 +_08035690: .4byte gUnknown_8D7D634 +_08035694: .4byte 0x06008000 +_08035698: .4byte gUnknown_8D7DCA8 +_0803569C: .4byte 0x0600D000 +_080356A0: .4byte gUnknown_8D7E2D8 +_080356A4: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08035718 + ldr r1, _080356D0 + ldr r0, _080356D4 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0x20 + bne _080356EC + ldr r0, _080356D8 + ldr r1, _080356DC + bl sub_0803437C + ldr r0, _080356E0 + ldr r1, _080356E4 + bl sub_0803437C + ldr r0, _080356E8 + b _080358A6 + .align 2, 0 +_080356D0: .4byte gUnknown_82E383C +_080356D4: .4byte gUnknown_203886A +_080356D8: .4byte gUnknown_8D7C4E4 +_080356DC: .4byte 0x06008000 +_080356E0: .4byte gUnknown_8D7CACC +_080356E4: .4byte 0x0600D000 +_080356E8: .4byte gUnknown_8D7E068 +_080356EC: + cmp r0, #0x26 + bne _08035718 + ldr r0, _08035704 + ldr r1, _08035708 + bl sub_0803437C + ldr r0, _0803570C + ldr r1, _08035710 + bl sub_0803437C + ldr r0, _08035714 + b _080358A6 + .align 2, 0 +_08035704: .4byte gUnknown_8D7CD7C +_08035708: .4byte 0x06008000 +_0803570C: .4byte gUnknown_8D7D384 +_08035710: .4byte 0x0600D000 +_08035714: .4byte gUnknown_8D7E29C +_08035718: + bl sub_080855E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bhi _08035758 + lsls r0, r0, #2 + ldr r1, _08035730 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08035730: .4byte _08035734 +_08035734: @ jump table + .4byte _08035758 @ case 0 + .4byte _080357A4 @ case 1 + .4byte _080357CC @ case 2 + .4byte _080357F4 @ case 3 + .4byte _0803581C @ case 4 + .4byte _08035844 @ case 5 + .4byte _0803586C @ case 6 + .4byte _08035894 @ case 7 + .4byte _080358C4 @ case 8 +_08035758: + ldr r4, _08035794 + ldr r5, _08035798 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldr r1, _0803579C + bl sub_0803437C + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080357A0 + bl sub_0803437C + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x10 + adds r0, r0, r4 + ldr r0, [r0] + b _080358A6 + .align 2, 0 +_08035794: .4byte gUnknown_82EBA00 +_08035798: .4byte gUnknown_2022C94 +_0803579C: .4byte 0x06008000 +_080357A0: .4byte 0x0600D000 +_080357A4: + ldr r0, _080357B8 + ldr r1, _080357BC + bl sub_0803437C + ldr r0, _080357C0 + ldr r1, _080357C4 + bl sub_0803437C + ldr r0, _080357C8 + b _080358A6 + .align 2, 0 +_080357B8: .4byte gUnknown_8D7C4E4 +_080357BC: .4byte 0x06008000 +_080357C0: .4byte gUnknown_8D7CACC +_080357C4: .4byte 0x0600D000 +_080357C8: .4byte gUnknown_8D7E02C +_080357CC: + ldr r0, _080357E0 + ldr r1, _080357E4 + bl sub_0803437C + ldr r0, _080357E8 + ldr r1, _080357EC + bl sub_0803437C + ldr r0, _080357F0 + b _080358A6 + .align 2, 0 +_080357E0: .4byte gUnknown_8D7CD7C +_080357E4: .4byte 0x06008000 +_080357E8: .4byte gUnknown_8D7D384 +_080357EC: .4byte 0x0600D000 +_080357F0: .4byte gUnknown_8D7E104 +_080357F4: + ldr r0, _08035808 + ldr r1, _0803580C + bl sub_0803437C + ldr r0, _08035810 + ldr r1, _08035814 + bl sub_0803437C + ldr r0, _08035818 + b _080358A6 + .align 2, 0 +_08035808: .4byte gUnknown_8D7CD7C +_0803580C: .4byte 0x06008000 +_08035810: .4byte gUnknown_8D7D384 +_08035814: .4byte 0x0600D000 +_08035818: .4byte gUnknown_8D7E0A4 +_0803581C: + ldr r0, _08035830 + ldr r1, _08035834 + bl sub_0803437C + ldr r0, _08035838 + ldr r1, _0803583C + bl sub_0803437C + ldr r0, _08035840 + b _080358A6 + .align 2, 0 +_08035830: .4byte gUnknown_8D7CD7C +_08035834: .4byte 0x06008000 +_08035838: .4byte gUnknown_8D7D384 +_0803583C: .4byte 0x0600D000 +_08035840: .4byte gUnknown_8D7E170 +_08035844: + ldr r0, _08035858 + ldr r1, _0803585C + bl sub_0803437C + ldr r0, _08035860 + ldr r1, _08035864 + bl sub_0803437C + ldr r0, _08035868 + b _080358A6 + .align 2, 0 +_08035858: .4byte gUnknown_8D7CD7C +_0803585C: .4byte 0x06008000 +_08035860: .4byte gUnknown_8D7D384 +_08035864: .4byte 0x0600D000 +_08035868: .4byte gUnknown_8D7E1C0 +_0803586C: + ldr r0, _08035880 + ldr r1, _08035884 + bl sub_0803437C + ldr r0, _08035888 + ldr r1, _0803588C + bl sub_0803437C + ldr r0, _08035890 + b _080358A6 + .align 2, 0 +_08035880: .4byte gUnknown_8D7CD7C +_08035884: .4byte 0x06008000 +_08035888: .4byte gUnknown_8D7D384 +_0803588C: .4byte 0x0600D000 +_08035890: .4byte gUnknown_8D7E208 +_08035894: + ldr r0, _080358B0 + ldr r1, _080358B4 + bl sub_0803437C + ldr r0, _080358B8 + ldr r1, _080358BC + bl sub_0803437C + ldr r0, _080358C0 +_080358A6: + movs r1, #0x20 + movs r2, #0x60 + bl sub_080A11BC + b _080358DE + .align 2, 0 +_080358B0: .4byte gUnknown_8D7CD7C +_080358B4: .4byte 0x06008000 +_080358B8: .4byte gUnknown_8D7D384 +_080358BC: .4byte 0x0600D000 +_080358C0: .4byte gUnknown_8D7E24C +_080358C4: + ldr r0, _080358E4 + ldr r1, _080358E8 + bl sub_0803437C + ldr r0, _080358EC + ldr r1, _080358F0 + bl sub_0803437C + ldr r0, _080358F4 + movs r1, #0x20 + movs r2, #0x60 + bl sub_080A11BC +_080358DE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080358E4: .4byte gUnknown_8D7C4E4 +_080358E8: .4byte 0x06008000 +_080358EC: .4byte gUnknown_8D7CACC +_080358F0: .4byte 0x0600D000 +_080358F4: .4byte gUnknown_8D7CA90 + thumb_func_end sub_080355C8 + + thumb_func_start sub_080358F8 +sub_080358F8: @ 0x080358F8 + push {lr} + movs r0, #0x8c + lsls r0, r0, #0x14 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + ldr r1, _08035930 + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + bl sub_08002248 + ldr r0, _08035934 + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + bl sub_08035564 + bl sub_080355C8 + pop {r0} + bx r0 + .align 2, 0 +_08035930: .4byte gUnknown_8C00530 +_08035934: .4byte gUnknown_8C004EC + thumb_func_end sub_080358F8 + + thumb_func_start sub_08035938 +sub_08035938: @ 0x08035938 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + ldr r4, [sp, #0x34] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r7, r6, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov ip, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sb, r4 + movs r4, #0 + ldr r0, _08035990 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08035A20 + ldr r0, _08035994 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x12 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080359AA + cmp r5, #1 + beq _080359D2 + cmp r5, #1 + bgt _08035998 + cmp r5, #0 + beq _080359A2 + b _080359DC + .align 2, 0 +_08035990: .4byte gUnknown_2022C90 +_08035994: .4byte gUnknown_3005B60 +_08035998: + cmp r5, #2 + beq _080359A6 + cmp r5, #3 + beq _080359C6 + b _080359DC +_080359A2: + ldrh r0, [r1, #0xe] + b _080359C8 +_080359A6: + ldrh r1, [r1, #0xe] + b _080359D4 +_080359AA: + cmp r5, #1 + beq _080359C6 + cmp r5, #1 + bgt _080359B8 + cmp r5, #0 + beq _080359C2 + b _080359DC +_080359B8: + cmp r5, #2 + beq _080359CE + cmp r5, #3 + beq _080359D2 + b _080359DC +_080359C2: + ldrh r0, [r1, #0xe] + b _080359C8 +_080359C6: + ldrh r0, [r1, #0x10] +_080359C8: + movs r4, #0x3f + ands r4, r0 + b _080359DC +_080359CE: + ldrh r1, [r1, #0xe] + b _080359D4 +_080359D2: + ldrh r1, [r1, #0x10] +_080359D4: + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r1 + lsrs r4, r0, #6 +_080359DC: + movs r2, #0 + movs r6, #3 + ldr r0, _08035A1C + adds r5, r0, #0 + add r3, sp, #0xc +_080359E6: + lsls r1, r2, #1 + adds r0, r6, #0 + lsls r0, r1 + ands r0, r4 + asrs r0, r1 + adds r0, r0, r5 + strh r0, [r3] + adds r3, #2 + adds r2, #1 + cmp r2, #2 + ble _080359E6 + movs r0, #3 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + mov r0, r8 + add r1, sp, #0xc + mov r2, ip + mov r3, sb + bl sub_080023B4 + mov r0, r8 + bl sub_08002248 + b _08035A8A + .align 2, 0 +_08035A1C: .4byte 0x00006001 +_08035A20: + ldr r0, _08035A38 + adds r0, #0x25 + ldrb r0, [r0] + cmp r5, r0 + bne _08035A40 + ldr r1, _08035A3C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r4, [r0, #0xe] + b _08035A4C + .align 2, 0 +_08035A38: .4byte gUnknown_2024118 +_08035A3C: .4byte gUnknown_3005B60 +_08035A40: + ldr r1, _08035A98 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r4, [r0, #0x10] +_08035A4C: + movs r2, #0 + movs r6, #3 + ldr r0, _08035A9C + adds r5, r0, #0 + add r3, sp, #0xc +_08035A56: + lsls r1, r2, #1 + adds r0, r6, #0 + lsls r0, r1 + ands r0, r4 + asrs r0, r1 + adds r0, r0, r5 + strh r0, [r3] + adds r3, #2 + adds r2, #1 + cmp r2, #5 + ble _08035A56 + movs r0, #6 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + mov r0, r8 + add r1, sp, #0xc + mov r2, ip + mov r3, sb + bl sub_080023B4 + mov r0, r8 + bl sub_08002248 +_08035A8A: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08035A98: .4byte gUnknown_3005B60 +_08035A9C: .4byte 0x00006001 + thumb_func_end sub_08035938 + + thumb_func_start sub_08035AA0 +sub_08035AA0: @ 0x08035AA0 + push {lr} + ldr r0, _08035AB4 + ldrb r2, [r0] + cmp r2, #3 + bne _08035ABC + ldr r0, _08035AB8 + movs r1, #0x15 + bl sub_0814FA04 + b _08035BBC + .align 2, 0 +_08035AB4: .4byte gUnknown_2023FDE +_08035AB8: .4byte gUnknown_85ABC8E +_08035ABC: + ldr r0, _08035AEC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08035B36 + cmp r2, #1 + bne _08035B02 + ldr r2, _08035AF0 + ldr r0, _08035AF4 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x18] + cmp r0, #1 + beq _08035B50 + cmp r0, #1 + bgt _08035AF8 + cmp r0, #0 + beq _08035B8A + b _08035BBC + .align 2, 0 +_08035AEC: .4byte gUnknown_2022C90 +_08035AF0: .4byte gUnknown_20226A0 +_08035AF4: .4byte gUnknown_2024118 +_08035AF8: + cmp r0, #2 + beq _08035B8A + cmp r0, #3 + bne _08035BBC + b _08035B50 +_08035B02: + ldr r2, _08035B24 + ldr r0, _08035B28 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x18] + cmp r0, #1 + beq _08035B8A + cmp r0, #1 + bgt _08035B2C + cmp r0, #0 + beq _08035B50 + b _08035BBC + .align 2, 0 +_08035B24: .4byte gUnknown_20226A0 +_08035B28: .4byte gUnknown_2024118 +_08035B2C: + cmp r0, #2 + beq _08035B50 + cmp r0, #3 + bne _08035BBC + b _08035B8A +_08035B36: + cmp r2, #1 + bne _08035B74 + ldr r2, _08035B64 + ldr r0, _08035B68 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x18] + cmp r0, #0 + beq _08035B8A +_08035B50: + ldr r0, _08035B6C + movs r1, #0x17 + bl sub_0814FA04 + ldr r0, _08035B70 + movs r1, #0x16 + bl sub_0814FA04 + b _08035BBC + .align 2, 0 +_08035B64: .4byte gUnknown_20226A0 +_08035B68: .4byte gUnknown_2024118 +_08035B6C: .4byte gUnknown_85ABC82 +_08035B70: .4byte gUnknown_85ABC88 +_08035B74: + ldr r2, _08035B9C + ldr r0, _08035BA0 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x18] + cmp r0, #0 + beq _08035BAC +_08035B8A: + ldr r0, _08035BA4 + movs r1, #0x16 + bl sub_0814FA04 + ldr r0, _08035BA8 + movs r1, #0x17 + bl sub_0814FA04 + b _08035BBC + .align 2, 0 +_08035B9C: .4byte gUnknown_20226A0 +_08035BA0: .4byte gUnknown_2024118 +_08035BA4: .4byte gUnknown_85ABC82 +_08035BA8: .4byte gUnknown_85ABC88 +_08035BAC: + ldr r0, _08035BC0 + movs r1, #0x17 + bl sub_0814FA04 + ldr r0, _08035BC4 + movs r1, #0x16 + bl sub_0814FA04 +_08035BBC: + pop {r0} + bx r0 + .align 2, 0 +_08035BC0: .4byte gUnknown_85ABC82 +_08035BC4: .4byte gUnknown_85ABC88 + thumb_func_end sub_08035AA0 + + thumb_func_start sub_08035BC8 +sub_08035BC8: @ 0x08035BC8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08035BF4 + lsls r0, r7, #2 + mov r8, r0 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _08035BEA + b _08035D28 +_08035BEA: + cmp r0, #1 + bgt _08035BF8 + cmp r0, #0 + beq _08035C00 + b _08035F9C + .align 2, 0 +_08035BF4: .4byte gUnknown_3005B60 +_08035BF8: + cmp r0, #2 + bne _08035BFE + b _08035DC8 +_08035BFE: + b _08035F9C +_08035C00: + ldr r0, _08035C2C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08035C9C + mov r6, r8 + ldr r4, _08035C30 + movs r5, #3 +_08035C12: + add r0, sp, #4 + adds r1, r4, #0 + bl sub_08008888 + ldrh r0, [r4, #0x10] + cmp r0, #1 + beq _08035C4C + cmp r0, #1 + bgt _08035C34 + cmp r0, #0 + beq _08035C3E + b _08035C92 + .align 2, 0 +_08035C2C: .4byte gUnknown_2022C90 +_08035C30: .4byte gUnknown_20226A8 +_08035C34: + cmp r0, #2 + beq _08035C60 + cmp r0, #3 + beq _08035C7A + b _08035C92 +_08035C3E: + add r0, sp, #4 + movs r1, #0x11 + bl sub_0814FA04 + ldrb r1, [r4, #0x10] + movs r0, #4 + b _08035C6C +_08035C4C: + add r0, sp, #4 + movs r1, #0x12 + bl sub_0814FA04 + ldrb r1, [r4, #0x10] + movs r0, #4 + str r0, [sp] + adds r0, r7, #0 + movs r2, #2 + b _08035C72 +_08035C60: + add r0, sp, #4 + movs r1, #0x13 + bl sub_0814FA04 + ldrb r1, [r4, #0x10] + movs r0, #8 +_08035C6C: + str r0, [sp] + adds r0, r7, #0 + movs r2, #1 +_08035C72: + movs r3, #2 + bl sub_08035938 + b _08035C92 +_08035C7A: + add r0, sp, #4 + movs r1, #0x14 + bl sub_0814FA04 + ldrb r1, [r4, #0x10] + movs r0, #8 + str r0, [sp] + adds r0, r7, #0 + movs r2, #2 + movs r3, #2 + bl sub_08035938 +_08035C92: + adds r4, #0x1c + subs r5, #1 + cmp r5, #0 + bge _08035C12 + b _08035D0C +_08035C9C: + ldr r0, _08035D1C + adds r0, #0x25 + ldrb r5, [r0] + movs r0, #1 + adds r6, r5, #0 + eors r6, r0 + adds r1, r6, #0 + ldr r4, _08035D20 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x18] + cmp r0, #0 + beq _08035CBE + adds r6, r5, #0 + adds r5, r1, #0 +_08035CBE: + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r4, #8 + adds r1, r1, r4 + add r0, sp, #4 + bl sub_08008888 + add r0, sp, #4 + movs r1, #0xf + bl sub_0814FA04 + lsls r1, r6, #3 + subs r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r4 + add r0, sp, #4 + bl sub_08008888 + add r0, sp, #4 + movs r1, #0x10 + bl sub_0814FA04 + movs r4, #7 + str r4, [sp] + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl sub_08035938 + str r4, [sp] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_08035938 + mov r6, r8 +_08035D0C: + ldr r0, _08035D24 + adds r1, r6, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08035F9C + .align 2, 0 +_08035D1C: .4byte gUnknown_2024118 +_08035D20: .4byte gUnknown_20226A0 +_08035D24: .4byte gUnknown_3005B60 +_08035D28: + ldr r0, _08035DA4 + bl sub_080084EC + lsls r0, r0, #0x18 + ldr r2, _08035DA8 + lsrs r0, r0, #0x13 + ldr r3, _08035DAC + adds r0, r0, r3 + adds r2, r0, r2 + ldr r1, _08035DB0 + adds r0, r0, r1 + ldr r1, _08035DB4 + strh r1, [r0] + strh r1, [r2] + ldr r0, _08035DB8 + movs r1, #0x6f + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r4, _08035DBC + ldr r1, [r4] + adds r1, #0x7d + strb r0, [r1] + ldr r0, _08035DC0 + movs r1, #0x81 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x7e + strb r0, [r1] + ldr r3, _08035DC4 + ldr r0, [r4] + adds r0, #0x7d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x7e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _08035F9C + .align 2, 0 +_08035DA4: .4byte 0x00002710 +_08035DA8: .4byte gUnknown_20373B4 +_08035DAC: .4byte 0x0000021E +_08035DB0: .4byte gUnknown_20377B4 +_08035DB4: .4byte 0x00007FFF +_08035DB8: .4byte gUnknown_82EB828 +_08035DBC: .4byte gUnknown_2024140 +_08035DC0: .4byte gUnknown_82EB840 +_08035DC4: .4byte gUnknown_20205AC +_08035DC8: + movs r1, #0x12 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08035E30 + ldr r4, _08035E1C + ldrh r0, [r5, #0xa] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035DE2 + adds r0, #0x1f +_08035DE2: + asrs r1, r0, #5 + movs r2, #0x14 + rsbs r2, r2, #0 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4] + ldr r4, _08035E20 + ldrh r0, [r5, #0xc] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035E00 + adds r0, #0x1f +_08035E00: + asrs r1, r0, #5 + movs r3, #0x8c + rsbs r3, r3, #0 + adds r0, r3, #0 + subs r0, r0, r1 + strh r0, [r4] + ldr r0, _08035E24 + ldr r2, _08035E28 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, _08035E2C + strh r1, [r0] + b _08035E9C + .align 2, 0 +_08035E1C: .4byte gUnknown_2022ACC +_08035E20: .4byte gUnknown_2022AD0 +_08035E24: .4byte gUnknown_2022ACE +_08035E28: .4byte 0x0000FFDC +_08035E2C: .4byte gUnknown_2022AD2 +_08035E30: + ldr r4, _08035EC0 + ldrh r0, [r5, #0xa] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035E42 + adds r0, #0x1f +_08035E42: + asrs r1, r0, #5 + movs r3, #0x14 + rsbs r3, r3, #0 + adds r0, r3, #0 + subs r0, r0, r1 + strh r0, [r4] + ldr r4, _08035EC4 + ldrh r0, [r5, #0xa] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035E60 + adds r0, #0x1f +_08035E60: + asrs r0, r0, #5 + subs r0, #0xa4 + strh r0, [r4] + ldr r4, _08035EC8 + ldrh r0, [r5, #0xc] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035E78 + adds r0, #0x1f +_08035E78: + asrs r1, r0, #5 + movs r2, #0x8c + rsbs r2, r2, #0 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4] + ldr r4, _08035ECC + ldrh r0, [r5, #0xc] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08035E96 + adds r0, #0x1f +_08035E96: + asrs r0, r0, #5 + subs r0, #0xa4 + strh r0, [r4] +_08035E9C: + ldr r1, _08035ED0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0xc] + movs r2, #0xc + ldrsh r3, [r1, r2] + mov r8, r3 + cmp r3, #0 + beq _08035ED4 + subs r0, #2 + strh r0, [r1, #0xc] + ldrh r0, [r1, #0xa] + adds r0, #2 + strh r0, [r1, #0xa] + b _08035F9C + .align 2, 0 +_08035EC0: .4byte gUnknown_2022ACC +_08035EC4: .4byte gUnknown_2022ACE +_08035EC8: .4byte gUnknown_2022AD0 +_08035ECC: .4byte gUnknown_2022AD2 +_08035ED0: .4byte gUnknown_3005B60 +_08035ED4: + movs r3, #0x12 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08035EE0 + bl sub_08035AA0 +_08035EE0: + movs r0, #0x78 + bl sub_080A306C + adds r0, r7, #0 + bl sub_080A8964 + ldr r4, _08035FA8 + ldr r5, _08035FAC + ldr r0, [r5] + adds r0, #0x7d + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x40 + ldr r7, _08035FB0 + adds r0, r7, #0 + ands r1, r0 + ldr r0, _08035FB4 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + adds r5, #0x7d + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r1, r8 + strh r1, [r0, #0x2e] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + strh r1, [r0, #0x2e] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x20] + strh r1, [r0, #0x30] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x20] + strh r1, [r0, #0x30] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r2, r8 + strh r2, [r0, #0x32] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x32] +_08035F9C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08035FA8: .4byte gUnknown_20205AC +_08035FAC: .4byte gUnknown_2024140 +_08035FB0: .4byte 0x000003FF +_08035FB4: .4byte 0xFFFFFC00 + thumb_func_end sub_08035BC8 + + thumb_func_start sub_08035FB8 +sub_08035FB8: @ 0x08035FB8 + push {r4, r5, lr} + ldr r0, _0803603C + ldr r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0803606C + ldr r0, _08036040 + ldr r1, _08036044 + bl sub_0803437C + ldr r0, _08036048 + ldr r1, _0803604C + bl sub_0803437C + ldr r0, _08036050 + movs r1, #0x60 + movs r2, #0x20 + bl sub_080A11BC + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_08001B70 + ldr r1, _08036054 + movs r0, #0xa + bl sub_08001144 + ldr r4, _08036058 + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #2 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #0x48 + movs r1, #0x36 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x36 + bl sub_08001144 + ldr r0, _0803605C + ldr r2, _08036060 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, _08036064 + strh r1, [r0] + ldr r0, _08036068 + bl sub_080347E0 + b _0803620C + .align 2, 0 +_0803603C: .4byte gUnknown_2022C90 +_08036040: .4byte gUnknown_8D77994 +_08036044: .4byte 0x06004000 +_08036048: .4byte gUnknown_8D77BB0 +_0803604C: .4byte 0x06010000 +_08036050: .4byte gUnknown_8D77B88 +_08036054: .4byte 0x00005C04 +_08036058: .4byte gUnknown_8D77A7C +_0803605C: .4byte gUnknown_2022ACE +_08036060: .4byte 0x0000FF5C +_08036064: .4byte gUnknown_2022AD2 +_08036068: .4byte gUnknown_82EB858 +_0803606C: + ldr r0, _08036094 + ands r0, r1 + cmp r0, #0 + beq _080360F0 + movs r0, #0x80 + lsls r0, r0, #0xf + ands r1, r0 + cmp r1, #0 + beq _08036088 + ldr r0, _08036098 + ldrh r1, [r0] + ldr r0, _0803609C + cmp r1, r0 + bne _080360AC +_08036088: + ldr r0, _080360A0 + ldr r1, _080360A4 + bl sub_0803437C + ldr r0, _080360A8 + b _080361E2 + .align 2, 0 +_08036094: .4byte 0x023F0902 +_08036098: .4byte gUnknown_203886E +_0803609C: .4byte 0x00000C03 +_080360A0: .4byte gUnknown_8D82178 +_080360A4: .4byte 0x06004000 +_080360A8: .4byte gUnknown_8D82588 +_080360AC: + movs r0, #1 + movs r1, #1 + movs r2, #2 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #2 + bl sub_08001B70 + ldr r1, _080360E8 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _080360EC + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _0803620C + .align 2, 0 +_080360E8: .4byte gUnknown_8D8578C +_080360EC: .4byte gUnknown_8D85A00 +_080360F0: + movs r0, #0x80 + lsls r0, r0, #0x15 + ands r0, r1 + cmp r0, #0 + beq _08036114 + ldr r0, _08036108 + ldr r1, _0803610C + bl sub_0803437C + ldr r0, _08036110 + b _080361E2 + .align 2, 0 +_08036108: .4byte gUnknown_8D816B4 +_0803610C: .4byte 0x06004000 +_08036110: .4byte gUnknown_8D81ED0 +_08036114: + movs r0, #0x80 + lsls r0, r0, #0x16 + ands r0, r1 + cmp r0, #0 + beq _08036138 + ldr r0, _0803612C + ldr r1, _08036130 + bl sub_0803437C + ldr r0, _08036134 + b _080361E2 + .align 2, 0 +_0803612C: .4byte gUnknown_8D7FA9C +_08036130: .4byte 0x06004000 +_08036134: .4byte gUnknown_8D7FF68 +_08036138: + movs r0, #0x80 + lsls r0, r0, #0x17 + ands r0, r1 + cmp r0, #0 + beq _0803615C + ldr r0, _08036150 + ldr r1, _08036154 + bl sub_0803437C + ldr r0, _08036158 + b _080361E2 + .align 2, 0 +_08036150: .4byte gUnknown_8D826AC +_08036154: .4byte 0x06004000 +_08036158: .4byte gUnknown_8D82D14 +_0803615C: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _080361B0 + ldr r1, _08036180 + ldr r0, _08036184 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0x20 + bne _08036194 + ldr r0, _08036188 + ldr r1, _0803618C + bl sub_0803437C + ldr r0, _08036190 + b _080361E2 + .align 2, 0 +_08036180: .4byte gUnknown_82E383C +_08036184: .4byte gUnknown_203886A +_08036188: .4byte gUnknown_8D82178 +_0803618C: .4byte 0x06004000 +_08036190: .4byte gUnknown_8D82588 +_08036194: + cmp r0, #0x26 + bne _080361B0 + ldr r0, _080361A4 + ldr r1, _080361A8 + bl sub_0803437C + ldr r0, _080361AC + b _080361E2 + .align 2, 0 +_080361A4: .4byte gUnknown_8D82178 +_080361A8: .4byte 0x06004000 +_080361AC: .4byte gUnknown_8D82588 +_080361B0: + bl sub_080855E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080361FC + ldr r4, _080361EC + ldr r5, _080361F0 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #8 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080361F4 + bl sub_0803437C + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0xc + adds r0, r0, r4 + ldr r0, [r0] +_080361E2: + ldr r1, _080361F8 + bl sub_0803437C + b _0803620C + .align 2, 0 +_080361EC: .4byte gUnknown_82EBA00 +_080361F0: .4byte gUnknown_2022C94 +_080361F4: .4byte 0x06004000 +_080361F8: .4byte 0x0600E000 +_080361FC: + ldr r0, _08036214 + ldr r1, _08036218 + bl sub_0803437C + ldr r0, _0803621C + ldr r1, _08036220 + bl sub_0803437C +_0803620C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08036214: .4byte gUnknown_8D82178 +_08036218: .4byte 0x06004000 +_0803621C: .4byte gUnknown_8D82588 +_08036220: .4byte 0x0600E000 + thumb_func_end sub_08035FB8 + + thumb_func_start sub_08036224 +sub_08036224: @ 0x08036224 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0 + cmp r0, #6 + bls _08036232 + b _080365AA +_08036232: + lsls r0, r0, #2 + ldr r1, _0803623C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803623C: .4byte _08036240 +_08036240: @ jump table + .4byte _0803625C @ case 0 + .4byte _0803626A @ case 1 + .4byte _08036284 @ case 2 + .4byte _08036294 @ case 3 + .4byte _08036388 @ case 4 + .4byte _08036490 @ case 5 + .4byte _080365A4 @ case 6 +_0803625C: + movs r0, #0x8c + lsls r0, r0, #0x14 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + b _080365AC +_0803626A: + ldr r1, _08036280 + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + bl sub_08002248 + b _080365AC + .align 2, 0 +_08036280: .4byte gUnknown_8C00530 +_08036284: + ldr r0, _08036290 + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + b _080365AC + .align 2, 0 +_08036290: .4byte gUnknown_8C004EC +_08036294: + ldr r0, _080362B0 + ldr r1, [r0] + ldr r0, _080362B4 + ands r0, r1 + cmp r0, #0 + bne _08036374 + movs r0, #0x80 + lsls r0, r0, #0x15 + ands r0, r1 + cmp r0, #0 + beq _080362BC + ldr r0, _080362B8 + b _08036376 + .align 2, 0 +_080362B0: .4byte gUnknown_2022C90 +_080362B4: .4byte 0x023F0902 +_080362B8: .4byte gUnknown_8D7BBB8 +_080362BC: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _080362E8 + ldr r1, _080362DC + ldr r0, _080362E0 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0x20 + beq _08036374 + cmp r0, #0x26 + bne _080362E8 + ldr r0, _080362E4 + b _08036376 + .align 2, 0 +_080362DC: .4byte gUnknown_82E383C +_080362E0: .4byte gUnknown_203886A +_080362E4: .4byte gUnknown_8D7CD7C +_080362E8: + bl sub_080855E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bhi _08036328 + lsls r0, r0, #2 + ldr r1, _08036300 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036300: .4byte _08036304 +_08036304: @ jump table + .4byte _08036328 @ case 0 + .4byte _08036374 @ case 1 + .4byte _08036344 @ case 2 + .4byte _0803634C @ case 3 + .4byte _08036354 @ case 4 + .4byte _0803635C @ case 5 + .4byte _08036364 @ case 6 + .4byte _0803636C @ case 7 + .4byte _08036374 @ case 8 +_08036328: + ldr r2, _0803633C + ldr r0, _08036340 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + b _08036376 + .align 2, 0 +_0803633C: .4byte gUnknown_82EBA00 +_08036340: .4byte gUnknown_2022C94 +_08036344: + ldr r0, _08036348 + b _08036376 + .align 2, 0 +_08036348: .4byte gUnknown_8D7CD7C +_0803634C: + ldr r0, _08036350 + b _08036376 + .align 2, 0 +_08036350: .4byte gUnknown_8D7CD7C +_08036354: + ldr r0, _08036358 + b _08036376 + .align 2, 0 +_08036358: .4byte gUnknown_8D7CD7C +_0803635C: + ldr r0, _08036360 + b _08036376 + .align 2, 0 +_08036360: .4byte gUnknown_8D7CD7C +_08036364: + ldr r0, _08036368 + b _08036376 + .align 2, 0 +_08036368: .4byte gUnknown_8D7CD7C +_0803636C: + ldr r0, _08036370 + b _08036376 + .align 2, 0 +_08036370: .4byte gUnknown_8D7CD7C +_08036374: + ldr r0, _08036380 +_08036376: + ldr r1, _08036384 + bl sub_0803437C + b _080365AC + .align 2, 0 +_08036380: .4byte gUnknown_8D7C4E4 +_08036384: .4byte 0x06008000 +_08036388: + ldr r0, _080363AC + ldr r1, [r0] + ldr r0, _080363B0 + ands r0, r1 + cmp r0, #0 + beq _08036396 + b _0803647C +_08036396: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + beq _080363C4 + ldr r0, _080363B4 + ldrb r0, [r0] + cmp r0, #2 + bne _080363BC + ldr r0, _080363B8 + b _0803647E + .align 2, 0 +_080363AC: .4byte gUnknown_2022C90 +_080363B0: .4byte 0x023F0902 +_080363B4: .4byte gUnknown_829BDA4 +_080363B8: .4byte gUnknown_8D7C1F8 +_080363BC: + ldr r0, _080363C0 + b _0803647E + .align 2, 0 +_080363C0: .4byte gUnknown_8D7A7C4 +_080363C4: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _080363F0 + ldr r1, _080363E4 + ldr r0, _080363E8 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0x20 + beq _0803647C + cmp r0, #0x26 + bne _080363F0 + ldr r0, _080363EC + b _0803647E + .align 2, 0 +_080363E4: .4byte gUnknown_82E383C +_080363E8: .4byte gUnknown_203886A +_080363EC: .4byte gUnknown_8D7D384 +_080363F0: + bl sub_080855E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bhi _08036430 + lsls r0, r0, #2 + ldr r1, _08036408 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036408: .4byte _0803640C +_0803640C: @ jump table + .4byte _08036430 @ case 0 + .4byte _0803647C @ case 1 + .4byte _0803644C @ case 2 + .4byte _08036454 @ case 3 + .4byte _0803645C @ case 4 + .4byte _08036464 @ case 5 + .4byte _0803646C @ case 6 + .4byte _08036474 @ case 7 + .4byte _0803647C @ case 8 +_08036430: + ldr r2, _08036444 + ldr r0, _08036448 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + b _0803647E + .align 2, 0 +_08036444: .4byte gUnknown_82EBA00 +_08036448: .4byte gUnknown_2022C94 +_0803644C: + ldr r0, _08036450 + b _0803647E + .align 2, 0 +_08036450: .4byte gUnknown_8D7D384 +_08036454: + ldr r0, _08036458 + b _0803647E + .align 2, 0 +_08036458: .4byte gUnknown_8D7D384 +_0803645C: + ldr r0, _08036460 + b _0803647E + .align 2, 0 +_08036460: .4byte gUnknown_8D7D384 +_08036464: + ldr r0, _08036468 + b _0803647E + .align 2, 0 +_08036468: .4byte gUnknown_8D7D384 +_0803646C: + ldr r0, _08036470 + b _0803647E + .align 2, 0 +_08036470: .4byte gUnknown_8D7D384 +_08036474: + ldr r0, _08036478 + b _0803647E + .align 2, 0 +_08036478: .4byte gUnknown_8D7D384 +_0803647C: + ldr r0, _08036488 +_0803647E: + ldr r1, _0803648C + bl sub_0803437C + b _080365AC + .align 2, 0 +_08036488: .4byte gUnknown_8D7CACC +_0803648C: .4byte 0x0600D000 +_08036490: + ldr r0, _080364B4 + ldr r1, [r0] + ldr r0, _080364B8 + ands r0, r1 + cmp r0, #0 + beq _0803649E + b _08036594 +_0803649E: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + beq _080364CC + ldr r0, _080364BC + ldrb r0, [r0] + cmp r0, #2 + bne _080364C4 + ldr r0, _080364C0 + b _08036596 + .align 2, 0 +_080364B4: .4byte gUnknown_2022C90 +_080364B8: .4byte 0x023F0902 +_080364BC: .4byte gUnknown_829BDA4 +_080364C0: .4byte gUnknown_8D7DFD4 +_080364C4: + ldr r0, _080364C8 + b _08036596 + .align 2, 0 +_080364C8: .4byte gUnknown_8D7DF98 +_080364CC: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08036500 + ldr r1, _080364E8 + ldr r0, _080364EC + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0x20 + bne _080364F4 + ldr r0, _080364F0 + b _08036596 + .align 2, 0 +_080364E8: .4byte gUnknown_82E383C +_080364EC: .4byte gUnknown_203886A +_080364F0: .4byte gUnknown_8D7E068 +_080364F4: + cmp r0, #0x26 + bne _08036500 + ldr r0, _080364FC + b _08036596 + .align 2, 0 +_080364FC: .4byte gUnknown_8D7E29C +_08036500: + bl sub_080855E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bhi _08036540 + lsls r0, r0, #2 + ldr r1, _08036518 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036518: .4byte _0803651C +_0803651C: @ jump table + .4byte _08036540 @ case 0 + .4byte _0803655C @ case 1 + .4byte _08036564 @ case 2 + .4byte _0803656C @ case 3 + .4byte _08036574 @ case 4 + .4byte _0803657C @ case 5 + .4byte _08036584 @ case 6 + .4byte _0803658C @ case 7 + .4byte _08036594 @ case 8 +_08036540: + ldr r2, _08036554 + ldr r0, _08036558 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x10 + adds r0, r0, r2 + ldr r0, [r0] + b _08036596 + .align 2, 0 +_08036554: .4byte gUnknown_82EBA00 +_08036558: .4byte gUnknown_2022C94 +_0803655C: + ldr r0, _08036560 + b _08036596 + .align 2, 0 +_08036560: .4byte gUnknown_8D7E02C +_08036564: + ldr r0, _08036568 + b _08036596 + .align 2, 0 +_08036568: .4byte gUnknown_8D7E104 +_0803656C: + ldr r0, _08036570 + b _08036596 + .align 2, 0 +_08036570: .4byte gUnknown_8D7E0A4 +_08036574: + ldr r0, _08036578 + b _08036596 + .align 2, 0 +_08036578: .4byte gUnknown_8D7E170 +_0803657C: + ldr r0, _08036580 + b _08036596 + .align 2, 0 +_08036580: .4byte gUnknown_8D7E1C0 +_08036584: + ldr r0, _08036588 + b _08036596 + .align 2, 0 +_08036588: .4byte gUnknown_8D7E208 +_0803658C: + ldr r0, _08036590 + b _08036596 + .align 2, 0 +_08036590: .4byte gUnknown_8D7E24C +_08036594: + ldr r0, _080365A0 +_08036596: + movs r1, #0x20 + movs r2, #0x60 + bl sub_080A11BC + b _080365AC + .align 2, 0 +_080365A0: .4byte gUnknown_8D7CA90 +_080365A4: + bl sub_08035564 + b _080365AC +_080365AA: + movs r4, #1 +_080365AC: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08036224 + + thumb_func_start sub_080365B4 +sub_080365B4: @ 0x080365B4 + push {lr} + bl sub_08076634 + bl sub_08056B38 + bl sub_0805CD34 + bl sub_0805EBD8 + bl sub_08185CDC + ldr r0, _080365E8 + ldr r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08036620 + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + beq _080365EC + bl sub_08036628 + b _0803660E + .align 2, 0 +_080365E8: .4byte gUnknown_2022C90 +_080365EC: + movs r0, #0x80 + lsls r0, r0, #0xf + ands r1, r0 + cmp r1, #0 + bne _08036608 + bl sub_080324EC + ldr r0, _08036604 + bl sub_08000540 + b _0803660E + .align 2, 0 +_08036604: .4byte sub_0803782C +_08036608: + ldr r0, _08036618 + bl sub_08000540 +_0803660E: + ldr r1, _0803661C + movs r0, #0 + strb r0, [r1] + b _08036624 + .align 2, 0 +_08036618: .4byte sub_08037A7C +_0803661C: .4byte gUnknown_2023FD6 +_08036620: + bl sub_08036628 +_08036624: + pop {r0} + bx r0 + thumb_func_end sub_080365B4 + + thumb_func_start sub_08036628 +sub_08036628: @ 0x08036628 + push {r4, r5, lr} + sub sp, #4 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + str r0, [sp] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _080366A0 + mov r0, sp + bl CpuSet + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + ldr r1, _080366A4 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + ldr r0, _080366A8 + movs r2, #0xf0 + strh r2, [r0] + ldr r0, _080366AC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _080366C4 + ldr r0, _080366B0 + ldrh r1, [r0] + ldr r0, _080366B4 + cmp r1, r0 + beq _080366C4 + ldr r1, _080366B8 + movs r0, #0x9f + strh r0, [r1] + ldr r0, _080366BC + strh r2, [r0] + ldr r1, _080366C0 + movs r0, #0x20 + strh r0, [r1] + b _08036712 + .align 2, 0 +_080366A0: .4byte 0x05006000 +_080366A4: .4byte 0x00005051 +_080366A8: .4byte gUnknown_2022AD8 +_080366AC: .4byte gUnknown_2022C90 +_080366B0: .4byte gUnknown_203886E +_080366B4: .4byte 0x00000C03 +_080366B8: .4byte gUnknown_2022ADA +_080366BC: .4byte gUnknown_2022ADC +_080366C0: .4byte gUnknown_2022ADE +_080366C4: + ldr r0, _0803679C + ldr r2, _080367A0 + adds r1, r2, #0 + strh r1, [r0] + bl sub_080B9750 + ldr r0, _080367A4 + movs r3, #0xf0 + movs r5, #0xf0 + lsls r5, r5, #3 + adds r2, r0, r5 + movs r1, #0x4f +_080366DC: + strh r3, [r0] + strh r3, [r2] + adds r2, #2 + adds r0, #2 + subs r1, #1 + cmp r1, #0 + bge _080366DC + movs r1, #0x50 + ldr r4, _080367A8 + ldr r0, _080367A4 + ldr r3, _080367AC + movs r5, #0x82 + lsls r5, r5, #4 + adds r2, r0, r5 + adds r0, #0xa0 +_080366FA: + strh r3, [r0] + strh r3, [r2] + adds r2, #2 + adds r0, #2 + adds r1, #1 + cmp r1, #0x9f + ble _080366FA + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl sub_080B9790 +_08036712: + bl sub_080A133C + ldr r0, _080367B0 + movs r1, #0 + strh r1, [r0] + ldr r0, _080367B4 + strh r1, [r0] + ldr r0, _080367B8 + strh r1, [r0] + ldr r0, _080367BC + strh r1, [r0] + ldr r0, _080367C0 + strh r1, [r0] + ldr r0, _080367C4 + strh r1, [r0] + ldr r0, _080367C8 + strh r1, [r0] + ldr r0, _080367CC + strh r1, [r0] + bl sub_080B04CC + ldr r2, _080367D0 + strb r0, [r2] + ldr r4, _080367D4 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08036752 + movs r0, #8 + strb r0, [r2] +_08036752: + bl sub_08035528 + bl sub_080358F8 + bl sub_0800668C + bl sub_080A8818 + bl sub_08035FB8 + bl sub_08008424 + ldr r1, _080367D8 + movs r0, #4 + strb r0, [r1] + ldr r0, _080367DC + bl sub_080006F0 + bl sub_08032534 + ldr r2, [r4] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + beq _08036792 + ldr r1, _080367E0 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + bne _080367E8 +_08036792: + ldr r0, _080367E4 + bl sub_08000540 + b _08036802 + .align 2, 0 +_0803679C: .4byte gUnknown_2022ADA +_080367A0: .4byte 0x00005051 +_080367A4: .4byte gUnknown_20388C8 +_080367A8: .4byte gUnknown_82EBAC8 +_080367AC: .4byte 0x0000FF10 +_080367B0: .4byte gUnknown_2022AC8 +_080367B4: .4byte gUnknown_2022ACA +_080367B8: .4byte gUnknown_2022ACC +_080367BC: .4byte gUnknown_2022ACE +_080367C0: .4byte gUnknown_2022AD0 +_080367C4: .4byte gUnknown_2022AD2 +_080367C8: .4byte gUnknown_2022AD4 +_080367CC: .4byte gUnknown_2022AD6 +_080367D0: .4byte gUnknown_2022C94 +_080367D4: .4byte gUnknown_2022C90 +_080367D8: .4byte gUnknown_30030BC +_080367DC: .4byte sub_080386DC +_080367E0: .4byte 0x00400040 +_080367E4: .4byte sub_08037274 +_080367E8: + movs r0, #0x40 + ands r2, r0 + cmp r2, #0 + beq _080367FC + ldr r0, _080367F8 + bl sub_08000540 + b _08036802 + .align 2, 0 +_080367F8: .4byte sub_08037B44 +_080367FC: + ldr r0, _08036880 + bl sub_08000540 +_08036802: + ldr r5, _08036884 + ldr r0, [r5] + ldr r1, _08036888 + ands r0, r1 + cmp r0, #0 + bne _0803683C + ldr r4, _0803688C + ldr r0, _08036890 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #1 + bl sub_080382C4 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08036838 + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r4, r1 + ldr r1, _08036894 + ldrh r1, [r1] + movs r2, #0 + bl sub_080382C4 +_08036838: + bl sub_0806E4F4 +_0803683C: + ldr r1, _08036898 + ldr r2, _0803689C + adds r1, r1, r2 + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + ldr r0, _080368A0 + ldr r1, [r0] + ldr r5, _080368A4 + adds r1, r1, r5 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r4, _080368A8 + movs r0, #0xfa + lsls r0, r0, #1 + adds r5, r4, r0 +_08036864: + adds r0, r4, #0 + movs r1, #3 + bl sub_0806D3CC + adds r4, #0x64 + cmp r4, r5 + ble _08036864 + movs r1, #0 + ldr r0, _080368AC + strb r1, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08036880: .4byte sub_08036E00 +_08036884: .4byte gUnknown_2022C90 +_08036888: .4byte 0x01000002 +_0803688C: .4byte gUnknown_20243E8 +_08036890: .4byte gUnknown_203886A +_08036894: .4byte gUnknown_203886C +_08036898: .4byte gUnknown_3002360 +_0803689C: .4byte 0x00000439 +_080368A0: .4byte gUnknown_3005AF0 +_080368A4: .4byte 0x00000CA9 +_080368A8: .4byte gUnknown_2024190 +_080368AC: .4byte gUnknown_2023FD6 + thumb_func_end sub_08036628 + + thumb_func_start sub_080368B0 +sub_080368B0: @ 0x080368B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r6, #0 + mov sb, r6 + movs r0, #0xce + lsls r0, r0, #1 + mov sl, r0 + mov r8, r6 +_080368C6: + movs r0, #0x64 + mov r4, sb + muls r4, r0, r4 + ldr r0, _08036988 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + adds r1, r0, #0 + cmp r5, #0 + beq _08036942 + cmp r5, sl + beq _0803690E + cmp r7, #0 + beq _0803690E + cmp r1, #0 + bne _0803690E + movs r0, #1 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, #0x10 + lsrs r6, r0, #0x10 +_0803690E: + cmp r5, #0 + beq _08036942 + cmp r7, #0 + beq _0803692A + cmp r5, sl + beq _0803691E + cmp r1, #0 + beq _0803692A +_0803691E: + movs r0, #2 + mov r1, r8 + lsls r0, r1 + orrs r6, r0 + lsls r0, r6, #0x10 + lsrs r6, r0, #0x10 +_0803692A: + cmp r5, #0 + beq _08036942 + cmp r5, sl + beq _08036942 + cmp r7, #0 + bne _08036942 + movs r0, #3 + mov r2, r8 + lsls r0, r2 + orrs r6, r0 + lsls r0, r6, #0x10 + lsrs r6, r0, #0x10 +_08036942: + movs r0, #2 + add r8, r0 + movs r1, #1 + add sb, r1 + mov r2, sb + cmp r2, #5 + ble _080368C6 + ldr r4, _0803698C + ldr r0, [r4] + movs r1, #0xc1 + lsls r1, r1, #1 + adds r0, r0, r1 + strb r6, [r0] + ldr r0, [r4] + ldr r5, _08036990 + adds r0, r0, r5 + lsrs r1, r6, #8 + strb r1, [r0] + ldr r0, _08036994 + bl sub_0809D068 + ldr r1, [r4] + adds r1, r1, r5 + lsls r0, r0, #7 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08036988: .4byte gUnknown_2024190 +_0803698C: .4byte gUnknown_2024140 +_08036990: .4byte 0x00000183 +_08036994: .4byte 0x000008D2 + thumb_func_end sub_080368B0 + + thumb_func_start sub_08036998 +sub_08036998: @ 0x08036998 + push {r4, r5, r6, r7, lr} + ldr r0, _08036A00 + ldr r5, [r0] + movs r0, #0xc2 + lsls r0, r0, #1 + adds r4, r5, r0 + bl sub_080E0B78 + cmp r0, #1 + bne _08036A14 + movs r2, #0 + ldr r7, _08036A04 + movs r1, #0xc6 + lsls r1, r1, #1 + adds r5, r5, r1 + adds r6, r7, #0 + ldr r3, _08036A08 +_080369BA: + adds r0, r4, r2 + ldr r1, [r6] + adds r1, r1, r3 + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #5 + ble _080369BA + adds r1, r4, r2 + movs r0, #0xff + strb r0, [r1] + movs r2, #0 + adds r3, r5, #0 + ldr r6, _08036A04 + ldr r5, _08036A0C +_080369DA: + adds r0, r3, r2 + ldr r1, [r6] + adds r1, r1, r5 + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0x11 + ble _080369DA + ldr r0, [r7] + ldr r1, _08036A10 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #7] + ldr r0, [r7] + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + b _08036A54 + .align 2, 0 +_08036A00: .4byte gUnknown_2024140 +_08036A04: .4byte gUnknown_3005AEC +_08036A08: .4byte 0x000031F8 +_08036A0C: .4byte 0x00003214 +_08036A10: .4byte 0x00003226 +_08036A14: + movs r0, #0xaf + bl sub_080E0F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0BC8 + adds r3, r0, #0 + movs r2, #0 + movs r0, #0xc6 + lsls r0, r0, #1 + adds r5, r5, r0 +_08036A2C: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #5 + ble _08036A2C + adds r1, r4, r2 + movs r0, #0xff + strb r0, [r1] + adds r0, r5, #0 + movs r2, #0 + adds r1, r0, #0 + adds r1, #0x11 +_08036A48: + strb r2, [r1] + subs r1, #1 + cmp r1, r0 + bge _08036A48 + movs r0, #0 + strb r0, [r4, #7] +_08036A54: + strb r0, [r4, #0x1a] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08036998 + + thumb_func_start sub_08036A5C +sub_08036A5C: @ 0x08036A5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08036B14 + ldr r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08036A74 + b _08036BA0 +_08036A74: + bl sub_080E0B78 + cmp r0, #1 + bne _08036B30 + movs r5, #0 + ldr r3, _08036B18 + ldr r0, _08036B1C + mov r8, r0 + adds r6, r3, #0 + mov r4, r8 + ldr r2, _08036B20 + adds r7, r3, #0 + adds r7, #0x38 +_08036A8E: + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, #1 + cmp r5, #5 + ble _08036A8E + adds r1, r5, r3 + movs r0, #0xff + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x38 + adds r0, r5, r0 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + movs r5, #0 + adds r7, r3, #0 + adds r7, #8 + ldr r4, _08036B1C + ldr r2, _08036B24 + adds r6, r3, #0 + adds r6, #0x40 +_08036ACC: + adds r1, r5, r7 + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r5, r6 + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r5, #1 + cmp r5, #0x11 + ble _08036ACC + mov r1, r8 + ldr r0, [r1] + ldr r2, _08036B28 + adds r0, r0, r2 + ldrb r1, [r0] + strb r1, [r3, #7] + ldrb r0, [r0] + adds r1, r3, #0 + adds r1, #0x3f + strb r0, [r1] + mov r4, r8 + ldr r0, [r4] + ldr r1, _08036B2C + adds r0, r0, r1 + ldrb r1, [r0] + strb r1, [r3, #0x1a] + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x52 + strb r1, [r0] + b _08036CF4 + .align 2, 0 +_08036B14: .4byte gUnknown_2022C90 +_08036B18: .4byte gUnknown_20240A8 +_08036B1C: .4byte gUnknown_3005AEC +_08036B20: .4byte 0x000031F8 +_08036B24: .4byte 0x00003214 +_08036B28: .4byte 0x00003226 +_08036B2C: .4byte 0x00003227 +_08036B30: + movs r0, #0xaf + bl sub_080E0F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0BC8 + adds r6, r0, #0 + movs r5, #0 + ldr r4, _08036B9C + adds r7, r4, #0 + adds r7, #0x38 + adds r3, r4, #0 +_08036B4A: + 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, #1 + cmp r5, #5 + ble _08036B4A + adds r1, r5, r3 + movs r0, #0xff + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x38 + adds r0, r5, r0 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + movs r5, #0 + adds r4, r3, #0 + adds r4, #8 + movs r1, #0 + adds r2, r3, #0 + adds r2, #0x40 +_08036B7C: + adds r0, r5, r4 + strb r1, [r0] + adds r0, r5, r2 + strb r1, [r0] + adds r5, #1 + cmp r5, #0x11 + ble _08036B7C + movs r1, #0 + strb r1, [r3, #7] + adds r0, r3, #0 + adds r0, #0x3f + strb r1, [r0] + strb r1, [r3, #0x1a] + adds r0, #0x13 + strb r1, [r0] + b _08036CF4 + .align 2, 0 +_08036B9C: .4byte gUnknown_20240A8 +_08036BA0: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08036C44 + movs r0, #0x80 + lsls r0, r0, #1 + ands r1, r0 + movs r2, #4 + mov r8, r2 + cmp r1, #0 + beq _08036BBA + movs r4, #2 + mov r8, r4 +_08036BBA: + movs r5, #0 + cmp r5, r8 + blt _08036BC2 + b _08036CF4 +_08036BC2: + ldr r0, _08036C38 + mov ip, r0 + ldr r3, _08036C3C + adds r6, r3, #0 + movs r1, #8 + adds r1, r1, r6 + mov sb, r1 +_08036BD0: + lsls r1, r5, #8 + ldr r0, _08036C40 + adds r7, r1, r0 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, ip + ldrb r3, [r0, #0x18] + movs r4, #0 + adds r5, #1 + mov sl, r5 + lsls r1, r3, #3 + subs r0, r1, r3 + adds r5, r1, #0 + lsls r0, r0, #2 + adds r1, r0, r6 +_08036BF0: + adds r0, r7, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, #1 + adds r4, #1 + cmp r4, #5 + ble _08036BF0 + subs r0, r5, r3 + lsls r0, r0, #2 + adds r1, r4, r0 + adds r1, r1, r6 + movs r2, #0xff + strb r2, [r1] + movs r4, #0 + mov r2, sb + adds r1, r0, r2 + adds r2, r7, #0 + adds r2, #8 +_08036C14: + adds r0, r2, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r1, #1 + adds r4, #1 + cmp r4, #0x11 + ble _08036C14 + subs r0, r5, r3 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r7, #7] + strb r1, [r0, #7] + ldrb r1, [r7, #0x1a] + strb r1, [r0, #0x1a] + mov r5, sl + cmp r5, r8 + blt _08036BD0 + b _08036CF4 + .align 2, 0 +_08036C38: .4byte gUnknown_20226A0 +_08036C3C: .4byte gUnknown_20240A8 +_08036C40: .4byte gUnknown_2022080 +_08036C44: + movs r5, #0 + ldr r4, _08036D04 + mov sb, r4 +_08036C4A: + lsls r0, r5, #8 + ldr r1, _08036D08 + adds r7, r0, r1 + movs r4, #0 + adds r2, r5, #1 + mov sl, r2 + lsls r0, r5, #3 + mov r8, r0 + adds r1, r5, #2 + mov ip, r1 + subs r1, r0, r5 + mov r2, ip + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + mov r2, sb + adds r3, r0, r2 + lsls r1, r1, #2 + adds r2, r1, r2 +_08036C70: + adds r0, r7, r4 + ldrb r1, [r0] + strb r1, [r2] + ldrb r0, [r0] + strb r0, [r3] + adds r3, #1 + adds r2, #1 + adds r4, #1 + cmp r4, #5 + ble _08036C70 + mov r0, r8 + subs r3, r0, r5 + lsls r3, r3, #2 + adds r1, r4, r3 + add r1, sb + ldrb r0, [r1] + movs r2, #0xff + orrs r0, r2 + strb r0, [r1] + mov r0, ip + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r1, r4, r2 + add r1, sb + ldrb r0, [r1] + movs r4, #0xff + orrs r0, r4 + strb r0, [r1] + movs r4, #0 + ldr r0, _08036D04 + adds r0, #8 + adds r2, r2, r0 + adds r3, r3, r0 + adds r6, r7, #0 + adds r6, #8 +_08036CB8: + adds r0, r6, r4 + ldrb r1, [r0] + strb r1, [r3] + ldrb r0, [r0] + strb r0, [r2] + adds r2, #1 + adds r3, #1 + adds r4, #1 + cmp r4, #0x11 + ble _08036CB8 + mov r0, r8 + subs r2, r0, r5 + lsls r2, r2, #2 + add r2, sb + ldrb r0, [r7, #7] + strb r0, [r2, #7] + mov r1, ip + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + ldrb r1, [r7, #7] + strb r1, [r0, #7] + ldrb r1, [r7, #0x1a] + strb r1, [r2, #0x1a] + ldrb r1, [r7, #0x1a] + strb r1, [r0, #0x1a] + mov r5, sl + cmp r5, #1 + ble _08036C4A +_08036CF4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08036D04: .4byte gUnknown_20240A8 +_08036D08: .4byte gUnknown_2022080 + thumb_func_end sub_08036A5C + + thumb_func_start sub_08036D0C +sub_08036D0C: @ 0x08036D0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + movs r6, #0 + ldr r0, _08036D38 + ldrh r2, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + mov ip, r0 + cmp r2, r1 + bne _08036D50 + cmp r3, #0 + bne _08036D40 + ldr r0, _08036D3C + ldr r1, [r0] + movs r2, #0xc + b _08036D46 + .align 2, 0 +_08036D38: .4byte gUnknown_202207C +_08036D3C: .4byte gUnknown_2022C90 +_08036D40: + ldr r0, _08036D84 + ldr r1, [r0] + movs r2, #8 +_08036D46: + orrs r1, r2 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08036D50: + cmp r6, #0 + bne _08036DF4 + movs r2, #0 + cmp r2, r4 + bge _08036D74 + ldr r1, _08036D88 + mov r8, r1 + movs r5, #0x80 + lsls r5, r5, #1 +_08036D62: + adds r1, r1, r5 + adds r2, #1 + cmp r2, r4 + bge _08036D74 + mov r7, r8 + ldrh r0, [r7] + ldrh r7, [r1] + cmp r0, r7 + beq _08036D62 +_08036D74: + cmp r2, r4 + bne _08036D9C + cmp r3, #0 + bne _08036D8C + ldr r0, _08036D84 + ldr r1, [r0] + movs r2, #0xc + b _08036D92 + .align 2, 0 +_08036D84: .4byte gUnknown_2022C90 +_08036D88: .4byte gUnknown_202207C +_08036D8C: + ldr r0, _08036DE8 + ldr r1, [r0] + movs r2, #8 +_08036D92: + orrs r1, r2 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08036D9C: + cmp r6, #0 + bne _08036DF4 + movs r2, #0 + ldr r5, _08036DE8 + cmp r2, r4 + bge _08036DDE + mov r0, ip + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + beq _08036DD6 +_08036DB4: + lsls r0, r2, #8 + add r0, ip + ldrh r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #2 + cmp r0, r1 + bls _08036DC6 + cmp r2, r3 + bne _08036DDE +_08036DC6: + adds r2, #1 + cmp r2, r4 + bge _08036DDE + lsls r0, r2, #8 + add r0, ip + ldrh r0, [r0] + cmp r0, r1 + bne _08036DB4 +_08036DD6: + cmp r2, r3 + beq _08036DB4 + cmp r2, r3 + bge _08036DB4 +_08036DDE: + cmp r2, r4 + bne _08036DEC + ldr r0, [r5] + movs r1, #0xc + b _08036DF0 + .align 2, 0 +_08036DE8: .4byte gUnknown_2022C90 +_08036DEC: + ldr r0, [r5] + movs r1, #8 +_08036DF0: + orrs r0, r1 + str r0, [r5] +_08036DF4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08036D0C + + thumb_func_start sub_08036E00 +sub_08036E00: @ 0x08036E00 + push {r4, r5, r6, lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08036E38 + adds r0, #0x25 + strb r5, [r0] + movs r0, #1 + adds r4, r5, #0 + eors r4, r0 + ldr r0, _08036E3C + ldrb r0, [r0] + cmp r0, #0x12 + bls _08036E2C + b _08037268 +_08036E2C: + lsls r0, r0, #2 + ldr r1, _08036E40 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08036E38: .4byte gUnknown_2024118 +_08036E3C: .4byte gUnknown_2023FD6 +_08036E40: .4byte _08036E44 +_08036E44: @ jump table + .4byte _08036E90 @ case 0 + .4byte _08036ED4 @ case 1 + .4byte _08036F98 @ case 2 + .4byte _0803702C @ case 3 + .4byte _08037054 @ case 4 + .4byte _08037248 @ case 5 + .4byte _08037254 @ case 6 + .4byte _08037084 @ case 7 + .4byte _080370AC @ case 8 + .4byte _08037248 @ case 9 + .4byte _08037254 @ case 10 + .4byte _080370DC @ case 11 + .4byte _08037104 @ case 12 + .4byte _08037248 @ case 13 + .4byte _08037254 @ case 14 + .4byte _08037134 @ case 15 + .4byte _08037194 @ case 16 + .4byte _080371BC @ case 17 + .4byte _080371FC @ case 18 +_08036E90: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08036EBC + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl sub_0805EB30 + ldr r1, _08036ECC + movs r0, #1 + strb r0, [r1] +_08036EBC: + ldr r0, _08036ED0 + ldrb r0, [r0] + cmp r0, #0 + bne _08036EC6 + b _08037268 +_08036EC6: + bl sub_0800DBB4 + b _08037268 + .align 2, 0 +_08036ECC: .4byte gUnknown_2023FD6 +_08036ED0: .4byte gUnknown_300319C +_08036ED4: + ldr r2, _08036F58 + ldr r1, [r2] + movs r6, #2 + adds r0, r1, #0 + ands r0, r6 + cmp r0, #0 + beq _08036F78 + ldr r0, _08036F5C + ldrb r0, [r0] + cmp r0, #0 + bne _08036EEC + b _08037268 +_08036EEC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08036F42 + ldr r4, _08036F60 + ldr r0, [r4] + movs r5, #0xc0 + lsls r5, r5, #1 + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _08036F64 + adds r1, r0, r2 + movs r0, #3 + strb r0, [r1] + bl sub_080368B0 + bl sub_08036998 + ldr r0, _08036F68 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r1, r0 + bne _08036F2C + ldr r0, _08036F6C + movs r1, #0 + strh r1, [r0, #0x18] + movs r1, #1 + strh r1, [r0, #0x34] +_08036F2C: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + adds r1, r1, r5 + movs r2, #0x20 + bl sub_0800A070 + ldr r0, _08036F70 + strb r6, [r0] +_08036F42: + ldr r0, _08036F74 + ldrb r0, [r0] + cmp r0, #0 + bne _08036F4C + b _08037268 +_08036F4C: + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _08037268 + .align 2, 0 +_08036F58: .4byte gUnknown_2022C90 +_08036F5C: .4byte gUnknown_30031C4 +_08036F60: .4byte gUnknown_2024140 +_08036F64: .4byte 0x00000181 +_08036F68: .4byte gUnknown_203886A +_08036F6C: .4byte gUnknown_20226A0 +_08036F70: .4byte gUnknown_2023FD6 +_08036F74: .4byte gUnknown_300319C +_08036F78: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08036F88 + movs r0, #4 + orrs r1, r0 + str r1, [r2] +_08036F88: + ldr r1, _08036F94 + movs r0, #0xf + strb r0, [r1] + bl sub_08036A5C + b _08037268 + .align 2, 0 +_08036F94: .4byte gUnknown_2023FD6 +_08036F98: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08036FA6 + b _08037268 +_08036FA6: + bl sub_0800A178 + movs r0, #2 + adds r1, r5, #0 + bl sub_08036D0C + bl sub_08036A5C + ldr r0, _08037018 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803701C + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r1 + movs r1, #0 + movs r0, #0x87 + lsls r0, r0, #1 + strh r0, [r2, #0xa] + movs r0, #0x5a + strh r0, [r2, #0xc] + strh r1, [r2, #0x12] + ldr r0, _08037020 + ldr r3, [r0] + movs r6, #0xc1 + lsls r6, r6, #1 + adds r0, r3, r6 + ldrb r1, [r0] + adds r6, #1 + adds r0, r3, r6 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r2, #0xe] + ldr r1, _08037024 + lsls r4, r4, #8 + adds r1, #2 + adds r4, r4, r1 + ldrh r0, [r4] + strh r0, [r2, #0x10] + lsls r0, r5, #8 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_08185CE8 + ldrh r0, [r4] + bl sub_08185CE8 + bl sub_080685E4 + ldr r1, _08037028 + b _08037262 + .align 2, 0 +_08037018: .4byte sub_08035BC8 +_0803701C: .4byte gUnknown_3005B60 +_08037020: .4byte gUnknown_2024140 +_08037024: .4byte gUnknown_202207C +_08037028: .4byte gUnknown_2023FD6 +_0803702C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037038 + b _08037268 +_08037038: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803704C + movs r2, #0xc8 + bl sub_0800A070 + ldr r1, _08037050 + b _08037262 + .align 2, 0 +_0803704C: .4byte gUnknown_2024190 +_08037050: .4byte gUnknown_2023FD6 +_08037054: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08037062 + b _08037268 +_08037062: + bl sub_0800A178 + ldr r0, _08037078 + lsls r1, r4, #8 + ldr r2, _0803707C + adds r1, r1, r2 + movs r2, #0xc8 + bl memcpy + ldr r1, _08037080 + b _08037262 + .align 2, 0 +_08037078: .4byte gUnknown_20243E8 +_0803707C: .4byte gUnknown_202207C +_08037080: .4byte gUnknown_2023FD6 +_08037084: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037090 + b _08037268 +_08037090: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080370A4 + movs r2, #0xc8 + bl sub_0800A070 + ldr r1, _080370A8 + b _08037262 + .align 2, 0 +_080370A4: .4byte gUnknown_2024258 +_080370A8: .4byte gUnknown_2023FD6 +_080370AC: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _080370BA + b _08037268 +_080370BA: + bl sub_0800A178 + ldr r0, _080370D0 + lsls r1, r4, #8 + ldr r2, _080370D4 + adds r1, r1, r2 + movs r2, #0xc8 + bl memcpy + ldr r1, _080370D8 + b _08037262 + .align 2, 0 +_080370D0: .4byte gUnknown_20244B0 +_080370D4: .4byte gUnknown_202207C +_080370D8: .4byte gUnknown_2023FD6 +_080370DC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080370E8 + b _08037268 +_080370E8: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080370FC + movs r2, #0xc8 + bl sub_0800A070 + ldr r1, _08037100 + b _08037262 + .align 2, 0 +_080370FC: .4byte gUnknown_2024320 +_08037100: .4byte gUnknown_2023FD6 +_08037104: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08037112 + b _08037268 +_08037112: + bl sub_0800A178 + ldr r0, _08037128 + lsls r1, r4, #8 + ldr r2, _0803712C + adds r1, r1, r2 + movs r2, #0xc8 + bl memcpy + ldr r1, _08037130 + b _08037262 + .align 2, 0 +_08037128: .4byte gUnknown_2024578 +_0803712C: .4byte gUnknown_202207C +_08037130: .4byte gUnknown_2023FD6 +_08037134: + bl sub_08032600 + bl sub_08184D04 + ldr r2, _0803717C + movs r0, #0 + strb r0, [r2, #1] + strb r0, [r2, #2] + ldr r0, _08037180 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803718E + movs r3, #0 + ldr r1, _08037184 + ldrb r0, [r1] + adds r5, r2, #0 + cmp r0, #3 + bne _08037172 + movs r4, #0xff + adds r2, r1, #0 +_08037160: + adds r2, #0x1c + adds r3, #1 + cmp r3, #1 + bgt _08037172 + ldrh r1, [r2] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #3 + beq _08037160 +_08037172: + cmp r3, #2 + bne _08037188 + movs r0, #0x10 + strb r0, [r5] + b _08037268 + .align 2, 0 +_0803717C: .4byte gUnknown_2023FD6 +_08037180: .4byte gUnknown_2022C90 +_08037184: .4byte gUnknown_20226A0 +_08037188: + movs r0, #0x12 + strb r0, [r5] + b _08037268 +_0803718E: + movs r0, #0x12 + strb r0, [r2] + b _08037268 +_08037194: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037268 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080371B4 + movs r2, #4 + bl sub_0800A070 + ldr r1, _080371B8 + b _08037262 + .align 2, 0 +_080371B4: .4byte gUnknown_203B9F8 +_080371B8: .4byte gUnknown_2023FD6 +_080371BC: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + bne _08037268 + bl sub_0800A178 + ldr r0, _080371EC + ldr r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _080371E6 + ldr r0, _080371F0 + lsls r1, r4, #8 + ldr r2, _080371F4 + adds r1, r1, r2 + movs r2, #4 + bl memcpy +_080371E6: + ldr r1, _080371F8 + b _08037262 + .align 2, 0 +_080371EC: .4byte gUnknown_2022C90 +_080371F0: .4byte gUnknown_203B9F8 +_080371F4: .4byte gUnknown_202207C +_080371F8: .4byte gUnknown_2023FD6 +_080371FC: + ldr r0, _08037230 + adds r1, r0, #1 + bl sub_0805DDF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037268 + ldr r2, _08037234 + ldr r1, _08037238 + ldr r0, [r1] + str r0, [r2] + ldr r0, _0803723C + str r0, [r1] + ldr r0, _08037240 + bl sub_08000540 + ldr r2, _08037244 + ldr r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08037268 + movs r0, #0x20 + orrs r1, r0 + str r1, [r2] + b _08037268 + .align 2, 0 +_08037230: .4byte gUnknown_2023FD7 +_08037234: .4byte gUnknown_3005A60 +_08037238: .4byte gUnknown_3002360 +_0803723C: .4byte sub_08039B34 +_08037240: .4byte sub_080380FC +_08037244: .4byte gUnknown_2022C90 +_08037248: + ldr r0, _08037270 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + movs r1, #1 + strb r1, [r0, #1] +_08037254: + ldr r1, _08037270 + ldrb r0, [r1, #1] + subs r0, #1 + strb r0, [r1, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037268 +_08037262: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08037268: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08037270: .4byte gUnknown_2023FD6 + thumb_func_end sub_08036E00 + + thumb_func_start sub_08037274 +sub_08037274: @ 0x08037274 + push {r4, r5, r6, r7, lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080372AC + adds r0, #0x25 + strb r6, [r0] + movs r0, #1 + adds r7, r6, #0 + eors r7, r0 + ldr r0, _080372B0 + ldrb r0, [r0] + cmp r0, #0x10 + bls _080372A0 + b _08037752 +_080372A0: + lsls r0, r0, #2 + ldr r1, _080372B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080372AC: .4byte gUnknown_2024118 +_080372B0: .4byte gUnknown_2023FD6 +_080372B4: .4byte _080372B8 +_080372B8: @ jump table + .4byte _080372FC @ case 0 + .4byte _08037334 @ case 1 + .4byte _08037414 @ case 2 + .4byte _08037468 @ case 3 + .4byte _0803748C @ case 4 + .4byte _08037508 @ case 5 + .4byte _0803752C @ case 6 + .4byte _080375A8 @ case 7 + .4byte _080375C4 @ case 8 + .4byte _080375F4 @ case 9 + .4byte _08037610 @ case 10 + .4byte _0803763C @ case 11 + .4byte _08037658 @ case 12 + .4byte _08037684 @ case 13 + .4byte _080376B6 @ case 14 + .4byte _080376D8 @ case 15 + .4byte _0803771C @ case 16 +_080372FC: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037328 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl sub_0805EB30 + ldr r1, _080373D0 + movs r0, #1 + strb r0, [r1] +_08037328: + ldr r0, _080373D4 + ldrb r0, [r0] + cmp r0, #0 + beq _08037334 + bl sub_0800DBB4 +_08037334: + ldr r2, _080373D8 + ldr r1, [r2] + movs r3, #2 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _080373F4 + ldr r0, _080373DC + ldrb r0, [r0] + cmp r0, #0 + bne _0803734C + b _08037752 +_0803734C: + ldr r4, _080373E0 + movs r0, #0 + strh r0, [r4, #0x18] + strh r3, [r4, #0x34] + adds r1, r4, #0 + adds r1, #0x50 + movs r0, #1 + strh r0, [r1] + adds r1, #0x1c + movs r0, #3 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x40 + ldr r1, _080373E4 + ldrh r1, [r1] + bl sub_08162D24 + adds r0, r4, #0 + adds r0, #0x5c + ldr r1, _080373E8 + ldrh r1, [r1] + bl sub_08162D24 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080373BC + ldr r4, _080373EC + ldr r0, [r4] + movs r5, #0xc0 + lsls r5, r5, #1 + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _080373F0 + adds r1, r0, r2 + movs r0, #3 + strb r0, [r1] + bl sub_080368B0 + bl sub_08036998 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + adds r1, r1, r5 + movs r2, #0x20 + bl sub_0800A070 + ldr r1, _080373D0 + movs r0, #2 + strb r0, [r1] +_080373BC: + ldr r0, _080373D4 + ldrb r0, [r0] + cmp r0, #0 + bne _080373C6 + b _08037752 +_080373C6: + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _08037752 + .align 2, 0 +_080373D0: .4byte gUnknown_2023FD6 +_080373D4: .4byte gUnknown_300319C +_080373D8: .4byte gUnknown_2022C90 +_080373DC: .4byte gUnknown_30031C4 +_080373E0: .4byte gUnknown_20226A0 +_080373E4: .4byte gUnknown_203886A +_080373E8: .4byte gUnknown_203886C +_080373EC: .4byte gUnknown_2024140 +_080373F0: .4byte 0x00000181 +_080373F4: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08037404 + movs r0, #4 + orrs r1, r0 + str r1, [r2] +_08037404: + ldr r1, _08037410 + movs r0, #0xd + strb r0, [r1] + bl sub_08036A5C + b _08037752 + .align 2, 0 +_08037410: .4byte gUnknown_2023FD6 +_08037414: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08037422 + b _08037752 +_08037422: + bl sub_0800A178 + movs r0, #2 + adds r1, r6, #0 + bl sub_08036D0C + bl sub_08036A5C + ldr r0, _08037460 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08037464 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + movs r0, #0x87 + lsls r0, r0, #1 + strh r0, [r1, #0xa] + movs r0, #0x5a + strh r0, [r1, #0xc] + strh r2, [r1, #0x12] + adds r0, #0xeb + strh r0, [r1, #0xe] + strh r0, [r1, #0x10] + b _08037702 + .align 2, 0 +_08037460: .4byte sub_08035BC8 +_08037464: .4byte gUnknown_3005B60 +_08037468: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037474 + b _08037752 +_08037474: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08037488 +_0803747E: + movs r2, #0xc8 + bl sub_0800A070 + b _08037702 + .align 2, 0 +_08037488: .4byte gUnknown_2024190 +_0803748C: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _0803749A + b _08037752 +_0803749A: + bl sub_0800A178 + ldr r0, _080374D4 + lsls r1, r6, #3 + subs r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + cmp r0, #0 + beq _080374E0 + ldr r4, _080374D8 + lsls r1, r7, #8 + ldr r5, _080374DC + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0xc8 + bl memcpy + movs r0, #0x96 + lsls r0, r0, #1 + adds r4, r4, r0 + lsls r1, r6, #8 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0xc8 + bl memcpy + b _08037702 + .align 2, 0 +_080374D4: .4byte gUnknown_20226A0 +_080374D8: .4byte gUnknown_2024190 +_080374DC: .4byte gUnknown_202207C +_080374E0: + ldr r4, _08037500 + lsls r1, r6, #8 + ldr r5, _08037504 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0xc8 + bl memcpy + movs r2, #0x96 + lsls r2, r2, #1 + adds r4, r4, r2 + lsls r1, r7, #8 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0xc8 + b _080376FE + .align 2, 0 +_08037500: .4byte gUnknown_2024190 +_08037504: .4byte gUnknown_202207C +_08037508: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037514 + b _08037752 +_08037514: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08037528 + movs r2, #0x64 + bl sub_0800A070 + b _08037702 + .align 2, 0 +_08037528: .4byte gUnknown_2024258 +_0803752C: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _0803753A + b _08037752 +_0803753A: + bl sub_0800A178 + ldr r0, _08037574 + lsls r1, r6, #3 + subs r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + cmp r0, #0 + beq _08037580 + ldr r4, _08037578 + lsls r1, r7, #8 + ldr r5, _0803757C + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy + movs r0, #0x96 + lsls r0, r0, #1 + adds r4, r4, r0 + lsls r1, r6, #8 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy + b _08037702 + .align 2, 0 +_08037574: .4byte gUnknown_20226A0 +_08037578: .4byte gUnknown_2024258 +_0803757C: .4byte gUnknown_202207C +_08037580: + ldr r4, _080375A0 + lsls r1, r6, #8 + ldr r5, _080375A4 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy + movs r2, #0x96 + lsls r2, r2, #1 + adds r4, r4, r2 + lsls r1, r7, #8 + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #0x64 + b _080376FE + .align 2, 0 +_080375A0: .4byte gUnknown_2024258 +_080375A4: .4byte gUnknown_202207C +_080375A8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080375B4 + b _08037752 +_080375B4: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080375C0 + b _0803747E + .align 2, 0 +_080375C0: .4byte gUnknown_20243E8 +_080375C4: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _080375D2 + b _08037752 +_080375D2: + bl sub_0800A178 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080375E2 + b _08037702 +_080375E2: + ldr r0, _080375EC + ldr r1, _080375F0 + movs r2, #0xc8 + b _080376FE + .align 2, 0 +_080375EC: .4byte gUnknown_20243E8 +_080375F0: .4byte gUnknown_202207C +_080375F4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037600 + b _08037752 +_08037600: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803760C + b _0803747E + .align 2, 0 +_0803760C: .4byte gUnknown_20244B0 +_08037610: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _0803761E + b _08037752 +_0803761E: + bl sub_0800A178 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037702 + ldr r0, _08037634 + ldr r1, _08037638 + movs r2, #0xc8 + b _080376FE + .align 2, 0 +_08037634: .4byte gUnknown_20244B0 +_08037638: .4byte gUnknown_202207C +_0803763C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037648 + b _08037752 +_08037648: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08037654 + b _0803747E + .align 2, 0 +_08037654: .4byte gUnknown_2024578 +_08037658: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + bne _08037752 + bl sub_0800A178 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037702 + ldr r0, _0803767C + ldr r1, _08037680 + movs r2, #0xc8 + b _080376FE + .align 2, 0 +_0803767C: .4byte gUnknown_2024578 +_08037680: .4byte gUnknown_202207C +_08037684: + bl sub_08032600 + bl sub_08184D04 + ldr r2, _080376A8 + movs r0, #0 + strb r0, [r2, #1] + strb r0, [r2, #2] + ldr r0, _080376AC + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080376B0 + movs r0, #0xe + strb r0, [r2] + b _08037752 + .align 2, 0 +_080376A8: .4byte gUnknown_2023FD6 +_080376AC: .4byte gUnknown_2022C90 +_080376B0: + movs r0, #0x10 + strb r0, [r2] + b _08037752 +_080376B6: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037752 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080376D4 + movs r2, #4 + bl sub_0800A070 + b _08037702 + .align 2, 0 +_080376D4: .4byte gUnknown_203B9F8 +_080376D8: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + bne _08037752 + bl sub_0800A178 + ldr r0, _0803770C + ldr r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _08037702 + ldr r0, _08037710 + lsls r1, r7, #8 + ldr r2, _08037714 + adds r1, r1, r2 + movs r2, #4 +_080376FE: + bl memcpy +_08037702: + ldr r1, _08037718 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08037752 + .align 2, 0 +_0803770C: .4byte gUnknown_2022C90 +_08037710: .4byte gUnknown_203B9F8 +_08037714: .4byte gUnknown_202207C +_08037718: .4byte gUnknown_2023FD6 +_0803771C: + ldr r0, _08037758 + adds r1, r0, #1 + bl sub_0805DDF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037752 + bl sub_08165F94 + ldr r2, _0803775C + ldr r1, _08037760 + ldr r0, [r1] + str r0, [r2] + ldr r0, _08037764 + str r0, [r1] + ldr r0, _08037768 + bl sub_08000540 + ldr r2, _0803776C + ldr r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08037752 + movs r0, #0x20 + orrs r1, r0 + str r1, [r2] +_08037752: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08037758: .4byte gUnknown_2023FD7 +_0803775C: .4byte gUnknown_3005A60 +_08037760: .4byte gUnknown_3002360 +_08037764: .4byte sub_08039B34 +_08037768: .4byte sub_080380FC +_0803776C: .4byte gUnknown_2022C90 + thumb_func_end sub_08037274 + + thumb_func_start sub_08037770 +sub_08037770: @ 0x08037770 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r7, #0 + ldr r6, _08037820 + mov sb, r6 +_08037786: + mov r0, sl + adds r1, r7, r0 + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _08037824 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r5, r7, #5 + strh r0, [r6] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + strh r0, [r6, #2] + movs r0, #4 + add r0, sb + mov r8, r0 + adds r2, r5, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806A058 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + strb r0, [r6, #0xf] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r6, #0x10] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r6, #0x12] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + mov r1, sb + adds r1, #0x14 + adds r5, r5, r1 + str r0, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r6, #0x18] + adds r0, r4, #0 + bl sub_08069AF4 + strb r0, [r6, #0x1c] + adds r6, #0x20 + adds r7, #1 + cmp r7, #2 + ble _08037786 + ldr r0, _08037828 + ldr r0, [r0] + mov r1, r8 + subs r1, #4 + movs r2, #0x60 + bl memcpy + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08037820: .4byte gUnknown_2022C9C +_08037824: .4byte gUnknown_2024190 +_08037828: .4byte gUnknown_2022CFC + thumb_func_end sub_08037770 + + thumb_func_start sub_0803782C +sub_0803782C: @ 0x0803782C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #4 + mov sb, r0 + movs r4, #0xf + ldr r6, _08037890 + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08037852 + movs r1, #2 + mov sb, r1 + movs r4, #3 +_08037852: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08037894 + adds r0, #0x25 + movs r2, #0 + mov r8, r2 + strb r7, [r0] + ldr r0, _08037898 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xb4 + str r1, [sp] + adds r0, #0xac + mov sl, r0 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + ldr r5, _0803789C + ldrb r0, [r5] + cmp r0, #1 + beq _080378F4 + cmp r0, #1 + bgt _080378A0 + cmp r0, #0 + beq _080378AE + b _08037A5A + .align 2, 0 +_08037890: .4byte gUnknown_2022C90 +_08037894: .4byte gUnknown_2024118 +_08037898: .4byte gUnknown_2024140 +_0803789C: .4byte gUnknown_2023FD6 +_080378A0: + cmp r0, #2 + bne _080378A6 + b _080379B4 +_080378A6: + cmp r0, #3 + bne _080378AC + b _080379EE +_080378AC: + b _08037A5A +_080378AE: + ldr r0, _080378EC + ldrb r0, [r0] + cmp r0, #0 + bne _080378B8 + b _08037A5A +_080378B8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080378C4 + b _08037A5A +_080378C4: + ldr r4, _080378F0 + movs r0, #0x60 + bl sub_08000BC8 + str r0, [r4] + movs r0, #0 + bl sub_08037770 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + movs r2, #0x60 + bl sub_0800A070 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _08037A5A + .align 2, 0 +_080378EC: .4byte gUnknown_30031C4 +_080378F0: .4byte gUnknown_2022CFC +_080378F4: + bl sub_0800A114 + adds r1, r4, #0 + ands r1, r0 + cmp r1, r4 + beq _08037902 + b _08037A5A +_08037902: + bl sub_0800A178 + movs r5, #0 + cmp r8, sb + bge _0803797E + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r6, r0, #2 + mov r8, r5 + ldr r4, _08037940 +_08037916: + cmp r5, r7 + beq _0803796E + mov r2, sb + cmp r2, #4 + bne _08037964 + ldr r2, _08037944 + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, #0x18] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08037948 + adds r0, r6, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037954 + b _0803796E + .align 2, 0 +_08037940: .4byte gUnknown_202207C +_08037944: .4byte gUnknown_20226A0 +_08037948: + adds r0, r6, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0803796E +_08037954: + ldr r0, _08037960 + adds r1, r4, #0 + movs r2, #0x60 + bl memcpy + b _0803796E + .align 2, 0 +_08037960: .4byte gUnknown_2022C9C +_08037964: + ldr r0, _080379A0 + adds r1, r4, #0 + movs r2, #0x60 + bl memcpy +_0803796E: + movs r2, #0x80 + lsls r2, r2, #1 + adds r4, r4, r2 + movs r0, #0x1c + add r8, r0 + adds r5, #1 + cmp r5, sb + blt _08037916 +_0803797E: + ldr r1, _080379A4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _080379A8 + ldr r0, [r1, #8] + ldr r2, [sp] + str r0, [r2] + ldr r0, _080379AC + ldr r0, [r0] + mov r2, sl + str r0, [r2] + ldr r0, _080379B0 + str r0, [r1, #8] + bl sub_081B8DF0 + b _08037A5A + .align 2, 0 +_080379A0: .4byte gUnknown_2022C9C +_080379A4: .4byte gUnknown_2023FD6 +_080379A8: .4byte gUnknown_3002360 +_080379AC: .4byte gUnknown_2022C90 +_080379B0: .4byte sub_0803782C +_080379B4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037A5A + ldr r0, _080379E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08037A5A + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r0, _080379E4 + ldrb r0, [r0] + cmp r0, #0 + beq _080379E8 + bl sub_0800A8D4 + b _08037A5A + .align 2, 0 +_080379E0: .4byte gUnknown_2037C74 +_080379E4: .4byte gUnknown_300319C +_080379E8: + bl sub_0800A7F8 + b _08037A5A +_080379EE: + ldr r0, _08037A24 + ldrb r0, [r0] + cmp r0, #0 + beq _08037A34 + bl sub_08010000 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037A5A + mov r1, sl + ldr r0, [r1] + str r0, [r6] + ldr r1, _08037A28 + ldr r2, [sp] + ldr r0, [r2] + str r0, [r1, #8] + ldr r0, _08037A2C + bl sub_08000540 + ldr r4, _08037A30 + ldr r0, [r4] + bl sub_08000BF0 + mov r0, r8 + str r0, [r4] + b _08037A5A + .align 2, 0 +_08037A24: .4byte gUnknown_300319C +_08037A28: .4byte gUnknown_3002360 +_08037A2C: .4byte sub_08036628 +_08037A30: .4byte gUnknown_2022CFC +_08037A34: + ldr r0, _08037A6C + ldrb r5, [r0] + cmp r5, #0 + bne _08037A5A + mov r1, sl + ldr r0, [r1] + str r0, [r6] + ldr r1, _08037A70 + ldr r2, [sp] + ldr r0, [r2] + str r0, [r1, #8] + ldr r0, _08037A74 + bl sub_08000540 + ldr r4, _08037A78 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] +_08037A5A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08037A6C: .4byte gUnknown_30031C4 +_08037A70: .4byte gUnknown_3002360 +_08037A74: .4byte sub_08036628 +_08037A78: .4byte gUnknown_2022CFC + thumb_func_end sub_0803782C + + thumb_func_start sub_08037A7C +sub_08037A7C: @ 0x08037A7C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08037AAC + ldr r0, [r0] + movs r1, #0xb4 + adds r1, r1, r0 + mov r8, r1 + adds r7, r0, #0 + adds r7, #0xac + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + ldr r5, _08037AB0 + ldrb r0, [r5] + cmp r0, #0 + beq _08037AB4 + cmp r0, #1 + beq _08037AF4 + b _08037B26 + .align 2, 0 +_08037AAC: .4byte gUnknown_2024140 +_08037AB0: .4byte gUnknown_2023FD6 +_08037AB4: + ldr r4, _08037AE4 + movs r0, #0x60 + bl sub_08000BC8 + str r0, [r4] + movs r0, #3 + bl sub_08037770 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r1, _08037AE8 + ldr r0, [r1, #8] + mov r2, r8 + str r0, [r2] + ldr r0, _08037AEC + ldr r0, [r0] + str r0, [r7] + ldr r0, _08037AF0 + str r0, [r1, #8] + bl sub_081B8DF0 + b _08037B26 + .align 2, 0 +_08037AE4: .4byte gUnknown_2022CFC +_08037AE8: .4byte gUnknown_3002360 +_08037AEC: .4byte gUnknown_2022C90 +_08037AF0: .4byte sub_08037A7C +_08037AF4: + ldr r0, _08037B30 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _08037B26 + movs r0, #2 + strb r0, [r5] + ldr r1, _08037B34 + ldr r0, [r7] + str r0, [r1] + ldr r1, _08037B38 + mov r2, r8 + ldr r0, [r2] + str r0, [r1, #8] + ldr r0, _08037B3C + bl sub_08000540 + ldr r4, _08037B40 + ldr r0, [r4] + bl sub_08000BF0 + str r6, [r4] +_08037B26: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08037B30: .4byte gUnknown_2037C74 +_08037B34: .4byte gUnknown_2022C90 +_08037B38: .4byte gUnknown_3002360 +_08037B3C: .4byte sub_08036628 +_08037B40: .4byte gUnknown_2022CFC + thumb_func_end sub_08037A7C + + thumb_func_start sub_08037B44 +sub_08037B44: @ 0x08037B44 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08037B7C + adds r0, #0x25 + strb r7, [r0] + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + ldr r0, _08037B80 + ldrb r0, [r0] + cmp r0, #0xa + bls _08037B70 + b _080380D4 +_08037B70: + lsls r0, r0, #2 + ldr r1, _08037B84 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08037B7C: .4byte gUnknown_2024118 +_08037B80: .4byte gUnknown_2023FD6 +_08037B84: .4byte _08037B88 +_08037B88: @ jump table + .4byte _08037BB4 @ case 0 + .4byte _08037BF8 @ case 1 + .4byte _08037CA0 @ case 2 + .4byte _08037D76 @ case 3 + .4byte _08037D9C @ case 4 + .4byte _08037E90 @ case 5 + .4byte _08037EB4 @ case 6 + .4byte _08037FA8 @ case 7 + .4byte _08038008 @ case 8 + .4byte _08038048 @ case 9 + .4byte _08038098 @ case 10 +_08037BB4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037BE0 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl sub_0805EB30 + ldr r1, _08037BF0 + movs r0, #1 + strb r0, [r1] +_08037BE0: + ldr r0, _08037BF4 + ldrb r0, [r0] + cmp r0, #0 + bne _08037BEA + b _080380D4 +_08037BEA: + bl sub_0800DBB4 + b _080380D4 + .align 2, 0 +_08037BF0: .4byte gUnknown_2023FD6 +_08037BF4: .4byte gUnknown_300319C +_08037BF8: + ldr r2, _08037C68 + ldr r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08037C80 + ldr r0, _08037C6C + ldrb r0, [r0] + cmp r0, #0 + bne _08037C0E + b _080380D4 +_08037C0E: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08037C52 + ldr r4, _08037C70 + ldr r0, [r4] + movs r5, #0xc0 + lsls r5, r5, #1 + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _08037C74 + adds r1, r0, r2 + movs r0, #3 + strb r0, [r1] + bl sub_080368B0 + bl sub_08036998 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + adds r1, r1, r5 + movs r2, #0x20 + bl sub_0800A070 + ldr r1, _08037C78 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08037C52: + ldr r0, _08037C7C + ldrb r0, [r0] + cmp r0, #0 + bne _08037C5C + b _080380D4 +_08037C5C: + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _080380D4 + .align 2, 0 +_08037C68: .4byte gUnknown_2022C90 +_08037C6C: .4byte gUnknown_30031C4 +_08037C70: .4byte gUnknown_2024140 +_08037C74: .4byte 0x00000181 +_08037C78: .4byte gUnknown_2023FD6 +_08037C7C: .4byte gUnknown_300319C +_08037C80: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08037C90 + movs r0, #4 + orrs r1, r0 + str r1, [r2] +_08037C90: + ldr r1, _08037C9C + movs r0, #7 + strb r0, [r1] + bl sub_08036A5C + b _080380D4 + .align 2, 0 +_08037C9C: .4byte gUnknown_2023FD6 +_08037CA0: + bl sub_0800A114 + movs r1, #0xf + ands r1, r0 + cmp r1, #0xf + beq _08037CAE + b _080380D4 +_08037CAE: + bl sub_0800A178 + movs r0, #4 + adds r1, r7, #0 + bl sub_08036D0C + bl sub_08036A5C + bl sub_080685E4 + ldr r0, _08037D14 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08037D18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0x87 + lsls r1, r1, #1 + strh r1, [r0, #0xa] + movs r1, #0x5a + strh r1, [r0, #0xc] + strh r2, [r0, #0x12] + strh r2, [r0, #0xe] + strh r2, [r0, #0x10] + ldr r1, _08037D1C + adds r4, r0, #0 + adds r5, r1, #2 + movs r7, #0x3f + movs r6, #3 +_08037CF4: + ldrh r0, [r5] + str r2, [sp] + bl sub_08185CE8 + ldr r0, _08037D20 + ldr r2, [sp] + adds r0, r2, r0 + ldrh r0, [r0, #0x18] + cmp r0, #1 + beq _08037D36 + cmp r0, #1 + bgt _08037D24 + cmp r0, #0 + beq _08037D2E + b _08037D5C + .align 2, 0 +_08037D14: .4byte sub_08035BC8 +_08037D18: .4byte gUnknown_3005B60 +_08037D1C: .4byte gUnknown_202207C +_08037D20: .4byte gUnknown_20226A0 +_08037D24: + cmp r0, #2 + beq _08037D3E + cmp r0, #3 + beq _08037D4E + b _08037D5C +_08037D2E: + ldrh r0, [r5] + adds r1, r7, #0 + ands r1, r0 + b _08037D46 +_08037D36: + ldrh r0, [r5] + adds r1, r7, #0 + ands r1, r0 + b _08037D56 +_08037D3E: + ldrh r0, [r5] + adds r1, r7, #0 + ands r1, r0 + lsls r1, r1, #6 +_08037D46: + ldrh r0, [r4, #0xe] + orrs r1, r0 + strh r1, [r4, #0xe] + b _08037D5C +_08037D4E: + ldrh r0, [r5] + adds r1, r7, #0 + ands r1, r0 + lsls r1, r1, #6 +_08037D56: + ldrh r0, [r4, #0x10] + orrs r1, r0 + strh r1, [r4, #0x10] +_08037D5C: + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r5, r0 + adds r2, #0x1c + subs r6, #1 + cmp r6, #0 + bge _08037CF4 + bl sub_08067710 + ldr r1, _08037D94 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08037D76: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037D82 + b _080380D4 +_08037D82: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08037D98 + movs r2, #0xc8 + bl sub_0800A070 + b _08038082 + .align 2, 0 +_08037D94: .4byte gUnknown_2023FD6 +_08037D98: .4byte gUnknown_2024190 +_08037D9C: + bl sub_0800A114 + movs r1, #0xf + ands r1, r0 + cmp r1, #0xf + beq _08037DAA + b _080380D4 +_08037DAA: + bl sub_0800A178 + movs r6, #0 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + mov r8, r0 + ldr r4, _08037DD4 + movs r5, #0 +_08037DBC: + cmp r6, r7 + bne _08037DF0 + ldr r0, _08037DD8 + adds r0, r5, r0 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037DDC + cmp r0, #1 + bge _08037DE8 + cmp r0, #0 + beq _08037DE0 + b _08037E7A + .align 2, 0 +_08037DD4: .4byte gUnknown_202207C +_08037DD8: .4byte gUnknown_20226A0 +_08037DDC: + cmp r0, #3 + bne _08037E7A +_08037DE0: + ldr r0, _08037DE4 + b _08037E60 + .align 2, 0 +_08037DE4: .4byte gUnknown_2024190 +_08037DE8: + ldr r0, _08037DEC + b _08037E60 + .align 2, 0 +_08037DEC: .4byte gUnknown_20242BC +_08037DF0: + ldr r2, _08037E10 + adds r0, r5, r2 + ldrh r1, [r0, #0x18] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08037E14 + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037E22 + b _08037E48 + .align 2, 0 +_08037E10: .4byte gUnknown_20226A0 +_08037E14: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037E48 +_08037E22: + adds r0, r5, r2 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037E34 + cmp r0, #1 + bge _08037E40 + cmp r0, #0 + beq _08037E38 + b _08037E7A +_08037E34: + cmp r0, #3 + bne _08037E7A +_08037E38: + ldr r0, _08037E3C + b _08037E60 + .align 2, 0 +_08037E3C: .4byte gUnknown_2024190 +_08037E40: + ldr r0, _08037E44 + b _08037E60 + .align 2, 0 +_08037E44: .4byte gUnknown_20242BC +_08037E48: + adds r0, r5, r2 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037E5A + cmp r0, #1 + bge _08037E70 + cmp r0, #0 + beq _08037E5E + b _08037E7A +_08037E5A: + cmp r0, #3 + bne _08037E7A +_08037E5E: + ldr r0, _08037E6C +_08037E60: + adds r1, r4, #0 + movs r2, #0xc8 + bl memcpy + b _08037E7A + .align 2, 0 +_08037E6C: .4byte gUnknown_20243E8 +_08037E70: + ldr r0, _08037E8C + adds r1, r4, #0 + movs r2, #0xc8 + bl memcpy +_08037E7A: + movs r2, #0x80 + lsls r2, r2, #1 + adds r4, r4, r2 + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _08037DBC + b _08038082 + .align 2, 0 +_08037E8C: .4byte gUnknown_2024514 +_08037E90: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037E9C + b _080380D4 +_08037E9C: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08037EB0 + movs r2, #0x64 + bl sub_0800A070 + b _08038082 + .align 2, 0 +_08037EB0: .4byte gUnknown_2024258 +_08037EB4: + bl sub_0800A114 + movs r1, #0xf + ands r1, r0 + cmp r1, #0xf + beq _08037EC2 + b _080380D4 +_08037EC2: + bl sub_0800A178 + movs r6, #0 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + mov r8, r0 + ldr r4, _08037EEC + movs r5, #0 +_08037ED4: + cmp r6, r7 + bne _08037F08 + ldr r0, _08037EF0 + adds r0, r5, r0 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037EF4 + cmp r0, #1 + bge _08037F00 + cmp r0, #0 + beq _08037EF8 + b _08037F92 + .align 2, 0 +_08037EEC: .4byte gUnknown_202207C +_08037EF0: .4byte gUnknown_20226A0 +_08037EF4: + cmp r0, #3 + bne _08037F92 +_08037EF8: + ldr r0, _08037EFC + b _08037F78 + .align 2, 0 +_08037EFC: .4byte gUnknown_2024258 +_08037F00: + ldr r0, _08037F04 + b _08037F78 + .align 2, 0 +_08037F04: .4byte gUnknown_2024384 +_08037F08: + ldr r2, _08037F28 + adds r0, r5, r2 + ldrh r1, [r0, #0x18] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08037F2C + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037F3A + b _08037F60 + .align 2, 0 +_08037F28: .4byte gUnknown_20226A0 +_08037F2C: + mov r1, r8 + adds r0, r1, r2 + ldrh r1, [r0, #0x18] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037F60 +_08037F3A: + adds r0, r5, r2 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037F4C + cmp r0, #1 + bge _08037F58 + cmp r0, #0 + beq _08037F50 + b _08037F92 +_08037F4C: + cmp r0, #3 + bne _08037F92 +_08037F50: + ldr r0, _08037F54 + b _08037F78 + .align 2, 0 +_08037F54: .4byte gUnknown_2024258 +_08037F58: + ldr r0, _08037F5C + b _08037F78 + .align 2, 0 +_08037F5C: .4byte gUnknown_2024384 +_08037F60: + adds r0, r5, r2 + ldrh r0, [r0, #0x18] + cmp r0, #2 + bgt _08037F72 + cmp r0, #1 + bge _08037F88 + cmp r0, #0 + beq _08037F76 + b _08037F92 +_08037F72: + cmp r0, #3 + bne _08037F92 +_08037F76: + ldr r0, _08037F84 +_08037F78: + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy + b _08037F92 + .align 2, 0 +_08037F84: .4byte gUnknown_20244B0 +_08037F88: + ldr r0, _08037FA4 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy +_08037F92: + movs r2, #0x80 + lsls r2, r2, #1 + adds r4, r4, r2 + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _08037ED4 + b _08038082 + .align 2, 0 +_08037FA4: .4byte gUnknown_20245DC +_08037FA8: + bl sub_08032600 + bl sub_08184D04 + ldr r3, _08037FF0 + movs r0, #0 + strb r0, [r3, #1] + strb r0, [r3, #2] + ldr r0, _08037FF4 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08038002 + movs r6, #0 + ldr r0, _08037FF8 + ldrb r1, [r0] + adds r4, r3, #0 + adds r2, r0, #0 + cmp r1, #3 + bne _08037FE6 + movs r3, #0xff +_08037FD4: + adds r2, #0x1c + adds r6, #1 + cmp r6, #3 + bgt _08037FE6 + ldrh r1, [r2] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #3 + beq _08037FD4 +_08037FE6: + cmp r6, #4 + bne _08037FFC + movs r0, #8 + strb r0, [r4] + b _080380D4 + .align 2, 0 +_08037FF0: .4byte gUnknown_2023FD6 +_08037FF4: .4byte gUnknown_2022C90 +_08037FF8: .4byte gUnknown_20226A0 +_08037FFC: + movs r0, #0xa + strb r0, [r4] + b _080380D4 +_08038002: + movs r0, #0xa + strb r0, [r3] + b _080380D4 +_08038008: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080380D4 + ldr r0, _0803803C + ldr r4, [r0] + movs r0, #0xc0 + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, _08038040 + ldr r0, [r0] + str r0, [r4] + ldr r0, _08038044 + ldr r0, [r0] + str r0, [r4, #4] + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + movs r2, #8 + bl sub_0800A070 + b _08038082 + .align 2, 0 +_0803803C: .4byte gUnknown_2024140 +_08038040: .4byte gUnknown_2022C90 +_08038044: .4byte gUnknown_203B9F8 +_08038048: + bl sub_0800A114 + movs r1, #0xf + ands r1, r0 + cmp r1, #0xf + bne _080380D4 + bl sub_0800A178 + movs r2, #0 + b _08038062 +_0803805C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_08038062: + cmp r2, #3 + bhi _08038082 + ldr r4, _0803808C + lsls r3, r2, #8 + adds r0, r3, r4 + ldrh r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _0803805C + adds r1, r4, #4 + adds r1, r3, r1 + ldr r0, _08038090 + movs r2, #4 + bl memcpy +_08038082: + ldr r1, _08038094 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080380D4 + .align 2, 0 +_0803808C: .4byte gUnknown_202207C +_08038090: .4byte gUnknown_203B9F8 +_08038094: .4byte gUnknown_2023FD6 +_08038098: + ldr r0, _080380E0 + adds r1, r0, #1 + bl sub_0805DDF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080380D4 + ldr r2, _080380E4 + ldr r1, _080380E8 + ldr r0, [r1] + str r0, [r2] + ldr r0, _080380EC + str r0, [r1] + ldr r0, _080380F0 + bl sub_08000540 + ldr r3, _080380F4 + ldr r2, [r3] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080380D4 + ldr r0, _080380F8 + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + strh r1, [r0] + movs r0, #0x20 + orrs r2, r0 + str r2, [r3] +_080380D4: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080380E0: .4byte gUnknown_2023FD7 +_080380E4: .4byte gUnknown_3005A60 +_080380E8: .4byte gUnknown_3002360 +_080380EC: .4byte sub_08039B34 +_080380F0: .4byte sub_080380FC +_080380F4: .4byte gUnknown_2022C90 +_080380F8: .4byte gUnknown_203886A + thumb_func_end sub_08037B44 + + thumb_func_start sub_080380FC +sub_080380FC: @ 0x080380FC + push {lr} + sub sp, #4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + ldr r0, _08038164 + ldrh r1, [r0, #0x2c] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0803815E + ldr r0, _08038168 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0803815E + bl sub_081861A8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803815E + ldr r2, _0803816C + ldr r1, _08038170 + movs r0, #5 + strb r0, [r1] + movs r0, #5 + strh r0, [r2] + bl sub_080A1898 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08038174 + bl sub_08000540 +_0803815E: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08038164: .4byte gUnknown_3002360 +_08038168: .4byte gUnknown_2022C90 +_0803816C: .4byte gUnknown_2037290 +_08038170: .4byte gUnknown_2023FDE +_08038174: .4byte sub_080381C0 + thumb_func_end sub_080380FC + + thumb_func_start sub_08038178 +sub_08038178: @ 0x08038178 + push {lr} + ldr r1, _080381B0 + ldr r0, _080381B4 + ldr r0, [r0] + str r0, [r1] + ldr r2, _080381B8 + movs r0, #3 + strb r0, [r2, #0x15] + ldr r0, _080381BC + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bl sub_08067710 + movs r0, #0x5a + bl m4aSongNumStop + bl sub_0805ECB0 + bl sub_0805CD74 + bl sub_08056C38 + pop {r0} + bx r0 + .align 2, 0 +_080381B0: .4byte gUnknown_3002360 +_080381B4: .4byte gUnknown_3005A60 +_080381B8: .4byte gUnknown_20397C8 +_080381BC: .4byte 0x00000439 + thumb_func_end sub_08038178 + + thumb_func_start sub_080381C0 +sub_080381C0: @ 0x080381C0 + push {lr} + bl sub_080A12E4 + ldr r0, _080381F4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080381EE + ldr r0, _080381F8 + bl m4aMPlayStop + ldr r0, _080381FC + bl m4aMPlayStop + bl sub_08038178 + bl sub_080034D4 + ldr r0, _08038200 + ldr r0, [r0, #8] + bl sub_08000540 +_080381EE: + pop {r0} + bx r0 + .align 2, 0 +_080381F4: .4byte gUnknown_2037C74 +_080381F8: .4byte gUnknown_3007510 +_080381FC: .4byte gUnknown_3007550 +_08038200: .4byte gUnknown_3002360 + thumb_func_end sub_080381C0 + + thumb_func_start sub_08038204 +sub_08038204: @ 0x08038204 + movs r1, #0 + strh r1, [r0, #0x2e] + ldr r1, _08038210 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08038210: .4byte sub_08038214 + thumb_func_end sub_08038204 + + thumb_func_start sub_08038214 +sub_08038214: @ 0x08038214 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r5, _0803822C + movs r0, #0x2e + ldrsh r1, [r3, r0] + cmp r1, #1 + beq _08038248 + cmp r1, #1 + bgt _08038230 + cmp r1, #0 + beq _08038236 + b _080382B8 + .align 2, 0 +_0803822C: .4byte gUnknown_201C000 +_08038230: + cmp r1, #2 + beq _080382A4 + b _080382B8 +_08038236: + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + strh r1, [r3, #0x30] + ldr r0, _080382A0 + strh r0, [r3, #0x32] + strh r1, [r3, #0x34] + movs r0, #1 + strh r0, [r3, #0x36] +_08038248: + ldrh r0, [r3, #0x36] + subs r0, #1 + strh r0, [r3, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080382B8 + movs r0, #2 + strh r0, [r3, #0x36] + movs r4, #0x30 + ldrsh r2, [r3, r4] + movs r0, #0x34 + ldrsh r1, [r3, r0] + lsls r1, r1, #5 + adds r2, r2, r1 + movs r4, #0x32 + ldrsh r0, [r3, r4] + subs r0, r0, r1 + movs r4, #0x3d + lsls r0, r0, #1 + adds r0, r0, r5 + lsls r2, r2, #1 + adds r2, r2, r5 + movs r1, #0x1c +_08038276: + strh r4, [r2] + strh r4, [r0] + adds r0, #4 + adds r2, #4 + subs r1, #2 + cmp r1, #0 + bge _08038276 + ldrh r0, [r3, #0x34] + adds r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _080382B8 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + movs r0, #0x20 + strh r0, [r3, #0x30] + b _080382B8 + .align 2, 0 +_080382A0: .4byte 0x00000281 +_080382A4: + ldrh r0, [r3, #0x30] + subs r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _080382B8 + ldr r0, _080382C0 + bl sub_08000540 +_080382B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080382C0: .4byte sub_080365B4 + thumb_func_end sub_08038214 + + thumb_func_start sub_080382C4 +sub_080382C4: @ 0x080382C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + str r0, [sp, #0x10] + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0 + mov sb, r0 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r3, r0 + bne _080382EA + movs r0, #0 + b _08038696 +_080382EA: + ldr r4, _08038328 + ldr r0, [r4] + ldr r1, _0803832C + ands r0, r1 + lsls r3, r3, #5 + str r3, [sp, #0x20] + cmp r0, #8 + beq _080382FC + b _0803868E +_080382FC: + cmp r2, #1 + bne _08038304 + bl sub_08067710 +_08038304: + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08038334 + ldr r0, _08038330 + ldr r1, [sp, #0x20] + adds r2, r1, r0 + ldrb r1, [r2, #0x18] + movs r3, #3 + str r3, [sp, #0x18] + adds r4, r0, #0 + cmp r1, #3 + bhi _08038340 + adds r2, r1, #0 + str r2, [sp, #0x18] + b _08038340 + .align 2, 0 +_08038328: .4byte gUnknown_2022C90 +_0803832C: .4byte 0x043F0908 +_08038330: .4byte gUnknown_82E383C +_08038334: + ldr r1, _0803835C + ldr r2, [sp, #0x20] + adds r0, r2, r1 + ldrb r0, [r0, #0x18] + str r0, [sp, #0x18] + adds r4, r1, #0 +_08038340: + movs r3, #0 + str r3, [sp, #0x14] + ldr r0, [sp, #0x18] + cmp r3, r0 + blt _0803834C + b _0803867E +_0803834C: + ldr r2, [sp, #0x20] + adds r1, r2, r4 + ldrb r0, [r1, #0x12] + cmp r0, #1 + bne _08038360 + movs r3, #0x80 + mov sl, r3 + b _08038372 + .align 2, 0 +_0803835C: .4byte gUnknown_82E383C +_08038360: + ldrb r1, [r1, #2] + movs r0, #0x80 + ands r0, r1 + movs r1, #0x88 + mov sl, r1 + cmp r0, #0 + beq _08038372 + movs r2, #0x78 + mov sl, r2 +_08038372: + movs r6, #0 + ldr r2, [sp, #0x20] + adds r1, r4, #4 + adds r0, r2, r1 + ldrb r0, [r0] + ldr r3, [sp, #0x14] + adds r3, #1 + str r3, [sp, #0x1c] + cmp r0, #0xff + beq _0803839E + adds r3, r1, #0 +_08038388: + adds r1, r2, #0 + adds r0, r6, r2 + adds r0, r0, r3 + ldrb r0, [r0] + add sb, r0 + adds r6, #1 + adds r1, r6, r1 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xff + bne _08038388 +_0803839E: + ldr r1, [sp, #0x20] + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + beq _0803844C + cmp r0, #1 + bgt _080383B2 + cmp r0, #0 + beq _080383C0 + b _08038670 +_080383B2: + cmp r0, #2 + bne _080383B8 + b _08038510 +_080383B8: + cmp r0, #3 + bne _080383BE + b _080385A8 +_080383BE: + b _08038670 +_080383C0: + adds r0, r4, #0 + adds r0, #0x1c + ldr r2, [sp, #0x20] + adds r0, r2, r0 + ldr r4, [r0] + movs r6, #0 + ldr r3, [sp, #0x14] + lsls r2, r3, #3 + adds r0, r2, r4 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08038448 + adds r0, r0, r1 + ldrb r0, [r0] + adds r5, r2, #0 + cmp r0, #0xff + beq _08038406 + adds r3, r1, #0 +_080383E8: + adds r0, r2, r4 + ldrh r0, [r0, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r0, r0, r3 + ldrb r0, [r0] + add sb, r0 + adds r6, #1 + adds r1, r6, r1 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xff + bne _080383E8 +_08038406: + mov r2, sb + lsls r0, r2, #8 + add sl, r0 + adds r4, r5, r4 + ldrh r1, [r4] + lsls r0, r1, #5 + subs r0, r0, r1 + movs r1, #0xff + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, [sp, #0x14] + movs r1, #0x64 + adds r0, r3, #0 + muls r0, r1, r0 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldrh r1, [r4, #4] + ldrb r2, [r4, #2] + movs r3, #1 + str r3, [sp] + mov r3, sl + str r3, [sp, #4] + movs r3, #2 + str r3, [sp, #8] + movs r3, #0 + str r3, [sp, #0xc] + adds r3, r6, #0 + bl sub_08067730 + b _08038670 + .align 2, 0 +_08038448: .4byte gUnknown_82EA31C +_0803844C: + adds r0, r4, #0 + adds r0, #0x1c + ldr r1, [sp, #0x20] + adds r0, r1, r0 + ldr r7, [r0] + movs r6, #0 + ldr r3, [sp, #0x14] + lsls r2, r3, #4 + adds r0, r2, r7 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08038508 + adds r0, r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, #0xff + beq _08038492 + adds r3, r1, #0 +_08038474: + adds r0, r2, r7 + ldrh r0, [r0, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r0, r0, r3 + ldrb r0, [r0] + add sb, r0 + adds r6, #1 + adds r1, r6, r1 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xff + bne _08038474 +_08038492: + mov r2, sb + lsls r0, r2, #8 + add sl, r0 + mov r3, r8 + adds r4, r3, r7 + ldrh r1, [r4] + lsls r0, r1, #5 + subs r0, r0, r1 + movs r1, #0xff + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [sp, #0x14] + movs r1, #0x64 + adds r5, r0, #0 + muls r5, r1, r5 + ldr r2, [sp, #0x10] + adds r5, r2, r5 + ldrh r1, [r4, #4] + ldrb r2, [r4, #2] + movs r0, #1 + str r0, [sp] + mov r3, sl + str r3, [sp, #4] + movs r0, #2 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r5, #0 + adds r3, r6, #0 + bl sub_08067730 + movs r6, #0 + mov r0, r8 + adds r0, #6 + adds r4, r7, r0 +_080384DC: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_0806A774 + adds r1, r6, #0 + adds r1, #0x11 + ldrh r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0803850C + adds r2, r2, r0 + adds r0, r5, #0 + bl sub_0806A774 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _080384DC + b _08038670 + .align 2, 0 +_08038508: .4byte gUnknown_82EA31C +_0803850C: .4byte gUnknown_82ED224 +_08038510: + adds r0, r4, #0 + adds r0, #0x1c + ldr r1, [sp, #0x20] + adds r0, r1, r0 + ldr r4, [r0] + movs r6, #0 + ldr r3, [sp, #0x14] + lsls r2, r3, #3 + adds r0, r2, r4 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080385A4 + adds r0, r0, r1 + ldrb r0, [r0] + adds r5, r2, #0 + cmp r0, #0xff + beq _08038556 + adds r3, r1, #0 +_08038538: + adds r0, r2, r4 + ldrh r0, [r0, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r0, r0, r3 + ldrb r0, [r0] + add sb, r0 + adds r6, #1 + adds r1, r6, r1 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xff + bne _08038538 +_08038556: + mov r2, sb + lsls r0, r2, #8 + add sl, r0 + adds r5, r5, r4 + ldrh r1, [r5] + lsls r0, r1, #5 + subs r0, r0, r1 + movs r1, #0xff + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, [sp, #0x14] + movs r0, #0x64 + adds r4, r3, #0 + muls r4, r0, r4 + ldr r1, [sp, #0x10] + adds r4, r1, r4 + ldrh r1, [r5, #4] + ldrb r2, [r5, #2] + movs r0, #1 + str r0, [sp] + mov r3, sl + str r3, [sp, #4] + movs r0, #2 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r4, #0 + adds r3, r6, #0 + bl sub_08067730 + adds r5, #6 + adds r0, r4, #0 + movs r1, #0xc + adds r2, r5, #0 + bl sub_0806A774 + b _08038670 + .align 2, 0 +_080385A4: .4byte gUnknown_82EA31C +_080385A8: + adds r0, r4, #0 + adds r0, #0x1c + ldr r1, [sp, #0x20] + adds r0, r1, r0 + ldr r7, [r0] + movs r6, #0 + ldr r3, [sp, #0x14] + lsls r2, r3, #4 + adds r0, r2, r7 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080386A8 + adds r0, r0, r1 + ldrb r0, [r0] + mov r8, r2 + cmp r0, #0xff + beq _080385EE + adds r3, r1, #0 +_080385D0: + adds r0, r2, r7 + ldrh r0, [r0, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r0, r6, r1 + adds r0, r0, r3 + ldrb r0, [r0] + add sb, r0 + adds r6, #1 + adds r1, r6, r1 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xff + bne _080385D0 +_080385EE: + mov r2, sb + lsls r0, r2, #8 + add sl, r0 + mov r3, r8 + adds r5, r3, r7 + ldrh r1, [r5] + lsls r0, r1, #5 + subs r0, r0, r1 + movs r1, #0xff + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [sp, #0x14] + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r2, [sp, #0x10] + adds r4, r2, r4 + ldrh r1, [r5, #4] + ldrb r2, [r5, #2] + movs r0, #1 + str r0, [sp] + mov r3, sl + str r3, [sp, #4] + movs r0, #2 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r4, #0 + adds r3, r6, #0 + bl sub_08067730 + adds r5, #6 + adds r0, r4, #0 + movs r1, #0xc + adds r2, r5, #0 + bl sub_0806A774 + movs r6, #0 + adds r5, r4, #0 + mov r0, r8 + adds r0, #8 + adds r4, r7, r0 +_08038646: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_0806A774 + adds r1, r6, #0 + adds r1, #0x11 + ldrh r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080386AC + adds r2, r2, r0 + adds r0, r5, #0 + bl sub_0806A774 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08038646 +_08038670: + ldr r0, [sp, #0x1c] + str r0, [sp, #0x14] + ldr r4, _080386B0 + ldr r1, [sp, #0x18] + cmp r0, r1 + bge _0803867E + b _0803834C +_0803867E: + ldr r2, _080386B4 + ldr r0, _080386B0 + ldr r3, [sp, #0x20] + adds r0, r3, r0 + ldrb r1, [r0, #0x12] + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] +_0803868E: + ldr r0, _080386B0 + ldr r1, [sp, #0x20] + adds r0, r1, r0 + ldrb r0, [r0, #0x18] +_08038696: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080386A8: .4byte gUnknown_82EA31C +_080386AC: .4byte gUnknown_82ED224 +_080386B0: .4byte gUnknown_82E383C +_080386B4: .4byte gUnknown_2022C90 + thumb_func_end sub_080382C4 + + thumb_func_start sub_080386B8 +sub_080386B8: @ 0x080386B8 + push {lr} + ldr r0, _080386D8 + ldrh r0, [r0] + subs r0, #0x6f + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x30 + bhi _080386D2 + movs r1, #0x98 + lsls r1, r1, #8 + movs r0, #8 + bl sub_08001144 +_080386D2: + pop {r0} + bx r0 + .align 2, 0 +_080386D8: .4byte 0x04000006 + thumb_func_end sub_080386B8 + + thumb_func_start sub_080386DC +sub_080386DC: @ 0x080386DC + push {lr} + ldr r0, _0803877C + ldr r0, [r0] + ldr r1, _08038780 + ands r0, r1 + cmp r0, #0 + bne _080386EE + bl sub_0806F050 +_080386EE: + ldr r0, _08038784 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _08038788 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _0803878C + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _08038790 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _08038794 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _08038798 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, _0803879C + ldrh r1, [r0] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _080387A0 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 + ldr r0, _080387A4 + ldrh r1, [r0] + movs r0, #0x40 + bl sub_08001144 + ldr r0, _080387A8 + ldrh r1, [r0] + movs r0, #0x44 + bl sub_08001144 + ldr r0, _080387AC + ldrh r1, [r0] + movs r0, #0x42 + bl sub_08001144 + ldr r0, _080387B0 + ldrh r1, [r0] + movs r0, #0x46 + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_0803877C: .4byte gUnknown_2022C90 +_08038780: .4byte 0x013F0102 +_08038784: .4byte gUnknown_2022AC8 +_08038788: .4byte gUnknown_2022ACA +_0803878C: .4byte gUnknown_2022ACC +_08038790: .4byte gUnknown_2022ACE +_08038794: .4byte gUnknown_2022AD0 +_08038798: .4byte gUnknown_2022AD2 +_0803879C: .4byte gUnknown_2022AD4 +_080387A0: .4byte gUnknown_2022AD6 +_080387A4: .4byte gUnknown_2022AD8 +_080387A8: .4byte gUnknown_2022ADA +_080387AC: .4byte gUnknown_2022ADC +_080387B0: .4byte gUnknown_2022ADE + thumb_func_end sub_080386DC + + thumb_func_start sub_080387B4 +sub_080387B4: @ 0x080387B4 + bx lr + .align 2, 0 + thumb_func_end sub_080387B4 + + thumb_func_start sub_080387B8 +sub_080387B8: @ 0x080387B8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080387D8 + movs r1, #0x32 + ldrsh r0, [r5, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + lsrs r0, r0, #8 + ldrh r1, [r5, #0x30] + adds r0, r0, r1 + strh r0, [r5, #0x20] + b _080387EA +_080387D8: + movs r1, #0x32 + ldrsh r0, [r5, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + asrs r0, r0, #8 + ldrh r1, [r5, #0x30] + subs r1, r1, r0 + strh r1, [r5, #0x20] +_080387EA: + movs r1, #0xc0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r5, #0x32] + adds r0, 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 _0803881E + ldr r4, _08038824 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + adds r0, r5, #0 + bl sub_0800730C + adds r0, r5, #0 + bl sub_08006E00 +_0803881E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08038824: .4byte 0x00002710 + thumb_func_end sub_080387B8 + + thumb_func_start sub_08038828 +sub_08038828: @ 0x08038828 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08007F70 + ldr r0, _08038844 + str r0, [r4, #0x1c] + movs r0, #0x68 + bl sub_080A306C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038844: .4byte sub_080387B8 + thumb_func_end sub_08038828 + + thumb_func_start sub_08038848 +sub_08038848: @ 0x08038848 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + ldr r0, _08038890 + adds r0, #0x25 + ldrb r2, [r0] + ldr r0, _08038894 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080388B8 + ldr r1, _08038898 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x18] + cmp r0, #1 + beq _080388A4 + cmp r0, #1 + bgt _0803889C + cmp r0, #0 + beq _080388B8 + b _080388C0 + .align 2, 0 +_08038890: .4byte gUnknown_2024118 +_08038894: .4byte gUnknown_2022C90 +_08038898: .4byte gUnknown_20226A0 +_0803889C: + cmp r0, #2 + beq _080388B8 + cmp r0, #3 + bne _080388C0 +_080388A4: + ldr r0, _080388B0 + str r0, [sp, #4] + ldr r1, _080388B4 + str r1, [sp, #8] + b _080388C0 + .align 2, 0 +_080388B0: .4byte gUnknown_20243E8 +_080388B4: .4byte gUnknown_2024190 +_080388B8: + ldr r2, _08038A0C + str r2, [sp, #4] + ldr r3, _08038A10 + str r3, [sp, #8] +_080388C0: + movs r7, #0 + movs r0, #0 + mov r8, r0 + ldr r1, [sp] + lsls r1, r1, #2 + str r1, [sp, #0xc] + movs r2, #0xce + lsls r2, r2, #1 + mov sl, r2 + mov sb, r0 +_080388D4: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + ldr r3, [sp, #4] + adds r4, r3, r4 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + adds r1, r0, #0 + cmp r5, #0 + beq _08038944 + cmp r5, sl + beq _08038918 + cmp r6, #0 + beq _08038918 + cmp r1, #0 + bne _08038918 + movs r0, #1 + mov r2, sb + lsls r0, r2 + orrs r7, r0 +_08038918: + cmp r5, #0 + beq _08038944 + cmp r6, #0 + beq _08038930 + cmp r5, sl + beq _08038928 + cmp r1, #0 + beq _08038930 +_08038928: + movs r0, #2 + mov r3, sb + lsls r0, r3 + orrs r7, r0 +_08038930: + cmp r5, #0 + beq _08038944 + cmp r5, sl + beq _08038944 + cmp r6, #0 + bne _08038944 + movs r0, #3 + mov r1, sb + lsls r0, r1 + orrs r7, r0 +_08038944: + movs r2, #2 + add sb, r2 + movs r3, #1 + add r8, r3 + mov r0, r8 + cmp r0, #5 + ble _080388D4 + ldr r1, _08038A14 + ldr r2, [sp, #0xc] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r7, [r0, #0xe] + movs r7, #0 + movs r0, #0 + mov r8, r0 + movs r1, #0xce + lsls r1, r1, #1 + mov sl, r1 + mov sb, r0 +_0803896E: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + ldr r2, [sp, #8] + adds r4, r2, r4 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + adds r1, r0, #0 + cmp r5, #0 + beq _080389DE + cmp r5, sl + beq _080389B2 + cmp r6, #0 + beq _080389B2 + cmp r1, #0 + bne _080389B2 + movs r0, #1 + mov r3, sb + lsls r0, r3 + orrs r7, r0 +_080389B2: + cmp r5, #0 + beq _080389DE + cmp r6, #0 + beq _080389CA + cmp r5, sl + beq _080389C2 + cmp r1, #0 + beq _080389CA +_080389C2: + movs r0, #2 + mov r1, sb + lsls r0, r1 + orrs r7, r0 +_080389CA: + cmp r5, #0 + beq _080389DE + cmp r5, sl + beq _080389DE + cmp r6, #0 + bne _080389DE + movs r0, #3 + mov r2, sb + lsls r0, r2 + orrs r7, r0 +_080389DE: + movs r3, #2 + add sb, r3 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #5 + ble _0803896E + ldr r1, _08038A14 + ldr r2, [sp, #0xc] + ldr r3, [sp] + adds r0, r2, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r7, [r0, #0x10] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08038A0C: .4byte gUnknown_2024190 +_08038A10: .4byte gUnknown_20243E8 +_08038A14: .4byte gUnknown_3005B60 + thumb_func_end sub_08038848 + + thumb_func_start sub_08038A18 +sub_08038A18: @ 0x08038A18 + push {r4, lr} + sub sp, #4 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + ldr r0, _08038A54 + ldr r1, [r0] + movs r2, #0x21 + rsbs r2, r2, #0 + ands r1, r2 + str r1, [r0] + ldr r0, _08038A58 + ands r0, r1 + cmp r0, #0 + beq _08038A60 + ldr r0, _08038A5C + ldr r0, [r0, #8] + bl sub_08000540 + bl sub_08056C38 + bl sub_0805CD74 + bl sub_0805ECB0 + b _08038B6A + .align 2, 0 +_08038A54: .4byte gUnknown_2022C90 +_08038A58: .4byte 0x003F0100 +_08038A5C: .4byte gUnknown_3002360 +_08038A60: + str r0, [sp] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _08038B74 + mov r0, sp + bl CpuSet + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + ldr r4, _08038B78 + movs r0, #0x44 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + ldr r1, _08038B7C + movs r0, #0xf0 + strh r0, [r1] + ldr r0, _08038B80 + strh r4, [r0] + bl sub_080B9750 + ldr r0, _08038B84 + movs r3, #0xf0 + movs r1, #0xf0 + lsls r1, r1, #3 + adds r2, r0, r1 + movs r1, #0x4f +_08038AB2: + strh r3, [r0] + strh r3, [r2] + adds r2, #2 + adds r0, #2 + subs r1, #1 + cmp r1, #0 + bge _08038AB2 + movs r1, #0x50 + ldr r0, _08038B84 + ldr r3, _08038B88 + movs r4, #0x82 + lsls r4, r4, #4 + adds r2, r0, r4 + adds r0, #0xa0 +_08038ACE: + strh r3, [r0] + strh r3, [r2] + adds r2, #2 + adds r0, #2 + adds r1, #1 + cmp r1, #0x9f + ble _08038ACE + bl sub_080A133C + ldr r0, _08038B8C + movs r4, #0 + strh r4, [r0] + ldr r0, _08038B90 + strh r4, [r0] + ldr r0, _08038B94 + strh r4, [r0] + ldr r0, _08038B98 + strh r4, [r0] + ldr r0, _08038B9C + strh r4, [r0] + ldr r0, _08038BA0 + strh r4, [r0] + ldr r0, _08038BA4 + strh r4, [r0] + ldr r0, _08038BA8 + strh r4, [r0] + bl sub_08035528 + ldr r0, _08038BAC + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + bl sub_08035564 + bl sub_0800668C + bl sub_080A8818 + bl sub_08035FB8 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + bl sub_08008424 + ldr r1, _08038BB0 + movs r0, #4 + strb r0, [r1] + ldr r0, _08038BB4 + bl sub_080006F0 + ldr r0, _08038BB8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08038BBC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0x87 + lsls r2, r2, #1 + strh r2, [r1, #0xa] + movs r2, #0x5a + strh r2, [r1, #0xc] + movs r2, #1 + strh r2, [r1, #0x12] + bl sub_08038848 + ldr r0, _08038BC0 + bl sub_08000540 + ldr r0, _08038BC4 + strb r4, [r0] +_08038B6A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038B74: .4byte 0x05006000 +_08038B78: .4byte 0x00005051 +_08038B7C: .4byte gUnknown_2022AD8 +_08038B80: .4byte gUnknown_2022ADA +_08038B84: .4byte gUnknown_20388C8 +_08038B88: .4byte 0x0000FF10 +_08038B8C: .4byte gUnknown_2022AC8 +_08038B90: .4byte gUnknown_2022ACA +_08038B94: .4byte gUnknown_2022ACC +_08038B98: .4byte gUnknown_2022ACE +_08038B9C: .4byte gUnknown_2022AD0 +_08038BA0: .4byte gUnknown_2022AD2 +_08038BA4: .4byte gUnknown_2022AD4 +_08038BA8: .4byte gUnknown_2022AD6 +_08038BAC: .4byte gUnknown_8C004EC +_08038BB0: .4byte gUnknown_30030BC +_08038BB4: .4byte sub_080386DC +_08038BB8: .4byte sub_08035BC8 +_08038BBC: .4byte gUnknown_3005B60 +_08038BC0: .4byte sub_08038BC8 +_08038BC4: .4byte gUnknown_2023FD6 + thumb_func_end sub_08038A18 + + thumb_func_start sub_08038BC8 +sub_08038BC8: @ 0x08038BC8 + push {lr} + bl sub_08038BE8 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08038BC8 + + thumb_func_start sub_08038BE8 +sub_08038BE8: @ 0x08038BE8 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r0, _08038C04 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #9 + bls _08038BF8 + b _08038E7A +_08038BF8: + lsls r0, r1, #2 + ldr r1, _08038C08 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08038C04: .4byte gUnknown_2023FD6 +_08038C08: .4byte _08038C0C +_08038C0C: @ jump table + .4byte _08038C34 @ case 0 + .4byte _08038C54 @ case 1 + .4byte _08038C76 @ case 2 + .4byte _08038D7C @ case 3 + .4byte _08038DB4 @ case 4 + .4byte _08038DCC @ case 5 + .4byte _08038DE0 @ case 6 + .4byte _08038E00 @ case 7 + .4byte _08038E1A @ case 8 + .4byte _08038E38 @ case 9 +_08038C34: + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r1, _08038C50 + movs r0, #0xff + strb r0, [r1, #1] + b _08038E28 + .align 2, 0 +_08038C50: .4byte gUnknown_2023FD6 +_08038C54: + ldrb r0, [r4, #1] + subs r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08038C64 + b _08038E7A +_08038C64: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08038DC0 +_08038C76: + ldr r0, _08038D04 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08038C84 + b _08038E7A +_08038C84: + bl sub_08185D04 + ldr r2, _08038D08 + ldr r1, _08038D0C + adds r2, r2, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08038D10 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + movs r3, #2 + cmp r0, #0 + beq _08038CB0 + movs r3, #4 +_08038CB0: + movs r4, #0 + ldr r6, _08038D14 + cmp r4, r3 + bge _08038CD6 + ldr r1, _08038D18 + ldrb r0, [r1] + cmp r0, #3 + bne _08038CD6 + movs r5, #0xff + adds r2, r1, #0 +_08038CC4: + adds r2, #0x1c + adds r4, #1 + cmp r4, r3 + bge _08038CD6 + ldrh r1, [r2] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #3 + beq _08038CC4 +_08038CD6: + ldr r0, [r6] + ldr r1, _08038D1C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08038D60 + cmp r4, r3 + bne _08038D60 + ldr r0, _08038D20 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08038D28 + bl sub_080034D4 + ldr r0, _08038D24 + bl sub_08000540 + b _08038E7A + .align 2, 0 +_08038D04: .4byte gUnknown_2037C74 +_08038D08: .4byte gUnknown_3002360 +_08038D0C: .4byte 0x00000439 +_08038D10: .4byte gUnknown_2022C90 +_08038D14: .4byte gUnknown_3005AF0 +_08038D18: .4byte gUnknown_20226A0 +_08038D1C: .4byte 0x00000CA9 +_08038D20: .4byte 0x000008D2 +_08038D24: .4byte sub_08038F5C +_08038D28: + ldr r2, _08038D3C + ldr r1, _08038D40 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08038D44 + ldr r0, [r2, #8] + b _08038D64 + .align 2, 0 +_08038D3C: .4byte gUnknown_3002360 +_08038D40: .4byte 0x00000439 +_08038D44: + ldr r0, _08038D58 + ldrb r0, [r0] + cmp r0, #0 + bne _08038E26 + ldr r0, _08038D5C + movs r1, #5 + bl sub_080A8878 + b _08038E26 + .align 2, 0 +_08038D58: .4byte gUnknown_30031C4 +_08038D5C: .4byte sub_080B3250 +_08038D60: + ldr r0, _08038D78 + ldr r0, [r0, #8] +_08038D64: + bl sub_08000540 + bl sub_08056C38 + bl sub_0805CD74 + bl sub_0805ECB0 + b _08038E7A + .align 2, 0 +_08038D78: .4byte gUnknown_3002360 +_08038D7C: + movs r0, #0 + str r0, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _08038DB0 + add r0, sp, #4 + bl CpuSet + movs r4, #0 +_08038D8E: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08036224 + adds r4, #1 + cmp r4, #1 + ble _08038D8E + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _08038E26 + .align 2, 0 +_08038DB0: .4byte 0x05006000 +_08038DB4: + ldr r0, _08038DC8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08038E7A +_08038DC0: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08038E7A + .align 2, 0 +_08038DC8: .4byte gUnknown_2037C74 +_08038DCC: + ldr r0, _08038DDC + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038E7A + b _08038E26 + .align 2, 0 +_08038DDC: .4byte sub_080B3250 +_08038DE0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08038E7A + bl sub_0800A8D4 + ldr r0, _08038DFC + movs r1, #0 + bl sub_0814FA04 + b _08038E26 + .align 2, 0 +_08038DFC: .4byte gUnknown_8226D53 +_08038E00: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08038E7A + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08038E7A + b _08038E26 +_08038E1A: + ldr r0, _08038E30 + ldrb r0, [r0] + cmp r0, #0 + bne _08038E26 + bl sub_0800A7F8 +_08038E26: + ldr r1, _08038E34 +_08038E28: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08038E7A + .align 2, 0 +_08038E30: .4byte gUnknown_300319C +_08038E34: .4byte gUnknown_2023FD6 +_08038E38: + ldr r2, _08038E84 + ldr r1, _08038E88 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + adds r3, r2, #0 + cmp r0, #0 + beq _08038E5A + ldr r0, _08038E8C + ldrb r0, [r0] + cmp r0, #0 + bne _08038E5A + ldr r0, _08038E90 + ldrb r0, [r0] + cmp r0, #1 + beq _08038E7A +_08038E5A: + ldr r0, _08038E88 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3, #8] + bl sub_08000540 + bl sub_08056C38 + bl sub_0805CD74 + bl sub_0805ECB0 +_08038E7A: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08038E84: .4byte gUnknown_3002360 +_08038E88: .4byte 0x00000439 +_08038E8C: .4byte gUnknown_300319C +_08038E90: .4byte gUnknown_30031C4 + thumb_func_end sub_08038BE8 + + thumb_func_start sub_08038E94 +sub_08038E94: @ 0x08038E94 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + cmp r1, #6 + bhi _08038F54 + lsls r0, r1, #2 + ldr r1, _08038EB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08038EB0: .4byte _08038EB4 +_08038EB4: @ jump table + .4byte _08038ED0 @ case 0 + .4byte _08038EE4 @ case 1 + .4byte _08038EF8 @ case 2 + .4byte _08038F0C @ case 3 + .4byte _08038F20 @ case 4 + .4byte _08038F34 @ case 5 + .4byte _08038F48 @ case 6 +_08038ED0: + ldr r0, _08038EE0 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + b _08038F54 + .align 2, 0 +_08038EE0: .4byte gUnknown_82EB860 +_08038EE4: + ldr r0, _08038EF4 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + b _08038F54 + .align 2, 0 +_08038EF4: .4byte gUnknown_82EB860 +_08038EF8: + ldr r0, _08038F08 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + b _08038F54 + .align 2, 0 +_08038F08: .4byte gUnknown_82EB860 +_08038F0C: + ldr r0, _08038F1C + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1e + b _08038F54 + .align 2, 0 +_08038F1C: .4byte gUnknown_82EB860 +_08038F20: + ldr r0, _08038F30 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1f + b _08038F54 + .align 2, 0 +_08038F30: .4byte gUnknown_82EB860 +_08038F34: + ldr r0, _08038F44 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + b _08038F54 + .align 2, 0 +_08038F44: .4byte gUnknown_82EB860 +_08038F48: + ldr r0, _08038F58 + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] + lsls r0, r0, #8 + lsrs r0, r0, #0x16 +_08038F54: + pop {r1} + bx r1 + .align 2, 0 +_08038F58: .4byte gUnknown_82EB860 + thumb_func_end sub_08038E94 + + thumb_func_start sub_08038F5C +sub_08038F5C: @ 0x08038F5C + push {r4, lr} + sub sp, #8 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r4, #0 + str r4, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _08038FFC + add r0, sp, #4 + bl CpuSet + bl sub_080A133C + ldr r0, _08039000 + strh r4, [r0] + ldr r0, _08039004 + strh r4, [r0] + ldr r0, _08039008 + strh r4, [r0] + ldr r0, _0803900C + strh r4, [r0] + ldr r0, _08039010 + strh r4, [r0] + ldr r0, _08039014 + strh r4, [r0] + ldr r0, _08039018 + strh r4, [r0] + ldr r0, _0803901C + strh r4, [r0] + bl sub_08035528 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + bl sub_08035564 +_08038FB2: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08036224 + adds r4, #1 + cmp r4, #1 + ble _08038FB2 + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + ldr r1, _08039020 + movs r0, #4 + strb r0, [r1] + ldr r0, _08039024 + bl sub_080006F0 + ldr r0, _08039028 + bl sub_08000540 + movs r0, #1 + rsbs r0, r0, #0 + movs r4, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0803902C + strb r4, [r0] + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08038FFC: .4byte 0x05006000 +_08039000: .4byte gUnknown_2022AC8 +_08039004: .4byte gUnknown_2022ACA +_08039008: .4byte gUnknown_2022ACC +_0803900C: .4byte gUnknown_2022ACE +_08039010: .4byte gUnknown_2022AD0 +_08039014: .4byte gUnknown_2022AD2 +_08039018: .4byte gUnknown_2022AD4 +_0803901C: .4byte gUnknown_2022AD6 +_08039020: .4byte gUnknown_30030BC +_08039024: .4byte sub_080386DC +_08039028: .4byte sub_08039030 +_0803902C: .4byte gUnknown_2023FD6 + thumb_func_end sub_08038F5C + + thumb_func_start sub_08039030 +sub_08039030: @ 0x08039030 + push {lr} + bl sub_08039050 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08039030 + + thumb_func_start sub_08039050 +sub_08039050: @ 0x08039050 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _0803906C + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #0xc + bls _08039060 + b _08039412 +_08039060: + lsls r0, r1, #2 + ldr r1, _08039070 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803906C: .4byte gUnknown_2023FD6 +_08039070: .4byte _08039074 +_08039074: @ jump table + .4byte _080390A8 @ case 0 + .4byte _080390C8 @ case 1 + .4byte _08039104 @ case 2 + .4byte _08039124 @ case 3 + .4byte _08039150 @ case 4 + .4byte _0803918C @ case 5 + .4byte _08039230 @ case 6 + .4byte _080393B8 @ case 7 + .4byte _08039280 @ case 8 + .4byte _080392C4 @ case 9 + .4byte _0803932C @ case 10 + .4byte _0803935C @ case 11 + .4byte _080393B8 @ case 12 +_080390A8: + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r1, _080390C4 + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_080390C4: .4byte gUnknown_2023FD6 +_080390C8: + ldr r0, _080390F0 + ldr r1, _080390F4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080390E8 + ldr r0, _080390F8 + ldrb r0, [r0] + cmp r0, #0 + bne _080390E8 + ldr r0, _080390FC + movs r1, #5 + bl sub_080A8878 +_080390E8: + ldr r1, _08039100 + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_080390F0: .4byte gUnknown_3002360 +_080390F4: .4byte 0x00000439 +_080390F8: .4byte gUnknown_30031C4 +_080390FC: .4byte sub_080B3250 +_08039100: .4byte gUnknown_2023FD6 +_08039104: + ldr r0, _0803911C + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08039112 + b _08039412 +_08039112: + ldr r1, _08039120 + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_0803911C: .4byte sub_080B3250 +_08039120: .4byte gUnknown_2023FD6 +_08039124: + ldr r0, _08039144 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08039132 + b _08039412 +_08039132: + ldr r0, _08039148 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0803914C + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_08039144: .4byte gUnknown_2037C74 +_08039148: .4byte gUnknown_85AC0DD +_0803914C: .4byte gUnknown_2023FD6 +_08039150: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _08039160 + b _08039412 +_08039160: + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _08039184 + movs r1, #0xc + bl sub_0814FA04 + ldr r4, _08039188 + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 + b _0803939E + .align 2, 0 +_08039184: .4byte gUnknown_85ABBC9 +_08039188: .4byte gUnknown_2023FD6 +_0803918C: + ldr r0, _080391B0 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080391B4 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _080391A0 + b _08039412 +_080391A0: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #0 + b _080391D2 + .align 2, 0 +_080391B0: .4byte gUnknown_3002360 +_080391B4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080391DA + ldrb r0, [r4, #1] + cmp r0, #0 + beq _080391C4 + b _08039412 +_080391C4: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 +_080391D2: + strb r0, [r4, #1] + bl sub_08056784 + b _08039412 +_080391DA: + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08039214 + movs r0, #5 + bl sub_080A306C + ldr r4, _08039210 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _080391F4 + b _0803939E +_080391F4: + str r5, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + bl sub_08185198 + strb r0, [r4, #1] + movs r0, #0xa + strb r0, [r4] + b _08039412 + .align 2, 0 +_08039210: .4byte gUnknown_2023FD6 +_08039214: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0803921E + b _08039412 +_0803921E: + movs r0, #5 + bl sub_080A306C + ldr r1, _0803922C + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_0803922C: .4byte gUnknown_2023FD6 +_08039230: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0803923E + b _08039412 +_0803923E: + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _08039270 + ldr r1, _08039274 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08039268 + bl sub_0800A8D4 + ldr r0, _08039278 + movs r1, #0 + bl sub_0814FA04 +_08039268: + ldr r1, _0803927C + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_08039270: .4byte gUnknown_3002360 +_08039274: .4byte 0x00000439 +_08039278: .4byte gUnknown_8226D53 +_0803927C: .4byte gUnknown_2023FD6 +_08039280: + ldrb r0, [r4, #1] + subs r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803928E + b _08039412 +_0803928E: + ldr r0, _080392B4 + ldr r1, _080392B8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080392AA + ldr r0, _080392BC + ldrb r0, [r0] + cmp r0, #0 + bne _080392AA + bl sub_0800A7F8 +_080392AA: + ldr r1, _080392C0 + ldrb r0, [r1] + adds r0, #1 + b _08039410 + .align 2, 0 +_080392B4: .4byte gUnknown_3002360 +_080392B8: .4byte 0x00000439 +_080392BC: .4byte gUnknown_300319C +_080392C0: .4byte gUnknown_2023FD6 +_080392C4: + ldr r2, _08039318 + ldr r1, _0803931C + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + adds r3, r2, #0 + cmp r0, #0 + beq _080392E8 + ldr r0, _08039320 + ldrb r0, [r0] + cmp r0, #0 + bne _080392E8 + ldr r0, _08039324 + ldrb r0, [r0] + cmp r0, #1 + bne _080392E8 + b _08039412 +_080392E8: + ldr r0, _0803931C + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _08039328 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08039304 + b _08039412 +_08039304: + ldr r0, [r3, #8] + bl sub_08000540 + bl sub_08056C38 + bl sub_0805CD74 + bl sub_0805ECB0 + b _08039412 + .align 2, 0 +_08039318: .4byte gUnknown_3002360 +_0803931C: .4byte 0x00000439 +_08039320: .4byte gUnknown_300319C +_08039324: .4byte gUnknown_30031C4 +_08039328: .4byte gUnknown_2037C74 +_0803932C: + ldrb r0, [r4, #1] + cmp r0, #1 + bne _08039354 + movs r0, #0x37 + bl sub_080A306C + ldr r0, _0803934C +_0803933A: + bl sub_0814E7A0 + ldr r0, _08039350 + movs r1, #0 + bl sub_0814FA04 + movs r0, #0x80 + strb r0, [r4, #1] + b _0803939E + .align 2, 0 +_0803934C: .4byte gUnknown_85AC0FB +_08039350: .4byte gUnknown_2022AE0 +_08039354: + ldr r0, _08039358 + b _0803933A + .align 2, 0 +_08039358: .4byte gUnknown_822247E +_0803935C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08039412 + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08039412 + ldr r4, _080393A8 + ldrb r0, [r4, #1] + subs r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08039412 + ldr r0, _080393AC + ldr r1, _080393B0 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0803939E + bl sub_0800A8D4 + ldr r0, _080393B4 + movs r1, #0 + bl sub_0814FA04 +_0803939E: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08039412 + .align 2, 0 +_080393A8: .4byte gUnknown_2023FD6 +_080393AC: .4byte gUnknown_3002360 +_080393B0: .4byte 0x00000439 +_080393B4: .4byte gUnknown_8226D53 +_080393B8: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _08039412 + ldr r0, _080393F0 + ldr r1, _080393F4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080393F8 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08039412 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + b _080393FE + .align 2, 0 +_080393F0: .4byte gUnknown_3002360 +_080393F4: .4byte 0x00000439 +_080393F8: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] +_080393FE: + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0803941C + movs r0, #0x20 + strb r0, [r1, #1] + movs r0, #8 +_08039410: + strb r0, [r1] +_08039412: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803941C: .4byte gUnknown_2023FD6 + thumb_func_end sub_08039050 + + thumb_func_start sub_08039420 +sub_08039420: @ 0x08039420 + push {lr} + sub sp, #4 + ldr r1, _08039448 + str r1, [r0, #0x1c] + movs r1, #0 + bl sub_08007ED8 + movs r0, #0x80 + lsls r0, r0, #0xa + ldr r1, _0803944C + str r1, [sp] + movs r1, #0 + movs r2, #0xa + movs r3, #0xa + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08039448: .4byte sub_08039450 +_0803944C: .4byte 0x00002108 + thumb_func_end sub_08039420 + + thumb_func_start sub_08039450 +sub_08039450: @ 0x08039450 + push {lr} + adds r2, r0, #0 + ldr r0, _08039474 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08039470 + ldrh r0, [r2, #0x24] + adds r0, #2 + strh r0, [r2, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08039470 + ldr r0, _08039478 + str r0, [r2, #0x1c] +_08039470: + pop {r0} + bx r0 + .align 2, 0 +_08039474: .4byte gUnknown_20240A0 +_08039478: .4byte sub_0803947C + thumb_func_end sub_08039450 + + thumb_func_start sub_0803947C +sub_0803947C: @ 0x0803947C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080394C4 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08076320 + ldr r1, _080394CC + movs r2, #0x2e + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080723E0 + ldr r0, _080394D0 + str r0, [r4, #0x1c] + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + movs r0, #0x80 + lsls r0, r0, #0xa + ldr r1, _080394D4 + str r1, [sp] + movs r1, #0 + movs r2, #0xa + movs r3, #0 + bl sub_080A139C +_080394C4: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080394CC: .4byte gUnknown_3005AD0 +_080394D0: .4byte sub_080394D8 +_080394D4: .4byte 0x00002108 + thumb_func_end sub_0803947C + + thumb_func_start sub_080394D8 +sub_080394D8: @ 0x080394D8 + push {lr} + adds r2, r0, #0 + ldr r0, _080394F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080394F4 + ldrh r1, [r2, #0x32] + adds r0, r2, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806E778 +_080394F4: + pop {r0} + bx r0 + .align 2, 0 +_080394F8: .4byte gUnknown_2037C74 + thumb_func_end sub_080394D8 + + thumb_func_start sub_080394FC +sub_080394FC: @ 0x080394FC + bx lr + .align 2, 0 + thumb_func_end sub_080394FC + + thumb_func_start sub_08039500 +sub_08039500: @ 0x08039500 + movs r1, #6 + strh r1, [r0, #0x34] + movs r1, #1 + strh r1, [r0, #0x36] + ldr r1, _08039510 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08039510: .4byte sub_08039514 + thumb_func_end sub_08039500 + + thumb_func_start sub_08039514 +sub_08039514: @ 0x08039514 + push {r4, lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x36] + subs r0, #1 + strh r0, [r3, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08039568 + movs r0, #8 + strh r0, [r3, #0x36] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r4, #5 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x34] + subs r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + bne _08039568 + ldrb r1, [r1] + adds r0, r4, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, _08039570 + str r0, [r3, #0x1c] + ldr r0, _08039574 + str r2, [r0] +_08039568: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039570: .4byte sub_080394FC +_08039574: .4byte gUnknown_2022C2C + thumb_func_end sub_08039514 + + thumb_func_start sub_08039578 +sub_08039578: @ 0x08039578 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + ldrh r0, [r0, #0x2e] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0803959C + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _080395A0 + adds r4, r0, #0 + b _080395A4 + .align 2, 0 +_0803959C: .4byte gUnknown_2024174 +_080395A0: + mov r0, sb + ldrh r4, [r0, #0x32] +_080395A4: + ldr r1, _0803960C + lsls r0, r6, #1 + adds r5, r0, r1 + ldrh r0, [r5] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r7, _08039610 + adds r0, r0, r7 + movs r1, #0 + bl sub_0806A058 + cmp r4, #0xc9 + bne _08039628 + ldrh r0, [r5] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + movs r1, #0 + bl sub_0806A058 + adds r2, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _08039614 + movs r0, #0xc9 + b _0803961E + .align 2, 0 +_0803960C: .4byte gUnknown_2023D12 +_08039610: .4byte gUnknown_20243E8 +_08039614: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0803961E: + ldr r1, _08039624 + lsls r0, r0, #2 + b _08039660 + .align 2, 0 +_08039624: .4byte gUnknown_82D45C8 +_08039628: + ldr r0, _08039640 + cmp r4, r0 + bne _0803964C + ldr r0, _08039644 + ldr r1, _08039648 + adds r1, r6, r1 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + b _08039664 + .align 2, 0 +_08039640: .4byte 0x00000181 +_08039644: .4byte gUnknown_84FE684 +_08039648: .4byte gUnknown_2024188 +_0803964C: + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bls _0803965C + ldr r0, _08039658 + b _08039662 + .align 2, 0 +_08039658: .4byte gUnknown_82D45C8 +_0803965C: + ldr r1, _08039684 + lsls r0, r4, #2 +_08039660: + adds r0, r0, r1 +_08039662: + ldrb r0, [r0, #1] +_08039664: + lsrs r1, r0, #3 + movs r0, #8 + subs r0, r0, r1 + mov r1, sb + strh r0, [r1, #0x34] + movs r0, #1 + strh r0, [r1, #0x36] + ldr r0, _08039688 + str r0, [r1, #0x1c] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08039684: .4byte gUnknown_82D45C8 +_08039688: .4byte sub_0803968C + thumb_func_end sub_08039578 + + thumb_func_start sub_0803968C +sub_0803968C: @ 0x0803968C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803970C + movs r0, #2 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x26] + adds r0, #8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080396C0 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + b _0803970C +_080396C0: + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + ldr r1, _08039714 + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r1, #4 + adds r1, r1, r0 + ldr r2, _08039718 + movs r3, #0x2e + ldrsh r0, [r4, r3] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0xb + ldr r1, [r1] + adds r1, r1, r0 + movs r2, #0x34 + ldrsh r0, [r4, r2] + lsls r0, r0, #8 + adds r1, r1, r0 + movs r2, #0 + movs r0, #0xff +_080396F2: + strb r2, [r1] + adds r1, #1 + subs r0, #1 + cmp r0, #0 + bge _080396F2 + ldr r0, _08039718 + movs r3, #0x2e + ldrsh r1, [r4, r3] + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08007EC0 +_0803970C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039714: .4byte gUnknown_2024178 +_08039718: .4byte gUnknown_2024188 + thumb_func_end sub_0803968C + + thumb_func_start sub_0803971C +sub_0803971C: @ 0x0803971C + movs r1, #8 + strh r1, [r0, #0x34] + adds r1, r0, #0 + adds r1, #0x3e + ldrb r1, [r1] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + strh r1, [r0, #0x36] + ldr r1, _08039734 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08039734: .4byte sub_08039738 + thumb_func_end sub_0803971C + + thumb_func_start sub_08039738 +sub_08039738: @ 0x08039738 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x34] + subs r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803976A + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r0, #8 + strh r0, [r3, #0x34] +_0803976A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08039738 + + thumb_func_start sub_08039770 +sub_08039770: @ 0x08039770 + movs r1, #0x3e + adds r1, r1, r0 + mov ip, r1 + movs r1, #1 + ldrh r2, [r0, #0x36] + ands r2, r1 + lsls r2, r2, #2 + mov r1, ip + ldrb r3, [r1] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + movs r1, #0 + strh r1, [r0, #0x36] + ldr r1, _08039798 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08039798: .4byte sub_080394FC + thumb_func_end sub_08039770 + + thumb_func_start sub_0803979C +sub_0803979C: @ 0x0803979C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080397E4 + ldr r0, _080397EC + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080397C4 + ldr r0, _080397F0 + ldr r0, [r0] + ldr r1, _080397F4 + ands r0, r1 + cmp r0, #0 + beq _080397D8 +_080397C4: + ldrh r0, [r4, #0x32] + bl sub_0806EB58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080397D8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 +_080397D8: + ldrh r1, [r4, #0x32] + adds r0, r4, #0 + movs r2, #1 + movs r3, #1 + bl sub_0806E778 +_080397E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080397EC: .4byte gUnknown_2023F24 +_080397F0: .4byte gUnknown_2022C90 +_080397F4: .4byte gUnknown_2000002 + thumb_func_end sub_0803979C + + thumb_func_start sub_080397F8 +sub_080397F8: @ 0x080397F8 + ldr r1, _08039800 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08039800: .4byte sub_08039804 + thumb_func_end sub_080397F8 + + thumb_func_start sub_08039804 +sub_08039804: @ 0x08039804 + push {lr} + adds r2, r0, #0 + ldr r0, _0803982C + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08039828 + ldrh r0, [r2, #0x24] + subs r0, #2 + strh r0, [r2, #0x24] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _08039828 + ldr r0, _08039830 + str r0, [r2, #0x1c] + strh r1, [r2, #0x30] +_08039828: + pop {r0} + bx r0 + .align 2, 0 +_0803982C: .4byte gUnknown_20240A0 +_08039830: .4byte sub_08039840 + thumb_func_end sub_08039804 + + thumb_func_start sub_08039834 +sub_08039834: @ 0x08039834 + ldr r1, _0803983C + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_0803983C: .4byte sub_08039840 + thumb_func_end sub_08039834 + + thumb_func_start sub_08039840 +sub_08039840: @ 0x08039840 + bx lr + .align 2, 0 + thumb_func_end sub_08039840 + + thumb_func_start sub_08039844 +sub_08039844: @ 0x08039844 + push {lr} + adds r2, r0, #0 + ldr r0, _08039868 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08039864 + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x26] + adds r0, r0, r1 + strh r0, [r2, #0x26] +_08039864: + pop {r0} + bx r0 + .align 2, 0 +_08039868: .4byte gUnknown_20240A0 + thumb_func_end sub_08039844 + + thumb_func_start sub_0803986C +sub_0803986C: @ 0x0803986C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + cmp r1, #0 + beq _080398A8 + ldr r0, _080398A4 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r2, r4, #1 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + b _080398BA + .align 2, 0 +_080398A4: .4byte gUnknown_2024174 +_080398A8: + ldr r0, _08039904 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r2, r4, #1 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 +_080398BA: + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + bne _08039970 + ldr r0, _08039908 + bl sub_0806F0C4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + cmp r0, #1 + bne _08039914 + ldr r0, _0803990C + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, _08039904 + ldr r0, [r2] + ldr r0, [r0, #4] + adds r1, r6, r4 + lsls r1, r1, #2 + adds r0, r1, r0 + strb r5, [r0, #2] + ldr r0, [r2] + ldr r0, [r0, #4] + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + ldr r2, _08039910 + lsls r3, r5, #4 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x80 + b _08039942 + .align 2, 0 +_08039904: .4byte gUnknown_2024174 +_08039908: .4byte sub_08039A3C +_0803990C: .4byte gUnknown_3005AD0 +_08039910: .4byte gUnknown_20205AC +_08039914: + ldr r0, _08039980 + adds r0, r4, r0 + ldrb r7, [r0] + ldr r2, _08039984 + ldr r0, [r2] + ldr r0, [r0, #4] + adds r1, r6, r4 + lsls r1, r1, #2 + adds r0, r1, r0 + strb r5, [r0, #3] + ldr r0, [r2] + ldr r0, [r0, #4] + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r2, _08039988 + lsls r3, r5, #4 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0xc0 +_08039942: + strh r1, [r0, #0x2e] + adds r4, r2, #0 + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r4 + mov r2, sb + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + movs r2, #0 + strh r0, [r1, #0x30] + mov r3, sl + lsls r0, r3, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0x32] + strh r7, [r1, #0x34] + mov r0, r8 + strh r0, [r1, #0x36] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x24] + strh r2, [r0, #0x26] +_08039970: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08039980: .4byte gUnknown_2023E88 +_08039984: .4byte gUnknown_2024174 +_08039988: .4byte gUnknown_20205AC + thumb_func_end sub_0803986C + + thumb_func_start sub_0803998C +sub_0803998C: @ 0x0803998C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + bne _080399E0 + ldr r6, _080399D8 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r5, r0, #2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08039A2E + ldr r2, _080399DC + ldrb r1, [r3, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x34] + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_08006E00 + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + b _08039A1A + .align 2, 0 +_080399D8: .4byte gUnknown_2024174 +_080399DC: .4byte gUnknown_20205AC +_080399E0: + ldr r6, _08039A34 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r5, r0, #2 + adds r3, r5, r1 + ldrb r1, [r3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08039A2E + ldr r2, _08039A38 + ldrb r1, [r3, #3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x34] + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_08006E00 + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r5, r1 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 +_08039A1A: + ands r0, r2 + strb r0, [r1] + ldr r0, _08039A38 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #0x24] + strh r0, [r1, #0x26] +_08039A2E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08039A34: .4byte gUnknown_2024174 +_08039A38: .4byte gUnknown_20205AC + thumb_func_end sub_0803998C + + thumb_func_start sub_08039A3C +sub_08039A3C: @ 0x08039A3C + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08039A54 + movs r2, #0x2e + ldrsh r0, [r4, r2] + b _08039A58 +_08039A54: + movs r1, #0x2e + ldrsh r0, [r4, r1] +_08039A58: + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldr r2, _08039A84 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x26] + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08039A84: .4byte gUnknown_20205AC + thumb_func_end sub_08039A3C + + thumb_func_start sub_08039A88 +sub_08039A88: @ 0x08039A88 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08039AA0 + ldrh r1, [r2, #0x32] + adds r0, r2, #0 + bl sub_0806E940 +_08039AA0: + pop {r0} + bx r0 + thumb_func_end sub_08039A88 + + thumb_func_start sub_08039AA4 +sub_08039AA4: @ 0x08039AA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08039AE0 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08039ABE + ldr r0, _08039AC4 + str r0, [r4, #0x1c] +_08039ABE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039AC4: .4byte sub_08039840 + thumb_func_end sub_08039AA4 + + thumb_func_start sub_08039AC8 +sub_08039AC8: @ 0x08039AC8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _08039ADC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08039ADC: .4byte sub_08039AA4 + thumb_func_end sub_08039AC8 + + thumb_func_start sub_08039AE0 +sub_08039AE0: @ 0x08039AE0 + push {lr} + adds r2, r0, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _08039B02 + ldr r1, _08039B08 + adds r0, r2, #0 + adds r0, #0x2b + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x28 + strb r1, [r0] +_08039B02: + pop {r0} + bx r0 + .align 2, 0 +_08039B08: .4byte gUnknown_82EBB30 + thumb_func_end sub_08039AE0 + + thumb_func_start sub_08039B0C +sub_08039B0C: @ 0x08039B0C + bx lr + .align 2, 0 + thumb_func_end sub_08039B0C + + thumb_func_start sub_08039B10 +sub_08039B10: @ 0x08039B10 + push {lr} + bl sub_08039B84 + ldr r1, _08039B28 + movs r0, #0 + strb r0, [r1, #1] + ldr r1, _08039B2C + ldr r0, _08039B30 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08039B28: .4byte gUnknown_2023FD6 +_08039B2C: .4byte gUnknown_3005A64 +_08039B30: .4byte sub_0803A804 + thumb_func_end sub_08039B10 + + thumb_func_start sub_08039B34 +sub_08039B34: @ 0x08039B34 + push {r4, r5, lr} + ldr r0, _08039B74 + ldr r0, [r0] + bl _call_via_r0 + ldr r1, _08039B78 + thumb_func_end sub_08039B34 + + thumb_func_start sub_08039B40 +sub_08039B40: @ 0x08039B40 + movs r0, #0 + strb r0, [r1] + ldr r0, _08039B7C + ldrb r0, [r0] + cmp r0, #0 + beq _08039B6E + ldr r5, _08039B80 + adds r4, r1, #0 +_08039B50: + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _08039B7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _08039B50 +_08039B6E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08039B74: .4byte gUnknown_3005A64 +_08039B78: .4byte gUnknown_2023D08 +_08039B7C: .4byte gUnknown_2023D10 +_08039B80: .4byte gUnknown_3005AC0 + thumb_func_end sub_08039B40 + + thumb_func_start sub_08039B84 +sub_08039B84: @ 0x08039B84 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + bl sub_0803D1C4 + bl sub_0803D2E4 + movs r2, #0 + movs r3, #0 + ldr r0, _08039C80 + mov sl, r0 + ldr r1, _08039C84 + mov sb, r1 + ldr r0, _08039C88 + mov r8, r0 + ldr r1, _08039C8C + mov ip, r1 + ldr r5, _08039C90 + movs r4, #0 + ldr r7, _08039C94 + ldr r6, _08039C98 +_08039BB4: + ldr r0, _08039C9C + adds r0, r4, r0 + str r3, [r0] + movs r1, #0 +_08039BBC: + adds r0, r5, r1 + strb r3, [r0] + adds r1, #1 + cmp r1, #0x1b + bls _08039BBC + movs r0, #2 + strb r0, [r5, #0x16] + ldr r1, _08039CA0 + adds r0, r2, r1 + strb r3, [r0] + mov r0, ip + strh r3, [r0] + mov r1, r8 + strh r3, [r1] + mov r0, sb + strh r3, [r0] + mov r1, sl + strh r3, [r1] + ldr r0, _08039CA4 + adds r1, r2, r0 + movs r0, #0xff + strb r0, [r1] + strh r3, [r6] + strh r3, [r7] + ldr r1, _08039CA8 + ldr r0, [r1] + ldr r0, [r0, #4] + adds r0, r0, r4 + str r3, [r0] + ldr r1, _08039CAC + adds r0, r4, r1 + str r3, [r0] + movs r0, #2 + add sl, r0 + add sb, r0 + add r8, r0 + add ip, r0 + adds r5, #0x1c + adds r4, #4 + adds r7, #2 + adds r6, #2 + adds r2, #1 + cmp r2, #3 + ble _08039BB4 + movs r5, #0 + ldr r3, _08039CB0 + ldr r4, _08039CB4 + movs r2, #1 +_08039C1C: + strh r5, [r4] + movs r1, #0 +_08039C20: + adds r0, r3, r1 + strb r5, [r0] + adds r1, #1 + cmp r1, #0xb + bls _08039C20 + adds r3, #0xc + adds r4, #2 + subs r2, #1 + cmp r2, #0 + bge _08039C1C + movs r1, #0 + ldr r2, _08039CB8 + strb r1, [r2] + ldr r0, _08039CBC + strb r1, [r0] + ldr r2, _08039CC0 + strh r1, [r2] + ldr r1, _08039CC4 + movs r2, #0 + movs r3, #0 +_08039C48: + adds r0, r1, r2 + strb r3, [r0] + adds r2, #1 + cmp r2, #0x2b + bls _08039C48 + ldr r2, _08039CC8 + movs r0, #0 + str r0, [r2] + ldr r0, _08039CCC + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08039CD4 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + bne _08039CF2 + ldr r0, _08039CD0 + ldr r0, [r0] + ldrb r1, [r0, #0x15] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08039CF2 + movs r0, #0x80 + b _08039CF0 + .align 2, 0 +_08039C80: .4byte gUnknown_2023F04 +_08039C84: .4byte gUnknown_2023EFC +_08039C88: .4byte gUnknown_2023EF4 +_08039C8C: .4byte gUnknown_2023EEC +_08039C90: .4byte gUnknown_2023F60 +_08039C94: .4byte gUnknown_2023EE4 +_08039C98: .4byte gUnknown_2023F0C +_08039C9C: .4byte gUnknown_2023F50 +_08039CA0: .4byte gUnknown_2023F28 +_08039CA4: .4byte gUnknown_2023F14 +_08039CA8: .4byte gUnknown_202414C +_08039CAC: .4byte gUnknown_2023ED4 +_08039CB0: .4byte gUnknown_2023F38 +_08039CB4: .4byte gUnknown_2023F32 +_08039CB8: .4byte gUnknown_2023EAF +_08039CBC: .4byte gUnknown_2023EB0 +_08039CC0: .4byte gUnknown_2024070 +_08039CC4: .4byte gUnknown_2024074 +_08039CC8: .4byte gUnknown_2023F24 +_08039CCC: .4byte gUnknown_2022C90 +_08039CD0: .4byte gUnknown_3005AF0 +_08039CD4: + ldr r0, _08039E70 + ands r1, r0 + cmp r1, #0 + bne _08039CF2 + bl sub_08185D10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08039CF2 + ldr r1, _08039E74 + ldr r0, [r1] + movs r1, #0x80 + orrs r0, r1 + ldr r2, _08039E74 +_08039CF0: + str r0, [r2] +_08039CF2: + ldr r3, _08039E78 + ldr r0, _08039E7C + ldr r0, [r0] + ldrb r0, [r0, #0x15] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + movs r1, #0 + strb r0, [r3, #0x1d] + ldr r0, _08039E80 + strb r1, [r0] + ldr r0, _08039E84 + strb r1, [r0] + ldr r0, _08039E88 + str r1, [r0] + ldr r0, _08039E8C + movs r2, #0 + strh r1, [r0] + ldr r1, _08039E90 + ldr r0, [r1] + ldr r0, [r0, #8] + adds r0, #0x20 + strb r2, [r0] + ldr r0, [r1] + ldr r0, [r0, #0xc] + adds r0, #0x20 + strb r2, [r0] + ldr r5, _08039E94 + ldr r6, _08039E98 + ldr r7, _08039E9C + ldr r0, _08039EA0 + mov r8, r0 + ldr r1, _08039EA4 + mov sb, r1 + ldr r2, _08039EA8 + mov sl, r2 + ldr r1, _08039EAC + movs r2, #0 + adds r0, r1, #7 +_08039D3E: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _08039D3E + movs r4, #0 + strh r4, [r5] + movs r0, #0 + str r0, [r6] + strh r0, [r7] + strb r4, [r3, #0x18] + strb r4, [r3, #0x19] + mov r0, r8 + strb r4, [r0] + mov r1, sb + strb r4, [r1] + ldr r5, _08039EB0 + ldr r0, [r5] + adds r0, #0x6c + strb r4, [r0] + ldr r0, [r5] + adds r0, #0x79 + strb r4, [r0] + ldr r0, [r5] + adds r0, #0x7a + strb r4, [r0] + mov r0, sl + movs r1, #0xb + bl sub_0806A058 + ldr r6, [r5] + adds r6, #0x7c + ldr r2, _08039EB4 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #8] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08039EB8 + bl __divsi3 + strb r0, [r6] + ldr r0, [r5] + adds r0, #0x7b + movs r1, #3 + strb r1, [r0] + ldr r0, [r5] + strb r4, [r0, #0x12] + ldr r0, [r5] + adds r0, #0x4a + movs r1, #1 + strb r1, [r0] + movs r2, #0 + movs r1, #0 + adds r6, r5, #0 +_08039DAE: + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0x98 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xb8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xc8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xd0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xe0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xe8 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xf0 + strb r1, [r0] + ldr r0, [r5] + adds r0, r2, r0 + adds r0, #0xf8 + strb r1, [r0] + adds r2, #1 + cmp r2, #7 + ble _08039DAE + movs r2, #0 + ldr r4, _08039EB0 + movs r3, #0xa5 + lsls r3, r3, #2 + movs r1, #6 +_08039DFE: + ldr r0, [r4] + adds r0, r2, r0 + adds r0, r0, r3 + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _08039DFE + ldr r0, [r6] + adds r0, #0xdf + movs r1, #0 + strb r1, [r0] + ldr r0, [r6] + adds r0, #0x92 + strb r1, [r0] + bl sub_0806F050 + ldr r1, _08039EBC + strh r0, [r1] + ldr r1, _08039EC0 + movs r2, #0 + movs r3, #0 +_08039E28: + adds r0, r1, r2 + strb r3, [r0] + adds r2, #1 + cmp r2, #0x43 + bls _08039E28 + ldr r0, _08039EA8 + bl sub_0806E630 + ldr r3, _08039EC0 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3, #5] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + ldr r2, _08039EB0 + ldr r0, [r2] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _08039EC4 + adds r0, r0, r2 + strb r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08039E70: .4byte gUnknown_2000002 +_08039E74: .4byte gUnknown_2023F24 +_08039E78: .4byte gUnknown_2024118 +_08039E7C: .4byte gUnknown_3005AF0 +_08039E80: .4byte gUnknown_2023EB6 +_08039E84: .4byte gUnknown_2023FDE +_08039E88: .4byte gUnknown_2023D0C +_08039E8C: .4byte gUnknown_2023FD2 +_08039E90: .4byte gUnknown_202414C +_08039E94: .4byte gUnknown_2023FD0 +_08039E98: .4byte gUnknown_2023E94 +_08039E9C: .4byte gUnknown_20240A0 +_08039EA0: .4byte gUnknown_3005AB4 +_08039EA4: .4byte gUnknown_2023EB4 +_08039EA8: .4byte gUnknown_20243E8 +_08039EAC: .4byte gUnknown_2023FD6 +_08039EB0: .4byte gUnknown_2024140 +_08039EB4: .4byte gUnknown_82F0D54 +_08039EB8: .4byte 0x000004FB +_08039EBC: .4byte gUnknown_2023FD4 +_08039EC0: .4byte gUnknown_3005A70 +_08039EC4: .4byte 0x000002A1 + thumb_func_end sub_08039B84 + + thumb_func_start sub_08039EC8 +sub_08039EC8: @ 0x08039EC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, _0803A02C + ldr r5, _0803A030 + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r1, sp + adds r0, 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, _0803A034 + ldr r3, _0803A038 + ldrh r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + mov ip, r4 + mov sb, r5 + ldr r6, _0803A03C + mov sl, r6 + cmp r0, #0x7f + beq _08039FA0 + movs r5, #0 + mov r6, sb + movs r4, #0x58 + ldr r2, _0803A040 + adds r2, #0x18 + movs r1, #6 +_08039F18: + ldrb r0, [r6] + muls r0, r4, r0 + adds r0, r5, r0 + adds r0, r0, r2 + strb r1, [r0] + adds r5, #1 + cmp r5, #7 + ble _08039F18 + movs r5, #0 + ldr r7, _0803A044 + ldrb r7, [r7] + cmp r5, r7 + bge _08039F8C + ldr r0, _0803A048 + mov r8, r0 + ldr r4, _0803A02C + ldr r3, _0803A03C +_08039F3A: + movs r0, #0x58 + muls r0, r5, r0 + mov r1, r8 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r1 + cmp r0, #0 + beq _08039F5E + ldrb r0, [r4, #0x14] + ldr r6, _0803A030 + ldrb r6, [r6] + cmp r0, r6 + bne _08039F5E + ldr r0, _0803A04C + ands r1, r0 + str r1, [r2] +_08039F5E: + ldr r1, [r3] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _08039F7E + ldrb r0, [r4, #0x15] + ldr r7, _0803A030 + ldrb r7, [r7] + cmp r0, r7 + bne _08039F7E + movs r0, #0x19 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r3] + movs r0, #0 + strb r0, [r4, #0x15] +_08039F7E: + adds r4, #0x1c + adds r3, #4 + adds r5, #1 + ldr r0, _0803A044 + ldrb r0, [r0] + cmp r5, r0 + blt _08039F3A +_08039F8C: + ldr r1, _0803A038 + ldrh r0, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _0803A034 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, #0x7f + bne _0803A058 +_08039FA0: + mov r3, sb + ldrb r1, [r3] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + ldr r0, _0803A040 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _0803A050 + ands r0, r1 + str r0, [r2] + ldrb r1, [r3] + lsls r1, r1, #2 + add r1, sl + ldr r0, [r1] + ldr r2, _0803A054 + ands r0, r2 + str r0, [r1] + movs r5, #0 + ldr r6, _0803A044 + ldrb r6, [r6] + cmp r5, r6 + bge _0803A074 + mov r7, sb + movs r6, #0 +_08039FD4: + ldrb r0, [r7] + bl sub_080A62F8 + adds r4, r0, #0 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0803A014 + ldr r1, _0803A03C + lsls r0, r5, #2 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _0803A014 + ldr r0, _0803A02C + adds r0, r6, r0 + ldrb r0, [r0, #0x15] + ldrb r3, [r7] + cmp r0, r3 + bne _0803A014 + movs r0, #0x19 + rsbs r0, r0, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + str r1, [r2] +_0803A014: + adds r6, #0x1c + adds r5, #1 + ldr r0, _0803A044 + ldrb r0, [r0] + cmp r5, r0 + blt _08039FD4 + ldr r6, _0803A02C + mov ip, r6 + ldr r7, _0803A030 + mov sb, r7 + b _0803A074 + .align 2, 0 +_0803A02C: .4byte gUnknown_2023F60 +_0803A030: .4byte gUnknown_2023D08 +_0803A034: .4byte gUnknown_82ED220 +_0803A038: .4byte gUnknown_2023E8E +_0803A03C: .4byte gUnknown_2023F50 +_0803A040: .4byte gUnknown_2023D28 +_0803A044: .4byte gUnknown_2023D10 +_0803A048: .4byte gUnknown_2023D78 +_0803A04C: .4byte 0xFBFFFFFF +_0803A050: .4byte 0x15100007 +_0803A054: .4byte 0x0003043F +_0803A058: + mov r0, sb + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _0803A354 + adds r1, #0x50 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #2 + add r0, sl + str r1, [r0] +_0803A074: + movs r5, #0 + ldr r3, _0803A358 + mov r8, r3 + ldr r6, _0803A35C + mov sl, r6 + ldr r7, _0803A360 + ldrb r7, [r7] + cmp r5, r7 + bge _0803A0D4 + ldr r3, _0803A364 + ldr r7, _0803A368 + ldr r6, _0803A36C +_0803A08C: + movs r0, #0x58 + muls r0, r5, r0 + adds r4, r0, r3 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r0, [r0] + lsls r2, r0, #0x10 + ldr r1, [r4] + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _0803A0AA + bics r1, r2 + str r1, [r4] +_0803A0AA: + ldr r1, [r4] + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0803A0CA + mov r2, r8 + ldr r0, [r2] + adds r0, r5, r0 + ldrb r0, [r0, #0x14] + ldrb r2, [r6] + cmp r0, r2 + bne _0803A0CA + ldr r0, _0803A370 + ands r1, r0 + str r1, [r4] +_0803A0CA: + adds r5, #1 + ldr r0, _0803A360 + ldrb r0, [r0] + cmp r5, r0 + blt _0803A08C +_0803A0D4: + mov r1, sb + ldrb r0, [r1] + add r0, sl + movs r1, #0 + strb r1, [r0] + mov r2, sb + ldrb r0, [r2] + ldr r3, _0803A374 + adds r0, r0, r3 + strb r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r6, ip + adds r1, r0, r6 + movs r5, #0 + movs r2, #0 +_0803A0F8: + adds r0, r1, r5 + strb r2, [r0] + adds r5, #1 + cmp r5, #0x1b + bls _0803A0F8 + ldr r7, _0803A378 + ldrh r0, [r7] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0803A37C + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x7f + bne _0803A184 + mov r2, sb + ldrb r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + mov r1, sp + ldrb r1, [r1, #0xa] + strb r1, [r0, #0xa] + ldrb r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + mov r1, sp + ldrb r1, [r1, #0x15] + strb r1, [r0, #0x15] + ldrb r0, [r2] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + mov r0, sp + ldrb r2, [r0, #0xf] + lsls r2, r2, #0x1c + movs r4, #0xf + lsrs r2, r2, #0x1c + ldrb r3, [r1, #0xf] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0xf] + mov r3, sb + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + mov r1, sp + ldrb r1, [r1, #0xf] + lsrs r1, r1, #4 + lsls r1, 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, r0, r1 + lsls r0, r0, #2 + add r0, ip + mov r1, sp + ldrb r1, [r1, #0x14] + strb r1, [r0, #0x14] +_0803A184: + movs r0, #0 + ldr r6, _0803A380 + strb r0, [r6] + mov r7, sb + ldrb r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + movs r4, #0 + movs r1, #2 + strb r1, [r0, #0x16] + ldrb r0, [r7] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + mov r0, sp + ldrb r0, [r0, #0x18] + movs r2, #2 + ands r2, r0 + ldrb r3, [r1, #0x18] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0x18] + ldrb r0, [r7] + lsls r0, r0, #1 + ldr r1, _0803A384 + adds r0, r0, r1 + movs r2, #0 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, r0, #1 + ldr r3, _0803A388 + adds r0, r0, r3 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, r0, #1 + ldr r6, _0803A38C + adds r0, r0, r6 + strh r4, [r0] + ldrb r0, [r7] + lsls r0, r0, #1 + ldr r7, _0803A390 + adds r0, r0, r7 + strh r4, [r0] + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + ldr r3, _0803A394 + adds r0, r0, r3 + strh r4, [r0] + ldrb r0, [r1] + ldr r6, _0803A398 + adds r0, r0, r6 + movs r1, #0xff + strb r1, [r0] + mov r7, sb + ldrb r0, [r7] + mov r3, r8 + ldr r1, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0x98 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0x99 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe0 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe1 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe2 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe3 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe4 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe5 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe6 + strb r2, [r0] + ldrb r0, [r7] + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe7 + strb r2, [r0] + ldr r1, [r3] + adds r1, #0x92 + ldrb r0, [r7] + lsls r0, r0, #2 + ldr r6, _0803A368 + adds r0, r0, r6 + ldr r2, [r0] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + movs r5, #0 + ldr r7, _0803A360 + ldrb r7, [r7] + cmp r5, r7 + bge _0803A2F8 + mov r3, sb + mov r7, r8 + movs r6, #0 +_0803A29A: + ldrb r0, [r3] + cmp r5, r0 + beq _0803A2D0 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r3, [sp, #0x1c] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r3, [sp, #0x1c] + ldrb r0, [r3] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + ldr r3, [sp, #0x1c] + cmp r4, r0 + beq _0803A2D0 + ldr r0, [r7] + lsls r1, r5, #1 + adds r0, r1, r0 + adds r0, #0x98 + strb r6, [r0] + ldr r0, [r7] + adds r1, r1, r0 + adds r1, #0x99 + strb r6, [r1] +_0803A2D0: + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, r0, #1 + lsls r2, r5, #3 + adds r0, r0, r2 + adds r0, r0, r1 + adds r0, #0xe0 + strb r6, [r0] + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, r0, #1 + adds r0, r0, r2 + adds r0, r0, r1 + adds r0, #0xe1 + strb r6, [r0] + adds r5, #1 + ldr r0, _0803A360 + ldrb r0, [r0] + cmp r5, r0 + blt _0803A29A +_0803A2F8: + mov r1, sb + ldrb r0, [r1] + mov r2, r8 + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + movs r2, #0 + strb r2, [r0] + mov r3, sb + ldrb r0, [r3] + mov r6, r8 + ldr r1, [r6] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + strb r2, [r0] + ldr r0, _0803A39C + ldr r0, [r0] + ldr r1, [r0, #4] + ldrb r0, [r3] + lsls r0, r0, #2 + adds r1, r1, r0 + movs r2, #0 + str r2, [r1] + ldr r0, _0803A378 + strh r2, [r0] + ldr r0, [r6] + adds r0, #0xda + movs r1, #0xff + strb r1, [r0] + ldrb r0, [r3] + bl sub_08131124 + mov r7, sb + ldrb r0, [r7] + bl sub_08131164 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803A354: .4byte gUnknown_2023D28 +_0803A358: .4byte gUnknown_2024140 +_0803A35C: .4byte gUnknown_2024150 +_0803A360: .4byte gUnknown_2023D10 +_0803A364: .4byte gUnknown_2023D78 +_0803A368: .4byte gUnknown_82FACB4 +_0803A36C: .4byte gUnknown_2023D08 +_0803A370: .4byte 0xFFFF1FFF +_0803A374: .4byte gUnknown_2024154 +_0803A378: .4byte gUnknown_2023E8E +_0803A37C: .4byte gUnknown_82ED220 +_0803A380: .4byte gUnknown_2023F20 +_0803A384: .4byte gUnknown_2023EEC +_0803A388: .4byte gUnknown_2023EF4 +_0803A38C: .4byte gUnknown_2023EFC +_0803A390: .4byte gUnknown_2023F04 +_0803A394: .4byte gUnknown_2023EE4 +_0803A398: .4byte gUnknown_2023F14 +_0803A39C: .4byte gUnknown_202414C + thumb_func_end sub_08039EC8 + + thumb_func_start sub_0803A3A0 +sub_0803A3A0: @ 0x0803A3A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r5, #0 + ldr r6, _0803A764 + ldr r0, _0803A768 + mov r8, r0 + ldr r1, _0803A76C + mov ip, r1 + ldr r2, _0803A770 + mov sb, r2 + ldr r3, _0803A774 + mov sl, r3 + ldr r7, _0803A778 + ldr r4, _0803A77C + movs r3, #0x58 + adds r2, r6, #0 + adds r2, #0x18 + movs r1, #6 +_0803A3CC: + ldrb r0, [r4] + muls r0, r3, r0 + adds r0, r5, r0 + adds r0, r0, r2 + strb r1, [r0] + adds r5, #1 + cmp r5, #7 + ble _0803A3CC + ldr r0, _0803A77C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r2, r6, #0 + adds r2, #0x50 + adds r0, r0, r2 + movs r1, #0 + str r1, [r0] + ldr r3, _0803A77C + ldrb r0, [r3] + lsls r0, r0, #2 + add r0, r8 + str r1, [r0] + movs r5, #0 + ldr r6, _0803A780 + ldrb r6, [r6] + cmp r5, r6 + bge _0803A474 + adds r3, r2, #0 + movs r4, #0 + ldr r0, _0803A784 + mov r8, r0 +_0803A40A: + ldr r1, [r3] + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r1 + cmp r0, #0 + beq _0803A42A + ldr r2, _0803A788 + adds r0, r4, r2 + ldrb r0, [r0, #0x14] + ldr r6, _0803A77C + ldrb r6, [r6] + cmp r0, r6 + bne _0803A42A + ldr r0, _0803A78C + ands r1, r0 + str r1, [r3] +_0803A42A: + ldr r1, _0803A77C + ldrb r0, [r1] + lsls r0, r0, #2 + add r0, r8 + ldr r0, [r0] + lsls r2, r0, #0x10 + ldr r1, [r3] + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _0803A444 + bics r1, r2 + str r1, [r3] +_0803A444: + ldr r1, [r3] + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0803A466 + mov r2, ip + ldr r0, [r2] + adds r0, r5, r0 + ldrb r0, [r0, #0x14] + ldr r6, _0803A77C + ldrb r6, [r6] + cmp r0, r6 + bne _0803A466 + ldr r0, _0803A790 + ands r1, r0 + str r1, [r3] +_0803A466: + adds r3, #0x58 + adds r4, #0x1c + adds r5, #1 + ldr r0, _0803A780 + ldrb r0, [r0] + cmp r5, r0 + blt _0803A40A +_0803A474: + ldr r1, _0803A77C + ldrb r0, [r1] + add r0, sb + movs r1, #0 + strb r1, [r0] + ldr r2, _0803A77C + ldrb r0, [r2] + add r0, sl + strb r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0803A788 + adds r1, r0, r3 + movs r5, #0 + movs r2, #0 +_0803A496: + adds r0, r1, r5 + strb r2, [r0] + adds r5, #1 + cmp r5, #0x1b + bls _0803A496 + ldr r6, _0803A77C + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + mov sb, r0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r3, #3 + rsbs r3, r3, #0 + mov r8, r3 + mov r0, r8 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r6, #5 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _0803A77C + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + subs r3, #6 + mov sl, r3 + mov r0, sl + ands r0, r2 + strb r0, [r1] + ldr r0, _0803A77C + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r2, _0803A77C + ldrb r1, [r2] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r5, #0x21 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + strb r0, [r1] + ldr r3, _0803A77C + ldrb r1, [r3] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r4, #0x41 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r3] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _0803A77C + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1, #1] + mov r0, sb + ands r0, r2 + strb r0, [r1, #1] + ldr r2, _0803A77C + ldrb r1, [r2] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1, #1] + mov r0, r8 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, _0803A77C + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1, #1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r2, _0803A77C + ldrb r1, [r2] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1, #1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _0803A77C + ldrb r0, [r1] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #1] + ands r5, r1 + strb r5, [r0, #1] + ldr r2, _0803A77C + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #1] + ands r3, r1 + strb r3, [r0, #1] + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #2] + mov r3, sb + ands r3, r1 + strb r3, [r0, #2] + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #2] + mov r2, r8 + ands r2, r1 + strb r2, [r0, #2] + ldr r3, _0803A77C + ldrb r0, [r3] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #2] + ands r6, r1 + strb r6, [r0, #2] + ldrb r0, [r3] + lsls r0, r0, #4 + adds r0, r0, r7 + ldrb r1, [r0, #2] + mov r6, sl + ands r6, r1 + strb r6, [r0, #2] + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0803A788 + adds r0, r0, r1 + movs r2, #0 + movs r1, #2 + strb r1, [r0, #0x16] + ldrb r0, [r3] + lsls r0, r0, #1 + ldr r3, _0803A794 + adds r0, r0, r3 + movs r3, #0 + strh r2, [r0] + ldr r6, _0803A77C + ldrb r0, [r6] + lsls r0, r0, #1 + ldr r1, _0803A798 + adds r0, r0, r1 + strh r2, [r0] + ldrb r0, [r6] + lsls r0, r0, #1 + ldr r6, _0803A79C + adds r0, r0, r6 + strh r2, [r0] + ldr r1, _0803A77C + ldrb r0, [r1] + lsls r0, r0, #1 + ldr r6, _0803A7A0 + adds r0, r0, r6 + strh r2, [r0] + ldrb r0, [r1] + lsls r0, r0, #1 + ldr r1, _0803A7A4 + adds r0, r0, r1 + strh r2, [r0] + ldr r2, _0803A77C + ldrb r0, [r2] + ldr r6, _0803A7A8 + adds r0, r0, r6 + movs r1, #0xff + strb r1, [r0] + ldrb r0, [r2] + mov r2, ip + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + strb r3, [r0] + ldr r6, _0803A77C + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0x98 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0x99 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe0 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe1 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe2 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe3 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe4 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe5 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe6 + strb r3, [r0] + ldrb r0, [r6] + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + adds r0, #0xe7 + strb r3, [r0] + ldr r1, [r2] + adds r1, #0x92 + ldrb r0, [r6] + lsls r0, r0, #2 + ldr r2, _0803A784 + adds r0, r0, r2 + ldr r2, [r0] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + movs r5, #0 + ldr r3, _0803A780 + ldrb r3, [r3] + cmp r5, r3 + bge _0803A746 + adds r3, r6, #0 + mov r7, ip + movs r6, #0 +_0803A6E8: + ldrb r0, [r3] + cmp r5, r0 + beq _0803A71E + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r3, [sp] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r3, [sp] + ldrb r0, [r3] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + ldr r3, [sp] + cmp r4, r0 + beq _0803A71E + ldr r0, [r7] + lsls r1, r5, #1 + adds r0, r1, r0 + adds r0, #0x98 + strb r6, [r0] + ldr r0, [r7] + adds r1, r1, r0 + adds r1, #0x99 + strb r6, [r1] +_0803A71E: + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, r0, #1 + lsls r2, r5, #3 + adds r0, r0, r2 + adds r0, r0, r1 + adds r0, #0xe0 + strb r6, [r0] + ldrb r0, [r3] + ldr r1, [r7] + lsls r0, r0, #1 + adds r0, r0, r2 + adds r0, r0, r1 + adds r0, #0xe1 + strb r6, [r0] + adds r5, #1 + ldr r0, _0803A780 + ldrb r0, [r0] + cmp r5, r0 + blt _0803A6E8 +_0803A746: + ldr r0, _0803A7AC + ldr r0, [r0] + ldr r1, [r0, #4] + ldr r2, _0803A77C + ldrb r0, [r2] + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] + ldr r4, _0803A764 + ldrb r0, [r2] + movs r3, #0x58 + adds r2, r0, #0 + muls r2, r3, r2 + b _0803A7B0 + .align 2, 0 +_0803A764: .4byte gUnknown_2023D28 +_0803A768: .4byte gUnknown_2023F50 +_0803A76C: .4byte gUnknown_2024140 +_0803A770: .4byte gUnknown_2024150 +_0803A774: .4byte gUnknown_2024154 +_0803A778: .4byte gUnknown_2023FE0 +_0803A77C: .4byte gUnknown_2023D08 +_0803A780: .4byte gUnknown_2023D10 +_0803A784: .4byte gUnknown_82FACB4 +_0803A788: .4byte gUnknown_2023F60 +_0803A78C: .4byte 0xFBFFFFFF +_0803A790: .4byte 0xFFFF1FFF +_0803A794: .4byte gUnknown_2023EEC +_0803A798: .4byte gUnknown_2023EF4 +_0803A79C: .4byte gUnknown_2023EFC +_0803A7A0: .4byte gUnknown_2023F04 +_0803A7A4: .4byte gUnknown_2023EE4 +_0803A7A8: .4byte gUnknown_2023F14 +_0803A7AC: .4byte gUnknown_202414C +_0803A7B0: + adds r2, r2, r4 + ldr r5, _0803A7FC + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #6] + adds r2, #0x21 + strb r0, [r2] + ldr r6, _0803A800 + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r3, r1 + adds r1, r1, r4 + ldrh r2, [r1] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #7] + adds r1, #0x22 + strb r0, [r1] + ldrb r0, [r6] + bl sub_08131124 + ldrb r0, [r6] + bl sub_08131164 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803A7FC: .4byte gUnknown_82F0D54 +_0803A800: .4byte gUnknown_2023D08 + thumb_func_end sub_0803A3A0 + + thumb_func_start sub_0803A804 +sub_0803A804: @ 0x0803A804 + push {r4, r5, lr} + ldr r5, _0803A814 + ldrb r0, [r5] + cmp r0, #0 + beq _0803A818 + cmp r0, #1 + beq _0803A83C + b _0803A872 + .align 2, 0 +_0803A814: .4byte gUnknown_2023FD6 +_0803A818: + ldr r4, _0803A838 + ldrb r0, [r5, #1] + strb r0, [r4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_0803374C + ldrb r0, [r4] + bl sub_0803F440 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0803A872 + .align 2, 0 +_0803A838: .4byte gUnknown_2023D08 +_0803A83C: + ldr r0, _0803A860 + ldr r2, [r0] + cmp r2, #0 + bne _0803A872 + ldrb r0, [r5, #1] + adds r0, #1 + strb r0, [r5, #1] + ldr r1, _0803A864 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _0803A870 + ldr r1, _0803A868 + ldr r0, _0803A86C + str r0, [r1] + b _0803A872 + .align 2, 0 +_0803A860: .4byte gUnknown_2023D0C +_0803A864: .4byte gUnknown_2023D10 +_0803A868: .4byte gUnknown_3005A64 +_0803A86C: .4byte sub_0803A878 +_0803A870: + strb r2, [r5] +_0803A872: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0803A804 + + thumb_func_start sub_0803A878 +sub_0803A878: @ 0x0803A878 + push {r4, r5, lr} + ldr r0, _0803A8B0 + ldr r5, [r0] + cmp r5, #0 + bne _0803A8A8 + movs r0, #0 + bl sub_080A631C + ldr r4, _0803A8B4 + strb r0, [r4] + ldr r0, _0803A8B8 + ldrb r1, [r0] + movs r0, #0 + bl sub_080341A4 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0803A8BC + ldr r0, _0803A8C0 + str r0, [r1] + ldr r0, _0803A8C4 + strb r5, [r0] + strb r5, [r0, #1] +_0803A8A8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803A8B0: .4byte gUnknown_2023D0C +_0803A8B4: .4byte gUnknown_2023D08 +_0803A8B8: .4byte gUnknown_2022C94 +_0803A8BC: .4byte gUnknown_3005A64 +_0803A8C0: .4byte sub_0803A8C8 +_0803A8C4: .4byte gUnknown_2023FD6 + thumb_func_end sub_0803A878 + + thumb_func_start sub_0803A8C8 +sub_0803A8C8: @ 0x0803A8C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0803A92C + ldr r1, [r0] + cmp r1, #0 + beq _0803A8DC + b _0803AB92 +_0803A8DC: + ldr r2, _0803A930 + strb r1, [r2] + ldr r0, _0803A934 + ldrb r0, [r0] + cmp r1, r0 + blo _0803A8EA + b _0803AB8C +_0803A8EA: + movs r7, #0x58 + ldr r0, _0803A938 + mov r8, r0 + mov sb, r2 + movs r1, #0x48 + add r1, r8 + mov sl, r1 +_0803A8F8: + ldr r0, _0803A93C + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A940 + ldr r4, _0803A930 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A940 + ldrb r0, [r4] + muls r0, r7, r0 + mov r2, r8 + adds r3, r0, r2 + movs r2, #0 + movs r1, #0 +_0803A91E: + adds r0, r3, r2 + strb r1, [r0] + adds r2, #1 + cmp r2, #0x57 + bls _0803A91E + b _0803AA0E + .align 2, 0 +_0803A92C: .4byte gUnknown_2023D0C +_0803A930: .4byte gUnknown_2023D08 +_0803A934: .4byte gUnknown_2023D10 +_0803A938: .4byte gUnknown_2023D28 +_0803A93C: .4byte gUnknown_2022C90 +_0803A940: + mov r1, sb + ldrb r0, [r1] + muls r0, r7, r0 + mov r2, r8 + adds r3, r0, r2 + movs r2, #0 + ldr r6, _0803AA88 + ldr r5, _0803AA8C + ldr r4, _0803AA90 +_0803A952: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r1, #4 + adds r1, r2, r1 + adds r1, r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0x57 + bls _0803A952 + mov r1, sb + ldrb r0, [r1] + adds r2, r0, #0 + muls r2, r7, r2 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #6] + adds r2, #0x21 + strb r0, [r2] + mov r2, sb + ldrb r0, [r2] + adds r2, r0, #0 + muls r2, r7, r2 + add r2, r8 + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #7] + adds r2, #0x22 + strb r0, [r2] + mov r1, sb + ldrb r0, [r1] + adds r1, r0, #0 + muls r1, r7, r1 + add r1, r8 + ldrh r0, [r1] + ldrb r1, [r1, #0x17] + lsrs r1, r1, #7 + bl sub_0806B15C + mov r2, sb + ldrb r1, [r2] + muls r1, r7, r1 + add r1, r8 + adds r1, #0x20 + strb r0, [r1] + ldrb r0, [r2] + bl sub_080A62F8 + ldr r1, _0803AA94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, #0xa8 + ldr r1, [r1] + adds r1, r1, r0 + mov r2, sb + ldrb r0, [r2] + muls r0, r7, r0 + add r0, r8 + ldrh r0, [r0, #0x28] + strh r0, [r1] + movs r2, #0 + ldr r4, _0803AA90 + movs r5, #0x58 + ldr r1, _0803AA98 + adds r6, r4, #0 + movs r0, #0x18 + rsbs r0, r0, #0 + adds r0, r0, r1 + mov ip, r0 + movs r3, #6 +_0803A9EE: + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r2, r0 + adds r0, r0, r1 + strb r3, [r0] + adds r2, #1 + cmp r2, #7 + ble _0803A9EE + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r7, r1 + mov r0, ip + adds r0, #0x50 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_0803AA0E: + ldr r4, _0803AA90 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803AA28 + movs r0, #0 + bl sub_0803387C + ldrb r0, [r4] + bl sub_0803F440 +_0803AA28: + ldr r5, _0803AA9C + ldr r0, [r5] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0803AAA4 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803AA4E + movs r0, #0 + bl sub_0803387C + ldrb r0, [r4] + bl sub_0803F440 +_0803AA4E: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803AB04 + ldr r0, [r5] + ldr r1, _0803AAA0 + ands r0, r1 + cmp r0, #0 + bne _0803AB04 + ldrb r0, [r4] + muls r0, r7, r0 + add r0, r8 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + muls r1, r7, r1 + add r1, sl + ldr r2, [r1] + movs r1, #2 + bl sub_0806EAA8 + b _0803AB04 + .align 2, 0 +_0803AA88: .4byte gUnknown_82F0D54 +_0803AA8C: .4byte gUnknown_2023508 +_0803AA90: .4byte gUnknown_2023D08 +_0803AA94: .4byte gUnknown_2024140 +_0803AA98: .4byte gUnknown_2023D40 +_0803AA9C: .4byte gUnknown_2022C90 +_0803AAA0: .4byte 0x063F0902 +_0803AAA4: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803AB04 + ldr r0, [r5] + ldr r1, _0803ABA0 + ands r0, r1 + cmp r0, #0 + bne _0803AADA + ldrb r0, [r4] + muls r0, r7, r0 + add r0, r8 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + muls r1, r7, r1 + add r1, sl + ldr r2, [r1] + movs r1, #2 + bl sub_0806EAA8 +_0803AADA: + movs r0, #0 + bl sub_08033818 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0803ABA4 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0803ABA8 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, _0803ABAC + strh r0, [r1, #0x20] +_0803AB04: + ldr r0, _0803ABB0 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0803AB3A + ldr r4, _0803ABB4 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _0803AB2E + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0803AB3A +_0803AB2E: + movs r0, #0 + bl sub_0803387C + ldrb r0, [r4] + bl sub_0803F440 +_0803AB3A: + ldr r0, _0803ABB0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0803AB64 + ldr r4, _0803ABB4 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0803AB64 + movs r0, #0 + bl sub_0803387C + ldrb r0, [r4] + bl sub_0803F440 +_0803AB64: + ldr r0, _0803ABB0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0803AB76 + bl sub_081A52A4 +_0803AB76: + mov r1, sb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _0803ABB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bhs _0803AB8C + b _0803A8F8 +_0803AB8C: + ldr r1, _0803ABBC + ldr r0, _0803ABC0 + str r0, [r1] +_0803AB92: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803ABA0: .4byte 0x063F0902 +_0803ABA4: .4byte gUnknown_2023D12 +_0803ABA8: .4byte gUnknown_20243E8 +_0803ABAC: .4byte gUnknown_3005A70 +_0803ABB0: .4byte gUnknown_2022C90 +_0803ABB4: .4byte gUnknown_2023D08 +_0803ABB8: .4byte gUnknown_2023D10 +_0803ABBC: .4byte gUnknown_3005A64 +_0803ABC0: .4byte sub_0803ABC4 + thumb_func_end sub_0803A8C8 + + thumb_func_start sub_0803ABC4 +sub_0803ABC4: @ 0x0803ABC4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x30 + ldr r0, _0803AC1C + ldr r0, [r0] + cmp r0, #0 + beq _0803ABD6 + b _0803AD50 +_0803ABD6: + ldr r0, _0803AC20 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0803ABE4 + b _0803ACF0 +_0803ABE4: + movs r7, #0 + add r0, sp, #4 + mov r8, r0 + mov r6, r8 + mov r5, sp +_0803ABEE: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _0803AC24 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _0803AC14 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _0803AC2C +_0803AC14: + ldr r0, _0803AC28 + strh r0, [r5] + movs r0, #0 + b _0803AC3E + .align 2, 0 +_0803AC1C: .4byte gUnknown_2023D0C +_0803AC20: .4byte gUnknown_2022C90 +_0803AC24: .4byte gUnknown_20243E8 +_0803AC28: .4byte 0x0000FFFF +_0803AC2C: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 +_0803AC3E: + str r0, [r6] + adds r6, #8 + adds r5, #8 + adds r7, #1 + cmp r7, #5 + ble _0803ABEE + movs r0, #1 + bl sub_080A631C + ldr r4, _0803AC98 + strb r0, [r4] + movs r0, #0 + mov r1, sp + movs r2, #0x80 + bl sub_080341E4 + ldrb r0, [r4] + bl sub_0803F440 + movs r7, #0 + mov r6, r8 + mov r5, sp +_0803AC6A: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _0803AC9C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _0803AC90 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _0803ACA4 +_0803AC90: + ldr r0, _0803ACA0 + strh r0, [r5] + movs r0, #0 + b _0803ACB6 + .align 2, 0 +_0803AC98: .4byte gUnknown_2023D08 +_0803AC9C: .4byte gUnknown_2024190 +_0803ACA0: .4byte 0x0000FFFF +_0803ACA4: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 +_0803ACB6: + str r0, [r6] + adds r6, #8 + adds r5, #8 + adds r7, #1 + cmp r7, #5 + ble _0803AC6A + movs r0, #0 + bl sub_080A631C + ldr r4, _0803ACE4 + strb r0, [r4] + movs r0, #0 + mov r1, sp + movs r2, #0x80 + bl sub_080341E4 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0803ACE8 + ldr r0, _0803ACEC + b _0803AD4E + .align 2, 0 +_0803ACE4: .4byte gUnknown_2023D08 +_0803ACE8: .4byte gUnknown_3005A64 +_0803ACEC: .4byte sub_0803AD64 +_0803ACF0: + movs r7, #0 + add r6, sp, #4 + mov r5, sp +_0803ACF6: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _0803AD24 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _0803AD1C + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _0803AD2C +_0803AD1C: + ldr r0, _0803AD28 + strh r0, [r5] + movs r0, #0 + b _0803AD3E + .align 2, 0 +_0803AD24: .4byte gUnknown_2024190 +_0803AD28: .4byte 0x0000FFFF +_0803AD2C: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 +_0803AD3E: + str r0, [r6] + adds r6, #8 + adds r5, #8 + adds r7, #1 + cmp r7, #5 + ble _0803ACF6 + ldr r1, _0803AD5C + ldr r0, _0803AD60 +_0803AD4E: + str r0, [r1] +_0803AD50: + add sp, #0x30 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803AD5C: .4byte gUnknown_3005A64 +_0803AD60: .4byte sub_0803AD9C + thumb_func_end sub_0803ABC4 + + thumb_func_start sub_0803AD64 +sub_0803AD64: @ 0x0803AD64 + push {lr} + ldr r0, _0803AD8C + ldr r0, [r0] + cmp r0, #0 + bne _0803AD86 + movs r0, #1 + bl sub_080A631C + ldr r1, _0803AD90 + strb r0, [r1] + ldrb r1, [r1] + movs r0, #0 + bl sub_0803F5A4 + ldr r1, _0803AD94 + ldr r0, _0803AD98 + str r0, [r1] +_0803AD86: + pop {r0} + bx r0 + .align 2, 0 +_0803AD8C: .4byte gUnknown_2023D0C +_0803AD90: .4byte gUnknown_2023D08 +_0803AD94: .4byte gUnknown_3005A64 +_0803AD98: .4byte sub_0803ADC4 + thumb_func_end sub_0803AD64 + + thumb_func_start sub_0803AD9C +sub_0803AD9C: @ 0x0803AD9C + push {lr} + ldr r0, _0803ADB8 + ldr r0, [r0] + cmp r0, #0 + bne _0803ADB4 + ldr r1, _0803ADBC + ldr r0, _0803ADC0 + str r0, [r1] + movs r0, #0 + movs r1, #0 + bl sub_0803F5A4 +_0803ADB4: + pop {r0} + bx r0 + .align 2, 0 +_0803ADB8: .4byte gUnknown_2023D0C +_0803ADBC: .4byte gUnknown_3005A64 +_0803ADC0: .4byte sub_0803B010 + thumb_func_end sub_0803AD9C + + thumb_func_start sub_0803ADC4 +sub_0803ADC4: @ 0x0803ADC4 + push {lr} + ldr r0, _0803ADF4 + ldr r0, [r0] + cmp r0, #0 + bne _0803AE14 + ldr r0, _0803ADF8 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r2 + cmp r0, #0 + beq _0803ADFC + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r2 + cmp r0, #0 + beq _0803ADFC + movs r1, #0x80 + lsls r1, r1, #0x18 + ands r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + b _0803ADFE + .align 2, 0 +_0803ADF4: .4byte gUnknown_2023D0C +_0803ADF8: .4byte gUnknown_2022C90 +_0803ADFC: + movs r0, #1 +_0803ADFE: + bl sub_080A631C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_0803F5A4 + ldr r1, _0803AE18 + ldr r0, _0803AE1C + str r0, [r1] +_0803AE14: + pop {r0} + bx r0 + .align 2, 0 +_0803AE18: .4byte gUnknown_3005A64 +_0803AE1C: .4byte sub_0803AEA0 + thumb_func_end sub_0803ADC4 + + thumb_func_start sub_0803AE20 +sub_0803AE20: @ 0x0803AE20 + push {r4, r5, lr} + ldr r0, _0803AE8C + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0803AE40 + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0803AE40 + movs r5, #2 + cmp r1, #0 + bge _0803AE42 +_0803AE40: + movs r5, #3 +_0803AE42: + ldr r1, _0803AE90 + movs r0, #0 + strb r0, [r1] + ldr r0, _0803AE94 + ldrb r0, [r0] + cmp r0, #0 + beq _0803AE7E + adds r4, r1, #0 +_0803AE52: + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _0803AE6C + movs r0, #0 + bl sub_080341C4 + ldrb r0, [r4] + bl sub_0803F440 +_0803AE6C: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803AE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803AE52 +_0803AE7E: + ldr r1, _0803AE98 + ldr r0, _0803AE9C + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803AE8C: .4byte gUnknown_2022C90 +_0803AE90: .4byte gUnknown_2023D08 +_0803AE94: .4byte gUnknown_2023D10 +_0803AE98: .4byte gUnknown_3005A64 +_0803AE9C: .4byte sub_0803AF58 + thumb_func_end sub_0803AE20 + + thumb_func_start sub_0803AEA0 +sub_0803AEA0: @ 0x0803AEA0 + push {r4, r5, r6, lr} + ldr r0, _0803AEC8 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r2 + cmp r0, #0 + beq _0803AEDC + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r2 + cmp r0, #0 + beq _0803AEDC + movs r1, #0x80 + lsls r1, r1, #0x18 + ands r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r5, r0, #0x1f + b _0803AEDE + .align 2, 0 +_0803AEC8: .4byte gUnknown_2022C90 +_0803AECC: + ldr r1, _0803AED4 + ldr r0, _0803AED8 + b _0803AF34 + .align 2, 0 +_0803AED4: .4byte gUnknown_3005A64 +_0803AED8: .4byte sub_0803AE20 +_0803AEDC: + movs r5, #1 +_0803AEDE: + ldr r0, _0803AF3C + ldr r2, [r0] + cmp r2, #0 + bne _0803AF36 + ldr r0, _0803AF40 + strb r2, [r0] + ldr r1, _0803AF44 + adds r4, r0, #0 + ldrb r1, [r1] + cmp r2, r1 + bhs _0803AF30 + adds r6, r4, #0 +_0803AEF6: + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _0803AF1C + movs r0, #0 + bl sub_080341C4 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, _0803AF48 + ldr r0, [r0] + ldr r1, _0803AF4C + ands r0, r1 + cmp r0, #0 + bne _0803AECC +_0803AF1C: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + ldr r1, _0803AF44 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0803AF40 + ldrb r1, [r1] + cmp r0, r1 + blo _0803AEF6 +_0803AF30: + ldr r1, _0803AF50 + ldr r0, _0803AF54 +_0803AF34: + str r0, [r1] +_0803AF36: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803AF3C: .4byte gUnknown_2023D0C +_0803AF40: .4byte gUnknown_2023D08 +_0803AF44: .4byte gUnknown_2023D10 +_0803AF48: .4byte gUnknown_2022C90 +_0803AF4C: .4byte 0x00008040 +_0803AF50: .4byte gUnknown_3005A64 +_0803AF54: .4byte sub_0803AF58 + thumb_func_end sub_0803AEA0 + + thumb_func_start sub_0803AF58 +sub_0803AF58: @ 0x0803AF58 + push {r4, r5, r6, r7, lr} + ldr r0, _0803AFD0 + ldr r1, [r0] + cmp r1, #0 + bne _0803AFC8 + ldr r2, _0803AFD4 + strb r1, [r2] + ldr r0, _0803AFD8 + ldrb r0, [r0] + cmp r1, r0 + bhs _0803AFC2 + adds r4, r2, #0 + ldr r6, _0803AFDC + movs r5, #0x58 + adds r7, r6, #0 + adds r7, #0x48 +_0803AF78: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803AFB0 + ldr r0, _0803AFE0 + ldr r0, [r0] + ldr r1, _0803AFE4 + ands r0, r1 + cmp r0, #0 + bne _0803AFB0 + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + muls r1, r5, r1 + adds r1, r1, r7 + ldr r2, [r1] + movs r1, #2 + bl sub_0806EAA8 +_0803AFB0: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803AFD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803AF78 +_0803AFC2: + ldr r1, _0803AFE8 + ldr r0, _0803AFEC + str r0, [r1] +_0803AFC8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803AFD0: .4byte gUnknown_2023D0C +_0803AFD4: .4byte gUnknown_2023D08 +_0803AFD8: .4byte gUnknown_2023D10 +_0803AFDC: .4byte gUnknown_2023D28 +_0803AFE0: .4byte gUnknown_2022C90 +_0803AFE4: .4byte 0x063F0902 +_0803AFE8: .4byte gUnknown_3005A64 +_0803AFEC: .4byte sub_0803B010 + thumb_func_end sub_0803AF58 + + thumb_func_start sub_0803AFF0 +sub_0803AFF0: @ 0x0803AFF0 + push {lr} + ldr r0, _0803B004 + ldr r0, [r0] + cmp r0, #0 + bne _0803B000 + ldr r1, _0803B008 + ldr r0, _0803B00C + str r0, [r1] +_0803B000: + pop {r0} + bx r0 + .align 2, 0 +_0803B004: .4byte gUnknown_2023D0C +_0803B008: .4byte gUnknown_3005A64 +_0803B00C: .4byte sub_0803B010 + thumb_func_end sub_0803AFF0 + + thumb_func_start sub_0803B010 +sub_0803B010: @ 0x0803B010 + push {lr} + ldr r0, _0803B060 + ldr r0, [r0] + cmp r0, #0 + bne _0803B05C + ldr r1, _0803B064 + ldr r2, [r1] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r2 + cmp r0, #0 + beq _0803B038 + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r2 + cmp r0, #0 + beq _0803B038 + movs r3, #1 + cmp r2, #0 + bge _0803B03A +_0803B038: + movs r3, #0 +_0803B03A: + ldr r0, [r1] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803B056 + adds r0, r3, #0 + bl sub_080A631C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_0803F5A4 +_0803B056: + ldr r1, _0803B068 + ldr r0, _0803B06C + str r0, [r1] +_0803B05C: + pop {r0} + bx r0 + .align 2, 0 +_0803B060: .4byte gUnknown_2023D0C +_0803B064: .4byte gUnknown_2022C90 +_0803B068: .4byte gUnknown_3005A64 +_0803B06C: .4byte sub_0803B10C + thumb_func_end sub_0803B010 + + thumb_func_start sub_0803B070 +sub_0803B070: @ 0x0803B070 + push {r4, r5, lr} + ldr r0, _0803B0F4 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0803B090 + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0803B090 + movs r5, #3 + cmp r1, #0 + bge _0803B092 +_0803B090: + movs r5, #2 +_0803B092: + ldr r1, _0803B0F8 + movs r0, #0 + strb r0, [r1] + ldr r0, _0803B0FC + ldrb r0, [r0] + cmp r0, #0 + beq _0803B0CE + adds r4, r1, #0 +_0803B0A2: + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _0803B0BC + movs r0, #0 + bl sub_080341C4 + ldrb r0, [r4] + bl sub_0803F440 +_0803B0BC: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803B0FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803B0A2 +_0803B0CE: + ldr r2, _0803B100 + ldr r0, [r2] + adds r0, #0x4c + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xd9 + strb r1, [r0] + ldr r0, [r2] + movs r2, #0xd1 + lsls r2, r2, #1 + adds r0, r0, r2 + strb r1, [r0] + ldr r1, _0803B104 + ldr r0, _0803B108 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803B0F4: .4byte gUnknown_2022C90 +_0803B0F8: .4byte gUnknown_2023D08 +_0803B0FC: .4byte gUnknown_2023D10 +_0803B100: .4byte gUnknown_2024140 +_0803B104: .4byte gUnknown_3005A64 +_0803B108: .4byte sub_0803B26C + thumb_func_end sub_0803B070 + + thumb_func_start sub_0803B10C +sub_0803B10C: @ 0x0803B10C + push {r4, r5, r6, lr} + ldr r0, _0803B130 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0803B144 + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0803B144 + movs r6, #1 + cmp r1, #0 + bge _0803B146 + b _0803B144 + .align 2, 0 +_0803B130: .4byte gUnknown_2022C90 +_0803B134: + ldr r1, _0803B13C + ldr r0, _0803B140 + b _0803B1B6 + .align 2, 0 +_0803B13C: .4byte gUnknown_3005A64 +_0803B140: .4byte sub_0803B070 +_0803B144: + movs r6, #0 +_0803B146: + ldr r0, _0803B1C0 + ldr r2, [r0] + cmp r2, #0 + bne _0803B1B8 + ldr r0, _0803B1C4 + strb r2, [r0] + ldr r1, _0803B1C8 + adds r4, r0, #0 + ldrb r1, [r1] + cmp r2, r1 + bhs _0803B198 + adds r5, r4, #0 +_0803B15E: + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r6 + bne _0803B184 + movs r0, #0 + bl sub_080341C4 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, _0803B1CC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0803B134 +_0803B184: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r1, _0803B1C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0803B1C4 + ldrb r1, [r1] + cmp r0, r1 + blo _0803B15E +_0803B198: + ldr r2, _0803B1D0 + ldr r0, [r2] + adds r0, #0x4c + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xd9 + strb r1, [r0] + ldr r0, [r2] + movs r2, #0xd1 + lsls r2, r2, #1 + adds r0, r0, r2 + strb r1, [r0] + ldr r1, _0803B1D4 + ldr r0, _0803B1D8 +_0803B1B6: + str r0, [r1] +_0803B1B8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803B1C0: .4byte gUnknown_2023D0C +_0803B1C4: .4byte gUnknown_2023D08 +_0803B1C8: .4byte gUnknown_2023D10 +_0803B1CC: .4byte gUnknown_2022C90 +_0803B1D0: .4byte gUnknown_2024140 +_0803B1D4: .4byte gUnknown_3005A64 +_0803B1D8: .4byte sub_0803B26C + thumb_func_end sub_0803B10C + + thumb_func_start sub_0803B1DC +sub_0803B1DC: @ 0x0803B1DC + push {r4, r5, lr} + ldr r0, _0803B250 + ldr r1, [r0] + cmp r1, #0 + bne _0803B24A + ldr r2, _0803B254 + strb r1, [r2] + ldr r0, _0803B258 + ldrb r0, [r0] + cmp r1, r0 + bhs _0803B22A + adds r4, r2, #0 + ldr r5, _0803B25C +_0803B1F6: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803B218 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #0 + movs r2, #0 + bl sub_08033838 + ldrb r0, [r4] + bl sub_0803F440 +_0803B218: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803B258 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803B1F6 +_0803B22A: + ldr r2, _0803B260 + ldr r0, [r2] + adds r0, #0x4c + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xd9 + strb r1, [r0] + ldr r0, [r2] + movs r2, #0xd1 + lsls r2, r2, #1 + adds r0, r0, r2 + strb r1, [r0] + ldr r1, _0803B264 + ldr r0, _0803B268 + str r0, [r1] +_0803B24A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803B250: .4byte gUnknown_2023D0C +_0803B254: .4byte gUnknown_2023D08 +_0803B258: .4byte gUnknown_2023D10 +_0803B25C: .4byte gUnknown_2023D12 +_0803B260: .4byte gUnknown_2024140 +_0803B264: .4byte gUnknown_3005A64 +_0803B268: .4byte sub_0803B26C + thumb_func_end sub_0803B1DC + + thumb_func_start sub_0803B26C +sub_0803B26C: @ 0x0803B26C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + mov sb, r0 + ldr r0, _0803B2B0 + ldr r0, [r0] + cmp r0, #0 + beq _0803B286 + b _0803B4F6 +_0803B286: + ldr r0, _0803B2B4 + ldr r0, [r0] + adds r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + bne _0803B306 + movs r5, #0 + ldr r1, _0803B2B8 + mov sl, r1 + ldrb r3, [r1] + cmp r5, r3 + bge _0803B2AC + ldr r2, _0803B2BC +_0803B2A0: + adds r0, r5, r2 + strb r5, [r0] + adds r5, #1 + ldrb r0, [r1] + cmp r5, r0 + blt _0803B2A0 +_0803B2AC: + movs r5, #0 + b _0803B2FC + .align 2, 0 +_0803B2B0: .4byte gUnknown_2023D0C +_0803B2B4: .4byte gUnknown_2024140 +_0803B2B8: .4byte gUnknown_2023D10 +_0803B2BC: .4byte gUnknown_2023D22 +_0803B2C0: + adds r4, r5, #1 + mov r8, r4 + ldrb r1, [r1] + cmp r8, r1 + bge _0803B2FA + ldr r6, _0803B334 + ldr r1, _0803B338 + mov sl, r1 + lsls r7, r5, #0x18 +_0803B2D2: + adds r0, r5, r6 + ldrb r0, [r0] + adds r1, r4, r6 + ldrb r1, [r1] + movs r2, #1 + bl sub_0803CB54 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B2F0 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r7, #0x18 + bl sub_0803CB20 +_0803B2F0: + adds r4, #1 + ldr r0, _0803B338 + ldrb r0, [r0] + cmp r4, r0 + blt _0803B2D2 +_0803B2FA: + mov r5, r8 +_0803B2FC: + mov r1, sl + ldrb r0, [r1] + subs r0, #1 + cmp r5, r0 + blt _0803B2C0 +_0803B306: + ldr r5, _0803B33C + ldr r0, [r5] + movs r4, #0xd1 + lsls r4, r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0803B340 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0xff + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B340 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #1 + strb r1, [r0] + b _0803B4F6 + .align 2, 0 +_0803B334: .4byte gUnknown_2023D22 +_0803B338: .4byte gUnknown_2023D10 +_0803B33C: .4byte gUnknown_2024140 +_0803B340: + ldr r2, _0803B508 + ldr r0, [r2] + adds r0, #0x4c + ldr r1, _0803B50C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _0803B39A + ldr r5, _0803B510 + adds r4, r2, #0 +_0803B354: + ldr r0, [r4] + adds r0, #0x4c + ldrb r0, [r0] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B37A + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0803B37A: + ldr r1, [r4] + adds r1, #0x4c + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r3, sb + cmp r3, #0 + beq _0803B38C + b _0803B4F6 +_0803B38C: + ldr r0, [r4] + adds r0, #0x4c + ldr r1, _0803B50C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + blo _0803B354 +_0803B39A: + movs r0, #0 + str r0, [sp] + movs r0, #9 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0803B3B4 + b _0803B4F6 +_0803B3B4: + str r0, [sp] + movs r0, #0xb + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B3CA + b _0803B4F6 +_0803B3CA: + ldr r2, _0803B508 + ldr r0, [r2] + adds r0, #0xd9 + ldr r1, _0803B50C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _0803B41E + ldr r5, _0803B510 + adds r4, r2, #0 +_0803B3DE: + ldr r0, [r4] + adds r0, #0xd9 + ldrb r0, [r0] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #0 + movs r2, #0 + bl sub_0804411C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B400 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0803B400: + ldr r1, [r4] + adds r1, #0xd9 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r0, sb + cmp r0, #0 + bne _0803B4F6 + ldr r0, [r4] + adds r0, #0xd9 + ldr r1, _0803B50C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + blo _0803B3DE +_0803B41E: + movs r5, #0 + ldr r1, _0803B508 + mov r8, r1 + movs r7, #6 + ldr r6, _0803B514 + ldr r2, _0803B518 + movs r4, #0xff + movs r3, #0 +_0803B42E: + 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, #2 + adds r5, #1 + cmp r5, #3 + ble _0803B42E + movs r0, #0 + bl sub_0803D1C4 + bl sub_0803D2E4 + ldr r0, _0803B508 + ldr r0, [r0] + adds r0, #0x91 + ldr r1, _0803B51C + ldrb r1, [r1] + strb r1, [r0] + ldr r0, _0803B520 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0803B524 + ldr r0, _0803B528 + str r0, [r1] + bl sub_0803F5C8 + ldr r1, _0803B52C + movs r2, #0 + adds r0, r1, #7 +_0803B478: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _0803B478 + movs r5, #0 + ldr r3, _0803B50C + ldr r2, _0803B508 + ldr r6, _0803B530 + ldr r7, _0803B534 + ldrb r0, [r3] + cmp r5, r0 + bge _0803B4AA + ldr r0, _0803B538 + movs r4, #9 + rsbs r4, r4, #0 + adds r1, r0, #0 + adds r1, #0x50 +_0803B49A: + ldr r0, [r1] + ands r0, r4 + str r0, [r1] + adds r1, #0x58 + adds r5, #1 + ldrb r0, [r3] + cmp r5, r0 + blt _0803B49A +_0803B4AA: + ldr r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + ldr r0, [r2] + movs r3, #0xd0 + lsls r3, r3, #1 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, #1 + adds r0, 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, #3] + strb r1, [r7] + bl sub_0806F050 + ldr r1, _0803B53C + strh r0, [r1] + ldr r0, _0803B540 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0803B4F6 + bl sub_080A2F64 + ldr r0, _0803B544 + bl sub_08044098 +_0803B4F6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803B508: .4byte gUnknown_2024140 +_0803B50C: .4byte gUnknown_2023D10 +_0803B510: .4byte gUnknown_2023D22 +_0803B514: .4byte gUnknown_2023EC0 +_0803B518: .4byte gUnknown_2023F18 +_0803B51C: .4byte gUnknown_2023EB4 +_0803B520: .4byte gUnknown_85AB3BD +_0803B524: .4byte gUnknown_3005A64 +_0803B528: .4byte sub_0803BAB8 +_0803B52C: .4byte gUnknown_2023FD6 +_0803B530: .4byte gUnknown_2024118 +_0803B534: .4byte gUnknown_2023F20 +_0803B538: .4byte gUnknown_2023D28 +_0803B53C: .4byte gUnknown_2023FD4 +_0803B540: .4byte gUnknown_2022C90 +_0803B544: .4byte gUnknown_8289E46 + thumb_func_end sub_0803B26C + + thumb_func_start sub_0803B548 +sub_0803B548: @ 0x0803B548 + push {r4, r5, r6, lr} + ldr r0, _0803B5E0 + ldr r0, [r0] + cmp r0, #0 + bne _0803B5D8 + ldr r1, _0803B5E4 + ldr r0, _0803B5E8 + str r0, [r1] + ldr r3, _0803B5EC + ldr r1, _0803B5F0 + movs r2, #0 + adds r0, r1, #7 +_0803B560: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _0803B560 + movs r4, #0 + ldrb r3, [r3] + cmp r4, r3 + bge _0803B5B2 + ldr r5, _0803B5F4 + adds r6, r5, #0 + adds r6, #0x4c +_0803B576: + movs r0, #0x58 + adds r2, r4, #0 + muls r2, r0, r2 + 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, r2, r6 + ldr r0, [r2] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _0803B5A8 + movs r0, #0x80 + lsls r0, r0, #5 + ands r3, r0 + cmp r3, #0 + beq _0803B5A8 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0803F4E0 +_0803B5A8: + adds r4, #1 + ldr r0, _0803B5EC + ldrb r0, [r0] + cmp r4, r0 + blt _0803B576 +_0803B5B2: + ldr r2, _0803B5F8 + ldr r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + ldr r0, [r2] + movs r3, #0xd0 + lsls r3, r3, #1 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, #1 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #3] + ldr r0, _0803B5FC + strb r1, [r0] +_0803B5D8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803B5E0: .4byte gUnknown_2023D0C +_0803B5E4: .4byte gUnknown_3005A64 +_0803B5E8: .4byte sub_0803B600 +_0803B5EC: .4byte gUnknown_2023D10 +_0803B5F0: .4byte gUnknown_2023FD6 +_0803B5F4: .4byte gUnknown_2023D28 +_0803B5F8: .4byte gUnknown_2024140 +_0803B5FC: .4byte gUnknown_2023F20 + thumb_func_end sub_0803B548 + + thumb_func_start sub_0803B600 +sub_0803B600: @ 0x0803B600 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #1 + bl sub_0803D1C4 + ldr r0, _0803B6A4 + ldrb r0, [r0] + cmp r0, #0 + bne _0803B62E + bl sub_0803FE10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B622 + b _0803B7BC +_0803B622: + bl sub_08040564 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803B62E + b _0803B7BC +_0803B62E: + bl sub_08041368 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0803B63C + b _0803B7BC +_0803B63C: + ldr r0, _0803B6A8 + ldr r0, [r0] + adds r0, #0x4d + strb r1, [r0] + bl sub_08040FA4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0803B652 + b _0803B7BC +_0803B652: + movs r0, #0 + bl sub_0803D1C4 + ldr r2, _0803B6AC + ldr r0, [r2] + ldr r1, _0803B6B0 + ands r0, r1 + ldr r1, _0803B6B4 + ands r0, r1 + ldr r1, _0803B6B8 + ands r0, r1 + ldr r1, _0803B6BC + ands r0, r1 + str r0, [r2] + ldr r0, _0803B6C0 + strb r4, [r0, #0x18] + strb r4, [r0, #0x19] + strb r4, [r0, #0x14] + ldr r0, _0803B6C4 + str r4, [r0] + ldr r0, _0803B6C8 + strb r4, [r0] + ldr r1, _0803B6CC + movs r2, #0 + adds r0, r1, #4 +_0803B684: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _0803B684 + ldr r0, _0803B6A4 + ldrb r0, [r0] + cmp r0, #0 + beq _0803B6DC + ldr r1, _0803B6D0 + movs r0, #0xc + strb r0, [r1] + ldr r1, _0803B6D4 + ldr r0, _0803B6D8 + str r0, [r1] + b _0803B7BC + .align 2, 0 +_0803B6A4: .4byte gUnknown_2023FDE +_0803B6A8: .4byte gUnknown_2024140 +_0803B6AC: .4byte gUnknown_2023F24 +_0803B6B0: .4byte 0xFFFFFDFF +_0803B6B4: .4byte 0xFFF7FFFF +_0803B6B8: .4byte 0xFFBFFFFF +_0803B6BC: .4byte 0xFFEFFFFF +_0803B6C0: .4byte gUnknown_2024118 +_0803B6C4: .4byte gUnknown_2023E94 +_0803B6C8: .4byte gUnknown_2023F20 +_0803B6CC: .4byte gUnknown_2023FD6 +_0803B6D0: .4byte gUnknown_2023D27 +_0803B6D4: .4byte gUnknown_3005A64 +_0803B6D8: .4byte sub_0803D45C +_0803B6DC: + ldr r1, _0803B770 + ldrb r0, [r1, #0x13] + ldr r2, _0803B774 + mov r8, r2 + cmp r0, #0xfe + bhi _0803B6F6 + adds r0, #1 + strb r0, [r1, #0x13] + ldr r1, [r2] + adds r1, #0xda + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0803B6F6: + movs r2, #0 + ldr r4, _0803B778 + ldr r0, _0803B77C + mov ip, r0 + ldr r1, _0803B780 + mov sb, r1 + ldrb r0, [r4] + cmp r2, r0 + bge _0803B724 + ldr r7, _0803B784 + movs r6, #0xff + movs r5, #0 + ldr r3, _0803B788 +_0803B710: + adds r1, r2, r7 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + strh r5, [r3] + adds r3, #2 + adds r2, #1 + ldrb r1, [r4] + cmp r2, r1 + blt _0803B710 +_0803B724: + movs r2, #0 + ldr r3, _0803B774 + movs r1, #6 +_0803B72A: + ldr r0, [r3] + adds r0, r2, r0 + adds r0, #0x5c + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _0803B72A + mov r2, r8 + ldr r0, [r2] + adds r0, #0x91 + mov r2, ip + ldrb r1, [r2] + strb r1, [r0] + mov r0, sb + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0803B78C + ldr r0, _0803B790 + str r0, [r1] + bl sub_0806F050 + ldr r1, _0803B794 + strh r0, [r1] + ldr r0, _0803B798 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803B7A0 + ldr r0, _0803B79C + bl sub_08044098 + b _0803B7BC + .align 2, 0 +_0803B770: .4byte gUnknown_3005A70 +_0803B774: .4byte gUnknown_2024140 +_0803B778: .4byte gUnknown_2023D10 +_0803B77C: .4byte gUnknown_2023EB4 +_0803B780: .4byte gUnknown_85AB3BD +_0803B784: .4byte gUnknown_2023EC0 +_0803B788: .4byte gUnknown_2023F18 +_0803B78C: .4byte gUnknown_3005A64 +_0803B790: .4byte sub_0803BAB8 +_0803B794: .4byte gUnknown_2023FD4 +_0803B798: .4byte gUnknown_2022C90 +_0803B79C: .4byte gUnknown_8289E09 +_0803B7A0: + movs r0, #0x80 + lsls r0, r0, #0xb + ands r1, r0 + cmp r1, #0 + beq _0803B7BC + mov r1, r8 + ldr r0, [r1] + adds r0, #0xda + ldrb r0, [r0] + cmp r0, #0 + bne _0803B7BC + ldr r0, _0803B7C8 + bl sub_08044098 +_0803B7BC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803B7C8: .4byte gUnknown_8289E46 + thumb_func_end sub_0803B600 + + thumb_func_start sub_0803B7CC +sub_0803B7CC: @ 0x0803B7CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _0803B7F0 + ldr r0, _0803B7F4 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0803B7FC + ldr r1, _0803B7F8 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #7] + b _0803B806 + .align 2, 0 +_0803B7F0: .4byte gUnknown_2023D28 +_0803B7F4: .4byte gUnknown_2023D08 +_0803B7F8: .4byte gUnknown_20240A8 +_0803B7FC: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_0803B806: + ldr r1, _0803B91C + ldr r3, _0803B920 + ldrb r0, [r3] + strb r0, [r1] + cmp r2, #0x25 + bne _0803B814 + b _0803B990 +_0803B814: + ldr r0, _0803B924 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803B822 + b _0803B990 +_0803B822: + ldr r1, _0803B928 + ldrb r2, [r3] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x32 + bne _0803B836 + b _0803B990 +_0803B836: + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r0, _0803B92C + ldrb r0, [r0] + cmp r5, r0 + bge _0803B8CA + movs r7, #0 +_0803B84C: + lsrs r4, r7, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + beq _0803B870 + ldr r1, _0803B928 + movs r0, #0x58 + muls r0, r5, r0 + adds r0, r0, r1 + adds r2, r0, #0 + adds r2, #0x20 + ldrb r0, [r2] + cmp r0, #0x17 + bne _0803B870 + b _0803B998 +_0803B870: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + beq _0803B8BA + ldr r3, _0803B928 + ldr r0, _0803B920 + ldrb r0, [r0] + movs r2, #0x58 + muls r0, r2, r0 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1a + beq _0803B8BA + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #2 + beq _0803B8BA + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + beq _0803B8BA + adds r0, r5, #0 + muls r0, r2, r0 + adds r0, r0, r3 + adds r2, r0, #0 + adds r2, #0x20 + ldrb r0, [r2] + cmp r0, #0x47 + bne _0803B8BA + b _0803B9B4 +_0803B8BA: + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r7, r7, r0 + adds r5, #1 + ldr r0, _0803B92C + ldrb r0, [r0] + cmp r5, r0 + blt _0803B84C +_0803B8CA: + ldr r4, _0803B920 + ldrb r1, [r4] + movs r0, #0 + str r0, [sp] + movs r0, #0xf + movs r2, #0x2a + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _0803B93C + ldr r6, _0803B928 + ldrb r0, [r4] + movs r3, #0x58 + muls r0, r3, r0 + adds r1, r0, r6 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #8 + beq _0803B902 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #8 + bne _0803B93C +_0803B902: + ldr r0, _0803B930 + subs r1, r5, #1 + strb r1, [r0, #0x17] + ldr r2, _0803B934 + adds r0, r1, #0 + muls r0, r3, r0 + adds r0, r0, r6 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _0803B938 + movs r0, #2 + b _0803B9D4 + .align 2, 0 +_0803B91C: .4byte gUnknown_2023EB3 +_0803B920: .4byte gUnknown_2023D08 +_0803B924: .4byte gUnknown_2022C90 +_0803B928: .4byte gUnknown_2023D28 +_0803B92C: .4byte gUnknown_2023D10 +_0803B930: .4byte gUnknown_2024118 +_0803B934: .4byte gUnknown_2023EAE +_0803B938: .4byte gUnknown_2023FD6 +_0803B93C: + ldr r1, _0803B970 + ldr r0, _0803B974 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0803B978 + ands r0, r1 + cmp r0, #0 + bne _0803B966 + ldr r1, _0803B97C + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0803B984 +_0803B966: + ldr r1, _0803B980 + movs r0, #0 + strb r0, [r1, #5] + movs r0, #1 + b _0803B9D6 + .align 2, 0 +_0803B970: .4byte gUnknown_2023D28 +_0803B974: .4byte gUnknown_2023D08 +_0803B978: .4byte 0x0400E000 +_0803B97C: .4byte gUnknown_2023F50 +_0803B980: .4byte gUnknown_2023FD6 +_0803B984: + ldr r0, _0803B994 + ldr r0, [r0] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0803B9D0 +_0803B990: + movs r0, #0 + b _0803B9D6 + .align 2, 0 +_0803B994: .4byte gUnknown_2022C90 +_0803B998: + ldr r0, _0803B9A8 + strb r5, [r0, #0x17] + ldr r1, _0803B9AC + ldrb r0, [r2] + strb r0, [r1] + ldr r1, _0803B9B0 + movs r0, #2 + b _0803B9D4 + .align 2, 0 +_0803B9A8: .4byte gUnknown_2024118 +_0803B9AC: .4byte gUnknown_2023EAE +_0803B9B0: .4byte gUnknown_2023FD6 +_0803B9B4: + ldr r0, _0803B9C4 + strb r5, [r0, #0x17] + ldr r1, _0803B9C8 + ldrb r0, [r2] + strb r0, [r1] + ldr r1, _0803B9CC + movs r0, #2 + b _0803B9D4 + .align 2, 0 +_0803B9C4: .4byte gUnknown_2024118 +_0803B9C8: .4byte gUnknown_2023EAE +_0803B9CC: .4byte gUnknown_2023FD6 +_0803B9D0: + ldr r1, _0803B9E0 + movs r0, #1 +_0803B9D4: + strb r0, [r1, #5] +_0803B9D6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0803B9E0: .4byte gUnknown_2023FD6 + thumb_func_end sub_0803B7CC + + thumb_func_start sub_0803B9E4 +sub_0803B9E4: @ 0x0803B9E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + ldr r0, _0803BA80 + mov r8, r0 + ldr r1, _0803BA84 + mov ip, r1 + ldr r7, _0803BA88 + lsls r0, r5, #1 + adds r4, r0, r5 + adds r6, r0, #0 +_0803BA00: + mov r0, ip + adds r2, r3, r0 + ldr r1, [r7] + adds r0, r4, r3 + adds r0, r0, r1 + adds r0, #0x60 + ldrb r0, [r0] + strb r0, [r2] + adds r3, #1 + cmp r3, #2 + ble _0803BA00 + mov r1, r8 + adds r0, r6, r1 + ldrb r0, [r0] + bl sub_081B8C8C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r7, _0803BA88 + ldr r0, [r7] + adds r0, r5, r0 + adds r0, #0x5c + ldrb r0, [r0] + bl sub_081B8C8C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B8C50 + ldr r0, _0803BA8C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0803BA90 + movs r3, #0 + adds r4, r7, #0 + adds r6, r6, r5 + movs r0, #2 + adds r1, r5, #0 + eors r1, r0 + ldr r7, _0803BA84 + lsls r0, r1, #1 + adds r5, r0, r1 +_0803BA5E: + ldr r0, [r4] + adds r1, r6, r3 + adds r1, r1, r0 + adds r1, #0x60 + adds r2, r3, r7 + ldrb r0, [r2] + strb r0, [r1] + ldr r1, [r4] + adds r0, r5, r3 + adds r0, r0, r1 + adds r0, #0x60 + ldrb r1, [r2] + strb r1, [r0] + adds r3, #1 + cmp r3, #2 + ble _0803BA5E + b _0803BAAA + .align 2, 0 +_0803BA80: .4byte gUnknown_2023D12 +_0803BA84: .4byte gUnknown_203CBCC +_0803BA88: .4byte gUnknown_2024140 +_0803BA8C: .4byte gUnknown_2022C90 +_0803BA90: + movs r3, #0 + adds r2, r6, r5 + ldr r4, _0803BAB4 +_0803BA96: + ldr r0, [r7] + adds r1, r2, r3 + adds r1, r1, r0 + adds r1, #0x60 + adds r0, r3, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r3, #1 + cmp r3, #2 + ble _0803BA96 +_0803BAAA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803BAB4: .4byte gUnknown_203CBCC + thumb_func_end sub_0803B9E4 + + thumb_func_start sub_0803BAB8 +sub_0803BAB8: @ 0x0803BAB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r0, _0803BAD4 + movs r1, #0 + strb r1, [r0, #4] + ldr r0, _0803BAD8 + strb r1, [r0] + ldr r0, _0803BADC + bl _0803C956 + .align 2, 0 +_0803BAD4: .4byte gUnknown_2023FD6 +_0803BAD8: .4byte gUnknown_2023D08 +_0803BADC: .4byte gUnknown_2023D10 + thumb_func_end sub_0803BAB8 + + thumb_func_start sub_0803BAE0 +sub_0803BAE0: @ 0x0803BAE0 + ldr r4, _0803BB08 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0803BB0C + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #8 + bls _0803BAFC + bl _0803C948 +_0803BAFC: + lsls r0, r0, #2 + ldr r1, _0803BB10 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803BB08: .4byte gUnknown_2023D08 +_0803BB0C: .4byte gUnknown_2023FD6 +_0803BB10: .4byte _0803BB14 +_0803BB14: @ jump table + .4byte _0803BB38 @ case 0 + .4byte _0803BB50 @ case 1 + .4byte _0803BC70 @ case 2 + .4byte _0803C41C @ case 3 + .4byte _0803C714 @ case 4 + .4byte _0803C7C8 @ case 5 + .4byte _0803C80C @ case 6 + .4byte _0803C838 @ case 7 + .4byte _0803C87C @ case 8 +_0803BB38: + bl sub_08185D28 + ldr r1, _0803BB48 + ldr r0, _0803BB4C + ldrb r0, [r0] + adds r0, r0, r1 + bl _0803C864 + .align 2, 0 +_0803BB48: .4byte gUnknown_2023FD6 +_0803BB4C: .4byte gUnknown_2023D08 +_0803BB50: + ldr r0, _0803BBE8 + ldrb r1, [r0] + ldr r4, _0803BBEC + ldr r0, [r4] + adds r1, r1, r0 + adds r1, #0x5c + movs r0, #6 + strb r0, [r1] + ldr r0, _0803BBF0 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0803BBAC + movs r1, #2 + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _0803BBAC + eors r5, r1 + adds r0, r5, #0 + bl sub_080A631C + ldr r1, [r4] + adds r1, #0x91 + ldrb r1, [r1] + ldr r2, _0803BBF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0803BBAC + ldr r4, _0803BBF8 + adds r0, r5, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #5 + beq _0803BBAC + bl _0803C948 +_0803BBAC: + ldr r0, _0803BBEC + ldr r0, [r0] + adds r0, #0x91 + ldrb r3, [r0] + ldr r1, _0803BBF4 + ldr r4, _0803BBE8 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ands r3, r0 + cmp r3, #0 + beq _0803BC14 + ldr r0, _0803BBFC + adds r0, r2, r0 + movs r1, #0xd + strb r1, [r0] + ldr r0, _0803BBF0 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0803BC00 + ldr r0, _0803BBF8 + ldrb r1, [r4] + adds r1, r1, r0 + movs r0, #5 + strb r0, [r1] + bl _0803C948 + .align 2, 0 +_0803BBE8: .4byte gUnknown_2023D08 +_0803BBEC: .4byte gUnknown_2024140 +_0803BBF0: .4byte gUnknown_2022C90 +_0803BBF4: .4byte gUnknown_82FACB4 +_0803BBF8: .4byte gUnknown_2023FD6 +_0803BBFC: .4byte gUnknown_2023EC0 +_0803BC00: + ldr r0, _0803BC10 + ldrb r1, [r4] + adds r1, r1, r0 + movs r0, #4 + strb r0, [r1] + bl _0803C948 + .align 2, 0 +_0803BC10: .4byte gUnknown_2023FD6 +_0803BC14: + ldr r1, _0803BC44 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + bne _0803BC34 + movs r0, #0x80 + lsls r0, r0, #0xf + ands r1, r0 + cmp r1, #0 + beq _0803BC50 +_0803BC34: + ldr r0, _0803BC48 + adds r0, r2, r0 + strb r3, [r0] + ldr r1, _0803BC4C + ldrb r0, [r4] + bl _0803C8B6 + .align 2, 0 +_0803BC44: .4byte gUnknown_2023D28 +_0803BC48: .4byte gUnknown_2023EC0 +_0803BC4C: .4byte gUnknown_2023FD6 +_0803BC50: + ldr r0, _0803BC68 + ldrb r1, [r0] + ldr r0, _0803BC6C + ldrb r2, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r2, r0 + movs r0, #0 + bl sub_08033C3C + bl _0803C7AC + .align 2, 0 +_0803BC68: .4byte gUnknown_2023EC0 +_0803BC6C: .4byte gUnknown_2023508 +_0803BC70: + ldr r3, _0803BCD4 + ldr r1, _0803BCD8 + ldr r6, _0803BCDC + ldrb r5, [r6] + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r1, r2, #4 + movs r0, #0xf0 + lsls r0, r0, #0x18 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, #8 + orrs r1, r0 + lsls r2, r2, #0xc + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, #0 + beq _0803BC9C + bl _0803C948 +_0803BC9C: + ldr r4, _0803BCE0 + lsls r0, r5, #9 + adds r4, #1 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08184E1C + ldr r1, _0803BCE4 + ldrb r0, [r6] + adds r1, r0, r1 + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r6] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xc + bls _0803BCC8 + b _0803C308 +_0803BCC8: + lsls r0, r0, #2 + ldr r1, _0803BCE8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803BCD4: .4byte gUnknown_2023D0C +_0803BCD8: .4byte gUnknown_82FACB4 +_0803BCDC: .4byte gUnknown_2023D08 +_0803BCE0: .4byte gUnknown_2023508 +_0803BCE4: .4byte gUnknown_2023EC0 +_0803BCE8: .4byte _0803BCEC +_0803BCEC: @ jump table + .4byte _0803BD20 @ case 0 + .4byte _0803BE74 @ case 1 + .4byte _0803BEAC @ case 2 + .4byte _0803C308 @ case 3 + .4byte _0803C308 @ case 4 + .4byte _0803C084 @ case 5 + .4byte _0803C0D0 @ case 6 + .4byte _0803C308 @ case 7 + .4byte _0803C308 @ case 8 + .4byte _0803C308 @ case 9 + .4byte _0803C308 @ case 10 + .4byte _0803C308 @ case 11 + .4byte _0803C0F8 @ case 12 +_0803BD20: + bl sub_0803FD08 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803BD78 + ldr r0, _0803BD68 + ldr r3, _0803BD6C + ldrb r1, [r3] + adds r1, r1, r0 + movs r4, #0 + movs r0, #6 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, _0803BD70 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x54 + strb r4, [r1] + ldrb r1, [r3] + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x84 + movs r0, #4 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, [r2] + adds r2, r1, r2 + ldr r0, _0803BD74 + lsls r1, r1, #9 + adds r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2, #0xc] + bl _0803C9B4 + .align 2, 0 +_0803BD68: .4byte gUnknown_2023FD6 +_0803BD6C: .4byte gUnknown_2023D08 +_0803BD70: .4byte gUnknown_2024140 +_0803BD74: .4byte gUnknown_2023508 +_0803BD78: + ldr r3, _0803BDB8 + ldr r5, _0803BDBC + ldrb r4, [r5] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r2, [r0, #6] + cmp r2, #0 + beq _0803BDCC + ldr r1, _0803BDC0 + lsls r0, r4, #1 + adds r0, r0, r1 + strh r2, [r0] + ldrb r2, [r5] + ldr r0, _0803BDC4 + ldr r1, [r0] + adds r1, r2, r1 + adds r1, #0x80 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #0xc] + strb r0, [r1] + ldr r1, _0803BDC8 + ldrb r0, [r5] + adds r0, r0, r1 + movs r1, #4 + strb r1, [r0] + bl _0803C9B4 + .align 2, 0 +_0803BDB8: .4byte gUnknown_2023F60 +_0803BDBC: .4byte gUnknown_2023D08 +_0803BDC0: .4byte gUnknown_2023F18 +_0803BDC4: .4byte gUnknown_2024140 +_0803BDC8: .4byte gUnknown_2023FD6 +_0803BDCC: + add r2, sp, #4 + ldr r3, _0803BE6C + movs r1, #0x58 + adds r0, r4, #0 + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r2, #0x10] + ldrb r0, [r5] + muls r0, r1, r0 + adds r0, r0, r3 + adds r0, #0x21 + ldrb r0, [r0] + strb r0, [r2, #0x12] + ldrb r0, [r5] + muls r0, r1, r0 + adds r0, 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 sl, r2 + mov r8, r3 + adds r7, r5, #0 + movs r6, #0x58 + movs r0, #0xc + add r0, r8 + mov sb, r0 + add r5, sp, #4 +_0803BE0E: + lsls r2, r4, #1 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r2, r0 + add r0, sb + ldrh r0, [r0] + strh r0, [r5] + ldr r1, [sp, #0x18] + adds r3, r1, r4 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r4, r0 + mov r1, r8 + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldrb r0, [r7] + adds r1, r0, #0 + muls r1, r6, r1 + adds r2, r2, r1 + add r2, sb + ldrh r0, [r2] + add r1, r8 + adds r1, #0x3b + ldrb r1, [r1] + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + bl sub_0806B424 + mov r2, sl + adds r1, r2, r4 + strb r0, [r1] + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _0803BE0E + ldr r0, _0803BE70 + ldr r1, [r0] + movs r0, #1 + ands r1, r0 + movs r0, #0 + movs r2, #0 + add r3, sp, #4 + bl sub_08033C88 + b _0803C072 + .align 2, 0 +_0803BE6C: .4byte gUnknown_2023D28 +_0803BE70: .4byte gUnknown_2022C90 +_0803BE74: + ldr r0, _0803BE98 + ldr r0, [r0] + ldr r1, _0803BE9C + ands r0, r1 + cmp r0, #0 + bne _0803BE82 + b _0803C0D0 +_0803BE82: + ldr r4, _0803BEA0 + ldrb r0, [r4] + movs r1, #1 + bl sub_08184E68 + ldr r1, _0803BEA4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803BEA8 + b _0803C3C8 + .align 2, 0 +_0803BE98: .4byte gUnknown_2022C90 +_0803BE9C: .4byte 0x021F0902 +_0803BEA0: .4byte gUnknown_2023D08 +_0803BEA4: .4byte gUnknown_2023EC4 +_0803BEA8: .4byte gUnknown_8289E01 +_0803BEAC: + ldr r5, _0803BF14 + ldrb r0, [r5] + ldr r3, _0803BF18 + ldr r1, [r3] + adds r1, r0, r1 + adds r1, #0x58 + ldr r2, _0803BF1C + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r7, _0803BF20 + ldrb r2, [r5] + movs r6, #0x58 + adds r0, r2, #0 + muls r0, r6, r0 + adds r1, r7, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0803BF24 + ands r1, r0 + cmp r1, #0 + bne _0803BEFC + ldr r0, _0803BF28 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + bne _0803BEFC + ldr r0, _0803BF2C + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #0x80 + lsls r0, r0, #3 + ands r1, r0 + cmp r1, #0 + beq _0803BF30 +_0803BEFC: + ldr r0, _0803BF14 + ldrb r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x60 + ldr r0, [r3] + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #6 + b _0803C044 + .align 2, 0 +_0803BF14: .4byte gUnknown_2023D08 +_0803BF18: .4byte gUnknown_2024140 +_0803BF1C: .4byte gUnknown_2023D12 +_0803BF20: .4byte gUnknown_2023D28 +_0803BF24: .4byte 0x0400E000 +_0803BF28: .4byte gUnknown_2022C90 +_0803BF2C: .4byte gUnknown_2023F50 +_0803BF30: + str r1, [sp] + movs r0, #0xc + adds r1, r2, #0 + movs r2, #0x17 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0803BFB8 + ldrb r1, [r5] + str r4, [sp] + movs r0, #0xc + movs r2, #0x47 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0803BF80 + ldrb r0, [r5] + muls r0, r6, r0 + adds r1, r0, r7 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #2 + beq _0803BF80 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + beq _0803BF80 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1a + bne _0803BFB8 +_0803BF80: + ldr r5, _0803BFE4 + ldrb r1, [r5] + movs r0, #0 + str r0, [sp] + movs r0, #0xf + movs r2, #0x2a + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0803BFF4 + ldr r2, _0803BFE8 + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #8 + beq _0803BFB8 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #8 + bne _0803BFF4 +_0803BFB8: + subs r1, r4, #1 + lsls r1, r1, #4 + movs r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0803BFEC + ldrb r3, [r0] + ldr r4, _0803BFF0 + ldr r0, _0803BFE4 + ldrb r0, [r0] + lsls r2, r0, #1 + adds r2, r2, r0 + adds r2, #0x60 + ldr r0, [r4] + adds r0, r0, r2 + str r0, [sp] + movs r0, #0 + movs r2, #6 + bl sub_08033CF8 + b _0803C072 + .align 2, 0 +_0803BFE4: .4byte gUnknown_2023D08 +_0803BFE8: .4byte gUnknown_2023D28 +_0803BFEC: .4byte gUnknown_2023EAE +_0803BFF0: .4byte gUnknown_2024140 +_0803BFF4: + ldr r0, _0803C010 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #2 + bne _0803C01C + ldr r0, _0803C014 + ldrb r0, [r0] + cmp r0, #2 + bne _0803C01C + ldr r0, _0803C018 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x5c + b _0803C032 + .align 2, 0 +_0803C010: .4byte gUnknown_2023D08 +_0803C014: .4byte gUnknown_2023EC0 +_0803C018: .4byte gUnknown_2024140 +_0803C01C: + ldrb r0, [r4] + cmp r0, #3 + bne _0803C054 + ldr r0, _0803C04C + ldrb r0, [r0, #1] + cmp r0, #2 + bne _0803C054 + ldr r0, _0803C050 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x5d +_0803C032: + ldrb r2, [r0] + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, #0x60 + adds r3, r3, r0 + str r3, [sp] + movs r0, #0 + movs r1, #0 +_0803C044: + movs r3, #0 + bl sub_08033CF8 + b _0803C072 + .align 2, 0 +_0803C04C: .4byte gUnknown_2023EC0 +_0803C050: .4byte gUnknown_2024140 +_0803C054: + ldr r2, _0803C07C + ldr r0, _0803C080 + ldrb r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x60 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #6 + movs r3, #0 + bl sub_08033CF8 +_0803C072: + ldr r0, _0803C080 + ldrb r0, [r0] + bl sub_0803F440 + b _0803C308 + .align 2, 0 +_0803C07C: .4byte gUnknown_2024140 +_0803C080: .4byte gUnknown_2023D08 +_0803C084: + bl sub_0806B378 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C090 + b _0803C308 +_0803C090: + ldr r1, _0803C0BC + ldr r3, _0803C0C0 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803C0C4 + str r1, [r0] + ldr r0, _0803C0C8 + ldrb r1, [r3] + adds r1, r1, r0 + movs r4, #0 + movs r0, #6 + strb r0, [r1] + ldrb r1, [r3] + ldr r2, _0803C0CC + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x54 + strb r4, [r1] + ldrb r1, [r3] + b _0803C3E4 + .align 2, 0 +_0803C0BC: .4byte gUnknown_2023EC4 +_0803C0C0: .4byte gUnknown_2023D08 +_0803C0C4: .4byte gUnknown_8289099 +_0803C0C8: .4byte gUnknown_2023FD6 +_0803C0CC: .4byte gUnknown_2024140 +_0803C0D0: + ldr r2, _0803C0F0 + ldr r4, _0803C0F4 + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, #0x60 + ldr r1, [r2] + adds r1, r1, r0 + movs r0, #0 + bl sub_08033CC4 + ldrb r0, [r4] + bl sub_0803F440 + b _0803C308 + .align 2, 0 +_0803C0F0: .4byte gUnknown_2024140 +_0803C0F4: .4byte gUnknown_2023D08 +_0803C0F8: + ldr r4, _0803C188 + ldr r5, _0803C18C + ldrb r0, [r5] + adds r0, r0, r4 + movs r1, #7 + strb r1, [r0] + ldrb r0, [r5] + bl sub_080A630C + movs r6, #2 + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + movs r1, #1 + strb r1, [r0] + ldrb r0, [r5] + bl sub_08184E68 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _0803C190 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r7, #0x58 + muls r0, r7, r0 + adds r4, r1, #0 + adds r4, #0x50 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + bne _0803C176 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r7, r0 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0803C194 +_0803C176: + movs r0, #0 + bl sub_0803424C + ldrb r0, [r5] + bl sub_0803F440 + bl _0803C9B4 + .align 2, 0 +_0803C188: .4byte gUnknown_2023FD6 +_0803C18C: .4byte gUnknown_2023D08 +_0803C190: .4byte gUnknown_2023D28 +_0803C194: + ldr r4, _0803C1D0 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #2 + bne _0803C1D4 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_08184E68 + b _0803C2F2 + .align 2, 0 +_0803C1D0: .4byte gUnknown_2023EC0 +_0803C1D4: + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #3 + bne _0803C1FA + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + b _0803C2AC +_0803C1FA: + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0803C26C + ldr r4, _0803C264 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0803C25A + ldr r4, _0803C268 + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #6] + cmp r0, #0 + beq _0803C26C +_0803C25A: + ldrb r0, [r5] + bl sub_080A630C + eors r0, r6 + b _0803C2AC + .align 2, 0 +_0803C264: .4byte gUnknown_2023FE0 +_0803C268: .4byte gUnknown_2023F60 +_0803C26C: + ldr r0, _0803C2C0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803C2D4 + ldr r4, _0803C2C4 + ldr r6, _0803C2C8 + ldrb r0, [r6] + bl sub_080A630C + movs r5, #2 + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0803C2D4 + ldr r1, _0803C2CC + ldr r0, _0803C2D0 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r6] + bl sub_080A630C + eors r0, r5 +_0803C2AC: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08184E68 + b _0803C2F2 + .align 2, 0 +_0803C2C0: .4byte gUnknown_2022C90 +_0803C2C4: .4byte gUnknown_2023EC0 +_0803C2C8: .4byte gUnknown_2023D08 +_0803C2CC: .4byte gUnknown_3005AE0 +_0803C2D0: .4byte gUnknown_203B9FC +_0803C2D4: + ldr r0, _0803C304 + ldrb r0, [r0] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_08184E68 +_0803C2F2: + movs r0, #0 + bl sub_0803424C + ldr r0, _0803C304 + ldrb r0, [r0] + bl sub_0803F440 + b _0803C9B4 + .align 2, 0 +_0803C304: .4byte gUnknown_2023D08 +_0803C308: + ldr r1, _0803C348 + ldr r2, [r1] + movs r5, #8 + adds r0, r2, #0 + ands r0, r5 + adds r3, r1, #0 + cmp r0, #0 + beq _0803C364 + ldr r0, _0803C34C + ands r2, r0 + cmp r2, #0 + beq _0803C364 + ldr r0, _0803C350 + ldr r4, _0803C354 + ldrb r2, [r4] + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #3 + bne _0803C364 + ldr r1, _0803C358 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, _0803C35C + str r1, [r0] + ldr r1, _0803C360 + ldrb r0, [r4] + adds r0, r0, r1 + movs r3, #0 + strb r5, [r0] + b _0803C3D6 + .align 2, 0 +_0803C348: .4byte gUnknown_2022C90 +_0803C34C: .4byte 0x043F0100 +_0803C350: .4byte gUnknown_2023508 +_0803C354: .4byte gUnknown_2023D08 +_0803C358: .4byte gUnknown_2023EC4 +_0803C35C: .4byte gUnknown_8289F42 +_0803C360: .4byte gUnknown_2023FD6 +_0803C364: + ldr r0, [r3] + ldr r1, _0803C390 + ands r0, r1 + cmp r0, #8 + bne _0803C3A4 + ldr r0, _0803C394 + ldr r4, _0803C398 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #3 + bne _0803C3A4 + ldr r0, _0803C39C + bl sub_08044098 + ldr r1, _0803C3A0 + ldrb r0, [r4] + adds r0, r0, r1 + b _0803C864 + .align 2, 0 +_0803C390: .4byte gUnknown_200000A +_0803C394: .4byte gUnknown_2023508 +_0803C398: .4byte gUnknown_2023D08 +_0803C39C: .4byte gUnknown_8289086 +_0803C3A0: .4byte gUnknown_2023FD6 +_0803C3A4: + bl sub_0803B7CC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803C408 + ldr r0, _0803C3F0 + ldr r4, _0803C3F4 + ldrb r2, [r4] + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #3 + bne _0803C408 + ldr r1, _0803C3F8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, _0803C3FC +_0803C3C8: + str r1, [r0] + ldr r0, _0803C400 + ldrb r1, [r4] + adds r1, r1, r0 + movs r3, #0 + movs r0, #6 + strb r0, [r1] +_0803C3D6: + ldrb r1, [r4] + ldr r2, _0803C404 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x54 + strb r3, [r1] + ldrb r1, [r4] +_0803C3E4: + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] + b _0803C9B4 + .align 2, 0 +_0803C3F0: .4byte gUnknown_2023508 +_0803C3F4: .4byte gUnknown_2023D08 +_0803C3F8: .4byte gUnknown_2023EC4 +_0803C3FC: .4byte gUnknown_8289093 +_0803C400: .4byte gUnknown_2023FD6 +_0803C404: .4byte gUnknown_2024140 +_0803C408: + ldr r2, _0803C414 + ldr r0, _0803C418 + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C414: .4byte gUnknown_2023FD6 +_0803C418: .4byte gUnknown_2023D08 +_0803C41C: + ldr r4, _0803C460 + ldr r1, _0803C464 + ldr r3, _0803C468 + ldrb r5, [r3] + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r0, r2, #4 + movs r1, #0xf0 + lsls r1, r1, #0x18 + orrs r0, r1 + orrs r0, r2 + lsls r1, r2, #8 + orrs r0, r1 + lsls r2, r2, #0xc + orrs r0, r2 + ldr r1, [r4] + ands r1, r0 + adds r4, r3, #0 + cmp r1, #0 + beq _0803C448 + b _0803C948 +_0803C448: + ldr r1, _0803C46C + adds r0, r5, r1 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #9 + bls _0803C456 + b _0803C948 +_0803C456: + lsls r0, r0, #2 + ldr r1, _0803C470 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803C460: .4byte gUnknown_2023D0C +_0803C464: .4byte gUnknown_82FACB4 +_0803C468: .4byte gUnknown_2023D08 +_0803C46C: .4byte gUnknown_2023EC0 +_0803C470: .4byte _0803C474 +_0803C474: @ jump table + .4byte _0803C49C @ case 0 + .4byte _0803C5E0 @ case 1 + .4byte _0803C618 @ case 2 + .4byte _0803C64E @ case 3 + .4byte _0803C670 @ case 4 + .4byte _0803C684 @ case 5 + .4byte _0803C698 @ case 6 + .4byte _0803C6C8 @ case 7 + .4byte _0803C6DC @ case 8 + .4byte _0803C700 @ case 9 +_0803C49C: + ldr r1, _0803C4B8 + ldrb r3, [r4] + lsls r0, r3, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #3 + blt _0803C4CE + cmp r1, #9 + ble _0803C4BC + cmp r1, #0xf + beq _0803C4C2 + b _0803C4CE + .align 2, 0 +_0803C4B8: .4byte gUnknown_2023508 +_0803C4BC: + adds r0, r3, r2 + strb r1, [r0] + b _0803C9B4 +_0803C4C2: + adds r1, r3, r2 + movs r0, #2 + strb r0, [r1] + bl sub_0803CA3C + b _0803C9B4 +_0803C4CE: + movs r0, #2 + bl sub_08185D94 + ldr r4, _0803C504 + ldr r6, _0803C508 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r5, r4, #2 + adds r0, r1, r5 + ldrb r2, [r0] + adds r7, r4, #3 + adds r1, r1, r7 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + ldr r0, _0803C50C + cmp r2, r0 + bne _0803C514 + ldr r0, _0803C510 + adds r0, r3, r0 + movs r1, #1 + strb r1, [r0] + ldrb r0, [r6] + bl sub_08184E68 + b _0803C948 + .align 2, 0 +_0803C504: .4byte gUnknown_2023508 +_0803C508: .4byte gUnknown_2023D08 +_0803C50C: .4byte 0x0000FFFF +_0803C510: .4byte gUnknown_2023FD6 +_0803C514: + bl sub_0803F78C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803C560 + ldrb r0, [r6] + movs r1, #1 + bl sub_08184E68 + ldr r0, _0803C558 + ldrb r1, [r6] + adds r1, r1, r0 + movs r3, #0 + movs r0, #6 + strb r0, [r1] + ldrb r1, [r6] + ldr r2, _0803C55C + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x54 + strb r3, [r1] + ldrb r0, [r6] + lsls r0, r0, #9 + adds r1, r4, #1 + adds r0, r0, r1 + strb r3, [r0] + ldrb r1, [r6] + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0x84 + movs r0, #2 + strb r0, [r1] + b _0803C9B4 + .align 2, 0 +_0803C558: .4byte gUnknown_2023FD6 +_0803C55C: .4byte gUnknown_2024140 +_0803C560: + ldr r0, _0803C5CC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + bne _0803C586 + ldrb r0, [r6] + lsls r1, r0, #9 + adds r1, r1, r5 + ldrb r1, [r1] + bl sub_08184E1C + ldrb r0, [r6] + lsls r1, r0, #9 + adds r1, r1, r7 + ldrb r1, [r1] + bl sub_08184E1C +_0803C586: + ldrb r0, [r6] + ldr r4, _0803C5D0 + ldr r1, [r4] + adds r1, r0, r1 + adds r1, #0x80 + lsls r0, r0, #9 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0803C5D4 + ldrb r2, [r6] + lsls r5, r2, #1 + adds r5, r5, r0 + ldr r3, _0803C5D8 + ldr r4, [r4] + adds r0, r2, r4 + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #0x58 + muls r1, r2, r1 + adds r0, r0, r1 + adds r3, #0xc + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r5] + ldrb r0, [r6] + adds r4, r0, r4 + lsls r0, r0, #9 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r4, #0xc] + ldr r0, _0803C5DC + ldrb r1, [r6] + b _0803C7B6 + .align 2, 0 +_0803C5CC: .4byte gUnknown_2022C90 +_0803C5D0: .4byte gUnknown_2024140 +_0803C5D4: .4byte gUnknown_2023F18 +_0803C5D8: .4byte gUnknown_2023D28 +_0803C5DC: .4byte gUnknown_2023FD6 +_0803C5E0: + ldr r2, _0803C608 + ldr r5, _0803C60C + ldrb r4, [r5] + lsls r1, r4, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + cmp r3, #0 + bne _0803C5FE + b _0803C860 +_0803C5FE: + ldr r0, _0803C610 + strh r3, [r0] + ldr r0, _0803C614 + ldrb r1, [r5] + b _0803C7B6 + .align 2, 0 +_0803C608: .4byte gUnknown_2023508 +_0803C60C: .4byte gUnknown_2023D08 +_0803C610: .4byte gUnknown_2023EAC +_0803C614: .4byte gUnknown_2023FD6 +_0803C618: + ldr r0, _0803C63C + ldr r4, _0803C640 + ldrb r2, [r4] + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #6 + bne _0803C648 + ldr r0, _0803C644 + adds r0, r2, r0 + movs r1, #1 + strb r1, [r0] + ldrb r0, [r4] + bl sub_08184E68 + b _0803C948 + .align 2, 0 +_0803C63C: .4byte gUnknown_2023508 +_0803C640: .4byte gUnknown_2023D08 +_0803C644: .4byte gUnknown_2023FD6 +_0803C648: + bl sub_0803CA3C + b _0803C7B2 +_0803C64E: + ldr r2, _0803C664 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + str r0, [r2] + ldr r2, _0803C668 + ldr r0, _0803C66C + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C664: .4byte gUnknown_2023F24 +_0803C668: .4byte gUnknown_2023FD6 +_0803C66C: .4byte gUnknown_2023D08 +_0803C670: + ldr r2, _0803C67C + ldr r0, _0803C680 + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C67C: .4byte gUnknown_2023FD6 +_0803C680: .4byte gUnknown_2023D08 +_0803C684: + ldr r2, _0803C690 + ldr r0, _0803C694 + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C690: .4byte gUnknown_2023FD6 +_0803C694: .4byte gUnknown_2023D08 +_0803C698: + ldr r3, _0803C6BC + ldr r0, _0803C6C0 + ldrb r4, [r0] + lsls r1, r4, #9 + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r2, [r0] + adds r3, #2 + adds r1, r1, r3 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + cmp r2, #0 + bne _0803C6B6 + b _0803C860 +_0803C6B6: + ldr r1, _0803C6C4 + adds r1, r4, r1 + b _0803C7B8 + .align 2, 0 +_0803C6BC: .4byte gUnknown_2023508 +_0803C6C0: .4byte gUnknown_2023D08 +_0803C6C4: .4byte gUnknown_2023FD6 +_0803C6C8: + ldr r2, _0803C6D4 + ldr r0, _0803C6D8 + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C6D4: .4byte gUnknown_2023FD6 +_0803C6D8: .4byte gUnknown_2023D08 +_0803C6DC: + ldr r2, _0803C6F4 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + str r0, [r2] + ldr r2, _0803C6F8 + ldr r0, _0803C6FC + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C6F4: .4byte gUnknown_2023F24 +_0803C6F8: .4byte gUnknown_2023FD6 +_0803C6FC: .4byte gUnknown_2023D08 +_0803C700: + ldr r2, _0803C70C + ldr r0, _0803C710 + ldrb r1, [r0] + adds r1, r1, r2 + b _0803C7B8 + .align 2, 0 +_0803C70C: .4byte gUnknown_2023FD6 +_0803C710: .4byte gUnknown_2023D08 +_0803C714: + ldr r3, _0803C78C + ldr r6, _0803C790 + ldr r0, _0803C794 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r2, [r0] + lsls r1, r2, #4 + movs r0, #0xf0 + lsls r0, r0, #0x18 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, #8 + orrs r1, r0 + lsls r2, r2, #0xc + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, #0 + beq _0803C73E + b _0803C948 +_0803C73E: + bl sub_0803C9FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + ldr r0, _0803C798 + ldr r0, [r0] + movs r1, #0x41 + ands r0, r1 + cmp r0, #1 + bne _0803C780 + movs r1, #2 + movs r0, #2 + ands r0, r5 + cmp r0, #0 + bne _0803C780 + adds r0, r5, #0 + eors r0, r1 + bl sub_080A631C + ldr r1, _0803C79C + ldr r1, [r1] + adds r1, #0x91 + ldrb r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r6 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0803C7A0 +_0803C780: + movs r0, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_080342BC + b _0803C7AA + .align 2, 0 +_0803C78C: .4byte gUnknown_2023D0C +_0803C790: .4byte gUnknown_82FACB4 +_0803C794: .4byte gUnknown_2023D08 +_0803C798: .4byte gUnknown_2022C90 +_0803C79C: .4byte gUnknown_2024140 +_0803C7A0: + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_080342BC +_0803C7AA: + ldr r4, _0803C7C0 +_0803C7AC: + ldrb r0, [r4] + bl sub_0803F440 +_0803C7B2: + ldr r0, _0803C7C4 + ldrb r1, [r4] +_0803C7B6: + adds r1, r1, r0 +_0803C7B8: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0803C948 + .align 2, 0 +_0803C7C0: .4byte gUnknown_2023D08 +_0803C7C4: .4byte gUnknown_2023FD6 +_0803C7C8: + ldr r3, _0803C7FC + ldr r1, _0803C800 + ldr r0, _0803C804 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r1, r2, #4 + movs r0, #0xf0 + lsls r0, r0, #0x18 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, #8 + orrs r1, r0 + lsls r2, r2, #0xc + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, #0 + beq _0803C7F2 + b _0803C948 +_0803C7F2: + ldr r1, _0803C808 + ldrb r0, [r1, #4] + adds r0, #1 + strb r0, [r1, #4] + b _0803C948 + .align 2, 0 +_0803C7FC: .4byte gUnknown_2023D0C +_0803C800: .4byte gUnknown_82FACB4 +_0803C804: .4byte gUnknown_2023D08 +_0803C808: .4byte gUnknown_2023FD6 +_0803C80C: + ldr r5, _0803C82C + ldrb r2, [r5] + ldr r0, _0803C830 + ldr r0, [r0] + adds r1, r2, r0 + adds r0, r1, #0 + adds r0, #0x54 + ldrb r0, [r0] + cmp r0, #0 + beq _0803C8F8 + ldr r0, _0803C834 + adds r0, r2, r0 + adds r1, #0x84 + ldrb r1, [r1] + strb r1, [r0] + b _0803C948 + .align 2, 0 +_0803C82C: .4byte gUnknown_2023D08 +_0803C830: .4byte gUnknown_2024140 +_0803C834: .4byte gUnknown_2023FD6 +_0803C838: + ldr r3, _0803C86C + ldr r1, _0803C870 + ldr r0, _0803C874 + ldrb r4, [r0] + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r1, r2, #4 + movs r0, #0xf0 + lsls r0, r0, #0x18 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, #8 + orrs r1, r0 + lsls r2, r2, #0xc + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, #0 + bne _0803C948 +_0803C860: + ldr r0, _0803C878 + adds r0, r4, r0 +_0803C864: + movs r1, #1 + strb r1, [r0] + b _0803C948 + .align 2, 0 +_0803C86C: .4byte gUnknown_2023D0C +_0803C870: .4byte gUnknown_82FACB4 +_0803C874: .4byte gUnknown_2023D08 +_0803C878: .4byte gUnknown_2023FD6 +_0803C87C: + ldr r5, _0803C8C0 + ldrb r2, [r5] + ldr r4, _0803C8C4 + ldr r0, [r4] + adds r0, r2, r0 + adds r0, #0x54 + ldrb r0, [r0] + cmp r0, #0 + beq _0803C8F8 + ldr r0, _0803C8C8 + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xd + bne _0803C8D8 + ldr r2, _0803C8CC + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + str r0, [r2] + ldr r1, _0803C8D0 + ldrb r0, [r5] + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + ldr r1, _0803C8D4 + ldrb r0, [r5] +_0803C8B6: + adds r0, r0, r1 + movs r1, #4 + strb r1, [r0] + b _0803C948 + .align 2, 0 +_0803C8C0: .4byte gUnknown_2023D08 +_0803C8C4: .4byte gUnknown_2024140 +_0803C8C8: .4byte gUnknown_2023508 +_0803C8CC: .4byte gUnknown_2023F24 +_0803C8D0: .4byte gUnknown_2023EC0 +_0803C8D4: .4byte gUnknown_2023FD6 +_0803C8D8: + adds r0, r2, #0 + movs r1, #1 + bl sub_08184E68 + ldr r2, _0803C8F4 + ldrb r0, [r5] + adds r2, r0, r2 + ldr r1, [r4] + adds r0, r0, r1 + adds r0, #0x84 + ldrb r0, [r0] + strb r0, [r2] + b _0803C948 + .align 2, 0 +_0803C8F4: .4byte gUnknown_2023FD6 +_0803C8F8: + ldr r0, _0803C9C4 + strb r2, [r0] + ldr r7, _0803C9C8 + ldr r6, _0803C9CC + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r4, [r0] + str r4, [r7] + ldr r3, _0803C9D0 + ldr r1, _0803C9D4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + lsls r1, r2, #4 + movs r0, #0xf0 + lsls r0, r0, #0x18 + orrs r1, r0 + orrs r1, r2 + lsls r0, r2, #8 + orrs r1, r0 + lsls r2, r2, #0xc + orrs r1, r2 + ldr r0, [r3] + ands r0, r1 + cmp r0, #0 + bne _0803C93E + ldr r0, _0803C9D8 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_0803C93E: + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r7] + str r1, [r0] +_0803C948: + ldr r0, _0803C9DC + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _0803C9E0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 +_0803C956: + adds r5, r0, #0 + ldrb r0, [r5] + cmp r1, r0 + bhs _0803C962 + bl sub_0803BAE0 +_0803C962: + ldr r0, _0803C9E4 + ldrb r0, [r0, #4] + ldrb r1, [r5] + cmp r0, r1 + bne _0803C9B4 + movs r0, #1 + bl sub_08185D94 + ldr r1, _0803C9E8 + ldr r0, _0803C9EC + str r0, [r1] + ldr r0, _0803C9F0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0803C9B4 + movs r4, #0 + ldrb r5, [r5] + cmp r4, r5 + bge _0803C9B4 +_0803C98E: + ldr r0, _0803C9F4 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, #2 + bne _0803C9AA + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803C9F8 + ldr r1, [r1] + adds r1, r4, r1 + adds r1, #0x5c + ldrb r1, [r1] + bl sub_08056DEC +_0803C9AA: + adds r4, #1 + ldr r0, _0803C9E0 + ldrb r0, [r0] + cmp r4, r0 + blt _0803C98E +_0803C9B4: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803C9C4: .4byte gUnknown_2023EAF +_0803C9C8: .4byte gUnknown_2023EB8 +_0803C9CC: .4byte gUnknown_2023EC4 +_0803C9D0: .4byte gUnknown_2023D0C +_0803C9D4: .4byte gUnknown_82FACB4 +_0803C9D8: .4byte gUnknown_82EC694 +_0803C9DC: .4byte gUnknown_2023D08 +_0803C9E0: .4byte gUnknown_2023D10 +_0803C9E4: .4byte gUnknown_2023FD6 +_0803C9E8: .4byte gUnknown_3005A64 +_0803C9EC: .4byte sub_0803CF2C +_0803C9F0: .4byte gUnknown_2022C90 +_0803C9F4: .4byte gUnknown_2023EC0 +_0803C9F8: .4byte gUnknown_2024140 + thumb_func_end sub_0803BAE0 + + thumb_func_start sub_0803C9FC +sub_0803C9FC: @ 0x0803C9FC + push {r4, r5, lr} + movs r3, #0 + movs r1, #0 + ldr r0, _0803CA2C + ldrb r2, [r0] + adds r5, r0, #0 + cmp r3, r2 + bge _0803CA1E + ldr r4, _0803CA30 +_0803CA0E: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #5 + bne _0803CA18 + adds r3, #1 +_0803CA18: + adds r1, #1 + cmp r1, r2 + blt _0803CA0E +_0803CA1E: + adds r0, r3, #1 + ldrb r5, [r5] + cmp r0, r5 + beq _0803CA34 + movs r0, #0 + b _0803CA36 + .align 2, 0 +_0803CA2C: .4byte gUnknown_2023D10 +_0803CA30: .4byte gUnknown_2023FD6 +_0803CA34: + movs r0, #1 +_0803CA36: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0803C9FC + + thumb_func_start sub_0803CA3C +sub_0803CA3C: @ 0x0803CA3C + push {r4, r5, r6, r7, lr} + ldr r7, _0803CB10 + ldrb r0, [r7] + ldr r6, _0803CB14 + ldr r1, [r6] + adds r1, r0, r1 + adds r1, #0x5c + ldr r4, _0803CB18 + lsls r0, r0, #9 + adds r2, r4, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_08184E1C + ldr r0, _0803CB1C + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _0803CB0A + ldrb r0, [r7] + ldr r2, [r6] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, 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, r1, r0 + adds r1, r1, r2 + adds r1, #0x60 + lsls r0, r0, #9 + adds r5, r4, #2 + adds r0, 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, r0, r1 + adds r0, r0, r2 + adds r0, #0x61 + lsls r1, r1, #9 + adds r4, #3 + mov ip, r4 + add r1, ip + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + movs r4, #2 + eors r0, r4 + ldr r2, [r6] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, 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, r1, r0 + adds r1, r1, r2 + adds r1, #0x60 + ldrb r0, [r7] + lsls r0, r0, #9 + adds r0, r0, r5 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, 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, r1, r4 + adds r1, r1, r0 + adds r1, #0x62 + ldrb r0, [r7] + lsls r0, r0, #9 + add r0, ip + ldrb r0, [r0] + strb r0, [r1] +_0803CB0A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803CB10: .4byte gUnknown_2023D08 +_0803CB14: .4byte gUnknown_2024140 +_0803CB18: .4byte gUnknown_2023508 +_0803CB1C: .4byte gUnknown_2022C90 + thumb_func_end sub_0803CA3C + + thumb_func_start sub_0803CB20 +sub_0803CB20: @ 0x0803CB20 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0803CB4C + adds r4, r0, r2 + ldrb r5, [r4] + adds r2, r1, r2 + ldrb r3, [r2] + strb r3, [r4] + strb r5, [r2] + ldr r2, _0803CB50 + adds r0, r0, r2 + ldrb r5, [r0] + adds r1, r1, r2 + ldrb r2, [r1] + strb r2, [r0] + strb r5, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803CB4C: .4byte gUnknown_2023D1E +_0803CB50: .4byte gUnknown_2023D22 + thumb_func_end sub_0803CB20 + + thumb_func_start sub_0803CB54 +sub_0803CB54: @ 0x0803CB54 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CC1C + ldr r1, [sp, #8] + str r1, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CC1C + ldr r1, _0803CBD4 + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r3, [r0] + cmp r3, #0x21 + bne _0803CBC0 + ldr r0, _0803CBD8 + ldrh r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0803CBD0 +_0803CBC0: + cmp r3, #0x22 + bne _0803CBDC + ldr r0, _0803CBD8 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _0803CBDC +_0803CBD0: + movs r3, #2 + b _0803CBDE + .align 2, 0 +_0803CBD4: .4byte gUnknown_2023D28 +_0803CBD8: .4byte gUnknown_2024070 +_0803CBDC: + movs r3, #1 +_0803CBDE: + movs r0, #0x58 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + ldr r2, _0803CC14 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r2, [r0] + cmp r2, #0x21 + bne _0803CBFE + ldr r0, _0803CC18 + ldrh r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0803CC0E +_0803CBFE: + cmp r2, #0x22 + bne _0803CC1E + ldr r0, _0803CC18 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _0803CC1E +_0803CC0E: + movs r7, #2 + b _0803CC20 + .align 2, 0 +_0803CC14: .4byte gUnknown_2023D28 +_0803CC18: .4byte gUnknown_2024070 +_0803CC1C: + movs r3, #1 +_0803CC1E: + movs r7, #1 +_0803CC20: + ldr r1, _0803CC64 + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r4, r0, r1 + ldrh r0, [r4, #6] + muls r3, r0, r3 + ldr r2, _0803CC68 + movs r1, #0x1b + ldrsb r1, [r4, r1] + lsls r1, r1, #1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3, r0 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + bl __divsi3 + mov r8, r0 + ldrh r0, [r4, #0x2e] + cmp r0, #0xaf + bne _0803CC70 + ldr r1, _0803CC6C + mov r3, sb + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r6, [r0, #7] + ldrb r5, [r0, #0x1a] + b _0803CC84 + .align 2, 0 +_0803CC64: .4byte gUnknown_2023D28 +_0803CC68: .4byte gUnknown_82FA6B6 +_0803CC6C: .4byte gUnknown_20240A8 +_0803CC70: + ldrh r0, [r4, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrh r0, [r4, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0803CC84: + ldr r0, _0803CD40 + ldr r0, [r0] + ldr r1, _0803CD44 + ands r0, r1 + cmp r0, #0 + bne _0803CCB8 + ldr r0, _0803CD48 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803CCB8 + mov r0, sb + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CCB8 + movs r0, #0x6e + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + movs r1, #0x64 + bl __udivsi3 + mov r8, r0 +_0803CCB8: + cmp r6, #0x18 + bne _0803CCC2 + mov r2, r8 + lsrs r2, r2, #1 + mov r8, r2 +_0803CCC2: + ldr r1, _0803CD4C + movs r0, #0x58 + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0803CCE0 + mov r0, r8 + lsrs r0, r0, #2 + mov r8, r0 +_0803CCE0: + cmp r6, #0x1a + bne _0803CCFC + ldr r0, _0803CD50 + ldrh r4, [r0] + lsls r0, r5, #0x10 + subs r0, r0, r5 + movs r1, #0x64 + bl __divsi3 + cmp r4, r0 + bge _0803CCFC + movs r1, #1 + rsbs r1, r1, #0 + mov r8, r1 +_0803CCFC: + ldr r1, _0803CD4C + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + adds r4, r0, r1 + ldrh r0, [r4, #6] + adds r3, r0, #0 + muls r3, r7, r3 + ldr r2, _0803CD54 + movs r1, #0x1b + ldrsb r1, [r4, r1] + lsls r1, r1, #1 + adds r0, r1, r2 + ldrb r0, [r0] + muls r0, r3, r0 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + bl __divsi3 + adds r7, r0, #0 + ldrh r0, [r4, #0x2e] + cmp r0, #0xaf + bne _0803CD5C + ldr r1, _0803CD58 + mov r3, sl + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r6, [r0, #7] + ldrb r5, [r0, #0x1a] + b _0803CD70 + .align 2, 0 +_0803CD40: .4byte gUnknown_2022C90 +_0803CD44: .4byte 0x023F0102 +_0803CD48: .4byte 0x00000869 +_0803CD4C: .4byte gUnknown_2023D28 +_0803CD50: .4byte gUnknown_2023FD4 +_0803CD54: .4byte gUnknown_82FA6B6 +_0803CD58: .4byte gUnknown_20240A8 +_0803CD5C: + ldrh r0, [r4, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrh r0, [r4, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0803CD70: + ldr r0, _0803CDE8 + ldr r0, [r0] + ldr r1, _0803CDEC + ands r0, r1 + cmp r0, #0 + bne _0803CDA0 + ldr r0, _0803CDF0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803CDA0 + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CDA0 + movs r0, #0x6e + muls r0, r7, r0 + movs r1, #0x64 + bl __udivsi3 + adds r7, r0, #0 +_0803CDA0: + cmp r6, #0x18 + bne _0803CDA6 + lsrs r7, r7, #1 +_0803CDA6: + ldr r2, _0803CDF4 + movs r0, #0x58 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + adds r1, r2, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0803CDC2 + lsrs r7, r7, #2 +_0803CDC2: + cmp r6, #0x1a + bne _0803CDDC + ldr r0, _0803CDF8 + ldrh r4, [r0] + lsls r0, r5, #0x10 + subs r0, r0, r5 + movs r1, #0x64 + bl __divsi3 + cmp r4, r0 + bge _0803CDDC + movs r7, #1 + rsbs r7, r7, #0 +_0803CDDC: + ldr r2, [sp, #4] + cmp r2, #0 + beq _0803CDFC + movs r3, #0 + b _0803CE98 + .align 2, 0 +_0803CDE8: .4byte gUnknown_2022C90 +_0803CDEC: .4byte 0x023F0102 +_0803CDF0: .4byte 0x00000869 +_0803CDF4: .4byte gUnknown_2023D28 +_0803CDF8: .4byte gUnknown_2023FD4 +_0803CDFC: + ldr r0, _0803CE1C + mov r3, sb + adds r1, r3, r0 + ldrb r1, [r1] + adds r2, r0, #0 + cmp r1, #0 + bne _0803CE4C + ldr r0, _0803CE20 + lsls r1, r3, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0803CE24 + movs r3, #0xa5 + b _0803CE4E + .align 2, 0 +_0803CE1C: .4byte gUnknown_2023EC0 +_0803CE20: .4byte gUnknown_2023FE0 +_0803CE24: + ldr r0, _0803CE44 + ldr r0, [r0] + add r0, sb + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #0x58 + mov r3, sb + muls r3, r1, r3 + adds r1, r3, #0 + adds r0, r0, r1 + ldr r1, _0803CE48 + adds r1, #0xc + adds r0, r0, r1 + ldrh r3, [r0] + b _0803CE4E + .align 2, 0 +_0803CE44: .4byte gUnknown_2024140 +_0803CE48: .4byte gUnknown_2023D28 +_0803CE4C: + movs r3, #0 +_0803CE4E: + mov r1, sl + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0803CE98 + ldr r0, _0803CE6C + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0803CE70 + movs r2, #0xa5 + b _0803CE9A + .align 2, 0 +_0803CE6C: .4byte gUnknown_2023FE0 +_0803CE70: + ldr r0, _0803CE90 + ldr r0, [r0] + add r0, sl + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #0x58 + mov r2, sl + muls r2, r1, r2 + adds r1, r2, #0 + adds r0, r0, r1 + ldr r1, _0803CE94 + adds r1, #0xc + adds r0, r0, r1 + ldrh r2, [r0] + b _0803CE9A + .align 2, 0 +_0803CE90: .4byte gUnknown_2024140 +_0803CE94: .4byte gUnknown_2023D28 +_0803CE98: + movs r2, #0 +_0803CE9A: + ldr r4, _0803CEE4 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #7 + ldrsb r1, [r0, r1] + lsls r3, r2, #1 + cmp r1, #0 + bne _0803CEBE + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #7] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0803CEFC +_0803CEBE: + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #7] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bne _0803CEF2 + cmp r8, r7 + bne _0803CEE8 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803CEE8 + movs r3, #2 + b _0803CF18 + .align 2, 0 +_0803CEE4: .4byte gUnknown_82ED220 +_0803CEE8: + cmp r8, r7 + bhs _0803CF1A + movs r0, #1 + str r0, [sp, #8] + b _0803CF1A +_0803CEF2: + cmp r1, r0 + bge _0803CF1A + movs r1, #1 + str r1, [sp, #8] + b _0803CF1A +_0803CEFC: + cmp r8, r7 + bne _0803CF12 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803CF12 + movs r2, #2 + str r2, [sp, #8] + b _0803CF1A +_0803CF12: + cmp r8, r7 + bhs _0803CF1A + movs r3, #1 +_0803CF18: + str r3, [sp, #8] +_0803CF1A: + ldr r0, [sp, #8] + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0803CB54 + + thumb_func_start sub_0803CF2C +sub_0803CF2C: @ 0x0803CF2C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r3, #0 + ldr r0, _0803CF80 + ldr r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803CF98 + ldr r0, _0803CF84 + strb r3, [r0] + ldr r4, _0803CF88 + mov r8, r0 + ldrb r0, [r4] + cmp r3, r0 + blo _0803CF54 + b _0803D18E +_0803CF54: + ldr r7, _0803CF8C + ldr r6, _0803CF90 + mov r2, r8 + ldr r5, _0803CF94 +_0803CF5C: + adds r1, r3, r7 + ldrb r0, [r2] + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r3, r5 + ldrb r0, [r2] + strb r0, [r1] + adds r3, #1 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + cmp r0, r1 + blo _0803CF5C + b _0803D18E + .align 2, 0 +_0803CF80: .4byte gUnknown_2022C90 +_0803CF84: .4byte gUnknown_2023D08 +_0803CF88: .4byte gUnknown_2023D10 +_0803CF8C: .4byte gUnknown_2023D1E +_0803CF90: .4byte gUnknown_2023EC0 +_0803CF94: .4byte gUnknown_2023D22 +_0803CF98: + movs r2, #2 + ands r1, r2 + cmp r1, #0 + beq _0803CFE8 + ldr r0, _0803CFDC + strb r3, [r0] + ldr r1, _0803CFE0 + mov r8, r0 + adds r2, r1, #0 + ldrb r2, [r2] + cmp r3, r2 + bhs _0803D004 + ldr r0, _0803CFE4 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #3 + beq _0803D002 +_0803CFBA: + mov r7, r8 + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803CFE0 + ldrb r1, [r1] + cmp r0, r1 + bhs _0803D004 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #3 + bne _0803CFBA + b _0803D002 + .align 2, 0 +_0803CFDC: .4byte gUnknown_2023D08 +_0803CFE0: .4byte gUnknown_2023D10 +_0803CFE4: .4byte gUnknown_2023EC0 +_0803CFE8: + ldr r1, _0803D06C + ldrb r0, [r1] + ldr r4, _0803D070 + mov r8, r4 + cmp r0, #3 + bne _0803CFF8 + strb r3, [r4] + movs r3, #5 +_0803CFF8: + ldrb r0, [r1, #2] + cmp r0, #3 + bne _0803D004 + mov r7, r8 + strb r2, [r7] +_0803D002: + movs r3, #5 +_0803D004: + cmp r3, #5 + bne _0803D08C + ldr r6, _0803D074 + ldr r1, _0803D06C + mov r2, r8 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r2, _0803D078 + mov r3, r8 + ldrb r0, [r3] + strb r0, [r2] + movs r3, #1 + movs r5, #0 + adds r4, r1, #0 + ldr r7, _0803D07C + mov sl, r7 + ldr r0, _0803D080 + mov ip, r0 + ldr r1, _0803D084 + mov sb, r1 + ldr r7, _0803D088 + ldrb r7, [r7] + cmp r5, r7 + bge _0803D05E + adds r7, r6, #0 + adds r6, r4, #0 + adds r4, r2, #0 + ldr r2, _0803D088 +_0803D040: + mov r0, r8 + ldrb r0, [r0] + cmp r5, r0 + beq _0803D056 + adds r1, r3, r7 + adds r0, r5, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r4 + strb r5, [r0] + adds r3, #1 +_0803D056: + adds r5, #1 + ldrb r1, [r2] + cmp r5, r1 + blt _0803D040 +_0803D05E: + mov r2, ip + mov r3, sl + str r2, [r3] + mov r4, sb + ldr r0, [r4] + b _0803D198 + .align 2, 0 +_0803D06C: .4byte gUnknown_2023EC0 +_0803D070: .4byte gUnknown_2023D08 +_0803D074: .4byte gUnknown_2023D1E +_0803D078: .4byte gUnknown_2023D22 +_0803D07C: .4byte gUnknown_3005A64 +_0803D080: .4byte sub_0803D334 +_0803D084: .4byte gUnknown_2024140 +_0803D088: .4byte gUnknown_2023D10 +_0803D08C: + movs r0, #0 + mov r7, r8 + strb r0, [r7] + ldr r1, _0803D11C + ldrb r0, [r1] + cmp r0, #0 + beq _0803D0D2 + ldr r6, _0803D120 + mov r2, r8 + ldr r5, _0803D124 + ldr r4, _0803D128 +_0803D0A2: + ldrb r0, [r2] + adds r0, r0, r6 + ldrb r1, [r0] + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0803D0C0 + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, #1 +_0803D0C0: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803D11C + ldrb r1, [r1] + cmp r0, r1 + blo _0803D0A2 +_0803D0D2: + movs r0, #0 + mov r2, r8 + strb r0, [r2] + ldr r4, _0803D11C + ldrb r0, [r4] + cmp r0, #0 + beq _0803D116 + ldr r6, _0803D120 + ldr r5, _0803D124 + ldr r4, _0803D128 +_0803D0E6: + ldrb r0, [r2] + adds r0, r0, r6 + ldrb r1, [r0] + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0803D104 + adds r0, r3, r5 + strb r1, [r0] + adds r1, r3, r4 + mov r7, r8 + ldrb r0, [r7] + strb r0, [r1] + adds r3, #1 +_0803D104: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803D11C + ldrb r1, [r1] + cmp r0, r1 + blo _0803D0E6 +_0803D116: + movs r5, #0 + b _0803D184 + .align 2, 0 +_0803D11C: .4byte gUnknown_2023D10 +_0803D120: .4byte gUnknown_2023EC0 +_0803D124: .4byte gUnknown_2023D1E +_0803D128: .4byte gUnknown_2023D22 +_0803D12C: + adds r4, r5, #1 + adds r7, r4, #0 + ldrb r1, [r1] + cmp r7, r1 + bge _0803D182 + ldr r6, _0803D1AC + lsls r2, r5, #0x18 + mov r8, r2 +_0803D13C: + ldr r0, _0803D1B0 + adds r1, r5, r0 + ldrb r3, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, r6 + ldrb r2, [r0] + cmp r2, #1 + beq _0803D178 + adds r0, r4, r6 + ldrb r0, [r0] + cmp r0, #1 + beq _0803D178 + cmp r2, #2 + beq _0803D178 + cmp r0, #2 + beq _0803D178 + adds r0, r3, #0 + movs r2, #0 + bl sub_0803CB54 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803D178 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + mov r3, r8 + lsrs r0, r3, #0x18 + bl sub_0803CB20 +_0803D178: + adds r4, #1 + ldr r0, _0803D1B4 + ldrb r0, [r0] + cmp r4, r0 + blt _0803D13C +_0803D182: + adds r5, r7, #0 +_0803D184: + ldr r1, _0803D1B4 + ldrb r0, [r1] + subs r0, #1 + cmp r5, r0 + blt _0803D12C +_0803D18E: + ldr r1, _0803D1B8 + ldr r0, _0803D1BC + str r0, [r1] + ldr r0, _0803D1C0 + ldr r0, [r0] +_0803D198: + adds r0, #0x48 + movs r1, #0 + strb r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D1AC: .4byte gUnknown_2023D1E +_0803D1B0: .4byte gUnknown_2023D22 +_0803D1B4: .4byte gUnknown_2023D10 +_0803D1B8: .4byte gUnknown_3005A64 +_0803D1BC: .4byte sub_0803D334 +_0803D1C0: .4byte gUnknown_2024140 + thumb_func_end sub_0803CF2C + + thumb_func_start sub_0803D1C4 +sub_0803D1C4: @ 0x0803D1C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _0803D21C + movs r0, #0 + strb r0, [r1] + ldr r0, _0803D220 + ldrb r2, [r0] + adds r5, r1, #0 + cmp r2, #0 + beq _0803D2BC + ldr r7, _0803D224 + adds r6, r5, #0 + ldr r0, _0803D228 + mov ip, r0 + ldr r1, _0803D22C + mov r8, r1 + mov sl, r8 +_0803D1F2: + mov r2, sb + cmp r2, #0 + beq _0803D230 + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r7 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + b _0803D28C + .align 2, 0 +_0803D21C: .4byte gUnknown_2023D08 +_0803D220: .4byte gUnknown_2023D10 +_0803D224: .4byte gUnknown_2023FE0 +_0803D228: .4byte gUnknown_2023D78 +_0803D22C: .4byte gUnknown_2023F60 +_0803D230: + ldrb r0, [r6] + lsls r0, r0, #4 + adds r2, r0, r7 + movs r1, #0 + mov r4, sl + movs r3, #0 +_0803D23C: + adds r0, r2, r1 + strb r3, [r0] + adds r1, #1 + cmp r1, #0xf + bls _0803D23C + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1, #0x16] + cmp r0, #0 + beq _0803D25A + subs r0, #1 + strb r0, [r1, #0x16] +_0803D25A: + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1, #0x19] + cmp r0, #0 + beq _0803D28C + subs r0, #1 + strb r0, [r1, #0x19] + ldrb r2, [r5] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #0x19] + cmp r0, #0 + bne _0803D28C + movs r0, #0x58 + muls r2, r0, r2 + add r2, ip + ldr r0, [r2] + ldr r1, _0803D2D4 + ands r0, r1 + str r0, [r2] +_0803D28C: + ldrb r2, [r5] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _0803D2AA + movs r0, #0x58 + muls r2, r0, r2 + add r2, ip + ldr r0, [r2] + ldr r1, _0803D2D8 + ands r0, r1 + str r0, [r2] +_0803D2AA: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803D2DC + ldrb r1, [r1] + cmp r0, r1 + blo _0803D1F2 +_0803D2BC: + movs r0, #0 + ldr r2, _0803D2E0 + strb r0, [r2, #8] + strb r0, [r2, #0x14] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D2D4: .4byte 0xFFBFFFFF +_0803D2D8: .4byte 0xFEFFFFFF +_0803D2DC: .4byte gUnknown_2023D10 +_0803D2E0: .4byte gUnknown_2023F38 + thumb_func_end sub_0803D1C4 + + thumb_func_start sub_0803D2E4 +sub_0803D2E4: @ 0x0803D2E4 + push {r4, r5, r6, lr} + ldr r2, _0803D328 + movs r0, #0 + strb r0, [r2] + ldr r0, _0803D32C + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _0803D322 + adds r3, r2, #0 + movs r4, #0 + ldr r5, _0803D330 +_0803D2FC: + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r5 + movs r1, #0 +_0803D308: + adds r0, r2, r1 + strb r4, [r0] + adds r1, #1 + cmp r1, #0x13 + bls _0803D308 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r6] + cmp r0, r1 + blo _0803D2FC +_0803D322: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803D328: .4byte gUnknown_2023D08 +_0803D32C: .4byte gUnknown_2023D10 +_0803D330: .4byte gUnknown_2024020 + thumb_func_end sub_0803D2E4 + + thumb_func_start sub_0803D334 +sub_0803D334: @ 0x0803D334 + push {r4, r5, r6, r7, lr} + ldr r0, _0803D3BC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0803D3F2 + ldr r2, _0803D3C0 + ldr r0, [r2] + adds r0, #0x48 + ldr r1, _0803D3C4 + ldrb r0, [r0] + mov ip, r2 + adds r6, r1, #0 + ldrb r1, [r6] + cmp r0, r1 + bhs _0803D3F2 + ldr r5, _0803D3C8 + ldr r4, _0803D3CC + movs r7, #0x84 + lsls r7, r7, #1 +_0803D360: + ldr r1, [r2] + adds r1, #0x48 + ldrb r0, [r1] + strb r0, [r4] + strb r0, [r5] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _0803D3D0 + ldrb r3, [r5] + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + bne _0803D3E4 + ldr r1, _0803D3D4 + movs r0, #0x58 + muls r0, r3, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0803D3E4 + ldr r2, _0803D3D8 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0803D3E4 + ldr r0, _0803D3DC + lsls r1, r3, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0803D3E4 + ldr r0, _0803D3E0 + bl sub_08044098 + b _0803D42C + .align 2, 0 +_0803D3BC: .4byte gUnknown_2023F24 +_0803D3C0: .4byte gUnknown_2024140 +_0803D3C4: .4byte gUnknown_2023D10 +_0803D3C8: .4byte gUnknown_2023D08 +_0803D3CC: .4byte gUnknown_2023EAF +_0803D3D0: .4byte gUnknown_2023F18 +_0803D3D4: .4byte gUnknown_2023D28 +_0803D3D8: .4byte gUnknown_2023F60 +_0803D3DC: .4byte gUnknown_2023FE0 +_0803D3E0: .4byte gUnknown_8289787 +_0803D3E4: + mov r2, ip + ldr r0, [r2] + adds r0, #0x48 + ldrb r0, [r0] + ldrb r1, [r6] + cmp r0, r1 + blo _0803D360 +_0803D3F2: + bl sub_0804165C + ldr r1, _0803D434 + movs r0, #0 + strb r0, [r1] + ldr r1, _0803D438 + ldr r0, _0803D43C + movs r3, #0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0803D440 + movs r2, #0 + strh r3, [r0] + ldr r0, _0803D444 + ldr r0, [r0] + strb r2, [r0, #0x13] + ldr r1, _0803D448 + ldr r0, _0803D44C + str r0, [r1] + ldr r0, _0803D450 + strb r2, [r0, #3] + strb r2, [r0, #4] + ldr r0, _0803D454 + strb r2, [r0, #0x16] + ldr r0, _0803D458 + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #0x20 + strb r2, [r0] +_0803D42C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803D434: .4byte gUnknown_2023D26 +_0803D438: .4byte gUnknown_2023D27 +_0803D43C: .4byte gUnknown_2023D1E +_0803D440: .4byte gUnknown_20240A4 +_0803D444: .4byte gUnknown_2024140 +_0803D448: .4byte gUnknown_3005A64 +_0803D44C: .4byte sub_0803D45C +_0803D450: .4byte gUnknown_2023FD6 +_0803D454: .4byte gUnknown_2024118 +_0803D458: .4byte gUnknown_202414C + thumb_func_end sub_0803D334 + + thumb_func_start sub_0803D45C +sub_0803D45C: @ 0x0803D45C + push {r4, r5, r6, lr} + ldr r6, _0803D4B0 + ldrb r0, [r6] + ldr r2, _0803D4B4 + cmp r0, #0 + beq _0803D46C + movs r0, #0xc + strb r0, [r2] +_0803D46C: + ldr r5, _0803D4B8 + ldr r0, [r5] + adds r0, #0x4b + ldr r4, _0803D4BC + ldrb r1, [r4] + strb r1, [r0] + ldr r1, _0803D4C0 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0803D4C4 + thumb_func_end sub_0803D45C + + thumb_func_start sub_0803D488 +sub_0803D488: @ 0x0803D488 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + blo _0803D4D8 + ldr r2, _0803D4C8 + ldr r0, [r2] + ldr r1, _0803D4CC + ands r0, r1 + str r0, [r2] + ldr r3, _0803D4D0 + ldr r2, _0803D4D4 + ldrb r1, [r6] + movs r0, #0x7f + ands r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r3] + b _0803D4F0 + .align 2, 0 +_0803D4B0: .4byte gUnknown_2023FDE +_0803D4B4: .4byte gUnknown_2023D27 +_0803D4B8: .4byte gUnknown_2024140 +_0803D4BC: .4byte gUnknown_2023D26 +_0803D4C0: .4byte gUnknown_82EC600 +_0803D4C4: .4byte gUnknown_2023D10 +_0803D4C8: .4byte gUnknown_2023F24 +_0803D4CC: .4byte 0xFFEFFFFF +_0803D4D0: .4byte gUnknown_3005A64 +_0803D4D4: .4byte gUnknown_82EC638 +_0803D4D8: + ldr r0, [r5] + adds r0, #0x4b + ldrb r0, [r0] + cmp r0, r1 + beq _0803D4F0 + ldr r2, _0803D4F8 + ldr r0, [r2] + ldr r1, _0803D4FC + ands r0, r1 + ldr r1, _0803D500 + ands r0, r1 + str r0, [r2] +_0803D4F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803D4F8: .4byte gUnknown_2023F24 +_0803D4FC: .4byte 0xFFFFFDFF +_0803D500: .4byte 0xFFF7FFFF + thumb_func_end sub_0803D488 + + thumb_func_start sub_0803D504 +sub_0803D504: @ 0x0803D504 + push {r4, lr} + ldr r1, _0803D540 + movs r0, #0 + strb r0, [r1] + ldr r1, _0803D544 + ldr r2, [r1] + ldr r0, _0803D548 + ands r0, r2 + cmp r0, #0 + beq _0803D564 + ldr r1, _0803D54C + ldr r4, _0803D550 + ldrb r0, [r4] + strh r0, [r1] + ldr r1, _0803D554 + ldrb r0, [r4] + strb r0, [r1] + movs r0, #0 + bl sub_080A631C + ldr r1, _0803D558 + strb r0, [r1] + ldr r1, _0803D55C + ldr r0, _0803D560 + str r0, [r1] + ldrb r1, [r4] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4] + b _0803D6E4 + .align 2, 0 +_0803D540: .4byte gUnknown_2023D27 +_0803D544: .4byte gUnknown_2022C90 +_0803D548: .4byte gUnknown_2000002 +_0803D54C: .4byte gUnknown_2037290 +_0803D550: .4byte gUnknown_2023FDE +_0803D554: .4byte gUnknown_2022C0C +_0803D558: .4byte gUnknown_2023EAF +_0803D55C: .4byte gUnknown_2023EB8 +_0803D560: .4byte gUnknown_8288FBD +_0803D564: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0803D5A0 + ldr r0, _0803D58C + ands r2, r0 + cmp r2, #0 + beq _0803D5A0 + bl sub_0805E67C + ldr r1, _0803D590 + ldr r0, _0803D594 + str r0, [r1] + ldr r0, _0803D598 + ldrh r1, [r0] + ldr r0, _0803D59C + cmp r1, r0 + bne _0803D58A + b _0803D6CA +_0803D58A: + b _0803D6D4 + .align 2, 0 +_0803D58C: .4byte 0x043F0900 +_0803D590: .4byte gUnknown_2023EB8 +_0803D594: .4byte gUnknown_828900F +_0803D598: .4byte gUnknown_203886A +_0803D59C: .4byte 0x000003FE +_0803D5A0: + ldr r0, [r1] + movs r1, #0xa + ands r0, r1 + cmp r0, #8 + beq _0803D5AC + b _0803D6DE +_0803D5AC: + bl sub_0805E67C + ldr r1, _0803D5D4 + ldr r0, _0803D5D8 + str r0, [r1] + ldr r1, _0803D5DC + ldr r0, _0803D5E0 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] + subs r0, #3 + cmp r0, #0x32 + bls _0803D5CA + b _0803D6D4 +_0803D5CA: + lsls r0, r0, #2 + ldr r1, _0803D5E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803D5D4: .4byte gUnknown_2023EB8 +_0803D5D8: .4byte gUnknown_8288EB5 +_0803D5DC: .4byte gUnknown_82E383C +_0803D5E0: .4byte gUnknown_203886A +_0803D5E4: .4byte _0803D5E8 +_0803D5E8: @ jump table + .4byte _0803D6C0 @ case 0 + .4byte _0803D6D4 @ case 1 + .4byte _0803D6D4 @ case 2 + .4byte _0803D6D4 @ case 3 + .4byte _0803D6D4 @ case 4 + .4byte _0803D6D4 @ case 5 + .4byte _0803D6C0 @ case 6 + .4byte _0803D6D4 @ case 7 + .4byte _0803D6C0 @ case 8 + .4byte _0803D6D4 @ case 9 + .4byte _0803D6C0 @ case 10 + .4byte _0803D6D4 @ case 11 + .4byte _0803D6D4 @ case 12 + .4byte _0803D6D4 @ case 13 + .4byte _0803D6D4 @ case 14 + .4byte _0803D6D4 @ case 15 + .4byte _0803D6D4 @ case 16 + .4byte _0803D6D4 @ case 17 + .4byte _0803D6D4 @ case 18 + .4byte _0803D6D4 @ case 19 + .4byte _0803D6D4 @ case 20 + .4byte _0803D6D4 @ case 21 + .4byte _0803D6D4 @ case 22 + .4byte _0803D6D4 @ case 23 + .4byte _0803D6D4 @ case 24 + .4byte _0803D6D4 @ case 25 + .4byte _0803D6D4 @ case 26 + .4byte _0803D6D4 @ case 27 + .4byte _0803D6B4 @ case 28 + .4byte _0803D6CA @ case 29 + .4byte _0803D6D4 @ case 30 + .4byte _0803D6D4 @ case 31 + .4byte _0803D6D4 @ case 32 + .4byte _0803D6D4 @ case 33 + .4byte _0803D6D4 @ case 34 + .4byte _0803D6B4 @ case 35 + .4byte _0803D6D4 @ case 36 + .4byte _0803D6D4 @ case 37 + .4byte _0803D6D4 @ case 38 + .4byte _0803D6D4 @ case 39 + .4byte _0803D6D4 @ case 40 + .4byte _0803D6D4 @ case 41 + .4byte _0803D6D4 @ case 42 + .4byte _0803D6D4 @ case 43 + .4byte _0803D6D4 @ case 44 + .4byte _0803D6D4 @ case 45 + .4byte _0803D6C0 @ case 46 + .4byte _0803D6D4 @ case 47 + .4byte _0803D6D4 @ case 48 + .4byte _0803D6D4 @ case 49 + .4byte _0803D6C0 @ case 50 +_0803D6B4: + ldr r0, _0803D6BC + bl sub_080A3040 + b _0803D6E4 + .align 2, 0 +_0803D6BC: .4byte 0x00000163 +_0803D6C0: + movs r0, #0xd4 + lsls r0, r0, #1 + bl sub_080A3040 + b _0803D6E4 +_0803D6CA: + movs r0, #0xb1 + lsls r0, r0, #1 + bl sub_080A3040 + b _0803D6E4 +_0803D6D4: + movs r0, #0xce + lsls r0, r0, #1 + bl sub_080A3040 + b _0803D6E4 +_0803D6DE: + ldr r1, _0803D6F0 + ldr r0, _0803D6F4 + str r0, [r1] +_0803D6E4: + ldr r1, _0803D6F8 + ldr r0, _0803D6FC + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D6F0: .4byte gUnknown_2023EB8 +_0803D6F4: .4byte gUnknown_8288EF2 +_0803D6F8: .4byte gUnknown_3005A64 +_0803D6FC: .4byte sub_0803D918 + thumb_func_end sub_0803D504 + + thumb_func_start sub_0803D700 +sub_0803D700: @ 0x0803D700 + push {r4, lr} + ldr r1, _0803D748 + movs r0, #0 + strb r0, [r1] + ldr r0, _0803D74C + ldr r1, [r0] + ldr r0, _0803D750 + ands r0, r1 + cmp r0, #0 + beq _0803D7BC + ldr r0, _0803D754 + ands r1, r0 + cmp r1, #0 + beq _0803D784 + ldr r3, _0803D758 + ldrb r2, [r3] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _0803D76C + ldr r1, _0803D75C + ldr r0, _0803D760 + str r0, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r3] + ldr r0, _0803D764 + ldr r1, [r0] + ldr r0, _0803D768 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #8 + orrs r0, r2 + strb r0, [r1] + b _0803D7C2 + .align 2, 0 +_0803D748: .4byte gUnknown_2023D27 +_0803D74C: .4byte gUnknown_2022C90 +_0803D750: .4byte gUnknown_2000002 +_0803D754: .4byte 0x003F0100 +_0803D758: .4byte gUnknown_2023FDE +_0803D75C: .4byte gUnknown_2023EB8 +_0803D760: .4byte gUnknown_8289F50 +_0803D764: .4byte gUnknown_3005AF0 +_0803D768: .4byte 0x00000CA9 +_0803D76C: + ldr r1, _0803D77C + ldr r0, _0803D780 + str r0, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r3] + b _0803D7C2 + .align 2, 0 +_0803D77C: .4byte gUnknown_2023EB8 +_0803D780: .4byte gUnknown_8288F93 +_0803D784: + ldr r1, _0803D7A8 + ldr r4, _0803D7AC + ldrb r0, [r4] + strb r0, [r1] + movs r0, #0 + bl sub_080A631C + ldr r1, _0803D7B0 + strb r0, [r1] + ldr r1, _0803D7B4 + ldr r0, _0803D7B8 + str r0, [r1] + ldrb r1, [r4] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4] + b _0803D7C2 + .align 2, 0 +_0803D7A8: .4byte gUnknown_2022C0C +_0803D7AC: .4byte gUnknown_2023FDE +_0803D7B0: .4byte gUnknown_2023EAF +_0803D7B4: .4byte gUnknown_2023EB8 +_0803D7B8: .4byte gUnknown_8288FBD +_0803D7BC: + ldr r1, _0803D7D0 + ldr r0, _0803D7D4 + str r0, [r1] +_0803D7C2: + ldr r1, _0803D7D8 + ldr r0, _0803D7DC + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803D7D0: .4byte gUnknown_2023EB8 +_0803D7D4: .4byte gUnknown_8288EF5 +_0803D7D8: .4byte gUnknown_3005A64 +_0803D7DC: .4byte sub_0803D918 + thumb_func_end sub_0803D700 + + thumb_func_start sub_0803D7E0 +sub_0803D7E0: @ 0x0803D7E0 + push {lr} + ldr r1, _0803D81C + movs r0, #0 + strb r0, [r1] + ldr r1, _0803D820 + ldr r2, [r1] + ldr r0, _0803D824 + ands r0, r2 + cmp r0, #0 + beq _0803D83C + movs r0, #8 + ands r2, r0 + cmp r2, #0 + beq _0803D83C + ldr r1, _0803D828 + ldr r0, _0803D82C + str r0, [r1] + ldr r1, _0803D830 + movs r0, #9 + strb r0, [r1] + ldr r0, _0803D834 + ldr r1, [r0] + ldr r0, _0803D838 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #8 + orrs r0, r2 + strb r0, [r1] + b _0803D8AA + .align 2, 0 +_0803D81C: .4byte gUnknown_2023D27 +_0803D820: .4byte gUnknown_2022C90 +_0803D824: .4byte 0x003F0100 +_0803D828: .4byte gUnknown_2023EB8 +_0803D82C: .4byte gUnknown_8289F49 +_0803D830: .4byte gUnknown_2023FDE +_0803D834: .4byte gUnknown_3005AF0 +_0803D838: .4byte 0x00000CA9 +_0803D83C: + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + beq _0803D864 + ldr r1, _0803D858 + ldr r0, _0803D85C + str r0, [r1] + ldr r1, _0803D860 + movs r0, #9 + strb r0, [r1] + b _0803D8AA + .align 2, 0 +_0803D858: .4byte gUnknown_2023EB8 +_0803D85C: .4byte gUnknown_8289F49 +_0803D860: .4byte gUnknown_2023FDE +_0803D864: + ldr r1, _0803D884 + ldr r0, _0803D888 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _0803D894 + cmp r0, #2 + beq _0803D8A4 + ldr r1, _0803D88C + ldr r0, _0803D890 + b _0803D8A8 + .align 2, 0 +_0803D884: .4byte gUnknown_2023FE0 +_0803D888: .4byte gUnknown_2023EAF +_0803D88C: .4byte gUnknown_2023EB8 +_0803D890: .4byte gUnknown_8289078 +_0803D894: + ldr r1, _0803D89C + ldr r0, _0803D8A0 + b _0803D8A8 + .align 2, 0 +_0803D89C: .4byte gUnknown_2023EB8 +_0803D8A0: .4byte gUnknown_8289063 +_0803D8A4: + ldr r1, _0803D8B4 + ldr r0, _0803D8B8 +_0803D8A8: + str r0, [r1] +_0803D8AA: + ldr r1, _0803D8BC + ldr r0, _0803D8C0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0803D8B4: .4byte gUnknown_2023EB8 +_0803D8B8: .4byte gUnknown_8289071 +_0803D8BC: .4byte gUnknown_3005A64 +_0803D8C0: .4byte sub_0803D918 + thumb_func_end sub_0803D7E0 + + thumb_func_start sub_0803D8C4 +sub_0803D8C4: @ 0x0803D8C4 + ldr r1, _0803D8F8 + movs r0, #0 + strb r0, [r1] + ldr r1, _0803D8FC + movs r0, #0xfd + strb r0, [r1] + movs r0, #7 + strb r0, [r1, #1] + ldr r2, _0803D900 + ldrb r0, [r2] + strb r0, [r1, #2] + ldr r3, _0803D904 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _0803D908 + ldr r0, _0803D90C + str r0, [r1] + ldr r1, _0803D910 + ldr r0, _0803D914 + str r0, [r1] + bx lr + .align 2, 0 +_0803D8F8: .4byte gUnknown_2023D27 +_0803D8FC: .4byte gUnknown_2022C0C +_0803D900: .4byte gUnknown_2023EAF +_0803D904: .4byte gUnknown_2023D12 +_0803D908: .4byte gUnknown_2023EB8 +_0803D90C: .4byte gUnknown_828907F +_0803D910: .4byte gUnknown_3005A64 +_0803D914: .4byte sub_0803D918 + thumb_func_end sub_0803D8C4 + + thumb_func_start sub_0803D918 +sub_0803D918: @ 0x0803D918 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0803D994 + ldrb r0, [r0] + subs r0, #0xb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0803D92E + b _0803DA50 +_0803D92E: + ldr r0, _0803D998 + ldr r1, [r0] + ldr r0, _0803D99C + ands r1, r0 + cmp r1, #0 + bne _0803D9F6 + ldr r2, _0803D9A0 + strb r1, [r2] + ldr r0, _0803D9A4 + ldrb r0, [r0] + cmp r1, r0 + bhs _0803D9F2 + adds r5, r2, #0 + ldr r0, _0803D9A8 + mov r8, r0 + movs r7, #0x64 + ldr r6, _0803D9AC +_0803D950: + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D9E0 + ldr r4, _0803D9B0 + ldrh r0, [r4, #6] + cmp r0, #0 + bne _0803D9B4 + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #6] + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #2 + adds r2, r4, #0 + adds r2, #8 + bl sub_0806A058 + b _0803D9E0 + .align 2, 0 +_0803D994: .4byte gUnknown_2023D27 +_0803D998: .4byte gUnknown_2022C90 +_0803D99C: .4byte 0x023F0B92 +_0803D9A0: .4byte gUnknown_2023D08 +_0803D9A4: .4byte gUnknown_2023D10 +_0803D9A8: .4byte gUnknown_2023D12 +_0803D9AC: .4byte gUnknown_2024190 +_0803D9B0: .4byte gUnknown_3005A70 +_0803D9B4: + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #0x26] + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #2 + adds r2, r4, #0 + adds r2, #0x14 + bl sub_0806A058 +_0803D9E0: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r1, _0803DA30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803D950 +_0803D9F2: + bl sub_080ED2C8 +_0803D9F6: + ldr r0, _0803DA34 + ldr r0, [r0] + ldr r1, _0803DA38 + ands r0, r1 + cmp r0, #0 + bne _0803DA12 + ldr r0, _0803DA3C + ldrb r1, [r0, #5] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0803DA12 + bl sub_080EECA4 +_0803DA12: + bl sub_0818619C + movs r0, #3 + bl sub_080A1C58 + movs r0, #5 + bl sub_080A2818 + ldr r1, _0803DA40 + ldr r0, _0803DA44 + str r0, [r1] + ldr r1, _0803DA48 + ldr r0, _0803DA4C + str r0, [r1] + b _0803DA6A + .align 2, 0 +_0803DA30: .4byte gUnknown_2023D10 +_0803DA34: .4byte gUnknown_2022C90 +_0803DA38: .4byte 0x023F0B9A +_0803DA3C: .4byte gUnknown_3005A70 +_0803DA40: .4byte gUnknown_3005A64 +_0803DA44: .4byte sub_0803DA80 +_0803DA48: .4byte gUnknown_3005F28 +_0803DA4C: .4byte sub_080380FC +_0803DA50: + ldr r0, _0803DA74 + ldr r0, [r0] + cmp r0, #0 + bne _0803DA6A + ldr r1, _0803DA78 + ldr r0, _0803DA7C + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803DA6A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803DA74: .4byte gUnknown_2023D0C +_0803DA78: .4byte gUnknown_82EC694 +_0803DA7C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0803D918 + + thumb_func_start sub_0803DA80 +sub_0803DA80: @ 0x0803DA80 + push {lr} + ldr r0, _0803DAAC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803DAC6 + bl sub_0800668C + ldr r0, _0803DAB0 + ldrb r0, [r0] + cmp r0, #0 + beq _0803DAA2 + ldr r0, _0803DAB4 + ldrb r0, [r0] + cmp r0, #1 + beq _0803DAC0 +_0803DAA2: + ldr r1, _0803DAB8 + ldr r0, _0803DABC + str r0, [r1] + b _0803DAE2 + .align 2, 0 +_0803DAAC: .4byte gUnknown_2037C74 +_0803DAB0: .4byte gUnknown_3005AB4 +_0803DAB4: .4byte gUnknown_2023FDE +_0803DAB8: .4byte gUnknown_3005A64 +_0803DABC: .4byte sub_0803DBB0 +_0803DAC0: + ldr r1, _0803DAE8 + ldr r0, _0803DAEC + str r0, [r1] +_0803DAC6: + bl sub_080034D4 + ldr r0, _0803DAF0 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0803DAE2 + bl sub_0805ECB0 + bl sub_08056C38 + bl sub_0805CD74 +_0803DAE2: + pop {r0} + bx r0 + .align 2, 0 +_0803DAE8: .4byte gUnknown_3005A64 +_0803DAEC: .4byte sub_0803DAF4 +_0803DAF0: .4byte gUnknown_2022C90 + thumb_func_end sub_0803DA80 + + thumb_func_start sub_0803DAF4 +sub_0803DAF4: @ 0x0803DAF4 + push {r4, r5, r6, lr} + ldr r0, _0803DB4C + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #0 + beq _0803DB6E +_0803DB00: + movs r6, #0 +_0803DB02: + ldrb r2, [r3] + ldr r0, _0803DB50 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0803DB60 + bics r2, r1 + strb r2, [r3] + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _0803DB54 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0803DB60 + bl sub_080034D4 + ldr r0, _0803DB58 + ldr r1, _0803DB5C + str r1, [r0] + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0813DB90 + b _0803DB74 + .align 2, 0 +_0803DB4C: .4byte gUnknown_3005AB4 +_0803DB50: .4byte gUnknown_82FACB4 +_0803DB54: .4byte gUnknown_2024190 +_0803DB58: .4byte gUnknown_3005A64 +_0803DB5C: .4byte sub_0803DB88 +_0803DB60: + adds r6, #1 + ldr r3, _0803DB7C + cmp r6, #5 + ble _0803DB02 + ldrb r0, [r3] + cmp r0, #0 + bne _0803DB00 +_0803DB6E: + ldr r1, _0803DB80 + ldr r0, _0803DB84 + str r0, [r1] +_0803DB74: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803DB7C: .4byte gUnknown_3005AB4 +_0803DB80: .4byte gUnknown_3005A64 +_0803DB84: .4byte sub_0803DBB0 + thumb_func_end sub_0803DAF4 + + thumb_func_start sub_0803DB88 +sub_0803DB88: @ 0x0803DB88 + push {lr} + ldr r0, _0803DBA0 + ldr r1, [r0, #4] + ldr r0, _0803DBA4 + cmp r1, r0 + bne _0803DB9A + ldr r1, _0803DBA8 + ldr r0, _0803DBAC + str r0, [r1] +_0803DB9A: + pop {r0} + bx r0 + .align 2, 0 +_0803DBA0: .4byte gUnknown_3002360 +_0803DBA4: .4byte sub_080380FC +_0803DBA8: .4byte gUnknown_3005A64 +_0803DBAC: .4byte sub_0803DAF4 + thumb_func_end sub_0803DB88 + + thumb_func_start sub_0803DBB0 +sub_0803DBB0: @ 0x0803DBB0 + push {r4, r5, r6, lr} + ldr r6, _0803DC34 + ldr r0, [r6] + movs r5, #2 + ands r0, r5 + cmp r0, #0 + bne _0803DBCC + ldr r4, _0803DC38 + adds r0, r4, #0 + bl sub_0806D748 + adds r0, r4, #0 + bl sub_0806D958 +_0803DBCC: + ldr r4, [r6] + adds r0, r4, #0 + ands r0, r5 + cmp r0, #0 + beq _0803DBDE + ldr r0, _0803DC3C + ldrb r0, [r0] + cmp r0, #0 + bne _0803DC2C +_0803DBDE: + ldr r1, _0803DC40 + ldr r5, _0803DC44 + ldrb r0, [r5] + strh r0, [r1] + ldr r3, _0803DC48 + ldr r0, _0803DC4C + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0803DC50 + ldr r0, [r0] + str r0, [r3] + movs r0, #0x80 + lsls r0, r0, #3 + ands r4, r0 + cmp r4, #0 + beq _0803DC1E + ldr r0, _0803DC54 + bl sub_08161E2C + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0803DC1A + cmp r1, #7 + bne _0803DC1E +_0803DC1A: + bl sub_08161E60 +_0803DC1E: + movs r0, #0x5a + bl m4aSongNumStop + ldr r0, _0803DC48 + ldr r0, [r0, #8] + bl sub_08000540 +_0803DC2C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803DC34: .4byte gUnknown_2022C90 +_0803DC38: .4byte gUnknown_2024190 +_0803DC3C: .4byte gUnknown_30031C4 +_0803DC40: .4byte gUnknown_2037290 +_0803DC44: .4byte gUnknown_2023FDE +_0803DC48: .4byte gUnknown_3002360 +_0803DC4C: .4byte 0x00000439 +_0803DC50: .4byte gUnknown_3005A60 +_0803DC54: .4byte gUnknown_20243E8 + thumb_func_end sub_0803DBB0 + + thumb_func_start sub_0803DC58 +sub_0803DC58: @ 0x0803DC58 + push {lr} + ldr r0, _0803DC94 + ldrb r0, [r0] + subs r0, #0xb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0803DCA0 + ldr r3, _0803DC98 + ldr r0, [r3] + ldr r0, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, #0 + beq _0803DC7C + subs r0, #1 + strb r0, [r1] +_0803DC7C: + ldr r2, _0803DC9C + ldr r0, [r3] + ldr r1, [r0, #0xc] + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + b _0803DCBA + .align 2, 0 +_0803DC94: .4byte gUnknown_2023D27 +_0803DC98: .4byte gUnknown_202414C +_0803DC9C: .4byte gUnknown_3005A64 +_0803DCA0: + ldr r0, _0803DCC0 + ldr r0, [r0] + cmp r0, #0 + bne _0803DCBA + ldr r1, _0803DCC4 + ldr r0, _0803DCC8 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803DCBA: + pop {r0} + bx r0 + .align 2, 0 +_0803DCC0: .4byte gUnknown_2023D0C +_0803DCC4: .4byte gUnknown_82EC694 +_0803DCC8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0803DC58 + + thumb_func_start sub_0803DCCC +sub_0803DCCC: @ 0x0803DCCC + push {lr} + ldr r0, _0803DCEC + ldr r0, [r0] + cmp r0, #0 + bne _0803DCE8 + ldr r1, _0803DCF0 + ldr r0, _0803DCF4 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0803DCE8: + pop {r0} + bx r0 + .align 2, 0 +_0803DCEC: .4byte gUnknown_2023D0C +_0803DCF0: .4byte gUnknown_82EC694 +_0803DCF4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0803DCCC + + thumb_func_start sub_0803DCF8 +sub_0803DCF8: @ 0x0803DCF8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #4 + str r0, [sp] + ldr r6, _0803DD38 + ldr r1, _0803DD3C + ldr r0, _0803DD40 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r6] + ldr r1, _0803DD44 + ldr r3, [r1] + adds r0, r3, #0 + adds r0, #0x91 + ldrb r2, [r0] + ldr r1, _0803DD48 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + beq _0803DD50 + ldr r1, _0803DD4C + movs r0, #0xc + b _0803E47C + .align 2, 0 +_0803DD38: .4byte gUnknown_2023EAF +_0803DD3C: .4byte gUnknown_2023D22 +_0803DD40: .4byte gUnknown_2023D26 +_0803DD44: .4byte gUnknown_2024140 +_0803DD48: .4byte gUnknown_82FACB4 +_0803DD4C: .4byte gUnknown_2023D27 +_0803DD50: + ldr r1, _0803DDC8 + movs r0, #1 + strb r0, [r1] + ldr r1, _0803DDCC + movs r0, #1 + strb r0, [r1, #0xe] + ldr r5, _0803DDD0 + adds r0, r3, r5 + strb r2, [r0] + ldr r0, _0803DDD4 + strb r2, [r0] + ldr r0, _0803DDD8 + strb r2, [r0] + ldr r0, _0803DDDC + strb r2, [r0, #6] + ldr r2, _0803DDE0 + ldr r0, _0803DDE4 + mov sb, r0 + ldrb r0, [r6] + ldr r3, _0803DDE8 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0x80 + ldrb r0, [r0] + mov r5, sb + strb r0, [r5] + strb r0, [r2] + ldr r1, _0803DDEC + ldrb r4, [r6] + lsls r0, r4, #4 + adds r3, r0, r1 + ldrb r1, [r3] + lsls r0, r1, #0x1d + mov r8, r2 + cmp r0, #0 + bge _0803DDFC + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldr r2, _0803DDF0 + ldr r1, _0803DDF4 + movs r0, #0xa5 + strh r0, [r1] + strh r0, [r2] + ldr r2, _0803DDF8 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #4 + orrs r0, r1 + str r0, [r2] + movs r0, #0xa5 + movs r1, #0 + bl sub_08045520 + ldrb r1, [r6] + ldr r3, _0803DDE8 + ldr r2, [r3] + b _0803DF56 + .align 2, 0 +_0803DDC8: .4byte gUnknown_2023EB5 +_0803DDCC: .4byte gUnknown_2024118 +_0803DDD0: .4byte 0x000001A3 +_0803DDD4: .4byte gUnknown_2023F20 +_0803DDD8: .4byte gUnknown_2023EB6 +_0803DDDC: .4byte gUnknown_2023FD6 +_0803DDE0: .4byte gUnknown_2023E8C +_0803DDE4: .4byte gUnknown_2023E8D +_0803DDE8: .4byte gUnknown_2024140 +_0803DDEC: .4byte gUnknown_2023FE0 +_0803DDF0: .4byte gUnknown_2023E8E +_0803DDF4: .4byte gUnknown_2023E90 +_0803DDF8: .4byte gUnknown_2023F24 +_0803DDFC: + ldr r5, _0803DE34 + mov sl, r5 + movs r0, #0x58 + adds r5, r4, #0 + muls r5, r0, r5 + mov r0, sl + adds r0, #0x50 + adds r0, r5, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + bne _0803DE22 + movs r7, #0x80 + lsls r7, r7, #0xf + ands r7, r1 + cmp r7, #0 + beq _0803DE44 +_0803DE22: + ldr r3, _0803DE38 + ldr r2, _0803DE3C + ldr r1, _0803DE40 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + b _0803DF7C + .align 2, 0 +_0803DE34: .4byte gUnknown_2023D28 +_0803DE38: .4byte gUnknown_2023E8E +_0803DE3C: .4byte gUnknown_2023E90 +_0803DE40: .4byte gUnknown_2023F0C +_0803DE44: + ldr r1, _0803DE98 + mov ip, r1 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + add r0, ip + ldrh r3, [r0, #6] + adds r1, r3, #0 + cmp r1, #0 + beq _0803DF1C + ldrb r2, [r0, #0xc] + lsls r0, r2, #1 + adds r0, r0, r5 + mov r4, sl + adds r4, #0xc + adds r0, r0, r4 + ldrh r0, [r0] + cmp r1, r0 + bne _0803DEA8 + ldr r2, _0803DE9C + ldr r0, _0803DEA0 + strh r3, [r0] + strh r3, [r2] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #0xc] + mov r3, sb + strb r0, [r3] + mov r5, r8 + strb r0, [r5] + ldrh r0, [r2] + movs r1, #0 + bl sub_08045520 + ldrb r1, [r6] + ldr r3, _0803DEA4 + ldr r2, [r3] + b _0803DF56 + .align 2, 0 +_0803DE98: .4byte gUnknown_2023F60 +_0803DE9C: .4byte gUnknown_2023E8E +_0803DEA0: .4byte gUnknown_2023E90 +_0803DEA4: .4byte gUnknown_2024140 +_0803DEA8: + cmp r1, #0 + beq _0803DF1C + cmp r1, r0 + beq _0803DF1C + mov r5, sb + strb r2, [r5] + mov r0, r8 + strb r2, [r0] + ldr r3, _0803DF10 + ldr r2, _0803DF14 + ldrb r0, [r0] + lsls r0, r0, #1 + ldrb r1, [r6] + movs r5, #0x58 + muls r1, r5, r1 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r2] + strh r0, [r3] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + movs r2, #0 + strh r7, [r0, #6] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + strb r2, [r0, #0xc] + ldrb r0, [r6] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + ldrb r2, [r1, #0xe] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xe] + ldrh r0, [r3] + movs r1, #0 + bl sub_08045520 + ldrb r1, [r6] + ldr r3, _0803DF18 + ldr r2, [r3] + b _0803DF56 + .align 2, 0 +_0803DF10: .4byte gUnknown_2023E8E +_0803DF14: .4byte gUnknown_2023E90 +_0803DF18: .4byte gUnknown_2024140 +_0803DF1C: + ldr r3, _0803DF5C + mov r5, r8 + ldrb r0, [r5] + lsls r0, r0, #1 + ldr r4, _0803DF60 + ldrb r2, [r4] + movs r1, #0x58 + muls r1, r2, r1 + adds r0, r0, r1 + adds r3, #0xc + adds r0, r0, r3 + ldr r1, _0803DF64 + lsls r2, r2, #1 + adds r2, r2, r1 + ldrh r3, [r0] + ldrh r2, [r2] + cmp r3, r2 + beq _0803DF74 + ldr r1, _0803DF68 + ldr r0, _0803DF6C + strh r3, [r0] + strh r3, [r1] + ldrh r0, [r1] + movs r1, #0 + bl sub_08045520 + ldrb r1, [r4] + ldr r2, _0803DF70 + ldr r2, [r2] +_0803DF56: + adds r1, r1, r2 + strb r0, [r1, #0xc] + b _0803DF7C + .align 2, 0 +_0803DF5C: .4byte gUnknown_2023D28 +_0803DF60: .4byte gUnknown_2023EAF +_0803DF64: .4byte gUnknown_2023F18 +_0803DF68: .4byte gUnknown_2023E8E +_0803DF6C: .4byte gUnknown_2023E90 +_0803DF70: .4byte gUnknown_2024140 +_0803DF74: + ldr r1, _0803DFA8 + ldr r0, _0803DFAC + strh r3, [r0] + strh r3, [r1] +_0803DF7C: + ldr r2, _0803DFB0 + ldr r1, _0803DFB4 + ldrb r3, [r1] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + mov r8, r1 + cmp r0, #0 + beq _0803DFC4 + adds r0, r3, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803DFBC + ldr r0, _0803DFB8 + ldr r1, _0803DFA8 + ldrh r1, [r1] + strh r1, [r0, #0x22] + b _0803DFC4 + .align 2, 0 +_0803DFA8: .4byte gUnknown_2023E8E +_0803DFAC: .4byte gUnknown_2023E90 +_0803DFB0: .4byte gUnknown_2023D28 +_0803DFB4: .4byte gUnknown_2023EAF +_0803DFB8: .4byte gUnknown_3005A70 +_0803DFBC: + ldr r0, _0803E028 + ldr r1, _0803E02C + ldrh r1, [r1] + strh r1, [r0, #0x24] +_0803DFC4: + mov r1, r8 + ldrb r0, [r1] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0803E030 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r5, r0, r1 + ldrb r0, [r5, #8] + cmp r0, #0 + beq _0803E040 + ldr r2, _0803E034 + ldr r0, _0803E02C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #6] + cmp r0, #0 + bne _0803E040 + mov r3, r8 + ldrb r0, [r3] + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r5, #9] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0803E040 + ldr r1, _0803E038 + ldrb r2, [r5, #9] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0803E040 + ldr r0, _0803E03C + strb r2, [r0] + b _0803E3AA + .align 2, 0 +_0803E028: .4byte gUnknown_3005A70 +_0803E02C: .4byte gUnknown_2023E8E +_0803E030: .4byte gUnknown_2023F38 +_0803E034: .4byte gUnknown_82ED220 +_0803E038: .4byte gUnknown_2023D28 +_0803E03C: .4byte gUnknown_2023EB0 +_0803E040: + ldr r0, _0803E15C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + ldr r5, _0803E160 + mov r8, r5 + cmp r0, #0 + bne _0803E052 + b _0803E320 +_0803E052: + ldr r1, _0803E164 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #8] + cmp r5, #0 + beq _0803E064 + b _0803E270 +_0803E064: + ldr r2, _0803E168 + ldr r0, _0803E16C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0803E080 + ldrb r0, [r4, #6] + cmp r0, #0x10 + bne _0803E080 + b _0803E270 +_0803E080: + ldr r3, _0803E170 + ldr r2, _0803E160 + ldrb r6, [r2] + ldr r0, _0803E174 + ldr r0, [r0] + adds r0, r6, r0 + ldrb r1, [r0, #0xc] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + mov r8, r2 + cmp r0, #0x1f + bne _0803E0A0 + b _0803E270 +_0803E0A0: + ldrb r0, [r4, #2] + cmp r0, #0xd + beq _0803E0A8 + b _0803E270 +_0803E0A8: + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0803E178 + strb r5, [r1] + ldr r0, _0803E17C + ldrb r0, [r0] + cmp r5, r0 + bhs _0803E120 + adds r4, r1, #0 +_0803E0C0: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + beq _0803E10E + ldr r0, _0803E160 + ldrb r1, [r0] + ldr r0, _0803E174 + ldr r0, [r0] + adds r1, r1, r0 + ldrb r0, [r1, #0xc] + ldrb r1, [r4] + cmp r0, r1 + beq _0803E10E + ldr r1, _0803E170 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1f + bne _0803E10E + adds r0, r2, #0 + bl sub_08048368 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [sp] + cmp r0, r3 + bhs _0803E10E + ldrb r0, [r4] + bl sub_08048368 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] +_0803E10E: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803E17C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803E0C0 +_0803E120: + ldr r5, [sp] + cmp r5, #4 + beq _0803E128 + b _0803E222 +_0803E128: + ldr r2, _0803E168 + ldr r0, _0803E180 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #6] + ands r5, r0 + cmp r5, #0 + beq _0803E1A8 + ldr r0, _0803E160 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E188 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803E184 + movs r0, #1 + b _0803E19A + .align 2, 0 +_0803E15C: .4byte gUnknown_2022C90 +_0803E160: .4byte gUnknown_2023EAF +_0803E164: .4byte gUnknown_2023F38 +_0803E168: .4byte gUnknown_82ED220 +_0803E16C: .4byte gUnknown_2023E8E +_0803E170: .4byte gUnknown_2023D28 +_0803E174: .4byte gUnknown_2024140 +_0803E178: .4byte gUnknown_2023D08 +_0803E17C: .4byte gUnknown_2023D10 +_0803E180: .4byte gUnknown_2023E90 +_0803E184: + movs r0, #3 + b _0803E19A +_0803E188: + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803E198 + movs r0, #0 + b _0803E19A +_0803E198: + movs r0, #2 +_0803E19A: + bl sub_080A631C + ldr r1, _0803E1A4 + strb r0, [r1] + b _0803E1B8 + .align 2, 0 +_0803E1A4: .4byte gUnknown_2023EB0 +_0803E1A8: + ldr r2, _0803E1F0 + ldr r0, _0803E1F4 + ldrb r0, [r0] + ldr r1, _0803E1F8 + ldr r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0, #0xc] + strb r0, [r2] +_0803E1B8: + ldr r7, _0803E1FC + ldrb r0, [r7] + ldr r1, _0803E200 + mov r8, r1 + ldr r5, _0803E1F0 + ldrb r1, [r5] + lsls r1, r1, #2 + add r1, r8 + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0803E1D2 + b _0803E3AA +_0803E1D2: + ldr r6, _0803E1F4 + ldrb r0, [r6] + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0803E204 + ldrb r0, [r5] + b _0803E398 + .align 2, 0 +_0803E1F0: .4byte gUnknown_2023EB0 +_0803E1F4: .4byte gUnknown_2023EAF +_0803E1F8: .4byte gUnknown_2024140 +_0803E1FC: .4byte gUnknown_2023EB4 +_0803E200: .4byte gUnknown_82FACB4 +_0803E204: + ldrb r0, [r6] + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + strb r0, [r5] + ldrb r1, [r7] + ldrb r2, [r5] + lsls r0, r2, #2 + add r0, r8 + b _0803E38E +_0803E222: + ldr r4, _0803E25C + ldr r0, _0803E260 + ldr r3, [sp] + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r4] + ldrb r0, [r4] + ldr r2, _0803E264 + movs r1, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + adds r1, #0x20 + ldrb r1, [r1] + bl sub_0813114C + ldr r2, _0803E268 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0803E26C + ldrb r0, [r4] + strb r0, [r1] + b _0803E3AA + .align 2, 0 +_0803E25C: .4byte gUnknown_2023D08 +_0803E260: .4byte gUnknown_2023D22 +_0803E264: .4byte gUnknown_2023D28 +_0803E268: .4byte gUnknown_2024020 +_0803E26C: .4byte gUnknown_2023EB0 +_0803E270: + ldr r0, _0803E2B4 + ldr r0, [r0] + movs r4, #1 + ands r0, r4 + cmp r0, #0 + beq _0803E320 + ldr r2, _0803E2B8 + ldr r0, _0803E2BC + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #6] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0803E320 + mov r5, r8 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E2C4 + bl sub_0806F050 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + beq _0803E2C0 + movs r0, #1 + b _0803E2D6 + .align 2, 0 +_0803E2B4: .4byte gUnknown_2022C90 +_0803E2B8: .4byte gUnknown_82ED220 +_0803E2BC: .4byte gUnknown_2023E90 +_0803E2C0: + movs r0, #3 + b _0803E2D6 +_0803E2C4: + bl sub_0806F050 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + beq _0803E2D4 + movs r0, #0 + b _0803E2D6 +_0803E2D4: + movs r0, #2 +_0803E2D6: + bl sub_080A631C + ldr r1, _0803E310 + strb r0, [r1] + ldr r0, _0803E314 + ldrb r1, [r0] + ldr r2, _0803E318 + ldr r5, _0803E310 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0803E3AA + ldr r0, _0803E31C + ldrb r0, [r0] + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0803E3AA + ldrb r0, [r5] + b _0803E398 + .align 2, 0 +_0803E310: .4byte gUnknown_2023EB0 +_0803E314: .4byte gUnknown_2023EB4 +_0803E318: .4byte gUnknown_82FACB4 +_0803E31C: .4byte gUnknown_2023EAF +_0803E320: + ldr r5, _0803E360 + mov r2, r8 + ldrb r0, [r2] + ldr r1, _0803E364 + ldr r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0, #0xc] + strb r0, [r5] + ldr r6, _0803E368 + ldrb r1, [r6] + ldr r7, _0803E36C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0803E3AA + ldrb r0, [r2] + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0803E370 + ldrb r0, [r5] + b _0803E398 + .align 2, 0 +_0803E360: .4byte gUnknown_2023EB0 +_0803E364: .4byte gUnknown_2024140 +_0803E368: .4byte gUnknown_2023EB4 +_0803E36C: .4byte gUnknown_82FACB4 +_0803E370: + mov r1, r8 + ldrb r0, [r1] + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + strb r0, [r5] + ldrb r1, [r6] + ldrb r2, [r5] + lsls r0, r2, #2 + adds r0, r0, r7 +_0803E38E: + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0803E3AA + adds r0, r2, #0 +_0803E398: + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + strb r0, [r5] +_0803E3AA: + ldr r0, _0803E3E0 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #0xa + ands r1, r2 + adds r5, r0, #0 + cmp r1, #0 + beq _0803E448 + ldr r0, _0803E3E4 + ldr r4, _0803E3E8 + ldrb r2, [r4] + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _0803E448 + ldr r1, _0803E3EC + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0803E3F4 + ldr r1, _0803E3F0 + movs r0, #0xc + b _0803E47C + .align 2, 0 +_0803E3E0: .4byte gUnknown_2022C90 +_0803E3E4: .4byte gUnknown_2023FE0 +_0803E3E8: .4byte gUnknown_2023EAF +_0803E3EC: .4byte gUnknown_2023D28 +_0803E3F0: .4byte gUnknown_2023D27 +_0803E3F4: + ldr r3, _0803E420 + lsls r0, r2, #2 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, #0 + beq _0803E42C + ldr r1, _0803E424 + movs r2, #0 + movs r0, #4 + strb r0, [r1, #5] + ldr r1, _0803E428 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r1] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r3 + str r2, [r0] + b _0803E464 + .align 2, 0 +_0803E420: .4byte gUnknown_2023ED4 +_0803E424: .4byte gUnknown_2023FD6 +_0803E428: .4byte gUnknown_2023EB8 +_0803E42C: + ldr r1, _0803E43C + movs r0, #4 + strb r0, [r1, #5] + ldr r1, _0803E440 + ldr r0, _0803E444 + str r0, [r1] + b _0803E464 + .align 2, 0 +_0803E43C: .4byte gUnknown_2023FD6 +_0803E440: .4byte gUnknown_2023EB8 +_0803E444: .4byte gUnknown_8289C35 +_0803E448: + ldr r4, _0803E490 + ldr r3, _0803E494 + ldr r2, _0803E498 + ldr r0, _0803E49C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r4] +_0803E464: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0803E478 + ldr r0, _0803E4A0 + ldrb r0, [r0] + bl sub_081A52D8 +_0803E478: + ldr r1, _0803E4A4 + movs r0, #0xa +_0803E47C: + strb r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803E490: .4byte gUnknown_2023EB8 +_0803E494: .4byte gUnknown_8286C30 +_0803E498: .4byte gUnknown_82ED220 +_0803E49C: .4byte gUnknown_2023E8E +_0803E4A0: .4byte gUnknown_2023EAF +_0803E4A4: .4byte gUnknown_2023D27 + thumb_func_end sub_0803DCF8 + + thumb_func_start sub_0803E4A8 +sub_0803E4A8: @ 0x0803E4A8 + push {r4, lr} + ldr r3, _0803E514 + ldr r1, _0803E518 + ldr r0, _0803E51C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldr r0, _0803E520 + movs r2, #0 + strh r2, [r0] + ldr r0, _0803E524 + strh r2, [r0] + ldr r1, _0803E528 + ldrb r0, [r3] + adds r0, r0, r1 + strb r2, [r0] + ldr r1, _0803E52C + ldrb r0, [r3] + adds r0, r0, r1 + strb r2, [r0] + ldr r2, _0803E530 + movs r0, #0xfd + strb r0, [r2] + movs r0, #7 + strb r0, [r2, #1] + ldrb r4, [r3] + strb r4, [r2, #2] + ldrb r0, [r3] + ldr r1, _0803E534 + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x58 + ldrb r0, [r0] + strb r0, [r2, #3] + movs r0, #0xff + strb r0, [r2, #4] + ldr r0, _0803E538 + strb r4, [r0, #0x17] + ldr r1, _0803E53C + ldr r0, _0803E540 + str r0, [r1] + ldr r1, _0803E544 + movs r0, #0xa + strb r0, [r1] + ldr r1, _0803E548 + ldrb r0, [r1, #2] + cmp r0, #0xfe + bhi _0803E50E + adds r0, #1 + strb r0, [r1, #2] +_0803E50E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803E514: .4byte gUnknown_2023EAF +_0803E518: .4byte gUnknown_2023D22 +_0803E51C: .4byte gUnknown_2023D26 +_0803E520: .4byte gUnknown_2022AC8 +_0803E524: .4byte gUnknown_2022ACA +_0803E528: .4byte gUnknown_2024150 +_0803E52C: .4byte gUnknown_2024154 +_0803E530: .4byte gUnknown_2022C0C +_0803E534: .4byte gUnknown_2024140 +_0803E538: .4byte gUnknown_2024118 +_0803E53C: .4byte gUnknown_2023EB8 +_0803E540: .4byte gUnknown_828909D +_0803E544: .4byte gUnknown_2023D27 +_0803E548: .4byte gUnknown_3005A70 + thumb_func_end sub_0803E4A8 + + thumb_func_start sub_0803E54C +sub_0803E54C: @ 0x0803E54C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _0803E5AC + ldr r2, _0803E5B0 + ldr r1, _0803E5B4 + ldr r0, _0803E5B8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r4] + ldr r0, _0803E5BC + movs r1, #0 + strh r1, [r0] + ldr r0, _0803E5C0 + strh r1, [r0] + ldrb r0, [r4] + bl sub_080454A8 + ldr r5, _0803E5C4 + ldr r2, _0803E5C8 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + strh r3, [r5] + cmp r3, #0xc + bhi _0803E5D8 + ldr r2, _0803E5CC + ldr r1, _0803E5D0 + ldrh r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r0, _0803E5D4 + mov sl, r0 + b _0803E836 + .align 2, 0 +_0803E5AC: .4byte gUnknown_2023EAF +_0803E5B0: .4byte gUnknown_2023EB0 +_0803E5B4: .4byte gUnknown_2023D22 +_0803E5B8: .4byte gUnknown_2023D26 +_0803E5BC: .4byte gUnknown_2022AC8 +_0803E5C0: .4byte gUnknown_2022ACA +_0803E5C4: .4byte gUnknown_2023EAC +_0803E5C8: .4byte gUnknown_2023508 +_0803E5CC: .4byte gUnknown_2023EB8 +_0803E5D0: .4byte gUnknown_828A290 +_0803E5D4: .4byte gUnknown_2023D27 +_0803E5D8: + adds r0, r3, #0 + subs r0, #0x50 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _0803E600 + ldr r0, _0803E5F4 + ldr r1, _0803E5F8 + ldr r1, [r1] + str r1, [r0] + ldr r1, _0803E5FC + mov sl, r1 + b _0803E836 + .align 2, 0 +_0803E5F4: .4byte gUnknown_2023EB8 +_0803E5F8: .4byte gUnknown_828A2DC +_0803E5FC: .4byte gUnknown_2023D27 +_0803E600: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E628 + ldr r0, _0803E61C + ldr r1, _0803E620 + ldr r1, [r1] + str r1, [r0] + ldr r2, _0803E624 + mov sl, r2 + b _0803E836 + .align 2, 0 +_0803E61C: .4byte gUnknown_2023EB8 +_0803E620: .4byte gUnknown_828A2C4 +_0803E624: .4byte gUnknown_2023D27 +_0803E628: + ldr r3, _0803E660 + ldrb r0, [r4] + strb r0, [r3, #0x17] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + ldr r2, _0803E664 + ldr r1, [r2] + adds r0, r0, r1 + adds r0, #0xc4 + ldrb r0, [r0] + subs r0, #1 + mov r8, r4 + ldr r1, _0803E668 + mov sb, r1 + ldr r6, _0803E66C + mov ip, r3 + adds r7, r2, #0 + ldr r2, _0803E670 + mov sl, r2 + cmp r0, #4 + bls _0803E654 + b _0803E81E +_0803E654: + lsls r0, r0, #2 + ldr r1, _0803E674 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803E660: .4byte gUnknown_2024118 +_0803E664: .4byte gUnknown_2024140 +_0803E668: .4byte gUnknown_2023EB8 +_0803E66C: .4byte gUnknown_828A2C4 +_0803E670: .4byte gUnknown_2023D27 +_0803E674: .4byte _0803E678 +_0803E678: @ jump table + .4byte _0803E81E @ case 0 + .4byte _0803E81E @ case 1 + .4byte _0803E68C @ case 2 + .4byte _0803E720 @ case 3 + .4byte _0803E7F0 @ case 4 +_0803E68C: + ldr r5, _0803E6C4 + movs r0, #0 + strb r0, [r5, #5] + ldr r2, _0803E6C8 + ldrb r0, [r2] + lsrs r0, r0, #1 + ldr r1, [r7] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + mov r8, r2 + cmp r0, #0 + beq _0803E6D8 + movs r0, #0x3e + ands r0, r1 + ldr r1, _0803E6CC + mov sb, r1 + ldr r6, _0803E6D0 + ldr r2, _0803E6D4 + mov sl, r2 + cmp r0, #0 + bne _0803E6BE + b _0803E81E +_0803E6BE: + movs r0, #5 + strb r0, [r5, #5] + b _0803E81E + .align 2, 0 +_0803E6C4: .4byte gUnknown_2023FD6 +_0803E6C8: .4byte gUnknown_2023EAF +_0803E6CC: .4byte gUnknown_2023EB8 +_0803E6D0: .4byte gUnknown_828A2C4 +_0803E6D4: .4byte gUnknown_2023D27 +_0803E6D8: + ldr r0, _0803E714 + mov sb, r0 + ldr r6, _0803E718 + ldr r1, _0803E71C + mov sl, r1 + mov r4, r8 + adds r3, r7, #0 + adds r2, r5, #0 +_0803E6E8: + ldrb r1, [r4] + lsrs r1, r1, #1 + ldr r0, [r3] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + ldrb r0, [r2, #5] + adds r0, #1 + strb r0, [r2, #5] + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803E6E8 + b _0803E81E + .align 2, 0 +_0803E714: .4byte gUnknown_2023EB8 +_0803E718: .4byte gUnknown_828A2C4 +_0803E71C: .4byte gUnknown_2023D27 +_0803E720: + ldr r3, _0803E754 + movs r0, #4 + strb r0, [r3, #5] + ldr r2, _0803E758 + ldrb r0, [r2] + lsrs r0, r0, #1 + ldr r1, [r7] + adds r0, r0, r1 + adds r6, r0, #0 + adds r6, #0xc6 + ldrb r1, [r6] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r8, r2 + cmp r5, #0 + beq _0803E768 + movs r0, #5 + strb r0, [r3, #5] + ldr r2, _0803E75C + mov sb, r2 + ldr r6, _0803E760 + ldr r0, _0803E764 + mov sl, r0 + b _0803E81E + .align 2, 0 +_0803E754: .4byte gUnknown_2023FD6 +_0803E758: .4byte gUnknown_2023EAF +_0803E75C: .4byte gUnknown_2023EB8 +_0803E760: .4byte gUnknown_828A2C4 +_0803E764: .4byte gUnknown_2023D27 +_0803E768: + ldr r3, _0803E7DC + movs r4, #0xfd + strb r4, [r3] + movs r0, #5 + strb r0, [r3, #1] + movs r2, #1 + strb r2, [r3, #2] + movs r0, #0xff + strb r0, [r3, #3] + ldr r1, _0803E7E0 + strb r4, [r1] + strb r5, [r1, #1] + movs r0, #0xd2 + strb r0, [r1, #2] + strb r5, [r1, #3] + subs r0, #0xd3 + strb r0, [r1, #4] + ldrb r0, [r6] + ands r2, r0 + ldr r1, _0803E7E4 + mov sb, r1 + ldr r6, _0803E7E8 + ldr r0, _0803E7EC + mov sl, r0 + cmp r2, #0 + bne _0803E7CC + mov r5, r8 + adds r4, r7, #0 + adds r2, r3, #0 +_0803E7A2: + ldrb r1, [r5] + lsrs r1, r1, #1 + ldr r0, [r4] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + ldrb r0, [r2, #2] + adds r0, #1 + strb r0, [r2, #2] + ldrb r0, [r5] + lsrs r0, r0, #1 + ldr r1, [r4] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803E7A2 +_0803E7CC: + ldrb r0, [r3, #2] + adds r0, #0xe + movs r1, #0 + mov r2, ip + strb r0, [r2, #0x10] + strb r1, [r2, #0x11] + b _0803E81E + .align 2, 0 +_0803E7DC: .4byte gUnknown_2022C0C +_0803E7E0: .4byte gUnknown_2022C1C +_0803E7E4: .4byte gUnknown_2023EB8 +_0803E7E8: .4byte gUnknown_828A2C4 +_0803E7EC: .4byte gUnknown_2023D27 +_0803E7F0: + ldr r0, _0803E804 + ldr r1, [r0] + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0803E80C + ldr r1, _0803E808 + movs r0, #2 + strb r0, [r1, #5] + b _0803E810 + .align 2, 0 +_0803E804: .4byte gUnknown_2022C90 +_0803E808: .4byte gUnknown_2023FD6 +_0803E80C: + ldr r0, _0803E84C + strb r1, [r0, #5] +_0803E810: + ldr r0, _0803E850 + mov r8, r0 + ldr r1, _0803E854 + mov sb, r1 + ldr r6, _0803E858 + ldr r2, _0803E85C + mov sl, r2 +_0803E81E: + mov r1, r8 + ldrb r0, [r1] + lsrs r0, r0, #1 + ldr r1, [r7] + adds r0, r0, r1 + adds r0, #0xc4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + mov r2, sb + str r0, [r2] +_0803E836: + movs r0, #0xa + mov r1, sl + strb r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803E84C: .4byte gUnknown_2023FD6 +_0803E850: .4byte gUnknown_2023EAF +_0803E854: .4byte gUnknown_2023EB8 +_0803E858: .4byte gUnknown_828A2C4 +_0803E85C: .4byte gUnknown_2023D27 + thumb_func_end sub_0803E54C + + thumb_func_start sub_0803E860 +sub_0803E860: @ 0x0803E860 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r7, #0 + ldr r1, _0803E88C + movs r0, #0x58 + muls r0, r5, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0803E894 + ldr r1, _0803E890 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #7] + b _0803E89E + .align 2, 0 +_0803E88C: .4byte gUnknown_2023D28 +_0803E890: .4byte gUnknown_20240A8 +_0803E894: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_0803E89E: + ldr r0, _0803E8CC + strb r5, [r0] + cmp r1, #0x25 + bne _0803E8DC + ldr r2, _0803E8D0 + ldr r1, _0803E8D4 + movs r0, #0x58 + muls r0, r5, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + strh r0, [r2] + ldr r0, _0803E8D8 + lsls r2, r5, #4 + adds r2, r2, r0 + ldrb r1, [r2, #1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #1] + b _0803E9B0 + .align 2, 0 +_0803E8CC: .4byte gUnknown_2023EB3 +_0803E8D0: .4byte gUnknown_2023EAC +_0803E8D4: .4byte gUnknown_2023D28 +_0803E8D8: .4byte gUnknown_2023FE0 +_0803E8DC: + ldr r0, _0803E968 + mov sl, r0 + movs r2, #0x58 + mov sb, r2 + mov r0, sb + muls r0, r5, r0 + add r0, sl + mov r8, r0 + adds r0, #0x20 + ldrb r6, [r0] + cmp r6, #0x32 + bne _0803E99C + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803E978 + ldr r4, _0803E96C + ldr r1, [r4] + adds r1, #0x6c + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_081A9BA0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + mov r2, r8 + ldrh r0, [r2, #6] + muls r0, r1, r0 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + mov r2, sb + muls r2, r1, r2 + adds r1, r2, #0 + add r1, sl + ldrh r1, [r1, #6] + bl __divsi3 + ldr r1, [r4] + adds r1, #0x6c + ldrb r2, [r1] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806F050 + movs r1, #0xff + ands r1, r0 + cmp r4, r1 + bhi _0803E94C + b _0803EA52 +_0803E94C: + ldr r0, _0803E970 + strb r6, [r0] + ldr r0, _0803E974 + lsls r2, r5, #4 + adds r2, r2, r0 + ldrb r1, [r2, #1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #1] + b _0803E9B0 + .align 2, 0 +_0803E968: .4byte gUnknown_2023D28 +_0803E96C: .4byte gUnknown_2024140 +_0803E970: .4byte gUnknown_2023EAE +_0803E974: .4byte gUnknown_2023FE0 +_0803E978: + ldr r0, _0803E994 + strb r6, [r0] + ldr r0, _0803E998 + lsls r2, r5, #4 + adds r2, r2, r0 + ldrb r1, [r2, #1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #1] + b _0803E9B0 + .align 2, 0 +_0803E994: .4byte gUnknown_2023EAE +_0803E998: .4byte gUnknown_2023FE0 +_0803E99C: + ldr r1, _0803E9B8 + ldr r2, [r1] + ldr r0, _0803E9BC + ands r0, r2 + cmp r0, #0 + beq _0803E9C0 + movs r0, #8 + ands r2, r0 + cmp r2, #0 + beq _0803E9C0 +_0803E9B0: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _0803EA52 + .align 2, 0 +_0803E9B8: .4byte gUnknown_2022C90 +_0803E9BC: .4byte 0x043F0100 +_0803E9C0: + ldr r0, [r1] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0803EA46 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803E9FC + bl sub_081A9BA0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r4, _0803E9F8 + movs r3, #0x58 + adds r0, r5, #0 + muls r0, r3, r0 + adds r0, r0, r4 + ldrh r0, [r0, #6] + muls r0, r1, r0 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + muls r1, r3, r1 + adds r1, r1, r4 + b _0803EA1A + .align 2, 0 +_0803E9F8: .4byte gUnknown_2023D28 +_0803E9FC: + ldr r3, _0803EA74 + movs r2, #0x58 + adds r0, r5, #0 + muls r0, r2, r0 + adds r4, r0, r3 + movs r1, #1 + adds r0, r5, #0 + eors r0, r1 + muls r0, r2, r0 + adds r1, r0, r3 + ldrh r0, [r4, #6] + ldrh r2, [r1, #6] + cmp r0, r2 + bhs _0803EA40 + lsls r0, r0, #7 +_0803EA1A: + ldrh r1, [r1, #6] + bl __divsi3 + ldr r1, _0803EA78 + ldr r1, [r1] + adds r1, #0x6c + ldrb r2, [r1] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806F050 + movs r1, #0xff + ands r1, r0 + cmp r4, r1 + bls _0803EA46 +_0803EA40: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0803EA46: + ldr r0, _0803EA78 + ldr r1, [r0] + adds r1, #0x6c + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0803EA52: + cmp r7, #0 + beq _0803EA64 + ldr r1, _0803EA7C + ldr r0, _0803EA80 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _0803EA84 + movs r0, #4 + strb r0, [r1] +_0803EA64: + adds r0, r7, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0803EA74: .4byte gUnknown_2023D28 +_0803EA78: .4byte gUnknown_2024140 +_0803EA7C: .4byte gUnknown_2023D26 +_0803EA80: .4byte gUnknown_2023D10 +_0803EA84: .4byte gUnknown_2023FDE + thumb_func_end sub_0803E860 + + thumb_func_start sub_0803EA88 +sub_0803EA88: @ 0x0803EA88 + push {r4, r5, r6, lr} + ldr r4, _0803EAD8 + ldr r1, _0803EADC + ldr r5, _0803EAE0 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _0803EAE4 + ldr r0, [r0] + ldr r1, _0803EAE8 + ands r0, r1 + cmp r0, #0 + beq _0803EB4C + ldr r0, _0803EAEC + ldrb r1, [r0] + strb r1, [r5] + ldr r2, _0803EAF0 + movs r0, #0 + strb r0, [r2] + lsls r1, r1, #0x18 + cmp r1, #0 + beq _0803EB20 + adds r4, r2, #0 + ldr r6, _0803EAF4 + ldr r5, _0803EAF8 +_0803EABC: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EAFC + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #3 + bne _0803EB0E + ldrb r0, [r5] + movs r1, #2 + b _0803EB0A + .align 2, 0 +_0803EAD8: .4byte gUnknown_2023EAF +_0803EADC: .4byte gUnknown_2023D22 +_0803EAE0: .4byte gUnknown_2023D26 +_0803EAE4: .4byte gUnknown_2022C90 +_0803EAE8: .4byte gUnknown_2000002 +_0803EAEC: .4byte gUnknown_2023D10 +_0803EAF0: .4byte gUnknown_2023D08 +_0803EAF4: .4byte gUnknown_2023EC0 +_0803EAF8: .4byte gUnknown_2023FDE +_0803EAFC: + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #3 + bne _0803EB0E + ldrb r0, [r5] + movs r1, #1 +_0803EB0A: + orrs r0, r1 + strb r0, [r5] +_0803EB0E: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0803EB3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0803EABC +_0803EB20: + ldr r2, _0803EB40 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0803EB44 + ldr r1, [r0] + ldr r0, _0803EB48 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #8 + orrs r0, r2 + b _0803EBD6 + .align 2, 0 +_0803EB3C: .4byte gUnknown_2023D10 +_0803EB40: .4byte gUnknown_2023FDE +_0803EB44: .4byte gUnknown_3005AF0 +_0803EB48: .4byte 0x00000CA9 +_0803EB4C: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EB8C + ldrb r0, [r4] + bl sub_0803E860 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EBD8 + ldrb r0, [r4] + bl sub_080454A8 + ldr r1, _0803EB7C + movs r0, #3 + strb r0, [r1, #5] + ldr r1, _0803EB80 + ldr r0, _0803EB84 + str r0, [r1] + ldr r1, _0803EB88 + movs r0, #0xa + b _0803EBD6 + .align 2, 0 +_0803EB7C: .4byte gUnknown_2023FD6 +_0803EB80: .4byte gUnknown_2023EB8 +_0803EB84: .4byte gUnknown_828908A +_0803EB88: .4byte gUnknown_2023D27 +_0803EB8C: + ldr r1, _0803EBB4 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0803EBB8 + ands r0, r1 + cmp r0, #0 + beq _0803EBCC + ldr r1, _0803EBBC + movs r0, #4 + strb r0, [r1, #5] + ldr r1, _0803EBC0 + ldr r0, _0803EBC4 + str r0, [r1] + ldr r1, _0803EBC8 + movs r0, #0xa + b _0803EBD6 + .align 2, 0 +_0803EBB4: .4byte gUnknown_2023D28 +_0803EBB8: .4byte 0x0400E000 +_0803EBBC: .4byte gUnknown_2023FD6 +_0803EBC0: .4byte gUnknown_2023EB8 +_0803EBC4: .4byte gUnknown_828908A +_0803EBC8: .4byte gUnknown_2023D27 +_0803EBCC: + ldr r0, _0803EBE0 + ldrb r0, [r0] + strb r0, [r5] + ldr r1, _0803EBE4 + movs r0, #6 +_0803EBD6: + strb r0, [r1] +_0803EBD8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803EBE0: .4byte gUnknown_2023D10 +_0803EBE4: .4byte gUnknown_2023FDE + thumb_func_end sub_0803EA88 + + thumb_func_start sub_0803EBE8 +sub_0803EBE8: @ 0x0803EBE8 + ldr r2, _0803EC10 + ldr r1, _0803EC14 + ldr r0, _0803EC18 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0803EC1C + movs r1, #0 + strh r1, [r0] + ldr r0, _0803EC20 + strh r1, [r0] + ldr r1, _0803EC24 + ldr r0, _0803EC28 + ldr r0, [r0] + str r0, [r1] + ldr r1, _0803EC2C + movs r0, #0xa + strb r0, [r1] + bx lr + .align 2, 0 +_0803EC10: .4byte gUnknown_2023EAF +_0803EC14: .4byte gUnknown_2023D22 +_0803EC18: .4byte gUnknown_2023D26 +_0803EC1C: .4byte gUnknown_2022AC8 +_0803EC20: .4byte gUnknown_2022ACA +_0803EC24: .4byte gUnknown_2023EB8 +_0803EC28: .4byte gUnknown_828A2E0 +_0803EC2C: .4byte gUnknown_2023D27 + thumb_func_end sub_0803EBE8 + + thumb_func_start sub_0803EC30 +sub_0803EC30: @ 0x0803EC30 + ldr r2, _0803EC68 + ldr r1, _0803EC6C + ldr r0, _0803EC70 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0803EC74 + movs r1, #0 + strh r1, [r0] + ldr r0, _0803EC78 + strh r1, [r0] + ldr r1, _0803EC7C + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ldr r1, _0803EC80 + movs r0, #5 + strh r0, [r1] + ldr r1, _0803EC84 + ldr r0, _0803EC88 + ldr r0, [r0, #0x14] + str r0, [r1] + ldr r1, _0803EC8C + movs r0, #0xa + strb r0, [r1] + bx lr + .align 2, 0 +_0803EC68: .4byte gUnknown_2023EAF +_0803EC6C: .4byte gUnknown_2023D22 +_0803EC70: .4byte gUnknown_2023D26 +_0803EC74: .4byte gUnknown_2022AC8 +_0803EC78: .4byte gUnknown_2022ACA +_0803EC7C: .4byte gUnknown_2039D18 +_0803EC80: .4byte gUnknown_2023EAC +_0803EC84: .4byte gUnknown_2023EB8 +_0803EC88: .4byte gUnknown_828A290 +_0803EC8C: .4byte gUnknown_2023D27 + thumb_func_end sub_0803EC30 + + thumb_func_start sub_0803EC90 +sub_0803EC90: @ 0x0803EC90 + push {r4, r5, r6, lr} + ldr r3, _0803ED10 + ldr r1, _0803ED14 + ldr r0, _0803ED18 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r3] + ldr r0, _0803ED1C + movs r1, #0 + strh r1, [r0] + ldr r0, _0803ED20 + strh r1, [r0] + ldr r6, _0803ED24 + ldr r2, _0803ED28 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #1 + strb r0, [r6, #5] + ldr r1, _0803ED2C + ldrb r0, [r3] + lsls r0, r0, #9 + adds r2, #2 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1] + ldr r1, _0803ED30 + ldrb r0, [r1, #0x1f] + cmp r0, #0xfe + bhi _0803ECD6 + adds r0, #1 + strb r0, [r1, #0x1f] +_0803ECD6: + ldr r2, _0803ED34 + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0x7a + ldrb r0, [r1] + cmp r0, #2 + bhi _0803ECE8 + adds r0, #1 + strb r0, [r1] +_0803ECE8: + ldr r0, [r2] + adds r3, r0, #0 + adds r3, #0x7b + ldrb r5, [r3] + adds r4, r5, #0 + cmp r4, #1 + bls _0803ED40 + ldr r2, _0803ED38 + adds r0, #0x7a + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrb r6, [r6, #5] + adds r0, r0, r6 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r4, r0 + bhs _0803ED3C + movs r0, #1 + b _0803ED3E + .align 2, 0 +_0803ED10: .4byte gUnknown_2023EAF +_0803ED14: .4byte gUnknown_2023D22 +_0803ED18: .4byte gUnknown_2023D26 +_0803ED1C: .4byte gUnknown_2022AC8 +_0803ED20: .4byte gUnknown_2022ACA +_0803ED24: .4byte gUnknown_2023FD6 +_0803ED28: .4byte gUnknown_2023508 +_0803ED2C: .4byte gUnknown_2023EAC +_0803ED30: .4byte gUnknown_3005A70 +_0803ED34: .4byte gUnknown_2024140 +_0803ED38: .4byte gUnknown_82EC664 +_0803ED3C: + subs r0, r5, r0 +_0803ED3E: + strb r0, [r3] +_0803ED40: + ldr r1, _0803ED54 + ldr r0, _0803ED58 + ldr r0, [r0, #8] + str r0, [r1] + ldr r1, _0803ED5C + movs r0, #0xa + strb r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803ED54: .4byte gUnknown_2023EB8 +_0803ED58: .4byte gUnknown_828A2E0 +_0803ED5C: .4byte gUnknown_2023D27 + thumb_func_end sub_0803EC90 + + thumb_func_start sub_0803ED60 +sub_0803ED60: @ 0x0803ED60 + push {r4, lr} + ldr r2, _0803EDE0 + ldr r1, _0803EDE4 + ldr r0, _0803EDE8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0803EDEC + movs r4, #0 + strh r4, [r0] + ldr r0, _0803EDF0 + strh r4, [r0] + ldr r3, _0803EDF4 + ldr r0, [r3] + adds r2, r0, #0 + adds r2, #0x7c + ldr r1, _0803EDF8 + adds r0, #0x79 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r1, [r2] + adds r0, r0, r1 + strb r0, [r2] + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x7c + ldrb r0, [r1] + cmp r0, #0x14 + bls _0803EDA2 + movs r0, #0x14 + strb r0, [r1] +_0803EDA2: + ldr r0, [r3] + adds r2, r0, #0 + adds r2, #0x7b + ldr r1, _0803EDFC + adds r0, #0x79 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r1, [r2] + adds r0, r0, r1 + strb r0, [r2] + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x7b + ldrb r0, [r1] + cmp r0, #0x14 + bls _0803EDC8 + movs r0, #0x14 + strb r0, [r1] +_0803EDC8: + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x79 + ldrb r0, [r1] + cmp r0, #2 + bhi _0803EE04 + adds r0, #1 + strb r0, [r1] + ldr r0, _0803EE00 + strb r4, [r0, #5] + b _0803EE0A + .align 2, 0 +_0803EDE0: .4byte gUnknown_2023EAF +_0803EDE4: .4byte gUnknown_2023D22 +_0803EDE8: .4byte gUnknown_2023D26 +_0803EDEC: .4byte gUnknown_2022AC8 +_0803EDF0: .4byte gUnknown_2022ACA +_0803EDF4: .4byte gUnknown_2024140 +_0803EDF8: .4byte gUnknown_82EC673 +_0803EDFC: .4byte gUnknown_82EC677 +_0803EE00: .4byte gUnknown_2023FD6 +_0803EE04: + ldr r1, _0803EE20 + movs r0, #1 + strb r0, [r1, #5] +_0803EE0A: + ldr r1, _0803EE24 + ldr r0, _0803EE28 + ldr r0, [r0, #4] + str r0, [r1] + ldr r1, _0803EE2C + movs r0, #0xa + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803EE20: .4byte gUnknown_2023FD6 +_0803EE24: .4byte gUnknown_2023EB8 +_0803EE28: .4byte gUnknown_828A2E0 +_0803EE2C: .4byte gUnknown_2023D27 + thumb_func_end sub_0803ED60 + + thumb_func_start sub_0803EE30 +sub_0803EE30: @ 0x0803EE30 + push {r4, lr} + ldr r2, _0803EE58 + ldr r1, _0803EE5C + ldr r4, _0803EE60 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #0x11 + bl sub_080A306C + ldr r0, _0803EE64 + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _0803EE68 + movs r0, #4 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803EE58: .4byte gUnknown_2023EAF +_0803EE5C: .4byte gUnknown_2023D22 +_0803EE60: .4byte gUnknown_2023D26 +_0803EE64: .4byte gUnknown_2023D10 +_0803EE68: .4byte gUnknown_2023FDE + thumb_func_end sub_0803EE30 + + thumb_func_start sub_0803EE6C +sub_0803EE6C: @ 0x0803EE6C + ldr r3, _0803EEB8 + ldr r1, _0803EEBC + ldr r0, _0803EEC0 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + strb r2, [r3] + ldr r0, _0803EEC4 + movs r1, #0 + strh r1, [r0] + ldr r0, _0803EEC8 + strh r1, [r0] + ldr r1, _0803EECC + movs r0, #0xfd + strb r0, [r1] + movs r0, #7 + strb r0, [r1, #1] + strb r2, [r1, #2] + ldr r2, _0803EED0 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _0803EED4 + ldr r0, _0803EED8 + ldr r0, [r0, #0xc] + str r0, [r1] + ldr r1, _0803EEDC + movs r0, #0xa + strb r0, [r1] + ldr r1, _0803EEE0 + movs r0, #0xc + strb r0, [r1, #1] + bx lr + .align 2, 0 +_0803EEB8: .4byte gUnknown_2023EAF +_0803EEBC: .4byte gUnknown_2023D22 +_0803EEC0: .4byte gUnknown_2023D26 +_0803EEC4: .4byte gUnknown_2022AC8 +_0803EEC8: .4byte gUnknown_2022ACA +_0803EECC: .4byte gUnknown_2022C0C +_0803EED0: .4byte gUnknown_2023D12 +_0803EED4: .4byte gUnknown_2023EB8 +_0803EED8: .4byte gUnknown_828A2E0 +_0803EEDC: .4byte gUnknown_2023D27 +_0803EEE0: .4byte gUnknown_2023D1E + thumb_func_end sub_0803EE6C + + thumb_func_start sub_0803EEE4 +sub_0803EEE4: @ 0x0803EEE4 + push {lr} + bl sub_08041368 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803EF00 + ldr r0, _0803EF04 + ldr r0, [r0] + adds r0, #0x4d + strb r1, [r0] + ldr r1, _0803EF08 + movs r0, #0xc + strb r0, [r1] +_0803EF00: + pop {r0} + bx r0 + .align 2, 0 +_0803EF04: .4byte gUnknown_2024140 +_0803EF08: .4byte gUnknown_2023D27 + thumb_func_end sub_0803EEE4 + + thumb_func_start sub_0803EF0C +sub_0803EF0C: @ 0x0803EF0C + ldr r1, _0803EF2C + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r3, _0803EF30 + ldr r2, _0803EF34 + ldrb r0, [r1] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r3] + ldr r2, _0803EF38 + ldr r0, [r2] + ldr r1, _0803EF3C + ands r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_0803EF2C: .4byte gUnknown_2023D26 +_0803EF30: .4byte gUnknown_2023D27 +_0803EF34: .4byte gUnknown_2023D1E +_0803EF38: .4byte gUnknown_2023F24 +_0803EF3C: .4byte 0xF1E892AF + thumb_func_end sub_0803EF0C + + thumb_func_start sub_0803EF40 +sub_0803EF40: @ 0x0803EF40 + push {r4, r5, r6, lr} + ldr r1, _0803EFC8 + ldr r2, _0803EFCC + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + ldr r6, _0803EFD0 + ldr r1, [r6] + adds r0, r0, r1 + adds r0, #0x5c + movs r1, #6 + strb r1, [r0] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r3, _0803EFD4 + ldr r1, _0803EFD8 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r3] + bl sub_0803D2E4 + ldr r2, _0803EFDC + ldr r0, [r2] + ldr r1, _0803EFE0 + ands r0, r1 + str r0, [r2] + ldr r0, _0803EFE4 + movs r1, #0 + strh r1, [r0] + ldr r0, _0803EFE8 + movs r4, #0 + str r4, [r0] + ldr r0, _0803EFEC + strb r1, [r0] + ldr r5, _0803EFF0 + strb r1, [r5, #0x18] + strb r1, [r5, #0x19] + ldr r2, _0803EFF4 + ldr r3, _0803EFF8 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + strh r4, [r0] + ldr r2, _0803EFFC + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + strh r4, [r0] + ldr r0, [r6] + strb r1, [r0, #0x13] + ldr r0, _0803F000 + strh r4, [r0] + strb r1, [r5, #0x14] + ldr r0, _0803F004 + strb r1, [r0, #3] + strb r1, [r0, #4] + strb r1, [r5, #0x16] + ldr r0, _0803F008 + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #0x20 + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803EFC8: .4byte gUnknown_2023D22 +_0803EFCC: .4byte gUnknown_2023D26 +_0803EFD0: .4byte gUnknown_2024140 +_0803EFD4: .4byte gUnknown_2023D27 +_0803EFD8: .4byte gUnknown_2023D1E +_0803EFDC: .4byte gUnknown_2023F24 +_0803EFE0: .4byte 0xF1E892AF +_0803EFE4: .4byte gUnknown_2023E8E +_0803EFE8: .4byte gUnknown_2023E94 +_0803EFEC: .4byte gUnknown_2023F20 +_0803EFF0: .4byte gUnknown_2024118 +_0803EFF4: .4byte gUnknown_2023EF4 +_0803EFF8: .4byte gUnknown_2023EAF +_0803EFFC: .4byte gUnknown_2023EFC +_0803F000: .4byte gUnknown_20240A4 +_0803F004: .4byte gUnknown_2023FD6 +_0803F008: .4byte gUnknown_202414C + thumb_func_end sub_0803EF40 + + thumb_func_start sub_0803F00C +sub_0803F00C: @ 0x0803F00C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #0 + cmp r1, #0xe + bhi _0803F0BA + lsls r0, r1, #2 + ldr r1, _0803F024 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803F024: .4byte _0803F028 +_0803F028: @ jump table + .4byte _0803F064 @ case 0 + .4byte _0803F070 @ case 1 + .4byte _0803F07C @ case 2 + .4byte _0803F098 @ case 3 + .4byte _0803F0A4 @ case 4 + .4byte _0803F098 @ case 5 + .4byte _0803F0A4 @ case 6 + .4byte _0803F088 @ case 7 + .4byte _0803F0A4 @ case 8 + .4byte _0803F0A4 @ case 9 + .4byte _0803F08C @ case 10 + .4byte _0803F0A4 @ case 11 + .4byte _0803F0A8 @ case 12 + .4byte _0803F0AC @ case 13 + .4byte _0803F0B0 @ case 14 +_0803F064: + ldr r0, _0803F06C + ldrb r0, [r0] + b _0803F0BA + .align 2, 0 +_0803F06C: .4byte gUnknown_2023EB0 +_0803F070: + ldr r0, _0803F078 + ldrb r0, [r0] + b _0803F0BA + .align 2, 0 +_0803F078: .4byte gUnknown_2023EAF +_0803F07C: + ldr r0, _0803F084 + ldrb r0, [r0] + b _0803F0BA + .align 2, 0 +_0803F084: .4byte gUnknown_2023EB2 +_0803F088: + movs r0, #0 + b _0803F0BA +_0803F08C: + ldr r0, _0803F094 + ldrb r0, [r0, #0x17] + b _0803F0BA + .align 2, 0 +_0803F094: .4byte gUnknown_2024118 +_0803F098: + ldr r0, _0803F0A0 + ldrb r0, [r0] + b _0803F0BA + .align 2, 0 +_0803F0A0: .4byte gUnknown_2023EB1 +_0803F0A4: + movs r0, #0 + b _0803F0B2 +_0803F0A8: + movs r0, #1 + b _0803F0B2 +_0803F0AC: + movs r0, #2 + b _0803F0B2 +_0803F0B0: + movs r0, #3 +_0803F0B2: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0803F0BA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0803F00C + + thumb_func_start sub_0803F0C0 +sub_0803F0C0: @ 0x0803F0C0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _0803F0F0 + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + mov ip, r1 + cmp r0, #0x2e + bne _0803F172 + movs r3, #0 + adds r0, r5, #0 + muls r0, r4, r0 + adds r1, #0xc + adds r1, r0, r1 + b _0803F0FC + .align 2, 0 +_0803F0F0: .4byte gUnknown_2023D28 +_0803F0F4: + adds r1, #2 + adds r3, #1 + cmp r3, #3 + bgt _0803F102 +_0803F0FC: + ldrh r0, [r1] + cmp r0, r2 + bne _0803F0F4 +_0803F102: + cmp r3, #4 + beq _0803F172 + movs r7, #0x58 + adds r2, r5, #0 + muls r2, r7, r2 + adds r0, r3, r2 + mov r6, ip + adds r6, #0x24 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0 + beq _0803F11E + subs r0, #1 + strb r0, [r1] +_0803F11E: + mov r0, ip + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0803F172 + ldr r1, _0803F17C + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0803F180 + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0803F172 + ldr r4, _0803F184 + strb r5, [r4] + adds r1, r3, #0 + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r4] + muls r0, r7, r0 + adds r0, r0, r6 + adds r0, r0, r3 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_0803F172: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F17C: .4byte gUnknown_2023F60 +_0803F180: .4byte gUnknown_82FACB4 +_0803F184: .4byte gUnknown_2023D08 + thumb_func_end sub_0803F0C0 + + thumb_func_start sub_0803F188 +sub_0803F188: @ 0x0803F188 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #4 + mov r8, r0 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r4, #0 + ldr r0, _0803F2A8 + ldrb r0, [r0] + cmp r4, r0 + bge _0803F230 + ldr r1, _0803F2AC + movs r0, #0x58 + adds r7, r5, #0 + muls r7, r0, r7 + adds r1, #0xc + mov sl, r1 +_0803F1BE: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r4, #1 + cmp sb, r0 + beq _0803F226 + ldr r0, _0803F2AC + movs r3, #0x58 + adds r1, r4, #0 + muls r1, r3, r1 + adds r1, r1, r0 + adds r1, #0x20 + ldrb r1, [r1] + adds r4, r0, #0 + cmp r1, #0x2e + bne _0803F226 + movs r2, #0 + adds r0, r5, #0 + muls r0, r3, r0 + adds r1, r4, #0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x8f + lsls r1, r1, #1 + cmp r0, r1 + beq _0803F20E + adds r3, r1, #0 + mov r0, sl + adds r1, r7, r0 +_0803F200: + adds r1, #2 + adds r2, #1 + cmp r2, #3 + bgt _0803F20E + ldrh r0, [r1] + cmp r0, r3 + bne _0803F200 +_0803F20E: + cmp r2, #4 + beq _0803F226 + mov r8, r2 + adds r1, r2, r7 + adds r0, r4, #0 + adds r0, #0x24 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0803F226 + subs r0, #1 + strb r0, [r1] +_0803F226: + adds r4, r6, #0 + ldr r0, _0803F2A8 + ldrb r0, [r0] + cmp r4, r0 + blt _0803F1BE +_0803F230: + mov r1, r8 + cmp r1, #4 + beq _0803F298 + ldr r6, _0803F2AC + movs r3, #0x58 + adds r0, r5, #0 + muls r0, r3, r0 + adds r1, r6, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0803F298 + ldr r1, _0803F2B0 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0803F2B4 + mov r4, r8 + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0803F298 + ldr r4, _0803F2B8 + strb r5, [r4] + mov r1, r8 + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r4] + muls r0, r3, r0 + adds r2, r6, #0 + adds r2, #0x24 + adds r0, r0, r2 + add r0, r8 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_0803F298: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F2A8: .4byte gUnknown_2023D10 +_0803F2AC: .4byte gUnknown_2023D28 +_0803F2B0: .4byte gUnknown_2023F60 +_0803F2B4: .4byte gUnknown_82FACB4 +_0803F2B8: .4byte gUnknown_2023D08 + thumb_func_end sub_0803F188 + + thumb_func_start sub_0803F2BC +sub_0803F2BC: @ 0x0803F2BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r6, #4 + movs r1, #0 + ldr r0, _0803F3B4 + mov r8, r0 + ldrb r0, [r0] + cmp r1, r0 + bge _0803F33E + ldr r7, _0803F3B8 + movs r2, #0x58 + mov ip, r2 + mov r5, ip + muls r5, r3, r5 + adds r0, r7, #0 + adds r0, #0xc + adds r2, r5, r0 + mov sl, r2 + mov sb, r5 +_0803F2EE: + mov r0, ip + muls r0, r1, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + adds r4, r1, #1 + cmp r0, #0x2e + bne _0803F334 + cmp r1, r3 + beq _0803F334 + movs r2, #0 + mov r1, sl + ldrh r0, [r1] + cmp r0, #0xc3 + beq _0803F31E + ldr r1, _0803F3BC + add r1, sb +_0803F310: + adds r1, #2 + adds r2, #1 + cmp r2, #3 + bgt _0803F31E + ldrh r0, [r1] + cmp r0, #0xc3 + bne _0803F310 +_0803F31E: + cmp r2, #4 + beq _0803F334 + adds r6, r2, #0 + adds r0, r6, r5 + ldr r2, _0803F3C0 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _0803F334 + subs r0, #1 + strb r0, [r1] +_0803F334: + adds r1, r4, #0 + mov r0, r8 + ldrb r0, [r0] + cmp r1, r0 + blt _0803F2EE +_0803F33E: + cmp r6, #4 + beq _0803F3A2 + ldr r7, _0803F3B8 + movs r5, #0x58 + adds r0, r3, #0 + muls r0, r5, r0 + adds r1, r7, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0803F3A2 + ldr r1, _0803F3C4 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0803F3C8 + lsls r0, r6, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0803F3A2 + ldr r4, _0803F3CC + strb r3, [r4] + adds r1, r6, #0 + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r4] + muls r0, r5, r0 + adds r2, r7, #0 + adds r2, #0x24 + adds r0, r0, r2 + adds r0, r0, r6 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_0803F3A2: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F3B4: .4byte gUnknown_2023D10 +_0803F3B8: .4byte gUnknown_2023D28 +_0803F3BC: .4byte gUnknown_2023D34 +_0803F3C0: .4byte gUnknown_2023D4C +_0803F3C4: .4byte gUnknown_2023F60 +_0803F3C8: .4byte gUnknown_82FACB4 +_0803F3CC: .4byte gUnknown_2023D08 + thumb_func_end sub_0803F2BC + + thumb_func_start sub_0803F3D0 +sub_0803F3D0: @ 0x0803F3D0 + push {r4, r5, lr} + ldr r0, _0803F400 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803F410 + movs r2, #0 + ldr r4, _0803F404 + ldrb r0, [r4] + cmp r2, r0 + bge _0803F42E + ldr r3, _0803F408 + ldr r5, _0803F40C +_0803F3EC: + ldm r5!, {r1} + lsls r1, r1, #0x1c + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r2, #1 + ldrb r0, [r4] + cmp r2, r0 + blt _0803F3EC + b _0803F42E + .align 2, 0 +_0803F400: .4byte gUnknown_2022C90 +_0803F404: .4byte gUnknown_2023D10 +_0803F408: .4byte gUnknown_2023D0C +_0803F40C: .4byte gUnknown_82FACB4 +_0803F410: + movs r2, #0 + ldr r4, _0803F434 + ldrb r0, [r4] + cmp r2, r0 + bge _0803F42E + ldr r3, _0803F438 + ldr r5, _0803F43C +_0803F41E: + ldr r0, [r3] + ldm r5!, {r1} + orrs r0, r1 + str r0, [r3] + adds r2, #1 + ldrb r0, [r4] + cmp r2, r0 + blt _0803F41E +_0803F42E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0803F434: .4byte gUnknown_2023D10 +_0803F438: .4byte gUnknown_2023D0C +_0803F43C: .4byte gUnknown_82FACB4 + thumb_func_end sub_0803F3D0 + + thumb_func_start sub_0803F440 +sub_0803F440: @ 0x0803F440 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _0803F468 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803F474 + ldr r2, _0803F46C + ldr r1, _0803F470 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _0803F484 + .align 2, 0 +_0803F468: .4byte gUnknown_2022C90 +_0803F46C: .4byte gUnknown_2023D0C +_0803F470: .4byte gUnknown_82FACB4 +_0803F474: + ldr r2, _0803F488 + ldr r1, _0803F48C + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] +_0803F484: + pop {r0} + bx r0 + .align 2, 0 +_0803F488: .4byte gUnknown_2023D0C +_0803F48C: .4byte gUnknown_82FACB4 + thumb_func_end sub_0803F440 + + thumb_func_start sub_0803F490 +sub_0803F490: @ 0x0803F490 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0 + ldr r5, _0803F4A4 + ldr r1, _0803F4A8 + lsls r0, r7, #2 + adds r6, r0, r1 + b _0803F4BA + .align 2, 0 +_0803F4A4: .4byte gUnknown_2023D0C +_0803F4A8: .4byte gUnknown_82FACB4 +_0803F4AC: + lsls r0, r4, #2 + ldr r1, [r6] + lsls r1, r0 + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + adds r4, #1 +_0803F4BA: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _0803F4AC + ldr r2, _0803F4DC + movs r1, #0x80 + lsls r1, r1, #0x15 + lsls r1, r7 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F4DC: .4byte gUnknown_2023D0C + thumb_func_end sub_0803F490 + + thumb_func_start sub_0803F4E0 +sub_0803F4E0: @ 0x0803F4E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0803F530 + movs r2, #0x58 + adds r3, r0, #0 + muls r3, r2, r3 + adds r1, #0x50 + adds r3, r3, r1 + ldr r1, [r3] + ldr r2, _0803F534 + ands r1, r2 + ldr r2, _0803F538 + ands r1, r2 + movs r2, #0x71 + rsbs r2, r2, #0 + ands r1, r2 + ldr r2, _0803F53C + ands r1, r2 + str r1, [r3] + ldr r1, _0803F540 + lsls r2, r0, #2 + adds r2, r2, r1 + ldr r1, [r2] + ldr r3, _0803F544 + ands r1, r3 + str r1, [r2] + ldr r2, _0803F548 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x11] + movs r0, #0 + strb r0, [r1, #0x10] + bx lr + .align 2, 0 +_0803F530: .4byte gUnknown_2023D28 +_0803F534: .4byte 0xFFFFEFFF +_0803F538: .4byte 0xFFFFF3FF +_0803F53C: .4byte 0xFFFFFCFF +_0803F540: .4byte gUnknown_2023F50 +_0803F544: .4byte 0xFFFBFF3F +_0803F548: .4byte gUnknown_2023F60 + thumb_func_end sub_0803F4E0 + + thumb_func_start sub_0803F54C +sub_0803F54C: @ 0x0803F54C + push {lr} + lsls r0, r0, #0x18 + ldr r1, _0803F598 + lsrs r0, r0, #0x14 + adds r1, r0, r1 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + bne _0803F592 + ldrb r2, [r1, #1] + lsls r0, r2, #0x1e + cmp r0, #0 + blt _0803F592 + lsls r0, r2, #0x1a + cmp r0, #0 + blt _0803F592 + lsls r0, r2, #0x19 + cmp r0, #0 + blt _0803F592 + lsrs r0, r2, #7 + cmp r0, #0 + bne _0803F592 + ldrb r1, [r1, #2] + lsls r0, r1, #0x1f + cmp r0, #0 + bne _0803F592 + lsls r0, r1, #0x1e + cmp r0, #0 + blt _0803F592 + lsls r0, r1, #0x1d + cmp r0, #0 + blt _0803F592 + lsls r0, r2, #0x1f + cmp r0, #0 + beq _0803F59C +_0803F592: + movs r0, #1 + b _0803F59E + .align 2, 0 +_0803F598: .4byte gUnknown_2023FE0 +_0803F59C: + movs r0, #0 +_0803F59E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0803F54C + + thumb_func_start sub_0803F5A4 +sub_0803F5A4: @ 0x0803F5A4 + push {r4, lr} + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _0803F5C4 + strb r1, [r4] + movs r0, #0 + adds r1, r2, #0 + bl sub_08033A7C + ldrb r0, [r4] + bl sub_0803F440 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803F5C4: .4byte gUnknown_2023D08 + thumb_func_end sub_0803F5A4 + + thumb_func_start sub_0803F5C8 +sub_0803F5C8: @ 0x0803F5C8 + push {r4, r5, r6, lr} + movs r3, #0 + ldr r0, _0803F61C + strb r3, [r0] + strb r3, [r0, #1] + movs r1, #0 + ldr r0, _0803F620 + ldrb r2, [r0] + adds r6, r0, #0 + cmp r1, r2 + bge _0803F5F6 + ldr r5, _0803F624 + adds r4, r2, #0 + ldr r2, _0803F628 +_0803F5E4: + ldrh r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + orrs r3, r0 + adds r2, #4 + adds r1, #2 + cmp r1, r4 + blt _0803F5E4 +_0803F5F6: + movs r1, #1 + adds r2, r6, #0 + ldrb r0, [r2] + cmp r1, r0 + bge _0803F616 + ldr r5, _0803F61C + movs r4, #2 +_0803F604: + adds r0, r1, #0 + ands r0, r4 + asrs r0, r0, #1 + adds r0, r0, r5 + strb r3, [r0] + adds r1, #2 + ldrb r0, [r2] + cmp r1, r0 + blt _0803F604 +_0803F616: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0803F61C: .4byte gUnknown_20240A2 +_0803F620: .4byte gUnknown_2023D10 +_0803F624: .4byte gUnknown_82FACB4 +_0803F628: .4byte gUnknown_2023D12 + thumb_func_end sub_0803F5C8 + + thumb_func_start sub_0803F62C +sub_0803F62C: @ 0x0803F62C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803F690 + movs r0, #2 + ands r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + mov ip, r0 + ldr r1, _0803F69C + adds r0, r0, r1 + strb r4, [r0] + adds r5, r4, #0 + ldr r0, _0803F6A0 + ldrb r2, [r0] + mov r8, r1 + cmp r4, r2 + bge _0803F68A + ldr r0, _0803F6A4 + ldrb r7, [r0] + ldr r1, _0803F6A8 + adds r6, r2, #0 + ldr r3, _0803F6AC + adds r2, r1, #0 +_0803F66E: + ldr r0, [r2] + ands r0, r7 + cmp r0, #0 + bne _0803F680 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + orrs r4, r0 +_0803F680: + adds r3, #4 + adds r2, #8 + adds r5, #2 + cmp r5, r6 + blt _0803F66E +_0803F68A: + mov r0, ip + add r0, r8 + strb r4, [r0] +_0803F690: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F69C: .4byte gUnknown_20240A2 +_0803F6A0: .4byte gUnknown_2023D10 +_0803F6A4: .4byte gUnknown_2023EB4 +_0803F6A8: .4byte gUnknown_82FACB4 +_0803F6AC: .4byte gUnknown_2023D12 + thumb_func_end sub_0803F62C + + thumb_func_start sub_0803F6B0 +sub_0803F6B0: @ 0x0803F6B0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0803F6CC + adds r0, r4, #0 + bl sub_0803F62C + b _0803F702 +_0803F6CC: + movs r3, #1 + ldr r5, _0803F708 + ldrb r0, [r5] + cmp r3, r0 + bge _0803F702 + ldr r0, _0803F70C + mov ip, r0 + movs r7, #2 + ldr r6, _0803F710 + ldr r1, _0803F714 + lsls r0, r4, #1 + adds r4, r0, r1 +_0803F6E4: + adds r2, r3, #0 + ands r2, r7 + asrs r2, r2, #1 + add r2, ip + ldrh r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r3, #1 + ldrb r0, [r5] + cmp r3, r0 + blt _0803F6E4 +_0803F702: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F708: .4byte gUnknown_2023D10 +_0803F70C: .4byte gUnknown_20240A2 +_0803F710: .4byte gUnknown_82FACB4 +_0803F714: .4byte gUnknown_2023D12 + thumb_func_end sub_0803F6B0 + + thumb_func_start sub_0803F718 +sub_0803F718: @ 0x0803F718 + push {r4, lr} + ldr r1, _0803F738 + ldr r1, [r1] + ldr r3, [r1, #8] + adds r4, r3, #0 + adds r4, #0x20 + ldrb r1, [r4] + adds r2, r1, #1 + strb r2, [r4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x16 + adds r3, r3, r1 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0803F738: .4byte gUnknown_202414C + thumb_func_end sub_0803F718 + + thumb_func_start sub_0803F73C +sub_0803F73C: @ 0x0803F73C + ldr r0, _0803F75C + ldr r0, [r0] + ldr r2, [r0, #8] + adds r3, r2, #0 + adds r3, #0x20 + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r2, r2, r0 + ldr r0, _0803F760 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_0803F75C: .4byte gUnknown_202414C +_0803F760: .4byte gUnknown_2023EB8 + thumb_func_end sub_0803F73C + + thumb_func_start sub_0803F764 +sub_0803F764: @ 0x0803F764 + ldr r3, _0803F784 + ldr r0, _0803F788 + ldr r0, [r0] + ldr r1, [r0, #8] + adds r2, r1, #0 + adds r2, #0x20 + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3] + bx lr + .align 2, 0 +_0803F784: .4byte gUnknown_2023EB8 +_0803F788: .4byte gUnknown_202414C + thumb_func_end sub_0803F764 + + thumb_func_start sub_0803F78C +sub_0803F78C: @ 0x0803F78C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + ldr r2, _0803F80C + ldr r1, _0803F810 + ldr r3, _0803F814 + ldrb r4, [r3] + lsls r0, r4, #9 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #0x58 + muls r1, r4, r1 + adds r0, r0, r1 + adds r2, #0xc + adds r0, r0, r2 + ldrh r5, [r0] + ldr r1, _0803F818 + lsls r0, r4, #1 + adds r0, #0xc8 + ldr r1, [r1] + adds r1, r1, r0 + mov r8, r1 + ldr r1, _0803F81C + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #4] + adds r7, r3, #0 + adds r3, r1, #0 + cmp r0, r5 + bne _0803F846 + cmp r5, #0 + beq _0803F846 + ldr r0, _0803F820 + strb r4, [r0, #0x17] + ldr r0, _0803F824 + strh r5, [r0] + ldr r0, _0803F828 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803F838 + ldr r1, _0803F82C + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F830 + str r1, [r0] + ldr r0, _0803F834 + ldrb r1, [r7] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803F846 + .align 2, 0 +_0803F80C: .4byte gUnknown_2023D28 +_0803F810: .4byte gUnknown_2023508 +_0803F814: .4byte gUnknown_2023D08 +_0803F818: .4byte gUnknown_2024140 +_0803F81C: .4byte gUnknown_2023F60 +_0803F820: .4byte gUnknown_2024118 +_0803F824: .4byte gUnknown_2023E8E +_0803F828: .4byte gUnknown_2022C90 +_0803F82C: .4byte gUnknown_2023ED4 +_0803F830: .4byte gUnknown_82893B2 +_0803F834: .4byte gUnknown_2023FE0 +_0803F838: + ldr r0, _0803F89C + ldrb r1, [r7] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0803F8A0 + str r0, [r1] + movs r6, #1 +_0803F846: + ldr r1, _0803F8A4 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + bne _0803F8D0 + cmp r5, #0xa5 + beq _0803F8D0 + ldr r1, _0803F8A8 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bge _0803F8D0 + adds r0, r2, #0 + bl sub_0803F4E0 + ldr r0, _0803F8AC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803F8BC + ldr r1, _0803F8B0 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F8B4 + str r1, [r0] + ldr r0, _0803F8B8 + ldrb r1, [r7] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803F8CE + .align 2, 0 +_0803F89C: .4byte gUnknown_2023EC4 +_0803F8A0: .4byte gUnknown_82893A7 +_0803F8A4: .4byte gUnknown_2023EEC +_0803F8A8: .4byte gUnknown_2023D28 +_0803F8AC: .4byte gUnknown_2022C90 +_0803F8B0: .4byte gUnknown_2023ED4 +_0803F8B4: .4byte gUnknown_8289620 +_0803F8B8: .4byte gUnknown_2023FE0 +_0803F8BC: + ldr r1, _0803F924 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F928 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803F8CE: + ldr r3, _0803F92C +_0803F8D0: + ldrb r0, [r7] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r1, #0x13] + lsls r0, r0, #0x1c + cmp r0, #0 + beq _0803F95A + ldr r0, _0803F930 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _0803F95A + ldr r0, _0803F934 + strh r5, [r0] + ldr r0, _0803F938 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803F948 + ldr r1, _0803F93C + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F940 + str r1, [r0] + ldr r0, _0803F944 + ldrb r1, [r7] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803F95A + .align 2, 0 +_0803F924: .4byte gUnknown_2023EC4 +_0803F928: .4byte gUnknown_8289611 +_0803F92C: .4byte gUnknown_2023F60 +_0803F930: .4byte gUnknown_82ED220 +_0803F934: .4byte gUnknown_2023E8E +_0803F938: .4byte gUnknown_2022C90 +_0803F93C: .4byte gUnknown_2023ED4 +_0803F940: .4byte gUnknown_8289637 +_0803F944: .4byte gUnknown_2023FE0 +_0803F948: + ldr r1, _0803F99C + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F9A0 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803F95A: + ldr r4, _0803F9A4 + ldrb r0, [r4] + adds r1, r5, #0 + bl sub_0803FD70 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803F9CE + ldr r0, _0803F9A8 + strh r5, [r0] + ldr r0, _0803F9AC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803F9BC + ldr r1, _0803F9B0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F9B4 + str r1, [r0] + ldr r0, _0803F9B8 + ldrb r1, [r4] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803F9CE + .align 2, 0 +_0803F99C: .4byte gUnknown_2023EC4 +_0803F9A0: .4byte gUnknown_8289628 +_0803F9A4: .4byte gUnknown_2023D08 +_0803F9A8: .4byte gUnknown_2023E8E +_0803F9AC: .4byte gUnknown_2022C90 +_0803F9B0: .4byte gUnknown_2023ED4 +_0803F9B4: .4byte gUnknown_828970D +_0803F9B8: .4byte gUnknown_2023FE0 +_0803F9BC: + ldr r1, _0803F9F0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803F9F4 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803F9CE: + ldr r1, _0803F9F8 + ldr r0, _0803F9FC + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0803FA04 + ldr r1, _0803FA00 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #7] + b _0803FA0E + .align 2, 0 +_0803F9F0: .4byte gUnknown_2023EC4 +_0803F9F4: .4byte gUnknown_8289709 +_0803F9F8: .4byte gUnknown_2023D28 +_0803F9FC: .4byte gUnknown_2023D08 +_0803FA00: .4byte gUnknown_20240A8 +_0803FA04: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0803FA0E: + ldr r2, _0803FA68 + ldr r1, _0803FA6C + ldrb r0, [r1] + strb r0, [r2] + ldr r0, _0803FA70 + mov ip, r0 + adds r7, r1, #0 + cmp r4, #0x1d + bne _0803FA98 + mov r0, r8 + ldrh r1, [r0] + adds r2, r1, #0 + cmp r2, #0 + beq _0803FA98 + ldr r0, _0803FA74 + cmp r2, r0 + beq _0803FA98 + cmp r2, r5 + beq _0803FA98 + ldr r0, _0803FA78 + strh r1, [r0] + ldr r2, _0803FA7C + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + add r0, ip + ldrh r0, [r0, #0x2e] + strh r0, [r2] + ldr r0, _0803FA80 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + ands r1, r0 + ldrb r2, [r7] + cmp r1, #0 + beq _0803FA88 + ldr r0, _0803FA84 + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803FA98 + .align 2, 0 +_0803FA68: .4byte gUnknown_2023EB3 +_0803FA6C: .4byte gUnknown_2023D08 +_0803FA70: .4byte gUnknown_2023D28 +_0803FA74: .4byte 0x0000FFFF +_0803FA78: .4byte gUnknown_2023E8E +_0803FA7C: .4byte gUnknown_2023EAC +_0803FA80: .4byte gUnknown_2022C90 +_0803FA84: .4byte gUnknown_2023FE0 +_0803FA88: + ldr r1, _0803FAD4 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, _0803FAD8 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803FA98: + ldr r0, _0803FADC + ldrb r3, [r7] + lsls r1, r3, #9 + adds r0, #2 + adds r1, r1, r0 + movs r0, #0x58 + muls r0, r3, r0 + ldrb r1, [r1] + adds r0, r0, r1 + mov r1, ip + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0803FAF8 + ldr r0, _0803FAE0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803FAE8 + ldr r0, _0803FAE4 + lsls r1, r3, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + b _0803FAF8 + .align 2, 0 +_0803FAD4: .4byte gUnknown_2023EC4 +_0803FAD8: .4byte gUnknown_8289D9A +_0803FADC: .4byte gUnknown_2023508 +_0803FAE0: .4byte gUnknown_2022C90 +_0803FAE4: .4byte gUnknown_2023FE0 +_0803FAE8: + ldr r1, _0803FB04 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, _0803FB08 + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803FAF8: + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0803FB04: .4byte gUnknown_2023EC4 +_0803FB08: .4byte gUnknown_82895FE + thumb_func_end sub_0803F78C + + thumb_func_start sub_0803FB0C +sub_0803FB0C: @ 0x0803FB0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + ldr r1, _0803FB50 + lsls r0, r7, #1 + adds r0, #0xc8 + ldr r1, [r1] + adds r1, r1, r0 + str r1, [sp, #4] + ldr r1, _0803FB54 + movs r0, #0x58 + muls r0, r7, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0803FB5C + ldr r2, _0803FB58 + lsls r1, r7, #3 + subs r0, r1, r7 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #7] + str r0, [sp] + b _0803FB6E + .align 2, 0 +_0803FB50: .4byte gUnknown_2024140 +_0803FB54: .4byte gUnknown_2023D28 +_0803FB58: .4byte gUnknown_20240A8 +_0803FB5C: + ldrh r0, [r1, #0x2e] + str r3, [sp, #0x14] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r7, #3 + ldr r3, [sp, #0x14] +_0803FB6E: + ldr r0, _0803FCE8 + strb r7, [r0] + movs r0, #0 + mov sb, r0 + lsls r2, r7, #1 + str r2, [sp, #0xc] + ldr r5, _0803FCEC + mov ip, r5 + ldr r0, _0803FCF0 + movs r2, #0x58 + adds r6, r7, #0 + muls r6, r2, r6 + str r6, [sp, #8] + ldr r2, _0803FCF4 + adds r5, r6, r2 + movs r6, #0 + str r6, [sp, #0x10] + mov sl, r0 + subs r0, r1, r7 + lsls r0, r0, #2 + mov r8, r0 + ldr r6, _0803FCF8 +_0803FB9A: + ldrh r0, [r5] + cmp r0, #0 + bne _0803FBB0 + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _0803FBB0 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FBB0: + ldr r0, [sp, #8] + add r0, sb + mov r1, sl + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0803FBD0 + movs r0, #2 + ands r0, r3 + cmp r0, #0 + beq _0803FBD0 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FBD0: + mov r1, r8 + add r1, ip + ldrh r0, [r5] + ldrh r1, [r1, #4] + cmp r0, r1 + bne _0803FBEC + movs r0, #4 + ands r0, r3 + cmp r0, #0 + beq _0803FBEC + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FBEC: + movs r0, #0x58 + adds r2, r7, #0 + muls r2, r0, r2 + ldr r1, [sp, #0x10] + adds r0, r1, r2 + ldr r1, _0803FCF4 + adds r0, r0, r1 + mov ip, r0 + ldr r1, _0803FCFC + ldr r0, [sp, #0xc] + adds r1, r0, r1 + str r1, [sp, #0x18] + mov r1, ip + ldrh r1, [r1] + mov ip, r1 + ldr r0, [sp, #0x18] + ldrh r0, [r0] + cmp ip, r0 + bne _0803FC2E + movs r0, #8 + ands r0, r3 + cmp r0, #0 + beq _0803FC2E + mov r0, sl + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + bge _0803FC2E + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FC2E: + ldr r0, _0803FCEC + add r0, r8 + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x1c + cmp r0, #0 + beq _0803FC5C + movs r0, #0x10 + ands r0, r3 + cmp r0, #0 + beq _0803FC5C + ldr r2, _0803FD00 + ldrh r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0803FC5C + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FC5C: + ldrh r1, [r5] + adds r0, r7, #0 + str r3, [sp, #0x14] + bl sub_0803FD70 + lsls r0, r0, #0x18 + ldr r3, [sp, #0x14] + cmp r0, #0 + beq _0803FC7E + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _0803FC7E + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FC7E: + ldr r1, _0803FCEC + mov r0, r8 + adds r2, r0, r1 + ldrb r0, [r2, #0xe] + lsls r0, r0, #0x1c + mov ip, r1 + cmp r0, #0 + beq _0803FC9E + ldrh r0, [r2, #6] + ldrh r1, [r5] + cmp r0, r1 + beq _0803FC9E + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FC9E: + ldr r2, [sp] + cmp r2, #0x1d + bne _0803FCC0 + ldr r0, [sp, #4] + ldrh r1, [r0] + cmp r1, #0 + beq _0803FCC0 + ldr r0, _0803FD04 + cmp r1, r0 + beq _0803FCC0 + ldrh r2, [r5] + cmp r1, r2 + beq _0803FCC0 + ldr r0, [r6] + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0803FCC0: + adds r6, #4 + adds r5, #2 + ldr r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x10] + movs r1, #1 + add sb, r1 + mov r2, sb + cmp r2, #3 + bgt _0803FCD6 + b _0803FB9A +_0803FCD6: + adds r0, r4, #0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0803FCE8: .4byte gUnknown_2023EB3 +_0803FCEC: .4byte gUnknown_2023F60 +_0803FCF0: .4byte gUnknown_2023D28 +_0803FCF4: .4byte gUnknown_2023D34 +_0803FCF8: .4byte gUnknown_82FACB4 +_0803FCFC: .4byte gUnknown_2023EEC +_0803FD00: .4byte gUnknown_82ED220 +_0803FD04: .4byte 0x0000FFFF + thumb_func_end sub_0803FB0C + + thumb_func_start sub_0803FD08 +sub_0803FD08: @ 0x0803FD08 + push {r4, lr} + ldr r4, _0803FD3C + ldrb r0, [r4] + movs r1, #0 + movs r2, #0xff + bl sub_0803FB0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bne _0803FD4C + ldr r0, _0803FD40 + ldrb r1, [r4] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0803FD44 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0803FD48 + str r1, [r0] + b _0803FD5E + .align 2, 0 +_0803FD3C: .4byte gUnknown_2023D08 +_0803FD40: .4byte gUnknown_2023FE0 +_0803FD44: .4byte gUnknown_2023EC4 +_0803FD48: .4byte gUnknown_82895FA +_0803FD4C: + ldr r0, _0803FD6C + ldrb r1, [r4] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0803FD5E: + movs r0, #0 + cmp r3, #0xf + bne _0803FD66 + movs r0, #1 +_0803FD66: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0803FD6C: .4byte gUnknown_2023FE0 + thumb_func_end sub_0803FD08 + + thumb_func_start sub_0803FD70 +sub_0803FD70: @ 0x0803FD70 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r4, #0 + ldr r0, _0803FE04 + ldrb r0, [r0] + cmp r6, r0 + bge _0803FDF4 + ldr r7, _0803FE08 + mov r8, r7 +_0803FD9A: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r4, #1 + cmp sb, r0 + beq _0803FDEA + ldr r1, _0803FE0C + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + beq _0803FDEA + movs r2, #0 + movs r0, #0x58 + adds r1, r4, #0 + muls r1, r0, r1 + adds r0, r1, r7 + ldrh r0, [r0] + cmp r5, r0 + beq _0803FDE0 + mov r4, r8 + adds r0, r1, r4 +_0803FDD2: + adds r0, #2 + adds r2, #1 + cmp r2, #3 + bgt _0803FDEA + ldrh r1, [r0] + cmp r5, r1 + bne _0803FDD2 +_0803FDE0: + cmp r2, #3 + bgt _0803FDEA + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0803FDEA: + adds r4, r3, #0 + ldr r0, _0803FE04 + ldrb r0, [r0] + cmp r4, r0 + blt _0803FD9A +_0803FDF4: + adds r0, r6, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0803FE04: .4byte gUnknown_2023D10 +_0803FE08: .4byte gUnknown_2023D34 +_0803FE0C: .4byte gUnknown_2023F50 + thumb_func_end sub_0803FD70 + + thumb_func_start sub_0803FE10 +sub_0803FE10: @ 0x0803FE10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sb, r0 + ldr r1, _0803FEB4 + mov r2, sb + strb r2, [r1] + ldr r0, _0803FEB8 + ldrb r4, [r0] + adds r6, r1, #0 + mov sl, r0 + ldr r7, _0803FEBC + ldr r3, _0803FEC0 + mov ip, r3 + cmp sb, r4 + bhs _0803FE64 + ldr r2, _0803FEC4 + ldrb r1, [r2] + ldr r5, _0803FEC8 + ldr r0, [r5] + ands r1, r0 + cmp r1, #0 + beq _0803FE64 + adds r3, r6, #0 +_0803FE46: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r4 + bhs _0803FE64 + ldrb r0, [r2] + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0803FE46 +_0803FE64: + movs r0, #0 + strb r0, [r7] + mov r0, sl + ldrb r4, [r0] + cmp r4, #0 + beq _0803FE9E + ldr r2, _0803FEC4 + ldrb r1, [r2] + ldr r5, _0803FEC8 + ldr r0, [r5] + ands r1, r0 + cmp r1, #0 + beq _0803FE9E + adds r3, r7, #0 +_0803FE80: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r4 + bhs _0803FE9E + ldrb r0, [r2] + ldrb r1, [r7] + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0803FE80 +_0803FE9E: + mov r1, ip + ldr r0, [r1] + ldrb r0, [r0, #3] + cmp r0, #0xa + bls _0803FEAA + b _08040536 +_0803FEAA: + lsls r0, r0, #2 + ldr r1, _0803FECC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803FEB4: .4byte gUnknown_2023EAF +_0803FEB8: .4byte gUnknown_2023D10 +_0803FEBC: .4byte gUnknown_2023EB0 +_0803FEC0: .4byte gUnknown_2024140 +_0803FEC4: .4byte gUnknown_2023EB4 +_0803FEC8: .4byte gUnknown_82FACB4 +_0803FECC: .4byte _0803FED0 +_0803FED0: @ jump table + .4byte _0803FEFC @ case 0 + .4byte _0803FF82 @ case 1 + .4byte _08040048 @ case 2 + .4byte _08040114 @ case 3 + .4byte _080401F0 @ case 4 + .4byte _080402A8 @ case 5 + .4byte _0804035C @ case 6 + .4byte _080403E0 @ case 7 + .4byte _08040450 @ case 8 + .4byte _080404A8 @ case 9 + .4byte _0804052C @ case 10 +_0803FEFC: + movs r5, #0 + ldr r1, _0803FF1C + mov sl, r1 + ldrb r2, [r1] + cmp r5, r2 + bge _0803FF16 + ldr r2, _0803FF20 +_0803FF0A: + adds r0, r5, r2 + strb r5, [r0] + adds r5, #1 + ldrb r3, [r1] + cmp r5, r3 + blt _0803FF0A +_0803FF16: + movs r5, #0 + b _0803FF64 + .align 2, 0 +_0803FF1C: .4byte gUnknown_2023D10 +_0803FF20: .4byte gUnknown_2023D22 +_0803FF24: + adds r4, r5, #1 + adds r6, r4, #0 + ldrb r1, [r1] + cmp r6, r1 + bge _0803FF62 + ldr r7, _08040020 + ldr r0, _08040024 + mov sl, r0 + lsls r1, r5, #0x18 + mov r8, r1 +_0803FF38: + adds r0, r5, r7 + ldrb r0, [r0] + adds r1, r4, r7 + ldrb r1, [r1] + movs r2, #0 + bl sub_0803CB54 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803FF58 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + mov r2, r8 + lsrs r0, r2, #0x18 + bl sub_0803CB20 +_0803FF58: + adds r4, #1 + ldr r0, _08040024 + ldrb r0, [r0] + cmp r4, r0 + blt _0803FF38 +_0803FF62: + adds r5, r6, #0 +_0803FF64: + mov r1, sl + ldrb r0, [r1] + subs r0, #1 + cmp r5, r0 + blt _0803FF24 + ldr r2, _08040028 + ldr r1, [r2] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + ldr r0, [r2] + adds r0, #0xdb + movs r1, #0 + strb r1, [r0] + mov ip, r2 +_0803FF82: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _0803FF90 + b _0804026C +_0803FF90: + ldr r3, _0804002C + mov r8, r3 + movs r7, #0 + ldr r6, _08040030 + ldr r5, _08040034 +_0803FF9A: + ldr r0, [r1] + adds r0, #0xdb + ldrb r4, [r0] + ldr r2, _08040038 + lsls r1, r4, #1 + adds r0, r1, r4 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #1] + strb r0, [r6] + mov r3, r8 + strb r0, [r3] + ldr r0, _0804003C + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803FFFC + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + movs r4, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803FFFC + ldrh r0, [r3] + ldr r2, _08040040 + adds r1, r2, #0 + ands r0, r1 + strh r0, [r3] + ldr r0, _08040044 + bl sub_08044098 + movs r0, #0xfd + strb r0, [r5] + movs r0, #2 + strb r0, [r5, #1] + movs r0, #0x73 + strb r0, [r5, #2] + strb r7, [r5, #3] + ldrb r0, [r5, #4] + orrs r0, r4 + strb r0, [r5, #4] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0803FFFC: + ldr r2, _08040028 + ldr r1, [r2] + adds r1, #0xdb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov ip, r2 + mov r3, sb + cmp r3, #0 + beq _08040012 + b _0804053E +_08040012: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _0803FF9A + b _0804026C + .align 2, 0 +_08040020: .4byte gUnknown_2023D22 +_08040024: .4byte gUnknown_2023D10 +_08040028: .4byte gUnknown_2024140 +_0804002C: .4byte gUnknown_2023D08 +_08040030: .4byte gUnknown_2023EAF +_08040034: .4byte gUnknown_2022C0C +_08040038: .4byte gUnknown_2023F38 +_0804003C: .4byte gUnknown_2023F32 +_08040040: .4byte 0x0000FFFE +_08040044: .4byte gUnknown_8289282 +_08040048: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _08040056 + b _080401B0 +_08040056: + movs r0, #2 + mov sl, r0 + movs r2, #0 + mov r8, r2 + ldr r7, _080400F0 + ldr r5, _080400F4 +_08040062: + ldr r0, [r1] + adds r0, #0xdb + ldrb r4, [r0] + ldr r2, _080400F8 + lsls r1, r4, #1 + adds r0, r1, r4 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #3] + strb r0, [r7] + ldr r3, _080400FC + strb r0, [r3] + ldr r0, _08040100 + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080400CA + ldrb r0, [r2, #2] + subs r0, #1 + strb r0, [r2, #2] + movs r6, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080400CA + ldrh r0, [r3] + ldr r2, _08040104 + adds r1, r2, #0 + ands r0, r1 + strh r0, [r3] + ldr r0, _08040108 + bl sub_08044098 + ldr r0, _0804010C + strb r4, [r0, #5] + movs r0, #0xfd + strb r0, [r5] + mov r3, sl + strb r3, [r5, #1] + movs r0, #0x71 + strb r0, [r5, #2] + mov r0, r8 + strb r0, [r5, #3] + ldrb r0, [r5, #4] + orrs r0, r6 + strb r0, [r5, #4] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080400CA: + ldr r2, _08040110 + ldr r1, [r2] + adds r1, #0xdb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov ip, r2 + mov r1, sb + cmp r1, #0 + beq _080400E0 + b _0804053E +_080400E0: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _08040062 + b _080401B0 + .align 2, 0 +_080400F0: .4byte gUnknown_2023EAF +_080400F4: .4byte gUnknown_2022C0C +_080400F8: .4byte gUnknown_2023F38 +_080400FC: .4byte gUnknown_2023D08 +_08040100: .4byte gUnknown_2023F32 +_08040104: .4byte 0x0000FFFD +_08040108: .4byte gUnknown_8289282 +_0804010C: .4byte gUnknown_2023FD6 +_08040110: .4byte gUnknown_2024140 +_08040114: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bhi _080401B0 + ldr r0, _080401CC + mov sl, r0 + movs r2, #0 + mov r8, r2 + ldr r7, _080401D0 + ldr r5, _080401D4 +_0804012C: + ldr r0, [r1] + adds r0, #0xdb + ldrb r4, [r0] + ldr r1, _080401D8 + lsls r3, r4, #1 + adds r0, r3, r4 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #5] + strb r0, [r7] + mov r2, sl + strb r0, [r2] + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0804018E + subs r0, #1 + strb r0, [r1, #4] + movs r6, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804018E + ldr r2, _080401DC + adds r2, r3, r2 + ldrh r0, [r2] + ldr r3, _080401E0 + adds r1, r3, #0 + ands r0, r1 + strh r0, [r2] + ldr r0, _080401E4 + bl sub_08044098 + ldr r0, _080401E8 + strb r4, [r0, #5] + movs r0, #0xfd + strb r0, [r5] + movs r0, #2 + strb r0, [r5, #1] + movs r0, #0x36 + strb r0, [r5, #2] + mov r0, r8 + strb r0, [r5, #3] + ldrb r0, [r5, #4] + orrs r0, r6 + strb r0, [r5, #4] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0804018E: + ldr r2, _080401EC + ldr r1, [r2] + adds r1, #0xdb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov ip, r2 + mov r1, sb + cmp r1, #0 + beq _080401A4 + b _0804053E +_080401A4: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _0804012C +_080401B0: + mov r2, sb + cmp r2, #0 + beq _080401B8 + b _0804053E +_080401B8: + mov r3, ip + ldr r0, [r3] + ldrb r1, [r0, #3] + adds r1, #1 + strb r1, [r0, #3] + ldr r0, [r3] + adds r0, #0xdb + strb r2, [r0] + b _08040536 + .align 2, 0 +_080401CC: .4byte gUnknown_2023D08 +_080401D0: .4byte gUnknown_2023EAF +_080401D4: .4byte gUnknown_2022C0C +_080401D8: .4byte gUnknown_2023F38 +_080401DC: .4byte gUnknown_2023F32 +_080401E0: .4byte 0x0000FEFF +_080401E4: .4byte gUnknown_8289282 +_080401E8: .4byte gUnknown_2023FD6 +_080401EC: .4byte gUnknown_2024140 +_080401F0: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bhi _0804026C + ldr r6, _0804028C + ldr r5, _08040290 +_08040200: + ldr r0, [r1] + adds r0, #0xdb + ldrb r4, [r0] + ldr r2, _08040294 + lsls r1, r4, #1 + adds r0, r1, r4 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #7] + strb r0, [r5] + strb r0, [r6] + ldr r0, _08040298 + adds r3, r1, r0 + ldrh r1, [r3] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0804024A + ldrb r0, [r2, #6] + subs r0, #1 + strb r0, [r2, #6] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804024A + ldrh r0, [r3] + ldr r2, _0804029C + adds r1, r2, #0 + ands r0, r1 + strh r0, [r3] + ldr r0, _080402A0 + bl sub_08044098 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0804024A: + ldr r2, _080402A4 + ldr r1, [r2] + adds r1, #0xdb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov ip, r2 + mov r3, sb + cmp r3, #0 + beq _08040260 + b _0804053E +_08040260: + mov r1, ip + ldr r0, [r1] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + bls _08040200 +_0804026C: + mov r0, sb + cmp r0, #0 + beq _08040274 + b _0804053E +_08040274: + mov r1, ip + ldr r0, [r1] + ldrb r1, [r0, #3] + adds r1, #1 + strb r1, [r0, #3] + mov r2, ip + ldr r0, [r2] + adds r0, #0xdb + mov r3, sb + strb r3, [r0] + b _08040536 + .align 2, 0 +_0804028C: .4byte gUnknown_2023D08 +_08040290: .4byte gUnknown_2023EAF +_08040294: .4byte gUnknown_2023F38 +_08040298: .4byte gUnknown_2023F32 +_0804029C: .4byte 0x0000FFDF +_080402A0: .4byte gUnknown_8289293 +_080402A4: .4byte gUnknown_2024140 +_080402A8: + mov r2, ip + ldr r0, [r2] + adds r0, #0xdb + ldr r1, _0804033C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _08040328 + ldr r4, _08040340 + ldr r5, _08040344 +_080402BC: + ldr r0, [r2] + adds r0, #0xdb + ldrb r0, [r0] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _08040348 + adds r0, #0x20 + ldrb r2, [r4] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _08040304 + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040304 + ldr r1, _0804034C + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08040304 + ldr r0, _08040350 + strb r2, [r0] + ldr r0, _08040354 + bl sub_08044098 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08040304: + ldr r2, _08040358 + ldr r1, [r2] + adds r1, #0xdb + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov ip, r2 + mov r3, sb + cmp r3, #0 + beq _0804031A + b _0804053E +_0804031A: + ldr r0, [r2] + adds r0, #0xdb + ldr r1, _0804033C + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + blo _080402BC +_08040328: + mov r0, sb + cmp r0, #0 + beq _08040330 + b _0804053E +_08040330: + mov r2, ip + ldr r1, [r2] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + b _08040536 + .align 2, 0 +_0804033C: .4byte gUnknown_2023D10 +_08040340: .4byte gUnknown_2023D08 +_08040344: .4byte gUnknown_2023D22 +_08040348: .4byte gUnknown_2024074 +_0804034C: .4byte gUnknown_2023D28 +_08040350: .4byte gUnknown_2023EB0 +_08040354: .4byte gUnknown_828963F +_08040358: .4byte gUnknown_2024140 +_0804035C: + ldr r3, _08040394 + ldrh r2, [r3] + movs r0, #7 + ands r0, r2 + cmp r0, #0 + bne _0804036A + b _08040508 +_0804036A: + movs r0, #4 + ands r0, r2 + cmp r0, #0 + bne _080403B6 + ldr r1, _08040398 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080403A8 + ldr r0, _0804039C + ands r0, r2 + ldr r1, _080403A0 + ands r0, r1 + strh r0, [r3] + ldr r1, _080403A4 + movs r0, #2 + strb r0, [r1, #5] + b _080403D4 + .align 2, 0 +_08040394: .4byte gUnknown_2024070 +_08040398: .4byte gUnknown_2024074 +_0804039C: .4byte 0x0000FFFE +_080403A0: .4byte 0x0000FFFD +_080403A4: .4byte gUnknown_2023FD6 +_080403A8: + movs r0, #2 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080403C2 + b _080403D0 +_080403B6: + movs r0, #2 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080403D0 +_080403C2: + ldr r1, _080403CC + movs r0, #1 + strb r0, [r1, #5] + b _080403D4 + .align 2, 0 +_080403CC: .4byte gUnknown_2023FD6 +_080403D0: + ldr r0, _080403D8 + strb r1, [r0, #5] +_080403D4: + ldr r0, _080403DC + b _080404FA + .align 2, 0 +_080403D8: .4byte gUnknown_2023FD6 +_080403DC: .4byte gUnknown_82891B4 +_080403E0: + ldr r3, _08040414 + ldrh r2, [r3] + movs r0, #0x18 + ands r0, r2 + cmp r0, #0 + bne _080403EE + b _08040508 +_080403EE: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _08040428 + ldr r1, _08040418 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040428 + ldr r0, _0804041C + ands r0, r2 + strh r0, [r3] + ldr r1, _08040420 + ldr r0, _08040424 + b _0804042C + .align 2, 0 +_08040414: .4byte gUnknown_2024070 +_08040418: .4byte gUnknown_2024074 +_0804041C: .4byte 0x0000FFF7 +_08040420: .4byte gUnknown_2023EB8 +_08040424: .4byte gUnknown_8289251 +_08040428: + ldr r1, _08040440 + ldr r0, _08040444 +_0804042C: + str r0, [r1] + adds r3, r1, #0 + ldr r1, _08040448 + movs r2, #0 + movs r0, #0xc + strb r0, [r1, #0x10] + ldr r0, _0804044C + strb r2, [r0, #5] + b _080404F8 + .align 2, 0 +_08040440: .4byte gUnknown_2023EB8 +_08040444: .4byte gUnknown_82891CF +_08040448: .4byte gUnknown_2024118 +_0804044C: .4byte gUnknown_2023FD6 +_08040450: + ldr r3, _08040480 + ldrh r2, [r3] + movs r0, #0x60 + ands r0, r2 + cmp r0, #0 + beq _08040508 + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + bne _08040494 + ldr r1, _08040484 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040494 + ldr r0, _08040488 + ands r0, r2 + strh r0, [r3] + ldr r1, _0804048C + ldr r0, _08040490 + b _08040498 + .align 2, 0 +_08040480: .4byte gUnknown_2024070 +_08040484: .4byte gUnknown_2024074 +_08040488: .4byte 0x0000FFDF +_0804048C: .4byte gUnknown_2023EB8 +_08040490: .4byte gUnknown_8289268 +_08040494: + ldr r1, _080404A0 + ldr r0, _080404A4 +_08040498: + str r0, [r1] + adds r3, r1, #0 + b _080404F8 + .align 2, 0 +_080404A0: .4byte gUnknown_2023EB8 +_080404A4: .4byte gUnknown_828925A +_080404A8: + ldr r3, _080404D0 + ldrh r2, [r3] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08040508 + ldr r1, _080404D4 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080404E4 + ldr r0, _080404D8 + ands r0, r2 + strh r0, [r3] + ldr r1, _080404DC + ldr r0, _080404E0 + b _080404E8 + .align 2, 0 +_080404D0: .4byte gUnknown_2024070 +_080404D4: .4byte gUnknown_2024074 +_080404D8: .4byte 0x0000FF7F +_080404DC: .4byte gUnknown_2023EB8 +_080404E0: .4byte gUnknown_8289251 +_080404E4: + ldr r1, _08040518 + ldr r0, _0804051C +_080404E8: + str r0, [r1] + adds r3, r1, #0 + ldr r1, _08040520 + movs r0, #0xd + strb r0, [r1, #0x10] + ldr r1, _08040524 + movs r0, #1 + strb r0, [r1, #5] +_080404F8: + ldr r0, [r3] +_080404FA: + bl sub_08044098 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08040508: + ldr r2, _08040528 + ldr r1, [r2] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + mov ip, r2 + b _08040536 + .align 2, 0 +_08040518: .4byte gUnknown_2023EB8 +_0804051C: .4byte gUnknown_82891CF +_08040520: .4byte gUnknown_2024118 +_08040524: .4byte gUnknown_2023FD6 +_08040528: .4byte gUnknown_2024140 +_0804052C: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08040536: + mov r3, sb + cmp r3, #0 + bne _0804053E + b _0803FE9E +_0804053E: + ldr r0, _0804055C + ldr r1, [r0] + ldr r0, _08040560 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0804055C: .4byte gUnknown_3005A64 +_08040560: .4byte sub_0803B600 + thumb_func_end sub_0803FE10 + + thumb_func_start sub_08040564 +sub_08040564: @ 0x08040564 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r0, #0 + mov sb, r0 + ldr r2, _08040598 + ldr r0, [r2] + ldr r1, _0804059C + orrs r0, r1 + str r0, [r2] + ldr r5, _080405A0 + ldr r2, [r5] + ldr r0, _080405A4 + ldrb r1, [r2, #1] + adds r7, r5, #0 + mov r8, r0 + ldrb r3, [r0] + cmp r1, r3 + blo _08040594 + bl _08040F78 +_08040594: + bl _08040F6E + .align 2, 0 +_08040598: .4byte gUnknown_2023F24 +_0804059C: .4byte 0x01000020 +_080405A0: .4byte gUnknown_2024140 +_080405A4: .4byte gUnknown_2023D10 + thumb_func_end sub_08040564 + + thumb_func_start sub_080405A8 +sub_080405A8: @ 0x080405A8 + ldr r3, _080405DC + ldr r4, _080405E0 + ldr r1, _080405E4 + ldr r5, [r5] + ldrb r0, [r5, #1] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4] + strb r0, [r3] + ldr r0, _080405E8 + ldrb r1, [r0] + ldr r2, _080405EC + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + adds r6, r3, #0 + cmp r1, #0 + beq _080405F0 + ldrb r0, [r5, #1] + adds r0, #1 + strb r0, [r5, #1] + bl _08040F5C + .align 2, 0 +_080405DC: .4byte gUnknown_2023D08 +_080405E0: .4byte gUnknown_2023EAF +_080405E4: .4byte gUnknown_2023D22 +_080405E8: .4byte gUnknown_2023EB4 +_080405EC: .4byte gUnknown_82FACB4 +_080405F0: + ldrb r0, [r5] + cmp r0, #0x13 + bls _080405FA + bl _08040F52 +_080405FA: + lsls r0, r0, #2 + ldr r1, _08040604 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08040604: .4byte _08040608 +_08040608: @ jump table + .4byte _08040658 @ case 0 + .4byte _080406B8 @ case 1 + .4byte _080406D6 @ case 2 + .4byte _08040706 @ case 3 + .4byte _08040784 @ case 4 + .4byte _080407CC @ case 5 + .4byte _0804084C @ case 6 + .4byte _08040894 @ case 7 + .4byte _080408F8 @ case 8 + .4byte _08040940 @ case 9 + .4byte _08040AA0 @ case 10 + .4byte _08040BBC @ case 11 + .4byte _08040C64 @ case 12 + .4byte _08040D28 @ case 13 + .4byte _08040DDC @ case 14 + .4byte _08040DFC @ case 15 + .4byte _08040E48 @ case 16 + .4byte _08040E78 @ case 17 + .4byte _080406EE @ case 18 + .4byte _08040F44 @ case 19 +_08040658: + ldr r1, _080406A8 + ldrb r3, [r6] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08040670 + bl _08040F1E +_08040670: + ldr r0, _080406AC + movs r1, #0x58 + muls r1, r3, r1 + adds r0, r1, r0 + ldrh r2, [r0, #0x28] + ldrh r5, [r0, #0x2c] + cmp r2, r5 + bne _08040684 + bl _08040F1E +_08040684: + cmp r2, #0 + bne _0804068C + bl _08040F1E +_0804068C: + ldr r1, _080406B0 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #4 + str r0, [r1] + cmp r0, #0 + bne _0804069C + movs r0, #1 + str r0, [r1] +_0804069C: + ldr r0, [r1] + rsbs r0, r0, #0 + str r0, [r1] + ldr r0, _080406B4 + bl _08040F10 + .align 2, 0 +_080406A8: .4byte gUnknown_2023F50 +_080406AC: .4byte gUnknown_2023D28 +_080406B0: .4byte gUnknown_2023E94 +_080406B4: .4byte gUnknown_8289676 +_080406B8: + ldrb r1, [r6] + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080406D2 + bl _08040F1E +_080406D2: + bl _08040F14 +_080406D6: + ldrb r1, [r6] + movs r0, #1 + movs r2, #0 + bl sub_0804411C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080406EA + bl _08040F1E +_080406EA: + bl _08040F14 +_080406EE: + ldrb r1, [r6] + movs r0, #1 + movs r2, #1 + bl sub_0804411C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040702 + bl _08040F1E +_08040702: + bl _08040F14 +_08040706: + ldr r0, _0804076C + ldrb r2, [r6] + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0804071C + bl _08040F1E +_0804071C: + ldr r3, _08040770 + movs r5, #3 + ands r5, r1 + movs r1, #0x58 + adds r0, r5, #0 + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08040734 + bl _08040F1E +_08040734: + adds r0, r2, #0 + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08040744 + bl _08040F1E +_08040744: + ldr r0, _08040774 + strb r5, [r0] + ldr r2, _08040778 + ldrb r0, [r6] + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #3 + str r0, [r2] + cmp r0, #0 + bne _0804075E + movs r0, #1 + str r0, [r2] +_0804075E: + ldr r1, _0804077C + strb r5, [r1, #0x10] + ldrb r0, [r4] + strb r0, [r1, #0x11] + ldr r0, _08040780 + b _08040F10 + .align 2, 0 +_0804076C: .4byte gUnknown_2023F50 +_08040770: .4byte gUnknown_2023D28 +_08040774: .4byte gUnknown_2023EB0 +_08040778: .4byte gUnknown_2023E94 +_0804077C: .4byte gUnknown_2024118 +_08040780: .4byte gUnknown_828929D +_08040784: + ldr r2, _080407C0 + ldrb r1, [r6] + movs r0, #0x58 + adds r3, r1, #0 + muls r3, r0, r3 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080407A0 + b _08040F1E +_080407A0: + adds r1, r3, r2 + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _080407AA + b _08040F1E +_080407AA: + ldr r2, _080407C4 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #3 + str r0, [r2] + cmp r0, #0 + bne _080407BA + movs r0, #1 + str r0, [r2] +_080407BA: + ldr r0, _080407C8 + b _08040F10 + .align 2, 0 +_080407C0: .4byte gUnknown_2023D28 +_080407C4: .4byte gUnknown_2023E94 +_080407C8: .4byte gUnknown_82897C5 +_080407CC: + ldr r4, _08040840 + ldrb r0, [r6] + movs r7, #0x58 + mov r8, r7 + mov r2, r8 + muls r2, r0, r2 + adds r3, r4, #0 + adds r3, #0x4c + adds r0, r2, r3 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080407EA + b _08040F1E +_080407EA: + adds r1, r2, r4 + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _080407F4 + b _08040F1E +_080407F4: + ldr r5, _08040844 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #4 + str r0, [r5] + cmp r0, #0 + bne _08040804 + movs r0, #1 + str r0, [r5] +_08040804: + ldrb r0, [r6] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r2, r0, r3 + ldr r1, [r2] + movs r4, #0xf0 + lsls r4, r4, #4 + adds r0, r1, #0 + ands r0, r4 + cmp r0, r4 + beq _08040824 + movs r7, #0x80 + lsls r7, r7, #1 + adds r0, r1, r7 + str r0, [r2] +_08040824: + ldrb r0, [r6] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r3 + ldr r0, [r0] + ands r0, r4 + lsrs r0, r0, #8 + ldr r1, [r5] + muls r0, r1, r0 + str r0, [r5] + ldr r0, _08040848 + b _08040F10 + .align 2, 0 +_08040840: .4byte gUnknown_2023D28 +_08040844: .4byte gUnknown_2023E94 +_08040848: .4byte gUnknown_82897C5 +_0804084C: + ldr r2, _08040888 + ldrb r1, [r6] + movs r0, #0x58 + adds r3, r1, #0 + muls r3, r0, r3 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08040868 + b _08040F1E +_08040868: + adds r1, r3, r2 + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _08040872 + b _08040F1E +_08040872: + ldr r2, _0804088C + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #3 + str r0, [r2] + cmp r0, #0 + bne _08040882 + movs r0, #1 + str r0, [r2] +_08040882: + ldr r0, _08040890 + b _08040F10 + .align 2, 0 +_08040888: .4byte gUnknown_2023D28 +_0804088C: .4byte gUnknown_2023E94 +_08040890: .4byte gUnknown_82897E7 +_08040894: + ldr r4, _080408E0 + ldrb r1, [r6] + movs r0, #0x58 + muls r1, r0, r1 + adds r0, r4, #0 + adds r0, #0x50 + adds r5, r1, r0 + ldr r2, [r5] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r2 + cmp r0, #0 + bne _080408B0 + b _08040F1E +_080408B0: + adds r3, r1, r4 + ldrh r0, [r3, #0x28] + cmp r0, #0 + bne _080408BA + b _08040F1E +_080408BA: + adds r0, r4, #0 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _080408EC + ldr r1, _080408E4 + ldrh r0, [r3, #0x2c] + lsrs r0, r0, #2 + str r0, [r1] + cmp r0, #0 + bne _080408DA + movs r0, #1 + str r0, [r1] +_080408DA: + ldr r0, _080408E8 + b _08040F10 + .align 2, 0 +_080408E0: .4byte gUnknown_2023D28 +_080408E4: .4byte gUnknown_2023E94 +_080408E8: .4byte gUnknown_82898C7 +_080408EC: + ldr r0, _080408F4 + ands r2, r0 + str r2, [r5] + b _08040F1E + .align 2, 0 +_080408F4: .4byte 0xF7FFFFFF +_080408F8: + ldr r2, _08040934 + ldrb r1, [r6] + movs r0, #0x58 + adds r3, r1, #0 + muls r3, r0, r3 + adds r0, r2, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x15 + ands r0, r1 + cmp r0, #0 + bne _08040916 + b _08040F1E +_08040916: + adds r1, r3, r2 + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _08040920 + b _08040F1E +_08040920: + ldr r2, _08040938 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #2 + str r0, [r2] + cmp r0, #0 + bne _08040930 + movs r0, #1 + str r0, [r2] +_08040930: + ldr r0, _0804093C + b _08040F10 + .align 2, 0 +_08040934: .4byte gUnknown_2023D28 +_08040938: .4byte gUnknown_2023E94 +_0804093C: .4byte gUnknown_82898D8 +_08040940: + ldr r3, _080409E0 + mov r8, r3 + ldrb r0, [r6] + movs r3, #0x58 + adds r1, r0, #0 + muls r1, r3, r1 + movs r5, #0x50 + add r5, r8 + mov sl, r5 + adds r4, r1, r5 + ldr r2, [r4] + movs r5, #0xe0 + lsls r5, r5, #8 + adds r0, r2, #0 + ands r0, r5 + cmp r0, #0 + bne _08040964 + b _08040F1E +_08040964: + mov r7, r8 + adds r0, r1, r7 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08040970 + b _08040F1E +_08040970: + ldr r1, _080409E4 + adds r0, r2, r1 + str r0, [r4] + ldrb r4, [r6] + adds r0, r4, #0 + muls r0, r3, r0 + add r0, sl + ldr r0, [r0] + ands r0, r5 + cmp r0, #0 + beq _08040A00 + ldr r1, _080409E8 + ldr r0, _080409EC + ldr r2, [r0] + lsls r0, r4, #1 + adds r0, r0, r2 + ldrb r0, [r0, #4] + strb r0, [r1, #0x10] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0, #5] + strb r0, [r1, #0x11] + ldr r1, _080409F0 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0, #4] + strb r0, [r1, #2] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0, #5] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _080409F4 + ldr r0, _080409F8 + str r0, [r1] + ldr r2, _080409FC + ldrb r0, [r6] + muls r0, r3, r0 + add r0, r8 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #4 + str r0, [r2] + cmp r0, #0 + bne _08040A2C + movs r0, #1 + str r0, [r2] + b _08040A2C + .align 2, 0 +_080409E0: .4byte gUnknown_2023D28 +_080409E4: .4byte 0xFFFFE000 +_080409E8: .4byte gUnknown_2024118 +_080409EC: .4byte gUnknown_2024140 +_080409F0: .4byte gUnknown_2022C0C +_080409F4: .4byte gUnknown_2023EB8 +_080409F8: .4byte gUnknown_8289896 +_080409FC: .4byte gUnknown_2023E94 +_08040A00: + ldr r2, _08040A30 + movs r0, #0xfd + strb r0, [r2] + movs r0, #2 + strb r0, [r2, #1] + ldrb r1, [r6] + ldr r0, _08040A34 + ldr r3, [r0] + lsls r1, r1, #1 + adds r1, r1, r3 + ldrb r0, [r1, #4] + strb r0, [r2, #2] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrb r0, [r0, #5] + strb r0, [r2, #3] + movs r0, #0xff + strb r0, [r2, #4] + ldr r1, _08040A38 + ldr r0, _08040A3C + str r0, [r1] +_08040A2C: + ldr r0, [r1] + b _08040F10 + .align 2, 0 +_08040A30: .4byte gUnknown_2022C0C +_08040A34: .4byte gUnknown_2024140 +_08040A38: .4byte gUnknown_2023EB8 +_08040A3C: .4byte gUnknown_82898A8 +_08040A40: + movs r0, #8 + rsbs r0, r0, #0 + ands r3, r0 + str r3, [r2] + ldrb r0, [r6] + mov r2, r8 + muls r2, r0, r2 + mov r0, sl + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _08040A90 + ands r0, r1 + str r0, [r2] + ldr r1, _08040A94 + movs r0, #1 + strb r0, [r1, #5] + ldr r0, _08040A98 + bl sub_08044098 + ldr r4, _08040A9C + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r4] + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + add r0, sb + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + b _08040B08 + .align 2, 0 +_08040A90: .4byte 0xF7FFFFFF +_08040A94: .4byte gUnknown_2023FD6 +_08040A98: .4byte gUnknown_82897BC +_08040A9C: .4byte gUnknown_2023D08 +_08040AA0: + ldr r2, _08040B1C + ldrb r1, [r6] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r2, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x70 + ands r1, r0 + adds r7, r2, #0 + cmp r1, #0 + beq _08040BAA + movs r0, #0 + strb r0, [r4] + mov r5, r8 + ldrb r0, [r5] + cmp r0, #0 + beq _08040B08 + mov sl, r7 + adds r6, r4, #0 + movs r1, #0x58 + mov r8, r1 + movs r3, #0x4c + adds r3, r3, r7 + mov sb, r3 + str r0, [sp, #4] + movs r5, #7 + mov ip, r5 +_08040ADA: + ldrb r4, [r6] + mov r1, r8 + muls r1, r4, r1 + mov r0, sb + adds r2, r1, r0 + ldr r3, [r2] + adds r0, r3, #0 + mov r5, ip + ands r0, r5 + cmp r0, #0 + beq _08040AFA + adds r0, r1, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x2b + bne _08040A40 +_08040AFA: + adds r0, r4, #1 + strb r0, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [sp, #4] + cmp r0, r1 + blo _08040ADA +_08040B08: + ldr r2, _08040B20 + ldr r1, _08040B24 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _08040B28 + movs r3, #2 + mov sb, r3 + b _08040F58 + .align 2, 0 +_08040B1C: .4byte gUnknown_2023D28 +_08040B20: .4byte gUnknown_2023EAF +_08040B24: .4byte gUnknown_2023D10 +_08040B28: + ldr r5, _08040B60 + ldrb r0, [r5] + strb r0, [r2] + ldr r2, _08040B64 + ldrb r0, [r5] + movs r7, #0x58 + adds r1, r0, #0 + muls r1, r7, r1 + adds r6, r2, #0 + adds r6, #0x50 + adds r1, r1, r6 + ldr r0, [r1] + subs r0, #0x10 + str r0, [r1] + ldrb r0, [r5] + bl sub_0803F54C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08040B6C + ldrb r0, [r5] + bl sub_0803F4E0 + ldr r1, _08040B68 + movs r0, #1 + strb r0, [r1, #5] + b _08040BA0 + .align 2, 0 +_08040B60: .4byte gUnknown_2023D08 +_08040B64: .4byte gUnknown_2023D28 +_08040B68: .4byte gUnknown_2023FD6 +_08040B6C: + ldrb r3, [r5] + adds r0, r3, #0 + muls r0, r7, r0 + adds r2, r0, r6 + ldr r0, [r2] + movs r1, #0x70 + ands r0, r1 + cmp r0, #0 + beq _08040B94 + ldr r0, _08040B90 + strb r4, [r0, #5] + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r2] + b _08040BA0 + .align 2, 0 +_08040B90: .4byte gUnknown_2023FD6 +_08040B94: + ldr r1, _08040BB4 + movs r0, #1 + strb r0, [r1, #5] + adds r0, r3, #0 + bl sub_0803F4E0 +_08040BA0: + ldr r0, _08040BB8 + bl sub_08044098 + movs r5, #1 + mov sb, r5 +_08040BAA: + mov r7, sb + cmp r7, #2 + bne _08040BB2 + b _08040F52 +_08040BB2: + b _08040F1E + .align 2, 0 +_08040BB4: .4byte gUnknown_2023FD6 +_08040BB8: .4byte gUnknown_828982E +_08040BBC: + ldr r1, _08040BF4 + ldrb r0, [r6] + movs r7, #0x58 + muls r0, r7, r0 + adds r5, r1, #0 + adds r5, #0x50 + adds r2, r0, r5 + ldr r1, [r2] + movs r4, #0xc0 + lsls r4, r4, #4 + adds r0, r1, #0 + ands r0, r4 + cmp r0, #0 + bne _08040BDA + b _08040F1E +_08040BDA: + ldr r3, _08040BF8 + adds r0, r1, r3 + str r0, [r2] + ldrb r0, [r6] + bl sub_0803F54C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08040BFC + ldrb r0, [r6] + bl sub_0803F4E0 + b _08040F1E + .align 2, 0 +_08040BF4: .4byte gUnknown_2023D28 +_08040BF8: .4byte 0xFFFFFC00 +_08040BFC: + ldrb r0, [r6] + muls r0, r7, r0 + adds r2, r0, r5 + ldr r1, [r2] + adds r0, r1, #0 + ands r0, r4 + cmp r0, #0 + beq _08040C0E + b _08040F1E +_08040C0E: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + bne _08040C1A + b _08040F1E +_08040C1A: + ldr r0, _08040C58 + ands r1, r0 + str r1, [r2] + ldrb r0, [r6] + muls r0, r7, r0 + adds r0, r0, r5 + ldr r0, [r0] + movs r4, #7 + ands r0, r4 + cmp r0, #0 + beq _08040C32 + b _08040F1E +_08040C32: + ldr r1, _08040C5C + movs r0, #0x47 + strb r0, [r1, #3] + movs r0, #1 + movs r1, #0 + bl sub_080483A0 + ldrb r0, [r6] + muls r0, r7, r0 + adds r0, r0, r5 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + bne _08040C50 + b _08040F14 +_08040C50: + ldr r0, _08040C60 + bl sub_08044098 + b _08040F14 + .align 2, 0 +_08040C58: .4byte 0xFFFFEFFF +_08040C5C: .4byte gUnknown_2023FD6 +_08040C60: .4byte gUnknown_8289837 +_08040C64: + ldr r0, _08040CE4 + ldrb r3, [r6] + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r5, r1, r0 + ldrb r1, [r5, #0xb] + lsls r1, r1, #0x1c + adds r7, r0, #0 + cmp r1, #0 + bne _08040C7C + b _08040F1E +_08040C7C: + movs r4, #0 + ldr r2, _08040CE8 + movs r0, #0x58 + adds r1, r3, #0 + muls r1, r0, r1 + adds r2, #0xc + adds r1, r1, r2 + ldrh r0, [r5, #4] + ldrh r1, [r1] + cmp r0, r1 + beq _08040CBA + mov ip, r7 + mov r8, r2 + adds r5, r6, #0 + movs r3, #0x58 +_08040C9A: + adds r4, #1 + cmp r4, #3 + bgt _08040CBA + ldrb r2, [r5] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + add r1, ip + lsls r0, r4, #1 + muls r2, r3, r2 + adds r0, r0, r2 + add r0, r8 + ldrh r1, [r1, #4] + ldrh r0, [r0] + cmp r1, r0 + bne _08040C9A +_08040CBA: + cmp r4, #4 + bne _08040CEC + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #0 + strh r1, [r0, #4] + ldrb r0, [r6] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #0xb] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xb] + b _08040F1E + .align 2, 0 +_08040CE4: .4byte gUnknown_2023F60 +_08040CE8: .4byte gUnknown_2023D28 +_08040CEC: + ldrb r0, [r6] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r7 + ldrb r3, [r2, #0xb] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0xb] + adds r2, r1, #0 + cmp r2, #0 + beq _08040D14 + b _08040F1E +_08040D14: + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #4] + ldr r0, _08040D24 + b _08040F10 + .align 2, 0 +_08040D24: .4byte gUnknown_82893AB +_08040D28: + ldr r3, _08040D74 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r3 + ldrb r5, [r2, #0xe] + lsls r4, r5, #0x1c + cmp r4, #0 + bne _08040D3E + b _08040F1E +_08040D3E: + ldr r7, _08040D78 + mov r8, r7 + ldrb r0, [r2, #0xc] + lsls r0, r0, #1 + movs r7, #0x58 + muls r1, r7, r1 + adds r0, r0, r1 + mov r1, r8 + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r2, #6] + cmp r0, r1 + beq _08040D7C + movs r0, #0 + strh r0, [r2, #6] + ldrb r0, [r6] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r1, #0xe] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xe] + b _08040F1E + .align 2, 0 +_08040D74: .4byte gUnknown_2023F60 +_08040D78: .4byte gUnknown_2023D28 +_08040D7C: + lsrs r1, r4, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r5 + orrs r0, r1 + strb r0, [r2, #0xe] + cmp r1, #0 + beq _08040DB2 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + muls r1, r7, r1 + ldrb r0, [r0, #0xc] + adds r1, r1, r0 + mov r0, r8 + adds r0, #0x24 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _08040DB2 + b _08040F1E +_08040DB2: + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #6] + ldrb r0, [r6] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r1, #0xe] + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #0xe] + ldr r0, _08040DD8 + b _08040F10 + .align 2, 0 +_08040DD8: .4byte gUnknown_82893BF +_08040DDC: + ldr r0, _08040DF8 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x18 + ands r0, r2 + cmp r0, #0 + beq _08040DF4 + adds r0, r2, #0 + subs r0, #8 + str r0, [r1] +_08040DF4: + ldr r1, [r7] + b _08040F22 + .align 2, 0 +_08040DF8: .4byte gUnknown_2023F50 +_08040DFC: + ldr r2, _08040E3C + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r2 + ldrb r2, [r3, #0x12] + lsls r1, r2, #0x1c + cmp r1, #0 + beq _08040E36 + lsrs r1, r1, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x12] + cmp r1, #0 + bne _08040E36 + ldr r0, _08040E40 + ldrb r2, [r6] + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _08040E44 + ands r0, r1 + str r0, [r2] +_08040E36: + ldr r1, [r7] + b _08040F22 + .align 2, 0 +_08040E3C: .4byte gUnknown_2023F60 +_08040E40: .4byte gUnknown_2023F50 +_08040E44: .4byte 0xFFFFFDFF +_08040E48: + ldr r2, _08040E74 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r2 + ldrb r2, [r3, #0x13] + lsls r1, r2, #0x1c + cmp r1, #0 + beq _08040E6E + lsrs r1, r1, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x13] +_08040E6E: + ldr r1, [r7] + b _08040F22 + .align 2, 0 +_08040E74: .4byte gUnknown_2023F60 +_08040E78: + ldr r4, _08040F2C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r2, r0, r4 + ldr r1, [r2] + movs r3, #0xc0 + lsls r3, r3, #5 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08040F1E + ldr r5, _08040F30 + adds r0, r1, r5 + str r0, [r2] + ldrb r2, [r6] + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r0, [r0] + ands r0, r3 + cmp r0, #0 + bne _08040F1E + ldr r3, _08040F34 + movs r5, #0x58 + adds r1, r2, #0 + muls r1, r5, r1 + adds r4, r3, #0 + adds r4, #0x4c + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _08040F1E + adds r0, r1, r3 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x48 + beq _08040F1E + cmp r0, #0xf + beq _08040F1E + adds r0, r2, #0 + bl sub_08050260 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040F1E + ldrb r0, [r6] + bl sub_0803F4E0 + bl sub_0806F050 + ldrb r1, [r6] + adds r2, r1, #0 + muls r2, r5, r2 + adds r2, r2, r4 + movs r1, #3 + ands r1, r0 + adds r1, #2 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r6] + bl sub_0803F440 + ldr r1, _08040F38 + ldrb r0, [r6] + strb r0, [r1] + ldr r0, _08040F3C +_08040F10: + bl sub_08044098 +_08040F14: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08040F1E: + ldr r0, _08040F40 + ldr r1, [r0] +_08040F22: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08040F52 + .align 2, 0 +_08040F2C: .4byte gUnknown_2023F50 +_08040F30: .4byte 0xFFFFF800 +_08040F34: .4byte gUnknown_2023D28 +_08040F38: .4byte gUnknown_2023EB2 +_08040F3C: .4byte gUnknown_8289900 +_08040F40: .4byte gUnknown_2024140 +_08040F44: + ldr r1, [r7] + movs r0, #0 + strb r0, [r1] + ldr r1, [r7] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] +_08040F52: + mov r7, sb + cmp r7, #0 + beq _08040F5C +_08040F58: + mov r0, sb + b _08040F84 +_08040F5C: + ldr r5, _08040F94 + ldr r2, [r5] + ldr r0, _08040F98 + ldrb r1, [r2, #1] + adds r7, r5, #0 + mov r8, r0 + ldrb r0, [r0] + cmp r1, r0 + bhs _08040F78 +_08040F6E: + ldrb r0, [r2] + cmp r0, #0x13 + bhi _08040F78 + bl sub_080405A8 +_08040F78: + ldr r0, _08040F9C + ldr r1, [r0] + ldr r2, _08040FA0 + ands r1, r2 + str r1, [r0] + movs r0, #0 +_08040F84: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08040F94: .4byte gUnknown_2024140 +_08040F98: .4byte gUnknown_2023D10 +_08040F9C: .4byte gUnknown_2023F24 +_08040FA0: .4byte 0xFEFFFFDF + thumb_func_end sub_080405A8 + + thumb_func_start sub_08040FA4 +sub_08040FA4: @ 0x08040FA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _08040FD8 + ldr r0, [r2] + ldr r1, _08040FDC + orrs r0, r1 + str r0, [r2] + ldr r1, _08040FE0 + ldr r3, [r1] + movs r4, #0xd0 + lsls r4, r4, #1 + adds r0, r3, r4 + ldrb r0, [r0] + mov sl, r2 + adds r6, r1, #0 + cmp r0, #1 + bne _08040FCE + b _08041188 +_08040FCE: + cmp r0, #1 + bgt _08040FE4 + cmp r0, #0 + beq _08040FEC + b _08041348 + .align 2, 0 +_08040FD8: .4byte gUnknown_2023F24 +_08040FDC: .4byte 0x01000020 +_08040FE0: .4byte gUnknown_2024140 +_08040FE4: + cmp r0, #2 + bne _08040FEA + b _080412DA +_08040FEA: + b _08041348 +_08040FEC: + ldr r2, _08041030 + adds r0, r3, r2 + ldr r1, _08041034 + ldrb r0, [r0] + mov r8, r1 + ldrb r7, [r1] + cmp r0, r7 + blo _08040FFE + b _08041172 +_08040FFE: + ldr r4, _08041038 + ldr r5, _0804103C + ldr r7, _08041040 + movs r0, #0x18 + adds r0, r0, r7 + mov ip, r0 +_0804100A: + ldr r0, [r6] + adds r3, r0, r2 + ldrb r0, [r3] + strb r0, [r4] + ldr r0, _08041044 + ldrb r1, [r0] + ldr r2, _08041048 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0804104C + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + b _08041160 + .align 2, 0 +_08041030: .4byte 0x000001A1 +_08041034: .4byte gUnknown_2023D10 +_08041038: .4byte gUnknown_2023D08 +_0804103C: .4byte gUnknown_2022C0C +_08041040: .4byte gUnknown_2024074 +_08041044: .4byte gUnknown_2023EB4 +_08041048: .4byte gUnknown_82FACB4 +_0804104C: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldr r1, _08041090 + ldrb r0, [r4] + adds r2, r0, r1 + ldrb r0, [r2] + mov sb, r1 + cmp r0, #0 + bne _08041062 + b _08041160 +_08041062: + subs r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _08041160 + ldr r1, _08041094 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08041160 + lsls r0, r2, #1 + add r0, ip + ldrh r0, [r0] + cmp r0, #0xf8 + bne _0804109C + ldr r0, _08041098 + strb r3, [r0, #5] + b _080410A2 + .align 2, 0 +_08041090: .4byte gUnknown_2024074 +_08041094: .4byte gUnknown_2023D28 +_08041098: .4byte gUnknown_2023FD6 +_0804109C: + ldr r1, _0804113C + movs r0, #1 + strb r0, [r1, #5] +_080410A2: + movs r0, #0xfd + strb r0, [r5] + movs r6, #2 + movs r0, #2 + strb r0, [r5, #1] + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + strb r0, [r5, #2] + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r5, #3] + movs r0, #0xff + strb r0, [r5, #4] + ldr r5, _08041140 + ldrb r0, [r4] + strb r0, [r5] + ldr r1, _08041144 + adds r0, r7, #4 + ldrb r2, [r4] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r2, _08041148 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #8 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r2, _0804114C + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r0, r0, r2 + ldr r1, _08041150 + str r1, [r0] + ldr r0, _08041154 + bl sub_08044098 + ldrb r1, [r4] + adds r0, r1, r7 + ldrb r0, [r0] + cmp r0, #0 + beq _0804110C + b _080412A4 +_0804110C: + eors r1, r6 + mov r3, sb + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _0804111A + b _080412A4 +_0804111A: + ldrb r0, [r5] + bl sub_080A630C + ldr r2, _08041158 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + ldr r4, _0804115C + adds r2, r4, #0 + ands r1, r2 + strh r1, [r0] + b _080412A4 + .align 2, 0 +_0804113C: .4byte gUnknown_2023FD6 +_08041140: .4byte gUnknown_2023EB0 +_08041144: .4byte gUnknown_2023EAF +_08041148: .4byte gUnknown_2023E94 +_0804114C: .4byte gUnknown_2024020 +_08041150: .4byte 0x0000FFFF +_08041154: .4byte gUnknown_828956C +_08041158: .4byte gUnknown_2023F32 +_0804115C: .4byte 0x0000FFBF +_08041160: + ldr r0, [r6] + ldr r2, _080411D8 + adds r0, r0, r2 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bhs _08041172 + b _0804100A +_08041172: + ldr r0, [r6] + movs r2, #0xd0 + lsls r2, r2, #1 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + ldr r0, [r6] + ldr r3, _080411D8 + adds r1, r0, r3 + movs r0, #0 + strb r0, [r1] +_08041188: + adds r3, r6, #0 + ldr r0, [r6] + ldr r2, _080411D8 + adds r0, r0, r2 + ldr r1, _080411DC + ldrb r0, [r0] + mov r8, r1 + ldrb r4, [r1] + cmp r0, r4 + blo _0804119E + b _080412C4 +_0804119E: + ldr r5, _080411E0 + ldr r4, _080411E4 + ldr r7, _080411E8 + mov ip, r7 + ldr r0, _080411EC + mov sb, r0 +_080411AA: + ldr r1, _080411F0 + ldr r0, [r3] + adds r3, r0, r2 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r0, [r0] + mov r1, sb + strb r0, [r1] + strb r0, [r5] + ldr r0, _080411F4 + ldrb r1, [r0] + ldr r2, _080411F8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _080411FC + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + b _080412B0 + .align 2, 0 +_080411D8: .4byte 0x000001A1 +_080411DC: .4byte gUnknown_2023D10 +_080411E0: .4byte gUnknown_2023D08 +_080411E4: .4byte gUnknown_2022C0C +_080411E8: .4byte gUnknown_2023F60 +_080411EC: .4byte gUnknown_2023EAF +_080411F0: .4byte gUnknown_2023D22 +_080411F4: .4byte gUnknown_2023EB4 +_080411F8: .4byte gUnknown_82FACB4 +_080411FC: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldr r7, _08041270 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080412B0 + movs r0, #0xfd + strb r0, [r4] + movs r0, #1 + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #0xf] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r4, #4] + movs r0, #0xff + strb r0, [r4, #5] + ldrb r2, [r5] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + mov r3, ip + adds r4, r0, r3 + ldrb r3, [r4, #0xf] + lsls r1, r3, #0x1c + cmp r1, #0 + bne _08041284 + lsls r2, r2, #2 + adds r2, r2, r7 + ldr r0, [r2] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + ldr r3, _08041274 + ldr r2, _08041278 + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + str r0, [r3] + ldr r1, _0804127C + ldr r0, _08041280 + b _0804129C + .align 2, 0 +_08041270: .4byte gUnknown_2023F50 +_08041274: .4byte gUnknown_2023E94 +_08041278: .4byte gUnknown_2023D28 +_0804127C: .4byte gUnknown_2023EB8 +_08041280: .4byte gUnknown_828948D +_08041284: + lsrs r1, r1, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r7, #0x10 + rsbs r7, r7, #0 + adds r0, r7, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0xf] + ldr r1, _080412A8 + ldr r0, _080412AC +_0804129C: + str r0, [r1] + ldr r0, [r1] + bl sub_08044098 +_080412A4: + movs r0, #1 + b _08041354 + .align 2, 0 +_080412A8: .4byte gUnknown_2023EB8 +_080412AC: .4byte gUnknown_82894A8 +_080412B0: + adds r3, r6, #0 + ldr r0, [r6] + ldr r2, _08041330 + adds r0, r0, r2 + ldrb r0, [r0] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bhs _080412C4 + b _080411AA +_080412C4: + ldr r0, [r6] + movs r2, #0xd0 + lsls r2, r2, #1 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0] + ldr r0, [r6] + ldr r3, _08041330 + adds r1, r0, r3 + movs r0, #0 + strb r0, [r1] +_080412DA: + ldr r0, _08041334 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _08041348 + ldr r0, [r6] + adds r0, #0xda + ldrb r0, [r0] + cmp r0, #2 + bne _08041348 + ldr r1, _08041338 + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08041348 + adds r0, r1, #0 + adds r0, #0x80 + ldrh r0, [r0] + cmp r0, #0 + beq _08041348 + movs r4, #0 +_08041306: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0803F4E0 + adds r4, #1 + cmp r4, #1 + ble _08041306 + ldr r1, _0804133C + ldr r0, _08041340 + str r0, [r1] + bl sub_08044098 + ldr r0, _08041344 + ldr r1, [r0] + movs r4, #0xd0 + lsls r4, r4, #1 + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080412A4 + .align 2, 0 +_08041330: .4byte 0x000001A1 +_08041334: .4byte gUnknown_2022C90 +_08041338: .4byte gUnknown_2023D28 +_0804133C: .4byte gUnknown_2023EB8 +_08041340: .4byte gUnknown_8289E7B +_08041344: .4byte gUnknown_2024140 +_08041348: + mov r7, sl + ldr r0, [r7] + ldr r1, _08041364 + ands r0, r1 + str r0, [r7] + movs r0, #0 +_08041354: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08041364: .4byte 0xFEFFFFDF + thumb_func_end sub_08040FA4 + + thumb_func_start sub_08041368 +sub_08041368: @ 0x08041368 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r0, _08041380 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080413B0 + b _0804164A + .align 2, 0 +_08041380: .4byte gUnknown_2022C90 +_08041384: + ldr r0, _08041394 + bl sub_08044098 + ldr r0, [r5] + adds r0, #0x4d + movs r1, #2 + b _080413A4 + .align 2, 0 +_08041394: .4byte gUnknown_8288D4C +_08041398: + ldr r0, _080413AC + bl sub_08044098 + ldr r0, [r5] + adds r0, #0x4d + movs r1, #5 +_080413A4: + strb r1, [r0] +_080413A6: + movs r0, #1 + b _0804164C + .align 2, 0 +_080413AC: .4byte gUnknown_8288D55 +_080413B0: + ldr r0, _080413CC + mov r8, r0 +_080413B4: + mov r1, r8 + ldr r0, [r1] + adds r0, #0x4d + ldrb r0, [r0] + cmp r0, #7 + bls _080413C2 + b _0804163C +_080413C2: + lsls r0, r0, #2 + ldr r1, _080413D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080413CC: .4byte gUnknown_2024140 +_080413D0: .4byte _080413D4 +_080413D4: @ jump table + .4byte _080413F4 @ case 0 + .4byte _08041446 @ case 1 + .4byte _080414E0 @ case 2 + .4byte _08041522 @ case 3 + .4byte _08041536 @ case 4 + .4byte _080415A0 @ case 5 + .4byte _080415D4 @ case 6 + .4byte _0804163C @ case 7 +_080413F4: + 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, #1 + strb r0, [r1] + movs r5, #0 + ldr r0, _080414C0 + ldrb r0, [r0] + cmp r5, r0 + bge _08041446 + ldr r6, _080414C4 +_08041414: + ldrb r0, [r6] + ldr r2, _080414C8 + lsls r1, r5, #2 + adds r1, r1, r2 + ldr r4, [r1] + ands r0, r4 + cmp r0, #0 + beq _0804143C + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804143C + ldrb r0, [r6] + bics r0, r4 + strb r0, [r6] +_0804143C: + adds r5, #1 + ldr r0, _080414C0 + ldrb r0, [r0] + cmp r5, r0 + blt _08041414 +_08041446: + ldr r0, _080414CC + mov r8, r0 + ldr r1, _080414D0 + mov ip, r1 + ldr r2, _080414D4 + mov r5, r8 + ldr r7, _080414D8 + ldr r6, _080414DC +_08041456: + ldr r3, [r5] + adds r1, r3, #0 + adds r1, #0x4e + ldrb r0, [r1] + strb r0, [r2] + mov r4, ip + strb r0, [r4] + ldrb r4, [r1] + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0804149E + adds r0, r3, #0 + adds r0, #0xdf + ldrb r1, [r0] + ldr r3, _080414C8 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804149E + ldr r0, _080414C4 + ldrb r1, [r0] + lsls r0, r4, #2 + adds r0, r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804149E + b _08041384 +_0804149E: + ldr r0, [r5] + adds r0, #0x4e + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _080414C0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r0] + cmp r1, r0 + bne _08041456 + mov r1, r8 + ldr r0, [r1] + adds r0, #0x4d + movs r1, #3 + strb r1, [r0] + b _0804163C + .align 2, 0 +_080414C0: .4byte gUnknown_2023D10 +_080414C4: .4byte gUnknown_2023EB4 +_080414C8: .4byte gUnknown_82FACB4 +_080414CC: .4byte gUnknown_2024140 +_080414D0: .4byte gUnknown_2023EB1 +_080414D4: .4byte gUnknown_2023EB0 +_080414D8: .4byte gUnknown_2023D28 +_080414DC: .4byte gUnknown_2023D12 +_080414E0: + ldr r0, _0804150C + ldrb r0, [r0] + bl sub_0803F62C + ldr r2, _08041510 + ldr r1, [r2] + adds r1, #0x4e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _08041514 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _08041518 + ldr r0, [r2] + adds r0, #0x4d + movs r1, #3 + strb r1, [r0] + b _0804163A + .align 2, 0 +_0804150C: .4byte gUnknown_2023EB1 +_08041510: .4byte gUnknown_2024140 +_08041514: .4byte gUnknown_2023D10 +_08041518: + ldr r0, [r2] + adds r0, #0x4d + movs r1, #1 + strb r1, [r0] + b _0804163A +_08041522: + 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, #1 + strb r0, [r1] +_08041536: + ldr r0, _08041584 + mov ip, r0 + ldr r7, _08041588 + ldr r5, _0804158C + ldr r2, _08041590 + ldr r6, _08041594 +_08041542: + ldr r0, [r5] + adds r4, r0, #0 + adds r4, #0x4e + ldrb r0, [r4] + strb r0, [r7] + mov r1, ip + strb r0, [r1] + ldrb r3, [r4] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08041570 + ldr r0, _08041598 + ldrb r1, [r0] + lsls r0, r3, #2 + adds r0, r0, r6 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08041570 + b _08041398 +_08041570: + adds r0, r3, #1 + strb r0, [r4] + ldr r1, _0804159C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _08041542 + b _080415B8 + .align 2, 0 +_08041584: .4byte gUnknown_2023EB1 +_08041588: .4byte gUnknown_2023EB0 +_0804158C: .4byte gUnknown_2024140 +_08041590: .4byte gUnknown_2023D28 +_08041594: .4byte gUnknown_82FACB4 +_08041598: .4byte gUnknown_2023EB4 +_0804159C: .4byte gUnknown_2023D10 +_080415A0: + mov r1, r8 + ldr r0, [r1] + adds r0, #0x4e + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _080415C4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r0] + cmp r1, r0 + bne _080415C8 +_080415B8: + mov r4, r8 + ldr r0, [r4] + adds r0, #0x4d + movs r1, #6 + strb r1, [r0] + b _0804163C + .align 2, 0 +_080415C4: .4byte gUnknown_2023D10 +_080415C8: + mov r1, r8 + ldr r0, [r1] + adds r0, #0x4d + movs r1, #4 + strb r1, [r0] + b _0804163C +_080415D4: + movs r0, #0 + str r0, [sp] + movs r0, #9 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080415EE + b _080413A6 +_080415EE: + str r0, [sp] + movs r0, #0xb + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08041604 + b _080413A6 +_08041604: + movs r0, #1 + movs r1, #0 + movs r2, #1 + bl sub_0804411C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08041618 + b _080413A6 +_08041618: + str r0, [sp] + movs r0, #6 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804162E + b _080413A6 +_0804162E: + ldr r2, _08041658 + ldr r1, [r2] + adds r1, #0x4d + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0804163A: + mov r8, r2 +_0804163C: + mov r4, r8 + ldr r0, [r4] + adds r0, #0x4d + ldrb r0, [r0] + cmp r0, #7 + beq _0804164A + b _080413B4 +_0804164A: + movs r0, #0 +_0804164C: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08041658: .4byte gUnknown_2024140 + thumb_func_end sub_08041368 + + thumb_func_start sub_0804165C +sub_0804165C: @ 0x0804165C + push {r4, r5, r6, lr} + movs r3, #0 + ldr r0, _0804169C + adds r5, r0, #0 + ldrb r0, [r5] + cmp r3, r0 + bge _08041694 + ldr r4, _080416A0 + movs r6, #0x80 + lsls r6, r6, #0x10 + ldr r2, _080416A4 +_08041672: + ldr r1, [r2] + adds r0, r1, #0 + ands r0, r6 + cmp r0, #0 + beq _08041688 + ldrh r0, [r4] + cmp r0, #0x63 + beq _08041688 + ldr r0, _080416A8 + ands r1, r0 + str r1, [r2] +_08041688: + adds r4, #2 + adds r2, #0x58 + adds r3, #1 + ldrb r0, [r5] + cmp r3, r0 + blt _08041672 +_08041694: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804169C: .4byte gUnknown_2023D10 +_080416A0: .4byte gUnknown_2023F18 +_080416A4: .4byte gUnknown_2023D78 +_080416A8: .4byte 0xFF7FFFFF + thumb_func_end sub_0804165C + + thumb_func_start sub_080416AC +sub_080416AC: @ 0x080416AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + movs r0, #0 + mov sb, r0 + ldr r1, _080416C8 + mov sl, r1 + ldr r2, _080416CC + mov r8, r2 + b _080416DA + .align 2, 0 +_080416C8: .4byte gUnknown_202411C +_080416CC: .4byte gUnknown_2024140 + thumb_func_end sub_080416AC + + thumb_func_start sub_080416D0 +sub_080416D0: @ 0x080416D0 + mov r3, sb + cmp r3, #0 + beq _080416DA + bl _08041FC8 +_080416DA: + mov r4, r8 + ldr r0, [r4] + ldr r7, _080416F8 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0xe + bls _080416EC + bl _08041FB6 +_080416EC: + lsls r0, r0, #2 + ldr r1, _080416FC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080416F8: .4byte 0x000001A3 +_080416FC: .4byte _08041700 +_08041700: @ jump table + .4byte _0804173C @ case 0 + .4byte _08041788 @ case 1 + .4byte _080418D0 @ case 2 + .4byte _08041990 @ case 3 + .4byte _08041A04 @ case 4 + .4byte _08041A80 @ case 5 + .4byte _08041AF8 @ case 6 + .4byte _08041B78 @ case 7 + .4byte _08041C00 @ case 8 + .4byte _08041C68 @ case 9 + .4byte _08041D54 @ case 10 + .4byte _08041DD4 @ case 11 + .4byte _08041E74 @ case 12 + .4byte _08041F5C @ case 13 + .4byte _08041FB6 @ case 14 +_0804173C: + ldr r1, _08041770 + ldr r3, _08041774 + ldrb r2, [r3] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + ldr r1, _08041778 + ands r0, r1 + str r0, [r2] + ldr r0, _0804177C + ldrb r2, [r3] + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _08041780 + ands r0, r1 + str r0, [r2] + mov r1, r8 + ldr r0, [r1] + ldr r2, _08041784 + adds r1, r0, r2 + bl _08041FB0 + .align 2, 0 +_08041770: .4byte gUnknown_2023D28 +_08041774: .4byte gUnknown_2023EAF +_08041778: .4byte 0xFDFFFFFF +_0804177C: .4byte gUnknown_2023F50 +_08041780: .4byte 0xFFFFBFFF +_08041784: .4byte 0x000001A3 +_08041788: + ldr r7, _080417F0 + ldr r4, _080417F4 + ldrb r1, [r4] + movs r5, #0x58 + adds r0, r1, #0 + muls r0, r5, r0 + adds r6, r7, #0 + adds r6, #0x4c + adds r0, r0, r6 + ldr r0, [r0] + movs r3, #7 + mov r8, r3 + ands r0, r3 + cmp r0, #0 + bne _080417A8 + b _080418AE +_080417A8: + adds r0, r1, #0 + bl sub_08050260 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08041808 + ldrb r0, [r4] + adds r2, r0, #0 + muls r2, r5, r2 + adds r2, r2, r6 + ldr r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + ldrb r0, [r4] + adds r2, r0, #0 + muls r2, r5, r2 + adds r0, r7, #0 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _080417F8 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r1, _080417FC + movs r0, #1 + strb r0, [r1, #5] + ldr r1, _08041800 + ldr r0, _08041804 + str r0, [r1] + movs r4, #2 + mov sb, r4 + b _080418AE + .align 2, 0 +_080417F0: .4byte gUnknown_2023D28 +_080417F4: .4byte gUnknown_2023EAF +_080417F8: .4byte 0xF7FFFFFF +_080417FC: .4byte gUnknown_2023FD6 +_08041800: .4byte gUnknown_2023EB8 +_08041804: .4byte gUnknown_82897A8 +_08041808: + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r5, r1 + adds r0, r1, r7 + adds r0, #0x20 + ldrb r0, [r0] + movs r3, #1 + cmp r0, #0x30 + bne _0804181C + movs r3, #2 +_0804181C: + adds r2, r1, r6 + ldr r1, [r2] + adds r0, r1, #0 + mov r7, r8 + ands r0, r7 + cmp r0, r3 + bhs _08041834 + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + b _08041838 +_08041834: + subs r0, r1, r3 + str r0, [r2] +_08041838: + ldr r2, _08041878 + ldr r0, _0804187C + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r1, r0 + ldr r4, [r0] + movs r0, #7 + ands r4, r0 + cmp r4, #0 + beq _08041890 + ldr r0, _08041880 + ldrh r0, [r0] + cmp r0, #0xad + beq _080418AE + cmp r0, #0xd6 + beq _080418AE + ldr r1, _08041884 + ldr r0, _08041888 + str r0, [r1] + ldr r2, _0804188C + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r0, #2 + mov sb, r0 + b _080418AE + .align 2, 0 +_08041878: .4byte gUnknown_2023D28 +_0804187C: .4byte gUnknown_2023EAF +_08041880: .4byte gUnknown_2023E8E +_08041884: .4byte gUnknown_2023EB8 +_08041888: .4byte gUnknown_828979B +_0804188C: .4byte gUnknown_2023F24 +_08041890: + adds r2, #0x50 + adds r2, r1, r2 + ldr r0, [r2] + ldr r1, _080418B8 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r0, _080418BC + strb r4, [r0, #5] + ldr r1, _080418C0 + ldr r0, _080418C4 + str r0, [r1] + movs r1, #2 + mov sb, r1 +_080418AE: + ldr r1, _080418C8 + ldr r0, [r1] + ldr r3, _080418CC + adds r2, r0, r3 + b _08041DAA + .align 2, 0 +_080418B8: .4byte 0xF7FFFFFF +_080418BC: .4byte gUnknown_2023FD6 +_080418C0: .4byte gUnknown_2023EB8 +_080418C4: .4byte gUnknown_82897A8 +_080418C8: .4byte gUnknown_2024140 +_080418CC: .4byte 0x000001A3 +_080418D0: + ldr r1, _0804192C + ldr r7, _08041930 + ldrb r0, [r7] + movs r6, #0x58 + muls r0, r6, r0 + adds r5, r1, #0 + adds r5, #0x4c + adds r0, r0, r5 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08041970 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _08041948 + ldr r2, _08041934 + ldr r0, _08041938 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x7d + bne _08041916 + b _08041DA2 +_08041916: + ldr r1, _0804193C + ldr r0, _08041940 + str r0, [r1] + ldr r2, _08041944 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + str r0, [r2] + b _08041968 + .align 2, 0 +_0804192C: .4byte gUnknown_2023D28 +_08041930: .4byte gUnknown_2023EAF +_08041934: .4byte gUnknown_82ED220 +_08041938: .4byte gUnknown_2023E8E +_0804193C: .4byte gUnknown_2023EB8 +_08041940: .4byte gUnknown_82897F2 +_08041944: .4byte gUnknown_2023F24 +_08041948: + ldrb r0, [r7] + adds r2, r0, #0 + muls r2, r6, r2 + adds r2, r2, r5 + ldr r0, [r2] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r1, _0804197C + ldr r0, _08041980 + str r0, [r1] + ldr r0, _08041984 + strb r4, [r0, #5] +_08041968: + movs r7, #2 + mov sb, r7 + ldr r0, _08041988 + mov r8, r0 +_08041970: + mov r1, r8 + ldr r0, [r1] + ldr r2, _0804198C + adds r1, r0, r2 + b _08041FB0 + .align 2, 0 +_0804197C: .4byte gUnknown_2023EB8 +_08041980: .4byte gUnknown_82897FF +_08041984: .4byte gUnknown_2023FD6 +_08041988: .4byte gUnknown_2024140 +_0804198C: .4byte 0x000001A3 +_08041990: + ldr r1, _080419E4 + ldr r0, _080419E8 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x36 + beq _080419A6 + b _08041DA2 +_080419A6: + ldr r0, _080419EC + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0x18] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080419BA + b _08041DA2 +_080419BA: + adds r0, r2, #0 + bl sub_0803F4E0 + ldr r2, _080419F0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + ldr r1, _080419F4 + movs r0, #0 + strb r0, [r1, #5] + ldr r1, _080419F8 + ldr r0, _080419FC + str r0, [r1] + ldr r2, _08041A00 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _08041D9E + .align 2, 0 +_080419E4: .4byte gUnknown_2023D28 +_080419E8: .4byte gUnknown_2023EAF +_080419EC: .4byte gUnknown_2023F60 +_080419F0: .4byte gUnknown_2023F24 +_080419F4: .4byte gUnknown_2023FD6 +_080419F8: .4byte gUnknown_2023EB8 +_080419FC: .4byte gUnknown_8289C35 +_08041A00: .4byte gUnknown_2023F20 +_08041A04: + ldr r1, _08041A5C + ldr r3, _08041A60 + ldrb r2, [r3] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08041A50 + ldr r0, _08041A64 + ands r1, r0 + str r1, [r2] + ldr r2, _08041A68 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #0x19] + ldrb r0, [r3] + bl sub_0803F4E0 + ldr r1, _08041A6C + ldr r0, _08041A70 + str r0, [r1] + ldr r2, _08041A74 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r7, #1 + mov sb, r7 +_08041A50: + ldr r1, _08041A78 + ldr r0, [r1] + ldr r3, _08041A7C + adds r2, r0, r3 + b _08041DAA + .align 2, 0 +_08041A5C: .4byte gUnknown_2023D28 +_08041A60: .4byte gUnknown_2023EAF +_08041A64: .4byte 0xFFBFFFFF +_08041A68: .4byte gUnknown_2023F60 +_08041A6C: .4byte gUnknown_2023EB8 +_08041A70: .4byte gUnknown_82879EA +_08041A74: .4byte gUnknown_2023F24 +_08041A78: .4byte gUnknown_2024140 +_08041A7C: .4byte 0x000001A3 +_08041A80: + ldr r1, _08041AD8 + ldr r3, _08041ADC + ldrb r2, [r3] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08041ACC + movs r0, #9 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + ldr r0, _08041AE0 + ldrb r2, [r3] + lsls r2, r2, #4 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #2] + ldrb r0, [r3] + bl sub_0803F4E0 + ldr r1, _08041AE4 + ldr r0, _08041AE8 + str r0, [r1] + ldr r2, _08041AEC + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r4, #1 + mov sb, r4 +_08041ACC: + ldr r1, _08041AF0 + ldr r0, [r1] + ldr r7, _08041AF4 + adds r2, r0, r7 + b _08041DAA + .align 2, 0 +_08041AD8: .4byte gUnknown_2023D28 +_08041ADC: .4byte gUnknown_2023EAF +_08041AE0: .4byte gUnknown_2023FE0 +_08041AE4: .4byte gUnknown_2023EB8 +_08041AE8: .4byte gUnknown_8289823 +_08041AEC: .4byte gUnknown_2023F24 +_08041AF0: .4byte gUnknown_2024140 +_08041AF4: .4byte 0x000001A3 +_08041AF8: + ldr r0, _08041B50 + ldr r3, _08041B54 + ldrb r2, [r3] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08041B58 + ldrh r1, [r1, #4] + ldrh r0, [r0] + cmp r1, r0 + bne _08041B44 + cmp r1, #0 + beq _08041B44 + ldr r0, _08041B5C + lsls r2, r2, #4 + adds r2, r2, r0 + ldrb r0, [r2, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #1] + ldr r1, _08041B60 + ldrb r0, [r3] + strb r0, [r1, #0x17] + ldrb r0, [r3] + bl sub_0803F4E0 + ldr r1, _08041B64 + ldr r0, _08041B68 + str r0, [r1] + ldr r2, _08041B6C + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r0, #1 + mov sb, r0 +_08041B44: + ldr r1, _08041B70 + ldr r0, [r1] + ldr r3, _08041B74 + adds r2, r0, r3 + b _08041DAA + .align 2, 0 +_08041B50: .4byte gUnknown_2023F60 +_08041B54: .4byte gUnknown_2023EAF +_08041B58: .4byte gUnknown_2023E8E +_08041B5C: .4byte gUnknown_2023FE0 +_08041B60: .4byte gUnknown_2024118 +_08041B64: .4byte gUnknown_2023EB8 +_08041B68: .4byte gUnknown_828939C +_08041B6C: .4byte gUnknown_2023F24 +_08041B70: .4byte gUnknown_2024140 +_08041B74: .4byte 0x000001A3 +_08041B78: + ldr r0, _08041BD8 + ldr r4, _08041BDC + ldrb r3, [r4] + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0x13] + lsls r0, r0, #0x1c + cmp r0, #0 + beq _08041BCC + ldr r2, _08041BE0 + ldr r0, _08041BE4 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08041BCC + ldr r0, _08041BE8 + lsls r2, r3, #4 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + ldrb r0, [r4] + bl sub_0803F4E0 + ldr r1, _08041BEC + ldr r0, _08041BF0 + str r0, [r1] + ldr r2, _08041BF4 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r4, #1 + mov sb, r4 +_08041BCC: + ldr r1, _08041BF8 + ldr r0, [r1] + ldr r7, _08041BFC + adds r2, r0, r7 + b _08041DAA + .align 2, 0 +_08041BD8: .4byte gUnknown_2023F60 +_08041BDC: .4byte gUnknown_2023EAF +_08041BE0: .4byte gUnknown_82ED220 +_08041BE4: .4byte gUnknown_2023E8E +_08041BE8: .4byte gUnknown_2023FE0 +_08041BEC: .4byte gUnknown_2023EB8 +_08041BF0: .4byte gUnknown_828962C +_08041BF4: .4byte gUnknown_2023F24 +_08041BF8: .4byte gUnknown_2024140 +_08041BFC: .4byte 0x000001A3 +_08041C00: + ldr r4, _08041C48 + ldrb r0, [r4] + ldr r1, _08041C4C + ldrh r1, [r1] + bl sub_0803FD70 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08041C3E + ldr r0, _08041C50 + ldrb r2, [r4] + lsls r2, r2, #4 + adds r2, r2, r0 + ldrb r0, [r2, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r4] + bl sub_0803F4E0 + ldr r1, _08041C54 + ldr r0, _08041C58 + str r0, [r1] + ldr r2, _08041C5C + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + movs r0, #1 + mov sb, r0 +_08041C3E: + ldr r1, _08041C60 + ldr r0, [r1] + ldr r3, _08041C64 + adds r2, r0, r3 + b _08041DAA + .align 2, 0 +_08041C48: .4byte gUnknown_2023EAF +_08041C4C: .4byte gUnknown_2023E8E +_08041C50: .4byte gUnknown_2023FE0 +_08041C54: .4byte gUnknown_2023EB8 +_08041C58: .4byte gUnknown_82896FE +_08041C5C: .4byte gUnknown_2023F24 +_08041C60: .4byte gUnknown_2024140 +_08041C64: .4byte 0x000001A3 +_08041C68: + ldr r7, _08041CB0 + ldr r5, _08041CB4 + ldrb r0, [r5] + movs r6, #0x58 + muls r0, r6, r0 + adds r4, r7, #0 + adds r4, #0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r3, #7 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08041D3A + subs r0, r1, #1 + str r0, [r2] + ldrb r0, [r5] + muls r0, r6, r0 + adds r0, r0, r4 + ldr r0, [r0] + ands r0, r3 + cmp r0, #0 + beq _08041D28 + bl sub_0806F050 + movs r1, #1 + movs r2, #1 + ands r2, r0 + cmp r2, #0 + beq _08041CBC + ldr r1, _08041CB8 + movs r0, #0 + strb r0, [r1, #5] + bl sub_0803F73C + b _08041D06 + .align 2, 0 +_08041CB0: .4byte gUnknown_2023D28 +_08041CB4: .4byte gUnknown_2023EAF +_08041CB8: .4byte gUnknown_2023FD6 +_08041CBC: + ldr r0, _08041D0C + movs r4, #1 + strb r1, [r0, #5] + ldr r1, _08041D10 + ldrb r0, [r5] + strb r0, [r1] + ldrb r0, [r5] + adds r1, r0, #0 + muls r1, r6, r1 + adds r1, r1, r7 + movs r0, #0x28 + str r0, [sp] + str r2, [sp, #4] + ldrb r0, [r5] + str r0, [sp, #8] + ldrb r0, [r5] + str r0, [sp, #0xc] + adds r0, r1, #0 + movs r2, #1 + movs r3, #0 + bl sub_080690BC + ldr r1, _08041D14 + str r0, [r1] + ldr r0, _08041D18 + ldrb r1, [r5] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + orrs r0, r4 + strb r0, [r1, #1] + ldr r2, _08041D1C + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] +_08041D06: + ldr r1, _08041D20 + ldr r0, _08041D24 + b _08041D30 + .align 2, 0 +_08041D0C: .4byte gUnknown_2023FD6 +_08041D10: .4byte gUnknown_2023EB0 +_08041D14: .4byte gUnknown_2023E94 +_08041D18: .4byte gUnknown_2023FE0 +_08041D1C: .4byte gUnknown_2023F24 +_08041D20: .4byte gUnknown_2023EB8 +_08041D24: .4byte gUnknown_8289845 +_08041D28: + bl sub_0803F73C + ldr r1, _08041D44 + ldr r0, _08041D48 +_08041D30: + str r0, [r1] + movs r4, #1 + mov sb, r4 + ldr r7, _08041D4C + mov r8, r7 +_08041D3A: + mov r1, r8 + ldr r0, [r1] + ldr r2, _08041D50 + adds r1, r0, r2 + b _08041FB0 + .align 2, 0 +_08041D44: .4byte gUnknown_2023EB8 +_08041D48: .4byte gUnknown_8289888 +_08041D4C: .4byte gUnknown_2024140 +_08041D50: .4byte 0x000001A3 +_08041D54: + ldr r1, _08041DB4 + ldr r4, _08041DB8 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08041DA2 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + cmp r1, #0 + bne _08041DA2 + ldr r0, _08041DBC + ldrb r2, [r4] + lsls r2, r2, #4 + adds r2, r2, r0 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08041DC0 + ldr r0, _08041DC4 + str r0, [r1] + ldr r2, _08041DC8 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] +_08041D9E: + movs r3, #1 + mov sb, r3 +_08041DA2: + ldr r1, _08041DCC + ldr r0, [r1] + ldr r4, _08041DD0 + adds r2, r0, r4 +_08041DAA: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + mov r8, r1 + b _08041FB6 + .align 2, 0 +_08041DB4: .4byte gUnknown_2023D28 +_08041DB8: .4byte gUnknown_2023EAF +_08041DBC: .4byte gUnknown_2023FE0 +_08041DC0: .4byte gUnknown_2023EB8 +_08041DC4: .4byte gUnknown_8289813 +_08041DC8: .4byte gUnknown_2023F24 +_08041DCC: .4byte gUnknown_2024140 +_08041DD0: .4byte 0x000001A3 +_08041DD4: + ldr r1, _08041E0C + ldr r4, _08041E10 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r1, r0 + cmp r1, #0 + beq _08041E4E + lsrs r0, r1, #0x10 + bl sub_0806F32C + ldr r1, _08041E14 + strb r0, [r1, #0x17] + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08041E18 + bl sub_0803F73C + b _08041E40 + .align 2, 0 +_08041E0C: .4byte gUnknown_2023D28 +_08041E10: .4byte gUnknown_2023EAF +_08041E14: .4byte gUnknown_2024118 +_08041E18: + ldr r0, _08041E58 + bl sub_0803F718 + ldr r2, _08041E5C + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r2] + ldr r0, _08041E60 + ldrb r2, [r4] + lsls r2, r2, #4 + adds r2, r2, r0 + ldrb r0, [r2, #1] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r4] + bl sub_0803F4E0 +_08041E40: + ldr r1, _08041E64 + ldr r0, _08041E68 + str r0, [r1] + movs r7, #1 + mov sb, r7 + ldr r0, _08041E6C + mov r8, r0 +_08041E4E: + mov r1, r8 + ldr r0, [r1] + ldr r2, _08041E70 + adds r1, r0, r2 + b _08041FB0 + .align 2, 0 +_08041E58: .4byte gUnknown_82898BC +_08041E5C: .4byte gUnknown_2023F24 +_08041E60: .4byte gUnknown_2023FE0 +_08041E64: .4byte gUnknown_2023EB8 +_08041E68: .4byte gUnknown_82898AF +_08041E6C: .4byte gUnknown_2024140 +_08041E70: .4byte 0x000001A3 +_08041E74: + ldr r1, _08041EAC + ldr r6, _08041EB0 + ldrb r0, [r6] + movs r5, #0x58 + muls r0, r5, r0 + adds r1, #0x50 + adds r3, r0, r1 + ldr r2, [r3] + movs r4, #0xc0 + lsls r4, r4, #2 + adds r0, r2, #0 + ands r0, r4 + cmp r0, #0 + beq _08041F46 + ldr r7, _08041EB4 + adds r0, r2, r7 + str r0, [r3] + ldrb r2, [r6] + adds r0, r2, #0 + muls r0, r5, r0 + adds r0, r0, r1 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _08041EC0 + ldr r1, _08041EB8 + ldr r0, _08041EBC + b _08041F40 + .align 2, 0 +_08041EAC: .4byte gUnknown_2023D28 +_08041EB0: .4byte gUnknown_2023EAF +_08041EB4: .4byte 0xFFFFFF00 +_08041EB8: .4byte gUnknown_2023EB8 +_08041EBC: .4byte gUnknown_82892F9 +_08041EC0: + ldr r3, _08041F18 + lsls r0, r2, #2 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, #0 + beq _08041F3C + ldr r1, _08041F1C + movs r0, #0x75 + strh r0, [r1] + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + lsls r0, r0, #1 + mov r1, sl + str r0, [r1] + ldr r4, _08041F20 + ldr r1, _08041F24 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r0, _08041F28 + ldrb r1, [r0] + ldr r2, _08041F2C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08041F0A + movs r0, #0x75 + movs r1, #1 + bl sub_08045520 + strb r0, [r4] +_08041F0A: + ldr r1, _08041F30 + ldr r0, _08041F34 + str r0, [r1] + ldr r2, _08041F38 + mov r8, r2 + b _08041F42 + .align 2, 0 +_08041F18: .4byte gUnknown_2023E9C +_08041F1C: .4byte gUnknown_2023E8E +_08041F20: .4byte gUnknown_2023EB0 +_08041F24: .4byte gUnknown_2023F2C +_08041F28: .4byte gUnknown_2023EB4 +_08041F2C: .4byte gUnknown_82FACB4 +_08041F30: .4byte gUnknown_2023EB8 +_08041F34: .4byte gUnknown_8289304 +_08041F38: .4byte gUnknown_2024140 +_08041F3C: + ldr r1, _08041F50 + ldr r0, _08041F54 +_08041F40: + str r0, [r1] +_08041F42: + movs r3, #1 + mov sb, r3 +_08041F46: + mov r4, r8 + ldr r0, [r4] + ldr r7, _08041F58 + adds r1, r0, r7 + b _08041FB0 + .align 2, 0 +_08041F50: .4byte gUnknown_2023EB8 +_08041F54: .4byte gUnknown_828934C +_08041F58: .4byte 0x000001A3 +_08041F5C: + ldr r1, _08042008 + ldr r0, _0804200C + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x4c + adds r4, r0, r1 + ldr r3, [r4] + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _08041FA8 + ldr r2, _08042010 + ldr r0, _08042014 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x7d + bne _08041FA0 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r3, r0 + str r3, [r4] + bl sub_0803F73C + ldr r1, _08042018 + ldr r0, _0804201C + str r0, [r1] + ldr r1, _08042020 + movs r0, #1 + strb r0, [r1, #5] +_08041FA0: + movs r0, #2 + mov sb, r0 + ldr r1, _08042024 + mov r8, r1 +_08041FA8: + mov r2, r8 + ldr r0, [r2] + ldr r3, _08042028 + adds r1, r0, r3 +_08041FB0: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08041FB6: + mov r4, r8 + ldr r0, [r4] + ldr r7, _08042028 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0xe + beq _08041FC8 + bl sub_080416D0 +_08041FC8: + mov r0, sb + cmp r0, #2 + bne _08041FF4 + ldr r4, _0804202C + ldr r0, _0804200C + ldrb r0, [r0] + strb r0, [r4] + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _08042030 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_08041FF4: + mov r0, sb + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08042008: .4byte gUnknown_2023D28 +_0804200C: .4byte gUnknown_2023EAF +_08042010: .4byte gUnknown_82ED220 +_08042014: .4byte gUnknown_2023E8E +_08042018: .4byte gUnknown_2023EB8 +_0804201C: .4byte gUnknown_82897FF +_08042020: .4byte gUnknown_2023FD6 +_08042024: .4byte gUnknown_2024140 +_08042028: .4byte 0x000001A3 +_0804202C: .4byte gUnknown_2023D08 +_08042030: .4byte gUnknown_2023D74 + thumb_func_end sub_080416D0 + + thumb_func_start sub_08042034 +sub_08042034: @ 0x08042034 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + ldr r0, _08042060 + ldr r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08042064 + movs r0, #0 + b _080422E0 + .align 2, 0 +_08042060: .4byte gUnknown_2022C90 +_08042064: + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _080420DC + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _080420D4 + mov r8, r1 + cmp r0, #0 + bne _08042082 + ldr r2, _080420D8 + mov r8, r2 +_08042082: + movs r0, #2 + ands r0, r4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x19 + lsls r0, r6, #1 + adds r4, r0, r6 + adds r0, r4, #3 + cmp r4, r0 + bge _080420CC + adds r7, r0, #0 +_08042096: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080420C6 + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _080420C6 + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _080420CC +_080420C6: + adds r4, #1 + cmp r4, r7 + blt _08042096 +_080420CC: + movs r1, #0 + lsls r0, r6, #1 + adds r0, r0, r6 + b _08042196 + .align 2, 0 +_080420D4: .4byte gUnknown_20243E8 +_080420D8: .4byte gUnknown_2024190 +_080420DC: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080421AC + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r1, r0 + cmp r1, #0 + beq _08042124 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042110 + ldr r2, _0804210C + mov r8, r2 + adds r0, r4, #0 + bl sub_0806D300 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _08042142 + .align 2, 0 +_0804210C: .4byte gUnknown_2024190 +_08042110: + ldr r0, _08042120 + mov r8, r0 + movs r1, #1 + eors r1, r4 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r6, r0, #0x1f + b _0804214C + .align 2, 0 +_08042120: .4byte gUnknown_20243E8 +_08042124: + adds r0, r4, #0 + bl sub_0806D300 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _080421A4 + mov r8, r1 + cmp r0, #0 + bne _08042142 + ldr r2, _080421A8 + mov r8, r2 +_08042142: + adds r0, r7, #0 + bl sub_0806D2C8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0804214C: + lsls r0, r6, #1 + adds r4, r0, r6 + adds r1, r4, #3 + mov sb, r0 + cmp r4, r1 + bge _08042190 + adds r7, r1, #0 +_0804215A: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804218A + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _0804218A + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _08042190 +_0804218A: + adds r4, #1 + cmp r4, r7 + blt _0804215A +_08042190: + movs r1, #0 + mov r2, sb + adds r0, r2, r6 +_08042196: + adds r0, #3 + cmp r4, r0 + bne _0804219E + movs r1, #1 +_0804219E: + adds r0, r1, #0 + b _080422E0 + .align 2, 0 +_080421A4: .4byte gUnknown_20243E8 +_080421A8: .4byte gUnknown_2024190 +_080421AC: + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0804221A + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0804221A + ldr r0, _080421D8 + mov r8, r0 + movs r6, #3 + cmp r4, #1 + bne _080421D0 + movs r6, #0 +_080421D0: + adds r4, r6, #0 + adds r6, r4, #3 + b _080421DE + .align 2, 0 +_080421D8: .4byte gUnknown_20243E8 +_080421DC: + adds r4, #1 +_080421DE: + cmp r4, r6 + bge _08042212 + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080421DC + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _080421DC + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _080421DC +_08042212: + movs r0, #0 + cmp r4, r6 + bne _080422E0 + b _080422DE +_0804221A: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08042248 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _08042244 + mov r8, r2 + b _08042260 + .align 2, 0 +_08042244: .4byte gUnknown_20243E8 +_08042248: + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080422F0 + mov r8, r0 +_08042260: + mov r1, sl + cmp r1, #6 + bne _08042270 + ldr r1, _080422F4 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrb r0, [r0] + mov sl, r0 +_08042270: + mov r2, sb + cmp r2, #6 + bne _08042280 + ldr r1, _080422F4 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrb r0, [r0] + mov sb, r0 +_08042280: + movs r4, #0 +_08042282: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080422D2 + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _080422D2 + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _080422D2 + cmp r4, sl + beq _080422D2 + cmp r4, sb + beq _080422D2 + ldr r0, _080422F8 + ldr r1, [r0] + adds r0, r7, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r4, r0 + beq _080422D2 + adds r0, r6, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r4, r0 + bne _080422D8 +_080422D2: + adds r4, #1 + cmp r4, #5 + ble _08042282 +_080422D8: + movs r0, #0 + cmp r4, #6 + bne _080422E0 +_080422DE: + movs r0, #1 +_080422E0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080422F0: .4byte gUnknown_2024190 +_080422F4: .4byte gUnknown_2023D12 +_080422F8: .4byte gUnknown_2024140 + thumb_func_end sub_08042034 + + thumb_func_start sub_080422FC +sub_080422FC: @ 0x080422FC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r1, _0804236C + movs r0, #0x58 + muls r0, r6, r0 + adds r4, r0, r1 + ldrh r1, [r4] + ldr r0, _08042370 + cmp r1, r0 + bne _080423A0 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x3b + bne _080423A0 + ldrh r0, [r4, #0x28] + cmp r0, #0 + beq _080423A0 + str r5, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804234E + str r5, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08042374 +_0804234E: + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0 + beq _08042374 + adds r1, r4, #0 + adds r1, #0x22 + ldrb r0, [r1] + cmp r0, #0 + beq _08042374 + strb r5, [r2] + strb r5, [r1] + movs r0, #1 + b _08042458 + .align 2, 0 +_0804236C: .4byte gUnknown_2023D28 +_08042370: .4byte 0x00000181 +_08042374: + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080423A0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080423A4 +_080423A0: + movs r0, #0 + b _08042458 +_080423A4: + ldr r1, _08042460 + ldrh r0, [r1] + movs r2, #0xe7 + ands r2, r0 + adds r4, r1, #0 + cmp r2, #0 + bne _080423D2 + ldr r1, _08042464 + movs r0, #0x58 + muls r0, r6, r0 + adds r1, r0, r1 + adds r3, r1, #0 + adds r3, #0x21 + ldrb r0, [r3] + cmp r0, #0 + beq _080423D2 + adds r1, #0x22 + ldrb r0, [r1] + cmp r0, #0 + beq _080423D2 + strb r2, [r3] + strb r2, [r1] + movs r5, #1 +_080423D2: + ldrh r1, [r4] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _080423FE + ldr r1, _08042464 + movs r0, #0x58 + muls r0, r6, r0 + adds r1, r0, r1 + adds r2, r1, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0xa + beq _080423FE + adds r1, #0x22 + ldrb r0, [r1] + cmp r0, #0xa + beq _080423FE + movs r0, #0xa + strb r0, [r2] + strb r0, [r1] + movs r5, #2 +_080423FE: + ldrh r1, [r4] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _0804242A + ldr r1, _08042464 + movs r0, #0x58 + muls r0, r6, r0 + adds r1, r0, r1 + adds r2, r1, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0xb + beq _0804242A + adds r1, #0x22 + ldrb r0, [r1] + cmp r0, #0xb + beq _0804242A + movs r0, #0xb + strb r0, [r2] + strb r0, [r1] + movs r5, #3 +_0804242A: + ldrh r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08042456 + ldr r1, _08042464 + movs r0, #0x58 + muls r0, r6, r0 + adds r1, r0, r1 + adds r2, r1, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0xf + beq _08042456 + adds r1, #0x22 + ldrb r0, [r1] + cmp r0, #0xf + beq _08042456 + movs r0, #0xf + strb r0, [r2] + strb r0, [r1] + movs r5, #4 +_08042456: + adds r0, r5, #0 +_08042458: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08042460: .4byte gUnknown_2024070 +_08042464: .4byte gUnknown_2023D28 + thumb_func_end sub_080422FC + + thumb_func_start sub_08042468 +sub_08042468: @ 0x08042468 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + ldr r4, [sp, #0x48] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0 + mov sb, r0 + ldr r5, _080424C4 + ldr r1, _080424C8 + ldrb r0, [r5] + ldrb r1, [r1] + cmp r0, r1 + blo _080424A4 + mov r1, sl + strb r1, [r5] +_080424A4: + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080424D4 + ldr r1, _080424CC + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _080424D0 + b _080424E4 + .align 2, 0 +_080424C4: .4byte gUnknown_2023EAF +_080424C8: .4byte gUnknown_2023D10 +_080424CC: .4byte gUnknown_2023D12 +_080424D0: .4byte gUnknown_2024190 +_080424D4: + ldr r1, _08042514 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08042518 +_080424E4: + adds r7, r1, r0 + ldr r5, _0804251C + ldr r1, _08042520 + ldrb r0, [r5] + ldrb r1, [r1] + cmp r0, r1 + blo _080424F6 + mov r2, sl + strb r2, [r5] +_080424F6: + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042528 + ldr r1, _08042514 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08042524 + b _08042538 + .align 2, 0 +_08042514: .4byte gUnknown_2023D12 +_08042518: .4byte gUnknown_20243E8 +_0804251C: .4byte gUnknown_2023EB0 +_08042520: .4byte gUnknown_2023D10 +_08042524: .4byte gUnknown_2024190 +_08042528: + ldr r1, _08042588 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0804258C +_08042538: + adds r5, r1, r0 + adds r0, r7, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x14] + ldr r0, _08042590 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804257A + bl _0804407A +_0804257A: + mov r3, r8 + cmp r3, #0 + beq _08042598 + ldr r0, _08042594 + strb r3, [r0] + adds r7, r0, #0 + b _080425AE + .align 2, 0 +_08042588: .4byte gUnknown_2023D12 +_0804258C: .4byte gUnknown_20243E8 +_08042590: .4byte gUnknown_2022C90 +_08042594: .4byte gUnknown_2023EAE +_08042598: + ldr r2, _080425B8 + ldr r1, _080425BC + movs r0, #0x58 + mov r5, sl + muls r5, r0, r5 + adds r0, r5, #0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r2] + adds r7, r2, #0 +_080425AE: + cmp r4, #0 + beq _080425C0 + adds r5, r4, #0 + b _080425C4 + .align 2, 0 +_080425B8: .4byte gUnknown_2023EAE +_080425BC: .4byte gUnknown_2023D28 +_080425C0: + ldr r0, _080425D8 + ldrh r5, [r0] +_080425C4: + ldr r1, _080425DC + ldr r0, [r1] + ldrb r0, [r0, #0x13] + mov r8, r1 + cmp r0, #0 + beq _080425E0 + movs r3, #0x3f + ands r3, r0 + b _080425EC + .align 2, 0 +_080425D8: .4byte gUnknown_2023E8E +_080425DC: .4byte gUnknown_2024140 +_080425E0: + ldr r1, _08042600 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r3, [r0, #2] +_080425EC: + ldr r0, [sp, #4] + cmp r0, #0x13 + bls _080425F6 + bl _0804405E +_080425F6: + lsls r0, r0, #2 + ldr r1, _08042604 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042600: .4byte gUnknown_82ED220 +_08042604: .4byte _08042608 +_08042608: @ jump table + .4byte _08042658 @ case 0 + .4byte _0804291C @ case 1 + .4byte _08042B38 @ case 2 + .4byte _08042BCC @ case 3 + .4byte _08042DEC @ case 4 + .4byte _08043548 @ case 5 + .4byte _080438AC @ case 6 + .4byte _080438FC @ case 7 + .4byte _08043980 @ case 8 + .4byte _08043A04 @ case 9 + .4byte _08043C24 @ case 10 + .4byte _08043A48 @ case 11 + .4byte _08043C68 @ case 12 + .4byte _08043CC4 @ case 13 + .4byte _08043D20 @ case 14 + .4byte _08043E1C @ case 15 + .4byte _08043E60 @ case 16 + .4byte _08043EBC @ case 17 + .4byte _0804402C @ case 18 + .4byte _08043DD6 @ case 19 +_08042658: + ldr r2, _0804268C + ldr r0, _08042690 + ldrb r1, [r2] + adds r5, r0, #0 + ldrb r3, [r5] + cmp r1, r3 + blo _0804266A + mov r0, sl + strb r0, [r2] +_0804266A: + ldrb r0, [r7] + cmp r0, #0x2d + bne _08042672 + b _080427E8 +_08042672: + cmp r0, #0x2d + bgt _080426A4 + cmp r0, #0xd + bne _0804267C + b _080428E4 +_0804267C: + cmp r0, #0xd + bgt _08042694 + cmp r0, #2 + bne _08042686 + b _080427B8 +_08042686: + bl _0804405E + .align 2, 0 +_0804268C: .4byte gUnknown_2023EAF +_08042690: .4byte gUnknown_2023D10 +_08042694: + cmp r0, #0x16 + bne _0804269A + b _08042848 +_0804269A: + cmp r0, #0x24 + bne _080426A0 + b _080428A8 +_080426A0: + bl _0804405E +_080426A4: + cmp r0, #0x46 + bne _080426AA + b _08042818 +_080426AA: + cmp r0, #0x46 + bgt _080426B8 + cmp r0, #0x3b + bne _080426B4 + b _0804287C +_080426B4: + bl _0804405E +_080426B8: + cmp r0, #0x4d + bne _080426BE + b _080428E4 +_080426BE: + cmp r0, #0xff + beq _080426C6 + bl _0804405E +_080426C6: + ldr r0, _080426EC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _0804278C + bl sub_080ABC08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #3 + cmp r0, #0xa + bhi _0804278C + lsls r0, r0, #2 + ldr r1, _080426F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080426EC: .4byte gUnknown_2022C90 +_080426F0: .4byte _080426F4 +_080426F4: @ jump table + .4byte _08042720 @ case 0 + .4byte _0804278C @ case 1 + .4byte _08042720 @ case 2 + .4byte _0804278C @ case 3 + .4byte _0804278C @ case 4 + .4byte _08042744 @ case 5 + .4byte _0804278C @ case 6 + .4byte _0804278C @ case 7 + .4byte _0804278C @ case 8 + .4byte _08042768 @ case 9 + .4byte _08042720 @ case 10 +_08042720: + ldr r2, _0804273C + ldrh r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0804278C + movs r0, #5 + strh r0, [r2] + ldr r1, _08042740 + movs r0, #0xa + strb r0, [r1, #0x10] + mov r2, sl + strb r2, [r1, #0x17] + b _08042782 + .align 2, 0 +_0804273C: .4byte gUnknown_2024070 +_08042740: .4byte gUnknown_2024118 +_08042744: + ldr r3, _08042760 + ldrh r1, [r3] + movs r2, #0x18 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0804278C + strh r2, [r3] + ldr r1, _08042764 + movs r0, #0xc + strb r0, [r1, #0x10] + mov r3, sl + strb r3, [r1, #0x17] + b _08042782 + .align 2, 0 +_08042760: .4byte gUnknown_2024070 +_08042764: .4byte gUnknown_2024118 +_08042768: + ldr r3, _080427A8 + ldrh r1, [r3] + movs r2, #0x60 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0804278C + strh r2, [r3] + ldr r1, _080427AC + movs r0, #0xb + strb r0, [r1, #0x10] + mov r5, sl + strb r5, [r1, #0x17] +_08042782: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0804278C: + mov r0, sb + cmp r0, #0 + bne _08042796 + bl _0804407A +_08042796: + bl sub_080ABC08 + ldr r1, _080427B0 + strb r0, [r1, #5] + ldr r0, _080427B4 + bl sub_080440D8 + bl _0804405E + .align 2, 0 +_080427A8: .4byte gUnknown_2024070 +_080427AC: .4byte gUnknown_2024118 +_080427B0: .4byte gUnknown_2023FD6 +_080427B4: .4byte gUnknown_828926F +_080427B8: + ldr r2, _080427DC + ldrh r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080427C8 + bl _0804405E +_080427C8: + movs r0, #5 + strh r0, [r2] + ldr r0, _080427E0 + bl sub_080440D8 + ldr r0, _080427E4 + mov r1, sl + strb r1, [r0, #0x17] + bl _08044010 + .align 2, 0 +_080427DC: .4byte gUnknown_2024070 +_080427E0: .4byte gUnknown_82899B8 +_080427E4: .4byte gUnknown_2024118 +_080427E8: + ldr r2, _0804280C + ldrh r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080427F8 + bl _0804405E +_080427F8: + movs r0, #0x18 + strh r0, [r2] + ldr r0, _08042810 + bl sub_080440D8 + ldr r0, _08042814 + mov r2, sl + strb r2, [r0, #0x17] + bl _08044010 + .align 2, 0 +_0804280C: .4byte gUnknown_2024070 +_08042810: .4byte gUnknown_82899F8 +_08042814: .4byte gUnknown_2024118 +_08042818: + ldr r2, _0804283C + ldrh r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08042828 + bl _0804405E +_08042828: + movs r0, #0x60 + strh r0, [r2] + ldr r0, _08042840 + bl sub_080440D8 + ldr r0, _08042844 + mov r3, sl + strb r3, [r0, #0x17] + bl _08044010 + .align 2, 0 +_0804283C: .4byte gUnknown_2024070 +_08042840: .4byte gUnknown_8289AB2 +_08042844: .4byte gUnknown_2024118 +_08042848: + ldr r0, _08042874 + mov r5, sl + lsls r2, r5, #2 + adds r1, r2, r5 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042860 + bl _0804405E +_08042860: + ldr r1, _08042878 + adds r1, r2, r1 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #0xc + orrs r0, r2 + str r0, [r1] + ldrb r0, [r3] + movs r1, #8 + b _080428D2 + .align 2, 0 +_08042874: .4byte gUnknown_2024020 +_08042878: .4byte gUnknown_2023F50 +_0804287C: + mov r0, sl + bl sub_080422FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #0 + bne _08042890 + bl _0804407A +_08042890: + ldr r0, _080428A0 + bl sub_080440D8 + ldr r0, _080428A4 + mov r1, sl + strb r1, [r0, #0x17] + bl _08043F22 + .align 2, 0 +_080428A0: .4byte gUnknown_8289A31 +_080428A4: .4byte gUnknown_2024118 +_080428A8: + ldr r0, _080428DC + mov r3, sl + lsls r2, r3, #2 + adds r1, r2, r3 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _080428C0 + bl _0804405E +_080428C0: + ldr r1, _080428E0 + adds r1, r2, r1 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #0xd + orrs r0, r2 + str r0, [r1] + ldrb r0, [r3] + movs r1, #0x10 +_080428D2: + orrs r0, r1 + strb r0, [r3] + bl _0804405E + .align 2, 0 +_080428DC: .4byte gUnknown_2024020 +_080428E0: .4byte gUnknown_2023F50 +_080428E4: + movs r6, #0 + ldrb r5, [r5] + cmp r6, r5 + blo _080428F0 + bl _0804405E +_080428F0: + adds r0, r6, #0 + bl sub_080422FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #0 + beq _08042904 + bl sub_08043F18 +_08042904: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08042918 + ldrb r0, [r0] + cmp r6, r0 + blo _080428F0 + bl _0804405E + .align 2, 0 +_08042918: .4byte gUnknown_2023D10 +_0804291C: + ldr r5, _0804294C + mov r8, r5 + movs r0, #0x58 + mov r6, sl + muls r6, r0, r6 + adds r4, r6, r5 + ldrh r0, [r4, #0x28] + cmp r0, #0 + bne _08042932 + bl _0804405E +_08042932: + ldr r0, _08042950 + mov r1, sl + strb r1, [r0] + ldrb r5, [r7] + cmp r5, #0x2c + beq _08042962 + cmp r5, #0x2c + bgt _08042954 + cmp r5, #3 + bne _08042948 + b _08042AC4 +_08042948: + bl _0804405E + .align 2, 0 +_0804294C: .4byte gUnknown_2023D28 +_08042950: .4byte gUnknown_2023EAF +_08042954: + cmp r5, #0x36 + bne _0804295A + b _08042B10 +_0804295A: + cmp r5, #0x3d + beq _080429E0 + bl _0804405E +_08042962: + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0804297E + bl _0804405E +_0804297E: + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08042996 + bl _0804405E +_08042996: + ldr r0, _080429D4 + ldrh r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _080429A6 + bl _0804405E +_080429A6: + ldrh r0, [r4, #0x2c] + ldrh r2, [r4, #0x28] + cmp r0, r2 + bhi _080429B2 + bl _0804405E +_080429B2: + strb r5, [r7] + ldr r0, _080429D8 + bl sub_080440D8 + ldr r1, _080429DC + ldrh r0, [r4, #0x2c] + lsrs r0, r0, #4 + str r0, [r1] + cmp r0, #0 + bne _080429CA + movs r0, #1 + str r0, [r1] +_080429CA: + ldr r0, [r1] + rsbs r0, r0, #0 + str r0, [r1] + bl _08044010 + .align 2, 0 +_080429D4: .4byte gUnknown_2024070 +_080429D8: .4byte gUnknown_82899E4 +_080429DC: .4byte gUnknown_2023E94 +_080429E0: + mov r0, r8 + adds r0, #0x4c + adds r5, r6, r0 + ldrb r0, [r5] + cmp r0, #0 + bne _080429F0 + bl _0804405E +_080429F0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _08042A0A + bl _0804405E +_08042A0A: + ldr r0, [r5] + movs r1, #0x88 + ands r0, r1 + cmp r0, #0 + beq _08042A1C + ldr r0, _08042A9C + ldr r1, _08042AA0 + bl sub_080088B8 +_08042A1C: + ldr r0, [r5] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08042A2E + ldr r0, _08042A9C + ldr r1, _08042AA4 + bl sub_080088B8 +_08042A2E: + ldr r0, [r5] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08042A40 + ldr r0, _08042A9C + ldr r1, _08042AA8 + bl sub_080088B8 +_08042A40: + ldr r0, [r5] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08042A52 + ldr r0, _08042A9C + ldr r1, _08042AAC + bl sub_080088B8 +_08042A52: + ldr r0, [r5] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08042A64 + ldr r0, _08042A9C + ldr r1, _08042AB0 + bl sub_080088B8 +_08042A64: + str r4, [r5] + mov r1, r8 + adds r1, #0x50 + adds r1, r6, r1 + ldr r0, [r1] + ldr r2, _08042AB4 + ands r0, r2 + str r0, [r1] + ldr r0, _08042AB8 + ldr r4, _08042ABC + mov r3, sl + strb r3, [r4] + strb r3, [r0, #0x17] + ldr r0, _08042AC0 + bl sub_080440D8 + str r5, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + bl _08044010 + .align 2, 0 +_08042A9C: .4byte gUnknown_2022C0C +_08042AA0: .4byte gUnknown_85ABC54 +_08042AA4: .4byte gUnknown_85ABC50 +_08042AA8: .4byte gUnknown_85ABC5B +_08042AAC: .4byte gUnknown_85ABC57 +_08042AB0: .4byte gUnknown_85ABC5E +_08042AB4: .4byte 0xF7FFFFFF +_08042AB8: .4byte gUnknown_2024118 +_08042ABC: .4byte gUnknown_2023D08 +_08042AC0: .4byte gUnknown_8289A0C +_08042AC4: + ldrb r2, [r4, #0x1b] + movs r0, #0x1b + ldrsb r0, [r4, r0] + cmp r0, #0xb + ble _08042AD2 + bl _0804405E +_08042AD2: + ldr r0, _08042B04 + mov r5, sl + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0x16] + cmp r0, #2 + bne _08042AE8 + bl _0804405E +_08042AE8: + adds r0, r2, #1 + movs r1, #0 + strb r0, [r4, #0x1b] + ldr r4, _08042B08 + movs r0, #0x11 + strb r0, [r4, #0x10] + strb r1, [r4, #0x11] + ldr r0, _08042B0C + bl sub_080440D8 + strb r5, [r4, #0x17] + bl _08044010 + .align 2, 0 +_08042B04: .4byte gUnknown_2023F60 +_08042B08: .4byte gUnknown_2024118 +_08042B0C: .4byte gUnknown_82899CC +_08042B10: + ldr r2, _08042B34 + ldrb r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r3, [r1, #0x18] + lsls r0, r3, #0x1f + lsrs r0, r0, #0x1f + movs r2, #1 + eors r2, r0 + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0x18] + bl _0804405E + .align 2, 0 +_08042B34: .4byte gUnknown_2023F60 +_08042B38: + ldrb r0, [r7] + cmp r0, #0x2b + beq _08042B42 + bl _0804405E +_08042B42: + movs r4, #0 + ldr r0, _08042BB0 + ldrh r2, [r0] + ldr r3, _08042BB4 + adds r1, r0, #0 + cmp r2, r3 + bne _08042B54 + bl _0804405E +_08042B54: + cmp r2, r5 + beq _08042B6C + adds r2, r1, #0 +_08042B5A: + adds r2, #2 + adds r4, #1 + ldrh r0, [r2] + cmp r0, r3 + bne _08042B68 + bl _0804405E +_08042B68: + cmp r0, r5 + bne _08042B5A +_08042B6C: + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _08042BB4 + cmp r1, r0 + bne _08042B7C + bl _0804405E +_08042B7C: + ldr r1, _08042BB8 + ldr r0, _08042BBC + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _08042BA2 + ldr r0, _08042BC0 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #4 + orrs r1, r2 + str r1, [r0] +_08042BA2: + ldr r1, _08042BC4 + ldr r0, _08042BC8 + str r0, [r1] + movs r0, #1 + mov sb, r0 + bl _08044064 + .align 2, 0 +_08042BB0: .4byte gUnknown_82EC67C +_08042BB4: .4byte 0x0000FFFF +_08042BB8: .4byte gUnknown_2023D28 +_08042BBC: .4byte gUnknown_2023EAF +_08042BC0: .4byte gUnknown_2023F24 +_08042BC4: .4byte gUnknown_2023EB8 +_08042BC8: .4byte gUnknown_8289BA7 +_08042BCC: + cmp r5, #0 + bne _08042BD4 + bl _0804405E +_08042BD4: + ldrb r0, [r7] + cmp r0, #0xb + beq _08042C44 + cmp r0, #0xb + bgt _08042BE4 + cmp r0, #0xa + beq _08042BEA + b _08042D66 +_08042BE4: + cmp r0, #0x12 + beq _08042C9C + b _08042D66 +_08042BEA: + cmp r3, #0xd + beq _08042BF0 + b _08042D66 +_08042BF0: + ldr r0, _08042C1C + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08042C02 + b _08042D66 +_08042C02: + ldr r1, _08042C20 + ldr r0, _08042C24 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042C30 + ldr r1, _08042C28 + ldr r0, _08042C2C + b _08042C34 + .align 2, 0 +_08042C1C: .4byte gUnknown_82ED220 +_08042C20: .4byte gUnknown_2023FE0 +_08042C24: .4byte gUnknown_2023EAF +_08042C28: .4byte gUnknown_2023EB8 +_08042C2C: .4byte gUnknown_8289AF7 +_08042C30: + ldr r1, _08042C3C + ldr r0, _08042C40 +_08042C34: + str r0, [r1] + movs r1, #1 + b _08042D64 + .align 2, 0 +_08042C3C: .4byte gUnknown_2023EB8 +_08042C40: .4byte gUnknown_8289AF6 +_08042C44: + cmp r3, #0xb + beq _08042C4A + b _08042D66 +_08042C4A: + ldr r0, _08042C74 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08042C5C + b _08042D66 +_08042C5C: + ldr r1, _08042C78 + ldr r0, _08042C7C + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042C88 + ldr r1, _08042C80 + ldr r0, _08042C84 + b _08042C8C + .align 2, 0 +_08042C74: .4byte gUnknown_82ED220 +_08042C78: .4byte gUnknown_2023FE0 +_08042C7C: .4byte gUnknown_2023EAF +_08042C80: .4byte gUnknown_2023EB8 +_08042C84: .4byte gUnknown_8289AF7 +_08042C88: + ldr r1, _08042C94 + ldr r0, _08042C98 +_08042C8C: + str r0, [r1] + movs r2, #1 + mov sb, r2 + b _08042D66 + .align 2, 0 +_08042C94: .4byte gUnknown_2023EB8 +_08042C98: .4byte gUnknown_8289AF6 +_08042C9C: + cmp r3, #0xa + bne _08042D66 + ldr r1, _08042CEC + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08042D66 + ldr r2, _08042CF0 + ldr r0, [r2] + ldr r0, [r0, #4] + mov r5, sl + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r3, [r0] + movs r4, #1 + ands r3, r4 + adds r5, r1, #0 + cmp r3, #0 + bne _08042D2C + ldr r0, _08042CF4 + strb r3, [r0, #5] + ldr r1, _08042CF8 + ldr r0, _08042CFC + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042D08 + ldr r1, _08042D00 + ldr r0, _08042D04 + b _08042D0C + .align 2, 0 +_08042CEC: .4byte gUnknown_2023D28 +_08042CF0: .4byte gUnknown_202414C +_08042CF4: .4byte gUnknown_2023FD6 +_08042CF8: .4byte gUnknown_2023FE0 +_08042CFC: .4byte gUnknown_2023EAF +_08042D00: .4byte gUnknown_2023EB8 +_08042D04: .4byte gUnknown_8289B30 +_08042D08: + ldr r1, _08042D24 + ldr r0, _08042D28 +_08042D0C: + str r0, [r1] + ldr r0, [r2] + ldr r1, [r0, #4] + adds r1, r1, r5 + ldr r0, [r1] + movs r2, #1 + orrs r0, r2 + str r0, [r1] + movs r0, #2 + mov sb, r0 + b _08042D66 + .align 2, 0 +_08042D24: .4byte gUnknown_2023EB8 +_08042D28: .4byte gUnknown_8289B2F +_08042D2C: + ldr r0, _08042D48 + strb r4, [r0, #5] + ldr r1, _08042D4C + ldr r0, _08042D50 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042D5C + ldr r1, _08042D54 + ldr r0, _08042D58 + b _08042D60 + .align 2, 0 +_08042D48: .4byte gUnknown_2023FD6 +_08042D4C: .4byte gUnknown_2023FE0 +_08042D50: .4byte gUnknown_2023EAF +_08042D54: .4byte gUnknown_2023EB8 +_08042D58: .4byte gUnknown_8289B30 +_08042D5C: + ldr r1, _08042DA0 + ldr r0, _08042DA4 +_08042D60: + str r0, [r1] + movs r1, #2 +_08042D64: + mov sb, r1 +_08042D66: + mov r2, sb + cmp r2, #1 + beq _08042D70 + bl _0804405E +_08042D70: + ldr r1, _08042DA8 + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2c] + ldrh r5, [r1, #0x28] + cmp r0, r5 + bne _08042DCC + ldr r1, _08042DAC + ldr r0, _08042DB0 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08042DB8 + ldr r1, _08042DA0 + ldr r0, _08042DB4 + str r0, [r1] + bl _0804405E + .align 2, 0 +_08042DA0: .4byte gUnknown_2023EB8 +_08042DA4: .4byte gUnknown_8289B2F +_08042DA8: .4byte gUnknown_2023D28 +_08042DAC: .4byte gUnknown_2023FE0 +_08042DB0: .4byte gUnknown_2023EAF +_08042DB4: .4byte gUnknown_8289B1A +_08042DB8: + ldr r1, _08042DC4 + ldr r0, _08042DC8 + str r0, [r1] + bl _0804405E + .align 2, 0 +_08042DC4: .4byte gUnknown_2023EB8 +_08042DC8: .4byte gUnknown_8289B19 +_08042DCC: + ldr r2, _08042DE8 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #2 + str r0, [r2] + cmp r0, #0 + bne _08042DDC + mov r0, sb + str r0, [r2] +_08042DDC: + ldr r0, [r2] + rsbs r0, r0, #0 + str r0, [r2] + bl _0804405E + .align 2, 0 +_08042DE8: .4byte gUnknown_2023E94 +_08042DEC: + ldrb r0, [r7] + subs r0, #9 + cmp r0, #0x2f + bls _08042DF8 + bl _0804405E +_08042DF8: + lsls r0, r0, #2 + ldr r1, _08042E04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042E04: .4byte _08042E08 +_08042E08: @ jump table + .4byte _08043224 @ case 0 + .4byte _0804405E @ case 1 + .4byte _0804405E @ case 2 + .4byte _0804405E @ case 3 + .4byte _0804405E @ case 4 + .4byte _0804405E @ case 5 + .4byte _0804405E @ case 6 + .4byte _08042EC8 @ case 7 + .4byte _0804405E @ case 8 + .4byte _0804405E @ case 9 + .4byte _0804405E @ case 10 + .4byte _0804405E @ case 11 + .4byte _0804405E @ case 12 + .4byte _0804405E @ case 13 + .4byte _0804405E @ case 14 + .4byte _08042F90 @ case 15 + .4byte _0804405E @ case 16 + .4byte _0804405E @ case 17 + .4byte _08043050 @ case 18 + .4byte _0804405E @ case 19 + .4byte _0804405E @ case 20 + .4byte _0804405E @ case 21 + .4byte _0804405E @ case 22 + .4byte _0804405E @ case 23 + .4byte _0804405E @ case 24 + .4byte _0804405E @ case 25 + .4byte _0804405E @ case 26 + .4byte _0804405E @ case 27 + .4byte _0804405E @ case 28 + .4byte _08043148 @ case 29 + .4byte _0804405E @ case 30 + .4byte _0804405E @ case 31 + .4byte _0804405E @ case 32 + .4byte _0804405E @ case 33 + .4byte _0804405E @ case 34 + .4byte _0804405E @ case 35 + .4byte _0804405E @ case 36 + .4byte _0804405E @ case 37 + .4byte _0804405E @ case 38 + .4byte _0804405E @ case 39 + .4byte _08043300 @ case 40 + .4byte _0804405E @ case 41 + .4byte _0804405E @ case 42 + .4byte _0804405E @ case 43 + .4byte _0804405E @ case 44 + .4byte _0804405E @ case 45 + .4byte _0804405E @ case 46 + .4byte _080433DC @ case 47 +_08042EC8: + ldr r0, _08042F70 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08042ED8 + bl _0804405E +_08042ED8: + cmp r5, #0xa5 + bne _08042EE0 + bl _0804405E +_08042EE0: + ldr r0, _08042F74 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08042EF4 + bl _0804405E +_08042EF4: + ldr r2, _08042F78 + ldr r0, _08042F7C + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08042F1C + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08042F1C + bl _0804405E +_08042F1C: + ldr r1, _08042F80 + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + adds r1, r0, r1 + adds r4, r1, #0 + adds r4, #0x21 + ldrb r0, [r4] + cmp r0, r3 + bne _08042F36 + bl _0804405E +_08042F36: + adds r2, r1, #0 + adds r2, #0x22 + ldrb r0, [r2] + cmp r0, r3 + bne _08042F44 + bl _0804405E +_08042F44: + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _08042F4E + bl _0804405E +_08042F4E: + strb r3, [r4] + strb r3, [r2] + ldr r1, _08042F84 + movs r0, #0xfd + strb r0, [r1] + movs r0, #3 + strb r0, [r1, #1] + strb r3, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + bl sub_0803F73C + ldr r1, _08042F88 + ldr r0, _08042F8C + str r0, [r1] + bl _08044010 + .align 2, 0 +_08042F70: .4byte gUnknown_2023F20 +_08042F74: .4byte gUnknown_82ED220 +_08042F78: .4byte gUnknown_2024020 +_08042F7C: .4byte gUnknown_2023EB0 +_08042F80: .4byte gUnknown_2023D28 +_08042F84: .4byte gUnknown_2022C0C +_08042F88: .4byte gUnknown_2023EB8 +_08042F8C: .4byte gUnknown_8289BD5 +_08042F90: + ldr r0, _08043028 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08042FA0 + bl _0804405E +_08042FA0: + ldr r1, _0804302C + ldr r0, _08043030 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r3, r0, r1 + ldrh r0, [r3, #0x28] + cmp r0, #0 + bne _08042FB6 + bl _0804405E +_08042FB6: + ldr r0, _08043034 + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08042FC8 + bl _0804405E +_08042FC8: + ldr r2, _08043038 + ldr r0, _0804303C + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08042FF0 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08042FF0 + bl _0804405E +_08042FF0: + ldr r1, _08043040 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0804300A + bl _0804405E +_0804300A: + ldr r1, _08043044 + ldrh r0, [r3, #0x2c] + lsrs r0, r0, #4 + str r0, [r1] + cmp r0, #0 + bne _08043018 + str r2, [r1] +_08043018: + bl sub_0803F73C + ldr r1, _08043048 + ldr r0, _0804304C + str r0, [r1] + bl _08044010 + .align 2, 0 +_08043028: .4byte gUnknown_2023F20 +_0804302C: .4byte gUnknown_2023D28 +_08043030: .4byte gUnknown_2023EAF +_08043034: .4byte gUnknown_2023FE0 +_08043038: .4byte gUnknown_2024020 +_0804303C: .4byte gUnknown_2023EB0 +_08043040: .4byte gUnknown_82ED220 +_08043044: .4byte gUnknown_2023E94 +_08043048: .4byte gUnknown_2023EB8 +_0804304C: .4byte gUnknown_8289BDC +_08043050: + ldr r0, _0804311C + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08043060 + bl _0804405E +_08043060: + ldr r1, _08043120 + ldr r0, _08043124 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08043076 + bl _0804405E +_08043076: + ldr r0, _08043128 + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08043088 + bl _0804405E +_08043088: + ldr r2, _0804312C + ldr r0, _08043130 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _080430B0 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _080430B0 + bl _0804405E +_080430B0: + ldr r1, _08043134 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080430C8 + bl _0804405E +_080430C8: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080430E0 + bl _0804405E +_080430E0: + ldr r5, _08043138 + movs r4, #3 +_080430E4: + bl sub_0806F050 + ands r0, r4 + strb r0, [r5, #3] + cmp r0, #0 + beq _080430E4 + ldr r1, _08043138 + ldrb r0, [r1, #3] + cmp r0, #3 + bne _080430FC + adds r0, #2 + strb r0, [r1, #3] +_080430FC: + ldrb r0, [r1, #3] + adds r0, #0x40 + strb r0, [r1, #3] + bl sub_0803F73C + ldr r1, _0804313C + ldr r0, _08043140 + str r0, [r1] + ldr r2, _08043144 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r2] + bl _08044010 + .align 2, 0 +_0804311C: .4byte gUnknown_2023F20 +_08043120: .4byte gUnknown_2023D28 +_08043124: .4byte gUnknown_2023EAF +_08043128: .4byte gUnknown_2023FE0 +_0804312C: .4byte gUnknown_2024020 +_08043130: .4byte gUnknown_2023EB0 +_08043134: .4byte gUnknown_82ED220 +_08043138: .4byte gUnknown_2023FD6 +_0804313C: .4byte gUnknown_2023EB8 +_08043140: .4byte gUnknown_8289C04 +_08043144: .4byte gUnknown_2023F24 +_08043148: + ldr r0, _080431F8 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08043158 + bl _0804405E +_08043158: + ldr r1, _080431FC + ldr r0, _08043200 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0804316E + bl _0804405E +_0804316E: + ldr r0, _08043204 + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08043180 + bl _0804405E +_08043180: + ldr r2, _08043208 + ldr r0, _0804320C + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _080431A8 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _080431A8 + bl _0804405E +_080431A8: + ldr r1, _08043210 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080431C0 + bl _0804405E +_080431C0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080431D8 + bl _0804405E +_080431D8: + ldr r1, _08043214 + movs r0, #0x42 + strb r0, [r1, #3] + bl sub_0803F73C + ldr r1, _08043218 + ldr r0, _0804321C + str r0, [r1] + ldr r2, _08043220 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r2] + bl _08044010 + .align 2, 0 +_080431F8: .4byte gUnknown_2023F20 +_080431FC: .4byte gUnknown_2023D28 +_08043200: .4byte gUnknown_2023EAF +_08043204: .4byte gUnknown_2023FE0 +_08043208: .4byte gUnknown_2024020 +_0804320C: .4byte gUnknown_2023EB0 +_08043210: .4byte gUnknown_82ED220 +_08043214: .4byte gUnknown_2023FD6 +_08043218: .4byte gUnknown_2023EB8 +_0804321C: .4byte gUnknown_8289C04 +_08043220: .4byte gUnknown_2023F24 +_08043224: + ldr r0, _080432D4 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08043234 + bl _0804405E +_08043234: + ldr r1, _080432D8 + ldr r0, _080432DC + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0804324A + bl _0804405E +_0804324A: + ldr r0, _080432E0 + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0804325C + bl _0804405E +_0804325C: + ldr r2, _080432E4 + ldr r0, _080432E8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043284 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043284 + bl _0804405E +_08043284: + ldr r1, _080432EC + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0804329C + bl _0804405E +_0804329C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080432B4 + bl _0804405E +_080432B4: + ldr r1, _080432F0 + movs r0, #0x45 + strb r0, [r1, #3] + bl sub_0803F73C + ldr r1, _080432F4 + ldr r0, _080432F8 + str r0, [r1] + ldr r2, _080432FC + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r2] + bl _08044010 + .align 2, 0 +_080432D4: .4byte gUnknown_2023F20 +_080432D8: .4byte gUnknown_2023D28 +_080432DC: .4byte gUnknown_2023EAF +_080432E0: .4byte gUnknown_2023FE0 +_080432E4: .4byte gUnknown_2024020 +_080432E8: .4byte gUnknown_2023EB0 +_080432EC: .4byte gUnknown_82ED220 +_080432F0: .4byte gUnknown_2023FD6 +_080432F4: .4byte gUnknown_2023EB8 +_080432F8: .4byte gUnknown_8289C04 +_080432FC: .4byte gUnknown_2023F24 +_08043300: + ldr r0, _080433B0 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08043310 + bl _0804405E +_08043310: + ldr r1, _080433B4 + ldr r0, _080433B8 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08043326 + bl _0804405E +_08043326: + ldr r0, _080433BC + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08043338 + bl _0804405E +_08043338: + ldr r1, _080433C0 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08043350 + bl _0804405E +_08043350: + ldr r2, _080433C4 + ldr r0, _080433C8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043378 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043378 + bl _0804405E +_08043378: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08043390 + bl _0804405E +_08043390: + ldr r1, _080433CC + movs r0, #0x43 + strb r0, [r1, #3] + bl sub_0803F73C + ldr r1, _080433D0 + ldr r0, _080433D4 + str r0, [r1] + ldr r2, _080433D8 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r2] + bl _08044010 + .align 2, 0 +_080433B0: .4byte gUnknown_2023F20 +_080433B4: .4byte gUnknown_2023D28 +_080433B8: .4byte gUnknown_2023EAF +_080433BC: .4byte gUnknown_2023FE0 +_080433C0: .4byte gUnknown_82ED220 +_080433C4: .4byte gUnknown_2024020 +_080433C8: .4byte gUnknown_2023EB0 +_080433CC: .4byte gUnknown_2023FD6 +_080433D0: .4byte gUnknown_2023EB8 +_080433D4: .4byte gUnknown_8289C04 +_080433D8: .4byte gUnknown_2023F24 +_080433DC: + ldr r0, _08043520 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _080433EC + bl _0804405E +_080433EC: + ldr r6, _08043524 + ldr r3, _08043528 + mov r8, r3 + ldrb r1, [r3] + movs r7, #0x58 + adds r0, r1, #0 + muls r0, r7, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08043406 + bl _0804405E +_08043406: + ldr r0, _0804352C + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08043418 + bl _0804405E +_08043418: + ldr r1, _08043530 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08043430 + bl _0804405E +_08043430: + ldr r3, _08043534 + ldr r5, _08043538 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r3, #0 + adds r0, #8 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043458 + adds r0, r3, #0 + adds r0, #0xc + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08043458 + bl _0804405E +_08043458: + adds r0, r1, #0 + muls r0, r7, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08043468 + bl _0804405E +_08043468: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08043480 + bl _0804405E +_08043480: + mov r1, r8 + ldrb r0, [r1] + muls r0, r7, r0 + adds r0, r0, r6 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0xc + bne _08043494 + bl _0804405E +_08043494: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + bl sub_08069B60 + adds r4, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x14] + bl sub_08069B60 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080434B2 + bl _0804405E +_080434B2: + mov r2, r8 + ldrb r0, [r2] + muls r0, r7, r0 + adds r4, r6, #0 + adds r4, #0x50 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r0, r1 + cmp r0, #0 + beq _080434CE + bl _0804405E +_080434CE: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080434E2 + bl _0804405E +_080434E2: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x14] + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080434F6 + bl _0804405E +_080434F6: + mov r3, r8 + ldrb r0, [r3] + adds r2, r0, #0 + muls r2, r7, r2 + adds r2, r2, r4 + ldr r1, _0804353C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x10 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r1, _08043540 + ldr r0, _08043544 + str r0, [r1] + bl _08044010 + .align 2, 0 +_08043520: .4byte gUnknown_2023F20 +_08043524: .4byte gUnknown_2023D28 +_08043528: .4byte gUnknown_2023EAF +_0804352C: .4byte gUnknown_2023FE0 +_08043530: .4byte gUnknown_82ED220 +_08043534: .4byte gUnknown_2024020 +_08043538: .4byte gUnknown_2023EB0 +_0804353C: .4byte gUnknown_82FACB4 +_08043540: .4byte gUnknown_2023EB8 +_08043544: .4byte gUnknown_8289BF7 +_08043548: + movs r5, #0 + mov sl, r5 + ldr r0, _0804357C + ldrb r0, [r0] + cmp sl, r0 + blo _08043558 + bl _0804405E +_08043558: + ldr r1, _08043580 + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + subs r0, #7 + adds r2, r1, #0 + cmp r0, #0x41 + bls _08043572 + b _080437D6 +_08043572: + lsls r0, r0, #2 + ldr r1, _08043584 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804357C: .4byte gUnknown_2023D10 +_08043580: .4byte gUnknown_2023D28 +_08043584: .4byte _08043588 +_08043588: @ jump table + .4byte _080436EC @ case 0 + .4byte _080437D6 @ case 1 + .4byte _080437D6 @ case 2 + .4byte _080437D6 @ case 3 + .4byte _080437D6 @ case 4 + .4byte _080437B0 @ case 5 + .4byte _080437D6 @ case 6 + .4byte _080437D6 @ case 7 + .4byte _08043714 @ case 8 + .4byte _080437D6 @ case 9 + .4byte _08043690 @ case 10 + .4byte _080437D6 @ case 11 + .4byte _080437D6 @ case 12 + .4byte _080436BC @ case 13 + .4byte _080437D6 @ case 14 + .4byte _080437D6 @ case 15 + .4byte _080437D6 @ case 16 + .4byte _080437D6 @ case 17 + .4byte _080437D6 @ case 18 + .4byte _080437D6 @ case 19 + .4byte _080437D6 @ case 20 + .4byte _080437D6 @ case 21 + .4byte _080437D6 @ case 22 + .4byte _080437D6 @ case 23 + .4byte _080437D6 @ case 24 + .4byte _080437D6 @ case 25 + .4byte _080437D6 @ case 26 + .4byte _080437D6 @ case 27 + .4byte _080437D6 @ case 28 + .4byte _080437D6 @ case 29 + .4byte _080437D6 @ case 30 + .4byte _080437D6 @ case 31 + .4byte _080437D6 @ case 32 + .4byte _08043780 @ case 33 + .4byte _08043750 @ case 34 + .4byte _080437D6 @ case 35 + .4byte _080437D6 @ case 36 + .4byte _080437D6 @ case 37 + .4byte _080437D6 @ case 38 + .4byte _080437D6 @ case 39 + .4byte _080437D6 @ case 40 + .4byte _080437D6 @ case 41 + .4byte _080437D6 @ case 42 + .4byte _080437D6 @ case 43 + .4byte _080437D6 @ case 44 + .4byte _080437D6 @ case 45 + .4byte _080437D6 @ case 46 + .4byte _080437D6 @ case 47 + .4byte _080437D6 @ case 48 + .4byte _080437D6 @ case 49 + .4byte _080437D6 @ case 50 + .4byte _080437D6 @ case 51 + .4byte _080437D6 @ case 52 + .4byte _080437D6 @ case 53 + .4byte _080437D6 @ case 54 + .4byte _080437D6 @ case 55 + .4byte _080437D6 @ case 56 + .4byte _080437D6 @ case 57 + .4byte _080437D6 @ case 58 + .4byte _080437D6 @ case 59 + .4byte _080437D6 @ case 60 + .4byte _080437D6 @ case 61 + .4byte _080437D6 @ case 62 + .4byte _080437D6 @ case 63 + .4byte _080437D6 @ case 64 + .4byte _08043714 @ case 65 +_08043690: + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, r2, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080436B0 + ands r0, r1 + cmp r0, #0 + bne _080436AA + b _080437D6 +_080436AA: + ldr r0, _080436B4 + ldr r1, _080436B8 + b _0804379C + .align 2, 0 +_080436B0: .4byte 0x00000F88 +_080436B4: .4byte gUnknown_2022C0C +_080436B8: .4byte gUnknown_85ABC54 +_080436BC: + movs r0, #0x58 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + adds r1, r2, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080436D6 + b _080437D6 +_080436D6: + ldr r0, _080436E4 + ldr r1, _080436E8 + bl sub_080088B8 + movs r2, #2 + mov sb, r2 + b _080437DC + .align 2, 0 +_080436E4: .4byte gUnknown_2022C0C +_080436E8: .4byte gUnknown_85ABC62 +_080436EC: + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, r2, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080437D6 + ldr r0, _0804370C + ldr r1, _08043710 + b _0804379C + .align 2, 0 +_0804370C: .4byte gUnknown_2022C0C +_08043710: .4byte gUnknown_85ABC5B +_08043714: + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _080437D6 + adds r2, #0x50 + adds r2, r3, r2 + ldr r0, [r2] + ldr r1, _08043744 + ands r0, r1 + str r0, [r2] + ldr r0, _08043748 + ldr r1, _0804374C + bl sub_080088B8 + movs r0, #1 + mov sb, r0 + b _080437DC + .align 2, 0 +_08043744: .4byte 0xF7FFFFFF +_08043748: .4byte gUnknown_2022C0C +_0804374C: .4byte gUnknown_85ABC50 +_08043750: + movs r0, #0x58 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + adds r1, r2, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080437D6 + ldr r0, _08043778 + ldr r1, _0804377C + bl sub_080088B8 + movs r2, #1 + mov sb, r2 + b _080437DC + .align 2, 0 +_08043778: .4byte gUnknown_2022C0C +_0804377C: .4byte gUnknown_85ABC57 +_08043780: + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r1, r2, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080437D6 + ldr r0, _080437A8 + ldr r1, _080437AC +_0804379C: + bl sub_080088B8 + movs r5, #1 + mov sb, r5 + b _080437DC + .align 2, 0 +_080437A8: .4byte gUnknown_2022C0C +_080437AC: .4byte gUnknown_85ABC5E +_080437B0: + movs r0, #0x58 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + adds r1, r2, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r0, r1 + cmp r0, #0 + beq _080437D6 + ldr r0, _080437EC + ldr r1, _080437F0 + bl sub_080088B8 + movs r2, #3 + mov sb, r2 +_080437D6: + mov r3, sb + cmp r3, #0 + beq _08043890 +_080437DC: + mov r5, sb + cmp r5, #2 + beq _08043810 + cmp r5, #2 + bgt _080437F4 + cmp r5, #1 + beq _080437FC + b _0804383C + .align 2, 0 +_080437EC: .4byte gUnknown_2022C0C +_080437F0: .4byte gUnknown_85ABC67 +_080437F4: + mov r0, sb + cmp r0, #3 + beq _08043828 + b _0804383C +_080437FC: + ldr r1, _0804380C + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r1, #0x4c + adds r2, r2, r1 + movs r0, #0 + b _0804383A + .align 2, 0 +_0804380C: .4byte gUnknown_2023D28 +_08043810: + ldr r1, _08043824 + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + b _08043838 + .align 2, 0 +_08043824: .4byte gUnknown_2023D28 +_08043828: + ldr r1, _08043874 + movs r0, #0x58 + mov r2, sl + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + ldr r1, _08043878 +_08043838: + ands r0, r1 +_0804383A: + str r0, [r2] +_0804383C: + bl sub_0803F73C + ldr r1, _0804387C + ldr r0, _08043880 + str r0, [r1] + ldr r0, _08043884 + mov r1, sl + strb r1, [r0, #0x17] + ldr r4, _08043888 + strb r1, [r4] + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _0804388C + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + bl _0804407A + .align 2, 0 +_08043874: .4byte gUnknown_2023D28 +_08043878: .4byte 0xFFF0FFFF +_0804387C: .4byte gUnknown_2023EB8 +_08043880: .4byte gUnknown_8289C14 +_08043884: .4byte gUnknown_2024118 +_08043888: .4byte gUnknown_2023D08 +_0804388C: .4byte gUnknown_2023D74 +_08043890: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _080438A8 + ldrb r0, [r0] + cmp sl, r0 + bhs _080438A4 + b _08043558 +_080438A4: + bl _0804405E + .align 2, 0 +_080438A8: .4byte gUnknown_2023D10 +_080438AC: + movs r2, #0 + mov sl, r2 + ldr r0, _080438F4 + ldrb r0, [r0] + cmp sl, r0 + blo _080438BA + b _0804405E +_080438BA: + ldr r4, _080438F8 +_080438BC: + movs r0, #0x58 + mov r3, sl + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r0, r4 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x3b + bne _080438E0 + mov r0, sl + bl sub_080422FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #0 + beq _080438E0 + b _08043F3C +_080438E0: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _080438F4 + ldrb r0, [r0] + cmp sl, r0 + blo _080438BC + b _0804405E + .align 2, 0 +_080438F4: .4byte gUnknown_2023D10 +_080438F8: .4byte gUnknown_2023D28 +_080438FC: + ldrb r0, [r7] + cmp r0, #0x1c + beq _08043904 + b _0804405E +_08043904: + ldr r4, _08043964 + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08043914 + b _0804405E +_08043914: + ldr r0, _08043968 + ands r1, r0 + str r1, [r4] + mov r5, r8 + ldr r1, [r5] + adds r1, #0xb2 + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0xb2 + ldrb r0, [r1] + cmp r0, #6 + bne _08043938 + movs r0, #2 + strb r0, [r1] +_08043938: + ldr r1, _0804396C + mov r2, r8 + ldr r0, [r2] + adds r0, #0xb2 + ldrb r0, [r0] + adds r0, #0x40 + strb r0, [r1, #3] + ldr r1, _08043970 + ldr r0, _08043974 + ldrb r0, [r0] + strb r0, [r1, #0x17] + bl sub_0803F73C + ldr r1, _08043978 + ldr r0, _0804397C + str r0, [r1] + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r4] + b _08044010 + .align 2, 0 +_08043964: .4byte gUnknown_2023F24 +_08043968: .4byte 0xFFFFBFFF +_0804396C: .4byte gUnknown_2023FD6 +_08043970: .4byte gUnknown_2024118 +_08043974: .4byte gUnknown_2023EB0 +_08043978: .4byte gUnknown_2023EB8 +_0804397C: .4byte gUnknown_8289C07 +_08043980: + ldrb r0, [r7] + cmp r0, #0x1c + beq _08043988 + b _0804405E +_08043988: + ldr r4, _080439E8 + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08043998 + b _0804405E +_08043998: + ldr r0, _080439EC + ands r1, r0 + str r1, [r4] + mov r3, r8 + ldr r1, [r3] + adds r1, #0xb2 + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0xb2 + ldrb r0, [r1] + cmp r0, #6 + bne _080439BC + movs r0, #2 + strb r0, [r1] +_080439BC: + ldr r1, _080439F0 + mov r3, r8 + ldr r0, [r3] + adds r0, #0xb2 + ldrb r0, [r0] + strb r0, [r1, #3] + ldr r1, _080439F4 + ldr r0, _080439F8 + ldrb r0, [r0] + strb r0, [r1, #0x17] + bl sub_0803F73C + ldr r1, _080439FC + ldr r0, _08043A00 + str r0, [r1] + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #6 + orrs r0, r1 + str r0, [r4] + b _08044010 + .align 2, 0 +_080439E8: .4byte gUnknown_2023F24 +_080439EC: .4byte 0xFFFFBFFF +_080439F0: .4byte gUnknown_2023FD6 +_080439F4: .4byte gUnknown_2024118 +_080439F8: .4byte gUnknown_2023EAF +_080439FC: .4byte gUnknown_2023EB8 +_08043A00: .4byte gUnknown_8289C07 +_08043A04: + movs r4, #0 + ldr r0, _08043A3C + ldrb r1, [r0] + cmp r4, r1 + blt _08043A10 + b _0804405E +_08043A10: + ldr r0, _08043A40 + adds r5, r1, #0 + ldr r2, _08043A44 + adds r3, r0, #0 + adds r3, #0x20 + movs r6, #0x80 + lsls r6, r6, #0xc +_08043A1E: + ldrb r1, [r3] + cmp r1, #0x16 + bne _08043A2E + ldr r0, [r2] + ands r0, r6 + cmp r0, #0 + beq _08043A2E + b _08043F64 +_08043A2E: + adds r2, #4 + adds r3, #0x58 + adds r4, #1 + cmp r4, r5 + blt _08043A1E + b _0804405E + .align 2, 0 +_08043A3C: .4byte gUnknown_2023D10 +_08043A40: .4byte gUnknown_2023D28 +_08043A44: .4byte gUnknown_2023F50 +_08043A48: + movs r4, #0 + ldr r0, _08043B24 + ldrb r0, [r0] + cmp r4, r0 + blt _08043A54 + b _0804405E +_08043A54: + ldr r5, _08043B28 + mov r8, r5 + ldr r0, _08043B2C + adds r0, #0x20 + str r0, [sp, #0x1c] + movs r1, #0 + str r1, [sp, #0x20] +_08043A62: + ldr r2, [sp, #0x1c] + ldrb r0, [r2] + cmp r0, #0x24 + beq _08043A6C + b _08043BFE +_08043A6C: + ldr r0, _08043B30 + ldr r3, [sp, #0x20] + adds r0, r3, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xd + ands r1, r0 + str r3, [sp, #0x18] + cmp r1, #0 + bne _08043A82 + b _08043BFE +_08043A82: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + movs r1, #1 + adds r5, r0, #0 + eors r5, r1 + ands r5, r1 + adds r0, r5, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08043B34 + ldr r0, [r0] + movs r2, #1 + ands r0, r2 + cmp r0, #0 + bne _08043AB4 + b _08043BC4 +_08043AB4: + movs r1, #0x58 + adds r0, r6, #0 + muls r0, r1, r0 + ldr r3, _08043B2C + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _08043B80 + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08043B3C + movs r1, #0x58 + adds r0, r7, #0 + muls r0, r1, r0 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _08043B3C + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08043B3C + str r2, [sp, #0x24] + bl sub_0806F050 + ldr r2, [sp, #0x24] + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #1 + orrs r5, r1 + adds r0, r5, #0 + bl sub_080A631C + mov r2, r8 + strb r0, [r2] + ldrb r0, [r2] + movs r3, #0x58 + muls r0, r3, r0 + ldr r5, _08043B2C + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + ldr r1, [sp, #0x1c] + strb r0, [r1] + ldrb r0, [r2] + muls r0, r3, r0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + ldr r2, _08043B38 + strb r0, [r2] + b _08043BEC + .align 2, 0 +_08043B24: .4byte gUnknown_2023D10 +_08043B28: .4byte gUnknown_2023D08 +_08043B2C: .4byte gUnknown_2023D28 +_08043B30: .4byte gUnknown_2023F50 +_08043B34: .4byte gUnknown_2022C90 +_08043B38: .4byte gUnknown_2023EAE +_08043B3C: + ldr r3, _08043B7C + movs r2, #0x58 + adds r0, r6, #0 + muls r0, r2, r0 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _08043B80 + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08043B80 + mov r5, r8 + strb r6, [r5] + adds r1, r4, #0 + muls r1, r2, r1 + adds r1, r1, r3 + ldrb r0, [r5] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + adds r1, #0x20 + strb r0, [r1] + ldrb r0, [r5] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + b _08043BE8 + .align 2, 0 +_08043B7C: .4byte gUnknown_2023D28 +_08043B80: + ldr r3, _08043BC0 + movs r2, #0x58 + adds r0, r7, #0 + muls r0, r2, r0 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _08043BF6 + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08043BF6 + mov r5, r8 + strb r7, [r5] + adds r1, r4, #0 + muls r1, r2, r1 + adds r1, r1, r3 + ldrb r0, [r5] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + adds r1, #0x20 + strb r0, [r1] + ldrb r0, [r5] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + b _08043BE8 + .align 2, 0 +_08043BC0: .4byte gUnknown_2023D28 +_08043BC4: + mov r2, r8 + strb r6, [r2] + movs r3, #0x58 + adds r0, r6, #0 + muls r0, r3, r0 + ldr r5, _08043C18 + adds r0, r0, r5 + adds r2, r0, #0 + adds r2, #0x20 + ldrb r1, [r2] + cmp r1, #0 + beq _08043BF6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08043BF6 + ldr r0, [sp, #0x1c] + strb r1, [r0] + ldrb r0, [r2] +_08043BE8: + ldr r1, _08043C1C + strb r0, [r1] +_08043BEC: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043BF6: + mov r2, sb + cmp r2, #0 + beq _08043BFE + b _08043F80 +_08043BFE: + ldr r3, [sp, #0x1c] + adds r3, #0x58 + str r3, [sp, #0x1c] + ldr r5, [sp, #0x20] + adds r5, #4 + str r5, [sp, #0x20] + adds r4, #1 + ldr r0, _08043C20 + ldrb r0, [r0] + cmp r4, r0 + bge _08043C16 + b _08043A62 +_08043C16: + b _0804405E + .align 2, 0 +_08043C18: .4byte gUnknown_2023D28 +_08043C1C: .4byte gUnknown_2023EAE +_08043C20: .4byte gUnknown_2023D10 +_08043C24: + movs r4, #0 + ldr r0, _08043C5C + ldrb r1, [r0] + cmp r4, r1 + blt _08043C30 + b _0804405E +_08043C30: + ldr r0, _08043C60 + adds r5, r1, #0 + ldr r2, _08043C64 + adds r3, r0, #0 + adds r3, #0x20 + movs r6, #0x80 + lsls r6, r6, #0xc +_08043C3E: + ldrb r1, [r3] + cmp r1, #0x16 + bne _08043C4E + ldr r0, [r2] + ands r0, r6 + cmp r0, #0 + beq _08043C4E + b _08043FF4 +_08043C4E: + adds r2, #4 + adds r3, #0x58 + adds r4, #1 + cmp r4, r5 + blt _08043C3E + b _0804405E + .align 2, 0 +_08043C5C: .4byte gUnknown_2023D10 +_08043C60: .4byte gUnknown_2023D28 +_08043C64: .4byte gUnknown_2023F50 +_08043C68: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08043CB8 + ldrb r0, [r0] + cmp r4, r0 + blt _08043C7E + b _0804405E +_08043C7E: + ldr r7, _08043CBC +_08043C80: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r4, #1 + cmp r0, r5 + beq _08043CAA + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, r6 + bne _08043CAA + ldr r0, _08043CC0 + strb r6, [r0] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043CAA: + adds r4, r3, #0 + ldr r0, _08043CB8 + ldrb r0, [r0] + cmp r4, r0 + blt _08043C80 + b _0804405E + .align 2, 0 +_08043CB8: .4byte gUnknown_2023D10 +_08043CBC: .4byte gUnknown_2023D28 +_08043CC0: .4byte gUnknown_2023EAE +_08043CC4: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08043D14 + ldrb r0, [r0] + cmp r4, r0 + blt _08043CDA + b _0804405E +_08043CDA: + ldr r7, _08043D18 +_08043CDC: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r4, #1 + cmp r0, r5 + bne _08043D06 + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, r6 + bne _08043D06 + ldr r0, _08043D1C + strb r6, [r0] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043D06: + adds r4, r3, #0 + ldr r0, _08043D14 + ldrb r0, [r0] + cmp r4, r0 + blt _08043CDC + b _0804405E + .align 2, 0 +_08043D14: .4byte gUnknown_2023D10 +_08043D18: .4byte gUnknown_2023D28 +_08043D1C: .4byte gUnknown_2023EAE +_08043D20: + ldrb r0, [r7] + cmp r0, #0xfd + beq _08043D44 + cmp r0, #0xfe + beq _08043D7C + movs r4, #0 + ldr r0, _08043D3C + adds r5, r0, #0 + ldrb r0, [r5] + cmp r4, r0 + blt _08043D38 + b _0804405E +_08043D38: + ldr r2, _08043D40 + b _08043DB4 + .align 2, 0 +_08043D3C: .4byte gUnknown_2023D10 +_08043D40: .4byte gUnknown_2023D28 +_08043D44: + movs r4, #0 + ldr r0, _08043D74 + ldrb r0, [r0] + cmp r4, r0 + blt _08043D50 + b _0804405E +_08043D50: + ldr r5, _08043D78 + movs r2, #0x80 + lsls r2, r2, #9 + adds r1, r0, #0 +_08043D58: + lsls r0, r4, #2 + adds r0, r0, r5 + ldr r0, [r0] + ands r0, r2 + adds r3, r4, #1 + cmp r0, #0 + beq _08043D6C + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043D6C: + adds r4, r3, #0 + cmp r4, r1 + blt _08043D58 + b _0804405E + .align 2, 0 +_08043D74: .4byte gUnknown_2023D10 +_08043D78: .4byte gUnknown_2023F50 +_08043D7C: + movs r4, #0 + ldr r0, _08043DAC + ldrb r0, [r0] + cmp r4, r0 + blt _08043D88 + b _0804405E +_08043D88: + ldr r5, _08043DB0 + movs r2, #0x80 + lsls r2, r2, #0xa + adds r1, r0, #0 +_08043D90: + lsls r0, r4, #2 + adds r0, r0, r5 + ldr r0, [r0] + ands r0, r2 + adds r3, r4, #1 + cmp r0, #0 + beq _08043DA4 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043DA4: + adds r4, r3, #0 + cmp r4, r1 + blt _08043D90 + b _0804405E + .align 2, 0 +_08043DAC: .4byte gUnknown_2023D10 +_08043DB0: .4byte gUnknown_2023F50 +_08043DB4: + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + adds r3, r4, #1 + cmp r0, r6 + bne _08043DCC + strb r6, [r7] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043DCC: + adds r4, r3, #0 + ldrb r1, [r5] + cmp r4, r1 + blt _08043DB4 + b _0804405E +_08043DD6: + movs r4, #0 + ldr r0, _08043E14 + ldrb r0, [r0] + cmp r4, r0 + blt _08043DE2 + b _0804405E +_08043DE2: + ldr r2, _08043E18 + mov r8, r2 + adds r2, r0, #0 + movs r5, #0x58 +_08043DEA: + adds r0, r4, #0 + muls r0, r5, r0 + mov r3, r8 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + adds r3, r4, #1 + cmp r0, r6 + bne _08043E0C + ldrh r0, [r1, #0x28] + cmp r0, #0 + beq _08043E0C + strb r6, [r7] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043E0C: + adds r4, r3, #0 + cmp r4, r2 + blt _08043DEA + b _0804405E + .align 2, 0 +_08043E14: .4byte gUnknown_2023D10 +_08043E18: .4byte gUnknown_2023D28 +_08043E1C: + movs r4, #0 + ldr r0, _08043E54 + ldrb r0, [r0] + cmp r4, r0 + blt _08043E28 + b _0804405E +_08043E28: + ldr r7, _08043E58 + adds r1, r0, #0 + movs r5, #0x58 + ldr r2, _08043E5C +_08043E30: + adds r0, r4, #0 + muls r0, r5, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + adds r3, r4, #1 + cmp r0, r6 + bne _08043E4C + cmp r4, sl + beq _08043E4C + strb r6, [r2] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043E4C: + adds r4, r3, #0 + cmp r4, r1 + blt _08043E30 + b _0804405E + .align 2, 0 +_08043E54: .4byte gUnknown_2023D10 +_08043E58: .4byte gUnknown_2023D28 +_08043E5C: .4byte gUnknown_2023EAE +_08043E60: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08043EB0 + ldrb r0, [r0] + cmp r4, r0 + blt _08043E76 + b _0804405E +_08043E76: + ldr r7, _08043EB4 +_08043E78: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + beq _08043EA4 + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, r6 + bne _08043EA4 + ldr r0, _08043EB8 + strb r6, [r0] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043EA4: + adds r4, #1 + ldr r0, _08043EB0 + ldrb r0, [r0] + cmp r4, r0 + blt _08043E78 + b _0804405E + .align 2, 0 +_08043EB0: .4byte gUnknown_2023D10 +_08043EB4: .4byte gUnknown_2023D28 +_08043EB8: .4byte gUnknown_2023EAE +_08043EBC: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08043F0C + ldrb r0, [r0] + cmp r4, r0 + blt _08043ED2 + b _0804405E +_08043ED2: + ldr r7, _08043F10 +_08043ED4: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _08043F00 + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, r6 + bne _08043F00 + ldr r0, _08043F14 + strb r6, [r0] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08043F00: + adds r4, #1 + ldr r0, _08043F0C + ldrb r0, [r0] + cmp r4, r0 + blt _08043ED4 + b _0804405E + .align 2, 0 +_08043F0C: .4byte gUnknown_2023D10 +_08043F10: .4byte gUnknown_2023D28 +_08043F14: .4byte gUnknown_2023EAE + thumb_func_end sub_08042468 + + thumb_func_start sub_08043F18 +sub_08043F18: @ 0x08043F18 + ldr r0, _08043F30 + bl sub_080440D8 + ldr r0, _08043F34 + strb r6, [r0, #0x17] +_08043F22: + ldr r0, _08043F38 + ldr r0, [r0] + adds r0, #0x7f + mov r1, sb + subs r1, #1 + strb r1, [r0] + b _0804405E + .align 2, 0 +_08043F30: .4byte gUnknown_8289A31 +_08043F34: .4byte gUnknown_2024118 +_08043F38: .4byte gUnknown_2024140 +_08043F3C: + ldr r0, _08043F58 + bl sub_080440D8 + ldr r0, _08043F5C + mov r5, sl + strb r5, [r0, #0x17] + ldr r0, _08043F60 + ldr r0, [r0] + adds r0, #0x7f + mov r1, sb + subs r1, #1 + strb r1, [r0] + b _0804407A + .align 2, 0 +_08043F58: .4byte gUnknown_8289A31 +_08043F5C: .4byte gUnknown_2024118 +_08043F60: .4byte gUnknown_2024140 +_08043F64: + strb r1, [r7] + ldr r0, [r2] + ldr r1, _08043F78 + ands r0, r1 + str r0, [r2] + ldr r0, _08043F7C + bl sub_080440D8 + b _08044008 + .align 2, 0 +_08043F78: .4byte 0xFFF7FFFF +_08043F7C: .4byte gUnknown_8289A40 +_08043F80: + ldr r0, _08043FD0 + bl sub_080440D8 + ldr r1, _08043FD4 + ldr r0, [sp, #0x18] + adds r1, r0, r1 + ldr r0, [r1] + ldr r2, _08043FD8 + ands r0, r2 + str r0, [r1] + ldr r0, _08043FDC + strb r4, [r0, #0x17] + ldr r1, _08043FE0 + movs r4, #0xfd + strb r4, [r1] + movs r0, #4 + strb r0, [r1, #1] + ldr r2, _08043FE4 + ldrb r0, [r2] + strb r0, [r1, #2] + ldr r3, _08043FE8 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _08043FEC + strb r4, [r1] + movs r0, #9 + strb r0, [r1, #1] + ldr r0, _08043FF0 + ldrb r0, [r0] + strb r0, [r1, #2] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1, #3] + b _0804405E + .align 2, 0 +_08043FD0: .4byte gUnknown_82899DA +_08043FD4: .4byte gUnknown_2023F50 +_08043FD8: .4byte 0xFFEFFFFF +_08043FDC: .4byte gUnknown_2024118 +_08043FE0: .4byte gUnknown_2022C0C +_08043FE4: .4byte gUnknown_2023D08 +_08043FE8: .4byte gUnknown_2023D12 +_08043FEC: .4byte gUnknown_2022C1C +_08043FF0: .4byte gUnknown_2023EAE +_08043FF4: + strb r1, [r7] + ldr r0, [r2] + ldr r1, _0804401C + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r1, _08044020 + ldr r0, _08044024 + str r0, [r1] +_08044008: + ldr r0, _08044028 + ldr r0, [r0] + adds r0, #0xd8 + strb r4, [r0] +_08044010: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + b _0804405E + .align 2, 0 +_0804401C: .4byte 0xFFF7FFFF +_08044020: .4byte gUnknown_2023EB8 +_08044024: .4byte gUnknown_8289A49 +_08044028: .4byte gUnknown_2024140 +_0804402C: + movs r4, #0 + ldr r0, _0804408C + ldrb r1, [r0] + cmp r4, r1 + bge _0804405E + ldr r0, _08044090 + adds r2, r1, #0 + adds r1, r0, #0 + adds r1, #0x20 + ldr r3, _08044094 +_08044040: + ldrb r0, [r1] + cmp r0, r6 + bne _08044056 + cmp r4, sl + beq _08044056 + strb r6, [r3] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_08044056: + adds r1, #0x58 + adds r4, #1 + cmp r4, r2 + blt _08044040 +_0804405E: + mov r1, sb + cmp r1, #0 + beq _0804407A +_08044064: + ldr r2, [sp, #4] + cmp r2, #0xb + bhi _0804407A + ldr r1, _08044094 + ldrb r0, [r1] + cmp r0, #0xff + beq _0804407A + adds r1, r0, #0 + mov r0, sl + bl sub_0813114C +_0804407A: + mov r0, sb + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0804408C: .4byte gUnknown_2023D10 +_08044090: .4byte gUnknown_2023D28 +_08044094: .4byte gUnknown_2023EAE + thumb_func_end sub_08043F18 + + thumb_func_start sub_08044098 +sub_08044098: @ 0x08044098 + ldr r1, _080440C4 + str r0, [r1] + ldr r0, _080440C8 + ldr r0, [r0] + ldr r2, [r0, #0xc] + adds r3, r2, #0 + adds r3, #0x20 + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r2, r2, r0 + ldr r1, _080440CC + ldr r0, [r1] + str r0, [r2] + ldr r0, _080440D0 + str r0, [r1] + ldr r1, _080440D4 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080440C4: .4byte gUnknown_2023EB8 +_080440C8: .4byte gUnknown_202414C +_080440CC: .4byte gUnknown_3005A64 +_080440D0: .4byte sub_0803DC58 +_080440D4: .4byte gUnknown_2023D27 + thumb_func_end sub_08044098 + + thumb_func_start sub_080440D8 +sub_080440D8: @ 0x080440D8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F73C + ldr r0, _0804410C + str r4, [r0] + ldr r0, _08044110 + ldr r0, [r0] + ldr r2, [r0, #0xc] + adds r3, r2, #0 + adds r3, #0x20 + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r2, r2, r0 + ldr r1, _08044114 + ldr r0, [r1] + str r0, [r2] + ldr r0, _08044118 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804410C: .4byte gUnknown_2023EB8 +_08044110: .4byte gUnknown_202414C +_08044114: .4byte gUnknown_3005A64 +_08044118: .4byte sub_0803DCCC + thumb_func_end sub_080440D8 + + thumb_func_start sub_0804411C +sub_0804411C: @ 0x0804411C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r0, #0 + mov sl, r0 + movs r1, #0 + str r1, [sp, #0xc] + add r0, sp, #4 + strb r1, [r0] + ldr r4, _08044168 + ldr r1, _0804416C + movs r0, #0x58 + muls r0, r7, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _08044174 + ldr r1, _08044170 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #7] + ldrb r0, [r0, #0x1a] + b _08044188 + .align 2, 0 +_08044168: .4byte gUnknown_2023EAC +_0804416C: .4byte gUnknown_2023D28 +_08044170: .4byte gUnknown_20240A8 +_08044174: + ldrh r0, [r4] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08044188: + mov sb, r0 + ldr r1, _080441B0 + ldr r0, _080441B4 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + str r0, [sp, #0x14] + cmp r0, #0xaf + bne _080441BC + ldr r1, _080441B8 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r3, [r0, #7] + mov r8, r3 + ldrb r0, [r0, #0x1a] + b _080441D2 + .align 2, 0 +_080441B0: .4byte gUnknown_2023D28 +_080441B4: .4byte gUnknown_2023EAF +_080441B8: .4byte gUnknown_20240A8 +_080441BC: + ldr r0, [sp, #0x14] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, [sp, #0x14] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080441D2: + str r0, [sp, #0x10] + ldr r2, _08044208 + ldr r0, _0804420C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r4, [r0, #0x2e] + cmp r4, #0xaf + beq _080441F2 + adds r0, r4, #0 + bl sub_080D6CF8 + adds r0, r4, #0 + bl sub_080D6D1C +_080441F2: + ldr r0, [sp, #8] + cmp r0, #4 + bls _080441FC + bl _0804546A +_080441FC: + lsls r0, r0, #2 + ldr r1, _08044210 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08044208: .4byte gUnknown_2023D28 +_0804420C: .4byte gUnknown_2023EB0 +_08044210: .4byte _08044214 +_08044214: @ jump table + .4byte _08044228 @ case 0 + .4byte _080442C8 @ case 1 + .4byte _0804546A @ case 2 + .4byte _08044EC0 @ case 3 + .4byte _08045310 @ case 4 +_08044228: + cmp r5, #0x17 + beq _08044258 + cmp r5, #0x20 + beq _08044234 + bl _0804546A +_08044234: + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08044244 + bl _0804546A +_08044244: + ldr r0, _08044254 + ldr r0, [r0] + adds r0, #0x4a + movs r1, #2 + strb r1, [r0] + bl _0804546A + .align 2, 0 +_08044254: .4byte gUnknown_2024140 +_08044258: + ldr r1, _080442B0 + mov r8, r1 + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x18 + adds r1, r1, r0 + movs r2, #6 + movs r3, #7 + mov sl, r3 +_0804426E: + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _0804427C + strb r2, [r1] + movs r5, #5 + str r5, [sp, #0xc] +_0804427C: + adds r1, #1 + movs r0, #1 + rsbs r0, r0, #0 + add sl, r0 + mov r3, sl + cmp r3, #0 + bge _0804426E + ldr r5, [sp, #0xc] + cmp r5, #0 + bne _08044294 + bl _0804546A +_08044294: + ldr r0, _080442B4 + strb r7, [r0, #0x17] + ldr r0, _080442B8 + strb r7, [r0] + ldr r1, _080442BC + ldr r0, _080442C0 + strb r7, [r0] + strb r7, [r1] + ldr r0, _080442C4 + bl sub_08044098 + bl _0804546A + .align 2, 0 +_080442B0: .4byte gUnknown_2023D28 +_080442B4: .4byte gUnknown_2024118 +_080442B8: .4byte gUnknown_2023EB3 +_080442BC: .4byte gUnknown_2023D08 +_080442C0: .4byte gUnknown_2023EAF +_080442C4: .4byte gUnknown_8289D36 +_080442C8: + ldr r1, _080442F0 + movs r0, #0x58 + muls r0, r7, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + mov r8, r1 + cmp r0, #0 + bne _080442DC + bl _0804546A +_080442DC: + subs r0, r5, #1 + cmp r0, #0x2a + bls _080442E6 + bl _08044E16 +_080442E6: + lsls r0, r0, #2 + ldr r1, _080442F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080442F0: .4byte gUnknown_2023D28 +_080442F4: .4byte _080442F8 +_080442F8: @ jump table + .4byte _080443A4 @ case 0 + .4byte _08044B84 @ case 1 + .4byte _08044C48 @ case 2 + .4byte _08044BB4 @ case 3 + .4byte _08044BE8 @ case 4 + .4byte _08044C18 @ case 5 + .4byte _080443F0 @ case 6 + .4byte _08044C84 @ case 7 + .4byte _08044CB4 @ case 8 + .4byte _080445BC @ case 9 + .4byte _0804463C @ case 10 + .4byte _080446B8 @ case 11 + .4byte _0804474C @ case 12 + .4byte _080447E0 @ case 13 + .4byte _08044874 @ case 14 + .4byte _080448DC @ case 15 + .4byte _08044930 @ case 16 + .4byte _08044984 @ case 17 + .4byte _080449EC @ case 18 + .4byte _08044A50 @ case 19 + .4byte _08044A9C @ case 20 + .4byte _08044E16 @ case 21 + .4byte _080444F0 @ case 22 + .4byte _08044E16 @ case 23 + .4byte _08044E16 @ case 24 + .4byte _08044E16 @ case 25 + .4byte _08044E16 @ case 26 + .4byte _08044DE0 @ case 27 + .4byte _08044E16 @ case 28 + .4byte _08044E16 @ case 29 + .4byte _08044E16 @ case 30 + .4byte _08044E16 @ case 31 + .4byte _08044E16 @ case 32 + .4byte _08044E16 @ case 33 + .4byte _08044E16 @ case 34 + .4byte _08044E16 @ case 35 + .4byte _08044E16 @ case 36 + .4byte _08044E16 @ case 37 + .4byte _08044E16 @ case 38 + .4byte _08044E16 @ case 39 + .4byte _08044E16 @ case 40 + .4byte _08044E16 @ case 41 + .4byte _0804455C @ case 42 +_080443A4: + movs r0, #0x58 + muls r0, r7, r0 + mov r1, r8 + adds r2, r0, r1 + ldrh r0, [r2, #0x2c] + ldrh r1, [r2, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _080443BA + bl _08044E16 +_080443BA: + cmp r6, #0 + beq _080443C2 + bl _08044E16 +_080443C2: + ldr r4, _080443E8 + mov r3, sb + str r3, [r4] + ldrh r3, [r2, #0x28] + mov r5, sb + adds r0, r3, r5 + ldrh r1, [r2, #0x2c] + cmp r0, r1 + ble _080443D8 + subs r0, r1, r3 + str r0, [r4] +_080443D8: + ldr r0, [r4] + rsbs r0, r0, #0 + str r0, [r4] + ldr r0, _080443EC + bl sub_08044098 + b _08044742 + .align 2, 0 +_080443E8: .4byte gUnknown_2023E94 +_080443EC: .4byte gUnknown_8289D4C +_080443F0: + cmp r6, #0 + beq _080443F8 + bl _08044E16 +_080443F8: + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804441C + ldr r1, _08044414 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08044418 + b _0804442A + .align 2, 0 +_08044414: .4byte gUnknown_2023D12 +_08044418: .4byte gUnknown_2024190 +_0804441C: + ldr r1, _08044498 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0804449C +_0804442A: + adds r4, r1, r0 + movs r1, #0 + mov sl, r1 + add r5, sp, #4 +_08044432: + mov r1, sl + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r1, sl + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + strb r0, [r5] + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r6, #0 + beq _08044462 + ldrb r0, [r5] + cmp r0, #0 + beq _0804446C +_08044462: + movs r2, #1 + add sl, r2 + mov r3, sl + cmp r3, #3 + ble _08044432 +_0804446C: + mov r5, sl + cmp r5, #4 + bne _08044476 + bl _08044E16 +_08044476: + lsls r2, r5, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + add r0, sp, #4 + ldrb r0, [r0] + mov r3, sb + adds r1, r0, r3 + cmp r1, r2 + ble _080444A0 + add r0, sp, #4 + strb r2, [r0] + b _080444A4 + .align 2, 0 +_08044498: .4byte gUnknown_2023D12 +_0804449C: .4byte gUnknown_20243E8 +_080444A0: + add r0, sp, #4 + strb r1, [r0] +_080444A4: + ldr r1, _080444E4 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + strb r6, [r1, #2] + lsrs r0, r6, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r0, _080444E8 + bl sub_08044098 + mov r1, sl + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + add r5, sp, #4 + str r5, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldr r0, _080444EC + ldrb r0, [r0] + bl sub_0803F440 + movs r0, #3 + str r0, [sp, #0xc] + bl _08044E1E + .align 2, 0 +_080444E4: .4byte gUnknown_2022C0C +_080444E8: .4byte gUnknown_8289D69 +_080444EC: .4byte gUnknown_2023D08 +_080444F0: + ldr r0, _08044544 + movs r1, #0x58 + muls r1, r7, r1 + adds r0, #0x18 + adds r1, r1, r0 + movs r2, #6 + movs r3, #7 + mov sl, r3 +_08044500: + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _0804450E + strb r2, [r1] + movs r5, #5 + str r5, [sp, #0xc] +_0804450E: + adds r1, #1 + movs r0, #1 + rsbs r0, r0, #0 + add sl, r0 + mov r3, sl + cmp r3, #0 + bge _08044500 + movs r5, #8 + mov sl, r5 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0804452A + bl _0804546A +_0804452A: + ldr r0, _08044548 + strb r7, [r0, #0x17] + ldr r0, _0804454C + strb r7, [r0] + ldr r1, _08044550 + ldr r0, _08044554 + strb r7, [r0] + strb r7, [r1] + ldr r0, _08044558 + bl sub_08044098 + bl _08044E16 + .align 2, 0 +_08044544: .4byte gUnknown_2023D28 +_08044548: .4byte gUnknown_2024118 +_0804454C: .4byte gUnknown_2023EB3 +_08044550: .4byte gUnknown_2023D08 +_08044554: .4byte gUnknown_2023EAF +_08044558: .4byte gUnknown_8289D36 +_0804455C: + movs r0, #0x58 + muls r0, r7, r0 + mov r2, r8 + adds r1, r0, r2 + ldrh r0, [r1, #0x28] + ldrh r3, [r1, #0x2c] + cmp r0, r3 + blo _08044570 + bl _08044E16 +_08044570: + cmp r6, #0 + beq _08044578 + bl _08044E16 +_08044578: + ldr r3, _080445B4 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #4 + str r0, [r3] + cmp r0, #0 + bne _08044588 + movs r0, #1 + str r0, [r3] +_08044588: + ldrh r2, [r1, #0x28] + ldr r0, [r3] + adds r0, r2, r0 + ldrh r1, [r1, #0x2c] + cmp r0, r1 + ble _08044598 + subs r0, r1, r2 + str r0, [r3] +_08044598: + ldr r0, [r3] + rsbs r0, r0, #0 + str r0, [r3] + ldr r0, _080445B8 + bl sub_08044098 + movs r0, #4 + str r0, [sp, #0xc] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_0813117C + bl _08044E16 + .align 2, 0 +_080445B4: .4byte gUnknown_2023E94 +_080445B8: .4byte gUnknown_8289D79 +_080445BC: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + str r1, [sp, #0x18] + adds r4, r1, #0 + add r4, r8 + ldrh r0, [r4, #0x2c] + ldrh r1, [r4, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _080445D6 + bl _08044E16 +_080445D6: + cmp r6, #0 + beq _080445DE + bl _08044E16 +_080445DE: + ldr r1, _08044634 + movs r0, #0xfd + strb r0, [r1] + movs r0, #8 + strb r0, [r1, #1] + strb r6, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r5, _08044638 + ldrh r0, [r4, #0x2c] + mov r1, sb + bl __divsi3 + str r0, [r5] + cmp r0, #0 + bne _08044602 + movs r0, #1 + str r0, [r5] +_08044602: + ldrh r2, [r4, #0x28] + ldr r0, [r5] + adds r0, r2, r0 + ldrh r1, [r4, #0x2c] + cmp r0, r1 + ble _08044612 + subs r0, r1, r2 + str r0, [r5] +_08044612: + ldr r0, [r5] + rsbs r0, r0, #0 + 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_0806E30C + lsls r0, r0, #0x18 + cmp r0, #0 + bge _08044630 + b _080447BC +_08044630: + b _080447D0 + .align 2, 0 +_08044634: .4byte gUnknown_2022C0C +_08044638: .4byte gUnknown_2023E94 +_0804463C: + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + str r5, [sp, #0x1c] + add r5, r8 + ldrh r0, [r5, #0x2c] + ldrh r1, [r5, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _08044654 + bl _08044E16 +_08044654: + cmp r6, #0 + beq _0804465C + bl _08044E16 +_0804465C: + ldr r1, _080446B0 + movs r0, #0xfd + strb r0, [r1] + movs r0, #8 + strb r0, [r1, #1] + movs r6, #1 + strb r6, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r4, _080446B4 + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08044680 + str r6, [r4] +_08044680: + ldrh r2, [r5, #0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, #0x2c] + cmp r0, r1 + ble _08044690 + subs r0, r1, r2 + str r0, [r4] +_08044690: + ldr r0, [r4] + rsbs r0, r0, #0 + str r0, [r4] + mov r0, r8 + adds r0, #0x48 + ldr r1, [sp, #0x1c] + adds r0, r1, r0 + ldr r0, [r0] + movs r1, #1 + bl sub_0806E30C + lsls r0, r0, #0x18 + cmp r0, #0 + bge _080446AE + b _0804484E +_080446AE: + b _08044864 + .align 2, 0 +_080446B0: .4byte gUnknown_2022C0C +_080446B4: .4byte gUnknown_2023E94 +_080446B8: + movs r0, #0x58 + adds r3, r7, #0 + muls r3, r0, r3 + str r3, [sp, #0x20] + adds r5, r3, #0 + add r5, r8 + ldrh r0, [r5, #0x2c] + ldrh r1, [r5, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _080446D0 + b _08044E16 +_080446D0: + cmp r6, #0 + beq _080446D6 + b _08044E16 +_080446D6: + ldr r1, _08044730 + movs r0, #0xfd + strb r0, [r1] + movs r0, #8 + strb r0, [r1, #1] + movs r0, #2 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r4, _08044734 + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _080446FC + movs r0, #1 + str r0, [r4] +_080446FC: + ldrh r2, [r5, #0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, #0x2c] + cmp r0, r1 + ble _0804470C + subs r0, r1, r2 + str r0, [r4] +_0804470C: + ldr r0, [r4] + rsbs r0, r0, #0 + str r0, [r4] + mov r0, r8 + adds r0, #0x48 + ldr r5, [sp, #0x20] + adds r0, r5, r0 + ldr r0, [r0] + movs r1, #2 + bl sub_0806E30C + lsls r0, r0, #0x18 + cmp r0, #0 + bge _0804473C + ldr r0, _08044738 + bl sub_08044098 + b _08044742 + .align 2, 0 +_08044730: .4byte gUnknown_2022C0C +_08044734: .4byte gUnknown_2023E94 +_08044738: .4byte gUnknown_8289DAC +_0804473C: + ldr r0, _08044748 + bl sub_08044098 +_08044742: + movs r0, #4 + str r0, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044748: .4byte gUnknown_8289D4C +_0804474C: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + str r1, [sp, #0x24] + adds r5, r1, #0 + add r5, r8 + ldrh r0, [r5, #0x2c] + ldrh r1, [r5, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _08044764 + b _08044E16 +_08044764: + cmp r6, #0 + beq _0804476A + b _08044E16 +_0804476A: + ldr r1, _080447C4 + movs r0, #0xfd + strb r0, [r1] + movs r0, #8 + strb r0, [r1, #1] + movs r0, #3 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r4, _080447C8 + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08044790 + movs r0, #1 + str r0, [r4] +_08044790: + ldrh r2, [r5, #0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, #0x2c] + cmp r0, r1 + ble _080447A0 + subs r0, r1, r2 + str r0, [r4] +_080447A0: + ldr r0, [r4] + rsbs r0, r0, #0 + str r0, [r4] + mov r0, r8 + adds r0, #0x48 + ldr r2, [sp, #0x24] + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #3 + bl sub_0806E30C + lsls r0, r0, #0x18 + cmp r0, #0 + bge _080447D0 +_080447BC: + ldr r0, _080447CC + bl sub_08044098 + b _080447D6 + .align 2, 0 +_080447C4: .4byte gUnknown_2022C0C +_080447C8: .4byte gUnknown_2023E94 +_080447CC: .4byte gUnknown_8289DAC +_080447D0: + ldr r0, _080447DC + bl sub_08044098 +_080447D6: + movs r3, #4 + str r3, [sp, #0xc] + b _08044E1E + .align 2, 0 +_080447DC: .4byte gUnknown_8289D4C +_080447E0: + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + str r5, [sp, #0x28] + add r5, r8 + ldrh r0, [r5, #0x2c] + ldrh r1, [r5, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + bls _080447F6 + b _08044E16 +_080447F6: + cmp r6, #0 + beq _080447FC + b _08044E16 +_080447FC: + ldr r1, _08044858 + movs r0, #0xfd + strb r0, [r1] + movs r0, #8 + strb r0, [r1, #1] + movs r0, #4 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r4, _0804485C + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08044822 + movs r0, #1 + str r0, [r4] +_08044822: + ldrh r2, [r5, #0x28] + ldr r0, [r4] + adds r0, r2, r0 + ldrh r1, [r5, #0x2c] + cmp r0, r1 + ble _08044832 + subs r0, r1, r2 + str r0, [r4] +_08044832: + ldr r0, [r4] + rsbs r0, r0, #0 + str r0, [r4] + mov r0, r8 + adds r0, #0x48 + ldr r1, [sp, #0x28] + adds r0, r1, r0 + ldr r0, [r0] + movs r1, #4 + bl sub_0806E30C + lsls r0, r0, #0x18 + cmp r0, #0 + bge _08044864 +_0804484E: + ldr r0, _08044860 + bl sub_08044098 + b _0804486A + .align 2, 0 +_08044858: .4byte gUnknown_2022C0C +_0804485C: .4byte gUnknown_2023E94 +_08044860: .4byte gUnknown_8289DAC +_08044864: + ldr r0, _08044870 + bl sub_08044098 +_0804486A: + movs r2, #4 + str r2, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044870: .4byte gUnknown_8289D4C +_08044874: + movs r0, #0x58 + muls r0, r7, r0 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, #0x28] + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _0804488C + b _08044E16 +_0804488C: + cmp r6, #0 + beq _08044892 + b _08044E16 +_08044892: + movs r0, #0x19 + ldrsb r0, [r5, r0] + cmp r0, #0xb + ble _0804489C + b _08044E16 +_0804489C: + ldr r1, _080448CC + movs r2, #0xfd + strb r2, [r1] + movs r0, #5 + strb r0, [r1, #1] + movs r0, #1 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r1, _080448D0 + strb r2, [r1] + strb r6, [r1, #1] + movs r0, #0xd2 + strb r0, [r1, #2] + strb r6, [r1, #3] + subs r0, #0xd3 + strb r0, [r1, #4] + ldr r0, _080448D4 + strb r7, [r0] + ldr r1, _080448D8 + movs r0, #0x11 + strb r0, [r1, #0x1a] + movs r0, #0xf + b _08044A30 + .align 2, 0 +_080448CC: .4byte gUnknown_2022C0C +_080448D0: .4byte gUnknown_2022C1C +_080448D4: .4byte gUnknown_2023EB2 +_080448D8: .4byte gUnknown_2024118 +_080448DC: + movs r0, #0x58 + muls r0, r7, r0 + mov r1, r8 + adds r5, r0, r1 + ldrh r4, [r5, #0x28] + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _080448F4 + b _08044E16 +_080448F4: + cmp r6, #0 + beq _080448FA + b _08044E16 +_080448FA: + movs r0, #0x1a + ldrsb r0, [r5, r0] + cmp r0, #0xb + ble _08044904 + b _08044E16 +_08044904: + ldr r1, _08044924 + movs r0, #0xfd + strb r0, [r1] + movs r0, #5 + strb r0, [r1, #1] + movs r0, #2 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _08044928 + strb r7, [r0] + ldr r1, _0804492C + movs r0, #0x12 + strb r0, [r1, #0x1a] + movs r0, #0x10 + b _080449CA + .align 2, 0 +_08044924: .4byte gUnknown_2022C0C +_08044928: .4byte gUnknown_2023EB2 +_0804492C: .4byte gUnknown_2024118 +_08044930: + movs r0, #0x58 + muls r0, r7, r0 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, #0x28] + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _08044948 + b _08044E16 +_08044948: + cmp r6, #0 + beq _0804494E + b _08044E16 +_0804494E: + movs r0, #0x1b + ldrsb r0, [r5, r0] + cmp r0, #0xb + ble _08044958 + b _08044E16 +_08044958: + ldr r1, _08044978 + movs r0, #0xfd + strb r0, [r1] + movs r0, #5 + strb r0, [r1, #1] + movs r0, #3 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _0804497C + strb r7, [r0] + ldr r1, _08044980 + movs r0, #0x13 + strb r0, [r1, #0x1a] + movs r0, #0x11 + b _08044A30 + .align 2, 0 +_08044978: .4byte gUnknown_2022C0C +_0804497C: .4byte gUnknown_2023EB2 +_08044980: .4byte gUnknown_2024118 +_08044984: + movs r0, #0x58 + muls r0, r7, r0 + mov r1, r8 + adds r5, r0, r1 + ldrh r4, [r5, #0x28] + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _0804499C + b _08044E16 +_0804499C: + cmp r6, #0 + beq _080449A2 + b _08044E16 +_080449A2: + movs r0, #0x1c + ldrsb r0, [r5, r0] + cmp r0, #0xb + ble _080449AC + b _08044E16 +_080449AC: + ldr r1, _080449DC + movs r0, #0xfd + strb r0, [r1] + movs r0, #5 + strb r0, [r1, #1] + movs r0, #4 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _080449E0 + strb r7, [r0] + ldr r1, _080449E4 + movs r0, #0x14 + strb r0, [r1, #0x1a] + movs r0, #0x12 +_080449CA: + strb r0, [r1, #0x10] + strb r6, [r1, #0x11] + ldr r0, _080449E8 + bl sub_08044098 + movs r2, #5 + str r2, [sp, #0xc] + b _08044E1E + .align 2, 0 +_080449DC: .4byte gUnknown_2022C0C +_080449E0: .4byte gUnknown_2023EB2 +_080449E4: .4byte gUnknown_2024118 +_080449E8: .4byte gUnknown_8289DD6 +_080449EC: + movs r0, #0x58 + muls r0, r7, r0 + mov r3, r8 + adds r5, r0, r3 + ldrh r4, [r5, #0x28] + ldrh r0, [r5, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _08044A04 + b _08044E16 +_08044A04: + cmp r6, #0 + beq _08044A0A + b _08044E16 +_08044A0A: + movs r0, #0x1d + ldrsb r0, [r5, r0] + cmp r0, #0xb + ble _08044A14 + b _08044E16 +_08044A14: + ldr r1, _08044A40 + movs r0, #0xfd + strb r0, [r1] + movs r0, #5 + strb r0, [r1, #1] + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _08044A44 + strb r7, [r0] + ldr r1, _08044A48 + movs r0, #0x15 + strb r0, [r1, #0x1a] + movs r0, #0x13 +_08044A30: + strb r0, [r1, #0x10] + strb r6, [r1, #0x11] + ldr r0, _08044A4C + bl sub_08044098 + movs r5, #5 + str r5, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044A40: .4byte gUnknown_2022C0C +_08044A44: .4byte gUnknown_2023EB2 +_08044A48: .4byte gUnknown_2024118 +_08044A4C: .4byte gUnknown_8289DD6 +_08044A50: + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + mov r1, r8 + adds r0, r5, r1 + ldrh r4, [r0, #0x28] + ldrh r0, [r0, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _08044A6A + b _08044E16 +_08044A6A: + cmp r6, #0 + beq _08044A70 + b _08044E16 +_08044A70: + mov r0, r8 + adds r0, #0x50 + adds r1, r5, r0 + ldr r2, [r1] + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08044A86 + b _08044E16 +_08044A86: + orrs r2, r3 + str r2, [r1] + ldr r0, _08044A98 + bl sub_08044098 + movs r2, #2 + str r2, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044A98: .4byte gUnknown_8289DF1 +_08044A9C: + cmp r6, #0 + beq _08044AA2 + b _08044E16 +_08044AA2: + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + mov r3, r8 + adds r0, r5, r3 + ldrh r4, [r0, #0x28] + ldrh r0, [r0, #0x2c] + mov r1, sb + bl __divsi3 + cmp r4, r0 + ble _08044ABC + b _08044E16 +_08044ABC: + movs r0, #0 + mov sl, r0 + adds r0, r5, #1 + mov r1, r8 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xb + ble _08044AEC + mov r0, r8 + adds r0, #0x19 + adds r1, r5, r0 +_08044AD8: + adds r1, #1 + movs r2, #1 + add sl, r2 + mov r3, sl + cmp r3, #4 + bgt _08044AEC + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0xb + bgt _08044AD8 +_08044AEC: + mov r5, sl + cmp r5, #5 + bne _08044AF4 + b _08044E16 +_08044AF4: + movs r0, #0x58 + muls r0, r7, r0 + adds r4, r0, #1 + ldr r5, _08044B6C +_08044AFC: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r0, r4 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xc + beq _08044AFC + ldr r1, _08044B70 + movs r2, #0 + movs r3, #0xfd + strb r3, [r1] + movs r0, #5 + strb r0, [r1, #1] + mov r0, sl + adds r0, #1 + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _08044B74 + strb r3, [r0] + strb r2, [r0, #1] + movs r1, #0xd1 + strb r1, [r0, #2] + strb r2, [r0, #3] + strb r2, [r0, #4] + movs r1, #0xd2 + strb r1, [r0, #5] + strb r2, [r0, #6] + subs r1, #0xd3 + strb r1, [r0, #7] + ldr r0, _08044B78 + strb r7, [r0] + ldr r1, _08044B7C + mov r0, sl + adds r0, #0x21 + strb r0, [r1, #0x1a] + adds r0, #6 + strb r0, [r1, #0x10] + strb r2, [r1, #0x11] + ldr r0, _08044B80 + bl sub_08044098 + movs r0, #5 + str r0, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044B6C: .4byte gUnknown_2023D40 +_08044B70: .4byte gUnknown_2022C0C +_08044B74: .4byte gUnknown_2022C1C +_08044B78: .4byte gUnknown_2023EB2 +_08044B7C: .4byte gUnknown_2024118 +_08044B80: .4byte gUnknown_8289DD6 +_08044B84: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x4c + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + bne _08044B9C + b _08044E16 +_08044B9C: + movs r0, #0x41 + rsbs r0, r0, #0 + ands r2, r0 + str r2, [r1] + ldr r0, _08044BB0 + bl sub_08044098 + movs r1, #1 + str r1, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044BB0: .4byte gUnknown_8289C8E +_08044BB4: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x4c + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x88 + ands r0, r2 + cmp r0, #0 + bne _08044BCC + b _08044E16 +_08044BCC: + ldr r0, _08044BE0 + ands r2, r0 + str r2, [r1] + ldr r0, _08044BE4 + bl sub_08044098 + movs r2, #1 + str r2, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044BE0: .4byte 0xFFFFF077 +_08044BE4: .4byte gUnknown_8289CA6 +_08044BE8: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x4c + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _08044C00 + b _08044E16 +_08044C00: + movs r0, #0x11 + rsbs r0, r0, #0 + ands r2, r0 + str r2, [r1] + ldr r0, _08044C14 + bl sub_08044098 + movs r3, #1 + str r3, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044C14: .4byte gUnknown_8289CBE +_08044C18: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x4c + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + bne _08044C30 + b _08044E16 +_08044C30: + movs r0, #0x21 + rsbs r0, r0, #0 + ands r2, r0 + str r2, [r1] + ldr r0, _08044C44 + bl sub_08044098 + movs r5, #1 + str r5, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044C44: .4byte gUnknown_8289CD6 +_08044C48: + movs r0, #0x58 + adds r3, r7, #0 + muls r3, r0, r3 + mov r0, r8 + adds r0, #0x4c + adds r2, r3, r0 + ldr r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08044C60 + b _08044E16 +_08044C60: + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + mov r1, r8 + adds r1, #0x50 + adds r1, r3, r1 + ldr r0, [r1] + ldr r2, _08044C7C + ands r0, r2 + str r0, [r1] + ldr r0, _08044C80 + b _08044DCA + .align 2, 0 +_08044C7C: .4byte 0xF7FFFFFF +_08044C80: .4byte gUnknown_8289CEE +_08044C84: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x50 + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #7 + ands r0, r2 + cmp r0, #0 + bne _08044C9C + b _08044E16 +_08044C9C: + movs r0, #8 + rsbs r0, r0, #0 + ands r2, r0 + str r2, [r1] + ldr r0, _08044CB0 + bl sub_08044098 + movs r1, #2 + str r1, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044CB0: .4byte gUnknown_8289D06 +_08044CB4: + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + mov r0, r8 + adds r0, #0x4c + adds r4, r5, r0 + ldr r2, [r4] + ldrb r0, [r4] + cmp r0, #0 + bne _08044CDA + mov r0, r8 + adds r0, #0x50 + adds r0, r5, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08044CDA + b _08044E16 +_08044CDA: + movs r3, #0 + mov sl, r3 + movs r0, #0x88 + ands r2, r0 + cmp r2, #0 + beq _08044CF2 + ldr r0, _08044D80 + ldr r1, _08044D84 + bl sub_080088B8 + movs r0, #1 + mov sl, r0 +_08044CF2: + ldr r0, [r4] + movs r1, #7 + mov sb, r1 + ands r0, r1 + mov r6, r8 + adds r6, #0x50 + cmp r0, #0 + beq _08044D18 + adds r2, r5, r6 + ldr r0, [r2] + ldr r1, _08044D88 + ands r0, r1 + str r0, [r2] + ldr r0, _08044D80 + ldr r1, _08044D8C + bl sub_080088B8 + movs r2, #1 + add sl, r2 +_08044D18: + ldr r0, [r4] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08044D2E + ldr r0, _08044D80 + ldr r1, _08044D90 + bl sub_080088B8 + movs r3, #1 + add sl, r3 +_08044D2E: + ldr r0, [r4] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08044D44 + ldr r0, _08044D80 + ldr r1, _08044D94 + bl sub_080088B8 + movs r0, #1 + add sl, r0 +_08044D44: + ldr r0, [r4] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08044D5A + ldr r0, _08044D80 + ldr r1, _08044D98 + bl sub_080088B8 + movs r1, #1 + add sl, r1 +_08044D5A: + adds r0, r5, r6 + ldr r0, [r0] + mov r2, sb + ands r0, r2 + cmp r0, #0 + beq _08044D72 + ldr r0, _08044D80 + ldr r1, _08044D9C + bl sub_080088B8 + movs r3, #1 + add sl, r3 +_08044D72: + mov r5, sl + cmp r5, #1 + bgt _08044DA4 + ldr r1, _08044DA0 + movs r0, #0 + b _08044DA8 + .align 2, 0 +_08044D80: .4byte gUnknown_2022C0C +_08044D84: .4byte gUnknown_85ABC54 +_08044D88: .4byte 0xF7FFFFFF +_08044D8C: .4byte gUnknown_85ABC50 +_08044D90: .4byte gUnknown_85ABC5B +_08044D94: .4byte gUnknown_85ABC57 +_08044D98: .4byte gUnknown_85ABC5E +_08044D9C: .4byte gUnknown_85ABC62 +_08044DA0: .4byte gUnknown_2023FD6 +_08044DA4: + ldr r1, _08044DD4 + movs r0, #1 +_08044DA8: + strb r0, [r1, #5] + ldr r2, _08044DD8 + movs r0, #0x58 + adds r3, r7, #0 + muls r3, r0, r3 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r3, r0 + movs r1, #0 + str r1, [r0] + adds r2, #0x50 + adds r3, r3, r2 + ldr r0, [r3] + subs r1, #8 + ands r0, r1 + str r0, [r3] + ldr r0, _08044DDC +_08044DCA: + bl sub_08044098 + movs r0, #1 + str r0, [sp, #0xc] + b _08044E1E + .align 2, 0 +_08044DD4: .4byte gUnknown_2023FD6 +_08044DD8: .4byte gUnknown_2023D28 +_08044DDC: .4byte gUnknown_8289D1C +_08044DE0: + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x50 + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r2 + cmp r0, #0 + beq _08044E16 + ldr r0, _08044E3C + ands r2, r0 + str r2, [r1] + ldr r0, _08044E40 + ldr r1, _08044E44 + bl sub_080088B8 + ldr r0, _08044E48 + bl sub_08044098 + ldr r1, _08044E4C + movs r0, #0 + strb r0, [r1, #5] + movs r1, #2 + str r1, [sp, #0xc] +_08044E16: + ldr r2, [sp, #0xc] + cmp r2, #0 + bne _08044E1E + b _0804546A +_08044E1E: + ldr r0, _08044E50 + strb r7, [r0, #0x17] + ldr r0, _08044E54 + strb r7, [r0] + ldr r4, _08044E58 + ldr r0, _08044E5C + strb r7, [r0] + strb r7, [r4] + ldr r3, [sp, #0xc] + cmp r3, #1 + beq _08044E60 + cmp r3, #3 + beq _08044E66 + b _0804546A + .align 2, 0 +_08044E3C: .4byte 0xFFF0FFFF +_08044E40: .4byte gUnknown_2022C0C +_08044E44: .4byte gUnknown_85ABC67 +_08044E48: .4byte gUnknown_8289D1C +_08044E4C: .4byte gUnknown_2023FD6 +_08044E50: .4byte gUnknown_2024118 +_08044E54: .4byte gUnknown_2023EB3 +_08044E58: .4byte gUnknown_2023D08 +_08044E5C: .4byte gUnknown_2023EAF +_08044E60: + movs r0, #0x58 + muls r0, r7, r0 + b _080452CC +_08044E66: + ldr r4, _08044EB4 + movs r0, #0x58 + adds r3, r7, #0 + muls r3, r0, r3 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + beq _08044E82 + b _0804546A +_08044E82: + ldr r1, _08044EB8 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _08044EBC + mov r5, sl + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08044EA2 + b _0804546A +_08044EA2: + adds r1, r5, r3 + adds r0, r4, #0 + adds r0, #0x24 + adds r1, r1, r0 + add r0, sp, #4 + ldrb r0, [r0] + strb r0, [r1] + b _0804546A + .align 2, 0 +_08044EB4: .4byte gUnknown_2023D28 +_08044EB8: .4byte gUnknown_2023F60 +_08044EBC: .4byte gUnknown_82FACB4 +_08044EC0: + movs r7, #0 + ldr r0, _08044EF0 + ldrb r0, [r0] + cmp r7, r0 + blo _08044ECC + b _0804546A +_08044ECC: + ldr r4, _08044EF4 + ldr r1, _08044EF8 + movs r0, #0x58 + muls r0, r7, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _08044F00 + ldr r1, _08044EFC + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #7] + b _08044F10 + .align 2, 0 +_08044EF0: .4byte gUnknown_2023D10 +_08044EF4: .4byte gUnknown_2023EAC +_08044EF8: .4byte gUnknown_2023D28 +_08044EFC: .4byte gUnknown_20240A8 +_08044F00: + ldrh r0, [r4] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4] + bl sub_080D6D1C +_08044F10: + subs r0, r5, #2 + cmp r0, #0x1a + bls _08044F18 + b _080452B4 +_08044F18: + lsls r0, r0, #2 + ldr r1, _08044F24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08044F24: .4byte _08044F28 +_08044F28: @ jump table + .4byte _08044F94 @ case 0 + .4byte _08045084 @ case 1 + .4byte _08044FD0 @ case 2 + .4byte _0804500C @ case 3 + .4byte _08045048 @ case 4 + .4byte _080452B4 @ case 5 + .4byte _080450CC @ case 6 + .4byte _08045160 @ case 7 + .4byte _080452B4 @ case 8 + .4byte _080452B4 @ case 9 + .4byte _080452B4 @ case 10 + .4byte _080452B4 @ case 11 + .4byte _080452B4 @ case 12 + .4byte _080452B4 @ case 13 + .4byte _080452B4 @ case 14 + .4byte _080452B4 @ case 15 + .4byte _080452B4 @ case 16 + .4byte _080452B4 @ case 17 + .4byte _080452B4 @ case 18 + .4byte _080452B4 @ case 19 + .4byte _080452B4 @ case 20 + .4byte _08045254 @ case 21 + .4byte _080452B4 @ case 22 + .4byte _080452B4 @ case 23 + .4byte _080452B4 @ case 24 + .4byte _080452B4 @ case 25 + .4byte _08045108 @ case 26 +_08044F94: + ldr r1, _08044FC4 + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x4c + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08044FAA + b _080452B4 +_08044FAA: + movs r0, #0x41 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + bl sub_0803F73C + ldr r1, _08044FC8 + ldr r0, _08044FCC + str r0, [r1] + movs r0, #1 + str r0, [sp, #0xc] + b _080452BA + .align 2, 0 +_08044FC4: .4byte gUnknown_2023D28 +_08044FC8: .4byte gUnknown_2023EB8 +_08044FCC: .4byte gUnknown_8289C94 +_08044FD0: + ldr r1, _08044FFC + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x4c + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _08044FE6 + b _080452B4 +_08044FE6: + ldr r0, _08045000 + ands r1, r0 + str r1, [r2] + bl sub_0803F73C + ldr r1, _08045004 + ldr r0, _08045008 + str r0, [r1] + movs r1, #1 + str r1, [sp, #0xc] + b _080452BA + .align 2, 0 +_08044FFC: .4byte gUnknown_2023D28 +_08045000: .4byte 0xFFFFF077 +_08045004: .4byte gUnknown_2023EB8 +_08045008: .4byte gUnknown_8289CAC +_0804500C: + ldr r1, _0804503C + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x4c + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08045022 + b _080452B4 +_08045022: + movs r0, #0x11 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + bl sub_0803F73C + ldr r1, _08045040 + ldr r0, _08045044 + str r0, [r1] + movs r2, #1 + str r2, [sp, #0xc] + b _080452BA + .align 2, 0 +_0804503C: .4byte gUnknown_2023D28 +_08045040: .4byte gUnknown_2023EB8 +_08045044: .4byte gUnknown_8289CC4 +_08045048: + ldr r1, _08045078 + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x4c + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0804505E + b _080452B4 +_0804505E: + movs r0, #0x21 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + bl sub_0803F73C + ldr r1, _0804507C + ldr r0, _08045080 + str r0, [r1] + movs r3, #1 + str r3, [sp, #0xc] + b _080452BA + .align 2, 0 +_08045078: .4byte gUnknown_2023D28 +_0804507C: .4byte gUnknown_2023EB8 +_08045080: .4byte gUnknown_8289CDC +_08045084: + ldr r2, _080450BC + movs r0, #0x58 + adds r4, r7, #0 + muls r4, r0, r4 + adds r0, r2, #0 + adds r0, #0x4c + adds r3, r4, r0 + ldr r1, [r3] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0804509E + b _080452B4 +_0804509E: + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r3] + adds r2, #0x50 + adds r2, r4, r2 + ldr r0, [r2] + ldr r1, _080450C0 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r1, _080450C4 + ldr r0, _080450C8 + b _0804521C + .align 2, 0 +_080450BC: .4byte gUnknown_2023D28 +_080450C0: .4byte 0xF7FFFFFF +_080450C4: .4byte gUnknown_2023EB8 +_080450C8: .4byte gUnknown_8289CF4 +_080450CC: + ldr r1, _080450FC + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _080450E2 + b _080452B4 +_080450E2: + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + bl sub_0803F73C + ldr r1, _08045100 + ldr r0, _08045104 + str r0, [r1] + movs r0, #2 + str r0, [sp, #0xc] + b _080452BA + .align 2, 0 +_080450FC: .4byte gUnknown_2023D28 +_08045100: .4byte gUnknown_2023EB8 +_08045104: .4byte gUnknown_8289D0C +_08045108: + ldr r1, _08045144 + movs r0, #0x58 + muls r0, r7, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _08045120 + b _080452B4 +_08045120: + ldr r0, _08045148 + ands r1, r0 + str r1, [r2] + ldr r0, _0804514C + ldr r1, _08045150 + bl sub_080088B8 + bl sub_0803F73C + ldr r1, _08045154 + movs r0, #0 + strb r0, [r1, #5] + ldr r1, _08045158 + ldr r0, _0804515C + str r0, [r1] + movs r1, #2 + str r1, [sp, #0xc] + b _080452BA + .align 2, 0 +_08045144: .4byte gUnknown_2023D28 +_08045148: .4byte 0xFFF0FFFF +_0804514C: .4byte gUnknown_2022C0C +_08045150: .4byte gUnknown_85ABC67 +_08045154: .4byte gUnknown_2023FD6 +_08045158: .4byte gUnknown_2023EB8 +_0804515C: .4byte gUnknown_8289D22 +_08045160: + ldr r4, _08045224 + movs r0, #0x58 + adds r5, r7, #0 + muls r5, r0, r5 + adds r0, r4, #0 + adds r0, #0x4c + adds r6, r5, r0 + ldr r2, [r6] + ldrb r0, [r6] + cmp r0, #0 + bne _08045188 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r5, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08045188 + b _080452B4 +_08045188: + movs r0, #0x88 + ands r2, r0 + cmp r2, #0 + beq _08045198 + ldr r0, _08045228 + ldr r1, _0804522C + bl sub_080088B8 +_08045198: + ldr r0, [r6] + movs r2, #7 + mov r8, r2 + ands r0, r2 + adds r4, #0x50 + cmp r0, #0 + beq _080451B8 + adds r2, r5, r4 + ldr r0, [r2] + ldr r1, _08045230 + ands r0, r1 + str r0, [r2] + ldr r0, _08045228 + ldr r1, _08045234 + bl sub_080088B8 +_080451B8: + ldr r0, [r6] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080451CA + ldr r0, _08045228 + ldr r1, _08045238 + bl sub_080088B8 +_080451CA: + ldr r0, [r6] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080451DC + ldr r0, _08045228 + ldr r1, _0804523C + bl sub_080088B8 +_080451DC: + ldr r0, [r6] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080451EE + ldr r0, _08045228 + ldr r1, _08045240 + bl sub_080088B8 +_080451EE: + adds r5, r5, r4 + ldr r0, [r5] + mov r3, r8 + ands r0, r3 + cmp r0, #0 + beq _08045202 + ldr r0, _08045228 + ldr r1, _08045244 + bl sub_080088B8 +_08045202: + movs r4, #0 + str r4, [r6] + ldr r0, [r5] + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r5] + bl sub_0803F73C + ldr r0, _08045248 + strb r4, [r0, #5] + ldr r1, _0804524C + ldr r0, _08045250 +_0804521C: + str r0, [r1] + movs r5, #1 + str r5, [sp, #0xc] + b _080452BA + .align 2, 0 +_08045224: .4byte gUnknown_2023D28 +_08045228: .4byte gUnknown_2022C0C +_0804522C: .4byte gUnknown_85ABC54 +_08045230: .4byte 0xF7FFFFFF +_08045234: .4byte gUnknown_85ABC50 +_08045238: .4byte gUnknown_85ABC5B +_0804523C: .4byte gUnknown_85ABC57 +_08045240: .4byte gUnknown_85ABC5E +_08045244: .4byte gUnknown_85ABC62 +_08045248: .4byte gUnknown_2023FD6 +_0804524C: .4byte gUnknown_2023EB8 +_08045250: .4byte gUnknown_8289D22 +_08045254: + ldr r0, _080452A0 + mov r8, r0 + movs r0, #0x58 + adds r1, r7, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x18 + adds r1, r1, r0 + movs r2, #6 + movs r3, #7 + mov sl, r3 +_0804526A: + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _08045278 + strb r2, [r1] + movs r5, #5 + str r5, [sp, #0xc] +_08045278: + adds r1, #1 + movs r0, #1 + rsbs r0, r0, #0 + add sl, r0 + mov r3, sl + cmp r3, #0 + bge _0804526A + ldr r5, [sp, #0xc] + cmp r5, #0 + beq _080452F8 + ldr r0, _080452A4 + strb r7, [r0, #0x17] + ldr r0, _080452A8 + strb r7, [r0] + bl sub_0803F73C + ldr r1, _080452AC + ldr r0, _080452B0 + str r0, [r1] + b _0804546A + .align 2, 0 +_080452A0: .4byte gUnknown_2023D28 +_080452A4: .4byte gUnknown_2024118 +_080452A8: .4byte gUnknown_2023EB3 +_080452AC: .4byte gUnknown_2023EB8 +_080452B0: .4byte gUnknown_8289D3C +_080452B4: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _080452F8 +_080452BA: + ldr r0, _080452E8 + strb r7, [r0, #0x17] + ldr r0, _080452EC + strb r7, [r0] + ldr r4, _080452F0 + strb r7, [r4] + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 +_080452CC: + ldr r1, _080452F4 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + b _0804546A + .align 2, 0 +_080452E8: .4byte gUnknown_2024118 +_080452EC: .4byte gUnknown_2023EB3 +_080452F0: .4byte gUnknown_2023D08 +_080452F4: .4byte gUnknown_2023D74 +_080452F8: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0804530C + ldrb r0, [r0] + cmp r7, r0 + bhs _08045308 + b _08044ECC +_08045308: + b _0804546A + .align 2, 0 +_0804530C: .4byte gUnknown_2023D10 +_08045310: + ldr r7, _08045328 + ldr r0, [r7] + cmp r0, #0 + bne _0804531A + b _0804546A +_0804531A: + mov r1, r8 + cmp r1, #0x1e + beq _0804532C + cmp r1, #0x3e + beq _080453D4 + b _0804546A + .align 2, 0 +_08045328: .4byte gUnknown_2023E94 +_0804532C: + ldr r0, _080453B8 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _0804533A + b _0804546A +_0804533A: + ldr r2, _080453BC + ldr r4, _080453C0 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08045360 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08045360 + b _0804546A +_08045360: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, [sp, #0x10] + cmp r0, r2 + bhs _0804546A + ldr r2, _080453C4 + ldr r0, _080453C8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #8] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0804546A + ldr r2, _080453CC + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804546A + ldr r1, _080453D0 + movs r0, #8 + strb r0, [r1, #3] + bl sub_0803F73C + movs r0, #0 + movs r1, #0 + bl sub_080483A0 + bl sub_0803F764 + b _0804546A + .align 2, 0 +_080453B8: .4byte gUnknown_2023F20 +_080453BC: .4byte gUnknown_2024020 +_080453C0: .4byte gUnknown_2023EB0 +_080453C4: .4byte gUnknown_82ED220 +_080453C8: .4byte gUnknown_2023E8E +_080453CC: .4byte gUnknown_2023D28 +_080453D0: .4byte gUnknown_2023FD6 +_080453D4: + ldr r0, _0804547C + ldrb r0, [r0] + movs r5, #0x29 + ands r5, r0 + cmp r5, #0 + bne _0804546A + ldr r1, _08045480 + ldr r4, _08045484 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r6, r1, #4 + adds r0, r0, r6 + ldr r1, [r0] + cmp r1, #0 + beq _0804546A + ldr r0, _08045488 + cmp r1, r0 + beq _0804546A + ldr r0, _0804548C + ldrb r3, [r0] + cmp r3, r2 + beq _0804546A + ldr r2, _08045490 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r1, [r0, #0x28] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + beq _0804546A + cmp r1, #0 + beq _0804546A + ldr r0, _08045494 + mov r1, sp + ldrh r1, [r1, #0x14] + strh r1, [r0] + ldr r0, _08045498 + strb r3, [r0] + ldr r0, _0804549C + strb r3, [r0, #0x17] + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl __divsi3 + rsbs r0, r0, #0 + str r0, [r7] + ldrb r1, [r4] + cmp r0, #0 + bne _0804544C + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r7] +_0804544C: + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + str r5, [r0] + bl sub_0803F73C + ldr r1, _080454A0 + ldr r0, _080454A4 + str r0, [r1] + ldr r0, [sp, #0xc] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] +_0804546A: + ldr r0, [sp, #0xc] + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0804547C: .4byte gUnknown_2023F20 +_08045480: .4byte gUnknown_2024020 +_08045484: .4byte gUnknown_2023EB0 +_08045488: .4byte 0x0000FFFF +_0804548C: .4byte gUnknown_2023EAF +_08045490: .4byte gUnknown_2023D28 +_08045494: .4byte gUnknown_2023EAC +_08045498: .4byte gUnknown_2023EB3 +_0804549C: .4byte gUnknown_2024118 +_080454A0: .4byte gUnknown_2023EB8 +_080454A4: .4byte gUnknown_8289D7F + thumb_func_end sub_0804411C + + thumb_func_start sub_080454A8 +sub_080454A8: @ 0x080454A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080454E0 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1, #0x10] + ldr r1, _080454E4 + movs r2, #0x58 + adds r3, r0, #0 + muls r3, r2, r3 + adds r1, #0x50 + adds r3, r3, r1 + ldr r1, [r3] + ldr r2, _080454E8 + ands r1, r2 + str r1, [r3] + ldr r1, _080454EC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r2, _080454F0 + ands r1, r2 + str r1, [r0] + bx lr + .align 2, 0 +_080454E0: .4byte gUnknown_2023F60 +_080454E4: .4byte gUnknown_2023D28 +_080454E8: .4byte 0xFDFFFFFF +_080454EC: .4byte gUnknown_2023F50 +_080454F0: .4byte 0xFFFFBFFF + thumb_func_end sub_080454A8 + + thumb_func_start sub_080454F4 +sub_080454F4: @ 0x080454F4 + push {lr} + ldr r0, _08045514 + ldr r0, [r0] + cmp r0, #0 + bne _08045510 + ldr r1, _08045518 + ldr r0, _0804551C + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_08045510: + pop {r0} + bx r0 + .align 2, 0 +_08045514: .4byte gUnknown_2023D0C +_08045518: .4byte gUnknown_82EC694 +_0804551C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080454F4 + + thumb_func_start sub_08045520 +sub_08045520: @ 0x08045520 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + movs r5, #0 + cmp r0, #0 + beq _0804553E + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _0804554A +_0804553E: + ldr r1, _0804555C + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r6, [r0, #6] +_0804554A: + cmp r6, #0x40 + bls _08045550 + b _08045860 +_08045550: + lsls r0, r6, #2 + ldr r1, _08045560 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804555C: .4byte gUnknown_82ED220 +_08045560: .4byte _08045564 +_08045564: @ jump table + .4byte _08045668 @ case 0 + .4byte _08045768 @ case 1 + .4byte _0804585C @ case 2 + .4byte _08045860 @ case 3 + .4byte _08045780 @ case 4 + .4byte _08045860 @ case 5 + .4byte _08045860 @ case 6 + .4byte _08045860 @ case 7 + .4byte _08045768 @ case 8 + .4byte _08045860 @ case 9 + .4byte _08045860 @ case 10 + .4byte _08045860 @ case 11 + .4byte _08045860 @ case 12 + .4byte _08045860 @ case 13 + .4byte _08045860 @ case 14 + .4byte _08045860 @ case 15 + .4byte _0804585C @ case 16 + .4byte _08045860 @ case 17 + .4byte _08045860 @ case 18 + .4byte _08045860 @ case 19 + .4byte _08045860 @ case 20 + .4byte _08045860 @ case 21 + .4byte _08045860 @ case 22 + .4byte _08045860 @ case 23 + .4byte _08045860 @ case 24 + .4byte _08045860 @ case 25 + .4byte _08045860 @ case 26 + .4byte _08045860 @ case 27 + .4byte _08045860 @ case 28 + .4byte _08045860 @ case 29 + .4byte _08045860 @ case 30 + .4byte _08045860 @ case 31 + .4byte _08045768 @ case 32 + .4byte _08045860 @ case 33 + .4byte _08045860 @ case 34 + .4byte _08045860 @ case 35 + .4byte _08045860 @ case 36 + .4byte _08045860 @ case 37 + .4byte _08045860 @ case 38 + .4byte _08045860 @ case 39 + .4byte _08045860 @ case 40 + .4byte _08045860 @ case 41 + .4byte _08045860 @ case 42 + .4byte _08045860 @ case 43 + .4byte _08045860 @ case 44 + .4byte _08045860 @ case 45 + .4byte _08045860 @ case 46 + .4byte _08045860 @ case 47 + .4byte _08045860 @ case 48 + .4byte _08045860 @ case 49 + .4byte _08045860 @ case 50 + .4byte _08045860 @ case 51 + .4byte _08045860 @ case 52 + .4byte _08045860 @ case 53 + .4byte _08045860 @ case 54 + .4byte _08045860 @ case 55 + .4byte _08045860 @ case 56 + .4byte _08045860 @ case 57 + .4byte _08045860 @ case 58 + .4byte _08045860 @ case 59 + .4byte _08045860 @ case 60 + .4byte _08045860 @ case 61 + .4byte _08045860 @ case 62 + .4byte _08045860 @ case 63 + .4byte _08045768 @ case 64 +_08045668: + ldr r0, _08045748 + ldrb r0, [r0] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0804574C + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r0, [r2, #8] + cmp r0, #0 + beq _0804569A + ldr r1, _08045750 + ldrb r4, [r2, #9] + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804569A + b _080457B0 +_0804569A: + ldr r0, _08045748 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r7, #1 + mov r8, r0 +_080456AA: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08045754 + ldrb r1, [r1] + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _08045748 + ldrb r3, [r6] + cmp r5, r3 + beq _080456AA + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _080456AA + ldr r0, _08045758 + ldrb r2, [r0] + ldr r1, _0804575C + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + bne _080456AA + ldr r0, _08045760 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + cmp r0, #0xd + beq _080456F8 + b _08045860 +_080456F8: + ldrb r1, [r6] + str r2, [sp] + movs r0, #0x10 + movs r2, #0x1f + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804570E + b _08045860 +_0804570E: + ldr r2, _08045750 + movs r1, #0x58 + adds r0, r5, #0 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1f + bne _08045722 + b _08045860 +_08045722: + movs r4, #2 + eors r5, r4 + adds r0, r5, #0 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0813114C + ldr r1, _08045764 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + orrs r1, r4 + strb r1, [r0] + b _08045860 + .align 2, 0 +_08045748: .4byte gUnknown_2023EAF +_0804574C: .4byte gUnknown_2023F38 +_08045750: .4byte gUnknown_2023D28 +_08045754: .4byte gUnknown_2023D10 +_08045758: .4byte gUnknown_2023EB4 +_0804575C: .4byte gUnknown_82FACB4 +_08045760: .4byte gUnknown_82ED220 +_08045764: .4byte gUnknown_2024020 +_08045768: + ldr r0, _0804577C + ldrb r0, [r0] + bl sub_080A630C + adds r1, r0, #0 + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + b _08045812 + .align 2, 0 +_0804577C: .4byte gUnknown_2023EAF +_08045780: + ldr r0, _080457B4 + ldrb r0, [r0] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080457B8 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r0, [r2, #8] + cmp r0, #0 + beq _080457C0 + ldr r1, _080457BC + ldrb r4, [r2, #9] + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _080457C0 +_080457B0: + adds r5, r4, #0 + b _08045860 + .align 2, 0 +_080457B4: .4byte gUnknown_2023EAF +_080457B8: .4byte gUnknown_2023F38 +_080457BC: .4byte gUnknown_2023D28 +_080457C0: + ldr r0, _080457F4 + ldr r0, [r0] + movs r4, #1 + ands r0, r4 + cmp r0, #0 + beq _0804583C + movs r0, #4 + ands r6, r0 + cmp r6, #0 + beq _0804583C + ldr r0, _080457F8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08045800 + bl sub_0806F050 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + beq _080457FC + movs r0, #1 + b _08045812 + .align 2, 0 +_080457F4: .4byte gUnknown_2022C90 +_080457F8: .4byte gUnknown_2023EAF +_080457FC: + movs r0, #3 + b _08045812 +_08045800: + bl sub_0806F050 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + beq _08045810 + movs r0, #0 + b _08045812 +_08045810: + movs r0, #2 +_08045812: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08045834 + ldrb r1, [r0] + ldr r2, _08045838 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08045860 + movs r0, #2 + eors r5, r0 + b _08045860 + .align 2, 0 +_08045834: .4byte gUnknown_2023EB4 +_08045838: .4byte gUnknown_82FACB4 +_0804583C: + ldr r0, _08045858 + ldrb r0, [r0] + bl sub_080A630C + adds r1, r0, #0 + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _08045860 + .align 2, 0 +_08045858: .4byte gUnknown_2023EAF +_0804585C: + ldr r0, _0804587C + ldrb r5, [r0] +_08045860: + ldr r0, _0804587C + ldrb r0, [r0] + ldr r1, _08045880 + ldr r1, [r1] + adds r0, r0, r1 + strb r5, [r0, #0xc] + adds r0, r5, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0804587C: .4byte gUnknown_2023EAF +_08045880: .4byte gUnknown_2024140 + thumb_func_end sub_08045520 + + thumb_func_start sub_08045884 +sub_08045884: @ 0x08045884 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080458CA + ldr r0, _080458D0 + lsls r4, r4, #1 + adds r5, r4, r0 + ldrh r0, [r5] + movs r7, #0x64 + muls r0, r7, r0 + ldr r6, _080458D4 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + movs r1, #0xcd + lsls r1, r1, #1 + cmp r0, r1 + beq _080458D8 + ldrh r0, [r5] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0x97 + beq _080458D8 +_080458CA: + movs r0, #1 + b _080458EE + .align 2, 0 +_080458D0: .4byte gUnknown_2023D12 +_080458D4: .4byte gUnknown_2024190 +_080458D8: + ldr r0, _080458F4 + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080458F8 + adds r0, r0, r1 + movs r1, #0x50 + movs r2, #0 + bl sub_0806A058 +_080458EE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080458F4: .4byte gUnknown_2023D12 +_080458F8: .4byte gUnknown_2024190 + thumb_func_end sub_08045884 + + thumb_func_start sub_080458FC +sub_080458FC: @ 0x080458FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + movs r6, #0 + ldr r5, _080459F0 + ldr r0, [r5] + ldr r1, _080459F4 + ands r0, r1 + cmp r0, #0 + bne _080459EC + ldr r4, _080459F8 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080459EC + ldrb r0, [r4] + bl sub_08045884 + cmp r0, #0 + beq _080459B6 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08045948 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080459EC +_08045948: + ldr r0, _080459F0 + ldr r1, [r0] + ldr r0, _080459FC + ands r0, r1 + cmp r0, #0 + bne _080459EC + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + cmp r1, #0 + bne _080459EC + ldr r2, _08045A00 + ldr r0, _080459F8 + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0x54 + adds r0, r1, r0 + ldr r0, [r0] + adds r2, #0x3c + adds r1, r1, r2 + bl sub_0806E360 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080459EC + ldr r0, _08045A04 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080459EC + movs r6, #0xa + ldr r0, _08045A08 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804599A + movs r6, #0x1e +_0804599A: + ldr r0, _08045A0C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080459A8 + movs r6, #0x32 +_080459A8: + ldr r0, _08045A10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080459B6 + movs r6, #0x46 +_080459B6: + ldr r5, _08045A00 + ldr r0, _080459F8 + mov r8, r0 + ldrb r0, [r0] + movs r7, #0x58 + muls r0, r7, r0 + adds r0, r0, r5 + adds r0, #0x2a + ldrb r0, [r0] + cmp r0, r6 + bls _080459EC + bl sub_0806F050 + movs r1, #0xff + ands r1, r0 + mov r2, r8 + ldrb r0, [r2] + adds r2, r0, #0 + muls r2, r7, r2 + adds r0, r2, r5 + adds r0, #0x2a + ldrb r0, [r0] + adds r0, r0, r6 + muls r0, r1, r0 + asrs r4, r0, #8 + cmp r4, r6 + bge _08045A14 +_080459EC: + movs r0, #0 + b _08045C10 + .align 2, 0 +_080459F0: .4byte gUnknown_2022C90 +_080459F4: .4byte gUnknown_2000002 +_080459F8: .4byte gUnknown_2023EAF +_080459FC: .4byte 0x003F0100 +_08045A00: .4byte gUnknown_2023D28 +_08045A04: .4byte 0x0000086E +_08045A08: .4byte 0x00000868 +_08045A0C: .4byte 0x0000086A +_08045A10: .4byte 0x0000086C +_08045A14: + ldr r3, _08045A50 + ldrh r0, [r3] + cmp r0, #0x63 + bne _08045A2A + adds r0, r5, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r1, [r0] + ldr r2, _08045A54 + ands r1, r2 + str r1, [r0] +_08045A2A: + mov r1, r8 + ldrb r0, [r1] + muls r0, r7, r0 + adds r1, r5, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08045A60 + ldrh r0, [r3] + cmp r0, #0xad + beq _08045A4A + cmp r0, #0xd6 + bne _08045A60 +_08045A4A: + ldr r1, _08045A58 + ldr r0, _08045A5C + b _08045BBA + .align 2, 0 +_08045A50: .4byte gUnknown_2023E8E +_08045A54: .4byte 0xFF7FFFFF +_08045A58: .4byte gUnknown_2023EB8 +_08045A5C: .4byte gUnknown_8289C1D +_08045A60: + bl sub_0806F050 + movs r5, #0xff + adds r1, r5, #0 + ands r1, r0 + ldr r7, _08045B00 + ldr r2, _08045B04 + mov sb, r2 + ldrb r3, [r2] + movs r0, #0x58 + mov r8, r0 + mov r0, r8 + muls r0, r3, r0 + adds r0, r0, r7 + adds r0, #0x2a + ldrb r2, [r0] + adds r0, r2, r6 + muls r0, r1, r0 + asrs r4, r0, #8 + cmp r4, r6 + bge _08045B28 + ldr r6, _08045B08 + ldr r5, _08045B0C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + adds r0, r3, #0 + movs r2, #0xff + bl sub_0803FB0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bne _08045AA8 + b _08045BAA +_08045AA8: + ldr r1, _08045B10 + mov r8, r1 + movs r7, #3 +_08045AAE: + bl sub_0806F050 + ands r0, r7 + mov r2, r8 + strb r0, [r2] + strb r0, [r5] + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + bne _08045AAE + ldr r4, _08045B14 + ldr r3, _08045B00 + ldr r0, _08045B0C + ldrb r0, [r0] + lsls r0, r0, #1 + ldr r1, _08045B04 + ldrb r2, [r1] + movs r1, #0x58 + muls r1, r2, r1 + adds r0, r0, r1 + adds r3, #0xc + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r4] + ldr r1, _08045B18 + ldr r0, _08045B1C + str r0, [r1] + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _08045B20 + strb r0, [r1] + ldr r2, _08045B24 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xe + b _08045C0A + .align 2, 0 +_08045B00: .4byte gUnknown_2023D28 +_08045B04: .4byte gUnknown_2023EAF +_08045B08: .4byte gUnknown_82FACB4 +_08045B0C: .4byte gUnknown_2023E8C +_08045B10: .4byte gUnknown_2023E8D +_08045B14: .4byte gUnknown_2023E92 +_08045B18: .4byte gUnknown_2023EB8 +_08045B1C: .4byte gUnknown_8289C2D +_08045B20: .4byte gUnknown_2023EB0 +_08045B24: .4byte gUnknown_2023F24 +_08045B28: + subs r0, r2, r6 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_0806F050 + adds r4, r5, #0 + ands r4, r0 + cmp r4, r6 + bge _08045BA4 + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r7, #0 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r5 + cmp r0, #0 + bne _08045BA4 + adds r0, r1, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x48 + beq _08045BA4 + cmp r0, #0xf + beq _08045BA4 + movs r2, #0 + ldr r0, _08045B98 + ldrb r3, [r0] + mov r8, r0 + cmp r2, r3 + bge _08045B8A + ldr r0, [r7, #0x50] + movs r1, #0x70 + ands r0, r1 + cmp r0, #0 + bne _08045B8A + adds r1, r7, #0 + adds r1, #0x50 + movs r5, #0x70 +_08045B7A: + adds r1, #0x58 + adds r2, #1 + cmp r2, r3 + bge _08045B8A + ldr r0, [r1] + ands r0, r5 + cmp r0, #0 + beq _08045B7A +_08045B8A: + mov r0, r8 + ldrb r0, [r0] + cmp r2, r0 + bne _08045BA4 + ldr r1, _08045B9C + ldr r0, _08045BA0 + b _08045BBA + .align 2, 0 +_08045B98: .4byte gUnknown_2023D10 +_08045B9C: .4byte gUnknown_2023EB8 +_08045BA0: .4byte gUnknown_8289C61 +_08045BA4: + subs r4, r4, r6 + cmp r4, r6 + blt _08045BCC +_08045BAA: + bl sub_0806F050 + ldr r2, _08045BC0 + movs r1, #3 + ands r1, r0 + strb r1, [r2, #5] + ldr r1, _08045BC4 + ldr r0, _08045BC8 +_08045BBA: + str r0, [r1] + movs r0, #1 + b _08045C10 + .align 2, 0 +_08045BC0: .4byte gUnknown_2023FD6 +_08045BC4: .4byte gUnknown_2023EB8 +_08045BC8: .4byte gUnknown_8289C35 +_08045BCC: + ldr r4, _08045C20 + ldrb r1, [r4] + movs r0, #0x58 + muls r1, r0, r1 + ldr r0, _08045C24 + adds r1, r1, r0 + movs r0, #0x28 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldrb r0, [r4] + str r0, [sp, #8] + ldrb r0, [r4] + str r0, [sp, #0xc] + adds r0, r1, #0 + movs r2, #1 + movs r3, #0 + bl sub_080690BC + ldr r1, _08045C28 + str r0, [r1] + ldr r1, _08045C2C + ldrb r0, [r4] + strb r0, [r1] + ldr r1, _08045C30 + ldr r0, _08045C34 + str r0, [r1] + ldr r2, _08045C38 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xc +_08045C0A: + orrs r0, r1 + str r0, [r2] + movs r0, #2 +_08045C10: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08045C20: .4byte gUnknown_2023EAF +_08045C24: .4byte gUnknown_2023D28 +_08045C28: .4byte gUnknown_2023E94 +_08045C2C: .4byte gUnknown_2023EB0 +_08045C30: .4byte gUnknown_2023EB8 +_08045C34: .4byte gUnknown_8289C78 +_08045C38: .4byte gUnknown_2023F24 + thumb_func_end sub_080458FC + + thumb_func_start sub_08045C3C +sub_08045C3C: @ 0x08045C3C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r0, _08045C58 + ldrb r0, [r0] + cmp r0, #0 + beq _08045C60 + ldr r1, _08045C5C + movs r0, #0xc + strb r0, [r1] + b _08045FD8 + .align 2, 0 +_08045C58: .4byte gUnknown_2023FDE +_08045C5C: .4byte gUnknown_2023D27 +_08045C60: + ldr r2, _08045C90 + ldr r0, _08045C94 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08045CA4 + ldr r2, _08045C98 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08045CA4 + movs r0, #0x80 + lsls r0, r0, #0xc + orrs r1, r0 + str r1, [r2] + ldr r1, _08045C9C + ldr r0, _08045CA0 + b _08045FD6 + .align 2, 0 +_08045C90: .4byte gUnknown_2023D28 +_08045C94: .4byte gUnknown_2023EAF +_08045C98: .4byte gUnknown_2023F24 +_08045C9C: .4byte gUnknown_2023EB8 +_08045CA0: .4byte gUnknown_8286FD6 +_08045CA4: + bl sub_080416AC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08045CB2 + b _08045FD8 +_08045CB2: + ldr r0, _08045D20 + ldrb r1, [r0] + str r2, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08045CCA + b _08045FD8 +_08045CCA: + ldr r4, _08045D24 + ldr r0, _08045D28 + ldrb r1, [r0] + ldr r3, _08045D2C + ldrb r2, [r3] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, r1, r2 + adds r0, r4, #0 + adds r0, #0x24 + adds r1, r1, r0 + ldrb r0, [r1] + ldr r5, _08045D30 + cmp r0, #0 + bne _08045D48 + ldr r0, _08045D34 + ldrh r0, [r0] + cmp r0, #0xa5 + beq _08045D48 + ldr r0, [r5] + ldr r1, _08045D38 + ands r0, r1 + cmp r0, #0 + bne _08045D48 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + bne _08045D48 + ldr r1, _08045D3C + ldr r0, _08045D40 + str r0, [r1] + ldr r2, _08045D44 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _08045FD8 + .align 2, 0 +_08045D20: .4byte gUnknown_2023EB0 +_08045D24: .4byte gUnknown_2023D28 +_08045D28: .4byte gUnknown_2023E8C +_08045D2C: .4byte gUnknown_2023EAF +_08045D30: .4byte gUnknown_2023F24 +_08045D34: .4byte gUnknown_2023E8E +_08045D38: .4byte 0x00800200 +_08045D3C: .4byte gUnknown_2023EB8 +_08045D40: .4byte gUnknown_8289602 +_08045D44: .4byte gUnknown_2023F20 +_08045D48: + ldr r0, [r5] + ldr r1, _08045D8C + ands r0, r1 + str r0, [r5] + movs r6, #0x80 + lsls r6, r6, #0x12 + ands r0, r6 + cmp r0, #0 + bne _08045DA0 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r4, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + bne _08045DA0 + bl sub_080458FC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08045DA0 + cmp r2, #2 + bne _08045D90 + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + b _08045FD8 + .align 2, 0 +_08045D8C: .4byte 0xFF7FFFFF +_08045D90: + ldr r0, _08045D9C + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _08045FD8 + .align 2, 0 +_08045D9C: .4byte gUnknown_2023F20 +_08045DA0: + ldr r2, _08045E04 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x12 + orrs r0, r1 + str r0, [r2] + ldr r2, _08045E08 + ldr r1, _08045E0C + ldrb r3, [r1] + lsls r0, r3, #4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1b + mov r8, r1 + mov sb, r2 + cmp r0, #0 + bge _08045E28 + ldr r2, _08045E10 + ldr r0, _08045E14 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #8] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08045E28 + ldr r0, _08045E18 + ldrb r0, [r0] + ldr r2, _08045E1C + adds r1, r3, #0 + bl sub_0803F0C0 + mov r0, r8 + ldrb r1, [r0] + lsls r1, r1, #4 + add r1, sb + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bl sub_0803F73C + ldr r1, _08045E20 + ldr r0, _08045E24 + b _08045FD6 + .align 2, 0 +_08045E04: .4byte gUnknown_2023F24 +_08045E08: .4byte gUnknown_2023FE0 +_08045E0C: .4byte gUnknown_2023EB0 +_08045E10: .4byte gUnknown_82ED220 +_08045E14: .4byte gUnknown_2023E8E +_08045E18: .4byte gUnknown_2023EAF +_08045E1C: .4byte 0x00000115 +_08045E20: .4byte gUnknown_2023EB8 +_08045E24: .4byte gUnknown_828971C +_08045E28: + movs r2, #0 + ldr r0, _08045EA4 + ldrb r0, [r0] + cmp r2, r0 + bge _08045E6A + ldr r6, _08045EA8 + ldr r1, _08045EAC + mov ip, r1 + adds r5, r0, #0 + ldr r7, _08045EB0 +_08045E3C: + adds r4, r2, r7 + ldrb r3, [r4] + lsls r0, r3, #4 + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _08045E64 + ldr r0, _08045EB4 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r1, [r0, #8] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08045E64 + b _08045F90 +_08045E64: + adds r2, #1 + cmp r2, r5 + blt _08045E3C +_08045E6A: + ldr r0, _08045EB8 + mov r1, r8 + ldrb r2, [r1] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r3, [r1] + lsls r0, r3, #0x1e + cmp r0, #0 + bge _08045EC8 + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r3 + strb r0, [r1] + ldr r4, _08045EBC + movs r0, #0x1f + strb r0, [r4] + bl sub_0803F73C + ldr r1, _08045EC0 + ldr r0, _08045EC4 + str r0, [r1] + mov r1, r8 + ldrb r0, [r1] + ldrb r1, [r4] + bl sub_0813114C + b _08045FD8 + .align 2, 0 +_08045EA4: .4byte gUnknown_2023D10 +_08045EA8: .4byte gUnknown_2023FE0 +_08045EAC: .4byte gUnknown_82ED220 +_08045EB0: .4byte gUnknown_2023D22 +_08045EB4: .4byte gUnknown_2023E8E +_08045EB8: .4byte gUnknown_2024020 +_08045EBC: .4byte gUnknown_2023EAE +_08045EC0: .4byte gUnknown_2023EB8 +_08045EC4: .4byte gUnknown_8289AC6 +_08045EC8: + lsls r0, r2, #4 + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08045ED6 + b _08045FD0 +_08045ED6: + ldr r1, _08045F6C + ldr r2, _08045F70 + ldrh r3, [r2] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #2 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _08045FD0 + cmp r3, #0xae + bne _08045F14 + ldr r2, _08045F74 + ldr r0, _08045F78 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #7 + beq _08045F14 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #7 + bne _08045FD0 +_08045F14: + ldrh r0, [r4] + bl sub_08052B58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08045F3A + ldr r1, _08045F74 + ldr r0, _08045F78 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _08045FD0 +_08045F3A: + ldr r0, _08045F78 + ldrb r0, [r0] + bl sub_0803F4E0 + ldr r2, _08045F7C + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08045F80 + ldr r3, _08045F84 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0] + ldr r1, _08045F88 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r2, [r0] + ldr r1, _08045F8C + movs r0, #1 + strb r0, [r1, #6] + b _08045FD0 + .align 2, 0 +_08045F6C: .4byte gUnknown_82ED220 +_08045F70: .4byte gUnknown_2023E8E +_08045F74: .4byte gUnknown_2023D28 +_08045F78: .4byte gUnknown_2023EAF +_08045F7C: .4byte gUnknown_2023F20 +_08045F80: .4byte gUnknown_2023EF4 +_08045F84: .4byte gUnknown_2023EB0 +_08045F88: .4byte gUnknown_2023EFC +_08045F8C: .4byte gUnknown_2023FD6 +_08045F90: + ldr r0, _08045FBC + ldrb r0, [r0] + ldr r2, _08045FC0 + adds r1, r3, #0 + bl sub_0803F0C0 + ldrb r1, [r4] + lsls r1, r1, #4 + adds r1, r1, r6 + ldrb r2, [r1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08045FC4 + ldrb r0, [r4] + strb r0, [r1, #0x17] + bl sub_0803F73C + ldr r1, _08045FC8 + ldr r0, _08045FCC + b _08045FD6 + .align 2, 0 +_08045FBC: .4byte gUnknown_2023EAF +_08045FC0: .4byte 0x00000121 +_08045FC4: .4byte gUnknown_2024118 +_08045FC8: .4byte gUnknown_2023EB8 +_08045FCC: .4byte gUnknown_8289734 +_08045FD0: + ldr r1, _08045FE8 + ldr r0, [r1] + adds r0, #1 +_08045FD6: + str r0, [r1] +_08045FD8: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08045FE8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08045C3C + + thumb_func_start sub_08045FEC +sub_08045FEC: @ 0x08045FEC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r1, _08046038 + ldr r5, [r1] + adds r4, r5, r0 + ldr r0, _0804603C + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _0804604C + ldr r1, _08046040 + ldr r3, _08046044 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0] + ldr r1, _08046048 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r2, [r0] + ldrb r4, [r5, #1] + ldrb r0, [r5, #2] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r5, #3] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r5, #4] + lsls r0, r0, #0x18 + orrs r4, r0 + b _08046066 + .align 2, 0 +_08046038: .4byte gUnknown_2023EB8 +_0804603C: .4byte gUnknown_2023F20 +_08046040: .4byte gUnknown_2023EF4 +_08046044: .4byte gUnknown_2023EB0 +_08046048: .4byte gUnknown_2023EFC +_0804604C: + bl sub_08052D90 + ldr r0, _08046074 + ldrb r1, [r0] + str r6, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804606A +_08046066: + ldr r0, _08046078 + str r4, [r0] +_0804606A: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08046074: .4byte gUnknown_2023EB0 +_08046078: .4byte gUnknown_2023EB8 + thumb_func_end sub_08045FEC + + thumb_func_start sub_0804607C +sub_0804607C: @ 0x0804607C + push {lr} + ldr r1, _080460C4 + ldr r0, _080460C8 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080460DC + ldr r2, _080460CC + ldr r0, _080460D0 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #8] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080460DC + ldr r2, _080460D4 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #5 + movs r1, #0 + bl sub_08045FEC + ldr r1, _080460D8 + movs r0, #1 + strb r0, [r1, #6] + b _080460E4 + .align 2, 0 +_080460C4: .4byte gUnknown_2023FE0 +_080460C8: .4byte gUnknown_2023EB0 +_080460CC: .4byte gUnknown_82ED220 +_080460D0: .4byte gUnknown_2023E8E +_080460D4: .4byte gUnknown_2023F20 +_080460D8: .4byte gUnknown_2023FD6 +_080460DC: + ldr r1, _080460E8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080460E4: + pop {r0} + bx r0 + .align 2, 0 +_080460E8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804607C + + thumb_func_start sub_080460EC +sub_080460EC: @ 0x080460EC + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r4, #0 + ldr r1, _08046140 + ldr r0, _08046144 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08046138 + ldr r2, _08046148 + ldr r0, _0804614C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #8] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08046138 + ldr r2, _08046150 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #7 + adds r1, r3, #0 + bl sub_08045FEC + ldr r1, _08046154 + movs r0, #1 + strb r0, [r1, #6] + movs r4, #1 +_08046138: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08046140: .4byte gUnknown_2023FE0 +_08046144: .4byte gUnknown_2023EB0 +_08046148: .4byte gUnknown_82ED220 +_0804614C: .4byte gUnknown_2023E8E +_08046150: .4byte gUnknown_2023F20 +_08046154: .4byte gUnknown_2023FD6 + thumb_func_end sub_080460EC + + thumb_func_start sub_08046158 +sub_08046158: @ 0x08046158 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r2, _080461B8 + ldr r3, _080461BC + ldrb r4, [r3] + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #0x18 + ands r1, r0 + adds r6, r2, #0 + cmp r1, #0 + beq _0804618A + ldr r1, _080461C0 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080461C4 + ldrb r0, [r0, #0x15] + ldrb r1, [r1] + cmp r0, r1 + beq _08046274 +_0804618A: + ldr r0, _080461C8 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #9 + ands r1, r2 + adds r2, r0, #0 + cmp r1, #0 + bne _080461D0 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080461D0 +_080461AA: + ldr r0, _080461CC + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _08046274 + .align 2, 0 +_080461B8: .4byte gUnknown_2023F50 +_080461BC: .4byte gUnknown_2023EB0 +_080461C0: .4byte gUnknown_2023F60 +_080461C4: .4byte gUnknown_2023EAF +_080461C8: .4byte gUnknown_2023F24 +_080461CC: .4byte gUnknown_2023F20 +_080461D0: + ldr r0, [r2] + ldr r1, _08046280 + ands r0, r1 + str r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + bne _080461F2 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080461AA +_080461F2: + ldr r0, [r2] + ldr r1, _08046284 + ands r0, r1 + str r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + bne _08046212 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + bne _080461AA +_08046212: + ldr r0, [r2] + ldr r1, _08046288 + 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_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r5, #1 + cmp r0, #0 + bne _08046262 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08046262 + ldr r0, _0804628C + ldrh r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _08046262 + ldr r0, _08046290 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x98 + beq _08046274 +_08046262: + ldr r1, _08046290 + adds r0, r4, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x11 + beq _08046274 + cmp r0, #0x4e + bne _08046294 +_08046274: + movs r0, #7 + adds r1, r5, #0 + bl sub_08045FEC + movs r0, #1 + b _08046296 + .align 2, 0 +_08046280: .4byte 0xFFFEFFFF +_08046284: .4byte 0xFFFDFFFF +_08046288: .4byte 0xFFFBFFFF +_0804628C: .4byte gUnknown_2024070 +_08046290: .4byte gUnknown_82ED220 +_08046294: + movs r0, #0 +_08046296: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08046158 + + thumb_func_start sub_080462A0 +sub_080462A0: @ 0x080462A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _080462F8 + ldr r5, [r0] + ldrb r6, [r5, #5] + ldrb r1, [r5, #6] + lsls r1, r1, #8 + orrs r6, r1 + adds r1, r6, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r7, r0, #0 + cmp r1, #1 + bhi _0804635C + ldr r2, _080462FC + ldr r3, _08046300 + ldrb r4, [r3] + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #0x18 + ands r1, r0 + cmp r1, #0 + beq _08046310 + ldr r0, _08046304 + cmp r6, r0 + bne _08046310 + ldr r1, _08046308 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0804630C + ldrb r0, [r0, #0x15] + ldrb r1, [r1] + cmp r0, r1 + bne _08046310 + adds r0, r5, #7 + str r0, [r7] + b _08046612 + .align 2, 0 +_080462F8: .4byte gUnknown_2023EB8 +_080462FC: .4byte gUnknown_2023F50 +_08046300: .4byte gUnknown_2023EB0 +_08046304: .4byte 0x0000FFFF +_08046308: .4byte gUnknown_2023F60 +_0804630C: .4byte gUnknown_2023EAF +_08046310: + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldr r1, _0804633C + ands r0, r1 + cmp r0, #0 + beq _08046340 + ldr r2, [r7] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r7] + b _08046612 + .align 2, 0 +_0804633C: .4byte 0x000400C0 +_08046340: + movs r0, #0 + bl sub_080460EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804634E + b _08046612 +_0804634E: + ldr r1, _08046358 + ldr r0, [r1] + adds r0, #7 + str r0, [r1] + b _08046612 + .align 2, 0 +_08046358: .4byte gUnknown_2023EB8 +_0804635C: + cmp r6, #0 + bne _08046364 + ldr r0, _0804637C + ldrh r6, [r0] +_08046364: + ldr r0, _08046380 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08046384 + movs r1, #0x3f + mov sl, r1 + mov r2, sl + ands r2, r0 + mov sl, r2 + b _08046392 + .align 2, 0 +_0804637C: .4byte gUnknown_2023E8E +_08046380: .4byte gUnknown_2024140 +_08046384: + ldr r1, _080463D8 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + mov sl, r0 +_08046392: + adds r0, r6, #0 + bl sub_080460EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080463A0 + b _08046612 +_080463A0: + adds r0, r6, #0 + bl sub_08046158 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080463AE + b _08046612 +_080463AE: + ldr r3, _080463DC + ldr r0, _080463E0 + ldrb r0, [r0] + movs r2, #0x58 + adds r4, r0, #0 + muls r4, r2, r4 + adds r0, r3, #0 + adds r0, #0x50 + adds r0, r4, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + beq _080463E8 + ldr r0, _080463E4 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + ldrb r5, [r0, #0x1e] + b _080463FE + .align 2, 0 +_080463D8: .4byte gUnknown_82ED220 +_080463DC: .4byte gUnknown_2023D28 +_080463E0: .4byte gUnknown_2023EB0 +_080463E4: .4byte gUnknown_2023EAF +_080463E8: + ldr r0, _0804654C + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + ldrb r0, [r0, #0x1e] + adds r0, #6 + adds r1, r4, r3 + ldrb r1, [r1, #0x1f] + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080463FE: + lsls r0, r5, #0x18 + cmp r0, #0 + bge _08046406 + movs r5, #0 +_08046406: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xc + ble _08046410 + movs r5, #0xc +_08046410: + ldr r1, _08046550 + lsls r4, r6, #1 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r7, r0, r1 + ldrb r3, [r7, #3] + mov r8, r3 + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp, #4] + cmp r0, #0 + bne _08046462 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08046462 + ldr r0, _08046554 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08046462 + ldrb r0, [r7] + cmp r0, #0x98 + bne _08046462 + movs r0, #0x32 + mov r8, r0 +_08046462: + ldr r1, _08046558 + lsls r0, r5, #0x18 + asrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0] + mov r4, r8 + muls r4, r1, r4 + ldrb r1, [r0, #1] + adds r0, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r7, _0804655C + ldr r0, _0804654C + ldrb r0, [r0] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0xe + bne _080464A0 + lsls r0, r4, #6 + adds r0, r0, r4 + lsls r0, r0, #1 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080464A0: + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080464F8 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080464F8 + ldr r0, _08046560 + ldrb r0, [r0] + muls r0, r5, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #8 + bne _080464F8 + ldr r0, _08046554 + ldrh r1, [r0] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _080464F8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080464F8: + ldr r2, _0804655C + ldr r0, _0804654C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + mov sb, r2 + cmp r0, #0x37 + bne _08046524 + mov r1, sl + cmp r1, #8 + bhi _08046524 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08046524: + ldr r2, _08046560 + mov r8, r2 + ldrb r2, [r2] + movs r7, #0x58 + adds r0, r2, #0 + muls r0, r7, r0 + mov r3, sb + adds r1, r0, r3 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _08046568 + ldr r1, _08046564 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #7] + ldrb r2, [r0, #0x1a] + b _08046584 + .align 2, 0 +_0804654C: .4byte gUnknown_2023EAF +_08046550: .4byte gUnknown_82ED220 +_08046554: .4byte gUnknown_2024070 +_08046558: .4byte gUnknown_82ECA78 +_0804655C: .4byte gUnknown_2023D28 +_08046560: .4byte gUnknown_2023EB0 +_08046564: .4byte gUnknown_20240A8 +_08046568: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, r8 + ldrb r0, [r1] + muls r0, r7, r0 + add r0, sb + ldrh r0, [r0, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_08046584: + ldr r0, _080465E8 + ldr r1, _080465EC + ldrb r1, [r1] + strb r1, [r0] + cmp r5, #0x16 + bne _080465A0 + movs r0, #0x64 + subs r0, r0, r2 + muls r0, r4, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080465A0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + cmp r0, r4 + ble _0804660A + ldr r2, _080465F0 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080465F4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08046600 + ldr r1, _080465F8 + ldr r2, [sp, #4] + adds r0, r2, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #6] + cmp r0, #8 + beq _080465E2 + cmp r0, #0x20 + bne _08046600 +_080465E2: + ldr r1, _080465FC + movs r0, #2 + b _08046604 + .align 2, 0 +_080465E8: .4byte gUnknown_2023EB3 +_080465EC: .4byte gUnknown_2023EB0 +_080465F0: .4byte gUnknown_2023F20 +_080465F4: .4byte gUnknown_2022C90 +_080465F8: .4byte gUnknown_82ED220 +_080465FC: .4byte gUnknown_2023FD6 +_08046600: + ldr r1, _08046624 + movs r0, #0 +_08046604: + strb r0, [r1, #6] + bl sub_08046EE8 +_0804660A: + movs r0, #7 + adds r1, r6, #0 + bl sub_08045FEC +_08046612: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08046624: .4byte gUnknown_2023FD6 + thumb_func_end sub_080462A0 + + thumb_func_start sub_08046628 +sub_08046628: @ 0x08046628 + push {r4, r5, lr} + ldr r0, _08046668 + ldr r5, [r0] + cmp r5, #0 + bne _08046660 + ldr r4, _0804666C + ldr r0, [r4] + movs r1, #0xc0 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08046654 + ldr r0, _08046670 + ldrb r1, [r0] + movs r0, #4 + bl sub_0803F5A4 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #3 + orrs r0, r1 + str r0, [r4] +_08046654: + ldr r0, _08046674 + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + ldr r0, _08046678 + strb r5, [r0, #7] +_08046660: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08046668: .4byte gUnknown_2023D0C +_0804666C: .4byte gUnknown_2023F24 +_08046670: .4byte gUnknown_2023EAF +_08046674: .4byte gUnknown_2023EB8 +_08046678: .4byte gUnknown_2023FD6 + thumb_func_end sub_08046628 + + thumb_func_start sub_0804667C +sub_0804667C: @ 0x0804667C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r6, #1 + ldr r0, _080466CC + ldr r0, [r0] + cmp r0, #0 + beq _08046694 + b _0804682E +_08046694: + ldr r1, _080466D0 + ldr r2, _080466D4 + ldrb r3, [r2] + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r4, r0, #0x1f + mov sb, r2 + cmp r4, #0 + bne _08046736 + ldr r2, _080466D8 + ldr r0, _080466DC + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #6] + cmp r0, #0x20 + beq _080466E6 + cmp r0, #0x20 + bgt _080466E0 + cmp r0, #8 + beq _080466FC + b _08046716 + .align 2, 0 +_080466CC: .4byte gUnknown_2023D0C +_080466D0: .4byte gUnknown_2024020 +_080466D4: .4byte gUnknown_2023EAF +_080466D8: .4byte gUnknown_82ED220 +_080466DC: .4byte gUnknown_2023E8E +_080466E0: + cmp r0, #0x40 + beq _080466FC + b _08046716 +_080466E6: + str r4, [sp] + movs r0, #0x12 + adds r1, r3, #0 + movs r2, #0x2e + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #1 + b _08046736 +_080466FC: + mov r0, sb + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #0x10 + movs r2, #0x2e + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r6, r0 + b _08046736 +_08046716: + ldr r1, _08046798 + mov r2, sb + ldrb r0, [r2] + ldrb r7, [r1] + cmp r0, r7 + beq _08046736 + ldr r2, _0804679C + ldrb r1, [r1] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x2e + bne _08046736 + adds r6, #1 +_08046736: + ldr r0, _080467A0 + ldr r4, [r0] + movs r0, #0xa0 + lsls r0, r0, #4 + ands r4, r0 + cmp r4, #0 + bne _0804681C + ldr r2, _0804679C + ldr r3, _080467A4 + ldr r1, _080467A8 + ldrb r5, [r1] + movs r0, #0x58 + mov r8, r0 + mov r0, r8 + muls r0, r5, r0 + ldrb r7, [r3] + adds r0, r0, r7 + movs r7, #0x24 + adds r7, r7, r2 + mov ip, r7 + add r0, ip + ldrb r0, [r0] + mov sb, r1 + mov sl, r2 + adds r7, r3, #0 + cmp r0, #0 + beq _0804681C + ldr r0, _080467AC + lsls r1, r5, #4 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #2] + mov r1, sb + ldrb r0, [r1] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + ldrb r1, [r7] + adds r0, r0, r1 + mov r1, ip + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, r6 + ble _080467B0 + subs r0, r0, r6 + strb r0, [r2] + b _080467B2 + .align 2, 0 +_08046798: .4byte gUnknown_2023EB0 +_0804679C: .4byte gUnknown_2023D28 +_080467A0: .4byte gUnknown_2023F24 +_080467A4: .4byte gUnknown_2023E8C +_080467A8: .4byte gUnknown_2023EAF +_080467AC: .4byte gUnknown_2023FE0 +_080467B0: + strb r4, [r2] +_080467B2: + mov r2, sb + ldrb r3, [r2] + movs r4, #0x58 + adds r0, r3, #0 + muls r0, r4, r0 + mov r1, sl + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0804681C + ldr r1, _08046840 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _08046844 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804681C + ldr r0, _08046848 + strb r3, [r0] + ldrb r1, [r7] + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r2, sb + ldrb r0, [r2] + muls r0, r4, r0 + mov r2, sl + adds r2, #0x24 + adds r0, r0, r2 + ldrb r7, [r7] + adds r0, r0, r7 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + mov r7, sb + ldrb r0, [r7] + bl sub_0803F440 +_0804681C: + ldr r2, _0804684C + ldr r0, [r2] + ldr r1, _08046850 + ands r0, r1 + str r0, [r2] + ldr r1, _08046854 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804682E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08046840: .4byte gUnknown_2023F60 +_08046844: .4byte gUnknown_82FACB4 +_08046848: .4byte gUnknown_2023D08 +_0804684C: .4byte gUnknown_2023F24 +_08046850: .4byte 0xFFFFF7FF +_08046854: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804667C + + thumb_func_start sub_08046858 +sub_08046858: @ 0x08046858 + push {r4, r5, r6, r7, lr} + ldr r1, _0804687C + ldr r0, _08046880 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + cmp r0, #0xaf + bne _08046888 + ldr r1, _08046884 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r6, [r0, #7] + b _08046890 + .align 2, 0 +_0804687C: .4byte gUnknown_2023D28 +_08046880: .4byte gUnknown_2023EAF +_08046884: .4byte gUnknown_20240A8 +_08046888: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08046890: + ldr r1, _0804691C + ldr r3, _08046920 + ldrb r0, [r3] + strb r0, [r1] + ldr r4, _08046924 + ldrb r1, [r3] + movs r0, #0x58 + adds r7, r1, #0 + muls r7, r0, r7 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r7, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xd + ands r0, r1 + rsbs r0, r0, #0 + asrs r5, r0, #0x1f + movs r0, #2 + ands r5, r0 + ldr r2, _08046928 + ldr r0, _0804692C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + mov ip, r3 + cmp r1, #0x2b + bne _080468D0 + adds r5, #1 +_080468D0: + adds r0, r5, #0 + cmp r1, #0x4b + bne _080468D8 + adds r0, #1 +_080468D8: + cmp r1, #0xc8 + bne _080468DE + adds r0, #1 +_080468DE: + adds r2, r0, #0 + cmp r1, #0xd1 + bne _080468E6 + adds r2, #1 +_080468E6: + movs r1, #0 + cmp r6, #0x3f + bne _080468F6 + adds r0, r7, r4 + ldrh r0, [r0] + cmp r0, #0x71 + bne _080468F6 + movs r1, #1 +_080468F6: + lsls r5, r1, #1 + movs r3, #0 + cmp r6, #0x42 + bne _08046910 + mov r0, ip + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0x53 + bne _08046910 + movs r3, #1 +_08046910: + lsls r1, r3, #1 + cmp r6, #0x29 + bne _08046930 + adds r0, r5, #1 + adds r0, r2, r0 + b _08046932 + .align 2, 0 +_0804691C: .4byte gUnknown_2023EB3 +_08046920: .4byte gUnknown_2023EAF +_08046924: .4byte gUnknown_2023D28 +_08046928: .4byte gUnknown_82ED220 +_0804692C: .4byte gUnknown_2023E8E +_08046930: + adds r0, r2, r5 +_08046932: + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r0, #0 + cmp r5, #4 + bls _08046940 + movs r5, #4 +_08046940: + ldr r0, _0804699C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r4 + adds r0, #0x20 + ldrb r4, [r0] + cmp r4, #4 + beq _080469B0 + cmp r4, #0x4b + beq _080469B0 + ldr r1, _080469A0 + mov r2, ip + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080469B0 + ldr r0, _080469A4 + ldr r0, [r0] + movs r1, #0x84 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + bne _080469B0 + bl sub_0806F050 + ldr r2, _080469A8 + lsls r1, r5, #1 + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080469B0 + ldr r1, _080469AC + movs r0, #2 + b _080469B4 + .align 2, 0 +_0804699C: .4byte gUnknown_2023EB0 +_080469A0: .4byte gUnknown_2023F50 +_080469A4: .4byte gUnknown_2022C90 +_080469A8: .4byte gUnknown_82ECAAC +_080469AC: .4byte gUnknown_2023EB5 +_080469B0: + ldr r1, _080469C4 + movs r0, #1 +_080469B4: + strb r0, [r1] + ldr r1, _080469C8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080469C4: .4byte gUnknown_2023EB5 +_080469C8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08046858 + + thumb_func_start sub_080469CC +sub_080469CC: @ 0x080469CC + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, _08046A84 + ldr r5, _08046A88 + ldrb r0, [r5] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + ldr r6, _08046A8C + ldrb r0, [r6] + movs r4, #0x58 + muls r0, r4, r0 + ldr r2, _08046A90 + adds r0, r0, r2 + ldrb r1, [r5] + muls r1, r4, r1 + adds r1, r1, r2 + ldr r7, _08046A94 + ldrh r2, [r7] + ldr r4, _08046A98 + ldrh r4, [r4] + str r4, [sp] + ldr r4, _08046A9C + ldr r4, [r4] + ldrb r4, [r4, #0x13] + str r4, [sp, #4] + ldrb r4, [r6] + str r4, [sp, #8] + ldrb r4, [r5] + str r4, [sp, #0xc] + bl sub_080690BC + ldr r4, _08046AA0 + ldr r1, _08046AA4 + ldrb r1, [r1] + muls r1, r0, r1 + ldr r0, _08046AA8 + ldrb r0, [r0, #0xe] + adds r3, r1, #0 + muls r3, r0, r3 + str r3, [r4] + ldr r1, _08046AAC + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08046A50 + ldr r2, _08046AB0 + ldrh r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + cmp r0, #0xd + bne _08046A50 + lsls r0, r3, #1 + str r0, [r4] +_08046A50: + ldr r1, _08046AB4 + ldr r0, _08046A8C + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08046A72 + ldr r4, _08046AA0 + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + movs r1, #0xa + bl __divsi3 + str r0, [r4] +_08046A72: + ldr r1, _08046AB8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08046A84: .4byte gUnknown_2023F32 +_08046A88: .4byte gUnknown_2023EB0 +_08046A8C: .4byte gUnknown_2023EAF +_08046A90: .4byte gUnknown_2023D28 +_08046A94: .4byte gUnknown_2023E8E +_08046A98: .4byte gUnknown_20240A4 +_08046A9C: .4byte gUnknown_2024140 +_08046AA0: .4byte gUnknown_2023E94 +_08046AA4: .4byte gUnknown_2023EB5 +_08046AA8: .4byte gUnknown_2024118 +_08046AAC: .4byte gUnknown_2023F50 +_08046AB0: .4byte gUnknown_82ED220 +_08046AB4: .4byte gUnknown_2023FE0 +_08046AB8: .4byte gUnknown_2023EB8 + thumb_func_end sub_080469CC + + thumb_func_start sub_08046ABC +sub_08046ABC: @ 0x08046ABC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _08046B74 + adds r0, r5, #0 + bl sub_080A630C + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + movs r1, #0x58 + adds r0, r7, #0 + muls r0, r1, r0 + ldr r2, _08046B78 + adds r0, r0, r2 + muls r1, r5, r1 + adds r1, r1, r2 + ldr r2, _08046B7C + mov r8, r2 + ldrh r2, [r2] + ldr r6, _08046B80 + ldrh r4, [r6] + str r4, [sp] + ldr r4, _08046B84 + ldr r4, [r4] + ldrb r4, [r4, #0x13] + str r4, [sp, #4] + str r7, [sp, #8] + str r5, [sp, #0xc] + bl sub_080690BC + ldr r4, _08046B88 + movs r1, #0 + strh r1, [r6] + ldr r1, _08046B8C + ldrb r1, [r1] + muls r1, r0, r1 + ldr r0, _08046B90 + ldrb r0, [r0, #0xe] + adds r3, r1, #0 + muls r3, r0, r3 + str r3, [r4] + ldr r1, _08046B94 + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08046B4A + ldr r2, _08046B98 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + cmp r0, #0xd + bne _08046B4A + lsls r0, r3, #1 + str r0, [r4] +_08046B4A: + ldr r0, _08046B9C + lsls r1, r7, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08046B68 + ldr r4, _08046B88 + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + movs r1, #0xa + bl __divsi3 + str r0, [r4] +_08046B68: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08046B74: .4byte gUnknown_2023F32 +_08046B78: .4byte gUnknown_2023D28 +_08046B7C: .4byte gUnknown_2023E8E +_08046B80: .4byte gUnknown_20240A4 +_08046B84: .4byte gUnknown_2024140 +_08046B88: .4byte gUnknown_2023E94 +_08046B8C: .4byte gUnknown_2023EB5 +_08046B90: .4byte gUnknown_2024118 +_08046B94: .4byte gUnknown_2023F50 +_08046B98: .4byte gUnknown_82ED220 +_08046B9C: .4byte gUnknown_2023FE0 + thumb_func_end sub_08046ABC + + thumb_func_start sub_08046BA0 +sub_08046BA0: @ 0x08046BA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _08046BD0 + ldr r0, [r5] + muls r0, r4, r0 + movs r1, #0xa + bl __divsi3 + str r0, [r5] + cmp r0, #0 + bne _08046BC0 + cmp r4, #0 + beq _08046BC0 + movs r0, #1 + str r0, [r5] +_08046BC0: + cmp r4, #5 + beq _08046BF0 + cmp r4, #5 + bgt _08046BD4 + cmp r4, #0 + beq _08046BDA + b _08046C72 + .align 2, 0 +_08046BD0: .4byte gUnknown_2023E94 +_08046BD4: + cmp r4, #0x14 + beq _08046C30 + b _08046C72 +_08046BDA: + ldr r2, _08046BEC + ldrb r0, [r2] + movs r1, #8 + orrs r0, r1 + movs r1, #0xfb + ands r0, r1 + movs r1, #0xfd + ands r0, r1 + b _08046C70 + .align 2, 0 +_08046BEC: .4byte gUnknown_2023F20 +_08046BF0: + ldr r2, _08046C20 + ldr r0, _08046C24 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08046C72 + ldr r2, _08046C28 + ldrb r1, [r2] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _08046C72 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08046C2C + movs r0, #0xfd + ands r0, r1 + b _08046C70 + .align 2, 0 +_08046C20: .4byte gUnknown_82ED220 +_08046C24: .4byte gUnknown_2023E8E +_08046C28: .4byte gUnknown_2023F20 +_08046C2C: + movs r0, #4 + b _08046C6E +_08046C30: + ldr r2, _08046C60 + ldr r0, _08046C64 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08046C72 + ldr r2, _08046C68 + ldrb r1, [r2] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _08046C72 + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08046C6C + movs r0, #0xfb + ands r0, r1 + b _08046C70 + .align 2, 0 +_08046C60: .4byte gUnknown_82ED220 +_08046C64: .4byte gUnknown_2023E8E +_08046C68: .4byte gUnknown_2023F20 +_08046C6C: + movs r0, #2 +_08046C6E: + orrs r0, r1 +_08046C70: + strb r0, [r2] +_08046C72: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08046BA0 + + thumb_func_start sub_08046C78 +sub_08046C78: @ 0x08046C78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r3, #0 + ldr r1, _08046CA0 + ldrh r0, [r1] + cmp r0, #0xa5 + bne _08046C8C + b _08046EA0 +_08046C8C: + ldr r0, _08046CA4 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08046CA8 + movs r1, #0x3f + mov r8, r1 + ands r1, r0 + mov r8, r1 + b _08046CB8 + .align 2, 0 +_08046CA0: .4byte gUnknown_2023E8E +_08046CA4: .4byte gUnknown_2024140 +_08046CA8: + ldr r2, _08046D40 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + mov r8, r0 +_08046CB8: + ldr r2, _08046D44 + ldr r0, _08046D48 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + adds r5, r2, #0 + cmp r0, r8 + beq _08046CDA + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r8 + bne _08046CF0 +_08046CDA: + ldr r4, _08046D4C + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + str r0, [r4] + movs r1, #0xa + str r3, [sp, #4] + bl __divsi3 + str r0, [r4] + ldr r3, [sp, #4] +_08046CF0: + ldr r2, _08046D50 + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + adds r4, r2, #0 + cmp r0, #0x1a + bne _08046D68 + mov r1, r8 + cmp r1, #4 + bne _08046D68 + ldr r3, _08046D54 + strb r0, [r3] + ldr r2, _08046D58 + ldrb r0, [r2] + movs r1, #9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08046D5C + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0] + ldr r1, _08046D60 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r2, [r0] + ldr r0, _08046D64 + mov r1, r8 + strb r1, [r0, #6] + ldrb r0, [r4] + ldrb r1, [r3] + bl sub_0813114C + b _08046E04 + .align 2, 0 +_08046D40: .4byte gUnknown_82ED220 +_08046D44: .4byte gUnknown_2023D28 +_08046D48: .4byte gUnknown_2023EAF +_08046D4C: .4byte gUnknown_2023E94 +_08046D50: .4byte gUnknown_2023EB0 +_08046D54: .4byte gUnknown_2023EAE +_08046D58: .4byte gUnknown_2023F20 +_08046D5C: .4byte gUnknown_2023EF4 +_08046D60: .4byte gUnknown_2023EFC +_08046D64: .4byte gUnknown_2023FD6 +_08046D68: + ldr r1, _08046D74 + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r1, #0 + b _08046DE4 + .align 2, 0 +_08046D74: .4byte gUnknown_82EBB38 +_08046D78: + adds r3, #3 + b _08046DE0 +_08046D7C: + ldr r5, _08046EB4 + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, r8 + bne _08046DD8 + adds r1, r3, #1 + adds r1, r1, r5 + ldr r2, _08046EB8 + ldr r7, _08046EBC + ldrb r0, [r7] + movs r6, #0x58 + muls r0, r6, r0 + adds r0, r0, r2 + adds r0, #0x21 + ldrb r4, [r1] + ldrb r0, [r0] + cmp r4, r0 + bne _08046DB2 + adds r0, r3, #2 + adds r0, r0, r5 + ldrb r0, [r0] + str r2, [sp] + str r3, [sp, #4] + bl sub_08046BA0 + ldr r3, [sp, #4] + ldr r2, [sp] +_08046DB2: + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r2 + adds r1, r0, #0 + adds r1, #0x22 + ldrb r1, [r1] + cmp r4, r1 + bne _08046DD8 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r4 + beq _08046DD8 + adds r0, r3, #2 + adds r0, r0, r5 + ldrb r0, [r0] + str r3, [sp, #4] + bl sub_08046BA0 + ldr r3, [sp, #4] +_08046DD8: + adds r3, #3 + ldr r5, _08046EB8 + ldr r4, _08046EBC + ldr r2, _08046EB4 +_08046DE0: + adds r0, r3, r2 + ldrb r0, [r0] +_08046DE4: + cmp r0, #0xff + beq _08046E04 + cmp r0, #0xfe + bne _08046D7C + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r5, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + beq _08046D78 +_08046E04: + ldr r2, _08046EB8 + ldr r5, _08046EBC + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r6, [r0] + cmp r6, #0x19 + bne _08046E82 + ldr r0, _08046EC0 + ldrb r0, [r0] + ldr r7, _08046EC4 + ldrh r1, [r7] + bl sub_08052BBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08046E82 + ldr r1, _08046EC8 + mov r8, r1 + ldrb r4, [r1] + ands r0, r4 + cmp r0, #0 + beq _08046E40 + movs r0, #6 + ands r0, r4 + cmp r0, #6 + bne _08046E82 +_08046E40: + ldr r2, _08046ECC + ldrh r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08046E82 + ldr r3, _08046ED0 + strb r6, [r3] + movs r0, #1 + orrs r0, r4 + mov r1, r8 + strb r0, [r1] + ldr r1, _08046ED4 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0] + ldr r1, _08046ED8 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r2, [r0] + ldr r1, _08046EDC + movs r0, #3 + strb r0, [r1, #6] + ldrb r0, [r5] + ldrb r1, [r3] + bl sub_0813114C +_08046E82: + ldr r0, _08046EC8 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08046EA0 + ldr r2, _08046EE0 + ldr r0, _08046EC0 + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrb r0, [r1, #1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1, #1] +_08046EA0: + ldr r1, _08046EE4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08046EB4: .4byte gUnknown_82EBB38 +_08046EB8: .4byte gUnknown_2023D28 +_08046EBC: .4byte gUnknown_2023EB0 +_08046EC0: .4byte gUnknown_2023EAF +_08046EC4: .4byte gUnknown_2023E8E +_08046EC8: .4byte gUnknown_2023F20 +_08046ECC: .4byte gUnknown_82ED220 +_08046ED0: .4byte gUnknown_2023EAE +_08046ED4: .4byte gUnknown_2023EF4 +_08046ED8: .4byte gUnknown_2023EFC +_08046EDC: .4byte gUnknown_2023FD6 +_08046EE0: .4byte gUnknown_2023FE0 +_08046EE4: .4byte gUnknown_2023EB8 + thumb_func_end sub_08046C78 + + thumb_func_start sub_08046EE8 +sub_08046EE8: @ 0x08046EE8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r6, #0 + movs r5, #0 + ldr r0, _08046F28 + ldrh r1, [r0] + mov sb, r0 + cmp r1, #0xa5 + bne _08046F00 + b _08047148 +_08046F00: + ldr r2, _08046F2C + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08046F12 + b _08047148 +_08046F12: + ldr r0, _08046F30 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08046F34 + movs r1, #0x3f + mov ip, r1 + mov r2, ip + ands r2, r0 + mov ip, r2 + b _08046F38 + .align 2, 0 +_08046F28: .4byte gUnknown_2023E8E +_08046F2C: .4byte gUnknown_82ED220 +_08046F30: .4byte gUnknown_2024140 +_08046F34: + ldrb r1, [r1, #2] + mov ip, r1 +_08046F38: + ldr r2, _08046F6C + ldr r3, _08046F70 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r1, [r0] + adds r7, r2, #0 + mov r8, r3 + cmp r1, #0x1a + bne _08046F7C + mov r0, ip + cmp r0, #4 + bne _08046F7C + ldr r0, _08046F74 + strb r1, [r0] + ldr r0, _08046F78 + mov r1, ip + strb r1, [r0, #6] + ldrb r0, [r3] + movs r1, #0x1a + bl sub_0813114C + b _08047148 + .align 2, 0 +_08046F6C: .4byte gUnknown_2023D28 +_08046F70: .4byte gUnknown_2023EB0 +_08046F74: .4byte gUnknown_2023EAE +_08046F78: .4byte gUnknown_2023FD6 +_08046F7C: + ldr r1, _08046F88 + adds r0, r5, r1 + ldrb r0, [r0] + adds r4, r1, #0 + b _080470CE + .align 2, 0 +_08046F88: .4byte gUnknown_82EBB38 +_08046F8C: + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, ip + beq _08046F96 + b _080470C8 +_08046F96: + adds r2, r5, #1 + adds r3, r2, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r0, #0x21 + ldrb r1, [r3] + adds r3, r2, #0 + ldrb r0, [r0] + cmp r1, r0 + bne _08046FD6 + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _08046FD6 + ldr r2, _08047154 + ldrb r0, [r2] + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08047158 + ldr r0, _0804715C + ldrb r2, [r0] + lsls r2, r2, #4 + adds r2, r2, r1 + ldrb r0, [r2, #1] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #1] +_08046FD6: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r1, r0, #0 + adds r1, #0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0804701C + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0804701C + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0804701C + ldr r2, _08047154 + ldrb r0, [r2] + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08047158 + ldr r0, _0804715C + ldrb r2, [r0] + lsls r2, r2, #4 + adds r2, r2, r1 + ldrb r0, [r2, #1] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #1] +_0804701C: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r0, #0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _08047040 + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0x14 + bne _08047040 + movs r0, #1 + orrs r6, r0 +_08047040: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r1, r0, #0 + adds r1, #0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0804706E + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0804706E + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0x14 + bne _0804706E + movs r0, #1 + orrs r6, r0 +_0804706E: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r0, #0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _08047096 + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #5 + bne _08047096 + movs r0, #2 + orrs r6, r0 + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 +_08047096: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r1, r0, #0 + adds r1, #0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _080470C8 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _080470C8 + adds r0, r5, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #5 + bne _080470C8 + movs r0, #2 + orrs r6, r0 + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 +_080470C8: + adds r5, #3 + adds r0, r5, r4 + ldrb r0, [r0] +_080470CE: + cmp r0, #0xff + beq _080470F2 + cmp r0, #0xfe + beq _080470D8 + b _08046F8C +_080470D8: + mov r2, r8 + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r7, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + beq _080470C8 +_080470F2: + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r7 + adds r0, #0x20 + ldrb r4, [r0] + cmp r4, #0x19 + bne _08047148 + ldr r0, _0804715C + ldrb r0, [r0] + mov r2, sb + ldrh r1, [r2] + bl sub_08052BBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08047148 + movs r0, #3 + ands r6, r0 + cmp r6, #1 + beq _08047148 + ldr r2, _08047160 + mov r0, sb + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08047148 + ldr r0, _08047164 + strb r4, [r0] + ldr r1, _08047168 + movs r0, #3 + strb r0, [r1, #6] + mov r1, r8 + ldrb r0, [r1] + movs r1, #0x19 + bl sub_0813114C +_08047148: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08047154: .4byte gUnknown_2023F20 +_08047158: .4byte gUnknown_2023FE0 +_0804715C: .4byte gUnknown_2023EAF +_08047160: .4byte gUnknown_82ED220 +_08047164: .4byte gUnknown_2023EAE +_08047168: .4byte gUnknown_2023FD6 + thumb_func_end sub_08046EE8 + + thumb_func_start sub_0804716C +sub_0804716C: @ 0x0804716C + push {r4, r5, r6, r7, lr} + adds r6, r2, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r7, _080471A0 + ldr r0, [r7] + muls r0, r4, r0 + movs r1, #0xa + bl __divsi3 + str r0, [r7] + cmp r0, #0 + bne _08047192 + cmp r4, #0 + beq _08047192 + movs r0, #1 + str r0, [r7] +_08047192: + cmp r4, #5 + beq _080471BA + cmp r4, #5 + bgt _080471A4 + cmp r4, #0 + beq _080471AA + b _0804721E + .align 2, 0 +_080471A0: .4byte gUnknown_2023E94 +_080471A4: + cmp r4, #0x14 + beq _080471EC + b _0804721E +_080471AA: + ldrb r0, [r6] + movs r1, #8 + orrs r0, r1 + movs r1, #0xfb + ands r0, r1 + movs r1, #0xfd + ands r0, r1 + b _0804721C +_080471BA: + ldr r0, _080471E4 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + beq _0804721E + ldrb r1, [r6] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804721E + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080471E8 + movs r0, #0xfd + ands r0, r1 + b _0804721C + .align 2, 0 +_080471E4: .4byte gUnknown_82ED220 +_080471E8: + movs r0, #4 + b _0804721A +_080471EC: + ldr r0, _08047214 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + beq _0804721E + ldrb r1, [r6] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804721E + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08047218 + movs r0, #0xfb + ands r0, r1 + b _0804721C + .align 2, 0 +_08047214: .4byte gUnknown_82ED220 +_08047218: + movs r0, #2 +_0804721A: + orrs r0, r1 +_0804721C: + strb r0, [r6] +_0804721E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804716C + + thumb_func_start sub_08047224 +sub_08047224: @ 0x08047224 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + movs r0, #0 + mov r8, r0 + mov r0, sp + mov r1, r8 + strb r1, [r0] + mov r2, sl + cmp r2, #0xa5 + bne _08047256 + movs r0, #0 + b _080473DE +_08047256: + ldr r1, _080472C4 + mov r3, sl + lsls r2, r3, #1 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + str r0, [sp, #8] + ldr r1, _080472C8 + movs r0, #0x58 + ldr r3, [sp, #4] + muls r0, r3, r0 + 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, #8] + cmp r0, r1 + beq _0804728A + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _0804729C +_0804728A: + ldr r4, _080472CC + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + str r0, [r4] + movs r1, #0xa + bl __divsi3 + str r0, [r4] +_0804729C: + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1a + bne _080472D0 + ldr r3, [sp, #8] + cmp r3, #4 + bne _080472D0 + movs r1, #9 + mov r0, sp + ldrb r0, [r0] + orrs r0, r1 + mov r1, sp + strb r0, [r1] + b _08047380 + .align 2, 0 +_080472C4: .4byte gUnknown_82ED220 +_080472C8: .4byte gUnknown_2023D28 +_080472CC: .4byte gUnknown_2023E94 +_080472D0: + ldr r1, _080472EC + mov r2, r8 + adds r0, r2, r1 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xff + beq _08047380 + cmp r0, #0xfe + bne _080472F6 + movs r0, #0x58 + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + b _0804736E + .align 2, 0 +_080472EC: .4byte gUnknown_82EBB38 +_080472F0: + movs r0, #3 + add r8, r0 + b _08047358 +_080472F6: + ldr r7, _080473F0 + mov r1, r8 + adds r0, r1, r7 + ldrb r0, [r0] + ldr r2, [sp, #8] + cmp r0, r2 + bne _08047350 + adds r1, #1 + adds r1, r1, r7 + ldr r2, _080473F4 + movs r0, #0x58 + mov r3, sb + muls r3, r0, r3 + 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 _08047330 + mov r0, r8 + adds r0, #2 + adds r0, r0, r7 + ldrb r0, [r0] + mov r1, sl + mov r2, sp + bl sub_0804716C +_08047330: + adds r0, r5, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r4, r0 + bne _08047350 + ldrb r0, [r6] + cmp r0, r4 + beq _08047350 + mov r0, r8 + adds r0, #2 + adds r0, r0, r7 + ldrb r0, [r0] + mov r1, sl + mov r2, sp + bl sub_0804716C +_08047350: + movs r1, #3 + add r8, r1 + ldr r5, _080473F4 + ldr r2, _080473F0 +_08047358: + mov r3, r8 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _08047380 + cmp r0, #0xfe + bne _080472F6 + movs r0, #0x58 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 +_0804736E: + adds r1, r5, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + beq _080472F0 +_08047380: + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x19 + bne _080473DA + mov r0, sp + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080473DA + ldr r0, [sp, #4] + mov r1, sl + bl sub_08052BBC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bne _080473DA + mov r0, sp + ldrb r3, [r0] + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _080473C2 + movs r0, #6 + ands r0, r3 + cmp r0, #6 + bne _080473DA +_080473C2: + ldr r0, _080473F8 + ldr r1, [sp, #0xc] + add r1, sl + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + beq _080473DA + mov r0, sp + movs r1, #1 + orrs r1, r3 + strb r1, [r0] +_080473DA: + mov r0, sp + ldrb r0, [r0] +_080473DE: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080473F0: .4byte gUnknown_82EBB38 +_080473F4: .4byte gUnknown_2023D28 +_080473F8: .4byte gUnknown_82ED220 + thumb_func_end sub_08047224 + + thumb_func_start sub_080473FC +sub_080473FC: @ 0x080473FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #4] + movs r7, #0 + mov r0, sp + strb r7, [r0] + ldr r2, _08047438 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #6] + mov sb, r1 + ldrb r0, [r0, #7] + mov r8, r0 + cmp r6, #0xa5 + bne _0804743C + movs r0, #0 + b _080474E0 + .align 2, 0 +_08047438: .4byte gUnknown_82F0D54 +_0804743C: + ldr r2, _08047460 + lsls r1, r6, #1 + adds r0, r1, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + mov sl, r0 + str r1, [sp, #8] + ldr r3, [sp, #4] + cmp r3, #0x1a + bne _08047464 + cmp r0, #4 + bne _08047464 + movs r1, #9 + mov r0, sp + strb r1, [r0] + b _080474AA + .align 2, 0 +_08047460: .4byte gUnknown_82ED220 +_08047464: + ldr r0, _080474F0 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _080474AA + adds r4, r1, #0 +_08047470: + ldrb r0, [r4] + cmp r0, #0xfe + beq _0804749C + cmp r0, sl + bne _0804749C + ldrb r5, [r4, #1] + cmp r5, sb + bne _0804748A + ldrb r0, [r4, #2] + adds r1, r6, #0 + mov r2, sp + bl sub_0804716C +_0804748A: + cmp r5, r8 + bne _0804749C + cmp sb, r8 + beq _0804749C + ldrb r0, [r4, #2] + adds r1, r6, #0 + mov r2, sp + bl sub_0804716C +_0804749C: + adds r4, #3 + adds r7, #3 + ldr r1, _080474F0 + adds r0, r7, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _08047470 +_080474AA: + ldr r3, [sp, #4] + cmp r3, #0x19 + bne _080474DC + mov r0, sp + ldrb r2, [r0] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080474C4 + movs r0, #6 + ands r0, r2 + cmp r0, #6 + bne _080474DC +_080474C4: + ldr r0, _080474F4 + ldr r3, [sp, #8] + adds r1, r3, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #0 + beq _080474DC + mov r0, sp + movs r1, #8 + orrs r1, r2 + strb r1, [r0] +_080474DC: + mov r0, sp + ldrb r0, [r0] +_080474E0: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080474F0: .4byte gUnknown_82EBB38 +_080474F4: .4byte gUnknown_82ED220 + thumb_func_end sub_080473FC + + thumb_func_start sub_080474F8 +sub_080474F8: @ 0x080474F8 + push {r4, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + movs r1, #0x64 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _08047530 + ldr r0, [r4] + cmp r0, #0 + beq _0804752A + muls r0, r1, r0 + str r0, [r4] + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _0804752A + movs r0, #1 + str r0, [r4] +_0804752A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08047530: .4byte gUnknown_2023E94 + thumb_func_end sub_080474F8 + + thumb_func_start sub_08047534 +sub_08047534: @ 0x08047534 + push {r4, r5, r6, r7, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + movs r1, #0x64 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _0804758C + ldr r0, [r4] + cmp r0, #0 + beq _08047566 + muls r0, r1, r0 + str r0, [r4] + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08047566 + movs r0, #1 + str r0, [r4] +_08047566: + ldr r7, _08047590 + ldr r6, _08047594 + ldrb r2, [r6] + movs r5, #0x58 + adds r0, r2, #0 + muls r0, r5, r0 + adds r1, r0, r7 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0804759C + ldr r1, _08047598 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #7] + ldrb r6, [r0, #0x1a] + b _080475B6 + .align 2, 0 +_0804758C: .4byte gUnknown_2023E94 +_08047590: .4byte gUnknown_2023D28 +_08047594: .4byte gUnknown_2023EB0 +_08047598: .4byte gUnknown_20240A8 +_0804759C: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080475B6: + ldr r1, _08047678 + ldr r5, _0804767C + ldrb r0, [r5] + strb r0, [r1] + cmp r4, #0x27 + bne _080475F4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + bhs _080475F4 + ldrb r0, [r5] + movs r1, #0x27 + bl sub_0813117C + ldr r2, _08047680 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] +_080475F4: + ldr r2, _08047684 + ldr r3, _0804767C + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, r2, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + adds r5, r2, #0 + cmp r1, #0 + bne _080476C4 + ldr r2, _08047688 + ldr r0, _0804768C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x65 + beq _08047646 + ldr r0, _08047690 + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _08047646 + ldr r0, _08047680 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _080476C4 +_08047646: + ldrb r0, [r3] + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r1, [r0, #0x28] + ldr r2, _08047694 + ldr r0, [r2] + cmp r1, r0 + bgt _080476C4 + subs r0, r1, #1 + str r0, [r2] + ldr r1, _08047690 + ldrb r3, [r3] + lsls r0, r3, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bge _0804769C + ldr r0, _08047698 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _080476C4 + .align 2, 0 +_08047678: .4byte gUnknown_2023EB3 +_0804767C: .4byte gUnknown_2023EB0 +_08047680: .4byte gUnknown_2024020 +_08047684: .4byte gUnknown_2023D28 +_08047688: .4byte gUnknown_82ED220 +_0804768C: .4byte gUnknown_2023E8E +_08047690: .4byte gUnknown_2023FE0 +_08047694: .4byte gUnknown_2023E94 +_08047698: .4byte gUnknown_2023F20 +_0804769C: + ldr r0, _080476D4 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _080476C4 + ldr r2, _080476D8 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080476DC + adds r0, r3, #0 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r0, [r0, #0x2e] + strh r0, [r1] +_080476C4: + ldr r1, _080476E0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080476D4: .4byte gUnknown_2024020 +_080476D8: .4byte gUnknown_2023F20 +_080476DC: .4byte gUnknown_2023EAC +_080476E0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08047534 + + thumb_func_start sub_080476E4 +sub_080476E4: @ 0x080476E4 + push {r4, r5, r6, r7, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + movs r1, #0x64 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _0804773C + ldr r0, [r4] + cmp r0, #0 + beq _08047716 + muls r0, r1, r0 + str r0, [r4] + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08047716 + movs r0, #1 + str r0, [r4] +_08047716: + ldr r7, _08047740 + ldr r6, _08047744 + ldrb r2, [r6] + movs r5, #0x58 + adds r0, r2, #0 + muls r0, r5, r0 + adds r1, r0, r7 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0804774C + ldr r1, _08047748 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #7] + ldrb r6, [r0, #0x1a] + b _08047766 + .align 2, 0 +_0804773C: .4byte gUnknown_2023E94 +_08047740: .4byte gUnknown_2023D28 +_08047744: .4byte gUnknown_2023EB0 +_08047748: .4byte gUnknown_20240A8 +_0804774C: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08047766: + ldr r1, _0804780C + ldr r5, _08047810 + ldrb r0, [r5] + strb r0, [r1] + cmp r4, #0x27 + bne _080477A4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + bhs _080477A4 + ldrb r0, [r5] + movs r1, #0x27 + bl sub_0813117C + ldr r2, _08047814 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] +_080477A4: + ldr r4, _08047818 + ldr r6, _08047810 + ldrb r2, [r6] + movs r7, #0x58 + adds r3, r2, #0 + muls r3, r7, r3 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08047850 + ldr r5, _0804781C + lsls r0, r2, #4 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _080477E2 + ldr r0, _08047814 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08047850 +_080477E2: + adds r0, r3, r4 + ldrh r1, [r0, #0x28] + ldr r2, _08047820 + ldr r0, [r2] + cmp r1, r0 + bgt _08047850 + subs r0, r1, #1 + str r0, [r2] + ldrb r3, [r6] + lsls r0, r3, #4 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bge _08047828 + ldr r0, _08047824 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _08047850 + .align 2, 0 +_0804780C: .4byte gUnknown_2023EB3 +_08047810: .4byte gUnknown_2023EB0 +_08047814: .4byte gUnknown_2024020 +_08047818: .4byte gUnknown_2023D28 +_0804781C: .4byte gUnknown_2023FE0 +_08047820: .4byte gUnknown_2023E94 +_08047824: .4byte gUnknown_2023F20 +_08047828: + ldr r0, _08047860 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08047850 + ldr r2, _08047864 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08047868 + adds r0, r3, #0 + muls r0, r7, r0 + adds r0, r0, r4 + ldrh r0, [r0, #0x2e] + strh r0, [r1] +_08047850: + ldr r1, _0804786C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08047860: .4byte gUnknown_2024020 +_08047864: .4byte gUnknown_2023F20 +_08047868: .4byte gUnknown_2023EAC +_0804786C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080476E4 + + thumb_func_start sub_08047870 +sub_08047870: @ 0x08047870 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _080478B4 + ldr r0, [r0] + cmp r0, #0 + beq _0804787E + b _080479F6 +_0804787E: + ldr r0, _080478B8 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + ldr r5, _080478BC + cmp r0, #0 + beq _080478CC + ldrh r0, [r5] + cmp r0, #0x90 + beq _080478CC + cmp r0, #0xa4 + beq _080478CC + ldr r4, _080478C0 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080478C4 + str r0, [r4] + ldr r1, _080478C8 + ldrb r0, [r1, #0x18] + adds r0, #1 + strb r0, [r1, #0x18] + ldrb r0, [r1, #0x19] + adds r0, #1 + strb r0, [r1, #0x19] + b _080479F6 + .align 2, 0 +_080478B4: .4byte gUnknown_2023D0C +_080478B8: .4byte gUnknown_2023F24 +_080478BC: .4byte gUnknown_2023E8E +_080478C0: .4byte gUnknown_2023EB8 +_080478C4: .4byte gUnknown_8289141 +_080478C8: .4byte gUnknown_2024118 +_080478CC: + ldr r2, _08047938 + ldrh r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _080478F2 + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080478F2 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080478FA +_080478F2: + ldr r0, _0804793C + ldrb r0, [r0, #0x19] + cmp r0, #0 + bne _080479C8 +_080478FA: + ldr r0, _08047940 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _080479E8 + ldr r1, _08047944 + ldr r3, _08047948 + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _0804794C + ldr r0, _08047950 + ldrb r1, [r0] + movs r0, #0x58 + adds r4, r1, #0 + muls r4, r0, r4 + adds r0, r2, #0 + adds r0, #0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + adds r7, r3, #0 + mov ip, r2 + cmp r1, #0 + beq _08047958 + ldr r0, _08047954 + ldrb r6, [r0] + b _08047982 + .align 2, 0 +_08047938: .4byte gUnknown_82ED220 +_0804793C: .4byte gUnknown_2024118 +_08047940: .4byte gUnknown_2023F20 +_08047944: .4byte gUnknown_2023D08 +_08047948: .4byte gUnknown_2023EAF +_0804794C: .4byte gUnknown_2023D28 +_08047950: .4byte gUnknown_2023EB0 +_08047954: .4byte gUnknown_2023EB6 +_08047958: + ldr r3, _08047978 + ldrb r0, [r3] + cmp r0, #1 + bls _08047980 + mov r1, ip + adds r0, r4, r1 + ldrh r2, [r0, #0x28] + ldr r0, _0804797C + ldr r1, [r0] + movs r6, #1 + adds r4, r0, #0 + cmp r2, r1 + ble _08047984 + ldrb r6, [r3] + b _08047984 + .align 2, 0 +_08047978: .4byte gUnknown_2023EB6 +_0804797C: .4byte gUnknown_2023E94 +_08047980: + ldrb r6, [r3] +_08047982: + ldr r4, _080479D4 +_08047984: + ldrh r1, [r5] + ldr r5, _080479D8 + ldrb r2, [r5, #0x18] + ldr r0, _080479DC + ldrh r3, [r0] + ldr r0, [r4] + str r0, [sp] + ldrb r4, [r7] + movs r0, #0x58 + muls r0, r4, r0 + add r0, ip + adds r0, #0x2b + ldrb r0, [r0] + str r0, [sp, #4] + ldrb r4, [r7] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r4, _080479E0 + adds r0, r0, r4 + str r0, [sp, #8] + str r6, [sp, #0xc] + movs r0, #0 + bl sub_080339A4 + ldrb r0, [r5, #0x18] + adds r0, #1 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0x19] + adds r0, #1 + strb r0, [r5, #0x19] + ldrb r0, [r7] + bl sub_0803F440 +_080479C8: + ldr r1, _080479E4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + b _080479F6 + .align 2, 0 +_080479D4: .4byte gUnknown_2023E94 +_080479D8: .4byte gUnknown_2024118 +_080479DC: .4byte gUnknown_2024184 +_080479E0: .4byte gUnknown_2023F60 +_080479E4: .4byte gUnknown_2023EB8 +_080479E8: + ldr r4, _08047A00 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _08047A04 + str r0, [r4] +_080479F6: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08047A00: .4byte gUnknown_2023EB8 +_08047A04: .4byte gUnknown_8289141 + thumb_func_end sub_08047870 + + thumb_func_start sub_08047A08 +sub_08047A08: @ 0x08047A08 + push {lr} + ldr r0, _08047A20 + ldr r0, [r0] + cmp r0, #0 + bne _08047A1A + ldr r1, _08047A24 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_08047A1A: + pop {r0} + bx r0 + .align 2, 0 +_08047A20: .4byte gUnknown_2023D0C +_08047A24: .4byte gUnknown_2023EB8 + thumb_func_end sub_08047A08 + + thumb_func_start sub_08047A28 +sub_08047A28: @ 0x08047A28 + push {r4, lr} + ldr r0, _08047A8C + ldr r0, [r0] + cmp r0, #0 + bne _08047AEA + ldr r0, _08047A90 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _08047AE2 + ldr r0, _08047A94 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r2, _08047A98 + strb r0, [r2] + ldr r1, _08047A9C + ldrb r2, [r2] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08047AA8 + ldr r0, _08047AA0 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _08047AA8 + ldr r0, _08047AA4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08047AA8 + movs r0, #0x80 + adds r1, r2, #0 + bl sub_0803F5A4 + b _08047AE2 + .align 2, 0 +_08047A8C: .4byte gUnknown_2023D0C +_08047A90: .4byte gUnknown_2023F20 +_08047A94: .4byte gUnknown_2023EB8 +_08047A98: .4byte gUnknown_2023D08 +_08047A9C: .4byte gUnknown_2023D28 +_08047AA0: .4byte gUnknown_2023F60 +_08047AA4: .4byte gUnknown_2023F24 +_08047AA8: + ldr r0, _08047AF0 + ldr r0, [r0] + ldr r1, _08047AF4 + cmp r0, r1 + bgt _08047AB6 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_08047AB6: + movs r0, #0 + bl sub_08033D54 + ldr r4, _08047AF8 + ldrb r0, [r4] + bl sub_0803F440 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08047AE2 + ldr r0, _08047AF0 + ldr r0, [r0] + cmp r0, #0 + ble _08047AE2 + ldr r0, _08047AFC + ldrb r1, [r0, #5] + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #5] +_08047AE2: + ldr r1, _08047B00 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_08047AEA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08047AF0: .4byte gUnknown_2023E94 +_08047AF4: .4byte 0x00002710 +_08047AF8: .4byte gUnknown_2023D08 +_08047AFC: .4byte gUnknown_3005A70 +_08047B00: .4byte gUnknown_2023EB8 + thumb_func_end sub_08047A28 + + thumb_func_start sub_08047B04 +sub_08047B04: @ 0x08047B04 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _08047B2C + ldr r0, [r0] + cmp r0, #0 + beq _08047B12 + b _08047EE2 +_08047B12: + ldr r0, _08047B30 + ldr r0, [r0] + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _08047B34 + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08047B34 + movs r6, #0x3f + ands r6, r1 + b _08047B44 + .align 2, 0 +_08047B2C: .4byte gUnknown_2023D0C +_08047B30: .4byte gUnknown_2024140 +_08047B34: + ldr r2, _08047BD0 + ldr r0, _08047BD4 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r6, [r0, #2] +_08047B44: + ldr r0, _08047BD8 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08047B52 + b _08047EB4 +_08047B52: + ldr r0, _08047BDC + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r7, _08047BE0 + strb r0, [r7] + ldr r1, _08047BE4 + ldrb r2, [r7] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08047C68 + ldr r0, _08047BE8 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r4, r1, r0 + ldrb r1, [r4, #0xa] + mov ip, r0 + cmp r1, #0 + beq _08047C68 + ldr r0, _08047BEC + ldr r3, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + ands r3, r0 + cmp r3, #0 + bne _08047C68 + adds r5, r1, #0 + ldr r6, _08047BF0 + ldr r4, [r6] + cmp r5, r4 + blt _08047BFC + ldr r0, _08047BF4 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + bne _08047BB6 + str r4, [r1] +_08047BB6: + ldrb r0, [r7] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + ldr r2, [r6] + ldrb r0, [r1, #0xa] + subs r0, r0, r2 + strb r0, [r1, #0xa] + ldr r1, _08047BF8 + ldr r0, [r6] + str r0, [r1] + b _08047C2C + .align 2, 0 +_08047BD0: .4byte gUnknown_82ED220 +_08047BD4: .4byte gUnknown_2023E8E +_08047BD8: .4byte gUnknown_2023F20 +_08047BDC: .4byte gUnknown_2023EB8 +_08047BE0: .4byte gUnknown_2023D08 +_08047BE4: .4byte gUnknown_2023D28 +_08047BE8: .4byte gUnknown_2023F60 +_08047BEC: .4byte gUnknown_2023F24 +_08047BF0: .4byte gUnknown_2023E94 +_08047BF4: .4byte gUnknown_2024020 +_08047BF8: .4byte gUnknown_2023E98 +_08047BFC: + ldr r0, _08047C54 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + bne _08047C10 + str r5, [r1] +_08047C10: + ldr r2, _08047C58 + ldrb r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #0xa] + str r0, [r2] + ldrb r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + strb r3, [r0, #0xa] +_08047C2C: + ldr r0, _08047C5C + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _08047C40 + b _08047EDA +_08047C40: + ldr r4, _08047C60 + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + bl sub_0803F73C + ldr r0, _08047C64 + str r0, [r4] + b _08047EE2 + .align 2, 0 +_08047C54: .4byte gUnknown_2024020 +_08047C58: .4byte gUnknown_2023E98 +_08047C5C: .4byte gUnknown_2023D08 +_08047C60: .4byte gUnknown_2023EB8 +_08047C64: .4byte gUnknown_8289C83 +_08047C68: + ldr r0, _08047CA8 + ldr r2, [r0] + ldr r1, _08047CAC + ands r2, r1 + str r2, [r0] + ldr r1, _08047CB0 + ldr r5, [r1] + mov ip, r0 + adds r7, r1, #0 + cmp r5, #0 + bge _08047CBC + ldr r4, _08047CB4 + ldr r2, _08047CB8 + ldrb r0, [r2] + movs r3, #0x58 + adds r1, r0, #0 + muls r1, r3, r1 + adds r1, r1, r4 + ldrh r0, [r1, #0x28] + subs r0, r0, r5 + strh r0, [r1, #0x28] + ldrb r0, [r2] + muls r0, r3, r0 + adds r1, r0, r4 + ldrh r3, [r1, #0x2c] + ldrh r0, [r1, #0x28] + adds r5, r2, #0 + cmp r0, r3 + bhi _08047CA4 + b _08047E7A +_08047CA4: + strh r3, [r1, #0x28] + b _08047E7A + .align 2, 0 +_08047CA8: .4byte gUnknown_2023F24 +_08047CAC: .4byte 0xFFFFFEFF +_08047CB0: .4byte gUnknown_2023E94 +_08047CB4: .4byte gUnknown_2023D28 +_08047CB8: .4byte gUnknown_2023D08 +_08047CBC: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _08047CD8 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r2, r0 + mov r0, ip + str r2, [r0] + ldr r5, _08047CD4 + b _08047D20 + .align 2, 0 +_08047CD4: .4byte gUnknown_2023D08 +_08047CD8: + ldr r0, _08047D00 + ldr r2, _08047D04 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r5 + str r0, [r1] + ldr r0, _08047D08 + ldr r0, [r0] + ldrb r0, [r0, #1] + adds r5, r2, #0 + cmp r0, #0 + bne _08047D14 + ldr r1, _08047D0C + ldrb r0, [r5] + adds r0, r0, r1 + ldr r1, _08047D10 + b _08047D1C + .align 2, 0 +_08047D00: .4byte gUnknown_2023E9C +_08047D04: .4byte gUnknown_2023D08 +_08047D08: .4byte gUnknown_2023EB8 +_08047D0C: .4byte gUnknown_2023F2C +_08047D10: .4byte gUnknown_2023EAF +_08047D14: + ldr r1, _08047D40 + ldrb r0, [r5] + adds r0, r0, r1 + ldr r1, _08047D44 +_08047D1C: + ldrb r1, [r1] + strb r1, [r0] +_08047D20: + ldr r4, _08047D48 + ldrb r0, [r5] + movs r3, #0x58 + muls r0, r3, r0 + adds r2, r0, r4 + ldrh r0, [r2, #0x28] + ldr r1, [r7] + cmp r0, r1 + ble _08047D50 + subs r0, r0, r1 + strh r0, [r2, #0x28] + ldr r0, _08047D4C + str r1, [r0] + adds r7, r0, #0 + b _08047D60 + .align 2, 0 +_08047D40: .4byte gUnknown_2023F2C +_08047D44: .4byte gUnknown_2023EB0 +_08047D48: .4byte gUnknown_2023D28 +_08047D4C: .4byte gUnknown_2023E98 +_08047D50: + ldr r2, _08047DD4 + str r0, [r2] + ldrb r0, [r5] + muls r0, r3, r0 + adds r0, r0, r4 + movs r1, #0 + strh r1, [r0, #0x28] + adds r7, r2, #0 +_08047D60: + ldr r2, _08047DD8 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #4 + adds r3, r0, r1 + ldr r0, [r3] + adds r4, r2, #0 + cmp r0, #0 + bne _08047D88 + mov r1, ip + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0xd + ands r0, r1 + cmp r0, #0 + bne _08047D88 + ldr r0, [r7] + str r0, [r3] +_08047D88: + cmp r6, #8 + bhi _08047E10 + mov r1, ip + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0xd + ands r0, r1 + cmp r0, #0 + bne _08047E0C + ldr r0, _08047DDC + ldrh r0, [r0] + cmp r0, #0xdc + beq _08047E0C + ldr r3, _08047DE0 + ldrb r0, [r5] + lsls r0, r0, #4 + adds r1, r3, #4 + adds r0, r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #8 + adds r0, r0, r1 + str r2, [r0] + ldr r0, _08047DE4 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08047DEC + ldrb r0, [r5] + lsls r0, r0, #4 + adds r0, r0, r3 + ldr r2, _08047DE8 + b _08047DF4 + .align 2, 0 +_08047DD4: .4byte gUnknown_2023E98 +_08047DD8: .4byte gUnknown_2024020 +_08047DDC: .4byte gUnknown_2023E8E +_08047DE0: .4byte gUnknown_2023FE0 +_08047DE4: .4byte gUnknown_2023EB8 +_08047DE8: .4byte gUnknown_2023EAF +_08047DEC: + ldrb r0, [r5] + lsls r0, r0, #4 + adds r0, r0, r3 + ldr r2, _08047E08 +_08047DF4: + ldrb r1, [r2] + strb r1, [r0, #0xc] + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r2] + strb r1, [r0, #0x10] + b _08047E7A + .align 2, 0 +_08047E08: .4byte gUnknown_2023EB0 +_08047E0C: + cmp r6, #8 + bls _08047E7A +_08047E10: + mov r1, ip + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0xd + ands r0, r1 + cmp r0, #0 + bne _08047E7A + ldr r3, _08047E54 + ldrb r0, [r5] + lsls r0, r0, #4 + adds r1, r3, #0 + adds r1, #8 + adds r0, r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0xc + adds r0, r0, r1 + str r2, [r0] + ldr r0, _08047E58 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08047E60 + ldrb r0, [r5] + lsls r0, r0, #4 + adds r0, r0, r3 + ldr r2, _08047E5C + b _08047E68 + .align 2, 0 +_08047E54: .4byte gUnknown_2023FE0 +_08047E58: .4byte gUnknown_2023EB8 +_08047E5C: .4byte gUnknown_2023EAF +_08047E60: + ldrb r0, [r5] + lsls r0, r0, #4 + adds r0, r0, r3 + ldr r2, _08047EA8 +_08047E68: + ldrb r1, [r2] + strb r1, [r0, #0xd] + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r2] + strb r1, [r0, #0x11] +_08047E7A: + mov r1, ip + ldr r0, [r1] + ldr r1, _08047EAC + ands r0, r1 + mov r1, ip + str r0, [r1] + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _08047EB0 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x2a + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r5] + bl sub_0803F440 + b _08047EDA + .align 2, 0 +_08047EA8: .4byte gUnknown_2023EB0 +_08047EAC: .4byte 0xFFEFFFFF +_08047EB0: .4byte gUnknown_2023D50 +_08047EB4: + ldr r0, _08047EEC + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _08047EF0 + strb r0, [r1] + ldr r2, _08047EF4 + ldrb r1, [r1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, #0 + bne _08047EDA + ldr r0, _08047EF8 + str r0, [r1] +_08047EDA: + ldr r1, _08047EEC + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_08047EE2: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08047EEC: .4byte gUnknown_2023EB8 +_08047EF0: .4byte gUnknown_2023D08 +_08047EF4: .4byte gUnknown_2024020 +_08047EF8: .4byte 0x0000FFFF + thumb_func_end sub_08047B04 + + thumb_func_start sub_08047EFC +sub_08047EFC: @ 0x08047EFC + push {lr} + ldr r0, _08047F38 + ldr r0, [r0] + cmp r0, #0 + bne _08047F32 + ldr r0, _08047F3C + ldrb r0, [r0] + cmp r0, #2 + bne _08047F2A + ldr r0, _08047F40 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _08047F2A + ldr r0, _08047F44 + ldrb r1, [r0] + movs r0, #0xd9 + bl sub_0803F5A4 + ldr r1, _08047F48 + movs r0, #1 + strb r0, [r1, #7] +_08047F2A: + ldr r1, _08047F4C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_08047F32: + pop {r0} + bx r0 + .align 2, 0 +_08047F38: .4byte gUnknown_2023D0C +_08047F3C: .4byte gUnknown_2023EB5 +_08047F40: .4byte gUnknown_2023F20 +_08047F44: .4byte gUnknown_2023EAF +_08047F48: .4byte gUnknown_2023FD6 +_08047F4C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08047EFC + + thumb_func_start sub_08047F50 +sub_08047F50: @ 0x08047F50 + push {r4, lr} + ldr r0, _08047F88 + ldr r0, [r0] + cmp r0, #0 + bne _08048010 + ldr r4, _08047F8C + ldr r0, _08047F90 + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _08047F94 + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _08048008 + movs r0, #0xfe + ands r0, r2 + cmp r0, #0x10 + beq _08047FC2 + cmp r0, #0x10 + bgt _08047F9E + cmp r0, #4 + beq _08047FB2 + cmp r0, #4 + bgt _08047F98 + cmp r0, #2 + beq _08047FAC + b _08047FC2 + .align 2, 0 +_08047F88: .4byte gUnknown_2023D0C +_08047F8C: .4byte gUnknown_2023D08 +_08047F90: .4byte gUnknown_2023EB0 +_08047F94: .4byte gUnknown_2023F20 +_08047F98: + cmp r0, #8 + beq _08048008 + b _08047FC2 +_08047F9E: + cmp r0, #0x40 + beq _08047FC2 + cmp r0, #0x40 + bgt _08047FC2 + cmp r0, #0x20 + beq _08048008 + b _08047FC2 +_08047FAC: + movs r0, #0 + movs r1, #0xe + b _08047FB6 +_08047FB2: + movs r0, #0 + movs r1, #0xc +_08047FB6: + bl sub_0803412C + ldrb r0, [r4] + bl sub_0803F440 + b _08048008 +_08047FC2: + ldrb r1, [r1] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08047FD2 + movs r0, #0 + movs r1, #0xe + b _08047FDE +_08047FD2: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08047FF0 + movs r0, #0 + movs r1, #0xc +_08047FDE: + bl sub_0803412C + ldr r0, _08047FEC + ldrb r0, [r0] + bl sub_0803F440 + b _08048008 + .align 2, 0 +_08047FEC: .4byte gUnknown_2023D08 +_08047FF0: + movs r0, #0x28 + ands r0, r1 + cmp r0, #0 + bne _08048008 + movs r0, #0 + movs r1, #0xd + bl sub_0803412C + ldr r0, _08048018 + ldrb r0, [r0] + bl sub_0803F440 +_08048008: + ldr r1, _0804801C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_08048010: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08048018: .4byte gUnknown_2023D08 +_0804801C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08047F50 + + thumb_func_start sub_08048020 +sub_08048020: @ 0x08048020 + push {r4, r5, r6, r7, lr} + movs r3, #0 + ldr r0, _0804805C + ldr r0, [r0] + cmp r0, #0 + beq _0804802E + b _080481C0 +_0804802E: + ldr r1, _08048060 + ldrb r2, [r1] + movs r4, #1 + adds r0, r4, #0 + ands r0, r2 + adds r6, r1, #0 + ldr r7, _08048064 + cmp r0, #0 + beq _0804806C + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0804804E + ldrb r0, [r7, #6] + cmp r0, #2 + bls _0804806C +_0804804E: + ldr r1, _08048068 + ldrb r0, [r7, #6] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r3, [r0] + strb r4, [r7, #7] + b _080481AA + .align 2, 0 +_0804805C: .4byte gUnknown_2023D0C +_08048060: .4byte gUnknown_2023F20 +_08048064: .4byte gUnknown_2023FD6 +_08048068: .4byte gUnknown_85AB9A0 +_0804806C: + movs r0, #1 + strb r0, [r7, #7] + ldrb r5, [r6] + movs r0, #0xfe + ands r0, r5 + cmp r0, #0x10 + beq _080480B0 + cmp r0, #0x10 + bgt _08048092 + cmp r0, #4 + beq _080480AC + cmp r0, #4 + bgt _0804808C + cmp r0, #2 + beq _080480A8 + b _080480F8 +_0804808C: + cmp r0, #8 + beq _08048104 + b _080480F8 +_08048092: + cmp r0, #0x40 + beq _080480B4 + cmp r0, #0x40 + bgt _080480A2 + cmp r0, #0x20 + bne _080480A0 + b _080481A4 +_080480A0: + b _080480F8 +_080480A2: + cmp r0, #0x80 + beq _080480B8 + b _080480F8 +_080480A8: + movs r3, #0xde + b _080481AE +_080480AC: + movs r3, #0xdd + b _080481AE +_080480B0: + movs r3, #0xda + b _080481AE +_080480B4: + movs r3, #0x99 + b _080481AE +_080480B8: + ldr r4, _080480E0 + ldr r2, _080480E4 + ldr r3, _080480E8 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2e] + strh r0, [r4] + ldr r1, _080480EC + ldrb r0, [r3] + strb r0, [r1] + movs r0, #0x3f + ands r0, r5 + strb r0, [r6] + bl sub_0803F73C + ldr r1, _080480F0 + ldr r0, _080480F4 + b _080481BE + .align 2, 0 +_080480E0: .4byte gUnknown_2023EAC +_080480E4: .4byte gUnknown_2023D28 +_080480E8: .4byte gUnknown_2023EB0 +_080480EC: .4byte gUnknown_2023EB3 +_080480F0: .4byte gUnknown_2023EB8 +_080480F4: .4byte gUnknown_8289D9E +_080480F8: + adds r2, r6, #0 + ldrb r5, [r2] + movs r0, #8 + ands r0, r5 + cmp r0, #0 + beq _08048108 +_08048104: + movs r3, #0x1b + b _080481AE +_08048108: + movs r0, #0x10 + ands r0, r5 + cmp r0, #0 + beq _08048130 + movs r0, #0xef + ands r0, r5 + movs r1, #0xfd + ands r0, r1 + movs r1, #0xfb + ands r0, r1 + strb r0, [r2] + bl sub_0803F73C + ldr r1, _08048128 + ldr r0, _0804812C + b _080481BE + .align 2, 0 +_08048128: .4byte gUnknown_2023EB8 +_0804812C: .4byte gUnknown_8289756 +_08048130: + movs r0, #0x40 + ands r0, r5 + cmp r0, #0 + beq _08048150 + movs r0, #0x3f + ands r0, r5 + strb r0, [r2] + bl sub_0803F73C + ldr r1, _08048148 + ldr r0, _0804814C + b _080481BE + .align 2, 0 +_08048148: .4byte gUnknown_2023EB8 +_0804814C: .4byte gUnknown_828974F +_08048150: + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _08048198 + ldr r4, _08048180 + ldr r2, _08048184 + ldr r3, _08048188 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2e] + strh r0, [r4] + ldr r1, _0804818C + ldrb r0, [r3] + strb r0, [r1] + movs r0, #0x3f + ands r0, r5 + strb r0, [r6] + bl sub_0803F73C + ldr r1, _08048190 + ldr r0, _08048194 + b _080481BE + .align 2, 0 +_08048180: .4byte gUnknown_2023EAC +_08048184: .4byte gUnknown_2023D28 +_08048188: .4byte gUnknown_2023EB0 +_0804818C: .4byte gUnknown_2023EB3 +_08048190: .4byte gUnknown_2023EB8 +_08048194: .4byte gUnknown_8289D9E +_08048198: + movs r0, #0x20 + ands r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080481A8 +_080481A4: + movs r3, #0xe5 + b _080481AE +_080481A8: + strb r0, [r7, #7] +_080481AA: + cmp r3, #0 + beq _080481B8 +_080481AE: + adds r0, r3, #0 + ldr r1, _080481C8 + ldrb r1, [r1] + bl sub_0803F5A4 +_080481B8: + ldr r1, _080481CC + ldr r0, [r1] + adds r0, #1 +_080481BE: + str r0, [r1] +_080481C0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080481C8: .4byte gUnknown_2023EAF +_080481CC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08048020 + + thumb_func_start sub_080481D0 +sub_080481D0: @ 0x080481D0 + push {r4, lr} + ldr r0, _08048200 + ldr r0, [r0] + cmp r0, #0 + bne _080481FA + ldr r4, _08048204 + ldr r1, [r4] + ldrb r0, [r1, #1] + ldrb r1, [r1, #2] + lsls r1, r1, #8 + orrs r0, r1 + ldr r1, _08048208 + ldrb r1, [r1] + bl sub_0803F5A4 + ldr r0, [r4] + adds r0, #3 + str r0, [r4] + ldr r1, _0804820C + movs r0, #1 + strb r0, [r1, #7] +_080481FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08048200: .4byte gUnknown_2023D0C +_08048204: .4byte gUnknown_2023EB8 +_08048208: .4byte gUnknown_2023EAF +_0804820C: .4byte gUnknown_2023FD6 + thumb_func_end sub_080481D0 + + thumb_func_start sub_08048210 +sub_08048210: @ 0x08048210 + push {r4, r5, lr} + ldr r5, _08048244 + ldr r0, _08048248 + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _0804824C + ldr r0, [r4] + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0 + bl sub_08033B74 + ldrb r0, [r5] + bl sub_0803F440 + ldr r0, [r4] + adds r0, #3 + str r0, [r4] + ldr r1, _08048250 + movs r0, #1 + strb r0, [r1, #7] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08048244: .4byte gUnknown_2023D08 +_08048248: .4byte gUnknown_2023EAF +_0804824C: .4byte gUnknown_2023EB8 +_08048250: .4byte gUnknown_2023FD6 + thumb_func_end sub_08048210 + + thumb_func_start sub_08048254 +sub_08048254: @ 0x08048254 + push {r4, r5, r6, lr} + ldr r0, _08048270 + ldr r4, [r0] + cmp r4, #0 + bne _080482A2 + ldr r6, _08048274 + ldrb r0, [r6, #7] + cmp r0, #0 + bne _0804827C + ldr r1, _08048278 + ldr r0, [r1] + adds r0, #3 + str r0, [r1] + b _080482A2 + .align 2, 0 +_08048270: .4byte gUnknown_2023D0C +_08048274: .4byte gUnknown_2023FD6 +_08048278: .4byte gUnknown_2023EB8 +_0804827C: + ldr r5, _080482A8 + ldr r2, [r5] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r3, _080482AC + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r1 + blo _080482A2 + movs r1, #0 + strh r4, [r3] + adds r0, r2, #3 + str r0, [r5] + strb r1, [r6, #7] +_080482A2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080482A8: .4byte gUnknown_2023EB8 +_080482AC: .4byte gUnknown_2023FD0 + thumb_func_end sub_08048254 + + thumb_func_start sub_080482B0 +sub_080482B0: @ 0x080482B0 + push {r4, r5, lr} + ldr r0, _080482F4 + ldr r0, [r0] + cmp r0, #0 + bne _080482EE + ldr r4, _080482F8 + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r5, _080482FC + ldrb r0, [r5, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _08048300 + ldrb r1, [r1] + bl sub_0803F5A4 + ldr r0, [r4] + adds r0, #5 + str r0, [r4] + movs r0, #1 + strb r0, [r5, #7] +_080482EE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080482F4: .4byte gUnknown_2023D0C +_080482F8: .4byte gUnknown_2023EB8 +_080482FC: .4byte gUnknown_2023FD6 +_08048300: .4byte gUnknown_2023EAF + thumb_func_end sub_080482B0 + + thumb_func_start sub_08048304 +sub_08048304: @ 0x08048304 + push {r4, r5, r6, lr} + ldr r0, _08048354 + ldr r0, [r0] + cmp r0, #0 + bne _0804834E + ldr r5, _08048358 + ldr r2, [r5] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r6, _0804835C + ldrb r0, [r6, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r4, _08048360 + ldr r0, _08048364 + ldrb r0, [r0] + strb r0, [r4] + ldrh r1, [r1] + movs r0, #0 + bl sub_08033B74 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #5 + str r0, [r5] + movs r0, #1 + strb r0, [r6, #7] +_0804834E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08048354: .4byte gUnknown_2023D0C +_08048358: .4byte gUnknown_2023EB8 +_0804835C: .4byte gUnknown_2023FD6 +_08048360: .4byte gUnknown_2023D08 +_08048364: .4byte gUnknown_2023EAF + thumb_func_end sub_08048304 + + thumb_func_start sub_08048368 +sub_08048368: @ 0x08048368 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r0, _08048398 + ldrb r3, [r0] + cmp r1, r3 + bge _0804838E + ldr r4, _0804839C + ldrb r0, [r4] + cmp r0, r2 + beq _0804838E +_08048380: + adds r1, #1 + cmp r1, r3 + bge _0804838E + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r2 + bne _08048380 +_0804838E: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08048398: .4byte gUnknown_2023D10 +_0804839C: .4byte gUnknown_2023D22 + thumb_func_end sub_08048368 + + thumb_func_start sub_080483A0 +sub_080483A0: @ 0x080483A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r0, #0 + mov sl, r0 + movs r7, #0 + movs r1, #1 + str r1, [sp, #4] + ldr r1, _080483E4 + ldrb r3, [r1, #3] + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + beq _080483F8 + ldr r2, _080483E8 + ldr r0, _080483EC + ldrb r0, [r0] + strb r0, [r2] + movs r0, #0xbf + ands r0, r3 + adds r3, r1, #0 + strb r0, [r3, #3] + movs r7, #0x40 + ldr r1, _080483F0 + ldr r0, _080483F4 + b _08048404 + .align 2, 0 +_080483E4: .4byte gUnknown_2023FD6 +_080483E8: .4byte gUnknown_2023EB2 +_080483EC: .4byte gUnknown_2023EAF +_080483F0: .4byte gUnknown_2024118 +_080483F4: .4byte gUnknown_2023EB0 +_080483F8: + ldr r2, _08048448 + ldr r0, _0804844C + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _08048450 + ldr r0, _08048454 +_08048404: + ldrb r0, [r0] + strb r0, [r1, #0x17] + mov sb, r2 + ldr r2, _08048458 + mov r4, sb + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x13 + bne _08048468 + ldr r0, _0804845C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + bne _08048468 + cmp r5, #0 + bne _08048468 + ldr r1, _08048460 + ldrb r0, [r1, #3] + cmp r0, #9 + bhi _08048468 + ldr r1, _08048464 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r2, _08048460 + strb r5, [r2, #3] + bl _080495F8 + .align 2, 0 +_08048448: .4byte gUnknown_2023EB2 +_0804844C: .4byte gUnknown_2023EB0 +_08048450: .4byte gUnknown_2024118 +_08048454: .4byte gUnknown_2023EAF +_08048458: .4byte gUnknown_2023D28 +_0804845C: .4byte gUnknown_2023F24 +_08048460: .4byte gUnknown_2023FD6 +_08048464: .4byte gUnknown_2023EB8 +_08048468: + mov r3, sb + ldrb r0, [r3] + bl sub_080A630C + ldr r2, _080484B0 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080484C0 + ldr r0, _080484B4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + bne _080484C0 + cmp r5, #0 + bne _080484C0 + ldr r0, _080484B8 + ldrb r1, [r0, #3] + cmp r1, #7 + bhi _080484C0 + ldr r1, _080484BC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r4, _080484B8 + strb r5, [r4, #3] + bl _080495F8 + .align 2, 0 +_080484B0: .4byte gUnknown_2023F32 +_080484B4: .4byte gUnknown_2023F24 +_080484B8: .4byte gUnknown_2023FD6 +_080484BC: .4byte gUnknown_2023EB8 +_080484C0: + ldr r3, _080484F4 + ldr r2, _080484F8 + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r4, [r0, #0x28] + mov sb, r2 + mov r8, r3 + cmp r4, #0 + bne _08048504 + ldr r1, _080484FC + ldrb r0, [r1, #3] + cmp r0, #0xb + beq _08048504 + cmp r0, #0x1f + beq _08048504 + ldr r1, _08048500 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r2, _080484FC + strb r4, [r2, #3] + bl _080495F8 + .align 2, 0 +_080484F4: .4byte gUnknown_2023D28 +_080484F8: .4byte gUnknown_2023EB2 +_080484FC: .4byte gUnknown_2023FD6 +_08048500: .4byte gUnknown_2023EB8 +_08048504: + mov r3, sb + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, r8 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0804853C + cmp r7, #0x40 + beq _0804853C + ldr r0, _08048534 + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + movs r0, #0 + ldr r4, _08048538 + strb r0, [r4, #3] + bl _080495F8 + .align 2, 0 +_08048534: .4byte gUnknown_2023EB8 +_08048538: .4byte gUnknown_2023FD6 +_0804853C: + ldr r1, _08048568 + ldrb r0, [r1, #3] + cmp r0, #6 + bls _08048546 + b _08048B80 +_08048546: + ldr r1, _0804856C + ldr r2, _08048568 + ldrb r0, [r2, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0x10 + bne _08048558 + b _0804873C +_08048558: + cmp r0, #0x10 + bhi _08048570 + cmp r0, #7 + beq _0804858A + cmp r0, #8 + beq _08048640 + b _08048A34 + .align 2, 0 +_08048568: .4byte gUnknown_2023FD6 +_0804856C: .4byte gUnknown_82ECAB8 +_08048570: + cmp r0, #0x40 + bne _08048576 + b _080488C4 +_08048576: + cmp r0, #0x40 + bhi _08048582 + cmp r0, #0x20 + bne _08048580 + b _0804882A +_08048580: + b _08048A34 +_08048582: + cmp r0, #0x80 + bne _08048588 + b _08048942 +_08048588: + b _08048A34 +_0804858A: + mov r3, sb + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x2b + beq _080485EC + ldr r0, _080485E4 + movs r1, #0 + strb r1, [r0] + ldr r1, _080485E8 + ldrb r3, [r1] + adds r7, r0, #0 + mov ip, r1 + cmp r3, #0 + beq _080485F8 + mov r4, r8 + ldr r0, [r4, #0x50] + movs r1, #0x70 + ands r0, r1 + cmp r0, #0 + bne _080485F8 + adds r1, r7, #0 + mov r6, r8 + adds r6, #0x50 + movs r5, #0x58 + movs r4, #0x70 +_080485C4: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r3 + bhs _080485F8 + ldrb r0, [r7] + muls r0, r5, r0 + adds r0, r0, r6 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _080485C4 + b _080485F8 + .align 2, 0 +_080485E4: .4byte gUnknown_2023D08 +_080485E8: .4byte gUnknown_2023D10 +_080485EC: + ldr r0, _08048638 + ldr r2, _0804863C + ldrb r1, [r2] + strb r1, [r0] + adds r7, r0, #0 + mov ip, r2 +_080485F8: + mov r0, sb + ldrb r2, [r0] + movs r0, #0x58 + adds r1, r2, #0 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + beq _08048610 + b _08048A34 +_08048610: + ldrb r0, [r7] + mov r3, ip + ldrb r3, [r3] + cmp r0, r3 + beq _0804861C + b _08048A34 +_0804861C: + mov r4, r8 + adds r0, r1, r4 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x48 + bne _0804862A + b _08048A34 +_0804862A: + cmp r0, #0xf + bne _08048630 + b _08048A34 +_08048630: + adds r0, r2, #0 + bl sub_0803F4E0 + b _08048A24 + .align 2, 0 +_08048638: .4byte gUnknown_2023D08 +_0804863C: .4byte gUnknown_2023D10 +_08048640: + mov r2, sb + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r0, #0x20 + ldrb r1, [r0] + cmp r1, #0x11 + bne _080486B0 + cmp r5, #1 + beq _0804865A + cmp r6, #0x80 + bne _080486B0 +_0804865A: + ldr r0, _08048698 + strb r1, [r0] + mov r3, sb + ldrb r0, [r3] + movs r1, #0x11 + bl sub_0813114C + ldr r4, _0804869C + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080486A0 + str r0, [r4] + ldr r2, _080486A4 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r1 + cmp r0, #0 + bne _08048686 + b _08048960 +_08048686: + movs r0, #1 + ldr r4, _080486A8 + strb r0, [r4, #5] +_0804868C: + ldr r0, _080486AC + ands r1, r0 + str r1, [r2] + bl _080495F2 + .align 2, 0 +_08048698: .4byte gUnknown_2023EAE +_0804869C: .4byte gUnknown_2023EB8 +_080486A0: .4byte gUnknown_8289B71 +_080486A4: .4byte gUnknown_2023F24 +_080486A8: .4byte gUnknown_2023FD6 +_080486AC: .4byte 0xFFFFDFFF +_080486B0: + mov r2, sb + ldrb r0, [r2] + movs r1, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r1, [r1] + cmp r1, #3 + beq _080486D4 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #3 + beq _080486D4 + cmp r1, #8 + beq _080486D4 + cmp r0, #8 + bne _080486EE +_080486D4: + ldr r0, _08048738 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + beq _080486EE + cmp r5, #1 + bne _080486E8 + b _080489A6 +_080486E8: + cmp r6, #0x80 + bne _080486EE + b _080489A6 +_080486EE: + mov r3, sb + ldrb r1, [r3] + movs r0, #0x58 + muls r1, r0, r1 + mov r4, r8 + adds r3, r1, r4 + adds r0, r3, #0 + adds r0, #0x21 + ldrb r4, [r0] + cmp r4, #3 + bne _08048706 + b _08048A34 +_08048706: + adds r0, #1 + ldrb r0, [r0] + cmp r0, #3 + bne _08048710 + b _08048A34 +_08048710: + cmp r4, #8 + bne _08048716 + b _08048A34 +_08048716: + cmp r0, #8 + bne _0804871C + b _08048A34 +_0804871C: + mov r0, r8 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + beq _0804872A + b _08048A34 +_0804872A: + adds r0, r3, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x11 + bne _08048736 + b _08048A34 +_08048736: + b _08048A24 + .align 2, 0 +_08048738: .4byte gUnknown_2023F24 +_0804873C: + mov r2, sb + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r0, #0x20 + ldrb r1, [r0] + cmp r1, #0x29 + bne _08048794 + cmp r5, #1 + beq _08048756 + cmp r6, #0x80 + bne _08048794 +_08048756: + ldr r0, _08048784 + strb r1, [r0] + mov r3, sb + ldrb r0, [r3] + movs r1, #0x29 + bl sub_0813114C + ldr r4, _08048788 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0804878C + str r0, [r4] + ldr r2, _08048790 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r1 + cmp r0, #0 + beq _08048782 + b _08048686 +_08048782: + b _08048960 + .align 2, 0 +_08048784: .4byte gUnknown_2023EAE +_08048788: .4byte gUnknown_2023EB8 +_0804878C: .4byte gUnknown_8289B59 +_08048790: .4byte gUnknown_2023F24 +_08048794: + mov r2, sb + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + mov r3, r8 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0xa + beq _080487B4 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xa + bne _080487E4 +_080487B4: + ldr r0, _080487D8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + beq _080487E4 + cmp r5, #1 + beq _080487CA + cmp r6, #0x80 + bne _080487E4 +_080487CA: + ldr r4, _080487DC + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080487E0 + b _080489B2 + .align 2, 0 +_080487D8: .4byte gUnknown_2023F24 +_080487DC: .4byte gUnknown_2023EB8 +_080487E0: .4byte gUnknown_8289B59 +_080487E4: + mov r4, sb + ldrb r0, [r4] + movs r1, #0x58 + adds r2, r0, #0 + muls r2, r1, r2 + mov r0, r8 + adds r1, r2, r0 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0xa + bne _080487FE + b _08048A34 +_080487FE: + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xa + bne _0804880A + b _08048A34 +_0804880A: + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x29 + bne _08048816 + b _08048A34 +_08048816: + mov r0, r8 + adds r0, #0x4c + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + beq _08048824 + b _08048A34 +_08048824: + movs r1, #1 + mov sl, r1 + b _08048A34 +_0804882A: + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08048866 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08048866 + ldr r0, _080488B8 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08048866 + movs r2, #0 + str r2, [sp, #4] +_08048866: + ldr r4, _080488BC + ldr r0, _080488C0 + ldrb r3, [r0] + movs r0, #0x58 + adds r2, r3, #0 + muls r2, r0, r2 + adds r1, r2, r4 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0xf + bne _08048880 + b _08048A34 +_08048880: + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xf + bne _0804888C + b _08048A34 +_0804888C: + adds r0, r4, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + beq _0804889A + b _08048A34 +_0804889A: + ldr r4, [sp, #4] + cmp r4, #0 + bne _080488A2 + b _08048A34 +_080488A2: + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x28 + bne _080488AE + b _08048A34 +_080488AE: + adds r0, r3, #0 + bl sub_0803F4E0 + b _08048A24 + .align 2, 0 +_080488B8: .4byte gUnknown_2024070 +_080488BC: .4byte gUnknown_2023D28 +_080488C0: .4byte gUnknown_2023EB2 +_080488C4: + mov r2, sb + ldrb r1, [r2] + movs r0, #0x58 + muls r1, r0, r1 + mov r3, r8 + adds r0, r1, r3 + adds r0, #0x20 + ldrb r2, [r0] + cmp r2, #7 + bne _08048934 + cmp r5, #1 + beq _080488E2 + cmp r6, #0x80 + beq _080488E2 + b _08048A34 +_080488E2: + ldr r0, _08048914 + strb r2, [r0] + mov r4, sb + ldrb r0, [r4] + movs r1, #7 + bl sub_0813114C + ldr r4, _08048918 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0804891C + str r0, [r4] + ldr r2, _08048920 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r1 + cmp r0, #0 + beq _08048928 + movs r0, #1 + ldr r3, _08048924 + strb r0, [r3, #5] + b _0804868C + .align 2, 0 +_08048914: .4byte gUnknown_2023EAE +_08048918: .4byte gUnknown_2023EB8 +_0804891C: .4byte gUnknown_8289B65 +_08048920: .4byte gUnknown_2023F24 +_08048924: .4byte gUnknown_2023FD6 +_08048928: + ldr r4, _08048930 + strb r0, [r4, #5] + bl _080495F2 + .align 2, 0 +_08048930: .4byte gUnknown_2023FD6 +_08048934: + mov r0, r8 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _08048A34 + b _08048A24 +_08048942: + mov r2, sb + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r0, #0x20 + ldrb r1, [r0] + cmp r1, #0x11 + bne _0804896C + cmp r5, #1 + bne _0804895A + b _0804865A +_0804895A: + cmp r6, #0x80 + bne _0804896C + b _0804865A +_08048960: + ldr r1, _08048968 + strb r0, [r1, #5] + bl _080495F2 + .align 2, 0 +_08048968: .4byte gUnknown_2023FD6 +_0804896C: + mov r2, sb + ldrb r0, [r2] + movs r1, #0x58 + muls r0, r1, r0 + add r0, r8 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r1, [r1] + cmp r1, #3 + beq _08048990 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #3 + beq _08048990 + cmp r1, #8 + beq _08048990 + cmp r0, #8 + bne _080489D4 +_08048990: + ldr r0, _080489C4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + beq _080489D4 + cmp r5, #1 + beq _080489A6 + cmp r6, #0x80 + bne _080489D4 +_080489A6: + ldr r4, _080489C8 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080489CC +_080489B2: + str r0, [r4] + ldr r1, _080489D0 + movs r2, #0 + movs r0, #2 + strb r0, [r1, #5] + strb r2, [r1, #3] + bl _080495F8 + .align 2, 0 +_080489C4: .4byte gUnknown_2023F24 +_080489C8: .4byte gUnknown_2023EB8 +_080489CC: .4byte gUnknown_8289B71 +_080489D0: .4byte gUnknown_2023FD6 +_080489D4: + mov r3, sb + ldrb r0, [r3] + movs r6, #0x58 + muls r0, r6, r0 + mov r2, r8 + adds r2, #0x4c + adds r5, r0, r2 + ldr r4, [r5] + cmp r4, #0 + bne _08048A34 + mov r3, r8 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r3, [r0] + cmp r3, #3 + beq _08048A2A + adds r0, #1 + ldrb r0, [r0] + cmp r0, #3 + beq _08048A2A + cmp r3, #8 + beq _08048A2A + cmp r0, #8 + beq _08048A2A + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x11 + beq _08048A34 + mov r4, sb + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r6, r1 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #9 + rsbs r2, r2, #0 + ands r0, r2 + str r0, [r1] +_08048A24: + movs r0, #1 + mov sl, r0 + b _08048A34 +_08048A2A: + ldr r0, _08048A78 + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] +_08048A34: + mov r1, sl + cmp r1, #1 + beq _08048A3C + b _08048B5C +_08048A3C: + ldr r0, _08048A7C + ldr r0, [r0] + adds r0, #1 + bl sub_0803F718 + ldr r1, _08048A80 + ldr r0, _08048A84 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + cmp r3, #7 + bne _08048A90 + bl sub_0806F050 + ldr r2, _08048A88 + ldr r1, _08048A8C + ldrb r3, [r1] + movs r1, #0x58 + muls r3, r1, r3 + adds r2, #0x4c + adds r3, r3, r2 + movs r1, #3 + ands r1, r0 + adds r1, #2 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + b _08048AA4 + .align 2, 0 +_08048A78: .4byte gUnknown_2023F20 +_08048A7C: .4byte gUnknown_2023EB8 +_08048A80: .4byte gUnknown_82ECAB8 +_08048A84: .4byte gUnknown_2023FD6 +_08048A88: .4byte gUnknown_2023D28 +_08048A8C: .4byte gUnknown_2023EB2 +_08048A90: + ldr r2, _08048AF4 + ldr r0, _08048AF8 + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r2, #0x4c + adds r1, r1, r2 + ldr r0, [r1] + orrs r0, r3 + str r0, [r1] +_08048AA4: + ldr r2, _08048AFC + ldr r1, _08048B00 + ldr r5, _08048B04 + ldrb r0, [r5, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r4, _08048B08 + ldr r1, _08048AF8 + ldrb r0, [r1] + strb r0, [r4] + ldrb r1, [r1] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _08048B0C + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + ldr r2, _08048B10 + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r1 + cmp r0, #0 + beq _08048B18 + movs r0, #1 + strb r0, [r5, #5] + ldr r0, _08048B14 + ands r1, r0 + str r1, [r2] + b _08048B1A + .align 2, 0 +_08048AF4: .4byte gUnknown_2023D28 +_08048AF8: .4byte gUnknown_2023EB2 +_08048AFC: .4byte gUnknown_2023EB8 +_08048B00: .4byte gUnknown_82ECBA8 +_08048B04: .4byte gUnknown_2023FD6 +_08048B08: .4byte gUnknown_2023D08 +_08048B0C: .4byte gUnknown_2023D74 +_08048B10: .4byte gUnknown_2023F24 +_08048B14: .4byte 0xFFFFDFFF +_08048B18: + strb r0, [r5, #5] +_08048B1A: + ldr r0, _08048B50 + ldrb r2, [r0, #3] + cmp r2, #2 + beq _08048B32 + cmp r2, #6 + beq _08048B32 + cmp r2, #5 + beq _08048B32 + cmp r2, #3 + beq _08048B32 + bl _080495F8 +_08048B32: + ldr r0, _08048B54 + ldr r0, [r0] + adds r0, #0xb2 + ldr r2, _08048B50 + ldrb r1, [r2, #3] + strb r1, [r0] + ldr r2, _08048B58 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #7 + orrs r0, r1 + str r0, [r2] + bl _080495F8 + .align 2, 0 +_08048B50: .4byte gUnknown_2023FD6 +_08048B54: .4byte gUnknown_2024140 +_08048B58: .4byte gUnknown_2023F24 +_08048B5C: + mov r3, sl + cmp r3, #0 + beq _08048B66 + bl _080495F8 +_08048B66: + ldr r0, _08048B78 + strb r3, [r0, #3] + ldr r1, _08048B7C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bl _080495F8 + .align 2, 0 +_08048B78: .4byte gUnknown_2023FD6 +_08048B7C: .4byte gUnknown_2023EB8 +_08048B80: + mov r4, sb + ldrb r1, [r4] + movs r0, #0x58 + muls r1, r0, r1 + mov r0, r8 + adds r0, #0x50 + adds r1, r1, r0 + ldr r2, _08048BBC + ldr r0, _08048BC0 + ldrb r3, [r0, #3] + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r1, [r1] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08048BA6 + bl _080495D4 +_08048BA6: + subs r0, r3, #7 + cmp r0, #0x34 + bls _08048BB0 + bl _080495F2 +_08048BB0: + lsls r0, r0, #2 + ldr r1, _08048BC4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08048BBC: .4byte gUnknown_82ECAB8 +_08048BC0: .4byte gUnknown_2023FD6 +_08048BC4: .4byte _08048BC8 +_08048BC8: @ jump table + .4byte _08048C9C @ case 0 + .4byte _08048D10 @ case 1 + .4byte _08048E84 @ case 2 + .4byte _08048D9C @ case 3 + .4byte _08048E18 @ case 4 + .4byte _08048EBC @ case 5 + .4byte _08048F04 @ case 6 + .4byte _08048FD0 @ case 7 + .4byte _08049014 @ case 8 + .4byte _08049014 @ case 9 + .4byte _08049014 @ case 10 + .4byte _08049014 @ case 11 + .4byte _08049014 @ case 12 + .4byte _08049014 @ case 13 + .4byte _08049014 @ case 14 + .4byte _0804905C @ case 15 + .4byte _0804905C @ case 16 + .4byte _0804905C @ case 17 + .4byte _0804905C @ case 18 + .4byte _0804905C @ case 19 + .4byte _0804905C @ case 20 + .4byte _0804905C @ case 21 + .4byte _0804913C @ case 22 + .4byte _08049184 @ case 23 + .4byte _080491A4 @ case 24 + .4byte _08049360 @ case 25 + .4byte _0804939C @ case 26 + .4byte _080493B8 @ case 27 + .4byte _080493D0 @ case 28 + .4byte _080493E8 @ case 29 + .4byte _08049448 @ case 30 + .4byte _08049460 @ case 31 + .4byte _080490A8 @ case 32 + .4byte _080490A8 @ case 33 + .4byte _080490A8 @ case 34 + .4byte _080490A8 @ case 35 + .4byte _080490A8 @ case 36 + .4byte _080490A8 @ case 37 + .4byte _080490A8 @ case 38 + .4byte _080490F0 @ case 39 + .4byte _080490F0 @ case 40 + .4byte _080490F0 @ case 41 + .4byte _080490F0 @ case 42 + .4byte _080490F0 @ case 43 + .4byte _080490F0 @ case 44 + .4byte _080490F0 @ case 45 + .4byte _080494A4 @ case 46 + .4byte _08049500 @ case 47 + .4byte _080495F2 @ case 48 + .4byte _080495F2 @ case 49 + .4byte _080495F2 @ case 50 + .4byte _080495F2 @ case 51 + .4byte _080495E4 @ case 52 +_08048C9C: + mov r1, sb + ldrb r0, [r1] + movs r5, #0x58 + adds r1, r0, #0 + muls r1, r5, r1 + mov r2, r8 + adds r0, r1, r2 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x14 + bne _08048CB6 + bl _080495D4 +_08048CB6: + mov r4, r8 + adds r4, #0x50 + adds r0, r1, r4 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08048CCA + bl _080495D4 +_08048CCA: + bl sub_0806F050 + mov r3, sb + ldrb r1, [r3] + adds r2, r1, #0 + muls r2, r5, r2 + adds r2, r2, r4 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0x10 + adds r1, #2 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _08048D04 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _08048D08 + ldr r0, _08048D0C + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _080495F0 + .align 2, 0 +_08048D04: .4byte gUnknown_2023EB8 +_08048D08: .4byte gUnknown_82ECBA8 +_08048D0C: .4byte gUnknown_2023FD6 +_08048D10: + mov r4, sb + ldrb r2, [r4] + movs r4, #0x58 + adds r0, r2, #0 + muls r0, r4, r0 + add r0, r8 + adds r0, #0x20 + ldrb r1, [r0] + cmp r1, #0x27 + bne _08048D54 + cmp r5, #1 + beq _08048D30 + cmp r6, #0x80 + beq _08048D30 + bl _080495D4 +_08048D30: + ldr r0, _08048D48 + strb r1, [r0] + mov r1, sb + ldrb r0, [r1] + movs r1, #0x27 + bl sub_0813114C + ldr r1, _08048D4C + ldr r0, _08048D50 + str r0, [r1] + bl _080495F2 + .align 2, 0 +_08048D48: .4byte gUnknown_2023EAE +_08048D4C: .4byte gUnknown_2023EB8 +_08048D50: .4byte gUnknown_8289B8B +_08048D54: + adds r0, r2, #0 + bl sub_08048368 + ldr r1, _08048D90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bhi _08048D6A + bl _080495D4 +_08048D6A: + mov r2, sb + ldrb r0, [r2] + adds r2, r0, #0 + muls r2, r4, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r1, _08048D94 + ldr r0, _08048D98 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] + bl _080495D4 + .align 2, 0 +_08048D90: .4byte gUnknown_2023D26 +_08048D94: .4byte gUnknown_82ECAB8 +_08048D98: .4byte gUnknown_2023FD6 +_08048D9C: + mov r3, sb + ldrb r0, [r3] + movs r5, #0x58 + muls r0, r5, r0 + mov r4, r8 + adds r4, #0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, #0x70 + ands r0, r1 + cmp r0, #0 + beq _08048DB8 + bl _080495D4 +_08048DB8: + movs r0, #0x80 + lsls r0, r0, #5 + orrs r1, r0 + str r1, [r2] + ldr r1, _08048E04 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _08048E08 + ldrh r1, [r1] + strh r1, [r0] + bl sub_0806F050 + mov r2, sb + ldrb r1, [r2] + adds r2, r1, #0 + muls r2, r5, r2 + adds r2, r2, r4 + movs r1, #3 + ands r1, r0 + adds r1, #2 + lsls r1, r1, #4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _08048E0C + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _08048E10 + ldr r0, _08048E14 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _080495F0 + .align 2, 0 +_08048E04: .4byte gUnknown_2023F0C +_08048E08: .4byte gUnknown_2023E8E +_08048E0C: .4byte gUnknown_2023EB8 +_08048E10: .4byte gUnknown_82ECBA8 +_08048E14: .4byte gUnknown_2023FD6 +_08048E18: + ldr r5, _08048E68 + ldrb r0, [r5] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _08048E50 + ldr r4, _08048E6C + ldrh r3, [r4] + ldr r2, _08048E70 + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r3, r0 + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r3, r0 + bls _08048E50 + ldr r3, _08048E74 + adds r0, r3, #0 + strh r0, [r4] +_08048E50: + ldr r4, _08048E78 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _08048E7C + ldr r0, _08048E80 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + b _080495F0 + .align 2, 0 +_08048E68: .4byte gUnknown_2023EAF +_08048E6C: .4byte gUnknown_2023FD2 +_08048E70: .4byte gUnknown_2023D28 +_08048E74: .4byte 0x0000FFFF +_08048E78: .4byte gUnknown_2023EB8 +_08048E7C: .4byte gUnknown_82ECBA8 +_08048E80: .4byte gUnknown_2023FD6 +_08048E84: + mov r4, sb + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, r8 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _08048E9A + b _080495D4 +_08048E9A: + bl sub_0806F050 + ldr r4, _08048EB8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + adds r0, #3 + strb r0, [r4, #3] + movs r0, #0 + movs r1, #0 + bl sub_080483A0 + b _080495F2 + .align 2, 0 +_08048EB8: .4byte gUnknown_2023FD6 +_08048EBC: + mov r0, sb + ldrb r1, [r0] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r2] + ldr r1, _08048EF8 + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _08048EFC + ldrh r1, [r1] + strh r1, [r0] + ldr r0, _08048F00 + ldrb r1, [r2] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1, #1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #1] + b _080495D4 + .align 2, 0 +_08048EF8: .4byte gUnknown_2023F0C +_08048EFC: .4byte gUnknown_2023E8E +_08048F00: .4byte gUnknown_2023FE0 +_08048F04: + mov r3, sb + ldrb r0, [r3] + movs r6, #0x58 + muls r0, r6, r0 + mov r4, r8 + adds r4, #0x50 + adds r0, r0, r4 + ldr r5, [r0] + movs r0, #0xe0 + lsls r0, r0, #8 + ands r5, r0 + cmp r5, #0 + beq _08048F20 + b _080495D4 +_08048F20: + bl sub_0806F050 + mov r2, sb + ldrb r1, [r2] + adds r2, r1, #0 + muls r2, r6, r2 + adds r2, r2, r4 + movs r1, #3 + ands r1, r0 + adds r1, #3 + lsls r1, r1, #0xd + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + mov r3, sb + ldrb r1, [r3] + ldr r2, _08048FB4 + ldr r0, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r6, _08048FB8 + ldrh r0, [r6] + strb r0, [r1, #4] + ldrb r1, [r3] + ldr r0, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r6] + lsrs r0, r0, #8 + strb r0, [r1, #5] + ldrb r1, [r3] + ldr r0, [r2] + adds r1, r1, r0 + ldr r0, _08048FBC + ldrb r0, [r0] + strb r0, [r1, #0x14] + ldr r4, _08048FC0 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _08048FC4 + ldr r2, _08048FC8 + ldrb r0, [r2, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4] + strb r5, [r2, #5] + ldr r3, _08048FCC + ldrh r0, [r3] + ldrh r4, [r6] + cmp r0, r4 + bne _08048F8E + b _080495F2 +_08048F8E: + adds r1, r2, #0 + adds r2, r6, #0 +_08048F92: + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08048FA2 + b _080495F2 +_08048FA2: + ldrb r0, [r1, #5] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + ldrh r4, [r2] + cmp r0, r4 + bne _08048F92 + b _080495F2 + .align 2, 0 +_08048FB4: .4byte gUnknown_2024140 +_08048FB8: .4byte gUnknown_2023E8E +_08048FBC: .4byte gUnknown_2023EAF +_08048FC0: .4byte gUnknown_2023EB8 +_08048FC4: .4byte gUnknown_82ECBA8 +_08048FC8: .4byte gUnknown_2023FD6 +_08048FCC: .4byte gUnknown_85ABAEE +_08048FD0: + ldr r1, _08049000 + ldr r0, _08049004 + ldr r0, [r0] + cmp r0, #0 + bge _08048FDC + adds r0, #3 +_08048FDC: + asrs r0, r0, #2 + str r0, [r1] + cmp r0, #0 + bne _08048FE8 + movs r0, #1 + str r0, [r1] +_08048FE8: + ldr r4, _08049008 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _0804900C + ldr r0, _08049010 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + b _080495F0 + .align 2, 0 +_08049000: .4byte gUnknown_2023E94 +_08049004: .4byte gUnknown_2023E98 +_08049008: .4byte gUnknown_2023EB8 +_0804900C: .4byte gUnknown_82ECBA8 +_08049010: .4byte gUnknown_2023FD6 +_08049014: + ldr r4, _0804904C + ldrb r1, [r4, #3] + adds r1, #0xf2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x10 + adds r2, r7, #0 + movs r3, #0 + bl sub_0805062C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08049032 + b _080495D4 +_08049032: + ldr r2, _08049050 + ldrb r1, [r4, #3] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x10] + strb r3, [r2, #0x11] + ldr r4, _08049054 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _08049058 + b _080495F0 + .align 2, 0 +_0804904C: .4byte gUnknown_2023FD6 +_08049050: .4byte gUnknown_2024118 +_08049054: .4byte gUnknown_2023EB8 +_08049058: .4byte gUnknown_828725C +_0804905C: + movs r0, #0x70 + rsbs r0, r0, #0 + ldr r4, _08049098 + ldrb r1, [r4, #3] + adds r1, #0xeb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r7, #0 + movs r3, #0 + bl sub_0805062C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0804907C + b _080495D4 +_0804907C: + ldr r2, _0804909C + ldrb r1, [r4, #3] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x10] + strb r3, [r2, #0x11] + ldr r4, _080490A0 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080490A4 + b _080495F0 + .align 2, 0 +_08049098: .4byte gUnknown_2023FD6 +_0804909C: .4byte gUnknown_2024118 +_080490A0: .4byte gUnknown_2023EB8 +_080490A4: .4byte gUnknown_82872ED +_080490A8: + ldr r4, _080490E0 + ldrb r1, [r4, #3] + adds r1, #0xda + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x20 + adds r2, r7, #0 + movs r3, #0 + bl sub_0805062C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _080490C6 + b _080495D4 +_080490C6: + ldr r2, _080490E4 + ldrb r1, [r4, #3] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x10] + strb r3, [r2, #0x11] + ldr r4, _080490E8 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080490EC + b _080495F0 + .align 2, 0 +_080490E0: .4byte gUnknown_2023FD6 +_080490E4: .4byte gUnknown_2024118 +_080490E8: .4byte gUnknown_2023EB8 +_080490EC: .4byte gUnknown_828725C +_080490F0: + movs r0, #0x60 + rsbs r0, r0, #0 + ldr r4, _0804912C + ldrb r1, [r4, #3] + adds r1, #0xd3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r7, #0 + movs r3, #0 + bl sub_0805062C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08049110 + b _080495D4 +_08049110: + ldr r2, _08049130 + ldrb r1, [r4, #3] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x10] + strb r3, [r2, #0x11] + ldr r4, _08049134 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _08049138 + b _080495F0 + .align 2, 0 +_0804912C: .4byte gUnknown_2023FD6 +_08049130: .4byte gUnknown_2024118 +_08049134: .4byte gUnknown_2023EB8 +_08049138: .4byte gUnknown_82872ED +_0804913C: + mov r0, sb + ldrb r1, [r0] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [r2] + ldr r2, _08049178 + mov r3, sb + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #0x19] + ldr r1, _0804917C + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _08049180 + ldrh r1, [r1] + strh r1, [r0] + b _080495D4 + .align 2, 0 +_08049178: .4byte gUnknown_2023F60 +_0804917C: .4byte gUnknown_2023F0C +_08049180: .4byte gUnknown_2023E8E +_08049184: + ldr r0, _080491A0 + ldrb r1, [r0] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x10 +_0804919A: + orrs r0, r1 + str r0, [r2] + b _080495D4 + .align 2, 0 +_080491A0: .4byte gUnknown_2023EAF +_080491A4: + ldr r5, _080491DC + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + beq _080491B4 + b _080495D4 +_080491B4: + ldr r6, _080491E0 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080491E8 + ldr r0, [r5] + ldr r1, _080491E4 + ands r0, r1 + cmp r0, #0 + bne _08049214 + b _080495D4 + .align 2, 0 +_080491DC: .4byte gUnknown_2022C90 +_080491E0: .4byte gUnknown_2023EAF +_080491E4: .4byte 0x0A3F0902 +_080491E8: + ldr r0, [r5] + ldr r1, _08049258 + ands r0, r1 + cmp r0, #0 + bne _08049214 + ldr r0, _0804925C + adds r0, #0x29 + adds r0, r4, r0 + ldrb r1, [r0] + ldr r3, _08049260 + ldr r2, _08049264 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08049214 + b _080495D4 +_08049214: + ldr r2, _08049268 + ldr r1, _0804926C + ldrb r0, [r1] + movs r5, #0x58 + muls r0, r5, r0 + adds r4, r0, r2 + ldrh r0, [r4, #0x2e] + adds r7, r1, #0 + mov r8, r2 + cmp r0, #0 + beq _0804927C + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x3c + bne _0804927C + bl sub_0803F73C + ldr r1, _08049270 + ldr r0, _08049274 + str r0, [r1] + ldr r1, _08049278 + ldrb r0, [r7] + muls r0, r5, r0 + add r0, r8 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_0813114C + b _080495F2 + .align 2, 0 +_08049258: .4byte 0x0A3F0902 +_0804925C: .4byte gUnknown_2024074 +_08049260: .4byte gUnknown_82FACB4 +_08049264: .4byte gUnknown_2023D12 +_08049268: .4byte gUnknown_2023D28 +_0804926C: .4byte gUnknown_2023EB0 +_08049270: .4byte gUnknown_2023EB8 +_08049274: .4byte gUnknown_8289C0A +_08049278: .4byte gUnknown_2023EAE +_0804927C: + ldr r4, _08049348 + mov sl, r4 + ldrb r2, [r4] + movs r0, #0x58 + mov sb, r0 + mov r0, sb + muls r0, r2, r0 + add r0, r8 + ldrh r4, [r0, #0x2e] + cmp r4, #0 + beq _08049294 + b _080495D4 +_08049294: + ldrb r0, [r7] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + ldrh r3, [r0, #0x2e] + adds r1, r3, #0 + cmp r1, #0xaf + bne _080492A8 + b _080495D4 +_080492A8: + adds r0, r3, #0 + subs r0, #0x79 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb + bhi _080492B6 + b _080495D4 +_080492B6: + cmp r1, #0 + bne _080492BC + b _080495D4 +_080492BC: + ldr r5, _0804934C + lsls r0, r2, #1 + adds r0, #0xd0 + ldr r1, [r5] + adds r1, r1, r0 + ldr r2, _08049350 + strh r3, [r1] + strh r3, [r2] + ldrb r0, [r7] + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + add r0, r8 + movs r6, #0 + strh r4, [r0, #0x2e] + ldr r4, _08049354 + mov r1, sl + ldrb r0, [r1] + strb r0, [r4] + str r2, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + mov r2, sl + ldrb r0, [r2] + bl sub_0803F440 + ldrb r0, [r7] + strb r0, [r4] + ldrb r0, [r7] + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + mov r1, r8 + adds r1, #0x2e + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r7] + bl sub_0803F440 + ldr r4, _08049358 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0804935C + str r0, [r4] + ldrb r0, [r7] + ldr r1, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + strb r6, [r0] + ldrb r0, [r7] + ldr r1, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + strb r6, [r0] + b _080495F2 + .align 2, 0 +_08049348: .4byte gUnknown_2023EAF +_0804934C: .4byte gUnknown_2024140 +_08049350: .4byte gUnknown_2023EAC +_08049354: .4byte gUnknown_2023D08 +_08049358: .4byte gUnknown_2023EB8 +_0804935C: .4byte gUnknown_82899AA +_08049360: + ldr r3, _08049390 + ldrb r1, [r3] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x13 + orrs r0, r1 + str r0, [r2] + ldr r2, _08049394 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08049398 + ldrb r1, [r1] + strb r1, [r0, #0x14] + b _080495D4 + .align 2, 0 +_08049390: .4byte gUnknown_2023EB0 +_08049394: .4byte gUnknown_2023F60 +_08049398: .4byte gUnknown_2023EAF +_0804939C: + ldr r0, _080493B4 + ldrb r1, [r0] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + mov r0, r8 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x14 + b _0804919A + .align 2, 0 +_080493B4: .4byte gUnknown_2023EB0 +_080493B8: + ldr r4, _080493C8 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080493CC + b _080495F0 + .align 2, 0 +_080493C8: .4byte gUnknown_2023EB8 +_080493CC: .4byte gUnknown_82894AF +_080493D0: + ldr r4, _080493E0 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080493E4 + b _080495F0 + .align 2, 0 +_080493E0: .4byte gUnknown_2023EB8 +_080493E4: .4byte gUnknown_828954B +_080493E8: + ldr r6, _08049438 + ldrb r0, [r6] + movs r2, #0x58 + muls r0, r2, r0 + mov r1, r8 + adds r1, #0x4c + adds r5, r0, r1 + ldr r4, [r5] + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + bne _08049402 + b _080495D4 +_08049402: + movs r0, #0x41 + rsbs r0, r0, #0 + ands r4, r0 + str r4, [r5] + ldr r4, _0804943C + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r4] + muls r0, r2, r0 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + ldr r4, _08049440 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _08049444 + b _080495F0 + .align 2, 0 +_08049438: .4byte gUnknown_2023EB0 +_0804943C: .4byte gUnknown_2023D08 +_08049440: .4byte gUnknown_2023EB8 +_08049444: .4byte gUnknown_82898E9 +_08049448: + ldr r4, _08049458 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0804945C + b _080495F0 + .align 2, 0 +_08049458: .4byte gUnknown_2023EB8 +_0804945C: .4byte gUnknown_828969F +_08049460: + ldr r4, _08049490 + ldr r0, _08049494 + ldr r0, [r0] + movs r1, #3 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08049476 + movs r0, #1 + str r0, [r4] +_08049476: + ldr r4, _08049498 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r1, _0804949C + ldr r0, _080494A0 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + b _080495F0 + .align 2, 0 +_08049490: .4byte gUnknown_2023E94 +_08049494: .4byte gUnknown_2023E98 +_08049498: .4byte gUnknown_2023EB8 +_0804949C: .4byte gUnknown_82ECBA8 +_080494A0: .4byte gUnknown_2023FD6 +_080494A4: + mov r4, sb + ldrb r0, [r4] + movs r5, #0x58 + muls r0, r5, r0 + mov r4, r8 + adds r4, #0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, #0xc0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080494C0 + b _080495D4 +_080494C0: + movs r0, #0x80 + lsls r0, r0, #5 + orrs r1, r0 + str r1, [r2] + ldr r1, _080494F8 + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _080494FC + ldrh r1, [r1] + strh r1, [r0] + bl sub_0806F050 + mov r3, sb + ldrb r1, [r3] + adds r2, r1, #0 + muls r2, r5, r2 + adds r2, r2, r4 + movs r1, #1 + ands r1, r0 + adds r1, #2 + lsls r1, r1, #0xa + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _080495F2 + .align 2, 0 +_080494F8: .4byte gUnknown_2023F0C +_080494FC: .4byte gUnknown_2023E8E +_08049500: + mov r4, sb + ldrb r3, [r4] + movs r5, #0x58 + adds r0, r3, #0 + muls r0, r5, r0 + mov r2, r8 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r2, [r0] + cmp r2, #0x3c + bne _08049540 + ldrh r0, [r1, #0x2e] + cmp r0, #0 + beq _080495D4 + ldr r0, _08049534 + strb r2, [r0] + ldr r1, _08049538 + ldr r0, _0804953C + str r0, [r1] + ldrb r0, [r4] + movs r1, #0x3c + bl sub_0813114C + b _080495F2 + .align 2, 0 +_08049534: .4byte gUnknown_2023EAE +_08049538: .4byte gUnknown_2023EB8 +_0804953C: .4byte gUnknown_8289BC7 +_08049540: + ldrh r0, [r1, #0x2e] + cmp r0, #0 + beq _080495D4 + adds r0, r3, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080495B8 + mov r3, sb + ldrb r0, [r3] + muls r0, r5, r0 + add r0, r8 + ldrh r0, [r0, #0x2e] + strh r0, [r1] + ldrb r0, [r3] + muls r0, r5, r0 + add r0, r8 + movs r5, #0 + movs r1, #0 + strh r1, [r0, #0x2e] + ldr r2, _080495BC + adds r2, #0x29 + adds r2, r4, r2 + ldr r3, _080495C0 + ldr r1, _080495C4 + mov r4, sb + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r4, _080495C8 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _080495CC + str r0, [r4] + mov r1, sb + ldrb r0, [r1] + ldr r2, _080495D0 + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + strb r5, [r0] + mov r3, sb + ldrb r0, [r3] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + strb r5, [r0] + b _080495F2 + .align 2, 0 +_080495B8: .4byte gUnknown_2023EAC +_080495BC: .4byte gUnknown_2024074 +_080495C0: .4byte gUnknown_82FACB4 +_080495C4: .4byte gUnknown_2023D12 +_080495C8: .4byte gUnknown_2023EB8 +_080495CC: .4byte gUnknown_82896F0 +_080495D0: .4byte gUnknown_2024140 +_080495D4: + ldr r1, _080495E0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + b _080495F2 + .align 2, 0 +_080495E0: .4byte gUnknown_2023EB8 +_080495E4: + ldr r4, _08049608 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0804960C +_080495F0: + str r0, [r4] +_080495F2: + ldr r1, _08049610 + movs r0, #0 + strb r0, [r1, #3] +_080495F8: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08049608: .4byte gUnknown_2023EB8 +_0804960C: .4byte gUnknown_828975D +_08049610: .4byte gUnknown_2023FD6 + thumb_func_end sub_080483A0 + + thumb_func_start sub_08049614 +sub_08049614: @ 0x08049614 + push {r4, lr} + ldr r2, _08049640 + ldr r0, _08049644 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x20 + bne _08049650 + ldr r2, _08049648 + ldr r0, _0804964C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #5] + lsls r4, r0, #1 + b _08049660 + .align 2, 0 +_08049640: .4byte gUnknown_2023D28 +_08049644: .4byte gUnknown_2023EAF +_08049648: .4byte gUnknown_82ED220 +_0804964C: .4byte gUnknown_2023E8E +_08049650: + ldr r2, _08049680 + ldr r0, _08049684 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r4, [r0, #5] +_08049660: + ldr r3, _08049688 + ldrb r2, [r3, #3] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08049690 + ldr r0, _0804968C + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _08049690 + movs r0, #0x7f + ands r0, r2 + strb r0, [r3, #3] + b _080496BE + .align 2, 0 +_08049680: .4byte gUnknown_82ED220 +_08049684: .4byte gUnknown_2023E8E +_08049688: .4byte gUnknown_2023FD6 +_0804968C: .4byte gUnknown_2023F20 +_08049690: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + bhs _080496DA + ldr r0, _080496C8 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _080496DA + ldr r0, _080496CC + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _080496DA + cmp r4, #0x63 + bls _080496D0 +_080496BE: + movs r0, #0 + movs r1, #0x80 + bl sub_080483A0 + b _080496E2 + .align 2, 0 +_080496C8: .4byte gUnknown_2023FD6 +_080496CC: .4byte gUnknown_2023F20 +_080496D0: + movs r0, #0 + movs r1, #0 + bl sub_080483A0 + b _080496E2 +_080496DA: + ldr r1, _080496F4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_080496E2: + ldr r0, _080496F8 + movs r1, #0 + strb r1, [r0, #3] + ldr r0, _080496FC + strb r1, [r0, #0x16] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080496F4: .4byte gUnknown_2023EB8 +_080496F8: .4byte gUnknown_2023FD6 +_080496FC: .4byte gUnknown_2024118 + thumb_func_end sub_08049614 + + thumb_func_start sub_08049700 +sub_08049700: @ 0x08049700 + push {lr} + movs r0, #1 + movs r1, #0 + bl sub_080483A0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08049700 + + thumb_func_start sub_08049710 +sub_08049710: @ 0x08049710 + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_080483A0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08049710 + + thumb_func_start sub_08049720 +sub_08049720: @ 0x08049720 + push {lr} + ldr r0, _08049744 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r2, _08049748 + strb r0, [r2] + ldr r3, _0804974C + ldrb r0, [r3, #3] + cmp r0, #6 + bhi _08049754 + ldr r1, _08049750 + ldrb r2, [r2] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x4c + b _0804975E + .align 2, 0 +_08049744: .4byte gUnknown_2023EB8 +_08049748: .4byte gUnknown_2023D08 +_0804974C: .4byte gUnknown_2023FD6 +_08049750: .4byte gUnknown_2023D28 +_08049754: + ldr r1, _08049788 + ldrb r2, [r2] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x50 +_0804975E: + adds r2, r2, r1 + ldr r1, _0804978C + ldrb r0, [r3, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r0, _08049790 + movs r2, #0 + strb r2, [r0, #3] + ldr r1, _08049794 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + ldr r0, _08049798 + strb r2, [r0, #0x16] + pop {r0} + bx r0 + .align 2, 0 +_08049788: .4byte gUnknown_2023D28 +_0804978C: .4byte gUnknown_82ECAB8 +_08049790: .4byte gUnknown_2023FD6 +_08049794: .4byte gUnknown_2023EB8 +_08049798: .4byte gUnknown_2024118 + thumb_func_end sub_08049720 + + thumb_func_start sub_0804979C +sub_0804979C: @ 0x0804979C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r0, _08049808 + ldr r2, [r0] + ldrb r1, [r2, #2] + adds r6, r0, #0 + cmp r1, #0 + beq _08049820 + ldrb r0, [r2, #1] + bl sub_0803F00C + ldr r5, _0804980C + strb r0, [r5] + ldr r2, _08049810 + ldr r1, _08049814 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + ands r0, r1 + cmp r0, #0 + bne _080497D4 + b _08049A6C +_080497D4: + ldr r1, [r6] + ldrb r4, [r1, #3] + ldrb r0, [r1, #4] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r1, #6] + lsls r0, r0, #0x18 + orrs r4, r0 + bl sub_0803F764 + str r4, [r6] + ldrb r0, [r5] + bl sub_080A62F8 + ldr r1, _08049818 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r1, _0804981C + ands r1, r2 + strh r1, [r0] + b _08049A72 + .align 2, 0 +_08049808: .4byte gUnknown_2023EB8 +_0804980C: .4byte gUnknown_2023D08 +_08049810: .4byte gUnknown_2023F24 +_08049814: .4byte gUnknown_82FACB4 +_08049818: .4byte gUnknown_2023F32 +_0804981C: .4byte 0x0000FDFF +_08049820: + ldrb r0, [r2, #1] + cmp r0, #1 + bne _08049848 + ldr r1, _08049838 + ldr r0, _0804983C + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08049840 + ldrb r0, [r0] + mov sb, r0 + ldr r4, _08049844 + b _08049858 + .align 2, 0 +_08049838: .4byte gUnknown_2023D08 +_0804983C: .4byte gUnknown_2023EAF +_08049840: .4byte gUnknown_2023EB0 +_08049844: .4byte gUnknown_8288D32 +_08049848: + ldr r1, _080498C0 + ldr r0, _080498C4 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _080498C8 + ldrb r0, [r0] + mov sb, r0 + ldr r4, _080498CC +_08049858: + mov r8, r1 + ldr r0, _080498D0 + ldrb r1, [r0] + ldr r2, _080498D4 + mov r7, r8 + ldrb r3, [r7] + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r2, [r0] + ands r1, r2 + cmp r1, #0 + beq _08049872 + b _08049A6C +_08049872: + ldr r1, _080498D8 + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08049882 + b _08049A6C +_08049882: + ldr r5, _080498DC + lsls r1, r2, #0x1c + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + ldr r0, [r6] + adds r0, #7 + bl sub_0803F718 + str r4, [r6] + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080498E4 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [r5] + ldr r1, _080498E0 + ldrb r0, [r1] + cmp r0, #0xfe + bhi _080498B8 + adds r0, #1 + strb r0, [r1] +_080498B8: + ldrb r0, [r7] + bl sub_08056D04 + b _0804990E + .align 2, 0 +_080498C0: .4byte gUnknown_2023D08 +_080498C4: .4byte gUnknown_2023EB0 +_080498C8: .4byte gUnknown_2023EAF +_080498CC: .4byte gUnknown_8288D3F +_080498D0: .4byte gUnknown_2023EB4 +_080498D4: .4byte gUnknown_82FACB4 +_080498D8: .4byte gUnknown_2023D28 +_080498DC: .4byte gUnknown_2023F24 +_080498E0: .4byte gUnknown_3005A70 +_080498E4: + ldr r4, _08049A2C + ldrb r0, [r4, #1] + cmp r0, #0xfe + bhi _080498F0 + adds r0, #1 + strb r0, [r4, #1] +_080498F0: + ldr r1, _08049A30 + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08049A34 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #0x20] +_0804990E: + ldr r2, _08049A38 + ldr r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804994C + ldr r6, _08049A3C + ldr r0, _08049A40 + ldrb r0, [r0] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804994C + movs r0, #0x41 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + ldr r4, _08049A44 + ldr r0, [r4] + bl sub_0803F718 + ldr r1, _08049A48 + mov r0, sb + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + str r0, [r1] + ldr r0, _08049A4C + str r0, [r4] +_0804994C: + ldr r1, _08049A50 + ldr r6, _08049A54 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08049964 + b _08049A72 +_08049964: + ldr r0, _08049A38 + ldr r5, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r5, r0 + cmp r5, #0 + beq _08049974 + b _08049A72 +_08049974: + ldr r3, _08049A40 + mov r8, r3 + ldrb r0, [r3] + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _08049A72 + ldr r0, _08049A3C + mov sb, r0 + mov r2, r8 + ldrb r1, [r2] + movs r7, #0x58 + adds r2, r1, #0 + muls r2, r7, r2 + adds r0, r2, r0 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08049A72 + ldr r0, _08049A58 + ldrh r0, [r0] + cmp r0, #0xa5 + beq _08049A72 + ldr r0, _08049A5C + ldr r0, [r0] + adds r0, r1, r0 + adds r0, #0x80 + ldrb r4, [r0] + adds r0, r4, r2 + mov r6, sb + adds r6, #0x24 + adds r0, r0, r6 + strb r5, [r0] + ldr r5, _08049A44 + ldr r0, [r5] + bl sub_0803F718 + ldr r0, _08049A60 + str r0, [r5] + ldr r5, _08049A64 + mov r3, r8 + ldrb r0, [r3] + strb r0, [r5] + adds r1, r4, #0 + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r5] + muls r0, r7, r0 + adds r0, r0, r6 + adds r0, r0, r4 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldrb r0, [r5] + bl sub_0803F440 + ldr r1, _08049A68 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + lsls r4, r4, #1 + mov r2, r8 + ldrb r0, [r2] + muls r0, r7, r0 + adds r0, r4, r0 + mov r2, sb + adds r2, #0xc + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #2] + mov r3, r8 + ldrb r0, [r3] + muls r0, r7, r0 + adds r4, r4, r0 + adds r4, r4, r2 + ldrh r0, [r4] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + b _08049A72 + .align 2, 0 +_08049A2C: .4byte gUnknown_3005A70 +_08049A30: .4byte gUnknown_2023D12 +_08049A34: .4byte gUnknown_20243E8 +_08049A38: .4byte gUnknown_2023F24 +_08049A3C: .4byte gUnknown_2023D28 +_08049A40: .4byte gUnknown_2023EAF +_08049A44: .4byte gUnknown_2023EB8 +_08049A48: .4byte gUnknown_2023E94 +_08049A4C: .4byte gUnknown_82893C6 +_08049A50: .4byte gUnknown_2023F50 +_08049A54: .4byte gUnknown_2023EB0 +_08049A58: .4byte gUnknown_2023E8E +_08049A5C: .4byte gUnknown_2024140 +_08049A60: .4byte gUnknown_8289715 +_08049A64: .4byte gUnknown_2023D08 +_08049A68: .4byte gUnknown_2022C0C +_08049A6C: + ldr r0, [r6] + adds r0, #7 + str r0, [r6] +_08049A72: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804979C + + thumb_func_start sub_08049A80 +sub_08049A80: @ 0x08049A80 + push {r4, r5, lr} + ldr r0, _08049AB0 + ldr r0, [r0] + cmp r0, #0 + bne _08049AAA + ldr r5, _08049AB4 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _08049AB8 + strb r0, [r4] + movs r0, #0 + bl sub_080338DC + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] +_08049AAA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08049AB0: .4byte gUnknown_2023D0C +_08049AB4: .4byte gUnknown_2023EB8 +_08049AB8: .4byte gUnknown_2023D08 + thumb_func_end sub_08049A80 + + thumb_func_start sub_08049ABC +sub_08049ABC: @ 0x08049ABC + push {r4, r5, lr} + sub sp, #4 + ldr r0, _08049B30 + ldr r5, [r0] + cmp r5, #0 + bne _08049B28 + ldr r0, _08049B34 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _08049B38 + strb r0, [r4] + ldr r0, _08049B3C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _08049AF4 + ldr r2, _08049B40 + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08049B1C +_08049AF4: + ldr r1, _08049B40 + ldrb r0, [r4] + movs r2, #0x58 + muls r0, r2, r0 + adds r1, #0x4c + adds r0, r0, r1 + str r5, [r0] + ldrb r0, [r4] + muls r0, r2, r0 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_08049B1C: + bl sub_0803A3A0 + ldr r1, _08049B34 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_08049B28: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08049B30: .4byte gUnknown_2023D0C +_08049B34: .4byte gUnknown_2023EB8 +_08049B38: .4byte gUnknown_2023D08 +_08049B3C: .4byte gUnknown_2022C90 +_08049B40: .4byte gUnknown_2023D28 + thumb_func_end sub_08049ABC + + thumb_func_start sub_08049B44 +sub_08049B44: @ 0x08049B44 + push {r4, r5, lr} + ldr r5, _08049BA0 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r5] + ldrb r4, [r2, #2] + ldrb r1, [r2, #3] + lsls r1, r1, #8 + adds r4, r4, r1 + ldrb r1, [r2, #4] + lsls r1, r1, #0x10 + adds r4, r4, r1 + ldrb r1, [r2, #5] + lsls r1, r1, #0x18 + adds r4, r4, r1 + ldrb r3, [r2, #6] + ldrb r1, [r2, #7] + lsls r1, r1, #8 + adds r3, r3, r1 + ldrb r1, [r2, #8] + lsls r1, r1, #0x10 + adds r3, r3, r1 + ldrb r1, [r2, #9] + lsls r1, r1, #0x18 + adds r3, r3, r1 + ldr r2, _08049BA4 + movs r1, #0x58 + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _08049BA8 + adds r0, r1, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08049BA8 + str r3, [r5] + b _08049BB0 + .align 2, 0 +_08049BA0: .4byte gUnknown_2023EB8 +_08049BA4: .4byte gUnknown_2023D28 +_08049BA8: + ldr r1, _08049BB8 + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] +_08049BB0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08049BB8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08049B44 + + thumb_func_start sub_08049BBC +sub_08049BBC: @ 0x08049BBC + push {r4, r5, lr} + ldr r5, _08049C18 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r5] + ldrb r4, [r2, #2] + ldrb r1, [r2, #3] + lsls r1, r1, #8 + adds r4, r4, r1 + ldrb r1, [r2, #4] + lsls r1, r1, #0x10 + adds r4, r4, r1 + ldrb r1, [r2, #5] + lsls r1, r1, #0x18 + adds r4, r4, r1 + ldrb r3, [r2, #6] + ldrb r1, [r2, #7] + lsls r1, r1, #8 + adds r3, r3, r1 + ldrb r1, [r2, #8] + lsls r1, r1, #0x10 + adds r3, r3, r1 + ldrb r1, [r2, #9] + lsls r1, r1, #0x18 + adds r3, r3, r1 + ldr r2, _08049C1C + movs r1, #0x58 + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0x50 + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _08049C20 + adds r0, r1, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08049C20 + str r3, [r5] + b _08049C28 + .align 2, 0 +_08049C18: .4byte gUnknown_2023EB8 +_08049C1C: .4byte gUnknown_2023D28 +_08049C20: + ldr r1, _08049C30 + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] +_08049C28: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08049C30: .4byte gUnknown_2023EB8 + thumb_func_end sub_08049BBC + + thumb_func_start sub_08049C34 +sub_08049C34: @ 0x08049C34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r6, _08049C88 + ldr r2, [r6] + ldrb r5, [r2, #2] + mov r8, r5 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + adds r7, r1, r0 + ldrb r0, [r2, #1] + cmp r0, #8 + bne _08049C94 + ldr r0, _08049C8C + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #0xd + adds r2, r5, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08049D08 + ldr r1, _08049C90 + strb r5, [r1] + str r7, [r6] + subs r4, #1 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + b _08049CF0 + .align 2, 0 +_08049C88: .4byte gUnknown_2023EB8 +_08049C8C: .4byte gUnknown_2023EAF +_08049C90: .4byte gUnknown_2023EAE +_08049C94: + cmp r0, #9 + bne _08049CCC + ldr r0, _08049CC4 + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #0xc + adds r2, r5, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08049D08 + ldr r1, _08049CC8 + strb r5, [r1] + str r7, [r6] + subs r4, #1 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + b _08049CF0 + .align 2, 0 +_08049CC4: .4byte gUnknown_2023EAF +_08049CC8: .4byte gUnknown_2023EAE +_08049CCC: + ldrb r0, [r2, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08049CFC + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r1, [r0] + cmp r1, r8 + bne _08049D08 + ldr r0, _08049D00 + strb r1, [r0] + str r7, [r6] + ldrb r1, [r0] + adds r0, r4, #0 +_08049CF0: + bl sub_0813114C + ldr r0, _08049D04 + strb r4, [r0, #0x15] + b _08049D0E + .align 2, 0 +_08049CFC: .4byte gUnknown_2023D28 +_08049D00: .4byte gUnknown_2023EAE +_08049D04: .4byte gUnknown_2024118 +_08049D08: + ldr r0, [r6] + adds r0, #7 + str r0, [r6] +_08049D0E: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08049C34 + + thumb_func_start sub_08049D1C +sub_08049D1C: @ 0x08049D1C + push {r4, r5, r6, lr} + ldr r0, _08049D34 + ldr r0, [r0] + ldrb r4, [r0, #1] + cmp r4, #1 + bne _08049D3C + ldr r0, _08049D38 + ldrb r0, [r0] + bl sub_080A630C + b _08049D46 + .align 2, 0 +_08049D34: .4byte gUnknown_2023EB8 +_08049D38: .4byte gUnknown_2023EAF +_08049D3C: + ldr r0, _08049D7C + ldrb r0, [r0] + bl sub_080A630C + movs r4, #1 +_08049D46: + ands r4, r0 + ldr r6, _08049D80 + ldr r3, [r6] + ldrb r2, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r1, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x18 + adds r5, r1, r0 + ldr r1, _08049D84 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ands r2, r0 + cmp r2, #0 + beq _08049D88 + str r5, [r6] + b _08049D8E + .align 2, 0 +_08049D7C: .4byte gUnknown_2023EB0 +_08049D80: .4byte gUnknown_2023EB8 +_08049D84: .4byte gUnknown_2023F32 +_08049D88: + adds r0, r3, #0 + adds r0, #8 + str r0, [r6] +_08049D8E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08049D1C + + thumb_func_start sub_08049D94 +sub_08049D94: @ 0x08049D94 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _08049DC8 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08049DCC + ldr r3, [r4] + movs r1, #0x58 + muls r0, r1, r0 + ldrb r1, [r3, #3] + adds r0, r0, r1 + adds r2, #0x18 + adds r0, r0, r2 + ldrb r2, [r0] + ldrb r0, [r3, #2] + cmp r0, #5 + bhi _08049E52 + lsls r0, r0, #2 + ldr r1, _08049DD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08049DC8: .4byte gUnknown_2023EB8 +_08049DCC: .4byte gUnknown_2023D28 +_08049DD0: .4byte _08049DD4 +_08049DD4: @ jump table + .4byte _08049DEC @ case 0 + .4byte _08049DFC @ case 1 + .4byte _08049E0C @ case 2 + .4byte _08049E1C @ case 3 + .4byte _08049E2C @ case 4 + .4byte _08049E40 @ case 5 +_08049DEC: + ldr r0, _08049DF8 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r2, r0 + bne _08049E52 + b _08049E4C + .align 2, 0 +_08049DF8: .4byte gUnknown_2023EB8 +_08049DFC: + ldr r0, _08049E08 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r2, r0 + beq _08049E52 + b _08049E4C + .align 2, 0 +_08049E08: .4byte gUnknown_2023EB8 +_08049E0C: + ldr r0, _08049E18 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r2, r0 + bls _08049E52 + b _08049E4C + .align 2, 0 +_08049E18: .4byte gUnknown_2023EB8 +_08049E1C: + ldr r0, _08049E28 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r2, r0 + bhs _08049E52 + b _08049E4C + .align 2, 0 +_08049E28: .4byte gUnknown_2023EB8 +_08049E2C: + ldr r0, _08049E3C + ldr r0, [r0] + ldrb r0, [r0, #4] + ands r2, r0 + cmp r2, #0 + beq _08049E52 + b _08049E4C + .align 2, 0 +_08049E3C: .4byte gUnknown_2023EB8 +_08049E40: + ldr r0, _08049E74 + ldr r0, [r0] + ldrb r0, [r0, #4] + ands r2, r0 + cmp r2, #0 + bne _08049E52 +_08049E4C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08049E52: + cmp r5, #0 + beq _08049E78 + ldr r3, _08049E74 + ldr r2, [r3] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3] + b _08049E80 + .align 2, 0 +_08049E74: .4byte gUnknown_2023EB8 +_08049E78: + ldr r1, _08049E88 + ldr r0, [r1] + adds r0, #9 + str r0, [r1] +_08049E80: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08049E88: .4byte gUnknown_2023EB8 + thumb_func_end sub_08049D94 + + thumb_func_start sub_08049E8C +sub_08049E8C: @ 0x08049E8C + push {r4, r5, r6, lr} + ldr r4, _08049EE0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r5, _08049EE4 + strb r0, [r5] + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + adds r6, r1, r0 + ldrb r1, [r2, #7] + ldrb r0, [r2, #8] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #9] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #0xa] + lsls r0, r0, #0x18 + adds r3, r1, r0 + ldrb r0, [r2, #6] + cmp r0, #0 + beq _08049EEC + ldr r0, _08049EE8 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, #0 + bne _08049F04 + b _08049EFC + .align 2, 0 +_08049EE0: .4byte gUnknown_2023EB8 +_08049EE4: .4byte gUnknown_2023D08 +_08049EE8: .4byte gUnknown_2023F50 +_08049EEC: + ldr r0, _08049F00 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, #0 + beq _08049F04 +_08049EFC: + str r3, [r4] + b _08049F0A + .align 2, 0 +_08049F00: .4byte gUnknown_2023F50 +_08049F04: + adds r0, r2, #0 + adds r0, #0xb + str r0, [r4] +_08049F0A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08049E8C + + thumb_func_start sub_08049F10 +sub_08049F10: @ 0x08049F10 + push {r4, r5, r6, lr} + ldr r4, _08049F58 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [r4] + ldrb r5, [r3, #2] + ldrb r2, [r3, #3] + ldrb r1, [r3, #4] + lsls r1, r1, #8 + adds r2, r2, r1 + ldrb r1, [r3, #5] + lsls r1, r1, #0x10 + adds r2, r2, r1 + ldrb r1, [r3, #6] + lsls r1, r1, #0x18 + adds r6, r2, r1 + ldr r2, _08049F5C + movs r1, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r5 + beq _08049F54 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r5 + bne _08049F60 +_08049F54: + str r6, [r4] + b _08049F64 + .align 2, 0 +_08049F58: .4byte gUnknown_2023EB8 +_08049F5C: .4byte gUnknown_2023D28 +_08049F60: + adds r0, r3, #7 + str r0, [r4] +_08049F64: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08049F10 + + thumb_func_start sub_08049F6C +sub_08049F6C: @ 0x08049F6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r6, #0 + ldr r0, _08049FB4 + ldr r0, [r0] + adds r0, #0x50 + mov sb, r0 + ldr r0, _08049FB8 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _08049FBC + strb r0, [r1] + ldr r2, _08049FC0 + movs r1, #2 + ands r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r0, _08049FC4 + ldrb r0, [r0, #0x1c] + cmp r0, #6 + bls _08049FA8 + bl _0804A8E2 +_08049FA8: + lsls r0, r0, #2 + ldr r1, _08049FC8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08049FB4: .4byte gUnknown_2024140 +_08049FB8: .4byte gUnknown_2023EB8 +_08049FBC: .4byte gUnknown_2023EB1 +_08049FC0: .4byte gUnknown_20240A2 +_08049FC4: .4byte gUnknown_2024118 +_08049FC8: .4byte _08049FCC +_08049FCC: @ jump table + .4byte _08049FE8 @ case 0 + .4byte _0804A054 @ case 1 + .4byte _0804A16E @ case 2 + .4byte _0804A480 @ case 3 + .4byte _0804A584 @ case 4 + .4byte _0804A870 @ case 5 + .4byte _0804A8B8 @ case 6 +_08049FE8: + ldr r4, _0804A038 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08049FFC + bl _0804A8AC +_08049FFC: + ldr r0, _0804A03C + ldr r0, [r0] + ldr r1, _0804A040 + ands r0, r1 + cmp r0, #0 + beq _0804A00C + bl _0804A8AC +_0804A00C: + ldr r1, _0804A044 + ldrb r0, [r1, #0x1c] + adds r0, #1 + strb r0, [r1, #0x1c] + ldr r0, _0804A048 + ldr r2, [r0] + adds r2, #0xdf + ldr r3, _0804A04C + ldr r1, _0804A050 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + bl _0804A8E2 + .align 2, 0 +_0804A038: .4byte gUnknown_2023EB1 +_0804A03C: .4byte gUnknown_2022C90 +_0804A040: .4byte 0x063F0982 +_0804A044: .4byte gUnknown_2024118 +_0804A048: .4byte gUnknown_2024140 +_0804A04C: .4byte gUnknown_82FACB4 +_0804A050: .4byte gUnknown_2023D12 +_0804A054: + movs r5, #0 + movs r7, #0 +_0804A058: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _0804A0A8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804A0C6 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804A0C6 + ldr r0, _0804A0AC + lsls r1, r7, #2 + adds r1, r1, r0 + ldr r0, [r1] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0804A08C + adds r5, #1 +_0804A08C: + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0804A0B8 + ldr r0, _0804A0B0 + ldr r0, [r0] + ldr r2, _0804A0B4 + adds r0, r0, r2 + ldrb r4, [r0] + b _0804A0C0 + .align 2, 0 +_0804A0A8: .4byte gUnknown_2024190 +_0804A0AC: .4byte gUnknown_82FACB4 +_0804A0B0: .4byte gUnknown_3005AEC +_0804A0B4: .4byte 0x00003226 +_0804A0B8: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0804A0C0: + cmp r4, #0x19 + bne _0804A0C6 + adds r6, #1 +_0804A0C6: + adds r7, #1 + cmp r7, #5 + ble _0804A058 + ldr r3, _0804A12C + ldr r2, _0804A130 + ldr r0, _0804A134 + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #9] + adds r1, #0x2a + ldrb r0, [r1] + muls r0, r2, r0 + movs r1, #7 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r6, #0 + beq _0804A13C + lsrs r4, r0, #0x11 + adds r0, r4, #0 + adds r1, r5, #0 + bl __divsi3 + mov r3, sb + strh r0, [r3] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0804A112 + movs r0, #1 + strh r0, [r3] +_0804A112: + ldr r5, _0804A138 + adds r0, r4, #0 + adds r1, r6, #0 + bl __divsi3 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0804A156 + movs r0, #1 + strh r0, [r5] + b _0804A156 + .align 2, 0 +_0804A12C: .4byte gUnknown_82F0D54 +_0804A130: .4byte gUnknown_2023D28 +_0804A134: .4byte gUnknown_2023EB1 +_0804A138: .4byte gUnknown_20240A6 +_0804A13C: + adds r0, r1, #0 + adds r1, r5, #0 + bl __divsi3 + mov r1, sb + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0804A152 + movs r0, #1 + strh r0, [r1] +_0804A152: + ldr r0, _0804A1A0 + strh r6, [r0] +_0804A156: + ldr r1, _0804A1A4 + ldrb r0, [r1, #0x1c] + adds r0, #1 + movs r2, #0 + strb r0, [r1, #0x1c] + ldr r1, _0804A1A8 + ldr r0, [r1] + strb r2, [r0, #0x10] + ldr r0, [r1] + adds r0, #0x53 + mov r2, r8 + strb r2, [r0] +_0804A16E: + ldr r0, _0804A1AC + ldr r0, [r0] + cmp r0, #0 + beq _0804A178 + b _0804A8E2 +_0804A178: + ldr r0, _0804A1A8 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A1B0 + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0804A1BC + ldr r0, _0804A1B4 + ldr r0, [r0] + ldr r3, _0804A1B8 + adds r0, r0, r3 + ldrb r4, [r0] + b _0804A1C4 + .align 2, 0 +_0804A1A0: .4byte gUnknown_20240A6 +_0804A1A4: .4byte gUnknown_2024118 +_0804A1A8: .4byte gUnknown_2024140 +_0804A1AC: .4byte gUnknown_2023D0C +_0804A1B0: .4byte gUnknown_2024190 +_0804A1B4: .4byte gUnknown_3005AEC +_0804A1B8: .4byte 0x00003226 +_0804A1BC: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0804A1C4: + ldr r5, _0804A1E4 + cmp r4, #0x19 + beq _0804A1EC + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x53 + ldrb r0, [r1] + movs r2, #1 + ands r2, r0 + cmp r2, #0 + bne _0804A1EC + lsrs r0, r0, #1 + strb r0, [r1] + ldr r1, _0804A1E8 + b _0804A210 + .align 2, 0 +_0804A1E4: .4byte gUnknown_2024140 +_0804A1E8: .4byte gUnknown_2024118 +_0804A1EC: + ldr r0, [r5] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A21C + adds r0, r0, r1 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x64 + bne _0804A228 + ldr r1, [r5] + adds r1, #0x53 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + ldr r1, _0804A220 + movs r2, #0 +_0804A210: + movs r0, #5 + strb r0, [r1, #0x1c] + ldr r0, _0804A224 + str r2, [r0] + b _0804A8E2 + .align 2, 0 +_0804A21C: .4byte gUnknown_2024190 +_0804A220: .4byte gUnknown_2024118 +_0804A224: .4byte gUnknown_2023E94 +_0804A228: + ldr r0, _0804A28C + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0804A256 + ldr r0, _0804A290 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804A256 + ldr r0, [r5] + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0804A256 + bl sub_0805E67C + ldr r0, _0804A294 + bl sub_080A3040 + ldr r1, [r5] + ldrb r0, [r1, #0x12] + adds r0, #1 + strb r0, [r1, #0x12] +_0804A256: + ldr r5, _0804A298 + ldr r0, [r5] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A29C + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _0804A270 + b _0804A45A +_0804A270: + ldr r0, [r5] + adds r0, #0x53 + ldrb r0, [r0] + movs r3, #1 + ands r3, r0 + cmp r3, #0 + beq _0804A2A4 + ldr r1, _0804A2A0 + mov r2, sb + ldrh r0, [r2] + str r0, [r1] + mov sb, r1 + b _0804A2AA + .align 2, 0 +_0804A28C: .4byte gUnknown_2022C90 +_0804A290: .4byte gUnknown_2023D28 +_0804A294: .4byte 0x00000161 +_0804A298: .4byte gUnknown_2024140 +_0804A29C: .4byte gUnknown_2024190 +_0804A2A0: .4byte gUnknown_2023E94 +_0804A2A4: + ldr r0, _0804A320 + str r3, [r0] + mov sb, r0 +_0804A2AA: + cmp r4, #0x19 + bne _0804A2BA + ldr r0, _0804A324 + ldrh r1, [r0] + mov r3, sb + ldr r0, [r3] + adds r0, r0, r1 + str r0, [r3] +_0804A2BA: + cmp r4, #0x28 + bne _0804A2D0 + mov r0, sb + ldr r1, [r0] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + mov r1, sb + str r0, [r1] +_0804A2D0: + ldr r5, _0804A328 + ldr r0, [r5] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0804A2EC + ldr r4, _0804A320 + ldr r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] +_0804A2EC: + ldr r4, _0804A32C + ldr r0, [r4] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A330 + adds r0, r0, r1 + bl sub_0806E334 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804A354 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0804A338 + ldr r0, [r4] + ldrb r0, [r0, #0x10] + cmp r0, #2 + bls _0804A338 + ldr r7, _0804A334 + ldr r2, _0804A320 + mov sb, r2 + b _0804A35A + .align 2, 0 +_0804A320: .4byte gUnknown_2023E94 +_0804A324: .4byte gUnknown_20240A6 +_0804A328: .4byte gUnknown_2022C90 +_0804A32C: .4byte gUnknown_2024140 +_0804A330: .4byte gUnknown_2024190 +_0804A334: .4byte 0x00000149 +_0804A338: + ldr r4, _0804A350 + ldr r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + movs r7, #0xa5 + lsls r7, r7, #1 + mov sb, r4 + b _0804A35A + .align 2, 0 +_0804A350: .4byte gUnknown_2023E94 +_0804A354: + ldr r7, _0804A390 + ldr r3, _0804A394 + mov sb, r3 +_0804A35A: + ldr r0, _0804A398 + ldr r1, [r0] + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0804A3C6 + ldr r0, _0804A39C + ldr r1, _0804A3A0 + ldr r4, [r1] + ldrh r0, [r0, #4] + adds r5, r1, #0 + ldr r3, _0804A3A4 + ldr r2, _0804A3A8 + ldrb r1, [r4, #0x10] + cmp r0, r1 + bne _0804A3AC + ldrb r1, [r2] + ldr r0, [r3, #8] + ands r1, r0 + cmp r1, #0 + bne _0804A3AC + adds r1, r4, #0 + adds r1, #0x8f + movs r0, #2 + strb r0, [r1] + b _0804A3CE + .align 2, 0 +_0804A390: .4byte 0x00000149 +_0804A394: .4byte gUnknown_2023E94 +_0804A398: .4byte gUnknown_2022C90 +_0804A39C: .4byte gUnknown_2023D12 +_0804A3A0: .4byte gUnknown_2024140 +_0804A3A4: .4byte gUnknown_82FACB4 +_0804A3A8: .4byte gUnknown_2023EB4 +_0804A3AC: + ldrb r2, [r2] + ldr r0, [r3] + ands r2, r0 + cmp r2, #0 + bne _0804A3BE + ldr r0, [r5] + adds r0, #0x8f + strb r2, [r0] + b _0804A3CE +_0804A3BE: + ldr r0, [r5] + adds r0, #0x8f + movs r1, #2 + b _0804A3CC +_0804A3C6: + ldr r0, _0804A468 + ldr r0, [r0] + adds r0, #0x8f +_0804A3CC: + strb r1, [r0] +_0804A3CE: + ldr r1, _0804A46C + movs r2, #0 + mov ip, r2 + movs r4, #0xfd + strb r4, [r1] + movs r5, #4 + strb r5, [r1, #1] + ldr r6, _0804A468 + ldr r2, [r6] + movs r3, #0x8f + adds r3, r3, r2 + mov r8, r3 + ldrb r0, [r3] + strb r0, [r1, #2] + ldrb r0, [r2, #0x10] + strb r0, [r1, #3] + mov r0, ip + strb r0, [r1, #4] + strb r7, [r1, #5] + movs r3, #0xff + lsls r3, r3, #8 + ands r7, r3 + asrs r0, r7, #8 + strb r0, [r1, #6] + movs r0, #0xff + strb r0, [r1, #7] + ldr r1, _0804A470 + strb r4, [r1] + movs r0, #1 + strb r0, [r1, #1] + strb r5, [r1, #2] + movs r0, #5 + strb r0, [r1, #3] + mov r0, sb + ldr r2, [r0] + strb r2, [r1, #4] + adds r0, r2, #0 + ands r0, r3 + asrs r0, r0, #8 + strb r0, [r1, #5] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r2 + asrs r0, r0, #0x10 + strb r0, [r1, #6] + lsrs r2, r2, #0x18 + strb r2, [r1, #7] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1, #8] + mov r2, r8 + ldrb r1, [r2] + movs r0, #0xd + bl sub_0803F5A4 + ldr r0, [r6] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A474 + adds r0, r0, r1 + ldr r3, _0804A478 + ldr r1, _0804A47C + ldrb r2, [r1] + movs r1, #0x58 + muls r1, r2, r1 + adds r1, r1, r3 + ldrh r1, [r1] + bl sub_0806D570 +_0804A45A: + ldr r0, _0804A468 + ldr r1, [r0] + adds r1, #0x53 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + b _0804A55A + .align 2, 0 +_0804A468: .4byte gUnknown_2024140 +_0804A46C: .4byte gUnknown_2022C0C +_0804A470: .4byte gUnknown_2022C1C +_0804A474: .4byte gUnknown_2024190 +_0804A478: .4byte gUnknown_2023D28 +_0804A47C: .4byte gUnknown_2023EB1 +_0804A480: + ldr r0, _0804A564 + ldr r2, [r0] + cmp r2, #0 + beq _0804A48A + b _0804A8E2 +_0804A48A: + ldr r1, _0804A568 + ldr r7, _0804A56C + ldr r0, [r7] + adds r0, #0x8f + ldrb r0, [r0] + lsls r0, r0, #9 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0804A570 + adds r0, r0, r5 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804A55A + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x64 + beq _0804A55A + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3a + bl sub_0806A058 + ldr r4, _0804A574 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3b + bl sub_0806A058 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1, #2] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3c + bl sub_0806A058 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1, #4] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3d + bl sub_0806A058 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1, #6] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3e + bl sub_0806A058 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1, #8] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x3f + bl sub_0806A058 + ldr r1, [r4] + ldr r1, [r1, #0x10] + strh r0, [r1, #0xa] + ldr r4, _0804A578 + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0x8f + ldrb r0, [r0] + strb r0, [r4] + ldrb r1, [r1, #0x10] + ldr r0, _0804A57C + ldrh r2, [r0] + movs r0, #0 + bl sub_08033D8C + ldrb r0, [r4] + bl sub_0803F440 +_0804A55A: + ldr r1, _0804A580 + ldrb r0, [r1, #0x1c] + adds r0, #1 + strb r0, [r1, #0x1c] + b _0804A8E2 + .align 2, 0 +_0804A564: .4byte gUnknown_2023D0C +_0804A568: .4byte gUnknown_2023508 +_0804A56C: .4byte gUnknown_2024140 +_0804A570: .4byte gUnknown_2024190 +_0804A574: .4byte gUnknown_202414C +_0804A578: .4byte gUnknown_2023D08 +_0804A57C: .4byte gUnknown_2023E94 +_0804A580: .4byte gUnknown_2024118 +_0804A584: + ldr r0, _0804A81C + ldr r0, [r0] + cmp r0, #0 + beq _0804A58E + b _0804A8E2 +_0804A58E: + ldr r1, _0804A820 + ldr r0, _0804A824 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0x8f + ldrb r0, [r0] + strb r0, [r1] + ldr r3, _0804A828 + ldrb r2, [r1] + lsls r1, r2, #9 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0x21 + beq _0804A5AC + b _0804A858 +_0804A5AC: + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #0xb + beq _0804A5B8 + b _0804A858 +_0804A5B8: + ldr r0, _0804A82C + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0804A5E2 + ldr r0, _0804A830 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldrb r4, [r4, #0x10] + cmp r0, r4 + bne _0804A5E2 + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804A834 + adds r0, r0, r1 + adds r1, r2, #0 + bl sub_0805E5AC +_0804A5E2: + ldr r1, _0804A838 + movs r3, #0xfd + strb r3, [r1] + movs r0, #4 + strb r0, [r1, #1] + ldr r6, _0804A820 + ldrb r0, [r6] + strb r0, [r1, #2] + ldr r0, _0804A824 + mov sb, r0 + ldr r2, [r0] + ldrb r0, [r2, #0x10] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r4, _0804A83C + strb r3, [r4] + movs r0, #1 + strb r0, [r4, #1] + strb r0, [r4, #2] + movs r0, #3 + strb r0, [r4, #3] + ldrb r0, [r2, #0x10] + movs r1, #0x64 + mov r8, r1 + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + ldr r7, _0804A834 + adds r0, r0, r7 + movs r1, #0x38 + bl sub_0806A058 + strb r0, [r4, #4] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #5] + bl sub_0803F73C + ldr r2, _0804A840 + ldr r1, _0804A844 + mov r3, sb + ldr r5, [r3] + ldrb r0, [r5, #0x10] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804A848 + ldr r0, _0804A84C + str r0, [r1] + ldr r4, _0804A850 + ldr r2, _0804A828 + ldrb r1, [r6] + lsls r1, r1, #9 + adds r0, r2, #2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + str r3, [r4] + ldrb r0, [r5, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + movs r1, #0 + bl sub_0806D3CC + ldr r1, _0804A830 + mov r2, sb + ldr r0, [r2] + ldrb r2, [r0, #0x10] + ldrh r0, [r1] + cmp r0, r2 + bne _0804A74E + ldr r4, _0804A854 + ldrh r0, [r4, #0x28] + cmp r0, #0 + beq _0804A74E + mov r0, r8 + muls r0, r2, r0 + adds r0, r0, r7 + movs r1, #0x38 + bl sub_0806A058 + adds r1, r4, #0 + adds r1, #0x2a + strb r0, [r1] + mov r3, sb + ldr r0, [r3] + ldrb r0, [r0, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r4, #0x28] + mov r2, sb + ldr r0, [r2] + ldrb r0, [r0, #0x10] + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r0, r7 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r4, #0x2c] + mov r1, sb + ldr r0, [r1] + ldrb r0, [r0, #0x10] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r7 + movs r1, #0x3b + bl sub_0806A058 + strh r0, [r4, #2] + mov r3, sb + ldr r0, [r3] + ldrb r0, [r0, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + movs r1, #0x3c + bl sub_0806A058 + strh r0, [r4, #4] + mov r2, sb + ldr r0, [r2] + ldrb r0, [r0, #0x10] + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r0, r7 + movs r1, #0x3d + bl sub_0806A058 + strh r0, [r4, #6] + mov r1, sb + ldr r0, [r1] + ldrb r0, [r0, #0x10] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r7 + movs r1, #0x3d + bl sub_0806A058 + strh r0, [r4, #6] + mov r3, sb + ldr r0, [r3] + ldrb r0, [r0, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + movs r1, #0x3e + bl sub_0806A058 + strh r0, [r4, #8] + mov r2, sb + ldr r0, [r2] + ldrb r0, [r0, #0x10] + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r0, r7 + movs r1, #0x3f + bl sub_0806A058 + strh r0, [r4, #0xa] +_0804A74E: + ldr r0, _0804A830 + ldr r7, _0804A824 + ldr r1, [r7] + ldrb r2, [r1, #0x10] + ldrh r0, [r0, #4] + cmp r0, r2 + beq _0804A75E + b _0804A85E +_0804A75E: + ldr r6, _0804A854 + movs r0, #0xd8 + adds r0, r0, r6 + mov r8, r0 + ldrh r0, [r0] + cmp r0, #0 + beq _0804A85E + ldr r0, _0804A82C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804A85E + movs r5, #0x64 + adds r0, r2, #0 + muls r0, r5, r0 + ldr r4, _0804A834 + adds r0, r0, r4 + movs r1, #0x38 + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xda + strb r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xdc + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3b + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xb2 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3c + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xb4 + strh r0, [r1] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3d + bl sub_0806A058 + movs r2, #0xb6 + adds r2, r2, r6 + mov r8, r2 + strh r0, [r2] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3d + bl sub_0806A058 + mov r3, r8 + strh r0, [r3] + ldr r0, [r7] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x3e + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xb8 + strh r0, [r1] + b _0804A85E + .align 2, 0 +_0804A81C: .4byte gUnknown_2023D0C +_0804A820: .4byte gUnknown_2023D08 +_0804A824: .4byte gUnknown_2024140 +_0804A828: .4byte gUnknown_2023508 +_0804A82C: .4byte gUnknown_2022C90 +_0804A830: .4byte gUnknown_2023D12 +_0804A834: .4byte gUnknown_2024190 +_0804A838: .4byte gUnknown_2022C0C +_0804A83C: .4byte gUnknown_2022C1C +_0804A840: .4byte gUnknown_3005AB4 +_0804A844: .4byte gUnknown_82FACB4 +_0804A848: .4byte gUnknown_2023EB8 +_0804A84C: .4byte gUnknown_8289145 +_0804A850: .4byte gUnknown_2023E94 +_0804A854: .4byte gUnknown_2023D28 +_0804A858: + ldr r1, _0804A868 + movs r0, #0 + str r0, [r1] +_0804A85E: + ldr r1, _0804A86C + movs r0, #5 + strb r0, [r1, #0x1c] + b _0804A8E2 + .align 2, 0 +_0804A868: .4byte gUnknown_2023E94 +_0804A86C: .4byte gUnknown_2024118 +_0804A870: + ldr r0, _0804A880 + ldr r0, [r0] + cmp r0, #0 + beq _0804A888 + ldr r1, _0804A884 + movs r0, #3 + strb r0, [r1, #0x1c] + b _0804A8E2 + .align 2, 0 +_0804A880: .4byte gUnknown_2023E94 +_0804A884: .4byte gUnknown_2024118 +_0804A888: + ldr r2, _0804A8A4 + ldr r1, [r2] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + ldr r0, [r2] + ldrb r0, [r0, #0x10] + cmp r0, #5 + bhi _0804A8AC + ldr r1, _0804A8A8 + movs r0, #2 + strb r0, [r1, #0x1c] + b _0804A8E2 + .align 2, 0 +_0804A8A4: .4byte gUnknown_2024140 +_0804A8A8: .4byte gUnknown_2024118 +_0804A8AC: + ldr r1, _0804A8B4 + movs r0, #6 + strb r0, [r1, #0x1c] + b _0804A8E2 + .align 2, 0 +_0804A8B4: .4byte gUnknown_2024118 +_0804A8B8: + ldr r0, _0804A8F0 + ldr r5, [r0] + cmp r5, #0 + bne _0804A8E2 + ldr r4, _0804A8F4 + ldr r2, _0804A8F8 + ldrb r0, [r2] + movs r1, #0x58 + muls r0, r1, r0 + adds r0, r0, r4 + movs r3, #0 + strh r5, [r0, #0x2e] + ldrb r0, [r2] + muls r0, r1, r0 + adds r0, r0, r4 + adds r0, #0x20 + strb r3, [r0] + ldr r1, _0804A8FC + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_0804A8E2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804A8F0: .4byte gUnknown_2023D0C +_0804A8F4: .4byte gUnknown_2023D28 +_0804A8F8: .4byte gUnknown_2023EB1 +_0804A8FC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08049F6C + + thumb_func_start sub_0804A900 +sub_0804A900: @ 0x0804A900 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + ldr r0, _0804A964 + ldr r0, [r0] + cmp r0, #0 + beq _0804A912 + b _0804AB52 +_0804A912: + ldr r0, _0804A968 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0804A978 + ldr r0, _0804A96C + ldrh r1, [r0] + ldr r0, _0804A970 + cmp r1, r0 + bne _0804A978 + movs r5, #0 +_0804A92C: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0804A974 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804A95C + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804A95C + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0804A95C: + adds r5, #1 + cmp r5, #2 + ble _0804A92C + b _0804A9D8 + .align 2, 0 +_0804A964: .4byte gUnknown_2023D0C +_0804A968: .4byte gUnknown_2022C90 +_0804A96C: .4byte gUnknown_203886E +_0804A970: .4byte 0x00000C03 +_0804A974: .4byte gUnknown_2024190 +_0804A978: + movs r5, #0 +_0804A97A: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0804AAF0 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804A9D2 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804A9D2 + ldr r0, _0804AAF4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0804A9C4 + ldr r0, _0804AAF8 + ldr r0, [r0] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _0804AAFC + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804A9D2 +_0804A9C4: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0804A9D2: + adds r5, #1 + cmp r5, #5 + ble _0804A97A +_0804A9D8: + cmp r6, #0 + bne _0804A9E6 + ldr r0, _0804AB00 + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_0804A9E6: + movs r6, #0 + movs r5, #0 +_0804A9EA: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0804AB04 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804AA40 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804AA40 + ldr r0, _0804AAF4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0804AA32 + ldr r0, _0804AAF8 + ldr r0, [r0] + ldr r1, _0804AB08 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _0804AAFC + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804AA40 +_0804AA32: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0804AA40: + adds r5, #1 + cmp r5, #5 + ble _0804A9EA + ldr r2, _0804AB00 + cmp r6, #0 + bne _0804AA54 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0804AA54: + ldrb r0, [r2] + cmp r0, #0 + bne _0804AB4A + ldr r0, _0804AAF4 + ldr r1, [r0] + ldr r2, _0804AB0C + ands r1, r2 + mov r8, r0 + cmp r1, #0 + beq _0804AB4A + movs r3, #0 + movs r5, #0 + ldr r0, _0804AB10 + ldrb r1, [r0] + mov ip, r0 + ldr r7, _0804AB14 + cmp r3, r1 + bge _0804AAA0 + ldr r0, _0804AB18 + movs r6, #0x80 + lsls r6, r6, #0x15 + ldr r4, [r0] + adds r2, r1, #0 + ldr r1, _0804AB1C +_0804AA84: + adds r0, r6, #0 + lsls r0, r5 + ands r0, r4 + cmp r0, #0 + beq _0804AA98 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804AA98 + adds r3, #1 +_0804AA98: + adds r1, #0x28 + adds r5, #2 + cmp r5, r2 + blt _0804AA84 +_0804AAA0: + movs r2, #0 + movs r5, #1 + mov r4, ip + ldrb r1, [r4] + cmp r5, r1 + bge _0804AADA + ldr r0, _0804AB18 + movs r4, #0x80 + lsls r4, r4, #0x15 + mov ip, r4 + ldr r6, [r0] + ldr r0, _0804AB1C + adds r4, r1, #0 + adds r1, r0, #0 + adds r1, #0x14 +_0804AABE: + mov r0, ip + lsls r0, r5 + ands r0, r6 + cmp r0, #0 + beq _0804AAD2 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804AAD2 + adds r2, #1 +_0804AAD2: + adds r1, #0x28 + adds r5, #2 + cmp r5, r4 + blt _0804AABE +_0804AADA: + mov r1, r8 + ldr r0, [r1] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804AB20 + adds r0, r2, r3 + cmp r0, #1 + bgt _0804AB28 + b _0804AB42 + .align 2, 0 +_0804AAF0: .4byte gUnknown_2024190 +_0804AAF4: .4byte gUnknown_2022C90 +_0804AAF8: .4byte gUnknown_2024140 +_0804AAFC: .4byte gUnknown_82FACB4 +_0804AB00: .4byte gUnknown_2023FDE +_0804AB04: .4byte gUnknown_20243E8 +_0804AB08: .4byte 0x000002A1 +_0804AB0C: .4byte gUnknown_2000002 +_0804AB10: .4byte gUnknown_2023D10 +_0804AB14: .4byte gUnknown_2023EB8 +_0804AB18: .4byte gUnknown_2023F24 +_0804AB1C: .4byte gUnknown_2024020 +_0804AB20: + cmp r2, #0 + beq _0804AB42 + cmp r3, #0 + beq _0804AB42 +_0804AB28: + ldr r2, [r7] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r7] + b _0804AB52 +_0804AB42: + ldr r0, [r7] + adds r0, #5 + str r0, [r7] + b _0804AB52 +_0804AB4A: + ldr r1, _0804AB5C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0804AB52: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804AB5C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804A900 + + thumb_func_start sub_0804AB60 +sub_0804AB60: @ 0x0804AB60 + ldr r1, _0804AB88 + movs r0, #0 + strb r0, [r1] + ldr r0, _0804AB8C + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xe] + ldr r0, _0804AB90 + strb r1, [r0] + ldr r0, _0804AB94 + strb r2, [r0, #3] + strb r2, [r0, #6] + ldr r2, _0804AB98 + ldr r0, [r2] + subs r1, #0x42 + ands r0, r1 + ldr r1, _0804AB9C + ands r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_0804AB88: .4byte gUnknown_2023F20 +_0804AB8C: .4byte gUnknown_2024118 +_0804AB90: .4byte gUnknown_2023EB5 +_0804AB94: .4byte gUnknown_2023FD6 +_0804AB98: .4byte gUnknown_2023F24 +_0804AB9C: .4byte 0xFFFFBFFF + thumb_func_end sub_0804AB60 + + thumb_func_start sub_0804ABA0 +sub_0804ABA0: @ 0x0804ABA0 + push {lr} + bl sub_0804AB60 + ldr r1, _0804ABB4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804ABB4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804ABA0 + + thumb_func_start sub_0804ABB8 +sub_0804ABB8: @ 0x0804ABB8 + ldr r3, _0804ABC8 + ldr r2, _0804ABCC + ldr r0, [r2] + ldrb r1, [r0, #1] + strb r1, [r3] + adds r0, #2 + str r0, [r2] + bx lr + .align 2, 0 +_0804ABC8: .4byte gUnknown_2023EB6 +_0804ABCC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804ABB8 + + thumb_func_start sub_0804ABD0 +sub_0804ABD0: @ 0x0804ABD0 + push {lr} + ldr r1, _0804ABEC + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804ABF4 + ldr r1, _0804ABF0 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0804AC0E + .align 2, 0 +_0804ABEC: .4byte gUnknown_2023EB6 +_0804ABF0: .4byte gUnknown_2023EB8 +_0804ABF4: + ldr r3, _0804AC14 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3] +_0804AC0E: + pop {r0} + bx r0 + .align 2, 0 +_0804AC14: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804ABD0 + + thumb_func_start sub_0804AC18 +sub_0804AC18: @ 0x0804AC18 + ldr r3, _0804AC34 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_0804AC34: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804AC18 + + thumb_func_start sub_0804AC38 +sub_0804AC38: @ 0x0804AC38 + push {r4, r5, r6, lr} + ldr r3, _0804AC7C + ldr r1, [r3] + ldrb r6, [r1, #1] + ldrb r2, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r4, [r1, #6] + ldrb r2, [r1, #7] + ldrb r0, [r1, #8] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #9] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x18 + adds r2, r2, r0 + adds r1, #0xb + str r1, [r3] + cmp r6, #5 + bhi _0804ACD0 + lsls r0, r6, #2 + ldr r1, _0804AC80 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804AC7C: .4byte gUnknown_2023EB8 +_0804AC80: .4byte _0804AC84 +_0804AC84: @ jump table + .4byte _0804AC9C @ case 0 + .4byte _0804ACA4 @ case 1 + .4byte _0804ACAC @ case 2 + .4byte _0804ACB4 @ case 3 + .4byte _0804ACBC @ case 4 + .4byte _0804ACC6 @ case 5 +_0804AC9C: + ldrb r0, [r5] + cmp r0, r4 + bne _0804ACD0 + b _0804ACCE +_0804ACA4: + ldrb r0, [r5] + cmp r0, r4 + beq _0804ACD0 + b _0804ACCE +_0804ACAC: + ldrb r0, [r5] + cmp r0, r4 + bls _0804ACD0 + b _0804ACCE +_0804ACB4: + ldrb r0, [r5] + cmp r0, r4 + bhs _0804ACD0 + b _0804ACCE +_0804ACBC: + ldrb r0, [r5] + ands r4, r0 + cmp r4, #0 + beq _0804ACD0 + b _0804ACCE +_0804ACC6: + ldrb r0, [r5] + ands r4, r0 + cmp r4, #0 + bne _0804ACD0 +_0804ACCE: + str r2, [r3] +_0804ACD0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804AC38 + + thumb_func_start sub_0804ACD8 +sub_0804ACD8: @ 0x0804ACD8 + push {r4, r5, r6, lr} + ldr r3, _0804AD24 + ldr r1, [r3] + ldrb r6, [r1, #1] + ldrb r2, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r4, [r1, #6] + ldrb r0, [r1, #7] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r2, [r1, #8] + ldrb r0, [r1, #9] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #0xb] + lsls r0, r0, #0x18 + adds r2, r2, r0 + adds r1, #0xc + str r1, [r3] + cmp r6, #5 + bhi _0804AD78 + lsls r0, r6, #2 + ldr r1, _0804AD28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804AD24: .4byte gUnknown_2023EB8 +_0804AD28: .4byte _0804AD2C +_0804AD2C: @ jump table + .4byte _0804AD44 @ case 0 + .4byte _0804AD4C @ case 1 + .4byte _0804AD54 @ case 2 + .4byte _0804AD5C @ case 3 + .4byte _0804AD64 @ case 4 + .4byte _0804AD6E @ case 5 +_0804AD44: + ldrh r0, [r5] + cmp r0, r4 + bne _0804AD78 + b _0804AD76 +_0804AD4C: + ldrh r0, [r5] + cmp r0, r4 + beq _0804AD78 + b _0804AD76 +_0804AD54: + ldrh r0, [r5] + cmp r0, r4 + bls _0804AD78 + b _0804AD76 +_0804AD5C: + ldrh r0, [r5] + cmp r0, r4 + bhs _0804AD78 + b _0804AD76 +_0804AD64: + ldrh r0, [r5] + ands r4, r0 + cmp r4, #0 + beq _0804AD78 + b _0804AD76 +_0804AD6E: + ldrh r0, [r5] + ands r4, r0 + cmp r4, #0 + bne _0804AD78 +_0804AD76: + str r2, [r3] +_0804AD78: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804ACD8 + + thumb_func_start sub_0804AD80 +sub_0804AD80: @ 0x0804AD80 + push {r4, r5, r6, lr} + ldr r3, _0804ADD8 + ldr r1, [r3] + ldrb r6, [r1, #1] + ldrb r2, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r4, [r1, #6] + ldrb r0, [r1, #7] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r1, #8] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r1, #9] + lsls r0, r0, #0x18 + orrs r4, r0 + ldrb r2, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + adds r2, r2, r0 + adds r1, #0xe + str r1, [r3] + cmp r6, #5 + bhi _0804AE2C + lsls r0, r6, #2 + ldr r1, _0804ADDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804ADD8: .4byte gUnknown_2023EB8 +_0804ADDC: .4byte _0804ADE0 +_0804ADE0: @ jump table + .4byte _0804ADF8 @ case 0 + .4byte _0804AE00 @ case 1 + .4byte _0804AE08 @ case 2 + .4byte _0804AE10 @ case 3 + .4byte _0804AE18 @ case 4 + .4byte _0804AE22 @ case 5 +_0804ADF8: + ldr r0, [r5] + cmp r0, r4 + bne _0804AE2C + b _0804AE2A +_0804AE00: + ldr r0, [r5] + cmp r0, r4 + beq _0804AE2C + b _0804AE2A +_0804AE08: + ldr r0, [r5] + cmp r0, r4 + bls _0804AE2C + b _0804AE2A +_0804AE10: + ldr r0, [r5] + cmp r0, r4 + bhs _0804AE2C + b _0804AE2A +_0804AE18: + ldr r0, [r5] + ands r0, r4 + cmp r0, #0 + beq _0804AE2C + b _0804AE2A +_0804AE22: + ldr r0, [r5] + ands r0, r4 + cmp r0, #0 + bne _0804AE2C +_0804AE2A: + str r2, [r3] +_0804AE2C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804AD80 + + thumb_func_start sub_0804AE34 +sub_0804AE34: @ 0x0804AE34 + push {r4, r5, r6, r7, lr} + ldr r2, _0804AE8C + ldr r3, [r2] + ldrb r1, [r3, #1] + ldrb r0, [r3, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x18 + adds r5, r1, r0 + ldrb r1, [r3, #5] + ldrb r0, [r3, #6] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x18 + adds r4, r1, r0 + ldrb r6, [r3, #9] + ldrb r1, [r3, #0xa] + ldrb r0, [r3, #0xb] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #0xc] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #0xd] + lsls r0, r0, #0x18 + adds r1, r1, r0 + mov ip, r1 + movs r1, #0 + cmp r1, r6 + bhs _0804AEAC + ldrb r0, [r5] + ldrb r7, [r4] + cmp r0, r7 + beq _0804AE90 + adds r0, r3, #0 + b _0804AEA8 + .align 2, 0 +_0804AE8C: .4byte gUnknown_2023EB8 +_0804AE90: + adds r5, #1 + adds r4, #1 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r6 + bhs _0804AEAC + ldrb r0, [r5] + ldrb r3, [r4] + cmp r0, r3 + beq _0804AE90 + ldr r0, [r2] +_0804AEA8: + adds r0, #0xe + str r0, [r2] +_0804AEAC: + cmp r1, r6 + bne _0804AEB4 + mov r7, ip + str r7, [r2] +_0804AEB4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804AE34 + + thumb_func_start sub_0804AEBC +sub_0804AEBC: @ 0x0804AEBC + push {r4, r5, r6, r7, lr} + movs r7, #0 + ldr r3, _0804AF30 + ldr r1, [r3] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r2, [r1, #5] + ldrb r0, [r1, #6] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #7] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #8] + lsls r0, r0, #0x18 + adds r4, r2, r0 + ldrb r6, [r1, #9] + ldrb r2, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + adds r2, r2, r0 + mov ip, r2 + movs r1, #0 + cmp r7, r6 + bhs _0804AF26 +_0804AF0A: + ldrb r0, [r5] + ldrb r2, [r4] + cmp r0, r2 + bne _0804AF18 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0804AF18: + adds r5, #1 + adds r4, #1 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r6 + blo _0804AF0A +_0804AF26: + cmp r7, r6 + beq _0804AF34 + mov r0, ip + b _0804AF38 + .align 2, 0 +_0804AF30: .4byte gUnknown_2023EB8 +_0804AF34: + ldr r0, [r3] + adds r0, #0xe +_0804AF38: + str r0, [r3] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804AEBC + + thumb_func_start sub_0804AF40 +sub_0804AF40: @ 0x0804AF40 + ldr r3, _0804AF64 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r0, [r2, #5] + strb r0, [r1] + ldr r0, [r3] + adds r0, #6 + str r0, [r3] + bx lr + .align 2, 0 +_0804AF64: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804AF40 + + thumb_func_start sub_0804AF68 +sub_0804AF68: @ 0x0804AF68 + ldr r3, _0804AF90 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r0, [r2, #5] + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, #6 + str r0, [r3] + bx lr + .align 2, 0 +_0804AF90: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804AF68 + + thumb_func_start sub_0804AF94 +sub_0804AF94: @ 0x0804AF94 + ldr r3, _0804AFBC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, #5] + subs r0, r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, #6 + str r0, [r3] + bx lr + .align 2, 0 +_0804AFBC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804AF94 + + thumb_func_start sub_0804AFC0 +sub_0804AFC0: @ 0x0804AFC0 + push {r4, r5, r6, lr} + ldr r3, _0804B010 + ldr r1, [r3] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + adds r6, r2, r0 + ldrb r2, [r1, #5] + ldrb r0, [r1, #6] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #7] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #8] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r4, [r1, #9] + movs r2, #0 + cmp r2, r4 + bge _0804B004 +_0804AFF6: + adds r0, r6, r2 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, r4 + blt _0804AFF6 +_0804B004: + ldr r0, [r3] + adds r0, #0xa + str r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804B010: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804AFC0 + + thumb_func_start sub_0804B014 +sub_0804B014: @ 0x0804B014 + push {r4, r5, r6, r7, lr} + ldr r3, _0804B07C + ldr r1, [r3] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + adds r7, r2, r0 + ldrb r2, [r1, #5] + ldrb r0, [r1, #6] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #7] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #8] + lsls r0, r0, #0x18 + adds r6, r2, r0 + ldrb r2, [r1, #9] + ldrb r0, [r1, #0xa] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r1, #0xb] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x18 + adds r5, r2, r0 + ldrb r4, [r1, #0xd] + movs r2, #0 + cmp r2, r4 + bge _0804B070 +_0804B05E: + adds r0, r7, r2 + ldrb r1, [r5] + adds r1, r2, r1 + adds r1, r6, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, r4 + blt _0804B05E +_0804B070: + ldr r0, [r3] + adds r0, #0xe + str r0, [r3] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804B07C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B014 + + thumb_func_start sub_0804B080 +sub_0804B080: @ 0x0804B080 + ldr r3, _0804B0A8 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, #5] + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, #6 + str r0, [r3] + bx lr + .align 2, 0 +_0804B0A8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B080 + + thumb_func_start sub_0804B0AC +sub_0804B0AC: @ 0x0804B0AC + push {r4, lr} + ldr r4, _0804B0E0 + ldr r3, [r4] + ldrb r2, [r3, #1] + ldrb r0, [r3, #2] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x18 + adds r2, r2, r0 + ldrb r1, [r3, #5] + ldrb r0, [r3, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrh r0, [r2] + orrs r1, r0 + strh r1, [r2] + ldr r0, [r4] + adds r0, #7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B0E0: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B0AC + + thumb_func_start sub_0804B0E4 +sub_0804B0E4: @ 0x0804B0E4 + push {r4, lr} + ldr r4, _0804B124 + ldr r2, [r4] + ldrb r3, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r3, r3, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r3, r3, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r3, r3, r0 + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, #9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B124: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B0E4 + + thumb_func_start sub_0804B128 +sub_0804B128: @ 0x0804B128 + ldr r3, _0804B150 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r2, [r2, #5] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, #6 + str r0, [r3] + bx lr + .align 2, 0 +_0804B150: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B128 + + thumb_func_start sub_0804B154 +sub_0804B154: @ 0x0804B154 + push {r4, lr} + ldr r4, _0804B188 + ldr r3, [r4] + ldrb r1, [r3, #1] + ldrb r0, [r3, #2] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldrb r2, [r3, #5] + ldrb r0, [r3, #6] + lsls r0, r0, #8 + orrs r2, r0 + ldrh r0, [r1] + bics r0, r2 + strh r0, [r1] + ldr r0, [r4] + adds r0, #7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B188: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B154 + + thumb_func_start sub_0804B18C +sub_0804B18C: @ 0x0804B18C + push {r4, lr} + ldr r4, _0804B1CC + ldr r2, [r4] + ldrb r3, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + adds r3, r3, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + adds r3, r3, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + adds r3, r3, r0 + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + adds r1, r1, r0 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, #9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B1CC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B18C + + thumb_func_start sub_0804B1D0 +sub_0804B1D0: @ 0x0804B1D0 + push {r4, r5, lr} + ldr r0, _0804B204 + ldr r4, [r0] + cmp r4, #0 + bne _0804B1FC + ldr r5, _0804B208 + ldr r2, [r5] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r3, _0804B20C + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r1 + blo _0804B1FC + strh r4, [r3] + adds r0, r2, #3 + str r0, [r5] +_0804B1FC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804B204: .4byte gUnknown_2023D0C +_0804B208: .4byte gUnknown_2023EB8 +_0804B20C: .4byte gUnknown_2023FD0 + thumb_func_end sub_0804B1D0 + + thumb_func_start sub_0804B210 +sub_0804B210: @ 0x0804B210 + push {lr} + ldr r0, _0804B228 + ldr r0, [r0] + cmp r0, #0 + bne _0804B222 + ldr r1, _0804B22C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804B222: + pop {r0} + bx r0 + .align 2, 0 +_0804B228: .4byte gUnknown_2023D0C +_0804B22C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B210 + + thumb_func_start sub_0804B230 +sub_0804B230: @ 0x0804B230 + push {lr} + ldr r0, _0804B244 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0804B250 + ldr r0, _0804B248 + ldr r1, _0804B24C + b _0804B254 + .align 2, 0 +_0804B244: .4byte gUnknown_2023EB8 +_0804B248: .4byte gUnknown_2023D08 +_0804B24C: .4byte gUnknown_2023EB0 +_0804B250: + ldr r0, _0804B278 + ldr r1, _0804B27C +_0804B254: + ldrb r1, [r1] + strb r1, [r0] + ldr r0, _0804B280 + ldrh r1, [r0] + movs r0, #0 + bl sub_08033D54 + ldr r0, _0804B278 + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _0804B284 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804B278: .4byte gUnknown_2023D08 +_0804B27C: .4byte gUnknown_2023EAF +_0804B280: .4byte gUnknown_2023E94 +_0804B284: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B230 + + thumb_func_start sub_0804B288 +sub_0804B288: @ 0x0804B288 + push {lr} + bl sub_0803F764 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804B288 + + thumb_func_start sub_0804B294 +sub_0804B294: @ 0x0804B294 + push {lr} + ldr r0, _0804B2C0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0804B2AC + ldr r0, _0804B2C4 + ldrb r0, [r0] + bl sub_081A5308 +_0804B2AC: + ldr r0, _0804B2C8 + movs r1, #0 + strb r1, [r0] + ldr r0, _0804B2CC + strb r1, [r0] + ldr r1, _0804B2D0 + movs r0, #0xb + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804B2C0: .4byte gUnknown_2022C90 +_0804B2C4: .4byte gUnknown_2023EAF +_0804B2C8: .4byte gUnknown_2023F20 +_0804B2CC: .4byte gUnknown_2023D08 +_0804B2D0: .4byte gUnknown_2023D27 + thumb_func_end sub_0804B294 + + thumb_func_start sub_0804B2D4 +sub_0804B2D4: @ 0x0804B2D4 + ldr r1, _0804B2E4 + movs r0, #0 + strb r0, [r1] + ldr r1, _0804B2E8 + movs r0, #0xb + strb r0, [r1] + bx lr + .align 2, 0 +_0804B2E4: .4byte gUnknown_2023D08 +_0804B2E8: .4byte gUnknown_2023D27 + thumb_func_end sub_0804B2D4 + + thumb_func_start sub_0804B2EC +sub_0804B2EC: @ 0x0804B2EC + push {lr} + bl sub_0803F764 + ldr r3, _0804B320 + ldr r0, [r3] + ldr r0, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, #0 + beq _0804B306 + subs r0, #1 + strb r0, [r1] +_0804B306: + ldr r2, _0804B324 + ldr r0, [r3] + ldr r1, [r0, #0xc] + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0804B320: .4byte gUnknown_202414C +_0804B324: .4byte gUnknown_3005A64 + thumb_func_end sub_0804B2EC + + thumb_func_start sub_0804B328 +sub_0804B328: @ 0x0804B328 + push {r4, lr} + ldr r4, _0804B354 + ldr r0, [r4] + adds r0, #5 + bl sub_0803F718 + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B354: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B328 + + thumb_func_start sub_0804B358 +sub_0804B358: @ 0x0804B358 + push {r4, lr} + ldr r4, _0804B3A0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [r4] + ldr r2, _0804B3A4 + movs r1, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r2, [r3, #2] + ldrb r1, [r1] + cmp r2, r1 + beq _0804B386 + adds r0, #0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _0804B3A8 +_0804B386: + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _0804B3AC + .align 2, 0 +_0804B3A0: .4byte gUnknown_2023EB8 +_0804B3A4: .4byte gUnknown_2023D28 +_0804B3A8: + adds r0, r3, #7 + str r0, [r4] +_0804B3AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804B358 + + thumb_func_start sub_0804B3B4 +sub_0804B3B4: @ 0x0804B3B4 + push {r4, lr} + sub sp, #4 + ldr r4, _0804B3EC + ldr r0, [r4] + ldrb r2, [r0, #1] + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804B3F0 + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _0804B3F6 + .align 2, 0 +_0804B3EC: .4byte gUnknown_2023EB8 +_0804B3F0: + ldr r0, [r4] + adds r0, #6 + str r0, [r4] +_0804B3F6: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804B3B4 + + thumb_func_start sub_0804B400 +sub_0804B400: @ 0x0804B400 + ldr r0, _0804B414 + ldrb r0, [r0] + ldr r1, _0804B418 + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x54 + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_0804B414: .4byte gUnknown_2023EAF +_0804B418: .4byte gUnknown_2024140 + thumb_func_end sub_0804B400 + + thumb_func_start sub_0804B41C +sub_0804B41C: @ 0x0804B41C + push {r4, r5, r6, lr} + ldr r5, _0804B470 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r6, _0804B474 + strb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + adds r3, r1, r0 + ldrb r4, [r2, #2] + adds r0, r4, #0 + cmp r0, #1 + beq _0804B452 + cmp r0, #0x11 + beq _0804B452 + cmp r0, #2 + bne _0804B478 +_0804B452: + ldr r4, _0804B470 + ldr r0, [r4] + ldrb r1, [r0, #2] + ldrh r2, [r3] + movs r0, #0 + bl sub_08034290 + ldr r0, _0804B474 + ldrb r0, [r0] + bl sub_0803F440 + ldr r0, [r4] + adds r0, #7 + str r0, [r4] + b _0804B4DA + .align 2, 0 +_0804B470: .4byte gUnknown_2023EB8 +_0804B474: .4byte gUnknown_2023D08 +_0804B478: + ldr r0, _0804B490 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804B498 + adds r0, r2, #7 + bl sub_0803F718 + ldr r0, _0804B494 + b _0804B4D8 + .align 2, 0 +_0804B490: .4byte gUnknown_2023F24 +_0804B494: .4byte gUnknown_8289141 +_0804B498: + adds r0, r4, #0 + subs r0, #0xa + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0804B4C4 + ldr r1, _0804B4BC + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804B4C0 + ands r0, r1 + cmp r0, #0 + beq _0804B4C4 + adds r0, r2, #7 + b _0804B4D8 + .align 2, 0 +_0804B4BC: .4byte gUnknown_2023F50 +_0804B4C0: .4byte 0x000400C0 +_0804B4C4: + ldrb r1, [r2, #2] + ldrh r2, [r3] + movs r0, #0 + bl sub_08034290 + ldrb r0, [r6] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #7 +_0804B4D8: + str r0, [r5] +_0804B4DA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0804B41C + + thumb_func_start sub_0804B4E0 +sub_0804B4E0: @ 0x0804B4E0 + push {r4, r5, r6, r7, lr} + ldr r6, _0804B548 + ldr r0, [r6] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r7, _0804B54C + strb r0, [r7] + ldr r2, [r6] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + adds r3, r1, r0 + ldrb r1, [r2, #6] + ldrb r0, [r2, #7] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #9] + lsls r0, r0, #0x18 + adds r4, r1, r0 + ldrb r5, [r3] + adds r0, r5, #0 + cmp r0, #1 + beq _0804B52A + cmp r0, #0x11 + beq _0804B52A + cmp r0, #2 + bne _0804B550 +_0804B52A: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, #0 + bl sub_08034290 + ldr r0, _0804B54C + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _0804B548 + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] + b _0804B5A6 + .align 2, 0 +_0804B548: .4byte gUnknown_2023EB8 +_0804B54C: .4byte gUnknown_2023D08 +_0804B550: + ldr r0, _0804B560 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804B564 + adds r0, r2, #0 + b _0804B5A2 + .align 2, 0 +_0804B560: .4byte gUnknown_2023F24 +_0804B564: + adds r0, r5, #0 + subs r0, #0xa + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0804B590 + ldr r1, _0804B588 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804B58C + ands r0, r1 + cmp r0, #0 + beq _0804B590 + adds r0, r2, #0 + b _0804B5A2 + .align 2, 0 +_0804B588: .4byte gUnknown_2023F50 +_0804B58C: .4byte 0x000400C0 +_0804B590: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, #0 + bl sub_08034290 + ldrb r0, [r7] + bl sub_0803F440 + ldr r0, [r6] +_0804B5A2: + adds r0, #0xa + str r0, [r6] +_0804B5A6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804B4E0 + + thumb_func_start sub_0804B5AC +sub_0804B5AC: @ 0x0804B5AC + push {r4, lr} + movs r3, #0 + ldr r1, _0804B5C8 + ldrb r0, [r1, #0x1a] + movs r2, #0xf0 + ands r2, r0 + adds r4, r1, #0 + cmp r2, #0x20 + beq _0804B5DA + cmp r2, #0x20 + bgt _0804B5CC + cmp r2, #0x10 + beq _0804B5D6 + b _0804B5E4 + .align 2, 0 +_0804B5C8: .4byte gUnknown_2024118 +_0804B5CC: + cmp r2, #0x90 + beq _0804B5DE + cmp r2, #0xa0 + beq _0804B5E2 + b _0804B5E4 +_0804B5D6: + movs r3, #0xf + b _0804B5E4 +_0804B5DA: + movs r3, #0x27 + b _0804B5E4 +_0804B5DE: + movs r3, #0x16 + b _0804B5E4 +_0804B5E2: + movs r3, #0x2e +_0804B5E4: + ldrb r1, [r4, #0x1a] + movs r0, #0xf + ands r0, r1 + adds r0, r3, r0 + subs r0, #1 + movs r1, #0 + strb r0, [r4, #0x10] + strb r1, [r4, #0x11] + ldr r1, _0804B604 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804B604: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B5AC + + thumb_func_start sub_0804B608 +sub_0804B608: @ 0x0804B608 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r7, #0 + movs r0, #0 + mov r8, r0 + movs r3, #0 + ldr r5, _0804B67C + ldr r0, [r5] + ldrb r0, [r0, #1] + str r3, [sp] + bl sub_0803F00C + ldr r2, _0804B680 + strb r0, [r2] + ldr r0, [r5] + ldrb r4, [r0, #2] + ldrb r1, [r0, #3] + movs r0, #1 + ands r0, r1 + ldr r3, [sp] + cmp r0, #0 + beq _0804B71C + movs r0, #2 + ands r0, r1 + movs r1, #0x15 + cmp r0, #0 + beq _0804B648 + movs r1, #0x2d +_0804B648: + cmp r4, #0 + beq _0804B6F0 + movs r0, #1 + mov sl, r0 + ldr r0, _0804B684 + mov sb, r0 + lsls r5, r1, #0x10 +_0804B656: + adds r0, r4, #0 + mov r1, sl + ands r0, r1 + cmp r0, #0 + beq _0804B6E2 + ldr r0, _0804B67C + ldr r0, [r0] + ldrb r1, [r0, #3] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0804B688 + ldr r0, _0804B680 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r7, r0 + b _0804B6D0 + .align 2, 0 +_0804B67C: .4byte gUnknown_2023EB8 +_0804B680: .4byte gUnknown_2023D08 +_0804B684: .4byte gUnknown_2023D40 +_0804B688: + ldr r6, _0804B70C + ldrb r0, [r6] + str r3, [sp] + bl sub_080A630C + mov r1, sl + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0804B710 + adds r0, r0, r1 + ldrb r0, [r0, #4] + ldr r3, [sp] + cmp r0, #0 + bne _0804B6E2 + ldr r0, _0804B714 + ldrb r2, [r6] + movs r1, #0x58 + muls r2, r1, r2 + adds r0, r2, r0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1d + beq _0804B6E2 + cmp r0, #0x49 + beq _0804B6E2 + cmp r0, #0x33 + bne _0804B6C6 + cmp r7, #6 + beq _0804B6E2 +_0804B6C6: + cmp r0, #0x34 + bne _0804B6CE + cmp r7, #1 + beq _0804B6E2 +_0804B6CE: + adds r0, r7, r2 +_0804B6D0: + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _0804B6E2 + lsrs r0, r5, #0x10 + mov r8, r0 + adds r3, #1 +_0804B6E2: + lsrs r4, r4, #1 + movs r1, #0x80 + lsls r1, r1, #9 + adds r5, r5, r1 + adds r7, #1 + cmp r4, #0 + bne _0804B656 +_0804B6F0: + ldr r0, _0804B718 + mov sb, r0 + cmp r3, #1 + ble _0804B77E + ldr r0, [r0] + ldrb r1, [r0, #3] + movs r0, #2 + ands r0, r1 + movs r1, #0x39 + mov r8, r1 + cmp r0, #0 + beq _0804B77E + movs r0, #0x3a + b _0804B77C + .align 2, 0 +_0804B70C: .4byte gUnknown_2023D08 +_0804B710: .4byte gUnknown_2023F38 +_0804B714: .4byte gUnknown_2023D28 +_0804B718: .4byte gUnknown_2023EB8 +_0804B71C: + movs r0, #2 + ands r0, r1 + movs r1, #0xe + cmp r0, #0 + beq _0804B728 + movs r1, #0x26 +_0804B728: + mov sb, r5 + cmp r4, #0 + beq _0804B764 + ldr r6, _0804B798 + adds r5, r2, #0 + lsls r2, r1, #0x10 +_0804B734: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0804B756 + ldrb r1, [r5] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r7, r0 + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xb + bgt _0804B756 + lsrs r1, r2, #0x10 + mov r8, r1 + adds r3, #1 +_0804B756: + lsrs r4, r4, #1 + movs r0, #0x80 + lsls r0, r0, #9 + adds r2, r2, r0 + adds r7, #1 + cmp r4, #0 + bne _0804B734 +_0804B764: + cmp r3, #1 + ble _0804B77E + mov r1, sb + ldr r0, [r1] + ldrb r1, [r0, #3] + movs r0, #2 + ands r0, r1 + movs r1, #0x37 + mov r8, r1 + cmp r0, #0 + beq _0804B77E + movs r0, #0x38 +_0804B77C: + mov r8, r0 +_0804B77E: + mov r1, sb + ldr r2, [r1] + ldrb r1, [r2, #3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0804B79C + cmp r3, #1 + bgt _0804B79C + adds r0, r2, #4 + mov r1, sb + b _0804B7EA + .align 2, 0 +_0804B798: .4byte gUnknown_2023D40 +_0804B79C: + cmp r3, #0 + beq _0804B7E4 + ldr r4, _0804B7D8 + ldrb r0, [r4, #0x1b] + cmp r0, #0 + bne _0804B7E4 + movs r0, #0 + movs r1, #1 + mov r2, r8 + str r3, [sp] + bl sub_08034290 + ldr r0, _0804B7DC + ldrb r0, [r0] + bl sub_0803F440 + ldr r0, _0804B7E0 + ldr r0, [r0] + ldrb r1, [r0, #3] + movs r0, #4 + ands r0, r1 + ldr r3, [sp] + cmp r0, #0 + beq _0804B7D4 + cmp r3, #1 + ble _0804B7D4 + movs r0, #1 + strb r0, [r4, #0x1b] +_0804B7D4: + ldr r1, _0804B7E0 + b _0804B7E6 + .align 2, 0 +_0804B7D8: .4byte gUnknown_2024118 +_0804B7DC: .4byte gUnknown_2023D08 +_0804B7E0: .4byte gUnknown_2023EB8 +_0804B7E4: + mov r1, sb +_0804B7E6: + ldr r0, [r1] + adds r0, #4 +_0804B7EA: + str r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804B608 + + thumb_func_start sub_0804B7FC +sub_0804B7FC: @ 0x0804B7FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + movs r0, #0 + mov sl, r0 + ldr r2, _0804B84C + ldrh r1, [r2] + ldr r0, _0804B850 + movs r3, #0 + str r3, [sp, #0x18] + cmp r1, r0 + beq _0804B81E + ldrh r2, [r2] + str r2, [sp, #0x18] +_0804B81E: + ldr r0, _0804B854 + ldr r0, [r0] + ldrb r4, [r0, #1] + str r4, [sp, #0x10] + ldrb r0, [r0, #2] + str r0, [sp, #0x14] + ldr r1, _0804B858 + ldr r0, _0804B85C + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0804B864 + ldr r1, _0804B860 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #7] + b _0804B86E + .align 2, 0 +_0804B84C: .4byte gUnknown_2023E90 +_0804B850: .4byte 0x0000FFFF +_0804B854: .4byte gUnknown_2023EB8 +_0804B858: .4byte gUnknown_2023D28 +_0804B85C: .4byte gUnknown_2023EAF +_0804B860: .4byte gUnknown_20240A8 +_0804B864: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0804B86E: + str r0, [sp, #8] + ldr r1, _0804B890 + ldr r0, _0804B894 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, #0xc8 + ldr r1, [r1] + adds r0, r1, r0 + str r0, [sp, #0xc] + ldrb r0, [r1, #0x13] + cmp r0, #0 + beq _0804B920 + movs r5, #0x3f + ands r5, r0 + str r5, [sp, #4] + b _0804B932 + .align 2, 0 +_0804B890: .4byte gUnknown_2024140 +_0804B894: .4byte gUnknown_2023EAF +_0804B898: + ldr r4, _0804B8AC + strb r2, [r4] + movs r0, #0 + movs r1, #1 + bl sub_0803426C + ldrb r0, [r4] + bl sub_0803F440 + b _0804BD8A + .align 2, 0 +_0804B8AC: .4byte gUnknown_2023D08 +_0804B8B0: + ldr r4, _0804B8D4 + strb r2, [r4] + movs r0, #0 + movs r1, #0 + bl sub_0803426C + ldrb r0, [r4] + bl sub_0803F440 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r0, [r1] + ldr r2, _0804B8D8 + ands r0, r2 + str r0, [r1] + b _0804BD8A + .align 2, 0 +_0804B8D4: .4byte gUnknown_2023D08 +_0804B8D8: .4byte 0xFFFBFF3F + thumb_func_end sub_0804B7FC + + thumb_func_start sub_0804B8DC +sub_0804B8DC: @ 0x0804B8DC + strb r2, [r7] + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r0, _0804B910 + strb r4, [r0, #0x14] + bl sub_0804AB60 + ldr r2, _0804B914 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + bl sub_0803F718 + ldr r1, _0804B918 + ldr r0, _0804B91C + bl _0804C1E8 + .align 2, 0 +_0804B910: .4byte gUnknown_2024118 +_0804B914: .4byte gUnknown_8286C30 +_0804B918: .4byte gUnknown_2023EB8 +_0804B91C: .4byte gUnknown_8289E05 +_0804B920: + ldr r2, _0804B938 + ldr r0, _0804B93C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + str r0, [sp, #4] +_0804B932: + ldr r1, _0804B940 + mov ip, r1 + b _0804B94E + .align 2, 0 +_0804B938: .4byte gUnknown_82ED220 +_0804B93C: .4byte gUnknown_2023E8E +_0804B940: .4byte gUnknown_2024118 + thumb_func_end sub_0804B8DC + + thumb_func_start sub_0804B944 +sub_0804B944: @ 0x0804B944 + mov r2, sl + cmp r2, #0 + beq _0804B94E + bl _0804C1D4 +_0804B94E: + mov r3, ip + ldrb r0, [r3, #0x14] + cmp r0, #0x11 + bls _0804B95A + bl _0804C1A0 +_0804B95A: + lsls r0, r0, #2 + ldr r1, _0804B964 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804B964: .4byte _0804B968 +_0804B968: @ jump table + .4byte _0804B9B0 @ case 0 + .4byte _0804BA8C @ case 1 + .4byte _0804BB48 @ case 2 + .4byte _0804BB6C @ case 3 + .4byte _0804BB84 @ case 4 + .4byte _0804BBAC @ case 5 + .4byte _0804BBD0 @ case 6 + .4byte _0804BC78 @ case 7 + .4byte _0804BCEE @ case 8 + .4byte _0804BD24 @ case 9 + .4byte _0804BDC4 @ case 10 + .4byte _0804BCB8 @ case 11 + .4byte _0804BCD8 @ case 12 + .4byte _0804BE08 @ case 13 + .4byte _0804BE4C @ case 14 + .4byte _0804C02C @ case 15 + .4byte _0804C114 @ case 16 + .4byte _0804C1A0 @ case 17 +_0804B9B0: + ldr r6, _0804BA68 + ldr r5, _0804BA6C + ldrb r3, [r5] + movs r7, #0x58 + adds r2, r3, #0 + muls r2, r7, r2 + adds r0, r6, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0804B9D0 + b _0804BDB4 +_0804B9D0: + adds r0, r2, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0804B9DA + b _0804BDB4 +_0804B9DA: + ldr r0, _0804BA70 + ldrb r1, [r0] + cmp r1, r3 + bne _0804B9E4 + b _0804BDB4 +_0804B9E4: + adds r0, r1, #0 + bl sub_080A62F8 + adds r4, r0, #0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _0804B9FC + b _0804BDB4 +_0804B9FC: + ldr r0, _0804BA74 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _0804BA0A + b _0804BDB4 +_0804BA0A: + ldr r2, _0804BA78 + ldrb r3, [r5] + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #2 + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _0804BA2E + adds r0, r2, #0 + adds r0, #0xc + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _0804BA2E + b _0804BDB4 +_0804BA2E: + ldr r2, _0804BA7C + ldr r0, _0804BA80 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0804BA44 + b _0804BDB4 +_0804BA44: + adds r0, r3, #0 + muls r0, r7, r0 + adds r1, r0, r6 + ldrb r2, [r1, #0x19] + movs r0, #0x19 + ldrsb r0, [r1, r0] + cmp r0, #0xb + ble _0804BA56 + b _0804BDB4 +_0804BA56: + adds r0, r2, #1 + strb r0, [r1, #0x19] + bl sub_0803F73C + ldr r1, _0804BA84 + ldr r0, _0804BA88 + str r0, [r1] + b _0804BCE8 + .align 2, 0 +_0804BA68: .4byte gUnknown_2023D28 +_0804BA6C: .4byte gUnknown_2023EB0 +_0804BA70: .4byte gUnknown_2023EAF +_0804BA74: .4byte gUnknown_2023F20 +_0804BA78: .4byte gUnknown_2024020 +_0804BA7C: .4byte gUnknown_82ED220 +_0804BA80: .4byte gUnknown_2023E8E +_0804BA84: .4byte gUnknown_2023EB8 +_0804BA88: .4byte gUnknown_8289395 +_0804BA8C: + ldr r4, _0804BB28 + ldr r6, _0804BB2C + ldrb r2, [r6] + movs r5, #0x58 + mov ip, r5 + mov r1, ip + muls r1, r2, r1 + adds r7, r4, #0 + adds r7, #0x4c + adds r5, r1, r7 + ldr r3, [r5] + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + bne _0804BAAC + b _0804BDB4 +_0804BAAC: + adds r0, r1, r4 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0804BAB6 + b _0804BDB4 +_0804BAB6: + ldr r0, _0804BB30 + ldrb r0, [r0] + cmp r0, r2 + bne _0804BAC0 + b _0804BDB4 +_0804BAC0: + ldr r0, _0804BB34 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, #0xc + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + bne _0804BAD4 + b _0804BDB4 +_0804BAD4: + ldr r0, _0804BB38 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _0804BAE2 + b _0804BDB4 +_0804BAE2: + ldr r0, [sp, #4] + cmp r0, #0xa + beq _0804BAEA + b _0804BDB4 +_0804BAEA: + movs r0, #0x21 + rsbs r0, r0, #0 + ands r3, r0 + str r3, [r5] + ldr r4, _0804BB3C + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r6] + mov r1, ip + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + bl sub_0803F73C + ldr r1, _0804BB40 + ldr r0, _0804BB44 + str r0, [r1] + movs r2, #1 + mov sl, r2 + b _0804BDB4 + .align 2, 0 +_0804BB28: .4byte gUnknown_2023D28 +_0804BB2C: .4byte gUnknown_2023EB0 +_0804BB30: .4byte gUnknown_2023EAF +_0804BB34: .4byte gUnknown_2024020 +_0804BB38: .4byte gUnknown_2023F20 +_0804BB3C: .4byte gUnknown_2023D08 +_0804BB40: .4byte gUnknown_2023EB8 +_0804BB44: .4byte gUnknown_828980A +_0804BB48: + ldr r0, _0804BB68 + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #7 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804BB62 + b _0804BDB4 +_0804BB62: + movs r3, #1 + mov sl, r3 + b _0804BDB4 + .align 2, 0 +_0804BB68: .4byte gUnknown_2023EB0 +_0804BB6C: + ldr r0, _0804BB80 + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #4 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + b _0804BCE2 + .align 2, 0 +_0804BB80: .4byte gUnknown_2023EB0 +_0804BB84: + movs r0, #0 + str r0, [sp] + movs r0, #5 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804BB9C + b _0804BDB4 +_0804BB9C: + movs r5, #1 + mov sl, r5 + ldr r0, _0804BBA8 + mov ip, r0 + b _0804C1A0 + .align 2, 0 +_0804BBA8: .4byte gUnknown_2024118 +_0804BBAC: + ldr r0, _0804BBCC + ldrb r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #8 + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804BBC6 + b _0804BDB4 +_0804BBC6: + movs r1, #1 + mov sl, r1 + b _0804BDB4 + .align 2, 0 +_0804BBCC: .4byte gUnknown_2023EAF +_0804BBD0: + ldr r0, _0804BC60 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0804BC14 + ldr r2, [sp, #8] + cmp r2, #0x1d + bne _0804BC14 + ldr r0, _0804BC64 + ldrh r2, [r0] + adds r3, r0, #0 + cmp r2, #0xa5 + beq _0804BC14 + ldr r4, [sp, #0xc] + ldrh r1, [r4] + cmp r1, #0 + beq _0804BBFC + ldr r0, _0804BC68 + cmp r1, r0 + bne _0804BC14 +_0804BBFC: + cmp r2, #0xe2 + bne _0804BC0E + ldr r0, _0804BC6C + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0804BC0E + b _0804C0E6 +_0804BC0E: + ldrh r0, [r3] + ldr r1, [sp, #0xc] + strh r0, [r1] +_0804BC14: + movs r4, #0 + ldr r2, _0804BC70 + ldr r3, _0804BC74 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r2, #0xc + adds r0, r0, r2 + ldrh r0, [r0] + ldr r5, [sp, #0xc] + ldrh r1, [r5] + mov sb, r3 + cmp r0, r1 + beq _0804BC4C + mov r6, sb + movs r3, #0x58 + adds r5, r1, #0 +_0804BC36: + adds r4, #1 + cmp r4, #3 + bgt _0804BC4C + lsls r0, r4, #1 + ldrb r1, [r6] + muls r1, r3, r1 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r5 + bne _0804BC36 +_0804BC4C: + cmp r4, #4 + bne _0804BC56 + movs r0, #0 + ldr r1, [sp, #0xc] + strh r0, [r1] +_0804BC56: + mov r2, ip + ldrb r0, [r2, #0x14] + adds r0, #1 + strb r0, [r2, #0x14] + b _0804C1A0 + .align 2, 0 +_0804BC60: .4byte gUnknown_2023F24 +_0804BC64: .4byte gUnknown_2023E90 +_0804BC68: .4byte 0x0000FFFF +_0804BC6C: .4byte gUnknown_2023F20 +_0804BC70: .4byte gUnknown_2023D28 +_0804BC74: .4byte gUnknown_2023EAF +_0804BC78: + movs r4, #0 + ldr r0, _0804BCAC + ldrb r3, [r0] + cmp r4, r3 + blt _0804BC84 + b _0804BE32 +_0804BC84: + ldr r7, _0804BCB0 + movs r6, #0 + movs r3, #0xd0 + adds r5, r0, #0 + ldr r2, _0804BCB4 +_0804BC8E: + ldr r0, [r7] + adds r0, r0, r3 + ldrh r1, [r0] + cmp r1, #0 + beq _0804BC9C + strh r1, [r2, #0x2e] + strh r6, [r0] +_0804BC9C: + adds r3, #2 + adds r2, #0x58 + adds r4, #1 + ldrb r0, [r5] + cmp r4, r0 + blt _0804BC8E + b _0804BE32 + .align 2, 0 +_0804BCAC: .4byte gUnknown_2023D10 +_0804BCB0: .4byte gUnknown_2024140 +_0804BCB4: .4byte gUnknown_2023D28 +_0804BCB8: + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_0804411C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804BDB4 + movs r2, #1 + mov sl, r2 + ldr r3, _0804BCD4 + mov ip, r3 + b _0804C1A0 + .align 2, 0 +_0804BCD4: .4byte gUnknown_2024118 +_0804BCD8: + movs r0, #4 + movs r1, #0 + movs r2, #0 + bl sub_0804411C +_0804BCE2: + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804BDB4 +_0804BCE8: + movs r4, #1 + mov sl, r4 + b _0804BDB4 +_0804BCEE: + ldr r1, _0804BD14 + ldr r0, _0804BD18 + ldrb r2, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804BD1C + ands r0, r1 + cmp r0, #0 + bne _0804BD04 + b _0804C0E6 +_0804BD04: + ldr r0, _0804BD20 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804BD12 + b _0804B898 +_0804BD12: + b _0804C0E6 + .align 2, 0 +_0804BD14: .4byte gUnknown_2023F50 +_0804BD18: .4byte gUnknown_2023EAF +_0804BD1C: .4byte 0x000400C0 +_0804BD20: .4byte gUnknown_2023F24 +_0804BD24: + ldr r0, _0804BD94 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804BD50 + ldr r1, _0804BD98 + ldr r0, _0804BD9C + ldrb r2, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804BDA0 + ands r0, r1 + cmp r0, #0 + beq _0804BD50 + adds r0, r2, #0 + bl sub_0803F54C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804BDB4 +_0804BD50: + ldr r4, _0804BDA4 + ldr r5, _0804BD9C + ldrb r0, [r5] + strb r0, [r4] + movs r0, #0 + movs r1, #0 + bl sub_0803426C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, _0804BD98 + ldrb r2, [r5] + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _0804BDA8 + ands r0, r1 + str r0, [r2] + ldr r2, _0804BDAC + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0804BD8A: + ldr r1, _0804BDB0 + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] + b _0804C1EA + .align 2, 0 +_0804BD94: .4byte gUnknown_2023F20 +_0804BD98: .4byte gUnknown_2023F50 +_0804BD9C: .4byte gUnknown_2023EAF +_0804BDA0: .4byte 0x000400C0 +_0804BDA4: .4byte gUnknown_2023D08 +_0804BDA8: .4byte 0xFFFBFF3F +_0804BDAC: .4byte gUnknown_2024020 +_0804BDB0: .4byte gUnknown_2024118 +_0804BDB4: + ldr r1, _0804BDC0 + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] + mov ip, r1 + b _0804C1A0 + .align 2, 0 +_0804BDC0: .4byte gUnknown_2024118 +_0804BDC4: + ldr r0, _0804BDF4 + ldr r6, _0804BDF8 + ldrb r2, [r6] + lsls r3, r2, #2 + adds r1, r3, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0804BE32 + ldr r0, _0804BDFC + ldrb r0, [r0] + cmp r2, r0 + bhs _0804BE32 + ldr r5, _0804BE00 + adds r0, r3, r5 + ldr r0, [r0] + ldr r1, _0804BE04 + ands r0, r1 + cmp r0, #0 + bne _0804BDF2 + b _0804B8B0 +_0804BDF2: + b _0804BE32 + .align 2, 0 +_0804BDF4: .4byte gUnknown_2024020 +_0804BDF8: .4byte gUnknown_2023EB0 +_0804BDFC: .4byte gUnknown_2023D10 +_0804BE00: .4byte gUnknown_2023F50 +_0804BE04: .4byte 0x000400C0 +_0804BE08: + movs r4, #0 + ldr r0, _0804BE3C + ldrb r2, [r0] + cmp r4, r2 + bge _0804BE32 + ldr r2, _0804BE40 + ldr r5, _0804BE44 + adds r3, r0, #0 + ldr r1, _0804BE48 +_0804BE1A: + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _0804BE26 + ldr r0, [r1] + ands r0, r5 + str r0, [r1] +_0804BE26: + adds r2, #0x1c + adds r1, #0x58 + adds r4, #1 + ldrb r0, [r3] + cmp r4, r0 + blt _0804BE1A +_0804BE32: + mov r1, ip + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] + b _0804C1A0 + .align 2, 0 +_0804BE3C: .4byte gUnknown_2023D10 +_0804BE40: .4byte gUnknown_2023F60 +_0804BE44: .4byte 0xFEFFFFFF +_0804BE48: .4byte gUnknown_2023D78 +_0804BE4C: + ldr r1, _0804BF00 + ldr r3, [r1] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r3 + ldr r2, _0804BF04 + mov sb, r2 + adds r5, r1, #0 + cmp r0, #0 + beq _0804BE76 + ldr r0, _0804BF08 + ldrb r2, [r2] + strb r2, [r0] + ldr r1, _0804BF0C + ldrb r0, [r1] + mov r4, sb + strb r0, [r4] + strb r2, [r1] + ldr r0, _0804BF10 + ands r3, r0 + str r3, [r5] +_0804BE76: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0804BE92 + ldr r0, _0804BF14 + mov r2, sb + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r0, _0804BF18 + ldrh r0, [r0] + strh r0, [r1] +_0804BE92: + ldr r0, _0804BF1C + ldrb r1, [r0] + ldr r2, _0804BF20 + mov r3, sb + ldrb r4, [r3] + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r3, [r0] + ands r1, r3 + adds r6, r2, #0 + cmp r1, #0 + beq _0804BEAC + b _0804C018 +_0804BEAC: + ldr r0, _0804BF24 + ldr r1, [r0] + adds r1, #0x91 + ldrb r1, [r1] + ands r1, r3 + adds r7, r0, #0 + cmp r1, #0 + beq _0804BEBE + b _0804C018 +_0804BEBE: + ldr r0, _0804BF28 + ldr r2, [sp, #0x18] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + mov r8, r0 + cmp r1, #0x7f + bne _0804BED4 + b _0804C018 +_0804BED4: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0804BF38 + ldr r0, _0804BF2C + lsls r1, r4, #1 + adds r1, r1, r0 + ldr r0, _0804BF18 + ldrh r0, [r0] + strh r0, [r1] + ldr r0, _0804BF30 + mov r3, sb + ldrb r1, [r3] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r0, _0804BF34 + ldrh r0, [r0] + strh r0, [r1] + b _0804BF52 + .align 2, 0 +_0804BF00: .4byte gUnknown_2023F24 +_0804BF04: .4byte gUnknown_2023EAF +_0804BF08: .4byte gUnknown_2023D08 +_0804BF0C: .4byte gUnknown_2023EB0 +_0804BF10: .4byte 0xFFFFEFFF +_0804BF14: .4byte gUnknown_2023EE4 +_0804BF18: .4byte gUnknown_2023E90 +_0804BF1C: .4byte gUnknown_2023EB4 +_0804BF20: .4byte gUnknown_82FACB4 +_0804BF24: .4byte gUnknown_2024140 +_0804BF28: .4byte gUnknown_82ED220 +_0804BF2C: .4byte gUnknown_2023EEC +_0804BF30: .4byte gUnknown_2023F04 +_0804BF34: .4byte gUnknown_2023E8E +_0804BF38: + ldr r1, _0804BFA0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldr r1, _0804BFA4 + strh r1, [r0] + ldr r1, _0804BFA8 + mov r4, sb + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strh r1, [r0] +_0804BF52: + ldr r2, _0804BFAC + ldrb r3, [r2] + lsls r0, r3, #2 + adds r0, r0, r6 + ldr r0, [r0] + lsls r0, r0, #0x1c + ldr r1, [r5] + ands r1, r0 + cmp r1, #0 + bne _0804BF70 + ldr r0, _0804BFB0 + adds r0, r3, r0 + mov r3, sb + ldrb r1, [r3] + strb r1, [r0] +_0804BF70: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0804C00C + ldr r0, _0804BFB4 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804C00C + ldr r0, _0804BFB8 + ldrh r3, [r0] + ldr r0, _0804BFA4 + cmp r3, r0 + bne _0804BFC0 + ldr r1, _0804BFBC + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r3, [r0] + b _0804C018 + .align 2, 0 +_0804BFA0: .4byte gUnknown_2023EEC +_0804BFA4: .4byte 0x0000FFFF +_0804BFA8: .4byte gUnknown_2023F04 +_0804BFAC: .4byte gUnknown_2023EB0 +_0804BFB0: .4byte gUnknown_2023F14 +_0804BFB4: .4byte gUnknown_2023F20 +_0804BFB8: .4byte gUnknown_2023E90 +_0804BFBC: .4byte gUnknown_2023EF4 +_0804BFC0: + ldr r0, _0804BFE4 + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r4, _0804BFE8 + ldrh r0, [r4] + strh r0, [r1] + ldr r0, [r7] + ldrb r3, [r0, #0x13] + cmp r3, #0 + beq _0804BFF0 + ldr r0, _0804BFEC + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + movs r0, #0x3f + ands r0, r3 + b _0804C016 + .align 2, 0 +_0804BFE4: .4byte gUnknown_2023EF4 +_0804BFE8: .4byte gUnknown_2023E8E +_0804BFEC: .4byte gUnknown_2023EFC +_0804BFF0: + ldr r0, _0804C008 + ldrb r2, [r2] + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #2] + strh r0, [r2] + b _0804C018 + .align 2, 0 +_0804C008: .4byte gUnknown_2023EFC +_0804C00C: + ldr r0, _0804C024 + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r0, _0804C028 +_0804C016: + strh r0, [r1] +_0804C018: + mov r4, ip + ldrb r0, [r4, #0x14] + adds r0, #1 + strb r0, [r4, #0x14] + b _0804C1A0 + .align 2, 0 +_0804C024: .4byte gUnknown_2023EF4 +_0804C028: .4byte 0x0000FFFF +_0804C02C: + ldr r0, _0804C0F0 + ldrb r1, [r0] + ldr r7, _0804C0F4 + ldr r2, _0804C0F8 + ldrb r3, [r2] + lsls r0, r3, #2 + adds r0, r0, r7 + ldr r4, [r0] + ands r1, r4 + mov sb, r2 + cmp r1, #0 + bne _0804C0E6 + ldr r6, _0804C0FC + ldr r5, [r6] + adds r0, r5, #0 + adds r0, #0x91 + ldrb r0, [r0] + ands r0, r4 + cmp r0, #0 + bne _0804C0E6 + ldr r1, _0804C100 + ldr r2, [sp, #0x18] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0804C0E6 + ldr r0, _0804C104 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0804C0E6 + ldr r4, _0804C108 + ldrb r0, [r4] + cmp r3, r0 + beq _0804C0E6 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r7 + ldr r0, [r0] + lsls r0, r0, #0x1c + ands r1, r0 + cmp r1, #0 + bne _0804C0E6 + ldr r0, _0804C10C + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804C0E6 + lsls r1, r2, #1 + adds r1, r1, r5 + adds r1, #0x98 + ldr r3, _0804C110 + ldrh r0, [r3] + strb r0, [r1] + ldrb r1, [r4] + ldr r0, [r6] + lsls r1, r1, #1 + adds r1, r1, r0 + adds r1, #0x99 + ldrh r0, [r3] + lsrs r0, r0, #8 + strb r0, [r1] + ldrb r0, [r4] + mov r2, sb + ldrb r1, [r2] + ldr r2, [r6] + lsls r0, r0, #3 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r2 + adds r0, #0xe0 + ldrh r1, [r3] + strb r1, [r0] + ldrb r1, [r4] + mov r4, sb + ldrb r0, [r4] + ldr r2, [r6] + lsls r1, r1, #3 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + adds r1, #0xe1 + ldrh r0, [r3] + lsrs r0, r0, #8 + strb r0, [r1] +_0804C0E6: + mov r5, ip + ldrb r0, [r5, #0x14] + adds r0, #1 + strb r0, [r5, #0x14] + b _0804C1A0 + .align 2, 0 +_0804C0F0: .4byte gUnknown_2023EB4 +_0804C0F4: .4byte gUnknown_82FACB4 +_0804C0F8: .4byte gUnknown_2023EAF +_0804C0FC: .4byte gUnknown_2024140 +_0804C100: .4byte gUnknown_82ED220 +_0804C104: .4byte gUnknown_2023F24 +_0804C108: .4byte gUnknown_2023EB0 +_0804C10C: .4byte gUnknown_2023F20 +_0804C110: .4byte gUnknown_2023E90 +_0804C114: + ldr r5, _0804C1FC + ldr r2, [r5] + movs r0, #0x80 + lsls r0, r0, #0xc + ands r0, r2 + cmp r0, #0 + bne _0804C198 + ldr r0, _0804C200 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804C198 + ldr r1, _0804C204 + ldr r0, _0804C208 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0804C198 + ldr r0, _0804C20C + mov sb, r0 + ldr r1, _0804C210 + mov r8, r1 + ldrh r0, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + ldrb r0, [r1, #6] + cmp r0, #8 + bne _0804C198 + movs r6, #0x80 + lsls r6, r6, #2 + adds r4, r6, #0 + ands r4, r2 + cmp r4, #0 + bne _0804C198 + ldr r7, _0804C214 + ldrb r0, [r7] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0804C218 + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804C18E + bl sub_0804B8DC +_0804C18E: + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r2, _0804C21C + mov ip, r2 +_0804C198: + mov r3, ip + ldrb r0, [r3, #0x14] + adds r0, #1 + strb r0, [r3, #0x14] +_0804C1A0: + ldr r4, [sp, #0x10] + cmp r4, #1 + bne _0804C1B2 + mov r5, sl + cmp r5, #0 + bne _0804C1B2 + movs r0, #0x11 + mov r1, ip + strb r0, [r1, #0x14] +_0804C1B2: + ldr r2, [sp, #0x10] + cmp r2, #2 + bne _0804C1C8 + ldr r4, [sp, #0x14] + mov r3, ip + ldrb r3, [r3, #0x14] + cmp r4, r3 + bne _0804C1C8 + movs r0, #0x11 + mov r4, ip + strb r0, [r4, #0x14] +_0804C1C8: + mov r5, ip + ldrb r0, [r5, #0x14] + cmp r0, #0x11 + beq _0804C1D4 + bl sub_0804B944 +_0804C1D4: + mov r1, ip + ldrb r0, [r1, #0x14] + cmp r0, #0x11 + bne _0804C1EA + mov r2, sl + cmp r2, #0 + bne _0804C1EA + ldr r1, _0804C220 + ldr r0, [r1] + adds r0, #3 +_0804C1E8: + str r0, [r1] +_0804C1EA: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C1FC: .4byte gUnknown_2023F24 +_0804C200: .4byte gUnknown_2022C90 +_0804C204: .4byte gUnknown_2023FE0 +_0804C208: .4byte gUnknown_2023EAF +_0804C20C: .4byte gUnknown_82ED220 +_0804C210: .4byte gUnknown_2023E8E +_0804C214: .4byte gUnknown_2023EB0 +_0804C218: .4byte gUnknown_2023D28 +_0804C21C: .4byte gUnknown_2024118 +_0804C220: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804B944 + + thumb_func_start sub_0804C224 +sub_0804C224: @ 0x0804C224 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r4, #0 + movs r5, #0 + ldr r2, _0804C288 + ldr r0, _0804C28C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + mov r8, r0 + ldr r2, _0804C290 + ldr r3, _0804C294 + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + mov ip, r2 + adds r7, r3, #0 + cmp r0, #0x1a + bne _0804C2B8 + mov r1, r8 + cmp r1, #4 + bne _0804C2B8 + ldr r3, _0804C298 + strb r0, [r3] + ldr r2, _0804C29C + ldrb r0, [r2] + movs r1, #9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804C2A0 + ldrb r0, [r7] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r4, [r0] + ldr r0, _0804C2A4 + mov r2, r8 + strb r2, [r0, #6] + ldrb r0, [r7] + ldrb r1, [r3] + bl sub_0813114C + b _0804C39A + .align 2, 0 +_0804C288: .4byte gUnknown_82ED220 +_0804C28C: .4byte gUnknown_2023E8E +_0804C290: .4byte gUnknown_2023D28 +_0804C294: .4byte gUnknown_2023EB0 +_0804C298: .4byte gUnknown_2023EAE +_0804C29C: .4byte gUnknown_2023F20 +_0804C2A0: .4byte gUnknown_2023EF4 +_0804C2A4: .4byte gUnknown_2023FD6 +_0804C2A8: + ldr r0, _0804C2B4 + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] + b _0804C39A + .align 2, 0 +_0804C2B4: .4byte gUnknown_2023F20 +_0804C2B8: + ldr r1, _0804C2C4 + adds r0, r5, r1 + ldrb r0, [r0] + adds r6, r1, #0 + b _0804C37A + .align 2, 0 +_0804C2C4: .4byte gUnknown_82EBB38 +_0804C2C8: + adds r0, r5, r6 + ldrb r0, [r0] + cmp r0, r8 + bne _0804C374 + adds r2, r5, #1 + adds r3, r2, r6 + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + add r0, ip + adds r0, #0x21 + ldrb r1, [r3] + adds r3, r2, #0 + ldrb r0, [r0] + cmp r1, r0 + bne _0804C306 + adds r0, r5, #2 + adds r0, r0, r6 + ldrb r1, [r0] + cmp r1, #0 + beq _0804C2A8 + cmp r1, #5 + bne _0804C2FA + movs r0, #4 + orrs r4, r0 +_0804C2FA: + cmp r1, #0x14 + bne _0804C306 + movs r0, #2 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0804C306: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + add r0, ip + adds r1, r0, #0 + adds r1, #0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0804C374 + adds r0, #0x21 + ldrb r1, [r0] + cmp r1, r2 + beq _0804C32E + adds r0, r5, #2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _0804C2A8 +_0804C32E: + cmp r1, r2 + beq _0804C344 + adds r0, r5, #2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #5 + bne _0804C344 + movs r0, #4 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0804C344: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + add r0, ip + adds r1, r0, #0 + adds r1, #0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0804C374 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0804C374 + adds r0, r5, #2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0x14 + bne _0804C374 + movs r0, #2 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_0804C374: + adds r5, #3 + adds r0, r5, r6 + ldrb r0, [r0] +_0804C37A: + cmp r0, #0xff + beq _0804C39A + cmp r0, #0xfe + bne _0804C2C8 + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, ip + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + beq _0804C374 +_0804C39A: + ldr r2, _0804C448 + ldr r0, _0804C44C + mov r8, r0 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r6, [r0] + cmp r6, #0x19 + bne _0804C416 + movs r5, #0x29 + ands r5, r4 + cmp r5, #0 + bne _0804C416 + ldr r0, _0804C450 + ldrb r0, [r0] + ldr r7, _0804C454 + ldrh r1, [r7] + bl sub_08052BBC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bne _0804C416 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0804C3DC + movs r0, #6 + ands r4, r0 + cmp r4, #6 + bne _0804C416 +_0804C3DC: + ldr r2, _0804C458 + ldrh r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0804C416 + ldr r3, _0804C45C + strb r6, [r3] + ldr r2, _0804C460 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804C464 + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r5, [r0] + ldr r1, _0804C468 + movs r0, #3 + strb r0, [r1, #6] + ldrb r0, [r2] + ldrb r1, [r3] + bl sub_0813114C +_0804C416: + ldr r0, _0804C460 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0804C434 + ldr r2, _0804C46C + ldr r0, _0804C450 + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrb r0, [r1, #1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1, #1] +_0804C434: + ldr r1, _0804C470 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C448: .4byte gUnknown_2023D28 +_0804C44C: .4byte gUnknown_2023EB0 +_0804C450: .4byte gUnknown_2023EAF +_0804C454: .4byte gUnknown_2023E8E +_0804C458: .4byte gUnknown_82ED220 +_0804C45C: .4byte gUnknown_2023EAE +_0804C460: .4byte gUnknown_2023F20 +_0804C464: .4byte gUnknown_2023EF4 +_0804C468: .4byte gUnknown_2023FD6 +_0804C46C: .4byte gUnknown_2023FE0 +_0804C470: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804C224 + + thumb_func_start sub_0804C474 +sub_0804C474: @ 0x0804C474 + push {r4, lr} + ldr r4, _0804C4B0 + ldr r0, _0804C4B4 + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _0804C4B8 + ldr r1, _0804C4BC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + ands r0, r1 + cmp r0, #0 + bne _0804C4A2 + movs r0, #0 + movs r1, #0 + bl sub_0803385C + ldrb r0, [r4] + bl sub_0803F440 +_0804C4A2: + ldr r1, _0804C4C0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804C4B0: .4byte gUnknown_2023D08 +_0804C4B4: .4byte gUnknown_2023EAF +_0804C4B8: .4byte gUnknown_2023F24 +_0804C4BC: .4byte gUnknown_82FACB4 +_0804C4C0: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804C474 + + thumb_func_start sub_0804C4C4 +sub_0804C4C4: @ 0x0804C4C4 + push {r4, r5, lr} + ldr r0, _0804C51C + ldr r0, [r0] + cmp r0, #0 + bne _0804C514 + ldr r5, _0804C520 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804C524 + strb r0, [r4] + ldr r3, _0804C528 + ldrb r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r3 + ldr r1, _0804C52C + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x5c + ldrb r0, [r0] + strh r0, [r2] + ldr r1, _0804C530 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0] + movs r0, #0 + movs r1, #0 + bl sub_0803374C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] +_0804C514: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804C51C: .4byte gUnknown_2023D0C +_0804C520: .4byte gUnknown_2023EB8 +_0804C524: .4byte gUnknown_2023D08 +_0804C528: .4byte gUnknown_2023D12 +_0804C52C: .4byte gUnknown_2024140 +_0804C530: .4byte gUnknown_82FACB4 + thumb_func_end sub_0804C4C4 + + thumb_func_start sub_0804C534 +sub_0804C534: @ 0x0804C534 + push {r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r0, _0804C6DC + ldr r0, [r0] + cmp r0, #0 + beq _0804C542 + b _0804C6D4 +_0804C542: + ldr r0, _0804C6E0 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804C6E4 + strb r0, [r4] + ldr r6, _0804C6E8 + ldrb r0, [r4] + movs r5, #0x58 + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r6 + mov r0, sp + movs r2, #0x58 + bl memcpy + ldrb r0, [r4] + muls r0, r5, r0 + adds r3, r0, r6 + movs r2, #0 + ldr r5, _0804C6EC +_0804C56E: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r1, #4 + adds r1, r2, r1 + adds r1, r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0x57 + bls _0804C56E + ldr r4, _0804C6E8 + ldr r6, _0804C6E4 + ldrb r0, [r6] + movs r7, #0x58 + adds r2, r0, #0 + muls r2, r7, r2 + adds r2, r2, r4 + ldr r3, _0804C6F0 + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #6] + adds r2, #0x21 + strb r0, [r2] + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r7, r1 + adds r1, r1, r4 + ldrh r2, [r1] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #7] + adds r1, #0x22 + strb r0, [r1] + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r7, r1 + adds r1, r1, r4 + ldrh r0, [r1] + ldrb r1, [r1, #0x17] + lsrs r1, r1, #7 + bl sub_0806B15C + ldrb r1, [r6] + muls r1, r7, r1 + adds r1, r1, r4 + adds r1, #0x20 + strb r0, [r1] + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0804C6F4 + adds r0, #0x29 + adds r0, r2, r0 + ldrb r1, [r0] + ldr r3, _0804C6F8 + ldr r2, _0804C6FC + ldrb r5, [r6] + lsls r0, r5, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ands r1, r0 + mov ip, r4 + cmp r1, #0 + beq _0804C60E + adds r0, r5, #0 + muls r0, r7, r0 + add r0, ip + movs r1, #0 + strh r1, [r0, #0x2e] +_0804C60E: + ldr r2, _0804C700 + ldr r0, _0804C704 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x7f + bne _0804C656 + movs r2, #0 + adds r4, r6, #0 + movs r6, #0x58 + mov r5, ip + adds r5, #0x18 + add r3, sp, #0x18 +_0804C62E: + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r6, r1 + adds r1, r2, r1 + adds r1, r1, r5 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #7 + ble _0804C62E + ldr r0, _0804C6E4 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, ip + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [sp, #0x50] + str r1, [r0] +_0804C656: + bl sub_08039EC8 + ldr r0, _0804C708 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0804C6A8 + ldr r4, _0804C6E8 + ldr r0, _0804C6E4 + ldrb r3, [r0] + movs r0, #0x58 + adds r2, r3, #0 + muls r2, r0, r2 + adds r1, r2, r4 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #1 + ldrh r1, [r1, #0x28] + cmp r0, r1 + blo _0804C6A8 + cmp r1, #0 + beq _0804C6A8 + adds r0, r4, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0804C6A8 + ldr r0, _0804C70C + ldr r2, [r0] + adds r2, #0x92 + ldr r1, _0804C6F8 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] +_0804C6A8: + ldr r0, _0804C710 + ldr r3, _0804C6E4 + ldrb r2, [r3] + strb r2, [r0, #0x17] + ldr r1, _0804C714 + movs r0, #0xfd + strb r0, [r1] + movs r0, #7 + strb r0, [r1, #1] + strb r2, [r1, #2] + ldr r2, _0804C6FC + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _0804C6E0 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_0804C6D4: + add sp, #0x58 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804C6DC: .4byte gUnknown_2023D0C +_0804C6E0: .4byte gUnknown_2023EB8 +_0804C6E4: .4byte gUnknown_2023D08 +_0804C6E8: .4byte gUnknown_2023D28 +_0804C6EC: .4byte gUnknown_2023508 +_0804C6F0: .4byte gUnknown_82F0D54 +_0804C6F4: .4byte gUnknown_2024074 +_0804C6F8: .4byte gUnknown_82FACB4 +_0804C6FC: .4byte gUnknown_2023D12 +_0804C700: .4byte gUnknown_82ED220 +_0804C704: .4byte gUnknown_2023E8E +_0804C708: .4byte gUnknown_2022C90 +_0804C70C: .4byte gUnknown_2024140 +_0804C710: .4byte gUnknown_2024118 +_0804C714: .4byte gUnknown_2022C0C + thumb_func_end sub_0804C534 + + thumb_func_start sub_0804C718 +sub_0804C718: @ 0x0804C718 + push {r4, r5, r6, lr} + ldr r0, _0804C7BC + ldr r0, [r0] + cmp r0, #0 + bne _0804C7B6 + ldr r0, _0804C7C0 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r6, _0804C7C4 + strb r0, [r6] + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0804C76E + ldr r0, _0804C7C8 + ldr r0, [r0] + ldr r1, _0804C7CC + ands r0, r1 + cmp r0, #0 + bne _0804C76E + ldr r4, _0804C7D0 + ldrb r0, [r6] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r6] + muls r1, r5, r1 + adds r4, #0x48 + adds r1, r1, r4 + ldr r2, [r1] + movs r1, #2 + bl sub_0806EAA8 +_0804C76E: + ldr r2, _0804C7D4 + ldr r1, _0804C7D8 + ldr r5, _0804C7C4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldr r1, _0804C7DC + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r4, _0804C7C0 + ldr r0, [r4] + ldrb r2, [r0, #2] + movs r0, #0 + bl sub_08033838 + ldrb r0, [r5] + bl sub_0803F440 + ldr r0, [r4] + adds r0, #3 + str r0, [r4] + ldr r0, _0804C7C8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0804C7B6 + bl sub_081A52A4 +_0804C7B6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804C7BC: .4byte gUnknown_2023D0C +_0804C7C0: .4byte gUnknown_2023EB8 +_0804C7C4: .4byte gUnknown_2023D08 +_0804C7C8: .4byte gUnknown_2022C90 +_0804C7CC: .4byte 0x063F0902 +_0804C7D0: .4byte gUnknown_2023D28 +_0804C7D4: .4byte gUnknown_2023EB4 +_0804C7D8: .4byte gUnknown_82FACB4 +_0804C7DC: .4byte gUnknown_2023D12 + thumb_func_end sub_0804C718 + + thumb_func_start sub_0804C7E0 +sub_0804C7E0: @ 0x0804C7E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _0804C844 + ldr r0, [r4] + ldrb r1, [r0, #1] + movs r0, #0x7f + ands r0, r1 + bl sub_0803F00C + ldr r3, _0804C848 + strb r0, [r3] + ldr r2, [r4] + ldrb r1, [r2, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0804C858 + ldr r1, _0804C84C + ldrb r3, [r3] + movs r0, #0x58 + muls r0, r3, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804C850 + ands r0, r1 + cmp r0, #0 + bne _0804C82C + ldr r1, _0804C854 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0804C858 +_0804C82C: + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _0804CB30 + .align 2, 0 +_0804C844: .4byte gUnknown_2023EB8 +_0804C848: .4byte gUnknown_2023D08 +_0804C84C: .4byte gUnknown_2023D28 +_0804C850: .4byte 0x0400E000 +_0804C854: .4byte gUnknown_2023F50 +_0804C858: + ldr r0, _0804C8DC + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0804C8F0 + ldr r5, _0804C8E0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0804C8E4 + mov r8, r1 + cmp r0, #1 + bne _0804C87E + ldr r0, _0804C8E8 + mov r8, r0 +_0804C87E: + movs r4, #0 + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804C88C + movs r4, #3 +_0804C88C: + adds r6, r4, #3 + cmp r4, r6 + bge _0804C8D4 + ldr r7, _0804C8EC +_0804C894: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804C8CE + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804C8CE + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804C8CE + ldr r0, _0804C8E0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, r4 + bne _0804C8D4 +_0804C8CE: + adds r4, #1 + cmp r4, r6 + blt _0804C894 +_0804C8D4: + cmp r4, r6 + bne _0804C8DA + b _0804CB00 +_0804C8DA: + b _0804CB28 + .align 2, 0 +_0804C8DC: .4byte gUnknown_2022C90 +_0804C8E0: .4byte gUnknown_2023D08 +_0804C8E4: .4byte gUnknown_2024190 +_0804C8E8: .4byte gUnknown_20243E8 +_0804C8EC: .4byte gUnknown_2023D12 +_0804C8F0: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804C9BC + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r1, r0 + cmp r1, #0 + beq _0804C930 + ldr r5, _0804C914 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804C91C + ldr r0, _0804C918 + b _0804C946 + .align 2, 0 +_0804C914: .4byte gUnknown_2023D08 +_0804C918: .4byte gUnknown_2024190 +_0804C91C: + ldr r1, _0804C92C + mov r8, r1 + ldrb r0, [r5] + movs r4, #3 + cmp r0, #1 + bne _0804C962 + movs r4, #0 + b _0804C962 + .align 2, 0 +_0804C92C: .4byte gUnknown_20243E8 +_0804C930: + ldr r5, _0804C9AC + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0804C9B0 + mov r8, r1 + cmp r0, #1 + bne _0804C948 + ldr r0, _0804C9B4 +_0804C946: + mov r8, r0 +_0804C948: + movs r4, #0 + ldrb r0, [r5] + bl sub_0806D300 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0806D2C8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0804C962 + movs r4, #3 +_0804C962: + adds r6, r4, #3 + cmp r4, r6 + bge _0804C8D4 + ldr r7, _0804C9B8 +_0804C96A: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804C9A4 + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804C9A4 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804C9A4 + ldr r0, _0804C9AC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, r4 + bne _0804C8D4 +_0804C9A4: + adds r4, #1 + cmp r4, r6 + blt _0804C96A + b _0804C8D4 + .align 2, 0 +_0804C9AC: .4byte gUnknown_2023D08 +_0804C9B0: .4byte gUnknown_2024190 +_0804C9B4: .4byte gUnknown_20243E8 +_0804C9B8: .4byte gUnknown_2023D12 +_0804C9BC: + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0804CA40 + ldr r5, _0804CA34 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0804CA40 + ldr r0, _0804CA38 + mov r8, r0 + movs r4, #0 + ldrb r0, [r5] + cmp r0, #3 + bne _0804C9E4 + movs r4, #3 +_0804C9E4: + adds r6, r4, #3 + cmp r4, r6 + blt _0804C9EC + b _0804C8D4 +_0804C9EC: + ldr r7, _0804CA3C +_0804C9EE: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804CA2A + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804CA2A + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804CA2A + ldr r0, _0804CA34 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, r4 + beq _0804CA2A + b _0804C8D4 +_0804CA2A: + adds r4, #1 + cmp r4, r6 + blt _0804C9EE + b _0804C8D4 + .align 2, 0 +_0804CA34: .4byte gUnknown_2023D08 +_0804CA38: .4byte gUnknown_20243E8 +_0804CA3C: .4byte gUnknown_2023D12 +_0804CA40: + ldr r0, _0804CA70 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _0804CA84 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0804CA74 + ldr r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _0804CA78 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _0804CA7A + .align 2, 0 +_0804CA70: .4byte gUnknown_2023D08 +_0804CA74: .4byte gUnknown_2022C90 +_0804CA78: + adds r6, r7, #0 +_0804CA7A: + ldr r0, _0804CA80 + mov r8, r0 + b _0804CAB2 + .align 2, 0 +_0804CA80: .4byte gUnknown_20243E8 +_0804CA84: + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0804CAA8 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804CAAC + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _0804CAAE + .align 2, 0 +_0804CAA8: .4byte gUnknown_2022C90 +_0804CAAC: + adds r6, r7, #0 +_0804CAAE: + ldr r1, _0804CB1C + mov r8, r1 +_0804CAB2: + movs r4, #0 +_0804CAB4: + movs r0, #0x64 + muls r0, r4, r0 + mov r1, r8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0804CAF6 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _0804CAF6 + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0804CAF6 + ldr r1, _0804CB20 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _0804CAF6 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _0804CAFC +_0804CAF6: + adds r4, #1 + cmp r4, #5 + ble _0804CAB4 +_0804CAFC: + cmp r4, #6 + bne _0804CB28 +_0804CB00: + ldr r3, _0804CB24 + ldr r2, [r3] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0804CB30 + .align 2, 0 +_0804CB1C: .4byte gUnknown_2024190 +_0804CB20: .4byte gUnknown_2023D12 +_0804CB24: .4byte gUnknown_2023EB8 +_0804CB28: + ldr r1, _0804CB3C + ldr r0, [r1] + adds r0, #6 + str r0, [r1] +_0804CB30: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804CB3C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804C7E0 + + thumb_func_start sub_0804CB40 +sub_0804CB40: @ 0x0804CB40 + push {r4, r5, lr} + sub sp, #4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r5, _0804CBA8 + ldrb r0, [r5] + ldr r4, _0804CBAC + ldr r1, [r4] + adds r1, r0, r1 + adds r1, #0x58 + ldr r3, _0804CBB0 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r5] + ldr r1, [r4] + adds r0, r0, r1 + adds r0, #0x5c + movs r1, #6 + strb r1, [r0] + ldr r1, [r4] + adds r1, #0x93 + ldr r3, _0804CBB4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r3, [r0] + ldrb r0, [r1] + bics r0, r3 + strb r0, [r1] + ldrb r0, [r5] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x60 + ldr r0, [r4] + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08033CF8 + ldrb r0, [r5] + bl sub_0803F440 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804CBA8: .4byte gUnknown_2023D08 +_0804CBAC: .4byte gUnknown_2024140 +_0804CBB0: .4byte gUnknown_2023D12 +_0804CBB4: .4byte gUnknown_82FACB4 + thumb_func_end sub_0804CB40 + + thumb_func_start sub_0804CBB8 +sub_0804CBB8: @ 0x0804CBB8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r7, #0 + movs r0, #0 + mov sb, r0 + ldr r6, _0804CC68 + ldr r2, [r6] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + mov r8, r1 + ldrb r1, [r2, #1] + adds r0, r1, #0 + mov ip, r6 + cmp r0, #5 + beq _0804CBEE + b _0804D094 +_0804CBEE: + ldr r0, _0804CC6C + ldr r0, [r0] + movs r1, #0x41 + ands r1, r0 + cmp r1, #1 + beq _0804CCE0 + ldr r1, _0804CC70 + strb r7, [r1] + ldr r0, _0804CC74 + ldrb r0, [r0] + cmp r7, r0 + blo _0804CC08 + b _0804D080 +_0804CC08: + ldr r7, _0804CC78 + ldr r6, _0804CC7C + adds r4, r1, #0 + ldr r2, _0804CC80 + mov r8, r2 +_0804CC12: + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r7] + ands r0, r1 + cmp r0, #0 + beq _0804CCB8 + adds r0, r2, #0 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804CC84 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + mov r2, r8 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 + b _0804CCC8 + .align 2, 0 +_0804CC68: .4byte gUnknown_2023EB8 +_0804CC6C: .4byte gUnknown_2022C90 +_0804CC70: .4byte gUnknown_2023D08 +_0804CC74: .4byte gUnknown_2023D10 +_0804CC78: .4byte gUnknown_2023F24 +_0804CC7C: .4byte gUnknown_82FACB4 +_0804CC80: .4byte gUnknown_2023EB4 +_0804CC84: + ldr r5, _0804CCB4 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804CCC8 + movs r0, #6 + bl sub_0804CB40 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804CCC8 + .align 2, 0 +_0804CCB4: .4byte gUnknown_2024020 +_0804CCB8: + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 +_0804CCC8: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0804CCDC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0804CC12 + b _0804D080 + .align 2, 0 +_0804CCDC: .4byte gUnknown_2023D10 +_0804CCE0: + ands r0, r1 + cmp r0, #0 + bne _0804CCE8 + b _0804D080 +_0804CCE8: + ldr r0, _0804CD40 + mov r8, r0 + ldr r0, [r0] + lsrs r5, r0, #0x1c + ldr r6, _0804CD44 + ldr r0, [r6] + ands r0, r5 + cmp r0, #0 + beq _0804CDA0 + ldr r4, _0804CD48 + strb r7, [r4] + movs r0, #0 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804CD50 + ldr r2, _0804CD4C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + mov r2, r8 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r4] + bl sub_0803F440 + b _0804CDA0 + .align 2, 0 +_0804CD40: .4byte gUnknown_2023F24 +_0804CD44: .4byte gUnknown_82FACB4 +_0804CD48: .4byte gUnknown_2023D08 +_0804CD4C: .4byte gUnknown_2023EB4 +_0804CD50: + ldr r6, _0804CD84 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804CD8C + ldr r0, _0804CD88 + ldr r0, [r0] + adds r0, #0x5e + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804CDA0 + .align 2, 0 +_0804CD84: .4byte gUnknown_2024020 +_0804CD88: .4byte gUnknown_2024140 +_0804CD8C: + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 + movs r0, #1 + mov sb, r0 +_0804CDA0: + ldr r6, _0804CDF8 + ldr r0, [r6, #8] + ands r0, r5 + cmp r0, #0 + beq _0804CE5E + ldr r0, [r6] + ands r0, r5 + cmp r0, #0 + bne _0804CE5E + ldr r4, _0804CDFC + movs r0, #2 + strb r0, [r4] + movs r0, #2 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804CE08 + ldr r2, _0804CE00 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0804CE04 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r4] + bl sub_0803F440 + b _0804CE5E + .align 2, 0 +_0804CDF8: .4byte gUnknown_82FACB4 +_0804CDFC: .4byte gUnknown_2023D08 +_0804CE00: .4byte gUnknown_2023EB4 +_0804CE04: .4byte gUnknown_2023F24 +_0804CE08: + ldr r6, _0804CE3C + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804CE44 + ldr r0, _0804CE40 + ldr r0, [r0] + adds r0, #0x5c + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804CE5E + .align 2, 0 +_0804CE3C: .4byte gUnknown_2024020 +_0804CE40: .4byte gUnknown_2024140 +_0804CE44: + movs r0, #1 + mov r1, sb + ands r0, r1 + cmp r0, #0 + bne _0804CE5E + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 +_0804CE5E: + ldr r6, _0804CEB0 + ldr r0, [r6, #4] + ands r0, r5 + cmp r0, #0 + beq _0804CF14 + ldr r4, _0804CEB4 + movs r0, #1 + strb r0, [r4] + movs r0, #1 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804CEC0 + ldr r2, _0804CEB8 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0804CEBC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r4] + bl sub_0803F440 + b _0804CF14 + .align 2, 0 +_0804CEB0: .4byte gUnknown_82FACB4 +_0804CEB4: .4byte gUnknown_2023D08 +_0804CEB8: .4byte gUnknown_2023EB4 +_0804CEBC: .4byte gUnknown_2023F24 +_0804CEC0: + ldr r6, _0804CEF4 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804CEFC + ldr r0, _0804CEF8 + ldr r0, [r0] + adds r0, #0x5f + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804CF14 + .align 2, 0 +_0804CEF4: .4byte gUnknown_2024020 +_0804CEF8: .4byte gUnknown_2024140 +_0804CEFC: + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 + movs r0, #2 + mov r2, sb + orrs r2, r0 + mov sb, r2 +_0804CF14: + ldr r6, _0804CF6C + ldr r0, [r6, #0xc] + ands r0, r5 + cmp r0, #0 + beq _0804CFD2 + ldr r0, [r6, #4] + ands r0, r5 + cmp r0, #0 + bne _0804CFD2 + ldr r4, _0804CF70 + movs r0, #3 + strb r0, [r4] + movs r0, #3 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804CF7C + ldr r2, _0804CF74 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0804CF78 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r4] + bl sub_0803F440 + b _0804CFD2 + .align 2, 0 +_0804CF6C: .4byte gUnknown_82FACB4 +_0804CF70: .4byte gUnknown_2023D08 +_0804CF74: .4byte gUnknown_2023EB4 +_0804CF78: .4byte gUnknown_2023F24 +_0804CF7C: + ldr r6, _0804CFB0 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804CFB8 + ldr r0, _0804CFB4 + ldr r0, [r0] + adds r0, #0x5d + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804CFD2 + .align 2, 0 +_0804CFB0: .4byte gUnknown_2024020 +_0804CFB4: .4byte gUnknown_2024140 +_0804CFB8: + movs r0, #2 + mov r1, sb + ands r1, r0 + cmp r1, #0 + bne _0804CFD2 + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 +_0804CFD2: + ldr r1, _0804D004 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D02A + adds r0, r1, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D02A + cmp r5, #0 + beq _0804D02A + ldr r0, _0804D008 + ldrb r1, [r0] + ldr r0, _0804D00C + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0804D014 + ldr r1, _0804D010 + movs r0, #2 + strb r0, [r1] + b _0804D018 + .align 2, 0 +_0804D004: .4byte gUnknown_2024020 +_0804D008: .4byte gUnknown_2023EB4 +_0804D00C: .4byte gUnknown_82FACB4 +_0804D010: .4byte gUnknown_2023D08 +_0804D014: + ldr r0, _0804D058 + strb r1, [r0] +_0804D018: + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldr r0, _0804D058 + ldrb r0, [r0] + bl sub_0803F440 +_0804D02A: + ldr r1, _0804D05C + ldrb r0, [r1, #0x14] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D080 + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D080 + cmp r5, #0 + beq _0804D080 + ldr r0, _0804D060 + ldrb r0, [r0] + ldr r1, _0804D064 + ldr r1, [r1, #4] + ands r0, r1 + cmp r0, #0 + beq _0804D068 + ldr r1, _0804D058 + movs r0, #3 + b _0804D06C + .align 2, 0 +_0804D058: .4byte gUnknown_2023D08 +_0804D05C: .4byte gUnknown_2024020 +_0804D060: .4byte gUnknown_2023EB4 +_0804D064: .4byte gUnknown_82FACB4 +_0804D068: + ldr r1, _0804D08C + movs r0, #1 +_0804D06C: + strb r0, [r1] + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldr r0, _0804D08C + ldrb r0, [r0] + bl sub_0803F440 +_0804D080: + ldr r1, _0804D090 + ldr r0, [r1] + adds r0, #6 + str r0, [r1] + b _0804D434 + .align 2, 0 +_0804D08C: .4byte gUnknown_2023D08 +_0804D090: .4byte gUnknown_2023EB8 +_0804D094: + cmp r0, #6 + beq _0804D09A + b _0804D288 +_0804D09A: + ldr r0, _0804D110 + ldr r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804D0A8 + b _0804D224 +_0804D0A8: + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _0804D0B2 + b _0804D224 +_0804D0B2: + ldr r7, _0804D114 + ldr r0, [r7] + lsrs r5, r0, #0x1c + ldr r4, _0804D118 + ldr r0, [r4, #8] + ands r0, r5 + cmp r0, #0 + beq _0804D15A + ldr r0, [r4] + ands r0, r5 + cmp r0, #0 + beq _0804D15A + ldr r6, _0804D11C + movs r0, #2 + strb r0, [r6] + ldr r0, _0804D120 + ldrb r1, [r0, #1] + movs r0, #2 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804D128 + ldr r2, _0804D124 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r6] + bl sub_0803F440 + b _0804D15A + .align 2, 0 +_0804D110: .4byte gUnknown_2022C90 +_0804D114: .4byte gUnknown_2023F24 +_0804D118: .4byte gUnknown_82FACB4 +_0804D11C: .4byte gUnknown_2023D08 +_0804D120: .4byte gUnknown_2023508 +_0804D124: .4byte gUnknown_2023EB4 +_0804D128: + ldr r4, _0804D1B8 + ldrb r0, [r6] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D15A + ldr r0, _0804D1BC + ldr r0, [r0] + adds r0, #0x5c + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] +_0804D15A: + ldr r4, _0804D1C0 + ldr r0, [r4, #0xc] + ands r0, r5 + cmp r0, #0 + beq _0804D20A + ldr r0, [r4, #4] + ands r5, r0 + cmp r5, #0 + beq _0804D20A + ldr r5, _0804D1C4 + movs r0, #3 + strb r0, [r5] + ldr r0, _0804D1C8 + ldr r2, _0804D1CC + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #3 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804D1D8 + ldr r2, _0804D1D0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0804D1D4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, #0 + bl sub_0803410C + ldrb r0, [r5] + bl sub_0803F440 + b _0804D20A + .align 2, 0 +_0804D1B8: .4byte gUnknown_2024020 +_0804D1BC: .4byte gUnknown_2024140 +_0804D1C0: .4byte gUnknown_82FACB4 +_0804D1C4: .4byte gUnknown_2023D08 +_0804D1C8: .4byte gUnknown_2023508 +_0804D1CC: .4byte 0x00000201 +_0804D1D0: .4byte gUnknown_2023EB4 +_0804D1D4: .4byte gUnknown_2023F24 +_0804D1D8: + ldr r4, _0804D218 + ldrb r0, [r5] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0804D20A + ldr r0, _0804D21C + ldr r0, [r0] + adds r0, #0x5d + ldrb r0, [r0] + bl sub_0804CB40 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] +_0804D20A: + ldr r1, _0804D220 + ldr r0, [r1] + adds r0, #6 + str r0, [r1] + mov ip, r1 + b _0804D228 + .align 2, 0 +_0804D218: .4byte gUnknown_2024020 +_0804D21C: .4byte gUnknown_2024140 +_0804D220: .4byte gUnknown_2023EB8 +_0804D224: + adds r0, r2, #6 + str r0, [r6] +_0804D228: + ldr r0, _0804D278 + ldr r0, [r0] + lsrs r5, r0, #0x1c + ldr r1, _0804D27C + movs r0, #0 + strb r0, [r1] + ldr r4, _0804D280 + ldr r2, [r4] + ands r2, r5 + ldr r6, _0804D284 + cmp r2, #0 + bne _0804D264 + adds r7, r6, #0 + ldrb r0, [r6] + cmp r2, r0 + bhs _0804D264 + adds r3, r1, #0 +_0804D24A: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldrb r2, [r3] + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r0, [r0] + ands r0, r5 + cmp r0, #0 + bne _0804D264 + ldrb r0, [r7] + cmp r2, r0 + blo _0804D24A +_0804D264: + ldrb r0, [r1] + ldrb r6, [r6] + cmp r0, r6 + beq _0804D26E + b _0804D434 +_0804D26E: + mov r1, r8 + mov r2, ip + str r1, [r2] + b _0804D434 + .align 2, 0 +_0804D278: .4byte gUnknown_2023F24 +_0804D27C: .4byte gUnknown_2023EB1 +_0804D280: .4byte gUnknown_82FACB4 +_0804D284: .4byte gUnknown_2023D10 +_0804D288: + movs r0, #0x80 + ands r0, r1 + movs r5, #1 + cmp r0, #0 + beq _0804D294 + movs r5, #0 +_0804D294: + movs r0, #0x7f + ands r0, r1 + bl sub_0803F00C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0804D2BC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0804D2C0 + ldr r0, [r6] + adds r0, #6 + str r0, [r6] + b _0804D434 + .align 2, 0 +_0804D2BC: .4byte gUnknown_2024020 +_0804D2C0: + adds r0, r7, #0 + movs r1, #6 + movs r2, #6 + bl sub_08042034 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804D310 + ldr r2, _0804D300 + strb r7, [r2] + ldr r3, _0804D304 + ldr r4, _0804D308 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + ldr r3, _0804D30C + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + lsls r1, r1, #0x1c + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + mov r0, r8 + str r0, [r6] + b _0804D434 + .align 2, 0 +_0804D300: .4byte gUnknown_2023D08 +_0804D304: .4byte gUnknown_2023EB4 +_0804D308: .4byte gUnknown_82FACB4 +_0804D30C: .4byte gUnknown_2023F24 +_0804D310: + ldr r4, _0804D3D8 + strb r7, [r4] + ldrb r0, [r4] + ldr r3, _0804D3DC + ldr r1, [r3] + adds r1, r0, r1 + adds r1, #0x58 + ldr r2, _0804D3E0 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r4] + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0x5c + movs r1, #6 + strb r1, [r0] + ldr r1, [r3] + adds r1, #0x93 + ldr r2, _0804D3E4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r2, [r0] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + ldrb r1, [r4] + movs r0, #2 + eors r0, r1 + ldr r3, [r3] + adds r0, r0, r3 + adds r0, #0x5c + ldrb r2, [r0] + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, #0x60 + adds r3, r3, r0 + str r3, [sp] + movs r0, #0 + adds r1, r5, #0 + movs r3, #0 + bl sub_08033CF8 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r6] + adds r0, #6 + str r0, [r6] + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804D390 + ldr r1, _0804D3E8 + ldrb r0, [r1, #2] + cmp r0, #0xfe + bhi _0804D390 + adds r0, #1 + strb r0, [r1, #2] +_0804D390: + ldr r0, _0804D3EC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804D3F4 + ldr r1, _0804D3D8 + movs r0, #0 + strb r0, [r1] + ldr r0, _0804D3F0 + ldrb r0, [r0] + cmp r0, #0 + beq _0804D434 + adds r4, r1, #0 +_0804D3AC: + ldrb r0, [r4] + cmp r0, r7 + beq _0804D3C2 + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 +_0804D3C2: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0804D3F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _0804D3AC + b _0804D434 + .align 2, 0 +_0804D3D8: .4byte gUnknown_2023D08 +_0804D3DC: .4byte gUnknown_2024140 +_0804D3E0: .4byte gUnknown_2023D12 +_0804D3E4: .4byte gUnknown_82FACB4 +_0804D3E8: .4byte gUnknown_3005A70 +_0804D3EC: .4byte gUnknown_2022C90 +_0804D3F0: .4byte gUnknown_2023D10 +_0804D3F4: + adds r0, r7, #0 + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r4, _0804D444 + strb r0, [r4] + ldr r0, _0804D448 + ldrb r1, [r0] + ldr r2, _0804D44C + ldrb r3, [r4] + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0804D424 + movs r0, #2 + eors r3, r0 + strb r3, [r4] +_0804D424: + movs r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_080342BC + ldrb r0, [r4] + bl sub_0803F440 +_0804D434: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D444: .4byte gUnknown_2023D08 +_0804D448: .4byte gUnknown_2023EB4 +_0804D44C: .4byte gUnknown_82FACB4 + thumb_func_end sub_0804CBB8 + + thumb_func_start sub_0804D450 +sub_0804D450: @ 0x0804D450 + push {r4, r5, r6, r7, lr} + ldr r0, _0804D47C + ldr r0, [r0] + cmp r0, #0 + beq _0804D45C + b _0804D6BA +_0804D45C: + ldr r4, _0804D480 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r5, _0804D484 + strb r0, [r5] + ldr r0, [r4] + ldrb r0, [r0, #2] + cmp r0, #1 + beq _0804D4FC + cmp r0, #1 + bgt _0804D488 + cmp r0, #0 + beq _0804D492 + b _0804D6B2 + .align 2, 0 +_0804D47C: .4byte gUnknown_2023D0C +_0804D480: .4byte gUnknown_2023EB8 +_0804D484: .4byte gUnknown_2023D08 +_0804D488: + cmp r0, #2 + beq _0804D518 + cmp r0, #3 + beq _0804D552 + b _0804D6B2 +_0804D492: + movs r6, #0 + ldr r0, _0804D4EC + ldrb r0, [r0] + cmp r6, r0 + blt _0804D49E + b _0804D6B2 +_0804D49E: + ldr r7, _0804D4F0 +_0804D4A0: + ldrb r0, [r7] + cmp r0, #0x22 + bne _0804D4DA + ldr r5, _0804D4F4 + ldr r0, [r5] + adds r0, r6, r0 + adds r0, #0x5c + ldrb r1, [r7, #1] + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x93 + ldrb r1, [r0] + ldr r2, _0804D4F8 + lsls r0, r6, #2 + adds r0, r0, r2 + ldr r4, [r0] + ands r1, r4 + cmp r1, #0 + bne _0804D4DA + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r7, #1] + bl sub_08184E1C + ldr r1, [r5] + adds r1, #0x93 + ldrb r0, [r1] + orrs r4, r0 + strb r4, [r1] +_0804D4DA: + movs r0, #0x80 + lsls r0, r0, #2 + adds r7, r7, r0 + adds r6, #1 + ldr r0, _0804D4EC + ldrb r0, [r0] + cmp r6, r0 + blt _0804D4A0 + b _0804D6B2 + .align 2, 0 +_0804D4EC: .4byte gUnknown_2023D10 +_0804D4F0: .4byte gUnknown_2023508 +_0804D4F4: .4byte gUnknown_2024140 +_0804D4F8: .4byte gUnknown_82FACB4 +_0804D4FC: + ldr r0, _0804D514 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804D50A + b _0804D6B2 +_0804D50A: + ldrb r0, [r5] + bl sub_0803B9E4 + b _0804D6B2 + .align 2, 0 +_0804D514: .4byte gUnknown_2022C90 +_0804D518: + ldr r4, _0804D62C + ldr r0, [r4] + adds r0, #0x93 + ldrb r1, [r0] + ldr r6, _0804D630 + ldrb r2, [r5] + lsls r0, r2, #2 + adds r0, r0, r6 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804D552 + ldr r0, _0804D634 + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r2, #0 + bl sub_08184E1C + ldr r2, [r4] + adds r2, #0x93 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] +_0804D552: + ldr r1, _0804D638 + ldr r6, _0804D634 + ldr r7, _0804D63C + ldrb r0, [r7] + lsls r0, r0, #9 + adds r2, r6, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldr r1, _0804D62C + mov ip, r1 + ldr r1, [r1] + adds r1, r0, r1 + adds r1, #0x5c + lsls r0, r0, #9 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0804D640 + ldr r1, [r0] + movs r0, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _0804D644 + ldrb r0, [r7] + mov r3, ip + ldr r2, [r3] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + adds r1, #0x60 + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + ldr r2, [r3] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + adds r1, #0x60 + lsls r0, r0, #9 + adds r5, r6, #2 + adds r0, 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] + mov r0, ip + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, r0, r2 + adds r0, #0x61 + lsls r1, r1, #9 + adds r6, #3 + adds r1, r1, r6 + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r7] + movs r4, #2 + eors r0, r4 + mov r1, ip + ldr r2, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, 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, ip + ldr r2, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + adds r1, #0x60 + ldrb r0, [r7] + lsls r0, r0, #9 + adds r0, r0, r5 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, r3, #4 + ldrb r0, [r1] + orrs r3, r0 + strb r3, [r1] + ldrb r0, [r7] + eors r4, r0 + mov r2, ip + ldr r0, [r2] + lsls r1, r4, #1 + adds r1, r1, r4 + adds r1, r1, r0 + adds r1, #0x62 + ldrb r0, [r7] + lsls r0, r0, #9 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + b _0804D666 + .align 2, 0 +_0804D62C: .4byte gUnknown_2024140 +_0804D630: .4byte gUnknown_82FACB4 +_0804D634: .4byte gUnknown_2023508 +_0804D638: .4byte gUnknown_2023FD6 +_0804D63C: .4byte gUnknown_2023D08 +_0804D640: .4byte gUnknown_2022C90 +_0804D644: + movs r0, #0x80 + lsls r0, r0, #0xf + ands r1, r0 + cmp r1, #0 + beq _0804D660 + ldrb r0, [r7] + mov r3, ip + ldr r1, [r3] + adds r1, r0, r1 + adds r1, #0x5c + ldrb r1, [r1] + bl sub_08056DEC + b _0804D666 +_0804D660: + ldrb r0, [r7] + bl sub_0803B9E4 +_0804D666: + ldr r1, _0804D6C0 + movs r5, #0xfd + strb r5, [r1] + movs r0, #6 + strb r0, [r1, #1] + ldr r4, _0804D6C4 + ldr r3, _0804D6C8 + ldrb r0, [r3] + movs r2, #0x58 + muls r0, r2, r0 + adds r0, r0, r4 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r3] + muls r0, r2, r0 + adds r0, r0, r4 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r2, _0804D6CC + strb r5, [r2] + movs r0, #7 + strb r0, [r2, #1] + ldr r3, _0804D6D0 + ldrb r0, [r3] + strb r0, [r2, #2] + ldr r1, _0804D6D4 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2, #3] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r2, #4] +_0804D6B2: + ldr r1, _0804D6D8 + ldr r0, [r1] + adds r0, #3 + str r0, [r1] +_0804D6BA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D6C0: .4byte gUnknown_2022C0C +_0804D6C4: .4byte gUnknown_2023D28 +_0804D6C8: .4byte gUnknown_2023EAF +_0804D6CC: .4byte gUnknown_2022C1C +_0804D6D0: .4byte gUnknown_2023D08 +_0804D6D4: .4byte gUnknown_2023508 +_0804D6D8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804D450 + + thumb_func_start sub_0804D6DC +sub_0804D6DC: @ 0x0804D6DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _0804D814 + mov sb, r0 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804D818 + strb r0, [r4] + ldrb r0, [r4] + bl sub_0803F6B0 + ldr r1, _0804D81C + mov r8, r1 + ldr r1, _0804D820 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x1c + mov r2, r8 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r2, _0804D824 + ldrb r0, [r4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r4] + bl sub_080A62F8 + ldr r5, _0804D828 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r1, [r0] + movs r7, #0x80 + lsls r7, r7, #2 + mov sl, r7 + mov r0, sl + ands r0, r1 + cmp r0, #0 + beq _0804D74C + b _0804D860 +_0804D74C: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0804D764 + b _0804D860 +_0804D764: + ldr r7, _0804D82C + ldrb r2, [r4] + movs r6, #0x58 + adds r0, r2, #0 + muls r0, r6, r0 + adds r1, r0, r7 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #2 + beq _0804D860 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + beq _0804D860 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1a + beq _0804D860 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r2, [r0] + mov r1, sl + orrs r1, r2 + strh r1, [r0] + ldrb r0, [r4] + adds r2, r0, #0 + muls r2, r6, r2 + adds r0, r7, #0 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _0804D830 + ands r0, r1 + str r0, [r2] + mov r1, r8 + ldr r0, [r1] + movs r2, #0x41 + rsbs r2, r2, #0 + ands r0, r2 + str r0, [r1] + ldrb r0, [r4] + bl sub_080A62F8 + ldr r2, _0804D834 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #0xa] + movs r1, #5 + subs r1, r1, r0 + lsls r1, r1, #0x19 + lsrs r1, r1, #0x18 + ldr r5, _0804D838 + ldrb r0, [r4] + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2c] + bl __divsi3 + str r0, [r5] + cmp r0, #0 + bne _0804D7F8 + movs r0, #1 + str r0, [r5] +_0804D7F8: + ldr r0, _0804D83C + ldrb r1, [r4] + strb r1, [r0, #0x17] + bl sub_0803F73C + mov r7, sb + ldr r0, [r7] + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0804D844 + ldr r0, _0804D840 + str r0, [r7] + b _0804D9BE + .align 2, 0 +_0804D814: .4byte gUnknown_2023EB8 +_0804D818: .4byte gUnknown_2023D08 +_0804D81C: .4byte gUnknown_2023F24 +_0804D820: .4byte gUnknown_82FACB4 +_0804D824: .4byte gUnknown_2024020 +_0804D828: .4byte gUnknown_2023F32 +_0804D82C: .4byte gUnknown_2023D28 +_0804D830: .4byte 0xFDFFFFFF +_0804D834: .4byte gUnknown_2023F38 +_0804D838: .4byte gUnknown_2023E94 +_0804D83C: .4byte gUnknown_2024118 +_0804D840: .4byte gUnknown_8289418 +_0804D844: + cmp r0, #1 + bne _0804D854 + ldr r0, _0804D850 + mov r1, sb + str r0, [r1] + b _0804D9BE + .align 2, 0 +_0804D850: .4byte gUnknown_82893E1 +_0804D854: + ldr r0, _0804D85C + mov r2, sb + str r0, [r2] + b _0804D9BE + .align 2, 0 +_0804D85C: .4byte gUnknown_828944F +_0804D860: + ldr r2, _0804D95C + ldr r1, _0804D960 + ldrb r3, [r1] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + adds r5, r1, #0 + ldr r4, _0804D964 + cmp r0, #0x36 + bne _0804D88E + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r4 + ldrb r1, [r2, #0x18] + lsls r0, r1, #0x1e + cmp r0, #0 + blt _0804D88E + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #0x18] +_0804D88E: + ldrb r0, [r5] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #0x18] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x18] + ldrb r1, [r5] + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804D8B8 + b _0804D9BE +_0804D8B8: + ldrb r1, [r5] + movs r0, #0 + movs r2, #0 + bl sub_0804411C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804D9BE + ldrb r0, [r5] + bl sub_080A62F8 + ldr r1, _0804D968 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r1, _0804D96C + ands r1, r2 + strh r1, [r0] + movs r4, #0 + ldr r0, _0804D970 + ldrb r7, [r0] + cmp r4, r7 + bge _0804D908 + ldr r6, _0804D974 + adds r1, r5, #0 + ldr r5, _0804D978 + movs r3, #0xc + adds r2, r0, #0 +_0804D8F2: + adds r0, r4, r6 + ldrb r0, [r0] + ldrb r7, [r1] + cmp r0, r7 + bne _0804D900 + adds r0, r4, r5 + strb r3, [r0] +_0804D900: + adds r4, #1 + ldrb r0, [r2] + cmp r4, r0 + blt _0804D8F2 +_0804D908: + movs r4, #0 + ldr r0, _0804D970 + ldrb r0, [r0] + cmp r4, r0 + bge _0804D93C + ldr r6, _0804D97C + ldr r5, _0804D95C +_0804D916: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, #0xa8 + ldr r1, [r6] + adds r1, r1, r0 + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r0, [r0, #0x28] + strh r0, [r1] + adds r4, #1 + ldr r0, _0804D970 + ldrb r0, [r0] + cmp r4, r0 + blt _0804D916 +_0804D93C: + ldr r0, _0804D980 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #5 + bne _0804D9B8 + ldr r0, _0804D984 + ldr r0, [r0] + lsrs r4, r0, #0x1c + ldr r1, _0804D988 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r2, _0804D98C + b _0804D99E + .align 2, 0 +_0804D95C: .4byte gUnknown_2023D28 +_0804D960: .4byte gUnknown_2023D08 +_0804D964: .4byte gUnknown_2023F60 +_0804D968: .4byte gUnknown_2023F32 +_0804D96C: .4byte 0x0000FDFF +_0804D970: .4byte gUnknown_2023D10 +_0804D974: .4byte gUnknown_2023D22 +_0804D978: .4byte gUnknown_2023D1E +_0804D97C: .4byte gUnknown_2024140 +_0804D980: .4byte gUnknown_2023EB8 +_0804D984: .4byte gUnknown_2023F24 +_0804D988: .4byte gUnknown_2023EB1 +_0804D98C: .4byte gUnknown_82FACB4 +_0804D990: + ldr r0, _0804D9D0 + ldrb r3, [r1] + ldrb r0, [r0] + cmp r3, r0 + bhs _0804D9B8 + adds r0, r3, #1 + strb r0, [r1] +_0804D99E: + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r3, [r0] + adds r0, r4, #0 + ands r0, r3 + cmp r0, #0 + beq _0804D990 + ldr r0, _0804D9D4 + ldrb r0, [r0] + ands r0, r3 + cmp r0, #0 + bne _0804D990 +_0804D9B8: + ldr r0, [r5] + adds r0, #2 + str r0, [r5] +_0804D9BE: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804D9D0: .4byte gUnknown_2023D10 +_0804D9D4: .4byte gUnknown_2023EB4 + thumb_func_end sub_0804D6DC + + thumb_func_start sub_0804D9D8 +sub_0804D9D8: @ 0x0804D9D8 + push {r4, r5, lr} + ldr r5, _0804DA00 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_080A631C + ldr r4, _0804DA04 + strb r0, [r4] + movs r0, #0 + bl sub_0803389C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DA00: .4byte gUnknown_2023EB8 +_0804DA04: .4byte gUnknown_2023D08 + thumb_func_end sub_0804D9D8 + + thumb_func_start sub_0804DA08 +sub_0804DA08: @ 0x0804DA08 + push {r4, r5, lr} + ldr r5, _0804DA38 + ldr r0, _0804DA3C + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _0804DA40 + ldr r0, [r4] + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0 + bl sub_0803412C + ldrb r0, [r5] + bl sub_0803F440 + ldr r0, [r4] + adds r0, #3 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DA38: .4byte gUnknown_2023D08 +_0804DA3C: .4byte gUnknown_2023EAF +_0804DA40: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804DA08 + + thumb_func_start sub_0804DA44 +sub_0804DA44: @ 0x0804DA44 + push {r4, r5, lr} + ldr r5, _0804DA74 + ldr r0, _0804DA78 + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _0804DA7C + ldr r0, [r4] + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0 + movs r2, #0 + bl sub_08034158 + ldrb r0, [r5] + bl sub_0803F440 + ldr r0, [r4] + adds r0, #3 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DA74: .4byte gUnknown_2023D08 +_0804DA78: .4byte gUnknown_2023EAF +_0804DA7C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804DA44 + + thumb_func_start sub_0804DA80 +sub_0804DA80: @ 0x0804DA80 + push {r4, r5, lr} + ldr r5, _0804DAA8 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804DAAC + strb r0, [r4] + movs r0, #0 + bl sub_08034184 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DAA8: .4byte gUnknown_2023EB8 +_0804DAAC: .4byte gUnknown_2023D08 + thumb_func_end sub_0804DA80 + + thumb_func_start sub_0804DAB0 +sub_0804DAB0: @ 0x0804DAB0 + push {r4, lr} + movs r0, #0 + bl sub_080A631C + ldr r4, _0804DADC + strb r0, [r4] + ldr r0, _0804DAE0 + ldrb r1, [r0] + movs r0, #0 + bl sub_08034320 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0804DAE4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804DADC: .4byte gUnknown_2023D08 +_0804DAE0: .4byte gUnknown_2023FDE +_0804DAE4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804DAB0 + + thumb_func_start sub_0804DAE8 +sub_0804DAE8: @ 0x0804DAE8 + push {r4, r5, lr} + ldr r5, _0804DB14 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804DB18 + strb r0, [r4] + movs r0, #0 + movs r1, #1 + bl sub_0803385C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804DB14: .4byte gUnknown_2023EB8 +_0804DB18: .4byte gUnknown_2023D08 + thumb_func_end sub_0804DAE8 + + thumb_func_start sub_0804DB1C +sub_0804DB1C: @ 0x0804DB1C + push {r4, r5, r6, r7, lr} + ldr r0, _0804DB90 + ldr r2, [r0] + ldrb r6, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r6, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r6, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r6, r0 + ldrb r4, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r4, r0 + ldr r0, _0804DB94 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804DB98 + adds r0, r0, r1 + ldrb r1, [r2, #9] + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0804DB9C + cmp r5, r0 + bne _0804DB86 + adds r7, r5, #0 +_0804DB6A: + ldr r0, _0804DB94 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804DB98 + adds r0, r0, r1 + movs r1, #0 + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r7 + beq _0804DB6A +_0804DB86: + cmp r5, #0 + bne _0804DBA0 + ldr r0, _0804DB90 + str r4, [r0] + b _0804DC48 + .align 2, 0 +_0804DB90: .4byte gUnknown_2023EB8 +_0804DB94: .4byte gUnknown_2024140 +_0804DB98: .4byte gUnknown_2024190 +_0804DB9C: .4byte 0x0000FFFE +_0804DBA0: + ldr r0, _0804DBB0 + cmp r5, r0 + bne _0804DBB8 + ldr r1, _0804DBB4 + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] + b _0804DC48 + .align 2, 0 +_0804DBB0: .4byte 0x0000FFFF +_0804DBB4: .4byte gUnknown_2023EB8 +_0804DBB8: + movs r0, #0 + bl sub_080A631C + ldr r1, _0804DC50 + strb r0, [r1] + ldr r2, _0804DC54 + ldrb r3, [r1] + lsls r0, r3, #1 + adds r0, r0, r2 + ldr r1, _0804DC58 + ldr r1, [r1] + ldrh r0, [r0] + ldrb r1, [r1, #0x10] + cmp r0, r1 + bne _0804DBF8 + ldr r4, _0804DC5C + movs r0, #0x58 + adds r2, r3, #0 + muls r2, r0, r2 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0804DBF8 + adds r0, r2, r4 + adds r1, r5, #0 + bl sub_08068CF0 +_0804DBF8: + ldr r0, _0804DC60 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804DC44 + movs r0, #2 + bl sub_080A631C + ldr r1, _0804DC50 + strb r0, [r1] + ldr r2, _0804DC54 + ldrb r3, [r1] + lsls r0, r3, #1 + adds r0, r0, r2 + ldr r1, _0804DC58 + ldr r1, [r1] + ldrh r0, [r0] + ldrb r1, [r1, #0x10] + cmp r0, r1 + bne _0804DC44 + ldr r4, _0804DC5C + movs r0, #0x58 + adds r2, r3, #0 + muls r2, r0, r2 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0804DC44 + adds r0, r2, r4 + adds r1, r5, #0 + bl sub_08068CF0 +_0804DC44: + ldr r0, _0804DC64 + str r6, [r0] +_0804DC48: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804DC50: .4byte gUnknown_2023D08 +_0804DC54: .4byte gUnknown_2023D12 +_0804DC58: .4byte gUnknown_2024140 +_0804DC5C: .4byte gUnknown_2023D28 +_0804DC60: .4byte gUnknown_2022C90 +_0804DC64: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804DB1C + + thumb_func_start sub_0804DC68 +sub_0804DC68: @ 0x0804DC68 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r0, _0804DC8C + movs r1, #0 + strb r1, [r0] + ldr r0, _0804DC90 + ldrb r1, [r0, #0x1f] + adds r2, r0, #0 + cmp r1, #6 + bls _0804DC82 + b _0804DFE8 +_0804DC82: + lsls r0, r1, #2 + ldr r1, _0804DC94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804DC8C: .4byte gUnknown_2023D08 +_0804DC90: .4byte gUnknown_2024118 +_0804DC94: .4byte _0804DC98 +_0804DC98: @ jump table + .4byte _0804DCB4 @ case 0 + .4byte _0804DCEC @ case 1 + .4byte _0804DD92 @ case 2 + .4byte _0804DDE8 @ case 3 + .4byte _0804DE14 @ case 4 + .4byte _0804DFBC @ case 5 + .4byte _0804DFDC @ case 6 +_0804DCB4: + movs r4, #0 + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _0804DCE0 + movs r1, #0xc + bl sub_0814FA04 + ldr r1, _0804DCE4 + ldrb r0, [r1, #0x1f] + adds r0, #1 + strb r0, [r1, #0x1f] + ldr r0, _0804DCE8 + strb r4, [r0, #1] + movs r0, #0 + bl sub_08056784 + b _0804DFE8 + .align 2, 0 +_0804DCE0: .4byte gUnknown_85ABBC9 +_0804DCE4: .4byte gUnknown_2024118 +_0804DCE8: .4byte gUnknown_2023FD6 +_0804DCEC: + ldr r0, _0804DD78 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804DD14 + ldr r4, _0804DD7C + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0804DD14 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #0 + strb r0, [r4, #1] + bl sub_08056784 +_0804DD14: + ldr r0, _0804DD78 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804DD3C + ldr r4, _0804DD7C + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0804DD3C + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 +_0804DD3C: + ldr r0, _0804DD78 + ldrh r1, [r0, #0x2e] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0804DD80 + movs r0, #5 + bl sub_080A306C + ldr r0, _0804DD7C + ldrb r4, [r0, #1] + cmp r4, #0 + bne _0804DE3A + str r5, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0804DDC2 + .align 2, 0 +_0804DD78: .4byte gUnknown_3002360 +_0804DD7C: .4byte gUnknown_2023FD6 +_0804DD80: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0804DD8A + b _0804DFE8 +_0804DD8A: + movs r0, #5 + bl sub_080A306C + b _0804DE3A +_0804DD92: + ldr r0, _0804DDCC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804DDA0 + b _0804DFE8 +_0804DDA0: + bl sub_080034D4 + ldr r0, _0804DDD0 + ldr r1, _0804DDD4 + ldr r1, [r1] + ldrb r1, [r1, #0x10] + ldr r2, _0804DDD8 + ldrb r2, [r2] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _0804DDDC + ldr r4, _0804DDE0 + ldrh r4, [r4] + str r4, [sp] + bl sub_081BF3CC +_0804DDC2: + ldr r1, _0804DDE4 + ldrb r0, [r1, #0x1f] + adds r0, #1 + strb r0, [r1, #0x1f] + b _0804DFE8 + .align 2, 0 +_0804DDCC: .4byte gUnknown_2037C74 +_0804DDD0: .4byte gUnknown_2024190 +_0804DDD4: .4byte gUnknown_2024140 +_0804DDD8: .4byte gUnknown_202418D +_0804DDDC: .4byte sub_080A8BC0 +_0804DDE0: .4byte gUnknown_2024186 +_0804DDE4: .4byte gUnknown_2024118 +_0804DDE8: + ldr r0, _0804DE08 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804DDF6 + b _0804DFE8 +_0804DDF6: + ldr r0, _0804DE0C + ldr r1, [r0, #4] + ldr r0, _0804DE10 + cmp r1, r0 + beq _0804DE02 + b _0804DFE8 +_0804DE02: + ldrb r0, [r2, #0x1f] + adds r0, #1 + b _0804DFE6 + .align 2, 0 +_0804DE08: .4byte gUnknown_2037C74 +_0804DE0C: .4byte gUnknown_3002360 +_0804DE10: .4byte sub_080380FC +_0804DE14: + ldr r0, _0804DE44 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804DE22 + b _0804DFE8 +_0804DE22: + ldr r0, _0804DE48 + ldr r1, [r0, #4] + ldr r0, _0804DE4C + cmp r1, r0 + beq _0804DE2E + b _0804DFE8 +_0804DE2E: + bl sub_081C14C8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bne _0804DE54 +_0804DE3A: + ldr r1, _0804DE50 + movs r0, #5 + strb r0, [r1, #0x1f] + b _0804DFE8 + .align 2, 0 +_0804DE44: .4byte gUnknown_2037C74 +_0804DE48: .4byte gUnknown_3002360 +_0804DE4C: .4byte sub_080380FC +_0804DE50: .4byte gUnknown_2024118 +_0804DE54: + ldr r6, _0804DE90 + ldr r0, [r6] + ldrb r0, [r0, #0x10] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r7, _0804DE94 + adds r0, r0, r7 + adds r1, r5, #0 + adds r1, #0xd + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0806E290 + cmp r0, #0 + beq _0804DEA4 + ldr r0, _0804DE98 + ldr r1, _0804DE9C + ldrb r1, [r1] + bl sub_0803F5A4 + ldr r1, _0804DEA0 + movs r0, #6 + strb r0, [r1, #0x1f] + b _0804DFE8 + .align 2, 0 +_0804DE90: .4byte gUnknown_2024140 +_0804DE94: .4byte gUnknown_2024190 +_0804DE98: .4byte 0x0000013F +_0804DE9C: .4byte gUnknown_2023D08 +_0804DEA0: .4byte gUnknown_2024118 +_0804DEA4: + ldr r3, _0804DF98 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + ldr r1, _0804DF9C + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + strb r4, [r1, #2] + lsrs r0, r4, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r0, [r6] + ldrb r0, [r0, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + adds r1, r5, #0 + bl sub_0806B46C + ldr r0, [r6] + ldrb r0, [r0, #0x10] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + ldr r7, _0804DFA0 + ldrh r1, [r7] + adds r2, r5, #0 + bl sub_08068D34 + ldr r0, _0804DFA4 + ldr r1, [r6] + ldrh r0, [r0] + ldrb r1, [r1, #0x10] + cmp r0, r1 + bne _0804DF3A + ldr r4, _0804DFA8 + ldr r0, [r4, #0x50] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0804DF3A + ldr r0, _0804DFAC + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0804DFB0 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804DF3A + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806B4A8 + ldrh r1, [r7] + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08068D74 +_0804DF3A: + ldr r0, _0804DFB4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804DFE8 + ldr r2, _0804DFA4 + ldr r0, _0804DFB8 + ldr r1, [r0] + ldrh r0, [r2, #4] + ldrb r1, [r1, #0x10] + cmp r0, r1 + bne _0804DFE8 + ldr r4, _0804DFA8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0804DFE8 + ldr r0, _0804DFAC + adds r0, #0x50 + ldrb r1, [r0] + lsrs r1, r1, #4 + ldr r2, _0804DFB0 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0804DFE8 + adds r4, #0xb0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806B4A8 + ldr r0, _0804DFA0 + ldrh r1, [r0] + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08068D74 + b _0804DFE8 + .align 2, 0 +_0804DF98: .4byte gUnknown_2023EB8 +_0804DF9C: .4byte gUnknown_2022C1C +_0804DFA0: .4byte gUnknown_2024186 +_0804DFA4: .4byte gUnknown_2023D12 +_0804DFA8: .4byte gUnknown_2023D28 +_0804DFAC: .4byte gUnknown_2023F60 +_0804DFB0: .4byte gUnknown_82FACB4 +_0804DFB4: .4byte gUnknown_2022C90 +_0804DFB8: .4byte gUnknown_2024140 +_0804DFBC: + movs r0, #1 + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r1, _0804DFD8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0804DFE8 + .align 2, 0 +_0804DFD8: .4byte gUnknown_2023EB8 +_0804DFDC: + ldr r0, _0804DFF4 + ldr r0, [r0] + cmp r0, #0 + bne _0804DFE8 + movs r0, #2 +_0804DFE6: + strb r0, [r2, #0x1f] +_0804DFE8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804DFF4: .4byte gUnknown_2023D0C + thumb_func_end sub_0804DC68 + + thumb_func_start sub_0804DFF8 +sub_0804DFF8: @ 0x0804DFF8 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _0804E00C + ldrb r4, [r5, #0x1f] + cmp r4, #0 + beq _0804E010 + cmp r4, #1 + beq _0804E040 + b _0804E12A + .align 2, 0 +_0804E00C: .4byte gUnknown_2024118 +_0804E010: + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _0804E038 + movs r1, #0xc + bl sub_0814FA04 + ldrb r0, [r5, #0x1f] + adds r0, #1 + strb r0, [r5, #0x1f] + ldr r0, _0804E03C + strb r4, [r0, #1] + movs r0, #0 + bl sub_08056784 + b _0804E12A + .align 2, 0 +_0804E038: .4byte gUnknown_85ABBC9 +_0804E03C: .4byte gUnknown_2023FD6 +_0804E040: + ldr r0, _0804E0C8 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804E068 + ldr r4, _0804E0CC + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0804E068 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #0 + strb r0, [r4, #1] + bl sub_08056784 +_0804E068: + ldr r0, _0804E0C8 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804E090 + ldr r4, _0804E0CC + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0804E090 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 +_0804E090: + ldr r0, _0804E0C8 + ldrh r1, [r0, #0x2e] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0804E0F4 + movs r0, #5 + bl sub_080A306C + ldr r0, _0804E0CC + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0804E0D4 + ldr r3, _0804E0D0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0804E0DC + .align 2, 0 +_0804E0C8: .4byte gUnknown_3002360 +_0804E0CC: .4byte gUnknown_2023FD6 +_0804E0D0: .4byte gUnknown_2023EB8 +_0804E0D4: + ldr r1, _0804E0F0 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0804E0DC: + movs r0, #1 + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + b _0804E12A + .align 2, 0 +_0804E0F0: .4byte gUnknown_2023EB8 +_0804E0F4: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804E12A + movs r0, #5 + bl sub_080A306C + ldr r3, _0804E134 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C +_0804E12A: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E134: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804DFF8 + + thumb_func_start sub_0804E138 +sub_0804E138: @ 0x0804E138 + push {r4, lr} + ldr r4, _0804E1A4 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r2, _0804E1A8 + strb r0, [r2] + ldr r0, _0804E1AC + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0804E1BC + ldr r0, _0804E1B0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804E18A + ldr r1, _0804E1B4 + ldrb r2, [r2] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0804E18A + ldr r0, _0804E1B8 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0804E1BC +_0804E18A: + movs r0, #0 + bl sub_080340EC + ldr r0, _0804E1A8 + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _0804E1A4 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + b _0804E1C2 + .align 2, 0 +_0804E1A4: .4byte gUnknown_2023EB8 +_0804E1A8: .4byte gUnknown_2023D08 +_0804E1AC: .4byte gUnknown_2023F20 +_0804E1B0: .4byte gUnknown_2023F24 +_0804E1B4: .4byte gUnknown_2023D28 +_0804E1B8: .4byte gUnknown_2023F60 +_0804E1BC: + ldr r0, [r4] + adds r0, #2 + str r0, [r4] +_0804E1C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0804E138 + + thumb_func_start sub_0804E1C8 +sub_0804E1C8: @ 0x0804E1C8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r6, #0 + movs r5, #0 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + bne _0804E204 + ldr r0, _0804E1FC + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x94 + ldrb r2, [r0] + ldr r0, _0804E200 + ldr r0, [r0] + adds r0, #0x4a + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + muls r0, r2, r0 + b _0804E2E4 + .align 2, 0 +_0804E1FC: .4byte gUnknown_202414C +_0804E200: .4byte gUnknown_2024140 +_0804E204: + ldr r0, _0804E220 + lsls r1, r1, #5 + adds r3, r1, r0 + ldrb r2, [r3] + mov ip, r0 + adds r4, r1, #0 + cmp r2, #1 + beq _0804E252 + cmp r2, #1 + bgt _0804E224 + cmp r2, #0 + beq _0804E22E + b _0804E264 + .align 2, 0 +_0804E220: .4byte gUnknown_82E383C +_0804E224: + cmp r2, #2 + beq _0804E240 + cmp r2, #3 + beq _0804E252 + b _0804E264 +_0804E22E: + mov r0, ip + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, [r0] + ldrb r0, [r3, #0x18] + lsls r0, r0, #3 + adds r0, r0, r1 + subs r0, #8 + b _0804E262 +_0804E240: + mov r0, ip + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, [r0] + ldrb r0, [r3, #0x18] + lsls r0, r0, #3 + adds r0, r0, r1 + subs r0, #8 + b _0804E262 +_0804E252: + mov r0, ip + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, [r0] + ldrb r0, [r3, #0x18] + lsls r0, r0, #4 + adds r0, r0, r1 + subs r0, #0x10 +_0804E262: + ldrb r5, [r0, #2] +_0804E264: + ldr r1, _0804E2C4 + lsls r0, r6, #2 + adds r3, r0, r1 + ldrb r2, [r3] + ldr r7, _0804E2C8 + mov sb, r1 + ldr r0, _0804E2CC + mov r8, r0 + cmp r2, #0xff + beq _0804E296 + mov r1, ip + adds r0, r4, r1 + ldrb r1, [r0, #1] + cmp r2, r1 + beq _0804E296 + adds r1, r0, #0 + adds r0, r3, #0 +_0804E286: + adds r0, #4 + adds r6, #1 + ldrb r2, [r0] + cmp r2, #0xff + beq _0804E296 + ldrb r3, [r1, #1] + cmp r2, r3 + bne _0804E286 +_0804E296: + mov r0, r8 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0804E2D0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0804E2D0 + ldr r0, [r7] + adds r0, #0x4a + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r5, #0 + muls r1, r0, r1 + lsls r0, r6, #2 + add r0, sb + ldrb r0, [r0, #1] + lsls r0, r0, #1 + b _0804E2E2 + .align 2, 0 +_0804E2C4: .4byte gUnknown_82EBCE4 +_0804E2C8: .4byte gUnknown_2024140 +_0804E2CC: .4byte gUnknown_2022C90 +_0804E2D0: + ldr r0, [r7] + adds r0, #0x4a + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r5, #0 + muls r1, r0, r1 + lsls r0, r6, #2 + add r0, sb + ldrb r0, [r0, #1] +_0804E2E2: + muls r0, r1, r0 +_0804E2E4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0804E1C8 + + thumb_func_start sub_0804E2F0 +sub_0804E2F0: @ 0x0804E2F0 + push {r4, lr} + ldr r0, _0804E364 + ldrh r0, [r0] + bl sub_0804E1C8 + adds r4, r0, #0 + ldr r0, _0804E368 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0804E314 + ldr r0, _0804E36C + ldrh r0, [r0] + bl sub_0804E1C8 + adds r4, r4, r0 +_0804E314: + ldr r0, _0804E370 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_080E4948 + ldr r1, _0804E374 + movs r0, #0xfd + strb r0, [r1] + movs r0, #1 + strb r0, [r1, #1] + movs r0, #4 + strb r0, [r1, #2] + movs r0, #5 + strb r0, [r1, #3] + strb r4, [r1, #4] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r4 + lsrs r0, r0, #8 + strb r0, [r1, #5] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r4 + lsrs r0, r0, #0x10 + strb r0, [r1, #6] + lsrs r0, r4, #0x18 + strb r0, [r1, #7] + movs r0, #0xff + strb r0, [r1, #8] + ldr r1, _0804E378 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E364: .4byte gUnknown_203886A +_0804E368: .4byte gUnknown_2022C90 +_0804E36C: .4byte gUnknown_203886C +_0804E370: .4byte gUnknown_3005AEC +_0804E374: .4byte gUnknown_2022C0C +_0804E378: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E2F0 + + thumb_func_start sub_0804E37C +sub_0804E37C: @ 0x0804E37C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _0804E3A0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r6, _0804E3A4 + strb r0, [r6] + ldr r5, _0804E3A8 + ldrb r0, [r5] + mov r8, r4 + cmp r0, #0 + beq _0804E3AC + cmp r0, #1 + beq _0804E3C4 + b _0804E418 + .align 2, 0 +_0804E3A0: .4byte gUnknown_2023EB8 +_0804E3A4: .4byte gUnknown_2023D08 +_0804E3A8: .4byte gUnknown_2023FD6 +_0804E3AC: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_0803374C + ldrb r0, [r6] + bl sub_0803F440 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0804E418 +_0804E3C4: + ldr r0, _0804E424 + ldr r0, [r0] + cmp r0, #0 + bne _0804E418 + ldrb r0, [r6] + lsls r0, r0, #9 + ldr r1, _0804E428 + adds r0, r0, r1 + mov ip, r0 + movs r2, #0 + adds r4, r6, #0 + movs r5, #0x58 + ldr r6, _0804E42C + adds r7, r6, #0 + subs r7, #0x18 + mov r3, ip + adds r3, #0xc +_0804E3E6: + lsls r1, r2, #1 + ldrb r0, [r4] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r7 + ldrh r0, [r3] + strh r0, [r1] + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r2, r1 + adds r1, r1, r6 + mov r0, ip + adds r0, #0x24 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r3, #2 + adds r2, #1 + cmp r2, #3 + ble _0804E3E6 + mov r1, r8 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_0804E418: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804E424: .4byte gUnknown_2023D0C +_0804E428: .4byte gUnknown_202350C +_0804E42C: .4byte gUnknown_2023D4C + thumb_func_end sub_0804E37C + + thumb_func_start sub_0804E430 +sub_0804E430: @ 0x0804E430 + push {lr} + ldr r0, _0804E458 + ldr r2, _0804E45C + ldrb r3, [r2] + strb r3, [r0] + ldr r1, _0804E460 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + ldr r2, _0804E464 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #5 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _0804E46C + ldr r0, _0804E468 + ands r1, r0 + b _0804E46E + .align 2, 0 +_0804E458: .4byte gUnknown_2023D08 +_0804E45C: .4byte gUnknown_2023EAF +_0804E460: .4byte gUnknown_2023EB0 +_0804E464: .4byte gUnknown_2023F24 +_0804E468: .4byte 0xFFFFEFFF +_0804E46C: + orrs r1, r3 +_0804E46E: + str r1, [r2] + ldr r1, _0804E47C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804E47C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E430 + + thumb_func_start sub_0804E480 +sub_0804E480: @ 0x0804E480 + push {lr} + ldr r0, _0804E4A8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804E49A + ldr r0, _0804E4AC + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0808414C +_0804E49A: + ldr r1, _0804E4AC + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804E4A8: .4byte gUnknown_2023EAF +_0804E4AC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E480 + + thumb_func_start sub_0804E4B0 +sub_0804E4B0: @ 0x0804E4B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x30 + ldr r0, _0804E514 + ldr r0, [r0] + cmp r0, #0 + bne _0804E564 + ldr r0, _0804E518 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _0804E51C + strb r0, [r1] + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _0804E520 + mov r8, r1 + cmp r0, #0 + bne _0804E4E2 + ldr r0, _0804E524 + mov r8, r0 +_0804E4E2: + movs r7, #0 + add r6, sp, #4 + mov r5, sp +_0804E4E8: + movs r0, #0x64 + muls r0, r7, r0 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _0804E50C + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _0804E52C +_0804E50C: + ldr r0, _0804E528 + strh r0, [r5] + movs r0, #0 + b _0804E53E + .align 2, 0 +_0804E514: .4byte gUnknown_2023D0C +_0804E518: .4byte gUnknown_2023EB8 +_0804E51C: .4byte gUnknown_2023D08 +_0804E520: .4byte gUnknown_20243E8 +_0804E524: .4byte gUnknown_2024190 +_0804E528: .4byte 0x0000FFFF +_0804E52C: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 +_0804E53E: + str r0, [r6] + adds r6, #8 + adds r5, #8 + adds r7, #1 + cmp r7, #5 + ble _0804E4E8 + movs r0, #0 + mov r1, sp + movs r2, #1 + bl sub_080341E4 + ldr r0, _0804E570 + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _0804E574 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_0804E564: + add sp, #0x30 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804E570: .4byte gUnknown_2023D08 +_0804E574: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E4B0 + + thumb_func_start sub_0804E578 +sub_0804E578: @ 0x0804E578 + push {r4, r5, lr} + ldr r5, _0804E5A0 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804E5A4 + strb r0, [r4] + movs r0, #0 + bl sub_0803422C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E5A0: .4byte gUnknown_2023EB8 +_0804E5A4: .4byte gUnknown_2023D08 + thumb_func_end sub_0804E578 + + thumb_func_start sub_0804E5A8 +sub_0804E5A8: @ 0x0804E5A8 + push {r4, lr} + ldr r0, _0804E5C0 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #0 + beq _0804E5CC + ldr r0, _0804E5C4 + ldr r1, _0804E5C8 + ldrh r1, [r1] + strh r1, [r0] + b _0804E5DA + .align 2, 0 +_0804E5C0: .4byte gUnknown_2023EB8 +_0804E5C4: .4byte gUnknown_2023E8E +_0804E5C8: .4byte gUnknown_2023E92 +_0804E5CC: + ldr r2, _0804E5F8 + ldr r1, _0804E5FC + ldr r0, _0804E600 + ldrh r0, [r0] + strh r0, [r1] + strh r0, [r2] + adds r0, r1, #0 +_0804E5DA: + ldr r3, _0804E604 + ldr r2, _0804E608 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E5F8: .4byte gUnknown_2023E90 +_0804E5FC: .4byte gUnknown_2023E8E +_0804E600: .4byte gUnknown_2023E92 +_0804E604: .4byte gUnknown_8286C30 +_0804E608: .4byte gUnknown_82ED220 + thumb_func_end sub_0804E5A8 + + thumb_func_start sub_0804E60C +sub_0804E60C: @ 0x0804E60C + push {r4, lr} + ldr r0, _0804E67C + ldr r0, [r0] + cmp r0, #0 + bne _0804E674 + ldr r0, _0804E680 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804E684 + strb r0, [r4] + ldr r1, _0804E688 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804E68C + ands r0, r1 + cmp r0, #0 + bne _0804E66C + ldr r0, _0804E690 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0804E66C + ldr r0, _0804E694 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0804E66C + ldr r1, _0804E698 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + movs r1, #0 + bl sub_08033E14 + ldrb r0, [r4] + bl sub_0803F440 +_0804E66C: + ldr r1, _0804E680 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_0804E674: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804E67C: .4byte gUnknown_2023D0C +_0804E680: .4byte gUnknown_2023EB8 +_0804E684: .4byte gUnknown_2023D08 +_0804E688: .4byte gUnknown_2023F50 +_0804E68C: .4byte 0x000400C0 +_0804E690: .4byte gUnknown_2023F60 +_0804E694: .4byte gUnknown_2023F24 +_0804E698: .4byte gUnknown_2023D28 + thumb_func_end sub_0804E60C + + thumb_func_start sub_0804E69C +sub_0804E69C: @ 0x0804E69C + push {r4, r5, lr} + ldr r0, _0804E724 + ldr r0, [r0] + cmp r0, #0 + bne _0804E71C + ldr r4, _0804E728 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r5, _0804E72C + strb r0, [r5] + ldr r1, [r4] + ldrb r3, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + orrs r3, r0 + ldr r1, _0804E730 + ldrb r2, [r5] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804E734 + ands r0, r1 + cmp r0, #0 + bne _0804E714 + ldr r0, _0804E738 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0804E714 + ldr r0, _0804E73C + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0804E714 + ldr r1, _0804E740 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r2, [r0] + ands r2, r3 + movs r0, #0 + movs r1, #1 + bl sub_08033E14 + ldrb r0, [r5] + bl sub_0803F440 +_0804E714: + ldr r1, _0804E728 + ldr r0, [r1] + adds r0, #6 + str r0, [r1] +_0804E71C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E724: .4byte gUnknown_2023D0C +_0804E728: .4byte gUnknown_2023EB8 +_0804E72C: .4byte gUnknown_2023D08 +_0804E730: .4byte gUnknown_2023F50 +_0804E734: .4byte 0x000400C0 +_0804E738: .4byte gUnknown_2023F60 +_0804E73C: .4byte gUnknown_2023F24 +_0804E740: .4byte gUnknown_2023D28 + thumb_func_end sub_0804E69C + + thumb_func_start sub_0804E744 +sub_0804E744: @ 0x0804E744 + push {r4, r5, lr} + ldr r0, _0804E7BC + ldr r0, [r0] + cmp r0, #0 + bne _0804E7B6 + ldr r4, _0804E7C0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r5, _0804E7C4 + strb r0, [r5] + ldr r4, [r4] + ldrb r2, [r4, #3] + ldrb r0, [r4, #4] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r4, #5] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r4, #6] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r1, _0804E7C8 + ldrb r3, [r5] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0804E7CC + ands r0, r1 + cmp r0, #0 + bne _0804E7AE + ldr r0, _0804E7D0 + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0804E7AE + ldr r0, _0804E7D4 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0804E7AE + ldrb r1, [r4, #2] + movs r0, #0 + bl sub_08033E14 + ldrb r0, [r5] + bl sub_0803F440 +_0804E7AE: + ldr r1, _0804E7C0 + ldr r0, [r1] + adds r0, #7 + str r0, [r1] +_0804E7B6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E7BC: .4byte gUnknown_2023D0C +_0804E7C0: .4byte gUnknown_2023EB8 +_0804E7C4: .4byte gUnknown_2023D08 +_0804E7C8: .4byte gUnknown_2023F50 +_0804E7CC: .4byte 0x000400C0 +_0804E7D0: .4byte gUnknown_2023F60 +_0804E7D4: .4byte gUnknown_2023F24 + thumb_func_end sub_0804E744 + + thumb_func_start sub_0804E7D8 +sub_0804E7D8: @ 0x0804E7D8 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _0804E7EC + ldrb r4, [r5] + cmp r4, #0 + beq _0804E7F0 + cmp r4, #1 + beq _0804E81C + b _0804E8AE + .align 2, 0 +_0804E7EC: .4byte gUnknown_2023FD6 +_0804E7F0: + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _0804E818 + movs r1, #0xc + bl sub_0814FA04 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + strb r4, [r5, #1] + movs r0, #0 + bl sub_08056784 + b _0804E8AE + .align 2, 0 +_0804E818: .4byte gUnknown_85ABBC9 +_0804E81C: + ldr r0, _0804E880 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0804E842 + ldrb r0, [r5, #1] + cmp r0, #0 + beq _0804E842 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r5, #1] + bl sub_080567BC + movs r0, #0 + strb r0, [r5, #1] + bl sub_08056784 +_0804E842: + ldr r0, _0804E880 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804E86A + ldr r4, _0804E884 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0804E86A + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 +_0804E86A: + ldr r0, _0804E880 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804E888 + ldr r0, _0804E884 + movs r4, #1 + strb r4, [r0, #1] + b _0804E892 + .align 2, 0 +_0804E880: .4byte gUnknown_3002360 +_0804E884: .4byte gUnknown_2023FD6 +_0804E888: + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0804E8AE +_0804E892: + movs r0, #5 + bl sub_080A306C + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r1, _0804E8B8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804E8AE: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E8B8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E7D8 + + thumb_func_start sub_0804E8BC +sub_0804E8BC: @ 0x0804E8BC + push {r4, r5, lr} + movs r1, #0 + ldr r2, _0804E8E8 + ldr r5, _0804E8EC + ldrb r0, [r2] + cmp r1, r0 + bge _0804E8DA + ldr r4, _0804E8F0 + movs r3, #0xc +_0804E8CE: + adds r0, r1, r4 + strb r3, [r0] + adds r1, #1 + ldrb r0, [r2] + cmp r1, r0 + blt _0804E8CE +_0804E8DA: + ldr r0, [r5] + adds r0, #1 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804E8E8: .4byte gUnknown_2023D10 +_0804E8EC: .4byte gUnknown_2023EB8 +_0804E8F0: .4byte gUnknown_2023D1E + thumb_func_end sub_0804E8BC + + thumb_func_start sub_0804E8F4 +sub_0804E8F4: @ 0x0804E8F4 + push {r4, r5, r6, r7, lr} + ldr r7, _0804E91C + ldr r6, _0804E920 + ldrb r2, [r6] + movs r5, #0x58 + adds r0, r2, #0 + muls r0, r5, r0 + adds r1, r0, r7 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _0804E928 + ldr r1, _0804E924 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #7] + ldrb r6, [r0, #0x1a] + b _0804E942 + .align 2, 0 +_0804E91C: .4byte gUnknown_2023D28 +_0804E920: .4byte gUnknown_2023EB0 +_0804E924: .4byte gUnknown_20240A8 +_0804E928: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0804E942: + ldr r1, _0804EA04 + ldr r5, _0804EA08 + ldrb r0, [r5] + strb r0, [r1] + cmp r4, #0x27 + bne _0804E980 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + bhs _0804E980 + ldrb r0, [r5] + movs r1, #0x27 + bl sub_0813117C + ldr r2, _0804EA0C + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] +_0804E980: + ldr r2, _0804EA10 + ldr r3, _0804EA08 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, r2, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + adds r5, r2, #0 + cmp r1, #0 + bne _0804EA50 + ldr r2, _0804EA14 + ldr r0, _0804EA18 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x65 + beq _0804E9D2 + ldr r0, _0804EA1C + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _0804E9D2 + ldr r0, _0804EA0C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _0804EA50 +_0804E9D2: + ldrb r0, [r3] + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r1, [r0, #0x28] + ldr r2, _0804EA20 + ldr r0, [r2] + cmp r1, r0 + bgt _0804EA50 + subs r0, r1, #1 + str r0, [r2] + ldr r1, _0804EA1C + ldrb r3, [r3] + lsls r0, r3, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bge _0804EA28 + ldr r0, _0804EA24 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + b _0804EA50 + .align 2, 0 +_0804EA04: .4byte gUnknown_2023EB3 +_0804EA08: .4byte gUnknown_2023EB0 +_0804EA0C: .4byte gUnknown_2024020 +_0804EA10: .4byte gUnknown_2023D28 +_0804EA14: .4byte gUnknown_82ED220 +_0804EA18: .4byte gUnknown_2023E8E +_0804EA1C: .4byte gUnknown_2023FE0 +_0804EA20: .4byte gUnknown_2023E94 +_0804EA24: .4byte gUnknown_2023F20 +_0804EA28: + ldr r0, _0804EA60 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _0804EA50 + ldr r2, _0804EA64 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804EA68 + adds r0, r3, #0 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r0, [r0, #0x2e] + strh r0, [r1] +_0804EA50: + ldr r1, _0804EA6C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804EA60: .4byte gUnknown_2024020 +_0804EA64: .4byte gUnknown_2023F20 +_0804EA68: .4byte gUnknown_2023EAC +_0804EA6C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804E8F4 + + thumb_func_start sub_0804EA70 +sub_0804EA70: @ 0x0804EA70 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _0804EAD0 + ldr r0, [r6] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r5, _0804EAD4 + strb r0, [r5] + ldr r1, _0804EAD8 + ldrb r4, [r5] + lsls r0, r4, #1 + adds r0, #0xb8 + ldr r1, [r1] + adds r1, r1, r0 + ldr r2, _0804EADC + movs r3, #0x58 + adds r0, r4, #0 + muls r0, r3, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2e] + strh r0, [r1] + ldrb r0, [r5] + muls r0, r3, r0 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + muls r0, r3, r0 + adds r2, #0x2e + adds r0, r0, r2 + str r0, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r5] + bl sub_0803F440 + ldr r0, [r6] + adds r0, #2 + str r0, [r6] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804EAD0: .4byte gUnknown_2023EB8 +_0804EAD4: .4byte gUnknown_2023D08 +_0804EAD8: .4byte gUnknown_2024140 +_0804EADC: .4byte gUnknown_2023D28 + thumb_func_end sub_0804EA70 + + thumb_func_start sub_0804EAE0 +sub_0804EAE0: @ 0x0804EAE0 + ldr r1, _0804EB0C + movs r0, #0xfd + strb r0, [r1] + movs r0, #7 + strb r0, [r1, #1] + ldr r2, _0804EB10 + ldrb r0, [r2] + strb r0, [r1, #2] + ldr r3, _0804EB14 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _0804EB18 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_0804EB0C: .4byte gUnknown_2022C0C +_0804EB10: .4byte gUnknown_2023EAF +_0804EB14: .4byte gUnknown_2023D12 +_0804EB18: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804EAE0 + + thumb_func_start sub_0804EB1C +sub_0804EB1C: @ 0x0804EB1C + push {r4, lr} + sub sp, #4 + ldr r0, _0804EB38 + ldrb r1, [r0, #0x1e] + adds r4, r0, #0 + cmp r1, #0 + bne _0804EB40 + bl sub_0804F0A4 + cmp r0, #0 + beq _0804EB3C + movs r0, #3 + b _0804EB3E + .align 2, 0 +_0804EB38: .4byte gUnknown_2024118 +_0804EB3C: + movs r0, #1 +_0804EB3E: + strb r0, [r4, #0x1e] +_0804EB40: + ldrb r0, [r4, #0x1e] + subs r0, #1 + cmp r0, #9 + bls _0804EB4A + b _0804ED0A +_0804EB4A: + lsls r0, r0, #2 + ldr r1, _0804EB54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804EB54: .4byte _0804EB58 +_0804EB58: @ jump table + .4byte _0804EB80 @ case 0 + .4byte _0804EBAC @ case 1 + .4byte _0804EBC4 @ case 2 + .4byte _0804EC18 @ case 3 + .4byte _0804EC2C @ case 4 + .4byte _0804EC44 @ case 5 + .4byte _0804EC2C @ case 6 + .4byte _0804EC64 @ case 7 + .4byte _0804EC94 @ case 8 + .4byte _0804ECD8 @ case 9 +_0804EB80: + ldr r1, _0804EBA4 + movs r0, #0x60 + strh r0, [r1] + movs r0, #2 + movs r1, #7 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + bl sub_08001B48 + bl sub_0804ED94 + ldr r1, _0804EBA8 + movs r0, #2 + strb r0, [r1, #0x1e] + b _0804ED0A + .align 2, 0 +_0804EBA4: .4byte gUnknown_2022AD2 +_0804EBA8: .4byte gUnknown_2024118 +_0804EBAC: + bl sub_0804EDE4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804EBB8 + b _0804ED0A +_0804EBB8: + ldr r1, _0804EBC0 + movs r0, #3 + strb r0, [r1, #0x1e] + b _0804ED0A + .align 2, 0 +_0804EBC0: .4byte gUnknown_2024118 +_0804EBC4: + ldr r1, _0804EC0C + movs r0, #0 + strh r0, [r1] + ldr r1, _0804EC10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #1 + movs r1, #7 + movs r2, #0 + bl sub_08001B70 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #0x80 + str r0, [sp] + movs r0, #0x12 + movs r1, #7 + movs r2, #0x1d + movs r3, #0x13 + bl sub_0805664C + ldr r1, _0804EC14 + movs r0, #4 + strb r0, [r1, #0x1e] + b _0804ED0A + .align 2, 0 +_0804EC0C: .4byte gUnknown_2022ACC +_0804EC10: .4byte gUnknown_2022ACE +_0804EC14: .4byte gUnknown_2024118 +_0804EC18: + bl sub_0804ED18 + movs r0, #0xd + bl sub_0800365C + movs r0, #0xd + movs r1, #3 + bl sub_08003528 + b _0804EC82 +_0804EC2C: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0804ED0A + ldr r0, _0804EC40 + strh r1, [r0] + b _0804EC82 + .align 2, 0 +_0804EC40: .4byte gUnknown_2022ACE +_0804EC44: + ldr r0, _0804EC60 + ldrh r0, [r0, #0x2e] + cmp r0, #0 + beq _0804ED0A + movs r0, #5 + bl sub_080A306C + bl sub_0804ED5C + movs r0, #0xd + movs r1, #2 + bl sub_08003528 + b _0804EC82 + .align 2, 0 +_0804EC60: .4byte gUnknown_3002360 +_0804EC64: + ldr r0, _0804EC8C + ldrh r0, [r0, #0x2e] + cmp r0, #0 + beq _0804ED0A + movs r0, #5 + bl sub_080A306C + movs r0, #0x81 + str r0, [sp] + movs r0, #0x12 + movs r1, #7 + movs r2, #0x1d + movs r3, #0x13 + bl sub_0805664C +_0804EC82: + ldr r1, _0804EC90 + ldrb r0, [r1, #0x1e] + adds r0, #1 + strb r0, [r1, #0x1e] + b _0804ED0A + .align 2, 0 +_0804EC8C: .4byte gUnknown_3002360 +_0804EC90: .4byte gUnknown_2024118 +_0804EC94: + bl sub_0804EF50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804ED0A + movs r0, #0xe + bl sub_08003774 + movs r0, #0xe + movs r1, #1 + bl sub_08003528 + movs r0, #0xd + bl sub_08003774 + movs r0, #0xd + movs r1, #1 + bl sub_08003528 + movs r0, #2 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #2 + bl sub_08001B48 + ldr r1, _0804ECD4 + movs r0, #0xa + strb r0, [r1, #0x1e] + b _0804ED0A + .align 2, 0 +_0804ECD4: .4byte gUnknown_2024118 +_0804ECD8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804ED0A + movs r0, #0 + movs r1, #7 + movs r2, #0 + bl sub_08001B70 + movs r0, #1 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + ldr r1, _0804ED14 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804ED0A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804ED14: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804EB1C + + thumb_func_start sub_0804ED18 +sub_0804ED18: @ 0x0804ED18 + push {lr} + sub sp, #0x14 + ldr r0, _0804ED50 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804ED54 + adds r0, r0, r1 + add r1, sp, #8 + bl sub_081D2EB8 + ldr r0, _0804ED58 + ldr r0, [r0] + ldr r1, [r0, #0x10] + movs r0, #0xd + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #0xd + add r2, sp, #8 + movs r3, #0xe + bl sub_081D2C70 + add sp, #0x14 + pop {r0} + bx r0 + .align 2, 0 +_0804ED50: .4byte gUnknown_2024140 +_0804ED54: .4byte gUnknown_2024190 +_0804ED58: .4byte gUnknown_202414C + thumb_func_end sub_0804ED18 + + thumb_func_start sub_0804ED5C +sub_0804ED5C: @ 0x0804ED5C + push {lr} + sub sp, #0x10 + ldr r0, _0804ED8C + ldr r0, [r0] + ldrb r1, [r0, #0x10] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0804ED90 + adds r0, r0, r1 + add r1, sp, #4 + bl sub_081D2EB8 + movs r0, #0xf + str r0, [sp] + movs r0, #0xd + add r1, sp, #4 + movs r2, #0xe + movs r3, #0xd + bl sub_081D2DB4 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_0804ED8C: .4byte gUnknown_2024140 +_0804ED90: .4byte gUnknown_2024190 + thumb_func_end sub_0804ED5C + + thumb_func_start sub_0804ED94 +sub_0804ED94: @ 0x0804ED94 + push {lr} + ldr r1, _0804EDD4 + movs r0, #0 + strh r0, [r1] + ldr r1, _0804EDD8 + movs r2, #0xd0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0804EDDC + movs r1, #0x60 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0804EDE0 + movs r0, #0xe + movs r2, #0 + movs r3, #0 + bl sub_08003AC0 + movs r0, #0xe + bl sub_0800365C + movs r0, #0xe + movs r1, #3 + bl sub_08003528 + bl sub_0804EF90 + pop {r0} + bx r0 + .align 2, 0 +_0804EDD4: .4byte gUnknown_2022AD2 +_0804EDD8: .4byte gUnknown_2022AD0 +_0804EDDC: .4byte gUnknown_82ECC4C +_0804EDE0: .4byte gUnknown_82ECC6C + thumb_func_end sub_0804ED94 + + thumb_func_start sub_0804EDE4 +sub_0804EDE4: @ 0x0804EDE4 + push {r4, r5, lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804EDF4 + movs r0, #1 + b _0804EE2E +_0804EDF4: + ldr r4, _0804EE04 + ldrh r1, [r4] + movs r5, #0x80 + lsls r5, r5, #2 + cmp r1, r5 + bne _0804EE08 + movs r0, #0 + b _0804EE2E + .align 2, 0 +_0804EE04: .4byte gUnknown_2022AD0 +_0804EE08: + movs r0, #0xd0 + lsls r0, r0, #1 + cmp r1, r0 + bne _0804EE14 + bl sub_0804EE38 +_0804EE14: + ldrh r0, [r4] + adds r0, #8 + strh r0, [r4] + lsls r0, r0, #0x10 + ldr r1, _0804EE34 + cmp r0, r1 + bls _0804EE24 + strh r5, [r4] +_0804EE24: + ldrh r1, [r4] + eors r1, r5 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_0804EE2E: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0804EE34: .4byte 0x01FF0000 + thumb_func_end sub_0804EDE4 + + thumb_func_start sub_0804EE38 +sub_0804EE38: @ 0x0804EE38 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r6, _0804EF00 + ldr r0, [r6] + ldrb r0, [r0, #0x10] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0804EF04 + adds r0, r0, r4 + movs r1, #0x38 + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, [r6] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [r6] + ldrb r0, [r0, #0x10] + muls r0, r5, r0 + adds r0, r0, r4 + ldr r5, _0804EF08 + adds r1, r5, #0 + bl sub_081B1814 + str r5, [sp] + mov r2, sp + movs r1, #0 + movs r0, #0xe + strb r0, [r2, #4] + mov r0, sp + strb r1, [r0, #5] + movs r4, #0x20 + strb r4, [r0, #6] + strb r1, [r0, #7] + strb r4, [r0, #8] + strb r1, [r0, #9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + mov r3, sp + ldrb r2, [r3, #0xc] + subs r1, #0x10 + 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 r4, [r0, #0xd] + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + movs r0, #0xf9 + strb r0, [r5] + adds r5, #1 + movs r0, #5 + strb r0, [r5] + adds r5, #1 + adds r0, r5, #0 + mov r1, r8 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r5, r0, #0 + movs r1, #0 + movs r2, #1 + bl sub_08008DE8 + adds r5, r0, #0 + cmp r7, #0xff + beq _0804EF2C + cmp r7, #0 + bne _0804EF0C + movs r1, #0 + movs r2, #0xc + bl sub_08008ED8 + adds r5, r0, #0 + movs r1, #1 + movs r2, #0xd + bl sub_08008ED8 + adds r5, r0, #0 + movs r0, #0xb5 + b _0804EF24 + .align 2, 0 +_0804EF00: .4byte gUnknown_2024140 +_0804EF04: .4byte gUnknown_2024190 +_0804EF08: .4byte gUnknown_2021C7C +_0804EF0C: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xe + bl sub_08008ED8 + adds r5, r0, #0 + movs r1, #1 + movs r2, #0xf + bl sub_08008ED8 + adds r5, r0, #0 + movs r0, #0xb6 +_0804EF24: + strb r0, [r5] + adds r5, #1 + movs r0, #0xff + strb r0, [r5] +_0804EF2C: + mov r0, sp + movs r1, #0xa + strb r1, [r0, #7] + strb r1, [r0, #9] + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + movs r0, #0xe + movs r1, #2 + bl sub_08003528 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0804EE38 + + thumb_func_start sub_0804EF50 +sub_0804EF50: @ 0x0804EF50 + push {lr} + ldr r0, _0804EF64 + ldrh r1, [r0] + movs r3, #0xd0 + lsls r3, r3, #1 + adds r2, r0, #0 + cmp r1, r3 + bne _0804EF68 + movs r0, #0 + b _0804EF8C + .align 2, 0 +_0804EF64: .4byte gUnknown_2022AD0 +_0804EF68: + ldrh r0, [r2] + adds r1, r0, #0 + subs r1, #0x10 + ldr r0, _0804EF78 + cmp r1, r0 + bgt _0804EF7C + strh r3, [r2] + b _0804EF7E + .align 2, 0 +_0804EF78: .4byte 0x0000019F +_0804EF7C: + strh r1, [r2] +_0804EF7E: + ldrh r1, [r2] + movs r0, #0xd0 + lsls r0, r0, #1 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_0804EF8C: + pop {r1} + bx r1 + thumb_func_end sub_0804EF50 + + thumb_func_start sub_0804EF90 +sub_0804EF90: @ 0x0804EF90 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x10 + ldr r0, _0804F038 + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0804F03C + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #0x10] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + bl sub_080D277C + str r0, [sp] + ldr r5, _0804F040 + ldr r0, [sp, #4] + ands r0, r5 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + ldr r1, _0804F044 + ands r0, r1 + ldr r1, _0804F048 + orrs r0, r1 + str r0, [sp, #4] + adds r0, r4, #0 + bl sub_080D2950 + str r0, [sp, #8] + add r4, sp, #8 + ldr r0, [r4, #4] + ands r0, r5 + ldr r1, _0804F04C + orrs r0, r1 + str r0, [r4, #4] + mov r0, sp + bl sub_08008210 + adds r0, r4, #0 + bl sub_0800845C + ldr r0, _0804F050 + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0xa + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0804F054 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, _0804F058 + ldrh r0, [r0] + strh r0, [r1, #0x30] + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804F038: .4byte gUnknown_2024140 +_0804F03C: .4byte gUnknown_2024190 +_0804F040: .4byte 0xFFFF0000 +_0804F044: .4byte 0x0000FFFF +_0804F048: .4byte 0xD75A0000 +_0804F04C: .4byte 0x0000D75A +_0804F050: .4byte gUnknown_82ECD44 +_0804F054: .4byte gUnknown_20205AC +_0804F058: .4byte gUnknown_2022AD0 + thumb_func_end sub_0804EF90 + + thumb_func_start sub_0804F05C +sub_0804F05C: @ 0x0804F05C + push {r4, lr} + adds r2, r0, #0 + ldr r0, _0804F078 + ldrh r1, [r2, #0x30] + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r2, #0x24] + lsls r1, r1, #0x10 + cmp r1, #0 + beq _0804F07C + movs r0, #1 + strh r0, [r2, #0x2e] + b _0804F098 + .align 2, 0 +_0804F078: .4byte gUnknown_2022AD0 +_0804F07C: + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0804F098 + adds r0, r2, #0 + bl sub_08006E00 + ldr r4, _0804F0A0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 +_0804F098: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804F0A0: .4byte 0x0000D75A + thumb_func_end sub_0804F05C + + thumb_func_start sub_0804F0A4 +sub_0804F0A4: @ 0x0804F0A4 + push {lr} + ldr r3, _0804F0CC + ldr r0, _0804F0D0 + ldr r0, [r0] + ldrh r1, [r3] + ldrb r2, [r0, #0x10] + cmp r1, r2 + beq _0804F0C6 + ldr r0, _0804F0D4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0804F0D8 + ldrh r0, [r3, #4] + cmp r0, r2 + bne _0804F0D8 +_0804F0C6: + movs r0, #1 + b _0804F0DA + .align 2, 0 +_0804F0CC: .4byte gUnknown_2023D12 +_0804F0D0: .4byte gUnknown_2024140 +_0804F0D4: .4byte gUnknown_2022C90 +_0804F0D8: + movs r0, #0 +_0804F0DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0804F0A4 + + thumb_func_start sub_0804F0E0 +sub_0804F0E0: @ 0x0804F0E0 + push {lr} + bl sub_0803F5C8 + ldr r1, _0804F0F4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804F0F4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F0E0 + + thumb_func_start sub_0804F0F8 +sub_0804F0F8: @ 0x0804F0F8 + push {lr} + movs r0, #0 + bl sub_080A631C + ldr r1, _0804F110 + strb r0, [r1] + ldr r1, _0804F114 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804F110: .4byte gUnknown_2023EAF +_0804F114: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F0F8 + + thumb_func_start sub_0804F118 +sub_0804F118: @ 0x0804F118 + push {r4, r5, lr} + ldr r5, _0804F144 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _0804F148 + strb r0, [r4] + movs r0, #0 + movs r1, #0 + bl sub_0803426C + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0804F144: .4byte gUnknown_2023EB8 +_0804F148: .4byte gUnknown_2023D08 + thumb_func_end sub_0804F118 + + thumb_func_start sub_0804F14C +sub_0804F14C: @ 0x0804F14C + push {r4, lr} + ldr r4, _0804F174 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _0804F178 + strb r0, [r1] + ldrb r0, [r1] + ldr r1, _0804F17C + ldrb r1, [r1] + bl sub_0813114C + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804F174: .4byte gUnknown_2023EB8 +_0804F178: .4byte gUnknown_2023D08 +_0804F17C: .4byte gUnknown_2023EAE + thumb_func_end sub_0804F14C + + thumb_func_start sub_0804F180 +sub_0804F180: @ 0x0804F180 + ldr r2, _0804F1A0 + movs r0, #0xfd + strb r0, [r2] + movs r0, #2 + strb r0, [r2, #1] + ldr r0, _0804F1A4 + ldrh r1, [r0] + strb r1, [r2, #2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r2, #3] + movs r0, #0xff + strb r0, [r2, #4] + bx lr + .align 2, 0 +_0804F1A0: .4byte gUnknown_2022C1C +_0804F1A4: .4byte gUnknown_2024186 + thumb_func_end sub_0804F180 + + thumb_func_start sub_0804F1A8 +sub_0804F1A8: @ 0x0804F1A8 + push {lr} + bl sub_0804F180 + ldr r1, _0804F1BC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804F1BC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F1A8 + + thumb_func_start sub_0804F1C0 +sub_0804F1C0: @ 0x0804F1C0 + push {lr} + ldr r0, _0804F1EC + ldrb r0, [r0] + bl sub_0803E860 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0804F1F4 + ldr r3, _0804F1F0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0804F1FC + .align 2, 0 +_0804F1EC: .4byte gUnknown_2023EB1 +_0804F1F0: .4byte gUnknown_2023EB8 +_0804F1F4: + ldr r1, _0804F200 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0804F1FC: + pop {r0} + bx r0 + .align 2, 0 +_0804F200: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F1C0 + + thumb_func_start sub_0804F204 +sub_0804F204: @ 0x0804F204 + push {r4, r5, r6, lr} + ldr r0, _0804F254 + ldr r4, [r0] + movs r6, #1 + ands r4, r6 + cmp r4, #0 + bne _0804F29A + ldr r0, _0804F258 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _0804F25C + strb r0, [r1] + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0804F260 + movs r1, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r5, [r1, #0x28] + movs r0, #0x64 + muls r0, r5, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + cmp r0, #0 + bne _0804F242 + movs r0, #1 +_0804F242: + cmp r0, #0x45 + bgt _0804F24A + cmp r5, #0 + bne _0804F268 +_0804F24A: + ldr r0, _0804F264 + ldr r0, [r0] + adds r0, #0xb1 + strb r4, [r0] + b _0804F29A + .align 2, 0 +_0804F254: .4byte gUnknown_2022C90 +_0804F258: .4byte gUnknown_2023EB8 +_0804F25C: .4byte gUnknown_2023D08 +_0804F260: .4byte gUnknown_2023D28 +_0804F264: .4byte gUnknown_2024140 +_0804F268: + cmp r0, #0x27 + ble _0804F27C + ldr r0, _0804F278 + ldr r0, [r0] + adds r0, #0xb1 + strb r6, [r0] + b _0804F29A + .align 2, 0 +_0804F278: .4byte gUnknown_2024140 +_0804F27C: + cmp r0, #9 + ble _0804F290 + ldr r0, _0804F28C + ldr r0, [r0] + adds r0, #0xb1 + movs r1, #2 + b _0804F298 + .align 2, 0 +_0804F28C: .4byte gUnknown_2024140 +_0804F290: + ldr r0, _0804F2A8 + ldr r0, [r0] + adds r0, #0xb1 + movs r1, #3 +_0804F298: + strb r1, [r0] +_0804F29A: + ldr r1, _0804F2AC + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804F2A8: .4byte gUnknown_2024140 +_0804F2AC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F204 + + thumb_func_start sub_0804F2B0 +sub_0804F2B0: @ 0x0804F2B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0804F314 + ldr r7, [r0] + movs r0, #1 + mov r8, r0 + ands r7, r0 + cmp r7, #0 + bne _0804F34A + ldr r0, _0804F318 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_0803F00C + adds r4, r0, #0 + ldr r0, _0804F31C + strb r4, [r0] + movs r0, #1 + eors r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _0804F320 + ldr r6, [r1] + lsrs r0, r0, #0x17 + adds r0, r0, r6 + adds r0, #0xa8 + ldrb r5, [r0] + ldr r1, _0804F324 + movs r0, #0x58 + muls r0, r4, r0 + adds r0, r0, r1 + ldrh r4, [r0, #0x28] + subs r1, r5, r4 + movs r0, #0x64 + muls r0, r1, r0 + adds r1, r5, #0 + bl __divsi3 + adds r1, r0, #0 + cmp r4, r5 + blo _0804F328 + adds r0, r6, #0 + adds r0, #0xb1 + strb r7, [r0] + b _0804F34A + .align 2, 0 +_0804F314: .4byte gUnknown_2022C90 +_0804F318: .4byte gUnknown_2023EB8 +_0804F31C: .4byte gUnknown_2023D08 +_0804F320: .4byte gUnknown_2024140 +_0804F324: .4byte gUnknown_2023D28 +_0804F328: + cmp r0, #0x1d + bgt _0804F336 + adds r0, r6, #0 + adds r0, #0xb1 + mov r1, r8 + strb r1, [r0] + b _0804F34A +_0804F336: + cmp r1, #0x45 + bgt _0804F342 + adds r1, r6, #0 + adds r1, #0xb1 + movs r0, #2 + b _0804F348 +_0804F342: + adds r1, r6, #0 + adds r1, #0xb1 + movs r0, #3 +_0804F348: + strb r0, [r1] +_0804F34A: + ldr r1, _0804F35C + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F35C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F2B0 + + thumb_func_start sub_0804F360 +sub_0804F360: @ 0x0804F360 + push {lr} + sub sp, #4 + ldr r2, _0804F3A0 + ldr r1, _0804F3A4 + ldrb r0, [r1] + strb r0, [r2] + ldr r2, _0804F3A8 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0804F3AC + adds r0, r0, r1 + ldr r1, _0804F3B0 + ldrh r1, [r1] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #1 + str r3, [sp] + movs r3, #0 + bl sub_0806B7EC + ldr r1, _0804F3B4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0804F3A0: .4byte gUnknown_202415C +_0804F3A4: .4byte gUnknown_2023EAF +_0804F3A8: .4byte gUnknown_2023D12 +_0804F3AC: .4byte gUnknown_20243E8 +_0804F3B0: .4byte gUnknown_2023EAC +_0804F3B4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F360 + + thumb_func_start sub_0804F3B8 +sub_0804F3B8: @ 0x0804F3B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _0804F3E0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _0804F3E4 + strb r0, [r1] + ldr r0, [r4] + ldrb r0, [r0, #2] + cmp r0, #0x1a + bls _0804F3D6 + b _0804F97C +_0804F3D6: + lsls r0, r0, #2 + ldr r1, _0804F3E8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804F3E0: .4byte gUnknown_2023EB8 +_0804F3E4: .4byte gUnknown_2023D08 +_0804F3E8: .4byte _0804F3EC +_0804F3EC: @ jump table + .4byte _0804F458 @ case 0 + .4byte _0804F468 @ case 1 + .4byte _0804F4C8 @ case 2 + .4byte _0804F4D8 @ case 3 + .4byte _0804F4F0 @ case 4 + .4byte _0804F52C @ case 5 + .4byte _0804F564 @ case 6 + .4byte _0804F5EC @ case 7 + .4byte _0804F62C @ case 8 + .4byte _0804F6D8 @ case 9 + .4byte _0804F6F4 @ case 10 + .4byte _0804F748 @ case 11 + .4byte _0804F7A0 @ case 12 + .4byte _0804F824 @ case 13 + .4byte _0804F838 @ case 14 + .4byte _0804F83E @ case 15 + .4byte _0804F844 @ case 16 + .4byte _0804F86C @ case 17 + .4byte _0804F876 @ case 18 + .4byte _0804F884 @ case 19 + .4byte _0804F898 @ case 20 + .4byte _0804F8D0 @ case 21 + .4byte _0804F8E4 @ case 22 + .4byte _0804F8FC @ case 23 + .4byte _0804F928 @ case 24 + .4byte _0804F93C @ case 25 + .4byte _0804F968 @ case 26 +_0804F458: + ldr r0, _0804F464 + ldrb r0, [r0] + bl sub_0803F4E0 + b _0804F97C + .align 2, 0 +_0804F464: .4byte gUnknown_2023D08 +_0804F468: + ldr r1, _0804F4A4 + ldr r4, _0804F4A8 + ldrb r0, [r4] + strb r0, [r1] + ldrb r0, [r1] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0804F4AC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r0, [r2, #8] + cmp r0, #0 + beq _0804F4B4 + ldr r1, _0804F4B0 + ldrb r2, [r2, #9] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804F4B4 + strb r2, [r4] + b _0804F97C + .align 2, 0 +_0804F4A4: .4byte gUnknown_2023EAF +_0804F4A8: .4byte gUnknown_2023EB0 +_0804F4AC: .4byte gUnknown_2023F38 +_0804F4B0: .4byte gUnknown_2023D28 +_0804F4B4: + ldr r0, _0804F4C0 + ldr r1, _0804F4C4 + ldrb r1, [r1] + strb r1, [r0] + b _0804F97C + .align 2, 0 +_0804F4C0: .4byte gUnknown_2023EB0 +_0804F4C4: .4byte gUnknown_2023D08 +_0804F4C8: + bl sub_0803B7CC + ldr r1, _0804F4D4 + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F4D4: .4byte gUnknown_2023FD6 +_0804F4D8: + ldr r0, _0804F4E8 + ldrh r0, [r0] + movs r1, #0 + bl sub_08045520 + ldr r1, _0804F4EC + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F4E8: .4byte gUnknown_2023E8E +_0804F4EC: .4byte gUnknown_2023EB0 +_0804F4F0: + ldr r2, _0804F510 + ldr r1, _0804F514 + ldr r0, _0804F518 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0x1c + ldr r2, [r2] + ands r2, r0 + cmp r2, #0 + beq _0804F520 + ldr r1, _0804F51C + movs r0, #1 + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F510: .4byte gUnknown_2023F24 +_0804F514: .4byte gUnknown_82FACB4 +_0804F518: .4byte gUnknown_2023D08 +_0804F51C: .4byte gUnknown_2023FD6 +_0804F520: + ldr r0, _0804F528 + strb r2, [r0] + b _0804F97C + .align 2, 0 +_0804F528: .4byte gUnknown_2023FD6 +_0804F52C: + ldr r4, _0804F55C + ldr r3, _0804F560 + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F55C: .4byte gUnknown_2024020 +_0804F560: .4byte gUnknown_2023D08 +_0804F564: + ldr r4, _0804F588 + ldr r1, _0804F58C + ldr r0, [r1] + ldrh r3, [r4] + ldrb r2, [r0, #0x10] + adds r6, r1, #0 + cmp r3, r2 + beq _0804F580 + ldrh r0, [r4, #4] + cmp r0, r2 + beq _0804F57C + b _0804F97C +_0804F57C: + cmp r3, r0 + bne _0804F594 +_0804F580: + ldr r1, _0804F590 + movs r0, #0 + b _0804F598 + .align 2, 0 +_0804F588: .4byte gUnknown_2023D12 +_0804F58C: .4byte gUnknown_2024140 +_0804F590: .4byte gUnknown_2023D08 +_0804F594: + ldr r1, _0804F5E4 + movs r0, #2 +_0804F598: + strb r0, [r1] + adds r5, r1, #0 + ldrb r2, [r5] + lsls r0, r2, #1 + adds r0, #0xc8 + ldr r1, [r6] + adds r4, r1, r0 + movs r3, #0 + ldr r1, _0804F5E8 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r2, [r4] + cmp r0, r2 + beq _0804F5D8 + adds r6, r5, #0 + movs r5, #0x58 + adds r2, r1, #0 +_0804F5C0: + adds r3, #1 + cmp r3, #3 + bgt _0804F5D8 + lsls r1, r3, #1 + ldrb r0, [r6] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + ldrh r1, [r4] + cmp r0, r1 + bne _0804F5C0 +_0804F5D8: + cmp r3, #4 + beq _0804F5DE + b _0804F97C +_0804F5DE: + movs r0, #0 + strh r0, [r4] + b _0804F97C + .align 2, 0 +_0804F5E4: .4byte gUnknown_2023D08 +_0804F5E8: .4byte gUnknown_2023D28 +_0804F5EC: + ldr r0, _0804F61C + ldr r0, [r0] + movs r1, #0xb + ands r0, r1 + cmp r0, #8 + beq _0804F5FA + b _0804F97C +_0804F5FA: + ldr r1, _0804F620 + ldrh r0, [r1, #0x28] + cmp r0, #0 + bne _0804F604 + b _0804F97C +_0804F604: + adds r0, r1, #0 + adds r0, #0x80 + ldrh r0, [r0] + cmp r0, #0 + bne _0804F610 + b _0804F97C +_0804F610: + ldr r0, _0804F624 + ldr r1, [r0] + ldr r2, _0804F628 + ands r1, r2 + str r1, [r0] + b _0804F97C + .align 2, 0 +_0804F61C: .4byte gUnknown_2022C90 +_0804F620: .4byte gUnknown_2023D28 +_0804F624: .4byte gUnknown_2023F24 +_0804F628: .4byte 0xFFBFFFFF +_0804F62C: + ldr r2, _0804F6BC + mov r8, r2 + movs r0, #0 + strb r0, [r2] + ldr r1, _0804F6C0 + ldr r6, _0804F6C4 + ldrb r0, [r2, #1] + strb r0, [r6] + strb r0, [r1, #0x17] + ldr r0, _0804F6C8 + ldr r0, [r0] + adds r7, r0, #0 + adds r7, #0x92 + ldrb r3, [r7] + ldr r1, _0804F6CC + ldrb r2, [r6] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r5, [r0] + adds r0, r3, #0 + ands r0, r5 + cmp r0, #0 + beq _0804F65C + b _0804F97C +_0804F65C: + ldr r4, _0804F6D0 + movs r0, #0x58 + mov ip, r0 + mov r1, ip + muls r1, r2, r1 + adds r2, r1, #0 + adds r1, r2, r4 + ldrh r0, [r1, #0x2c] + lsrs r0, r0, #1 + ldrh r1, [r1, #0x28] + cmp r0, r1 + bhs _0804F676 + b _0804F97C +_0804F676: + cmp r1, #0 + bne _0804F67C + b _0804F97C +_0804F67C: + adds r0, r4, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _0804F68E + b _0804F97C +_0804F68E: + orrs r3, r5 + strb r3, [r7] + movs r0, #1 + mov r2, r8 + strb r0, [r2] + ldrb r0, [r6] + mov r1, ip + muls r1, r0, r1 + adds r0, r1, #0 + adds r1, r4, #0 + adds r1, #0x48 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0806CB4C + ldr r1, _0804F6D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + mov r2, r8 + strb r0, [r2, #5] + b _0804F97C + .align 2, 0 +_0804F6BC: .4byte gUnknown_2023FD6 +_0804F6C0: .4byte gUnknown_2024118 +_0804F6C4: .4byte gUnknown_2023D08 +_0804F6C8: .4byte gUnknown_2024140 +_0804F6CC: .4byte gUnknown_82FACB4 +_0804F6D0: .4byte gUnknown_2023D28 +_0804F6D4: .4byte gUnknown_82ECE7C +_0804F6D8: + ldr r4, _0804F6F0 + adds r0, r4, #0 + bl sub_081A4E48 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0804F6EA + b _0804F984 +_0804F6EA: + strb r3, [r4, #1] + b _0804F97C + .align 2, 0 +_0804F6F0: .4byte gUnknown_2023FD6 +_0804F6F4: + ldr r0, _0804F72C + adds r0, #0x80 + movs r1, #0 + strh r1, [r0] + ldr r2, _0804F730 + ldr r3, _0804F734 + ldr r1, [r3, #4] + lsls r1, r1, #0x1c + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r0, _0804F738 + ldr r2, [r0] + ldr r0, _0804F73C + adds r2, r2, r0 + ldr r0, _0804F740 + ldrh r0, [r0, #2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804F744 + adds r1, #0x34 + ldrb r0, [r1] + movs r2, #2 + b _0804F800 + .align 2, 0 +_0804F72C: .4byte gUnknown_2023D28 +_0804F730: .4byte gUnknown_2023F24 +_0804F734: .4byte gUnknown_82FACB4 +_0804F738: .4byte gUnknown_2024140 +_0804F73C: .4byte 0x000002A1 +_0804F740: .4byte gUnknown_2023D12 +_0804F744: .4byte gUnknown_2023F60 +_0804F748: + ldr r1, _0804F788 + movs r0, #0 + strh r0, [r1, #0x28] + ldr r2, _0804F78C + ldr r3, _0804F790 + ldr r1, [r3] + lsls r1, r1, #0x1c + ldr r0, [r2] + orrs r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [r2] + ldr r0, _0804F794 + ldr r2, [r0] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r2, r2, r1 + ldr r0, _0804F798 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _0804F79C + ldrb r0, [r2, #0x18] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x18] + b _0804F97C + .align 2, 0 +_0804F788: .4byte gUnknown_2023D28 +_0804F78C: .4byte gUnknown_2023F24 +_0804F790: .4byte gUnknown_82FACB4 +_0804F794: .4byte gUnknown_2024140 +_0804F798: .4byte gUnknown_2023D12 +_0804F79C: .4byte gUnknown_2023F60 +_0804F7A0: + ldr r0, _0804F808 + movs r1, #0 + strh r1, [r0, #0x28] + adds r0, #0x80 + strh r1, [r0] + ldr r2, _0804F80C + ldr r3, _0804F810 + ldr r0, [r3] + lsls r0, r0, #0x1c + ldr r1, [r2] + orrs r1, r0 + ldr r0, [r3, #4] + lsls r0, r0, #0x1c + orrs r1, r0 + movs r0, #0x80 + lsls r0, r0, #0xf + orrs r1, r0 + str r1, [r2] + ldr r5, _0804F814 + ldr r2, [r5] + movs r0, #0xa8 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r4, _0804F818 + ldrh r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, [r5] + ldr r1, _0804F81C + adds r2, r2, r1 + ldrh r0, [r4, #2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804F820 + ldrb r0, [r1, #0x18] + movs r2, #2 + orrs r0, r2 + strb r0, [r1, #0x18] + adds r1, #0x34 + ldrb r0, [r1] +_0804F800: + orrs r0, r2 + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F808: .4byte gUnknown_2023D28 +_0804F80C: .4byte gUnknown_2023F24 +_0804F810: .4byte gUnknown_82FACB4 +_0804F814: .4byte gUnknown_2024140 +_0804F818: .4byte gUnknown_2023D12 +_0804F81C: .4byte 0x000002A1 +_0804F820: .4byte gUnknown_2023F60 +_0804F824: + movs r0, #0 + bl sub_08033C68 + ldr r0, _0804F834 + ldrb r0, [r0] + bl sub_0803F440 + b _0804F97C + .align 2, 0 +_0804F834: .4byte gUnknown_2023D08 +_0804F838: + bl sub_081A57E8 + b _0804F97C +_0804F83E: + bl sub_081A5AD8 + b _0804F97C +_0804F844: + ldr r1, _0804F860 + ldr r0, _0804F864 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r0, _0804F868 + movs r1, #0x16 + bl sub_0814FA04 + b _0804F97C + .align 2, 0 +_0804F860: .4byte gUnknown_85AC04C +_0804F864: .4byte gUnknown_2023EB8 +_0804F868: .4byte gUnknown_2022AE0 +_0804F86C: + movs r0, #0x16 + bl sub_080046A8 + lsls r0, r0, #0x10 + b _0804F930 +_0804F876: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804F882 + b _0804F984 +_0804F882: + b _0804F97C +_0804F884: + ldr r4, _0804F890 + movs r0, #1 + strb r0, [r4] + ldr r0, _0804F894 + adds r0, #0x58 + b _0804F8AE + .align 2, 0 +_0804F890: .4byte gUnknown_2023D08 +_0804F894: .4byte gUnknown_2023D28 +_0804F898: + ldr r0, _0804F8C4 + ldrb r0, [r0] + cmp r0, #3 + bls _0804F97C + ldr r4, _0804F8C8 + movs r0, #3 + strb r0, [r4] + ldr r0, _0804F8CC + movs r2, #0x84 + lsls r2, r2, #1 + adds r0, r0, r2 +_0804F8AE: + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _0804F97C + movs r0, #0 + movs r1, #0 + bl sub_0803385C + ldrb r0, [r4] + bl sub_0803F440 + b _0804F97C + .align 2, 0 +_0804F8C4: .4byte gUnknown_2023D10 +_0804F8C8: .4byte gUnknown_2023D08 +_0804F8CC: .4byte gUnknown_2023D28 +_0804F8D0: + ldr r0, _0804F8DC + ldr r1, _0804F8E0 + movs r2, #0x55 + bl m4aMPlayVolumeControl + b _0804F97C + .align 2, 0 +_0804F8DC: .4byte gUnknown_30074D0 +_0804F8E0: .4byte 0x0000FFFF +_0804F8E4: + ldr r0, _0804F8F4 + ldr r1, _0804F8F8 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + b _0804F97C + .align 2, 0 +_0804F8F4: .4byte gUnknown_30074D0 +_0804F8F8: .4byte 0x0000FFFF +_0804F8FC: + ldr r0, _0804F918 + ldr r2, [r0] + ldr r0, _0804F91C + adds r2, r2, r0 + ldr r1, _0804F920 + ldr r0, _0804F924 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + b _0804F97C + .align 2, 0 +_0804F918: .4byte gUnknown_2024140 +_0804F91C: .4byte 0x000002A2 +_0804F920: .4byte gUnknown_82FACB4 +_0804F924: .4byte gUnknown_2023D08 +_0804F928: + ldr r0, _0804F938 + ldrb r0, [r0] + bl sub_08056E6C +_0804F930: + cmp r0, #0 + bne _0804F984 + b _0804F97C + .align 2, 0 +_0804F938: .4byte gUnknown_2023D08 +_0804F93C: + ldr r0, _0804F954 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804F95C + ldr r1, _0804F958 + movs r0, #5 + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F954: .4byte gUnknown_2023D08 +_0804F958: .4byte gUnknown_2023FDE +_0804F95C: + ldr r1, _0804F964 + movs r0, #0xa + strb r0, [r1] + b _0804F97C + .align 2, 0 +_0804F964: .4byte gUnknown_2023FDE +_0804F968: + movs r1, #0xce + lsls r1, r1, #1 + movs r0, #0 + movs r2, #1 + bl sub_08034158 + ldr r0, _0804F990 + ldrb r0, [r0] + bl sub_0803F440 +_0804F97C: + ldr r1, _0804F994 + ldr r0, [r1] + adds r0, #3 + str r0, [r1] +_0804F984: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804F990: .4byte gUnknown_2023D08 +_0804F994: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F3B8 + + thumb_func_start sub_0804F998 +sub_0804F998: @ 0x0804F998 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #1 + ldr r2, _0804FA64 + ldr r1, _0804FA68 + ldrb r3, [r1] + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r8, r1 + ldr r7, _0804FA6C + cmp r0, #0xb6 + beq _0804F9C8 + cmp r0, #0xc5 + beq _0804F9C8 + cmp r0, #0xcb + beq _0804F9C8 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #0 + strb r1, [r0, #8] +_0804F9C8: + ldr r0, _0804FA70 + ldrb r1, [r0] + ldr r0, _0804FA74 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _0804F9D8 + movs r6, #0 +_0804F9D8: + ldr r2, _0804FA78 + mov r5, r8 + ldrb r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r4, [r0, #8] + lsls r4, r4, #1 + adds r4, r4, r2 + bl sub_0806F050 + ldrh r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + blo _0804FA8C + cmp r6, #0 + beq _0804FA8C + ldr r4, _0804FA7C + ldr r3, _0804FA80 + ldrh r0, [r3] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1] + cmp r0, #0x6f + bne _0804FA28 + ldr r0, _0804FA84 + ldrb r1, [r5] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0804FA88 + movs r0, #0 + strb r0, [r1, #5] +_0804FA28: + ldrh r0, [r3] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1] + cmp r0, #0x74 + bne _0804FA4E + ldr r0, _0804FA84 + ldrb r1, [r5] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0804FA88 + movs r0, #1 + strb r0, [r1, #5] +_0804FA4E: + mov r1, r8 + ldrb r0, [r1] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r0, [r1, #8] + adds r0, #1 + strb r0, [r1, #8] + b _0804FAAE + .align 2, 0 +_0804FA64: .4byte gUnknown_2023F04 +_0804FA68: .4byte gUnknown_2023EAF +_0804FA6C: .4byte gUnknown_2023F60 +_0804FA70: .4byte gUnknown_2023D26 +_0804FA74: .4byte gUnknown_2023D10 +_0804FA78: .4byte gUnknown_82ECD5C +_0804FA7C: .4byte gUnknown_82ED220 +_0804FA80: .4byte gUnknown_2023E8E +_0804FA84: .4byte gUnknown_2023FE0 +_0804FA88: .4byte gUnknown_2023FD6 +_0804FA8C: + ldr r2, _0804FAC0 + ldr r0, _0804FAC4 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #8] + ldr r1, _0804FAC8 + movs r0, #2 + strb r0, [r1, #5] + ldr r2, _0804FACC + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0804FAAE: + ldr r1, _0804FAD0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FAC0: .4byte gUnknown_2023F60 +_0804FAC4: .4byte gUnknown_2023EAF +_0804FAC8: .4byte gUnknown_2023FD6 +_0804FACC: .4byte gUnknown_2023F20 +_0804FAD0: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804F998 + + thumb_func_start sub_0804FAD4 +sub_0804FAD4: @ 0x0804FAD4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0804FB90 + ldr r2, [r0] + cmp r2, #0 + bne _0804FBD8 + ldr r1, _0804FB94 + strb r2, [r1] + ldr r0, _0804FB98 + ldrb r3, [r0] + adds r5, r1, #0 + mov r8, r0 + ldr r6, _0804FB9C + cmp r2, r3 + bhs _0804FB20 + adds r0, r6, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #6 + beq _0804FB20 + adds r2, r3, #0 + adds r4, r6, #0 + movs r3, #0x58 +_0804FB04: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r2 + bhs _0804FB20 + ldrb r0, [r5] + muls r0, r3, r0 + adds r0, r0, r4 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #6 + bne _0804FB04 +_0804FB20: + ldrb r0, [r5] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bne _0804FBBC + ldr r4, _0804FBA0 + ldr r7, _0804FBA4 + ldrb r0, [r7] + strb r0, [r4] + ldr r2, _0804FBA8 + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + str r0, [r2] + ldr r1, _0804FBAC + movs r0, #0 + bl sub_08033D54 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0804FBB0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + movs r0, #0 + strb r0, [r5] + mov r2, r8 + ldrb r0, [r2] + cmp r0, #0 + beq _0804FBD8 + adds r3, r5, #0 + ldrb r5, [r7] + ldr r7, _0804FBB4 + adds r4, r0, #0 + ldr r6, _0804FBB8 +_0804FB6C: + ldrb r2, [r3] + cmp r2, r5 + beq _0804FB82 + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r7 + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + beq _0804FBD8 +_0804FB82: + adds r0, r2, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r4 + blo _0804FB6C + b _0804FBD8 + .align 2, 0 +_0804FB90: .4byte gUnknown_2023D0C +_0804FB94: .4byte gUnknown_2023EB0 +_0804FB98: .4byte gUnknown_2023D10 +_0804FB9C: .4byte gUnknown_2023D28 +_0804FBA0: .4byte gUnknown_2023D08 +_0804FBA4: .4byte gUnknown_2023EAF +_0804FBA8: .4byte gUnknown_2023E94 +_0804FBAC: .4byte 0x00007FFF +_0804FBB0: .4byte gUnknown_2023EB8 +_0804FBB4: .4byte gUnknown_82FACB4 +_0804FBB8: .4byte gUnknown_2023EB4 +_0804FBBC: + ldr r1, _0804FBE4 + movs r0, #6 + strb r0, [r1] + ldrb r0, [r5] + movs r1, #0x58 + muls r1, r0, r1 + adds r1, r1, r6 + adds r1, #0x20 + ldrb r1, [r1] + bl sub_0813114C + ldr r1, _0804FBE8 + ldr r0, _0804FBEC + str r0, [r1] +_0804FBD8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FBE4: .4byte gUnknown_2023EAE +_0804FBE8: .4byte gUnknown_2023EB8 +_0804FBEC: .4byte gUnknown_8289AE8 + thumb_func_end sub_0804FAD4 + + thumb_func_start sub_0804FBF0 +sub_0804FBF0: @ 0x0804FBF0 + push {r4, lr} + sub sp, #4 + ldr r0, _0804FC3C + ldr r3, [r0] + cmp r3, #0 + bne _0804FC34 + ldr r4, _0804FC40 + ldr r0, _0804FC44 + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _0804FC48 + ldrb r0, [r4] + movs r2, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + strh r3, [r0, #0x28] + ldrb r0, [r4] + muls r0, r2, r0 + adds r1, #0x28 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x2a + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _0804FC4C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804FC34: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0804FC3C: .4byte gUnknown_2023D0C +_0804FC40: .4byte gUnknown_2023D08 +_0804FC44: .4byte gUnknown_2023EAF +_0804FC48: .4byte gUnknown_2023D28 +_0804FC4C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804FBF0 + + thumb_func_start sub_0804FC50 +sub_0804FC50: @ 0x0804FC50 + push {r4, r5, r6, r7, lr} + ldr r3, _0804FCC8 + ldr r2, [r3] + ldrb r4, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r4, r0 + ldr r0, _0804FCCC + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + adds r7, r3, #0 + cmp r0, #0 + beq _0804FCE8 + ldr r0, _0804FCD0 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r2, _0804FCD4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r3, r0, #0 + ldr r6, _0804FCD8 + ldr r5, _0804FCDC + ldr r0, _0804FCE0 + mov ip, r0 + ldrb r0, [r2] + cmp r1, r0 + bne _0804FCA6 +_0804FC96: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r2] + cmp r0, r1 + beq _0804FC96 +_0804FCA6: + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0804FC96 + ldrb r0, [r3] + mov r2, ip + ldrb r2, [r2] + cmp r0, r2 + blo _0804FCE4 + ldr r0, [r7] + adds r0, #5 + str r0, [r7] + b _0804FCEC + .align 2, 0 +_0804FCC8: .4byte gUnknown_2023EB8 +_0804FCCC: .4byte gUnknown_2022C90 +_0804FCD0: .4byte gUnknown_2023EB0 +_0804FCD4: .4byte gUnknown_2023EAF +_0804FCD8: .4byte gUnknown_2023EB4 +_0804FCDC: .4byte gUnknown_82FACB4 +_0804FCE0: .4byte gUnknown_2023D10 +_0804FCE4: + str r4, [r7] + b _0804FCEC +_0804FCE8: + adds r0, r2, #5 + str r0, [r3] +_0804FCEC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0804FC50 + + thumb_func_start sub_0804FCF4 +sub_0804FCF4: @ 0x0804FCF4 + push {r4, r5, r6, lr} + ldr r4, _0804FD50 + ldr r1, [r4] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r2, r0 + ldrb r0, [r1, #5] + ldr r3, _0804FD54 + cmp r0, #1 + bne _0804FD1C + ldr r0, _0804FD58 + ldrb r0, [r0] + strb r0, [r3] +_0804FD1C: + ldr r1, _0804FD5C + ldr r6, _0804FD60 + ldrb r0, [r3] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #1 + str r0, [r1] + cmp r0, #0 + bne _0804FD36 + movs r0, #1 + str r0, [r1] +_0804FD36: + ldr r0, [r1] + rsbs r0, r0, #0 + str r0, [r1] + ldrb r0, [r3] + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r1, [r0, #0x28] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + bne _0804FD64 + str r2, [r4] + b _0804FD6A + .align 2, 0 +_0804FD50: .4byte gUnknown_2023EB8 +_0804FD54: .4byte gUnknown_2023EB0 +_0804FD58: .4byte gUnknown_2023EAF +_0804FD5C: .4byte gUnknown_2023E94 +_0804FD60: .4byte gUnknown_2023D28 +_0804FD64: + ldr r0, [r4] + adds r0, #6 + str r0, [r4] +_0804FD6A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0804FCF4 + + thumb_func_start sub_0804FD70 +sub_0804FD70: @ 0x0804FD70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r2, _0804FE10 + ldr r0, _0804FE14 + mov sl, r0 + movs r1, #0 + add r0, sp, #4 +_0804FD86: + strh r1, [r0] + subs r0, #2 + cmp r0, sp + bge _0804FD86 + movs r1, #0 + mov r8, r1 + movs r5, #0 + ldrb r1, [r2] + cmp r5, r1 + bge _0804FDDC + ldr r0, _0804FE18 + ldrb r6, [r0] + ldr r2, _0804FE1C + mov sb, r2 + lsls r4, r6, #3 + mov r2, sp + ldr r0, _0804FE14 + mov ip, r0 + adds r7, r1, #0 +_0804FDAC: + cmp r5, r6 + beq _0804FDD4 + mov r1, ip + 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, r0, #8 + orrs r3, r0 + cmp r3, #0 + beq _0804FDD4 + cmp r3, sb + beq _0804FDD4 + strh r3, [r2] + adds r2, #2 + movs r0, #1 + add r8, r0 +_0804FDD4: + adds r4, #2 + adds r5, #1 + cmp r5, r7 + blt _0804FDAC +_0804FDDC: + ldr r1, _0804FE18 + ldrb r0, [r1] + mov r2, sl + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r1, r0, #0 + adds r1, #0x98 + ldrb r3, [r1] + adds r0, #0x99 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r3, r0 + cmp r3, #0 + beq _0804FE2C + ldr r0, _0804FE1C + cmp r3, r0 + beq _0804FE2C + ldr r2, _0804FE20 + ldr r0, [r2] + ldr r1, _0804FE24 + ands r0, r1 + str r0, [r2] + ldr r4, _0804FE28 + strh r3, [r4] + b _0804FE56 + .align 2, 0 +_0804FE10: .4byte gUnknown_2023D10 +_0804FE14: .4byte gUnknown_2024140 +_0804FE18: .4byte gUnknown_2023EAF +_0804FE1C: .4byte 0x0000FFFF +_0804FE20: .4byte gUnknown_2023F24 +_0804FE24: .4byte 0xFFFFFBFF +_0804FE28: .4byte gUnknown_2023E8E +_0804FE2C: + mov r0, r8 + cmp r0, #0 + beq _0804FE9C + ldr r2, _0804FE80 + ldr r0, [r2] + ldr r1, _0804FE84 + ands r0, r1 + str r0, [r2] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + bl __modsi3 + adds r5, r0, #0 + ldr r4, _0804FE88 + lsls r0, r5, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4] +_0804FE56: + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _0804FE8C + strb r0, [r1] + ldr r5, _0804FE90 + ldr r3, _0804FE94 + ldr r2, _0804FE98 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r5] + b _0804FEBA + .align 2, 0 +_0804FE80: .4byte gUnknown_2023F24 +_0804FE84: .4byte 0xFFFFFBFF +_0804FE88: .4byte gUnknown_2023E8E +_0804FE8C: .4byte gUnknown_2023EB0 +_0804FE90: .4byte gUnknown_2023EB8 +_0804FE94: .4byte gUnknown_8286C30 +_0804FE98: .4byte gUnknown_82ED220 +_0804FE9C: + ldr r2, _0804FECC + ldr r0, _0804FED0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0804FED4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0804FEBA: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FECC: .4byte gUnknown_2024020 +_0804FED0: .4byte gUnknown_2023EAF +_0804FED4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804FD70 + + thumb_func_start sub_0804FED8 +sub_0804FED8: @ 0x0804FED8 + push {lr} + ldr r2, _0804FEF8 + ldrh r0, [r2] + movs r1, #7 + ands r1, r0 + cmp r1, #0 + beq _0804FF04 + ldr r2, _0804FEFC + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804FF00 + movs r0, #2 + strb r0, [r1, #5] + b _0804FF14 + .align 2, 0 +_0804FEF8: .4byte gUnknown_2024070 +_0804FEFC: .4byte gUnknown_2023F20 +_0804FF00: .4byte gUnknown_2023FD6 +_0804FF04: + movs r0, #1 + strh r0, [r2] + ldr r0, _0804FF20 + strb r1, [r0, #5] + ldr r0, _0804FF24 + adds r0, #0x28 + movs r1, #5 + strb r1, [r0] +_0804FF14: + ldr r1, _0804FF28 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0804FF20: .4byte gUnknown_2023FD6 +_0804FF24: .4byte gUnknown_2024074 +_0804FF28: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804FED8 + + thumb_func_start sub_0804FF2C +sub_0804FF2C: @ 0x0804FF2C + push {r4, r5, r6, lr} + ldr r6, _0804FF5C + ldrb r0, [r6] + bl sub_080A630C + ldr r4, _0804FF60 + movs r5, #1 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r1, [r1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0804FF6C + ldr r2, _0804FF64 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804FF68 + movs r0, #0 + b _0804FFE0 + .align 2, 0 +_0804FF5C: .4byte gUnknown_2023EAF +_0804FF60: .4byte gUnknown_2023F32 +_0804FF64: .4byte gUnknown_2023F20 +_0804FF68: .4byte gUnknown_2023FD6 +_0804FF6C: + ldrb r0, [r6] + bl sub_080A630C + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + movs r2, #1 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r6] + bl sub_080A630C + ldr r4, _0804FFD0 + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #5 + strb r1, [r0] + ldrb r0, [r6] + bl sub_080A630C + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r6] + strb r1, [r0, #1] + ldr r0, _0804FFD4 + ldr r0, [r0] + ands r0, r5 + cmp r0, #0 + beq _0804FFDC + movs r0, #1 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bne _0804FFDC + ldr r0, _0804FFD8 + strb r1, [r0, #5] + b _0804FFE2 + .align 2, 0 +_0804FFD0: .4byte gUnknown_2023F38 +_0804FFD4: .4byte gUnknown_2022C90 +_0804FFD8: .4byte gUnknown_2023FD6 +_0804FFDC: + ldr r1, _0804FFF0 + movs r0, #1 +_0804FFE0: + strb r0, [r1, #5] +_0804FFE2: + ldr r1, _0804FFF4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0804FFF0: .4byte gUnknown_2023FD6 +_0804FFF4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804FF2C + + thumb_func_start sub_0804FFF8 +sub_0804FFF8: @ 0x0804FFF8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r7, _08050038 + ldrb r5, [r7] + movs r0, #0x29 + ands r0, r5 + cmp r0, #0 + bne _0805002A + ldr r0, _0805003C + mov sb, r0 + ldr r1, _08050040 + mov r8, r1 + ldrb r4, [r1] + lsls r0, r4, #2 + mov r2, sb + adds r6, r0, r2 + ldr r2, [r6] + movs r0, #4 + mov ip, r0 + adds r3, r2, #0 + ands r3, r0 + cmp r3, #0 + beq _08050048 +_0805002A: + movs r0, #1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _08050044 + movs r0, #1 + strb r0, [r1, #5] + b _08050098 + .align 2, 0 +_08050038: .4byte gUnknown_2023F20 +_0805003C: .4byte gUnknown_2023F50 +_08050040: .4byte gUnknown_2023EB0 +_08050044: .4byte gUnknown_2023FD6 +_08050048: + ldr r1, _08050074 + movs r0, #0x58 + muls r0, r4, r0 + adds r1, r0, r1 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0xc + beq _08050064 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xc + bne _0805007C +_08050064: + movs r0, #1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _08050078 + movs r0, #2 + strb r0, [r1, #5] + b _08050098 + .align 2, 0 +_08050074: .4byte gUnknown_2023D28 +_08050078: .4byte gUnknown_2023FD6 +_0805007C: + ldr r0, _080500AC + ldrb r0, [r0] + orrs r2, r0 + str r2, [r6] + mov r2, r8 + ldrb r1, [r2] + lsls r1, r1, #2 + add r1, sb + ldr r0, [r1] + mov r2, ip + orrs r0, r2 + str r0, [r1] + ldr r0, _080500B0 + strb r3, [r0, #5] +_08050098: + ldr r1, _080500B4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080500AC: .4byte gUnknown_2023EAF +_080500B0: .4byte gUnknown_2023FD6 +_080500B4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0804FFF8 + + thumb_func_start sub_080500B8 +sub_080500B8: @ 0x080500B8 + push {r4, lr} + ldr r1, _080500D0 + ldr r0, [r1] + ldrb r2, [r0, #1] + adds r4, r1, #0 + cmp r2, #1 + beq _080500E8 + cmp r2, #1 + bgt _080500D4 + cmp r2, #0 + beq _080500DA + b _08050128 + .align 2, 0 +_080500D0: .4byte gUnknown_2023EB8 +_080500D4: + cmp r2, #2 + beq _08050120 + b _08050128 +_080500DA: + ldr r1, _080500E4 + ldr r0, [r1] + rsbs r0, r0, #0 + b _08050126 + .align 2, 0 +_080500E4: .4byte gUnknown_2023E94 +_080500E8: + ldr r3, _08050114 + ldr r0, [r3] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + str r0, [r3] + cmp r0, #0 + bne _080500FA + str r2, [r3] +_080500FA: + ldr r2, _08050118 + ldr r0, _0805011C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2c] + lsrs r1, r0, #1 + ldr r0, [r3] + cmp r1, r0 + bge _08050128 + str r1, [r3] + b _08050128 + .align 2, 0 +_08050114: .4byte gUnknown_2023E94 +_08050118: .4byte gUnknown_2023D28 +_0805011C: .4byte gUnknown_2023EB0 +_08050120: + ldr r1, _08050134 + ldr r0, [r1] + lsls r0, r0, #1 +_08050126: + str r0, [r1] +_08050128: + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08050134: .4byte gUnknown_2023E94 + thumb_func_end sub_080500B8 + + thumb_func_start sub_08050138 +sub_08050138: @ 0x08050138 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _08050190 + mov ip, r0 + ldr r1, [r0] + ldrb r6, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r6, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r6, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r6, r0 + ldr r5, _08050194 + ldr r2, _08050198 + ldr r0, _0805019C + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r5] + ldr r4, _080501A0 + ldr r1, _080501A4 + ldrb r0, [r2] + movs r3, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2c] + rsbs r0, r0, #0 + str r0, [r4] + ldrb r0, [r2] + adds r4, r0, #0 + muls r4, r3, r4 + 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 _080501A8 + mov r0, ip + str r6, [r0] + b _080501F8 + .align 2, 0 +_08050190: .4byte gUnknown_2023EB8 +_08050194: .4byte gUnknown_2023D08 +_08050198: .4byte gUnknown_2023EB0 +_0805019C: .4byte gUnknown_2023EAF +_080501A0: .4byte gUnknown_2023E94 +_080501A4: .4byte gUnknown_2023D28 +_080501A8: + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r4, r0 + ldr r1, [r0] + movs r0, #0xf8 + ands r1, r0 + cmp r1, #0 + beq _080501C4 + ldr r1, _080501C0 + movs r0, #1 + strb r0, [r1, #5] + b _080501C8 + .align 2, 0 +_080501C0: .4byte gUnknown_2023FD6 +_080501C4: + ldr r0, _08050200 + strb r1, [r0, #5] +_080501C8: + ldrb r0, [r5] + movs r3, #0x58 + muls r0, r3, r0 + adds r2, #0x4c + adds r0, r0, r2 + movs r1, #3 + str r1, [r0] + ldrb r0, [r7] + muls r0, r3, r0 + adds r0, r0, r2 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r7] + bl sub_0803F440 + ldr r1, _08050204 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080501F8: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08050200: .4byte gUnknown_2023FD6 +_08050204: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050138 + + thumb_func_start sub_08050208 +sub_08050208: @ 0x08050208 + push {r4, r5, lr} + ldr r5, _0805023C + ldr r4, [r5] + ldrb r3, [r4, #1] + ldrb r0, [r4, #2] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r4, #4] + lsls r0, r0, #0x18 + orrs r3, r0 + ldr r2, _08050240 + ldr r0, _08050244 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _08050248 + adds r0, r4, #5 + str r0, [r5] + b _0805024A + .align 2, 0 +_0805023C: .4byte gUnknown_2023EB8 +_08050240: .4byte gUnknown_2023F60 +_08050244: .4byte gUnknown_2023EAF +_08050248: + str r3, [r5] +_0805024A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08050208 + + thumb_func_start sub_08050250 +sub_08050250: @ 0x08050250 + ldr r1, _0805025C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_0805025C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050250 + + thumb_func_start sub_08050260 +sub_08050260: @ 0x08050260 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r0, _080502B8 + ldrb r1, [r0] + mov r8, r0 + cmp r2, r1 + bge _080502D4 + ldr r0, _080502BC + mov ip, r0 + movs r0, #0x58 + muls r0, r3, r0 + add r0, ip + adds r5, r0, #0 + adds r5, #0x20 + adds r4, r1, #0 + movs r3, #0 + ldr r6, _080502C0 + ldr r7, _080502C4 +_0805028C: + mov r0, ip + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x70 + ands r0, r1 + cmp r0, #0 + beq _080502CC + ldrb r0, [r5] + cmp r0, #0x2b + beq _080502CC + movs r3, #0 + strb r2, [r6, #0x17] + ldr r1, _080502C8 + ldrb r0, [r1] + cmp r0, #0xff + beq _080502EC + cmp r0, r2 + beq _080502E0 + movs r0, #1 + strb r0, [r7, #5] + b _080502D4 + .align 2, 0 +_080502B8: .4byte gUnknown_2023D10 +_080502BC: .4byte gUnknown_2023D28 +_080502C0: .4byte gUnknown_2024118 +_080502C4: .4byte gUnknown_2023FD6 +_080502C8: .4byte gUnknown_2023EB0 +_080502CC: + adds r3, #0x58 + adds r2, #1 + cmp r2, r4 + blt _0805028C +_080502D4: + mov r1, r8 + ldrb r1, [r1] + cmp r2, r1 + beq _080502F0 + movs r0, #1 + b _080502F2 +_080502E0: + ldr r0, _080502E8 + strb r3, [r0, #5] + b _080502D4 + .align 2, 0 +_080502E8: .4byte gUnknown_2023FD6 +_080502EC: + strb r2, [r1] + b _080502D4 +_080502F0: + movs r0, #0 +_080502F2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08050260 + + thumb_func_start sub_080502FC +sub_080502FC: @ 0x080502FC + push {r4, r5, r6, lr} + ldr r5, _08050328 + ldr r1, [r5] + ldrb r4, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r4, r0 + ldr r6, _0805032C + ldrb r0, [r6] + bl sub_08050260 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08050330 + str r4, [r5] + b _08050372 + .align 2, 0 +_08050328: .4byte gUnknown_2023EB8 +_0805032C: .4byte gUnknown_2023EB0 +_08050330: + ldr r1, _08050360 + ldrb r3, [r6] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + adds r1, r0, #0 + cmp r1, #0xf + beq _08050348 + cmp r1, #0x48 + bne _0805036C +_08050348: + ldr r2, _08050364 + strb r0, [r2] + ldr r1, _08050368 + movs r0, #2 + strb r0, [r1, #5] + str r4, [r5] + ldrb r1, [r2] + adds r0, r3, #0 + bl sub_0813114C + b _08050372 + .align 2, 0 +_08050360: .4byte gUnknown_2023D28 +_08050364: .4byte gUnknown_2023EAE +_08050368: .4byte gUnknown_2023FD6 +_0805036C: + ldr r0, [r5] + adds r0, #5 + str r0, [r5] +_08050372: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080502FC + + thumb_func_start sub_08050378 +sub_08050378: @ 0x08050378 + push {r4, r5, lr} + ldr r5, _080503A0 + ldr r4, _080503A4 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1, #9] + cmp r0, #3 + bne _080503B0 + ldr r2, _080503A8 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080503AC + movs r0, #1 + strb r0, [r1, #5] + b _080503DA + .align 2, 0 +_080503A0: .4byte gUnknown_2023F60 +_080503A4: .4byte gUnknown_2023EAF +_080503A8: .4byte gUnknown_2023F20 +_080503AC: .4byte gUnknown_2023FD6 +_080503B0: + adds r0, #1 + movs r3, #0 + strb r0, [r1, #9] + ldr r2, _080503E8 + movs r0, #0xfd + strb r0, [r2] + movs r0, #1 + strb r0, [r2, #1] + strb r0, [r2, #2] + strb r0, [r2, #3] + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #9] + strb r0, [r2, #4] + movs r0, #0xff + strb r0, [r2, #5] + ldr r0, _080503EC + strb r3, [r0, #5] +_080503DA: + ldr r1, _080503F0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080503E8: .4byte gUnknown_2022C0C +_080503EC: .4byte gUnknown_2023FD6 +_080503F0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050378 + + thumb_func_start sub_080503F4 +sub_080503F4: @ 0x080503F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r3, _0805042C + ldr r1, [r3] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r7, _08050430 + ldr r6, _08050434 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r0, [r0, #9] + cmp r0, #0 + bne _08050438 + str r2, [r3] + b _080504DA + .align 2, 0 +_0805042C: .4byte gUnknown_2023EB8 +_08050430: .4byte gUnknown_2023F60 +_08050434: .4byte gUnknown_2023EAF +_08050438: + ldr r0, _080504E8 + ldrb r0, [r0, #6] + cmp r0, #1 + beq _080504C0 + ldr r0, _080504EC + mov r8, r0 + ldr r4, _080504F0 + ldr r5, _080504F4 + ldrb r0, [r5] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + ldrb r0, [r6] + movs r4, #0x58 + muls r0, r4, r0 + ldr r2, _080504F8 + adds r0, r0, r2 + ldrb r1, [r5] + muls r1, r4, r1 + adds r1, r1, r2 + ldr r2, _080504FC + ldrh r2, [r2] + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + ldrb r4, [r6] + str r4, [sp, #8] + ldrb r4, [r5] + str r4, [sp, #0xc] + bl sub_080690BC + ldrb r2, [r6] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r1, [r1, #9] + adds r3, r0, #0 + muls r3, r1, r3 + mov r1, r8 + str r3, [r1] + ldr r2, _08050500 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r0, [r0, #9] + strb r0, [r2, #0x18] + ldr r1, _08050504 + ldrb r0, [r6] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _080504C0 + lsls r0, r3, #4 + subs r0, r0, r3 + movs r1, #0xa + bl __divsi3 + mov r1, r8 + str r0, [r1] +_080504C0: + ldr r2, _08050508 + ldr r0, _0805050C + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + ldr r1, _08050510 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080504DA: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080504E8: .4byte gUnknown_2023FD6 +_080504EC: .4byte gUnknown_2023E94 +_080504F0: .4byte gUnknown_2023F32 +_080504F4: .4byte gUnknown_2023EB0 +_080504F8: .4byte gUnknown_2023D28 +_080504FC: .4byte gUnknown_2023E8E +_08050500: .4byte gUnknown_2024118 +_08050504: .4byte gUnknown_2023FE0 +_08050508: .4byte gUnknown_2023F60 +_0805050C: .4byte gUnknown_2023EAF +_08050510: .4byte gUnknown_2023EB8 + thumb_func_end sub_080503F4 + + thumb_func_start sub_08050514 +sub_08050514: @ 0x08050514 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r7, _08050554 + ldr r1, [r7] + ldrb r2, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r0, _08050558 + mov r8, r0 + ldr r6, _0805055C + ldrb r3, [r6] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + mov r1, r8 + adds r4, r0, r1 + ldrb r1, [r4, #9] + cmp r1, #0 + bne _08050564 + str r2, [r7] + ldr r0, _08050560 + strb r1, [r0, #5] + b _080505E0 + .align 2, 0 +_08050554: .4byte gUnknown_2023EB8 +_08050558: .4byte gUnknown_2023F60 +_0805055C: .4byte gUnknown_2023EAF +_08050560: .4byte gUnknown_2023FD6 +_08050564: + ldr r1, _08050588 + movs r0, #0x58 + muls r0, r3, r0 + adds r1, r0, r1 + ldrh r0, [r1, #0x2c] + ldrh r3, [r1, #0x28] + cmp r0, r3 + bne _08050594 + movs r0, #0 + strb r0, [r4, #9] + str r2, [r7] + ldr r1, _0805058C + ldrb r0, [r6] + strb r0, [r1] + ldr r1, _08050590 + movs r0, #1 + strb r0, [r1, #5] + b _080505E0 + .align 2, 0 +_08050588: .4byte gUnknown_2023D28 +_0805058C: .4byte gUnknown_2023EB0 +_08050590: .4byte gUnknown_2023FD6 +_08050594: + ldr r5, _080505EC + ldrh r0, [r1, #0x2c] + ldrb r1, [r4, #9] + movs r2, #3 + subs r2, r2, r1 + movs r4, #1 + adds r1, r4, #0 + lsls r1, r2 + bl __divsi3 + str r0, [r5] + cmp r0, #0 + bne _080505B0 + str r4, [r5] +_080505B0: + ldr r0, [r5] + rsbs r0, r0, #0 + str r0, [r5] + ldr r3, _080505F0 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #9] + movs r2, #0 + strb r0, [r3, #0x18] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + strb r2, [r0, #9] + ldr r0, [r7] + adds r0, #5 + str r0, [r7] + ldr r1, _080505F4 + ldrb r0, [r6] + strb r0, [r1] +_080505E0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080505EC: .4byte gUnknown_2023E94 +_080505F0: .4byte gUnknown_2024118 +_080505F4: .4byte gUnknown_2023EB0 + thumb_func_end sub_08050514 + + thumb_func_start sub_080505F8 +sub_080505F8: @ 0x080505F8 + push {lr} + ldr r2, _08050620 + ldr r0, _08050624 + ldr r0, [r0] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + rsbs r0, r0, #0 + str r0, [r2] + cmp r0, #0 + bne _08050614 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r2] +_08050614: + ldr r1, _08050628 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08050620: .4byte gUnknown_2023E94 +_08050624: .4byte gUnknown_2023E98 +_08050628: .4byte gUnknown_2023EB8 + thumb_func_end sub_080505F8 + + thumb_func_start sub_0805062C +sub_0805062C: @ 0x0805062C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r0, #0 + mov sb, r0 + mov sl, r0 + movs r0, #0x40 + ands r0, r5 + cmp r0, #0 + beq _08050660 + ldr r0, _08050658 + ldr r1, _0805065C + b _08050664 + .align 2, 0 +_08050658: .4byte gUnknown_2023D08 +_0805065C: .4byte gUnknown_2023EAF +_08050660: + ldr r0, _08050704 + ldr r1, _08050708 +_08050664: + ldrb r1, [r1] + strb r1, [r0] + movs r0, #0xbf + ands r5, r0 + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _0805067E + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0805067E: + movs r0, #0x7f + ands r5, r0 + movs r0, #0x20 + ands r0, r5 + cmp r0, #0 + beq _08050694 + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_08050694: + movs r0, #0xdf + ands r5, r0 + ldr r1, _0805070C + movs r4, #0 + movs r2, #0xfd + strb r2, [r1] + movs r0, #5 + strb r0, [r1, #1] + strb r7, [r1, #2] + movs r3, #1 + rsbs r3, r3, #0 + mov ip, r3 + movs r0, #0xff + strb r0, [r1, #3] + lsls r0, r6, #0x18 + cmp r0, #0 + blt _080506B8 + b _0805099C +_080506B8: + ldr r4, _08050710 + ldr r1, _08050704 + ldrb r0, [r1] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08050758 + mov r2, sb + cmp r2, #0 + bne _08050758 + ldr r0, _08050714 + ldrh r0, [r0] + cmp r0, #0xae + beq _08050788 + cmp r5, #1 + bne _08050778 + ldr r4, _08050718 + ldr r3, _08050704 + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08050720 + ldr r0, _0805071C + mov r4, r8 + str r4, [r0] + b _08050778 + .align 2, 0 +_08050704: .4byte gUnknown_2023D08 +_08050708: .4byte gUnknown_2023EB0 +_0805070C: .4byte gUnknown_2022C0C +_08050710: .4byte gUnknown_2023F38 +_08050714: .4byte gUnknown_2023E8E +_08050718: .4byte gUnknown_2024020 +_0805071C: .4byte gUnknown_2023EB8 +_08050720: + mov r0, r8 + bl sub_0803F718 + ldr r1, _08050748 + ldr r6, _0805074C + ldrb r0, [r6] + strb r0, [r1, #0x17] + ldr r1, _08050750 + ldr r0, _08050754 + str r0, [r1] + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _08050778 + .align 2, 0 +_08050748: .4byte gUnknown_2024118 +_0805074C: .4byte gUnknown_2023D08 +_08050750: .4byte gUnknown_2023EB8 +_08050754: .4byte gUnknown_828938B +_08050758: + ldr r0, _0805077C + ldrh r0, [r0] + cmp r0, #0xae + beq _08050788 + mov r0, sl + cmp r0, #1 + beq _08050788 + movs r0, #0 + bl sub_080460EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08050788 + ldr r1, _08050780 + ldr r0, _08050784 + str r0, [r1] +_08050778: + movs r0, #1 + b _08050A90 + .align 2, 0 +_0805077C: .4byte gUnknown_2023E8E +_08050780: .4byte gUnknown_2023EB8 +_08050784: .4byte gUnknown_82884A4 +_08050788: + ldr r2, _080507D0 + ldr r1, _080507D4 + ldrb r3, [r1] + movs r4, #0x58 + adds r0, r3, #0 + muls r0, r4, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + mov sl, r2 + cmp r0, #0x1d + beq _080507A4 + cmp r0, #0x49 + bne _0805083C +_080507A4: + mov r0, sb + cmp r0, #0 + bne _0805083C + ldr r0, _080507D8 + ldrh r0, [r0] + cmp r0, #0xae + beq _0805083C + cmp r5, #1 + bne _08050778 + ldr r4, _080507DC + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080507E4 + ldr r0, _080507E0 + mov r1, r8 + str r1, [r0] + b _08050778 + .align 2, 0 +_080507D0: .4byte gUnknown_2023D28 +_080507D4: .4byte gUnknown_2023D08 +_080507D8: .4byte gUnknown_2023E8E +_080507DC: .4byte gUnknown_2024020 +_080507E0: .4byte gUnknown_2023EB8 +_080507E4: + mov r0, r8 + bl sub_0803F718 + ldr r1, _08050828 + ldr r2, _0805082C + ldrb r0, [r2] + strb r0, [r1, #0x17] + ldr r1, _08050830 + ldr r0, _08050834 + str r0, [r1] + ldr r1, _08050838 + ldrb r0, [r2] + movs r3, #0x58 + muls r0, r3, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + ldrb r1, [r1] + bl sub_0813114C + ldr r6, _0805082C + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _08050778 + .align 2, 0 +_08050828: .4byte gUnknown_2024118 +_0805082C: .4byte gUnknown_2023D08 +_08050830: .4byte gUnknown_2023EB8 +_08050834: .4byte gUnknown_8289B4F +_08050838: .4byte gUnknown_2023EAE +_0805083C: + ldr r1, _08050888 + ldrb r0, [r1] + movs r4, #0x58 + muls r0, r4, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x33 + bne _0805089C + mov r2, sb + cmp r2, #0 + bne _0805089C + cmp r7, #6 + bne _0805089C + cmp r5, #1 + bne _08050778 + mov r0, r8 + bl sub_0803F718 + ldr r1, _0805088C + ldr r3, _08050888 + ldrb r0, [r3] + strb r0, [r1, #0x17] + ldr r1, _08050890 + ldr r0, _08050894 + str r0, [r1] + ldr r1, _08050898 + ldrb r0, [r3] + muls r0, r4, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r3] + ldrb r1, [r1] + bl sub_0813114C + b _08050778 + .align 2, 0 +_08050888: .4byte gUnknown_2023D08 +_0805088C: .4byte gUnknown_2024118 +_08050890: .4byte gUnknown_2023EB8 +_08050894: .4byte gUnknown_8289BB7 +_08050898: .4byte gUnknown_2023EAE +_0805089C: + ldr r4, _080508EC + ldrb r0, [r4] + movs r4, #0x58 + muls r0, r4, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x34 + bne _08050900 + mov r0, sb + cmp r0, #0 + bne _08050900 + cmp r7, #1 + bne _08050900 + cmp r5, #1 + beq _080508BE + b _08050778 +_080508BE: + mov r0, r8 + bl sub_0803F718 + ldr r1, _080508F0 + ldr r2, _080508EC + ldrb r0, [r2] + strb r0, [r1, #0x17] + ldr r1, _080508F4 + ldr r0, _080508F8 + str r0, [r1] + ldr r1, _080508FC + ldrb r0, [r2] + muls r0, r4, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + ldrb r1, [r1] + bl sub_0813114C + b _08050778 + .align 2, 0 +_080508EC: .4byte gUnknown_2023D08 +_080508F0: .4byte gUnknown_2024118 +_080508F4: .4byte gUnknown_2023EB8 +_080508F8: .4byte gUnknown_8289BB7 +_080508FC: .4byte gUnknown_2023EAE +_08050900: + ldr r3, _0805098C + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + add r0, sl + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x13 + bne _08050918 + cmp r5, #0 + bne _08050918 + b _08050778 +_08050918: + lsls r0, r6, #0x18 + asrs r0, r0, #0x1c + movs r1, #7 + ands r0, r1 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + ldr r3, _08050990 + movs r4, #0 + movs r1, #0xfd + strb r1, [r3] + movs r2, #1 + lsrs r6, r0, #0x18 + asrs r0, r0, #0x18 + subs r1, #0xff + cmp r0, r1 + bne _08050942 + strb r4, [r3, #1] + movs r0, #0xd3 + strb r0, [r3, #2] + strb r4, [r3, #3] + movs r2, #4 +_08050942: + adds r0, r2, r3 + strb r4, [r0] + adds r2, #1 + adds r1, r2, r3 + movs r0, #0xd4 + strb r0, [r1] + adds r2, #1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, #1 + adds r1, r2, r3 + movs r0, #0xff + strb r0, [r1] + ldr r4, _0805098C + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r7, r0 + mov r1, sl + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080509F2 + movs r1, #0 + ldr r0, _08050994 + ldrb r0, [r0] + ldr r3, _08050998 + mov r8, r3 + cmp r0, r2 + bne _08050986 + movs r1, #1 +_08050986: + mov r4, r8 + strb r1, [r4, #5] + b _08050A20 + .align 2, 0 +_0805098C: .4byte gUnknown_2023D08 +_08050990: .4byte gUnknown_2022C1C +_08050994: .4byte gUnknown_2023EB0 +_08050998: .4byte gUnknown_2023FD6 +_0805099C: + asrs r6, r0, #0x1c + movs r0, #7 + ands r6, r0 + ldr r3, _080509FC + strb r2, [r3] + movs r2, #1 + cmp r6, #2 + bne _080509B6 + strb r4, [r3, #1] + movs r0, #0xd1 + strb r0, [r3, #2] + strb r4, [r3, #3] + movs r2, #4 +_080509B6: + adds r0, r2, r3 + strb r4, [r0] + adds r2, #1 + adds r1, r2, r3 + movs r0, #0xd2 + strb r0, [r1] + adds r2, #1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, #1 + adds r1, r2, r3 + ldrb r0, [r1] + mov r2, ip + orrs r0, r2 + strb r0, [r1] + ldr r2, _08050A00 + ldr r4, _08050A04 + ldrb r3, [r4] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r7, r0 + adds r1, r2, #0 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov sl, r2 + cmp r0, #0xc + bne _08050A0C +_080509F2: + ldr r1, _08050A08 + movs r0, #2 + strb r0, [r1, #5] + mov r8, r1 + b _08050A20 + .align 2, 0 +_080509FC: .4byte gUnknown_2022C1C +_08050A00: .4byte gUnknown_2023D28 +_08050A04: .4byte gUnknown_2023D08 +_08050A08: .4byte gUnknown_2023FD6 +_08050A0C: + movs r1, #0 + ldr r0, _08050AA0 + ldrb r0, [r0] + ldr r2, _08050AA4 + mov r8, r2 + cmp r0, r3 + bne _08050A1C + movs r1, #1 +_08050A1C: + mov r3, r8 + strb r1, [r3, #5] +_08050A20: + ldr r2, _08050AA8 + ldrb r0, [r2] + movs r4, #0x58 + adds r1, r0, #0 + muls r1, r4, r1 + adds r1, r7, r1 + mov r3, sl + adds r3, #0x18 + adds r1, r1, r3 + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + ldrb r6, [r1] + adds r0, r0, r6 + strb r0, [r1] + ldrb r0, [r2] + muls r0, r4, r0 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _08050A50 + movs r0, #0 + strb r0, [r1] +_08050A50: + ldr r1, _08050AA8 + ldrb r0, [r1] + muls r0, r4, r0 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0xc + ble _08050A66 + movs r0, #0xc + strb r0, [r1] +_08050A66: + mov r2, r8 + ldrb r0, [r2, #5] + cmp r0, #2 + bne _08050A8E + movs r3, #1 + ands r3, r5 + cmp r3, #0 + beq _08050A80 + ldr r0, _08050AAC + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_08050A80: + mov r4, r8 + ldrb r0, [r4, #5] + cmp r0, #2 + bne _08050A8E + cmp r3, #0 + bne _08050A8E + b _08050778 +_08050A8E: + movs r0, #0 +_08050A90: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08050AA0: .4byte gUnknown_2023EB0 +_08050AA4: .4byte gUnknown_2023FD6 +_08050AA8: .4byte gUnknown_2023D08 +_08050AAC: .4byte gUnknown_2023F20 + thumb_func_end sub_0805062C + + thumb_func_start sub_08050AB0 +sub_08050AB0: @ 0x08050AB0 + push {r4, r5, lr} + ldr r5, _08050AF4 + ldr r2, [r5] + ldrb r3, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r3, r0 + ldr r0, _08050AF8 + ldrb r4, [r0, #0x1a] + movs r0, #0xf0 + ands r0, r4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xf + ands r1, r4 + ldrb r2, [r2, #1] + bl sub_0805062C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08050AEC + ldr r0, [r5] + adds r0, #6 + str r0, [r5] +_08050AEC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08050AF4: .4byte gUnknown_2023EB8 +_08050AF8: .4byte gUnknown_2024118 + thumb_func_end sub_08050AB0 + + thumb_func_start sub_08050AFC +sub_08050AFC: @ 0x08050AFC + push {r4, r5, r6, r7, lr} + movs r2, #0 + ldr r0, _08050B44 + ldrb r1, [r0] + ldr r0, _08050B48 + mov ip, r0 + cmp r2, r1 + bge _08050B34 + ldr r0, _08050B4C + movs r4, #6 + adds r5, r1, #0 + movs r7, #0x58 + adds r6, r0, #0 + adds r6, #0x18 +_08050B18: + adds r3, r2, #1 + movs r1, #7 + adds r0, r2, #0 + muls r0, r7, r0 + adds r0, r0, r6 + adds r0, #7 +_08050B24: + strb r4, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _08050B24 + adds r2, r3, #0 + cmp r2, r5 + blt _08050B18 +_08050B34: + mov r1, ip + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08050B44: .4byte gUnknown_2023D10 +_08050B48: .4byte gUnknown_2023EB8 +_08050B4C: .4byte gUnknown_2023D28 + thumb_func_end sub_08050AFC + + thumb_func_start sub_08050B50 +sub_08050B50: @ 0x08050B50 + push {r4, r5, lr} + ldr r4, _08050BA8 + ldr r3, _08050BAC + ldrb r0, [r3] + movs r5, #0x58 + adds r2, r0, #0 + muls r2, r5, r2 + adds r4, #0x50 + adds r2, r2, r4 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r2] + ldr r1, _08050BB0 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _08050BB4 + ldrh r1, [r1] + movs r2, #0 + strh r1, [r0] + ldr r1, _08050BB8 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + str r2, [r0] + ldrb r0, [r3] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r4 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #2 + orrs r0, r2 + str r0, [r1] + ldr r1, _08050BBC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08050BA8: .4byte gUnknown_2023D28 +_08050BAC: .4byte gUnknown_2023EAF +_08050BB0: .4byte gUnknown_2023F0C +_08050BB4: .4byte gUnknown_2023E8E +_08050BB8: .4byte gUnknown_2023E9C +_08050BBC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050B50 + + thumb_func_start sub_08050BC0 +sub_08050BC0: @ 0x08050BC0 + push {lr} + ldr r1, _08050BF0 + ldr r0, _08050BF4 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #4 + ands r0, r1 + cmp r0, #0 + bne _08050BE2 + ldr r1, _08050BF8 + movs r0, #0x75 + strb r0, [r1, #3] +_08050BE2: + ldr r1, _08050BFC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08050BF0: .4byte gUnknown_2023D28 +_08050BF4: .4byte gUnknown_2023EAF +_08050BF8: .4byte gUnknown_2023FD6 +_08050BFC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050BC0 + + thumb_func_start sub_08050C00 +sub_08050C00: @ 0x08050C00 + push {r4, r5, lr} + ldr r0, _08050C14 + ldr r0, [r0] + ldrb r1, [r0, #1] + cmp r1, #0 + beq _08050C1C + ldr r0, _08050C18 + strb r1, [r0] + b _08050C36 + .align 2, 0 +_08050C14: .4byte gUnknown_2023EB8 +_08050C18: .4byte gUnknown_2023EB6 +_08050C1C: + ldr r4, _08050C44 + bl sub_0806F050 + movs r5, #3 + ands r0, r5 + strb r0, [r4] + cmp r0, #1 + bls _08050C32 + bl sub_0806F050 + ands r0, r5 +_08050C32: + adds r0, #2 + strb r0, [r4] +_08050C36: + ldr r1, _08050C48 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08050C44: .4byte gUnknown_2023EB6 +_08050C48: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050C00 + + thumb_func_start sub_08050C4C +sub_08050C4C: @ 0x08050C4C + ldr r1, _08050C6C + movs r2, #0 + movs r0, #0xfd + strb r0, [r1, #8] + movs r0, #1 + strb r0, [r1, #9] + strb r0, [r1, #0xa] + strb r0, [r1, #0xb] + strb r2, [r1, #0xc] + movs r0, #0xff + strb r0, [r1, #0xd] + ldr r1, _08050C70 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08050C6C: .4byte gUnknown_2024118 +_08050C70: .4byte gUnknown_2023EB8 + thumb_func_end sub_08050C4C + + thumb_func_start sub_08050C74 +sub_08050C74: @ 0x08050C74 + push {r4, r5, r6, r7, lr} + ldr r6, _08050CA8 + ldr r7, _08050CAC + ldrb r0, [r7] + movs r5, #0x58 + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r6 + adds r1, #0x2a + ldr r4, _08050CB0 + ldrb r3, [r4] + adds r0, r3, #0 + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + blo _08050CBC + ldr r0, _08050CB4 + ldr r1, [r0] + adds r1, r3, r1 + adds r1, #0x58 + ldr r2, _08050CB8 + lsls r0, r3, #1 + b _08050D18 + .align 2, 0 +_08050CA8: .4byte gUnknown_2023D28 +_08050CAC: .4byte gUnknown_2023EAF +_08050CB0: .4byte gUnknown_2023EB0 +_08050CB4: .4byte gUnknown_2024140 +_08050CB8: .4byte gUnknown_2023D12 +_08050CBC: + bl sub_0806F050 + movs r3, #0xff + ands r3, r0 + ldrb r0, [r7] + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r2, [r0] + ldrb r4, [r4] + adds r0, r4, #0 + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r1, [r0] + adds r2, r2, r1 + adds r0, r3, #0 + muls r0, r2, r0 + asrs r0, r0, #8 + adds r0, #1 + lsrs r1, r1, #2 + cmp r0, r1 + bhi _08050D0C + ldr r3, _08050D08 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + movs r0, #0 + b _08050D26 + .align 2, 0 +_08050D08: .4byte gUnknown_2023EB8 +_08050D0C: + ldr r0, _08050D2C + ldr r1, [r0] + adds r1, r4, r1 + adds r1, #0x58 + ldr r2, _08050D30 + lsls r0, r4, #1 +_08050D18: + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r1, _08050D34 + ldr r0, _08050D38 + str r0, [r1] + movs r0, #1 +_08050D26: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08050D2C: .4byte gUnknown_2024140 +_08050D30: .4byte gUnknown_2023D12 +_08050D34: .4byte gUnknown_2023EB8 +_08050D38: .4byte gUnknown_8289360 + thumb_func_end sub_08050C74 + + thumb_func_start sub_08050D3C +sub_08050D3C: @ 0x08050D3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r0, #0 + str r0, [sp, #4] + ldr r5, _08050DA8 + ldr r0, [r5] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _08050D5A + b _08051020 +_08050D5A: + ldr r4, _08050DAC + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08050DB0 + str r1, [sp] + cmp r0, #0 + bne _08050D70 + ldr r0, _08050DB4 + str r0, [sp] +_08050D70: + ldr r2, [r5] + movs r1, #0x81 + lsls r1, r1, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + beq _08050D92 + ldr r1, _08050DB8 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + beq _08050D92 + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r2 + cmp r0, #0 + beq _08050DD8 +_08050D92: + ldr r2, _08050DAC + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + adds r1, r2, #0 + cmp r0, #0 + beq _08050DBC + movs r0, #3 + mov sb, r0 + movs r0, #6 + b _08050DC2 + .align 2, 0 +_08050DA8: .4byte gUnknown_2022C90 +_08050DAC: .4byte gUnknown_2023EB0 +_08050DB0: .4byte gUnknown_20243E8 +_08050DB4: .4byte gUnknown_2024190 +_08050DB8: .4byte gUnknown_2000100 +_08050DBC: + movs r0, #0 + mov sb, r0 + movs r0, #3 +_08050DC2: + mov r8, r0 + movs r0, #3 + mov sl, r0 + movs r0, #1 + str r0, [sp, #8] + ldr r2, _08050DD4 + ldrb r1, [r1] + b _08050E9E + .align 2, 0 +_08050DD4: .4byte gUnknown_2023D12 +_08050DD8: + movs r0, #0x42 + ands r0, r2 + cmp r0, #0x42 + beq _08050DEA + ldr r1, _08050E08 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + bne _08050E2C +_08050DEA: + ldrb r0, [r4] + bl sub_0806D300 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0806D2C8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _08050E0C + movs r1, #3 + mov sb, r1 + movs r0, #6 + b _08050E12 + .align 2, 0 +_08050E08: .4byte gUnknown_2000040 +_08050E0C: + movs r1, #0 + mov sb, r1 + movs r0, #3 +_08050E12: + mov r8, r0 + movs r1, #3 + mov sl, r1 + movs r0, #1 + str r0, [sp, #8] + ldr r2, _08050E24 + ldr r0, _08050E28 + ldrb r1, [r0] + b _08050E9E + .align 2, 0 +_08050E24: .4byte gUnknown_2023D12 +_08050E28: .4byte gUnknown_2023EB0 +_08050E2C: + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _08050E84 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08050E50 + movs r1, #0 + mov sb, r1 + movs r0, #6 + mov r8, r0 + mov sl, r0 + movs r1, #2 + b _08050E70 +_08050E50: + ldrb r1, [r4] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08050E62 + movs r0, #3 + mov sb, r0 + movs r1, #6 + b _08050E68 +_08050E62: + movs r0, #0 + mov sb, r0 + movs r1, #3 +_08050E68: + mov r8, r1 + movs r0, #3 + mov sl, r0 + movs r1, #1 +_08050E70: + str r1, [sp, #8] + ldr r2, _08050E7C + ldr r0, _08050E80 + ldrb r1, [r0] + b _08050E9E + .align 2, 0 +_08050E7C: .4byte gUnknown_2023D12 +_08050E80: .4byte gUnknown_2023EB0 +_08050E84: + movs r0, #1 + ands r2, r0 + cmp r2, #0 + beq _08050EB4 + movs r0, #0 + mov sb, r0 + movs r1, #6 + mov r8, r1 + mov sl, r1 + movs r0, #2 + str r0, [sp, #8] + ldr r2, _08050EB0 + ldrb r1, [r4] +_08050E9E: + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r7, [r0] + movs r0, #2 + eors r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r5, [r1] + b _08050ECE + .align 2, 0 +_08050EB0: .4byte gUnknown_2023D12 +_08050EB4: + movs r1, #0 + mov sb, r1 + movs r0, #6 + mov r8, r0 + mov sl, r0 + movs r1, #1 + str r1, [sp, #8] + ldr r1, _08050F30 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r5, [r0] + adds r7, r5, #0 +_08050ECE: + mov r6, sb + cmp r6, r8 + bge _08050F0C +_08050ED4: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, [sp] + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _08050F06 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _08050F06 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08050F06 + ldr r0, [sp, #4] + adds r0, #1 + str r0, [sp, #4] +_08050F06: + adds r6, #1 + cmp r6, r8 + blt _08050ED4 +_08050F0C: + ldr r1, [sp, #4] + ldr r0, [sp, #8] + cmp r1, r0 + bgt _08050F38 + ldr r3, _08050F34 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08051024 + .align 2, 0 +_08050F30: .4byte gUnknown_2023D12 +_08050F34: .4byte gUnknown_2023EB8 +_08050F38: + bl sub_08050C74 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08050F88 +_08050F42: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + bl __modsi3 + adds r6, r0, #0 + add r6, sb + cmp r6, r7 + beq _08050F42 + cmp r6, r5 + beq _08050F42 + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, [sp] + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _08050F42 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #1 + beq _08050F42 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08050F42 +_08050F88: + ldr r4, _0805100C + ldrb r0, [r4] + ldr r1, _08051010 + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x5c + strb r6, [r0] + bl sub_081B0F20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08050FA6 + ldrb r0, [r4] + bl sub_0803B9E4 +_08050FA6: + ldr r0, _08051014 + ldr r2, [r0] + movs r1, #0x81 + lsls r1, r1, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + beq _08050FD0 + movs r0, #0x42 + ands r0, r2 + cmp r0, #0x42 + beq _08050FD0 + ldr r1, _08051018 + adds r0, r2, #0 + ands r0, r1 + cmp r0, r1 + beq _08050FD0 + ldr r0, _0805101C + ands r2, r0 + cmp r2, r0 + bne _08050FEE +_08050FD0: + ldr r5, _0805100C + ldrb r0, [r5] + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B8B20 + ldrb r1, [r5] + movs r0, #2 + eors r0, r1 + adds r1, r4, #0 + movs r2, #1 + bl sub_081B8B20 +_08050FEE: + ldr r0, _08051014 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08051024 + ldr r0, _0805100C + ldrb r0, [r0] + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + bl sub_08056DEC + b _08051024 + .align 2, 0 +_0805100C: .4byte gUnknown_2023EB0 +_08051010: .4byte gUnknown_2024140 +_08051014: .4byte gUnknown_2022C90 +_08051018: .4byte gUnknown_2000100 +_0805101C: .4byte gUnknown_2000040 +_08051020: + bl sub_08050C74 +_08051024: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08050D3C + + thumb_func_start sub_08051034 +sub_08051034: @ 0x08051034 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r6, #0 + ldr r2, _080510C8 + ldr r3, _080510CC + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r2, #0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + mov r8, r2 + cmp r0, #0 + beq _08051076 + movs r5, #0x58 + adds r2, r1, #0 +_0805105C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bhi _08051076 + lsls r1, r6, #1 + ldrb r0, [r3] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + cmp r0, #0 + bne _0805105C +_08051076: + movs r3, #0 + cmp r3, r6 + bhs _080510F8 + ldr r0, _080510D0 + mov sl, r0 + ldr r5, _080510C8 + mov ip, r5 + ldr r7, _080510CC + ldrb r0, [r7] + movs r4, #0x58 + adds r5, r0, #0 + muls r5, r4, r5 + movs r0, #0xc + add r0, ip + mov sb, r0 +_08051094: + lsls r0, r3, #1 + adds r0, r0, r5 + add r0, sb + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrb r2, [r0, #2] + cmp r2, #9 + bne _080510D6 + mov r0, r8 + adds r1, r5, r0 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #7 + beq _080510C2 + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #7 + bne _080510D4 +_080510C2: + movs r2, #7 + b _080510D6 + .align 2, 0 +_080510C8: .4byte gUnknown_2023D28 +_080510CC: .4byte gUnknown_2023EAF +_080510D0: .4byte gUnknown_82ED220 +_080510D4: + movs r2, #0 +_080510D6: + ldrb r0, [r7] + muls r0, r4, r0 + add r0, ip + adds r1, r0, #0 + adds r1, #0x21 + ldrb r1, [r1] + cmp r2, r1 + beq _080510EE + adds r0, #0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _080510F8 +_080510EE: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r6 + blo _08051094 +_080510F8: + cmp r3, r6 + bne _0805111C + ldr r3, _08051118 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _080511C0 + .align 2, 0 +_08051118: .4byte gUnknown_2023EB8 +_0805111C: + movs r7, #3 + ldr r5, _08051174 + mov sb, r5 +_08051122: + bl sub_0806F050 + adds r3, r0, #0 + ands r3, r7 + cmp r3, r6 + bhs _08051122 + ldr r4, _08051178 + lsls r1, r3, #1 + ldr r3, _0805117C + ldrb r2, [r3] + movs r0, #0x58 + adds r5, r2, #0 + muls r5, r0, r5 + adds r1, r1, r5 + adds r0, r4, #0 + adds r0, #0xc + adds r1, r1, r0 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + ldrb r2, [r0, #2] + mov r8, r4 + adds r4, r3, #0 + cmp r2, #9 + bne _08051182 + mov r0, r8 + adds r2, r5, r0 + adds r0, r2, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #7 + beq _08051170 + adds r0, r2, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #7 + bne _08051180 +_08051170: + movs r2, #7 + b _08051182 + .align 2, 0 +_08051174: .4byte gUnknown_82ED220 +_08051178: .4byte gUnknown_2023D28 +_0805117C: .4byte gUnknown_2023EAF +_08051180: + movs r2, #0 +_08051182: + ldrb r0, [r4] + movs r3, #0x58 + muls r0, r3, r0 + add r0, r8 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r5, [r1] + cmp r2, r5 + beq _08051122 + adds r0, #0x22 + ldrb r0, [r0] + cmp r2, r0 + beq _08051122 + strb r2, [r1] + ldrb r0, [r4] + muls r0, r3, r0 + add r0, r8 + adds r0, #0x22 + strb r2, [r0] + ldr r1, _080511D0 + movs r0, #0xfd + strb r0, [r1] + movs r0, #3 + strb r0, [r1, #1] + strb r2, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r1, _080511D4 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080511C0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080511D0: .4byte gUnknown_2022C0C +_080511D4: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051034 + + thumb_func_start sub_080511D8 +sub_080511D8: @ 0x080511D8 + push {r4, lr} + ldr r0, _08051240 + ldr r0, [r0] + ldr r1, _08051244 + ands r0, r1 + cmp r0, #0 + bne _08051260 + ldr r1, _08051248 + ldrh r0, [r1] + cmp r0, #0 + beq _08051260 + adds r1, r0, #0 + ldr r0, _0805124C + ldr r0, [r0] + adds r0, #0x4a + ldrb r0, [r0] + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _08051250 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_080E4948 + ldr r1, _08051254 + movs r0, #0xfd + strb r0, [r1] + movs r0, #1 + strb r0, [r1, #1] + movs r0, #2 + strb r0, [r1, #2] + movs r0, #5 + strb r0, [r1, #3] + strb r4, [r1, #4] + movs r0, #0xff + lsls r0, r0, #8 + ands r4, r0 + lsrs r4, r4, #8 + strb r4, [r1, #5] + movs r0, #0xff + strb r0, [r1, #6] + ldr r4, _08051258 + ldr r0, [r4] + adds r0, #1 + bl sub_0803F718 + ldr r0, _0805125C + str r0, [r4] + b _08051268 + .align 2, 0 +_08051240: .4byte gUnknown_2022C90 +_08051244: .4byte gUnknown_2000002 +_08051248: .4byte gUnknown_2023FD2 +_0805124C: .4byte gUnknown_2024140 +_08051250: .4byte gUnknown_3005AEC +_08051254: .4byte gUnknown_2022C0C +_08051258: .4byte gUnknown_2023EB8 +_0805125C: .4byte gUnknown_828988F +_08051260: + ldr r1, _08051270 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_08051268: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08051270: .4byte gUnknown_2023EB8 + thumb_func_end sub_080511D8 + + thumb_func_start sub_08051274 +sub_08051274: @ 0x08051274 + push {r4, r5, r6, lr} + ldr r5, _080512A4 + ldrb r0, [r5] + bl sub_080A630C + ldr r4, _080512A8 + movs r6, #1 + adds r1, r6, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r1, [r1] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080512B4 + ldr r2, _080512AC + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080512B0 + movs r0, #0 + b _08051328 + .align 2, 0 +_080512A4: .4byte gUnknown_2023EAF +_080512A8: .4byte gUnknown_2023F32 +_080512AC: .4byte gUnknown_2023F20 +_080512B0: .4byte gUnknown_2023FD6 +_080512B4: + ldrb r0, [r5] + bl sub_080A630C + adds r1, r6, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + movs r2, #2 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r5] + bl sub_080A630C + ldr r4, _08051318 + adds r1, r6, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #5 + strb r1, [r0, #2] + ldrb r0, [r5] + bl sub_080A630C + adds r1, r6, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r5] + strb r1, [r0, #3] + ldr r0, _0805131C + ldr r0, [r0] + ands r0, r6 + cmp r0, #0 + beq _08051324 + movs r0, #1 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08051324 + ldr r1, _08051320 + movs r0, #4 + b _08051328 + .align 2, 0 +_08051318: .4byte gUnknown_2023F38 +_0805131C: .4byte gUnknown_2022C90 +_08051320: .4byte gUnknown_2023FD6 +_08051324: + ldr r1, _08051338 + movs r0, #3 +_08051328: + strb r0, [r1, #5] + ldr r1, _0805133C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08051338: .4byte gUnknown_2023FD6 +_0805133C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051274 + + thumb_func_start sub_08051340 +sub_08051340: @ 0x08051340 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r7, _0805136C + ldr r6, _08051370 + ldrb r2, [r6] + movs r5, #0x58 + adds r0, r2, #0 + muls r0, r5, r0 + adds r1, r0, r7 + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _08051378 + ldr r1, _08051374 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #7] + ldrb r6, [r0, #0x1a] + b _08051392 + .align 2, 0 +_0805136C: .4byte gUnknown_2023D28 +_08051370: .4byte gUnknown_2023EB0 +_08051374: .4byte gUnknown_20240A8 +_08051378: + ldrh r0, [r1, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08051392: + ldr r1, _0805140C + ldr r5, _08051410 + ldrb r0, [r5] + strb r0, [r1] + cmp r4, #0x27 + bne _080513D0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + bhs _080513D0 + ldrb r0, [r5] + movs r1, #0x27 + bl sub_0813117C + ldr r2, _08051414 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] +_080513D0: + ldr r1, _08051418 + ldr r2, _08051410 + ldrb r3, [r2] + movs r6, #0x58 + adds r0, r3, #0 + muls r0, r6, r0 + adds r5, r0, r1 + adds r0, r5, #0 + adds r0, #0x20 + ldrb r4, [r0] + mov r8, r1 + mov sb, r2 + cmp r4, #5 + bne _0805142C + ldr r2, _0805141C + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08051420 + strb r4, [r0] + ldr r1, _08051424 + ldr r0, _08051428 + str r0, [r1] + mov r1, sb + ldrb r0, [r1] + movs r1, #5 + bl sub_0813114C + b _08051680 + .align 2, 0 +_0805140C: .4byte gUnknown_2023EB3 +_08051410: .4byte gUnknown_2023EB0 +_08051414: .4byte gUnknown_2024020 +_08051418: .4byte gUnknown_2023D28 +_0805141C: .4byte gUnknown_2023F20 +_08051420: .4byte gUnknown_2023EAE +_08051424: .4byte gUnknown_2023EB8 +_08051428: .4byte gUnknown_8289ADA +_0805142C: + ldr r1, _080514A0 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x18 + ands r0, r1 + cmp r0, #0 + bne _080514B0 + ldr r1, _080514A4 + ldr r0, _080514A8 + ldrh r0, [r0] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldr r7, _080514AC + ldrb r0, [r7] + muls r0, r6, r0 + add r0, r8 + adds r0, #0x2a + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x2a + ldrb r1, [r1] + subs r0, r0, r1 + ldrb r2, [r2, #3] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + cmp r0, r4 + blt _08051480 + b _08051618 +_08051480: + ldrb r0, [r7] + adds r1, r0, #0 + muls r1, r6, r1 + add r1, r8 + adds r1, #0x2a + mov r2, sb + ldrb r0, [r2] + muls r0, r6, r0 + add r0, r8 + adds r0, #0x2a + ldrb r1, [r1] + movs r4, #1 + ldrb r0, [r0] + cmp r1, r0 + bhs _08051546 + b _08051618 + .align 2, 0 +_080514A0: .4byte gUnknown_2023F50 +_080514A4: .4byte gUnknown_82ED220 +_080514A8: .4byte gUnknown_2023E8E +_080514AC: .4byte gUnknown_2023EAF +_080514B0: + ldr r1, _0805157C + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08051580 + ldrb r0, [r0, #0x15] + adds r7, r1, #0 + ldrb r3, [r7] + cmp r0, r3 + bne _080514DA + ldrb r0, [r7] + muls r0, r6, r0 + add r0, r8 + adds r0, #0x2a + adds r1, r5, #0 + adds r1, #0x2a + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _08051552 +_080514DA: + ldr r1, _08051584 + ldr r0, _08051588 + ldrh r0, [r0] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldr r6, _0805158C + ldrb r0, [r7] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r1, [r0] + ldr r0, _08051590 + mov r8, r0 + ldrb r0, [r0] + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r0, [r0] + subs r1, r1, r0 + ldrb r2, [r2, #3] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + cmp r0, r4 + bge _08051544 + ldrb r0, [r7] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r6 + adds r1, #0x2a + mov r2, r8 + ldrb r0, [r2] + muls r0, r5, r0 + adds r0, r0, r6 + adds r0, #0x2a + ldrb r1, [r1] + movs r4, #1 + ldrb r0, [r0] + cmp r1, r0 + bhs _08051546 +_08051544: + movs r4, #0 +_08051546: + ldr r3, _0805158C + mov r8, r3 + ldr r0, _08051590 + mov sb, r0 + cmp r4, #0 + beq _08051618 +_08051552: + ldr r0, _08051594 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + bge _080515A0 + ldr r1, _08051598 + movs r0, #0x58 + muls r0, r2, r0 + add r0, r8 + ldrh r0, [r0, #0x28] + subs r0, #1 + str r0, [r1] + ldr r2, _0805159C + ldrb r0, [r2] + movs r1, #0x40 + b _080515FE + .align 2, 0 +_0805157C: .4byte gUnknown_2023F60 +_08051580: .4byte gUnknown_2023EAF +_08051584: .4byte gUnknown_82ED220 +_08051588: .4byte gUnknown_2023E8E +_0805158C: .4byte gUnknown_2023D28 +_08051590: .4byte gUnknown_2023EB0 +_08051594: .4byte gUnknown_2023FE0 +_08051598: .4byte gUnknown_2023E94 +_0805159C: .4byte gUnknown_2023F20 +_080515A0: + ldr r0, _080515DC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _080515EC + ldr r1, _080515E0 + movs r3, #0x58 + adds r0, r2, #0 + muls r0, r3, r0 + add r0, r8 + ldrh r0, [r0, #0x28] + subs r0, #1 + str r0, [r1] + ldr r2, _080515E4 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080515E8 + mov r2, sb + ldrb r0, [r2] + muls r0, r3, r0 + add r0, r8 + ldrh r0, [r0, #0x2e] + strh r0, [r1] + b _08051602 + .align 2, 0 +_080515DC: .4byte gUnknown_2024020 +_080515E0: .4byte gUnknown_2023E94 +_080515E4: .4byte gUnknown_2023F20 +_080515E8: .4byte gUnknown_2023EAC +_080515EC: + ldr r1, _0805160C + movs r0, #0x58 + muls r0, r2, r0 + add r0, r8 + ldrh r0, [r0, #0x28] + str r0, [r1] + ldr r2, _08051610 + ldrb r0, [r2] + movs r1, #0x10 +_080515FE: + orrs r0, r1 + strb r0, [r2] +_08051602: + ldr r1, _08051614 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08051680 + .align 2, 0 +_0805160C: .4byte gUnknown_2023E94 +_08051610: .4byte gUnknown_2023F20 +_08051614: .4byte gUnknown_2023EB8 +_08051618: + ldr r2, _0805164C + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r3, _08051650 + ldr r0, _08051654 + ldrb r0, [r0] + movs r2, #0x58 + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r3 + adds r1, #0x2a + ldr r0, _08051658 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + blo _08051660 + ldr r1, _0805165C + movs r0, #0 + b _08051664 + .align 2, 0 +_0805164C: .4byte gUnknown_2023F20 +_08051650: .4byte gUnknown_2023D28 +_08051654: .4byte gUnknown_2023EAF +_08051658: .4byte gUnknown_2023EB0 +_0805165C: .4byte gUnknown_2023FD6 +_08051660: + ldr r1, _0805168C + movs r0, #1 +_08051664: + strb r0, [r1, #5] + ldr r3, _08051690 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08051680: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805168C: .4byte gUnknown_2023FD6 +_08051690: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051340 + + thumb_func_start sub_08051694 +sub_08051694: @ 0x08051694 + push {lr} + ldr r3, _080516C0 + ldr r2, _080516C4 + ldr r0, _080516C8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + lsrs r0, r0, #1 + str r0, [r3] + cmp r0, #0 + bne _080516B2 + movs r0, #1 + str r0, [r3] +_080516B2: + ldr r1, _080516CC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080516C0: .4byte gUnknown_2023E94 +_080516C4: .4byte gUnknown_2023D28 +_080516C8: .4byte gUnknown_2023EB0 +_080516CC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051694 + + thumb_func_start sub_080516D0 +sub_080516D0: @ 0x080516D0 + push {lr} + ldr r2, _080516F0 + ldrh r1, [r2] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _080516FC + ldr r2, _080516F4 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080516F8 + movs r0, #2 + strb r0, [r1, #5] + b _0805170E + .align 2, 0 +_080516F0: .4byte gUnknown_2024070 +_080516F4: .4byte gUnknown_2023F20 +_080516F8: .4byte gUnknown_2023FD6 +_080516FC: + movs r0, #8 + strh r0, [r2] + ldr r1, _0805171C + movs r0, #3 + strb r0, [r1, #5] + ldr r0, _08051720 + adds r0, #0x28 + movs r1, #5 + strb r1, [r0] +_0805170E: + ldr r1, _08051724 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0805171C: .4byte gUnknown_2023FD6 +_08051720: .4byte gUnknown_2024074 +_08051724: .4byte gUnknown_2023EB8 + thumb_func_end sub_080516D0 + + thumb_func_start sub_08051728 +sub_08051728: @ 0x08051728 + push {r4, r5, lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08051746 + b _08051858 +_08051746: + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805175C + b _08051858 +_0805175C: + ldr r2, _080517D0 + ldrh r1, [r2] + movs r0, #0x18 + ands r0, r1 + adds r4, r2, #0 + ldr r5, _080517D4 + cmp r0, #0 + beq _080517EA + ldr r0, _080517D8 + ldrb r2, [r5] + movs r1, #0x58 + muls r1, r2, r1 + adds r3, r1, r0 + adds r0, r3, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #5 + beq _080517E4 + cmp r0, #8 + beq _080517E4 + cmp r0, #4 + beq _080517E4 + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #5 + beq _080517E4 + cmp r0, #8 + beq _080517E4 + cmp r0, #4 + beq _080517E4 + adds r0, r3, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #8 + beq _080517E4 + ldr r0, _080517DC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080517E4 + movs r0, #0x80 + lsls r0, r0, #0xb + ands r1, r0 + cmp r1, #0 + bne _080517E4 + ldr r1, _080517E0 + ldrh r0, [r3, #0x2c] + lsrs r0, r0, #4 + str r0, [r1] + cmp r0, #0 + bne _080517EA + movs r0, #1 + b _080517E8 + .align 2, 0 +_080517D0: .4byte gUnknown_2024070 +_080517D4: .4byte gUnknown_2023EAF +_080517D8: .4byte gUnknown_2023D28 +_080517DC: .4byte gUnknown_2023F50 +_080517E0: .4byte gUnknown_2023E94 +_080517E4: + ldr r1, _08051840 + movs r0, #0 +_080517E8: + str r0, [r1] +_080517EA: + ldrh r1, [r4] + movs r4, #0x80 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08051860 + ldr r1, _08051844 + ldrb r3, [r5] + movs r0, #0x58 + muls r0, r3, r0 + adds r2, r0, r1 + adds r0, r2, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0xf + beq _0805184C + adds r0, r2, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xf + beq _0805184C + ldr r0, _08051848 + lsls r1, r3, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r1, #0 + ands r0, r4 + cmp r0, #0 + bne _0805184C + movs r0, #0x80 + lsls r0, r0, #0xb + ands r1, r0 + cmp r1, #0 + bne _0805184C + ldr r1, _08051840 + ldrh r0, [r2, #0x2c] + lsrs r0, r0, #4 + str r0, [r1] + cmp r0, #0 + bne _08051860 + movs r0, #1 + str r0, [r1] + b _08051860 + .align 2, 0 +_08051840: .4byte gUnknown_2023E94 +_08051844: .4byte gUnknown_2023D28 +_08051848: .4byte gUnknown_2023F50 +_0805184C: + ldr r1, _08051854 + movs r0, #0 + str r0, [r1] + b _08051860 + .align 2, 0 +_08051854: .4byte gUnknown_2023E94 +_08051858: + ldr r1, _0805188C + movs r0, #0 + str r0, [r1] + ldr r5, _08051890 +_08051860: + ldr r0, _08051894 + ldrb r1, [r0] + ldr r2, _08051898 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0805187A + ldr r1, _0805188C + movs r0, #0 + str r0, [r1] +_0805187A: + ldr r1, _0805189C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805188C: .4byte gUnknown_2023E94 +_08051890: .4byte gUnknown_2023EAF +_08051894: .4byte gUnknown_2023EB4 +_08051898: .4byte gUnknown_82FACB4 +_0805189C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051728 + + thumb_func_start sub_080518A0 +sub_080518A0: @ 0x080518A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _080518CC + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080518D8 + ldr r1, _080518D0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _080518D4 + b _080518E8 + .align 2, 0 +_080518CC: .4byte gUnknown_2023EAF +_080518D0: .4byte gUnknown_2023D12 +_080518D4: .4byte gUnknown_2024190 +_080518D8: + ldr r1, _0805190C + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08051910 +_080518E8: + adds r5, r1, r0 + ldr r4, _08051914 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805191C + ldr r1, _0805190C + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08051918 + b _0805192C + .align 2, 0 +_0805190C: .4byte gUnknown_2023D12 +_08051910: .4byte gUnknown_20243E8 +_08051914: .4byte gUnknown_2023EB0 +_08051918: .4byte gUnknown_2024190 +_0805191C: + ldr r1, _08051988 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0805198C +_0805192C: + adds r4, r1, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + mov sb, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r7, r0, #0 + ldr r5, _08051990 + ldrb r0, [r5] + movs r6, #0x58 + muls r0, r6, r0 + ldr r1, _08051994 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r2, [r0] + cmp r2, #0xc + bne _080519A4 + ldr r1, _08051998 + ldr r0, _0805199C + str r0, [r1] + ldr r0, _080519A0 + strb r2, [r0] + ldrb r0, [r5] + movs r1, #0xc + bl sub_0813114C + b _08051A3C + .align 2, 0 +_08051988: .4byte gUnknown_2023D12 +_0805198C: .4byte gUnknown_20243E8 +_08051990: .4byte gUnknown_2023EB0 +_08051994: .4byte gUnknown_2023D28 +_08051998: .4byte gUnknown_2023EB8 +_0805199C: .4byte gUnknown_8289B7D +_080519A0: .4byte gUnknown_2023EAE +_080519A4: + mov r0, sl + mov r1, sb + bl sub_08069B60 + adds r4, r0, #0 + mov r0, r8 + adds r1, r7, #0 + bl sub_08069B60 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080519F4 + ldrb r0, [r5] + muls r0, r6, r0 + ldr r4, _08051A10 + adds r4, #0x50 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r0, r1 + cmp r0, #0 + bne _080519F4 + mov r0, sl + mov r1, sb + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080519F4 + mov r0, r8 + adds r1, r7, #0 + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08051A18 +_080519F4: + ldr r3, _08051A14 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08051A3C + .align 2, 0 +_08051A10: .4byte gUnknown_2023D28 +_08051A14: .4byte gUnknown_2023EB8 +_08051A18: + ldrb r0, [r5] + adds r2, r0, #0 + muls r2, r6, r2 + adds r2, r2, r4 + ldr r1, _08051A4C + ldr r0, _08051A50 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x10 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r1, _08051A54 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08051A3C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08051A4C: .4byte gUnknown_82FACB4 +_08051A50: .4byte gUnknown_2023EAF +_08051A54: .4byte gUnknown_2023EB8 + thumb_func_end sub_080518A0 + + thumb_func_start sub_08051A58 +sub_08051A58: @ 0x08051A58 + push {r4, r5, r6, r7, lr} + ldr r0, _08051AA0 + ldr r0, [r0] + cmp r0, #0 + bne _08051B44 + ldr r5, _08051AA4 + ldr r1, [r5] + ldrb r0, [r1, #1] + cmp r0, #4 + beq _08051AB0 + bl sub_0803F00C + ldr r4, _08051AA8 + strb r0, [r4] + ldr r3, _08051AAC + ldrb r1, [r4] + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r3, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r1, [r0] + adds r3, #0x50 + adds r2, r2, r3 + ldr r2, [r2] + movs r0, #0 + bl sub_08033DC0 + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + b _08051B44 + .align 2, 0 +_08051AA0: .4byte gUnknown_2023D0C +_08051AA4: .4byte gUnknown_2023EB8 +_08051AA8: .4byte gUnknown_2023D08 +_08051AAC: .4byte gUnknown_2023D28 +_08051AB0: + ldr r4, _08051B4C + ldr r5, _08051B50 + ldrb r0, [r5] + strb r0, [r4] + ldr r6, _08051B54 + ldrb r1, [r6] + ldr r7, _08051B58 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08051AEC + ldr r3, _08051B5C + movs r0, #0x58 + muls r2, r0, r2 + adds r0, r3, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r1, [r0] + adds r3, #0x50 + adds r2, r2, r3 + ldr r2, [r2] + movs r0, #0 + bl sub_08033DC0 + ldrb r0, [r4] + bl sub_0803F440 +_08051AEC: + ldr r0, _08051B60 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08051B3C + ldrb r0, [r5] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + strb r0, [r4] + ldrb r1, [r6] + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08051B3C + ldr r3, _08051B5C + movs r0, #0x58 + muls r2, r0, r2 + adds r0, r3, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r1, [r0] + adds r3, #0x50 + adds r2, r2, r3 + ldr r2, [r2] + movs r0, #0 + bl sub_08033DC0 + ldrb r0, [r4] + bl sub_0803F440 +_08051B3C: + ldr r1, _08051B64 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] +_08051B44: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08051B4C: .4byte gUnknown_2023D08 +_08051B50: .4byte gUnknown_2023EAF +_08051B54: .4byte gUnknown_2023EB4 +_08051B58: .4byte gUnknown_82FACB4 +_08051B5C: .4byte gUnknown_2023D28 +_08051B60: .4byte gUnknown_2022C90 +_08051B64: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051A58 + + thumb_func_start sub_08051B68 +sub_08051B68: @ 0x08051B68 + push {r4, r5, r6, lr} + ldr r6, _08051B98 + ldr r4, _08051B9C + ldrb r0, [r4] + bl sub_080A630C + movs r5, #1 + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08051BA8 + ldr r2, _08051BA0 + ldrb r0, [r2] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08051BA4 + strb r5, [r0, #5] + b _08051BF6 + .align 2, 0 +_08051B98: .4byte gUnknown_2023F38 +_08051B9C: .4byte gUnknown_2023EAF +_08051BA0: .4byte gUnknown_2023F20 +_08051BA4: .4byte gUnknown_2023FD6 +_08051BA8: + ldrb r0, [r4] + bl sub_080A630C + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #5 + strb r1, [r0, #4] + ldrb r0, [r4] + bl sub_080A630C + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r4] + strb r1, [r0, #5] + ldrb r0, [r4] + bl sub_080A630C + ldr r2, _08051C04 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + movs r3, #0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _08051C08 + strb r3, [r0, #5] +_08051BF6: + ldr r1, _08051C0C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08051C04: .4byte gUnknown_2023F32 +_08051C08: .4byte gUnknown_2023FD6 +_08051C0C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051B68 + + thumb_func_start sub_08051C10 +sub_08051C10: @ 0x08051C10 + push {lr} + ldr r1, _08051C40 + ldr r0, _08051C44 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r3, #0x80 + lsls r3, r3, #0xd + adds r2, r1, #0 + ands r2, r3 + cmp r2, #0 + beq _08051C50 + ldr r2, _08051C48 + ldrb r0, [r2] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08051C4C + movs r0, #1 + strb r0, [r1, #5] + b _08051C58 + .align 2, 0 +_08051C40: .4byte gUnknown_2023D28 +_08051C44: .4byte gUnknown_2023EAF +_08051C48: .4byte gUnknown_2023F20 +_08051C4C: .4byte gUnknown_2023FD6 +_08051C50: + orrs r1, r3 + str r1, [r0] + ldr r0, _08051C64 + strb r2, [r0, #5] +_08051C58: + ldr r1, _08051C68 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08051C64: .4byte gUnknown_2023FD6 +_08051C68: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051C10 + + thumb_func_start sub_08051C6C +sub_08051C6C: @ 0x08051C6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _08051CC4 + ldr r2, _08051CC8 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _08051CCC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r7, _08051CD0 + ldr r0, _08051CD4 + mov ip, r0 + ldrb r1, [r0] + movs r6, #0x58 + adds r0, r1, #0 + muls r0, r6, r0 + adds r5, r7, #0 + adds r5, #0x50 + adds r0, r0, r5 + ldr r0, [r0] + movs r4, #0x80 + lsls r4, r4, #0xe + ands r0, r4 + cmp r0, #0 + bne _08051CB2 + ldr r0, _08051CD8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + ldr r0, _08051CDC + ands r2, r0 + cmp r2, #0 + beq _08051CE8 +_08051CB2: + ldr r2, _08051CE0 + ldrb r0, [r2] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08051CE4 + movs r0, #1 + b _08051DFC + .align 2, 0 +_08051CC4: .4byte gUnknown_2023E90 +_08051CC8: .4byte 0x0000FFFF +_08051CCC: .4byte gUnknown_2023EB8 +_08051CD0: .4byte gUnknown_2023D28 +_08051CD4: .4byte gUnknown_2023EB0 +_08051CD8: .4byte gUnknown_2023F50 +_08051CDC: .4byte 0x000400C0 +_08051CE0: .4byte gUnknown_2023F20 +_08051CE4: .4byte gUnknown_2023FD6 +_08051CE8: + ldr r3, _08051DBC + ldrb r0, [r3] + adds r1, r0, #0 + muls r1, r6, r1 + adds r1, r1, r5 + ldr r0, [r1] + orrs r0, r4 + str r0, [r1] + ldr r4, _08051DC0 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #4] + ldrb r0, [r3] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #0xb] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xb] + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r2, ip + ldrb r1, [r2] + muls r1, r6, r1 + adds r2, r7, #0 + adds r2, #0x48 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0] + ldrb r0, [r3] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #0x18] + movs r0, #0xf + ands r0, r2 + strb r0, [r1, #0x18] + ldr r1, _08051DC4 + movs r0, #0xfd + strb r0, [r1] + movs r0, #6 + strb r0, [r1, #1] + mov r2, ip + ldrb r0, [r2] + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r2] + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldrb r0, [r3] + muls r0, r6, r0 + adds r5, r0, r7 + ldrb r0, [r2] + muls r0, r6, r0 + adds r2, r0, r7 + movs r4, #0 + adds r6, r3, #0 + ldr r0, _08051DC8 + mov r8, r0 +_08051D80: + adds r0, r5, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #0x23 + bls _08051D80 + movs r4, #0 + ldr r7, _08051DCC + ldr r3, _08051DD0 + adds r5, r3, #0 + adds r5, #0x18 +_08051D98: + lsls r1, r4, #1 + ldrb r2, [r6] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, r1, r2 + adds r1, r1, r3 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r1, [r0, #4] + cmp r1, #4 + bhi _08051DD4 + adds r0, r4, r2 + adds r0, r0, r5 + b _08051DDA + .align 2, 0 +_08051DBC: .4byte gUnknown_2023EAF +_08051DC0: .4byte gUnknown_2023F60 +_08051DC4: .4byte gUnknown_2022C0C +_08051DC8: .4byte gUnknown_2023D08 +_08051DCC: .4byte gUnknown_82ED220 +_08051DD0: .4byte gUnknown_2023D34 +_08051DD4: + adds r0, r4, r2 + adds r0, r0, r5 + movs r1, #5 +_08051DDA: + strb r1, [r0] + adds r4, #1 + cmp r4, #3 + ble _08051D98 + ldrb r0, [r6] + mov r1, r8 + strb r0, [r1] + movs r0, #0 + movs r1, #2 + bl sub_08034300 + mov r2, r8 + ldrb r0, [r2] + bl sub_0803F440 + ldr r1, _08051E08 + movs r0, #0 +_08051DFC: + strb r0, [r1, #5] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08051E08: .4byte gUnknown_2023FD6 + thumb_func_end sub_08051C6C + + thumb_func_start sub_08051E0C +sub_08051E0C: @ 0x08051E0C + push {r4, r5, r6, r7, lr} + ldr r7, _08051E3C + ldr r6, _08051E40 + ldrb r0, [r6] + movs r5, #0x58 + muls r0, r5, r0 + adds r3, r0, r7 + ldrh r0, [r3, #0x2c] + lsrs r1, r0, #2 + adds r2, r1, #0 + cmp r1, #0 + bne _08051E26 + movs r2, #1 +_08051E26: + ldrh r0, [r3, #0x28] + cmp r0, r2 + bhi _08051E4C + ldr r1, _08051E44 + movs r0, #0 + str r0, [r1] + ldr r1, _08051E48 + movs r0, #1 + strb r0, [r1, #5] + b _08051EA0 + .align 2, 0 +_08051E3C: .4byte gUnknown_2023D28 +_08051E40: .4byte gUnknown_2023EAF +_08051E44: .4byte gUnknown_2023E94 +_08051E48: .4byte gUnknown_2023FD6 +_08051E4C: + ldr r4, _08051EB0 + str r1, [r4] + cmp r1, #0 + bne _08051E58 + movs r0, #1 + str r0, [r4] +_08051E58: + ldrb r0, [r6] + adds r2, r0, #0 + muls r2, r5, r2 + adds r3, r7, #0 + adds r3, #0x50 + adds r2, r2, r3 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x11 + orrs r0, r1 + str r0, [r2] + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r3 + ldr r0, [r1] + ldr r2, _08051EB4 + ands r0, r2 + str r0, [r1] + ldr r2, _08051EB8 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r4] + movs r2, #0 + strb r1, [r0, #0xa] + ldr r0, _08051EBC + strb r2, [r0, #5] + ldr r2, _08051EC0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2] +_08051EA0: + ldr r1, _08051EC4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08051EB0: .4byte gUnknown_2023E94 +_08051EB4: .4byte 0xFFFF1FFF +_08051EB8: .4byte gUnknown_2023F60 +_08051EBC: .4byte gUnknown_2023FD6 +_08051EC0: .4byte gUnknown_2023F24 +_08051EC4: .4byte gUnknown_2023EB8 + thumb_func_end sub_08051E0C + + thumb_func_start sub_08051EC8 +sub_08051EC8: @ 0x08051EC8 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r3, #0 + ldr r0, _08051F08 + ldrh r1, [r0] + ldr r4, _08051F0C + adds r5, r0, #0 + cmp r1, r4 + beq _08051EF0 + cmp r1, r2 + beq _08051EF0 + adds r1, r5, #0 +_08051EE2: + adds r1, #2 + adds r3, #1 + ldrh r0, [r1] + cmp r0, r4 + beq _08051EF0 + cmp r0, r2 + bne _08051EE2 +_08051EF0: + lsls r0, r3, #1 + adds r0, r0, r5 + ldrh r1, [r0] + ldr r0, _08051F0C + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08051F08: .4byte gUnknown_82ECD64 +_08051F0C: .4byte 0x0000FFFE + thumb_func_end sub_08051EC8 + + thumb_func_start sub_08051F10 +sub_08051F10: @ 0x08051F10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08051F88 + ldr r1, _08051F8C + adds r7, r1, #0 + strh r7, [r0] + ldr r5, _08051F90 + ldr r6, _08051F94 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_08051EC8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08051F6A + ldr r3, _08051F98 + ldr r2, _08051F9C + ldrb r1, [r2] + movs r0, #0x58 + adds r4, r1, #0 + muls r4, r0, r4 + adds r0, r3, #0 + adds r0, #0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xe + ands r1, r0 + mov ip, r3 + mov sb, r2 + cmp r1, #0 + bne _08051F6A + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + cmp r1, #0 + beq _08051F6A + cmp r1, r7 + bne _08051FA4 +_08051F6A: + ldr r3, _08051FA0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _080520DC + .align 2, 0 +_08051F88: .4byte gUnknown_2023E90 +_08051F8C: .4byte 0x0000FFFF +_08051F90: .4byte gUnknown_2023EEC +_08051F94: .4byte gUnknown_2023EB0 +_08051F98: .4byte gUnknown_2023D28 +_08051F9C: .4byte gUnknown_2023EAF +_08051FA0: .4byte gUnknown_2023EB8 +_08051FA4: + movs r2, #0 + mov r3, ip + adds r3, #0xc + adds r0, r4, r3 + ldrh r0, [r0] + ldr r4, _08052034 + mov sl, r4 + cmp r0, r1 + beq _08051FDE + mov r8, r3 + adds r7, r5, #0 + adds r5, r6, #0 + mov r4, sb + movs r3, #0x58 +_08051FC0: + adds r2, #1 + cmp r2, #3 + bgt _08051FDE + lsls r1, r2, #1 + ldrb r0, [r4] + muls r0, r3, r0 + adds r1, r1, r0 + add r1, r8 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bne _08051FC0 +_08051FDE: + cmp r2, #4 + bne _080520C0 + ldr r5, _08052038 + ldrb r1, [r5] + lsls r1, r1, #1 + mov r2, sb + ldrb r0, [r2] + movs r6, #0x58 + muls r0, r6, r0 + adds r1, r1, r0 + mov r0, ip + adds r0, #0xc + adds r1, r1, r0 + ldr r2, _0805203C + ldr r3, _08052040 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + ldr r4, _08052044 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r4, [r0, #4] + cmp r4, #4 + bhi _08052048 + mov r1, sb + ldrb r0, [r1] + muls r0, r6, r0 + ldrb r1, [r5] + adds r0, r0, r1 + mov r1, ip + adds r1, #0x24 + adds r0, r0, r1 + strb r4, [r0] + b _0805205C + .align 2, 0 +_08052034: .4byte gUnknown_2023EB8 +_08052038: .4byte gUnknown_2023E8C +_0805203C: .4byte gUnknown_2023EEC +_08052040: .4byte gUnknown_2023EB0 +_08052044: .4byte gUnknown_82ED220 +_08052048: + mov r4, sb + ldrb r0, [r4] + muls r0, r6, r0 + ldrb r1, [r5] + adds r0, r0, r1 + mov r1, ip + adds r1, #0x24 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] +_0805205C: + ldr r1, _080520B4 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _080520B8 + mov r2, sb + ldrb r0, [r2] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r4, [r2, #0x18] + lsrs r3, r4, #4 + ldr r1, _080520BC + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + orrs r1, r3 + lsls r1, r1, #4 + movs r0, #0xf + ands r0, r4 + orrs r0, r1 + strb r0, [r2, #0x18] + mov r4, sl + ldr r0, [r4] + adds r0, #5 + str r0, [r4] + b _080520DC + .align 2, 0 +_080520B4: .4byte gUnknown_2022C0C +_080520B8: .4byte gUnknown_2023F60 +_080520BC: .4byte gUnknown_82FACB4 +_080520C0: + mov r0, sl + ldr r2, [r0] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + mov r2, sl + str r1, [r2] +_080520DC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08051F10 + + thumb_func_start sub_080520EC +sub_080520EC: @ 0x080520EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r7, _0805216C + movs r6, #0xb1 + lsls r6, r6, #1 + ldr r5, _08052170 + ldr r0, _08052174 + mov r8, r0 +_080520FE: + bl sub_0806F050 + ldr r2, _08052178 + adds r1, r2, #0 + ands r0, r1 + adds r0, #1 + strh r0, [r7] + cmp r0, r6 + bhi _080520FE + movs r0, #3 +_08052112: + subs r0, #1 + cmp r0, #0 + bge _08052112 + ldr r4, _0805216C + ldrh r2, [r4] + ldr r3, _0805217C + subs r0, r5, #2 +_08052120: + adds r0, #2 + ldrh r1, [r0] + cmp r1, r2 + beq _0805212C + cmp r1, r3 + bne _08052120 +_0805212C: + ldr r0, _0805217C + cmp r1, r0 + bne _080520FE + ldr r2, _08052180 + ldr r0, [r2] + ldr r1, _08052184 + ands r0, r1 + str r0, [r2] + ldr r3, _08052188 + ldr r2, _0805218C + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + mov r1, r8 + str r0, [r1] + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _08052190 + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805216C: .4byte gUnknown_2023E8E +_08052170: .4byte gUnknown_82ECD64 +_08052174: .4byte gUnknown_2023EB8 +_08052178: .4byte 0x000001FF +_0805217C: .4byte 0x0000FFFF +_08052180: .4byte gUnknown_2023F24 +_08052184: .4byte 0xFFFFFBFF +_08052188: .4byte gUnknown_8286C30 +_0805218C: .4byte gUnknown_82ED220 +_08052190: .4byte gUnknown_2023EB0 + thumb_func_end sub_080520EC + + thumb_func_start sub_08052194 +sub_08052194: @ 0x08052194 + ldr r3, _080521B4 + ldr r2, _080521B8 + ldr r0, _080521BC + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r0, [r0] + str r0, [r3] + ldr r1, _080521C0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_080521B4: .4byte gUnknown_2023E94 +_080521B8: .4byte gUnknown_2023D28 +_080521BC: .4byte gUnknown_2023EAF +_080521C0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052194 + + thumb_func_start sub_080521C4 +sub_080521C4: @ 0x080521C4 + push {r4, lr} + movs r4, #0xf +_080521C8: + bl sub_0806F050 + adds r3, r4, #0 + ands r3, r0 + cmp r3, #0xa + bgt _080521C8 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r3, r0, #1 + ldr r4, _08052208 + ldr r2, _0805220C + ldr r0, _08052210 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x32 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + ldr r1, _08052214 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08052208: .4byte gUnknown_2023E94 +_0805220C: .4byte gUnknown_2023D28 +_08052210: .4byte gUnknown_2023EAF +_08052214: .4byte gUnknown_2023EB8 + thumb_func_end sub_080521C4 + + thumb_func_start sub_08052218 +sub_08052218: @ 0x08052218 + push {r4, r5, r6, lr} + ldr r4, _08052288 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _0805228C + ldrb r0, [r4] + lsls r0, r0, #4 + adds r0, r0, r5 + ldrb r0, [r0, #0xc] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r0, r5, #4 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, #0 + beq _080522CC + cmp r6, r2 + beq _080522CC + ldr r6, _08052290 + adds r0, r1, r5 + ldrb r0, [r0, #0xc] + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _080522CC + ldr r1, _08052294 + lsls r0, r3, #1 + str r0, [r1] + ldr r1, _08052298 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #8] + cmp r0, #0 + beq _080522A0 + ldrb r1, [r1, #9] + adds r0, r1, #0 + muls r0, r4, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _080522A0 + ldr r0, _0805229C + strb r1, [r0] + b _080522B0 + .align 2, 0 +_08052288: .4byte gUnknown_2023EAF +_0805228C: .4byte gUnknown_2023FE0 +_08052290: .4byte gUnknown_2023D28 +_08052294: .4byte gUnknown_2023E94 +_08052298: .4byte gUnknown_2023F38 +_0805229C: .4byte gUnknown_2023EB0 +_080522A0: + ldr r2, _080522BC + ldr r1, _080522C0 + ldr r0, _080522C4 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #0xc] + strb r0, [r2] +_080522B0: + ldr r1, _080522C8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _080522FC + .align 2, 0 +_080522BC: .4byte gUnknown_2023EB0 +_080522C0: .4byte gUnknown_2023FE0 +_080522C4: .4byte gUnknown_2023EAF +_080522C8: .4byte gUnknown_2023EB8 +_080522CC: + ldr r2, _08052304 + ldr r0, _08052308 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _0805230C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_080522FC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08052304: .4byte gUnknown_2024020 +_08052308: .4byte gUnknown_2023EAF +_0805230C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052218 + + thumb_func_start sub_08052310 +sub_08052310: @ 0x08052310 + push {r4, r5, r6, lr} + ldr r4, _08052380 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _08052384 + ldrb r0, [r4] + lsls r0, r0, #4 + adds r0, r0, r5 + ldrb r0, [r0, #0xd] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r0, r5, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, #0 + beq _080523C4 + cmp r6, r2 + beq _080523C4 + ldr r6, _08052388 + adds r0, r1, r5 + ldrb r0, [r0, #0xd] + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _080523C4 + ldr r1, _0805238C + lsls r0, r3, #1 + str r0, [r1] + ldr r1, _08052390 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #8] + cmp r0, #0 + beq _08052398 + ldrb r1, [r1, #9] + adds r0, r1, #0 + muls r0, r4, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08052398 + ldr r0, _08052394 + strb r1, [r0] + b _080523A8 + .align 2, 0 +_08052380: .4byte gUnknown_2023EAF +_08052384: .4byte gUnknown_2023FE0 +_08052388: .4byte gUnknown_2023D28 +_0805238C: .4byte gUnknown_2023E94 +_08052390: .4byte gUnknown_2023F38 +_08052394: .4byte gUnknown_2023EB0 +_08052398: + ldr r2, _080523B4 + ldr r1, _080523B8 + ldr r0, _080523BC + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #0xd] + strb r0, [r2] +_080523A8: + ldr r1, _080523C0 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _080523F4 + .align 2, 0 +_080523B4: .4byte gUnknown_2023EB0 +_080523B8: .4byte gUnknown_2023FE0 +_080523BC: .4byte gUnknown_2023EAF +_080523C0: .4byte gUnknown_2023EB8 +_080523C4: + ldr r2, _080523FC + ldr r0, _08052400 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08052404 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_080523F4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080523FC: .4byte gUnknown_2024020 +_08052400: .4byte gUnknown_2023EAF +_08052404: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052310 + + thumb_func_start sub_08052408 +sub_08052408: @ 0x08052408 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r4, #0 + ldr r2, _08052508 + ldr r3, _0805250C + ldrb r1, [r3] + movs r0, #0x58 + muls r0, r1, r0 + adds r7, r2, #0 + adds r7, #0xc + adds r0, r0, r7 + ldr r5, _08052510 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r0, [r0] + mov sb, r2 + adds r6, r3, #0 + ldr r2, _08052514 + mov r8, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _0805245C + mov ip, r6 + movs r3, #0x58 +_0805243C: + adds r4, #1 + cmp r4, #3 + bgt _0805245C + lsls r2, r4, #1 + mov r0, ip + ldrb r1, [r0] + adds r0, r1, #0 + muls r0, r3, r0 + adds r2, r2, r0 + adds r2, r2, r7 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _0805243C +_0805245C: + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrh r0, [r0, #4] + cmp r0, #0 + bne _08052520 + cmp r4, #4 + beq _08052520 + movs r5, #0x58 + adds r0, r1, #0 + muls r0, r5, r0 + adds r0, r4, r0 + mov r1, sb + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08052520 + ldr r1, _08052518 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + lsls r2, r4, #1 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r2, r0 + mov r3, sb + adds r3, #0xc + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r2, r0 + adds r0, r0, r3 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + muls r1, r5, r1 + adds r2, r2, r1 + adds r2, r2, r3 + ldrh r1, [r2] + strh r1, [r0, #4] + bl sub_0806F050 + ldrb r2, [r6] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + movs r2, #3 + ands r2, r0 + adds r2, #2 + ldrb r3, [r1, #0xb] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0xb] + ldrb r0, [r6] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r3, [r1, #0xb] + lsls r2, r3, #0x1c + lsrs r2, r2, #0x18 + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0xb] + ldr r1, _0805251C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0805253A + .align 2, 0 +_08052508: .4byte gUnknown_2023D28 +_0805250C: .4byte gUnknown_2023EB0 +_08052510: .4byte gUnknown_2023EEC +_08052514: .4byte gUnknown_2023F60 +_08052518: .4byte gUnknown_2022C0C +_0805251C: .4byte gUnknown_2023EB8 +_08052520: + ldr r3, _08052548 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_0805253A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08052548: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052408 + + thumb_func_start sub_0805254C +sub_0805254C: @ 0x0805254C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r5, #0 + ldr r3, _08052640 + ldr r4, _08052644 + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r6, r3, #0 + adds r6, #0xc + adds r0, r0, r6 + ldr r2, _08052648 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r0] + mov sl, r3 + mov r8, r2 + ldr r2, _0805264C + mov sb, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _080525A6 + mov ip, r4 + adds r7, r6, #0 + mov r6, r8 + movs r3, #0x58 +_08052586: + adds r5, #1 + cmp r5, #3 + bgt _080525A6 + lsls r2, r5, #1 + mov r0, ip + ldrb r1, [r0] + adds r0, r1, #0 + muls r0, r3, r0 + adds r2, r2, r0 + adds r2, r2, r7 + lsls r1, r1, #1 + adds r1, r1, r6 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08052586 +_080525A6: + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, r8 + ldrh r2, [r0] + cmp r2, #0xa5 + beq _080525BA + cmp r2, #0xe3 + beq _080525BA + cmp r2, #0x77 + bne _080525BC +_080525BA: + movs r5, #4 +_080525BC: + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r2, sb + adds r3, r0, r2 + ldrh r0, [r3, #6] + cmp r0, #0 + bne _08052654 + cmp r5, #4 + beq _08052654 + movs r0, #0x58 + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r5, r2 + mov r1, sl + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08052654 + lsls r0, r5, #1 + adds r0, r0, r2 + subs r1, #0x18 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3, #6] + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + strb r5, [r0, #0xc] + bl sub_0806F050 + ldrb r2, [r4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + add r1, sb + movs r2, #3 + ands r2, r0 + adds r2, #3 + ldrb r3, [r1, #0xe] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0xe] + ldrb r0, [r4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + ldrb r3, [r1, #0xe] + lsls r2, r3, #0x1c + lsrs r2, r2, #0x18 + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0xe] + ldr r1, _08052650 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0805266E + .align 2, 0 +_08052640: .4byte gUnknown_2023D28 +_08052644: .4byte gUnknown_2023EB0 +_08052648: .4byte gUnknown_2023EEC +_0805264C: .4byte gUnknown_2023F60 +_08052650: .4byte gUnknown_2023EB8 +_08052654: + ldr r3, _0805267C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_0805266E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805267C: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805254C + + thumb_func_start sub_08052680 +sub_08052680: @ 0x08052680 + push {r4, r5, r6, r7, lr} + ldr r6, _08052700 + ldr r0, _08052704 + mov ip, r0 + ldrb r0, [r0] + movs r7, #0x58 + adds r2, r0, #0 + muls r2, r7, r2 + adds r0, r6, #0 + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08052720 + ldr r5, _08052708 + ldrb r0, [r5] + muls r0, r7, r0 + adds r0, r0, r6 + ldrh r3, [r0, #0x28] + adds r0, r2, r6 + ldrh r1, [r0, #0x28] + adds r3, r3, r1 + asrs r3, r3, #1 + ldr r4, _0805270C + subs r1, r1, r3 + str r1, [r4] + ldr r2, _08052710 + strb r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + asrs r0, r0, #8 + strb r0, [r2, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + asrs r0, r0, #0x10 + strb r0, [r2, #2] + lsrs r1, r1, #0x18 + strb r1, [r2, #3] + ldrb r0, [r5] + muls r0, r7, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x28] + subs r0, r0, r3 + str r0, [r4] + ldr r2, _08052714 + mov r0, ip + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r0, r0, r2 + ldr r1, _08052718 + str r1, [r0] + ldr r1, _0805271C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0805273A + .align 2, 0 +_08052700: .4byte gUnknown_2023D28 +_08052704: .4byte gUnknown_2023EB0 +_08052708: .4byte gUnknown_2023EAF +_0805270C: .4byte gUnknown_2023E94 +_08052710: .4byte gUnknown_2024118 +_08052714: .4byte gUnknown_2024020 +_08052718: .4byte 0x0000FFFF +_0805271C: .4byte gUnknown_2023EB8 +_08052720: + ldr r3, _08052740 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_0805273A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08052740: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052680 + + thumb_func_start sub_08052744 +sub_08052744: @ 0x08052744 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r1, _080527AC + ldr r4, _080527B0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r2, r0, r1 + ldrh r1, [r2] + cmp r1, #0 + beq _0805278E + ldr r0, _080527B4 + cmp r1, r0 + beq _0805278E + ldrh r0, [r2] + bl sub_08052B58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805282C + ldr r1, _080527B8 + ldr r2, _080527BC + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _0805282C +_0805278E: + ldr r3, _080527C0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08052918 + .align 2, 0 +_080527AC: .4byte gUnknown_2023EF4 +_080527B0: .4byte gUnknown_2023EAF +_080527B4: .4byte 0x0000FFFF +_080527B8: .4byte gUnknown_2023D28 +_080527BC: .4byte gUnknown_2023F14 +_080527C0: .4byte gUnknown_2023EB8 +_080527C4: + mov r0, ip + strb r5, [r0] + mov r1, sl + ldrb r0, [r1] + muls r0, r2, r0 + adds r0, r0, r7 + adds r0, #0x22 + strb r5, [r0] + ldr r1, _080527E8 + movs r0, #0xfd + strb r0, [r1] + movs r0, #3 + strb r0, [r1, #1] + strb r5, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r1, _080527EC + b _0805281A + .align 2, 0 +_080527E8: .4byte gUnknown_2022C0C +_080527EC: .4byte gUnknown_2023EB8 +_080527F0: + mov r0, r8 + adds r0, #1 + adds r0, r0, r3 + ldrb r2, [r0] + strb r2, [r4] + mov r4, sl + ldrb r0, [r4] + muls r0, r6, r0 + ldr r7, _08052824 + adds r0, r0, r7 + adds r0, #0x22 + strb r2, [r0] + ldr r1, _08052828 + movs r0, #0xfd + strb r0, [r1] + movs r0, #3 + strb r0, [r1, #1] + strb r2, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + mov r1, ip +_0805281A: + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08052918 + .align 2, 0 +_08052824: .4byte gUnknown_2023D28 +_08052828: .4byte gUnknown_2022C0C +_0805282C: + movs r4, #0 + mov r8, r4 + movs r7, #0x7f + mov sb, r7 +_08052834: + bl sub_0806F050 + mov r4, sb + ands r4, r0 + cmp r4, #0x70 + bhi _08052834 + lsls r0, r4, #1 + adds r4, r0, r4 + ldr r6, _08052928 + adds r3, r4, r6 + ldr r1, _0805292C + ldr r2, _08052930 + ldrb r5, [r2] + lsls r0, r5, #1 + adds r0, r0, r1 + ldrb r1, [r3] + mov sl, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _08052890 + adds r0, r4, #2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #5 + bhi _08052890 + ldr r7, _08052934 + movs r2, #0x58 + adds r0, r5, #0 + muls r0, r2, r0 + adds r3, r0, r7 + movs r0, #0x21 + adds r0, r0, r3 + mov ip, r0 + adds r0, r4, #1 + adds r0, r0, r6 + ldrb r5, [r0] + mov r1, ip + ldrb r0, [r1] + adds r1, r5, #0 + cmp r0, r1 + beq _08052890 + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _080527C4 +_08052890: + movs r7, #1 + add r8, r7 + ldr r0, _08052938 + cmp r8, r0 + ble _08052834 + movs r0, #0 + mov r8, r0 + ldr r1, _0805293C + mov ip, r1 + ldr r3, _08052928 + adds r0, r4, #1 + adds r0, r0, r3 + mov sb, r0 + adds r5, r3, #0 +_080528AC: + ldrb r1, [r5] + cmp r1, #0xff + bgt _080528B6 + cmp r1, #0xfe + bge _080528F0 +_080528B6: + mov r4, sl + ldrb r2, [r4] + lsls r0, r2, #1 + ldr r7, _0805292C + adds r0, r0, r7 + ldrh r0, [r0] + cmp r1, r0 + bne _080528F0 + ldrb r0, [r5, #2] + cmp r0, #5 + bhi _080528F0 + movs r6, #0x58 + adds r0, r2, #0 + muls r0, r6, r0 + ldr r1, _08052934 + adds r2, r0, r1 + adds r4, r2, #0 + adds r4, #0x21 + ldrb r0, [r4] + mov r7, sb + ldrb r1, [r7] + cmp r0, r1 + beq _080528F0 + adds r0, r2, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _080528F0 + b _080527F0 +_080528F0: + adds r5, #3 + movs r0, #3 + add r8, r0 + ldr r0, _08052940 + cmp r8, r0 + bls _080528AC + mov r1, ip + ldr r2, [r1] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + mov r4, ip + str r1, [r4] +_08052918: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08052928: .4byte gUnknown_82EBB38 +_0805292C: .4byte gUnknown_2023EFC +_08052930: .4byte gUnknown_2023EAF +_08052934: .4byte gUnknown_2023D28 +_08052938: .4byte 0x000003E7 +_0805293C: .4byte gUnknown_2023EB8 +_08052940: .4byte 0x0000014F + thumb_func_end sub_08052744 + + thumb_func_start sub_08052944 +sub_08052944: @ 0x08052944 + push {r4, lr} + ldr r4, _08052988 + ldr r3, _0805298C + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, [r1] + movs r2, #0x19 + rsbs r2, r2, #0 + ands r0, r2 + str r0, [r1] + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, [r1] + movs r2, #0x10 + orrs r0, r2 + str r0, [r1] + ldr r2, _08052990 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08052994 + ldrb r1, [r1] + strb r1, [r0, #0x15] + ldr r1, _08052998 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08052988: .4byte gUnknown_2023F50 +_0805298C: .4byte gUnknown_2023EB0 +_08052990: .4byte gUnknown_2023F60 +_08052994: .4byte gUnknown_2023EAF +_08052998: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052944 + + thumb_func_start sub_0805299C +sub_0805299C: @ 0x0805299C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r0, _08052AFC + ldr r1, _08052B00 + adds r5, r1, #0 + strh r5, [r0] + ldr r3, _08052B04 + ldr r2, _08052B08 + ldrb r1, [r2] + movs r0, #0x58 + adds r4, r1, #0 + muls r4, r0, r4 + adds r0, r3, #0 + adds r0, #0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xe + ands r1, r0 + mov ip, r3 + mov sl, r2 + cmp r1, #0 + beq _080529D4 + b _08052B28 +_080529D4: + ldr r0, _08052B0C + ldr r2, _08052B10 + ldrb r1, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + mov sb, r0 + mov r8, r2 + cmp r1, #0xa5 + bne _080529EA + b _08052B28 +_080529EA: + cmp r1, #0 + bne _080529F0 + b _08052B28 +_080529F0: + cmp r1, r5 + bne _080529F6 + b _08052B28 +_080529F6: + cmp r1, #0xa6 + bne _080529FC + b _08052B28 +_080529FC: + movs r7, #0 + mov r5, sb + mov r0, ip + adds r0, #0xc + adds r1, r4, r0 + mov r3, r8 +_08052A08: + ldrh r2, [r1] + cmp r2, #0xa6 + beq _08052A1A + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r2, r0 + beq _08052A22 +_08052A1A: + adds r1, #2 + adds r7, #1 + cmp r7, #3 + ble _08052A08 +_08052A22: + cmp r7, #4 + beq _08052A28 + b _08052B28 +_08052A28: + ldr r4, _08052B14 + ldrb r1, [r4] + lsls r1, r1, #1 + mov r2, sl + ldrb r0, [r2] + movs r3, #0x58 + muls r0, r3, r0 + adds r1, r1, r0 + mov r6, ip + adds r6, #0xc + adds r1, r1, r6 + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + strh r0, [r1] + mov r1, sl + ldrb r0, [r1] + adds r2, r0, #0 + muls r2, r3, r2 + ldrb r4, [r4] + adds r2, r2, r4 + mov r5, ip + adds r5, #0x24 + adds r2, r2, r5 + ldr r4, _08052B18 + mov r1, r8 + ldrb r0, [r1] + lsls r0, r0, #1 + add r0, sb + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #4] + strb r0, [r2] + ldr r1, _08052B1C + mov r2, sl + ldrb r0, [r2] + strb r0, [r1] + movs r7, #0 + ldrb r0, [r2] + muls r0, r3, r0 + adds r4, r0, r5 + adds r3, r0, #0 + add r2, sp, #4 + add r5, sp, #0xc +_08052A8A: + adds r0, r3, r6 + ldrh r0, [r0] + strh r0, [r2] + adds r1, r5, r7 + ldrb r0, [r4] + strb r0, [r1] + adds r4, #1 + adds r3, #2 + adds r2, #2 + adds r7, #1 + cmp r7, #3 + ble _08052A8A + add r2, sp, #4 + mov r0, sl + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + add r0, ip + adds r0, #0x3b + ldrb r0, [r0] + strb r0, [r2, #0xc] + str r2, [sp] + movs r0, #0 + movs r1, #3 + movs r2, #0 + movs r3, #0x10 + bl sub_08033798 + ldr r0, _08052B1C + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _08052B20 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + ldr r3, _08052B0C + ldr r2, _08052B10 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _08052B24 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08052B42 + .align 2, 0 +_08052AFC: .4byte gUnknown_2023E90 +_08052B00: .4byte 0x0000FFFF +_08052B04: .4byte gUnknown_2023D28 +_08052B08: .4byte gUnknown_2023EAF +_08052B0C: .4byte gUnknown_2023EE4 +_08052B10: .4byte gUnknown_2023EB0 +_08052B14: .4byte gUnknown_2023E8C +_08052B18: .4byte gUnknown_82ED220 +_08052B1C: .4byte gUnknown_2023D08 +_08052B20: .4byte gUnknown_2022C0C +_08052B24: .4byte gUnknown_2023EB8 +_08052B28: + ldr r3, _08052B54 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08052B42: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08052B54: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805299C + + thumb_func_start sub_08052B58 +sub_08052B58: @ 0x08052B58 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _08052B88 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, #0x91 + beq _08052B82 + cmp r0, #0x27 + beq _08052B82 + cmp r0, #0x4b + beq _08052B82 + cmp r0, #0x97 + beq _08052B82 + cmp r0, #0x9b + beq _08052B82 + cmp r0, #0x1a + bne _08052B8C +_08052B82: + movs r0, #1 + b _08052B8E + .align 2, 0 +_08052B88: .4byte gUnknown_82ED220 +_08052B8C: + movs r0, #0 +_08052B8E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08052B58 + + thumb_func_start sub_08052B94 +sub_08052B94: @ 0x08052B94 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08052BB2 + cmp r1, #0xd6 + beq _08052BB2 + movs r0, #0x89 + lsls r0, r0, #1 + cmp r1, r0 + beq _08052BB2 + cmp r1, #0x77 + beq _08052BB2 + cmp r1, #0x76 + bne _08052BB6 +_08052BB2: + movs r0, #1 + b _08052BB8 +_08052BB6: + movs r0, #0 +_08052BB8: + pop {r1} + bx r1 + thumb_func_end sub_08052B94 + + thumb_func_start sub_08052BBC +sub_08052BBC: @ 0x08052BBC + push {lr} + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + ldr r1, _08052C14 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #0x97 + bne _08052BE0 + ldr r0, _08052C18 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + bne _08052C20 +_08052BE0: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0x91 + beq _08052C02 + cmp r0, #0x27 + beq _08052C02 + cmp r0, #0x4b + beq _08052C02 + cmp r0, #0x97 + beq _08052C02 + cmp r0, #0x9b + beq _08052C02 + cmp r0, #0x1a + bne _08052C20 +_08052C02: + ldr r0, _08052C1C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + beq _08052C20 + movs r0, #1 + b _08052C22 + .align 2, 0 +_08052C14: .4byte gUnknown_82ED220 +_08052C18: .4byte gUnknown_2024070 +_08052C1C: .4byte gUnknown_2023F24 +_08052C20: + movs r0, #2 +_08052C22: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08052BBC + + thumb_func_start sub_08052C28 +sub_08052C28: @ 0x08052C28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r6, #0 + movs r5, #0 + ldr r0, _08052CB8 + mov sb, r0 + movs r1, #0x58 + mov r8, r1 + ldr r7, _08052CBC + movs r0, #0x84 + lsls r0, r0, #1 + mov sl, r0 +_08052C46: + lsls r4, r5, #1 + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r4, r0 + adds r0, r0, r7 + ldrh r0, [r0] + bl sub_08052B94 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08052C86 + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r4, r0 + adds r0, r0, r7 + ldrh r1, [r0] + cmp r1, sl + beq _08052C86 + cmp r1, #0xfd + beq _08052C86 + adds r0, r1, #0 + bl sub_08052B58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08052C94 +_08052C86: + ldr r1, _08052CC0 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r0, [r0] + orrs r6, r0 + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 +_08052C94: + adds r5, #1 + cmp r5, #3 + ble _08052C46 + ldr r0, _08052CB8 + ldrb r0, [r0] + adds r1, r6, #0 + movs r2, #0xfd + bl sub_0803FB0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xf + bne _08052CC8 + ldr r1, _08052CC4 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08052D2C + .align 2, 0 +_08052CB8: .4byte gUnknown_2023EAF +_08052CBC: .4byte gUnknown_2023D34 +_08052CC0: .4byte gUnknown_82FACB4 +_08052CC4: .4byte gUnknown_2023EB8 +_08052CC8: + movs r7, #3 + ldr r4, _08052D3C +_08052CCC: + bl sub_0806F050 + adds r5, r7, #0 + ands r5, r0 + lsls r0, r5, #2 + adds r0, r0, r4 + ldr r0, [r0] + ands r0, r6 + cmp r0, #0 + bne _08052CCC + ldr r4, _08052D40 + ldr r2, _08052D44 + lsls r1, r5, #1 + ldr r0, _08052D48 + ldrb r3, [r0] + movs r0, #0x58 + muls r0, r3, r0 + adds r1, r1, r0 + adds r2, #0xc + adds r1, r1, r2 + ldrh r0, [r1] + strh r0, [r4] + ldr r0, _08052D4C + strb r5, [r0] + ldr r2, _08052D50 + ldr r0, [r2] + ldr r1, _08052D54 + ands r0, r1 + str r0, [r2] + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _08052D58 + strb r0, [r1] + ldr r3, _08052D5C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08052D2C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08052D3C: .4byte gUnknown_82FACB4 +_08052D40: .4byte gUnknown_2023E92 +_08052D44: .4byte gUnknown_2023D28 +_08052D48: .4byte gUnknown_2023EAF +_08052D4C: .4byte gUnknown_2023E8C +_08052D50: .4byte gUnknown_2023F24 +_08052D54: .4byte 0xFFFFFBFF +_08052D58: .4byte gUnknown_2023EB0 +_08052D5C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052C28 + + thumb_func_start sub_08052D60 +sub_08052D60: @ 0x08052D60 + ldr r1, _08052D84 + ldr r0, _08052D88 + ldrb r2, [r0] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x12 + orrs r0, r1 + str r0, [r2] + ldr r1, _08052D8C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08052D84: .4byte gUnknown_2023D28 +_08052D88: .4byte gUnknown_2023EAF +_08052D8C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052D60 + + thumb_func_start sub_08052D90 +sub_08052D90: @ 0x08052D90 + push {r4, r5, lr} + ldr r0, _08052DE0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08052DE4 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _08052DE8 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _08052DDA + cmp r5, r3 + beq _08052DDA + ldr r2, _08052DEC + ldr r1, [r2] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08052DDA + movs r0, #0x40 + orrs r1, r0 + str r1, [r2] +_08052DDA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08052DE0: .4byte gUnknown_2023EAF +_08052DE4: .4byte gUnknown_2023EB0 +_08052DE8: .4byte gUnknown_2023D28 +_08052DEC: .4byte gUnknown_2023F24 + thumb_func_end sub_08052D90 + + thumb_func_start sub_08052DF0 +sub_08052DF0: @ 0x08052DF0 + push {lr} + bl sub_08052D90 + ldr r1, _08052E04 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08052E04: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052DF0 + + thumb_func_start sub_08052E08 +sub_08052E08: @ 0x08052E08 + push {lr} + ldr r2, _08052E5C + ldr r0, _08052E60 + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + movs r2, #0x28 + ldrsh r0, [r1, r2] + movs r2, #0x2c + ldrsh r1, [r1, r2] + movs r2, #0x30 + bl sub_08074BC4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r3, #0 + ldr r0, _08052E64 + ldrb r2, [r0] + cmp r1, r2 + ble _08052E42 + adds r2, r0, #0 +_08052E34: + adds r3, #2 + cmp r3, #0xb + bgt _08052E42 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r1, r0 + bgt _08052E34 +_08052E42: + ldr r2, _08052E68 + ldr r1, _08052E64 + adds r0, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldr r1, _08052E6C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08052E5C: .4byte gUnknown_2023D28 +_08052E60: .4byte gUnknown_2023EAF +_08052E64: .4byte gUnknown_82ECD8C +_08052E68: .4byte gUnknown_20240A4 +_08052E6C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052E08 + + thumb_func_start sub_08052E70 +sub_08052E70: @ 0x08052E70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, _08052FF0 + ldr r1, _08052FF4 + ldrb r3, [r1] + lsls r0, r3, #1 + adds r0, r0, r4 + ldrh r2, [r0] + mov r8, r1 + cmp r2, #0 + bne _08052E90 + b _08053018 +_08052E90: + ldr r0, _08052FF8 + cmp r2, r0 + bne _08052E98 + b _08053018 +_08052E98: + movs r7, #0 + ldr r0, _08052FFC + movs r1, #0x58 + muls r1, r3, r1 + adds r3, r0, #0 + adds r3, #0xc + adds r1, r1, r3 + ldrh r1, [r1] + cmp r2, r1 + beq _08052ED0 + adds r6, r4, #0 + mov r5, r8 + adds r4, r3, #0 + movs r3, #0x58 +_08052EB4: + adds r7, #1 + cmp r7, #3 + bgt _08052ED0 + ldrb r0, [r5] + lsls r2, r0, #1 + adds r2, r2, r6 + lsls r1, r7, #1 + muls r0, r3, r0 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08052EB4 +_08052ED0: + cmp r7, #4 + bne _08052ED6 + b _08053018 +_08052ED6: + mov r4, r8 + ldrb r0, [r4] + movs r1, #0x58 + mov sb, r1 + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r7, r0 + ldr r1, _08052FFC + adds r1, #0x24 + mov sl, r1 + add r0, sl + ldrb r0, [r0] + cmp r0, #1 + bhi _08052EF6 + b _08053018 +_08052EF6: + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + adds r6, r1, #2 + ldrb r0, [r4] + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r7, r0 + add r0, sl + ldrb r0, [r0] + cmp r0, r6 + bge _08052F14 + adds r6, r0, #0 +_08052F14: + ldr r1, _08053000 + movs r5, #0xfd + strb r5, [r1] + movs r0, #2 + strb r0, [r1, #1] + ldr r2, _08052FF0 + mov r3, r8 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #2] + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r4, _08053004 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + strb r5, [r4] + movs r0, #1 + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r6, [r4, #4] + subs r0, #2 + strb r0, [r4, #5] + mov r1, r8 + ldrb r0, [r1] + mov r1, sb + muls r1, r0, r1 + adds r1, r7, r1 + add r1, sl + ldrb r0, [r1] + subs r0, r0, r6 + strb r0, [r1] + ldr r4, _08053008 + mov r3, r8 + ldrb r0, [r3] + strb r0, [r4] + ldr r1, _0805300C + ldrb r3, [r4] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _08053010 + lsls r0, r7, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08052FC8 + mov r2, sb + muls r2, r3, r2 + ldr r0, _08052FFC + adds r0, #0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _08052FC8 + adds r1, r7, #0 + adds r1, #9 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r3, sl + adds r0, r2, r3 + adds r0, r0, r7 + str r0, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #1 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_08052FC8: + ldr r1, _08053014 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + ldr r1, _08052FFC + ldr r0, _08052FF4 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r7, r0 + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08053032 + adds r0, r2, #0 + bl sub_0803F4E0 + b _08053032 + .align 2, 0 +_08052FF0: .4byte gUnknown_2023EEC +_08052FF4: .4byte gUnknown_2023EB0 +_08052FF8: .4byte 0x0000FFFF +_08052FFC: .4byte gUnknown_2023D28 +_08053000: .4byte gUnknown_2022C0C +_08053004: .4byte gUnknown_2022C1C +_08053008: .4byte gUnknown_2023D08 +_0805300C: .4byte gUnknown_2023F60 +_08053010: .4byte gUnknown_82FACB4 +_08053014: .4byte gUnknown_2023EB8 +_08053018: + ldr r3, _08053044 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08053032: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053044: .4byte gUnknown_2023EB8 + thumb_func_end sub_08052E70 + + thumb_func_start sub_08053048 +sub_08053048: @ 0x08053048 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r4, #0 + str r4, [sp, #4] + mov r8, r4 + ldr r0, _080530B8 + ldrh r0, [r0] + cmp r0, #0xd7 + beq _08053064 + b _0805324E +_08053064: + ldr r6, _080530BC + mov r0, r8 + strb r0, [r6, #5] + ldr r5, _080530C0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _080530C4 + mov sl, r1 + cmp r0, #0 + bne _08053080 + ldr r2, _080530C8 + mov sl, r2 +_08053080: + ldr r4, _080530CC + ldrb r3, [r5] + movs r7, #0x58 + adds r2, r3, #0 + muls r2, r7, r2 + adds r0, r2, r4 + adds r1, r0, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, #0x2b + beq _080530D4 + 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, r2 + adds r0, r4, #0 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _080530D0 + ands r0, r1 + str r0, [r2] + b _080530E4 + .align 2, 0 +_080530B8: .4byte gUnknown_2023E8E +_080530BC: .4byte gUnknown_2023FD6 +_080530C0: .4byte gUnknown_2023EAF +_080530C4: .4byte gUnknown_20243E8 +_080530C8: .4byte gUnknown_2024190 +_080530CC: .4byte gUnknown_2023D28 +_080530D0: .4byte 0xF7FFFFFF +_080530D4: + ldrb r1, [r1] + adds r0, r3, #0 + bl sub_0813114C + ldrb r0, [r6, #5] + movs r1, #1 + orrs r0, r1 + strb r0, [r6, #5] +_080530E4: + ldr r7, _08053158 + ldr r0, _0805315C + ldrb r0, [r0] + bl sub_080A630C + movs r2, #2 + mov sb, r2 + mov r1, sb + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _08053160 + strb r0, [r1, #0x17] + strb r0, [r7] + ldr r0, _08053164 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0805318A + ldr r0, _08053168 + ldrb r2, [r0] + ldr r1, _0805316C + ldrb r3, [r7] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + bne _0805318A + ldr r5, _08053170 + movs r6, #0x58 + adds r4, r3, #0 + muls r4, r6, r4 + adds r0, r4, r5 + adds r1, r0, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, #0x2b + beq _08053178 + adds r0, r5, #0 + adds r0, #0x4c + adds r0, r4, r0 + str r2, [r0] + ldrb r0, [r7] + adds r2, r0, #0 + muls r2, r6, r2 + adds r0, r5, #0 + adds r0, #0x50 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, _08053174 + ands r0, r1 + str r0, [r2] + b _0805318A + .align 2, 0 +_08053158: .4byte gUnknown_2023D08 +_0805315C: .4byte gUnknown_2023EAF +_08053160: .4byte gUnknown_2024118 +_08053164: .4byte gUnknown_2022C90 +_08053168: .4byte gUnknown_2023EB4 +_0805316C: .4byte gUnknown_82FACB4 +_08053170: .4byte gUnknown_2023D28 +_08053174: .4byte 0xF7FFFFFF +_08053178: + ldrb r1, [r1] + adds r0, r3, #0 + bl sub_0813114C + ldr r1, _080531D0 + ldrb r0, [r1, #5] + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] +_0805318A: + movs r6, #0 + ldr r7, _080531D4 +_0805318E: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + add r4, sl + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r5, #0 + beq _08053246 + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + beq _08053246 + ldr r2, _080531D8 + ldr r0, _080531DC + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _080531E0 + movs r0, #0x58 + muls r0, r1, r0 + b _08053210 + .align 2, 0 +_080531D0: .4byte gUnknown_2023FD6 +_080531D4: .4byte gUnknown_2023D28 +_080531D8: .4byte gUnknown_2023D12 +_080531DC: .4byte gUnknown_2023EAF +_080531E0: + ldr r0, _08053218 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08053228 + ldr r0, _0805321C + ldrb r3, [r0] + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _08053228 + ldr r0, _08053220 + ldrb r1, [r0] + ldr r2, _08053224 + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08053228 + movs r0, #0x58 + muls r0, r3, r0 +_08053210: + adds r0, r0, r7 + adds r0, #0x20 + ldrb r0, [r0] + b _08053234 + .align 2, 0 +_08053218: .4byte gUnknown_2022C90 +_0805321C: .4byte gUnknown_2023D08 +_08053220: .4byte gUnknown_2023EB4 +_08053224: .4byte gUnknown_82FACB4 +_08053228: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806B15C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08053234: + cmp r0, #0x2b + beq _08053246 + movs r0, #1 + lsls r0, r6 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_08053246: + adds r6, #1 + cmp r6, #5 + ble _0805318E + b _080532CC +_0805324E: + ldr r1, _08053308 + movs r0, #4 + strb r0, [r1, #5] + movs r2, #0x3f + mov r8, r2 + ldr r3, _0805330C + ldr r2, _08053310 + ldrb r0, [r2] + movs r5, #0x58 + muls r0, r5, r0 + movs r1, #0x4c + adds r1, r1, r3 + mov sb, r1 + add r0, sb + str r4, [r0] + ldrb r0, [r2] + adds r1, r0, #0 + muls r1, r5, r1 + adds r7, r3, #0 + adds r7, #0x50 + adds r1, r1, r7 + ldr r0, [r1] + ldr r6, _08053314 + ands r0, r6 + str r0, [r1] + ldrb r0, [r2] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r4, _08053318 + strb r0, [r4] + ldr r0, _0805331C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080532CC + ldr r0, _08053320 + ldrb r2, [r0] + ldr r1, _08053324 + ldrb r3, [r4] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + bne _080532CC + adds r0, r3, #0 + muls r0, r5, r0 + add r0, sb + str r2, [r0] + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r7 + ldr r0, [r1] + ands r0, r6 + str r0, [r1] +_080532CC: + mov r2, r8 + cmp r2, #0 + beq _080532EE + ldr r4, _08053318 + ldr r0, _08053310 + ldrb r0, [r0] + strb r0, [r4] + add r0, sp, #4 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_080532EE: + ldr r1, _08053328 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053308: .4byte gUnknown_2023FD6 +_0805330C: .4byte gUnknown_2023D28 +_08053310: .4byte gUnknown_2023EAF +_08053314: .4byte 0xF7FFFFFF +_08053318: .4byte gUnknown_2023D08 +_0805331C: .4byte gUnknown_2022C90 +_08053320: .4byte gUnknown_2023EB4 +_08053324: .4byte gUnknown_82FACB4 +_08053328: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053048 + + thumb_func_start sub_0805332C +sub_0805332C: @ 0x0805332C + push {r4, r5, lr} + ldr r5, _0805336C + ldr r0, _08053370 + ldrb r0, [r0] + movs r4, #0x58 + adds r1, r0, #0 + muls r1, r4, r1 + adds r0, r5, #0 + adds r0, #0x50 + adds r1, r1, r0 + ldr r2, [r1] + movs r3, #0x80 + lsls r3, r3, #0x15 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08053378 + ldr r3, _08053374 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805339C + .align 2, 0 +_0805336C: .4byte gUnknown_2023D28 +_08053370: .4byte gUnknown_2023EB0 +_08053374: .4byte gUnknown_2023EB8 +_08053378: + orrs r2, r3 + str r2, [r1] + ldr r1, _080533A4 + ldr r0, _080533A8 + ldrb r0, [r0] + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #1 + str r0, [r1] + cmp r0, #0 + bne _08053394 + movs r0, #1 + str r0, [r1] +_08053394: + ldr r1, _080533AC + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805339C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080533A4: .4byte gUnknown_2023E94 +_080533A8: .4byte gUnknown_2023EAF +_080533AC: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805332C + + thumb_func_start sub_080533B0 +sub_080533B0: @ 0x080533B0 + push {r4, lr} + ldr r4, _08053404 + ldrb r0, [r4] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08053408 + lsls r2, r0, #1 + adds r0, r2, r0 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #0xa] + cmp r0, #3 + bne _08053414 + ldr r2, _0805340C + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08053410 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805342E + .align 2, 0 +_08053404: .4byte gUnknown_2023EAF +_08053408: .4byte gUnknown_2023F38 +_0805340C: .4byte gUnknown_2024020 +_08053410: .4byte gUnknown_2023EB8 +_08053414: + ldr r1, _08053434 + adds r1, r2, r1 + ldrh r2, [r1] + movs r0, #0x10 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r3, #0xa] + adds r0, #1 + strb r0, [r3, #0xa] + ldr r1, _08053438 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805342E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053434: .4byte gUnknown_2023F32 +_08053438: .4byte gUnknown_2023EB8 + thumb_func_end sub_080533B0 + + thumb_func_start sub_0805343C +sub_0805343C: @ 0x0805343C + ldr r1, _08053460 + ldr r0, _08053464 + ldrb r2, [r0] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x16 + orrs r0, r1 + str r0, [r2] + ldr r1, _08053468 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08053460: .4byte gUnknown_2023D28 +_08053464: .4byte gUnknown_2023EB0 +_08053468: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805343C + + thumb_func_start sub_0805346C +sub_0805346C: @ 0x0805346C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r6, #0 + movs r3, #0 + ldr r0, _080534B0 + adds r7, r0, #0 + ldr r0, _080534B4 + mov r8, r0 + ldrb r1, [r7] + cmp r6, r1 + bge _080534D8 + movs r5, #0x20 + ldr r0, _080534B8 + mov ip, r0 + ldr r0, _080534BC + adds r4, r0, #0 + adds r4, #0xf + ldr r2, _080534C0 +_08053494: + ldr r1, [r2] + adds r0, r1, #0 + ands r0, r5 + cmp r0, #0 + bne _080534AC + movs r0, #0x58 + muls r0, r3, r0 + add r0, ip + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x2b + bne _080534C4 +_080534AC: + adds r6, #1 + b _080534CC + .align 2, 0 +_080534B0: .4byte gUnknown_2023D10 +_080534B4: .4byte gUnknown_2023EAF +_080534B8: .4byte gUnknown_2023D28 +_080534BC: .4byte gUnknown_2023F60 +_080534C0: .4byte gUnknown_2023F50 +_080534C4: + orrs r1, r5 + str r1, [r2] + movs r0, #0x33 + strb r0, [r4] +_080534CC: + adds r4, #0x1c + adds r2, #4 + adds r3, #1 + ldrb r0, [r7] + cmp r3, r0 + blt _08053494 +_080534D8: + mov r1, r8 + ldrb r0, [r1] + bl sub_0803F2BC + ldr r0, _08053504 + ldrb r0, [r0] + cmp r6, r0 + bne _0805350C + ldr r3, _08053508 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08053514 + .align 2, 0 +_08053504: .4byte gUnknown_2023D10 +_08053508: .4byte gUnknown_2023EB8 +_0805350C: + ldr r1, _08053520 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08053514: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053520: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805346C + + thumb_func_start sub_08053524 +sub_08053524: @ 0x08053524 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _08053548 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08053558 + ldr r0, _0805354C + ldrb r0, [r0] + bl sub_0803F4E0 + ldr r1, _08053550 + ldr r0, _08053554 + str r0, [r1] + b _08053670 + .align 2, 0 +_08053548: .4byte gUnknown_2023F20 +_0805354C: .4byte gUnknown_2023EAF +_08053550: .4byte gUnknown_2023EB8 +_08053554: .4byte gUnknown_8286FE8 +_08053558: + ldr r2, _0805367C + ldr r1, _08053680 + ldrb r3, [r1] + movs r5, #0x58 + adds r0, r3, #0 + muls r0, r5, r0 + adds r4, r2, #0 + adds r4, #0x50 + adds r0, r0, r4 + ldr r0, [r0] + movs r7, #0x80 + lsls r7, r7, #5 + ands r0, r7 + adds r6, r1, #0 + mov sb, r2 + ldr r1, _08053684 + mov ip, r1 + ldr r2, _08053688 + mov r8, r2 + cmp r0, #0 + bne _080535CA + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + add r0, ip + ldrb r2, [r0, #0x11] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #5 + orrs r1, r2 + strb r1, [r0, #0x11] + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + 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, r1 + adds r1, r1, r4 + ldr r0, [r1] + orrs r0, r7 + str r0, [r1] + ldr r1, _0805368C + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r1 + mov r2, r8 + ldrh r1, [r2] + strh r1, [r0] +_080535CA: + ldrb r0, [r6] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + add r2, ip + ldrb r3, [r2, #0x11] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1c + subs r1, #1 + movs r0, #0xf + ands r1, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0x11] + cmp r1, #0 + bne _080535FE + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r4 + ldr r0, [r1] + ldr r2, _08053690 + ands r0, r2 + str r0, [r1] +_080535FE: + ldr r3, _08053694 + ldr r2, _08053698 + mov r0, r8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + strh r0, [r3] + movs r2, #1 + ldrb r1, [r6] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r1, ip + adds r4, r0, r1 + ldrb r0, [r4, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + movs r1, #5 + subs r1, r1, r0 + ldr r7, _0805369C + adds r5, r3, #0 + cmp r2, r1 + bge _0805364C + adds r1, r5, #0 + adds r3, r4, #0 + movs r4, #5 +_08053638: + ldrh r0, [r1] + lsls r0, r0, #1 + strh r0, [r1] + adds r2, #1 + ldrb r0, [r3, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + subs r0, r4, r0 + cmp r2, r0 + blt _08053638 +_0805364C: + ldrb r1, [r6] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, sb + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x17 + ands r0, r1 + cmp r0, #0 + beq _0805366A + ldrh r0, [r5] + lsls r0, r0, #1 + strh r0, [r5] +_0805366A: + ldr r0, [r7] + adds r0, #1 + str r0, [r7] +_08053670: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805367C: .4byte gUnknown_2023D28 +_08053680: .4byte gUnknown_2023EAF +_08053684: .4byte gUnknown_2023F60 +_08053688: .4byte gUnknown_2023E8E +_0805368C: .4byte gUnknown_2023F0C +_08053690: .4byte 0xFFFFEFFF +_08053694: .4byte gUnknown_20240A4 +_08053698: .4byte gUnknown_82ED220 +_0805369C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053524 + + thumb_func_start sub_080536A0 +sub_080536A0: @ 0x080536A0 + push {r4, r5, lr} + ldr r5, _080536F0 + ldr r0, _080536F4 + ldrb r1, [r0] + movs r0, #0x58 + adds r3, r1, #0 + muls r3, r0, r3 + adds r0, r5, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + ldr r4, _080536F8 + cmp r0, #0 + beq _080536FC + ldr r2, [r4] + ldrb r0, [r2, #1] + adds r0, r0, r3 + adds r1, r5, #0 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xc + bne _080536FC + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08053702 + .align 2, 0 +_080536F0: .4byte gUnknown_2023D28 +_080536F4: .4byte gUnknown_2023EB0 +_080536F8: .4byte gUnknown_2023EB8 +_080536FC: + ldr r0, [r4] + adds r0, #6 + str r0, [r4] +_08053702: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080536A0 + + thumb_func_start sub_08053708 +sub_08053708: @ 0x08053708 + push {r4, r5, lr} + ldr r0, _08053730 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08053744 + ldr r2, _08053734 + ldr r0, _08053738 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #0x10] + ldr r1, _0805373C + ldr r0, _08053740 + str r0, [r1] + b _0805379C + .align 2, 0 +_08053730: .4byte gUnknown_2023F20 +_08053734: .4byte gUnknown_2023F60 +_08053738: .4byte gUnknown_2023EAF +_0805373C: .4byte gUnknown_2023EB8 +_08053740: .4byte gUnknown_8286FE8 +_08053744: + ldr r5, _080537A4 + ldr r4, _080537A8 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1, #0x10] + cmp r0, #5 + beq _0805375C + adds r0, #1 + strb r0, [r1, #0x10] +_0805375C: + ldr r3, _080537AC + ldr r2, _080537B0 + ldr r0, _080537B4 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + strh r0, [r3] + movs r2, #1 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r4, _080537B8 + ldrb r1, [r0, #0x10] + cmp r2, r1 + bge _08053796 + adds r1, r3, #0 + adds r3, r0, #0 +_08053788: + ldrh r0, [r1] + lsls r0, r0, #1 + strh r0, [r1] + adds r2, #1 + ldrb r0, [r3, #0x10] + cmp r2, r0 + blt _08053788 +_08053796: + ldr r0, [r4] + adds r0, #1 + str r0, [r4] +_0805379C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080537A4: .4byte gUnknown_2023F60 +_080537A8: .4byte gUnknown_2023EAF +_080537AC: .4byte gUnknown_20240A4 +_080537B0: .4byte gUnknown_82ED220 +_080537B4: .4byte gUnknown_2023E8E +_080537B8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053708 + + thumb_func_start sub_080537BC +sub_080537BC: @ 0x080537BC + push {r4, lr} + ldr r2, _080537E8 + ldr r0, _080537EC + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x79 + bne _080537FC + ldr r4, _080537F0 + ldr r2, _080537F4 + ldr r0, _080537F8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2b + ldrb r1, [r0] + b _08053812 + .align 2, 0 +_080537E8: .4byte gUnknown_82ED220 +_080537EC: .4byte gUnknown_2023E8E +_080537F0: .4byte gUnknown_20240A4 +_080537F4: .4byte gUnknown_2023D28 +_080537F8: .4byte gUnknown_2023EAF +_080537FC: + ldr r4, _08053830 + ldr r2, _08053834 + ldr r0, _08053838 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2b + ldrb r0, [r0] + movs r1, #0xff + subs r1, r1, r0 +_08053812: + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + movs r1, #0x19 + bl __divsi3 + strh r0, [r4] + ldr r1, _0805383C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053830: .4byte gUnknown_20240A4 +_08053834: .4byte gUnknown_2023D28 +_08053838: .4byte gUnknown_2023EAF +_0805383C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080537BC + + thumb_func_start sub_08053840 +sub_08053840: @ 0x08053840 + push {r4, lr} + bl sub_0806F050 + movs r4, #0xff + ands r4, r0 + cmp r4, #0x65 + bgt _0805385C + ldr r1, _08053858 + movs r0, #0x28 + strh r0, [r1] + b _0805389E + .align 2, 0 +_08053858: .4byte gUnknown_20240A4 +_0805385C: + cmp r4, #0xb1 + bgt _0805386C + ldr r1, _08053868 + movs r0, #0x50 + strh r0, [r1] + b _0805389E + .align 2, 0 +_08053868: .4byte gUnknown_20240A4 +_0805386C: + cmp r4, #0xcb + bgt _0805387C + ldr r1, _08053878 + movs r0, #0x78 + strh r0, [r1] + b _0805389E + .align 2, 0 +_08053878: .4byte gUnknown_20240A4 +_0805387C: + ldr r3, _080538A8 + ldr r2, _080538AC + ldr r0, _080538B0 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #2 + str r0, [r3] + cmp r0, #0 + bne _08053898 + movs r0, #1 + str r0, [r3] +_08053898: + ldr r0, [r3] + rsbs r0, r0, #0 + str r0, [r3] +_0805389E: + cmp r4, #0xcb + bgt _080538BC + ldr r1, _080538B4 + ldr r0, _080538B8 + b _080538F6 + .align 2, 0 +_080538A8: .4byte gUnknown_2023E94 +_080538AC: .4byte gUnknown_2023D28 +_080538B0: .4byte gUnknown_2023EB0 +_080538B4: .4byte gUnknown_2023EB8 +_080538B8: .4byte gUnknown_8286FB8 +_080538BC: + ldr r2, _080538D8 + ldr r0, _080538DC + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r1, [r0, #0x2c] + ldrh r0, [r0, #0x28] + cmp r1, r0 + bne _080538E8 + ldr r1, _080538E0 + ldr r0, _080538E4 + b _080538F6 + .align 2, 0 +_080538D8: .4byte gUnknown_2023D28 +_080538DC: .4byte gUnknown_2023EB0 +_080538E0: .4byte gUnknown_2023EB8 +_080538E4: .4byte gUnknown_8288483 +_080538E8: + ldr r2, _08053900 + ldrb r1, [r2] + movs r0, #0xf7 + ands r0, r1 + strb r0, [r2] + ldr r1, _08053904 + ldr r0, _08053908 +_080538F6: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08053900: .4byte gUnknown_2023F20 +_08053904: .4byte gUnknown_2023EB8 +_08053908: .4byte gUnknown_8288469 + thumb_func_end sub_08053840 + + thumb_func_start sub_0805390C +sub_0805390C: @ 0x0805390C + push {r4, r5, r6, r7, lr} + ldr r7, _08053940 + ldrb r0, [r7] + bl sub_080A630C + ldr r4, _08053944 + movs r6, #1 + adds r1, r6, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r1, [r1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08053950 + ldr r2, _08053948 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0805394C + movs r0, #0 + strb r0, [r1, #5] + b _08053998 + .align 2, 0 +_08053940: .4byte gUnknown_2023EAF +_08053944: .4byte gUnknown_2023F32 +_08053948: .4byte gUnknown_2023F20 +_0805394C: .4byte gUnknown_2023FD6 +_08053950: + ldrb r0, [r7] + bl sub_080A630C + adds r1, r6, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + movs r2, #0x20 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r7] + bl sub_080A630C + ldr r5, _080539A8 + adds r1, r6, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r4, #5 + strb r4, [r0, #6] + ldrb r0, [r7] + bl sub_080A630C + adds r1, r6, #0 + ands r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r7] + strb r1, [r0, #7] + ldr r0, _080539AC + strb r4, [r0, #5] +_08053998: + ldr r1, _080539B0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080539A8: .4byte gUnknown_2023F38 +_080539AC: .4byte gUnknown_2023FD6 +_080539B0: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805390C + + thumb_func_start sub_080539B4 +sub_080539B4: @ 0x080539B4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #4 + bgt _080539E0 + ldr r1, _080539DC + movs r0, #0xa + strh r0, [r1] + movs r3, #4 + b _08053A4C + .align 2, 0 +_080539DC: .4byte gUnknown_20240A4 +_080539E0: + cmp r3, #0xe + bgt _080539F4 + ldr r1, _080539F0 + movs r0, #0x1e + strh r0, [r1] + movs r3, #5 + b _08053A4C + .align 2, 0 +_080539F0: .4byte gUnknown_20240A4 +_080539F4: + cmp r3, #0x22 + bgt _08053A08 + ldr r1, _08053A04 + movs r0, #0x32 + strh r0, [r1] + movs r3, #6 + b _08053A4C + .align 2, 0 +_08053A04: .4byte gUnknown_20240A4 +_08053A08: + cmp r3, #0x40 + bgt _08053A1C + ldr r1, _08053A18 + movs r0, #0x46 + strh r0, [r1] + movs r3, #7 + b _08053A4C + .align 2, 0 +_08053A18: .4byte gUnknown_20240A4 +_08053A1C: + cmp r3, #0x54 + bgt _08053A30 + ldr r1, _08053A2C + movs r0, #0x5a + strh r0, [r1] + movs r3, #8 + b _08053A4C + .align 2, 0 +_08053A2C: .4byte gUnknown_20240A4 +_08053A30: + cmp r3, #0x5e + bgt _08053A44 + ldr r1, _08053A40 + movs r0, #0x6e + strh r0, [r1] + movs r3, #9 + b _08053A4C + .align 2, 0 +_08053A40: .4byte gUnknown_20240A4 +_08053A44: + ldr r1, _08053AB8 + movs r0, #0x96 + strh r0, [r1] + movs r3, #0xa +_08053A4C: + ldr r1, _08053ABC + movs r2, #0 + movs r0, #0xfd + strb r0, [r1] + movs r0, #1 + strb r0, [r1, #1] + strb r0, [r1, #2] + movs r0, #2 + strb r0, [r1, #3] + strb r3, [r1, #4] + movs r0, #0xff + strb r0, [r1, #5] + ldr r1, _08053AC0 + strb r2, [r1] + ldr r0, _08053AC4 + ldrb r3, [r0] + adds r6, r1, #0 + ldr r0, _08053AC8 + mov r8, r0 + cmp r2, r3 + bhs _08053AA4 + adds r4, r6, #0 + ldr r0, _08053ACC + ldrb r5, [r0] + ldr r1, _08053AD0 + mov ip, r1 + ldr r7, _08053AD4 +_08053A82: + ldrb r2, [r4] + cmp r2, r5 + beq _08053A98 + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, r1, #2 + add r1, ip + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + beq _08053AA4 +_08053A98: + adds r0, r2, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r3 + blo _08053A82 +_08053AA4: + mov r1, r8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053AB8: .4byte gUnknown_20240A4 +_08053ABC: .4byte gUnknown_2022C0C +_08053AC0: .4byte gUnknown_2023EB0 +_08053AC4: .4byte gUnknown_2023D10 +_08053AC8: .4byte gUnknown_2023EB8 +_08053ACC: .4byte gUnknown_2023EAF +_08053AD0: .4byte gUnknown_82FACB4 +_08053AD4: .4byte gUnknown_2023EB4 + thumb_func_end sub_080539B4 + + thumb_func_start sub_08053AD8 +sub_08053AD8: @ 0x08053AD8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08053AFC + ldrb r0, [r0] + cmp r0, #1 + bne _08053B08 + ldr r0, _08053B00 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08053B04 + movs r0, #1 + b _08053B22 + .align 2, 0 +_08053AFC: .4byte gUnknown_2023EB6 +_08053B00: .4byte gUnknown_2023EAF +_08053B04: + movs r0, #0 + b _08053B22 +_08053B08: + ldr r0, _08053B1C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08053B20 + movs r0, #3 + b _08053B22 + .align 2, 0 +_08053B1C: .4byte gUnknown_2023EAF +_08053B20: + movs r0, #2 +_08053B22: + bl sub_080A631C + ldr r1, _08053BFC + strb r0, [r1] + ldr r0, _08053C00 + ldr r1, _08053BFC + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _08053B3A + b _08053C40 +_08053B3A: + ldr r5, _08053C04 + ldr r0, _08053C08 + ldr r1, [r0] + adds r1, r3, r1 + ldrb r2, [r5] + ldrb r1, [r1, #0xc] + cmp r2, r1 + bne _08053C40 + ldr r4, _08053C0C + movs r2, #0x58 + adds r0, r3, #0 + muls r0, r2, r0 + adds r1, r4, #0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x27 + ands r0, r1 + cmp r0, #0 + bne _08053C40 + ldrb r0, [r5] + muls r0, r2, r0 + adds r0, r0, r4 + ldrh r0, [r0, #0x28] + cmp r0, #0 + beq _08053C40 + ldr r0, _08053C10 + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0x18] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08053C40 + ldr r0, _08053C14 + lsls r1, r3, #1 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0xe4 + bne _08053C40 + movs r1, #0 + ldr r0, _08053C18 + ldr r2, _08053C1C + mov r8, r2 + ldr r7, _08053C20 + mov sl, r7 + ldr r2, _08053C24 + mov sb, r2 + ldr r7, _08053C28 + mov ip, r7 + ldrb r2, [r0] + cmp r1, r2 + bge _08053BC6 + ldr r6, _08053C2C + ldr r5, _08053BFC + ldr r4, _08053C30 + movs r3, #0xb + adds r2, r0, #0 +_08053BB0: + adds r0, r1, r6 + ldrb r0, [r0] + ldrb r7, [r5] + cmp r0, r7 + bne _08053BBE + adds r0, r1, r4 + strb r3, [r0] +_08053BBE: + adds r1, #1 + ldrb r0, [r2] + cmp r1, r0 + blt _08053BB0 +_08053BC6: + movs r0, #0xe4 + mov r1, r8 + strh r0, [r1] + ldr r2, _08053BFC + ldrb r0, [r2] + ldr r7, _08053C08 + ldr r1, [r7] + adds r0, r0, r1 + adds r0, #0x80 + ldrb r0, [r0] + mov r1, sb + strb r0, [r1] + mov r2, sl + strb r0, [r2] + ldr r7, _08053C34 + ldr r0, [r7] + adds r0, #5 + str r0, [r7] + movs r0, #1 + ldr r1, _08053C38 + strb r0, [r1, #0x18] + mov r2, ip + ldr r0, [r2] + ldr r1, _08053C3C + ands r0, r1 + str r0, [r2] + b _08053C5A + .align 2, 0 +_08053BFC: .4byte gUnknown_2023EB0 +_08053C00: .4byte gUnknown_2023EC0 +_08053C04: .4byte gUnknown_2023EAF +_08053C08: .4byte gUnknown_2024140 +_08053C0C: .4byte gUnknown_2023D28 +_08053C10: .4byte gUnknown_2023F60 +_08053C14: .4byte gUnknown_2023F18 +_08053C18: .4byte gUnknown_2023D10 +_08053C1C: .4byte gUnknown_2023E8E +_08053C20: .4byte gUnknown_2023E8C +_08053C24: .4byte gUnknown_2023E8D +_08053C28: .4byte gUnknown_2023F24 +_08053C2C: .4byte gUnknown_2023D22 +_08053C30: .4byte gUnknown_2023D1E +_08053C34: .4byte gUnknown_2023EB8 +_08053C38: .4byte gUnknown_2024118 +_08053C3C: .4byte 0xFFFFFBFF +_08053C40: + ldr r3, _08053C68 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08053C5A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053C68: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053AD8 + + thumb_func_start sub_08053C6C +sub_08053C6C: @ 0x08053C6C + push {lr} + ldr r2, _08053C8C + ldrh r1, [r2] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08053C98 + ldr r2, _08053C90 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08053C94 + movs r0, #2 + strb r0, [r1, #5] + b _08053CAA + .align 2, 0 +_08053C8C: .4byte gUnknown_2024070 +_08053C90: .4byte gUnknown_2023F20 +_08053C94: .4byte gUnknown_2023FD6 +_08053C98: + movs r0, #0x20 + strh r0, [r2] + ldr r1, _08053CB8 + movs r0, #4 + strb r0, [r1, #5] + ldr r0, _08053CBC + adds r0, #0x28 + movs r1, #5 + strb r1, [r0] +_08053CAA: + ldr r1, _08053CC0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08053CB8: .4byte gUnknown_2023FD6 +_08053CBC: .4byte gUnknown_2024074 +_08053CC0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053C6C + + thumb_func_start sub_08053CC4 +sub_08053CC4: @ 0x08053CC4 + push {r4, r5, lr} + ldr r5, _08053D10 + ldr r4, _08053D14 + ldrb r0, [r4] + movs r3, #0x58 + muls r0, r3, r0 + adds r2, r0, r5 + ldrh r0, [r2, #0x2c] + lsrs r1, r0, #1 + cmp r1, #0 + bne _08053CDC + movs r1, #1 +_08053CDC: + movs r0, #0x19 + ldrsb r0, [r2, r0] + cmp r0, #0xb + bgt _08053D20 + ldrh r0, [r2, #0x28] + cmp r0, r1 + bls _08053D20 + movs r0, #0xc + strb r0, [r2, #0x19] + ldr r1, _08053D18 + ldrb r0, [r4] + muls r0, r3, r0 + adds r0, r0, r5 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #1 + str r0, [r1] + cmp r0, #0 + bne _08053D04 + movs r0, #1 + str r0, [r1] +_08053D04: + ldr r1, _08053D1C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08053D3A + .align 2, 0 +_08053D10: .4byte gUnknown_2023D28 +_08053D14: .4byte gUnknown_2023EAF +_08053D18: .4byte gUnknown_2023E94 +_08053D1C: .4byte gUnknown_2023EB8 +_08053D20: + ldr r3, _08053D40 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08053D3A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08053D40: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053CC4 + + thumb_func_start sub_08053D44 +sub_08053D44: @ 0x08053D44 + push {r4, r5, r6, r7, lr} + movs r2, #0 + ldr r7, _08053D7C + ldr r6, _08053D80 + movs r4, #0x58 + ldr r3, _08053D84 + ldr r5, _08053D88 +_08053D52: + ldrb r0, [r6] + adds r1, r0, #0 + muls r1, r4, r1 + adds r1, r2, r1 + adds r1, r1, r3 + ldrb r0, [r5] + muls r0, r4, r0 + adds r0, r2, r0 + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #7 + ble _08053D52 + ldr r0, [r7] + adds r0, #5 + str r0, [r7] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08053D7C: .4byte gUnknown_2023EB8 +_08053D80: .4byte gUnknown_2023EAF +_08053D84: .4byte gUnknown_2023D40 +_08053D88: .4byte gUnknown_2023EB0 + thumb_func_end sub_08053D44 + + thumb_func_start sub_08053D8C +sub_08053D8C: @ 0x08053D8C + push {r4, r5, r6, lr} + ldr r1, _08053DFC + ldr r5, _08053E00 + ldrb r2, [r5] + movs r6, #0x58 + adds r0, r2, #0 + muls r0, r6, r0 + adds r4, r1, #0 + adds r4, #0x50 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0xe0 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08053E20 + ldr r1, _08053E04 + ldr r3, _08053E08 + ldrb r0, [r3] + strb r0, [r1, #0x17] + ldrb r0, [r5] + adds r1, r0, #0 + muls r1, r6, r1 + adds r1, r1, r4 + ldr r0, [r1] + ldr r2, _08053E0C + ands r0, r2 + str r0, [r1] + ldrb r0, [r5] + ldr r1, _08053E10 + ldr r2, [r1] + adds r0, r0, r2 + ldrb r0, [r0, #0x14] + strb r0, [r3] + ldr r1, _08053E14 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0, #4] + strb r0, [r1, #2] + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0, #5] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + bl sub_0803F73C + ldr r1, _08053E18 + ldr r0, _08053E1C + b _08053ECA + .align 2, 0 +_08053DFC: .4byte gUnknown_2023D28 +_08053E00: .4byte gUnknown_2023EAF +_08053E04: .4byte gUnknown_2024118 +_08053E08: .4byte gUnknown_2023EB0 +_08053E0C: .4byte 0xFFFF1FFF +_08053E10: .4byte gUnknown_2024140 +_08053E14: .4byte gUnknown_2022C0C +_08053E18: .4byte gUnknown_2023EB8 +_08053E1C: .4byte gUnknown_828954D +_08053E20: + ldr r4, _08053E54 + lsls r0, r2, #2 + adds r3, r0, r4 + ldr r1, [r3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08053E60 + movs r0, #5 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r3] + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, [r1] + movs r2, #4 + rsbs r2, r2, #0 + ands r0, r2 + str r0, [r1] + bl sub_0803F73C + ldr r1, _08053E58 + ldr r0, _08053E5C + b _08053ECA + .align 2, 0 +_08053E54: .4byte gUnknown_2023F50 +_08053E58: .4byte gUnknown_2023EB8 +_08053E5C: .4byte gUnknown_828955E +_08053E60: + adds r0, r2, #0 + bl sub_080A62F8 + ldr r4, _08053EB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08053EC4 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r2, [r0] + ldr r1, _08053EB4 + ands r1, r2 + movs r4, #0 + strh r1, [r0] + ldrb r0, [r5] + bl sub_080A62F8 + ldr r2, _08053EB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + strb r4, [r1, #0xa] + bl sub_0803F73C + ldr r1, _08053EBC + ldr r0, _08053EC0 + b _08053ECA + .align 2, 0 +_08053EB0: .4byte gUnknown_2023F32 +_08053EB4: .4byte 0x0000FFEF +_08053EB8: .4byte gUnknown_2023F38 +_08053EBC: .4byte gUnknown_2023EB8 +_08053EC0: .4byte gUnknown_8289565 +_08053EC4: + ldr r1, _08053ED4 + ldr r0, [r1] + adds r0, #1 +_08053ECA: + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08053ED4: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053D8C + + thumb_func_start sub_08053ED8 +sub_08053ED8: @ 0x08053ED8 + ldr r1, _08053EFC + ldr r0, _08053F00 + ldrb r2, [r0] + movs r0, #0x58 + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x17 + orrs r0, r1 + str r0, [r2] + ldr r1, _08053F04 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08053EFC: .4byte gUnknown_2023D28 +_08053F00: .4byte gUnknown_2023EAF +_08053F04: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053ED8 + + thumb_func_start sub_08053F08 +sub_08053F08: @ 0x08053F08 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _08053F74 + ldr r5, _08053F78 + ldrb r0, [r5] + strb r0, [r1] + ldr r7, _08053F7C + ldrb r0, [r5] + movs r6, #0x58 + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r1, [r0, #0x28] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + beq _08053FE8 + ldr r4, _08053F80 + ldrh r0, [r4] + cmp r0, #0 + beq _08053F5A + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08053F5A + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08053F88 +_08053F5A: + ldr r3, _08053F84 + ldr r2, _08053F7C + ldr r0, _08053F78 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #1 + str r0, [r3] + adds r1, r3, #0 + b _08053FC2 + .align 2, 0 +_08053F74: .4byte gUnknown_2023EB0 +_08053F78: .4byte gUnknown_2023EAF +_08053F7C: .4byte gUnknown_2023D28 +_08053F80: .4byte gUnknown_2024070 +_08053F84: .4byte gUnknown_2023E94 +_08053F88: + ldrh r1, [r4] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08053FB4 + ldr r4, _08053FB0 + ldrb r0, [r5] + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r1, [r0, #0x2c] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + movs r1, #0x1e + bl __divsi3 + str r0, [r4] + adds r1, r4, #0 + b _08053FC2 + .align 2, 0 +_08053FB0: .4byte gUnknown_2023E94 +_08053FB4: + ldr r1, _08053FE0 + ldrb r0, [r5] + muls r0, r6, r0 + adds r0, r0, r7 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #2 + str r0, [r1] +_08053FC2: + adds r2, r1, #0 + ldr r0, [r2] + cmp r0, #0 + bne _08053FCE + movs r0, #1 + str r0, [r2] +_08053FCE: + ldr r0, [r1] + rsbs r0, r0, #0 + str r0, [r1] + ldr r1, _08053FE4 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08054002 + .align 2, 0 +_08053FE0: .4byte gUnknown_2023E94 +_08053FE4: .4byte gUnknown_2023EB8 +_08053FE8: + ldr r3, _0805400C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08054002: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805400C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08053F08 + + thumb_func_start sub_08054010 +sub_08054010: @ 0x08054010 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _08054120 + ldr r0, _08054124 + ldrb r1, [r0] + movs r0, #0x58 + adds r4, r1, #0 + muls r4, r0, r4 + adds r4, r4, r2 + ldrb r0, [r4, #0x14] + mov sl, r0 + mov r7, sl + lsls r7, r7, #0x1b + adds r0, r7, #0 + lsrs r0, r0, #0x1b + mov sl, r0 + movs r1, #2 + mov r2, sl + ands r2, r1 + asrs r2, r2, #1 + ldrh r7, [r4, #0x14] + mov sb, r7 + mov r0, sb + lsls r0, r0, #0x16 + mov sb, r0 + lsrs r3, r0, #0x1b + adds r0, r1, #0 + ands r0, r3 + orrs r2, r0 + ldrb r7, [r4, #0x15] + mov r8, r7 + mov r0, r8 + lsls r0, r0, #0x19 + mov r8, r0 + lsrs r3, r0, #0x1b + adds r0, r1, #0 + ands r0, r3 + lsls r0, r0, #1 + orrs r2, r0 + ldr r6, [r4, #0x14] + lsls r6, r6, #0xc + lsrs r3, r6, #0x1b + adds r0, r1, #0 + ands r0, r3 + lsls r0, r0, #2 + orrs r2, r0 + ldrh r5, [r4, #0x16] + lsls r5, r5, #0x17 + lsrs r3, r5, #0x1b + adds r0, r1, #0 + ands r0, r3 + lsls r0, r0, #3 + orrs r2, r0 + ldrb r3, [r4, #0x17] + lsls r3, r3, #0x1a + lsrs r0, r3, #0x1b + ands r1, r0 + lsls r1, r1, #4 + orrs r2, r1 + movs r1, #1 + adds r4, r1, #0 + mov r7, sl + ands r4, r7 + mov r0, sb + lsrs r0, r0, #0x1b + mov sb, r0 + adds r0, r1, #0 + mov r7, sb + ands r0, r7 + lsls r0, r0, #1 + orrs r4, r0 + mov r0, r8 + lsrs r0, r0, #0x1b + mov r8, r0 + adds r0, r1, #0 + mov r7, r8 + ands r0, r7 + lsls r0, r0, #2 + orrs r4, r0 + lsrs r6, r6, #0x1b + adds r0, r1, #0 + ands r0, r6 + lsls r0, r0, #3 + orrs r4, r0 + lsrs r5, r5, #0x1b + adds r0, r1, #0 + ands r0, r5 + lsls r0, r0, #4 + orrs r4, r0 + lsrs r3, r3, #0x1b + ands r1, r3 + lsls r1, r1, #5 + orrs r4, r1 + ldr r5, _08054128 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + movs r1, #0x3f + bl __divsi3 + adds r0, #0x1e + strh r0, [r5] + ldr r6, _0805412C + ldr r5, [r6] + lsls r0, r4, #4 + subs r0, r0, r4 + movs r1, #0x3f + bl __divsi3 + adds r0, #1 + strb r0, [r5, #0x13] + ldr r1, [r6] + ldrb r0, [r1, #0x13] + cmp r0, #8 + bls _08054100 + adds r0, #1 + strb r0, [r1, #0x13] +_08054100: + ldr r2, [r6] + ldrb r0, [r2, #0x13] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r2, #0x13] + ldr r1, _08054130 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08054120: .4byte gUnknown_2023D28 +_08054124: .4byte gUnknown_2023EAF +_08054128: .4byte gUnknown_20240A4 +_0805412C: .4byte gUnknown_2024140 +_08054130: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054010 + + thumb_func_start sub_08054134 +sub_08054134: @ 0x08054134 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08054190 + movs r1, #0 + strb r1, [r0] + ldr r1, _08054194 + ldrb r1, [r1] + adds r6, r0, #0 + ldr r0, _08054198 + mov r8, r0 + cmp r1, #0 + beq _0805417E + adds r3, r6, #0 + ldr r0, _0805419C + ldrb r5, [r0] + ldr r0, _080541A0 + mov ip, r0 + adds r4, r1, #0 + ldr r7, _080541A4 +_0805415C: + ldrb r2, [r3] + cmp r2, r5 + beq _08054172 + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, r1, #2 + add r1, ip + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + beq _0805417E +_08054172: + adds r0, r2, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r4 + blo _0805415C +_0805417E: + mov r1, r8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08054190: .4byte gUnknown_2023EB0 +_08054194: .4byte gUnknown_2023D10 +_08054198: .4byte gUnknown_2023EB8 +_0805419C: .4byte gUnknown_2023EAF +_080541A0: .4byte gUnknown_82FACB4 +_080541A4: .4byte gUnknown_2023EB4 + thumb_func_end sub_08054134 + + thumb_func_start sub_080541A8 +sub_080541A8: @ 0x080541A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r0, _080541E0 + mov r8, r0 + ldr r6, _080541E4 + ldrb r1, [r6] + adds r0, r1, r0 + ldrb r7, [r0] + cmp r7, #0 + beq _080541EC + ldr r3, _080541E8 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _080542DC + .align 2, 0 +_080541E0: .4byte gUnknown_2024074 +_080541E4: .4byte gUnknown_2023EB0 +_080541E8: .4byte gUnknown_2023EB8 +_080541EC: + adds r0, r1, #0 + bl sub_080A630C + ldr r4, _080542B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + mov sl, r1 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r2, [r0] + movs r1, #0x40 + movs r5, #0 + mov r3, sp + strh r5, [r3, #0x10] + orrs r1, r2 + strh r1, [r0] + ldrb r0, [r6] + lsls r0, r0, #1 + mov r1, r8 + adds r1, #0x18 + adds r0, r0, r1 + ldr r1, _080542B4 + mov sb, r1 + ldrh r1, [r1] + strh r1, [r0] + mov r0, r8 + adds r0, #4 + ldrb r2, [r6] + adds r0, r0, r2 + ldr r5, _080542B8 + ldrb r1, [r5] + strb r1, [r0] + ldrb r0, [r6] + add r0, r8 + movs r1, #3 + strb r1, [r0] + ldrb r0, [r6] + bl sub_080A630C + mov r1, sl + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + ldr r2, _080542BC + adds r0, r0, r2 + ldrb r1, [r6] + muls r1, r4, r1 + adds r1, r1, r2 + mov r4, sb + ldrh r2, [r4] + str r7, [sp] + str r7, [sp, #4] + ldrb r4, [r5] + str r4, [sp, #8] + ldrb r4, [r6] + str r4, [sp, #0xc] + bl sub_080690BC + ldrb r1, [r6] + lsls r1, r1, #2 + mov r2, r8 + adds r2, #8 + adds r1, r1, r2 + str r0, [r1] + ldr r1, _080542C0 + ldrb r0, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _0805429C + ldrb r4, [r6] + lsls r4, r4, #2 + adds r4, r4, r2 + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + movs r1, #0xa + bl __divsi3 + str r0, [r4] +_0805429C: + mov r5, sb + ldrh r1, [r5] + ldr r0, _080542C4 + cmp r1, r0 + bne _080542CC + ldr r0, _080542C8 + mov r1, sl + strb r1, [r0, #5] + b _080542D4 + .align 2, 0 +_080542B0: .4byte gUnknown_2023F32 +_080542B4: .4byte gUnknown_2023E8E +_080542B8: .4byte gUnknown_2023EAF +_080542BC: .4byte gUnknown_2023D28 +_080542C0: .4byte gUnknown_2023FE0 +_080542C4: .4byte 0x00000161 +_080542C8: .4byte gUnknown_2023FD6 +_080542CC: + ldr r0, _080542EC + mov r2, sp + ldrb r2, [r2, #0x10] + strb r2, [r0, #5] +_080542D4: + ldr r1, _080542F0 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080542DC: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080542EC: .4byte gUnknown_2023FD6 +_080542F0: .4byte gUnknown_2023EB8 + thumb_func_end sub_080541A8 + + thumb_func_start sub_080542F4 +sub_080542F4: @ 0x080542F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _08054338 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r7, _0805433C + cmp r0, #0 + bne _0805430E + ldr r7, _08054340 +_0805430E: + ldr r2, _08054344 + ldr r0, _08054348 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08054350 + ldr r3, _0805434C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + b _080544EC + .align 2, 0 +_08054338: .4byte gUnknown_2023EAF +_0805433C: .4byte gUnknown_20243E8 +_08054340: .4byte gUnknown_2024190 +_08054344: .4byte gUnknown_2023D28 +_08054348: .4byte gUnknown_2023EB0 +_0805434C: .4byte gUnknown_2023EB8 +_08054350: + ldr r6, _0805448C + ldrb r0, [r6] + mov r8, r0 + cmp r0, #5 + bls _0805435C + b _080544B8 +_0805435C: + adds r4, r6, #0 + movs r5, #0x64 +_08054360: + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r7, r0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080543A4 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r7, r0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _080543A4 + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r7, r0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _080543A4 + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r7, r0 + movs r1, #0x37 + bl sub_0806A058 + cmp r0, #0 + beq _080543B4 +_080543A4: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r6, r4, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _08054360 +_080543B4: + ldr r1, _0805448C + mov sb, r1 + ldrb r2, [r1] + cmp r2, #5 + bhi _080544B8 + ldr r1, _08054490 + movs r0, #0xfd + strb r0, [r1] + movs r0, #4 + strb r0, [r1, #1] + ldr r6, _08054494 + ldrb r0, [r6] + strb r0, [r1, #2] + strb r2, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _08054498 + ldr r0, [r1] + adds r0, #9 + str r0, [r1] + ldr r2, _0805449C + mov r8, r2 + ldr r5, _080544A0 + mov r1, sb + ldrb r0, [r1] + movs r4, #0x64 + muls r0, r4, r0 + adds r0, r7, r0 + movs r1, #0xb + bl sub_0806A058 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r3, [r1, #1] + mov r2, r8 + str r3, [r2] + ldr r2, _080544A4 + ldr r0, _080544A8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + muls r0, r3, r0 + mov r1, r8 + str r0, [r1] + mov r2, sb + ldrb r0, [r2] + muls r0, r4, r0 + adds r0, r7, r0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #1 + movs r1, #5 + bl __udivsi3 + adds r0, #2 + mov r2, r8 + ldr r1, [r2] + muls r0, r1, r0 + str r0, [r2] + ldr r3, _080544AC + ldr r1, _080544B0 + ldrb r2, [r1] + movs r1, #0x58 + muls r1, r2, r1 + adds r1, r1, r3 + ldrh r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r1, [r1, #2] + bl __divsi3 + mov r1, r8 + str r0, [r1] + movs r1, #0x32 + bl __divsi3 + adds r2, r0, #2 + mov r0, r8 + str r2, [r0] + ldr r1, _080544B4 + ldrb r0, [r6] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08054480 + lsls r0, r2, #4 + subs r0, r0, r2 + movs r1, #0xa + bl __divsi3 + mov r1, r8 + str r0, [r1] +_08054480: + mov r2, sb + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _080544F2 + .align 2, 0 +_0805448C: .4byte gUnknown_2023FD6 +_08054490: .4byte gUnknown_2022C0C +_08054494: .4byte gUnknown_2023EAF +_08054498: .4byte gUnknown_2023EB8 +_0805449C: .4byte gUnknown_2023E94 +_080544A0: .4byte gUnknown_82F0D54 +_080544A4: .4byte gUnknown_82ED220 +_080544A8: .4byte gUnknown_2023E8E +_080544AC: .4byte gUnknown_2023D28 +_080544B0: .4byte gUnknown_2023EB0 +_080544B4: .4byte gUnknown_2023FE0 +_080544B8: + mov r0, r8 + cmp r0, #0 + beq _080544D8 + ldr r3, _080544D4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + b _080544EC + .align 2, 0 +_080544D4: .4byte gUnknown_2023EB8 +_080544D8: + ldr r3, _08054500 + ldr r2, [r3] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] +_080544EC: + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_080544F2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08054500: .4byte gUnknown_2023EB8 + thumb_func_end sub_080542F4 + + thumb_func_start sub_08054504 +sub_08054504: @ 0x08054504 + push {lr} + ldr r0, _08054518 + ldrh r1, [r0] + cmp r1, #0x5b + beq _08054544 + cmp r1, #0x5b + bgt _0805451C + cmp r1, #0x13 + beq _08054528 + b _08054570 + .align 2, 0 +_08054518: .4byte gUnknown_2023E8E +_0805451C: + ldr r0, _08054538 + cmp r1, r0 + beq _0805455C + adds r0, #0x31 + cmp r1, r0 + bne _08054570 +_08054528: + ldr r2, _0805453C + ldr r0, _08054540 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x40 + b _0805456C + .align 2, 0 +_08054538: .4byte 0x00000123 +_0805453C: .4byte gUnknown_2023F50 +_08054540: .4byte gUnknown_2023EAF +_08054544: + ldr r2, _08054554 + ldr r0, _08054558 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x80 + b _0805456C + .align 2, 0 +_08054554: .4byte gUnknown_2023F50 +_08054558: .4byte gUnknown_2023EAF +_0805455C: + ldr r2, _0805457C + ldr r0, _08054580 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #0xb +_0805456C: + orrs r0, r2 + str r0, [r1] +_08054570: + ldr r1, _08054584 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0805457C: .4byte gUnknown_2023F50 +_08054580: .4byte gUnknown_2023EAF +_08054584: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054504 + + thumb_func_start sub_08054588 +sub_08054588: @ 0x08054588 + push {lr} + ldr r0, _0805459C + ldrh r1, [r0] + cmp r1, #0x5b + beq _080545CC + cmp r1, #0x5b + bgt _080545A0 + cmp r1, #0x13 + beq _080545AC + b _080545FA + .align 2, 0 +_0805459C: .4byte gUnknown_2023E8E +_080545A0: + ldr r0, _080545C0 + cmp r1, r0 + beq _080545E8 + adds r0, #0x31 + cmp r1, r0 + bne _080545FA +_080545AC: + ldr r2, _080545C4 + ldr r0, _080545C8 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x41 + rsbs r2, r2, #0 + b _080545F6 + .align 2, 0 +_080545C0: .4byte 0x00000123 +_080545C4: .4byte gUnknown_2023F50 +_080545C8: .4byte gUnknown_2023EAF +_080545CC: + ldr r2, _080545E0 + ldr r0, _080545E4 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x81 + rsbs r2, r2, #0 + b _080545F6 + .align 2, 0 +_080545E0: .4byte gUnknown_2023F50 +_080545E4: .4byte gUnknown_2023EAF +_080545E8: + ldr r2, _08054608 + ldr r0, _0805460C + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + ldr r2, _08054610 +_080545F6: + ands r0, r2 + str r0, [r1] +_080545FA: + ldr r1, _08054614 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08054608: .4byte gUnknown_2023F50 +_0805460C: .4byte gUnknown_2023EAF +_08054610: .4byte 0xFFFBFFFF +_08054614: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054588 + + thumb_func_start sub_08054618 +sub_08054618: @ 0x08054618 + push {lr} + ldr r0, _08054648 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0805463C + ldr r2, _0805464C + ldr r0, _08054650 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #1 + orrs r0, r2 + str r0, [r1] +_0805463C: + ldr r1, _08054654 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08054648: .4byte gUnknown_2023F24 +_0805464C: .4byte gUnknown_2023F50 +_08054650: .4byte gUnknown_2023EAF +_08054654: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054618 + + thumb_func_start sub_08054658 +sub_08054658: @ 0x08054658 + push {lr} + ldr r3, _0805467C + ldrh r1, [r3] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08054688 + ldr r2, _08054680 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08054684 + movs r0, #2 + strb r0, [r1, #5] + b _08054696 + .align 2, 0 +_0805467C: .4byte gUnknown_2024070 +_08054680: .4byte gUnknown_2023F20 +_08054684: .4byte gUnknown_2023FD6 +_08054688: + strh r2, [r3] + ldr r0, _080546A4 + movs r1, #5 + strb r1, [r0, #5] + ldr r0, _080546A8 + adds r0, #0x28 + strb r1, [r0] +_08054696: + ldr r1, _080546AC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080546A4: .4byte gUnknown_2023FD6 +_080546A8: .4byte gUnknown_2024074 +_080546AC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054658 + + thumb_func_start sub_080546B0 +sub_080546B0: @ 0x080546B0 + push {r4, lr} + ldr r2, _080546F4 + ldr r0, _080546F8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + movs r0, #0x19 + ldrsb r0, [r1, r0] + adds r3, r2, #0 + cmp r0, #0 + bne _08054704 + movs r0, #0x1c + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08054704 + ldr r0, _080546FC + ldrb r0, [r0, #6] + cmp r0, #1 + beq _08054704 + ldr r3, _08054700 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08054730 + .align 2, 0 +_080546F4: .4byte gUnknown_2023D28 +_080546F8: .4byte gUnknown_2023EB0 +_080546FC: .4byte gUnknown_2023FD6 +_08054700: .4byte gUnknown_2023EB8 +_08054704: + ldr r4, _08054738 + ldr r0, _0805473C + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _08054740 + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0, #0x28] + str r0, [r2] + ldr r1, _08054744 + movs r0, #0 + bl sub_08033D54 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _08054748 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08054730: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054738: .4byte gUnknown_2023D08 +_0805473C: .4byte gUnknown_2023EAF +_08054740: .4byte gUnknown_2023E94 +_08054744: .4byte 0x00007FFF +_08054748: .4byte gUnknown_2023EB8 + thumb_func_end sub_080546B0 + + thumb_func_start sub_0805474C +sub_0805474C: @ 0x0805474C + push {r4, r5, lr} + ldr r4, _0805478C + ldrb r0, [r4] + bl sub_080A62F8 + ldr r5, _08054790 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r0, #1 + strb r0, [r1, #8] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r4] + strb r0, [r1, #9] + ldr r1, _08054794 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805478C: .4byte gUnknown_2023EAF +_08054790: .4byte gUnknown_2023F38 +_08054794: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805474C + + thumb_func_start sub_08054798 +sub_08054798: @ 0x08054798 + push {r4, lr} + ldr r0, _080547EC + ldr r3, _080547F0 + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #2 + orrs r0, r2 + str r0, [r1] + ldr r4, _080547F4 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r2, [r0, #0x12] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #0x12] + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r2, [r0, #0x12] + movs r1, #0xf + ands r1, r2 + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #0x12] + ldr r1, _080547F8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080547EC: .4byte gUnknown_2023F50 +_080547F0: .4byte gUnknown_2023EAF +_080547F4: .4byte gUnknown_2023F60 +_080547F8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054798 + + thumb_func_start sub_080547FC +sub_080547FC: @ 0x080547FC + push {r4, lr} + ldr r2, _0805484C + ldr r0, [r2] + ldr r1, _08054850 + ands r0, r1 + str r0, [r2] + ldr r4, _08054854 + ldr r1, _08054858 + ldr r0, _0805485C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _08054860 + strb r0, [r1] + ldr r3, _08054864 + ldr r2, _08054868 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + bl sub_0803F718 + ldr r1, _0805486C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805484C: .4byte gUnknown_2023F24 +_08054850: .4byte 0xFFFFFBFF +_08054854: .4byte gUnknown_2023E8E +_08054858: .4byte gUnknown_82ECD98 +_0805485C: .4byte gUnknown_2022C94 +_08054860: .4byte gUnknown_2023EB0 +_08054864: .4byte gUnknown_8286C30 +_08054868: .4byte gUnknown_82ED220 +_0805486C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080547FC + + thumb_func_start sub_08054870 +sub_08054870: @ 0x08054870 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r1, _080548BC + ldr r3, _080548C0 + ldrb r0, [r3] + movs r6, #0x58 + muls r0, r6, r0 + adds r5, r1, #0 + adds r5, #0x4c + adds r2, r0, r5 + ldr r0, [r2] + movs r1, #0xd8 + ands r0, r1 + cmp r0, #0 + beq _080548CC + movs r0, #0 + str r0, [r2] + ldr r1, _080548C4 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + ldr r4, _080548C8 + ldrb r0, [r3] + strb r0, [r4] + ldrb r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 + b _080548E6 + .align 2, 0 +_080548BC: .4byte gUnknown_2023D28 +_080548C0: .4byte gUnknown_2023EAF +_080548C4: .4byte gUnknown_2023EB8 +_080548C8: .4byte gUnknown_2023D08 +_080548CC: + ldr r3, _080548F0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_080548E6: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080548F0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054870 + + thumb_func_start sub_080548F4 +sub_080548F4: @ 0x080548F4 + push {lr} + ldr r1, _0805492C + ldr r0, _08054930 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #0x18 + cmp r1, #0 + bge _08054938 + ldr r3, _08054934 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08054944 + .align 2, 0 +_0805492C: .4byte gUnknown_2023D28 +_08054930: .4byte gUnknown_2023EB0 +_08054934: .4byte gUnknown_2023EB8 +_08054938: + orrs r1, r2 + str r1, [r0] + ldr r1, _08054948 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08054944: + pop {r0} + bx r0 + .align 2, 0 +_08054948: .4byte gUnknown_2023EB8 + thumb_func_end sub_080548F4 + + thumb_func_start sub_0805494C +sub_0805494C: @ 0x0805494C + push {lr} + ldr r2, _08054978 + ldr r0, _0805497C + ldrb r0, [r0] + lsls r1, r0, #4 + adds r0, r2, #4 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + bne _0805496C + adds r0, r2, #0 + adds r0, #8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, #0 + beq _08054984 +_0805496C: + ldr r1, _08054980 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _0805499E + .align 2, 0 +_08054978: .4byte gUnknown_2023FE0 +_0805497C: .4byte gUnknown_2023EAF +_08054980: .4byte gUnknown_2023EB8 +_08054984: + ldr r3, _080549A4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_0805499E: + pop {r0} + bx r0 + .align 2, 0 +_080549A4: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805494C + + thumb_func_start sub_080549A8 +sub_080549A8: @ 0x080549A8 + push {r4, lr} + ldr r4, _080549EC + ldr r3, _080549F0 + ldrb r0, [r3] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r4 + ldrb r1, [r2, #0x13] + lsls r0, r1, #0x1c + cmp r0, #0 + bne _080549F8 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x13] + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r2, [r0, #0x13] + movs r1, #0xf + ands r1, r2 + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #0x13] + ldr r1, _080549F4 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08054A12 + .align 2, 0 +_080549EC: .4byte gUnknown_2023F60 +_080549F0: .4byte gUnknown_2023EB0 +_080549F4: .4byte gUnknown_2023EB8 +_080549F8: + ldr r3, _08054A18 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08054A12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054A18: .4byte gUnknown_2023EB8 + thumb_func_end sub_080549A8 + + thumb_func_start sub_08054A1C +sub_08054A1C: @ 0x08054A1C + push {r4, lr} + ldr r4, _08054A84 + ldrb r0, [r4] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r3, _08054A88 + strb r0, [r3] + ldr r0, _08054A8C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08054AA0 + ldr r0, _08054A90 + ldrb r1, [r0] + ldr r2, _08054A94 + ldrb r3, [r3] + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08054AA0 + ldr r1, _08054A98 + ldrb r0, [r4] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1c + cmp r0, #0 + blt _08054AA0 + lsls r0, r3, #4 + adds r2, r0, r1 + ldrb r1, [r2] + lsls r0, r1, #0x1c + cmp r0, #0 + blt _08054AA0 + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08054A9C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08054ABA + .align 2, 0 +_08054A84: .4byte gUnknown_2023EAF +_08054A88: .4byte gUnknown_2023EB0 +_08054A8C: .4byte gUnknown_2022C90 +_08054A90: .4byte gUnknown_2023EB4 +_08054A94: .4byte gUnknown_82FACB4 +_08054A98: .4byte gUnknown_2023FE0 +_08054A9C: .4byte gUnknown_2023EB8 +_08054AA0: + ldr r3, _08054AC0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08054ABA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054AC0: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054A1C + + thumb_func_start sub_08054AC4 +sub_08054AC4: @ 0x08054AC4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, _08054BC8 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + bne _08054BAA + ldr r0, _08054BCC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08054AF8 + ldr r0, [r4] + ldr r1, _08054BD0 + ands r0, r1 + cmp r0, #0 + beq _08054BAA +_08054AF8: + ldr r6, _08054BCC + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r7, _08054BD4 + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08054BC8 + ldr r0, [r0] + ldr r1, _08054BD0 + ands r0, r1 + cmp r0, #0 + bne _08054B56 + ldr r0, _08054BD8 + adds r2, r0, #0 + adds r2, #0x29 + adds r0, r4, r2 + ldrb r1, [r0] + ldr r4, _08054BDC + ldr r3, _08054BE0 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08054BAA + adds r0, r5, r2 + ldrb r1, [r0] + ldrb r0, [r7] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08054BAA +_08054B56: + ldr r0, _08054BE4 + mov r8, r0 + ldr r1, _08054BCC + ldrb r4, [r1] + movs r5, #0x58 + adds r0, r4, #0 + muls r0, r5, r0 + add r0, r8 + mov sb, r0 + ldrh r3, [r0, #0x2e] + adds r1, r3, #0 + cmp r1, #0 + bne _08054B7E + ldr r0, _08054BD4 + ldrb r0, [r0] + muls r0, r5, r0 + add r0, r8 + ldrh r0, [r0, #0x2e] + cmp r0, #0 + beq _08054BAA +_08054B7E: + cmp r1, #0xaf + beq _08054BAA + ldr r7, _08054BD4 + ldrb r0, [r7] + muls r0, r5, r0 + mov r2, r8 + adds r1, r0, r2 + ldrh r2, [r1, #0x2e] + cmp r2, #0xaf + beq _08054BAA + adds r0, r3, #0 + subs r0, #0x79 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb + bls _08054BAA + adds r0, r2, #0 + subs r0, #0x79 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb + bhi _08054BEC +_08054BAA: + ldr r3, _08054BE8 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08054D42 + .align 2, 0 +_08054BC8: .4byte gUnknown_2022C90 +_08054BCC: .4byte gUnknown_2023EAF +_08054BD0: .4byte 0x0A3F0902 +_08054BD4: .4byte gUnknown_2023EB0 +_08054BD8: .4byte gUnknown_2024074 +_08054BDC: .4byte gUnknown_82FACB4 +_08054BE0: .4byte gUnknown_2023D12 +_08054BE4: .4byte gUnknown_2023D28 +_08054BE8: .4byte gUnknown_2023EB8 +_08054BEC: + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x3c + bne _08054C20 + ldr r1, _08054C14 + ldr r0, _08054C18 + str r0, [r1] + ldr r1, _08054C1C + ldrb r0, [r7] + muls r0, r5, r0 + add r0, r8 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_0813114C + b _08054D42 + .align 2, 0 +_08054C14: .4byte gUnknown_2023EB8 +_08054C18: .4byte gUnknown_8289BC7 +_08054C1C: .4byte gUnknown_2023EAE +_08054C20: + ldr r3, _08054D0C + mov sl, r3 + lsls r0, r4, #1 + adds r0, #0xd0 + ldr r1, [r3] + adds r6, r1, r0 + mov r0, sb + ldrh r0, [r0, #0x2e] + mov sb, r0 + strh r2, [r6] + ldr r1, _08054D10 + ldrb r0, [r1] + muls r0, r5, r0 + add r0, r8 + movs r1, #0 + strh r1, [r0, #0x2e] + ldrb r0, [r7] + muls r0, r5, r0 + add r0, r8 + mov r2, sb + strh r2, [r0, #0x2e] + ldr r4, _08054D14 + ldr r3, _08054D10 + ldrb r0, [r3] + strb r0, [r4] + str r6, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldr r1, _08054D10 + ldrb r0, [r1] + bl sub_0803F440 + ldrb r0, [r7] + strb r0, [r4] + ldrb r0, [r7] + muls r0, r5, r0 + mov r1, r8 + adds r1, #0x2e + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r7] + bl sub_0803F440 + ldrb r0, [r7] + mov r2, sl + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + movs r3, #0 + strb r3, [r0] + ldrb r0, [r7] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + strb r3, [r0] + ldr r1, _08054D10 + ldrb r0, [r1] + ldr r1, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc8 + strb r3, [r0] + ldr r2, _08054D10 + ldrb r0, [r2] + mov r3, sl + ldr r1, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc9 + movs r1, #0 + strb r1, [r0] + ldr r1, _08054D18 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + ldr r1, _08054D1C + movs r3, #0xfd + strb r3, [r1] + movs r2, #0xa + strb r2, [r1, #1] + ldrh r0, [r6] + strb r0, [r1, #2] + ldrh r0, [r6] + lsrs r0, r0, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _08054D20 + strb r3, [r1] + strb r2, [r1, #1] + mov r2, sb + strb r2, [r1, #2] + mov r3, sb + lsrs r0, r3, #8 + strb r0, [r1, #3] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1, #4] + cmp r3, #0 + beq _08054D28 + ldrh r0, [r6] + cmp r0, #0 + beq _08054D3C + ldr r1, _08054D24 + movs r0, #2 + b _08054D40 + .align 2, 0 +_08054D0C: .4byte gUnknown_2024140 +_08054D10: .4byte gUnknown_2023EAF +_08054D14: .4byte gUnknown_2023D08 +_08054D18: .4byte gUnknown_2023EB8 +_08054D1C: .4byte gUnknown_2022C0C +_08054D20: .4byte gUnknown_2022C1C +_08054D24: .4byte gUnknown_2023FD6 +_08054D28: + ldrh r0, [r6] + cmp r0, #0 + beq _08054D3C + ldr r0, _08054D38 + movs r1, #0 + strb r1, [r0, #5] + b _08054D42 + .align 2, 0 +_08054D38: .4byte gUnknown_2023FD6 +_08054D3C: + ldr r1, _08054D54 + movs r0, #1 +_08054D40: + strb r0, [r1, #5] +_08054D42: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08054D54: .4byte gUnknown_2023FD6 + thumb_func_end sub_08054AC4 + + thumb_func_start sub_08054D58 +sub_08054D58: @ 0x08054D58 + push {r4, lr} + ldr r3, _08054D98 + ldr r4, _08054D9C + ldrb r0, [r4] + movs r2, #0x58 + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0 + beq _08054DAC + cmp r0, #0x19 + beq _08054DAC + ldr r0, _08054DA0 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + strb r1, [r0] + ldr r1, _08054DA4 + ldrb r0, [r4] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _08054DA8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08054DC6 + .align 2, 0 +_08054D98: .4byte gUnknown_2023D28 +_08054D9C: .4byte gUnknown_2023EB0 +_08054DA0: .4byte gUnknown_2023EAF +_08054DA4: .4byte gUnknown_2023EAE +_08054DA8: .4byte gUnknown_2023EB8 +_08054DAC: + ldr r3, _08054DCC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08054DC6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054DCC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054D58 + + thumb_func_start sub_08054DD0 +sub_08054DD0: @ 0x08054DD0 + push {r4, r5, r6, r7, lr} + ldr r7, _08054DE4 + ldr r2, [r7] + ldrb r3, [r2, #1] + cmp r3, #0 + beq _08054DE8 + cmp r3, #1 + beq _08054E20 + b _08054E9C + .align 2, 0 +_08054DE4: .4byte gUnknown_2023EB8 +_08054DE8: + ldr r1, _08054E14 + ldr r4, _08054E18 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r5, [r4] + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, #0 + bne _08054E6C + movs r0, #2 + strb r0, [r3] + ldrb r0, [r4] + adds r1, #0x24 + adds r1, r0, r1 + ldr r2, _08054E1C + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r7] + adds r0, #6 + b _08054E9A + .align 2, 0 +_08054E14: .4byte gUnknown_2024074 +_08054E18: .4byte gUnknown_2023EAF +_08054E1C: .4byte gUnknown_2023D12 +_08054E20: + ldr r1, _08054E84 + movs r0, #0xfd + strb r0, [r1] + movs r0, #4 + strb r0, [r1, #1] + ldr r4, _08054E88 + ldrb r0, [r4] + strb r0, [r1, #2] + ldr r0, _08054E8C + adds r0, #0x24 + ldrb r5, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + ldr r1, _08054E90 + ldr r6, _08054E94 + ldrb r0, [r4] + movs r5, #0x58 + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r0, [r0, #0x2c] + lsrs r0, r0, #1 + str r0, [r1] + cmp r0, #0 + bne _08054E58 + str r3, [r1] +_08054E58: + ldr r0, [r1] + rsbs r0, r0, #0 + str r0, [r1] + ldrb r0, [r4] + muls r0, r5, r0 + adds r0, r0, r6 + ldrh r1, [r0, #0x28] + ldrh r0, [r0, #0x2c] + cmp r1, r0 + bne _08054E98 +_08054E6C: + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r7] + b _08054E9C + .align 2, 0 +_08054E84: .4byte gUnknown_2022C0C +_08054E88: .4byte gUnknown_2023EB0 +_08054E8C: .4byte gUnknown_2024074 +_08054E90: .4byte gUnknown_2023E94 +_08054E94: .4byte gUnknown_2023D28 +_08054E98: + adds r0, r2, #6 +_08054E9A: + str r0, [r7] +_08054E9C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08054DD0 + + thumb_func_start sub_08054EA4 +sub_08054EA4: @ 0x08054EA4 + push {lr} + ldr r1, _08054EDC + ldr r0, _08054EE0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #3 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08054EE8 + ldr r3, _08054EE4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08054EF4 + .align 2, 0 +_08054EDC: .4byte gUnknown_2023F50 +_08054EE0: .4byte gUnknown_2023EAF +_08054EE4: .4byte gUnknown_2023EB8 +_08054EE8: + orrs r1, r3 + str r1, [r2] + ldr r1, _08054EF8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08054EF4: + pop {r0} + bx r0 + .align 2, 0 +_08054EF8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054EA4 + + thumb_func_start sub_08054EFC +sub_08054EFC: @ 0x08054EFC + push {lr} + ldr r3, _08054F48 + ldr r0, _08054F4C + ldrb r0, [r0] + lsls r2, r0, #4 + adds r0, r3, #4 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + beq _08054F1C + adds r0, r2, r3 + ldr r1, _08054F50 + ldrb r0, [r0, #0xc] + ldrb r1, [r1] + cmp r0, r1 + beq _08054F34 +_08054F1C: + adds r0, r3, #0 + adds r0, #8 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, #0 + beq _08054F3A + adds r0, r2, r3 + ldr r1, _08054F50 + ldrb r0, [r0, #0xd] + ldrb r1, [r1] + cmp r0, r1 + bne _08054F3A +_08054F34: + ldr r1, _08054F54 + movs r0, #2 + strb r0, [r1, #0xe] +_08054F3A: + ldr r1, _08054F58 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08054F48: .4byte gUnknown_2023FE0 +_08054F4C: .4byte gUnknown_2023EAF +_08054F50: .4byte gUnknown_2023EB0 +_08054F54: .4byte gUnknown_2024118 +_08054F58: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054EFC + + thumb_func_start sub_08054F5C +sub_08054F5C: @ 0x08054F5C + push {r4, lr} + ldr r1, _08054FA0 + ldr r0, _08054FA4 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r4, r0, r1 + ldr r2, [r4] + movs r0, #0xc0 + lsls r0, r0, #5 + ands r0, r2 + cmp r0, #0 + bne _08054F84 + ldr r1, _08054FA8 + movs r0, #0x58 + muls r0, r3, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08054FB0 +_08054F84: + ldr r3, _08054FAC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08054FC0 + .align 2, 0 +_08054FA0: .4byte gUnknown_2023F50 +_08054FA4: .4byte gUnknown_2023EB0 +_08054FA8: .4byte gUnknown_2023D28 +_08054FAC: .4byte gUnknown_2023EB8 +_08054FB0: + movs r0, #0x80 + lsls r0, r0, #5 + orrs r2, r0 + str r2, [r4] + ldr r1, _08054FC8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08054FC0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08054FC8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054F5C + + thumb_func_start sub_08054FCC +sub_08054FCC: @ 0x08054FCC + push {lr} + ldr r2, _08055008 + ldr r0, _0805500C + ldrb r0, [r0] + movs r1, #0x58 + muls r0, r1, r0 + adds r3, r0, r2 + ldr r0, _08055010 + ldrb r0, [r0] + muls r0, r1, r0 + adds r1, r0, r2 + ldrh r0, [r3, #0x28] + ldrh r2, [r1, #0x28] + cmp r0, r2 + bhi _08055018 + ldr r3, _08055014 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805502A + .align 2, 0 +_08055008: .4byte gUnknown_2023D28 +_0805500C: .4byte gUnknown_2023EB0 +_08055010: .4byte gUnknown_2023EAF +_08055014: .4byte gUnknown_2023EB8 +_08055018: + ldr r2, _08055030 + ldrh r0, [r3, #0x28] + ldrh r1, [r1, #0x28] + subs r0, r0, r1 + str r0, [r2] + ldr r1, _08055034 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805502A: + pop {r0} + bx r0 + .align 2, 0 +_08055030: .4byte gUnknown_2023E94 +_08055034: .4byte gUnknown_2023EB8 + thumb_func_end sub_08054FCC + + thumb_func_start sub_08055038 +sub_08055038: @ 0x08055038 + push {r4, lr} + ldr r4, _08055084 + ldrh r0, [r4] + cmp r0, #0 + bne _08055074 + ldr r2, _08055088 + ldr r0, _0805508C + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r3, [r0, #1] + ldr r2, _08055090 + ldr r0, _08055094 + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r0, [r1, #0x28] + muls r0, r3, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055074 + movs r0, #1 + strh r0, [r4] +_08055074: + ldr r1, _08055098 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055084: .4byte gUnknown_20240A4 +_08055088: .4byte gUnknown_82ED220 +_0805508C: .4byte gUnknown_2023E8E +_08055090: .4byte gUnknown_2023D28 +_08055094: .4byte gUnknown_2023EAF +_08055098: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055038 + + thumb_func_start sub_0805509C +sub_0805509C: @ 0x0805509C + push {r4, r5, r6, lr} + ldr r5, _08055100 + ldr r0, _08055104 + ldrb r0, [r0] + movs r4, #0x58 + muls r0, r4, r0 + adds r0, r0, r5 + adds r2, r0, #0 + adds r2, #0x20 + ldrb r1, [r2] + cmp r1, #0 + bne _080550C4 + ldr r0, _08055108 + ldrb r0, [r0] + muls r0, r4, r0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _080550E4 +_080550C4: + cmp r1, #0x19 + beq _080550E4 + ldr r6, _08055108 + ldrb r0, [r6] + muls r0, r4, r0 + adds r0, r0, r5 + adds r0, #0x20 + ldrb r3, [r0] + cmp r3, #0x19 + beq _080550E4 + ldr r0, _0805510C + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _08055114 +_080550E4: + ldr r3, _08055110 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805512A + .align 2, 0 +_08055100: .4byte gUnknown_2023D28 +_08055104: .4byte gUnknown_2023EAF +_08055108: .4byte gUnknown_2023EB0 +_0805510C: .4byte gUnknown_2023F20 +_08055110: .4byte gUnknown_2023EB8 +_08055114: + ldrb r1, [r2] + strb r3, [r2] + ldrb r0, [r6] + muls r0, r4, r0 + adds r0, r0, r5 + adds r0, #0x20 + strb r1, [r0] + ldr r1, _08055130 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805512A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08055130: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805509C + + thumb_func_start sub_08055134 +sub_08055134: @ 0x08055134 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r1, _08055154 + ldr r4, _08055158 + ldrb r2, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + ands r0, r1 + cmp r0, #0 + beq _08055184 + b _08055206 + .align 2, 0 +_08055154: .4byte gUnknown_2023F50 +_08055158: .4byte gUnknown_2023EAF +_0805515C: + ldr r0, _0805517C + mov r2, sb + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + movs r2, #0x80 + lsls r2, r2, #6 + orrs r0, r2 + str r0, [r1] + ldr r1, _08055180 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _080551FE + .align 2, 0 +_0805517C: .4byte gUnknown_2023F50 +_08055180: .4byte gUnknown_2023EB8 +_08055184: + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r0, [r4] + bl sub_0803F188 + movs r6, #0 + b _080551F6 +_0805519A: + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r8, r0 + beq _080551F0 + movs r4, #0 + ldr r7, _0805522C + mov sb, r7 + ldr r0, _08055230 + mov ip, r0 + mov r1, sb + ldrb r0, [r1] + mov r2, ip + adds r2, #0xc + movs r1, #0x58 + muls r0, r1, r0 + adds r3, r0, r2 + adds r5, r6, #0 + muls r5, r1, r5 +_080551C4: + movs r2, #0 + ldrh r1, [r3] + mov r0, ip + adds r0, #0xc + adds r0, r5, r0 +_080551CE: + ldrh r7, [r0] + cmp r1, r7 + bne _080551D8 + cmp r1, #0 + bne _080551E0 +_080551D8: + adds r0, #2 + adds r2, #1 + cmp r2, #3 + ble _080551CE +_080551E0: + cmp r2, #4 + bne _080551EC + adds r3, #2 + adds r4, #1 + cmp r4, #3 + ble _080551C4 +_080551EC: + cmp r4, #4 + bne _0805515C +_080551F0: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080551F6: + ldr r0, _08055234 + ldrb r0, [r0] + cmp r6, r0 + blo _0805519A +_080551FE: + ldr r0, _08055234 + ldrb r0, [r0] + cmp r6, r0 + bne _08055220 +_08055206: + ldr r3, _08055238 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055220: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805522C: .4byte gUnknown_2023EAF +_08055230: .4byte gUnknown_2023D28 +_08055234: .4byte gUnknown_2023D10 +_08055238: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055134 + + thumb_func_start sub_0805523C +sub_0805523C: @ 0x0805523C + push {lr} + ldr r1, _08055274 + ldr r0, _08055278 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #7 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08055280 + ldr r3, _0805527C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805528C + .align 2, 0 +_08055274: .4byte gUnknown_2023F50 +_08055278: .4byte gUnknown_2023EAF +_0805527C: .4byte gUnknown_2023EB8 +_08055280: + orrs r1, r3 + str r1, [r2] + ldr r1, _08055290 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805528C: + pop {r0} + bx r0 + .align 2, 0 +_08055290: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805523C + + thumb_func_start sub_08055294 +sub_08055294: @ 0x08055294 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r5, #0 + ldr r2, _080552F8 + ldrh r0, [r2] + ldr r1, _080552FC + cmp r0, r1 + beq _0805530C + adds r6, r2, #0 + ldr r0, _08055300 + mov r8, r0 + adds r7, r1, #0 + adds r4, r6, #0 +_080552B0: + ldr r0, _08055304 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + add r0, r8 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFB80 + ldrh r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _080552DE + adds r4, #4 + adds r5, #2 + ldrh r0, [r4] + cmp r0, r7 + bne _080552B0 +_080552DE: + lsls r0, r5, #1 + adds r0, r0, r6 + ldrh r1, [r0] + ldr r0, _080552FC + cmp r1, r0 + beq _0805530C + ldr r0, _08055308 + adds r1, r5, #1 + lsls r1, r1, #1 + adds r1, r1, r6 + ldrh r1, [r1] + strh r1, [r0] + b _08055312 + .align 2, 0 +_080552F8: .4byte gUnknown_82ECDAC +_080552FC: .4byte 0x0000FFFF +_08055300: .4byte gUnknown_2023D28 +_08055304: .4byte gUnknown_2023EB0 +_08055308: .4byte gUnknown_20240A4 +_0805530C: + ldr r1, _08055324 + movs r0, #0x78 + strh r0, [r1] +_08055312: + ldr r1, _08055328 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08055324: .4byte gUnknown_20240A4 +_08055328: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055294 + + thumb_func_start sub_0805532C +sub_0805532C: @ 0x0805532C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r0, #0 + mov sl, r0 + ldr r0, _0805544C + ldr r0, [r0] + adds r0, #0x18 + str r0, [sp, #4] + ldr r0, _08055450 + ldrb r0, [r0] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + ldr r0, _08055454 + str r0, [sp] + cmp r1, #0 + beq _0805535C + ldr r1, _08055458 + str r1, [sp] +_0805535C: + movs r2, #0 +_0805535E: + ldr r1, _0805545C + ldr r0, _08055450 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r1, r2, #1 + str r1, [sp, #8] + ldrh r0, [r0] + cmp r2, r0 + beq _08055404 + movs r0, #0x64 + adds r6, r2, #0 + muls r6, r0, r6 + ldr r0, [sp] + adds r4, r0, r6 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _08055404 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08055404 + movs r5, #0 + ldr r1, _08055460 + mov r8, r1 + mov sb, r6 + mov r1, sl + lsls r0, r1, #1 + ldr r1, [sp, #4] + adds r6, r0, r1 +_080553A8: + movs r7, #0 + adds r1, r5, #0 + adds r1, #0xd + ldr r0, [sp] + add r0, sb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_08052B94 + lsls r0, r0, #0x18 + adds r1, r5, #1 + cmp r0, #0 + bne _080553FE + ldr r0, _08055464 + ldrh r2, [r0] + adds r3, r0, #0 + cmp r2, r8 + beq _080553F2 + cmp r4, r2 + beq _080553E8 + ldr r5, _08055460 + adds r2, r3, #0 +_080553DA: + adds r2, #2 + adds r7, #1 + ldrh r0, [r2] + cmp r0, r5 + beq _080553F2 + cmp r4, r0 + bne _080553DA +_080553E8: + lsls r0, r7, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r8 + bne _080553FE +_080553F2: + cmp r4, #0 + beq _080553FE + strh r4, [r6] + adds r6, #2 + movs r0, #1 + add sl, r0 +_080553FE: + adds r5, r1, #0 + cmp r5, #3 + ble _080553A8 +_08055404: + ldr r2, [sp, #8] + cmp r2, #5 + ble _0805535E + mov r1, sl + cmp r1, #0 + beq _0805547C + ldr r2, _08055468 + ldr r0, [r2] + ldr r1, _0805546C + ands r0, r1 + str r0, [r2] + ldr r4, _08055470 + bl sub_0806F050 + movs r1, #0xff + ands r1, r0 + mov r0, sl + muls r0, r1, r0 + asrs r0, r0, #8 + lsls r0, r0, #1 + ldr r1, [sp, #4] + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, #0 + bl sub_08045520 + ldr r1, _08055474 + strb r0, [r1] + ldr r1, _08055478 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08055496 + .align 2, 0 +_0805544C: .4byte gUnknown_2024140 +_08055450: .4byte gUnknown_2023EAF +_08055454: .4byte gUnknown_2024190 +_08055458: .4byte gUnknown_20243E8 +_0805545C: .4byte gUnknown_2023D12 +_08055460: .4byte 0x0000FFFF +_08055464: .4byte gUnknown_82ECD64 +_08055468: .4byte gUnknown_2023F24 +_0805546C: .4byte 0xFFFFFBFF +_08055470: .4byte gUnknown_2023E92 +_08055474: .4byte gUnknown_2023EB0 +_08055478: .4byte gUnknown_2023EB8 +_0805547C: + ldr r3, _080554A8 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055496: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080554A8: .4byte gUnknown_2023EB8 + thumb_func_end sub_0805532C + + thumb_func_start sub_080554AC +sub_080554AC: @ 0x080554AC + push {lr} + ldr r1, _080554F4 + ldr r3, _080554F8 + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _080554FC + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r0, _08055500 + ldrb r1, [r0] + ldr r0, _08055504 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _0805550C + ldr r3, _08055508 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08055524 + .align 2, 0 +_080554F4: .4byte gUnknown_2023EB0 +_080554F8: .4byte gUnknown_2023EAF +_080554FC: .4byte gUnknown_2024020 +_08055500: .4byte gUnknown_2023D26 +_08055504: .4byte gUnknown_2023D10 +_08055508: .4byte gUnknown_2023EB8 +_0805550C: + ldr r0, _08055528 + ldrb r1, [r3] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0805552C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08055524: + pop {r0} + bx r0 + .align 2, 0 +_08055528: .4byte gUnknown_2023FE0 +_0805552C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080554AC + + thumb_func_start sub_08055530 +sub_08055530: @ 0x08055530 + push {lr} + ldr r2, _08055574 + ldr r3, _08055578 + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + ldr r0, _0805557C + ldrb r1, [r0] + ldr r0, _08055580 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _08055588 + ldr r3, _08055584 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805559E + .align 2, 0 +_08055574: .4byte gUnknown_2024020 +_08055578: .4byte gUnknown_2023EAF +_0805557C: .4byte gUnknown_2023D26 +_08055580: .4byte gUnknown_2023D10 +_08055584: .4byte gUnknown_2023EB8 +_08055588: + ldr r0, _080555A4 + ldrb r1, [r3] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r1, _080555A8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805559E: + pop {r0} + bx r0 + .align 2, 0 +_080555A4: .4byte gUnknown_2023FE0 +_080555A8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055530 + + thumb_func_start sub_080555AC +sub_080555AC: @ 0x080555AC + push {r4, r5, r6, lr} + ldr r4, _08055650 + ldr r0, _08055654 + ldr r0, [r0] + adds r0, #0xd8 + ldrb r0, [r0] + strb r0, [r4, #0x17] + ldrb r0, [r4, #0x17] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08055658 + movs r0, #0xfd + strb r0, [r2] + movs r0, #9 + strb r0, [r2, #1] + ldr r3, _0805565C + ldrb r1, [r4, #0x17] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r3 + adds r0, #0x20 + ldrb r0, [r0] + strb r0, [r2, #2] + movs r0, #0xff + strb r0, [r2, #3] + ldr r2, _08055660 + ldr r1, _08055664 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bhs _08055632 + adds r4, r2, #0 + ldr r6, _08055668 +_080555F2: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + beq _08055614 + ldr r0, _0805566C + ldrb r1, [r0] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ands r1, r0 + ldr r2, _08055664 + cmp r1, #0 + beq _08055628 +_08055614: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _08055664 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r1, #0 + ldrb r1, [r2] + cmp r0, r1 + blo _080555F2 +_08055628: + ldr r0, _08055660 + ldrb r0, [r0] + ldrb r2, [r2] + cmp r0, r2 + blo _08055674 +_08055632: + ldr r3, _08055670 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0805567C + .align 2, 0 +_08055650: .4byte gUnknown_2024118 +_08055654: .4byte gUnknown_2024140 +_08055658: .4byte gUnknown_2022C0C +_0805565C: .4byte gUnknown_2023D28 +_08055660: .4byte gUnknown_2023EB0 +_08055664: .4byte gUnknown_2023D10 +_08055668: .4byte gUnknown_82FACB4 +_0805566C: .4byte gUnknown_2023EB4 +_08055670: .4byte gUnknown_2023EB8 +_08055674: + ldr r1, _08055684 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0805567C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08055684: .4byte gUnknown_2023EB8 + thumb_func_end sub_080555AC + + thumb_func_start sub_08055688 +sub_08055688: @ 0x08055688 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _080556F0 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r4, _080556F4 + strb r0, [r4] + ldr r3, _080556F8 + ldrb r0, [r4] + movs r6, #0x58 + adds r1, r0, #0 + muls r1, r6, r1 + adds r0, r1, r3 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1e + bne _080556E2 + adds r3, #0x4c + adds r1, r1, r3 + movs r0, #0 + str r0, [r1] + ldr r2, _080556FC + ldrb r1, [r4] + ldr r0, _08055700 + ldr r0, [r0] + adds r0, r1, r0 + adds r0, #0x58 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0] + adds r0, r1, #0 + muls r0, r6, r0 + adds r0, r0, r3 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_080556E2: + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080556F0: .4byte gUnknown_2023EB8 +_080556F4: .4byte gUnknown_2023D08 +_080556F8: .4byte gUnknown_2023D28 +_080556FC: .4byte gUnknown_82FACB4 +_08055700: .4byte gUnknown_2024140 + thumb_func_end sub_08055688 + + thumb_func_start sub_08055704 +sub_08055704: @ 0x08055704 + push {r4, lr} + ldr r4, _08055740 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_0803F00C + ldr r1, _08055744 + strb r0, [r1] + ldr r2, _08055748 + ldrb r1, [r1] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _0805574C + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08055752 + .align 2, 0 +_08055740: .4byte gUnknown_2023EB8 +_08055744: .4byte gUnknown_2023D08 +_08055748: .4byte gUnknown_2023D28 +_0805574C: + ldr r0, [r4] + adds r0, #6 + str r0, [r4] +_08055752: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08055704 + + thumb_func_start sub_08055758 +sub_08055758: @ 0x08055758 + push {lr} + ldr r0, _0805576C + ldrb r0, [r0] + cmp r0, #7 + bhi _080557F4 + lsls r0, r0, #2 + ldr r1, _08055770 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805576C: .4byte gUnknown_2022C94 +_08055770: .4byte _08055774 +_08055774: @ jump table + .4byte _08055794 @ case 0 + .4byte _080557A0 @ case 1 + .4byte _080557AC @ case 2 + .4byte _080557B8 @ case 3 + .4byte _080557C4 @ case 4 + .4byte _080557D0 @ case 5 + .4byte _080557DC @ case 6 + .4byte _080557E8 @ case 7 +_08055794: + ldr r1, _0805579C + movs r0, #2 + b _080557F8 + .align 2, 0 +_0805579C: .4byte gUnknown_2023FD6 +_080557A0: + ldr r1, _080557A8 + movs r0, #1 + b _080557F8 + .align 2, 0 +_080557A8: .4byte gUnknown_2023FD6 +_080557AC: + ldr r1, _080557B4 + movs r0, #0x1b + b _080557F8 + .align 2, 0 +_080557B4: .4byte gUnknown_2023FD6 +_080557B8: + ldr r1, _080557C0 + movs r0, #0x17 + b _080557F8 + .align 2, 0 +_080557C0: .4byte gUnknown_2023FD6 +_080557C4: + ldr r1, _080557CC + movs r0, #0x16 + b _080557F8 + .align 2, 0 +_080557CC: .4byte gUnknown_2023FD6 +_080557D0: + ldr r1, _080557D8 + movs r0, #0x18 + b _080557F8 + .align 2, 0 +_080557D8: .4byte gUnknown_2023FD6 +_080557DC: + ldr r1, _080557E4 + movs r0, #7 + b _080557F8 + .align 2, 0 +_080557E4: .4byte gUnknown_2023FD6 +_080557E8: + ldr r1, _080557F0 + movs r0, #8 + b _080557F8 + .align 2, 0 +_080557F0: .4byte gUnknown_2023FD6 +_080557F4: + ldr r1, _08055808 + movs r0, #5 +_080557F8: + strb r0, [r1, #3] + ldr r1, _0805580C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08055808: .4byte gUnknown_2023FD6 +_0805580C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055758 + + thumb_func_start sub_08055810 +sub_08055810: @ 0x08055810 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08055828 + b _080559E8 +_08055828: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080558D4 + movs r6, #0 + mov r7, sp + ldr r0, _08055874 + mov r8, r0 +_0805583A: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08055878 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + strh r0, [r7] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + cmp r0, #0 + beq _0805587C + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0x17] + b _08055886 + .align 2, 0 +_08055874: .4byte gUnknown_82F0D54 +_08055878: .4byte gUnknown_2024190 +_0805587C: + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0x16] +_08055886: + cmp r0, #0x35 + bne _080558C6 + cmp r5, #0 + beq _080558C6 + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + beq _080558C6 + ldrh r0, [r7] + cmp r0, #0 + bne _080558C6 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080558C6 + bl sub_081AA858 + strh r0, [r7] + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _080558D0 + adds r0, r0, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_080558C6: + adds r6, #1 + cmp r6, #5 + ble _0805583A + b _080559E8 + .align 2, 0 +_080558D0: .4byte gUnknown_2024190 +_080558D4: + movs r6, #0 + movs r1, #0x64 + mov r8, r1 + ldr r7, _08055918 + mov sl, sp +_080558DE: + mov r4, r8 + muls r4, r6, r4 + adds r4, r4, r7 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sl + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + cmp r0, #0 + beq _08055940 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _0805591C + adds r0, r0, r1 + ldrb r0, [r0, #0x17] + b _0805594C + .align 2, 0 +_08055918: .4byte gUnknown_2024190 +_0805591C: .4byte gUnknown_82F0D54 +_08055920: + mov r0, r8 + muls r0, r6, r0 + adds r0, r0, r7 + adds r2, r1, #0 + adds r2, #0x63 + subs r2, r2, r4 + lsls r2, r2, #1 + ldr r1, _0805593C + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 + b _080559E0 + .align 2, 0 +_0805593C: .4byte gUnknown_82ECDE8 +_08055940: + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _080559B0 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] +_0805594C: + adds r1, r6, #1 + mov sb, r1 + cmp r0, #0x35 + bne _080559E0 + cmp r5, #0 + beq _080559E0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + beq _080559E0 + mov r1, sl + ldrh r0, [r1] + cmp r0, #0 + bne _080559E0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080559E0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov r0, r8 + muls r0, r6, r0 + adds r0, r0, r7 + movs r1, #0x38 + bl sub_0806A058 + subs r0, #1 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _080559AC + movs r1, #9 +_080559AC: + movs r2, #0 + b _080559BE + .align 2, 0 +_080559B0: .4byte gUnknown_82F0D54 +_080559B4: + adds r0, r4, #0 + subs r0, #0x62 + cmp r0, #1 + bls _08055920 + adds r2, #1 +_080559BE: + cmp r2, #8 + bgt _080559E0 + ldr r0, _08055A00 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r4 + ble _080559B4 + mov r0, r8 + muls r0, r6, r0 + adds r0, r0, r7 + adds r2, r1, r2 + lsls r2, r2, #1 + ldr r1, _08055A04 + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 +_080559E0: + mov r6, sb + cmp r6, #5 + bgt _080559E8 + b _080558DE +_080559E8: + ldr r1, _08055A08 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08055A00: .4byte gUnknown_82ECDFE +_08055A04: .4byte gUnknown_82ECDC4 +_08055A08: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055810 + + thumb_func_start sub_08055A0C +sub_08055A0C: @ 0x08055A0C + push {r4, lr} + ldr r4, _08055A60 + ldr r0, _08055A64 + ldrb r0, [r0, #0x17] + strb r0, [r4] + ldr r1, _08055A68 + ldrb r2, [r4] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + ldr r3, _08055A6C + cmp r0, #0 + beq _08055A3C + ldr r0, [r3] + adds r0, #0x7f + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] +_08055A3C: + ldr r0, [r3] + adds r0, #0x7f + ldrb r2, [r0] + movs r0, #0 + movs r1, #0 + bl sub_08034290 + ldrb r0, [r4] + bl sub_0803F440 + ldr r1, _08055A70 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055A60: .4byte gUnknown_2023D08 +_08055A64: .4byte gUnknown_2024118 +_08055A68: .4byte gUnknown_2023D28 +_08055A6C: .4byte gUnknown_2024140 +_08055A70: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055A0C + + thumb_func_start sub_08055A74 +sub_08055A74: @ 0x08055A74 + push {r4, lr} + ldr r1, _08055AA4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r0, _08055AA8 + ldrb r0, [r0, #0x17] + bl sub_080422FC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08055A9E + ldr r0, _08055AAC + bl sub_080440D8 + ldr r0, _08055AB0 + ldr r0, [r0] + adds r0, #0x7f + subs r1, r4, #1 + strb r1, [r0] +_08055A9E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055AA4: .4byte gUnknown_2023EB8 +_08055AA8: .4byte gUnknown_2024118 +_08055AAC: .4byte gUnknown_8289A31 +_08055AB0: .4byte gUnknown_2024140 + thumb_func_end sub_08055A74 + + thumb_func_start sub_08055AB4 +sub_08055AB4: @ 0x08055AB4 + push {r4, lr} + movs r4, #0 + ldr r2, _08055AF0 + ldr r0, _08055AF4 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0xc9 + bne _08055B04 + ldr r1, _08055AF8 + ldr r0, _08055AFC + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + bne _08055B28 + orrs r1, r3 + str r1, [r2] + ldr r0, _08055B00 + strb r4, [r0, #5] + b _08055B2C + .align 2, 0 +_08055AF0: .4byte gUnknown_82ED220 +_08055AF4: .4byte gUnknown_2023E8E +_08055AF8: .4byte gUnknown_2023F50 +_08055AFC: .4byte gUnknown_2023EAF +_08055B00: .4byte gUnknown_2023FD6 +_08055B04: + ldr r1, _08055B38 + ldr r0, _08055B3C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #0xa + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + bne _08055B28 + orrs r1, r3 + str r1, [r2] + ldr r1, _08055B40 + movs r0, #1 + strb r0, [r1, #5] + movs r4, #1 +_08055B28: + cmp r4, #0 + beq _08055B48 +_08055B2C: + ldr r1, _08055B44 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08055B62 + .align 2, 0 +_08055B38: .4byte gUnknown_2023F50 +_08055B3C: .4byte gUnknown_2023EAF +_08055B40: .4byte gUnknown_2023FD6 +_08055B44: .4byte gUnknown_2023EB8 +_08055B48: + ldr r3, _08055B68 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055B62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055B68: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055AB4 + + thumb_func_start sub_08055B6C +sub_08055B6C: @ 0x08055B6C + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08055C0C + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08055C0C + ldr r2, _08055BBC + ldrb r0, [r2] + cmp r0, #0 + beq _08055BAA + ldr r1, _08055BC0 + movs r0, #2 + strb r0, [r1, #0xe] +_08055BAA: + ldrh r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _08055BC8 + ldr r0, _08055BC4 + ldr r1, [r0] + movs r0, #0x8b + b _08055C0A + .align 2, 0 +_08055BBC: .4byte gUnknown_2024070 +_08055BC0: .4byte gUnknown_2024118 +_08055BC4: .4byte gUnknown_2024140 +_08055BC8: + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _08055BDC + ldr r0, _08055BD8 + ldr r1, [r0] + movs r0, #0x85 + b _08055C0A + .align 2, 0 +_08055BD8: .4byte gUnknown_2024140 +_08055BDC: + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08055BF0 + ldr r0, _08055BEC + ldr r1, [r0] + movs r0, #0x8a + b _08055C0A + .align 2, 0 +_08055BEC: .4byte gUnknown_2024140 +_08055BF0: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08055C04 + ldr r0, _08055C00 + ldr r1, [r0] + movs r0, #0x8f + b _08055C0A + .align 2, 0 +_08055C00: .4byte gUnknown_2024140 +_08055C04: + ldr r0, _08055C1C + ldr r1, [r0] + movs r0, #0x80 +_08055C0A: + strb r0, [r1, #0x13] +_08055C0C: + ldr r1, _08055C20 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08055C1C: .4byte gUnknown_2024140 +_08055C20: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055B6C + + thumb_func_start sub_08055C24 +sub_08055C24: @ 0x08055C24 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r7, _08055C8C + ldr r0, _08055C90 + ldrb r0, [r0] + strb r0, [r7] + ldr r1, _08055C94 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, #0xb8 + ldr r1, [r1] + adds r6, r1, r0 + ldrh r5, [r6] + cmp r5, #0 + beq _08055CA4 + ldr r4, _08055C98 + movs r3, #0x58 + adds r0, r2, #0 + muls r0, r3, r0 + adds r0, r0, r4 + ldrh r0, [r0, #0x2e] + cmp r0, #0 + bne _08055CA4 + ldr r1, _08055C9C + strh r5, [r1] + strh r0, [r6] + ldrb r0, [r7] + muls r0, r3, r0 + adds r0, r0, r4 + ldrh r1, [r1] + strh r1, [r0, #0x2e] + ldrb r0, [r7] + muls r0, r3, r0 + adds r1, r4, #0 + adds r1, #0x2e + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #2 + movs r2, #0 + movs r3, #2 + bl sub_08033798 + ldrb r0, [r7] + bl sub_0803F440 + ldr r1, _08055CA0 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08055CBE + .align 2, 0 +_08055C8C: .4byte gUnknown_2023D08 +_08055C90: .4byte gUnknown_2023EAF +_08055C94: .4byte gUnknown_2024140 +_08055C98: .4byte gUnknown_2023D28 +_08055C9C: .4byte gUnknown_2023EAC +_08055CA0: .4byte gUnknown_2023EB8 +_08055CA4: + ldr r3, _08055CC8 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055CBE: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08055CC8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055C24 + + thumb_func_start sub_08055CCC +sub_08055CCC: @ 0x08055CCC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08055D3C + mov r8, r0 + ldr r7, _08055D40 + ldrb r0, [r7] + movs r6, #0x58 + muls r0, r6, r0 + mov r1, r8 + adds r3, r0, r1 + movs r0, #0x21 + adds r0, r0, r3 + mov ip, r0 + ldr r5, _08055D44 + ldr r4, _08055D48 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r2, [r0] + mov r1, ip + ldrb r0, [r1] + adds r1, r2, #0 + cmp r0, r1 + beq _08055D54 + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _08055D54 + mov r0, ip + strb r2, [r0] + ldrb r0, [r7] + adds r1, r0, #0 + muls r1, r6, r1 + add r1, r8 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + adds r1, #0x22 + strb r0, [r1] + ldr r1, _08055D4C + movs r0, #0xfd + strb r0, [r1] + movs r0, #3 + strb r0, [r1, #1] + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #3] + ldr r1, _08055D50 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08055D6E + .align 2, 0 +_08055D3C: .4byte gUnknown_2023D28 +_08055D40: .4byte gUnknown_2023EAF +_08055D44: .4byte gUnknown_82ECE07 +_08055D48: .4byte gUnknown_2022C94 +_08055D4C: .4byte gUnknown_2022C0C +_08055D50: .4byte gUnknown_2023EB8 +_08055D54: + ldr r3, _08055D78 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055D6E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08055D78: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055CCC + + thumb_func_start sub_08055D7C +sub_08055D7C: @ 0x08055D7C + push {r4, r5, r6, lr} + ldr r5, _08055DF0 + ldrb r0, [r5] + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r4, _08055DF4 + strb r0, [r4] + ldr r0, _08055DF8 + ldr r0, [r0] + movs r6, #1 + ands r0, r6 + cmp r0, #0 + beq _08055E1C + ldr r0, _08055DFC + ldrb r1, [r0] + ldr r2, _08055E00 + ldrb r3, [r4] + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08055E1C + ldr r0, _08055E04 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055E1C + ldr r1, _08055E08 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r2, [r0] + cmp r2, #0xe4 + bne _08055E1C + ldr r0, _08055E0C + adds r0, r3, r0 + movs r1, #0xb + strb r1, [r0] + ldr r0, _08055E10 + strh r2, [r0] + ldr r1, _08055E14 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + ldr r0, _08055E18 + strb r6, [r0, #0x18] + ldrb r1, [r5] + adds r0, #0x20 + strb r1, [r0] + ldrb r0, [r4] + strb r0, [r5] + b _08055E36 + .align 2, 0 +_08055DF0: .4byte gUnknown_2023EAF +_08055DF4: .4byte gUnknown_2023D08 +_08055DF8: .4byte gUnknown_2022C90 +_08055DFC: .4byte gUnknown_2023EB4 +_08055E00: .4byte gUnknown_82FACB4 +_08055E04: .4byte gUnknown_2023EC0 +_08055E08: .4byte gUnknown_2023F18 +_08055E0C: .4byte gUnknown_2023D1E +_08055E10: .4byte gUnknown_2023E8E +_08055E14: .4byte gUnknown_2023EB8 +_08055E18: .4byte gUnknown_2024118 +_08055E1C: + ldr r3, _08055E3C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08055E36: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08055E3C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055D7C + + thumb_func_start sub_08055E40 +sub_08055E40: @ 0x08055E40 + push {r4, lr} + ldr r1, _08055E64 + ldr r3, _08055E68 + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _08055E6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r1, #0 + ldrb r1, [r2] + cmp r0, r1 + bne _08055E74 + ldr r1, _08055E70 + ldrb r0, [r1, #0x17] + strb r0, [r2] + strb r0, [r3] + b _08055E7A + .align 2, 0 +_08055E64: .4byte gUnknown_2023EB2 +_08055E68: .4byte gUnknown_2023EAF +_08055E6C: .4byte gUnknown_2023EB0 +_08055E70: .4byte gUnknown_2024118 +_08055E74: + ldr r1, _08055E8C + ldrb r0, [r1, #0x17] + strb r0, [r2] +_08055E7A: + ldrb r0, [r4] + strb r0, [r1, #0x17] + ldr r1, _08055E90 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055E8C: .4byte gUnknown_2024118 +_08055E90: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055E40 + + thumb_func_start sub_08055E94 +sub_08055E94: @ 0x08055E94 + push {r4, lr} + ldr r0, _08055EDC + ldrb r0, [r0] + bl sub_080A62F8 + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08055EE0 + lsls r3, r0, #1 + adds r0, r3, r0 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + bne _08055EBC + ldrb r1, [r4, #2] + cmp r1, #0 + beq _08055EF4 +_08055EBC: + ldr r2, _08055EE4 + adds r2, r3, r2 + ldrh r1, [r2] + ldr r0, _08055EE8 + ands r0, r1 + movs r3, #0 + ldr r1, _08055EEC + ands r0, r1 + strh r0, [r2] + strb r3, [r4] + strb r3, [r4, #2] + ldr r1, _08055EF0 + movs r0, #1 + strb r0, [r1, #0x18] + strb r0, [r1, #0x19] + b _08055EFA + .align 2, 0 +_08055EDC: .4byte gUnknown_2023EAF +_08055EE0: .4byte gUnknown_2023F38 +_08055EE4: .4byte gUnknown_2023F32 +_08055EE8: .4byte 0x0000FFFE +_08055EEC: .4byte 0x0000FFFD +_08055EF0: .4byte gUnknown_2024118 +_08055EF4: + ldr r0, _08055F08 + strb r1, [r0, #0x18] + strb r1, [r0, #0x19] +_08055EFA: + ldr r1, _08055F0C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055F08: .4byte gUnknown_2024118 +_08055F0C: .4byte gUnknown_2023EB8 + thumb_func_end sub_08055E94 + + thumb_func_start sub_08055F10 +sub_08055F10: @ 0x08055F10 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r0, _08055F50 + ldr r0, [r0] + cmp r0, #0 + beq _08055F1E + b _080562A6 +_08055F1E: + ldr r5, _08055F54 + ldr r0, _08055F58 + ldrb r0, [r0] + strb r0, [r5] + ldr r6, _08055F5C + movs r1, #1 + eors r0, r1 + strb r0, [r6] + ldr r0, _08055F60 + ldr r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08055F6C + movs r0, #0 + movs r1, #5 + bl sub_0803393C + ldrb r0, [r5] + bl sub_0803F440 + ldr r1, _08055F64 + ldr r0, _08055F68 + b _080562A4 + .align 2, 0 +_08055F50: .4byte gUnknown_2023D0C +_08055F54: .4byte gUnknown_2023D08 +_08055F58: .4byte gUnknown_2023EAF +_08055F5C: .4byte gUnknown_2023EB0 +_08055F60: .4byte gUnknown_2022C90 +_08055F64: .4byte gUnknown_2023EB8 +_08055F68: .4byte gUnknown_828A38A +_08055F6C: + movs r0, #0x80 + lsls r0, r0, #2 + ands r1, r0 + cmp r1, #0 + beq _08055F94 + movs r0, #0 + movs r1, #4 + bl sub_0803393C + ldrb r0, [r5] + bl sub_0803F440 + ldr r1, _08055F8C + ldr r0, _08055F90 + b _080562A4 + .align 2, 0 +_08055F8C: .4byte gUnknown_2023EB8 +_08055F90: .4byte gUnknown_828A352 +_08055F94: + ldr r0, _08055FB8 + ldrh r0, [r0] + cmp r0, #5 + bne _08055FC0 + ldr r0, _08055FBC + ldr r0, [r0] + adds r0, #0x7c + ldrb r0, [r0] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r0, r1, #8 + subs r0, r0, r1 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _08055FD8 + .align 2, 0 +_08055FB8: .4byte gUnknown_2023EAC +_08055FBC: .4byte gUnknown_2024140 +_08055FC0: + ldr r3, _08055FF4 + ldr r2, _08055FF8 + ldrb r1, [r6] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r5, [r0, #8] +_08055FD8: + ldr r2, _08055FFC + ldrh r0, [r2] + cmp r0, #5 + bhi _08055FE2 + b _080560D8 +_08055FE2: + subs r0, #6 + cmp r0, #6 + bls _08055FEA + b _080560E2 +_08055FEA: + lsls r0, r0, #2 + ldr r1, _08056000 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08055FF4: .4byte gUnknown_82F0D54 +_08055FF8: .4byte gUnknown_2023D28 +_08055FFC: .4byte gUnknown_2023EAC +_08056000: .4byte _08056004 +_08056004: @ jump table + .4byte _08056020 @ case 0 + .4byte _08056050 @ case 1 + .4byte _08056062 @ case 2 + .4byte _08056090 @ case 3 + .4byte _080560C0 @ case 4 + .4byte _08056082 @ case 5 + .4byte _08056082 @ case 6 +_08056020: + ldr r2, _08056048 + ldr r0, _0805604C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r1, [r1] + cmp r1, #0xb + beq _080560B4 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0xb + beq _080560B4 + cmp r1, #6 + beq _080560B4 + cmp r0, #6 + beq _080560B4 + b _08056082 + .align 2, 0 +_08056048: .4byte gUnknown_2023D28 +_0805604C: .4byte gUnknown_2023EB0 +_08056050: + bl sub_0808550C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0xa + cmp r0, #5 + bne _080560E2 + movs r4, #0x23 + b _080560E2 +_08056062: + ldr r2, _08056088 + ldr r0, _0805608C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r1, [r0] + cmp r1, #0x27 + bhi _08056082 + movs r0, #0x28 + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bhi _080560E2 +_08056082: + movs r4, #0xa + b _080560E2 + .align 2, 0 +_08056088: .4byte gUnknown_2023D28 +_0805608C: .4byte gUnknown_2023EB0 +_08056090: + ldr r2, _080560B8 + ldr r0, _080560BC + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + movs r4, #0xa + cmp r0, #0 + beq _080560E2 +_080560B4: + movs r4, #0x1e + b _080560E2 + .align 2, 0 +_080560B8: .4byte gUnknown_2023D28 +_080560BC: .4byte gUnknown_2023EB0 +_080560C0: + ldr r0, _080560D4 + ldrb r0, [r0, #0x13] + adds r0, #0xa + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x28 + bls _080560E2 + movs r4, #0x28 + b _080560E2 + .align 2, 0 +_080560D4: .4byte gUnknown_3005A70 +_080560D8: + ldr r1, _0805614C + ldrh r0, [r2] + subs r0, #2 + adds r0, r0, r1 + ldrb r4, [r0] +_080560E2: + adds r0, r5, #0 + muls r0, r4, r0 + movs r1, #0xa + bl __divsi3 + ldr r5, _08056150 + ldr r1, _08056154 + ldrb r2, [r1] + movs r1, #0x58 + adds r4, r2, #0 + muls r4, r1, r4 + adds r3, r4, r5 + ldrh r2, [r3, #0x2c] + lsls r1, r2, #1 + adds r1, r1, r2 + ldrh r2, [r3, #0x28] + lsls r2, r2, #1 + subs r2, r1, r2 + muls r0, r2, r0 + bl __divsi3 + adds r6, r0, #0 + adds r5, #0x4c + adds r4, r4, r5 + ldr r4, [r4] + movs r0, #0x27 + ands r0, r4 + cmp r0, #0 + beq _0805611E + lsls r6, r6, #1 +_0805611E: + movs r0, #0xd8 + ands r4, r0 + cmp r4, #0 + beq _08056132 + lsls r0, r6, #4 + subs r0, r0, r6 + movs r1, #0xa + bl __udivsi3 + adds r6, r0, #0 +_08056132: + ldr r1, _08056158 + ldrh r0, [r1] + cmp r0, #5 + beq _08056174 + cmp r0, #1 + bne _08056160 + ldr r0, _0805615C + ldrb r1, [r0, #5] + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #5] + b _08056174 + .align 2, 0 +_0805614C: .4byte gUnknown_82ECE11 +_08056150: .4byte gUnknown_2023D28 +_08056154: .4byte gUnknown_2023EB0 +_08056158: .4byte gUnknown_2023EAC +_0805615C: .4byte gUnknown_3005A70 +_08056160: + ldr r0, _080561B8 + ldrh r1, [r1] + adds r0, r0, r1 + adds r1, r0, #0 + adds r1, #0x34 + ldrb r0, [r1] + cmp r0, #0xfe + bhi _08056174 + adds r0, #1 + strb r0, [r1] +_08056174: + cmp r6, #0xfe + bls _080561D8 + movs r0, #0 + movs r1, #4 + bl sub_0803393C + ldr r0, _080561BC + ldrb r0, [r0] + bl sub_0803F440 + ldr r1, _080561C0 + ldr r0, _080561C4 + str r0, [r1] + ldr r1, _080561C8 + ldr r0, _080561CC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080561D0 + adds r0, r0, r1 + ldr r2, _080561D4 + movs r1, #0x26 + bl sub_0806A774 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + beq _08056266 + b _08056290 + .align 2, 0 +_080561B8: .4byte gUnknown_3005A70 +_080561BC: .4byte gUnknown_2023D08 +_080561C0: .4byte gUnknown_2023EB8 +_080561C4: .4byte gUnknown_828A30C +_080561C8: .4byte gUnknown_2023D12 +_080561CC: .4byte gUnknown_2023EB0 +_080561D0: .4byte gUnknown_20243E8 +_080561D4: .4byte gUnknown_2023EAC +_080561D8: + movs r0, #0xff + lsls r0, r0, #0x10 + adds r1, r6, #0 + bl __udivsi3 + bl Sqrt + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl Sqrt + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08056200 + adds r1, r6, #0 + bl __udivsi3 + adds r6, r0, #0 + movs r4, #0 + b _0805620A + .align 2, 0 +_08056200: .4byte 0x000FFFF0 +_08056204: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0805620A: + cmp r4, #3 + bhi _0805621A + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + blo _08056204 +_0805621A: + ldr r5, _08056270 + ldrh r0, [r5] + cmp r0, #1 + bne _08056224 + movs r4, #4 +_08056224: + movs r0, #0 + adds r1, r4, #0 + bl sub_0803393C + ldr r0, _08056274 + ldrb r0, [r0] + bl sub_0803F440 + cmp r4, #4 + bne _0805629C + ldr r1, _08056278 + ldr r0, _0805627C + str r0, [r1] + ldr r1, _08056280 + ldr r0, _08056284 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08056288 + adds r0, r0, r1 + movs r1, #0x26 + adds r2, r5, #0 + bl sub_0806A774 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bne _08056290 +_08056266: + ldr r1, _0805628C + movs r0, #0 + strb r0, [r1, #5] + b _080562A6 + .align 2, 0 +_08056270: .4byte gUnknown_2023EAC +_08056274: .4byte gUnknown_2023D08 +_08056278: .4byte gUnknown_2023EB8 +_0805627C: .4byte gUnknown_828A30C +_08056280: .4byte gUnknown_2023D12 +_08056284: .4byte gUnknown_2023EB0 +_08056288: .4byte gUnknown_20243E8 +_0805628C: .4byte gUnknown_2023FD6 +_08056290: + ldr r1, _08056298 + movs r0, #1 + strb r0, [r1, #5] + b _080562A6 + .align 2, 0 +_08056298: .4byte gUnknown_2023FD6 +_0805629C: + ldr r0, _080562AC + strb r4, [r0, #5] + ldr r1, _080562B0 + ldr r0, _080562B4 +_080562A4: + str r0, [r1] +_080562A6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080562AC: .4byte gUnknown_2023FD6 +_080562B0: .4byte gUnknown_2023EB8 +_080562B4: .4byte gUnknown_828A35C + thumb_func_end sub_08055F10 + + thumb_func_start sub_080562B8 +sub_080562B8: @ 0x080562B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08056328 + mov sb, r0 + ldr r5, _0805632C + ldrb r0, [r5] + movs r6, #1 + eors r0, r6 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + movs r7, #0x64 + muls r0, r7, r0 + ldr r1, _08056330 + mov r8, r1 + add r0, r8 + bl sub_0806AEDC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080563A2 + bl sub_0813B254 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08056344 + ldr r0, _08056334 + strb r1, [r0, #5] + ldr r4, _08056338 + ldr r0, _0805633C + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r0, [r5] + eors r0, r6 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + muls r0, r7, r0 + add r0, r8 + ldr r2, _08056340 + movs r1, #2 + bl sub_0806A058 + b _0805638E + .align 2, 0 +_08056328: .4byte gUnknown_2023D12 +_0805632C: .4byte gUnknown_2023EAF +_08056330: .4byte gUnknown_20243E8 +_08056334: .4byte gUnknown_2023FD6 +_08056338: .4byte gUnknown_2021C40 +_0805633C: .4byte 0x00004036 +_08056340: .4byte gUnknown_2021C54 +_08056344: + ldr r4, _08056434 + ldr r0, _08056438 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r0, [r5] + eors r0, r6 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + muls r0, r7, r0 + add r0, r8 + ldr r2, _0805643C + movs r1, #2 + bl sub_0806A058 + ldr r4, _08056440 + bl sub_0813B248 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _08056444 + movs r0, #2 + strb r0, [r1, #5] +_0805638E: + ldr r0, _08056448 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080563A2 + ldr r1, _08056444 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_080563A2: + ldr r0, _0805644C + mov sl, r0 + ldr r1, _08056450 + mov sb, r1 + ldrb r0, [r1] + movs r4, #1 + eors r0, r4 + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r6, _08056454 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r5, _08056458 + strh r0, [r5, #0x28] + mov r1, sb + ldrb r0, [r1] + eors r0, r4 + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + adds r2, r5, #0 + adds r2, #0x2a + movs r1, #2 + bl sub_0806A058 + mov r1, sb + ldrb r0, [r1] + eors r4, r0 + lsls r4, r4, #1 + add r4, sl + ldrh r0, [r4] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + movs r1, #0x26 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r5, #5] + movs r1, #0x3d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #5] + ldr r1, _0805645C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08056434: .4byte gUnknown_2021C40 +_08056438: .4byte 0x00004036 +_0805643C: .4byte gUnknown_2021C54 +_08056440: .4byte gUnknown_2021C68 +_08056444: .4byte gUnknown_2023FD6 +_08056448: .4byte 0x000008AB +_0805644C: .4byte gUnknown_2023D12 +_08056450: .4byte gUnknown_2023EAF +_08056454: .4byte gUnknown_20243E8 +_08056458: .4byte gUnknown_3005A70 +_0805645C: .4byte gUnknown_2023EB8 + thumb_func_end sub_080562B8 + + thumb_func_start sub_08056460 +sub_08056460: @ 0x08056460 + push {r4, r5, lr} + ldr r4, _080564B0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080564B8 + ldr r3, _080564B4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _080564D2 + .align 2, 0 +_080564B0: .4byte gUnknown_20243E8 +_080564B4: .4byte gUnknown_2023EB8 +_080564B8: + adds r0, r5, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + adds r2, r4, #0 + bl sub_0806EAA8 + ldr r1, _080564D8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_080564D2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080564D8: .4byte gUnknown_2023EB8 + thumb_func_end sub_08056460 + + thumb_func_start sub_080564DC +sub_080564DC: @ 0x080564DC + push {r4, lr} + sub sp, #4 + ldr r0, _08056504 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08056508 + ldrb r0, [r0] + cmp r0, #5 + bls _080564F8 + b _0805663C +_080564F8: + lsls r0, r0, #2 + ldr r1, _0805650C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056504: .4byte gUnknown_20243E8 +_08056508: .4byte gUnknown_2023FD6 +_0805650C: .4byte _08056510 +_08056510: @ jump table + .4byte _08056528 @ case 0 + .4byte _0805653A @ case 1 + .4byte _08056588 @ case 2 + .4byte _080565D8 @ case 3 + .4byte _080565F0 @ case 4 + .4byte _08056628 @ case 5 +_08056528: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08056616 +_0805653A: + ldr r0, _08056578 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08056548 + b _0805663C +_08056548: + bl sub_080034D4 + adds r0, r4, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r3, _0805657C + ldr r1, _08056580 + ldrb r2, [r1] + movs r1, #0x58 + muls r2, r1, r2 + adds r1, r3, #0 + adds r1, #0x54 + adds r1, r2, r1 + ldr r1, [r1] + adds r3, #0x48 + adds r2, r2, r3 + ldr r2, [r2] + bl sub_080BF6B0 + ldr r1, _08056584 + strb r0, [r1, #1] + b _08056618 + .align 2, 0 +_08056578: .4byte gUnknown_2037C74 +_0805657C: .4byte gUnknown_2023D28 +_08056580: .4byte gUnknown_2023EB0 +_08056584: .4byte gUnknown_2023FD6 +_08056588: + ldr r0, _080565C0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0805663C + ldr r0, _080565C4 + ldr r1, [r0, #4] + ldr r0, _080565C8 + cmp r1, r0 + bne _0805663C + ldr r2, _080565CC + ldr r4, _080565D0 + ldrb r1, [r4, #1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _0805663C + ldr r0, _080565D4 + bl sub_080006F0 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0805663C + .align 2, 0 +_080565C0: .4byte gUnknown_2037C74 +_080565C4: .4byte gUnknown_3002360 +_080565C8: .4byte sub_080380FC +_080565CC: .4byte gUnknown_3005B60 +_080565D0: .4byte gUnknown_2023FD6 +_080565D4: .4byte sub_080386DC +_080565D8: + bl sub_08035528 + bl sub_080358F8 + ldr r1, _080565EC + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + b _08056616 + .align 2, 0 +_080565EC: .4byte gUnknown_2022AD4 +_080565F0: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0805663C + ldr r0, _08056620 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_08056616: + ldr r1, _08056624 +_08056618: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0805663C + .align 2, 0 +_08056620: .4byte 0x0000FFFF +_08056624: .4byte gUnknown_2023FD6 +_08056628: + ldr r0, _08056644 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0805663C + ldr r1, _08056648 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] +_0805663C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08056644: .4byte gUnknown_2037C74 +_08056648: .4byte gUnknown_2023EB8 + thumb_func_end sub_080564DC + + thumb_func_start sub_0805664C +sub_0805664C: @ 0x0805664C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, [sp, #0x40] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x10] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + movs r1, #0 + add r0, sp, #0xc + strh r1, [r0] + ldr r6, [sp, #0x10] + cmp r6, r3 + ble _08056686 + b _08056772 +_08056686: + mov r4, r8 + adds r0, r6, #1 + str r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + cmp r4, r2 + bgt _08056768 + add r5, sp, #0xc + lsls r7, r6, #0x18 + mov sb, r7 +_08056698: + ldr r0, [sp, #0x10] + cmp r6, r0 + bne _080566C4 + cmp r4, r8 + bne _080566AC + ldr r0, _080566A8 + b _0805670E + .align 2, 0 +_080566A8: .4byte 0x00001022 +_080566AC: + ldr r2, [sp, #0x1c] + cmp r4, r2 + bne _080566BC + ldr r0, _080566B8 + b _0805670E + .align 2, 0 +_080566B8: .4byte 0x00001024 +_080566BC: + ldr r0, _080566C0 + b _0805670E + .align 2, 0 +_080566C0: .4byte 0x00001023 +_080566C4: + ldr r7, [sp, #0x14] + cmp r6, r7 + bne _080566F0 + cmp r4, r8 + bne _080566D8 + ldr r0, _080566D4 + b _0805670E + .align 2, 0 +_080566D4: .4byte 0x00001028 +_080566D8: + ldr r0, [sp, #0x1c] + cmp r4, r0 + bne _080566E8 + ldr r0, _080566E4 + b _0805670E + .align 2, 0 +_080566E4: .4byte 0x0000102A +_080566E8: + ldr r0, _080566EC + b _0805670E + .align 2, 0 +_080566EC: .4byte 0x00001029 +_080566F0: + cmp r4, r8 + bne _080566FC + ldr r0, _080566F8 + b _0805670E + .align 2, 0 +_080566F8: .4byte 0x00001025 +_080566FC: + ldr r2, [sp, #0x1c] + cmp r4, r2 + bne _0805670C + ldr r0, _08056708 + b _0805670E + .align 2, 0 +_08056708: .4byte 0x00001027 +_0805670C: + ldr r0, _08056744 +_0805670E: + strh r0, [r5] + movs r1, #1 + mov r0, sl + ands r0, r1 + cmp r0, #0 + beq _0805671E + movs r0, #0 + strh r0, [r5] +_0805671E: + movs r0, #0x80 + mov r7, sl + ands r0, r7 + cmp r0, #0 + beq _08056748 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + str r1, [sp] + str r1, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + add r1, sp, #0xc + mov r7, sb + lsrs r3, r7, #0x18 + bl sub_080023B4 + b _08056760 + .align 2, 0 +_08056744: .4byte 0x00001026 +_08056748: + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + str r1, [sp] + str r1, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + mov r7, sb + lsrs r3, r7, #0x18 + bl sub_080023B4 +_08056760: + adds r4, #1 + ldr r0, [sp, #0x1c] + cmp r4, r0 + ble _08056698 +_08056768: + ldr r6, [sp, #0x18] + ldr r2, [sp, #0x14] + cmp r6, r2 + bgt _08056772 + b _08056686 +_08056772: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805664C + + thumb_func_start sub_08056784 +sub_08056784: @ 0x08056784 + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + add r0, sp, #0xc + movs r2, #1 + strh r2, [r0] + movs r1, #2 + strh r1, [r0, #2] + lsls r3, r3, #0x19 + movs r0, #0x90 + lsls r0, r0, #0x14 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + str r2, [sp] + str r1, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + movs r2, #0x19 + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r0} + bx r0 + thumb_func_end sub_08056784 + + thumb_func_start sub_080567BC +sub_080567BC: @ 0x080567BC + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + add r0, sp, #0xc + ldr r1, _080567F8 + strh r1, [r0] + strh r1, [r0, #2] + lsls r3, r3, #0x19 + movs r0, #0x90 + lsls r0, r0, #0x14 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + movs r2, #0x19 + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_080567F8: .4byte 0x00001016 + thumb_func_end sub_080567BC + + thumb_func_start sub_080567FC +sub_080567FC: @ 0x080567FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _08056820 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #4 + bls _08056814 + b _08056A72 +_08056814: + lsls r0, r1, #2 + ldr r1, _08056824 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056820: .4byte gUnknown_2023FD6 +_08056824: .4byte _08056828 +_08056828: @ jump table + .4byte _0805683C @ case 0 + .4byte _08056870 @ case 1 + .4byte _0805690C @ case 2 + .4byte _080569E4 @ case 3 + .4byte _08056A3C @ case 4 +_0805683C: + movs r4, #0 + str r4, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _08056868 + movs r1, #0xc + bl sub_0814FA04 + ldr r1, _0805686C + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + strb r4, [r1, #1] + movs r0, #0 + bl sub_08056784 + b _08056A72 + .align 2, 0 +_08056868: .4byte gUnknown_85ABBC9 +_0805686C: .4byte gUnknown_2023FD6 +_08056870: + ldr r0, _080568E8 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08056896 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _08056896 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #0 + strb r0, [r4, #1] + bl sub_08056784 +_08056896: + ldr r0, _080568E8 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080568BE + ldr r4, _080568EC + ldrb r0, [r4, #1] + cmp r0, #0 + bne _080568BE + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 +_080568BE: + ldr r0, _080568E8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080568F0 + movs r0, #5 + bl sub_080A306C + ldr r1, _080568EC + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08056902 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #3 + bl sub_080A1C58 + b _08056A72 + .align 2, 0 +_080568E8: .4byte gUnknown_3002360 +_080568EC: .4byte gUnknown_2023FD6 +_080568F0: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080568FA + b _08056A72 +_080568FA: + movs r0, #5 + bl sub_080A306C + ldr r1, _08056908 +_08056902: + movs r0, #4 + strb r0, [r1] + b _08056A72 + .align 2, 0 +_08056908: .4byte gUnknown_2023FD6 +_0805690C: + ldr r0, _080569C8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805691A + b _08056A72 +_0805691A: + ldr r7, _080569CC + ldr r0, _080569D0 + mov sl, r0 + ldrb r0, [r0] + movs r4, #1 + eors r0, r4 + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r1, #0x64 + mov sb, r1 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + ldr r1, _080569D4 + mov r8, r1 + add r0, r8 + ldr r1, _080569D8 + ldr r2, [r1] + adds r2, #0x6d + movs r1, #2 + bl sub_0806A058 + bl sub_080034D4 + mov r2, sl + ldrb r0, [r2] + eors r0, r4 + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + movs r1, #0xb + bl sub_0806A058 + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r2, sl + ldrb r0, [r2] + eors r0, r4 + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + bl sub_08069AF4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r2, sl + ldrb r0, [r2] + eors r4, r0 + lsls r4, r4, #1 + adds r4, r4, r7 + ldrh r0, [r4] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + ldr r2, _080569D8 + ldr r1, [r2] + adds r1, #0x6d + str r0, [sp] + ldr r0, _080569DC + str r0, [sp, #4] + movs r0, #2 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_080E2244 + ldr r1, _080569E0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08056A72 + .align 2, 0 +_080569C8: .4byte gUnknown_2037C74 +_080569CC: .4byte gUnknown_2023D12 +_080569D0: .4byte gUnknown_2023EAF +_080569D4: .4byte gUnknown_20243E8 +_080569D8: .4byte gUnknown_2024140 +_080569DC: .4byte sub_080380FC +_080569E0: .4byte gUnknown_2023FD6 +_080569E4: + ldr r0, _08056A20 + ldr r1, [r0, #4] + ldr r0, _08056A24 + cmp r1, r0 + bne _08056A72 + ldr r0, _08056A28 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08056A72 + ldr r2, _08056A2C + ldr r0, _08056A30 + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08056A34 + adds r0, r0, r1 + ldr r1, _08056A38 + ldr r2, [r1] + adds r2, #0x6d + movs r1, #2 + bl sub_0806A774 + b _08056A58 + .align 2, 0 +_08056A20: .4byte gUnknown_3002360 +_08056A24: .4byte sub_080380FC +_08056A28: .4byte gUnknown_2037C74 +_08056A2C: .4byte gUnknown_2023D12 +_08056A30: .4byte gUnknown_2023EAF +_08056A34: .4byte gUnknown_20243E8 +_08056A38: .4byte gUnknown_2024140 +_08056A3C: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bne _08056A58 + ldr r1, _08056A54 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] + b _08056A72 + .align 2, 0 +_08056A54: .4byte gUnknown_2023EB8 +_08056A58: + ldr r3, _08056A84 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] +_08056A72: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08056A84: .4byte gUnknown_2023EB8 + thumb_func_end sub_080567FC + + thumb_func_start sub_08056A88 +sub_08056A88: @ 0x08056A88 + ldr r2, _08056AA8 + ldr r0, _08056AAC + ldrb r1, [r0] + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldr r0, _08056AB0 + ldr r2, [r0] + ldrh r0, [r1, #0x28] + subs r0, r0, r2 + strh r0, [r1, #0x28] + ldr r1, _08056AB4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08056AA8: .4byte gUnknown_2023D28 +_08056AAC: .4byte gUnknown_2023EAF +_08056AB0: .4byte gUnknown_2023E94 +_08056AB4: .4byte gUnknown_2023EB8 + thumb_func_end sub_08056A88 + + thumb_func_start sub_08056AB8 +sub_08056AB8: @ 0x08056AB8 + ldr r1, _08056AD4 + ldr r0, _08056AD8 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x4c + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + ldr r1, _08056ADC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08056AD4: .4byte gUnknown_2023D28 +_08056AD8: .4byte gUnknown_2023EAF +_08056ADC: .4byte gUnknown_2023EB8 + thumb_func_end sub_08056AB8 + + thumb_func_start sub_08056AE0 +sub_08056AE0: @ 0x08056AE0 + ldr r1, _08056AE8 + movs r0, #0xc + strb r0, [r1] + bx lr + .align 2, 0 +_08056AE8: .4byte gUnknown_2023D27 + thumb_func_end sub_08056AE0 + + thumb_func_start sub_08056AEC +sub_08056AEC: @ 0x08056AEC + ldr r1, _08056AFC + movs r0, #0xc + strb r0, [r1] + ldr r1, _08056B00 + ldr r0, _08056B04 + ldrb r0, [r0] + strb r0, [r1] + bx lr + .align 2, 0 +_08056AFC: .4byte gUnknown_2023D27 +_08056B00: .4byte gUnknown_2023D26 +_08056B04: .4byte gUnknown_2023D10 + thumb_func_end sub_08056AEC + + thumb_func_start sub_08056B08 +sub_08056B08: @ 0x08056B08 + push {r4, r5, lr} + ldr r5, _08056B30 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_080A631C + ldr r4, _08056B34 + strb r0, [r4] + movs r0, #0 + bl sub_080338BC + ldrb r0, [r4] + bl sub_0803F440 + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08056B30: .4byte gUnknown_2023EB8 +_08056B34: .4byte gUnknown_2023D08 + thumb_func_end sub_08056B08 + + thumb_func_start sub_08056B38 +sub_08056B38: @ 0x08056B38 + push {r4, r5, r6, lr} + ldr r5, _08056C10 + ldr r6, _08056C14 + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + beq _08056B4E + bl sub_081D4C30 +_08056B4E: + ldr r4, _08056C18 + movs r0, #0xa9 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x20 + bl sub_08000BDC + str r0, [r5] + movs r0, #0xa0 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1] + movs r0, #0x10 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #4] + movs r0, #0x24 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #8] + movs r0, #0x24 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #0xc] + movs r0, #0xc + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #0x10] + movs r0, #0x1c + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #0x14] + movs r0, #0x54 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #0x18] + movs r0, #0x24 + bl sub_08000BDC + ldr r1, [r5] + str r0, [r1, #0x1c] + ldr r4, _08056C1C + movs r5, #0x80 + lsls r5, r5, #5 + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4] + ldr r4, _08056C20 + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4] + ldr r4, _08056C24 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + str r0, [r4] + ldr r4, _08056C28 + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4] + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + beq _08056C0A + ldr r0, _08056C2C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _08056C30 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + ldr r0, _08056C34 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + bl sub_0806B1D4 +_08056C0A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08056C10: .4byte gUnknown_202414C +_08056C14: .4byte gUnknown_2022C90 +_08056C18: .4byte gUnknown_2024140 +_08056C1C: .4byte gUnknown_2024144 +_08056C20: .4byte gUnknown_2024148 +_08056C24: .4byte gUnknown_2022D00 +_08056C28: .4byte gUnknown_2022D04 +_08056C2C: .4byte 0x00004054 +_08056C30: .4byte gUnknown_3005AEC +_08056C34: .4byte 0x00001A9C + thumb_func_end sub_08056B38 + + thumb_func_start sub_08056C38 +sub_08056C38: @ 0x08056C38 + push {r4, r5, r6, lr} + ldr r0, _08056CE8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + beq _08056C4C + bl sub_081D4CF0 +_08056C4C: + ldr r6, _08056CEC + ldr r0, [r6] + cmp r0, #0 + beq _08056CE0 + ldr r4, _08056CF0 + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + ldr r0, [r6] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #4] + ldr r0, [r0, #8] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #8] + ldr r0, [r0, #0xc] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #0xc] + ldr r0, [r0, #0x10] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #0x10] + ldr r0, [r0, #0x14] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #0x14] + ldr r0, [r0, #0x18] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #0x18] + ldr r0, [r0, #0x1c] + bl sub_08000BF0 + ldr r0, [r6] + str r5, [r0, #0x1c] + bl sub_08000BF0 + str r5, [r6] + ldr r4, _08056CF4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _08056CF8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _08056CFC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _08056D00 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] +_08056CE0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08056CE8: .4byte gUnknown_2022C90 +_08056CEC: .4byte gUnknown_202414C +_08056CF0: .4byte gUnknown_2024140 +_08056CF4: .4byte gUnknown_2024144 +_08056CF8: .4byte gUnknown_2024148 +_08056CFC: .4byte gUnknown_2022D00 +_08056D00: .4byte gUnknown_2022D04 + thumb_func_end sub_08056C38 + + thumb_func_start sub_08056D04 +sub_08056D04: @ 0x08056D04 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08056D48 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08056D50 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08056D4C + movs r0, #0x58 + adds r1, r3, #0 + muls r1, r0, r1 + adds r1, r1, r2 + adds r1, #0x2a + muls r0, r4, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bls _08056D5A + adds r4, r3, #0 + b _08056D5A + .align 2, 0 +_08056D48: .4byte gUnknown_2022C90 +_08056D4C: .4byte gUnknown_2023D28 +_08056D50: + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08056D5A: + ldr r2, _08056D9C + movs r1, #0x58 + adds r0, r4, #0 + muls r0, r1, r0 + adds r0, r0, r2 + adds r3, r0, #0 + adds r3, #0x2a + adds r0, r5, #0 + muls r0, r1, r0 + adds r0, r0, r2 + adds r1, r0, #0 + adds r1, #0x2a + ldrb r0, [r3] + ldrb r2, [r1] + cmp r0, r2 + bls _08056DC8 + ldrb r1, [r1] + subs r0, r0, r1 + cmp r0, #0x1d + ble _08056DA8 + ldr r1, _08056DA0 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08056DA4 + adds r0, r0, r1 + movs r1, #8 + bl sub_0806D3CC + b _08056DDE + .align 2, 0 +_08056D9C: .4byte gUnknown_2023D28 +_08056DA0: .4byte gUnknown_2023D12 +_08056DA4: .4byte gUnknown_2024190 +_08056DA8: + ldr r1, _08056DC0 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08056DC4 + adds r0, r0, r1 + movs r1, #6 + bl sub_0806D3CC + b _08056DDE + .align 2, 0 +_08056DC0: .4byte gUnknown_2023D12 +_08056DC4: .4byte gUnknown_2024190 +_08056DC8: + ldr r1, _08056DE4 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08056DE8 + adds r0, r0, r1 + movs r1, #6 + bl sub_0806D3CC +_08056DDE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08056DE4: .4byte gUnknown_2023D12 +_08056DE8: .4byte gUnknown_2024190 + thumb_func_end sub_08056D04 + + thumb_func_start sub_08056DEC +sub_08056DEC: @ 0x08056DEC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08056E58 + movs r2, #0 + ldr r6, _08056E60 + lsls r3, r4, #1 + ldr r5, _08056E64 + ldr r4, _08056E68 +_08056E0E: + adds r0, r2, r5 + ldr r1, [r4] + adds r1, r2, r1 + adds r1, #0x60 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #2 + ble _08056E0E + adds r0, r3, r6 + ldrb r0, [r0] + bl sub_081B8C8C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + bl sub_081B8C8C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B8C50 + movs r2, #0 + ldr r4, _08056E68 + ldr r3, _08056E64 +_08056E46: + ldr r0, [r4] + adds r0, r2, r0 + adds r0, #0x60 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #2 + ble _08056E46 +_08056E58: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08056E60: .4byte gUnknown_2023D12 +_08056E64: .4byte gUnknown_203CBCC +_08056E68: .4byte gUnknown_2024140 + thumb_func_end sub_08056DEC + + thumb_func_start sub_08056E6C +sub_08056E6C: @ 0x08056E6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0 + mov r8, r0 + ldr r1, _08056E88 + mov sl, r1 + b _08056E94 + .align 2, 0 +_08056E88: .4byte gUnknown_2023FD6 +_08056E8C: + mov r2, r8 + cmp r2, #0 + beq _08056E94 + b _08057016 +_08056E94: + mov r1, sl + ldrb r0, [r1] + cmp r0, #1 + bne _08056E9E + b _08056FA0 +_08056E9E: + cmp r0, #1 + ble _08056EA4 + b _0805700C +_08056EA4: + cmp r0, #0 + beq _08056EAA + b _0805700C +_08056EAA: + ldr r6, _08056EFC + movs r0, #0x58 + mov r5, sb + muls r5, r0, r5 + adds r0, r6, #0 + adds r0, #0x4c + adds r4, r5, r0 + ldr r0, [r4] + movs r7, #7 + ands r0, r7 + cmp r0, #0 + beq _08056F82 + mov r0, sb + bl sub_08050260 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08056F0C + ldr r0, [r4] + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r4] + adds r2, r6, #0 + adds r2, #0x50 + adds r2, r5, r2 + ldr r0, [r2] + ldr r1, _08056F00 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + movs r0, #1 + mov r2, sl + strb r0, [r2, #5] + ldr r1, _08056F04 + ldr r0, _08056F08 + str r0, [r1] + movs r0, #2 + mov r8, r0 + b _08056F82 + .align 2, 0 +_08056EFC: .4byte gUnknown_2023D28 +_08056F00: .4byte 0xF7FFFFFF +_08056F04: .4byte gUnknown_2023EB8 +_08056F08: .4byte gUnknown_82897A8 +_08056F0C: + adds r0, r5, r6 + adds r0, #0x20 + ldrb r0, [r0] + movs r2, #1 + cmp r0, #0x30 + bne _08056F1A + movs r2, #2 +_08056F1A: + ldr r1, [r4] + adds r0, r1, #0 + ands r0, r7 + cmp r0, r2 + bhs _08056F2E + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r4] + b _08056F32 +_08056F2E: + subs r0, r1, r2 + str r0, [r4] +_08056F32: + ldr r2, _08056F58 + movs r0, #0x58 + mov r1, sb + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0x4c + adds r0, r1, r0 + ldr r4, [r0] + movs r0, #7 + ands r4, r0 + cmp r4, #0 + beq _08056F64 + ldr r1, _08056F5C + ldr r0, _08056F60 + str r0, [r1] + movs r1, #2 + mov r8, r1 + b _08056F82 + .align 2, 0 +_08056F58: .4byte gUnknown_2023D28 +_08056F5C: .4byte gUnknown_2023EB8 +_08056F60: .4byte gUnknown_828979B +_08056F64: + adds r2, #0x50 + adds r2, r1, r2 + ldr r0, [r2] + ldr r1, _08056F90 + ands r0, r1 + str r0, [r2] + bl sub_0803F73C + ldr r0, _08056F94 + strb r4, [r0, #5] + ldr r1, _08056F98 + ldr r0, _08056F9C + str r0, [r1] + movs r2, #2 + mov r8, r2 +_08056F82: + ldr r1, _08056F94 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov sl, r1 + b _0805700C + .align 2, 0 +_08056F90: .4byte 0xF7FFFFFF +_08056F94: .4byte gUnknown_2023FD6 +_08056F98: .4byte gUnknown_2023EB8 +_08056F9C: .4byte gUnknown_82897A8 +_08056FA0: + ldr r1, _08056FD8 + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r1, #0x4c + adds r4, r0, r1 + ldr r0, [r4] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08057004 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _08056FE4 + ldr r1, _08056FDC + ldr r0, _08056FE0 + str r0, [r1] + b _08056FFC + .align 2, 0 +_08056FD8: .4byte gUnknown_2023D28 +_08056FDC: .4byte gUnknown_2023EB8 +_08056FE0: .4byte gUnknown_82897F2 +_08056FE4: + ldr r0, [r4] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r4] + bl sub_0803F73C + ldr r1, _08057054 + ldr r0, _08057058 + str r0, [r1] + mov r0, sl + strb r5, [r0, #5] +_08056FFC: + movs r1, #2 + mov r8, r1 + ldr r2, _0805705C + mov sl, r2 +_08057004: + mov r1, sl + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0805700C: + mov r2, sl + ldrb r0, [r2] + cmp r0, #2 + beq _08057016 + b _08056E8C +_08057016: + mov r0, r8 + cmp r0, #2 + bne _08057040 + ldr r4, _08057060 + mov r1, sb + strb r1, [r4] + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _08057064 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + movs r1, #0x28 + movs r2, #0 + movs r3, #4 + bl sub_08033798 + ldrb r0, [r4] + bl sub_0803F440 +_08057040: + mov r0, r8 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08057054: .4byte gUnknown_2023EB8 +_08057058: .4byte gUnknown_82897FF +_0805705C: .4byte gUnknown_2023FD6 +_08057060: .4byte gUnknown_2023D08 +_08057064: .4byte gUnknown_2023D74 + thumb_func_end sub_08056E6C + + thumb_func_start sub_08057068 +sub_08057068: @ 0x08057068 + bx lr + .align 2, 0 + thumb_func_end sub_08057068 + + thumb_func_start sub_0805706C +sub_0805706C: @ 0x0805706C + ldr r1, _08057088 + ldr r0, _0805708C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08057090 + str r1, [r0] + ldr r0, _08057094 + movs r1, #0 + strb r1, [r0] + ldr r0, _08057098 + strb r1, [r0] + bx lr + .align 2, 0 +_08057088: .4byte gUnknown_3005AC0 +_0805708C: .4byte gUnknown_2023D08 +_08057090: .4byte sub_08057114 +_08057094: .4byte gUnknown_202415D +_08057098: .4byte gUnknown_2024170 + thumb_func_end sub_0805706C + + thumb_func_start sub_0805709C +sub_0805709C: @ 0x0805709C + push {r4, lr} + sub sp, #4 + ldr r1, _080570DC + ldr r4, _080570E0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080570E4 + str r1, [r0] + ldr r0, _080570E8 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080570F0 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _080570EC + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _08057102 + .align 2, 0 +_080570DC: .4byte gUnknown_3005AC0 +_080570E0: .4byte gUnknown_2023D08 +_080570E4: .4byte sub_08057114 +_080570E8: .4byte gUnknown_2022C90 +_080570EC: .4byte gUnknown_2022D08 +_080570F0: + ldr r2, _0805710C + ldr r1, _08057110 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_08057102: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805710C: .4byte gUnknown_2023D0C +_08057110: .4byte gUnknown_82FACB4 + thumb_func_end sub_0805709C + + thumb_func_start sub_08057114 +sub_08057114: @ 0x08057114 + push {lr} + ldr r2, _08057148 + ldr r1, _0805714C + ldr r0, _08057150 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08057160 + ldr r0, _08057154 + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _0805715C + ldr r0, _08057158 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08057160 + .align 2, 0 +_08057148: .4byte gUnknown_2023D0C +_0805714C: .4byte gUnknown_82FACB4 +_08057150: .4byte gUnknown_2023D08 +_08057154: .4byte gUnknown_2022D08 +_08057158: .4byte gUnknown_82ECE9C +_0805715C: + bl sub_0805709C +_08057160: + pop {r0} + bx r0 + thumb_func_end sub_08057114 + + thumb_func_start sub_08057164 +sub_08057164: @ 0x08057164 + push {lr} + ldr r2, _0805718C + ldr r1, _08057190 + ldr r0, _08057194 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08057186 + bl sub_0805709C +_08057186: + pop {r0} + bx r0 + .align 2, 0 +_0805718C: .4byte gUnknown_20205AC +_08057190: .4byte gUnknown_2023E88 +_08057194: .4byte gUnknown_2023D08 + thumb_func_end sub_08057164 + + thumb_func_start sub_08057198 +sub_08057198: @ 0x08057198 + push {r4, r5, r6, r7, lr} + ldr r3, _080571E8 + ldr r4, _080571EC + ldrb r0, [r4] + lsls r2, r0, #9 + adds r1, r3, #2 + adds r1, r2, r1 + ldrb r5, [r1] + adds r3, #3 + adds r2, r2, r3 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r5, r1 + movs r1, #1 + movs r2, #7 + movs r3, #1 + bl sub_0803986C + ldrb r0, [r4] + movs r1, #0 + movs r2, #7 + movs r3, #1 + bl sub_0803986C + ldr r0, _080571F0 + ldrh r1, [r0, #0x30] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080571FC + ldr r0, _080571F4 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #2 + bne _080571FC + ldr r1, _080571F8 + ldrb r0, [r1] + adds r0, #1 + b _08057200 + .align 2, 0 +_080571E8: .4byte gUnknown_2022D08 +_080571EC: .4byte gUnknown_2023D08 +_080571F0: .4byte gUnknown_3002360 +_080571F4: .4byte gUnknown_3005AF0 +_080571F8: .4byte gUnknown_2024170 +_080571FC: + ldr r1, _08057230 + movs r0, #0 +_08057200: + strb r0, [r1] + ldr r0, _08057234 + ldrh r2, [r0, #0x2e] + movs r3, #1 + adds r0, r3, #0 + ands r0, r2 + cmp r0, #0 + beq _08057268 + movs r0, #5 + bl sub_080A306C + ldr r1, _08057238 + ldr r0, _0805723C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _08057250 + cmp r0, #1 + bgt _08057240 + cmp r0, #0 + beq _0805724A + b _080573D2 + .align 2, 0 +_08057230: .4byte gUnknown_2024170 +_08057234: .4byte gUnknown_3002360 +_08057238: .4byte gUnknown_2024150 +_0805723C: .4byte gUnknown_2023D08 +_08057240: + cmp r0, #2 + beq _08057256 + cmp r0, #3 + beq _0805725C + b _080573D2 +_0805724A: + movs r0, #1 + movs r1, #0 + b _080573CC +_08057250: + movs r0, #1 + movs r1, #1 + b _080573CC +_08057256: + movs r0, #1 + movs r1, #2 + b _080573CC +_0805725C: + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_08033FB0 + b _080573D2 +_08057268: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _080572A8 + ldr r5, _080572A0 + ldr r4, _080572A4 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08057284 + b _080573F8 +_08057284: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #1 + b _08057342 + .align 2, 0 +_080572A0: .4byte gUnknown_2024150 +_080572A4: .4byte gUnknown_2023D08 +_080572A8: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _080572E8 + ldr r5, _080572E0 + ldr r4, _080572E4 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080572C4 + b _080573F8 +_080572C4: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #1 + b _08057342 + .align 2, 0 +_080572E0: .4byte gUnknown_2024150 +_080572E4: .4byte gUnknown_2023D08 +_080572E8: + movs r7, #0x40 + adds r0, r7, #0 + ands r0, r2 + cmp r0, #0 + beq _08057310 + ldr r5, _08057308 + ldr r4, _0805730C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080573F8 + b _0805732A + .align 2, 0 +_08057308: .4byte gUnknown_2024150 +_0805730C: .4byte gUnknown_2023D08 +_08057310: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _0805735C + ldr r5, _08057354 + ldr r4, _08057358 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080573F8 +_0805732A: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #2 +_08057342: + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + b _080573F8 + .align 2, 0 +_08057354: .4byte gUnknown_2024150 +_08057358: .4byte gUnknown_2023D08 +_0805735C: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _0805736A + ldrb r0, [r1] + cmp r0, #0x3b + bls _080573EC +_0805736A: + ldr r4, _080573D8 + ldr r0, [r4] + ands r0, r3 + cmp r0, #0 + beq _080573F8 + ldr r6, _080573DC + ldrb r0, [r6] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080573F8 + movs r0, #0 + bl sub_080A631C + ldr r1, _080573E0 + ldrb r1, [r1] + ldr r2, _080573E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _080573F8 + ldr r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _080573F8 + ldr r0, _080573E8 + ldrb r1, [r6] + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #1 + bne _080573C2 + cmp r5, #0xc + bhi _080573F8 + adds r0, r5, #0 + movs r1, #1 + bl sub_080D6140 +_080573C2: + movs r0, #5 + bl sub_080A306C + movs r0, #1 + movs r1, #0xc +_080573CC: + movs r2, #0 + bl sub_08033FB0 +_080573D2: + bl sub_0805709C + b _080573F8 + .align 2, 0 +_080573D8: .4byte gUnknown_2022C90 +_080573DC: .4byte gUnknown_2023D08 +_080573E0: .4byte gUnknown_2023EB4 +_080573E4: .4byte gUnknown_82FACB4 +_080573E8: .4byte gUnknown_2022D08 +_080573EC: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _080573F8 + bl sub_08072C10 +_080573F8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08057198 + + thumb_func_start sub_08057400 +sub_08057400: @ 0x08057400 + push {r4, lr} + ldr r4, _08057428 + ldrb r0, [r4] + movs r1, #1 + bl sub_0803998C + ldrb r0, [r4] + movs r1, #0 + bl sub_0803998C + ldr r1, _0805742C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08057430 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08057428: .4byte gUnknown_2023D08 +_0805742C: .4byte gUnknown_3005AC0 +_08057430: .4byte sub_08057434 + thumb_func_end sub_08057400 + + thumb_func_start sub_08057434 +sub_08057434: @ 0x08057434 + push {r4, r5, lr} + sub sp, #4 + ldr r1, _08057494 + mov r0, sp + movs r2, #4 + bl memcpy + ldr r0, _08057498 + ldrb r0, [r0] + movs r1, #1 + movs r2, #0xf + movs r3, #1 + bl sub_0803986C + movs r4, #0 + ldr r0, _0805749C + ldrb r0, [r0] + cmp r0, #0 + beq _08057476 +_0805745A: + ldr r0, _08057498 + ldrb r0, [r0] + cmp r4, r0 + beq _0805746C + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0803998C +_0805746C: + adds r4, #1 + ldr r0, _0805749C + ldrb r0, [r0] + cmp r4, r0 + blt _0805745A +_08057476: + ldr r2, _080574A0 + ldrh r1, [r2, #0x2c] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080574AC + ldr r0, _080574A4 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #2 + bne _080574AC + ldr r1, _080574A8 + ldrb r0, [r1] + adds r0, #1 + b _080574B0 + .align 2, 0 +_08057494: .4byte gUnknown_82ECF80 +_08057498: .4byte gUnknown_3005AD4 +_0805749C: .4byte gUnknown_2023D10 +_080574A0: .4byte gUnknown_3002360 +_080574A4: .4byte gUnknown_3005AF0 +_080574A8: .4byte gUnknown_2024170 +_080574AC: + ldr r1, _08057504 + movs r0, #0 +_080574B0: + strb r0, [r1] + ldrh r2, [r2, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _08057520 + movs r0, #5 + bl sub_080A306C + ldr r2, _08057508 + ldr r1, _0805750C + ldr r4, _08057510 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08057514 + str r1, [r0] + ldr r1, _08057518 + ldr r0, _0805751C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + ldrb r0, [r4] + lsls r0, r0, #8 + orrs r2, r0 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + ldrb r0, [r4] + movs r1, #1 + bl sub_0803998C + bl sub_0805709C + b _080577D8 + .align 2, 0 +_08057504: .4byte gUnknown_2024170 +_08057508: .4byte gUnknown_20205AC +_0805750C: .4byte gUnknown_2023E88 +_08057510: .4byte gUnknown_3005AD4 +_08057514: .4byte sub_08039770 +_08057518: .4byte gUnknown_2024154 +_0805751C: .4byte gUnknown_2023D08 +_08057520: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _0805752E + ldrb r0, [r1] + cmp r0, #0x3b + bls _0805759C +_0805752E: + movs r0, #5 + bl sub_080A306C + ldr r2, _08057580 + ldr r1, _08057584 + ldr r5, _08057588 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0805758C + str r1, [r0] + ldr r1, _08057590 + ldr r4, _08057594 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08057598 + str r1, [r0] + ldrb r0, [r4] + movs r1, #1 + movs r2, #7 + movs r3, #1 + bl sub_0803986C + ldrb r0, [r4] + movs r1, #0 + movs r2, #7 + movs r3, #1 + bl sub_0803986C + ldrb r0, [r5] + movs r1, #1 + bl sub_0803998C + b _080577D8 + .align 2, 0 +_08057580: .4byte gUnknown_20205AC +_08057584: .4byte gUnknown_2023E88 +_08057588: .4byte gUnknown_3005AD4 +_0805758C: .4byte sub_08039770 +_08057590: .4byte gUnknown_3005AC0 +_08057594: .4byte gUnknown_2023D08 +_08057598: .4byte sub_0805780C +_0805759C: + movs r0, #0x60 + ands r0, r2 + cmp r0, #0 + bne _080575A6 + b _080576C0 +_080575A6: + movs r0, #5 + bl sub_080A306C + ldr r2, _080575D8 + ldr r1, _080575DC + ldr r3, _080575E0 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080575E4 + str r1, [r0] + adds r5, r3, #0 +_080575C8: + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r4, #0 + mov r0, sp + b _080575F2 + .align 2, 0 +_080575D8: .4byte gUnknown_20205AC +_080575DC: .4byte gUnknown_2023E88 +_080575E0: .4byte gUnknown_3005AD4 +_080575E4: .4byte sub_08039770 +_080575E8: + adds r4, #1 + cmp r4, #3 + bgt _080575F8 + mov r2, sp + adds r0, r2, r4 +_080575F2: + ldrb r0, [r0] + cmp r1, r0 + bne _080575E8 +_080575F8: + subs r4, #1 + cmp r4, #0 + bge _08057600 + movs r4, #4 +_08057600: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_080A631C + strb r0, [r5] + ldr r1, _08057634 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _080575F8 + movs r4, #0 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0805767E + cmp r0, #1 + bgt _08057638 + cmp r0, #0 + beq _08057642 + b _08057680 + .align 2, 0 +_08057634: .4byte gUnknown_2023D10 +_08057638: + cmp r0, #2 + beq _08057642 + cmp r0, #3 + beq _0805767E + b _08057680 +_08057642: + ldr r2, _080576A0 + ldrb r0, [r2] + ldrb r1, [r5] + cmp r0, r1 + bne _0805767E + ldr r1, _080576A4 + ldrb r2, [r2] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080576A8 + adds r0, r0, r1 + ldr r1, _080576AC + adds r2, r2, r1 + ldrb r1, [r2] + adds r1, #0xd + bl sub_0806A058 + ldr r2, _080576B0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08057680 +_0805767E: + adds r4, #1 +_08057680: + ldr r0, _080576B4 + ldrb r1, [r0] + ldr r2, _080576B8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + ldr r0, _080576BC + cmp r1, #0 + beq _08057698 + movs r4, #0 +_08057698: + cmp r4, #0 + beq _080575C8 + b _080577C0 + .align 2, 0 +_080576A0: .4byte gUnknown_2023D08 +_080576A4: .4byte gUnknown_2023D12 +_080576A8: .4byte gUnknown_2024190 +_080576AC: .4byte gUnknown_2024154 +_080576B0: .4byte gUnknown_82ED220 +_080576B4: .4byte gUnknown_2023EB4 +_080576B8: .4byte gUnknown_82FACB4 +_080576BC: .4byte gUnknown_3005AD4 +_080576C0: + movs r0, #0x90 + ands r0, r2 + cmp r0, #0 + bne _080576CA + b _080577D8 +_080576CA: + movs r0, #5 + bl sub_080A306C + ldr r2, _080576FC + ldr r1, _08057700 + ldr r3, _08057704 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08057708 + str r1, [r0] + adds r5, r3, #0 +_080576EC: + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r4, #0 + mov r0, sp + b _08057716 + .align 2, 0 +_080576FC: .4byte gUnknown_20205AC +_08057700: .4byte gUnknown_2023E88 +_08057704: .4byte gUnknown_3005AD4 +_08057708: .4byte sub_08039770 +_0805770C: + adds r4, #1 + cmp r4, #3 + bgt _0805771C + mov r2, sp + adds r0, r2, r4 +_08057716: + ldrb r0, [r0] + cmp r1, r0 + bne _0805770C +_0805771C: + adds r4, #1 + cmp r4, #3 + ble _08057724 + movs r4, #0 +_08057724: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_080A631C + strb r0, [r5] + ldr r1, _08057758 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _0805771C + movs r4, #0 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080577A2 + cmp r0, #1 + bgt _0805775C + cmp r0, #0 + beq _08057766 + b _080577A4 + .align 2, 0 +_08057758: .4byte gUnknown_2023D10 +_0805775C: + cmp r0, #2 + beq _08057766 + cmp r0, #3 + beq _080577A2 + b _080577A4 +_08057766: + ldr r2, _080577E0 + ldrb r0, [r2] + ldrb r1, [r5] + cmp r0, r1 + bne _080577A2 + ldr r1, _080577E4 + ldrb r2, [r2] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080577E8 + adds r0, r0, r1 + ldr r1, _080577EC + adds r2, r2, r1 + ldrb r1, [r2] + adds r1, #0xd + bl sub_0806A058 + ldr r2, _080577F0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080577A4 +_080577A2: + adds r4, #1 +_080577A4: + ldr r0, _080577F4 + ldrb r1, [r0] + ldr r2, _080577F8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + ldr r0, _080577FC + cmp r1, #0 + beq _080577BC + movs r4, #0 +_080577BC: + cmp r4, #0 + beq _080576EC +_080577C0: + ldr r2, _08057800 + ldr r1, _08057804 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08057808 + str r1, [r0] +_080577D8: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080577E0: .4byte gUnknown_2023D08 +_080577E4: .4byte gUnknown_2023D12 +_080577E8: .4byte gUnknown_2024190 +_080577EC: .4byte gUnknown_2024154 +_080577F0: .4byte gUnknown_82ED220 +_080577F4: .4byte gUnknown_2023EB4 +_080577F8: .4byte gUnknown_82FACB4 +_080577FC: .4byte gUnknown_3005AD4 +_08057800: .4byte gUnknown_20205AC +_08057804: .4byte gUnknown_2023E88 +_08057808: .4byte sub_0803971C + thumb_func_end sub_08057434 + + thumb_func_start sub_0805780C +sub_0805780C: @ 0x0805780C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + mov r8, r0 + ldr r3, _08057840 + ldrb r0, [r3] + lsls r0, r0, #9 + ldr r1, _08057844 + adds r6, r0, r1 + ldr r2, _08057848 + ldrh r1, [r2, #0x2c] + movs r0, #0xf0 + ands r0, r1 + adds r7, r3, #0 + cmp r0, #0 + beq _08057854 + ldr r0, _0805784C + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #2 + bne _08057854 + ldr r1, _08057850 + ldrb r0, [r1] + adds r0, #1 + b _08057858 + .align 2, 0 +_08057840: .4byte gUnknown_2023D08 +_08057844: .4byte gUnknown_2022D0C +_08057848: .4byte gUnknown_3002360 +_0805784C: .4byte gUnknown_3005AF0 +_08057850: .4byte gUnknown_2024170 +_08057854: + ldr r1, _0805789C + movs r0, #0 +_08057858: + strb r0, [r1] + ldrh r2, [r2, #0x2e] + movs r5, #1 + adds r0, r5, #0 + ands r0, r2 + cmp r0, #0 + bne _08057868 + b _08057A14 +_08057868: + movs r0, #5 + bl sub_080A306C + ldr r1, _080578A0 + ldr r0, _080578A4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, r6, r0 + ldrh r0, [r1] + cmp r0, #0xae + bne _080578A8 + ldrb r0, [r6, #0x12] + movs r4, #0 + cmp r0, #7 + beq _080578B6 + ldrb r1, [r6, #0x13] + movs r0, #7 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r4, r0, #0x1f + movs r0, #0x10 + ands r4, r0 + b _080578B6 + .align 2, 0 +_0805789C: .4byte gUnknown_2024170 +_080578A0: .4byte gUnknown_2024154 +_080578A4: .4byte gUnknown_2023D08 +_080578A8: + ldr r2, _080578C8 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r4, [r0, #6] +_080578B6: + movs r0, #0x10 + ands r0, r4 + cmp r0, #0 + beq _080578D4 + ldr r0, _080578CC + ldr r1, _080578D0 + ldrb r1, [r1] + strb r1, [r0] + b _080578EE + .align 2, 0 +_080578C8: .4byte gUnknown_82ED220 +_080578CC: .4byte gUnknown_3005AD4 +_080578D0: .4byte gUnknown_2023D08 +_080578D4: + ldr r0, _0805791C + ldrb r0, [r0] + bl sub_080A630C + adds r1, r0, #0 + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + bl sub_080A631C + ldr r1, _08057920 + strb r0, [r1] +_080578EE: + ldr r5, _08057924 + ldr r0, _0805791C + ldrb r3, [r0] + lsls r2, r3, #9 + adds r1, r5, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r7, r0, #0 + cmp r1, #0 + bne _08057928 + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0805796A + adds r0, r5, #2 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805796A + movs r0, #1 + add r8, r0 + b _0805796A + .align 2, 0 +_0805791C: .4byte gUnknown_2023D08 +_08057920: .4byte gUnknown_3005AD4 +_08057924: .4byte gUnknown_2022D08 +_08057928: + movs r0, #0x7d + ands r0, r4 + cmp r0, #0 + bne _08057934 + movs r0, #1 + add r8, r0 +_08057934: + ldr r0, _08057984 + adds r0, r3, r0 + adds r1, r6, #0 + adds r1, #8 + ldrb r0, [r0] + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _08057972 + movs r0, #0x12 + ands r0, r4 + cmp r0, #0 + bne _0805796A + movs r0, #0 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0805796A + ldrb r0, [r7] + bl sub_08069A74 + ldr r1, _08057988 + strb r0, [r1] + movs r0, #0 + mov r8, r0 +_0805796A: + ldr r7, _0805798C + mov r0, r8 + cmp r0, #0 + bne _08057990 +_08057972: + ldr r1, _08057984 + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r0, _08057988 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r2, r0 + b _08057A2C + .align 2, 0 +_08057984: .4byte gUnknown_2024154 +_08057988: .4byte gUnknown_3005AD4 +_0805798C: .4byte gUnknown_2023D08 +_08057990: + ldr r1, _080579AC + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080579B0 + str r1, [r0] + movs r0, #0x12 + ands r4, r0 + cmp r4, #0 + beq _080579B8 + ldr r1, _080579B4 + ldrb r0, [r7] + b _080579E8 + .align 2, 0 +_080579AC: .4byte gUnknown_3005AC0 +_080579B0: .4byte sub_08057434 +_080579B4: .4byte gUnknown_3005AD4 +_080579B8: + movs r0, #1 + bl sub_080A631C + ldr r1, _080579D8 + ldrb r1, [r1] + ldr r2, _080579DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _080579E0 + movs r0, #3 + b _080579E2 + .align 2, 0 +_080579D8: .4byte gUnknown_2023EB4 +_080579DC: .4byte gUnknown_82FACB4 +_080579E0: + movs r0, #1 +_080579E2: + bl sub_080A631C + ldr r1, _08057A04 +_080579E8: + strb r0, [r1] + ldr r2, _08057A08 + ldr r1, _08057A0C + ldr r0, _08057A04 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08057A10 + b _08057BAC + .align 2, 0 +_08057A04: .4byte gUnknown_3005AD4 +_08057A08: .4byte gUnknown_20205AC +_08057A0C: .4byte gUnknown_2023E88 +_08057A10: .4byte sub_0803971C +_08057A14: + movs r6, #2 + adds r0, r6, #0 + ands r0, r2 + cmp r0, #0 + bne _08057A24 + ldrb r0, [r1] + cmp r0, #0x3b + bls _08057A40 +_08057A24: + movs r0, #5 + bl sub_080A306C + ldr r2, _08057A3C +_08057A2C: + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + bl sub_0805709C + b _08057BAE + .align 2, 0 +_08057A3C: .4byte 0x0000FFFF +_08057A40: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _08057A70 + ldr r4, _08057A6C + ldrb r0, [r7] + adds r2, r0, r4 + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08057A5A + b _08057BAE +_08057A5A: + ldrb r0, [r2] + bl sub_08059884 + ldrb r1, [r7] + adds r1, r1, r4 + ldrb r0, [r1] + movs r2, #1 + eors r0, r2 + b _08057B18 + .align 2, 0 +_08057A6C: .4byte gUnknown_2024154 +_08057A70: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08057AB4 + ldr r4, _08057AAC + ldrb r0, [r7] + adds r3, r0, r4 + ldrb r2, [r3] + movs r6, #1 + adds r0, r5, #0 + ands r0, r2 + cmp r0, #0 + beq _08057A8C + b _08057BAE +_08057A8C: + ldr r1, _08057AB0 + adds r0, r6, #0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + blo _08057A9A + b _08057BAE +_08057A9A: + ldrb r0, [r3] + bl sub_08059884 + ldrb r1, [r7] + adds r1, r1, r4 + ldrb r0, [r1] + eors r0, r6 + b _08057B18 + .align 2, 0 +_08057AAC: .4byte gUnknown_2024154 +_08057AB0: .4byte gUnknown_3005AD8 +_08057AB4: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _08057AE4 + ldr r4, _08057AE0 + ldrb r0, [r7] + adds r2, r0, r4 + ldrb r1, [r2] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08057BAE + ldrb r0, [r2] + bl sub_08059884 + ldrb r1, [r7] + adds r1, r1, r4 + ldrb r0, [r1] + movs r2, #2 + eors r0, r2 + b _08057B18 + .align 2, 0 +_08057AE0: .4byte gUnknown_2024154 +_08057AE4: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08057B40 + ldr r4, _08057B38 + ldrb r0, [r7] + adds r3, r0, r4 + ldrb r2, [r3] + movs r5, #2 + adds r0, r6, #0 + ands r0, r2 + cmp r0, #0 + bne _08057BAE + ldr r1, _08057B3C + adds r0, r5, #0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bhs _08057BAE + ldrb r0, [r3] + bl sub_08059884 + ldrb r1, [r7] + adds r1, r1, r4 + ldrb r0, [r1] + eors r0, r5 +_08057B18: + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C + bl sub_0805976C + bl sub_080597E0 + b _08057BAE + .align 2, 0 +_08057B38: .4byte gUnknown_2024154 +_08057B3C: .4byte gUnknown_3005AD8 +_08057B40: + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _08057BAE + ldr r0, _08057B78 + ldrb r0, [r0] + cmp r0, #1 + bls _08057BAE + ldr r0, _08057B7C + ldr r5, [r0] + ands r5, r6 + cmp r5, #0 + bne _08057BAE + ldr r4, _08057B80 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0x1d + bl sub_0805983C + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _08057B88 + ldr r0, _08057B84 + strb r5, [r0] + b _08057B90 + .align 2, 0 +_08057B78: .4byte gUnknown_3005AD8 +_08057B7C: .4byte gUnknown_2022C90 +_08057B80: .4byte gUnknown_2024154 +_08057B84: .4byte gUnknown_3005AD4 +_08057B88: + ldr r1, _08057BB8 + adds r0, #1 + strb r0, [r1] + adds r0, r1, #0 +_08057B90: + ldrb r0, [r0] + movs r1, #0x1b + bl sub_0805983C + ldr r0, _08057BBC + movs r1, #0xb + bl sub_0814FA04 + ldr r1, _08057BC0 + ldr r0, _08057BC4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08057BC8 +_08057BAC: + str r1, [r0] +_08057BAE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08057BB8: .4byte gUnknown_3005AD4 +_08057BBC: .4byte gUnknown_85ABBD8 +_08057BC0: .4byte gUnknown_3005AC0 +_08057BC4: .4byte gUnknown_2023D08 +_08057BC8: .4byte sub_08057D48 + thumb_func_end sub_0805780C + + thumb_func_start sub_08057BCC +sub_08057BCC: @ 0x08057BCC + push {r4, r5, r6, r7, lr} + movs r7, #0 + ldr r4, _08057D30 + ldrh r1, [r4, #0x2e] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08057BE6 + movs r0, #5 + bl sub_080A306C + movs r7, #1 +_08057BE6: + ldrh r1, [r4, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08057C08 + movs r0, #5 + bl sub_080A306C + ldr r1, _08057D34 + movs r0, #0 + strh r0, [r1] + ldr r1, _08057D38 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + movs r7, #0xff +_08057C08: + ldrh r1, [r4, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08057C48 + ldr r5, _08057D3C + ldr r4, _08057D40 + ldrb r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08057C48 + ldrb r0, [r2] + bl sub_08059884 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #1 + eors r0, r2 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C +_08057C48: + ldr r0, _08057D30 + ldrh r1, [r0, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08057C96 + ldr r5, _08057D3C + ldr r4, _08057D40 + ldrb r0, [r4] + adds r3, r0, r5 + ldrb r2, [r3] + movs r6, #1 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _08057C96 + ldr r1, _08057D44 + adds r0, r6, #0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bhs _08057C96 + ldrb r0, [r3] + bl sub_08059884 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + eors r0, r6 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C +_08057C96: + ldr r0, _08057D30 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08057CD8 + ldr r5, _08057D3C + ldr r4, _08057D40 + ldrb r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08057CD8 + ldrb r0, [r2] + bl sub_08059884 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #2 + eors r0, r2 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C +_08057CD8: + ldr r0, _08057D30 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08057D26 + ldr r5, _08057D3C + ldr r4, _08057D40 + ldrb r0, [r4] + adds r3, r0, r5 + ldrb r2, [r3] + movs r6, #2 + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _08057D26 + ldr r1, _08057D44 + adds r0, r6, #0 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bhs _08057D26 + ldrb r0, [r3] + bl sub_08059884 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + eors r0, r6 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C +_08057D26: + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08057D30: .4byte gUnknown_3002360 +_08057D34: .4byte gUnknown_2022AC8 +_08057D38: .4byte gUnknown_2022ACA +_08057D3C: .4byte gUnknown_2024154 +_08057D40: .4byte gUnknown_2023D08 +_08057D44: .4byte gUnknown_3005AD8 + thumb_func_end sub_08057BCC + + thumb_func_start sub_08057D48 +sub_08057D48: @ 0x08057D48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r0, _080580E0 + ldrh r1, [r0, #0x2e] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + bne _08057D62 + b _08058110 +_08057D62: + movs r0, #5 + bl sub_080A306C + ldr r0, _080580E4 + mov sl, r0 + ldr r1, _080580E8 + mov r8, r1 + ldrb r1, [r1] + adds r2, r1, r0 + ldr r5, _080580EC + ldrb r0, [r2] + ldrb r3, [r5] + cmp r0, r3 + bne _08057D80 + b _080580B8 +_08057D80: + lsls r1, r1, #9 + ldr r0, _080580F0 + adds r1, r1, r0 + mov sb, r1 + ldrb r1, [r2] + lsls r1, r1, #1 + add r1, sb + ldrh r6, [r1] + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + strh r0, [r1] + ldrb r0, [r5] + lsls r0, r0, #1 + add r0, sb + strh r6, [r0] + mov r1, r8 + ldrb r0, [r1] + add r0, sl + ldrb r1, [r0] + mov r7, sb + adds r7, #8 + 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, sl + ldrb r1, [r0] + mov r2, sb + 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, r2, r0 + strb r6, [r2] + mov r3, r8 + ldrb r1, [r3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _080580F4 + adds r6, r0, r2 + ldrb r4, [r6, #0x18] + lsls r3, r4, #0x18 + lsrs r2, r3, #0x1c + ldr r0, _080580F8 + mov ip, r0 + add r1, sl + ldrb r0, [r1] + lsls r0, r0, #2 + add r0, ip + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + beq _08057E3A + lsrs r1, r3, #0x1c + bics r1, r0 + lsls r1, 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, r1, r0 + lsls r1, r1, #2 + ldr r3, _080580F4 + adds r1, r1, r3 + ldrb r4, [r1, #0x18] + lsrs r3, r4, #4 + ldrb r0, [r5] + lsls r0, r0, #2 + add r0, ip + ldr r0, [r0] + orrs r0, r3 + lsls r0, r0, #4 + ands r2, r4 + orrs r2, r0 + strb r2, [r1, #0x18] +_08057E3A: + bl sub_080596BC + movs r6, #0 + mov ip, r7 + mov r5, sp + adds r5, #0x18 + str r5, [sp, #0x1c] + ldr r2, _080580FC + mov r0, r8 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r4, r0, #0 + adds r4, #0x3b + mov r7, r8 + mov sl, r2 + movs r5, #3 +_08057E5E: + 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, #1 + cmp r6, #3 + ble _08057E5E + ldr r1, _080580E4 + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r0, [r0] + add r0, sp + ldrb r0, [r0] + ldr r2, [sp, #0x1c] + strb r0, [r2] + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r0, [r0] + mov r3, sp + adds r2, r3, r0 + ldr r1, _080580EC + 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] +_08057EAE: + 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, #1 + cmp r6, #3 + ble _08057EAE + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + add r0, sl + 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, sl + mov r8, r0 + mov r2, sb + mov r7, sl + adds r7, #0xc + mov r5, ip +_08057EE8: + lsls r1, r6, #1 + ldrb r0, [r4] + muls r0, r3, r0 + adds r1, r1, r0 + adds r1, r1, r7 + ldrh r0, [r2] + strh r0, [r1] + ldrb r0, [r4] + adds r1, r0, #0 + muls r1, r3, r1 + adds r1, r6, r1 + add r1, r8 + adds r0, r5, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #2 + adds r6, #1 + cmp r6, #3 + ble _08057EE8 + ldr r2, _080580E8 + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + mov r1, sl + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + beq _08057F2A + b _080580B8 +_08057F2A: + movs r6, #0 + mov r1, sp + adds r1, #4 + str r1, [sp, #0x20] + add r3, sp, #0xc + mov sl, r3 + ldr r5, _08058100 + mov sb, r5 + mov r8, r2 + movs r7, #0x64 + ldr r5, _08058104 + adds r4, r1, #0 +_08057F42: + mov r1, r8 + ldrb r0, [r1] + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r5 + adds r1, r6, #0 + adds r1, #0xd + bl sub_0806A058 + strh r0, [r4] + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + muls r0, r7, r0 + adds r0, r0, r5 + adds r1, r6, #0 + adds r1, #0x11 + bl sub_0806A058 + mov r3, sl + adds r1, r3, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08057F42 + ldr r1, _08058100 + ldr r0, _080580E8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08058104 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + ldr r5, [sp, #0x1c] + strb r0, [r5] + movs r6, #0 + movs r5, #3 + ldr r4, [sp, #0x1c] +_08057FA2: + 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, #1 + cmp r6, #3 + ble _08057FA2 + ldr r4, _080580E4 + ldr r3, _080580E8 + ldrb r0, [r3] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r1, r1, #1 + ldr r2, [sp, #0x20] + adds r1, r2, r1 + ldrh r6, [r1] + ldr r2, _080580EC + ldrb r0, [r2] + lsls r0, r0, #1 + ldr r5, [sp, #0x20] + adds r0, r5, r0 + ldrh r0, [r0] + movs r5, #0 + strh r0, [r1] + ldrb r0, [r2] + lsls r0, r0, #1 + ldr r1, [sp, #0x20] + adds r0, r1, r0 + strh r6, [r0] + ldrb r0, [r3] + adds r0, r0, r4 + ldrb r1, [r0] + add r1, sl + ldrb r6, [r1] + ldrb r0, [r2] + add r0, sl + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + add r0, sl + strb r6, [r0] + ldrb r0, [r3] + adds r0, r0, r4 + ldrb r0, [r0] + add r0, sp + ldrb r0, [r0] + ldr r1, [sp, #0x1c] + strb r0, [r1] + ldrb r0, [r3] + adds r0, 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] +_0805802E: + 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, #1 + cmp r6, #3 + ble _0805802E + movs r6, #0 + ldr r5, _08058100 + mov sl, r5 + ldr r0, _080580E8 + mov sb, r0 + movs r1, #0x64 + mov r8, r1 + ldr r7, _08058104 + ldr r5, [sp, #0x20] + adds r5, #8 + ldr r4, [sp, #0x20] +_0805805A: + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + adds r0, r0, r7 + adds r1, r6, #0 + adds r1, #0xd + adds r2, r4, #0 + bl sub_0806A774 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + adds r0, r0, r7 + adds r1, r6, #0 + adds r1, #0x11 + adds r2, r5, #0 + bl sub_0806A774 + adds r5, #1 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0805805A + ldr r1, _08058100 + ldr r0, _080580E8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08058104 + adds r0, r0, r1 + movs r1, #0x15 + ldr r2, [sp, #0x1c] + bl sub_0806A774 +_080580B8: + ldr r1, _08058108 + ldr r2, _080580E8 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805810C + str r1, [r0] + ldr r3, _080580E4 + ldrb r0, [r2] + adds r0, r0, r3 + ldr r1, _080580EC + ldrb r1, [r1] + strb r1, [r0] + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C + b _08058142 + .align 2, 0 +_080580E0: .4byte gUnknown_3002360 +_080580E4: .4byte gUnknown_2024154 +_080580E8: .4byte gUnknown_2023D08 +_080580EC: .4byte gUnknown_3005AD4 +_080580F0: .4byte gUnknown_2022D0C +_080580F4: .4byte gUnknown_2023F60 +_080580F8: .4byte gUnknown_82FACB4 +_080580FC: .4byte gUnknown_2023D28 +_08058100: .4byte gUnknown_2023D12 +_08058104: .4byte gUnknown_2024190 +_08058108: .4byte gUnknown_3005AC0 +_0805810C: .4byte sub_0805780C +_08058110: + movs r0, #6 + ands r0, r1 + cmp r0, #0 + beq _08058164 + movs r0, #5 + bl sub_080A306C + ldr r0, _08058150 + ldrb r0, [r0] + bl sub_08059884 + ldr r1, _08058154 + ldr r4, _08058158 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C + ldr r1, _0805815C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08058160 + str r1, [r0] +_08058142: + bl sub_08059734 + bl sub_0805976C + bl sub_080597E0 + b _080582F8 + .align 2, 0 +_08058150: .4byte gUnknown_3005AD4 +_08058154: .4byte gUnknown_2024154 +_08058158: .4byte gUnknown_2023D08 +_0805815C: .4byte gUnknown_3005AC0 +_08058160: .4byte sub_0805780C +_08058164: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080581B4 + ldr r3, _08058194 + ldrb r2, [r3] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _0805817A + b _080582F8 +_0805817A: + ldr r0, _08058198 + ldr r1, _0805819C + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r5, [r1] + cmp r2, r5 + bne _080581A0 +_08058188: + ldrb r0, [r1] + movs r1, #0x1d + bl sub_0805983C + b _080581A6 + .align 2, 0 +_08058194: .4byte gUnknown_3005AD4 +_08058198: .4byte gUnknown_2024154 +_0805819C: .4byte gUnknown_2023D08 +_080581A0: + ldrb r0, [r3] + bl sub_08059884 +_080581A6: + ldr r4, _080581B0 + ldrb r0, [r4] + movs r1, #1 + b _0805823C + .align 2, 0 +_080581B0: .4byte gUnknown_3005AD4 +_080581B4: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080581F8 + ldr r3, _080581E8 + ldrb r2, [r3] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080581CA + b _080582F8 +_080581CA: + ldr r1, _080581EC + movs r0, #1 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + blo _080581D8 + b _080582F8 +_080581D8: + ldr r0, _080581F0 + ldr r1, _080581F4 + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + cmp r2, r0 + beq _08058188 + b _080581A0 + .align 2, 0 +_080581E8: .4byte gUnknown_3005AD4 +_080581EC: .4byte gUnknown_3005AD8 +_080581F0: .4byte gUnknown_2024154 +_080581F4: .4byte gUnknown_2023D08 +_080581F8: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0805826C + ldr r3, _08058224 + ldrb r2, [r3] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080582F8 + ldr r0, _08058228 + ldr r1, _0805822C + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r5, [r1] + cmp r2, r5 + bne _08058230 + ldrb r0, [r1] + movs r1, #0x1d + bl sub_0805983C + b _08058236 + .align 2, 0 +_08058224: .4byte gUnknown_3005AD4 +_08058228: .4byte gUnknown_2024154 +_0805822C: .4byte gUnknown_2023D08 +_08058230: + ldrb r0, [r3] + bl sub_08059884 +_08058236: + ldr r4, _08058260 + ldrb r0, [r4] + movs r1, #2 +_0805823C: + eors r0, r1 + strb r0, [r4] + movs r0, #5 + bl sub_080A306C + ldr r1, _08058264 + ldr r0, _08058268 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + beq _080582DA + ldrb r0, [r4] + movs r1, #0x1b + bl sub_0805983C + b _080582F8 + .align 2, 0 +_08058260: .4byte gUnknown_3005AD4 +_08058264: .4byte gUnknown_2024154 +_08058268: .4byte gUnknown_2023D08 +_0805826C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080582F8 + ldr r3, _080582A4 + ldrb r2, [r3] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _080582F8 + ldr r1, _080582A8 + movs r0, #2 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bhs _080582F8 + ldr r0, _080582AC + ldr r1, _080582B0 + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + cmp r2, r0 + bne _080582B4 + ldrb r0, [r1] + movs r1, #0x1d + bl sub_0805983C + b _080582BA + .align 2, 0 +_080582A4: .4byte gUnknown_3005AD4 +_080582A8: .4byte gUnknown_3005AD8 +_080582AC: .4byte gUnknown_2024154 +_080582B0: .4byte gUnknown_2023D08 +_080582B4: + ldrb r0, [r3] + bl sub_08059884 +_080582BA: + ldr r4, _080582E4 + ldrb r0, [r4] + movs r1, #2 + eors r0, r1 + strb r0, [r4] + movs r0, #5 + bl sub_080A306C + ldr r1, _080582E8 + ldr r0, _080582EC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + bne _080582F0 +_080582DA: + adds r0, r1, #0 + movs r1, #0 + bl sub_0805983C + b _080582F8 + .align 2, 0 +_080582E4: .4byte gUnknown_3005AD4 +_080582E8: .4byte gUnknown_2024154 +_080582EC: .4byte gUnknown_2023D08 +_080582F0: + ldrb r0, [r4] + movs r1, #0x1b + bl sub_0805983C +_080582F8: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08057D48 + + thumb_func_start sub_08058308 +sub_08058308: @ 0x08058308 + push {lr} + ldr r0, _08058350 + ldrb r0, [r0] + cmp r0, #0 + bne _0805836C + ldr r0, _08058354 + ldrb r0, [r0] + cmp r0, #0 + bne _080583A8 + movs r0, #0x5a + bl m4aSongNumStop + ldr r3, _08058358 + ldr r0, _0805835C + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _08058360 + ldr r0, [r0] + str r0, [r3] + ldr r0, _08058364 + bl sub_08000540 + ldr r0, _08058368 + ldrb r0, [r0] + cmp r0, #1 + bne _08058348 + bl sub_0817E2A0 +_08058348: + bl sub_080034D4 + b _080583A8 + .align 2, 0 +_08058350: .4byte gUnknown_300319C +_08058354: .4byte gUnknown_30031C4 +_08058358: .4byte gUnknown_3002360 +_0805835C: .4byte 0x00000439 +_08058360: .4byte gUnknown_3005A60 +_08058364: .4byte sub_08038A18 +_08058368: .4byte gUnknown_2023FDE +_0805836C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080583A8 + movs r0, #0x5a + bl m4aSongNumStop + ldr r3, _080583AC + ldr r0, _080583B0 + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080583B4 + ldr r0, [r0] + str r0, [r3] + ldr r0, _080583B8 + bl sub_08000540 + ldr r0, _080583BC + ldrb r0, [r0] + cmp r0, #1 + bne _080583A4 + bl sub_0817E2A0 +_080583A4: + bl sub_080034D4 +_080583A8: + pop {r0} + bx r0 + .align 2, 0 +_080583AC: .4byte gUnknown_3002360 +_080583B0: .4byte 0x00000439 +_080583B4: .4byte gUnknown_3005A60 +_080583B8: .4byte sub_08038A18 +_080583BC: .4byte gUnknown_2023FDE + thumb_func_end sub_08058308 + + thumb_func_start sub_080583C0 +sub_080583C0: @ 0x080583C0 + push {lr} + ldr r0, _080583F4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08058442 + ldr r0, _080583F8 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08058420 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08058442 + ldr r0, _080583FC + ldrb r0, [r0] + cmp r0, #0 + bne _08058400 + bl sub_0800A7F8 + b _08058404 + .align 2, 0 +_080583F4: .4byte gUnknown_2037C74 +_080583F8: .4byte gUnknown_2022C90 +_080583FC: .4byte gUnknown_300319C +_08058400: + bl sub_0800A8D4 +_08058404: + ldr r1, _08058414 + ldr r0, _08058418 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805841C + str r1, [r0] + b _08058442 + .align 2, 0 +_08058414: .4byte gUnknown_3005AC0 +_08058418: .4byte gUnknown_2023D08 +_0805841C: .4byte sub_08058308 +_08058420: + movs r0, #0x5a + bl m4aSongNumStop + ldr r2, _08058448 + ldr r0, _0805844C + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldr r0, _08058450 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, #8] + bl sub_08000540 +_08058442: + pop {r0} + bx r0 + .align 2, 0 +_08058448: .4byte gUnknown_3002360 +_0805844C: .4byte 0x00000439 +_08058450: .4byte gUnknown_3005A60 + thumb_func_end sub_080583C0 + + thumb_func_start sub_08058454 +sub_08058454: @ 0x08058454 + push {lr} + ldr r2, _0805847C + ldr r1, _08058480 + ldr r0, _08058484 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08058488 + cmp r1, r0 + bne _08058478 + bl sub_0805709C +_08058478: + pop {r0} + bx r0 + .align 2, 0 +_0805847C: .4byte gUnknown_20205AC +_08058480: .4byte gUnknown_2023E88 +_08058484: .4byte gUnknown_2023D08 +_08058488: .4byte sub_08007140 + thumb_func_end sub_08058454 + + thumb_func_start sub_0805848C +sub_0805848C: @ 0x0805848C + push {lr} + ldr r2, _080584B4 + ldr r1, _080584B8 + ldr r0, _080584BC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _080584C0 + cmp r1, r0 + bne _080584B0 + bl sub_0805709C +_080584B0: + pop {r0} + bx r0 + .align 2, 0 +_080584B4: .4byte gUnknown_20205AC +_080584B8: .4byte gUnknown_2023E88 +_080584BC: .4byte gUnknown_2023D08 +_080584C0: .4byte sub_08007140 + thumb_func_end sub_0805848C + + thumb_func_start sub_080584C4 +sub_080584C4: @ 0x080584C4 + push {r4, r5, r6, lr} + ldr r6, _08058520 + ldr r5, _08058524 + ldr r4, _08058528 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0805852C + cmp r1, r0 + bne _08058518 + ldr r0, _08058530 + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0805DBFC + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + bl sub_0805709C +_08058518: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08058520: .4byte gUnknown_20205AC +_08058524: .4byte gUnknown_2023E88 +_08058528: .4byte gUnknown_2023D08 +_0805852C: .4byte sub_08007140 +_08058530: .4byte gUnknown_3005AF0 + thumb_func_end sub_080584C4 + + thumb_func_start sub_08058534 +sub_08058534: @ 0x08058534 + push {r4, lr} + ldr r4, _08058574 + ldr r1, [r4] + ldr r3, _08058578 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0805856C + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_0805709C +_0805856C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08058574: .4byte gUnknown_2024174 +_08058578: .4byte gUnknown_2023D08 + thumb_func_end sub_08058534 + + thumb_func_start sub_0805857C +sub_0805857C: @ 0x0805857C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r7, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080585A8 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080585E0 + ldr r0, _080585CC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080585E0 +_080585A8: + ldr r2, _080585D0 + ldr r1, _080585D4 + ldr r3, _080585D8 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _080585DC + mov sl, r3 + cmp r1, r0 + bne _0805861A + b _0805861E + .align 2, 0 +_080585CC: .4byte gUnknown_2022C90 +_080585D0: .4byte gUnknown_20205AC +_080585D4: .4byte gUnknown_3005AD0 +_080585D8: .4byte gUnknown_2023D08 +_080585DC: .4byte sub_08007140 +_080585E0: + ldr r3, _08058728 + ldr r6, _0805872C + ldr r2, _08058730 + ldrb r4, [r2] + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r3, #0 + adds r5, #0x1c + adds r0, r0, r5 + ldr r3, [r0] + ldr r0, _08058734 + mov sl, r2 + cmp r3, r0 + bne _0805861A + movs r0, #2 + eors r4, r0 + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r3 + bne _0805861A + movs r7, #1 +_0805861A: + cmp r7, #0 + beq _08058718 +_0805861E: + ldr r0, _08058738 + mov sb, r0 + ldr r0, [r0] + mov r6, sl + ldrb r2, [r6] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4, #1] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08058718 + movs r1, #2 + mov r8, r1 + mov r1, r8 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08058718 + ldrb r1, [r4] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + mov r2, sb + ldr r0, [r2] + ldrb r2, [r6] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r0, sb + ldr r2, [r0] + ldrb r0, [r6] + mov r1, r8 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, sb + ldr r2, [r1] + ldrb r0, [r6] + mov r1, r8 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0805873C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r7, _08058740 + ldrb r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _08058744 + adds r0, r0, r4 + bl sub_0805E5AC + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080586F4 + ldrb r0, [r6] + mov r1, r8 + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + bl sub_0805E5AC +_080586F4: + mov r2, sb + ldr r0, [r2] + mov r2, sl + ldrb r1, [r2] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _08058748 + mov r2, sl + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805874C + str r1, [r0] +_08058718: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08058728: .4byte gUnknown_20205AC +_0805872C: .4byte gUnknown_3005AD0 +_08058730: .4byte gUnknown_2023D08 +_08058734: .4byte sub_08007140 +_08058738: .4byte gUnknown_2024174 +_0805873C: .4byte 0x000027F9 +_08058740: .4byte gUnknown_2023D12 +_08058744: .4byte gUnknown_2024190 +_08058748: .4byte gUnknown_3005AC0 +_0805874C: .4byte sub_08058534 + thumb_func_end sub_0805857C + + thumb_func_start sub_08058750 +sub_08058750: @ 0x08058750 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + mov sb, r0 + mov r8, r0 + ldr r4, _080588FC + ldr r0, [r4] + ldr r7, _08058900 + ldrb r2, [r7] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r5, #0x88 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08058790 + ldr r0, _08058904 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08058908 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_08058790: + ldr r1, [r4] + ldrb r0, [r7] + movs r6, #2 + adds r2, r6, #0 + eors r2, r0 + ldr r1, [r1, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080587C2 + ldr r0, _08058904 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08058908 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_080587C2: + ldr r0, [r4] + ldrb r2, [r7] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4] + movs r5, #8 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08058892 + adds r1, r6, #0 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08058892 + ldrb r1, [r4, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08058878 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08058848 + ldr r0, _0805890C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08058848 + ldr r4, _08058910 + ldrb r0, [r7] + adds r1, r6, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08058904 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08058908 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + eors r0, r6 + bl sub_08076320 + ldrb r0, [r7] + eors r0, r6 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_08058848: + ldr r5, _08058910 + ldr r4, _08058900 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08058904 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08058908 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 +_08058878: + ldr r0, _080588FC + ldr r2, [r0] + ldr r0, _08058900 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] +_08058892: + ldr r5, _080588FC + ldr r0, [r5] + ldr r4, _08058900 + ldrb r2, [r4] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _08058942 + movs r1, #2 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08058942 + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08058942 + ldr r0, [r5] + ldrb r1, [r4] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08058924 + ldr r0, _0805890C + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _08058918 + ldr r0, _08058914 + bl m4aMPlayContinue + b _08058924 + .align 2, 0 +_080588FC: .4byte gUnknown_2024174 +_08058900: .4byte gUnknown_2023D08 +_08058904: .4byte gUnknown_2023D12 +_08058908: .4byte gUnknown_2024190 +_0805890C: .4byte gUnknown_2022C90 +_08058910: .4byte gUnknown_3005AD0 +_08058914: .4byte gUnknown_30074D0 +_08058918: + ldr r0, _08058998 + ldr r1, _0805899C + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_08058924: + ldr r0, _080589A0 + ldr r2, [r0] + ldr r0, _080589A4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + mov sb, r0 +_08058942: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08058962 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080589BC + ldr r0, _080589A8 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080589BC +_08058962: + ldr r2, _080589AC + ldr r0, _080589B0 + ldr r1, _080589A4 + ldrb r4, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r3, [r0] + ldr r0, _080589B4 + cmp r3, r0 + bne _08058A1A + ldr r0, _080589B8 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r3 + bne _08058A1A + b _08058A16 + .align 2, 0 +_08058998: .4byte gUnknown_30074D0 +_0805899C: .4byte 0x0000FFFF +_080589A0: .4byte gUnknown_2024174 +_080589A4: .4byte gUnknown_2023D08 +_080589A8: .4byte gUnknown_2022C90 +_080589AC: .4byte gUnknown_20205AC +_080589B0: .4byte gUnknown_3005ADC +_080589B4: .4byte sub_08007140 +_080589B8: .4byte gUnknown_2023E88 +_080589BC: + ldr r2, _08058AC8 + ldr r7, _08058ACC + ldr r0, _08058AD0 + ldrb r3, [r0] + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _08058AD4 + cmp r4, r0 + bne _08058A1A + ldr r6, _08058AD8 + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r5, [r0] + cmp r5, r4 + bne _08058A1A + movs r0, #2 + eors r3, r0 + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r4, [r0] + cmp r4, r5 + bne _08058A1A + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _08058A1A +_08058A16: + movs r0, #1 + mov r8, r0 +_08058A1A: + mov r0, sb + cmp r0, #0 + beq _08058ABA + mov r0, r8 + cmp r0, #0 + beq _08058ABA + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08058A58 + ldr r0, _08058ADC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08058A58 + ldr r2, _08058ACC + ldr r0, _08058AD0 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08058AC8 + adds r0, r0, r1 + bl sub_08006E00 +_08058A58: + ldr r1, _08058ACC + ldr r4, _08058AD0 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08058AC8 + adds r0, r0, r1 + bl sub_08006E00 + ldr r3, _08058AE0 + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _08058AE4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08058AE8 + str r1, [r0] +_08058ABA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08058AC8: .4byte gUnknown_20205AC +_08058ACC: .4byte gUnknown_3005ADC +_08058AD0: .4byte gUnknown_2023D08 +_08058AD4: .4byte sub_08007140 +_08058AD8: .4byte gUnknown_2023E88 +_08058ADC: .4byte gUnknown_2022C90 +_08058AE0: .4byte gUnknown_2024174 +_08058AE4: .4byte gUnknown_3005AC0 +_08058AE8: .4byte sub_0805857C + thumb_func_end sub_08058750 + + thumb_func_start sub_08058AEC +sub_08058AEC: @ 0x08058AEC + push {r4, r5, r6, lr} + ldr r2, _08058BAC + ldr r0, _08058BB0 + ldr r6, _08058BB4 + ldrb r3, [r6] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _08058BB8 + cmp r4, r0 + bne _08058BA4 + ldr r5, _08058BBC + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08058BA4 + ldr r0, _08058BC0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _08058BA4 + adds r0, r3, #0 + bl sub_0805E024 + ldr r0, [r5] + ldrb r2, [r6] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + ldrb r2, [r6] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _08058BC4 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r0, [r5] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08058B98 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 +_08058B98: + ldr r0, _08058BC8 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08058BCC + str r0, [r1] +_08058BA4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08058BAC: .4byte gUnknown_20205AC +_08058BB0: .4byte gUnknown_3005AD0 +_08058BB4: .4byte gUnknown_2023D08 +_08058BB8: .4byte sub_08007140 +_08058BBC: .4byte gUnknown_2024174 +_08058BC0: .4byte gUnknown_2023E88 +_08058BC4: .4byte 0x000027F9 +_08058BC8: .4byte gUnknown_3005AC0 +_08058BCC: .4byte sub_08058BD0 + thumb_func_end sub_08058AEC + + thumb_func_start sub_08058BD0 +sub_08058BD0: @ 0x08058BD0 + push {r4, lr} + ldr r0, _08058C24 + ldr r0, [r0] + ldr r4, _08058C28 + ldrb r1, [r4] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08058C1E + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08058C1E + ldr r0, _08058C2C + ldr r1, _08058C30 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + ldr r2, _08058C34 + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _08058C38 + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_0805709C +_08058C1E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08058C24: .4byte gUnknown_2024174 +_08058C28: .4byte gUnknown_2023D08 +_08058C2C: .4byte gUnknown_30074D0 +_08058C30: .4byte 0x0000FFFF +_08058C34: .4byte gUnknown_2023D12 +_08058C38: .4byte gUnknown_2024190 + thumb_func_end sub_08058BD0 + + thumb_func_start sub_08058C3C +sub_08058C3C: @ 0x08058C3C + push {r4, r5, r6, lr} + ldr r6, _08058CE8 + ldr r0, [r6] + ldr r5, _08058CEC + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _08058C6E + ldr r0, _08058CF0 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08058CF4 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_08058C6E: + ldr r4, _08058CF8 + ldr r0, _08058CFC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _08058D00 + cmp r1, r0 + bne _08058CE2 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08058CE2 + adds r0, r3, r4 + bl sub_08006E00 + ldr r4, _08058D04 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08058CF0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08058CF4 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r5] + bl sub_08076320 + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldr r1, _08058D08 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08058D0C + str r1, [r0] +_08058CE2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08058CE8: .4byte gUnknown_2024174 +_08058CEC: .4byte gUnknown_2023D08 +_08058CF0: .4byte gUnknown_2023D12 +_08058CF4: .4byte gUnknown_2024190 +_08058CF8: .4byte gUnknown_20205AC +_08058CFC: .4byte gUnknown_3005ADC +_08058D00: .4byte sub_08007140 +_08058D04: .4byte gUnknown_3005AD0 +_08058D08: .4byte gUnknown_3005AC0 +_08058D0C: .4byte sub_08058AEC + thumb_func_end sub_08058C3C + + thumb_func_start sub_08058D10 +sub_08058D10: @ 0x08058D10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08058D32 + ldr r0, _08058D38 + ldr r1, _08058D3C + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + adds r0, r4, #0 + bl sub_080A8964 +_08058D32: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08058D38: .4byte gUnknown_30074D0 +_08058D3C: .4byte 0x0000FFFF + thumb_func_end sub_08058D10 + + thumb_func_start sub_08058D40 +sub_08058D40: @ 0x08058D40 + push {r4, r5, r6, lr} + ldr r5, _08058D80 + ldrb r0, [r5] + ldr r6, _08058D84 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08058D88 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _08058DA2 + .align 2, 0 +_08058D80: .4byte gUnknown_2023D08 +_08058D84: .4byte gUnknown_3005AD0 +_08058D88: + ldr r2, _08058DA8 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _08058DAC + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_0805709C +_08058DA2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08058DA8: .4byte gUnknown_2023D12 +_08058DAC: .4byte gUnknown_2024190 + thumb_func_end sub_08058D40 + + thumb_func_start sub_08058DB0 +sub_08058DB0: @ 0x08058DB0 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08058DC2 + bl sub_0805709C +_08058DC2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08058DB0 + + thumb_func_start sub_08058DC8 +sub_08058DC8: @ 0x08058DC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _08058EC8 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + mov r8, r0 + ldrb r0, [r0, #8] + mov sl, r0 + mov r1, r8 + ldrb r7, [r1, #0xc] + str r7, [sp, #8] + ldrh r2, [r1, #0xa] + str r2, [sp, #0xc] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08058E0E + ldr r1, _08058ECC + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp sl, r0 + bne _08058E0E + b _08058F24 +_08058E0E: + movs r0, #0x64 + mov r1, sl + muls r1, r0, r1 + ldr r0, _08058ED0 + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #4] + ldr r3, _08058ED4 + adds r4, #1 + lsls r4, r4, #2 + ldr r2, _08058ED8 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0x13] + movs r1, #0xca + lsls r1, r1, #1 + muls r1, r2, r1 + adds r4, r4, r1 + adds r4, r4, r3 + ldr r2, [r4] + str r2, [sp] + ldr r3, [sp, #0xc] + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r1 + cmp r0, r2 + blo _08058EFC + adds r0, r6, #0 + movs r1, #0x19 + mov r2, sp + bl sub_0806A774 + adds r0, r6, #0 + bl sub_0806884C + ldr r2, [sp] + add r0, sp, #4 + ldrh r0, [r0] + subs r2, r2, r0 + ldr r0, [sp, #0xc] + subs r2, r0, r2 + ldr r4, _08058EDC + ldrb r5, [r4] + strb r7, [r4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xb + bl sub_08033FB0 + strb r5, [r4] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08058EE4 + ldr r2, _08058ECC + lsls r0, r7, #1 + adds r0, r0, r2 + mov r1, sl + ldrh r0, [r0] + cmp r1, r0 + beq _08058EC2 + movs r0, #2 + eors r7, r0 + lsls r0, r7, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _08058EE4 +_08058EC2: + ldr r0, _08058EE0 + b _08058F26 + .align 2, 0 +_08058EC8: .4byte gUnknown_3005B60 +_08058ECC: .4byte gUnknown_2023D12 +_08058ED0: .4byte gUnknown_2024190 +_08058ED4: .4byte gUnknown_82F00B4 +_08058ED8: .4byte gUnknown_82F0D54 +_08058EDC: .4byte gUnknown_2023D08 +_08058EE0: .4byte sub_08059154 +_08058EE4: + ldr r0, _08058EF4 + mov r2, sb + lsls r1, r2, #2 + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08058EF8 + b _08058F28 + .align 2, 0 +_08058EF4: .4byte gUnknown_3005B60 +_08058EF8: .4byte sub_0805926C +_08058EFC: + str r0, [sp, #4] + add r2, sp, #4 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A774 + ldr r1, _08058F1C + ldr r3, [sp, #8] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, _08058F20 + str r1, [r0] + mov r0, sb + bl sub_080A8964 + b _08058F2A + .align 2, 0 +_08058F1C: .4byte gUnknown_3005AC0 +_08058F20: .4byte sub_08058DB0 +_08058F24: + ldr r0, _08058F3C +_08058F26: + mov r1, r8 +_08058F28: + str r0, [r1] +_08058F2A: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08058F3C: .4byte sub_08058F40 + thumb_func_end sub_08058DC8 + + thumb_func_start sub_08058F40 +sub_08058F40: @ 0x08058F40 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08058FF8 + lsls r2, r0, #2 + mov r8, r2 + add r8, r0 + mov r0, r8 + lsls r0, r0, #3 + mov r8, r0 + add r8, r1 + mov r2, r8 + ldrb r1, [r2, #8] + movs r0, #0xa + ldrsh r2, [r2, r0] + mov sb, r2 + mov r2, r8 + ldrb r2, [r2, #0xc] + mov sl, r2 + movs r0, #0x64 + adds r6, r1, #0 + muls r6, r0, r6 + ldr r0, _08058FFC + adds r6, r6, r0 + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A058 + adds r3, r0, #0 + ldr r6, _08059000 + lsls r1, r4, #2 + ldr r2, _08059004 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r2, r0 + adds r1, r1, r0 + adds r1, r1, r6 + ldr r1, [r1] + subs r3, r3, r1 + adds r4, #1 + lsls r4, r4, #2 + adds r4, r4, r0 + adds r4, r4, r6 + ldr r2, [r4] + subs r2, r2, r1 + ldr r0, _08059008 + add r0, sl + ldrb r1, [r0] + mov r0, sb + rsbs r0, r0, #0 + str r0, [sp] + mov r0, sl + bl sub_0807235C + movs r0, #0x21 + bl sub_080A306C + ldr r0, _0805900C + mov r1, r8 + str r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08058FF8: .4byte gUnknown_3005B60 +_08058FFC: .4byte gUnknown_2024190 +_08059000: .4byte gUnknown_82F00B4 +_08059004: .4byte gUnknown_82F0D54 +_08059008: .4byte gUnknown_3005AD0 +_0805900C: .4byte sub_08059010 + thumb_func_end sub_08058F40 + + thumb_func_start sub_08059010 +sub_08059010: @ 0x08059010 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0805903C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r1, [r6, #0x1c] + movs r2, #0x1c + ldrsh r0, [r6, r2] + cmp r0, #0xc + bgt _08059040 + adds r0, r1, #1 + strh r0, [r6, #0x1c] + b _0805913C + .align 2, 0 +_0805903C: .4byte gUnknown_3005B60 +_08059040: + ldrb r0, [r6, #8] + mov sb, r0 + ldrh r2, [r6, #0xa] + mov sl, r2 + ldrb r7, [r6, #0xc] + ldr r5, _08059108 + adds r5, r7, r5 + ldrb r1, [r5] + adds r0, r7, #0 + movs r2, #1 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + bne _0805913C + movs r0, #0x21 + bl m4aSongNumStop + movs r0, #0x64 + mov r1, sb + muls r1, r0, r1 + ldr r0, _0805910C + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r3, _08059110 + adds r4, #1 + lsls r4, r4, #2 + ldr r2, _08059114 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r1, r0 + adds r4, r4, r0 + adds r4, r4, r3 + ldr r1, [r4] + str r1, [sp] + mov r2, sl + lsls r0, r2, #0x10 + asrs r4, r0, #0x10 + ldr r0, [sp, #4] + adds r0, r0, r4 + cmp r0, r1 + blt _08059120 + adds r0, r5, #0 + movs r1, #0x19 + mov r2, sp + bl sub_0806A774 + adds r0, r5, #0 + bl sub_0806884C + ldr r2, [sp] + add r0, sp, #4 + ldrh r0, [r0] + subs r2, r2, r0 + subs r2, r4, r2 + ldr r4, _08059118 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xb + bl sub_08033FB0 + strb r5, [r4] + ldr r0, _0805911C + str r0, [r6] + b _0805913C + .align 2, 0 +_08059108: .4byte gUnknown_3005AD0 +_0805910C: .4byte gUnknown_2024190 +_08059110: .4byte gUnknown_82F00B4 +_08059114: .4byte gUnknown_82F0D54 +_08059118: .4byte gUnknown_2023D08 +_0805911C: .4byte sub_08059154 +_08059120: + str r0, [sp, #4] + add r2, sp, #4 + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0806A774 + ldr r1, _0805914C + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r1, _08059150 + str r1, [r0] + mov r0, r8 + bl sub_080A8964 +_0805913C: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805914C: .4byte gUnknown_3005AC0 +_08059150: .4byte sub_08058DB0 + thumb_func_end sub_08059010 + + thumb_func_start sub_08059154 +sub_08059154: @ 0x08059154 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080591A8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r4, [r0, #0xc] + ldrb r6, [r0, #8] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08059188 + ldr r1, _080591AC + movs r0, #2 + adds r2, r4, #0 + eors r2, r0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bne _08059188 + adds r4, r2, #0 +_08059188: + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805D6E0 + ldr r0, _080591A8 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080591B0 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080591A8: .4byte gUnknown_3005B60 +_080591AC: .4byte gUnknown_2023D12 +_080591B0: .4byte sub_080591B4 + thumb_func_end sub_08059154 + + thumb_func_start sub_080591B4 +sub_080591B4: @ 0x080591B4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08059220 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrb r5, [r2, #0xc] + ldr r0, _08059224 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08059256 + ldrb r4, [r2, #8] + movs r0, #0x64 + adds r1, r4, #0 + muls r1, r0, r1 + ldr r0, _08059228 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x38 + bl sub_0806A058 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08059234 + ldr r1, _0805922C + movs r0, #2 + adds r2, r5, #0 + eors r2, r0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _08059234 + ldr r0, _08059230 + adds r0, r2, r0 + ldrb r0, [r0] + adds r1, r7, #0 + movs r2, #0 + bl sub_080743F0 + b _08059248 + .align 2, 0 +_08059220: .4byte gUnknown_3005B60 +_08059224: .4byte gUnknown_2024174 +_08059228: .4byte gUnknown_2024190 +_0805922C: .4byte gUnknown_2023D12 +_08059230: .4byte gUnknown_3005AD0 +_08059234: + ldr r0, _0805925C + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, #0x64 + muls r1, r4, r1 + ldr r2, _08059260 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 +_08059248: + ldr r0, _08059264 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08059268 + str r0, [r1] +_08059256: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805925C: .4byte gUnknown_3005AD0 +_08059260: .4byte gUnknown_2024190 +_08059264: .4byte gUnknown_3005B60 +_08059268: .4byte sub_0805926C + thumb_func_end sub_080591B4 + + thumb_func_start sub_0805926C +sub_0805926C: @ 0x0805926C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080592A8 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r1, [r4, #8] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080592AC + adds r0, r0, r1 + movs r1, #0x38 + bl sub_0806A058 + ldrb r0, [r4, #0xc] + ldr r1, _080592B0 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080592B4 + str r1, [r0] + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080592A8: .4byte gUnknown_3005B60 +_080592AC: .4byte gUnknown_2024190 +_080592B0: .4byte gUnknown_3005AC0 +_080592B4: .4byte sub_08058DB0 + thumb_func_end sub_0805926C + + thumb_func_start sub_080592B8 +sub_080592B8: @ 0x080592B8 + push {r4, r5, r6, lr} + ldr r6, _0805933C + ldr r5, _08059340 + ldr r4, _08059344 + ldrb r2, [r4] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r3, #0x26 + ldrsh r0, [r0, r3] + adds r1, r1, r0 + cmp r1, #0xa0 + ble _08059334 + ldr r1, _08059348 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805934C + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0805DB50 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r1, _08059350 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805709C +_08059334: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805933C: .4byte gUnknown_20205AC +_08059340: .4byte gUnknown_2023E88 +_08059344: .4byte gUnknown_2023D08 +_08059348: .4byte gUnknown_2023D12 +_0805934C: .4byte gUnknown_2024190 +_08059350: .4byte gUnknown_3005AD0 + thumb_func_end sub_080592B8 + + thumb_func_start sub_08059354 +sub_08059354: @ 0x08059354 + push {r4, r5, r6, lr} + ldr r0, _080593B0 + ldr r0, [r0] + ldr r6, _080593B4 + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080593A8 + ldr r5, _080593B8 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080593BC + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _080593C0 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805709C +_080593A8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080593B0: .4byte gUnknown_2024174 +_080593B4: .4byte gUnknown_2023D08 +_080593B8: .4byte gUnknown_2023E88 +_080593BC: .4byte gUnknown_20205AC +_080593C0: .4byte gUnknown_3005AD0 + thumb_func_end sub_08059354 + + thumb_func_start sub_080593C4 +sub_080593C4: @ 0x080593C4 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080593D6 + bl sub_0805709C +_080593D6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080593C4 + + thumb_func_start sub_080593DC +sub_080593DC: @ 0x080593DC + push {r4, lr} + ldr r0, _08059420 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0805941A + ldr r1, _08059424 + ldr r2, _08059428 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805942C + str r1, [r0] + ldr r3, _08059430 + ldr r1, _08059434 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrb r4, [r1, #8] + bl sub_080A8964 + bl sub_080034D4 + adds r0, r4, #0 + bl sub_081B864C +_0805941A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08059420: .4byte gUnknown_2037C74 +_08059424: .4byte gUnknown_3005AC0 +_08059428: .4byte gUnknown_2023D08 +_0805942C: .4byte sub_08059438 +_08059430: .4byte gUnknown_3005B60 +_08059434: .4byte gUnknown_3005ADC + thumb_func_end sub_080593DC + + thumb_func_start sub_08059438 +sub_08059438: @ 0x08059438 + push {lr} + ldr r0, _08059468 + ldr r1, [r0, #4] + ldr r0, _0805946C + cmp r1, r0 + bne _080594A8 + ldr r0, _08059470 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080594A8 + ldr r0, _08059474 + ldrb r0, [r0] + cmp r0, #1 + bne _08059480 + ldr r0, _08059478 + ldrb r1, [r0] + ldr r2, _0805947C + movs r0, #1 + bl sub_08033FDC + b _0805948A + .align 2, 0 +_08059468: .4byte gUnknown_3002360 +_0805946C: .4byte sub_080380FC +_08059470: .4byte gUnknown_2037C74 +_08059474: .4byte gUnknown_203CBB4 +_08059478: .4byte gUnknown_203CBB5 +_0805947C: .4byte gUnknown_203CBCC +_08059480: + movs r0, #1 + movs r1, #6 + movs r2, #0 + bl sub_08033FDC +_0805948A: + ldr r1, _080594AC + ldr r0, _080594B0 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _080594A4 + bl sub_080599DC +_080594A4: + bl sub_0805709C +_080594A8: + pop {r0} + bx r0 + .align 2, 0 +_080594AC: .4byte gUnknown_2022D08 +_080594B0: .4byte gUnknown_2023D08 + thumb_func_end sub_08059438 + + thumb_func_start sub_080594B4 +sub_080594B4: @ 0x080594B4 + push {lr} + ldr r0, _080594E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080594DC + ldr r1, _080594E4 + ldr r0, _080594E8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080594EC + str r1, [r0] + bl sub_080A8BBC + bl sub_080034D4 + bl sub_081AA928 +_080594DC: + pop {r0} + bx r0 + .align 2, 0 +_080594E0: .4byte gUnknown_2037C74 +_080594E4: .4byte gUnknown_3005AC0 +_080594E8: .4byte gUnknown_2023D08 +_080594EC: .4byte sub_080594F0 + thumb_func_end sub_080594B4 + + thumb_func_start sub_080594F0 +sub_080594F0: @ 0x080594F0 + push {lr} + ldr r0, _0805951C + ldr r1, [r0, #4] + ldr r0, _08059520 + cmp r1, r0 + bne _08059516 + ldr r0, _08059524 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08059516 + ldr r0, _08059528 + ldrh r1, [r0] + movs r0, #1 + bl sub_08034014 + bl sub_0805709C +_08059516: + pop {r0} + bx r0 + .align 2, 0 +_0805951C: .4byte gUnknown_3002360 +_08059520: .4byte sub_080380FC +_08059524: .4byte gUnknown_2037C74 +_08059528: .4byte gUnknown_203CB48 + thumb_func_end sub_080594F0 + + thumb_func_start sub_0805952C +sub_0805952C: @ 0x0805952C + push {lr} + ldr r0, _0805955C + ldrb r0, [r0] + cmp r0, #0 + beq _08059552 + ldr r0, _08059560 + ldr r2, [r0] + ldr r0, _08059564 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08059556 +_08059552: + bl sub_0805709C +_08059556: + pop {r0} + bx r0 + .align 2, 0 +_0805955C: .4byte gUnknown_202415D +_08059560: .4byte gUnknown_2024174 +_08059564: .4byte gUnknown_2023D08 + thumb_func_end sub_0805952C + + thumb_func_start sub_08059568 +sub_08059568: @ 0x08059568 + push {r4, lr} + ldr r1, _080595A4 + ldr r0, _080595A8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _080595AC + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _080595B4 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _080595B0 + strb r3, [r0] + bl sub_0805709C + b _080595DE + .align 2, 0 +_080595A4: .4byte gUnknown_2023E88 +_080595A8: .4byte gUnknown_2023D08 +_080595AC: .4byte gUnknown_20205AC +_080595B0: .4byte gUnknown_202415D +_080595B4: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _080595D8 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080595D8: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_080595DE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08059568 + + thumb_func_start sub_080595E4 +sub_080595E4: @ 0x080595E4 + push {r4, lr} + sub sp, #4 + ldr r0, _08059674 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08059612 + ldr r4, _08059678 + ldrb r0, [r4] + cmp r0, #0 + beq _08059612 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + bl sub_080567BC + movs r0, #0 + strb r0, [r4] + movs r0, #0 + bl sub_08056784 +_08059612: + ldr r0, _08059674 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805963C + ldr r4, _08059678 + ldrb r0, [r4] + cmp r0, #0 + bne _0805963C + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + bl sub_080567BC + movs r0, #1 + strb r0, [r4] + movs r0, #1 + bl sub_08056784 +_0805963C: + ldr r0, _08059674 + ldrh r1, [r0, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0805968A + str r2, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + movs r0, #5 + bl sub_080A306C + ldr r0, _08059678 + ldrb r0, [r0] + cmp r0, #0 + beq _0805967C + movs r0, #1 + movs r1, #0xe + movs r2, #0 + bl sub_08033FB0 + b _08059686 + .align 2, 0 +_08059674: .4byte gUnknown_3002360 +_08059678: .4byte gUnknown_3005AD4 +_0805967C: + movs r0, #1 + movs r1, #0xd + movs r2, #0 + bl sub_08033FB0 +_08059686: + bl sub_0805709C +_0805968A: + ldr r0, _080596B8 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080596B0 + movs r0, #1 + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + movs r0, #5 + bl sub_080A306C + bl sub_0805709C +_080596B0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080596B8: .4byte gUnknown_3002360 + thumb_func_end sub_080595E4 + + thumb_func_start sub_080596BC +sub_080596BC: @ 0x080596BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08059720 + ldrb r1, [r0] + lsls r1, r1, #9 + ldr r3, _08059724 + ldr r2, _08059728 + movs r0, #0 + strb r0, [r2] + movs r5, #0 + ldr r0, _0805972C + mov r8, r0 + adds r4, r1, r3 + adds r7, r2, #0 + movs r6, #0xc0 + lsls r6, r6, #0x12 +_080596DE: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_08059884 + ldrh r1, [r4] + lsls r1, r1, #3 + ldr r0, _08059730 + adds r1, r1, r0 + mov r0, r8 + bl sub_080088B8 + lsrs r1, r6, #0x18 + mov r0, r8 + bl sub_0814FA04 + ldrh r0, [r4] + cmp r0, #0 + beq _08059708 + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] +_08059708: + adds r4, #2 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r6, r6, r0 + adds r5, #1 + cmp r5, #3 + ble _080596DE + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08059720: .4byte gUnknown_2023D08 +_08059724: .4byte gUnknown_2022D0C +_08059728: .4byte gUnknown_3005AD8 +_0805972C: .4byte gUnknown_2022AE0 +_08059730: .4byte gUnknown_82EACC4 + thumb_func_end sub_080596BC + + thumb_func_start sub_08059734 +sub_08059734: @ 0x08059734 + push {r4, lr} + ldr r4, _08059760 + ldr r1, _08059764 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #7 + bl sub_0814FA04 + ldr r1, _08059768 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #8 + bl sub_0814FA04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08059760: .4byte gUnknown_2022AE0 +_08059764: .4byte gUnknown_85ABB9B +_08059768: .4byte gUnknown_85ABBA1 + thumb_func_end sub_08059734 + + thumb_func_start sub_0805976C +sub_0805976C: @ 0x0805976C + push {r4, r5, r6, r7, lr} + ldr r5, _080597D0 + ldr r7, _080597D4 + ldrb r0, [r7] + lsls r0, r0, #9 + adds r1, r5, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080597C8 + bl sub_0814FB80 + ldrb r1, [r7] + lsls r4, r1, #9 + adds r0, r5, #4 + adds r4, r4, r0 + ldr r6, _080597D8 + ldr r5, _080597DC + adds r1, r1, r5 + adds r0, r4, #0 + adds r0, #8 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + movs r1, #0xba + strb r1, [r0] + adds r0, #1 + ldrb r1, [r7] + adds r1, r1, r5 + adds r4, #0xc + ldrb r1, [r1] + adds r4, r4, r1 + ldrb r1, [r4] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + adds r0, r6, #0 + movs r1, #9 + bl sub_0814FA04 +_080597C8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080597D0: .4byte gUnknown_2022D08 +_080597D4: .4byte gUnknown_2023D08 +_080597D8: .4byte gUnknown_2022AE0 +_080597DC: .4byte gUnknown_2024154 + thumb_func_end sub_0805976C + + thumb_func_start sub_080597E0 +sub_080597E0: @ 0x080597E0 + push {r4, lr} + ldr r0, _08059824 + ldrb r1, [r0] + lsls r2, r1, #9 + ldr r0, _08059828 + adds r2, r2, r0 + ldr r4, _0805982C + ldr r3, _08059830 + ldr r0, _08059834 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r2, r2, r0 + ldrh r1, [r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + ldr r0, _08059838 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #0xa + bl sub_0814FA04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08059824: .4byte gUnknown_2023D08 +_08059828: .4byte gUnknown_2022D0C +_0805982C: .4byte gUnknown_2022AE0 +_08059830: .4byte gUnknown_82ED220 +_08059834: .4byte gUnknown_2024154 +_08059838: .4byte gUnknown_82EBC88 + thumb_func_end sub_080597E0 + + thumb_func_start sub_0805983C +sub_0805983C: @ 0x0805983C + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + add r2, sp, #0xc + adds r0, r1, #1 + strh r0, [r2] + adds r0, r2, #0 + adds r1, #2 + strh r1, [r0, #2] + movs r1, #1 + adds r2, r3, #0 + ands r2, r1 + lsls r2, r2, #3 + adds r2, #1 + movs r0, #2 + ands r3, r0 + adds r3, #0x37 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805983C + + thumb_func_start sub_08059884 +sub_08059884: @ 0x08059884 + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + ldr r1, _080598C4 + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #1 + adds r2, r3, #0 + ands r2, r1 + lsls r2, r2, #3 + adds r2, #1 + movs r0, #2 + ands r3, r0 + adds r3, #0x37 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_080598C4: .4byte 0x00001016 + thumb_func_end sub_08059884 + + thumb_func_start sub_080598C8 +sub_080598C8: @ 0x080598C8 + push {r4, lr} + sub sp, #0x10 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + movs r4, #1 + strh r4, [r0] + movs r1, #2 + strh r1, [r0, #2] + adds r0, r3, #0 + ands r0, r4 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #0x19 + movs r0, #0x90 + lsls r0, r0, #0x15 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + ands r3, r1 + adds r3, #0x23 + str r4, [sp] + str r1, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080598C8 + + thumb_func_start sub_08059910 +sub_08059910: @ 0x08059910 + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0xc + ldr r1, _08059958 + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #1 + adds r0, r3, #0 + ands r0, r1 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #0x19 + movs r0, #0x90 + lsls r0, r0, #0x15 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + movs r0, #2 + ands r3, r0 + adds r3, #0x23 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + add r1, sp, #0xc + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_08059958: .4byte 0x00001016 + thumb_func_end sub_08059910 + + thumb_func_start sub_0805995C +sub_0805995C: @ 0x0805995C + push {lr} + ldr r0, _08059968 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08059968: .4byte sub_080A8BC0 + thumb_func_end sub_0805995C + + thumb_func_start sub_0805996C +sub_0805996C: @ 0x0805996C + push {lr} + ldr r0, _08059978 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08059978: .4byte sub_080A8BC0 + thumb_func_end sub_0805996C + + thumb_func_start sub_0805997C +sub_0805997C: @ 0x0805997C + push {lr} + ldr r0, _080599A4 + ldr r2, [r0] + ldr r0, _080599A8 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0805999E + bl sub_0805709C +_0805999E: + pop {r0} + bx r0 + .align 2, 0 +_080599A4: .4byte gUnknown_2024174 +_080599A8: .4byte gUnknown_2023D08 + thumb_func_end sub_0805997C + + thumb_func_start sub_080599AC +sub_080599AC: @ 0x080599AC + push {lr} + ldr r0, _080599D4 + ldr r2, [r0] + ldr r0, _080599D8 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080599CE + bl sub_0805709C +_080599CE: + pop {r0} + bx r0 + .align 2, 0 +_080599D4: .4byte gUnknown_2024174 +_080599D8: .4byte gUnknown_2023D08 + thumb_func_end sub_080599AC + + thumb_func_start sub_080599DC +sub_080599DC: @ 0x080599DC + push {lr} + ldr r0, _08059A00 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080599FC + ldr r0, _08059A04 + movs r1, #0 + strh r1, [r0] + ldr r0, _08059A08 + strh r1, [r0] + ldr r0, _08059A0C + movs r1, #0 + bl sub_0814FA04 +_080599FC: + pop {r0} + bx r0 + .align 2, 0 +_08059A00: .4byte gUnknown_2022C90 +_08059A04: .4byte gUnknown_2022AC8 +_08059A08: .4byte gUnknown_2022ACA +_08059A0C: .4byte gUnknown_85ABB62 + thumb_func_end sub_080599DC + + thumb_func_start sub_08059A10 +sub_08059A10: @ 0x08059A10 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _08059A3C + ldr r0, _08059A40 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08059A48 + ldr r0, _08059A44 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_08059A84 + adds r6, r0, #0 + b _08059A6A + .align 2, 0 +_08059A3C: .4byte gUnknown_2022D08 +_08059A40: .4byte gUnknown_2023D08 +_08059A44: .4byte gUnknown_2023D12 +_08059A48: + ldrb r4, [r1] + movs r5, #0 +_08059A4C: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08059A62 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_08059A84 + adds r6, r6, r0 +_08059A62: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _08059A4C +_08059A6A: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_0805709C + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08059A10 + + thumb_func_start sub_08059A84 +sub_08059A84: @ 0x08059A84 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _08059AB8 + ldr r3, _08059ABC + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _08059AAE + bl _0805A21A +_08059AAE: + lsls r0, r0, #2 + ldr r1, _08059AC0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08059AB8: .4byte gUnknown_2022D08 +_08059ABC: .4byte gUnknown_2023D08 +_08059AC0: .4byte _08059AC4 +_08059AC4: @ jump table + .4byte _08059BB4 @ case 0 + .4byte _08059DD8 @ case 1 + .4byte _08059DE8 @ case 2 + .4byte _08059DF8 @ case 3 + .4byte _08059E60 @ case 4 + .4byte _08059E60 @ case 5 + .4byte _08059E60 @ case 6 + .4byte _08059E60 @ case 7 + .4byte _08059E7C @ case 8 + .4byte _08059EB8 @ case 9 + .4byte _08059EB8 @ case 10 + .4byte _08059EB8 @ case 11 + .4byte _08059EB8 @ case 12 + .4byte _0805A21A @ case 13 + .4byte _0805A21A @ case 14 + .4byte _0805A21A @ case 15 + .4byte _0805A21A @ case 16 + .4byte _08059ED4 @ case 17 + .4byte _08059EE4 @ case 18 + .4byte _08059F14 @ case 19 + .4byte _08059F24 @ case 20 + .4byte _08059F34 @ case 21 + .4byte _08059F44 @ case 22 + .4byte _08059F54 @ case 23 + .4byte _08059F64 @ case 24 + .4byte _08059F74 @ case 25 + .4byte _08059F84 @ case 26 + .4byte _08059F94 @ case 27 + .4byte _08059FA4 @ case 28 + .4byte _08059FB4 @ case 29 + .4byte _08059FC4 @ case 30 + .4byte _08059FD4 @ case 31 + .4byte _0805A024 @ case 32 + .4byte _0805A034 @ case 33 + .4byte _0805A044 @ case 34 + .4byte _0805A054 @ case 35 + .4byte _0805A064 @ case 36 + .4byte _0805A074 @ case 37 + .4byte _0805A084 @ case 38 + .4byte _0805A094 @ case 39 + .4byte _0805A0A4 @ case 40 + .4byte _0805A0D8 @ case 41 + .4byte _0805A0E8 @ case 42 + .4byte _0805A0F8 @ case 43 + .4byte _0805A108 @ case 44 + .4byte _0805A118 @ case 45 + .4byte _0805A128 @ case 46 + .4byte _0805A138 @ case 47 + .4byte _0805A148 @ case 48 + .4byte _0805A168 @ case 49 + .4byte _0805A178 @ case 50 + .4byte _0805A188 @ case 51 + .4byte _0805A198 @ case 52 + .4byte _0805A1A8 @ case 53 + .4byte _0805A1B8 @ case 54 + .4byte _0805A1C8 @ case 55 + .4byte _0805A1D8 @ case 56 + .4byte _0805A1E8 @ case 57 + .4byte _0805A1F8 @ case 58 + .4byte _0805A208 @ case 59 +_08059BB4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08059DC8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_08059C00: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08059C00 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08059DC8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _08059DCC + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _08059DD0 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _08059DD4 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_08059DB8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _08059DB8 + b _0805A21A + .align 2, 0 +_08059DC8: .4byte gUnknown_2024190 +_08059DCC: .4byte 0xFFFFFC1F +_08059DD0: .4byte 0xFFF07FFF +_08059DD4: .4byte 0xFFFFFE0F +_08059DD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059DE4 + adds r0, r0, r1 + movs r1, #0xb + b _0805A152 + .align 2, 0 +_08059DE4: .4byte gUnknown_2024190 +_08059DE8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059DF4 + adds r0, r0, r1 + movs r1, #0xc + b _0805A152 + .align 2, 0 +_08059DF4: .4byte gUnknown_2024190 +_08059DF8: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08059E5C + adds r4, r1, r0 + mov r8, sb +_08059E0E: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _08059E0E + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059E5C + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_08059E4C: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _08059E4C + b _0805A21A + .align 2, 0 +_08059E5C: .4byte gUnknown_2024190 +_08059E60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059E78 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _0805A152 + .align 2, 0 +_08059E78: .4byte gUnknown_2024190 +_08059E7C: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _08059EB4 + mov r8, r2 +_08059E88: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _08059E88 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059EB4 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _0805A21A + .align 2, 0 +_08059EB4: .4byte gUnknown_2024190 +_08059EB8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059ED0 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _0805A212 + .align 2, 0 +_08059ED0: .4byte gUnknown_2024190 +_08059ED4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059EE0 + adds r0, r0, r1 + movs r1, #1 + b _08059EEE + .align 2, 0 +_08059EE0: .4byte gUnknown_2024190 +_08059EE4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F10 + adds r0, r0, r1 + movs r1, #0x19 +_08059EEE: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _0805A21A + .align 2, 0 +_08059F10: .4byte gUnknown_2024190 +_08059F14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F20 + adds r0, r0, r1 + movs r1, #0x1a + b _0805A212 + .align 2, 0 +_08059F20: .4byte gUnknown_2024190 +_08059F24: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F30 + adds r0, r0, r1 + movs r1, #0x1b + b _0805A212 + .align 2, 0 +_08059F30: .4byte gUnknown_2024190 +_08059F34: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F40 + adds r0, r0, r1 + movs r1, #0x1c + b _0805A212 + .align 2, 0 +_08059F40: .4byte gUnknown_2024190 +_08059F44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F50 + adds r0, r0, r1 + movs r1, #0x1d + b _0805A212 + .align 2, 0 +_08059F50: .4byte gUnknown_2024190 +_08059F54: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F60 + adds r0, r0, r1 + movs r1, #0x1e + b _0805A212 + .align 2, 0 +_08059F60: .4byte gUnknown_2024190 +_08059F64: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F70 + adds r0, r0, r1 + movs r1, #0x1f + b _0805A212 + .align 2, 0 +_08059F70: .4byte gUnknown_2024190 +_08059F74: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F80 + adds r0, r0, r1 + movs r1, #0x20 + b _0805A212 + .align 2, 0 +_08059F80: .4byte gUnknown_2024190 +_08059F84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059F90 + adds r0, r0, r1 + movs r1, #0x22 + b _0805A212 + .align 2, 0 +_08059F90: .4byte gUnknown_2024190 +_08059F94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059FA0 + adds r0, r0, r1 + movs r1, #0x23 + b _0805A212 + .align 2, 0 +_08059FA0: .4byte gUnknown_2024190 +_08059FA4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059FB0 + adds r0, r0, r1 + movs r1, #0x24 + b _0805A212 + .align 2, 0 +_08059FB0: .4byte gUnknown_2024190 +_08059FB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059FC0 + adds r0, r0, r1 + movs r1, #0x25 + b _0805A212 + .align 2, 0 +_08059FC0: .4byte gUnknown_2024190 +_08059FC4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08059FD0 + adds r0, r0, r1 + movs r1, #0x26 + b _0805A212 + .align 2, 0 +_08059FD0: .4byte gUnknown_2024190 +_08059FD4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805A020 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _0805A21A + .align 2, 0 +_0805A020: .4byte gUnknown_2024190 +_0805A024: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A030 + adds r0, r0, r1 + movs r1, #0x27 + b _0805A212 + .align 2, 0 +_0805A030: .4byte gUnknown_2024190 +_0805A034: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A040 + adds r0, r0, r1 + movs r1, #0x28 + b _0805A212 + .align 2, 0 +_0805A040: .4byte gUnknown_2024190 +_0805A044: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A050 + adds r0, r0, r1 + movs r1, #0x29 + b _0805A212 + .align 2, 0 +_0805A050: .4byte gUnknown_2024190 +_0805A054: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A060 + adds r0, r0, r1 + movs r1, #0x2a + b _0805A212 + .align 2, 0 +_0805A060: .4byte gUnknown_2024190 +_0805A064: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A070 + adds r0, r0, r1 + movs r1, #0x2b + b _0805A212 + .align 2, 0 +_0805A070: .4byte gUnknown_2024190 +_0805A074: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A080 + adds r0, r0, r1 + movs r1, #0x2c + b _0805A212 + .align 2, 0 +_0805A080: .4byte gUnknown_2024190 +_0805A084: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A090 + adds r0, r0, r1 + movs r1, #0 + b _0805A0AE + .align 2, 0 +_0805A090: .4byte gUnknown_2024190 +_0805A094: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A0A0 + adds r0, r0, r1 + movs r1, #9 + b _0805A152 + .align 2, 0 +_0805A0A0: .4byte gUnknown_2024190 +_0805A0A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A0D4 + adds r0, r0, r1 + movs r1, #0x37 +_0805A0AE: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _0805A21A + .align 2, 0 +_0805A0D4: .4byte gUnknown_2024190 +_0805A0D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A0E4 + adds r0, r0, r1 + movs r1, #0x38 + b _0805A212 + .align 2, 0 +_0805A0E4: .4byte gUnknown_2024190 +_0805A0E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A0F4 + adds r0, r0, r1 + movs r1, #0x39 + b _0805A152 + .align 2, 0 +_0805A0F4: .4byte gUnknown_2024190 +_0805A0F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A104 + adds r0, r0, r1 + movs r1, #0x3a + b _0805A152 + .align 2, 0 +_0805A104: .4byte gUnknown_2024190 +_0805A108: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A114 + adds r0, r0, r1 + movs r1, #0x3b + b _0805A152 + .align 2, 0 +_0805A114: .4byte gUnknown_2024190 +_0805A118: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A124 + adds r0, r0, r1 + movs r1, #0x3c + b _0805A152 + .align 2, 0 +_0805A124: .4byte gUnknown_2024190 +_0805A128: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A134 + adds r0, r0, r1 + movs r1, #0x3d + b _0805A152 + .align 2, 0 +_0805A134: .4byte gUnknown_2024190 +_0805A138: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A144 + adds r0, r0, r1 + movs r1, #0x3e + b _0805A152 + .align 2, 0 +_0805A144: .4byte gUnknown_2024190 +_0805A148: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A164 + adds r0, r0, r1 + movs r1, #0x3f +_0805A152: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _0805A21A + .align 2, 0 +_0805A164: .4byte gUnknown_2024190 +_0805A168: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A174 + adds r0, r0, r1 + movs r1, #0x16 + b _0805A212 + .align 2, 0 +_0805A174: .4byte gUnknown_2024190 +_0805A178: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A184 + adds r0, r0, r1 + movs r1, #0x17 + b _0805A212 + .align 2, 0 +_0805A184: .4byte gUnknown_2024190 +_0805A188: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A194 + adds r0, r0, r1 + movs r1, #0x18 + b _0805A212 + .align 2, 0 +_0805A194: .4byte gUnknown_2024190 +_0805A198: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1A4 + adds r0, r0, r1 + movs r1, #0x21 + b _0805A212 + .align 2, 0 +_0805A1A4: .4byte gUnknown_2024190 +_0805A1A8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1B4 + adds r0, r0, r1 + movs r1, #0x2f + b _0805A212 + .align 2, 0 +_0805A1B4: .4byte gUnknown_2024190 +_0805A1B8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1C4 + adds r0, r0, r1 + movs r1, #0x30 + b _0805A212 + .align 2, 0 +_0805A1C4: .4byte gUnknown_2024190 +_0805A1C8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1D4 + adds r0, r0, r1 + movs r1, #0x32 + b _0805A212 + .align 2, 0 +_0805A1D4: .4byte gUnknown_2024190 +_0805A1D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1E4 + adds r0, r0, r1 + movs r1, #0x33 + b _0805A212 + .align 2, 0 +_0805A1E4: .4byte gUnknown_2024190 +_0805A1E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A1F4 + adds r0, r0, r1 + movs r1, #0x34 + b _0805A212 + .align 2, 0 +_0805A1F4: .4byte gUnknown_2024190 +_0805A1F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A204 + adds r0, r0, r1 + movs r1, #0x35 + b _0805A212 + .align 2, 0 +_0805A204: .4byte gUnknown_2024190 +_0805A208: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A22C + adds r0, r0, r1 + movs r1, #0x36 +_0805A212: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_0805A21A: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0805A22C: .4byte gUnknown_2024190 + thumb_func_end sub_08059A84 + + thumb_func_start sub_0805A230 +sub_0805A230: @ 0x0805A230 + push {r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r2, _0805A2A8 + ldr r5, _0805A2AC + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + adds r4, r2, #0 + muls r4, r0, r4 + ldr r3, _0805A2B0 + lsls r1, r1, #9 + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r2, [r0] + ldr r0, _0805A2B4 + adds r0, r2, r0 + adds r6, r4, r0 + mov r0, sp + adds r4, r0, r2 + movs r2, #0 + adds r0, r3, #2 + adds r1, r1, r0 + adds r7, r5, #0 + mov ip, r3 + ldrb r1, [r1] + cmp r2, r1 + bhs _0805A286 + adds r3, r0, #0 +_0805A26C: + adds r1, r4, r2 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r5] + lsls r0, r0, #9 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r2, r0 + blo _0805A26C +_0805A286: + ldrb r0, [r7] + lsls r0, r0, #9 + mov r1, ip + adds r1, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + adds r2, r4, #0 + bl sub_08033E70 + bl sub_0805709C + add sp, #0x58 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805A2A8: .4byte gUnknown_2023D12 +_0805A2AC: .4byte gUnknown_2023D08 +_0805A2B0: .4byte gUnknown_2022D08 +_0805A2B4: .4byte gUnknown_2024190 + thumb_func_end sub_0805A230 + + thumb_func_start sub_0805A2B8 +sub_0805A2B8: @ 0x0805A2B8 + push {r4, r5, lr} + ldr r1, _0805A2DC + ldr r0, _0805A2E0 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0805A2E8 + ldr r0, _0805A2E4 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0805A310 + b _0805A306 + .align 2, 0 +_0805A2DC: .4byte gUnknown_2022D08 +_0805A2E0: .4byte gUnknown_2023D08 +_0805A2E4: .4byte gUnknown_2023D12 +_0805A2E8: + ldrb r4, [r1] + movs r5, #0 +_0805A2EC: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0805A2FA + adds r0, r5, #0 + bl sub_0805A310 +_0805A2FA: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0805A2EC +_0805A306: + bl sub_0805709C + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0805A2B8 + + thumb_func_start sub_0805A310 +sub_0805A310: @ 0x0805A310 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0805A348 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r2, _0805A34C + adds r3, r0, r2 + adds r6, r3, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r2, #0 + cmp r0, #0x3b + bls _0805A33C + bl _0805ACD6 +_0805A33C: + lsls r0, r0, #2 + ldr r1, _0805A350 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805A348: .4byte gUnknown_2023D08 +_0805A34C: .4byte gUnknown_2022D0B +_0805A350: .4byte _0805A354 +_0805A354: @ jump table + .4byte _0805A444 @ case 0 + .4byte _0805A5DC @ case 1 + .4byte _0805A5FC @ case 2 + .4byte _0805A61C @ case 3 + .4byte _0805A674 @ case 4 + .4byte _0805A674 @ case 5 + .4byte _0805A674 @ case 6 + .4byte _0805A674 @ case 7 + .4byte _0805A69C @ case 8 + .4byte _0805A700 @ case 9 + .4byte _0805A700 @ case 10 + .4byte _0805A700 @ case 11 + .4byte _0805A700 @ case 12 + .4byte _0805ACD6 @ case 13 + .4byte _0805ACD6 @ case 14 + .4byte _0805ACD6 @ case 15 + .4byte _0805ACD6 @ case 16 + .4byte _0805A730 @ case 17 + .4byte _0805A750 @ case 18 + .4byte _0805A770 @ case 19 + .4byte _0805A790 @ case 20 + .4byte _0805A7B0 @ case 21 + .4byte _0805A7D0 @ case 22 + .4byte _0805A7F0 @ case 23 + .4byte _0805A810 @ case 24 + .4byte _0805A830 @ case 25 + .4byte _0805A850 @ case 26 + .4byte _0805A870 @ case 27 + .4byte _0805A890 @ case 28 + .4byte _0805A8B0 @ case 29 + .4byte _0805A8D0 @ case 30 + .4byte _0805A8F0 @ case 31 + .4byte _0805A960 @ case 32 + .4byte _0805A980 @ case 33 + .4byte _0805A9A0 @ case 34 + .4byte _0805A9C0 @ case 35 + .4byte _0805A9E0 @ case 36 + .4byte _0805AA00 @ case 37 + .4byte _0805AA20 @ case 38 + .4byte _0805AA40 @ case 39 + .4byte _0805AA60 @ case 40 + .4byte _0805AA80 @ case 41 + .4byte _0805AAA0 @ case 42 + .4byte _0805AAC0 @ case 43 + .4byte _0805AAE0 @ case 44 + .4byte _0805AB00 @ case 45 + .4byte _0805AB20 @ case 46 + .4byte _0805AB40 @ case 47 + .4byte _0805AB60 @ case 48 + .4byte _0805AB80 @ case 49 + .4byte _0805ABA0 @ case 50 + .4byte _0805ABC0 @ case 51 + .4byte _0805ABE0 @ case 52 + .4byte _0805AC00 @ case 53 + .4byte _0805AC20 @ case 54 + .4byte _0805AC40 @ case 55 + .4byte _0805AC60 @ case 56 + .4byte _0805AC80 @ case 57 + .4byte _0805ACA0 @ case 58 + .4byte _0805ACC0 @ case 59 +_0805A444: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805A5D8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r6, #0 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r6 + mov sl, r0 + adds r0, r6, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r6, #2 + str r0, [sp, #4] + adds r0, r6, #4 + str r0, [sp, #8] + adds r0, r6, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r7, r6, #0 + adds r7, #0x24 + adds r4, r6, #0 + adds r4, #0xc +_0805A4AA: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r7, #0 + bl sub_0806A774 + adds r7, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0805A4AA + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805A5D8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r6, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A5D8: .4byte gUnknown_2024190 +_0805A5DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A5F4 + adds r0, r0, r1 + ldr r1, _0805A5F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xb + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A5F4: .4byte gUnknown_2024190 +_0805A5F8: .4byte gUnknown_2023D08 +_0805A5FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A614 + adds r0, r0, r1 + ldr r1, _0805A618 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xc + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A614: .4byte gUnknown_2024190 +_0805A618: .4byte gUnknown_2023D08 +_0805A61C: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r3 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0805A670 + adds r7, r1, r0 + adds r6, r3, #0 + adds r6, #8 + adds r4, r3, #0 +_0805A636: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0805A636 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A670 + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A670: .4byte gUnknown_2024190 +_0805A674: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A690 + adds r0, r0, r1 + ldr r3, _0805A694 + ldr r1, _0805A698 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _0805A718 + .align 2, 0 +_0805A690: .4byte gUnknown_2024190 +_0805A694: .4byte gUnknown_2022D08 +_0805A698: .4byte gUnknown_2023D08 +_0805A69C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805A6F8 + adds r4, r4, r0 + ldr r5, _0805A6FC + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A6F8: .4byte gUnknown_2024190 +_0805A6FC: .4byte gUnknown_2023D08 +_0805A700: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A724 + adds r0, r0, r1 + ldr r3, _0805A728 + ldr r1, _0805A72C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_0805A718: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A724: .4byte gUnknown_2024190 +_0805A728: .4byte gUnknown_2022D08 +_0805A72C: .4byte gUnknown_2023D08 +_0805A730: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A748 + adds r0, r0, r1 + ldr r1, _0805A74C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #1 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A748: .4byte gUnknown_2024190 +_0805A74C: .4byte gUnknown_2023D08 +_0805A750: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A768 + adds r0, r0, r1 + ldr r1, _0805A76C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x19 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A768: .4byte gUnknown_2024190 +_0805A76C: .4byte gUnknown_2023D08 +_0805A770: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A788 + adds r0, r0, r1 + ldr r1, _0805A78C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1a + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A788: .4byte gUnknown_2024190 +_0805A78C: .4byte gUnknown_2023D08 +_0805A790: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A7A8 + adds r0, r0, r1 + ldr r1, _0805A7AC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1b + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A7A8: .4byte gUnknown_2024190 +_0805A7AC: .4byte gUnknown_2023D08 +_0805A7B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A7C8 + adds r0, r0, r1 + ldr r1, _0805A7CC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1c + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A7C8: .4byte gUnknown_2024190 +_0805A7CC: .4byte gUnknown_2023D08 +_0805A7D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A7E8 + adds r0, r0, r1 + ldr r1, _0805A7EC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1d + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A7E8: .4byte gUnknown_2024190 +_0805A7EC: .4byte gUnknown_2023D08 +_0805A7F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A808 + adds r0, r0, r1 + ldr r1, _0805A80C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1e + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A808: .4byte gUnknown_2024190 +_0805A80C: .4byte gUnknown_2023D08 +_0805A810: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A828 + adds r0, r0, r1 + ldr r1, _0805A82C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1f + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A828: .4byte gUnknown_2024190 +_0805A82C: .4byte gUnknown_2023D08 +_0805A830: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A848 + adds r0, r0, r1 + ldr r1, _0805A84C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x20 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A848: .4byte gUnknown_2024190 +_0805A84C: .4byte gUnknown_2023D08 +_0805A850: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A868 + adds r0, r0, r1 + ldr r1, _0805A86C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x22 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A868: .4byte gUnknown_2024190 +_0805A86C: .4byte gUnknown_2023D08 +_0805A870: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A888 + adds r0, r0, r1 + ldr r1, _0805A88C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x23 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A888: .4byte gUnknown_2024190 +_0805A88C: .4byte gUnknown_2023D08 +_0805A890: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A8A8 + adds r0, r0, r1 + ldr r1, _0805A8AC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x24 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A8A8: .4byte gUnknown_2024190 +_0805A8AC: .4byte gUnknown_2023D08 +_0805A8B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A8C8 + adds r0, r0, r1 + ldr r1, _0805A8CC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x25 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A8C8: .4byte gUnknown_2024190 +_0805A8CC: .4byte gUnknown_2023D08 +_0805A8D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A8E8 + adds r0, r0, r1 + ldr r1, _0805A8EC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x26 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A8E8: .4byte gUnknown_2024190 +_0805A8EC: .4byte gUnknown_2023D08 +_0805A8F0: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805A958 + adds r4, r4, r0 + ldr r5, _0805A95C + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _0805AA10 + .align 2, 0 +_0805A958: .4byte gUnknown_2024190 +_0805A95C: .4byte gUnknown_2023D08 +_0805A960: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A978 + adds r0, r0, r1 + ldr r1, _0805A97C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x27 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A978: .4byte gUnknown_2024190 +_0805A97C: .4byte gUnknown_2023D08 +_0805A980: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A998 + adds r0, r0, r1 + ldr r1, _0805A99C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x28 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A998: .4byte gUnknown_2024190 +_0805A99C: .4byte gUnknown_2023D08 +_0805A9A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A9B8 + adds r0, r0, r1 + ldr r1, _0805A9BC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x29 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A9B8: .4byte gUnknown_2024190 +_0805A9BC: .4byte gUnknown_2023D08 +_0805A9C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A9D8 + adds r0, r0, r1 + ldr r1, _0805A9DC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2a + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A9D8: .4byte gUnknown_2024190 +_0805A9DC: .4byte gUnknown_2023D08 +_0805A9E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805A9F8 + adds r0, r0, r1 + ldr r1, _0805A9FC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2b + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805A9F8: .4byte gUnknown_2024190 +_0805A9FC: .4byte gUnknown_2023D08 +_0805AA00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AA18 + adds r0, r0, r1 + ldr r1, _0805AA1C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 +_0805AA10: + movs r1, #0x2c + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AA18: .4byte gUnknown_2024190 +_0805AA1C: .4byte gUnknown_2023D08 +_0805AA20: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AA38 + adds r0, r0, r1 + ldr r1, _0805AA3C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AA38: .4byte gUnknown_2024190 +_0805AA3C: .4byte gUnknown_2023D08 +_0805AA40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AA58 + adds r0, r0, r1 + ldr r1, _0805AA5C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #9 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AA58: .4byte gUnknown_2024190 +_0805AA5C: .4byte gUnknown_2023D08 +_0805AA60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AA78 + adds r0, r0, r1 + ldr r1, _0805AA7C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x37 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AA78: .4byte gUnknown_2024190 +_0805AA7C: .4byte gUnknown_2023D08 +_0805AA80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AA98 + adds r0, r0, r1 + ldr r1, _0805AA9C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x38 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AA98: .4byte gUnknown_2024190 +_0805AA9C: .4byte gUnknown_2023D08 +_0805AAA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AAB8 + adds r0, r0, r1 + ldr r1, _0805AABC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x39 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AAB8: .4byte gUnknown_2024190 +_0805AABC: .4byte gUnknown_2023D08 +_0805AAC0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AAD8 + adds r0, r0, r1 + ldr r1, _0805AADC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3a + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AAD8: .4byte gUnknown_2024190 +_0805AADC: .4byte gUnknown_2023D08 +_0805AAE0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AAF8 + adds r0, r0, r1 + ldr r1, _0805AAFC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3b + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AAF8: .4byte gUnknown_2024190 +_0805AAFC: .4byte gUnknown_2023D08 +_0805AB00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AB18 + adds r0, r0, r1 + ldr r1, _0805AB1C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3c + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AB18: .4byte gUnknown_2024190 +_0805AB1C: .4byte gUnknown_2023D08 +_0805AB20: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AB38 + adds r0, r0, r1 + ldr r1, _0805AB3C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3d + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AB38: .4byte gUnknown_2024190 +_0805AB3C: .4byte gUnknown_2023D08 +_0805AB40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AB58 + adds r0, r0, r1 + ldr r1, _0805AB5C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3e + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AB58: .4byte gUnknown_2024190 +_0805AB5C: .4byte gUnknown_2023D08 +_0805AB60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AB78 + adds r0, r0, r1 + ldr r1, _0805AB7C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3f + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AB78: .4byte gUnknown_2024190 +_0805AB7C: .4byte gUnknown_2023D08 +_0805AB80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AB98 + adds r0, r0, r1 + ldr r1, _0805AB9C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x16 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AB98: .4byte gUnknown_2024190 +_0805AB9C: .4byte gUnknown_2023D08 +_0805ABA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805ABB8 + adds r0, r0, r1 + ldr r1, _0805ABBC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x17 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805ABB8: .4byte gUnknown_2024190 +_0805ABBC: .4byte gUnknown_2023D08 +_0805ABC0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805ABD8 + adds r0, r0, r1 + ldr r1, _0805ABDC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x18 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805ABD8: .4byte gUnknown_2024190 +_0805ABDC: .4byte gUnknown_2023D08 +_0805ABE0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805ABF8 + adds r0, r0, r1 + ldr r1, _0805ABFC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x21 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805ABF8: .4byte gUnknown_2024190 +_0805ABFC: .4byte gUnknown_2023D08 +_0805AC00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AC18 + adds r0, r0, r1 + ldr r1, _0805AC1C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2f + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AC18: .4byte gUnknown_2024190 +_0805AC1C: .4byte gUnknown_2023D08 +_0805AC20: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AC38 + adds r0, r0, r1 + ldr r1, _0805AC3C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x30 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AC38: .4byte gUnknown_2024190 +_0805AC3C: .4byte gUnknown_2023D08 +_0805AC40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AC58 + adds r0, r0, r1 + ldr r1, _0805AC5C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x32 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AC58: .4byte gUnknown_2024190 +_0805AC5C: .4byte gUnknown_2023D08 +_0805AC60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AC78 + adds r0, r0, r1 + ldr r1, _0805AC7C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x33 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AC78: .4byte gUnknown_2024190 +_0805AC7C: .4byte gUnknown_2023D08 +_0805AC80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AC98 + adds r0, r0, r1 + ldr r1, _0805AC9C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x34 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805AC98: .4byte gUnknown_2024190 +_0805AC9C: .4byte gUnknown_2023D08 +_0805ACA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805ACB8 + adds r0, r0, r1 + ldr r1, _0805ACBC + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x35 + bl sub_0806A774 + b _0805ACD6 + .align 2, 0 +_0805ACB8: .4byte gUnknown_2024190 +_0805ACBC: .4byte gUnknown_2023D08 +_0805ACC0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805AD00 + adds r0, r0, r1 + ldr r1, _0805AD04 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x36 + bl sub_0806A774 +_0805ACD6: + ldr r2, _0805AD08 + ldr r0, _0805AD04 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0805AD00 + adds r0, r0, r2 + bl sub_0805E5AC + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805AD00: .4byte gUnknown_2024190 +_0805AD04: .4byte gUnknown_2023D08 +_0805AD08: .4byte gUnknown_2023D12 + thumb_func_end sub_0805A310 + + thumb_func_start sub_0805AD0C +sub_0805AD0C: @ 0x0805AD0C + push {r4, r5, r6, r7, lr} + ldr r1, _0805AD70 + ldr r7, _0805AD74 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _0805AD78 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _0805AD7C + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _0805AD64 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_0805AD42: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _0805AD42 +_0805AD64: + bl sub_0805709C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805AD70: .4byte gUnknown_2023D12 +_0805AD74: .4byte gUnknown_2023D08 +_0805AD78: .4byte gUnknown_2022D08 +_0805AD7C: .4byte gUnknown_2024190 + thumb_func_end sub_0805AD0C + + thumb_func_start sub_0805AD80 +sub_0805AD80: @ 0x0805AD80 + push {r4, lr} + ldr r2, _0805ADCC + ldr r4, _0805ADD0 + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0805ADD4 + adds r0, r0, r2 + bl sub_0805D998 + ldr r2, _0805ADD8 + ldr r0, _0805ADDC + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldr r1, _0805ADE0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805ADE4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805ADCC: .4byte gUnknown_2023D12 +_0805ADD0: .4byte gUnknown_2023D08 +_0805ADD4: .4byte gUnknown_2024190 +_0805ADD8: .4byte gUnknown_20205AC +_0805ADDC: .4byte gUnknown_2023E88 +_0805ADE0: .4byte gUnknown_3005AC0 +_0805ADE4: .4byte sub_08057164 + thumb_func_end sub_0805AD80 + + thumb_func_start sub_0805ADE8 +sub_0805ADE8: @ 0x0805ADE8 + push {r4, r5, r6, lr} + ldr r5, _0805AE54 + ldrb r0, [r5] + ldr r4, _0805AE58 + lsls r1, r0, #9 + adds r6, r4, #2 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0805EBA0 + ldr r2, _0805AE5C + ldrb r0, [r5] + lsls r1, r0, #1 + adds r1, r1, r2 + lsls r0, r0, #9 + adds r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + movs r4, #0 + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0805AE60 + adds r0, r0, r2 + bl sub_0805D998 + ldr r1, _0805AE64 + ldrb r0, [r5] + adds r0, r0, r1 + strb r4, [r0] + ldr r1, _0805AE68 + ldrb r0, [r5] + adds r0, r0, r1 + strb r4, [r0] + ldrb r0, [r5] + lsls r1, r0, #9 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0805AE74 + ldr r1, _0805AE6C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805AE70 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805AE54: .4byte gUnknown_2023D08 +_0805AE58: .4byte gUnknown_2022D08 +_0805AE5C: .4byte gUnknown_2023D12 +_0805AE60: .4byte gUnknown_2024190 +_0805AE64: .4byte gUnknown_2024150 +_0805AE68: .4byte gUnknown_2024154 +_0805AE6C: .4byte gUnknown_3005AC0 +_0805AE70: .4byte sub_08058C3C + thumb_func_end sub_0805ADE8 + + thumb_func_start sub_0805AE74 +sub_0805AE74: @ 0x0805AE74 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _0805AFC8 + lsls r2, r6, #1 + adds r2, r2, r0 + ldr r0, _0805AFCC + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805AFD0 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0805AFD4 + bl sub_0806F0C4 + ldr r1, _0805AFD8 + mov sb, r1 + add sb, r6 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _0805AFDC + mov sl, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0805AFE0 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0805AFE4 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0805AFE8 + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0805AFEC + str r1, [r0] + movs r0, #0 + movs r1, #0xff + bl sub_08074DF0 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805AFC8: .4byte gUnknown_2023D12 +_0805AFCC: .4byte gUnknown_2022D08 +_0805AFD0: .4byte gUnknown_2024190 +_0805AFD4: .4byte sub_0805D330 +_0805AFD8: .4byte gUnknown_3005ADC +_0805AFDC: .4byte gUnknown_2024640 +_0805AFE0: .4byte gUnknown_2023E88 +_0805AFE4: .4byte gUnknown_20205AC +_0805AFE8: .4byte gUnknown_2024188 +_0805AFEC: .4byte sub_08007140 + thumb_func_end sub_0805AE74 + + thumb_func_start sub_0805AFF0 +sub_0805AFF0: @ 0x0805AFF0 + push {r4, r5, r6, lr} + ldr r1, _0805B024 + ldr r6, _0805B028 + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _0805B038 + ldr r0, _0805B02C + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _0805B030 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B034 + str r1, [r0] + b _0805B06E + .align 2, 0 +_0805B024: .4byte gUnknown_2022D08 +_0805B028: .4byte gUnknown_2023D08 +_0805B02C: .4byte gUnknown_2024174 +_0805B030: .4byte gUnknown_3005AC0 +_0805B034: .4byte sub_0805B080 +_0805B038: + ldr r5, _0805B074 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0805B078 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _0805B07C + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805709C +_0805B06E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B074: .4byte gUnknown_2023E88 +_0805B078: .4byte gUnknown_20205AC +_0805B07C: .4byte gUnknown_3005AD0 + thumb_func_end sub_0805AFF0 + + thumb_func_start sub_0805B080 +sub_0805B080: @ 0x0805B080 + push {r4, r5, r6, lr} + ldr r6, _0805B0A0 + ldr r4, [r6] + ldr r5, _0805B0A4 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _0805B0A8 + cmp r0, #1 + beq _0805B0D6 + b _0805B0FE + .align 2, 0 +_0805B0A0: .4byte gUnknown_2024174 +_0805B0A4: .4byte gUnknown_2023D08 +_0805B0A8: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805B0C2 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0805B0C2: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0805B0FE +_0805B0D6: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0805B0FE + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #1 + bl sub_0805D6E0 + ldr r1, _0805B104 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B108 + str r1, [r0] +_0805B0FE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B104: .4byte gUnknown_3005AC0 +_0805B108: .4byte sub_08059354 + thumb_func_end sub_0805B080 + + thumb_func_start sub_0805B10C +sub_0805B10C: @ 0x0805B10C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _0805B16C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0805B1D0 + bl sub_0800A02C + ldr r5, _0805B170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r4, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _0805B154 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #5 + bne _0805B174 +_0805B154: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #0x13] + adds r4, r0, #2 + b _0805B1D6 + .align 2, 0 +_0805B16C: .4byte gUnknown_2022C90 +_0805B170: .4byte gUnknown_20226A0 +_0805B174: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #2 + beq _0805B1A6 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, #1 + bne _0805B1BC +_0805B1A6: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #0x13] + adds r4, r0, #4 + b _0805B1D6 +_0805B1BC: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r4, [r1, #0x13] + b _0805B1D6 +_0805B1D0: + ldr r0, _0805B21C + ldr r0, [r0] + ldrb r4, [r0, #8] +_0805B1D6: + ldr r0, _0805B220 + ldr r1, [r0] + movs r2, #0x40 + ands r1, r2 + adds r5, r0, #0 + cmp r1, #0 + beq _0805B258 + ldr r0, _0805B224 + ldrb r0, [r0] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r0, #0x20 + mov sb, r0 + cmp r1, #0 + beq _0805B1FC + movs r1, #0x5a + mov sb, r1 +_0805B1FC: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0805B234 + ldr r0, _0805B228 + ldrh r1, [r0] + ldr r0, _0805B22C + cmp r1, r0 + beq _0805B234 + movs r0, #0x5a + mov sb, r0 + ldr r1, _0805B230 + b _0805B25E + .align 2, 0 +_0805B21C: .4byte gUnknown_3005AF0 +_0805B220: .4byte gUnknown_2022C90 +_0805B224: .4byte gUnknown_2023D08 +_0805B228: .4byte gUnknown_203886E +_0805B22C: .4byte 0x00000C03 +_0805B230: .4byte gUnknown_82D8D70 +_0805B234: + ldr r1, _0805B250 + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + subs r0, r0, r1 + lsls r0, r0, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r0, r0, r1 + lsrs r7, r0, #0x10 + ldr r5, _0805B254 + b _0805B272 + .align 2, 0 +_0805B250: .4byte gUnknown_82D95BC +_0805B254: .4byte gUnknown_2022C90 +_0805B258: + movs r0, #0x50 + mov sb, r0 + ldr r1, _0805B384 +_0805B25E: + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + subs r0, r0, r1 + lsls r0, r0, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r0, r0, r1 + lsrs r7, r0, #0x10 +_0805B272: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0805B280 + b _0805B3B0 +_0805B280: + ldr r0, _0805B388 + ldrh r1, [r0] + ldr r0, _0805B38C + cmp r1, r0 + bne _0805B28C + b _0805B3B0 +_0805B28C: + ldr r0, _0805B390 + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + ldr r6, _0805B394 + ldrb r1, [r6] + adds r0, r5, #0 + bl sub_0805DB54 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08069D00 + ldr r0, _0805B398 + mov r8, r0 + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0805B39C + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, _0805B3A0 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrh r0, [r5, #4] + bl sub_0800851C + ldr r5, _0805B3A4 + ldrb r1, [r6] + adds r1, r1, r4 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r5 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x30 + strh r1, [r0, #0x26] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0805B3A8 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0805B3AC + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _0805B446 + .align 2, 0 +_0805B384: .4byte gUnknown_82D95BC +_0805B388: .4byte gUnknown_203886E +_0805B38C: .4byte 0x00000C03 +_0805B390: .4byte gUnknown_3005AF0 +_0805B394: .4byte gUnknown_2023D08 +_0805B398: .4byte gUnknown_2024640 +_0805B39C: .4byte gUnknown_2023E88 +_0805B3A0: .4byte gUnknown_82D91CC +_0805B3A4: .4byte gUnknown_20205AC +_0805B3A8: .4byte 0x0000FFFE +_0805B3AC: .4byte sub_0805D3C8 +_0805B3B0: + ldr r5, _0805B460 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_0805DBA0 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r6, _0805B464 + mov r8, sb + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _0805B468 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _0805B46C + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0805B470 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0805B474 + str r1, [r0] +_0805B446: + ldr r1, _0805B478 + ldr r0, _0805B460 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B47C + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805B460: .4byte gUnknown_2023D08 +_0805B464: .4byte gUnknown_2024640 +_0805B468: .4byte gUnknown_2023E88 +_0805B46C: .4byte gUnknown_20205AC +_0805B470: .4byte 0x0000FFFE +_0805B474: .4byte sub_0805D3C8 +_0805B478: .4byte gUnknown_3005AC0 +_0805B47C: .4byte sub_08058454 + thumb_func_end sub_0805B10C + + thumb_func_start sub_0805B480 +sub_0805B480: @ 0x0805B480 + push {r4, r5, r6, lr} + ldr r0, _0805B4D8 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0805B53C + bl sub_0800A02C + ldr r5, _0805B4DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r4, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _0805B4C2 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #5 + bne _0805B4E0 +_0805B4C2: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #0x13] + adds r4, r0, #2 + b _0805B542 + .align 2, 0 +_0805B4D8: .4byte gUnknown_2022C90 +_0805B4DC: .4byte gUnknown_20226A0 +_0805B4E0: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #2 + beq _0805B512 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r0, [r1] + ands r4, r0 + cmp r4, #1 + bne _0805B528 +_0805B512: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #0x13] + adds r4, r0, #4 + b _0805B542 +_0805B528: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r4, [r1, #0x13] + b _0805B542 +_0805B53C: + ldr r0, _0805B5EC + ldr r0, [r0] + ldrb r4, [r0, #8] +_0805B542: + ldr r5, _0805B5F0 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_0805DBA0 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r0, _0805B5F4 + ldr r1, _0805B5F8 + lsls r4, r4, #2 + adds r4, r4, r1 + ldrb r1, [r4] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0x50 + movs r3, #0x1e + bl sub_08006B0C + ldr r6, _0805B5FC + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _0805B600 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0805B604 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0805B608 + str r1, [r0] + ldr r1, _0805B60C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B610 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B5EC: .4byte gUnknown_3005AF0 +_0805B5F0: .4byte gUnknown_2023D08 +_0805B5F4: .4byte gUnknown_2024640 +_0805B5F8: .4byte gUnknown_82D95BC +_0805B5FC: .4byte gUnknown_2023E88 +_0805B600: .4byte gUnknown_20205AC +_0805B604: .4byte 0x0000FFA0 +_0805B608: .4byte sub_0805D3C8 +_0805B60C: .4byte gUnknown_3005AC0 +_0805B610: .4byte sub_0805848C + thumb_func_end sub_0805B480 + + thumb_func_start sub_0805B614 +sub_0805B614: @ 0x0805B614 + push {r4, r5, r6, lr} + ldr r5, _0805B6B4 + ldr r6, _0805B6B8 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0805B6BC + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0805B6C0 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0805B6C4 + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0805B6C8 + bl sub_080A5B9C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r1, _0805B6CC + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B6D0 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B6B4: .4byte gUnknown_2023E88 +_0805B6B8: .4byte gUnknown_2023D08 +_0805B6BC: .4byte gUnknown_20205AC +_0805B6C0: .4byte 0x0000FFD8 +_0805B6C4: .4byte sub_080A67B4 +_0805B6C8: .4byte sub_08007140 +_0805B6CC: .4byte gUnknown_3005AC0 +_0805B6D0: .4byte sub_080584C4 + thumb_func_end sub_0805B614 + + thumb_func_start sub_0805B6D4 +sub_0805B6D4: @ 0x0805B6D4 + push {r4, r5, r6, lr} + ldr r6, _0805B720 + ldr r4, [r6] + ldr r5, _0805B724 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _0805B728 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805B708 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0805B708: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _0805B79E + .align 2, 0 +_0805B720: .4byte gUnknown_2024174 +_0805B724: .4byte gUnknown_2023D08 +_0805B728: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0805B79E + strb r4, [r3, #4] + ldr r2, _0805B7A4 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0805B7A8 + adds r0, r0, r2 + bl sub_0805E5AC + movs r1, #0x40 + rsbs r1, r1, #0 + movs r0, #0x10 + bl sub_080A307C + ldr r2, _0805B7AC + ldr r3, _0805B7B0 + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x30] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #5 + strh r1, [r0, #0x32] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0805B7B4 + str r1, [r0] + ldr r1, _0805B7B8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B7BC + str r1, [r0] +_0805B79E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805B7A4: .4byte gUnknown_2023D12 +_0805B7A8: .4byte gUnknown_2024190 +_0805B7AC: .4byte gUnknown_20205AC +_0805B7B0: .4byte gUnknown_2023E88 +_0805B7B4: .4byte sub_08039844 +_0805B7B8: .4byte gUnknown_3005AC0 +_0805B7BC: .4byte sub_080592B8 + thumb_func_end sub_0805B6D4 + + thumb_func_start sub_0805B7C0 +sub_0805B7C0: @ 0x0805B7C0 + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #2 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl sub_0805709C + add sp, #4 + pop {r0} + bx r0 + thumb_func_end sub_0805B7C0 + + thumb_func_start sub_0805B7E0 +sub_0805B7E0: @ 0x0805B7E0 + push {r4, r5, lr} + ldr r0, _0805B820 + ldr r0, [r0] + ldr r1, [r0, #8] + movs r0, #4 + strb r0, [r1, #8] + ldr r1, _0805B824 + movs r0, #1 + strb r0, [r1] + ldr r5, _0805B828 + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #3 + bl sub_0805D6E0 + ldr r1, _0805B82C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B830 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805B820: .4byte gUnknown_2024174 +_0805B824: .4byte gUnknown_202415D +_0805B828: .4byte gUnknown_2023D08 +_0805B82C: .4byte gUnknown_3005AC0 +_0805B830: .4byte sub_0805952C + thumb_func_end sub_0805B7E0 + + thumb_func_start sub_0805B834 +sub_0805B834: @ 0x0805B834 + push {r4, r5, lr} + ldr r1, _0805B87C + ldr r5, _0805B880 + ldrb r0, [r5] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, _0805B884 + ldr r0, [r0] + ldr r0, [r0, #8] + strb r1, [r0, #8] + ldr r1, _0805B888 + movs r0, #1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #3 + bl sub_0805D6E0 + ldr r1, _0805B88C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805B890 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805B87C: .4byte gUnknown_2022D08 +_0805B880: .4byte gUnknown_2023D08 +_0805B884: .4byte gUnknown_2024174 +_0805B888: .4byte gUnknown_202415D +_0805B88C: .4byte gUnknown_3005AC0 +_0805B890: .4byte sub_0805952C + thumb_func_end sub_0805B834 + + thumb_func_start sub_0805B894 +sub_0805B894: @ 0x0805B894 + push {lr} + ldr r1, _0805B8BC + ldr r0, _0805B8C0 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0805B8B2 +_0805B8A8: + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0805B8A8 +_0805B8B2: + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805B8BC: .4byte gUnknown_2022D08 +_0805B8C0: .4byte gUnknown_2023D08 + thumb_func_end sub_0805B894 + + thumb_func_start sub_0805B8C4 +sub_0805B8C4: @ 0x0805B8C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _0805B9B4 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805B8DA + b _0805BA00 +_0805B8DA: + ldr r0, _0805B9B8 + mov ip, r0 + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, #1 + adds r0, r1, r0 + ldrb r6, [r0] + mov r0, ip + adds r0, #2 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r6, r0 + ldr r0, _0805B9BC + mov r8, r0 + mov r0, ip + adds r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, r8 + strb r0, [r1] + ldr r3, _0805B9C0 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #4 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #5 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r3] + ldr r3, _0805B9C4 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #6 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #7 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r2, r0 + mov r0, ip + adds r0, #8 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x10 + orrs r2, r0 + mov r0, ip + adds r0, #9 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x18 + orrs r2, r0 + str r2, [r3] + ldr r2, _0805B9C8 + ldrb r0, [r5] + lsls r0, r0, #9 + mov r1, ip + adds r1, #0xa + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r4, _0805B9CC + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0xc + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #0xd + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r4] + ldr r7, _0805B9D0 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0x10 + adds r1, r1, r0 + str r1, [r7] + ldr r2, _0805B9D4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0805B9D8 + bl sub_0805709C + b _0805BA00 + .align 2, 0 +_0805B9B4: .4byte gUnknown_2023D08 +_0805B9B8: .4byte gUnknown_2022D08 +_0805B9BC: .4byte gUnknown_20380D2 +_0805B9C0: .4byte gUnknown_20380A8 +_0805B9C4: .4byte gUnknown_20380A4 +_0805B9C8: .4byte gUnknown_20380BA +_0805B9CC: .4byte gUnknown_20380BC +_0805B9D0: .4byte gUnknown_20380A0 +_0805B9D4: .4byte gUnknown_2024160 +_0805B9D8: + ldr r0, _0805BA0C + ldr r0, [r0] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _0805BA10 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BA14 + str r1, [r0] + ldrh r1, [r4] + ldr r2, [r7] + adds r0, r6, #0 + bl sub_0817DFA8 +_0805BA00: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805BA0C: .4byte gUnknown_2024174 +_0805BA10: .4byte gUnknown_3005AC0 +_0805BA14: .4byte sub_0805BA18 + thumb_func_end sub_0805B8C4 + + thumb_func_start sub_0805BA18 +sub_0805BA18: @ 0x0805BA18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _0805BA64 + ldr r6, _0805BA68 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _0805BA6C + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _0805BAB0 + cmp r2, #1 + bgt _0805BA70 + cmp r2, #0 + beq _0805BA7A + b _0805BB8C + .align 2, 0 +_0805BA64: .4byte gUnknown_2022D08 +_0805BA68: .4byte gUnknown_2023D08 +_0805BA6C: .4byte gUnknown_2024174 +_0805BA70: + cmp r2, #2 + beq _0805BADA + cmp r2, #3 + beq _0805BB50 + b _0805BB8C +_0805BA7A: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _0805BA9C + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0805BA9C: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0805BB8C +_0805BAB0: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805BB8C + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _0805BB8C +_0805BADA: + ldr r0, _0805BB40 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0805BB44 + ldrb r0, [r0] + cmp r0, #0 + bne _0805BB8C + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805BB28 + mov r0, r8 + cmp r0, #1 + bhi _0805BB28 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0805BB28: + ldr r0, _0805BB48 + ldr r2, [r0] + ldr r0, _0805BB4C + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _0805BB8C + .align 2, 0 +_0805BB40: .4byte gUnknown_2038098 +_0805BB44: .4byte gUnknown_203809D +_0805BB48: .4byte gUnknown_2024174 +_0805BB4C: .4byte gUnknown_2023D08 +_0805BB50: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0805BB8C + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_0805709C +_0805BB8C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805BA18 + + thumb_func_start sub_0805BB9C +sub_0805BB9C: @ 0x0805BB9C + push {r4, r5, lr} + ldr r0, _0805BBE0 + movs r1, #0 + strh r1, [r0] + ldr r0, _0805BBE4 + strh r1, [r0] + ldr r5, _0805BBE8 + ldrb r4, [r5] + lsls r4, r4, #9 + ldr r0, _0805BBEC + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_0814E184 + ldr r0, _0805BBF0 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0805BBF4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BBF8 + str r1, [r0] + ldrh r0, [r4] + bl sub_0817C808 + ldrb r0, [r5] + ldrh r1, [r4] + bl sub_081A53D4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805BBE0: .4byte gUnknown_2022AC8 +_0805BBE4: .4byte gUnknown_2022ACA +_0805BBE8: .4byte gUnknown_2023D08 +_0805BBEC: .4byte gUnknown_2022D0A +_0805BBF0: .4byte gUnknown_2022AE0 +_0805BBF4: .4byte gUnknown_3005AC0 +_0805BBF8: .4byte sub_080593C4 + thumb_func_end sub_0805BB9C + + thumb_func_start sub_0805BBFC +sub_0805BBFC: @ 0x0805BBFC + push {lr} + ldr r0, _0805BC14 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BC18 + bl sub_0805BB9C + b _0805BC1C + .align 2, 0 +_0805BC14: .4byte gUnknown_2023D08 +_0805BC18: + bl sub_0805709C +_0805BC1C: + pop {r0} + bx r0 + thumb_func_end sub_0805BBFC + + thumb_func_start sub_0805BC20 +sub_0805BC20: @ 0x0805BC20 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0805BC46 + ldr r0, _0805BC4C + strh r1, [r0] + ldr r1, _0805BC50 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _0805BC54 + ldr r0, _0805BC58 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BC5C + str r1, [r0] +_0805BC46: + pop {r0} + bx r0 + .align 2, 0 +_0805BC4C: .4byte gUnknown_2022AC8 +_0805BC50: .4byte gUnknown_2022ACA +_0805BC54: .4byte gUnknown_3005AC0 +_0805BC58: .4byte gUnknown_2023D08 +_0805BC5C: .4byte sub_08057198 + thumb_func_end sub_0805BC20 + + thumb_func_start sub_0805BC60 +sub_0805BC60: @ 0x0805BC60 + push {r4, lr} + ldr r1, _0805BCB0 + ldr r0, _0805BCB4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BCB8 + str r1, [r0] + bl sub_0817F154 + ldr r0, _0805BCBC + movs r1, #2 + bl sub_0814FA04 + movs r4, #0 +_0805BC7E: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08059910 + adds r4, #1 + cmp r4, #3 + ble _0805BC7E + ldr r1, _0805BCC0 + ldr r0, _0805BCB4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + ldr r0, _0805BCC4 + bl sub_0814E7A0 + ldr r0, _0805BCC8 + movs r1, #1 + bl sub_0814FA04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805BCB0: .4byte gUnknown_3005AC0 +_0805BCB4: .4byte gUnknown_2023D08 +_0805BCB8: .4byte sub_0805BC20 +_0805BCBC: .4byte gUnknown_85ABB72 +_0805BCC0: .4byte gUnknown_2024150 +_0805BCC4: .4byte gUnknown_85ABB43 +_0805BCC8: .4byte gUnknown_2022AE0 + thumb_func_end sub_0805BC60 + + thumb_func_start sub_0805BCCC +sub_0805BCCC: @ 0x0805BCCC + push {r4, lr} + sub sp, #4 + ldr r4, _0805BD10 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0805BD24 + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _0805BD14 + movs r1, #0xc + bl sub_0814FA04 + ldr r1, _0805BD18 + movs r0, #1 + strb r0, [r1] + movs r0, #1 + bl sub_08056784 + ldr r1, _0805BD1C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BD20 + str r1, [r0] + b _0805BD28 + .align 2, 0 +_0805BD10: .4byte gUnknown_2023D08 +_0805BD14: .4byte gUnknown_85ABBC9 +_0805BD18: .4byte gUnknown_3005AD4 +_0805BD1C: .4byte gUnknown_3005AC0 +_0805BD20: .4byte sub_080595E4 +_0805BD24: + bl sub_0805709C +_0805BD28: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0805BCCC + + thumb_func_start sub_0805BD30 +sub_0805BD30: @ 0x0805BD30 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0805BD5A + ldr r0, _0805BD60 + strh r1, [r0] + ldr r1, _0805BD64 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _0805BD68 + ldr r0, _0805BD6C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BD70 + str r1, [r0] +_0805BD5A: + pop {r0} + bx r0 + .align 2, 0 +_0805BD60: .4byte gUnknown_2022AC8 +_0805BD64: .4byte gUnknown_2022ACA +_0805BD68: .4byte gUnknown_3005AC0 +_0805BD6C: .4byte gUnknown_2023D08 +_0805BD70: .4byte sub_0805780C + thumb_func_end sub_0805BD30 + + thumb_func_start sub_0805BD74 +sub_0805BD74: @ 0x0805BD74 + push {lr} + ldr r0, _0805BDB4 + ldrb r1, [r0] + ldr r0, _0805BDB8 + ldr r0, [r0] + adds r1, r1, r0 + movs r0, #0xa6 + lsls r0, r0, #2 + adds r1, r1, r0 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BDB0 + ldr r1, _0805BDBC + ldr r0, _0805BDC0 + ldr r0, [r0] + str r0, [r1] + bl sub_0805CDB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + bl sub_0805709C +_0805BDB0: + pop {r0} + bx r0 + .align 2, 0 +_0805BDB4: .4byte gUnknown_2023D08 +_0805BDB8: .4byte gUnknown_2024140 +_0805BDBC: .4byte gUnknown_203B9FC +_0805BDC0: .4byte gUnknown_3005AE0 + thumb_func_end sub_0805BD74 + + thumb_func_start sub_0805BDC4 +sub_0805BDC4: @ 0x0805BDC4 + push {lr} + ldr r0, _0805BDF4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0805BE08 + ldr r2, _0805BDF8 + ldrb r0, [r2] + ldr r1, _0805BDFC + ldr r1, [r1] + adds r0, r0, r1 + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] + ldr r1, _0805BE00 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BE04 + b _0805BE18 + .align 2, 0 +_0805BDF4: .4byte gUnknown_2022C90 +_0805BDF8: .4byte gUnknown_2023D08 +_0805BDFC: .4byte gUnknown_2024140 +_0805BE00: .4byte gUnknown_3005AC0 +_0805BE04: .4byte sub_0805BD74 +_0805BE08: + bl sub_0805BE2C + ldr r1, _0805BE20 + ldr r0, _0805BE24 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BE28 +_0805BE18: + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0805BE20: .4byte gUnknown_3005AC0 +_0805BE24: .4byte gUnknown_2023D08 +_0805BE28: .4byte sub_0805BD30 + thumb_func_end sub_0805BDC4 + + thumb_func_start sub_0805BE2C +sub_0805BE2C: @ 0x0805BE2C + push {lr} + bl sub_080596BC + ldr r1, _0805BE58 + movs r0, #0xff + strb r0, [r1] + ldr r1, _0805BE5C + ldr r0, _0805BE60 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_0805983C + bl sub_08059734 + bl sub_0805976C + bl sub_080597E0 + pop {r0} + bx r0 + .align 2, 0 +_0805BE58: .4byte gUnknown_3005AD4 +_0805BE5C: .4byte gUnknown_2024154 +_0805BE60: .4byte gUnknown_2023D08 + thumb_func_end sub_0805BE2C + + thumb_func_start sub_0805BE64 +sub_0805BE64: @ 0x0805BE64 + push {r4, r5, lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0805BEB0 + ldr r2, _0805BEB4 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805BEB8 + str r1, [r0] + ldr r1, _0805BEBC + ldrb r0, [r2] + strb r0, [r1] + movs r3, #0 + ldr r5, _0805BEC0 + ldr r4, _0805BEC4 +_0805BE92: + adds r0, r3, r5 + ldrb r1, [r2] + lsls r1, r1, #9 + adds r1, #1 + adds r1, r3, r1 + adds r1, r1, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, #2 + ble _0805BE92 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805BEB0: .4byte gUnknown_3005AC0 +_0805BEB4: .4byte gUnknown_2023D08 +_0805BEB8: .4byte sub_080594B4 +_0805BEBC: .4byte gUnknown_202415C +_0805BEC0: .4byte gUnknown_203CBCC +_0805BEC4: .4byte gUnknown_2022D08 + thumb_func_end sub_0805BE64 + + thumb_func_start sub_0805BEC8 +sub_0805BEC8: @ 0x0805BEC8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r3, #0 + ldr r0, _0805BF38 + mov ip, r0 + ldr r1, _0805BF3C + mov r8, r1 + ldr r2, _0805BF40 + ldr r7, _0805BF44 + mov r6, ip + mov r5, r8 + adds r4, r2, #0 +_0805BEE4: + adds r0, r3, r6 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r1, #4 + adds r1, r3, r1 + adds r1, r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, #2 + ble _0805BEE4 + ldr r0, [r7] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _0805BF4C + ldrb r3, [r2] + lsls r0, r3, #9 + mov r1, r8 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #2 + beq _0805BF4C + ldr r1, _0805BF48 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrb r1, [r0] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + mov r2, ip + bl sub_08033FDC + bl sub_0805709C + b _0805BFD8 + .align 2, 0 +_0805BF38: .4byte gUnknown_203CBCC +_0805BF3C: .4byte gUnknown_2022D08 +_0805BF40: .4byte gUnknown_2023D08 +_0805BF44: .4byte gUnknown_2022C90 +_0805BF48: .4byte gUnknown_2023D12 +_0805BF4C: + ldr r0, _0805BFE4 + movs r1, #0xff + bl sub_080A8878 + ldr r3, _0805BFE8 + ldr r4, _0805BFEC + ldrb r1, [r4] + adds r1, r1, r3 + movs r2, #0 + mov r8, r2 + strb r0, [r1] + ldr r5, _0805BFF0 + ldrb r2, [r4] + adds r3, r2, r3 + ldrb r0, [r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldr r5, _0805BFF4 + lsls r2, r2, #9 + adds r6, r5, #1 + adds r2, r2, r6 + ldrb r2, [r2] + movs r0, #0xf + ands r0, r2 + strh r0, [r1, #8] + ldr r3, _0805BFF8 + ldr r1, [r3] + adds r1, #0x49 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r6 + ldrb r0, [r0] + lsrs r0, r0, #4 + strb r0, [r1] + ldr r2, [r3] + adds r2, #0x8b + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, r5, #2 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, [r3] + adds r1, #0xb0 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r5, #3 + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + mov r1, r8 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0805BFFC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C000 + str r1, [r0] + ldr r1, _0805C004 + ldrb r0, [r4] + strb r0, [r1] +_0805BFD8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805BFE4: .4byte sub_080A8A40 +_0805BFE8: .4byte gUnknown_3005ADC +_0805BFEC: .4byte gUnknown_2023D08 +_0805BFF0: .4byte gUnknown_3005B60 +_0805BFF4: .4byte gUnknown_2022D08 +_0805BFF8: .4byte gUnknown_2024140 +_0805BFFC: .4byte gUnknown_3005AC0 +_0805C000: .4byte sub_080593DC +_0805C004: .4byte gUnknown_202415C + thumb_func_end sub_0805BEC8 + + thumb_func_start sub_0805C008 +sub_0805C008: @ 0x0805C008 + push {lr} + sub sp, #4 + bl sub_0805E67C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #2 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl sub_0805709C + add sp, #4 + pop {r0} + bx r0 + thumb_func_end sub_0805C008 + + thumb_func_start sub_0805C02C +sub_0805C02C: @ 0x0805C02C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _0805C0B4 + ldr r0, _0805C0B8 + mov sb, r0 + ldrb r1, [r0] + lsls r1, r1, #9 + adds r0, r3, #2 + adds r0, r1, r0 + ldrb r2, [r0] + adds r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + lsls r2, r2, #0x10 + asrs r7, r2, #0x10 + cmp r7, #0 + ble _0805C066 + ldr r1, _0805C0BC + ldr r0, [r1] + adds r0, r0, r7 + str r0, [r1] +_0805C066: + ldr r0, _0805C0C0 + cmp r7, r0 + beq _0805C0D0 + ldr r6, _0805C0C4 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0805C0C8 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _0805C0CC + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _0805C10E + .align 2, 0 +_0805C0B4: .4byte gUnknown_2022D08 +_0805C0B8: .4byte gUnknown_2023D08 +_0805C0BC: .4byte gUnknown_203CA3C +_0805C0C0: .4byte 0x00007FFF +_0805C0C4: .4byte gUnknown_2023D12 +_0805C0C8: .4byte gUnknown_2024190 +_0805C0CC: .4byte gUnknown_3005AD0 +_0805C0D0: + ldr r1, _0805C12C + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805C130 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r4, _0805C134 + adds r1, r0, r4 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C + mov r2, sb + ldrb r0, [r2] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + movs r2, #0 + bl sub_080726F4 +_0805C10E: + ldr r1, _0805C138 + ldr r0, _0805C13C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C140 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805C12C: .4byte gUnknown_2023D12 +_0805C130: .4byte gUnknown_2024190 +_0805C134: .4byte gUnknown_3005AD0 +_0805C138: .4byte gUnknown_3005AC0 +_0805C13C: .4byte gUnknown_2023D08 +_0805C140: .4byte sub_08058D40 + thumb_func_end sub_0805C02C + + thumb_func_start sub_0805C144 +sub_0805C144: @ 0x0805C144 + push {r4, r5, r6, r7, lr} + ldr r5, _0805C170 + ldr r6, _0805C174 + ldrb r0, [r6] + lsls r0, r0, #9 + adds r1, r5, #1 + adds r0, r0, r1 + ldrb r7, [r0] + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _0805C178 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x63 + bls _0805C17C + bl sub_0805709C + b _0805C1C8 + .align 2, 0 +_0805C170: .4byte gUnknown_2022D08 +_0805C174: .4byte gUnknown_2023D08 +_0805C178: .4byte gUnknown_2024190 +_0805C17C: + movs r0, #1 + bl sub_0805DDD4 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldrb r1, [r6] + lsls r1, r1, #9 + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, #3 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + ldr r0, _0805C1D0 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0805C1D4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r7, [r1, #8] + strh r4, [r1, #0xa] + ldrb r0, [r6] + strh r0, [r1, #0xc] + ldr r1, _0805C1D8 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C1DC + str r1, [r0] +_0805C1C8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805C1D0: .4byte sub_08058DC8 +_0805C1D4: .4byte gUnknown_3005B60 +_0805C1D8: .4byte gUnknown_3005AC0 +_0805C1DC: .4byte sub_08057068 + thumb_func_end sub_0805C144 + + thumb_func_start sub_0805C1E0 +sub_0805C1E0: @ 0x0805C1E0 + push {r4, lr} + ldr r4, _0805C23C + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805C234 + ldr r0, _0805C240 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0805C244 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805C248 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _0805C24C + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0805C250 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C254 + str r1, [r0] +_0805C234: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C23C: .4byte gUnknown_2023D08 +_0805C240: .4byte gUnknown_3005AD0 +_0805C244: .4byte gUnknown_2023D12 +_0805C248: .4byte gUnknown_2024190 +_0805C24C: .4byte gUnknown_2024174 +_0805C250: .4byte gUnknown_3005AC0 +_0805C254: .4byte sub_0805997C + thumb_func_end sub_0805C1E0 + + thumb_func_start sub_0805C258 +sub_0805C258: @ 0x0805C258 + push {r4, r5, lr} + ldr r5, _0805C2B0 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805C2A8 + ldr r4, _0805C2B4 + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _0805C2B8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C2BC + str r1, [r0] +_0805C2A8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C2B0: .4byte gUnknown_2023D08 +_0805C2B4: .4byte gUnknown_2022D08 +_0805C2B8: .4byte gUnknown_3005AC0 +_0805C2BC: .4byte sub_0805997C + thumb_func_end sub_0805C258 + + thumb_func_start sub_0805C2C0 +sub_0805C2C0: @ 0x0805C2C0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r0, _0805C31C + mov r8, r0 + ldr r4, _0805C320 + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0805C324 + adds r0, r0, r5 + movs r1, #0x37 + bl sub_0806A058 + ldr r2, _0805C328 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + eors r0, r1 + mov r1, sp + strb r0, [r1] + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + bl sub_0805709C + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805C31C: .4byte gUnknown_2023D12 +_0805C320: .4byte gUnknown_2023D08 +_0805C324: .4byte gUnknown_2024190 +_0805C328: .4byte gUnknown_2022D08 + thumb_func_end sub_0805C2C0 + + thumb_func_start sub_0805C32C +sub_0805C32C: @ 0x0805C32C + push {lr} + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C32C + + thumb_func_start sub_0805C338 +sub_0805C338: @ 0x0805C338 + push {r4, r5, lr} + ldr r3, _0805C39C + ldr r0, _0805C3A0 + ldrb r2, [r0] + lsls r2, r2, #9 + adds r0, r3, #1 + adds r0, r2, r0 + ldrb r5, [r0] + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r5, r0 + adds r0, r3, #3 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, r0, #0x10 + orrs r5, r0 + adds r0, r3, #4 + adds r0, r2, r0 + ldrb r4, [r0] + lsls r4, r4, #0x18 + adds r0, r3, #5 + adds r0, r2, r0 + ldrb r1, [r0] + adds r0, r3, #6 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + adds r3, #7 + adds r2, r2, r3 + orrs r5, r4 + lsrs r4, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #5 + cmp r4, r0 + bhi _0805C3A8 + ldr r0, _0805C3A4 + str r2, [r0] + str r5, [r0, #4] + lsrs r1, r1, #0x11 + movs r2, #0x80 + lsls r2, r2, #0x18 + orrs r1, r2 + str r1, [r0, #8] + ldr r0, [r0, #8] + b _0805C3D4 + .align 2, 0 +_0805C39C: .4byte gUnknown_2022D08 +_0805C3A0: .4byte gUnknown_2023D08 +_0805C3A4: .4byte 0x040000D4 +_0805C3A8: + ldr r3, _0805C3E0 + str r2, [r3] + str r5, [r3, #4] + ldr r0, _0805C3E4 + str r0, [r3, #8] + ldr r0, [r3, #8] + movs r0, #0x80 + lsls r0, r0, #5 + adds r2, r2, r0 + adds r5, r5, r0 + ldr r1, _0805C3E8 + adds r4, r4, r1 + cmp r4, r0 + bhi _0805C3A8 + str r2, [r3] + str r5, [r3, #4] + lsrs r0, r4, #1 + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r3, #8] + ldr r0, [r3, #8] +_0805C3D4: + bl sub_0805709C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C3E0: .4byte 0x040000D4 +_0805C3E4: .4byte 0x80000800 +_0805C3E8: .4byte 0xFFFFF000 + thumb_func_end sub_0805C338 + + thumb_func_start sub_0805C3EC +sub_0805C3EC: @ 0x0805C3EC + push {lr} + ldr r2, _0805C414 + ldr r0, _0805C418 + ldrb r1, [r0] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C414: .4byte gUnknown_2022D08 +_0805C418: .4byte gUnknown_2023D08 + thumb_func_end sub_0805C3EC + + thumb_func_start sub_0805C41C +sub_0805C41C: @ 0x0805C41C + push {lr} + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C41C + + thumb_func_start sub_0805C428 +sub_0805C428: @ 0x0805C428 + push {lr} + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08033FB0 + bl sub_0805709C + pop {r0} + bx r0 + thumb_func_end sub_0805C428 + + thumb_func_start sub_0805C43C +sub_0805C43C: @ 0x0805C43C + push {lr} + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08033FDC + bl sub_0805709C + pop {r0} + bx r0 + thumb_func_end sub_0805C43C + + thumb_func_start sub_0805C450 +sub_0805C450: @ 0x0805C450 + push {lr} + movs r0, #1 + movs r1, #0 + bl sub_08034014 + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C450 + + thumb_func_start sub_0805C464 +sub_0805C464: @ 0x0805C464 + push {lr} + movs r0, #1 + movs r1, #0 + bl sub_08034040 + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C464 + + thumb_func_start sub_0805C478 +sub_0805C478: @ 0x0805C478 + push {lr} + ldr r2, _0805C490 + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C490: .4byte gUnknown_20229C0 + thumb_func_end sub_0805C478 + + thumb_func_start sub_0805C494 +sub_0805C494: @ 0x0805C494 + push {lr} + ldr r3, _0805C4C0 + ldr r1, _0805C4C4 + ldr r0, _0805C4C8 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C4C0: .4byte gUnknown_20229C0 +_0805C4C4: .4byte gUnknown_2022D08 +_0805C4C8: .4byte gUnknown_2023D08 + thumb_func_end sub_0805C494 + + thumb_func_start sub_0805C4CC +sub_0805C4CC: @ 0x0805C4CC + push {lr} + ldr r2, _0805C4E0 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C4E0: .4byte gUnknown_20229C0 + thumb_func_end sub_0805C4CC + + thumb_func_start sub_0805C4E4 +sub_0805C4E4: @ 0x0805C4E4 + push {lr} + ldr r3, _0805C508 + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C508: .4byte gUnknown_20229C0 + thumb_func_end sub_0805C4E4 + + thumb_func_start sub_0805C50C +sub_0805C50C: @ 0x0805C50C + push {r4, lr} + ldr r3, _0805C534 + ldr r2, _0805C538 + ldr r4, _0805C53C + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0805C540 + bl sub_0805709C + b _0805C56A + .align 2, 0 +_0805C534: .4byte gUnknown_20205AC +_0805C538: .4byte gUnknown_2023E88 +_0805C53C: .4byte gUnknown_2023D08 +_0805C540: + ldr r1, _0805C570 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _0805C574 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C578 + str r1, [r0] +_0805C56A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C570: .4byte gUnknown_202415D +_0805C574: .4byte gUnknown_3005AC0 +_0805C578: .4byte sub_08059568 + thumb_func_end sub_0805C50C + + thumb_func_start sub_0805C57C +sub_0805C57C: @ 0x0805C57C + push {lr} + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C57C + + thumb_func_start sub_0805C588 +sub_0805C588: @ 0x0805C588 + push {r4, lr} + ldr r4, _0805C5C4 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _0805C59C + movs r3, #0xc0 +_0805C59C: + ldr r2, _0805C5C8 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_0805709C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805C5C4: .4byte gUnknown_2023D08 +_0805C5C8: .4byte gUnknown_2022D08 + thumb_func_end sub_0805C588 + + thumb_func_start sub_0805C5CC +sub_0805C5CC: @ 0x0805C5CC + push {r4, r5, lr} + ldr r4, _0805C600 + ldr r5, _0805C604 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0805C608 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _0805C61C + .align 2, 0 +_0805C600: .4byte gUnknown_2022D08 +_0805C604: .4byte gUnknown_2023D08 +_0805C608: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_0805C61C: + bl sub_0805709C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805C5CC + + thumb_func_start sub_0805C628 +sub_0805C628: @ 0x0805C628 + push {lr} + ldr r1, _0805C65C + ldr r0, _0805C660 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805C664 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + rsbs r1, r1, #0 + movs r2, #5 + bl sub_080A2BAC + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C65C: .4byte gUnknown_2023D12 +_0805C660: .4byte gUnknown_2023D08 +_0805C664: .4byte gUnknown_2024190 + thumb_func_end sub_0805C628 + + thumb_func_start sub_0805C668 +sub_0805C668: @ 0x0805C668 + push {lr} + ldr r1, _0805C690 + ldr r0, _0805C694 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _0805C698 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805C690: .4byte gUnknown_2022D08 +_0805C694: .4byte gUnknown_2023D08 +_0805C698: .4byte gUnknown_20240A0 + thumb_func_end sub_0805C668 + + thumb_func_start sub_0805C69C +sub_0805C69C: @ 0x0805C69C + push {r4, r5, r6, r7, lr} + ldr r6, _0805C7DC + ldr r7, _0805C7E0 + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0805C7E4 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0805C7E8 + strh r1, [r0, #0x32] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0805C7EC + str r1, [r0] + ldrb r2, [r7] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x38] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0805C7F0 + bl sub_080A5B9C + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0805C7F4 + bl sub_080084EC + adds r4, r0, #0 + lsls r4, r4, #0x18 + ldr r1, _0805C7F8 + ldr r0, _0805C7FC + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + lsrs r4, r4, #0x14 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #5] + ldr r0, _0805C800 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0805C804 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r7] + strh r0, [r1, #8] + ldr r3, _0805C808 + ldr r0, [r3] + ldrb r2, [r7] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805C7BE + ldr r0, _0805C80C + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _0805C810 + str r1, [r0] +_0805C7BE: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _0805C814 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C818 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805C7DC: .4byte gUnknown_2023E88 +_0805C7E0: .4byte gUnknown_2023D08 +_0805C7E4: .4byte gUnknown_20205AC +_0805C7E8: .4byte 0x0000FFD8 +_0805C7EC: .4byte sub_080A67B4 +_0805C7F0: .4byte sub_0805C81C +_0805C7F4: .4byte 0x0000D6F8 +_0805C7F8: .4byte gUnknown_82D961C +_0805C7FC: .4byte gUnknown_3005AF0 +_0805C800: .4byte sub_0805C884 +_0805C804: .4byte gUnknown_3005B60 +_0805C808: .4byte gUnknown_2024174 +_0805C80C: .4byte gUnknown_2024158 +_0805C810: .4byte sub_0807352C +_0805C814: .4byte gUnknown_3005AC0 +_0805C818: .4byte sub_08057068 + thumb_func_end sub_0805C69C + + thumb_func_start sub_0805C81C +sub_0805C81C: @ 0x0805C81C + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r4, [r5, #0x38] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800730C + ldrb r0, [r5, #5] + lsrs r0, r0, #4 + bl sub_08008554 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008564 + adds r0, r5, #0 + bl sub_08006E00 + ldr r1, _0805C874 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805C878 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0805D998 + ldr r0, _0805C87C + adds r4, r4, r0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805C880 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805C874: .4byte gUnknown_2023D12 +_0805C878: .4byte gUnknown_2024190 +_0805C87C: .4byte gUnknown_2023E88 +_0805C880: .4byte gUnknown_20205AC + thumb_func_end sub_0805C81C + + thumb_func_start sub_0805C884 +sub_0805C884: @ 0x0805C884 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0805C8AC + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0x1e + bgt _0805C8B0 + adds r0, r2, #1 + strh r0, [r1, #0xa] + b _0805C96C + .align 2, 0 +_0805C8AC: .4byte gUnknown_3005B60 +_0805C8B0: + ldr r7, _0805C8F0 + ldrb r0, [r7] + mov sb, r0 + ldrh r0, [r1, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805C8D0 + ldr r0, _0805C8F4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0805C900 +_0805C8D0: + ldr r0, _0805C8F8 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _0805C8FC + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_0805AE74 + b _0805C954 + .align 2, 0 +_0805C8F0: .4byte gUnknown_2023D08 +_0805C8F4: .4byte gUnknown_2022C90 +_0805C8F8: .4byte gUnknown_2022D08 +_0805C8FC: .4byte gUnknown_2023D12 +_0805C900: + ldr r4, _0805C978 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r5, _0805C97C + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_0805AE74 + ldrb r0, [r7] + movs r6, #2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r5 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0805C980 + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r7] + movs r1, #0 + bl sub_0805AE74 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_0805C954: + ldr r1, _0805C984 + ldr r2, _0805C988 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805C98C + str r1, [r0] + mov r3, sb + strb r3, [r2] + mov r0, r8 + bl sub_080A8964 +_0805C96C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805C978: .4byte gUnknown_2022D08 +_0805C97C: .4byte gUnknown_2023D12 +_0805C980: .4byte gUnknown_2024190 +_0805C984: .4byte gUnknown_3005AC0 +_0805C988: .4byte gUnknown_2023D08 +_0805C98C: .4byte sub_08058750 + thumb_func_end sub_0805C884 + + thumb_func_start sub_0805C990 +sub_0805C990: @ 0x0805C990 + push {r4, r5, r6, lr} + ldr r1, _0805C9B8 + ldr r0, _0805C9BC + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0805C9C0 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805C9C0 + bl sub_0805709C + b _0805CA34 + .align 2, 0 +_0805C9B8: .4byte gUnknown_2022D08 +_0805C9BC: .4byte gUnknown_2023D08 +_0805C9C0: + ldr r6, _0805CA3C + ldr r0, [r6] + ldr r5, _0805CA40 + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _0805CA44 + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _0805CA48 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0805CA28 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_0805CA28: + ldr r0, _0805CA4C + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0805CA50 + str r0, [r1] +_0805CA34: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CA3C: .4byte gUnknown_2024174 +_0805CA40: .4byte gUnknown_2023D08 +_0805CA44: .4byte gUnknown_2022D0C +_0805CA48: .4byte gUnknown_2024158 +_0805CA4C: .4byte gUnknown_3005AC0 +_0805CA50: .4byte sub_0805CA54 + thumb_func_end sub_0805C990 + + thumb_func_start sub_0805CA54 +sub_0805CA54: @ 0x0805CA54 + push {r4, lr} + ldr r4, _0805CA94 + ldr r0, [r4] + ldr r3, _0805CA98 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _0805CA8C + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_0805709C +_0805CA8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CA94: .4byte gUnknown_2024174 +_0805CA98: .4byte gUnknown_2023D08 + thumb_func_end sub_0805CA54 + + thumb_func_start sub_0805CA9C +sub_0805CA9C: @ 0x0805CA9C + push {lr} + ldr r0, _0805CAD8 + ldr r1, [r0] + ldr r0, _0805CADC + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805CACE + ldr r2, _0805CAE0 + ldr r0, _0805CAE4 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0805CAE8 + str r1, [r0] +_0805CACE: + bl sub_0805709C + pop {r0} + bx r0 + .align 2, 0 +_0805CAD8: .4byte gUnknown_2024174 +_0805CADC: .4byte gUnknown_2023D08 +_0805CAE0: .4byte gUnknown_3005B60 +_0805CAE4: .4byte gUnknown_2024158 +_0805CAE8: .4byte sub_0807352C + thumb_func_end sub_0805CA9C + + thumb_func_start sub_0805CAEC +sub_0805CAEC: @ 0x0805CAEC + push {r4, lr} + ldr r4, _0805CB0C + ldrb r0, [r4] + movs r1, #1 + bl sub_0803998C + ldrb r0, [r4] + movs r1, #0 + bl sub_0803998C + bl sub_0805709C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CB0C: .4byte gUnknown_2023D08 + thumb_func_end sub_0805CAEC + + thumb_func_start sub_0805CB10 +sub_0805CB10: @ 0x0805CB10 + push {r4, lr} + ldr r4, _0805CB60 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805CB56 + ldr r3, _0805CB64 + ldr r0, _0805CB68 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _0805CB6C + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_0805CB56: + bl sub_0805709C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CB60: .4byte gUnknown_2023D08 +_0805CB64: .4byte gUnknown_20205AC +_0805CB68: .4byte gUnknown_2023E88 +_0805CB6C: .4byte gUnknown_2022D08 + thumb_func_end sub_0805CB10 + + thumb_func_start sub_0805CB70 +sub_0805CB70: @ 0x0805CB70 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _0805CBB8 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805CBD2 + ldr r4, _0805CBBC + ldrb r2, [r5] + lsls r1, r2, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r6, [r0] + adds r0, r4, #2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r4, #3 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + str r3, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + adds r3, r6, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805CBC0 + bl sub_0805709C + b _0805CBCC + .align 2, 0 +_0805CBB8: .4byte gUnknown_2023D08 +_0805CBBC: .4byte gUnknown_2022D08 +_0805CBC0: + ldr r0, _0805CBDC + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0805CBE0 + str r0, [r1] +_0805CBCC: + adds r0, r6, #0 + bl sub_0817E1D8 +_0805CBD2: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805CBDC: .4byte gUnknown_3005AC0 +_0805CBE0: .4byte sub_080599AC + thumb_func_end sub_0805CB70 + + thumb_func_start sub_0805CBE4 +sub_0805CBE4: @ 0x0805CBE4 + push {r4, r5, lr} + ldr r5, _0805CC0C + ldrb r0, [r5] + lsls r0, r0, #9 + ldr r4, _0805CC10 + adds r0, r0, r4 + bl sub_08185008 + ldrb r0, [r5] + lsls r0, r0, #9 + subs r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #1 + beq _0805CC1E + cmp r0, #1 + bgt _0805CC14 + cmp r0, #0 + beq _0805CC1A + b _0805CC3C + .align 2, 0 +_0805CC0C: .4byte gUnknown_2023D08 +_0805CC10: .4byte gUnknown_2022D0A +_0805CC14: + cmp r0, #2 + beq _0805CC38 + b _0805CC3C +_0805CC1A: + bl sub_080599DC +_0805CC1E: + ldr r4, _0805CC34 + ldrb r0, [r4] + movs r1, #1 + bl sub_0803998C + ldrb r0, [r4] + movs r1, #0 + bl sub_0803998C + b _0805CC3C + .align 2, 0 +_0805CC34: .4byte gUnknown_2023D08 +_0805CC38: + bl sub_080599DC +_0805CC3C: + bl sub_0805709C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805CBE4 + + thumb_func_start sub_0805CC48 +sub_0805CC48: @ 0x0805CC48 + push {r4, lr} + ldr r1, _0805CC68 + ldr r4, _0805CC6C + ldrb r3, [r4] + lsls r0, r3, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r2, [r0] + cmp r2, #1 + beq _0805CC90 + cmp r2, #1 + bgt _0805CC70 + cmp r2, #0 + beq _0805CC76 + b _0805CCA0 + .align 2, 0 +_0805CC68: .4byte gUnknown_2022D08 +_0805CC6C: .4byte gUnknown_2023D08 +_0805CC70: + cmp r2, #2 + beq _0805CC98 + b _0805CCA0 +_0805CC76: + ldr r0, _0805CC88 + adds r0, r3, r0 + strb r2, [r0] + ldr r1, _0805CC8C + ldrb r0, [r4] + adds r0, r0, r1 + strb r2, [r0] + b _0805CCA0 + .align 2, 0 +_0805CC88: .4byte gUnknown_2024150 +_0805CC8C: .4byte gUnknown_2024154 +_0805CC90: + ldr r0, _0805CC94 + b _0805CC9A + .align 2, 0 +_0805CC94: .4byte gUnknown_2024150 +_0805CC98: + ldr r0, _0805CCAC +_0805CC9A: + adds r0, r3, r0 + movs r1, #0 + strb r1, [r0] +_0805CCA0: + bl sub_0805709C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CCAC: .4byte gUnknown_2024154 + thumb_func_end sub_0805CC48 + + thumb_func_start sub_0805CCB0 +sub_0805CCB0: @ 0x0805CCB0 + push {r4, r5, lr} + ldr r5, _0805CD14 + ldrb r0, [r5] + lsls r0, r0, #9 + ldr r4, _0805CD18 + adds r0, r0, r4 + bl sub_08185008 + ldr r2, _0805CD1C + ldrb r0, [r5] + lsls r0, r0, #9 + subs r1, r4, #3 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0805CD20 + ldr r3, [r0] + ldrb r0, [r5] + lsls r0, r0, #9 + subs r4, #2 + adds r0, r0, r4 + ldrb r0, [r0] + ldr r1, _0805CD24 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_0805709C + ldr r1, _0805CD28 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805CD2C + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CD14: .4byte gUnknown_2023D08 +_0805CD18: .4byte gUnknown_2022D0C +_0805CD1C: .4byte gUnknown_2023FDE +_0805CD20: .4byte gUnknown_3005AF0 +_0805CD24: .4byte 0x00000CA9 +_0805CD28: .4byte gUnknown_3005AC0 +_0805CD2C: .4byte sub_080583C0 + thumb_func_end sub_0805CCB0 + + thumb_func_start sub_0805CD30 +sub_0805CD30: @ 0x0805CD30 + bx lr + .align 2, 0 + thumb_func_end sub_0805CD30 + + thumb_func_start sub_0805CD34 +sub_0805CD34: @ 0x0805CD34 + push {r4, lr} + ldr r4, _0805CD70 + movs r0, #0x10 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x10 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] + movs r0, #0x30 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #4] + movs r0, #0x10 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #8] + movs r0, #0x50 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805CD70: .4byte gUnknown_2024174 + thumb_func_end sub_0805CD34 + + thumb_func_start sub_0805CD74 +sub_0805CD74: @ 0x0805CD74 + push {r4, r5, lr} + ldr r5, _0805CDB4 + ldr r0, [r5] + cmp r0, #0 + beq _0805CDAE + ldr r0, [r0, #0xc] + bl sub_08000BF0 + ldr r0, [r5] + movs r4, #0 + str r4, [r0, #0xc] + ldr r0, [r0, #8] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #8] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #4] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0] + bl sub_08000BF0 + str r4, [r5] +_0805CDAE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805CDB4: .4byte gUnknown_2024174 + thumb_func_end sub_0805CD74 + + thumb_func_start sub_0805CDB8 +sub_0805CDB8: @ 0x0805CDB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #1 + rsbs r0, r0, #0 + mov sb, r0 + ldr r4, _0805CE18 + ldrb r0, [r4] + lsls r2, r0, #9 + ldr r1, _0805CE1C + adds r2, r2, r1 + mov sl, r2 + movs r1, #0 + movs r2, #0xff + bl sub_0803FB0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _0805CE20 + ldr r0, [r0] + adds r0, #0x92 + ldrb r1, [r0] + ldr r2, _0805CE24 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r4, r0, #0x1f + movs r0, #2 + ands r4, r0 + adds r6, r4, #0 + adds r5, r4, #2 + b _0805CE2A + .align 2, 0 +_0805CE18: .4byte gUnknown_2023D08 +_0805CE1C: .4byte gUnknown_2022D0C +_0805CE20: .4byte gUnknown_2024140 +_0805CE24: .4byte gUnknown_82FACB4 +_0805CE28: + adds r4, #1 +_0805CE2A: + cmp r4, r5 + bge _0805CE50 + ldr r0, _0805CF8C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + ldr r1, _0805CF90 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r4, r0 + ldr r2, _0805CF94 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, r7 + ble _0805CE28 +_0805CE50: + subs r7, r4, r6 + cmp r4, r5 + bne _0805CE58 + movs r7, #2 +_0805CE58: + movs r6, #0 + movs r4, #0 + mov r1, sl + ldrh r0, [r1] + cmp r0, #0 + beq _0805CE98 + mov r5, sl +_0805CE66: + ldrh r0, [r5] + bl sub_0805D0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r7, r0 + bne _0805CE8A + mov r0, sl + adds r0, #8 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0805CE8A + ldr r0, _0805CF98 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + orrs r6, r0 +_0805CE8A: + adds r5, #2 + adds r4, #1 + cmp r4, #3 + bgt _0805CE98 + ldrh r0, [r5] + cmp r0, #0 + bne _0805CE66 +_0805CE98: + cmp r6, #0 + beq _0805CEC8 + ldr r3, _0805CF9C + ldr r1, [r3] + adds r1, #0x92 + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, #0x92 + lsls r0, r6, #4 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_081309A4 + bl sub_08130BEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_0805CEC8: + movs r0, #1 + rsbs r0, r0, #0 + cmp sb, r0 + beq _0805CED2 + b _0805D028 +_0805CED2: + mov r2, r8 + cmp r2, #0xf + bne _0805CEDA + b _0805D006 +_0805CEDA: + movs r5, #0 + movs r6, #0 + ldr r7, _0805CF98 + mov r4, sl +_0805CEE2: + ldrh r0, [r4] + bl sub_0805D0C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805CEFA + ldr r0, [r7] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _0805CEFA + adds r5, #1 +_0805CEFA: + ldrh r0, [r4] + bl sub_0805D0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0805CF14 + ldr r0, [r7] + mov r2, r8 + ands r0, r2 + cmp r0, #0 + bne _0805CF14 + adds r5, #0x10 +_0805CF14: + ldrh r0, [r4] + bl sub_0805D0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0805CF32 + ldr r0, [r7] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _0805CF32 + movs r2, #0x80 + lsls r2, r2, #1 + adds r5, r5, r2 +_0805CF32: + adds r7, #4 + adds r4, #2 + ldr r0, _0805CF98 + adds r0, #0xc + cmp r7, r0 + ble _0805CEE2 + movs r1, #0xf + ands r1, r5 + cmp r1, #1 + ble _0805CF48 + adds r6, #1 +_0805CF48: + movs r0, #0xf0 + ands r0, r5 + cmp r0, #0x1f + ble _0805CF52 + adds r6, #1 +_0805CF52: + ldr r2, _0805CFA0 + cmp r0, r2 + ble _0805CF5A + adds r6, #1 +_0805CF5A: + cmp r6, #1 + bgt _0805CF62 + cmp r6, #0 + bne _0805CFA4 +_0805CF62: + ldr r5, _0805CF98 +_0805CF64: + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r4, r1, #0x10 + lsls r0, r4, #2 + adds r0, r0, r5 + ldr r0, [r0] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _0805CF82 + mov sb, r4 +_0805CF82: + movs r0, #1 + rsbs r0, r0, #0 + cmp sb, r0 + beq _0805CF64 + b _0805CFF0 + .align 2, 0 +_0805CF8C: .4byte gUnknown_2023D08 +_0805CF90: .4byte gUnknown_2023D70 +_0805CF94: .4byte gUnknown_82ECE18 +_0805CF98: .4byte gUnknown_82FACB4 +_0805CF9C: .4byte gUnknown_2024140 +_0805CFA0: .4byte 0x000001FF +_0805CFA4: + cmp r1, #1 + ble _0805CFAA + movs r6, #0 +_0805CFAA: + cmp r0, #0x1f + ble _0805CFB0 + movs r6, #1 +_0805CFB0: + cmp r0, r2 + ble _0805CFB6 + movs r6, #2 +_0805CFB6: + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r4, r1, #0x10 + ldr r1, _0805D01C + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + mov r2, r8 + ands r0, r2 + cmp r0, #0 + bne _0805CFE8 + lsls r0, r4, #1 + add r0, sl + ldrh r0, [r0] + bl sub_0805D0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _0805CFE8 + mov sb, r4 +_0805CFE8: + movs r0, #1 + rsbs r0, r0, #0 + cmp sb, r0 + beq _0805CFB6 +_0805CFF0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bls _0805D028 +_0805D006: + ldr r2, _0805D020 + ldr r0, _0805D024 + ldrb r1, [r0] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrb r0, [r1, #2] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #2] + movs r0, #0 + b _0805D0B2 + .align 2, 0 +_0805D01C: .4byte gUnknown_82FACB4 +_0805D020: .4byte gUnknown_2023FE0 +_0805D024: .4byte gUnknown_2023D08 +_0805D028: + mov r1, sb + lsls r0, r1, #1 + mov r2, sl + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0xae + bne _0805D050 + ldrb r0, [r2, #0x12] + movs r5, #0 + cmp r0, #7 + beq _0805D05E + ldrb r1, [r2, #0x13] + movs r0, #7 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r5, r0, #0x1f + movs r0, #0x10 + ands r5, r0 + b _0805D05E +_0805D050: + ldr r2, _0805D070 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r5, [r0, #6] +_0805D05E: + movs r0, #0x10 + ands r0, r5 + cmp r0, #0 + beq _0805D078 + ldr r0, _0805D074 + ldrb r0, [r0] + lsls r0, r0, #8 + b _0805D0A6 + .align 2, 0 +_0805D070: .4byte gUnknown_82ED220 +_0805D074: .4byte gUnknown_2023D08 +_0805D078: + cmp r5, #0 + bne _0805D08C + bl sub_0805D210 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, sb + orrs r2, r0 + mov sb, r2 + b _0805D0AC +_0805D08C: + ldr r0, _0805D0C0 + ldrb r0, [r0] + bl sub_080A630C + adds r1, r0, #0 + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 +_0805D0A6: + mov r1, sb + orrs r1, r0 + mov sb, r1 +_0805D0AC: + mov r2, sb + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 +_0805D0B2: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0805D0C0: .4byte gUnknown_2023D08 + thumb_func_end sub_0805CDB8 + + thumb_func_start sub_0805D0C4 +sub_0805D0C4: @ 0x0805D0C4 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _0805D0E8 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #6] + adds r3, r1, #0 + cmp r0, #0x40 + bls _0805D0DE + b _0805D20A +_0805D0DE: + lsls r0, r0, #2 + ldr r1, _0805D0EC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805D0E8: .4byte gUnknown_82ED220 +_0805D0EC: .4byte _0805D0F0 +_0805D0F0: @ jump table + .4byte _0805D1F4 @ case 0 + .4byte _0805D202 @ case 1 + .4byte _0805D1F4 @ case 2 + .4byte _0805D20A @ case 3 + .4byte _0805D1F4 @ case 4 + .4byte _0805D20A @ case 5 + .4byte _0805D20A @ case 6 + .4byte _0805D20A @ case 7 + .4byte _0805D1F4 @ case 8 + .4byte _0805D20A @ case 9 + .4byte _0805D20A @ case 10 + .4byte _0805D20A @ case 11 + .4byte _0805D20A @ case 12 + .4byte _0805D20A @ case 13 + .4byte _0805D20A @ case 14 + .4byte _0805D20A @ case 15 + .4byte _0805D206 @ case 16 + .4byte _0805D20A @ case 17 + .4byte _0805D20A @ case 18 + .4byte _0805D20A @ case 19 + .4byte _0805D20A @ case 20 + .4byte _0805D20A @ case 21 + .4byte _0805D20A @ case 22 + .4byte _0805D20A @ case 23 + .4byte _0805D20A @ case 24 + .4byte _0805D20A @ case 25 + .4byte _0805D20A @ case 26 + .4byte _0805D20A @ case 27 + .4byte _0805D20A @ case 28 + .4byte _0805D20A @ case 29 + .4byte _0805D20A @ case 30 + .4byte _0805D20A @ case 31 + .4byte _0805D1F4 @ case 32 + .4byte _0805D20A @ case 33 + .4byte _0805D20A @ case 34 + .4byte _0805D20A @ case 35 + .4byte _0805D20A @ case 36 + .4byte _0805D20A @ case 37 + .4byte _0805D20A @ case 38 + .4byte _0805D20A @ case 39 + .4byte _0805D20A @ case 40 + .4byte _0805D20A @ case 41 + .4byte _0805D20A @ case 42 + .4byte _0805D20A @ case 43 + .4byte _0805D20A @ case 44 + .4byte _0805D20A @ case 45 + .4byte _0805D20A @ case 46 + .4byte _0805D20A @ case 47 + .4byte _0805D20A @ case 48 + .4byte _0805D20A @ case 49 + .4byte _0805D20A @ case 50 + .4byte _0805D20A @ case 51 + .4byte _0805D20A @ case 52 + .4byte _0805D20A @ case 53 + .4byte _0805D20A @ case 54 + .4byte _0805D20A @ case 55 + .4byte _0805D20A @ case 56 + .4byte _0805D20A @ case 57 + .4byte _0805D20A @ case 58 + .4byte _0805D20A @ case 59 + .4byte _0805D20A @ case 60 + .4byte _0805D20A @ case 61 + .4byte _0805D20A @ case 62 + .4byte _0805D20A @ case 63 + .4byte _0805D202 @ case 64 +_0805D1F4: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0805D20A +_0805D202: + movs r0, #2 + b _0805D20C +_0805D206: + movs r0, #1 + b _0805D20C +_0805D20A: + movs r0, #0 +_0805D20C: + pop {r1} + bx r1 + thumb_func_end sub_0805D0C4 + + thumb_func_start sub_0805D210 +sub_0805D210: @ 0x0805D210 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _0805D244 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0805D316 + ldr r0, _0805D248 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D24C + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #3 + b _0805D25A + .align 2, 0 +_0805D244: .4byte gUnknown_2022C90 +_0805D248: .4byte gUnknown_2023D08 +_0805D24C: + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #2 +_0805D25A: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0805D294 + movs r2, #0x58 + mov r0, r8 + muls r0, r2, r0 + adds r5, r0, r1 + adds r0, r7, #0 + muls r0, r2, r0 + adds r6, r0, r1 + ldrh r0, [r5, #0x28] + ldrh r3, [r6, #0x28] + cmp r0, r3 + bne _0805D29C + bl sub_0806F050 + adds r3, r0, #0 + ldr r0, _0805D298 + ldrb r1, [r0] + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + movs r1, #2 + ands r1, r3 + adds r0, r0, r1 + b _0805D31E + .align 2, 0 +_0805D294: .4byte gUnknown_2023D28 +_0805D298: .4byte gUnknown_2023D08 +_0805D29C: + ldr r4, _0805D2C8 + ldr r0, _0805D2CC + mov sb, r0 + ldrb r0, [r0] + muls r0, r2, r0 + adds r1, #0x48 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r4, [r0] + cmp r4, #1 + beq _0805D2E8 + cmp r4, #1 + bgt _0805D2D0 + cmp r4, #0 + beq _0805D2D6 + b _0805D316 + .align 2, 0 +_0805D2C8: .4byte gUnknown_82ECF8C +_0805D2CC: .4byte gUnknown_2023D08 +_0805D2D0: + cmp r4, #2 + beq _0805D2FA + b _0805D316 +_0805D2D6: + ldrh r0, [r5, #0x28] + ldrh r6, [r6, #0x28] + cmp r0, r6 + bls _0805D2E4 + mov r1, r8 + lsls r0, r1, #8 + b _0805D320 +_0805D2E4: + lsls r0, r7, #8 + b _0805D320 +_0805D2E8: + ldrh r0, [r5, #0x28] + ldrh r6, [r6, #0x28] + cmp r0, r6 + bhs _0805D2F6 + mov r3, r8 + lsls r0, r3, #8 + b _0805D320 +_0805D2F6: + lsls r0, r7, #8 + b _0805D320 +_0805D2FA: + bl sub_0806F050 + adds r3, r0, #0 + mov r0, sb + ldrb r1, [r0] + movs r2, #1 + movs r0, #1 + ands r0, r1 + eors r0, r2 + ands r4, r3 + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + b _0805D320 +_0805D316: + ldr r0, _0805D32C + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 +_0805D31E: + lsls r0, r0, #8 +_0805D320: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0805D32C: .4byte gUnknown_2023D08 + thumb_func_end sub_0805D210 + + thumb_func_start sub_0805D330 +sub_0805D330: @ 0x0805D330 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0805D374 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r3, [r0] + lsls r0, r3, #0x1a + cmp r0, #0 + bge _0805D382 + adds r0, r1, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0805D382 + adds r2, r1, #0 + adds r2, #0x2c + ldrb r1, [r2] + lsls r0, r1, #0x19 + cmp r0, #0 + bge _0805D378 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _0805D382 + .align 2, 0 +_0805D374: .4byte gUnknown_20205AC +_0805D378: + lsls r0, r3, #0x1b + cmp r0, #0 + bge _0805D382 + ldr r0, _0805D388 + str r0, [r4, #0x1c] +_0805D382: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805D388: .4byte sub_08007140 + thumb_func_end sub_0805D330 + + thumb_func_start sub_0805D38C +sub_0805D38C: @ 0x0805D38C + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + adds r3, r4, #0 + adds r3, #0x2c + ldrb r0, [r3] + movs r2, #0x40 + orrs r0, r2 + strb r0, [r3] + ldr r0, _0805D3B0 + str r0, [r4, #0x1c] + cmp r1, #0 + bne _0805D3B4 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + b _0805D3BC + .align 2, 0 +_0805D3B0: .4byte sub_08007140 +_0805D3B4: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_0805D3BC: + adds r0, r4, #0 + bl sub_08007358 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0805D38C + + thumb_func_start sub_0805D3C8 +sub_0805D3C8: @ 0x0805D3C8 + push {lr} + adds r2, r0, #0 + ldr r0, _0805D3F4 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0805D400 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805D400 + movs r1, #0x26 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0805D3FC + ldr r0, _0805D3F8 + b _0805D3FE + .align 2, 0 +_0805D3F4: .4byte gUnknown_20240A0 +_0805D3F8: .4byte sub_0805D408 +_0805D3FC: + ldr r0, _0805D404 +_0805D3FE: + str r0, [r2, #0x1c] +_0805D400: + pop {r0} + bx r0 + .align 2, 0 +_0805D404: .4byte sub_08007140 + thumb_func_end sub_0805D3C8 + + thumb_func_start sub_0805D408 +sub_0805D408: @ 0x0805D408 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x26] + subs r0, #2 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805D41C + ldr r0, _0805D420 + str r0, [r1, #0x1c] +_0805D41C: + pop {r0} + bx r0 + .align 2, 0 +_0805D420: .4byte sub_08007140 + thumb_func_end sub_0805D408 + + thumb_func_start sub_0805D424 +sub_0805D424: @ 0x0805D424 + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + ldr r6, _0805D458 + ldr r1, [r6] + ldr r5, _0805D45C + ldrb r2, [r5] + ldr r3, [r1, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r1] + movs r3, #0x10 + orrs r2, r3 + strb r2, [r1] + cmp r0, #0 + bne _0805D4A4 + cmp r4, #0x20 + bne _0805D460 + ldrb r0, [r5] + movs r1, #6 + bl sub_080A9C2C + b _0805D51E + .align 2, 0 +_0805D458: .4byte gUnknown_2024174 +_0805D45C: .4byte gUnknown_2023D08 +_0805D460: + cmp r4, #8 + beq _0805D46C + movs r0, #0x80 + ands r0, r4 + cmp r0, #0 + beq _0805D476 +_0805D46C: + ldrb r0, [r5] + movs r1, #0 + bl sub_080A9C2C + b _0805D51E +_0805D476: + cmp r4, #0x10 + bne _0805D484 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A9C2C + b _0805D51E +_0805D484: + movs r0, #7 + ands r0, r4 + cmp r0, #0 + beq _0805D496 + ldrb r0, [r5] + movs r1, #4 + bl sub_080A9C2C + b _0805D51E +_0805D496: + cmp r4, #0x40 + bne _0805D506 + ldrb r0, [r5] + movs r1, #5 + bl sub_080A9C2C + b _0805D51E +_0805D4A4: + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r4 + cmp r0, #0 + beq _0805D4B8 + ldrb r0, [r5] + movs r1, #3 + bl sub_080A9C2C + b _0805D51E +_0805D4B8: + movs r0, #7 + ands r0, r4 + cmp r0, #0 + beq _0805D4CA + ldrb r0, [r5] + movs r1, #1 + bl sub_080A9C2C + b _0805D51E +_0805D4CA: + movs r0, #0x80 + lsls r0, r0, #0x15 + ands r0, r4 + cmp r0, #0 + beq _0805D4DE + ldrb r0, [r5] + movs r1, #7 + bl sub_080A9C2C + b _0805D51E +_0805D4DE: + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r4 + cmp r0, #0 + beq _0805D4F2 + ldrb r0, [r5] + movs r1, #8 + bl sub_080A9C2C + b _0805D51E +_0805D4F2: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r4 + cmp r0, #0 + beq _0805D506 + ldrb r0, [r5] + movs r1, #9 + bl sub_080A9C2C + b _0805D51E +_0805D506: + ldr r0, [r6] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0805D51E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0805D424 + + thumb_func_start sub_0805D524 +sub_0805D524: @ 0x0805D524 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r7, r4, #0x10 + cmp r5, #0 + bne _0805D56C + movs r0, #0x80 + ands r0, r7 + cmp r0, #0 + beq _0805D56C + ldr r0, _0805D568 + adds r0, r6, r0 + movs r2, #0x7f + adds r1, r7, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #1 + b _0805D63A + .align 2, 0 +_0805D568: .4byte gUnknown_2024188 +_0805D56C: + ldr r0, _0805D598 + mov sb, r0 + ldr r0, [r0] + ldr r0, [r0] + lsls r4, r6, #2 + adds r0, r4, r0 + ldrb r1, [r0] + movs r2, #4 + mov r8, r2 + mov r0, r8 + ands r0, r1 + cmp r0, #0 + beq _0805D5E8 + adds r0, r5, #0 + bl sub_0805D6BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D59C + movs r0, #1 + b _0805D63A + .align 2, 0 +_0805D598: .4byte gUnknown_2024174 +_0805D59C: + mov r1, sb + ldr r0, [r1] + ldr r0, [r0] + adds r0, r4, r0 + ldrb r1, [r0] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + beq _0805D5E8 + cmp r5, #2 + bne _0805D5E8 + ldr r1, _0805D5E0 + ldr r0, _0805D5E4 + adds r0, r6, r0 + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0805D5E8 + adds r0, r6, #0 + movs r1, #1 + bl sub_0805E510 + adds r0, r6, #0 + bl sub_0805E590 + movs r0, #1 + b _0805D63A + .align 2, 0 +_0805D5E0: .4byte gUnknown_20205AC +_0805D5E4: .4byte gUnknown_2023E88 +_0805D5E8: + ldr r0, _0805D64C + mov r2, sl + strb r2, [r0] + ldr r0, _0805D650 + mov r1, sp + ldrb r1, [r1] + strb r1, [r0] + ldr r4, _0805D654 + ldr r0, [r4] + ldr r0, [r0, #8] + strh r7, [r0] + ldr r0, _0805D658 + adds r1, r5, #0 + movs r2, #0 + bl sub_080A3310 + ldr r0, _0805D65C + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0805D660 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r6, [r1, #8] + ldr r0, [r4] + movs r2, #8 + ldrsh r1, [r1, r2] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] + movs r0, #0 +_0805D63A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0805D64C: .4byte gUnknown_20380D6 +_0805D650: .4byte gUnknown_20380D7 +_0805D654: .4byte gUnknown_2024174 +_0805D658: .4byte gUnknown_82778AC +_0805D65C: .4byte sub_0805D664 +_0805D660: .4byte gUnknown_3005B60 + thumb_func_end sub_0805D524 + + thumb_func_start sub_0805D664 +sub_0805D664: @ 0x0805D664 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0805D6AC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0805D6B0 + thumb_func_end sub_0805D664 + + thumb_func_start sub_0805D674 +sub_0805D674: @ 0x0805D674 + ldrb r0, [r0] + cmp r0, #0 + bne _0805D6A6 + ldr r0, _0805D6B4 + ldr r2, [r0] + ldr r1, _0805D6B8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + ldr r2, [r2, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_0805D6A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805D6AC: .4byte gUnknown_2038098 +_0805D6B0: .4byte gUnknown_203809D +_0805D6B4: .4byte gUnknown_2024174 +_0805D6B8: .4byte gUnknown_3005B60 + thumb_func_end sub_0805D674 + + thumb_func_start sub_0805D6BC +sub_0805D6BC: @ 0x0805D6BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + bgt _0805D6D0 + cmp r0, #0xa + bge _0805D6D4 + cmp r0, #2 + beq _0805D6D4 + b _0805D6D8 +_0805D6D0: + cmp r0, #0x11 + bne _0805D6D8 +_0805D6D4: + movs r0, #1 + b _0805D6DA +_0805D6D8: + movs r0, #0 +_0805D6DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0805D6BC + + thumb_func_start sub_0805D6E0 +sub_0805D6E0: @ 0x0805D6E0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0805D738 + strb r1, [r0] + ldr r0, _0805D73C + strb r2, [r0] + ldr r0, _0805D740 + adds r1, r3, #0 + movs r2, #0 + bl sub_080A3310 + ldr r0, _0805D744 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0805D748 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + ldr r0, _0805D74C + ldr r0, [r0] + movs r2, #8 + ldrsh r1, [r1, r2] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805D738: .4byte gUnknown_20380D6 +_0805D73C: .4byte gUnknown_20380D7 +_0805D740: .4byte gUnknown_8277908 +_0805D744: .4byte sub_0805D750 +_0805D748: .4byte gUnknown_3005B60 +_0805D74C: .4byte gUnknown_2024174 + thumb_func_end sub_0805D6E0 + + thumb_func_start sub_0805D750 +sub_0805D750: @ 0x0805D750 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0805D798 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0805D79C + thumb_func_end sub_0805D750 + + thumb_func_start sub_0805D760 +sub_0805D760: @ 0x0805D760 + ldrb r0, [r0] + cmp r0, #0 + bne _0805D792 + ldr r0, _0805D7A0 + ldr r2, [r0] + ldr r1, _0805D7A4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + ldr r2, [r2, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_0805D792: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805D798: .4byte gUnknown_2038098 +_0805D79C: .4byte gUnknown_203809D +_0805D7A0: .4byte gUnknown_2024174 +_0805D7A4: .4byte gUnknown_3005B60 + thumb_func_end sub_0805D760 + + thumb_func_start sub_0805D7A8 +sub_0805D7A8: @ 0x0805D7A8 + movs r0, #0 + bx lr + thumb_func_end sub_0805D7A8 + + thumb_func_start sub_0805D7AC +sub_0805D7AC: @ 0x0805D7AC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805D7F4 + ldr r2, _0805D7FC + ldr r0, [r2] + ldr r1, [r0, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #8] + adds r1, #1 + strb r1, [r0, #8] + ldr r2, [r2] + ldr r0, _0805D800 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #8] + cmp r0, #0x1d + bls _0805D7F8 + ldr r0, _0805D804 + bl m4aMPlayStop + ldr r0, _0805D808 + bl m4aMPlayStop +_0805D7F4: + cmp r5, #0 + beq _0805D80C +_0805D7F8: + movs r0, #1 + b _0805D81E + .align 2, 0 +_0805D7FC: .4byte gUnknown_2024174 +_0805D800: .4byte gUnknown_2023D08 +_0805D804: .4byte gUnknown_3007510 +_0805D808: .4byte gUnknown_3007550 +_0805D80C: + ldr r0, _0805D824 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r5, [r0, #8] + movs r0, #0 +_0805D81E: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0805D824: .4byte gUnknown_2024174 + thumb_func_end sub_0805D7AC + + thumb_func_start sub_0805D828 +sub_0805D828: @ 0x0805D828 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r1, #0 + bl sub_0806A058 + str r0, [sp] + ldr r0, _0805D868 + ldr r0, [r0] + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, #2 + adds r2, r1, r0 + ldrh r0, [r2, #2] + cmp r0, #0 + bne _0805D86C + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r6, [sp] + b _0805D874 + .align 2, 0 +_0805D868: .4byte gUnknown_2024174 +_0805D86C: + ldrh r5, [r2, #2] + ldr r0, _0805D8C8 + adds r0, r1, r0 + ldr r6, [r0] +_0805D874: + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + mov sl, r0 + mov r0, r8 + bl sub_080A630C + lsls r0, r0, #0x18 + lsls r2, r5, #3 + ldr r1, _0805D8CC + adds r2, r2, r1 + ldr r1, _0805D8D0 + ldr r1, [r1] + lsrs r0, r0, #0x16 + adds r1, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080349A8 + mov r3, r8 + lsls r2, r3, #4 + movs r0, #0x80 + lsls r0, r0, #1 + adds r7, r2, r0 + ldr r0, _0805D8D4 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r3, #2 + adds r0, r1, r0 + ldrh r0, [r0, #2] + str r1, [sp, #4] + mov sb, r2 + cmp r0, #0 + bne _0805D8D8 + adds r0, r4, #0 + bl sub_0806E194 + b _0805D8E2 + .align 2, 0 +_0805D8C8: .4byte gUnknown_2024160 +_0805D8CC: .4byte gUnknown_82DDA1C +_0805D8D0: .4byte gUnknown_2024178 +_0805D8D4: .4byte gUnknown_2024174 +_0805D8D8: + adds r0, r5, #0 + mov r1, sl + ldr r2, [sp] + bl sub_0806E1CC +_0805D8E2: + adds r6, r0, #0 + ldr r4, _0805D974 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08034370 + adds r0, r4, #0 + adds r1, r7, #0 + movs r2, #0x20 + bl sub_080A1200 + mov r1, sb + adds r1, #0x80 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0805D978 + cmp r5, r0 + bne _0805D936 + movs r7, #0x80 + lsls r7, r7, #1 + add r7, sb + ldr r5, _0805D97C + ldr r1, [r5] + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r1, r4 + adds r0, r6, #0 + bl sub_08034370 + ldr r0, _0805D980 + add r0, r8 + ldrb r1, [r0] + lsls r1, r1, #5 + adds r1, r1, r4 + ldr r0, [r5] + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #0x20 + bl sub_080A1200 +_0805D936: + ldr r0, _0805D984 + ldr r0, [r0] + ldr r0, [r0] + ldr r1, [sp, #4] + adds r0, r1, r0 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0805D962 + ldr r3, _0805D988 + adds r0, r7, #0 + movs r1, #0x10 + movs r2, #6 + bl sub_0806F410 + lsls r1, r7, #1 + ldr r0, _0805D98C + adds r0, r1, r0 + ldr r2, _0805D990 + adds r1, r1, r2 + ldr r2, _0805D994 + bl CpuSet +_0805D962: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805D974: .4byte gUnknown_201C000 +_0805D978: .4byte 0x00000181 +_0805D97C: .4byte gUnknown_2024140 +_0805D980: .4byte gUnknown_2024188 +_0805D984: .4byte gUnknown_2024174 +_0805D988: .4byte 0x00007FFF +_0805D98C: .4byte gUnknown_20377B4 +_0805D990: .4byte gUnknown_20373B4 +_0805D994: .4byte 0x04000008 + thumb_func_end sub_0805D828 + + thumb_func_start sub_0805D998 +sub_0805D998: @ 0x0805D998 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r1, #0 + bl sub_0806A058 + str r0, [sp] + ldr r0, _0805D9D8 + ldr r0, [r0] + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, #2 + adds r2, r1, r0 + ldrh r0, [r2, #2] + cmp r0, #0 + bne _0805D9DC + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r4, [sp] + b _0805D9E4 + .align 2, 0 +_0805D9D8: .4byte gUnknown_2024174 +_0805D9DC: + ldrh r5, [r2, #2] + ldr r0, _0805DA38 + adds r0, r1, r0 + ldr r4, [r0] +_0805D9E4: + adds r0, r6, #0 + movs r1, #1 + bl sub_0806A058 + str r0, [sp, #4] + mov r0, r8 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #1 + mov r1, r8 + bl sub_08068438 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + lsls r1, r1, #2 + mov sl, r1 + cmp r0, #1 + beq _0805DA1C + ldr r0, _0805DA3C + ldr r0, [r0] + ldr r0, [r0] + add r0, sl + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0805DA48 +_0805DA1C: + lsls r0, r5, #3 + ldr r1, _0805DA40 + adds r0, r0, r1 + ldr r1, _0805DA44 + ldr r1, [r1] + lsls r2, r7, #2 + adds r1, #4 + adds r1, r1, r2 + ldr r1, [r1] + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080349A8 + b _0805DA62 + .align 2, 0 +_0805DA38: .4byte gUnknown_2024160 +_0805DA3C: .4byte gUnknown_2024174 +_0805DA40: .4byte gUnknown_82D6148 +_0805DA44: .4byte gUnknown_2024178 +_0805DA48: + lsls r0, r5, #3 + ldr r1, _0805DA84 + adds r0, r0, r1 + ldr r1, _0805DA88 + ldr r1, [r1] + lsls r2, r7, #2 + adds r1, #4 + adds r1, r1, r2 + ldr r1, [r1] + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_08034480 +_0805DA62: + mov r2, r8 + lsls r1, r2, #4 + movs r0, #0x80 + lsls r0, r0, #1 + adds r7, r1, r0 + ldr r0, _0805DA8C + ldr r0, [r0] + ldr r0, [r0] + add r0, sl + ldrh r0, [r0, #2] + mov sb, r1 + cmp r0, #0 + bne _0805DA90 + adds r0, r6, #0 + bl sub_0806E194 + b _0805DA9A + .align 2, 0 +_0805DA84: .4byte gUnknown_82D6148 +_0805DA88: .4byte gUnknown_2024178 +_0805DA8C: .4byte gUnknown_2024174 +_0805DA90: + adds r0, r5, #0 + ldr r1, [sp, #4] + ldr r2, [sp] + bl sub_0806E1CC +_0805DA9A: + adds r6, r0, #0 + ldr r4, _0805DB28 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08034370 + adds r0, r4, #0 + adds r1, r7, #0 + movs r2, #0x20 + bl sub_080A1200 + mov r1, sb + adds r1, #0x80 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0805DB2C + cmp r5, r0 + bne _0805DAEE + movs r7, #0x80 + lsls r7, r7, #1 + add r7, sb + ldr r5, _0805DB30 + ldr r1, [r5] + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r1, r4 + adds r0, r6, #0 + bl sub_08034370 + ldr r0, _0805DB34 + add r0, r8 + ldrb r1, [r0] + lsls r1, r1, #5 + adds r1, r1, r4 + ldr r0, [r5] + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #0x20 + bl sub_080A1200 +_0805DAEE: + ldr r0, _0805DB38 + ldr r0, [r0] + ldr r0, [r0] + add r0, sl + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0805DB18 + ldr r3, _0805DB3C + adds r0, r7, #0 + movs r1, #0x10 + movs r2, #6 + bl sub_0806F410 + lsls r1, r7, #1 + ldr r0, _0805DB40 + adds r0, r1, r0 + ldr r2, _0805DB44 + adds r1, r1, r2 + ldr r2, _0805DB48 + bl CpuSet +_0805DB18: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805DB28: .4byte gUnknown_201C000 +_0805DB2C: .4byte 0x00000181 +_0805DB30: .4byte gUnknown_2024140 +_0805DB34: .4byte gUnknown_2024188 +_0805DB38: .4byte gUnknown_2024174 +_0805DB3C: .4byte 0x00007FFF +_0805DB40: .4byte gUnknown_20377B4 +_0805DB44: .4byte gUnknown_20373B4 +_0805DB48: .4byte 0x04000008 + thumb_func_end sub_0805D998 + + thumb_func_start sub_0805DB4C +sub_0805DB4C: @ 0x0805DB4C + bx lr + .align 2, 0 + thumb_func_end sub_0805DB4C + + thumb_func_start sub_0805DB50 +sub_0805DB50: @ 0x0805DB50 + bx lr + .align 2, 0 + thumb_func_end sub_0805DB50 + + thumb_func_start sub_0805DB54 +sub_0805DB54: @ 0x0805DB54 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + lsls r0, r0, #0x18 + lsls r4, r4, #3 + ldr r2, _0805DB94 + adds r2, r4, r2 + ldr r1, _0805DB98 + ldr r1, [r1] + lsrs r0, r0, #0x16 + adds r1, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + movs r2, #0 + bl sub_08034860 + ldr r0, _0805DB9C + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_080343E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805DB94: .4byte gUnknown_82D8EE4 +_0805DB98: .4byte gUnknown_2024178 +_0805DB9C: .4byte gUnknown_82D91CC + thumb_func_end sub_0805DB54 + + thumb_func_start sub_0805DBA0 +sub_0805DBA0: @ 0x0805DBA0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsls r5, r5, #3 + ldr r2, _0805DBF0 + adds r2, r5, r2 + ldr r1, _0805DBF4 + ldr r1, [r1] + lsrs r0, r0, #0x16 + adds r1, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + movs r2, #0 + bl sub_08034860 + ldr r0, _0805DBF8 + adds r5, r5, r0 + ldr r0, [r5] + lsls r4, r4, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r4, r4, r1 + lsrs r4, r4, #0x10 + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A11BC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805DBF0: .4byte gUnknown_82D95DC +_0805DBF4: .4byte gUnknown_2024178 +_0805DBF8: .4byte gUnknown_82D961C + thumb_func_end sub_0805DBA0 + + thumb_func_start sub_0805DBFC +sub_0805DBFC: @ 0x0805DBFC + bx lr + .align 2, 0 + thumb_func_end sub_0805DBFC + + thumb_func_start sub_0805DC00 +sub_0805DC00: @ 0x0805DC00 + push {lr} + lsls r0, r0, #0x10 + ldr r1, _0805DC14 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 +_0805DC14: .4byte gUnknown_82D91CC + thumb_func_end sub_0805DC00 + + thumb_func_start sub_0805DC18 +sub_0805DC18: @ 0x0805DC18 + push {r4, r5, r6, r7, lr} + ldr r4, _0805DC44 + adds r0, r4, #0 + bl sub_0800845C + adds r4, #8 + adds r0, r4, #0 + bl sub_0800845C + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DC50 + ldr r0, _0805DC48 + bl sub_08034388 + ldr r0, _0805DC4C + bl sub_08034388 + movs r5, #2 + b _0805DC72 + .align 2, 0 +_0805DC44: .4byte gUnknown_82FCB20 +_0805DC48: .4byte gUnknown_82FCAC8 +_0805DC4C: .4byte gUnknown_82FCAD0 +_0805DC50: + ldr r4, _0805DC98 + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r0, r4, #0 + bl sub_08034388 + ldr r4, _0805DC9C + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r0, r4, #0 + bl sub_08034388 + movs r5, #4 +_0805DC72: + movs r4, #0 + cmp r4, r5 + bhs _0805DC92 + ldr r7, _0805DCA0 + ldr r6, _0805DCA4 +_0805DC7C: + adds r0, r4, r7 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r6 + bl sub_08034388 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0805DC7C +_0805DC92: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805DC98: .4byte gUnknown_82FCAD8 +_0805DC9C: .4byte gUnknown_82FCAE8 +_0805DCA0: .4byte gUnknown_2023D1A +_0805DCA4: .4byte gUnknown_82FCB00 + thumb_func_end sub_0805DC18 + + thumb_func_start sub_0805DCA8 +sub_0805DCA8: @ 0x0805DCA8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r6, #0 + cmp r4, #0 + bne _0805DCB8 + b _0805DDCA +_0805DCB8: + cmp r4, #1 + bne _0805DCD4 + ldr r4, _0805DCD0 + adds r0, r4, #0 + bl sub_0800845C + adds r4, #8 + adds r0, r4, #0 + bl sub_0800845C + b _0805DDCA + .align 2, 0 +_0805DCD0: .4byte gUnknown_82FCB20 +_0805DCD4: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DD3C + cmp r4, #2 + bne _0805DD0C + ldr r0, _0805DCF8 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805DD00 + ldr r0, _0805DCFC + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DCF8: .4byte gUnknown_2022C90 +_0805DCFC: .4byte gUnknown_82FCAF8 +_0805DD00: + ldr r0, _0805DD08 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD08: .4byte gUnknown_82FCAC8 +_0805DD0C: + cmp r4, #3 + bne _0805DD1C + ldr r0, _0805DD18 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD18: .4byte gUnknown_82FCAD0 +_0805DD1C: + cmp r4, #4 + bne _0805DD2C + ldr r0, _0805DD28 + ldrb r0, [r0] + b _0805DDB4 + .align 2, 0 +_0805DD28: .4byte gUnknown_2023D1A +_0805DD2C: + cmp r4, #5 + bne _0805DDC8 + ldr r0, _0805DD38 + ldrb r0, [r0, #1] + b _0805DDB4 + .align 2, 0 +_0805DD38: .4byte gUnknown_2023D1A +_0805DD3C: + cmp r4, #2 + bne _0805DD4C + ldr r0, _0805DD48 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD48: .4byte gUnknown_82FCAD8 +_0805DD4C: + cmp r4, #3 + bne _0805DD5C + ldr r0, _0805DD58 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD58: .4byte gUnknown_82FCAE0 +_0805DD5C: + cmp r4, #4 + bne _0805DD6C + ldr r0, _0805DD68 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD68: .4byte gUnknown_82FCAE8 +_0805DD6C: + cmp r4, #5 + bne _0805DD7C + ldr r0, _0805DD78 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DD78: .4byte gUnknown_82FCAF0 +_0805DD7C: + cmp r4, #6 + bne _0805DD8C + ldr r0, _0805DD88 + ldrb r0, [r0] + b _0805DDB4 + .align 2, 0 +_0805DD88: .4byte gUnknown_2023D1A +_0805DD8C: + cmp r4, #7 + bne _0805DD9C + ldr r0, _0805DD98 + ldrb r0, [r0, #1] + b _0805DDB4 + .align 2, 0 +_0805DD98: .4byte gUnknown_2023D1A +_0805DD9C: + cmp r4, #8 + bne _0805DDAC + ldr r0, _0805DDA8 + ldrb r0, [r0, #2] + b _0805DDB4 + .align 2, 0 +_0805DDA8: .4byte gUnknown_2023D1A +_0805DDAC: + cmp r5, #9 + bne _0805DDC8 + ldr r0, _0805DDC0 + ldrb r0, [r0, #3] +_0805DDB4: + lsls r0, r0, #3 + ldr r1, _0805DDC4 + adds r0, r0, r1 + bl sub_08034388 + b _0805DDCA + .align 2, 0 +_0805DDC0: .4byte gUnknown_2023D1A +_0805DDC4: .4byte gUnknown_82FCB00 +_0805DDC8: + movs r6, #1 +_0805DDCA: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0805DCA8 + + thumb_func_start sub_0805DDD4 +sub_0805DDD4: @ 0x0805DDD4 + push {lr} + ldr r0, _0805DDEC + ldr r1, _0805DDF0 + ldr r1, [r1] + movs r2, #0xba + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08034370 + pop {r0} + bx r0 + .align 2, 0 +_0805DDEC: .4byte gUnknown_8C093F8 +_0805DDF0: .4byte gUnknown_2024178 + thumb_func_end sub_0805DDD4 + + thumb_func_start sub_0805DDF4 +sub_0805DDF4: @ 0x0805DDF4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r6, #0 + ldrb r0, [r5] + cmp r0, #6 + bls _0805DE04 + b _0805DF62 +_0805DE04: + lsls r0, r0, #2 + ldr r1, _0805DE10 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805DE10: .4byte _0805DE14 +_0805DE14: @ jump table + .4byte _0805DE30 @ case 0 + .4byte _0805DE36 @ case 1 + .4byte _0805DF40 @ case 2 + .4byte _0805DE4C @ case 3 + .4byte _0805DE7C @ case 4 + .4byte _0805DEB8 @ case 5 + .4byte _0805DF58 @ case 6 +_0805DE30: + bl sub_0805DF94 + b _0805DF40 +_0805DE36: + ldrb r0, [r4] + bl sub_0805DCA8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805DE44 + b _0805DF3C +_0805DE44: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0805DF62 +_0805DE4C: + ldr r0, _0805DE64 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805DE68 + ldrb r0, [r4] + cmp r0, #0 + bne _0805DE68 + bl sub_08072214 + b _0805DE6E + .align 2, 0 +_0805DE64: .4byte gUnknown_2022C90 +_0805DE68: + ldrb r0, [r4] + bl sub_08071EEC +_0805DE6E: + ldr r2, _0805DE78 + ldrb r1, [r4] + adds r1, r1, r2 + strb r0, [r1] + b _0805DF2A + .align 2, 0 +_0805DE78: .4byte gUnknown_3005AD0 +_0805DE7C: + ldrb r0, [r4] + bl sub_08072528 + ldr r0, _0805DE9C + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #1 + bhi _0805DEA4 + ldr r0, _0805DEA0 + adds r0, r1, r0 + ldrb r0, [r0] + movs r1, #0 + bl sub_08072494 + b _0805DF2A + .align 2, 0 +_0805DE9C: .4byte gUnknown_2023D1A +_0805DEA0: .4byte gUnknown_3005AD0 +_0805DEA4: + ldr r0, _0805DEB4 + adds r0, r1, r0 + ldrb r0, [r0] + movs r1, #1 + bl sub_08072494 + b _0805DF2A + .align 2, 0 +_0805DEB4: .4byte gUnknown_3005AD0 +_0805DEB8: + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DF00 + ldr r0, _0805DEF0 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0805DF1E + ldr r0, _0805DEF4 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0805DEF8 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805DEFC + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + b _0805DF1E + .align 2, 0 +_0805DEF0: .4byte gUnknown_2022C90 +_0805DEF4: .4byte gUnknown_3005AD0 +_0805DEF8: .4byte gUnknown_2023D12 +_0805DEFC: .4byte gUnknown_2024190 +_0805DF00: + ldr r0, _0805DF48 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0805DF4C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805DF50 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 +_0805DF1E: + ldr r1, _0805DF48 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 +_0805DF2A: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldr r1, _0805DF54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _0805DF62 +_0805DF3C: + movs r0, #0 + strb r0, [r4] +_0805DF40: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0805DF62 + .align 2, 0 +_0805DF48: .4byte gUnknown_3005AD0 +_0805DF4C: .4byte gUnknown_2023D12 +_0805DF50: .4byte gUnknown_20243E8 +_0805DF54: .4byte gUnknown_2023D10 +_0805DF58: + bl sub_0805E8A0 + bl sub_081B8908 + movs r6, #1 +_0805DF62: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0805DDF4 + + thumb_func_start sub_0805DF6C +sub_0805DF6C: @ 0x0805DF6C + push {r4, lr} + ldr r4, _0805DF90 + ldr r0, [r4] + ldr r0, [r0, #4] + movs r1, #0 + movs r2, #0x30 + bl memset + ldr r0, [r4] + ldr r0, [r0, #8] + movs r1, #0 + movs r2, #0x10 + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805DF90: .4byte gUnknown_2024174 + thumb_func_end sub_0805DF6C + + thumb_func_start sub_0805DF94 +sub_0805DF94: @ 0x0805DF94 + push {lr} + bl sub_0805DF6C + ldr r0, _0805DFAC + ldr r0, [r0] + ldr r0, [r0] + movs r1, #0 + movs r2, #0x10 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_0805DFAC: .4byte gUnknown_2024174 + thumb_func_end sub_0805DF94 + + thumb_func_start sub_0805DFB0 +sub_0805DFB0: @ 0x0805DFB0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r4, #0 + ldr r5, _0805E014 + ldrb r0, [r5] + cmp r4, r0 + bge _0805E006 + ldr r0, _0805E018 + mov sb, r0 + movs r0, #1 + mov ip, r0 + movs r0, #2 + rsbs r0, r0, #0 + mov r8, r0 + ldr r7, _0805E01C + ldr r6, _0805E020 +_0805DFD4: + ldr r0, [r7] + ldr r0, [r0] + lsls r3, r4, #2 + adds r3, r3, r0 + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + mov r0, ip + ands r1, r0 + ldrb r2, [r3] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r4, #1 + ldrb r0, [r5] + cmp r4, r0 + blt _0805DFD4 +_0805E006: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805E014: .4byte gUnknown_2023D10 +_0805E018: .4byte gUnknown_20205AC +_0805E01C: .4byte gUnknown_2024174 +_0805E020: .4byte gUnknown_2023E88 + thumb_func_end sub_0805DFB0 + + thumb_func_start sub_0805E024 +sub_0805E024: @ 0x0805E024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0805E058 + ldr r1, [r1] + ldr r1, [r1] + lsls r3, r0, #2 + adds r3, r3, r1 + ldr r2, _0805E05C + ldr r1, _0805E060 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + ldrb r2, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_0805E058: .4byte gUnknown_2024174 +_0805E05C: .4byte gUnknown_20205AC +_0805E060: .4byte gUnknown_2023E88 + thumb_func_end sub_0805E024 + + thumb_func_start sub_0805E064 +sub_0805E064: @ 0x0805E064 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + lsls r2, r2, #0x18 + cmp r2, #0 + beq _0805E138 + ldr r0, _0805E114 + adds r5, r7, r0 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805E118 + mov r8, r1 + add r0, r8 + ldr r4, _0805E11C + ldr r1, [r4] + ldr r1, [r1, #8] + ldrb r1, [r1] + bl sub_08007EC0 + lsls r0, r7, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r6, r0, #0x10 + ldr r2, _0805E120 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrh r1, [r0] + lsls r1, r1, #5 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r1, r3 + ldr r0, [r2] + adds r0, r0, r1 + adds r1, r6, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0805E124 + adds r1, r7, r1 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r4] + ldr r1, [r0] + lsls r0, r7, #2 + adds r0, r0, r1 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0805E0FA + ldr r3, _0805E128 + adds r0, r6, #0 + movs r1, #0x10 + movs r2, #6 + bl sub_0806F410 + lsls r1, r6, #1 + ldr r0, _0805E12C + adds r0, r1, r0 + ldr r2, _0805E130 + adds r1, r1, r2 + ldr r2, _0805E134 + bl CpuSet +_0805E0FA: + adds r0, r7, #0 + bl sub_080A5A00 + ldrb r2, [r5] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x22] + b _0805E396 + .align 2, 0 +_0805E114: .4byte gUnknown_2023E88 +_0805E118: .4byte gUnknown_20205AC +_0805E11C: .4byte gUnknown_2024174 +_0805E120: .4byte gUnknown_2024140 +_0805E124: .4byte gUnknown_2024188 +_0805E128: .4byte 0x00007FFF +_0805E12C: .4byte gUnknown_20377B4 +_0805E130: .4byte gUnknown_20373B4 +_0805E134: .4byte 0x04000008 +_0805E138: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E174 + movs r0, #0 + mov sl, r0 + ldr r0, _0805E168 + ldr r0, [r0] + ldr r2, [r0, #0x18] + ldrh r1, [r2, #2] + mov r8, r1 + ldr r3, [r2, #8] + mov sb, r3 + ldr r4, [r2, #0xc] + lsls r0, r1, #3 + ldr r1, _0805E16C + adds r0, r0, r1 + ldr r1, _0805E170 + ldr r1, [r1] + ldr r1, [r1, #4] + ldr r3, [r2, #0x10] + b _0805E216 + .align 2, 0 +_0805E168: .4byte gUnknown_2039BD4 +_0805E16C: .4byte gUnknown_82D6148 +_0805E170: .4byte gUnknown_2024178 +_0805E174: + adds r0, r7, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, [sp] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0805E1A8 + ldr r1, _0805E1A0 + ldr r2, [sp] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805E1A4 + b _0805E1B8 + .align 2, 0 +_0805E1A0: .4byte gUnknown_2023D12 +_0805E1A4: .4byte gUnknown_20243E8 +_0805E1A8: + ldr r1, _0805E220 + ldr r3, [sp] + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805E224 +_0805E1B8: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E234 + ldr r0, _0805E220 + lsls r4, r7, #1 + adds r4, r4, r0 + ldrh r0, [r4] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0805E224 + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + mov sb, r0 + ldrh r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #1 + bl sub_0806A058 + adds r4, r0, #0 + mov r1, r8 + lsls r0, r1, #3 + ldr r1, _0805E228 + adds r0, r0, r1 + ldr r1, _0805E22C + ldr r1, [r1] + mov r3, sl + lsls r2, r3, #2 + adds r1, #4 + adds r1, r1, r2 + ldr r1, [r1] + ldr r3, _0805E230 + lsls r2, r7, #2 + adds r2, r2, r3 + ldr r3, [r2] +_0805E216: + mov r2, r8 + bl sub_080349A8 + b _0805E27E + .align 2, 0 +_0805E220: .4byte gUnknown_2023D12 +_0805E224: .4byte gUnknown_2024190 +_0805E228: .4byte gUnknown_82D6148 +_0805E22C: .4byte gUnknown_2024178 +_0805E230: .4byte gUnknown_2024160 +_0805E234: + ldr r0, _0805E3A8 + lsls r4, r7, #1 + adds r4, r4, r0 + ldrh r0, [r4] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0805E3AC + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + mov sb, r0 + ldrh r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #1 + bl sub_0806A058 + adds r4, r0, #0 + mov r1, r8 + lsls r0, r1, #3 + ldr r1, _0805E3B0 + adds r0, r0, r1 + ldr r1, _0805E3B4 + ldr r1, [r1] + mov r3, sl + lsls r2, r3, #2 + adds r1, #4 + adds r1, r1, r2 + ldr r1, [r1] + ldr r3, _0805E3B8 + lsls r2, r7, #2 + adds r2, r2, r3 + ldr r3, [r2] + mov r2, r8 + bl sub_080349A8 +_0805E27E: + ldr r0, _0805E3B4 + ldr r0, [r0] + mov r2, sl + lsls r1, r2, #2 + adds r0, #4 + adds r0, r0, r1 + ldr r2, [r0] + ldr r0, _0805E3BC + adds r0, r0, r7 + mov sl, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0805E3C0 + adds r0, r0, r3 + ldrh r0, [r0, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x11 + ldr r1, _0805E3C4 + adds r0, r0, r1 + ldr r1, _0805E3C8 + str r2, [r1] + str r0, [r1, #4] + ldr r0, _0805E3CC + str r0, [r1, #8] + ldr r0, [r1, #8] + lsls r0, r7, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r6, r0, #0x10 + mov r0, r8 + adds r1, r4, #0 + mov r2, sb + bl sub_0806E1CC + mov sb, r0 + ldr r4, _0805E3D0 + adds r1, r4, #0 + bl sub_08034370 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0805E3D4 + cmp r8, r0 + bne _0805E326 + mov r2, sl + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805E3C0 + adds r1, #8 + adds r0, r0, r1 + ldr r1, _0805E3D8 + mov r3, r8 + lsls r2, r3, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0] + ldr r5, _0805E3DC + ldr r1, [r5] + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r1, r4 + mov r0, sb + bl sub_08034370 + ldr r0, _0805E3E0 + ldr r1, [sp] + adds r0, r1, r0 + ldrb r1, [r0] + lsls r1, r1, #5 + adds r1, r1, r4 + ldr r0, [r5] + adds r0, r0, r1 + adds r1, r6, #0 + movs r2, #0x20 + bl sub_080A1200 +_0805E326: + ldr r3, _0805E3E4 + adds r0, r6, #0 + movs r1, #0x10 + movs r2, #6 + bl sub_0806F410 + lsls r1, r6, #1 + ldr r0, _0805E3E8 + adds r0, r1, r0 + ldr r2, _0805E3EC + adds r1, r1, r2 + ldr r2, _0805E3F0 + bl CpuSet + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E366 + ldr r0, _0805E3F4 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r7, #2 + adds r0, r0, r1 + mov r2, r8 + strh r2, [r0, #2] + ldr r0, _0805E3E0 + adds r1, r7, r0 + ldr r3, [sp] + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r1] +_0805E366: + adds r0, r7, #0 + bl sub_080A5A00 + mov r1, sl + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _0805E3C0 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x22] + mov r3, sl + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0805E3E0 + adds r1, r7, r1 + ldrb r1, [r1] + bl sub_08007EC0 +_0805E396: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805E3A8: .4byte gUnknown_2023D12 +_0805E3AC: .4byte gUnknown_20243E8 +_0805E3B0: .4byte gUnknown_82DDA1C +_0805E3B4: .4byte gUnknown_2024178 +_0805E3B8: .4byte gUnknown_2024160 +_0805E3BC: .4byte gUnknown_2023E88 +_0805E3C0: .4byte gUnknown_20205AC +_0805E3C4: .4byte 0x06010000 +_0805E3C8: .4byte 0x040000D4 +_0805E3CC: .4byte 0x84000200 +_0805E3D0: .4byte gUnknown_201C000 +_0805E3D4: .4byte 0x00000181 +_0805E3D8: .4byte gUnknown_82DD33C +_0805E3DC: .4byte gUnknown_2024140 +_0805E3E0: .4byte gUnknown_2024188 +_0805E3E4: .4byte 0x00007FFF +_0805E3E8: .4byte gUnknown_20377B4 +_0805E3EC: .4byte gUnknown_20373B4 +_0805E3F0: .4byte 0x04000008 +_0805E3F4: .4byte gUnknown_2024174 + thumb_func_end sub_0805E064 + + thumb_func_start sub_0805E3F8 +sub_0805E3F8: @ 0x0805E3F8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _0805E4B4 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E414 + movs r4, #0 + b _0805E41E +_0805E414: + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0805E41E: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E430 + ldr r0, _0805E42C + b _0805E43E + .align 2, 0 +_0805E42C: .4byte gUnknown_8C2D1C4 +_0805E430: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E458 + ldr r0, _0805E450 +_0805E43E: + ldr r1, _0805E454 + ldr r1, [r1] + lsls r4, r4, #2 + adds r1, #4 + adds r1, r1, r4 + ldr r1, [r1] + bl sub_0803437C + b _0805E46A + .align 2, 0 +_0805E450: .4byte gUnknown_8C2CF84 +_0805E454: .4byte gUnknown_2024178 +_0805E458: + ldr r0, _0805E4A0 + ldr r1, _0805E4A4 + ldr r1, [r1] + lsls r4, r4, #2 + adds r1, #4 + adds r1, r1, r4 + ldr r1, [r1] + bl sub_0803437C +_0805E46A: + movs r3, #1 + lsls r6, r5, #4 + ldr r0, _0805E4A4 + ldr r0, [r0] + adds r0, #4 + adds r4, r0, r4 + ldr r2, _0805E4A8 + ldr r5, _0805E4AC +_0805E47A: + ldr r0, [r4] + lsls r1, r3, #0xb + adds r1, r0, r1 + str r0, [r2] + str r1, [r2, #4] + str r5, [r2, #8] + ldr r0, [r2, #8] + adds r3, #1 + cmp r3, #3 + ble _0805E47A + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r6, r0 + ldr r0, _0805E4B0 + movs r2, #0x20 + bl sub_080A11BC + b _0805E502 + .align 2, 0 +_0805E4A0: .4byte gUnknown_8C2D1C4 +_0805E4A4: .4byte gUnknown_2024178 +_0805E4A8: .4byte 0x040000D4 +_0805E4AC: .4byte 0x84000200 +_0805E4B0: .4byte gUnknown_8C2CF60 +_0805E4B4: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E502 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E4EC + ldr r1, _0805E4E4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805E4E8 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0805D828 + b _0805E502 + .align 2, 0 +_0805E4E4: .4byte gUnknown_2023D12 +_0805E4E8: .4byte gUnknown_20243E8 +_0805E4EC: + ldr r1, _0805E508 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805E50C + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_0805D998 +_0805E502: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805E508: .4byte gUnknown_2023D12 +_0805E50C: .4byte gUnknown_2024190 + thumb_func_end sub_0805E3F8 + + thumb_func_start sub_0805E510 +sub_0805E510: @ 0x0805E510 + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0805E3F8 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0805E54C + adds r4, r0, r1 + ldr r0, _0805E550 + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + bne _0805E554 + adds r0, r6, #0 + bl sub_080A5A14 + b _0805E55A + .align 2, 0 +_0805E54C: .4byte gUnknown_20205AC +_0805E550: .4byte gUnknown_2024188 +_0805E554: + adds r0, r6, #0 + bl sub_080A5A00 +_0805E55A: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805E510 + + thumb_func_start sub_0805E568 +sub_0805E568: @ 0x0805E568 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xa4 + bne _0805E588 + ldr r0, _0805E58C + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] +_0805E588: + pop {r0} + bx r0 + .align 2, 0 +_0805E58C: .4byte gUnknown_2024174 + thumb_func_end sub_0805E568 + + thumb_func_start sub_0805E590 +sub_0805E590: @ 0x0805E590 + lsls r0, r0, #0x18 + ldr r1, _0805E5A8 + ldr r1, [r1] + ldr r1, [r1] + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_0805E5A8: .4byte gUnknown_2024174 + thumb_func_end sub_0805E590 + + thumb_func_start sub_0805E5AC +sub_0805E5AC: @ 0x0805E5AC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + adds r7, r6, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08074BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0805E624 + ldr r7, _0805E620 + ldr r0, [r7] + ldr r2, [r0] + lsls r4, r6, #2 + adds r0, r4, r2 + ldrb r1, [r0] + movs r5, #2 + movs r3, #2 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _0805E676 + adds r0, r6, #0 + eors r0, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _0805E612 + movs r0, #0x5a + bl sub_080A306C +_0805E612: + ldr r0, [r7] + ldr r1, [r0] + adds r1, r4, r1 + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + b _0805E676 + .align 2, 0 +_0805E620: .4byte gUnknown_2024174 +_0805E624: + ldr r4, _0805E64C + ldr r0, [r4] + ldr r0, [r0] + lsls r1, r6, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E650 + movs r0, #0x5a + bl m4aSongNumStop + b _0805E676 + .align 2, 0 +_0805E64C: .4byte gUnknown_2024174 +_0805E650: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E676 + ldr r1, [r4] + movs r0, #2 + eors r7, r0 + ldr r1, [r1] + lsls r0, r7, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0805E676 + movs r0, #0x5a + bl m4aSongNumStop +_0805E676: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0805E5AC + + thumb_func_start sub_0805E67C +sub_0805E67C: @ 0x0805E67C + push {r4, r5, r6, lr} + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _0805E6CC + ldr r0, [r5] + ldr r0, [r0] + lsls r1, r4, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r6, #3 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E6BE + ldr r2, [r5] + movs r0, #2 + adds r1, r4, #0 + eors r1, r0 + ldr r0, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] +_0805E6BE: + movs r0, #0x5a + bl m4aSongNumStop + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805E6CC: .4byte gUnknown_2024174 + thumb_func_end sub_0805E67C + + thumb_func_start sub_0805E6D0 +sub_0805E6D0: @ 0x0805E6D0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08074BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0805E6D0 + + thumb_func_start sub_0805E704 +sub_0805E704: @ 0x0805E704 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _0805E7A8 + ldr r1, _0805E7AC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0805E79A + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r5, _0805E7B0 + mov r1, r8 + lsls r0, r1, #1 + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_081B8C8C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sb + lsls r0, r1, #1 + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_081B8C8C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r7, #0x64 + adds r0, r4, #0 + muls r0, r7, r0 + ldr r6, _0805E7B4 + adds r4, r0, r6 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0805E776 + adds r0, r4, #0 + mov r1, r8 + bl sub_0805E5AC +_0805E776: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E79A + adds r0, r5, #0 + muls r0, r7, r0 + adds r4, r0, r6 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _0805E79A + adds r0, r4, #0 + mov r1, sb + bl sub_0805E5AC +_0805E79A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805E7A8: .4byte gUnknown_3002360 +_0805E7AC: .4byte 0x00000439 +_0805E7B0: .4byte gUnknown_2023D12 +_0805E7B4: .4byte gUnknown_2024190 + thumb_func_end sub_0805E704 + + thumb_func_start sub_0805E7B8 +sub_0805E7B8: @ 0x0805E7B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r0, _0805E848 + ldrb r0, [r0] + cmp r5, r0 + bge _0805E888 + movs r0, #3 + mov sl, r8 + mov r1, sl + ands r1, r0 + mov sl, r1 + movs r6, #0 + movs r2, #0x3f + rsbs r2, r2, #0 + mov sb, r2 +_0805E7E4: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E87C + ldr r4, _0805E84C + ldr r0, _0805E850 + adds r3, r5, r0 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + movs r7, #4 + rsbs r7, r7, #0 + adds r2, r7, #0 + ands r1, r2 + mov r2, sl + orrs r1, r2 + strb r1, [r0, #1] + mov r7, r8 + cmp r7, #0 + bne _0805E858 + ldr r0, _0805E854 + ldr r0, [r0] + ldr r2, [r0, #4] + adds r2, r6, r2 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r2, #6] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #3] + mov r2, sb + ands r1, r2 + strb r1, [r0, #3] + b _0805E87C + .align 2, 0 +_0805E848: .4byte gUnknown_2023D10 +_0805E84C: .4byte gUnknown_20205AC +_0805E850: .4byte gUnknown_2023E88 +_0805E854: .4byte gUnknown_2024174 +_0805E858: + ldrb r0, [r3] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldr r0, _0805E898 + ldr r0, [r0] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrb r1, [r0, #6] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r0, [r2, #3] + mov r3, sb + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #3] +_0805E87C: + adds r6, #0xc + adds r5, #1 + ldr r0, _0805E89C + ldrb r0, [r0] + cmp r5, r0 + blt _0805E7E4 +_0805E888: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805E898: .4byte gUnknown_2024174 +_0805E89C: .4byte gUnknown_2023D10 + thumb_func_end sub_0805E7B8 + + thumb_func_start sub_0805E8A0 +sub_0805E8A0: @ 0x0805E8A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0805E97C + bl sub_08034388 + movs r0, #1 + bl sub_080A631C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0805E980 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A5534 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #8 + movs r0, #0xe8 + lsls r0, r0, #0xd + adds r2, r2, r0 + asrs r2, r2, #0x10 + mov r0, r8 + adds r1, r4, #0 + movs r3, #0xc8 + bl sub_08006B0C + ldr r6, _0805E984 + ldr r1, [r6] + ldr r2, [r1, #4] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r2, r1, r2 + strb r0, [r2, #7] + ldr r7, _0805E988 + ldr r0, [r6] + ldr r0, [r0, #4] + adds r1, r1, r0 + ldrb r1, [r1, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r5, [r0, #0x2e] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805E972 + movs r0, #3 + bl sub_080A631C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A5534 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #8 + movs r0, #0xe8 + lsls r0, r0, #0xd + adds r2, r2, r0 + asrs r2, r2, #0x10 + mov r0, r8 + adds r1, r4, #0 + movs r3, #0xc8 + bl sub_08006B0C + ldr r1, [r6] + ldr r2, [r1, #4] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r2, r1, r2 + strb r0, [r2, #7] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r1, r1, r0 + ldrb r1, [r1, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r5, [r0, #0x2e] +_0805E972: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805E97C: .4byte gUnknown_82ED028 +_0805E980: .4byte gUnknown_82ED038 +_0805E984: .4byte gUnknown_2024174 +_0805E988: .4byte gUnknown_20205AC + thumb_func_end sub_0805E8A0 + + thumb_func_start sub_0805E98C +sub_0805E98C: @ 0x0805E98C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r0, #0 + mov r8, r0 + ldrh r0, [r5, #0x2e] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0805E9D0 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805E9D4 + adds r7, r0, r1 + adds r6, r7, #0 + adds r6, #0x3e + ldrb r1, [r6] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805E9C8 + adds r0, r4, #0 + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E9DC +_0805E9C8: + ldr r0, _0805E9D8 + str r0, [r5, #0x1c] + b _0805EA52 + .align 2, 0 +_0805E9D0: .4byte gUnknown_2023E88 +_0805E9D4: .4byte gUnknown_20205AC +_0805E9D8: .4byte sub_0805EA64 +_0805E9DC: + ldr r0, _0805E9F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0805E9EE + ldrb r1, [r6] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805EA00 +_0805E9EE: + movs r0, #1 + mov r8, r0 + ldr r2, _0805E9FC + lsls r4, r4, #2 + b _0805EA22 + .align 2, 0 +_0805E9F8: .4byte gUnknown_203809D +_0805E9FC: .4byte gUnknown_2024174 +_0805EA00: + ldr r2, _0805EA5C + ldr r0, [r2] + ldr r0, [r0] + lsls r1, r4, #2 + adds r3, r1, r0 + ldrh r0, [r3, #2] + adds r4, r1, #0 + cmp r0, #0 + beq _0805EA22 + ldr r0, _0805EA60 + ldrh r1, [r3, #2] + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _0805EA22 + movs r0, #1 + mov r8, r0 +_0805EA22: + ldr r0, [r2] + ldr r0, [r0] + adds r0, r4, r0 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805EA36 + movs r0, #1 + mov r8, r0 +_0805EA36: + 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, #5 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_0805EA52: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EA5C: .4byte gUnknown_2024174 +_0805EA60: .4byte gUnknown_82D965C + thumb_func_end sub_0805E98C + + thumb_func_start sub_0805EA64 +sub_0805EA64: @ 0x0805EA64 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_0805EA64 + + thumb_func_start sub_0805EA70 +sub_0805EA70: @ 0x0805EA70 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805EAEC + ldr r0, _0805EAC0 + ldr r3, [r0] + ldr r1, [r3] + lsls r0, r4, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _0805EA9A + adds r5, r0, #0 +_0805EA9A: + ldr r0, _0805EAC4 + adds r0, r5, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0805EAD0 + ldr r2, _0805EAC8 + ldr r1, [r3, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0805EACC + b _0805EAEA + .align 2, 0 +_0805EAC0: .4byte gUnknown_2024174 +_0805EAC4: .4byte gUnknown_82D965C +_0805EAC8: .4byte gUnknown_20205AC +_0805EACC: .4byte sub_0805E98C +_0805EAD0: + ldr r2, _0805EAF4 + ldr r1, [r3, #4] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0805EAF8 +_0805EAEA: + str r1, [r0] +_0805EAEC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805EAF4: .4byte gUnknown_20205AC +_0805EAF8: .4byte sub_0805EA64 + thumb_func_end sub_0805EA70 + + thumb_func_start sub_0805EAFC +sub_0805EAFC: @ 0x0805EAFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0805EB24 + ldr r1, _0805EB28 + ldr r1, [r1] + ldr r3, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r1, [r1, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0805EB2C + str r1, [r0] + bx lr + .align 2, 0 +_0805EB24: .4byte gUnknown_20205AC +_0805EB28: .4byte gUnknown_2024174 +_0805EB2C: .4byte sub_0805EA64 + thumb_func_end sub_0805EAFC + + thumb_func_start sub_0805EB30 +sub_0805EB30: @ 0x0805EB30 + push {r4, r5, r6, lr} + ldr r3, _0805EB9C + movs r0, #0 + movs r6, #0xf0 + lsls r6, r6, #8 +_0805EB3A: + adds r5, r0, #1 + movs r4, #0xf +_0805EB3E: + ldrh r1, [r3] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0805EB4E + adds r0, r6, #0 + orrs r0, r1 + strh r0, [r3] +_0805EB4E: + ldrh r1, [r3] + movs r2, #0xf0 + lsls r2, r2, #4 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0805EB62 + adds r0, r2, #0 + orrs r0, r1 + strh r0, [r3] +_0805EB62: + ldrh r1, [r3] + movs r2, #0xf0 + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + bne _0805EB74 + adds r0, r1, #0 + orrs r0, r2 + strh r0, [r3] +_0805EB74: + ldrh r1, [r3] + movs r2, #0xf + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0805EB86 + adds r0, r1, #0 + orrs r0, r2 + strh r0, [r3] +_0805EB86: + adds r3, #2 + subs r4, #1 + cmp r4, #0 + bge _0805EB3E + adds r0, r5, #0 + cmp r0, #8 + ble _0805EB3A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805EB9C: .4byte 0x06000240 + thumb_func_end sub_0805EB30 + + thumb_func_start sub_0805EBA0 +sub_0805EBA0: @ 0x0805EBA0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + ldr r0, _0805EBD0 + ldr r0, [r0] + ldr r2, [r0] + lsls r0, r4, #2 + adds r0, r0, r2 + movs r3, #0 + movs r2, #0 + strh r2, [r0, #2] + ldr r0, _0805EBD4 + adds r0, r4, r0 + strb r3, [r0] + cmp r1, #0 + bne _0805EBC8 + adds r0, r4, #0 + bl sub_0805E590 +_0805EBC8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805EBD0: .4byte gUnknown_2024174 +_0805EBD4: .4byte gUnknown_2024188 + thumb_func_end sub_0805EBA0 + + thumb_func_start sub_0805EBD8 +sub_0805EBD8: @ 0x0805EBD8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r6, #0 + ldr r4, _0805ECA8 + str r6, [r4] + movs r0, #0xc0 + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x80 + lsls r0, r0, #8 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] +_0805EBFE: + ldr r0, _0805ECA8 + ldr r1, [r0] + lsls r4, r6, #2 + adds r2, r1, #4 + adds r2, r2, r4 + lsls r3, r6, #0xd + ldr r0, [r1] + adds r0, r0, r3 + str r0, [r2] + lsls r3, r6, #1 + adds r0, r3, r6 + lsls r0, r0, #3 + adds r1, r0, r1 + ldr r2, _0805ECAC + adds r1, #0x14 + adds r0, 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 sb, r3 + lsls r0, r6, #5 + mov r8, r0 + adds r1, r6, #1 + mov sl, r1 + mov ip, r8 + adds r7, r4, #0 +_0805EC36: + ldr r2, _0805ECA8 + ldr r1, [r2] + lsls r4, r5, #3 + add r4, ip + adds r3, r1, #0 + adds r3, #0x74 + adds r3, r3, r4 + adds r0, r1, #4 + adds r0, r0, r7 + lsls r2, r5, #0xb + ldr r0, [r0] + adds r0, r0, r2 + str r0, [r3] + adds r1, r1, r4 + adds r1, #0x78 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _0805EC36 + ldr r1, _0805ECA8 + ldr r2, [r1] + mov r5, sb + adds r0, r5, r6 + lsls r0, r0, #3 + adds r1, r2, #0 + adds r1, #0x20 + adds r1, r1, r0 + mov r0, r8 + adds r0, #0x74 + adds r2, r2, r0 + str r2, [r1] + mov r7, sl + lsls r0, r7, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _0805EBFE + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + ldr r1, _0805ECA8 + ldr r1, [r1] + movs r2, #0xba + lsls r2, r2, #1 + adds r1, r1, r2 + str r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805ECA8: .4byte gUnknown_2024178 +_0805ECAC: .4byte gUnknown_82FA724 + thumb_func_end sub_0805EBD8 + + thumb_func_start sub_0805ECB0 +sub_0805ECB0: @ 0x0805ECB0 + push {r4, r5, r6, lr} + ldr r6, _0805ED28 + ldr r0, [r6] + cmp r0, #0 + beq _0805ED22 + movs r1, #0xbe + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _0805ECD6 + bl sub_08000BF0 + ldr r0, [r6] + movs r1, #0xbe + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] +_0805ECD6: + ldr r0, [r6] + movs r1, #0xbc + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _0805ECF4 + bl sub_08000BF0 + ldr r0, [r6] + movs r1, #0xbc + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] +_0805ECF4: + ldr r0, [r6] + movs r5, #0xba + lsls r5, r5, #1 + adds r0, r0, r5 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r5, r0, r5 + movs r4, #0 + str r4, [r5] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + str r4, [r0] + str r4, [r0, #4] + str r4, [r0, #8] + str r4, [r0, #0xc] + str r4, [r0, #0x10] + bl sub_08000BF0 + str r4, [r6] +_0805ED22: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805ED28: .4byte gUnknown_2024178 + thumb_func_end sub_0805ECB0 + + thumb_func_start sub_0805ED2C +sub_0805ED2C: @ 0x0805ED2C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x37 + bl sub_0806A058 + ldr r1, _0805ED70 + ands r1, r0 + cmp r1, #0 + bne _0805ED74 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08074BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + ble _0805ED74 + movs r0, #1 + b _0805ED76 + .align 2, 0 +_0805ED70: .4byte 0x00000FFF +_0805ED74: + movs r0, #0 +_0805ED76: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0805ED2C + + thumb_func_start sub_0805ED7C +sub_0805ED7C: @ 0x0805ED7C + bx lr + .align 2, 0 + thumb_func_end sub_0805ED7C + + thumb_func_start sub_0805ED80 +sub_0805ED80: @ 0x0805ED80 + ldr r1, _0805ED90 + ldr r0, _0805ED94 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805ED98 + str r1, [r0] + bx lr + .align 2, 0 +_0805ED90: .4byte gUnknown_3005AC0 +_0805ED94: .4byte gUnknown_2023D08 +_0805ED98: .4byte sub_0805ED9C + thumb_func_end sub_0805ED80 + + thumb_func_start sub_0805ED9C +sub_0805ED9C: @ 0x0805ED9C + push {lr} + ldr r2, _0805EDD0 + ldr r1, _0805EDD4 + ldr r0, _0805EDD8 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0805EDE8 + ldr r0, _0805EDDC + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _0805EDE4 + ldr r0, _0805EDE0 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _0805EDE8 + .align 2, 0 +_0805EDD0: .4byte gUnknown_2023D0C +_0805EDD4: .4byte gUnknown_82FACB4 +_0805EDD8: .4byte gUnknown_2023D08 +_0805EDDC: .4byte gUnknown_2022D08 +_0805EDE0: .4byte gUnknown_82ED050 +_0805EDE4: + bl sub_0805FB04 +_0805EDE8: + pop {r0} + bx r0 + thumb_func_end sub_0805ED9C + + thumb_func_start sub_0805EDEC +sub_0805EDEC: @ 0x0805EDEC + push {lr} + ldr r2, _0805EE14 + ldr r1, _0805EE18 + ldr r0, _0805EE1C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805EE20 + cmp r1, r0 + bne _0805EE10 + bl sub_0805FB04 +_0805EE10: + pop {r0} + bx r0 + .align 2, 0 +_0805EE14: .4byte gUnknown_20205AC +_0805EE18: .4byte gUnknown_2023E88 +_0805EE1C: .4byte gUnknown_2023D08 +_0805EE20: .4byte sub_08007140 + thumb_func_end sub_0805EDEC + + thumb_func_start sub_0805EE24 +sub_0805EE24: @ 0x0805EE24 + push {lr} + ldr r2, _0805EE4C + ldr r1, _0805EE50 + ldr r0, _0805EE54 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805EE58 + cmp r1, r0 + bne _0805EE48 + bl sub_0805FB04 +_0805EE48: + pop {r0} + bx r0 + .align 2, 0 +_0805EE4C: .4byte gUnknown_20205AC +_0805EE50: .4byte gUnknown_2023E88 +_0805EE54: .4byte gUnknown_2023D08 +_0805EE58: .4byte sub_08007140 + thumb_func_end sub_0805EE24 + + thumb_func_start sub_0805EE5C +sub_0805EE5C: @ 0x0805EE5C + push {r4, r5, r6, lr} + ldr r5, _0805EEB4 + ldr r6, _0805EEB8 + ldr r4, _0805EEBC + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _0805EEC0 + cmp r1, r0 + bne _0805EEAE + adds r0, r2, r5 + ldrh r0, [r0, #6] + bl sub_0805DC00 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + bl sub_0805FB04 +_0805EEAE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805EEB4: .4byte gUnknown_20205AC +_0805EEB8: .4byte gUnknown_2023E88 +_0805EEBC: .4byte gUnknown_2023D08 +_0805EEC0: .4byte sub_08007140 + thumb_func_end sub_0805EE5C + + thumb_func_start sub_0805EEC4 +sub_0805EEC4: @ 0x0805EEC4 + push {r4, lr} + ldr r4, _0805EF04 + ldr r1, [r4] + ldr r3, _0805EF08 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0805EEFC + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_0805FB04 +_0805EEFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805EF04: .4byte gUnknown_2024174 +_0805EF08: .4byte gUnknown_2023D08 + thumb_func_end sub_0805EEC4 + + thumb_func_start sub_0805EF0C +sub_0805EF0C: @ 0x0805EF0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sb, r0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805EF48 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805EF3A + ldr r0, _0805EF70 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805EF48 +_0805EF3A: + ldr r0, _0805EF70 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0805EF84 +_0805EF48: + ldr r2, _0805EF74 + ldr r1, _0805EF78 + ldr r3, _0805EF7C + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805EF80 + mov sl, r3 + cmp r1, r0 + bne _0805EF6C + movs r1, #1 + mov sb, r1 +_0805EF6C: + movs r6, #0 + b _0805EFC0 + .align 2, 0 +_0805EF70: .4byte gUnknown_2022C90 +_0805EF74: .4byte gUnknown_20205AC +_0805EF78: .4byte gUnknown_3005AD0 +_0805EF7C: .4byte gUnknown_2023D08 +_0805EF80: .4byte sub_08007140 +_0805EF84: + ldr r3, _0805F090 + ldr r6, _0805F094 + ldr r2, _0805F098 + ldrb r4, [r2] + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r5, [r0] + ldr r0, _0805F09C + mov sl, r2 + cmp r5, r0 + bne _0805EFBE + movs r0, #2 + eors r4, r0 + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, r5 + bne _0805EFBE + movs r0, #1 + mov sb, r0 +_0805EFBE: + movs r6, #1 +_0805EFC0: + ldr r3, _0805F0A0 + ldr r1, _0805F0A4 + mov r8, r1 + ldr r2, [r1] + mov r7, sl + ldrb r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, [r2, #4] + adds r0, r5, r0 + str r0, [r3] + ldr r2, _0805F0A8 + ldrb r0, [r7] + movs r1, #2 + mov ip, r1 + mov r1, ip + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r5, r0 + str r0, [r2] + mov r0, sb + cmp r0, #0 + bne _0805EFF6 + b _0805F12A +_0805EFF6: + cmp r6, #1 + bne _0805F0B0 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r5 + ldrb r1, [r4, #1] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0805F010 + b _0805F12A +_0805F010: + mov r0, ip + eors r0, r2 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #1] + ands r6, r0 + cmp r6, #0 + bne _0805F026 + b _0805F12A +_0805F026: + ldrb r1, [r4] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + mov r1, r8 + ldr r0, [r1] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r0, r8 + ldr r2, [r0] + ldrb r0, [r7] + mov r1, ip + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, r8 + ldr r2, [r1] + ldrb r0, [r7] + mov r1, ip + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0805F0AC + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + b _0805F108 + .align 2, 0 +_0805F090: .4byte gUnknown_20205AC +_0805F094: .4byte gUnknown_3005AD0 +_0805F098: .4byte gUnknown_2023D08 +_0805F09C: .4byte sub_08007140 +_0805F0A0: .4byte gUnknown_202417C +_0805F0A4: .4byte gUnknown_2024174 +_0805F0A8: .4byte gUnknown_2024180 +_0805F0AC: .4byte 0x000027F9 +_0805F0B0: + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r5 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F12A + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + mov r1, r8 + ldr r0, [r1] + mov r1, sl + ldrb r2, [r1] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r1, sl + ldrb r0, [r1] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0805F108 + ldr r4, _0805F138 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 +_0805F108: + ldr r0, _0805F13C + ldr r0, [r0] + ldr r3, _0805F140 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _0805F144 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805F148 + str r1, [r0] +_0805F12A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F138: .4byte 0x000027F9 +_0805F13C: .4byte gUnknown_2024174 +_0805F140: .4byte gUnknown_2023D08 +_0805F144: .4byte gUnknown_3005AC0 +_0805F148: .4byte sub_0805EEC4 + thumb_func_end sub_0805EF0C + + thumb_func_start sub_0805F14C +sub_0805F14C: @ 0x0805F14C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + str r0, [sp] + mov sl, r0 + ldr r5, _0805F334 + ldr r0, [r5] + ldr r4, _0805F338 + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + movs r6, #0xc4 + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0805F192 + ldr r0, _0805F33C + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0805F340 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0805F192: + ldr r0, _0805F344 + ldr r0, [r0] + ldr r1, _0805F348 + ands r0, r1 + cmp r0, #0 + bne _0805F1DA + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805F1DA + ldr r2, [r5] + ldrb r1, [r4] + movs r0, #2 + adds r3, r0, #0 + eors r3, r1 + ldr r1, [r2, #4] + lsls r2, r3, #1 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0805F1DA + ldr r0, _0805F33C + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0805F340 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 +_0805F1DA: + ldr r2, _0805F334 + ldr r0, [r2] + ldr r1, _0805F338 + mov r8, r1 + ldrb r4, [r1] + ldr r5, [r0, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r0, r5 + ldrb r1, [r3] + movs r6, #8 + adds r0, r6, #0 + ands r0, r1 + mov sb, r2 + cmp r0, #0 + bne _0805F2BC + movs r7, #2 + adds r1, r7, #0 + eors r1, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0805F2BC + ldrb r1, [r3, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0805F2A0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805F270 + ldr r0, _0805F344 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805F270 + ldr r4, _0805F34C + mov r1, r8 + ldrb r0, [r1] + adds r1, r7, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0805F33C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805F340 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + mov r1, r8 + ldrb r0, [r1] + eors r0, r7 + bl sub_08076320 + mov r1, r8 + ldrb r0, [r1] + eors r0, r7 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_0805F270: + ldr r5, _0805F34C + ldr r4, _0805F338 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _0805F33C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805F340 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 +_0805F2A0: + ldr r3, _0805F334 + ldr r2, [r3] + ldr r0, _0805F338 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] + mov sb, r3 +_0805F2BC: + mov r1, sb + ldr r0, [r1] + ldr r4, _0805F338 + ldrb r2, [r4] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _0805F37E + movs r1, #2 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805F37E + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805F37E + mov r1, sb + ldr r0, [r1] + ldrb r4, [r4] + ldr r1, [r0, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0805F360 + ldr r0, _0805F344 + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _0805F354 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0805F360 + ldr r0, _0805F350 + bl m4aMPlayContinue + b _0805F360 + .align 2, 0 +_0805F334: .4byte gUnknown_2024174 +_0805F338: .4byte gUnknown_2023D08 +_0805F33C: .4byte gUnknown_2023D12 +_0805F340: .4byte gUnknown_20243E8 +_0805F344: .4byte gUnknown_2022C90 +_0805F348: .4byte 0x00008040 +_0805F34C: .4byte gUnknown_3005AD0 +_0805F350: .4byte gUnknown_30074D0 +_0805F354: + ldr r0, _0805F3D8 + ldr r1, _0805F3DC + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_0805F360: + ldr r0, _0805F3E0 + ldr r2, [r0] + ldr r0, _0805F3E4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + str r0, [sp] +_0805F37E: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805F39E + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805F3FC + ldr r0, _0805F3E8 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0805F3FC +_0805F39E: + ldr r2, _0805F3EC + ldr r0, _0805F3F0 + ldr r1, _0805F3E4 + ldrb r4, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r3, [r0] + ldr r0, _0805F3F4 + cmp r3, r0 + bne _0805F45A + ldr r0, _0805F3F8 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r3 + bne _0805F45A + movs r1, #1 + mov sl, r1 + b _0805F45A + .align 2, 0 +_0805F3D8: .4byte gUnknown_30074D0 +_0805F3DC: .4byte 0x0000FFFF +_0805F3E0: .4byte gUnknown_2024174 +_0805F3E4: .4byte gUnknown_2023D08 +_0805F3E8: .4byte gUnknown_2022C90 +_0805F3EC: .4byte gUnknown_20205AC +_0805F3F0: .4byte gUnknown_3005ADC +_0805F3F4: .4byte sub_08007140 +_0805F3F8: .4byte gUnknown_2023E88 +_0805F3FC: + ldr r2, _0805F554 + ldr r7, _0805F558 + ldr r0, _0805F55C + ldrb r3, [r0] + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _0805F560 + cmp r4, r0 + bne _0805F45A + ldr r6, _0805F564 + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r5, [r0] + cmp r5, r4 + bne _0805F45A + movs r0, #2 + eors r3, r0 + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r4, [r0] + cmp r4, r5 + bne _0805F45A + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _0805F45A + movs r0, #1 + mov sl, r0 +_0805F45A: + ldr r1, [sp] + cmp r1, #0 + beq _0805F544 + mov r0, sl + cmp r0, #0 + beq _0805F544 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0805F4BE + ldr r0, _0805F568 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805F4BE + ldr r1, _0805F558 + ldr r5, _0805F55C + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805F554 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r0, [r5] + eors r4, r0 + ldr r1, _0805F56C + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805F570 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 +_0805F4BE: + ldr r1, _0805F558 + ldr r4, _0805F55C + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805F554 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r5, [r4] + ldr r1, _0805F56C + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805F570 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0805EA70 + ldr r3, _0805F574 + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _0805F578 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805F57C + str r1, [r0] +_0805F544: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F554: .4byte gUnknown_20205AC +_0805F558: .4byte gUnknown_3005ADC +_0805F55C: .4byte gUnknown_2023D08 +_0805F560: .4byte sub_08007140 +_0805F564: .4byte gUnknown_2023E88 +_0805F568: .4byte gUnknown_2022C90 +_0805F56C: .4byte gUnknown_2023D12 +_0805F570: .4byte gUnknown_20243E8 +_0805F574: .4byte gUnknown_2024174 +_0805F578: .4byte gUnknown_3005AC0 +_0805F57C: .4byte sub_0805EF0C + thumb_func_end sub_0805F14C + + thumb_func_start sub_0805F580 +sub_0805F580: @ 0x0805F580 + push {r4, r5, lr} + ldr r2, _0805F63C + ldr r0, _0805F640 + ldr r1, _0805F644 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0805F5CC + ldr r0, _0805F648 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r2, r3, #1 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0805F5CC + ldr r0, _0805F64C + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0805F650 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 +_0805F5CC: + ldr r2, _0805F63C + ldr r0, _0805F640 + ldr r5, _0805F644 + ldrb r3, [r5] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805F654 + cmp r1, r0 + bne _0805F634 + ldr r4, _0805F648 + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F634 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, [r4] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _0805F658 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + bl sub_0805FB04 +_0805F634: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F63C: .4byte gUnknown_20205AC +_0805F640: .4byte gUnknown_2023E88 +_0805F644: .4byte gUnknown_2023D08 +_0805F648: .4byte gUnknown_2024174 +_0805F64C: .4byte gUnknown_2023D12 +_0805F650: .4byte gUnknown_20243E8 +_0805F654: .4byte sub_08007140 +_0805F658: .4byte 0x000027F9 + thumb_func_end sub_0805F580 + + thumb_func_start sub_0805F65C +sub_0805F65C: @ 0x0805F65C + push {r4, r5, r6, lr} + ldr r6, _0805F69C + ldrb r0, [r6] + ldr r5, _0805F6A0 + adds r1, r0, r5 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0805F6A4 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _0805F6A8 + .align 2, 0 +_0805F69C: .4byte gUnknown_2023D08 +_0805F6A0: .4byte gUnknown_3005AD0 +_0805F6A4: + bl sub_0805FB04 +_0805F6A8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805F65C + + thumb_func_start sub_0805F6B0 +sub_0805F6B0: @ 0x0805F6B0 + push {lr} + ldr r2, _0805F6E4 + ldr r0, _0805F6E8 + ldr r1, _0805F6EC + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0805F6DE + ldr r0, _0805F6F0 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805FB04 +_0805F6DE: + pop {r0} + bx r0 + .align 2, 0 +_0805F6E4: .4byte gUnknown_20205AC +_0805F6E8: .4byte gUnknown_2023E88 +_0805F6EC: .4byte gUnknown_2023D08 +_0805F6F0: .4byte gUnknown_3005AD0 + thumb_func_end sub_0805F6B0 + + thumb_func_start sub_0805F6F4 +sub_0805F6F4: @ 0x0805F6F4 + push {r4, r5, r6, lr} + ldr r0, _0805F754 + ldr r0, [r0] + ldr r6, _0805F758 + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805F74E + ldr r5, _0805F75C + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0805F760 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _0805F764 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805FB04 +_0805F74E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805F754: .4byte gUnknown_2024174 +_0805F758: .4byte gUnknown_2023D08 +_0805F75C: .4byte gUnknown_2023E88 +_0805F760: .4byte gUnknown_20205AC +_0805F764: .4byte gUnknown_3005AD0 + thumb_func_end sub_0805F6F4 + + thumb_func_start sub_0805F768 +sub_0805F768: @ 0x0805F768 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805F77A + bl sub_0805FB04 +_0805F77A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805F768 + + thumb_func_start sub_0805F780 +sub_0805F780: @ 0x0805F780 + push {r4, lr} + ldr r1, _0805F7BC + ldr r0, _0805F7C0 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _0805F7C4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _0805F7CC + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _0805F7C8 + strb r3, [r0] + bl sub_0805FB04 + b _0805F7F6 + .align 2, 0 +_0805F7BC: .4byte gUnknown_2023E88 +_0805F7C0: .4byte gUnknown_2023D08 +_0805F7C4: .4byte gUnknown_20205AC +_0805F7C8: .4byte gUnknown_202415D +_0805F7CC: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0805F7F0 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0805F7F0: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_0805F7F6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0805F780 + + thumb_func_start sub_0805F7FC +sub_0805F7FC: @ 0x0805F7FC + push {r4, lr} + ldr r2, _0805F850 + ldr r0, _0805F854 + ldr r4, _0805F858 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805F85C + cmp r1, r0 + bne _0805F848 + ldr r0, _0805F860 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805F83C + adds r0, r3, #0 + adds r1, r3, #0 + adds r2, r3, #0 + movs r3, #6 + bl sub_0805D6E0 +_0805F83C: + ldr r0, _0805F864 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0805F868 + str r0, [r1] +_0805F848: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F850: .4byte gUnknown_20205AC +_0805F854: .4byte gUnknown_3005AD0 +_0805F858: .4byte gUnknown_2023D08 +_0805F85C: .4byte sub_08007140 +_0805F860: .4byte gUnknown_2024174 +_0805F864: .4byte gUnknown_3005AC0 +_0805F868: .4byte sub_0805F86C + thumb_func_end sub_0805F7FC + + thumb_func_start sub_0805F86C +sub_0805F86C: @ 0x0805F86C + push {r4, lr} + ldr r0, _0805F8CC + ldr r0, [r0] + ldr r4, _0805F8D0 + ldrb r1, [r4] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0805F8C6 + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805F8C6 + ldr r2, _0805F8D4 + ldr r1, _0805F8D8 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0805F8DC + cmp r1, r0 + beq _0805F8B6 + ldr r0, _0805F8E0 + cmp r1, r0 + bne _0805F8C6 +_0805F8B6: + ldr r0, _0805F8E4 + ldr r1, _0805F8E8 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + bl sub_0805FB04 +_0805F8C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F8CC: .4byte gUnknown_2024174 +_0805F8D0: .4byte gUnknown_2023D08 +_0805F8D4: .4byte gUnknown_20205AC +_0805F8D8: .4byte gUnknown_2023E88 +_0805F8DC: .4byte sub_08007140 +_0805F8E0: .4byte sub_080394FC +_0805F8E4: .4byte gUnknown_30074D0 +_0805F8E8: .4byte 0x0000FFFF + thumb_func_end sub_0805F86C + + thumb_func_start sub_0805F8EC +sub_0805F8EC: @ 0x0805F8EC + push {r4, r5, r6, r7, lr} + ldr r4, _0805F9B0 + ldr r0, [r4] + ldr r5, _0805F9B4 + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r1, [r3, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F9A8 + ldr r7, _0805F9B8 + ldr r6, _0805F9BC + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0805F9C0 + cmp r1, r0 + bne _0805F9A8 + ldrb r1, [r3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3] + ldr r0, [r4] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _0805F9C4 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _0805F9C8 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0805F9CC + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0805F9D0 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r5] + bl sub_08076320 + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldrb r0, [r5] + bl sub_0805E024 + ldr r1, _0805F9D4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805F9D8 + str r1, [r0] +_0805F9A8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F9B0: .4byte gUnknown_2024174 +_0805F9B4: .4byte gUnknown_2023D08 +_0805F9B8: .4byte gUnknown_20205AC +_0805F9BC: .4byte gUnknown_2023E88 +_0805F9C0: .4byte sub_08007140 +_0805F9C4: .4byte 0x000027F9 +_0805F9C8: .4byte gUnknown_3005AD0 +_0805F9CC: .4byte gUnknown_2023D12 +_0805F9D0: .4byte gUnknown_20243E8 +_0805F9D4: .4byte gUnknown_3005AC0 +_0805F9D8: .4byte sub_0805F7FC + thumb_func_end sub_0805F8EC + + thumb_func_start sub_0805F9DC +sub_0805F9DC: @ 0x0805F9DC + push {r4, r5, r6, lr} + ldr r6, _0805FA80 + ldr r0, [r6] + ldr r5, _0805FA84 + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _0805FA0E + ldr r0, _0805FA88 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0805FA8C + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0805FA0E: + ldr r4, _0805FA90 + ldr r0, _0805FA94 + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0805FA98 + cmp r1, r0 + bne _0805FA78 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0805FA78 + adds r0, r3, r4 + bl sub_08006E00 + ldrb r4, [r5] + ldr r1, _0805FA88 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0805FA8C + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _0805FA9C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805FAA0 + str r1, [r0] +_0805FA78: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0805FA80: .4byte gUnknown_2024174 +_0805FA84: .4byte gUnknown_2023D08 +_0805FA88: .4byte gUnknown_2023D12 +_0805FA8C: .4byte gUnknown_20243E8 +_0805FA90: .4byte gUnknown_20205AC +_0805FA94: .4byte gUnknown_3005ADC +_0805FA98: .4byte sub_08007140 +_0805FA9C: .4byte gUnknown_3005AC0 +_0805FAA0: .4byte sub_0805F8EC + thumb_func_end sub_0805F9DC + + thumb_func_start sub_0805FAA4 +sub_0805FAA4: @ 0x0805FAA4 + push {lr} + ldr r0, _0805FACC + ldr r2, [r0] + ldr r0, _0805FAD0 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0805FAC6 + bl sub_0805FB04 +_0805FAC6: + pop {r0} + bx r0 + .align 2, 0 +_0805FACC: .4byte gUnknown_2024174 +_0805FAD0: .4byte gUnknown_2023D08 + thumb_func_end sub_0805FAA4 + + thumb_func_start sub_0805FAD4 +sub_0805FAD4: @ 0x0805FAD4 + push {lr} + ldr r0, _0805FAFC + ldr r2, [r0] + ldr r0, _0805FB00 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0805FAF6 + bl sub_0805FB04 +_0805FAF6: + pop {r0} + bx r0 + .align 2, 0 +_0805FAFC: .4byte gUnknown_2024174 +_0805FB00: .4byte gUnknown_2023D08 + thumb_func_end sub_0805FAD4 + + thumb_func_start sub_0805FB04 +sub_0805FB04: @ 0x0805FB04 + push {r4, lr} + sub sp, #4 + ldr r1, _0805FB44 + ldr r4, _0805FB48 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0805FB4C + str r1, [r0] + ldr r0, _0805FB50 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0805FB58 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _0805FB54 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _0805FB6A + .align 2, 0 +_0805FB44: .4byte gUnknown_3005AC0 +_0805FB48: .4byte gUnknown_2023D08 +_0805FB4C: .4byte sub_0805ED9C +_0805FB50: .4byte gUnknown_2022C90 +_0805FB54: .4byte gUnknown_2022D08 +_0805FB58: + ldr r2, _0805FB74 + ldr r1, _0805FB78 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_0805FB6A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805FB74: .4byte gUnknown_2023D0C +_0805FB78: .4byte gUnknown_82FACB4 + thumb_func_end sub_0805FB04 + + thumb_func_start sub_0805FB7C +sub_0805FB7C: @ 0x0805FB7C + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _0805FBA8 + ldr r0, _0805FBAC + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0805FBB4 + ldr r0, _0805FBB0 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_0805FBF0 + adds r6, r0, #0 + b _0805FBD6 + .align 2, 0 +_0805FBA8: .4byte gUnknown_2022D08 +_0805FBAC: .4byte gUnknown_2023D08 +_0805FBB0: .4byte gUnknown_2023D12 +_0805FBB4: + ldrb r4, [r1] + movs r5, #0 +_0805FBB8: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0805FBCE + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_0805FBF0 + adds r6, r6, r0 +_0805FBCE: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _0805FBB8 +_0805FBD6: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_0805FB04 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0805FB7C + + thumb_func_start sub_0805FBF0 +sub_0805FBF0: @ 0x0805FBF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _0805FC24 + ldr r3, _0805FC28 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _0805FC1A + bl _08060386 +_0805FC1A: + lsls r0, r0, #2 + ldr r1, _0805FC2C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805FC24: .4byte gUnknown_2022D08 +_0805FC28: .4byte gUnknown_2023D08 +_0805FC2C: .4byte _0805FC30 +_0805FC30: @ jump table + .4byte _0805FD20 @ case 0 + .4byte _0805FF44 @ case 1 + .4byte _0805FF54 @ case 2 + .4byte _0805FF64 @ case 3 + .4byte _0805FFCC @ case 4 + .4byte _0805FFCC @ case 5 + .4byte _0805FFCC @ case 6 + .4byte _0805FFCC @ case 7 + .4byte _0805FFE8 @ case 8 + .4byte _08060024 @ case 9 + .4byte _08060024 @ case 10 + .4byte _08060024 @ case 11 + .4byte _08060024 @ case 12 + .4byte _08060386 @ case 13 + .4byte _08060386 @ case 14 + .4byte _08060386 @ case 15 + .4byte _08060386 @ case 16 + .4byte _08060040 @ case 17 + .4byte _08060050 @ case 18 + .4byte _08060080 @ case 19 + .4byte _08060090 @ case 20 + .4byte _080600A0 @ case 21 + .4byte _080600B0 @ case 22 + .4byte _080600C0 @ case 23 + .4byte _080600D0 @ case 24 + .4byte _080600E0 @ case 25 + .4byte _080600F0 @ case 26 + .4byte _08060100 @ case 27 + .4byte _08060110 @ case 28 + .4byte _08060120 @ case 29 + .4byte _08060130 @ case 30 + .4byte _08060140 @ case 31 + .4byte _08060190 @ case 32 + .4byte _080601A0 @ case 33 + .4byte _080601B0 @ case 34 + .4byte _080601C0 @ case 35 + .4byte _080601D0 @ case 36 + .4byte _080601E0 @ case 37 + .4byte _080601F0 @ case 38 + .4byte _08060200 @ case 39 + .4byte _08060210 @ case 40 + .4byte _08060244 @ case 41 + .4byte _08060254 @ case 42 + .4byte _08060264 @ case 43 + .4byte _08060274 @ case 44 + .4byte _08060284 @ case 45 + .4byte _08060294 @ case 46 + .4byte _080602A4 @ case 47 + .4byte _080602B4 @ case 48 + .4byte _080602D4 @ case 49 + .4byte _080602E4 @ case 50 + .4byte _080602F4 @ case 51 + .4byte _08060304 @ case 52 + .4byte _08060314 @ case 53 + .4byte _08060324 @ case 54 + .4byte _08060334 @ case 55 + .4byte _08060344 @ case 56 + .4byte _08060354 @ case 57 + .4byte _08060364 @ case 58 + .4byte _08060374 @ case 59 +_0805FD20: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805FF34 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_0805FD6C: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0805FD6C + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0805FF34 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _0805FF38 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _0805FF3C + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _0805FF40 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_0805FF24: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _0805FF24 + b _08060386 + .align 2, 0 +_0805FF34: .4byte gUnknown_20243E8 +_0805FF38: .4byte 0xFFFFFC1F +_0805FF3C: .4byte 0xFFF07FFF +_0805FF40: .4byte 0xFFFFFE0F +_0805FF44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805FF50 + adds r0, r0, r1 + movs r1, #0xb + b _080602BE + .align 2, 0 +_0805FF50: .4byte gUnknown_20243E8 +_0805FF54: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805FF60 + adds r0, r0, r1 + movs r1, #0xc + b _080602BE + .align 2, 0 +_0805FF60: .4byte gUnknown_20243E8 +_0805FF64: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0805FFC8 + adds r4, r1, r0 + mov r8, sb +_0805FF7A: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _0805FF7A + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805FFC8 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_0805FFB8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _0805FFB8 + b _08060386 + .align 2, 0 +_0805FFC8: .4byte gUnknown_20243E8 +_0805FFCC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0805FFE4 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _080602BE + .align 2, 0 +_0805FFE4: .4byte gUnknown_20243E8 +_0805FFE8: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _08060020 + mov r8, r2 +_0805FFF4: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _0805FFF4 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060020 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _08060386 + .align 2, 0 +_08060020: .4byte gUnknown_20243E8 +_08060024: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806003C + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _0806037E + .align 2, 0 +_0806003C: .4byte gUnknown_20243E8 +_08060040: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806004C + adds r0, r0, r1 + movs r1, #1 + b _0806005A + .align 2, 0 +_0806004C: .4byte gUnknown_20243E8 +_08060050: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806007C + adds r0, r0, r1 + movs r1, #0x19 +_0806005A: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _08060386 + .align 2, 0 +_0806007C: .4byte gUnknown_20243E8 +_08060080: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806008C + adds r0, r0, r1 + movs r1, #0x1a + b _0806037E + .align 2, 0 +_0806008C: .4byte gUnknown_20243E8 +_08060090: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806009C + adds r0, r0, r1 + movs r1, #0x1b + b _0806037E + .align 2, 0 +_0806009C: .4byte gUnknown_20243E8 +_080600A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600AC + adds r0, r0, r1 + movs r1, #0x1c + b _0806037E + .align 2, 0 +_080600AC: .4byte gUnknown_20243E8 +_080600B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600BC + adds r0, r0, r1 + movs r1, #0x1d + b _0806037E + .align 2, 0 +_080600BC: .4byte gUnknown_20243E8 +_080600C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600CC + adds r0, r0, r1 + movs r1, #0x1e + b _0806037E + .align 2, 0 +_080600CC: .4byte gUnknown_20243E8 +_080600D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600DC + adds r0, r0, r1 + movs r1, #0x1f + b _0806037E + .align 2, 0 +_080600DC: .4byte gUnknown_20243E8 +_080600E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600EC + adds r0, r0, r1 + movs r1, #0x20 + b _0806037E + .align 2, 0 +_080600EC: .4byte gUnknown_20243E8 +_080600F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080600FC + adds r0, r0, r1 + movs r1, #0x22 + b _0806037E + .align 2, 0 +_080600FC: .4byte gUnknown_20243E8 +_08060100: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806010C + adds r0, r0, r1 + movs r1, #0x23 + b _0806037E + .align 2, 0 +_0806010C: .4byte gUnknown_20243E8 +_08060110: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806011C + adds r0, r0, r1 + movs r1, #0x24 + b _0806037E + .align 2, 0 +_0806011C: .4byte gUnknown_20243E8 +_08060120: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806012C + adds r0, r0, r1 + movs r1, #0x25 + b _0806037E + .align 2, 0 +_0806012C: .4byte gUnknown_20243E8 +_08060130: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806013C + adds r0, r0, r1 + movs r1, #0x26 + b _0806037E + .align 2, 0 +_0806013C: .4byte gUnknown_20243E8 +_08060140: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0806018C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _08060386 + .align 2, 0 +_0806018C: .4byte gUnknown_20243E8 +_08060190: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806019C + adds r0, r0, r1 + movs r1, #0x27 + b _0806037E + .align 2, 0 +_0806019C: .4byte gUnknown_20243E8 +_080601A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601AC + adds r0, r0, r1 + movs r1, #0x28 + b _0806037E + .align 2, 0 +_080601AC: .4byte gUnknown_20243E8 +_080601B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601BC + adds r0, r0, r1 + movs r1, #0x29 + b _0806037E + .align 2, 0 +_080601BC: .4byte gUnknown_20243E8 +_080601C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601CC + adds r0, r0, r1 + movs r1, #0x2a + b _0806037E + .align 2, 0 +_080601CC: .4byte gUnknown_20243E8 +_080601D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601DC + adds r0, r0, r1 + movs r1, #0x2b + b _0806037E + .align 2, 0 +_080601DC: .4byte gUnknown_20243E8 +_080601E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601EC + adds r0, r0, r1 + movs r1, #0x2c + b _0806037E + .align 2, 0 +_080601EC: .4byte gUnknown_20243E8 +_080601F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080601FC + adds r0, r0, r1 + movs r1, #0 + b _0806021A + .align 2, 0 +_080601FC: .4byte gUnknown_20243E8 +_08060200: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806020C + adds r0, r0, r1 + movs r1, #9 + b _080602BE + .align 2, 0 +_0806020C: .4byte gUnknown_20243E8 +_08060210: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060240 + adds r0, r0, r1 + movs r1, #0x37 +_0806021A: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _08060386 + .align 2, 0 +_08060240: .4byte gUnknown_20243E8 +_08060244: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060250 + adds r0, r0, r1 + movs r1, #0x38 + b _0806037E + .align 2, 0 +_08060250: .4byte gUnknown_20243E8 +_08060254: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060260 + adds r0, r0, r1 + movs r1, #0x39 + b _080602BE + .align 2, 0 +_08060260: .4byte gUnknown_20243E8 +_08060264: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060270 + adds r0, r0, r1 + movs r1, #0x3a + b _080602BE + .align 2, 0 +_08060270: .4byte gUnknown_20243E8 +_08060274: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060280 + adds r0, r0, r1 + movs r1, #0x3b + b _080602BE + .align 2, 0 +_08060280: .4byte gUnknown_20243E8 +_08060284: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060290 + adds r0, r0, r1 + movs r1, #0x3c + b _080602BE + .align 2, 0 +_08060290: .4byte gUnknown_20243E8 +_08060294: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080602A0 + adds r0, r0, r1 + movs r1, #0x3d + b _080602BE + .align 2, 0 +_080602A0: .4byte gUnknown_20243E8 +_080602A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080602B0 + adds r0, r0, r1 + movs r1, #0x3e + b _080602BE + .align 2, 0 +_080602B0: .4byte gUnknown_20243E8 +_080602B4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080602D0 + adds r0, r0, r1 + movs r1, #0x3f +_080602BE: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _08060386 + .align 2, 0 +_080602D0: .4byte gUnknown_20243E8 +_080602D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080602E0 + adds r0, r0, r1 + movs r1, #0x16 + b _0806037E + .align 2, 0 +_080602E0: .4byte gUnknown_20243E8 +_080602E4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080602F0 + adds r0, r0, r1 + movs r1, #0x17 + b _0806037E + .align 2, 0 +_080602F0: .4byte gUnknown_20243E8 +_080602F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060300 + adds r0, r0, r1 + movs r1, #0x18 + b _0806037E + .align 2, 0 +_08060300: .4byte gUnknown_20243E8 +_08060304: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060310 + adds r0, r0, r1 + movs r1, #0x21 + b _0806037E + .align 2, 0 +_08060310: .4byte gUnknown_20243E8 +_08060314: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060320 + adds r0, r0, r1 + movs r1, #0x2f + b _0806037E + .align 2, 0 +_08060320: .4byte gUnknown_20243E8 +_08060324: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060330 + adds r0, r0, r1 + movs r1, #0x30 + b _0806037E + .align 2, 0 +_08060330: .4byte gUnknown_20243E8 +_08060334: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060340 + adds r0, r0, r1 + movs r1, #0x32 + b _0806037E + .align 2, 0 +_08060340: .4byte gUnknown_20243E8 +_08060344: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060350 + adds r0, r0, r1 + movs r1, #0x33 + b _0806037E + .align 2, 0 +_08060350: .4byte gUnknown_20243E8 +_08060354: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060360 + adds r0, r0, r1 + movs r1, #0x34 + b _0806037E + .align 2, 0 +_08060360: .4byte gUnknown_20243E8 +_08060364: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060370 + adds r0, r0, r1 + movs r1, #0x35 + b _0806037E + .align 2, 0 +_08060370: .4byte gUnknown_20243E8 +_08060374: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060398 + adds r0, r0, r1 + movs r1, #0x36 +_0806037E: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_08060386: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08060398: .4byte gUnknown_20243E8 + thumb_func_end sub_0805FBF0 + + thumb_func_start sub_0806039C +sub_0806039C: @ 0x0806039C + push {r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r2, _08060414 + ldr r5, _08060418 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + adds r4, r2, #0 + muls r4, r0, r4 + ldr r3, _0806041C + lsls r1, r1, #9 + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r2, [r0] + ldr r0, _08060420 + adds r0, r2, r0 + adds r6, r4, r0 + mov r0, sp + adds r4, r0, r2 + movs r2, #0 + adds r0, r3, #2 + adds r1, r1, r0 + adds r7, r5, #0 + mov ip, r3 + ldrb r1, [r1] + cmp r2, r1 + bhs _080603F2 + adds r3, r0, #0 +_080603D8: + adds r1, r4, r2 + adds r0, r6, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r5] + lsls r0, r0, #9 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r2, r0 + blo _080603D8 +_080603F2: + ldrb r0, [r7] + lsls r0, r0, #9 + mov r1, ip + adds r1, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + adds r2, r4, #0 + bl sub_08033E70 + bl sub_0805FB04 + add sp, #0x58 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08060414: .4byte gUnknown_2023D12 +_08060418: .4byte gUnknown_2023D08 +_0806041C: .4byte gUnknown_2022D08 +_08060420: .4byte gUnknown_20243E8 + thumb_func_end sub_0806039C + + thumb_func_start sub_08060424 +sub_08060424: @ 0x08060424 + push {r4, r5, lr} + ldr r1, _08060448 + ldr r0, _0806044C + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08060454 + ldr r0, _08060450 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0806047C + b _08060472 + .align 2, 0 +_08060448: .4byte gUnknown_2022D08 +_0806044C: .4byte gUnknown_2023D08 +_08060450: .4byte gUnknown_2023D12 +_08060454: + ldrb r4, [r1] + movs r5, #0 +_08060458: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08060466 + adds r0, r5, #0 + bl sub_0806047C +_08060466: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08060458 +_08060472: + bl sub_0805FB04 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08060424 + + thumb_func_start sub_0806047C +sub_0806047C: @ 0x0806047C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r3, _080604B4 + ldrb r0, [r3] + lsls r0, r0, #9 + ldr r2, _080604B8 + adds r4, r0, r2 + adds r7, r4, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r6, r3, #0 + adds r3, r2, #0 + cmp r0, #0x3b + bls _080604AA + bl _08060D88 +_080604AA: + lsls r0, r0, #2 + ldr r1, _080604BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080604B4: .4byte gUnknown_2023D08 +_080604B8: .4byte gUnknown_2022D0B +_080604BC: .4byte _080604C0 +_080604C0: @ jump table + .4byte _080605B0 @ case 0 + .4byte _08060748 @ case 1 + .4byte _08060764 @ case 2 + .4byte _08060780 @ case 3 + .4byte _080607D4 @ case 4 + .4byte _080607D4 @ case 5 + .4byte _080607D4 @ case 6 + .4byte _080607D4 @ case 7 + .4byte _080607F4 @ case 8 + .4byte _0806085C @ case 9 + .4byte _0806085C @ case 10 + .4byte _0806085C @ case 11 + .4byte _0806085C @ case 12 + .4byte _08060D88 @ case 13 + .4byte _08060D88 @ case 14 + .4byte _08060D88 @ case 15 + .4byte _08060D88 @ case 16 + .4byte _08060884 @ case 17 + .4byte _080608A0 @ case 18 + .4byte _080608BC @ case 19 + .4byte _080608D8 @ case 20 + .4byte _080608F4 @ case 21 + .4byte _08060910 @ case 22 + .4byte _0806092C @ case 23 + .4byte _08060948 @ case 24 + .4byte _08060964 @ case 25 + .4byte _08060980 @ case 26 + .4byte _0806099C @ case 27 + .4byte _080609B8 @ case 28 + .4byte _080609D4 @ case 29 + .4byte _080609F0 @ case 30 + .4byte _08060A0C @ case 31 + .4byte _08060A80 @ case 32 + .4byte _08060A9C @ case 33 + .4byte _08060AB8 @ case 34 + .4byte _08060AD4 @ case 35 + .4byte _08060AF0 @ case 36 + .4byte _08060B0C @ case 37 + .4byte _08060B28 @ case 38 + .4byte _08060B44 @ case 39 + .4byte _08060B60 @ case 40 + .4byte _08060B7C @ case 41 + .4byte _08060B98 @ case 42 + .4byte _08060BB4 @ case 43 + .4byte _08060BD0 @ case 44 + .4byte _08060BEC @ case 45 + .4byte _08060C08 @ case 46 + .4byte _08060C24 @ case 47 + .4byte _08060C40 @ case 48 + .4byte _08060C5C @ case 49 + .4byte _08060C78 @ case 50 + .4byte _08060C94 @ case 51 + .4byte _08060CB0 @ case 52 + .4byte _08060CCC @ case 53 + .4byte _08060CE8 @ case 54 + .4byte _08060D04 @ case 55 + .4byte _08060D20 @ case 56 + .4byte _08060D3C @ case 57 + .4byte _08060D58 @ case 58 + .4byte _08060D74 @ case 59 +_080605B0: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08060744 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r7, #0 + bl sub_0806A774 + adds r2, r7, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r7 + mov sl, r0 + adds r0, r7, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r7, #2 + str r0, [sp, #4] + adds r0, r7, #4 + str r0, [sp, #8] + adds r0, r7, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r6, r7, #0 + adds r6, #0x24 + adds r4, r7, #0 + adds r4, #0xc +_08060616: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _08060616 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08060744 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r7, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r7, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060744: .4byte gUnknown_20243E8 +_08060748: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060760 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xb + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060760: .4byte gUnknown_20243E8 +_08060764: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806077C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xc + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_0806077C: .4byte gUnknown_20243E8 +_08060780: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r4 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080607D0 + adds r7, r1, r0 + adds r6, r4, #0 + adds r6, #8 +_08060798: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _08060798 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080607D0 + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080607D0: .4byte gUnknown_20243E8 +_080607D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080607EC + adds r0, r0, r1 + ldr r3, _080607F0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _08060872 + .align 2, 0 +_080607EC: .4byte gUnknown_20243E8 +_080607F0: .4byte gUnknown_2022D08 +_080607F4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08060858 + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x11 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060858: .4byte gUnknown_20243E8 +_0806085C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806087C + adds r0, r0, r1 + ldr r3, _08060880 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_08060872: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_0806087C: .4byte gUnknown_20243E8 +_08060880: .4byte gUnknown_2022D08 +_08060884: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806089C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #1 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_0806089C: .4byte gUnknown_20243E8 +_080608A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080608B8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x19 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080608B8: .4byte gUnknown_20243E8 +_080608BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080608D4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1a + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080608D4: .4byte gUnknown_20243E8 +_080608D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080608F0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1b + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080608F0: .4byte gUnknown_20243E8 +_080608F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806090C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1c + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_0806090C: .4byte gUnknown_20243E8 +_08060910: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060928 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1d + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060928: .4byte gUnknown_20243E8 +_0806092C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060944 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1e + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060944: .4byte gUnknown_20243E8 +_08060948: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060960 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1f + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060960: .4byte gUnknown_20243E8 +_08060964: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806097C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x20 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_0806097C: .4byte gUnknown_20243E8 +_08060980: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060998 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x22 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060998: .4byte gUnknown_20243E8 +_0806099C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080609B4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x23 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080609B4: .4byte gUnknown_20243E8 +_080609B8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080609D0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x24 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080609D0: .4byte gUnknown_20243E8 +_080609D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080609EC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x25 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_080609EC: .4byte gUnknown_20243E8 +_080609F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060A08 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x26 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060A08: .4byte gUnknown_20243E8 +_08060A0C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08060A7C + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x27 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _08060B1A + .align 2, 0 +_08060A7C: .4byte gUnknown_20243E8 +_08060A80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060A98 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x27 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060A98: .4byte gUnknown_20243E8 +_08060A9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060AB4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x28 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060AB4: .4byte gUnknown_20243E8 +_08060AB8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060AD0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x29 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060AD0: .4byte gUnknown_20243E8 +_08060AD4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060AEC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2a + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060AEC: .4byte gUnknown_20243E8 +_08060AF0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B08 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2b + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B08: .4byte gUnknown_20243E8 +_08060B0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B24 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 +_08060B1A: + movs r1, #0x2c + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B24: .4byte gUnknown_20243E8 +_08060B28: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B40 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B40: .4byte gUnknown_20243E8 +_08060B44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B5C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #9 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B5C: .4byte gUnknown_20243E8 +_08060B60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B78 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x37 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B78: .4byte gUnknown_20243E8 +_08060B7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060B94 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x38 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060B94: .4byte gUnknown_20243E8 +_08060B98: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060BB0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x39 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060BB0: .4byte gUnknown_20243E8 +_08060BB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060BCC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3a + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060BCC: .4byte gUnknown_20243E8 +_08060BD0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060BE8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3b + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060BE8: .4byte gUnknown_20243E8 +_08060BEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C04 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3c + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C04: .4byte gUnknown_20243E8 +_08060C08: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C20 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3d + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C20: .4byte gUnknown_20243E8 +_08060C24: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C3C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3e + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C3C: .4byte gUnknown_20243E8 +_08060C40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C58 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3f + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C58: .4byte gUnknown_20243E8 +_08060C5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C74 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x16 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C74: .4byte gUnknown_20243E8 +_08060C78: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060C90 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x17 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060C90: .4byte gUnknown_20243E8 +_08060C94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060CAC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x18 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060CAC: .4byte gUnknown_20243E8 +_08060CB0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060CC8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x21 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060CC8: .4byte gUnknown_20243E8 +_08060CCC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060CE4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2f + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060CE4: .4byte gUnknown_20243E8 +_08060CE8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D00 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x30 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060D00: .4byte gUnknown_20243E8 +_08060D04: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D1C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x32 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060D1C: .4byte gUnknown_20243E8 +_08060D20: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D38 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x33 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060D38: .4byte gUnknown_20243E8 +_08060D3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D54 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x34 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060D54: .4byte gUnknown_20243E8 +_08060D58: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D70 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x35 + bl sub_0806A774 + b _08060D88 + .align 2, 0 +_08060D70: .4byte gUnknown_20243E8 +_08060D74: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08060D98 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x36 + bl sub_0806A774 +_08060D88: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08060D98: .4byte gUnknown_20243E8 + thumb_func_end sub_0806047C + + thumb_func_start sub_08060D9C +sub_08060D9C: @ 0x08060D9C + push {r4, r5, r6, r7, lr} + ldr r1, _08060E00 + ldr r7, _08060E04 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _08060E08 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _08060E0C + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _08060DF4 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_08060DD2: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _08060DD2 +_08060DF4: + bl sub_0805FB04 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08060E00: .4byte gUnknown_2023D12 +_08060E04: .4byte gUnknown_2023D08 +_08060E08: .4byte gUnknown_2022D08 +_08060E0C: .4byte gUnknown_20243E8 + thumb_func_end sub_08060D9C + + thumb_func_start sub_08060E10 +sub_08060E10: @ 0x08060E10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r6, _08060F40 + ldrb r0, [r6] + lsls r0, r0, #1 + ldr r1, _08060F44 + adds r0, r0, r1 + ldrh r0, [r0] + movs r7, #0x64 + muls r0, r7, r0 + ldr r2, _08060F48 + mov sl, r2 + add r0, sl + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldrb r1, [r6] + lsls r0, r1, #1 + ldr r2, _08060F44 + adds r0, r0, r2 + ldrh r0, [r0] + muls r0, r7, r0 + add r0, sl + bl sub_0805D828 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _08060F4C + mov sb, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sb + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _08060F50 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _08060F54 + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08060F58 + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08060F5C + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldrb r4, [r6] + lsls r0, r4, #1 + ldr r2, _08060F44 + adds r0, r0, r2 + ldrh r0, [r0] + muls r0, r7, r0 + add r0, sl + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _08060F60 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08060F64 + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08060F40: .4byte gUnknown_2023D08 +_08060F44: .4byte gUnknown_2023D12 +_08060F48: .4byte gUnknown_20243E8 +_08060F4C: .4byte gUnknown_2024640 +_08060F50: .4byte gUnknown_2023E88 +_08060F54: .4byte gUnknown_20205AC +_08060F58: .4byte 0x0000FF10 +_08060F5C: .4byte gUnknown_2024188 +_08060F60: .4byte gUnknown_3005AC0 +_08060F64: .4byte sub_0805F580 + thumb_func_end sub_08060E10 + + thumb_func_start sub_08060F68 +sub_08060F68: @ 0x08060F68 + push {r4, lr} + ldr r4, _08060FB0 + ldrb r0, [r4] + ldr r1, _08060FB4 + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x5c + movs r1, #6 + strb r1, [r0] + ldr r1, _08060FB8 + ldrb r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r1 + ldr r3, _08060FBC + lsls r0, r0, #9 + adds r1, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, #9 + adds r3, #2 + adds r1, r1, r3 + ldrb r1, [r1] + bl sub_08060FC8 + ldr r1, _08060FC0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08060FC4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08060FB0: .4byte gUnknown_2023D08 +_08060FB4: .4byte gUnknown_2024140 +_08060FB8: .4byte gUnknown_2023D12 +_08060FBC: .4byte gUnknown_2022D08 +_08060FC0: .4byte gUnknown_3005AC0 +_08060FC4: .4byte sub_0805F9DC + thumb_func_end sub_08060F68 + + thumb_func_start sub_08060FC8 +sub_08060FC8: @ 0x08060FC8 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _08061130 + lsls r4, r6, #1 + adds r4, r4, r0 + ldr r0, _08061134 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, #0x64 + mov sb, r1 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + ldr r5, _08061138 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0806113C + bl sub_0806F0C4 + ldr r1, _08061140 + mov sl, r1 + add sl, r6 + mov r1, sl + strb r0, [r1] + ldrh r0, [r4] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r5 + adds r1, r6, #0 + bl sub_0805D828 + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _08061144 + mov sb, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sb + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _08061148 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0806114C + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08061150 + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08061154 + str r1, [r0] + movs r0, #0 + movs r1, #0xfe + bl sub_08074DF0 + mov r1, sl + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08061130: .4byte gUnknown_2023D12 +_08061134: .4byte gUnknown_2022D08 +_08061138: .4byte gUnknown_20243E8 +_0806113C: .4byte sub_0805D330 +_08061140: .4byte gUnknown_3005ADC +_08061144: .4byte gUnknown_2024640 +_08061148: .4byte gUnknown_2023E88 +_0806114C: .4byte gUnknown_20205AC +_08061150: .4byte gUnknown_2024188 +_08061154: .4byte sub_08007140 + thumb_func_end sub_08060FC8 + + thumb_func_start sub_08061158 +sub_08061158: @ 0x08061158 + push {r4, r5, r6, lr} + ldr r1, _0806118C + ldr r6, _08061190 + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _080611A0 + ldr r0, _08061194 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _08061198 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0806119C + str r1, [r0] + b _080611DC + .align 2, 0 +_0806118C: .4byte gUnknown_2022D08 +_08061190: .4byte gUnknown_2023D08 +_08061194: .4byte gUnknown_2024174 +_08061198: .4byte gUnknown_3005AC0 +_0806119C: .4byte sub_080611F0 +_080611A0: + ldr r5, _080611E4 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080611E8 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _080611EC + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0805FB04 +_080611DC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080611E4: .4byte gUnknown_2023E88 +_080611E8: .4byte gUnknown_20205AC +_080611EC: .4byte gUnknown_3005AD0 + thumb_func_end sub_08061158 + + thumb_func_start sub_080611F0 +sub_080611F0: @ 0x080611F0 + push {r4, r5, r6, lr} + ldr r6, _08061210 + ldr r4, [r6] + ldr r5, _08061214 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _08061218 + cmp r0, #1 + beq _08061246 + b _0806126E + .align 2, 0 +_08061210: .4byte gUnknown_2024174 +_08061214: .4byte gUnknown_2023D08 +_08061218: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08061232 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08061232: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0806126E +_08061246: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0806126E + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #2 + bl sub_0805D6E0 + ldr r1, _08061274 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061278 + str r1, [r0] +_0806126E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08061274: .4byte gUnknown_3005AC0 +_08061278: .4byte sub_0805F6F4 + thumb_func_end sub_080611F0 + + thumb_func_start sub_0806127C +sub_0806127C: @ 0x0806127C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _08061298 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r2 + cmp r0, #0 + beq _0806129C + bl sub_0806B2F8 + b _08061346 + .align 2, 0 +_08061298: .4byte gUnknown_2022C90 +_0806129C: + ldr r3, _080612AC + ldrh r1, [r3] + ldr r0, _080612B0 + cmp r1, r0 + bne _080612B4 + bl sub_081A48AC + b _08061346 + .align 2, 0 +_080612AC: .4byte gUnknown_203886A +_080612B0: .4byte 0x000003FE +_080612B4: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r2 + cmp r0, #0 + beq _080612F4 + movs r0, #0x80 + lsls r0, r0, #8 + ands r2, r0 + cmp r2, #0 + beq _080612EC + ldr r0, _080612D8 + ldrb r0, [r0] + cmp r0, #1 + bne _080612DC + ldrh r0, [r3] + bl sub_081D4BE4 + b _08061346 + .align 2, 0 +_080612D8: .4byte gUnknown_2023D08 +_080612DC: + ldr r0, _080612E8 + ldrh r0, [r0] + bl sub_081D4BE4 + b _08061346 + .align 2, 0 +_080612E8: .4byte gUnknown_203886C +_080612EC: + ldrh r0, [r3] + bl sub_081D4BE4 + b _08061346 +_080612F4: + ldr r0, _08061314 + ands r0, r2 + cmp r0, #0 + beq _08061338 + ldr r0, _08061318 + ands r2, r0 + cmp r2, #0 + beq _08061330 + ldr r0, _0806131C + ldrb r0, [r0] + cmp r0, #1 + bne _08061320 + ldrh r0, [r3] + bl sub_081629A4 + b _08061346 + .align 2, 0 +_08061314: .4byte 0x003F0100 +_08061318: .4byte 0x00808000 +_0806131C: .4byte gUnknown_2023D08 +_08061320: + ldr r0, _0806132C + ldrh r0, [r0] + bl sub_081629A4 + b _08061346 + .align 2, 0 +_0806132C: .4byte gUnknown_203886C +_08061330: + ldrh r0, [r3] + bl sub_081629A4 + b _08061346 +_08061338: + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r2 + cmp r0, #0 + beq _0806134C + bl sub_081650C0 +_08061346: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _0806137E +_0806134C: + movs r0, #0x80 + lsls r0, r0, #8 + ands r2, r0 + cmp r2, #0 + beq _08061374 + ldr r0, _08061368 + ldrb r0, [r0] + cmp r0, #1 + beq _08061374 + ldr r1, _0806136C + ldr r0, _08061370 + ldrh r0, [r0] + b _08061378 + .align 2, 0 +_08061368: .4byte gUnknown_2023D08 +_0806136C: .4byte gUnknown_82E383C +_08061370: .4byte gUnknown_203886C +_08061374: + ldr r1, _080613A0 + ldrh r0, [r3] +_08061378: + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r4, [r0, #3] +_0806137E: + ldr r0, _080613A4 + ldr r0, [r0] + ldr r1, _080613A8 + ands r0, r1 + cmp r0, #0 + beq _080613B0 + ldr r0, _080613AC + ldrb r0, [r0] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r7, #0xc8 + cmp r1, #0 + beq _080613B2 + movs r7, #0x98 + b _080613B2 + .align 2, 0 +_080613A0: .4byte gUnknown_82E383C +_080613A4: .4byte gUnknown_2022C90 +_080613A8: .4byte 0x00008040 +_080613AC: .4byte gUnknown_2023D08 +_080613B0: + movs r7, #0xb0 +_080613B2: + mov r8, r4 + ldr r5, _08061498 + ldrb r1, [r5] + mov r0, r8 + bl sub_0805DB54 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069C6C + ldr r6, _0806149C + mov sb, r7 + ldr r1, _080614A0 + mov r2, r8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r0, #0xa0 + lsls r0, r0, #0xe + adds r4, r4, r0 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _080614A4 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _080614A8 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _080614AC + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #0x2e] + ldr r1, _080614B0 + mov r2, r8 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_0800851C + ldrb r1, [r5] + adds r1, r1, r6 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r4 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r1, r8 + strh r1, [r0, #6] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _080614B4 + str r1, [r0] + ldr r1, _080614B8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080614BC + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08061498: .4byte gUnknown_2023D08 +_0806149C: .4byte gUnknown_2024640 +_080614A0: .4byte gUnknown_82D8D70 +_080614A4: .4byte gUnknown_2023E88 +_080614A8: .4byte gUnknown_20205AC +_080614AC: .4byte 0x0000FF10 +_080614B0: .4byte gUnknown_82D91CC +_080614B4: .4byte sub_0805D3C8 +_080614B8: .4byte gUnknown_3005AC0 +_080614BC: .4byte sub_0805EDEC + thumb_func_end sub_0806127C + + thumb_func_start sub_080614C0 +sub_080614C0: @ 0x080614C0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _080614DC + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r2 + cmp r0, #0 + beq _080614E0 + bl sub_0806B2F8 + b _0806158A + .align 2, 0 +_080614DC: .4byte gUnknown_2022C90 +_080614E0: + ldr r3, _080614F0 + ldrh r1, [r3] + ldr r0, _080614F4 + cmp r1, r0 + bne _080614F8 + bl sub_081A48AC + b _0806158A + .align 2, 0 +_080614F0: .4byte gUnknown_203886A +_080614F4: .4byte 0x000003FE +_080614F8: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r2 + cmp r0, #0 + beq _08061538 + movs r0, #0x80 + lsls r0, r0, #8 + ands r2, r0 + cmp r2, #0 + beq _08061530 + ldr r0, _0806151C + ldrb r0, [r0] + cmp r0, #1 + bne _08061520 + ldrh r0, [r3] + bl sub_081D4BE4 + b _0806158A + .align 2, 0 +_0806151C: .4byte gUnknown_2023D08 +_08061520: + ldr r0, _0806152C + ldrh r0, [r0] + bl sub_081D4BE4 + b _0806158A + .align 2, 0 +_0806152C: .4byte gUnknown_203886C +_08061530: + ldrh r0, [r3] + bl sub_081D4BE4 + b _0806158A +_08061538: + ldr r0, _08061558 + ands r0, r2 + cmp r0, #0 + beq _0806157C + ldr r0, _0806155C + ands r2, r0 + cmp r2, #0 + beq _08061574 + ldr r0, _08061560 + ldrb r0, [r0] + cmp r0, #1 + bne _08061564 + ldrh r0, [r3] + bl sub_081629A4 + b _0806158A + .align 2, 0 +_08061558: .4byte 0x003F0100 +_0806155C: .4byte 0x00808000 +_08061560: .4byte gUnknown_2023D08 +_08061564: + ldr r0, _08061570 + ldrh r0, [r0] + bl sub_081629A4 + b _0806158A + .align 2, 0 +_08061570: .4byte gUnknown_203886C +_08061574: + ldrh r0, [r3] + bl sub_081629A4 + b _0806158A +_0806157C: + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r2 + cmp r0, #0 + beq _08061590 + bl sub_081650C0 +_0806158A: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080615C2 +_08061590: + movs r0, #0x80 + lsls r0, r0, #8 + ands r2, r0 + cmp r2, #0 + beq _080615B8 + ldr r0, _080615AC + ldrb r0, [r0] + cmp r0, #1 + beq _080615B8 + ldr r1, _080615B0 + ldr r0, _080615B4 + ldrh r0, [r0] + b _080615BC + .align 2, 0 +_080615AC: .4byte gUnknown_2023D08 +_080615B0: .4byte gUnknown_82E383C +_080615B4: .4byte gUnknown_203886C +_080615B8: + ldr r1, _080616A8 + ldrh r0, [r3] +_080615BC: + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #3] +_080615C2: + mov r8, r0 + ldr r6, _080616AC + ldrb r1, [r6] + bl sub_0805DB54 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069C6C + ldr r0, _080616B0 + ldr r2, _080616B4 + mov r3, r8 + lsls r1, r3, #2 + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xe + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0xb0 + movs r3, #0x1e + bl sub_08006B0C + ldr r5, _080616B8 + ldrb r1, [r6] + adds r1, r1, r5 + strb r0, [r1] + ldr r4, _080616BC + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x60 + strh r1, [r0, #0x24] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x20] + adds r1, #0x20 + strh r1, [r0, #0x20] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _080616C0 + strh r1, [r0, #0x2e] + ldr r1, _080616C4 + mov r2, r8 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_0800851C + ldrb r1, [r6] + adds r1, r1, r5 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r4 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r3, r8 + strh r3, [r0, #6] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _080616C8 + str r1, [r0] + ldr r1, _080616CC + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080616D0 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080616A8: .4byte gUnknown_82E383C +_080616AC: .4byte gUnknown_2023D08 +_080616B0: .4byte gUnknown_2024640 +_080616B4: .4byte gUnknown_82D8D70 +_080616B8: .4byte gUnknown_2023E88 +_080616BC: .4byte gUnknown_20205AC +_080616C0: .4byte 0x0000FFFE +_080616C4: .4byte gUnknown_82D91CC +_080616C8: .4byte sub_0805D3C8 +_080616CC: .4byte gUnknown_3005AC0 +_080616D0: .4byte sub_0805EE24 + thumb_func_end sub_080614C0 + + thumb_func_start sub_080616D4 +sub_080616D4: @ 0x080616D4 + push {r4, r5, r6, lr} + ldr r6, _08061764 + ldr r4, _08061768 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0806176C + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08061770 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08061774 + bl sub_080A5B9C + ldr r1, _08061778 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0806177C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08061764: .4byte gUnknown_2023E88 +_08061768: .4byte gUnknown_2023D08 +_0806176C: .4byte gUnknown_20205AC +_08061770: .4byte sub_080A67B4 +_08061774: .4byte sub_08007140 +_08061778: .4byte gUnknown_3005AC0 +_0806177C: .4byte sub_0805EE5C + thumb_func_end sub_080616D4 + + thumb_func_start sub_08061780 +sub_08061780: @ 0x08061780 + push {r4, r5, r6, lr} + ldr r6, _080617CC + ldr r4, [r6] + ldr r5, _080617D0 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _080617D4 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080617B4 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_080617B4: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _08061810 + .align 2, 0 +_080617CC: .4byte gUnknown_2024174 +_080617D0: .4byte gUnknown_2023D08 +_080617D4: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08061810 + strb r0, [r3, #4] + movs r0, #0x10 + movs r1, #0x3f + bl sub_080A307C + ldr r2, _08061818 + ldr r1, _0806181C + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08061820 + str r1, [r0] + ldr r1, _08061824 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061828 + str r1, [r0] +_08061810: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08061818: .4byte gUnknown_20205AC +_0806181C: .4byte gUnknown_2023E88 +_08061820: .4byte sub_08039578 +_08061824: .4byte gUnknown_3005AC0 +_08061828: .4byte sub_0805F6B0 + thumb_func_end sub_08061780 + + thumb_func_start sub_0806182C +sub_0806182C: @ 0x0806182C + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806182C + + thumb_func_start sub_08061838 +sub_08061838: @ 0x08061838 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061838 + + thumb_func_start sub_08061844 +sub_08061844: @ 0x08061844 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061844 + + thumb_func_start sub_08061850 +sub_08061850: @ 0x08061850 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061850 + + thumb_func_start sub_0806185C +sub_0806185C: @ 0x0806185C + push {r4, r5, r6, lr} + ldr r6, _08061940 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806186E + b _08061982 +_0806186E: + ldr r0, _08061944 + mov ip, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, ip + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + ldr r5, _08061948 + mov r1, ip + adds r1, #3 + adds r2, r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _0806194C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #5 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _08061950 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r3, r1 + mov r1, ip + adds r1, #8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x10 + orrs r3, r1 + mov r1, ip + adds r1, #9 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #0x18 + orrs r3, r1 + str r3, [r4] + ldr r3, _08061954 + ldrb r1, [r6] + lsls r1, r1, #9 + mov r2, ip + adds r2, #0xa + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _08061958 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0xc + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #0xd + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _0806195C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0x10 + adds r2, r2, r1 + str r2, [r3] + ldr r3, _08061960 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08061964 + bl sub_0805FB04 + b _08061982 + .align 2, 0 +_08061940: .4byte gUnknown_2023D08 +_08061944: .4byte gUnknown_2022D08 +_08061948: .4byte gUnknown_20380D2 +_0806194C: .4byte gUnknown_20380A8 +_08061950: .4byte gUnknown_20380A4 +_08061954: .4byte gUnknown_20380BA +_08061958: .4byte gUnknown_20380BC +_0806195C: .4byte gUnknown_20380A0 +_08061960: .4byte gUnknown_2024160 +_08061964: + ldr r0, _08061988 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _0806198C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061990 + str r1, [r0] +_08061982: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08061988: .4byte gUnknown_2024174 +_0806198C: .4byte gUnknown_3005AC0 +_08061990: .4byte sub_08061994 + thumb_func_end sub_0806185C + + thumb_func_start sub_08061994 +sub_08061994: @ 0x08061994 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _080619E0 + ldr r6, _080619E4 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _080619E8 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _08061A2C + cmp r2, #1 + bgt _080619EC + cmp r2, #0 + beq _080619F6 + b _08061B08 + .align 2, 0 +_080619E0: .4byte gUnknown_2022D08 +_080619E4: .4byte gUnknown_2023D08 +_080619E8: .4byte gUnknown_2024174 +_080619EC: + cmp r2, #2 + beq _08061A56 + cmp r2, #3 + beq _08061ACC + b _08061B08 +_080619F6: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _08061A18 + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08061A18: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _08061B08 +_08061A2C: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08061B08 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _08061B08 +_08061A56: + ldr r0, _08061ABC + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08061AC0 + ldrb r0, [r0] + cmp r0, #0 + bne _08061B08 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08061AA4 + mov r0, r8 + cmp r0, #1 + bhi _08061AA4 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_08061AA4: + ldr r0, _08061AC4 + ldr r2, [r0] + ldr r0, _08061AC8 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _08061B08 + .align 2, 0 +_08061ABC: .4byte gUnknown_2038098 +_08061AC0: .4byte gUnknown_203809D +_08061AC4: .4byte gUnknown_2024174 +_08061AC8: .4byte gUnknown_2023D08 +_08061ACC: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08061B08 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_0805FB04 +_08061B08: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061994 + + thumb_func_start sub_08061B18 +sub_08061B18: @ 0x08061B18 + push {r4, r5, lr} + ldr r0, _08061B58 + movs r1, #0 + strh r1, [r0] + ldr r0, _08061B5C + strh r1, [r0] + ldr r5, _08061B60 + ldrb r4, [r5] + lsls r4, r4, #9 + ldr r0, _08061B64 + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_0814E184 + ldr r0, _08061B68 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _08061B6C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061B70 + str r1, [r0] + ldrb r0, [r5] + ldrh r1, [r4] + bl sub_081A53D4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08061B58: .4byte gUnknown_2022AC8 +_08061B5C: .4byte gUnknown_2022ACA +_08061B60: .4byte gUnknown_2023D08 +_08061B64: .4byte gUnknown_2022D0A +_08061B68: .4byte gUnknown_2022AE0 +_08061B6C: .4byte gUnknown_3005AC0 +_08061B70: .4byte sub_0805F768 + thumb_func_end sub_08061B18 + + thumb_func_start sub_08061B74 +sub_08061B74: @ 0x08061B74 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061B74 + + thumb_func_start sub_08061B80 +sub_08061B80: @ 0x08061B80 + push {lr} + bl sub_08063464 + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061B80 + + thumb_func_start sub_08061B90 +sub_08061B90: @ 0x08061B90 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061B90 + + thumb_func_start sub_08061B9C +sub_08061B9C: @ 0x08061B9C + push {r4, r5, r6, lr} + ldr r0, _08061BC4 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #0xa + ands r0, r2 + cmp r0, #0 + beq _08061BC8 + bl sub_0805CDB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xa +_08061BBA: + bl sub_08033FB0 +_08061BBE: + bl sub_0805FB04 + b _08061D3A + .align 2, 0 +_08061BC4: .4byte gUnknown_2022C90 +_08061BC8: + ldr r0, _08061BF8 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r1, _08061BFC + adds r5, r0, r1 + movs r0, #0x93 + lsls r0, r0, #3 + ands r2, r0 + cmp r2, #0 + beq _08061CA8 + movs r0, #0xf + bl sub_081309A4 + bl sub_08130BEC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + beq _08061C06 + cmp r4, #5 + bgt _08061C00 + cmp r4, #4 + beq _08061C0C + b _08061C24 + .align 2, 0 +_08061BF8: .4byte gUnknown_2023D08 +_08061BFC: .4byte gUnknown_2022D0C +_08061C00: + cmp r4, #6 + beq _08061C14 + b _08061C24 +_08061C06: + movs r0, #1 + movs r1, #4 + b _08061C10 +_08061C0C: + movs r0, #1 + movs r1, #3 +_08061C10: + movs r2, #0 + b _08061BBA +_08061C14: + ldr r0, _08061C20 + ldrb r2, [r0] + movs r0, #1 + movs r1, #0xf + b _08061BBA + .align 2, 0 +_08061C20: .4byte gUnknown_2023EB0 +_08061C24: + ldr r3, _08061C94 + lsls r0, r4, #1 + adds r2, r5, r0 + ldrh r1, [r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #6] + movs r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _08061C46 + ldr r0, _08061C98 + ldr r1, _08061C9C + ldrb r1, [r1] + strb r1, [r0] +_08061C46: + ldrh r1, [r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08061C80 + movs r0, #0 + bl sub_080A631C + ldr r5, _08061C98 + strb r0, [r5] + ldr r0, _08061CA0 + ldrb r1, [r0] + ldr r2, _08061CA4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08061C80 + movs r0, #2 + bl sub_080A631C + strb r0, [r5] +_08061C80: + ldr r0, _08061C98 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + movs r0, #1 + movs r1, #0xa + adds r2, r4, #0 + bl sub_08033FB0 + b _08061BBE + .align 2, 0 +_08061C94: .4byte gUnknown_82ED220 +_08061C98: .4byte gUnknown_2023EB0 +_08061C9C: .4byte gUnknown_2023D08 +_08061CA0: .4byte gUnknown_2023EB4 +_08061CA4: .4byte gUnknown_82FACB4 +_08061CA8: + movs r6, #3 +_08061CAA: + bl sub_0806F050 + adds r4, r0, #0 + ands r4, r6 + lsls r0, r4, #1 + adds r0, r5, r0 + ldrh r2, [r0] + cmp r2, #0 + beq _08061CAA + ldr r1, _08061CE4 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #6] + movs r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _08061CEC + ldr r0, _08061CE8 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + movs r0, #1 + movs r1, #0xa + adds r2, r4, #0 + bl sub_08033FB0 + b _08061D36 + .align 2, 0 +_08061CE4: .4byte gUnknown_82ED220 +_08061CE8: .4byte gUnknown_2023D08 +_08061CEC: + ldr r0, _08061D1C + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08061D20 + bl sub_0806F050 + movs r1, #2 + ands r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r1, #0 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x10 + orrs r2, r4 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + b _08061D36 + .align 2, 0 +_08061D1C: .4byte gUnknown_2022C90 +_08061D20: + movs r0, #0 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x10 + orrs r2, r4 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 +_08061D36: + bl sub_0805FB04 +_08061D3A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08061B9C + + thumb_func_start sub_08061D40 +sub_08061D40: @ 0x08061D40 + push {lr} + ldr r0, _08061D64 + ldrb r0, [r0] + lsrs r0, r0, #1 + ldr r1, _08061D68 + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc0 + ldrb r1, [r0] + movs r0, #1 + bl sub_08034014 + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_08061D64: .4byte gUnknown_2023D08 +_08061D68: .4byte gUnknown_2024140 + thumb_func_end sub_08061D40 + + thumb_func_start sub_08061D6C +sub_08061D6C: @ 0x08061D6C + push {r4, r5, r6, r7, lr} + ldr r0, _08061DAC + ldrb r0, [r0] + ldr r1, _08061DB0 + ldr r1, [r1] + adds r0, r0, r1 + movs r2, #0xa5 + lsls r2, r2, #2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #6 + bne _08061E38 + bl sub_08063674 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bne _08061E3E + ldr r0, _08061DB4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08061DB8 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + b _08061DCC + .align 2, 0 +_08061DAC: .4byte gUnknown_2023D08 +_08061DB0: .4byte gUnknown_2024140 +_08061DB4: .4byte gUnknown_2022C90 +_08061DB8: + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08061DCC: + ldr r0, _08061DE8 + ldr r0, [r0] + ldr r1, _08061DEC + ands r0, r1 + cmp r0, #0 + beq _08061DF8 + ldr r0, _08061DF0 + ldrb r0, [r0] + cmp r0, #1 + bne _08061DF4 + movs r0, #0 + movs r6, #3 + b _08061DFC + .align 2, 0 +_08061DE8: .4byte gUnknown_2022C90 +_08061DEC: .4byte 0x00808000 +_08061DF0: .4byte gUnknown_2023D08 +_08061DF4: + movs r0, #3 + b _08061DFA +_08061DF8: + movs r0, #0 +_08061DFA: + movs r6, #6 +_08061DFC: + adds r4, r0, #0 + b _08061E02 +_08061E00: + adds r4, #1 +_08061E02: + cmp r4, r6 + bge _08061E3E + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08061E30 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08061E00 + ldr r1, _08061E34 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08061E00 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08061E00 + b _08061E3E + .align 2, 0 +_08061E30: .4byte gUnknown_20243E8 +_08061E34: .4byte gUnknown_2023D12 +_08061E38: + ldrb r4, [r1] + movs r0, #6 + strb r0, [r1] +_08061E3E: + ldr r0, _08061E64 + ldrb r0, [r0] + ldr r1, _08061E68 + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x5c + strb r4, [r0] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0 + bl sub_08033FDC + bl sub_0805FB04 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08061E64: .4byte gUnknown_2023D08 +_08061E68: .4byte gUnknown_2024140 + thumb_func_end sub_08061D6C + + thumb_func_start sub_08061E6C +sub_08061E6C: @ 0x08061E6C + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061E6C + + thumb_func_start sub_08061E78 +sub_08061E78: @ 0x08061E78 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _08061EF0 + ldr r0, _08061EF4 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #3 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r1, r1, #8 + adds r3, #2 + adds r2, r2, r3 + ldrb r0, [r2] + orrs r0, r1 + lsls r0, r0, #0x10 + asrs r7, r0, #0x10 + ldr r0, _08061EF8 + cmp r7, r0 + beq _08061F08 + ldr r6, _08061EFC + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _08061F00 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08061F04 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _08061F32 + .align 2, 0 +_08061EF0: .4byte gUnknown_2022D08 +_08061EF4: .4byte gUnknown_2023D08 +_08061EF8: .4byte 0x00007FFF +_08061EFC: .4byte gUnknown_2023D12 +_08061F00: .4byte gUnknown_20243E8 +_08061F04: .4byte gUnknown_3005AD0 +_08061F08: + ldr r1, _08061F50 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08061F54 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08061F58 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C +_08061F32: + ldr r1, _08061F5C + ldr r0, _08061F60 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061F64 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08061F50: .4byte gUnknown_2023D12 +_08061F54: .4byte gUnknown_20243E8 +_08061F58: .4byte gUnknown_3005AD0 +_08061F5C: .4byte gUnknown_3005AC0 +_08061F60: .4byte gUnknown_2023D08 +_08061F64: .4byte sub_0805F65C + thumb_func_end sub_08061E78 + + thumb_func_start sub_08061F68 +sub_08061F68: @ 0x08061F68 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08061F68 + + thumb_func_start sub_08061F74 +sub_08061F74: @ 0x08061F74 + push {r4, lr} + ldr r4, _08061FD0 + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08061FC8 + ldr r0, _08061FD4 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08061FD8 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08061FDC + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _08061FE0 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08061FE4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08061FE8 + str r1, [r0] +_08061FC8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08061FD0: .4byte gUnknown_2023D08 +_08061FD4: .4byte gUnknown_3005AD0 +_08061FD8: .4byte gUnknown_2023D12 +_08061FDC: .4byte gUnknown_20243E8 +_08061FE0: .4byte gUnknown_2024174 +_08061FE4: .4byte gUnknown_3005AC0 +_08061FE8: .4byte sub_0805FAA4 + thumb_func_end sub_08061F74 + + thumb_func_start sub_08061FEC +sub_08061FEC: @ 0x08061FEC + push {r4, r5, lr} + ldr r5, _08062044 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806203C + ldr r4, _08062048 + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _0806204C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08062050 + str r1, [r0] +_0806203C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08062044: .4byte gUnknown_2023D08 +_08062048: .4byte gUnknown_2022D08 +_0806204C: .4byte gUnknown_3005AC0 +_08062050: .4byte sub_0805FAA4 + thumb_func_end sub_08061FEC + + thumb_func_start sub_08062054 +sub_08062054: @ 0x08062054 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062054 + + thumb_func_start sub_08062060 +sub_08062060: @ 0x08062060 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062060 + + thumb_func_start sub_0806206C +sub_0806206C: @ 0x0806206C + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806206C + + thumb_func_start sub_08062078 +sub_08062078: @ 0x08062078 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062078 + + thumb_func_start sub_08062084 +sub_08062084: @ 0x08062084 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062084 + + thumb_func_start sub_08062090 +sub_08062090: @ 0x08062090 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062090 + + thumb_func_start sub_0806209C +sub_0806209C: @ 0x0806209C + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806209C + + thumb_func_start sub_080620A8 +sub_080620A8: @ 0x080620A8 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080620A8 + + thumb_func_start sub_080620B4 +sub_080620B4: @ 0x080620B4 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080620B4 + + thumb_func_start sub_080620C0 +sub_080620C0: @ 0x080620C0 + push {lr} + ldr r2, _080620D8 + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_080620D8: .4byte gUnknown_20229C0 + thumb_func_end sub_080620C0 + + thumb_func_start sub_080620DC +sub_080620DC: @ 0x080620DC + push {lr} + ldr r3, _08062108 + ldr r1, _0806210C + ldr r0, _08062110 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_08062108: .4byte gUnknown_20229C0 +_0806210C: .4byte gUnknown_2022D08 +_08062110: .4byte gUnknown_2023D08 + thumb_func_end sub_080620DC + + thumb_func_start sub_08062114 +sub_08062114: @ 0x08062114 + push {lr} + ldr r2, _08062128 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_08062128: .4byte gUnknown_20229C0 + thumb_func_end sub_08062114 + + thumb_func_start sub_0806212C +sub_0806212C: @ 0x0806212C + push {lr} + ldr r3, _08062150 + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_08062150: .4byte gUnknown_20229C0 + thumb_func_end sub_0806212C + + thumb_func_start sub_08062154 +sub_08062154: @ 0x08062154 + push {r4, lr} + ldr r3, _0806217C + ldr r2, _08062180 + ldr r4, _08062184 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08062188 + bl sub_0805FB04 + b _080621B2 + .align 2, 0 +_0806217C: .4byte gUnknown_20205AC +_08062180: .4byte gUnknown_2023E88 +_08062184: .4byte gUnknown_2023D08 +_08062188: + ldr r1, _080621B8 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _080621BC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080621C0 + str r1, [r0] +_080621B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080621B8: .4byte gUnknown_202415D +_080621BC: .4byte gUnknown_3005AC0 +_080621C0: .4byte sub_0805F780 + thumb_func_end sub_08062154 + + thumb_func_start sub_080621C4 +sub_080621C4: @ 0x080621C4 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080621C4 + + thumb_func_start sub_080621D0 +sub_080621D0: @ 0x080621D0 + push {r4, lr} + ldr r4, _0806220C + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _080621E4 + movs r3, #0xc0 +_080621E4: + ldr r2, _08062210 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_0805FB04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806220C: .4byte gUnknown_2023D08 +_08062210: .4byte gUnknown_2022D08 + thumb_func_end sub_080621D0 + + thumb_func_start sub_08062214 +sub_08062214: @ 0x08062214 + push {r4, r5, lr} + ldr r4, _08062248 + ldr r5, _0806224C + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _08062250 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _08062264 + .align 2, 0 +_08062248: .4byte gUnknown_2022D08 +_0806224C: .4byte gUnknown_2023D08 +_08062250: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_08062264: + bl sub_0805FB04 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062214 + + thumb_func_start sub_08062270 +sub_08062270: @ 0x08062270 + push {lr} + ldr r1, _080622A0 + ldr r0, _080622A4 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080622A8 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + movs r2, #5 + bl sub_080A2BAC + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_080622A0: .4byte gUnknown_2023D12 +_080622A4: .4byte gUnknown_2023D08 +_080622A8: .4byte gUnknown_20243E8 + thumb_func_end sub_08062270 + + thumb_func_start sub_080622AC +sub_080622AC: @ 0x080622AC + push {lr} + ldr r1, _080622D4 + ldr r0, _080622D8 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _080622DC + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_080622D4: .4byte gUnknown_2022D08 +_080622D8: .4byte gUnknown_2023D08 +_080622DC: .4byte gUnknown_20240A0 + thumb_func_end sub_080622AC + + thumb_func_start sub_080622E0 +sub_080622E0: @ 0x080622E0 + push {r4, r5, r6, lr} + ldr r5, _080623C0 + ldr r6, _080623C4 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080623C8 + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080623CC + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _080623D0 + bl sub_080A5B9C + ldr r0, _080623D4 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080623D8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r6] + strh r0, [r1, #8] + ldr r3, _080623DC + ldr r0, [r3] + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080623A2 + ldr r0, _080623E0 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _080623E4 + str r1, [r0] +_080623A2: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _080623E8 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080623EC + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080623C0: .4byte gUnknown_2023E88 +_080623C4: .4byte gUnknown_2023D08 +_080623C8: .4byte gUnknown_20205AC +_080623CC: .4byte sub_080A67B4 +_080623D0: .4byte sub_080623F0 +_080623D4: .4byte sub_0806240C +_080623D8: .4byte gUnknown_3005B60 +_080623DC: .4byte gUnknown_2024174 +_080623E0: .4byte gUnknown_2024158 +_080623E4: .4byte sub_0807352C +_080623E8: .4byte gUnknown_3005AC0 +_080623EC: .4byte sub_0805ED7C + thumb_func_end sub_080622E0 + + thumb_func_start sub_080623F0 +sub_080623F0: @ 0x080623F0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #6] + bl sub_0805DC00 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080623F0 + + thumb_func_start sub_0806240C +sub_0806240C: @ 0x0806240C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r7, _08062470 + ldrb r0, [r7] + mov sb, r0 + ldr r1, _08062474 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08062450 + ldr r0, _08062478 + ldr r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08062450 + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08062484 +_08062450: + ldr r0, _0806247C + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _08062480 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_08060FC8 + b _080624C4 + .align 2, 0 +_08062470: .4byte gUnknown_2023D08 +_08062474: .4byte gUnknown_3005B60 +_08062478: .4byte gUnknown_2022C90 +_0806247C: .4byte gUnknown_2022D08 +_08062480: .4byte gUnknown_2023D12 +_08062484: + ldr r4, _080624E8 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r6, _080624EC + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08060FC8 + ldrb r0, [r7] + movs r5, #2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08060FC8 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_080624C4: + ldr r1, _080624F0 + ldr r2, _080624F4 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080624F8 + str r1, [r0] + mov r0, sb + strb r0, [r2] + mov r0, r8 + bl sub_080A8964 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080624E8: .4byte gUnknown_2022D08 +_080624EC: .4byte gUnknown_2023D12 +_080624F0: .4byte gUnknown_3005AC0 +_080624F4: .4byte gUnknown_2023D08 +_080624F8: .4byte sub_0805F14C + thumb_func_end sub_0806240C + + thumb_func_start sub_080624FC +sub_080624FC: @ 0x080624FC + push {r4, r5, r6, r7, lr} + ldr r1, _08062524 + ldr r0, _08062528 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0806252C + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806252C + bl sub_0805FB04 + b _080625F6 + .align 2, 0 +_08062524: .4byte gUnknown_2022D08 +_08062528: .4byte gUnknown_2023D08 +_0806252C: + ldr r4, _08062584 + ldr r0, [r4] + ldr r3, _08062588 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0806258C + ldrb r2, [r3] + lsls r0, r2, #9 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r3, #0 + cmp r0, #0 + beq _08062598 + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r2, [r3, #1] + lsls r1, r2, #0x1b + lsrs r0, r1, #0x1c + cmp r0, #1 + bhi _08062590 + adds r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] + b _080625F6 + .align 2, 0 +_08062584: .4byte gUnknown_2024174 +_08062588: .4byte gUnknown_2023D08 +_0806258C: .4byte gUnknown_2022D08 +_08062590: + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3, #1] +_08062598: + adds r5, r7, #0 + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _080625FC + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _08062600 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r6, _08062604 + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _080625EA + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_080625EA: + ldr r0, _08062608 + ldrb r1, [r7] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0806260C + str r0, [r1] +_080625F6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080625FC: .4byte gUnknown_2022D0C +_08062600: .4byte gUnknown_2024158 +_08062604: .4byte gUnknown_2024174 +_08062608: .4byte gUnknown_3005AC0 +_0806260C: .4byte sub_08062610 + thumb_func_end sub_080624FC + + thumb_func_start sub_08062610 +sub_08062610: @ 0x08062610 + push {r4, lr} + ldr r4, _08062650 + ldr r0, [r4] + ldr r3, _08062654 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _08062648 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_0805FB04 +_08062648: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08062650: .4byte gUnknown_2024174 +_08062654: .4byte gUnknown_2023D08 + thumb_func_end sub_08062610 + + thumb_func_start sub_08062658 +sub_08062658: @ 0x08062658 + push {lr} + ldr r0, _08062694 + ldr r1, [r0] + ldr r0, _08062698 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806268A + ldr r2, _0806269C + ldr r0, _080626A0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080626A4 + str r1, [r0] +_0806268A: + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_08062694: .4byte gUnknown_2024174 +_08062698: .4byte gUnknown_2023D08 +_0806269C: .4byte gUnknown_3005B60 +_080626A0: .4byte gUnknown_2024158 +_080626A4: .4byte sub_0807352C + thumb_func_end sub_08062658 + + thumb_func_start sub_080626A8 +sub_080626A8: @ 0x080626A8 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080626A8 + + thumb_func_start sub_080626B4 +sub_080626B4: @ 0x080626B4 + push {r4, lr} + ldr r4, _08062704 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080626FA + ldr r3, _08062708 + ldr r0, _0806270C + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _08062710 + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_080626FA: + bl sub_0805FB04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08062704: .4byte gUnknown_2023D08 +_08062708: .4byte gUnknown_20205AC +_0806270C: .4byte gUnknown_2023E88 +_08062710: .4byte gUnknown_2022D08 + thumb_func_end sub_080626B4 + + thumb_func_start sub_08062714 +sub_08062714: @ 0x08062714 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _08062758 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806276C + ldr r5, _0806275C + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08062760 + bl sub_0805FB04 + b _0806276C + .align 2, 0 +_08062758: .4byte gUnknown_2023D08 +_0806275C: .4byte gUnknown_2022D08 +_08062760: + ldr r0, _08062774 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08062778 + str r0, [r1] +_0806276C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08062774: .4byte gUnknown_3005AC0 +_08062778: .4byte sub_0805FAD4 + thumb_func_end sub_08062714 + + thumb_func_start sub_0806277C +sub_0806277C: @ 0x0806277C + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806277C + + thumb_func_start sub_08062788 +sub_08062788: @ 0x08062788 + push {lr} + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08062788 + + thumb_func_start sub_08062794 +sub_08062794: @ 0x08062794 + push {lr} + ldr r0, _080627C8 + ldr r0, [r0] + movs r1, #6 + ands r0, r1 + cmp r0, #2 + bne _080627BE + ldr r2, _080627CC + ldr r0, _080627D0 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldr r0, _080627D4 + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, #8] + bl sub_08000540 +_080627BE: + bl sub_0805FB04 + pop {r0} + bx r0 + .align 2, 0 +_080627C8: .4byte gUnknown_2022C90 +_080627CC: .4byte gUnknown_3002360 +_080627D0: .4byte 0x00000439 +_080627D4: .4byte gUnknown_3005A60 + thumb_func_end sub_08062794 + + thumb_func_start sub_080627D8 +sub_080627D8: @ 0x080627D8 + bx lr + .align 2, 0 + thumb_func_end sub_080627D8 + + thumb_func_start sub_080627DC +sub_080627DC: @ 0x080627DC + push {lr} + ldr r1, _08062824 + ldr r0, _08062828 + ldrb r2, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08062834 + ldr r0, _0806282C + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xf] + lsls r0, r0, #0x1c + cmp r0, #0 + bne _08062834 + ldr r0, _08062830 + ldr r0, [r0] + adds r0, r2, r0 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #6 + strb r1, [r0] + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_08033FB0 + movs r0, #1 + b _08062836 + .align 2, 0 +_08062824: .4byte gUnknown_2023F50 +_08062828: .4byte gUnknown_2023D08 +_0806282C: .4byte gUnknown_2023F60 +_08062830: .4byte gUnknown_2024140 +_08062834: + movs r0, #0 +_08062836: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080627DC + + thumb_func_start sub_0806283C +sub_0806283C: @ 0x0806283C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _080628F4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08062856 + b _08062A10 +_08062856: + ldr r0, _080628F8 + ldrb r0, [r0] + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r4, _080628FC + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x58 + muls r0, r1, r0 + adds r0, r0, r4 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x19 + beq _08062882 + b _08062A10 +_08062882: + mov r0, sl + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r6, #0 + mov r8, r4 + movs r7, #0x58 + adds r0, r2, #0 + muls r0, r7, r0 + adds r4, r0, r4 + movs r0, #0x20 + adds r0, r0, r4 + mov sb, r0 +_0806289E: + lsls r1, r6, #1 + ldr r5, _080628F8 + ldrb r0, [r5] + muls r0, r7, r0 + adds r1, r1, r0 + mov r0, r8 + adds r0, #0xc + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _080628CC + ldrh r1, [r4] + mov r3, sb + ldrb r2, [r3] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _080628CC + b _08062A10 +_080628CC: + adds r6, #1 + cmp r6, #3 + ble _0806289E + ldr r0, _080628F4 + ldr r0, [r0] + ldr r1, _08062900 + ands r0, r1 + cmp r0, #0 + beq _08062934 + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + adds r1, r5, #0 + cmp r0, #0 + bne _08062904 + movs r4, #0 + movs r0, #3 + str r0, [sp] + b _0806293C + .align 2, 0 +_080628F4: .4byte gUnknown_2022C90 +_080628F8: .4byte gUnknown_2023D08 +_080628FC: .4byte gUnknown_2023D28 +_08062900: .4byte 0x00808000 +_08062904: + movs r4, #3 + movs r3, #6 + str r3, [sp] + b _0806293C +_0806290C: + ldr r0, _0806292C + ldrb r0, [r0] + ldr r1, _08062930 + ldr r1, [r1] + adds r0, r0, r1 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + strb r6, [r0] + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_08033FB0 + movs r0, #1 + b _08062A12 + .align 2, 0 +_0806292C: .4byte gUnknown_2023D08 +_08062930: .4byte gUnknown_2024140 +_08062934: + movs r4, #0 + movs r3, #6 + str r3, [sp] + adds r1, r5, #0 +_0806293C: + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08062A24 + mov sb, r1 + cmp r0, #0 + bne _08062950 + ldr r3, _08062A28 + mov sb, r3 +_08062950: + adds r6, r4, #0 + ldr r0, [sp] + cmp r6, r0 + bge _08062A10 +_08062958: + movs r0, #0x64 + adds r5, r6, #0 + muls r5, r0, r5 + mov r1, sb + adds r4, r1, r5 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08062A08 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _08062A08 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08062A08 + ldr r1, _08062A2C + ldr r0, _08062A30 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _08062A08 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r0, sl + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r4, #0 + mov r8, r5 + ldr r1, _08062A34 + movs r0, #0x58 + muls r0, r2, r0 + adds r5, r0, r1 + adds r7, r5, #0 + adds r7, #0x20 +_080629C4: + adds r1, r4, #0 + adds r1, #0xd + mov r0, sb + add r0, r8 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _08062A02 + ldrh r1, [r5] + ldrb r2, [r7] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _08062A02 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _0806290C +_08062A02: + adds r4, #1 + cmp r4, #3 + ble _080629C4 +_08062A08: + adds r6, #1 + ldr r3, [sp] + cmp r6, r3 + blt _08062958 +_08062A10: + movs r0, #0 +_08062A12: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08062A24: .4byte gUnknown_20243E8 +_08062A28: .4byte gUnknown_2024190 +_08062A2C: .4byte gUnknown_2023D12 +_08062A30: .4byte gUnknown_2023D08 +_08062A34: .4byte gUnknown_2023D28 + thumb_func_end sub_0806283C + + thumb_func_start sub_08062A38 +sub_08062A38: @ 0x08062A38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r0, #1 + bl sub_08062DA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08062A66 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08062A66 + b _08062C90 +_08062A66: + ldr r1, _08062ACC + ldr r5, _08062AD0 + ldrb r3, [r5] + lsls r0, r3, #1 + adds r4, r0, r1 + ldrh r1, [r4] + cmp r1, #0 + bne _08062A78 + b _08062C90 +_08062A78: + ldr r0, _08062AD4 + cmp r1, r0 + bne _08062A80 + b _08062C90 +_08062A80: + ldr r2, _08062AD8 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08062A94 + b _08062C90 +_08062A94: + ldr r0, _08062ADC + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08062AFE + mov r8, r3 + mov r0, r8 + bl sub_080A630C + movs r4, #2 + eors r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _08062AE0 + ldrb r1, [r1] + ldr r2, _08062AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08062AE8 + ldrb r7, [r5] + b _08062B02 + .align 2, 0 +_08062ACC: .4byte gUnknown_2023EF4 +_08062AD0: .4byte gUnknown_2023D08 +_08062AD4: .4byte 0x0000FFFF +_08062AD8: .4byte gUnknown_82ED220 +_08062ADC: .4byte gUnknown_2022C90 +_08062AE0: .4byte gUnknown_2023EB4 +_08062AE4: .4byte gUnknown_82FACB4 +_08062AE8: + ldrb r0, [r5] + bl sub_080A630C + eors r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _08062B02 +_08062AFE: + adds r7, r3, #0 + mov r8, r7 +_08062B02: + ldr r3, _08062B24 + ldr r1, _08062B28 + ldr r2, _08062B2C + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + cmp r0, #0xa + bne _08062B30 + movs r0, #0x12 + b _08062B42 + .align 2, 0 +_08062B24: .4byte gUnknown_82ED220 +_08062B28: .4byte gUnknown_2023EF4 +_08062B2C: .4byte gUnknown_2023D08 +_08062B30: + cmp r0, #0xb + bne _08062B3A + movs r1, #0xb + str r1, [sp] + b _08062B44 +_08062B3A: + cmp r0, #0xd + beq _08062B40 + b _08062C90 +_08062B40: + movs r0, #0xa +_08062B42: + str r0, [sp] +_08062B44: + ldr r1, _08062B74 + ldrb r3, [r2] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + ldr r1, [sp] + cmp r0, r1 + bne _08062B5A + b _08062C90 +_08062B5A: + ldr r0, _08062B78 + ldr r0, [r0] + ldr r1, _08062B7C + ands r0, r1 + cmp r0, #0 + beq _08062BB0 + movs r0, #2 + ands r3, r0 + cmp r3, #0 + bne _08062B80 + movs r4, #0 + movs r0, #3 + b _08062BB4 + .align 2, 0 +_08062B74: .4byte gUnknown_2023D28 +_08062B78: .4byte gUnknown_2022C90 +_08062B7C: .4byte 0x00808000 +_08062B80: + movs r4, #3 + movs r1, #6 + mov sl, r1 + b _08062BB6 +_08062B88: + ldr r0, _08062BA8 + ldrb r0, [r0] + ldr r1, _08062BAC + ldr r1, [r1] + adds r0, r0, r1 + movs r2, #0xa5 + lsls r2, r2, #2 + adds r0, r0, r2 + strb r5, [r0] + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_08033FB0 + movs r0, #1 + b _08062C92 + .align 2, 0 +_08062BA8: .4byte gUnknown_2023D08 +_08062BAC: .4byte gUnknown_2024140 +_08062BB0: + movs r4, #0 + movs r0, #6 +_08062BB4: + mov sl, r0 +_08062BB6: + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08062C58 + str r1, [sp, #4] + cmp r0, #0 + bne _08062BCA + ldr r2, _08062C5C + str r2, [sp, #4] +_08062BCA: + adds r5, r4, #0 + cmp r5, sl + bge _08062C90 + ldr r0, _08062C60 + mov sb, r0 +_08062BD4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, [sp, #4] + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08062C8A + adds r0, r6, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _08062C8A + adds r0, r6, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08062C8A + ldr r1, _08062C64 + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _08062C8A + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _08062C8A + ldr r0, _08062C68 + ldr r1, [r0] + adds r0, r2, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r5, r0 + beq _08062C8A + adds r0, r7, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r5, r0 + beq _08062C8A + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r6, #0 + movs r1, #0x2e + bl sub_0806A058 + cmp r0, #0 + beq _08062C6C + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + add r0, sb + ldrb r0, [r0, #0x17] + b _08062C76 + .align 2, 0 +_08062C58: .4byte gUnknown_20243E8 +_08062C5C: .4byte gUnknown_2024190 +_08062C60: .4byte gUnknown_82F0D54 +_08062C64: .4byte gUnknown_2023D12 +_08062C68: .4byte gUnknown_2024140 +_08062C6C: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + add r0, sb + ldrb r0, [r0, #0x16] +_08062C76: + ldr r1, [sp] + cmp r1, r0 + bne _08062C8A + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08062C8A + b _08062B88 +_08062C8A: + adds r5, #1 + cmp r5, sl + blt _08062BD4 +_08062C90: + movs r0, #0 +_08062C92: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08062A38 + + thumb_func_start sub_08062CA4 +sub_08062CA4: @ 0x08062CA4 + push {r4, r5, lr} + ldr r3, _08062CFC + ldr r5, _08062D00 + ldrb r4, [r5] + movs r0, #0x58 + adds r2, r4, #0 + muls r2, r0, r2 + adds r0, r3, #0 + adds r0, #0x4c + adds r0, r2, r0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08062D6C + adds r1, r2, r3 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x1e + bne _08062D6C + ldrh r0, [r1, #0x2c] + ldrh r1, [r1, #0x28] + lsrs r0, r0, #1 + cmp r1, r0 + blo _08062D6C + ldr r1, _08062D04 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r1, #0 + beq _08062CEA + ldr r0, _08062D08 + cmp r1, r0 + bne _08062D0C +_08062CEA: + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08062D0C + ldrb r0, [r5] + b _08062D74 + .align 2, 0 +_08062CFC: .4byte gUnknown_2023D28 +_08062D00: .4byte gUnknown_2023D08 +_08062D04: .4byte gUnknown_2023EF4 +_08062D08: .4byte 0x0000FFFF +_08062D0C: + ldr r2, _08062D38 + ldr r1, _08062D3C + ldr r4, _08062D40 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08062D44 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08062D44 + ldrb r0, [r4] + b _08062D74 + .align 2, 0 +_08062D38: .4byte gUnknown_82ED220 +_08062D3C: .4byte gUnknown_2023EF4 +_08062D40: .4byte gUnknown_2023D08 +_08062D44: + movs r0, #8 + movs r1, #1 + bl sub_08062F48 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08062D8E + movs r0, #4 + movs r1, #1 + bl sub_08062F48 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08062D8E + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _08062D70 +_08062D6C: + movs r0, #0 + b _08062D90 +_08062D70: + ldr r0, _08062D98 + ldrb r0, [r0] +_08062D74: + ldr r1, _08062D9C + ldr r1, [r1] + adds r0, r0, r1 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #6 + strb r1, [r0] + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_08033FB0 +_08062D8E: + movs r0, #1 +_08062D90: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08062D98: .4byte gUnknown_2023D08 +_08062D9C: .4byte gUnknown_2024140 + thumb_func_end sub_08062CA4 + + thumb_func_start sub_08062DA0 +sub_08062DA0: @ 0x08062DA0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08062E48 + ldrb r0, [r0] + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _08062E4C + ldrb r1, [r0] + ldr r2, _08062E50 + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08062E3A + movs r4, #0 + ldr r6, _08062E54 + movs r7, #0x58 + adds r0, r3, #0 + muls r0, r7, r0 + adds r5, r0, r6 + movs r0, #0x20 + adds r0, r0, r5 + mov r8, r0 +_08062DEE: + lsls r1, r4, #1 + ldr r0, _08062E48 + ldrb r0, [r0] + muls r0, r7, r0 + adds r1, r1, r0 + adds r0, r6, #0 + adds r0, #0xc + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _08062E34 + ldrh r1, [r5] + mov r3, r8 + ldrb r2, [r3] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _08062E34 + mov r0, sb + cmp r0, #0 + bne _08062E5C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08062E5C +_08062E34: + adds r4, #1 + cmp r4, #3 + ble _08062DEE +_08062E3A: + ldr r0, _08062E58 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08062E60 + b _08062EDE + .align 2, 0 +_08062E48: .4byte gUnknown_2023D08 +_08062E4C: .4byte gUnknown_2023EB4 +_08062E50: .4byte gUnknown_82FACB4 +_08062E54: .4byte gUnknown_2023D28 +_08062E58: .4byte gUnknown_2022C90 +_08062E5C: + movs r0, #1 + b _08062EE0 +_08062E60: + movs r1, #2 + mov r0, sl + eors r0, r1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _08062EF0 + ldrb r1, [r0] + ldr r2, _08062EF4 + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08062EDE + movs r4, #0 + ldr r6, _08062EF8 + movs r7, #0x58 + adds r0, r3, #0 + muls r0, r7, r0 + adds r5, r0, r6 + movs r3, #0x20 + adds r3, r3, r5 + mov r8, r3 +_08062E92: + lsls r1, r4, #1 + ldr r0, _08062EFC + ldrb r0, [r0] + muls r0, r7, r0 + adds r1, r1, r0 + adds r0, r6, #0 + adds r0, #0xc + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _08062ED8 + ldrh r1, [r5] + mov r3, r8 + ldrb r2, [r3] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _08062ED8 + mov r0, sb + cmp r0, #0 + bne _08062E5C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08062E5C +_08062ED8: + adds r4, #1 + cmp r4, #3 + ble _08062E92 +_08062EDE: + movs r0, #0 +_08062EE0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08062EF0: .4byte gUnknown_2023EB4 +_08062EF4: .4byte gUnknown_82FACB4 +_08062EF8: .4byte gUnknown_2023D28 +_08062EFC: .4byte gUnknown_2023D08 + thumb_func_end sub_08062DA0 + + thumb_func_start sub_08062F00 +sub_08062F00: @ 0x08062F00 + push {r4, lr} + movs r4, #0 + ldr r1, _08062F40 + ldr r0, _08062F44 + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x18 + adds r2, r0, r1 + movs r3, #7 +_08062F14: + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #6 + ble _08062F2A + subs r1, #6 + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08062F2A: + adds r2, #1 + subs r3, #1 + cmp r3, #0 + bge _08062F14 + movs r0, #0 + cmp r4, #3 + bls _08062F3A + movs r0, #1 +_08062F3A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062F40: .4byte gUnknown_2023D28 +_08062F44: .4byte gUnknown_2023D08 + thumb_func_end sub_08062F00 + + thumb_func_start sub_08062F48 +sub_08062F48: @ 0x08062F48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + ldr r2, _08062FD8 + ldr r1, _08062FDC + ldrb r3, [r1] + lsls r0, r3, #1 + adds r4, r0, r2 + ldrh r2, [r4] + adds r5, r1, #0 + cmp r2, #0 + bne _08062F74 + b _080631D2 +_08062F74: + ldr r0, _08062FE0 + cmp r2, r0 + bne _08062F7C + b _080631D2 +_08062F7C: + ldr r0, _08062FE4 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0xff + bne _08062F88 + b _080631D2 +_08062F88: + ldr r2, _08062FE8 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08062F9C + b _080631D2 +_08062F9C: + ldr r0, _08062FEC + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08063010 + mov sb, r3 + mov r0, sb + bl sub_080A630C + movs r4, #2 + eors r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _08062FF0 + ldrb r1, [r1] + ldr r2, _08062FF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08062FF8 + ldrb r5, [r5] + mov sl, r5 + b _08063014 + .align 2, 0 +_08062FD8: .4byte gUnknown_2023EF4 +_08062FDC: .4byte gUnknown_2023D08 +_08062FE0: .4byte 0x0000FFFF +_08062FE4: .4byte gUnknown_2023F14 +_08062FE8: .4byte gUnknown_82ED220 +_08062FEC: .4byte gUnknown_2022C90 +_08062FF0: .4byte gUnknown_2023EB4 +_08062FF4: .4byte gUnknown_82FACB4 +_08062FF8: + ldrb r0, [r5] + bl sub_080A630C + eors r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + b _08063014 +_08063010: + mov sb, r3 + mov sl, sb +_08063014: + ldr r0, _08063038 + ldr r0, [r0] + ldr r1, _0806303C + ands r0, r1 + cmp r0, #0 + beq _08063074 + ldr r2, _08063040 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + bne _08063044 + movs r4, #0 + movs r0, #3 + str r0, [sp, #8] + b _0806307C + .align 2, 0 +_08063038: .4byte gUnknown_2022C90 +_0806303C: .4byte 0x00808000 +_08063040: .4byte gUnknown_2023D08 +_08063044: + movs r4, #3 + movs r1, #6 + str r1, [sp, #8] + b _0806307C +_0806304C: + ldr r0, _0806306C + ldrb r0, [r0] + ldr r1, _08063070 + ldr r1, [r1] + adds r0, r0, r1 + movs r2, #0xa5 + lsls r2, r2, #2 + adds r0, r0, r2 + strb r6, [r0] + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_08033FB0 + movs r0, #1 + b _080631D4 + .align 2, 0 +_0806306C: .4byte gUnknown_2023D08 +_08063070: .4byte gUnknown_2024140 +_08063074: + movs r4, #0 + movs r0, #6 + str r0, [sp, #8] + ldr r5, _08063094 +_0806307C: + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08063098 + str r1, [sp, #0xc] + cmp r0, #0 + bne _08063090 + ldr r2, _0806309C + str r2, [sp, #0xc] +_08063090: + adds r6, r4, #0 + b _080631CA + .align 2, 0 +_08063094: .4byte gUnknown_2023D08 +_08063098: .4byte gUnknown_20243E8 +_0806309C: .4byte gUnknown_2024190 +_080630A0: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, [sp, #0xc] + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080630B6 + b _080631C8 +_080630B6: + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + bne _080630C4 + b _080631C8 +_080630C4: + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _080631C8 + ldr r1, _08063130 + mov r2, sb + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _080631C8 + mov r2, sl + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _080631C8 + ldr r0, _08063134 + ldr r1, [r0] + mov r2, sb + adds r0, r2, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r6, r0 + beq _080631C8 + mov r2, sl + adds r0, r2, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r6, r0 + beq _080631C8 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #0 + movs r1, #0x2e + bl sub_0806A058 + cmp r0, #0 + beq _0806313C + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _08063138 + adds r0, r0, r1 + ldrb r2, [r0, #0x17] + b _08063148 + .align 2, 0 +_08063130: .4byte gUnknown_2023D12 +_08063134: .4byte gUnknown_2024140 +_08063138: .4byte gUnknown_82F0D54 +_0806313C: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r2, _080631E4 + adds r0, r0, r2 + ldrb r2, [r0, #0x16] +_08063148: + ldr r1, _080631E8 + ldr r5, _080631EC + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r4, #0 + bl sub_080473FC + ldr r1, [sp] + ands r1, r0 + cmp r1, #0 + beq _080631C8 + ldr r1, _080631F0 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + mov sb, r0 + movs r4, #0 + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + mov r8, r1 + ldr r1, _080631F4 + movs r0, #0x58 + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + adds r5, r0, r1 + adds r7, r5, #0 + adds r7, #0x20 +_08063186: + adds r1, r4, #0 + adds r1, #0xd + ldr r0, [sp, #0xc] + add r0, r8 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _080631C2 + ldrh r1, [r5] + ldrb r2, [r7] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _080631C2 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #4] + bl __modsi3 + cmp r0, #0 + bne _080631C2 + b _0806304C +_080631C2: + adds r4, #1 + cmp r4, #3 + ble _08063186 +_080631C8: + adds r6, #1 +_080631CA: + ldr r0, [sp, #8] + cmp r6, r0 + bge _080631D2 + b _080630A0 +_080631D2: + movs r0, #0 +_080631D4: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080631E4: .4byte gUnknown_82F0D54 +_080631E8: .4byte gUnknown_2023EF4 +_080631EC: .4byte gUnknown_2023D08 +_080631F0: .4byte gUnknown_2023F14 +_080631F4: .4byte gUnknown_2023D28 + thumb_func_end sub_08062F48 + + thumb_func_start sub_080631F8 +sub_080631F8: @ 0x080631F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r6, _080632E0 + ldr r4, _080632E4 + ldrb r2, [r4] + movs r5, #0x58 + adds r0, r2, #0 + muls r0, r5, r0 + adds r1, r6, #0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080632E8 + ands r0, r1 + cmp r0, #0 + beq _08063222 + b _08063450 +_08063222: + ldr r0, _080632EC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #0x80 + lsls r0, r0, #3 + ands r1, r0 + cmp r1, #0 + beq _08063236 + b _08063450 +_08063236: + str r1, [sp] + movs r0, #0xc + adds r1, r2, #0 + movs r2, #0x17 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0806324E + b _08063450 +_0806324E: + ldrb r1, [r4] + str r0, [sp] + movs r0, #0xc + movs r2, #0x47 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08063266 + b _08063450 +_08063266: + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0x2a + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08063298 + ldrb r0, [r4] + muls r0, r5, r0 + adds r1, r0, r6 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #8 + bne _0806328C + b _08063450 +_0806328C: + adds r0, r1, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #8 + bne _08063298 + b _08063450 +_08063298: + ldr r0, _080632F0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + beq _080632A8 + b _08063450 +_080632A8: + movs r0, #0 + mov sl, r0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08063312 + ldrb r7, [r4] + adds r0, r7, #0 + bl sub_080A630C + movs r5, #2 + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _080632F4 + ldrb r1, [r1] + ldr r2, _080632F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _080632FC + ldrb r6, [r4] + b _08063316 + .align 2, 0 +_080632E0: .4byte gUnknown_2023D28 +_080632E4: .4byte gUnknown_2023D08 +_080632E8: .4byte 0x0400E000 +_080632EC: .4byte gUnknown_2023F50 +_080632F0: .4byte gUnknown_2022C90 +_080632F4: .4byte gUnknown_2023EB4 +_080632F8: .4byte gUnknown_82FACB4 +_080632FC: + ldrb r0, [r4] + bl sub_080A630C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _08063316 +_08063312: + ldrb r6, [r4] + adds r7, r6, #0 +_08063316: + ldr r0, _08063338 + ldr r0, [r0] + ldr r1, _0806333C + ands r0, r1 + cmp r0, #0 + beq _0806334C + ldr r2, _08063340 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08063344 + movs r4, #0 + movs r1, #3 + mov r8, r1 + b _08063354 + .align 2, 0 +_08063338: .4byte gUnknown_2022C90 +_0806333C: .4byte 0x00808000 +_08063340: .4byte gUnknown_2023D08 +_08063344: + movs r4, #3 + movs r0, #6 + mov r8, r0 + b _08063354 +_0806334C: + movs r4, #0 + movs r1, #6 + mov r8, r1 + ldr r2, _0806343C +_08063354: + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08063440 + mov sb, r1 + cmp r0, #0 + bne _08063368 + ldr r0, _08063444 + mov sb, r0 +_08063368: + adds r5, r4, #0 + cmp r5, r8 + bge _080633D6 +_0806336E: + movs r0, #0x64 + muls r0, r5, r0 + mov r1, sb + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080633D0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _080633D0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _080633D0 + ldr r1, _08063448 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _080633D0 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _080633D0 + ldr r0, _0806344C + ldr r1, [r0] + adds r0, r7, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r5, r0 + beq _080633D0 + adds r0, r6, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r5, r0 + beq _080633D0 + movs r0, #1 + add sl, r0 +_080633D0: + adds r5, #1 + cmp r5, r8 + blt _0806336E +_080633D6: + mov r1, sl + cmp r1, #0 + beq _08063450 + bl sub_080627DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063436 + bl sub_0806283C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063436 + bl sub_08062A38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063436 + bl sub_08062CA4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063436 + movs r0, #0 + bl sub_08062DA0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063450 + bl sub_08062F00 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063450 + movs r0, #8 + movs r1, #2 + bl sub_08062F48 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08063436 + movs r0, #4 + movs r1, #3 + bl sub_08062F48 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08063450 +_08063436: + movs r0, #1 + b _08063452 + .align 2, 0 +_0806343C: .4byte gUnknown_2023D08 +_08063440: .4byte gUnknown_20243E8 +_08063444: .4byte gUnknown_2024190 +_08063448: .4byte gUnknown_2023D12 +_0806344C: .4byte gUnknown_2024140 +_08063450: + movs r0, #0 +_08063452: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080631F8 + + thumb_func_start sub_08063464 +sub_08063464: @ 0x08063464 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _080634E0 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r5, r6, #0 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _080634E4 + mov r8, r1 + cmp r0, #0 + bne _0806348C + ldr r2, _080634E8 + mov r8, r2 +_0806348C: + ldr r7, _080634EC + ldr r0, [r7] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0806349A + b _080635CA +_0806349A: + bl sub_080631F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080634A6 + b _080635C0 +_080634A6: + ldrb r0, [r4] + ldr r2, _080634F0 + ldr r1, [r2] + adds r0, r0, r1 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #6 + bne _0806359C + bl sub_08063674 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bne _0806358A + ldr r0, [r7] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080634F4 + adds r0, r6, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + b _0806350C + .align 2, 0 +_080634E0: .4byte gUnknown_2023D08 +_080634E4: .4byte gUnknown_20243E8 +_080634E8: .4byte gUnknown_2024190 +_080634EC: .4byte gUnknown_2022C90 +_080634F0: .4byte gUnknown_2024140 +_080634F4: + adds r0, r5, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #2 + eors r5, r0 + adds r0, r5, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0806350C: + ldr r0, _0806352C + ldr r0, [r0] + ldr r1, _08063530 + ands r0, r1 + cmp r0, #0 + beq _0806353C + ldr r0, _08063534 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08063538 + movs r0, #0 + movs r7, #3 + b _08063540 + .align 2, 0 +_0806352C: .4byte gUnknown_2022C90 +_08063530: .4byte 0x00808000 +_08063534: .4byte gUnknown_2023D08 +_08063538: + movs r0, #3 + b _0806353E +_0806353C: + movs r0, #0 +_0806353E: + movs r7, #6 +_08063540: + adds r4, r0, #0 + cmp r4, r7 + bge _0806358A +_08063546: + movs r0, #0x64 + muls r0, r4, r0 + add r0, r8 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08063584 + ldr r1, _080635B4 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08063584 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _08063584 + ldr r0, _080635B8 + ldr r1, [r0] + adds r0, r6, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r4, r0 + beq _08063584 + adds r0, r5, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r4, r0 + bne _0806358A +_08063584: + adds r4, #1 + cmp r4, r7 + blt _08063546 +_0806358A: + ldr r0, _080635BC + ldrb r0, [r0] + ldr r2, _080635B8 + ldr r1, [r2] + adds r0, r0, r1 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + strb r4, [r0] +_0806359C: + ldr r0, _080635BC + ldrb r1, [r0] + ldr r0, [r2] + adds r0, r1, r0 + adds r1, r0, #0 + adds r1, #0x5c + movs r2, #0xa5 + lsls r2, r2, #2 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + b _080635DC + .align 2, 0 +_080635B4: .4byte gUnknown_2023D12 +_080635B8: .4byte gUnknown_2024140 +_080635BC: .4byte gUnknown_2023D08 +_080635C0: + bl sub_08063AC4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080635DC +_080635CA: + ldr r0, _080635E8 + ldrb r0, [r0] + movs r2, #1 + eors r2, r0 + lsls r2, r2, #8 + movs r0, #1 + movs r1, #0 + bl sub_08033FB0 +_080635DC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080635E8: .4byte gUnknown_2023D08 + thumb_func_end sub_08063464 + + thumb_func_start sub_080635EC +sub_080635EC: @ 0x080635EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + movs r7, #0 + ldr r0, _08063670 + mov sl, r0 + ldrb r0, [r0] + cmp r0, #0xff + beq _0806365E + mov r5, sl +_0806361A: + ldrb r0, [r5] + cmp r0, #0xfe + beq _08063650 + ldr r1, [sp] + cmp r0, r1 + bne _08063650 + ldrb r4, [r5, #1] + cmp r4, sb + bne _0806363A + ldrb r1, [r6] + ldrb r0, [r5, #2] + muls r0, r1, r0 + movs r1, #0xa + bl __divsi3 + strb r0, [r6] +_0806363A: + cmp r4, r8 + bne _08063650 + cmp sb, r8 + beq _08063650 + ldrb r1, [r6] + ldrb r0, [r5, #2] + muls r0, r1, r0 + movs r1, #0xa + bl __divsi3 + strb r0, [r6] +_08063650: + adds r5, #3 + adds r7, #3 + mov r1, sl + adds r0, r7, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0806361A +_0806365E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08063670: .4byte gUnknown_82EBB38 + thumb_func_end sub_080635EC + + thumb_func_start sub_08063674 +sub_08063674: @ 0x08063674 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r4, _080636B4 + ldrb r2, [r4] + ldr r0, _080636B8 + ldr r0, [r0] + adds r0, r2, r0 + adds r1, r0, #0 + adds r1, #0x5c + ldrb r0, [r1] + cmp r0, #6 + beq _08063696 + b _08063A34 +_08063696: + ldr r0, _080636BC + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + beq _080636C4 + ldr r1, _080636C0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08063A34 + .align 2, 0 +_080636B4: .4byte gUnknown_2023D08 +_080636B8: .4byte gUnknown_2024140 +_080636BC: .4byte gUnknown_2022C90 +_080636C0: .4byte gUnknown_2023D12 +_080636C4: + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08063750 + str r2, [sp, #0x10] + adds r0, r2, #0 + bl sub_080A630C + movs r5, #2 + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + ldr r1, _080636FC + ldrb r1, [r1] + ldr r2, _08063700 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08063704 + ldrb r4, [r4] + str r4, [sp, #0x14] + b _0806371A + .align 2, 0 +_080636FC: .4byte gUnknown_2023EB4 +_08063700: .4byte gUnknown_82FACB4 +_08063704: + ldrb r0, [r4] + bl sub_080A630C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] +_0806371A: + bl sub_0806F050 + movs r3, #2 + ands r0, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, _08063748 + ldrb r1, [r0] + ldr r2, _0806374C + ldr r4, [sp, #4] + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0806376E + eors r4, r3 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + b _0806376E + .align 2, 0 +_08063748: .4byte gUnknown_2023EB4 +_0806374C: .4byte gUnknown_82FACB4 +_08063750: + adds r0, r2, #0 + bl sub_080A630C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldrb r4, [r4] + str r4, [sp, #0x14] + str r4, [sp, #0x10] +_0806376E: + ldr r0, _08063790 + ldr r0, [r0] + ldr r1, _08063794 + ands r0, r1 + cmp r0, #0 + beq _080637A6 + ldr r2, _08063798 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806379C + movs r0, #0 + str r0, [sp, #0x18] + movs r1, #3 + str r1, [sp, #0x1c] + b _080637B0 + .align 2, 0 +_08063790: .4byte gUnknown_2022C90 +_08063794: .4byte 0x00808000 +_08063798: .4byte gUnknown_2023D08 +_0806379C: + movs r4, #3 + str r4, [sp, #0x18] + movs r0, #6 + str r0, [sp, #0x1c] + b _080637B0 +_080637A6: + movs r1, #0 + str r1, [sp, #0x18] + movs r2, #6 + str r2, [sp, #0x1c] + ldr r2, _0806389C +_080637B0: + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r4, _080638A0 + str r4, [sp, #0x20] + cmp r0, #0 + bne _080637C4 + ldr r0, _080638A4 + str r0, [sp, #0x20] +_080637C4: + movs r1, #0 + mov sb, r1 +_080637C8: + movs r2, #0 + str r2, [sp, #8] + movs r4, #6 + str r4, [sp, #0xc] + ldr r7, [sp, #0x18] + ldr r0, [sp, #0x1c] + cmp r7, r0 + blt _080637DA + b _080638D6 +_080637DA: + lsls r0, r7, #2 + ldr r1, _080638A8 + adds r0, r0, r1 + mov r8, r0 + mov sl, sp +_080637E4: + movs r0, #0x64 + muls r0, r7, r0 + ldr r2, [sp, #0x20] + adds r4, r2, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _080638BC + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080638BC + mov r4, r8 + ldr r0, [r4] + mov r1, sb + ands r0, r1 + cmp r0, #0 + bne _080638BC + ldr r1, _080638AC + ldr r2, [sp, #0x10] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _080638BC + ldr r4, [sp, #0x14] + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _080638BC + ldr r0, _080638B0 + ldr r1, [r0] + adds r0, r2, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r7, r0 + beq _080638BC + adds r0, r4, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r7, r0 + beq _080638BC + ldr r1, _080638B4 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #6] + ldrb r6, [r0, #7] + movs r0, #0xa + mov r1, sl + strb r0, [r1] + movs r0, #0x58 + ldr r2, [sp, #4] + adds r4, r2, #0 + muls r4, r0, r4 + ldr r0, _080638B8 + adds r4, 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_080635EC + adds r4, #0x22 + ldrb r0, [r4] + adds r1, r5, #0 + adds r2, r6, #0 + mov r3, sp + bl sub_080635EC + ldr r2, [sp, #8] + mov r1, sl + ldrb r1, [r1] + cmp r2, r1 + bhs _080638CA + mov r2, sl + ldrb r2, [r2] + str r2, [sp, #8] + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + b _080638CA + .align 2, 0 +_0806389C: .4byte gUnknown_2023D08 +_080638A0: .4byte gUnknown_20243E8 +_080638A4: .4byte gUnknown_2024190 +_080638A8: .4byte gUnknown_82FACB4 +_080638AC: .4byte gUnknown_2023D12 +_080638B0: .4byte gUnknown_2024140 +_080638B4: .4byte gUnknown_82F0D54 +_080638B8: .4byte gUnknown_2023D28 +_080638BC: + mov r4, r8 + ldr r0, [r4] + mov r1, sb + orrs r1, r0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080638CA: + movs r2, #4 + add r8, r2 + adds r7, #1 + ldr r4, [sp, #0x1c] + cmp r7, r4 + blt _080637E4 +_080638D6: + ldr r0, [sp, #0xc] + cmp r0, #6 + beq _08063938 + movs r7, #0 + movs r0, #0x64 + ldr r1, [sp, #0xc] + adds r5, r1, #0 + muls r5, r0, r5 +_080638E6: + adds r1, r7, #0 + adds r1, #0xd + ldr r2, [sp, #0x20] + adds r0, r2, r5 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0806390E + ldr r0, _08063930 + ldrb r1, [r0] + adds r0, r4, #0 + ldr r2, [sp, #4] + bl sub_08047224 + movs r1, #2 + ands r1, r0 + cmp r1, #0 + bne _08063914 +_0806390E: + adds r7, #1 + cmp r7, #3 + ble _080638E6 +_08063914: + cmp r7, #4 + beq _0806391A + b _08063A32 +_0806391A: + ldr r4, [sp, #0xc] + lsls r0, r4, #2 + ldr r1, _08063934 + adds r0, r0, r1 + ldr r0, [r0] + mov r2, sb + orrs r2, r0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + b _0806393C + .align 2, 0 +_08063930: .4byte gUnknown_2023D08 +_08063934: .4byte gUnknown_82FACB4 +_08063938: + movs r4, #0x3f + mov sb, r4 +_0806393C: + mov r0, sb + cmp r0, #0x3f + beq _08063944 + b _080637C8 +_08063944: + ldr r0, _08063A44 + movs r1, #0 + strh r1, [r0] + ldr r0, _08063A48 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _08063A4C + movs r2, #1 + strb r2, [r0, #0xe] + ldr r0, _08063A50 + strb r1, [r0] + ldr r0, _08063A54 + strb r2, [r0] + movs r1, #0 + str r1, [sp, #8] + movs r2, #6 + str r2, [sp, #0xc] + ldr r7, [sp, #0x18] + ldr r4, [sp, #0x1c] + cmp r7, r4 + bge _08063A32 +_0806396E: + movs r0, #0x64 + adds r6, r7, #0 + muls r6, r0, r6 + ldr r0, [sp, #0x20] + adds r4, r0, r6 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + adds r1, r7, #1 + mov sl, r1 + cmp r0, #0 + beq _08063A2A + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08063A2A + ldr r1, _08063A58 + ldr r2, [sp, #0x10] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _08063A2A + ldr r4, [sp, #0x14] + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + beq _08063A2A + ldr r0, _08063A48 + ldr r1, [r0] + adds r0, r2, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r7, r0 + beq _08063A2A + adds r0, r4, r1 + adds r0, #0x5c + ldrb r0, [r0] + cmp r7, r0 + beq _08063A2A + movs r5, #0 + mov sb, r6 + ldr r0, _08063A5C + mov r8, r0 + ldr r6, _08063A60 +_080639D2: + adds r1, r5, #0 + adds r1, #0xd + ldr r0, [sp, #0x20] + add r0, sb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0 + mov r1, r8 + str r0, [r1] + cmp r4, #0 + beq _08063A0E + ldr r0, _08063A64 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #1 + beq _08063A0E + ldrb r0, [r6] + ldr r1, [sp, #4] + bl sub_08046ABC + ldrb r1, [r6] + adds r0, r4, #0 + ldr r2, [sp, #4] + bl sub_08047224 +_08063A0E: + mov r2, r8 + ldr r0, [r2] + ldr r4, [sp, #8] + cmp r4, r0 + bge _08063A24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] +_08063A24: + adds r5, #1 + cmp r5, #3 + ble _080639D2 +_08063A2A: + mov r7, sl + ldr r0, [sp, #0x1c] + cmp r7, r0 + blt _0806396E +_08063A32: + ldr r0, [sp, #0xc] +_08063A34: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08063A44: .4byte gUnknown_20240A4 +_08063A48: .4byte gUnknown_2024140 +_08063A4C: .4byte gUnknown_2024118 +_08063A50: .4byte gUnknown_2023F20 +_08063A54: .4byte gUnknown_2023EB5 +_08063A58: .4byte gUnknown_2023D12 +_08063A5C: .4byte gUnknown_2023E94 +_08063A60: .4byte gUnknown_2023D08 +_08063A64: .4byte gUnknown_82ED220 + thumb_func_end sub_08063674 + + thumb_func_start sub_08063A68 +sub_08063A68: @ 0x08063A68 + push {r4, lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bne _08063A78 + movs r0, #1 + b _08063ABE +_08063A78: + ldrb r1, [r2, #4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08063A86 + movs r0, #2 + b _08063ABE +_08063A86: + ldrb r4, [r2, #3] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r4 + cmp r0, #0 + beq _08063A96 + movs r0, #3 + b _08063ABE +_08063A96: + ldrb r1, [r2] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08063AAC + ldrb r0, [r2, #1] + cmp r0, #0 + bne _08063AAC + ldrb r0, [r2, #2] + cmp r0, #0 + beq _08063AB0 +_08063AAC: + movs r0, #4 + b _08063ABE +_08063AB0: + movs r0, #0x80 + ands r0, r4 + cmp r0, #0 + bne _08063ABC + movs r0, #6 + b _08063ABE +_08063ABC: + movs r0, #5 +_08063ABE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08063A68 + + thumb_func_start sub_08063AC4 +sub_08063AC4: @ 0x08063AC4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + mov sl, r0 + movs r7, #0 + ldr r0, _08063BAC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08063AF6 + ldr r0, _08063BB0 + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08063AF6 + b _08063F60 +_08063AF6: + ldr r0, _08063BB0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r5, _08063BB4 + cmp r0, #0 + bne _08063B08 + ldr r5, _08063BB8 +_08063B08: + movs r1, #0 + mov r8, r1 +_08063B0C: + movs r0, #0x64 + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + adds r4, r5, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _08063B48 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _08063B48 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08063B48 + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_08063B48: + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #5 + ble _08063B0C + movs r2, #0 + mov r8, r2 +_08063B56: + ldr r1, _08063BBC + mov r0, r8 + cmp r0, #0 + beq _08063B72 + ldr r0, [r1] + ldr r0, [r0, #0x18] + adds r0, #0x50 + ldrb r0, [r0] + mov r2, r8 + subs r0, r0, r2 + adds r0, #1 + cmp sl, r0 + ble _08063B72 + b _08063F54 +_08063B72: + ldr r0, [r1] + ldr r0, [r0, #0x18] + mov r2, r8 + lsls r1, r2, #1 + adds r0, #0x48 + adds r0, r0, r1 + ldrh r0, [r0] + mov sb, r0 + str r1, [sp] + cmp r0, #0 + bne _08063B8A + b _08063F54 +_08063B8A: + ldr r1, _08063BC0 + subs r0, #0xd + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + cmp r1, #0 + bne _08063B9A + b _08063F54 +_08063B9A: + mov r0, sb + cmp r0, #0xaf + bne _08063BCC + ldr r0, _08063BC4 + ldr r0, [r0] + ldr r1, _08063BC8 + adds r5, r0, r1 + b _08063BCE + .align 2, 0 +_08063BAC: .4byte gUnknown_2022C90 +_08063BB0: .4byte gUnknown_2023D08 +_08063BB4: .4byte gUnknown_20243E8 +_08063BB8: .4byte gUnknown_2024190 +_08063BBC: .4byte gUnknown_202414C +_08063BC0: .4byte gUnknown_82EEF14 +_08063BC4: .4byte gUnknown_3005AEC +_08063BC8: .4byte 0x00003214 +_08063BCC: + adds r5, r1, #0 +_08063BCE: + mov r2, sb + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + bl sub_08063A68 + ldr r4, _08063C08 + ldrb r1, [r4] + lsrs r1, r1, #1 + ldr r3, _08063C0C + ldr r2, [r3] + adds r1, r1, r2 + adds r1, #0xc4 + strb r0, [r1] + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc4 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #5 + bls _08063BFE + b _08063F08 +_08063BFE: + lsls r0, r0, #2 + ldr r1, _08063C10 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08063C08: .4byte gUnknown_2023D08 +_08063C0C: .4byte gUnknown_2024140 +_08063C10: .4byte _08063C14 +_08063C14: @ jump table + .4byte _08063C2C @ case 0 + .4byte _08063C58 @ case 1 + .4byte _08063CA0 @ case 2 + .4byte _08063DF8 @ case 3 + .4byte _08063ED8 @ case 4 + .4byte _08063F60 @ case 5 +_08063C2C: + ldr r2, _08063C50 + ldr r0, _08063C54 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r1, [r0, #0x2c] + ldrh r0, [r0, #0x28] + lsrs r1, r1, #2 + cmp r0, r1 + blo _08063C44 + b _08063F08 +_08063C44: + cmp r0, #0 + bne _08063C4A + b _08063F08 +_08063C4A: + movs r7, #1 + b _08063F0C + .align 2, 0 +_08063C50: .4byte gUnknown_2023D28 +_08063C54: .4byte gUnknown_2023D08 +_08063C58: + mov r0, sb + movs r1, #4 + movs r2, #4 + bl sub_0806C8A0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08063C6C + b _08063F08 +_08063C6C: + ldr r2, _08063C98 + ldr r0, _08063C9C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r1, r0, r2 + ldrh r2, [r1, #0x28] + cmp r2, #0 + bne _08063C80 + b _08063F08 +_08063C80: + ldrh r3, [r1, #0x2c] + lsrs r0, r3, #2 + cmp r2, r0 + blo _08063C4A + adds r0, r2, #0 + subs r0, r3, r0 + adds r1, r5, r4 + ldrb r1, [r1] + cmp r0, r1 + bgt _08063C96 + b _08063F08 +_08063C96: + b _08063C4A + .align 2, 0 +_08063C98: .4byte gUnknown_2023D28 +_08063C9C: .4byte gUnknown_2023D08 +_08063CA0: + ldr r3, _08063DEC + ldrb r0, [r3] + lsrs r0, r0, #1 + ldr r2, _08063DF0 + ldr r1, [r2] + adds r0, r0, r1 + adds r0, #0xc6 + movs r1, #0 + strb r1, [r0] + ldrb r1, [r5, #3] + movs r6, #0x20 + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08063CE4 + ldr r1, _08063DF4 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08063CE4 + lsrs r1, r4, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, #1 +_08063CE4: + ldrb r1, [r5, #3] + movs r6, #0x10 + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08063D1E + ldr r1, _08063DF4 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08063D0E + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + beq _08063D1E +_08063D0E: + lsrs r1, r4, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, #1 +_08063D1E: + ldrb r1, [r5, #3] + movs r6, #8 + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08063D50 + ldr r1, _08063DF4 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08063D50 + lsrs r1, r4, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, #1 +_08063D50: + ldrb r1, [r5, #3] + movs r6, #4 + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08063D82 + ldr r1, _08063DF4 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08063D82 + lsrs r1, r4, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, #1 +_08063D82: + ldrb r1, [r5, #3] + movs r6, #2 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08063DB4 + ldr r1, _08063DF4 + ldrb r4, [r3] + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08063DB4 + lsrs r1, r4, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + movs r7, #1 +_08063DB4: + ldrb r1, [r5, #3] + movs r4, #1 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08063DC2 + b _08063F08 +_08063DC2: + ldr r1, _08063DF4 + ldrb r3, [r3] + movs r0, #0x58 + muls r0, r3, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08063DDA + b _08063F08 +_08063DDA: + lsrs r1, r3, #1 + ldr r0, [r2] + adds r1, r1, r0 + adds r1, #0xc6 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + b _08063C4A + .align 2, 0 +_08063DEC: .4byte gUnknown_2023D08 +_08063DF0: .4byte gUnknown_2024140 +_08063DF4: .4byte gUnknown_2023D28 +_08063DF8: + ldr r4, _08063ECC + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r3, _08063ED0 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + movs r1, #0 + strb r1, [r0] + ldr r1, _08063ED4 + ldrb r2, [r4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _08063F08 + ldrb r1, [r5] + movs r6, #0xf + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08063E38 + lsrs r2, r2, #1 + ldr r0, [r3] + adds r2, r2, r0 + adds r2, #0xc6 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_08063E38: + ldrb r1, [r5, #1] + movs r7, #0xf0 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _08063E56 + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_08063E56: + ldrb r1, [r5, #1] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08063E72 + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08063E72: + ldrb r1, [r5, #2] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08063E8E + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] +_08063E8E: + ldrb r1, [r5, #2] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _08063EAA + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0] +_08063EAA: + ldrb r1, [r5] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + bne _08063EB6 + b _08063C4A +_08063EB6: + ldrb r0, [r4] + lsrs r0, r0, #1 + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0xc6 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + b _08063C4A + .align 2, 0 +_08063ECC: .4byte gUnknown_2023D08 +_08063ED0: .4byte gUnknown_2024140 +_08063ED4: .4byte gUnknown_2023F60 +_08063ED8: + ldr r4, _08063F40 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08063F44 + ldrb r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _08063F08 + ldr r0, _08063F48 + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _08063F08 + b _08063C4A +_08063F08: + cmp r7, #0 + beq _08063F54 +_08063F0C: + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08033FB0 + ldr r0, _08063F40 + ldrb r0, [r0] + lsrs r0, r0, #1 + ldr r1, _08063F4C + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, #0xc0 + mov r1, sb + strb r1, [r0] + ldr r0, _08063F50 + ldr r0, [r0] + ldr r0, [r0, #0x18] + adds r0, #0x48 + ldr r2, [sp] + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0] + adds r0, r7, #0 + b _08063F62 + .align 2, 0 +_08063F40: .4byte gUnknown_2023D08 +_08063F44: .4byte gUnknown_2023F60 +_08063F48: .4byte gUnknown_2023F38 +_08063F4C: .4byte gUnknown_2024140 +_08063F50: .4byte gUnknown_202414C +_08063F54: + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #3 + bgt _08063F60 + b _08063B56 +_08063F60: + movs r0, #0 +_08063F62: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08063AC4 + + thumb_func_start sub_08063F74 +sub_08063F74: @ 0x08063F74 + bx lr + .align 2, 0 + thumb_func_end sub_08063F74 + + thumb_func_start sub_08063F78 +sub_08063F78: @ 0x08063F78 + ldr r1, _08063F88 + ldr r0, _08063F8C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08063F90 + str r1, [r0] + bx lr + .align 2, 0 +_08063F88: .4byte gUnknown_3005AC0 +_08063F8C: .4byte gUnknown_2023D08 +_08063F90: .4byte sub_08063F94 + thumb_func_end sub_08063F78 + + thumb_func_start sub_08063F94 +sub_08063F94: @ 0x08063F94 + push {lr} + ldr r2, _08063FC8 + ldr r1, _08063FCC + ldr r0, _08063FD0 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08063FE0 + ldr r0, _08063FD4 + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _08063FDC + ldr r0, _08063FD8 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08063FE0 + .align 2, 0 +_08063FC8: .4byte gUnknown_2023D0C +_08063FCC: .4byte gUnknown_82FACB4 +_08063FD0: .4byte gUnknown_2023D08 +_08063FD4: .4byte gUnknown_2022D08 +_08063FD8: .4byte gUnknown_82ED13C +_08063FDC: + bl sub_08064C4C +_08063FE0: + pop {r0} + bx r0 + thumb_func_end sub_08063F94 + + thumb_func_start sub_08063FE4 +sub_08063FE4: @ 0x08063FE4 + push {lr} + ldr r2, _0806400C + ldr r1, _08064010 + ldr r0, _08064014 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08064018 + cmp r1, r0 + bne _08064008 + bl sub_08064C4C +_08064008: + pop {r0} + bx r0 + .align 2, 0 +_0806400C: .4byte gUnknown_20205AC +_08064010: .4byte gUnknown_2023E88 +_08064014: .4byte gUnknown_2023D08 +_08064018: .4byte sub_08007140 + thumb_func_end sub_08063FE4 + + thumb_func_start sub_0806401C +sub_0806401C: @ 0x0806401C + push {lr} + ldr r2, _08064044 + ldr r1, _08064048 + ldr r0, _0806404C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08064050 + cmp r1, r0 + bne _08064040 + bl sub_08064C4C +_08064040: + pop {r0} + bx r0 + .align 2, 0 +_08064044: .4byte gUnknown_20205AC +_08064048: .4byte gUnknown_2023E88 +_0806404C: .4byte gUnknown_2023D08 +_08064050: .4byte sub_08007140 + thumb_func_end sub_0806401C + + thumb_func_start sub_08064054 +sub_08064054: @ 0x08064054 + push {r4, r5, r6, lr} + ldr r5, _080640AC + ldr r6, _080640B0 + ldr r4, _080640B4 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _080640B8 + cmp r1, r0 + bne _080640A6 + adds r0, r2, r5 + ldrh r0, [r0, #6] + bl sub_0805DC00 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + bl sub_08064C4C +_080640A6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080640AC: .4byte gUnknown_20205AC +_080640B0: .4byte gUnknown_2023E88 +_080640B4: .4byte gUnknown_2023D08 +_080640B8: .4byte sub_08007140 + thumb_func_end sub_08064054 + + thumb_func_start sub_080640BC +sub_080640BC: @ 0x080640BC + push {r4, lr} + ldr r4, _080640FC + ldr r1, [r4] + ldr r3, _08064100 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080640F4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_08064C4C +_080640F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080640FC: .4byte gUnknown_2024174 +_08064100: .4byte gUnknown_2023D08 + thumb_func_end sub_080640BC + + thumb_func_start sub_08064104 +sub_08064104: @ 0x08064104 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + mov r8, r0 + movs r4, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08064130 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08064168 + ldr r0, _08064154 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08064168 +_08064130: + ldr r2, _08064158 + ldr r1, _0806415C + ldr r3, _08064160 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08064164 + adds r7, r3, #0 + cmp r1, r0 + bne _080641A6 + b _080641AE + .align 2, 0 +_08064154: .4byte gUnknown_2022C90 +_08064158: .4byte gUnknown_20205AC +_0806415C: .4byte gUnknown_3005AD0 +_08064160: .4byte gUnknown_2023D08 +_08064164: .4byte sub_08007140 +_08064168: + ldr r3, _08064268 + ldr r6, _0806426C + ldr r2, _08064270 + ldrb r4, [r2] + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r3, #0 + adds r5, #0x1c + adds r0, r0, r5 + ldr r3, [r0] + ldr r0, _08064274 + adds r7, r2, #0 + cmp r3, r0 + bne _080641A4 + movs r0, #2 + eors r4, r0 + adds r0, r4, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r3 + bne _080641A4 + movs r1, #1 + mov r8, r1 +_080641A4: + movs r4, #1 +_080641A6: + mov r0, r8 + cmp r0, #0 + bne _080641AE + b _080642F8 +_080641AE: + cmp r4, #0 + bne _080641C2 + ldrb r1, [r7] + movs r0, #2 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08064280 +_080641C2: + ldr r1, _08064278 + mov ip, r1 + ldr r0, [r1] + ldr r7, _08064270 + ldrb r2, [r7] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4, #1] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080641E4 + b _080642F8 +_080641E4: + movs r6, #2 + adds r1, r6, #0 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080642F8 + ldrb r1, [r4] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + mov r1, ip + ldr r0, [r1] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r0, ip + ldr r2, [r0] + ldrb r0, [r7] + adds r1, r6, #0 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, ip + ldr r2, [r1] + ldrb r0, [r7] + adds r1, r6, #0 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0806427C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + b _080642D6 + .align 2, 0 +_08064268: .4byte gUnknown_20205AC +_0806426C: .4byte gUnknown_3005AD0 +_08064270: .4byte gUnknown_2023D08 +_08064274: .4byte sub_08007140 +_08064278: .4byte gUnknown_2024174 +_0806427C: .4byte 0x000027F9 +_08064280: + ldr r3, _08064304 + ldr r0, [r3] + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080642F8 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldrb r0, [r7] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _080642D6 + ldr r4, _08064308 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 +_080642D6: + ldr r0, _08064304 + ldr r0, [r0] + ldr r3, _0806430C + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _08064310 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08064314 + str r1, [r0] +_080642F8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08064304: .4byte gUnknown_2024174 +_08064308: .4byte 0x000027F9 +_0806430C: .4byte gUnknown_2023D08 +_08064310: .4byte gUnknown_3005AC0 +_08064314: .4byte sub_080640BC + thumb_func_end sub_08064104 + + thumb_func_start sub_08064318 +sub_08064318: @ 0x08064318 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sl, r0 + ldr r5, _080644F8 + ldr r0, [r5] + ldr r4, _080644FC + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + movs r6, #0xc4 + lsls r6, r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0806435A + ldr r0, _08064500 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08064504 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0806435A: + ldr r0, _08064508 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08064398 + ldr r2, [r5] + ldrb r1, [r4] + movs r0, #2 + adds r3, r0, #0 + eors r3, r1 + ldr r1, [r2, #4] + lsls r2, r3, #1 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08064398 + ldr r0, _08064500 + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08064504 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 +_08064398: + ldr r3, _080644F8 + ldr r0, [r3] + ldr r2, _080644FC + ldrb r5, [r2] + ldr r4, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r6, r0, r4 + ldrb r1, [r6] + movs r0, #8 + mov ip, r0 + ands r0, r1 + mov r8, r3 + mov sb, r2 + cmp r0, #0 + bne _0806447C + movs r7, #2 + adds r1, r7, #0 + eors r1, r5 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + mov r0, ip + ands r0, r1 + cmp r0, #0 + bne _0806447C + ldrb r1, [r6, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806445E + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806442E + ldr r0, _08064508 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0806442E + ldr r4, _0806450C + mov r1, sb + ldrb r0, [r1] + adds r1, r7, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08064500 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08064504 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + mov r1, sb + ldrb r0, [r1] + eors r0, r7 + bl sub_08076320 + mov r1, sb + ldrb r0, [r1] + eors r0, r7 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_0806442E: + ldr r5, _0806450C + ldr r4, _080644FC + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08064500 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08064504 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 +_0806445E: + ldr r4, _080644F8 + ldr r0, [r4] + ldr r3, _080644FC + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] + mov r8, r4 + mov sb, r3 +_0806447C: + mov r1, r8 + ldr r0, [r1] + mov r1, sb + ldrb r2, [r1] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _0806453E + movs r1, #2 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0806453E + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806453E + mov r1, r8 + ldr r0, [r1] + mov r1, sb + ldrb r2, [r1] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08064520 + ldr r0, _08064508 + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _08064514 + adds r0, r2, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08064520 + ldr r0, _08064510 + bl m4aMPlayContinue + b _08064520 + .align 2, 0 +_080644F8: .4byte gUnknown_2024174 +_080644FC: .4byte gUnknown_2023D08 +_08064500: .4byte gUnknown_2023D12 +_08064504: .4byte gUnknown_20243E8 +_08064508: .4byte gUnknown_2022C90 +_0806450C: .4byte gUnknown_3005AD0 +_08064510: .4byte gUnknown_30074D0 +_08064514: + ldr r0, _080646B4 + ldr r1, _080646B8 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_08064520: + ldr r0, _080646BC + ldr r2, [r0] + ldr r0, _080646C0 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + mov sl, r0 +_0806453E: + mov r1, sl + cmp r1, #0 + bne _08064546 + b _080646A4 +_08064546: + ldr r2, _080646C4 + ldr r0, _080646C8 + ldr r5, _080646C0 + ldrb r3, [r5] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _080646CC + cmp r4, r0 + beq _08064566 + b _080646A4 +_08064566: + ldr r0, _080646D0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + beq _0806457C + b _080646A4 +_0806457C: + ldr r0, _080646D4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080645C6 + adds r0, r3, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _080645C6 + ldr r3, _080646BC + ldr r0, [r3] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #9] + adds r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080646A4 + ldr r0, [r3] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] +_080645C6: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806461E + ldr r0, _080646D4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0806461E + ldr r1, _080646C8 + ldr r5, _080646C0 + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080646C4 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r0, [r5] + eors r4, r0 + ldr r1, _080646D8 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080646DC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 +_0806461E: + ldr r1, _080646C8 + ldr r4, _080646C0 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080646C4 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r5, [r4] + ldr r1, _080646D8 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080646DC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0805EA70 + ldr r3, _080646BC + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _080646E0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080646E4 + str r1, [r0] +_080646A4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080646B4: .4byte gUnknown_30074D0 +_080646B8: .4byte 0x0000FFFF +_080646BC: .4byte gUnknown_2024174 +_080646C0: .4byte gUnknown_2023D08 +_080646C4: .4byte gUnknown_20205AC +_080646C8: .4byte gUnknown_3005ADC +_080646CC: .4byte sub_08007140 +_080646D0: .4byte gUnknown_2023E88 +_080646D4: .4byte gUnknown_2022C90 +_080646D8: .4byte gUnknown_2023D12 +_080646DC: .4byte gUnknown_20243E8 +_080646E0: .4byte gUnknown_3005AC0 +_080646E4: .4byte sub_08064104 + thumb_func_end sub_08064318 + + thumb_func_start sub_080646E8 +sub_080646E8: @ 0x080646E8 + push {r4, r5, r6, r7, lr} + ldr r4, _08064744 + ldr r0, _08064748 + ldr r7, _0806474C + ldrb r3, [r7] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _08064750 + cmp r1, r0 + bne _0806479A + adds r0, r2, r4 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0806479A + ldr r6, _08064754 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r4, r3, #1 + adds r0, r4, r3 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r5, [r2] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + bne _08064760 + ldr r0, _08064758 + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0806475C + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 + b _0806479A + .align 2, 0 +_08064744: .4byte gUnknown_20205AC +_08064748: .4byte gUnknown_2023E88 +_0806474C: .4byte gUnknown_2023D08 +_08064750: .4byte sub_08007140 +_08064754: .4byte gUnknown_2024174 +_08064758: .4byte gUnknown_2023D12 +_0806475C: .4byte gUnknown_20243E8 +_08064760: + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806479A + movs r0, #0x7f + ands r0, r5 + strb r0, [r2] + ldr r0, [r6] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _080647A0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + bl sub_08064C4C +_0806479A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080647A0: .4byte 0x000027F9 + thumb_func_end sub_080646E8 + + thumb_func_start sub_080647A4 +sub_080647A4: @ 0x080647A4 + push {r4, r5, r6, lr} + ldr r6, _080647E4 + ldrb r0, [r6] + ldr r5, _080647E8 + adds r1, r0, r5 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080647EC + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _080647F0 + .align 2, 0 +_080647E4: .4byte gUnknown_2023D08 +_080647E8: .4byte gUnknown_3005AD0 +_080647EC: + bl sub_08064C4C +_080647F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080647A4 + + thumb_func_start sub_080647F8 +sub_080647F8: @ 0x080647F8 + push {lr} + ldr r2, _0806482C + ldr r0, _08064830 + ldr r1, _08064834 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08064826 + ldr r0, _08064838 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08064C4C +_08064826: + pop {r0} + bx r0 + .align 2, 0 +_0806482C: .4byte gUnknown_20205AC +_08064830: .4byte gUnknown_2023E88 +_08064834: .4byte gUnknown_2023D08 +_08064838: .4byte gUnknown_3005AD0 + thumb_func_end sub_080647F8 + + thumb_func_start sub_0806483C +sub_0806483C: @ 0x0806483C + push {r4, r5, r6, lr} + ldr r0, _0806489C + ldr r0, [r0] + ldr r6, _080648A0 + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08064896 + ldr r5, _080648A4 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080648A8 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _080648AC + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08064C4C +_08064896: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806489C: .4byte gUnknown_2024174 +_080648A0: .4byte gUnknown_2023D08 +_080648A4: .4byte gUnknown_2023E88 +_080648A8: .4byte gUnknown_20205AC +_080648AC: .4byte gUnknown_3005AD0 + thumb_func_end sub_0806483C + + thumb_func_start sub_080648B0 +sub_080648B0: @ 0x080648B0 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080648C2 + bl sub_08064C4C +_080648C2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080648B0 + + thumb_func_start sub_080648C8 +sub_080648C8: @ 0x080648C8 + push {r4, lr} + ldr r1, _08064904 + ldr r0, _08064908 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _0806490C + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _08064914 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _08064910 + strb r3, [r0] + bl sub_08064C4C + b _0806493E + .align 2, 0 +_08064904: .4byte gUnknown_2023E88 +_08064908: .4byte gUnknown_2023D08 +_0806490C: .4byte gUnknown_20205AC +_08064910: .4byte gUnknown_202415D +_08064914: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08064938 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08064938: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_0806493E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080648C8 + + thumb_func_start sub_08064944 +sub_08064944: @ 0x08064944 + push {r4, lr} + ldr r2, _08064998 + ldr r0, _0806499C + ldr r4, _080649A0 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _080649A4 + cmp r1, r0 + bne _08064990 + ldr r0, _080649A8 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08064984 + adds r0, r3, #0 + adds r1, r3, #0 + adds r2, r3, #0 + movs r3, #6 + bl sub_0805D6E0 +_08064984: + ldr r0, _080649AC + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _080649B0 + str r0, [r1] +_08064990: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064998: .4byte gUnknown_20205AC +_0806499C: .4byte gUnknown_3005AD0 +_080649A0: .4byte gUnknown_2023D08 +_080649A4: .4byte sub_08007140 +_080649A8: .4byte gUnknown_2024174 +_080649AC: .4byte gUnknown_3005AC0 +_080649B0: .4byte sub_080649B4 + thumb_func_end sub_08064944 + + thumb_func_start sub_080649B4 +sub_080649B4: @ 0x080649B4 + push {r4, lr} + ldr r0, _08064A14 + ldr r0, [r0] + ldr r4, _08064A18 + ldrb r1, [r4] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08064A0E + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08064A0E + ldr r2, _08064A1C + ldr r1, _08064A20 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08064A24 + cmp r1, r0 + beq _080649FE + ldr r0, _08064A28 + cmp r1, r0 + bne _08064A0E +_080649FE: + ldr r0, _08064A2C + ldr r1, _08064A30 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + bl sub_08064C4C +_08064A0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064A14: .4byte gUnknown_2024174 +_08064A18: .4byte gUnknown_2023D08 +_08064A1C: .4byte gUnknown_20205AC +_08064A20: .4byte gUnknown_2023E88 +_08064A24: .4byte sub_08007140 +_08064A28: .4byte sub_080394FC +_08064A2C: .4byte gUnknown_30074D0 +_08064A30: .4byte 0x0000FFFF + thumb_func_end sub_080649B4 + + thumb_func_start sub_08064A34 +sub_08064A34: @ 0x08064A34 + push {r4, r5, r6, r7, lr} + ldr r4, _08064AF8 + ldr r0, [r4] + ldr r5, _08064AFC + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r1, [r3, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08064AF0 + ldr r7, _08064B00 + ldr r6, _08064B04 + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08064B08 + cmp r1, r0 + bne _08064AF0 + ldrb r1, [r3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3] + ldr r0, [r4] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _08064B0C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _08064B10 + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08064B14 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08064B18 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r5] + bl sub_08076320 + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldrb r0, [r5] + bl sub_0805E024 + ldr r1, _08064B1C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08064B20 + str r1, [r0] +_08064AF0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08064AF8: .4byte gUnknown_2024174 +_08064AFC: .4byte gUnknown_2023D08 +_08064B00: .4byte gUnknown_20205AC +_08064B04: .4byte gUnknown_2023E88 +_08064B08: .4byte sub_08007140 +_08064B0C: .4byte 0x000027F9 +_08064B10: .4byte gUnknown_3005AD0 +_08064B14: .4byte gUnknown_2023D12 +_08064B18: .4byte gUnknown_20243E8 +_08064B1C: .4byte gUnknown_3005AC0 +_08064B20: .4byte sub_08064944 + thumb_func_end sub_08064A34 + + thumb_func_start sub_08064B24 +sub_08064B24: @ 0x08064B24 + push {r4, r5, r6, lr} + ldr r6, _08064BC8 + ldr r0, [r6] + ldr r5, _08064BCC + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _08064B56 + ldr r0, _08064BD0 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08064BD4 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_08064B56: + ldr r4, _08064BD8 + ldr r0, _08064BDC + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _08064BE0 + cmp r1, r0 + bne _08064BC0 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08064BC0 + adds r0, r3, r4 + bl sub_08006E00 + ldrb r4, [r5] + ldr r1, _08064BD0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08064BD4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _08064BE4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08064BE8 + str r1, [r0] +_08064BC0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08064BC8: .4byte gUnknown_2024174 +_08064BCC: .4byte gUnknown_2023D08 +_08064BD0: .4byte gUnknown_2023D12 +_08064BD4: .4byte gUnknown_20243E8 +_08064BD8: .4byte gUnknown_20205AC +_08064BDC: .4byte gUnknown_3005ADC +_08064BE0: .4byte sub_08007140 +_08064BE4: .4byte gUnknown_3005AC0 +_08064BE8: .4byte sub_08064A34 + thumb_func_end sub_08064B24 + + thumb_func_start sub_08064BEC +sub_08064BEC: @ 0x08064BEC + push {lr} + ldr r0, _08064C14 + ldr r2, [r0] + ldr r0, _08064C18 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08064C0E + bl sub_08064C4C +_08064C0E: + pop {r0} + bx r0 + .align 2, 0 +_08064C14: .4byte gUnknown_2024174 +_08064C18: .4byte gUnknown_2023D08 + thumb_func_end sub_08064BEC + + thumb_func_start sub_08064C1C +sub_08064C1C: @ 0x08064C1C + push {lr} + ldr r0, _08064C44 + ldr r2, [r0] + ldr r0, _08064C48 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08064C3E + bl sub_08064C4C +_08064C3E: + pop {r0} + bx r0 + .align 2, 0 +_08064C44: .4byte gUnknown_2024174 +_08064C48: .4byte gUnknown_2023D08 + thumb_func_end sub_08064C1C + + thumb_func_start sub_08064C4C +sub_08064C4C: @ 0x08064C4C + push {r4, lr} + sub sp, #4 + ldr r1, _08064C8C + ldr r4, _08064C90 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08064C94 + str r1, [r0] + ldr r0, _08064C98 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08064CA0 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _08064C9C + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _08064CB2 + .align 2, 0 +_08064C8C: .4byte gUnknown_3005AC0 +_08064C90: .4byte gUnknown_2023D08 +_08064C94: .4byte sub_08063F94 +_08064C98: .4byte gUnknown_2022C90 +_08064C9C: .4byte gUnknown_2022D08 +_08064CA0: + ldr r2, _08064CBC + ldr r1, _08064CC0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_08064CB2: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064CBC: .4byte gUnknown_2023D0C +_08064CC0: .4byte gUnknown_82FACB4 + thumb_func_end sub_08064C4C + + thumb_func_start sub_08064CC4 +sub_08064CC4: @ 0x08064CC4 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _08064CF0 + ldr r0, _08064CF4 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08064CFC + ldr r0, _08064CF8 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_08064D38 + adds r6, r0, #0 + b _08064D1E + .align 2, 0 +_08064CF0: .4byte gUnknown_2022D08 +_08064CF4: .4byte gUnknown_2023D08 +_08064CF8: .4byte gUnknown_2023D12 +_08064CFC: + ldrb r4, [r1] + movs r5, #0 +_08064D00: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08064D16 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_08064D38 + adds r6, r6, r0 +_08064D16: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _08064D00 +_08064D1E: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_08064C4C + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08064CC4 + + thumb_func_start sub_08064D38 +sub_08064D38: @ 0x08064D38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _08064D6C + ldr r3, _08064D70 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _08064D62 + bl _080654CE +_08064D62: + lsls r0, r0, #2 + ldr r1, _08064D74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08064D6C: .4byte gUnknown_2022D08 +_08064D70: .4byte gUnknown_2023D08 +_08064D74: .4byte _08064D78 +_08064D78: @ jump table + .4byte _08064E68 @ case 0 + .4byte _0806508C @ case 1 + .4byte _0806509C @ case 2 + .4byte _080650AC @ case 3 + .4byte _08065114 @ case 4 + .4byte _08065114 @ case 5 + .4byte _08065114 @ case 6 + .4byte _08065114 @ case 7 + .4byte _08065130 @ case 8 + .4byte _0806516C @ case 9 + .4byte _0806516C @ case 10 + .4byte _0806516C @ case 11 + .4byte _0806516C @ case 12 + .4byte _080654CE @ case 13 + .4byte _080654CE @ case 14 + .4byte _080654CE @ case 15 + .4byte _080654CE @ case 16 + .4byte _08065188 @ case 17 + .4byte _08065198 @ case 18 + .4byte _080651C8 @ case 19 + .4byte _080651D8 @ case 20 + .4byte _080651E8 @ case 21 + .4byte _080651F8 @ case 22 + .4byte _08065208 @ case 23 + .4byte _08065218 @ case 24 + .4byte _08065228 @ case 25 + .4byte _08065238 @ case 26 + .4byte _08065248 @ case 27 + .4byte _08065258 @ case 28 + .4byte _08065268 @ case 29 + .4byte _08065278 @ case 30 + .4byte _08065288 @ case 31 + .4byte _080652D8 @ case 32 + .4byte _080652E8 @ case 33 + .4byte _080652F8 @ case 34 + .4byte _08065308 @ case 35 + .4byte _08065318 @ case 36 + .4byte _08065328 @ case 37 + .4byte _08065338 @ case 38 + .4byte _08065348 @ case 39 + .4byte _08065358 @ case 40 + .4byte _0806538C @ case 41 + .4byte _0806539C @ case 42 + .4byte _080653AC @ case 43 + .4byte _080653BC @ case 44 + .4byte _080653CC @ case 45 + .4byte _080653DC @ case 46 + .4byte _080653EC @ case 47 + .4byte _080653FC @ case 48 + .4byte _0806541C @ case 49 + .4byte _0806542C @ case 50 + .4byte _0806543C @ case 51 + .4byte _0806544C @ case 52 + .4byte _0806545C @ case 53 + .4byte _0806546C @ case 54 + .4byte _0806547C @ case 55 + .4byte _0806548C @ case 56 + .4byte _0806549C @ case 57 + .4byte _080654AC @ case 58 + .4byte _080654BC @ case 59 +_08064E68: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0806507C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_08064EB4: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08064EB4 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0806507C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _08065080 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _08065084 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _08065088 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_0806506C: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _0806506C + b _080654CE + .align 2, 0 +_0806507C: .4byte gUnknown_20243E8 +_08065080: .4byte 0xFFFFFC1F +_08065084: .4byte 0xFFF07FFF +_08065088: .4byte 0xFFFFFE0F +_0806508C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065098 + adds r0, r0, r1 + movs r1, #0xb + b _08065406 + .align 2, 0 +_08065098: .4byte gUnknown_20243E8 +_0806509C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080650A8 + adds r0, r0, r1 + movs r1, #0xc + b _08065406 + .align 2, 0 +_080650A8: .4byte gUnknown_20243E8 +_080650AC: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08065110 + adds r4, r1, r0 + mov r8, sb +_080650C2: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _080650C2 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065110 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_08065100: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _08065100 + b _080654CE + .align 2, 0 +_08065110: .4byte gUnknown_20243E8 +_08065114: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806512C + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _08065406 + .align 2, 0 +_0806512C: .4byte gUnknown_20243E8 +_08065130: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _08065168 + mov r8, r2 +_0806513C: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _0806513C + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065168 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _080654CE + .align 2, 0 +_08065168: .4byte gUnknown_20243E8 +_0806516C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065184 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _080654C6 + .align 2, 0 +_08065184: .4byte gUnknown_20243E8 +_08065188: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065194 + adds r0, r0, r1 + movs r1, #1 + b _080651A2 + .align 2, 0 +_08065194: .4byte gUnknown_20243E8 +_08065198: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080651C4 + adds r0, r0, r1 + movs r1, #0x19 +_080651A2: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _080654CE + .align 2, 0 +_080651C4: .4byte gUnknown_20243E8 +_080651C8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080651D4 + adds r0, r0, r1 + movs r1, #0x1a + b _080654C6 + .align 2, 0 +_080651D4: .4byte gUnknown_20243E8 +_080651D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080651E4 + adds r0, r0, r1 + movs r1, #0x1b + b _080654C6 + .align 2, 0 +_080651E4: .4byte gUnknown_20243E8 +_080651E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080651F4 + adds r0, r0, r1 + movs r1, #0x1c + b _080654C6 + .align 2, 0 +_080651F4: .4byte gUnknown_20243E8 +_080651F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065204 + adds r0, r0, r1 + movs r1, #0x1d + b _080654C6 + .align 2, 0 +_08065204: .4byte gUnknown_20243E8 +_08065208: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065214 + adds r0, r0, r1 + movs r1, #0x1e + b _080654C6 + .align 2, 0 +_08065214: .4byte gUnknown_20243E8 +_08065218: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065224 + adds r0, r0, r1 + movs r1, #0x1f + b _080654C6 + .align 2, 0 +_08065224: .4byte gUnknown_20243E8 +_08065228: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065234 + adds r0, r0, r1 + movs r1, #0x20 + b _080654C6 + .align 2, 0 +_08065234: .4byte gUnknown_20243E8 +_08065238: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065244 + adds r0, r0, r1 + movs r1, #0x22 + b _080654C6 + .align 2, 0 +_08065244: .4byte gUnknown_20243E8 +_08065248: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065254 + adds r0, r0, r1 + movs r1, #0x23 + b _080654C6 + .align 2, 0 +_08065254: .4byte gUnknown_20243E8 +_08065258: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065264 + adds r0, r0, r1 + movs r1, #0x24 + b _080654C6 + .align 2, 0 +_08065264: .4byte gUnknown_20243E8 +_08065268: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065274 + adds r0, r0, r1 + movs r1, #0x25 + b _080654C6 + .align 2, 0 +_08065274: .4byte gUnknown_20243E8 +_08065278: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065284 + adds r0, r0, r1 + movs r1, #0x26 + b _080654C6 + .align 2, 0 +_08065284: .4byte gUnknown_20243E8 +_08065288: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _080652D4 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _080654CE + .align 2, 0 +_080652D4: .4byte gUnknown_20243E8 +_080652D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080652E4 + adds r0, r0, r1 + movs r1, #0x27 + b _080654C6 + .align 2, 0 +_080652E4: .4byte gUnknown_20243E8 +_080652E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080652F4 + adds r0, r0, r1 + movs r1, #0x28 + b _080654C6 + .align 2, 0 +_080652F4: .4byte gUnknown_20243E8 +_080652F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065304 + adds r0, r0, r1 + movs r1, #0x29 + b _080654C6 + .align 2, 0 +_08065304: .4byte gUnknown_20243E8 +_08065308: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065314 + adds r0, r0, r1 + movs r1, #0x2a + b _080654C6 + .align 2, 0 +_08065314: .4byte gUnknown_20243E8 +_08065318: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065324 + adds r0, r0, r1 + movs r1, #0x2b + b _080654C6 + .align 2, 0 +_08065324: .4byte gUnknown_20243E8 +_08065328: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065334 + adds r0, r0, r1 + movs r1, #0x2c + b _080654C6 + .align 2, 0 +_08065334: .4byte gUnknown_20243E8 +_08065338: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065344 + adds r0, r0, r1 + movs r1, #0 + b _08065362 + .align 2, 0 +_08065344: .4byte gUnknown_20243E8 +_08065348: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065354 + adds r0, r0, r1 + movs r1, #9 + b _08065406 + .align 2, 0 +_08065354: .4byte gUnknown_20243E8 +_08065358: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065388 + adds r0, r0, r1 + movs r1, #0x37 +_08065362: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _080654CE + .align 2, 0 +_08065388: .4byte gUnknown_20243E8 +_0806538C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065398 + adds r0, r0, r1 + movs r1, #0x38 + b _080654C6 + .align 2, 0 +_08065398: .4byte gUnknown_20243E8 +_0806539C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653A8 + adds r0, r0, r1 + movs r1, #0x39 + b _08065406 + .align 2, 0 +_080653A8: .4byte gUnknown_20243E8 +_080653AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653B8 + adds r0, r0, r1 + movs r1, #0x3a + b _08065406 + .align 2, 0 +_080653B8: .4byte gUnknown_20243E8 +_080653BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653C8 + adds r0, r0, r1 + movs r1, #0x3b + b _08065406 + .align 2, 0 +_080653C8: .4byte gUnknown_20243E8 +_080653CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653D8 + adds r0, r0, r1 + movs r1, #0x3c + b _08065406 + .align 2, 0 +_080653D8: .4byte gUnknown_20243E8 +_080653DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653E8 + adds r0, r0, r1 + movs r1, #0x3d + b _08065406 + .align 2, 0 +_080653E8: .4byte gUnknown_20243E8 +_080653EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080653F8 + adds r0, r0, r1 + movs r1, #0x3e + b _08065406 + .align 2, 0 +_080653F8: .4byte gUnknown_20243E8 +_080653FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065418 + adds r0, r0, r1 + movs r1, #0x3f +_08065406: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _080654CE + .align 2, 0 +_08065418: .4byte gUnknown_20243E8 +_0806541C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065428 + adds r0, r0, r1 + movs r1, #0x16 + b _080654C6 + .align 2, 0 +_08065428: .4byte gUnknown_20243E8 +_0806542C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065438 + adds r0, r0, r1 + movs r1, #0x17 + b _080654C6 + .align 2, 0 +_08065438: .4byte gUnknown_20243E8 +_0806543C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065448 + adds r0, r0, r1 + movs r1, #0x18 + b _080654C6 + .align 2, 0 +_08065448: .4byte gUnknown_20243E8 +_0806544C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065458 + adds r0, r0, r1 + movs r1, #0x21 + b _080654C6 + .align 2, 0 +_08065458: .4byte gUnknown_20243E8 +_0806545C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065468 + adds r0, r0, r1 + movs r1, #0x2f + b _080654C6 + .align 2, 0 +_08065468: .4byte gUnknown_20243E8 +_0806546C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065478 + adds r0, r0, r1 + movs r1, #0x30 + b _080654C6 + .align 2, 0 +_08065478: .4byte gUnknown_20243E8 +_0806547C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065488 + adds r0, r0, r1 + movs r1, #0x32 + b _080654C6 + .align 2, 0 +_08065488: .4byte gUnknown_20243E8 +_0806548C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065498 + adds r0, r0, r1 + movs r1, #0x33 + b _080654C6 + .align 2, 0 +_08065498: .4byte gUnknown_20243E8 +_0806549C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080654A8 + adds r0, r0, r1 + movs r1, #0x34 + b _080654C6 + .align 2, 0 +_080654A8: .4byte gUnknown_20243E8 +_080654AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080654B8 + adds r0, r0, r1 + movs r1, #0x35 + b _080654C6 + .align 2, 0 +_080654B8: .4byte gUnknown_20243E8 +_080654BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080654E0 + adds r0, r0, r1 + movs r1, #0x36 +_080654C6: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_080654CE: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080654E0: .4byte gUnknown_20243E8 + thumb_func_end sub_08064D38 + + thumb_func_start sub_080654E4 +sub_080654E4: @ 0x080654E4 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080654E4 + + thumb_func_start sub_080654F0 +sub_080654F0: @ 0x080654F0 + push {r4, r5, lr} + ldr r1, _08065514 + ldr r0, _08065518 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08065520 + ldr r0, _0806551C + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_08065548 + b _0806553E + .align 2, 0 +_08065514: .4byte gUnknown_2022D08 +_08065518: .4byte gUnknown_2023D08 +_0806551C: .4byte gUnknown_2023D12 +_08065520: + ldrb r4, [r1] + movs r5, #0 +_08065524: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08065532 + adds r0, r5, #0 + bl sub_08065548 +_08065532: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08065524 +_0806553E: + bl sub_08064C4C + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080654F0 + + thumb_func_start sub_08065548 +sub_08065548: @ 0x08065548 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r3, _08065580 + ldrb r0, [r3] + lsls r0, r0, #9 + ldr r2, _08065584 + adds r4, r0, r2 + adds r7, r4, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r6, r3, #0 + adds r3, r2, #0 + cmp r0, #0x3b + bls _08065576 + bl _08065E54 +_08065576: + lsls r0, r0, #2 + ldr r1, _08065588 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08065580: .4byte gUnknown_2023D08 +_08065584: .4byte gUnknown_2022D0B +_08065588: .4byte _0806558C +_0806558C: @ jump table + .4byte _0806567C @ case 0 + .4byte _08065814 @ case 1 + .4byte _08065830 @ case 2 + .4byte _0806584C @ case 3 + .4byte _080658A0 @ case 4 + .4byte _080658A0 @ case 5 + .4byte _080658A0 @ case 6 + .4byte _080658A0 @ case 7 + .4byte _080658C0 @ case 8 + .4byte _08065928 @ case 9 + .4byte _08065928 @ case 10 + .4byte _08065928 @ case 11 + .4byte _08065928 @ case 12 + .4byte _08065E54 @ case 13 + .4byte _08065E54 @ case 14 + .4byte _08065E54 @ case 15 + .4byte _08065E54 @ case 16 + .4byte _08065950 @ case 17 + .4byte _0806596C @ case 18 + .4byte _08065988 @ case 19 + .4byte _080659A4 @ case 20 + .4byte _080659C0 @ case 21 + .4byte _080659DC @ case 22 + .4byte _080659F8 @ case 23 + .4byte _08065A14 @ case 24 + .4byte _08065A30 @ case 25 + .4byte _08065A4C @ case 26 + .4byte _08065A68 @ case 27 + .4byte _08065A84 @ case 28 + .4byte _08065AA0 @ case 29 + .4byte _08065ABC @ case 30 + .4byte _08065AD8 @ case 31 + .4byte _08065B4C @ case 32 + .4byte _08065B68 @ case 33 + .4byte _08065B84 @ case 34 + .4byte _08065BA0 @ case 35 + .4byte _08065BBC @ case 36 + .4byte _08065BD8 @ case 37 + .4byte _08065BF4 @ case 38 + .4byte _08065C10 @ case 39 + .4byte _08065C2C @ case 40 + .4byte _08065C48 @ case 41 + .4byte _08065C64 @ case 42 + .4byte _08065C80 @ case 43 + .4byte _08065C9C @ case 44 + .4byte _08065CB8 @ case 45 + .4byte _08065CD4 @ case 46 + .4byte _08065CF0 @ case 47 + .4byte _08065D0C @ case 48 + .4byte _08065D28 @ case 49 + .4byte _08065D44 @ case 50 + .4byte _08065D60 @ case 51 + .4byte _08065D7C @ case 52 + .4byte _08065D98 @ case 53 + .4byte _08065DB4 @ case 54 + .4byte _08065DD0 @ case 55 + .4byte _08065DEC @ case 56 + .4byte _08065E08 @ case 57 + .4byte _08065E24 @ case 58 + .4byte _08065E40 @ case 59 +_0806567C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08065810 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r7, #0 + bl sub_0806A774 + adds r2, r7, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r7 + mov sl, r0 + adds r0, r7, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r7, #2 + str r0, [sp, #4] + adds r0, r7, #4 + str r0, [sp, #8] + adds r0, r7, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r6, r7, #0 + adds r6, #0x24 + adds r4, r7, #0 + adds r4, #0xc +_080656E2: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _080656E2 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08065810 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r7, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r7, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065810: .4byte gUnknown_20243E8 +_08065814: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806582C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xb + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_0806582C: .4byte gUnknown_20243E8 +_08065830: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065848 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xc + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065848: .4byte gUnknown_20243E8 +_0806584C: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r4 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0806589C + adds r7, r1, r0 + adds r6, r4, #0 + adds r6, #8 +_08065864: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _08065864 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0806589C + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_0806589C: .4byte gUnknown_20243E8 +_080658A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080658B8 + adds r0, r0, r1 + ldr r3, _080658BC + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _0806593E + .align 2, 0 +_080658B8: .4byte gUnknown_20243E8 +_080658BC: .4byte gUnknown_2022D08 +_080658C0: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08065924 + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x11 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065924: .4byte gUnknown_20243E8 +_08065928: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065948 + adds r0, r0, r1 + ldr r3, _0806594C + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_0806593E: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065948: .4byte gUnknown_20243E8 +_0806594C: .4byte gUnknown_2022D08 +_08065950: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065968 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #1 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065968: .4byte gUnknown_20243E8 +_0806596C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065984 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x19 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065984: .4byte gUnknown_20243E8 +_08065988: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080659A0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1a + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_080659A0: .4byte gUnknown_20243E8 +_080659A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080659BC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1b + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_080659BC: .4byte gUnknown_20243E8 +_080659C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080659D8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1c + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_080659D8: .4byte gUnknown_20243E8 +_080659DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _080659F4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1d + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_080659F4: .4byte gUnknown_20243E8 +_080659F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A10 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1e + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A10: .4byte gUnknown_20243E8 +_08065A14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A2C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1f + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A2C: .4byte gUnknown_20243E8 +_08065A30: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A48 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x20 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A48: .4byte gUnknown_20243E8 +_08065A4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A64 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x22 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A64: .4byte gUnknown_20243E8 +_08065A68: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A80 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x23 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A80: .4byte gUnknown_20243E8 +_08065A84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065A9C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x24 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065A9C: .4byte gUnknown_20243E8 +_08065AA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065AB8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x25 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065AB8: .4byte gUnknown_20243E8 +_08065ABC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065AD4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x26 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065AD4: .4byte gUnknown_20243E8 +_08065AD8: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08065B48 + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x27 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _08065BE6 + .align 2, 0 +_08065B48: .4byte gUnknown_20243E8 +_08065B4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065B64 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x27 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065B64: .4byte gUnknown_20243E8 +_08065B68: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065B80 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x28 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065B80: .4byte gUnknown_20243E8 +_08065B84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065B9C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x29 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065B9C: .4byte gUnknown_20243E8 +_08065BA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065BB8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2a + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065BB8: .4byte gUnknown_20243E8 +_08065BBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065BD4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2b + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065BD4: .4byte gUnknown_20243E8 +_08065BD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065BF0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 +_08065BE6: + movs r1, #0x2c + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065BF0: .4byte gUnknown_20243E8 +_08065BF4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C0C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C0C: .4byte gUnknown_20243E8 +_08065C10: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C28 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #9 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C28: .4byte gUnknown_20243E8 +_08065C2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C44 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x37 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C44: .4byte gUnknown_20243E8 +_08065C48: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C60 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x38 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C60: .4byte gUnknown_20243E8 +_08065C64: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C7C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x39 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C7C: .4byte gUnknown_20243E8 +_08065C80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065C98 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3a + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065C98: .4byte gUnknown_20243E8 +_08065C9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065CB4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3b + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065CB4: .4byte gUnknown_20243E8 +_08065CB8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065CD0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3c + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065CD0: .4byte gUnknown_20243E8 +_08065CD4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065CEC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3d + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065CEC: .4byte gUnknown_20243E8 +_08065CF0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D08 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3e + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D08: .4byte gUnknown_20243E8 +_08065D0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D24 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3f + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D24: .4byte gUnknown_20243E8 +_08065D28: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D40 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x16 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D40: .4byte gUnknown_20243E8 +_08065D44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D5C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x17 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D5C: .4byte gUnknown_20243E8 +_08065D60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D78 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x18 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D78: .4byte gUnknown_20243E8 +_08065D7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065D94 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x21 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065D94: .4byte gUnknown_20243E8 +_08065D98: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065DB0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2f + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065DB0: .4byte gUnknown_20243E8 +_08065DB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065DCC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x30 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065DCC: .4byte gUnknown_20243E8 +_08065DD0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065DE8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x32 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065DE8: .4byte gUnknown_20243E8 +_08065DEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065E04 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x33 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065E04: .4byte gUnknown_20243E8 +_08065E08: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065E20 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x34 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065E20: .4byte gUnknown_20243E8 +_08065E24: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065E3C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x35 + bl sub_0806A774 + b _08065E54 + .align 2, 0 +_08065E3C: .4byte gUnknown_20243E8 +_08065E40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08065E64 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x36 + bl sub_0806A774 +_08065E54: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08065E64: .4byte gUnknown_20243E8 + thumb_func_end sub_08065548 + + thumb_func_start sub_08065E68 +sub_08065E68: @ 0x08065E68 + push {r4, r5, r6, r7, lr} + ldr r1, _08065ECC + ldr r7, _08065ED0 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _08065ED4 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _08065ED8 + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _08065EC0 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_08065E9E: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _08065E9E +_08065EC0: + bl sub_08064C4C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08065ECC: .4byte gUnknown_2023D12 +_08065ED0: .4byte gUnknown_2023D08 +_08065ED4: .4byte gUnknown_2022D08 +_08065ED8: .4byte gUnknown_20243E8 + thumb_func_end sub_08065E68 + + thumb_func_start sub_08065EDC +sub_08065EDC: @ 0x08065EDC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r7, _08066004 + ldr r6, _08066008 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r1, #0x64 + mov sl, r1 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + ldr r1, _0806600C + mov sb, r1 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + add r0, sb + bl sub_0805D828 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r0, _08066010 + mov r8, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _08066014 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _08066018 + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0806601C + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08066020 + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldrb r4, [r6] + lsls r0, r4, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _08066024 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066028 + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08066004: .4byte gUnknown_2023D12 +_08066008: .4byte gUnknown_2023D08 +_0806600C: .4byte gUnknown_20243E8 +_08066010: .4byte gUnknown_2024640 +_08066014: .4byte gUnknown_2023E88 +_08066018: .4byte gUnknown_20205AC +_0806601C: .4byte 0x0000FF10 +_08066020: .4byte gUnknown_2024188 +_08066024: .4byte gUnknown_3005AC0 +_08066028: .4byte sub_080646E8 + thumb_func_end sub_08065EDC + + thumb_func_start sub_0806602C +sub_0806602C: @ 0x0806602C + push {r4, lr} + ldr r1, _08066064 + ldr r4, _08066068 + ldrb r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r1 + ldr r3, _0806606C + lsls r0, r0, #9 + adds r1, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, #9 + adds r3, #2 + adds r1, r1, r3 + ldrb r1, [r1] + bl sub_08066078 + ldr r1, _08066070 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066074 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08066064: .4byte gUnknown_2023D12 +_08066068: .4byte gUnknown_2023D08 +_0806606C: .4byte gUnknown_2022D08 +_08066070: .4byte gUnknown_3005AC0 +_08066074: .4byte sub_08064B24 + thumb_func_end sub_0806602C + + thumb_func_start sub_08066078 +sub_08066078: @ 0x08066078 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _080661E0 + lsls r4, r6, #1 + adds r4, r4, r0 + ldr r0, _080661E4 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, #0x64 + mov sb, r1 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + ldr r5, _080661E8 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _080661EC + bl sub_0806F0C4 + ldr r1, _080661F0 + mov sl, r1 + add sl, r6 + mov r1, sl + strb r0, [r1] + ldrh r0, [r4] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r5 + adds r1, r6, #0 + bl sub_0805D828 + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _080661F4 + mov sb, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sb + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _080661F8 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _080661FC + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08066200 + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08066204 + str r1, [r0] + movs r0, #0 + movs r1, #0xfe + bl sub_08074DF0 + mov r1, sl + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080661E0: .4byte gUnknown_2023D12 +_080661E4: .4byte gUnknown_2022D08 +_080661E8: .4byte gUnknown_20243E8 +_080661EC: .4byte sub_0805D330 +_080661F0: .4byte gUnknown_3005ADC +_080661F4: .4byte gUnknown_2024640 +_080661F8: .4byte gUnknown_2023E88 +_080661FC: .4byte gUnknown_20205AC +_08066200: .4byte gUnknown_2024188 +_08066204: .4byte sub_08007140 + thumb_func_end sub_08066078 + + thumb_func_start sub_08066208 +sub_08066208: @ 0x08066208 + push {r4, r5, r6, lr} + ldr r1, _0806623C + ldr r6, _08066240 + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _08066250 + ldr r0, _08066244 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _08066248 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0806624C + str r1, [r0] + b _0806628C + .align 2, 0 +_0806623C: .4byte gUnknown_2022D08 +_08066240: .4byte gUnknown_2023D08 +_08066244: .4byte gUnknown_2024174 +_08066248: .4byte gUnknown_3005AC0 +_0806624C: .4byte sub_080662A0 +_08066250: + ldr r5, _08066294 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08066298 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _0806629C + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08064C4C +_0806628C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08066294: .4byte gUnknown_2023E88 +_08066298: .4byte gUnknown_20205AC +_0806629C: .4byte gUnknown_3005AD0 + thumb_func_end sub_08066208 + + thumb_func_start sub_080662A0 +sub_080662A0: @ 0x080662A0 + push {r4, r5, r6, lr} + ldr r6, _080662C0 + ldr r4, [r6] + ldr r5, _080662C4 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _080662C8 + cmp r0, #1 + beq _080662F6 + b _0806631E + .align 2, 0 +_080662C0: .4byte gUnknown_2024174 +_080662C4: .4byte gUnknown_2023D08 +_080662C8: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080662E2 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_080662E2: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0806631E +_080662F6: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0806631E + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #2 + bl sub_0805D6E0 + ldr r1, _08066324 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066328 + str r1, [r0] +_0806631E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08066324: .4byte gUnknown_3005AC0 +_08066328: .4byte sub_0806483C + thumb_func_end sub_080662A0 + + thumb_func_start sub_0806632C +sub_0806632C: @ 0x0806632C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _0806636C + ldr r0, [r4] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08066424 + ldr r5, _08066370 + ldrb r0, [r5] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r7, #0xc8 + cmp r1, #0 + beq _08066354 + movs r7, #0x98 +_08066354: + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0806638C + ldrb r0, [r5] + cmp r0, #1 + bne _08066378 + ldr r0, _08066374 + b _0806637A + .align 2, 0 +_0806636C: .4byte gUnknown_2022C90 +_08066370: .4byte gUnknown_2023D08 +_08066374: .4byte gUnknown_203886A +_08066378: + ldr r0, _08066388 +_0806637A: + ldrh r0, [r0] + bl sub_081629A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08066530 + .align 2, 0 +_08066388: .4byte gUnknown_203886C +_0806638C: + ldrb r0, [r5] + bl sub_0806D300 + ldr r6, _080663D4 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r4, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _080663BC + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #5 + bne _080663D8 +_080663BC: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _0806648E + b _080664A0 + .align 2, 0 +_080663D4: .4byte gUnknown_20226A0 +_080663D8: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #2 + beq _08066406 + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r1] + ands r4, r0 + cmp r4, #1 + bne _0806641C +_08066406: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _080664FA + b _08066508 +_0806641C: + ldrb r0, [r5] + bl sub_0806D300 + b _0806651E +_08066424: + movs r7, #0xb0 + ldr r0, _08066438 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r1, r0 + bne _0806643C + bl sub_08068688 + b _0806652C + .align 2, 0 +_08066438: .4byte gUnknown_203886A +_0806643C: + bl sub_0800A02C + ldr r6, _08066498 + movs r5, #1 + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r4, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _08066476 + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #5 + bne _080664AC +_08066476: + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + cmp r0, #0 + beq _080664A0 +_0806648E: + ldr r0, _0806649C + adds r0, #0x4f + ldrb r0, [r0] + b _08066530 + .align 2, 0 +_08066498: .4byte gUnknown_20226A0 +_0806649C: .4byte gUnknown_82EFF00 +_080664A0: + ldr r0, _080664A8 + adds r0, #0x4e + ldrb r0, [r0] + b _08066530 + .align 2, 0 +_080664A8: .4byte gUnknown_82EFF00 +_080664AC: + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #2 + beq _080664E2 + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r1] + ands r4, r0 + cmp r4, #1 + bne _08066514 +_080664E2: + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + cmp r0, #0 + beq _08066508 +_080664FA: + ldr r0, _08066504 + adds r0, #0x51 + ldrb r0, [r0] + b _08066530 + .align 2, 0 +_08066504: .4byte gUnknown_82EFF00 +_08066508: + ldr r0, _08066510 + adds r0, #0x50 + ldrb r0, [r0] + b _08066530 + .align 2, 0 +_08066510: .4byte gUnknown_82EFF00 +_08066514: + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806651E: + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + bl sub_0806EA8C +_0806652C: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_08066530: + mov r8, r0 + ldr r5, _08066614 + ldrb r1, [r5] + bl sub_0805DB54 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069C6C + ldr r6, _08066618 + mov sb, r7 + ldr r1, _0806661C + mov r2, r8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r0, #0xa0 + lsls r0, r0, #0xe + adds r4, r4, r0 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _08066620 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _08066624 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08066628 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #0x2e] + ldr r1, _0806662C + mov r2, r8 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_0800851C + ldrb r1, [r5] + adds r1, r1, r6 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r4 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r1, r8 + strh r1, [r0, #6] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _08066630 + str r1, [r0] + ldr r1, _08066634 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066638 + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08066614: .4byte gUnknown_2023D08 +_08066618: .4byte gUnknown_2024640 +_0806661C: .4byte gUnknown_82D8D70 +_08066620: .4byte gUnknown_2023E88 +_08066624: .4byte gUnknown_20205AC +_08066628: .4byte 0x0000FF10 +_0806662C: .4byte gUnknown_82D91CC +_08066630: .4byte sub_0805D3C8 +_08066634: .4byte gUnknown_3005AC0 +_08066638: .4byte sub_08063FE4 + thumb_func_end sub_0806632C + + thumb_func_start sub_0806663C +sub_0806663C: @ 0x0806663C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _08066650 + ldrb r0, [r0] + cmp r0, #1 + bne _08066658 + ldr r0, _08066654 + b _0806665A + .align 2, 0 +_08066650: .4byte gUnknown_2023D08 +_08066654: .4byte gUnknown_203886A +_08066658: + ldr r0, _0806674C +_0806665A: + ldrh r0, [r0] + bl sub_081629A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r6, _08066750 + ldrb r1, [r6] + bl sub_0805DB54 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069C6C + ldr r0, _08066754 + ldr r2, _08066758 + mov r3, r8 + lsls r1, r3, #2 + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xe + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0xb0 + movs r3, #0x1e + bl sub_08006B0C + ldr r5, _0806675C + ldrb r1, [r6] + adds r1, r1, r5 + strb r0, [r1] + ldr r4, _08066760 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x60 + strh r1, [r0, #0x24] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x20] + adds r1, #0x20 + strh r1, [r0, #0x20] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08066764 + strh r1, [r0, #0x2e] + ldr r1, _08066768 + mov r2, r8 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_0800851C + ldrb r1, [r6] + adds r1, r1, r5 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r4 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r3, r8 + strh r3, [r0, #6] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0806676C + str r1, [r0] + ldr r1, _08066770 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066774 + str r1, [r0] + bl sub_08064C4C + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806674C: .4byte gUnknown_203886C +_08066750: .4byte gUnknown_2023D08 +_08066754: .4byte gUnknown_2024640 +_08066758: .4byte gUnknown_82D8D70 +_0806675C: .4byte gUnknown_2023E88 +_08066760: .4byte gUnknown_20205AC +_08066764: .4byte 0x0000FFFE +_08066768: .4byte gUnknown_82D91CC +_0806676C: .4byte sub_0805D3C8 +_08066770: .4byte gUnknown_3005AC0 +_08066774: .4byte sub_0806401C + thumb_func_end sub_0806663C + + thumb_func_start sub_08066778 +sub_08066778: @ 0x08066778 + push {r4, r5, r6, lr} + ldr r6, _08066808 + ldr r4, _0806680C + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _08066810 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08066814 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08066818 + bl sub_080A5B9C + ldr r1, _0806681C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066820 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08066808: .4byte gUnknown_2023E88 +_0806680C: .4byte gUnknown_2023D08 +_08066810: .4byte gUnknown_20205AC +_08066814: .4byte sub_080A67B4 +_08066818: .4byte sub_08007140 +_0806681C: .4byte gUnknown_3005AC0 +_08066820: .4byte sub_08064054 + thumb_func_end sub_08066778 + + thumb_func_start sub_08066824 +sub_08066824: @ 0x08066824 + push {r4, r5, r6, lr} + ldr r6, _08066870 + ldr r4, [r6] + ldr r5, _08066874 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _08066878 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08066858 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08066858: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _080668B4 + .align 2, 0 +_08066870: .4byte gUnknown_2024174 +_08066874: .4byte gUnknown_2023D08 +_08066878: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080668B4 + strb r0, [r3, #4] + movs r0, #0x10 + movs r1, #0x3f + bl sub_080A307C + ldr r2, _080668BC + ldr r1, _080668C0 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080668C4 + str r1, [r0] + ldr r1, _080668C8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080668CC + str r1, [r0] +_080668B4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080668BC: .4byte gUnknown_20205AC +_080668C0: .4byte gUnknown_2023E88 +_080668C4: .4byte sub_08039578 +_080668C8: .4byte gUnknown_3005AC0 +_080668CC: .4byte sub_080647F8 + thumb_func_end sub_08066824 + + thumb_func_start sub_080668D0 +sub_080668D0: @ 0x080668D0 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080668D0 + + thumb_func_start sub_080668DC +sub_080668DC: @ 0x080668DC + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080668DC + + thumb_func_start sub_080668E8 +sub_080668E8: @ 0x080668E8 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080668E8 + + thumb_func_start sub_080668F4 +sub_080668F4: @ 0x080668F4 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080668F4 + + thumb_func_start sub_08066900 +sub_08066900: @ 0x08066900 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _080669F0 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08066916 + b _08066A3C +_08066916: + ldr r0, _080669F4 + mov ip, r0 + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, #1 + adds r0, r1, r0 + ldrb r6, [r0] + mov r0, ip + adds r0, #2 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r6, r0 + ldr r0, _080669F8 + mov r8, r0 + mov r0, ip + adds r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, r8 + strb r0, [r1] + ldr r3, _080669FC + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #4 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #5 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r3] + ldr r3, _08066A00 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #6 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #7 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r2, r0 + mov r0, ip + adds r0, #8 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x10 + orrs r2, r0 + mov r0, ip + adds r0, #9 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x18 + orrs r2, r0 + str r2, [r3] + ldr r2, _08066A04 + ldrb r0, [r5] + lsls r0, r0, #9 + mov r1, ip + adds r1, #0xa + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r4, _08066A08 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0xc + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #0xd + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r4] + ldr r7, _08066A0C + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0x10 + adds r1, r1, r0 + str r1, [r7] + ldr r2, _08066A10 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08066A14 + bl sub_08064C4C + b _08066A3C + .align 2, 0 +_080669F0: .4byte gUnknown_2023D08 +_080669F4: .4byte gUnknown_2022D08 +_080669F8: .4byte gUnknown_20380D2 +_080669FC: .4byte gUnknown_20380A8 +_08066A00: .4byte gUnknown_20380A4 +_08066A04: .4byte gUnknown_20380BA +_08066A08: .4byte gUnknown_20380BC +_08066A0C: .4byte gUnknown_20380A0 +_08066A10: .4byte gUnknown_2024160 +_08066A14: + ldr r0, _08066A48 + ldr r0, [r0] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _08066A4C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066A50 + str r1, [r0] + ldrh r1, [r4] + ldr r2, [r7] + adds r0, r6, #0 + bl sub_0817DFA8 +_08066A3C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08066A48: .4byte gUnknown_2024174 +_08066A4C: .4byte gUnknown_3005AC0 +_08066A50: .4byte sub_08066A54 + thumb_func_end sub_08066900 + + thumb_func_start sub_08066A54 +sub_08066A54: @ 0x08066A54 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _08066AA0 + ldr r6, _08066AA4 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _08066AA8 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _08066AEC + cmp r2, #1 + bgt _08066AAC + cmp r2, #0 + beq _08066AB6 + b _08066BC8 + .align 2, 0 +_08066AA0: .4byte gUnknown_2022D08 +_08066AA4: .4byte gUnknown_2023D08 +_08066AA8: .4byte gUnknown_2024174 +_08066AAC: + cmp r2, #2 + beq _08066B16 + cmp r2, #3 + beq _08066B8C + b _08066BC8 +_08066AB6: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _08066AD8 + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08066AD8: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _08066BC8 +_08066AEC: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08066BC8 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _08066BC8 +_08066B16: + ldr r0, _08066B7C + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08066B80 + ldrb r0, [r0] + cmp r0, #0 + bne _08066BC8 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08066B64 + mov r0, r8 + cmp r0, #1 + bhi _08066B64 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_08066B64: + ldr r0, _08066B84 + ldr r2, [r0] + ldr r0, _08066B88 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _08066BC8 + .align 2, 0 +_08066B7C: .4byte gUnknown_2038098 +_08066B80: .4byte gUnknown_203809D +_08066B84: .4byte gUnknown_2024174 +_08066B88: .4byte gUnknown_2023D08 +_08066B8C: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08066BC8 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_08064C4C +_08066BC8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066A54 + + thumb_func_start sub_08066BD8 +sub_08066BD8: @ 0x08066BD8 + push {r4, r5, lr} + ldr r0, _08066C14 + movs r1, #0 + strh r1, [r0] + ldr r0, _08066C18 + strh r1, [r0] + ldr r5, _08066C1C + ldrb r4, [r5] + lsls r4, r4, #9 + ldr r0, _08066C20 + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_0814E184 + ldr r0, _08066C24 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _08066C28 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066C2C + str r1, [r0] + ldrh r0, [r4] + bl sub_0817C808 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08066C14: .4byte gUnknown_2022AC8 +_08066C18: .4byte gUnknown_2022ACA +_08066C1C: .4byte gUnknown_2023D08 +_08066C20: .4byte gUnknown_2022D0A +_08066C24: .4byte gUnknown_2022AE0 +_08066C28: .4byte gUnknown_3005AC0 +_08066C2C: .4byte sub_080648B0 + thumb_func_end sub_08066BD8 + + thumb_func_start sub_08066C30 +sub_08066C30: @ 0x08066C30 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C30 + + thumb_func_start sub_08066C3C +sub_08066C3C: @ 0x08066C3C + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C3C + + thumb_func_start sub_08066C48 +sub_08066C48: @ 0x08066C48 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C48 + + thumb_func_start sub_08066C54 +sub_08066C54: @ 0x08066C54 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C54 + + thumb_func_start sub_08066C60 +sub_08066C60: @ 0x08066C60 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C60 + + thumb_func_start sub_08066C6C +sub_08066C6C: @ 0x08066C6C + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C6C + + thumb_func_start sub_08066C78 +sub_08066C78: @ 0x08066C78 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066C78 + + thumb_func_start sub_08066C84 +sub_08066C84: @ 0x08066C84 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _08066CFC + ldr r0, _08066D00 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _08066D04 + cmp r7, r0 + beq _08066D14 + ldr r6, _08066D08 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _08066D0C + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08066D10 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _08066D3E + .align 2, 0 +_08066CFC: .4byte gUnknown_2022D08 +_08066D00: .4byte gUnknown_2023D08 +_08066D04: .4byte 0x00007FFF +_08066D08: .4byte gUnknown_2023D12 +_08066D0C: .4byte gUnknown_20243E8 +_08066D10: .4byte gUnknown_3005AD0 +_08066D14: + ldr r1, _08066D5C + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08066D60 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08066D64 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C +_08066D3E: + ldr r1, _08066D68 + ldr r0, _08066D6C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066D70 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08066D5C: .4byte gUnknown_2023D12 +_08066D60: .4byte gUnknown_20243E8 +_08066D64: .4byte gUnknown_3005AD0 +_08066D68: .4byte gUnknown_3005AC0 +_08066D6C: .4byte gUnknown_2023D08 +_08066D70: .4byte sub_080647A4 + thumb_func_end sub_08066C84 + + thumb_func_start sub_08066D74 +sub_08066D74: @ 0x08066D74 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066D74 + + thumb_func_start sub_08066D80 +sub_08066D80: @ 0x08066D80 + push {r4, lr} + ldr r4, _08066DDC + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08066DD4 + ldr r0, _08066DE0 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08066DE4 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08066DE8 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _08066DEC + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08066DF0 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066DF4 + str r1, [r0] +_08066DD4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08066DDC: .4byte gUnknown_2023D08 +_08066DE0: .4byte gUnknown_3005AD0 +_08066DE4: .4byte gUnknown_2023D12 +_08066DE8: .4byte gUnknown_20243E8 +_08066DEC: .4byte gUnknown_2024174 +_08066DF0: .4byte gUnknown_3005AC0 +_08066DF4: .4byte sub_08064BEC + thumb_func_end sub_08066D80 + + thumb_func_start sub_08066DF8 +sub_08066DF8: @ 0x08066DF8 + push {r4, r5, lr} + ldr r5, _08066E50 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08066E48 + ldr r4, _08066E54 + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _08066E58 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066E5C + str r1, [r0] +_08066E48: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08066E50: .4byte gUnknown_2023D08 +_08066E54: .4byte gUnknown_2022D08 +_08066E58: .4byte gUnknown_3005AC0 +_08066E5C: .4byte sub_08064BEC + thumb_func_end sub_08066DF8 + + thumb_func_start sub_08066E60 +sub_08066E60: @ 0x08066E60 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E60 + + thumb_func_start sub_08066E6C +sub_08066E6C: @ 0x08066E6C + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E6C + + thumb_func_start sub_08066E78 +sub_08066E78: @ 0x08066E78 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E78 + + thumb_func_start sub_08066E84 +sub_08066E84: @ 0x08066E84 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E84 + + thumb_func_start sub_08066E90 +sub_08066E90: @ 0x08066E90 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E90 + + thumb_func_start sub_08066E9C +sub_08066E9C: @ 0x08066E9C + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066E9C + + thumb_func_start sub_08066EA8 +sub_08066EA8: @ 0x08066EA8 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066EA8 + + thumb_func_start sub_08066EB4 +sub_08066EB4: @ 0x08066EB4 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066EB4 + + thumb_func_start sub_08066EC0 +sub_08066EC0: @ 0x08066EC0 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066EC0 + + thumb_func_start sub_08066ECC +sub_08066ECC: @ 0x08066ECC + push {lr} + ldr r2, _08066EE4 + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_08066EE4: .4byte gUnknown_20229C0 + thumb_func_end sub_08066ECC + + thumb_func_start sub_08066EE8 +sub_08066EE8: @ 0x08066EE8 + push {lr} + ldr r3, _08066F14 + ldr r1, _08066F18 + ldr r0, _08066F1C + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_08066F14: .4byte gUnknown_20229C0 +_08066F18: .4byte gUnknown_2022D08 +_08066F1C: .4byte gUnknown_2023D08 + thumb_func_end sub_08066EE8 + + thumb_func_start sub_08066F20 +sub_08066F20: @ 0x08066F20 + push {lr} + ldr r2, _08066F34 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_08066F34: .4byte gUnknown_20229C0 + thumb_func_end sub_08066F20 + + thumb_func_start sub_08066F38 +sub_08066F38: @ 0x08066F38 + push {lr} + ldr r3, _08066F5C + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_08066F5C: .4byte gUnknown_20229C0 + thumb_func_end sub_08066F38 + + thumb_func_start sub_08066F60 +sub_08066F60: @ 0x08066F60 + push {r4, lr} + ldr r3, _08066F88 + ldr r2, _08066F8C + ldr r4, _08066F90 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08066F94 + bl sub_08064C4C + b _08066FBE + .align 2, 0 +_08066F88: .4byte gUnknown_20205AC +_08066F8C: .4byte gUnknown_2023E88 +_08066F90: .4byte gUnknown_2023D08 +_08066F94: + ldr r1, _08066FC4 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _08066FC8 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08066FCC + str r1, [r0] +_08066FBE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08066FC4: .4byte gUnknown_202415D +_08066FC8: .4byte gUnknown_3005AC0 +_08066FCC: .4byte sub_080648C8 + thumb_func_end sub_08066F60 + + thumb_func_start sub_08066FD0 +sub_08066FD0: @ 0x08066FD0 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08066FD0 + + thumb_func_start sub_08066FDC +sub_08066FDC: @ 0x08066FDC + push {r4, lr} + ldr r4, _08067018 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _08066FF0 + movs r3, #0xc0 +_08066FF0: + ldr r2, _0806701C + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_08064C4C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08067018: .4byte gUnknown_2023D08 +_0806701C: .4byte gUnknown_2022D08 + thumb_func_end sub_08066FDC + + thumb_func_start sub_08067020 +sub_08067020: @ 0x08067020 + push {r4, r5, lr} + ldr r4, _08067054 + ldr r5, _08067058 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0806705C + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _08067070 + .align 2, 0 +_08067054: .4byte gUnknown_2022D08 +_08067058: .4byte gUnknown_2023D08 +_0806705C: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_08067070: + bl sub_08064C4C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067020 + + thumb_func_start sub_0806707C +sub_0806707C: @ 0x0806707C + push {lr} + ldr r1, _080670AC + ldr r0, _080670B0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080670B4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + movs r2, #5 + bl sub_080A2BAC + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_080670AC: .4byte gUnknown_2023D12 +_080670B0: .4byte gUnknown_2023D08 +_080670B4: .4byte gUnknown_20243E8 + thumb_func_end sub_0806707C + + thumb_func_start sub_080670B8 +sub_080670B8: @ 0x080670B8 + push {lr} + ldr r1, _080670E0 + ldr r0, _080670E4 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _080670E8 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_080670E0: .4byte gUnknown_2022D08 +_080670E4: .4byte gUnknown_2023D08 +_080670E8: .4byte gUnknown_20240A0 + thumb_func_end sub_080670B8 + + thumb_func_start sub_080670EC +sub_080670EC: @ 0x080670EC + push {r4, r5, r6, lr} + ldr r5, _080671CC + ldr r6, _080671D0 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080671D4 + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080671D8 + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _080671DC + bl sub_080A5B9C + ldr r0, _080671E0 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080671E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r6] + strh r0, [r1, #8] + ldr r3, _080671E8 + ldr r0, [r3] + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080671AE + ldr r0, _080671EC + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _080671F0 + str r1, [r0] +_080671AE: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _080671F4 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080671F8 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080671CC: .4byte gUnknown_2023E88 +_080671D0: .4byte gUnknown_2023D08 +_080671D4: .4byte gUnknown_20205AC +_080671D8: .4byte sub_080A67B4 +_080671DC: .4byte sub_080672E0 +_080671E0: .4byte sub_080671FC +_080671E4: .4byte gUnknown_3005B60 +_080671E8: .4byte gUnknown_2024174 +_080671EC: .4byte gUnknown_2024158 +_080671F0: .4byte sub_0807352C +_080671F4: .4byte gUnknown_3005AC0 +_080671F8: .4byte sub_08063F74 + thumb_func_end sub_080670EC + + thumb_func_start sub_080671FC +sub_080671FC: @ 0x080671FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r7, _08067254 + ldrb r0, [r7] + mov sb, r0 + ldr r1, _08067258 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08067236 + ldr r0, _0806725C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08067268 +_08067236: + ldr r0, _08067260 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _08067264 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_08066078 + b _080672A8 + .align 2, 0 +_08067254: .4byte gUnknown_2023D08 +_08067258: .4byte gUnknown_3005B60 +_0806725C: .4byte gUnknown_2022C90 +_08067260: .4byte gUnknown_2022D08 +_08067264: .4byte gUnknown_2023D12 +_08067268: + ldr r4, _080672CC + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r6, _080672D0 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08066078 + ldrb r0, [r7] + movs r5, #2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08066078 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_080672A8: + ldr r1, _080672D4 + ldr r2, _080672D8 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080672DC + str r1, [r0] + mov r0, sb + strb r0, [r2] + mov r0, r8 + bl sub_080A8964 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080672CC: .4byte gUnknown_2022D08 +_080672D0: .4byte gUnknown_2023D12 +_080672D4: .4byte gUnknown_3005AC0 +_080672D8: .4byte gUnknown_2023D08 +_080672DC: .4byte sub_08064318 + thumb_func_end sub_080671FC + + thumb_func_start sub_080672E0 +sub_080672E0: @ 0x080672E0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #6] + bl sub_0805DC00 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080672E0 + + thumb_func_start sub_080672FC +sub_080672FC: @ 0x080672FC + push {r4, r5, r6, r7, lr} + ldr r1, _08067324 + ldr r0, _08067328 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0806732C + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806732C + bl sub_08064C4C + b _080673F6 + .align 2, 0 +_08067324: .4byte gUnknown_2022D08 +_08067328: .4byte gUnknown_2023D08 +_0806732C: + ldr r4, _08067384 + ldr r0, [r4] + ldr r3, _08067388 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _0806738C + ldrb r2, [r3] + lsls r0, r2, #9 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r3, #0 + cmp r0, #0 + beq _08067398 + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r2, [r3, #1] + lsls r1, r2, #0x1b + lsrs r0, r1, #0x1c + cmp r0, #1 + bhi _08067390 + adds r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] + b _080673F6 + .align 2, 0 +_08067384: .4byte gUnknown_2024174 +_08067388: .4byte gUnknown_2023D08 +_0806738C: .4byte gUnknown_2022D08 +_08067390: + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3, #1] +_08067398: + adds r5, r7, #0 + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _080673FC + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _08067400 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r6, _08067404 + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _080673EA + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_080673EA: + ldr r0, _08067408 + ldrb r1, [r7] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0806740C + str r0, [r1] +_080673F6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080673FC: .4byte gUnknown_2022D0C +_08067400: .4byte gUnknown_2024158 +_08067404: .4byte gUnknown_2024174 +_08067408: .4byte gUnknown_3005AC0 +_0806740C: .4byte sub_08067410 + thumb_func_end sub_080672FC + + thumb_func_start sub_08067410 +sub_08067410: @ 0x08067410 + push {r4, lr} + ldr r4, _08067450 + ldr r0, [r4] + ldr r3, _08067454 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _08067448 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_08064C4C +_08067448: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08067450: .4byte gUnknown_2024174 +_08067454: .4byte gUnknown_2023D08 + thumb_func_end sub_08067410 + + thumb_func_start sub_08067458 +sub_08067458: @ 0x08067458 + push {lr} + ldr r0, _08067494 + ldr r1, [r0] + ldr r0, _08067498 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806748A + ldr r2, _0806749C + ldr r0, _080674A0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080674A4 + str r1, [r0] +_0806748A: + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_08067494: .4byte gUnknown_2024174 +_08067498: .4byte gUnknown_2023D08 +_0806749C: .4byte gUnknown_3005B60 +_080674A0: .4byte gUnknown_2024158 +_080674A4: .4byte sub_0807352C + thumb_func_end sub_08067458 + + thumb_func_start sub_080674A8 +sub_080674A8: @ 0x080674A8 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080674A8 + + thumb_func_start sub_080674B4 +sub_080674B4: @ 0x080674B4 + push {r4, lr} + ldr r4, _08067504 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080674FA + ldr r3, _08067508 + ldr r0, _0806750C + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _08067510 + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_080674FA: + bl sub_08064C4C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08067504: .4byte gUnknown_2023D08 +_08067508: .4byte gUnknown_20205AC +_0806750C: .4byte gUnknown_2023E88 +_08067510: .4byte gUnknown_2022D08 + thumb_func_end sub_080674B4 + + thumb_func_start sub_08067514 +sub_08067514: @ 0x08067514 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _0806755C + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08067576 + ldr r4, _08067560 + ldrb r2, [r5] + lsls r1, r2, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r6, [r0] + adds r0, r4, #2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r4, #3 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + str r3, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + adds r3, r6, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08067564 + bl sub_08064C4C + b _08067570 + .align 2, 0 +_0806755C: .4byte gUnknown_2023D08 +_08067560: .4byte gUnknown_2022D08 +_08067564: + ldr r0, _08067580 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08067584 + str r0, [r1] +_08067570: + adds r0, r6, #0 + bl sub_0817E1D8 +_08067576: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08067580: .4byte gUnknown_3005AC0 +_08067584: .4byte sub_08064C1C + thumb_func_end sub_08067514 + + thumb_func_start sub_08067588 +sub_08067588: @ 0x08067588 + push {lr} + ldr r0, _080675A0 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r1, _080675A4 + adds r0, r0, r1 + bl sub_08185008 + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 +_080675A0: .4byte gUnknown_2023D08 +_080675A4: .4byte gUnknown_2022D0A + thumb_func_end sub_08067588 + + thumb_func_start sub_080675A8 +sub_080675A8: @ 0x080675A8 + push {lr} + bl sub_08064C4C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080675A8 + + thumb_func_start sub_080675B4 +sub_080675B4: @ 0x080675B4 + push {r4, r5, lr} + ldr r5, _080675D8 + ldrb r0, [r5] + lsls r0, r0, #9 + ldr r4, _080675DC + adds r0, r0, r4 + bl sub_08185008 + ldrb r0, [r5] + lsls r0, r0, #9 + subs r4, #3 + adds r0, r0, r4 + ldrb r2, [r0] + cmp r2, #3 + bne _080675E4 + ldr r0, _080675E0 + strb r2, [r0] + b _080675EC + .align 2, 0 +_080675D8: .4byte gUnknown_2023D08 +_080675DC: .4byte gUnknown_2022D0C +_080675E0: .4byte gUnknown_2023FDE +_080675E4: + ldr r0, _08067638 + movs r1, #3 + eors r1, r2 + strb r1, [r0] +_080675EC: + ldr r0, _0806763C + ldr r3, [r0] + ldr r1, _08067640 + ldr r4, _08067644 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _08067648 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_08064C4C + ldr r1, _0806764C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08067650 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08067638: .4byte gUnknown_2023FDE +_0806763C: .4byte gUnknown_3005AF0 +_08067640: .4byte gUnknown_2022D08 +_08067644: .4byte gUnknown_2023D08 +_08067648: .4byte 0x00000CA9 +_0806764C: .4byte gUnknown_3005AC0 +_08067650: .4byte sub_080583C0 + thumb_func_end sub_080675B4 + + thumb_func_start sub_08067654 +sub_08067654: @ 0x08067654 + bx lr + .align 2, 0 + thumb_func_end sub_08067654 + + thumb_func_start sub_08067658 +sub_08067658: @ 0x08067658 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r3, #0 +_08067660: + adds r0, r2, r1 + strb r3, [r0] + adds r1, #1 + cmp r1, #0x4f + bls _08067660 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067658 + + thumb_func_start sub_08067670 +sub_08067670: @ 0x08067670 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_08067658 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + mov r2, sp + bl sub_0806A774 + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x40 + mov r2, sp + bl sub_0806A774 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067670 + + thumb_func_start sub_080676F0 +sub_080676F0: @ 0x080676F0 + push {r4, r5, lr} + ldr r4, _0806770C + movs r0, #0xfa + lsls r0, r0, #1 + adds r5, r4, r0 +_080676FA: + adds r0, r4, #0 + bl sub_08067670 + adds r4, #0x64 + cmp r4, r5 + ble _080676FA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0806770C: .4byte gUnknown_2024190 + thumb_func_end sub_080676F0 + + thumb_func_start sub_08067710 +sub_08067710: @ 0x08067710 + push {r4, r5, lr} + ldr r4, _0806772C + movs r0, #0xfa + lsls r0, r0, #1 + adds r5, r4, r0 +_0806771A: + adds r0, r4, #0 + bl sub_08067670 + adds r4, #0x64 + cmp r4, r5 + ble _0806771A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0806772C: .4byte gUnknown_20243E8 + thumb_func_end sub_08067710 + + thumb_func_start sub_08067730 +sub_08067730: @ 0x08067730 + push {r4, r5, r6, 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, r6, #0x10 + lsrs r6, r6, #0x10 + add r0, sp, #0x10 + strb r2, [r0] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, r8 + str r3, [sp, #0x18] + bl sub_08067670 + str r4, [sp] + str r7, [sp, #4] + str r5, [sp, #8] + 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_080677A0 + mov r0, r8 + movs r1, #0x38 + add r2, sp, #0x10 + bl sub_0806A774 + movs r0, #0xff + str r0, [sp, #0x14] + add r2, sp, #0x14 + mov r0, r8 + movs r1, #0x40 + bl sub_0806A774 + mov r0, r8 + bl sub_0806884C + add sp, #0x1c + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08067730 + + thumb_func_start sub_080677A0 +sub_080677A0: @ 0x080677A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + adds r0, r7, #0 + bl sub_08067658 + cmp r4, #0 + beq _080677DC + ldr r0, [sp, #0x44] + str r0, [sp, #0x14] + b _080677F0 +_080677DC: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x14] +_080677F0: + add r2, sp, #0x14 + adds r0, r7, #0 + movs r1, #0 + bl sub_0806A864 + add r0, sp, #0x18 + mov sb, r0 + add r5, sp, #0xc + mov r1, sl + cmp r1, #2 + bne _08067848 + ldr r2, _08067840 + mov r8, r2 + ldr r6, _08067844 +_0806780C: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x18] + adds r1, r4, #0 + mov r3, r8 + ands r1, r3 + lsrs r1, r1, #0x10 + ands r4, r6 + eors r1, r4 + ldr r2, [sp, #0x14] + adds r0, r2, #0 + ands r0, r3 + lsrs r0, r0, #0x10 + eors r1, r0 + ands r2, r6 + eors r1, r2 + cmp r1, #7 + bls _0806780C + b _0806786E + .align 2, 0 +_08067840: .4byte 0xFFFF0000 +_08067844: .4byte 0x0000FFFF +_08067848: + mov r0, sl + cmp r0, #1 + bne _08067854 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x18] + b _0806786E +_08067854: + ldr r0, _08067998 + ldr r2, [r0] + ldrb r1, [r2, #0xa] + ldrb r0, [r2, #0xb] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #0xc] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #0xd] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [sp, #0x18] +_0806786E: + adds r0, r7, #0 + movs r1, #1 + mov r2, sb + bl sub_0806A864 + adds r0, r7, #0 + bl sub_080687B8 + strh r0, [r5] + adds r0, r7, #0 + movs r1, #9 + adds r2, r5, #0 + bl sub_0806A864 + adds r0, r7, #0 + bl sub_08069D68 + mov r0, sp + ldrh r1, [r0, #0xe] + bl sub_0806B3DC + adds r0, r7, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A864 + ldr r2, _0806799C + adds r0, r7, #0 + movs r1, #3 + bl sub_0806A864 + ldr r5, _08067998 + ldr r2, [r5] + adds r0, r7, #0 + movs r1, #7 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0xb + mov r2, sp + adds r2, #0xe + bl sub_0806A864 + ldr r4, _080679A0 + mov r2, sp + ldrh r1, [r2, #0xe] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + adds r2, r1, #0 + muls r2, r0, r2 + mov r3, sp + ldrb r0, [r3, #0x10] + lsls r0, r0, #2 + ldr r1, _080679A4 + adds r0, r0, r1 + adds r2, r2, r0 + adds r0, r7, #0 + movs r1, #0x19 + bl sub_0806A864 + mov r1, sp + ldrh r0, [r1, #0xe] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r4, #0x12 + adds r2, r2, r4 + adds r0, r7, #0 + movs r1, #0x20 + bl sub_0806A864 + bl sub_080855C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + adds r0, r7, #0 + movs r1, #0x23 + mov r2, sb + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x24 + add r2, sp, #0x10 + bl sub_0806A864 + ldr r2, _080679A8 + adds r0, r7, #0 + movs r1, #0x25 + bl sub_0806A864 + movs r0, #4 + str r0, [sp, #0x18] + adds r0, r7, #0 + movs r1, #0x26 + mov r2, sb + bl sub_0806A864 + ldr r2, [r5] + adds r2, #8 + adds r0, r7, #0 + movs r1, #0x31 + bl sub_0806A864 + mov r2, sp + ldrb r0, [r2, #0x11] + cmp r0, #0x1f + bhi _080679AC + adds r0, r7, #0 + movs r1, #0x27 + adds r2, #0x11 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x28 + mov r2, sp + adds r2, #0x11 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x29 + mov r2, sp + adds r2, #0x11 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x2a + mov r2, sp + adds r2, #0x11 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x2b + mov r2, sp + adds r2, #0x11 + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x2c + mov r2, sp + adds r2, #0x11 + bl sub_0806A864 + b _08067A34 + .align 2, 0 +_08067998: .4byte gUnknown_3005AF0 +_0806799C: .4byte gUnknown_829BDA5 +_080679A0: .4byte gUnknown_82F0D54 +_080679A4: .4byte gUnknown_82F00B4 +_080679A8: .4byte gUnknown_829BDA4 +_080679AC: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + 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_0806A864 + ldr r0, [sp, #0x18] + movs r6, #0xf8 + lsls r6, r6, #2 + ands r0, r6 + lsrs r0, r0, #5 + str r0, [sp, #0x1c] + adds r0, r7, #0 + movs r1, #0x28 + adds r2, r4, #0 + bl sub_0806A864 + ldr r0, [sp, #0x18] + movs r5, #0xf8 + lsls r5, r5, #7 + ands r0, r5 + lsrs r0, r0, #0xa + str r0, [sp, #0x1c] + adds r0, r7, #0 + movs r1, #0x29 + adds r2, r4, #0 + bl sub_0806A864 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + 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_0806A864 + ldr r0, [sp, #0x18] + ands r0, r6 + lsrs r0, r0, #5 + str r0, [sp, #0x1c] + adds r0, r7, #0 + movs r1, #0x2b + adds r2, r4, #0 + bl sub_0806A864 + ldr r0, [sp, #0x18] + ands r0, r5 + lsrs r0, r0, #0xa + str r0, [sp, #0x1c] + adds r0, r7, #0 + movs r1, #0x2c + adds r2, r4, #0 + bl sub_0806A864 +_08067A34: + ldr r2, _08067A70 + mov r3, sp + ldrh r1, [r3, #0xe] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _08067A5A + ldr r0, [sp, #0x14] + movs r1, #1 + ands r0, r1 + str r0, [sp, #0x18] + adds r0, r7, #0 + movs r1, #0x2e + mov r2, sb + bl sub_0806A864 +_08067A5A: + adds r0, r7, #0 + bl sub_08068DB0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08067A70: .4byte gUnknown_82F0D54 + thumb_func_end sub_080677A0 + + thumb_func_start sub_08067A74 +sub_08067A74: @ 0x08067A74 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov sb, r0 + ldr r0, [sp, #0x2c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08067A94: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + adds r0, r4, #0 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _08067A94 + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r0, sb + mov r1, r8 + adds r2, r7, #0 + adds r3, r6, #0 + bl sub_08067730 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067A74 + + thumb_func_start sub_08067ADC +sub_08067ADC: @ 0x08067ADC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + str r0, [sp, #0x10] + ldr r4, [sp, #0x38] + ldr r5, [sp, #0x3c] + ldr r0, [sp, #0x40] + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + lsls r5, r5, #0x18 + lsrs r6, r5, #0x18 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + mov sb, r1 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #0x1b + bhi _08067B82 +_08067B1C: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r4 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r4 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r4 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r4 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _08067B1C + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r8, r0 + bne _08067B1C + mov r0, sb + subs r0, #1 + cmp r5, r0 + bne _08067B1C + b _08067BB2 +_08067B82: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + adds r0, r4, #0 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _08067B82 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r8, r0 + bne _08067B82 +_08067BB2: + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + adds r1, r7, #0 + ldr r2, [sp, #0x14] + mov r3, sl + bl sub_08067730 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067ADC + + thumb_func_start sub_08067BDC +sub_08067BDC: @ 0x08067BDC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 +_08067BEE: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + lsls r0, r0, #0x10 + orrs r5, r0 + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08069B60 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08067BEE + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, r8 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x20 + bl sub_08067730 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067BDC + + thumb_func_start sub_08067C44 +sub_08067C44: @ 0x08067C44 + push {r4, lr} + sub sp, #0x14 + adds r4, r0, #0 + str r3, [sp, #0x10] + ldr r3, [sp, #0x1c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + str r3, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r3, #0 + bl sub_08067730 + adds r0, r4, #0 + movs r1, #0x42 + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067C44 + + thumb_func_start sub_08067C84 +sub_08067C84: @ 0x08067C84 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + adds r4, r3, #0 + ldr r3, [sp, #0x1c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + str r3, [sp, #0xc] + adds r0, r5, #0 + movs r3, #0 + bl sub_08067730 + adds r0, r5, #0 + movs r1, #0x27 + adds r2, r4, #0 + bl sub_0806A774 + adds r2, r4, #1 + adds r0, r5, #0 + movs r1, #0x28 + bl sub_0806A774 + adds r2, r4, #2 + adds r0, r5, #0 + movs r1, #0x29 + bl sub_0806A774 + adds r2, r4, #3 + adds r0, r5, #0 + movs r1, #0x2a + bl sub_0806A774 + adds r2, r4, #4 + adds r0, r5, #0 + movs r1, #0x2b + bl sub_0806A774 + adds r4, #5 + adds r0, r5, #0 + movs r1, #0x2c + adds r2, r4, #0 + bl sub_0806A774 + adds r0, r5, #0 + bl sub_0806884C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067C84 + + thumb_func_start sub_08067CF8 +sub_08067CF8: @ 0x08067CF8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r7, r0, #0 + ldr r0, [sp, #0x2c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r6, #0 + str r6, [sp] + str r6, [sp, #4] + str r6, [sp, #8] + str r6, [sp, #0xc] + adds r0, r7, #0 + bl sub_08067730 + mov r4, r8 + movs r1, #1 + movs r5, #5 +_08067D2C: + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08067D36 + adds r6, #1 +_08067D36: + lsrs r4, r4, #1 + subs r5, #1 + cmp r5, #0 + bge _08067D2C + movs r0, #0xff + lsls r0, r0, #1 + adds r1, r6, #0 + bl __divsi3 + add r1, sp, #0x10 + strh r0, [r1] + movs r4, #1 + movs r5, #0 +_08067D50: + mov r0, r8 + ands r0, r4 + cmp r0, #0 + beq _08067D64 + adds r1, r5, #0 + adds r1, #0x1a + adds r0, r7, #0 + add r2, sp, #0x10 + bl sub_0806A774 +_08067D64: + lsls r0, r4, #0x19 + lsrs r4, r0, #0x18 + adds r5, #1 + cmp r5, #5 + ble _08067D50 + adds r0, r7, #0 + bl sub_0806884C + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08067CF8 + + thumb_func_start sub_08067D80 +sub_08067D80: @ 0x08067D80 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + adds r7, r0, #0 + adds r6, r1, #0 + ldrh r1, [r6] + ldrb r2, [r6, #0xc] + movs r3, #1 + str r3, [sp] + ldr r0, [r6, #0x1c] + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r6, #0x14] + str r0, [sp, #0xc] + adds r0, r7, #0 + movs r3, #0 + bl sub_08067730 + movs r5, #0 + adds r4, r6, #4 +_08067DA6: + ldrh r1, [r4] + lsls r2, r5, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + bl sub_08068D34 + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _08067DA6 + adds r2, r6, #0 + adds r2, #0xd + adds r0, r7, #0 + movs r1, #0x15 + bl sub_0806A774 + adds r2, r6, #2 + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x20 + adds r0, r7, #0 + movs r1, #2 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2b + adds r0, r7, #0 + movs r1, #0x20 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0xe + adds r0, r7, #0 + movs r1, #0x1a + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0xf + adds r0, r7, #0 + movs r1, #0x1b + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x10 + adds r0, r7, #0 + movs r1, #0x1c + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x11 + adds r0, r7, #0 + movs r1, #0x1d + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x12 + adds r0, r7, #0 + movs r1, #0x1e + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x13 + adds r0, r7, #0 + movs r1, #0x1f + bl sub_0806A774 + ldrb r0, [r6, #0x1b] + lsrs r0, r0, #7 + add r1, sp, #0x10 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2e + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x27 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrh r0, [r6, #0x18] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x28 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r6, #0x19] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x29 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldr r0, [r6, #0x18] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2a + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrh r0, [r6, #0x1a] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2b + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r6, #0x1b] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2c + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r7, #0 + bl sub_0806E3B0 + adds r0, r7, #0 + bl sub_0806884C + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067D80 + + thumb_func_start sub_08067ED0 +sub_08067ED0: @ 0x08067ED0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + adds r7, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _08067F04 + ldr r0, [r0] + ldr r1, _08067F08 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08067F0C + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + bl sub_08165A9C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _08067F14 + .align 2, 0 +_08067F04: .4byte gUnknown_3005AF0 +_08067F08: .4byte 0x00000CA9 +_08067F0C: + movs r3, #0x32 + cmp r2, #0 + bne _08067F14 + ldrb r3, [r5, #0xc] +_08067F14: + ldrh r1, [r5] + movs r2, #1 + str r2, [sp] + ldr r0, [r5, #0x1c] + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r5, #0x14] + str r0, [sp, #0xc] + adds r0, r7, #0 + adds r2, r3, #0 + movs r3, #0 + bl sub_08067730 + movs r6, #0 + movs r0, #0xd + adds r0, r0, r5 + mov r8, r0 + adds r1, r5, #2 + mov sb, r1 + movs r0, #0x20 + adds r0, r0, r5 + mov sl, r0 + adds r1, #0x29 + str r1, [sp, #0x2c] + adds r0, r5, #0 + adds r0, #0xe + str r0, [sp, #0x14] + subs r1, #0x1c + str r1, [sp, #0x18] + adds r0, #2 + str r0, [sp, #0x1c] + adds r1, #2 + str r1, [sp, #0x20] + adds r0, #2 + str r0, [sp, #0x24] + adds r1, #2 + str r1, [sp, #0x28] + adds r4, r5, #4 +_08067F60: + ldrh r1, [r4] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + bl sub_08068D34 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08067F60 + adds r0, r7, #0 + movs r1, #0x15 + mov r2, r8 + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0xc + mov r2, sb + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #2 + mov r2, sl + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x20 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1a + ldr r2, [sp, #0x14] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1b + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1c + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1d + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1e + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x1f + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #7 + add r1, sp, #0x10 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2e + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x27 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrh r0, [r5, #0x18] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x28 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r5, #0x19] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x29 + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldr r0, [r5, #0x18] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2a + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrh r0, [r5, #0x1a] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2b + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + ldrb r0, [r5, #0x1b] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x2c + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r7, #0 + bl sub_0806E3B0 + adds r0, r7, #0 + bl sub_0806884C + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08067ED0 + + thumb_func_start sub_08068080 +sub_08068080: @ 0x08068080 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + adds r7, r0, #0 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r6, _08068170 + ldrb r0, [r1] + lsls r5, r0, #0x1b + lsrs r3, r5, #0x1b + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #4 + adds r1, r1, r6 + ldrh r1, [r1, #8] + mov r8, r1 + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #4 + adds r1, r1, r6 + ldrh r4, [r1, #8] + lsrs r4, r4, #8 + adds r5, r3, #0 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #4 + adds r1, r1, r6 + ldrb r1, [r1, #8] + lsls r1, r1, #8 + lsls r5, r2, #1 + adds r5, r5, r2 + lsls r5, r5, #2 + mov r2, sb + adds r6, r2, r5 + orrs r4, r1 + ldrh r1, [r6, #4] + adds r4, r4, r1 + ldrb r1, [r2, #2] + adds r4, r4, r1 + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1e + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08165A9C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrh r1, [r6, #4] + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, r8 + str r0, [sp, #0xc] + adds r0, r7, #0 + movs r3, #0x1f + bl sub_08067730 + mov r1, sb + adds r2, r5, r1 + adds r2, #0xe + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A774 + movs r4, #0 + mov r6, sb + adds r6, #6 +_08068112: + adds r0, r6, r5 + ldrh r1, [r0] + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + bl sub_08068D34 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _08068112 + movs r1, #0x55 + add r0, sp, #0x10 + strh r1, [r0] + movs r4, #0 +_08068130: + adds r1, r4, #0 + adds r1, #0x1a + adds r0, r7, #0 + add r2, sp, #0x10 + bl sub_0806A774 + adds r4, #1 + cmp r4, #5 + ble _08068130 + mov r2, sb + ldrb r0, [r2] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #4 + ldr r0, _08068170 + adds r2, r2, r0 + adds r0, r7, #0 + movs r1, #7 + bl sub_0806A774 + adds r0, r7, #0 + bl sub_0806884C + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08068170: .4byte gUnknown_85DC21C + thumb_func_end sub_08068080 + + thumb_func_start sub_08068174 +sub_08068174: @ 0x08068174 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r7, r0, #0 + ldr r0, [sp, #0x38] + ldr r4, [sp, #0x3c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x14] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + movs r6, #0 +_080681A4: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + adds r0, r4, #0 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _080681A4 + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x40] + str r0, [sp, #0xc] + adds r0, r7, #0 + ldr r1, [sp, #0x14] + mov r2, sl + mov r3, sb + bl sub_08067730 + mov r5, r8 + movs r1, #1 + movs r4, #5 +_080681E2: + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080681EC + adds r6, #1 +_080681EC: + lsrs r5, r5, #1 + subs r4, #1 + cmp r4, #0 + bge _080681E2 + movs r0, #0xff + lsls r0, r0, #1 + adds r1, r6, #0 + bl __divsi3 + add r1, sp, #0x10 + strh r0, [r1] + movs r5, #1 + movs r4, #0 +_08068206: + mov r0, r8 + ands r0, r5 + cmp r0, #0 + beq _0806821A + adds r1, r4, #0 + adds r1, #0x1a + adds r0, r7, #0 + add r2, sp, #0x10 + bl sub_0806A774 +_0806821A: + lsls r0, r5, #0x19 + lsrs r5, r0, #0x18 + adds r4, #1 + cmp r4, #5 + ble _08068206 + adds r0, r7, #0 + bl sub_0806884C + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08068174 + + thumb_func_start sub_0806823C +sub_0806823C: @ 0x0806823C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r6, r1, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r6] + adds r0, r7, #0 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _08068266 + movs r0, #0 +_08068266: + strh r0, [r6, #2] + movs r5, #0 + movs r0, #0x2b + adds r0, r0, r6 + mov r8, r0 + movs r1, #0x20 + adds r1, r1, r6 + mov sb, r1 + adds r4, r6, #4 +_08068278: + adds r1, r5, #0 + adds r1, #0xd + adds r0, r7, #0 + movs r2, #0 + bl sub_0806A058 + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _08068278 + adds r0, r7, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0xc] + adds r0, r7, #0 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0xd] + adds r0, r7, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + str r0, [r6, #0x14] + adds r0, r7, #0 + movs r1, #0x1a + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0xe] + adds r0, r7, #0 + movs r1, #0x1b + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0xf] + adds r0, r7, #0 + movs r1, #0x1c + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0x10] + adds r0, r7, #0 + movs r1, #0x1d + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0x11] + adds r0, r7, #0 + movs r1, #0x1e + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0x12] + adds r0, r7, #0 + movs r1, #0x1f + movs r2, #0 + bl sub_0806A058 + strb r0, [r6, #0x13] + adds r0, r7, #0 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + mov r1, r8 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0x27 + movs r2, #0 + bl sub_0806A058 + movs r4, #0x1f + ands r0, r4 + ldrb r2, [r6, #0x18] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #0x18] + adds r0, r7, #0 + movs r1, #0x28 + movs r2, #0 + bl sub_0806A058 + movs r5, #0x1f + ands r0, r5 + lsls r0, r0, #5 + ldrh r2, [r6, #0x18] + ldr r1, _080683DC + ands r1, r2 + orrs r1, r0 + strh r1, [r6, #0x18] + adds r0, r7, #0 + movs r1, #0x29 + movs r2, #0 + bl sub_0806A058 + ands r0, r4 + lsls r0, r0, #2 + ldrb r2, [r6, #0x19] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #0x19] + adds r0, r7, #0 + movs r1, #0x2a + movs r2, #0 + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [r6, #0x18] + ldr r2, _080683E0 + ands r0, r2 + orrs r0, r1 + str r0, [r6, #0x18] + adds r0, r7, #0 + movs r1, #0x2b + movs r2, #0 + bl sub_0806A058 + ands r0, r5 + lsls r0, r0, #4 + ldrh r2, [r6, #0x1a] + ldr r1, _080683E4 + ands r1, r2 + orrs r1, r0 + strh r1, [r6, #0x1a] + adds r0, r7, #0 + movs r1, #0x2c + movs r2, #0 + bl sub_0806A058 + ands r0, r4 + lsls r0, r0, #1 + ldrb r2, [r6, #0x1b] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #0x1b] + adds r0, r7, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_0806A058 + lsls r0, 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_0806A058 + str r0, [r6, #0x1c] + adds r0, r7, #0 + movs r1, #2 + mov r2, sb + bl sub_0806A058 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080683DC: .4byte 0xFFFFFC1F +_080683E0: .4byte 0xFFF07FFF +_080683E4: .4byte 0xFFFFFE0F + thumb_func_end sub_0806823C + + thumb_func_start sub_080683E8 +sub_080683E8: @ 0x080683E8 + push {r4, r5, r6, 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, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + str r0, [sp, #0x10] + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + str r7, [sp, #0xc] + mov r0, r8 + bl sub_08067730 + mov r0, r8 + movs r1, #0x50 + add r2, sp, #0x10 + bl sub_0806A774 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080683E8 + + thumb_func_start sub_08068438 +sub_08068438: @ 0x08068438 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r0, #5 + bhi _0806850E + lsls r0, r0, #2 + ldr r1, _08068450 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08068450: .4byte _08068454 +_08068454: @ jump table + .4byte _0806850E @ case 0 + .4byte _0806846C @ case 1 + .4byte _08068540 @ case 2 + .4byte _08068498 @ case 3 + .4byte _08068540 @ case 4 + .4byte _080684D0 @ case 5 +_0806846C: + ldr r0, _0806848C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806850E + ldr r0, _08068490 + ldr r1, _08068494 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806850E + b _080684F6 + .align 2, 0 +_0806848C: .4byte gUnknown_2022C90 +_08068490: .4byte gUnknown_3002360 +_08068494: .4byte 0x00000439 +_08068498: + ldr r0, _080684C4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806850E + ldr r0, _080684C8 + ldr r1, _080684CC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806850E + cmp r5, #1 + beq _08068540 + cmp r5, #4 + beq _08068540 + cmp r5, #5 + beq _08068540 + b _0806850E + .align 2, 0 +_080684C4: .4byte gUnknown_2022C90 +_080684C8: .4byte gUnknown_3002360 +_080684CC: .4byte 0x00000439 +_080684D0: + ldr r0, _08068514 + ldr r2, [r0] + movs r3, #2 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08068524 + ldr r0, _08068518 + ldr r1, _0806851C + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806850E + movs r0, #0x40 + ands r2, r0 + cmp r2, #0 + beq _08068534 +_080684F6: + ldr r4, _08068520 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x18] + cmp r0, r5 + bne _08068540 +_0806850E: + movs r0, #0 + b _08068542 + .align 2, 0 +_08068514: .4byte gUnknown_2022C90 +_08068518: .4byte gUnknown_3002360 +_0806851C: .4byte 0x00000439 +_08068520: .4byte gUnknown_20226A0 +_08068524: + ldr r0, _08068548 + ldr r1, _0806854C + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806850E +_08068534: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806850E +_08068540: + movs r0, #1 +_08068542: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08068548: .4byte gUnknown_3002360 +_0806854C: .4byte 0x00000439 + thumb_func_end sub_08068438 + + thumb_func_start sub_08068550 +sub_08068550: @ 0x08068550 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, _08068578 + ldr r0, [r0] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08068574 + adds r0, r5, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + movs r1, #0xcd + lsls r1, r1, #1 + cmp r0, r1 + beq _0806857C +_08068574: + movs r0, #0 + b _080685DA + .align 2, 0 +_08068578: .4byte gUnknown_2022C90 +_0806857C: + adds r1, r6, #0 + adds r1, #0x27 + adds r0, r5, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r1, r6, #0 + adds r1, #0x1a + adds r0, r5, #0 + movs r2, #0 + bl sub_0806A058 + ldr r2, _080685E0 + lsls r1, r6, #1 + adds r1, r1, r2 + ldrh r1, [r1] + lsls r1, r1, #1 + adds r1, r1, r4 + cmp r0, #0 + bge _080685A8 + adds r0, #3 +_080685A8: + asrs r0, r0, #2 + adds r0, r1, r0 + adds r1, r5, #0 + adds r1, #0x54 + ldrb r1, [r1] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + adds r1, r4, #0 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 +_080685DA: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080685E0: .4byte gUnknown_82FA6D6 + thumb_func_end sub_08068550 + + thumb_func_start sub_080685E4 +sub_080685E4: @ 0x080685E4 + push {r4, r5, lr} + sub sp, #4 + movs r5, #0 +_080685EA: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08068684 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + movs r1, #0xcd + lsls r1, r1, #1 + cmp r0, r1 + bne _08068674 + adds r0, r4, #0 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x3b + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x3c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x3d + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x3e + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x3f + mov r2, sp + bl sub_0806A774 +_08068674: + adds r5, #1 + cmp r5, #5 + ble _080685EA + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08068684: .4byte gUnknown_2024190 + thumb_func_end sub_080685E4 + + thumb_func_start sub_08068688 +sub_08068688: @ 0x08068688 + push {lr} + ldr r0, _080686A4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _080686AC + ldr r0, _080686A8 + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 + b _080686B8 + .align 2, 0 +_080686A4: .4byte gUnknown_2022C90 +_080686A8: .4byte gUnknown_203C480 +_080686AC: + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080686B8: + ldr r3, _080686E8 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r0, r3, #4 + adds r0, r1, r0 + ldr r2, [r0] + movs r0, #7 + ands r2, r0 + adds r1, r1, r3 + ldrb r0, [r1, #0x13] + lsls r0, r0, #3 + orrs r2, r0 + ldr r0, _080686EC + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r0, [r2] + bl sub_0806EA7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080686E8: .4byte gUnknown_20226A0 +_080686EC: .4byte gUnknown_82FA6E2 + thumb_func_end sub_08068688 + + thumb_func_start sub_080686F0 +sub_080686F0: @ 0x080686F0 + push {lr} + ldr r0, _0806870C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _08068714 + ldr r0, _08068710 + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 + b _08068720 + .align 2, 0 +_0806870C: .4byte gUnknown_2022C90 +_08068710: .4byte gUnknown_203C480 +_08068714: + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08068720: + ldr r3, _0806874C + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r0, r3, #4 + adds r0, r1, r0 + ldr r2, [r0] + movs r0, #7 + ands r2, r0 + adds r1, r1, r3 + ldrb r0, [r1, #0x13] + lsls r0, r0, #3 + orrs r2, r0 + ldr r1, _08068750 + ldr r0, _08068754 + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_0806874C: .4byte gUnknown_20226A0 +_08068750: .4byte gUnknown_82EFF52 +_08068754: .4byte gUnknown_82FA6E2 + thumb_func_end sub_080686F0 + + thumb_func_start sub_08068758 +sub_08068758: @ 0x08068758 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _080687A8 + ldrh r5, [r0] + ldr r0, _080687AC + ldrh r4, [r0] + ldr r0, _080687B0 + ldrh r6, [r0] + bl sub_08067710 + ldr r7, _080687B4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r7, #0 + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #0x20 + bl sub_080683E8 + cmp r6, #0 + beq _080687A0 + add r0, sp, #0x10 + strb r6, [r0] + adds r1, r0, #0 + asrs r0, r6, #8 + strb r0, [r1, #1] + adds r0, r7, #0 + movs r1, #0xc + add r2, sp, #0x10 + bl sub_0806A774 +_080687A0: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080687A8: .4byte gUnknown_2037280 +_080687AC: .4byte gUnknown_2037282 +_080687B0: .4byte gUnknown_2037284 +_080687B4: .4byte gUnknown_20243E8 + thumb_func_end sub_08068758 + + thumb_func_start sub_080687B8 +sub_080687B8: @ 0x080687B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r6, #0 + ldr r1, [r4] + movs r2, #0 + bl sub_08069DB0 + adds r5, r0, #0 + ldr r1, [r4] + adds r0, r4, #0 + movs r2, #1 + bl sub_08069DB0 + adds r7, r0, #0 + ldr r1, [r4] + adds r0, r4, #0 + movs r2, #2 + bl sub_08069DB0 + mov r8, r0 + ldr r1, [r4] + adds r0, r4, #0 + movs r2, #3 + bl sub_08069DB0 + adds r3, r0, #0 + movs r1, #5 +_080687F2: + ldrh r0, [r5] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r5, #2 + subs r1, #1 + cmp r1, #0 + bge _080687F2 + adds r2, r7, #0 + movs r1, #5 +_08068806: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _08068806 + mov r2, r8 + movs r1, #5 +_0806881A: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _0806881A + adds r2, r3, #0 + movs r1, #5 +_0806882E: + ldrh r0, [r2] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _0806882E + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080687B8 + + thumb_func_start sub_0806884C +sub_0806884C: @ 0x0806884C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + adds r5, r0, #0 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x1c] + adds r0, r5, #0 + movs r1, #0x27 + movs r2, #0 + bl sub_0806A058 + adds r6, r0, #0 + adds r0, r5, #0 + movs r1, #0x1a + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0 + bl sub_0806A058 + mov sl, r0 + adds r0, r5, #0 + movs r1, #0x1b + movs r2, #0 + bl sub_0806A058 + mov sb, r0 + adds r0, r5, #0 + movs r1, #0x29 + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x20] + adds r0, r5, #0 + movs r1, #0x1c + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x24] + adds r0, r5, #0 + movs r1, #0x2a + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x28] + adds r0, r5, #0 + movs r1, #0x1d + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x2c] + adds r0, r5, #0 + movs r1, #0x2b + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x30] + adds r0, r5, #0 + movs r1, #0x1e + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x34] + adds r0, r5, #0 + movs r1, #0x2c + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x38] + adds r0, r5, #0 + movs r1, #0x1f + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x3c] + adds r0, r5, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r5, #0 + bl sub_08068B94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + adds r0, r5, #0 + movs r1, #0x38 + mov r2, sp + bl sub_0806A774 + ldr r0, _08068934 + cmp r7, r0 + bne _08068938 + movs r0, #1 + str r0, [sp, #4] + lsls r6, r7, #3 + b _08068966 + .align 2, 0 +_08068934: .4byte 0x0000012F +_08068938: + ldr r1, _08068B04 + lsls r2, r7, #3 + subs r0, r2, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, r0, r6 + adds r0, r4, #0 + adds r6, r2, #0 + cmp r0, #0 + bge _08068952 + adds r0, #3 +_08068952: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r4, [sp] + muls r0, r4, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, r0, r4 + adds r0, #0xa + str r0, [sp, #4] +_08068966: + ldr r1, _08068B08 + add r2, sp, #4 + ldrb r0, [r2] + mov r3, r8 + subs r0, r0, r3 + adds r1, #0x23 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806897E + movs r0, #1 + strb r0, [r1] +_0806897E: + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A774 + ldr r0, _08068B04 + subs r1, r6, r7 + lsls r1, r1, #2 + adds r6, r1, r0 + ldrb r0, [r6, #1] + lsls r0, r0, #1 + mov r2, sl + adds r1, r0, r2 + mov r0, sb + cmp r0, #0 + bge _0806899E + adds r0, #3 +_0806899E: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + str r0, [sp, #8] + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #8 + ldrh r1, [r4] + movs r2, #1 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #0x3b + adds r2, r4, #0 + bl sub_0806A774 + ldrb r0, [r6, #2] + lsls r0, r0, #1 + ldr r3, [sp, #0x20] + adds r1, r0, r3 + ldr r0, [sp, #0x24] + cmp r0, #0 + bge _080689E4 + adds r0, #3 +_080689E4: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + str r0, [sp, #0xc] + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #0xc + ldrh r1, [r4] + movs r2, #2 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + adds r0, r5, #0 + movs r1, #0x3c + adds r2, r4, #0 + bl sub_0806A774 + ldrb r0, [r6, #3] + lsls r0, r0, #1 + ldr r2, [sp, #0x28] + adds r1, r0, r2 + ldr r0, [sp, #0x2c] + cmp r0, #0 + bge _08068A2A + adds r0, #3 +_08068A2A: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + str r0, [sp, #0x10] + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #0x10 + ldrh r1, [r4] + movs r2, #3 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #0x3d + adds r2, r4, #0 + bl sub_0806A774 + ldrb r0, [r6, #4] + lsls r0, r0, #1 + ldr r3, [sp, #0x30] + adds r1, r0, r3 + ldr r0, [sp, #0x34] + cmp r0, #0 + bge _08068A70 + adds r0, #3 +_08068A70: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + str r0, [sp, #0x14] + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #0x14 + ldrh r1, [r4] + movs r2, #4 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x14] + adds r0, r5, #0 + movs r1, #0x3e + adds r2, r4, #0 + bl sub_0806A774 + ldrb r0, [r6, #5] + lsls r0, r0, #1 + ldr r2, [sp, #0x38] + adds r1, r0, r2 + ldr r0, [sp, #0x3c] + cmp r0, #0 + bge _08068AB6 + adds r0, #3 +_08068AB6: + asrs r0, r0, #2 + adds r0, r1, r0 + ldr r1, [sp] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, #5 + str r0, [sp, #0x18] + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #0x18 + ldrh r1, [r4] + movs r2, #5 + bl sub_0806D36C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] + adds r0, r5, #0 + movs r1, #0x3f + adds r2, r4, #0 + bl sub_0806A774 + ldr r0, _08068B0C + cmp r7, r0 + bne _08068B10 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _08068AFE + mov r3, r8 + cmp r3, #0 + bne _08068B34 +_08068AFE: + movs r0, #1 + b _08068B28 + .align 2, 0 +_08068B04: .4byte gUnknown_82F0D54 +_08068B08: .4byte gUnknown_2024118 +_08068B0C: .4byte 0x0000012F +_08068B10: + ldr r1, [sp, #0x1c] + cmp r1, #0 + bne _08068B20 + mov r0, r8 + cmp r0, #0 + bne _08068B34 + ldr r0, [sp, #4] + b _08068B28 +_08068B20: + ldr r0, [sp, #4] + mov r2, r8 + subs r0, r0, r2 + adds r0, r1, r0 +_08068B28: + str r0, [sp, #0x1c] + add r2, sp, #0x1c + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A774 +_08068B34: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0806884C + + thumb_func_start sub_08068B44 +sub_08068B44: @ 0x08068B44 + push {r4, lr} + sub sp, #4 + 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_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + mov r2, sp + bl sub_0806A774 + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x40 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08068B44 + + thumb_func_start sub_08068B94 +sub_08068B94: @ 0x08068B94 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A058 + adds r3, r0, #0 + movs r2, #1 + ldr r6, _08068BF8 + ldr r1, _08068BFC + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #0x13] + movs r5, #0xca + lsls r5, r5, #1 + muls r0, r5, r0 + adds r0, #4 + adds r0, r0, r6 + ldr r0, [r0] + cmp r0, r3 + bhi _08068BEA + adds r4, r1, #0 +_08068BD4: + adds r2, #1 + cmp r2, #0x64 + bgt _08068BEA + lsls r1, r2, #2 + ldrb r0, [r4, #0x13] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r6 + ldr r0, [r1] + cmp r0, r3 + bls _08068BD4 +_08068BEA: + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08068BF8: .4byte gUnknown_82F00B4 +_08068BFC: .4byte gUnknown_82F0D54 + thumb_func_end sub_08068B94 + + thumb_func_start sub_08068C00 +sub_08068C00: @ 0x08068C00 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A1B4 + adds r3, r0, #0 + movs r2, #1 + ldr r6, _08068C64 + ldr r1, _08068C68 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #0x13] + movs r5, #0xca + lsls r5, r5, #1 + muls r0, r5, r0 + adds r0, #4 + adds r0, r0, r6 + ldr r0, [r0] + cmp r0, r3 + bhi _08068C56 + adds r4, r1, #0 +_08068C40: + adds r2, #1 + cmp r2, #0x64 + bgt _08068C56 + lsls r1, r2, #2 + ldrb r0, [r4, #0x13] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r6 + ldr r0, [r1] + cmp r0, r3 + bls _08068C40 +_08068C56: + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08068C64: .4byte gUnknown_82F00B4 +_08068C68: .4byte gUnknown_82F0D54 + thumb_func_end sub_08068C00 + + thumb_func_start sub_08068C6C +sub_08068C6C: @ 0x08068C6C + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08068C80 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08068C6C + + thumb_func_start sub_08068C80 +sub_08068C80: @ 0x08068C80 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + mov r0, sp + strh r1, [r0] + movs r5, #0 + mov r6, sp +_08068C8E: + adds r4, r5, #0 + adds r4, #0xd + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _08068CCC + adds r0, r7, #0 + adds r1, r4, #0 + mov r2, sp + bl sub_0806A864 + adds r1, r5, #0 + adds r1, #0x11 + ldrh r0, [r6] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08068CC8 + adds r2, r2, r0 + adds r0, r7, #0 + bl sub_0806A864 + ldrh r0, [r6] + b _08068CE4 + .align 2, 0 +_08068CC8: .4byte gUnknown_82ED224 +_08068CCC: + ldrh r1, [r6] + cmp r0, r1 + bne _08068CDC + ldr r0, _08068CD8 + b _08068CE4 + .align 2, 0 +_08068CD8: .4byte 0x0000FFFE +_08068CDC: + adds r5, #1 + cmp r5, #3 + ble _08068C8E + ldr r0, _08068CEC +_08068CE4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08068CEC: .4byte 0x0000FFFF + thumb_func_end sub_08068C80 + + thumb_func_start sub_08068CF0 +sub_08068CF0: @ 0x08068CF0 + push {r4, r5, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + movs r3, #0 + adds r5, r0, #0 + adds r5, #0x24 + ldr r2, _08068D1C + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r2, r1, r2 + adds r1, r0, #0 + adds r1, #0xc +_08068D0A: + ldrh r0, [r1] + cmp r0, #0 + bne _08068D20 + strh r4, [r1] + adds r1, r5, r3 + ldrb r0, [r2, #4] + strb r0, [r1] + adds r0, r4, #0 + b _08068D2A + .align 2, 0 +_08068D1C: .4byte gUnknown_82ED220 +_08068D20: + adds r1, #2 + adds r3, #1 + cmp r3, #3 + ble _08068D0A + ldr r0, _08068D30 +_08068D2A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08068D30: .4byte 0x0000FFFF + thumb_func_end sub_08068CF0 + + thumb_func_start sub_08068D34 +sub_08068D34: @ 0x08068D34 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + adds r4, r2, #0 + mov r0, sp + strh r1, [r0] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r1, r4, #0 + adds r1, #0xd + adds r0, r5, #0 + mov r2, sp + bl sub_0806A774 + adds r4, #0x11 + mov r0, sp + ldrh r0, [r0] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08068D70 + adds r2, r2, r0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806A774 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08068D70: .4byte gUnknown_82ED224 + thumb_func_end sub_08068D34 + + thumb_func_start sub_08068D74 +sub_08068D74: @ 0x08068D74 + push {r4, lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r2, #1 + adds r3, r0, #0 + adds r3, #0xc + adds r3, r3, r4 + strh r1, [r3] + adds r0, #0x24 + adds r0, r0, r2 + ldr r3, _08068DA0 + lsls r2, r1, #1 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r1, [r2, #4] + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08068DA0: .4byte gUnknown_82ED220 + thumb_func_end sub_08068D74 + + thumb_func_start sub_08068DA4 +sub_08068DA4: @ 0x08068DA4 + push {lr} + bl sub_08068DB0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08068DA4 + + thumb_func_start sub_08068DB0 +sub_08068DB0: @ 0x08068DB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _08068E4C + lsls r6, r4, #2 + adds r0, r6, r0 + ldr r0, [r0] + ldrh r1, [r0] + ldr r2, _08068E50 + lsrs r0, r2, #0x10 + cmp r1, r0 + beq _08068E3C + mov sb, r2 + movs r3, #0 +_08068DEE: + ldr r0, _08068E4C + adds r7, r6, r0 + ldr r0, [r7] + adds r0, r3, r0 + ldrh r2, [r0] + movs r1, #0xfe + lsls r1, r1, #8 + adds r0, r1, #0 + ands r0, r2 + mov r4, sl + lsls r1, r4, #9 + cmp r0, r1 + bgt _08068E3C + ldr r1, _08068E54 + adds r0, r1, #0 + adds r4, r0, #0 + ands r4, r2 + mov r0, r8 + adds r1, r4, #0 + str r3, [sp] + bl sub_08068C80 + lsls r0, r0, #0x10 + mov r1, sb + lsrs r5, r1, #0x10 + ldr r3, [sp] + cmp r0, sb + bne _08068E30 + mov r0, r8 + adds r1, r4, #0 + bl sub_08069010 + ldr r3, [sp] +_08068E30: + adds r3, #2 + ldr r0, [r7] + adds r0, r3, r0 + ldrh r0, [r0] + cmp r0, r5 + bne _08068DEE +_08068E3C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08068E4C: .4byte gUnknown_82F9D04 +_08068E50: .4byte 0xFFFF0000 +_08068E54: .4byte 0x000001FF + thumb_func_end sub_08068DB0 + + thumb_func_start sub_08068E58 +sub_08068E58: @ 0x08068E58 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + str r0, [sp] + mov r0, r8 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + mov r0, r8 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r4, #0 + beq _08068EF0 + ldr r4, _08068EDC + mov r1, sp + ldrb r1, [r1] + strb r1, [r4] + ldr r2, _08068EE0 + mov r5, sb + lsls r3, r5, #2 + adds r5, r3, r2 + ldr r0, [r5] + ldrh r1, [r0] + movs r7, #0xfe + lsls r7, r7, #8 + adds r0, r7, #0 + ands r0, r1 + adds r6, r4, #0 + mov ip, r2 + mov r1, sl + lsls r4, r1, #9 + cmp r0, r4 + beq _08068F18 + adds r2, r6, #0 + ldr r0, _08068EE4 + mov ip, r0 + adds r6, r7, #0 + adds r3, r5, #0 +_08068EC4: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldrb r0, [r2] + ldr r1, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r1, ip + bne _08068EE8 + movs r0, #0 + b _08068F44 + .align 2, 0 +_08068EDC: .4byte gUnknown_202418C +_08068EE0: .4byte gUnknown_82F9D04 +_08068EE4: .4byte 0x0000FFFF +_08068EE8: + adds r0, r6, #0 + ands r0, r1 + cmp r0, r4 + bne _08068EC4 +_08068EF0: + ldr r3, _08068F54 + mov r1, sb + lsls r4, r1, #2 + adds r1, r4, r3 + ldr r2, _08068F58 + ldrb r0, [r2] + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xfe + lsls r0, r0, #8 + ands r0, r1 + mov r5, sl + lsls r1, r5, #9 + adds r6, r2, #0 + mov ip, r3 + adds r3, r4, #0 + cmp r0, r1 + bne _08068F42 +_08068F18: + ldr r2, _08068F5C + mov r0, ip + adds r1, r3, r0 + ldrb r0, [r6] + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _08068F60 + ands r0, r1 + strh r0, [r2] + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + ldrh r1, [r2] + mov r0, r8 + bl sub_08068C6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] +_08068F42: + ldr r0, [sp] +_08068F44: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08068F54: .4byte gUnknown_82F9D04 +_08068F58: .4byte gUnknown_202418C +_08068F5C: .4byte gUnknown_2024186 +_08068F60: .4byte 0x000001FF + thumb_func_end sub_08068E58 + + thumb_func_start sub_08068F64 +sub_08068F64: @ 0x08068F64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + movs r4, #0 + add r7, sp, #8 + add r0, sp, #0xc + mov sb, r0 + mov r5, sp +_08068F80: + adds r1, r4, #0 + adds r1, #0xe + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A058 + strh r0, [r5] + adds r1, r4, #0 + adds r1, #0x12 + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A058 + adds r1, r7, r4 + strb r0, [r1] + adds r5, #2 + adds r4, #1 + cmp r4, #2 + ble _08068F80 + adds r0, r6, #0 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + mov r1, sb + strb r0, [r1] + ldrb r0, [r1] + lsrs r0, r0, #2 + strb r0, [r1] + mov r0, sp + mov r2, r8 + strh r2, [r0, #6] + ldr r1, _0806900C + mov r2, r8 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #4] + strb r0, [r7, #3] + movs r4, #0 + mov r5, sp +_08068FD4: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0806A774 + adds r1, r4, #0 + adds r1, #0x11 + adds r2, r7, r4 + adds r0, r6, #0 + bl sub_0806A774 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _08068FD4 + adds r0, r6, #0 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806900C: .4byte gUnknown_82ED220 + thumb_func_end sub_08068F64 + + thumb_func_start sub_08069010 +sub_08069010: @ 0x08069010 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + movs r4, #0 + add r7, sp, #8 + add r0, sp, #0xc + mov sb, r0 + mov r5, sp +_0806902C: + adds r1, r4, #0 + adds r1, #0xe + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A1B4 + strh r0, [r5] + adds r1, r4, #0 + adds r1, #0x12 + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A1B4 + adds r1, r7, r4 + strb r0, [r1] + adds r5, #2 + adds r4, #1 + cmp r4, #2 + ble _0806902C + adds r0, r6, #0 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A1B4 + mov r1, sb + strb r0, [r1] + ldrb r0, [r1] + lsrs r0, r0, #2 + strb r0, [r1] + mov r0, sp + mov r2, r8 + strh r2, [r0, #6] + ldr r1, _080690B8 + mov r2, r8 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #4] + strb r0, [r7, #3] + movs r4, #0 + mov r5, sp +_08069080: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0806A864 + adds r1, r4, #0 + adds r1, #0x11 + adds r2, r7, r4 + adds r0, r6, #0 + bl sub_0806A864 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _08069080 + adds r0, r6, #0 + movs r1, #0x15 + mov r2, sb + bl sub_0806A864 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080690B8: .4byte gUnknown_82ED220 + thumb_func_end sub_08069010 + + thumb_func_start sub_080690BC +sub_080690BC: @ 0x080690BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + adds r6, r0, #0 + str r1, [sp, #4] + str r2, [sp, #8] + ldr r0, [sp, #0x50] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x58] + ldr r4, [sp, #0x5c] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #0xc] + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x14] + movs r5, #0 + cmp r3, #0 + bne _08069114 + ldr r2, _0806910C + ldr r1, _08069110 + ldr r3, [sp, #8] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + strh r0, [r2] + b _08069118 + .align 2, 0 +_0806910C: .4byte gUnknown_2024184 +_08069110: .4byte gUnknown_82ED220 +_08069114: + ldr r0, _08069130 + strh r3, [r0] +_08069118: + cmp r7, #0 + bne _08069138 + ldr r1, _08069134 + ldr r7, [sp, #8] + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + mov sl, r0 + b _08069142 + .align 2, 0 +_08069130: .4byte gUnknown_2024184 +_08069134: .4byte gUnknown_82ED220 +_08069138: + movs r0, #0x3f + mov sl, r0 + mov r1, sl + ands r1, r7 + mov sl, r1 +_08069142: + ldrh r7, [r6, #2] + ldr r2, [sp, #4] + ldrh r2, [r2, #4] + str r2, [sp, #0x18] + ldrh r3, [r6, #8] + mov r8, r3 + ldr r0, [sp, #4] + ldrh r0, [r0, #0xa] + str r0, [sp, #0x1c] + ldrh r0, [r6, #0x2e] + cmp r0, #0xaf + bne _08069174 + ldr r1, _08069170 + ldr r2, [sp, #0x10] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r3, [r0, #7] + mov sb, r3 + ldrb r0, [r0, #0x1a] + b _0806918A + .align 2, 0 +_08069170: .4byte gUnknown_20240A8 +_08069174: + ldrh r0, [r6, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrh r0, [r6, #0x2e] + bl sub_080D6D1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806918A: + str r0, [sp, #0x24] + ldr r1, [sp, #4] + ldrh r0, [r1, #0x2e] + cmp r0, #0xaf + bne _080691BE + ldr r1, _080691A8 + ldr r2, [sp, #0x14] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #7] + str r0, [sp, #0x20] + b _080691D4 + .align 2, 0 +_080691A8: .4byte gUnknown_20240A8 +_080691AC: + ldr r0, [sp, #0x24] + adds r0, #0x64 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + b _080692BC +_080691BE: + ldr r3, [sp, #4] + ldrh r0, [r3, #0x2e] + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] + ldr r1, [sp, #4] + ldrh r0, [r1, #0x2e] + bl sub_080D6D1C +_080691D4: + adds r0, r6, #0 + adds r0, #0x20 + ldrb r1, [r0] + str r0, [sp, #0x28] + cmp r1, #0x25 + beq _080691E4 + cmp r1, #0x4a + bne _080691E8 +_080691E4: + lsls r0, r7, #0x11 + lsrs r7, r0, #0x10 +_080691E8: + ldr r0, _080692A4 + ldr r1, [sp, #0x10] + bl sub_08069A18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069204 + movs r0, #0x6e + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_08069204: + ldr r0, _080692A8 + ldr r1, [sp, #0x14] + bl sub_08069A18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069224 + movs r0, #0x6e + ldr r2, [sp, #0x18] + muls r0, r2, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] +_08069224: + ldr r4, _080692AC + adds r0, r4, #0 + ldr r1, [sp, #0x10] + bl sub_08069A18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069248 + movs r0, #0x6e + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_08069248: + adds r0, r4, #0 + ldr r1, [sp, #0x14] + bl sub_08069A18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069268 + movs r0, #0x6e + ldr r1, [sp, #0x1c] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x1c] +_08069268: + movs r2, #0 + ldr r4, _080692B0 + ldr r3, [sp, #4] + adds r3, #0x20 + str r3, [sp, #0x2c] + adds r3, r4, #0 +_08069274: + lsls r1, r2, #1 + ldrb r0, [r3] + cmp sb, r0 + bne _080692B4 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp sl, r0 + bne _080692B4 + mov r1, sl + cmp r1, #8 + bls _080691AC + ldr r0, [sp, #0x24] + adds r0, #0x64 + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + b _080692BC + .align 2, 0 +_080692A4: .4byte 0x00000867 +_080692A8: .4byte 0x0000086B +_080692AC: .4byte 0x0000086D +_080692B0: .4byte gUnknown_82FA702 +_080692B4: + adds r3, #2 + adds r2, #1 + cmp r2, #0x10 + bls _08069274 +_080692BC: + mov r3, sb + cmp r3, #0x1d + bne _080692D0 + movs r0, #0x96 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_080692D0: + mov r0, sb + cmp r0, #0x22 + bne _08069306 + ldr r0, _080695B8 + ldr r0, [r0] + ldr r1, _080695BC + ands r0, r1 + cmp r0, #0 + bne _08069306 + ldr r1, _080695C0 + adds r0, r1, #0 + ldrh r2, [r6] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08069306 + movs r0, #0x96 + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_08069306: + ldr r0, [sp, #0x20] + cmp r0, #0x22 + bne _0806933C + ldr r0, _080695B8 + ldr r0, [r0] + ldr r1, _080695BC + ands r0, r1 + cmp r0, #0 + bne _0806933C + ldr r1, _080695C0 + adds r0, r1, #0 + ldr r2, [sp, #4] + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _0806933C + movs r0, #0x96 + ldr r3, [sp, #0x1c] + muls r0, r3, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x1c] +_0806933C: + mov r0, sb + cmp r0, #0x23 + bne _08069352 + ldrh r1, [r6] + ldr r0, _080695C4 + cmp r1, r0 + bne _08069352 + mov r1, r8 + lsls r0, r1, #0x11 + lsrs r0, r0, #0x10 + mov r8, r0 +_08069352: + ldr r2, [sp, #0x20] + cmp r2, #0x24 + bne _0806936A + ldr r3, [sp, #4] + ldrh r1, [r3] + ldr r0, _080695C4 + cmp r1, r0 + bne _0806936A + ldr r1, [sp, #0x1c] + lsls r0, r1, #0x11 + lsrs r0, r0, #0x10 + str r0, [sp, #0x1c] +_0806936A: + mov r2, sb + cmp r2, #0x2d + bne _0806937E + ldrh r0, [r6] + cmp r0, #0x19 + bne _0806937E + mov r3, r8 + lsls r0, r3, #0x11 + lsrs r0, r0, #0x10 + mov r8, r0 +_0806937E: + ldr r0, [sp, #0x20] + cmp r0, #0x40 + bne _08069394 + ldr r1, [sp, #4] + ldrh r0, [r1] + cmp r0, #0x84 + bne _08069394 + ldr r2, [sp, #0x18] + lsls r0, r2, #0x11 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] +_08069394: + mov r3, sb + cmp r3, #0x41 + bne _080693AA + ldrh r0, [r6] + subs r0, #0x68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080693AA + lsls r0, r7, #0x11 + lsrs r7, r0, #0x10 +_080693AA: + ldr r1, [sp, #0x2c] + ldrb r0, [r1] + cmp r0, #0x2f + bne _080693C2 + mov r2, sl + cmp r2, #0xa + beq _080693BC + cmp r2, #0xf + bne _080693C2 +_080693BC: + mov r3, r8 + lsrs r3, r3, #1 + mov r8, r3 +_080693C2: + ldr r0, [sp, #0x28] + ldrb r4, [r0] + cmp r4, #0x37 + bne _080693D8 + movs r0, #0x96 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_080693D8: + cmp r4, #0x39 + bne _08069406 + movs r0, #0 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0x3a + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069406 + movs r0, #0x96 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_08069406: + ldr r2, [sp, #0x28] + ldrb r0, [r2] + cmp r0, #0x3a + bne _08069438 + movs r0, #0 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0x39 + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069438 + movs r0, #0x96 + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_08069438: + ldr r1, [sp, #0x28] + ldrb r0, [r1] + cmp r0, #0x3e + bne _08069454 + ldr r0, [r6, #0x4c] + cmp r0, #0 + beq _08069454 + movs r0, #0x96 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_08069454: + ldr r2, [sp, #0x2c] + ldrb r0, [r2] + cmp r0, #0x3f + bne _08069476 + ldr r3, [sp, #4] + ldr r0, [r3, #0x4c] + cmp r0, #0 + beq _08069476 + movs r0, #0x96 + ldr r1, [sp, #0x18] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] +_08069476: + mov r2, sl + cmp r2, #0xd + bne _0806949A + movs r0, #0 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0 + movs r3, #0xfd + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806949A + ldr r1, _080695C8 + ldrh r0, [r1] + lsrs r0, r0, #1 + strh r0, [r1] +_0806949A: + mov r3, sl + cmp r3, #0xa + bne _080694BE + movs r0, #0 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0 + movs r3, #0xfe + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080694BE + ldr r1, _080695C8 + ldrh r0, [r1] + lsrs r0, r0, #1 + strh r0, [r1] +_080694BE: + mov r0, sl + cmp r0, #0xc + bne _080694EE + ldr r1, [sp, #0x28] + ldrb r0, [r1] + cmp r0, #0x41 + bne _080694EE + ldrh r0, [r6, #0x2c] + movs r1, #3 + bl __udivsi3 + ldrh r1, [r6, #0x28] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _080694EE + ldr r4, _080695C8 + ldrh r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + strh r0, [r4] +_080694EE: + mov r2, sl + cmp r2, #0xa + bne _0806951E + ldr r3, [sp, #0x28] + ldrb r0, [r3] + cmp r0, #0x42 + bne _0806951E + ldrh r0, [r6, #0x2c] + movs r1, #3 + bl __udivsi3 + ldrh r1, [r6, #0x28] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _0806951E + ldr r4, _080695C8 + ldrh r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + strh r0, [r4] +_0806951E: + mov r0, sl + cmp r0, #0xb + bne _0806954E + ldr r1, [sp, #0x28] + ldrb r0, [r1] + cmp r0, #0x43 + bne _0806954E + ldrh r0, [r6, #0x2c] + movs r1, #3 + bl __udivsi3 + ldrh r1, [r6, #0x28] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _0806954E + ldr r4, _080695C8 + ldrh r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + strh r0, [r4] +_0806954E: + mov r2, sl + cmp r2, #6 + bne _0806957E + ldr r3, [sp, #0x28] + ldrb r0, [r3] + cmp r0, #0x44 + bne _0806957E + ldrh r0, [r6, #0x2c] + movs r1, #3 + bl __udivsi3 + ldrh r1, [r6, #0x28] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bhi _0806957E + ldr r4, _080695C8 + ldrh r1, [r4] + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + strh r0, [r4] +_0806957E: + ldr r2, _080695CC + ldr r0, _080695D0 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #7 + bne _08069598 + ldr r0, [sp, #0x18] + lsrs r0, r0, #1 + str r0, [sp, #0x18] +_08069598: + mov r1, sl + cmp r1, #8 + bls _080695A0 + b _08069702 +_080695A0: + ldr r0, _080695D4 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #2 + bne _080695E0 + movs r0, #0x19 + ldrsb r0, [r6, r0] + cmp r0, #6 + ble _080695DC + ldr r2, _080695D8 + b _080695E6 + .align 2, 0 +_080695B8: .4byte gUnknown_2022C90 +_080695BC: .4byte 0x003F0100 +_080695C0: .4byte 0xFFFFFE69 +_080695C4: .4byte 0x00000175 +_080695C8: .4byte gUnknown_2024184 +_080695CC: .4byte gUnknown_82ED220 +_080695D0: .4byte gUnknown_2023E8E +_080695D4: .4byte gUnknown_2023EB5 +_080695D8: .4byte gUnknown_82FA6B6 +_080695DC: + adds r5, r7, #0 + b _080695FE +_080695E0: + ldr r2, _08069630 + movs r0, #0x19 + ldrsb r0, [r6, r0] +_080695E6: + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + adds r5, r7, #0 + muls r5, r1, r5 + adds r2, #1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r5, #0 + bl __divsi3 + adds r5, r0, #0 +_080695FE: + ldr r0, _08069634 + ldrh r0, [r0] + muls r5, r0, r5 + adds r0, r6, #0 + adds r0, #0x2a + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #5 + bl __divsi3 + adds r0, #2 + muls r5, r0, r5 + ldrb r0, [r4] + cmp r0, #2 + bne _0806963C + ldr r2, [sp, #4] + movs r0, #0x1a + ldrsb r0, [r2, r0] + cmp r0, #5 + bgt _08069638 + ldr r2, _08069630 + ldr r3, [sp, #4] + movs r0, #0x1a + ldrsb r0, [r3, r0] + b _08069644 + .align 2, 0 +_08069630: .4byte gUnknown_82FA6B6 +_08069634: .4byte gUnknown_2024184 +_08069638: + ldr r3, [sp, #0x18] + b _0806965E +_0806963C: + ldr r2, _080696BC + ldr r1, [sp, #4] + movs r0, #0x1a + ldrsb r0, [r1, r0] +_08069644: + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r7, [sp, #0x18] + adds r3, r7, #0 + muls r3, r1, r3 + adds r2, #1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r3, #0 + bl __divsi3 + adds r3, r0, #0 +_0806965E: + 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 _08069688 + ldr r1, [sp, #0x28] + ldrb r0, [r1] + cmp r0, #0x3e + beq _08069688 + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_08069688: + movs r0, #1 + ldr r2, [sp, #0xc] + ands r0, r2 + cmp r0, #0 + beq _080696CA + ldrb r1, [r4] + cmp r1, #1 + bne _080696CA + ldr r0, _080696C0 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _080696C4 + movs r0, #2 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080696C4 + adds r0, r5, #0 + movs r1, #3 + bl __divsi3 + lsls r5, r0, #1 + b _080696CA + .align 2, 0 +_080696BC: .4byte gUnknown_82FA6B6 +_080696C0: .4byte gUnknown_2022C90 +_080696C4: + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_080696CA: + ldr r0, _08069728 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080696FC + ldr r0, _0806972C + ldr r3, [sp, #8] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #8 + bne _080696FC + movs r0, #2 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080696FC + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_080696FC: + cmp r5, #0 + bne _08069702 + movs r5, #1 +_08069702: + mov r7, sl + cmp r7, #9 + bne _0806970A + movs r5, #0 +_0806970A: + mov r0, sl + cmp r0, #9 + bhi _08069712 + b _08069914 +_08069712: + ldr r0, _08069730 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #2 + bne _0806973C + movs r0, #0x1c + ldrsb r0, [r6, r0] + cmp r0, #6 + ble _08069738 + ldr r2, _08069734 + b _08069742 + .align 2, 0 +_08069728: .4byte gUnknown_2022C90 +_0806972C: .4byte gUnknown_82ED220 +_08069730: .4byte gUnknown_2023EB5 +_08069734: .4byte gUnknown_82FA6B6 +_08069738: + mov r5, r8 + b _0806975A +_0806973C: + ldr r2, _08069788 + movs r0, #0x1c + ldrsb r0, [r6, r0] +_08069742: + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + mov r5, r8 + muls r5, r1, r5 + adds r2, #1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r5, #0 + bl __divsi3 + adds r5, r0, #0 +_0806975A: + ldr r0, _0806978C + ldrh r0, [r0] + muls r5, r0, r5 + adds r0, r6, #0 + adds r0, #0x2a + ldrb r0, [r0] + lsls r0, r0, #1 + movs r1, #5 + bl __divsi3 + adds r0, #2 + muls r5, r0, r5 + ldrb r0, [r4] + cmp r0, #2 + bne _08069794 + ldr r1, [sp, #4] + movs r0, #0x1d + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _08069790 + ldr r2, _08069788 + b _0806979C + .align 2, 0 +_08069788: .4byte gUnknown_82FA6B6 +_0806978C: .4byte gUnknown_2024184 +_08069790: + ldr r3, [sp, #0x1c] + b _080697B6 +_08069794: + ldr r2, _080697FC + ldr r7, [sp, #4] + movs r0, #0x1d + ldrsb r0, [r7, r0] +_0806979C: + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r6, [sp, #0x1c] + adds r3, r6, #0 + muls r3, r1, r3 + adds r2, #1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r3, #0 + bl __divsi3 + adds r3, r0, #0 +_080697B6: + 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, #2 + ldr r7, [sp, #0xc] + ands r0, r7 + cmp r0, #0 + beq _0806980A + ldrb r1, [r4] + cmp r1, #1 + bne _0806980A + ldr r0, _08069800 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _08069804 + movs r0, #2 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08069804 + adds r0, r5, #0 + movs r1, #3 + bl __divsi3 + lsls r5, r0, #1 + b _0806980A + .align 2, 0 +_080697FC: .4byte gUnknown_82FA6B6 +_08069800: .4byte gUnknown_2022C90 +_08069804: + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_0806980A: + ldr r0, _08069884 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0806983C + ldr r0, _08069888 + ldr r2, [sp, #8] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #8 + bne _0806983C + movs r0, #2 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0806983C + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_0806983C: + movs r0, #0 + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080698EC + str r0, [sp] + movs r0, #0xe + movs r1, #0 + movs r2, #0x4d + movs r3, #0 + bl sub_08042468 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080698EC + ldr r2, _0806988C + ldrh r1, [r2] + movs r0, #1 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _080698A4 + mov r3, sl + cmp r3, #0xa + beq _08069890 + cmp r3, #0xb + beq _08069898 + b _080698A4 + .align 2, 0 +_08069884: .4byte gUnknown_2022C90 +_08069888: .4byte gUnknown_82ED220 +_0806988C: .4byte gUnknown_2024070 +_08069890: + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 + b _080698A4 +_08069898: + lsls r0, r5, #4 + subs r0, r0, r5 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 +_080698A4: + ldrh r1, [r4] + movs r0, #0x9f + ands r0, r1 + cmp r0, #0 + beq _080698BC + ldr r0, _080698D4 + ldrh r0, [r0] + cmp r0, #0x4c + bne _080698BC + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_080698BC: + ldrh r1, [r4] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _080698EC + mov r6, sl + cmp r6, #0xa + beq _080698D8 + cmp r6, #0xb + beq _080698E6 + b _080698EC + .align 2, 0 +_080698D4: .4byte gUnknown_2023E8E +_080698D8: + lsls r0, r5, #4 + subs r0, r0, r5 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 + b _080698EC +_080698E6: + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r5, r0, #1 +_080698EC: + ldr r0, _08069928 + ldr r0, [r0] + ldr r0, [r0, #4] + ldr r7, [sp, #0x10] + lsls r1, r7, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08069914 + mov r0, sl + cmp r0, #0xa + bne _08069914 + lsls r0, r5, #4 + subs r0, r0, r5 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 +_08069914: + adds r0, r5, #2 + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08069928: .4byte gUnknown_202414C + thumb_func_end sub_080690BC + + thumb_func_start sub_0806992C +sub_0806992C: @ 0x0806992C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + movs r6, #0 + cmp r0, #1 + beq _08069980 + cmp r0, #1 + bgt _08069944 + cmp r0, #0 + beq _0806994A + b _08069A02 +_08069944: + cmp r1, #2 + beq _080699C8 + b _08069A02 +_0806994A: + movs r5, #0 + ldr r0, _08069974 + ldrb r3, [r0] + ldr r4, _08069978 + ldr r2, _0806997C +_08069954: + cmp r5, r3 + beq _08069968 + ldrb r0, [r4] + ldr r1, [r2] + ands r0, r1 + cmp r0, #0 + bne _08069968 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08069968: + adds r2, #4 + adds r5, #1 + cmp r5, #3 + ble _08069954 + b _08069A02 + .align 2, 0 +_08069974: .4byte gUnknown_2023D08 +_08069978: .4byte gUnknown_2023EB4 +_0806997C: .4byte gUnknown_82FACB4 +_08069980: + movs r5, #0 +_08069982: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _080699BC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080699B4 + ldr r0, _080699C0 + ldrb r1, [r0] + ldr r2, _080699C4 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _080699B4 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080699B4: + adds r5, #1 + cmp r5, #3 + ble _08069982 + b _08069A02 + .align 2, 0 +_080699BC: .4byte gUnknown_2023EAF +_080699C0: .4byte gUnknown_2023EB4 +_080699C4: .4byte gUnknown_82FACB4 +_080699C8: + movs r5, #0 +_080699CA: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _08069A0C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080699FC + ldr r0, _08069A10 + ldrb r1, [r0] + ldr r2, _08069A14 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _080699FC + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080699FC: + adds r5, #1 + cmp r5, #3 + ble _080699CA +_08069A02: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08069A0C: .4byte gUnknown_2023EB0 +_08069A10: .4byte gUnknown_2023EB4 +_08069A14: .4byte gUnknown_82FACB4 + thumb_func_end sub_0806992C + + thumb_func_start sub_08069A18 +sub_08069A18: @ 0x08069A18 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r4, _08069A60 + ldr r0, [r4] + ldr r1, _08069A64 + ands r0, r1 + cmp r0, #0 + bne _08069A5C + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08069A5C + ldr r0, [r4] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08069A50 + ldr r0, _08069A68 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + beq _08069A5C +_08069A50: + adds r0, r5, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08069A6C +_08069A5C: + movs r0, #0 + b _08069A6E + .align 2, 0 +_08069A60: .4byte gUnknown_2022C90 +_08069A64: .4byte 0x023F0902 +_08069A68: .4byte gUnknown_203886A +_08069A6C: + movs r0, #1 +_08069A6E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08069A18 + + thumb_func_start sub_08069A74 +sub_08069A74: @ 0x08069A74 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + movs r1, #1 + movs r6, #1 + adds r4, r6, #0 + ands r4, r0 + eors r4, r1 + adds r5, r4, #0 + ldr r0, _08069A98 + ldr r0, [r0] + ands r0, r6 + cmp r0, #0 + bne _08069A9C + adds r0, r4, #0 + b _08069AE6 + .align 2, 0 +_08069A98: .4byte gUnknown_2022C90 +_08069A9C: + movs r0, #0 + bl sub_0806992C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08069AC0 + bl sub_0806F050 + adds r1, r6, #0 + ands r1, r0 + cmp r1, #0 + bne _08069ABC + movs r0, #2 + eors r0, r4 + b _08069AE6 +_08069ABC: + adds r0, r4, #0 + b _08069AE6 +_08069AC0: + ldr r0, _08069AD8 + ldrb r1, [r0] + ldr r2, _08069ADC + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08069AE0 + adds r0, r4, #0 + b _08069AE6 + .align 2, 0 +_08069AD8: .4byte gUnknown_2023EB4 +_08069ADC: .4byte gUnknown_82FACB4 +_08069AE0: + movs r0, #2 + eors r5, r0 + adds r0, r5, #0 +_08069AE6: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08069A74 + + thumb_func_start sub_08069AF4 +sub_08069AF4: @ 0x08069AF4 + push {lr} + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08069AF4 + + thumb_func_start sub_08069B04 +sub_08069B04: @ 0x08069B04 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A1B4 + adds r2, r0, #0 + ldr r1, _08069B54 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _08069B5A + cmp r0, #0 + blt _08069B3C + cmp r0, #0xff + bgt _08069B3C + cmp r0, #0xfe + bge _08069B5A +_08069B3C: + ldr r1, _08069B54 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r0, #0xff + ands r0, r2 + cmp r1, r0 + bhi _08069B58 + movs r0, #0 + b _08069B5A + .align 2, 0 +_08069B54: .4byte gUnknown_82F0D54 +_08069B58: + movs r0, #0xfe +_08069B5A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08069B04 + + thumb_func_start sub_08069B60 +sub_08069B60: @ 0x08069B60 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _08069B9C + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _08069BA2 + cmp r0, #0 + blt _08069B84 + cmp r0, #0xff + bgt _08069B84 + cmp r0, #0xfe + bge _08069BA2 +_08069B84: + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r0, #0xff + ands r0, r3 + cmp r1, r0 + bhi _08069BA0 + movs r0, #0 + b _08069BA2 + .align 2, 0 +_08069B9C: .4byte gUnknown_82F0D54 +_08069BA0: + movs r0, #0xfe +_08069BA2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08069B60 + + thumb_func_start sub_08069BA8 +sub_08069BA8: @ 0x08069BA8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _08069BD4 + ldr r2, [r0] + cmp r2, #0 + beq _08069BDC + ldr r0, _08069BD8 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r2, r1 + adds r2, r0, #0 + adds r1, #0x14 + ldm r1!, {r3, r6, r7} + stm r2!, {r3, r6, r7} + ldm r1!, {r3, r6, r7} + stm r2!, {r3, r6, r7} + adds r3, r0, #0 + b _08069C1A + .align 2, 0 +_08069BD4: .4byte gUnknown_2024178 +_08069BD8: .4byte gUnknown_2024640 +_08069BDC: + ldr r1, _08069BEC + ldr r0, [r1] + cmp r0, #0 + beq _08069BF4 + ldr r3, _08069BF0 + ldr r2, [r0, #0xc] + b _08069C08 + .align 2, 0 +_08069BEC: .4byte gUnknown_2024658 +_08069BF0: .4byte gUnknown_2024640 +_08069BF4: + ldr r0, [r1, #4] + cmp r0, #0 + beq _08069C04 + ldr r3, _08069C00 + ldr r2, [r0, #0xc] + b _08069C08 + .align 2, 0 +_08069C00: .4byte gUnknown_2024640 +_08069C04: + ldr r3, _08069C2C + ldr r2, _08069C30 +_08069C08: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r3, #0 + adds r0, r0, r2 + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} +_08069C1A: + adds r2, r3, #0 + strh r5, [r2, #2] + cmp r4, #0 + beq _08069C26 + cmp r4, #2 + bne _08069C38 +_08069C26: + ldr r0, _08069C34 + str r0, [r2, #8] + b _08069C62 + .align 2, 0 +_08069C2C: .4byte gUnknown_2024640 +_08069C30: .4byte gUnknown_82FA724 +_08069C34: .4byte gUnknown_82D2F9C +_08069C38: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r5, r0 + bls _08069C58 + ldr r0, _08069C50 + ldr r3, _08069C54 + adds r1, r5, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2, #8] + b _08069C62 + .align 2, 0 +_08069C50: .4byte gUnknown_82DD33C +_08069C54: .4byte 0xFFFFFE0C +_08069C58: + ldr r0, _08069C68 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3, #8] +_08069C62: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08069C68: .4byte gUnknown_82DD33C + thumb_func_end sub_08069BA8 + + thumb_func_start sub_08069C6C +sub_08069C6C: @ 0x08069C6C + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r0, _08069CA4 + strh r4, [r0, #2] + adds r5, r0, #0 + cmp r3, #0 + beq _08069C84 + cmp r3, #2 + bne _08069CB0 +_08069C84: + ldr r2, _08069CA8 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r5, #0 + adds r0, r0, r2 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldr r1, _08069CAC + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + b _08069CF0 + .align 2, 0 +_08069CA4: .4byte gUnknown_2024640 +_08069CA8: .4byte gUnknown_82FA784 +_08069CAC: .4byte gUnknown_82D959C +_08069CB0: + ldr r0, _08069CD0 + ldr r1, [r0] + cmp r1, #0 + beq _08069CD4 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, 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 _08069CE8 + .align 2, 0 +_08069CD0: .4byte gUnknown_2024178 +_08069CD4: + ldr r0, _08069CF8 + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r2, r5, #0 + adds r1, r1, r0 + ldm r1!, {r0, r3, r6} + stm r2!, {r0, r3, r6} + ldm r1!, {r0, r3, r6} + stm r2!, {r0, r3, r6} +_08069CE8: + ldr r0, _08069CFC + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] +_08069CF0: + str r0, [r5, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08069CF8: .4byte gUnknown_82FA724 +_08069CFC: .4byte gUnknown_82D8BFC + thumb_func_end sub_08069C6C + + thumb_func_start sub_08069D00 +sub_08069D00: @ 0x08069D00 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _08069D2C + ldr r2, [r0] + cmp r2, #0 + beq _08069D34 + ldr r0, _08069D30 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, 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 _08069D4A + .align 2, 0 +_08069D2C: .4byte gUnknown_2024178 +_08069D30: .4byte gUnknown_2024640 +_08069D34: + ldr r3, _08069D5C + ldr r2, _08069D60 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r3, #0 + adds r0, r0, r2 + ldm r0!, {r2, r4, r6} + stm r1!, {r2, r4, r6} + ldm r0!, {r2, r4, r6} + stm r1!, {r2, r4, r6} +_08069D4A: + strh r5, [r3, #2] + ldr r0, _08069D64 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08069D5C: .4byte gUnknown_2024640 +_08069D60: .4byte gUnknown_82FA724 +_08069D64: .4byte gUnknown_82D8BFC + thumb_func_end sub_08069D00 + + thumb_func_start sub_08069D68 +sub_08069D68: @ 0x08069D68 + push {r4, lr} + adds r3, r0, #0 + movs r4, #0 + adds r2, r3, #0 + adds r2, #0x20 +_08069D72: + ldr r0, [r2] + ldr r1, [r3] + eors r0, r1 + str r0, [r2] + ldr r1, [r3, #4] + eors r0, r1 + stm r2!, {r0} + adds r4, #1 + cmp r4, #0xb + bls _08069D72 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08069D68 + + thumb_func_start sub_08069D8C +sub_08069D8C: @ 0x08069D8C + push {r4, lr} + adds r3, r0, #0 + movs r4, #0 + adds r2, r3, #0 + adds r2, #0x20 +_08069D96: + ldr r0, [r2] + ldr r1, [r3, #4] + eors r0, r1 + str r0, [r2] + ldr r1, [r3] + eors r0, r1 + stm r2!, {r0} + adds r4, #1 + cmp r4, #0xb + bls _08069D96 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08069D8C + + thumb_func_start sub_08069DB0 +sub_08069DB0: @ 0x08069DB0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r6, #0 + movs r1, #0x18 + bl __umodsi3 + cmp r0, #0x17 + bls _08069DC8 + b _0806A050 +_08069DC8: + lsls r0, r0, #2 + ldr r1, _08069DD4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08069DD4: .4byte _08069DD8 +_08069DD8: @ jump table + .4byte _08069E38 @ case 0 + .4byte _08069E5C @ case 1 + .4byte _08069E78 @ case 2 + .4byte _08069E8E @ case 3 + .4byte _08069EA4 @ case 4 + .4byte _08069EC0 @ case 5 + .4byte _08069ED6 @ case 6 + .4byte _08069EEC @ case 7 + .4byte _08069EFC @ case 8 + .4byte _08069F1A @ case 9 + .4byte _08069F32 @ case 10 + .4byte _08069F42 @ case 11 + .4byte _08069F56 @ case 12 + .4byte _08069F68 @ case 13 + .4byte _08069F7A @ case 14 + .4byte _08069F8C @ case 15 + .4byte _08069F9E @ case 16 + .4byte _08069FB0 @ case 17 + .4byte _08069FC2 @ case 18 + .4byte _08069FD8 @ case 19 + .4byte _08069FEC @ case 20 + .4byte _08069FFA @ case 21 + .4byte _0806A00C @ case 22 + .4byte _0806A020 @ case 23 +_08069E38: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069E42 + b _0806A048 +_08069E42: + cmp r4, #1 + bgt _08069E4E +_08069E46: + cmp r4, #0 + bne _08069E4C + b _0806A04E +_08069E4C: + b _0806A050 +_08069E4E: + cmp r4, #2 + bne _08069E54 + b _0806A042 +_08069E54: + cmp r4, #3 + beq _08069E5A + b _0806A050 +_08069E5A: + b _0806A03C +_08069E5C: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069E66 + b _0806A048 +_08069E66: + cmp r4, #1 + ble _08069E46 +_08069E6A: + cmp r4, #2 + bne _08069E70 + b _0806A03C +_08069E70: + cmp r4, #3 + beq _08069E76 + b _0806A050 +_08069E76: + b _0806A042 +_08069E78: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069E82 + b _0806A042 +_08069E82: + cmp r4, #1 + ble _08069E46 + cmp r4, #2 + bne _08069E8C + b _0806A048 +_08069E8C: + b _08069E54 +_08069E8E: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069E98 + b _0806A03C +_08069E98: + cmp r4, #1 + ble _08069E46 + cmp r4, #2 + bne _08069EA2 + b _0806A048 +_08069EA2: + b _08069E70 +_08069EA4: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069EAE + b _0806A042 +_08069EAE: + cmp r4, #1 + ble _08069E46 +_08069EB2: + cmp r4, #2 + bne _08069EB8 + b _0806A03C +_08069EB8: + cmp r4, #3 + beq _08069EBE + b _0806A050 +_08069EBE: + b _0806A048 +_08069EC0: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069ECA + b _0806A03C +_08069ECA: + cmp r4, #1 + ble _08069E46 + cmp r4, #2 + bne _08069ED4 + b _0806A042 +_08069ED4: + b _08069EB8 +_08069ED6: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069EE0 + b _0806A04E +_08069EE0: + cmp r4, #1 + bgt _08069E4E +_08069EE4: + cmp r4, #0 + bne _08069EEA + b _0806A048 +_08069EEA: + b _0806A050 +_08069EEC: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069EF6 + b _0806A04E +_08069EF6: + cmp r4, #1 + ble _08069EE4 + b _08069E6A +_08069EFC: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069F06 + b _0806A04E +_08069F06: + cmp r4, #1 + bgt _08069F12 +_08069F0A: + cmp r4, #0 + bne _08069F10 + b _0806A042 +_08069F10: + b _0806A050 +_08069F12: + cmp r4, #2 + bne _08069F18 + b _0806A048 +_08069F18: + b _08069E54 +_08069F1A: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069F24 + b _0806A04E +_08069F24: + cmp r4, #1 + bgt _08069F2A + b _0806A02C +_08069F2A: + cmp r4, #2 + bne _08069F30 + b _0806A048 +_08069F30: + b _08069E70 +_08069F32: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069F3C + b _0806A04E +_08069F3C: + cmp r4, #1 + ble _08069F0A + b _08069EB2 +_08069F42: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + bne _08069F4C + b _0806A04E +_08069F4C: + cmp r4, #1 + ble _0806A02C + cmp r4, #2 + beq _0806A042 + b _08069EB8 +_08069F56: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A042 + cmp r4, #1 + ble _08069EE4 + cmp r4, #2 + beq _0806A04E + b _08069E54 +_08069F68: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A03C + cmp r4, #1 + ble _08069EE4 + cmp r4, #2 + beq _0806A04E + b _08069E70 +_08069F7A: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A048 + cmp r4, #1 + ble _08069F0A + cmp r4, #2 + beq _0806A04E + b _08069E54 +_08069F8C: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A048 + cmp r4, #1 + ble _0806A02C + cmp r4, #2 + beq _0806A04E + b _08069E70 +_08069F9E: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A03C + cmp r4, #1 + ble _08069F0A + cmp r4, #2 + beq _0806A04E + b _08069EB8 +_08069FB0: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A042 + cmp r4, #1 + ble _0806A02C + cmp r4, #2 + beq _0806A04E + b _08069EB8 +_08069FC2: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A042 + cmp r4, #1 + ble _08069EE4 +_08069FCE: + cmp r4, #2 + beq _0806A03C +_08069FD2: + cmp r4, #3 + bne _0806A050 + b _0806A04E +_08069FD8: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A03C + cmp r4, #1 + bgt _08069FE6 + b _08069EE4 +_08069FE6: + cmp r4, #2 + beq _0806A042 + b _08069FD2 +_08069FEC: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A048 + cmp r4, #1 + ble _08069F0A + b _08069FCE +_08069FFA: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A048 + cmp r4, #1 + ble _0806A02C + cmp r4, #2 + beq _0806A042 + b _08069FD2 +_0806A00C: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A03C + cmp r4, #1 + bgt _0806A01A + b _08069F0A +_0806A01A: + cmp r4, #2 + beq _0806A048 + b _08069FD2 +_0806A020: + adds r0, r5, #0 + adds r0, #0x20 + cmp r4, #1 + beq _0806A042 + cmp r4, #1 + bgt _0806A032 +_0806A02C: + cmp r4, #0 + beq _0806A03C + b _0806A050 +_0806A032: + cmp r4, #2 + beq _0806A048 + cmp r4, #3 + beq _0806A04E + b _0806A050 +_0806A03C: + adds r6, r5, #0 + adds r6, #0x44 + b _0806A050 +_0806A042: + adds r6, r5, #0 + adds r6, #0x38 + b _0806A050 +_0806A048: + adds r6, r5, #0 + adds r6, #0x2c + b _0806A050 +_0806A04E: + adds r6, r0, #0 +_0806A050: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08069DB0 + + thumb_func_start sub_0806A058 +sub_0806A058: @ 0x0806A058 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r0, r3, #0 + subs r0, #0x37 + cmp r0, #0x21 + bls _0806A068 + b _0806A1A6 +_0806A068: + lsls r0, r0, #2 + ldr r1, _0806A074 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A074: .4byte _0806A078 +_0806A078: @ jump table + .4byte _0806A100 @ case 0 + .4byte _0806A104 @ case 1 + .4byte _0806A10C @ case 2 + .4byte _0806A114 @ case 3 + .4byte _0806A11C @ case 4 + .4byte _0806A12E @ case 5 + .4byte _0806A140 @ case 6 + .4byte _0806A152 @ case 7 + .4byte _0806A164 @ case 8 + .4byte _0806A19E @ case 9 + .4byte _0806A1A6 @ case 10 + .4byte _0806A1A6 @ case 11 + .4byte _0806A1A6 @ case 12 + .4byte _0806A1A6 @ case 13 + .4byte _0806A1A6 @ case 14 + .4byte _0806A1A6 @ case 15 + .4byte _0806A1A6 @ case 16 + .4byte _0806A1A6 @ case 17 + .4byte _0806A1A6 @ case 18 + .4byte _0806A1A6 @ case 19 + .4byte _0806A1A6 @ case 20 + .4byte _0806A1A6 @ case 21 + .4byte _0806A1A6 @ case 22 + .4byte _0806A1A6 @ case 23 + .4byte _0806A1A6 @ case 24 + .4byte _0806A1A6 @ case 25 + .4byte _0806A1A6 @ case 26 + .4byte _0806A1A6 @ case 27 + .4byte _0806A1A6 @ case 28 + .4byte _0806A176 @ case 29 + .4byte _0806A17E @ case 30 + .4byte _0806A186 @ case 31 + .4byte _0806A18E @ case 32 + .4byte _0806A196 @ case 33 +_0806A100: + ldr r0, [r4, #0x50] + b _0806A1AE +_0806A104: + adds r0, r4, #0 + adds r0, #0x54 + ldrb r0, [r0] + b _0806A1AE +_0806A10C: + adds r0, r4, #0 + adds r0, #0x56 + ldrh r0, [r0] + b _0806A1AE +_0806A114: + adds r0, r4, #0 + adds r0, #0x58 + ldrh r0, [r0] + b _0806A1AE +_0806A11C: + adds r0, r4, #0 + movs r1, #1 + bl sub_08068550 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806A1AE + b _0806A176 +_0806A12E: + adds r0, r4, #0 + movs r1, #2 + bl sub_08068550 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806A1AE + b _0806A17E +_0806A140: + adds r0, r4, #0 + movs r1, #3 + bl sub_08068550 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806A1AE + b _0806A186 +_0806A152: + adds r0, r4, #0 + movs r1, #4 + bl sub_08068550 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806A1AE + b _0806A18E +_0806A164: + adds r0, r4, #0 + movs r1, #5 + bl sub_08068550 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806A1AE + b _0806A196 +_0806A176: + adds r0, r4, #0 + adds r0, #0x5a + ldrh r0, [r0] + b _0806A1AE +_0806A17E: + adds r0, r4, #0 + adds r0, #0x5c + ldrh r0, [r0] + b _0806A1AE +_0806A186: + adds r0, r4, #0 + adds r0, #0x5e + ldrh r0, [r0] + b _0806A1AE +_0806A18E: + adds r0, r4, #0 + adds r0, #0x60 + ldrh r0, [r0] + b _0806A1AE +_0806A196: + adds r0, r4, #0 + adds r0, #0x62 + ldrh r0, [r0] + b _0806A1AE +_0806A19E: + adds r0, r4, #0 + adds r0, #0x55 + ldrb r0, [r0] + b _0806A1AE +_0806A1A6: + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_0806A1B4 +_0806A1AE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806A058 + + thumb_func_start sub_0806A1B4 +sub_0806A1B4: @ 0x0806A1B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r0 + str r1, [sp] + adds r7, r2, #0 + movs r4, #0 + mov r8, r4 + mov sl, r4 + movs r6, #0 + movs r5, #0 + cmp r1, #0xa + ble _0806A232 + ldr r1, [r0] + movs r2, #0 + bl sub_08069DB0 + mov r8, r0 + mov r0, sb + ldr r1, [r0] + movs r2, #1 + bl sub_08069DB0 + mov sl, r0 + mov r2, sb + ldr r1, [r2] + mov r0, sb + movs r2, #2 + bl sub_08069DB0 + adds r6, r0, #0 + mov r0, sb + ldr r1, [r0] + movs r2, #3 + bl sub_08069DB0 + adds r5, r0, #0 + mov r0, sb + bl sub_08069D8C + mov r0, sb + bl sub_080687B8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sb + ldrh r1, [r1, #0x1c] + cmp r0, r1 + beq _0806A232 + mov r2, sb + ldrb r0, [r2, #0x13] + movs r1, #1 + orrs r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0x13] + ldrb r0, [r5, #7] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #7] +_0806A232: + ldr r0, [sp] + cmp r0, #0x53 + bls _0806A23A + b _0806A754 +_0806A23A: + lsls r0, r0, #2 + ldr r1, _0806A244 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A244: .4byte _0806A248 +_0806A248: @ jump table + .4byte _0806A398 @ case 0 + .4byte _0806A39E @ case 1 + .4byte _0806A3A4 @ case 2 + .4byte _0806A3DE @ case 3 + .4byte _0806A3E4 @ case 4 + .4byte _0806A3EA @ case 5 + .4byte _0806A3F0 @ case 6 + .4byte _0806A3F6 @ case 7 + .4byte _0806A412 @ case 8 + .4byte _0806A418 @ case 9 + .4byte _0806A41E @ case 10 + .4byte _0806A424 @ case 11 + .4byte _0806A43C @ case 12 + .4byte _0806A454 @ case 13 + .4byte _0806A454 @ case 14 + .4byte _0806A454 @ case 15 + .4byte _0806A454 @ case 16 + .4byte _0806A460 @ case 17 + .4byte _0806A460 @ case 18 + .4byte _0806A460 @ case 19 + .4byte _0806A460 @ case 20 + .4byte _0806A448 @ case 21 + .4byte _0806A482 @ case 22 + .4byte _0806A486 @ case 23 + .4byte _0806A48A @ case 24 + .4byte _0806A442 @ case 25 + .4byte _0806A46A @ case 26 + .4byte _0806A46E @ case 27 + .4byte _0806A472 @ case 28 + .4byte _0806A476 @ case 29 + .4byte _0806A47A @ case 30 + .4byte _0806A47E @ case 31 + .4byte _0806A44E @ case 32 + .4byte _0806A48E @ case 33 + .4byte _0806A49A @ case 34 + .4byte _0806A49E @ case 35 + .4byte _0806A4A2 @ case 36 + .4byte _0806A4AA @ case 37 + .4byte _0806A4B2 @ case 38 + .4byte _0806A4BC @ case 39 + .4byte _0806A4C4 @ case 40 + .4byte _0806A4CC @ case 41 + .4byte _0806A4D4 @ case 42 + .4byte _0806A4DC @ case 43 + .4byte _0806A4E4 @ case 44 + .4byte _0806A4EC @ case 45 + .4byte _0806A4F0 @ case 46 + .4byte _0806A492 @ case 47 + .4byte _0806A496 @ case 48 + .4byte _0806A4B6 @ case 49 + .4byte _0806A4F6 @ case 50 + .4byte _0806A4FE @ case 51 + .4byte _0806A506 @ case 52 + .4byte _0806A50E @ case 53 + .4byte _0806A516 @ case 54 + .4byte _0806A754 @ case 55 + .4byte _0806A754 @ case 56 + .4byte _0806A754 @ case 57 + .4byte _0806A754 @ case 58 + .4byte _0806A754 @ case 59 + .4byte _0806A754 @ case 60 + .4byte _0806A754 @ case 61 + .4byte _0806A754 @ case 62 + .4byte _0806A754 @ case 63 + .4byte _0806A754 @ case 64 + .4byte _0806A57C @ case 65 + .4byte _0806A5A2 @ case 66 + .4byte _0806A51E @ case 67 + .4byte _0806A524 @ case 68 + .4byte _0806A528 @ case 69 + .4byte _0806A52C @ case 70 + .4byte _0806A530 @ case 71 + .4byte _0806A538 @ case 72 + .4byte _0806A540 @ case 73 + .4byte _0806A548 @ case 74 + .4byte _0806A550 @ case 75 + .4byte _0806A556 @ case 76 + .4byte _0806A55E @ case 77 + .4byte _0806A566 @ case 78 + .4byte _0806A56E @ case 79 + .4byte _0806A576 @ case 80 + .4byte _0806A5DC @ case 81 + .4byte _0806A638 @ case 82 + .4byte _0806A6BA @ case 83 +_0806A398: + mov r1, sb + ldr r4, [r1] + b _0806A754 +_0806A39E: + mov r2, sb + ldr r4, [r2, #4] + b _0806A754 +_0806A3A4: + mov r0, sb + ldrb r1, [r0, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806A3C8 + movs r4, #0 + ldr r2, _0806A3C4 +_0806A3B4: + adds r0, r7, r4 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #4 + bls _0806A3B4 + b _0806A40A + .align 2, 0 +_0806A3C4: .4byte gUnknown_85ABC78 +_0806A3C8: + movs r4, #0 + mov r2, sb + adds r2, #8 +_0806A3CE: + adds r0, r7, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #9 + bls _0806A3CE + b _0806A40A +_0806A3DE: + mov r1, sb + ldrb r4, [r1, #0x12] + b _0806A754 +_0806A3E4: + mov r2, sb + ldrb r0, [r2, #0x13] + b _0806A558 +_0806A3EA: + mov r7, sb + ldrb r0, [r7, #0x13] + b _0806A560 +_0806A3F0: + mov r1, sb + ldrb r0, [r1, #0x13] + b _0806A568 +_0806A3F6: + movs r4, #0 + mov r2, sb + adds r2, #0x14 +_0806A3FC: + adds r0, r7, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + bls _0806A3FC +_0806A40A: + adds r1, r7, r4 + movs r0, #0xff + strb r0, [r1] + b _0806A754 +_0806A412: + mov r2, sb + ldrb r4, [r2, #0x1b] + b _0806A754 +_0806A418: + mov r7, sb + ldrh r4, [r7, #0x1c] + b _0806A754 +_0806A41E: + mov r0, sb + ldrh r4, [r0, #0x1e] + b _0806A754 +_0806A424: + mov r2, sb + ldrb r1, [r2, #0x13] + movs r0, #1 + ands r0, r1 + movs r4, #0xce + lsls r4, r4, #1 + cmp r0, #0 + beq _0806A436 + b _0806A754 +_0806A436: + mov r7, r8 + ldrh r4, [r7] + b _0806A754 +_0806A43C: + mov r0, r8 + ldrh r4, [r0, #2] + b _0806A754 +_0806A442: + mov r1, r8 + ldr r4, [r1, #4] + b _0806A754 +_0806A448: + mov r2, r8 + ldrb r4, [r2, #8] + b _0806A754 +_0806A44E: + mov r7, r8 + ldrb r4, [r7, #9] + b _0806A754 +_0806A454: + ldr r0, [sp] + subs r0, #0xd + lsls r0, r0, #1 + add r0, sl + ldrh r4, [r0] + b _0806A754 +_0806A460: + ldr r0, [sp] + add r0, sl + subs r0, #9 + ldrb r4, [r0] + b _0806A754 +_0806A46A: + ldrb r4, [r6] + b _0806A754 +_0806A46E: + ldrb r4, [r6, #1] + b _0806A754 +_0806A472: + ldrb r4, [r6, #2] + b _0806A754 +_0806A476: + ldrb r4, [r6, #3] + b _0806A754 +_0806A47A: + ldrb r4, [r6, #4] + b _0806A754 +_0806A47E: + ldrb r4, [r6, #5] + b _0806A754 +_0806A482: + ldrb r4, [r6, #6] + b _0806A754 +_0806A486: + ldrb r4, [r6, #7] + b _0806A754 +_0806A48A: + ldrb r4, [r6, #8] + b _0806A754 +_0806A48E: + ldrb r4, [r6, #9] + b _0806A754 +_0806A492: + ldrb r4, [r6, #0xa] + b _0806A754 +_0806A496: + ldrb r4, [r6, #0xb] + b _0806A754 +_0806A49A: + ldrb r4, [r5] + b _0806A754 +_0806A49E: + ldrb r4, [r5, #1] + b _0806A754 +_0806A4A2: + ldrb r0, [r5, #2] + lsls r0, r0, #0x19 + lsrs r4, r0, #0x19 + b _0806A754 +_0806A4AA: + ldrh r0, [r5, #2] + lsls r0, r0, #0x15 + lsrs r4, r0, #0x1c + b _0806A754 +_0806A4B2: + ldrb r0, [r5, #3] + b _0806A570 +_0806A4B6: + ldrb r0, [r5, #3] + lsrs r4, r0, #7 + b _0806A754 +_0806A4BC: + ldrb r0, [r5, #4] + lsls r0, r0, #0x1b + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4C4: + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4CC: + ldrb r0, [r5, #5] + lsls r0, r0, #0x19 + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4D4: + ldr r0, [r5, #4] + lsls r0, r0, #0xc + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4DC: + ldrh r0, [r5, #6] + lsls r0, r0, #0x17 + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4E4: + ldrb r0, [r5, #7] + lsls r0, r0, #0x1a + lsrs r4, r0, #0x1b + b _0806A754 +_0806A4EC: + ldrb r0, [r5, #7] + b _0806A54A +_0806A4F0: + ldrb r0, [r5, #7] + lsrs r4, r0, #7 + b _0806A754 +_0806A4F6: + ldrb r0, [r5, #8] + lsls r0, r0, #0x1d + lsrs r4, r0, #0x1d + b _0806A754 +_0806A4FE: + ldrb r0, [r5, #8] + lsls r0, r0, #0x1a + lsrs r4, r0, #0x1d + b _0806A754 +_0806A506: + ldrh r0, [r5, #8] + lsls r0, r0, #0x17 + lsrs r4, r0, #0x1d + b _0806A754 +_0806A50E: + ldrb r0, [r5, #9] + lsls r0, r0, #0x1c + lsrs r4, r0, #0x1d + b _0806A754 +_0806A516: + ldrb r0, [r5, #9] + lsls r0, r0, #0x19 + lsrs r4, r0, #0x1d + b _0806A754 +_0806A51E: + ldrb r0, [r5, #9] + lsrs r4, r0, #7 + b _0806A754 +_0806A524: + ldrb r0, [r5, #0xa] + b _0806A558 +_0806A528: + ldrb r0, [r5, #0xa] + b _0806A560 +_0806A52C: + ldrb r0, [r5, #0xa] + b _0806A568 +_0806A530: + ldrb r0, [r5, #0xa] + lsls r0, r0, #0x1c + lsrs r4, r0, #0x1f + b _0806A754 +_0806A538: + ldrb r0, [r5, #0xa] + lsls r0, r0, #0x1b + lsrs r4, r0, #0x1f + b _0806A754 +_0806A540: + ldrb r0, [r5, #0xa] + lsls r0, r0, #0x1a + lsrs r4, r0, #0x1f + b _0806A754 +_0806A548: + ldrb r0, [r5, #0xa] +_0806A54A: + lsls r0, r0, #0x19 + lsrs r4, r0, #0x1f + b _0806A754 +_0806A550: + ldrb r0, [r5, #0xa] + lsrs r4, r0, #7 + b _0806A754 +_0806A556: + ldrb r0, [r5, #0xb] +_0806A558: + lsls r0, r0, #0x1f + lsrs r4, r0, #0x1f + b _0806A754 +_0806A55E: + ldrb r0, [r5, #0xb] +_0806A560: + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1f + b _0806A754 +_0806A566: + ldrb r0, [r5, #0xb] +_0806A568: + lsls r0, r0, #0x1d + lsrs r4, r0, #0x1f + b _0806A754 +_0806A56E: + ldrb r0, [r5, #0xb] +_0806A570: + lsls r0, r0, #0x19 + lsrs r4, r0, #0x1c + b _0806A754 +_0806A576: + ldrb r0, [r5, #0xb] + lsrs r4, r0, #7 + b _0806A754 +_0806A57C: + mov r0, r8 + ldrh r4, [r0] + cmp r4, #0 + bne _0806A586 + b _0806A754 +_0806A586: + ldrb r0, [r5, #7] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0806A59C + mov r2, sb + ldrb r1, [r2, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0806A59C + b _0806A754 +_0806A59C: + movs r4, #0xce + lsls r4, r4, #1 + b _0806A754 +_0806A5A2: + ldrb r0, [r5, #4] + lsls r0, r0, #0x1b + lsrs r4, r0, #0x1b + ldrh r1, [r5, #4] + movs r0, #0xf8 + lsls r0, r0, #2 + ands r0, r1 + orrs r4, r0 + ldrb r0, [r5, #5] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + lsls r0, r0, #0xa + orrs r4, r0 + ldr r0, [r5, #4] + movs r1, #0xf8 + lsls r1, r1, #0xc + ands r0, r1 + orrs r4, r0 + ldrh r0, [r5, #6] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + lsls r0, r0, #0x14 + orrs r4, r0 + ldrb r0, [r5, #7] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + lsls r0, r0, #0x19 + orrs r4, r0 + b _0806A754 +_0806A5DC: + mov r1, r8 + ldrh r0, [r1] + cmp r0, #0 + bne _0806A5E6 + b _0806A754 +_0806A5E6: + ldrb r0, [r5, #7] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0806A5F0 + b _0806A754 +_0806A5F0: + ldrh r0, [r7] + ldr r1, _0806A630 + cmp r0, r1 + bne _0806A5FA + b _0806A754 +_0806A5FA: + mov r2, sl + ldrh r5, [r2] + adds r6, r1, #0 + adds r2, r7, #0 + ldr r1, _0806A634 +_0806A604: + ldrh r3, [r2] + cmp r5, r3 + beq _0806A61E + mov r7, sl + ldrh r0, [r7, #2] + cmp r0, r3 + beq _0806A61E + ldrh r0, [r7, #4] + cmp r0, r3 + beq _0806A61E + ldrh r0, [r7, #6] + cmp r0, r3 + bne _0806A622 +_0806A61E: + ldr r0, [r1] + orrs r4, r0 +_0806A622: + adds r2, #2 + adds r1, #4 + ldrh r0, [r2] + cmp r0, r6 + bne _0806A604 + b _0806A754 + .align 2, 0 +_0806A630: .4byte 0x00000163 +_0806A634: .4byte gUnknown_82FACB4 +_0806A638: + movs r4, #0 + mov r1, r8 + ldrh r0, [r1] + cmp r0, #0 + bne _0806A644 + b _0806A754 +_0806A644: + ldrb r0, [r5, #7] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0806A64E + b _0806A754 +_0806A64E: + ldrb r0, [r5, #8] + lsls r1, r0, #0x1d + lsrs r4, r1, #0x1d + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + adds r4, r4, r0 + ldrh r0, [r5, #8] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1d + adds r4, r4, r0 + ldrb r1, [r5, #9] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1d + adds r4, r4, r0 + lsls r0, r1, #0x19 + lsrs r0, r0, #0x1d + adds r4, r4, r0 + lsrs r1, r1, #7 + adds r4, r4, r1 + ldrb r1, [r5, #0xa] + lsls r0, r1, #0x1f + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x19 + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsrs r1, r1, #7 + adds r4, r4, r1 + ldrb r1, [r5, #0xb] + lsls r0, r1, #0x1f + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1f + adds r4, r4, r0 + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + adds r4, r4, r1 + b _0806A754 +_0806A6BA: + movs r4, #0 + mov r2, r8 + ldrh r0, [r2] + cmp r0, #0 + beq _0806A754 + ldrb r0, [r5, #7] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0806A754 + ldrb r2, [r5, #9] + lsrs r4, r2, #7 + ldrb r1, [r5, #8] + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1c + orrs r4, r0 + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1d + lsls r1, r1, #4 + orrs r4, r1 + ldrh r0, [r5, #8] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1d + lsls r0, r0, #7 + orrs r4, r0 + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1d + lsls r0, r0, #0xa + orrs r4, r0 + lsls r2, r2, #0x19 + lsrs r2, r2, #0x1d + lsls r2, r2, #0xd + orrs r4, r2 + ldrb r1, [r5, #0xa] + lsls r0, r1, #0x1f + lsrs r0, r0, #0x1f + lsls r0, r0, #0x10 + orrs r4, r0 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1f + lsls r0, r0, #0x11 + orrs r4, r0 + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1f + lsls r0, r0, #0x12 + orrs r4, r0 + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1f + lsls r0, r0, #0x13 + orrs r4, r0 + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1f + lsls r0, r0, #0x14 + orrs r4, r0 + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1f + lsls r0, r0, #0x15 + orrs r4, r0 + lsls r0, r1, #0x19 + lsrs r0, r0, #0x1f + lsls r0, r0, #0x16 + orrs r4, r0 + lsrs r1, r1, #7 + lsls r1, r1, #0x17 + orrs r4, r1 + ldrb r1, [r5, #0xb] + lsls r0, r1, #0x1f + lsrs r0, r0, #0x1f + lsls r0, r0, #0x18 + orrs r4, r0 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1f + lsls r0, r0, #0x19 + orrs r4, r0 + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + lsls r1, r1, #0x1a + orrs r4, r1 +_0806A754: + ldr r7, [sp] + cmp r7, #0xa + ble _0806A760 + mov r0, sb + bl sub_08069D68 +_0806A760: + adds r0, r4, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806A1B4 + + thumb_func_start sub_0806A774 +sub_0806A774: @ 0x0806A774 + push {lr} + adds r3, r0, #0 + adds r0, r1, #0 + subs r0, #0x37 + cmp r0, #0xa + bhi _0806A858 + lsls r0, r0, #2 + ldr r1, _0806A78C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A78C: .4byte _0806A790 +_0806A790: @ jump table + .4byte _0806A7BC @ case 0 + .4byte _0806A7D4 @ case 1 + .4byte _0806A7DE @ case 2 + .4byte _0806A7EE @ case 3 + .4byte _0806A7FE @ case 4 + .4byte _0806A80E @ case 5 + .4byte _0806A81E @ case 6 + .4byte _0806A82E @ case 7 + .4byte _0806A83E @ case 8 + .4byte _0806A84E @ case 9 + .4byte _0806A85E @ case 10 +_0806A7BC: + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3, #0x50] + b _0806A85E +_0806A7D4: + ldrb r1, [r2] + adds r0, r3, #0 + adds r0, #0x54 + strb r1, [r0] + b _0806A85E +_0806A7DE: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x56 + strh r0, [r1] + b _0806A85E +_0806A7EE: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x58 + strh r0, [r1] + b _0806A85E +_0806A7FE: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x5a + strh r0, [r1] + b _0806A85E +_0806A80E: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x5c + strh r0, [r1] + b _0806A85E +_0806A81E: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x5e + strh r0, [r1] + b _0806A85E +_0806A82E: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x60 + strh r0, [r1] + b _0806A85E +_0806A83E: + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x62 + strh r0, [r1] + b _0806A85E +_0806A84E: + ldrb r1, [r2] + adds r0, r3, #0 + adds r0, #0x55 + strb r1, [r0] + b _0806A85E +_0806A858: + adds r0, r3, #0 + bl sub_0806A864 +_0806A85E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806A774 + + thumb_func_start sub_0806A864 +sub_0806A864: @ 0x0806A864 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + mov sl, r1 + adds r4, r2, #0 + movs r0, #0 + mov r8, r0 + mov sb, r0 + movs r6, #0 + movs r5, #0 + cmp r1, #0xa + ble _0806A8E4 + ldr r1, [r7] + adds r0, r7, #0 + movs r2, #0 + bl sub_08069DB0 + mov r8, r0 + ldr r1, [r7] + adds r0, r7, #0 + movs r2, #1 + bl sub_08069DB0 + mov sb, r0 + ldr r1, [r7] + adds r0, r7, #0 + movs r2, #2 + bl sub_08069DB0 + adds r6, r0, #0 + ldr r1, [r7] + adds r0, r7, #0 + movs r2, #3 + bl sub_08069DB0 + adds r5, r0, #0 + adds r0, r7, #0 + bl sub_08069D8C + adds r0, r7, #0 + bl sub_080687B8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r7, #0x1c] + cmp r0, r1 + beq _0806A8E4 + ldrb r0, [r7, #0x13] + movs r1, #1 + orrs r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r7, #0x13] + ldrb r0, [r5, #7] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #7] + adds r0, r7, #0 + bl sub_08069D68 + b _0806AEB4 +_0806A8E4: + mov r0, sl + cmp r0, #0x50 + bls _0806A8EC + b _0806AEA0 +_0806A8EC: + lsls r0, r0, #2 + ldr r1, _0806A8F8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806A8F8: .4byte _0806A8FC +_0806A8FC: @ jump table + .4byte _0806AA40 @ case 0 + .4byte _0806AA58 @ case 1 + .4byte _0806AA70 @ case 2 + .4byte _0806AA86 @ case 3 + .4byte _0806AA8C @ case 4 + .4byte _0806AA9C @ case 5 + .4byte _0806AAAE @ case 6 + .4byte _0806AAC0 @ case 7 + .4byte _0806AAD6 @ case 8 + .4byte _0806AADC @ case 9 + .4byte _0806AAE8 @ case 10 + .4byte _0806AAF4 @ case 11 + .4byte _0806AB14 @ case 12 + .4byte _0806AB4C @ case 13 + .4byte _0806AB4C @ case 14 + .4byte _0806AB4C @ case 15 + .4byte _0806AB4C @ case 16 + .4byte _0806AB60 @ case 17 + .4byte _0806AB60 @ case 18 + .4byte _0806AB60 @ case 19 + .4byte _0806AB60 @ case 20 + .4byte _0806AB3C @ case 21 + .4byte _0806AB90 @ case 22 + .4byte _0806AB96 @ case 23 + .4byte _0806AB9C @ case 24 + .4byte _0806AB22 @ case 25 + .4byte _0806AB6C @ case 26 + .4byte _0806AB72 @ case 27 + .4byte _0806AB78 @ case 28 + .4byte _0806AB7E @ case 29 + .4byte _0806AB84 @ case 30 + .4byte _0806AB8A @ case 31 + .4byte _0806AB44 @ case 32 + .4byte _0806ABA2 @ case 33 + .4byte _0806ABB4 @ case 34 + .4byte _0806ABBA @ case 35 + .4byte _0806ABC0 @ case 36 + .4byte _0806ABD4 @ case 37 + .4byte _0806ABEC @ case 38 + .4byte _0806AC12 @ case 39 + .4byte _0806AC26 @ case 40 + .4byte _0806AC40 @ case 41 + .4byte _0806AC56 @ case 42 + .4byte _0806AC70 @ case 43 + .4byte _0806AC88 @ case 44 + .4byte _0806AC9C @ case 45 + .4byte _0806ACCC @ case 46 + .4byte _0806ABA8 @ case 47 + .4byte _0806ABAE @ case 48 + .4byte _0806AC02 @ case 49 + .4byte _0806ACDC @ case 50 + .4byte _0806ACEA @ case 51 + .4byte _0806AD00 @ case 52 + .4byte _0806AD18 @ case 53 + .4byte _0806AD28 @ case 54 + .4byte _0806AEA0 @ case 55 + .4byte _0806AEA0 @ case 56 + .4byte _0806AEA0 @ case 57 + .4byte _0806AEA0 @ case 58 + .4byte _0806AEA0 @ case 59 + .4byte _0806AEA0 @ case 60 + .4byte _0806AEA0 @ case 61 + .4byte _0806AEA0 @ case 62 + .4byte _0806AEA0 @ case 63 + .4byte _0806AEA0 @ case 64 + .4byte _0806AEA0 @ case 65 + .4byte _0806AE26 @ case 66 + .4byte _0806AD3E @ case 67 + .4byte _0806AD4E @ case 68 + .4byte _0806AD5C @ case 69 + .4byte _0806AD6C @ case 70 + .4byte _0806AD7C @ case 71 + .4byte _0806AD8C @ case 72 + .4byte _0806AD9C @ case 73 + .4byte _0806ADAC @ case 74 + .4byte _0806ADC2 @ case 75 + .4byte _0806ADD2 @ case 76 + .4byte _0806ADE0 @ case 77 + .4byte _0806ADF0 @ case 78 + .4byte _0806AE00 @ case 79 + .4byte _0806AE16 @ case 80 +_0806AA40: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r4, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r7] + b _0806AEA0 +_0806AA58: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r4, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r7, #4] + b _0806AEA0 +_0806AA70: + movs r2, #0 + adds r3, r7, #0 + adds r3, #8 +_0806AA76: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #9 + ble _0806AA76 + b _0806AEA0 +_0806AA86: + ldrb r0, [r4] + strb r0, [r7, #0x12] + b _0806AEA0 +_0806AA8C: + ldrb r0, [r4] + movs r1, #1 + ands r1, r0 + ldrb r2, [r7, #0x13] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + b _0806ACBA +_0806AA9C: + ldrb r0, [r4] + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r7, #0x13] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + b _0806ACBA +_0806AAAE: + ldrb r0, [r4] + movs r1, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r7, #0x13] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + b _0806ACBA +_0806AAC0: + movs r2, #0 + adds r3, r7, #0 + adds r3, #0x14 +_0806AAC6: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #6 + ble _0806AAC6 + b _0806AEA0 +_0806AAD6: + ldrb r0, [r4] + strb r0, [r7, #0x1b] + b _0806AEA0 +_0806AADC: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + strh r1, [r7, #0x1c] + b _0806AEA0 +_0806AAE8: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + strh r1, [r7, #0x1e] + b _0806AEA0 +_0806AAF4: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + mov r0, r8 + strh r1, [r0] + lsls r1, r1, #0x10 + cmp r1, #0 + beq _0806AB0C + ldrb r0, [r7, #0x13] + movs r1, #2 + b _0806ACBA +_0806AB0C: + ldrb r1, [r7, #0x13] + movs r0, #3 + rsbs r0, r0, #0 + b _0806ACC6 +_0806AB14: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + mov r0, r8 + strh r1, [r0, #2] + b _0806AEA0 +_0806AB22: + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r4, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + mov r0, r8 + str r1, [r0, #4] + b _0806AEA0 +_0806AB3C: + ldrb r0, [r4] + mov r1, r8 + strb r0, [r1, #8] + b _0806AEA0 +_0806AB44: + ldrb r0, [r4] + mov r1, r8 + strb r0, [r1, #9] + b _0806AEA0 +_0806AB4C: + mov r2, sl + subs r2, #0xd + lsls r2, r2, #1 + add r2, sb + ldrb r1, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + strh r1, [r2] + b _0806AEA0 +_0806AB60: + mov r0, sb + add r0, sl + subs r0, #9 + ldrb r1, [r4] + strb r1, [r0] + b _0806AEA0 +_0806AB6C: + ldrb r0, [r4] + strb r0, [r6] + b _0806AEA0 +_0806AB72: + ldrb r0, [r4] + strb r0, [r6, #1] + b _0806AEA0 +_0806AB78: + ldrb r0, [r4] + strb r0, [r6, #2] + b _0806AEA0 +_0806AB7E: + ldrb r0, [r4] + strb r0, [r6, #3] + b _0806AEA0 +_0806AB84: + ldrb r0, [r4] + strb r0, [r6, #4] + b _0806AEA0 +_0806AB8A: + ldrb r0, [r4] + strb r0, [r6, #5] + b _0806AEA0 +_0806AB90: + ldrb r0, [r4] + strb r0, [r6, #6] + b _0806AEA0 +_0806AB96: + ldrb r0, [r4] + strb r0, [r6, #7] + b _0806AEA0 +_0806AB9C: + ldrb r0, [r4] + strb r0, [r6, #8] + b _0806AEA0 +_0806ABA2: + ldrb r0, [r4] + strb r0, [r6, #9] + b _0806AEA0 +_0806ABA8: + ldrb r0, [r4] + strb r0, [r6, #0xa] + b _0806AEA0 +_0806ABAE: + ldrb r0, [r4] + strb r0, [r6, #0xb] + b _0806AEA0 +_0806ABB4: + ldrb r0, [r4] + strb r0, [r5] + b _0806AEA0 +_0806ABBA: + ldrb r0, [r4] + strb r0, [r5, #1] + b _0806AEA0 +_0806ABC0: + ldrb r1, [r4] + movs r0, #0x7f + ands r1, r0 + ldrb r2, [r5, #2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #2] + b _0806AEA0 +_0806ABD4: + ldrb r1, [r4] + movs r0, #0xf + ands r1, r0 + lsls r1, r1, #7 + ldrh r2, [r5, #2] + ldr r0, _0806ABE8 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #2] + b _0806AEA0 + .align 2, 0 +_0806ABE8: .4byte 0xFFFFF87F +_0806ABEC: + ldrb r1, [r4] + movs r0, #0xf + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5, #3] + movs r0, #0x79 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #3] + b _0806AEA0 +_0806AC02: + ldrb r0, [r4] + lsls r0, r0, #7 + ldrb r2, [r5, #3] + movs r1, #0x7f + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #3] + b _0806AEA0 +_0806AC12: + ldrb r1, [r4] + movs r0, #0x1f + ands r1, r0 + ldrb r2, [r5, #4] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #4] + b _0806AEA0 +_0806AC26: + ldrb r1, [r4] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #5 + ldrh r2, [r5, #4] + ldr r0, _0806AC3C + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + b _0806AEA0 + .align 2, 0 +_0806AC3C: .4byte 0xFFFFFC1F +_0806AC40: + ldrb r1, [r4] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0x7d + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0806AEA0 +_0806AC56: + ldrb r2, [r4] + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #0xf + ldr r0, [r5, #4] + ldr r1, _0806AC6C + ands r0, r1 + orrs r0, r2 + str r0, [r5, #4] + b _0806AEA0 + .align 2, 0 +_0806AC6C: .4byte 0xFFF07FFF +_0806AC70: + ldrb r1, [r4] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #4 + ldrh r2, [r5, #6] + ldr r0, _0806AC84 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #6] + b _0806AEA0 + .align 2, 0 +_0806AC84: .4byte 0xFFFFFE0F +_0806AC88: + ldrb r1, [r4] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #7] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + b _0806AE9E +_0806AC9C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r5, #7] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #7] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0806ACC0 + ldrb r0, [r7, #0x13] + movs r1, #4 +_0806ACBA: + orrs r0, r1 + strb r0, [r7, #0x13] + b _0806AEA0 +_0806ACC0: + ldrb r1, [r7, #0x13] + movs r0, #5 + rsbs r0, r0, #0 +_0806ACC6: + ands r0, r1 + strb r0, [r7, #0x13] + b _0806AEA0 +_0806ACCC: + ldrb r0, [r4] + lsls r0, r0, #7 + ldrb r2, [r5, #7] + movs r1, #0x7f + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #7] + b _0806AEA0 +_0806ACDC: + ldrb r1, [r4] + movs r0, #7 + ands r1, r0 + ldrb r2, [r5, #8] + movs r0, #8 + rsbs r0, r0, #0 + b _0806ACF8 +_0806ACEA: + ldrb r1, [r4] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5, #8] + movs r0, #0x39 + rsbs r0, r0, #0 +_0806ACF8: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #8] + b _0806AEA0 +_0806AD00: + ldrb r1, [r4] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #6 + ldrh r2, [r5, #8] + ldr r0, _0806AD14 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #8] + b _0806AEA0 + .align 2, 0 +_0806AD14: .4byte 0xFFFFFE3F +_0806AD18: + ldrb r1, [r4] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #9] + movs r0, #0xf + rsbs r0, r0, #0 + b _0806AD36 +_0806AD28: + ldrb r1, [r4] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + ldrb r2, [r5, #9] + movs r0, #0x71 + rsbs r0, r0, #0 +_0806AD36: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #9] + b _0806AEA0 +_0806AD3E: + ldrb r0, [r4] + lsls r0, r0, #7 + ldrb r2, [r5, #9] + movs r1, #0x7f + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #9] + b _0806AEA0 +_0806AD4E: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + ldrb r2, [r5, #0xa] + movs r0, #2 + rsbs r0, r0, #0 + b _0806ADBA +_0806AD5C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #0xa] + movs r0, #3 + rsbs r0, r0, #0 + b _0806ADBA +_0806AD6C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #0xa] + movs r0, #5 + rsbs r0, r0, #0 + b _0806ADBA +_0806AD7C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5, #0xa] + movs r0, #9 + rsbs r0, r0, #0 + b _0806ADBA +_0806AD8C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #4 + ldrb r2, [r5, #0xa] + movs r0, #0x11 + rsbs r0, r0, #0 + b _0806ADBA +_0806AD9C: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r5, #0xa] + movs r0, #0x21 + rsbs r0, r0, #0 + b _0806ADBA +_0806ADAC: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r5, #0xa] + movs r0, #0x41 + rsbs r0, r0, #0 +_0806ADBA: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0xa] + b _0806AEA0 +_0806ADC2: + ldrb r0, [r4] + lsls r0, r0, #7 + ldrb r2, [r5, #0xa] + movs r1, #0x7f + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0xa] + b _0806AEA0 +_0806ADD2: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + ldrb r2, [r5, #0xb] + movs r0, #2 + rsbs r0, r0, #0 + b _0806AE0E +_0806ADE0: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #0xb] + movs r0, #3 + rsbs r0, r0, #0 + b _0806AE0E +_0806ADF0: + ldrb r1, [r4] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #0xb] + movs r0, #5 + rsbs r0, r0, #0 + b _0806AE0E +_0806AE00: + ldrb r1, [r4] + movs r0, #0xf + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5, #0xb] + movs r0, #0x79 + rsbs r0, r0, #0 +_0806AE0E: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0xb] + b _0806AEA0 +_0806AE16: + ldrb r0, [r4] + lsls r0, r0, #7 + ldrb r2, [r5, #0xb] + movs r1, #0x7f + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0xb] + b _0806AEA0 +_0806AE26: + ldrb r3, [r4] + ldrb r0, [r4, #1] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r4, #2] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x18 + orrs r3, r0 + movs r4, #0x1f + adds r1, r3, #0 + ands r1, r4 + ldrb r2, [r5, #4] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #4] + lsrs r1, r3, #5 + ands r1, r4 + lsls r1, r1, #5 + ldrh r2, [r5, #4] + ldr r0, _0806AEC4 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + lsrs r1, r3, #0xa + ands r1, r4 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0x7d + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + lsrs r1, r3, #0xf + ands r1, r4 + lsls r1, r1, #0xf + ldr r0, [r5, #4] + ldr r2, _0806AEC8 + ands r0, r2 + orrs r0, r1 + str r0, [r5, #4] + lsrs r1, r3, #0x14 + ands r1, r4 + lsls r1, r1, #4 + ldrh r2, [r5, #6] + ldr r0, _0806AECC + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #6] + lsrs r3, r3, #0x19 + ands r3, r4 + lsls r3, r3, #1 + ldrb r1, [r5, #7] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 +_0806AE9E: + strb r0, [r5, #7] +_0806AEA0: + mov r0, sl + cmp r0, #0xa + ble _0806AEB4 + adds r0, r7, #0 + bl sub_080687B8 + strh r0, [r7, #0x1c] + adds r0, r7, #0 + bl sub_08069D68 +_0806AEB4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806AEC4: .4byte 0xFFFFFC1F +_0806AEC8: .4byte 0xFFF07FFF +_0806AECC: .4byte 0xFFFFFE0F + thumb_func_end sub_0806A864 + + thumb_func_start sub_0806AED0 +sub_0806AED0: @ 0x0806AED0 + push {lr} + bl memcpy + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806AED0 + + thumb_func_start sub_0806AEDC +sub_0806AEDC: @ 0x0806AEDC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _0806AF08 + ldr r2, [r4] + movs r1, #7 + bl sub_0806A774 + ldr r2, [r4] + adds r2, #8 + adds r0, r6, #0 + movs r1, #0x31 + bl sub_0806A774 + ldr r2, [r4] + adds r2, #0xa + adds r0, r6, #0 + movs r1, #1 + bl sub_0806A774 + movs r5, #0 + b _0806AF0E + .align 2, 0 +_0806AF08: .4byte gUnknown_3005AF0 +_0806AF0C: + adds r5, #1 +_0806AF0E: + cmp r5, #5 + bgt _0806AF48 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0806AF40 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806AF0C + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x64 + bl sub_0806AED0 + ldr r1, _0806AF44 + adds r0, r5, #1 + strb r0, [r1] + movs r0, #0 + b _0806AF52 + .align 2, 0 +_0806AF40: .4byte gUnknown_2024190 +_0806AF44: .4byte gUnknown_202418D +_0806AF48: + adds r0, r6, #0 + bl sub_0806AF58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806AF52: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806AEDC + + thumb_func_start sub_0806AF58 +sub_0806AF58: @ 0x0806AF58 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + ldr r0, _0806AFCC + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0813B23C + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0806AF76: + movs r6, #0 + lsls r7, r5, #0x18 +_0806AF7A: + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r7, #0x18 + bl sub_080D1934 + adds r4, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + cmp r0, #0 + bne _0806AFDC + mov r0, r8 + bl sub_0806E3B0 + adds r0, r4, #0 + mov r1, r8 + movs r2, #0x50 + bl sub_0806AED0 + ldr r0, _0806AFD0 + strh r5, [r0] + ldr r0, _0806AFD4 + strh r6, [r0] + bl sub_0813B248 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + beq _0806AFBC + ldr r0, _0806AFD8 + bl sub_0809D040 +_0806AFBC: + lsls r1, r5, #0x10 + ldr r0, _0806AFCC + lsrs r1, r1, #0x10 + bl sub_0809CF88 + movs r0, #1 + b _0806AFF8 + .align 2, 0 +_0806AFCC: .4byte 0x00004036 +_0806AFD0: .4byte gUnknown_2037296 +_0806AFD4: .4byte gUnknown_2037298 +_0806AFD8: .4byte 0x000008D7 +_0806AFDC: + adds r6, #1 + cmp r6, #0x1d + ble _0806AF7A + adds r5, #1 + cmp r5, #0xe + bne _0806AFEA + movs r5, #0 +_0806AFEA: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _0806AF76 + movs r0, #2 +_0806AFF8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806AF58 + + thumb_func_start sub_0806B004 +sub_0806B004: @ 0x0806B004 + push {r4, lr} + ldr r0, _0806B010 + movs r1, #0 + strb r1, [r0] + b _0806B01C + .align 2, 0 +_0806B010: .4byte gUnknown_202418D +_0806B014: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r0, r4, #0 +_0806B01C: + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bhi _0806B03A + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0806B044 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806B014 +_0806B03A: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B044: .4byte gUnknown_2024190 + thumb_func_end sub_0806B004 + + thumb_func_start sub_0806B048 +sub_0806B048: @ 0x0806B048 + push {r4, lr} + ldr r0, _0806B054 + movs r1, #0 + strb r1, [r0] + b _0806B060 + .align 2, 0 +_0806B054: .4byte gUnknown_202418E +_0806B058: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r0, r4, #0 +_0806B060: + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bhi _0806B07E + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0806B088 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806B058 +_0806B07E: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B088: .4byte gUnknown_20243E8 + thumb_func_end sub_0806B048 + + thumb_func_start sub_0806B08C +sub_0806B08C: @ 0x0806B08C + push {r4, r5, r6, lr} + movs r6, #0 + bl sub_0806B004 + ldr r1, _0806B0F8 + ldrb r0, [r1] + cmp r0, #1 + beq _0806B0F0 + movs r5, #0 + ldrb r1, [r1] + cmp r6, r1 + bge _0806B0E8 +_0806B0A4: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0806B0FC + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _0806B0DE + adds r0, r4, #0 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806B0DE + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806B0DE + adds r6, #1 +_0806B0DE: + adds r5, #1 + ldr r0, _0806B0F8 + ldrb r0, [r0] + cmp r5, r0 + blt _0806B0A4 +_0806B0E8: + movs r0, #0 + cmp r6, #1 + bgt _0806B0F0 + movs r0, #2 +_0806B0F0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0806B0F8: .4byte gUnknown_202418D +_0806B0FC: .4byte gUnknown_2024190 + thumb_func_end sub_0806B08C + + thumb_func_start sub_0806B100 +sub_0806B100: @ 0x0806B100 + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 +_0806B106: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0806B148 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _0806B138 + cmp r1, #0 + beq _0806B138 + adds r0, r4, #0 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806B138 + adds r6, #1 +_0806B138: + adds r5, #1 + cmp r5, #5 + ble _0806B106 + cmp r6, #1 + bne _0806B14C + movs r0, #1 + b _0806B154 + .align 2, 0 +_0806B148: .4byte gUnknown_2024190 +_0806B14C: + movs r0, #0 + cmp r6, #1 + bgt _0806B154 + movs r0, #2 +_0806B154: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806B100 + + thumb_func_start sub_0806B15C +sub_0806B15C: @ 0x0806B15C + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x18 + cmp r1, #0 + beq _0806B180 + ldr r2, _0806B178 + ldr r1, _0806B17C + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x17] + b _0806B18E + .align 2, 0 +_0806B178: .4byte gUnknown_2023EAE +_0806B17C: .4byte gUnknown_82F0D54 +_0806B180: + ldr r2, _0806B198 + ldr r1, _0806B19C + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] +_0806B18E: + strb r0, [r2] + ldrb r0, [r2] + pop {r1} + bx r1 + .align 2, 0 +_0806B198: .4byte gUnknown_2023EAE +_0806B19C: .4byte gUnknown_82F0D54 + thumb_func_end sub_0806B15C + + thumb_func_start sub_0806B1A0 +sub_0806B1A0: @ 0x0806B1A0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0806B15C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806B1A0 + + thumb_func_start sub_0806B1D4 +sub_0806B1D4: @ 0x0806B1D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r5, r0, #0 + bl sub_08067710 + ldr r4, _0806B2EC + ldr r0, [r4] + ldr r0, [r0] + adds r1, r5, #0 + movs r2, #0xa0 + bl memcpy + movs r0, #0 + mov sb, r0 +_0806B1F8: + ldr r1, _0806B2EC + ldr r3, [r1] + ldr r2, [r3] + mov r4, sb + lsls r7, r4, #1 + adds r0, r2, #0 + adds r0, #0x7c + adds r1, r0, r7 + ldrh r0, [r1] + adds r4, #1 + str r4, [sp, #0x10] + cmp r0, #0 + beq _0806B2D2 + movs r0, #0x64 + mov r6, sb + muls r6, r0, r6 + ldr r4, _0806B2F0 + mov r8, r4 + adds r5, r6, r4 + ldrh r1, [r1] + adds r0, r2, #0 + adds r0, #0x94 + add r0, sb + ldrb r2, [r0] + movs r0, #1 + str r0, [sp] + ldr r0, [r3] + mov r3, sb + lsls r4, r3, #2 + adds r0, #0x34 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [sp, #4] + movs r0, #2 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r5, #0 + movs r3, #0xf + bl sub_08067730 + ldr r1, _0806B2EC + ldr r0, [r1] + adds r1, r7, #0 + adds r1, #0x88 + ldr r2, [r0] + adds r2, r2, r1 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A774 + movs r5, #0 + mov sl, r4 + mov r7, sb + adds r7, #0x9a + mov r4, r8 +_0806B268: + adds r1, r5, #0 + adds r1, #0x1a + ldr r2, _0806B2EC + ldr r0, [r2] + ldr r2, [r0] + adds r2, r2, r7 + adds r0, r6, r4 + bl sub_0806A774 + adds r5, #1 + cmp r5, #5 + ble _0806B268 + movs r5, #0 + movs r3, #0x64 + mov r0, sb + muls r0, r3, r0 + ldr r1, _0806B2F0 + adds r7, r0, r1 + mov r4, sl + lsls r0, r4, #1 + adds r6, r0, #0 + adds r6, #0x4c + adds r4, r0, #0 +_0806B296: + adds r1, r5, #0 + adds r1, #0xd + ldr r2, _0806B2EC + ldr r0, [r2] + ldr r2, [r0] + adds r2, r2, r6 + adds r0, r7, #0 + bl sub_0806A774 + adds r1, r5, #0 + adds r1, #0x11 + ldr r3, _0806B2EC + ldr r0, [r3] + ldr r0, [r0] + adds r0, #0x4c + adds r0, r0, r4 + ldrh r0, [r0] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0806B2F4 + adds r2, r2, r0 + adds r0, r7, #0 + bl sub_0806A774 + adds r6, #2 + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _0806B296 +_0806B2D2: + ldr r4, [sp, #0x10] + mov sb, r4 + cmp r4, #5 + ble _0806B1F8 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806B2EC: .4byte gUnknown_202414C +_0806B2F0: .4byte gUnknown_20243E8 +_0806B2F4: .4byte gUnknown_82ED224 + thumb_func_end sub_0806B1D4 + + thumb_func_start sub_0806B2F8 +sub_0806B2F8: @ 0x0806B2F8 + push {r4, r5, lr} + ldr r5, _0806B32C + ldr r0, _0806B330 + ldr r0, [r0] + ldr r4, [r0] + ldrb r0, [r4, #9] + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r4, #1] + lsls r2, r2, #0x1b + lsrs r2, r2, #0x1f + lsls r1, r2, #2 + adds r1, r1, r2 + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r0, [r0] + ldr r1, _0806B334 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B32C: .4byte gUnknown_82FA844 +_0806B330: .4byte gUnknown_202414C +_0806B334: .4byte gUnknown_82EFF00 + thumb_func_end sub_0806B2F8 + + thumb_func_start sub_0806B338 +sub_0806B338: @ 0x0806B338 + push {r4, r5, lr} + ldr r5, _0806B36C + ldr r0, _0806B370 + ldr r0, [r0] + ldr r4, [r0] + ldrb r0, [r4, #9] + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r4, #1] + lsls r2, r2, #0x1b + lsrs r2, r2, #0x1f + lsls r1, r2, #2 + adds r1, r1, r2 + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r0, [r0] + ldr r1, _0806B374 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806B36C: .4byte gUnknown_82FA844 +_0806B370: .4byte gUnknown_202414C +_0806B374: .4byte gUnknown_82EFF52 + thumb_func_end sub_0806B338 + + thumb_func_start sub_0806B378 +sub_0806B378: @ 0x0806B378 + push {r4, lr} + movs r4, #0 +_0806B37C: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _0806B394 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806B398 + movs r0, #0 + b _0806B3A6 + .align 2, 0 +_0806B394: .4byte gUnknown_2024190 +_0806B398: + adds r4, #1 + cmp r4, #5 + ble _0806B37C + bl sub_0806B3AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806B3A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806B378 + + thumb_func_start sub_0806B3AC +sub_0806B3AC: @ 0x0806B3AC + push {r4, r5, r6, lr} + movs r6, #0 +_0806B3B0: + movs r4, #0 + lsls r5, r6, #0x18 +_0806B3B4: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r5, #0x18 + movs r2, #0xb + bl sub_080D15D0 + cmp r0, #0 + bne _0806B3C8 + movs r0, #0 + b _0806B3D6 +_0806B3C8: + adds r4, #1 + cmp r4, #0x1d + ble _0806B3B4 + adds r6, #1 + cmp r6, #0xd + ble _0806B3B0 + movs r0, #1 +_0806B3D6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806B3AC + + thumb_func_start sub_0806B3DC +sub_0806B3DC: @ 0x0806B3DC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + movs r1, #0 + movs r7, #0xce + lsls r7, r7, #1 + ldr r5, _0806B400 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #1 + adds r2, r6, #0 + adds r3, r0, r5 +_0806B3F6: + cmp r4, r7 + bls _0806B404 + adds r0, r1, r5 + ldrb r0, [r0] + b _0806B406 + .align 2, 0 +_0806B400: .4byte gUnknown_82EA31C +_0806B404: + ldrb r0, [r3] +_0806B406: + strb r0, [r2] + ldrb r0, [r2] + cmp r0, #0xff + beq _0806B418 + adds r2, #1 + adds r3, #1 + adds r1, #1 + cmp r1, #0xa + ble _0806B3F6 +_0806B418: + adds r1, r6, r1 + movs r0, #0xff + strb r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0806B3DC + + thumb_func_start sub_0806B424 +sub_0806B424: @ 0x0806B424 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, _0806B464 + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r4 + ldrb r4, [r3, #4] + ldr r0, _0806B468 + adds r0, r2, r0 + ldrb r3, [r0] + ands r3, r1 + lsls r2, r2, #1 + asrs r3, r2 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + muls r0, r4, r0 + movs r1, #0x64 + bl __divsi3 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806B464: .4byte gUnknown_82ED220 +_0806B468: .4byte gUnknown_82FA6AA + thumb_func_end sub_0806B424 + + thumb_func_start sub_0806B46C +sub_0806B46C: @ 0x0806B46C + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + ldr r1, _0806B4A4 + adds r4, 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_0806A774 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0806B4A4: .4byte gUnknown_82FA6AE + thumb_func_end sub_0806B46C + + thumb_func_start sub_0806B4A8 +sub_0806B4A8: @ 0x0806B4A8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, #0x3b + ldr r2, _0806B4BC + adds r1, r1, r2 + ldrb r2, [r0] + ldrb r1, [r1] + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_0806B4BC: .4byte gUnknown_82FA6AE + thumb_func_end sub_0806B4A8 + + thumb_func_start sub_0806B4C0 +sub_0806B4C0: @ 0x0806B4C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r0, #0x64 + mov r5, sb + muls r5, r0, r5 + ldr r0, _0806B7AC + adds r5, r5, r0 + adds r0, r5, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, _0806B7B0 + mov r8, r1 + movs r1, #0x58 + ldr r2, [sp, #0x14] + adds r4, r2, #0 + muls r4, r1, r4 + mov r3, r8 + adds r6, r4, r3 + strh r0, [r6] + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + strh r0, [r6, #0x2e] + movs r6, #0 + mov r0, r8 + adds r0, #0x24 + adds r7, r4, r0 +_0806B512: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r5, #0 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xc + add r1, r8 + mov sl, r1 + adds r1, r4, r1 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r5, #0 + movs r2, #0 + bl sub_0806A058 + strb r0, [r7] + adds r7, #1 + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0806B512 + movs r0, #0x64 + mov r4, sb + muls r4, r0, r4 + ldr r0, _0806B7AC + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + movs r2, #0xc + rsbs r2, r2, #0 + add r2, sl + mov sb, r2 + movs r1, #0x58 + ldr r3, [sp, #0x14] + adds r5, r3, #0 + muls r5, r1, r5 + 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_0806A058 + adds r1, r7, #0 + adds r1, #0x2b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A058 + mov r1, sl + adds r1, #0x38 + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + movs r2, #0 + bl sub_0806A058 + movs r6, #0x1f + ands r0, r6 + ldrb r2, [r7, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0 + bl sub_0806A058 + movs r1, #0x1f + mov r8, r1 + mov r2, r8 + ands r0, r2 + lsls r0, r0, #5 + ldrh r2, [r7, #0x14] + ldr r1, _0806B7B4 + ands r1, r2 + orrs r1, r0 + strh r1, [r7, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + movs r2, #0 + bl sub_0806A058 + ands r0, r6 + lsls r0, r0, #2 + ldrb r2, [r7, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + movs r2, #0 + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [r7, #0x14] + ldr r2, _0806B7B8 + ands r0, r2 + orrs r0, r1 + str r0, [r7, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + movs r2, #0 + bl sub_0806A058 + mov r3, r8 + ands r0, r3 + lsls r0, r0, #4 + ldrh r2, [r7, #0x16] + ldr r1, _0806B7BC + ands r1, r2 + orrs r1, r0 + strh r1, [r7, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + movs r2, #0 + bl sub_0806A058 + ands r0, r6 + lsls r0, r0, #1 + ldrb r2, [r7, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #0x17] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov r1, sl + adds r1, #0x3c + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, #0 + movs r1, #0x37 + movs r2, #0 + bl sub_0806A058 + mov r1, sl + adds r1, #0x40 + adds r1, r5, r1 + str r0, [r1] + adds r0, r4, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + adds r1, r7, #0 + adds r1, #0x2a + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x3d + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #6] + adds r0, r4, #0 + movs r1, #0x3e + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #8] + adds r0, r4, #0 + movs r1, #0x3f + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + movs r2, #0 + bl sub_0806A058 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r7, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_0806A058 + lsls r0, 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, #1 + movs r2, #0 + bl sub_0806A058 + mov r1, sl + adds r1, #0x48 + adds r1, r5, r1 + str r0, [r1] + ldr r2, _0806B7C0 + ldrh r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #6] + adds r1, r7, #0 + adds r1, #0x21 + strb r0, [r1] + ldrh r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #7] + adds r1, r7, #0 + adds r1, #0x22 + strb r0, [r1] + ldrh r0, [r7] + ldrb r1, [r7, #0x17] + lsrs r1, r1, #7 + bl sub_0806B15C + adds r1, r7, #0 + adds r1, #0x20 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sl + adds r0, #0x24 + adds r0, r5, r0 + mov r1, sp + bl sub_08008828 + mov r2, sl + adds r2, #0x30 + adds r2, r5, r2 + adds r0, r4, #0 + movs r1, #7 + bl sub_0806A058 + ldr r0, [sp, #0x14] + bl sub_080A62F8 + ldr r1, _0806B7C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, #0xa8 + ldr r1, [r1] + adds r1, r1, r0 + ldrh r0, [r7, #0x28] + strh r0, [r1] + movs r2, #6 + mov r1, sb + movs r6, #7 + add r5, sl + adds r0, r5, #0 + adds r0, #0x13 +_0806B776: + strb r2, [r0] + subs r0, #1 + subs r6, #1 + cmp r6, #0 + bge _0806B776 + movs r2, #0 + movs r0, #0x58 + ldr r3, [sp, #0x14] + muls r0, r3, r0 + adds r1, #0x50 + adds r0, r0, r1 + str r2, [r0] + ldr r0, [sp, #0x14] + bl sub_0803F6B0 + ldr r0, [sp, #0x14] + movs r1, #0 + bl sub_0805EBA0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806B7AC: .4byte gUnknown_2024190 +_0806B7B0: .4byte gUnknown_2023D28 +_0806B7B4: .4byte 0xFFFFFC1F +_0806B7B8: .4byte 0xFFF07FFF +_0806B7BC: .4byte 0xFFFFFE0F +_0806B7C0: .4byte gUnknown_82F0D54 +_0806B7C4: .4byte gUnknown_2024140 + thumb_func_end sub_0806B4C0 + + thumb_func_start sub_0806B7C8 +sub_0806B7C8: @ 0x0806B7C8 + push {r4, lr} + sub sp, #4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r4, #0 + str r4, [sp] + bl sub_0806B7EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806B7C8 + + thumb_func_start sub_0806B7EC +sub_0806B7EC: @ 0x0806B7EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x44 + mov r8, r0 + ldr r0, [sp, #0x64] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0xc] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + movs r0, #1 + str r0, [sp, #0x20] + movs r1, #6 + str r1, [sp, #0x28] + movs r2, #0 + str r2, [sp, #0x30] + movs r3, #4 + str r3, [sp, #0x38] + movs r5, #0 + str r5, [sp, #0x3c] + mov r0, r8 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0806B880 + ldr r0, _0806B85C + ldr r1, _0806B860 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806B86C + ldr r2, _0806B864 + ldr r0, _0806B868 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #7] + b _0806B888 + .align 2, 0 +_0806B85C: .4byte gUnknown_3002360 +_0806B860: .4byte 0x00000439 +_0806B864: .4byte gUnknown_20240A8 +_0806B868: .4byte gUnknown_202415C +_0806B86C: + ldr r0, _0806B878 + ldr r0, [r0] + ldr r2, _0806B87C + adds r0, r0, r2 + ldrb r0, [r0] + b _0806B888 + .align 2, 0 +_0806B878: .4byte gUnknown_3005AEC +_0806B87C: .4byte 0x00003226 +_0806B880: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806B888: + str r0, [sp, #0x34] + ldr r1, _0806B8E4 + ldr r0, _0806B8E8 + ldrb r2, [r0] + strb r2, [r1] + ldr r0, _0806B8EC + ldr r3, _0806B8F0 + adds r0, r0, r3 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0806B928 + ldr r0, _0806B8F4 + strb r2, [r0] + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [sp, #0x1c] + ldr r0, _0806B8F8 + ldr r4, [sp, #0xc] + subs r4, #0xd + ldrb r0, [r0] + cmp r1, r0 + bge _0806B934 + ldr r2, _0806B8FC + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r3, [r0] + ldr r5, [sp, #0x10] + lsls r0, r5, #0x10 + lsrs r1, r0, #0x10 + adds r5, r0, #0 + cmp r3, r1 + bne _0806B900 + ldr r0, [sp, #0x1c] + str r0, [sp, #0x38] + b _0806B934 + .align 2, 0 +_0806B8E4: .4byte gUnknown_2023EB3 +_0806B8E8: .4byte gUnknown_202415C +_0806B8EC: .4byte gUnknown_3002360 +_0806B8F0: .4byte 0x00000439 +_0806B8F4: .4byte gUnknown_2023D08 +_0806B8F8: .4byte gUnknown_2023D10 +_0806B8FC: .4byte gUnknown_2023D12 +_0806B900: + ldr r1, [sp, #0x1c] + adds r1, #2 + str r1, [sp, #0x1c] + ldr r0, _0806B924 + ldrb r0, [r0] + cmp r1, r0 + bge _0806B934 + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r1, [r0] + lsrs r0, r5, #0x10 + cmp r1, r0 + bne _0806B900 + ldr r2, [sp, #0x1c] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x38] + b _0806B934 + .align 2, 0 +_0806B924: .4byte gUnknown_2023D10 +_0806B928: + ldr r0, _0806B950 + strb r1, [r0] + movs r3, #4 + str r3, [sp, #0x38] + ldr r4, [sp, #0xc] + subs r4, #0xd +_0806B934: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xa5 + bhi _0806B9B4 + ldr r1, _0806B954 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _0806B958 + ldr r5, [sp, #0xc] + cmp r5, #0xaf + beq _0806B95E + b _0806B9B4 + .align 2, 0 +_0806B950: .4byte gUnknown_2023D08 +_0806B954: .4byte gUnknown_82EEF14 +_0806B958: + ldr r1, [sp, #0xc] + cmp r1, #0xaf + bne _0806B9BA +_0806B95E: + ldr r0, _0806B980 + ldr r2, _0806B984 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806B990 + ldr r0, _0806B988 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0806B98C + adds r0, r0, r1 + b _0806B9BA + .align 2, 0 +_0806B980: .4byte gUnknown_3002360 +_0806B984: .4byte 0x00000439 +_0806B988: .4byte gUnknown_2023D08 +_0806B98C: .4byte gUnknown_20240B0 +_0806B990: + ldr r0, _0806B99C + ldr r0, [r0] + ldr r3, _0806B9A0 + adds r3, r0, r3 + str r3, [sp, #0x24] + b _0806B9BC + .align 2, 0 +_0806B99C: .4byte gUnknown_3005AEC +_0806B9A0: .4byte 0x00003214 + thumb_func_end sub_0806B7EC + + thumb_func_start sub_0806B9A4 +sub_0806B9A4: @ 0x0806B9A4 + mov r0, r8 + movs r2, #0 + ldr r3, [sp, #0x10] + bl sub_0813DB44 + movs r0, #0 + bl sub_0806C820 +_0806B9B4: + movs r0, #1 + bl sub_0806C820 +_0806B9BA: + str r0, [sp, #0x24] +_0806B9BC: + movs r5, #0 + str r5, [sp, #0x1c] + thumb_func_end sub_0806B9A4 + + thumb_func_start sub_0806B9C0 +sub_0806B9C0: @ 0x0806B9C0 + ldr r0, [sp, #0x1c] + cmp r0, #5 + bls _0806B9CA + bl _0806C810 +_0806B9CA: + lsls r0, r0, #2 + ldr r1, _0806B9D4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806B9D4: .4byte _0806B9D8 +_0806B9D8: @ jump table + .4byte _0806B9F0 @ case 0 + .4byte _0806BAC0 @ case 1 + .4byte _0806BB50 @ case 2 + .4byte _0806BBE4 @ case 3 + .4byte _0806BDC4 @ case 4 + .4byte _0806C482 @ case 5 +_0806B9F0: + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x1c] + adds r2, r1, r3 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0806BA3A + ldr r0, _0806BAAC + ldr r5, _0806BAB0 + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806BA3A + ldr r0, [sp, #0x38] + cmp r0, #4 + beq _0806BA3A + ldr r1, _0806BAB4 + movs r0, #0x58 + ldr r2, [sp, #0x38] + muls r0, r2, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _0806BA3A + ldr r0, _0806BAB8 + ands r1, r0 + str r1, [r2] + movs r3, #0 + str r3, [sp, #0x20] +_0806BA3A: + ldrb r1, [r6] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _0806BA68 + ldr r1, _0806BAB4 + ldr r0, _0806BABC + ldrb r2, [r0] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + bne _0806BA68 + orrs r1, r3 + str r1, [r2] + movs r5, #0 + str r5, [sp, #0x20] +_0806BA68: + ldrb r0, [r6] + movs r3, #0xf + ands r3, r0 + cmp r3, #0 + bne _0806BA76 + bl _0806C810 +_0806BA76: + ldr r6, _0806BAB4 + ldr r5, _0806BABC + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + adds r1, r0, r6 + ldrb r2, [r1, #0x19] + movs r0, #0x19 + ldrsb r0, [r1, r0] + cmp r0, #0xb + ble _0806BA90 + bl _0806C810 +_0806BA90: + adds r0, r2, r3 + strb r0, [r1, #0x19] + ldrb r0, [r5] + muls r0, r4, r0 + adds r1, r0, r6 + movs r0, #0x19 + ldrsb r0, [r1, r0] + cmp r0, #0xc + bgt _0806BAA4 + b _0806BBD4 +_0806BAA4: + movs r0, #0xc + strb r0, [r1, #0x19] + b _0806BBD4 + .align 2, 0 +_0806BAAC: .4byte gUnknown_3002360 +_0806BAB0: .4byte 0x00000439 +_0806BAB4: .4byte gUnknown_2023D28 +_0806BAB8: .4byte 0xFFF0FFFF +_0806BABC: .4byte gUnknown_2023D08 +_0806BAC0: + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x1c] + adds r2, r1, r3 + ldrb r1, [r2] + movs r0, #0xf0 + ands r0, r1 + lsls r3, r0, #0x18 + adds r6, r2, #0 + cmp r3, #0 + beq _0806BB06 + ldr r7, _0806BB48 + ldr r5, _0806BB4C + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + adds r1, r0, r7 + ldrb r2, [r1, #0x1a] + movs r0, #0x1a + ldrsb r0, [r1, r0] + cmp r0, #0xb + bgt _0806BB06 + lsrs r0, r3, #0x1c + adds r0, r2, r0 + strb r0, [r1, #0x1a] + ldrb r0, [r5] + muls r0, r4, r0 + adds r1, r0, r7 + movs r0, #0x1a + ldrsb r0, [r1, r0] + cmp r0, #0xc + ble _0806BB02 + movs r0, #0xc + strb r0, [r1, #0x1a] +_0806BB02: + movs r5, #0 + str r5, [sp, #0x20] +_0806BB06: + ldrb r0, [r6] + movs r3, #0xf + ands r3, r0 + cmp r3, #0 + bne _0806BB14 + bl _0806C810 +_0806BB14: + ldr r6, _0806BB48 + ldr r5, _0806BB4C + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + adds r1, r0, r6 + ldrb r2, [r1, #0x1b] + movs r0, #0x1b + ldrsb r0, [r1, r0] + cmp r0, #0xb + ble _0806BB2E + bl _0806C810 +_0806BB2E: + adds r0, r2, r3 + strb r0, [r1, #0x1b] + ldrb r0, [r5] + muls r0, r4, r0 + adds r1, r0, r6 + movs r0, #0x1b + ldrsb r0, [r1, r0] + cmp r0, #0xc + ble _0806BBD4 + movs r0, #0xc + strb r0, [r1, #0x1b] + b _0806BBD4 + .align 2, 0 +_0806BB48: .4byte gUnknown_2023D28 +_0806BB4C: .4byte gUnknown_2023D08 +_0806BB50: + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x1c] + adds r2, r1, r3 + ldrb r1, [r2] + movs r0, #0xf0 + ands r0, r1 + lsls r3, r0, #0x18 + adds r6, r2, #0 + cmp r3, #0 + beq _0806BB96 + ldr r7, _0806BBDC + ldr r5, _0806BBE0 + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + adds r1, r0, r7 + ldrb r2, [r1, #0x1e] + movs r0, #0x1e + ldrsb r0, [r1, r0] + cmp r0, #0xb + bgt _0806BB96 + lsrs r0, r3, #0x1c + adds r0, r2, r0 + strb r0, [r1, #0x1e] + ldrb r0, [r5] + muls r0, r4, r0 + adds r1, r0, r7 + movs r0, #0x1e + ldrsb r0, [r1, r0] + cmp r0, #0xc + ble _0806BB92 + movs r0, #0xc + strb r0, [r1, #0x1e] +_0806BB92: + movs r5, #0 + str r5, [sp, #0x20] +_0806BB96: + ldrb r0, [r6] + movs r3, #0xf + ands r3, r0 + cmp r3, #0 + bne _0806BBA4 + bl _0806C810 +_0806BBA4: + ldr r6, _0806BBDC + ldr r5, _0806BBE0 + ldrb r0, [r5] + movs r4, #0x58 + muls r0, r4, r0 + adds r1, r0, r6 + ldrb r2, [r1, #0x1c] + movs r0, #0x1c + ldrsb r0, [r1, r0] + cmp r0, #0xb + ble _0806BBBE + bl _0806C810 +_0806BBBE: + adds r0, r2, r3 + strb r0, [r1, #0x1c] + ldrb r0, [r5] + muls r0, r4, r0 + adds r1, r0, r6 + movs r0, #0x1c + ldrsb r0, [r1, r0] + cmp r0, #0xc + ble _0806BBD4 + movs r0, #0xc + strb r0, [r1, #0x1c] +_0806BBD4: + movs r0, #0 + str r0, [sp, #0x20] + bl _0806C810 + .align 2, 0 +_0806BBDC: .4byte gUnknown_2023D28 +_0806BBE0: .4byte gUnknown_2023D08 +_0806BBE4: + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x1c] + adds r2, r1, r3 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0806BC2C + ldr r5, _0806BDA0 + ldr r4, _0806BDA4 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _0806BC2C + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r0, #5 + strb r0, [r1, #4] + movs r5, #0 + str r5, [sp, #0x20] +_0806BC2C: + ldrb r1, [r6] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806BC8E + mov r0, r8 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0x64 + beq _0806BC8E + ldr r5, _0806BDA8 + mov r0, r8 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, #1 + lsls r4, r4, #2 + ldr r2, _0806BDAC + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r1, r0 + adds r4, r4, r0 + adds r4, r4, r5 + ldr r0, [r4] + str r0, [sp] + mov r0, r8 + movs r1, #0x19 + mov r2, sp + bl sub_0806A774 + mov r0, r8 + bl sub_0806884C + movs r0, #0 + str r0, [sp, #0x20] +_0806BC8E: + ldrb r1, [r6] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0806BCCA + mov r0, r8 + ldr r1, [sp, #0x10] + movs r2, #7 + ldr r3, [sp, #0x38] + bl sub_0806C830 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806BCCA + ldr r1, [sp, #0x38] + cmp r1, #4 + beq _0806BCC6 + ldr r1, _0806BDB0 + movs r0, #0x58 + ldr r3, [sp, #0x38] + adds r2, r3, #0 + muls r2, r0, r2 + adds r1, #0x50 + adds r2, r2, r1 + ldr r0, [r2] + ldr r1, _0806BDB4 + ands r0, r1 + str r0, [r2] +_0806BCC6: + movs r5, #0 + str r5, [sp, #0x20] +_0806BCCA: + ldrb r1, [r6] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0806BCEA + ldr r2, _0806BDB8 + mov r0, r8 + ldr r1, [sp, #0x10] + ldr r3, [sp, #0x38] + bl sub_0806C830 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806BCEA + movs r0, #0 + str r0, [sp, #0x20] +_0806BCEA: + ldrb r1, [r6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0806BD0A + mov r0, r8 + ldr r1, [sp, #0x10] + movs r2, #0x10 + ldr r3, [sp, #0x38] + bl sub_0806C830 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806BD0A + movs r1, #0 + str r1, [sp, #0x20] +_0806BD0A: + ldrb r1, [r6] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0806BD2A + mov r0, r8 + ldr r1, [sp, #0x10] + movs r2, #0x20 + ldr r3, [sp, #0x38] + bl sub_0806C830 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806BD2A + movs r2, #0 + str r2, [sp, #0x20] +_0806BD2A: + ldrb r1, [r6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806BD4A + mov r0, r8 + ldr r1, [sp, #0x10] + movs r2, #0x40 + ldr r3, [sp, #0x38] + bl sub_0806C830 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806BD4A + movs r3, #0 + str r3, [sp, #0x20] +_0806BD4A: + ldrb r1, [r6] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0806BD58 + bl _0806C810 +_0806BD58: + ldr r0, _0806BDBC + ldr r5, _0806BDC0 + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806BD6C + bl _0806C810 +_0806BD6C: + ldr r0, [sp, #0x38] + cmp r0, #4 + bne _0806BD76 + bl _0806C810 +_0806BD76: + ldr r1, _0806BDB0 + movs r0, #0x58 + ldr r2, [sp, #0x38] + muls r0, r2, r0 + adds r1, #0x50 + adds r2, r0, r1 + ldr r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0806BD90 + bl _0806C810 +_0806BD90: + movs r0, #8 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2] + movs r3, #0 + str r3, [sp, #0x20] + bl _0806C810 + .align 2, 0 +_0806BDA0: .4byte gUnknown_2023F38 +_0806BDA4: .4byte gUnknown_2023D08 +_0806BDA8: .4byte gUnknown_82F00B4 +_0806BDAC: .4byte gUnknown_82F0D54 +_0806BDB0: .4byte gUnknown_2023D28 +_0806BDB4: .4byte 0xF7FFFFFF +_0806BDB8: .4byte 0x00000F88 +_0806BDBC: .4byte gUnknown_3002360 +_0806BDC0: .4byte 0x00000439 +_0806BDC4: + ldr r5, [sp, #0x24] + ldr r1, [sp, #0x1c] + adds r0, r5, r1 + ldrb r0, [r0] + mov sl, r0 + movs r0, #0x20 + mov r2, sl + ands r0, r2 + cmp r0, #0 + beq _0806BE9C + movs r0, #0xdf + ands r2, r0 + mov sl, r2 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + ldr r1, _0806BEC8 + ldr r3, [sp, #0x14] + adds r1, r3, r1 + ldrb r1, [r1] + ands r0, r1 + lsls r1, r3, #1 + lsrs r0, r1 + str r0, [sp] + adds r5, r3, #0 + adds r5, #0xd + mov r0, r8 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp] + cmp r0, #2 + bhi _0806BE9C + ldr r0, [sp, #0x2c] + cmp r0, #4 + bls _0806BE9C + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + ldr r1, _0806BECC + ldr r2, [sp, #0x14] + adds r1, r2, r1 + ldrb r1, [r1] + adds r0, r0, r1 + str r0, [sp] + mov r0, r8 + movs r1, #0x15 + mov r2, sp + bl sub_0806A774 + mov r0, r8 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [sp, #0x2c] + subs r0, r0, r3 + str r0, [sp] + ldr r4, [sp, #0x14] + adds r4, #0x11 + mov r0, r8 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806A058 + ldr r1, [sp] + adds r0, r0, r1 + str r0, [sp] + mov r0, r8 + adds r1, r4, #0 + mov r2, sp + bl sub_0806A774 + movs r5, #0 + str r5, [sp, #0x20] +_0806BE9C: + movs r0, #0 + str r0, [sp, #0x2c] + mov r1, sl + cmp r1, #0 + bne _0806BEAA + bl _0806C810 +_0806BEAA: + movs r0, #1 + mov r2, sl + ands r0, r2 + cmp r0, #0 + bne _0806BEB6 + b _0806C46E +_0806BEB6: + ldr r3, [sp, #0x2c] + cmp r3, #7 + bls _0806BEBE + b _0806C46E +_0806BEBE: + lsls r0, r3, #2 + ldr r1, _0806BED0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806BEC8: .4byte gUnknown_82FA6AA +_0806BECC: .4byte gUnknown_82FA6B2 +_0806BED0: .4byte _0806BED4 +_0806BED4: @ jump table + .4byte _0806BEF4 @ case 0 + .4byte _0806BEF4 @ case 1 + .4byte _0806BFA0 @ case 2 + .4byte _0806C1C4 @ case 3 + .4byte _0806C46E @ case 4 + .4byte _0806C46E @ case 5 + .4byte _0806C46E @ case 6 + .4byte _0806C458 @ case 7 +_0806BEF4: + mov r0, r8 + bl sub_0806D720 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r5, [sp, #0x24] + ldr r1, [sp, #0x28] + adds r0, r5, r1 + ldrb r5, [r0] + ldr r0, _0806BF40 + ldr r2, [sp, #0x2c] + adds r0, r2, r0 + ldrb r1, [r0] + mov r0, r8 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + str r1, [sp, #4] + lsls r0, r5, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0 + ble _0806BF5C + ldr r0, _0806BF44 + cmp r6, r0 + bls _0806BF2A + b _0806B9B4 +_0806BF2A: + adds r3, r1, #0 + cmp r3, #0x63 + ble _0806BF32 + b _0806C46E +_0806BF32: + adds r1, r3, r2 + cmp r1, #0x64 + ble _0806BF48 + adds r0, r2, #0 + adds r0, #0x64 + subs r5, r0, r1 + b _0806BF4A + .align 2, 0 +_0806BF40: .4byte gUnknown_82FA84E +_0806BF44: .4byte 0x000001FD +_0806BF48: + adds r5, r2, #0 +_0806BF4A: + adds r1, r6, r5 + movs r0, #0xff + lsls r0, r0, #1 + cmp r1, r0 + bls _0806BF58 + adds r0, r5, r0 + subs r5, r0, r1 +_0806BF58: + adds r0, r3, r5 + b _0806BF76 +_0806BF5C: + cmp r1, #0 + bne _0806BF6C + movs r3, #1 + str r3, [sp, #0x3c] + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + b _0806C302 +_0806BF6C: + adds r0, r1, r2 + str r0, [sp, #4] + cmp r0, #0 + bge _0806BF78 + movs r0, #0 +_0806BF76: + str r0, [sp, #4] +_0806BF78: + ldr r0, _0806BF9C + ldr r5, [sp, #0x2c] + adds r0, r5, r0 + ldrb r1, [r0] + add r2, sp, #4 + mov r0, r8 + bl sub_0806A774 + mov r0, r8 + bl sub_0806884C + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + b _0806C43C + .align 2, 0 +_0806BF9C: .4byte gUnknown_82FA84E +_0806BFA0: + movs r0, #0x10 + mov r1, sl + ands r0, r1 + cmp r0, #0 + beq _0806C060 + mov r0, r8 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806BFC0 + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + b _0806C302 +_0806BFC0: + ldr r0, _0806C008 + ldr r2, _0806C00C + adds r0, r0, r2 + ldrb r1, [r0] + movs r4, #2 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806C076 + ldr r3, [sp, #0x38] + cmp r3, #4 + beq _0806C020 + ldr r2, _0806C010 + ldr r1, _0806C014 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldr r1, _0806C018 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081B8C8C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, [sp, #0x38] + bl sub_0806B4C0 + ldr r0, _0806C01C + ldrb r0, [r0] + b _0806C038 + .align 2, 0 +_0806C008: .4byte gUnknown_3002360 +_0806C00C: .4byte 0x00000439 +_0806C010: .4byte gUnknown_2023EB4 +_0806C014: .4byte gUnknown_82FACB4 +_0806C018: .4byte gUnknown_2023D12 +_0806C01C: .4byte gUnknown_2023D08 +_0806C020: + ldr r3, _0806C050 + ldr r1, _0806C054 + ldr r2, _0806C058 + ldrb r0, [r2] + eors r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldrb r0, [r3] + bics r0, r1 + strb r0, [r3] + ldrb r0, [r2] +_0806C038: + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806C076 + ldr r1, _0806C05C + ldrb r0, [r1, #4] + cmp r0, #0xfe + bhi _0806C076 + adds r0, #1 + strb r0, [r1, #4] + b _0806C076 + .align 2, 0 +_0806C050: .4byte gUnknown_2023EB4 +_0806C054: .4byte gUnknown_82FACB4 +_0806C058: .4byte gUnknown_2023D08 +_0806C05C: .4byte gUnknown_3005A70 +_0806C060: + mov r0, r8 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806C076 + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + b _0806C302 +_0806C076: + ldr r1, [sp, #0x28] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + ldr r5, [sp, #0x24] + adds r1, r5, r1 + ldrb r1, [r1] + str r1, [sp] + adds r0, r1, #0 + cmp r0, #0xfe + beq _0806C0B8 + cmp r0, #0xfe + bhi _0806C098 + cmp r0, #0xfd + beq _0806C0CE + b _0806C0D6 +_0806C098: + cmp r1, #0xff + bne _0806C0D6 + mov r0, r8 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + subs r4, r4, r0 + str r4, [sp] + b _0806C0D6 +_0806C0B8: + mov r0, r8 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + lsrs r0, r0, #1 + str r0, [sp] + cmp r0, #0 + bne _0806C0D6 + movs r0, #1 + b _0806C0D4 +_0806C0CE: + ldr r0, _0806C190 + adds r0, #0x23 + ldrb r0, [r0] +_0806C0D4: + str r0, [sp] +_0806C0D6: + mov r0, r8 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + beq _0806C1B4 + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0806C1A8 + mov r0, r8 + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + ldr r1, [sp] + adds r0, r0, r1 + str r0, [sp] + mov r0, r8 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + ldr r1, [sp] + cmp r1, r0 + bls _0806C122 + mov r0, r8 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + str r0, [sp] +_0806C122: + mov r0, r8 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + ldr r0, _0806C194 + ldr r1, _0806C198 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806C1B0 + ldr r2, [sp, #0x38] + cmp r2, #4 + beq _0806C1B0 + ldr r1, _0806C19C + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldr r1, [sp] + strh r1, [r0, #0x28] + movs r0, #0x10 + mov r3, sl + ands r0, r3 + cmp r0, #0 + bne _0806C1B0 + ldr r4, _0806C1A0 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806C1B0 + ldr r1, _0806C1A4 + ldrb r0, [r1, #3] + cmp r0, #0xfe + bhi _0806C172 + adds r0, #1 + strb r0, [r1, #3] +_0806C172: + ldrb r5, [r4] + add r0, sp, #0x38 + ldrb r0, [r0] + strb r0, [r4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_0803374C + ldrb r0, [r4] + bl sub_0803F440 + strb r5, [r4] + b _0806C1B0 + .align 2, 0 +_0806C190: .4byte gUnknown_2024118 +_0806C194: .4byte gUnknown_3002360 +_0806C198: .4byte 0x00000439 +_0806C19C: .4byte gUnknown_2023D28 +_0806C1A0: .4byte gUnknown_2023D08 +_0806C1A4: .4byte gUnknown_3005A70 +_0806C1A8: + ldr r1, _0806C1C0 + ldr r0, [sp] + rsbs r0, r0, #0 + str r0, [r1] +_0806C1B0: + movs r1, #0 + str r1, [sp, #0x20] +_0806C1B4: + movs r0, #0xef + mov r2, sl + ands r2, r0 + mov sl, r2 + b _0806C46E + .align 2, 0 +_0806C1C0: .4byte gUnknown_2023E94 +_0806C1C4: + movs r7, #2 + mov r0, sl + ands r0, r7 + cmp r0, #0 + beq _0806C1D0 + b _0806C31C +_0806C1D0: + movs r5, #0 + ldr r3, [sp, #0x28] + adds r3, #1 + str r3, [sp, #0x40] +_0806C1D8: + movs r0, #0x11 + adds r0, r0, r5 + mov sb, r0 + mov r0, r8 + mov r1, sb + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + adds r7, r5, #0 + adds r7, #0xd + mov r0, r8 + adds r1, r7, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r5, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + adds r2, r6, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [sp] + cmp r1, r0 + beq _0806C2F6 + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + 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_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + adds r2, r6, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [sp] + cmp r1, r0 + bls _0806C290 + mov r0, r8 + adds r1, r7, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + adds r2, r6, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] +_0806C290: + mov r0, r8 + mov r1, sb + mov r2, sp + bl sub_0806A774 + ldr r0, _0806C308 + ldr r1, _0806C30C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806C2F2 + ldr r2, [sp, #0x38] + cmp r2, #4 + beq _0806C2F2 + ldr r4, _0806C310 + movs r0, #0x58 + adds r3, r2, #0 + muls r3, r0, r3 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0xe + ands r1, r0 + cmp r1, #0 + bne _0806C2F2 + ldr r1, _0806C314 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0806C318 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0806C2F2 + adds r0, r5, r3 + adds r1, r4, #0 + adds r1, #0x24 + adds r0, r0, r1 + ldr r1, [sp] + strb r1, [r0] +_0806C2F2: + movs r3, #0 + str r3, [sp, #0x20] +_0806C2F6: + adds r5, #1 + cmp r5, #3 + bgt _0806C2FE + b _0806C1D8 +_0806C2FE: + ldr r5, [sp, #0x40] + lsls r0, r5, #0x18 +_0806C302: + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + b _0806C46E + .align 2, 0 +_0806C308: .4byte gUnknown_3002360 +_0806C30C: .4byte 0x00000439 +_0806C310: .4byte gUnknown_2023D28 +_0806C314: .4byte gUnknown_2023F60 +_0806C318: .4byte gUnknown_82FACB4 +_0806C31C: + ldr r6, [sp, #0x14] + adds r6, #0x11 + mov r0, r8 + adds r1, r6, #0 + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + ldr r5, [sp, #0x14] + adds r5, #0xd + mov r0, r8 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp] + cmp r2, r0 + bne _0806C364 + b _0806C46E +_0806C364: + ldr r1, [sp, #0x28] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + 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_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [sp] + cmp r1, r0 + bls _0806C3D8 + mov r0, r8 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] +_0806C3D8: + mov r0, r8 + adds r1, r6, #0 + mov r2, sp + bl sub_0806A774 + ldr r0, _0806C444 + ldr r1, _0806C448 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0806C43C + ldr r2, [sp, #0x38] + cmp r2, #4 + beq _0806C43C + ldr r4, _0806C44C + movs r0, #0x58 + adds r3, r2, #0 + muls r3, r0, r3 + adds r0, r4, #0 + adds r0, #0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0806C43C + ldr r1, _0806C450 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _0806C454 + ldr r5, [sp, #0x14] + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0806C43C + adds r0, r5, r3 + adds r1, r4, #0 + adds r1, #0x24 + adds r0, r0, r1 + ldr r1, [sp] + strb r1, [r0] +_0806C43C: + movs r0, #0 + str r0, [sp, #0x20] + b _0806C46E + .align 2, 0 +_0806C444: .4byte gUnknown_3002360 +_0806C448: .4byte 0x00000439 +_0806C44C: .4byte gUnknown_2023D28 +_0806C450: .4byte gUnknown_2023F60 +_0806C454: .4byte gUnknown_82FACB4 +_0806C458: + mov r0, r8 + movs r1, #2 + ldr r2, [sp, #0xc] + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0806C46E + bl sub_0806B9A4 +_0806C46E: + ldr r1, [sp, #0x2c] + adds r1, #1 + str r1, [sp, #0x2c] + mov r2, sl + lsrs r2, r2, #1 + mov sl, r2 + cmp r2, #0 + beq _0806C480 + b _0806BEAA +_0806C480: + b _0806C810 +_0806C482: + ldr r3, [sp, #0x24] + ldr r5, [sp, #0x1c] + adds r0, r3, r5 + ldrb r0, [r0] + mov sl, r0 + movs r0, #0 + str r0, [sp, #0x2c] + mov r1, sl + cmp r1, #0 + bne _0806C498 + b _0806C810 +_0806C498: + movs r0, #1 + mov r2, sl + ands r0, r2 + cmp r0, #0 + bne _0806C4A4 + b _0806C7FE +_0806C4A4: + ldr r3, [sp, #0x2c] + cmp r3, #7 + bls _0806C4AC + b _0806C7FE +_0806C4AC: + lsls r0, r3, #2 + ldr r1, _0806C4B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806C4B8: .4byte _0806C4BC +_0806C4BC: @ jump table + .4byte _0806C4DC @ case 0 + .4byte _0806C4DC @ case 1 + .4byte _0806C4DC @ case 2 + .4byte _0806C4DC @ case 3 + .4byte _0806C57C @ case 4 + .4byte _0806C658 @ case 5 + .4byte _0806C6C4 @ case 6 + .4byte _0806C72C @ case 7 +_0806C4DC: + mov r0, r8 + bl sub_0806D720 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r5, [sp, #0x24] + ldr r1, [sp, #0x28] + adds r0, r5, r1 + ldrb r5, [r0] + ldr r0, _0806C52C + ldr r4, [sp, #0x2c] + adds r4, #2 + adds r0, r4, r0 + ldrb r1, [r0] + mov r0, r8 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + str r1, [sp, #4] + lsls r0, r5, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0 + ble _0806C548 + ldr r0, _0806C530 + cmp r6, r0 + bls _0806C516 + bl _0806B9B4 +_0806C516: + adds r3, r1, #0 + cmp r3, #0x63 + ble _0806C51E + b _0806C7FE +_0806C51E: + adds r1, r3, r2 + cmp r1, #0x64 + ble _0806C534 + adds r0, r2, #0 + adds r0, #0x64 + subs r5, r0, r1 + b _0806C536 + .align 2, 0 +_0806C52C: .4byte gUnknown_82FA84E +_0806C530: .4byte 0x000001FD +_0806C534: + adds r5, r2, #0 +_0806C536: + adds r1, r6, r5 + movs r0, #0xff + lsls r0, r0, #1 + cmp r1, r0 + bls _0806C544 + adds r0, r5, r0 + subs r5, r0, r1 +_0806C544: + adds r0, r3, r5 + b _0806C55C +_0806C548: + cmp r1, #0 + bne _0806C552 + movs r2, #1 + str r2, [sp, #0x3c] + b _0806C7F4 +_0806C552: + adds r0, r1, r2 + str r0, [sp, #4] + cmp r0, #0 + bge _0806C55E + movs r0, #0 +_0806C55C: + str r0, [sp, #4] +_0806C55E: + ldr r0, _0806C578 + adds r0, r4, r0 + ldrb r1, [r0] + add r2, sp, #4 + mov r0, r8 + bl sub_0806A774 + mov r0, r8 + bl sub_0806884C + movs r3, #0 + str r3, [sp, #0x20] + b _0806C7F4 + .align 2, 0 +_0806C578: .4byte gUnknown_82FA84E +_0806C57C: + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + ldr r1, _0806C64C + ldr r5, [sp, #0x14] + adds r1, r5, r1 + ldrb r1, [r1] + ands r0, r1 + lsls r1, r5, #1 + lsrs r0, r1 + str r0, [sp] + adds r6, r5, #0 + adds r6, #0xd + mov r0, r8 + adds r1, r6, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [sp] + cmp r0, #2 + bls _0806C5CE + b _0806C7FE +_0806C5CE: + cmp r5, #4 + bhi _0806C5D4 + b _0806C7FE +_0806C5D4: + mov r0, r8 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + ldr r1, _0806C650 + ldr r2, [sp, #0x14] + adds r1, r2, r1 + ldrb r2, [r1] + ands r2, r0 + str r2, [sp] + ldr r0, _0806C654 + ldr r3, [sp, #0x14] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r2, r2, r0 + str r2, [sp] + mov r0, r8 + movs r1, #0x15 + mov r2, sp + bl sub_0806A774 + mov r0, r8 + adds r1, r6, #0 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, [sp, #0x14] + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, r0, r5 + str r0, [sp] + ldr r4, [sp, #0x14] + adds r4, #0x11 + mov r0, r8 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806A058 + ldr r1, [sp] + adds r0, r0, r1 + str r0, [sp] + mov r0, r8 + adds r1, r4, #0 + mov r2, sp + bl sub_0806A774 + movs r5, #0 + str r5, [sp, #0x20] + b _0806C7FE + .align 2, 0 +_0806C64C: .4byte gUnknown_82FA6AA +_0806C650: .4byte gUnknown_82FA6AE +_0806C654: .4byte gUnknown_82FA6B2 +_0806C658: + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0x63 + bls _0806C668 + b _0806C7F4 +_0806C668: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0806C676 + ldr r1, [sp, #0x3c] + cmp r1, #0 + bne _0806C676 + b _0806C7F4 +_0806C676: + bl sub_0806EB88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806C682 + b _0806C7F4 +_0806C682: + ldr r2, [sp, #0x30] + cmp r2, #0 + beq _0806C68A + b _0806C7F4 +_0806C68A: + ldr r3, [sp, #0x24] + ldr r5, [sp, #0x28] + adds r0, r3, r5 + ldrb r0, [r0] + str r0, [sp, #0x30] + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + str r5, [sp, #8] + ldr r0, [sp, #0x30] + lsls r4, r0, #0x18 + asrs r1, r4, #0x18 + cmp r1, #0 + ble _0806C790 + ldr r2, [sp, #0x34] + cmp r2, #0x1b + bne _0806C790 + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, r5, r0 + str r0, [sp, #8] + adds r2, r4, #0 + b _0806C79C +_0806C6C4: + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0x63 + bhi _0806C6D4 + b _0806C7F4 +_0806C6D4: + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0xc7 + bls _0806C6E4 + b _0806C7F4 +_0806C6E4: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0806C6F2 + ldr r1, [sp, #0x3c] + cmp r1, #0 + bne _0806C6F2 + b _0806C7F4 +_0806C6F2: + bl sub_0806EB88 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806C7F4 + ldr r2, [sp, #0x30] + cmp r2, #0 + bne _0806C7F4 + ldr r3, [sp, #0x24] + ldr r5, [sp, #0x28] + adds r0, r3, r5 + ldrb r0, [r0] + str r0, [sp, #0x30] + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + str r4, [sp, #8] + ldr r0, [sp, #0x30] + lsls r5, r0, #0x18 + asrs r1, r5, #0x18 + cmp r1, #0 + ble _0806C790 + ldr r2, [sp, #0x34] + cmp r2, #0x1b + beq _0806C77E + b _0806C790 +_0806C72C: + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0xc7 + bls _0806C7F4 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0806C746 + ldr r1, [sp, #0x3c] + cmp r1, #0 + beq _0806C7F4 +_0806C746: + bl sub_0806EB88 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806C7F4 + ldr r2, [sp, #0x30] + cmp r2, #0 + bne _0806C7F4 + ldr r3, [sp, #0x24] + ldr r5, [sp, #0x28] + adds r0, r3, r5 + ldrb r0, [r0] + str r0, [sp, #0x30] + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + str r4, [sp, #8] + ldr r0, [sp, #0x30] + lsls r5, r0, #0x18 + asrs r1, r5, #0x18 + cmp r1, #0 + ble _0806C790 + ldr r2, [sp, #0x34] + cmp r2, #0x1b + bne _0806C790 +_0806C77E: + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, r4, r0 + str r0, [sp, #8] + adds r2, r5, #0 + b _0806C79C +_0806C790: + ldr r3, [sp, #0x30] + lsls r2, r3, #0x18 + asrs r1, r2, #0x18 + ldr r0, [sp, #8] + adds r0, r0, r1 + str r0, [sp, #8] +_0806C79C: + cmp r2, #0 + ble _0806C7D2 + mov r0, r8 + movs r1, #0x26 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0xb + bne _0806C7B4 + ldr r0, [sp, #8] + adds r0, #1 + str r0, [sp, #8] +_0806C7B4: + mov r0, r8 + movs r1, #0x23 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + bl sub_080855C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0806C7D2 + ldr r0, [sp, #8] + adds r0, #1 + str r0, [sp, #8] +_0806C7D2: + ldr r0, [sp, #8] + cmp r0, #0 + bge _0806C7DC + movs r0, #0 + str r0, [sp, #8] +_0806C7DC: + ldr r0, [sp, #8] + cmp r0, #0xff + ble _0806C7E6 + movs r0, #0xff + str r0, [sp, #8] +_0806C7E6: + add r2, sp, #8 + mov r0, r8 + movs r1, #0x20 + bl sub_0806A774 + movs r5, #0 + str r5, [sp, #0x20] +_0806C7F4: + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] +_0806C7FE: + ldr r0, [sp, #0x2c] + adds r0, #1 + str r0, [sp, #0x2c] + mov r1, sl + lsrs r1, r1, #1 + mov sl, r1 + cmp r1, #0 + beq _0806C810 + b _0806C498 +_0806C810: + ldr r2, [sp, #0x1c] + adds r2, #1 + str r2, [sp, #0x1c] + cmp r2, #5 + bgt _0806C81E + bl sub_0806B9C0 +_0806C81E: + ldr r0, [sp, #0x20] + thumb_func_end sub_0806B9C0 + + thumb_func_start sub_0806C820 +sub_0806C820: @ 0x0806C820 + add sp, #0x44 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0806C820 + + thumb_func_start sub_0806C830 +sub_0806C830: @ 0x0806C830 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r4, r2, #0 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + movs r1, #0x37 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + str r1, [sp] + ands r0, r4 + cmp r0, #0 + beq _0806C894 + mvns r4, r4 + ands r1, r4 + str r1, [sp] + adds r0, r5, #0 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + ldr r0, _0806C888 + ldr r1, _0806C88C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806C882 + cmp r6, #4 + beq _0806C882 + ldr r0, _0806C890 + movs r1, #0x58 + muls r1, r6, r1 + adds r0, #0x4c + adds r1, r1, r0 + ldr r0, [r1] + ands r0, r4 + str r0, [r1] +_0806C882: + movs r0, #0 + b _0806C896 + .align 2, 0 +_0806C888: .4byte gUnknown_3002360 +_0806C88C: .4byte 0x00000439 +_0806C890: .4byte gUnknown_2023D28 +_0806C894: + movs r0, #1 +_0806C896: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806C830 + + thumb_func_start sub_0806C8A0 +sub_0806C8A0: @ 0x0806C8A0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r7, #6 + ldr r1, _0806C8C8 + adds r0, r3, #0 + subs r0, #0xd + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _0806C8CC + cmp r3, #0xaf + beq _0806C8D0 +_0806C8C4: + movs r0, #0 + b _0806C9E0 + .align 2, 0 +_0806C8C8: .4byte gUnknown_82EEF14 +_0806C8CC: + cmp r3, #0xaf + bne _0806C8DE +_0806C8D0: + ldr r0, _0806C8F0 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0806C8F4 + adds r0, r0, r1 +_0806C8DE: + mov ip, r0 + movs r2, #0 +_0806C8E2: + cmp r2, #4 + beq _0806C902 + cmp r2, #4 + ble _0806C8F8 + cmp r2, #5 + beq _0806C98C + b _0806C9D6 + .align 2, 0 +_0806C8F0: .4byte gUnknown_2023D08 +_0806C8F4: .4byte gUnknown_20240B0 +_0806C8F8: + cmp r2, #0 + blt _0806C9D6 + cmp r2, r4 + bne _0806C9D6 + b _0806C8C4 +_0806C902: + mov r0, ip + ldrb r3, [r0, #4] + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _0806C912 + movs r0, #0xdf + ands r3, r0 +_0806C912: + movs r6, #0 + cmp r3, #0 + beq _0806C9D6 +_0806C918: + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _0806C978 + cmp r6, #7 + bhi _0806C978 + lsls r0, r6, #2 + ldr r1, _0806C930 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806C930: .4byte _0806C934 +_0806C934: @ jump table + .4byte _0806C960 @ case 0 + .4byte _0806C960 @ case 1 + .4byte _0806C954 @ case 2 + .4byte _0806C960 @ case 3 + .4byte _0806C978 @ case 4 + .4byte _0806C978 @ case 5 + .4byte _0806C978 @ case 6 + .4byte _0806C974 @ case 7 +_0806C954: + movs r0, #0x10 + ands r0, r3 + cmp r0, #0 + beq _0806C960 + movs r0, #0xef + ands r3, r0 +_0806C960: + cmp r2, r4 + bne _0806C96C + adds r0, r3, #0 + ands r0, r5 + cmp r0, #0 + bne _0806C9DE +_0806C96C: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _0806C978 +_0806C974: + cmp r2, r4 + beq _0806C8C4 +_0806C978: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsrs r3, r3, #1 + cmp r2, r4 + bne _0806C986 + lsrs r5, r5, #1 +_0806C986: + cmp r3, #0 + bne _0806C918 + b _0806C9D6 +_0806C98C: + mov r0, ip + ldrb r3, [r0, #5] + movs r6, #0 +_0806C992: + cmp r3, #0 + beq _0806C9D6 + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _0806C9C6 + cmp r6, #0 + blt _0806C9C6 + cmp r6, #6 + ble _0806C9AC + cmp r6, #7 + beq _0806C9C0 + b _0806C9C6 +_0806C9AC: + cmp r2, r4 + bne _0806C9B8 + adds r0, r3, #0 + ands r0, r5 + cmp r0, #0 + bne _0806C9DE +_0806C9B8: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _0806C9C6 +_0806C9C0: + cmp r2, r4 + bne _0806C9C6 + b _0806C8C4 +_0806C9C6: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsrs r3, r3, #1 + cmp r2, r4 + bne _0806C992 + lsrs r5, r5, #1 + b _0806C992 +_0806C9D6: + adds r2, #1 + cmp r2, #5 + bgt _0806C9DE + b _0806C8E2 +_0806C9DE: + adds r0, r7, #0 +_0806C9E0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806C8A0 + + thumb_func_start sub_0806C9E8 +sub_0806C9E8: @ 0x0806C9E8 + push {lr} + ldr r2, _0806CA1C + ldr r1, _0806CA20 + ldrb r1, [r1] + strb r1, [r2] + ldr r3, _0806CA24 + ldr r2, _0806CA28 + ldr r1, _0806CA2C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r3, #0 + bl sub_080088B8 + ldr r0, _0806CA30 + ldr r1, _0806CA34 + bl sub_080088B8 + ldr r0, _0806CA38 + bl sub_0814E7A0 + pop {r0} + bx r0 + .align 2, 0 +_0806CA1C: .4byte gUnknown_2023EB0 +_0806CA20: .4byte gUnknown_202415C +_0806CA24: .4byte gUnknown_2022C0C +_0806CA28: .4byte gUnknown_85AB08C +_0806CA2C: .4byte gUnknown_82FA854 +_0806CA30: .4byte gUnknown_2022C1C +_0806CA34: .4byte gUnknown_85AA877 +_0806CA38: .4byte gUnknown_85AA894 + thumb_func_end sub_0806C9E8 + + thumb_func_start sub_0806CA3C +sub_0806CA3C: @ 0x0806CA3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0806CA90 + ldr r0, _0806CA6C + ldr r1, _0806CA70 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806CA7C + ldr r2, _0806CA74 + ldrb r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0806CA78 + adds r7, r0, r1 + b _0806CA9C + .align 2, 0 +_0806CA6C: .4byte gUnknown_3002360 +_0806CA70: .4byte 0x00000439 +_0806CA74: .4byte gUnknown_202415C +_0806CA78: .4byte gUnknown_20240B0 +_0806CA7C: + ldr r0, _0806CA88 + ldr r0, [r0] + ldr r1, _0806CA8C + adds r7, r0, r1 + b _0806CA9A + .align 2, 0 +_0806CA88: .4byte gUnknown_3005AEC +_0806CA8C: .4byte 0x00003214 +_0806CA90: + ldr r1, _0806CAD4 + subs r0, #0xd + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r7, [r0] +_0806CA9A: + ldr r2, _0806CAD8 +_0806CA9C: + ldr r1, _0806CADC + ldrb r0, [r2] + strb r0, [r1] + movs r5, #0 + ldr r0, _0806CAE0 + mov r8, r0 + movs r6, #0 +_0806CAAA: + adds r4, r7, r5 + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0806CABC + adds r0, r6, #0 + bl sub_0806C9E8 +_0806CABC: + ldrb r1, [r4] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _0806CAF2 + cmp r5, #0 + beq _0806CAE4 + adds r0, r6, #1 + bl sub_0806C9E8 + b _0806CAF2 + .align 2, 0 +_0806CAD4: .4byte gUnknown_82EEF14 +_0806CAD8: .4byte gUnknown_202415C +_0806CADC: .4byte gUnknown_2023EB3 +_0806CAE0: .4byte gUnknown_2023EAF +_0806CAE4: + ldr r0, _0806CB20 + ldrb r0, [r0] + mov r1, r8 + strb r0, [r1] + ldr r0, _0806CB24 + bl sub_0814E7A0 +_0806CAF2: + adds r6, #2 + adds r5, #1 + cmp r5, #2 + ble _0806CAAA + ldrb r1, [r7, #3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806CB12 + ldr r1, _0806CB28 + ldr r0, _0806CB20 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0806CB2C + bl sub_0814E7A0 +_0806CB12: + ldr r0, _0806CB30 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806CB20: .4byte gUnknown_202415C +_0806CB24: .4byte gUnknown_85A9D39 +_0806CB28: .4byte gUnknown_2023EAF +_0806CB2C: .4byte gUnknown_85A9D15 +_0806CB30: .4byte gUnknown_2022AE0 + thumb_func_end sub_0806CA3C + + thumb_func_start sub_0806CB34 +sub_0806CB34: @ 0x0806CB34 + push {lr} + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + movs r1, #0x19 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0806CB34 + + thumb_func_start sub_0806CB4C +sub_0806CB4C: @ 0x0806CB4C + push {lr} + movs r1, #0x19 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0806CB4C + + thumb_func_start sub_0806CB5C +sub_0806CB5C: @ 0x0806CB5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + movs r0, #0 + mov sl, r0 + mov r0, r8 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r0, r8 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + mov r0, r8 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x17 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + lsrs r4, r4, #0x10 + str r4, [sp, #0x10] + mov r0, sp + ldrh r0, [r0] + cmp r0, #0xaf + bne _0806CBD0 + ldr r0, _0806CBC8 + ldr r0, [r0] + ldr r1, _0806CBCC + adds r0, r0, r1 + ldrb r0, [r0] + b _0806CBD8 + .align 2, 0 +_0806CBC8: .4byte gUnknown_3005AEC +_0806CBCC: .4byte 0x00003226 +_0806CBD0: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806CBD8: + cmp r0, #0x26 + bne _0806CBE4 + cmp r5, #3 + beq _0806CBE4 + movs r0, #0 + b _0806CE74 +_0806CBE4: + cmp r5, #1 + bne _0806CBEA + b _0806CE04 +_0806CBEA: + cmp r5, #1 + bgt _0806CBF4 + cmp r5, #0 + beq _0806CC08 + b _0806CE72 +_0806CBF4: + cmp r5, #3 + ble _0806CBFA + b _0806CE72 +_0806CBFA: + movs r2, #0 + str r2, [sp, #4] + ldr r3, _0806CC04 + lsls r6, r7, #2 + b _0806CE52 + .align 2, 0 +_0806CC04: .4byte gUnknown_82F5CA4 +_0806CC08: + mov r0, r8 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, r8 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #4] + lsls r6, r7, #2 +_0806CC2E: + ldr r1, _0806CC54 + ldr r0, [sp, #4] + lsls r2, r0, #3 + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0] + subs r0, #1 + adds r3, r1, #0 + adds r4, r2, #0 + cmp r0, #0xe + bls _0806CC4A + b _0806CDF6 +_0806CC4A: + lsls r0, r0, #2 + ldr r1, _0806CC58 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806CC54: .4byte gUnknown_82F5CA4 +_0806CC58: .4byte _0806CC5C +_0806CC5C: @ jump table + .4byte _0806CC98 @ case 0 + .4byte _0806CCAA @ case 1 + .4byte _0806CCCC @ case 2 + .4byte _0806CCFC @ case 3 + .4byte _0806CDF6 @ case 4 + .4byte _0806CDF6 @ case 5 + .4byte _0806CDF6 @ case 6 + .4byte _0806CD0C @ case 7 + .4byte _0806CD36 @ case 8 + .4byte _0806CD60 @ case 9 + .4byte _0806CD8E @ case 10 + .4byte _0806CDAE @ case 11 + .4byte _0806CDD2 @ case 12 + .4byte _0806CDF6 @ case 13 + .4byte _0806CDE2 @ case 14 +_0806CC98: + ldr r1, [sp, #8] + cmp r1, #0xdb + bhi _0806CCA0 + b _0806CDF6 +_0806CCA0: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r0, r0, r3 + b _0806CCEC +_0806CCAA: + bl sub_0802F1EC + ldr r0, _0806CCC8 + ldrb r0, [r0, #2] + subs r0, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb + bls _0806CCBE + b _0806CDF6 +_0806CCBE: + ldr r2, [sp, #8] + cmp r2, #0xdb + bhi _0806CCC6 + b _0806CDF6 +_0806CCC6: + b _0806CCE2 + .align 2, 0 +_0806CCC8: .4byte gUnknown_3005A50 +_0806CCCC: + bl sub_0802F1EC + ldr r0, _0806CCF4 + ldrb r0, [r0, #2] + cmp r0, #0xb + bls _0806CCDA + b _0806CDF6 +_0806CCDA: + ldr r0, [sp, #8] + cmp r0, #0xdb + bhi _0806CCE2 + b _0806CDF6 +_0806CCE2: + ldr r1, _0806CCF8 + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r0, r0, r1 +_0806CCEC: + ldrh r0, [r0, #4] + mov sl, r0 + b _0806CDF6 + .align 2, 0 +_0806CCF4: .4byte gUnknown_3005A50 +_0806CCF8: .4byte gUnknown_82F5CA4 +_0806CCFC: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r1, r0, r3 + ldrh r0, [r1, #2] + cmp r0, sb + bhi _0806CDF6 + b _0806CDF2 +_0806CD0C: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r5, r0, r3 + ldrh r0, [r5, #2] + cmp r0, sb + bhi _0806CDF6 + mov r0, r8 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bls _0806CDF6 + b _0806CD88 +_0806CD36: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r5, r0, r3 + ldrh r0, [r5, #2] + cmp r0, sb + bhi _0806CDF6 + mov r0, r8 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bne _0806CDF6 + b _0806CD88 +_0806CD60: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r5, r0, r3 + ldrh r0, [r5, #2] + cmp r0, sb + bhi _0806CDF6 + mov r0, r8 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bhs _0806CDF6 +_0806CD88: + ldrh r5, [r5, #4] + mov sl, r5 + b _0806CDF6 +_0806CD8E: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r4, r0, r3 + ldrh r0, [r4, #2] + cmp r0, sb + bhi _0806CDF6 + ldr r0, [sp, #0x10] + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bhi _0806CDF6 + b _0806CDCC +_0806CDAE: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r4, r0, r3 + ldrh r0, [r4, #2] + cmp r0, sb + bhi _0806CDF6 + ldr r0, [sp, #0x10] + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bls _0806CDF6 +_0806CDCC: + ldrh r4, [r4, #4] + mov sl, r4 + b _0806CDF6 +_0806CDD2: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r1, r0, r3 + ldrh r0, [r1, #2] + cmp r0, sb + bhi _0806CDF6 + b _0806CDF2 +_0806CDE2: + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r4, r0 + adds r1, r0, r3 + ldrh r0, [r1, #2] + ldr r2, [sp, #0xc] + cmp r0, r2 + bhi _0806CDF6 +_0806CDF2: + ldrh r1, [r1, #4] + mov sl, r1 +_0806CDF6: + ldr r0, [sp, #4] + adds r0, #1 + str r0, [sp, #4] + cmp r0, #4 + bgt _0806CE02 + b _0806CC2E +_0806CE02: + b _0806CE72 +_0806CE04: + lsls r6, r7, #2 + ldr r1, _0806CE48 + adds r0, r6, r7 + lsls r0, r0, #3 + adds r4, r0, r1 + mov r5, sp + movs r1, #4 + str r1, [sp, #4] +_0806CE14: + ldrh r0, [r4] + cmp r0, #5 + beq _0806CE34 + cmp r0, #6 + bne _0806CE38 + ldrh r0, [r4, #2] + ldrh r1, [r5] + cmp r0, r1 + bne _0806CE38 + movs r0, #0 + strh r0, [r5] + mov r0, r8 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_0806CE34: + ldrh r2, [r4, #4] + mov sl, r2 +_0806CE38: + adds r4, #8 + ldr r0, [sp, #4] + subs r0, #1 + str r0, [sp, #4] + cmp r0, #0 + bge _0806CE14 + b _0806CE72 + .align 2, 0 +_0806CE48: .4byte gUnknown_82F5CA4 +_0806CE4C: + ldrh r1, [r1, #4] + mov sl, r1 + b _0806CE72 +_0806CE52: + adds r0, r6, r7 + ldr r1, [sp, #4] + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, #7 + bne _0806CE68 + ldrh r0, [r1, #2] + cmp r0, sb + beq _0806CE4C +_0806CE68: + ldr r2, [sp, #4] + adds r2, #1 + str r2, [sp, #4] + cmp r2, #4 + ble _0806CE52 +_0806CE72: + mov r0, sl +_0806CE74: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0806CB5C + + thumb_func_start sub_0806CE84 +sub_0806CE84: @ 0x0806CE84 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _0806CEC8 + movs r1, #0 + ldr r3, _0806CEC0 + ldrh r0, [r3] + cmp r0, r2 + beq _0806CEB0 + movs r4, #0xcd + lsls r4, r4, #1 +_0806CE9C: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + bhi _0806CEB0 + lsls r0, r1, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0806CE9C +_0806CEB0: + ldr r0, _0806CEC4 + cmp r1, r0 + beq _0806CEC8 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0806CECA + .align 2, 0 +_0806CEC0: .4byte gUnknown_82EE2D4 +_0806CEC4: .4byte 0x0000019B +_0806CEC8: + movs r0, #0 +_0806CECA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806CE84 + + thumb_func_start sub_0806CED0 +sub_0806CED0: @ 0x0806CED0 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _0806CF14 + movs r1, #0 + ldr r3, _0806CF0C + ldrh r0, [r3] + cmp r0, r2 + beq _0806CEFC + movs r4, #0xcd + lsls r4, r4, #1 +_0806CEE8: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + bhi _0806CEFC + lsls r0, r1, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0806CEE8 +_0806CEFC: + ldr r0, _0806CF10 + cmp r1, r0 + beq _0806CF14 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0806CF16 + .align 2, 0 +_0806CF0C: .4byte gUnknown_82EE60A +_0806CF10: .4byte 0x0000019B +_0806CF14: + movs r0, #0 +_0806CF16: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806CED0 + + thumb_func_start sub_0806CF1C +sub_0806CF1C: @ 0x0806CF1C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _0806CF60 + movs r1, #0 + ldr r3, _0806CF58 + ldrh r0, [r3] + cmp r0, r2 + beq _0806CF48 + movs r4, #0xcd + lsls r4, r4, #1 +_0806CF34: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + bhi _0806CF48 + lsls r0, r1, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _0806CF34 +_0806CF48: + ldr r0, _0806CF5C + cmp r1, r0 + beq _0806CF60 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0806CF62 + .align 2, 0 +_0806CF58: .4byte gUnknown_82EE940 +_0806CF5C: .4byte 0x0000019B +_0806CF60: + movs r0, #0 +_0806CF62: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806CF1C + + thumb_func_start sub_0806CF68 +sub_0806CF68: @ 0x0806CF68 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0806CF84 + ldr r0, _0806CF80 + subs r1, #1 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + b _0806CF86 + .align 2, 0 +_0806CF80: .4byte gUnknown_82EE60A +_0806CF84: + movs r0, #0 +_0806CF86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806CF68 + + thumb_func_start sub_0806CF8C +sub_0806CF8C: @ 0x0806CF8C + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0806CFA8 + ldr r0, _0806CFA4 + subs r1, #1 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + b _0806CFAA + .align 2, 0 +_0806CFA4: .4byte gUnknown_82EE2D4 +_0806CFA8: + movs r0, #0 +_0806CFAA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806CF8C + + thumb_func_start sub_0806CFB0 +sub_0806CFB0: @ 0x0806CFB0 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0806CFCC + ldr r0, _0806CFC8 + subs r1, #1 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + b _0806CFCE + .align 2, 0 +_0806CFC8: .4byte gUnknown_82EE940 +_0806CFCC: + movs r0, #0 +_0806CFCE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806CFB0 + + thumb_func_start sub_0806CFD4 +sub_0806CFD4: @ 0x0806CFD4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, #0 + cmp r0, #0xfa + bls _0806D002 + ldr r0, _0806CFF4 + cmp r1, r0 + bls _0806D000 + ldr r0, _0806CFF8 + ldr r2, _0806CFFC + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + b _0806D002 + .align 2, 0 +_0806CFF4: .4byte 0x00000113 +_0806CFF8: .4byte gUnknown_82EFFA4 +_0806CFFC: .4byte 0xFFFFFEEC +_0806D000: + movs r0, #0xc8 +_0806D002: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806CFD4 + + thumb_func_start sub_0806D008 +sub_0806D008: @ 0x0806D008 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r1, #0 + mov sl, r2 + lsls r0, r0, #0x10 + movs r1, #0x9a + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0806D116 + ldr r0, _0806D0D8 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp sl, r0 + beq _0806D116 + ldr r0, [r1, #0xc] + cmp sl, r0 + beq _0806D116 + movs r5, #0 +_0806D034: + lsls r3, r5, #3 + adds r3, r3, r5 + lsls r3, r3, #2 + ldr r0, _0806D0DC + adds r4, r3, r0 + ldrb r1, [r4] + adds r1, #0xf8 + movs r2, #0xf + adds r0, r6, #0 + ands r0, r2 + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov ip, r1 + ldrb r1, [r4, #1] + adds r1, #0xf8 + movs r0, #0xf0 + ands r0, r6 + lsrs r0, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + lsrs r6, r6, #8 + str r6, [sp, #4] + adds r5, #1 + str r5, [sp] + mov sb, r3 +_0806D06C: + lsls r0, r2, #1 + add r0, sb + ldr r3, _0806D0E0 + adds r0, r0, r3 + ldrh r3, [r0] + mov r4, ip + adds r0, r4, #0 + adds r0, #0x10 + adds r7, r1, #1 + adds r2, #1 + mov r8, r2 + cmp r4, r0 + bge _0806D104 + lsrs r0, r1, #3 + lsls r6, r0, #8 + movs r0, #7 + ands r1, r0 + lsls r5, r1, #2 +_0806D090: + adds r0, r4, #0 + cmp r4, #0 + bge _0806D098 + adds r0, r4, #7 +_0806D098: + asrs r0, r0, #3 + lsls r2, r0, #5 + add r2, sl + lsls r0, r0, #3 + subs r0, r4, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r2, r2, r0 + adds r2, r2, r6 + adds r2, r2, r5 + movs r1, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806D0F8 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0806D0E4 + ldrb r1, [r2] + movs r0, #0xf0 + ands r0, r1 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + bhi _0806D0F8 + adds r0, r1, #0 + adds r0, #0x40 + b _0806D0F6 + .align 2, 0 +_0806D0D8: .4byte gUnknown_2024178 +_0806D0DC: .4byte gUnknown_82EEC78 +_0806D0E0: .4byte gUnknown_82EEC7A +_0806D0E4: + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0806D0F8 + adds r0, r1, #4 +_0806D0F6: + strb r0, [r2] +_0806D0F8: + asrs r3, r3, #1 + adds r4, #1 + mov r0, ip + adds r0, #0x10 + cmp r4, r0 + blt _0806D090 +_0806D104: + lsls r0, r7, #0x18 + lsrs r1, r0, #0x18 + mov r2, r8 + cmp r2, #0xf + ble _0806D06C + ldr r6, [sp, #4] + ldr r5, [sp] + cmp r5, #3 + ble _0806D034 +_0806D116: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806D008 + + thumb_func_start sub_0806D128 +sub_0806D128: @ 0x0806D128 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r1, #0 + str r2, [sp] + lsls r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #0x9a + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0806D22A + cmp r3, #0 + beq _0806D22A + movs r6, #0 +_0806D14C: + lsls r3, r6, #3 + adds r3, r3, r6 + lsls r3, r3, #2 + ldr r0, _0806D1F0 + adds r4, r3, r0 + ldrb r1, [r4] + adds r1, #0xf8 + movs r2, #0xf + adds r0, r5, #0 + ands r0, r2 + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov ip, r1 + ldrb r1, [r4, #1] + adds r1, #0xf8 + movs r0, #0xf0 + ands r0, r5 + lsrs r0, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + lsrs r5, r5, #8 + str r5, [sp, #4] + adds r6, #1 + mov sl, r6 + mov sb, r3 +_0806D184: + lsls r0, r2, #1 + add r0, sb + ldr r3, _0806D1F4 + adds r0, r0, r3 + ldrh r3, [r0] + mov r4, ip + adds r0, r4, #0 + adds r0, #0x10 + adds r7, r1, #1 + adds r2, #1 + mov r8, r2 + cmp r4, r0 + bge _0806D218 + lsrs r0, r1, #3 + lsls r6, r0, #8 + movs r0, #7 + ands r1, r0 + lsls r5, r1, #2 +_0806D1A8: + adds r0, r4, #0 + cmp r4, #0 + bge _0806D1B0 + adds r0, r4, #7 +_0806D1B0: + asrs r0, r0, #3 + lsls r2, r0, #5 + ldr r1, [sp] + adds r2, r1, r2 + lsls r0, r0, #3 + subs r0, r4, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r2, r2, r0 + adds r2, r2, r6 + adds r2, r2, r5 + movs r1, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806D20C + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0806D1F8 + ldrb r1, [r2] + movs r0, #0xf0 + ands r0, r1 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + bhi _0806D20C + adds r0, r1, #0 + adds r0, #0x40 + b _0806D20A + .align 2, 0 +_0806D1F0: .4byte gUnknown_82EEC78 +_0806D1F4: .4byte gUnknown_82EEC7A +_0806D1F8: + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0806D20C + adds r0, r1, #4 +_0806D20A: + strb r0, [r2] +_0806D20C: + asrs r3, r3, #1 + adds r4, #1 + mov r0, ip + adds r0, #0x10 + cmp r4, r0 + blt _0806D1A8 +_0806D218: + lsls r0, r7, #0x18 + lsrs r1, r0, #0x18 + mov r2, r8 + cmp r2, #0xf + ble _0806D184 + ldr r5, [sp, #4] + mov r6, sl + cmp r6, #3 + ble _0806D14C +_0806D22A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806D128 + + thumb_func_start sub_0806D23C +sub_0806D23C: @ 0x0806D23C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r4, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r5, _0806D280 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A058 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #1 + ldr r4, _0806D284 + adds r0, r0, r4 + adds r1, r5, #0 + bl sub_0800895C + cmp r0, #0 + bne _0806D278 + lsls r2, r6, #1 + adds r2, r2, r6 + lsls r2, r2, #1 + adds r2, r2, r4 + adds r0, r7, #0 + movs r1, #2 + bl sub_0806A774 +_0806D278: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806D280: .4byte gUnknown_2021C40 +_0806D284: .4byte gUnknown_82EA31C + thumb_func_end sub_0806D23C + + thumb_func_start sub_0806D288 +sub_0806D288: @ 0x0806D288 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _0806D2B0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x18] + cmp r0, #2 + bgt _0806D2B4 + cmp r0, #1 + bge _0806D2BC + cmp r0, #0 + beq _0806D2B8 + b _0806D2BE + .align 2, 0 +_0806D2B0: .4byte gUnknown_20226A0 +_0806D2B4: + cmp r0, #3 + bne _0806D2BE +_0806D2B8: + movs r5, #0 + b _0806D2BE +_0806D2BC: + movs r5, #1 +_0806D2BE: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806D288 + + thumb_func_start sub_0806D2C8 +sub_0806D2C8: @ 0x0806D2C8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r2, _0806D2EC + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x18] + cmp r0, #2 + bgt _0806D2F0 + cmp r0, #1 + bge _0806D2F8 + cmp r0, #0 + beq _0806D2F4 + b _0806D2FA + .align 2, 0 +_0806D2EC: .4byte gUnknown_20226A0 +_0806D2F0: + cmp r0, #3 + bne _0806D2FA +_0806D2F4: + movs r3, #0 + b _0806D2FA +_0806D2F8: + movs r3, #1 +_0806D2FA: + adds r0, r3, #0 + pop {r1} + bx r1 + thumb_func_end sub_0806D2C8 + + thumb_func_start sub_0806D300 +sub_0806D300: @ 0x0806D300 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r1, _0806D30C + b _0806D318 + .align 2, 0 +_0806D30C: .4byte gUnknown_20226A0 +_0806D310: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bgt _0806D31E +_0806D318: + ldrh r0, [r1, #0x18] + cmp r0, r3 + bne _0806D310 +_0806D31E: + adds r0, r2, #0 + pop {r1} + bx r1 + thumb_func_end sub_0806D300 + + thumb_func_start sub_0806D324 +sub_0806D324: @ 0x0806D324 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806D33E + adds r0, r4, #0 + bl sub_081A9CB4 + b _0806D362 +_0806D33E: + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D35C + ldr r1, _0806D358 + lsls r0, r4, #5 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #0x7f + ands r0, r1 + b _0806D366 + .align 2, 0 +_0806D358: .4byte gUnknown_82E383C +_0806D35C: + adds r0, r5, #0 + bl sub_081D5D64 +_0806D362: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806D366: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0806D324 + + thumb_func_start sub_0806D36C +sub_0806D36C: @ 0x0806D36C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + cmp r2, #4 + bls _0806D38A + adds r0, r3, #0 + b _0806D3C6 +_0806D38A: + ldr r0, _0806D3AC + lsls r1, r4, #2 + adds r1, r1, r4 + subs r1, #1 + adds r1, r5, r1 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0806D3B0 + cmp r1, #1 + bne _0806D3C4 + movs r0, #0x6e + b _0806D3B2 + .align 2, 0 +_0806D3AC: .4byte gUnknown_82EF1A0 +_0806D3B0: + movs r0, #0x5a +_0806D3B2: + muls r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0806D3C6 +_0806D3C4: + adds r0, r3, #0 +_0806D3C6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0806D36C + + thumb_func_start sub_0806D3CC +sub_0806D3CC: @ 0x0806D3CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_0806EB88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806D3E2 + b _0806D556 +_0806D3E2: + adds r0, r7, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r7, #0 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0806D438 + ldr r0, _0806D418 + ldr r1, _0806D41C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806D424 + ldr r0, _0806D420 + ldrb r4, [r0, #7] + b _0806D440 + .align 2, 0 +_0806D418: .4byte gUnknown_3002360 +_0806D41C: .4byte 0x00000439 +_0806D420: .4byte gUnknown_20240A8 +_0806D424: + ldr r0, _0806D430 + ldr r0, [r0] + ldr r1, _0806D434 + adds r0, r0, r1 + ldrb r4, [r0] + b _0806D440 + .align 2, 0 +_0806D430: .4byte gUnknown_3005AEC +_0806D434: .4byte 0x00003226 +_0806D438: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0806D440: + cmp r6, #0 + bne _0806D446 + b _0806D556 +_0806D446: + movs r0, #0xce + lsls r0, r0, #1 + cmp r6, r0 + bne _0806D450 + b _0806D556 +_0806D450: + movs r6, #0 + adds r0, r7, #0 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x63 + ble _0806D46E + movs r6, #1 +_0806D46E: + cmp r0, #0xc7 + ble _0806D478 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0806D478: + cmp r5, #5 + bne _0806D488 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _0806D556 +_0806D488: + cmp r5, #3 + bne _0806D4B4 + ldr r0, _0806D560 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0806D556 + ldr r1, _0806D564 + ldr r0, _0806D568 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r1, [r0, #1] + adds r0, r1, #0 + subs r0, #0x1f + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0806D4B4 + cmp r1, #0x26 + bne _0806D556 +_0806D4B4: + ldr r1, _0806D56C + lsls r0, r5, #1 + adds r0, r0, r5 + adds r0, r6, r0 + adds r0, r0, r1 + ldrb r2, [r0] + movs r1, #0 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0806D4DA + cmp r4, #0x1b + bne _0806D4DA + movs r0, #0x96 + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_0806D4DA: + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, r0, r2 + mov r1, sp + strh r0, [r1] + cmp r2, #0 + ble _0806D52C + adds r0, r7, #0 + movs r1, #0x26 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0xb + bne _0806D508 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, #1 + mov r1, sp + strh r0, [r1] +_0806D508: + adds r0, r7, #0 + movs r1, #0x23 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + bl sub_080855C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0806D52C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, #1 + mov r1, sp + strh r0, [r1] +_0806D52C: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _0806D53C + movs r1, #0 + mov r0, sp + strh r1, [r0] +_0806D53C: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0xff + ble _0806D54C + movs r1, #0xff + mov r0, sp + strh r1, [r0] +_0806D54C: + adds r0, r7, #0 + movs r1, #0x20 + mov r2, sp + bl sub_0806A774 +_0806D556: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806D560: .4byte gUnknown_2022C90 +_0806D564: .4byte gUnknown_82E383C +_0806D568: .4byte gUnknown_203886A +_0806D56C: .4byte gUnknown_82FA85A + thumb_func_end sub_0806D3CC + + thumb_func_start sub_0806D570 +sub_0806D570: @ 0x0806D570 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 + movs r7, #0 + movs r6, #0 +_0806D584: + adds r1, r6, #0 + adds r1, #0x1a + mov r0, r8 + movs r2, #0 + bl sub_0806A058 + mov r2, sp + adds r1, r2, r6 + strb r0, [r1] + ldrb r0, [r1] + adds r0, r7, r0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r6, #1 + cmp r6, #5 + ble _0806D584 + movs r6, #0 + b _0806D706 +_0806D5A8: + mov r0, r8 + movs r1, #0 + bl sub_0806D878 + lsls r0, r0, #0x18 + movs r2, #1 + cmp r0, #0 + beq _0806D5BA + movs r2, #2 +_0806D5BA: + cmp r6, #5 + bhi _0806D65C + lsls r0, r6, #2 + ldr r1, _0806D5C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806D5C8: .4byte _0806D5CC +_0806D5CC: @ jump table + .4byte _0806D5E4 @ case 0 + .4byte _0806D5F8 @ case 1 + .4byte _0806D60C @ case 2 + .4byte _0806D620 @ case 3 + .4byte _0806D634 @ case 4 + .4byte _0806D648 @ case 5 +_0806D5E4: + ldr r0, _0806D5F4 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x1e + b _0806D656 + .align 2, 0 +_0806D5F4: .4byte gUnknown_82F0D54 +_0806D5F8: + ldr r0, _0806D608 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + b _0806D654 + .align 2, 0 +_0806D608: .4byte gUnknown_82F0D54 +_0806D60C: + ldr r0, _0806D61C + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #0x1a + b _0806D656 + .align 2, 0 +_0806D61C: .4byte gUnknown_82F0D54 +_0806D620: + ldr r0, _0806D630 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xa] + lsrs r0, r0, #6 + b _0806D658 + .align 2, 0 +_0806D630: .4byte gUnknown_82F0D54 +_0806D634: + ldr r0, _0806D644 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xb] + lsls r0, r0, #0x1e + b _0806D656 + .align 2, 0 +_0806D644: .4byte gUnknown_82F0D54 +_0806D648: + ldr r0, _0806D684 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xb] +_0806D654: + lsls r0, r0, #0x1c +_0806D656: + lsrs r0, r0, #0x1e +_0806D658: + adds r4, r0, #0 + muls r4, r2, r4 +_0806D65C: + mov r0, r8 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _0806D6A8 + ldr r0, _0806D688 + ldr r1, _0806D68C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806D694 + ldr r0, _0806D690 + ldrb r0, [r0, #7] + b _0806D6B0 + .align 2, 0 +_0806D684: .4byte gUnknown_82F0D54 +_0806D688: .4byte gUnknown_3002360 +_0806D68C: .4byte 0x00000439 +_0806D690: .4byte gUnknown_20240A8 +_0806D694: + ldr r0, _0806D6A0 + ldr r0, [r0] + ldr r2, _0806D6A4 + adds r0, r0, r2 + ldrb r0, [r0] + b _0806D6B0 + .align 2, 0 +_0806D6A0: .4byte gUnknown_3005AEC +_0806D6A4: .4byte 0x00003226 +_0806D6A8: + bl sub_080D6CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806D6B0: + cmp r0, #0x18 + bne _0806D6B8 + lsls r0, r4, #0x11 + lsrs r4, r0, #0x10 +_0806D6B8: + lsls r0, r4, #0x10 + asrs r2, r0, #0x10 + adds r1, r7, r2 + movs r0, #0xff + lsls r0, r0, #1 + cmp r1, r0 + ble _0806D6D0 + adds r0, r2, r0 + adds r1, r7, r4 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0806D6D0: + mov r0, sp + adds r2, r0, r6 + ldrb r3, [r2] + lsls r0, r4, #0x10 + asrs r1, r0, #0x10 + adds r0, r3, r1 + cmp r0, #0xff + ble _0806D6EC + adds r0, r1, #0 + adds r0, #0xff + adds r1, r3, r4 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0806D6EC: + adds r0, r3, r4 + strb r0, [r2] + adds r0, r7, r4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r1, r6, #0 + adds r1, #0x1a + mov r0, r8 + bl sub_0806A774 + adds r6, #1 + cmp r6, #5 + bgt _0806D70E +_0806D706: + ldr r0, _0806D71C + cmp r7, r0 + bhi _0806D70E + b _0806D5A8 +_0806D70E: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806D71C: .4byte 0x000001FD + thumb_func_end sub_0806D570 + + thumb_func_start sub_0806D720 +sub_0806D720: @ 0x0806D720 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + movs r4, #0 +_0806D728: + adds r1, r4, #0 + adds r1, #0x1a + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A058 + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, #1 + cmp r4, #5 + ble _0806D728 + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806D720 + + thumb_func_start sub_0806D748 +sub_0806D748: @ 0x0806D748 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #0x80 + lsls r0, r0, #7 + cmp r5, r0 + beq _0806D76E + movs r0, #0x80 + lsls r0, r0, #8 + cmp r5, r0 + beq _0806D76E + movs r0, #0xc0 + lsls r0, r0, #8 + cmp r5, r0 + bne _0806D804 +_0806D76E: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #0x64 + muls r0, r5, r0 + adds r4, r6, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806D76E + adds r0, r4, #0 + movs r1, #0x2d + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806D76E + ldr r1, _0806D80C + lsls r0, r5, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_0806D878 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D804 + movs r4, #7 +_0806D7B8: + bl sub_0806F050 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + adds r2, r0, #0 + adds r1, r2, #0 + ands r1, r4 + cmp r1, #0 + beq _0806D7B8 + movs r0, #0xf0 + ands r0, r2 + cmp r0, #0 + beq _0806D7DA + mov r0, sp + strb r1, [r0] +_0806D7DA: + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, #4 + orrs r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + movs r1, #0xf3 + ands r1, r0 + mov r0, sp + strb r1, [r0] + adds r1, #1 + strb r1, [r0] + movs r0, #0x64 + muls r0, r5, r0 + adds r0, r6, r0 + movs r1, #0x22 + mov r2, sp + bl sub_0806A774 +_0806D804: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806D80C: .4byte gUnknown_82FACB4 + thumb_func_end sub_0806D748 + + thumb_func_start sub_0806D810 +sub_0806D810: @ 0x0806D810 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + movs r6, #1 + movs r5, #0 + cmp r4, #0 + beq _0806D858 +_0806D824: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0806D84C + movs r0, #0x64 + muls r0, r3, r0 + adds r0, r7, r0 + movs r1, #0x22 + movs r2, #0 + str r3, [sp] + bl sub_0806A058 + movs r1, #0xf + ands r1, r0 + ldr r3, [sp] + cmp r1, #0 + beq _0806D84C + orrs r5, r6 + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 +_0806D84C: + adds r3, #1 + lsls r6, r6, #1 + lsrs r4, r4, #1 + cmp r4, #0 + bne _0806D824 + b _0806D86C +_0806D858: + adds r0, r7, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + beq _0806D86C + movs r5, #1 +_0806D86C: + adds r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806D810 + + thumb_func_start sub_0806D878 +sub_0806D878: @ 0x0806D878 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + movs r6, #1 + movs r5, #0 + cmp r4, #0 + beq _0806D8BC +_0806D88C: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0806D8B0 + movs r0, #0x64 + muls r0, r3, r0 + adds r0, r7, r0 + movs r1, #0x22 + movs r2, #0 + str r3, [sp] + bl sub_0806A058 + ldr r3, [sp] + cmp r0, #0 + beq _0806D8B0 + orrs r5, r6 + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 +_0806D8B0: + adds r3, #1 + lsls r6, r6, #1 + lsrs r4, r4, #1 + cmp r4, #0 + bne _0806D88C + b _0806D8CC +_0806D8BC: + adds r0, r7, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806D8CC + movs r5, #1 +_0806D8CC: + adds r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806D878 + + thumb_func_start sub_0806D8D8 +sub_0806D8D8: @ 0x0806D8D8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r6, #0 + mov r5, sp +_0806D8E4: + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _0806D924 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806D946 + adds r0, r4, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strb r0, [r5] + movs r1, #0xf + adds r2, r0, #0 + ands r1, r2 + cmp r1, #0 + beq _0806D946 + cmp r1, r7 + blo _0806D91E + cmp r7, #4 + bls _0806D928 +_0806D91E: + movs r0, #0xf0 + ands r0, r2 + b _0806D92A + .align 2, 0 +_0806D924: .4byte gUnknown_2024190 +_0806D928: + subs r0, r2, r7 +_0806D92A: + strb r0, [r5] + ldrb r0, [r5] + cmp r0, #0 + bne _0806D936 + movs r0, #0x10 + strb r0, [r5] +_0806D936: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _0806D954 + adds r0, r0, r1 + movs r1, #0x22 + mov r2, sp + bl sub_0806A774 +_0806D946: + adds r6, #1 + cmp r6, #5 + ble _0806D8E4 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806D954: .4byte gUnknown_2024190 + thumb_func_end sub_0806D8D8 + + thumb_func_start sub_0806D958 +sub_0806D958: @ 0x0806D958 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0806D9FE + movs r5, #0 +_0806D974: + movs r0, #0x64 + adds r6, r5, #0 + muls r6, r0, r6 + adds r4, r7, r6 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0806D9F8 + adds r0, r4, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + mov r0, sp + strb r1, [r0] + cmp r1, #0 + beq _0806D9F8 + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0806D9F8 + cmp r5, #0 + beq _0806D9CE + adds r0, r6, #0 + subs r0, #0x64 + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0 + bne _0806D9CE + adds r0, r4, #0 + movs r1, #0x22 + mov r2, sp + bl sub_0806A774 +_0806D9CE: + cmp r5, #5 + beq _0806D9F8 + movs r0, #0x64 + muls r0, r5, r0 + adds r0, #0x64 + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0x22 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0 + bne _0806D9F8 + adds r0, r4, #0 + movs r1, #0x22 + mov r2, sp + bl sub_0806A774 + adds r5, #1 +_0806D9F8: + adds r5, #1 + cmp r5, #5 + ble _0806D974 +_0806D9FE: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806D958 + + thumb_func_start sub_0806DA08 +sub_0806DA08: @ 0x0806DA08 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + adds r0, #1 + mov r1, sp + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #4] + ldr r6, _0806DA84 + ldr r2, _0806DA88 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0x13] + movs r1, #0xca + lsls r1, r1, #1 + adds r4, r2, #0 + muls r4, r1, r4 + movs r2, #0xc8 + lsls r2, r2, #1 + adds r1, r6, r2 + adds r1, r4, r1 + ldr r1, [r1] + cmp r0, r1 + bls _0806DA68 + str r1, [sp, #4] + add r2, sp, #4 + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0806A774 +_0806DA68: + mov r0, sp + ldrb r0, [r0] + cmp r0, #0x64 + bhi _0806DA7E + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, r0, r6 + ldr r1, [sp, #4] + ldr r0, [r0] + cmp r1, r0 + bhs _0806DA8C +_0806DA7E: + movs r0, #0 + b _0806DA98 + .align 2, 0 +_0806DA84: .4byte gUnknown_82F00B4 +_0806DA88: .4byte gUnknown_82F0D54 +_0806DA8C: + adds r0, r5, #0 + movs r1, #0x38 + mov r2, sp + bl sub_0806A774 + movs r0, #1 +_0806DA98: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806DA08 + + thumb_func_start sub_0806DAA0 +sub_0806DAA0: @ 0x0806DAA0 + push {r4, r5, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r5, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r3, r1, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _0806DAC2 + movs r0, #0 + b _0806DAEE +_0806DAC2: + cmp r4, #0x1f + bls _0806DAE0 + adds r0, r4, #0 + subs r0, #0x20 + movs r2, #1 + lsls r2, r0 + ldr r0, _0806DADC + lsls r1, r1, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + ands r0, r2 + b _0806DAEE + .align 2, 0 +_0806DADC: .4byte gUnknown_82EF220 +_0806DAE0: + movs r1, #1 + lsls r1, r5 + ldr r2, _0806DAF4 + lsls r0, r3, #3 + adds r0, r0, r2 + ldr r0, [r0] + ands r0, r1 +_0806DAEE: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806DAF4: .4byte gUnknown_82EF220 + thumb_func_end sub_0806DAA0 + + thumb_func_start sub_0806DAF8 +sub_0806DAF8: @ 0x0806DAF8 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r4, r3, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r3, r0 + bne _0806DB12 + movs r0, #0 + b _0806DB3E +_0806DB12: + cmp r1, #0x1f + bls _0806DB30 + adds r0, r1, #0 + subs r0, #0x20 + movs r2, #1 + lsls r2, r0 + ldr r0, _0806DB2C + lsls r1, r3, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + ands r0, r2 + b _0806DB3E + .align 2, 0 +_0806DB2C: .4byte gUnknown_82EF220 +_0806DB30: + movs r1, #1 + lsls r1, r2 + ldr r2, _0806DB44 + lsls r0, r4, #3 + adds r0, r0, r2 + ldr r0, [r0] + ands r0, r1 +_0806DB3E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806DB44: .4byte gUnknown_82EF220 + thumb_func_end sub_0806DAF8 + + thumb_func_start sub_0806DB48 +sub_0806DB48: @ 0x0806DB48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r6, r0, #0 + str r1, [sp, #8] + movs r0, #0 + mov sl, r0 + adds r0, r6, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r6, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + movs r5, #0 + mov r4, sp +_0806DB7E: + adds r1, r5, #0 + adds r1, #0xd + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A058 + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _0806DB7E + movs r5, #0 + ldr r6, _0806DC8C + lsls r1, r7, #2 + adds r2, r1, r6 + ldr r3, [r2] + ldrh r0, [r3] + ldr r4, _0806DC90 + str r1, [sp, #0x14] + cmp r0, r4 + beq _0806DC78 + mov sb, r2 + str r3, [sp, #0x10] +_0806DBAC: + lsls r2, r5, #1 + ldr r1, [sp, #0x10] + adds r0, r2, r1 + ldrh r3, [r0] + movs r0, #0xfe + lsls r0, r0, #8 + ands r0, r3 + ldr r4, [sp, #0xc] + lsls r1, r4, #9 + adds r7, r2, #0 + adds r5, #1 + mov ip, r5 + cmp r0, r1 + bgt _0806DC62 + movs r4, #0 + mov r0, sp + ldrh r1, [r0] + ldr r0, _0806DC94 + ands r0, r3 + cmp r1, r0 + beq _0806DBFC + ldr r0, [sp, #0x14] + ldr r1, _0806DC8C + adds r6, r0, r1 + ldr r2, _0806DC94 + mov r8, r2 + mov r3, sp + adds r5, r7, #0 +_0806DBE4: + adds r3, #2 + adds r4, #1 + cmp r4, #3 + bgt _0806DBFC + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _0806DBE4 +_0806DBFC: + cmp r4, #4 + bne _0806DC62 + movs r4, #0 + cmp r4, sl + bge _0806DC40 + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, [sp, #8] + ldrh r2, [r0] + ldr r0, _0806DC94 + ands r0, r1 + cmp r2, r0 + beq _0806DC40 + ldr r1, [sp, #0x14] + ldr r2, _0806DC8C + adds r6, r1, r2 + ldr r0, _0806DC94 + mov r8, r0 + ldr r3, [sp, #8] + adds r5, r7, #0 +_0806DC28: + adds r3, #2 + adds r4, #1 + cmp r4, sl + bge _0806DC40 + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _0806DC28 +_0806DC40: + cmp r4, sl + bne _0806DC62 + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r2, r4, #1 + ldr r1, [sp, #8] + adds r2, r2, r1 + mov r4, sb + ldr r0, [r4] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, _0806DC94 + ands r0, r1 + strh r0, [r2] +_0806DC62: + mov r5, ip + cmp r5, #0x13 + bgt _0806DC78 + mov r1, sb + ldr r0, [r1] + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r2, _0806DC90 + cmp r0, r2 + bne _0806DBAC +_0806DC78: + mov r0, sl + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806DC8C: .4byte gUnknown_82F9D04 +_0806DC90: .4byte 0x0000FFFF +_0806DC94: .4byte 0x000001FF + thumb_func_end sub_0806DB48 + + thumb_func_start sub_0806DC98 +sub_0806DC98: @ 0x0806DC98 + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + lsls r0, r0, #0x10 + movs r5, #0 + movs r4, #0 + ldr r1, _0806DCE4 + lsrs r0, r0, #0xe + adds r0, r0, r1 + ldr r2, [r0] + ldrh r0, [r2] + ldr r1, _0806DCE8 + cmp r0, r1 + beq _0806DCDC + ldr r0, _0806DCEC + mov ip, r0 + adds r7, r1, #0 + adds r3, r2, #0 +_0806DCBA: + adds r1, r5, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #1 + adds r1, r1, r6 + ldrh r2, [r3] + mov r0, ip + ands r0, r2 + strh r0, [r1] + adds r3, #2 + adds r4, #1 + cmp r4, #0x13 + bgt _0806DCDC + ldrh r0, [r3] + cmp r0, r7 + bne _0806DCBA +_0806DCDC: + adds r0, r5, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806DCE4: .4byte gUnknown_82F9D04 +_0806DCE8: .4byte 0x0000FFFF +_0806DCEC: .4byte 0x000001FF + thumb_func_end sub_0806DC98 + + thumb_func_start sub_0806DCF0 +sub_0806DCF0: @ 0x0806DCF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x3c + adds r6, r0, #0 + movs r0, #0 + mov sl, r0 + adds r0, r6, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r6, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x30] + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bne _0806DD2C + movs r0, #0 + b _0806DE36 +_0806DD2C: + movs r5, #0 + lsls r4, r4, #2 + str r4, [sp, #0x38] + mov r4, sp +_0806DD34: + adds r1, r5, #0 + adds r1, #0xd + adds r0, r6, #0 + movs r2, #0 + bl sub_0806A058 + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _0806DD34 + movs r5, #0 + ldr r3, _0806DE48 + ldr r2, [sp, #0x38] + adds r1, r2, r3 + ldr r0, [r1] + ldrh r0, [r0] + ldr r2, _0806DE4C + cmp r0, r2 + beq _0806DE34 + mov sb, r1 + mov r4, sp + adds r4, #8 + str r4, [sp, #0x34] +_0806DD64: + mov r1, sb + ldr r0, [r1] + lsls r2, r5, #1 + adds r0, r2, r0 + ldrh r3, [r0] + movs r0, #0xfe + lsls r0, r0, #8 + ands r0, r3 + ldr r4, [sp, #0x30] + lsls r1, r4, #9 + adds r7, r2, #0 + adds r5, #1 + mov ip, r5 + cmp r0, r1 + bgt _0806DE1E + movs r4, #0 + mov r0, sp + ldrh r1, [r0] + ldr r0, _0806DE50 + ands r0, r3 + cmp r1, r0 + beq _0806DDB6 + ldr r0, [sp, #0x38] + ldr r1, _0806DE48 + adds r6, r0, r1 + ldr r2, _0806DE50 + mov r8, r2 + mov r3, sp + adds r5, r7, #0 +_0806DD9E: + adds r3, #2 + adds r4, #1 + cmp r4, #3 + bgt _0806DDB6 + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _0806DD9E +_0806DDB6: + cmp r4, #4 + bne _0806DE1E + movs r4, #0 + cmp r4, sl + bge _0806DDFC + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, [sp, #0x34] + ldrh r2, [r0] + ldr r0, _0806DE50 + ands r0, r1 + add r1, sp, #8 + cmp r2, r0 + beq _0806DDFC + ldr r2, [sp, #0x38] + ldr r0, _0806DE48 + adds r6, r2, r0 + ldr r2, _0806DE50 + mov r8, r2 + adds r3, r1, #0 + adds r5, r7, #0 +_0806DDE4: + adds r3, #2 + adds r4, #1 + cmp r4, sl + bge _0806DDFC + ldr r0, [r6] + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r3] + mov r0, r8 + ands r0, r1 + cmp r2, r0 + bne _0806DDE4 +_0806DDFC: + cmp r4, sl + bne _0806DE1E + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r2, r4, #1 + ldr r4, [sp, #0x34] + adds r2, r4, r2 + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrh r1, [r0] + ldr r0, _0806DE50 + ands r0, r1 + strh r0, [r2] +_0806DE1E: + mov r5, ip + cmp r5, #0x13 + bgt _0806DE34 + mov r2, sb + ldr r0, [r2] + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r4, _0806DE4C + cmp r0, r4 + bne _0806DD64 +_0806DE34: + mov r0, sl +_0806DE36: + add sp, #0x3c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806DE48: .4byte gUnknown_82F9D04 +_0806DE4C: .4byte 0x0000FFFF +_0806DE50: .4byte 0x000001FF + thumb_func_end sub_0806DCF0 + + thumb_func_start sub_0806DE54 +sub_0806DE54: @ 0x0806DE54 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0809CD04 + cmp r0, #0 + beq _0806DE6E + adds r0, r4, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0806DE86 +_0806DE6E: + adds r0, r4, #0 + bl sub_0806CF8C + adds r4, r0, #0 + cmp r4, #0xca + bls _0806DE84 + ldr r0, _0806DE80 + b _0806DE86 + .align 2, 0 +_0806DE80: .4byte 0x0000FFFF +_0806DE84: + adds r0, r4, #0 +_0806DE86: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806DE54 + + thumb_func_start sub_0806DE8C +sub_0806DE8C: @ 0x0806DE8C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CF8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xca + bhi _0806DEA2 + movs r0, #1 + b _0806DEA4 +_0806DEA2: + movs r0, #0 +_0806DEA4: + pop {r1} + bx r1 + thumb_func_end sub_0806DE8C + + thumb_func_start sub_0806DEA8 +sub_0806DEA8: @ 0x0806DEA8 + push {lr} + ldr r1, _0806DEBC + movs r2, #0 + adds r0, r1, #3 +_0806DEB0: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _0806DEB0 + pop {r0} + bx r0 + .align 2, 0 +_0806DEBC: .4byte gUnknown_2024188 + thumb_func_end sub_0806DEA8 + + thumb_func_start sub_0806DEC0 +sub_0806DEC0: @ 0x0806DEC0 + push {lr} + ldr r0, _0806DED8 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + beq _0806DEDC + movs r0, #0xf0 + lsls r0, r0, #1 + b _0806E0D2 + .align 2, 0 +_0806DED8: .4byte gUnknown_2022C90 +_0806DEDC: + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r1 + cmp r0, #0 + beq _0806DEF0 + ldr r0, _0806DEEC + b _0806E0D2 + .align 2, 0 +_0806DEEC: .4byte 0x000001DF +_0806DEF0: + ldr r0, _0806DF1C + ands r0, r1 + cmp r0, #0 + beq _0806DEFA + b _0806E0C8 +_0806DEFA: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0806DF04 + b _0806E0CE +_0806DF04: + ldr r0, _0806DF20 + ands r0, r1 + cmp r0, #0 + beq _0806DF28 + ldr r0, _0806DF24 + ldrh r0, [r0] + bl sub_08162ADC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0806DF42 + .align 2, 0 +_0806DF1C: .4byte gUnknown_2000002 +_0806DF20: .4byte 0x003F0100 +_0806DF24: .4byte gUnknown_203886A +_0806DF28: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0806DF36 + movs r0, #0xa + b _0806DF42 +_0806DF36: + ldr r1, _0806DF54 + ldr r0, _0806DF58 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r0, [r0, #1] +_0806DF42: + subs r0, #3 + cmp r0, #0x3d + bls _0806DF4A + b _0806E0C8 +_0806DF4A: + lsls r0, r0, #2 + ldr r1, _0806DF5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806DF54: .4byte gUnknown_82E383C +_0806DF58: .4byte gUnknown_203886A +_0806DF5C: .4byte _0806DF60 +_0806DF60: @ jump table + .4byte _0806E060 @ case 0 + .4byte _0806E0C8 @ case 1 + .4byte _0806E0C8 @ case 2 + .4byte _0806E0C8 @ case 3 + .4byte _0806E0C8 @ case 4 + .4byte _0806E0C8 @ case 5 + .4byte _0806E060 @ case 6 + .4byte _0806E0C8 @ case 7 + .4byte _0806E060 @ case 8 + .4byte _0806E0C8 @ case 9 + .4byte _0806E058 @ case 10 + .4byte _0806E0C8 @ case 11 + .4byte _0806E0C8 @ case 12 + .4byte _0806E0C8 @ case 13 + .4byte _0806E0C8 @ case 14 + .4byte _0806E0C8 @ case 15 + .4byte _0806E0C8 @ case 16 + .4byte _0806E0C8 @ case 17 + .4byte _0806E0C8 @ case 18 + .4byte _0806E0C8 @ case 19 + .4byte _0806E0C8 @ case 20 + .4byte _0806E0C8 @ case 21 + .4byte _0806E0C8 @ case 22 + .4byte _0806E0C8 @ case 23 + .4byte _0806E0C8 @ case 24 + .4byte _0806E0C8 @ case 25 + .4byte _0806E0C8 @ case 26 + .4byte _0806E0C8 @ case 27 + .4byte _0806E0B8 @ case 28 + .4byte _0806E068 @ case 29 + .4byte _0806E0C8 @ case 30 + .4byte _0806E0C8 @ case 31 + .4byte _0806E0C8 @ case 32 + .4byte _0806E0C8 @ case 33 + .4byte _0806E0C8 @ case 34 + .4byte _0806E070 @ case 35 + .4byte _0806E0C8 @ case 36 + .4byte _0806E0C8 @ case 37 + .4byte _0806E0C8 @ case 38 + .4byte _0806E0C8 @ case 39 + .4byte _0806E0C8 @ case 40 + .4byte _0806E0C8 @ case 41 + .4byte _0806E0C8 @ case 42 + .4byte _0806E0C8 @ case 43 + .4byte _0806E0C8 @ case 44 + .4byte _0806E0C8 @ case 45 + .4byte _0806E060 @ case 46 + .4byte _0806E076 @ case 47 + .4byte _0806E0C8 @ case 48 + .4byte _0806E0C8 @ case 49 + .4byte _0806E058 @ case 50 + .4byte _0806E0C8 @ case 51 + .4byte _0806E0C8 @ case 52 + .4byte _0806E0C8 @ case 53 + .4byte _0806E0C8 @ case 54 + .4byte _0806E0BE @ case 55 + .4byte _0806E0BE @ case 56 + .4byte _0806E0BE @ case 57 + .4byte _0806E0BE @ case 58 + .4byte _0806E0BE @ case 59 + .4byte _0806E0BE @ case 60 + .4byte _0806E0BE @ case 61 +_0806E058: + ldr r0, _0806E05C + b _0806E0D2 + .align 2, 0 +_0806E05C: .4byte 0x000001E3 +_0806E060: + ldr r0, _0806E064 + b _0806E0D2 + .align 2, 0 +_0806E064: .4byte 0x000001DB +_0806E068: + ldr r0, _0806E06C + b _0806E0D2 + .align 2, 0 +_0806E06C: .4byte 0x000001DD +_0806E070: + movs r0, #0xef + lsls r0, r0, #1 + b _0806E0D2 +_0806E076: + ldr r0, _0806E088 + ldr r0, [r0] + ldr r1, _0806E08C + ands r0, r1 + cmp r0, #0 + beq _0806E094 +_0806E082: + ldr r0, _0806E090 + b _0806E0D2 + .align 2, 0 +_0806E088: .4byte gUnknown_2022C90 +_0806E08C: .4byte 0x003F0100 +_0806E090: .4byte 0x000001E1 +_0806E094: + ldr r0, _0806E0AC + ldrh r0, [r0] + lsls r0, r0, #5 + ldr r1, _0806E0B0 + adds r0, r0, r1 + ldr r1, _0806E0B4 + bl sub_0800895C + cmp r0, #0 + beq _0806E0C8 + b _0806E082 + .align 2, 0 +_0806E0AC: .4byte gUnknown_203886A +_0806E0B0: .4byte gUnknown_82E3840 +_0806E0B4: .4byte gUnknown_85ABC7E +_0806E0B8: + movs r0, #0xf1 + lsls r0, r0, #1 + b _0806E0D2 +_0806E0BE: + ldr r0, _0806E0C4 + b _0806E0D2 + .align 2, 0 +_0806E0C4: .4byte 0x000001D7 +_0806E0C8: + movs r0, #0xee + lsls r0, r0, #1 + b _0806E0D2 +_0806E0CE: + movs r0, #0xed + lsls r0, r0, #1 +_0806E0D2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806DEC0 + + thumb_func_start sub_0806E0D8 +sub_0806E0D8: @ 0x0806E0D8 + push {lr} + bl sub_080A27A8 + bl m4aMPlayAllStop + bl sub_0806DEC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A3040 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806E0D8 + + thumb_func_start sub_0806E0F4 +sub_0806E0F4: @ 0x0806E0F4 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080A27A8 + bl m4aMPlayAllStop + cmp r4, #0 + beq _0806E10E + adds r0, r4, #0 + bl sub_080A27D8 + b _0806E11A +_0806E10E: + bl sub_0806DEC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A27D8 +_0806E11A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0806E0F4 + + thumb_func_start sub_0806E120 +sub_0806E120: @ 0x0806E120 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_080A27A8 + bl m4aMPlayAllStop + ldr r0, _0806E150 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0806E154 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E150: .4byte sub_0806E158 +_0806E154: .4byte gUnknown_3005B60 + thumb_func_end sub_0806E120 + + thumb_func_start sub_0806E158 +sub_0806E158: @ 0x0806E158 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0806E178 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0806E17C + ldrh r0, [r1, #8] + bl sub_080A27D8 + b _0806E188 + .align 2, 0 +_0806E178: .4byte gUnknown_3005B60 +_0806E17C: + bl sub_0806DEC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A27D8 +_0806E188: + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0806E158 + + thumb_func_start sub_0806E194 +sub_0806E194: @ 0x0806E194 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r6, r0, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r2, r0, #0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806E1CC + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806E194 + + thumb_func_start sub_0806E1CC +sub_0806E1CC: @ 0x0806E1CC + push {r4, r5, lr} + adds r3, r2, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bls _0806E1E8 + ldr r0, _0806E1E4 + ldr r0, [r0] + b _0806E214 + .align 2, 0 +_0806E1E4: .4byte gUnknown_82D6F08 +_0806E1E8: + lsrs r0, r1, #0x10 + ldr r2, _0806E204 + ands r1, r2 + eors r0, r1 + lsrs r1, r3, #0x10 + eors r0, r1 + ands r3, r2 + eors r0, r3 + cmp r0, #7 + bls _0806E20C + ldr r0, _0806E208 + lsls r1, r4, #3 + b _0806E210 + .align 2, 0 +_0806E204: .4byte 0x0000FFFF +_0806E208: .4byte gUnknown_82D6F08 +_0806E20C: + ldr r0, _0806E21C + lsls r1, r5, #3 +_0806E210: + adds r1, r1, r0 + ldr r0, [r1] +_0806E214: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806E21C: .4byte gUnknown_82D7CC8 + thumb_func_end sub_0806E1CC + + thumb_func_start sub_0806E220 +sub_0806E220: @ 0x0806E220 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r6, r0, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r2, r0, #0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806E258 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806E220 + + thumb_func_start sub_0806E258 +sub_0806E258: @ 0x0806E258 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsrs r0, r1, #0x10 + ldr r3, _0806E278 + ands r1, r3 + eors r0, r1 + lsrs r1, r2, #0x10 + eors r0, r1 + ands r2, r3 + eors r0, r2 + cmp r0, #7 + bls _0806E280 + lsls r0, r4, #3 + ldr r1, _0806E27C + b _0806E284 + .align 2, 0 +_0806E278: .4byte 0x0000FFFF +_0806E27C: .4byte gUnknown_82D6F08 +_0806E280: + lsls r0, r4, #3 + ldr r1, _0806E28C +_0806E284: + adds r0, r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E28C: .4byte gUnknown_82D7CC8 + thumb_func_end sub_0806E258 + + thumb_func_start sub_0806E290 +sub_0806E290: @ 0x0806E290 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, _0806E2B4 + ldrh r0, [r2] + ldr r1, _0806E2B8 + cmp r0, r1 + beq _0806E2C2 + adds r4, r1, #0 + adds r1, r2, #0 +_0806E2A4: + ldrh r0, [r2] + adds r1, #2 + adds r2, #2 + cmp r0, r3 + bne _0806E2BC + movs r0, #1 + b _0806E2C4 + .align 2, 0 +_0806E2B4: .4byte gUnknown_82FA876 +_0806E2B8: .4byte 0x0000FFFF +_0806E2BC: + ldrh r0, [r1] + cmp r0, r4 + bne _0806E2A4 +_0806E2C2: + movs r0, #0 +_0806E2C4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806E290 + + thumb_func_start sub_0806E2CC +sub_0806E2CC: @ 0x0806E2CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0806E2E0 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #0x19] + lsrs r0, r0, #7 + bx lr + .align 2, 0 +_0806E2E0: .4byte gUnknown_82F0D54 + thumb_func_end sub_0806E2CC + + thumb_func_start sub_0806E2E4 +sub_0806E2E4: @ 0x0806E2E4 + push {r4, lr} + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0806E308 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r1, r1, r4 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E308: .4byte gUnknown_8591FEC + thumb_func_end sub_0806E2E4 + + thumb_func_start sub_0806E30C +sub_0806E30C: @ 0x0806E30C + push {r4, lr} + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0806E330 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r1, r1, r4 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E330: .4byte gUnknown_8591FEC + thumb_func_end sub_0806E30C + + thumb_func_start sub_0806E334 +sub_0806E334: @ 0x0806E334 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + movs r1, #7 + mov r2, sp + bl sub_0806A058 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + mov r1, sp + bl sub_0806E360 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806E334 + + thumb_func_start sub_0806E360 +sub_0806E360: @ 0x0806E360 + push {r4, r5, lr} + adds r5, r1, #0 + ldr r1, _0806E3A4 + ldr r3, [r1] + ldrb r2, [r3, #0xa] + ldrb r1, [r3, #0xb] + lsls r1, r1, #8 + orrs r2, r1 + ldrb r1, [r3, #0xc] + lsls r1, r1, #0x10 + orrs r2, r1 + ldrb r1, [r3, #0xd] + lsls r1, r1, #0x18 + orrs r2, r1 + cmp r0, r2 + bne _0806E3A8 + movs r4, #0 + ldrb r0, [r5] + cmp r0, #0xff + beq _0806E39E + adds r2, r5, #0 +_0806E38A: + adds r1, r3, r4 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _0806E3A8 + adds r2, #1 + adds r4, #1 + ldrb r0, [r2] + cmp r0, #0xff + bne _0806E38A +_0806E39E: + movs r0, #0 + b _0806E3AA + .align 2, 0 +_0806E3A4: .4byte gUnknown_3005AF0 +_0806E3A8: + movs r0, #1 +_0806E3AA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0806E360 + + thumb_func_start sub_0806E3B0 +sub_0806E3B0: @ 0x0806E3B0 + push {lr} + bl sub_0806E3BC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806E3B0 + + thumb_func_start sub_0806E3BC +sub_0806E3BC: @ 0x0806E3BC + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + movs r6, #0 +_0806E3C4: + adds r4, r6, #0 + adds r4, #0xd + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806A1B4 + cmp r0, #0 + beq _0806E410 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806A1B4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A1B4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + bl sub_0806B424 + mov r1, sp + strb r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r5, #0 + mov r2, sp + bl sub_0806A864 +_0806E410: + adds r6, #1 + cmp r6, #3 + ble _0806E3C4 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806E3BC + + thumb_func_start sub_0806E420 +sub_0806E420: @ 0x0806E420 + push {r4, r5, lr} + ldr r2, _0806E464 + ldr r5, _0806E468 + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0xb0 + ldrb r0, [r0] + strb r0, [r2] + ldr r4, _0806E46C + movs r0, #0xfd + strb r0, [r4] + movs r0, #4 + strb r0, [r4, #1] + adds r1, #0x49 + ldrb r0, [r1] + strb r0, [r4, #2] + movs r0, #0xff + strb r0, [r4, #4] + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806E474 + ldr r1, _0806E470 + ldr r0, [r5] + adds r0, #0x49 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081B8C8C + b _0806E482 + .align 2, 0 +_0806E464: .4byte gUnknown_2023EAE +_0806E468: .4byte gUnknown_2024140 +_0806E46C: .4byte gUnknown_2022C0C +_0806E470: .4byte gUnknown_2023D12 +_0806E474: + ldr r1, _0806E4B8 + ldr r0, [r5] + adds r0, #0x49 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] +_0806E482: + strb r0, [r4, #3] + ldr r4, _0806E4BC + movs r0, #0xfd + strb r0, [r4] + movs r0, #4 + strb r0, [r4, #1] + ldr r1, _0806E4C0 + ldrb r0, [r1] + strb r0, [r4, #2] + ldr r2, _0806E4B8 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_081B8C8C + strb r0, [r4, #3] + movs r0, #0xff + strb r0, [r4, #4] + ldr r0, _0806E4C4 + ldr r1, _0806E4C8 + bl sub_0814E7B0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0806E4B8: .4byte gUnknown_2023D12 +_0806E4BC: .4byte gUnknown_2022C1C +_0806E4C0: .4byte gUnknown_202415C +_0806E4C4: .4byte gUnknown_85AA7DF +_0806E4C8: .4byte gUnknown_2021C7C + thumb_func_end sub_0806E420 + + thumb_func_start sub_0806E4CC +sub_0806E4CC: @ 0x0806E4CC + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r1, #0 + ldr r2, _0806E4E0 +_0806E4D6: + ldrh r0, [r2] + cmp r0, r3 + bne _0806E4E4 + adds r0, r1, #0 + b _0806E4EE + .align 2, 0 +_0806E4E0: .4byte gUnknown_82FA888 +_0806E4E4: + adds r2, #4 + adds r1, #1 + cmp r1, #8 + ble _0806E4D6 + movs r0, #0 +_0806E4EE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806E4CC + + thumb_func_start sub_0806E4F4 +sub_0806E4F4: @ 0x0806E4F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0806E578 + ldr r0, [r0] + ldr r1, _0806E57C + ands r0, r1 + cmp r0, #0 + beq _0806E508 + b _0806E61C +_0806E508: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0806E580 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x2d + mov r8, r0 + movs r7, #0x5f + ldr r5, _0806E584 + adds r0, r5, #0 + movs r1, #6 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0806E552 + adds r0, r5, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe + bne _0806E552 + movs r2, #0x14 + mov r8, r2 + movs r7, #0x50 +_0806E552: + ldr r0, _0806E588 + ldrh r1, [r0, #0x12] + movs r0, #0xd2 + lsls r0, r0, #1 + cmp r1, r0 + bne _0806E5B8 + adds r0, r4, #0 + bl sub_0806E4CC + adds r2, r0, #0 + cmp r2, #0 + beq _0806E590 + cmp r6, r7 + blo _0806E61C + ldr r0, _0806E580 + lsls r2, r2, #2 + ldr r1, _0806E58C + b _0806E5F8 + .align 2, 0 +_0806E578: .4byte gUnknown_2022C90 +_0806E57C: .4byte 0x00302008 +_0806E580: .4byte gUnknown_20243E8 +_0806E584: .4byte gUnknown_2024190 +_0806E588: .4byte gUnknown_2036FB8 +_0806E58C: .4byte gUnknown_82FA88A +_0806E590: + cmp r6, r8 + blo _0806E61C + cmp r6, r7 + bhs _0806E5A4 + ldr r0, _0806E5A0 + lsls r2, r4, #3 + b _0806E5F2 + .align 2, 0 +_0806E5A0: .4byte gUnknown_20243E8 +_0806E5A4: + ldr r0, _0806E5B0 + lsls r2, r4, #3 + subs r2, r2, r4 + lsls r2, r2, #2 + ldr r1, _0806E5B4 + b _0806E5F8 + .align 2, 0 +_0806E5B0: .4byte gUnknown_20243E8 +_0806E5B4: .4byte gUnknown_82F0D62 +_0806E5B8: + ldr r0, _0806E5E0 + mov ip, r0 + lsls r0, r4, #3 + subs r1, r0, r4 + lsls r5, r1, #2 + mov r2, ip + adds r1, r5, r2 + ldrh r3, [r1, #0xc] + adds r2, r0, #0 + ldrh r1, [r1, #0xe] + cmp r3, r1 + bne _0806E5E8 + cmp r3, #0 + beq _0806E5E8 + ldr r0, _0806E5E4 + mov r2, ip + adds r2, #0xc + adds r2, r5, r2 + b _0806E5FA + .align 2, 0 +_0806E5E0: .4byte gUnknown_82F0D54 +_0806E5E4: .4byte gUnknown_20243E8 +_0806E5E8: + cmp r6, r8 + blo _0806E61C + cmp r6, r7 + bhs _0806E60C + ldr r0, _0806E604 +_0806E5F2: + subs r2, r2, r4 + lsls r2, r2, #2 + ldr r1, _0806E608 +_0806E5F8: + adds r2, r2, r1 +_0806E5FA: + movs r1, #0xc + bl sub_0806A774 + b _0806E61C + .align 2, 0 +_0806E604: .4byte gUnknown_20243E8 +_0806E608: .4byte gUnknown_82F0D60 +_0806E60C: + ldr r0, _0806E628 + subs r2, r2, r4 + lsls r2, r2, #2 + ldr r1, _0806E62C + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 +_0806E61C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806E628: .4byte gUnknown_20243E8 +_0806E62C: .4byte gUnknown_82F0D62 + thumb_func_end sub_0806E4F4 + + thumb_func_start sub_0806E630 +sub_0806E630: @ 0x0806E630 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_0806E65C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806E630 + + thumb_func_start sub_0806E65C +sub_0806E65C: @ 0x0806E65C + push {r4, lr} + movs r4, #0 + lsrs r2, r0, #0x10 + ldr r3, _0806E680 + ands r0, r3 + eors r2, r0 + lsrs r0, r1, #0x10 + eors r2, r0 + ands r1, r3 + eors r2, r1 + cmp r2, #7 + bhi _0806E676 + movs r4, #1 +_0806E676: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E680: .4byte 0x0000FFFF + thumb_func_end sub_0806E65C + + thumb_func_start sub_0806E684 +sub_0806E684: @ 0x0806E684 + push {r4, lr} + ldr r0, _0806E6A4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0806E6C8 + ldr r2, _0806E6A8 + ldrh r1, [r2] + ldr r0, _0806E6AC + cmp r1, r0 + bne _0806E6B4 + ldr r0, _0806E6B0 + b _0806E6F0 + .align 2, 0 +_0806E6A4: .4byte gUnknown_2022C90 +_0806E6A8: .4byte gUnknown_203886E +_0806E6AC: .4byte 0x00000C03 +_0806E6B0: .4byte gUnknown_82E9CC0 +_0806E6B4: + ldr r4, _0806E6C4 + ldrh r1, [r2] + adds r0, r4, #0 + bl sub_08162D24 + adds r0, r4, #0 + b _0806E6F0 + .align 2, 0 +_0806E6C4: .4byte gUnknown_2021C40 +_0806E6C8: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0806E6F8 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x18] + movs r0, #2 + eors r0, r1 + bl sub_0806D300 + adds r1, r0, #0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r4, #8 + adds r0, r0, r4 +_0806E6F0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806E6F8: .4byte gUnknown_20226A0 + thumb_func_end sub_0806E684 + + thumb_func_start sub_0806E6FC +sub_0806E6FC: @ 0x0806E6FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0806E734 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0xe] + subs r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0806E72C + ldrh r0, [r2, #8] + ldrh r1, [r2, #0xa] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #0xc] + bl sub_0817F3F0 + adds r0, r4, #0 + bl sub_080A8964 +_0806E72C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E734: .4byte gUnknown_3005B60 + thumb_func_end sub_0806E6FC + + thumb_func_start sub_0806E738 +sub_0806E738: @ 0x0806E738 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0806E774 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0xe] + subs r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0806E76E + ldrh r0, [r2, #8] + ldrh r1, [r2, #0xa] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #0xc] + bl sub_0817F424 + movs r0, #0xff + bl sub_081C4094 + adds r0, r4, #0 + bl sub_080A8964 +_0806E76E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E774: .4byte gUnknown_3005B60 + thumb_func_end sub_0806E738 + + thumb_func_start sub_0806E778 +sub_0806E778: @ 0x0806E778 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0806E7B0 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E7BC + ldr r0, _0806E7B4 + ldr r0, [r0] + ldr r1, _0806E7B8 + ands r0, r1 + cmp r0, #0 + bne _0806E7BC + movs r0, #0x80 + orrs r3, r0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806E7CC + b _0806E7C4 + .align 2, 0 +_0806E7B0: .4byte gUnknown_2023F24 +_0806E7B4: .4byte gUnknown_2022C90 +_0806E7B8: .4byte gUnknown_2000002 +_0806E7BC: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806E7CC +_0806E7C4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806E778 + + thumb_func_start sub_0806E7CC +sub_0806E7CC: @ 0x0806E7CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x7f + ands r0, r3 + cmp r0, #0 + beq _0806E7EC + cmp r0, #1 + beq _0806E7F0 + movs r1, #0 + b _0806E7F2 +_0806E7EC: + movs r1, #0xe7 + b _0806E7F2 +_0806E7F0: + movs r1, #0x19 +_0806E7F2: + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _0806E810 + cmp r2, #0 + bne _0806E808 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080A2B3C +_0806E808: + ldr r0, _0806E80C + b _0806E886 + .align 2, 0 +_0806E80C: .4byte sub_08007140 +_0806E810: + cmp r2, #0 + bne _0806E832 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080A2B3C + adds r0, r4, #0 + bl sub_0806EB58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806E832 + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_0806E832: + ldr r0, _0806E868 + subs r4, #1 + adds r6, r4, r0 + ldrb r0, [r6] + cmp r0, #0 + beq _0806E878 + ldr r0, _0806E86C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0806E870 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + lsrs r0, r5, #0x10 + strh r0, [r1, #0xa] + ldr r0, _0806E874 + adds r0, r4, r0 + ldrb r0, [r0] + strh r0, [r1, #0xc] + ldrb r0, [r6] + strh r0, [r1, #0xe] + b _0806E884 + .align 2, 0 +_0806E868: .4byte gUnknown_82FA50F +_0806E86C: .4byte sub_0806E6FC +_0806E870: .4byte gUnknown_3005B60 +_0806E874: .4byte gUnknown_82FA374 +_0806E878: + ldr r0, _0806E890 + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0817F3F0 +_0806E884: + ldr r0, _0806E894 +_0806E886: + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806E890: .4byte gUnknown_82FA374 +_0806E894: .4byte sub_080394FC + thumb_func_end sub_0806E7CC + + thumb_func_start sub_0806E898 +sub_0806E898: @ 0x0806E898 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + cmp r2, #0 + bne _0806E8BA + adds r0, r4, #0 + bl sub_0806EB58 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806E8BA + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_0806E8BA: + ldr r0, _0806E8FC + subs r4, #1 + adds r6, r4, r0 + ldrb r0, [r6] + cmp r0, #0 + beq _0806E90C + ldr r0, _0806E900 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0806E904 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r1 + strh r5, [r2, #8] + lsrs r1, r5, #0x10 + strh r1, [r2, #0xa] + ldr r1, _0806E908 + adds r1, r4, r1 + ldrb r1, [r1] + strh r1, [r2, #0xc] + ldrb r1, [r6] + strh r1, [r2, #0xe] + bl sub_081C4094 + adds r0, r5, #0 + bl sub_0817F4B8 + b _0806E918 + .align 2, 0 +_0806E8FC: .4byte gUnknown_82FA50F +_0806E900: .4byte sub_0806E738 +_0806E904: .4byte gUnknown_3005B60 +_0806E908: .4byte gUnknown_82FA374 +_0806E90C: + ldr r0, _0806E920 + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0817F424 +_0806E918: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806E920: .4byte gUnknown_82FA374 + thumb_func_end sub_0806E898 + + thumb_func_start sub_0806E924 +sub_0806E924: @ 0x0806E924 + push {lr} + ldr r0, _0806E93C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0806E938 + bl sub_080A8964 +_0806E938: + pop {r0} + bx r0 + .align 2, 0 +_0806E93C: .4byte sub_0806E738 + thumb_func_end sub_0806E924 + + thumb_func_start sub_0806E940 +sub_0806E940: @ 0x0806E940 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + ldr r0, _0806E964 + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E974 + ldr r0, _0806E968 + ldr r0, [r0] + ldr r1, _0806E96C + ands r0, r1 + cmp r0, #0 + bne _0806E974 + ldr r0, _0806E970 + b _0806E988 + .align 2, 0 +_0806E964: .4byte gUnknown_2023F24 +_0806E968: .4byte gUnknown_2022C90 +_0806E96C: .4byte gUnknown_2000002 +_0806E970: .4byte sub_08007140 +_0806E974: + adds r0, r2, #0 + bl sub_0817F320 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0817F440 + ldr r0, _0806E990 +_0806E988: + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0806E990: .4byte sub_080394FC + thumb_func_end sub_0806E940 + + thumb_func_start sub_0806E994 +sub_0806E994: @ 0x0806E994 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0806E9C0 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x18] + cmp r0, #1 + beq _0806E9D8 + cmp r0, #1 + bgt _0806E9C4 + cmp r0, #0 + beq _0806E9CE + b _0806E9E2 + .align 2, 0 +_0806E9C0: .4byte gUnknown_20226A0 +_0806E9C4: + cmp r0, #2 + beq _0806E9CE + cmp r0, #3 + beq _0806E9D8 + b _0806E9E2 +_0806E9CE: + movs r5, #3 + cmp r4, #0 + beq _0806E9E2 + movs r5, #1 + b _0806E9E2 +_0806E9D8: + rsbs r0, r4, #0 + orrs r0, r4 + asrs r5, r0, #0x1f + movs r0, #2 + ands r5, r0 +_0806E9E2: + movs r2, #0 + ldr r4, _0806EA0C + ldrh r0, [r4, #0x18] + adds r1, r5, #0 + cmp r0, r1 + beq _0806EA00 + adds r3, r1, #0 + adds r1, r4, #0 +_0806E9F2: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bgt _0806EA00 + ldrh r0, [r1, #0x18] + cmp r0, r3 + bne _0806E9F2 +_0806EA00: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806EA0C: .4byte gUnknown_20226A0 + thumb_func_end sub_0806E994 + + thumb_func_start sub_0806EA10 +sub_0806EA10: @ 0x0806EA10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r4, #0 + ldr r2, _0806EA38 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x18] + cmp r0, #1 + beq _0806EA50 + cmp r0, #1 + bgt _0806EA3C + cmp r0, #0 + beq _0806EA46 + b _0806EA5A + .align 2, 0 +_0806EA38: .4byte gUnknown_20226A0 +_0806EA3C: + cmp r0, #2 + beq _0806EA46 + cmp r0, #3 + beq _0806EA50 + b _0806EA5A +_0806EA46: + movs r4, #3 + cmp r3, #0 + beq _0806EA5A + movs r4, #1 + b _0806EA5A +_0806EA50: + rsbs r0, r3, #0 + orrs r0, r3 + asrs r4, r0, #0x1f + movs r0, #2 + ands r4, r0 +_0806EA5A: + movs r3, #0 + ldrh r0, [r2, #0x18] + adds r1, r4, #0 + cmp r0, r1 + beq _0806EA72 +_0806EA64: + adds r2, #0x1c + adds r3, #1 + cmp r3, #3 + bgt _0806EA72 + ldrh r0, [r2, #0x18] + cmp r0, r1 + bne _0806EA64 +_0806EA72: + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806EA10 + + thumb_func_start sub_0806EA7C +sub_0806EA7C: @ 0x0806EA7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806EA88 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806EA88: .4byte gUnknown_82EFF00 + thumb_func_end sub_0806EA7C + + thumb_func_start sub_0806EA8C +sub_0806EA8C: @ 0x0806EA8C + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806EA98 + movs r0, #0x3c + b _0806EA9A +_0806EA98: + movs r0, #0x3f +_0806EA9A: + bl sub_0806EA7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806EA8C + + thumb_func_start sub_0806EAA8 +sub_0806EAA8: @ 0x0806EAA8 + push {r4, r5, r6, r7, lr} + adds r7, r2, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r0, #2 + eors r0, r5 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + adds r0, r4, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806EAFE + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080BFBBC + adds r0, r4, #0 + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc9 + bne _0806EAE8 + ldr r0, _0806EB04 + ldr r0, [r0] + str r7, [r0, #0x1c] +_0806EAE8: + adds r0, r6, #0 + bl sub_0806CED0 + lsls r0, r0, #0x10 + movs r1, #0x9a + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0806EAFE + ldr r0, _0806EB04 + ldr r0, [r0] + str r7, [r0, #0x20] +_0806EAFE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806EB04: .4byte gUnknown_3005AF0 + thumb_func_end sub_0806EAA8 + + thumb_func_start sub_0806EB08 +sub_0806EB08: @ 0x0806EB08 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0806EB2C + cmp r2, r0 + bls _0806EB16 + movs r2, #0 +_0806EB16: + ldr r1, _0806EB30 + lsls r0, r2, #5 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0xb + muls r0, r1, r0 + ldr r1, _0806EB34 + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_0806EB2C: .4byte 0x00000356 +_0806EB30: .4byte gUnknown_82E383C +_0806EB34: .4byte gUnknown_82E3564 + thumb_func_end sub_0806EB08 + + thumb_func_start sub_0806EB38 +sub_0806EB38: @ 0x0806EB38 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _0806EB50 + cmp r1, r0 + bls _0806EB46 + movs r1, #0 +_0806EB46: + lsls r0, r1, #5 + ldr r1, _0806EB54 + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_0806EB50: .4byte 0x00000356 +_0806EB54: .4byte gUnknown_82E3840 + thumb_func_end sub_0806EB38 + + thumb_func_start sub_0806EB58 +sub_0806EB58: @ 0x0806EB58 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + ldr r0, _0806EB84 + cmp r2, r0 + beq _0806EB7C + adds r0, #0x19 + cmp r2, r0 + beq _0806EB7C + subs r0, #0x66 + cmp r2, r0 + beq _0806EB7C + movs r1, #0xc9 + eors r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r1, r0, #0x1f +_0806EB7C: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0806EB84: .4byte 0x00000181 + thumb_func_end sub_0806EB58 + + thumb_func_start sub_0806EB88 +sub_0806EB88: @ 0x0806EB88 + push {lr} + ldr r2, _0806EBCC + ldr r1, _0806EBD0 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806EBA6 + ldr r0, _0806EBD4 + ldr r0, [r0] + ldr r1, _0806EBD8 + ands r0, r1 + cmp r0, #0 + bne _0806EBC8 +_0806EBA6: + ldr r1, _0806EBD0 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806EBDC + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806EBC8 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806EBDC +_0806EBC8: + movs r0, #1 + b _0806EBDE + .align 2, 0 +_0806EBCC: .4byte gUnknown_3002360 +_0806EBD0: .4byte 0x00000439 +_0806EBD4: .4byte gUnknown_2022C90 +_0806EBD8: .4byte 0x003F0100 +_0806EBDC: + movs r0, #0 +_0806EBDE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806EB88 + + thumb_func_start sub_0806EBE4 +sub_0806EBE4: @ 0x0806EBE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + ldrb r0, [r6] + lsls r0, r0, #0x1c + movs r4, #0 + cmp r0, #0 + beq _0806EC6E +_0806EBFA: + ldr r0, [r6, #0xc] + lsls r2, r4, #1 + adds r1, r2, r4 + lsls r1, r1, #3 + adds r0, r1, r0 + ldr r3, _0806EC7C + adds r1, r1, r3 + ldm r1!, {r3, r5, r7} + stm r0!, {r3, r5, r7} + ldm r1!, {r3, r5, r7} + stm r0!, {r3, r5, r7} + movs r5, #0 + ldrb r3, [r6, #1] + ldr r7, [r6, #0xc] + mov sb, r7 + mov r8, r2 + ldr r0, [r6, #0x10] + mov ip, r0 + adds r1, r4, #1 + mov sl, r1 + cmp r5, r3 + bhs _0806EC4C + mov r7, ip + ldr r1, [r6, #8] + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r2, [r0] +_0806EC30: + adds r0, r4, #0 + muls r0, r3, r0 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r7 + lsls r1, r5, #0xb + adds r1, r2, r1 + str r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r3, [r6, #1] + cmp r5, r3 + blo _0806EC30 +_0806EC4C: + mov r3, r8 + adds r1, r3, r4 + lsls r1, r1, #3 + add r1, sb + ldrb r0, [r6, #1] + muls r0, r4, r0 + lsls r0, r0, #3 + add r0, ip + str r0, [r1, #0xc] + mov r5, sl + lsls r0, r5, #0x10 + lsrs r4, r0, #0x10 + ldrb r0, [r6] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r4, r0 + blt _0806EBFA +_0806EC6E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806EC7C: .4byte gUnknown_82FA724 + thumb_func_end sub_0806EBE4 + + thumb_func_start sub_0806EC80 +sub_0806EC80: @ 0x0806EC80 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + ldrb r0, [r4] + lsls r0, r0, #0x1c + movs r3, #0 + cmp r0, #0 + beq _0806ED1A + ldr r0, _0806ED28 + mov sl, r0 +_0806EC9A: + ldr r0, [r4, #0xc] + lsls r2, r3, #1 + adds r1, r2, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + mov r0, sl + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + movs r5, #0 + ldr r0, [r4, #0xc] + mov r8, r0 + mov ip, r2 + ldr r7, [r4, #0x10] + adds r1, r3, #1 + mov sb, r1 + ldrb r6, [r4, #1] + cmp r5, r6 + bhs _0806ECEE + adds r6, r7, #0 + ldr r1, [r4, #8] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] +_0806ECCC: + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, r3, #0 + muls r1, r0, r1 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r6 + lsls r0, r5, #0xb + adds r0, r2, r0 + str r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r0, [r4, #1] + cmp r5, r0 + blo _0806ECCC +_0806ECEE: + mov r5, ip + adds r1, r5, r3 + lsls r1, r1, #3 + add r1, r8 + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + muls r0, r3, r0 + lsls r0, r0, #3 + adds r0, r7, r0 + str r0, [r1, #0xc] + ldr r6, _0806ED2C + str r6, [r1, #8] + strh r3, [r1, #2] + mov r7, sb + lsls r0, r7, #0x10 + lsrs r3, r0, #0x10 + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r3, r0 + blt _0806EC9A +_0806ED1A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806ED28: .4byte gUnknown_82FA8B4 +_0806ED2C: .4byte gUnknown_82D2F9C + thumb_func_end sub_0806EC80 + + thumb_func_start sub_0806ED30 +sub_0806ED30: @ 0x0806ED30 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r7, #0 + movs r0, #1 + ands r6, r0 + movs r0, #0x14 + bl sub_08000BDC + adds r4, r0, #0 + cmp r4, #0 + bne _0806ED54 + movs r0, #0 + b _0806EEF2 +_0806ED54: + cmp r5, #0 + beq _0806ED6A + cmp r5, #2 + bne _0806ED6A + movs r0, #0x77 + strb r0, [r4] + movs r0, #4 + strb r0, [r4, #1] + movs r0, #0x21 + strb r0, [r4, #3] + b _0806ED92 +_0806ED6A: + ldrb r1, [r4] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r3, #0xf + ands r0, r3 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4] + movs r0, #4 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + ands r2, r0 + movs r0, #1 + orrs r2, r0 + ands r2, r3 + strb r2, [r4, #3] +_0806ED92: + ldrb r1, [r4, #3] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0xf + muls r0, r1, r0 + bl sub_08000BDC + str r0, [r4, #4] + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x17 + bl sub_08000BDC + adds r1, r0, #0 + str r1, [r4, #8] + ldr r2, [r4, #4] + cmp r2, #0 + beq _0806EDBE + cmp r1, #0 + bne _0806EDC8 +_0806EDBE: + movs r0, #1 + orrs r7, r0 + lsls r6, r6, #2 + mov r8, r6 + b _0806EDFC +_0806EDC8: + ldrb r0, [r4] + lsls r0, r0, #0x1c + movs r3, #0 + lsls r6, r6, #2 + mov r8, r6 + cmp r0, #0 + beq _0806EDFC + adds r6, r1, #0 + adds r5, r2, #0 +_0806EDDA: + lsls r2, r3, #2 + adds r2, r2, r6 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + lsls r1, r3, #0xd + muls r0, r1, r0 + adds r0, r5, r0 + str r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r3, r0 + blt _0806EDDA +_0806EDFC: + ldrb r1, [r4] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + bl sub_08000BDC + str r0, [r4, #0xc] + ldrb r1, [r4] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r0, [r4, #1] + lsls r0, r0, #3 + muls r0, r1, r0 + bl sub_08000BDC + adds r1, r0, #0 + str r1, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0806EE2C + cmp r1, #0 + bne _0806EE36 +_0806EE2C: + movs r0, #2 + orrs r7, r0 + lsls r0, r7, #0x18 + lsrs r7, r0, #0x18 + b _0806EE84 +_0806EE36: + movs r3, #0 + ldrb r0, [r4, #1] + ldrb r1, [r4] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + muls r0, r1, r0 + cmp r3, r0 + bge _0806EE66 + movs r2, #0x80 + lsls r2, r2, #4 +_0806EE4A: + ldr r1, [r4, #0x10] + lsls r0, r3, #3 + adds r0, r0, r1 + strh r2, [r0, #4] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r1, [r4, #1] + ldrb r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + muls r0, r1, r0 + cmp r3, r0 + blt _0806EE4A +_0806EE66: + ldrb r0, [r4, #3] + lsrs r0, r0, #4 + cmp r0, #0 + blt _0806EE7E + cmp r0, #1 + ble _0806EE7E + cmp r0, #2 + bne _0806EE7E + adds r0, r4, #0 + bl sub_0806EC80 + b _0806EE84 +_0806EE7E: + adds r0, r4, #0 + bl sub_0806EBE4 +_0806EE84: + movs r0, #2 + ands r0, r7 + cmp r0, #0 + beq _0806EEA8 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0806EE9A + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #0x10] +_0806EE9A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0806EEA8 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #0xc] +_0806EEA8: + movs r0, #1 + ands r0, r7 + cmp r0, #0 + beq _0806EECC + ldr r0, [r4, #8] + cmp r0, #0 + beq _0806EEBE + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #8] +_0806EEBE: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0806EECC + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #4] +_0806EECC: + cmp r7, #0 + beq _0806EEE2 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x14 + bl memset + adds r0, r4, #0 + bl sub_08000BF0 + b _0806EEEC +_0806EEE2: + movs r0, #0xa3 + strb r0, [r4, #2] + ldr r0, _0806EEFC + add r0, r8 + str r4, [r0] +_0806EEEC: + ldr r0, _0806EEFC + add r0, r8 + ldr r0, [r0] +_0806EEF2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806EEFC: .4byte gUnknown_2024658 + thumb_func_end sub_0806ED30 + + thumb_func_start sub_0806EF00 +sub_0806EF00: @ 0x0806EF00 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + ands r0, r1 + ldr r1, _0806EF28 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + cmp r4, #0 + beq _0806EF74 + ldrb r0, [r4, #2] + cmp r0, #0xa3 + beq _0806EF2C + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x14 + bl memset + b _0806EF74 + .align 2, 0 +_0806EF28: .4byte gUnknown_2024658 +_0806EF2C: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0806EF3A + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #0x10] +_0806EF3A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0806EF48 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #0xc] +_0806EF48: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0806EF56 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #8] +_0806EF56: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0806EF64 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4, #4] +_0806EF64: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x14 + bl memset + adds r0, r4, #0 + bl sub_08000BF0 +_0806EF74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806EF00 + + thumb_func_start sub_0806EF7C +sub_0806EF7C: @ 0x0806EF7C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r2, _0806EF9C + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + ldrb r0, [r1, #2] + cmp r0, #0xa3 + beq _0806EFA0 + movs r0, #0 + b _0806EFB4 + .align 2, 0 +_0806EF9C: .4byte gUnknown_2024658 +_0806EFA0: + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r3, r0 + blt _0806EFAC + movs r3, #0 +_0806EFAC: + ldr r0, [r1, #8] + lsls r1, r3, #2 + adds r1, r1, r0 + ldr r0, [r1] +_0806EFB4: + pop {r1} + bx r1 + thumb_func_end sub_0806EF7C + + thumb_func_start sub_0806EFB8 +sub_0806EFB8: @ 0x0806EFB8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r2, _0806EFD0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + muls r0, r1, r0 + lsls r0, r0, #8 + asrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0806EFD0: .4byte gUnknown_82FA8CC + thumb_func_end sub_0806EFB8 + + thumb_func_start sub_0806EFD4 +sub_0806EFD4: @ 0x0806EFD4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r2, _0806EFF0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + adds r0, #0x80 + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + muls r0, r1, r0 + lsls r0, r0, #8 + asrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0806EFF0: .4byte gUnknown_82FA8CC + thumb_func_end sub_0806EFD4 + + thumb_func_start sub_0806EFF4 +sub_0806EFF4: @ 0x0806EFF4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r5, #0 + movs r1, #0xb4 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0xb4 + bl __udivsi3 + movs r1, #1 + ands r0, r1 + ldr r1, _0806F028 + lsls r4, r4, #1 + adds r4, r4, r1 + ldrh r1, [r4] + cmp r0, #0 + bne _0806F02C + lsls r0, r1, #0x10 + b _0806F030 + .align 2, 0 +_0806F028: .4byte gUnknown_82FAB4C +_0806F02C: + lsls r0, r1, #0x10 + rsbs r0, r0, #0 +_0806F030: + asrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0806EFF4 + + thumb_func_start sub_0806F038 +sub_0806F038: @ 0x0806F038 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xb4 + lsls r1, r1, #0xf + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_0806F038 + + thumb_func_start sub_0806F050 +sub_0806F050: @ 0x0806F050 + ldr r2, _0806F06C + ldr r1, [r2] + ldr r0, _0806F070 + muls r0, r1, r0 + ldr r1, _0806F074 + adds r0, r0, r1 + str r0, [r2] + ldr r2, _0806F078 + ldr r1, [r2] + adds r1, #1 + str r1, [r2] + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0806F06C: .4byte gUnknown_3005AE0 +_0806F070: .4byte 0x41C64E6D +_0806F074: .4byte 0x00006073 +_0806F078: .4byte gUnknown_2024664 + thumb_func_end sub_0806F050 + + thumb_func_start sub_0806F07C +sub_0806F07C: @ 0x0806F07C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806F08C + str r0, [r1] + ldr r1, _0806F090 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_0806F08C: .4byte gUnknown_3005AE0 +_0806F090: .4byte gUnknown_2024660 + thumb_func_end sub_0806F07C + + thumb_func_start sub_0806F094 +sub_0806F094: @ 0x0806F094 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806F0A0 + str r0, [r1] + bx lr + .align 2, 0 +_0806F0A0: .4byte gUnknown_3005AE4 + thumb_func_end sub_0806F094 + + thumb_func_start sub_0806F0A4 +sub_0806F0A4: @ 0x0806F0A4 + ldr r2, _0806F0B8 + ldr r1, [r2] + ldr r0, _0806F0BC + muls r0, r1, r0 + ldr r1, _0806F0C0 + adds r0, r0, r1 + str r0, [r2] + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0806F0B8: .4byte gUnknown_3005AE4 +_0806F0BC: .4byte 0x41C64E6D +_0806F0C0: .4byte 0x00006073 + thumb_func_end sub_0806F0A4 + + thumb_func_start sub_0806F0C4 +sub_0806F0C4: @ 0x0806F0C4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _0806F0F8 + movs r1, #0xf8 + movs r2, #0xa8 + movs r3, #0xe + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0806F0FC + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r3, r2, r5 + adds r3, #0x3e + ldrb r1, [r3] + movs r4, #4 + orrs r1, r4 + strb r1, [r3] + adds r5, #0x1c + adds r2, r2, r5 + str r6, [r2] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0806F0F8: .4byte gUnknown_82FAD34 +_0806F0FC: .4byte gUnknown_20205AC + thumb_func_end sub_0806F0C4 + + thumb_func_start sub_0806F100 +sub_0806F100: @ 0x0806F100 + strh r1, [r0] + lsrs r1, r1, #0x10 + strh r1, [r0, #2] + bx lr + thumb_func_end sub_0806F100 + + thumb_func_start sub_0806F108 +sub_0806F108: @ 0x0806F108 + ldrh r2, [r0] + movs r3, #2 + ldrsh r0, [r0, r3] + lsls r0, r0, #0x10 + orrs r2, r0 + str r2, [r1] + bx lr + .align 2, 0 + thumb_func_end sub_0806F108 + + thumb_func_start sub_0806F118 +sub_0806F118: @ 0x0806F118 + push {r4, r5, r6, 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, #4] + strh r3, [r0, #8] + 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, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806F118 + + thumb_func_start sub_0806F144 +sub_0806F144: @ 0x0806F144 + push {r4, r5, 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, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp, #4] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #8] + str r6, [sp, #0xc] + add r0, sp, #0x10 + bl sub_0806F118 + add r0, sp, #0x10 + mov r1, r8 + movs r2, #1 + bl BgAffineSet + add sp, #0x24 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806F144 + + thumb_func_start sub_0806F190 +sub_0806F190: @ 0x0806F190 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + str r2, [sp, #0x20] + adds r4, r3, #0 + ldr r7, [sp, #0x58] + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _0806F1C0 + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x15 + adds r1, r1, r0 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + str r0, [sp, #0x24] + adds r1, r1, r2 + ldrb r1, [r1] + str r1, [sp, #0x28] + movs r0, #0 + b _0806F310 + .align 2, 0 +_0806F1C0: .4byte gUnknown_82FAD4C +_0806F1C4: + movs r5, #0 + adds r0, #1 + str r0, [sp, #0x30] + b _0806F2F8 +_0806F1CC: + ldrh r0, [r4] + ldr r2, _0806F204 + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #5 + mov r8, r1 + movs r2, #0xc0 + lsls r2, r2, #4 + adds r1, r2, #0 + ands r1, r0 + mov r2, sp + strh r0, [r2, #0x34] + cmp r1, #0 + bne _0806F20C + ldr r0, [sp, #0x20] + add r0, r8 + adds r1, r7, #0 + ldr r2, _0806F208 + bl CpuSet + adds r4, #2 + str r4, [sp, #0x2c] + adds r7, #0x20 + mov sl, r7 + adds r5, #1 + mov sb, r5 + b _0806F2EE + .align 2, 0 +_0806F204: .4byte 0x000003FF +_0806F208: .4byte 0x04000008 +_0806F20C: + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + bne _0806F250 + movs r1, #0 + adds r4, #2 + str r4, [sp, #0x2c] + movs r2, #0x20 + adds r2, r2, r7 + mov sl, r2 + adds r5, #1 + mov sb, r5 +_0806F224: + lsls r4, r1, #0x18 + asrs r4, r4, #0x18 + movs r0, #7 + subs r0, r0, r4 + lsls r0, r0, #2 + add r0, r8 + ldr r1, [sp, #0x20] + adds r0, r1, r0 + lsls r1, r4, #2 + adds r1, r7, r1 + ldr r2, _0806F24C + bl CpuSet + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + asrs r4, r4, #0x18 + cmp r4, #7 + ble _0806F224 + b _0806F2EE + .align 2, 0 +_0806F24C: .4byte 0x04000001 +_0806F250: + movs r1, #0 + adds r4, #2 + str r4, [sp, #0x2c] + movs r2, #0x20 + adds r2, r2, r7 + mov sl, r2 + adds r5, #1 + mov sb, r5 + movs r0, #0xf + mov ip, r0 +_0806F264: + movs r2, #0 + lsls r4, r1, #0x18 + lsls r0, r4, #2 + lsrs r0, r0, #0x18 + adds r6, r0, #3 + mov r1, r8 + adds r5, r1, r0 +_0806F272: + lsls r1, r2, #0x18 + asrs r1, r1, #0x18 + 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] + mov r0, ip + ands r0, r2 + lsls r0, r0, #4 + lsrs r2, r2, #4 + orrs r0, r2 + strb r0, [r3] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _0806F272 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r4, r1 + lsrs r1, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #7 + ble _0806F264 + mov r2, sp + ldrh r0, [r2, #0x34] + movs r2, #0x80 + lsls r2, r2, #4 + ands r0, r2 + cmp r0, #0 + beq _0806F2E4 + movs r1, #0 +_0806F2BA: + lsls r4, r1, #0x18 + asrs r4, r4, #0x18 + movs r0, #7 + subs r0, r0, r4 + lsls r0, r0, #2 + add r0, sp + lsls r1, r4, #2 + adds r1, r7, r1 + ldr r2, _0806F2E0 + bl CpuSet + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + asrs r4, r4, #0x18 + cmp r4, #7 + ble _0806F2BA + b _0806F2EE + .align 2, 0 +_0806F2E0: .4byte 0x04000001 +_0806F2E4: + mov r0, sp + adds r1, r7, #0 + ldr r2, _0806F328 + bl CpuSet +_0806F2EE: + ldr r4, [sp, #0x2c] + mov r7, sl + mov r1, sb + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 +_0806F2F8: + ldr r2, [sp, #0x28] + cmp r5, r2 + bhs _0806F300 + b _0806F1CC +_0806F300: + movs r0, #0x20 + ldr r1, [sp, #0x28] + subs r0, r0, r1 + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r2, [sp, #0x30] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 +_0806F310: + ldr r1, [sp, #0x24] + cmp r0, r1 + bhs _0806F318 + b _0806F1C4 +_0806F318: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F328: .4byte 0x04000008 + thumb_func_end sub_0806F190 + + thumb_func_start sub_0806F32C +sub_0806F32C: @ 0x0806F32C + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r3, #1 +_0806F334: + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _0806F340 + adds r0, r1, #0 + b _0806F34E +_0806F340: + lsrs r2, r2, #1 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1f + bls _0806F334 + movs r0, #0 +_0806F34E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F32C + + thumb_func_start sub_0806F354 +sub_0806F354: @ 0x0806F354 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r4, r1, #0 + ldr r2, _0806F384 + movs r3, #0 + cmp r3, r4 + bge _0806F3A0 + movs r6, #1 + ldr r0, _0806F388 + adds r5, r0, #0 +_0806F368: + adds r0, r7, r3 + ldrb r0, [r0] + eors r2, r0 + movs r1, #0 + adds r3, #1 +_0806F372: + adds r0, r2, #0 + ands r0, r6 + cmp r0, #0 + beq _0806F38C + lsrs r0, r2, #1 + eors r0, r5 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _0806F38E + .align 2, 0 +_0806F384: .4byte 0x00001121 +_0806F388: .4byte 0x00008408 +_0806F38C: + lsrs r2, r2, #1 +_0806F38E: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #7 + bls _0806F372 + lsls r0, r3, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blt _0806F368 +_0806F3A0: + mvns r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0806F354 + + thumb_func_start sub_0806F3AC +sub_0806F3AC: @ 0x0806F3AC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r2, _0806F3E8 + movs r3, #0 + cmp r3, r4 + bhs _0806F3DA + ldr r6, _0806F3EC +_0806F3BC: + lsrs r1, r2, #8 + adds r0, r5, r3 + ldrb r0, [r0] + eors r2, r0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r6 + ldrh r0, [r0] + adds r2, r0, #0 + eors r2, r1 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blo _0806F3BC +_0806F3DA: + mvns r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0806F3E8: .4byte 0x00001121 +_0806F3EC: .4byte gUnknown_82FAD64 + thumb_func_end sub_0806F3AC + + thumb_func_start sub_0806F3F0 +sub_0806F3F0: @ 0x0806F3F0 + push {r4, lr} + adds r4, r0, #0 + movs r3, #0 + movs r2, #0 + cmp r3, r1 + bhs _0806F408 +_0806F3FC: + adds r0, r4, r2 + ldrb r0, [r0] + adds r3, r3, r0 + adds r2, #1 + cmp r2, r1 + blo _0806F3FC +_0806F408: + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0806F3F0 + + thumb_func_start sub_0806F410 +sub_0806F410: @ 0x0806F410 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov ip, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + mov r0, sp + strh r3, [r0] + movs r6, #0 + cmp r6, ip + bhs _0806F496 + ldr r0, _0806F4A8 + mov sl, r0 + ldr r1, _0806F4AC + mov sb, r1 +_0806F43E: + mov r0, r8 + adds r5, r6, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0xf + mov r1, sl + adds r0, r5, r1 + ldr r3, [r0] + lsls r4, r3, #0x1b + lsls r2, r3, #0x16 + lsls r3, r3, #0x11 + add r5, sb + lsrs r4, r4, #0x1b + ldr r1, [sp] + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1b + subs r0, r0, r4 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r4, r4, r0 + lsrs r2, r2, #0x1b + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + subs r0, r0, r2 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #5 + orrs r4, r2 + lsrs r3, r3, #0x1b + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + subs r1, r1, r3 + adds r0, r1, #0 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #0xa + orrs r4, r3 + strh r4, [r5] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, ip + blo _0806F43E +_0806F496: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F4A8: .4byte gUnknown_20373B4 +_0806F4AC: .4byte gUnknown_20377B4 + thumb_func_end sub_0806F410 + + thumb_func_start sub_0806F4B0 +sub_0806F4B0: @ 0x0806F4B0 + push {r4, lr} + sub sp, #0x14 + adds r4, r1, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + adds r0, r4, #0 + mov r1, sp + bl sub_08008828 + add sp, #0x14 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F4B0 + + thumb_func_start sub_0806F4D0 +sub_0806F4D0: @ 0x0806F4D0 + push {r4, lr} + sub sp, #0x14 + adds r4, r1, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A1B4 + adds r0, r4, #0 + mov r1, sp + bl sub_08008828 + add sp, #0x14 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F4D0 + + thumb_func_start sub_0806F4F0 +sub_0806F4F0: @ 0x0806F4F0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + movs r4, #0 +_0806F4F8: + movs r0, #0x8c + muls r0, r4, r0 + adds r0, r6, r0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _0806F50E + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0806F50E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0806F4F8 + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0806F4F0 + + thumb_func_start sub_0806F520 +sub_0806F520: @ 0x0806F520 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + mov sl, r1 + movs r7, #0 + movs r5, #0 + mov r6, sl + adds r6, #0x74 + movs r0, #1 + mov r8, r0 +_0806F53A: + movs r0, #0x8c + muls r0, r5, r0 + mov r1, sb + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _0806F568 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A1B4 + adds r1, r0, #0 + cmp r1, #0 + bne _0806F568 + lsls r0, r5, #1 + adds r0, r6, r0 + b _0806F56E +_0806F568: + lsls r0, r5, #1 + adds r0, r6, r0 + mov r1, r8 +_0806F56E: + strh r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _0806F53A + mov r0, sl + str r7, [r0, #0x70] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0806F520 + + thumb_func_start sub_0806F58C +sub_0806F58C: @ 0x0806F58C + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 +_0806F592: + movs r0, #0x8c + muls r0, r4, r0 + adds r0, r5, r0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + bne _0806F5A8 + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + b _0806F5B6 +_0806F5A8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0806F592 + movs r0, #1 + rsbs r0, r0, #0 +_0806F5B6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0806F58C + + thumb_func_start sub_0806F5BC +sub_0806F5BC: @ 0x0806F5BC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_080D3C90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806F614 + adds r0, r4, #0 + adds r0, #0x74 + ldr r1, _0806F640 + ldr r1, [r1] + bl sub_080088B8 + adds r1, r4, #0 + adds r1, #0x7c + adds r0, r5, #0 + bl sub_0806F4B0 + adds r0, r5, #0 + movs r1, #0x40 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0806F644 + ldr r1, [r1] + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r1, r1, r2 + adds r0, r4, #0 + adds r0, #0x50 + ldr r2, _0806F648 + adds r1, 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_080D3F04 +_0806F614: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x50 + bl memcpy + adds r0, r4, #0 + bl sub_0806E3BC + adds r1, r4, #0 + adds r1, #0x88 + movs r0, #0 + str r0, [r1] + adds r0, r5, #0 + bl sub_08067670 + bl sub_080CE188 + bl sub_0806B004 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0806F640: .4byte gUnknown_3005AF0 +_0806F644: .4byte gUnknown_3005AEC +_0806F648: .4byte 0x00002BE0 + thumb_func_end sub_0806F5BC + + thumb_func_start sub_0806F64C +sub_0806F64C: @ 0x0806F64C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_0806F58C + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x8c + muls r0, r1, r0 + adds r4, r4, r0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806F5BC + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0806F64C + + thumb_func_start sub_0806F670 +sub_0806F670: @ 0x0806F670 + push {lr} + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0806F694 + adds r0, r0, r1 + ldr r1, _0806F698 + ldr r1, [r1] + ldr r2, _0806F69C + adds r1, r1, r2 + bl sub_0806F64C + pop {r0} + bx r0 + .align 2, 0 +_0806F694: .4byte gUnknown_2024190 +_0806F698: .4byte gUnknown_3005AEC +_0806F69C: .4byte 0x00003030 + thumb_func_end sub_0806F670 + + thumb_func_start sub_0806F6A0 +sub_0806F6A0: @ 0x0806F6A0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x8c + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _0806F6F6 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A1B4 + adds r6, r0, #0 + cmp r6, #0 + bne _0806F6F6 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x50 + bl memcpy + adds r0, r4, #0 + bl sub_08067658 + 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, r0, #1 + adds r1, r5, r0 + ldr r0, [r1] + str r0, [r2] + str r6, [r1] + adds r0, r4, #0 + bl sub_0806F9D8 +_0806F6F6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0806F6A0 + + thumb_func_start sub_0806F6FC +sub_0806F6FC: @ 0x0806F6FC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r5, #0 + ldr r7, _0806F718 +_0806F704: + adds r0, r4, #0 + bl sub_0806DA08 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0806F740 + movs r6, #1 + adds r5, #1 + b _0806F72C + .align 2, 0 +_0806F718: .4byte 0x0000FFFF +_0806F71C: + movs r6, #0 + cmp r0, r7 + bne _0806F72C + ldr r0, _0806F74C + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_08068F64 +_0806F72C: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _0806F71C + cmp r5, #0x63 + ble _0806F704 +_0806F740: + adds r0, r4, #0 + bl sub_0806884C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0806F74C: .4byte gUnknown_2024186 + thumb_func_end sub_0806F6FC + + thumb_func_start sub_0806F750 +sub_0806F750: @ 0x0806F750 + push {r4, r5, r6, r7, lr} + sub sp, #0x68 + adds r5, r0, #0 + ldr r1, _0806F7EC + bl sub_0806F4D0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r5, #0 + mov r1, sp + bl sub_08068B44 + mov r0, sp + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x64 + beq _0806F79E + mov r0, sp + movs r1, #0x19 + bl sub_0806A058 + adds r1, r5, #0 + adds r1, #0x88 + ldr r1, [r1] + adds r0, r0, r1 + str r0, [sp, #0x64] + add r2, sp, #0x64 + mov r0, sp + movs r1, #0x19 + bl sub_0806A774 + mov r0, sp + bl sub_0806F6FC +_0806F79E: + ldr r0, _0806F7F0 + movs r1, #0xfa + lsls r1, 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 _0806F7CC + adds r4, r5, #0 + adds r4, #0x50 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080D3E90 + adds r0, r4, #0 + bl sub_0806F9D8 +_0806F7CC: + adds r0, r5, #0 + bl sub_08067658 + adds r1, r5, #0 + adds r1, #0x88 + movs r0, #0 + str r0, [r1] + bl sub_080CE188 + bl sub_0806B004 + adds r0, r7, #0 + add sp, #0x68 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806F7EC: .4byte gUnknown_2021C40 +_0806F7F0: .4byte gUnknown_2024190 + thumb_func_end sub_0806F750 + + thumb_func_start sub_0806F7F4 +sub_0806F7F4: @ 0x0806F7F4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x8c + muls r0, r1, r0 + adds r0, r5, r0 + bl sub_0806F750 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_0806F6A0 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F7F4 + + thumb_func_start sub_0806F81C +sub_0806F81C: @ 0x0806F81C + push {lr} + ldr r0, _0806F838 + ldr r0, [r0] + ldr r1, _0806F83C + adds r0, r0, r1 + ldr r1, _0806F840 + ldrb r1, [r1] + bl sub_0806F7F4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_0806F838: .4byte gUnknown_3005AEC +_0806F83C: .4byte 0x00003030 +_0806F840: .4byte gUnknown_2037280 + thumb_func_end sub_0806F81C + + thumb_func_start sub_0806F844 +sub_0806F844: @ 0x0806F844 + 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_0806A1B4 + adds r0, r0, r5 + str r0, [sp, #0x50] + add r2, sp, #0x50 + mov r0, sp + movs r1, #0x19 + bl sub_0806A864 + mov r0, sp + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x54 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F844 + + thumb_func_start sub_0806F880 +sub_0806F880: @ 0x0806F880 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08068C00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r0, #0x88 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_0806F844 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806F880 + + thumb_func_start sub_0806F8AC +sub_0806F8AC: @ 0x0806F8AC + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F880 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0806F8D8 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r1, _0806F8DC + adds r0, r5, #0 + bl sub_0806F4D0 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806F8D8: .4byte gUnknown_2021C54 +_0806F8DC: .4byte gUnknown_2021C40 + thumb_func_end sub_0806F8AC + + thumb_func_start sub_0806F8E0 +sub_0806F8E0: @ 0x0806F8E0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F880 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0806F910 + adds r0, r5, #0 + bl sub_0806F4D0 + movs r0, #0x64 + muls r4, r0, r4 + adds r4, #0x64 + ldr r0, _0806F914 + adds r1, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0806F910: .4byte gUnknown_2021C40 +_0806F914: .4byte gUnknown_2021C54 + thumb_func_end sub_0806F8E0 + + thumb_func_start sub_0806F918 +sub_0806F918: @ 0x0806F918 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0x8c + muls r1, r2, r1 + adds r0, r0, r1 + bl sub_0806F8E0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_0806F918 + + thumb_func_start sub_0806F930 +sub_0806F930: @ 0x0806F930 + push {lr} + ldr r0, _0806F94C + ldr r0, [r0] + ldr r1, _0806F950 + adds r0, r0, r1 + ldr r1, _0806F954 + ldrb r1, [r1] + bl sub_0806F918 + ldr r1, _0806F958 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0806F94C: .4byte gUnknown_3005AEC +_0806F950: .4byte 0x00003030 +_0806F954: .4byte gUnknown_2037280 +_0806F958: .4byte gUnknown_2037282 + thumb_func_end sub_0806F930 + + thumb_func_start sub_0806F95C +sub_0806F95C: @ 0x0806F95C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806F97C + ldr r2, [r1] + ldr r1, _0806F980 + adds r3, r2, r1 + ldr r1, [r3] + adds r1, r1, r0 + str r1, [r3] + ldr r1, _0806F984 + adds r2, r2, r1 + ldr r1, [r2] + adds r1, r1, r0 + str r1, [r2] + bx lr + .align 2, 0 +_0806F97C: .4byte gUnknown_3005AEC +_0806F980: .4byte 0x000030B8 +_0806F984: .4byte 0x00003144 + thumb_func_end sub_0806F95C + + thumb_func_start sub_0806F988 +sub_0806F988: @ 0x0806F988 + push {r4, r5, r6, lr} + ldr r6, _0806F9AC + ldr r5, _0806F9B0 + ldrh r0, [r5] + movs r4, #0x8c + adds r1, r0, #0 + muls r1, r4, r1 + ldr r0, _0806F9B4 + adds r1, r1, r0 + ldr r0, [r6] + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + bne _0806F9B8 + movs r0, #0 + b _0806F9CE + .align 2, 0 +_0806F9AC: .4byte gUnknown_3005AEC +_0806F9B0: .4byte gUnknown_2037280 +_0806F9B4: .4byte 0x00003030 +_0806F9B8: + ldrh r0, [r5] + adds r1, r0, #0 + muls r1, r4, r1 + ldr r0, _0806F9D4 + adds r1, r1, r0 + ldr r0, [r6] + adds r0, r0, r1 + bl sub_0806F8AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0806F9CE: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0806F9D4: .4byte 0x00003030 + thumb_func_end sub_0806F988 + + thumb_func_start sub_0806F9D8 +sub_0806F9D8: @ 0x0806F9D8 + push {lr} + movs r3, #0 + movs r2, #7 + adds r1, r0, #0 + adds r1, #0x2b +_0806F9E2: + strb r3, [r1] + subs r1, #1 + subs r2, #1 + cmp r2, #0 + bge _0806F9E2 + adds r2, r0, #0 + adds r2, #0x2c + movs r3, #0 + adds r1, r0, #0 + adds r1, #0x36 +_0806F9F6: + strb r3, [r1] + subs r1, #1 + cmp r1, r2 + bge _0806F9F6 + bl sub_080D3C3C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806F9D8 + + thumb_func_start sub_0806FA08 +sub_0806FA08: @ 0x0806FA08 + push {r4, lr} + adds r4, r0, #0 + bl sub_08067658 + adds r1, r4, #0 + adds r1, #0x88 + movs r0, #0 + str r0, [r1] + adds r4, #0x50 + adds r0, r4, #0 + bl sub_0806F9D8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806FA08 + + thumb_func_start sub_0806FA28 +sub_0806FA28: @ 0x0806FA28 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + movs r6, #0x8c +_0806FA30: + adds r0, r4, #0 + muls r0, r6, r0 + adds r0, r5, r0 + bl sub_0806FA08 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0806FA30 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r5, r1 + movs r1, #0 + str r1, [r0] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r5, r2 + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0806FA28 + + thumb_func_start sub_0806FA5C +sub_0806FA5C: @ 0x0806FA5C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0 + mov r8, r0 + ldr r0, _0806FA88 + mov ip, r0 +_0806FA6E: + movs r7, #0 + movs r6, #1 + movs r4, #0x80 + lsls r4, r4, #9 + movs r5, #0x28 + mov r3, ip + adds r3, #0x28 +_0806FA7C: + movs r1, #0 + ldrh r0, [r3, #4] + cmp r0, r2 + bne _0806FA8C + lsrs r2, r4, #0x10 + b _0806FAB8 + .align 2, 0 +_0806FA88: .4byte gUnknown_82F5CA4 +_0806FA8C: + adds r1, #1 + cmp r1, #4 + bgt _0806FAA2 + lsls r0, r1, #3 + adds r0, r0, r5 + add r0, ip + ldrh r0, [r0, #4] + cmp r0, r2 + bne _0806FA8C + lsrs r2, r4, #0x10 + movs r7, #1 +_0806FAA2: + cmp r7, #0 + bne _0806FAB8 + movs r0, #0x80 + lsls r0, r0, #9 + adds r4, r4, r0 + adds r5, #0x28 + adds r3, #0x28 + adds r6, #1 + ldr r0, _0806FAD8 + cmp r6, r0 + ble _0806FA7C +_0806FAB8: + movs r0, #0xce + lsls r0, r0, #1 + cmp r6, r0 + beq _0806FACA + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #4 + ble _0806FA6E +_0806FACA: + adds r0, r2, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806FAD8: .4byte 0x0000019B + thumb_func_end sub_0806FA5C + + thumb_func_start sub_0806FADC +sub_0806FADC: @ 0x0806FADC + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r0, #0 + movs r7, #1 + rsbs r7, r7, #0 + movs r4, #0 +_0806FAE8: + movs r0, #0x8c + muls r0, r4, r0 + adds r0, r6, r0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xfe + bne _0806FAFC + adds r7, r4, #0 +_0806FAFC: + adds r4, #1 + cmp r4, #1 + ble _0806FAE8 + movs r5, #0 + movs r4, #0 +_0806FB06: + movs r0, #0x8c + muls r0, r4, r0 + adds r0, r6, r0 + movs r1, #0xb + bl sub_0806A1B4 + lsls r1, r4, #2 + add r1, sp + str r0, [r1] + cmp r0, #0x84 + bne _0806FB20 + adds r5, #1 + adds r7, r4, #0 +_0806FB20: + adds r4, #1 + cmp r4, #1 + ble _0806FB06 + cmp r5, #2 + bne _0806FB3A + bl sub_0806F050 + lsls r0, r0, #0x10 + ldr r1, _0806FB5C + movs r7, #1 + cmp r0, r1 + bls _0806FB3A + movs r7, #0 +_0806FB3A: + movs r0, #0x8c + muls r0, r7, r0 + adds r0, r6, r0 + movs r1, #0xc + bl sub_0806A1B4 + cmp r0, #0xc3 + bne _0806FB56 + bl sub_0806F050 + lsls r0, r0, #0x10 + ldr r1, _0806FB5C + cmp r0, r1 + bls _0806FB60 +_0806FB56: + movs r0, #1 + rsbs r0, r0, #0 + b _0806FB62 + .align 2, 0 +_0806FB5C: .4byte 0x7FFE0000 +_0806FB60: + adds r0, r7, #0 +_0806FB62: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0806FADC + + thumb_func_start sub_0806FB6C +sub_0806FB6C: @ 0x0806FB6C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r6, #0 + ldr r0, _0806FBB0 + ldrh r0, [r0, #0x24] + bl sub_0806F094 + adds r0, r5, #0 + bl sub_0806FADC + adds r1, r0, #0 + cmp r1, #0 + bge _0806FBB8 + bl sub_0806F0A4 + adds r4, r0, #0 + bl sub_0806F050 + movs r1, #0x8c + lsls r1, r1, #1 + adds r5, r5, r1 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806FBB4 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + orrs r4, r0 + str r4, [r5] + b _0806FC04 + .align 2, 0 +_0806FBB0: .4byte gUnknown_3002360 +_0806FBB4: .4byte 0x0000FFFE +_0806FBB8: + movs r0, #0x8c + muls r0, r1, r0 + adds r0, r5, r0 + movs r1, #0 + movs r2, #0 + bl sub_0806A1B4 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0806FBCE: + bl sub_0806F0A4 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + orrs r4, r0 + adds r0, r4, #0 + bl sub_0806CB4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r7, r0 + bne _0806FBF2 + cmp r4, #0 + bne _0806FBFC +_0806FBF2: + adds r6, #1 + movs r0, #0x96 + lsls r0, r0, #4 + cmp r6, r0 + ble _0806FBCE +_0806FBFC: + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r5, r1 + str r4, [r0] +_0806FC04: + movs r0, #0x86 + bl sub_0809D018 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0806FB6C + + thumb_func_start sub_0806FC10 +sub_0806FC10: @ 0x0806FC10 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F050 + movs r1, #0x8c + lsls r1, r1, #1 + adds r4, r4, r1 + movs r2, #0x80 + lsls r2, r2, #8 + adds r1, r2, #0 + orrs r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r4] + movs r0, #0x86 + bl sub_0809D018 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0806FC10 + + thumb_func_start sub_0806FC38 +sub_0806FC38: @ 0x0806FC38 + push {lr} + ldr r0, _0806FC4C + ldr r0, [r0] + ldr r1, _0806FC50 + adds r0, r0, r1 + bl sub_0806FB6C + pop {r0} + bx r0 + .align 2, 0 +_0806FC4C: .4byte gUnknown_3005AEC +_0806FC50: .4byte 0x00003030 + thumb_func_end sub_0806FC38 + + thumb_func_start sub_0806FC54 +sub_0806FC54: @ 0x0806FC54 + push {lr} + ldr r0, _0806FC68 + ldr r0, [r0] + ldr r1, _0806FC6C + adds r0, r0, r1 + bl sub_0806FC10 + pop {r0} + bx r0 + .align 2, 0 +_0806FC68: .4byte gUnknown_3005AEC +_0806FC6C: .4byte 0x00003030 + thumb_func_end sub_0806FC54 + + thumb_func_start sub_0806FC70 +sub_0806FC70: @ 0x0806FC70 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r1, r4, r1 + movs r0, #0xff + strb r0, [r1] + movs r2, #0 +_0806FC82: + mov r1, sp + adds r0, r1, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #5 + ble _0806FC82 + movs r3, #0 + movs r2, #0 +_0806FC96: + mov r1, sp + adds r0, r1, r2 + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0xff + beq _0806FCA8 + adds r0, r4, r3 + strb r1, [r0] + adds r3, #1 +_0806FCA8: + adds r2, #1 + cmp r2, #5 + ble _0806FC96 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806FC70 + + thumb_func_start sub_0806FCB8 +sub_0806FCB8: @ 0x0806FCB8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov sb, r0 + mov r8, r1 + movs r5, #0 + add r1, sp, #4 + add r7, sp, #0xc + adds r2, r1, #0 +_0806FCCE: + adds r0, r2, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0806FCCE + movs r5, #0 + adds r6, r1, #0 +_0806FCE0: + bl sub_0806F050 + mov r1, sp + adds r4, r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + subs r1, r1, r5 + bl __modsi3 + adds r0, r6, r0 + ldrb r0, [r0] + strb r0, [r4] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0806FC70 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0806FCE0 + movs r5, #0 + movs r4, #1 +_0806FD10: + bl sub_0806F050 + adds r1, r7, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ands r0, r4 + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0806FD10 + movs r5, #0 +_0806FD2A: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #5 + bhi _0806FE06 + lsls r0, r0, #2 + ldr r1, _0806FD40 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806FD40: .4byte _0806FD44 +_0806FD44: @ jump table + .4byte _0806FD5C @ case 0 + .4byte _0806FD7A @ case 1 + .4byte _0806FD94 @ case 2 + .4byte _0806FDAE @ case 3 + .4byte _0806FDC8 @ case 4 + .4byte _0806FDE8 @ case 5 +_0806FD5C: + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x27 + bl sub_0806A1B4 + add r2, sp, #0x10 + strb r0, [r2] + mov r0, sb + movs r1, #0x27 + bl sub_0806A774 + b _0806FE06 +_0806FD7A: + add r4, sp, #0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x28 + bl sub_0806A1B4 + strb r0, [r4] + mov r0, sb + movs r1, #0x28 + b _0806FDE0 +_0806FD94: + add r4, sp, #0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x29 + bl sub_0806A1B4 + strb r0, [r4] + mov r0, sb + movs r1, #0x29 + b _0806FDE0 +_0806FDAE: + add r4, sp, #0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x2a + bl sub_0806A1B4 + strb r0, [r4] + mov r0, sb + movs r1, #0x2a + b _0806FDE0 +_0806FDC8: + add r4, sp, #0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x2b + bl sub_0806A1B4 + strb r0, [r4] + mov r0, sb + movs r1, #0x2b +_0806FDE0: + adds r2, r4, #0 + bl sub_0806A774 + b _0806FE06 +_0806FDE8: + add r4, sp, #0x10 + adds r0, r7, r5 + ldrb r1, [r0] + movs r0, #0x8c + muls r0, r1, r0 + add r0, r8 + movs r1, #0x2c + bl sub_0806A1B4 + strb r0, [r4] + mov r0, sb + movs r1, #0x2c + adds r2, r4, #0 + bl sub_0806A774 +_0806FE06: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0806FD2A + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0806FCB8 + + thumb_func_start sub_0806FE20 +sub_0806FE20: @ 0x0806FE20 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + movs r6, #0 + movs r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r5, _0806FE48 + ldrh r1, [r5] + ldr r7, _0806FE4C + adds r0, r3, r7 + cmp r1, r0 + bne _0806FE50 + movs r4, #1 + b _0806FE72 + .align 2, 0 +_0806FE48: .4byte gUnknown_82FB764 +_0806FE4C: .4byte 0x00004E20 +_0806FE50: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0806FEBC + ldr r5, _0806FEC0 + cmp r2, r0 + bhi _0806FE72 + lsls r0, r2, #1 + adds r0, r0, r5 + ldrh r1, [r0] + ldr r7, _0806FEC4 + adds r0, r3, r7 + cmp r1, r0 + bne _0806FE50 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0806FE72: + movs r2, #0 + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _0806FEC4 + cmp r0, r1 + bhi _0806FEAE + adds r7, r5, #0 + adds r3, r1, #0 +_0806FE84: + lsls r1, r2, #1 + add r1, r8 + adds r0, r4, r2 + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #9 + bhi _0806FEAE + adds r0, r4, r2 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r0, r3 + bls _0806FE84 +_0806FEAE: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0806FEBC: .4byte 0x00000471 +_0806FEC0: .4byte gUnknown_82FB764 +_0806FEC4: .4byte 0x00004E20 + thumb_func_end sub_0806FE20 + + thumb_func_start sub_0806FEC8 +sub_0806FEC8: @ 0x0806FEC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r7, r0, #0 + mov sl, r1 + mov sb, r2 + movs r0, #0 + str r0, [sp] + movs r6, #0 + ldr r5, _0806FFCC + movs r2, #0 + ldr r4, _0806FFD0 + ldr r3, _0806FFD4 +_0806FEE8: + lsls r1, r6, #1 + adds r0, r1, r5 + strh r2, [r0] + adds r0, r1, r4 + strh r2, [r0] + adds r1, r1, r3 + strh r2, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bls _0806FEE8 + movs r6, #0 + ldr r2, _0806FFD8 + movs r1, #0 +_0806FF06: + lsls r0, r6, #1 + adds r0, r0, r2 + strh r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #9 + bls _0806FF06 + movs r6, #0 + ldr r2, _0806FFDC + movs r1, #0 +_0806FF1C: + lsls r0, r6, #1 + adds r0, r0, r2 + strh r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x31 + bls _0806FF1C + adds r0, r7, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806FFDC + bl sub_0806DC98 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r6, #0 + ldr r1, _0806FFD0 + mov r8, r1 +_0806FF4A: + adds r5, r6, #0 + adds r5, #0xd + mov r0, sl + adds r1, r5, #0 + bl sub_0806A1B4 + lsls r4, r6, #1 + mov r2, r8 + adds r1, r4, r2 + strh r0, [r1] + mov r0, sb + adds r1, r5, #0 + bl sub_0806A1B4 + ldr r1, _0806FFCC + adds r4, r4, r1 + strh r0, [r4] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bls _0806FF4A + ldr r1, _0806FFD8 + adds r0, r7, #0 + bl sub_0806FE20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r6, #0 +_0806FF86: + ldr r0, _0806FFD0 + lsls r1, r6, #1 + adds r2, r1, r0 + ldrh r1, [r2] + mov sb, r0 + cmp r1, #0 + beq _0806FFFC + movs r5, #0 + cmp r5, r8 + bhs _0806FFEE + adds r4, r2, #0 + ldr r2, _0806FFE0 +_0806FF9E: + ldr r0, _0806FFD8 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r4] + ldrh r1, [r1] + cmp r0, r1 + bne _0806FFE4 + adds r1, r0, #0 + adds r0, r7, #0 + str r2, [sp, #8] + bl sub_08068C6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, [sp, #8] + cmp r0, r2 + bne _0806FFEE + ldrh r1, [r4] + adds r0, r7, #0 + bl sub_08068F64 + b _0806FFEE + .align 2, 0 +_0806FFCC: .4byte gUnknown_20246F0 +_0806FFD0: .4byte gUnknown_20246CC +_0806FFD4: .4byte gUnknown_20246D4 +_0806FFD8: .4byte gUnknown_20246DC +_0806FFDC: .4byte gUnknown_2024668 +_0806FFE0: .4byte 0x0000FFFF +_0806FFE4: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + blo _0806FF9E +_0806FFEE: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r3, _08070118 + mov sb, r3 + cmp r6, #3 + bls _0806FF86 +_0806FFFC: + movs r6, #0 +_0806FFFE: + lsls r0, r6, #1 + mov r2, sb + adds r1, r0, r2 + ldrh r1, [r1] + adds r2, r0, #0 + adds r6, #1 + mov r8, r6 + cmp r1, #0 + beq _08070060 + movs r5, #0 + ldr r0, _08070118 + adds r4, r2, r0 + ldr r6, _0807011C + mov sb, r0 +_0807001A: + ldr r3, _08070120 + adds r0, r5, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081B69B4 + ldrh r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + bne _08070056 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r7, #0 + bl sub_0806DAA0 + cmp r0, #0 + beq _08070056 + ldrh r1, [r4] + adds r0, r7, #0 + bl sub_08068C6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r6 + bne _08070056 + ldrh r1, [r4] + adds r0, r7, #0 + bl sub_08068F64 +_08070056: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x39 + bls _0807001A +_08070060: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bls _0806FFFE + movs r6, #0 + mov r2, sb + ldrh r0, [r2] + ldr r3, _08070124 + mov sl, r3 + cmp r0, #0 + beq _080700CA + mov r4, sb + ldr r0, _08070128 + mov sb, r0 + mov ip, sl +_08070080: + movs r5, #0 + lsls r2, r6, #1 + adds r6, #1 + mov r8, r6 + adds r3, r2, r4 +_0807008A: + lsls r0, r5, #1 + add r0, sb + ldrh r2, [r3] + adds r1, r2, #0 + ldrh r0, [r0] + cmp r1, r0 + bne _080700AC + cmp r1, #0 + beq _080700AC + ldr r1, [sp] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + lsls r1, r1, #1 + add r1, ip + strh r2, [r1] +_080700AC: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _0807008A + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bhi _080700CA + lsls r0, r6, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + bne _08070080 +_080700CA: + movs r6, #0 + mov r2, sl + ldrh r0, [r2] + cmp r0, #0 + beq _08070154 +_080700D4: + movs r5, #0 + adds r3, r6, #1 + mov r8, r3 + ldr r0, [sp, #4] + cmp r5, r0 + bhs _0807013C + ldr r2, _0807011C +_080700E2: + ldr r1, _0807012C + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r1, #0 + beq _08070130 + lsls r0, r6, #1 + mov r3, sl + adds r4, r0, r3 + ldrh r0, [r4] + cmp r0, r1 + bne _08070130 + adds r1, r0, #0 + adds r0, r7, #0 + str r2, [sp, #8] + bl sub_08068C6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, [sp, #8] + cmp r0, r2 + bne _0807013C + ldrh r1, [r4] + adds r0, r7, #0 + bl sub_08068F64 + b _0807013C + .align 2, 0 +_08070118: .4byte gUnknown_20246CC +_0807011C: .4byte 0x0000FFFF +_08070120: .4byte 0x00000121 +_08070124: .4byte gUnknown_20246D4 +_08070128: .4byte gUnknown_20246F0 +_0807012C: .4byte gUnknown_2024668 +_08070130: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [sp, #4] + cmp r5, r0 + blo _080700E2 +_0807013C: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bhi _08070154 + ldr r0, _08070164 + lsls r1, r6, #1 + adds r1, r1, r0 + ldrh r1, [r1] + mov sl, r0 + cmp r1, #0 + bne _080700D4 +_08070154: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08070164: .4byte gUnknown_20246D4 + thumb_func_end sub_0806FEC8 + + thumb_func_start sub_08070168 +sub_08070168: @ 0x08070168 + adds r2, r0, #0 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r2, r1 + movs r1, #0 + str r1, [r0] + movs r3, #0x8e + lsls r3, r3, #1 + adds r0, r2, r3 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_08070168 + + thumb_func_start sub_08070180 +sub_08070180: @ 0x08070180 + push {lr} + ldr r0, _08070194 + ldr r0, [r0] + ldr r1, _08070198 + adds r0, r0, r1 + bl sub_08070168 + pop {r0} + bx r0 + .align 2, 0 +_08070194: .4byte gUnknown_3005AEC +_08070198: .4byte 0x00003030 + thumb_func_end sub_08070180 + + thumb_func_start sub_0807019C +sub_0807019C: @ 0x0807019C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrh r1, [r4] + movs r7, #0xb4 + lsls r7, r7, #1 + cmp r1, r7 + beq _080701B4 + movs r0, #0xaf + lsls r0, r0, #1 + cmp r1, r0 + bne _080701F6 +_080701B4: + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + adds r0, #0x8c + movs r1, #0xc + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r4] + cmp r0, r7 + bne _080701E0 + cmp r6, #0xdd + beq _080701E0 + cmp r2, #0xdd + beq _080701E0 + movs r0, #0xca + strh r0, [r4] +_080701E0: + ldrh r1, [r4] + movs r0, #0xaf + lsls r0, r0, #1 + cmp r1, r0 + bne _080701F6 + cmp r6, #0xdc + beq _080701F6 + cmp r2, #0xdc + beq _080701F6 + movs r0, #0xb7 + strh r0, [r4] +_080701F6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0807019C + + thumb_func_start sub_080701FC +sub_080701FC: @ 0x080701FC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A1B4 + adds r5, r0, #0 + adds r4, #0x8c + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A1B4 + cmp r5, #0xca + beq _0807021E + cmp r0, #0xca + bne _0807023A +_0807021E: + movs r4, #0xac + lsls r4, r4, #1 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08068C6C + lsls r0, r0, #0x10 + ldr r1, _08070240 + cmp r0, r1 + bne _0807023A + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08068F64 +_0807023A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08070240: .4byte 0xFFFF0000 + thumb_func_end sub_080701FC + + thumb_func_start sub_08070244 +sub_08070244: @ 0x08070244 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + adds r6, r1, #0 + movs r4, #0 + movs r0, #1 + mov r8, r0 +_08070256: + movs r0, #0x8c + muls r0, r4, r0 + adds r5, r7, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A1B4 + lsls r1, r4, #1 + add r1, sp + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x84 + bne _0807027E + adds r0, r4, #0 + mov r1, r8 + eors r0, r1 + strb r0, [r6] + strb r4, [r6, #1] + b _08070296 +_0807027E: + adds r0, r5, #0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xfe + bne _08070296 + strb r4, [r6] + adds r0, r4, #0 + mov r1, r8 + eors r0, r1 + strb r0, [r6, #1] +_08070296: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _08070256 + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + bl sub_0806FA5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1d + bne _080702C8 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r7, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080702C8 + movs r4, #0x20 +_080702C8: + ldr r0, _0807031C + cmp r4, r0 + bne _080702E4 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r7, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080702E4 + movs r4, #0xc1 + lsls r4, r4, #1 +_080702E4: + ldrb r0, [r6, #1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + cmp r0, #0x84 + bne _0807030C + ldrb r1, [r6] + movs r0, #0x8c + muls r0, r1, r0 + adds r0, r7, r0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xfe + beq _0807030C + ldrb r1, [r6, #1] + ldrb r0, [r6] + strb r0, [r6, #1] + strb r1, [r6] +_0807030C: + adds r0, r4, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0807031C: .4byte 0x00000183 + thumb_func_end sub_08070244 + + thumb_func_start sub_08070320 +sub_08070320: @ 0x08070320 + push {r4, r5, r6, lr} + sub sp, #0x6c + adds r6, r0, #0 + add r5, sp, #0x64 + adds r1, r5, #0 + bl sub_08070244 + add r4, sp, #0x68 + strh r0, [r4] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0807019C + ldrh r1, [r4] + mov r0, sp + adds r2, r6, #0 + bl sub_0807044C + mov r0, sp + adds r1, r6, #0 + bl sub_0806FCB8 + ldrb r0, [r5, #1] + movs r2, #0x8c + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r6, r1 + ldrb r0, [r5] + muls r2, r0, r2 + adds r2, r6, r2 + mov r0, sp + bl sub_0806FEC8 + ldrh r0, [r4] + cmp r0, #0xac + bne _08070370 + mov r0, sp + adds r1, r6, #0 + bl sub_080701FC +_08070370: + mov r2, sp + adds r2, #0x6a + movs r0, #1 + strb r0, [r2] + mov r0, sp + movs r1, #0x2d + bl sub_0806A774 + ldr r0, _080703A8 + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r0, r1 + mov r1, sp + movs r2, #0x64 + bl memcpy + bl sub_080CE188 + bl sub_0806B004 + adds r0, r6, #0 + bl sub_08070168 + add sp, #0x6c + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080703A8: .4byte gUnknown_2024190 + thumb_func_end sub_08070320 + + thumb_func_start sub_080703AC +sub_080703AC: @ 0x080703AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + adds r7, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + str r4, [sp, #0xc] + adds r1, r5, #0 + movs r2, #5 + movs r3, #0x20 + bl sub_08067730 + movs r0, #0x12 + add r0, sp + mov r8, r0 + strb r4, [r0] + movs r1, #4 + add r0, sp, #0x10 + strh r1, [r0] + adds r0, r7, #0 + movs r1, #0x26 + add r2, sp, #0x10 + bl sub_0806A774 + ldr r2, _08070444 + adds r0, r7, #0 + movs r1, #2 + bl sub_0806A774 + lsls r2, r5, #3 + subs r2, r2, r5 + lsls r2, r2, #2 + ldr r0, _08070448 + adds r2, r2, r0 + adds r0, r7, #0 + movs r1, #0x20 + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x24 + mov r2, r8 + bl sub_0806A774 + cmp r6, #0 + beq _08070428 + mov r2, sp + adds r2, #0x13 + movs r0, #0xfd + strb r0, [r2] + adds r0, r7, #0 + movs r1, #0x23 + bl sub_0806A774 +_08070428: + add r2, sp, #0x14 + movs r0, #1 + strb r0, [r2] + adds r0, r7, #0 + movs r1, #0x2d + bl sub_0806A774 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08070444: .4byte gUnknown_85C8C62 +_08070448: .4byte gUnknown_82F0D65 + thumb_func_end sub_080703AC + + thumb_func_start sub_0807044C +sub_0807044C: @ 0x0807044C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r6, r0, #0 + adds r5, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r0, #0x8c + lsls r0, r0, #1 + adds r2, r2, r0 + ldr r1, [r2] + movs r0, #1 + str r0, [sp] + str r1, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + str r4, [sp, #0xc] + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #5 + movs r3, #0x20 + bl sub_08067730 + movs r0, #0x12 + add r0, sp + mov r8, r0 + strb r4, [r0] + movs r1, #4 + add r0, sp, #0x10 + strh r1, [r0] + adds r0, r6, #0 + movs r1, #0x26 + add r2, sp, #0x10 + bl sub_0806A774 + ldr r2, _080704C8 + adds r0, r6, #0 + movs r1, #2 + bl sub_0806A774 + lsls r2, r5, #3 + subs r2, r2, r5 + lsls r2, r2, #2 + ldr r0, _080704CC + adds r2, r2, r0 + adds r0, r6, #0 + movs r1, #0x20 + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #0x24 + mov r2, r8 + bl sub_0806A774 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080704C8: .4byte gUnknown_85C8C62 +_080704CC: .4byte gUnknown_82F0D65 + thumb_func_end sub_0807044C + + thumb_func_start sub_080704D0 +sub_080704D0: @ 0x080704D0 + push {lr} + ldr r0, _080704E4 + ldr r0, [r0] + ldr r1, _080704E8 + adds r0, r0, r1 + bl sub_08070320 + pop {r0} + bx r0 + .align 2, 0 +_080704E4: .4byte gUnknown_3005AEC +_080704E8: .4byte 0x00003030 + thumb_func_end sub_080704D0 + + thumb_func_start sub_080704EC +sub_080704EC: @ 0x080704EC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + movs r7, #0 + movs r5, #0 +_080704F6: + movs r0, #0x8c + adds r4, r5, #0 + muls r4, r0, r4 + adds r0, r6, r4 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _08070516 + adds r1, r6, #0 + adds r1, #0x88 + adds r1, r1, r4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + adds r7, #1 +_08070516: + adds r5, #1 + cmp r5, #1 + bls _080704F6 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r6, r1 + ldr r0, [r0] + cmp r0, #0 + bne _0807055C + cmp r7, #2 + bne _0807055C + subs r1, #4 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0807055C + adds r0, r6, #0 + bl sub_08070774 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _080705B4 + bl __udivsi3 + cmp r4, r0 + bls _0807055C + bl sub_0806FC38 +_0807055C: + movs r0, #0x8e + lsls r0, r0, #1 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080705E8 + bl sub_08071C9C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r0, _080705B8 + ldrb r0, [r0] + cmp r5, r0 + bhs _080705E8 + ldr r4, _080705BC +_08070584: + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _080705DC + adds r0, r4, #0 + movs r1, #4 + bl sub_0806A058 + cmp r0, #0 + bne _080705DC + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + adds r1, r0, #0 + str r1, [sp] + cmp r0, #0 + beq _080705D0 + cmp r0, r6 + blo _080705C0 + subs r0, r0, r6 + b _080705C2 + .align 2, 0 +_080705B4: .4byte 0x0000FFFF +_080705B8: .4byte gUnknown_202418D +_080705BC: .4byte gUnknown_2024190 +_080705C0: + subs r0, r1, #1 +_080705C2: + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x20 + mov r2, sp + bl sub_0806A774 + b _080705DC +_080705D0: + ldr r0, _080705D8 + strh r5, [r0] + movs r0, #1 + b _080705EA + .align 2, 0 +_080705D8: .4byte gUnknown_2037280 +_080705DC: + adds r4, #0x64 + adds r5, #1 + ldr r0, _080705F4 + ldrb r0, [r0] + cmp r5, r0 + blo _08070584 +_080705E8: + movs r0, #0 +_080705EA: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080705F4: .4byte gUnknown_202418D + thumb_func_end sub_080704EC + + thumb_func_start sub_080705F8 +sub_080705F8: @ 0x080705F8 + push {lr} + ldr r0, _08070610 + ldr r0, [r0] + ldr r1, _08070614 + adds r0, r0, r1 + bl sub_080704EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08070610: .4byte gUnknown_3005AEC +_08070614: .4byte 0x00003030 + thumb_func_end sub_080705F8 + + thumb_func_start sub_08070618 +sub_08070618: @ 0x08070618 + push {lr} + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _08070628 + movs r0, #1 +_08070628: + pop {r1} + bx r1 + thumb_func_end sub_08070618 + + thumb_func_start sub_0807062C +sub_0807062C: @ 0x0807062C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _08070656 + ldr r1, _08070674 + adds r0, r4, #0 + bl sub_0806F4D0 + adds r0, r4, #0 + movs r1, #7 + mov r2, sp + bl sub_0806A1B4 + ldr r0, _08070678 + mov r1, sp + bl sub_080088B8 +_08070656: + adds r4, #0x8c + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _0807066C + ldr r1, _0807067C + adds r0, r4, #0 + bl sub_0806F4D0 +_0807066C: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08070674: .4byte gUnknown_2021C40 +_08070678: .4byte gUnknown_2021C68 +_0807067C: .4byte gUnknown_2021C54 + thumb_func_end sub_0807062C + + thumb_func_start sub_08070680 +sub_08070680: @ 0x08070680 + push {r4, r5, lr} + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080706B4 + adds r0, r0, r4 + ldr r1, _080706B8 + bl sub_0806F4D0 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A1B4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080706B4: .4byte gUnknown_2024190 +_080706B8: .4byte gUnknown_2021C40 + thumb_func_end sub_08070680 + + thumb_func_start sub_080706BC +sub_080706BC: @ 0x080706BC + push {lr} + ldr r0, _080706D0 + ldr r0, [r0] + ldr r1, _080706D4 + adds r0, r0, r1 + bl sub_0807062C + pop {r0} + bx r0 + .align 2, 0 +_080706D0: .4byte gUnknown_3005AEC +_080706D4: .4byte 0x00003030 + thumb_func_end sub_080706BC + + thumb_func_start sub_080706D8 +sub_080706D8: @ 0x080706D8 + push {r4, lr} + ldr r4, _080706F0 + ldr r0, [r4] + ldr r1, _080706F4 + adds r0, r0, r1 + bl sub_08070618 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080706F8 + movs r0, #1 + b _0807071A + .align 2, 0 +_080706F0: .4byte gUnknown_3005AEC +_080706F4: .4byte 0x00003030 +_080706F8: + ldr r0, [r4] + ldr r1, _08070710 + adds r0, r0, r1 + bl sub_0806F4F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08070714 + movs r0, #0 + b _0807071A + .align 2, 0 +_08070710: .4byte 0x00003030 +_08070714: + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0807071A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080706D8 + + thumb_func_start sub_08070720 +sub_08070720: @ 0x08070720 + push {lr} + ldr r0, _0807073C + ldr r0, [r0] + ldr r1, _08070740 + adds r0, r0, r1 + bl sub_0806F4F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08070738 + movs r0, #0 +_08070738: + pop {r1} + bx r1 + .align 2, 0 +_0807073C: .4byte gUnknown_3005AEC +_08070740: .4byte 0x00003030 + thumb_func_end sub_08070720 + + thumb_func_start sub_08070744 +sub_08070744: @ 0x08070744 + push {r4, r5, r6, lr} + adds r5, r1, #0 + movs r4, #0 + adds r1, r0, #0 +_0807074C: + movs r3, #0 + ldrh r0, [r1] + adds r2, r5, #0 +_08070752: + ldrh r6, [r2] + cmp r0, r6 + bne _0807075C + movs r0, #1 + b _0807076E +_0807075C: + adds r2, #2 + adds r3, #1 + cmp r3, #1 + ble _08070752 + adds r1, #2 + adds r4, #1 + cmp r4, #1 + ble _0807074C + movs r0, #0 +_0807076E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08070744 + + thumb_func_start sub_08070774 +sub_08070774: @ 0x08070774 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + str r0, [sp, #0x1c] + movs r7, #0 + mov r0, sp + adds r0, #8 + str r0, [sp, #0x20] + add r1, sp, #0xc + mov sb, r1 + mov r2, sp + adds r2, #0x14 + str r2, [sp, #0x24] + subs r0, #6 + ldr r1, _08070828 + mov sl, r1 + ldr r5, [sp, #0x20] + mov r8, r0 + mov r6, sp + str r2, [sp, #0x28] + mov r2, sb + str r2, [sp, #0x2c] +_080707A6: + movs r0, #0x8c + adds r4, r7, #0 + muls r4, r0, r4 + ldr r0, [sp, #0x1c] + adds r4, r0, r4 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A1B4 + ldr r1, [sp, #0x2c] + stm r1!, {r0} + str r1, [sp, #0x2c] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A1B4 + adds r1, r0, #0 + ldrh r0, [r5] + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x28] + stm r2!, {r0} + str r2, [sp, #0x28] + ldrh r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrb r0, [r0, #0x14] + strh r0, [r6] + ldrh r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrb r0, [r0, #0x15] + mov r1, r8 + strh r0, [r1] + adds r5, #2 + movs r2, #4 + add r8, r2 + adds r6, #4 + adds r7, #1 + cmp r7, #1 + bls _080707A6 + mov r0, sp + ldrh r1, [r0] + cmp r1, #0xf + beq _08070824 + ldrh r0, [r0, #4] + cmp r0, #0xf + beq _08070824 + cmp r1, #0xd + bne _0807082C + cmp r0, #0xd + bne _08070830 +_08070824: + movs r0, #0 + b _08070884 + .align 2, 0 +_08070828: .4byte gUnknown_82F0D54 +_0807082C: + cmp r0, #0xd + bne _0807083C +_08070830: + ldr r1, [sp, #0xc] + mov r2, sb + ldr r0, [r2, #4] + cmp r1, r0 + beq _0807087E + b _08070882 +_0807083C: + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x24] + ldr r1, [r2, #4] + cmp r0, r1 + beq _08070824 + cmp r0, #0xff + beq _08070824 + cmp r1, #0xff + beq _08070824 + add r1, sp, #4 + mov r0, sp + bl sub_08070744 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08070824 + ldr r0, [sp, #0x20] + ldrh r1, [r0, #2] + ldrh r0, [r0] + cmp r0, r1 + bne _08070874 + ldr r1, [sp, #0xc] + mov r2, sb + ldr r0, [r2, #4] + cmp r1, r0 + beq _08070882 + movs r0, #0x46 + b _08070884 +_08070874: + ldr r1, [sp, #0xc] + mov r2, sb + ldr r0, [r2, #4] + cmp r1, r0 + bne _08070882 +_0807087E: + movs r0, #0x14 + b _08070884 +_08070882: + movs r0, #0x32 +_08070884: + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08070774 + + thumb_func_start sub_08070894 +sub_08070894: @ 0x08070894 + push {lr} + ldr r0, _080708AC + ldr r0, [r0] + ldr r1, _080708B0 + adds r0, r0, r1 + bl sub_08070774 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080708AC: .4byte gUnknown_3005AEC +_080708B0: .4byte 0x00003030 + thumb_func_end sub_08070894 + + thumb_func_start sub_080708B4 +sub_080708B4: @ 0x080708B4 + push {lr} + bl sub_08070894 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + movs r1, #0 + cmp r0, #0 + bne _080708C8 + movs r1, #3 +_080708C8: + cmp r0, #0x14 + bne _080708CE + movs r1, #2 +_080708CE: + cmp r0, #0x32 + bne _080708D4 + movs r1, #1 +_080708D4: + cmp r2, #0x46 + bne _080708DA + movs r1, #0 +_080708DA: + ldr r0, _080708EC + ldr r2, _080708F0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_080708EC: .4byte gUnknown_2021C7C +_080708F0: .4byte gUnknown_82FC0E8 + thumb_func_end sub_080708B4 + + thumb_func_start sub_080708F4 +sub_080708F4: @ 0x080708F4 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + mov r2, sp + mov r1, sp + movs r0, #0 + strb r0, [r1, #1] + strb r0, [r2] + movs r3, #0 + ldrb r0, [r4] + cmp r0, #0xff + beq _08070938 +_08070910: + adds r1, r4, r3 + ldrb r0, [r1] + cmp r0, #0xb5 + bne _0807091E + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_0807091E: + ldrb r0, [r1] + cmp r0, #0xb6 + bne _0807092A + ldrb r0, [r2, #1] + adds r0, #1 + strb r0, [r2, #1] +_0807092A: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r4, r3 + ldrb r0, [r0] + cmp r0, #0xff + bne _08070910 +_08070938: + cmp r5, #0 + bne _0807094C + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + beq _0807094C + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08070960 +_0807094C: + cmp r5, #0xfe + bne _08070964 + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08070964 + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _08070964 +_08070960: + movs r0, #1 + b _08070966 +_08070964: + movs r0, #0 +_08070966: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080708F4 + + thumb_func_start sub_08070970 +sub_08070970: @ 0x08070970 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + bne _08070990 + movs r1, #0 + bl sub_080708F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080709AC + ldr r1, _0807098C + b _080709AE + .align 2, 0 +_0807098C: .4byte gUnknown_8300A95 +_08070990: + cmp r1, #0xfe + bne _080709AC + adds r0, r4, #0 + movs r1, #0xfe + bl sub_080708F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080709AC + ldr r1, _080709A8 + b _080709AE + .align 2, 0 +_080709A8: .4byte gUnknown_8300A97 +_080709AC: + ldr r1, _080709BC +_080709AE: + adds r0, r4, #0 + bl sub_080088D8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080709BC: .4byte gUnknown_8300A99 + thumb_func_end sub_08070970 + + thumb_func_start sub_080709C0 +sub_080709C0: @ 0x080709C0 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + bl sub_08069B04 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08070970 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080709C0 + + thumb_func_start sub_080709DC +sub_080709DC: @ 0x080709DC + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r0 +_080709F4: + movs r0, #0x8c + adds r4, r6, #0 + muls r4, r0, r4 + add r4, r8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #2 + mov r1, sp + adds r5, r1, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806F4D0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080709C0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #1 + bls _080709F4 + adds r0, r7, #0 + mov r1, sp + bl sub_080088B8 + ldr r4, _08070A58 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088D8 + adds r0, r7, #0 + mov r1, sb + bl sub_080088D8 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088D8 + ldr r1, _08070A5C + adds r0, r7, #0 + bl sub_080088D8 + add sp, #0x28 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08070A58: .4byte gUnknown_82FC0F8 +_08070A5C: .4byte gUnknown_82FC0FA + thumb_func_end sub_080709DC + + thumb_func_start sub_08070A60 +sub_08070A60: @ 0x08070A60 + push {r4, r5, r6, lr} + sub sp, #0x14 + adds r6, r0, #0 + adds r4, r1, #0 + movs r0, #0xff + strb r0, [r4] + movs r5, #0 +_08070A6E: + adds r0, r4, #0 + ldr r1, _08070ABC + bl sub_080088D8 + movs r0, #0x8c + adds r2, r5, #0 + muls r2, r0, r2 + adds r0, r6, r2 + adds r1, r6, #0 + adds r1, #0x88 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_0806F844 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sp + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r4, #0 + mov r1, sp + bl sub_080088D8 + adds r0, r4, #0 + ldr r1, _08070AC0 + bl sub_080088D8 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _08070A6E + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08070ABC: .4byte gUnknown_82FC0FE +_08070AC0: .4byte gUnknown_82FC0F8 + thumb_func_end sub_08070A60 + + thumb_func_start sub_08070AC4 +sub_08070AC4: @ 0x08070AC4 + push {r4, r5, r6, lr} + sub sp, #0x10 + str r1, [sp] + mov r1, sp + movs r5, #0 + strb r0, [r1, #4] + mov r0, sp + movs r6, #1 + movs r4, #1 + strb r4, [r0, #5] + strb r2, [r0, #6] + strb r3, [r0, #7] + strb r2, [r0, #8] + strb r3, [r0, #9] + mov r3, sp + ldrb r1, [r3, #0xc] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + strb r0, [r3, #0xc] + ldr r3, _08070B34 + ldrb r1, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + mov r0, sp + strb r5, [r0, #0xa] + strb r4, [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, r6 + 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_08004548 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08070B34: .4byte gUnknown_30030B4 + thumb_func_end sub_08070AC4 + + thumb_func_start sub_08070B38 +sub_08070B38: @ 0x08070B38 + push {r4, r5, r6, lr} + sub sp, #0x14 + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r3, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x8c + muls r0, r2, r0 + adds r5, r5, r0 + adds r0, r5, #0 + mov r1, sp + bl sub_0806F4D0 + mov r0, sp + adds r1, r5, #0 + bl sub_080709C0 + adds r6, #2 + adds r0, r4, #0 + mov r1, sp + movs r2, #0xc + adds r3, r6, #0 + bl sub_08070AC4 + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08070B38 + + thumb_func_start sub_08070B74 +sub_08070B74: @ 0x08070B74 + push {r4, r5, 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, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _08070BD4 + mov r0, sp + bl strcpy + movs r0, #0x8c + adds r1, r6, #0 + muls r1, r0, r1 + adds r0, r4, r1 + adds r4, #0x88 + adds r4, r4, r1 + ldr r1, [r4] + bl sub_0806F844 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + add r4, sp, #0xc + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + mov r0, sp + adds r1, r4, #0 + bl sub_080088D8 + adds r0, r5, #0 + mov r1, sp + movs r2, #0x59 + mov r3, r8 + bl sub_08070AC4 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08070BD4: .4byte gUnknown_82FC0FE + thumb_func_end sub_08070B74 + + thumb_func_start sub_08070BD8 +sub_08070BD8: @ 0x08070BD8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + cmp r6, #1 + bhi _08070C10 + ldr r0, _08070C1C + mov r8, r0 + ldr r0, [r0] + ldr r4, _08070C20 + adds r0, r0, r4 + adds r1, r7, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08070B38 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + adds r1, r7, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08070B74 +_08070C10: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08070C1C: .4byte gUnknown_3005AEC +_08070C20: .4byte 0x00003030 + thumb_func_end sub_08070BD8 + + thumb_func_start sub_08070C24 +sub_08070C24: @ 0x08070C24 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _08070C54 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r0, [r4, #8] + bl sub_081AE2DC + adds r1, r0, #0 + ldr r0, _08070C58 + ldrh r2, [r0, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _08070CA4 + cmp r1, #1 + bls _08070C5C + cmp r1, #5 + beq _08070C68 + b _08070C6E + .align 2, 0 +_08070C54: .4byte gUnknown_3005B60 +_08070C58: .4byte gUnknown_3002360 +_08070C5C: + ldr r0, _08070C64 + strh r1, [r0] + b _08070C6E + .align 2, 0 +_08070C64: .4byte gUnknown_2037290 +_08070C68: + ldr r1, _08070C9C + movs r0, #2 + strh r0, [r1] +_08070C6E: + ldr r0, _08070CA0 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r0, [r4, #8] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r4, #0xa] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r4, #0xa] + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 + b _08070CD4 + .align 2, 0 +_08070C9C: .4byte gUnknown_2037290 +_08070CA0: .4byte gUnknown_3005B60 +_08070CA4: + movs r1, #2 + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _08070CD4 + ldr r0, _08070CDC + strh r1, [r0] + ldrb r0, [r4, #8] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r4, #0xa] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r4, #0xa] + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_08070CD4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08070CDC: .4byte gUnknown_2037290 + thumb_func_end sub_08070C24 + + thumb_func_start sub_08070CE0 +sub_08070CE0: @ 0x08070CE0 + push {r4, r5, lr} + sub sp, #0x18 + ldr r0, _08070D40 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08196FF0 + mov r1, sp + ldr r0, _08070D44 + 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_081AE25C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _08070D48 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08070D4C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + strh r4, [r1, #0xa] + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08070D40: .4byte gUnknown_82FC04C +_08070D44: .4byte gUnknown_82FC06C +_08070D48: .4byte sub_08070C24 +_08070D4C: .4byte gUnknown_3005B60 + thumb_func_end sub_08070CE0 + + thumb_func_start sub_08070D50 +sub_08070D50: @ 0x08070D50 + push {lr} + bl sub_081B8FC8 + ldr r1, _08070D60 + ldr r0, _08070D64 + str r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08070D60: .4byte gUnknown_3002360 +_08070D64: .4byte sub_08085A30 + thumb_func_end sub_08070D50 + + thumb_func_start sub_08070D68 +sub_08070D68: @ 0x08070D68 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x50 + adds r5, r0, #0 + adds r6, r1, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x3c] + movs r4, #0 + add r7, sp, #0x18 + add r0, sp, #0x30 + mov sb, r0 + movs r1, #0x31 + add r1, sp + mov sl, r1 + mov r0, sp + adds r0, #0x32 + str r0, [sp, #0x40] + mov r1, sp + adds r1, #0x34 + str r1, [sp, #0x48] + adds r0, #1 + str r0, [sp, #0x44] + adds r1, #4 + str r1, [sp, #0x4c] +_08070DA6: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r5, #0 + bl sub_0806A058 + lsls r1, r4, #1 + add r1, sp + adds r1, #0x10 + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08070DA6 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + mov r8, r0 + movs r4, #0 +_08070DCE: + adds r1, r4, #0 + adds r1, #0x27 + adds r0, r5, #0 + bl sub_0806A058 + lsls r1, r4, #2 + adds r1, r7, r1 + str r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08070DCE + adds r0, r5, #0 + movs r1, #3 + bl sub_0806A058 + mov r1, sb + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0x25 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r5, #0 + movs r1, #8 + bl sub_0806A058 + ldr r1, [sp, #0x40] + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0x22 + bl sub_0806A058 + str r0, [sp, #0x38] + adds r0, r5, #0 + movs r1, #0x50 + bl sub_0806A058 + ldr r1, [sp, #0x48] + strb r0, [r1] + movs r0, #1 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r6, #0 + ldr r1, [sp, #0x3c] + movs r2, #5 + movs r3, #0x20 + bl sub_08067730 + movs r4, #0 +_08070E3E: + adds r1, r4, #0 + adds r1, #0xd + lsls r0, r4, #1 + mov r2, sp + adds r2, r2, r0 + adds r2, #0x10 + adds r0, r6, #0 + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08070E3E + movs r4, #0 +_08070E5C: + adds r1, r4, #0 + adds r1, #0x27 + lsls r2, r4, #2 + adds r2, r7, r2 + adds r0, r6, #0 + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08070E5C + adds r0, r6, #0 + movs r1, #3 + mov r2, sb + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #0x25 + mov r2, sl + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #8 + ldr r2, [sp, #0x40] + bl sub_0806A774 + movs r0, #0x78 + ldr r1, [sp, #0x44] + strb r0, [r1] + adds r0, r6, #0 + movs r1, #0x20 + ldr r2, [sp, #0x44] + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #0x22 + ldr r2, [sp, #0x4c] + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #0x50 + ldr r2, [sp, #0x48] + bl sub_0806A774 + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x64 + bl memcpy + add sp, #0x50 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08070D68 + + thumb_func_start sub_08070ED0 +sub_08070ED0: @ 0x08070ED0 + push {r4, r5, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r4, sp, #0xc + movs r1, #0x46 + strb r1, [r4] + movs r1, #0x64 + adds r5, r0, #0 + muls r5, r1, r5 + ldr r0, _08070F84 + adds r5, r5, r0 + ldr r1, _08070F88 + adds r0, r5, #0 + bl sub_08070D68 + adds r0, r5, #0 + movs r1, #0x2d + adds r2, r4, #0 + bl sub_0806A774 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sp + adds r1, r4, #0 + bl sub_0806B3DC + adds r0, r5, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806CF68 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #2 + bl sub_080BFBBC + adds r0, r4, #0 + movs r1, #3 + bl sub_080BFBBC + ldr r1, _08070F8C + adds r0, r5, #0 + bl sub_0806F4B0 + mov r2, sp + adds r2, #0xe + movs r0, #4 + strh r0, [r2] + adds r0, r5, #0 + movs r1, #0x26 + bl sub_0806A774 + add r2, sp, #0x10 + movs r0, #0 + strh r0, [r2] + adds r0, r5, #0 + movs r1, #0x24 + bl sub_0806A774 + bl sub_080855C0 + mov r2, sp + adds r2, #0x12 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #0x23 + bl sub_0806A774 + adds r0, r5, #0 + bl sub_0806E3B0 + adds r0, r5, #0 + bl sub_0806884C + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08070F84: .4byte gUnknown_2024190 +_08070F88: .4byte gUnknown_20243E8 +_08070F8C: .4byte gUnknown_2021C40 + thumb_func_end sub_08070ED0 + + thumb_func_start sub_08070F90 +sub_08070F90: @ 0x08070F90 + push {lr} + ldr r0, _08070FA0 + ldrb r0, [r0] + bl sub_08070ED0 + pop {r0} + bx r0 + .align 2, 0 +_08070FA0: .4byte gUnknown_2037280 + thumb_func_end sub_08070F90 + + thumb_func_start sub_08070FA4 +sub_08070FA4: @ 0x08070FA4 + push {r4, r5, lr} + sub sp, #0x20 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0x8c + muls r1, r2, r1 + adds r4, r0, r1 + adds r0, r4, #0 + mov r1, sp + bl sub_0806F4D0 + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + beq _08071010 + adds r5, r4, #0 + adds r5, #0x7c + mov r0, sp + adds r1, r5, #0 + bl sub_0800895C + adds r4, #0x74 + cmp r0, #0 + bne _08070FE4 + ldr r0, _08071000 + ldr r0, [r0] + adds r1, r4, #0 + bl sub_0800895C + cmp r0, #0 + beq _08071010 +_08070FE4: + ldr r0, _08071004 + mov r1, sp + bl sub_080088B8 + ldr r0, _08071008 + adds r1, r4, #0 + bl sub_080088B8 + ldr r0, _0807100C + adds r1, r5, #0 + bl sub_080088B8 + movs r0, #1 + b _08071012 + .align 2, 0 +_08071000: .4byte gUnknown_3005AF0 +_08071004: .4byte gUnknown_2021C40 +_08071008: .4byte gUnknown_2021C54 +_0807100C: .4byte gUnknown_2021C68 +_08071010: + movs r0, #0 +_08071012: + add sp, #0x20 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08070FA4 + + thumb_func_start sub_0807101C +sub_0807101C: @ 0x0807101C + push {lr} + ldr r0, _08071038 + ldr r0, [r0] + ldr r1, _0807103C + adds r0, r0, r1 + ldr r1, _08071040 + ldrb r1, [r1] + bl sub_08070FA4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08071038: .4byte gUnknown_3005AEC +_0807103C: .4byte 0x00003030 +_08071040: .4byte gUnknown_2037280 + thumb_func_end sub_0807101C + + thumb_func_start sub_08071044 +sub_08071044: @ 0x08071044 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r8, r3 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r1, r2, #0x18 + adds r2, r1, #0 + movs r4, #0 + movs r7, #0 + movs r5, #0 + cmp r3, #0 + bne _08071072 + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0807108C + adds r5, r1, r0 + movs r4, #1 +_08071072: + cmp r3, #1 + bne _08071082 + movs r0, #0x64 + adds r1, r2, #0 + muls r1, r0, r1 + ldr r0, _0807108C + adds r5, r1, r0 + movs r4, #3 +_08071082: + cmp r6, #0 + beq _08071090 + cmp r6, #1 + beq _080710E0 + b _0807111A + .align 2, 0 +_0807108C: .4byte gUnknown_2024190 +_08071090: + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + adds r3, r0, #0 + lsls r0, r4, #3 + ldr r1, _080710D8 + adds r0, r0, r1 + ldr r1, _080710DC + ldr r2, [r1] + mov r6, r8 + lsls r1, r6, #1 + adds r1, #1 + lsls r1, r1, #2 + adds r2, #4 + adds r2, r2, r1 + ldr r1, [r2] + adds r2, r4, #0 + bl sub_080349A8 + adds r0, r5, #0 + bl sub_0806E220 + bl sub_080343E4 + mov r0, sb + strh r4, [r0] + b _0807111A + .align 2, 0 +_080710D8: .4byte gUnknown_82DDA1C +_080710DC: .4byte gUnknown_2024178 +_080710E0: + adds r0, r5, #0 + bl sub_0806E220 + ldrh r0, [r0, #4] + adds r1, r4, #0 + bl sub_08069BA8 + ldr r0, _08071128 + movs r1, #0x78 + movs r2, #0x4b + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _0807112C + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r2, r1, r4 + adds r2, #0x3e + ldrb r0, [r2] + movs r3, #4 + orrs r0, r3 + strb r0, [r2] + adds r4, #0x1c + adds r1, r1, r4 + ldr r0, _08071130 + str r0, [r1] +_0807111A: + adds r0, r7, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08071128: .4byte gUnknown_2024640 +_0807112C: .4byte gUnknown_20205AC +_08071130: .4byte sub_08007140 + thumb_func_end sub_08071044 + + thumb_func_start sub_08071134 +sub_08071134: @ 0x08071134 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08071134 + + thumb_func_start sub_08071148 +sub_08071148: @ 0x08071148 + push {lr} + bl sub_080987DC + ldr r0, _08071164 + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 +_08071164: .4byte sub_08071168 + thumb_func_end sub_08071148 + + thumb_func_start sub_08071168 +sub_08071168: @ 0x08071168 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08071198 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08071190 + bl sub_0808569C + ldr r0, _0807119C + bl sub_08000540 + ldr r1, _080711A0 + ldr r0, _080711A4 + str r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_08071190: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08071198: .4byte gUnknown_2037C74 +_0807119C: .4byte sub_080711A8 +_080711A0: .4byte gUnknown_3005B0C +_080711A4: .4byte sub_080AEA64 + thumb_func_end sub_08071168 + + thumb_func_start sub_080711A8 +sub_080711A8: @ 0x080711A8 + push {r4, lr} + sub sp, #4 + ldr r0, _080711C8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #8 + bls _080711BC + b _080713DA +_080711BC: + lsls r0, r0, #2 + ldr r1, _080711CC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080711C8: .4byte gUnknown_3002360 +_080711CC: .4byte _080711D0 +_080711D0: @ jump table + .4byte _080711F4 @ case 0 + .4byte _080712C0 @ case 1 + .4byte _080712D8 @ case 2 + .4byte _08071308 @ case 3 + .4byte _08071328 @ case 4 + .4byte _08071340 @ case 5 + .4byte _08071358 @ case 6 + .4byte _08071374 @ case 7 + .4byte _080713CC @ case 8 +_080711F4: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r4, _080712AC + movs r0, #0x14 + bl sub_08000BC8 + str r0, [r4] + bl sub_0805EBD8 + ldr r2, [r4] + ldr r0, _080712B0 + ldrh r0, [r0] + movs r1, #0 + strb r0, [r2, #4] + ldr r0, [r4] + strb r1, [r0, #7] + ldr r0, _080712B4 + bl sub_080006F0 + bl sub_080A27CC + ldr r1, _080712B8 + strh r0, [r1] + bl sub_081996B8 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080712BC + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + bl sub_08004480 + bl sub_080A133C + bl sub_08008424 + bl sub_0800668C + bl sub_080A8818 + bl sub_080B9710 + bl m4aSoundVSyncOn + b _080713AA + .align 2, 0 +_080712AC: .4byte gUnknown_3000DE0 +_080712B0: .4byte gUnknown_2037280 +_080712B4: .4byte sub_08071134 +_080712B8: .4byte gUnknown_2037282 +_080712BC: .4byte gUnknown_82FCA5C +_080712C0: + ldr r0, _080712D0 + bl sub_08003090 + ldr r0, _080712D4 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #8] + b _080713AA + .align 2, 0 +_080712D0: .4byte gUnknown_82FCA64 +_080712D4: .4byte gUnknown_3000DE0 +_080712D8: + movs r1, #0x8c + lsls r1, r1, #0x14 + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _08071300 + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r0, _08071304 + movs r1, #0 + movs r2, #0x20 + bl sub_080A11BC + b _080713AA + .align 2, 0 +_08071300: .4byte gUnknown_8C00530 +_08071304: .4byte gUnknown_8C004EC +_08071308: + ldr r0, _0807131C + bl sub_08008210 + ldr r0, _08071320 + bl sub_08008210 + ldr r0, _08071324 + bl sub_0800845C + b _080713AA + .align 2, 0 +_0807131C: .4byte gUnknown_82FC9DC +_08071320: .4byte gUnknown_82FC9E4 +_08071324: .4byte gUnknown_82FC9EC +_08071328: + movs r0, #0 + bl sub_08002248 + ldr r0, _0807133C + ldr r0, [r0] + ldrb r0, [r0, #4] + bl sub_08070ED0 + b _080713AA + .align 2, 0 +_0807133C: .4byte gUnknown_3000DE0 +_08071340: + ldr r0, _08071354 + ldr r3, [r0] + ldrb r2, [r3, #4] + adds r3, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08071044 + b _080713AA + .align 2, 0 +_08071354: .4byte gUnknown_3000DE0 +_08071358: + ldr r4, _08071370 + ldr r3, [r4] + ldrb r2, [r3, #4] + adds r3, #0xc + movs r0, #0 + movs r1, #1 + bl sub_08071044 + ldr r1, [r4] + strb r0, [r1, #1] + b _080713AA + .align 2, 0 +_08071370: .4byte gUnknown_3000DE0 +_08071374: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _080713BC + movs r1, #0x10 + movs r2, #0xa0 + bl sub_080A1200 + ldr r1, _080713C0 + movs r2, #0x98 + lsls r2, r2, #5 + movs r0, #1 + movs r3, #0 + bl sub_0800195C + ldr r1, _080713C4 + movs r2, #0x80 + lsls r2, r2, #5 + movs r0, #1 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 +_080713AA: + ldr r1, _080713C8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080713DA + .align 2, 0 +_080713BC: .4byte gUnknown_8305D24 +_080713C0: .4byte gUnknown_8305D84 +_080713C4: .4byte gUnknown_8304D04 +_080713C8: .4byte gUnknown_3002360 +_080713CC: + ldr r0, _080713F8 + bl sub_08000540 + ldr r0, _080713FC + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #2] +_080713DA: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080713F8: .4byte sub_08071498 +_080713FC: .4byte gUnknown_3000DE0 + thumb_func_end sub_080711A8 + + thumb_func_start sub_08071400 +sub_08071400: @ 0x08071400 + push {lr} + ldr r0, _0807142C + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08071430 + adds r0, r0, r1 + ldr r2, _08071434 + movs r1, #2 + bl sub_0806A774 + bl sub_0805ECB0 + ldr r0, _08071438 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _0807143C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0807142C: .4byte gUnknown_2037280 +_08071430: .4byte gUnknown_2024190 +_08071434: .4byte gUnknown_2021C68 +_08071438: .4byte gUnknown_3000DE0 +_0807143C: .4byte sub_08085A30 + thumb_func_end sub_08071400 + + thumb_func_start sub_08071440 +sub_08071440: @ 0x08071440 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08071490 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08071460 + bl sub_080A27F8 + bl sub_080ABC74 +_08071460: + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08071470 + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A3040 +_08071470: + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0x3c + ble _08071484 + ldr r0, _08071494 + bl sub_080A3040 + adds r0, r5, #0 + bl sub_080A8964 +_08071484: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08071490: .4byte gUnknown_3005B60 +_08071494: .4byte 0x00000179 + thumb_func_end sub_08071440 + + thumb_func_start sub_08071498 +sub_08071498: @ 0x08071498 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r1, _080714BC + ldr r0, [r1] + ldrb r0, [r0, #2] + adds r5, r1, #0 + cmp r0, #0xc + bls _080714B0 + b _08071816 +_080714B0: + lsls r0, r0, #2 + ldr r1, _080714C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080714BC: .4byte gUnknown_3000DE0 +_080714C0: .4byte _080714C4 +_080714C4: @ jump table + .4byte _080714F8 @ case 0 + .4byte _08071544 @ case 1 + .4byte _0807156C @ case 2 + .4byte _080715A4 @ case 3 + .4byte _080715FC @ case 4 + .4byte _08071628 @ case 5 + .4byte _0807168C @ case 6 + .4byte _0807169A @ case 7 + .4byte _080716A8 @ case 8 + .4byte _080716EC @ case 9 + .4byte _0807172C @ case 10 + .4byte _080717C4 @ case 11 + .4byte _080717E4 @ case 12 +_080714F8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _08071538 + movs r1, #0x78 + movs r2, #0x4b + movs r3, #5 + bl sub_08006B0C + ldr r4, _0807153C + ldr r1, [r4] + strb r0, [r1] + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + ldr r1, [r4] + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + ldr r0, _08071540 + movs r1, #5 + bl sub_080A8878 + b _08071816 + .align 2, 0 +_08071538: .4byte gUnknown_82FC9F4 +_0807153C: .4byte gUnknown_3000DE0 +_08071540: .4byte sub_08071440 +_08071544: + ldr r0, _08071568 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08071556 + b _08071816 +_08071556: + ldr r0, [r5] + ldrb r0, [r0, #8] + movs r1, #0 + bl sub_08003B18 + ldr r0, [r5] + strb r4, [r0, #3] + ldr r1, [r5] + b _080717D8 + .align 2, 0 +_08071568: .4byte gUnknown_2037C74 +_0807156C: + ldr r1, [r5] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bhi _0807157E + b _08071816 +_0807157E: + ldr r1, [r5] + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + ldr r2, _0807159C + ldr r0, [r5] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080715A0 + str r1, [r0] + b _08071816 + .align 2, 0 +_0807159C: .4byte gUnknown_20205AC +_080715A0: .4byte sub_08071844 +_080715A4: + ldr r4, _080715F0 + ldr r2, [r5] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _080715F4 + cmp r1, r0 + beq _080715C0 + b _08071816 +_080715C0: + ldrb r1, [r2, #4] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080715F8 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r5] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r1, r7, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806E7CC + ldr r1, [r5] + b _080717D8 + .align 2, 0 +_080715F0: .4byte gUnknown_20205AC +_080715F4: .4byte sub_08007140 +_080715F8: .4byte gUnknown_2024190 +_080715FC: + ldr r2, _08071620 + ldr r3, [r5] + ldrb r1, [r3, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08071624 + cmp r1, r0 + beq _08071616 + b _08071816 +_08071616: + ldrb r0, [r3, #2] + adds r0, #1 + strb r0, [r3, #2] + b _08071816 + .align 2, 0 +_08071620: .4byte gUnknown_20205AC +_08071624: .4byte sub_08007140 +_08071628: + ldr r0, [r5] + ldrb r1, [r0, #4] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08071678 + adds r0, r0, r1 + ldr r1, _0807167C + bl sub_0806F4B0 + ldr r4, _08071680 + ldr r1, _08071684 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, [r5] + ldrb r0, [r0, #8] + movs r1, #0xff + str r1, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_08071C24 + ldr r0, _08071688 + bl sub_080A29AC + ldr r1, [r5] + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + ldr r0, [r5] + ldrb r0, [r0, #8] + bl sub_0800365C + ldr r0, [r5] + ldrb r0, [r0, #8] + movs r1, #3 + bl sub_08003528 + b _08071816 + .align 2, 0 +_08071678: .4byte gUnknown_2024190 +_0807167C: .4byte gUnknown_2021C40 +_08071680: .4byte gUnknown_2021C7C +_08071684: .4byte gUnknown_85CC874 +_08071688: .4byte 0x00000173 +_0807168C: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08071698 + b _08071816 +_08071698: + b _080717D4 +_0807169A: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080716A6 + b _08071816 +_080716A6: + b _080717D4 +_080716A8: + ldr r0, [r5] + ldrb r1, [r0, #4] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080716DC + adds r0, r0, r1 + ldr r1, _080716E0 + bl sub_0806F4B0 + ldr r4, _080716E4 + ldr r1, _080716E8 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, [r5] + ldrb r0, [r0, #8] + movs r1, #1 + str r1, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_08071C24 + ldr r1, [r5] + b _080717D8 + .align 2, 0 +_080716DC: .4byte gUnknown_2024190 +_080716E0: .4byte gUnknown_2021C40 +_080716E4: .4byte gUnknown_2021C7C +_080716E8: .4byte gUnknown_85CC888 +_080716EC: + ldr r0, [r5] + ldrb r0, [r0, #8] + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _080716FE + b _08071816 +_080716FE: + ldr r0, [r5] + ldrb r0, [r0, #8] + movs r4, #0xa0 + lsls r4, r4, #1 + adds r1, r4, #0 + movs r2, #0xe0 + bl sub_080981B4 + ldr r0, _08071728 + str r4, [sp] + movs r1, #0xe + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + ldr r1, [r5] + b _080717D8 + .align 2, 0 +_08071728: .4byte gUnknown_82FCA74 +_0807172C: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0807174C + cmp r1, #0 + bgt _08071746 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080717D4 + b _08071816 +_08071746: + cmp r1, #1 + beq _080717D4 + b _08071816 +_0807174C: + ldr r0, _080717B4 + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, #4] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080717B8 + adds r0, r0, r5 + ldr r1, _080717BC + mov sb, r1 + bl sub_0806F4B0 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #4] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_08069AF4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + ldr r0, _080717C0 + str r0, [sp, #4] + movs r0, #3 + mov r1, sb + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080E2244 + b _08071816 + .align 2, 0 +_080717B4: .4byte gUnknown_3000DE0 +_080717B8: .4byte gUnknown_2024190 +_080717BC: .4byte gUnknown_2021C68 +_080717C0: .4byte sub_08071400 +_080717C4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_080717D4: + ldr r0, _080717E0 + ldr r1, [r0] +_080717D8: + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + b _08071816 + .align 2, 0 +_080717E0: .4byte gUnknown_3000DE0 +_080717E4: + ldr r0, _08071838 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08071816 + bl sub_0805ECB0 + ldr r4, _0807183C + ldr r0, [r4] + ldrb r0, [r0, #8] + bl sub_08003444 + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + ldr r0, [r4] + bl sub_08000BF0 + ldr r0, _08071840 + bl sub_08000540 +_08071816: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08071838: .4byte gUnknown_2037C74 +_0807183C: .4byte gUnknown_3000DE0 +_08071840: .4byte sub_08085A30 + thumb_func_end sub_08071498 + + thumb_func_start sub_08071844 +sub_08071844: @ 0x08071844 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _08071864 + ldr r0, _08071860 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x2e] + b _08071894 + .align 2, 0 +_08071860: .4byte sub_0807189C +_08071864: + 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, #1 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xf + bne _08071894 + movs r0, #0x17 + bl sub_080A306C + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + bl sub_08071B50 +_08071894: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08071844 + + thumb_func_start sub_0807189C +sub_0807189C: @ 0x0807189C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _080718F8 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080718CC + ldr r0, _080718C8 + str r0, [r4, #0x1c] + strh r1, [r4, #0x2e] + strh r1, [r4, #0x32] + b _080718F8 + .align 2, 0 +_080718C8: .4byte sub_08071900 +_080718CC: + 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, #2 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xf + bne _080718F8 + movs r0, #0x17 + bl sub_080A306C + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 +_080718F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807189C + + thumb_func_start sub_08071900 +sub_08071900: @ 0x08071900 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _080719AE + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x26 + ble _0807196C + ldr r0, _0807195C + str r0, [r4, #0x1c] + strh r5, [r4, #0x2e] + ldr r4, _08071960 + ldr r0, [r4] + ldrb r1, [r0, #4] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08071964 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + ldr r3, _08071968 + ldr r2, [r4] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r5, [r0, #0x24] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r5, [r0, #0x26] + b _080719AE + .align 2, 0 +_0807195C: .4byte sub_080719B4 +_08071960: .4byte gUnknown_3000DE0 +_08071964: .4byte gUnknown_2024190 +_08071968: .4byte gUnknown_20205AC +_0807196C: + 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, #2 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xf + bne _080719A0 + movs r0, #0x17 + bl sub_080A306C + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + bl sub_08071B50 + bl sub_08071B50 +_080719A0: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x1e + bne _080719AE + movs r0, #0x17 + bl sub_080A306C +_080719AE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08071900 + + thumb_func_start sub_080719B4 +sub_080719B4: @ 0x080719B4 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x32 + ble _080719CE + ldr r0, _080719D4 + str r0, [r1, #0x1c] + movs r0, #0 + strh r0, [r1, #0x2e] +_080719CE: + pop {r0} + bx r0 + .align 2, 0 +_080719D4: .4byte sub_080719D8 + thumb_func_end sub_080719B4 + + thumb_func_start sub_080719D8 +sub_080719D8: @ 0x080719D8 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080719F8 + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _08071A4C + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_080719F8: + ldrh r0, [r5, #0x2e] + cmp r0, #3 + bhi _08071A14 + movs r4, #0 +_08071A00: + bl sub_08071B50 + lsls r0, r4, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _08071A00 +_08071A14: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + ldr r0, _08071A50 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08071A42 + movs r0, #0x71 + bl sub_080A306C + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08071A54 + str r0, [r5, #0x1c] + strh r4, [r5, #0x2e] +_08071A42: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08071A4C: .4byte 0x0000FFFF +_08071A50: .4byte gUnknown_2037C74 +_08071A54: .4byte sub_08071A58 + thumb_func_end sub_080719D8 + + thumb_func_start sub_08071A58 +sub_08071A58: @ 0x08071A58 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08071A94 + ldr r4, _08071AE8 + ldr r3, _08071AEC + ldr r0, [r3] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007F70 +_08071A94: + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #8 + bne _08071AAE + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _08071AF0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_08071AAE: + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #9 + bgt _08071ACC + ldr r2, _08071AE8 + ldr r0, _08071AEC + ldr r0, [r0] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #1 + strh r1, [r0, #0x22] +_08071ACC: + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0x28 + ble _08071ADA + ldr r0, _08071AF4 + str r0, [r5, #0x1c] +_08071ADA: + adds r0, r1, #1 + strh r0, [r5, #0x2e] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08071AE8: .4byte gUnknown_20205AC +_08071AEC: .4byte gUnknown_3000DE0 +_08071AF0: .4byte 0x0000FFFF +_08071AF4: .4byte sub_08007140 + thumb_func_end sub_08071A58 + + thumb_func_start sub_08071AF8 +sub_08071AF8: @ 0x08071AF8 + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x36] + adds r0, 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 _08071B16 + adds r0, #0xff +_08071B16: + asrs r0, r0, #8 + strh r0, [r2, #0x24] + movs r3, #0x38 + ldrsh r0, [r2, r3] + cmp r0, #0 + bge _08071B24 + adds r0, #0xff +_08071B24: + asrs r0, 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 _08071B4A + lsls r0, r3, #0x10 + cmp r0, #0 + ble _08071B4A + adds r0, r2, #0 + bl sub_08006E00 +_08071B4A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08071AF8 + + thumb_func_start sub_08071B50 +sub_08071B50: @ 0x08071B50 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r2, _08071B9C + ldr r0, _08071BA0 + ldr r6, [r0] + ldrb r3, [r6, #7] + lsls r0, r3, #2 + adds r1, r0, r2 + ldrh r5, [r1] + adds r2, #2 + adds r0, r0, r2 + ldrh r4, [r0] + adds r3, #1 + strb r3, [r6, #7] + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #0x64 + str r0, [sp] + lsrs r1, r1, #0x10 + str r1, [sp, #4] + movs r0, #0x78 + movs r1, #0x3c + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_08071BA4 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08071B9C: .4byte gUnknown_82FCA7C +_08071BA0: .4byte gUnknown_3000DE0 + thumb_func_end sub_08071B50 + + thumb_func_start sub_08071BA4 +sub_08071BA4: @ 0x08071BA4 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + mov r8, r3 + ldr r0, [sp, #0x1c] + mov sb, r0 + ldr r1, [sp, #0x20] + mov sl, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + mov r1, sb + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _08071C1C + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #4 + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08071C20 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #0x30] + mov r1, r8 + strh r1, [r0, #0x32] + mov r1, sb + strh r1, [r0, #0x34] + mov r1, sl + bl sub_08007EC0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08071C1C: .4byte gUnknown_82FCA44 +_08071C20: .4byte gUnknown_20205AC + thumb_func_end sub_08071BA4 + + thumb_func_start sub_08071C24 +sub_08071C24: @ 0x08071C24 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x14 + adds r5, r0, #0 + mov sb, r1 + adds r6, r2, #0 + mov r8, r3 + ldr r4, [sp, #0x2c] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0xff + bl sub_08003B18 + ldr r3, _08071C98 + ldr r0, [r3] + movs r2, #0 + strb r2, [r0, #0xe] + ldr r1, [r3] + movs r0, #5 + strb r0, [r1, #0xf] + ldr r1, [r3] + movs r0, #6 + strb r0, [r1, #0x10] + str r2, [sp] + str r2, [sp, #4] + ldr r0, [r3] + adds r0, #0xe + str r0, [sp, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + mov r0, sb + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + mov r3, r8 + bl sub_08199B84 + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08071C98: .4byte gUnknown_3000DE0 + thumb_func_end sub_08071C24 + + thumb_func_start sub_08071C9C +sub_08071C9C: @ 0x08071C9C + push {r4, r5, r6, lr} + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + cmp r5, r6 + bhs _08071CE6 +_08071CAC: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08071CD8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _08071CDC + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x28 + beq _08071CD4 + cmp r0, #0x31 + bne _08071CDC +_08071CD4: + movs r0, #2 + b _08071CE8 + .align 2, 0 +_08071CD8: .4byte gUnknown_2024190 +_08071CDC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _08071CAC +_08071CE6: + movs r0, #1 +_08071CE8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08071C9C + + thumb_func_start sub_08071CF0 +sub_08071CF0: @ 0x08071CF0 + push {r4, lr} + bl sub_080D1B70 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #6 + bl sub_080C68DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08071CF0 + + thumb_func_start sub_08071D14 +sub_08071D14: @ 0x08071D14 + movs r0, #9 + bx lr + thumb_func_end sub_08071D14 + + thumb_func_start sub_08071D18 +sub_08071D18: @ 0x08071D18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r1, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + movs r3, #0 + movs r2, #0 +_08071D34: + lsls r0, r3, #0x18 + asrs r0, r0, #0x18 + mov r3, sp + adds r1, r3, r0 + strb r2, [r1] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _08071D34 + movs r3, #3 + movs r0, #1 + rsbs r0, r0, #0 + mov sb, r0 + mov r8, sp +_08071D54: + lsls r0, r5, #0x10 + asrs r6, r0, #0x10 + cmp r6, #0 + ble _08071D82 + lsls r4, r3, #0x18 + asrs r4, r4, #0x18 + 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, r0, #0x10 + lsrs r5, r0, #0x10 + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r3, r4, #0x18 + b _08071D54 +_08071D82: + lsls r1, r3, #0x18 + asrs r0, r1, #0x18 + cmp r0, sb + ble _08071DA6 + movs r4, #0xff + movs r3, #1 + rsbs r3, r3, #0 +_08071D90: + asrs r2, r1, #0x18 + mov r5, sp + adds r1, r5, r2 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + subs r2, #1 + lsls r1, r2, #0x18 + asrs r0, r1, #0x18 + cmp r0, r3 + bgt _08071D90 +_08071DA6: + mov r1, r8 + ldrb r0, [r1, #3] + cmp r0, #0xff + bne _08071DB2 + movs r0, #0 + strb r0, [r1, #3] +_08071DB2: + mov r2, sl + cmp r2, #0 + bne _08071E42 + movs r3, #0 + movs r1, #0 + movs r6, #0xfc + lsls r6, r6, #8 + movs r5, #0x1e + mov ip, r5 +_08071DC4: + lsls r1, r1, #0x18 + asrs r2, r1, #0x18 + mov r0, sp + adds r5, r0, r2 + ldrb r0, [r5] + mov r8, r1 + cmp r0, #0xff + bne _08071DFA + lsls r1, r2, #1 + adds r1, r1, r7 + ldrh r2, [r1] + adds r0, r6, #0 + ands r0, r2 + mov r2, ip + orrs r0, r2 + strh r0, [r1] + lsls r3, r3, #0x18 + asrs r1, r3, #0x17 + adds r1, r1, r7 + adds r1, #0x40 + ldrh r2, [r1] + adds r0, r6, #0 + ands r0, r2 + mov r5, ip + orrs r0, r5 + strh r0, [r1] + b _08071E2A +_08071DFA: + lsls r2, r2, #1 + adds r2, 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, #0x18 + asrs r3, r4, #0x18 + lsls r2, r3, #1 + adds r2, 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 +_08071E2A: + movs r0, #0x80 + lsls r0, r0, #0x11 + add r0, r8 + lsrs r1, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r3, r2 + lsrs r3, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _08071DC4 + b _08071EA6 +_08071E42: + movs r3, #0 + movs r4, #0xfc + lsls r4, r4, #8 + movs r6, #0x1e +_08071E4A: + lsls r1, r3, #0x18 + asrs r2, r1, #0x18 + mov r3, sp + adds r5, r3, r2 + ldrb r0, [r5] + adds r3, r1, #0 + cmp r0, #0xff + bne _08071E76 + lsls r1, r2, #1 + adds r1, 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 _08071E98 +_08071E76: + lsls r2, r2, #1 + adds r2, 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] +_08071E98: + movs r5, #0x80 + lsls r5, r5, #0x11 + adds r0, r3, r5 + lsrs r3, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _08071E4A +_08071EA6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08071D18 + + thumb_func_start sub_08071EB8 +sub_08071EB8: @ 0x08071EB8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r1, #0x1e + strh r1, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + movs r2, #0 + bl sub_08071D18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r5, #0xa + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08071D18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08071EB8 + + thumb_func_start sub_08071EEC +sub_08071EEC: @ 0x08071EEC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r0, #0 + str r0, [sp] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072000 + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08071F84 + ldr r4, _08071F74 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _08071F78 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #1] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1, #1] + lsls r2, r7, #4 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrb r0, [r2, #1] + ands r3, r0 + strb r3, [r2, #1] + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x40 + ldr r4, _08071F7C + adds r0, r4, #0 + ands r1, r0 + ldr r0, _08071F80 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + b _08071FCA + .align 2, 0 +_08071F74: .4byte gUnknown_82FCB38 +_08071F78: .4byte gUnknown_20205AC +_08071F7C: .4byte 0x000003FF +_08071F80: .4byte 0xFFFFFC00 +_08071F84: + ldr r4, _08071FEC + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08071FF0 + lsls r2, r7, #4 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x20 + ldr r5, _08071FF4 + adds r0, r5, #0 + ands r1, r0 + ldr r0, _08071FF8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + movs r0, #2 + str r0, [sp] +_08071FCA: + ldr r2, _08071FF0 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r7, [r0, #6] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r1, r0, r2 + strh r6, [r1, #0x38] + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08071FFC + str r1, [r0] + b _08072128 + .align 2, 0 +_08071FEC: .4byte gUnknown_82FCB68 +_08071FF0: .4byte gUnknown_20205AC +_08071FF4: .4byte 0x000003FF +_08071FF8: .4byte 0xFFFFFC00 +_08071FFC: .4byte sub_08072334 +_08072000: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080720A4 + mov r0, sl + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r4, _08072090 + adds r0, r0, r4 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r0, sl + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _08072094 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r7, [r0, #6] + lsls r2, r7, #4 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r3, r2, r4 + strh r6, [r3, #0x38] + ldrh r1, [r3, #4] + mov r8, r1 + mov r5, r8 + lsls r1, r5, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x20 + ldr r5, _08072098 + adds r0, r5, #0 + ands r1, r0 + ldr r0, _0807209C + mov r5, r8 + ands r0, r5 + orrs r0, r1 + strh r0, [r3, #4] + adds r4, #0x1c + adds r2, r2, r4 + ldr r0, _080720A0 + str r0, [r2] + movs r0, #1 + b _08072126 + .align 2, 0 +_08072090: .4byte gUnknown_82FCB38 +_08072094: .4byte gUnknown_20205AC +_08072098: .4byte 0x000003FF +_0807209C: .4byte 0xFFFFFC00 +_080720A0: .4byte sub_08072334 +_080720A4: + mov r0, sl + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r4, _080721EC + adds r0, r0, r4 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r0, sl + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _080721F0 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r7, [r0, #6] + lsls r2, r7, #4 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r3, r2, r4 + strh r6, [r3, #0x38] + ldrh r1, [r3, #4] + mov r8, r1 + mov r5, r8 + lsls r1, r5, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x20 + ldr r5, _080721F4 + adds r0, r5, #0 + ands r1, r0 + ldr r0, _080721F8 + mov r5, r8 + ands r0, r5 + orrs r0, r1 + strh r0, [r3, #4] + adds r4, #0x1c + adds r2, r2, r4 + ldr r0, _080721FC + str r0, [r2] + movs r0, #2 +_08072126: + str r0, [sp] +_08072128: + ldr r0, _08072200 + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08072204 + adds r0, r0, r1 + movs r1, #0x8c + movs r2, #0x3c + movs r3, #0 + bl sub_08006B60 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r1, _080721F0 + mov r8, r1 + add r4, r8 + mov r0, sl + bl sub_080A62F8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x15 + ldr r0, _08072208 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0800858C + 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, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r2, #4 + mov sb, r2 + mov r1, sb + orrs r0, r1 + strb r0, [r4, #5] + movs r0, #1 + bl sub_080722B4 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r2, _0807220C + adds r1, r1, r2 + ldr r2, _08072210 + bl CpuSet + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + add r0, r8 + strh r5, [r0, #0x38] + mov r2, sl + strh r2, [r0, #0x3a] + adds r0, #0x3e + ldrb r1, [r0] + mov r5, sb + orrs r1, r5 + strb r1, [r0] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, 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, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080721EC: .4byte gUnknown_82FCB68 +_080721F0: .4byte gUnknown_20205AC +_080721F4: .4byte 0x000003FF +_080721F8: .4byte 0xFFFFFC00 +_080721FC: .4byte sub_08072334 +_08072200: .4byte gUnknown_2023D1A +_08072204: .4byte gUnknown_82FCBB8 +_08072208: .4byte gUnknown_82FCC84 +_0807220C: .4byte 0x06010000 +_08072210: .4byte 0x04000010 + thumb_func_end sub_08071EEC + + thumb_func_start sub_08072214 +sub_08072214: @ 0x08072214 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _080722A0 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080722A4 + mov sb, r1 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + add r4, sb + ldrb r3, [r4, #1] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r3 + strb r1, [r4, #1] + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + mov r7, sb + adds r5, r3, r7 + ldrb r1, [r5, #1] + ands r2, r1 + strb r2, [r5, #1] + ldrh r1, [r5, #4] + mov r8, r1 + mov r7, r8 + lsls r2, r7, #0x16 + lsrs r2, r2, #0x16 + adds r2, #0x40 + ldr r7, _080722A8 + adds r1, r7, #0 + ands r2, r1 + ldr r1, _080722AC + mov r7, r8 + ands r1, r7 + orrs r1, r2 + strh r1, [r5, #4] + strh r0, [r4, #6] + strh r6, [r5, #0x38] + movs r0, #0x1c + add sb, r0 + add r3, sb + ldr r0, _080722B0 + str r0, [r3] + adds r0, r6, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080722A0: .4byte gUnknown_82FCB98 +_080722A4: .4byte gUnknown_20205AC +_080722A8: .4byte 0x000003FF +_080722AC: .4byte 0xFFFFFC00 +_080722B0: .4byte sub_08072334 + thumb_func_end sub_08072214 + + thumb_func_start sub_080722B4 +sub_080722B4: @ 0x080722B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x13 + ldr r1, _080722C0 + adds r0, r0, r1 + bx lr + .align 2, 0 +_080722C0: .4byte gUnknown_8C11BE4 + thumb_func_end sub_080722B4 + + thumb_func_start sub_080722C4 +sub_080722C4: @ 0x080722C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080722F4 + cmp r0, #1 + bgt _08072308 + cmp r0, #0 + bne _08072308 + ldr r2, _080722F0 + lsls r3, r5, #4 + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x20] + adds r0, #0x10 + b _08072316 + .align 2, 0 +_080722F0: .4byte gUnknown_20205AC +_080722F4: + ldr r2, _08072304 + lsls r3, r5, #4 + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x20] + adds r0, #0x10 + b _08072316 + .align 2, 0 +_08072304: .4byte gUnknown_20205AC +_08072308: + ldr r2, _08072330 + lsls r3, r5, #4 + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x20] + adds r0, #8 +_08072316: + strh r0, [r4, #0x20] + ldrh r0, [r1, #0x22] + strh r0, [r4, #0x22] + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, 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 +_08072330: .4byte gUnknown_20205AC + thumb_func_end sub_080722C4 + + thumb_func_start sub_08072334 +sub_08072334: @ 0x08072334 + ldrh r1, [r0, #0x38] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _08072358 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, 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 +_08072358: .4byte gUnknown_20205AC + thumb_func_end sub_08072334 + + thumb_func_start sub_0807235C +sub_0807235C: @ 0x0807235C + push {r4, r5, r6, r7, lr} + ldr r7, [sp, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _0807238C + ldr r4, [r6] + ldr r5, [r4, #0xc] + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r5, r4, r5 + strb r1, [r5] + ldr r0, [r6] + ldr r0, [r0, #0xc] + adds r4, r4, r0 + str r2, [r4, #4] + str r3, [r4, #8] + str r7, [r4, #0xc] + ldr r0, _08072390 + str r0, [r4, #0x10] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807238C: .4byte gUnknown_2024174 +_08072390: .4byte 0xFFFF8000 + thumb_func_end sub_0807235C + + thumb_func_start sub_08072394 +sub_08072394: @ 0x08072394 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080723DC + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + adds r1, r2, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r3, #4 + orrs r0, r3 + strb r0, [r1] + movs r0, #0x38 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + ldrh r1, [r2, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080723DC: .4byte gUnknown_20205AC + thumb_func_end sub_08072394 + + thumb_func_start sub_080723E0 +sub_080723E0: @ 0x080723E0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08072430 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r5 + adds r4, r2, #0 + adds r4, #0x3e + ldrb r1, [r4] + movs r3, #5 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + movs r0, #0x38 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r4, [r0] + adds r1, r3, #0 + ands r1, r4 + strb r1, [r0] + ldrh r1, [r2, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08072430: .4byte gUnknown_20205AC + thumb_func_end sub_080723E0 + + thumb_func_start sub_08072434 +sub_08072434: @ 0x08072434 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08072450 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r4 + strh r1, [r3, #0x20] + strh r2, [r3, #0x22] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08072450: .4byte gUnknown_20205AC + thumb_func_end sub_08072434 + + thumb_func_start sub_08072454 +sub_08072454: @ 0x08072454 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08072490 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r5 + ldrh r1, [r4, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + movs r0, #0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + adds r0, r4, #0 + bl sub_08006E00 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08072490: .4byte gUnknown_20205AC + thumb_func_end sub_08072454 + + thumb_func_start sub_08072494 +sub_08072494: @ 0x08072494 + bx lr + .align 2, 0 + thumb_func_end sub_08072494 + + thumb_func_start sub_08072498 +sub_08072498: @ 0x08072498 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + ldr r1, _0807251C + mov r8, r1 + ldrb r2, [r1] + cmp r6, r2 + bge _08072510 + ldr r1, _08072520 + mov ip, r1 + movs r1, #3 + ands r0, r1 + lsls r5, r0, #2 + movs r7, #0xd + rsbs r7, r7, #0 + ldr r2, _08072524 + mov sb, r2 +_080724C2: + mov r1, sb + adds r0, r6, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + ldrb r4, [r1, #6] + ldrh r3, [r1, #0x38] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r2, [r1, #5] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, #5] + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + add r1, ip + ldrb r2, [r1, #5] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, #5] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + add r1, ip + ldrb r2, [r1, #5] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1, #5] + adds r6, #1 + mov r2, r8 + ldrb r2, [r2] + cmp r6, r2 + blt _080724C2 +_08072510: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807251C: .4byte gUnknown_2023D10 +_08072520: .4byte gUnknown_20205AC +_08072524: .4byte gUnknown_3005AD0 + thumb_func_end sub_08072498 + + thumb_func_start sub_08072528 +sub_08072528: @ 0x08072528 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + movs r4, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072554 + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807254E + movs r5, #0x2c + movs r4, #0x1e + b _0807258C +_0807254E: + movs r5, #0x9e + movs r4, #0x58 + b _0807258C +_08072554: + adds r0, r6, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08072582 + cmp r0, #1 + bgt _0807256C + cmp r0, #0 + beq _08072576 + b _0807258C +_0807256C: + cmp r0, #2 + beq _0807257C + cmp r0, #3 + beq _08072588 + b _0807258C +_08072576: + movs r5, #0x9f + movs r4, #0x4c + b _0807258C +_0807257C: + movs r5, #0xab + movs r4, #0x65 + b _0807258C +_08072582: + movs r5, #0x2c + movs r4, #0x13 + b _0807258C +_08072588: + movs r5, #0x20 + movs r4, #0x2c +_0807258C: + ldr r0, _080725A0 + adds r0, r6, r0 + ldrb r0, [r0] + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08072434 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080725A0: .4byte gUnknown_3005AD0 + thumb_func_end sub_08072528 + + thumb_func_start sub_080725A4 +sub_080725A4: @ 0x080725A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r1, _080725EC + mov r0, sp + movs r2, #0x1e + bl memcpy + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080725F4 + ldr r1, _080725F0 + lsls r4, r6, #4 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r5, #0x28 + adds r7, r4, #0 + cmp r0, #0 + bne _08072614 + movs r5, #0x49 + b _08072614 + .align 2, 0 +_080725EC: .4byte gUnknown_82FCDBC +_080725F0: .4byte gUnknown_20205AC +_080725F4: + ldr r1, _08072630 + lsls r4, r6, #4 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r5, #0x28 + adds r7, r4, #0 + cmp r0, #0 + bne _08072614 + movs r5, #0x29 +_08072614: + mov r0, r8 + cmp r0, #0x64 + bne _08072634 + mov r0, sp + adds r0, #6 + movs r1, #0x64 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + movs r1, #3 + mov r8, r1 + b _0807267E + .align 2, 0 +_08072630: .4byte gUnknown_20205AC +_08072634: + movs r0, #0x2a + bl sub_080722B4 + ldr r2, _080726E0 + adds r1, r7, r6 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r1, r5 + lsls r1, r1, #5 + ldr r2, _080726E4 + adds r1, r1, r2 + ldr r2, _080726E8 + bl CpuSet + mov r0, sp + adds r0, #6 + mov r1, r8 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + mov r2, r8 + cmp r2, #9 + bhi _08072674 + mov r0, sp + adds r0, #7 + ldr r1, _080726EC + bl sub_080088B8 +_08072674: + movs r0, #2 + mov r8, r0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0807267E: + ldr r0, _080726F0 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + mov r2, sp + bl sub_08005F7C + movs r4, #0 + cmp r4, r8 + bhs _080726D2 + ldr r1, _080726E0 + adds r0, r7, r6 + lsls r0, r0, #2 + adds r6, r0, r1 +_080726A0: + ldr r0, _080726F0 + ldr r0, [r0] + movs r2, #0xba + lsls r2, r2, #1 + adds r0, r0, r2 + lsls r1, r4, #6 + ldr r0, [r0] + adds r0, r0, r1 + adds r0, #0x20 + ldrh r1, [r6, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r1, r5 + adds r1, r1, r4 + lsls r1, r1, #5 + ldr r2, _080726E4 + adds r1, r1, r2 + ldr r2, _080726E8 + bl CpuSet + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r8 + blo _080726A0 +_080726D2: + add sp, #0x20 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080726E0: .4byte gUnknown_20205AC +_080726E4: .4byte 0x06010000 +_080726E8: .4byte 0x04000008 +_080726EC: .4byte gUnknown_85CC4EE +_080726F0: .4byte gUnknown_2024178 + thumb_func_end sub_080725A4 + + thumb_func_start sub_080726F4 +sub_080726F4: @ 0x080726F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + ldr r1, _08072750 + mov r0, sp + movs r2, #0x14 + bl memcpy + ldr r1, _08072754 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r7, r0, r1 + ldrh r0, [r7, #0x3a] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0807273E + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08072758 +_0807273E: + mov r0, r8 + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_080727FC + b _080727DE + .align 2, 0 +_08072750: .4byte gUnknown_82FCDDA +_08072754: .4byte gUnknown_20205AC +_08072758: + ldrh r0, [r7, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072772 + movs r7, #0x59 + cmp r5, #0 + bne _0807277A + movs r7, #0x1d + b _0807277A +_08072772: + movs r7, #0x30 + cmp r5, #0 + bne _0807277A + movs r7, #0x14 +_0807277A: + mov r0, sp + adds r0, #6 + mov r2, r8 + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, _080727EC + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #7 + mov r2, sp + bl sub_08005F7C + movs r4, #0 + lsls r0, r6, #4 + ldr r1, _080727F0 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r5, r0, r1 +_080727AC: + ldr r0, _080727EC + ldr r0, [r0] + movs r2, #0xba + lsls r2, r2, #1 + adds r0, r0, r2 + lsls r1, r4, #6 + adds r1, #0x20 + ldr r0, [r0] + adds r0, r0, r1 + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r1, r7 + adds r1, r1, r4 + lsls r1, r1, #5 + ldr r2, _080727F4 + adds r1, r1, r2 + ldr r2, _080727F8 + bl CpuSet + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080727AC +_080727DE: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080727EC: .4byte gUnknown_2024178 +_080727F0: .4byte gUnknown_20205AC +_080727F4: .4byte 0x06010000 +_080727F8: .4byte 0x04000008 + thumb_func_end sub_080726F4 + + thumb_func_start sub_080727FC +sub_080727FC: @ 0x080727FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r1, _080728D0 + mov r0, sp + movs r2, #0x14 + bl memcpy + ldr r5, _080728D4 + mov r1, sb + lsls r0, r1, #4 + add r0, sb + lsls r0, r0, #2 + adds r2, r0, r5 + ldrh r0, [r2, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _080728D8 + ldr r0, [r0] + ldr r1, [r0] + mov r3, sl + lsls r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0807284E + b _080729B4 +_0807284E: + movs r6, #4 + mov r1, r8 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r0, r0, #0x1f + ands r6, r0 + ldrh r0, [r2, #0x38] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r0, sp + adds r0, #6 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + mov r2, r8 + cmp r2, #0 + bne _0807287C + ldr r1, _080728DC + bl sub_080088B8 +_0807287C: + ldr r0, _080728E0 + ldr r0, [r0] + movs r3, #0xba + lsls r3, r3, #1 + adds r0, r0, r3 + ldr r0, [r0] + movs r1, #7 + mov r2, sp + bl sub_08005F7C + adds r4, r6, #0 + adds r0, r4, #3 + cmp r4, r0 + bge _08072920 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r5, r0, r5 +_080728A0: + cmp r4, #2 + bhi _080728EC + ldr r0, _080728E0 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #1 + adds r0, r0, r1 + subs r1, r4, r6 + lsls r1, r1, #6 + adds r1, #0x20 + ldr r0, [r0] + adds r0, r0, r1 + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r4, #1 + adds r1, r1, r4 + lsls r1, r1, #5 + ldr r2, _080728E4 + adds r1, r1, r2 + ldr r2, _080728E8 + bl CpuSet + b _08072916 + .align 2, 0 +_080728D0: .4byte gUnknown_82FCDEE +_080728D4: .4byte gUnknown_20205AC +_080728D8: .4byte gUnknown_2024174 +_080728DC: .4byte gUnknown_85C93FF +_080728E0: .4byte gUnknown_2024178 +_080728E4: .4byte 0x06010000 +_080728E8: .4byte 0x04000008 +_080728EC: + ldr r0, _08072968 + ldr r0, [r0] + movs r3, #0xba + lsls r3, r3, #1 + adds r0, r0, r3 + subs r1, r4, r6 + lsls r1, r1, #6 + adds r1, #0x20 + ldr r0, [r0] + adds r0, r0, r1 + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r4, r1 + lsls r1, r1, #5 + ldr r2, _0807296C + adds r1, r1, r2 + ldr r2, _08072970 + bl CpuSet + adds r4, #1 +_08072916: + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #3 + cmp r4, r0 + blt _080728A0 +_08072920: + mov r3, r8 + cmp r3, #0 + bne _08072980 + ldr r0, _08072968 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0xe0 + ldr r1, _08072974 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r4, r4, r1 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + adds r1, #0x80 + ldr r5, _08072978 + adds r1, r1, r5 + ldr r2, _08072970 + bl CpuSet + mov r2, r8 + str r2, [sp, #0x14] + add r0, sp, #0x14 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + adds r1, r1, r5 + ldr r2, _0807297C + bl CpuSet + b _080729B4 + .align 2, 0 +_08072968: .4byte gUnknown_2024178 +_0807296C: .4byte 0x06010020 +_08072970: .4byte 0x04000008 +_08072974: .4byte gUnknown_20205AC +_08072978: .4byte 0x06010000 +_0807297C: .4byte 0x05000008 +_08072980: + mov r0, sl + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080729B4 + movs r0, #0x74 + bl sub_080722B4 + ldr r2, _080729C4 + mov r3, sb + lsls r1, r3, #4 + add r1, sb + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + movs r2, #0xd0 + lsls r2, r2, #3 + adds r1, r1, r2 + ldr r2, _080729C8 + adds r1, r1, r2 + ldr r2, _080729CC + bl CpuSet +_080729B4: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080729C4: .4byte gUnknown_20205AC +_080729C8: .4byte 0x06010000 +_080729CC: .4byte 0x04000008 + thumb_func_end sub_080727FC + + thumb_func_start sub_080729D0 +sub_080729D0: @ 0x080729D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r1, _08072A78 + mov r0, sp + movs r2, #0x14 + bl memcpy + ldr r1, _08072A7C + ldr r2, [sp, #0x14] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + ldr r1, _08072A80 + ldr r2, [r1] + movs r3, #0xba + lsls r3, r3, #1 + adds r2, r2, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #7 + movs r0, #0xa4 + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, [r2] + adds r6, r0, r1 + movs r1, #5 + mov r8, r1 + adds r0, r4, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + mov r4, sp + adds r4, #6 + ldr r1, _08072A84 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r6, #0 + movs r1, #7 + mov r2, sp + bl sub_08005F7C + movs r7, #6 + movs r5, #0 + mov r2, sp + adds r2, #9 + str r2, [sp, #0x1c] +_08072A54: + mov r3, sp + adds r0, r3, r7 + ldrb r1, [r0] + adds r0, r1, #0 + subs r0, #0x37 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _08072A72 + adds r0, r1, #0 + adds r0, #0x79 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _08072A88 +_08072A72: + movs r0, #0x2c + b _08072AA6 + .align 2, 0 +_08072A78: .4byte gUnknown_82FCDDA +_08072A7C: .4byte gUnknown_20205AC +_08072A80: .4byte gUnknown_2024178 +_08072A84: .4byte gUnknown_85ECE24 +_08072A88: + adds r0, r1, #0 + subs r0, #0x4b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08072AA0 + adds r0, r1, #0 + adds r0, #0x65 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _08072AA4 +_08072AA0: + movs r0, #0x2d + b _08072AA6 +_08072AA4: + movs r0, #0x2b +_08072AA6: + bl sub_080722B4 + lsls r1, r5, #6 + adds r1, r6, r1 + ldr r2, _08072BBC + bl CpuSet + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, #1 + cmp r5, r8 + blo _08072A54 + movs r7, #1 + ldr r0, [sp, #0x14] + lsls r0, r0, #4 + str r0, [sp, #0x18] + movs r1, #1 + add r1, r8 + mov sb, r1 + cmp r7, sb + bge _08072B32 + ldr r1, _08072BC0 + ldr r2, _08072BBC + mov sl, r2 + ldr r3, [sp, #0x14] + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + mov r8, r0 +_08072AE2: + mov r1, r8 + ldrh r0, [r1, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r5, r7, #0 + cmp r7, #0 + bge _08072AF2 + adds r5, r7, #7 +_08072AF2: + asrs r5, r5, #3 + lsls r4, r5, #3 + subs r4, r7, r4 + adds r0, r0, r4 + lsls r5, r5, #6 + adds r0, r0, r5 + lsls r0, r0, #5 + ldr r2, _08072BC4 + adds r1, r0, r2 + adds r0, r6, #0 + mov r2, sl + bl CpuSet + adds r6, #0x20 + mov r3, r8 + ldrh r0, [r3, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r4, #8 + adds r0, r0, r4 + adds r0, r0, r5 + lsls r0, r0, #5 + ldr r2, _08072BC4 + adds r1, r0, r2 + adds r0, r6, #0 + mov r2, sl + bl CpuSet + adds r6, #0x20 + adds r7, #1 + cmp r7, sb + blt _08072AE2 +_08072B32: + ldr r6, _08072BC0 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x14] + adds r0, r3, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r4, [r0, #0x38] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08072BC8 + ldr r0, [r5] + adds r0, #0x7c + ldrb r1, [r0] + mov r0, sp + adds r0, #6 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r5] + adds r0, #0x7b + ldrb r1, [r0] + ldr r0, [sp, #0x1c] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + mov r1, sp + movs r0, #0 + strb r0, [r1, #5] + movs r0, #0xba + strb r0, [r1, #8] + ldr r5, _08072BCC + ldr r0, [r5] + movs r2, #0xba + lsls r2, r2, #1 + adds r0, r0, r2 + ldr r0, [r0] + movs r1, #7 + mov r2, sp + bl sub_08005F7C + movs r7, #0 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r6, r0, r6 + movs r4, #0x20 +_08072B92: + cmp r7, #1 + bgt _08072BD0 + ldr r0, [r5] + movs r3, #0xba + lsls r3, r3, #1 + adds r0, r0, r3 + ldr r0, [r0] + adds r0, r0, r4 + ldrh r1, [r6, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r2, r7, #2 + adds r1, r1, r2 + lsls r1, r1, #5 + ldr r2, _08072BC4 + adds r1, r1, r2 + ldr r2, _08072BBC + bl CpuSet + b _08072BF0 + .align 2, 0 +_08072BBC: .4byte 0x04000008 +_08072BC0: .4byte gUnknown_20205AC +_08072BC4: .4byte 0x06010000 +_08072BC8: .4byte gUnknown_2024140 +_08072BCC: .4byte gUnknown_2024178 +_08072BD0: + ldr r0, [r5] + movs r3, #0xba + lsls r3, r3, #1 + adds r0, r0, r3 + ldr r0, [r0] + adds r0, r0, r4 + ldrh r1, [r6, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r7, r1 + lsls r1, r1, #5 + ldr r2, _08072C08 + adds r1, r1, r2 + ldr r2, _08072C0C + bl CpuSet +_08072BF0: + adds r4, #0x40 + adds r7, #1 + cmp r7, #4 + ble _08072B92 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08072C08: .4byte 0x060100C0 +_08072C0C: .4byte 0x04000008 + thumb_func_end sub_080729D0 + + thumb_func_start sub_08072C10 +sub_08072C10: @ 0x08072C10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + mov sb, r0 + ldr r0, _08072D3C + ldrb r0, [r0] + cmp sb, r0 + blt _08072C2A + b _08072EB6 +_08072C2A: + ldr r1, _08072D40 + mov sl, r1 + ldr r2, _08072D44 + mov r8, r2 +_08072C32: + ldr r0, _08072D48 + mov r1, sb + adds r6, r1, r0 + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, sl + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08072D4C + cmp r1, r0 + beq _08072C50 + b _08072EA4 +_08072C50: + mov r2, sb + lsls r0, r2, #0x18 + lsrs r7, r0, #0x18 + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08072C66 + b _08072EA4 +_08072C66: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072C7E + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072C7E + b _08072EA4 +_08072C7E: + ldr r5, _08072D50 + ldr r0, [r5] + ldr r3, [r0] + mov r0, sb + lsls r4, r0, #2 + adds r3, r4, r3 + ldr r0, [r3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1f + movs r2, #1 + eors r2, r0 + lsls r2, r2, #4 + mov ip, r2 + ldrb r0, [r3] + movs r2, #0x11 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + mov r1, ip + orrs r0, r1 + strb r0, [r3] + ldr r0, [r5] + ldr r0, [r0] + adds r4, r4, r0 + ldr r0, [r4] + lsls r0, r0, #0x1b + lsrs r4, r0, #0x1f + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072DAC + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072CCC + b _08072EA4 +_08072CCC: + ldr r0, _08072D54 + ldr r2, [r0] + movs r0, #0x80 + ands r2, r0 + cmp r2, #0 + beq _08072CDA + b _08072EA4 +_08072CDA: + cmp r4, #1 + bne _08072D64 + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r0, [r0, #0x38] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + str r2, [sp] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r1, [r0, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r2, _08072D58 + adds r1, r1, r2 + mov r0, sp + ldr r2, _08072D5C + bl CpuSet + ldrb r4, [r6] + mov r1, r8 + ldrh r0, [r1] + movs r2, #0x64 + muls r0, r2, r0 + ldr r1, _08072D60 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_080727FC + ldrb r4, [r6] + mov r2, r8 + ldrh r0, [r2] + movs r1, #0x64 + muls r0, r1, r0 + ldr r2, _08072D60 + b _08072E32 + .align 2, 0 +_08072D3C: .4byte gUnknown_2023D10 +_08072D40: .4byte gUnknown_20205AC +_08072D44: .4byte gUnknown_2023D12 +_08072D48: .4byte gUnknown_3005AD0 +_08072D4C: .4byte sub_08007140 +_08072D50: .4byte gUnknown_2024174 +_08072D54: .4byte gUnknown_2022C90 +_08072D58: .4byte 0x06010000 +_08072D5C: .4byte 0x05000040 +_08072D60: .4byte gUnknown_2024190 +_08072D64: + ldrb r0, [r6] + bl sub_08073E68 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r2, #0x64 + muls r1, r2, r1 + ldr r2, _08072DA0 + adds r1, r1, r2 + movs r2, #5 + bl sub_080743F0 + movs r0, #0x75 + bl sub_080722B4 + ldrb r2, [r6] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, sl + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r2, _08072DA4 + adds r1, r1, r2 + ldr r2, _08072DA8 + bl CpuSet + b _08072E8E + .align 2, 0 +_08072DA0: .4byte gUnknown_2024190 +_08072DA4: .4byte 0x06010680 +_08072DA8: .4byte 0x04000008 +_08072DAC: + cmp r4, #1 + bne _08072E58 + ldr r0, _08072DD0 + ldr r2, [r0] + movs r0, #0x80 + ands r2, r0 + cmp r2, #0 + beq _08072DD8 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r2, #0x64 + muls r1, r2, r1 + ldr r2, _08072DD4 + adds r1, r1, r2 + bl sub_080729D0 + b _08072E8E + .align 2, 0 +_08072DD0: .4byte gUnknown_2022C90 +_08072DD4: .4byte gUnknown_20243E8 +_08072DD8: + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r0, [r0, #0x38] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + str r2, [sp] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r1, [r0, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r0, _08072E4C + adds r1, r1, r0 + mov r0, sp + ldr r2, _08072E50 + bl CpuSet + ldrb r4, [r6] + mov r1, r8 + ldrh r0, [r1] + movs r2, #0x64 + muls r0, r2, r0 + ldr r1, _08072E54 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_080727FC + ldrb r4, [r6] + mov r2, r8 + ldrh r0, [r2] + movs r1, #0x64 + muls r0, r1, r0 + ldr r2, _08072E54 +_08072E32: + adds r0, r0, r2 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #1 + bl sub_080727FC + b _08072E8E + .align 2, 0 +_08072E4C: .4byte 0x06010000 +_08072E50: .4byte 0x05000040 +_08072E54: .4byte gUnknown_20243E8 +_08072E58: + ldrb r0, [r6] + bl sub_08073E68 + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + movs r5, #0x64 + muls r1, r5, r1 + ldr r4, _08072EC8 + adds r1, r1, r4 + movs r2, #5 + bl sub_080743F0 + ldr r0, _08072ECC + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08072E8E + ldrb r0, [r6] + mov r2, r8 + ldrh r1, [r2] + muls r1, r5, r1 + adds r1, r1, r4 + movs r2, #4 + bl sub_080743F0 +_08072E8E: + ldr r0, _08072ED0 + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r1, [r0, #0x3c] + movs r2, #1 + eors r1, r2 + strh r1, [r0, #0x3c] +_08072EA4: + movs r0, #2 + add r8, r0 + movs r1, #1 + add sb, r1 + ldr r0, _08072ED4 + ldrb r0, [r0] + cmp sb, r0 + bge _08072EB6 + b _08072C32 +_08072EB6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08072EC8: .4byte gUnknown_20243E8 +_08072ECC: .4byte gUnknown_2022C90 +_08072ED0: .4byte gUnknown_3005AD0 +_08072ED4: .4byte gUnknown_2023D10 + thumb_func_end sub_08072C10 + + thumb_func_start sub_08072ED8 +sub_08072ED8: @ 0x08072ED8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + str r1, [sp, #0xc] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r4, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x10] + cmp r4, #0 + beq _08072F08 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08072F58 +_08072F08: + ldr r0, [sp, #8] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072F2C + movs r0, #0 + mov sb, r0 + movs r5, #0x88 + movs r4, #0x60 + movs r1, #0x64 + mov sl, r1 + ldr r2, _08072F28 + mov r8, r2 + b _08072F68 + .align 2, 0 +_08072F28: .4byte 0x0000FFFB +_08072F2C: + movs r3, #1 + mov sb, r3 + cmp r4, #0 + beq _08072F3E + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08072F44 +_08072F3E: + movs r5, #0x68 + movs r4, #0x28 + b _08072F48 +_08072F44: + movs r5, #0x68 + movs r4, #0x10 +_08072F48: + ldr r6, _08072F54 + mov sl, r6 + movs r0, #5 + mov r8, r0 + b _08072F68 + .align 2, 0 +_08072F54: .4byte 0x0000FF9C +_08072F58: + movs r1, #1 + mov sb, r1 + movs r5, #0x68 + movs r4, #0x28 + ldr r2, _08072FDC + mov sl, r2 + movs r3, #5 + mov r8, r3 +_08072F68: + ldr r0, _08072FE0 + bl sub_080347E0 + ldr r0, _08072FE4 + bl sub_08008210 + ldr r0, _08072FE8 + bl sub_0800845C + ldr r0, _08072FEC + bl sub_0800845C + mov r0, sb + lsls r6, r0, #1 + adds r0, r6, r0 + lsls r0, r0, #3 + ldr r1, _08072FF0 + adds r0, r0, r1 + lsls r5, r5, #0x10 + asrs r1, r5, #0x10 + lsls r4, r4, #0x10 + asrs r2, r4, #0x10 + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsls r0, r0, #4 + ldr r1, [sp, #0x14] + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08072FF4 + adds r7, r0, r1 + ldr r1, _08072FF8 + adds r0, r7, #0 + bl sub_0800858C + mov r2, sl + strh r2, [r7, #0x24] + mov r3, r8 + strh r3, [r7, #0x2e] + str r5, [sp, #0x1c] + str r4, [sp, #0x20] + mov r5, sb + cmp r5, #0 + beq _08072FFC + ldrh r0, [r7, #0x20] + subs r0, #0x60 + strh r0, [r7, #0x20] + ldrb r1, [r7, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r7, #3] + b _08073002 + .align 2, 0 +_08072FDC: .4byte 0x0000FF9C +_08072FE0: .4byte gUnknown_82FCD2C +_08072FE4: .4byte gUnknown_82FCD44 +_08072FE8: .4byte gUnknown_82FCD34 +_08072FEC: .4byte gUnknown_82FCD3C +_08072FF0: .4byte gUnknown_82FCD5C +_08072FF4: .4byte gUnknown_20205AC +_08072FF8: .4byte gUnknown_82FCCBC +_08072FFC: + ldrh r0, [r7, #0x20] + adds r0, #0x60 + strh r0, [r7, #0x20] +_08073002: + movs r0, #0 + mov r8, r0 + ldr r1, _080730B0 + mov sl, r1 + mov r7, sp + mov r2, sb + adds r0, r6, r2 + lsls r0, r0, #3 + str r0, [sp, #0x18] + movs r6, #0xa + movs r5, #0 +_08073018: + ldr r0, _080730B4 + ldr r3, [sp, #0x20] + ldr r1, _080730B8 + adds r2, r3, r1 + ldr r3, [sp, #0x18] + adds r0, r3, r0 + ldr r3, [sp, #0x1c] + asrs r1, r3, #0x10 + asrs r2, r2, #0x10 + movs r3, #9 + bl sub_08006B60 + strb r0, [r7] + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _08073048 + ldrb r0, [r7] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _080730BC + adds r1, r1, r2 + ldr r0, _080730C0 + str r0, [r1] +_08073048: + ldr r4, _080730B0 + mov r3, sb + cmp r3, #0 + bne _0807306A + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + strh r3, [r0, #0x24] + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + mov r1, sb + strh r1, [r0, #0x26] +_0807306A: + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + mov r2, sp + ldrh r2, [r2, #0x14] + strh r2, [r0, #0x2e] + mov r3, sb + cmp r3, #0 + bne _080730C4 + ldrb r0, [r7] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x20] + adds r0, #0x18 + adds r0, r0, r5 + strh r0, [r1, #0x20] + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r6, [r0, #0x30] + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x78 + b _08073106 + .align 2, 0 +_080730B0: .4byte gUnknown_20205AC +_080730B4: .4byte gUnknown_82FCD8C +_080730B8: .4byte 0xFFFC0000 +_080730BC: .4byte gUnknown_20205C8 +_080730C0: .4byte sub_08073AC4 +_080730C4: + ldrb r0, [r7] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrh r3, [r2, #0x20] + subs r3, #0x18 + movs r1, #5 + mov r0, r8 + subs r1, r1, r0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + subs r3, r3, r0 + strh r3, [r2, #0x20] + ldrb r0, [r7] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + movs r1, #6 + mov r3, r8 + subs r1, r1, r3 + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, #0xa + strh r0, [r2, #0x30] + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0807318C +_08073106: + strh r1, [r0, #0x24] + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r1, sb + strh r1, [r0, #0x32] + adds r7, #1 + adds r6, #7 + adds r5, #0xa + movs r2, #1 + add r8, r2 + mov r3, r8 + cmp r3, #5 + bgt _08073128 + b _08073018 +_08073128: + ldr r0, [sp, #8] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08073136 + b _080732E4 +_08073136: + ldr r0, _08073190 + ldr r1, [r0] + movs r2, #0x40 + ands r1, r2 + cmp r1, #0 + beq _080731F0 + ldr r5, _08073194 + mov sl, r5 + ldr r6, _08073198 + ldr r0, _0807319C + adds r7, r0, #0 + ldr r1, _080731A0 + mov sb, r1 + mov r4, sp + ldr r5, [sp, #0xc] + movs r2, #5 + mov r8, r2 +_08073158: + ldrh r0, [r5] + cmp r0, sl + bne _080731A4 + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #1 + ands r1, r7 + mov r0, sb + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + strh r1, [r0, #0x3c] + b _080731DE + .align 2, 0 +_0807318C: .4byte 0x0000FF88 +_08073190: .4byte gUnknown_2022C90 +_08073194: .4byte 0x0000FFFF +_08073198: .4byte gUnknown_20205AC +_0807319C: .4byte 0x000003FF +_080731A0: .4byte 0xFFFFFC00 +_080731A4: + cmp r0, #0 + bne _080731BC + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _080731D4 +_080731BC: + ldr r0, [r5, #4] + cmp r0, #0 + beq _080731DE + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #2 +_080731D4: + ands r1, r7 + mov r0, sb + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] +_080731DE: + adds r4, #1 + adds r5, #8 + movs r3, #1 + rsbs r3, r3, #0 + add r8, r3 + mov r0, r8 + cmp r0, #0 + bge _08073158 + b _08073496 +_080731F0: + movs r1, #5 + mov sl, r1 + movs r7, #0 + ldr r2, _08073244 + mov r8, r2 + ldr r3, _08073248 + mov sb, r3 + ldr r5, _0807324C + mov ip, r5 + ldr r6, [sp, #0xc] + mov r5, sp +_08073206: + ldrh r0, [r6] + ldr r1, _08073250 + cmp r0, r1 + bne _08073254 + mov r4, sp + add r4, sl + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #1 + mov r0, sb + ands r1, r0 + mov r0, ip + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + movs r1, #1 + strh r1, [r0, #0x3c] + subs r1, #2 + add sl, r1 + b _080732DA + .align 2, 0 +_08073244: .4byte gUnknown_20205AC +_08073248: .4byte 0x000003FF +_0807324C: .4byte 0xFFFFFC00 +_08073250: .4byte 0x0000FFFF +_08073254: + cmp r0, #0 + bne _0807326C + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _080732CC +_0807326C: + ldr r1, _080732A8 + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _080732B4 + ldr r0, _080732AC + ldr r0, [r0] + movs r2, #0xa8 + lsls r2, r2, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ldr r2, _080732B0 + lsls r0, r7, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _080732B4 + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _080732CC + .align 2, 0 +_080732A8: .4byte gUnknown_2022C90 +_080732AC: .4byte gUnknown_2024140 +_080732B0: .4byte gUnknown_82FACB4 +_080732B4: + ldr r0, [r6, #4] + cmp r0, #0 + beq _080732D8 + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #2 +_080732CC: + mov r0, sb + ands r1, r0 + mov r0, ip + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] +_080732D8: + adds r5, #1 +_080732DA: + adds r6, #8 + adds r7, #1 + cmp r7, #5 + ble _08073206 + b _08073496 +_080732E4: + ldr r0, _0807333C + ldr r1, [r0] + ldr r2, _08073340 + ands r1, r2 + cmp r1, #0 + beq _080733A0 + ldr r1, _08073344 + mov sl, r1 + ldr r6, _08073348 + ldr r2, _0807334C + adds r7, r2, #0 + ldr r3, _08073350 + mov sb, r3 + ldr r5, [sp, #0xc] + mov r4, sp + adds r4, #5 + movs r0, #5 + mov r8, r0 +_08073308: + ldrh r0, [r5] + cmp r0, sl + bne _08073354 + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #1 + ands r1, r7 + mov r0, sb + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + strh r1, [r0, #0x3c] + b _0807338E + .align 2, 0 +_0807333C: .4byte gUnknown_2022C90 +_08073340: .4byte 0x00008040 +_08073344: .4byte 0x0000FFFF +_08073348: .4byte gUnknown_20205AC +_0807334C: .4byte 0x000003FF +_08073350: .4byte 0xFFFFFC00 +_08073354: + cmp r0, #0 + bne _0807336C + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _08073384 +_0807336C: + ldr r0, [r5, #4] + cmp r0, #0 + beq _0807338E + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #2 +_08073384: + ands r1, r7 + mov r0, sb + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] +_0807338E: + subs r4, #1 + adds r5, #8 + movs r1, #1 + rsbs r1, r1, #0 + add r8, r1 + mov r2, r8 + cmp r2, #0 + bge _08073308 + b _08073496 +_080733A0: + movs r3, #0 + mov r8, r3 + movs r7, #0 + ldr r5, _080733F4 + mov sb, r5 + ldr r6, _080733F8 + mov ip, r6 + ldr r0, _080733FC + mov sl, r0 + ldr r6, [sp, #0xc] + mov r5, sp + adds r5, #5 +_080733B8: + ldrh r0, [r6] + ldr r1, _08073400 + cmp r0, r1 + bne _08073404 + mov r4, sp + add r4, r8 + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #1 + mov r0, ip + ands r1, r0 + mov r0, sl + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r1, #1 + strh r1, [r0, #0x3c] + add r8, r1 + b _0807348E + .align 2, 0 +_080733F4: .4byte gUnknown_20205AC +_080733F8: .4byte 0x000003FF +_080733FC: .4byte 0xFFFFFC00 +_08073400: .4byte 0x0000FFFF +_08073404: + cmp r0, #0 + bne _0807341C + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _08073480 +_0807341C: + ldr r1, _08073458 + ldr r0, [r1] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _08073468 + ldr r2, _0807345C + ldr r0, [r2] + ldr r3, _08073460 + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r7, #2 + ldr r2, _08073464 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08073468 + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #3 + b _08073480 + .align 2, 0 +_08073458: .4byte gUnknown_2022C90 +_0807345C: .4byte gUnknown_2024140 +_08073460: .4byte 0x000002A1 +_08073464: .4byte gUnknown_82FACB4 +_08073468: + ldr r0, [r6, #4] + cmp r0, #0 + beq _0807348C + ldrb r0, [r5] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #2 +_08073480: + mov r0, ip + ands r1, r0 + mov r0, sl + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] +_0807348C: + subs r5, #1 +_0807348E: + adds r6, #8 + adds r7, #1 + cmp r7, #5 + ble _080733B8 +_08073496: + ldr r0, _08073520 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _08073524 + lsls r3, r4, #2 + adds r1, r3, r4 + lsls r1, r1, #3 + adds r0, r1, r2 + mov r5, sp + ldrh r5, [r5, #8] + strh r5, [r0, #8] + mov r6, sp + ldrh r6, [r6, #0x14] + strh r6, [r0, #0xa] + movs r0, #0 + mov r8, r0 + adds r0, r2, #0 + adds r0, #0xe + adds r1, r1, r0 +_080734C2: + mov r0, sp + add r0, r8 + ldrb r0, [r0] + strh r0, [r1] + adds r1, #2 + movs r5, #1 + add r8, r5 + mov r6, r8 + cmp r6, #5 + ble _080734C2 + adds r0, r3, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + mov r1, sp + ldrh r1, [r1, #0x10] + strh r1, [r0, #0x1c] + ldr r2, [sp, #0x10] + cmp r2, #0 + beq _08073506 + ldr r0, _08073528 + ldr r0, [r0] + ldr r3, [r0, #8] + ldrb r2, [r3, #9] + lsls r1, r2, #0x1b + lsrs r1, r1, #0x1d + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0x1d + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #9] +_08073506: + movs r0, #0x72 + movs r1, #0 + bl sub_080A307C + adds r0, r4, #0 + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08073520: .4byte sub_080A8A40 +_08073524: .4byte gUnknown_3005B60 +_08073528: .4byte gUnknown_2024174 + thumb_func_end sub_08072ED8 + + thumb_func_start sub_0807352C +sub_0807352C: @ 0x0807352C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r2, _0807363C + lsls r3, r0, #2 + adds r1, r3, r0 + lsls r1, r1, #3 + adds r0, r1, r2 + ldrb r7, [r0, #0x1c] + ldrb r4, [r0, #0xa] + mov sl, r4 + ldrb r0, [r0, #8] + str r0, [sp, #8] + movs r5, #0 + str r3, [sp, #0xc] + adds r2, #0xe + adds r2, r1, r2 +_0807355A: + mov r0, sp + adds r1, r0, r5 + ldrh r0, [r2] + strb r0, [r1] + adds r2, #2 + adds r5, #1 + cmp r5, #5 + ble _0807355A + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldr r1, _0807363C + ldr r0, [sp, #0xc] + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x10 + strh r1, [r0, #0x26] + movs r5, #0 + mov r1, sl + lsls r1, r1, #4 + str r1, [sp, #0x10] + ldr r3, _08073640 + movs r6, #0xd + rsbs r6, r6, #0 + mov ip, r3 + movs r4, #4 +_0807359C: + mov r2, sp + adds r0, r2, r5 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r1, #1] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #1] + adds r5, #1 + cmp r5, #5 + ble _0807359C + ldr r2, [sp, #0x10] + add r2, sl + lsls r2, r2, #2 + add r2, ip + ldrb r1, [r2, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #1] + cmp r7, #0 + bne _080735D6 + b _080736DC +_080735D6: + movs r5, #0 + mov r6, ip + mov sb, r5 + adds r3, r6, #0 + adds r3, #0x1c + mov r4, sp + movs r7, #0 +_080735E4: + ldr r0, [sp, #8] + str r3, [sp, #0x14] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, [sp, #0x14] + cmp r2, #0 + beq _08073648 + movs r0, #5 + subs r0, r0, r5 + mov r1, sp + adds r2, r1, r0 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r7, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sb + strh r1, [r0, #0x34] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sb + strh r1, [r0, #0x36] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r1, _08073644 + str r1, [r0] + ldr r2, _08073640 + mov ip, r2 + b _0807367E + .align 2, 0 +_0807363C: .4byte gUnknown_3005B60 +_08073640: .4byte gUnknown_20205AC +_08073644: .4byte sub_08073A54 +_08073648: + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r7, [r0, #0x30] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x34] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x36] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r1, _080736C4 + str r1, [r0] + ldr r0, _080736C8 + mov ip, r0 +_0807367E: + adds r4, #1 + adds r7, #7 + adds r5, #1 + cmp r5, #5 + ble _080735E4 + ldr r3, [sp, #0x10] + add r3, sl + lsls r3, r3, #2 + mov r1, ip + adds r0, r3, r1 + movs r2, #0x2e + ldrsh r1, [r0, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + asrs r1, r1, #1 + movs r2, #0 + strh r1, [r0, #0x2e] + strh r2, [r0, #0x30] + mov r1, ip + adds r1, #0x1c + adds r3, r3, r1 + ldr r1, _080736CC + str r1, [r3] + ldr r1, _080736D0 + bl sub_0800858C + ldr r1, _080736D4 + ldr r0, [sp, #0xc] + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080736D8 + str r1, [r0] + b _080736EA + .align 2, 0 +_080736C4: .4byte sub_08073A54 +_080736C8: .4byte gUnknown_20205AC +_080736CC: .4byte sub_0807398C +_080736D0: .4byte gUnknown_82FCCC4 +_080736D4: .4byte gUnknown_3005B60 +_080736D8: .4byte sub_08073704 +_080736DC: + ldr r0, _080736FC + ldr r1, [sp, #0xc] + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08073700 + str r0, [r1] +_080736EA: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080736FC: .4byte gUnknown_3005B60 +_08073700: .4byte sub_08073894 + thumb_func_end sub_0807352C + + thumb_func_start sub_08073704 +sub_08073704: @ 0x08073704 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08073758 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x1e] + adds r1, r0, #1 + strh r1, [r4, #0x1e] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08073744 + ldrh r0, [r4, #0x26] + subs r1, r0, #1 + strh r1, [r4, #0x26] + lsls r0, r1, #0x10 + cmp r0, #0 + blt _08073750 + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_08073744: + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08073750 + ldr r0, _0807375C + str r0, [r4] +_08073750: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073758: .4byte gUnknown_3005B60 +_0807375C: .4byte sub_08073760 + thumb_func_end sub_08073704 + + thumb_func_start sub_08073760 +sub_08073760: @ 0x08073760 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r7, _080737EC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r3, r0, #3 + adds r4, r3, r7 + ldrb r2, [r4, #8] + ldrh r0, [r4, #0x26] + subs r0, #1 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08073850 + ldrb r5, [r4, #0xa] + movs r4, #0 + ldr r6, _080737F0 + adds r0, r7, #0 + adds r0, #0xe + adds r2, r3, r0 +_08073792: + mov r0, sp + adds r1, r0, r4 + ldrh r0, [r2] + strb r0, [r1] + adds r2, #2 + adds r4, #1 + cmp r4, #5 + ble _08073792 + ldr r0, [r6] + ldr r3, [r0, #8] + ldrb r2, [r3, #9] + lsls r1, r2, #0x1b + lsrs r1, r1, #0x1d + subs r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0x1d + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #9] + ldr r0, [r6] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + movs r0, #0x1c + ands r0, r1 + cmp r0, #0 + bne _080737F8 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r4, _080737F4 + adds r0, r0, r4 + bl sub_08007338 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08007338 + b _0807382E + .align 2, 0 +_080737EC: .4byte gUnknown_3005B60 +_080737F0: .4byte gUnknown_2024174 +_080737F4: .4byte gUnknown_20205AC +_080737F8: + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r5, _0807384C + adds r4, r4, r5 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_0800730C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 +_0807382E: + movs r4, #1 + ldr r5, _0807384C +_08073832: + mov r1, sp + adds r0, r1, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + adds r4, #1 + cmp r4, #5 + ble _08073832 + b _08073886 + .align 2, 0 +_0807384C: .4byte gUnknown_20205AC +_08073850: + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08073886 + ldr r0, _08073890 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 +_08073886: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08073890: .4byte gUnknown_2024174 + thumb_func_end sub_08073760 + + thumb_func_start sub_08073894 +sub_08073894: @ 0x08073894 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r7, _080738CC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r6, r0, #3 + adds r3, r6, r7 + ldrb r5, [r3, #8] + ldrh r0, [r3, #0x26] + subs r1, r0, #1 + strh r1, [r3, #0x26] + lsls r0, r1, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + blt _080738D0 + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + b _08073966 + .align 2, 0 +_080738CC: .4byte gUnknown_3005B60 +_080738D0: + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + bne _08073930 + ldrb r3, [r3, #0xa] + movs r5, #0 + adds r0, r7, #0 + adds r0, #0xe + adds r2, r6, r0 +_080738E2: + mov r0, sp + adds r1, r0, r5 + ldrh r0, [r2] + strb r0, [r1] + adds r2, #2 + adds r5, #1 + cmp r5, #5 + ble _080738E2 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r4, _0807392C + adds r0, r0, r4 + bl sub_08007338 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08007338 + movs r5, #1 +_08073912: + mov r1, sp + adds r0, r1, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + adds r5, #1 + cmp r5, #5 + ble _08073912 + b _08073966 + .align 2, 0 +_0807392C: .4byte gUnknown_20205AC +_08073930: + movs r0, #3 + rsbs r0, r0, #0 + cmp r2, r0 + bne _08073966 + ldr r0, _08073970 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A8964 +_08073966: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08073970: .4byte gUnknown_2024174 + thumb_func_end sub_08073894 + + thumb_func_start sub_08073974 +sub_08073974: @ 0x08073974 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x24] + movs r3, #0x24 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08073988 + ldrh r0, [r1, #0x2e] + adds r0, r2, r0 + strh r0, [r1, #0x24] +_08073988: + pop {r0} + bx r0 + thumb_func_end sub_08073974 + + thumb_func_start sub_0807398C +sub_0807398C: @ 0x0807398C + 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 _080739AA + lsls r0, r1, #0x10 + asrs r0, r0, #0x14 + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + b _080739B2 +_080739AA: + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 +_080739B2: + 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_0807398C + + thumb_func_start sub_080739C0 +sub_080739C0: @ 0x080739C0 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080739D4 + subs r0, r1, #1 + strh r0, [r4, #0x30] + b _08073A4A +_080739D4: + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrh r2, [r4, #0x34] + adds r0, r2, #0 + adds r0, #0x38 + lsls r1, r0, #0x10 + lsrs r2, r1, #0x10 + ldr r0, _08073A04 + ands r2, r0 + strh r2, [r4, #0x34] + cmp r3, #0 + beq _08073A08 + lsrs r0, r1, #0x14 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08073A18 + movs r0, #0 + strh r0, [r4, #0x24] + b _08073A18 + .align 2, 0 +_08073A04: .4byte 0x0000FFF0 +_08073A08: + lsrs r1, r1, #0x14 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08073A18 + strh r3, [r4, #0x24] +_08073A18: + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08073A4A + movs r1, #0x3f + cmp r3, #0 + beq _08073A28 + movs r1, #0xc0 +_08073A28: + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08073A3C + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x74 + bl sub_080A3104 + b _08073A46 +_08073A3C: + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x73 + bl sub_080A30D0 +_08073A46: + ldr r0, _08073A50 + str r0, [r4, #0x1c] +_08073A4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073A50: .4byte sub_08007140 + thumb_func_end sub_080739C0 + + thumb_func_start sub_08073A54 +sub_08073A54: @ 0x08073A54 + push {r4, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x30] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _08073A68 + subs r0, r1, #1 + strh r0, [r3, #0x30] + b _08073AB8 +_08073A68: + ldrh r0, [r3, #0x32] + lsls r0, r0, #0x18 + ldrh r2, [r3, #0x34] + adds r1, r2, #0 + adds r1, #0x38 + lsls r4, r1, #0x10 + lsrs r2, r4, #0x10 + ldr r1, _08073A88 + ands r2, r1 + strh r2, [r3, #0x34] + cmp r0, #0 + beq _08073A8C + lsrs r0, r4, #0x14 + ldrh r1, [r3, #0x24] + adds r0, r0, r1 + b _08073A92 + .align 2, 0 +_08073A88: .4byte 0x0000FFF0 +_08073A8C: + lsrs r1, r4, #0x14 + ldrh r0, [r3, #0x24] + subs r0, r0, r1 +_08073A92: + strh r0, [r3, #0x24] + movs r2, #0x24 + ldrsh r0, [r3, r2] + movs r2, #0x20 + ldrsh r1, [r3, r2] + adds r0, r0, r1 + adds r0, #8 + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bls _08073AB8 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08073AC0 + str r0, [r3, #0x1c] +_08073AB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08073AC0: .4byte sub_08007140 + thumb_func_end sub_08073A54 + + thumb_func_start sub_08073AC4 +sub_08073AC4: @ 0x08073AC4 + ldrh r2, [r0, #0x2e] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08073AE0 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r2, [r1, #0x24] + strh r2, [r0, #0x24] + ldrh r1, [r1, #0x26] + strh r1, [r0, #0x26] + bx lr + .align 2, 0 +_08073AE0: .4byte gUnknown_20205AC + thumb_func_end sub_08073AC4 + + thumb_func_start sub_08073AE4 +sub_08073AE4: @ 0x08073AE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r0, #0 + str r0, [sp, #0xc] + ldr r5, _08073B64 + ldr r1, _08073B68 + adds r0, r5, #0 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + adds r0, r5, #0 + mov r1, sp + bl sub_080088D8 + adds r7, r0, #0 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r2, r0, #0 + cmp r0, #0x1d + beq _08073B40 + cmp r0, #0x20 + bne _08073B56 +_08073B40: + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r0, _08073B6C + adds r1, r1, r0 + mov r0, sp + bl sub_0800895C + cmp r0, #0 + bne _08073B56 + movs r5, #0x64 +_08073B56: + cmp r5, #0 + beq _08073B74 + cmp r5, #0xfe + beq _08073B7C + ldr r1, _08073B70 + b _08073B7E + .align 2, 0 +_08073B64: .4byte gUnknown_2022AE0 +_08073B68: .4byte gUnknown_85CC4EA +_08073B6C: .4byte gUnknown_82EA31C +_08073B70: .4byte gUnknown_85CC4FA +_08073B74: + ldr r1, _08073B78 + b _08073B7E + .align 2, 0 +_08073B78: .4byte gUnknown_85CC4F0 +_08073B7C: + ldr r1, _08073C20 +_08073B7E: + adds r0, r7, #0 + bl sub_080088B8 + ldr r1, _08073C24 + mov r2, sl + lsls r5, r2, #4 + adds r0, r5, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + ldr r1, _08073C28 + ldr r2, [r1] + movs r1, #0xba + lsls r1, r1, #1 + adds r2, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #7 + movs r0, #0xa4 + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, [r2] + adds r7, r0, r1 + ldr r4, _08073C2C + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + mov r6, r8 + subs r6, #6 + movs r1, #0 + mov sb, r1 + mov r2, r8 + adds r0, r2, r4 + movs r2, #6 + subs r2, r2, r6 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + bl sub_08008DE8 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + ldr r1, _08073C30 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r7, #0 + movs r1, #7 + adds r2, r4, #0 + bl sub_08005F7C + movs r6, #3 + cmp sb, r8 + bhs _08073C72 +_08073BFE: + ldr r0, _08073C2C + adds r0, r6, r0 + ldrb r1, [r0] + adds r0, r1, #0 + subs r0, #0x37 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _08073C1C + adds r0, r1, #0 + adds r0, #0x79 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _08073C34 +_08073C1C: + movs r0, #0x2c + b _08073C52 + .align 2, 0 +_08073C20: .4byte gUnknown_85CC4F5 +_08073C24: .4byte gUnknown_20205AC +_08073C28: .4byte gUnknown_2024178 +_08073C2C: .4byte gUnknown_2022AE0 +_08073C30: .4byte 0xFFFA0000 +_08073C34: + adds r0, r1, #0 + subs r0, #0x4b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08073C4C + adds r0, r1, #0 + adds r0, #0x65 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _08073C50 +_08073C4C: + movs r0, #0x2d + b _08073C52 +_08073C50: + movs r0, #0x2b +_08073C52: + bl sub_080722B4 + mov r2, sb + lsls r1, r2, #6 + adds r1, r7, r1 + ldr r2, _08073CE8 + bl CpuSet + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r6, #1 + cmp sb, r8 + blo _08073BFE +_08073C72: + ldr r1, _08073CEC + mov r2, sl + adds r0, r5, r2 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08073CF4 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08073CF4 + movs r6, #0 + cmp r6, r8 + bge _08073D64 + ldr r0, _08073CF0 + mov sb, r0 + ldr r5, _08073CE8 +_08073CA2: + ldrh r0, [r4, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r1, r6, #2 + adds r0, r0, r1 + ldr r1, [sp, #0xc] + adds r0, r0, r1 + lsls r0, r0, #5 + mov r2, sb + adds r1, r0, r2 + adds r0, r7, #0 + adds r2, r5, #0 + bl CpuSet + adds r7, #0x20 + ldrh r0, [r4, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r1, r6, #0 + adds r1, #0xa + adds r0, r0, r1 + ldr r1, [sp, #0xc] + adds r0, r0, r1 + lsls r0, r0, #5 + mov r2, sb + adds r1, r0, r2 + adds r0, r7, #0 + adds r2, r5, #0 + bl CpuSet + adds r7, #0x20 + adds r6, #1 + cmp r6, r8 + blt _08073CA2 + b _08073D64 + .align 2, 0 +_08073CE8: .4byte 0x04000008 +_08073CEC: .4byte gUnknown_20205AC +_08073CF0: .4byte 0x06010000 +_08073CF4: + ldr r1, _08073D74 + mov r2, sl + adds r0, r5, r2 + lsls r0, r0, #2 + adds r5, r0, r1 + ldrh r0, [r5, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08073D12 + movs r0, #1 + str r0, [sp, #0xc] +_08073D12: + movs r6, #0 + cmp r6, r8 + bge _08073D64 + ldr r1, _08073D78 + mov sl, r1 + ldr r2, _08073D7C + mov sb, r2 +_08073D20: + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r4, r6, #1 + adds r0, r0, r4 + ldr r1, [sp, #0xc] + adds r0, r0, r1 + lsls r0, r0, #5 + mov r2, sl + adds r1, r0, r2 + adds r0, r7, #0 + mov r2, sb + bl CpuSet + adds r7, #0x20 + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r1, r6, #0 + adds r1, #9 + adds r0, r0, r1 + ldr r1, [sp, #0xc] + adds r0, r0, r1 + lsls r0, r0, #5 + mov r2, sl + adds r1, r0, r2 + adds r0, r7, #0 + mov r2, sb + bl CpuSet + adds r7, #0x20 + adds r6, r4, #0 + cmp r6, r8 + blt _08073D20 +_08073D64: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08073D74: .4byte gUnknown_20205AC +_08073D78: .4byte 0x06010000 +_08073D7C: .4byte 0x04000008 + thumb_func_end sub_08073AE4 + + thumb_func_start sub_08073D80 +sub_08073D80: @ 0x08073D80 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r0, _08073E1C + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08073E56 + movs r0, #8 + ands r1, r0 + cmp r1, #0 + bne _08073E56 + ldr r6, _08073E20 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r6 + ldrh r0, [r5, #0x3a] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08073E56 + ldr r1, _08073E24 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08073E28 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08073E56 + ldrh r0, [r5, #0x38] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r7, #0 + beq _08073E34 + movs r0, #0x46 + bl sub_080722B4 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r2, _08073E2C + adds r1, r1, r2 + ldr r2, _08073E30 + bl CpuSet + b _08073E56 + .align 2, 0 +_08073E1C: .4byte gUnknown_2022C90 +_08073E20: .4byte gUnknown_20205AC +_08073E24: .4byte gUnknown_2023D12 +_08073E28: .4byte gUnknown_20243E8 +_08073E2C: .4byte 0x06010000 +_08073E30: .4byte 0x04000008 +_08073E34: + str r7, [sp] + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r0, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, _08073E60 + adds r1, r1, r0 + ldr r2, _08073E64 + mov r0, sp + bl CpuSet +_08073E56: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08073E60: .4byte 0x06010000 +_08073E64: .4byte 0x05000008 + thumb_func_end sub_08073D80 + + thumb_func_start sub_08073E68 +sub_08073E68: @ 0x08073E68 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08073ECC + mov r2, sb + lsls r1, r2, #4 + add r1, sb + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x3a] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r1, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08073ED8 + ldr r1, _08073ED0 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08073ED4 + adds r0, r0, r1 + movs r1, #0x37 + bl sub_0806A058 + adds r4, r0, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + movs r3, #0x12 + mov r8, r3 + cmp r0, #0 + bne _08073EF4 + movs r0, #0x1a + mov r8, r0 + b _08073EF4 + .align 2, 0 +_08073ECC: .4byte gUnknown_20205AC +_08073ED0: .4byte gUnknown_2023D12 +_08073ED4: .4byte gUnknown_2024190 +_08073ED8: + ldr r1, _08073F14 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08073F18 + adds r0, r0, r1 + movs r1, #0x37 + bl sub_0806A058 + adds r4, r0, #0 + movs r1, #0x11 + mov r8, r1 +_08073EF4: + movs r0, #7 + ands r0, r4 + cmp r0, #0 + beq _08073F1C + movs r0, #0x1b + adds r1, r7, #0 + bl sub_08074118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080722B4 + adds r6, r0, #0 + movs r0, #2 + b _08074028 + .align 2, 0 +_08073F14: .4byte gUnknown_2023D12 +_08073F18: .4byte gUnknown_20243E8 +_08073F1C: + movs r0, #0x88 + ands r0, r4 + cmp r0, #0 + beq _08073F3A + movs r0, #0x15 + adds r1, r7, #0 + bl sub_08074118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080722B4 + adds r6, r0, #0 + movs r0, #0 + b _08074028 +_08073F3A: + movs r0, #0x10 + ands r0, r4 + cmp r0, #0 + beq _08073F58 + movs r0, #0x21 + adds r1, r7, #0 + bl sub_08074118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080722B4 + adds r6, r0, #0 + movs r0, #4 + b _08074028 +_08073F58: + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _08073F76 + movs r0, #0x1e + adds r1, r7, #0 + bl sub_08074118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080722B4 + adds r6, r0, #0 + movs r0, #3 + b _08074028 +_08073F76: + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _08073F94 + movs r0, #0x18 + adds r1, r7, #0 + bl sub_08074118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080722B4 + adds r6, r0, #0 + movs r0, #1 + b _08074028 +_08073F94: + movs r0, #0x27 + bl sub_080722B4 + adds r6, r0, #0 + movs r4, #0 + mov r2, sb + lsls r0, r2, #4 + mov r3, r8 + lsls r3, r3, #0x10 + mov r8, r3 + lsls r7, r7, #2 + ldr r1, _08074014 + add r0, sb + lsls r0, r0, #2 + adds r5, r0, r1 +_08073FB2: + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + mov r2, r8 + asrs r0, r2, #0x10 + adds r1, r1, r0 + adds r1, r1, r4 + lsls r1, r1, #5 + ldr r3, _08074018 + adds r1, r1, r3 + adds r0, r6, #0 + ldr r2, _0807401C + bl CpuSet + adds r4, #1 + cmp r4, #2 + ble _08073FB2 + ldr r0, _08074020 + ldr r0, [r0] + ldr r0, [r0] + adds r0, r7, r0 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08074008 + movs r0, #1 + bl sub_080722B4 + ldr r2, _08074014 + mov r3, sl + lsls r1, r3, #4 + add r1, sl + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r2, _08074018 + adds r1, r1, r2 + ldr r2, _08074024 + bl CpuSet +_08074008: + mov r0, sb + movs r1, #1 + bl sub_08073D80 + b _080740EA + .align 2, 0 +_08074014: .4byte gUnknown_20205AC +_08074018: .4byte 0x06010000 +_0807401C: .4byte 0x04000008 +_08074020: .4byte gUnknown_2024174 +_08074024: .4byte 0x04000010 +_08074028: + mov r1, sb + lsls r5, r1, #4 + add r5, sb + lsls r5, r5, #2 + ldr r2, _080740F8 + adds r5, r5, r2 + ldrb r4, [r5, #5] + lsrs r4, r4, #4 + lsls r4, r4, #4 + adds r4, #0xc + adds r4, r4, r7 + ldr r1, _080740FC + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r4, r3 + movs r2, #2 + bl sub_080A1238 + lsls r4, r4, #1 + ldr r0, _08074100 + adds r0, r4, r0 + ldr r1, _08074104 + adds r4, r4, r1 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + add r1, r8 + lsls r1, r1, #5 + ldr r2, _08074108 + mov r8, r2 + add r1, r8 + ldr r2, _0807410C + adds r0, r6, #0 + bl CpuSet + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08074096 + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080740E2 +_08074096: + ldr r0, _08074110 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r7, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080740E2 + movs r0, #0 + bl sub_080722B4 + mov r3, sl + lsls r4, r3, #4 + add r4, sl + lsls r4, r4, #2 + ldr r1, _080740F8 + adds r4, r4, r1 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + add r1, r8 + ldr r5, _08074114 + adds r2, r5, #0 + bl CpuSet + movs r0, #0x41 + bl sub_080722B4 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + adds r1, #0x20 + add r1, r8 + adds r2, r5, #0 + bl CpuSet +_080740E2: + mov r0, sb + movs r1, #0 + bl sub_08073D80 +_080740EA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080740F8: .4byte gUnknown_20205AC +_080740FC: .4byte gUnknown_82FCE02 +_08074100: .4byte gUnknown_20375B4 +_08074104: .4byte 0x05000200 +_08074108: .4byte 0x06010000 +_0807410C: .4byte 0x04000018 +_08074110: .4byte gUnknown_2024174 +_08074114: .4byte 0x04000008 + thumb_func_end sub_08073E68 + + thumb_func_start sub_08074118 +sub_08074118: @ 0x08074118 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsrs r2, r0, #0x18 + adds r0, r2, #0 + subs r0, #0x15 + cmp r0, #0xc + bhi _080741D8 + lsls r0, r0, #2 + ldr r1, _08074134 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08074134: .4byte _08074138 +_08074138: @ jump table + .4byte _0807416C @ case 0 + .4byte _080741D8 @ case 1 + .4byte _080741D8 @ case 2 + .4byte _08074182 @ case 3 + .4byte _080741D8 @ case 4 + .4byte _080741D8 @ case 5 + .4byte _08074198 @ case 6 + .4byte _080741D8 @ case 7 + .4byte _080741D8 @ case 8 + .4byte _080741AE @ case 9 + .4byte _080741D8 @ case 10 + .4byte _080741D8 @ case 11 + .4byte _080741C4 @ case 12 +_0807416C: + movs r2, #0x15 + cmp r3, #0 + beq _080741D8 + movs r2, #0x47 + cmp r3, #1 + beq _080741D8 + movs r2, #0x65 + cmp r3, #2 + bne _080741D8 + movs r2, #0x56 + b _080741D8 +_08074182: + movs r2, #0x18 + cmp r3, #0 + beq _080741D8 + movs r2, #0x4a + cmp r3, #1 + beq _080741D8 + movs r2, #0x68 + cmp r3, #2 + bne _080741D8 + movs r2, #0x59 + b _080741D8 +_08074198: + movs r2, #0x1b + cmp r3, #0 + beq _080741D8 + movs r2, #0x4d + cmp r3, #1 + beq _080741D8 + movs r2, #0x6b + cmp r3, #2 + bne _080741D8 + movs r2, #0x5c + b _080741D8 +_080741AE: + movs r2, #0x1e + cmp r3, #0 + beq _080741D8 + movs r2, #0x50 + cmp r3, #1 + beq _080741D8 + movs r2, #0x6e + cmp r3, #2 + bne _080741D8 + movs r2, #0x5f + b _080741D8 +_080741C4: + movs r2, #0x21 + cmp r3, #0 + beq _080741D8 + movs r2, #0x53 + cmp r3, #1 + beq _080741D8 + movs r2, #0x71 + cmp r3, #2 + bne _080741D8 + movs r2, #0x62 +_080741D8: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074118 + + thumb_func_start sub_080741E0 +sub_080741E0: @ 0x080741E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08074254 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + ldr r1, _08074258 + ldr r2, [r1] + movs r1, #0xba + lsls r1, r1, #1 + adds r2, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #7 + movs r0, #0xa4 + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, [r2] + adds r6, r0, r1 + movs r1, #7 + mov r8, r1 + ldr r2, _0807425C + adds r0, r6, #0 + bl sub_08005F7C + movs r7, #3 + movs r4, #0 +_08074230: + ldr r0, _0807425C + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r1, #0 + subs r0, #0x37 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _0807424E + adds r0, r1, #0 + adds r0, #0x79 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _08074260 +_0807424E: + movs r0, #0x2c + b _0807427E + .align 2, 0 +_08074254: .4byte gUnknown_20205AC +_08074258: .4byte gUnknown_2024178 +_0807425C: .4byte gUnknown_85ABC38 +_08074260: + adds r0, r1, #0 + subs r0, #0x4b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08074278 + adds r0, r1, #0 + adds r0, #0x65 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _0807427C +_08074278: + movs r0, #0x2d + b _0807427E +_0807427C: + movs r0, #0x2b +_0807427E: + bl sub_080722B4 + lsls r1, r4, #6 + adds r1, r6, r1 + ldr r2, _08074314 + bl CpuSet + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, #1 + cmp r4, r8 + blo _08074230 + movs r7, #3 + movs r2, #3 + add r2, r8 + mov sb, r2 + cmp r7, sb + bge _08074304 + ldr r1, _08074318 + ldr r0, _08074314 + mov sl, r0 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + mov r8, r0 +_080742B4: + mov r1, r8 + ldrh r0, [r1, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r5, r7, #0 + cmp r7, #0 + bge _080742C4 + adds r5, r7, #7 +_080742C4: + asrs r5, r5, #3 + lsls r4, r5, #3 + subs r4, r7, r4 + adds r0, r0, r4 + lsls r5, r5, #6 + adds r0, r0, r5 + lsls r0, r0, #5 + ldr r2, _0807431C + adds r1, r0, r2 + adds r0, r6, #0 + mov r2, sl + bl CpuSet + adds r6, #0x20 + mov r1, r8 + ldrh r0, [r1, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r4, #8 + adds r0, r0, r4 + adds r0, r0, r5 + lsls r0, r0, #5 + ldr r2, _0807431C + adds r1, r0, r2 + adds r0, r6, #0 + mov r2, sl + bl CpuSet + adds r6, #0x20 + adds r7, #1 + cmp r7, sb + blt _080742B4 +_08074304: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08074314: .4byte 0x04000008 +_08074318: .4byte gUnknown_20205AC +_0807431C: .4byte 0x06010000 + thumb_func_end sub_080741E0 + + thumb_func_start sub_08074320 +sub_08074320: @ 0x08074320 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080743D0 + mov r8, r0 + ldr r1, _080743D4 + bl sub_080088B8 + adds r7, r0, #0 + ldr r0, _080743D8 + ldrb r1, [r0] + adds r0, r7, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + adds r7, r0, #0 + ldr r1, _080743DC + bl sub_080088D8 + ldr r0, _080743E0 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + ldr r1, _080743E4 + ldr r2, [r1] + movs r1, #0xba + lsls r1, r1, #1 + adds r2, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #7 + movs r0, #0xa4 + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, [r2] + adds r7, r0, r1 + movs r6, #7 + adds r0, r7, #0 + movs r1, #7 + mov r2, r8 + bl sub_08005F7C + adds r7, #0x20 + movs r5, #4 +_08074390: + ldrh r0, [r4, #4] + lsls r0, r0, #0x16 + lsrs r2, r0, #0x16 + adds r0, r5, #0 + cmp r5, #0 + bge _0807439E + adds r0, r5, #7 +_0807439E: + asrs r0, r0, #3 + lsls r1, r0, #3 + subs r1, r5, r1 + adds r1, #0x18 + adds r1, r2, r1 + lsls r0, r0, #6 + adds r1, r1, r0 + lsls r1, r1, #5 + ldr r0, _080743E8 + adds r1, r1, r0 + adds r0, r7, #0 + ldr r2, _080743EC + bl CpuSet + adds r7, #0x40 + adds r5, #1 + adds r0, r6, #4 + cmp r5, r0 + blt _08074390 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080743D0: .4byte gUnknown_2022AE0 +_080743D4: .4byte gUnknown_85ABC43 +_080743D8: .4byte gUnknown_2039D18 +_080743DC: .4byte gUnknown_85ABC4B +_080743E0: .4byte gUnknown_20205AC +_080743E4: .4byte gUnknown_2024178 +_080743E8: .4byte 0x06010000 +_080743EC: .4byte 0x04000008 + thumb_func_end sub_08074320 + + thumb_func_start sub_080743F0 +sub_080743F0: @ 0x080743F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r1, _0807459C + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r7, #0 + bne _0807442C + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807442C + mov r0, sb + bl sub_080A62F8 +_0807442C: + ldr r1, _0807459C + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08074448 + b _080745A8 +_08074448: + cmp r7, #3 + beq _08074450 + cmp r7, #0 + bne _08074464 +_08074450: + mov r0, r8 + movs r1, #0x38 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080725A4 +_08074464: + cmp r7, #1 + bhi _0807447E + mov r0, r8 + movs r1, #0x39 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r6, #0 + movs r2, #0 + bl sub_080726F4 +_0807447E: + cmp r7, #2 + beq _08074486 + cmp r7, #0 + bne _0807449C +_08074486: + mov r0, r8 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r6, #0 + movs r2, #1 + bl sub_080726F4 +_0807449C: + cmp r7, #5 + beq _080744A4 + cmp r7, #0 + bne _080744D8 +_080744A4: + movs r0, #0 + bl sub_0805DDD4 + mov r0, r8 + movs r1, #0x3a + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + movs r0, #0 + str r0, [sp] + mov r0, sb + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0807235C + mov r0, sb + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_08074630 +_080744D8: + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0 + bne _0807455E + cmp r7, #6 + beq _080744EE + cmp r7, #0 + bne _0807455E +_080744EE: + movs r0, #3 + bl sub_0805DDD4 + mov r0, r8 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, r8 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, r8 + movs r1, #0x19 + bl sub_0806A058 + adds r3, r0, #0 + ldr r0, _080745A0 + mov ip, r0 + lsls r1, r4, #2 + ldr r2, _080745A4 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r2, r0 + adds r1, r1, r0 + add r1, ip + ldr r1, [r1] + subs r3, r3, r1 + adds r4, #1 + lsls r4, r4, #2 + adds r4, r4, r0 + add r4, ip + ldr r2, [r4] + subs r2, r2, r1 + mov r0, sl + str r0, [sp] + mov r0, sb + adds r1, r6, #0 + bl sub_0807235C + mov r0, sb + adds r1, r6, #0 + movs r2, #1 + movs r3, #0 + bl sub_08074630 +_0807455E: + cmp r7, #4 + beq _08074566 + cmp r7, #0 + bne _0807456E +_08074566: + adds r0, r6, #0 + mov r1, r8 + bl sub_08073AE4 +_0807456E: + cmp r7, #9 + beq _08074576 + cmp r7, #0 + bne _0807457C +_08074576: + adds r0, r6, #0 + bl sub_08073E68 +_0807457C: + cmp r7, #0xa + bne _08074586 + adds r0, r6, #0 + bl sub_080741E0 +_08074586: + adds r0, r7, #0 + subs r0, #0xa + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0807461E + adds r0, r6, #0 + bl sub_08074320 + b _0807461E + .align 2, 0 +_0807459C: .4byte gUnknown_20205AC +_080745A0: .4byte gUnknown_82F00B4 +_080745A4: .4byte gUnknown_82F0D54 +_080745A8: + cmp r7, #3 + beq _080745B0 + cmp r7, #0 + bne _080745C4 +_080745B0: + mov r0, r8 + movs r1, #0x38 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080725A4 +_080745C4: + cmp r7, #5 + beq _080745CC + cmp r7, #0 + bne _08074600 +_080745CC: + movs r0, #0 + bl sub_0805DDD4 + mov r0, r8 + movs r1, #0x3a + bl sub_0806A058 + adds r4, r0, #0 + mov r0, r8 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + movs r0, #0 + str r0, [sp] + mov r0, sb + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0807235C + mov r0, sb + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_08074630 +_08074600: + cmp r7, #4 + beq _08074608 + cmp r7, #0 + bne _08074610 +_08074608: + adds r0, r6, #0 + mov r1, r8 + bl sub_08073AE4 +_08074610: + cmp r7, #9 + beq _08074618 + cmp r7, #0 + bne _0807461E +_08074618: + adds r0, r6, #0 + bl sub_08073E68 +_0807461E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080743F0 + + thumb_func_start sub_08074630 +sub_08074630: @ 0x08074630 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + cmp r2, #0 + bne _0807467C + ldr r0, _08074678 + ldr r0, [r0] + ldr r0, [r0, #0xc] + mov r1, r8 + lsls r5, r1, #2 + adds r3, r5, r1 + lsls r3, r3, #2 + adds r3, r3, r0 + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r2, [r3, #0xc] + adds r3, #0x10 + movs r4, #6 + str r4, [sp] + movs r4, #1 + str r4, [sp, #4] + bl sub_08074948 + adds r4, r0, #0 + adds r7, r5, #0 + b _080746D8 + .align 2, 0 +_08074678: .4byte gUnknown_2024174 +_0807467C: + ldr r2, _08074728 + mov sl, 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, #8] + ldr r1, [r2, #0xc] + ldr r2, [r2, #4] + movs r3, #8 + bl sub_08074B78 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r4, #0 + cmp r5, #0 + bne _080746A6 + movs r5, #1 +_080746A6: + mov r1, sl + 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 _080746BE + rsbs r0, r0, #0 +_080746BE: + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [r4, #4] + ldr r1, [r4, #8] + adds r3, r4, #0 + adds r3, #0x10 + movs r2, #8 + str r2, [sp] + str r5, [sp, #4] + adds r2, r6, #0 + bl sub_08074948 + adds r4, r0, #0 +_080746D8: + mov r2, sb + cmp r2, #1 + beq _080746F4 + cmp r2, #0 + bne _080746FC + ldr r0, _08074728 + ldr r0, [r0] + ldr r0, [r0] + adds r0, r7, r0 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080746FC +_080746F4: + mov r0, r8 + mov r1, sb + bl sub_0807472C +_080746FC: + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + bne _08074716 + ldr r0, _08074728 + ldr r0, [r0] + ldr r1, [r0, #0xc] + mov r2, r8 + adds r0, r7, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0, #0x10] +_08074716: + adds r0, r4, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08074728: .4byte gUnknown_2024174 + thumb_func_end sub_08074630 + + thumb_func_start sub_0807472C +sub_0807472C: @ 0x0807472C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + beq _08074748 + cmp r1, #1 + beq _08074830 + b _0807492E +_08074748: + ldr r0, _080747DC + ldr r0, [r0] + ldr r0, [r0, #0xc] + lsls r5, r6, #2 + adds r3, r5, r6 + lsls r3, r3, #2 + adds r3, r3, r0 + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r2, [r3, #0xc] + adds r3, #0x10 + add r4, sp, #8 + str r4, [sp] + movs r4, #6 + str r4, [sp, #4] + bl sub_08074A1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + mov sb, r1 + adds r7, r5, #0 + cmp r0, #0x18 + bhi _08074784 + movs r2, #0x38 + mov sb, r2 + cmp r0, #9 + bls _08074784 + movs r4, #0x2f + mov sb, r4 +_08074784: + movs r5, #0 + ldr r0, _080747E0 + mov r8, r0 +_0807478A: + ldr r0, _080747DC + ldr r0, [r0] + ldr r1, [r0, #0xc] + adds r0, r7, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrh r0, [r0, #0x38] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r5, #1 + bhi _080747EC + mov r0, sb + bl sub_080722B4 + mov r1, sp + adds r1, r1, r5 + adds r1, #8 + ldrb r1, [r1] + lsls r1, r1, #5 + adds r0, r0, r1 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + add r1, r8 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r2, r5, #2 + adds r1, r1, r2 + lsls r1, r1, #5 + ldr r2, _080747E4 + adds r1, r1, r2 + ldr r2, _080747E8 + bl CpuSet + b _0807481A + .align 2, 0 +_080747DC: .4byte gUnknown_2024174 +_080747E0: .4byte gUnknown_20205AC +_080747E4: .4byte 0x06010000 +_080747E8: .4byte 0x04000008 +_080747EC: + mov r0, sb + bl sub_080722B4 + mov r1, sp + adds r1, r1, r5 + adds r1, #8 + ldrb r1, [r1] + lsls r1, r1, #5 + adds r0, r0, r1 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + add r1, r8 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r5, r1 + lsls r1, r1, #5 + ldr r4, _08074828 + adds r1, r1, r4 + ldr r2, _0807482C + bl CpuSet +_0807481A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0807478A + b _0807492E + .align 2, 0 +_08074828: .4byte 0x06010040 +_0807482C: .4byte 0x04000008 +_08074830: + ldr r0, _080748D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + lsls r5, r6, #2 + adds r3, r5, r6 + lsls r3, r3, #2 + adds r3, r3, r0 + ldr r0, [r3, #4] + ldr r1, [r3, #8] + ldr r2, [r3, #0xc] + adds r3, #0x10 + add r4, sp, #8 + str r4, [sp] + movs r4, #8 + str r4, [sp, #4] + bl sub_08074A1C + ldr r1, _080748D8 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080748DC + adds r0, r0, r1 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r5, #0 + cmp r0, #0x64 + bne _08074888 + movs r5, #0 + movs r1, #0 +_08074876: + mov r0, sp + adds r0, r0, r5 + adds r0, #8 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #7 + bls _08074876 +_08074888: + movs r5, #0 + ldr r0, _080748E0 + mov r8, r0 + adds r0, r7, r6 + lsls r4, r0, #2 +_08074892: + cmp r5, #3 + bhi _080748EC + movs r0, #0xc + bl sub_080722B4 + mov r1, sp + adds r1, r1, r5 + adds r1, #8 + ldrb r1, [r1] + lsls r1, r1, #5 + adds r0, r0, r1 + ldr r1, _080748D4 + ldr r1, [r1] + ldr r1, [r1, #0xc] + adds r1, r4, r1 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r2, r5, #0 + adds r2, #0x24 + adds r1, r1, r2 + lsls r1, r1, #5 + ldr r2, _080748E4 + adds r1, r1, r2 + ldr r2, _080748E8 + bl CpuSet + b _08074924 + .align 2, 0 +_080748D4: .4byte gUnknown_2024174 +_080748D8: .4byte gUnknown_2023D12 +_080748DC: .4byte gUnknown_2024190 +_080748E0: .4byte gUnknown_20205AC +_080748E4: .4byte 0x06010000 +_080748E8: .4byte 0x04000008 +_080748EC: + movs r0, #0xc + bl sub_080722B4 + mov r1, sp + adds r1, r1, r5 + adds r1, #8 + ldrb r1, [r1] + lsls r1, r1, #5 + adds r0, r0, r1 + ldr r1, _0807493C + ldr r1, [r1] + ldr r1, [r1, #0xc] + adds r1, r4, r1 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r1, r5, r1 + lsls r1, r1, #5 + ldr r2, _08074940 + adds r1, r1, r2 + ldr r2, _08074944 + bl CpuSet +_08074924: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #7 + bls _08074892 +_0807492E: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807493C: .4byte gUnknown_2024174 +_08074940: .4byte 0x06010B80 +_08074944: .4byte 0x04000008 + thumb_func_end sub_0807472C + + thumb_func_start sub_08074948 +sub_08074948: @ 0x08074948 + push {r4, r5, r6, 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, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x1b + lsrs r2, r1, #0x18 + ldr r1, [r5] + ldr r0, _08074974 + cmp r1, r0 + bne _0807497A + cmp r7, r2 + bge _08074978 + lsls r0, r4, #8 + str r0, [r5] + b _0807497A + .align 2, 0 +_08074974: .4byte 0xFFFF8000 +_08074978: + str r4, [r5] +_0807497A: + mov r0, r8 + subs r4, r4, r0 + cmp r4, #0 + bge _08074986 + movs r4, #0 + b _0807498C +_08074986: + cmp r4, r7 + ble _0807498C + adds r4, r7, #0 +_0807498C: + cmp r7, r2 + bge _080749A8 + ldr r0, [r5] + asrs r1, r0, #8 + adds r6, r0, #0 + cmp r4, r1 + bne _080749B4 + movs r0, #0xff + ands r0, r6 + cmp r0, #0 + bne _080749B4 + movs r0, #1 + rsbs r0, r0, #0 + b _08074A10 +_080749A8: + ldr r6, [r5] + cmp r4, r6 + bne _080749B4 + movs r0, #1 + rsbs r0, r0, #0 + b _08074A10 +_080749B4: + cmp r7, r2 + bge _080749EE + lsls r0, r7, #8 + adds r1, r2, #0 + bl __divsi3 + mov r1, r8 + cmp r1, #0 + bge _080749D2 + adds r0, r6, r0 + str r0, [r5] + asrs r2, r0, #8 + cmp r2, r4 + blt _08074A0E + b _080749E6 +_080749D2: + subs r0, r6, r0 + str r0, [r5] + asrs r2, r0, #8 + movs r1, #0xff + ands r0, r1 + cmp r0, #0 + ble _080749E2 + adds r2, #1 +_080749E2: + cmp r2, r4 + bgt _08074A0E +_080749E6: + lsls r0, r4, #8 + str r0, [r5] + adds r2, r4, #0 + b _08074A0E +_080749EE: + mov r0, r8 + cmp r0, #0 + bge _08074A00 + ldr r0, [r5] + adds r0, r0, r3 + str r0, [r5] + cmp r0, r4 + ble _08074A0C + b _08074A0A +_08074A00: + ldr r0, [r5] + subs r0, r0, r3 + str r0, [r5] + cmp r0, r4 + bge _08074A0C +_08074A0A: + str r4, [r5] +_08074A0C: + ldr r2, [r5] +_08074A0E: + adds r0, r2, #0 +_08074A10: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074948 + + thumb_func_start sub_08074A1C +sub_08074A1C: @ 0x08074A1C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + mov ip, r3 + ldr r7, [sp, #0x14] + ldr r0, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + subs r5, r1, r2 + cmp r5, #0 + bge _08074A34 + movs r5, #0 + b _08074A3A +_08074A34: + cmp r5, r4 + ble _08074A3A + adds r5, r4, #0 +_08074A3A: + lsls r0, r6, #0x1b + lsrs r3, r0, #0x18 + movs r1, #0 + cmp r1, r6 + bhs _08074A54 + movs r2, #0 +_08074A46: + adds r0, r7, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r6 + blo _08074A46 +_08074A54: + cmp r4, r3 + bge _08074A68 + mov r1, ip + ldr r0, [r1] + muls r0, r3, r0 + adds r1, r4, #0 + bl __divsi3 + asrs r0, r0, #8 + b _08074A74 +_08074A68: + mov r1, ip + ldr r0, [r1] + muls r0, r3, r0 + adds r1, r4, #0 + bl __divsi3 +_08074A74: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + cmp r3, #0 + bne _08074A8A + cmp r5, #0 + ble _08074A8A + movs r0, #1 + strb r0, [r7] + movs r3, #1 + b _08074AAE +_08074A8A: + movs r1, #0 + movs r4, #8 +_08074A8E: + cmp r1, r6 + bhs _08074AAE + cmp r2, #7 + bls _08074AAA + adds r0, r7, r1 + strb r4, [r0] + adds r0, r2, #0 + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + b _08074A8E +_08074AAA: + adds r0, r7, r1 + strb r2, [r0] +_08074AAE: + adds r0, r3, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074A1C + + thumb_func_start sub_08074AB8 +sub_08074AB8: @ 0x08074AB8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + mov r8, r3 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + movs r3, #6 + str r3, [sp] + movs r3, #1 + str r3, [sp, #4] + adds r3, r6, #0 + bl sub_08074948 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08074B18 + ldr r0, [r5] + cmp r0, #0x2f + bgt _08074AF8 + ldr r0, [r6] + lsls r0, r0, #8 + lsrs r1, r0, #0x10 + b _08074AFA +_08074AF8: + ldrh r1, [r6] +_08074AFA: + movs r2, #0 + ldrsh r0, [r5, r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r2, r8 + bl sub_08071D14 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08074AB8 + + thumb_func_start sub_08074B18 +sub_08074B18: @ 0x08074B18 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x1c + adds r5, r0, #0 + adds r3, r1, #0 + mov r8, r2 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r4, sp, #8 + str r4, [sp] + movs r4, #6 + str r4, [sp, #4] + bl sub_08074A1C + movs r3, #0 + add r7, sp, #0x10 + mov ip, r7 + ldrb r0, [r5, #0xc] + lsls r6, r0, #0x1b + ldr r4, [r5, #0x10] +_08074B44: + lsls r2, r3, #1 + add r2, ip + lsrs r1, r6, #0xf + mov r0, sp + adds r0, r0, r3 + adds r0, #8 + ldrb r0, [r0] + adds r0, r4, r0 + orrs r1, r0 + strh r1, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #5 + bls _08074B44 + adds r0, r7, #0 + mov r1, r8 + movs r2, #6 + bl CpuSet + add sp, #0x1c + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08074B18 + + thumb_func_start sub_08074B78 +sub_08074B78: @ 0x08074B78 + push {r4, r5, r6, r7, lr} + adds r6, r2, #0 + lsls r3, r3, #0x1b + lsrs r7, r3, #0x18 + subs r5, r0, r1 + cmp r5, #0 + bge _08074B8A + movs r5, #0 + b _08074B90 +_08074B8A: + cmp r5, r6 + ble _08074B90 + adds r5, r6, #0 +_08074B90: + muls r0, r7, r0 + adds r1, r6, #0 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + muls r0, r7, r0 + adds r1, r6, #0 + bl __divsi3 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + subs r0, r4, r0 + cmp r0, #0 + bge _08074BB8 + rsbs r0, r0, #0 +_08074BB8: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074B78 + + thumb_func_start sub_08074BC4 +sub_08074BC4: @ 0x08074BC4 + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + muls r0, r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08074BE8 + cmp r4, #0 + ble _08074BE8 + movs r0, #1 +_08074BE8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074BC4 + + thumb_func_start sub_08074BF0 +sub_08074BF0: @ 0x08074BF0 + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bne _08074C02 + movs r0, #4 + b _08074C1E +_08074C02: + movs r2, #0x30 + bl sub_08074BC4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #3 + cmp r1, #0x18 + bhi _08074C1E + movs r0, #2 + cmp r1, #9 + bhi _08074C1E + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_08074C1E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08074BF0 + + thumb_func_start sub_08074C24 +sub_08074C24: @ 0x08074C24 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + ldr r5, _08074D5C + ldrh r0, [r5, #6] + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _08074D60 + cmp r0, r1 + bne _08074C56 + adds r0, r5, #0 + bl sub_080347E0 + ldr r0, _08074D64 + bl sub_0803481C +_08074C56: + ldr r0, _08074D68 + bl sub_0806F0C4 + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r5, r0, #4 + add r5, r8 + lsls r5, r5, #2 + ldr r0, _08074D6C + adds r5, r5, r0 + strh r4, [r5, #0x30] + ldr r0, _08074D70 + mov sb, r0 + lsls r6, r6, #0x10 + asrs r0, r6, #0x10 + mov sl, r0 + ldr r0, _08074D74 + adds r6, r6, r0 + asrs r6, r6, #0x10 + lsls r4, r7, #0x10 + asrs r7, r4, #0x10 + adds r4, r4, r0 + asrs r4, r4, #0x10 + mov r0, sb + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08074D6C + adds r1, r1, r0 + mov r0, r8 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r0, r1, #0 + bl sub_08007358 + mov r0, sb + mov r1, sl + adds r2, r4, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _08074D6C + adds r4, r4, r0 + mov r0, r8 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_08007358 + mov r0, sb + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _08074D6C + adds r4, r4, r0 + mov r0, r8 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_08007358 + mov r0, sb + mov r1, sl + adds r2, r7, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _08074D6C + adds r4, r4, r0 + mov r0, r8 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_08007358 + mov r0, r8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08074D5C: .4byte gUnknown_82ECFA8 +_08074D60: .4byte 0xFFFF0000 +_08074D64: .4byte gUnknown_82ECFB0 +_08074D68: .4byte sub_08074D78 +_08074D6C: .4byte gUnknown_20205AC +_08074D70: .4byte gUnknown_82ED010 +_08074D74: .4byte 0xFFF00000 + thumb_func_end sub_08074C24 + + thumb_func_start sub_08074D78 +sub_08074D78: @ 0x08074D78 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08074DB0 + ldr r0, _08074DA4 + ldrh r0, [r0, #6] + bl sub_08008280 + ldr r0, _08074DA8 + ldrh r0, [r0, #4] + bl sub_08008564 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08074DAC + adds r0, r4, #0 + bl sub_08006E00 + b _08074DB0 + .align 2, 0 +_08074DA4: .4byte gUnknown_82ECFA8 +_08074DA8: .4byte gUnknown_82ECFB0 +_08074DAC: + ldr r0, _08074DB8 + str r0, [r4, #0x1c] +_08074DB0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08074DB8: .4byte sub_08007140 + thumb_func_end sub_08074D78 + + thumb_func_start sub_08074DBC +sub_08074DBC: @ 0x08074DBC + push {lr} + adds r3, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08074DE6 + ldr r2, _08074DEC + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x2e] + subs r1, #1 + strh r1, [r0, #0x2e] + adds r0, r3, #0 + bl sub_08006E00 +_08074DE6: + pop {r0} + bx r0 + .align 2, 0 +_08074DEC: .4byte gUnknown_20205AC + thumb_func_end sub_08074DBC + + thumb_func_start sub_08074DF0 +sub_08074DF0: @ 0x08074DF0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _08074E44 + movs r0, #1 + strb r0, [r1] + ldr r0, _08074E48 + ldr r0, [r0] + ldr r6, _08074E4C + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] + ldr r0, _08074E50 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08074E54 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + strh r5, [r1, #0xc] + ldrb r0, [r6] + strh r0, [r1, #0xe] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08074E44: .4byte gUnknown_202415D +_08074E48: .4byte gUnknown_2024174 +_08074E4C: .4byte gUnknown_2023D08 +_08074E50: .4byte sub_08074E58 +_08074E54: .4byte gUnknown_3005B60 + thumb_func_end sub_08074DF0 + + thumb_func_start sub_08074E58 +sub_08074E58: @ 0x08074E58 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r0, #0 + str r0, [sp] + ldr r1, _08074E8C + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #8] + movs r3, #8 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _08074E90 + adds r0, r2, #1 + strh r0, [r1, #8] + b _0807500A + .align 2, 0 +_08074E8C: .4byte gUnknown_3005B60 +_08074E90: + ldrh r0, [r1, #0xc] + mov r8, r0 + ldrb r5, [r1, #0xe] + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08074EBC + ldr r1, _08074EB4 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08074EB8 + b _08074ECA + .align 2, 0 +_08074EB4: .4byte gUnknown_2023D12 +_08074EB8: .4byte gUnknown_20243E8 +_08074EBC: + ldr r1, _08074F38 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08074F3C +_08074ECA: + adds r0, r0, r1 + movs r1, #0x26 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08170B68 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08076480 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08074F40 + adds r0, r0, r1 + movs r1, #0x20 + movs r2, #0x50 + movs r3, #0x1d + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08074F44 + mov sb, r2 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r6, r0, #2 + adds r4, r6, r2 + movs r0, #0x80 + strh r0, [r4, #0x2e] + movs r3, #0 + strh r3, [r4, #0x30] + mov r0, r8 + strh r0, [r4, #0x3c] + mov r2, r8 + cmp r2, #0xfe + beq _08074F50 + cmp r2, #0xff + bne _08074F8C + ldr r0, _08074F48 + strb r5, [r0] + movs r0, #0x18 + strh r0, [r4, #0x20] + movs r0, #0x44 + strh r0, [r4, #0x22] + mov r0, sb + adds r0, #0x1c + adds r0, r6, r0 + ldr r1, _08074F4C + str r1, [r0] + b _08074F9A + .align 2, 0 +_08074F38: .4byte gUnknown_2023D12 +_08074F3C: .4byte gUnknown_2024190 +_08074F40: .4byte gUnknown_82FCF94 +_08074F44: .4byte gUnknown_20205AC +_08074F48: .4byte gUnknown_2023EB0 +_08074F4C: .4byte sub_08075BBC +_08074F50: + adds r0, r5, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x18 + strh r0, [r4, #0x22] + ldr r0, _08074F84 + strb r5, [r0] + movs r3, #0 + strh r3, [r4, #0x2e] + mov r0, sb + adds r0, #0x1c + adds r0, r6, r0 + ldr r1, _08074F88 + str r1, [r0] + b _08074F9A + .align 2, 0 +_08074F84: .4byte gUnknown_2023EB0 +_08074F88: .4byte sub_08075DA0 +_08074F8C: + movs r0, #1 + bl sub_080A631C + ldr r1, _08074FB8 + strb r0, [r1] + movs r0, #1 + str r0, [sp] +_08074F9A: + ldr r0, _08074FBC + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r4, r1, r0 + ldr r5, _08074FB8 + ldrb r0, [r5] + strh r0, [r4, #0x3a] + ldr r2, [sp] + cmp r2, #0 + bne _08074FC0 + mov r0, sl + bl sub_080A8964 + b _0807500A + .align 2, 0 +_08074FB8: .4byte gUnknown_2023EB0 +_08074FBC: .4byte gUnknown_20205AC +_08074FC0: + movs r0, #0x22 + strh r0, [r4, #0x2e] + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x10 + strh r0, [r4, #0x36] + ldr r0, _0807501C + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + mov r3, sl + strh r3, [r4, #6] + ldr r1, _08075020 + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r5] + strh r1, [r0, #0x10] + ldr r1, _08075024 + str r1, [r0] + movs r0, #0x3d + bl sub_080A306C +_0807500A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807501C: .4byte 0x0000FFD8 +_08075020: .4byte gUnknown_3005B60 +_08075024: .4byte sub_080A8A40 + thumb_func_end sub_08074E58 + + thumb_func_start sub_08075028 +sub_08075028: @ 0x08075028 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080750C8 + ldrb r6, [r7, #6] + ldr r1, _080750D4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r5, [r0, #0x10] + ldrb r0, [r0, #0xc] + mov r8, r0 + adds r0, r7, #0 + movs r1, #1 + bl sub_08007EC0 + 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, r0, r1 + movs r1, #0 + strh r0, [r7, #0x20] + ldrh r0, [r7, #0x26] + ldrh r2, [r7, #0x22] + adds r0, r0, r2 + strh r0, [r7, #0x22] + strh r1, [r7, #0x24] + strh r1, [r7, #0x26] + strh r1, [r7, #0x38] + adds r0, r5, #0 + bl sub_0807651C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08170B68 + adds r4, r0, #0 + ldrh r0, [r7, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r7, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r2, #1 + movs r3, #0x1c + bl sub_08171B7C + movs r0, #0 + adds r1, r5, #0 + movs r2, #0xe + adds r3, r4, #0 + bl sub_081727CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x2e] + strh r5, [r7, #0x3a] + mov r0, r8 + strh r0, [r7, #0x3c] + adds r0, r6, #0 + bl sub_080A8964 + ldr r0, _080750D8 + str r0, [r7, #0x1c] +_080750C8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080750D4: .4byte gUnknown_3005B60 +_080750D8: .4byte sub_080750DC + thumb_func_end sub_08075028 + + thumb_func_start sub_080750DC +sub_080750DC: @ 0x080750DC + ldr r1, _080750E4 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_080750E4: .4byte sub_080750E8 + thumb_func_end sub_080750DC + + thumb_func_start sub_080750E8 +sub_080750E8: @ 0x080750E8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrh r0, [r6, #0x38] + adds r0, #1 + movs r7, #0 + strh r0, [r6, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08075142 + strh r7, [r6, #0x38] + ldr r0, _08075148 + str r0, [r6, #0x1c] + ldr r5, _0807514C + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08075150 + adds r0, r0, r4 + movs r1, #2 + bl sub_08007F70 + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08007358 + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r7, [r0, #0x30] +_08075142: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075148: .4byte sub_08075154 +_0807514C: .4byte gUnknown_2023E88 +_08075150: .4byte gUnknown_20205AC + thumb_func_end sub_080750E8 + + thumb_func_start sub_08075154 +sub_08075154: @ 0x08075154 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + bne _0807516C + movs r0, #0x3c + bl sub_080A306C +_0807516C: + ldr r6, _080751B8 + ldr r5, _080751BC + movs r1, #0x3a + ldrsh r0, [r4, r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _080751C4 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + movs r2, #0x3a + ldrsh r0, [r4, r2] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + movs r0, #0 + strh r0, [r4, #0x38] + ldr r0, _080751C0 + str r0, [r4, #0x1c] + b _080751E4 + .align 2, 0 +_080751B8: .4byte gUnknown_20205AC +_080751BC: .4byte gUnknown_2023E88 +_080751C0: .4byte sub_080751EC +_080751C4: + ldrh r0, [r1, #0x30] + adds r0, #0x60 + strh r0, [r1, #0x30] + movs r1, #0x3a + ldrsh r0, [r4, r1] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r2, #0x30 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + asrs r0, r0, #8 + strh r0, [r1, #0x26] +_080751E4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08075154 + + thumb_func_start sub_080751EC +sub_080751EC: @ 0x080751EC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08075234 + ldrh r0, [r4, #0x38] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _08075234 + strh r1, [r4, #0x34] + movs r0, #0x20 + strh r0, [r4, #0x36] + strh r1, [r4, #0x38] + movs r0, #0 + movs r1, #0x20 + bl sub_0806EFD4 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldr r0, _0807523C + str r0, [r4, #0x1c] +_08075234: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807523C: .4byte sub_08075240 + thumb_func_end sub_080751EC + + thumb_func_start sub_08075240 +sub_08075240: @ 0x08075240 + 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 _08075256 + cmp r1, #1 + beq _080752CA + b _080752F6 +_08075256: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x38] + adds r1, #4 + ldrh r2, [r4, #0x34] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + adds r1, r1, r0 + strh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x3f + ble _080752F6 + ldrh r0, [r4, #0x36] + subs r0, #0xa + strh r0, [r4, #0x36] + ldr r1, _080752A0 + adds r0, r2, r1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + cmp r0, #4 + bne _08075292 + movs r5, #1 +_08075292: + cmp r0, #2 + beq _080752B2 + cmp r0, #2 + bgt _080752A4 + cmp r0, #1 + beq _080752AA + b _080752C2 + .align 2, 0 +_080752A0: .4byte 0x00000101 +_080752A4: + cmp r0, #3 + beq _080752BA + b _080752C2 +_080752AA: + movs r0, #0x38 + bl sub_080A306C + b _080752F6 +_080752B2: + movs r0, #0x39 + bl sub_080A306C + b _080752F6 +_080752BA: + movs r0, #0x3a + bl sub_080A306C + b _080752F6 +_080752C2: + movs r0, #0x3b + bl sub_080A306C + b _080752F6 +_080752CA: + movs r2, #0x38 + ldrsh r0, [r4, r2] + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x38] + subs r1, #4 + ldrh r2, [r4, #0x34] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + subs r1, r1, r0 + strh r1, [r4, #0x38] + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _080752F6 + strh r5, [r4, #0x38] + ldr r0, _0807531C + ands r0, r2 + strh r0, [r4, #0x34] +_080752F6: + cmp r5, #0 + beq _0807532E + movs r5, #0 + strh r5, [r4, #0x34] + movs r0, #0x40 + movs r1, #0x20 + bl sub_0806EFD4 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + strh r5, [r4, #0x26] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08075324 + ldr r0, _08075320 + str r0, [r4, #0x1c] + b _0807532E + .align 2, 0 +_0807531C: .4byte 0xFFFFFF00 +_08075320: .4byte sub_0807571C +_08075324: + ldr r0, _08075334 + str r0, [r4, #0x1c] + movs r0, #1 + strh r0, [r4, #0x36] + strh r5, [r4, #0x38] +_0807532E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08075334: .4byte sub_08075338 + thumb_func_end sub_08075240 + + thumb_func_start sub_08075338 +sub_08075338: @ 0x08075338 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _0807536C + 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, #1 + bl sub_08007F70 + ldr r0, _08075374 + str r0, [r4, #0x1c] + movs r0, #0x17 + bl sub_080A306C +_0807536C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075374: .4byte sub_08075378 + thumb_func_end sub_08075338 + + thumb_func_start sub_08075378 +sub_08075378: @ 0x08075378 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + movs r1, #0xff + ands r1, r0 + cmp r1, #4 + bhi _08075478 + lsls r0, r1, #2 + ldr r1, _08075390 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08075390: .4byte _08075394 +_08075394: @ jump table + .4byte _080753A8 @ case 0 + .4byte _080753DA @ case 1 + .4byte _080753A8 @ case 2 + .4byte _0807542E @ case 3 + .4byte _08075478 @ case 4 +_080753A8: + ldrh r0, [r4, #0x36] + ldrh r2, [r4, #0x24] + adds r1, r0, r2 + strh r1, [r4, #0x24] + ldrh r1, [r4, #0x38] + adds r0, 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, #3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bls _080754BE + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + movs r0, #0 + strh r0, [r4, #0x38] + b _080754BE +_080753DA: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _08075420 + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x36] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x34] + adds r0, #1 + 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 _08075416 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007FD0 + b _080754BE +_08075416: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007FD0 + b _080754BE +_08075420: + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + b _080754BE +_0807542E: + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r2, [r4, #0x34] + adds r0, r0, r2 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + movs r2, #0x3c + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08075450 + ldr r0, _0807544C + str r0, [r4, #0x1c] + b _080754BE + .align 2, 0 +_0807544C: .4byte sub_0807571C +_08075450: + cmp r1, #4 + bne _08075464 + cmp r0, #3 + bne _08075464 + ldr r0, _08075460 + str r0, [r4, #0x1c] + b _0807546A + .align 2, 0 +_08075460: .4byte sub_080759BC +_08075464: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] +_0807546A: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + b _080754BE +_08075478: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _080754BE + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r1, [r4, #0x34] + ldr r0, _080754AC + ands r0, r1 + strh r0, [r4, #0x34] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007F70 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _080754B0 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007F70 + b _080754B8 + .align 2, 0 +_080754AC: .4byte 0xFFFFFF00 +_080754B0: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_080754B8: + movs r0, #0x17 + bl sub_080A306C +_080754BE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08075378 + + thumb_func_start sub_080754C4 +sub_080754C4: @ 0x080754C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _08075504 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r1, [r0, #0xc] + mov ip, r1 + ldrb r5, [r0, #0xa] + ldrh r6, [r0, #8] + ldrb r3, [r0, #0xe] + mov r8, r3 + ldrb r7, [r0, #0x10] + movs r3, #0x12 + ldrsh r1, [r0, r3] + lsls r3, r1, #0x10 + ldrh r1, [r0, #0x14] + orrs r3, r1 + movs r1, #0x26 + ldrsh r0, [r0, r1] + cmp r0, #0x20 + bhi _08075590 + lsls r0, r0, #2 + ldr r1, _08075508 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08075504: .4byte gUnknown_3005B60 +_08075508: .4byte _0807550C +_0807550C: @ jump table + .4byte _08075590 @ case 0 + .4byte _080755BC @ case 1 + .4byte _080755E2 @ case 2 + .4byte _0807565C @ case 3 + .4byte _08075590 @ case 4 + .4byte _08075590 @ case 5 + .4byte _08075590 @ case 6 + .4byte _08075590 @ case 7 + .4byte _08075590 @ case 8 + .4byte _08075590 @ case 9 + .4byte _08075590 @ case 10 + .4byte _08075590 @ case 11 + .4byte _08075590 @ case 12 + .4byte _08075590 @ case 13 + .4byte _08075590 @ case 14 + .4byte _08075590 @ case 15 + .4byte _08075590 @ case 16 + .4byte _08075590 @ case 17 + .4byte _08075590 @ case 18 + .4byte _08075590 @ case 19 + .4byte _08075600 @ case 20 + .4byte _08075590 @ case 21 + .4byte _08075590 @ case 22 + .4byte _08075590 @ case 23 + .4byte _08075590 @ case 24 + .4byte _08075590 @ case 25 + .4byte _08075590 @ case 26 + .4byte _08075590 @ case 27 + .4byte _08075590 @ case 28 + .4byte _08075590 @ case 29 + .4byte _0807566E @ case 30 + .4byte _08075686 @ case 31 + .4byte _080756B0 @ case 32 +_08075590: + ldr r0, _080755B8 + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + adds r1, #0x3f + ldrb r0, [r1] + lsls r0, r0, #0x1a + cmp r0, #0 + blt _080755A6 + b _0807570C +_080755A6: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + mov r1, ip + adds r1, #1 + strh r1, [r0, #0x26] + b _0807570C + .align 2, 0 +_080755B8: .4byte gUnknown_20205AC +_080755BC: + adds r0, r3, #0 + bl sub_0805ED2C + cmp r0, #1 + bne _080755D4 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0 + bl sub_080A2BAC + b _08075636 +_080755D4: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0xb + bl sub_080A2BAC + b _08075636 +_080755E2: + bl sub_080A2F64 + ldr r1, _080755FC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #3 + strh r1, [r0, #0x1c] + movs r1, #0x14 + strh r1, [r0, #0x26] + b _0807570C + .align 2, 0 +_080755FC: .4byte gUnknown_3005B60 +_08075600: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r2, [r1, #0x1c] + movs r7, #0x1c + ldrsh r0, [r1, r7] + cmp r0, #0 + bne _080756C2 + adds r0, r3, #0 + bl sub_0805ED2C + cmp r0, #1 + bne _0807562A + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #1 + bl sub_080A2C0C + b _08075636 +_0807562A: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0xc + bl sub_080A2C0C +_08075636: + ldr r0, _08075658 + ldr r0, [r0] + ldr r0, [r0, #4] + mov r2, r8 + lsls r1, r2, #1 + add r1, r8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + adds r0, r4, #0 + bl sub_080A8964 + b _0807570C + .align 2, 0 +_08075658: .4byte gUnknown_2024174 +_0807565C: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #6 + strh r1, [r0, #0x1c] + movs r1, #0x1e + strh r1, [r0, #0x26] + b _0807570C +_0807566E: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r2, [r1, #0x1c] + movs r3, #0x1c + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _080756C2 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] +_08075686: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807570C + bl sub_080A2F64 + ldr r0, _080756AC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #3 + strh r0, [r1, #0x1c] + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0807570C + .align 2, 0 +_080756AC: .4byte gUnknown_3005B60 +_080756B0: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r2, [r1, #0x1c] + movs r7, #0x1c + ldrsh r0, [r1, r7] + cmp r0, #0 + beq _080756C8 +_080756C2: + subs r0, r2, #1 + strh r0, [r1, #0x1c] + b _0807570C +_080756C8: + adds r0, r3, #0 + bl sub_0805ED2C + cmp r0, #1 + bne _080756E0 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0 + bl sub_080A2C0C + b _080756EC +_080756E0: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0xb + bl sub_080A2C0C +_080756EC: + ldr r0, _08075718 + ldr r0, [r0] + ldr r0, [r0, #4] + mov r2, r8 + lsls r1, r2, #1 + add r1, r8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + adds r0, r4, #0 + bl sub_080A8964 +_0807570C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075718: .4byte gUnknown_2024174 + thumb_func_end sub_080754C4 + + thumb_func_start sub_0807571C +sub_0807571C: @ 0x0807571C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r0, #0 + ldrh r0, [r6, #0x3a] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #0 + movs r1, #1 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_0807651C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08170B68 + adds r4, r0, #0 + ldrh r0, [r6, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r2, #1 + movs r3, #0x1c + bl sub_08171B7C + ldrh r1, [r6, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0xe + adds r3, r4, #0 + bl sub_081727CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x2e] + ldr r0, _080757B4 + str r0, [r6, #0x1c] + ldr r0, _080757B8 + ldr r1, _080757BC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08075790 + b _080758FC +_08075790: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080757C8 + ldr r0, _080757C0 + lsls r2, r5, #1 + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _080757C4 + adds r7, r1, r0 + movs r4, #0x19 + mov sl, r4 + b _080757DC + .align 2, 0 +_080757B4: .4byte sub_080759DC +_080757B8: .4byte gUnknown_3002360 +_080757BC: .4byte 0x00000439 +_080757C0: .4byte gUnknown_2023D12 +_080757C4: .4byte gUnknown_20243E8 +_080757C8: + ldr r0, _08075840 + lsls r2, r5, #1 + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08075844 + adds r7, r1, r0 + movs r0, #0xe7 + mov sl, r0 +_080757DC: + mov r8, r2 + adds r0, r7, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _08075808 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _0807585E +_08075808: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807585E + ldr r0, _08075848 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807585E + ldr r0, _0807584C + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _08075854 + bl sub_080A31AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807585E + ldr r0, _08075850 + bl m4aMPlayStop + b _0807585E + .align 2, 0 +_08075840: .4byte gUnknown_2023D12 +_08075844: .4byte gUnknown_2024190 +_08075848: .4byte gUnknown_2024174 +_0807584C: .4byte gUnknown_2022C90 +_08075850: .4byte gUnknown_30074D0 +_08075854: + ldr r0, _0807587C + ldr r1, _08075880 + movs r2, #0x80 + bl m4aMPlayVolumeControl +_0807585E: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08075878 + ldr r0, _08075884 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08075888 +_08075878: + movs r4, #0 + b _080758AA + .align 2, 0 +_0807587C: .4byte gUnknown_30074D0 +_08075880: .4byte 0x0000FFFF +_08075884: .4byte gUnknown_2024174 +_08075888: + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _080758A4 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _080758A8 +_080758A4: + movs r4, #1 + b _080758AA +_080758A8: + movs r4, #2 +_080758AA: + ldr r0, _08075940 + ldr r0, [r0] + ldr r0, [r0, #4] + mov r2, r8 + adds r1, r2, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + movs r2, #0x40 + orrs r0, r2 + strb r0, [r1, #1] + ldr r0, _08075944 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08075948 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r3, #0 + mov r0, sb + strh r0, [r1, #8] + mov r2, sl + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0xa] + strh r4, [r1, #0xc] + strh r5, [r1, #0xe] + ldr r2, _0807594C + movs r4, #0x3a + ldrsh r0, [r6, r4] + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1, #0x10] + lsrs r0, r7, #0x10 + strh r0, [r1, #0x12] + strh r7, [r1, #0x14] + strh r3, [r1, #0x26] +_080758FC: + ldr r4, _0807594C + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _08075950 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007F70 + ldrh r0, [r6, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08075958 + movs r2, #0x3a + ldrsh r0, [r6, r2] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08075954 + b _0807596E + .align 2, 0 +_08075940: .4byte gUnknown_2024174 +_08075944: .4byte sub_080754C4 +_08075948: .4byte gUnknown_3005B60 +_0807594C: .4byte gUnknown_2023E88 +_08075950: .4byte gUnknown_20205AC +_08075954: .4byte sub_0803979C +_08075958: + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080759B0 +_0807596E: + str r1, [r0] + ldr r5, _080759B4 + movs r2, #0x3a + ldrsh r0, [r6, r2] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080759B8 + adds r0, r0, r4 + bl sub_08007358 + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x80 + lsls r1, r1, #5 + strh r1, [r0, #0x30] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080759B0: .4byte sub_08039A88 +_080759B4: .4byte gUnknown_2023E88 +_080759B8: .4byte gUnknown_20205AC + thumb_func_end sub_0807571C + + thumb_func_start sub_080759BC +sub_080759BC: @ 0x080759BC + adds r3, r0, #0 + adds r3, #0x2c + ldrb r1, [r3] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r3] + ldr r1, _080759D8 + str r1, [r0, #0x1c] + movs r1, #0 + strh r1, [r0, #0x34] + strh r1, [r0, #0x36] + strh r1, [r0, #0x38] + bx lr + .align 2, 0 +_080759D8: .4byte sub_08075B00 + thumb_func_end sub_080759BC + + thumb_func_start sub_080759DC +sub_080759DC: @ 0x080759DC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r7, #0 + ldrh r0, [r5, #0x3a] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _08075A40 + ldr r0, _08075A44 + adds r3, r6, r0 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + 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 _08075A1E + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08075A1E: + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _08075A48 + adds r0, r1, #0 + movs r1, #0 + bl sub_08007F70 + movs r7, #1 + b _08075A64 + .align 2, 0 +_08075A40: .4byte gUnknown_20205AC +_08075A44: .4byte gUnknown_2023E88 +_08075A48: + ldr r2, _08075AEC + adds r0, r2, #0 + ldrh r2, [r1, #0x30] + adds r0, r0, r2 + strh r0, [r1, #0x30] + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r1, #0x26] +_08075A64: + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08075AE6 + cmp r7, #0 + beq _08075AE6 + ldr r2, _08075AF0 + ldr r0, _08075AF4 + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0 + movs r1, #0 + strh r1, [r0, #0x26] + ldr r0, _08075AF8 + strb r2, [r0] + ldr r4, _08075AFC + ldr r0, [r4] + ldr r0, [r0, #4] + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r5, #0 + bl sub_0800730C + adds r0, r5, #0 + bl sub_08006E00 + movs r3, #0 + ldr r0, [r4] + ldr r2, [r0, #4] + movs r5, #8 + movs r4, #3 +_08075ABE: + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08075ACA + adds r3, #1 +_08075ACA: + adds r2, #0xc + subs r4, #1 + cmp r4, #0 + bge _08075ABE + cmp r3, #4 + bne _08075AE6 + movs r4, #0 +_08075AD8: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080764F0 + adds r4, #1 + cmp r4, #0xb + ble _08075AD8 +_08075AE6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075AEC: .4byte 0xFFFFFEE0 +_08075AF0: .4byte gUnknown_20205AC +_08075AF4: .4byte gUnknown_2023E88 +_08075AF8: .4byte gUnknown_202415D +_08075AFC: .4byte gUnknown_2024174 + thumb_func_end sub_080759DC + + thumb_func_start sub_08075B00 +sub_08075B00: @ 0x08075B00 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrh r0, [r6, #0x3a] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r6, #0x36] + adds r0, #1 + strh r0, [r6, #0x36] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0x28 + beq _08075B9E + cmp r1, #0x5f + bne _08075B38 + ldr r0, _08075B30 + movs r1, #0 + strb r1, [r0] + bl m4aMPlayAllStop + ldr r0, _08075B34 + bl sub_080A306C + b _08075B9E + .align 2, 0 +_08075B30: .4byte gUnknown_202415D +_08075B34: .4byte 0x00000173 +_08075B38: + ldr r0, _08075BA4 + cmp r1, r0 + bne _08075B9E + ldr r5, _08075BA8 + ldr r4, _08075BAC + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + movs r1, #0x3a + ldrsh r0, [r6, r1] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + adds r0, r6, #0 + bl sub_08007338 + ldr r0, _08075BB0 + ldr r1, _08075BB4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08075B9E + ldr r0, _08075BB8 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r7, #1 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_08075B9E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075BA4: .4byte 0x0000013B +_08075BA8: .4byte gUnknown_20205AC +_08075BAC: .4byte gUnknown_2023E88 +_08075BB0: .4byte gUnknown_3002360 +_08075BB4: .4byte 0x00000439 +_08075BB8: .4byte gUnknown_2024174 + thumb_func_end sub_08075B00 + + thumb_func_start sub_08075BBC +sub_08075BBC: @ 0x08075BBC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x19 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _08075C04 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x3a] + strh r0, [r4, #6] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _08075C08 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08075C04: .4byte 0x0000FFE2 +_08075C08: .4byte sub_08075C0C + thumb_func_end sub_08075BBC + + thumb_func_start sub_08075C0C +sub_08075C0C: @ 0x08075C0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrh r0, [r5, #0x3c] + movs r1, #0xff + mov r8, r1 + lsrs r0, r0, #8 + subs r0, #0x23 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x2c + bhi _08075D00 + ldrh r1, [r5, #6] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08075C6E + ldrh r0, [r5, #0x30] + movs r1, #1 + 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, #3 + bl __divsi3 + movs r1, #2 + rsbs r1, r1, #0 + adds r4, r1, #0 + ands r0, r4 + orrs r6, r0 + strh r6, [r5, #0x30] + movs r2, #0x32 + ldrsh r0, [r5, r2] + movs r1, #3 + bl __divsi3 + ands r0, r4 + orrs r7, r0 + strh r7, [r5, #0x32] + adds r0, r5, #0 + movs r1, #4 + bl sub_08007F70 +_08075C6E: + ldrh r4, [r5, #0x2e] + adds r0, r5, #0 + bl sub_080A6804 + movs r1, #0x3a + ldrsh r0, [r5, r1] + movs r1, #3 + bl __divsi3 + adds r1, r0, #0 + ldrh r0, [r5, #0x3c] + adds r0, r0, r1 + strh r0, [r5, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + mov r2, r8 + ands r0, r2 + movs r2, #0x38 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + ldrh r1, [r5, #0x26] + adds r0, r0, r1 + strh r0, [r5, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r1, [r5, #6] + adds r0, r0, r1 + strh r0, [r5, #6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08075CBE + strh r4, [r5, #0x2e] + b _08075CC6 +_08075CBE: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + subs r0, #1 + strh r0, [r5, #0x2e] +_08075CC6: + ldrh r0, [r5, #0x3c] + lsrs r0, r0, #8 + cmp r0, #0x4f + ble _08075D6C + ldrh r0, [r5, #0x30] + movs r1, #1 + 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, r0, r1 + movs r1, #2 + rsbs r1, r1, #0 + 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, r0, r1 + ands r0, r2 + orrs r0, r7 + strh r0, [r5, #0x32] + b _08075D6C +_08075D00: + adds r0, r5, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08075D6C + ldrh r0, [r5, #0x24] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + ldrb r0, [r5, #6] + strh r0, [r5, #0x3a] + strh r1, [r5, #0x2e] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08075D60 + ldr r0, _08075D58 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075D60 + movs r0, #0x3a + ldrsh r4, [r5, r0] + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _08075D60 + ldr r0, _08075D5C + b _08075D62 + .align 2, 0 +_08075D58: .4byte gUnknown_2024174 +_08075D5C: .4byte sub_08075D7C +_08075D60: + ldr r0, _08075D78 +_08075D62: + str r0, [r5, #0x1c] + adds r0, r5, #0 + movs r1, #0 + bl sub_08007F70 +_08075D6C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075D78: .4byte sub_0807571C + thumb_func_end sub_08075C0C + + thumb_func_start sub_08075D7C +sub_08075D7C: @ 0x08075D7C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r1, r0, #1 + strh r1, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x18 + ble _08075D96 + movs r0, #0 + strh r0, [r2, #0x2e] + ldr r0, _08075D9C + str r0, [r2, #0x1c] +_08075D96: + pop {r0} + bx r0 + .align 2, 0 +_08075D9C: .4byte sub_0807571C + thumb_func_end sub_08075D7C + + thumb_func_start sub_08075DA0 +sub_08075DA0: @ 0x08075DA0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _08075DF4 + movs r0, #0 + strh r0, [r5, #0x2e] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08075DF0 + ldr r0, _08075DE8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075DF0 + movs r0, #0x3a + ldrsh r4, [r5, r0] + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _08075DF0 + ldr r0, _08075DEC + b _08075DF2 + .align 2, 0 +_08075DE8: .4byte gUnknown_2024174 +_08075DEC: .4byte sub_08075D7C +_08075DF0: + ldr r0, _08075DFC +_08075DF2: + str r0, [r5, #0x1c] +_08075DF4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08075DFC: .4byte sub_0807571C + thumb_func_end sub_08075DA0 + + thumb_func_start sub_08075E00 +sub_08075E00: @ 0x08075E00 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r4, #0 + str r4, [sp] + bl sub_08171B7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08075E00 + + thumb_func_start sub_08075E28 +sub_08075E28: @ 0x08075E28 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0 + bl sub_081727CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_08075E28 + + thumb_func_start sub_08075E40 +sub_08075E40: @ 0x08075E40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + mov sb, r2 + mov sl, r3 + ldr r6, [sp, #0x28] + ldr r4, [sp, #0x2c] + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x38] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + lsls r0, r2, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _08075F18 + bl sub_080347E0 + ldr r0, _08075F1C + bl sub_0803481C + ldr r0, _08075F20 + mov r1, sb + mov r2, sl + adds r3, r4, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08075F24 + mov r8, r1 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r2, r4, r1 + strh r5, [r2, #0x2e] + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + add r1, r8 + ldrh r0, [r1, #0x20] + strh r0, [r2, #0x38] + ldrh r0, [r1, #0x22] + strh r0, [r2, #0x3a] + mov r3, sb + strh r3, [r1, #0x20] + mov r0, sl + strh r0, [r1, #0x22] + strh r7, [r1, #0x3c] + mov r3, sp + ldrh r3, [r3, #4] + strh r3, [r2, #0x30] + mov r0, sp + ldrh r0, [r0] + strh r0, [r2, #0x32] + mov r3, sp + ldrh r3, [r3, #0x34] + strh r3, [r2, #0x34] + ldr r3, [sp, #0x34] + lsrs r0, r3, #0x10 + strh r0, [r2, #0x36] + movs r0, #3 + ands r6, r0 + lsls r6, r6, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r6 + strb r0, [r2, #5] + movs r0, #0x1c + add r8, r0 + add r4, r8 + ldr r0, _08075F28 + str r0, [r4] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08075F18: .4byte gUnknown_82FCE0C +_08075F1C: .4byte gUnknown_82FCE6C +_08075F20: .4byte gUnknown_82FCF94 +_08075F24: .4byte gUnknown_20205AC +_08075F28: .4byte sub_08075F2C + thumb_func_end sub_08075E40 + + thumb_func_start sub_08075F2C +sub_08075F2C: @ 0x08075F2C + push {r4, r5, r6, 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 _08075FD8 + ldrh r0, [r6, #0x2e] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r6, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r4, [r6, #0x34] + ldrh r0, [r6, #0x36] + lsls r0, r0, #0x10 + orrs r4, r0 + adds r0, r6, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08075F66 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _08075F68 +_08075F66: + movs r5, #0 +_08075F68: + adds r0, r6, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r6, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r6, #5] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x1e + adds r3, r5, #0 + bl sub_08075E00 + movs r0, #1 + mov r1, r8 + adds r2, r4, #0 + bl sub_08075E28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r6, #0x30] + ldr r0, _08075FD0 + str r0, [r6, #0x1c] + ldr r0, _08075FD4 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r4, r4, r0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + adds r0, r4, #0 + bl sub_08007358 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r4, #0x30] + strh r5, [r6, #0x3c] + b _08075FDC + .align 2, 0 +_08075FD0: .4byte sub_08075FE8 +_08075FD4: .4byte gUnknown_20205AC +_08075FD8: + subs r0, r1, #1 + strh r0, [r6, #0x30] +_08075FDC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08075F2C + + thumb_func_start sub_08075FE8 +sub_08075FE8: @ 0x08075FE8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + movs r0, #0 + mov ip, r0 + movs r7, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08076018 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08076018: + ldr r1, _080760AC + lsls r2, r6, #4 + adds r0, r2, r6 + lsls r0, r0, #2 + adds r5, r0, r1 + adds r0, r5, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + mov r8, r2 + cmp r0, #0 + bge _0807603C + adds r0, r5, #0 + movs r1, #0 + bl sub_08007F70 + movs r1, #1 + mov ip, r1 +_0807603C: + movs r2, #0x38 + ldrsh r0, [r4, r2] + movs r3, #0x20 + ldrsh r1, [r4, r3] + subs r0, r0, r1 + movs r1, #0x3c + ldrsh r2, [r4, r1] + muls r0, r2, r0 + cmp r0, #0 + bge _08076052 + adds r0, #0x7f +_08076052: + asrs r0, r0, #7 + ldrh r3, [r4, #0x20] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r3, #0x22 + ldrsh r1, [r4, r3] + subs r0, r0, r1 + muls r0, r2, r0 + cmp r0, #0 + bge _08076070 + adds r0, #0x7f +_08076070: + asrs r0, r0, #7 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + mov r2, sb + strh r2, [r5, #0x20] + strh r0, [r5, #0x22] + ldrh r2, [r4, #0x3c] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r0, #0x7f + bgt _080760B4 + ldr r1, _080760B0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _08076098 + adds r0, #7 +_08076098: + asrs r0, r0, #3 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r2, #4 + strh r1, [r4, #0x3c] + strh r0, [r5, #0x24] + strh r0, [r5, #0x26] + b _080760C2 + .align 2, 0 +_080760AC: .4byte gUnknown_20205AC +_080760B0: .4byte gUnknown_82FA8CC +_080760B4: + ldrh r0, [r4, #0x38] + strh r0, [r5, #0x20] + ldrh r0, [r4, #0x3a] + strh r0, [r5, #0x22] + strh r7, [r5, #0x24] + strh r7, [r5, #0x26] + movs r7, #1 +_080760C2: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08076116 + mov r2, ip + cmp r2, #0 + beq _08076116 + cmp r7, #0 + beq _08076116 + ldr r1, _08076100 + mov r3, r8 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r2, r0, r1 + movs r0, #0x3c + ldrsh r1, [r2, r0] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _08076104 + ldrh r1, [r2, #0x3c] + adds r0, r2, #0 + movs r2, #1 + movs r3, #0 + bl sub_0806E7CC + b _08076110 + .align 2, 0 +_08076100: .4byte gUnknown_20205AC +_08076104: + ldrh r1, [r2, #0x3c] + adds r0, r2, #0 + movs r2, #0 + movs r3, #0 + bl sub_0806E7CC +_08076110: + adds r0, r4, #0 + bl sub_08007338 +_08076116: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08075FE8 + + thumb_func_start sub_08076124 +sub_08076124: @ 0x08076124 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + adds r6, r2, #0 + mov r8, r3 + ldr r5, [sp, #0x20] + ldr r4, [sp, #0x24] + ldr r0, [sp, #0x28] + mov sb, r0 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _080761C8 + bl sub_080347E0 + ldr r0, _080761CC + bl sub_0803481C + ldr r0, _080761D0 + adds r1, r6, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080761D4 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r2, r3, r6 + mov r1, sl + strh r1, [r2, #0x2e] + mov r4, sb + 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, #0x10 + strh r1, [r2, #0x36] + movs r1, #3 + ands r5, r1 + lsls r5, r5, #2 + ldrb r4, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r4 + orrs r1, r5 + strb r1, [r2, #5] + adds r6, #0x1c + adds r3, r3, r6 + ldr r1, _080761D8 + str r1, [r3] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080761C8: .4byte gUnknown_82FCE0C +_080761CC: .4byte gUnknown_82FCE6C +_080761D0: .4byte gUnknown_82FCF94 +_080761D4: .4byte gUnknown_20205AC +_080761D8: .4byte sub_080761DC + thumb_func_end sub_08076124 + + thumb_func_start sub_080761DC +sub_080761DC: @ 0x080761DC + push {r4, r5, r6, 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 _08076274 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r5, [r4, #0x34] + ldrh r0, [r4, #0x36] + lsls r0, r0, #0x10 + orrs r5, r0 + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08076216 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _08076218 +_08076216: + movs r6, #0 +_08076218: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r4, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r4, #5] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x1e + adds r3, r6, #0 + bl sub_08075E00 + movs r0, #1 + mov r1, r8 + adds r2, r5, #0 + bl sub_08075E28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x30] + ldr r0, _0807626C + str r0, [r4, #0x1c] + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + ldr r0, _08076270 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007F70 + adds r0, r4, #0 + bl sub_08007358 + strh r5, [r4, #0x30] + b _08076278 + .align 2, 0 +_0807626C: .4byte sub_08076284 +_08076270: .4byte gUnknown_20205AC +_08076274: + subs r0, r1, #1 + strh r0, [r4, #0x30] +_08076278: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080761DC + + thumb_func_start sub_08076284 +sub_08076284: @ 0x08076284 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x38] + adds r0, #1 + strh r0, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + bne _0807629C + movs r0, #0x3c + bl sub_080A306C +_0807629C: + ldrh r1, [r5, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080762D8 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _080762E0 + adds r0, r5, #0 + movs r1, #2 + bl sub_08007EC0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0 + strh r0, [r5, #0x38] + ldr r0, _080762DC + str r0, [r5, #0x1c] + b _080762F0 + .align 2, 0 +_080762D8: .4byte gUnknown_20205AC +_080762DC: .4byte sub_080762F8 +_080762E0: + ldrh r0, [r4, #0x30] + adds r0, #0x60 + strh r0, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + asrs r0, r0, #8 + strh r0, [r4, #0x26] +_080762F0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08076284 + + thumb_func_start sub_080762F8 +sub_080762F8: @ 0x080762F8 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0807630C + ldr r0, _08076310 + str r0, [r2, #0x1c] +_0807630C: + pop {r0} + bx r0 + .align 2, 0 +_08076310: .4byte sub_08007140 + thumb_func_end sub_080762F8 + + thumb_func_start sub_08076314 +sub_08076314: @ 0x08076314 + push {lr} + bl sub_08007338 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08076314 + + thumb_func_start sub_08076320 +sub_08076320: @ 0x08076320 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r0, _080763A0 + adds r0, r5, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _080763A4 + adds r4, r0, r6 + movs r1, #0 + movs r0, #5 + strh r0, [r4, #0x2e] + strh r1, [r4, #0x30] + movs r0, #0x73 + strh r0, [r4, #0x24] + strh r1, [r4, #0x26] + ldr r0, _080763A8 + str r0, [r4, #0x1c] + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807636E + ldrh r0, [r4, #0x2e] + rsbs r0, r0, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + rsbs r0, r0, #0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x24] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x26] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_0807636E: + movs r0, #0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r1, r0, r1 + adds r0, r0, r6 + ldr r1, [r1] + bl _call_via_r1 + adds r0, r5, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08076398 + ldr r0, _080763AC + str r0, [r4, #0x1c] +_08076398: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080763A0: .4byte gUnknown_3005AD0 +_080763A4: .4byte gUnknown_20205AC +_080763A8: .4byte sub_080763D4 +_080763AC: .4byte sub_080763B0 + thumb_func_end sub_08076320 + + thumb_func_start sub_080763B0 +sub_080763B0: @ 0x080763B0 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _080763CA + movs r0, #0 + strh r0, [r1, #0x30] + ldr r0, _080763D0 + str r0, [r1, #0x1c] +_080763CA: + pop {r0} + bx r0 + .align 2, 0 +_080763D0: .4byte sub_080763D4 + thumb_func_end sub_080763B0 + + thumb_func_start sub_080763D4 +sub_080763D4: @ 0x080763D4 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x24] + ldrh r1, [r2, #0x2e] + subs r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x26] + ldrh r1, [r2, #0x30] + subs r0, r0, r1 + strh r0, [r2, #0x26] + ldr r0, [r2, #0x24] + cmp r0, #0 + bne _080763F2 + ldr r0, _080763F8 + str r0, [r2, #0x1c] +_080763F2: + pop {r0} + bx r0 + .align 2, 0 +_080763F8: .4byte sub_08007140 + thumb_func_end sub_080763D4 + + thumb_func_start sub_080763FC +sub_080763FC: @ 0x080763FC + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08076434 + adds r0, r5, #0 + bl sub_0806F0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08076438 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r3, r1, r2 + movs r0, #1 + strh r0, [r3, #0x2e] + ldr r0, _0807643C + adds r4, r4, r0 + ldrb r0, [r4] + strh r0, [r3, #0x30] + adds r2, #0x1c + adds r1, r1, r2 + str r5, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08076434: .4byte sub_08076440 +_08076438: .4byte gUnknown_20205AC +_0807643C: .4byte gUnknown_3005AD0 + thumb_func_end sub_080763FC + + thumb_func_start sub_08076440 +sub_08076440: @ 0x08076440 + push {lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0807647C + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrh r0, [r3, #0x2e] + movs r2, #0 + strh r0, [r1, #0x26] + ldrh r0, [r3, #0x2e] + rsbs r0, r0, #0 + strh r0, [r3, #0x2e] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _08076478 + strh r2, [r1, #0x24] + strh r2, [r1, #0x26] + adds r0, r3, #0 + bl sub_08006E00 +_08076478: + pop {r0} + bx r0 + .align 2, 0 +_0807647C: .4byte gUnknown_20205AC + thumb_func_end sub_08076440 + + thumb_func_start sub_08076480 +sub_08076480: @ 0x08076480 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080764DC + lsls r6, r4, #3 + adds r5, r6, r0 + ldrh r0, [r5, #6] + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _080764E0 + cmp r0, r1 + bne _080764A8 + adds r0, r5, #0 + bl sub_080347E0 + ldr r0, _080764E4 + adds r0, r6, r0 + bl sub_0803481C +_080764A8: + cmp r4, #6 + beq _080764D4 + cmp r4, #6 + blt _080764B8 + cmp r4, #0xb + bgt _080764B8 + cmp r4, #0xa + bge _080764D4 +_080764B8: + ldr r1, _080764DC + lsls r0, r4, #3 + adds r0, r0, r1 + ldrh r0, [r0, #6] + bl sub_08008338 + adds r1, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _080764E8 + lsrs r1, r1, #0xb + ldr r2, _080764EC + adds r1, r1, r2 + bl sub_0803437C +_080764D4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080764DC: .4byte gUnknown_82FCE0C +_080764E0: .4byte 0xFFFF0000 +_080764E4: .4byte gUnknown_82FCE6C +_080764E8: .4byte gUnknown_8C02308 +_080764EC: .4byte 0x06010100 + thumb_func_end sub_08076480 + + thumb_func_start sub_080764F0 +sub_080764F0: @ 0x080764F0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + ldr r0, _08076514 + lsrs r4, r4, #0x15 + adds r0, r4, r0 + ldrh r0, [r0, #6] + bl sub_08008280 + ldr r0, _08076518 + adds r4, r4, r0 + ldrh r0, [r4, #4] + bl sub_08008564 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08076514: .4byte gUnknown_82FCE0C +_08076518: .4byte gUnknown_82FCE6C + thumb_func_end sub_080764F0 + + thumb_func_start sub_0807651C +sub_0807651C: @ 0x0807651C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08076548 + ldr r1, _08076540 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08076544 + b _08076556 + .align 2, 0 +_08076540: .4byte gUnknown_2023D12 +_08076544: .4byte gUnknown_20243E8 +_08076548: + ldr r1, _08076568 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0807656C +_08076556: + adds r0, r0, r1 + movs r1, #0x26 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08076568: .4byte gUnknown_2023D12 +_0807656C: .4byte gUnknown_2024190 + thumb_func_end sub_0807651C + + thumb_func_start sub_08076570 +sub_08076570: @ 0x08076570 + push {lr} + bl IdentifyFlash + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0807658C + ldr r1, _08076588 + movs r0, #1 + str r0, [r1] + bl sub_08000800 + b _08076592 + .align 2, 0 +_08076588: .4byte gUnknown_3005AE8 +_0807658C: + ldr r1, _08076598 + movs r0, #0 + str r0, [r1] +_08076592: + pop {r0} + bx r0 + .align 2, 0 +_08076598: .4byte gUnknown_3005AE8 + thumb_func_end sub_08076570 + + thumb_func_start sub_0807659C +sub_0807659C: @ 0x0807659C + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _080765B8 + ldr r2, _080765BC + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080765B8: .4byte gUnknown_20246F8 +_080765BC: .4byte 0x010007D6 + thumb_func_end sub_0807659C + + thumb_func_start sub_080765C0 +sub_080765C0: @ 0x080765C0 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _080765DC + ldr r2, _080765E0 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080765DC: .4byte gUnknown_20256A4 +_080765E0: .4byte 0x01001F04 + thumb_func_end sub_080765C0 + + thumb_func_start sub_080765E4 +sub_080765E4: @ 0x080765E4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _0807661C + bl sub_0806F050 + adds r4, r4, r0 + movs r0, #0x7c + ands r4, r0 + ldr r1, _08076620 + ldr r0, _08076624 + adds r0, r4, r0 + str r0, [r1] + ldr r0, _08076628 + adds r0, r4, r0 + str r0, [r5] + ldr r1, _0807662C + ldr r0, _08076630 + adds r4, r4, r0 + str r4, [r1] + bl sub_080D5E74 + bl sub_081616F8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807661C: .4byte gUnknown_3005AEC +_08076620: .4byte gUnknown_3005AF0 +_08076624: .4byte gUnknown_20246F8 +_08076628: .4byte gUnknown_20256A4 +_0807662C: .4byte gUnknown_3005AF4 +_08076630: .4byte gUnknown_20294AC + thumb_func_end sub_080765E4 + + thumb_func_start sub_08076634 +sub_08076634: @ 0x08076634 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r5, _08076700 + ldr r0, [r5, #0xc] + str r0, [sp] + ldr r1, [r5, #0x10] + str r1, [sp, #4] + movs r0, #0 + str r0, [r5, #0xc] + str r0, [r5, #0x10] + ldr r1, _08076704 + str r0, [r1] + ldr r4, _08076708 + ldr r0, _0807670C + ldr r1, [r0] + ldr r6, _08076710 + adds r0, r4, #0 + adds r2, r6, #0 + bl memcpy + ldr r1, _08076714 + mov sl, r1 + ldr r1, [r1] + ldr r7, _08076718 + ldr r0, _0807671C + adds r2, r7, #0 + bl memcpy + ldr r0, _08076720 + mov r8, r0 + ldr r1, [r0] + ldr r0, _08076724 + mov sb, r0 + ldr r0, _08076728 + mov r2, sb + bl memcpy + ldrb r1, [r4, #0xa] + ldrb r0, [r4, #0xb] + adds r1, r1, r0 + ldrb r0, [r4, #0xc] + adds r1, r1, r0 + ldrb r0, [r4, #0xd] + adds r0, r0, r1 + bl sub_080765E4 + ldr r1, _0807670C + ldr r0, [r1] + adds r1, r4, #0 + adds r2, r6, #0 + bl memcpy + mov r1, sl + ldr r0, [r1] + ldr r1, _0807671C + adds r2, r7, #0 + bl memcpy + mov r1, r8 + ldr r0, [r1] + ldr r1, _08076728 + mov r2, sb + bl memcpy + movs r1, #0xe0 + lsls r1, r1, #9 + adds r0, r4, #0 + bl sub_08000BAC + ldr r0, [sp, #4] + str r0, [r5, #0x10] + ldr r1, [sp] + str r1, [r5, #0xc] + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08076B38 + ldr r1, _0807670C + ldr r0, [r1] + adds r0, #0xac + str r4, [r0] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08076700: .4byte gUnknown_3002360 +_08076704: .4byte gUnknown_203CC28 +_08076708: .4byte gUnknown_2000000 +_0807670C: .4byte gUnknown_3005AF0 +_08076710: .4byte 0x00000F2C +_08076714: .4byte gUnknown_3005AEC +_08076718: .4byte 0x00003D88 +_0807671C: .4byte gUnknown_2000F2C +_08076720: .4byte gUnknown_3005AF4 +_08076724: .4byte 0x000083D0 +_08076728: .4byte gUnknown_2004CB4 + thumb_func_end sub_08076634 + + thumb_func_start sub_0807672C +sub_0807672C: @ 0x0807672C + ldr r0, _08076738 + ldr r0, [r0] + ldrb r1, [r0, #9] + movs r0, #1 + ands r0, r1 + bx lr + .align 2, 0 +_08076738: .4byte gUnknown_3005AF0 + thumb_func_end sub_0807672C + + thumb_func_start sub_0807673C +sub_0807673C: @ 0x0807673C + ldr r0, _0807674C + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2, #9] + bx lr + .align 2, 0 +_0807674C: .4byte gUnknown_3005AF0 + thumb_func_end sub_0807673C + + thumb_func_start sub_08076750 +sub_08076750: @ 0x08076750 + ldr r0, _08076760 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #9] + bx lr + .align 2, 0 +_08076760: .4byte gUnknown_3005AF0 + thumb_func_end sub_08076750 + + thumb_func_start sub_08076764 +sub_08076764: @ 0x08076764 + push {lr} + movs r0, #0 + bl sub_08084914 + ldr r0, _0807677C + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #9] + pop {r0} + bx r0 + .align 2, 0 +_0807677C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08076764 + + thumb_func_start sub_08076780 +sub_08076780: @ 0x08076780 + ldr r0, _08076790 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2, #9] + bx lr + .align 2, 0 +_08076790: .4byte gUnknown_3005AF0 + thumb_func_end sub_08076780 + + thumb_func_start sub_08076794 +sub_08076794: @ 0x08076794 + push {r4, lr} + ldr r0, _080767D0 + ldr r0, [r0] + ldr r1, _080767D4 + ldrb r1, [r1] + movs r2, #0x8d + lsls r2, r2, #2 + adds r0, r0, r2 + strb r1, [r0] + movs r4, #0 +_080767A8: + ldr r0, _080767D0 + ldr r0, [r0] + movs r1, #0x64 + muls r1, r4, r1 + adds r0, r0, r1 + movs r2, #0x8e + lsls r2, r2, #2 + adds r0, r0, r2 + ldr r2, _080767D8 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + adds r4, #1 + cmp r4, #5 + ble _080767A8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080767D0: .4byte gUnknown_3005AEC +_080767D4: .4byte gUnknown_202418D +_080767D8: .4byte gUnknown_2024190 + thumb_func_end sub_08076794 + + thumb_func_start sub_080767DC +sub_080767DC: @ 0x080767DC + push {r4, r5, lr} + ldr r1, _08076818 + ldr r0, _0807681C + ldr r0, [r0] + movs r2, #0x8d + lsls r2, r2, #2 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + movs r4, #0 + ldr r5, _08076820 +_080767F2: + movs r0, #0x64 + adds r2, r4, #0 + muls r2, r0, r2 + adds r0, r2, r5 + ldr r1, _0807681C + ldr r1, [r1] + adds r1, r1, r2 + movs r2, #0x8e + lsls r2, r2, #2 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + adds r4, #1 + cmp r4, #5 + ble _080767F2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08076818: .4byte gUnknown_202418D +_0807681C: .4byte gUnknown_3005AEC +_08076820: .4byte gUnknown_2024190 + thumb_func_end sub_080767DC + + thumb_func_start sub_08076824 +sub_08076824: @ 0x08076824 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08076864 + mov ip, r0 + movs r5, #0xa3 + lsls r5, r5, #4 + mov r8, r5 + ldr r4, _08076868 + movs r3, #0 + movs r2, #0xf +_0807683A: + mov r6, ip + ldr r1, [r6] + adds r1, r1, r3 + add r1, r8 + adds r0, r4, #0 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + adds r4, #0x24 + adds r3, #0x24 + subs r2, #1 + cmp r2, #0 + bge _0807683A + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08076864: .4byte gUnknown_3005AEC +_08076868: .4byte gUnknown_2036FF0 + thumb_func_end sub_08076824 + + thumb_func_start sub_0807686C +sub_0807686C: @ 0x0807686C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080768AC + mov ip, r0 + movs r5, #0xa3 + lsls r5, r5, #4 + mov r8, r5 + ldr r4, _080768B0 + movs r3, #0 + movs r2, #0xf +_08076882: + mov r6, ip + ldr r1, [r6] + adds r1, r1, r3 + adds r0, r4, #0 + add r1, r8 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + adds r4, #0x24 + adds r3, #0x24 + subs r2, #1 + cmp r2, #0 + bge _08076882 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080768AC: .4byte gUnknown_3005AEC +_080768B0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0807686C + + thumb_func_start sub_080768B4 +sub_080768B4: @ 0x080768B4 + push {lr} + bl sub_08076794 + bl sub_08076824 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080768B4 + + thumb_func_start sub_080768C4 +sub_080768C4: @ 0x080768C4 + push {lr} + bl sub_080767DC + bl sub_0807686C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080768C4 + + thumb_func_start sub_080768D4 +sub_080768D4: @ 0x080768D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r2, #0 + ldr r0, _080769D4 + mov ip, r0 + ldr r1, _080769D8 + mov sl, r1 + ldr r5, _080769DC + movs r3, #0xac + lsls r3, r3, #3 + ldr r4, _080769E0 +_080768F0: + lsls r0, r2, #2 + ldr r1, [r5] + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, #1 + cmp r2, #0x1d + ble _080768F0 + movs r2, #0 + ldr r0, _080769E0 + ldr r5, _080769DC + movs r3, #0xbb + lsls r3, r3, #3 + adds r4, r0, #0 + adds r4, #0x78 +_08076910: + lsls r0, r2, #2 + ldr r1, [r5] + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, #1 + cmp r2, #0x1d + ble _08076910 + movs r2, #0 + ldr r0, _080769E0 + ldr r5, _080769DC + movs r3, #0xca + lsls r3, r3, #3 + adds r4, r0, #0 + adds r4, #0xf0 +_08076930: + lsls r0, r2, #2 + ldr r1, [r5] + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, #1 + cmp r2, #0xf + ble _08076930 + movs r2, #0 + ldr r0, _080769E0 + ldr r5, _080769DC + movs r6, #0x98 + lsls r6, r6, #1 + adds r4, r0, r6 + movs r3, #0xd2 + lsls r3, r3, #3 +_08076952: + lsls r0, r2, #2 + ldr r1, [r5] + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, #1 + cmp r2, #0x3f + ble _08076952 + movs r2, #0 + ldr r0, _080769E0 + ldr r5, _080769DC + movs r7, #0x8c + lsls r7, r7, #2 + adds r4, r0, r7 + movs r3, #0xf2 + lsls r3, r3, #3 +_08076974: + lsls r0, r2, #2 + ldr r1, [r5] + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, [r1] + stm r4!, {r0} + adds r2, #1 + cmp r2, #0x2d + ble _08076974 + ldr r0, _080769E0 + ldr r1, _080769DC + mov r8, r1 + movs r5, #0xba + lsls r5, r5, #2 + adds r4, r0, r5 + movs r3, #0 + ldr r6, _080769E4 + mov sb, r6 + movs r2, #0xf +_0807699A: + mov r7, r8 + ldr r1, [r7] + adds r1, r1, r3 + adds r0, r4, #0 + add r1, sb + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + adds r4, #0x24 + adds r3, #0x24 + subs r2, #1 + cmp r2, #0 + bge _0807699A + mov r1, sl + ldr r0, [r1] + adds r0, #0xac + ldr r0, [r0] + mov r5, ip + str r0, [r5] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080769D4: .4byte gUnknown_2031E24 +_080769D8: .4byte gUnknown_3005AF0 +_080769DC: .4byte gUnknown_3005AEC +_080769E0: .4byte gUnknown_20318FC +_080769E4: .4byte 0x00002BE0 + thumb_func_end sub_080768D4 + + thumb_func_start sub_080769E8 +sub_080769E8: @ 0x080769E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r2, #0 + ldr r0, _08076AF4 + mov r8, r0 + ldr r1, _08076AF8 + mov ip, r1 + ldr r5, _08076AFC + movs r3, #0xac + lsls r3, r3, #3 + ldr r4, _08076B00 +_08076A04: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r3 + adds r0, r0, r1 + ldm r4!, {r1} + str r1, [r0] + adds r2, #1 + cmp r2, #0x1d + ble _08076A04 + movs r2, #0 + ldr r5, _08076AFC + movs r4, #0xbb + lsls r4, r4, #3 + ldr r0, _08076B00 + adds r3, r0, #0 + adds r3, #0x78 +_08076A24: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, #1 + cmp r2, #0x1d + ble _08076A24 + movs r2, #0 + ldr r5, _08076AFC + movs r4, #0xca + lsls r4, r4, #3 + ldr r0, _08076B00 + adds r3, r0, #0 + adds r3, #0xf0 +_08076A44: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, #1 + cmp r2, #0xf + ble _08076A44 + movs r2, #0 + ldr r5, _08076AFC + movs r4, #0xd2 + lsls r4, r4, #3 + ldr r0, _08076B00 + movs r6, #0x98 + lsls r6, r6, #1 + adds r3, r0, r6 +_08076A66: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, #1 + cmp r2, #0x3f + ble _08076A66 + movs r2, #0 + ldr r5, _08076AFC + movs r4, #0xf2 + lsls r4, r4, #3 + ldr r0, _08076B00 + movs r7, #0x8c + lsls r7, r7, #2 + adds r3, r0, r7 +_08076A88: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + ldm r3!, {r1} + str r1, [r0] + adds r2, #1 + cmp r2, #0x2d + ble _08076A88 + ldr r0, _08076AFC + mov sb, r0 + ldr r1, _08076B04 + mov sl, r1 + ldr r4, _08076B00 + movs r3, #0 + movs r2, #0xf +_08076AA8: + mov r5, sb + ldr r1, [r5] + adds r1, r1, r3 + add r1, sl + movs r6, #0xba + lsls r6, r6, #2 + adds r0, r4, r6 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + adds r4, #0x24 + adds r3, #0x24 + subs r2, #1 + cmp r2, #0 + bge _08076AA8 + mov r7, r8 + ldr r0, [r7] + adds r0, #0xac + ldr r4, [r0] + mov r2, ip + ldr r1, [r2] + str r1, [r0] + adds r0, r4, #0 + bl sub_080D5E10 + ldr r0, [r7] + adds r0, #0xac + str r4, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08076AF4: .4byte gUnknown_3005AF0 +_08076AF8: .4byte gUnknown_2031E24 +_08076AFC: .4byte gUnknown_3005AEC +_08076B00: .4byte gUnknown_20318FC +_08076B04: .4byte 0x00002BE0 + thumb_func_end sub_080769E8 + + thumb_func_start sub_08076B08 +sub_08076B08: @ 0x08076B08 + ldr r2, _08076B1C + ldr r2, [r2] + adds r2, #0xac + ldr r2, [r2] + ldrh r3, [r0] + eors r2, r3 + eors r2, r1 + strh r2, [r0] + bx lr + .align 2, 0 +_08076B1C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08076B08 + + thumb_func_start sub_08076B20 +sub_08076B20: @ 0x08076B20 + ldr r2, _08076B34 + ldr r3, [r2] + adds r3, #0xac + ldr r2, [r0] + ldr r3, [r3] + eors r2, r3 + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_08076B34: .4byte gUnknown_3005AF0 + thumb_func_end sub_08076B20 + + thumb_func_start sub_08076B38 +sub_08076B38: @ 0x08076B38 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080841EC + adds r0, r4, #0 + bl sub_080D5E68 + adds r0, r4, #0 + bl sub_0802445C + ldr r5, _08076B70 + ldr r0, [r5] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_08076B20 + ldr r0, [r5] + ldr r1, _08076B74 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_08076B08 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08076B70: .4byte gUnknown_3005AEC +_08076B74: .4byte 0x00000494 + thumb_func_end sub_08076B38 + + thumb_func_start sub_08076B78 +sub_08076B78: @ 0x08076B78 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldr r0, _08076B98 + ldrb r0, [r0] + cmp r0, #0x1d + beq _08076B9C + lsls r2, r3, #0x10 + lsrs r2, r2, #0x10 + movs r0, #0 + adds r1, r4, #0 + bl sub_0800A070 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08076BAA + .align 2, 0 +_08076B98: .4byte gUnknown_20228E0 +_08076B9C: + ldr r0, _08076BB0 + ldrb r0, [r0] + movs r1, #0x54 + adds r2, r4, #0 + bl rfu_NI_setSendData + movs r0, #1 +_08076BAA: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08076BB0: .4byte gUnknown_30041E0 + thumb_func_end sub_08076B78 + + thumb_func_start sub_08076BB4 +sub_08076BB4: @ 0x08076BB4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A09C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08076BB4 + + thumb_func_start sub_08076BC4 +sub_08076BC4: @ 0x08076BC4 + push {r4, lr} + ldr r0, _08076BE8 + ldrb r0, [r0] + cmp r0, #0x1d + bne _08076BF8 + ldr r4, _08076BEC + ldr r0, _08076BF0 + ldrb r0, [r0] + bl sub_0800E340 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0 + bne _08076BF4 + movs r0, #1 + b _08076C00 + .align 2, 0 +_08076BE8: .4byte gUnknown_20228E0 +_08076BEC: .4byte gUnknown_3007620 +_08076BF0: .4byte gUnknown_30041E0 +_08076BF4: + movs r0, #0 + b _08076C00 +_08076BF8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08076C00: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08076BC4 + + thumb_func_start sub_08076C08 +sub_08076C08: @ 0x08076C08 + push {lr} + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08076C08 + + thumb_func_start sub_08076C18 +sub_08076C18: @ 0x08076C18 + push {lr} + bl sub_08076C68 + cmp r0, #0 + beq _08076C34 + ldr r0, _08076C30 + ldrb r1, [r0] + movs r0, #0xc + bl rfu_clearSlot + b _08076C38 + .align 2, 0 +_08076C30: .4byte gUnknown_30041E0 +_08076C34: + bl sub_0800A178 +_08076C38: + pop {r0} + bx r0 + thumb_func_end sub_08076C18 + + thumb_func_start sub_08076C3C +sub_08076C3C: @ 0x08076C3C + push {r4, lr} + adds r4, r0, #0 + bl sub_08076C68 + cmp r0, #0 + beq _08076C58 + ldr r0, _08076C54 + ldrb r1, [r0] + movs r0, #0xc + bl rfu_clearSlot + b _08076C60 + .align 2, 0 +_08076C54: .4byte gUnknown_30041E0 +_08076C58: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A1B0 +_08076C60: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08076C3C + + thumb_func_start sub_08076C68 +sub_08076C68: @ 0x08076C68 + push {lr} + ldr r0, _08076C80 + ldrb r0, [r0] + cmp r0, #0 + beq _08076C88 + ldr r0, _08076C84 + ldrb r0, [r0] + cmp r0, #0x1d + bne _08076C88 + movs r0, #1 + b _08076C8A + .align 2, 0 +_08076C80: .4byte gUnknown_300319C +_08076C84: .4byte gUnknown_20228E0 +_08076C88: + movs r0, #0 +_08076C8A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08076C68 + + thumb_func_start sub_08076C90 +sub_08076C90: @ 0x08076C90 + push {lr} + bl sub_0800A8D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08076C90 + + thumb_func_start sub_08076C9C +sub_08076C9C: @ 0x08076C9C + push {lr} + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08076C9C + + thumb_func_start sub_08076CAC +sub_08076CAC: @ 0x08076CAC + push {r4, r5, lr} + sub sp, #0xc + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + bl sub_080A133C + ldr r2, _08076D9C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r0, _08076DA0 + bl sub_080006F0 + ldr r4, _08076DA4 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0x14 + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xd0 + movs r2, #0x14 + bl sub_080A1200 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08076DA8 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _08076DAC + ldr r1, [r0] + movs r0, #0x8f + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r0, _08076DB0 + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08076D94 + bl sub_08004480 + movs r5, #0 +_08076D18: + lsls r4, r5, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08003774 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r5, #1 + cmp r5, #0x11 + bls _08076D18 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + movs r1, #0x14 + movs r2, #0xc0 + bl sub_08098144 + movs r0, #2 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + bl sub_080D27A4 + ldr r2, _08076DAC + 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] +_08076D94: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08076D9C: .4byte gUnknown_2037C74 +_08076DA0: .4byte sub_08077AE4 +_08076DA4: .4byte gUnknown_85D7B04 +_08076DA8: .4byte gUnknown_8300C04 +_08076DAC: .4byte gUnknown_2031F3C +_08076DB0: .4byte gUnknown_8300C14 + thumb_func_end sub_08076CAC + + thumb_func_start sub_08076DB4 +sub_08076DB4: @ 0x08076DB4 + push {lr} + ldr r0, _08076DCC + bl sub_08000540 + ldr r0, _08076DD0 + movs r1, #0 + str r1, [r0] + ldr r0, _08076DD4 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08076DCC: .4byte sub_08076DD8 +_08076DD0: .4byte gUnknown_3002360 +_08076DD4: .4byte gUnknown_202418E + thumb_func_end sub_08076DB4 + + thumb_func_start sub_08076DD8 +sub_08076DD8: @ 0x08076DD8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x28 + ldr r1, _08076DFC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #0x16 + bls _08076DF2 + b _0807752A +_08076DF2: + lsls r0, r0, #2 + ldr r1, _08076E00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08076DFC: .4byte gUnknown_3002360 +_08076E00: .4byte _08076E04 +_08076E04: @ jump table + .4byte _08076E60 @ case 0 + .4byte _08076EAC @ case 1 + .4byte _08076F68 @ case 2 + .4byte _08076F94 @ case 3 + .4byte _08076FF0 @ case 4 + .4byte _08077050 @ case 5 + .4byte _08077090 @ case 6 + .4byte _080770B0 @ case 7 + .4byte _080771F0 @ case 8 + .4byte _08077218 @ case 9 + .4byte _0807723C @ case 10 + .4byte _080772C4 @ case 11 + .4byte _080772D2 @ case 12 + .4byte _08077378 @ case 13 + .4byte _08077424 @ case 14 + .4byte _08077464 @ case 15 + .4byte _0807747E @ case 16 + .4byte _0807748C @ case 17 + .4byte _080774A0 @ case 18 + .4byte _080774C0 @ case 19 + .4byte _080774E0 @ case 20 + .4byte _080774F4 @ case 21 + .4byte _08077514 @ case 22 +_08076E60: + ldr r4, _08076E98 + ldr r0, _08076E9C + bl sub_08000BDC + str r0, [r4] + bl sub_08076CAC + ldr r4, _08076EA0 + movs r0, #0xd0 + lsls r0, r0, #4 + bl sub_08000BDC + str r0, [r4] + movs r6, #0 + ldr r2, _08076EA4 +_08076E7E: + lsls r1, r6, #8 + ldr r0, [r4] + adds r0, r0, r1 + stm r2!, {r0} + adds r6, #1 + cmp r6, #0xc + ble _08076E7E + ldr r1, _08076EA8 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077506 + .align 2, 0 +_08076E98: .4byte gUnknown_2031F3C +_08076E9C: .4byte 0x000010F0 +_08076EA0: .4byte gUnknown_2031E28 +_08076EA4: .4byte gUnknown_2031E2C +_08076EA8: .4byte gUnknown_3002360 +_08076EAC: + ldr r2, _08076F14 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + movs r6, #0 + movs r4, #0 +_08076EBA: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _08076F18 + adds r0, r0, r1 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + str r4, [sp, #0xc] + movs r1, #0 + movs r2, #0 + movs r3, #0x20 + bl sub_08067730 + adds r6, #1 + cmp r6, #5 + ble _08076EBA + movs r0, #0 + bl sub_08079BD4 + movs r0, #0 + bl sub_08001B48 + ldr r0, _08076F1C + ldrb r2, [r0] + cmp r2, #0 + bne _08076F54 + ldr r1, _08076F20 + ldr r4, _08076F24 + adds r0, r4, #0 + strh r0, [r1] + ldr r0, _08076F28 + ldr r0, [r0] + adds r0, #0xa8 + strb r2, [r0] + ldr r0, _08076F2C + ldrb r0, [r0] + cmp r0, #0 + beq _08076F30 + bl sub_0800AF5C + bl sub_080092D0 + bl sub_08011690 + b _0807752A + .align 2, 0 +_08076F14: .4byte gUnknown_2037C74 +_08076F18: .4byte gUnknown_20243E8 +_08076F1C: .4byte gUnknown_30031C4 +_08076F20: .4byte gUnknown_202267E +_08076F24: .4byte 0x00001122 +_08076F28: .4byte gUnknown_2031F3C +_08076F2C: .4byte gUnknown_300319C +_08076F30: + bl sub_080092D0 + ldr r0, _08076F4C + movs r7, #0x87 + lsls r7, r7, #3 + adds r0, r0, r7 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _08076F50 + movs r1, #1 + bl sub_080A8878 + b _0807752A + .align 2, 0 +_08076F4C: .4byte gUnknown_3002360 +_08076F50: .4byte sub_080B3188 +_08076F54: + ldr r0, _08076F64 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #4 + strb r1, [r0] + b _0807752A + .align 2, 0 +_08076F64: .4byte gUnknown_3002360 +_08076F68: + ldr r2, _08076F90 + ldr r1, [r2] + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #0xb + bhi _08076F82 + b _0807752A +_08076F82: + movs r0, #0 + strb r0, [r1] + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r3, r2 + b _08077506 + .align 2, 0 +_08076F90: .4byte gUnknown_2031F3C +_08076F94: + bl sub_0800A770 + adds r4, r0, #0 + bl sub_0800A60C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bhs _08076FA8 + b _0807752A +_08076FA8: + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08076FE0 + ldr r0, _08076FD8 + ldr r1, [r0] + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bhi _08076FC8 + b _0807752A +_08076FC8: + bl sub_0800A1E4 + ldr r1, _08076FDC + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077506 + .align 2, 0 +_08076FD8: .4byte gUnknown_2031F3C +_08076FDC: .4byte gUnknown_3002360 +_08076FE0: + ldr r1, _08076FEC + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08077506 + .align 2, 0 +_08076FEC: .4byte gUnknown_3002360 +_08076FF0: + ldr r0, _08077040 + ldrb r0, [r0] + cmp r0, #1 + beq _08076FFA + b _0807752A +_08076FFA: + bl sub_08009E00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08077008 + b _0807752A +_08077008: + bl sub_080116BC + bl sub_0806B004 + ldr r1, _08077044 + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, _08077048 + ldr r0, [r0] + adds r0, #0xa8 + strb r2, [r0] + ldr r0, _0807704C + ldrb r0, [r0] + cmp r0, #0 + bne _08077032 + b _0807752A +_08077032: + movs r0, #1 + bl sub_0800FF8C + bl sub_0800A8D4 + b _0807752A + .align 2, 0 +_08077040: .4byte gUnknown_30031C4 +_08077044: .4byte gUnknown_3002360 +_08077048: .4byte gUnknown_2031F3C +_0807704C: .4byte gUnknown_300319C +_08077050: + ldr r0, _08077080 + ldrb r0, [r0] + cmp r0, #0 + beq _08077088 + bl sub_08010000 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08077064 + b _0807752A +_08077064: + ldr r1, _08077084 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _0807752A + .align 2, 0 +_08077080: .4byte gUnknown_300319C +_08077084: .4byte gUnknown_3002360 +_08077088: + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r3, r2 + b _08077506 +_08077090: + bl sub_08077E20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807709C + b _0807752A +_0807709C: + bl sub_0807A028 + ldr r1, _080770AC + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077506 + .align 2, 0 +_080770AC: .4byte gUnknown_3002360 +_080770B0: + bl sub_0806B048 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + ldr r2, _080771CC + ldr r0, [r2] + ldr r1, _080771D0 + ldrb r1, [r1] + adds r0, #0x36 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080771D4 + 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 _08077148 + mov r8, r2 + ldr r7, _080771D8 +_080770EA: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _080771DC + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldrb r2, [r7] + lsls r2, r2, #0x13 + movs r4, #0xe0 + lsls r4, r4, #0xc + adds r2, r2, r4 + asrs r2, r2, #0x10 + ldrb r3, [r7, #1] + lsls r3, r3, #0x13 + ldr r1, _080771E0 + adds r3, r3, r1 + asrs r3, r3, #0x10 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + adds r0, r5, #0 + ldr r1, _080771E4 + bl sub_080D2564 + mov r2, r8 + ldr r1, [r2] + adds r1, #0x28 + adds r1, r1, r6 + strb r0, [r1] + adds r7, #2 + adds r6, #1 + ldr r0, [r2] + adds r0, #0x36 + ldrb r0, [r0] + cmp r6, r0 + blt _080770EA +_08077148: + movs r6, #0 + ldr r1, _080771CC + ldr r0, [r1] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + bge _080771C0 + ldr r0, _080771D8 + mov r8, r1 + adds r7, r0, #0 + adds r7, #0xc +_0807715E: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _080771E8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldrb r2, [r7] + lsls r2, r2, #0x13 + movs r3, #0xe0 + lsls r3, r3, #0xc + adds r2, r2, r3 + asrs r2, r2, #0x10 + ldrb r3, [r7, #1] + lsls r3, r3, #0x13 + ldr r4, _080771E0 + adds r3, r3, r4 + asrs r3, r3, #0x10 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r5, #0 + ldr r1, _080771E4 + bl sub_080D2564 + mov r2, r8 + ldr r1, [r2] + adds r1, #0x2e + adds r1, r1, r6 + strb r0, [r1] + adds r7, #2 + adds r6, #1 + ldr r0, [r2] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + blt _0807715E +_080771C0: + ldr r1, _080771EC + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077506 + .align 2, 0 +_080771CC: .4byte gUnknown_2031F3C +_080771D0: .4byte gUnknown_202418D +_080771D4: .4byte gUnknown_202418E +_080771D8: .4byte gUnknown_8300A1C +_080771DC: .4byte gUnknown_2024190 +_080771E0: .4byte 0xFFF40000 +_080771E4: .4byte sub_080D28B4 +_080771E8: .4byte gUnknown_20243E8 +_080771EC: .4byte gUnknown_3002360 +_080771F0: + bl sub_081B59D0 + ldr r0, _08077210 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x36 + adds r1, #0x28 + movs r2, #0 + bl sub_081B59EC + ldr r1, _08077214 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08077506 + .align 2, 0 +_08077210: .4byte gUnknown_2031F3C +_08077214: .4byte gUnknown_3002360 +_08077218: + ldr r0, _08077234 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x36 + adds r1, #0x28 + movs r2, #1 + bl sub_081B59EC + ldr r1, _08077238 + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r1, r7 + b _08077506 + .align 2, 0 +_08077234: .4byte gUnknown_2031F3C +_08077238: .4byte gUnknown_3002360 +_0807723C: + ldr r0, _080772A8 + ldr r0, [r0] + ldr r6, _080772AC + ldr r1, [r6] + ldr r5, _080772B0 + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + bl sub_0800A02C + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + eors r1, r0 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080772B4 + adds r0, r0, r1 + ldr r1, [r6, #0xc] + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + ldr r4, _080772B8 + ldr r0, [r4] + ldr r1, [r6, #0x18] + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + ldr r0, [r4, #4] + ldr r1, [r6, #0x1c] + movs r2, #0x18 + bl sub_08079D3C + ldr r1, _080772BC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, _080772C0 + ldr r0, [r0] + adds r0, #0xa8 + strb r2, [r0] + b _0807752A + .align 2, 0 +_080772A8: .4byte gUnknown_3005AF0 +_080772AC: .4byte gUnknown_2031E2C +_080772B0: .4byte gUnknown_201C000 +_080772B4: .4byte gUnknown_20226A8 +_080772B8: .4byte gUnknown_8300AFC +_080772BC: .4byte gUnknown_3002360 +_080772C0: .4byte gUnknown_2031F3C +_080772C4: + bl sub_08079C28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080772D0 + b _0807752A +_080772D0: + b _080774FE +_080772D2: + ldr r0, _0807736C + ldr r0, [r0] + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + movs r1, #0x4c + subs r1, r1, r0 + movs r6, #0 + add r5, sp, #0x10 + lsls r4, r1, #0x10 +_080772E8: + add r1, sp, #0x10 + ldr r0, _08077370 + 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, r0, r6 + strh r0, [r5] + asrs r1, r4, #0x10 + add r0, sp, #0x10 + movs r2, #8 + movs r3, #1 + bl sub_08006B0C + movs r3, #0x80 + lsls r3, r3, #0xe + adds r4, r4, r3 + adds r6, #1 + cmp r6, #2 + ble _080772E8 + bl sub_0800A02C + adds r1, r0, #0 + movs r0, #1 + eors r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08077374 + adds r0, r0, r1 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + movs r1, #0xc4 + subs r1, r1, r0 + movs r6, #0 + add r5, sp, #0x10 + lsls r4, r1, #0x10 +_0807733C: + add r1, sp, #0x10 + ldr r0, _08077370 + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + adds r0, r6, #3 + ldrh r7, [r5] + adds r0, r0, r7 + strh r0, [r5] + asrs r1, r4, #0x10 + add r0, sp, #0x10 + movs r2, #8 + movs r3, #1 + bl sub_08006B0C + movs r0, #0x80 + lsls r0, r0, #0xe + adds r4, r4, r0 + adds r6, #1 + cmp r6, #2 + ble _0807733C + b _080774FE + .align 2, 0 +_0807736C: .4byte gUnknown_3005AF0 +_08077370: .4byte gUnknown_83008A4 +_08077374: .4byte gUnknown_20226A8 +_08077378: + add r1, sp, #0x10 + ldr r0, _08077410 + ldm r0!, {r3, r4, r7} + stm r1!, {r3, r4, r7} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + add r1, sp, #0x10 + adds r0, r1, #0 + ldrh r0, [r0] + adds r0, #6 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xe0 + movs r2, #0x98 + movs r3, #1 + bl sub_08006B0C + movs r6, #0 + add r4, sp, #0x10 + movs r5, #0xc0 + lsls r5, r5, #0xd +_080773A2: + add r1, sp, #0x10 + ldr r0, _08077410 + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + adds r0, r6, #7 + ldrh r7, [r4] + adds r0, r0, r7 + strh r0, [r4] + asrs r1, r5, #0x10 + add r0, sp, #0x10 + movs r2, #0x96 + movs r3, #1 + bl sub_08006B0C + movs r0, #0x80 + lsls r0, r0, #0xe + adds r5, r5, r0 + adds r6, #1 + cmp r6, #5 + ble _080773A2 + ldr r0, _08077414 + ldr r2, _08077418 + ldrb r1, [r2] + lsls r1, r1, #0x13 + movs r3, #0x80 + lsls r3, r3, #0xe + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldrb r2, [r2, #1] + lsls r2, r2, #3 + movs r3, #2 + bl sub_08006B0C + ldr r2, _0807741C + ldr r1, [r2] + adds r1, #0x34 + movs r3, #0 + strb r0, [r1] + ldr r0, [r2] + adds r0, #0x35 + strb r3, [r0] + ldr r1, _08077420 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 + bl sub_08098504 + b _0807752A + .align 2, 0 +_08077410: .4byte gUnknown_83008A4 +_08077414: .4byte gUnknown_830088C +_08077418: .4byte gUnknown_8300A1C +_0807741C: .4byte gUnknown_2031F3C +_08077420: .4byte gUnknown_3002360 +_08077424: + movs r0, #0 + bl sub_08079D98 + movs r0, #0 + bl sub_08079690 + ldr r2, _08077458 + ldr r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + bl sub_08077D50 + ldr r1, _0807745C + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, _08077460 + bl sub_080A3040 + b _0807752A + .align 2, 0 +_08077458: .4byte gUnknown_2031F3C +_0807745C: .4byte gUnknown_3002360 +_08077460: .4byte 0x000001B3 +_08077464: + movs r0, #1 + bl sub_08079D98 + movs r0, #1 + bl sub_08079690 + ldr r1, _08077488 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0807747E: + movs r0, #0 + bl sub_08077C80 + b _080774FE + .align 2, 0 +_08077488: .4byte gUnknown_3002360 +_0807748C: + movs r0, #1 + bl sub_08077C80 + ldr r1, _0807749C + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077506 + .align 2, 0 +_0807749C: .4byte gUnknown_3002360 +_080774A0: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _080774BC + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08077506 + .align 2, 0 +_080774BC: .4byte gUnknown_3002360 +_080774C0: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #2 + bl sub_08077C80 + ldr r1, _080774DC + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r1, r7 + b _08077506 + .align 2, 0 +_080774DC: .4byte gUnknown_3002360 +_080774E0: + movs r0, #0 + bl sub_08079EE0 + ldr r1, _080774F0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08077506 + .align 2, 0 +_080774F0: .4byte gUnknown_3002360 +_080774F4: + movs r0, #1 + bl sub_08079EE0 + bl sub_08079FB4 +_080774FE: + ldr r1, _08077510 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_08077506: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807752A + .align 2, 0 +_08077510: .4byte gUnknown_3002360 +_08077514: + ldr r0, _0807754C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807752A + ldr r0, _08077550 + str r0, [r3] + ldr r0, _08077554 + bl sub_08000540 +_0807752A: + bl sub_08004630 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #0x28 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807754C: .4byte gUnknown_2037C74 +_08077550: .4byte sub_08078618 +_08077554: .4byte sub_08077C24 + thumb_func_end sub_08076DD8 + + thumb_func_start sub_08077558 +sub_08077558: @ 0x08077558 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x24 + ldr r1, _0807757C + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x16 + bls _08077572 + b _08077ABE +_08077572: + lsls r0, r0, #2 + ldr r1, _08077580 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807757C: .4byte gUnknown_3002360 +_08077580: .4byte _08077584 +_08077584: @ jump table + .4byte _080775E0 @ case 0 + .4byte _080775F4 @ case 1 + .4byte _080775FC @ case 2 + .4byte _08077604 @ case 3 + .4byte _0807760C @ case 4 + .4byte _08077620 @ case 5 + .4byte _08077648 @ case 6 + .4byte _08077650 @ case 7 + .4byte _08077788 @ case 8 + .4byte _080777B0 @ case 9 + .4byte _080777D4 @ case 10 + .4byte _0807785C @ case 11 + .4byte _08077878 @ case 12 + .4byte _08077928 @ case 13 + .4byte _08077ABE @ case 14 + .4byte _08077ABE @ case 15 + .4byte _080779F4 @ case 16 + .4byte _08077A08 @ case 17 + .4byte _08077A30 @ case 18 + .4byte _08077A6C @ case 19 + .4byte _08077A8C @ case 20 + .4byte _08077A94 @ case 21 + .4byte _08077AAC @ case 22 +_080775E0: + bl sub_08076CAC + ldr r1, _080775F0 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077AA0 + .align 2, 0 +_080775F0: .4byte gUnknown_3002360 +_080775F4: + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r2, r4 + b _0807782E +_080775FC: + movs r5, #0x87 + lsls r5, r5, #3 + adds r1, r2, r5 + b _08077AA0 +_08077604: + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r2, r7 + b _08077AA0 +_0807760C: + bl sub_0806B004 + ldr r1, _0807761C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08077AA0 + .align 2, 0 +_0807761C: .4byte gUnknown_3002360 +_08077620: + ldr r0, _08077640 + ldrb r0, [r0] + cmp r0, #0 + beq _08077634 + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 +_08077634: + ldr r1, _08077644 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08077AA0 + .align 2, 0 +_08077640: .4byte gUnknown_300319C +_08077644: .4byte gUnknown_3002360 +_08077648: + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r2, r3 + b _08077AA0 +_08077650: + bl sub_0806B048 + ldr r4, _08077768 + ldr r0, [r4] + ldr r1, _0807776C + ldrb r1, [r1] + adds r0, #0x36 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _08077770 + ldrb r1, [r1] + adds r0, #0x37 + strb r1, [r0] + movs r0, #0 + bl sub_08003774 + movs r0, #0 + bl sub_08079690 + movs r0, #1 + bl sub_08079690 + movs r6, #0 + ldr r0, [r4] + adds r0, #0x36 + ldrb r0, [r0] + cmp r6, r0 + bge _080776EC + mov r8, r4 + ldr r7, _08077774 +_0807768C: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08077778 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldrb r2, [r7] + lsls r2, r2, #0x13 + movs r4, #0xe0 + lsls r4, r4, #0xc + adds r2, r2, r4 + asrs r2, r2, #0x10 + ldrb r3, [r7, #1] + lsls r3, r3, #0x13 + ldr r1, _0807777C + adds r3, r3, r1 + asrs r3, r3, #0x10 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + adds r0, r5, #0 + ldr r1, _08077780 + bl sub_080D2564 + mov r2, r8 + ldr r1, [r2] + adds r1, #0x28 + adds r1, r1, r6 + strb r0, [r1] + adds r7, #2 + adds r6, #1 + ldr r0, [r2] + adds r0, #0x36 + ldrb r0, [r0] + cmp r6, r0 + blt _0807768C +_080776EC: + movs r6, #0 + ldr r1, _08077768 + ldr r0, [r1] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + blt _080776FC + b _08077A98 +_080776FC: + ldr r0, _08077774 + mov r8, r1 + adds r7, r0, #0 + adds r7, #0xc +_08077704: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08077784 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldrb r2, [r7] + lsls r2, r2, #0x13 + movs r3, #0xe0 + lsls r3, r3, #0xc + adds r2, r2, r3 + asrs r2, r2, #0x10 + ldrb r3, [r7, #1] + lsls r3, r3, #0x13 + ldr r4, _0807777C + adds r3, r3, r4 + asrs r3, r3, #0x10 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r5, #0 + ldr r1, _08077780 + bl sub_080D2564 + mov r5, r8 + ldr r1, [r5] + adds r1, #0x2e + adds r1, r1, r6 + strb r0, [r1] + adds r7, #2 + adds r6, #1 + ldr r0, [r5] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + blt _08077704 + b _08077A98 + .align 2, 0 +_08077768: .4byte gUnknown_2031F3C +_0807776C: .4byte gUnknown_202418D +_08077770: .4byte gUnknown_202418E +_08077774: .4byte gUnknown_8300A1C +_08077778: .4byte gUnknown_2024190 +_0807777C: .4byte 0xFFF40000 +_08077780: .4byte sub_080D28B4 +_08077784: .4byte gUnknown_20243E8 +_08077788: + bl sub_081B59D0 + ldr r0, _080777A8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x36 + adds r1, #0x28 + movs r2, #0 + bl sub_081B59EC + ldr r1, _080777AC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08077AA0 + .align 2, 0 +_080777A8: .4byte gUnknown_2031F3C +_080777AC: .4byte gUnknown_3002360 +_080777B0: + ldr r0, _080777CC + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x36 + adds r1, #0x28 + movs r2, #1 + bl sub_081B59EC + ldr r1, _080777D0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08077AA0 + .align 2, 0 +_080777CC: .4byte gUnknown_2031F3C +_080777D0: .4byte gUnknown_3002360 +_080777D4: + ldr r0, _08077840 + ldr r0, [r0] + ldr r6, _08077844 + ldr r1, [r6] + ldr r5, _08077848 + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + bl sub_0800A02C + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + eors r1, r0 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807784C + adds r0, r0, r1 + ldr r1, [r6, #0xc] + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + ldr r4, _08077850 + ldr r0, [r4] + ldr r1, [r6, #0x18] + str r5, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + ldr r0, [r4, #4] + ldr r1, [r6, #0x1c] + movs r2, #0x18 + bl sub_08079D3C + ldr r1, _08077854 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 +_0807782E: + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, _08077858 + ldr r0, [r0] + adds r0, #0xa8 + strb r2, [r0] + b _08077ABE + .align 2, 0 +_08077840: .4byte gUnknown_3005AF0 +_08077844: .4byte gUnknown_2031E2C +_08077848: .4byte gUnknown_201C000 +_0807784C: .4byte gUnknown_20226A8 +_08077850: .4byte gUnknown_8300AFC +_08077854: .4byte gUnknown_3002360 +_08077858: .4byte gUnknown_2031F3C +_0807785C: + bl sub_08079C28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08077868 + b _08077ABE +_08077868: + ldr r1, _08077874 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08077AA0 + .align 2, 0 +_08077874: .4byte gUnknown_3002360 +_08077878: + ldr r0, _08077918 + ldr r0, [r0] + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + movs r1, #0x4c + subs r1, r1, r0 + movs r6, #0 + add r5, sp, #0xc + lsls r4, r1, #0x10 +_0807788E: + add r1, sp, #0xc + ldr r0, _0807791C + 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, r0, r6 + strh r0, [r5] + asrs r1, r4, #0x10 + add r0, sp, #0xc + movs r2, #8 + movs r3, #1 + bl sub_08006B0C + movs r7, #0x80 + lsls r7, r7, #0xe + adds r4, r4, r7 + adds r6, #1 + cmp r6, #2 + ble _0807788E + bl sub_0800A02C + adds r1, r0, #0 + movs r0, #1 + eors r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08077920 + adds r0, r0, r1 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + movs r1, #0xc4 + subs r1, r1, r0 + movs r6, #0 + add r5, sp, #0xc + lsls r4, r1, #0x10 +_080778E2: + add r1, sp, #0xc + ldr r0, _0807791C + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + adds r0, r6, #3 + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r5] + asrs r1, r4, #0x10 + add r0, sp, #0xc + movs r2, #8 + movs r3, #1 + bl sub_08006B0C + movs r2, #0x80 + lsls r2, r2, #0xe + adds r4, r4, r2 + adds r6, #1 + cmp r6, #2 + ble _080778E2 + ldr r1, _08077924 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077AA0 + .align 2, 0 +_08077918: .4byte gUnknown_3005AF0 +_0807791C: .4byte gUnknown_83008A4 +_08077920: .4byte gUnknown_20226A8 +_08077924: .4byte gUnknown_3002360 +_08077928: + add r1, sp, #0xc + ldr r0, _08077994 + ldm r0!, {r4, r5, r7} + stm r1!, {r4, r5, r7} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + add r1, sp, #0xc + adds r0, r1, #0 + ldrh r0, [r0] + adds r0, #6 + strh r0, [r1] + adds r0, r1, #0 + movs r1, #0xe0 + movs r2, #0x98 + movs r3, #1 + bl sub_08006B0C + movs r6, #0 + add r4, sp, #0xc + movs r5, #0xc0 + lsls r5, r5, #0xd +_08077952: + add r1, sp, #0xc + ldr r0, _08077994 + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + ldm r0!, {r2, r3, r7} + stm r1!, {r2, r3, r7} + adds r0, r6, #7 + ldrh r7, [r4] + adds r0, r0, r7 + strh r0, [r4] + asrs r1, r5, #0x10 + add r0, sp, #0xc + movs r2, #0x96 + movs r3, #1 + bl sub_08006B0C + movs r0, #0x80 + lsls r0, r0, #0xe + adds r5, r5, r0 + adds r6, #1 + cmp r6, #5 + ble _08077952 + ldr r0, _08077998 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x35 + ldrb r1, [r2] + adds r4, r0, #0 + cmp r1, #5 + bhi _080779A0 + ldr r0, _0807799C + ldrb r0, [r0] + b _080779A6 + .align 2, 0 +_08077994: .4byte gUnknown_83008A4 +_08077998: .4byte gUnknown_2031F3C +_0807799C: .4byte gUnknown_203CBEC +_080779A0: + ldr r0, _080779E4 + ldrb r0, [r0] + adds r0, #6 +_080779A6: + strb r0, [r2] + ldr r0, _080779E8 + ldr r3, _080779EC + ldr r1, [r4] + adds r1, #0x35 + ldrb r2, [r1] + lsls r2, r2, #1 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, r1, #0x13 + movs r5, #0x80 + lsls r5, r5, #0xe + adds r1, r1, r5 + asrs r1, r1, #0x10 + adds r3, #1 + adds r2, r2, r3 + ldrb r2, [r2] + lsls r2, r2, #3 + movs r3, #2 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x34 + strb r0, [r1] + ldr r0, _080779F0 + movs r7, #0x87 + lsls r7, r7, #3 + adds r0, r0, r7 + movs r1, #0x10 + strb r1, [r0] + b _08077ABE + .align 2, 0 +_080779E4: .4byte gUnknown_203CBEC +_080779E8: .4byte gUnknown_830088C +_080779EC: .4byte gUnknown_8300A1C +_080779F0: .4byte gUnknown_3002360 +_080779F4: + movs r0, #0 + bl sub_08077C80 + ldr r1, _08077A04 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08077AA0 + .align 2, 0 +_08077A04: .4byte gUnknown_3002360 +_08077A08: + movs r0, #1 + bl sub_08077C80 + ldr r2, _08077A28 + ldr r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + bl sub_08077D50 + ldr r1, _08077A2C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08077AA0 + .align 2, 0 +_08077A28: .4byte gUnknown_2031F3C +_08077A2C: .4byte gUnknown_3002360 +_08077A30: + ldr r2, _08077A64 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _08077A68 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08077AA0 + .align 2, 0 +_08077A64: .4byte gUnknown_2037C74 +_08077A68: .4byte gUnknown_3002360 +_08077A6C: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #2 + bl sub_08077C80 + ldr r1, _08077A88 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08077AA0 + .align 2, 0 +_08077A88: .4byte gUnknown_3002360 +_08077A8C: + movs r5, #0x87 + lsls r5, r5, #3 + adds r1, r2, r5 + b _08077AA0 +_08077A94: + bl sub_08079FB4 +_08077A98: + ldr r1, _08077AA8 + movs r7, #0x87 + lsls r7, r7, #3 + adds r1, r1, r7 +_08077AA0: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08077ABE + .align 2, 0 +_08077AA8: .4byte gUnknown_3002360 +_08077AAC: + ldr r0, _08077ADC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08077ABE + ldr r0, _08077AE0 + bl sub_08000540 +_08077ABE: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #0x24 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08077ADC: .4byte gUnknown_2037C74 +_08077AE0: .4byte sub_08077C24 + thumb_func_end sub_08077558 + + thumb_func_start sub_08077AE4 +sub_08077AE4: @ 0x08077AE4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08077AE4 + + thumb_func_start sub_08077AF8 +sub_08077AF8: @ 0x08077AF8 + push {r4, lr} + sub sp, #4 + ldr r4, _08077B30 + ldr r1, [r4] + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _08077B28 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r4] + adds r0, #0x6f + movs r1, #0xa + strb r1, [r0] +_08077B28: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08077B30: .4byte gUnknown_2031F3C + thumb_func_end sub_08077AF8 + + thumb_func_start sub_08077B34 +sub_08077B34: @ 0x08077B34 + push {r4, lr} + ldr r0, _08077B6C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08077B8A + ldr r1, _08077B70 + ldr r4, _08077B74 + 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, #1] + ldr r0, _08077B78 + ldrb r0, [r0] + cmp r0, #0 + beq _08077B7C + adds r1, r2, #0 + adds r1, #0x6f + movs r0, #0x10 + strb r0, [r1] + b _08077B8A + .align 2, 0 +_08077B6C: .4byte gUnknown_2037C74 +_08077B70: .4byte gUnknown_2031F38 +_08077B74: .4byte gUnknown_2031F3C +_08077B78: .4byte gUnknown_300319C +_08077B7C: + movs r0, #0x20 + bl sub_0800A7B8 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #0xd + strb r1, [r0] +_08077B8A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08077B34 + + thumb_func_start sub_08077B90 +sub_08077B90: @ 0x08077B90 + push {r4, r5, lr} + ldr r5, _08077BD0 + ldr r0, _08077BD4 + str r0, [r5, #8] + ldr r0, _08077BD8 + ldrb r0, [r0] + cmp r0, #0 + beq _08077BE8 + bl sub_08010000 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08077C0C + ldr r0, _08077BDC + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _08077BE0 + ldr r0, [r0] + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] + bl sub_0800DB50 + ldr r0, _08077BE4 + bl sub_08000540 + b _08077C0C + .align 2, 0 +_08077BD0: .4byte gUnknown_3002360 +_08077BD4: .4byte sub_08076DB4 +_08077BD8: .4byte gUnknown_300319C +_08077BDC: .4byte gUnknown_2031E28 +_08077BE0: .4byte gUnknown_2031F3C +_08077BE4: .4byte sub_0807A8AC +_08077BE8: + ldr r0, _08077C14 + ldrb r4, [r0] + cmp r4, #0 + bne _08077C0C + ldr r0, _08077C18 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _08077C1C + ldr r0, [r0] + bl sub_08000BF0 + str r4, [r5] + ldr r0, _08077C20 + bl sub_08000540 +_08077C0C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08077C14: .4byte gUnknown_30031C4 +_08077C18: .4byte gUnknown_2031E28 +_08077C1C: .4byte gUnknown_2031F3C +_08077C20: .4byte sub_0807A8AC + thumb_func_end sub_08077B90 + + thumb_func_start sub_08077C24 +sub_08077C24: @ 0x08077C24 + push {r4, lr} + bl sub_08078FC0 + bl sub_08079AFC + movs r0, #0 + bl sub_080790C8 + movs r0, #1 + bl sub_080790C8 + ldr r4, _08077C7C + ldr r2, [r4] + ldrb r1, [r2] + adds r0, r1, #1 + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x18 + bl sub_08001144 + ldr r2, [r4] + ldrb r1, [r2, #1] + adds r0, r1, #0 + adds r0, #0xff + strb r0, [r2, #1] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0x1c + bl sub_08001144 + bl sub_08196E18 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08077C7C: .4byte gUnknown_2031F3C + thumb_func_end sub_08077C24 + + thumb_func_start sub_08077C80 +sub_08077C80: @ 0x08077C80 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + beq _08077CEC + cmp r4, #1 + bgt _08077C96 + cmp r4, #0 + beq _08077C9C + b _08077D46 +_08077C96: + cmp r4, #2 + beq _08077D14 + b _08077D46 +_08077C9C: + ldr r0, _08077CDC + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r1, _08077CE0 + movs r2, #0x94 + lsls r2, r2, #5 + movs r0, #1 + movs r3, #0 + bl sub_0800195C + ldr r1, _08077CE4 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080023B4 + ldr r1, _08077CE8 + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #2 + movs r3, #0 + bl sub_08001A14 + b _08077D46 + .align 2, 0 +_08077CDC: .4byte gUnknown_82FD0CC +_08077CE0: .4byte gUnknown_82FD14C +_08077CE4: .4byte gUnknown_82FE3CC +_08077CE8: .4byte gUnknown_82FEFC8 +_08077CEC: + ldr r1, _08077D10 + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #3 + movs r3, #0 + bl sub_08001A14 + movs r0, #0 + bl sub_0807987C + movs r0, #1 + bl sub_0807987C + movs r0, #1 + bl sub_08002248 + b _08077D46 + .align 2, 0 +_08077D10: .4byte gUnknown_82FF7C8 +_08077D14: + movs r5, #0x80 + lsls r5, r5, #0x15 + movs r4, #3 +_08077D1A: + lsrs r0, r5, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x80 + lsls r0, r0, #0x12 + adds r5, r5, r0 + subs r4, #1 + cmp r4, #0 + bge _08077D1A + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_08077D46: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08077C80 + + thumb_func_start sub_08077D50 +sub_08077D50: @ 0x08077D50 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r3, #0 + ldr r5, _08077DA0 + mov r8, r5 + ldr r0, _08077DA4 + mov ip, r0 + movs r1, #5 + rsbs r1, r1, #0 + mov sb, r1 + movs r4, #6 + movs r7, #1 + movs r6, #0 +_08077D6E: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0x36 + ldrb r1, [r1] + cmp r3, r1 + bge _08077DA8 + adds r0, #0x28 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + adds r1, #0x3e + ldrb r2, [r1] + mov r0, sb + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x38 + adds r0, r0, r3 + strb r7, [r0] + b _08077DAE + .align 2, 0 +_08077DA0: .4byte gUnknown_2031F3C +_08077DA4: .4byte gUnknown_20205AC +_08077DA8: + adds r0, #0x38 + adds r0, r0, r3 + strb r6, [r0] +_08077DAE: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0x37 + ldrb r1, [r1] + cmp r3, r1 + bge _08077DDE + adds r0, #0x2e + adds r0, r0, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + adds r1, #0x3e + ldrb r2, [r1] + mov r0, sb + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x38 + adds r0, r0, r4 + strb r7, [r0] + b _08077DE4 +_08077DDE: + adds r0, #0x38 + adds r0, r0, r4 + strb r6, [r0] +_08077DE4: + adds r4, #1 + adds r3, #1 + cmp r3, #5 + ble _08077D6E + ldr r0, [r5] + adds r0, #0x44 + movs r1, #1 + strb r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08077D50 + + thumb_func_start sub_08077E00 +sub_08077E00: @ 0x08077E00 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r3, #0 + cmp r3, r2 + bhs _08077E1A +_08077E0C: + adds r0, r5, r3 + adds r1, r4, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, r2 + blo _08077E0C +_08077E1A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08077E00 + + thumb_func_start sub_08077E20 +sub_08077E20: @ 0x08077E20 + push {r4, r5, lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08077E44 + ldr r0, [r0] + adds r0, #0x69 + ldrb r0, [r0] + cmp r0, #0x15 + bls _08077E38 + b _08078112 +_08077E38: + lsls r0, r0, #2 + ldr r1, _08077E48 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08077E44: .4byte gUnknown_2031F3C +_08077E48: .4byte _08077E4C +_08077E4C: @ jump table + .4byte _08077EA4 @ case 0 + .4byte _08077ED0 @ case 1 + .4byte _080780EC @ case 2 + .4byte _08077EFC @ case 3 + .4byte _08077F10 @ case 4 + .4byte _08077F44 @ case 5 + .4byte _080780EC @ case 6 + .4byte _08077F60 @ case 7 + .4byte _08077F74 @ case 8 + .4byte _08077FA8 @ case 9 + .4byte _080780EC @ case 10 + .4byte _08077FC4 @ case 11 + .4byte _08077FD8 @ case 12 + .4byte _0807800C @ case 13 + .4byte _080780EC @ case 14 + .4byte _08078034 @ case 15 + .4byte _08078048 @ case 16 + .4byte _0807807C @ case 17 + .4byte _080780EC @ case 18 + .4byte _080780A4 @ case 19 + .4byte _080780B8 @ case 20 + .4byte _080780E8 @ case 21 +_08077EA4: + ldr r0, _08077EC4 + ldr r1, _08077EC8 + movs r2, #0xc8 + bl sub_08077E00 + ldr r3, _08077ECC + ldr r1, [r3] + adds r1, #0x69 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, [r3] + adds r0, #0xa8 + strb r2, [r0] + b _08078112 + .align 2, 0 +_08077EC4: .4byte gUnknown_202257C +_08077EC8: .4byte gUnknown_2024190 +_08077ECC: .4byte gUnknown_2031F3C +_08077ED0: + bl sub_08076BC4 + cmp r0, #0 + bne _08077EDA + b _08078112 +_08077EDA: + bl sub_08076C08 + cmp r0, #0 + bne _08077EEC + ldr r0, _08077EE8 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077EE8: .4byte gUnknown_2031F3C +_08077EEC: + bl sub_08076C18 + ldr r0, _08077EF8 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077EF8: .4byte gUnknown_2031F3C +_08077EFC: + cmp r5, #0 + bne _08077F06 + movs r0, #1 + bl sub_08076BB4 +_08077F06: + ldr r0, _08077F0C + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077F0C: .4byte gUnknown_2031F3C +_08077F10: + bl sub_08076C08 + cmp r0, #3 + beq _08077F1A + b _08078112 +_08077F1A: + ldr r0, _08077F38 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + lsls r1, r1, #8 + ldr r2, _08077F3C + adds r1, r1, r2 + movs r2, #0xc8 + bl sub_08077E00 + bl sub_08076C18 + ldr r0, _08077F40 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077F38: .4byte gUnknown_20243E8 +_08077F3C: .4byte gUnknown_202207C +_08077F40: .4byte gUnknown_2031F3C +_08077F44: + ldr r0, _08077F54 + ldr r1, _08077F58 + movs r2, #0xc8 + bl sub_08077E00 + ldr r0, _08077F5C + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077F54: .4byte gUnknown_202257C +_08077F58: .4byte gUnknown_2024258 +_08077F5C: .4byte gUnknown_2031F3C +_08077F60: + cmp r5, #0 + bne _08077F6A + movs r0, #1 + bl sub_08076BB4 +_08077F6A: + ldr r0, _08077F70 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077F70: .4byte gUnknown_2031F3C +_08077F74: + bl sub_08076C08 + cmp r0, #3 + beq _08077F7E + b _08078112 +_08077F7E: + ldr r0, _08077F9C + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + lsls r1, r1, #8 + ldr r2, _08077FA0 + adds r1, r1, r2 + movs r2, #0xc8 + bl sub_08077E00 + bl sub_08076C18 + ldr r0, _08077FA4 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077F9C: .4byte gUnknown_20244B0 +_08077FA0: .4byte gUnknown_202207C +_08077FA4: .4byte gUnknown_2031F3C +_08077FA8: + ldr r0, _08077FB8 + ldr r1, _08077FBC + movs r2, #0xc8 + bl sub_08077E00 + ldr r0, _08077FC0 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077FB8: .4byte gUnknown_202257C +_08077FBC: .4byte gUnknown_2024320 +_08077FC0: .4byte gUnknown_2031F3C +_08077FC4: + cmp r5, #0 + bne _08077FCE + movs r0, #1 + bl sub_08076BB4 +_08077FCE: + ldr r0, _08077FD4 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08077FD4: .4byte gUnknown_2031F3C +_08077FD8: + bl sub_08076C08 + cmp r0, #3 + beq _08077FE2 + b _08078112 +_08077FE2: + ldr r0, _08078000 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + lsls r1, r1, #8 + ldr r2, _08078004 + adds r1, r1, r2 + movs r2, #0xc8 + bl sub_08077E00 + bl sub_08076C18 + ldr r0, _08078008 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08078000: .4byte gUnknown_2024578 +_08078004: .4byte gUnknown_202207C +_08078008: .4byte gUnknown_2031F3C +_0807800C: + ldr r0, _08078024 + ldr r1, _08078028 + ldr r1, [r1] + ldr r2, _0807802C + adds r1, r1, r2 + movs r2, #0xdc + bl sub_08077E00 + ldr r0, _08078030 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08078024: .4byte gUnknown_202257C +_08078028: .4byte gUnknown_3005AEC +_0807802C: .4byte 0x00002BE0 +_08078030: .4byte gUnknown_2031F3C +_08078034: + cmp r5, #0 + bne _0807803E + movs r0, #3 + bl sub_08076BB4 +_0807803E: + ldr r0, _08078044 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08078044: .4byte gUnknown_2031F3C +_08078048: + bl sub_08076C08 + cmp r0, #3 + bne _08078112 + ldr r0, _08078070 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + lsls r1, r1, #8 + ldr r2, _08078074 + adds r1, r1, r2 + movs r2, #0xd8 + bl sub_08077E00 + bl sub_08076C18 + ldr r0, _08078078 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08078070: .4byte gUnknown_2031E60 +_08078074: .4byte gUnknown_202207C +_08078078: .4byte gUnknown_2031F3C +_0807807C: + ldr r0, _08078094 + ldr r1, _08078098 + ldr r1, [r1] + ldr r2, _0807809C + adds r1, r1, r2 + movs r2, #0xb + bl sub_08077E00 + ldr r0, _080780A0 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_08078094: .4byte gUnknown_202257C +_08078098: .4byte gUnknown_3005AEC +_0807809C: .4byte 0x000031A8 +_080780A0: .4byte gUnknown_2031F3C +_080780A4: + cmp r5, #0 + bne _080780AE + movs r0, #4 + bl sub_08076BB4 +_080780AE: + ldr r0, _080780B4 + ldr r1, [r0] + b _0807810A + .align 2, 0 +_080780B4: .4byte gUnknown_2031F3C +_080780B8: + bl sub_08076C08 + cmp r0, #3 + bne _08078112 + ldr r4, _080780E0 + ldr r0, [r4] + adds r0, #0xa9 + movs r2, #1 + adds r1, r5, #0 + eors r1, r2 + lsls r1, r1, #8 + ldr r2, _080780E4 + adds r1, r1, r2 + movs r2, #0xb + bl sub_08077E00 + bl sub_08076C18 + ldr r1, [r4] + b _0807810A + .align 2, 0 +_080780E0: .4byte gUnknown_2031F3C +_080780E4: .4byte gUnknown_202207C +_080780E8: + movs r0, #1 + b _08078114 +_080780EC: + ldr r2, _0807811C + ldr r1, [r2] + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #0xa + bls _08078112 + movs r0, #0 + strb r0, [r1] + ldr r1, [r2] +_0807810A: + adds r1, #0x69 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08078112: + movs r0, #0 +_08078114: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0807811C: .4byte gUnknown_2031F3C + thumb_func_end sub_08077E20 + + thumb_func_start sub_08078120 +sub_08078120: @ 0x08078120 + push {r4, r5, r6, lr} + sub sp, #0x34 + ldr r5, _080781AC + ldr r0, [r5] + adds r0, #0x35 + ldrb r0, [r0] + movs r4, #0x64 + muls r0, r4, r0 + ldr r1, _080781B0 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + add r6, sp, #0x1c + adds r0, r6, #0 + mov r1, sp + bl sub_08008828 + ldr r0, [r5] + adds r0, #0x7e + ldrb r0, [r0] + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r4, r0 + ldr r1, _080781B4 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + add r4, sp, #0x28 + adds r0, r4, #0 + mov r1, sp + bl sub_08008828 + mov r0, sp + adds r1, r6, #0 + bl sub_080088B8 + ldr r1, _080781B8 + mov r0, sp + bl sub_080088D8 + mov r0, sp + adds r1, r4, #0 + bl sub_080088D8 + ldr r1, _080781BC + mov r0, sp + bl sub_080088D8 + ldr r0, [r5] + adds r0, #0x72 + ldrh r1, [r0] + lsls r1, r1, #5 + ldr r0, _080781C0 + adds r1, r1, r0 + mov r0, sp + movs r2, #0x18 + bl sub_08079D3C + add sp, #0x34 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080781AC: .4byte gUnknown_2031F3C +_080781B0: .4byte gUnknown_2024190 +_080781B4: .4byte gUnknown_20243E8 +_080781B8: .4byte gUnknown_8300AAE +_080781BC: .4byte gUnknown_8300AB1 +_080781C0: .4byte 0x06010000 + thumb_func_end sub_08078120 + + thumb_func_start sub_080781C4 +sub_080781C4: @ 0x080781C4 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r2, #1 + adds r0, r4, #0 + ands r0, r2 + cmp r0, #0 + beq _08078248 + ldr r0, _080781EC + ldrh r1, [r0] + ldr r0, _080781F0 + cmp r1, r0 + beq _08078228 + cmp r1, r0 + bgt _080781F8 + ldr r0, _080781F4 + cmp r1, r0 + beq _08078218 + b _08078242 + .align 2, 0 +_080781EC: .4byte gUnknown_202207C +_080781F0: .4byte 0x0000BBBB +_080781F4: .4byte 0x0000AABB +_080781F8: + ldr r0, _0807820C + cmp r1, r0 + beq _08078238 + ldr r0, _08078210 + cmp r1, r0 + bne _08078242 + ldr r0, _08078214 + ldr r0, [r0] + adds r0, #0x78 + b _0807823E + .align 2, 0 +_0807820C: .4byte 0x0000BBCC +_08078210: .4byte 0x0000EEAA +_08078214: .4byte gUnknown_2031F3C +_08078218: + ldr r0, _08078224 + ldr r0, [r0] + adds r0, #0x78 + strb r2, [r0] + b _08078242 + .align 2, 0 +_08078224: .4byte gUnknown_2031F3C +_08078228: + ldr r0, _08078234 + ldr r0, [r0] + adds r0, #0x7a + strb r2, [r0] + b _08078242 + .align 2, 0 +_08078234: .4byte gUnknown_2031F3C +_08078238: + ldr r0, _08078270 + ldr r0, [r0] + adds r0, #0x7a +_0807823E: + movs r1, #2 + strb r1, [r0] +_08078242: + movs r0, #0 + bl sub_08076C3C +_08078248: + movs r2, #2 + adds r0, r4, #0 + ands r0, r2 + cmp r0, #0 + beq _080782DA + ldr r3, _08078274 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r3, r1 + ldrh r1, [r0] + ldr r0, _08078278 + cmp r1, r0 + beq _080782BC + cmp r1, r0 + bgt _08078280 + ldr r0, _0807827C + cmp r1, r0 + beq _080782A0 + b _080782D4 + .align 2, 0 +_08078270: .4byte gUnknown_2031F3C +_08078274: .4byte gUnknown_202207C +_08078278: .4byte 0x0000BBBB +_0807827C: .4byte 0x0000AABB +_08078280: + ldr r0, _08078294 + cmp r1, r0 + beq _080782CC + ldr r0, _08078298 + cmp r1, r0 + bne _080782D4 + ldr r0, _0807829C + ldr r0, [r0] + adds r0, #0x79 + b _080782D2 + .align 2, 0 +_08078294: .4byte 0x0000BBCC +_08078298: .4byte 0x0000EEAA +_0807829C: .4byte gUnknown_2031F3C +_080782A0: + ldr r2, _080782B8 + ldr r1, [r2] + movs r4, #0x81 + lsls r4, r4, #1 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, #6 + adds r1, #0x7e + strb r0, [r1] + ldr r0, [r2] + adds r0, #0x79 + b _080782C2 + .align 2, 0 +_080782B8: .4byte gUnknown_2031F3C +_080782BC: + ldr r0, _080782C8 + ldr r0, [r0] + adds r0, #0x7b +_080782C2: + movs r1, #1 + strb r1, [r0] + b _080782D4 + .align 2, 0 +_080782C8: .4byte gUnknown_2031F3C +_080782CC: + ldr r0, _080782E0 + ldr r0, [r0] + adds r0, #0x7b +_080782D2: + strb r2, [r0] +_080782D4: + movs r0, #1 + bl sub_08076C3C +_080782DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080782E0: .4byte gUnknown_2031F3C + thumb_func_end sub_080781C4 + + thumb_func_start sub_080782E4 +sub_080782E4: @ 0x080782E4 + push {r4, r5, lr} + sub sp, #4 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _080783C6 + ldr r2, _08078310 + ldrh r1, [r2] + ldr r0, _08078314 + cmp r1, r0 + beq _080783B0 + cmp r1, r0 + bgt _08078320 + ldr r0, _08078318 + cmp r1, r0 + beq _08078390 + ldr r0, _0807831C + cmp r1, r0 + beq _0807835C + b _080783C0 + .align 2, 0 +_08078310: .4byte gUnknown_202207C +_08078314: .4byte 0x0000DDEE +_08078318: .4byte 0x0000CCDD +_0807831C: .4byte 0x0000DDDD +_08078320: + ldr r0, _08078330 + cmp r1, r0 + beq _08078334 + adds r0, #0x11 + cmp r1, r0 + beq _08078358 + b _080783C0 + .align 2, 0 +_08078330: .4byte 0x0000EEBB +_08078334: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #4 + bl sub_08079BD4 + ldr r0, _08078354 + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0xb + b _080783BE + .align 2, 0 +_08078354: .4byte gUnknown_2031F3C +_08078358: + movs r0, #5 + b _080783B2 +_0807835C: + ldr r4, _0807838C + ldr r1, [r4] + ldrb r0, [r2, #2] + adds r0, #6 + adds r1, #0x7e + strb r0, [r1] + movs r0, #0 + bl sub_08098504 + ldr r0, [r4] + adds r0, #0x35 + ldrb r0, [r0] + bl sub_08079090 + ldr r0, [r4] + adds r0, #0x7e + ldrb r0, [r0] + bl sub_08079090 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #7 + b _080783BE + .align 2, 0 +_0807838C: .4byte gUnknown_2031F3C +_08078390: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080783AC + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0xa + b _080783BE + .align 2, 0 +_080783AC: .4byte gUnknown_2031F3C +_080783B0: + movs r0, #1 +_080783B2: + bl sub_08079BD4 + ldr r0, _080783DC + ldr r0, [r0] + adds r0, #0x6f + movs r1, #8 +_080783BE: + strb r1, [r0] +_080783C0: + movs r0, #0 + bl sub_08076C3C +_080783C6: + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _080783D4 + movs r0, #1 + bl sub_08076C3C +_080783D4: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080783DC: .4byte gUnknown_2031F3C + thumb_func_end sub_080782E4 + + thumb_func_start sub_080783E0 +sub_080783E0: @ 0x080783E0 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _0807843C + ldr r2, [r6] + adds r1, r2, #0 + adds r1, #0x78 + ldrb r0, [r1] + cmp r0, #0 + bne _080783F4 + b _08078528 +_080783F4: + adds r0, r2, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #0 + bne _08078400 + b _08078528 +_08078400: + ldrh r1, [r1] + ldr r0, _08078440 + cmp r1, r0 + bne _08078448 + adds r1, r2, #0 + adds r1, #0x6f + movs r0, #6 + strb r0, [r1] + ldr r2, [r6] + adds r1, r2, #0 + adds r1, #0x80 + movs r4, #0 + ldr r0, _08078444 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x35 + ldrb r1, [r0] + adds r0, #0x4d + strh r1, [r0] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + ldr r0, [r6] + adds r2, r0, #0 + adds r2, #0x79 + strb r4, [r2] + adds r0, #0x78 + strb r4, [r0] + b _08078528 + .align 2, 0 +_0807843C: .4byte gUnknown_2031F3C +_08078440: .4byte 0x00000101 +_08078444: .4byte 0x0000DDDD +_08078448: + ldr r0, _08078490 + cmp r1, r0 + bne _08078498 + movs r0, #1 + bl sub_08079BD4 + ldr r1, [r6] + adds r2, r1, #0 + adds r2, #0x80 + movs r4, #0 + movs r3, #0 + ldr r0, _08078494 + strh r0, [r2] + adds r1, #0x82 + strh r3, [r1] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + 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, #8 + b _08078526 + .align 2, 0 +_08078490: .4byte 0x00000201 +_08078494: .4byte 0x0000EECC +_08078498: + movs r0, #0x81 + lsls r0, r0, #1 + cmp r1, r0 + bne _080784E4 + movs r0, #5 + bl sub_08079BD4 + ldr r1, [r6] + adds r2, r1, #0 + adds r2, #0x80 + movs r4, #0 + movs r3, #0 + ldr r0, _080784E0 + strh r0, [r2] + adds r1, #0x82 + strh r3, [r1] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + 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, #8 + b _08078526 + .align 2, 0 +_080784E0: .4byte 0x0000DDEE +_080784E4: + ldr r0, _080785C8 + cmp r1, r0 + bne _08078528 + adds r1, r2, #0 + adds r1, #0x80 + movs r5, #0 + movs r4, #0 + ldr r0, _080785CC + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x82 + strh r4, [r0] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + 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 +_08078526: + strb r1, [r0] +_08078528: + ldr r5, _080785D0 + ldr r3, [r5] + adds r1, r3, #0 + adds r1, #0x7a + ldrb r0, [r1] + cmp r0, #0 + beq _080785C0 + adds r0, r3, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _080785C0 + ldrh r1, [r1] + ldr r0, _080785D4 + cmp r1, r0 + bne _08078576 + adds r1, r3, #0 + adds r1, #0x80 + movs r4, #0 + movs r2, #0 + ldr r0, _080785D8 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0x82 + strh r2, [r0] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + 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, #9 + strb r1, [r0] +_08078576: + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x7a + ldrb r0, [r0] + cmp r0, #2 + beq _0807858C + adds r0, r1, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #2 + bne _080785C0 +_0807858C: + movs r0, #1 + bl sub_08079BD4 + ldr r1, [r5] + adds r2, r1, #0 + adds r2, #0x80 + movs r4, #0 + movs r3, #0 + ldr r0, _080785DC + strh r0, [r2] + adds r1, #0x82 + strh r3, [r1] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + 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, #8 + strb r1, [r0] +_080785C0: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080785C8: .4byte 0x00000202 +_080785CC: .4byte 0x0000EEBB +_080785D0: .4byte gUnknown_2031F3C +_080785D4: .4byte 0x00000101 +_080785D8: .4byte 0x0000CCDD +_080785DC: .4byte 0x0000DDEE + thumb_func_end sub_080783E0 + + thumb_func_start sub_080785E0 +sub_080785E0: @ 0x080785E0 + push {lr} + strh r1, [r0] + strh r2, [r0, #2] + movs r0, #5 + movs r1, #0 + bl sub_08079A80 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080785E0 + + thumb_func_start sub_080785F4 +sub_080785F4: @ 0x080785F4 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _08078614 + ldr r0, [r0] + adds r0, #0x80 + adds r1, r3, #0 + bl sub_080785E0 + pop {r0} + bx r0 + .align 2, 0 +_08078614: .4byte gUnknown_2031F3C + thumb_func_end sub_080785F4 + + thumb_func_start sub_08078618 +sub_08078618: @ 0x08078618 + push {r4, lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08076C08 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08078640 + cmp r4, #0 + bne _0807863A + movs r0, #0 + bl sub_080781C4 + b _08078640 +_0807863A: + adds r0, r4, #0 + bl sub_080782E4 +_08078640: + cmp r4, #0 + bne _08078648 + bl sub_080783E0 +_08078648: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08078618 + + thumb_func_start sub_08078650 +sub_08078650: @ 0x08078650 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r6, #0 + movs r5, #0 + ldr r2, _08078684 + ldr r3, [r2] + ldr r4, _08078688 + lsls r2, r1, #1 + adds r2, r2, r1 + lsls r2, r2, #1 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, #0x38 + adds r2, r2, r1 + adds r2, r2, r4 +_08078676: + ldrb r1, [r2] + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _0807868C + adds r6, r1, #0 + b _08078694 + .align 2, 0 +_08078684: .4byte gUnknown_2031F3C +_08078688: .4byte gUnknown_83008E4 +_0807868C: + adds r2, #1 + adds r5, #1 + cmp r5, #5 + ble _08078676 +_08078694: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08078650 + + thumb_func_start sub_0807869C +sub_0807869C: @ 0x0807869C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r7] + bl sub_08078650 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xc + bne _080786F4 + ldr r5, _080786EC + ldr r0, [r5] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080786F0 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r2, [r5] + adds r2, #0x34 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xe8 + strh r1, [r0, #0x20] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xa0 + strh r1, [r0, #0x22] + b _0807873C + .align 2, 0 +_080786EC: .4byte gUnknown_2031F3C +_080786F0: .4byte gUnknown_20205AC +_080786F4: + ldr r4, _08078750 + ldr r0, [r4] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _08078754 + adds r0, r0, r5 + movs r1, #0 + bl sub_08007EC0 + ldr r4, [r4] + adds r4, #0x34 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r2, _08078758 + lsls r3, r6, #1 + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, #0x20 + strh r0, [r1, #0x20] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r2, #1 + adds r3, r3, r2 + ldrb r0, [r3] + lsls r0, r0, #3 + strh r0, [r1, #0x22] +_0807873C: + ldrb r0, [r7] + cmp r0, r6 + beq _08078748 + movs r0, #5 + bl sub_080A306C +_08078748: + strb r6, [r7] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08078750: .4byte gUnknown_2031F3C +_08078754: .4byte gUnknown_20205AC +_08078758: .4byte gUnknown_8300A1C + thumb_func_end sub_0807869C + + thumb_func_start sub_0807875C +sub_0807875C: @ 0x0807875C + push {r4, lr} + movs r0, #0 + bl sub_08079BD4 + ldr r4, _08078788 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #0x64 + strb r1, [r0] + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08078790 + ldr r0, _0807878C + ldr r1, [r4] + adds r1, #0x35 + ldrb r1, [r1] + bl sub_080785F4 + b _08078798 + .align 2, 0 +_08078788: .4byte gUnknown_2031F3C +_0807878C: .4byte 0x0000AABB +_08078790: + ldr r0, [r4] + adds r0, #0x78 + movs r1, #1 + strb r1, [r0] +_08078798: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807875C + + thumb_func_start sub_080787A0 +sub_080787A0: @ 0x080787A0 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _080787C0 + ldrh r1, [r0, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080787C8 + ldr r0, _080787C4 + ldr r0, [r0] + adds r0, #0x35 + movs r1, #0 + bl sub_0807869C + b _08078814 + .align 2, 0 +_080787C0: .4byte gUnknown_3002360 +_080787C4: .4byte gUnknown_2031F3C +_080787C8: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080787E4 + ldr r0, _080787E0 + ldr r0, [r0] + adds r0, #0x35 + movs r1, #1 + bl sub_0807869C + b _08078814 + .align 2, 0 +_080787E0: .4byte gUnknown_2031F3C +_080787E4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08078800 + ldr r0, _080787FC + ldr r0, [r0] + adds r0, #0x35 + movs r1, #2 + bl sub_0807869C + b _08078814 + .align 2, 0 +_080787FC: .4byte gUnknown_2031F3C +_08078800: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08078814 + ldr r0, _08078888 + ldr r0, [r0] + adds r0, #0x35 + movs r1, #3 + bl sub_0807869C +_08078814: + ldr r0, _0807888C + ldrh r1, [r0, #0x2e] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080788EA + movs r0, #5 + bl sub_080A306C + ldr r4, _08078888 + ldr r0, [r4] + adds r0, #0x35 + ldrb r0, [r0] + cmp r0, #5 + bhi _08078894 + movs r0, #1 + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _08078890 + str r0, [sp] + movs r0, #1 + movs r1, #1 + movs r2, #0x10 + movs r3, #2 + bl sub_08198964 + movs r0, #0x10 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #3 + bl sub_08003528 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #1 + strb r1, [r0] + b _080788EA + .align 2, 0 +_08078888: .4byte gUnknown_2031F3C +_0807888C: .4byte gUnknown_3002360 +_08078890: .4byte gUnknown_8300B28 +_08078894: + cmp r0, #0xb + bhi _080788B2 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r4] + adds r0, #0x6f + movs r1, #2 + strb r1, [r0] + b _080788EA +_080788B2: + cmp r0, #0xc + bne _080788EA + ldr r0, _080788F4 + str r5, [sp] + movs r1, #0xe + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #4 + strb r1, [r0] + ldr r0, _080788F8 + ldr r0, [r0, #0x10] + ldr r1, [r4] + adds r1, #0x72 + ldrh r1, [r1] + lsls r1, r1, #5 + ldr r2, _080788FC + adds r1, r1, r2 + movs r2, #0x18 + bl sub_08079D3C +_080788EA: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080788F4: .4byte gUnknown_8300CAC +_080788F8: .4byte gUnknown_8300AFC +_080788FC: .4byte 0x06010000 + thumb_func_end sub_080787A0 + + thumb_func_start sub_08078900 +sub_08078900: @ 0x08078900 + push {lr} + bl sub_080799AC + ldr r3, _08078948 + ldr r0, [r3] + adds r0, #0x6f + movs r1, #0 + strb r1, [r0] + ldr r2, _0807894C + ldr r0, [r3] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, _08078950 + ldr r0, [r0, #4] + ldr r1, [r3] + adds r1, #0x72 + ldrh r1, [r1] + lsls r1, r1, #5 + ldr r2, _08078954 + adds r1, r1, r2 + movs r2, #0x18 + bl sub_08079D3C + pop {r0} + bx r0 + .align 2, 0 +_08078948: .4byte gUnknown_2031F3C +_0807894C: .4byte gUnknown_20205AC +_08078950: .4byte gUnknown_8300AFC +_08078954: .4byte 0x06010000 + thumb_func_end sub_08078900 + + thumb_func_start sub_08078958 +sub_08078958: @ 0x08078958 + push {lr} + sub sp, #4 + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0807897A + cmp r0, r1 + ble _08078A32 + cmp r0, #0 + beq _08078986 + cmp r0, #1 + beq _080789A4 + b _08078A32 +_0807897A: + movs r0, #5 + bl sub_080A306C + bl sub_08078900 + b _08078A32 +_08078986: + str r0, [sp] + adds r0, r1, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080789A0 + ldr r0, [r0] + adds r0, #0x6f + movs r1, #2 + b _08078A30 + .align 2, 0 +_080789A0: .4byte gUnknown_2031F3C +_080789A4: + ldr r0, _080789C4 + ldr r1, _080789C8 + ldrb r1, [r1] + ldr r2, _080789CC + ldr r2, [r2] + adds r2, #0x35 + ldrb r2, [r2] + bl sub_0807A064 + cmp r0, #5 + bhi _08078A32 + lsls r0, r0, #2 + ldr r1, _080789D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080789C4: .4byte gUnknown_2024190 +_080789C8: .4byte gUnknown_202418D +_080789CC: .4byte gUnknown_2031F3C +_080789D0: .4byte _080789D4 +_080789D4: @ jump table + .4byte _080789EC @ case 0 + .4byte _08078A14 @ case 1 + .4byte _08078A1A @ case 2 + .4byte _08078A20 @ case 3 + .4byte _08078A1A @ case 4 + .4byte _08078A20 @ case 5 +_080789EC: + bl sub_0807875C + ldr r2, _08078A0C + ldr r0, _08078A10 + ldr r0, [r0] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _08078A30 + .align 2, 0 +_08078A0C: .4byte gUnknown_20205AC +_08078A10: .4byte gUnknown_2031F3C +_08078A14: + movs r0, #3 + movs r1, #3 + b _08078A24 +_08078A1A: + movs r0, #3 + movs r1, #6 + b _08078A24 +_08078A20: + movs r0, #3 + movs r1, #7 +_08078A24: + bl sub_08079A80 + ldr r0, _08078A38 + ldr r0, [r0] + adds r0, #0x6f + movs r1, #8 +_08078A30: + strb r1, [r0] +_08078A32: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08078A38: .4byte gUnknown_2031F3C + thumb_func_end sub_08078958 + + thumb_func_start sub_08078A3C +sub_08078A3C: @ 0x08078A3C + push {lr} + ldr r0, _08078A60 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08078A52 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08078A5C +_08078A52: + movs r0, #5 + bl sub_080A306C + bl sub_08078900 +_08078A5C: + pop {r0} + bx r0 + .align 2, 0 +_08078A60: .4byte gUnknown_3002360 + thumb_func_end sub_08078A3C + + thumb_func_start sub_08078A64 +sub_08078A64: @ 0x08078A64 + push {lr} + sub sp, #4 + ldr r0, _08078A9C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08078ACC + ldr r0, _08078AA0 + ldr r0, [r0] + adds r3, r0, #0 + adds r3, #0x35 + ldrb r2, [r3] + cmp r2, #5 + bhi _08078AAC + ldr r1, _08078AA4 + ldrb r2, [r3] + adds r0, #0x36 + ldrb r3, [r0] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _08078AA8 + str r0, [sp] + movs r0, #1 + bl sub_081BF280 + b _08078AC8 + .align 2, 0 +_08078A9C: .4byte gUnknown_2037C74 +_08078AA0: .4byte gUnknown_2031F3C +_08078AA4: .4byte gUnknown_2024190 +_08078AA8: .4byte sub_08077558 +_08078AAC: + ldr r1, _08078AD4 + subs r2, #6 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, #0x37 + ldrb r3, [r0] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _08078AD8 + str r0, [sp] + movs r0, #1 + bl sub_081BF280 +_08078AC8: + bl sub_080034D4 +_08078ACC: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08078AD4: .4byte gUnknown_20243E8 +_08078AD8: .4byte sub_08077558 + thumb_func_end sub_08078A64 + + thumb_func_start sub_08078ADC +sub_08078ADC: @ 0x08078ADC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + movs r5, #0 + movs r3, #0 + ldr r7, _08078B64 + cmp r5, r1 + bge _08078B0A +_08078AF6: + cmp r2, r3 + beq _08078B04 + adds r0, r4, r3 + ldrb r0, [r0] + adds r0, r5, r0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08078B04: + adds r3, #1 + cmp r3, r1 + blt _08078AF6 +_08078B0A: + adds r0, r6, #0 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x64 + muls r0, r6, r0 + adds r7, r0, r7 + adds r0, r7, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0xcd + lsls r0, r0, #1 + cmp r4, r0 + beq _08078B34 + cmp r4, #0x97 + bne _08078B40 +_08078B34: + adds r0, r7, #0 + movs r1, #0x50 + bl sub_0806A058 + cmp r0, #0 + beq _08078B60 +_08078B40: + bl sub_0809CD04 + cmp r0, #0 + bne _08078B6C + ldr r0, _08078B68 + ldr r0, [r0] + adds r0, #0x57 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + bne _08078B60 + adds r0, r4, #0 + bl sub_0806DE8C + cmp r0, #0 + bne _08078B6C +_08078B60: + movs r0, #2 + b _08078B74 + .align 2, 0 +_08078B64: .4byte gUnknown_20243E8 +_08078B68: .4byte gUnknown_2031F3C +_08078B6C: + cmp r5, #0 + beq _08078B72 + movs r5, #1 +_08078B72: + adds r0, r5, #0 +_08078B74: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08078ADC + + thumb_func_start sub_08078B7C +sub_08078B7C: @ 0x08078B7C + push {r4, r5, lr} + sub sp, #0xc + movs r2, #0 + ldr r0, _08078BD4 + ldr r1, [r0] + adds r3, r1, #0 + adds r3, #0x36 + adds r5, r0, #0 + ldrb r0, [r3] + cmp r2, r0 + bge _08078BA8 + adds r4, r1, #0 + adds r4, #0x45 +_08078B96: + mov r1, sp + adds r0, r1, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + ldrb r0, [r3] + cmp r2, r0 + blt _08078B96 +_08078BA8: + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x36 + ldrb r1, [r1] + adds r2, r0, #0 + adds r2, #0x35 + ldrb r2, [r2] + adds r0, #0x7e + ldrb r3, [r0] + mov r0, sp + bl sub_08078ADC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08078BF0 + cmp r0, #1 + bgt _08078BD8 + cmp r0, #0 + beq _08078BDE + b _08078C14 + .align 2, 0 +_08078BD4: .4byte gUnknown_2031F3C +_08078BD8: + cmp r0, #2 + beq _08078C08 + b _08078C14 +_08078BDE: + movs r0, #3 + movs r1, #3 + bl sub_08079A80 + ldr r0, _08078BEC + b _08078BFA + .align 2, 0 +_08078BEC: .4byte 0x0000BBCC +_08078BF0: + movs r0, #3 + movs r1, #1 + bl sub_08079A80 + ldr r0, _08078C04 +_08078BFA: + movs r1, #0 + bl sub_080785F4 + b _08078C14 + .align 2, 0 +_08078C04: .4byte 0x0000BBBB +_08078C08: + movs r0, #3 + movs r1, #8 + bl sub_08079A80 + movs r0, #1 + b _08078C16 +_08078C14: + movs r0, #0 +_08078C16: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08078B7C + + thumb_func_start sub_08078C20 +sub_08078C20: @ 0x08078C20 + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08078C42 + cmp r1, #0 + bgt _08078C3C + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08078C70 + b _08078C98 +_08078C3C: + cmp r1, #1 + beq _08078C70 + b _08078C98 +_08078C42: + bl sub_08078B7C + cmp r0, #0 + bne _08078C58 + ldr r0, _08078C54 + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0x64 + b _08078C60 + .align 2, 0 +_08078C54: .4byte gUnknown_2031F3C +_08078C58: + ldr r0, _08078C6C + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0x11 +_08078C60: + strb r1, [r0] + movs r0, #0x11 + bl sub_0800365C + b _08078C98 + .align 2, 0 +_08078C6C: .4byte gUnknown_2031F3C +_08078C70: + movs r0, #3 + movs r1, #1 + bl sub_08079A80 + bl sub_08076BC4 + cmp r0, #0 + beq _08078C88 + ldr r0, _08078C9C + movs r1, #0 + bl sub_080785F4 +_08078C88: + ldr r0, _08078CA0 + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0x64 + strb r1, [r0] + movs r0, #0x11 + bl sub_0800365C +_08078C98: + pop {r0} + bx r0 + .align 2, 0 +_08078C9C: .4byte 0x0000BBCC +_08078CA0: .4byte gUnknown_2031F3C + thumb_func_end sub_08078C20 + + thumb_func_start sub_08078CA4 +sub_08078CA4: @ 0x08078CA4 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r0, _08078CE8 + ldr r0, [r0] + adds r0, #0x37 + ldrb r0, [r0] + subs r0, #4 + cmp r5, r0 + bge _08078CE0 + movs r6, #0xc0 + lsls r6, r6, #0x14 +_08078CBA: + lsrs r4, r6, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #1 + bl sub_08003528 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r6, r6, r0 + adds r5, #1 + ldr r0, _08078CE8 + ldr r0, [r0] + adds r0, #0x37 + ldrb r0, [r0] + subs r0, #4 + cmp r5, r0 + blt _08078CBA +_08078CE0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08078CE8: .4byte gUnknown_2031F3C + thumb_func_end sub_08078CA4 + + thumb_func_start sub_08078CEC +sub_08078CEC: @ 0x08078CEC + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08078D0E + cmp r1, #0 + bgt _08078D08 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08078D54 + b _08078D5E +_08078D08: + cmp r1, #1 + beq _08078D54 + b _08078D5E +_08078D0E: + movs r0, #4 + bl sub_08079BD4 + ldr r0, _08078D48 + movs r1, #0 + bl sub_080785F4 + ldr r2, _08078D4C + ldr r3, _08078D50 + ldr r0, [r3] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x6f + movs r1, #0x64 + strb r1, [r0] + bl sub_08078CA4 + b _08078D5E + .align 2, 0 +_08078D48: .4byte 0x0000EEAA +_08078D4C: .4byte gUnknown_20205AC +_08078D50: .4byte gUnknown_2031F3C +_08078D54: + movs r0, #5 + bl sub_080A306C + bl sub_08078900 +_08078D5E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08078CEC + + thumb_func_start sub_08078D64 +sub_08078D64: @ 0x08078D64 + push {r4, lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08078D8C + movs r0, #0 + bl sub_08098504 + ldr r4, _08078D9C + ldr r0, [r4] + adds r0, #0x35 + ldrb r0, [r0] + bl sub_08079090 + ldr r0, [r4] + adds r0, #0x7e + ldrb r0, [r0] + bl sub_08079090 +_08078D8C: + ldr r0, _08078D9C + ldr r0, [r0] + adds r0, #0x6f + movs r1, #7 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08078D9C: .4byte gUnknown_2031F3C + thumb_func_end sub_08078D64 + + thumb_func_start sub_08078DA0 +sub_08078DA0: @ 0x08078DA0 + push {r4, lr} + ldr r4, _08078DC4 + ldr r0, [r4] + adds r0, #0x74 + ldrh r1, [r0] + ldr r0, _08078DC8 + cmp r1, r0 + bne _08078DBC + bl sub_08078120 + ldr r0, [r4] + adds r0, #0x6f + movs r1, #0xe + strb r1, [r0] +_08078DBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08078DC4: .4byte gUnknown_2031F3C +_08078DC8: .4byte 0x00000505 + thumb_func_end sub_08078DA0 + + thumb_func_start sub_08078DCC +sub_08078DCC: @ 0x08078DCC + push {r4, r5, lr} + sub sp, #0xc + ldr r4, _08078E14 + ldr r1, [r4] + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + movs r5, #0 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x78 + bls _08078E0C + ldr r0, _08078E18 + movs r1, #1 + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + ldr r0, [r4] + adds r0, #0xa8 + strb r5, [r0] + ldr r0, [r4] + adds r0, #0x6f + movs r1, #3 + strb r1, [r0] +_08078E0C: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08078E14: .4byte gUnknown_2031F3C +_08078E18: .4byte gUnknown_8300CAC + thumb_func_end sub_08078DCC + + thumb_func_start sub_08078E1C +sub_08078E1C: @ 0x08078E1C + push {r4, r5, r6, lr} + ldr r0, _08078E98 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08078E90 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_08098504 + movs r0, #1 + bl sub_08098504 + movs r6, #0 + movs r5, #0xe0 + lsls r5, r5, #0x14 +_08078E42: + lsrs r4, r5, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_08098504 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r5, r5, r0 + adds r6, #1 + cmp r6, #3 + ble _08078E42 + movs r0, #0 + bl sub_080799C0 + movs r0, #1 + bl sub_080799C0 + ldr r2, _08078E9C + ldr r0, [r2] + adds r0, #0x6f + movs r1, #0 + strb r1, [r0] + ldr r3, _08078EA0 + ldr r0, [r2] + adds r0, #0x34 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_08078E90: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08078E98: .4byte gUnknown_3002360 +_08078E9C: .4byte gUnknown_2031F3C +_08078EA0: .4byte gUnknown_20205AC + thumb_func_end sub_08078E1C + + thumb_func_start sub_08078EA4 +sub_08078EA4: @ 0x08078EA4 + push {lr} + ldr r0, _08078EC0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08078ED8 + ldr r0, _08078EC4 + ldrb r0, [r0] + cmp r0, #0 + beq _08078EC8 + bl sub_0800A8D4 + b _08078ECE + .align 2, 0 +_08078EC0: .4byte gUnknown_2037C74 +_08078EC4: .4byte gUnknown_300319C +_08078EC8: + movs r0, #0xc + bl sub_0800A7B8 +_08078ECE: + ldr r0, _08078EDC + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0xc + strb r1, [r0] +_08078ED8: + pop {r0} + bx r0 + .align 2, 0 +_08078EDC: .4byte gUnknown_2031F3C + thumb_func_end sub_08078EA4 + + thumb_func_start sub_08078EE0 +sub_08078EE0: @ 0x08078EE0 + push {lr} + ldr r0, _08078F1C + ldrb r0, [r0] + cmp r0, #0 + beq _08078F2C + bl sub_08076BC4 + cmp r0, #0 + beq _08078F4E + bl sub_08079AD4 + cmp r0, #0 + bne _08078F4E + ldr r0, _08078F20 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _08078F24 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + bl sub_0800DB50 + ldr r0, _08078F28 + bl sub_08000540 + b _08078F4E + .align 2, 0 +_08078F1C: .4byte gUnknown_300319C +_08078F20: .4byte gUnknown_2031E28 +_08078F24: .4byte gUnknown_2031F3C +_08078F28: .4byte sub_08085AA8 +_08078F2C: + ldr r0, _08078F54 + ldrb r0, [r0] + cmp r0, #0 + bne _08078F4E + ldr r0, _08078F58 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _08078F5C + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _08078F60 + bl sub_08000540 +_08078F4E: + pop {r0} + bx r0 + .align 2, 0 +_08078F54: .4byte gUnknown_30031C4 +_08078F58: .4byte gUnknown_2031E28 +_08078F5C: .4byte gUnknown_2031F3C +_08078F60: .4byte sub_08085AA8 + thumb_func_end sub_08078EE0 + + thumb_func_start sub_08078F64 +sub_08078F64: @ 0x08078F64 + push {lr} + movs r0, #0 + bl sub_0800FF8C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08078F88 + bl sub_08079AD4 + cmp r0, #0 + bne _08078F88 + bl sub_0800A8D4 + ldr r0, _08078F8C + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0xd + strb r1, [r0] +_08078F88: + pop {r0} + bx r0 + .align 2, 0 +_08078F8C: .4byte gUnknown_2031F3C + thumb_func_end sub_08078F64 + + thumb_func_start sub_08078F90 +sub_08078F90: @ 0x08078F90 + push {lr} + ldr r0, _08078FB4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08078FB0 + ldr r0, _08078FB8 + movs r1, #0 + bl sub_080785F4 + ldr r0, _08078FBC + ldr r0, [r0] + adds r0, #0x6f + movs r1, #0x64 + strb r1, [r0] +_08078FB0: + pop {r0} + bx r0 + .align 2, 0 +_08078FB4: .4byte gUnknown_3002360 +_08078FB8: .4byte 0x0000BBCC +_08078FBC: .4byte gUnknown_2031F3C + thumb_func_end sub_08078F90 + + thumb_func_start sub_08078FC0 +sub_08078FC0: @ 0x08078FC0 + push {lr} + ldr r0, _08078FD8 + ldr r0, [r0] + adds r0, #0x6f + ldrb r0, [r0] + cmp r0, #0x11 + bhi _0807908C + lsls r0, r0, #2 + ldr r1, _08078FDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078FD8: .4byte gUnknown_2031F3C +_08078FDC: .4byte _08078FE0 +_08078FE0: @ jump table + .4byte _08079028 @ case 0 + .4byte _0807902E @ case 1 + .4byte _08079034 @ case 2 + .4byte _0807903A @ case 3 + .4byte _08079040 @ case 4 + .4byte _0807908C @ case 5 + .4byte _08079046 @ case 6 + .4byte _0807904C @ case 7 + .4byte _08079052 @ case 8 + .4byte _08079058 @ case 9 + .4byte _0807905E @ case 10 + .4byte _08079064 @ case 11 + .4byte _0807906A @ case 12 + .4byte _08079070 @ case 13 + .4byte _08079076 @ case 14 + .4byte _0807907C @ case 15 + .4byte _08079082 @ case 16 + .4byte _08079088 @ case 17 +_08079028: + bl sub_080787A0 + b _0807908C +_0807902E: + bl sub_08078958 + b _0807908C +_08079034: + bl sub_08078A64 + b _0807908C +_0807903A: + bl sub_08078C20 + b _0807908C +_08079040: + bl sub_08078CEC + b _0807908C +_08079046: + bl sub_08078D64 + b _0807908C +_0807904C: + bl sub_08078DA0 + b _0807908C +_08079052: + bl sub_08078E1C + b _0807908C +_08079058: + bl sub_08077AF8 + b _0807908C +_0807905E: + bl sub_08077B34 + b _0807908C +_08079064: + bl sub_08078EA4 + b _0807908C +_0807906A: + bl sub_08078EE0 + b _0807908C +_08079070: + bl sub_08077B90 + b _0807908C +_08079076: + bl sub_08078DCC + b _0807908C +_0807907C: + bl sub_08078A3C + b _0807908C +_08079082: + bl sub_08078F64 + b _0807908C +_08079088: + bl sub_08078F90 +_0807908C: + pop {r0} + bx r0 + thumb_func_end sub_08078FC0 + + thumb_func_start sub_08079090 +sub_08079090: @ 0x08079090 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, _080790C4 + ldr r0, [r3] + adds r0, #0x74 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _080790BC + movs r0, #1 + strb r0, [r1] + ldr r0, [r3] + adds r0, #0x76 + adds r0, r0, r2 + strb r4, [r0] +_080790BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080790C4: .4byte gUnknown_2031F3C + thumb_func_end sub_08079090 + + thumb_func_start sub_080790C8 +sub_080790C8: @ 0x080790C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x5c + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08079114 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0x76 + adds r0, r0, r7 + ldrb r0, [r0] + movs r1, #1 + str r1, [sp, #0x50] + cmp r0, #5 + bhi _080790F0 + movs r2, #0 + str r2, [sp, #0x50] +_080790F0: + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + adds r0, r4, #0 + adds r0, #0x74 + adds r3, r0, r7 + ldrb r0, [r3] + cmp r0, #2 + bne _0807910A + b _080792A0 +_0807910A: + cmp r0, #2 + bgt _08079118 + cmp r0, #1 + beq _08079126 + b _08079454 + .align 2, 0 +_08079114: .4byte gUnknown_2031F3C +_08079118: + cmp r0, #3 + bne _0807911E + b _080792D8 +_0807911E: + cmp r0, #4 + bne _08079124 + b _0807941C +_08079124: + b _08079454 +_08079126: + movs r5, #0 + adds r1, r4, #0 + adds r1, #0x36 + adds r1, r1, r7 + ldr r0, [sp, #0x50] + lsls r0, r0, #1 + mov r8, r0 + lsls r6, r7, #1 + lsls r2, r7, #4 + str r2, [sp, #0x58] + movs r0, #0 + ldrb r1, [r1] + cmp r0, r1 + bhs _0807917C + ldr r0, _0807928C + mov sb, r0 + ldr r4, _08079290 + ldr r0, [sp, #0x50] + add r0, r8 + lsls r2, r0, #1 + movs r3, #4 +_08079150: + ldr r0, [r4] + adds r1, r5, r2 + adds r0, #0x28 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r4] + adds r0, #0x36 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r5, r0 + blo _08079150 +_0807917C: + movs r5, #0 + adds r0, r6, r7 + lsls r0, r0, #1 + adds r4, r0, #2 +_08079184: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003774 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08079184 + ldr r1, _08079290 + mov sb, r1 + ldr r0, [r1] + ldr r6, [sp, #0x50] + add r6, r8 + lsls r3, r6, #1 + add sl, r3 + adds r0, #0x28 + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _0807928C + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + mov r0, sb + ldr r4, [r0] + adds r4, #0x28 + add r4, sl + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807928C + adds r0, r0, r1 + movs r1, #0x14 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0807928C + adds r2, r2, r0 + ldr r5, _08079294 + lsls r6, r6, #2 + adds r0, r6, r5 + ldrb r0, [r0] + adds r3, #1 + lsls r3, r3, #1 + adds r3, r3, r5 + ldrb r1, [r3] + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #3 + adds r0, #0xe + strh r0, [r2, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _0807928C + adds r1, r1, r2 + adds r5, #1 + adds r6, r6, r5 + ldrb r0, [r6] + lsls r0, r0, #3 + subs r0, #0xc + strh r0, [r1, #0x36] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08079298 + bl sub_080A5B9C + mov r0, sb + ldr r1, [r0] + adds r1, #0x74 + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r1, sb + ldr r0, [r1] + adds r0, #0x28 + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _0807928C + adds r0, r0, r2 + bl sub_080A66B4 + ldr r1, _0807929C + ldr r0, [sp, #0x58] + subs r2, r0, r7 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0xf + str r0, [sp] + movs r0, #0x11 + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0 + bl sub_080023B4 + movs r0, #1 + bl sub_08002248 + movs r0, #0 + bl sub_08002248 + ldr r1, [sp, #0x50] + cmp r1, #0 + beq _08079284 + b _08079454 +_08079284: + bl sub_080799AC + b _08079454 + .align 2, 0 +_0807928C: .4byte gUnknown_20205AC +_08079290: .4byte gUnknown_2031F3C +_08079294: .4byte gUnknown_8300A1C +_08079298: .4byte sub_080D28B4 +_0807929C: .4byte gUnknown_82FEDCA +_080792A0: + ldr r2, _080792D0 + ldr r1, [sp, #0x50] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sl + adds r1, r4, #0 + adds r1, #0x28 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _080792D4 + cmp r1, r0 + beq _080792C8 + b _08079454 +_080792C8: + movs r0, #3 + strb r0, [r3] + b _08079454 + .align 2, 0 +_080792D0: .4byte gUnknown_20205AC +_080792D4: .4byte sub_080D28B4 +_080792D8: + ldr r1, _08079404 + ldr r0, [sp, #0x50] + lsls r2, r0, #4 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0xf + str r0, [sp] + movs r0, #0x11 + str r0, [sp, #4] + movs r0, #0 + mov sb, r0 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0 + bl sub_080023B4 + movs r0, #1 + bl sub_08002248 + ldr r6, _08079408 + ldr r1, _0807940C + ldr r4, [r1] + ldr r2, [sp, #0x50] + lsls r3, r2, #1 + adds r3, r3, r2 + lsls r1, r3, #1 + mov r2, sl + adds r0, r2, r1 + adds r4, #0x28 + adds r4, r4, r0 + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldr r5, _08079410 + lsls r3, r3, #2 + adds r0, r3, r5 + ldrb r0, [r0] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrb r1, [r1] + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #3 + adds r0, #0xe + strh r0, [r2, #0x20] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r5, #1 + adds r3, r3, r5 + ldrb r0, [r3] + lsls r0, r0, #3 + subs r0, #0xc + strh r0, [r1, #0x22] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sb + strh r1, [r0, #0x24] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r2, sb + strh r2, [r0, #0x26] + add r0, sp, #0x14 + ldr r1, [sp, #0x50] + mov r2, sl + bl sub_0807946C + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r4, r7, #1 + adds r5, r4, #0 + adds r5, #0xe + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _08079414 + str r6, [sp] + mov r0, sb + str r0, [sp, #4] + add r1, sp, #0x14 + str r1, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199AFC + mov r2, sp + adds r2, #0x28 + str r2, [sp, #0x54] + adds r0, r2, #0 + ldr r1, [sp, #0x50] + mov r2, sl + bl sub_08079564 + adds r4, #0xf + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r6, [sp] + mov r0, sb + str r0, [sp, #4] + ldr r0, _08079418 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199AFC + mov r1, sb + str r1, [sp] + str r1, [sp, #4] + str r6, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [sp, #0x54] + str r2, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x18 + movs r3, #0 + bl sub_08199B84 + adds r0, r5, #0 + bl sub_0800365C + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _0807940C + ldr r1, [r0] + b _0807944A + .align 2, 0 +_08079404: .4byte gUnknown_82FEBCC +_08079408: .4byte gUnknown_20205AC +_0807940C: .4byte gUnknown_2031F3C +_08079410: .4byte gUnknown_8300A1C +_08079414: .4byte gUnknown_8300C00 +_08079418: .4byte gUnknown_8300A9B +_0807941C: + ldr r0, _08079464 + lsls r1, r7, #1 + adds r4, r1, r0 + ldrb r2, [r4] + adds r2, #4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, #1 + adds r1, r1, r0 + ldrb r3, [r1] + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r4] + str r0, [sp] + ldrb r0, [r1] + str r0, [sp, #4] + adds r0, r7, #0 + mov r1, sl + bl sub_08079740 + ldr r2, _08079468 + ldr r1, [r2] +_0807944A: + adds r1, #0x74 + adds r1, r1, r7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08079454: + add sp, #0x5c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08079464: .4byte gUnknown_8300D40 +_08079468: .4byte gUnknown_2031F3C + thumb_func_end sub_080790C8 + + thumb_func_start sub_0807946C +sub_0807946C: @ 0x0807946C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + cmp r7, #0 + bne _08079494 + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08079490 + b _0807949C + .align 2, 0 +_08079490: .4byte gUnknown_2024190 +_08079494: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _0807952C +_0807949C: + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + adds r0, r5, #0 + mov r1, sp + bl sub_08008828 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08079530 + mov sl, r0 + ldr r4, [r0] + adds r0, r6, #0 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r7, #1 + adds r1, r1, r7 + lsls r1, r1, #1 + adds r6, r0, r1 + adds r4, #0x51 + adds r4, r4, r6 + ldrb r0, [r4] + cmp r0, #0 + bne _080794F6 + adds r0, r5, #0 + mov r1, r8 + bl sub_08070970 +_080794F6: + ldr r1, _08079534 + adds r0, r5, #0 + bl sub_080088D8 + mov r1, sl + ldr r0, [r1] + adds r0, #0x51 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + bne _0807953C + ldr r1, _08079538 + adds r0, r5, #0 + bl sub_080088D8 + mov r0, sp + mov r1, sb + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r5, #0 + mov r1, sp + bl sub_080088D8 + b _08079544 + .align 2, 0 +_0807952C: .4byte gUnknown_20243E8 +_08079530: .4byte gUnknown_2031F3C +_08079534: .4byte gUnknown_8300AA0 +_08079538: .4byte gUnknown_8300AA2 +_0807953C: + ldr r1, _08079560 + adds r0, r5, #0 + bl sub_080088D8 +_08079544: + adds r0, r5, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08079560: .4byte gUnknown_8300AA5 + thumb_func_end sub_0807946C + + thumb_func_start sub_08079564 +sub_08079564: @ 0x08079564 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080795AC + ldr r1, [r0] + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #1 + adds r0, r2, r0 + adds r1, #0x51 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _0807961C + movs r4, #0 + movs r0, #0x64 + adds r5, r2, #0 + muls r5, r0, r5 + ldr r0, _080795B0 + mov sb, r0 + ldr r2, _080795B4 + mov r8, r2 +_0807959E: + cmp r7, #0 + bne _080795B8 + adds r1, r4, #0 + adds r1, #0xd + mov r2, sb + b _080795BE + .align 2, 0 +_080795AC: .4byte gUnknown_2031F3C +_080795B0: .4byte gUnknown_2024190 +_080795B4: .4byte gUnknown_20243E8 +_080795B8: + adds r1, r4, #0 + adds r1, #0xd + mov r2, r8 +_080795BE: + adds r0, r5, r2 + movs r2, #0 + bl sub_0806A058 + lsls r1, r4, #1 + add r1, sp + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _0807959E + ldr r1, _08079610 + adds r0, r6, #0 + bl sub_080088B8 + movs r4, #0 +_080795E0: + lsls r0, r4, #1 + mov r2, sp + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _080795FA + adds r1, r0, #0 + lsls r1, r1, #3 + ldr r0, _08079614 + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_080088D8 +_080795FA: + adds r0, r6, #0 + ldr r1, _08079618 + bl sub_080088D8 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080795E0 + b _0807962C + .align 2, 0 +_08079610: .4byte gUnknown_8300A8A +_08079614: .4byte gUnknown_82EACC4 +_08079618: .4byte gUnknown_8300A9E +_0807961C: + ldr r1, _0807963C + adds r0, r6, #0 + bl sub_080088B8 + ldr r1, _08079640 + adds r0, r6, #0 + bl sub_080088D8 +_0807962C: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807963C: .4byte gUnknown_8300A8A +_08079640: .4byte gUnknown_8300AA9 + thumb_func_end sub_08079564 + + thumb_func_start sub_08079644 +sub_08079644: @ 0x08079644 + push {r4, lr} + sub sp, #0xc + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, #2 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r4, r4, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0807968C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r2, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199AFC + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807968C: .4byte gUnknown_8300C00 + thumb_func_end sub_08079644 + + thumb_func_start sub_08079690 +sub_08079690: @ 0x08079690 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08079734 + mov sl, r0 + cmp r5, #0 + bne _080796AC + ldr r1, _08079738 + mov sl, r1 +_080796AC: + movs r6, #0 + ldr r1, _0807973C + ldr r0, [r1] + adds r0, #0x36 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r6, r0 + bhs _08079724 + add r7, sp, #0x14 + mov r8, r1 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #1 + mov sb, r0 +_080796C8: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + add r4, sl + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + adds r0, r7, #0 + mov r1, sp + bl sub_08008828 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + mov r3, r8 + ldr r0, [r3] + mov r3, sb + adds r1, r6, r3 + adds r0, #0x51 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08079706 + adds r0, r7, #0 + adds r1, r2, #0 + bl sub_08070970 +_08079706: + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_08079644 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r1, r8 + ldr r0, [r1] + adds r0, #0x36 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r6, r0 + blo _080796C8 +_08079724: + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08079734: .4byte gUnknown_20243E8 +_08079738: .4byte gUnknown_2024190 +_0807973C: .4byte gUnknown_2031F3C + thumb_func_end sub_08079690 + + thumb_func_start sub_08079740 +sub_08079740: @ 0x08079740 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0xc] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _0807979C + movs r0, #6 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080023B4 + movs r0, #1 + bl sub_08002248 + cmp r7, #0 + bne _080797A4 + movs r0, #0x64 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r1, _080797A0 + b _080797AE + .align 2, 0 +_0807979C: .4byte gUnknown_82FFFC8 +_080797A0: .4byte gUnknown_2024190 +_080797A4: + movs r0, #0x64 + mov r3, r8 + muls r3, r0, r3 + adds r0, r3, #0 + ldr r1, _08079824 +_080797AE: + adds r0, r0, r1 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08079828 + mov sl, r0 + ldr r4, [r0] + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #1 + add r0, r8 + adds r1, r4, #0 + adds r1, #0x51 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _0807982C + adds r0, r6, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, [sp, #0xc] + lsls r2, r1, #5 + cmp r5, #0 + beq _080797FE + mov r3, sb + adds r0, r3, r2 + lsls r0, r0, #1 + movs r3, #0x8f + lsls r3, r3, #4 + adds r1, r4, r3 + adds r1, r1, r0 + adds r0, r5, #0 + adds r0, #0x60 + strh r0, [r1] +_080797FE: + mov r0, sl + ldr r4, [r0] + mov r1, sb + adds r0, r1, r2 + adds r0, #1 + lsls r0, r0, #1 + movs r3, #0x8f + lsls r3, r3, #4 + adds r4, r4, r3 + adds r4, r4, r0 + adds r0, r6, #0 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x70 + strh r0, [r4] + b _0807986A + .align 2, 0 +_08079824: .4byte gUnknown_20243E8 +_08079828: .4byte gUnknown_2031F3C +_0807982C: + ldr r1, [sp, #0xc] + lsls r0, r1, #5 + mov r1, sb + adds r3, r1, r0 + adds r1, r3, #0 + subs r1, #0x20 + lsls r1, r1, #1 + movs r0, #0x8f + lsls r0, r0, #4 + adds r2, r4, r0 + adds r1, r2, r1 + adds r0, r3, #0 + subs r0, #0x21 + lsls r0, r0, #1 + adds r0, r2, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, r3, #0 + subs r1, #0x1f + lsls r1, r1, #1 + adds r1, r2, r1 + adds r0, r3, #0 + subs r0, #0x24 + lsls r0, r0, #1 + adds r2, r2, r0 + ldrh r2, [r2] + movs r3, #0x80 + lsls r3, r3, #3 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] +_0807986A: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08079740 + + thumb_func_start sub_0807987C +sub_0807987C: @ 0x0807987C + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r7, #0 + ldr r0, _080798D4 + ldr r0, [r0] + adds r0, #0x36 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r7, r0 + bge _080798CC + lsls r0, r6, #1 + adds r0, r0, r6 + ldr r1, _080798D8 + lsls r0, r0, #2 + adds r5, r0, r1 + ldr r1, _080798DC + adds r4, r0, r1 +_080798A2: + lsls r1, r7, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r5] + ldrb r3, [r5, #1] + ldrb r0, [r4] + str r0, [sp] + ldrb r0, [r4, #1] + str r0, [sp, #4] + adds r0, r6, #0 + bl sub_08079740 + adds r5, #2 + adds r4, #2 + adds r7, #1 + ldr r0, _080798D4 + ldr r0, [r0] + adds r0, #0x36 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r7, r0 + blt _080798A2 +_080798CC: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080798D4: .4byte gUnknown_2031F3C +_080798D8: .4byte gUnknown_8300A36 +_080798DC: .4byte gUnknown_8300A4E + thumb_func_end sub_0807987C + + thumb_func_start sub_080798E0 +sub_080798E0: @ 0x080798E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + movs r7, #0 + ldr r3, _080799A0 + ldr r0, [r3] + adds r0, #0x36 + add r0, ip + ldrb r0, [r0] + cmp r7, r0 + bge _08079992 + ldr r6, _080799A4 + mov sb, r3 + mov r1, ip + lsls r0, r1, #1 + add r0, ip + lsls r2, r0, #1 + mov sl, r2 + ldr r1, _080799A8 + movs r2, #0 + mov r8, r2 + lsls r0, r0, #2 + adds r5, r0, r1 +_08079918: + mov r1, sb + ldr r0, [r1] + mov r2, sl + adds r4, r7, r2 + adds r0, #0x28 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + mov r0, sb + ldr r3, [r0] + adds r2, r3, #0 + adds r2, #0x28 + adds r2, r2, r4 + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r5] + lsls r0, r0, #3 + adds r0, #0xe + strh r0, [r1, #0x20] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r5, #1] + lsls r0, r0, #3 + subs r0, #0xc + strh r0, [r1, #0x22] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, r8 + strh r1, [r0, #0x24] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r2, r8 + strh r2, [r0, #0x26] + adds r5, #2 + adds r7, #1 + adds r3, #0x36 + add r3, ip + ldrb r3, [r3] + cmp r7, r3 + blt _08079918 +_08079992: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080799A0: .4byte gUnknown_2031F3C +_080799A4: .4byte gUnknown_20205AC +_080799A8: .4byte gUnknown_8300A1C + thumb_func_end sub_080798E0 + + thumb_func_start sub_080799AC +sub_080799AC: @ 0x080799AC + push {lr} + movs r0, #1 + bl sub_08098504 + movs r0, #1 + bl sub_08079690 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080799AC + + thumb_func_start sub_080799C0 +sub_080799C0: @ 0x080799C0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08079A28 + lsls r2, r4, #4 + subs r2, r2, r4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0xf + str r0, [sp] + movs r0, #0x11 + str r0, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + movs r0, #1 + movs r3, #0 + bl sub_080023B4 + movs r0, #1 + bl sub_08002248 + adds r0, r4, #0 + bl sub_0807987C + adds r0, r4, #0 + bl sub_08079690 + adds r0, r4, #0 + bl sub_080798E0 + ldr r0, _08079A2C + ldr r0, [r0, #4] + ldr r5, _08079A30 + ldr r1, [r5] + adds r1, #0x72 + ldrh r1, [r1] + lsls r1, r1, #5 + ldr r2, _08079A34 + adds r1, r1, r2 + movs r2, #0x18 + bl sub_08079D3C + ldr r0, [r5] + adds r0, #0x74 + adds r0, r0, r4 + strb r6, [r0] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08079A28: .4byte gUnknown_82FEDCA +_08079A2C: .4byte gUnknown_8300AFC +_08079A30: .4byte gUnknown_2031F3C +_08079A34: .4byte 0x06010000 + thumb_func_end sub_080799C0 + + thumb_func_start sub_08079A38 +sub_08079A38: @ 0x08079A38 + push {lr} + sub sp, #8 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_08079A38 + + thumb_func_start sub_08079A5C +sub_08079A5C: @ 0x08079A5C + push {lr} + sub sp, #8 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_08079A5C + + thumb_func_start sub_08079A80 +sub_08079A80: @ 0x08079A80 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r3, #0 + ldr r4, _08079AC0 + mov ip, r4 + movs r7, #0x8d + lsls r7, r7, #4 +_08079A94: + mov r1, ip + ldr r0, [r1] + lsls r1, r3, #3 + adds r2, r0, r1 + adds r0, r2, r7 + ldrb r0, [r0] + cmp r0, #0 + bne _08079AC8 + ldr r3, _08079AC4 + adds r0, r2, r3 + strh r5, [r0] + adds r3, #2 + adds r0, r2, r3 + strb r6, [r0] + ldr r0, [r4] + adds r0, r0, r1 + movs r1, #0x8d + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + b _08079ACE + .align 2, 0 +_08079AC0: .4byte gUnknown_2031F3C +_08079AC4: .4byte 0x000008D2 +_08079AC8: + adds r3, #1 + cmp r3, #3 + ble _08079A94 +_08079ACE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08079A80 + + thumb_func_start sub_08079AD4 +sub_08079AD4: @ 0x08079AD4 + push {lr} + movs r3, #0 + ldr r0, _08079AF8 + ldr r0, [r0] + movs r2, #0x8d + lsls r2, r2, #4 + adds r1, r0, r2 + movs r2, #3 +_08079AE4: + ldrb r0, [r1] + adds r3, r3, r0 + adds r1, #8 + subs r2, #1 + cmp r2, #0 + bge _08079AE4 + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_08079AF8: .4byte gUnknown_2031F3C + thumb_func_end sub_08079AD4 + + thumb_func_start sub_08079AFC +sub_08079AFC: @ 0x08079AFC + push {r4, r5, lr} + movs r4, #0 + ldr r3, _08079B28 +_08079B02: + ldr r0, [r3] + lsls r1, r4, #3 + adds r2, r0, r1 + movs r5, #0x8d + lsls r5, r5, #4 + adds r0, r2, r5 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #0 + beq _08079BC4 + ldr r0, _08079B2C + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _08079B30 + subs r0, #1 + strh r0, [r1] + b _08079BC4 + .align 2, 0 +_08079B28: .4byte gUnknown_2031F3C +_08079B2C: .4byte 0x000008D2 +_08079B30: + ldr r1, _08079B44 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #8 + bhi _08079BB2 + lsls r0, r0, #2 + ldr r1, _08079B48 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08079B44: .4byte 0x000008D4 +_08079B48: .4byte _08079B4C +_08079B4C: @ jump table + .4byte _08079B70 @ case 0 + .4byte _08079B84 @ case 1 + .4byte _08079B8C @ case 2 + .4byte _08079B94 @ case 3 + .4byte _08079B94 @ case 4 + .4byte _08079B94 @ case 5 + .4byte _08079B9C @ case 6 + .4byte _08079BA4 @ case 7 + .4byte _08079BAC @ case 8 +_08079B70: + ldr r0, _08079B80 + ldr r0, [r0] + adds r0, #0x80 + movs r1, #0x14 + bl sub_08076B78 + b _08079BB2 + .align 2, 0 +_08079B80: .4byte gUnknown_2031F3C +_08079B84: + movs r0, #0 + bl sub_08079BD4 + b _08079BB2 +_08079B8C: + movs r0, #2 + bl sub_08079BD4 + b _08079BB2 +_08079B94: + movs r0, #3 + bl sub_08079BD4 + b _08079BB2 +_08079B9C: + movs r0, #6 + bl sub_08079BD4 + b _08079BB2 +_08079BA4: + movs r0, #7 + bl sub_08079BD4 + b _08079BB2 +_08079BAC: + movs r0, #8 + bl sub_08079BD4 +_08079BB2: + ldr r0, _08079BD0 + ldr r1, [r0] + adds r1, r1, r5 + movs r2, #0x8d + lsls r2, r2, #4 + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1] + adds r3, r0, #0 +_08079BC4: + adds r4, #1 + cmp r4, #3 + ble _08079B02 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08079BD0: .4byte gUnknown_2031F3C + thumb_func_end sub_08079AFC + + thumb_func_start sub_08079BD4 +sub_08079BD4: @ 0x08079BD4 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _08079C24 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r2, [r4] + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + movs r1, #0x14 + movs r2, #0xc + bl sub_080981E0 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08079C24: .4byte gUnknown_8300BDC + thumb_func_end sub_08079BD4 + + thumb_func_start sub_08079C28 +sub_08079C28: @ 0x08079C28 + push {r4, lr} + sub sp, #8 + ldr r0, _08079C78 + ldr r1, [r0] + adds r3, r1, #0 + adds r3, #0xa8 + ldrb r1, [r3] + adds r4, r0, #0 + cmp r1, #0xc + bhi _08079C64 + ldr r1, _08079C7C + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp] + ldr r0, _08079C80 + ldr r2, [sp, #4] + ands r2, r0 + movs r0, #0x80 + lsls r0, r0, #1 + orrs r2, r0 + str r2, [sp, #4] + ldrb r1, [r3] + adds r1, #0xc8 + lsls r1, r1, #0x10 + ldr r0, _08079C84 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #4] +_08079C64: + ldr r0, [r4] + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x10 + bhi _08079D30 + lsls r0, r0, #2 + ldr r1, _08079C88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08079C78: .4byte gUnknown_2031F3C +_08079C7C: .4byte gUnknown_2031E2C +_08079C80: .4byte 0xFFFF0000 +_08079C84: .4byte 0x0000FFFF +_08079C88: .4byte _08079C8C +_08079C8C: @ jump table + .4byte _08079CD0 @ case 0 + .4byte _08079CD0 @ case 1 + .4byte _08079CD0 @ case 2 + .4byte _08079CD0 @ case 3 + .4byte _08079CD0 @ case 4 + .4byte _08079CD0 @ case 5 + .4byte _08079CD0 @ case 6 + .4byte _08079CD4 @ case 7 + .4byte _08079CEC @ case 8 + .4byte _08079CEC @ case 9 + .4byte _08079CEC @ case 10 + .4byte _08079CEC @ case 11 + .4byte _08079CEC @ case 12 + .4byte _08079CF0 @ case 13 + .4byte _08079CFC @ case 14 + .4byte _08079D08 @ case 15 + .4byte _08079D24 @ case 16 +_08079CD0: + mov r0, sp + b _08079D0A +_08079CD4: + mov r0, sp + bl sub_08008210 + ldr r1, _08079CE8 + ldr r1, [r1] + adds r2, r1, #0 + adds r2, #0x72 + strh r0, [r2] + b _08079D12 + .align 2, 0 +_08079CE8: .4byte gUnknown_2031F3C +_08079CEC: + mov r0, sp + b _08079D0A +_08079CF0: + ldr r0, _08079CF8 + bl sub_0800845C + b _08079D0E + .align 2, 0 +_08079CF8: .4byte gUnknown_83008DC +_08079CFC: + ldr r0, _08079D04 + bl sub_0800845C + b _08079D0E + .align 2, 0 +_08079D04: .4byte gUnknown_830083C +_08079D08: + ldr r0, _08079D1C +_08079D0A: + bl sub_08008210 +_08079D0E: + ldr r0, _08079D20 + ldr r1, [r0] +_08079D12: + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08079D30 + .align 2, 0 +_08079D1C: .4byte gUnknown_8300834 +_08079D20: .4byte gUnknown_2031F3C +_08079D24: + ldr r0, [r4] + adds r0, #0xa8 + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08079D32 +_08079D30: + movs r0, #0 +_08079D32: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08079C28 + + thumb_func_start sub_08079D3C +sub_08079D3C: @ 0x08079D3C + push {r4, r5, r6, lr} + sub sp, #0x24 + adds r5, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + add r0, sp, #4 + movs r1, #0 + adds r2, r4, #0 + bl sub_08008DE8 + movs r2, #0 + cmp r2, r4 + bge _08079D7C + ldrb r1, [r5] + adds r0, r1, #0 + cmp r0, #0xff + beq _08079D7C + add r0, sp, #4 +_08079D62: + strb r1, [r0] + adds r2, #1 + cmp r2, r4 + bge _08079D7C + adds r0, r5, r2 + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0xff + beq _08079D7C + mov r0, sp + adds r0, r0, r2 + adds r0, #4 + b _08079D62 +_08079D7C: + ldr r0, _08079D94 + str r0, [sp] + add r0, sp, #4 + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + add sp, #0x24 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08079D94: .4byte gUnknown_201C000 + thumb_func_end sub_08079D3C + + thumb_func_start sub_08079D98 +sub_08079D98: @ 0x08079D98 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0 + beq _08079DB0 + cmp r0, #1 + beq _08079E44 + b _08079ED0 +_08079DB0: + movs r7, #0 + ldr r1, _08079DF0 + ldr r0, [r1] + adds r0, #0x36 + ldrb r0, [r0] + cmp r7, r0 + blt _08079DC0 + b _08079ED0 +_08079DC0: + adds r6, r1, #0 + movs r5, #0 + mov sb, r5 +_08079DC6: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _08079DF4 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #1 + bne _08079DF8 + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + mov r2, sb + strb r2, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + b _08079E28 + .align 2, 0 +_08079DF0: .4byte gUnknown_2031F3C +_08079DF4: .4byte gUnknown_2024190 +_08079DF8: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #0 + bne _08079E16 + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + strb r1, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + b _08079E28 +_08079E16: + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + mov r1, sb +_08079E28: + strb r1, [r0] + ldr r0, _08079E40 + adds r5, #1 + adds r7, #1 + ldr r0, [r0] + adds r0, #0x36 + add r0, r8 + ldrb r0, [r0] + cmp r7, r0 + blt _08079DC6 + b _08079ED0 + .align 2, 0 +_08079E40: .4byte gUnknown_2031F3C +_08079E44: + movs r7, #0 + ldr r1, _08079E84 + ldr r0, [r1] + adds r0, #0x37 + ldrb r0, [r0] + cmp r7, r0 + bge _08079ED0 + adds r6, r1, #0 + movs r5, #6 + movs r2, #0 + mov sb, r2 +_08079E5A: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _08079E88 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #1 + bne _08079E8C + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + mov r2, sb + strb r2, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + b _08079EBC + .align 2, 0 +_08079E84: .4byte gUnknown_2031F3C +_08079E88: .4byte gUnknown_20243E8 +_08079E8C: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #0 + bne _08079EAA + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + strb r1, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + b _08079EBC +_08079EAA: + ldr r0, [r6] + adds r0, #0x45 + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0] + ldr r0, [r6] + adds r0, #0x51 + adds r0, r0, r5 + mov r1, sb +_08079EBC: + strb r1, [r0] + ldr r0, _08079EDC + adds r5, #1 + adds r7, #1 + ldr r0, [r0] + adds r0, #0x36 + add r0, r8 + ldrb r0, [r0] + cmp r7, r0 + blt _08079E5A +_08079ED0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08079EDC: .4byte gUnknown_2031F3C + thumb_func_end sub_08079D98 + + thumb_func_start sub_08079EE0 +sub_08079EE0: @ 0x08079EE0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08079EF0 + cmp r0, #1 + beq _08079F50 + b _08079FA4 +_08079EF0: + movs r6, #0 + ldr r1, _08079F48 + ldr r0, [r1] + adds r0, #0x36 + ldrb r0, [r0] + cmp r6, r0 + bhs _08079FA4 + adds r7, r1, #0 +_08079F00: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08079F4C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08074BF0 + ldr r1, [r7] + adds r1, #0x5d + adds r1, r1, r6 + strb r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r7] + adds r0, #0x36 + ldrb r0, [r0] + cmp r6, r0 + blo _08079F00 + b _08079FA4 + .align 2, 0 +_08079F48: .4byte gUnknown_2031F3C +_08079F4C: .4byte gUnknown_2024190 +_08079F50: + movs r6, #0 + ldr r1, _08079FAC + ldr r0, [r1] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + bhs _08079FA4 + adds r7, r1, #0 +_08079F60: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08079FB0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08074BF0 + ldr r1, [r7] + adds r1, #0x63 + adds r1, r1, r6 + strb r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r7] + adds r0, #0x37 + ldrb r0, [r0] + cmp r6, r0 + blo _08079F60 +_08079FA4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08079FAC: .4byte gUnknown_2031F3C +_08079FB0: .4byte gUnknown_20243E8 + thumb_func_end sub_08079EE0 + + thumb_func_start sub_08079FB4 +sub_08079FB4: @ 0x08079FB4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r5, #0 +_08079FBC: + movs r4, #0 + ldr r2, _0807A020 + ldr r0, [r2] + adds r0, #0x36 + adds r0, r0, r5 + adds r1, r5, #1 + mov r8, r1 + ldrb r0, [r0] + cmp r4, r0 + bge _0807A00E + adds r6, r2, #0 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r7, r0, #1 +_08079FD8: + ldr r2, [r6] + adds r3, r4, r7 + adds r0, r2, #0 + adds r0, #0x28 + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807A024 + adds r0, r0, r1 + adds r2, #0x5d + adds r2, r2, r3 + ldrb r2, [r2] + movs r1, #4 + subs r1, r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080D2B68 + adds r4, #1 + ldr r0, [r6] + adds r0, #0x36 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r4, r0 + blt _08079FD8 +_0807A00E: + mov r5, r8 + cmp r5, #1 + ble _08079FBC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A020: .4byte gUnknown_2031F3C +_0807A024: .4byte gUnknown_20205AC + thumb_func_end sub_08079FB4 + + thumb_func_start sub_0807A028 +sub_0807A028: @ 0x0807A028 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _0807A058 + ldr r4, _0807A05C + ldr r3, _0807A060 +_0807A032: + ldr r0, [r5] + adds r0, r0, r4 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _0807A04C + ldr r0, [r3] + adds r0, #0xa9 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0807A04C + strb r0, [r1] +_0807A04C: + adds r2, #1 + cmp r2, #0xa + ble _0807A032 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A058: .4byte gUnknown_3005AEC +_0807A05C: .4byte 0x000031A8 +_0807A060: .4byte gUnknown_2031F3C + thumb_func_end sub_0807A028 + + thumb_func_start sub_0807A064 +sub_0807A064: @ 0x0807A064 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x30 + mov r8, r0 + adds r7, r1, #0 + mov sb, r2 + movs r5, #0 + cmp r5, r7 + bge _0807A09E + mov r6, sp +_0807A07C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + add r4, r8 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + str r0, [r6, #0x18] + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + stm r6!, {r0} + adds r5, #1 + cmp r5, r7 + blt _0807A07C +_0807A09E: + bl sub_0809CD04 + mov r1, sb + lsls r4, r1, #2 + cmp r0, #0 + bne _0807A0CC + add r0, sp, #0x18 + adds r0, r0, r4 + ldr r1, [r0] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _0807A0BC + movs r0, #3 + b _0807A188 +_0807A0BC: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806DE8C + cmp r0, #0 + bne _0807A0CC + movs r0, #2 + b _0807A188 +_0807A0CC: + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0807A10C + adds r1, r1, r0 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _0807A11C + ldrb r1, [r1, #0x10] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0807A11C + add r0, sp, #0x18 + adds r0, r0, r4 + ldr r1, [r0] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _0807A110 + movs r0, #5 + b _0807A188 + .align 2, 0 +_0807A10C: .4byte gUnknown_20226A0 +_0807A110: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806DE8C + cmp r0, #0 + beq _0807A142 +_0807A11C: + mov r1, sp + adds r0, r1, r4 + ldr r1, [r0] + movs r0, #0xcd + lsls r0, r0, #1 + cmp r1, r0 + beq _0807A12E + cmp r1, #0x97 + bne _0807A146 +_0807A12E: + movs r0, #0x64 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + movs r1, #0x50 + bl sub_0806A058 + cmp r0, #0 + bne _0807A146 +_0807A142: + movs r0, #4 + b _0807A188 +_0807A146: + cmp r7, #0 + ble _0807A164 + movs r3, #0xce + lsls r3, r3, #1 + movs r2, #0 + add r1, sp, #0x18 + adds r5, r7, #0 +_0807A154: + ldr r0, [r1] + cmp r0, r3 + bne _0807A15C + str r2, [r1] +_0807A15C: + adds r1, #4 + subs r5, #1 + cmp r5, #0 + bne _0807A154 +_0807A164: + movs r2, #0 + movs r5, #0 + cmp r2, r7 + bge _0807A17E + add r1, sp, #0x18 +_0807A16E: + cmp r5, sb + beq _0807A176 + ldr r0, [r1] + adds r2, r2, r0 +_0807A176: + adds r1, #4 + adds r5, #1 + cmp r5, r7 + blt _0807A16E +_0807A17E: + cmp r2, #0 + bne _0807A186 + movs r0, #1 + b _0807A188 +_0807A186: + movs r0, #0 +_0807A188: + add sp, #0x30 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0807A064 + + thumb_func_start sub_0807A198 +sub_0807A198: @ 0x0807A198 + push {r4, r5, r6, r7, lr} + ldr r0, _0807A218 + ldrb r0, [r0] + cmp r0, #0 + beq _0807A224 + movs r4, #0 + bl sub_0800A02C + ldr r5, _0807A21C + movs r7, #1 + eors r0, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r1, [r1] + subs r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _0807A224 + subs r0, r1, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _0807A1D2 + movs r4, #2 +_0807A1D2: + cmp r4, #0 + ble _0807A224 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r1, [r1, #0x10] + movs r6, #0xf0 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0807A220 + cmp r4, #2 + bne _0807A224 + bl sub_0800A02C + eors r0, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r1, [r1, #0x10] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0807A224 + movs r0, #2 + b _0807A226 + .align 2, 0 +_0807A218: .4byte gUnknown_30031C4 +_0807A21C: .4byte gUnknown_20226A0 +_0807A220: + movs r0, #1 + b _0807A226 +_0807A224: + movs r0, #0 +_0807A226: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0807A198 + + thumb_func_start sub_0807A22C +sub_0807A22C: @ 0x0807A22C + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0xcd + lsls r0, r0, #1 + cmp r2, r0 + beq _0807A242 + cmp r2, #0x97 + bne _0807A24A +_0807A242: + cmp r1, #0 + bne _0807A24A + movs r0, #1 + b _0807A24C +_0807A24A: + movs r0, #0 +_0807A24C: + pop {r1} + bx r1 + thumb_func_end sub_0807A22C + + thumb_func_start sub_0807A250 +sub_0807A250: @ 0x0807A250 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r6, [sp, #0x28] + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r2, r0, #0x17 + lsrs r2, r2, #0x1f + mov sb, r2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x1f + lsls r0, r1, #0x17 + lsrs r0, r0, #0x1f + mov sl, r0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x1f + lsls r1, r1, #0x12 + lsrs r1, r1, #0x1c + cmp r1, #3 + beq _0807A2A2 + cmp r2, #0 + bne _0807A29A + movs r0, #8 + b _0807A330 +_0807A29A: + cmp r0, #0 + bne _0807A2A2 + movs r0, #9 + b _0807A330 +_0807A2A2: + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0807A22C + cmp r0, #0 + bne _0807A308 + movs r0, #0xce + lsls r0, r0, #1 + cmp r8, r0 + bne _0807A2BE + cmp r7, r8 + beq _0807A2DC + movs r0, #2 + b _0807A330 +_0807A2BE: + ldr r0, _0807A2D8 + lsls r1, r7, #3 + subs r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, r4 + beq _0807A2DC + ldrb r0, [r1, #7] + cmp r0, r4 + beq _0807A2DC + movs r0, #1 + b _0807A330 + .align 2, 0 +_0807A2D8: .4byte gUnknown_82F0D54 +_0807A2DC: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + bne _0807A2EC + cmp r7, r8 + beq _0807A2EC + movs r0, #3 + b _0807A330 +_0807A2EC: + mov r0, sb + cmp r0, #0 + bne _0807A31A + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + bne _0807A2FE + movs r0, #6 + b _0807A330 +_0807A2FE: + adds r0, r7, #0 + bl sub_0806DE8C + cmp r0, #0 + bne _0807A30C +_0807A308: + movs r0, #4 + b _0807A330 +_0807A30C: + mov r0, r8 + bl sub_0806DE8C + cmp r0, #0 + bne _0807A31A + movs r0, #5 + b _0807A330 +_0807A31A: + mov r0, sl + cmp r0, #0 + bne _0807A32E + adds r0, r7, #0 + bl sub_0806DE8C + cmp r0, #0 + bne _0807A32E + movs r0, #7 + b _0807A330 +_0807A32E: + movs r0, #0 +_0807A330: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0807A250 + + thumb_func_start sub_0807A340 +sub_0807A340: @ 0x0807A340 + push {r4, r5, r6, lr} + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r6, r5, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x17 + lsrs r4, r0, #0x1f + adds r0, r2, #0 + adds r1, r3, #0 + bl sub_0807A22C + cmp r0, #0 + bne _0807A37A + cmp r4, #0 + bne _0807A37E + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + bne _0807A370 + movs r0, #2 + b _0807A380 +_0807A370: + adds r0, r6, #0 + bl sub_0806DE8C + cmp r0, #0 + bne _0807A37E +_0807A37A: + movs r0, #1 + b _0807A380 +_0807A37E: + movs r0, #0 +_0807A380: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0807A340 + + thumb_func_start sub_0807A388 +sub_0807A388: @ 0x0807A388 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + movs r5, #0 + ldr r0, _0807A3D4 + ldrb r0, [r0] + cmp r5, r0 + bge _0807A3CA + mov r4, sp +_0807A3A4: + movs r0, #0x64 + muls r0, r5, r0 + adds r0, r6, r0 + movs r1, #0x41 + bl sub_0806A058 + str r0, [r4] + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _0807A3BE + movs r0, #0 + str r0, [r4] +_0807A3BE: + adds r4, #4 + adds r5, #1 + ldr r0, _0807A3D4 + ldrb r0, [r0] + cmp r5, r0 + blt _0807A3A4 +_0807A3CA: + movs r7, #0 + movs r6, #1 + movs r5, #0 + ldr r4, _0807A3D8 + b _0807A3F0 + .align 2, 0 +_0807A3D4: .4byte gUnknown_202418D +_0807A3D8: .4byte gUnknown_20226A0 +_0807A3DC: + ldrb r0, [r4] + subs r0, #4 + cmp r0, #1 + bhi _0807A3E8 + movs r7, #0 + b _0807A3EC +_0807A3E8: + movs r0, #1 + orrs r7, r0 +_0807A3EC: + adds r4, #0x1c + adds r5, #1 +_0807A3F0: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _0807A3DC + movs r5, #0 + movs r4, #0 + b _0807A424 +_0807A402: + ldr r0, _0807A44C + adds r2, r4, r0 + ldrb r1, [r2, #0x10] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0807A412 + movs r6, #0 +_0807A412: + cmp r7, #0 + beq _0807A420 + ldrb r0, [r2, #0x10] + lsrs r0, r0, #4 + cmp r0, #0 + beq _0807A420 + movs r6, #0 +_0807A420: + adds r4, #0x1c + adds r5, #1 +_0807A424: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _0807A402 + cmp r6, #0 + bne _0807A45A + mov r1, r8 + lsls r0, r1, #2 + mov r1, sp + adds r4, r1, r0 + ldrh r0, [r4] + bl sub_0806DE8C + cmp r0, #0 + bne _0807A450 + movs r0, #2 + b _0807A48A + .align 2, 0 +_0807A44C: .4byte gUnknown_20226A0 +_0807A450: + ldr r0, [r4] + cmp r0, #0 + bne _0807A45A + movs r0, #3 + b _0807A48A +_0807A45A: + movs r2, #0 + movs r5, #0 + ldr r0, _0807A484 + ldrb r0, [r0] + cmp r2, r0 + bge _0807A47A + adds r3, r0, #0 + mov r1, sp +_0807A46A: + cmp r8, r5 + beq _0807A472 + ldr r0, [r1] + adds r2, r2, r0 +_0807A472: + adds r1, #4 + adds r5, #1 + cmp r5, r3 + blt _0807A46A +_0807A47A: + cmp r2, #0 + beq _0807A488 + movs r0, #0 + b _0807A48A + .align 2, 0 +_0807A484: .4byte gUnknown_202418D +_0807A488: + movs r0, #1 +_0807A48A: + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0807A388 + + thumb_func_start sub_0807A498 +sub_0807A498: @ 0x0807A498 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _0807A4B4 + movs r0, #0x17 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #0x2e] +_0807A4B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A498 + + thumb_func_start sub_0807A4BC +sub_0807A4BC: @ 0x0807A4BC + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0807A4E6 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _0807A4E6 + movs r0, #0xc2 + bl sub_080A306C + strh r5, [r4, #0x2e] +_0807A4E6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0807A4BC + + thumb_func_start sub_0807A4EC +sub_0807A4EC: @ 0x0807A4EC + push {lr} + adds r2, r0, #0 + movs r0, #0x30 + ldrsh r1, [r2, r0] + cmp r1, #0 + bne _0807A522 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _0807A508 + strh r1, [r2, #0x2e] +_0807A508: + movs r1, #0x2e + ldrsh r0, [r2, r1] + lsls r0, r0, #1 + ldr r1, _0807A528 + adds r0, r0, r1 + ldrb r1, [r2, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + lsls r1, r1, #4 + adds r1, #4 + movs r2, #2 + bl sub_080A1200 +_0807A522: + pop {r0} + bx r0 + .align 2, 0 +_0807A528: .4byte gUnknown_830D0E8 + thumb_func_end sub_0807A4EC + + thumb_func_start sub_0807A52C +sub_0807A52C: @ 0x0807A52C + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + adds r1, #1 + strh r1, [r2, #0x2e] + ldrh r0, [r2, #0x26] + adds r0, #1 + strh r0, [r2, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xa + bne _0807A54A + adds r0, r2, #0 + bl sub_08006E00 +_0807A54A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A52C + + thumb_func_start sub_0807A550 +sub_0807A550: @ 0x0807A550 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + adds r1, #1 + strh r1, [r2, #0x2e] + ldrh r0, [r2, #0x26] + subs r0, #1 + strh r0, [r2, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xa + bne _0807A56E + adds r0, r2, #0 + bl sub_08006E00 +_0807A56E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A550 + + thumb_func_start sub_0807A574 +sub_0807A574: @ 0x0807A574 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bne _0807A590 + movs r0, #0xcc + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #0x2e] +_0807A590: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A574 + + thumb_func_start sub_0807A598 +sub_0807A598: @ 0x0807A598 + push {r4, r5, lr} + sub sp, #0x20 + ldr r0, _0807A624 + ldr r0, [r0] + mov ip, r0 + adds r0, #0xd4 + ldrh r1, [r0] + lsls r1, r1, #8 + adds r0, #2 + ldrh r2, [r0] + lsls r2, r2, #8 + adds r0, #6 + movs r4, #0 + ldrsh r3, [r0, r4] + adds r0, #2 + movs r5, #0 + ldrsh r0, [r0, r5] + str r0, [sp] + mov r4, ip + adds r4, #0xe8 + movs r5, #0 + ldrsh r0, [r4, r5] + str r0, [sp, #4] + movs r5, #0 + ldrsh r0, [r4, r5] + str r0, [sp, #8] + mov r0, ip + adds r0, #0xec + ldrh r0, [r0] + str r0, [sp, #0xc] + add r0, sp, #0x10 + bl sub_0806F144 + add r0, sp, #0x10 + ldrh r1, [r0] + movs r0, #0x20 + bl sub_08001144 + add r0, sp, #0x10 + ldrh r1, [r0, #2] + movs r0, #0x22 + bl sub_08001144 + add r0, sp, #0x10 + ldrh r1, [r0, #4] + movs r0, #0x24 + bl sub_08001144 + add r0, sp, #0x10 + ldrh r1, [r0, #6] + movs r0, #0x26 + bl sub_08001144 + ldr r1, [sp, #0x18] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x28 + bl sub_08001144 + ldr r1, [sp, #0x1c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x2c + bl sub_08001144 + add sp, #0x20 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807A624: .4byte gUnknown_2031F40 + thumb_func_end sub_0807A598 + + thumb_func_start sub_0807A628 +sub_0807A628: @ 0x0807A628 + push {r4, lr} + ldr r4, _0807A670 + ldr r0, [r4] + adds r0, #0xe0 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, [r4] + adds r0, #0xe2 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + movs r0, #0 + bl sub_080011D0 + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + cmp r1, #0 + bne _0807A674 + ldr r0, [r4] + adds r0, #0xe4 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, [r4] + adds r0, #0xe6 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + b _0807A678 + .align 2, 0 +_0807A670: .4byte gUnknown_2031F40 +_0807A674: + bl sub_0807A598 +_0807A678: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A628 + + thumb_func_start sub_0807A680 +sub_0807A680: @ 0x0807A680 + push {lr} + bl sub_0807A628 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807A680 + + thumb_func_start sub_0807A698 +sub_0807A698: @ 0x0807A698 + push {r4, lr} + ldr r3, _0807A6BC + ldr r1, [r3] + movs r0, #0x8a + adds r0, r0, r1 + mov ip, r0 + movs r2, #0 + movs r0, #0 + mov r4, ip + 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 +_0807A6BC: .4byte gUnknown_2031F40 + thumb_func_end sub_0807A698 + + thumb_func_start sub_0807A6C0 +sub_0807A6C0: @ 0x0807A6C0 + push {r4, r5, lr} + ldr r0, _0807A6E4 + 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 _0807A6E8 + adds r1, r2, #0 + adds r1, #0x8a + ldrh r0, [r1] + adds r0, #1 + b _0807A6EE + .align 2, 0 +_0807A6E4: .4byte gUnknown_2031F40 +_0807A6E8: + adds r1, r2, #0 + adds r1, #0x8a + movs r0, #0 +_0807A6EE: + strh r0, [r1] + adds r4, r5, #0 + ldr r0, [r4] + adds r0, #0x8a + ldrh r1, [r0] + movs r0, #0x96 + lsls r0, r0, #1 + cmp r1, r0 + bls _0807A720 + bl sub_08009384 + ldr r0, _0807A734 + bl sub_08000540 + 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] +_0807A720: + 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 +_0807A734: .4byte sub_0800AA0C + thumb_func_end sub_0807A6C0 + + thumb_func_start sub_0807A738 +sub_0807A738: @ 0x0807A738 + push {lr} + ldr r0, _0807A748 + ldrb r0, [r0] + cmp r0, #0 + bne _0807A74C + movs r0, #0 + b _0807A754 + .align 2, 0 +_0807A748: .4byte gUnknown_30031C4 +_0807A74C: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0807A754: + pop {r1} + bx r1 + thumb_func_end sub_0807A738 + + thumb_func_start sub_0807A758 +sub_0807A758: @ 0x0807A758 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r4, #0 + mov r8, r4 + cmp r6, #0 + bne _0807A77E + ldr r0, _0807A7A8 + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0807A7AC + adds r1, r1, r0 + mov r8, r1 + movs r4, #1 +_0807A77E: + cmp r6, #1 + bne _0807A79C + ldr r0, _0807A7A8 + ldrb r0, [r0, #1] + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _0807A7B0 + adds r1, r1, r0 + mov r8, r1 + movs r4, #3 +_0807A79C: + cmp r5, #0 + beq _0807A7B4 + cmp r5, #1 + beq _0807A83C + b _0807A892 + .align 2, 0 +_0807A7A8: .4byte gUnknown_2031F38 +_0807A7AC: .4byte gUnknown_2024190 +_0807A7B0: .4byte gUnknown_20243E8 +_0807A7B4: + mov r0, r8 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, r8 + movs r1, #0 + bl sub_0806A058 + adds r7, r0, #0 + cmp r6, #0 + bne _0807A7F0 + lsls r0, r5, #3 + ldr r1, _0807A7E8 + adds r0, r0, r1 + ldr r1, _0807A7EC + ldr r1, [r1] + ldr r1, [r1, #8] + adds r2, r5, #0 + adds r3, r7, #0 + bl sub_08034954 + movs r4, #0 + b _0807A80E + .align 2, 0 +_0807A7E8: .4byte gUnknown_82DDA1C +_0807A7EC: .4byte gUnknown_2024178 +_0807A7F0: + lsls r0, r5, #3 + ldr r1, _0807A830 + adds r0, r0, r1 + ldr r1, _0807A834 + ldr r2, [r1] + lsls r4, r6, #1 + adds r1, r4, #1 + lsls r1, r1, #2 + adds r2, #4 + adds r2, r2, r1 + ldr r1, [r2] + adds r2, r5, #0 + adds r3, r7, #0 + bl sub_080349A8 +_0807A80E: + mov r0, r8 + bl sub_0806E220 + bl sub_080343E4 + ldr r0, _0807A838 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf0 + adds r0, r0, r4 + strh r5, [r0] + lsls r0, r6, #2 + adds r1, #0x68 + adds r1, r1, r0 + str r7, [r1] + b _0807A892 + .align 2, 0 +_0807A830: .4byte gUnknown_82DDA1C +_0807A834: .4byte gUnknown_2024178 +_0807A838: .4byte gUnknown_2031F40 +_0807A83C: + mov r0, r8 + bl sub_0806E220 + ldrh r0, [r0, #4] + adds r1, r4, #0 + bl sub_08069BA8 + ldr r0, _0807A89C + movs r1, #0x78 + movs r2, #0x3c + movs r3, #6 + bl sub_08006B0C + ldr r4, _0807A8A0 + ldr r1, [r4] + adds r1, #0x8e + adds r1, r1, r6 + strb r0, [r1] + ldr r3, _0807A8A4 + ldr r0, [r4] + adds r0, #0x8e + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x8e + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r1, _0807A8A8 + str r1, [r0] +_0807A892: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807A89C: .4byte gUnknown_2024640 +_0807A8A0: .4byte gUnknown_2031F40 +_0807A8A4: .4byte gUnknown_20205AC +_0807A8A8: .4byte sub_08007140 + thumb_func_end sub_0807A758 + + thumb_func_start sub_0807A8AC +sub_0807A8AC: @ 0x0807A8AC + push {r4, r5, lr} + sub sp, #4 + ldr r1, _0807A8CC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xc + bls _0807A8C2 + b _0807AB72 +_0807A8C2: + lsls r0, r0, #2 + ldr r1, _0807A8D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807A8CC: .4byte gUnknown_3002360 +_0807A8D0: .4byte _0807A8D4 +_0807A8D4: @ jump table + .4byte _0807A908 @ case 0 + .4byte _0807A9B4 @ case 1 + .4byte _0807A9F8 @ case 2 + .4byte _0807AA18 @ case 3 + .4byte _0807AA62 @ case 4 + .4byte _0807AA90 @ case 5 + .4byte _0807AAB4 @ case 6 + .4byte _0807AACC @ case 7 + .4byte _0807AAD6 @ case 8 + .4byte _0807AAF0 @ case 9 + .4byte _0807AB0C @ case 10 + .4byte _0807AB30 @ case 11 + .4byte _0807AB4C @ case 12 +_0807A908: + ldr r0, _0807A99C + ldrb r0, [r0] + cmp r0, #0 + bne _0807A91C + ldr r1, _0807A9A0 + ldr r2, _0807A9A4 + adds r0, r2, #0 + strh r0, [r1] + bl sub_08009384 +_0807A91C: + ldr r4, _0807A9A8 + movs r5, #0x80 + lsls r5, r5, #1 + adds r0, r5, #0 + bl sub_08000BDC + str r0, [r4] + bl sub_0805EBD8 + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + ldr r0, _0807A9AC + bl sub_080006F0 + bl sub_0807ABCC + bl sub_0807A698 + ldr r1, _0807A9B0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x8c + strh r2, [r0] + adds r0, #8 + strh r2, [r0] + adds r1, #0xee + movs r0, #1 + strb r0, [r1] + ldr r3, [r4] + adds r0, r3, #0 + adds r0, #0xd4 + movs r1, #0x40 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + adds r0, #2 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + adds r1, r3, #0 + adds r1, #0xdc + movs r0, #0x78 + strh r0, [r1] + adds r1, #2 + movs r0, #0x50 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0xe8 + strh r5, [r0] + adds r0, #4 + strh r2, [r0] + b _0807AB72 + .align 2, 0 +_0807A99C: .4byte gUnknown_30031C4 +_0807A9A0: .4byte gUnknown_202267E +_0807A9A4: .4byte 0x00001144 +_0807A9A8: .4byte gUnknown_2031F40 +_0807A9AC: .4byte sub_0807A680 +_0807A9B0: .4byte gUnknown_3002360 +_0807A9B4: + ldr r0, _0807A9E0 + ldrb r5, [r0] + cmp r5, #0 + bne _0807A9EC + ldr r4, _0807A9E4 + ldr r0, [r4] + adds r0, #0xfa + movs r1, #1 + strb r1, [r0] + bl sub_080092D0 + ldr r1, _0807A9E8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r4] + str r5, [r0, #0x64] + b _0807AB72 + .align 2, 0 +_0807A9E0: .4byte gUnknown_30031C4 +_0807A9E4: .4byte gUnknown_2031F40 +_0807A9E8: .4byte gUnknown_3002360 +_0807A9EC: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + movs r0, #4 + strb r0, [r1] + b _0807AB72 +_0807A9F8: + ldr r0, _0807AA14 + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x3c + bhi _0807AA08 + b _0807AB72 +_0807AA08: + movs r0, #0 + str r0, [r1, #0x64] + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _0807AB40 + .align 2, 0 +_0807AA14: .4byte gUnknown_2031F40 +_0807AA18: + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807AA24 + b _0807AB38 +_0807AA24: + bl sub_0800A770 + adds r4, r0, #0 + bl sub_0800A60C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + blo _0807AA5C + ldr r0, _0807AA54 + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x1e + bhi _0807AA46 + b _0807AB72 +_0807AA46: + bl sub_0800A1E4 + ldr r1, _0807AA58 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0807AB40 + .align 2, 0 +_0807AA54: .4byte gUnknown_2031F40 +_0807AA58: .4byte gUnknown_3002360 +_0807AA5C: + bl sub_0807A6C0 + b _0807AB72 +_0807AA62: + bl sub_0807A6C0 + ldr r0, _0807AA88 + ldrb r0, [r0] + cmp r0, #1 + beq _0807AA70 + b _0807AB72 +_0807AA70: + bl sub_08009E00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0807AA7E + b _0807AB72 +_0807AA7E: + ldr r1, _0807AA8C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0807AB40 + .align 2, 0 +_0807AA88: .4byte gUnknown_30031C4 +_0807AA8C: .4byte gUnknown_3002360 +_0807AA90: + ldr r2, _0807AAB0 + 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_0807A758 + b _0807AB38 + .align 2, 0 +_0807AAB0: .4byte gUnknown_2031F40 +_0807AAB4: + movs r0, #0 + movs r1, #1 + bl sub_0807A758 + ldr r1, _0807AAC8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0807AB40 + .align 2, 0 +_0807AAC8: .4byte gUnknown_3002360 +_0807AACC: + movs r0, #1 + movs r1, #0 + bl sub_0807A758 + b _0807AB38 +_0807AAD6: + movs r0, #1 + movs r1, #1 + bl sub_0807A758 + bl sub_0807ABB0 + ldr r1, _0807AAEC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0807AB40 + .align 2, 0 +_0807AAEC: .4byte gUnknown_3002360 +_0807AAF0: + bl sub_0807B4CC + ldr r0, _0807AB04 + bl sub_08008210 + ldr r0, _0807AB08 + bl sub_0800845C + b _0807AB38 + .align 2, 0 +_0807AB04: .4byte gUnknown_830CF5C +_0807AB08: .4byte gUnknown_830CF64 +_0807AB0C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + bl sub_08001B48 + ldr r1, _0807AB2C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _0807AB40 + .align 2, 0 +_0807AB2C: .4byte gUnknown_3002360 +_0807AB30: + bl sub_0807AB9C + bl sub_0807B510 +_0807AB38: + ldr r1, _0807AB48 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_0807AB40: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807AB72 + .align 2, 0 +_0807AB48: .4byte gUnknown_3002360 +_0807AB4C: + ldr r0, _0807AB90 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807AB72 + ldr r0, _0807AB94 + ldrb r0, [r0] + cmp r0, #0 + beq _0807AB6C + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 +_0807AB6C: + ldr r0, _0807AB98 + bl sub_08000540 +_0807AB72: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807AB90: .4byte gUnknown_2037C74 +_0807AB94: .4byte gUnknown_300319C +_0807AB98: .4byte sub_0807E464 + thumb_func_end sub_0807A8AC + + thumb_func_start sub_0807AB9C +sub_0807AB9C: @ 0x0807AB9C + push {lr} + movs r0, #5 + bl sub_0807B064 + movs r0, #0 + bl sub_0807B064 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807AB9C + + thumb_func_start sub_0807ABB0 +sub_0807ABB0: @ 0x0807ABB0 + push {lr} + movs r0, #0 + movs r1, #0xff + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + pop {r0} + bx r0 + thumb_func_end sub_0807ABB0 + + thumb_func_start sub_0807ABCC +sub_0807ABCC: @ 0x0807ABCC + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #4 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0807ACB4 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r5, #0x80 + lsls r5, r5, #4 + adds r0, r5, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + adds r0, r5, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r5, #0 + bl sub_08000BC8 + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + bl sub_08004480 + movs r0, #0x8c + lsls r0, r0, #0x14 + mov sl, r0 + movs r0, #0 + mov sb, r0 + str r0, [sp] + mov r1, sl + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r0, _0807ACB8 + mov r8, r0 + ldr r4, _0807ACBC + adds r1, r4, #0 + bl sub_08034370 + movs r0, #0 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_080021CC + ldr r6, _0807ACC0 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _0807ACC4 + bl sub_08003090 + mov r0, sb + str r0, [sp] + movs r0, #0 + mov r1, sl + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + mov r0, r8 + adds r1, r4, #0 + bl sub_08034370 + movs r0, #0 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_080021CC + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x20 + bl sub_080A11BC + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807ACB4: .4byte gUnknown_830D294 +_0807ACB8: .4byte gUnknown_8C00530 +_0807ACBC: .4byte gUnknown_201C000 +_0807ACC0: .4byte gUnknown_8C004EC +_0807ACC4: .4byte gUnknown_830D27C + thumb_func_end sub_0807ABCC + + thumb_func_start sub_0807ACC8 +sub_0807ACC8: @ 0x0807ACC8 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r0, _0807ACE8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xc + bls _0807ACDC + b _0807AE7A +_0807ACDC: + lsls r0, r0, #2 + ldr r1, _0807ACEC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807ACE8: .4byte gUnknown_3002360 +_0807ACEC: .4byte _0807ACF0 +_0807ACF0: @ jump table + .4byte _0807AD24 @ case 0 + .4byte _0807AE7A @ case 1 + .4byte _0807AE7A @ case 2 + .4byte _0807AE7A @ case 3 + .4byte _0807AE7A @ case 4 + .4byte _0807ADE8 @ case 5 + .4byte _0807ADF2 @ case 6 + .4byte _0807ADFC @ case 7 + .4byte _0807AE0C @ case 8 + .4byte _0807AE2C @ case 9 + .4byte _0807AE48 @ case 10 + .4byte _0807AE50 @ case 11 + .4byte _0807AE74 @ case 12 +_0807AD24: + ldr r1, _0807ADC8 + ldr r0, _0807ADCC + ldrh r0, [r0] + movs r5, #0 + strb r0, [r1] + movs r0, #6 + strb r0, [r1, #1] + ldr r4, _0807ADD0 + ldr r0, _0807ADD4 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _0807ADD8 + movs r1, #7 + mov r2, sp + bl sub_0806A058 + adds r4, #0x1c + adds r0, r4, #0 + mov r1, sp + bl sub_080088B8 + ldr r4, _0807ADDC + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + bl sub_08000BDC + str r0, [r4] + bl sub_0805EBD8 + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + ldr r0, _0807ADE0 + bl sub_080006F0 + bl sub_0807ABCC + ldr r0, [r4] + adds r0, #0xee + strb r5, [r0] + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x8c + strh r5, [r0] + adds r0, #8 + strh r5, [r0] + adds r0, #0x40 + movs r1, #0x40 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + adds r0, #2 + strh r5, [r0] + adds r0, #2 + strh r5, [r0] + adds r1, r2, #0 + adds r1, #0xdc + movs r0, #0x78 + strh r0, [r1] + adds r1, #2 + movs r0, #0x50 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0xe8 + strh r6, [r0] + adds r0, #4 + strh r5, [r0] + str r5, [r2, #0x64] + ldr r0, _0807ADE4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + b _0807AE7A + .align 2, 0 +_0807ADC8: .4byte gUnknown_2031F38 +_0807ADCC: .4byte gUnknown_2037282 +_0807ADD0: .4byte gUnknown_20226A8 +_0807ADD4: .4byte gUnknown_3005AF0 +_0807ADD8: .4byte gUnknown_20243E8 +_0807ADDC: .4byte gUnknown_2031F40 +_0807ADE0: .4byte sub_0807A680 +_0807ADE4: .4byte gUnknown_3002360 +_0807ADE8: + movs r0, #0 + movs r1, #0 + bl sub_0807A758 + b _0807AE60 +_0807ADF2: + movs r0, #0 + movs r1, #1 + bl sub_0807A758 + b _0807AE60 +_0807ADFC: + movs r0, #1 + movs r1, #0 + bl sub_0807A758 + movs r0, #0 + bl sub_08001B48 + b _0807AE60 +_0807AE0C: + movs r0, #1 + movs r1, #1 + bl sub_0807A758 + movs r0, #0 + movs r1, #0xff + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + b _0807AE60 +_0807AE2C: + bl sub_0807B4CC + ldr r0, _0807AE40 + bl sub_08008210 + ldr r0, _0807AE44 + bl sub_0800845C + b _0807AE60 + .align 2, 0 +_0807AE40: .4byte gUnknown_830CF5C +_0807AE44: .4byte gUnknown_830CF64 +_0807AE48: + movs r0, #0 + bl sub_08001B48 + b _0807AE60 +_0807AE50: + movs r0, #5 + bl sub_0807B064 + movs r0, #0 + bl sub_0807B064 + bl sub_0807B510 +_0807AE60: + ldr r1, _0807AE70 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807AE7A + .align 2, 0 +_0807AE70: .4byte gUnknown_3002360 +_0807AE74: + ldr r0, _0807AE98 + bl sub_08000540 +_0807AE7A: + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807AE98: .4byte sub_0807B044 + thumb_func_end sub_0807ACC8 + + thumb_func_start sub_0807AE9C +sub_0807AE9C: @ 0x0807AE9C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _0807AEF8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0807AEF0 + adds r0, r5, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_0806CF68 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #2 + bl sub_080BFBBC + adds r0, r4, #0 + movs r1, #3 + adds r2, r5, #0 + bl sub_0806EAA8 +_0807AEF0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807AEF8: .4byte gUnknown_2024190 + thumb_func_end sub_0807AE9C + + thumb_func_start sub_0807AEFC +sub_0807AEFC: @ 0x0807AEFC + push {lr} + bl sub_0800A02C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807AEFC + + thumb_func_start sub_0807AF08 +sub_0807AF08: @ 0x0807AF08 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r5, #0x64 + mov r1, sb + muls r1, r5, r1 + ldr r0, _0807AFD4 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x40 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r1, r4, #0 + muls r1, r5, r1 + ldr r0, _0807AFD8 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x40 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r6, #0xff + beq _0807AF62 + ldr r0, _0807AFDC + lsls r1, r6, #3 + adds r1, r1, r6 + lsls r1, r1, #2 + ldr r2, _0807AFE0 + adds r1, r1, r2 + ldr r0, [r0] + adds r0, r0, r1 + bl sub_080D3C3C +_0807AF62: + ldr r4, _0807AFE4 + 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_0806A058 + cmp r0, #0 + bne _0807AF9E + adds r0, r7, #0 + movs r1, #0x20 + mov r2, sp + bl sub_0806A774 +_0807AF9E: + mov r0, r8 + cmp r0, #0xff + beq _0807AFB4 + lsls r1, r0, #3 + add r1, r8 + lsls r1, r1, #2 + ldr r0, _0807AFE8 + adds r1, r1, r0 + adds r0, r7, #0 + bl sub_080D3E90 +_0807AFB4: + mov r0, sb + bl sub_0807AE9C + ldr r0, _0807AFEC + ldrb r0, [r0] + cmp r0, #0 + beq _0807AFC6 + bl sub_0807AEFC +_0807AFC6: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807AFD4: .4byte gUnknown_2024190 +_0807AFD8: .4byte gUnknown_20243E8 +_0807AFDC: .4byte gUnknown_3005AEC +_0807AFE0: .4byte 0x00002BE0 +_0807AFE4: .4byte gUnknown_2031F40 +_0807AFE8: .4byte gUnknown_2031E60 +_0807AFEC: .4byte gUnknown_30031C4 + thumb_func_end sub_0807AF08 + + thumb_func_start sub_0807AFF0 +sub_0807AFF0: @ 0x0807AFF0 + push {r4, lr} + ldr r4, _0807B004 + ldr r0, [r4] + adds r0, #0x93 + ldrb r0, [r0] + cmp r0, #1 + beq _0807B008 + cmp r0, #2 + beq _0807B02E + b _0807B038 + .align 2, 0 +_0807B004: .4byte gUnknown_2031F40 +_0807B008: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807B02E + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + adds r1, #0x74 + movs r2, #0x14 + bl sub_0800A070 + ldr r1, [r4] + adds r1, #0x93 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0807B02E: + ldr r0, _0807B040 + ldr r0, [r0] + adds r0, #0x93 + movs r1, #0 + strb r1, [r0] +_0807B038: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807B040: .4byte gUnknown_2031F40 + thumb_func_end sub_0807AFF0 + + thumb_func_start sub_0807B044 +sub_0807B044: @ 0x0807B044 + push {lr} + bl sub_0807B600 + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807B044 + + thumb_func_start sub_0807B064 +sub_0807B064: @ 0x0807B064 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _0807B070 + b _0807B4A0 +_0807B070: + lsls r0, r0, #2 + ldr r1, _0807B07C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B07C: .4byte _0807B080 +_0807B080: @ jump table + .4byte _0807B0A0 @ case 0 + .4byte _0807B114 @ case 1 + .4byte _0807B1BC @ case 2 + .4byte _0807B230 @ case 3 + .4byte _0807B278 @ case 4 + .4byte _0807B344 @ case 5 + .4byte _0807B35C @ case 6 + .4byte _0807B434 @ case 7 +_0807B0A0: + ldr r0, _0807B0F8 + 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, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r1, _0807B0FC + movs r0, #0xc + bl sub_08001144 + ldr r0, _0807B100 + movs r1, #0x10 + movs r2, #0x60 + bl sub_080A1200 + ldr r3, _0807B104 + ldr r4, _0807B108 + movs r5, #0xa1 + lsls r5, r5, #5 + ldr r1, _0807B10C + ldr r6, _0807B110 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x80 + lsls r7, r7, #0x18 +_0807B0E2: + str r3, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r4, r4, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _0807B0E2 + b _0807B484 + .align 2, 0 +_0807B0F8: .4byte gUnknown_2031F40 +_0807B0FC: .4byte 0x00005206 +_0807B100: .4byte gUnknown_8305D24 +_0807B104: .4byte gUnknown_8305D84 +_0807B108: .4byte 0x06004000 +_0807B10C: .4byte 0x040000D4 +_0807B110: .4byte 0x80000800 +_0807B114: + ldr r4, _0807B14C + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0xe2 + movs r0, #0 + strh r0, [r1] + adds r2, #0xe0 + movs r1, #0xae + lsls r1, r1, #1 + strh r1, [r2] + movs r0, #0x16 + bl sub_08001144 + ldr r1, _0807B150 + movs r0, #0xa + bl sub_08001144 + ldr r1, _0807B154 + movs r0, #0xc + bl sub_08001144 + ldr r0, [r4] + adds r0, #0xfa + ldrb r0, [r0] + cmp r0, #0 + beq _0807B15C + ldr r1, _0807B158 + b _0807B15E + .align 2, 0 +_0807B14C: .4byte gUnknown_2031F40 +_0807B150: .4byte 0x00008502 +_0807B154: .4byte 0x00009206 +_0807B158: .4byte gUnknown_830ABE4 +_0807B15C: + ldr r1, _0807B1A8 +_0807B15E: + ldr r2, _0807B1AC + ldr r0, _0807B1B0 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B1B4 + str r1, [r0, #8] + ldr r0, [r0, #8] + ldr r3, _0807B1B8 + movs r4, #0xc0 + lsls r4, r4, #0x13 + movs r5, #0xa1 + lsls r5, r5, #5 + ldr r1, _0807B1B0 + ldr r6, _0807B1B4 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x80 + lsls r7, r7, #0x18 +_0807B182: + str r3, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r4, r4, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _0807B182 + str r3, [r1] + str r4, [r1, #4] + lsrs r0, r5, #1 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r1, #0x92 + lsls r1, r1, #5 + b _0807B258 + .align 2, 0 +_0807B1A8: .4byte gUnknown_8309BE4 +_0807B1AC: .4byte 0x06002800 +_0807B1B0: .4byte 0x040000D4 +_0807B1B4: .4byte 0x80000800 +_0807B1B8: .4byte gUnknown_8305D84 +_0807B1BC: + ldr r0, _0807B1E8 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0xe0 + movs r1, #0 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + adds r0, #0x18 + ldrb r0, [r0] + cmp r0, #0 + bne _0807B1F8 + ldr r1, _0807B1EC + movs r0, #0 + bl sub_08001144 + ldr r0, _0807B1F0 + ldr r1, _0807B1F4 + bl LZ77UnCompVram + movs r0, #8 + b _0807B212 + .align 2, 0 +_0807B1E8: .4byte gUnknown_2031F40 +_0807B1EC: .4byte 0x00001241 +_0807B1F0: .4byte gUnknown_830BBE4 +_0807B1F4: .4byte 0x06002800 +_0807B1F8: + ldr r1, _0807B21C + movs r0, #0 + bl sub_08001144 + ldr r1, _0807B220 + ldr r2, _0807B224 + ldr r0, _0807B228 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B22C + str r1, [r0, #8] + ldr r0, [r0, #8] + movs r0, #1 +_0807B212: + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + b _0807B4A0 + .align 2, 0 +_0807B21C: .4byte 0x00001241 +_0807B220: .4byte gUnknown_8302D64 +_0807B224: .4byte 0x06002800 +_0807B228: .4byte 0x040000D4 +_0807B22C: .4byte 0x80000400 +_0807B230: + ldr r0, _0807B260 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0807B264 + ldr r1, _0807B268 + bl LZ77UnCompVram + ldr r0, _0807B26C + ldr r1, _0807B270 + bl LZ77UnCompVram + ldr r0, _0807B274 + ldr r0, [r0] + adds r0, #0xe4 + movs r1, #0x50 + strh r1, [r0] + movs r1, #0xb2 + lsls r1, r1, #5 +_0807B258: + movs r0, #0 + bl sub_08001144 + b _0807B4A0 + .align 2, 0 +_0807B260: .4byte gUnknown_830C0E4 +_0807B264: .4byte gUnknown_830C104 +_0807B268: .4byte 0x06004000 +_0807B26C: .4byte gUnknown_830C794 +_0807B270: .4byte 0x06009000 +_0807B274: .4byte gUnknown_2031F40 +_0807B278: + ldr r1, _0807B2FC + movs r0, #0 + bl sub_08001144 + ldr r1, _0807B300 + movs r0, #0xc + bl sub_08001144 + ldr r0, _0807B304 + ldr r3, [r0] + adds r1, r3, #0 + adds r1, #0xd4 + movs r2, #0 + movs r0, #0x40 + strh r0, [r1] + adds r1, #2 + movs r0, #0x5c + strh r0, [r1] + adds r1, #0x12 + movs r0, #0x20 + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0xec + strh r2, [r0] + ldr r3, _0807B308 + ldr r4, _0807B30C + movs r5, #0xa1 + lsls r5, r5, #6 + ldr r1, _0807B310 + ldr r6, _0807B314 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x80 + lsls r7, r7, #0x18 +_0807B2C4: + str r3, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r4, r4, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _0807B2C4 + str r3, [r1] + str r4, [r1, #4] + lsrs r0, r5, #1 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _0807B304 + ldr r0, [r0] + adds r0, #0xfa + ldrb r0, [r0] + cmp r0, #0 + beq _0807B324 + ldr r1, _0807B318 + ldr r2, _0807B31C + ldr r0, _0807B310 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B320 + b _0807B49C + .align 2, 0 +_0807B2FC: .4byte 0x00001441 +_0807B300: .4byte 0x00001287 +_0807B304: .4byte gUnknown_2031F40 +_0807B308: .4byte gUnknown_83071A4 +_0807B30C: .4byte 0x06004000 +_0807B310: .4byte 0x040000D4 +_0807B314: .4byte 0x80000800 +_0807B318: .4byte gUnknown_83099E4 +_0807B31C: .4byte 0x06009000 +_0807B320: .4byte 0x80000080 +_0807B324: + ldr r1, _0807B334 + ldr r2, _0807B338 + ldr r0, _0807B33C + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B340 + b _0807B49C + .align 2, 0 +_0807B334: .4byte gUnknown_8309AE4 +_0807B338: .4byte 0x06009000 +_0807B33C: .4byte 0x040000D4 +_0807B340: .4byte 0x80000080 +_0807B344: + ldr r0, _0807B358 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xe0 + movs r2, #0 + strh r2, [r1] + adds r0, #0xe2 + strh r2, [r0] + b _0807B4A0 + .align 2, 0 +_0807B358: .4byte gUnknown_2031F40 +_0807B35C: + ldr r1, _0807B3EC + movs r0, #0 + bl sub_08001144 + ldr r1, _0807B3F0 + movs r0, #0xc + bl sub_08001144 + ldr r0, _0807B3F4 + ldr r3, [r0] + adds r1, r3, #0 + adds r1, #0xd4 + movs r2, #0 + movs r0, #0x40 + strh r0, [r1] + adds r1, #2 + movs r0, #0x5c + strh r0, [r1] + adds r1, #0x12 + adds r0, #0xa4 + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + strh r0, [r1] + subs r1, #0xe + movs r0, #0x78 + strh r0, [r1] + adds r1, #2 + movs r0, #0x50 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0xec + strh r2, [r0] + ldr r3, _0807B3F8 + ldr r4, _0807B3FC + movs r5, #0xa1 + lsls r5, r5, #6 + ldr r1, _0807B400 + ldr r6, _0807B404 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x80 + lsls r7, r7, #0x18 +_0807B3B2: + str r3, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r4, r4, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _0807B3B2 + str r3, [r1] + str r4, [r1, #4] + lsrs r0, r5, #1 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _0807B3F4 + ldr r0, [r0] + adds r0, #0xfa + ldrb r0, [r0] + cmp r0, #0 + beq _0807B414 + ldr r1, _0807B408 + ldr r2, _0807B40C + ldr r0, _0807B400 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B410 + b _0807B49C + .align 2, 0 +_0807B3EC: .4byte 0x00001441 +_0807B3F0: .4byte 0x00001287 +_0807B3F4: .4byte gUnknown_2031F40 +_0807B3F8: .4byte gUnknown_83071A4 +_0807B3FC: .4byte 0x06004000 +_0807B400: .4byte 0x040000D4 +_0807B404: .4byte 0x80000800 +_0807B408: .4byte gUnknown_83099E4 +_0807B40C: .4byte 0x06009000 +_0807B410: .4byte 0x80000080 +_0807B414: + ldr r1, _0807B424 + ldr r2, _0807B428 + ldr r0, _0807B42C + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B430 + b _0807B49C + .align 2, 0 +_0807B424: .4byte gUnknown_8309AE4 +_0807B428: .4byte 0x06009000 +_0807B42C: .4byte 0x040000D4 +_0807B430: .4byte 0x80000080 +_0807B434: + ldr r0, _0807B4A8 + 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_08001144 + ldr r1, _0807B4AC + movs r0, #0xc + bl sub_08001144 + ldr r0, _0807B4B0 + movs r1, #0x10 + movs r2, #0x60 + bl sub_080A1200 + ldr r3, _0807B4B4 + ldr r4, _0807B4B8 + movs r5, #0xa1 + lsls r5, r5, #5 + ldr r1, _0807B4BC + ldr r6, _0807B4C0 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x80 + lsls r7, r7, #0x18 +_0807B472: + str r3, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r4, r4, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _0807B472 +_0807B484: + str r3, [r1] + str r4, [r1, #4] + lsrs r0, r5, #1 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r1, _0807B4C4 + ldr r2, _0807B4C8 + ldr r0, _0807B4BC + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0807B4C0 +_0807B49C: + str r1, [r0, #8] + ldr r0, [r0, #8] +_0807B4A0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807B4A8: .4byte gUnknown_2031F40 +_0807B4AC: .4byte 0x00005206 +_0807B4B0: .4byte gUnknown_8305D24 +_0807B4B4: .4byte gUnknown_8305D84 +_0807B4B8: .4byte 0x06004000 +_0807B4BC: .4byte 0x040000D4 +_0807B4C0: .4byte 0x80000800 +_0807B4C4: .4byte gUnknown_8304D04 +_0807B4C8: .4byte 0x06009000 + thumb_func_end sub_0807B064 + + thumb_func_start sub_0807B4CC +sub_0807B4CC: @ 0x0807B4CC + push {lr} + ldr r0, _0807B4F8 + bl sub_08008210 + ldr r0, _0807B4FC + bl sub_08008210 + ldr r0, _0807B500 + bl sub_08008210 + ldr r0, _0807B504 + bl sub_08008210 + ldr r0, _0807B508 + bl sub_0800845C + ldr r0, _0807B50C + bl sub_0800845C + pop {r0} + bx r0 + .align 2, 0 +_0807B4F8: .4byte gUnknown_830CFB4 +_0807B4FC: .4byte gUnknown_830D004 +_0807B500: .4byte gUnknown_830D038 +_0807B504: .4byte gUnknown_830D0B0 +_0807B508: .4byte gUnknown_830CFBC +_0807B50C: .4byte gUnknown_830CFC4 + thumb_func_end sub_0807B4CC + + thumb_func_start sub_0807B510 +sub_0807B510: @ 0x0807B510 + push {r4, r5, lr} + sub sp, #0x14 + ldr r0, _0807B580 + ldr r0, [r0] + adds r0, #0xee + ldrb r0, [r0] + cmp r0, #0 + beq _0807B5A0 + bl sub_0800A02C + lsls r0, r0, #0x18 + ldr r3, _0807B584 + movs r2, #0x80 + lsls r2, r2, #0x11 + eors r2, r0 + lsrs r2, r2, #0x18 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r0, _0807B588 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_080088B8 + ldr r5, _0807B58C + ldrb r0, [r5, #1] + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0x64 + muls r0, r4, r0 + ldr r1, _0807B590 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0807B594 + mov r1, sp + bl sub_08008828 + ldrb r0, [r5] + muls r0, r4, r0 + ldr r1, _0807B598 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0807B59C + mov r1, sp + bl sub_08008828 + b _0807B5DC + .align 2, 0 +_0807B580: .4byte gUnknown_2031F40 +_0807B584: .4byte gUnknown_2021C40 +_0807B588: .4byte gUnknown_20226A8 +_0807B58C: .4byte gUnknown_2031F38 +_0807B590: .4byte gUnknown_20243E8 +_0807B594: .4byte gUnknown_2021C68 +_0807B598: .4byte gUnknown_2024190 +_0807B59C: .4byte gUnknown_2021C54 +_0807B5A0: + ldr r0, _0807B5E4 + ldrh r0, [r0] + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0807B5E8 + adds r4, r4, r0 + ldr r0, _0807B5EC + adds r1, r4, #0 + adds r1, #0x2b + bl sub_080088B8 + ldr r0, _0807B5F0 + adds r1, r4, #0 + bl sub_08008828 + ldr r0, _0807B5F4 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0807B5F8 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0807B5FC + mov r1, sp + bl sub_08008828 +_0807B5DC: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B5E4: .4byte gUnknown_2037280 +_0807B5E8: .4byte gUnknown_830D114 +_0807B5EC: .4byte gUnknown_2021C40 +_0807B5F0: .4byte gUnknown_2021C68 +_0807B5F4: .4byte gUnknown_2037282 +_0807B5F8: .4byte gUnknown_2024190 +_0807B5FC: .4byte gUnknown_2021C54 + thumb_func_end sub_0807B510 + + thumb_func_start sub_0807B600 +sub_0807B600: @ 0x0807B600 + push {lr} + ldr r0, _0807B614 + ldr r0, [r0] + adds r0, #0xfa + ldrb r0, [r0] + cmp r0, #0 + bne _0807B618 + bl sub_0807CA00 + b _0807B61C + .align 2, 0 +_0807B614: .4byte gUnknown_2031F40 +_0807B618: + bl sub_0807B624 +_0807B61C: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0807B600 + + thumb_func_start sub_0807B624 +sub_0807B624: @ 0x0807B624 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _0807B648 + ldr r1, [r0] + adds r1, #0x94 + ldrh r5, [r1] + ldr r1, _0807B64C + adds r7, r0, #0 + cmp r5, r1 + bls _0807B63C + bl _0807C9EC +_0807B63C: + lsls r0, r5, #2 + ldr r1, _0807B650 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B648: .4byte gUnknown_2031F40 +_0807B64C: .4byte 0x0000010B +_0807B650: .4byte _0807B654 +_0807B654: @ jump table + .4byte _0807BA84 @ case 0 + .4byte _0807BAFC @ case 1 + .4byte _0807C9EC @ case 2 + .4byte _0807C9EC @ case 3 + .4byte _0807C9EC @ case 4 + .4byte _0807C9EC @ case 5 + .4byte _0807C9EC @ case 6 + .4byte _0807C9EC @ case 7 + .4byte _0807C9EC @ case 8 + .4byte _0807C9EC @ case 9 + .4byte _0807BB58 @ case 10 + .4byte _0807BBA0 @ case 11 + .4byte _0807BC14 @ case 12 + .4byte _0807C9EC @ case 13 + .4byte _0807BC80 @ case 14 + .4byte _0807C9EC @ case 15 + .4byte _0807C9EC @ case 16 + .4byte _0807C9EC @ case 17 + .4byte _0807C9EC @ case 18 + .4byte _0807C9EC @ case 19 + .4byte _0807BCA4 @ case 20 + .4byte _0807BCD4 @ case 21 + .4byte _0807BCE6 @ case 22 + .4byte _0807BD08 @ case 23 + .4byte _0807BD50 @ case 24 + .4byte _0807BD80 @ case 25 + .4byte _0807BDC8 @ case 26 + .4byte _0807BE18 @ case 27 + .4byte _0807BE6C @ case 28 + .4byte _0807BEF0 @ case 29 + .4byte _0807BF14 @ case 30 + .4byte _0807BF60 @ case 31 + .4byte _0807BFAC @ case 32 + .4byte _0807C008 @ case 33 + .4byte _0807C068 @ case 34 + .4byte _0807C07C @ case 35 + .4byte _0807C090 @ case 36 + .4byte _0807C0A4 @ case 37 + .4byte _0807C1CC @ case 38 + .4byte _0807C29C @ case 39 + .4byte _0807C324 @ case 40 + .4byte _0807C39C @ case 41 + .4byte _0807C3AC @ case 42 + .4byte _0807C3CC @ case 43 + .4byte _0807C41C @ case 44 + .4byte _0807C43A @ case 45 + .4byte _0807C478 @ case 46 + .4byte _0807C488 @ case 47 + .4byte _0807C500 @ case 48 + .4byte _0807C9EC @ case 49 + .4byte _0807C528 @ case 50 + .4byte _0807C568 @ case 51 + .4byte _0807C5A8 @ case 52 + .4byte _0807C9EC @ case 53 + .4byte _0807C9EC @ case 54 + .4byte _0807C9EC @ case 55 + .4byte _0807C9EC @ case 56 + .4byte _0807C9EC @ case 57 + .4byte _0807C9EC @ case 58 + .4byte _0807C9EC @ case 59 + .4byte _0807C5C8 @ case 60 + .4byte _0807C5F0 @ case 61 + .4byte _0807C60C @ case 62 + .4byte _0807C62C @ case 63 + .4byte _0807C6D4 @ case 64 + .4byte _0807C708 @ case 65 + .4byte _0807C754 @ case 66 + .4byte _0807C814 @ case 67 + .4byte _0807C88C @ case 68 + .4byte _0807C8D8 @ case 69 + .4byte _0807C8E8 @ case 70 + .4byte _0807C8EE @ case 71 + .4byte _0807C914 @ case 72 + .4byte _0807C970 @ case 73 + .4byte _0807C994 @ case 74 + .4byte _0807C9EC @ case 75 + .4byte _0807C9EC @ case 76 + .4byte _0807C9EC @ case 77 + .4byte _0807C9EC @ case 78 + .4byte _0807C9EC @ case 79 + .4byte _0807C9EC @ case 80 + .4byte _0807C9EC @ case 81 + .4byte _0807C9EC @ case 82 + .4byte _0807C9EC @ case 83 + .4byte _0807C9EC @ case 84 + .4byte _0807C9EC @ case 85 + .4byte _0807C9EC @ case 86 + .4byte _0807C9EC @ case 87 + .4byte _0807C9EC @ case 88 + .4byte _0807C9EC @ case 89 + .4byte _0807C9EC @ case 90 + .4byte _0807C9EC @ case 91 + .4byte _0807C9EC @ case 92 + .4byte _0807C9EC @ case 93 + .4byte _0807C9EC @ case 94 + .4byte _0807C9EC @ case 95 + .4byte _0807C9EC @ case 96 + .4byte _0807C9EC @ case 97 + .4byte _0807C9EC @ case 98 + .4byte _0807C9EC @ case 99 + .4byte _0807C9EC @ case 100 + .4byte _0807C9EC @ case 101 + .4byte _0807C9EC @ case 102 + .4byte _0807C9EC @ case 103 + .4byte _0807C9EC @ case 104 + .4byte _0807C9EC @ case 105 + .4byte _0807C9EC @ case 106 + .4byte _0807C9EC @ case 107 + .4byte _0807C9EC @ case 108 + .4byte _0807C9EC @ case 109 + .4byte _0807C9EC @ case 110 + .4byte _0807C9EC @ case 111 + .4byte _0807C9EC @ case 112 + .4byte _0807C9EC @ case 113 + .4byte _0807C9EC @ case 114 + .4byte _0807C9EC @ case 115 + .4byte _0807C9EC @ case 116 + .4byte _0807C9EC @ case 117 + .4byte _0807C9EC @ case 118 + .4byte _0807C9EC @ case 119 + .4byte _0807C9EC @ case 120 + .4byte _0807C9EC @ case 121 + .4byte _0807C9EC @ case 122 + .4byte _0807C9EC @ case 123 + .4byte _0807C9EC @ case 124 + .4byte _0807C9EC @ case 125 + .4byte _0807C9EC @ case 126 + .4byte _0807C9EC @ case 127 + .4byte _0807C9EC @ case 128 + .4byte _0807C9EC @ case 129 + .4byte _0807C9EC @ case 130 + .4byte _0807C9EC @ case 131 + .4byte _0807C9EC @ case 132 + .4byte _0807C9EC @ case 133 + .4byte _0807C9EC @ case 134 + .4byte _0807C9EC @ case 135 + .4byte _0807C9EC @ case 136 + .4byte _0807C9EC @ case 137 + .4byte _0807C9EC @ case 138 + .4byte _0807C9EC @ case 139 + .4byte _0807C9EC @ case 140 + .4byte _0807C9EC @ case 141 + .4byte _0807C9EC @ case 142 + .4byte _0807C9EC @ case 143 + .4byte _0807C9EC @ case 144 + .4byte _0807C9EC @ case 145 + .4byte _0807C9EC @ case 146 + .4byte _0807C9EC @ case 147 + .4byte _0807C9EC @ case 148 + .4byte _0807C9EC @ case 149 + .4byte _0807C9EC @ case 150 + .4byte _0807C9EC @ case 151 + .4byte _0807C9EC @ case 152 + .4byte _0807C9EC @ case 153 + .4byte _0807C9EC @ case 154 + .4byte _0807C9EC @ case 155 + .4byte _0807C9EC @ case 156 + .4byte _0807C9EC @ case 157 + .4byte _0807C9EC @ case 158 + .4byte _0807C9EC @ case 159 + .4byte _0807C9EC @ case 160 + .4byte _0807C9EC @ case 161 + .4byte _0807C9EC @ case 162 + .4byte _0807C9EC @ case 163 + .4byte _0807C9EC @ case 164 + .4byte _0807C9EC @ case 165 + .4byte _0807C9EC @ case 166 + .4byte _0807C850 @ case 167 + .4byte _0807C9EC @ case 168 + .4byte _0807C9EC @ case 169 + .4byte _0807C9EC @ case 170 + .4byte _0807C9EC @ case 171 + .4byte _0807C9EC @ case 172 + .4byte _0807C9EC @ case 173 + .4byte _0807C9EC @ case 174 + .4byte _0807C9EC @ case 175 + .4byte _0807C9EC @ case 176 + .4byte _0807C9EC @ case 177 + .4byte _0807C9EC @ case 178 + .4byte _0807C9EC @ case 179 + .4byte _0807C9EC @ case 180 + .4byte _0807C9EC @ case 181 + .4byte _0807C9EC @ case 182 + .4byte _0807C9EC @ case 183 + .4byte _0807C9EC @ case 184 + .4byte _0807C9EC @ case 185 + .4byte _0807C9EC @ case 186 + .4byte _0807C9EC @ case 187 + .4byte _0807C9EC @ case 188 + .4byte _0807C9EC @ case 189 + .4byte _0807C9EC @ case 190 + .4byte _0807C9EC @ case 191 + .4byte _0807C9EC @ case 192 + .4byte _0807C9EC @ case 193 + .4byte _0807C9EC @ case 194 + .4byte _0807C9EC @ case 195 + .4byte _0807C9EC @ case 196 + .4byte _0807C9EC @ case 197 + .4byte _0807C9EC @ case 198 + .4byte _0807C9EC @ case 199 + .4byte _0807BE98 @ case 200 + .4byte _0807C9EC @ case 201 + .4byte _0807C9EC @ case 202 + .4byte _0807C9EC @ case 203 + .4byte _0807C9EC @ case 204 + .4byte _0807C9EC @ case 205 + .4byte _0807C9EC @ case 206 + .4byte _0807C9EC @ case 207 + .4byte _0807C9EC @ case 208 + .4byte _0807C9EC @ case 209 + .4byte _0807C9EC @ case 210 + .4byte _0807C9EC @ case 211 + .4byte _0807C9EC @ case 212 + .4byte _0807C9EC @ case 213 + .4byte _0807C9EC @ case 214 + .4byte _0807C9EC @ case 215 + .4byte _0807C9EC @ case 216 + .4byte _0807C9EC @ case 217 + .4byte _0807C9EC @ case 218 + .4byte _0807C9EC @ case 219 + .4byte _0807C9EC @ case 220 + .4byte _0807C9EC @ case 221 + .4byte _0807C9EC @ case 222 + .4byte _0807C9EC @ case 223 + .4byte _0807C9EC @ case 224 + .4byte _0807C9EC @ case 225 + .4byte _0807C9EC @ case 226 + .4byte _0807C9EC @ case 227 + .4byte _0807C9EC @ case 228 + .4byte _0807C9EC @ case 229 + .4byte _0807C9EC @ case 230 + .4byte _0807C9EC @ case 231 + .4byte _0807C9EC @ case 232 + .4byte _0807C9EC @ case 233 + .4byte _0807C9EC @ case 234 + .4byte _0807C9EC @ case 235 + .4byte _0807C9EC @ case 236 + .4byte _0807C9EC @ case 237 + .4byte _0807C9EC @ case 238 + .4byte _0807C9EC @ case 239 + .4byte _0807C9EC @ case 240 + .4byte _0807C9EC @ case 241 + .4byte _0807C9EC @ case 242 + .4byte _0807C9EC @ case 243 + .4byte _0807C9EC @ case 244 + .4byte _0807C9EC @ case 245 + .4byte _0807C9EC @ case 246 + .4byte _0807C9EC @ case 247 + .4byte _0807C9EC @ case 248 + .4byte _0807C9EC @ case 249 + .4byte _0807C9EC @ case 250 + .4byte _0807C9EC @ case 251 + .4byte _0807C9EC @ case 252 + .4byte _0807C9EC @ case 253 + .4byte _0807C9EC @ case 254 + .4byte _0807C9EC @ case 255 + .4byte _0807C9EC @ case 256 + .4byte _0807C9EC @ case 257 + .4byte _0807C9EC @ case 258 + .4byte _0807C9EC @ case 259 + .4byte _0807C9EC @ case 260 + .4byte _0807C9EC @ case 261 + .4byte _0807C9EC @ case 262 + .4byte _0807C9EC @ case 263 + .4byte _0807C9EC @ case 264 + .4byte _0807C9EC @ case 265 + .4byte _0807C9EC @ case 266 + .4byte _0807C870 @ case 267 +_0807BA84: + ldr r3, _0807BAEC + ldr r0, [r7] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r1, _0807BAF0 + strh r1, [r0, #0x24] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, _0807BAF4 + adds r0, r4, #0 + adds r0, #0xf0 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + strh r0, [r1, #0x26] + adds r1, r4, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + bl sub_080A27CC + ldr r1, [r7] + adds r1, #0xf4 + strh r0, [r1] + ldr r0, _0807BAF8 + bl sub_080A27D8 + bl _0807C9EC + .align 2, 0 +_0807BAEC: .4byte gUnknown_20205AC +_0807BAF0: .4byte 0x0000FF4C +_0807BAF4: .4byte gUnknown_82D45C8 +_0807BAF8: .4byte 0x00000179 +_0807BAFC: + ldr r5, [r7] + adds r6, r5, #0 + adds r6, #0xe6 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + ble _0807BB30 + ldr r2, _0807BB2C + adds r0, r5, #0 + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + adds r1, #3 + strh r1, [r0, #0x24] + ldrh r0, [r6] + subs r0, #3 + strh r0, [r6] + bl _0807C9EC + .align 2, 0 +_0807BB2C: .4byte gUnknown_20205AC +_0807BB30: + ldr r2, _0807BB54 + adds r0, r5, #0 + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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 _0807C9EC + .align 2, 0 +_0807BB54: .4byte gUnknown_20205AC +_0807BB58: + ldr r4, _0807BB94 + ldr r1, _0807BB98 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r4, _0807BB9C + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0xf0 + ldrh r1, [r2] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _0807BB86 + adds r0, r1, #0 + movs r1, #0 + bl sub_080A2B3C +_0807BB86: + ldr r3, [r4] + adds r1, r3, #0 + adds r1, #0x94 + movs r2, #0 + movs r0, #0xb + bl _0807C83E + .align 2, 0 +_0807BB94: .4byte gUnknown_2021C7C +_0807BB98: .4byte gUnknown_830D240 +_0807BB9C: .4byte gUnknown_2031F40 +_0807BBA0: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x50 + beq _0807BBB0 + bl _0807C9EC +_0807BBB0: + adds r0, r1, #0 + adds r0, #0x8e + ldrb r0, [r0] + ldr r2, _0807BC04 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0x14 + str r2, [sp, #8] + ldr r2, _0807BC08 + str r2, [sp, #0xc] + movs r2, #0x78 + movs r3, #0x20 + bl sub_08076124 + ldr r1, [r7] + adds r1, #0xd2 + strb r0, [r1] + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r4, _0807BC0C + ldr r1, _0807BC10 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + bl _0807C9EC + .align 2, 0 +_0807BC04: .4byte gUnknown_20205AC +_0807BC08: .4byte 0x000FFFFF +_0807BC0C: .4byte gUnknown_2021C7C +_0807BC10: .4byte gUnknown_830D24F +_0807BC14: + ldr r5, _0807BC70 + ldr r0, [r7] + adds r0, #0xd2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r5, #0 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, [r0] + ldr r0, _0807BC74 + cmp r1, r0 + beq _0807BC34 + bl _0807C9EC +_0807BC34: + ldr r0, _0807BC78 + movs r1, #0x78 + movs r2, #0x20 + movs r3, #0 + bl sub_08006B0C + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0807BC7C + str r1, [r0] + adds r2, #0xd2 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + ldr r1, [r7] + bl _0807C984 + .align 2, 0 +_0807BC70: .4byte gUnknown_20205AC +_0807BC74: .4byte sub_08007140 +_0807BC78: .4byte gUnknown_830CF6C +_0807BC7C: .4byte sub_0807E010 +_0807BC80: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807BCA0 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x14 + strh r1, [r0] + bl _0807C9EC + .align 2, 0 +_0807BCA0: .4byte gUnknown_2031F40 +_0807BCA4: + ldr r0, _0807BCD0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807BCB4 + bl _0807C9EC +_0807BCB4: + movs r0, #4 + bl sub_0807B064 + movs r0, #0 + movs r1, #0xff + bl sub_08003B18 + movs r0, #0 + movs r1, #3 + bl sub_08003528 + bl _0807C980 + .align 2, 0 +_0807BCD0: .4byte gUnknown_2037C74 +_0807BCD4: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl _0807C97C +_0807BCE6: + ldr r0, _0807BD04 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807BCF6 + bl _0807C9EC +_0807BCF6: + ldr r0, [r7] + adds r0, #0x94 + movs r1, #0x17 + strh r1, [r0] + bl _0807C9EC + .align 2, 0 +_0807BD04: .4byte gUnknown_2037C74 +_0807BD08: + ldr r4, _0807BD24 + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0xea + ldrh r1, [r2] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bls _0807BD28 + adds r0, r1, #0 + subs r0, #0x34 + strh r0, [r2] + b _0807BD44 + .align 2, 0 +_0807BD24: .4byte gUnknown_2031F40 +_0807BD28: + movs r0, #1 + bl sub_0807B064 + 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, #1 + strh r0, [r1] + str r2, [r3, #0x64] +_0807BD44: + ldr r0, _0807BD4C + ldr r4, [r0] + bl _0807C594 + .align 2, 0 +_0807BD4C: .4byte gUnknown_2031F40 +_0807BD50: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x14 + bhi _0807BD60 + bl _0807C9EC +_0807BD60: + bl sub_0807A598 + ldr r0, _0807BD7C + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x91 + strb r0, [r1] + ldr r1, [r7] + bl _0807C984 + .align 2, 0 +_0807BD7C: .4byte gUnknown_830D0B8 +_0807BD80: + ldr r2, _0807BDC0 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0807BDA0 + bl _0807C9EC +_0807BDA0: + adds r0, r1, #0 + bl sub_08006E00 + movs r1, #0xc8 + lsls r1, r1, #3 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0807BDC4 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r7] + bl _0807C984 + .align 2, 0 +_0807BDC0: .4byte gUnknown_20205AC +_0807BDC4: .4byte 0x0000040C +_0807BDC8: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xe0 + ldrh r1, [r0] + subs r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + movs r0, #0x9e + lsls r0, r0, #0x11 + cmp r1, r0 + bne _0807BDE8 + adds r1, r2, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807BDE8: + ldr r0, [r7] + adds r0, #0xe0 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + beq _0807BDFC + bl _0807C9EC +_0807BDFC: + ldr r0, _0807BE14 + movs r1, #0x80 + movs r2, #0x41 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x92 + strb r0, [r1] + bl _0807C9EC + .align 2, 0 +_0807BE14: .4byte gUnknown_830D040 +_0807BE18: + ldr r0, _0807BE5C + movs r1, #0x80 + movs r2, #0x50 + movs r3, #3 + bl sub_08006B0C + ldr r4, _0807BE60 + ldr r1, [r4] + adds r1, #0x90 + strb r0, [r1] + ldr r0, _0807BE64 + movs r1, #0x80 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807BE68 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + ldr r1, [r4] + bl _0807C984 + .align 2, 0 +_0807BE5C: .4byte gUnknown_830CFCC +_0807BE60: .4byte gUnknown_2031F40 +_0807BE64: .4byte gUnknown_830D00C +_0807BE68: .4byte gUnknown_20205AC +_0807BE6C: + ldr r2, [r7] + adds r1, r2, #0 + adds r1, #0xe0 + ldrh r0, [r1] + subs r0, #2 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa6 + bne _0807BE86 + subs r1, #0x4c + movs r0, #0xc8 + strh r0, [r1] +_0807BE86: + ldr r1, _0807BE94 + movs r0, #0 + bl sub_08001144 + bl _0807C9EC + .align 2, 0 +_0807BE94: .4byte 0x00001241 +_0807BE98: + ldr r2, _0807BEEC + ldr r4, [r7] + adds r3, r4, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #2 + strh r1, [r0, #0x22] + adds r0, r4, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #2 + strh r1, [r0, #0x22] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _0807BEDE + bl _0807C9EC +_0807BEDE: + adds r1, r4, #0 + adds r1, #0x94 + movs r0, #0x1d + strh r0, [r1] + bl _0807C9EC + .align 2, 0 +_0807BEEC: .4byte gUnknown_20205AC +_0807BEF0: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807BF10 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x1e + strh r1, [r0] + bl _0807C9EC + .align 2, 0 +_0807BF10: .4byte gUnknown_2031F40 +_0807BF14: + ldr r0, _0807BF58 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807BF24 + bl _0807C9EC +_0807BF24: + ldr r0, [r7] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807BF5C + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #2 + bl sub_0807B064 + ldr r1, [r7] + bl _0807C984 + .align 2, 0 +_0807BF58: .4byte gUnknown_2037C74 +_0807BF5C: .4byte gUnknown_20205AC +_0807BF60: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r5, _0807BFA4 + adds r0, r5, #0 + movs r1, #0x6f + movs r2, #0xaa + movs r3, #0 + bl sub_08006B0C + ldr r4, _0807BFA8 + ldr r1, [r4] + adds r1, #0x90 + strb r0, [r1] + movs r2, #0xa + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0x81 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x91 + strb r0, [r1] + ldr r1, [r4] + bl _0807C984 + .align 2, 0 +_0807BFA4: .4byte gUnknown_830D00C +_0807BFA8: .4byte gUnknown_2031F40 +_0807BFAC: + ldr r0, _0807BFFC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807BFCA + movs r0, #0x2e + bl sub_080A306C + ldr r0, _0807C000 + ldr r1, [r0] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807BFCA: + ldr r3, _0807C004 + ldr r0, _0807C000 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r2, #0x91 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + bl _0807C9EC + .align 2, 0 +_0807BFFC: .4byte gUnknown_2037C74 +_0807C000: .4byte gUnknown_2031F40 +_0807C004: .4byte gUnknown_20205AC +_0807C008: + ldr r5, _0807C064 + ldr r4, [r7] + adds r2, r4, #0 + adds r2, #0x90 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r6, r4, #0 + adds r6, #0x91 + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r5 + movs r0, #0x26 + ldrsh r1, [r3, r0] + movs r0, #0x5a + rsbs r0, r0, #0 + cmp r1, r0 + ble _0807C04E + bl _0807C9EC +_0807C04E: + movs r2, #1 + strh r2, [r3, #0x30] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x30] + adds r1, r4, #0 + bl _0807C984 + .align 2, 0 +_0807C064: .4byte gUnknown_20205AC +_0807C068: + ldr r2, _0807C078 + movs r0, #1 + movs r1, #0x10 + bl sub_080A22E8 + bl _0807C980 + .align 2, 0 +_0807C078: .4byte 0x0000FFFF +_0807C07C: + ldr r2, _0807C08C + movs r0, #1 + movs r1, #0 + bl sub_080A22E8 + bl _0807C980 + .align 2, 0 +_0807C08C: .4byte 0x0000FFFF +_0807C090: + ldr r2, _0807C0A0 + movs r0, #1 + movs r1, #0x10 + bl sub_080A22E8 + bl _0807C980 + .align 2, 0 +_0807C0A0: .4byte 0x0000FFFF +_0807C0A4: + ldr r5, _0807C110 + ldr r0, [r5] + adds r0, #0xf0 + ldrh r0, [r0] + bl sub_0806E2CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807C11C + ldr r4, _0807C114 + ldr r2, [r5] + adds r2, #0x8e + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldr r1, _0807C118 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #1] + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007F70 + b _0807C132 + .align 2, 0 +_0807C110: .4byte gUnknown_2031F40 +_0807C114: .4byte gUnknown_20205AC +_0807C118: .4byte gUnknown_830D110 +_0807C11C: + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807C1C0 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007F70 +_0807C132: + ldr r5, _0807C1C4 + ldr r0, [r5] + adds r0, #0x8f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807C1C0 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007F70 + ldr r2, [r5] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x3c + strh r1, [r0, #0x20] + adds r2, #0x8f + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xb4 + strh r1, [r0, #0x20] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xc0 + strh r1, [r0, #0x22] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0807C1C8 + strh r1, [r0, #0x22] + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r1, [r5] + bl _0807C984 + .align 2, 0 +_0807C1C0: .4byte gUnknown_20205AC +_0807C1C4: .4byte gUnknown_2031F40 +_0807C1C8: .4byte 0x0000FFE0 +_0807C1CC: + ldr r4, _0807C294 + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + subs r1, #3 + movs r5, #0 + strh r1, [r0, #0x26] + adds r2, #0x8f + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x26] + adds r0, #0xa3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _0807C214 + movs r0, #0x2d + bl sub_080A306C +_0807C214: + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r6, #0x26 + ldrsh r1, [r0, r6] + movs r0, #0xde + rsbs r0, r0, #0 + cmp r1, r0 + blt _0807C234 + bl _0807C9EC +_0807C234: + adds r0, r2, #0 + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x30] + adds r0, r2, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x30] + adds r1, r2, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + adds r0, #0x8f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r2, _0807C298 + movs r0, #1 + movs r1, #0 + bl sub_080A22E8 + b _0807C9EC + .align 2, 0 +_0807C294: .4byte gUnknown_20205AC +_0807C298: .4byte 0x0000FFFF +_0807C29C: + ldr r4, _0807C320 + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r2, #0x91 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r2, #0x26 + ldrsh r1, [r0, r2] + movs r0, #0xde + rsbs r0, r0, #0 + cmp r1, r0 + ble _0807C2DE + b _0807C9EC +_0807C2DE: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0x94 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x90 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + b _0807C9EC + .align 2, 0 +_0807C320: .4byte gUnknown_20205AC +_0807C324: + ldr r0, _0807C38C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807C332 + b _0807C9EC +_0807C332: + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #1 + bl sub_0807B064 + ldr r0, [r7] + adds r0, #0xe0 + movs r1, #0xa6 + strh r1, [r0] + ldr r0, _0807C390 + movs r4, #0x14 + rsbs r4, r4, #0 + movs r1, #0x80 + adds r2, r4, #0 + movs r3, #3 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x90 + strb r0, [r1] + ldr r0, _0807C394 + movs r1, #0x80 + adds r2, r4, #0 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807C398 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + b _0807C9EC + .align 2, 0 +_0807C38C: .4byte gUnknown_2037C74 +_0807C390: .4byte gUnknown_830CFCC +_0807C394: .4byte gUnknown_830D00C +_0807C398: .4byte gUnknown_20205AC +_0807C39C: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + b _0807C97C +_0807C3AC: + movs r1, #0x92 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0807C3C8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807C3C4 + b _0807C9EC +_0807C3C4: + b _0807C980 + .align 2, 0 +_0807C3C8: .4byte gUnknown_2037C74 +_0807C3CC: + ldr r2, _0807C418 + ldr r4, [r7] + adds r3, r4, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + adds r0, r4, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x26 + ldrsh r1, [r0, r3] + movs r6, #0x22 + ldrsh r0, [r0, r6] + adds r1, r1, r0 + cmp r1, #0x40 + beq _0807C412 + b _0807C9EC +_0807C412: + adds r1, r4, #0 + b _0807C984 + .align 2, 0 +_0807C418: .4byte gUnknown_20205AC +_0807C41C: + ldr r1, [r7] + adds r5, r1, #0 + adds r5, #0xe0 + ldrh r0, [r5] + adds r0, #2 + strh r0, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x9e + lsls r6, r6, #1 + cmp r0, r6 + bgt _0807C436 + b _0807C9EC +_0807C436: + strh r6, [r5] + b _0807C984 +_0807C43A: + ldr r0, [r7] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807C474 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r3, [r7] + adds r2, r3, #0 + adds r2, #0x94 + ldrh r0, [r2] + adds r0, #1 + movs r1, #0 + strh r0, [r2] + str r1, [r3, #0x64] + b _0807C9EC + .align 2, 0 +_0807C474: .4byte gUnknown_20205AC +_0807C478: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0xa + beq _0807C486 + b _0807C9EC +_0807C486: + b _0807C984 +_0807C488: + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0xe0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0xae + lsls r3, r3, #1 + cmp r0, r3 + ble _0807C4AA + strh r3, [r2] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807C4AA: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xe0 + movs r3, #0 + ldrsh r1, [r0, r3] + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + beq _0807C4BE + b _0807C9EC +_0807C4BE: + adds r0, r2, #0 + adds r0, #0xfa + ldrb r0, [r0] + cmp r0, #0 + bne _0807C4CA + b _0807C9EC +_0807C4CA: + ldr r0, _0807C4F4 + movs r1, #0x80 + movs r2, #0x41 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x92 + strb r0, [r1] + ldr r2, _0807C4F8 + ldr r0, [r7] + adds r0, #0x92 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0807C4FC + str r1, [r0] + b _0807C9EC + .align 2, 0 +_0807C4F4: .4byte gUnknown_830D040 +_0807C4F8: .4byte gUnknown_20205AC +_0807C4FC: .4byte sub_0807A550 +_0807C500: + ldr r0, _0807C520 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r2, _0807C524 + ldr r1, [r2] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r2] + adds r0, #0x94 + movs r1, #0x32 + strh r1, [r0] + b _0807C9EC + .align 2, 0 +_0807C520: .4byte gUnknown_830D0B8 +_0807C524: .4byte gUnknown_2031F40 +_0807C528: + ldr r2, _0807C564 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0807C546 + b _0807C9EC +_0807C546: + adds r0, r1, #0 + bl sub_08006E00 + movs r0, #6 + bl sub_0807B064 + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0x9f + bl sub_080A306C + b _0807C9EC + .align 2, 0 +_0807C564: .4byte gUnknown_20205AC +_0807C568: + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0xea + ldrh r3, [r2] + ldr r0, _0807C580 + cmp r3, r0 + bhi _0807C584 + adds r0, r3, #0 + adds r0, #0x34 + strh r0, [r2] + b _0807C592 + .align 2, 0 +_0807C580: .4byte 0x000003FF +_0807C584: + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807C592: + ldr r4, [r7] +_0807C594: + adds r0, r4, #0 + adds r0, #0xea + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #8 + bl __divsi3 + adds r4, #0xe8 + strh r0, [r4] + b _0807C9EC +_0807C5A8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807C5C4 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x3c + strh r1, [r0] + b _0807C9EC + .align 2, 0 +_0807C5C4: .4byte gUnknown_2031F40 +_0807C5C8: + ldr r4, _0807C5EC + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807C5D6 + b _0807C9EC +_0807C5D6: + movs r0, #5 + bl sub_0807B064 + movs r0, #7 + bl sub_0807B064 + ldrb r0, [r4, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #8] + b _0807C980 + .align 2, 0 +_0807C5EC: .4byte gUnknown_2037C74 +_0807C5F0: + ldr r2, _0807C608 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + b _0807C97C + .align 2, 0 +_0807C608: .4byte gUnknown_2037C74 +_0807C60C: + movs r1, #0xa2 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0807C628 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807C624 + b _0807C9EC +_0807C624: + b _0807C980 + .align 2, 0 +_0807C628: .4byte gUnknown_2037C74 +_0807C62C: + ldr r0, _0807C6C0 + movs r2, #8 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #0 + bl sub_08006B0C + ldr r5, _0807C6C4 + ldr r1, [r5] + adds r1, #0xd3 + movs r6, #0 + strb r0, [r1] + ldr r4, _0807C6C8 + ldr r2, [r5] + adds r2, #0xd3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x4a + strh r1, [r0, #0x34] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0807C6CC + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r5] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + bl sub_08007F70 + ldr r0, [r5] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + ldr r2, _0807C6D0 + movs r1, #0x10 + bl sub_080A22E8 + ldr r2, [r5] + adds r1, r2, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + str r6, [r2, #0x64] + b _0807C9EC + .align 2, 0 +_0807C6C0: .4byte gUnknown_830CF6C +_0807C6C4: .4byte gUnknown_2031F40 +_0807C6C8: .4byte gUnknown_20205AC +_0807C6CC: .4byte sub_0807E0E4 +_0807C6D0: .4byte 0x0000FFFF +_0807C6D4: + ldr r2, _0807C700 + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + ldr r1, _0807C704 + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, [r7] + b _0807C984 + .align 2, 0 +_0807C700: .4byte gUnknown_20205AC +_0807C704: .4byte 0x0000FFFF +_0807C708: + ldr r2, _0807C744 + ldr r3, [r7] + adds r0, r3, #0 + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0807C748 + cmp r1, r0 + beq _0807C726 + b _0807C9EC +_0807C726: + adds r0, r3, #0 + adds r0, #0xf2 + ldrh r2, [r0] + lsls r0, r2, #3 + ldr r1, _0807C74C + adds r0, r0, r1 + ldr r1, _0807C750 + ldr r1, [r1] + ldr r1, [r1, #0x10] + ldr r3, [r3, #0x6c] + bl sub_08034954 + ldr r1, [r7] + b _0807C984 + .align 2, 0 +_0807C744: .4byte gUnknown_20205AC +_0807C748: .4byte sub_08007140 +_0807C74C: .4byte gUnknown_82DDA1C +_0807C750: .4byte gUnknown_2024178 +_0807C754: + ldr r4, _0807C808 + ldr r2, [r7] + adds r6, r2, #0 + adds r6, #0x8f + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r5, #0 + movs r1, #0x78 + strh r1, [r0, #0x20] + ldrb r0, [r6] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r3, _0807C80C + adds r2, #0xf2 + ldrh r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + adds r0, #0x3c + strh r0, [r1, #0x22] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x24] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x26] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007EC0 + ldr r3, [r7] + adds r0, r3, #0 + adds r0, #0x8f + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0x14 + str r2, [sp, #8] + ldr r2, _0807C810 + str r2, [sp, #0xc] + adds r3, #0xf2 + ldrh r2, [r3] + str r2, [sp, #0x10] + movs r2, #0x78 + movs r3, #0x54 + bl sub_08075E40 + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_0800730C + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, [r7] + b _0807C984 + .align 2, 0 +_0807C808: .4byte gUnknown_20205AC +_0807C80C: .4byte gUnknown_82D45C8 +_0807C810: .4byte 0x000FFFFF +_0807C814: + movs r1, #0xaa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r4, _0807C844 + ldr r1, _0807C848 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r0, _0807C84C + ldr r3, [r0] + adds r1, r3, #0 + adds r1, #0x94 + movs r2, #0 + movs r0, #0xa7 +_0807C83E: + strh r0, [r1] + str r2, [r3, #0x64] + b _0807C9EC + .align 2, 0 +_0807C844: .4byte gUnknown_2021C7C +_0807C848: .4byte gUnknown_830D258 +_0807C84C: .4byte gUnknown_2031F40 +_0807C850: + ldr r3, [r7] + ldr r0, [r3, #0x64] + adds r0, #1 + str r0, [r3, #0x64] + cmp r0, #0x3c + bhi _0807C85E + b _0807C9EC +_0807C85E: + adds r0, r3, #0 + adds r0, #0x94 + movs r2, #0 + ldr r1, _0807C86C + strh r1, [r0] + str r2, [r3, #0x64] + b _0807C9EC + .align 2, 0 +_0807C86C: .4byte 0x0000010B +_0807C870: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807C87C + b _0807C9EC +_0807C87C: + ldr r0, _0807C888 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x44 + strh r1, [r0] + b _0807C9EC + .align 2, 0 +_0807C888: .4byte gUnknown_2031F40 +_0807C88C: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0xa + bne _0807C89E + ldr r0, _0807C8CC + bl sub_080A29AC +_0807C89E: + ldr r1, [r7] + ldr r0, [r1, #0x64] + cmp r0, #0xfa + beq _0807C8A8 + b _0807C9EC +_0807C8A8: + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + movs r5, #0 + strh r0, [r1] + ldr r4, _0807C8D0 + ldr r1, _0807C8D4 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r0, [r7] + str r5, [r0, #0x64] + b _0807C9EC + .align 2, 0 +_0807C8CC: .4byte 0x00000173 +_0807C8D0: .4byte gUnknown_2021C7C +_0807C8D4: .4byte gUnknown_830D26A +_0807C8D8: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x3c + beq _0807C8E6 + b _0807C9EC +_0807C8E6: + b _0807C984 +_0807C8E8: + bl sub_0807EB84 + b _0807C980 +_0807C8EE: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xee + ldrb r0, [r0] + cmp r0, #0 + beq _0807C8FE + movs r0, #1 + b _0807C9EE +_0807C8FE: + ldr r0, _0807C910 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807C9EC + adds r1, r2, #0 + b _0807C984 + .align 2, 0 +_0807C910: .4byte gUnknown_3002360 +_0807C914: + ldr r0, _0807C958 + ldrb r0, [r0] + movs r1, #0 + bl sub_0807AF08 + ldr r1, _0807C95C + ldr r0, _0807C960 + str r0, [r1] + ldr r7, _0807C964 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0807C968 + adds r0, r0, r5 + movs r1, #1 + movs r2, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0807C980 + ldrb r3, [r7] + adds r0, r3, #0 + muls r0, r6, r0 + adds r0, r0, r5 + ldr r1, _0807C96C + ldr r1, [r1] + adds r1, #0x8f + ldrb r2, [r1] + adds r1, r4, #0 + bl sub_0813E2D8 + b _0807C980 + .align 2, 0 +_0807C958: .4byte gUnknown_2037282 +_0807C95C: .4byte gUnknown_3005F28 +_0807C960: .4byte sub_0807B044 +_0807C964: .4byte gUnknown_2031F38 +_0807C968: .4byte gUnknown_2024190 +_0807C96C: .4byte gUnknown_2031F40 +_0807C970: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 +_0807C97C: + bl sub_080A139C +_0807C980: + ldr r0, _0807C990 + ldr r1, [r0] +_0807C984: + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0807C9EC + .align 2, 0 +_0807C990: .4byte gUnknown_2031F40 +_0807C994: + ldr r0, _0807C9F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0807C9EC + ldr r0, [r7] + adds r0, #0xf4 + ldrh r0, [r0] + bl sub_080A27D8 + ldr r0, [r7] + cmp r0, #0 + beq _0807C9E2 + bl sub_080034D4 + movs r0, #3 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #0 + bl sub_08002194 + bl sub_08000BF0 + bl sub_0805ECB0 + ldr r0, [r7] + bl sub_08000BF0 + str r4, [r7] +_0807C9E2: + ldr r0, _0807C9FC + bl sub_08000540 + bl sub_0807E1C4 +_0807C9EC: + movs r0, #0 +_0807C9EE: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0807C9F8: .4byte gUnknown_2037C74 +_0807C9FC: .4byte sub_08085A30 + thumb_func_end sub_0807B624 + + thumb_func_start sub_0807CA00 +sub_0807CA00: @ 0x0807CA00 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _0807CA24 + ldr r1, [r0] + adds r1, #0x94 + ldrh r5, [r1] + ldr r1, _0807CA28 + adds r7, r0, #0 + cmp r5, r1 + bls _0807CA18 + bl _0807DE38 +_0807CA18: + lsls r0, r5, #2 + ldr r1, _0807CA2C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807CA24: .4byte gUnknown_2031F40 +_0807CA28: .4byte 0x0000010B +_0807CA2C: .4byte _0807CA30 +_0807CA30: @ jump table + .4byte _0807CE60 @ case 0 + .4byte _0807CED8 @ case 1 + .4byte _0807DE38 @ case 2 + .4byte _0807DE38 @ case 3 + .4byte _0807DE38 @ case 4 + .4byte _0807DE38 @ case 5 + .4byte _0807DE38 @ case 6 + .4byte _0807DE38 @ case 7 + .4byte _0807DE38 @ case 8 + .4byte _0807DE38 @ case 9 + .4byte _0807CF34 @ case 10 + .4byte _0807CF7C @ case 11 + .4byte _0807CFF0 @ case 12 + .4byte _0807DE38 @ case 13 + .4byte _0807D05C @ case 14 + .4byte _0807DE38 @ case 15 + .4byte _0807DE38 @ case 16 + .4byte _0807DE38 @ case 17 + .4byte _0807DE38 @ case 18 + .4byte _0807DE38 @ case 19 + .4byte _0807D080 @ case 20 + .4byte _0807D0B0 @ case 21 + .4byte _0807D0C2 @ case 22 + .4byte _0807D0E4 @ case 23 + .4byte _0807DE38 @ case 24 + .4byte _0807DE38 @ case 25 + .4byte _0807D1DC @ case 26 + .4byte _0807D1FC @ case 27 + .4byte _0807D268 @ case 28 + .4byte _0807D2EC @ case 29 + .4byte _0807D310 @ case 30 + .4byte _0807D35C @ case 31 + .4byte _0807D3A8 @ case 32 + .4byte _0807D404 @ case 33 + .4byte _0807D470 @ case 34 + .4byte _0807D484 @ case 35 + .4byte _0807D498 @ case 36 + .4byte _0807D4AC @ case 37 + .4byte _0807D5D4 @ case 38 + .4byte _0807D6A4 @ case 39 + .4byte _0807D72C @ case 40 + .4byte _0807D7CC @ case 41 + .4byte _0807D7DC @ case 42 + .4byte _0807D7FC @ case 43 + .4byte _0807DE38 @ case 44 + .4byte _0807DE38 @ case 45 + .4byte _0807D920 @ case 46 + .4byte _0807D930 @ case 47 + .4byte _0807D94E @ case 48 + .4byte _0807DE38 @ case 49 + .4byte _0807D974 @ case 50 + .4byte _0807D9B4 @ case 51 + .4byte _0807D9F4 @ case 52 + .4byte _0807DE38 @ case 53 + .4byte _0807DE38 @ case 54 + .4byte _0807DE38 @ case 55 + .4byte _0807DE38 @ case 56 + .4byte _0807DE38 @ case 57 + .4byte _0807DE38 @ case 58 + .4byte _0807DE38 @ case 59 + .4byte _0807DA14 @ case 60 + .4byte _0807DA3C @ case 61 + .4byte _0807DA58 @ case 62 + .4byte _0807DA78 @ case 63 + .4byte _0807DB20 @ case 64 + .4byte _0807DB54 @ case 65 + .4byte _0807DBA0 @ case 66 + .4byte _0807DC60 @ case 67 + .4byte _0807DCD8 @ case 68 + .4byte _0807DD24 @ case 69 + .4byte _0807DD34 @ case 70 + .4byte _0807DD3A @ case 71 + .4byte _0807DD60 @ case 72 + .4byte _0807DDBC @ case 73 + .4byte _0807DDE0 @ case 74 + .4byte _0807DE38 @ case 75 + .4byte _0807DE38 @ case 76 + .4byte _0807DE38 @ case 77 + .4byte _0807DE38 @ case 78 + .4byte _0807DE38 @ case 79 + .4byte _0807DE38 @ case 80 + .4byte _0807DE38 @ case 81 + .4byte _0807DE38 @ case 82 + .4byte _0807DE38 @ case 83 + .4byte _0807DE38 @ case 84 + .4byte _0807DE38 @ case 85 + .4byte _0807DE38 @ case 86 + .4byte _0807DE38 @ case 87 + .4byte _0807DE38 @ case 88 + .4byte _0807DE38 @ case 89 + .4byte _0807DE38 @ case 90 + .4byte _0807DE38 @ case 91 + .4byte _0807DE38 @ case 92 + .4byte _0807DE38 @ case 93 + .4byte _0807DE38 @ case 94 + .4byte _0807DE38 @ case 95 + .4byte _0807DE38 @ case 96 + .4byte _0807DE38 @ case 97 + .4byte _0807DE38 @ case 98 + .4byte _0807DE38 @ case 99 + .4byte _0807DE38 @ case 100 + .4byte _0807DE38 @ case 101 + .4byte _0807DE38 @ case 102 + .4byte _0807DE38 @ case 103 + .4byte _0807DE38 @ case 104 + .4byte _0807DE38 @ case 105 + .4byte _0807DE38 @ case 106 + .4byte _0807DE38 @ case 107 + .4byte _0807DE38 @ case 108 + .4byte _0807DE38 @ case 109 + .4byte _0807DE38 @ case 110 + .4byte _0807DE38 @ case 111 + .4byte _0807DE38 @ case 112 + .4byte _0807DE38 @ case 113 + .4byte _0807DE38 @ case 114 + .4byte _0807DE38 @ case 115 + .4byte _0807DE38 @ case 116 + .4byte _0807DE38 @ case 117 + .4byte _0807DE38 @ case 118 + .4byte _0807DE38 @ case 119 + .4byte _0807DE38 @ case 120 + .4byte _0807DE38 @ case 121 + .4byte _0807DE38 @ case 122 + .4byte _0807DE38 @ case 123 + .4byte _0807D12C @ case 124 + .4byte _0807D160 @ case 125 + .4byte _0807D1B4 @ case 126 + .4byte _0807DE38 @ case 127 + .4byte _0807DE38 @ case 128 + .4byte _0807DE38 @ case 129 + .4byte _0807DE38 @ case 130 + .4byte _0807DE38 @ case 131 + .4byte _0807DE38 @ case 132 + .4byte _0807DE38 @ case 133 + .4byte _0807DE38 @ case 134 + .4byte _0807DE38 @ case 135 + .4byte _0807DE38 @ case 136 + .4byte _0807DE38 @ case 137 + .4byte _0807DE38 @ case 138 + .4byte _0807DE38 @ case 139 + .4byte _0807DE38 @ case 140 + .4byte _0807DE38 @ case 141 + .4byte _0807DE38 @ case 142 + .4byte _0807DE38 @ case 143 + .4byte _0807D854 @ case 144 + .4byte _0807D8BC @ case 145 + .4byte _0807D8F8 @ case 146 + .4byte _0807DE38 @ case 147 + .4byte _0807DE38 @ case 148 + .4byte _0807DE38 @ case 149 + .4byte _0807DE38 @ case 150 + .4byte _0807DE38 @ case 151 + .4byte _0807DE38 @ case 152 + .4byte _0807DE38 @ case 153 + .4byte _0807DE38 @ case 154 + .4byte _0807DE38 @ case 155 + .4byte _0807DE38 @ case 156 + .4byte _0807DE38 @ case 157 + .4byte _0807DE38 @ case 158 + .4byte _0807DE38 @ case 159 + .4byte _0807DE38 @ case 160 + .4byte _0807DE38 @ case 161 + .4byte _0807DE38 @ case 162 + .4byte _0807DE38 @ case 163 + .4byte _0807DE38 @ case 164 + .4byte _0807DE38 @ case 165 + .4byte _0807DE38 @ case 166 + .4byte _0807DC9C @ case 167 + .4byte _0807DE38 @ case 168 + .4byte _0807DE38 @ case 169 + .4byte _0807DE38 @ case 170 + .4byte _0807DE38 @ case 171 + .4byte _0807DE38 @ case 172 + .4byte _0807DE38 @ case 173 + .4byte _0807DE38 @ case 174 + .4byte _0807DE38 @ case 175 + .4byte _0807DE38 @ case 176 + .4byte _0807DE38 @ case 177 + .4byte _0807DE38 @ case 178 + .4byte _0807DE38 @ case 179 + .4byte _0807DE38 @ case 180 + .4byte _0807DE38 @ case 181 + .4byte _0807DE38 @ case 182 + .4byte _0807DE38 @ case 183 + .4byte _0807DE38 @ case 184 + .4byte _0807DE38 @ case 185 + .4byte _0807DE38 @ case 186 + .4byte _0807DE38 @ case 187 + .4byte _0807DE38 @ case 188 + .4byte _0807DE38 @ case 189 + .4byte _0807DE38 @ case 190 + .4byte _0807DE38 @ case 191 + .4byte _0807DE38 @ case 192 + .4byte _0807DE38 @ case 193 + .4byte _0807DE38 @ case 194 + .4byte _0807DE38 @ case 195 + .4byte _0807DE38 @ case 196 + .4byte _0807DE38 @ case 197 + .4byte _0807DE38 @ case 198 + .4byte _0807DE38 @ case 199 + .4byte _0807D294 @ case 200 + .4byte _0807DE38 @ case 201 + .4byte _0807DE38 @ case 202 + .4byte _0807DE38 @ case 203 + .4byte _0807DE38 @ case 204 + .4byte _0807DE38 @ case 205 + .4byte _0807DE38 @ case 206 + .4byte _0807DE38 @ case 207 + .4byte _0807DE38 @ case 208 + .4byte _0807DE38 @ case 209 + .4byte _0807DE38 @ case 210 + .4byte _0807DE38 @ case 211 + .4byte _0807DE38 @ case 212 + .4byte _0807DE38 @ case 213 + .4byte _0807DE38 @ case 214 + .4byte _0807DE38 @ case 215 + .4byte _0807DE38 @ case 216 + .4byte _0807DE38 @ case 217 + .4byte _0807DE38 @ case 218 + .4byte _0807DE38 @ case 219 + .4byte _0807DE38 @ case 220 + .4byte _0807DE38 @ case 221 + .4byte _0807DE38 @ case 222 + .4byte _0807DE38 @ case 223 + .4byte _0807DE38 @ case 224 + .4byte _0807DE38 @ case 225 + .4byte _0807DE38 @ case 226 + .4byte _0807DE38 @ case 227 + .4byte _0807DE38 @ case 228 + .4byte _0807DE38 @ case 229 + .4byte _0807DE38 @ case 230 + .4byte _0807DE38 @ case 231 + .4byte _0807DE38 @ case 232 + .4byte _0807DE38 @ case 233 + .4byte _0807DE38 @ case 234 + .4byte _0807DE38 @ case 235 + .4byte _0807DE38 @ case 236 + .4byte _0807DE38 @ case 237 + .4byte _0807DE38 @ case 238 + .4byte _0807DE38 @ case 239 + .4byte _0807DE38 @ case 240 + .4byte _0807DE38 @ case 241 + .4byte _0807DE38 @ case 242 + .4byte _0807DE38 @ case 243 + .4byte _0807DE38 @ case 244 + .4byte _0807DE38 @ case 245 + .4byte _0807DE38 @ case 246 + .4byte _0807DE38 @ case 247 + .4byte _0807DE38 @ case 248 + .4byte _0807DE38 @ case 249 + .4byte _0807DE38 @ case 250 + .4byte _0807DE38 @ case 251 + .4byte _0807DE38 @ case 252 + .4byte _0807DE38 @ case 253 + .4byte _0807DE38 @ case 254 + .4byte _0807DE38 @ case 255 + .4byte _0807DE38 @ case 256 + .4byte _0807DE38 @ case 257 + .4byte _0807DE38 @ case 258 + .4byte _0807DE38 @ case 259 + .4byte _0807DE38 @ case 260 + .4byte _0807DE38 @ case 261 + .4byte _0807DE38 @ case 262 + .4byte _0807DE38 @ case 263 + .4byte _0807DE38 @ case 264 + .4byte _0807DE38 @ case 265 + .4byte _0807DE38 @ case 266 + .4byte _0807DCBC @ case 267 +_0807CE60: + ldr r3, _0807CEC8 + ldr r0, [r7] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r1, _0807CECC + strh r1, [r0, #0x24] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, _0807CED0 + adds r0, r4, #0 + adds r0, #0xf0 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + strh r0, [r1, #0x26] + adds r1, r4, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + bl sub_080A27CC + ldr r1, [r7] + adds r1, #0xf4 + strh r0, [r1] + ldr r0, _0807CED4 + bl sub_080A27D8 + bl _0807DE38 + .align 2, 0 +_0807CEC8: .4byte gUnknown_20205AC +_0807CECC: .4byte 0x0000FF4C +_0807CED0: .4byte gUnknown_82D45C8 +_0807CED4: .4byte 0x00000179 +_0807CED8: + ldr r5, [r7] + adds r6, r5, #0 + adds r6, #0xe6 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + ble _0807CF0C + ldr r2, _0807CF08 + adds r0, r5, #0 + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + adds r1, #3 + strh r1, [r0, #0x24] + ldrh r0, [r6] + subs r0, #3 + strh r0, [r6] + bl _0807DE38 + .align 2, 0 +_0807CF08: .4byte gUnknown_20205AC +_0807CF0C: + ldr r2, _0807CF30 + adds r0, r5, #0 + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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 _0807DE38 + .align 2, 0 +_0807CF30: .4byte gUnknown_20205AC +_0807CF34: + ldr r4, _0807CF70 + ldr r1, _0807CF74 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r4, _0807CF78 + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0xf0 + ldrh r1, [r2] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _0807CF62 + adds r0, r1, #0 + movs r1, #0 + bl sub_080A2B3C +_0807CF62: + ldr r3, [r4] + adds r1, r3, #0 + adds r1, #0x94 + movs r2, #0 + movs r0, #0xb + bl _0807DC8A + .align 2, 0 +_0807CF70: .4byte gUnknown_2021C7C +_0807CF74: .4byte gUnknown_830D240 +_0807CF78: .4byte gUnknown_2031F40 +_0807CF7C: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x50 + beq _0807CF8C + bl _0807DE38 +_0807CF8C: + adds r0, r1, #0 + adds r0, #0x8e + ldrb r0, [r0] + ldr r2, _0807CFE0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0x14 + str r2, [sp, #8] + ldr r2, _0807CFE4 + str r2, [sp, #0xc] + movs r2, #0x78 + movs r3, #0x20 + bl sub_08076124 + ldr r1, [r7] + adds r1, #0xd2 + strb r0, [r1] + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r4, _0807CFE8 + ldr r1, _0807CFEC + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + bl _0807DE38 + .align 2, 0 +_0807CFE0: .4byte gUnknown_20205AC +_0807CFE4: .4byte 0x000FFFFF +_0807CFE8: .4byte gUnknown_2021C7C +_0807CFEC: .4byte gUnknown_830D24F +_0807CFF0: + ldr r5, _0807D04C + ldr r0, [r7] + adds r0, #0xd2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r5, #0 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, [r0] + ldr r0, _0807D050 + cmp r1, r0 + beq _0807D010 + bl _0807DE38 +_0807D010: + ldr r0, _0807D054 + movs r1, #0x78 + movs r2, #0x20 + movs r3, #0 + bl sub_08006B0C + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0807D058 + str r1, [r0] + adds r2, #0xd2 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + ldr r1, [r7] + bl _0807DDD0 + .align 2, 0 +_0807D04C: .4byte gUnknown_20205AC +_0807D050: .4byte sub_08007140 +_0807D054: .4byte gUnknown_830CF6C +_0807D058: .4byte sub_0807E010 +_0807D05C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807D07C + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x14 + strh r1, [r0] + bl _0807DE38 + .align 2, 0 +_0807D07C: .4byte gUnknown_2031F40 +_0807D080: + ldr r0, _0807D0AC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807D090 + bl _0807DE38 +_0807D090: + movs r0, #4 + bl sub_0807B064 + movs r0, #0 + movs r1, #0xff + bl sub_08003B18 + movs r0, #0 + movs r1, #3 + bl sub_08003528 + bl _0807DDCC + .align 2, 0 +_0807D0AC: .4byte gUnknown_2037C74 +_0807D0B0: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl _0807DDC8 +_0807D0C2: + ldr r0, _0807D0E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807D0D2 + bl _0807DE38 +_0807D0D2: + ldr r0, [r7] + adds r0, #0x94 + movs r1, #0x17 + strh r1, [r0] + bl _0807DE38 + .align 2, 0 +_0807D0E0: .4byte gUnknown_2037C74 +_0807D0E4: + ldr r4, _0807D100 + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0xea + ldrh r1, [r2] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bls _0807D104 + adds r0, r1, #0 + subs r0, #0x34 + strh r0, [r2] + b _0807D11E + .align 2, 0 +_0807D100: .4byte gUnknown_2031F40 +_0807D104: + movs r0, #1 + bl sub_0807B064 + 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] +_0807D11E: + ldr r0, _0807D128 + ldr r4, [r0] + bl _0807D9E0 + .align 2, 0 +_0807D128: .4byte gUnknown_2031F40 +_0807D12C: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x14 + bhi _0807D13C + bl _0807DE38 +_0807D13C: + movs r0, #3 + bl sub_0807B064 + ldr r0, _0807D15C + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x91 + strb r0, [r1] + ldr r1, [r7] + bl _0807DDD0 + .align 2, 0 +_0807D15C: .4byte gUnknown_830D0D0 +_0807D160: + ldr r2, _0807D1A8 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0807D180 + bl _0807DE38 +_0807D180: + adds r0, r1, #0 + bl sub_08006E00 + ldr r1, _0807D1AC + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #3 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _0807D1B0 + movs r1, #5 + bl sub_080A8878 + ldr r1, [r7] + bl _0807DDD0 + .align 2, 0 +_0807D1A8: .4byte gUnknown_20205AC +_0807D1AC: .4byte 0x00000452 +_0807D1B0: .4byte sub_0807EC48 +_0807D1B4: + ldr r0, _0807D1D4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807D1C4 + bl _0807DE38 +_0807D1C4: + ldr r0, _0807D1D8 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x1a + strh r1, [r0] + bl _0807DE38 + .align 2, 0 +_0807D1D4: .4byte sub_0807EC48 +_0807D1D8: .4byte gUnknown_2031F40 +_0807D1DC: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xe0 + ldrh r1, [r0] + subs r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + movs r0, #0x9e + lsls r0, r0, #0x11 + cmp r1, r0 + beq _0807D1F6 + bl _0807DE38 +_0807D1F6: + adds r1, r2, #0 + bl _0807DDD0 +_0807D1FC: + ldr r0, _0807D254 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #3 + bl sub_08006B0C + ldr r4, _0807D258 + ldr r1, [r4] + adds r1, #0x90 + strb r0, [r1] + ldr r5, _0807D25C + ldr r0, [r4] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0807D260 + str r1, [r0] + ldr r0, _0807D264 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + ldr r1, [r4] + bl _0807DDD0 + .align 2, 0 +_0807D254: .4byte gUnknown_830CFCC +_0807D258: .4byte gUnknown_2031F40 +_0807D25C: .4byte gUnknown_20205AC +_0807D260: .4byte sub_0807A4BC +_0807D264: .4byte gUnknown_830D00C +_0807D268: + ldr r2, [r7] + adds r1, r2, #0 + adds r1, #0xe0 + ldrh r0, [r1] + subs r0, #3 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa6 + bne _0807D282 + subs r1, #0x4c + movs r0, #0xc8 + strh r0, [r1] +_0807D282: + ldr r1, _0807D290 + movs r0, #0 + bl sub_08001144 + bl _0807DE38 + .align 2, 0 +_0807D290: .4byte 0x00001241 +_0807D294: + ldr r2, _0807D2E8 + ldr r4, [r7] + adds r3, r4, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #2 + strh r1, [r0, #0x22] + adds r0, r4, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #2 + strh r1, [r0, #0x22] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0x22 + ldrsh r1, [r0, r2] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _0807D2DA + bl _0807DE38 +_0807D2DA: + adds r1, r4, #0 + adds r1, #0x94 + movs r0, #0x1d + strh r0, [r1] + bl _0807DE38 + .align 2, 0 +_0807D2E8: .4byte gUnknown_20205AC +_0807D2EC: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807D30C + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x1e + strh r1, [r0] + bl _0807DE38 + .align 2, 0 +_0807D30C: .4byte gUnknown_2031F40 +_0807D310: + ldr r0, _0807D354 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807D320 + bl _0807DE38 +_0807D320: + ldr r0, [r7] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807D358 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #2 + bl sub_0807B064 + ldr r1, [r7] + bl _0807DDD0 + .align 2, 0 +_0807D354: .4byte gUnknown_2037C74 +_0807D358: .4byte gUnknown_20205AC +_0807D35C: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r5, _0807D3A0 + adds r0, r5, #0 + movs r1, #0x6f + movs r2, #0xaa + movs r3, #0 + bl sub_08006B0C + ldr r4, _0807D3A4 + ldr r1, [r4] + adds r1, #0x90 + strb r0, [r1] + movs r2, #0xa + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0x81 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #0x91 + strb r0, [r1] + ldr r1, [r4] + bl _0807DDD0 + .align 2, 0 +_0807D3A0: .4byte gUnknown_830D00C +_0807D3A4: .4byte gUnknown_2031F40 +_0807D3A8: + ldr r0, _0807D3F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807D3C6 + movs r0, #0x2e + bl sub_080A306C + ldr r0, _0807D3FC + ldr r1, [r0] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807D3C6: + ldr r3, _0807D400 + ldr r0, _0807D3FC + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r2, #0x91 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + bl _0807DE38 + .align 2, 0 +_0807D3F8: .4byte gUnknown_2037C74 +_0807D3FC: .4byte gUnknown_2031F40 +_0807D400: .4byte gUnknown_20205AC +_0807D404: + ldr r5, _0807D468 + ldr r4, [r7] + adds r2, r4, #0 + adds r2, #0x90 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r6, r4, #0 + adds r6, #0x91 + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r5 + movs r0, #0x26 + ldrsh r1, [r3, r0] + movs r0, #0x5a + rsbs r0, r0, #0 + cmp r1, r0 + ble _0807D44A + bl _0807DE38 +_0807D44A: + movs r2, #1 + strh r2, [r3, #0x30] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x30] + adds r1, r4, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r0, _0807D46C + b _0807D692 + .align 2, 0 +_0807D468: .4byte gUnknown_20205AC +_0807D46C: .4byte sub_0807ED1C +_0807D470: + ldr r2, _0807D480 + movs r0, #8 + movs r1, #0x10 + bl sub_080A22E8 + bl _0807DDCC + .align 2, 0 +_0807D480: .4byte 0x0000FFFF +_0807D484: + ldr r2, _0807D494 + movs r0, #8 + movs r1, #0x10 + bl sub_080A22E8 + bl _0807DDCC + .align 2, 0 +_0807D494: .4byte 0x0000FFFF +_0807D498: + ldr r2, _0807D4A8 + movs r0, #8 + movs r1, #0x10 + bl sub_080A22E8 + bl _0807DDCC + .align 2, 0 +_0807D4A8: .4byte 0x0000FFFF +_0807D4AC: + ldr r5, _0807D518 + ldr r0, [r5] + adds r0, #0xf0 + ldrh r0, [r0] + bl sub_0806E2CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807D524 + ldr r4, _0807D51C + ldr r2, [r5] + adds r2, #0x8e + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldr r1, _0807D520 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #1] + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007F70 + b _0807D53A + .align 2, 0 +_0807D518: .4byte gUnknown_2031F40 +_0807D51C: .4byte gUnknown_20205AC +_0807D520: .4byte gUnknown_830D110 +_0807D524: + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807D5C8 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007F70 +_0807D53A: + ldr r5, _0807D5CC + ldr r0, [r5] + adds r0, #0x8f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807D5C8 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007F70 + ldr r2, [r5] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x28 + strh r1, [r0, #0x20] + adds r2, #0x8f + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xc8 + strh r1, [r0, #0x20] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xc0 + strh r1, [r0, #0x22] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0807D5D0 + strh r1, [r0, #0x22] + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r1, [r5] + bl _0807DDD0 + .align 2, 0 +_0807D5C8: .4byte gUnknown_20205AC +_0807D5CC: .4byte gUnknown_2031F40 +_0807D5D0: .4byte 0x0000FFE0 +_0807D5D4: + ldr r4, _0807D69C + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + subs r1, #3 + movs r5, #0 + strh r1, [r0, #0x26] + adds r2, #0x8f + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x26] + adds r0, #0xa3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _0807D61C + movs r0, #0x2d + bl sub_080A306C +_0807D61C: + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x8e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r6, #0x26 + ldrsh r1, [r0, r6] + movs r0, #0xde + rsbs r0, r0, #0 + cmp r1, r0 + blt _0807D63C + bl _0807DE38 +_0807D63C: + adds r0, r2, #0 + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x30] + adds r0, r2, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x30] + adds r1, r2, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + adds r0, #0x8f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, _0807D6A0 +_0807D692: + movs r1, #5 + bl sub_080A8878 + b _0807DE38 + .align 2, 0 +_0807D69C: .4byte gUnknown_20205AC +_0807D6A0: .4byte sub_0807EDD4 +_0807D6A4: + ldr r4, _0807D728 + ldr r2, [r7] + adds r3, r2, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] + adds r2, #0x91 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + adds r1, #3 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r2, #0x26 + ldrsh r1, [r0, r2] + movs r0, #0xde + rsbs r0, r0, #0 + cmp r1, r0 + ble _0807D6E6 + b _0807DE38 +_0807D6E6: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0x94 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + adds r1, #0x90 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + b _0807DE38 + .align 2, 0 +_0807D728: .4byte gUnknown_20205AC +_0807D72C: + ldr r0, _0807D7B8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807D73A + b _0807DE38 +_0807D73A: + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #1 + bl sub_0807B064 + ldr r0, [r7] + adds r0, #0xe0 + movs r1, #0xa6 + strh r1, [r0] + movs r0, #3 + bl sub_0807B064 + ldr r0, [r7] + adds r0, #0xe4 + movs r1, #0xce + lsls r1, r1, #1 + strh r1, [r0] + ldr r0, _0807D7BC + movs r4, #0x14 + rsbs r4, r4, #0 + movs r1, #0x78 + adds r2, r4, #0 + movs r3, #3 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x90 + strb r0, [r1] + ldr r5, _0807D7C0 + ldr r0, [r7] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0807D7C4 + str r1, [r0] + ldr r0, _0807D7C8 + movs r1, #0x78 + adds r2, r4, #0 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + b _0807DE38 + .align 2, 0 +_0807D7B8: .4byte gUnknown_2037C74 +_0807D7BC: .4byte gUnknown_830CFCC +_0807D7C0: .4byte gUnknown_20205AC +_0807D7C4: .4byte sub_0807A4BC +_0807D7C8: .4byte gUnknown_830D00C +_0807D7CC: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + b _0807DDC8 +_0807D7DC: + movs r1, #0x92 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0807D7F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807D7F4 + b _0807DE38 +_0807D7F4: + b _0807DDCC + .align 2, 0 +_0807D7F8: .4byte gUnknown_2037C74 +_0807D7FC: + ldr r2, _0807D850 + ldr r4, [r7] + adds r3, r4, #0 + adds r3, #0x90 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #4 + strh r1, [r0, #0x26] + adds r0, r4, #0 + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #4 + strh r1, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r6, #0x26 + ldrsh r1, [r0, r6] + movs r2, #0x22 + ldrsh r0, [r0, r2] + adds r1, r1, r0 + cmp r1, #0x40 + beq _0807D842 + b _0807DE38 +_0807D842: + adds r0, r4, #0 + adds r0, #0x94 + movs r1, #0x90 + strh r1, [r0] + movs r0, #0 + str r0, [r4, #0x64] + b _0807DE38 + .align 2, 0 +_0807D850: .4byte gUnknown_20205AC +_0807D854: + movs r1, #0xb2 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r4, _0807D8B0 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0xe0 + ldrh r0, [r1] + adds r0, #3 + strh r0, [r1] + adds r1, #4 + ldrh r0, [r1] + adds r0, #3 + strh r0, [r1] + ldr r0, [r2, #0x64] + adds r0, #1 + str r0, [r2, #0x64] + cmp r0, #0xa + bne _0807D898 + ldr r0, _0807D8B4 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0807D8B8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #0xc] +_0807D898: + ldr r1, [r4] + adds r3, r1, #0 + adds r3, #0xe0 + movs r6, #0 + ldrsh r0, [r3, r6] + movs r2, #0x9e + lsls r2, r2, #1 + cmp r0, r2 + bgt _0807D8AC + b _0807DE38 +_0807D8AC: + strh r2, [r3] + b _0807DDD0 + .align 2, 0 +_0807D8B0: .4byte gUnknown_2031F40 +_0807D8B4: .4byte sub_0807EC48 +_0807D8B8: .4byte gUnknown_3005B60 +_0807D8BC: + ldr r0, [r7] + adds r0, #0x90 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807D8F4 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r3, [r7] + adds r2, r3, #0 + adds r2, #0x94 + ldrh r0, [r2] + adds r0, #1 + movs r1, #0 + strh r0, [r2] + str r1, [r3, #0x64] + b _0807DE38 + .align 2, 0 +_0807D8F4: .4byte gUnknown_20205AC +_0807D8F8: + ldr r0, _0807D918 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0807D908 + b _0807DE38 +_0807D908: + ldr r0, _0807D91C + ldr r2, [r0] + adds r1, r2, #0 + adds r1, #0x94 + movs r0, #0x2e + strh r0, [r1] + str r3, [r2, #0x64] + b _0807DE38 + .align 2, 0 +_0807D918: .4byte sub_0807EC48 +_0807D91C: .4byte gUnknown_2031F40 +_0807D920: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0xa + beq _0807D92E + b _0807DE38 +_0807D92E: + b _0807DDD0 +_0807D930: + ldr r1, [r7] + adds r5, r1, #0 + adds r5, #0xe0 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0xae + lsls r6, r6, #1 + cmp r0, r6 + bgt _0807D94A + b _0807DE38 +_0807D94A: + strh r6, [r5] + b _0807DDD0 +_0807D94E: + ldr r0, _0807D96C + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + ldr r2, _0807D970 + ldr r1, [r2] + adds r1, #0x91 + strb r0, [r1] + ldr r0, [r2] + adds r0, #0x94 + movs r1, #0x32 + strh r1, [r0] + b _0807DE38 + .align 2, 0 +_0807D96C: .4byte gUnknown_830D0B8 +_0807D970: .4byte gUnknown_2031F40 +_0807D974: + ldr r2, _0807D9B0 + ldr r0, [r7] + adds r0, #0x91 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0807D992 + b _0807DE38 +_0807D992: + adds r0, r1, #0 + bl sub_08006E00 + movs r0, #6 + bl sub_0807B064 + ldr r1, [r7] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0x9f + bl sub_080A306C + b _0807DE38 + .align 2, 0 +_0807D9B0: .4byte gUnknown_20205AC +_0807D9B4: + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0xea + ldrh r3, [r2] + ldr r0, _0807D9CC + cmp r3, r0 + bhi _0807D9D0 + adds r0, r3, #0 + adds r0, #0x34 + strh r0, [r2] + b _0807D9DE + .align 2, 0 +_0807D9CC: .4byte 0x000003FF +_0807D9D0: + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0807D9DE: + ldr r4, [r7] +_0807D9E0: + adds r0, r4, #0 + adds r0, #0xea + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #8 + bl __divsi3 + adds r4, #0xe8 + strh r0, [r4] + b _0807DE38 +_0807D9F4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807DA10 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x3c + strh r1, [r0] + b _0807DE38 + .align 2, 0 +_0807DA10: .4byte gUnknown_2031F40 +_0807DA14: + ldr r4, _0807DA38 + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807DA22 + b _0807DE38 +_0807DA22: + movs r0, #5 + bl sub_0807B064 + movs r0, #7 + bl sub_0807B064 + ldrb r0, [r4, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #8] + b _0807DDCC + .align 2, 0 +_0807DA38: .4byte gUnknown_2037C74 +_0807DA3C: + ldr r2, _0807DA54 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + b _0807DDC8 + .align 2, 0 +_0807DA54: .4byte gUnknown_2037C74 +_0807DA58: + movs r1, #0xa2 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0807DA74 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807DA70 + b _0807DE38 +_0807DA70: + b _0807DDCC + .align 2, 0 +_0807DA74: .4byte gUnknown_2037C74 +_0807DA78: + ldr r0, _0807DB0C + movs r2, #8 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #0 + bl sub_08006B0C + ldr r5, _0807DB10 + ldr r1, [r5] + adds r1, #0xd3 + movs r6, #0 + strb r0, [r1] + ldr r4, _0807DB14 + ldr r2, [r5] + adds r2, #0xd3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x4a + strh r1, [r0, #0x34] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0807DB18 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r5] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + bl sub_08007F70 + ldr r0, [r5] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + ldr r2, _0807DB1C + movs r1, #0x10 + bl sub_080A22E8 + ldr r2, [r5] + adds r1, r2, #0 + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + str r6, [r2, #0x64] + b _0807DE38 + .align 2, 0 +_0807DB0C: .4byte gUnknown_830CF6C +_0807DB10: .4byte gUnknown_2031F40 +_0807DB14: .4byte gUnknown_20205AC +_0807DB18: .4byte sub_0807E0E4 +_0807DB1C: .4byte 0x0000FFFF +_0807DB20: + ldr r2, _0807DB4C + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + ldr r1, _0807DB50 + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, [r7] + b _0807DDD0 + .align 2, 0 +_0807DB4C: .4byte gUnknown_20205AC +_0807DB50: .4byte 0x0000FFFF +_0807DB54: + ldr r2, _0807DB90 + ldr r3, [r7] + adds r0, r3, #0 + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0807DB94 + cmp r1, r0 + beq _0807DB72 + b _0807DE38 +_0807DB72: + adds r0, r3, #0 + adds r0, #0xf2 + ldrh r2, [r0] + lsls r0, r2, #3 + ldr r1, _0807DB98 + adds r0, r0, r1 + ldr r1, _0807DB9C + ldr r1, [r1] + ldr r1, [r1, #0x10] + ldr r3, [r3, #0x6c] + bl sub_08034954 + ldr r1, [r7] + b _0807DDD0 + .align 2, 0 +_0807DB90: .4byte gUnknown_20205AC +_0807DB94: .4byte sub_08007140 +_0807DB98: .4byte gUnknown_82DDA1C +_0807DB9C: .4byte gUnknown_2024178 +_0807DBA0: + ldr r4, _0807DC54 + ldr r2, [r7] + adds r6, r2, #0 + adds r6, #0x8f + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r5, #0 + movs r1, #0x78 + strh r1, [r0, #0x20] + ldrb r0, [r6] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r3, _0807DC58 + adds r2, #0xf2 + ldrh r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + adds r0, #0x3c + strh r0, [r1, #0x22] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x24] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r5, [r0, #0x26] + ldrb r1, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007EC0 + ldr r3, [r7] + adds r0, r3, #0 + adds r0, #0x8f + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0x14 + str r2, [sp, #8] + ldr r2, _0807DC5C + str r2, [sp, #0xc] + adds r3, #0xf2 + ldrh r2, [r3] + str r2, [sp, #0x10] + movs r2, #0x78 + movs r3, #0x54 + bl sub_08075E40 + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_0800730C + ldr r0, [r7] + adds r0, #0xd3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, [r7] + b _0807DDD0 + .align 2, 0 +_0807DC54: .4byte gUnknown_20205AC +_0807DC58: .4byte gUnknown_82D45C8 +_0807DC5C: .4byte 0x000FFFFF +_0807DC60: + movs r1, #0xaa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r4, _0807DC90 + ldr r1, _0807DC94 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r0, _0807DC98 + ldr r3, [r0] + adds r1, r3, #0 + adds r1, #0x94 + movs r2, #0 + movs r0, #0xa7 +_0807DC8A: + strh r0, [r1] + str r2, [r3, #0x64] + b _0807DE38 + .align 2, 0 +_0807DC90: .4byte gUnknown_2021C7C +_0807DC94: .4byte gUnknown_830D258 +_0807DC98: .4byte gUnknown_2031F40 +_0807DC9C: + ldr r3, [r7] + ldr r0, [r3, #0x64] + adds r0, #1 + str r0, [r3, #0x64] + cmp r0, #0x3c + bhi _0807DCAA + b _0807DE38 +_0807DCAA: + adds r0, r3, #0 + adds r0, #0x94 + movs r2, #0 + ldr r1, _0807DCB8 + strh r1, [r0] + str r2, [r3, #0x64] + b _0807DE38 + .align 2, 0 +_0807DCB8: .4byte 0x0000010B +_0807DCBC: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807DCC8 + b _0807DE38 +_0807DCC8: + ldr r0, _0807DCD4 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0x44 + strh r1, [r0] + b _0807DE38 + .align 2, 0 +_0807DCD4: .4byte gUnknown_2031F40 +_0807DCD8: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0xa + bne _0807DCEA + ldr r0, _0807DD18 + bl sub_080A29AC +_0807DCEA: + ldr r1, [r7] + ldr r0, [r1, #0x64] + cmp r0, #0xfa + beq _0807DCF4 + b _0807DE38 +_0807DCF4: + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + movs r5, #0 + strh r0, [r1] + ldr r4, _0807DD1C + ldr r1, _0807DD20 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + ldr r0, [r7] + str r5, [r0, #0x64] + b _0807DE38 + .align 2, 0 +_0807DD18: .4byte 0x00000173 +_0807DD1C: .4byte gUnknown_2021C7C +_0807DD20: .4byte gUnknown_830D26A +_0807DD24: + ldr r1, [r7] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x3c + beq _0807DD32 + b _0807DE38 +_0807DD32: + b _0807DDD0 +_0807DD34: + bl sub_0807EB84 + b _0807DDCC +_0807DD3A: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xee + ldrb r0, [r0] + cmp r0, #0 + beq _0807DD4A + movs r0, #1 + b _0807DE3A +_0807DD4A: + ldr r0, _0807DD5C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807DE38 + adds r1, r2, #0 + b _0807DDD0 + .align 2, 0 +_0807DD5C: .4byte gUnknown_3002360 +_0807DD60: + ldr r0, _0807DDA4 + ldrb r0, [r0] + movs r1, #0 + bl sub_0807AF08 + ldr r1, _0807DDA8 + ldr r0, _0807DDAC + str r0, [r1] + ldr r7, _0807DDB0 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0807DDB4 + adds r0, r0, r5 + movs r1, #1 + movs r2, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0807DDCC + ldrb r3, [r7] + adds r0, r3, #0 + muls r0, r6, r0 + adds r0, r0, r5 + ldr r1, _0807DDB8 + ldr r1, [r1] + adds r1, #0x8f + ldrb r2, [r1] + adds r1, r4, #0 + bl sub_0813E2D8 + b _0807DDCC + .align 2, 0 +_0807DDA4: .4byte gUnknown_2037282 +_0807DDA8: .4byte gUnknown_3005F28 +_0807DDAC: .4byte sub_0807B044 +_0807DDB0: .4byte gUnknown_2031F38 +_0807DDB4: .4byte gUnknown_2024190 +_0807DDB8: .4byte gUnknown_2031F40 +_0807DDBC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 +_0807DDC8: + bl sub_080A139C +_0807DDCC: + ldr r0, _0807DDDC + ldr r1, [r0] +_0807DDD0: + adds r1, #0x94 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0807DE38 + .align 2, 0 +_0807DDDC: .4byte gUnknown_2031F40 +_0807DDE0: + ldr r0, _0807DE44 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0807DE38 + ldr r0, [r7] + adds r0, #0xf4 + ldrh r0, [r0] + bl sub_080A27D8 + ldr r0, [r7] + cmp r0, #0 + beq _0807DE2E + bl sub_080034D4 + movs r0, #3 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #0 + bl sub_08002194 + bl sub_08000BF0 + bl sub_0805ECB0 + ldr r0, [r7] + bl sub_08000BF0 + str r4, [r7] +_0807DE2E: + ldr r0, _0807DE48 + bl sub_08000540 + bl sub_0807E1C4 +_0807DE38: + movs r0, #0 +_0807DE3A: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0807DE44: .4byte gUnknown_2037C74 +_0807DE48: .4byte sub_08085A30 + thumb_func_end sub_0807CA00 + + thumb_func_start sub_0807DE4C +sub_0807DE4C: @ 0x0807DE4C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0807DE68 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _0807DE6C + cmp r0, #4 + beq _0807DE7C + b _0807DEEC + .align 2, 0 +_0807DE68: .4byte gUnknown_3002360 +_0807DE6C: + movs r0, #4 + strb r0, [r1] + ldr r1, _0807DE78 + movs r0, #1 + b _0807DEEA + .align 2, 0 +_0807DE78: .4byte gUnknown_30027A0 +_0807DE7C: + ldr r0, _0807DEB8 + ldr r1, _0807DEBC + mov r8, r1 + str r1, [r0] + ldr r7, _0807DEC0 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0807DEC4 + adds r0, r0, r5 + movs r1, #1 + movs r2, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0807DECC + ldrb r3, [r7] + adds r0, r3, #0 + muls r0, r6, r0 + adds r0, r0, r5 + ldr r1, _0807DEC8 + ldr r1, [r1] + adds r1, #0x8f + ldrb r2, [r1] + adds r1, r4, #0 + bl sub_0813E2D8 + b _0807DEE6 + .align 2, 0 +_0807DEB8: .4byte gUnknown_3005F28 +_0807DEBC: .4byte sub_0807E588 +_0807DEC0: .4byte gUnknown_2031F38 +_0807DEC4: .4byte gUnknown_2024190 +_0807DEC8: .4byte gUnknown_2031F40 +_0807DECC: + bl sub_08076C68 + cmp r0, #0 + beq _0807DEE0 + ldr r0, _0807DEDC + bl sub_08000540 + b _0807DEE6 + .align 2, 0 +_0807DEDC: .4byte sub_0807EE9C +_0807DEE0: + mov r0, r8 + bl sub_08000540 +_0807DEE6: + ldr r1, _0807DF10 + movs r0, #0xff +_0807DEEA: + strb r0, [r1] +_0807DEEC: + bl sub_0800AE18 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807DEFA + bl sub_080A89D4 +_0807DEFA: + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807DF10: .4byte gUnknown_2031F38 + thumb_func_end sub_0807DE4C + + thumb_func_start sub_0807DF14 +sub_0807DF14: @ 0x0807DF14 + push {r4, r5, r6, lr} + bl sub_0807A738 + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #1 + adds r0, r5, #0 + ands r0, r6 + cmp r0, #0 + beq _0807DF52 + ldr r4, _0807DF80 + ldrh r1, [r4] + ldr r0, _0807DF84 + cmp r1, r0 + bne _0807DF3C + ldr r0, _0807DF88 + bl sub_08000540 +_0807DF3C: + ldrh r1, [r4] + ldr r0, _0807DF8C + cmp r1, r0 + bne _0807DF4C + ldr r0, _0807DF90 + ldr r0, [r0] + adds r0, #0x72 + strb r6, [r0] +_0807DF4C: + movs r0, #0 + bl sub_0800A1B0 +_0807DF52: + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _0807DF7A + ldr r0, _0807DF80 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _0807DF8C + cmp r1, r0 + bne _0807DF74 + ldr r0, _0807DF90 + ldr r0, [r0] + adds r0, #0x73 + movs r1, #1 + strb r1, [r0] +_0807DF74: + movs r0, #1 + bl sub_0800A1B0 +_0807DF7A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807DF80: .4byte gUnknown_202207C +_0807DF84: .4byte 0x0000DCBA +_0807DF88: .4byte sub_0807DE4C +_0807DF8C: .4byte 0x0000ABCD +_0807DF90: .4byte gUnknown_2031F40 + thumb_func_end sub_0807DF14 + + thumb_func_start sub_0807DF94 +sub_0807DF94: @ 0x0807DF94 + 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, r4, r0 + strh r4, [r5, #0x22] + ldrh r0, [r5, #0x30] + ldrh r2, [r5, #0x38] + adds r0, r0, r2 + strh r0, [r5, #0x38] + movs r1, #0x38 + ldrsh r0, [r5, r1] + movs r1, #0xa + bl __divsi3 + strh r0, [r5, #0x20] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #0x4c + ble _0807DFE2 + movs r0, #0x4c + strh r0, [r5, #0x22] + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] + muls r0, r1, r0 + rsbs r0, r0, #0 + movs r1, #0x64 + bl __divsi3 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] +_0807DFE2: + movs r1, #0x20 + ldrsh r0, [r5, r1] + cmp r0, #0x78 + bne _0807DFEE + movs r0, #0 + strh r0, [r5, #0x30] +_0807DFEE: + ldrh r0, [r5, #0x36] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r5, #0x2e] + movs r1, #0x34 + ldrsh r0, [r5, r1] + cmp r0, #4 + bne _0807E006 + movs r0, #1 + strh r0, [r5, #0x3c] + ldr r0, _0807E00C + str r0, [r5, #0x1c] +_0807E006: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807E00C: .4byte sub_08007140 + thumb_func_end sub_0807DF94 + + thumb_func_start sub_0807E010 +sub_0807E010: @ 0x0807E010 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _0807E078 + movs r2, #0x2e + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0x16 + bne _0807E038 + movs r0, #0x38 + bl sub_080A306C +_0807E038: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2c + bne _0807E06E + movs r0, #0x8c + bl sub_080A306C + ldr r0, _0807E07C + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x2e] + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + ldr r2, _0807E080 + str r2, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0807E06E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E078: .4byte gUnknown_830D2A4 +_0807E07C: .4byte sub_0807E084 +_0807E080: .4byte 0x0000FFFF + thumb_func_end sub_0807E010 + + thumb_func_start sub_0807E084 +sub_0807E084: @ 0x0807E084 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x14 + bne _0807E098 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_0807E098: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _0807E0D6 + ldr r1, _0807E0DC + movs r2, #0x2e + ldrsh r0, [r4, r2] + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + ldrh r0, [r4, #0x26] + subs r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x17 + bne _0807E0D6 + adds r0, r4, #0 + bl sub_08006E00 + ldr r0, _0807E0E0 + ldr r0, [r0] + adds r0, #0x94 + movs r1, #0xe + strh r1, [r0] +_0807E0D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E0DC: .4byte gUnknown_830D2A4 +_0807E0E0: .4byte gUnknown_2031F40 + thumb_func_end sub_0807E084 + + thumb_func_start sub_0807E0E4 +sub_0807E0E4: @ 0x0807E0E4 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x32] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0807E114 + ldrh r0, [r4, #0x22] + adds r0, #4 + strh r0, [r4, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _0807E164 + adds r0, r2, #1 + strh r0, [r4, #0x32] + movs r0, #0x16 + strh r0, [r4, #0x2e] + movs r0, #0x38 + bl sub_080A306C + b _0807E164 +_0807E114: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x42 + bne _0807E122 + movs r0, #0x39 + bl sub_080A306C +_0807E122: + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0x5c + bne _0807E130 + movs r0, #0x3a + bl sub_080A306C +_0807E130: + movs r3, #0x2e + ldrsh r0, [r4, r3] + cmp r0, #0x6b + bne _0807E13E + movs r0, #0x3b + bl sub_080A306C +_0807E13E: + ldr r1, _0807E16C + movs r2, #0x2e + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #0x26] + adds r0, r0, r3 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6c + bne _0807E164 + ldr r0, _0807E170 + str r0, [r4, #0x1c] +_0807E164: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E16C: .4byte gUnknown_830D2A4 +_0807E170: .4byte sub_08007140 + thumb_func_end sub_0807E0E4 + + thumb_func_start sub_0807E174 +sub_0807E174: @ 0x0807E174 + push {r4, r5, lr} + ldr r0, _0807E1B0 + ldrh r0, [r0] + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0807E1B4 + adds r4, r4, r0 + ldr r0, _0807E1B8 + ldrh r2, [r4, #0x38] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r5, _0807E1BC + adds r1, r1, r5 + bl sub_080088B8 + ldr r0, _0807E1C0 + ldrh r2, [r4, #0xc] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + bl sub_080088B8 + ldrh r0, [r4, #0x38] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0807E1B0: .4byte gUnknown_2037280 +_0807E1B4: .4byte gUnknown_830D114 +_0807E1B8: .4byte gUnknown_2021C40 +_0807E1BC: .4byte gUnknown_82EA31C +_0807E1C0: .4byte gUnknown_2021C54 + thumb_func_end sub_0807E174 + + thumb_func_start sub_0807E1C4 +sub_0807E1C4: @ 0x0807E1C4 + push {r4, lr} + sub sp, #0x20 + ldr r0, _0807E20C + ldrh r0, [r0] + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0807E210 + adds r4, r4, r0 + ldr r0, _0807E214 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0807E218 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0807E21C + mov r1, sp + bl sub_08008828 + ldr r0, _0807E220 + ldrh r2, [r4, #0xc] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _0807E224 + adds r1, r1, r2 + bl sub_080088B8 + add sp, #0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E20C: .4byte gUnknown_2037280 +_0807E210: .4byte gUnknown_830D114 +_0807E214: .4byte gUnknown_2037282 +_0807E218: .4byte gUnknown_2024190 +_0807E21C: .4byte gUnknown_2021C40 +_0807E220: .4byte gUnknown_2021C54 +_0807E224: .4byte gUnknown_82EA31C + thumb_func_end sub_0807E1C4 + + thumb_func_start sub_0807E228 +sub_0807E228: @ 0x0807E228 + push {r4, r5, r6, r7, lr} + sub sp, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r1, #4 + subs r2, r2, r1 + lsls r2, r2, #2 + ldr r1, _0807E384 + adds r5, r2, r1 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0807E388 + adds r0, r0, r1 + movs r1, #0x38 + bl sub_0806A058 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + add r4, sp, #0x34 + movs r0, #0xfe + strb r0, [r4] + ldr r6, _0807E38C + ldrh r1, [r5, #0xc] + movs r3, #1 + str r3, [sp] + ldr r0, [r5, #0x24] + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + str r0, [sp, #0xc] + adds r0, r6, #0 + movs r3, #0x20 + bl sub_08067730 + adds r2, r5, #0 + adds r2, #0xe + adds r0, r6, #0 + movs r1, #0x27 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0xf + adds r0, r6, #0 + movs r1, #0x28 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x10 + adds r0, r6, #0 + movs r1, #0x29 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x11 + adds r0, r6, #0 + movs r1, #0x2a + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x12 + adds r0, r6, #0 + movs r1, #0x2b + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x13 + adds r0, r6, #0 + movs r1, #0x2c + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x2b + adds r0, r6, #0 + movs r1, #7 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x36 + adds r0, r6, #0 + movs r1, #0x31 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x14 + adds r0, r6, #0 + movs r1, #0x2e + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x1d + adds r0, r6, #0 + movs r1, #0x17 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x1e + adds r0, r6, #0 + movs r1, #0x18 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x1c + adds r0, r6, #0 + movs r1, #0x16 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x1f + adds r0, r6, #0 + movs r1, #0x21 + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x20 + adds r0, r6, #0 + movs r1, #0x2f + bl sub_0806A774 + adds r2, r5, #0 + adds r2, #0x37 + adds r0, r6, #0 + movs r1, #0x30 + bl sub_0806A774 + adds r0, r6, #0 + movs r1, #0x23 + adds r2, r4, #0 + bl sub_0806A774 + mov r4, sp + adds r4, #0x35 + movs r0, #0 + strb r0, [r4] + ldrh r0, [r5, #0x28] + cmp r0, #0 + beq _0807E3A0 + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807E394 + add r0, sp, #0x10 + adds r1, r5, #0 + bl sub_0807E3B4 + ldr r0, _0807E390 + 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_0806A774 + adds r2, r5, #0 + adds r2, #0x28 + adds r0, r6, #0 + movs r1, #0xc + bl sub_0806A774 + b _0807E3A0 + .align 2, 0 +_0807E384: .4byte gUnknown_830D114 +_0807E388: .4byte gUnknown_2024190 +_0807E38C: .4byte gUnknown_20243E8 +_0807E390: .4byte gUnknown_2031E60 +_0807E394: + adds r2, r5, #0 + adds r2, #0x28 + adds r0, r6, #0 + movs r1, #0xc + bl sub_0806A774 +_0807E3A0: + ldr r0, _0807E3B0 + bl sub_0806884C + add sp, #0x38 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807E3B0: .4byte gUnknown_20243E8 + thumb_func_end sub_0807E228 + + thumb_func_start sub_0807E3B4 +sub_0807E3B4: @ 0x0807E3B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, _0807E408 + adds r0, r5, #0 + adds r0, #0x2a + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + adds r1, r4, #0 + movs r3, #8 +_0807E3CE: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0807E3CE + adds r0, r4, #0 + adds r0, #0x12 + adds r1, r5, #0 + adds r1, #0x2b + bl sub_080088B8 + ldr r1, [r5, #0x18] + lsrs r0, r1, #0x18 + strb r0, [r4, #0x1a] + lsrs r0, r1, #0x10 + 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 +_0807E408: .4byte gUnknown_830D204 + thumb_func_end sub_0807E3B4 + + thumb_func_start sub_0807E40C +sub_0807E40C: @ 0x0807E40C + push {r4, r5, r6, lr} + ldr r6, _0807E438 + ldrh r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0807E43C + adds r0, r0, r4 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0807E440 + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0807E442 + .align 2, 0 +_0807E438: .4byte gUnknown_2037282 +_0807E43C: .4byte gUnknown_2024190 +_0807E440: + movs r0, #0 +_0807E442: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0807E40C + + thumb_func_start sub_0807E448 +sub_0807E448: @ 0x0807E448 + push {lr} + ldr r0, _0807E45C + ldrb r0, [r0] + ldr r1, _0807E460 + ldrb r1, [r1] + bl sub_0807E228 + pop {r0} + bx r0 + .align 2, 0 +_0807E45C: .4byte gUnknown_2037282 +_0807E460: .4byte gUnknown_2037280 + thumb_func_end sub_0807E448 + + thumb_func_start sub_0807E464 +sub_0807E464: @ 0x0807E464 + push {r4, r5, r6, lr} + bl sub_0807B600 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #1 + bne _0807E4CE + ldr r5, _0807E4F0 + ldr r0, [r5] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0807E4F4 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r5] + adds r0, #0x8f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_0800730C + ldr r0, _0807E4F8 + ldrb r4, [r0] + ldrb r0, [r0, #1] + movs r1, #6 + bl __umodsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0807AF08 + bl sub_08076C68 + cmp r0, #0 + bne _0807E4C8 + ldr r0, [r5] + adds r2, r0, #0 + adds r2, #0x74 + ldr r1, _0807E4FC + strh r1, [r2] + adds r0, #0x93 + strb r6, [r0] +_0807E4C8: + ldr r0, _0807E500 + bl sub_08000540 +_0807E4CE: + bl sub_0807AFF0 + bl sub_0807DF14 + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807E4F0: .4byte gUnknown_2031F40 +_0807E4F4: .4byte gUnknown_20205AC +_0807E4F8: .4byte gUnknown_2031F38 +_0807E4FC: .4byte 0x0000ABCD +_0807E500: .4byte sub_0807E504 + thumb_func_end sub_0807E464 + + thumb_func_start sub_0807E504 +sub_0807E504: @ 0x0807E504 + push {r4, lr} + bl sub_0807A738 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08076C68 + cmp r0, #0 + beq _0807E524 + ldr r0, _0807E520 + bl sub_08000540 + b _0807E564 + .align 2, 0 +_0807E520: .4byte sub_0807DE4C +_0807E524: + bl sub_0807DF14 + cmp r4, #0 + bne _0807E564 + ldr r4, _0807E57C + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x72 + ldrh r1, [r0] + ldr r0, _0807E580 + cmp r1, r0 + bne _0807E564 + adds r1, r2, #0 + adds r1, #0x74 + ldr r0, _0807E584 + strh r0, [r1] + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + adds r1, #0x74 + movs r2, #0x14 + bl sub_0800A070 + ldr r0, [r4] + adds r0, #0x72 + movs r1, #2 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x73 + strb r1, [r0] +_0807E564: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807E57C: .4byte gUnknown_2031F40 +_0807E580: .4byte 0x00000101 +_0807E584: .4byte 0x0000DCBA + thumb_func_end sub_0807E504 + + thumb_func_start sub_0807E588 +sub_0807E588: @ 0x0807E588 + push {r4, lr} + sub sp, #4 + ldr r1, _0807E5A8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x65 + bls _0807E59E + b _0807EA72 +_0807E59E: + lsls r0, r0, #2 + ldr r1, _0807E5AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807E5A8: .4byte gUnknown_3002360 +_0807E5AC: .4byte _0807E5B0 +_0807E5B0: @ jump table + .4byte _0807E748 @ case 0 + .4byte _0807E764 @ case 1 + .4byte _0807E7D0 @ case 2 + .4byte _0807EA72 @ case 3 + .4byte _0807E8B0 @ case 4 + .4byte _0807E974 @ case 5 + .4byte _0807E99C @ case 6 + .4byte _0807E9B6 @ case 7 + .4byte _0807E9DC @ case 8 + .4byte _0807EA28 @ case 9 + .4byte _0807EA72 @ case 10 + .4byte _0807EA72 @ case 11 + .4byte _0807EA72 @ case 12 + .4byte _0807EA72 @ case 13 + .4byte _0807EA72 @ case 14 + .4byte _0807EA72 @ case 15 + .4byte _0807EA72 @ case 16 + .4byte _0807EA72 @ case 17 + .4byte _0807EA72 @ case 18 + .4byte _0807EA72 @ case 19 + .4byte _0807EA72 @ case 20 + .4byte _0807EA72 @ case 21 + .4byte _0807EA72 @ case 22 + .4byte _0807EA72 @ case 23 + .4byte _0807EA72 @ case 24 + .4byte _0807EA72 @ case 25 + .4byte _0807EA72 @ case 26 + .4byte _0807EA72 @ case 27 + .4byte _0807EA72 @ case 28 + .4byte _0807EA72 @ case 29 + .4byte _0807EA72 @ case 30 + .4byte _0807EA72 @ case 31 + .4byte _0807EA72 @ case 32 + .4byte _0807EA72 @ case 33 + .4byte _0807EA72 @ case 34 + .4byte _0807EA72 @ case 35 + .4byte _0807EA72 @ case 36 + .4byte _0807EA72 @ case 37 + .4byte _0807EA72 @ case 38 + .4byte _0807EA72 @ case 39 + .4byte _0807E8D4 @ case 40 + .4byte _0807E924 @ case 41 + .4byte _0807E952 @ case 42 + .4byte _0807EA72 @ case 43 + .4byte _0807EA72 @ case 44 + .4byte _0807EA72 @ case 45 + .4byte _0807EA72 @ case 46 + .4byte _0807EA72 @ case 47 + .4byte _0807EA72 @ case 48 + .4byte _0807EA72 @ case 49 + .4byte _0807E7F8 @ case 50 + .4byte _0807E854 @ case 51 + .4byte _0807E870 @ case 52 + .4byte _0807EA72 @ case 53 + .4byte _0807EA72 @ case 54 + .4byte _0807EA72 @ case 55 + .4byte _0807EA72 @ case 56 + .4byte _0807EA72 @ case 57 + .4byte _0807EA72 @ case 58 + .4byte _0807EA72 @ case 59 + .4byte _0807EA72 @ case 60 + .4byte _0807EA72 @ case 61 + .4byte _0807EA72 @ case 62 + .4byte _0807EA72 @ case 63 + .4byte _0807EA72 @ case 64 + .4byte _0807EA72 @ case 65 + .4byte _0807EA72 @ case 66 + .4byte _0807EA72 @ case 67 + .4byte _0807EA72 @ case 68 + .4byte _0807EA72 @ case 69 + .4byte _0807EA72 @ case 70 + .4byte _0807EA72 @ case 71 + .4byte _0807EA72 @ case 72 + .4byte _0807EA72 @ case 73 + .4byte _0807EA72 @ case 74 + .4byte _0807EA72 @ case 75 + .4byte _0807EA72 @ case 76 + .4byte _0807EA72 @ case 77 + .4byte _0807EA72 @ case 78 + .4byte _0807EA72 @ case 79 + .4byte _0807EA72 @ case 80 + .4byte _0807EA72 @ case 81 + .4byte _0807EA72 @ case 82 + .4byte _0807EA72 @ case 83 + .4byte _0807EA72 @ case 84 + .4byte _0807EA72 @ case 85 + .4byte _0807EA72 @ case 86 + .4byte _0807EA72 @ case 87 + .4byte _0807EA72 @ case 88 + .4byte _0807EA72 @ case 89 + .4byte _0807EA72 @ case 90 + .4byte _0807EA72 @ case 91 + .4byte _0807EA72 @ case 92 + .4byte _0807EA72 @ case 93 + .4byte _0807EA72 @ case 94 + .4byte _0807EA72 @ case 95 + .4byte _0807EA72 @ case 96 + .4byte _0807EA72 @ case 97 + .4byte _0807EA72 @ case 98 + .4byte _0807EA72 @ case 99 + .4byte _0807E77C @ case 100 + .4byte _0807E7B4 @ case 101 +_0807E748: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r4, _0807E75C + ldr r1, _0807E760 + b _0807E7DE + .align 2, 0 +_0807E75C: .4byte gUnknown_2021C7C +_0807E760: .4byte gUnknown_8595430 +_0807E764: + movs r0, #0 + bl sub_08076C90 + ldr r0, _0807E778 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0x64 + b _0807E8C0 + .align 2, 0 +_0807E778: .4byte gUnknown_3002360 +_0807E77C: + ldr r0, _0807E7AC + ldr r3, [r0] + ldr r0, [r3, #0x64] + adds r0, #1 + str r0, [r3, #0x64] + cmp r0, #0xb4 + bls _0807E798 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r2, r1 + movs r2, #0 + movs r1, #0x65 + strb r1, [r0] + str r2, [r3, #0x64] +_0807E798: + bl sub_08076C9C + cmp r0, #0 + bne _0807E7A2 + b _0807EA72 +_0807E7A2: + ldr r0, _0807E7B0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + b _0807E7C6 + .align 2, 0 +_0807E7AC: .4byte gUnknown_2031F40 +_0807E7B0: .4byte gUnknown_3002360 +_0807E7B4: + bl sub_08076C9C + cmp r0, #0 + bne _0807E7BE + b _0807EA72 +_0807E7BE: + ldr r0, _0807E7CC + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 +_0807E7C6: + movs r1, #2 + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E7CC: .4byte gUnknown_3002360 +_0807E7D0: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + movs r0, #0x32 + strb r0, [r1] + ldr r4, _0807E7F0 + ldr r1, _0807E7F4 +_0807E7DE: + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + b _0807EA72 + .align 2, 0 +_0807E7F0: .4byte gUnknown_2021C7C +_0807E7F4: .4byte gUnknown_8277071 +_0807E7F8: + bl sub_08017AC0 + cmp r0, #0 + bne _0807E806 + movs r0, #0x15 + bl sub_0808414C +_0807E806: + ldr r0, _0807E848 + ldrb r0, [r0] + cmp r0, #0 + beq _0807E82E + ldr r4, _0807E84C + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, #4 + adds r1, r1, r4 + ldr r1, [r1] + movs r0, #2 + bl sub_0801B4A8 +_0807E82E: + bl sub_08076764 + bl sub_081532BC + ldr r1, _0807E850 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + b _0807E8C2 + .align 2, 0 +_0807E848: .4byte gUnknown_300319C +_0807E84C: .4byte gUnknown_20226A0 +_0807E850: .4byte gUnknown_3002360 +_0807E854: + ldr r0, _0807E86C + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #5 + beq _0807E864 + b _0807EA72 +_0807E864: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _0807EA1C + .align 2, 0 +_0807E86C: .4byte gUnknown_2031F40 +_0807E870: + bl sub_081532E8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0807E894 + bl sub_08076780 + ldr r0, _0807E890 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #4 + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E890: .4byte gUnknown_3002360 +_0807E894: + ldr r0, _0807E8A8 + ldr r0, [r0] + str r1, [r0, #0x64] + ldr r0, _0807E8AC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #0x33 + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E8A8: .4byte gUnknown_2031F40 +_0807E8AC: .4byte gUnknown_3002360 +_0807E8B0: + bl sub_0815331C + ldr r0, _0807E8CC + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0x28 +_0807E8C0: + strb r1, [r0] +_0807E8C2: + ldr r0, _0807E8D0 + ldr r0, [r0] + str r2, [r0, #0x64] + b _0807EA72 + .align 2, 0 +_0807E8CC: .4byte gUnknown_3002360 +_0807E8D0: .4byte gUnknown_2031F40 +_0807E8D4: + ldr r4, _0807E908 + ldr r1, [r4] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x32 + bhi _0807E8E4 + b _0807EA72 +_0807E8E4: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807E90C + bl sub_0806F050 + ldr r4, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r4, #0x64] + b _0807E912 + .align 2, 0 +_0807E908: .4byte gUnknown_2031F40 +_0807E90C: + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x64] +_0807E912: + ldr r0, _0807E920 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #0x29 + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E920: .4byte gUnknown_3002360 +_0807E924: + ldr r0, _0807E944 + ldr r1, [r0] + ldr r0, [r1, #0x64] + cmp r0, #0 + bne _0807E94C + movs r0, #1 + bl sub_08076C90 + ldr r0, _0807E948 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0x2a + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E944: .4byte gUnknown_2031F40 +_0807E948: .4byte gUnknown_3002360 +_0807E94C: + subs r0, #1 + str r0, [r1, #0x64] + b _0807EA72 +_0807E952: + bl sub_08076C9C + cmp r0, #0 + bne _0807E95C + b _0807EA72 +_0807E95C: + bl sub_08153344 + ldr r0, _0807E970 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #5 + strb r1, [r0] + b _0807EA72 + .align 2, 0 +_0807E970: .4byte gUnknown_3002360 +_0807E974: + ldr r0, _0807E998 + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x3c + bls _0807EA72 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #2 + bl sub_08076C90 + b _0807EA72 + .align 2, 0 +_0807E998: .4byte gUnknown_2031F40 +_0807E99C: + bl sub_08076C9C + cmp r0, #0 + beq _0807EA72 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0807EA14 +_0807E9B6: + ldr r0, _0807E9D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807EA72 + movs r0, #3 + bl sub_080A2B08 + ldr r1, _0807E9D8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0807EA1C + .align 2, 0 +_0807E9D4: .4byte gUnknown_2037C74 +_0807E9D8: .4byte gUnknown_3002360 +_0807E9DC: + bl sub_080A2B20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0807EA72 + ldr r0, _0807EA04 + ldrb r0, [r0] + cmp r0, #0 + beq _0807EA10 + ldr r0, _0807EA08 + ldr r1, [r0, #8] + ldr r0, _0807EA0C + cmp r1, r0 + bne _0807EA10 + movs r0, #3 + bl sub_08076C90 + b _0807EA14 + .align 2, 0 +_0807EA04: .4byte gUnknown_300319C +_0807EA08: .4byte gUnknown_3002360 +_0807EA0C: .4byte sub_08076DB4 +_0807EA10: + bl sub_0800A7F8 +_0807EA14: + ldr r1, _0807EA24 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_0807EA1C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807EA72 + .align 2, 0 +_0807EA24: .4byte gUnknown_3002360 +_0807EA28: + ldr r0, _0807EA50 + ldrb r0, [r0] + cmp r0, #0 + beq _0807EA60 + ldr r1, [r2, #8] + ldr r0, _0807EA54 + cmp r1, r0 + bne _0807EA60 + bl sub_08076C9C + cmp r0, #0 + beq _0807EA72 + ldr r0, _0807EA58 + movs r1, #0 + strb r1, [r0] + ldr r0, _0807EA5C + bl sub_08000540 + b _0807EA72 + .align 2, 0 +_0807EA50: .4byte gUnknown_300319C +_0807EA54: .4byte sub_08076DB4 +_0807EA58: .4byte gUnknown_30027A0 +_0807EA5C: .4byte sub_0807EAA0 +_0807EA60: + ldr r0, _0807EA94 + ldrb r1, [r0] + cmp r1, #0 + bne _0807EA72 + ldr r0, _0807EA98 + strb r1, [r0] + ldr r0, _0807EA9C + bl sub_08000540 +_0807EA72: + bl sub_0800AE18 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807EA80 + bl sub_080A89D4 +_0807EA80: + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807EA94: .4byte gUnknown_30031C4 +_0807EA98: .4byte gUnknown_30027A0 +_0807EA9C: .4byte sub_0807EAA0 + thumb_func_end sub_0807E588 + + thumb_func_start sub_0807EAA0 +sub_0807EAA0: @ 0x0807EAA0 + push {r4, r5, lr} + ldr r0, _0807EB0C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0807EAF6 + bl sub_080034D4 + movs r0, #3 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #0 + bl sub_08002194 + bl sub_08000BF0 + bl sub_0805ECB0 + ldr r4, _0807EB10 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, _0807EB14 + ldrb r0, [r0] + cmp r0, #0 + beq _0807EAEE + bl sub_0800DB50 +_0807EAEE: + ldr r0, _0807EB18 + ldr r0, [r0, #8] + bl sub_08000540 +_0807EAF6: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807EB0C: .4byte gUnknown_2037C74 +_0807EB10: .4byte gUnknown_2031F40 +_0807EB14: .4byte gUnknown_300319C +_0807EB18: .4byte gUnknown_3002360 + thumb_func_end sub_0807EAA0 + + thumb_func_start sub_0807EB1C +sub_0807EB1C: @ 0x0807EB1C + push {lr} + sub sp, #4 + bl sub_080987DC + ldr r0, _0807EB44 + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0807EB44: .4byte sub_0807EB48 + thumb_func_end sub_0807EB1C + + thumb_func_start sub_0807EB48 +sub_0807EB48: @ 0x0807EB48 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0807EB74 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807EB6C + ldr r0, _0807EB78 + bl sub_08000540 + ldr r1, _0807EB7C + ldr r0, _0807EB80 + str r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_0807EB6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807EB74: .4byte gUnknown_2037C74 +_0807EB78: .4byte sub_0807ACC8 +_0807EB7C: .4byte gUnknown_3005B0C +_0807EB80: .4byte sub_080AEA64 + thumb_func_end sub_0807EB48 + + thumb_func_start sub_0807EB84 +sub_0807EB84: @ 0x0807EB84 + push {r4, r5, lr} + movs r5, #0 + movs r4, #0 +_0807EB8A: + ldr r0, _0807EBC8 + ldrb r0, [r0, #1] + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0807EBCC + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x43 + bl sub_0806A058 + adds r0, r5, r0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xb + bls _0807EB8A + cmp r5, #0 + beq _0807EBC2 + ldr r0, _0807EBD0 + bl sub_0809D018 +_0807EBC2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807EBC8: .4byte gUnknown_2031F38 +_0807EBCC: .4byte gUnknown_20243E8 +_0807EBD0: .4byte 0x0000089B + thumb_func_end sub_0807EB84 + + thumb_func_start sub_0807EBD4 +sub_0807EBD4: @ 0x0807EBD4 + push {lr} + bl sub_0807ABCC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807EBD4 + + thumb_func_start sub_0807EBE0 +sub_0807EBE0: @ 0x0807EBE0 + push {r4, r5, r6, lr} + sub sp, #0x14 + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0xff + bl sub_08003B18 + ldr r2, _0807EC44 + ldr r0, [r2] + adds r0, #0xf6 + movs r3, #0 + movs r1, #0xf + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xf7 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xf8 + movs r1, #6 + strb r1, [r0] + str r3, [sp] + str r3, [sp, #4] + ldr r0, [r2] + adds r0, #0xf6 + str r0, [sp, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + str r6, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199B84 + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807EC44: .4byte gUnknown_2031F40 + thumb_func_end sub_0807EBE0 + + thumb_func_start sub_0807EC48 +sub_0807EC48: @ 0x0807EC48 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0807EC80 + adds r4, r0, r1 + ldr r1, _0807EC84 + movs r2, #0 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r2, r1, #0 + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0807EC8C + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _0807EC94 + lsls r0, r1, #1 + ldr r1, _0807EC88 + adds r0, r0, r1 + b _0807EC96 + .align 2, 0 +_0807EC80: .4byte gUnknown_3005B68 +_0807EC84: .4byte gUnknown_830D310 +_0807EC88: .4byte gUnknown_830BCE4 +_0807EC8C: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _0807ECA4 +_0807EC94: + ldr r0, _0807ECA0 +_0807EC96: + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + b _0807ECB2 + .align 2, 0 +_0807ECA0: .4byte gUnknown_830C0E4 +_0807ECA4: + lsls r0, r2, #1 + ldr r1, _0807ED08 + adds r0, r0, r1 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 +_0807ECB2: + ldr r0, _0807ED0C + movs r2, #0 + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _0807ECD0 + movs r3, #2 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0807ECD0 + movs r0, #0xc3 + bl sub_080A306C +_0807ECD0: + movs r0, #2 + ldrsh r2, [r4, r0] + ldr r1, _0807ED0C + movs r3, #0 + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bne _0807ED10 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #0 + strh r0, [r4, #2] + movs r2, #0 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0807ED16 + adds r0, r5, #0 + bl sub_080A8964 + b _0807ED16 + .align 2, 0 +_0807ED08: .4byte gUnknown_830BEE4 +_0807ED0C: .4byte gUnknown_830D310 +_0807ED10: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] +_0807ED16: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0807EC48 + + thumb_func_start sub_0807ED1C +sub_0807ED1C: @ 0x0807ED1C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0807EDCC + adds r5, r0, r1 + movs r0, #0 + ldrsh r4, [r5, r0] + cmp r4, #0 + bne _0807ED6E + ldr r2, _0807EDD0 + ldr r0, [r2] + adds r3, r0, #0 + adds r3, #0xfd + movs r1, #0x78 + strb r1, [r3] + adds r0, #0xfb + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xfc + strb r4, [r0] + ldr r0, [r2] + adds r0, #0xfe + movs r1, #0xa0 + strb r1, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + movs r0, #0x4a + movs r1, #0x10 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x13 + bl sub_08001144 +_0807ED6E: + ldr r4, _0807EDD0 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xfd + ldrb r1, [r1] + adds r0, #0xfb + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0x40 + bl sub_08001144 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xfe + ldrb r1, [r1] + adds r0, #0xfc + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0x44 + bl sub_08001144 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + ldr r1, [r4] + adds r1, #0xfb + ldrb r0, [r1] + subs r0, #5 + strb r0, [r1] + ldr r1, [r4] + adds r1, #0xfd + ldrb r0, [r1] + adds r0, #5 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0xfb + ldrb r0, [r0] + cmp r0, #0x4f + bhi _0807EDC6 + adds r0, r6, #0 + bl sub_080A8964 +_0807EDC6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807EDCC: .4byte gUnknown_3005B68 +_0807EDD0: .4byte gUnknown_2031F40 + thumb_func_end sub_0807ED1C + + thumb_func_start sub_0807EDD4 +sub_0807EDD4: @ 0x0807EDD4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0807EE78 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0807EE10 + ldr r2, _0807EE7C + ldr r0, [r2] + adds r0, #0xfb + movs r1, #0x50 + strb r1, [r0] + ldr r0, [r2] + adds r0, #0xfd + movs r1, #0xa0 + strb r1, [r0] + movs r0, #0x4a + movs r1, #0x10 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x13 + bl sub_08001144 +_0807EE10: + ldr r4, _0807EE7C + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xfd + ldrb r1, [r1] + adds r0, #0xfb + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0x40 + bl sub_08001144 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xfe + ldrb r1, [r1] + adds r0, #0xfc + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0x44 + bl sub_08001144 + ldr r0, [r4] + adds r0, #0xfb + ldrb r0, [r0] + cmp r0, #0x78 + beq _0807EE84 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + ldr r1, [r4] + adds r1, #0xfb + ldrb r0, [r1] + adds r0, #5 + strb r0, [r1] + ldr r1, [r4] + adds r1, #0xfd + ldrb r0, [r1] + subs r0, #5 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0xfb + ldrb r0, [r0] + cmp r0, #0x73 + bls _0807EE94 + ldr r2, _0807EE80 + movs r0, #8 + movs r1, #0 + bl sub_080A22E8 + b _0807EE94 + .align 2, 0 +_0807EE78: .4byte gUnknown_3005B68 +_0807EE7C: .4byte gUnknown_2031F40 +_0807EE80: .4byte 0x0000FFFF +_0807EE84: + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + adds r0, r6, #0 + bl sub_080A8964 +_0807EE94: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807EDD4 + + thumb_func_start sub_0807EE9C +sub_0807EE9C: @ 0x0807EE9C + push {r4, r5, lr} + sub sp, #4 + ldr r1, _0807EEBC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xc + bls _0807EEB2 + b _0807F144 +_0807EEB2: + lsls r0, r0, #2 + ldr r1, _0807EEC0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807EEBC: .4byte gUnknown_3002360 +_0807EEC0: .4byte _0807EEC4 +_0807EEC4: @ jump table + .4byte _0807EEF8 @ case 0 + .4byte _0807EF20 @ case 1 + .4byte _0807EF38 @ case 2 + .4byte _0807EF88 @ case 3 + .4byte _0807EFA8 @ case 4 + .4byte _0807EFE4 @ case 5 + .4byte _0807F008 @ case 6 + .4byte _0807F058 @ case 7 + .4byte _0807F086 @ case 8 + .4byte _0807F0A4 @ case 9 + .4byte _0807F0CC @ case 10 + .4byte _0807F0FC @ case 11 + .4byte _0807F130 @ case 12 +_0807EEF8: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] + ldr r4, _0807EF18 + ldr r1, _0807EF1C + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + b _0807F144 + .align 2, 0 +_0807EF18: .4byte gUnknown_2021C7C +_0807EF1C: .4byte gUnknown_8595430 +_0807EF20: + movs r0, #0 + bl sub_08076C90 + ldr r0, _0807EF34 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #2 + b _0807EFF4 + .align 2, 0 +_0807EF34: .4byte gUnknown_3002360 +_0807EF38: + bl sub_08076C9C + cmp r0, #0 + bne _0807EF42 + b _0807F144 +_0807EF42: + ldr r0, _0807EF78 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r5, #0 + movs r1, #3 + strb r1, [r0] + ldr r4, _0807EF7C + ldr r1, _0807EF80 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807EBE0 + movs r0, #0x15 + bl sub_0808414C + bl sub_081532BC + ldr r0, _0807EF84 + ldr r0, [r0] + str r5, [r0, #0x64] + b _0807F144 + .align 2, 0 +_0807EF78: .4byte gUnknown_3002360 +_0807EF7C: .4byte gUnknown_2021C7C +_0807EF80: .4byte gUnknown_8277071 +_0807EF84: .4byte gUnknown_2031F40 +_0807EF88: + ldr r0, _0807EFA4 + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #5 + beq _0807EF98 + b _0807F144 +_0807EF98: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + movs r0, #4 + strb r0, [r1] + b _0807F144 + .align 2, 0 +_0807EFA4: .4byte gUnknown_2031F40 +_0807EFA8: + bl sub_081532E8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0807EFC8 + ldr r0, _0807EFC4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807EFC4: .4byte gUnknown_3002360 +_0807EFC8: + ldr r0, _0807EFDC + ldr r0, [r0] + str r1, [r0, #0x64] + ldr r0, _0807EFE0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807EFDC: .4byte gUnknown_2031F40 +_0807EFE0: .4byte gUnknown_3002360 +_0807EFE4: + bl sub_0815331C + ldr r0, _0807F000 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #6 +_0807EFF4: + strb r1, [r0] + ldr r0, _0807F004 + ldr r0, [r0] + str r2, [r0, #0x64] + b _0807F144 + .align 2, 0 +_0807F000: .4byte gUnknown_3002360 +_0807F004: .4byte gUnknown_2031F40 +_0807F008: + ldr r4, _0807F03C + ldr r1, [r4] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0xa + bhi _0807F018 + b _0807F144 +_0807F018: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807F040 + bl sub_0806F050 + ldr r4, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r4, #0x64] + b _0807F046 + .align 2, 0 +_0807F03C: .4byte gUnknown_2031F40 +_0807F040: + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x64] +_0807F046: + ldr r0, _0807F054 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #7 + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807F054: .4byte gUnknown_3002360 +_0807F058: + ldr r0, _0807F078 + ldr r1, [r0] + ldr r0, [r1, #0x64] + cmp r0, #0 + bne _0807F080 + movs r0, #1 + bl sub_08076C90 + ldr r0, _0807F07C + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807F078: .4byte gUnknown_2031F40 +_0807F07C: .4byte gUnknown_3002360 +_0807F080: + subs r0, #1 + str r0, [r1, #0x64] + b _0807F144 +_0807F086: + bl sub_08076C9C + cmp r0, #0 + beq _0807F144 + bl sub_08153344 + ldr r0, _0807F0A0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #9 + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807F0A0: .4byte gUnknown_3002360 +_0807F0A4: + ldr r0, _0807F0C8 + ldr r1, [r0] + ldr r0, [r1, #0x64] + adds r0, #1 + str r0, [r1, #0x64] + cmp r0, #0x3c + bls _0807F144 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #2 + bl sub_08076C90 + b _0807F144 + .align 2, 0 +_0807F0C8: .4byte gUnknown_2031F40 +_0807F0CC: + bl sub_08076C9C + cmp r0, #0 + beq _0807F144 + movs r0, #3 + bl sub_080A2B08 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0807F0F8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0xb + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807F0F8: .4byte gUnknown_3002360 +_0807F0FC: + ldr r0, _0807F128 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807F144 + bl sub_080A2B20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0807F144 + movs r0, #3 + bl sub_08076C90 + ldr r0, _0807F12C + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #0xc + strb r1, [r0] + b _0807F144 + .align 2, 0 +_0807F128: .4byte gUnknown_2037C74 +_0807F12C: .4byte gUnknown_3002360 +_0807F130: + bl sub_08076C9C + cmp r0, #0 + beq _0807F144 + ldr r0, _0807F168 + movs r1, #0 + strb r1, [r0] + ldr r0, _0807F16C + bl sub_08000540 +_0807F144: + bl sub_0800AE18 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807F152 + bl sub_080A89D4 +_0807F152: + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807F168: .4byte gUnknown_30027A0 +_0807F16C: .4byte sub_0807EAA0 + thumb_func_end sub_0807EE9C + + thumb_func_start sub_0807F170 +sub_0807F170: @ 0x0807F170 + push {lr} + ldr r0, _0807F190 + ldr r1, _0807F194 + ldr r2, _0807F198 + ldr r2, [r2] + adds r2, #0x4c + movs r3, #0 + ldrsh r2, [r2, r3] + subs r2, #0x80 + lsls r2, r2, #0x11 + asrs r2, r2, #0x10 + bl m4aMPlayPitchControl + pop {r0} + bx r0 + .align 2, 0 +_0807F190: .4byte gUnknown_3007550 +_0807F194: .4byte 0x0000FFFF +_0807F198: .4byte gUnknown_2031F44 + thumb_func_end sub_0807F170 + + thumb_func_start sub_0807F19C +sub_0807F19C: @ 0x0807F19C + push {r4, lr} + sub sp, #0x10 + bl sub_08082810 + ldr r0, _0807F20C + ldr r0, [r0] + mov ip, r0 + movs r0, #0xa0 + lsls r0, r0, #1 + add r0, ip + ldr r1, [r0] + movs r0, #0xa2 + lsls r0, r0, #1 + add r0, ip + ldr r2, [r0] + movs r0, #0xa4 + lsls r0, r0, #1 + add r0, ip + movs r4, #0 + ldrsh r3, [r0, r4] + movs r0, #0xa5 + lsls r0, r0, #1 + add r0, ip + movs r4, #0 + ldrsh r0, [r0, r4] + str r0, [sp] + movs r0, #0xa6 + lsls r0, r0, #1 + add r0, ip + movs r4, #0 + ldrsh r0, [r0, r4] + str r0, [sp, #4] + movs r0, #0xa7 + lsls r0, r0, #1 + add r0, ip + movs r4, #0 + ldrsh r0, [r0, r4] + str r0, [sp, #8] + movs r0, #0xa8 + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + str r0, [sp, #0xc] + movs r0, #2 + bl sub_0800200C + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F20C: .4byte gUnknown_2031F44 + thumb_func_end sub_0807F19C + + thumb_func_start sub_0807F210 +sub_0807F210: @ 0x0807F210 + push {r4, r5, lr} + ldr r1, _0807F22C + ldr r0, [r1] + ldrb r0, [r0, #1] + adds r5, r1, #0 + cmp r0, #9 + bls _0807F220 + b _0807F400 +_0807F220: + lsls r0, r0, #2 + ldr r1, _0807F230 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807F22C: .4byte gUnknown_2031F44 +_0807F230: .4byte _0807F234 +_0807F234: @ jump table + .4byte _0807F25C @ case 0 + .4byte _0807F28C @ case 1 + .4byte _0807F2B8 @ case 2 + .4byte _0807F2E4 @ case 3 + .4byte _0807F300 @ case 4 + .4byte _0807F32C @ case 5 + .4byte _0807F348 @ case 6 + .4byte _0807F378 @ case 7 + .4byte _0807F388 @ case 8 + .4byte _0807F3B8 @ case 9 +_0807F25C: + ldr r5, _0807F280 + adds r0, r5, #0 + bl sub_080347CC + adds r0, #0x64 + bl sub_08000BDC + adds r1, r0, #0 + ldr r4, _0807F284 + ldr r0, [r4] + ldr r2, _0807F288 + adds r0, r0, r2 + str r1, [r0] + adds r0, r5, #0 + bl sub_08034370 + ldr r1, [r4] + b _0807F39E + .align 2, 0 +_0807F280: .4byte gUnknown_8D9154C +_0807F284: .4byte gUnknown_2031F44 +_0807F288: .4byte 0x000011B8 +_0807F28C: + ldr r1, _0807F2B0 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #2 + movs r3, #0 + bl sub_080021CC + movs r0, #2 + bl sub_08002248 + ldr r0, _0807F2B4 + movs r2, #0x80 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A1200 + b _0807F39A + .align 2, 0 +_0807F2B0: .4byte gUnknown_830D374 +_0807F2B4: .4byte gUnknown_830D354 +_0807F2B8: + ldr r0, [r5] + ldr r1, _0807F2DC + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _0807F2E0 + bl sub_080347CC + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #2 + adds r1, r4, #0 + movs r3, #0 + bl sub_0800195C + ldr r1, [r5] + b _0807F39E + .align 2, 0 +_0807F2DC: .4byte 0x000011B8 +_0807F2E0: .4byte gUnknown_8D9154C +_0807F2E4: + ldr r0, _0807F2F8 + ldr r1, [r5] + ldr r2, _0807F2FC + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08034370 + ldr r1, [r5] + b _0807F39E + .align 2, 0 +_0807F2F8: .4byte gUnknown_8D91D6C +_0807F2FC: .4byte 0x000011B8 +_0807F300: + ldr r0, [r5] + ldr r1, _0807F324 + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _0807F328 + bl sub_080347CC + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + adds r1, r4, #0 + movs r3, #0 + bl sub_0800195C + ldr r1, [r5] + b _0807F39E + .align 2, 0 +_0807F324: .4byte 0x000011B8 +_0807F328: .4byte gUnknown_8D91D6C +_0807F32C: + ldr r0, _0807F340 + ldr r1, [r5] + ldr r2, _0807F344 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08034370 + ldr r1, [r5] + b _0807F39E + .align 2, 0 +_0807F340: .4byte gUnknown_8D927A0 +_0807F344: .4byte 0x000011B8 +_0807F348: + ldr r0, [r5] + ldr r1, _0807F370 + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _0807F374 + bl sub_080347CC + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + adds r1, r4, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + ldr r1, [r5] + b _0807F39E + .align 2, 0 +_0807F370: .4byte 0x000011B8 +_0807F374: .4byte gUnknown_8D927A0 +_0807F378: + ldr r0, _0807F384 + movs r1, #0x80 + movs r2, #0x20 + bl sub_080A1200 + b _0807F39A + .align 2, 0 +_0807F384: .4byte gUnknown_830D774 +_0807F388: + ldr r0, _0807F3A8 + bl sub_08008210 + ldr r0, _0807F3AC + bl sub_08008210 + ldr r0, _0807F3B0 + bl sub_08008210 +_0807F39A: + ldr r0, _0807F3B4 + ldr r1, [r0] +_0807F39E: + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _0807F400 + .align 2, 0 +_0807F3A8: .4byte gUnknown_830F9B0 +_0807F3AC: .4byte gUnknown_830FAC8 +_0807F3B0: .4byte gUnknown_830FA28 +_0807F3B4: .4byte gUnknown_2031F44 +_0807F3B8: + ldr r0, _0807F3E8 + bl sub_08008210 + ldr r0, _0807F3EC + bl sub_08008210 + ldr r0, _0807F3F0 + bl sub_0800845C + ldr r0, _0807F3F4 + bl sub_0800845C + ldr r4, _0807F3F8 + ldr r0, [r4] + ldr r2, _0807F3FC + adds r0, r0, r2 + ldr r0, [r0] + bl sub_08000BF0 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #1] + movs r0, #1 + b _0807F402 + .align 2, 0 +_0807F3E8: .4byte gUnknown_830FB14 +_0807F3EC: .4byte gUnknown_830FB48 +_0807F3F0: .4byte gUnknown_830F9C0 +_0807F3F4: .4byte gUnknown_830F9B8 +_0807F3F8: .4byte gUnknown_2031F44 +_0807F3FC: .4byte 0x000011B8 +_0807F400: + movs r0, #0 +_0807F402: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0807F210 + + thumb_func_start sub_0807F408 +sub_0807F408: @ 0x0807F408 + push {lr} + sub sp, #8 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807F408 + + thumb_func_start sub_0807F46C +sub_0807F46C: @ 0x0807F46C + push {r4, lr} + sub sp, #8 + ldr r0, _0807F4B4 + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0807F4AC + bl sub_08004480 + movs r4, #0 +_0807F482: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + adds r4, #1 + cmp r4, #4 + ble _0807F482 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0xe0 + bl sub_08197694 +_0807F4AC: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F4B4: .4byte gUnknown_830F870 + thumb_func_end sub_0807F46C + + thumb_func_start sub_0807F4B8 +sub_0807F4B8: @ 0x0807F4B8 + push {r4, lr} + ldr r4, _0807F4F0 + ldr r0, [r4] + cmp r0, #0 + bne _0807F4CA + ldr r0, _0807F4F4 + bl sub_08000BDC + str r0, [r4] +_0807F4CA: + ldr r0, [r4] + adds r0, #0x63 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x63 + strb r1, [r0] + ldr r0, _0807F4F8 + ldrb r0, [r0] + bl sub_0807F88C + ldr r0, _0807F4FC + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0807F4F0: .4byte gUnknown_2031F44 +_0807F4F4: .4byte 0x000011DC +_0807F4F8: .4byte gUnknown_2037280 +_0807F4FC: .4byte sub_0807F500 + thumb_func_end sub_0807F4B8 + + thumb_func_start sub_0807F500 +sub_0807F500: @ 0x0807F500 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r1, _0807F51C + ldr r0, [r1] + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #6 + bls _0807F512 + b _0807F71A +_0807F512: + lsls r0, r0, #2 + ldr r1, _0807F520 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807F51C: .4byte gUnknown_2031F44 +_0807F520: .4byte _0807F524 +_0807F524: @ jump table + .4byte _0807F540 @ case 0 + .4byte _0807F5E4 @ case 1 + .4byte _0807F670 @ case 2 + .4byte _0807F686 @ case 3 + .4byte _0807F69C @ case 4 + .4byte _0807F6C8 @ case 5 + .4byte _0807F6E8 @ case 6 +_0807F540: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + bl sub_0800668C + bl sub_08008424 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0807F5D8 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r4, _0807F5DC + ldr r1, [r4] + movs r0, #0xda + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _0807F5E0 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0x14 + movs r2, #0xf0 + bl sub_08098104 + bl sub_0807F46C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r3, [r4] + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r3, r1 + movs r1, #0 + strh r2, [r0] + movs r4, #0x8b + lsls r4, r4, #1 + adds r0, r3, r4 + strh r2, [r0] + movs r0, #0x8d + lsls r0, r0, #1 + adds r4, r3, r0 + movs r0, #0x50 + strh r0, [r4] + movs r4, #0x8e + lsls r4, r4, #1 + adds r0, r3, r4 + strh r2, [r0] + adds r4, #2 + adds r0, r3, r4 + strh r2, [r0] + strb r1, [r3, #1] + bl sub_08082744 + b _0807F71A + .align 2, 0 +_0807F5D8: .4byte gUnknown_830F864 +_0807F5DC: .4byte gUnknown_2031F44 +_0807F5E0: .4byte 0x000009B4 +_0807F5E4: + bl sub_0807F210 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807F5F0 + b _0807F71A +_0807F5F0: + movs r4, #0 + ldr r5, _0807F654 + ldr r6, _0807F658 +_0807F5F6: + ldrb r1, [r5] + ldrb r2, [r5, #1] + ldr r0, _0807F65C + movs r3, #1 + bl sub_08006B0C + ldr r1, [r6] + adds r1, #0x50 + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x50 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807F660 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _0807F5F6 + ldr r0, _0807F664 + ldrb r0, [r0] + cmp r0, #0 + beq _0807F64C + ldr r0, _0807F668 + ldrb r0, [r0] + cmp r0, #0 + beq _0807F64C + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 +_0807F64C: + ldr r0, _0807F66C + bl sub_080006F0 + b _0807F6D8 + .align 2, 0 +_0807F654: .4byte gUnknown_830F8B8 +_0807F658: .4byte gUnknown_2031F44 +_0807F65C: .4byte gUnknown_830F9C8 +_0807F660: .4byte gUnknown_20205AC +_0807F664: .4byte gUnknown_30031C4 +_0807F668: .4byte gUnknown_300319C +_0807F66C: .4byte sub_0807F19C +_0807F670: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + bl sub_08082744 + b _0807F6D8 +_0807F686: + bl sub_0807F408 + ldr r0, _0807F698 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807F71A + b _0807F6D8 + .align 2, 0 +_0807F698: .4byte gUnknown_2037C74 +_0807F69C: + ldr r4, [r6] + ldr r0, _0807F6C0 + adds r4, r4, r0 + ldr r5, _0807F6C4 + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08083B04 + cmp r0, #0 + beq _0807F71A + ldr r1, [r6] + b _0807F6DC + .align 2, 0 +_0807F6C0: .4byte 0x000011B4 +_0807F6C4: .4byte gUnknown_830F6AE +_0807F6C8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0807F6D8: + ldr r0, _0807F6E4 + ldr r1, [r0] +_0807F6DC: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807F71A + .align 2, 0 +_0807F6E4: .4byte gUnknown_2031F44 +_0807F6E8: + ldr r0, _0807F734 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0807F71A + bl sub_080034D4 + movs r0, #2 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #0 + bl sub_080006F0 + ldr r0, _0807F738 + bl sub_081AA968 + ldr r0, _0807F73C + ldr r0, [r0] + strb r4, [r0] +_0807F71A: + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807F734: .4byte gUnknown_2037C74 +_0807F738: .4byte sub_0807F9AC +_0807F73C: .4byte gUnknown_2031F44 + thumb_func_end sub_0807F500 + + thumb_func_start sub_0807F740 +sub_0807F740: @ 0x0807F740 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x32] + ldrh r2, [r4, #0x36] + subs r1, r1, r2 + ldrh r0, [r4, #0x3c] + adds r1, r1, r0 + strh r1, [r4, #0x32] + ldrh r3, [r4, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + subs r2, #1 + strh r2, [r4, #0x36] + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + cmp r0, r1 + bge _0807F78E + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x36] + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0807F788 + adds r0, r4, #0 + bl sub_08006E00 + b _0807F78E +_0807F788: + movs r0, #0x74 + bl sub_080A306C +_0807F78E: + ldrh r0, [r4, #0x30] + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x32] + strh r0, [r4, #0x22] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0807F740 + + thumb_func_start sub_0807F79C +sub_0807F79C: @ 0x0807F79C + push {r4, r5, r6, lr} + ldr r5, [sp, #0x10] + ldr r6, [sp, #0x14] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r4, #0 + strh r2, [r0, #0x2e] + strh r1, [r0, #0x30] + strh r2, [r0, #0x32] + strh r3, [r0, #0x34] + movs r1, #0xa + strh r1, [r0, #0x36] + strh r4, [r0, #0x38] + strh r5, [r0, #0x3a] + strh r6, [r0, #0x3c] + ldr r1, _0807F7C4 + str r1, [r0, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807F7C4: .4byte sub_0807F740 + thumb_func_end sub_0807F79C + + thumb_func_start sub_0807F7C8 +sub_0807F7C8: @ 0x0807F7C8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + adds r6, r1, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r0, r0, #0x18 + movs r1, #0xf6 + lsls r1, r1, #0x17 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + movs r3, #1 + ands r3, r6 + movs r1, #0 + movs r2, #0x50 + bl sub_080D49A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + mov r8, r2 + add r8, r0 + mov r3, r8 + lsls r3, r3, #2 + mov r8, r3 + ldr r0, _0807F844 + add r8, r0 + ldr r5, _0807F848 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #1 + adds r0, r4, r5 + movs r6, #0 + ldrsh r1, [r0, r6] + adds r0, r5, #2 + adds r0, r4, r0 + movs r3, #0 + ldrsh r2, [r0, r3] + adds r0, r5, #4 + adds r0, r4, r0 + movs r6, #0 + ldrsh r3, [r0, r6] + adds r0, r5, #6 + adds r0, r4, r0 + movs r6, #0 + ldrsh r0, [r0, r6] + str r0, [sp] + adds r5, #8 + adds r4, r4, r5 + movs r5, #0 + ldrsh r0, [r4, r5] + str r0, [sp, #4] + mov r0, r8 + bl sub_0807F79C + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0807F844: .4byte gUnknown_20205AC +_0807F848: .4byte gUnknown_830FB68 + thumb_func_end sub_0807F7C8 + + thumb_func_start sub_0807F84C +sub_0807F84C: @ 0x0807F84C + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r5, r1, #0x10 + lsrs r5, r5, #0x10 + adds r0, r5, #0 + adds r0, #0x7c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0BC8 + adds r4, r0, #0 + strh r5, [r6] + adds r0, r6, #2 + adds r1, r4, #0 + bl sub_080088B8 + ldrb r0, [r4, #0x15] + strb r0, [r6, #9] + ldrb r0, [r4, #0x16] + strb r0, [r6, #0xa] + ldrb r0, [r4, #0x17] + strb r0, [r6, #0xb] + ldrb r0, [r4, #0x18] + strb r0, [r6, #0xc] + ldrb r0, [r4, #0x19] + strb r0, [r6, #0xd] + ldrb r0, [r4, #0x1a] + strb r0, [r6, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0807F84C + + thumb_func_start sub_0807F88C +sub_0807F88C: @ 0x0807F88C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + beq _0807F8B4 + cmp r1, #1 + bgt _0807F8A0 + cmp r1, #0 + beq _0807F8AA + b _0807F992 +_0807F8A0: + cmp r1, #2 + beq _0807F90C + cmp r1, #3 + beq _0807F954 + b _0807F992 +_0807F8AA: + ldr r0, _0807F8B0 + strb r1, [r0] + b _0807F992 + .align 2, 0 +_0807F8B0: .4byte gUnknown_3005AF8 +_0807F8B4: + ldr r0, _0807F8E8 + strb r1, [r0] + ldr r0, _0807F8EC + ldr r0, [r0] + adds r0, #0x7c + movs r1, #2 + strb r1, [r0] + ldr r4, _0807F8F0 + ldr r0, _0807F8F4 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0xd0 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807F8FC + adds r0, r4, #0 + adds r0, #0x1c + ldr r1, _0807F8F8 + bl sub_080088B8 + b _0807F992 + .align 2, 0 +_0807F8E8: .4byte gUnknown_3005AF8 +_0807F8EC: .4byte gUnknown_2031F44 +_0807F8F0: .4byte gUnknown_20226A8 +_0807F8F4: .4byte gUnknown_3005AF0 +_0807F8F8: .4byte gUnknown_830F760 +_0807F8FC: + adds r0, r4, #0 + adds r0, #0x1c + ldr r1, _0807F908 + bl sub_080088B8 + b _0807F992 + .align 2, 0 +_0807F908: .4byte gUnknown_830F74E +_0807F90C: + ldr r0, _0807F940 + strb r1, [r0] + ldr r0, _0807F944 + ldr r0, [r0] + adds r0, #0x7c + movs r1, #3 + strb r1, [r0] + ldr r5, _0807F948 + ldr r0, _0807F94C + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + adds r0, r5, #0 + adds r0, #0x1c + ldr r4, _0807F950 + adds r1, r4, #0 + bl sub_080088B8 + adds r5, #0x38 + subs r4, #0xc + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088B8 + b _0807F992 + .align 2, 0 +_0807F940: .4byte gUnknown_3005AF8 +_0807F944: .4byte gUnknown_2031F44 +_0807F948: .4byte gUnknown_20226A8 +_0807F94C: .4byte gUnknown_3005AF0 +_0807F950: .4byte gUnknown_830F766 +_0807F954: + ldr r0, _0807F998 + strb r1, [r0] + ldr r0, _0807F99C + ldr r0, [r0] + adds r0, #0x7c + movs r1, #4 + strb r1, [r0] + ldr r5, _0807F9A0 + ldr r0, _0807F9A4 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + adds r0, r5, #0 + adds r0, #0x1c + ldr r4, _0807F9A8 + adds r1, r4, #0 + bl sub_080088B8 + adds r0, r5, #0 + adds r0, #0x38 + adds r1, r4, #0 + subs r1, #0x18 + bl sub_080088B8 + adds r5, #0x54 + subs r4, #0x12 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088B8 +_0807F992: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807F998: .4byte gUnknown_3005AF8 +_0807F99C: .4byte gUnknown_2031F44 +_0807F9A0: .4byte gUnknown_20226A8 +_0807F9A4: .4byte gUnknown_3005AF0 +_0807F9A8: .4byte gUnknown_830F76C + thumb_func_end sub_0807F88C + + thumb_func_start sub_0807F9AC +sub_0807F9AC: @ 0x0807F9AC + push {r4, r5, lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r4, _0807FA00 + ldr r0, [r4] + cmp r0, #0 + bne _0807F9C6 + ldr r0, _0807FA04 + bl sub_08000BDC + str r0, [r4] +_0807F9C6: + ldr r0, [r4] + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + movs r2, #0x86 + lsls r2, r2, #1 + adds r0, r0, r2 + str r1, [r0] + movs r2, #0 + ldr r5, _0807FA08 + movs r3, #0 +_0807F9DC: + ldr r0, [r4] + lsls r1, r2, #1 + adds r0, #0x74 + adds r0, r0, r1 + strh r3, [r0] + adds r2, #1 + cmp r2, #3 + ble _0807F9DC + ldrb r0, [r5] + bl sub_0807F88C + ldrh r0, [r5] + cmp r0, #0 + bne _0807FA10 + ldr r0, _0807FA0C + bl sub_08000540 + b _0807FA16 + .align 2, 0 +_0807FA00: .4byte gUnknown_2031F44 +_0807FA04: .4byte 0x000011DC +_0807FA08: .4byte gUnknown_2037280 +_0807FA0C: .4byte sub_0807FA20 +_0807FA10: + ldr r0, _0807FA1C + bl sub_08000540 +_0807FA16: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0807FA1C: .4byte sub_080802F0 + thumb_func_end sub_0807F9AC + + thumb_func_start sub_0807FA20 +sub_0807FA20: @ 0x0807FA20 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _0807FA3C + ldr r0, [r1] + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x15 + bls _0807FA32 + b _0807FF4E +_0807FA32: + lsls r0, r0, #2 + ldr r1, _0807FA40 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807FA3C: .4byte gUnknown_2031F44 +_0807FA40: .4byte _0807FA44 +_0807FA44: @ jump table + .4byte _0807FA9C @ case 0 + .4byte _0807FB08 @ case 1 + .4byte _0807FB28 @ case 2 + .4byte _0807FBA4 @ case 3 + .4byte _0807FBB6 @ case 4 + .4byte _0807FBD0 @ case 5 + .4byte _0807FF4E @ case 6 + .4byte _0807FF4E @ case 7 + .4byte _0807FC00 @ case 8 + .4byte _0807FC50 @ case 9 + .4byte _0807FC74 @ case 10 + .4byte _0807FD0A @ case 11 + .4byte _0807FD64 @ case 12 + .4byte _0807FDDC @ case 13 + .4byte _0807FE10 @ case 14 + .4byte _0807FEA4 @ case 15 + .4byte _0807FED8 @ case 16 + .4byte _0807FF4E @ case 17 + .4byte _0807FF00 @ case 18 + .4byte _0807FEEC @ case 19 + .4byte _0807FEF2 @ case 20 + .4byte _0807FF10 @ case 21 +_0807FA9C: + bl sub_0807FF90 + ldr r1, _0807FAFC + ldr r2, _0807FB00 + adds r0, r2, #0 + strh r0, [r1] + ldr r2, _0807FB04 + ldr r0, [r2] + adds r0, #0x72 + movs r1, #0 + strb r1, [r0] + movs r5, #0 + movs r6, #0 + movs r7, #0x92 + lsls r7, r7, #1 +_0807FABA: + ldr r0, [r2] + lsls r1, r5, #1 + adds r0, #0x64 + adds r0, r0, r1 + strh r6, [r0] + adds r4, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #1 + movs r3, #2 +_0807FACC: + ldr r0, [r2] + adds r0, r0, r7 + adds r0, r0, r1 + strh r6, [r0] + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0807FACC + adds r5, r4, #0 + cmp r5, #3 + ble _0807FABA + ldr r3, _0807FB04 + ldr r4, [r3] + adds r1, r4, #0 + adds r1, #0x70 + movs r2, #0 + movs r0, #0 + strh r0, [r1] + subs r1, #0x22 + strh r0, [r1] + strb r2, [r4, #1] + ldr r1, [r3] + b _0807FF04 + .align 2, 0 +_0807FAFC: .4byte gUnknown_202267E +_0807FB00: .4byte 0x00004422 +_0807FB04: .4byte gUnknown_2031F44 +_0807FB08: + bl sub_0807F210 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807FB14 + b _0807FF4E +_0807FB14: + ldr r0, _0807FB24 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_08082744 + b _0807FF4E + .align 2, 0 +_0807FB24: .4byte gUnknown_2031F44 +_0807FB28: + movs r5, #0 + ldr r4, _0807FB8C + ldr r6, _0807FB90 +_0807FB2E: + ldrb r1, [r4] + ldrb r2, [r4, #1] + ldr r0, _0807FB94 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r6] + adds r1, #0x54 + adds r1, r1, r5 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x54 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807FB98 + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _0807FB2E + ldr r0, _0807FB9C + ldrb r0, [r0] + cmp r0, #0 + bne _0807FB72 + b _0807FF00 +_0807FB72: + ldr r0, _0807FBA0 + ldrb r0, [r0] + cmp r0, #0 + bne _0807FB7C + b _0807FF00 +_0807FB7C: + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _0807FF00 + .align 2, 0 +_0807FB8C: .4byte gUnknown_830F8B8 +_0807FB90: .4byte gUnknown_2031F44 +_0807FB94: .4byte gUnknown_830F9C8 +_0807FB98: .4byte gUnknown_20205AC +_0807FB9C: .4byte gUnknown_30031C4 +_0807FBA0: .4byte gUnknown_300319C +_0807FBA4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0807FF00 +_0807FBB6: + bl sub_0807F408 + ldr r0, _0807FBCC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807FBC8 + b _0807FF4E +_0807FBC8: + b _0807FF00 + .align 2, 0 +_0807FBCC: .4byte gUnknown_2037C74 +_0807FBD0: + ldr r4, _0807FBF4 + ldr r0, [r4] + ldr r3, _0807FBF8 + adds r0, r0, r3 + ldr r1, _0807FBFC + movs r2, #0 + bl sub_08083B04 + ldr r1, [r4] + movs r2, #0 + movs r0, #8 + strb r0, [r1] + ldr r0, [r4] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + str r2, [r0] + b _0807FF4E + .align 2, 0 +_0807FBF4: .4byte gUnknown_2031F44 +_0807FBF8: .4byte 0x000011B4 +_0807FBFC: .4byte gUnknown_830F78E +_0807FC00: + ldr r4, _0807FC44 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + movs r6, #0 + strb r0, [r1] + ldr r0, [r4] + movs r2, #0x8a + lsls r2, r2, #1 + adds r0, r0, r2 + strb r6, [r0] + ldr r0, [r4] + movs r5, #0xac + lsls r5, r5, #1 + adds r0, r0, r5 + ldr r1, _0807FC48 + ldrh r1, [r1] + bl sub_0807F84C + ldr r0, _0807FC4C + ldr r1, [r4] + adds r1, r1, r5 + movs r2, #0x10 + bl memcpy + bl sub_0800A8D4 + ldr r0, [r4] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r0, r3 + str r6, [r0] + b _0807FF4E + .align 2, 0 +_0807FC44: .4byte gUnknown_2031F44 +_0807FC48: .4byte gUnknown_203CB48 +_0807FC4C: .4byte gUnknown_202257C +_0807FC50: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807FC5C + b _0807FF4E +_0807FC5C: + bl sub_0800A178 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807FC6C + b _0807FF00 +_0807FC6C: + movs r0, #4 + bl sub_0800A09C + b _0807FF00 +_0807FC74: + ldr r6, _0807FCB0 + ldr r1, [r6] + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x14 + bgt _0807FC8A + b _0807FF4E +_0807FC8A: + movs r0, #4 + movs r1, #1 + bl sub_08197EBC + bl sub_0800A114 + adds r4, r0, #0 + bl sub_0800A59C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0807FCA6 + b _0807FF4E +_0807FCA6: + movs r5, #0 + adds r7, r6, #0 + movs r6, #0xac + lsls r6, r6, #1 + b _0807FCDC + .align 2, 0 +_0807FCB0: .4byte gUnknown_2031F44 +_0807FCB4: + ldr r0, [r7] + lsls r4, r5, #4 + adds r0, r4, r0 + adds r0, r0, r6 + lsls r1, r5, #8 + ldr r2, _0807FCF0 + adds r1, r1, r2 + movs r2, #0x10 + bl memcpy + ldr r0, [r7] + lsls r2, r5, #1 + adds r1, r0, #0 + adds r1, #0x74 + adds r1, r1, r2 + adds r0, r0, r4 + adds r0, r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r5, #1 +_0807FCDC: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _0807FCB4 + bl sub_0800A178 + b _0807FF00 + .align 2, 0 +_0807FCF0: .4byte gUnknown_202207C +_0807FCF4: + ldrb r1, [r4] + lsls r1, r1, #1 + adds r0, r2, #0 + adds r0, #0x74 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_0807F7C8 + b _0807FD3E +_0807FD0A: + bl sub_08009B64 + ldr r2, _0807FD5C + ldr r1, [r2] + adds r1, #0x7c + strb r0, [r1] + movs r5, #0 + ldr r2, [r2] + movs r1, #0x8a + lsls r1, r1, #1 + adds r4, r2, r1 + ldr r1, _0807FD60 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #2 + ldrb r3, [r4] + adds r0, r0, r1 +_0807FD30: + ldrb r1, [r0] + cmp r3, r1 + beq _0807FCF4 + adds r0, #1 + adds r5, #1 + cmp r5, #3 + ble _0807FD30 +_0807FD3E: + ldr r3, _0807FD5C + ldr r1, [r3] + movs r0, #0x84 + lsls r0, r0, #1 + adds r2, r1, r0 + movs r0, #0 + str r0, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, [r3] + movs r2, #0x8a + lsls r2, r2, #1 + adds r1, r1, r2 + b _0807FF04 + .align 2, 0 +_0807FD5C: .4byte gUnknown_2031F44 +_0807FD60: .4byte gUnknown_830F8C0 +_0807FD64: + ldr r3, [r2] + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r3, r0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x3c + bgt _0807FD78 + b _0807FF4E +_0807FD78: + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r3, r1 + adds r1, r3, #0 + adds r1, #0x7c + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + blo _0807FDC0 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldr r2, [r2] + ldr r3, _0807FDB4 + ldr r1, _0807FDB8 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r3 + ldr r3, _0807FDBC + adds r1, r3, #0 + ldrh r0, [r0] + adds r1, r1, r0 + adds r2, #0x4a + strh r1, [r2] + b _0807FDC6 + .align 2, 0 +_0807FDB4: .4byte gUnknown_830F8CC +_0807FDB8: .4byte gUnknown_830F8D4 +_0807FDBC: .4byte 0xFFFFA800 +_0807FDC0: + ldrb r0, [r3] + subs r0, #1 + strb r0, [r3] +_0807FDC6: + ldr r0, _0807FDD8 + ldr r0, [r0] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + b _0807FF4E + .align 2, 0 +_0807FDD8: .4byte gUnknown_2031F44 +_0807FDDC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807FDE8 + b _0807FF4E +_0807FDE8: + ldr r2, _0807FE0C + ldr r1, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r0, r2 + bl sub_080826D0 + movs r0, #0x2b + bl sub_080A306C + movs r0, #2 + bl sub_08001B48 + b _0807FF4E + .align 2, 0 +_0807FE0C: .4byte gUnknown_2031F44 +_0807FE10: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 + ldr r4, _0807FE98 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x4a + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + movs r0, #0x8d + lsls r0, r0, #1 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + bls _0807FE94 + movs r0, #0xc + movs r1, #2 + bl sub_08001200 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r3, [r4] + movs r2, #0x8d + lsls r2, r2, #1 + adds r1, r3, r2 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1] + ldr r2, _0807FE9C + ldr r1, _0807FEA0 + adds r0, r3, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r3, #0 + adds r1, #0x4a + strh r0, [r1] + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r3, r0 + movs r0, #0 + str r0, [r1] + movs r0, #0x34 + bl sub_080A306C + bl sub_08080154 + bl sub_080801C4 +_0807FE94: + ldr r0, [r4] + b _0807FEC6 + .align 2, 0 +_0807FE98: .4byte gUnknown_2031F44 +_0807FE9C: .4byte gUnknown_830F8CC +_0807FEA0: .4byte gUnknown_830F8D4 +_0807FEA4: + bl sub_08082D9C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807FEC2 + ldr r0, _0807FED4 + ldr r1, [r0] + movs r3, #0x84 + lsls r3, r3, #1 + adds r2, r1, r3 + movs r0, #0 + str r0, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0807FEC2: + ldr r0, _0807FED4 + ldr r0, [r0] +_0807FEC6: + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_080826D0 + b _0807FF4E + .align 2, 0 +_0807FED4: .4byte gUnknown_2031F44 +_0807FED8: + ldr r0, _0807FEE8 + movs r2, #0x10 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #3 + bl sub_08006B0C + b _0807FF00 + .align 2, 0 +_0807FEE8: .4byte gUnknown_830FB1C +_0807FEEC: + bl sub_0800A8D4 + b _0807FF00 +_0807FEF2: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807FF4E + bl sub_08009FDC +_0807FF00: + ldr r0, _0807FF0C + ldr r1, [r0] +_0807FF04: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0807FF4E + .align 2, 0 +_0807FF0C: .4byte gUnknown_2031F44 +_0807FF10: + ldr r5, _0807FF84 + ldr r3, [r5] + adds r1, r3, #0 + adds r1, #0x4c + movs r2, #0 + movs r0, #0x80 + strh r0, [r1] + movs r1, #0x82 + lsls r1, r1, #1 + adds r0, r3, r1 + str r2, [r0] + ldr r0, _0807FF88 + bl sub_08000540 + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0807FF8C + cmp r0, r4 + beq _0807FF48 + bl sub_080A27CC + ldr r1, [r5] + movs r2, #0xaa + lsls r2, r2, #1 + adds r1, r1, r2 + strh r0, [r1] +_0807FF48: + adds r0, r4, #0 + bl sub_080A3040 +_0807FF4E: + ldr r0, _0807FF84 + ldr r1, [r0] + movs r3, #0x8e + lsls r3, r3, #1 + adds r0, r1, r3 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r3, #2 + adds r1, r1, r3 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0807FF84: .4byte gUnknown_2031F44 +_0807FF88: .4byte sub_080812B4 +_0807FF8C: .4byte 0x00000193 + thumb_func_end sub_0807FA20 + + thumb_func_start sub_0807FF90 +sub_0807FF90: @ 0x0807FF90 + push {r4, lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + ldr r0, _0808001C + bl sub_080006F0 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08080020 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r4, _08080024 + ldr r1, [r4] + movs r0, #0xda + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r3, _08080028 + adds r1, r1, r3 + movs r0, #2 + bl sub_0800212C + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0x14 + movs r2, #0xf0 + bl sub_08098104 + bl sub_0807F46C + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x44 + movs r1, #0 + strh r1, [r0] + adds r0, #8 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + movs r3, #0x8e + lsls r3, r3, #1 + adds r0, r2, r3 + strh r1, [r0] + adds r3, #2 + adds r0, r2, r3 + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808001C: .4byte sub_0807F19C +_08080020: .4byte gUnknown_830F864 +_08080024: .4byte gUnknown_2031F44 +_08080028: .4byte 0x000009B4 + thumb_func_end sub_0807FF90 + + thumb_func_start sub_0808002C +sub_0808002C: @ 0x0808002C + push {lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + adds r2, #0x18 + ldr r0, _08080068 + ldr r0, [r0] + lsrs r1, r1, #0x17 + adds r0, #0x96 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _0808006C + adds r0, r0, r1 + ldrb r1, [r0] + cmp r2, r1 + blo _08080074 + adds r0, r1, #0 + adds r0, #0x30 + cmp r2, r0 + bhs _08080074 + subs r0, #0x1c + cmp r2, r0 + blo _08080070 + adds r0, #8 + cmp r2, r0 + bhs _08080070 + movs r0, #2 + b _08080076 + .align 2, 0 +_08080068: .4byte gUnknown_2031F44 +_0808006C: .4byte gUnknown_830F8D7 +_08080070: + movs r0, #1 + b _08080076 +_08080074: + movs r0, #0 +_08080076: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808002C + + thumb_func_start sub_0808007C +sub_0808007C: @ 0x0808007C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r6, #0 + cmp r5, #0xaf + bne _080800B4 + movs r4, #0 + subs r7, r1, #1 + adds r2, #9 +_08080098: + adds r0, r2, r6 + adds r1, r2, r4 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080800A6 + adds r6, r4, #0 +_080800A6: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08080098 + adds r0, r6, #5 + b _080800CC +_080800B4: + adds r0, r5, #0 + subs r0, #0x85 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + subs r7, r1, #1 + cmp r6, #4 + bls _080800D0 + adds r0, r6, #0 + movs r1, #5 + bl __umodsi3 + adds r0, #5 +_080800CC: + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080800D0: + movs r4, #0 + cmp r4, r7 + bge _0808013C + ldr r0, _08080148 + mov sb, r0 + adds r0, r5, #0 + subs r0, #0xa3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_080800E4: + lsls r0, r6, #1 + adds r0, r0, r6 + adds r0, r4, r0 + add r0, sb + ldrb r5, [r0] + movs r0, #0xd0 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08080122 + ldr r0, _0808014C + ldrh r0, [r0] + cmp r0, #1 + bne _08080122 + adds r0, r6, #0 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08080150 + adds r0, r6, r0 + ldrb r5, [r0] + mov r0, r8 + cmp r0, #4 + bhi _08080122 + subs r0, r5, #5 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08080122: + adds r4, #1 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + adds r1, #0x85 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080829F8 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, r7 + blt _080800E4 +_0808013C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08080148: .4byte gUnknown_830FB90 +_0808014C: .4byte gUnknown_2037280 +_08080150: .4byte gUnknown_830FBAE + thumb_func_end sub_0808007C + + thumb_func_start sub_08080154 +sub_08080154: @ 0x08080154 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r7, _080801BC + movs r6, #0xff + ldr r5, _080801C0 +_0808015E: + ldr r3, [r7] + lsls r2, r4, #1 + adds r0, r3, #0 + adds r0, #0x96 + adds r0, r0, r2 + strh r6, [r0] + adds r1, r3, #0 + adds r1, #0x8e + adds r1, r1, r2 + adds r0, r3, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, r0, r5 + ldrb r0, [r0] + strh r0, [r1] + adds r4, #1 + cmp r4, #3 + ble _0808015E + movs r3, #0 + ldr r7, _080801BC +_0808018C: + movs r4, #0 + adds r6, r3, #1 + lsls r5, r3, #1 +_08080192: + ldr r2, [r7] + lsls r0, r4, #1 + adds r1, r2, #0 + adds r1, #0x8e + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, r3 + bne _080801AA + adds r0, r2, #0 + adds r0, #0x96 + adds r0, r0, r5 + strh r4, [r0] +_080801AA: + adds r4, #1 + cmp r4, #3 + ble _08080192 + adds r3, r6, #0 + cmp r3, #3 + ble _0808018C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080801BC: .4byte gUnknown_2031F44 +_080801C0: .4byte gUnknown_830F8C0 + thumb_func_end sub_08080154 + + thumb_func_start sub_080801C4 +sub_080801C4: @ 0x080801C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + movs r0, #0 + str r0, [sp, #0x1c] + ldr r0, _0808029C + ldrb r0, [r0] + cmp r0, #0 + beq _080801E6 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] +_080801E6: + movs r7, #0 + ldr r6, _080802A0 + ldr r1, _080802A4 + mov sl, r1 + movs r2, #0 + mov r8, r2 +_080801F2: + ldr r2, [r6] + lsls r4, r7, #1 + adds r0, r2, #0 + adds r0, #0x8e + adds r3, r0, r4 + ldrh r0, [r3] + cmp r0, #0xff + beq _080802D2 + adds r1, r2, #0 + adds r1, #0x50 + ldrh r3, [r3] + adds r1, r1, r3 + adds r0, r2, #0 + adds r0, #0x54 + adds r0, r0, r7 + ldrb r0, [r0] + movs r2, #0 + mov sb, r2 + strb r0, [r1] + ldr r0, [r6] + adds r1, r0, #0 + adds r1, #0x8e + adds r1, r1, r4 + adds r0, #0x50 + ldrh r1, [r1] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080802A8 + adds r0, r0, r1 + mov r1, r8 + lsrs r5, r1, #0x18 + adds r1, r5, #0 + bl sub_08007EC0 + add r1, sp, #8 + movs r0, #0xff + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x8e + adds r0, r0, r4 + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + add r1, sl + add r0, sp, #8 + bl sub_080088B8 + ldr r0, [r6] + adds r0, #0x8e + adds r0, r0, r4 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + subs r1, r1, r0 + ldr r0, [r6] + adds r0, #0x8e + adds r0, r0, r4 + mov r4, r8 + ldr r2, [sp, #0x1c] + ldrh r0, [r0] + cmp r2, r0 + bne _080802AC + lsls r2, r1, #0x1a + lsrs r2, r2, #0x18 + mov r0, sb + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + adds r0, r5, #0 + add r1, sp, #8 + movs r3, #1 + bl sub_08083A5C + b _080802C2 + .align 2, 0 +_0808029C: .4byte gUnknown_30031C4 +_080802A0: .4byte gUnknown_2031F44 +_080802A4: .4byte gUnknown_20226A8 +_080802A8: .4byte gUnknown_20205AC +_080802AC: + lsls r2, r1, #0x1a + lsrs r2, r2, #0x18 + mov r1, sb + str r1, [sp] + movs r0, #1 + str r0, [sp, #4] + adds r0, r5, #0 + add r1, sp, #8 + movs r3, #1 + bl sub_08083A5C +_080802C2: + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 +_080802D2: + movs r2, #0x80 + lsls r2, r2, #0x11 + add r8, r2 + adds r7, #1 + cmp r7, #3 + ble _080801F2 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080801C4 + + thumb_func_start sub_080802F0 +sub_080802F0: @ 0x080802F0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _0808030C + ldr r0, [r1] + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x15 + bls _08080302 + b _080807CA +_08080302: + lsls r0, r0, #2 + ldr r1, _08080310 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808030C: .4byte gUnknown_2031F44 +_08080310: .4byte _08080314 +_08080314: @ jump table + .4byte _0808036C @ case 0 + .4byte _08080400 @ case 1 + .4byte _08080420 @ case 2 + .4byte _08080474 @ case 3 + .4byte _080804A0 @ case 4 + .4byte _080807CA @ case 5 + .4byte _080807CA @ case 6 + .4byte _080807CA @ case 7 + .4byte _080804D8 @ case 8 + .4byte _080807CA @ case 9 + .4byte _080807CA @ case 10 + .4byte _08080508 @ case 11 + .4byte _08080558 @ case 12 + .4byte _080805CC @ case 13 + .4byte _080805F8 @ case 14 + .4byte _08080694 @ case 15 + .4byte _080806BC @ case 16 + .4byte _080807CA @ case 17 + .4byte _080806CA @ case 18 + .4byte _080806CA @ case 19 + .4byte _080806CA @ case 20 + .4byte _080806E0 @ case 21 +_0808036C: + bl sub_0800AF94 + bl sub_0807FF90 + ldr r4, _080803F0 + ldrh r1, [r4] + movs r0, #0 + bl sub_080829F8 + ldr r5, _080803F4 + ldr r0, [r5] + movs r6, #0xac + lsls r6, r6, #1 + adds r0, r0, r6 + ldrh r1, [r4] + bl sub_0807F84C + ldrh r0, [r4] + ldr r2, [r5] + adds r1, r2, #0 + adds r1, #0x7c + ldrb r1, [r1] + adds r2, r2, r6 + bl sub_0808007C + movs r4, #0 + movs r6, #0 + ldr r0, _080803F8 + mov ip, r0 + movs r7, #0x92 + lsls r7, r7, #1 +_080803AA: + ldr r0, [r5] + lsls r1, r4, #1 + adds r0, #0x64 + adds r0, r0, r1 + strh r6, [r0] + adds r3, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #1 + movs r2, #2 +_080803BC: + ldr r0, [r5] + adds r0, r0, r7 + adds r0, r0, r1 + strh r6, [r0] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080803BC + adds r4, r3, #0 + cmp r4, #3 + ble _080803AA + ldr r4, _080803F4 + ldr r3, [r4] + adds r1, r3, #0 + adds r1, #0x70 + movs r2, #0 + movs r0, #0 + strh r0, [r1] + strb r2, [r3, #1] + ldr r1, _080803FC + adds r0, r1, #0 + mov r2, ip + strh r0, [r2] + ldr r1, [r4] + b _080806CE + .align 2, 0 +_080803F0: .4byte gUnknown_203CB48 +_080803F4: .4byte gUnknown_2031F44 +_080803F8: .4byte gUnknown_202267E +_080803FC: .4byte 0x00004422 +_08080400: + bl sub_0807F210 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808040C + b _080807CA +_0808040C: + ldr r0, _0808041C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_08082744 + b _080807CA + .align 2, 0 +_0808041C: .4byte gUnknown_2031F44 +_08080420: + movs r4, #0 + ldr r5, _08080464 + ldr r6, _08080468 +_08080426: + ldrb r1, [r5] + ldrb r2, [r5, #1] + ldr r0, _0808046C + movs r3, #1 + bl sub_08006B0C + ldr r1, [r6] + adds r1, #0x54 + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x54 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08080470 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _08080426 + b _080806CA + .align 2, 0 +_08080464: .4byte gUnknown_830F8B8 +_08080468: .4byte gUnknown_2031F44 +_0808046C: .4byte gUnknown_830F9C8 +_08080470: .4byte gUnknown_20205AC +_08080474: + movs r0, #1 + rsbs r0, r0, #0 + movs r4, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _0808049C + ldr r1, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r0, r3 + str r4, [r0] + b _080807CA + .align 2, 0 +_0808049C: .4byte gUnknown_2031F44 +_080804A0: + ldr r4, _080804D0 + ldr r1, [r4] + movs r5, #0x84 + lsls r5, r5, #1 + adds r1, r1, r5 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #2 + bne _080804B8 + bl sub_0807F408 +_080804B8: + ldr r0, _080804D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080804C6 + b _080807CA +_080804C6: + ldr r1, [r4] + movs r0, #8 + strb r0, [r1] + b _080807CA + .align 2, 0 +_080804D0: .4byte gUnknown_2031F44 +_080804D4: .4byte gUnknown_2037C74 +_080804D8: + ldr r2, _080804F0 + ldr r1, [r2] + movs r3, #0 + movs r0, #0xb + strb r0, [r1] + ldr r0, [r2] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + strb r3, [r0] + b _080807CA + .align 2, 0 +_080804F0: .4byte gUnknown_2031F44 +_080804F4: + lsls r1, r1, #1 + adds r0, r3, #0 + adds r0, #0x74 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_0807F7C8 + b _08080532 +_08080508: + movs r4, #0 + ldr r2, _08080550 + ldr r0, _08080554 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #2 + movs r5, #0x8a + lsls r5, r5, #1 + adds r1, r3, r5 + ldrb r1, [r1] + adds r0, r0, r2 +_08080524: + ldrb r2, [r0] + cmp r1, r2 + beq _080804F4 + adds r0, #1 + adds r4, #1 + cmp r4, #3 + ble _08080524 +_08080532: + ldr r3, _08080554 + ldr r1, [r3] + movs r5, #0x84 + lsls r5, r5, #1 + adds r2, r1, r5 + movs r0, #0 + str r0, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, [r3] + movs r0, #0x8a + lsls r0, r0, #1 + adds r1, r1, r0 + b _080806CE + .align 2, 0 +_08080550: .4byte gUnknown_830F8C0 +_08080554: .4byte gUnknown_2031F44 +_08080558: + ldr r3, [r2] + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r3, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x3c + bgt _0808056C + b _080807CA +_0808056C: + movs r5, #0x8a + lsls r5, r5, #1 + adds r0, r3, r5 + adds r4, r3, #0 + adds r4, #0x7c + ldrb r0, [r0] + ldrb r1, [r4] + cmp r0, r1 + blo _080805B0 + ldr r2, _080805A4 + ldr r1, _080805A8 + ldrb r0, [r4] + subs r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r2 + ldr r2, _080805AC + adds r1, r2, #0 + ldrh r0, [r0] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x4a + strh r1, [r0] + ldrb r0, [r3] + adds r0, #1 + b _080805B4 + .align 2, 0 +_080805A4: .4byte gUnknown_830F8CC +_080805A8: .4byte gUnknown_830F8D4 +_080805AC: .4byte 0xFFFFA800 +_080805B0: + ldrb r0, [r3] + subs r0, #1 +_080805B4: + strb r0, [r3] + ldr r0, _080805C8 + ldr r0, [r0] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r0, r3 + movs r1, #0 + str r1, [r0] + b _080807CA + .align 2, 0 +_080805C8: .4byte gUnknown_2031F44 +_080805CC: + ldr r4, _080805F4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_08080154 + movs r0, #0x2b + bl sub_080A306C + ldr r0, [r4] + movs r5, #0xa0 + lsls r5, r5, #1 + adds r0, r0, r5 + bl sub_080826D0 + movs r0, #2 + bl sub_08001B48 + b _080807CA + .align 2, 0 +_080805F4: .4byte gUnknown_2031F44 +_080805F8: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 + ldr r4, _08080688 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x4a + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r5, [r1] + adds r0, r0, r5 + strh r0, [r1] + movs r0, #0x8d + lsls r0, r0, #1 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + bls _08080678 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r3, [r4] + movs r2, #0x8d + lsls r2, r2, #1 + adds r1, r3, r2 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1] + ldr r2, _0808068C + ldr r1, _08080690 + adds r0, r3, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r3, #0 + adds r0, #0x4a + strh r1, [r0] + movs r0, #0xc + movs r1, #2 + bl sub_08001200 + ldr r0, [r4] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r0, r3 + movs r1, #0 + str r1, [r0] + movs r0, #0x34 + bl sub_080A306C + bl sub_080801C4 +_08080678: + ldr r0, [r4] + movs r5, #0xa0 + lsls r5, r5, #1 + adds r0, r0, r5 + bl sub_080826D0 + b _080807CA + .align 2, 0 +_08080688: .4byte gUnknown_2031F44 +_0808068C: .4byte gUnknown_830F8CC +_08080690: .4byte gUnknown_830F8D4 +_08080694: + bl sub_08082D9C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080806A8 + ldr r0, _080806B8 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080806A8: + ldr r0, _080806B8 + ldr r0, [r0] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_080826D0 + b _080807CA + .align 2, 0 +_080806B8: .4byte gUnknown_2031F44 +_080806BC: + ldr r0, _080806D8 + movs r2, #0x10 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #3 + bl sub_08006B0C +_080806CA: + ldr r0, _080806DC + ldr r1, [r0] +_080806CE: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080807CA + .align 2, 0 +_080806D8: .4byte gUnknown_830FB1C +_080806DC: .4byte gUnknown_2031F44 +_080806E0: + bl sub_08080814 + ldr r5, _08080738 + ldr r4, [r5] + adds r1, r4, #0 + adds r1, #0x4c + movs r3, #0 + movs r2, #0 + movs r0, #0x80 + strh r0, [r1] + movs r1, #0x82 + lsls r1, r1, #1 + adds r0, r4, r1 + str r2, [r0] + ldr r2, _0808073C + adds r0, r4, r2 + strb r3, [r0] + ldr r0, [r5] + adds r0, #0x72 + strb r3, [r0] + ldr r0, _08080740 + bl sub_08000540 + ldr r0, _08080744 + ldrh r0, [r0] + cmp r0, #1 + bne _08080760 + movs r0, #0xd0 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808074C + ldr r0, _08080748 + movs r1, #0xa + bl sub_080A8878 + ldr r1, [r5] + movs r3, #0x90 + lsls r3, r3, #1 + adds r1, r1, r3 + b _0808075E + .align 2, 0 +_08080738: .4byte gUnknown_2031F44 +_0808073C: .4byte 0x00000123 +_08080740: .4byte sub_080812B4 +_08080744: .4byte gUnknown_2037280 +_08080748: .4byte sub_08080C40 +_0808074C: + ldr r0, _08080804 + ldr r0, [r0] + movs r1, #0xa + bl sub_080A8878 + ldr r1, [r5] + movs r5, #0x90 + lsls r5, r5, #1 + adds r1, r1, r5 +_0808075E: + strb r0, [r1] +_08080760: + ldr r1, _08080808 + ldrh r0, [r1] + cmp r0, #1 + bls _0808079C + movs r4, #0 + ldrh r1, [r1] + cmp r4, r1 + bge _0808079C + movs r5, #0xa0 + lsls r5, r5, #0x14 + ldr r6, _08080804 +_08080776: + ldm r6!, {r0} + lsrs r1, r5, #0x18 + bl sub_080A8878 + ldr r1, _0808080C + ldr r1, [r1] + movs r2, #0x90 + lsls r2, r2, #1 + adds r1, r1, r2 + adds r1, r1, r4 + strb r0, [r1] + movs r3, #0x80 + lsls r3, r3, #0x11 + adds r5, r5, r3 + adds r4, #1 + ldr r0, _08080808 + ldrh r0, [r0] + cmp r4, r0 + blt _08080776 +_0808079C: + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _08080810 + cmp r0, r4 + beq _080807BA + bl sub_080A27CC + ldr r1, _0808080C + ldr r1, [r1] + movs r5, #0xaa + lsls r5, r5, #1 + adds r1, r1, r5 + strh r0, [r1] +_080807BA: + adds r0, r4, #0 + bl sub_080A3040 + movs r0, #0x35 + bl sub_080A306C + bl sub_0807F170 +_080807CA: + ldr r0, _0808080C + ldr r1, [r0] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + movs r3, #0 + ldrsh r0, [r0, r3] + movs r5, #0x8f + lsls r5, r5, #1 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08080804: .4byte gUnknown_830F8DC +_08080808: .4byte gUnknown_2037280 +_0808080C: .4byte gUnknown_2031F44 +_08080810: .4byte 0x00000193 + thumb_func_end sub_080802F0 + + thumb_func_start sub_08080814 +sub_08080814: @ 0x08080814 + push {lr} + ldr r3, _08080834 + movs r0, #0 + ldr r1, _08080838 + movs r2, #3 +_0808081E: + strh r0, [r3] + strh r0, [r3, #4] + strh r0, [r1] + strh r0, [r1, #4] + adds r1, #0x10 + subs r2, #1 + cmp r2, #0 + bge _0808081E + pop {r0} + bx r0 + .align 2, 0 +_08080834: .4byte gUnknown_30031B0 +_08080838: .4byte gUnknown_3003130 + thumb_func_end sub_08080814 + + thumb_func_start sub_0808083C +sub_0808083C: @ 0x0808083C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _0808087C + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0xa + ldrsh r1, [r2, r4] + cmp r0, r1 + ble _08080874 + ldr r0, _08080880 + movs r4, #0xc + ldrsh r1, [r2, r4] + lsls r1, r1, #4 + adds r0, #4 + adds r1, r1, r0 + ldr r0, _08080884 + strh r0, [r1] + adds r0, r3, #0 + bl sub_080A8964 +_08080874: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808087C: .4byte gUnknown_3005B60 +_08080880: .4byte gUnknown_3003130 +_08080884: .4byte 0x00002345 + thumb_func_end sub_0808083C + + thumb_func_start sub_08080888 +sub_08080888: @ 0x08080888 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080808B8 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080808BC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + strh r5, [r1, #0xc] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080808B8: .4byte sub_0808083C +_080808BC: .4byte gUnknown_3005B60 + thumb_func_end sub_08080888 + + thumb_func_start sub_080808C0 +sub_080808C0: @ 0x080808C0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _0808092C + ldr r0, [r4] + adds r0, #0x4a + ldrh r0, [r0] + movs r1, #1 + bl sub_0808002C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080808DE + b _080809D4 +_080808DE: + ldr r2, _08080930 + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r6, r1, #0 + cmp r0, #0 + beq _080808F4 + b _080809E2 +_080808F4: + ldr r0, [r4] + ldr r1, _08080934 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080809B6 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08080938 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r3, r1, #0 + ldr r0, [r4] + adds r0, #0x4c + movs r4, #0 + ldrsh r2, [r0, r4] + ldr r0, _0808093C + cmp r2, r0 + bgt _0808095C + cmp r1, #0x4b + bls _08080948 + ldr r1, _08080940 + ldr r0, _08080944 + b _0808094C + .align 2, 0 +_0808092C: .4byte gUnknown_2031F44 +_08080930: .4byte gUnknown_3005B60 +_08080934: .4byte 0x00000123 +_08080938: .4byte 0x0000028F +_0808093C: .4byte 0x000001F3 +_08080940: .4byte gUnknown_3003130 +_08080944: .4byte 0x00004523 +_08080948: + ldr r1, _08080954 + ldr r0, _08080958 +_0808094C: + strh r0, [r1, #0x14] + ldr r0, _08080958 + b _080809BA + .align 2, 0 +_08080954: .4byte gUnknown_3003130 +_08080958: .4byte 0x00005432 +_0808095C: + ldr r0, _08080978 + cmp r2, r0 + bgt _0808098A + cmp r1, #0x50 + bhi _080809B6 + adds r0, r1, #0 + subs r0, #0x15 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bhi _08080984 + ldr r1, _0808097C + ldr r0, _08080980 + b _080809BA + .align 2, 0 +_08080978: .4byte 0x000005DB +_0808097C: .4byte gUnknown_3003130 +_08080980: .4byte 0x00005432 +_08080984: + cmp r1, #9 + bhi _080809BC + b _080809AC +_0808098A: + cmp r1, #0x5a + bhi _080809B6 + adds r0, r1, #0 + subs r0, #0x47 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080809A8 + ldr r1, _080809A0 + ldr r0, _080809A4 + b _080809BA + .align 2, 0 +_080809A0: .4byte gUnknown_3003130 +_080809A4: .4byte 0x00005432 +_080809A8: + cmp r3, #0x1d + bhi _080809BC +_080809AC: + movs r0, #1 + movs r1, #5 + bl sub_08080888 + b _080809BC +_080809B6: + ldr r1, _080809C8 + ldr r0, _080809CC +_080809BA: + strh r0, [r1, #0x14] +_080809BC: + ldr r0, _080809D0 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + b _080809E0 + .align 2, 0 +_080809C8: .4byte gUnknown_3003130 +_080809CC: .4byte 0x00004523 +_080809D0: .4byte gUnknown_3005B60 +_080809D4: + ldr r0, _080809E8 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 +_080809E0: + strh r0, [r1, #8] +_080809E2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080809E8: .4byte gUnknown_3005B60 + thumb_func_end sub_080808C0 + + thumb_func_start sub_080809EC +sub_080809EC: @ 0x080809EC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _08080A70 + ldr r3, [r6] + adds r0, r3, #0 + adds r0, #0x4a + ldrh r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldr r1, _08080A74 + ands r0, r1 + adds r1, r3, #0 + adds r1, #0x9a + ldrb r1, [r1] + lsrs r2, r0, #8 + ldr r0, _08080A78 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r1, #0 + adds r0, #0x14 + cmp r2, r0 + bls _08080AFC + adds r0, #0x14 + cmp r2, r0 + bhs _08080AFC + ldr r2, _08080A7C + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r0, r0, #3 + adds r2, r0, r2 + movs r5, #8 + ldrsh r0, [r2, r5] + adds r5, r1, #0 + cmp r0, #0 + bne _08080B0A + ldr r1, _08080A80 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08080AE8 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08080A84 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + ldr r0, [r6] + adds r0, #0x4c + movs r6, #0 + ldrsh r1, [r0, r6] + ldr r0, _08080A88 + cmp r1, r0 + bgt _08080AA4 + cmp r2, #0x42 + bls _08080A94 + ldr r1, _08080A8C + ldr r0, _08080A90 + strh r0, [r1, #0x24] + b _08080ACC + .align 2, 0 +_08080A70: .4byte gUnknown_2031F44 +_08080A74: .4byte 0x0000FFFF +_08080A78: .4byte gUnknown_830F8D7 +_08080A7C: .4byte gUnknown_3005B60 +_08080A80: .4byte 0x00000123 +_08080A84: .4byte 0x0000028F +_08080A88: .4byte 0x000001F3 +_08080A8C: .4byte gUnknown_3003130 +_08080A90: .4byte 0x00004523 +_08080A94: + ldr r1, _08080A9C + ldr r0, _08080AA0 + strh r0, [r1, #0x24] + b _08080ACC + .align 2, 0 +_08080A9C: .4byte gUnknown_3003130 +_08080AA0: .4byte 0x00005432 +_08080AA4: + cmp r2, #0x41 + bls _08080AAE + ldr r1, _08080AD8 + ldr r0, _08080ADC + strh r0, [r1, #0x24] +_08080AAE: + adds r0, r2, #0 + subs r0, #0x29 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x18 + bhi _08080AC0 + ldr r1, _08080AD8 + ldr r0, _08080AE0 + strh r0, [r1, #0x24] +_08080AC0: + cmp r3, #9 + bhi _08080ACC + movs r0, #2 + movs r1, #5 + bl sub_08080888 +_08080ACC: + ldr r0, _08080AE4 + adds r1, r5, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + b _08080B08 + .align 2, 0 +_08080AD8: .4byte gUnknown_3003130 +_08080ADC: .4byte 0x00004523 +_08080AE0: .4byte 0x00005432 +_08080AE4: .4byte gUnknown_3005B60 +_08080AE8: + ldr r0, _08080AF4 + ldr r1, _08080AF8 + strh r1, [r0, #0x24] + movs r0, #1 + strh r0, [r2, #8] + b _08080B0A + .align 2, 0 +_08080AF4: .4byte gUnknown_3003130 +_08080AF8: .4byte 0x00004523 +_08080AFC: + ldr r0, _08080B10 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 +_08080B08: + strh r0, [r1, #8] +_08080B0A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08080B10: .4byte gUnknown_3005B60 + thumb_func_end sub_080809EC + + thumb_func_start sub_08080B14 +sub_08080B14: @ 0x08080B14 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _08080B94 + ldr r3, [r5] + adds r0, r3, #0 + adds r0, #0x4a + ldrh r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldr r1, _08080B98 + ands r0, r1 + adds r1, r3, #0 + adds r1, #0x9c + ldrb r1, [r1] + lsrs r2, r0, #8 + ldr r0, _08080B9C + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r1, #0 + adds r0, #0x14 + cmp r2, r0 + bls _08080C28 + adds r0, #0x14 + cmp r2, r0 + bhs _08080C28 + ldr r2, _08080BA0 + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r0, r0, #3 + adds r2, r0, r2 + movs r6, #8 + ldrsh r0, [r2, r6] + adds r6, r1, #0 + cmp r0, #0 + bne _08080C36 + ldr r1, _08080BA4 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08080C14 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08080BA8 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, [r5] + adds r0, #0x4c + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r0, _08080BAC + cmp r1, r0 + bgt _08080BC8 + cmp r2, #0x58 + bls _08080BB8 + ldr r1, _08080BB0 + ldr r0, _08080BB4 + strh r0, [r1, #0x34] + b _08080BFA + .align 2, 0 +_08080B94: .4byte gUnknown_2031F44 +_08080B98: .4byte 0x0000FFFF +_08080B9C: .4byte gUnknown_830F8D7 +_08080BA0: .4byte gUnknown_3005B60 +_08080BA4: .4byte 0x00000123 +_08080BA8: .4byte 0x0000028F +_08080BAC: .4byte 0x000001F3 +_08080BB0: .4byte gUnknown_3003130 +_08080BB4: .4byte 0x00004523 +_08080BB8: + ldr r1, _08080BC0 + ldr r0, _08080BC4 + strh r0, [r1, #0x34] + b _08080BFA + .align 2, 0 +_08080BC0: .4byte gUnknown_3003130 +_08080BC4: .4byte 0x00005432 +_08080BC8: + cmp r2, #0x3c + bls _08080BDC + ldr r1, _08080BD4 + ldr r0, _08080BD8 + b _08080BEC + .align 2, 0 +_08080BD4: .4byte gUnknown_3003130 +_08080BD8: .4byte 0x00004523 +_08080BDC: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _08080BEE + ldr r1, _08080C08 + ldr r0, _08080C0C +_08080BEC: + strh r0, [r1, #0x34] +_08080BEE: + cmp r2, #4 + bhi _08080BFA + movs r0, #3 + movs r1, #5 + bl sub_08080888 +_08080BFA: + ldr r0, _08080C10 + adds r1, r6, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + b _08080C34 + .align 2, 0 +_08080C08: .4byte gUnknown_3003130 +_08080C0C: .4byte 0x00005432 +_08080C10: .4byte gUnknown_3005B60 +_08080C14: + ldr r0, _08080C20 + ldr r1, _08080C24 + strh r1, [r0, #0x34] + movs r0, #1 + strh r0, [r2, #8] + b _08080C36 + .align 2, 0 +_08080C20: .4byte gUnknown_3003130 +_08080C24: .4byte 0x00004523 +_08080C28: + ldr r0, _08080C3C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 +_08080C34: + strh r0, [r1, #8] +_08080C36: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08080C3C: .4byte gUnknown_3005B60 + thumb_func_end sub_08080B14 + + thumb_func_start sub_08080C40 +sub_08080C40: @ 0x08080C40 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08080C7C + ldr r0, [r0] + adds r0, #0x4a + ldrh r0, [r0] + movs r1, #1 + bl sub_0808002C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08080C8C + ldr r0, _08080C80 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r2, r1, r0 + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08080C9A + ldr r0, _08080C84 + ldr r1, _08080C88 + strh r1, [r0, #0x14] + movs r0, #1 + strh r0, [r2, #8] + b _08080C9A + .align 2, 0 +_08080C7C: .4byte gUnknown_2031F44 +_08080C80: .4byte gUnknown_3005B60 +_08080C84: .4byte gUnknown_3003130 +_08080C88: .4byte 0x00004523 +_08080C8C: + ldr r0, _08080CA0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] +_08080C9A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08080CA0: .4byte gUnknown_3005B60 + thumb_func_end sub_08080C40 + + thumb_func_start sub_08080CA4 +sub_08080CA4: @ 0x08080CA4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r8, r7 + lsls r1, r1, #0x18 + ldr r0, _08080D18 + ldr r4, _08080D1C + lsrs r1, r1, #0x17 + adds r2, r1, r4 + ldrb r6, [r2] + ldr r5, _08080D20 + adds r2, r1, r5 + movs r3, #0 + ldrsb r3, [r2, r3] + lsls r2, r3, #2 + adds r2, r2, r3 + lsls r2, r2, #1 + subs r6, r6, r2 + adds r4, #1 + adds r4, r1, r4 + ldrb r2, [r4] + adds r5, #1 + adds r1, r1, r5 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #1 + subs r2, r2, r1 + adds r1, r6, #0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + ldr r0, _08080D24 + cmp r7, r0 + bne _08080D30 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + ldr r5, _08080D28 + adds r0, r4, r5 + movs r1, #2 + bl sub_08007EC0 + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _08080D2C + str r0, [r4] + movs r0, #0x28 + bl sub_080A306C + b _08080D74 + .align 2, 0 +_08080D18: .4byte gUnknown_830FA30 +_08080D1C: .4byte gUnknown_830F8B8 +_08080D20: .4byte gUnknown_830F8B0 +_08080D24: .4byte 0x00004523 +_08080D28: .4byte gUnknown_20205AC +_08080D2C: .4byte sub_080829B8 +_08080D30: + ldr r0, _08080D50 + cmp r7, r0 + bne _08080D58 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08080D54 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + movs r0, #0x1f + bl sub_080A306C + b _08080D74 + .align 2, 0 +_08080D50: .4byte 0x00005432 +_08080D54: .4byte gUnknown_20205AC +_08080D58: + ldr r0, _08080D84 + cmp r8, r0 + bne _08080D74 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _08080D88 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + movs r0, #0x20 + bl sub_080A306C +_08080D74: + bl sub_080828A0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08080D84: .4byte 0x00002345 +_08080D88: .4byte gUnknown_20205AC + thumb_func_end sub_08080CA4 + + thumb_func_start sub_08080D8C +sub_08080D8C: @ 0x08080D8C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_0807F170 + ldr r0, _08080DAC + cmp r4, r0 + beq _08080DC0 + cmp r4, r0 + bgt _08080DB4 + ldr r0, _08080DB0 + cmp r4, r0 + beq _08080E90 + b _08080EBC + .align 2, 0 +_08080DAC: .4byte 0x00004523 +_08080DB0: .4byte 0x00002345 +_08080DB4: + ldr r0, _08080DBC + cmp r5, r0 + beq _08080E58 + b _08080EBC + .align 2, 0 +_08080DBC: .4byte 0x00005432 +_08080DC0: + ldr r7, _08080DF0 + ldr r4, [r7] + adds r5, r4, #0 + adds r5, #0x4c + ldrh r6, [r5] + movs r0, #0 + ldrsh r1, [r5, r0] + ldr r0, _08080DF4 + cmp r1, r0 + bgt _08080DFC + ldr r1, _08080DF8 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #1 + bl __divsi3 + adds r0, r6, r0 + strh r0, [r5] + b _08080EBC + .align 2, 0 +_08080DF0: .4byte gUnknown_2031F44 +_08080DF4: .4byte 0x000005DB +_08080DF8: .4byte gUnknown_830FBB3 +_08080DFC: + ldr r1, _08080E54 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + bl __divsi3 + adds r0, r6, r0 + strh r0, [r5] + movs r1, #0x8e + lsls r1, r1, #1 + adds r4, r4, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + subs r1, #0xa + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08082CD8 + ldr r0, [r7] + movs r1, #0x8f + lsls r1, r1, #1 + adds r4, r0, r1 + adds r0, #0x4c + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + subs r1, #0xa + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08082CD8 + b _08080EBC + .align 2, 0 +_08080E54: .4byte gUnknown_830FBB3 +_08080E58: + ldr r0, _08080E84 + ldr r2, [r0] + adds r4, r2, #0 + adds r4, #0x4c + ldrh r5, [r4] + movs r0, #0 + ldrsh r1, [r4, r0] + ldr r0, _08080E88 + cmp r1, r0 + bgt _08080EBC + ldr r1, _08080E8C + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + bl __divsi3 + adds r0, r5, r0 + b _08080EBA + .align 2, 0 +_08080E84: .4byte gUnknown_2031F44 +_08080E88: .4byte 0x000005DB +_08080E8C: .4byte gUnknown_830FBB3 +_08080E90: + ldr r0, _08080EC4 + ldr r0, [r0] + adds r4, r0, #0 + adds r4, #0x4c + ldr r1, _08080EC8 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + bl __divsi3 + ldrh r1, [r4] + subs r1, r1, r0 + strh r1, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + bgt _08080EBC + movs r0, #0x80 +_08080EBA: + strh r0, [r4] +_08080EBC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08080EC4: .4byte gUnknown_2031F44 +_08080EC8: .4byte gUnknown_830FBB3 + thumb_func_end sub_08080D8C + + thumb_func_start sub_08080ECC +sub_08080ECC: @ 0x08080ECC + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _08080EF8 + ldrb r0, [r0] + cmp r0, #0 + beq _08080F00 + ldr r0, _08080EFC + ldrb r0, [r0] + cmp r0, #0 + beq _08080F00 + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r3 + cmp r0, r2 + bne _08080F08 + movs r0, #1 + b _08080F0A + .align 2, 0 +_08080EF8: .4byte gUnknown_30031C4 +_08080EFC: .4byte gUnknown_300319C +_08080F00: + cmp r3, r1 + bne _08080F08 + movs r0, #1 + b _08080F0A +_08080F08: + movs r0, #0 +_08080F0A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08080ECC + + thumb_func_start sub_08080F10 +sub_08080F10: @ 0x08080F10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _08080FF0 + ldrh r0, [r0] + cmp r0, #0 + beq _08080F58 + ldr r3, _08080FF4 + ldrh r0, [r3, #4] + ldr r2, _08080FF8 + cmp r0, #0 + beq _08080F38 + movs r1, #0 + strh r0, [r2, #4] + ldr r0, _08080FFC + strh r0, [r2] + strh r1, [r3, #4] +_08080F38: + ldr r0, _08080FF8 + ldr r3, _08080FFC + adds r1, r2, #0 + adds r1, #0x10 + adds r2, r0, #0 + adds r2, #0x14 + movs r7, #2 +_08080F46: + ldrh r0, [r2] + cmp r0, #0 + beq _08080F4E + strh r3, [r1] +_08080F4E: + adds r1, #0x10 + adds r2, #0x10 + subs r7, #1 + cmp r7, #0 + bge _08080F46 +_08080F58: + movs r7, #0 + ldr r1, _08081000 + ldr r0, [r1] + adds r0, #0x7c + ldrb r0, [r0] + cmp r7, r0 + blt _08080F68 + b _08081112 +_08080F68: + ldr r0, _08080FF8 + adds r2, r0, #0 + adds r2, #0x20 + str r2, [sp] + movs r1, #0 + mov sb, r1 + movs r2, #0 + str r2, [sp, #4] + mov r8, r0 + ldr r0, _08081004 + mov sl, r0 +_08080F7E: + mov r1, r8 + ldrh r0, [r1] + ldr r1, _08080FFC + movs r2, #0x88 + lsls r2, r2, #7 + bl sub_08080ECC + cmp r0, #0 + bne _08080F92 + b _080810EE +_08080F92: + ldr r6, _08081000 + ldr r0, [r6] + adds r0, #0x96 + ldr r2, [sp, #4] + adds r0, r0, r2 + ldrh r5, [r0] + mov r0, r8 + ldrh r4, [r0, #4] + ldr r1, _08081008 + cmp r4, r1 + bne _08081010 + adds r0, r1, #0 + bl sub_08080D8C + ldr r0, [r6] + movs r2, #0x8b + lsls r2, r2, #1 + adds r4, r0, r2 + adds r0, #0x4c + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x37 + bl __divsi3 + ldrh r1, [r4] + adds r1, r1, r0 + strh r1, [r4] + lsls r1, r1, #0x10 + ldr r0, _0808100C + cmp r1, r0 + bls _08080FD6 + movs r0, #0xfa + lsls r0, r0, #2 + strh r0, [r4] +_08080FD6: + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _08081008 + bl sub_08080CA4 + ldr r1, [r6] + movs r2, #0x92 + lsls r2, r2, #1 + adds r1, r1, r2 + add r1, sb + ldrh r0, [r1] + adds r0, #1 + b _0808107A + .align 2, 0 +_08080FF0: .4byte gUnknown_2037280 +_08080FF4: .4byte gUnknown_30031B0 +_08080FF8: .4byte gUnknown_3003130 +_08080FFC: .4byte 0x00004444 +_08081000: .4byte gUnknown_2031F44 +_08081004: .4byte 0x00005432 +_08081008: .4byte 0x00004523 +_0808100C: .4byte 0x03E70000 +_08081010: + cmp r4, sl + bne _0808104E + mov r0, sl + bl sub_08080D8C + ldr r0, [r6] + movs r1, #0x8b + lsls r1, r1, #1 + adds r4, r0, r1 + adds r0, #0x4c + movs r2, #0 + ldrsh r0, [r0, r2] + movs r1, #0x46 + bl __divsi3 + ldrh r1, [r4] + adds r1, r1, r0 + strh r1, [r4] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + mov r0, sl + bl sub_08080CA4 + ldr r1, [r6] + movs r0, #0x93 + lsls r0, r0, #1 + adds r1, r1, r0 + add r1, sb + ldrh r0, [r1] + adds r0, #1 + b _0808107A +_0808104E: + ldr r0, _080810C8 + cmp r4, r0 + bne _08081086 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08080CA4 + adds r0, r4, #0 + bl sub_08080D8C + ldr r0, [r6] + movs r1, #0x94 + lsls r1, r1, #1 + adds r0, r0, r1 + mov r2, sb + adds r1, r0, r2 + ldrh r2, [r1] + ldr r0, _080810CC + cmp r2, r0 + bhi _0808107C + adds r0, r2, #1 +_0808107A: + strh r0, [r1] +_0808107C: + mov r0, r8 + ldrh r1, [r0, #4] + ldr r0, _080810C8 + cmp r1, r0 + beq _08081094 +_08081086: + ldr r1, [sp] + ldrh r0, [r1] + ldr r2, _080810D0 + cmp r0, r2 + beq _08081094 + cmp r0, sl + bne _080810EE +_08081094: + ldr r0, _080810D4 + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0x4c + movs r0, #0 + ldrsh r1, [r2, r0] + ldr r0, _080810D8 + cmp r1, r0 + ble _080810E4 + adds r0, r1, #0 + ldr r2, _080810DC + adds r0, r0, r2 + movs r1, #0x14 + bl __divsi3 + adds r1, r0, #0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _080810E0 + bl m4aMPlayTempoControl + b _080810EE + .align 2, 0 +_080810C8: .4byte 0x00002345 +_080810CC: .4byte 0x000003E6 +_080810D0: .4byte 0x00004523 +_080810D4: .4byte gUnknown_2031F44 +_080810D8: .4byte 0x000005DC +_080810DC: .4byte 0xFFFFFD12 +_080810E0: .4byte gUnknown_30074D0 +_080810E4: + ldr r0, _08081150 + movs r1, #0x80 + lsls r1, r1, #1 + bl m4aMPlayTempoControl +_080810EE: + ldr r1, [sp] + adds r1, #2 + str r1, [sp] + movs r2, #6 + add sb, r2 + ldr r0, [sp, #4] + adds r0, #2 + str r0, [sp, #4] + movs r1, #0x10 + add r8, r1 + adds r7, #1 + ldr r0, _08081154 + ldr r0, [r0] + adds r0, #0x7c + ldrb r0, [r0] + cmp r7, r0 + bge _08081112 + b _08080F7E +_08081112: + ldr r0, _08081158 + ldrh r0, [r0] + cmp r0, #0 + beq _0808113E + movs r7, #0 + ldr r3, _08081154 + ldr r0, [r3] + adds r0, #0x7c + ldrb r0, [r0] + cmp r7, r0 + bge _0808113E + movs r2, #0 + ldr r1, _0808115C +_0808112C: + strh r2, [r1] + strh r2, [r1, #4] + adds r1, #0x10 + adds r7, #1 + ldr r0, [r3] + adds r0, #0x7c + ldrb r0, [r0] + cmp r7, r0 + blt _0808112C +_0808113E: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08081150: .4byte gUnknown_30074D0 +_08081154: .4byte gUnknown_2031F44 +_08081158: .4byte gUnknown_2037280 +_0808115C: .4byte gUnknown_3003130 + thumb_func_end sub_08080F10 + + thumb_func_start sub_08081160 +sub_08081160: @ 0x08081160 + push {r4, r5, r6, lr} + movs r4, #0 + movs r6, #0 + ldr r0, _080811B0 + ldrb r0, [r0] + cmp r0, #0 + beq _08081176 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08081176: + ldr r3, _080811B4 + ldr r1, [r3] + lsls r2, r6, #1 + adds r0, r1, #0 + adds r0, #0x96 + adds r0, r0, r2 + ldrb r5, [r0] + adds r1, #0x63 + ldrb r0, [r1] + cmp r0, #0 + bne _08081248 + ldr r0, _080811B8 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #2 + bne _080811C4 + ldr r2, _080811BC + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080811D2 + ldrh r2, [r2, #0x28] + ldr r1, _080811C0 + adds r0, r1, #0 + ands r0, r2 + cmp r0, r1 + beq _080811D2 + b _080811D6 + .align 2, 0 +_080811B0: .4byte gUnknown_30031C4 +_080811B4: .4byte gUnknown_2031F44 +_080811B8: .4byte gUnknown_3005AF0 +_080811BC: .4byte gUnknown_3002360 +_080811C0: .4byte 0x00000201 +_080811C4: + ldr r0, _08081218 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080811D2 + movs r4, #1 +_080811D2: + cmp r4, #0 + beq _08081248 +_080811D6: + ldr r4, _0808121C + ldr r1, [r4] + lsls r2, r5, #1 + adds r0, r1, #0 + adds r0, #0x8e + adds r0, r0, r2 + adds r1, #0x50 + ldrh r0, [r0] + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08081220 + adds r0, r0, r1 + adds r1, r5, #4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + ldr r0, [r4] + adds r0, #0x4a + ldrh r0, [r0] + adds r1, r6, #0 + bl sub_0808002C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808122C + ldr r1, _08081224 + ldr r0, _08081228 + b _08081244 + .align 2, 0 +_08081218: .4byte gUnknown_3002360 +_0808121C: .4byte gUnknown_2031F44 +_08081220: .4byte gUnknown_20205AC +_08081224: .4byte gUnknown_30031B0 +_08081228: .4byte 0x00004523 +_0808122C: + cmp r0, #1 + bne _08081240 + ldr r1, _08081238 + ldr r0, _0808123C + b _08081244 + .align 2, 0 +_08081238: .4byte gUnknown_30031B0 +_0808123C: .4byte 0x00005432 +_08081240: + ldr r1, _080812A0 + ldr r0, _080812A4 +_08081244: + strh r0, [r1, #4] + adds r3, r4, #0 +_08081248: + ldr r1, [r3] + adds r1, #0x72 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _08081276 + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x4c + ldrh r2, [r1] + movs r4, #0 + ldrsh r0, [r1, r4] + cmp r0, #0x80 + ble _0808126E + subs r0, r2, #1 + strh r0, [r1] +_0808126E: + ldr r0, [r3] + adds r0, #0x72 + movs r1, #0 + strb r1, [r0] +_08081276: + ldr r0, _080812A8 + ldrb r0, [r0] + cmp r0, #0 + beq _0808129A + ldr r0, _080812AC + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808129A + ldr r0, [r3] + ldr r1, _080812B0 + adds r2, r0, r1 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] +_0808129A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080812A0: .4byte gUnknown_30031B0 +_080812A4: .4byte 0x00002345 +_080812A8: .4byte gUnknown_2031F75 +_080812AC: .4byte gUnknown_3002360 +_080812B0: .4byte 0x00000123 + thumb_func_end sub_08081160 + + thumb_func_start sub_080812B4 +sub_080812B4: @ 0x080812B4 + push {r4, r5, r6, lr} + bl sub_08082744 + ldr r4, _0808136C + ldr r0, [r4] + movs r1, #0x82 + lsls r1, r1, #1 + adds r2, r0, r1 + ldr r1, [r2] + ldr r0, _08081370 + cmp r1, r0 + bhi _080812D0 + adds r0, r1, #1 + str r0, [r2] +_080812D0: + bl sub_08081160 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x4c + ldrh r0, [r0] + movs r5, #0x8b + lsls r5, r5, #1 + adds r1, r1, r5 + ldrh r1, [r1] + bl sub_0800A558 + bl sub_08080F10 + ldr r0, [r4] + adds r0, r0, r5 + ldrh r0, [r0] + movs r6, #0xfa + lsls r6, r6, #2 + adds r1, r6, #0 + bl sub_08082B5C + ldr r0, [r4] + adds r0, #0x4c + ldrh r0, [r0] + bl sub_08082C4C + bl sub_08082D28 + bl sub_080824F0 + ldr r2, [r4] + adds r3, r2, #0 + adds r3, #0x63 + ldrb r0, [r3] + cmp r0, #0 + bne _08081336 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r2, r1 + ldrh r1, [r0] + ldr r0, _08081374 + cmp r1, r0 + bls _08081336 + adds r0, r2, r5 + strh r6, [r0] + movs r0, #1 + strb r0, [r3] + ldr r0, _08081378 + bl sub_08000540 +_08081336: + ldr r0, _0808136C + ldr r1, [r0] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0x8f + lsls r2, r2, #1 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808136C: .4byte gUnknown_2031F44 +_08081370: .4byte 0x00057E03 +_08081374: .4byte 0x000003E7 +_08081378: .4byte sub_080819E4 + thumb_func_end sub_080812B4 + + thumb_func_start sub_0808137C +sub_0808137C: @ 0x0808137C + bx lr + .align 2, 0 + thumb_func_end sub_0808137C + + thumb_func_start sub_08081380 +sub_08081380: @ 0x08081380 + push {r4, r5, lr} + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r1, r1, #0x14 + adds r4, r1, r0 + lsrs r2, r2, #0x14 + adds r5, r2, r0 + ldrh r0, [r4] + ldrh r1, [r5] + cmp r0, r1 + bne _080813BE + adds r0, r4, #2 + adds r1, r5, #2 + bl sub_0800895C + cmp r0, #0 + bne _080813CC + ldr r0, [r4, #8] + ldr r2, _080813C4 + ands r0, r2 + ldr r1, [r5, #8] + ands r1, r2 + cmp r0, r1 + bne _080813CC + ldr r0, [r4, #0xc] + ldr r2, _080813C8 + ands r0, r2 + ldr r1, [r5, #0xc] + ands r1, r2 + cmp r0, r1 + bne _080813CC +_080813BE: + movs r0, #1 + b _080813CE + .align 2, 0 +_080813C4: .4byte 0xFFFFFF00 +_080813C8: .4byte 0x00FFFFFF +_080813CC: + movs r0, #0 +_080813CE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08081380 + + thumb_func_start sub_080813D4 +sub_080813D4: @ 0x080813D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + mov sl, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r2, sp + movs r4, #5 +_080813F0: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + subs r4, #1 + cmp r4, #0 + bge _080813F0 + movs r6, #0 + mov r1, sp + movs r4, #4 +_08081404: + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0808140E + adds r6, #1 +_0808140E: + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _08081404 + cmp r6, #5 + beq _08081462 + cmp r3, #3 + bhi _08081462 + movs r4, #0 + ldr r3, [sp, #0x10] + cmp r4, r3 + bge _0808147A + mov r3, sl +_08081428: + movs r6, #0 + ldr r7, [sp, #0x10] + cmp r6, r7 + bge _08081470 + mov sb, r3 + mov r5, sl + lsls r0, r4, #0x18 + mov r8, r0 +_08081438: + mov r1, sb + ldrh r0, [r1] + ldrh r2, [r5] + cmp r0, r2 + bne _08081466 + cmp r4, r6 + beq _08081466 + cmp r0, #0xaf + bne _08081462 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov r0, sl + mov r7, r8 + lsrs r1, r7, #0x18 + str r3, [sp, #0xc] + bl sub_08081380 + lsls r0, r0, #0x18 + ldr r3, [sp, #0xc] + cmp r0, #0 + beq _08081466 +_08081462: + movs r0, #0xc + b _080815BA +_08081466: + adds r5, #0x10 + adds r6, #1 + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _08081438 +_08081470: + adds r3, #0x10 + adds r4, #1 + ldr r1, [sp, #0x10] + cmp r4, r1 + blt _08081428 +_0808147A: + movs r2, #0 + mov r1, sp + movs r4, #4 +_08081480: + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _0808148E + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_0808148E: + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _08081480 + cmp r2, #3 + bls _0808149E + movs r0, #0xd + b _080815BA +_0808149E: + cmp r2, #3 + bne _080814A6 + movs r0, #0xb + b _080815BA +_080814A6: + movs r4, #0 + mov r1, sp +_080814AA: + movs r7, #0 + ldrsh r0, [r1, r7] + cmp r0, #0x32 + ble _080814B4 + b _080815B4 +_080814B4: + adds r1, #2 + adds r4, #1 + cmp r4, #4 + ble _080814AA + cmp r2, #1 + bne _08081506 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _080814CE + movs r0, #1 + b _080815BA +_080814CE: + mov r0, sp + ldrh r0, [r0, #2] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _080814DC + movs r0, #2 + b _080815BA +_080814DC: + mov r0, sp + movs r3, #4 + ldrsh r0, [r0, r3] + cmp r0, #0 + ble _080814EA + movs r0, #3 + b _080815BA +_080814EA: + mov r0, sp + movs r4, #6 + ldrsh r0, [r0, r4] + cmp r0, #0 + ble _080814F8 + movs r0, #4 + b _080815BA +_080814F8: + mov r0, sp + movs r7, #8 + ldrsh r0, [r0, r7] + cmp r0, #0 + ble _08081506 + movs r0, #5 + b _080815BA +_08081506: + cmp r2, #2 + bne _080815B8 + movs r4, #0 + ldr r5, _08081550 + mov r1, sp + adds r2, r5, #0 +_08081512: + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _0808151E + strh r4, [r2] + adds r2, #2 +_0808151E: + adds r1, #2 + adds r4, #1 + cmp r4, #4 + ble _08081512 + movs r4, #0 + ldrsh r3, [r5, r4] + lsls r0, r3, #1 + mov r7, sp + adds r1, r7, r0 + movs r0, #2 + ldrsh r2, [r5, r0] + lsls r0, r2, #1 + add r0, sp + movs r4, #0 + ldrsh r1, [r1, r4] + movs r7, #0 + ldrsh r0, [r0, r7] + cmp r1, r0 + blt _08081574 + adds r0, r3, #0 + cmp r0, #0 + bne _08081554 + lsls r0, r2, #0x10 + b _0808157E + .align 2, 0 +_08081550: .4byte gUnknown_3000DF8 +_08081554: + cmp r0, #1 + bne _0808155C + lsls r0, r2, #0x10 + b _0808158A +_0808155C: + cmp r0, #2 + bne _08081564 + lsls r0, r2, #0x10 + b _08081596 +_08081564: + cmp r0, #3 + bne _0808156C + lsls r0, r2, #0x10 + b _080815A2 +_0808156C: + cmp r0, #4 + bne _080815B8 + lsls r0, r2, #0x10 + b _080815AE +_08081574: + movs r2, #2 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _08081584 + lsls r0, r3, #0x10 +_0808157E: + movs r1, #6 + orrs r0, r1 + b _080815BA +_08081584: + cmp r0, #1 + bne _08081590 + lsls r0, r3, #0x10 +_0808158A: + movs r1, #7 + orrs r0, r1 + b _080815BA +_08081590: + cmp r0, #2 + bne _0808159C + lsls r0, r3, #0x10 +_08081596: + movs r1, #8 + orrs r0, r1 + b _080815BA +_0808159C: + cmp r0, #3 + bne _080815A8 + lsls r0, r3, #0x10 +_080815A2: + movs r1, #9 + orrs r0, r1 + b _080815BA +_080815A8: + cmp r0, #4 + bne _080815B8 + lsls r0, r3, #0x10 +_080815AE: + movs r1, #0xa + orrs r0, r1 + b _080815BA +_080815B4: + movs r0, #0xe + b _080815BA +_080815B8: + movs r0, #0 +_080815BA: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080813D4 + + thumb_func_start sub_080815CC +sub_080815CC: @ 0x080815CC + ldr r1, _080815D4 + strh r0, [r1] + bx lr + .align 2, 0 +_080815D4: .4byte gUnknown_3000E04 + thumb_func_end sub_080815CC + + thumb_func_start sub_080815D8 +sub_080815D8: @ 0x080815D8 + ldr r0, _080815E0 + movs r1, #0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_080815E0: .4byte gUnknown_3000E04 + thumb_func_end sub_080815D8 + + thumb_func_start sub_080815E4 +sub_080815E4: @ 0x080815E4 + ldr r1, _080815EC + strh r0, [r1] + bx lr + .align 2, 0 +_080815EC: .4byte gUnknown_3000E06 + thumb_func_end sub_080815E4 + + thumb_func_start sub_080815F0 +sub_080815F0: @ 0x080815F0 + ldr r0, _080815F8 + movs r1, #0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_080815F8: .4byte gUnknown_3000E06 + thumb_func_end sub_080815F0 + + thumb_func_start sub_080815FC +sub_080815FC: @ 0x080815FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + str r0, [sp] + mov r8, r1 + str r3, [sp, #4] + ldr r0, [sp, #0x30] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + ldr r7, _080816B8 + adds r2, r7, #0 + movs r1, #0 + adds r0, r7, #0 + adds r0, #0xa +_08081626: + strh r1, [r0] + subs r0, #2 + cmp r0, r2 + bge _08081626 + movs r6, #0 + cmp r6, sb + bge _0808165C + ldr r0, _080816B8 + mov ip, r0 + ldr r5, [sp] + adds r5, #9 +_0808163C: + movs r3, #0 + adds r4, r5, #0 + mov r2, ip +_08081642: + adds r1, r4, r3 + ldrh r0, [r2] + ldrb r1, [r1] + adds r0, r0, r1 + strh r0, [r2] + adds r2, #2 + adds r3, #1 + cmp r3, #5 + ble _08081642 + adds r5, #0x10 + adds r6, #1 + cmp r6, sb + blt _0808163C +_0808165C: + movs r1, #0 + ldrsh r3, [r7, r1] + ldrh r0, [r7] + ldrh r1, [r7, #2] + subs r0, r0, r1 + strh r0, [r7] + ldrh r0, [r7, #4] + subs r1, r1, r0 + strh r1, [r7, #2] + ldrh r1, [r7, #6] + subs r0, r0, r1 + strh r0, [r7, #4] + ldrh r0, [r7, #8] + subs r1, r1, r0 + strh r1, [r7, #6] + subs r0, r0, r3 + strh r0, [r7, #8] + movs r3, #0 + movs r2, #0 + adds r1, r7, #0 + movs r6, #4 +_08081686: + movs r4, #0 + ldrsh r0, [r1, r4] + cmp r0, #0 + bge _08081692 + strh r2, [r1] + adds r3, #1 +_08081692: + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _08081686 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r4, #0 + ldr r1, _080816B8 + movs r6, #4 +_080816A6: + ldrh r2, [r1] + movs r5, #0 + ldrsh r0, [r1, r5] + cmp r0, #0 + ble _080816C0 + cmp r0, r3 + bge _080816BC + strh r4, [r1] + b _080816C0 + .align 2, 0 +_080816B8: .4byte gUnknown_3000DE8 +_080816BC: + subs r0, r2, r3 + strh r0, [r1] +_080816C0: + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _080816A6 + ldr r1, _080817A0 + ldr r2, _080817A4 + movs r6, #4 +_080816CE: + movs r3, #0 + ldrsh r0, [r1, r3] + stm r2!, {r0} + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _080816CE + ldr r1, _080817A8 + ldr r0, [sp, #8] + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r3, r0, #0 + adds r3, #0x64 + ldr r4, _080817AC + str r3, [r4] + movs r6, #4 +_080816F2: + movs r0, #0 + ldrsh r5, [r7, r0] + adds r0, r5, #0 + muls r0, r3, r0 + movs r1, #0xa + str r3, [sp, #0xc] + bl __divsi3 + adds r5, r0, #0 + movs r1, #0xa + bl __modsi3 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0xa + bl __divsi3 + adds r5, r0, #0 + ldr r3, [sp, #0xc] + cmp r4, #4 + ble _0808171E + adds r5, #1 +_0808171E: + strh r5, [r7] + adds r7, #2 + subs r6, #1 + cmp r6, #0 + bge _080816F2 + ldr r1, _080817A0 + ldr r2, _080817B0 + movs r6, #4 +_0808172E: + movs r3, #0 + ldrsh r0, [r1, r3] + stm r2!, {r0} + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _0808172E + ldr r4, _080817A0 + ldr r0, [sp] + adds r1, r4, #0 + mov r2, sb + mov r3, sl + bl sub_080813D4 + mov r5, r8 + strb r0, [r5] + movs r1, #0xa + ldrsh r0, [r4, r1] + mov r1, sb + bl __divsi3 + mov r3, sb + subs r0, r0, r3 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08081768 + movs r0, #0 + strh r0, [r4, #0xa] +_08081768: + mov r5, r8 + ldrb r0, [r5] + cmp r0, #0xc + bne _080817C2 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r6, #0 + ldr r0, _080817B4 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #0 + movs r4, #1 + movs r3, #2 +_08081790: + adds r2, r0, #0 + asrs r2, r6 + ands r2, r4 + cmp r2, #0 + beq _080817B8 + strh r3, [r1] + b _080817BA + .align 2, 0 +_080817A0: .4byte gUnknown_3000DE8 +_080817A4: .4byte gUnknown_2031F48 +_080817A8: .4byte 0x0000014D +_080817AC: .4byte gUnknown_2031F70 +_080817B0: .4byte gUnknown_2031F5C +_080817B4: .4byte gUnknown_830FBB8 +_080817B8: + strh r2, [r1] +_080817BA: + adds r1, #2 + adds r6, #1 + cmp r6, #4 + ble _08081790 +_080817C2: + ldr r7, _0808181C + movs r2, #0xff + adds r1, r7, #0 + movs r6, #5 +_080817CA: + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0xff + ble _080817D4 + strh r2, [r1] +_080817D4: + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _080817CA + ldrh r0, [r7] + mov r4, r8 + strb r0, [r4, #1] + ldrh r0, [r7, #2] + strb r0, [r4, #2] + ldrh r0, [r7, #4] + strb r0, [r4, #3] + ldrh r0, [r7, #6] + strb r0, [r4, #4] + ldrh r0, [r7, #8] + strb r0, [r4, #5] + ldrh r0, [r7, #0xa] + strb r0, [r4, #6] + movs r6, #0 + adds r2, r7, #0 +_080817FA: + ldr r5, [sp, #4] + adds r1, r5, r6 + ldrh r0, [r2] + strb r0, [r1] + adds r2, #2 + adds r6, #1 + cmp r6, #5 + ble _080817FA + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808181C: .4byte gUnknown_3000DE8 + thumb_func_end sub_080815FC + + thumb_func_start sub_08081820 +sub_08081820: @ 0x08081820 + push {r4, lr} + sub sp, #4 + ldr r4, [sp, #0xc] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp] + bl sub_080815FC + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08081820 + + thumb_func_start sub_0808183C +sub_0808183C: @ 0x0808183C + push {r4, r5, r6, lr} + ldr r0, _0808185C + ldr r0, [r0] + movs r2, #0x82 + lsls r2, r2, #1 + adds r1, r0, r2 + ldrh r1, [r1] + adds r0, #0x4e + ldrh r4, [r0] + movs r2, #0 + ldr r5, _08081860 + cmp r1, r5 + bhi _08081864 + movs r2, #5 + b _080818B6 + .align 2, 0 +_0808185C: .4byte gUnknown_2031F44 +_08081860: .4byte 0x00000383 +_08081864: + ldr r3, _08081878 + adds r0, r1, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r3, _0808187C + cmp r0, r3 + bhi _08081880 + movs r2, #4 + b _080818B6 + .align 2, 0 +_08081878: .4byte 0xFFFFFC7C +_0808187C: .4byte 0x00000257 +_08081880: + ldr r6, _08081890 + adds r0, r1, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r3 + bhi _08081894 + movs r2, #3 + b _080818B6 + .align 2, 0 +_08081890: .4byte 0xFFFFFA24 +_08081894: + ldr r3, _080818A4 + adds r0, r1, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + bhi _080818A8 + movs r2, #2 + b _080818B6 + .align 2, 0 +_080818A4: .4byte 0xFFFFF7CC +_080818A8: + ldr r6, _080818D4 + adds r0, r1, r6 + lsls r0, r0, #0x10 + ldr r1, _080818D8 + cmp r0, r1 + bhi _080818B6 + movs r2, #1 +_080818B6: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + bl sub_080815E4 + movs r2, #0 + cmp r4, #0x40 + bhi _08081998 + adds r0, r4, #0 + subs r0, #0x32 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _080818E0 + ldr r2, _080818DC + b _08081998 + .align 2, 0 +_080818D4: .4byte 0xFFFFF31C +_080818D8: .4byte 0x012B0000 +_080818DC: .4byte 0x0000FFFF +_080818E0: + adds r0, r4, #0 + subs r0, #0x64 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _080818F4 + ldr r2, _080818F0 + b _08081998 + .align 2, 0 +_080818F0: .4byte 0x0000FFFE +_080818F4: + adds r0, r4, #0 + subs r0, #0x96 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081908 + ldr r2, _08081904 + b _08081998 + .align 2, 0 +_08081904: .4byte 0x0000FFFD +_08081908: + adds r0, r4, #0 + subs r0, #0xc8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _0808191C + ldr r2, _08081918 + b _08081998 + .align 2, 0 +_08081918: .4byte 0x0000FFFC +_0808191C: + adds r0, r4, #0 + subs r0, #0xfa + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081930 + ldr r2, _0808192C + b _08081998 + .align 2, 0 +_0808192C: .4byte 0x0000FFFB +_08081930: + ldr r1, _08081940 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081948 + ldr r2, _08081944 + b _08081998 + .align 2, 0 +_08081940: .4byte 0xFFFFFEA2 +_08081944: .4byte 0x0000FFFA +_08081948: + ldr r3, _08081958 + adds r0, r4, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081960 + ldr r2, _0808195C + b _08081998 + .align 2, 0 +_08081958: .4byte 0xFFFFFE70 +_0808195C: .4byte 0x0000FFF9 +_08081960: + ldr r6, _08081970 + adds r0, r4, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081978 + ldr r2, _08081974 + b _08081998 + .align 2, 0 +_08081970: .4byte 0xFFFFFE0C +_08081974: .4byte 0x0000FFF8 +_08081978: + ldr r1, _08081988 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bhi _08081990 + ldr r2, _0808198C + b _08081998 + .align 2, 0 +_08081988: .4byte 0xFFFFFDDA +_0808198C: .4byte 0x0000FFF7 +_08081990: + ldr r0, _080819A8 + cmp r4, r0 + bls _08081998 + ldr r2, _080819AC +_08081998: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + bl sub_080815CC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080819A8: .4byte 0x00000257 +_080819AC: .4byte 0x0000FFF6 + thumb_func_end sub_0808183C + + thumb_func_start sub_080819B0 +sub_080819B0: @ 0x080819B0 + push {lr} + adds r1, r0, #0 + ldr r0, _080819CC + ldrb r0, [r0] + cmp r0, #0 + beq _080819D4 + ldr r0, _080819D0 + ldrb r0, [r0] + cmp r0, #0 + beq _080819D4 + movs r2, #0xbc + lsls r2, r2, #6 + b _080819D6 + .align 2, 0 +_080819CC: .4byte gUnknown_30031C4 +_080819D0: .4byte gUnknown_300319C +_080819D4: + ldr r2, _080819E0 +_080819D6: + adds r0, r2, #0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080819E0: .4byte 0x00002FFF + thumb_func_end sub_080819B0 + + thumb_func_start sub_080819E4 +sub_080819E4: @ 0x080819E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _08081A18 + ldr r0, [r4] + adds r0, #0x63 + ldrb r0, [r0] + cmp r0, #2 + bhi _080819FA + bl sub_08082744 +_080819FA: + bl sub_0800A02C + ldr r0, [r4] + adds r0, #0x63 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #0xc + bls _08081A0C + b _08081EBA +_08081A0C: + lsls r0, r0, #2 + ldr r1, _08081A1C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08081A18: .4byte gUnknown_2031F44 +_08081A1C: .4byte _08081A20 +_08081A20: @ jump table + .4byte _08081A54 @ case 0 + .4byte _08081A94 @ case 1 + .4byte _08081AF0 @ case 2 + .4byte _08081BE4 @ case 3 + .4byte _08081C94 @ case 4 + .4byte _08081CA2 @ case 5 + .4byte _08081CCC @ case 6 + .4byte _08081E74 @ case 7 + .4byte _08081D00 @ case 8 + .4byte _08081D24 @ case 9 + .4byte _08081DCC @ case 10 + .4byte _08081E4C @ case 11 + .4byte _08081E88 @ case 12 +_08081A54: + ldr r0, _08081A64 + movs r1, #0x80 + lsls r1, r1, #1 + bl m4aMPlayTempoControl + movs r4, #0 + b _08081A80 + .align 2, 0 +_08081A64: .4byte gUnknown_30074D0 +_08081A68: + ldr r0, _08081A8C + ldr r0, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080A8964 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08081A80: + ldr r0, _08081A90 + ldrh r0, [r0] + cmp r4, r0 + blo _08081A68 + b _08081E74 + .align 2, 0 +_08081A8C: .4byte gUnknown_2031F44 +_08081A90: .4byte gUnknown_2037280 +_08081A94: + ldr r4, _08081AC4 + ldr r1, [r4] + adds r1, #0x4c + ldrh r0, [r1] + subs r0, #0x20 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08081AE2 + bl sub_08009B24 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x4c + movs r0, #0 + strh r0, [r1] + ldr r0, _08081AC8 + ldrb r0, [r0] + cmp r0, #0 + beq _08081ACC + adds r1, #0x17 + ldrb r0, [r1] + adds r0, #1 + b _08081AD2 + .align 2, 0 +_08081AC4: .4byte gUnknown_2031F44 +_08081AC8: .4byte gUnknown_30031C4 +_08081ACC: + adds r1, r2, #0 + adds r1, #0x63 + movs r0, #5 +_08081AD2: + strb r0, [r1] + ldr r0, _08081AE8 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1] + ldr r0, _08081AEC + bl m4aMPlayStop +_08081AE2: + bl sub_0807F170 + b _08081EBA + .align 2, 0 +_08081AE8: .4byte gUnknown_2031F44 +_08081AEC: .4byte gUnknown_3007550 +_08081AF0: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08081AFC + b _08081E74 +_08081AFC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081B08 + b _08081EBA +_08081B08: + ldr r0, _08081B94 + ldrb r0, [r0] + cmp r0, #0 + beq _08081BA8 + ldr r0, _08081B98 + ldrb r0, [r0] + cmp r0, #0 + beq _08081BA8 + ldr r3, _08081B9C + ldr r1, [r3] + ldr r4, _08081BA0 + adds r2, r1, r4 + movs r5, #0x82 + lsls r5, r5, #1 + adds r0, r1, r5 + ldr r0, [r0] + str r0, [r2] + adds r0, r1, #0 + adds r0, #0x4e + ldrh r0, [r0] + movs r2, #0x8e + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] + movs r4, #0 + mov r8, r3 + mov ip, r8 + ldr r7, _08081BA4 + movs r6, #0x92 + lsls r6, r6, #1 +_08081B44: + movs r3, #0 + adds r5, r4, #1 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r4, r0, #1 +_08081B4E: + mov r1, ip + ldr r0, [r1] + lsls r1, r3, #1 + adds r1, r1, r4 + adds r2, r0, r7 + adds r2, r2, r1 + adds r0, r0, r6 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _08081B4E + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08081B44 + mov r2, r8 + ldr r1, [r2] + ldr r4, _08081BA0 + adds r1, r1, r4 + movs r0, #0 + movs r2, #0x20 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081B8C + b _08081EBA +_08081B8C: + mov r5, r8 + ldr r1, [r5] + b _08081E78 + .align 2, 0 +_08081B94: .4byte gUnknown_30031C4 +_08081B98: .4byte gUnknown_300319C +_08081B9C: .4byte gUnknown_2031F44 +_08081BA0: .4byte 0x000011BC +_08081BA4: .4byte 0x000011C4 +_08081BA8: + ldr r4, _08081BE0 + ldr r3, [r4] + movs r0, #0xcc + lsls r0, r0, #1 + adds r1, r3, r0 + movs r2, #0x82 + lsls r2, r2, #1 + adds r0, r3, r2 + ldr r0, [r0] + str r0, [r1] + adds r0, r3, #0 + adds r0, #0x4e + ldrh r2, [r0] + movs r5, #0xce + lsls r5, r5, #1 + adds r0, r3, r5 + strh r2, [r0] + movs r0, #0 + movs r2, #0x28 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081BDA + b _08081EBA +_08081BDA: + ldr r1, [r4] + b _08081E78 + .align 2, 0 +_08081BE0: .4byte gUnknown_2031F44 +_08081BE4: + bl sub_0800A114 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081BF0 + b _08081EBA +_08081BF0: + bl sub_0800A178 + ldr r5, _08081C60 + ldr r1, [r5] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, _08081C64 + ldrb r0, [r0] + cmp r0, #0 + beq _08081C70 + ldr r0, _08081C68 + ldrb r0, [r0] + cmp r0, #0 + beq _08081C70 + ldr r2, _08081C6C + ldr r3, [r5] + ldrh r0, [r2, #4] + adds r1, r3, #0 + adds r1, #0x4e + strh r0, [r1] + movs r0, #0x82 + lsls r0, r0, #1 + adds r1, r3, r0 + ldr r0, [r2] + str r0, [r1] + movs r4, #0 + adds r7, r2, #0 + adds r7, #8 + adds r6, r5, #0 + movs r2, #0x92 + lsls r2, r2, #1 +_08081C32: + movs r3, #0 + adds r5, r4, #1 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r4, r0, #1 +_08081C3C: + ldr r1, [r6] + lsls r0, r3, #1 + adds r0, r0, r4 + adds r1, r1, r2 + adds r1, r1, r0 + adds r0, r7, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _08081C3C + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08081C32 + b _08081EBA + .align 2, 0 +_08081C60: .4byte gUnknown_2031F44 +_08081C64: .4byte gUnknown_30031C4 +_08081C68: .4byte gUnknown_300319C +_08081C6C: .4byte gUnknown_202207C +_08081C70: + ldr r2, _08081C8C + ldr r0, _08081C90 + ldr r3, [r0] + ldrh r0, [r2, #4] + adds r1, r3, #0 + adds r1, #0x4e + strh r0, [r1] + movs r4, #0x82 + lsls r4, r4, #1 + adds r1, r3, r4 + ldr r0, [r2] + str r0, [r1] + b _08081EBA + .align 2, 0 +_08081C8C: .4byte gUnknown_202207C +_08081C90: .4byte gUnknown_2031F44 +_08081C94: + bl sub_080834FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081CA0 + b _08081EBA +_08081CA0: + b _08081E74 +_08081CA2: + bl sub_08082E6C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081CAE + b _08081EBA +_08081CAE: + ldr r0, _08081CC0 + ldrb r0, [r0] + cmp r0, #0 + bne _08081CC4 + movs r0, #0x22 + bl sub_0808414C + b _08081E74 + .align 2, 0 +_08081CC0: .4byte gUnknown_3005AF8 +_08081CC4: + movs r0, #0x21 + bl sub_0808414C + b _08081E74 +_08081CCC: + ldr r6, _08081CF4 + ldr r4, [r6] + ldr r5, _08081CF8 + adds r4, r4, r5 + ldr r5, _08081CFC + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08083B04 + cmp r0, #0 + bne _08081CEE + b _08081EBA +_08081CEE: + ldr r1, [r6] + b _08081E78 + .align 2, 0 +_08081CF4: .4byte gUnknown_2031F44 +_08081CF8: .4byte 0x000011B4 +_08081CFC: .4byte gUnknown_830F79B +_08081D00: + ldr r4, _08081D1C + ldr r0, [r4] + adds r0, #0x9e + movs r1, #0 + strb r1, [r0] + ldr r0, _08081D20 + movs r1, #1 + movs r2, #1 + movs r3, #0xd + bl sub_08198D44 + ldr r1, [r4] + b _08081E78 + .align 2, 0 +_08081D1C: .4byte gUnknown_2031F44 +_08081D20: .4byte gUnknown_830F8A8 +_08081D24: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0 + beq _08081D88 + cmp r2, #0 + bgt _08081D3E + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _08081D44 + b _08081EBA +_08081D3E: + cmp r2, #1 + beq _08081D44 + b _08081EBA +_08081D44: + ldr r2, _08081D84 + ldr r0, [r2] + adds r0, #0x9e + movs r1, #1 + strb r1, [r0] + ldr r1, [r2] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r4, #0 +_08081D5A: + ldr r0, _08081D84 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x8e + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xff + beq _08081D78 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 +_08081D78: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08081D5A + b _08081EBA + .align 2, 0 +_08081D84: .4byte gUnknown_2031F44 +_08081D88: + ldr r1, _08081DC8 + ldr r0, [r1] + adds r0, #0x9e + strb r2, [r0] + ldr r1, [r1] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r4, #0 +_08081D9C: + ldr r0, _08081DC8 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x8e + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xff + beq _08081DBA + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 +_08081DBA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08081D9C + b _08081EBA + .align 2, 0 +_08081DC8: .4byte gUnknown_2031F44 +_08081DCC: + ldr r6, _08081DFC + adds r0, r6, #0 + bl sub_080819B0 + ldr r4, _08081E00 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x9e + ldrb r5, [r0] + cmp r5, #0 + bne _08081E38 + movs r0, #4 + bl sub_080D5F04 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08081E08 + ldr r0, [r4] + adds r0, #0x70 + movs r1, #2 + strh r1, [r0] + ldr r0, _08081E04 + b _08081E30 + .align 2, 0 +_08081DFC: .4byte gUnknown_30031B0 +_08081E00: .4byte gUnknown_2031F44 +_08081E04: .4byte 0x00009999 +_08081E08: + bl sub_08136F64 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08081E28 + ldr r0, [r4] + adds r0, #0x70 + movs r1, #3 + strh r1, [r0] + ldr r0, _08081E24 + b _08081E30 + .align 2, 0 +_08081E24: .4byte 0x0000AAAA +_08081E28: + ldr r0, [r4] + adds r0, #0x70 + strh r5, [r0] + ldr r0, _08081E34 +_08081E30: + strh r0, [r6, #2] + b _08081E74 + .align 2, 0 +_08081E34: .4byte 0x00007779 +_08081E38: + adds r1, r2, #0 + adds r1, #0x70 + movs r0, #1 + strh r0, [r1] + ldr r0, _08081E48 + strh r0, [r6, #2] + subs r1, #0xd + b _08081E7A + .align 2, 0 +_08081E48: .4byte 0x00008888 +_08081E4C: + ldr r0, _08081E68 + ldrb r0, [r0] + cmp r0, #0 + beq _08081E74 + ldr r0, _08081E6C + bl sub_08000540 + ldr r2, _08081E70 + ldr r0, [r2] + adds r0, #0x63 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + b _08081EB8 + .align 2, 0 +_08081E68: .4byte gUnknown_3005AF8 +_08081E6C: .4byte sub_08082340 +_08081E70: .4byte gUnknown_2031F44 +_08081E74: + ldr r0, _08081E84 + ldr r1, [r0] +_08081E78: + adds r1, #0x63 +_08081E7A: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08081EBA + .align 2, 0 +_08081E84: .4byte gUnknown_2031F44 +_08081E88: + ldr r6, _08081F08 + ldr r4, [r6] + ldr r0, _08081F0C + adds r4, r4, r0 + ldr r5, _08081F10 + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08083B04 + cmp r0, #0 + beq _08081EBA + ldr r0, _08081F14 + bl sub_08000540 + ldr r0, [r6] + adds r0, #0x63 + movs r1, #0 + strb r1, [r0] + ldr r0, [r6] +_08081EB8: + strb r1, [r0] +_08081EBA: + bl sub_08082D28 + ldr r4, _08081F08 + ldr r0, [r4] + adds r0, #0x4c + ldrh r0, [r0] + bl sub_08082C4C + bl sub_080824F0 + ldr r1, [r4] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + movs r4, #0 + ldrsh r0, [r0, r4] + movs r5, #0x8f + lsls r5, r5, #1 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08081F08: .4byte gUnknown_2031F44 +_08081F0C: .4byte 0x000011B4 +_08081F10: .4byte gUnknown_830F78E +_08081F14: .4byte sub_08082060 + thumb_func_end sub_080819E4 + + thumb_func_start sub_08081F18 +sub_08081F18: @ 0x08081F18 + push {r4, lr} + ldr r1, _08081F38 + ldr r0, [r1] + movs r2, #0xd0 + lsls r2, r2, #1 + adds r0, r0, r2 + ldr r0, [r0] + adds r4, r1, #0 + cmp r0, #6 + bls _08081F2E + b _08082058 +_08081F2E: + lsls r0, r0, #2 + ldr r1, _08081F3C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08081F38: .4byte gUnknown_2031F44 +_08081F3C: .4byte _08081F40 +_08081F40: @ jump table + .4byte _08081F5C @ case 0 + .4byte _08081F74 @ case 1 + .4byte _08081FA0 @ case 2 + .4byte _08081FB0 @ case 3 + .4byte _08081FD6 @ case 4 + .4byte _0808201C @ case 5 + .4byte _08082036 @ case 6 +_08081F5C: + bl sub_0800A8D4 + ldr r0, _08081F70 + ldr r2, [r0] + movs r3, #0xd0 + lsls r3, r3, #1 + adds r1, r2, r3 + movs r0, #1 + b _08082028 + .align 2, 0 +_08081F70: .4byte gUnknown_2031F44 +_08081F74: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08082058 + ldr r0, _08081F98 + ldr r1, [r0] + movs r2, #0xd0 + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r1, _08081F9C + movs r0, #1 + strb r0, [r1] + b _08082058 + .align 2, 0 +_08081F98: .4byte gUnknown_2031F44 +_08081F9C: .4byte gUnknown_30027A0 +_08081FA0: + bl sub_0815336C + ldr r0, _08081FAC + ldr r2, [r0] + b _0808201E + .align 2, 0 +_08081FAC: .4byte gUnknown_2031F44 +_08081FB0: + ldr r1, [r4] + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0xa + bne _08082058 + bl sub_0800A8D4 + ldr r1, [r4] + movs r3, #0xd0 + lsls r3, r3, #1 + adds r1, r1, r3 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + b _08082058 +_08081FD6: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08082058 + bl sub_081533B0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08082000 + ldr r0, _08081FFC + ldr r0, [r0] + movs r1, #0xd0 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #5 + str r1, [r0] + b _08082058 + .align 2, 0 +_08081FFC: .4byte gUnknown_2031F44 +_08082000: + ldr r0, _08082018 + ldr r1, [r0] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r1, r3 + str r2, [r0] + movs r0, #0xd0 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #3 + str r0, [r1] + b _08082058 + .align 2, 0 +_08082018: .4byte gUnknown_2031F44 +_0808201C: + ldr r2, [r4] +_0808201E: + movs r3, #0xd0 + lsls r3, r3, #1 + adds r1, r2, r3 + ldr r0, [r1] + adds r0, #1 +_08082028: + str r0, [r1] + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r2, r0 + movs r0, #0 + str r0, [r1] + b _08082058 +_08082036: + ldr r1, [r4] + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #5 + ble _08082058 + ldr r1, _08082054 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _0808205A + .align 2, 0 +_08082054: .4byte gUnknown_30027A0 +_08082058: + movs r0, #0 +_0808205A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08081F18 + + thumb_func_start sub_08082060 +sub_08082060: @ 0x08082060 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r1, _08082080 + ldr r0, [r1] + adds r0, #0x63 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #0xc + bls _08082074 + b _080822F8 +_08082074: + lsls r0, r0, #2 + ldr r1, _08082084 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08082080: .4byte gUnknown_2031F44 +_08082084: .4byte _08082088 +_08082088: @ jump table + .4byte _080820BC @ case 0 + .4byte _08082108 @ case 1 + .4byte _08082138 @ case 2 + .4byte _08082170 @ case 3 + .4byte _080821A8 @ case 4 + .4byte _080821C6 @ case 5 + .4byte _080821E4 @ case 6 + .4byte _08082218 @ case 7 + .4byte _08082234 @ case 8 + .4byte _08082244 @ case 9 + .4byte _08082268 @ case 10 + .4byte _080822C0 @ case 11 + .4byte _080822E2 @ case 12 +_080820BC: + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x64 + ldrh r2, [r0] + ldr r0, _080820E8 + cmp r2, r0 + bne _080820CC + b _080821BE +_080820CC: + ldr r0, _080820EC + cmp r2, r0 + beq _080820D4 + b _080822F8 +_080820D4: + adds r0, r1, #0 + adds r0, #0x6c + ldrh r2, [r0] + ldr r0, _080820F0 + cmp r2, r0 + bne _080820F4 + adds r1, #0x63 + movs r0, #2 + strb r0, [r1] + b _080822F8 + .align 2, 0 +_080820E8: .4byte 0x00002222 +_080820EC: .4byte 0x00001111 +_080820F0: .4byte 0x00009999 +_080820F4: + ldr r0, _08082104 + cmp r2, r0 + bne _080821BE + adds r1, #0x63 + movs r0, #1 + strb r0, [r1] + b _080822F8 + .align 2, 0 +_08082104: .4byte 0x0000AAAA +_08082108: + ldr r0, [r6] + adds r0, #0x63 + movs r1, #3 + strb r1, [r0] + ldr r4, _0808212C + ldr r0, [r6] + adds r0, #0x6e + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08082130 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _08082134 + b _0808215C + .align 2, 0 +_0808212C: .4byte gUnknown_2021C7C +_08082130: .4byte gUnknown_20226A8 +_08082134: .4byte gUnknown_830F808 +_08082138: + ldr r1, [r6] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r4, _08082164 + ldr r0, [r6] + adds r0, #0x6e + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08082168 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _0808216C +_0808215C: + adds r0, r4, #0 + bl sub_080088D8 + b _080822F8 + .align 2, 0 +_08082164: .4byte gUnknown_2021C7C +_08082168: .4byte gUnknown_20226A8 +_0808216C: .4byte gUnknown_830F7ED +_08082170: + ldr r4, [r6] + ldr r0, _080821A0 + adds r4, r4, r0 + ldr r5, _080821A4 + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08083B04 + cmp r0, #0 + bne _08082190 + b _080822F8 +_08082190: + ldr r1, [r6] + movs r0, #0x84 + lsls r0, r0, #1 + adds r2, r1, r0 + movs r0, #0 + str r0, [r2] + b _080822D8 + .align 2, 0 +_080821A0: .4byte 0x000011B4 +_080821A4: .4byte gUnknown_2021C7C +_080821A8: + ldr r4, [r6] + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r4, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x3c + bgt _080821BC + b _080822F8 +_080821BC: + adds r1, r4, #0 +_080821BE: + adds r1, #0x63 + movs r0, #5 + strb r0, [r1] + b _080822F8 +_080821C6: + ldr r0, [r6] + ldr r1, _080821DC + adds r0, r0, r1 + ldr r1, _080821E0 + movs r2, #0 + bl sub_08083B04 + bl sub_0800A8D4 + b _080822D6 + .align 2, 0 +_080821DC: .4byte 0x000011B4 +_080821E0: .4byte gUnknown_830FBC8 +_080821E4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080821F0 + b _080822F8 +_080821F0: + ldr r3, _08082214 + ldr r1, [r3] + movs r2, #0x84 + lsls r2, r2, #1 + adds r0, r1, r2 + movs r2, #0 + str r2, [r0] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r3] + movs r1, #0xd0 + lsls r1, r1, #1 + adds r0, r0, r1 + str r2, [r0] + b _080822F8 + .align 2, 0 +_08082214: .4byte gUnknown_2031F44 +_08082218: + bl sub_08081F18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080822F8 + movs r0, #0x37 + bl sub_080A306C + ldr r0, _08082230 + ldr r1, [r0] + b _080822D8 + .align 2, 0 +_08082230: .4byte gUnknown_2031F44 +_08082234: + ldr r1, [r6] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_0800A8D4 + b _080822F8 +_08082244: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080822F8 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08082264 + ldr r1, [r0] + b _080822D8 + .align 2, 0 +_08082264: .4byte gUnknown_2031F44 +_08082268: + ldr r0, _080822A8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080822F8 + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x64 + ldrh r1, [r0] + ldr r0, _080822AC + cmp r1, r0 + bne _080822B4 + bl sub_080034D4 + movs r0, #2 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + ldr r0, [r6] + bl sub_08000BF0 + str r4, [r6] + ldr r0, _080822B0 + bl sub_08000540 + b _080822F8 + .align 2, 0 +_080822A8: .4byte gUnknown_2037C74 +_080822AC: .4byte 0x00002222 +_080822B0: .4byte sub_0807F4B8 +_080822B4: + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r2, r1 + str r4, [r0] + adds r1, r2, #0 + b _080822D8 +_080822C0: + ldr r1, [r6] + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x1e + ble _080822F8 + bl sub_0800A7F8 +_080822D6: + ldr r1, [r6] +_080822D8: + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080822F8 +_080822E2: + ldr r0, _08082334 + ldrb r4, [r0] + cmp r4, #0 + bne _080822F8 + ldr r0, [r6] + bl sub_08000BF0 + str r4, [r6] + ldr r0, _08082338 + bl sub_08000540 +_080822F8: + bl sub_080824F0 + ldr r0, _0808233C + ldr r1, [r0] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0x8f + lsls r2, r2, #1 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08082334: .4byte gUnknown_30031C4 +_08082338: .4byte sub_08085B34 +_0808233C: .4byte gUnknown_2031F44 + thumb_func_end sub_08082060 + + thumb_func_start sub_08082340 +sub_08082340: @ 0x08082340 + push {r4, r5, r6, lr} + ldr r1, _0808235C + ldr r0, [r1] + adds r0, #0x63 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #0xa + bls _08082352 + b _080824AE +_08082352: + lsls r0, r0, #2 + ldr r1, _08082360 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808235C: .4byte gUnknown_2031F44 +_08082360: .4byte _08082364 +_08082364: @ jump table + .4byte _08082390 @ case 0 + .4byte _080823C6 @ case 1 + .4byte _080823F0 @ case 2 + .4byte _0808241C @ case 3 + .4byte _080824AE @ case 4 + .4byte _080824AE @ case 5 + .4byte _080824AE @ case 6 + .4byte _080824AE @ case 7 + .4byte _080824AE @ case 8 + .4byte _0808244C @ case 9 + .4byte _08082464 @ case 10 +_08082390: + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #1 + bhi _080823A2 + adds r1, #0x63 + movs r0, #9 + strb r0, [r1] +_080823A2: + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x70 + ldrh r1, [r0] + cmp r1, #2 + bne _080823B2 + subs r0, #0xd + strb r1, [r0] +_080823B2: + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #3 + bne _080824AE + adds r1, #0x63 + movs r0, #1 + strb r0, [r1] + b _080824AE +_080823C6: + ldr r0, [r6] + adds r0, #0x63 + movs r2, #0 + movs r1, #3 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _080823E4 + adds r0, r0, r1 + strh r2, [r0] + ldr r0, _080823E8 + ldr r1, _080823EC + bl sub_080088B8 + b _080824AE + .align 2, 0 +_080823E4: .4byte 0x000011B4 +_080823E8: .4byte gUnknown_2021C7C +_080823EC: .4byte gUnknown_830F7D8 +_080823F0: + ldr r1, [r6] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, [r6] + ldr r1, _08082410 + adds r0, r0, r1 + strh r2, [r0] + ldr r0, _08082414 + ldr r1, _08082418 + bl sub_080088B8 + b _080824AE + .align 2, 0 +_08082410: .4byte 0x000011B4 +_08082414: .4byte gUnknown_2021C7C +_08082418: .4byte gUnknown_830F7B2 +_0808241C: + ldr r4, [r6] + ldr r2, _08082444 + adds r4, r4, r2 + ldr r5, _08082448 + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08083B04 + cmp r0, #0 + beq _080824AE + ldr r0, [r6] + adds r0, #0x63 + movs r1, #9 + strb r1, [r0] + b _080824AE + .align 2, 0 +_08082444: .4byte 0x000011B4 +_08082448: .4byte gUnknown_2021C7C +_0808244C: + movs r0, #3 + bl sub_080A1C58 + ldr r0, _08082460 + ldr r1, [r0] + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080824AE + .align 2, 0 +_08082460: .4byte gUnknown_2031F44 +_08082464: + ldr r0, _08082484 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080824AE + ldr r0, [r6] + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + bne _0808248C + ldr r0, _08082488 + bl sub_08000540 + b _08082492 + .align 2, 0 +_08082484: .4byte gUnknown_2037C74 +_08082488: .4byte sub_0807F4B8 +_0808248C: + ldr r0, _080824E8 + bl sub_08000540 +_08082492: + bl sub_080034D4 + movs r0, #2 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + ldr r4, _080824EC + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080824AE: + bl sub_080824F0 + ldr r0, _080824EC + ldr r1, [r0] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0x8f + lsls r2, r2, #1 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0808137C + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080824E8: .4byte sub_08085B34 +_080824EC: .4byte gUnknown_2031F44 + thumb_func_end sub_08082340 + + thumb_func_start sub_080824F0 +sub_080824F0: @ 0x080824F0 + push {r4, r5, r6, r7, lr} + ldr r0, _08082528 + ldrb r0, [r0] + cmp r0, #0 + bne _080824FC + b _080826C0 +_080824FC: + ldr r4, _0808252C + ldrh r0, [r4] + ldr r1, _08082530 + movs r2, #0xbc + lsls r2, r2, #6 + bl sub_08080ECC + cmp r0, #0 + beq _08082582 + ldrh r1, [r4, #2] + ldr r0, _08082534 + cmp r1, r0 + bne _08082574 + ldrh r3, [r4, #4] + ldr r0, _08082538 + cmp r3, r0 + beq _08082554 + cmp r3, r0 + bgt _08082540 + ldr r0, _0808253C + b _08082542 + .align 2, 0 +_08082528: .4byte gUnknown_30031C4 +_0808252C: .4byte gUnknown_3003130 +_08082530: .4byte 0x00002FFF +_08082534: .4byte 0x00001111 +_08082538: .4byte 0x00009999 +_0808253C: .4byte 0x00008888 +_08082540: + ldr r0, _0808254C +_08082542: + cmp r3, r0 + beq _08082554 + ldr r2, _08082550 + b _08082564 + .align 2, 0 +_0808254C: .4byte 0x0000AAAA +_08082550: .4byte gUnknown_2031F44 +_08082554: + ldr r2, _0808256C + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0x6c + strh r3, [r1] + ldrh r1, [r4, #6] + adds r0, #0x6e + strh r1, [r0] +_08082564: + ldr r0, [r2] + adds r0, #0x64 + ldr r1, _08082570 + b _08082580 + .align 2, 0 +_0808256C: .4byte gUnknown_2031F44 +_08082570: .4byte 0x00001111 +_08082574: + ldr r0, _080825AC + cmp r1, r0 + bne _08082582 + ldr r0, _080825B0 + ldr r0, [r0] + adds r0, #0x64 +_08082580: + strh r1, [r0] +_08082582: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808258E + b _080826C0 +_0808258E: + ldr r2, _080825B0 + ldr r0, [r2] + adds r0, #0x64 + ldrh r1, [r0] + ldr r0, _080825B4 + cmp r1, r0 + bne _0808259E + b _080826C0 +_0808259E: + ldr r0, _080825AC + cmp r1, r0 + bne _080825A6 + b _080826C0 +_080825A6: + movs r5, #0 + adds r7, r2, #0 + b _08082610 + .align 2, 0 +_080825AC: .4byte 0x00002222 +_080825B0: .4byte gUnknown_2031F44 +_080825B4: .4byte 0x00001111 +_080825B8: + ldr r6, _080825E4 + lsls r4, r5, #4 + adds r0, r4, r6 + ldrh r0, [r0] + ldr r1, _080825E8 + movs r2, #0xbc + lsls r2, r2, #6 + bl sub_08080ECC + cmp r0, #0 + beq _0808260A + adds r0, r6, #2 + adds r0, r4, r0 + ldrh r2, [r0] + ldr r0, _080825EC + cmp r2, r0 + beq _08082600 + cmp r2, r0 + bgt _080825F4 + ldr r0, _080825F0 + b _080825FC + .align 2, 0 +_080825E4: .4byte gUnknown_3003130 +_080825E8: .4byte 0x00002FFF +_080825EC: .4byte 0x00008888 +_080825F0: .4byte 0x00007779 +_080825F4: + ldr r0, _08082620 + cmp r2, r0 + beq _08082600 + ldr r0, _08082624 +_080825FC: + cmp r2, r0 + bne _0808260A +_08082600: + ldr r0, [r7] + lsls r1, r5, #1 + adds r0, #0x64 + adds r0, r0, r1 + strh r2, [r0] +_0808260A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08082610: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blo _080825B8 + movs r5, #0 + b _0808262E + .align 2, 0 +_08082620: .4byte 0x00009999 +_08082624: .4byte 0x0000AAAA +_08082628: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0808262E: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bhs _0808264A + ldr r0, _0808265C + ldr r0, [r0] + lsls r1, r5, #1 + adds r0, #0x64 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _08082628 +_0808264A: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _080826C0 + movs r5, #0 + ldr r4, _08082660 + b _0808266A + .align 2, 0 +_0808265C: .4byte gUnknown_2031F44 +_08082660: .4byte 0x00007779 +_08082664: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0808266A: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bhs _08082686 + ldr r0, _080826A0 + ldr r0, [r0] + lsls r1, r5, #1 + adds r0, #0x64 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r4 + beq _08082664 +_08082686: + ldr r4, _080826A4 + adds r0, r4, #0 + bl sub_080819B0 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _080826AC + ldr r0, _080826A8 + strh r0, [r4, #2] + b _080826C0 + .align 2, 0 +_080826A0: .4byte gUnknown_2031F44 +_080826A4: .4byte gUnknown_30031B0 +_080826A8: .4byte 0x00002222 +_080826AC: + ldr r0, _080826C8 + strh r0, [r4, #2] + ldr r0, _080826CC + ldr r0, [r0] + lsls r1, r5, #1 + adds r0, #0x64 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #4] + strh r5, [r4, #6] +_080826C0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080826C8: .4byte 0x00001111 +_080826CC: .4byte gUnknown_2031F44 + thumb_func_end sub_080824F0 + + thumb_func_start sub_080826D0 +sub_080826D0: @ 0x080826D0 + push {r4, lr} + sub sp, #0x14 + movs r1, #0xf0 + lsls r1, r1, #7 + str r1, [sp] + movs r1, #0xa0 + lsls r1, r1, #7 + str r1, [sp, #4] + mov r3, sp + ldr r1, _08082730 + ldr r1, [r1] + mov ip, r1 + movs r1, #0x8e + lsls r1, r1, #1 + add r1, ip + ldrh r2, [r1] + movs r1, #0x78 + subs r1, r1, r2 + strh r1, [r3, #8] + movs r1, #0x8f + lsls r1, r1, #1 + add r1, ip + ldrh r2, [r1] + movs r1, #0x50 + subs r1, r1, r2 + strh r1, [r3, #0xa] + mov r2, sp + movs r3, #0x8d + lsls r3, r3, #1 + add r3, ip + ldrh r1, [r3] + strh r1, [r2, #0xc] + ldrh r1, [r3] + strh r1, [r2, #0xe] + mov r1, ip + adds r1, #0x4a + ldrh r1, [r1] + strh r1, [r2, #0x10] + mov r1, sp + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldm r1!, {r2, r3} + stm r0!, {r2, r3} + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082730: .4byte gUnknown_2031F44 + thumb_func_end sub_080826D0 + + thumb_func_start sub_08082734 +sub_08082734: @ 0x08082734 + ldr r0, _08082740 + ldr r0, [r0] + adds r0, #0x4a + ldrh r0, [r0] + bx lr + .align 2, 0 +_08082740: .4byte gUnknown_2031F44 + thumb_func_end sub_08082734 + + thumb_func_start sub_08082744 +sub_08082744: @ 0x08082744 + push {r4, lr} + movs r1, #0 + ldr r4, _0808279C + ldrb r0, [r4] + cmp r0, #0 + beq _08082758 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_08082758: + ldr r0, _080827A0 + ldrb r0, [r0] + cmp r0, #0 + beq _080827E8 + ldrb r0, [r4] + cmp r0, #0 + beq _080827E8 + cmp r1, #0 + bne _080827AC + ldr r0, _080827A4 + ldr r3, [r0] + adds r2, r3, #0 + adds r2, #0x4a + adds r0, r3, #0 + adds r0, #0x4c + ldrh r0, [r0] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + ldr r1, _080827A8 + movs r4, #0x8b + lsls r4, r4, #1 + adds r0, r3, r4 + ldrh r0, [r0] + strh r0, [r1, #0xa] + ldrh r0, [r2] + strh r0, [r1, #0xc] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r3, r1 + bl sub_080826D0 + b _08082806 + .align 2, 0 +_0808279C: .4byte gUnknown_30031C4 +_080827A0: .4byte gUnknown_300319C +_080827A4: .4byte gUnknown_2031F44 +_080827A8: .4byte gUnknown_30031B0 +_080827AC: + ldr r3, _080827E0 + ldrh r0, [r3] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + movs r0, #0x88 + lsls r0, r0, #7 + cmp r1, r0 + bne _08082806 + ldr r0, _080827E4 + ldr r2, [r0] + ldrh r0, [r3, #0xa] + movs r4, #0x8b + lsls r4, r4, #1 + adds r1, r2, r4 + strh r0, [r1] + ldrh r0, [r3, #0xc] + adds r1, r2, #0 + adds r1, #0x4a + strh r0, [r1] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r2, r1 + bl sub_080826D0 + b _08082806 + .align 2, 0 +_080827E0: .4byte gUnknown_3003130 +_080827E4: .4byte gUnknown_2031F44 +_080827E8: + ldr r0, _0808280C + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0x4a + adds r0, r1, #0 + adds r0, #0x4c + ldrh r0, [r0] + ldrh r3, [r2] + adds r0, r0, r3 + strh r0, [r2] + movs r4, #0xa0 + lsls r4, r4, #1 + adds r0, r1, r4 + bl sub_080826D0 +_08082806: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808280C: .4byte gUnknown_2031F44 + thumb_func_end sub_08082744 + + thumb_func_start sub_08082810 +sub_08082810: @ 0x08082810 + push {r4, r5, r6, lr} + ldr r4, _08082854 + ldr r0, [r4] + movs r6, #0x8e + lsls r6, r6, #1 + adds r0, r0, r6 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, [r4] + movs r5, #0x8f + lsls r5, r5, #1 + adds r0, r0, r5 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, [r4] + adds r0, r0, r6 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, [r4] + adds r0, r0, r5 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08082854: .4byte gUnknown_2031F44 + thumb_func_end sub_08082810 + + thumb_func_start sub_08082858 +sub_08082858: @ 0x08082858 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x34] + adds r0, r0, r1 + strh r0, [r2, #0x34] + movs r1, #0x32 + ldrsh r0, [r2, r1] + cmp r0, #0 + bge _08082876 + adds r0, #7 +_08082876: + asrs r0, r0, #3 + strh r0, [r2, #0x24] + movs r1, #0x34 + ldrsh r0, [r2, r1] + cmp r0, #0 + bge _08082884 + adds r0, #7 +_08082884: + asrs r0, r0, #3 + strh r0, [r2, #0x26] + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0808289C + adds r0, r2, #0 + bl sub_08006E00 +_0808289C: + pop {r0} + bx r0 + thumb_func_end sub_08082858 + + thumb_func_start sub_080828A0 +sub_080828A0: @ 0x080828A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #1 + ands r1, r0 + adds r0, r1, #1 + cmp r0, #0 + beq _0808295C + ldr r0, _0808296C + mov sb, r0 + ldr r2, _08082970 + mov sl, r2 + adds r6, r1, #1 + movs r3, #0x1f + mov r8, r3 + movs r7, #0x10 +_080828CC: + bl sub_0806F050 + ldr r1, _08082974 + ldr r4, [r1] + adds r4, #0x4a + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + ldrh r1, [r4] + adds r1, r1, r0 + lsls r1, r1, #0x10 + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r2, r0, #0x10 + adds r0, r2, #0 + adds r0, #0x40 + lsls r0, r0, #1 + add r0, sb + movs r3, #0 + ldrsh r1, [r0, r3] + cmp r1, #0 + bge _08082900 + adds r1, #3 +_08082900: + asrs r1, r1, #2 + lsls r0, r2, #1 + add r0, sb + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bge _08082910 + adds r0, #3 +_08082910: + asrs r2, r0, #2 + adds r1, #0x78 + adds r2, #0x50 + ldr r0, _08082978 + movs r3, #1 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r5, r4, #4 + adds r5, r5, r4 + lsls r5, r5, #2 + mov r3, sl + adds r4, r5, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + ands r0, r1 + subs r0, r7, r0 + strh r0, [r4, #0x2e] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, r8 + ands r0, r2 + subs r0, r7, r0 + strh r0, [r4, #0x30] + ldr r3, _0808297C + adds r5, r5, r3 + ldr r0, _08082980 + str r0, [r5] + subs r6, #1 + cmp r6, #0 + bne _080828CC +_0808295C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808296C: .4byte gUnknown_82FA8CC +_08082970: .4byte gUnknown_20205AC +_08082974: .4byte gUnknown_2031F44 +_08082978: .4byte gUnknown_830FAD0 +_0808297C: .4byte gUnknown_20205C8 +_08082980: .4byte sub_08082858 + thumb_func_end sub_080828A0 + + thumb_func_start sub_08082984 +sub_08082984: @ 0x08082984 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #3 + bl __divsi3 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080829B0 + adds r0, r4, #0 + bl sub_08006E00 +_080829B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08082984 + + thumb_func_start sub_080829B8 +sub_080829B8: @ 0x080829B8 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + movs r1, #0x2e + ldrsh r0, [r2, r1] + lsls r0, r0, #1 + rsbs r0, r0, #0 + strh r0, [r2, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xc + rsbs r1, r1, #0 + cmp r0, r1 + bge _080829DC + ldr r0, _080829F4 + strh r0, [r2, #0x26] +_080829DC: + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080829F0 + adds r0, r2, #0 + bl sub_08006E00 +_080829F0: + pop {r0} + bx r0 + .align 2, 0 +_080829F4: .4byte 0x0000FFF4 + thumb_func_end sub_080829B8 + + thumb_func_start sub_080829F8 +sub_080829F8: @ 0x080829F8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _08082A28 + ldr r3, [r2] + lsls r4, r0, #1 + adds r2, r3, #0 + adds r2, #0x74 + adds r2, r2, r4 + strh r1, [r2] + lsls r0, r0, #4 + movs r2, #0xac + lsls r2, r2, #1 + adds r0, r0, r2 + adds r3, r3, r0 + adds r0, r3, #0 + bl sub_0807F84C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082A28: .4byte gUnknown_2031F44 + thumb_func_end sub_080829F8 + + thumb_func_start sub_08082A2C +sub_08082A2C: @ 0x08082A2C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08082A68 + cmp r0, #1 + bgt _08082A42 + cmp r0, #0 + beq _08082A48 + b _08082ACE +_08082A42: + cmp r0, #2 + beq _08082A82 + b _08082ACE +_08082A48: + ldrh r0, [r4, #0x30] + adds r0, #8 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x58 + ble _08082ACE + movs r0, #0x58 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x38 + bl sub_080A306C + b _08082ACE +_08082A68: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _08082ACE + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0 + strh r0, [r4, #0x32] + b _08082ACE +_08082A82: + ldrh r0, [r4, #0x30] + adds r0, #4 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb0 + ble _08082ACE + ldrh r0, [r4, #0x34] + adds r0, #1 + adds r1, r0, #0 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _08082ABC + adds r0, r4, #0 + bl sub_08006E00 + ldr r0, _08082AB8 + movs r2, #0x14 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #2 + bl sub_08006B0C + b _08082ACE + .align 2, 0 +_08082AB8: .4byte gUnknown_830FB50 +_08082ABC: + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _08082AD8 + strh r0, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_08082ACE: + ldrh r0, [r4, #0x30] + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082AD8: .4byte 0x0000FFF0 + thumb_func_end sub_08082A2C + + thumb_func_start sub_08082ADC +sub_08082ADC: @ 0x08082ADC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08082B18 + cmp r0, #1 + bgt _08082AF2 + cmp r0, #0 + beq _08082AF8 + b _08082B4C +_08082AF2: + cmp r0, #2 + beq _08082B2E + b _08082B4C +_08082AF8: + ldrh r0, [r4, #0x30] + adds r0, #8 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5c + ble _08082B4C + movs r0, #0x5c + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x15 + bl sub_080A306C + b _08082B4C +_08082B18: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _08082B4C + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08082B4C +_08082B2E: + ldrh r0, [r4, #0x30] + adds r0, #4 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb0 + ble _08082B4C + ldr r0, _08082B58 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_08082B4C: + ldrh r0, [r4, #0x30] + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082B58: .4byte gUnknown_2031F44 + thumb_func_end sub_08082ADC + + thumb_func_start sub_08082B5C +sub_08082B5C: @ 0x08082B5C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + ldr r1, _08082B88 + ldr r1, [r1] + movs r2, #0x8c + lsls r2, r2, #1 + adds r1, r1, r2 + ldrh r2, [r1] + cmp r2, r0 + bhs _08082B82 + adds r0, r2, #2 + strh r0, [r1] + ldrh r0, [r1] + adds r1, r3, #0 + bl sub_08082B8C +_08082B82: + pop {r0} + bx r0 + .align 2, 0 +_08082B88: .4byte gUnknown_2031F44 + thumb_func_end sub_08082B5C + + thumb_func_start sub_08082B8C +sub_08082B8C: @ 0x08082B8C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r7, _08082C1C + lsrs r0, r0, #0xa + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _08082BA4 + adds r0, r1, #7 +_08082BA4: + asrs r4, r0, #3 + movs r3, #0 + cmp r3, r4 + bge _08082BCC + ldr r0, _08082C20 + adds r6, r0, #0 + adds r0, #0x10 + adds r5, r0, #0 + adds r2, r7, #0 + adds r2, #0x56 + adds r0, r7, #0 + adds r3, r4, #0 +_08082BBC: + strh r6, [r0, #0x16] + strh r5, [r2] + adds r2, #2 + adds r0, #2 + subs r3, #1 + cmp r3, #0 + bne _08082BBC + adds r3, r4, #0 +_08082BCC: + adds r0, r1, #0 + cmp r1, #0 + bge _08082BD4 + adds r0, r1, #7 +_08082BD4: + asrs r2, r0, #3 + lsls r0, r2, #3 + subs r2, r1, r0 + cmp r2, #0 + beq _08082BF2 + lsls r0, r3, #1 + adds r0, r0, r7 + ldr r4, _08082C24 + adds r1, r2, r4 + strh r1, [r0, #0x16] + adds r0, #0x56 + adds r4, #0x10 + adds r1, r2, r4 + strh r1, [r0] + adds r3, #1 +_08082BF2: + cmp r3, #7 + bgt _08082C16 + ldr r0, _08082C28 + adds r4, r0, #0 + adds r0, #0x10 + adds r2, r0, #0 + lsls r1, r3, #1 + adds r0, r1, #0 + adds r0, #0x56 + adds r0, r0, r7 + adds r1, r1, r7 +_08082C08: + strh r4, [r1, #0x16] + strh r2, [r0] + adds r0, #2 + adds r1, #2 + adds r3, #1 + cmp r3, #7 + ble _08082C08 +_08082C16: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08082C1C: .4byte 0x06006000 +_08082C20: .4byte 0x000080E9 +_08082C24: .4byte 0xFFFF80E1 +_08082C28: .4byte 0x000080E1 + thumb_func_end sub_08082B8C + + thumb_func_start sub_08082C2C +sub_08082C2C: @ 0x08082C2C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08082C44 + muls r0, r1, r0 + cmp r0, #0 + bge _08082C3E + ldr r1, _08082C48 + adds r0, r0, r1 +_08082C3E: + asrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08082C44: .4byte 0x00057E40 +_08082C48: .4byte 0x0000FFFF + thumb_func_end sub_08082C2C + + thumb_func_start sub_08082C4C +sub_08082C4C: @ 0x08082C4C + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08082C2C + adds r5, r0, #0 + ldr r0, _08082CCC + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x4e + ldrh r0, [r1] + cmp r0, r5 + bhs _08082C6A + strh r5, [r1] +_08082C6A: + movs r6, #0 +_08082C6C: + mov r0, sp + adds r4, r0, r6 + adds r0, r5, #0 + movs r1, #0xa + bl __umodsi3 + strb r0, [r4] + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + adds r5, r0, #0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #4 + bls _08082C6C + ldr r2, _08082CD0 + mov r0, sp + ldr r3, _08082CD4 + adds r1, r3, #0 + ldrb r0, [r0, #4] + adds r0, r1, r0 + strh r0, [r2] + adds r2, #2 + mov r0, sp + ldrb r0, [r0, #3] + adds r0, r0, r1 + strh r0, [r2] + adds r2, #2 + mov r0, sp + ldrb r0, [r0, #2] + adds r0, r0, r1 + strh r0, [r2] + adds r2, #4 + mov r0, sp + ldrb r0, [r0, #1] + adds r0, r0, r1 + strh r0, [r2] + adds r2, #2 + mov r0, sp + ldrb r0, [r0] + adds r1, r1, r0 + strh r1, [r2] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08082CCC: .4byte gUnknown_2031F44 +_08082CD0: .4byte 0x06006458 +_08082CD4: .4byte 0x00008072 + thumb_func_end sub_08082C4C + + thumb_func_start sub_08082CD8 +sub_08082CD8: @ 0x08082CD8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r4, r1, #0x10 + lsrs r5, r4, #0x10 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08082CFC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __umodsi3 + lsrs r1, r4, #0x11 + subs r0, r0, r1 + strh r0, [r6] +_08082CFC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08082CD8 + + thumb_func_start sub_08082D04 +sub_08082D04: @ 0x08082D04 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + bge _08082D16 + adds r0, r2, #1 + strh r0, [r1] +_08082D16: + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _08082D24 + subs r0, r2, #1 + strh r0, [r1] +_08082D24: + pop {r0} + bx r0 + thumb_func_end sub_08082D04 + + thumb_func_start sub_08082D28 +sub_08082D28: @ 0x08082D28 + push {r4, lr} + ldr r4, _08082D4C + ldr r0, [r4] + movs r1, #0x8e + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08082D04 + ldr r0, [r4] + movs r1, #0x8f + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_08082D04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08082D4C: .4byte gUnknown_2031F44 + thumb_func_end sub_08082D28 + + thumb_func_start sub_08082D50 +sub_08082D50: @ 0x08082D50 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r5, #8 + cmp r1, #9 + bhi _08082D60 + movs r5, #0x10 +_08082D60: + ldrh r0, [r4] + movs r2, #0 + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _08082D7E + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + lsrs r1, r5, #1 + subs r0, r0, r1 + b _08082D92 +_08082D7E: + cmp r1, #0 + bge _08082D86 + adds r0, #1 + strh r0, [r4] +_08082D86: + ldrh r1, [r4] + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08082D94 + subs r0, r1, #1 +_08082D92: + strh r0, [r4] +_08082D94: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08082D50 + + thumb_func_start sub_08082D9C +sub_08082D9C: @ 0x08082D9C + push {r4, r5, lr} + ldr r5, _08082DF4 + ldr r2, [r5] + movs r4, #0x84 + lsls r4, r4, #1 + adds r0, r2, r4 + ldr r1, [r0] + cmp r1, #0 + bne _08082DBC + movs r3, #0x8e + lsls r3, r3, #1 + adds r0, r2, r3 + strh r1, [r0] + adds r3, #2 + adds r0, r2, r3 + strh r1, [r0] +_08082DBC: + ldr r0, [r5] + adds r2, r0, r4 + ldr r1, [r2] + adds r1, #1 + str r1, [r2] + movs r2, #0x8e + lsls r2, r2, #1 + adds r0, r0, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08082D50 + ldr r1, [r5] + movs r3, #0x8f + lsls r3, r3, #1 + adds r0, r1, r3 + adds r1, r1, r4 + ldrh r1, [r1] + bl sub_08082D50 + ldr r2, [r5] + adds r0, r2, r4 + ldr r0, [r0] + cmp r0, #0x14 + beq _08082DF8 + movs r0, #0 + b _08082E0C + .align 2, 0 +_08082DF4: .4byte gUnknown_2031F44 +_08082DF8: + movs r1, #0x8e + lsls r1, r1, #1 + adds r0, r2, r1 + movs r1, #0 + strh r1, [r0] + movs r3, #0x8f + lsls r3, r3, #1 + adds r0, r2, r3 + strh r1, [r0] + movs r0, #1 +_08082E0C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08082D9C + + thumb_func_start sub_08082E14 +sub_08082E14: @ 0x08082E14 + ldr r1, _08082E30 + ldr r2, [r1] + movs r3, #0x8e + lsls r3, r3, #1 + adds r1, r2, r3 + ldrh r1, [r1] + rsbs r1, r1, #0 + strh r1, [r0, #0x24] + adds r3, #2 + adds r1, r2, r3 + ldrh r1, [r1] + rsbs r1, r1, #0 + strh r1, [r0, #0x26] + bx lr + .align 2, 0 +_08082E30: .4byte gUnknown_2031F44 + thumb_func_end sub_08082E14 + + thumb_func_start sub_08082E34 +sub_08082E34: @ 0x08082E34 + push {lr} + ldr r0, _08082E60 + ldr r2, [r0] + ldr r0, _08082E64 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #1 + ldr r3, _08082E68 + adds r2, r2, r3 + adds r2, r2, r0 + adds r1, #0x4e + ldrh r1, [r1] + ldrh r0, [r2] + cmp r0, r1 + bhs _08082E5A + strh r1, [r2] +_08082E5A: + pop {r0} + bx r0 + .align 2, 0 +_08082E60: .4byte gUnknown_3005AEC +_08082E64: .4byte gUnknown_2031F44 +_08082E68: .4byte 0x000009BC + thumb_func_end sub_08082E34 + + thumb_func_start sub_08082E6C +sub_08082E6C: @ 0x08082E6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x4c + ldr r1, _08082E90 + ldr r0, [r1] + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #6 + bls _08082E86 + b _0808328C +_08082E86: + lsls r0, r0, #2 + ldr r1, _08082E94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08082E90: .4byte gUnknown_2031F44 +_08082E94: .4byte _08082E98 +_08082E98: @ jump table + .4byte _08082EB4 @ case 0 + .4byte _08082ECA @ case 1 + .4byte _08082EE4 @ case 2 + .4byte _08082F34 @ case 3 + .4byte _08083184 @ case 4 + .4byte _0808319C @ case 5 + .4byte _08083260 @ case 6 +_08082EB4: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r4] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0x11 + str r1, [r0] + b _0808328C +_08082ECA: + ldr r1, [r4] + movs r3, #0x84 + lsls r3, r3, #1 + adds r2, r1, r3 + ldr r0, [r2] + subs r0, #0xa + str r0, [r2] + cmp r0, #0 + blt _08082EDE + b _0808328C +_08082EDE: + movs r0, #0 + str r0, [r2] + b _08083248 +_08082EE4: + ldr r1, [r4] + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x14 + bgt _08082EF8 + b _0808328C +_08082EF8: + movs r6, #0 +_08082EFA: + ldr r4, _08082F2C + ldr r0, [r4] + adds r0, #0x46 + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08082F30 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #2 + bls _08082EFA + ldr r1, [r4] + movs r3, #0x84 + lsls r3, r3, #1 + adds r2, r1, r3 + movs r0, #0 + str r0, [r2] + b _08083248 + .align 2, 0 +_08082F2C: .4byte gUnknown_2031F44 +_08082F30: .4byte gUnknown_20205AC +_08082F34: + ldr r1, _08083154 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #5 + movs r2, #0x38 + movs r3, #1 + bl sub_08083A5C + movs r6, #0 + ldr r1, _08083158 + ldr r0, [r1] + adds r0, #0x7c + mov r2, sp + adds r2, #0x10 + str r2, [sp, #0x48] + ldrb r0, [r0] + cmp r6, r0 + bhs _0808302A + adds r7, r1, #0 + ldr r3, _0808315C + mov sl, r3 + mov sb, r6 + movs r0, #3 + mov r8, r0 +_08082F66: + ldr r0, [r7] + movs r2, #0x9e + lsls r2, r2, #1 + adds r1, r0, r2 + adds r1, r1, r6 + ldrb r4, [r1] + adds r0, #0x9f + adds r5, r6, #1 + adds r1, r5, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r0, [r7] + adds r0, #0x9f + ldr r1, _08083160 + bl sub_080088D8 + ldr r0, [r7] + adds r0, #0x9f + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r2, _08083164 + adds r1, r1, r2 + bl sub_080088D8 + ldr r0, [r7] + adds r1, r0, #0 + adds r1, #0x9f + adds r0, #0x7c + ldrb r0, [r0] + ldr r3, _08083168 + adds r2, r0, r3 + add r0, sl + ldrb r0, [r0] + adds r3, r6, #0 + muls r3, r0, r3 + ldrb r2, [r2] + adds r3, r3, r2 + subs r3, #3 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + mov r0, sb + str r0, [sp] + mov r2, r8 + str r2, [sp, #4] + movs r0, #5 + movs r2, #0x10 + bl sub_08083A5C + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0x9f + lsls r4, r4, #4 + adds r4, r4, r1 + movs r3, #0xad + lsls r3, r3, #1 + adds r4, r4, r3 + adds r1, r4, #0 + bl sub_080088B8 + ldr r0, [r7] + adds r0, #0x9f + ldr r1, _0808316C + bl sub_080088D8 + ldr r0, [r7] + adds r1, r0, #0 + adds r1, #0x9f + adds r0, #0x7c + ldrb r0, [r0] + ldr r3, _08083168 + adds r2, r0, r3 + add r0, sl + ldrb r0, [r0] + adds r3, r6, #0 + muls r3, r0, r3 + ldrb r2, [r2] + adds r3, r3, r2 + subs r3, #3 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + mov r0, sb + str r0, [sp] + mov r2, r8 + str r2, [sp, #4] + movs r0, #5 + movs r2, #0x60 + bl sub_08083A5C + lsls r5, r5, #0x10 + lsrs r6, r5, #0x10 + ldr r0, [r7] + adds r0, #0x7c + ldrb r0, [r0] + cmp r6, r0 + blo _08082F66 +_0808302A: + ldr r1, _08083170 + movs r3, #0 + mov sb, r3 + str r3, [sp] + movs r0, #3 + mov sl, r0 + str r0, [sp, #4] + movs r0, #5 + movs r2, #8 + movs r3, #0x50 + bl sub_08083A5C + ldr r6, _08083158 + ldr r0, [r6] + adds r4, r0, #0 + adds r4, #0x9f + adds r0, #0x4e + ldrh r0, [r0] + movs r1, #0x64 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r6] + adds r0, #0x9f + ldr r1, _08083160 + bl sub_080088D8 + ldr r0, [r6] + adds r0, #0x4e + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x48] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r6] + adds r0, #0x9f + ldr r1, [sp, #0x48] + bl sub_080088D8 + ldr r0, [r6] + adds r0, #0x9f + ldr r1, _08083174 + bl sub_080088D8 + ldr r1, [r6] + adds r1, #0x9f + mov r2, sb + str r2, [sp] + mov r3, sl + str r3, [sp, #4] + movs r0, #5 + movs r2, #0x48 + movs r3, #0x50 + bl sub_08083A5C + ldr r1, _08083178 + mov r0, sb + str r0, [sp] + mov r2, sl + str r2, [sp, #4] + movs r0, #5 + movs r2, #8 + movs r3, #0x60 + bl sub_08083A5C + ldr r5, [r6] + movs r3, #0x82 + lsls r3, r3, #1 + adds r0, r5, r3 + ldr r0, [r0] + mov r8, r0 + movs r1, #0x3c + bl __udivsi3 + movs r1, #0x3c + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r1, #0xe1 + lsls r1, r1, #4 + mov r0, r8 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r5, #0x9f + adds r0, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r6] + adds r0, #0x9f + ldr r1, _0808317C + bl sub_080088D8 + adds r1, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r6] + adds r0, #0x9f + ldr r1, _08083180 + bl sub_080088D8 + ldr r1, [r6] + adds r1, #0x9f + mov r0, sb + str r0, [sp] + mov r2, sl + str r2, [sp, #4] + movs r0, #5 + movs r2, #0x48 + movs r3, #0x60 + bl sub_08083A5C + ldr r1, [r6] + movs r3, #0x84 + lsls r3, r3, #1 + adds r0, r1, r3 + mov r2, sb + str r2, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #5 + movs r1, #2 + bl sub_08003528 + b _0808328C + .align 2, 0 +_08083154: .4byte gUnknown_830F81F +_08083158: .4byte gUnknown_2031F44 +_0808315C: .4byte gUnknown_830FC2E +_08083160: .4byte gUnknown_830F847 +_08083164: .4byte gUnknown_20226A8 +_08083168: .4byte gUnknown_830FC29 +_0808316C: .4byte gUnknown_830F82D +_08083170: .4byte gUnknown_830F83B +_08083174: .4byte gUnknown_830F843 +_08083178: .4byte gUnknown_830F830 +_0808317C: .4byte gUnknown_830F834 +_08083180: .4byte gUnknown_830F837 +_08083184: + ldr r0, _08083198 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08083192 + b _0808328C +_08083192: + ldr r1, [r4] + b _08083248 + .align 2, 0 +_08083198: .4byte gUnknown_3002360 +_0808319C: + movs r0, #5 + movs r1, #1 + bl sub_08198134 + movs r6, #0 + add r7, sp, #0x40 + ldr r5, _08083250 +_080831AA: + ldr r0, [r5] + lsls r2, r6, #1 + adds r0, #0x74 + adds r0, r0, r2 + ldrh r1, [r0] + cmp r1, #0 + beq _080831C0 + add r0, sp, #0x38 + adds r0, r0, r2 + subs r1, #0x85 + strh r1, [r0] +_080831C0: + ldr r0, [r5] + adds r0, #0x8e + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, #0xff + beq _080831DE + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 +_080831DE: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #3 + bls _080831AA + bl sub_0808183C + ldr r4, _08083250 + ldr r3, [r4] + movs r1, #0xac + lsls r1, r1, #1 + adds r0, r3, r1 + adds r1, r3, #0 + adds r1, #0x7c + ldrb r2, [r1] + subs r1, #0x2e + ldrh r1, [r1] + str r1, [sp] + adds r1, r7, #0 + add r3, sp, #8 + bl sub_080815FC + ldr r1, [r4] + adds r1, #0x9f + adds r0, r7, #0 + bl sub_080832A0 + ldr r1, [r4] + movs r2, #0xd4 + lsls r2, r2, #1 + adds r1, r1, r2 + adds r0, r7, #0 + bl sub_0808391C + ldr r0, _08083254 + movs r1, #6 + bl sub_080A8878 + bl sub_080EF7F0 + ldr r0, _08083258 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + adds r0, r7, #0 + bl sub_08136F9C + ldr r1, [r4] + ldr r3, _0808325C + adds r2, r1, r3 + movs r0, #0 + strh r0, [r2] +_08083248: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0808328C + .align 2, 0 +_08083250: .4byte gUnknown_2031F44 +_08083254: .4byte sub_080838C4 +_08083258: .4byte gUnknown_203CB48 +_0808325C: .4byte 0x000011B4 +_08083260: + ldr r4, [r4] + ldr r0, _08083288 + adds r5, r4, r0 + adds r4, #0x9f + bl sub_08197794 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08083B04 + cmp r0, #0 + beq _0808328C + bl sub_08082E34 + movs r0, #1 + b _0808328E + .align 2, 0 +_08083288: .4byte 0x000011B4 +_0808328C: + movs r0, #0 +_0808328E: + add sp, #0x4c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08082E6C + + thumb_func_start sub_080832A0 +sub_080832A0: @ 0x080832A0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0xff + strb r0, [r6] + ldr r1, _08083334 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_080088B8 + ldr r1, _08083338 + adds r0, r6, #0 + bl sub_080088D8 + ldr r1, _0808333C + adds r0, r6, #0 + bl sub_080088D8 + adds r0, r5, #0 + bl sub_08136F14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_08136F4C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _08083340 + adds r0, r6, #0 + bl sub_080088D8 + mov r0, sp + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r6, #0 + mov r1, sp + bl sub_080088D8 + ldr r1, _08083344 + adds r0, r6, #0 + bl sub_080088D8 + mov r0, sp + adds r1, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r6, #0 + mov r1, sp + bl sub_080088D8 + ldr r1, _08083348 + adds r0, r6, #0 + bl sub_080088D8 + ldr r1, _0808334C + adds r0, r6, #0 + bl sub_080088D8 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08083334: .4byte gUnknown_8592078 +_08083338: .4byte gUnknown_830F6FD +_0808333C: .4byte gUnknown_830F849 +_08083340: .4byte gUnknown_830F853 +_08083344: .4byte gUnknown_830F857 +_08083348: .4byte gUnknown_830F860 +_0808334C: .4byte gUnknown_830F6FB + thumb_func_end sub_080832A0 + + thumb_func_start sub_08083350 +sub_08083350: @ 0x08083350 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + mov ip, r2 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r0, #0 + cmp r0, r7 + bge _0808339C +_08083366: + movs r5, #0 + adds r1, r0, #1 + mov r8, r1 + cmp r5, r7 + bge _08083396 + mov r1, sb + adds r6, r1, r0 +_08083374: + ldrb r4, [r6] + lsls r1, r4, #2 + add r1, ip + mov r0, sb + adds r2, r0, r5 + ldrb r3, [r2] + lsls r0, r3, #2 + add r0, ip + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + bls _08083390 + strb r3, [r6] + strb r4, [r2] +_08083390: + adds r5, #1 + cmp r5, r7 + blt _08083374 +_08083396: + mov r0, r8 + cmp r0, r7 + blt _08083366 +_0808339C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08083350 + + thumb_func_start sub_080833A8 +sub_080833A8: @ 0x080833A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + movs r5, #0 + ldr r2, _080833C4 + ldr r0, [r2] + adds r0, #0x7c + adds r1, r2, #0 + add r3, sp, #4 + mov sl, r3 + b _080833D8 + .align 2, 0 +_080833C4: .4byte gUnknown_2031F44 +_080833C8: + mov r4, sp + adds r0, r4, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r2] + adds r0, #0x7c +_080833D8: + ldrb r0, [r0] + cmp r5, r0 + blo _080833C8 + movs r5, #0 + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0x7c + ldrb r2, [r1] + cmp r5, r2 + bhs _08083452 + mov sb, sl + movs r3, #0x92 + lsls r3, r3, #1 + adds r3, r3, r0 + mov r8, r3 + mov ip, r1 + movs r4, #0x93 + lsls r4, r4, #1 + adds r7, r0, r4 + movs r1, #0x94 + lsls r1, r1, #1 + adds r6, r0, r1 +_08083404: + lsls r4, r5, #2 + add r4, sb + lsls r3, r5, #1 + adds r3, r3, r5 + lsls r3, r3, #1 + mov r2, r8 + adds r0, r2, r3 + ldrh r2, [r0] + lsls r0, r2, #5 + subs r0, r0, r2 + lsls r1, r0, #6 + subs r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r1, r1, #6 + str r1, [r4] + adds r0, r7, r3 + ldrh r2, [r0] + lsls r0, r2, #5 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + str r1, [r4] + movs r0, #0xfa + lsls r0, r0, #2 + adds r1, r1, r0 + adds r3, r6, r3 + ldrh r0, [r3] + subs r1, r1, r0 + str r1, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, ip + ldrb r1, [r1] + cmp r5, r1 + blo _08083404 +_08083452: + ldr r4, _080834A0 + ldr r0, [r4] + adds r0, #0x7c + ldrb r1, [r0] + mov r0, sp + mov r2, sl + bl sub_08083350 + movs r5, #0 + ldr r0, [r4] + adds r0, #0x7c + ldrb r0, [r0] + cmp r5, r0 + bhs _08083492 + adds r2, r4, #0 + movs r3, #0x9e + lsls r3, r3, #1 +_08083474: + ldr r1, [r2] + adds r1, r1, r3 + adds r1, r1, r5 + mov r4, sp + adds r0, r4, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r2] + adds r0, #0x7c + ldrb r0, [r0] + cmp r5, r0 + blo _08083474 +_08083492: + ldr r0, _080834A4 + ldrb r0, [r0] + cmp r0, #0 + bne _080834A8 + movs r3, #0 + b _080834B0 + .align 2, 0 +_080834A0: .4byte gUnknown_2031F44 +_080834A4: .4byte gUnknown_30031C4 +_080834A8: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080834B0: + movs r5, #0 + ldr r1, _080834F8 + ldr r0, [r1] + adds r0, #0x7c + ldrb r0, [r0] + cmp r5, r0 + bhs _080834E6 + movs r6, #0x9e + lsls r6, r6, #1 + movs r4, #0xd2 + lsls r4, r4, #1 +_080834C6: + ldr r2, [r1] + adds r0, r2, r6 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, r3 + bne _080834D6 + adds r0, r2, r4 + strb r5, [r0] +_080834D6: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r1] + adds r0, #0x7c + ldrb r0, [r0] + cmp r5, r0 + blo _080834C6 +_080834E6: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080834F8: .4byte gUnknown_2031F44 + thumb_func_end sub_080833A8 + + thumb_func_start sub_080834FC +sub_080834FC: @ 0x080834FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + ldr r1, _08083520 + ldr r0, [r1] + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #6 + bls _08083514 + b _080837B6 +_08083514: + lsls r0, r0, #2 + ldr r1, _08083524 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08083520: .4byte gUnknown_2031F44 +_08083524: .4byte _08083528 +_08083528: @ jump table + .4byte _08083544 @ case 0 + .4byte _0808355A @ case 1 + .4byte _08083574 @ case 2 + .4byte _0808358E @ case 3 + .4byte _0808376C @ case 4 + .4byte _08083786 @ case 5 + .4byte _080837AC @ case 6 +_08083544: + ldr r1, [r2] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0xff + str r1, [r0] + b _080837B6 +_0808355A: + ldr r1, [r2] + movs r3, #0x84 + lsls r3, r3, #1 + adds r2, r1, r3 + ldr r0, [r2] + subs r0, #0xa + str r0, [r2] + cmp r0, #0 + blt _0808356E + b _080837B6 +_0808356E: + movs r0, #0 + str r0, [r2] + b _0808379C +_08083574: + ldr r1, [r2] + movs r0, #0x84 + lsls r0, r0, #1 + adds r2, r1, r0 + ldr r0, [r2] + adds r0, #1 + str r0, [r2] + cmp r0, #0x14 + bgt _08083588 + b _080837B6 +_08083588: + movs r0, #0 + str r0, [r2] + b _0808379C +_0808358E: + movs r0, #5 + movs r1, #0 + movs r2, #1 + movs r3, #0xd + bl sub_08197F44 + ldr r1, _0808374C + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #5 + movs r2, #0x40 + movs r3, #0 + bl sub_08083A5C + ldr r1, _08083750 + mov r8, r1 + mov r0, r8 + movs r1, #0x80 + movs r2, #0x34 + movs r3, #0 + bl sub_08006B0C + ldr r7, _08083754 + ldr r1, [r7] + adds r1, #0x46 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x46 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _08083758 + adds r0, r0, r6 + movs r1, #3 + bl sub_08007EC0 + ldr r0, [r7] + adds r0, #0x46 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r6, #0 + adds r5, #0x1c + adds r0, r0, r5 + ldr r4, _0808375C + str r4, [r0] + mov r0, r8 + movs r1, #0xa0 + movs r2, #0x34 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x47 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x47 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + str r4, [r0] + mov r0, r8 + movs r1, #0xc0 + movs r2, #0x34 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r1, #0x48 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x48 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r7] + adds r0, #0x48 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + str r4, [r0] + bl sub_080833A8 + movs r2, #0 + mov r8, r2 + ldr r0, [r7] + adds r0, #0x7c + ldrb r0, [r0] + cmp r8, r0 + bhs _0808372C + ldr r3, _08083760 + mov sb, r3 +_0808365E: + ldr r0, [r7] + movs r2, #0x9e + lsls r2, r2, #1 + adds r1, r0, r2 + add r1, r8 + ldrb r4, [r1] + adds r0, #0x9f + mov r5, r8 + adds r5, #1 + adds r1, r5, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r0, [r7] + adds r0, #0x9f + ldr r1, _08083764 + bl sub_080088D8 + ldr r0, [r7] + adds r0, #0x9f + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r2, _08083768 + adds r1, r1, r2 + bl sub_080088D8 + ldr r0, [r7] + adds r1, r0, #0 + adds r1, #0x9f + adds r0, #0x7c + ldrb r0, [r0] + add r0, sb + ldrb r0, [r0] + mov r3, r8 + muls r3, r0, r3 + adds r3, #5 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #5 + movs r2, #0 + bl sub_08083A5C + movs r6, #0 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r4, r0, #1 +_080836C6: + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0x9f + lsls r2, r6, #1 + adds r2, r2, r4 + movs r3, #0x92 + lsls r3, r3, #1 + adds r1, r1, r3 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r7] + adds r1, r0, #0 + adds r1, #0x9f + lsls r2, r6, #0x1d + movs r3, #0x90 + lsls r3, r3, #0x17 + adds r2, r2, r3 + lsrs r2, r2, #0x18 + adds r0, #0x7c + ldrb r0, [r0] + add r0, sb + ldrb r0, [r0] + mov r3, r8 + muls r3, r0, r3 + adds r3, #5 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #5 + bl sub_08083A5C + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #2 + bls _080836C6 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, [r7] + adds r0, #0x7c + ldrb r0, [r0] + cmp r8, r0 + blo _0808365E +_0808372C: + movs r0, #5 + bl sub_0800365C + movs r0, #5 + movs r1, #3 + bl sub_08003528 + ldr r0, _08083754 + ldr r1, [r0] + movs r0, #0x84 + lsls r0, r0, #1 + adds r2, r1, r0 + movs r0, #0 + str r0, [r2] + b _0808379C + .align 2, 0 +_0808374C: .4byte gUnknown_830F84D +_08083750: .4byte gUnknown_830FA30 +_08083754: .4byte gUnknown_2031F44 +_08083758: .4byte gUnknown_20205AC +_0808375C: .4byte sub_08007140 +_08083760: .4byte gUnknown_830FC33 +_08083764: .4byte gUnknown_830F847 +_08083768: .4byte gUnknown_20226A8 +_0808376C: + ldr r2, [r2] + movs r3, #0x84 + lsls r3, r3, #1 + adds r1, r2, r3 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + cmp r0, #0x14 + ble _080837B6 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _080837B6 +_08083786: + ldr r0, _080837A4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080837B6 + movs r0, #5 + bl sub_080A306C + ldr r0, _080837A8 + ldr r1, [r0] +_0808379C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080837B6 + .align 2, 0 +_080837A4: .4byte gUnknown_3002360 +_080837A8: .4byte gUnknown_2031F44 +_080837AC: + ldr r1, [r2] + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _080837B8 +_080837B6: + movs r0, #0 +_080837B8: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080834FC + + thumb_func_start sub_080837C8 +sub_080837C8: @ 0x080837C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r0, _080838A4 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x2c] + str r1, [sp, #0x30] + ldr r5, _080838A8 + add r0, sp, #0x2c + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5] + ldr r2, _080838AC + movs r1, #2 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _080838B0 + movs r1, #0x2a + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r6, #0 + movs r7, #0xa8 + lsls r7, r7, #0x16 +_08083820: + ldr r0, _080838B4 + ldr r0, [r0] + lsls r1, r6, #1 + ldr r2, _080838B8 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r4, [r0] + adds r0, r4, #0 + movs r1, #0x64 + bl __udivsi3 + adds r1, r0, #0 + add r0, sp, #0xc + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r5, r0, #0 + ldr r1, _080838BC + bl sub_080088D8 + adds r5, r0, #0 + adds r0, r4, #0 + movs r1, #0x64 + bl __umodsi3 + adds r1, r0, #0 + adds r0, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + adds r5, r0, #0 + ldr r1, _080838C0 + bl sub_080088D8 + ldr r4, _080838A8 + ldrb r0, [r4] + lsrs r1, r7, #0x18 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x30 + bl sub_0800449C + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r7, r7, r0 + adds r6, #1 + cmp r6, #2 + ble _08083820 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080838A4: .4byte gUnknown_830FC60 +_080838A8: .4byte gUnknown_203A840 +_080838AC: .4byte gUnknown_830FC38 +_080838B0: .4byte gUnknown_830FC50 +_080838B4: .4byte gUnknown_3005AEC +_080838B8: .4byte 0x000009BC +_080838BC: .4byte gUnknown_830F847 +_080838C0: .4byte gUnknown_830F843 + thumb_func_end sub_080837C8 + + thumb_func_start sub_080838C4 +sub_080838C4: @ 0x080838C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _08083910 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080838EA + ldr r0, _08083914 + bl sub_080A29AC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080838EA: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808390A + ldr r0, _08083918 + ldr r0, [r0] + movs r1, #0xaa + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080A3040 + adds r0, r5, #0 + bl sub_080A8964 +_0808390A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08083910: .4byte gUnknown_3005B60 +_08083914: .4byte 0x0000016F +_08083918: .4byte gUnknown_2031F44 + thumb_func_end sub_080838C4 + + thumb_func_start sub_0808391C +sub_0808391C: @ 0x0808391C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08136F14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_08136F4C + adds r1, r0, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + strb r3, [r7, #0xa] + ldrb r0, [r6] + strb r0, [r7, #9] + movs r0, #0xff + strb r0, [r7] + ldr r0, _080839D4 + ldrb r0, [r0] + cmp r0, #0 + beq _08083A4C + ldr r0, _080839D8 + ldr r2, [r0] + movs r4, #0xd2 + lsls r4, r4, #1 + adds r1, r2, r4 + ldrb r1, [r1] + mov r8, r0 + cmp r1, #0 + bne _080839E0 + cmp r3, #0x14 + bls _080839E0 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #1 + movs r0, #0x9e + lsls r0, r0, #1 + mov sb, r0 + adds r0, r2, r0 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r5, _080839DC + adds r1, r1, r5 + adds r0, r7, #0 + bl sub_080088B8 + adds r0, r6, #0 + bl sub_08137124 + strb r0, [r7, #8] + ldrb r1, [r7, #8] + ldrb r2, [r7, #9] + ldrb r3, [r7, #0xa] + mov r6, r8 + ldr r4, [r6] + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #1 + add r4, sb + adds r4, r4, r0 + ldrb r4, [r4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r5, r5, r0 + ldrb r0, [r5, #0x12] + str r0, [sp] + adds r0, r7, #0 + bl sub_080ED784 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08083A42 + b _08083A4C + .align 2, 0 +_080839D4: .4byte gUnknown_30031C4 +_080839D8: .4byte gUnknown_2031F44 +_080839DC: .4byte gUnknown_20226A8 +_080839E0: + mov r0, r8 + ldr r2, [r0] + movs r1, #0xd2 + lsls r1, r1, #1 + adds r0, r2, r1 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _08083A4C + cmp r3, #0x14 + bhi _08083A4C + movs r4, #0x9e + lsls r4, r4, #1 + adds r0, r2, r4 + ldrb r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r5, _08083A48 + adds r1, r1, r5 + adds r0, r7, #0 + bl sub_080088B8 + adds r0, r6, #0 + bl sub_08137124 + strb r0, [r7, #8] + ldrb r1, [r7, #8] + ldrb r2, [r7, #9] + ldrb r3, [r7, #0xa] + mov r6, r8 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r4, [r0] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r5, r5, r0 + ldrb r0, [r5, #0x12] + str r0, [sp] + adds r0, r7, #0 + bl sub_080ED784 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08083A4C +_08083A42: + movs r0, #1 + b _08083A4E + .align 2, 0 +_08083A48: .4byte gUnknown_20226A8 +_08083A4C: + movs r0, #0 +_08083A4E: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808391C + + thumb_func_start sub_08083A5C +sub_08083A5C: @ 0x08083A5C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + mov sb, r1 + ldr r4, [sp, #0x38] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r5, #0 + cmp r4, #1 + beq _08083A9E + cmp r4, #1 + bgt _08083A88 + cmp r4, #0 + beq _08083A90 + b _08083ABA +_08083A88: + cmp r4, #2 + beq _08083AAC + cmp r4, #3 + bne _08083ABE +_08083A90: + add r1, sp, #0x14 + movs r0, #1 + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + movs r0, #3 + b _08083AB8 +_08083A9E: + add r0, sp, #0x14 + strb r5, [r0] + adds r1, r0, #0 + movs r0, #2 + strb r0, [r1, #1] + movs r0, #3 + b _08083AB8 +_08083AAC: + add r0, sp, #0x14 + strb r5, [r0] + adds r1, r0, #0 + movs r0, #4 + strb r0, [r1, #1] + movs r0, #5 +_08083AB8: + strb r0, [r1, #2] +_08083ABA: + cmp r4, #3 + beq _08083AD0 +_08083ABE: + add r0, sp, #0x14 + ldrb r0, [r0] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08003B18 +_08083AD0: + movs r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + ldr r0, [sp, #0x34] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, sb + str r0, [sp, #0x10] + adds r0, r6, #0 + movs r1, #1 + mov r2, r8 + adds r3, r7, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08083A5C + + thumb_func_start sub_08083B04 +sub_08083B04: @ 0x08083B04 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r0, #0 + ldrsh r4, [r5, r0] + cmp r4, #0 + beq _08083B1C + cmp r4, #1 + beq _08083B4E + b _08083B62 +_08083B1C: + movs r0, #4 + movs r1, #0 + movs r2, #0x14 + movs r3, #0xf + bl sub_08197924 + str r6, [sp] + str r4, [sp, #4] + movs r0, #4 + adds r1, r7, #0 + movs r2, #1 + movs r3, #1 + bl sub_08083A5C + movs r0, #4 + bl sub_0800365C + movs r0, #4 + movs r1, #3 + bl sub_08003528 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _08083B62 +_08083B4E: + movs r0, #4 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _08083B62 + strh r0, [r5] + movs r0, #1 + b _08083B64 +_08083B62: + movs r0, #0 +_08083B64: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08083B04 + + thumb_func_start sub_08083B6C +sub_08083B6C: @ 0x08083B6C + ldr r1, _08083B88 + movs r0, #0 + strb r0, [r1] + ldr r2, _08083B8C + 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 +_08083B88: .4byte gUnknown_3000E08 +_08083B8C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08083B6C + + thumb_func_start sub_08083B90 +sub_08083B90: @ 0x08083B90 + push {lr} + ldr r1, _08083BAC + movs r0, #1 + strb r0, [r1] + ldr r0, _08083BB0 + ldr r0, [r0] + ldrh r1, [r0, #0xe] + ldr r0, _08083BB4 + cmp r1, r0 + bls _08083BA8 + bl sub_08083C2C +_08083BA8: + pop {r0} + bx r0 + .align 2, 0 +_08083BAC: .4byte gUnknown_3000E08 +_08083BB0: .4byte gUnknown_3005AF0 +_08083BB4: .4byte 0x000003E7 + thumb_func_end sub_08083B90 + + thumb_func_start sub_08083BB8 +sub_08083BB8: @ 0x08083BB8 + ldr r1, _08083BC0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08083BC0: .4byte gUnknown_3000E08 + thumb_func_end sub_08083BB8 + + thumb_func_start sub_08083BC4 +sub_08083BC4: @ 0x08083BC4 + push {lr} + ldr r0, _08083C20 + ldrb r0, [r0] + cmp r0, #1 + bne _08083C1C + ldr r2, _08083C24 + ldr r0, [r2] + ldrb r1, [r0, #0x12] + adds r1, #1 + movs r3, #0 + strb r1, [r0, #0x12] + ldr r1, [r2] + ldrb r0, [r1, #0x12] + cmp r0, #0x3b + bls _08083C1C + strb r3, [r1, #0x12] + ldr r0, [r2] + ldrb r1, [r0, #0x11] + adds r1, #1 + strb r1, [r0, #0x11] + ldr r1, [r2] + ldrb r0, [r1, #0x11] + cmp r0, #0x3b + bls _08083C1C + strb r3, [r1, #0x11] + ldr r0, [r2] + ldrb r1, [r0, #0x10] + adds r1, #1 + strb r1, [r0, #0x10] + ldr r1, [r2] + ldrb r0, [r1, #0x10] + cmp r0, #0x3b + bls _08083C1C + strb r3, [r1, #0x10] + ldr r0, [r2] + ldrh r1, [r0, #0xe] + adds r1, #1 + strh r1, [r0, #0xe] + lsls r1, r1, #0x10 + ldr r0, _08083C28 + cmp r1, r0 + bls _08083C1C + bl sub_08083C2C +_08083C1C: + pop {r0} + bx r0 + .align 2, 0 +_08083C20: .4byte gUnknown_3000E08 +_08083C24: .4byte gUnknown_3005AF0 +_08083C28: .4byte 0x03E70000 + thumb_func_end sub_08083BC4 + + thumb_func_start sub_08083C2C +sub_08083C2C: @ 0x08083C2C + ldr r1, _08083C48 + movs r0, #2 + strb r0, [r1] + ldr r2, _08083C4C + ldr r3, [r2] + ldr r0, _08083C50 + 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 +_08083C48: .4byte gUnknown_3000E08 +_08083C4C: .4byte gUnknown_3005AF0 +_08083C50: .4byte 0x000003E7 + thumb_func_end sub_08083C2C + + thumb_func_start sub_08083C54 +sub_08083C54: @ 0x08083C54 + strb r0, [r1] + lsrs r2, r0, #8 + strb r2, [r1, #1] + lsrs r2, r0, #0x10 + strb r2, [r1, #2] + lsrs r0, r0, #0x18 + strb r0, [r1, #3] + bx lr + thumb_func_end sub_08083C54 + + thumb_func_start sub_08083C64 +sub_08083C64: @ 0x08083C64 + adds r2, r0, #0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + ldrb r1, [r2, #2] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #1] + lsls r1, r1, #8 + orrs r0, r1 + ldrb r1, [r2] + orrs r0, r1 + bx lr + thumb_func_end sub_08083C64 + + thumb_func_start sub_08083C7C +sub_08083C7C: @ 0x08083C7C + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + movs r2, #0 +_08083C84: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _08083C84 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08083C7C + + thumb_func_start sub_08083C98 +sub_08083C98: @ 0x08083C98 + push {r4, lr} + bl sub_0806F050 + adds r4, r0, #0 + bl sub_08000588 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + orrs r4, r0 + ldr r0, _08083CC0 + ldr r1, [r0] + adds r1, #0xa + adds r0, r4, #0 + bl sub_08083C54 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083CC0: .4byte gUnknown_3005AF0 + thumb_func_end sub_08083C98 + + thumb_func_start sub_08083CC4 +sub_08083CC4: @ 0x08083CC4 + ldr r3, _08083D14 + ldr r2, [r3] + ldrb r1, [r2, #0x14] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x14] + ldr r2, [r3] + ldrb r1, [r2, #0x14] + movs r0, #7 + ands r0, r1 + strb r0, [r2, #0x14] + ldr r2, [r3] + ldrb r1, [r2, #0x15] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] + ldr r2, [r3] + ldrb r1, [r2, #0x15] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] + ldr r2, [r3] + ldrb r1, [r2, #0x15] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] + ldr r2, [r3] + ldrb r1, [r2, #0x15] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] + bx lr + .align 2, 0 +_08083D14: .4byte gUnknown_3005AF0 + thumb_func_end sub_08083CC4 + + thumb_func_start sub_08083D18 +sub_08083D18: @ 0x08083D18 + push {r4, lr} + ldr r1, _08083D40 + movs r0, #0 + strb r0, [r1] + ldr r4, _08083D44 + 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 +_08083D40: .4byte gUnknown_3005E10 +_08083D44: .4byte gUnknown_3005AF0 + thumb_func_end sub_08083D18 + + thumb_func_start sub_08083D48 +sub_08083D48: @ 0x08083D48 + push {r4, r5, r6, r7, lr} + bl sub_080DE748 + movs r2, #8 + ldr r0, _08083D7C + mov ip, r0 + ldr r4, _08083D80 + ldr r3, _08083D84 +_08083D58: + mov r1, ip + ldr r0, [r1] + lsls r1, r2, #5 + adds r0, r0, r1 + adds r0, r0, r4 + adds r1, r3, #0 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6} + stm r0!, {r5, r6} + adds r2, #1 + cmp r2, #0xc + ble _08083D58 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08083D7C: .4byte gUnknown_3005AEC +_08083D80: .4byte 0x00002E90 +_08083D84: .4byte gUnknown_830FC68 + thumb_func_end sub_08083D48 + + thumb_func_start sub_08083D88 +sub_08083D88: @ 0x08083D88 + push {r4, lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r4, _08083DC0 + ldr r1, [r4] + ldr r0, _08083DC4 + adds r1, r1, r0 + ldr r2, _08083DC8 + mov r0, sp + bl CpuSet + ldr r0, [r4] + ldr r1, _08083DCC + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r4] + ldr r1, _08083DD0 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083DC0: .4byte gUnknown_3005AF0 +_08083DC4: .4byte 0x0000064C +_08083DC8: .4byte 0x05000238 +_08083DCC: .4byte 0x00000EE1 +_08083DD0: .4byte 0x00000EE9 + thumb_func_end sub_08083D88 + + thumb_func_start sub_08083DD4 +sub_08083DD4: @ 0x08083DD4 + push {lr} + sub sp, #4 + movs r3, #1 + rsbs r3, r3, #0 + str r3, [sp] + movs r0, #0x19 + movs r1, #0x28 + adds r2, r3, #0 + bl sub_08084554 + bl sub_08084540 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08083DD4 + + thumb_func_start sub_08083DF4 +sub_08083DF4: @ 0x08083DF4 + push {lr} + bl sub_0807659C + bl sub_08083CC4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08083DF4 + + thumb_func_start sub_08083E04 +sub_08083E04: @ 0x08083E04 + push {lr} + ldr r1, _08083E24 + movs r0, #0 + strb r0, [r1] + bl sub_080BAA94 + bl sub_080676F0 + bl sub_08067710 + bl sub_081AA8E8 + bl sub_0813628C + pop {r0} + bx r0 + .align 2, 0 +_08083E24: .4byte gUnknown_2031F74 + thumb_func_end sub_08083E04 + + thumb_func_start sub_08083E28 +sub_08083E28: @ 0x08083E28 + push {r4, r5, lr} + ldr r0, _08083F34 + ldrh r0, [r0] + cmp r0, #0 + beq _08083E36 + cmp r0, #2 + bne _08083E3A +_08083E36: + bl sub_0802F05C +_08083E3A: + ldr r1, _08083F38 + movs r0, #1 + strb r0, [r1] + ldr r4, _08083F3C + ldr r0, [r4] + adds r0, #0xac + movs r5, #0 + str r5, [r0] + bl sub_080676F0 + bl sub_08067710 + bl sub_080BAA0C + bl sub_08083D88 + bl sub_080765C0 + bl sub_080D3C0C + ldr r0, [r4] + strb r5, [r0, #9] + ldr r0, [r4] + adds r0, #0xa8 + str r5, [r0] + bl sub_08083C98 + bl sub_08083B6C + bl sub_08083D18 + bl sub_0809CBD8 + bl sub_080ECA80 + bl sub_080ECDBC + bl sub_080E97B4 + bl sub_080E0CE0 + ldr r4, _08083F40 + ldr r0, [r4] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, _08083F44 + bl sub_080E491C + movs r0, #0 + bl sub_08145D18 + bl sub_080D6E98 + bl sub_08084130 + bl sub_08083D48 + bl sub_0813C204 + bl sub_080FA2EC + bl sub_080FA344 + ldr r0, _08083F48 + strb r5, [r0] + bl sub_080676F0 + bl sub_080C7008 + bl sub_08161A48 + bl sub_08161A74 + ldr r0, [r4] + ldr r1, _08083F4C + adds r0, r0, r1 + strh r5, [r0] + bl sub_080D68AC + bl sub_0816ABFC + bl sub_08136EF8 + bl sub_081617B8 + bl sub_0811F664 + bl sub_08120680 + bl sub_081224E0 + bl sub_0813BA48 + bl sub_081773E4 + bl sub_08083DD4 + ldr r0, _08083F50 + bl sub_080988D8 + bl sub_08083F54 + bl sub_0801EFEC + bl sub_0818D75C + bl sub_0819F978 + bl sub_081A4710 + bl sub_08195A10 + bl sub_0801AAAC + bl sub_0800E070 + bl sub_081D4B3C + bl sub_080DE47C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08083F34: .4byte gUnknown_3005F50 +_08083F38: .4byte gUnknown_2031F74 +_08083F3C: .4byte gUnknown_3005AF0 +_08083F40: .4byte gUnknown_3005AEC +_08083F44: .4byte 0x00000BB8 +_08083F48: .4byte gUnknown_202418D +_08083F4C: .4byte 0x00000496 +_08083F50: .4byte gUnknown_8242678 + thumb_func_end sub_08083E28 + + thumb_func_start sub_08083F54 +sub_08083F54: @ 0x08083F54 + push {r4, r5, r6, lr} + sub sp, #4 + mov r0, sp + movs r5, #0 + strh r5, [r0] + ldr r4, _08083FA0 + ldr r1, [r4] + movs r0, #0xf6 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r6, _08083FA4 + mov r0, sp + adds r2, r6, #0 + bl CpuSet + ldr r0, [r4] + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0 + bl sub_08024448 + bl sub_0802E034 + mov r0, sp + adds r0, #2 + strh r5, [r0] + ldr r1, [r4] + movs r2, #0x83 + lsls r2, r2, #2 + adds r1, r1, r2 + adds r2, r6, #0 + bl CpuSet + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08083FA0: .4byte gUnknown_3005AF0 +_08083FA4: .4byte 0x01000008 + thumb_func_end sub_08083F54 + + thumb_func_start sub_08083FA8 +sub_08083FA8: @ 0x08083FA8 + push {r4, lr} + ldr r0, _08083FE0 + bl sub_080988D8 + ldr r0, _08083FE4 + ldr r4, [r0] + movs r0, #0x92 + lsls r0, r0, #3 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_080E4908 + adds r1, r0, #0 + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080E491C + bl sub_080F9A10 + bl sub_080840A8 + bl sub_0808466C + bl sub_08084540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08083FE0: .4byte gUnknown_82428F1 +_08083FE4: .4byte gUnknown_3005AEC + thumb_func_end sub_08083FA8 + + thumb_func_start sub_08083FE8 +sub_08083FE8: @ 0x08083FE8 + push {lr} + bl sub_08084BD0 + ldr r0, _08084010 + bl sub_0809D040 + ldr r0, _08084014 + bl sub_0809D040 + ldr r0, _08084018 + bl sub_0809D040 + ldr r0, _0808401C + bl sub_0809D040 + ldr r0, _08084020 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_08084010: .4byte 0x0000088B +_08084014: .4byte 0x0000088D +_08084018: .4byte 0x0000088C +_0808401C: .4byte 0x00000889 +_08084020: .4byte 0x00000888 + thumb_func_end sub_08083FE8 + + thumb_func_start sub_08084024 +sub_08084024: @ 0x08084024 + push {lr} + bl sub_08084BD0 + ldr r0, _08084054 + bl sub_0809D040 + ldr r0, _08084058 + bl sub_0809D040 + ldr r0, _0808405C + bl sub_0809D040 + ldr r0, _08084060 + bl sub_0809D040 + ldr r0, _08084064 + bl sub_0809D040 + ldr r0, _08084068 + bl sub_080988D8 + pop {r0} + bx r0 + .align 2, 0 +_08084054: .4byte 0x0000088B +_08084058: .4byte 0x0000088D +_0808405C: .4byte 0x0000088C +_08084060: .4byte 0x00000889 +_08084064: .4byte 0x00000888 +_08084068: .4byte gUnknown_82428FC + thumb_func_end sub_08084024 + + thumb_func_start sub_0808406C +sub_0808406C: @ 0x0808406C + push {lr} + bl sub_08084BD0 + ldr r0, _08084094 + bl sub_0809D040 + ldr r0, _08084098 + bl sub_0809D040 + ldr r0, _0808409C + bl sub_0809D040 + ldr r0, _080840A0 + bl sub_0809D040 + ldr r0, _080840A4 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_08084094: .4byte 0x0000088B +_08084098: .4byte 0x0000088D +_0808409C: .4byte 0x0000088C +_080840A0: .4byte 0x00000889 +_080840A4: .4byte 0x00000888 + thumb_func_end sub_0808406C + + thumb_func_start sub_080840A8 +sub_080840A8: @ 0x080840A8 + push {r4, lr} + bl sub_08084BD0 + ldr r0, _080840F4 + bl sub_0809D040 + ldr r0, _080840F8 + bl sub_0809D040 + ldr r0, _080840FC + bl sub_0809D040 + ldr r0, _08084100 + bl sub_0809D040 + ldr r0, _08084104 + bl sub_0809D040 + ldr r4, _08084108 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _080840EC + adds r0, r4, #0 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0808410C + movs r1, #0 + bl sub_0809CF88 +_080840EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080840F4: .4byte 0x0000088B +_080840F8: .4byte 0x0000088D +_080840FC: .4byte 0x0000088C +_08084100: .4byte 0x00000889 +_08084104: .4byte 0x00000888 +_08084108: .4byte 0x00004039 +_0808410C: .4byte 0x00004037 + thumb_func_end sub_080840A8 + + thumb_func_start sub_08084110 +sub_08084110: @ 0x08084110 + push {lr} + ldr r0, _0808412C + bl sub_0809D040 + bl sub_08085494 + bl sub_08137D5C + bl sub_08161BEC + bl sub_08161C14 + pop {r0} + bx r0 + .align 2, 0 +_0808412C: .4byte 0x0000088C + thumb_func_end sub_08084110 + + thumb_func_start sub_08084130 +sub_08084130: @ 0x08084130 + push {r4, lr} + movs r4, #0 +_08084134: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080841B8 + adds r4, #1 + cmp r4, #0x3f + ble _08084134 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084130 + + thumb_func_start sub_0808414C +sub_0808414C: @ 0x0808414C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x33 + bhi _08084174 + adds r0, r4, #0 + bl sub_08084180 + adds r1, r0, #0 + ldr r0, _08084168 + cmp r1, r0 + bhi _0808416C + adds r1, #1 + b _0808416E + .align 2, 0 +_08084168: .4byte 0x00FFFFFE +_0808416C: + ldr r1, _0808417C +_0808416E: + adds r0, r4, #0 + bl sub_080841B8 +_08084174: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808417C: .4byte 0x00FFFFFF + thumb_func_end sub_0808414C + + thumb_func_start sub_08084180 +sub_08084180: @ 0x08084180 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x33 + bhi _080841B0 + ldr r0, _080841A4 + ldr r2, [r0] + lsls r0, r1, #2 + ldr r1, _080841A8 + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _080841AC + ldr r1, [r0] + adds r1, #0xac + ldr r0, [r2] + ldr r1, [r1] + eors r0, r1 + b _080841B2 + .align 2, 0 +_080841A4: .4byte gUnknown_3005AEC +_080841A8: .4byte 0x0000159C +_080841AC: .4byte gUnknown_3005AF0 +_080841B0: + movs r0, #0 +_080841B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08084180 + + thumb_func_start sub_080841B8 +sub_080841B8: @ 0x080841B8 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x33 + bhi _080841DC + ldr r0, _080841E0 + ldr r1, [r0] + lsls r0, r2, #2 + ldr r2, _080841E4 + adds r1, r1, r2 + adds r1, r1, r0 + ldr r0, _080841E8 + ldr r0, [r0] + adds r0, #0xac + ldr r0, [r0] + eors r0, r3 + str r0, [r1] +_080841DC: + pop {r0} + bx r0 + .align 2, 0 +_080841E0: .4byte gUnknown_3005AEC +_080841E4: .4byte 0x0000159C +_080841E8: .4byte gUnknown_3005AF0 + thumb_func_end sub_080841B8 + + thumb_func_start sub_080841EC +sub_080841EC: @ 0x080841EC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r6, _08084214 +_080841F4: + lsls r1, r4, #2 + ldr r0, _08084218 + adds r1, r1, r0 + ldr r0, [r6] + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_08076B20 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x3f + bls _080841F4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08084214: .4byte gUnknown_3005AEC +_08084218: .4byte 0x0000159C + thumb_func_end sub_080841EC + + thumb_func_start sub_0808421C +sub_0808421C: @ 0x0808421C + push {r4, r5, lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r5, _0808425C + ldr r1, [r5] + movs r4, #0xc7 + lsls r4, r4, #4 + adds r1, r1, r4 + ldr r2, _08084260 + mov r0, sp + bl CpuSet + ldr r0, _08084264 + ldr r2, [r0, #4] + ldr r0, [r2, #4] + ldr r1, [r5] + adds r1, r1, r4 + ldrb r3, [r2] + lsls r2, r3, #1 + adds r2, r2, r3 + lsls r2, r2, #1 + movs r3, #0x80 + lsls r3, r3, #0x13 + orrs r2, r3 + bl CpuSet + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808425C: .4byte gUnknown_3005AEC +_08084260: .4byte 0x05000180 +_08084264: .4byte gUnknown_2036FB8 + thumb_func_end sub_0808421C + + thumb_func_start sub_08084268 +sub_08084268: @ 0x08084268 + push {lr} + ldr r0, _08084290 + ldr r1, [r0, #4] + ldr r0, _08084294 + ldr r0, [r0] + ldr r2, [r1, #4] + movs r3, #0xc7 + lsls r3, r3, #4 + adds r1, r0, r3 + movs r3, #0x3f +_0808427C: + ldr r0, [r2, #0x10] + str r0, [r1, #0x10] + adds r2, #0x18 + adds r1, #0x18 + subs r3, #1 + cmp r3, #0 + bge _0808427C + pop {r0} + bx r0 + .align 2, 0 +_08084290: .4byte gUnknown_2036FB8 +_08084294: .4byte gUnknown_3005AEC + thumb_func_end sub_08084268 + + thumb_func_start sub_08084298 +sub_08084298: @ 0x08084298 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _080842C0 + ldr r0, [r0] + movs r1, #0 + movs r6, #0xc7 + lsls r6, r6, #4 + adds r3, r0, r6 +_080842B2: + ldrb r0, [r3] + cmp r0, r5 + bne _080842C4 + strh r4, [r3, #4] + strh r2, [r3, #6] + b _080842CC + .align 2, 0 +_080842C0: .4byte gUnknown_3005AEC +_080842C4: + adds r3, #0x18 + adds r1, #1 + cmp r1, #0x3f + ble _080842B2 +_080842CC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084298 + + thumb_func_start sub_080842D4 +sub_080842D4: @ 0x080842D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080842F4 + ldr r0, [r0] + movs r3, #0 + movs r5, #0xc7 + lsls r5, r5, #4 + adds r2, r0, r5 +_080842EA: + ldrb r0, [r2] + cmp r0, r4 + bne _080842F8 + strb r1, [r2, #9] + b _08084300 + .align 2, 0 +_080842F4: .4byte gUnknown_3005AEC +_080842F8: + adds r2, #0x18 + adds r3, #1 + cmp r3, #0x3f + ble _080842EA +_08084300: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080842D4 + + thumb_func_start sub_08084308 +sub_08084308: @ 0x08084308 + push {r4, lr} + bl sub_080894F8 + ldr r4, _0808432C + ldr r0, [r4] + bl sub_08088710 + ldr r0, [r4] + bl sub_08088738 + bl sub_08089598 + bl sub_080A02E0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808432C: .4byte gUnknown_2036FB8 + thumb_func_end sub_08084308 + + thumb_func_start sub_08084330 +sub_08084330: @ 0x08084330 + push {lr} + ldr r0, _08084340 + ldr r0, [r0] + ldrh r1, [r0, #0x32] + cmp r1, #0 + bne _08084344 + movs r0, #0 + b _0808434E + .align 2, 0 +_08084340: .4byte gUnknown_3005AEC +_08084344: + ldr r0, _08084354 + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] +_0808434E: + pop {r1} + bx r1 + .align 2, 0 +_08084354: .4byte gUnknown_845A1F4 + thumb_func_end sub_08084330 + + thumb_func_start sub_08084358 +sub_08084358: @ 0x08084358 + ldr r3, _08084384 + ldr r0, _08084388 + ldr r2, [r0] + ldr r0, [r2, #4] + ldr r1, [r2, #8] + str r0, [r3] + str r1, [r3, #4] + ldr r0, _0808438C + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2, #4] + str r1, [r2, #8] + ldr r2, _08084390 + ldr r0, _08084394 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + ldr r2, _08084398 + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_08084384: .4byte gUnknown_2031F7C +_08084388: .4byte gUnknown_3005AEC +_0808438C: .4byte gUnknown_2031F84 +_08084390: .4byte gUnknown_2031F8C +_08084394: .4byte gUnknown_830FC88 +_08084398: .4byte gUnknown_2031F94 + thumb_func_end sub_08084358 + + thumb_func_start sub_0808439C +sub_0808439C: @ 0x0808439C + push {r4, r5, lr} + ldr r4, [sp, #0xc] + ldr r5, [sp, #0x10] + strb r1, [r0] + strb r2, [r0, #1] + strb r3, [r0, #2] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r0, #4] + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + strh r5, [r0, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808439C + + thumb_func_start sub_080843BC +sub_080843BC: @ 0x080843BC + push {lr} + adds r1, r0, #0 + movs r2, #0 + ldrsb r2, [r1, r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + bne _080843F0 + movs r0, #1 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _080843F0 + movs r2, #2 + ldrsb r2, [r1, r2] + cmp r2, r0 + bne _080843F0 + movs r0, #4 + ldrsh r3, [r1, r0] + cmp r3, r2 + bne _080843F0 + movs r2, #6 + ldrsh r0, [r1, r2] + cmp r0, r3 + bne _080843F0 + movs r0, #1 + b _080843F2 +_080843F0: + movs r0, #0 +_080843F2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080843BC + + thumb_func_start sub_080843F8 +sub_080843F8: @ 0x080843F8 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + ldr r2, _0808440C + lsrs r0, r0, #0xe + adds r0, r0, r2 + ldr r0, [r0] + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + bx lr + .align 2, 0 +_0808440C: .4byte gUnknown_845E998 + thumb_func_end sub_080843F8 + + thumb_func_start sub_08084410 +sub_08084410: @ 0x08084410 + push {lr} + ldr r1, _08084430 + movs r0, #0 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + pop {r1} + bx r1 + .align 2, 0 +_08084430: .4byte gUnknown_2031F84 + thumb_func_end sub_08084410 + + thumb_func_start sub_08084434 +sub_08084434: @ 0x08084434 + push {r4, r5, r6, lr} + ldr r1, _08084478 + ldr r4, _0808447C + ldrb r0, [r4, #0x14] + strh r0, [r1] + ldr r5, _08084480 + ldr r1, [r5] + movs r0, #4 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + 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_08084330 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08084478: .4byte gUnknown_2031F9C +_0808447C: .4byte gUnknown_2036FB8 +_08084480: .4byte gUnknown_3005AEC + thumb_func_end sub_08084434 + + thumb_func_start sub_08084484 +sub_08084484: @ 0x08084484 + push {r4, r5, lr} + ldr r4, _080844BC + ldr r0, _080844C0 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + 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_08084330 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080844BC: .4byte gUnknown_2036FB8 +_080844C0: .4byte gUnknown_3005AEC + thumb_func_end sub_08084484 + + thumb_func_start sub_080844C4 +sub_080844C4: @ 0x080844C4 + push {r4, r5, lr} + ldr r0, _080844F4 + ldr r2, [r0] + movs r1, #6 + ldrsb r1, [r2, r1] + adds r4, r0, #0 + cmp r1, #0 + blt _080844FC + ldr r3, _080844F8 + ldr r0, [r3, #4] + ldrb r5, [r0, #1] + cmp r1, r5 + bge _080844FC + ldr r0, [r0, #8] + lsls r1, r1, #3 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2] + ldr r0, [r3, #4] + ldr r0, [r0, #8] + adds r1, r1, r0 + ldrh r0, [r1, #2] + strh r0, [r2, #2] + b _08084534 + .align 2, 0 +_080844F4: .4byte gUnknown_3005AEC +_080844F8: .4byte gUnknown_2036FB8 +_080844FC: + ldr r1, [r4] + ldrh r3, [r1, #8] + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + blt _08084518 + ldrh r2, [r1, #0xa] + movs r5, #0xa + ldrsh r0, [r1, r5] + cmp r0, #0 + blt _08084518 + strh r3, [r1] + strh r2, [r1, #2] + b _08084534 +_08084518: + ldr r3, [r4] + ldr r2, _0808453C + ldr r0, [r2] + ldr r0, [r0] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r3] + ldr r0, [r2] + ldr r0, [r0, #4] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r3, #2] +_08084534: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808453C: .4byte gUnknown_2036FB8 + thumb_func_end sub_080844C4 + + thumb_func_start sub_08084540 +sub_08084540: @ 0x08084540 + push {lr} + bl sub_08084358 + bl sub_08084434 + bl sub_080844C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084540 + + thumb_func_start sub_08084554 +sub_08084554: @ 0x08084554 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, [sp, #0x18] + ldr r0, _0808458C + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r1, [sp, #4] + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808439C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808458C: .4byte gUnknown_2031F84 + thumb_func_end sub_08084554 + + thumb_func_start sub_08084590 +sub_08084590: @ 0x08084590 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + movs r3, #1 + rsbs r3, r3, #0 + str r3, [sp] + bl sub_08084554 + add sp, #4 + pop {r0} + bx r0 + thumb_func_end sub_08084590 + + thumb_func_start sub_080845B0 +sub_080845B0: @ 0x080845B0 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _080845E0 + ldr r5, [r0] + adds r0, r5, #0 + adds r0, #0x14 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + movs r4, #0 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, #2 + ldrsb r4, [r5, r4] + str r4, [sp, #4] + bl sub_0808439C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080845E0: .4byte gUnknown_3005AEC + thumb_func_end sub_080845B0 + + thumb_func_start sub_080845E4 +sub_080845E4: @ 0x080845E4 + push {r4, r5, lr} + sub sp, #8 + ldr r4, [sp, #0x14] + ldr r5, [sp, #0x18] + ldr r0, _08084618 + ldr r0, [r0] + adds r0, #0x14 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + str r5, [sp, #4] + bl sub_0808439C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08084618: .4byte gUnknown_3005AEC + thumb_func_end sub_080845E4 + + thumb_func_start sub_0808461C +sub_0808461C: @ 0x0808461C + ldr r2, _0808462C + ldr r0, _08084630 + ldr r0, [r0] + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_0808462C: .4byte gUnknown_2031F84 +_08084630: .4byte gUnknown_3005AEC + thumb_func_end sub_0808461C + + thumb_func_start sub_08084634 +sub_08084634: @ 0x08084634 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08122CC8 + adds r4, r0, #0 + cmp r4, #0 + beq _08084662 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #1 + ldrsb r1, [r4, r1] + movs r2, #1 + rsbs r2, r2, #0 + movs r3, #2 + ldrsb r3, [r4, r3] + ldrb r4, [r4, #4] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_08084554 +_08084662: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084634 + + thumb_func_start sub_0808466C +sub_0808466C: @ 0x0808466C + ldr r2, _0808467C + ldr r0, _08084680 + ldr r0, [r0] + ldr r1, [r0, #0x20] + ldr r0, [r0, #0x1c] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_0808467C: .4byte gUnknown_2031F84 +_08084680: .4byte gUnknown_3005AEC + thumb_func_end sub_0808466C + + thumb_func_start sub_08084684 +sub_08084684: @ 0x08084684 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08122CC8 + adds r5, r0, #0 + cmp r5, #0 + beq _080846B8 + ldr r0, _080846C0 + ldr r0, [r0] + adds r0, #0x1c + movs r1, #0 + ldrsb r1, [r5, r1] + movs r2, #1 + ldrsb r2, [r5, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r4, #2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, #4 + ldrsb r4, [r5, r4] + str r4, [sp, #4] + bl sub_0808439C +_080846B8: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080846C0: .4byte gUnknown_3005AEC + thumb_func_end sub_08084684 + + thumb_func_start sub_080846C4 +sub_080846C4: @ 0x080846C4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + bl sub_0808550C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08084734 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080854DC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_08085538 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808472C + adds r0, r5, #0 + bl sub_08085538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0808472C + ldr r0, _08084738 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + subs r3, r6, #7 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + subs r4, r7, #6 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_0808473C +_0808472C: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08084734: .4byte gUnknown_2031F84 +_08084738: .4byte gUnknown_3005AEC + thumb_func_end sub_080846C4 + + thumb_func_start sub_0808473C +sub_0808473C: @ 0x0808473C + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, [sp, #0x18] + ldr r0, _08084778 + ldr r0, [r0] + adds r0, #0x24 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r1, [sp, #4] + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808439C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08084778: .4byte gUnknown_3005AEC + thumb_func_end sub_0808473C + + thumb_func_start sub_0808477C +sub_0808477C: @ 0x0808477C + ldr r2, _0808478C + ldr r0, _08084790 + ldr r0, [r0] + ldr r1, [r0, #0x28] + ldr r0, [r0, #0x24] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_0808478C: .4byte gUnknown_2031F84 +_08084790: .4byte gUnknown_3005AEC + thumb_func_end sub_0808477C + + thumb_func_start sub_08084794 +sub_08084794: @ 0x08084794 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, [sp, #0x18] + ldr r0, _080847CC + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r1, [sp, #4] + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808439C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080847CC: .4byte gUnknown_2031F8C + thumb_func_end sub_08084794 + + thumb_func_start sub_080847D0 +sub_080847D0: @ 0x080847D0 + ldr r2, _080847E0 + ldr r0, _080847E4 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_080847E0: .4byte gUnknown_2031F84 +_080847E4: .4byte gUnknown_2031F8C + thumb_func_end sub_080847D0 + + thumb_func_start sub_080847E8 +sub_080847E8: @ 0x080847E8 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, [sp, #0x18] + ldr r0, _08084820 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r1, [sp, #4] + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808439C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08084820: .4byte gUnknown_2031F94 + thumb_func_end sub_080847E8 + + thumb_func_start sub_08084824 +sub_08084824: @ 0x08084824 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r4, _0808484C + adds r0, r4, #0 + bl sub_080843BC + cmp r0, #1 + bne _08084858 + ldr r2, _08084850 + ldr r0, _08084854 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + b _08084872 + .align 2, 0 +_0808484C: .4byte gUnknown_2031F94 +_08084850: .4byte gUnknown_2031F84 +_08084854: .4byte gUnknown_2031F7C +_08084858: + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #1 + ldrsb r1, [r4, r1] + movs r2, #1 + rsbs r2, r2, #0 + lsls r3, r5, #0x18 + asrs r3, r3, #0x18 + lsls r4, r6, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_08084554 +_08084872: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084824 + + thumb_func_start sub_0808487C +sub_0808487C: @ 0x0808487C + ldr r2, _0808488C + ldr r0, _08084890 + ldr r0, [r0] + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_0808488C: .4byte gUnknown_2031F84 +_08084890: .4byte gUnknown_3005AEC + thumb_func_end sub_0808487C + + thumb_func_start sub_08084894 +sub_08084894: @ 0x08084894 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, [sp, #0x18] + ldr r0, _080848D0 + ldr r0, [r0] + adds r0, #0xc + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r1, [sp, #4] + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808439C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080848D0: .4byte gUnknown_3005AEC + thumb_func_end sub_08084894 + + thumb_func_start sub_080848D4 +sub_080848D4: @ 0x080848D4 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08122CC8 + adds r5, r0, #0 + cmp r5, #0 + beq _08084908 + ldr r0, _08084910 + ldr r0, [r0] + adds r0, #0xc + movs r1, #0 + ldrsb r1, [r5, r1] + movs r2, #1 + ldrsb r2, [r5, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r4, #2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, #4 + ldrsb r4, [r5, r4] + str r4, [sp, #4] + bl sub_0808439C +_08084908: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08084910: .4byte gUnknown_3005AEC + thumb_func_end sub_080848D4 + + thumb_func_start sub_08084914 +sub_08084914: @ 0x08084914 + ldr r0, _08084924 + ldr r2, [r0] + ldr r0, [r2, #0x14] + ldr r1, [r2, #0x18] + str r0, [r2, #0xc] + str r1, [r2, #0x10] + bx lr + .align 2, 0 +_08084924: .4byte gUnknown_3005AEC + thumb_func_end sub_08084914 + + thumb_func_start sub_08084928 +sub_08084928: @ 0x08084928 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0808493C + ldr r0, [r0, #0xc] + ldr r3, [r0] + ldr r1, [r0, #4] + cmp r1, #0 + bne _08084944 + b _08084958 + .align 2, 0 +_0808493C: .4byte gUnknown_2036FB8 +_08084940: + adds r0, r1, #0 + b _0808495A +_08084944: + movs r2, #0 + cmp r2, r3 + bge _08084958 +_0808494A: + ldrb r0, [r1] + cmp r0, r4 + beq _08084940 + adds r2, #1 + adds r1, #0xc + cmp r2, r3 + blt _0808494A +_08084958: + movs r0, #0 +_0808495A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08084928 + + thumb_func_start sub_08084960 +sub_08084960: @ 0x08084960 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + bl sub_08084928 + adds r1, r0, #0 + cmp r1, #0 + beq _08084998 + movs r0, #8 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #9] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + lsls r3, r4, #0x18 + asrs r3, r3, #0x18 + lsls r4, r5, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_08084554 + b _080849B4 +_08084998: + bl sub_080989F8 + ldr r0, _080849AC + bl sub_080843BC + cmp r0, #0 + beq _080849B0 + movs r0, #0 + b _080849B6 + .align 2, 0 +_080849AC: .4byte gUnknown_2031F8C +_080849B0: + bl sub_080847D0 +_080849B4: + movs r0, #1 +_080849B6: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08084960 + + thumb_func_start sub_080849C0 +sub_080849C0: @ 0x080849C0 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #6 + adds r1, r3, #0 + bl sub_08084960 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080849C0 + + thumb_func_start sub_080849E0 +sub_080849E0: @ 0x080849E0 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #5 + adds r1, r3, #0 + bl sub_08084960 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080849E0 + + thumb_func_start sub_08084A00 +sub_08084A00: @ 0x08084A00 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r5, r1, #0 + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + movs r3, #1 + rsbs r3, r3, #0 + str r3, [sp] + adds r2, r3, #0 + bl sub_08084554 + ldr r4, _08084AC0 + ldrb r0, [r4, #0x14] + cmp r0, #0x3a + beq _08084A30 + bl sub_08085178 +_08084A30: + bl sub_08084358 + bl sub_08084434 + bl sub_0808421C + bl sub_081AFA64 + bl sub_0809CC1C + bl sub_08137D5C + bl sub_0809C4B4 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080B1AA0 + bl sub_0809E088 + bl sub_080AE6B8 + bl sub_08085494 + bl sub_08084DFC + bl sub_08085168 + bl sub_080989D4 + bl sub_080876B8 + ldr r0, [r4] + bl sub_080886DC + ldr r0, [r4] + bl sub_08088700 + movs r4, #6 +_08084A7E: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AB7FC + adds r4, #1 + cmp r4, #0xc + ble _08084A7E + bl sub_080A02F4 + bl sub_08161BEC + bl sub_08161C68 + bl sub_080AE71C + bl sub_0809D2C8 + bl sub_080989E0 + ldr r2, _08084AC0 + ldrb r0, [r2, #0x14] + cmp r0, #0x3a + bne _08084AB4 + ldr r1, _08084AC4 + ldrh r1, [r1] + cmp r0, r1 + beq _08084AB8 +_08084AB4: + bl sub_080D4068 +_08084AB8: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08084AC0: .4byte gUnknown_2036FB8 +_08084AC4: .4byte gUnknown_2031F9C + thumb_func_end sub_08084A00 + + thumb_func_start sub_08084AC8 +sub_08084AC8: @ 0x08084AC8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + bl sub_08084434 + ldr r0, _08084AEC + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08084B0A + ldr r0, _08084AF0 + ldrh r1, [r0, #0x12] + ldr r0, _08084AF4 + cmp r1, r0 + bne _08084AF8 + bl sub_081A9F50 + b _08084B0A + .align 2, 0 +_08084AEC: .4byte gUnknown_2031F78 +_08084AF0: .4byte gUnknown_2036FB8 +_08084AF4: .4byte 0x00000169 +_08084AF8: + bl sub_081D5A10 + cmp r0, #0 + beq _08084B06 + bl sub_081D56F0 + b _08084B0A +_08084B06: + bl sub_0808421C +_08084B0A: + ldr r4, _08084B8C + ldrb r0, [r4, #0x17] + bl sub_08085538 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r4, #0x17] + bl sub_0808557C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_080EBDB8 + bl sub_081AFA64 + bl sub_0809CC1C + bl sub_08137D5C + bl sub_0809C4B4 + ldr r0, _08084B90 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B1AA0 + cmp r7, #1 + beq _08084B56 + bl sub_0809E088 +_08084B56: + bl sub_080AE6B8 + bl sub_08085494 + cmp r5, #0 + beq _08084B68 + ldr r0, _08084B94 + bl sub_0809D040 +_08084B68: + bl sub_08084DFC + bl sub_08085168 + bl sub_080989D4 + bl sub_08161BEC + bl sub_08161C14 + ldrh r1, [r4, #0x12] + ldr r0, _08084B98 + cmp r1, r0 + bne _08084B9C + movs r0, #0 + bl sub_08087710 + b _08084BAE + .align 2, 0 +_08084B8C: .4byte gUnknown_2036FB8 +_08084B90: .4byte gUnknown_3005AEC +_08084B94: .4byte 0x00000888 +_08084B98: .4byte 0x00000169 +_08084B9C: + bl sub_081D5A10 + cmp r0, #0 + beq _08084BAA + bl sub_08087748 + b _08084BAE +_08084BAA: + bl sub_080876B8 +_08084BAE: + cmp r7, #1 + beq _08084BC6 + cmp r6, #0 + beq _08084BC6 + ldr r1, _08084BCC + ldr r0, [r1] + ldr r1, [r1, #4] + bl sub_080ECBE4 + movs r0, #1 + bl sub_080E9EC4 +_08084BC6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08084BCC: .4byte gUnknown_3005B20 + thumb_func_end sub_08084AC8 + + thumb_func_start sub_08084BD0 +sub_08084BD0: @ 0x08084BD0 + ldr r1, _08084BDC + movs r0, #1 + strb r0, [r1, #1] + strb r0, [r1] + bx lr + .align 2, 0 +_08084BDC: .4byte gUnknown_2031FA0 + thumb_func_end sub_08084BD0 + + thumb_func_start sub_08084BE0 +sub_08084BE0: @ 0x08084BE0 + push {r4, lr} + bl sub_0808B59C + ldr r4, _08084BFC + strb r0, [r4, #1] + movs r0, #2 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084C00 + movs r0, #2 + b _08084C32 + .align 2, 0 +_08084BFC: .4byte gUnknown_2031FA0 +_08084C00: + movs r0, #4 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084C10 + movs r0, #4 + b _08084C32 +_08084C10: + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084C20 + movs r0, #8 + b _08084C32 +_08084C20: + movs r0, #0x10 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084C30 + movs r0, #0x10 + b _08084C32 +_08084C30: + movs r0, #1 +_08084C32: + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08084BE0 + + thumb_func_start sub_08084C3C +sub_08084C3C: @ 0x08084C3C + push {r4, r5, r6, r7, lr} + bl sub_0808550C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_08084DB8 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r6, _08084C88 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08084C94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _08084C8C + ands r7, r0 + orrs r7, r1 + adds r0, r6, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08084CF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldr r1, _08084C90 + ands r7, r1 + orrs r7, r0 + str r7, [r6] + adds r0, r6, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08084C88: .4byte gUnknown_2031FA0 +_08084C8C: .4byte 0xFFFFFF00 +_08084C90: .4byte 0xFFFF00FF + thumb_func_end sub_08084C3C + + thumb_func_start sub_08084C94 +sub_08084C94: @ 0x08084C94 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #8 + beq _08084CB0 + ldr r0, _08084CB8 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08084CEA +_08084CB0: + cmp r4, #5 + bne _08084CBC + movs r0, #0x10 + b _08084CEC + .align 2, 0 +_08084CB8: .4byte 0x0000088D +_08084CBC: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080888EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08084CD0 + movs r0, #8 + b _08084CEC +_08084CD0: + bl sub_08084DDC + cmp r0, #1 + bne _08084CEA + ldrb r0, [r6] + cmp r0, #2 + bne _08084CE2 + movs r0, #2 + b _08084CEC +_08084CE2: + cmp r0, #4 + bne _08084CEA + movs r0, #4 + b _08084CEC +_08084CEA: + movs r0, #1 +_08084CEC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08084C94 + + thumb_func_start sub_08084CF4 +sub_08084CF4: @ 0x08084CF4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + ldr r0, _08084D54 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084D14 + cmp r5, #6 + beq _08084D74 +_08084D14: + lsls r4, r4, #0x18 + lsrs r5, r4, #0x18 + adds r0, r5, #0 + bl sub_080888D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08084D50 + adds r0, r5, #0 + bl sub_080888BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08084DAA + adds r0, r5, #0 + bl sub_08088860 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08084DAA + adds r0, r5, #0 + bl sub_08088950 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08084D58 +_08084D50: + movs r0, #2 + b _08084DB0 + .align 2, 0 +_08084D54: .4byte 0x0000088D +_08084D58: + adds r0, r5, #0 + bl sub_08088938 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08084DAA + adds r0, r5, #0 + bl sub_08088924 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08084D78 +_08084D74: + movs r0, #4 + b _08084DB0 +_08084D78: + adds r0, r5, #0 + bl sub_08088910 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08084D8A + movs r0, #3 + b _08084DB0 +_08084D8A: + ldrb r0, [r6] + cmp r0, #0x10 + bne _08084D94 + cmp r7, #8 + beq _08084DAE +_08084D94: + cmp r0, #8 + bne _08084D9C + cmp r7, #0x10 + beq _08084DAE +_08084D9C: + lsrs r0, r4, #0x18 + bl sub_080888A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08084DAE +_08084DAA: + movs r0, #1 + b _08084DB0 +_08084DAE: + ldrb r0, [r6, #1] +_08084DB0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08084CF4 + + thumb_func_start sub_08084DB8 +sub_08084DB8: @ 0x08084DB8 + push {lr} + ldr r0, _08084DD8 + ldr r1, [r0] + movs r2, #0 + ldrsh r0, [r1, r2] + adds r0, #7 + movs r2, #2 + ldrsh r1, [r1, r2] + adds r1, #7 + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08084DD8: .4byte gUnknown_3005AEC + thumb_func_end sub_08084DB8 + + thumb_func_start sub_08084DDC +sub_08084DDC: @ 0x08084DDC + push {lr} + ldr r0, _08084DF0 + ldrb r1, [r0, #0x1a] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08084DF4 + movs r0, #1 + b _08084DF6 + .align 2, 0 +_08084DF0: .4byte gUnknown_2036FB8 +_08084DF4: + movs r0, #0 +_08084DF6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08084DDC + + thumb_func_start sub_08084DFC +sub_08084DFC: @ 0x08084DFC + push {lr} + ldr r0, _08084E10 + ldrb r1, [r0, #0x15] + cmp r1, #0 + bne _08084E18 + ldr r0, _08084E14 + ldr r0, [r0] + adds r0, #0x30 + strb r1, [r0] + b _08084E46 + .align 2, 0 +_08084E10: .4byte gUnknown_2036FB8 +_08084E14: .4byte gUnknown_3005AEC +_08084E18: + ldr r0, _08084E30 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084E38 + ldr r0, _08084E34 + ldr r0, [r0] + adds r0, #0x30 + movs r1, #1 + strb r1, [r0] + b _08084E46 + .align 2, 0 +_08084E30: .4byte 0x00000888 +_08084E34: .4byte gUnknown_3005AEC +_08084E38: + ldr r0, _08084E4C + ldr r1, [r0] + ldr r0, _08084E50 + ldr r0, [r0] + subs r0, #1 + adds r1, #0x30 + strb r0, [r1] +_08084E46: + pop {r0} + bx r0 + .align 2, 0 +_08084E4C: .4byte gUnknown_3005AEC +_08084E50: .4byte gUnknown_852AB14 + thumb_func_end sub_08084DFC + + thumb_func_start sub_08084E54 +sub_08084E54: @ 0x08084E54 + push {lr} + adds r1, r0, #0 + cmp r1, #0 + blt _08084E64 + ldr r0, _08084E74 + ldr r0, [r0] + cmp r1, r0 + ble _08084E66 +_08084E64: + movs r1, #0 +_08084E66: + ldr r0, _08084E78 + ldr r0, [r0] + adds r0, #0x30 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08084E74: .4byte gUnknown_852AB14 +_08084E78: .4byte gUnknown_3005AEC + thumb_func_end sub_08084E54 + + thumb_func_start sub_08084E7C +sub_08084E7C: @ 0x08084E7C + ldr r0, _08084E88 + ldr r0, [r0] + adds r0, #0x30 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08084E88: .4byte gUnknown_3005AEC + thumb_func_end sub_08084E7C + + thumb_func_start sub_08084E8C +sub_08084E8C: @ 0x08084E8C + push {lr} + ldr r1, _08084EA0 + ldr r1, [r1] + strh r0, [r1, #0x32] + bl sub_08084330 + ldr r1, _08084EA4 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08084EA0: .4byte gUnknown_3005AEC +_08084EA4: .4byte gUnknown_2036FB8 + thumb_func_end sub_08084E8C + + thumb_func_start sub_08084EA8 +sub_08084EA8: @ 0x08084EA8 + ldr r1, _08084EB0 + strb r0, [r1] + bx lr + .align 2, 0 +_08084EB0: .4byte gUnknown_2031F78 + thumb_func_end sub_08084EA8 + + thumb_func_start sub_08084EB4 +sub_08084EB4: @ 0x08084EB4 + ldr r0, _08084EBC + ldrb r0, [r0] + bx lr + .align 2, 0 +_08084EBC: .4byte gUnknown_2031F78 + thumb_func_end sub_08084EB4 + + thumb_func_start sub_08084EC0 +sub_08084EC0: @ 0x08084EC0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08084F0C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084F14 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _08084F14 + movs r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #5 + blt _08084EEC + cmp r0, #8 + ble _08084F06 + cmp r0, #0x2b + bgt _08084EEC + cmp r0, #0x27 + bge _08084F06 +_08084EEC: + ldr r0, _08084F10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _08084F14 + movs r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #0x2e + bgt _08084F14 + cmp r0, #0x2c + blt _08084F14 +_08084F06: + movs r0, #1 + b _08084F16 + .align 2, 0 +_08084F0C: .4byte 0x0000088A +_08084F10: .4byte 0x0000405E +_08084F14: + movs r0, #0 +_08084F16: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08084EC0 + + thumb_func_start sub_08084F1C +sub_08084F1C: @ 0x08084F1C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08084F44 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _08084F3E + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _08084F3E + movs r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #7 + beq _08084F48 +_08084F3E: + movs r0, #0 + b _08084F4A + .align 2, 0 +_08084F44: .4byte 0x000040CA +_08084F48: + movs r0, #1 +_08084F4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08084F1C + + thumb_func_start sub_08084F50 +sub_08084F50: @ 0x08084F50 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08084F74 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08084F6E + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0x20 + bne _08084F6E + ldrb r0, [r4, #1] + cmp r0, #1 + bls _08084F78 +_08084F6E: + movs r0, #0 + b _08084F7A + .align 2, 0 +_08084F74: .4byte 0x000040B3 +_08084F78: + movs r0, #1 +_08084F7A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08084F50 + + thumb_func_start sub_08084F80 +sub_08084F80: @ 0x08084F80 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08084FB8 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08084FB4 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _08084FB4 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0xe + bne _08084FB4 + ldrb r0, [r5, #1] + subs r0, #9 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08084FBC +_08084FB4: + movs r0, #0 + b _08084FBE + .align 2, 0 +_08084FB8: .4byte 0x0000405D +_08084FBC: + movs r0, #1 +_08084FBE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08084F80 + + thumb_func_start sub_08084FC4 +sub_08084FC4: @ 0x08084FC4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08084F1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _08084FDC + ldr r0, _08084FD8 + b _08085036 + .align 2, 0 +_08084FD8: .4byte 0x0000FFFF +_08084FDC: + adds r0, r4, #0 + bl sub_08084EC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _08084FF4 + ldr r0, _08084FF0 + b _08085036 + .align 2, 0 +_08084FF0: .4byte 0x000001BB +_08084FF4: + adds r0, r4, #0 + bl sub_08084F80 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0808500C + ldr r0, _08085008 + b _08085036 + .align 2, 0 +_08085008: .4byte 0x000001B9 +_0808500C: + adds r0, r4, #0 + bl sub_08084F50 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _08085032 + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ldrsb r1, [r4, r1] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + ldrh r0, [r0, #0x10] + b _08085036 +_08085032: + movs r0, #0xcb + lsls r0, r0, #1 +_08085036: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08084FC4 + + thumb_func_start sub_0808503C +sub_0808503C: @ 0x0808503C + push {r4, lr} + ldr r0, _0808505C + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xd0 + lsls r0, r0, #5 + cmp r1, r0 + bne _08085064 + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _08085064 + ldr r0, _08085060 + b _08085098 + .align 2, 0 +_0808505C: .4byte gUnknown_3005AEC +_08085060: .4byte 0x00000199 +_08085064: + ldr r4, _0808507C + ldr r0, [r4] + adds r0, #4 + bl sub_08084FC4 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08085080 + cmp r1, r0 + beq _08085084 + adds r0, r1, #0 + b _08085098 + .align 2, 0 +_0808507C: .4byte gUnknown_3005AEC +_08085080: .4byte 0x00007FFF +_08085084: + ldr r0, [r4] + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0x17 + ble _08085094 + movs r0, #0xc9 + lsls r0, r0, #1 + b _08085098 +_08085094: + movs r0, #0xb4 + lsls r0, r0, #1 +_08085098: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808503C + + thumb_func_start sub_080850A0 +sub_080850A0: @ 0x080850A0 + push {lr} + ldr r0, _080850B8 + bl sub_08084FC4 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080850BC + cmp r1, r0 + beq _080850C0 + adds r0, r1, #0 + b _080850DC + .align 2, 0 +_080850B8: .4byte gUnknown_2031F84 +_080850BC: .4byte 0x00007FFF +_080850C0: + ldr r0, _080850D4 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + beq _080850D8 + subs r0, #0x6e + b _080850DC + .align 2, 0 +_080850D4: .4byte gUnknown_3005AEC +_080850D8: + movs r0, #0xb4 + lsls r0, r0, #1 +_080850DC: + pop {r1} + bx r1 + thumb_func_end sub_080850A0 + + thumb_func_start sub_080850E0 +sub_080850E0: @ 0x080850E0 + push {lr} + bl sub_080A27A8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080850E0 + + thumb_func_start sub_080850EC +sub_080850EC: @ 0x080850EC + push {r4, lr} + bl sub_0808503C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08085110 + cmp r4, r0 + beq _0808513E + ldr r0, _08085114 + cmp r4, r0 + beq _0808513E + ldr r0, _08085118 + ldr r1, [r0] + ldrh r0, [r1, #0x2c] + cmp r0, #0 + beq _0808511C + adds r4, r0, #0 + b _0808513E + .align 2, 0 +_08085110: .4byte 0x000001BB +_08085114: .4byte 0x0000FFFF +_08085118: .4byte gUnknown_3005AEC +_0808511C: + bl sub_0808550C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bne _08085130 + ldr r4, _0808512C + b _0808513E + .align 2, 0 +_0808512C: .4byte 0x0000019B +_08085130: + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808513E + ldr r4, _08085158 +_0808513E: + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + beq _08085150 + adds r0, r4, #0 + bl sub_080A27D8 +_08085150: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085158: .4byte 0x0000016D + thumb_func_end sub_080850EC + + thumb_func_start sub_0808515C +sub_0808515C: @ 0x0808515C + ldr r1, _08085164 + ldr r1, [r1] + strh r0, [r1, #0x2c] + bx lr + .align 2, 0 +_08085164: .4byte gUnknown_3005AEC + thumb_func_end sub_0808515C + + thumb_func_start sub_08085168 +sub_08085168: @ 0x08085168 + ldr r0, _08085174 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #0x2c] + bx lr + .align 2, 0 +_08085174: .4byte gUnknown_3005AEC + thumb_func_end sub_08085168 + + thumb_func_start sub_08085178 +sub_08085178: @ 0x08085178 + push {r4, r5, r6, lr} + ldr r0, _080851DC + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080851F8 + bl sub_080850A0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080851E0 + cmp r4, r0 + beq _080851BE + ldr r0, _080851E4 + cmp r4, r0 + beq _080851BE + ldr r0, _080851E8 + cmp r5, r0 + beq _080851F8 + ldr r6, _080851EC + cmp r5, r6 + beq _080851F8 + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080851BE + adds r4, r6, #0 +_080851BE: + cmp r4, r5 + beq _080851F8 + movs r0, #6 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080851F0 + adds r0, r4, #0 + movs r1, #4 + movs r2, #4 + bl sub_080A2884 + b _080851F8 + .align 2, 0 +_080851DC: .4byte 0x00004001 +_080851E0: .4byte 0x000001BB +_080851E4: .4byte 0x0000FFFF +_080851E8: .4byte 0x0000019B +_080851EC: .4byte 0x0000016D +_080851F0: + adds r0, r4, #0 + movs r1, #8 + bl sub_080A2850 +_080851F8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08085178 + + thumb_func_start sub_08085200 +sub_08085200: @ 0x08085200 + push {r4, lr} + bl sub_080A27CC + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0808503C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + beq _08085226 + bl sub_0808503C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #8 + bl sub_080A2850 +_08085226: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08085200 + + thumb_func_start sub_0808522C +sub_0808522C: @ 0x0808522C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + beq _0808524C + ldr r0, _08085254 + cmp r1, r0 + beq _0808524C + adds r0, r4, #0 + movs r1, #8 + bl sub_080A2850 +_0808524C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085254: .4byte 0x000001BB + thumb_func_end sub_0808522C + + thumb_func_start sub_08085258 +sub_08085258: @ 0x08085258 + push {lr} + bl sub_08084410 + ldrb r0, [r0, #0x17] + bl sub_0808557C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08085270 + movs r0, #4 + b _08085272 +_08085270: + movs r0, #2 +_08085272: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08085258 + + thumb_func_start sub_08085278 +sub_08085278: @ 0x08085278 + push {r4, r5, lr} + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_080850A0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080852EC + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080852E6 + bl sub_080A27CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + beq _080852E6 + ldr r0, _080852F0 + cmp r5, r0 + bne _080852DA + ldr r0, _080852F4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bne _080852DA + ldr r0, _080852F8 + ldr r0, [r0] + ldr r1, _080852FC + ldrh r2, [r0, #4] + movs r0, #0xe0 + lsls r0, r0, #3 + cmp r2, r0 + bne _080852DA + ldr r3, _08085300 + ldrh r0, [r3] + ands r1, r0 + cmp r1, r2 + bne _080852DA + ldr r1, [r3, #4] + ldr r0, _08085304 + cmp r1, r0 + beq _080852E6 +_080852DA: + bl sub_08085258 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A2818 +_080852E6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080852EC: .4byte 0x00004001 +_080852F0: .4byte 0x0000016D +_080852F4: .4byte 0x000040CA +_080852F8: .4byte gUnknown_3005AEC +_080852FC: .4byte 0x0000FFFF +_08085300: .4byte gUnknown_2031F84 +_08085304: .4byte 0x0035001D + thumb_func_end sub_08085278 + + thumb_func_start sub_08085308 +sub_08085308: @ 0x08085308 + push {lr} + bl sub_080A2904 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08085308 + + thumb_func_start sub_08085318 +sub_08085318: @ 0x08085318 + push {lr} + movs r0, #4 + bl sub_080A2818 + pop {r0} + bx r0 + thumb_func_end sub_08085318 + + thumb_func_start sub_08085324 +sub_08085324: @ 0x08085324 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + ldr r0, _0808539C + ldrb r0, [r0] + cmp r0, #1 + bne _08085358 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08085394 +_08085358: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x58 + bl __umodsi3 + adds r4, r0, #0 + adds r4, #0xd4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + adds r2, r0, #0 + adds r2, #0x32 + ldr r0, _080853A0 + ldrh r0, [r0] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r4, #0 + movs r3, #1 + bl sub_080A2B88 +_08085394: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808539C: .4byte gUnknown_2031FA6 +_080853A0: .4byte gUnknown_2031FA4 + thumb_func_end sub_08085324 + + thumb_func_start sub_080853A4 +sub_080853A4: @ 0x080853A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + adds r7, r1, #0 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #4 + bhi _08085488 + lsls r0, r0, #2 + ldr r1, _080853C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080853C4: .4byte _080853C8 +_080853C8: @ jump table + .4byte _080853DC @ case 0 + .4byte _080853F0 @ case 1 + .4byte _0808540C @ case 2 + .4byte _08085474 @ case 3 + .4byte _08085488 @ case 4 +_080853DC: + ldr r0, _080853E8 + ldrh r0, [r0] + cmp r0, #0 + bne _080853EC + movs r0, #4 + b _08085486 + .align 2, 0 +_080853E8: .4byte gUnknown_2031FA4 +_080853EC: + movs r0, #1 + b _08085486 +_080853F0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #4 + bl __umodsi3 + movs r1, #0x96 + lsls r1, r1, #3 + adds r0, r0, r1 + strh r0, [r7] + movs r0, #3 + b _08085486 +_0808540C: + movs r0, #1 + mov sb, r0 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + b _08085424 +_0808541E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08085424: + cmp r5, r8 + bhs _0808544C + movs r0, #0x64 + muls r0, r5, r0 + ldr r4, _08085470 + adds r0, r0, r4 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _0808541E + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x44 + bne _0808541E + movs r1, #2 + mov sb, r1 +_0808544C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0x96 + lsls r4, r4, #3 + adds r1, r4, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, r0, r4 + mov r1, sb + bl __divsi3 + strh r0, [r7] + movs r0, #3 + b _08085486 + .align 2, 0 +_08085470: .4byte gUnknown_2024190 +_08085474: + ldrh r0, [r7] + subs r0, #1 + strh r0, [r7] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08085488 + bl sub_08085324 + movs r0, #2 +_08085486: + strh r0, [r6] +_08085488: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080853A4 + + thumb_func_start sub_08085494 +sub_08085494: @ 0x08085494 + push {lr} + ldr r0, _080854BC + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xb4 + lsls r0, r0, #6 + cmp r1, r0 + bne _080854C4 + bl sub_081379AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080854C4 + ldr r1, _080854C0 + movs r0, #1 + strb r0, [r1] + bl sub_080B4F84 + b _080854CA + .align 2, 0 +_080854BC: .4byte gUnknown_3005AEC +_080854C0: .4byte gUnknown_2031FA6 +_080854C4: + ldr r0, _080854D4 + bl sub_080B4EF8 +_080854CA: + ldr r1, _080854D8 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080854D4: .4byte gUnknown_2031FA6 +_080854D8: .4byte gUnknown_2031FA4 + thumb_func_end sub_08085494 + + thumb_func_start sub_080854DC +sub_080854DC: @ 0x080854DC + push {lr} + lsls r0, r0, #0x18 + asrs r0, r0, #8 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + bl sub_080843F8 + ldrb r0, [r0, #0x17] + pop {r1} + bx r1 + thumb_func_end sub_080854DC + + thumb_func_start sub_080854F4 +sub_080854F4: @ 0x080854F4 + push {lr} + movs r2, #0 + ldrsb r2, [r0, r2] + movs r1, #1 + ldrsb r1, [r0, r1] + adds r0, r2, #0 + bl sub_080854DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080854F4 + + thumb_func_start sub_0808550C +sub_0808550C: @ 0x0808550C + push {lr} + ldr r0, _08085520 + ldr r0, [r0] + adds r0, #4 + bl sub_080854F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08085520: .4byte gUnknown_3005AEC + thumb_func_end sub_0808550C + + thumb_func_start sub_08085524 +sub_08085524: @ 0x08085524 + push {lr} + ldr r0, _08085534 + bl sub_080854F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08085534: .4byte gUnknown_2031F7C + thumb_func_end sub_08085524 + + thumb_func_start sub_08085538 +sub_08085538: @ 0x08085538 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08085552 + cmp r0, #1 + beq _08085552 + cmp r0, #5 + beq _08085552 + cmp r0, #2 + beq _08085552 + cmp r0, #6 + bne _08085556 +_08085552: + movs r0, #1 + b _08085558 +_08085556: + movs r0, #0 +_08085558: + pop {r1} + bx r1 + thumb_func_end sub_08085538 + + thumb_func_start sub_0808555C +sub_0808555C: @ 0x0808555C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08085572 + cmp r0, #1 + beq _08085572 + cmp r0, #6 + beq _08085572 + cmp r0, #2 + bne _08085576 +_08085572: + movs r0, #1 + b _08085578 +_08085576: + movs r0, #0 +_08085578: + pop {r1} + bx r1 + thumb_func_end sub_0808555C + + thumb_func_start sub_0808557C +sub_0808557C: @ 0x0808557C + push {lr} + lsls r0, r0, #0x18 + movs r1, #0xf8 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08085590 + movs r0, #0 + b _08085592 +_08085590: + movs r0, #1 +_08085592: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808557C + + thumb_func_start sub_08085598 +sub_08085598: @ 0x08085598 + push {lr} + ldr r0, _080855BC + ldr r1, [r0] + movs r0, #0x14 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x15] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + pop {r1} + bx r1 + .align 2, 0 +_080855BC: .4byte gUnknown_3005AEC + thumb_func_end sub_08085598 + + thumb_func_start sub_080855C0 +sub_080855C0: @ 0x080855C0 + push {lr} + ldr r0, _080855E4 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + pop {r1} + bx r1 + .align 2, 0 +_080855E4: .4byte gUnknown_3005AEC + thumb_func_end sub_080855C0 + + thumb_func_start sub_080855E8 +sub_080855E8: @ 0x080855E8 + push {lr} + ldr r0, _0808560C + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + ldrb r0, [r0, #0x1b] + pop {r1} + bx r1 + .align 2, 0 +_0808560C: .4byte gUnknown_3005AEC + thumb_func_end sub_080855E8 + + thumb_func_start sub_08085610 +sub_08085610: @ 0x08085610 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r1, _0808568C + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #1 + movs r1, #5 + movs r2, #1 + bl sub_08001B70 + movs r0, #2 + movs r1, #5 + movs r2, #1 + bl sub_08001B70 + movs r0, #3 + movs r1, #5 + movs r2, #1 + bl sub_08001B70 + ldr r0, _08085690 + mov r8, r0 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BDC + mov r1, r8 + str r0, [r1] + ldr r6, _08085694 + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r6] + ldr r5, _08085698 + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r5] + mov r0, r8 + ldr r1, [r0] + movs r0, #1 + bl sub_0800212C + ldr r1, [r6] + movs r0, #2 + bl sub_0800212C + ldr r1, [r5] + movs r0, #3 + bl sub_0800212C + bl sub_08196DC4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808568C: .4byte gUnknown_830FCF8 +_08085690: .4byte gUnknown_3005B00 +_08085694: .4byte gUnknown_3005AFC +_08085698: .4byte gUnknown_3005B04 + thumb_func_end sub_08085610 + + thumb_func_start sub_0808569C +sub_0808569C: @ 0x0808569C + push {r4, lr} + bl sub_081BE3C8 + bl sub_08196DE8 + ldr r4, _080856DC + ldr r0, [r4] + cmp r0, #0 + beq _080856B6 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080856B6: + ldr r4, _080856E0 + ldr r0, [r4] + cmp r0, #0 + beq _080856C6 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080856C6: + ldr r4, _080856E4 + ldr r0, [r4] + cmp r0, #0 + beq _080856D6 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080856D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080856DC: .4byte gUnknown_3005B04 +_080856E0: .4byte gUnknown_3005AFC +_080856E4: .4byte gUnknown_3005B00 + thumb_func_end sub_0808569C + + thumb_func_start sub_080856E8 +sub_080856E8: @ 0x080856E8 + push {lr} + bl sub_080FC934 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080856E8 + + thumb_func_start sub_080856F4 +sub_080856F4: @ 0x080856F4 + push {lr} + ldr r0, _08085704 + ldr r1, [r0] + ldr r0, _08085708 + cmp r1, r0 + beq _0808570C + movs r0, #0 + b _0808570E + .align 2, 0 +_08085704: .4byte gUnknown_3002360 +_08085708: .4byte sub_0808653C +_0808570C: + movs r0, #1 +_0808570E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080856F4 + + thumb_func_start sub_08085714 +sub_08085714: @ 0x08085714 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r4, r1, #0 + bl sub_0808AEDC + mov r6, sp + mov r0, sp + bl sub_0809B7B4 + mov r0, sp + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0809B7E0 + bl sub_080987F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08085762 + mov r0, sp + bl sub_0809B8EC + cmp r0, #1 + bne _08085758 + bl sub_080987DC + bl sub_080D41F8 + b _08085762 +_08085758: + ldrb r0, [r6, #2] + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0808A324 +_08085762: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08085714 + + thumb_func_start sub_0808576C +sub_0808576C: @ 0x0808576C + push {lr} + ldr r2, _08085784 + ldr r1, [r2, #4] + ldr r0, _08085788 + cmp r1, r0 + bne _08085780 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x2c] + bl sub_08085714 +_08085780: + pop {r0} + bx r0 + .align 2, 0 +_08085784: .4byte gUnknown_3002360 +_08085788: .4byte sub_080857C4 + thumb_func_end sub_0808576C + + thumb_func_start sub_0808578C +sub_0808578C: @ 0x0808578C + push {lr} + bl sub_08098844 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08089AD8 + bl sub_08089C78 + bl sub_08006724 + bl sub_080A12E4 + bl sub_080A0300 + bl sub_08199668 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808578C + + thumb_func_start sub_080857B8 +sub_080857B8: @ 0x080857B8 + push {lr} + bl sub_0808578C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080857B8 + + thumb_func_start sub_080857C4 +sub_080857C4: @ 0x080857C4 + push {r4, lr} + ldr r0, _080857EC + ldrb r0, [r0, #7] + lsrs r0, r0, #7 + adds r4, r0, #0 + cmp r4, #0 + beq _080857D8 + movs r0, #0 + bl sub_080006F0 +_080857D8: + bl sub_0808578C + cmp r4, #0 + beq _080857E4 + bl sub_08085CE4 +_080857E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080857EC: .4byte gUnknown_2037C74 + thumb_func_end sub_080857C4 + + thumb_func_start sub_080857F0 +sub_080857F0: @ 0x080857F0 + ldr r1, _080857F8 + str r0, [r1] + bx lr + .align 2, 0 +_080857F8: .4byte gUnknown_3002360 + thumb_func_end sub_080857F0 + + thumb_func_start sub_080857FC +sub_080857FC: @ 0x080857FC + ldr r1, _08085804 + str r0, [r1] + bx lr + .align 2, 0 +_08085804: .4byte gUnknown_3000E0C + thumb_func_end sub_080857FC + + thumb_func_start sub_08085808 +sub_08085808: @ 0x08085808 + push {r4, lr} + ldr r4, _08085820 + ldr r0, [r4] + cmp r0, #0 + beq _08085834 + bl _call_via_r0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08085824 + movs r0, #0 + b _08085854 + .align 2, 0 +_08085820: .4byte gUnknown_3005B10 +_08085824: + movs r1, #0 + str r1, [r4] + ldr r0, _08085830 + str r1, [r0] + b _08085852 + .align 2, 0 +_08085830: .4byte gUnknown_3005B0C +_08085834: + ldr r0, _08085844 + ldr r0, [r0] + cmp r0, #0 + beq _08085848 + bl _call_via_r0 + b _0808584C + .align 2, 0 +_08085844: .4byte gUnknown_3005B0C +_08085848: + bl sub_080AEC94 +_0808584C: + ldr r1, _0808585C + movs r0, #0 + str r0, [r1] +_08085852: + movs r0, #1 +_08085854: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808585C: .4byte gUnknown_3005B0C + thumb_func_end sub_08085808 + + thumb_func_start sub_08085860 +sub_08085860: @ 0x08085860 + push {lr} + bl sub_08085C80 + bl sub_080A27F8 + bl sub_080856E8 + bl sub_08083E28 + bl sub_08084BD0 + bl sub_08083B90 + bl sub_0809881C + bl sub_080987E8 + ldr r1, _080858A8 + ldr r0, _080858AC + str r0, [r1] + ldr r1, _080858B0 + movs r0, #0 + str r0, [r1] + ldr r0, _080858B4 + bl sub_08086114 + bl sub_08085CE4 + ldr r0, _080858B8 + bl sub_080857F0 + ldr r0, _080858BC + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080858A8: .4byte gUnknown_3005B0C +_080858AC: .4byte sub_080FBD50 +_080858B0: .4byte gUnknown_3005B10 +_080858B4: .4byte gUnknown_3002798 +_080858B8: .4byte sub_0808576C +_080858BC: .4byte sub_080857C4 + thumb_func_end sub_08085860 + + thumb_func_start sub_080858C0 +sub_080858C0: @ 0x080858C0 + push {lr} + sub sp, #4 + ldr r1, _08085920 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + bls _08085918 + bl sub_08085C80 + bl sub_080A27F8 + bl sub_080856E8 + bl sub_08083FA8 + bl sub_08084BD0 + bl sub_0809881C + bl sub_080987E8 + ldr r1, _08085924 + ldr r0, _08085928 + str r0, [r1] + mov r1, sp + movs r0, #0 + strb r0, [r1] + mov r0, sp + bl sub_08086114 + bl sub_08085CE4 + ldr r0, _0808592C + bl sub_080857F0 + ldr r0, _08085930 + bl sub_08000540 +_08085918: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08085920: .4byte gUnknown_3002360 +_08085924: .4byte gUnknown_3005B0C +_08085928: .4byte sub_080AECC4 +_0808592C: .4byte sub_0808576C +_08085930: .4byte sub_080857C4 + thumb_func_end sub_080858C0 + + thumb_func_start sub_08085934 +sub_08085934: @ 0x08085934 + push {lr} + bl sub_08085C80 + bl sub_0809881C + bl sub_080987E8 + movs r0, #0 + bl sub_080857F0 + ldr r0, _08085958 + bl sub_08000540 + ldr r1, _0808595C + ldr r0, _08085960 + str r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08085958: .4byte sub_08137270 +_0808595C: .4byte gUnknown_3002360 +_08085960: .4byte sub_08085964 + thumb_func_end sub_08085934 + + thumb_func_start sub_08085964 +sub_08085964: @ 0x08085964 + push {lr} + ldr r0, _08085980 + bl sub_08086114 + bl sub_08085CE4 + ldr r0, _08085984 + bl sub_080857F0 + ldr r0, _08085988 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08085980: .4byte gUnknown_3002798 +_08085984: .4byte sub_0808576C +_08085988: .4byte sub_080857C4 + thumb_func_end sub_08085964 + + thumb_func_start sub_0808598C +sub_0808598C: @ 0x0808598C + push {r4, lr} + ldr r0, _080859D0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + bne _080859AE + bl sub_08085C80 + bl sub_0809881C + bl sub_080987E8 + movs r0, #0 + bl sub_080857F0 +_080859AE: + adds r0, r4, #0 + movs r1, #1 + bl sub_08085E80 + cmp r0, #0 + beq _080859CA + bl sub_08085CE4 + ldr r0, _080859D4 + bl sub_080857F0 + ldr r0, _080859D8 + bl sub_08000540 +_080859CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080859D0: .4byte gUnknown_3002360 +_080859D4: .4byte sub_0808576C +_080859D8: .4byte sub_080857C4 + thumb_func_end sub_0808598C + + thumb_func_start sub_080859DC +sub_080859DC: @ 0x080859DC + push {lr} + bl sub_08085C80 + ldr r0, _080859F4 + ldr r1, _080859F8 + str r1, [r0] + ldr r0, _080859FC + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080859F4: .4byte gUnknown_3005B0C +_080859F8: .4byte sub_080AEC10 +_080859FC: .4byte sub_08085A00 + thumb_func_end sub_080859DC + + thumb_func_start sub_08085A00 +sub_08085A00: @ 0x08085A00 + push {lr} + ldr r0, _08085A24 + bl sub_08085D5C + cmp r0, #0 + beq _08085A20 + bl sub_08085CE4 + ldr r0, _08085A28 + bl sub_080857F0 + bl sub_08086590 + ldr r0, _08085A2C + bl sub_08000540 +_08085A20: + pop {r0} + bx r0 + .align 2, 0 +_08085A24: .4byte gUnknown_3002798 +_08085A28: .4byte sub_0808653C +_08085A2C: .4byte sub_080857C4 + thumb_func_end sub_08085A00 + + thumb_func_start sub_08085A30 +sub_08085A30: @ 0x08085A30 + push {lr} + bl sub_080856F4 + cmp r0, #1 + bne _08085A48 + ldr r0, _08085A44 + bl sub_08000540 + b _08085A52 + .align 2, 0 +_08085A44: .4byte sub_08085A80 +_08085A48: + bl sub_08085C80 + ldr r0, _08085A58 + bl sub_08000540 +_08085A52: + pop {r0} + bx r0 + .align 2, 0 +_08085A58: .4byte sub_08085A5C + thumb_func_end sub_08085A30 + + thumb_func_start sub_08085A5C +sub_08085A5C: @ 0x08085A5C + push {lr} + ldr r0, _08085A78 + bl sub_08085F9C + cmp r0, #0 + beq _08085A72 + bl sub_08085CE4 + ldr r0, _08085A7C + bl sub_08000540 +_08085A72: + pop {r0} + bx r0 + .align 2, 0 +_08085A78: .4byte gUnknown_3002798 +_08085A7C: .4byte sub_080857C4 + thumb_func_end sub_08085A5C + + thumb_func_start sub_08085A80 +sub_08085A80: @ 0x08085A80 + push {lr} + bl sub_08086EFC + cmp r0, #0 + bne _08085A9A + ldr r0, _08085AA0 + bl sub_08085FFC + cmp r0, #0 + beq _08085A9A + ldr r0, _08085AA4 + bl sub_08000540 +_08085A9A: + pop {r0} + bx r0 + .align 2, 0 +_08085AA0: .4byte gUnknown_3002798 +_08085AA4: .4byte sub_080857C4 + thumb_func_end sub_08085A80 + + thumb_func_start sub_08085AA8 +sub_08085AA8: @ 0x08085AA8 + push {lr} + bl sub_08085C80 + bl sub_080A27F8 + ldr r0, _08085ACC + bl sub_080857F0 + bl sub_08086590 + ldr r0, _08085AD0 + ldrb r0, [r0] + cmp r0, #0 + beq _08085ADC + ldr r1, _08085AD4 + ldr r0, _08085AD8 + b _08085AE0 + .align 2, 0 +_08085ACC: .4byte sub_0808653C +_08085AD0: .4byte gUnknown_300319C +_08085AD4: .4byte gUnknown_3005B0C +_08085AD8: .4byte sub_080AEC10 +_08085ADC: + ldr r1, _08085AF4 + ldr r0, _08085AF8 +_08085AE0: + str r0, [r1] + bl sub_0809881C + bl sub_080987E8 + bl sub_08085A30 + pop {r0} + bx r0 + .align 2, 0 +_08085AF4: .4byte gUnknown_3005B0C +_08085AF8: .4byte sub_080AEB10 + thumb_func_end sub_08085AA8 + + thumb_func_start sub_08085AFC +sub_08085AFC: @ 0x08085AFC + push {lr} + bl sub_08085C80 + ldr r1, _08085B10 + ldr r0, _08085B14 + str r0, [r1] + bl sub_08085A30 + pop {r0} + bx r0 + .align 2, 0 +_08085B10: .4byte gUnknown_3005B10 +_08085B14: .4byte sub_080AEFA0 + thumb_func_end sub_08085AFC + + thumb_func_start sub_08085B18 +sub_08085B18: @ 0x08085B18 + push {lr} + bl sub_08085C80 + ldr r1, _08085B2C + ldr r0, _08085B30 + str r0, [r1] + bl sub_08085A30 + pop {r0} + bx r0 + .align 2, 0 +_08085B2C: .4byte gUnknown_3005B0C +_08085B30: .4byte sub_080AEA84 + thumb_func_end sub_08085B18 + + thumb_func_start sub_08085B34 +sub_08085B34: @ 0x08085B34 + push {lr} + bl sub_08085C80 + ldr r1, _08085B48 + ldr r0, _08085B4C + str r0, [r1] + bl sub_08085A30 + pop {r0} + bx r0 + .align 2, 0 +_08085B48: .4byte gUnknown_3005B0C +_08085B4C: .4byte sub_080AEA64 + thumb_func_end sub_08085B34 + + thumb_func_start sub_08085B50 +sub_08085B50: @ 0x08085B50 + push {lr} + bl sub_08085C80 + ldr r1, _08085B64 + ldr r0, _08085B68 + str r0, [r1] + bl sub_08085A30 + pop {r0} + bx r0 + .align 2, 0 +_08085B64: .4byte gUnknown_3005B0C +_08085B68: .4byte sub_080AECC4 + thumb_func_end sub_08085B50 + + thumb_func_start sub_08085B6C +sub_08085B6C: @ 0x08085B6C + push {lr} + ldr r0, _08085B94 + ldrb r1, [r0, #0x1a] + movs r0, #0xf8 + ands r0, r1 + cmp r0, #8 + bne _08085B8A + bl sub_080E9D28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08085B8A + bl sub_080D4068 +_08085B8A: + bl sub_080AECC4 + pop {r0} + bx r0 + .align 2, 0 +_08085B94: .4byte gUnknown_2036FB8 + thumb_func_end sub_08085B6C + + thumb_func_start sub_08085B98 +sub_08085B98: @ 0x08085B98 + push {r4, lr} + bl sub_08085C80 + bl sub_080A27F8 + bl sub_080856E8 + ldr r0, _08085BD0 + ldrh r0, [r0] + cmp r0, #0xff + bne _08085BB2 + bl sub_081A36A0 +_08085BB2: + bl sub_08084484 + bl sub_081D5A38 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08085BD4 + ldrh r1, [r0, #0x12] + ldr r0, _08085BD8 + cmp r1, r0 + bne _08085BDC + bl sub_081AA070 + b _08085BEE + .align 2, 0 +_08085BD0: .4byte gUnknown_3005F50 +_08085BD4: .4byte gUnknown_2036FB8 +_08085BD8: .4byte 0x00000169 +_08085BDC: + cmp r4, #0 + beq _08085BEA + cmp r4, #6 + beq _08085BEA + bl sub_081D5840 + b _08085BEE +_08085BEA: + bl sub_08084268 +_08085BEE: + bl sub_08096EEC + bl sub_0809E088 + bl sub_08084110 + ldr r0, _08085C0C + ldrh r1, [r0, #0x12] + ldr r0, _08085C10 + cmp r1, r0 + bne _08085C14 + movs r0, #1 + bl sub_08087710 + b _08085C22 + .align 2, 0 +_08085C0C: .4byte gUnknown_2036FB8 +_08085C10: .4byte 0x00000169 +_08085C14: + cmp r4, #0 + beq _08085C1E + bl sub_08087748 + b _08085C22 +_08085C1E: + bl sub_080876D8 +_08085C22: + bl sub_08083B90 + bl sub_0809881C + bl sub_080987E8 + bl sub_08195A10 + bl sub_0807672C + cmp r0, #1 + bne _08085C58 + bl sub_0807673C + bl sub_0808487C + bl sub_08084540 + bl sub_080EE664 + ldr r0, _08085C54 + bl sub_08000540 + b _08085C6C + .align 2, 0 +_08085C54: .4byte sub_08085934 +_08085C58: + bl sub_080EE664 + ldr r0, _08085C74 + ldr r1, _08085C78 + str r1, [r0] + ldr r0, _08085C7C + bl sub_080857F0 + bl sub_08085A30 +_08085C6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085C74: .4byte gUnknown_3005B0C +_08085C78: .4byte sub_08085B6C +_08085C7C: .4byte sub_0808576C + thumb_func_end sub_08085B98 + + thumb_func_start sub_08085C80 +sub_08085C80: @ 0x08085C80 + push {r4, lr} + bl sub_08139EBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08085C92 + bl sub_08009384 +_08085C92: + ldr r0, _08085CA8 + ldrb r0, [r0] + cmp r0, #0 + beq _08085CAC + movs r0, #0xc5 + bl sub_08001274 + movs r0, #2 + bl sub_080012A0 + b _08085CC6 + .align 2, 0 +_08085CA8: .4byte gUnknown_300319C +_08085CAC: + ldr r4, _08085CD8 + ldrh r3, [r4] + strh r0, [r4] + ldr r2, _08085CDC + ldrh r1, [r2] + ldr r0, _08085CE0 + ands r0, r1 + strh r0, [r2] + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + strh r3, [r4] +_08085CC6: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085CD8: .4byte 0x04000208 +_08085CDC: .4byte 0x04000200 +_08085CE0: .4byte 0x0000FFFD + thumb_func_end sub_08085C80 + + thumb_func_start sub_08085CE4 +sub_08085CE4: @ 0x08085CE4 + push {lr} + ldr r0, _08085CF0 + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 +_08085CF0: .4byte sub_08085CF4 + thumb_func_end sub_08085CE4 + + thumb_func_start sub_08085CF4 +sub_08085CF4: @ 0x08085CF4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080B9800 + bl sub_08089508 + bl sub_080A1288 + bl sub_080A0298 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08085CF4 + + thumb_func_start sub_08085D14 +sub_08085D14: @ 0x08085D14 + push {lr} + bl sub_081A9BE4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08085D38 + bl sub_080AFA20 + ldr r2, _08085D34 + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B9790 + b _08085D54 + .align 2, 0 +_08085D34: .4byte gUnknown_830FD08 +_08085D38: + bl sub_08084E7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08085D54 + bl sub_080AF9E4 + ldr r2, _08085D58 + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B9790 +_08085D54: + pop {r0} + bx r0 + .align 2, 0 +_08085D58: .4byte gUnknown_830FD08 + thumb_func_end sub_08085D14 + + thumb_func_start sub_08085D5C +sub_08085D5C: @ 0x08085D5C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0xd + bls _08085D68 + b _08085E76 +_08085D68: + lsls r0, r0, #2 + ldr r1, _08085D74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08085D74: .4byte _08085D78 +_08085D78: @ jump table + .4byte _08085DB0 @ case 0 + .4byte _08085DC6 @ case 1 + .4byte _08085DCE @ case 2 + .4byte _08085DD6 @ case 3 + .4byte _08085DE8 @ case 4 + .4byte _08085DF6 @ case 5 + .4byte _08085DFC @ case 6 + .4byte _08085E0C @ case 7 + .4byte _08085E1C @ case 8 + .4byte _08085E38 @ case 9 + .4byte _08085E3E @ case 10 + .4byte _08085E44 @ case 11 + .4byte _08085E60 @ case 12 + .4byte _08085E72 @ case 13 +_08085DB0: + bl sub_08085610 + bl sub_0809881C + bl sub_080987E8 + bl sub_0808612C + bl sub_0808613C + b _08085E6A +_08085DC6: + movs r0, #1 + bl sub_08084AC8 + b _08085E6A +_08085DCE: + movs r0, #1 + bl sub_080862EC + b _08085E6A +_08085DD6: + bl sub_08086448 + bl sub_08086340 + bl sub_08086478 + bl sub_08086410 + b _08085E6A +_08085DE8: + bl sub_08085D14 + bl sub_080861DC + bl sub_08196DF4 + b _08085E6A +_08085DF6: + bl sub_080894F8 + b _08085E6A +_08085DFC: + ldr r0, _08085E08 + ldr r0, [r0] + bl sub_080886B4 + b _08085E6A + .align 2, 0 +_08085E08: .4byte gUnknown_2036FB8 +_08085E0C: + ldr r0, _08085E18 + ldr r0, [r0] + bl sub_080886C8 + b _08085E6A + .align 2, 0 +_08085E18: .4byte gUnknown_2036FB8 +_08085E1C: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08085E76 + ldr r0, _08085E34 + ldr r0, [r0] + bl sub_08088738 + b _08085E6A + .align 2, 0 +_08085E34: .4byte gUnknown_2036FB8 +_08085E38: + bl sub_08089598 + b _08085E6A +_08085E3E: + bl sub_080A02E0 + b _08085E6A +_08085E44: + ldr r0, _08085E5C + ldrb r0, [r0] + cmp r0, #0 + beq _08085E6A + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _08085E6A + .align 2, 0 +_08085E5C: .4byte gUnknown_300319C +_08085E60: + bl sub_08085808 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08085E76 +_08085E6A: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08085E76 +_08085E72: + movs r0, #1 + b _08085E78 +_08085E76: + movs r0, #0 +_08085E78: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08085D5C + + thumb_func_start sub_08085E80 +sub_08085E80: @ 0x08085E80 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + cmp r0, #0xd + bls _08085E8E + b _08085F92 +_08085E8E: + lsls r0, r0, #2 + ldr r1, _08085E98 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08085E98: .4byte _08085E9C +_08085E9C: @ jump table + .4byte _08085ED4 @ case 0 + .4byte _08085EE0 @ case 1 + .4byte _08085EEA @ case 2 + .4byte _08085EF2 @ case 3 + .4byte _08085EFC @ case 4 + .4byte _08085F0A @ case 5 + .4byte _08085F10 @ case 6 + .4byte _08085F20 @ case 7 + .4byte _08085F30 @ case 8 + .4byte _08085F4C @ case 9 + .4byte _08085F52 @ case 10 + .4byte _08085F58 @ case 11 + .4byte _08085F7C @ case 12 + .4byte _08085F8E @ case 13 +_08085ED4: + bl sub_08085C80 + adds r0, r5, #0 + bl sub_08084AC8 + b _08085F86 +_08085EE0: + bl sub_0808612C + bl sub_0808613C + b _08085F86 +_08085EEA: + adds r0, r5, #0 + bl sub_080862EC + b _08085F86 +_08085EF2: + bl sub_08086368 + bl sub_080863E4 + b _08085F86 +_08085EFC: + bl sub_08085D14 + bl sub_080861DC + bl sub_08196DF4 + b _08085F86 +_08085F0A: + bl sub_080894F8 + b _08085F86 +_08085F10: + ldr r0, _08085F1C + ldr r0, [r0] + bl sub_080886B4 + b _08085F86 + .align 2, 0 +_08085F1C: .4byte gUnknown_2036FB8 +_08085F20: + ldr r0, _08085F2C + ldr r0, [r0] + bl sub_080886C8 + b _08085F86 + .align 2, 0 +_08085F2C: .4byte gUnknown_2036FB8 +_08085F30: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08085F92 + ldr r0, _08085F48 + ldr r0, [r0] + bl sub_08088738 + b _08085F86 + .align 2, 0 +_08085F48: .4byte gUnknown_2036FB8 +_08085F4C: + bl sub_08089598 + b _08085F86 +_08085F52: + bl sub_080A02E0 + b _08085F86 +_08085F58: + ldr r0, _08085F78 + ldrb r1, [r0, #0x1a] + movs r0, #0xf8 + ands r0, r1 + cmp r0, #8 + bne _08085F86 + bl sub_080E9D28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08085F86 + bl sub_080D4068 + b _08085F86 + .align 2, 0 +_08085F78: .4byte gUnknown_2036FB8 +_08085F7C: + bl sub_08085808 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08085F92 +_08085F86: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08085F92 +_08085F8E: + movs r0, #1 + b _08085F94 +_08085F92: + movs r0, #0 +_08085F94: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08085E80 + + thumb_func_start sub_08085F9C +sub_08085F9C: @ 0x08085F9C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #1 + beq _08085FD2 + cmp r0, #1 + bgt _08085FB0 + cmp r0, #0 + beq _08085FBA + b _08085FF2 +_08085FB0: + cmp r0, #2 + beq _08085FDC + cmp r0, #3 + beq _08085FEE + b _08085FF2 +_08085FBA: + bl sub_0808612C + bl sub_0808613C + movs r0, #0 + bl sub_080862EC + bl sub_080863CC + bl sub_080863E4 + b _08085FE6 +_08085FD2: + bl sub_080861C4 + bl sub_081D5E60 + b _08085FE6 +_08085FDC: + bl sub_08085808 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08085FF2 +_08085FE6: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08085FF2 +_08085FEE: + movs r0, #1 + b _08085FF4 +_08085FF2: + movs r0, #0 +_08085FF4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08085F9C + + thumb_func_start sub_08085FFC +sub_08085FFC: @ 0x08085FFC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0xd + bls _08086008 + b _0808610C +_08086008: + lsls r0, r0, #2 + ldr r1, _08086014 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08086014: .4byte _08086018 +_08086018: @ jump table + .4byte _08086050 @ case 0 + .4byte _0808605E @ case 1 + .4byte _08086066 @ case 2 + .4byte _08086074 @ case 3 + .4byte _08086082 @ case 4 + .4byte _08086088 @ case 5 + .4byte _08086098 @ case 6 + .4byte _080860A8 @ case 7 + .4byte _080860C4 @ case 8 + .4byte _080860CA @ case 9 + .4byte _080860F6 @ case 10 + .4byte _080860D0 @ case 11 + .4byte _080860EC @ case 12 + .4byte _080860FE @ case 13 +_08086050: + bl sub_08085C80 + bl sub_0808612C + bl sub_0808613C + b _080860F6 +_0808605E: + movs r0, #1 + bl sub_080862EC + b _080860F6 +_08086066: + bl sub_08086500 + bl sub_080863CC + bl sub_0808642C + b _080860F6 +_08086074: + bl sub_08085D14 + bl sub_080861DC + bl sub_08196DF4 + b _080860F6 +_08086082: + bl sub_080894F8 + b _080860F6 +_08086088: + ldr r0, _08086094 + ldr r0, [r0] + bl sub_080886B4 + b _080860F6 + .align 2, 0 +_08086094: .4byte gUnknown_2036FB8 +_08086098: + ldr r0, _080860A4 + ldr r0, [r0] + bl sub_080886C8 + b _080860F6 + .align 2, 0 +_080860A4: .4byte gUnknown_2036FB8 +_080860A8: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0808610C + ldr r0, _080860C0 + ldr r0, [r0] + bl sub_08088738 + b _080860F6 + .align 2, 0 +_080860C0: .4byte gUnknown_2036FB8 +_080860C4: + bl sub_08089598 + b _080860F6 +_080860CA: + bl sub_080A02E0 + b _080860F6 +_080860D0: + ldr r0, _080860E8 + ldrb r0, [r0] + cmp r0, #0 + beq _080860F6 + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _080860F6 + .align 2, 0 +_080860E8: .4byte gUnknown_300319C +_080860EC: + bl sub_08085808 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808610C +_080860F6: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _0808610C +_080860FE: + bl sub_08085CE4 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #1 + b _0808610E +_0808610C: + movs r0, #0 +_0808610E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08085FFC + + thumb_func_start sub_08086114 +sub_08086114: @ 0x08086114 + push {r4, lr} + adds r4, r0, #0 +_08086118: + adds r0, r4, #0 + movs r1, #0 + bl sub_08085E80 + cmp r0, #0 + beq _08086118 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08086114 + + thumb_func_start sub_0808612C +sub_0808612C: @ 0x0808612C + push {lr} + bl sub_081BE348 + bl sub_08076634 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808612C + + thumb_func_start sub_0808613C +sub_0808613C: @ 0x0808613C + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + bl sub_080B9710 + ldr r2, _080861B4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _080861B8 + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + ldr r0, _080861BC + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0xc0 + lsls r3, r3, #9 + mov r4, sp + movs r6, #0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _080861C0 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0808617A: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r5 + subs r3, r3, r5 + cmp r3, r5 + bhi _0808617A + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0 + movs r1, #0x80 + bl sub_08006E68 + bl sub_08006EA0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080861B4: .4byte 0x05000002 +_080861B8: .4byte 0x040000D4 +_080861BC: .4byte 0x810001FF +_080861C0: .4byte 0x81000800 + thumb_func_end sub_0808613C + + thumb_func_start sub_080861C4 +sub_080861C4: @ 0x080861C4 + push {lr} + bl sub_08085D14 + bl sub_080861DC + bl sub_08196DF4 + bl sub_08084308 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080861C4 + + thumb_func_start sub_080861DC +sub_080861DC: @ 0x080861DC + push {r4, lr} + bl sub_08199640 + bl sub_081996B8 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r1, _080862D4 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _080862D8 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x40 + movs r1, #0xff + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xff + bl sub_08001144 + ldr r4, _080862DC + movs r0, #0x42 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x46 + adds r1, r4, #0 + bl sub_08001144 + ldr r0, _080862E0 + ldrh r1, [r0, #2] + ldrh r2, [r0, #4] + orrs r1, r2 + ldrh r0, [r0, #6] + orrs r1, r0 + movs r2, #0x82 + lsls r2, r2, #5 + adds r0, r2, #0 + orrs r1, r0 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080862E4 + movs r0, #0x52 + bl sub_08001144 + bl sub_08085610 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r1, _080862E8 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl sub_08097AB0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080862D4: .4byte 0x00001F1F +_080862D8: .4byte 0x00000101 +_080862DC: .4byte 0x0000FFFF +_080862E0: .4byte gUnknown_82BF42C +_080862E4: .4byte 0x0000070D +_080862E8: .4byte 0x00007060 + thumb_func_end sub_080861DC + + thumb_func_start sub_080862EC +sub_080862EC: @ 0x080862EC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_080B9750 + bl sub_0818CCF8 + bl sub_08089A80 + bl sub_08089C48 + cmp r4, #0 + bne _08086318 + movs r0, #0 + bl sub_0808EC68 + b _0808631E +_08086318: + movs r0, #1 + bl sub_0808EC68 +_0808631E: + bl sub_080B5518 + bl sub_080AA8A0 + bl sub_080AE780 + cmp r4, #0 + bne _08086332 + bl sub_0809D214 +_08086332: + bl sub_080989E0 + bl sub_081BE354 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080862EC + + thumb_func_start sub_08086340 +sub_08086340: @ 0x08086340 + push {lr} + ldr r0, _08086360 + movs r1, #0 + strh r1, [r0] + ldr r0, _08086364 + strh r1, [r0] + bl sub_0808CDA8 + movs r0, #0 + movs r1, #0 + bl sub_0808D8F0 + bl sub_08098A20 + pop {r0} + bx r0 + .align 2, 0 +_08086360: .4byte gUnknown_3005B4C +_08086364: .4byte gUnknown_3005B48 + thumb_func_end sub_08086340 + + thumb_func_start sub_08086368 +sub_08086368: @ 0x08086368 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _080863C0 + movs r1, #0 + strh r1, [r0] + ldr r0, _080863C4 + strh r1, [r0] + bl sub_0808CDA8 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080884BC + bl sub_08084C3C + adds r5, r0, #0 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + ldrb r2, [r5, #1] + ldr r3, _080863C8 + ldr r3, [r3] + ldrb r3, [r3, #8] + bl sub_0808B944 + ldrb r0, [r5] + bl sub_0808AD30 + bl sub_08084BD0 + movs r0, #0 + movs r1, #0 + bl sub_0808D8F0 + bl sub_08098A20 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080863C0: .4byte gUnknown_3005B4C +_080863C4: .4byte gUnknown_3005B48 +_080863C8: .4byte gUnknown_3005AF0 + thumb_func_end sub_08086368 + + thumb_func_start sub_080863CC +sub_080863CC: @ 0x080863CC + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_0808DADC + bl sub_080FC740 + bl sub_080989EC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080863CC + + thumb_func_start sub_080863E4 +sub_080863E4: @ 0x080863E4 + push {lr} + ldr r2, _08086408 + ldr r3, _0808640C + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] + ldrb r0, [r3, #4] + bl sub_08089A98 + pop {r0} + bx r0 + .align 2, 0 +_08086408: .4byte gUnknown_2036FF0 +_0808640C: .4byte gUnknown_2037230 + thumb_func_end sub_080863E4 + + thumb_func_start sub_08086410 +sub_08086410: @ 0x08086410 + push {lr} + ldr r0, _08086428 + ldrb r0, [r0] + bl sub_080871BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089A98 + pop {r0} + bx r0 + .align 2, 0 +_08086428: .4byte gUnknown_3005B14 + thumb_func_end sub_08086410 + + thumb_func_start sub_0808642C +sub_0808642C: @ 0x0808642C + push {lr} + ldr r0, _08086444 + ldrb r0, [r0] + bl sub_080871BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089A98 + pop {r0} + bx r0 + .align 2, 0 +_08086444: .4byte gUnknown_3005B14 + thumb_func_end sub_0808642C + + thumb_func_start sub_08086448 +sub_08086448: @ 0x08086448 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080884BC + mov r2, sp + ldr r0, _08086474 + ldrb r1, [r0] + ldrh r0, [r2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4] + bl sub_080884A0 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086474: .4byte gUnknown_3005B14 + thumb_func_end sub_08086448 + + thumb_func_start sub_08086478 +sub_08086478: @ 0x08086478 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080884BC + mov r3, sp + mov r2, sp + ldr r0, _080864F4 + ldrb r1, [r0] + ldrh r0, [r2] + subs r0, r0, r1 + strh r0, [r3] + movs r6, #0 + ldr r0, _080864F8 + mov r8, r4 + ldrb r0, [r0] + cmp r6, r0 + bhs _080864E2 + ldr r7, _080864FC +_080864A8: + lsls r5, r6, #0x18 + lsrs r5, r5, #0x18 + mov r0, sp + ldrh r1, [r0] + adds r1, r6, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r0, r8 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r4, r6, #3 + subs r4, r4, r6 + lsls r4, r4, #2 + adds r4, r4, r7 + ldrb r3, [r4, #0x13] + adds r0, r5, #0 + bl sub_08087054 + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_08087530 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _080864F8 + ldrb r0, [r0] + cmp r6, r0 + blo _080864A8 +_080864E2: + bl sub_080865A4 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080864F4: .4byte gUnknown_3005B14 +_080864F8: .4byte gUnknown_3005B18 +_080864FC: .4byte gUnknown_20226A0 + thumb_func_end sub_08086478 + + thumb_func_start sub_08086500 +sub_08086500: @ 0x08086500 + push {r4, r5, lr} + movs r4, #0 + ldr r0, _08086534 + ldrb r0, [r0] + cmp r4, r0 + bhs _0808652E + ldr r5, _08086538 +_0808650E: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r1, [r1] + bl sub_08087530 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08086534 + ldrb r0, [r0] + cmp r4, r0 + blo _0808650E +_0808652E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08086534: .4byte gUnknown_3005B18 +_08086538: .4byte gUnknown_20226A0 + thumb_func_end sub_08086500 + + thumb_func_start sub_0808653C +sub_0808653C: @ 0x0808653C + push {r4, lr} + ldr r0, _08086580 + ldrb r0, [r0] + cmp r0, #0 + beq _08086556 + bl sub_0800EB78 + cmp r0, #0 + beq _08086556 + bl sub_08009AD4 + cmp r0, #0 + bne _08086578 +_08086556: + ldr r0, _08086584 + ldrb r4, [r0] + ldr r0, _08086588 + adds r1, r4, #0 + bl sub_0808689C + ldr r0, _0808658C + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08086904 + bl sub_080865A4 +_08086578: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086580: .4byte gUnknown_300319C +_08086584: .4byte gUnknown_3005B14 +_08086588: .4byte gUnknown_30030C0 +_0808658C: .4byte gUnknown_3000E14 + thumb_func_end sub_0808653C + + thumb_func_start sub_08086590 +sub_08086590: @ 0x08086590 + push {lr} + bl sub_080865F4 + ldr r0, _080865A0 + bl sub_080865B4 + pop {r0} + bx r0 + .align 2, 0 +_080865A0: .4byte sub_08086A14 + thumb_func_end sub_08086590 + + thumb_func_start sub_080865A4 +sub_080865A4: @ 0x080865A4 + push {lr} + ldr r0, _080865B0 + bl sub_08086A00 + pop {r0} + bx r0 + .align 2, 0 +_080865B0: .4byte gUnknown_30030C0 + thumb_func_end sub_080865A4 + + thumb_func_start sub_080865B4 +sub_080865B4: @ 0x080865B4 + ldr r2, _080865C0 + movs r1, #0 + strb r1, [r2] + ldr r1, _080865C4 + str r0, [r1] + bx lr + .align 2, 0 +_080865C0: .4byte gUnknown_3000E19 +_080865C4: .4byte gUnknown_3000E14 + thumb_func_end sub_080865B4 + + thumb_func_start sub_080865C8 +sub_080865C8: @ 0x080865C8 + push {lr} + ldr r0, _080865EC + ldrb r0, [r0] + cmp r0, #0 + beq _080865E6 + ldr r1, _080865F0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bls _080865E6 + bl sub_0800FC98 +_080865E6: + pop {r0} + bx r0 + .align 2, 0 +_080865EC: .4byte gUnknown_300319C +_080865F0: .4byte gUnknown_3000E19 + thumb_func_end sub_080865C8 + + thumb_func_start sub_080865F4 +sub_080865F4: @ 0x080865F4 + push {lr} + ldr r1, _08086608 + movs r2, #0x80 + adds r0, r1, #3 +_080865FC: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _080865FC + pop {r0} + bx r0 + .align 2, 0 +_08086608: .4byte gUnknown_3000E10 + thumb_func_end sub_080865F4 + + thumb_func_start sub_0808660C +sub_0808660C: @ 0x0808660C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _0808662C + ldrb r2, [r0] + movs r1, #0 + cmp r1, r2 + bge _0808663A + ldr r4, _08086630 +_0808661E: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + beq _08086634 + movs r0, #0 + b _0808663C + .align 2, 0 +_0808662C: .4byte gUnknown_3005B18 +_08086630: .4byte gUnknown_3000E10 +_08086634: + adds r1, #1 + cmp r1, r2 + blt _0808661E +_0808663A: + movs r0, #1 +_0808663C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808660C + + thumb_func_start sub_08086644 +sub_08086644: @ 0x08086644 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _08086664 + ldrb r2, [r0] + movs r1, #0 + cmp r1, r2 + bge _08086672 + ldr r4, _08086668 +_08086656: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _0808666C + movs r0, #1 + b _08086674 + .align 2, 0 +_08086664: .4byte gUnknown_3005B18 +_08086668: .4byte gUnknown_3000E10 +_0808666C: + adds r1, #1 + cmp r1, r2 + blt _08086656 +_08086672: + movs r0, #0 +_08086674: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086644 + + thumb_func_start sub_0808667C +sub_0808667C: @ 0x0808667C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r6, r2, #0 + mov sb, r3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + ldr r0, _080866CC + adds r5, r7, r0 + ldrb r0, [r5] + cmp r0, #0x80 + beq _0808669C + b _08086816 +_0808669C: + adds r0, r6, #0 + bl sub_08086CD4 + adds r4, r0, #0 + cmp r4, #0 + beq _080866D4 + bl sub_08086DE4 + mov r1, sb + strh r0, [r1] + movs r0, #0x81 + strb r0, [r5] + ldrb r0, [r6, #1] + cmp r0, #0 + bne _080866BC + b _0808688A +_080866BC: + ldr r0, _080866D0 + bl sub_080865B4 + adds r0, r4, #0 + bl sub_08086E94 + b _0808688A + .align 2, 0 +_080866CC: .4byte gUnknown_3000E10 +_080866D0: .4byte sub_08086A5C +_080866D4: + movs r0, #0x83 + bl sub_08086644 + cmp r0, #1 + bne _080866FC + movs r0, #0x81 + strb r0, [r5] + ldrb r0, [r6, #1] + cmp r0, #0 + bne _080866EA + b _0808688A +_080866EA: + ldr r0, _080866F8 + bl sub_080865B4 + bl sub_08086EE8 + b _0808688A + .align 2, 0 +_080866F8: .4byte sub_08086A5C +_080866FC: + mov r0, r8 + subs r0, #0x12 + cmp r0, #0xa + bls _08086706 + b _08086816 +_08086706: + lsls r0, r0, #2 + ldr r1, _08086710 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08086710: .4byte _08086714 +_08086714: @ jump table + .4byte _0808676C @ case 0 + .4byte _08086816 @ case 1 + .4byte _08086816 @ case 2 + .4byte _08086816 @ case 3 + .4byte _08086816 @ case 4 + .4byte _08086816 @ case 5 + .4byte _08086740 @ case 6 + .4byte _08086798 @ case 7 + .4byte _08086816 @ case 8 + .4byte _080867C8 @ case 9 + .4byte _080867F4 @ case 10 +_08086740: + adds r0, r6, #0 + bl sub_08086CBC + cmp r0, #0 + beq _08086816 + ldr r0, _08086764 + adds r0, r7, r0 + movs r1, #0x81 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _08086816 + ldr r0, _08086768 + bl sub_080865B4 + bl sub_08086E80 + b _08086816 + .align 2, 0 +_08086764: .4byte gUnknown_3000E10 +_08086768: .4byte sub_08086A5C +_0808676C: + adds r0, r6, #0 + bl sub_08086CEC + cmp r0, #1 + bne _08086816 + ldr r0, _08086790 + adds r0, r7, r0 + movs r1, #0x81 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _08086816 + ldr r0, _08086794 + bl sub_080865B4 + bl sub_08086EB0 + b _08086816 + .align 2, 0 +_08086790: .4byte gUnknown_3000E10 +_08086794: .4byte sub_08086A5C +_08086798: + adds r0, r6, #0 + bl sub_08086D18 + adds r4, r0, #0 + cmp r4, #0 + beq _08086816 + ldr r0, _080867C0 + adds r0, r7, r0 + movs r1, #0x81 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _08086816 + ldr r0, _080867C4 + bl sub_080865B4 + adds r0, r4, #0 + bl sub_08086ECC + b _08086816 + .align 2, 0 +_080867C0: .4byte gUnknown_3000E10 +_080867C4: .4byte sub_08086A5C +_080867C8: + adds r0, r6, #0 + bl sub_08086CA4 + cmp r0, #0 + beq _08086816 + ldr r0, _080867EC + adds r0, r7, r0 + movs r1, #0x81 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _08086816 + ldr r0, _080867F0 + bl sub_080865B4 + bl sub_08086E74 + b _08086816 + .align 2, 0 +_080867EC: .4byte gUnknown_3000E10 +_080867F0: .4byte sub_08086A80 +_080867F4: + adds r0, r6, #0 + bl sub_08086CA4 + cmp r0, #0 + beq _08086816 + ldr r0, _08086828 + adds r0, r7, r0 + movs r1, #0x81 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _08086816 + ldr r0, _0808682C + bl sub_080865B4 + bl sub_08086E74 +_08086816: + mov r0, r8 + cmp r0, #0x17 + beq _0808683C + cmp r0, #0x17 + bgt _08086830 + cmp r0, #0x16 + beq _0808684C + b _0808688A + .align 2, 0 +_08086828: .4byte gUnknown_3000E10 +_0808682C: .4byte sub_08086AA4 +_08086830: + mov r1, r8 + cmp r1, #0x1a + beq _0808685C + cmp r1, #0x1d + beq _0808687C + b _0808688A +_0808683C: + ldr r0, _08086848 + adds r0, r7, r0 + movs r1, #0x83 + strb r1, [r0] + b _0808688A + .align 2, 0 +_08086848: .4byte gUnknown_3000E10 +_0808684C: + ldr r0, _08086858 + adds r0, r7, r0 + movs r1, #0x82 + strb r1, [r0] + b _0808688A + .align 2, 0 +_08086858: .4byte gUnknown_3000E10 +_0808685C: + ldr r0, _08086874 + adds r0, r7, r0 + movs r1, #0x80 + strb r1, [r0] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _0808688A + ldr r0, _08086878 + bl sub_080865B4 + b _0808688A + .align 2, 0 +_08086874: .4byte gUnknown_3000E10 +_08086878: .4byte sub_08086A14 +_0808687C: + ldr r0, _08086898 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, #0x82 + bne _0808688A + movs r0, #0x81 + strb r0, [r1] +_0808688A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08086898: .4byte gUnknown_3000E10 + thumb_func_end sub_0808667C + + thumb_func_start sub_0808689C +sub_0808689C: @ 0x0808689C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov r8, r1 + movs r6, #0 + add r5, sp, #0x10 + mov sb, r5 + adds r7, r0, #0 +_080868B0: + ldrb r4, [r7] + movs r0, #0 + strh r0, [r5] + adds r0, r6, #0 + mov r1, r8 + mov r2, sp + bl sub_08086C3C + adds r0, r6, #0 + adds r1, r4, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_0808667C + ldr r0, _08086900 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080868E0 + adds r0, r4, #0 + bl sub_080869CC + mov r1, sb + strh r0, [r1] +_080868E0: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r5] + bl sub_080872D0 + adds r7, #2 + adds r6, #1 + cmp r6, #3 + ble _080868B0 + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08086900: .4byte gUnknown_3000E10 + thumb_func_end sub_0808689C + + thumb_func_start sub_08086904 +sub_08086904: @ 0x08086904 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r1, _0808691C + adds r0, r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #0xc + bhi _08086924 + ldr r0, _08086920 + strh r4, [r0] + b _0808692A + .align 2, 0 +_0808691C: .4byte 0xFFEF0000 +_08086920: .4byte gUnknown_3005B08 +_08086924: + ldr r1, _08086968 + movs r0, #0x11 + strh r0, [r1] +_0808692A: + ldr r0, _0808696C + ldrb r0, [r0] + cmp r0, #0 + beq _08086960 + bl sub_08086FF4 + cmp r0, #1 + bls _08086960 + bl sub_080856F4 + cmp r0, #1 + bne _08086960 + bl sub_08009AD4 + cmp r0, #1 + bne _08086960 + cmp r4, #0x11 + blt _08086960 + cmp r4, #0x15 + ble _0808695A + cmp r4, #0x19 + bgt _08086960 + cmp r4, #0x18 + blt _08086960 +_0808695A: + ldr r1, _08086968 + movs r0, #0 + strh r0, [r1] +_08086960: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08086968: .4byte gUnknown_3005B08 +_0808696C: .4byte gUnknown_300319C + thumb_func_end sub_08086904 + + thumb_func_start sub_08086970 +sub_08086970: @ 0x08086970 + push {lr} + ldr r2, _08086984 + ldrh r1, [r2, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08086988 + movs r0, #0x13 + b _080869C8 + .align 2, 0 +_08086984: .4byte gUnknown_3002360 +_08086988: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08086994 + movs r0, #0x12 + b _080869C8 +_08086994: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080869A0 + movs r0, #0x14 + b _080869C8 +_080869A0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080869AC + movs r0, #0x15 + b _080869C8 +_080869AC: + ldrh r1, [r2, #0x2e] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080869BA + movs r0, #0x18 + b _080869C8 +_080869BA: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080869C6 + movs r0, #0x11 + b _080869C8 +_080869C6: + movs r0, #0x19 +_080869C8: + pop {r1} + bx r1 + thumb_func_end sub_08086970 + + thumb_func_start sub_080869CC +sub_080869CC: @ 0x080869CC + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, #0 + cmp r0, #0x13 + beq _080869F2 + cmp r0, #0x13 + bgt _080869E2 + cmp r0, #0x12 + beq _080869F6 + b _080869FA +_080869E2: + cmp r1, #0x14 + beq _080869EE + cmp r1, #0x15 + bne _080869FA + movs r0, #4 + b _080869FC +_080869EE: + movs r0, #3 + b _080869FC +_080869F2: + movs r0, #1 + b _080869FC +_080869F6: + movs r0, #2 + b _080869FC +_080869FA: + movs r0, #0 +_080869FC: + pop {r1} + bx r1 + thumb_func_end sub_080869CC + + thumb_func_start sub_08086A00 +sub_08086A00: @ 0x08086A00 + push {lr} + movs r2, #0x11 + adds r1, r0, #6 +_08086A06: + strh r2, [r1] + subs r1, #2 + cmp r1, r0 + bge _08086A06 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08086A00 + + thumb_func_start sub_08086A14 +sub_08086A14: @ 0x08086A14 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08086A28 + movs r0, #0x11 + b _08086A4A +_08086A28: + bl sub_0800AFB0 + cmp r0, #4 + bls _08086A34 + movs r0, #0x1b + b _08086A4A +_08086A34: + bl sub_08086FF4 + cmp r0, #4 + bls _08086A40 + movs r0, #0x1c + b _08086A4A +_08086A40: + adds r0, r4, #0 + bl sub_08086970 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_08086A4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08086A14 + + thumb_func_start sub_08086A50 +sub_08086A50: @ 0x08086A50 + push {lr} + bl sub_080865C8 + movs r0, #0x11 + pop {r1} + bx r1 + thumb_func_end sub_08086A50 + + thumb_func_start sub_08086A5C +sub_08086A5C: @ 0x08086A5C + push {r4, lr} + bl sub_080987F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0x11 + cmp r0, #1 + beq _08086A74 + movs r4, #0x1a + ldr r0, _08086A7C + bl sub_080865B4 +_08086A74: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086A7C: .4byte sub_08086A50 + thumb_func_end sub_08086A5C + + thumb_func_start sub_08086A80 +sub_08086A80: @ 0x08086A80 + push {r4, lr} + bl sub_0800AFB0 + movs r4, #0x11 + cmp r0, #2 + bhi _08086A98 + movs r4, #0x1a + bl sub_080987E8 + ldr r0, _08086AA0 + bl sub_080865B4 +_08086A98: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086AA0: .4byte sub_08086A50 + thumb_func_end sub_08086A80 + + thumb_func_start sub_08086AA4 +sub_08086AA4: @ 0x08086AA4 + push {r4, lr} + bl sub_08086FF4 + movs r4, #0x11 + cmp r0, #2 + bhi _08086ABC + movs r4, #0x1a + bl sub_080987E8 + ldr r0, _08086AC4 + bl sub_080865B4 +_08086ABC: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08086AC4: .4byte sub_08086A50 + thumb_func_end sub_08086AA4 + + thumb_func_start sub_08086AC8 +sub_08086AC8: @ 0x08086AC8 + push {lr} + bl sub_080865C8 + movs r0, #0x11 + pop {r1} + bx r1 + thumb_func_end sub_08086AC8 + + thumb_func_start sub_08086AD4 +sub_08086AD4: @ 0x08086AD4 + push {lr} + ldr r1, _08086AF8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x82 + bne _08086B04 + ldr r0, _08086AFC + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08086B08 + ldr r0, _08086B00 + bl sub_080865B4 + movs r0, #0x1d + b _08086B0A + .align 2, 0 +_08086AF8: .4byte gUnknown_3000E10 +_08086AFC: .4byte gUnknown_3002360 +_08086B00: .4byte sub_08086AC8 +_08086B04: + bl sub_080865C8 +_08086B08: + movs r0, #0x11 +_08086B0A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086AD4 + + thumb_func_start sub_08086B10 +sub_08086B10: @ 0x08086B10 + push {lr} + ldr r0, _08086B20 + bl sub_080865B4 + movs r0, #0x16 + pop {r1} + bx r1 + .align 2, 0 +_08086B20: .4byte sub_08086AD4 + thumb_func_end sub_08086B10 + + thumb_func_start sub_08086B24 +sub_08086B24: @ 0x08086B24 + movs r0, #0x11 + bx lr + thumb_func_end sub_08086B24 + + thumb_func_start sub_08086B28 +sub_08086B28: @ 0x08086B28 + push {lr} + ldr r1, _08086B54 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x83 + beq _08086B38 + bl sub_080865C8 +_08086B38: + movs r0, #0x83 + bl sub_0808660C + cmp r0, #1 + bne _08086B4E + ldr r0, _08086B58 + bl sub_08098880 + ldr r0, _08086B5C + bl sub_080865B4 +_08086B4E: + movs r0, #0x11 + pop {r1} + bx r1 + .align 2, 0 +_08086B54: .4byte gUnknown_3000E10 +_08086B58: .4byte gUnknown_82471F2 +_08086B5C: .4byte sub_08086B24 + thumb_func_end sub_08086B28 + + thumb_func_start sub_08086B60 +sub_08086B60: @ 0x08086B60 + push {lr} + ldr r0, _08086B70 + bl sub_080865B4 + movs r0, #0x17 + pop {r1} + bx r1 + .align 2, 0 +_08086B70: .4byte sub_08086B28 + thumb_func_end sub_08086B60 + + thumb_func_start sub_08086B74 +sub_08086B74: @ 0x08086B74 + movs r0, #0x11 + bx lr + thumb_func_end sub_08086B74 + + thumb_func_start sub_08086B78 +sub_08086B78: @ 0x08086B78 + push {lr} + movs r0, #0x83 + bl sub_08086644 + cmp r0, #1 + beq _08086BB4 + ldr r0, _08086BB8 + ldr r2, [r0] + ldr r1, _08086BBC + adds r3, r0, #0 + cmp r2, r1 + bne _08086B9E + ldr r1, _08086BC0 + ldr r0, _08086BC4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x82 + bne _08086BD6 +_08086B9E: + ldr r1, [r3] + ldr r0, _08086BC8 + cmp r1, r0 + bne _08086BCC + ldr r1, _08086BC0 + ldr r0, _08086BC4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x81 + bne _08086BCC +_08086BB4: + movs r0, #2 + b _08086BDC + .align 2, 0 +_08086BB8: .4byte gUnknown_3000E14 +_08086BBC: .4byte sub_08086AD4 +_08086BC0: .4byte gUnknown_3000E10 +_08086BC4: .4byte gUnknown_3005B14 +_08086BC8: .4byte sub_08086AC8 +_08086BCC: + movs r0, #0x82 + bl sub_0808660C + cmp r0, #0 + bne _08086BDA +_08086BD6: + movs r0, #0 + b _08086BDC +_08086BDA: + movs r0, #1 +_08086BDC: + pop {r1} + bx r1 + thumb_func_end sub_08086B78 + + thumb_func_start sub_08086BE0 +sub_08086BE0: @ 0x08086BE0 + push {lr} + movs r0, #0x83 + bl sub_08086644 + pop {r1} + bx r1 + thumb_func_end sub_08086BE0 + + thumb_func_start sub_08086BEC +sub_08086BEC: @ 0x08086BEC + push {lr} + ldr r0, _08086BFC + bl sub_080865B4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08086BFC: .4byte sub_08086B10 + thumb_func_end sub_08086BEC + + thumb_func_start sub_08086C00 +sub_08086C00: @ 0x08086C00 + push {lr} + ldr r0, _08086C10 + bl sub_080865B4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08086C10: .4byte sub_08086A5C + thumb_func_end sub_08086C00 + + thumb_func_start sub_08086C14 +sub_08086C14: @ 0x08086C14 + push {lr} + ldr r0, _08086C24 + bl sub_080865B4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08086C24: .4byte sub_08086B60 + thumb_func_end sub_08086C14 + + thumb_func_start sub_08086C28 +sub_08086C28: @ 0x08086C28 + push {lr} + ldr r0, _08086C38 + bl sub_080865B4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08086C38: .4byte sub_08086B74 + thumb_func_end sub_08086C28 + + thumb_func_start sub_08086C3C +sub_08086C3C: @ 0x08086C3C + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r6, r2, #0 + strb r4, [r6] + movs r0, #0 + cmp r4, r1 + bne _08086C4E + movs r0, #1 +_08086C4E: + strb r0, [r6, #1] + ldr r1, _08086CA0 + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r0, [r0, #3] + strb r0, [r6, #2] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08087204 + strb r0, [r6, #3] + mov r5, sp + adds r5, #2 + adds r0, r4, #0 + mov r1, sp + adds r2, r5, #0 + bl sub_080871DC + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, #4] + ldrh r0, [r5] + strh r0, [r6, #6] + adds r0, r4, #0 + bl sub_08087224 + strb r0, [r6, #8] + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + strh r0, [r6, #0xc] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08086CA0: .4byte gUnknown_2031FA8 + thumb_func_end sub_08086C3C + + thumb_func_start sub_08086CA4 +sub_08086CA4: @ 0x08086CA4 + push {lr} + ldrb r0, [r0, #2] + cmp r0, #2 + beq _08086CB0 + cmp r0, #0 + bne _08086CB4 +_08086CB0: + movs r0, #1 + b _08086CB6 +_08086CB4: + movs r0, #0 +_08086CB6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086CA4 + + thumb_func_start sub_08086CBC +sub_08086CBC: @ 0x08086CBC + push {lr} + ldrb r0, [r0, #2] + cmp r0, #2 + beq _08086CC8 + cmp r0, #0 + bne _08086CCC +_08086CC8: + movs r0, #1 + b _08086CCE +_08086CCC: + movs r0, #0 +_08086CCE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086CBC + + thumb_func_start sub_08086CD4 +sub_08086CD4: @ 0x08086CD4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #2] + cmp r0, #2 + bne _08086CE6 + adds r0, r1, #4 + bl sub_0809C9CC + b _08086CE8 +_08086CE6: + movs r0, #0 +_08086CE8: + pop {r1} + bx r1 + thumb_func_end sub_08086CD4 + + thumb_func_start sub_08086CEC +sub_08086CEC: @ 0x08086CEC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _08086CFA + cmp r0, #0 + bne _08086D10 +_08086CFA: + ldrb r0, [r4, #0xc] + bl sub_08088950 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08086D10 + ldrb r0, [r4, #3] + cmp r0, #1 + bne _08086D10 + movs r0, #1 + b _08086D12 +_08086D10: + movs r0, #0 +_08086D12: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08086CEC + + thumb_func_start sub_08086D18 +sub_08086D18: @ 0x08086D18 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _08086D2C + cmp r0, #2 + beq _08086D2C + movs r0, #0 + b _08086DDA +_08086D2C: + ldr r0, [r4, #4] + ldr r1, [r4, #8] + str r0, [sp] + str r1, [sp, #4] + ldr r3, _08086D9C + ldrb r0, [r4, #3] + lsls r0, r0, #3 + adds r0, r0, r3 + ldr r0, [r0] + mov r1, sp + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08086DA0 + ldr r2, [sp] + ands r2, r1 + orrs r2, r0 + str r2, [sp] + asrs r1, r2, #0x10 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + adds r3, #4 + adds r0, r0, r3 + ldr r0, [r0] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, _08086DA4 + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r2, _08086DA8 + ldr r0, [sp, #4] + ands r0, r2 + str r0, [sp, #4] + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + asrs r1, r1, #0x10 + bl sub_08087270 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + cmp r1, #4 + beq _08086DD0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _08086D98 + ldr r0, _08086DAC + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #0x80 + beq _08086DB4 +_08086D98: + ldr r0, _08086DB0 + b _08086DDA + .align 2, 0 +_08086D9C: .4byte gUnknown_830FCB0 +_08086DA0: .4byte 0xFFFF0000 +_08086DA4: .4byte 0x0000FFFF +_08086DA8: .4byte 0xFFFFFF00 +_08086DAC: .4byte gUnknown_3000E10 +_08086DB0: .4byte gUnknown_824717B +_08086DB4: + adds r0, r2, #0 + bl sub_080B3130 + cmp r0, #0 + bne _08086DC8 + ldr r0, _08086DC4 + b _08086DDA + .align 2, 0 +_08086DC4: .4byte gUnknown_824715D +_08086DC8: + ldr r0, _08086DCC + b _08086DDA + .align 2, 0 +_08086DCC: .4byte gUnknown_824716C +_08086DD0: + ldrb r1, [r4, #0xc] + ldrb r2, [r4, #3] + mov r0, sp + bl sub_0809BBA0 +_08086DDA: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086D18 + + thumb_func_start sub_08086DE4 +sub_08086DE4: @ 0x08086DE4 + push {lr} + adds r1, r0, #0 + ldr r0, _08086E30 + cmp r1, r0 + beq _08086E2A + ldr r0, _08086E34 + cmp r1, r0 + beq _08086E6C + ldr r0, _08086E38 + cmp r1, r0 + beq _08086E2A + ldr r0, _08086E3C + cmp r1, r0 + beq _08086E6C + ldr r0, _08086E40 + cmp r1, r0 + beq _08086E2A + ldr r0, _08086E44 + cmp r1, r0 + beq _08086E6C + ldr r0, _08086E48 + cmp r1, r0 + beq _08086E2A + ldr r0, _08086E4C + cmp r1, r0 + beq _08086E6C + ldr r0, _08086E50 + cmp r1, r0 + beq _08086E2A + ldr r0, _08086E54 + cmp r1, r0 + beq _08086E6C + ldr r0, _08086E58 + cmp r1, r0 + bne _08086E5C +_08086E2A: + movs r0, #0xa + b _08086E6E + .align 2, 0 +_08086E30: .4byte gUnknown_8247067 +_08086E34: .4byte gUnknown_8247082 +_08086E38: .4byte gUnknown_824709D +_08086E3C: .4byte gUnknown_82470B8 +_08086E40: .4byte gUnknown_82470FC +_08086E44: .4byte gUnknown_8247111 +_08086E48: .4byte gUnknown_8247126 +_08086E4C: .4byte gUnknown_824713B +_08086E50: .4byte gUnknown_8247053 +_08086E54: .4byte gUnknown_824705D +_08086E58: .4byte gUnknown_82470D4 +_08086E5C: + ldr r0, _08086E68 + cmp r1, r0 + beq _08086E6C + movs r0, #0 + b _08086E6E + .align 2, 0 +_08086E68: .4byte gUnknown_82470DE +_08086E6C: + movs r0, #9 +_08086E6E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086DE4 + + thumb_func_start sub_08086E74 +sub_08086E74: @ 0x08086E74 + push {lr} + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08086E74 + + thumb_func_start sub_08086E80 +sub_08086E80: @ 0x08086E80 + push {lr} + movs r0, #6 + bl sub_080A306C + bl sub_0809F374 + bl sub_080987DC + pop {r0} + bx r0 + thumb_func_end sub_08086E80 + + thumb_func_start sub_08086E94 +sub_08086E94: @ 0x08086E94 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_08098880 + bl sub_080987DC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08086E94 + + thumb_func_start sub_08086EB0 +sub_08086EB0: @ 0x08086EB0 + push {lr} + movs r0, #6 + bl sub_080A306C + ldr r0, _08086EC8 + bl sub_08098880 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_08086EC8: .4byte gUnknown_82471CE + thumb_func_end sub_08086EB0 + + thumb_func_start sub_08086ECC +sub_08086ECC: @ 0x08086ECC + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_08098880 + bl sub_080987DC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08086ECC + + thumb_func_start sub_08086EE8 +sub_08086EE8: @ 0x08086EE8 + push {lr} + ldr r0, _08086EF8 + bl sub_08098880 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_08086EF8: .4byte gUnknown_82471E8 + thumb_func_end sub_08086EE8 + + thumb_func_start sub_08086EFC +sub_08086EFC: @ 0x08086EFC + push {lr} + bl sub_080856F4 + cmp r0, #0 + bne _08086F0A + movs r0, #0 + b _08086F24 +_08086F0A: + bl sub_0800AFB0 + cmp r0, #2 + bls _08086F1C + ldr r1, _08086F18 + movs r0, #1 + b _08086F20 + .align 2, 0 +_08086F18: .4byte gUnknown_3000E18 +_08086F1C: + ldr r1, _08086F28 + movs r0, #0 +_08086F20: + strb r0, [r1] + ldrb r0, [r1] +_08086F24: + pop {r1} + bx r1 + .align 2, 0 +_08086F28: .4byte gUnknown_3000E18 + thumb_func_end sub_08086EFC + + thumb_func_start sub_08086F2C +sub_08086F2C: @ 0x08086F2C + push {lr} + bl sub_0800AFB0 + cmp r0, #1 + bls _08086F90 + bl sub_080856F4 + cmp r0, #1 + bne _08086F90 + bl sub_08009AD4 + cmp r0, #1 + bne _08086F90 + ldr r0, _08086F7C + ldr r1, [r0] + ldr r0, _08086F80 + cmp r1, r0 + beq _08086F78 + ldr r0, _08086F84 + cmp r1, r0 + bne _08086F90 + ldr r0, _08086F88 + ldrb r2, [r0] + movs r1, #0 + strb r1, [r0] + cmp r2, #1 + beq _08086F78 + ldr r2, _08086F8C + ldrb r1, [r2, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08086F90 + ldrb r1, [r2, #0xa] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08086F90 +_08086F78: + movs r0, #1 + b _08086F92 + .align 2, 0 +_08086F7C: .4byte gUnknown_3000E14 +_08086F80: .4byte sub_08086A80 +_08086F84: .4byte sub_08086A5C +_08086F88: .4byte gUnknown_3000E18 +_08086F8C: .4byte gUnknown_2037C74 +_08086F90: + movs r0, #0 +_08086F92: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086F2C + + thumb_func_start sub_08086F98 +sub_08086F98: @ 0x08086F98 + push {lr} + bl sub_08086FF4 + cmp r0, #1 + bls _08086FBC + bl sub_080856F4 + cmp r0, #1 + bne _08086FBC + bl sub_08009AD4 + cmp r0, #1 + bne _08086FBC + ldr r0, _08086FC0 + ldr r1, [r0] + ldr r0, _08086FC4 + cmp r1, r0 + beq _08086FC8 +_08086FBC: + movs r0, #0 + b _08086FCA + .align 2, 0 +_08086FC0: .4byte gUnknown_3000E14 +_08086FC4: .4byte sub_08086AA4 +_08086FC8: + movs r0, #1 +_08086FCA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086F98 + + thumb_func_start sub_08086FD0 +sub_08086FD0: @ 0x08086FD0 + push {lr} + ldr r0, _08086FE8 + ldrb r0, [r0] + cmp r0, #0 + bne _08086FEC + bl sub_08009AD4 + cmp r0, #0 + beq _08086FEC + movs r0, #1 + b _08086FEE + .align 2, 0 +_08086FE8: .4byte gUnknown_300319C +_08086FEC: + movs r0, #0 +_08086FEE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08086FD0 + + thumb_func_start sub_08086FF4 +sub_08086FF4: @ 0x08086FF4 + push {lr} + ldr r0, _08087008 + ldrb r0, [r0] + cmp r0, #0 + bne _08087014 + ldr r0, _0808700C + ldr r1, _08087010 + adds r0, r0, r1 + ldrb r0, [r0] + b _0808701C + .align 2, 0 +_08087008: .4byte gUnknown_300319C +_0808700C: .4byte gUnknown_3003210 +_08087010: .4byte 0x00000339 +_08087014: + ldr r0, _08087020 + ldr r1, _08087024 + adds r0, r0, r1 + ldrb r0, [r0] +_0808701C: + pop {r1} + bx r1 + .align 2, 0 +_08087020: .4byte gUnknown_30050A0 +_08087024: .4byte 0x000008D2 + thumb_func_end sub_08086FF4 + + thumb_func_start sub_08087028 +sub_08087028: @ 0x08087028 + movs r1, #0 + str r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_08087028 + + thumb_func_start sub_08087030 +sub_08087030: @ 0x08087030 + push {lr} + ldr r0, _08087040 + movs r1, #0 + movs r2, #0x10 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_08087040: .4byte gUnknown_2031FA8 + thumb_func_end sub_08087030 + + thumb_func_start sub_08087044 +sub_08087044: @ 0x08087044 + push {lr} + movs r1, #0 + movs r2, #0x24 + bl memset + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08087044 + + thumb_func_start sub_08087054 +sub_08087054: @ 0x08087054 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r1 + mov sl, r2 + mov r8, r3 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r0, sb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + mov r1, sl + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + mov r2, r8 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + bl sub_0808CE64 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r7, #2 + ldr r0, _080870F8 + adds r4, r4, r0 + lsls r5, r6, #3 + adds r5, r5, r6 + lsls r5, r5, #2 + ldr r0, _080870FC + adds r5, r5, r0 + adds r0, r4, #0 + bl sub_08087028 + adds r0, r5, #0 + bl sub_08087044 + movs r2, #0 + movs r1, #1 + movs r0, #1 + strb r0, [r4] + strb r7, [r4, #1] + strb r6, [r4, #2] + strb r2, [r4, #3] + ldrb r0, [r5] + orrs r0, r1 + mov r2, r8 + ands r2, r1 + lsls r2, r2, #1 + movs r1, #3 + rsbs r1, r1, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5] + movs r0, #2 + strb r0, [r5, #0x19] + movs r0, #0x40 + strb r0, [r5, #4] + mov r0, sb + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sb, r0 + mov r1, sl + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov sl, r1 + adds r0, r5, #0 + mov r1, sb + mov r2, sl + bl sub_08087100 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080870F8: .4byte gUnknown_2031FA8 +_080870FC: .4byte gUnknown_2036FF0 + thumb_func_end sub_08087054 + + thumb_func_start sub_08087100 +sub_08087100: @ 0x08087100 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + strh r0, [r4, #0x10] + strh r1, [r4, #0x12] + strh r0, [r4, #0x14] + strh r1, [r4, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r4, #0 + adds r2, #0xc + adds r3, r4, #0 + adds r3, #0xe + bl sub_080929A8 + ldrh r0, [r4, #0xc] + adds r0, #8 + strh r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08096728 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08087100 + + thumb_func_start sub_08087140 +sub_08087140: @ 0x08087140 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r1, _08087168 + lsrs r0, r0, #0x16 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + beq _08087162 + ldrb r0, [r1, #2] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0808716C + adds r1, r1, r0 + strb r2, [r1, #0x19] +_08087162: + pop {r0} + bx r0 + .align 2, 0 +_08087168: .4byte gUnknown_2031FA8 +_0808716C: .4byte gUnknown_2036FF0 + thumb_func_end sub_08087140 + + thumb_func_start sub_08087170 +sub_08087170: @ 0x08087170 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + ldr r1, _080871B0 + adds r5, r0, r1 + ldrb r1, [r5, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080871B4 + adds r4, r0, r1 + ldrb r0, [r4, #4] + cmp r0, #0x40 + beq _0808719C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080871B8 + adds r0, r0, r1 + bl sub_08006E00 +_0808719C: + movs r0, #0 + strb r0, [r5] + ldrb r1, [r4] + subs r0, #2 + ands r0, r1 + strb r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080871B0: .4byte gUnknown_2031FA8 +_080871B4: .4byte gUnknown_2036FF0 +_080871B8: .4byte gUnknown_20205AC + thumb_func_end sub_08087170 + + thumb_func_start sub_080871BC +sub_080871BC: @ 0x080871BC + lsls r0, r0, #0x18 + ldr r1, _080871D4 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080871D8 + adds r0, r0, r1 + ldrb r0, [r0, #4] + bx lr + .align 2, 0 +_080871D4: .4byte gUnknown_2031FA8 +_080871D8: .4byte gUnknown_2036FF0 + thumb_func_end sub_080871BC + + thumb_func_start sub_080871DC +sub_080871DC: @ 0x080871DC + lsls r0, r0, #0x18 + ldr r3, _080871FC + lsrs r0, r0, #0x16 + adds r0, r0, r3 + ldrb r3, [r0, #2] + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r3, _08087200 + adds r0, r0, r3 + ldrh r3, [r0, #0x10] + strh r3, [r1] + ldrh r0, [r0, #0x12] + strh r0, [r2] + bx lr + .align 2, 0 +_080871FC: .4byte gUnknown_2031FA8 +_08087200: .4byte gUnknown_2036FF0 + thumb_func_end sub_080871DC + + thumb_func_start sub_08087204 +sub_08087204: @ 0x08087204 + lsls r0, r0, #0x18 + ldr r1, _0808721C + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08087220 + adds r0, r0, r1 + ldrb r0, [r0, #0x19] + bx lr + .align 2, 0 +_0808721C: .4byte gUnknown_2031FA8 +_08087220: .4byte gUnknown_2036FF0 + thumb_func_end sub_08087204 + + thumb_func_start sub_08087224 +sub_08087224: @ 0x08087224 + lsls r0, r0, #0x18 + ldr r1, _08087240 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08087244 + adds r0, r0, r1 + ldrb r0, [r0, #0xb] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bx lr + .align 2, 0 +_08087240: .4byte gUnknown_2031FA8 +_08087244: .4byte gUnknown_2036FF0 + thumb_func_end sub_08087224 + + thumb_func_start sub_08087248 +sub_08087248: @ 0x08087248 + lsls r0, r0, #0x18 + ldr r1, _08087268 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808726C + adds r0, r0, r1 + adds r0, #0x21 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x10 + subs r0, r0, r1 + bx lr + .align 2, 0 +_08087268: .4byte gUnknown_2031FA8 +_0808726C: .4byte gUnknown_2036FF0 + thumb_func_end sub_08087248 + + thumb_func_start sub_08087270 +sub_08087270: @ 0x08087270 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r5, _080872B4 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r3, r1, #0x10 +_0808727E: + lsls r0, r2, #2 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, #0 + beq _080872BC + ldrb r0, [r1, #3] + cmp r0, #0 + beq _08087292 + cmp r0, #2 + bne _080872BC +_08087292: + ldrb r1, [r1, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080872B8 + adds r1, r0, r1 + movs r6, #0x10 + ldrsh r0, [r1, r6] + cmp r0, r4 + bne _080872BC + movs r6, #0x12 + ldrsh r0, [r1, r6] + cmp r0, r3 + bne _080872BC + adds r0, r2, #0 + b _080872C8 + .align 2, 0 +_080872B4: .4byte gUnknown_2031FA8 +_080872B8: .4byte gUnknown_2036FF0 +_080872BC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0808727E + movs r0, #4 +_080872C8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08087270 + + thumb_func_start sub_080872D0 +sub_080872D0: @ 0x080872D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + adds r2, r3, #0 + lsrs r0, r0, #0x16 + ldr r1, _08087300 + adds r5, r0, r1 + ldrb r1, [r5, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08087304 + adds r6, r0, r1 + ldrb r0, [r5] + cmp r0, #0 + beq _0808732C + cmp r3, #0xa + bls _08087308 + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + strb r0, [r6] + b _0808732C + .align 2, 0 +_08087300: .4byte gUnknown_2031FA8 +_08087304: .4byte gUnknown_2036FF0 +_08087308: + ldr r4, _08087334 + ldr r1, _08087338 + ldrb r0, [r5, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r2, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl _call_via_r2 +_0808732C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08087334: .4byte gUnknown_830FD4C +_08087338: .4byte gUnknown_830FD14 + thumb_func_end sub_080872D0 + + thumb_func_start sub_0808733C +sub_0808733C: @ 0x0808733C + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, _08087358 + lsls r3, r2, #2 + adds r3, r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08087358: .4byte gUnknown_830FD20 + thumb_func_end sub_0808733C + + thumb_func_start sub_0808735C +sub_0808735C: @ 0x0808735C + movs r0, #1 + bx lr + thumb_func_end sub_0808735C + + thumb_func_start sub_08087360 +sub_08087360: @ 0x08087360 + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, _0808737C + lsls r3, r2, #2 + adds r3, r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808737C: .4byte gUnknown_830FD20 + thumb_func_end sub_08087360 + + thumb_func_start sub_08087380 +sub_08087380: @ 0x08087380 + movs r0, #0 + bx lr + thumb_func_end sub_08087380 + + thumb_func_start sub_08087384 +sub_08087384: @ 0x08087384 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r5, #0x19] + bl sub_08087444 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x19] + mov r6, sp + adds r6, #2 + adds r0, r5, #0 + mov r2, sp + adds r3, r6, #0 + bl sub_08092ADC + ldrb r0, [r4, #2] + ldrb r1, [r5, #0x19] + mov r2, sp + movs r3, #0 + ldrsh r2, [r2, r3] + movs r4, #0 + ldrsh r3, [r6, r4] + bl sub_080874A4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080873E2 + 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_0808E454 + adds r0, r5, #0 + bl sub_08096728 + movs r0, #1 + b _080873E4 +_080873E2: + movs r0, #0 +_080873E4: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08087384 + + thumb_func_start sub_080873EC +sub_080873EC: @ 0x080873EC + push {r4, lr} + adds r4, r1, #0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4, #0x19] + bl sub_08087444 + strb r0, [r4, #0x19] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080873EC + + thumb_func_start sub_08087404 +sub_08087404: @ 0x08087404 + movs r1, #0 + strb r1, [r0, #3] + bx lr + .align 2, 0 + thumb_func_end sub_08087404 + + thumb_func_start sub_0808740C +sub_0808740C: @ 0x0808740C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r4, #0 + adds r5, #0x21 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] + movs r0, #1 + strb r0, [r6, #3] + ldrb r0, [r4, #0x19] + adds r1, #0xc + adds r2, r4, #0 + adds r2, #0xe + bl sub_080928AC + ldrb r0, [r5] + cmp r0, #0 + bne _0808743C + adds r0, r4, #0 + bl sub_0808E56C + movs r0, #2 + strb r0, [r6, #3] +_0808743C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808740C + + thumb_func_start sub_08087444 +sub_08087444: @ 0x08087444 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + subs r0, #1 + cmp r0, #9 + bhi _0808749C + lsls r0, r0, #2 + ldr r1, _08087460 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08087460: .4byte _08087464 +_08087464: @ jump table + .4byte _0808748C @ case 0 + .4byte _08087490 @ case 1 + .4byte _08087494 @ case 2 + .4byte _08087498 @ case 3 + .4byte _0808749C @ case 4 + .4byte _0808749C @ case 5 + .4byte _0808748C @ case 6 + .4byte _08087490 @ case 7 + .4byte _08087494 @ case 8 + .4byte _08087498 @ case 9 +_0808748C: + movs r0, #2 + b _0808749E +_08087490: + movs r0, #1 + b _0808749E +_08087494: + movs r0, #3 + b _0808749E +_08087498: + movs r0, #4 + b _0808749E +_0808749C: + adds r0, r2, #0 +_0808749E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08087444 + + thumb_func_start sub_080874A4 +sub_080874A4: @ 0x080874A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov ip, r2 + lsls r3, r3, #0x10 + movs r4, #0 + ldr r0, _08087508 + mov sb, r0 + lsrs r2, r3, #0x10 + mov sl, r2 + asrs r6, r3, #0x10 +_080874C8: + mov r7, ip + lsls r3, r7, #0x10 + mov r0, sl + lsls r5, r0, #0x10 + cmp r4, r8 + beq _0808750C + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + mov r2, sb + adds r1, r0, r2 + movs r7, #0x10 + ldrsh r0, [r1, r7] + asrs r2, r3, #0x10 + cmp r0, r2 + bne _080874F0 + movs r7, #0x12 + ldrsh r0, [r1, r7] + cmp r0, r6 + beq _08087502 +_080874F0: + movs r7, #0x14 + ldrsh r0, [r1, r7] + cmp r0, r2 + bne _0808750C + movs r0, #0x16 + ldrsh r1, [r1, r0] + asrs r0, r5, #0x10 + cmp r1, r0 + bne _0808750C +_08087502: + movs r0, #1 + b _08087522 + .align 2, 0 +_08087508: .4byte gUnknown_2036FF0 +_0808750C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080874C8 + asrs r0, r3, #0x10 + asrs r1, r5, #0x10 + bl sub_08087B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08087522: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080874A4 + + thumb_func_start sub_08087530 +sub_08087530: @ 0x08087530 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r5, #2 + ldr r0, _08087564 + adds r2, r2, r0 + ldrb r1, [r2, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08087568 + adds r4, r0, r1 + ldrb r0, [r2] + cmp r0, #0 + beq _080875DE + subs r0, r3, #1 + cmp r0, #4 + bhi _080875BA + lsls r0, r0, #2 + ldr r1, _0808756C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08087564: .4byte gUnknown_2031FA8 +_08087568: .4byte gUnknown_2036FF0 +_0808756C: .4byte _08087570 +_08087570: @ jump table + .4byte _08087590 @ case 0 + .4byte _08087590 @ case 1 + .4byte _0808759C @ case 2 + .4byte _08087584 @ case 3 + .4byte _08087584 @ case 4 +_08087584: + ldrb r0, [r4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + bl sub_0808B6D0 + b _080875A8 +_08087590: + ldrb r0, [r4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + bl sub_0808B6E0 + b _080875A8 +_0808759C: + ldrb r1, [r4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1f + movs r0, #0 + bl sub_0808B6A0 +_080875A8: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080875E8 + movs r2, #0 + str r2, [sp] + movs r3, #0 + bl sub_0808D6D8 + strb r0, [r4, #4] +_080875BA: + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080875EC + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + strh r5, [r0, #0x2e] + ldrb r1, [r4] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] +_080875DE: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080875E8: .4byte sub_080875F0 +_080875EC: .4byte gUnknown_20205AC + thumb_func_end sub_08087530 + + thumb_func_start sub_080875F0 +sub_080875F0: @ 0x080875F0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r4, [r5, r0] + lsls r4, r4, #2 + ldr r0, _08087654 + adds r4, r4, r0 + ldrb r1, [r4, #2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08087658 + 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, r0, #4 + adds r1, r5, #0 + movs r2, #1 + bl sub_0809677C + ldrb r0, [r6, #0xb] + lsrs r0, r0, #4 + bl sub_08096718 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + ldrb r0, [r4, #3] + cmp r0, #0 + bne _0808765C + ldrb r0, [r6, #0x19] + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + b _0808766E + .align 2, 0 +_08087654: .4byte gUnknown_2031FA8 +_08087658: .4byte gUnknown_2036FF0 +_0808765C: + ldrb r0, [r6, #0x19] + bl sub_080922DC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007ED8 +_0808766E: + adds r0, r5, #0 + movs r1, #0 + bl sub_08097344 + ldrb r0, [r6] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _080876A0 + ldrh r0, [r5, #0x3c] + movs r1, #4 + ands r1, r0 + lsls r1, r1, #0x10 + adds r3, r5, #0 + adds r3, #0x3e + lsrs r1, r1, #0x12 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] +_080876A0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080875F0 + + thumb_func_start sub_080876A8 +sub_080876A8: @ 0x080876A8 + push {lr} + ldrb r2, [r0, #8] + ldrb r1, [r0, #9] + adds r0, r2, #0 + bl sub_080843F8 + pop {r1} + bx r1 + thumb_func_end sub_080876A8 + + thumb_func_start sub_080876B8 +sub_080876B8: @ 0x080876B8 + push {r4, lr} + ldr r4, _080876D4 + adds r0, r4, #0 + bl sub_08087778 + ldr r0, [r4, #4] + bl sub_080E9B6C + bl sub_080989C8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080876D4: .4byte gUnknown_2036FB8 + thumb_func_end sub_080876B8 + + thumb_func_start sub_080876D8 +sub_080876D8: @ 0x080876D8 + push {r4, lr} + ldr r4, _08087708 + adds r0, r4, #0 + bl sub_08087778 + movs r0, #0 + bl sub_080E9EC4 + ldr r0, [r4, #4] + bl sub_080E9B6C + bl sub_08087E00 + bl sub_080989C8 + ldr r1, _0808770C + ldr r0, [r1] + ldr r1, [r1, #4] + bl sub_080ECBE4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08087708: .4byte gUnknown_2036FB8 +_0808770C: .4byte gUnknown_3005B20 + thumb_func_end sub_080876D8 + + thumb_func_start sub_08087710 +sub_08087710: @ 0x08087710 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0808773C + str r0, [sp] + ldr r5, _08087740 + ldr r2, _08087744 + mov r0, sp + adds r1, r5, #0 + bl CpuFastSet + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081A9DF0 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808773C: .4byte 0x03FF03FF +_08087740: .4byte gUnknown_2031FB8 +_08087744: .4byte 0x01001400 + thumb_func_end sub_08087710 + + thumb_func_start sub_08087748 +sub_08087748: @ 0x08087748 + push {r4, lr} + sub sp, #4 + ldr r0, _0808776C + str r0, [sp] + ldr r4, _08087770 + ldr r2, _08087774 + mov r0, sp + adds r1, r4, #0 + bl CpuFastSet + adds r0, r4, #0 + bl sub_081D590C + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808776C: .4byte 0x03FF03FF +_08087770: .4byte gUnknown_2031FB8 +_08087774: .4byte 0x01001400 + thumb_func_end sub_08087748 + + thumb_func_start sub_08087778 +sub_08087778: @ 0x08087778 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r5, [r6] + ldr r0, _080877C4 + str r0, [sp] + ldr r4, _080877C8 + ldr r2, _080877CC + mov r0, sp + adds r1, r4, #0 + bl CpuFastSet + ldr r2, _080877D0 + str r4, [r2, #8] + ldr r1, [r5] + adds r1, #0xf + str r1, [r2] + ldr r0, [r5, #4] + adds r0, #0xe + str r0, [r2, #4] + muls r1, r0, r1 + movs r0, #0xa0 + lsls r0, r0, #6 + cmp r1, r0 + bgt _080877BA + ldr r0, [r5, #0xc] + ldrh r1, [r5] + ldrh r2, [r5, #4] + bl sub_080877D4 + adds r0, r6, #0 + bl sub_0808782C +_080877BA: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080877C4: .4byte 0x03FF03FF +_080877C8: .4byte gUnknown_2031FB8 +_080877CC: .4byte 0x01001400 +_080877D0: .4byte gUnknown_3005B20 + thumb_func_end sub_08087778 + + thumb_func_start sub_080877D4 +sub_080877D4: @ 0x080877D4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _08087828 + ldr r4, [r0, #8] + ldr r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, #0xe + adds r4, r4, r0 + cmp r2, #0 + beq _0808781C + mov r0, r8 + lsls r6, r0, #1 + adds r5, r2, #0 + movs r0, #0x1e + adds r0, r0, r6 + mov sb, r0 +_08087808: + adds r0, r7, #0 + adds r1, r4, #0 + mov r2, r8 + bl CpuSet + add r4, sb + adds r7, r7, r6 + subs r5, #1 + cmp r5, #0 + bne _08087808 +_0808781C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087828: .4byte gUnknown_3005B20 + thumb_func_end sub_080877D4 + + thumb_func_start sub_0808782C +sub_0808782C: @ 0x0808782C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, [r6, #0xc] + cmp r0, #0 + beq _080878B0 + ldr r1, [r0] + ldr r5, [r0, #4] + ldr r2, _08087864 + ldr r0, _08087868 + ldr r0, [r0] + str r0, [r2] + cmp r1, #0 + ble _080878B0 + adds r4, r2, #0 + adds r7, r1, #0 +_0808784A: + adds r0, r5, #0 + bl sub_080876A8 + adds r1, r0, #0 + ldr r2, [r5, #4] + ldrb r0, [r5] + cmp r0, #2 + beq _08087882 + cmp r0, #2 + bgt _0808786C + cmp r0, #1 + beq _08087876 + b _080878A8 + .align 2, 0 +_08087864: .4byte gUnknown_2036FE0 +_08087868: .4byte gUnknown_845F318 +_0808786C: + cmp r0, #3 + beq _0808788E + cmp r0, #4 + beq _0808789A + b _080878A8 +_08087876: + adds r0, r6, #0 + bl sub_0808791C + ldrb r0, [r4] + movs r1, #1 + b _080878A4 +_08087882: + adds r0, r6, #0 + bl sub_08087984 + ldrb r0, [r4] + movs r1, #2 + b _080878A4 +_0808788E: + adds r0, r6, #0 + bl sub_080879E4 + ldrb r0, [r4] + movs r1, #4 + b _080878A4 +_0808789A: + adds r0, r6, #0 + bl sub_08087A44 + ldrb r0, [r4] + movs r1, #8 +_080878A4: + orrs r0, r1 + strb r0, [r4] +_080878A8: + subs r7, #1 + adds r5, #0xc + cmp r7, #0 + bne _0808784A +_080878B0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808782C + + thumb_func_start sub_080878B8 +sub_080878B8: @ 0x080878B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, [sp, #0x18] + ldr r4, [r2] + ldr r7, [r4] + adds r2, r7, #0 + muls r2, r5, r2 + adds r2, r2, r3 + lsls r2, r2, #1 + ldr r3, [r4, #0xc] + adds r6, r3, r2 + ldr r3, _08087914 + ldr r2, [r3] + muls r1, r2, r1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, [r3, #8] + adds r5, r0, r1 + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _0808790A + adds r4, r0, #0 + ldr r3, _08087918 + mov r8, r3 +_080878EA: + adds r0, r6, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x1c] + mov r3, r8 + ands r2, r3 + bl CpuSet + ldr r0, _08087914 + ldr r0, [r0] + lsls r0, r0, #1 + adds r5, r5, r0 + lsls r0, r7, #1 + adds r6, r6, r0 + subs r4, #1 + cmp r4, #0 + bne _080878EA +_0808790A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087914: .4byte gUnknown_3005B20 +_08087918: .4byte 0x001FFFFF + thumb_func_end sub_080878B8 + + thumb_func_start sub_0808791C +sub_0808791C: @ 0x0808791C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r3, r0, #0 + adds r5, r1, #0 + cmp r5, #0 + beq _08087976 + ldr r0, [r5] + ldr r4, [r0] + adds r2, #7 + ldr r0, [r3] + ldr r0, [r0, #4] + adds r7, r0, #7 + cmp r2, #0 + bge _08087950 + rsbs r6, r2, #0 + adds r2, r2, r4 + ldr r0, _0808794C + ldr r3, [r0] + cmp r2, r3 + bge _08087946 + adds r3, r2, #0 +_08087946: + movs r2, #0 + b _08087960 + .align 2, 0 +_0808794C: .4byte gUnknown_3005B20 +_08087950: + movs r6, #0 + adds r0, r2, r4 + ldr r1, _08087980 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _08087960 + adds r3, r4, #0 +_08087960: + movs r0, #0 + str r0, [sp] + str r3, [sp, #4] + movs r0, #7 + str r0, [sp, #8] + adds r0, r2, #0 + adds r1, r7, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080878B8 +_08087976: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087980: .4byte gUnknown_3005B20 + thumb_func_end sub_0808791C + + thumb_func_start sub_08087984 +sub_08087984: @ 0x08087984 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r5, r1, #0 + cmp r5, #0 + beq _080879D8 + ldr r0, [r5] + ldr r4, [r0] + ldr r0, [r0, #4] + adds r2, #7 + subs r7, r0, #7 + cmp r2, #0 + bge _080879B4 + rsbs r6, r2, #0 + adds r2, r2, r4 + ldr r0, _080879B0 + ldr r3, [r0] + cmp r2, r3 + bge _080879AA + adds r3, r2, #0 +_080879AA: + movs r2, #0 + b _080879C4 + .align 2, 0 +_080879B0: .4byte gUnknown_3005B20 +_080879B4: + movs r6, #0 + adds r0, r2, r4 + ldr r1, _080879E0 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _080879C4 + adds r3, r4, #0 +_080879C4: + str r7, [sp] + str r3, [sp, #4] + movs r0, #7 + str r0, [sp, #8] + adds r0, r2, #0 + movs r1, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080878B8 +_080879D8: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080879E0: .4byte gUnknown_3005B20 + thumb_func_end sub_08087984 + + thumb_func_start sub_080879E4 +sub_080879E4: @ 0x080879E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r5, r1, #0 + cmp r5, #0 + beq _08087A38 + ldr r0, [r5] + ldr r1, [r0] + ldr r4, [r0, #4] + adds r2, #7 + subs r7, r1, #7 + cmp r2, #0 + bge _08087A14 + rsbs r6, r2, #0 + adds r1, r2, r4 + ldr r0, _08087A10 + ldr r3, [r0, #4] + cmp r1, r3 + bge _08087A0A + adds r3, r1, #0 +_08087A0A: + movs r2, #0 + b _08087A24 + .align 2, 0 +_08087A10: .4byte gUnknown_3005B20 +_08087A14: + movs r6, #0 + adds r0, r2, r4 + ldr r1, _08087A40 + ldr r1, [r1, #4] + subs r3, r1, r2 + cmp r0, r1 + bge _08087A24 + adds r3, r4, #0 +_08087A24: + str r6, [sp] + movs r0, #7 + str r0, [sp, #4] + str r3, [sp, #8] + movs r0, #0 + adds r1, r2, #0 + adds r2, r5, #0 + adds r3, r7, #0 + bl sub_080878B8 +_08087A38: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087A40: .4byte gUnknown_3005B20 + thumb_func_end sub_080879E4 + + thumb_func_start sub_08087A44 +sub_08087A44: @ 0x08087A44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r3, r0, #0 + adds r5, r1, #0 + cmp r5, #0 + beq _08087A9C + ldr r0, [r5] + ldr r4, [r0, #4] + ldr r0, [r3] + ldr r0, [r0] + adds r7, r0, #7 + adds r2, #7 + cmp r2, #0 + bge _08087A78 + rsbs r6, r2, #0 + adds r1, r2, r4 + ldr r0, _08087A74 + ldr r3, [r0, #4] + cmp r1, r3 + bge _08087A6E + adds r3, r1, #0 +_08087A6E: + movs r2, #0 + b _08087A88 + .align 2, 0 +_08087A74: .4byte gUnknown_3005B20 +_08087A78: + movs r6, #0 + adds r0, r2, r4 + ldr r1, _08087AA4 + ldr r1, [r1, #4] + subs r3, r1, r2 + cmp r0, r1 + bge _08087A88 + adds r3, r4, #0 +_08087A88: + str r6, [sp] + movs r0, #8 + str r0, [sp, #4] + str r3, [sp, #8] + adds r0, r7, #0 + adds r1, r2, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_080878B8 +_08087A9C: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087AA4: .4byte gUnknown_3005B20 + thumb_func_end sub_08087A44 + + thumb_func_start sub_08087AA8 +sub_08087AA8: @ 0x08087AA8 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + cmp r2, #0 + blt _08087AD8 + ldr r1, _08087AD4 + ldr r3, [r1] + cmp r2, r3 + bge _08087AD8 + cmp r4, #0 + blt _08087AD8 + ldr r0, [r1, #4] + cmp r4, r0 + bge _08087AD8 + adds r0, r3, #0 + muls r0, r4, r0 + adds r0, r2, r0 + ldr r1, [r1, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + b _08087AFA + .align 2, 0 +_08087AD4: .4byte gUnknown_3005B20 +_08087AD8: + ldr r0, _08087B04 + ldr r3, [r0] + adds r1, r2, #1 + movs r2, #1 + ands r1, r2 + adds r0, r4, #1 + ands r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r3, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r2, #0xc0 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r1, r0 +_08087AFA: + ldr r0, _08087B08 + cmp r1, r0 + beq _08087B0C + lsrs r0, r1, #0xc + b _08087B0E + .align 2, 0 +_08087B04: .4byte gUnknown_2036FB8 +_08087B08: .4byte 0x000003FF +_08087B0C: + movs r0, #0 +_08087B0E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08087AA8 + + thumb_func_start sub_08087B14 +sub_08087B14: @ 0x08087B14 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + cmp r2, #0 + blt _08087B44 + ldr r1, _08087B40 + ldr r3, [r1] + cmp r2, r3 + bge _08087B44 + cmp r4, #0 + blt _08087B44 + ldr r0, [r1, #4] + cmp r4, r0 + bge _08087B44 + adds r0, r3, #0 + muls r0, r4, r0 + adds r0, r2, r0 + ldr r1, [r1, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + b _08087B66 + .align 2, 0 +_08087B40: .4byte gUnknown_3005B20 +_08087B44: + ldr r0, _08087B78 + ldr r3, [r0] + adds r1, r2, #1 + movs r2, #1 + ands r1, r2 + adds r0, r4, #1 + ands r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r3, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r2, #0xc0 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r1, r0 +_08087B66: + ldr r0, _08087B7C + cmp r1, r0 + beq _08087B80 + movs r0, #0xc0 + lsls r0, r0, #4 + ands r1, r0 + lsrs r0, r1, #0xa + b _08087B82 + .align 2, 0 +_08087B78: .4byte gUnknown_2036FB8 +_08087B7C: .4byte 0x000003FF +_08087B80: + movs r0, #1 +_08087B82: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08087B14 + + thumb_func_start sub_08087B88 +sub_08087B88: @ 0x08087B88 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + cmp r5, #0 + blt _08087BB8 + ldr r1, _08087BB4 + ldr r2, [r1] + cmp r5, r2 + bge _08087BB8 + cmp r6, #0 + blt _08087BB8 + ldr r0, [r1, #4] + cmp r6, r0 + bge _08087BB8 + adds r0, r2, #0 + muls r0, r6, r0 + adds r0, r5, r0 + ldr r1, [r1, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + b _08087BDC + .align 2, 0 +_08087BB4: .4byte gUnknown_3005B20 +_08087BB8: + ldr r0, _08087BE8 + ldr r3, [r0] + adds r1, r5, #1 + movs r2, #1 + ands r1, r2 + adds r0, r6, #1 + ands r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r3, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r2, #0xc0 + lsls r2, r2, #4 + adds r0, r2, #0 + adds r4, r0, #0 + orrs r4, r1 +_08087BDC: + ldr r0, _08087BEC + cmp r4, r0 + beq _08087BF0 + ands r4, r0 + adds r0, r4, #0 + b _08087C14 + .align 2, 0 +_08087BE8: .4byte gUnknown_2036FB8 +_08087BEC: .4byte 0x000003FF +_08087BF0: + ldr r0, _08087C1C + ldr r3, [r0] + adds r1, r5, #1 + movs r2, #1 + ands r1, r2 + adds r0, r6, #1 + ands r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r3, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + movs r2, #0xc0 + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + ands r0, r4 +_08087C14: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08087C1C: .4byte gUnknown_2036FB8 + thumb_func_end sub_08087B88 + + thumb_func_start sub_08087C20 +sub_08087C20: @ 0x08087C20 + push {lr} + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + adds r1, r0, #0 + movs r0, #0xff + ands r0, r1 + pop {r1} + bx r1 + thumb_func_end sub_08087C20 + + thumb_func_start sub_08087C38 +sub_08087C38: @ 0x08087C38 + push {lr} + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + adds r1, r0, #0 + movs r0, #0xf0 + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #0xc + pop {r1} + bx r1 + thumb_func_end sub_08087C38 + + thumb_func_start sub_08087C54 +sub_08087C54: @ 0x08087C54 + push {r4, r5, lr} + adds r3, r0, #0 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + cmp r3, #0 + blt _08087C8C + ldr r2, _08087C94 + ldr r4, [r2] + cmp r3, r4 + bge _08087C8C + cmp r1, #0 + blt _08087C8C + ldr r0, [r2, #4] + cmp r1, r0 + bge _08087C8C + muls r1, r4, r1 + adds r1, r3, r1 + ldr r0, [r2, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #8 + ands r2, r0 + ldr r0, _08087C98 + ands r0, r5 + orrs r2, r0 + strh r2, [r1] +_08087C8C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08087C94: .4byte gUnknown_3005B20 +_08087C98: .4byte 0x00000FFF + thumb_func_end sub_08087C54 + + thumb_func_start sub_08087C9C +sub_08087C9C: @ 0x08087C9C + push {r4, r5, lr} + adds r3, r0, #0 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + cmp r3, #0 + blt _08087CC8 + ldr r2, _08087CD0 + ldr r4, [r2] + cmp r3, r4 + bge _08087CC8 + cmp r1, #0 + blt _08087CC8 + ldr r0, [r2, #4] + cmp r1, r0 + bge _08087CC8 + adds r0, r4, #0 + muls r0, r1, r0 + adds r0, r3, r0 + ldr r1, [r2, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + strh r5, [r0] +_08087CC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08087CD0: .4byte gUnknown_3005B20 + thumb_func_end sub_08087C9C + + thumb_func_start sub_08087CD4 +sub_08087CD4: @ 0x08087CD4 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r3, r2, #0 + ldr r0, _08087CF0 + cmp r2, r0 + bhi _08087CF8 + ldr r0, _08087CF4 + ldr r0, [r0] + ldr r0, [r0, #0x10] + ldr r1, [r0, #0x10] + lsls r0, r2, #1 + b _08087D16 + .align 2, 0 +_08087CF0: .4byte 0x000001FF +_08087CF4: .4byte gUnknown_2036FB8 +_08087CF8: + ldr r0, _08087D04 + cmp r2, r0 + bls _08087D08 + movs r0, #0xff + b _08087D1A + .align 2, 0 +_08087D04: .4byte 0x000003FF +_08087D08: + ldr r0, _08087D20 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r1, [r0, #0x10] + lsls r0, r3, #1 + adds r0, r0, r1 + ldr r1, _08087D24 +_08087D16: + adds r0, r0, r1 + ldrh r0, [r0] +_08087D1A: + pop {r1} + bx r1 + .align 2, 0 +_08087D20: .4byte gUnknown_2036FB8 +_08087D24: .4byte 0xFFFFFC00 + thumb_func_end sub_08087CD4 + + thumb_func_start sub_08087D28 +sub_08087D28: @ 0x08087D28 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _08087D90 + ldr r1, [r0] + adds r4, r1, #0 + adds r4, #0x34 + ldr r0, _08087D94 + ldr r0, [r0] + mov r8, r0 + movs r0, #0 + ldrsh r6, [r1, r0] + movs r2, #2 + ldrsh r0, [r1, r2] + adds r1, r0, #0 + adds r1, #0xe + cmp r0, r1 + bge _08087D84 + mov ip, r1 + ldr r1, _08087D98 + mov sb, r1 + lsls r7, r6, #1 +_08087D56: + adds r1, r6, #0 + adds r3, r1, #0 + adds r3, #0xf + adds r5, r0, #1 + cmp r1, r3 + bge _08087D7E + mov r2, r8 + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #1 + add r0, sb + adds r2, r7, r0 + subs r1, r3, r1 +_08087D70: + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bne _08087D70 +_08087D7E: + adds r0, r5, #0 + cmp r0, ip + blt _08087D56 +_08087D84: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087D90: .4byte gUnknown_3005AEC +_08087D94: .4byte gUnknown_3005B20 +_08087D98: .4byte gUnknown_2031FB8 + thumb_func_end sub_08087D28 + + thumb_func_start sub_08087D9C +sub_08087D9C: @ 0x08087D9C + push {r4, lr} + movs r2, #0 + movs r1, #0 + ldr r0, _08087DC8 + ldr r0, [r0] + adds r3, r0, #0 + adds r3, #0x34 + ldr r4, _08087DCC +_08087DAC: + lsls r0, r1, #1 + adds r0, r3, r0 + ldrh r0, [r0] + orrs r2, r0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + bls _08087DAC + cmp r2, #0 + beq _08087DD0 + movs r0, #0 + b _08087DD2 + .align 2, 0 +_08087DC8: .4byte gUnknown_3005AEC +_08087DCC: .4byte 0x000001FF +_08087DD0: + movs r0, #1 +_08087DD2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08087D9C + + thumb_func_start sub_08087DD8 +sub_08087DD8: @ 0x08087DD8 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r0, _08087DF8 + ldr r1, [r0] + adds r1, #0x34 + ldr r2, _08087DFC + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08087DF8: .4byte gUnknown_3005AEC +_08087DFC: .4byte 0x01000100 + thumb_func_end sub_08087DD8 + + thumb_func_start sub_08087E00 +sub_08087E00: @ 0x08087E00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r4, _08087E48 + ldr r0, [r4] + adds r7, r0, #0 + adds r7, #0x34 + bl sub_08087D9C + cmp r0, #0 + bne _08087F10 + ldr r0, _08087E4C + ldr r0, [r0] + str r0, [sp] + ldr r0, [r4] + movs r2, #0 + ldrsh r1, [r0, r2] + mov sl, r1 + movs r2, #2 + ldrsh r1, [r0, r2] + mov r8, r1 + mov r6, r8 + adds r0, r6, #0 + adds r0, #0xe + cmp r6, r0 + bge _08087EBE +_08087E3A: + cmp r6, r8 + bne _08087E50 + cmp r6, #0 + beq _08087E50 + movs r0, #0 + mov sb, r0 + b _08087E6C + .align 2, 0 +_08087E48: .4byte gUnknown_3005AEC +_08087E4C: .4byte gUnknown_3005B20 +_08087E50: + mov r0, r8 + adds r0, #0xd + movs r1, #0xff + mov sb, r1 + cmp r6, r0 + bne _08087E6C + ldr r0, _08087F20 + ldr r0, [r0] + ldr r0, [r0, #4] + subs r0, #1 + cmp r6, r0 + beq _08087E6C + movs r2, #1 + mov sb, r2 +_08087E6C: + mov r5, sl + adds r0, r5, #0 + adds r0, #0xf + mov r1, r8 + adds r1, #0xe + str r1, [sp, #8] + adds r2, r6, #1 + str r2, [sp, #4] + cmp r5, r0 + bge _08087EB6 + ldr r0, [sp] + lsls r3, r0, #0x10 +_08087E84: + ldr r1, [sp] + adds r0, r1, #0 + muls r0, r6, r0 + adds r0, r5, r0 + lsls r0, r0, #1 + ldr r1, _08087F24 + adds r4, r0, r1 + adds r0, r4, #0 + lsrs r1, r3, #0x10 + mov r2, sb + str r3, [sp, #0xc] + bl sub_08088554 + lsls r0, r0, #0x18 + ldr r3, [sp, #0xc] + cmp r0, #0 + bne _08087EAA + ldrh r0, [r7] + strh r0, [r4] +_08087EAA: + adds r7, #2 + adds r5, #1 + mov r0, sl + adds r0, #0xf + cmp r5, r0 + blt _08087E84 +_08087EB6: + ldr r6, [sp, #4] + ldr r2, [sp, #8] + cmp r6, r2 + blt _08087E3A +_08087EBE: + mov r5, sl + adds r0, r5, #0 + adds r0, #0xf + cmp r5, r0 + bge _08087F0C + mov r0, r8 + subs r0, #1 + lsls r0, r0, #0x10 + mov sb, r0 + lsls r4, r5, #0x10 + mov r0, r8 + adds r0, #0xd + lsls r7, r0, #0x10 +_08087ED8: + mov r0, r8 + cmp r0, #0 + beq _08087EE8 + asrs r0, r4, #0x10 + mov r2, sb + asrs r1, r2, #0x10 + bl sub_080D3ADC +_08087EE8: + ldr r0, _08087F20 + ldr r0, [r0] + ldr r0, [r0, #4] + subs r0, #1 + cmp r6, r0 + bge _08087EFC + asrs r0, r4, #0x10 + asrs r1, r7, #0x10 + bl sub_080D3B58 +_08087EFC: + movs r0, #0x80 + lsls r0, r0, #9 + adds r4, r4, r0 + adds r5, #1 + mov r0, sl + adds r0, #0xf + cmp r5, r0 + blt _08087ED8 +_08087F0C: + bl sub_08087DD8 +_08087F10: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087F20: .4byte gUnknown_2036FB8 +_08087F24: .4byte gUnknown_2031FB8 + thumb_func_end sub_08087E00 + + thumb_func_start sub_08087F28 +sub_08087F28: @ 0x08087F28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r2, r3, #0 + ldr r0, _08087F70 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x34 + str r0, [sp, #4] + ldr r0, _08087F74 + ldr r0, [r0] + str r0, [sp] + movs r4, #0 + mov sb, r4 + mov r8, r4 + movs r0, #0 + ldrsh r6, [r1, r0] + str r6, [sp, #8] + movs r4, #2 + ldrsh r5, [r1, r4] + movs r7, #0xf + movs r6, #0xe + mov ip, r6 + cmp r3, #2 + beq _08087F82 + cmp r3, #2 + bgt _08087F78 + cmp r3, #1 + beq _08087F8A + b _08087FA2 + .align 2, 0 +_08087F70: .4byte gUnknown_3005AEC +_08087F74: .4byte gUnknown_3005B20 +_08087F78: + cmp r2, #3 + beq _08087F94 + cmp r2, #4 + beq _08087F9C + b _08087FA2 +_08087F82: + adds r5, #1 + movs r0, #0xd + mov ip, r0 + b _08087FA2 +_08087F8A: + movs r1, #1 + mov r8, r1 + movs r3, #0xd + mov ip, r3 + b _08087FA2 +_08087F94: + ldr r4, [sp, #8] + adds r4, #1 + str r4, [sp, #8] + b _08087FA0 +_08087F9C: + movs r6, #1 + mov sb, r6 +_08087FA0: + movs r7, #0xe +_08087FA2: + movs r1, #0 + cmp r1, ip + bge _08087FE6 + ldr r0, _08087FFC + mov sl, r0 +_08087FAC: + adds r4, r1, #1 + cmp r7, #0 + beq _08087FE0 + adds r0, r1, r5 + ldr r3, [sp] + adds r2, r3, #0 + muls r2, r0, r2 + add r1, r8 + lsls r0, r1, #4 + subs r0, r0, r1 + add r0, sb + ldr r6, [sp, #8] + adds r2, r6, r2 + adds r3, r7, #0 + lsls r2, r2, #1 + add r2, sl + lsls r0, r0, #1 + ldr r6, [sp, #4] + adds r1, r0, r6 +_08087FD2: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bne _08087FD2 +_08087FE0: + adds r1, r4, #0 + cmp r1, ip + blt _08087FAC +_08087FE6: + bl sub_08087DD8 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08087FFC: .4byte gUnknown_2031FB8 + thumb_func_end sub_08087F28 + + thumb_func_start sub_08088000 +sub_08088000: @ 0x08088000 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + cmp r4, #0 + blt _0808803C + ldr r1, _08088034 + ldr r2, [r1] + cmp r4, r2 + bge _0808803C + cmp r5, #0 + blt _0808803C + ldr r0, [r1, #4] + cmp r5, r0 + bge _0808803C + adds r0, r2, #0 + muls r0, r5, r0 + adds r0, r4, r0 + ldr r1, [r1, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _08088038 + cmp r1, r0 + beq _080880D4 + b _08088064 + .align 2, 0 +_08088034: .4byte gUnknown_3005B20 +_08088038: .4byte 0x000003FF +_0808803C: + ldr r0, _08088080 + ldr r3, [r0] + adds r1, r4, #1 + movs r2, #1 + ands r1, r2 + adds r0, r5, #1 + ands r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r3, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r2, #0xc0 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r0, r1 + ldr r1, _08088084 + cmp r0, r1 + beq _080880D4 +_08088064: + ldr r1, _08088088 + ldr r0, [r1] + subs r0, #8 + cmp r4, r0 + blt _08088090 + ldr r0, _0808808C + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080880D4 + movs r0, #4 + b _080880E6 + .align 2, 0 +_08088080: .4byte gUnknown_2036FB8 +_08088084: .4byte 0x000003FF +_08088088: .4byte gUnknown_3005B20 +_0808808C: .4byte gUnknown_2036FE0 +_08088090: + cmp r4, #6 + bgt _080880A8 + ldr r0, _080880A4 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080880D4 + movs r0, #3 + b _080880E6 + .align 2, 0 +_080880A4: .4byte gUnknown_2036FE0 +_080880A8: + ldr r0, [r1, #4] + subs r0, #7 + cmp r5, r0 + blt _080880C4 + ldr r0, _080880C0 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080880D4 + movs r0, #1 + b _080880E6 + .align 2, 0 +_080880C0: .4byte gUnknown_2036FE0 +_080880C4: + cmp r5, #6 + bgt _080880E4 + ldr r0, _080880DC + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080880E0 +_080880D4: + movs r0, #1 + rsbs r0, r0, #0 + b _080880E6 + .align 2, 0 +_080880DC: .4byte gUnknown_2036FE0 +_080880E0: + movs r0, #2 + b _080880E6 +_080880E4: + movs r0, #0 +_080880E6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08088000 + + thumb_func_start sub_080880EC +sub_080880EC: @ 0x080880EC + push {r4, lr} + adds r3, r1, #0 + ldr r1, _08088110 + ldr r1, [r1] + movs r4, #0 + ldrsh r2, [r1, r4] + adds r0, #7 + adds r2, r2, r0 + movs r0, #2 + ldrsh r1, [r1, r0] + adds r3, #7 + adds r1, r1, r3 + adds r0, r2, #0 + bl sub_08088000 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08088110: .4byte gUnknown_3005AEC + thumb_func_end sub_080880EC + + thumb_func_start sub_08088114 +sub_08088114: @ 0x08088114 + push {r4, r5, lr} + ldr r1, _0808814C + ldr r4, [r1] + movs r1, #0 + ldrsh r3, [r4, r1] + ldr r2, _08088150 + lsls r0, r0, #3 + adds r1, r0, r2 + ldr r1, [r1] + adds r1, #7 + adds r3, r3, r1 + movs r5, #2 + ldrsh r1, [r4, r5] + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + adds r0, #7 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08088000 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _08088154 + movs r0, #1 + b _08088156 + .align 2, 0 +_0808814C: .4byte gUnknown_3005AEC +_08088150: .4byte gUnknown_830FCB0 +_08088154: + movs r0, #0 +_08088156: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08088114 + + thumb_func_start sub_0808815C +sub_0808815C: @ 0x0808815C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + bl sub_080876A8 + adds r3, r0, #0 + cmp r4, #2 + beq _080881C4 + cmp r4, #2 + bgt _0808817A + cmp r4, #1 + beq _080881B0 + b _080881D6 +_0808817A: + cmp r4, #3 + beq _08088198 + cmp r4, #4 + bne _080881D6 + ldr r0, _08088194 + ldr r1, [r0] + rsbs r0, r6, #0 + strh r0, [r1] + ldr r2, [r5, #4] + ldrh r0, [r1, #2] + subs r0, r0, r2 + b _080881D4 + .align 2, 0 +_08088194: .4byte gUnknown_3005AEC +_08088198: + ldr r0, _080881AC + ldr r1, [r0] + ldr r0, [r3] + ldr r0, [r0] + strh r0, [r1] + ldr r2, [r5, #4] + ldrh r0, [r1, #2] + subs r0, r0, r2 + b _080881D4 + .align 2, 0 +_080881AC: .4byte gUnknown_3005AEC +_080881B0: + ldr r0, _080881C0 + ldr r1, [r0] + ldr r2, [r5, #4] + ldrh r0, [r1] + subs r0, r0, r2 + strh r0, [r1] + rsbs r0, r7, #0 + b _080881D4 + .align 2, 0 +_080881C0: .4byte gUnknown_3005AEC +_080881C4: + ldr r0, _080881DC + ldr r1, [r0] + ldr r2, [r5, #4] + ldrh r0, [r1] + subs r0, r0, r2 + strh r0, [r1] + ldr r0, [r3] + ldr r0, [r0, #4] +_080881D4: + strh r0, [r1, #2] +_080881D6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080881DC: .4byte gUnknown_3005AEC + thumb_func_end sub_0808815C + + thumb_func_start sub_080881E0 +sub_080881E0: @ 0x080881E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov sb, r1 + ldr r1, _08088220 + ldrb r0, [r1] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r0 + ldr r2, _08088220 + strb r1, [r2] + mov r0, sl + mov r1, sb + bl sub_080880EC + adds r7, r0, #0 + adds r0, r7, #1 + cmp r0, #1 + bhi _08088228 + ldr r0, _08088224 + ldr r1, [r0] + ldrh r0, [r1] + add r0, sl + strh r0, [r1] + ldrh r0, [r1, #2] + add r0, sb + strh r0, [r1, #2] + b _08088296 + .align 2, 0 +_08088220: .4byte gUnknown_2036FD4 +_08088224: .4byte gUnknown_3005AEC +_08088228: + bl sub_08087D28 + bl sub_081BE3C8 + ldr r1, _080882AC + ldr r0, [r1] + movs r2, #0 + ldrsh r5, [r0, r2] + movs r1, #2 + ldrsh r6, [r0, r1] + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + mov r0, r8 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080882B4 + adds r4, r0, #0 + adds r1, r7, #0 + mov r2, sl + mov r3, sb + bl sub_0808815C + ldrb r0, [r4, #8] + ldrb r1, [r4, #9] + bl sub_08084A00 + ldr r1, _080882B0 + ldrb r0, [r1] + movs r1, #1 + orrs r0, r1 + ldr r2, _080882B0 + strb r0, [r2] + ldr r0, _080882AC + ldr r1, [r0] + movs r2, #0 + ldrsh r0, [r1, r2] + subs r5, r5, r0 + ldr r0, _080882B0 + str r5, [r0, #4] + movs r2, #2 + ldrsh r0, [r1, r2] + subs r6, r6, r0 + ldr r0, _080882B0 + str r6, [r0, #8] + ldrh r0, [r1] + add r0, sl + strh r0, [r1] + ldrh r0, [r1, #2] + add r0, sb + strh r0, [r1, #2] + mov r0, r8 + bl sub_08087F28 +_08088296: + ldr r0, _080882B0 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080882AC: .4byte gUnknown_3005AEC +_080882B0: .4byte gUnknown_2036FD4 + thumb_func_end sub_080881E0 + + thumb_func_start sub_080882B4 +sub_080882B4: @ 0x080882B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r1 + mov r8, r2 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080882F0 + ldr r0, [r0, #0xc] + ldr r7, [r0] + ldr r4, [r0, #4] + movs r5, #0 + cmp r5, r7 + bge _080882FC +_080882D2: + ldrb r0, [r4] + cmp r0, r6 + bne _080882F4 + adds r0, r6, #0 + mov r1, sb + mov r2, r8 + adds r3, r4, #0 + bl sub_0808830C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080882F4 + adds r0, r4, #0 + b _080882FE + .align 2, 0 +_080882F0: .4byte gUnknown_2036FB8 +_080882F4: + adds r5, #1 + adds r4, #0xc + cmp r5, r7 + blt _080882D2 +_080882FC: + movs r0, #0 +_080882FE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080882B4 + + thumb_func_start sub_0808830C +sub_0808830C: @ 0x0808830C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r1, #0 + mov r8, r2 + adds r5, r3, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + adds r0, r5, #0 + bl sub_080876A8 + adds r2, r0, #0 + cmp r4, #1 + blt _08088364 + cmp r4, #2 + bgt _08088344 + ldr r0, _08088340 + ldr r0, [r0] + ldr r1, [r0] + ldr r0, [r2] + ldr r2, [r0] + ldr r3, [r5, #4] + adds r0, r7, #0 + b _08088356 + .align 2, 0 +_08088340: .4byte gUnknown_2036FB8 +_08088344: + cmp r6, #4 + bgt _08088364 + ldr r0, _08088360 + ldr r0, [r0] + ldr r1, [r0, #4] + ldr r0, [r2] + ldr r2, [r0, #4] + ldr r3, [r5, #4] + mov r0, r8 +_08088356: + bl sub_08088370 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08088366 + .align 2, 0 +_08088360: .4byte gUnknown_2036FB8 +_08088364: + movs r0, #0 +_08088366: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808830C + + thumb_func_start sub_08088370 +sub_08088370: @ 0x08088370 + push {r4, lr} + adds r4, r0, #0 + adds r0, r2, #0 + adds r2, r3, #0 + cmp r3, #0 + bge _0808837E + movs r3, #0 +_0808837E: + adds r2, r0, r2 + cmp r2, r1 + bge _08088386 + adds r1, r2, #0 +_08088386: + cmp r3, r4 + bgt _08088392 + cmp r4, r1 + bgt _08088392 + movs r0, #1 + b _08088394 +_08088392: + movs r0, #0 +_08088394: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088370 + + thumb_func_start sub_0808839C +sub_0808839C: @ 0x0808839C + push {lr} + cmp r0, #0 + blt _080883AA + cmp r0, r1 + bge _080883AA + movs r0, #1 + b _080883AC +_080883AA: + movs r0, #0 +_080883AC: + pop {r1} + bx r1 + thumb_func_end sub_0808839C + + thumb_func_start sub_080883B0 +sub_080883B0: @ 0x080883B0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_080876A8 + adds r1, r0, #0 + ldrb r0, [r4] + cmp r0, #1 + blt _080883E8 + cmp r0, #2 + bgt _080883D6 + ldr r0, [r4, #4] + subs r0, r5, r0 + ldr r1, [r1] + ldr r1, [r1] + bl sub_0808839C + b _080883EA +_080883D6: + cmp r0, #4 + bgt _080883E8 + ldr r0, [r4, #4] + subs r0, r6, r0 + ldr r1, [r1] + ldr r1, [r1, #4] + bl sub_0808839C + b _080883EA +_080883E8: + movs r0, #0 +_080883EA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080883B0 + + thumb_func_start sub_080883F0 +sub_080883F0: @ 0x080883F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _08088410 + ldr r0, [r2, #0xc] + cmp r0, #0 + bne _08088418 + b _0808848E + .align 2, 0 +_08088410: .4byte gUnknown_2036FB8 +_08088414: + adds r0, r4, #0 + b _08088490 +_08088418: + ldr r7, [r0] + ldr r4, [r0, #4] + movs r6, #0 + cmp r6, r7 + bge _0808848E + lsls r0, r1, #0x10 + asrs r5, r0, #0x10 + mov sb, r2 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 +_08088430: + ldrb r1, [r4] + adds r3, r1, #0 + subs r0, r1, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08088486 + cmp r1, #2 + bne _08088446 + cmp r5, #6 + bgt _08088486 +_08088446: + cmp r1, #1 + bne _08088456 + mov r2, sb + ldr r0, [r2] + ldr r0, [r0, #4] + adds r0, #7 + cmp r5, r0 + blt _08088486 +_08088456: + mov r0, r8 + lsls r2, r0, #0x10 + cmp r1, #3 + bne _08088464 + mov r1, sl + cmp r1, #6 + bgt _08088486 +_08088464: + cmp r3, #4 + bne _08088476 + asrs r1, r2, #0x10 + mov r3, sb + ldr r0, [r3] + ldr r0, [r0] + adds r0, #7 + cmp r1, r0 + blt _08088486 +_08088476: + asrs r1, r2, #0x10 + subs r1, #7 + adds r0, r4, #0 + subs r2, r5, #7 + bl sub_080883B0 + cmp r0, #1 + beq _08088414 +_08088486: + adds r6, #1 + adds r4, #0xc + cmp r6, r7 + blt _08088430 +_0808848E: + movs r0, #0 +_08088490: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080883F0 + + thumb_func_start sub_080884A0 +sub_080884A0: @ 0x080884A0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _080884B8 + ldr r2, [r2] + subs r0, #7 + strh r0, [r2] + subs r1, #7 + strh r1, [r2, #2] + bx lr + .align 2, 0 +_080884B8: .4byte gUnknown_3005AEC + thumb_func_end sub_080884A0 + + thumb_func_start sub_080884BC +sub_080884BC: @ 0x080884BC + ldr r2, _080884D0 + ldr r3, [r2] + ldrh r2, [r3] + adds r2, #7 + strh r2, [r0] + ldrh r0, [r3, #2] + adds r0, #7 + strh r0, [r1] + bx lr + .align 2, 0 +_080884D0: .4byte gUnknown_3005AEC + thumb_func_end sub_080884BC + + thumb_func_start sub_080884D4 +sub_080884D4: @ 0x080884D4 + ldr r2, _080884E0 + ldr r2, [r2] + strh r0, [r2] + strh r1, [r2, #2] + bx lr + .align 2, 0 +_080884E0: .4byte gUnknown_3005AEC + thumb_func_end sub_080884D4 + + thumb_func_start sub_080884E4 +sub_080884E4: @ 0x080884E4 + ldr r2, _080884F4 + ldr r3, [r2] + ldrh r2, [r3] + strh r2, [r0] + ldrh r0, [r3, #2] + strh r0, [r1] + bx lr + .align 2, 0 +_080884F4: .4byte gUnknown_3005AEC + thumb_func_end sub_080884E4 + + thumb_func_start sub_080884F8 +sub_080884F8: @ 0x080884F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r5, r2, #0 + cmp r4, #0 + blt _0808854A + ldr r2, _08088534 + ldr r1, [r2] + cmp r4, r1 + bge _0808854A + cmp r3, #0 + blt _0808854A + ldr r0, [r2, #4] + cmp r3, r0 + bge _0808854A + cmp r5, #0 + beq _08088538 + adds r0, r1, #0 + muls r0, r3, r0 + adds r0, r4, r0 + ldr r1, [r2, #8] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r3, #0xc0 + lsls r3, r3, #4 + adds r2, r3, #0 + orrs r1, r2 + strh r1, [r0] + b _0808854A + .align 2, 0 +_08088534: .4byte gUnknown_3005B20 +_08088538: + muls r1, r3, r1 + adds r1, r4, r1 + ldr r0, [r2, #8] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r2, [r1] + ldr r0, _08088550 + ands r0, r2 + strh r0, [r1] +_0808854A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08088550: .4byte 0x0000F3FF + thumb_func_end sub_080884F8 + + thumb_func_start sub_08088554 +sub_08088554: @ 0x08088554 + push {lr} + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + adds r1, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #0xff + beq _08088588 + cmp r2, #0 + bne _08088570 + lsls r0, r0, #1 + subs r3, r3, r0 + b _08088574 +_08088570: + lsls r0, r1, #1 + adds r3, r3, r0 +_08088574: + ldrh r1, [r3] + ldr r0, _0808858C + ands r0, r1 + adds r1, r2, #0 + bl sub_080FB654 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08088590 +_08088588: + movs r0, #0 + b _08088592 + .align 2, 0 +_0808858C: .4byte 0x000003FF +_08088590: + movs r0, #1 +_08088592: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088554 + + thumb_func_start sub_08088598 +sub_08088598: @ 0x08088598 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r6, r4, #0 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + adds r7, r5, #0 + cmp r3, #0 + beq _080885D4 + ldrb r0, [r3] + cmp r0, #0 + bne _080885C4 + ldr r1, [r3, #4] + lsls r2, r4, #0x15 + lsrs r2, r2, #0x10 + movs r0, #2 + adds r3, r5, #0 + bl sub_0800195C + b _080885D4 +_080885C4: + ldr r1, [r3, #4] + lsls r2, r6, #5 + movs r0, #0 + str r0, [sp] + movs r0, #2 + adds r3, r7, #0 + bl sub_08199728 +_080885D4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08088598 + + thumb_func_start sub_080885DC +sub_080885DC: @ 0x080885DC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r6, r4, #0 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + adds r7, r5, #0 + cmp r3, #0 + beq _08088618 + ldrb r0, [r3] + cmp r0, #0 + bne _08088608 + ldr r1, [r3, #4] + lsls r2, r4, #0x15 + lsrs r2, r2, #0x10 + movs r0, #2 + adds r3, r5, #0 + bl sub_0800195C + b _08088618 +_08088608: + ldr r1, [r3, #4] + lsls r2, r6, #5 + movs r0, #0 + str r0, [sp] + movs r0, #2 + adds r3, r7, #0 + bl sub_081997A0 +_08088618: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080885DC + + thumb_func_start sub_08088620 +sub_08088620: @ 0x08088620 + bx lr + .align 2, 0 + thumb_func_end sub_08088620 + + thumb_func_start sub_08088624 +sub_08088624: @ 0x08088624 + bx lr + .align 2, 0 + thumb_func_end sub_08088624 + + thumb_func_start sub_08088628 +sub_08088628: @ 0x08088628 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + mov r8, r5 + lsls r6, r2, #0x10 + lsrs r7, r6, #0x10 + adds r2, r7, #0 + movs r1, #0 + mov r0, sp + strh r1, [r0] + cmp r4, #0 + beq _080886A6 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0808867C + mov r0, sp + adds r1, r5, #0 + movs r2, #2 + bl sub_080A1200 + ldr r0, [r4, #8] + adds r0, #2 + adds r5, #1 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + subs r4, r7, #2 + lsls r2, r4, #0x10 + lsrs r2, r2, #0x10 + adds r1, r5, #0 + bl sub_080A1200 + lsls r4, r4, #0xf + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08088620 + b _080886A6 +_0808867C: + cmp r0, #1 + bne _08088696 + ldr r0, [r4, #8] + adds r0, #0xc0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_080A1200 + lsrs r1, r6, #0x11 + adds r0, r5, #0 + bl sub_08088620 + b _080886A6 +_08088696: + ldr r0, [r4, #8] + mov r1, r8 + bl sub_080A11BC + lsrs r1, r6, #0x11 + mov r0, r8 + bl sub_08088620 +_080886A6: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08088628 + + thumb_func_start sub_080886B4 +sub_080886B4: @ 0x080886B4 + push {lr} + ldr r0, [r0, #0x10] + movs r1, #0x80 + lsls r1, r1, #2 + movs r2, #0 + bl sub_08088598 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080886B4 + + thumb_func_start sub_080886C8 +sub_080886C8: @ 0x080886C8 + push {lr} + ldr r0, [r0, #0x14] + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r2, #0 + bl sub_08088598 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080886C8 + + thumb_func_start sub_080886DC +sub_080886DC: @ 0x080886DC + push {lr} + ldr r0, [r0, #0x14] + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r2, #0 + bl sub_080885DC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080886DC + + thumb_func_start sub_080886F0 +sub_080886F0: @ 0x080886F0 + push {lr} + ldr r0, [r0, #0x10] + movs r1, #0 + movs r2, #0xc0 + bl sub_08088628 + pop {r0} + bx r0 + thumb_func_end sub_080886F0 + + thumb_func_start sub_08088700 +sub_08088700: @ 0x08088700 + push {lr} + ldr r0, [r0, #0x14] + movs r1, #0x60 + movs r2, #0xe0 + bl sub_08088628 + pop {r0} + bx r0 + thumb_func_end sub_08088700 + + thumb_func_start sub_08088710 +sub_08088710: @ 0x08088710 + push {r4, r5, lr} + adds r5, r0, #0 + cmp r5, #0 + beq _08088730 + ldr r0, [r5, #0x10] + movs r4, #0x80 + lsls r4, r4, #2 + adds r1, r4, #0 + movs r2, #0 + bl sub_080885DC + ldr r0, [r5, #0x14] + adds r1, r4, #0 + adds r2, r4, #0 + bl sub_080885DC +_08088730: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08088710 + + thumb_func_start sub_08088738 +sub_08088738: @ 0x08088738 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0808874A + bl sub_080886F0 + adds r0, r4, #0 + bl sub_08088700 +_0808874A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08088738 + + thumb_func_start sub_08088750 +sub_08088750: @ 0x08088750 + movs r0, #1 + bx lr + thumb_func_end sub_08088750 + + thumb_func_start sub_08088754 +sub_08088754: @ 0x08088754 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808876C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08088770 + movs r0, #0 + b _08088772 + .align 2, 0 +_0808876C: .4byte gUnknown_845F31C +_08088770: + movs r0, #1 +_08088772: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088754 + + thumb_func_start sub_08088778 +sub_08088778: @ 0x08088778 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x38 + beq _08088786 + movs r0, #0 + b _08088788 +_08088786: + movs r0, #1 +_08088788: + pop {r1} + bx r1 + thumb_func_end sub_08088778 + + thumb_func_start sub_0808878C +sub_0808878C: @ 0x0808878C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x39 + beq _0808879A + movs r0, #0 + b _0808879C +_0808879A: + movs r0, #1 +_0808879C: + pop {r1} + bx r1 + thumb_func_end sub_0808878C + + thumb_func_start sub_080887A0 +sub_080887A0: @ 0x080887A0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3a + beq _080887AE + movs r0, #0 + b _080887B0 +_080887AE: + movs r0, #1 +_080887B0: + pop {r1} + bx r1 + thumb_func_end sub_080887A0 + + thumb_func_start sub_080887B4 +sub_080887B4: @ 0x080887B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + beq _080887C2 + movs r0, #0 + b _080887C4 +_080887C2: + movs r0, #1 +_080887C4: + pop {r1} + bx r1 + thumb_func_end sub_080887B4 + + thumb_func_start sub_080887C8 +sub_080887C8: @ 0x080887C8 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0xfe + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080887DC + movs r0, #0 + b _080887DE +_080887DC: + movs r0, #1 +_080887DE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080887C8 + + thumb_func_start sub_080887E4 +sub_080887E4: @ 0x080887E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x21 + beq _080887F2 + cmp r0, #6 + bne _080887F6 +_080887F2: + movs r0, #1 + b _080887F8 +_080887F6: + movs r0, #0 +_080887F8: + pop {r1} + bx r1 + thumb_func_end sub_080887E4 + + thumb_func_start sub_080887FC +sub_080887FC: @ 0x080887FC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + beq _0808880A + movs r0, #0 + b _0808880C +_0808880A: + movs r0, #1 +_0808880C: + pop {r1} + bx r1 + thumb_func_end sub_080887FC + + thumb_func_start sub_08088810 +sub_08088810: @ 0x08088810 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0808882E + cmp r0, #0x16 + beq _0808882E + cmp r0, #0x1a + beq _0808882E + cmp r0, #0x20 + beq _0808882E + cmp r0, #0x14 + beq _0808882E + cmp r0, #0x2b + bne _08088832 +_0808882E: + movs r0, #1 + b _08088834 +_08088832: + movs r0, #0 +_08088834: + pop {r1} + bx r1 + thumb_func_end sub_08088810 + + thumb_func_start sub_08088838 +sub_08088838: @ 0x08088838 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + beq _08088846 + movs r0, #0 + b _08088848 +_08088846: + movs r0, #1 +_08088848: + pop {r1} + bx r1 + thumb_func_end sub_08088838 + + thumb_func_start sub_0808884C +sub_0808884C: @ 0x0808884C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x69 + beq _0808885A + movs r0, #0 + b _0808885C +_0808885A: + movs r0, #1 +_0808885C: + pop {r1} + bx r1 + thumb_func_end sub_0808884C + + thumb_func_start sub_08088860 +sub_08088860: @ 0x08088860 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8d + beq _0808886E + cmp r0, #0x69 + bne _08088872 +_0808886E: + movs r0, #1 + b _08088874 +_08088872: + movs r0, #0 +_08088874: + pop {r1} + bx r1 + thumb_func_end sub_08088860 + + thumb_func_start sub_08088878 +sub_08088878: @ 0x08088878 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0x96 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0808888C + movs r0, #0 + b _0808888E +_0808888C: + movs r0, #1 +_0808888E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088878 + + thumb_func_start sub_08088894 +sub_08088894: @ 0x08088894 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _080888A2 + movs r0, #0 + b _080888A4 +_080888A2: + movs r0, #1 +_080888A4: + pop {r1} + bx r1 + thumb_func_end sub_08088894 + + thumb_func_start sub_080888A8 +sub_080888A8: @ 0x080888A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x61 + beq _080888B6 + movs r0, #0 + b _080888B8 +_080888B6: + movs r0, #1 +_080888B8: + pop {r1} + bx r1 + thumb_func_end sub_080888A8 + + thumb_func_start sub_080888BC +sub_080888BC: @ 0x080888BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x60 + beq _080888CE + cmp r0, #0x6c + beq _080888CE + cmp r0, #0x6e + bne _080888D2 +_080888CE: + movs r0, #1 + b _080888D4 +_080888D2: + movs r0, #0 +_080888D4: + pop {r1} + bx r1 + thumb_func_end sub_080888BC + + thumb_func_start sub_080888D8 +sub_080888D8: @ 0x080888D8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x6e + beq _080888E6 + movs r0, #0 + b _080888E8 +_080888E6: + movs r0, #1 +_080888E8: + pop {r1} + bx r1 + thumb_func_end sub_080888D8 + + thumb_func_start sub_080888EC +sub_080888EC: @ 0x080888EC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08088904 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08088908 + movs r0, #0 + b _0808890A + .align 2, 0 +_08088904: .4byte gUnknown_845F31C +_08088908: + movs r0, #1 +_0808890A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080888EC + + thumb_func_start sub_08088910 +sub_08088910: @ 0x08088910 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x62 + beq _0808891E + movs r0, #0 + b _08088920 +_0808891E: + movs r0, #1 +_08088920: + pop {r1} + bx r1 + thumb_func_end sub_08088910 + + thumb_func_start sub_08088924 +sub_08088924: @ 0x08088924 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + beq _08088932 + movs r0, #0 + b _08088934 +_08088932: + movs r0, #1 +_08088934: + pop {r1} + bx r1 + thumb_func_end sub_08088924 + + thumb_func_start sub_08088938 +sub_08088938: @ 0x08088938 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x64 + beq _08088946 + cmp r0, #0x1b + bne _0808894A +_08088946: + movs r0, #1 + b _0808894C +_0808894A: + movs r0, #0 +_0808894C: + pop {r1} + bx r1 + thumb_func_end sub_08088938 + + thumb_func_start sub_08088950 +sub_08088950: @ 0x08088950 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x65 + beq _08088962 + cmp r0, #0x6d + beq _08088962 + cmp r0, #0x1c + bne _08088966 +_08088962: + movs r0, #1 + b _08088968 +_08088966: + movs r0, #0 +_08088968: + pop {r1} + bx r1 + thumb_func_end sub_08088950 + + thumb_func_start sub_0808896C +sub_0808896C: @ 0x0808896C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + adds r0, r4, #0 + bl sub_08088910 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080889A4 + adds r0, r4, #0 + bl sub_08088924 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080889A4 + adds r0, r4, #0 + bl sub_08088938 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080889A4 + adds r0, r4, #0 + bl sub_08088950 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080889A6 +_080889A4: + movs r5, #1 +_080889A6: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808896C + + thumb_func_start sub_080889B0 +sub_080889B0: @ 0x080889B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xc0 + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _080889E6 + adds r0, r1, #0 + subs r0, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _080889E6 + cmp r1, #0xd0 + beq _080889E6 + cmp r1, #0xd2 + beq _080889E6 + cmp r1, #0x13 + beq _080889E6 + cmp r1, #0x20 + beq _080889E6 + cmp r1, #0xbb + beq _080889E6 + cmp r1, #0xbc + bne _080889EA +_080889E6: + movs r0, #1 + b _080889EC +_080889EA: + movs r0, #0 +_080889EC: + pop {r1} + bx r1 + thumb_func_end sub_080889B0 + + thumb_func_start sub_080889F0 +sub_080889F0: @ 0x080889F0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + beq _080889FE + movs r0, #0 + b _08088A00 +_080889FE: + movs r0, #1 +_08088A00: + pop {r1} + bx r1 + thumb_func_end sub_080889F0 + + thumb_func_start sub_08088A04 +sub_08088A04: @ 0x08088A04 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x48 + beq _08088A12 + movs r0, #0 + b _08088A14 +_08088A12: + movs r0, #1 +_08088A14: + pop {r1} + bx r1 + thumb_func_end sub_08088A04 + + thumb_func_start sub_08088A18 +sub_08088A18: @ 0x08088A18 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + beq _08088A26 + movs r0, #0 + b _08088A28 +_08088A26: + movs r0, #1 +_08088A28: + pop {r1} + bx r1 + thumb_func_end sub_08088A18 + + thumb_func_start sub_08088A2C +sub_08088A2C: @ 0x08088A2C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x42 + beq _08088A3A + movs r0, #0 + b _08088A3C +_08088A3A: + movs r0, #1 +_08088A3C: + pop {r1} + bx r1 + thumb_func_end sub_08088A2C + + thumb_func_start sub_08088A40 +sub_08088A40: @ 0x08088A40 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x43 + beq _08088A4E + movs r0, #0 + b _08088A50 +_08088A4E: + movs r0, #1 +_08088A50: + pop {r1} + bx r1 + thumb_func_end sub_08088A40 + + thumb_func_start sub_08088A54 +sub_08088A54: @ 0x08088A54 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x41 + beq _08088A62 + movs r0, #0 + b _08088A64 +_08088A62: + movs r0, #1 +_08088A64: + pop {r1} + bx r1 + thumb_func_end sub_08088A54 + + thumb_func_start sub_08088A68 +sub_08088A68: @ 0x08088A68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08088A76 + movs r0, #0 + b _08088A78 +_08088A76: + movs r0, #1 +_08088A78: + pop {r1} + bx r1 + thumb_func_end sub_08088A68 + + thumb_func_start sub_08088A7C +sub_08088A7C: @ 0x08088A7C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x52 + beq _08088A8A + movs r0, #0 + b _08088A8C +_08088A8A: + movs r0, #1 +_08088A8C: + pop {r1} + bx r1 + thumb_func_end sub_08088A7C + + thumb_func_start sub_08088A90 +sub_08088A90: @ 0x08088A90 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x53 + beq _08088A9E + movs r0, #0 + b _08088AA0 +_08088A9E: + movs r0, #1 +_08088AA0: + pop {r1} + bx r1 + thumb_func_end sub_08088A90 + + thumb_func_start sub_08088AA4 +sub_08088AA4: @ 0x08088AA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x51 + beq _08088AB2 + movs r0, #0 + b _08088AB4 +_08088AB2: + movs r0, #1 +_08088AB4: + pop {r1} + bx r1 + thumb_func_end sub_08088AA4 + + thumb_func_start sub_08088AB8 +sub_08088AB8: @ 0x08088AB8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x50 + beq _08088AC6 + movs r0, #0 + b _08088AC8 +_08088AC6: + movs r0, #1 +_08088AC8: + pop {r1} + bx r1 + thumb_func_end sub_08088AB8 + + thumb_func_start sub_08088ACC +sub_08088ACC: @ 0x08088ACC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x46 + beq _08088ADA + movs r0, #0 + b _08088ADC +_08088ADA: + movs r0, #1 +_08088ADC: + pop {r1} + bx r1 + thumb_func_end sub_08088ACC + + thumb_func_start sub_08088AE0 +sub_08088AE0: @ 0x08088AE0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x47 + beq _08088AEE + movs r0, #0 + b _08088AF0 +_08088AEE: + movs r0, #1 +_08088AF0: + pop {r1} + bx r1 + thumb_func_end sub_08088AE0 + + thumb_func_start sub_08088AF4 +sub_08088AF4: @ 0x08088AF4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x45 + beq _08088B02 + movs r0, #0 + b _08088B04 +_08088B02: + movs r0, #1 +_08088B04: + pop {r1} + bx r1 + thumb_func_end sub_08088AF4 + + thumb_func_start sub_08088B08 +sub_08088B08: @ 0x08088B08 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x44 + beq _08088B16 + movs r0, #0 + b _08088B18 +_08088B16: + movs r0, #1 +_08088B18: + pop {r1} + bx r1 + thumb_func_end sub_08088B08 + + thumb_func_start sub_08088B1C +sub_08088B1C: @ 0x08088B1C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + beq _08088B2A + movs r0, #0 + b _08088B2C +_08088B2A: + movs r0, #1 +_08088B2C: + pop {r1} + bx r1 + thumb_func_end sub_08088B1C + + thumb_func_start sub_08088B30 +sub_08088B30: @ 0x08088B30 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #2 + bne _08088B42 + cmp r0, #0x86 + beq _08088B46 +_08088B42: + movs r0, #0 + b _08088B48 +_08088B46: + movs r0, #1 +_08088B48: + pop {r1} + bx r1 + thumb_func_end sub_08088B30 + + thumb_func_start sub_08088B4C +sub_08088B4C: @ 0x08088B4C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x83 + beq _08088B5A + movs r0, #0 + b _08088B5C +_08088B5A: + movs r0, #1 +_08088B5C: + pop {r1} + bx r1 + thumb_func_end sub_08088B4C + + thumb_func_start sub_08088B60 +sub_08088B60: @ 0x08088B60 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x84 + beq _08088B6E + movs r0, #0 + b _08088B70 +_08088B6E: + movs r0, #1 +_08088B70: + pop {r1} + bx r1 + thumb_func_end sub_08088B60 + + thumb_func_start sub_08088B74 +sub_08088B74: @ 0x08088B74 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x91 + beq _08088B96 + cmp r0, #0x93 + beq _08088B96 + cmp r0, #0x95 + beq _08088B96 + cmp r0, #0x97 + beq _08088B96 + cmp r0, #0x99 + beq _08088B96 + cmp r0, #0x9b + beq _08088B96 + cmp r0, #0x9d + bne _08088B9A +_08088B96: + movs r0, #1 + b _08088B9C +_08088B9A: + movs r0, #0 +_08088B9C: + pop {r1} + bx r1 + thumb_func_end sub_08088B74 + + thumb_func_start sub_08088BA0 +sub_08088BA0: @ 0x08088BA0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x90 + beq _08088BB6 + cmp r0, #0x92 + beq _08088BB6 + cmp r0, #0x94 + beq _08088BB6 + cmp r0, #0x9a + bne _08088BBA +_08088BB6: + movs r0, #1 + b _08088BBC +_08088BBA: + movs r0, #0 +_08088BBC: + pop {r1} + bx r1 + thumb_func_end sub_08088BA0 + + thumb_func_start sub_08088BC0 +sub_08088BC0: @ 0x08088BC0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x96 + beq _08088BCE + cmp r0, #0x9c + bne _08088BD2 +_08088BCE: + movs r0, #1 + b _08088BD4 +_08088BD2: + movs r0, #0 +_08088BD4: + pop {r1} + bx r1 + thumb_func_end sub_08088BC0 + + thumb_func_start sub_08088BD8 +sub_08088BD8: @ 0x08088BD8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x98 + beq _08088BE6 + movs r0, #0 + b _08088BE8 +_08088BE6: + movs r0, #1 +_08088BE8: + pop {r1} + bx r1 + thumb_func_end sub_08088BD8 + + thumb_func_start sub_08088BEC +sub_08088BEC: @ 0x08088BEC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb0 + beq _08088BFA + movs r0, #0 + b _08088BFC +_08088BFA: + movs r0, #1 +_08088BFC: + pop {r1} + bx r1 + thumb_func_end sub_08088BEC + + thumb_func_start sub_08088C00 +sub_08088C00: @ 0x08088C00 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb1 + beq _08088C0E + movs r0, #0 + b _08088C10 +_08088C0E: + movs r0, #1 +_08088C10: + pop {r1} + bx r1 + thumb_func_end sub_08088C00 + + thumb_func_start sub_08088C14 +sub_08088C14: @ 0x08088C14 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb2 + beq _08088C22 + movs r0, #0 + b _08088C24 +_08088C22: + movs r0, #1 +_08088C24: + pop {r1} + bx r1 + thumb_func_end sub_08088C14 + + thumb_func_start sub_08088C28 +sub_08088C28: @ 0x08088C28 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb3 + beq _08088C36 + movs r0, #0 + b _08088C38 +_08088C36: + movs r0, #1 +_08088C38: + pop {r1} + bx r1 + thumb_func_end sub_08088C28 + + thumb_func_start sub_08088C3C +sub_08088C3C: @ 0x08088C3C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb9 + beq _08088C4A + movs r0, #0 + b _08088C4C +_08088C4A: + movs r0, #1 +_08088C4C: + pop {r1} + bx r1 + thumb_func_end sub_08088C3C + + thumb_func_start sub_08088C50 +sub_08088C50: @ 0x08088C50 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc6 + beq _08088C5E + movs r0, #0 + b _08088C60 +_08088C5E: + movs r0, #1 +_08088C60: + pop {r1} + bx r1 + thumb_func_end sub_08088C50 + + thumb_func_start sub_08088C64 +sub_08088C64: @ 0x08088C64 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc7 + beq _08088C72 + movs r0, #0 + b _08088C74 +_08088C72: + movs r0, #1 +_08088C74: + pop {r1} + bx r1 + thumb_func_end sub_08088C64 + + thumb_func_start sub_08088C78 +sub_08088C78: @ 0x08088C78 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08088C84 + movs r0, #0 + b _08088C86 +_08088C84: + movs r0, #1 +_08088C86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088C78 + + thumb_func_start sub_08088C8C +sub_08088C8C: @ 0x08088C8C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb7 + beq _08088C9A + movs r0, #0 + b _08088C9C +_08088C9A: + movs r0, #1 +_08088C9C: + pop {r1} + bx r1 + thumb_func_end sub_08088C8C + + thumb_func_start sub_08088CA0 +sub_08088CA0: @ 0x08088CA0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb2 + beq _08088CAE + movs r0, #0 + b _08088CB0 +_08088CAE: + movs r0, #1 +_08088CB0: + pop {r1} + bx r1 + thumb_func_end sub_08088CA0 + + thumb_func_start sub_08088CB4 +sub_08088CB4: @ 0x08088CB4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb5 + beq _08088CC2 + movs r0, #0 + b _08088CC4 +_08088CC2: + movs r0, #1 +_08088CC4: + pop {r1} + bx r1 + thumb_func_end sub_08088CB4 + + thumb_func_start sub_08088CC8 +sub_08088CC8: @ 0x08088CC8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc3 + beq _08088CD6 + movs r0, #0 + b _08088CD8 +_08088CD6: + movs r0, #1 +_08088CD8: + pop {r1} + bx r1 + thumb_func_end sub_08088CC8 + + thumb_func_start sub_08088CDC +sub_08088CDC: @ 0x08088CDC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc2 + beq _08088CEA + movs r0, #0 + b _08088CEC +_08088CEA: + movs r0, #1 +_08088CEC: + pop {r1} + bx r1 + thumb_func_end sub_08088CDC + + thumb_func_start sub_08088CF0 +sub_08088CF0: @ 0x08088CF0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb8 + beq _08088CFE + movs r0, #0 + b _08088D00 +_08088CFE: + movs r0, #1 +_08088D00: + pop {r1} + bx r1 + thumb_func_end sub_08088CF0 + + thumb_func_start sub_08088D04 +sub_08088D04: @ 0x08088D04 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbe + beq _08088D12 + movs r0, #0 + b _08088D14 +_08088D12: + movs r0, #1 +_08088D14: + pop {r1} + bx r1 + thumb_func_end sub_08088D04 + + thumb_func_start sub_08088D18 +sub_08088D18: @ 0x08088D18 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbd + beq _08088D26 + movs r0, #0 + b _08088D28 +_08088D26: + movs r0, #1 +_08088D28: + pop {r1} + bx r1 + thumb_func_end sub_08088D18 + + thumb_func_start sub_08088D2C +sub_08088D2C: @ 0x08088D2C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xba + beq _08088D3A + movs r0, #0 + b _08088D3C +_08088D3A: + movs r0, #1 +_08088D3C: + pop {r1} + bx r1 + thumb_func_end sub_08088D2C + + thumb_func_start sub_08088D40 +sub_08088D40: @ 0x08088D40 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbf + beq _08088D4E + movs r0, #0 + b _08088D50 +_08088D4E: + movs r0, #1 +_08088D50: + pop {r1} + bx r1 + thumb_func_end sub_08088D40 + + thumb_func_start sub_08088D54 +sub_08088D54: @ 0x08088D54 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc4 + beq _08088D62 + movs r0, #0 + b _08088D64 +_08088D62: + movs r0, #1 +_08088D64: + pop {r1} + bx r1 + thumb_func_end sub_08088D54 + + thumb_func_start sub_08088D68 +sub_08088D68: @ 0x08088D68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc5 + beq _08088D76 + movs r0, #0 + b _08088D78 +_08088D76: + movs r0, #1 +_08088D78: + pop {r1} + bx r1 + thumb_func_end sub_08088D68 + + thumb_func_start sub_08088D7C +sub_08088D7C: @ 0x08088D7C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _08088D8E + cmp r0, #0x16 + beq _08088D8E + cmp r0, #0x14 + bne _08088D92 +_08088D8E: + movs r0, #1 + b _08088D94 +_08088D92: + movs r0, #0 +_08088D94: + pop {r1} + bx r1 + thumb_func_end sub_08088D7C + + thumb_func_start sub_08088D98 +sub_08088D98: @ 0x08088D98 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x16 + beq _08088DA6 + movs r0, #0 + b _08088DA8 +_08088DA6: + movs r0, #1 +_08088DA8: + pop {r1} + bx r1 + thumb_func_end sub_08088D98 + + thumb_func_start sub_08088DAC +sub_08088DAC: @ 0x08088DAC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _08088DBA + movs r0, #0 + b _08088DBC +_08088DBA: + movs r0, #1 +_08088DBC: + pop {r1} + bx r1 + thumb_func_end sub_08088DAC + + thumb_func_start sub_08088DC0 +sub_08088DC0: @ 0x08088DC0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08088DCE + movs r0, #0 + b _08088DD0 +_08088DCE: + movs r0, #1 +_08088DD0: + pop {r1} + bx r1 + thumb_func_end sub_08088DC0 + + thumb_func_start sub_08088DD4 +sub_08088DD4: @ 0x08088DD4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa0 + beq _08088DE2 + movs r0, #0 + b _08088DE4 +_08088DE2: + movs r0, #1 +_08088DE4: + pop {r1} + bx r1 + thumb_func_end sub_08088DD4 + + thumb_func_start sub_08088DE8 +sub_08088DE8: @ 0x08088DE8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x24 + beq _08088DF6 + movs r0, #0 + b _08088DF8 +_08088DF6: + movs r0, #1 +_08088DF8: + pop {r1} + bx r1 + thumb_func_end sub_08088DE8 + + thumb_func_start sub_08088DFC +sub_08088DFC: @ 0x08088DFC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x25 + beq _08088E0A + movs r0, #0 + b _08088E0C +_08088E0A: + movs r0, #1 +_08088E0C: + pop {r1} + bx r1 + thumb_func_end sub_08088DFC + + thumb_func_start sub_08088E10 +sub_08088E10: @ 0x08088E10 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0x90 + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08088E2E + adds r0, r1, #0 + subs r0, #0x7c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _08088E32 +_08088E2E: + movs r0, #1 + b _08088E34 +_08088E32: + movs r0, #0 +_08088E34: + pop {r1} + bx r1 + thumb_func_end sub_08088E10 + + thumb_func_start sub_08088E38 +sub_08088E38: @ 0x08088E38 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + adds r0, r1, #0 + subs r0, #0x70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08088E6E + adds r0, r1, #0 + subs r0, #0x7a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08088E5C + movs r0, #2 + b _08088E6E +_08088E5C: + adds r0, r2, #0 + subs r0, #0x7c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08088E6C + movs r0, #0 + b _08088E6E +_08088E6C: + movs r0, #3 +_08088E6E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088E38 + + thumb_func_start sub_08088E74 +sub_08088E74: @ 0x08088E74 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0x90 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08088E88 + movs r0, #0 + b _08088E8A +_08088E88: + movs r0, #1 +_08088E8A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088E74 + + thumb_func_start sub_08088E90 +sub_08088E90: @ 0x08088E90 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088EB4 + adds r0, r4, #0 + bl sub_08088754 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08088EB4 + movs r0, #1 + b _08088EB6 +_08088EB4: + movs r0, #0 +_08088EB6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08088E90 + + thumb_func_start sub_08088EBC +sub_08088EBC: @ 0x08088EBC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08088EE2 + adds r0, r4, #0 + bl sub_08088754 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08088EE2 + movs r0, #1 + b _08088EE4 +_08088EE2: + movs r0, #0 +_08088EE4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088EBC + + thumb_func_start sub_08088EEC +sub_08088EEC: @ 0x08088EEC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb + beq _08088EFA + movs r0, #0 + b _08088EFC +_08088EFA: + movs r0, #1 +_08088EFC: + pop {r1} + bx r1 + thumb_func_end sub_08088EEC + + thumb_func_start sub_08088F00 +sub_08088F00: @ 0x08088F00 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + beq _08088F0E + movs r0, #0 + b _08088F10 +_08088F0E: + movs r0, #1 +_08088F10: + pop {r1} + bx r1 + thumb_func_end sub_08088F00 + + thumb_func_start sub_08088F14 +sub_08088F14: @ 0x08088F14 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xef + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08088F2A + cmp r1, #0x14 + bne _08088F2E +_08088F2A: + movs r0, #1 + b _08088F30 +_08088F2E: + movs r0, #0 +_08088F30: + pop {r1} + bx r1 + thumb_func_end sub_08088F14 + + thumb_func_start sub_08088F34 +sub_08088F34: @ 0x08088F34 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x19 + beq _08088F42 + cmp r0, #0x2a + bne _08088F46 +_08088F42: + movs r0, #1 + b _08088F48 +_08088F46: + movs r0, #0 +_08088F48: + pop {r1} + bx r1 + thumb_func_end sub_08088F34 + + thumb_func_start sub_08088F4C +sub_08088F4C: @ 0x08088F4C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x17 + beq _08088F5E + cmp r0, #0x1b + beq _08088F5E + cmp r0, #0x1c + bne _08088F62 +_08088F5E: + movs r0, #1 + b _08088F64 +_08088F62: + movs r0, #0 +_08088F64: + pop {r1} + bx r1 + thumb_func_end sub_08088F4C + + thumb_func_start sub_08088F68 +sub_08088F68: @ 0x08088F68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x26 + beq _08088F76 + movs r0, #0 + b _08088F78 +_08088F76: + movs r0, #1 +_08088F78: + pop {r1} + bx r1 + thumb_func_end sub_08088F68 + + thumb_func_start sub_08088F7C +sub_08088F7C: @ 0x08088F7C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x27 + beq _08088F8A + movs r0, #0 + b _08088F8C +_08088F8A: + movs r0, #1 +_08088F8C: + pop {r1} + bx r1 + thumb_func_end sub_08088F7C + + thumb_func_start sub_08088F90 +sub_08088F90: @ 0x08088F90 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x15 + beq _08088FA2 + cmp r0, #0x11 + beq _08088FA2 + cmp r0, #0x12 + bne _08088FA6 +_08088FA2: + movs r0, #1 + b _08088FA8 +_08088FA6: + movs r0, #0 +_08088FA8: + pop {r1} + bx r1 + thumb_func_end sub_08088F90 + + thumb_func_start sub_08088FAC +sub_08088FAC: @ 0x08088FAC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x18 + beq _08088FBA + cmp r0, #0x1a + bne _08088FBE +_08088FBA: + movs r0, #1 + b _08088FC0 +_08088FBE: + movs r0, #0 +_08088FC0: + pop {r1} + bx r1 + thumb_func_end sub_08088FAC + + thumb_func_start sub_08088FC4 +sub_08088FC4: @ 0x08088FC4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08088FE6 + adds r0, r4, #0 + bl sub_080890A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088FE6 + movs r0, #1 + b _08088FE8 +_08088FE6: + movs r0, #0 +_08088FE8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08088FC4 + + thumb_func_start sub_08088FF0 +sub_08088FF0: @ 0x08088FF0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x30 + beq _0808900A + cmp r0, #0x34 + beq _0808900A + cmp r0, #0x36 + beq _0808900A + cmp r0, #0xc1 + beq _0808900A + cmp r0, #0xbe + bne _0808900E +_0808900A: + movs r0, #1 + b _08089010 +_0808900E: + movs r0, #0 +_08089010: + pop {r1} + bx r1 + thumb_func_end sub_08088FF0 + + thumb_func_start sub_08089014 +sub_08089014: @ 0x08089014 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x31 + beq _0808902E + cmp r0, #0x35 + beq _0808902E + cmp r0, #0x37 + beq _0808902E + cmp r0, #0xc1 + beq _0808902E + cmp r0, #0xbe + bne _08089032 +_0808902E: + movs r0, #1 + b _08089034 +_08089032: + movs r0, #0 +_08089034: + pop {r1} + bx r1 + thumb_func_end sub_08089014 + + thumb_func_start sub_08089038 +sub_08089038: @ 0x08089038 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x32 + beq _0808904E + cmp r0, #0x34 + beq _0808904E + cmp r0, #0x35 + beq _0808904E + cmp r0, #0xc0 + bne _08089052 +_0808904E: + movs r0, #1 + b _08089054 +_08089052: + movs r0, #0 +_08089054: + pop {r1} + bx r1 + thumb_func_end sub_08089038 + + thumb_func_start sub_08089058 +sub_08089058: @ 0x08089058 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x33 + beq _0808906E + cmp r0, #0x36 + beq _0808906E + cmp r0, #0x37 + beq _0808906E + cmp r0, #0xc0 + bne _08089072 +_0808906E: + movs r0, #1 + b _08089074 +_08089072: + movs r0, #0 +_08089074: + pop {r1} + bx r1 + thumb_func_end sub_08089058 + + thumb_func_start sub_08089078 +sub_08089078: @ 0x08089078 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + beq _08089086 + movs r0, #0 + b _08089088 +_08089086: + movs r0, #1 +_08089088: + pop {r1} + bx r1 + thumb_func_end sub_08089078 + + thumb_func_start sub_0808908C +sub_0808908C: @ 0x0808908C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x28 + beq _0808909A + movs r0, #0 + b _0808909C +_0808909A: + movs r0, #1 +_0808909C: + pop {r1} + bx r1 + thumb_func_end sub_0808908C + + thumb_func_start sub_080890A0 +sub_080890A0: @ 0x080890A0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + beq _080890AE + movs r0, #0 + b _080890B0 +_080890AE: + movs r0, #1 +_080890B0: + pop {r1} + bx r1 + thumb_func_end sub_080890A0 + + thumb_func_start sub_080890B4 +sub_080890B4: @ 0x080890B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x78 + beq _080890C2 + movs r0, #0 + b _080890C4 +_080890C2: + movs r0, #1 +_080890C4: + pop {r1} + bx r1 + thumb_func_end sub_080890B4 + + thumb_func_start sub_080890C8 +sub_080890C8: @ 0x080890C8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x74 + beq _080890D6 + movs r0, #0 + b _080890D8 +_080890D6: + movs r0, #1 +_080890D8: + pop {r1} + bx r1 + thumb_func_end sub_080890C8 + + thumb_func_start sub_080890DC +sub_080890DC: @ 0x080890DC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x75 + beq _080890EA + movs r0, #0 + b _080890EC +_080890EA: + movs r0, #1 +_080890EC: + pop {r1} + bx r1 + thumb_func_end sub_080890DC + + thumb_func_start sub_080890F0 +sub_080890F0: @ 0x080890F0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x76 + beq _080890FE + movs r0, #0 + b _08089100 +_080890FE: + movs r0, #1 +_08089100: + pop {r1} + bx r1 + thumb_func_end sub_080890F0 + + thumb_func_start sub_08089104 +sub_08089104: @ 0x08089104 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + beq _08089112 + movs r0, #0 + b _08089114 +_08089112: + movs r0, #1 +_08089114: + pop {r1} + bx r1 + thumb_func_end sub_08089104 + + thumb_func_start sub_08089118 +sub_08089118: @ 0x08089118 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0x8c + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0808912C + movs r0, #0 + b _0808912E +_0808912C: + movs r0, #1 +_0808912E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08089118 + + thumb_func_start sub_08089134 +sub_08089134: @ 0x08089134 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8c + beq _08089142 + movs r0, #0 + b _08089144 +_08089142: + movs r0, #1 +_08089144: + pop {r1} + bx r1 + thumb_func_end sub_08089134 + + thumb_func_start sub_08089148 +sub_08089148: @ 0x08089148 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x85 + beq _08089156 + movs r0, #0 + b _08089158 +_08089156: + movs r0, #1 +_08089158: + pop {r1} + bx r1 + thumb_func_end sub_08089148 + + thumb_func_start sub_0808915C +sub_0808915C: @ 0x0808915C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8b + beq _0808916A + movs r0, #0 + b _0808916C +_0808916A: + movs r0, #1 +_0808916C: + pop {r1} + bx r1 + thumb_func_end sub_0808915C + + thumb_func_start sub_08089170 +sub_08089170: @ 0x08089170 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xea + beq _0808917E + movs r0, #0 + b _08089180 +_0808917E: + movs r0, #1 +_08089180: + pop {r1} + bx r1 + thumb_func_end sub_08089170 + + thumb_func_start sub_08089184 +sub_08089184: @ 0x08089184 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8a + beq _08089192 + movs r0, #0 + b _08089194 +_08089192: + movs r0, #1 +_08089194: + pop {r1} + bx r1 + thumb_func_end sub_08089184 + + thumb_func_start sub_08089198 +sub_08089198: @ 0x08089198 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x87 + beq _080891A6 + movs r0, #0 + b _080891A8 +_080891A6: + movs r0, #1 +_080891A8: + pop {r1} + bx r1 + thumb_func_end sub_08089198 + + thumb_func_start sub_080891AC +sub_080891AC: @ 0x080891AC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbb + beq _080891BA + movs r0, #0 + b _080891BC +_080891BA: + movs r0, #1 +_080891BC: + pop {r1} + bx r1 + thumb_func_end sub_080891AC + + thumb_func_start sub_080891C0 +sub_080891C0: @ 0x080891C0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbc + beq _080891CE + movs r0, #0 + b _080891D0 +_080891CE: + movs r0, #1 +_080891D0: + pop {r1} + bx r1 + thumb_func_end sub_080891C0 + + thumb_func_start sub_080891D4 +sub_080891D4: @ 0x080891D4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x29 + beq _080891E2 + movs r0, #0 + b _080891E4 +_080891E2: + movs r0, #1 +_080891E4: + pop {r1} + bx r1 + thumb_func_end sub_080891D4 + + thumb_func_start sub_080891E8 +sub_080891E8: @ 0x080891E8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x68 + beq _080891F6 + movs r0, #0 + b _080891F8 +_080891F6: + movs r0, #1 +_080891F8: + pop {r1} + bx r1 + thumb_func_end sub_080891E8 + + thumb_func_start sub_080891FC +sub_080891FC: @ 0x080891FC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x67 + beq _0808920A + movs r0, #0 + b _0808920C +_0808920A: + movs r0, #1 +_0808920C: + pop {r1} + bx r1 + thumb_func_end sub_080891FC + + thumb_func_start sub_08089210 +sub_08089210: @ 0x08089210 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x70 + beq _0808921E + movs r0, #0 + b _08089220 +_0808921E: + movs r0, #1 +_08089220: + pop {r1} + bx r1 + thumb_func_end sub_08089210 + + thumb_func_start sub_08089224 +sub_08089224: @ 0x08089224 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe + beq _08089232 + movs r0, #0 + b _08089234 +_08089232: + movs r0, #1 +_08089234: + pop {r1} + bx r1 + thumb_func_end sub_08089224 + + thumb_func_start sub_08089238 +sub_08089238: @ 0x08089238 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0808925C + cmp r0, #0x15 + beq _0808925C + cmp r0, #0x11 + beq _0808925C + cmp r0, #0x12 + beq _0808925C + cmp r0, #0x14 + beq _0808925C + subs r0, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _08089260 +_0808925C: + movs r0, #1 + b _08089262 +_08089260: + movs r0, #0 +_08089262: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08089238 + + thumb_func_start sub_08089268 +sub_08089268: @ 0x08089268 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + beq _08089276 + movs r0, #0 + b _08089278 +_08089276: + movs r0, #1 +_08089278: + pop {r1} + bx r1 + thumb_func_end sub_08089268 + + thumb_func_start sub_0808927C +sub_0808927C: @ 0x0808927C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x66 + beq _0808928A + movs r0, #0 + b _0808928C +_0808928A: + movs r0, #1 +_0808928C: + pop {r1} + bx r1 + thumb_func_end sub_0808927C + + thumb_func_start sub_08089290 +sub_08089290: @ 0x08089290 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd2 + beq _0808929E + movs r0, #0 + b _080892A0 +_0808929E: + movs r0, #1 +_080892A0: + pop {r1} + bx r1 + thumb_func_end sub_08089290 + + thumb_func_start sub_080892A4 +sub_080892A4: @ 0x080892A4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd0 + beq _080892B2 + movs r0, #0 + b _080892B4 +_080892B2: + movs r0, #1 +_080892B4: + pop {r1} + bx r1 + thumb_func_end sub_080892A4 + + thumb_func_start sub_080892B8 +sub_080892B8: @ 0x080892B8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd1 + beq _080892C6 + movs r0, #0 + b _080892C8 +_080892C6: + movs r0, #1 +_080892C8: + pop {r1} + bx r1 + thumb_func_end sub_080892B8 + + thumb_func_start sub_080892CC +sub_080892CC: @ 0x080892CC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd3 + beq _080892DA + movs r0, #0 + b _080892DC +_080892DA: + movs r0, #1 +_080892DC: + pop {r1} + bx r1 + thumb_func_end sub_080892CC + + thumb_func_start sub_080892E0 +sub_080892E0: @ 0x080892E0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd4 + beq _080892EE + movs r0, #0 + b _080892F0 +_080892EE: + movs r0, #1 +_080892F0: + pop {r1} + bx r1 + thumb_func_end sub_080892E0 + + thumb_func_start sub_080892F4 +sub_080892F4: @ 0x080892F4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd5 + beq _08089302 + movs r0, #0 + b _08089304 +_08089302: + movs r0, #1 +_08089304: + pop {r1} + bx r1 + thumb_func_end sub_080892F4 + + thumb_func_start sub_08089308 +sub_08089308: @ 0x08089308 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd6 + beq _08089316 + movs r0, #0 + b _08089318 +_08089316: + movs r0, #1 +_08089318: + pop {r1} + bx r1 + thumb_func_end sub_08089308 + + thumb_func_start sub_0808931C +sub_0808931C: @ 0x0808931C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x22 + beq _0808932A + cmp r0, #0x2a + bne _0808932E +_0808932A: + movs r0, #1 + b _08089330 +_0808932E: + movs r0, #0 +_08089330: + pop {r1} + bx r1 + thumb_func_end sub_0808931C + + thumb_func_start sub_08089334 +sub_08089334: @ 0x08089334 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + beq _08089350 + cmp r0, #3 + beq _08089350 + cmp r0, #0x28 + beq _08089350 + bl sub_08089118 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08089354 +_08089350: + movs r0, #1 + b _08089356 +_08089354: + movs r0, #0 +_08089356: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08089334 + + thumb_func_start sub_0808935C +sub_0808935C: @ 0x0808935C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xfe + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08089376 + cmp r1, #0x24 + beq _08089376 + cmp r1, #9 + bne _0808937A +_08089376: + movs r0, #1 + b _0808937C +_0808937A: + movs r0, #0 +_0808937C: + pop {r1} + bx r1 + thumb_func_end sub_0808935C + + thumb_func_start sub_08089380 +sub_08089380: @ 0x08089380 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8e + beq _0808938E + movs r0, #0 + b _08089390 +_0808938E: + movs r0, #1 +_08089390: + pop {r1} + bx r1 + thumb_func_end sub_08089380 + + thumb_func_start sub_08089394 +sub_08089394: @ 0x08089394 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe0 + beq _080893A2 + movs r0, #0 + b _080893A4 +_080893A2: + movs r0, #1 +_080893A4: + pop {r1} + bx r1 + thumb_func_end sub_08089394 + + thumb_func_start sub_080893A8 +sub_080893A8: @ 0x080893A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe1 + beq _080893B6 + movs r0, #0 + b _080893B8 +_080893B6: + movs r0, #1 +_080893B8: + pop {r1} + bx r1 + thumb_func_end sub_080893A8 + + thumb_func_start sub_080893BC +sub_080893BC: @ 0x080893BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe2 + beq _080893CA + movs r0, #0 + b _080893CC +_080893CA: + movs r0, #1 +_080893CC: + pop {r1} + bx r1 + thumb_func_end sub_080893BC + + thumb_func_start sub_080893D0 +sub_080893D0: @ 0x080893D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe3 + beq _080893DE + movs r0, #0 + b _080893E0 +_080893DE: + movs r0, #1 +_080893E0: + pop {r1} + bx r1 + thumb_func_end sub_080893D0 + + thumb_func_start sub_080893E4 +sub_080893E4: @ 0x080893E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe4 + beq _080893F2 + movs r0, #0 + b _080893F4 +_080893F2: + movs r0, #1 +_080893F4: + pop {r1} + bx r1 + thumb_func_end sub_080893E4 + + thumb_func_start sub_080893F8 +sub_080893F8: @ 0x080893F8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe5 + beq _08089406 + movs r0, #0 + b _08089408 +_08089406: + movs r0, #1 +_08089408: + pop {r1} + bx r1 + thumb_func_end sub_080893F8 + + thumb_func_start sub_0808940C +sub_0808940C: @ 0x0808940C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe6 + beq _0808941A + movs r0, #0 + b _0808941C +_0808941A: + movs r0, #1 +_0808941C: + pop {r1} + bx r1 + thumb_func_end sub_0808940C + + thumb_func_start sub_08089420 +sub_08089420: @ 0x08089420 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + beq _0808942E + movs r0, #0 + b _08089430 +_0808942E: + movs r0, #1 +_08089430: + pop {r1} + bx r1 + thumb_func_end sub_08089420 + + thumb_func_start sub_08089434 +sub_08089434: @ 0x08089434 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #2 + bne _08089446 + cmp r0, #0xe8 + beq _0808944A +_08089446: + movs r0, #0 + b _0808944C +_0808944A: + movs r0, #1 +_0808944C: + pop {r1} + bx r1 + thumb_func_end sub_08089434 + + thumb_func_start sub_08089450 +sub_08089450: @ 0x08089450 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #2 + bne _08089462 + cmp r0, #0xe7 + beq _08089466 +_08089462: + movs r0, #0 + b _08089468 +_08089466: + movs r0, #1 +_08089468: + pop {r1} + bx r1 + thumb_func_end sub_08089450 + + thumb_func_start sub_0808946C +sub_0808946C: @ 0x0808946C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x8f + beq _0808947A + movs r0, #0 + b _0808947C +_0808947A: + movs r0, #1 +_0808947C: + pop {r1} + bx r1 + thumb_func_end sub_0808946C + + thumb_func_start sub_08089480 +sub_08089480: @ 0x08089480 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _0808948E + movs r0, #0 + b _08089490 +_0808948E: + movs r0, #1 +_08089490: + pop {r1} + bx r1 + thumb_func_end sub_08089480 + + thumb_func_start sub_08089494 +sub_08089494: @ 0x08089494 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + beq _080894A2 + movs r0, #0 + b _080894A4 +_080894A2: + movs r0, #1 +_080894A4: + pop {r1} + bx r1 + thumb_func_end sub_08089494 + + thumb_func_start sub_080894A8 +sub_080894A8: @ 0x080894A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe9 + beq _080894B6 + movs r0, #0 + b _080894B8 +_080894B6: + movs r0, #1 +_080894B8: + pop {r1} + bx r1 + thumb_func_end sub_080894A8 + + thumb_func_start sub_080894BC +sub_080894BC: @ 0x080894BC + movs r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + strb r1, [r0] + strb r1, [r0, #1] + movs r1, #1 + strb r1, [r0, #4] + bx lr + thumb_func_end sub_080894BC + + thumb_func_start sub_080894CC +sub_080894CC: @ 0x080894CC + ldrb r3, [r0, #2] + adds r3, r3, r1 + strb r3, [r0, #2] + ldrb r1, [r0, #2] + movs r3, #0x1f + ands r1, r3 + strb r1, [r0, #2] + ldrb r1, [r0, #3] + adds r1, r1, r2 + strb r1, [r0, #3] + ldrb r1, [r0, #3] + ands r1, r3 + strb r1, [r0, #3] + bx lr + thumb_func_end sub_080894CC + + thumb_func_start sub_080894E8 +sub_080894E8: @ 0x080894E8 + ldrb r3, [r0] + adds r3, r3, r1 + strb r3, [r0] + ldrb r1, [r0, #1] + adds r1, r1, r2 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end sub_080894E8 + + thumb_func_start sub_080894F8 +sub_080894F8: @ 0x080894F8 + push {lr} + ldr r0, _08089504 + bl sub_080894BC + pop {r0} + bx r0 + .align 2, 0 +_08089504: .4byte gUnknown_3000E20 + thumb_func_end sub_080894F8 + + thumb_func_start sub_08089508 +sub_08089508: @ 0x08089508 + push {r4, r5, lr} + ldr r1, _08089560 + ldr r0, _08089564 + movs r2, #0 + ldrsh r5, [r0, r2] + ldrb r0, [r1] + adds r5, r5, r0 + ldr r0, _08089568 + movs r2, #0 + ldrsh r4, [r0, r2] + ldrb r1, [r1, #1] + adds r4, r4, r1 + adds r4, #8 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r0, #0x14 + adds r1, r5, #0 + bl sub_08001144 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0x16 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x18 + adds r1, r5, #0 + bl sub_08001144 + movs r0, #0x1a + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x1c + adds r1, r5, #0 + bl sub_08001144 + movs r0, #0x1e + adds r1, r4, #0 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08089560: .4byte gUnknown_3000E20 +_08089564: .4byte gUnknown_3000E28 +_08089568: .4byte gUnknown_3000E2A + thumb_func_end sub_08089508 + + thumb_func_start sub_0808956C +sub_0808956C: @ 0x0808956C + push {r4, lr} + ldr r3, _0808958C + ldr r2, _08089590 + ldrh r2, [r2] + ldrb r4, [r3] + adds r2, r2, r4 + strh r2, [r0] + ldr r0, _08089594 + ldrh r0, [r0] + ldrb r3, [r3, #1] + adds r0, r0, r3 + adds r0, #8 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808958C: .4byte gUnknown_3000E20 +_08089590: .4byte gUnknown_3000E28 +_08089594: .4byte gUnknown_3000E2A + thumb_func_end sub_0808956C + + thumb_func_start sub_08089598 +sub_08089598: @ 0x08089598 + push {lr} + ldr r0, _080895B8 + ldr r1, [r0] + movs r2, #0 + ldrsh r0, [r1, r2] + movs r2, #2 + ldrsh r1, [r1, r2] + ldr r2, _080895BC + ldr r2, [r2] + bl sub_080895C4 + ldr r1, _080895C0 + movs r0, #1 + strb r0, [r1, #4] + pop {r0} + bx r0 + .align 2, 0 +_080895B8: .4byte gUnknown_3005AEC +_080895BC: .4byte gUnknown_2036FB8 +_080895C0: .4byte gUnknown_3000E20 + thumb_func_end sub_08089598 + + thumb_func_start sub_080895C4 +sub_080895C4: @ 0x080895C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + mov sb, r1 + mov r8, r2 + movs r1, #0 +_080895D8: + ldr r2, _08089644 + ldrb r0, [r2, #3] + adds r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080895EC + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080895EC: + lsls r6, r0, #5 + movs r4, #0 + adds r7, r1, #2 + str r7, [sp] + lsrs r5, r1, #1 +_080895F6: + ldr r1, _08089644 + ldrb r0, [r1, #2] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _0808960A + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808960A: + adds r1, r6, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r2, r4, #1 + add r2, sl + mov r0, r8 + mov r7, sb + adds r3, r7, r5 + bl sub_08089874 + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _080895F6 + ldr r1, [sp] + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1f + bls _080895D8 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089644: .4byte gUnknown_3000E20 + thumb_func_end sub_080895C4 + + thumb_func_start sub_08089648 +sub_08089648: @ 0x08089648 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + ldr r0, _08089690 + ldr r4, [r0] + cmp r6, #0 + ble _08089660 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089798 +_08089660: + cmp r6, #0 + bge _0808966C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089740 +_0808966C: + cmp r7, #0 + ble _08089678 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089694 +_08089678: + cmp r7, #0 + bge _08089684 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080896F4 +_08089684: + movs r0, #1 + strb r0, [r5, #4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089690: .4byte gUnknown_2036FB8 + thumb_func_end sub_08089648 + + thumb_func_start sub_08089694 +sub_08089694: @ 0x08089694 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldrb r0, [r5, #3] + adds r0, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080896AC + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080896AC: + lsls r6, r0, #5 + movs r4, #0 +_080896B0: + ldrb r0, [r5, #2] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080896C2 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080896C2: + adds r1, r6, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _080896F0 + ldr r3, [r0] + movs r0, #0 + ldrsh r2, [r3, r0] + lsrs r0, r4, #1 + adds r2, r2, r0 + movs r0, #2 + ldrsh r3, [r3, r0] + adds r3, #0xe + adds r0, r7, #0 + bl sub_08089874 + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _080896B0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080896F0: .4byte gUnknown_3005AEC + thumb_func_end sub_08089694 + + thumb_func_start sub_080896F4 +sub_080896F4: @ 0x080896F4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldrb r0, [r5, #3] + lsls r6, r0, #5 + movs r4, #0 +_08089700: + ldrb r0, [r5, #2] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _08089712 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08089712: + adds r1, r6, r0 + ldr r0, _0808973C + ldr r3, [r0] + movs r0, #0 + ldrsh r2, [r3, r0] + lsrs r0, r4, #1 + adds r2, r2, r0 + movs r0, #2 + ldrsh r3, [r3, r0] + adds r0, r7, #0 + bl sub_08089874 + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _08089700 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808973C: .4byte gUnknown_3005AEC + thumb_func_end sub_080896F4 + + thumb_func_start sub_08089740 +sub_08089740: @ 0x08089740 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + mov r8, r1 + ldrb r6, [r5, #2] + movs r4, #0 +_0808974E: + ldrb r0, [r5, #3] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _08089760 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08089760: + lsls r1, r0, #5 + adds r1, r1, r6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _08089794 + ldr r0, [r0] + movs r3, #0 + ldrsh r2, [r0, r3] + movs r7, #2 + ldrsh r3, [r0, r7] + lsrs r0, r4, #1 + adds r3, r3, r0 + mov r0, r8 + bl sub_08089874 + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _0808974E + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089794: .4byte gUnknown_3005AEC + thumb_func_end sub_08089740 + + thumb_func_start sub_08089798 +sub_08089798: @ 0x08089798 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + ldrb r0, [r6, #2] + adds r0, #0x1c + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x1f + bls _080897B6 + adds r0, r5, #0 + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080897B6: + movs r4, #0 +_080897B8: + ldrb r0, [r6, #3] + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080897CA + subs r0, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080897CA: + lsls r1, r0, #5 + adds r1, r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _08089800 + ldr r0, [r0] + movs r3, #0 + ldrsh r2, [r0, r3] + adds r2, #0xe + movs r7, #2 + ldrsh r3, [r0, r7] + lsrs r0, r4, #1 + adds r3, r3, r0 + mov r0, r8 + bl sub_08089874 + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _080897B8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089800: .4byte gUnknown_3005AEC + thumb_func_end sub_08089798 + + thumb_func_start sub_08089804 +sub_08089804: @ 0x08089804 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r6, _08089838 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08089A10 + adds r1, r0, #0 + cmp r1, #0 + blt _08089830 + ldr r0, _0808983C + ldr r0, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08089874 + movs r0, #1 + strb r0, [r6, #4] +_08089830: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08089838: .4byte gUnknown_3000E20 +_0808983C: .4byte gUnknown_2036FB8 + thumb_func_end sub_08089804 + + thumb_func_start sub_08089840 +sub_08089840: @ 0x08089840 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r6, _08089870 + adds r0, r6, #0 + adds r1, r3, #0 + adds r2, r4, #0 + bl sub_08089A10 + cmp r0, #0 + blt _08089868 + lsls r2, r0, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + adds r1, r5, #0 + bl sub_080898DC + movs r0, #1 + strb r0, [r6, #4] +_08089868: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08089870: .4byte gUnknown_3000E20 + thumb_func_end sub_08089840 + + thumb_func_start sub_08089874 +sub_08089874: @ 0x08089874 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r2, #0 + adds r7, r3, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + bls _0808989C + movs r4, #0 +_0808989C: + ldr r0, _080898A8 + cmp r4, r0 + bhi _080898AC + ldr r0, [r5, #0x10] + ldr r5, [r0, #0xc] + b _080898B8 + .align 2, 0 +_080898A8: .4byte 0x000001FF +_080898AC: + ldr r0, [r5, #0x14] + ldr r5, [r0, #0xc] + ldr r1, _080898D8 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080898B8: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08087C38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #4 + adds r1, r5, r1 + mov r2, r8 + bl sub_080898DC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080898D8: .4byte 0xFFFFFE00 + thumb_func_end sub_08089874 + + thumb_func_start sub_080898DC +sub_080898DC: @ 0x080898DC + push {r4, lr} + adds r4, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r0, #1 + beq _08089934 + cmp r0, #1 + bgt _080898F2 + cmp r0, #0 + beq _08089994 + b _080899E6 +_080898F2: + cmp r0, #2 + bne _080899E6 + ldr r0, _0808992C + ldr r0, [r0] + lsls r3, r2, #1 + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + adds r2, r0, #0 + adds r2, #0x40 + ldrh r1, [r4, #4] + strh r1, [r2] + adds r0, #0x42 + ldrh r1, [r4, #6] + strh r1, [r0] + ldr r0, _08089930 + ldr r0, [r0] + adds r0, r3, r0 + movs r2, #0 + strh r2, [r0] + strh r2, [r0, #2] + adds r1, r0, #0 + adds r1, #0x40 + strh r2, [r1] + adds r0, #0x42 + strh r2, [r0] + b _080899CA + .align 2, 0 +_0808992C: .4byte gUnknown_3005B04 +_08089930: .4byte gUnknown_3005AFC +_08089934: + ldr r0, _08089988 + ldr r0, [r0] + lsls r3, r2, #1 + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + adds r2, r0, #0 + adds r2, #0x40 + ldrh r1, [r4, #4] + strh r1, [r2] + adds r0, #0x42 + ldrh r1, [r4, #6] + strh r1, [r0] + ldr r0, _0808998C + ldr r0, [r0] + adds r0, r3, r0 + ldrh r1, [r4, #8] + strh r1, [r0] + ldrh r1, [r4, #0xa] + strh r1, [r0, #2] + 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, _08089990 + ldr r0, [r0] + adds r3, r3, r0 + movs r1, #0 + strh r1, [r3] + strh r1, [r3, #2] + adds r0, r3, #0 + adds r0, #0x40 + strh r1, [r0] + adds r3, #0x42 + strh r1, [r3] + b _080899E6 + .align 2, 0 +_08089988: .4byte gUnknown_3005B04 +_0808998C: .4byte gUnknown_3005AFC +_08089990: .4byte gUnknown_3005B00 +_08089994: + ldr r0, _08089A00 + ldr r0, [r0] + lsls r3, r2, #1 + adds r0, r3, r0 + ldr r1, _08089A04 + adds r2, r1, #0 + strh r2, [r0] + strh r2, [r0, #2] + adds r1, r0, #0 + adds r1, #0x40 + strh r2, [r1] + adds r0, #0x42 + strh r2, [r0] + ldr r0, _08089A08 + ldr r0, [r0] + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + adds r2, r0, #0 + adds r2, #0x40 + ldrh r1, [r4, #4] + strh r1, [r2] + adds r0, #0x42 + ldrh r1, [r4, #6] + strh r1, [r0] +_080899CA: + ldr r0, _08089A0C + ldr r0, [r0] + adds r3, r3, r0 + ldrh r0, [r4, #8] + strh r0, [r3] + ldrh r0, [r4, #0xa] + strh r0, [r3, #2] + adds r1, r3, #0 + adds r1, #0x40 + ldrh r0, [r4, #0xc] + strh r0, [r1] + adds r3, #0x42 + ldrh r0, [r4, #0xe] + strh r0, [r3] +_080899E6: + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08089A00: .4byte gUnknown_3005B04 +_08089A04: .4byte 0x00003014 +_08089A08: .4byte gUnknown_3005AFC +_08089A0C: .4byte gUnknown_3005B00 + thumb_func_end sub_080898DC + + thumb_func_start sub_08089A10 +sub_08089A10: @ 0x08089A10 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08089A40 + ldr r3, [r0] + movs r5, #0 + ldrsh r0, [r3, r5] + subs r1, r1, r0 + lsls r1, r1, #1 + cmp r1, #0x1f + bhi _08089A3A + ldrb r0, [r4, #2] + adds r1, r1, r0 + cmp r1, #0x1f + ble _08089A2E + subs r1, #0x20 +_08089A2E: + movs r5, #2 + ldrsh r0, [r3, r5] + subs r0, r2, r0 + lsls r2, r0, #1 + cmp r2, #0x1f + bls _08089A44 +_08089A3A: + movs r0, #1 + rsbs r0, r0, #0 + b _08089A52 + .align 2, 0 +_08089A40: .4byte gUnknown_3005AEC +_08089A44: + ldrb r0, [r4, #3] + adds r2, r2, r0 + cmp r2, #0x1f + ble _08089A4E + subs r2, #0x20 +_08089A4E: + lsls r0, r2, #5 + adds r0, r0, r1 +_08089A52: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08089A10 + + thumb_func_start sub_08089A58 +sub_08089A58: @ 0x08089A58 + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #4] + cmp r2, #0 + beq _08089A78 + ldr r1, _08089A7C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r0, r2] + str r1, [r3, #8] + movs r1, #0x34 + ldrsh r0, [r0, r1] + str r0, [r3, #0xc] +_08089A78: + pop {r0} + bx r0 + .align 2, 0 +_08089A7C: .4byte gUnknown_20205AC + thumb_func_end sub_08089A58 + + thumb_func_start sub_08089A80 +sub_08089A80: @ 0x08089A80 + ldr r1, _08089A94 + movs r0, #0 + str r0, [r1, #8] + str r0, [r1, #0xc] + str r0, [r1, #0x10] + str r0, [r1, #0x14] + str r0, [r1, #4] + str r0, [r1] + bx lr + .align 2, 0 +_08089A94: .4byte gUnknown_3005B30 + thumb_func_end sub_08089A80 + + thumb_func_start sub_08089A98 +sub_08089A98: @ 0x08089A98 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08089ACC + ldr r1, [r4, #4] + cmp r1, #0 + beq _08089AB4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08089AD0 + adds r0, r0, r1 + bl sub_08006E00 +_08089AB4: + adds r0, r5, #0 + bl sub_0808E6A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r4, #4] + ldr r0, _08089AD4 + str r0, [r4] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08089ACC: .4byte gUnknown_3005B30 +_08089AD0: .4byte gUnknown_20205AC +_08089AD4: .4byte sub_08089A58 + thumb_func_end sub_08089A98 + + thumb_func_start sub_08089AD8 +sub_08089AD8: @ 0x08089AD8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r6, _08089BD8 + ldr r1, [r6] + cmp r1, #0 + beq _08089AEC + adds r0, r6, #0 + bl _call_via_r1 +_08089AEC: + ldr r7, [r6, #8] + 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 _08089B0A + cmp r7, #0 + beq _08089B0A + subs r4, #1 + cmp r7, #0 + ble _08089B0A + movs r4, #1 +_08089B0A: + cmp r0, #0 + bne _08089B1E + mov r2, r8 + cmp r2, #0 + beq _08089B1E + movs r5, #1 + rsbs r5, r5, #0 + cmp r2, #0 + ble _08089B1E + movs r5, #1 +_08089B1E: + cmp r1, #0 + beq _08089B30 + cmn r1, r7 + bne _08089B30 + movs r4, #1 + rsbs r4, r4, #0 + cmp r7, #0 + ble _08089B30 + movs r4, #1 +_08089B30: + cmp r0, #0 + beq _08089B44 + mov r3, r8 + cmn r0, r3 + bne _08089B44 + movs r4, #1 + rsbs r4, r4, #0 + cmp r3, #0 + ble _08089B44 + movs r4, #1 +_08089B44: + ldr r2, _08089BD8 + ldr r0, [r2, #0x10] + adds r1, r0, r7 + str r1, [r2, #0x10] + adds r0, r1, #0 + cmp r1, #0 + bge _08089B54 + adds r0, #0xf +_08089B54: + asrs r0, r0, #4 + lsls r0, 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 _08089B6C + adds r0, #0xf +_08089B6C: + asrs r0, r0, #4 + lsls r0, r0, #4 + subs r0, r1, r0 + str r0, [r2, #0x14] + cmp r4, #0 + bne _08089B7C + cmp r5, #0 + beq _08089BB2 +_08089B7C: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080881E0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808E678 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080FC718 + bl sub_080E122C + ldr r6, _08089BDC + lsls r4, r4, #1 + lsls r5, r5, #1 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080894CC + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08089648 +_08089BB2: + ldr r0, _08089BDC + adds r1, r7, #0 + mov r2, r8 + bl sub_080894E8 + ldr r1, _08089BE0 + ldrh r0, [r1] + subs r0, r0, r7 + strh r0, [r1] + ldr r1, _08089BE4 + ldrh r0, [r1] + mov r2, r8 + subs r0, r0, r2 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089BD8: .4byte gUnknown_3005B30 +_08089BDC: .4byte gUnknown_3000E20 +_08089BE0: .4byte gUnknown_3005B4C +_08089BE4: .4byte gUnknown_3005B48 + thumb_func_end sub_08089AD8 + + thumb_func_start sub_08089BE8 +sub_08089BE8: @ 0x08089BE8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080881E0 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + bl sub_0808E678 + bl sub_08089598 + ldr r1, _08089C1C + lsls r4, r4, #4 + ldrh r0, [r1] + subs r0, r0, r4 + strh r0, [r1] + ldr r1, _08089C20 + lsls r5, r5, #4 + ldrh r0, [r1] + subs r0, r0, r5 + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08089C1C: .4byte gUnknown_3005B4C +_08089C20: .4byte gUnknown_3005B48 + thumb_func_end sub_08089BE8 + + thumb_func_start sub_08089C24 +sub_08089C24: @ 0x08089C24 + ldr r1, _08089C2C + str r0, [r1] + bx lr + .align 2, 0 +_08089C2C: .4byte gUnknown_3000E30 + thumb_func_end sub_08089C24 + + thumb_func_start sub_08089C30 +sub_08089C30: @ 0x08089C30 + ldr r2, _08089C40 + strh r0, [r2] + ldr r0, _08089C44 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r1, #0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_08089C40: .4byte gUnknown_3000E28 +_08089C44: .4byte gUnknown_3000E2A + thumb_func_end sub_08089C30 + + thumb_func_start sub_08089C48 +sub_08089C48: @ 0x08089C48 + ldr r1, _08089C64 + ldr r0, _08089C68 + str r0, [r1] + ldr r1, _08089C6C + movs r0, #0 + strb r0, [r1] + ldr r1, _08089C70 + movs r0, #0 + strh r0, [r1] + ldr r1, _08089C74 + movs r0, #0x20 + strh r0, [r1] + bx lr + .align 2, 0 +_08089C64: .4byte gUnknown_3000E30 +_08089C68: .4byte sub_08089CC4 +_08089C6C: .4byte gUnknown_3000E2C +_08089C70: .4byte gUnknown_3000E28 +_08089C74: .4byte gUnknown_3000E2A + thumb_func_end sub_08089C48 + + thumb_func_start sub_08089C78 +sub_08089C78: @ 0x08089C78 + push {lr} + ldr r0, _08089CA8 + ldr r0, [r0] + cmp r0, #0 + beq _08089C86 + bl _call_via_r0 +_08089C86: + ldr r2, _08089CAC + ldr r0, _08089CB0 + ldr r1, _08089CB4 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2] + ldr r2, _08089CB8 + ldr r0, _08089CBC + ldr r1, _08089CC0 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r0, r1 + subs r0, #8 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08089CA8: .4byte gUnknown_3000E30 +_08089CAC: .4byte gUnknown_2021B38 +_08089CB0: .4byte gUnknown_3005B4C +_08089CB4: .4byte gUnknown_3000E28 +_08089CB8: .4byte gUnknown_2021B3A +_08089CBC: .4byte gUnknown_3005B48 +_08089CC0: .4byte gUnknown_3000E2A + thumb_func_end sub_08089C78 + + thumb_func_start sub_08089CC4 +sub_08089CC4: @ 0x08089CC4 + push {lr} + ldr r0, _08089CD4 + ldrb r0, [r0] + cmp r0, #0 + bne _08089CD8 + bl sub_08089C48 + b _08089D60 + .align 2, 0 +_08089CD4: .4byte gUnknown_2036FE8 +_08089CD8: + ldr r0, _08089CF0 + ldrb r0, [r0, #3] + cmp r0, #1 + bne _08089CF8 + ldr r0, _08089CF4 + ldrb r1, [r0] + movs r2, #1 + eors r1, r2 + strb r1, [r0] + cmp r1, #0 + beq _08089D60 + b _08089CFE + .align 2, 0 +_08089CF0: .4byte gUnknown_2037230 +_08089CF4: .4byte gUnknown_3000E2C +_08089CF8: + ldr r1, _08089D20 + movs r0, #0 + strb r0, [r1] +_08089CFE: + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08089D28 + ldr r2, _08089D24 + ldrh r3, [r2] + movs r0, #0 + ldrsh r1, [r2, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08089D60 + subs r0, r3, #2 + b _08089D5E + .align 2, 0 +_08089D20: .4byte gUnknown_3000E2C +_08089D24: .4byte gUnknown_3000E2A +_08089D28: + cmp r0, #1 + bne _08089D44 + ldr r1, _08089D40 + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0x47 + bgt _08089D60 + adds r0, r2, #2 + strh r0, [r1] + b _08089D60 + .align 2, 0 +_08089D40: .4byte gUnknown_3000E2A +_08089D44: + ldr r2, _08089D54 + ldrh r0, [r2] + movs r3, #0 + ldrsh r1, [r2, r3] + cmp r1, #0x1f + bgt _08089D58 + adds r0, #2 + b _08089D5E + .align 2, 0 +_08089D54: .4byte gUnknown_3000E2A +_08089D58: + cmp r1, #0x20 + ble _08089D60 + subs r0, #2 +_08089D5E: + strh r0, [r2] +_08089D60: + pop {r0} + bx r0 + thumb_func_end sub_08089CC4 + + thumb_func_start sub_08089D64 +sub_08089D64: @ 0x08089D64 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #3] + cmp r0, #2 + bne _08089D84 + ldrh r1, [r1, #2] + ldr r0, [r2, #4] + adds r0, r0, r1 + ldr r1, _08089D80 + movs r2, #0x80 + bl CpuFastSet + b _08089D92 + .align 2, 0 +_08089D80: .4byte 0x06007E00 +_08089D84: + ldrh r1, [r1, #2] + ldr r0, [r2, #4] + adds r0, r0, r1 + ldr r1, _08089D98 + movs r2, #0x40 + bl CpuFastSet +_08089D92: + pop {r0} + bx r0 + .align 2, 0 +_08089D98: .4byte 0x06007F00 + thumb_func_end sub_08089D64 + + thumb_func_start sub_08089D9C +sub_08089D9C: @ 0x08089D9C + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 + adds r1, r6, #0 +_08089DA8: + ldrb r0, [r2] + lsls r0, r0, #0x1c + lsrs r3, r0, #0x10 + adds r2, #1 + adds r0, r5, r4 + orrs r3, r0 + strh r3, [r1] + adds r1, #2 + adds r4, #1 + cmp r4, #3 + ble _08089DA8 + cmp r4, #7 + bgt _08089DD6 + lsls r0, r4, #1 + adds r1, r0, r6 +_08089DC6: + ldrb r0, [r2] + lsls r3, r0, #0xc + adds r2, #1 + strh r3, [r1] + adds r1, #2 + adds r4, #1 + cmp r4, #7 + ble _08089DC6 +_08089DD6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08089D9C + + thumb_func_start sub_08089DDC +sub_08089DDC: @ 0x08089DDC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x30 + adds r7, r1, #0 + mov sb, r2 + adds r5, r3, #0 + ldrb r0, [r0, #3] + cmp r0, #2 + bne _08089E58 + add r4, sp, #0x10 + movs r1, #0xfc + lsls r1, r1, #2 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08089D9C + mov r6, sb + subs r6, #1 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08089840 + movs r1, #0xfd + lsls r1, r1, #2 + adds r0, r5, #4 + mov r8, r0 + adds r0, r4, #0 + mov r2, r8 + bl sub_08089D9C + adds r0, r7, #0 + mov r1, sb + adds r2, r4, #0 + bl sub_08089840 + movs r1, #0xfe + lsls r1, r1, #2 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08089D9C + adds r5, r7, #1 + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08089840 + movs r1, #0xff + lsls r1, r1, #2 + adds r0, r4, #0 + mov r2, r8 + bl sub_08089D9C + adds r0, r5, #0 + mov r1, sb + adds r2, r4, #0 + bl sub_08089840 + b _08089E86 +_08089E58: + movs r1, #0xfe + lsls r1, r1, #2 + mov r0, sp + adds r2, r5, #0 + bl sub_08089D9C + mov r1, sb + subs r1, #1 + adds r0, r7, #0 + mov r2, sp + bl sub_08089840 + movs r1, #0xff + lsls r1, r1, #2 + adds r2, r5, #4 + mov r0, sp + bl sub_08089D9C + adds r0, r7, #0 + mov r1, sb + mov r2, sp + bl sub_08089840 +_08089E86: + add sp, #0x30 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08089DDC + + thumb_func_start sub_08089E94 +sub_08089E94: @ 0x08089E94 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + subs r7, r6, #1 + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08089804 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08089804 + ldrb r0, [r4, #3] + cmp r0, #2 + bne _08089EC6 + adds r4, r5, #1 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08089804 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08089804 +_08089EC6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08089E94 + + thumb_func_start sub_08089ECC +sub_08089ECC: @ 0x08089ECC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + ldrh r1, [r5, #2] + ldr r0, _08089F08 + cmp r1, r0 + bne _08089F14 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_08089E94 + bl sub_0808A2C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08089F46 + ldr r0, _08089F0C + ldrh r1, [r0] + adds r1, #7 + ldr r0, _08089F10 + ldrh r2, [r0] + adds r2, #7 + adds r0, r4, #0 + bl sub_08089E94 + b _08089F46 + .align 2, 0 +_08089F08: .4byte 0x0000FFFF +_08089F0C: .4byte gUnknown_2037280 +_08089F10: .4byte gUnknown_2037282 +_08089F14: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08089D64 + ldr r3, [r4, #8] + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_08089DDC + bl sub_0808A2C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08089F46 + ldr r0, _08089F4C + ldrh r1, [r0] + adds r1, #7 + ldr r0, _08089F50 + ldrh r2, [r0] + adds r2, #7 + ldr r3, [r4, #8] + adds r0, r4, #0 + bl sub_08089DDC +_08089F46: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08089F4C: .4byte gUnknown_2037280 +_08089F50: .4byte gUnknown_2037282 + thumb_func_end sub_08089ECC + + thumb_func_start sub_08089F54 +sub_08089F54: @ 0x08089F54 + push {r4, r5, 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 _08089F7A + movs r2, #8 + ldrsh r1, [r4, r2] + lsls r1, 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_08089ECC +_08089F7A: + movs r2, #0xa + ldrsh r1, [r4, r2] + movs r2, #8 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r1, r0 + bne _08089FA8 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _08089FAE + movs r0, #0 + b _08089FB0 +_08089FA8: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] +_08089FAE: + movs r0, #1 +_08089FB0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08089F54 + + thumb_func_start sub_08089FB8 +sub_08089FB8: @ 0x08089FB8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #3 + ldr r0, _08089FEC + adds r2, r2, r0 + ldrh r1, [r2] + lsls r1, r1, #0x10 + ldrh r0, [r2, #2] + orrs r1, r0 + ldrh r0, [r2, #4] + lsls r0, r0, #0x10 + ldrh r3, [r2, #6] + orrs r0, r3 + bl sub_08089F54 + cmp r0, #0 + bne _08089FE6 + adds r0, r4, #0 + bl sub_080A8964 +_08089FE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08089FEC: .4byte gUnknown_3005B68 + thumb_func_end sub_08089FB8 + + thumb_func_start sub_08089FF0 +sub_08089FF0: @ 0x08089FF0 + push {lr} + adds r1, r0, #0 + b _08089FF8 +_08089FF6: + adds r1, #4 +_08089FF8: + ldrb r0, [r1] + cmp r0, #0 + bne _08089FF6 + subs r0, r1, #4 + pop {r1} + bx r1 + thumb_func_end sub_08089FF0 + + thumb_func_start sub_0808A004 +sub_0808A004: @ 0x0808A004 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + b _0808A01A +_0808A00E: + ldrh r0, [r2] + cmp r0, r1 + bne _0808A018 + adds r0, r2, #0 + b _0808A022 +_0808A018: + adds r2, #0xc +_0808A01A: + ldr r0, [r2, #4] + cmp r0, #0 + bne _0808A00E + movs r0, #0 +_0808A022: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A004 + + thumb_func_start sub_0808A028 +sub_0808A028: @ 0x0808A028 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + mov r8, r3 + ldr r4, _0808A074 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0808A07C + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _0808A078 + adds r1, r1, r2 + strh r7, [r1, #0xc] + mov r2, r8 + strh r2, [r1, #0xe] + strh r5, [r1, #2] + lsrs r2, r5, #0x10 + strh r2, [r1] + strh r6, [r1, #6] + lsrs r2, r6, #0x10 + strh r2, [r1, #4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _0808A080 + .align 2, 0 +_0808A074: .4byte sub_08089FB8 +_0808A078: .4byte gUnknown_3005B68 +_0808A07C: + movs r0, #1 + rsbs r0, r0, #0 +_0808A080: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A028 + + thumb_func_start sub_0808A08C +sub_0808A08C: @ 0x0808A08C + push {lr} + bl sub_08089E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808A08C + + thumb_func_start sub_0808A098 +sub_0808A098: @ 0x0808A098 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087B88 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A004 + adds r4, r0, #0 + cmp r4, #0 + beq _0808A0CE + ldr r1, _0808A0D4 + adds r0, r1, #0 + bl sub_08089FF0 + adds r1, r0, #0 + adds r0, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_08089ECC +_0808A0CE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808A0D4: .4byte gUnknown_846F3AC + thumb_func_end sub_0808A098 + + thumb_func_start sub_0808A0D8 +sub_0808A0D8: @ 0x0808A0D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087B88 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A004 + adds r2, r0, #0 + adds r4, r2, #0 + cmp r2, #0 + bne _0808A102 + movs r0, #1 + rsbs r0, r0, #0 + b _0808A124 +_0808A102: + ldrb r0, [r2, #3] + cmp r0, #2 + beq _0808A114 + ldr r1, _0808A110 + adds r0, r2, #0 + b _0808A118 + .align 2, 0 +_0808A110: .4byte gUnknown_846F3AC +_0808A114: + ldr r1, _0808A12C + adds r0, r4, #0 +_0808A118: + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808A028 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 +_0808A124: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808A12C: .4byte gUnknown_846F3D4 + thumb_func_end sub_0808A0D8 + + thumb_func_start sub_0808A130 +sub_0808A130: @ 0x0808A130 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087B88 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A004 + cmp r0, #0 + beq _0808A164 + ldr r1, _0808A160 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0808A028 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _0808A168 + .align 2, 0 +_0808A160: .4byte gUnknown_846F3C0 +_0808A164: + movs r0, #1 + rsbs r0, r0, #0 +_0808A168: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A130 + + thumb_func_start sub_0808A170 +sub_0808A170: @ 0x0808A170 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + bl sub_08087B88 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A004 + cmp r0, #0 + beq _0808A194 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _0808A198 +_0808A194: + movs r0, #1 + rsbs r0, r0, #0 +_0808A198: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A170 + + thumb_func_start sub_0808A1A0 +sub_0808A1A0: @ 0x0808A1A0 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0808A1B4 + adds r1, r3, #0 + bl sub_0808A0D8 + pop {r0} + bx r0 + .align 2, 0 +_0808A1B4: .4byte gUnknown_846F594 + thumb_func_end sub_0808A1A0 + + thumb_func_start sub_0808A1B8 +sub_0808A1B8: @ 0x0808A1B8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088860 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A1DA + ldr r0, _0808A1E0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0808A098 +_0808A1DA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808A1E0: .4byte gUnknown_846F594 + thumb_func_end sub_0808A1B8 + + thumb_func_start sub_0808A1E4 +sub_0808A1E4: @ 0x0808A1E4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088860 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A206 + ldr r0, _0808A20C + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0808A08C +_0808A206: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808A20C: .4byte gUnknown_846F594 + thumb_func_end sub_0808A1E4 + + thumb_func_start sub_0808A210 +sub_0808A210: @ 0x0808A210 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088860 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A23C + ldr r0, _0808A238 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0808A130 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _0808A240 + .align 2, 0 +_0808A238: .4byte gUnknown_846F594 +_0808A23C: + movs r0, #1 + rsbs r0, r0, #0 +_0808A240: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A210 + + thumb_func_start sub_0808A248 +sub_0808A248: @ 0x0808A248 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088860 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A274 + ldr r0, _0808A270 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0808A0D8 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _0808A278 + .align 2, 0 +_0808A270: .4byte gUnknown_846F594 +_0808A274: + movs r0, #1 + rsbs r0, r0, #0 +_0808A278: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A248 + + thumb_func_start sub_0808A280 +sub_0808A280: @ 0x0808A280 + push {lr} + ldr r0, _0808A290 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A290: .4byte sub_08089FB8 + thumb_func_end sub_0808A280 + + thumb_func_start sub_0808A294 +sub_0808A294: @ 0x0808A294 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0808A2B4 + adds r1, r3, #0 + bl sub_0808A170 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0808A2BC + cmp r0, #1 + bne _0808A2B8 + movs r0, #0x12 + b _0808A2C2 + .align 2, 0 +_0808A2B4: .4byte gUnknown_846F594 +_0808A2B8: + cmp r0, #2 + beq _0808A2C0 +_0808A2BC: + movs r0, #8 + b _0808A2C2 +_0808A2C0: + movs r0, #0x2f +_0808A2C2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A294 + + thumb_func_start sub_0808A2C8 +sub_0808A2C8: @ 0x0808A2C8 + push {lr} + ldr r0, _0808A2E8 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A2F4 + ldr r0, _0808A2EC + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _0808A2F0 + cmp r1, r0 + bne _0808A2F4 + movs r0, #1 + b _0808A2F6 + .align 2, 0 +_0808A2E8: .4byte 0x00004002 +_0808A2EC: .4byte gUnknown_3005AEC +_0808A2F0: .4byte 0x0000101A +_0808A2F4: + movs r0, #0 +_0808A2F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A2C8 + + thumb_func_start sub_0808A2FC +sub_0808A2FC: @ 0x0808A2FC + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808A318 + adds r0, r0, r2 + ldr r2, _0808A31C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808A318: .4byte gUnknown_2036FF0 +_0808A31C: .4byte sub_0808A320 + thumb_func_end sub_0808A2FC + + thumb_func_start sub_0808A320 +sub_0808A320: @ 0x0808A320 + movs r0, #0 + bx lr + thumb_func_end sub_0808A320 + + thumb_func_start sub_0808A324 +sub_0808A324: @ 0x0808A324 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r4, _0808A394 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808A398 + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_0808BBE4 + ldrb r0, [r4, #6] + cmp r0, #0 + bne _0808A38A + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0811A48C + adds r0, r5, #0 + mov r1, r8 + bl sub_0808A39C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808A38A + adds r0, r5, #0 + bl sub_0808A400 + bl sub_0808AD4C + bl sub_0808A478 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808A38A + mov r0, r8 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0808A424 + bl sub_0808A45C +_0808A38A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808A394: .4byte gUnknown_2037230 +_0808A398: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A324 + + thumb_func_start sub_0808A39C +sub_0808A39C: @ 0x0808A39C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r6, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A3F6 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808A3F6 + adds r0, r4, #0 + bl sub_08092C18 + lsls r0, r0, #0x18 + movs r1, #0xe7 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _0808A3D4 + cmp r5, #0 + bne _0808A3D8 +_0808A3D4: + movs r0, #1 + b _0808A3F8 +_0808A3D8: + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + cmp r0, r5 + beq _0808A3E8 +_0808A3E0: + adds r0, r4, #0 + bl sub_08092BAC + b _0808A3F6 +_0808A3E8: + adds r0, r6, #0 + bl sub_0808A98C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A3E0 + b _0808A3D4 +_0808A3F6: + movs r0, #0 +_0808A3F8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A39C + + thumb_func_start sub_0808A400 +sub_0808A400: @ 0x0808A400 + ldrb r2, [r0, #1] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #5 + rsbs r2, r2, #0 + ands r1, r2 + adds r2, #2 + ands r1, r2 + strb r1, [r0, #1] + ldr r2, _0808A420 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_0808A420: .4byte gUnknown_2037230 + thumb_func_end sub_0808A400 + + thumb_func_start sub_0808A424 +sub_0808A424: @ 0x0808A424 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _0808A448 + ldrb r1, [r0] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + beq _0808A44C + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_081199B4 + b _0808A454 + .align 2, 0 +_0808A448: .4byte gUnknown_2037230 +_0808A44C: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0808A7CC +_0808A454: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808A424 + + thumb_func_start sub_0808A45C +sub_0808A45C: @ 0x0808A45C + push {lr} + ldr r2, _0808A474 + ldrb r0, [r2, #2] + cmp r0, #2 + bne _0808A46E + ldrb r1, [r2] + movs r0, #0xdf + ands r0, r1 + strb r0, [r2] +_0808A46E: + pop {r0} + bx r0 + .align 2, 0 +_0808A474: .4byte gUnknown_2037230 + thumb_func_end sub_0808A45C + + thumb_func_start sub_0808A478 +sub_0808A478: @ 0x0808A478 + push {r4, lr} + ldr r4, _0808A498 + bl sub_0808A49C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_0808A478 + + thumb_func_start sub_0808A48C +sub_0808A48C: @ 0x0808A48C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808A498: .4byte gUnknown_846F864 + thumb_func_end sub_0808A48C + + thumb_func_start sub_0808A49C +sub_0808A49C: @ 0x0808A49C + push {r4, r5, r6, lr} + ldr r3, _0808A4D8 + ldrb r1, [r3] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0808A4EE + ldr r2, _0808A4DC + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r5, [r0, #0x1e] + movs r4, #0 + ldr r6, _0808A4E0 +_0808A4BC: + lsls r0, r4, #2 + adds r0, r0, r6 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A4E4 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808A4F0 + .align 2, 0 +_0808A4D8: .4byte gUnknown_2037230 +_0808A4DC: .4byte gUnknown_2036FF0 +_0808A4E0: .4byte gUnknown_846F81C +_0808A4E4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x11 + bls _0808A4BC +_0808A4EE: + movs r0, #0 +_0808A4F0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A49C + + thumb_func_start sub_0808A4F8 +sub_0808A4F8: @ 0x0808A4F8 + push {r4, lr} + ldr r4, _0808A53C + ldrb r1, [r4] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0808A532 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808A540 + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #1] + ldrb r1, [r0, #0x18] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + bl sub_0808E930 + ldrb r1, [r4] + movs r0, #0xbf + ands r0, r1 + strb r0, [r4] +_0808A532: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808A53C: .4byte gUnknown_2037230 +_0808A540: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A4F8 + + thumb_func_start sub_0808A544 +sub_0808A544: @ 0x0808A544 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _0808A584 + adds r0, r5, #0 + bl sub_0808A920 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, r4, #0 + ldrb r0, [r6] + movs r1, #0x40 + mov sl, r1 + movs r1, #0 + mov r8, r1 + mov r1, sl + orrs r0, r1 + strb r0, [r6] + cmp r4, #0 + beq _0808A5A0 + bl sub_0808A4F8 + cmp r4, #4 + bhi _0808A588 + movs r0, #0 + b _0808A5AC + .align 2, 0 +_0808A584: .4byte gUnknown_2037230 +_0808A588: + cmp r7, #6 + bne _0808A592 + adds r0, r5, #0 + bl sub_0808B1A4 +_0808A592: + ldrb r0, [r6] + mov r1, sl + orrs r0, r1 + strb r0, [r6] + movs r0, #2 + strb r0, [r6, #2] + b _0808A5AA +_0808A5A0: + movs r0, #2 + strb r0, [r6, #2] + adds r0, r5, #0 + bl _call_via_r9 +_0808A5AA: + movs r0, #1 +_0808A5AC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A544 + + thumb_func_start sub_0808A5BC +sub_0808A5BC: @ 0x0808A5BC + push {lr} + adds r1, r0, #0 + ldr r0, _0808A5E8 + ldrb r2, [r0, #5] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808A5EC + adds r0, r0, r2 + ldrb r2, [r0, #1] + movs r3, #4 + orrs r2, r3 + strb r2, [r0, #1] + ldrb r0, [r0, #0x18] + lsrs r0, r0, #4 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A5E8: .4byte gUnknown_2037230 +_0808A5EC: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A5BC + + thumb_func_start sub_0808A5F0 +sub_0808A5F0: @ 0x0808A5F0 + push {lr} + ldr r0, _0808A600 + bl sub_0808A5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A600: .4byte sub_0808B09C + thumb_func_end sub_0808A5F0 + + thumb_func_start sub_0808A604 +sub_0808A604: @ 0x0808A604 + push {lr} + ldr r1, _0808A618 + movs r0, #1 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A618: .4byte sub_0808B084 + thumb_func_end sub_0808A604 + + thumb_func_start sub_0808A61C +sub_0808A61C: @ 0x0808A61C + push {lr} + ldr r1, _0808A630 + movs r0, #2 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A630: .4byte sub_0808B084 + thumb_func_end sub_0808A61C + + thumb_func_start sub_0808A634 +sub_0808A634: @ 0x0808A634 + push {lr} + ldr r1, _0808A648 + movs r0, #3 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A648: .4byte sub_0808B084 + thumb_func_end sub_0808A634 + + thumb_func_start sub_0808A64C +sub_0808A64C: @ 0x0808A64C + push {lr} + ldr r1, _0808A660 + movs r0, #4 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A660: .4byte sub_0808B084 + thumb_func_end sub_0808A64C + + thumb_func_start sub_0808A664 +sub_0808A664: @ 0x0808A664 + push {lr} + ldr r1, _0808A678 + movs r0, #1 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A678: .4byte sub_0808B0B4 + thumb_func_end sub_0808A664 + + thumb_func_start sub_0808A67C +sub_0808A67C: @ 0x0808A67C + push {lr} + ldr r1, _0808A690 + movs r0, #2 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A690: .4byte sub_0808B0B4 + thumb_func_end sub_0808A67C + + thumb_func_start sub_0808A694 +sub_0808A694: @ 0x0808A694 + push {lr} + ldr r1, _0808A6A8 + movs r0, #3 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A6A8: .4byte sub_0808B0B4 + thumb_func_end sub_0808A694 + + thumb_func_start sub_0808A6AC +sub_0808A6AC: @ 0x0808A6AC + push {lr} + ldr r1, _0808A6C0 + movs r0, #4 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A6C0: .4byte sub_0808B0B4 + thumb_func_end sub_0808A6AC + + thumb_func_start sub_0808A6C4 +sub_0808A6C4: @ 0x0808A6C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808A6F4 + ldrb r3, [r2, #5] + lsls r2, r3, #3 + adds r2, r2, r3 + lsls r2, r2, #2 + ldr r3, _0808A6F8 + adds r2, r2, r3 + ldrb r3, [r2, #1] + movs r4, #4 + orrs r3, r4 + movs r4, #2 + orrs r3, r4 + strb r3, [r2, #1] + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808A6F4: .4byte gUnknown_2037230 +_0808A6F8: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A6C4 + + thumb_func_start sub_0808A6FC +sub_0808A6FC: @ 0x0808A6FC + push {lr} + ldr r1, _0808A710 + movs r0, #1 + bl sub_0808A6C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A710: .4byte sub_0808B09C + thumb_func_end sub_0808A6FC + + thumb_func_start sub_0808A714 +sub_0808A714: @ 0x0808A714 + push {lr} + ldr r1, _0808A728 + movs r0, #2 + bl sub_0808A6C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A728: .4byte sub_0808B09C + thumb_func_end sub_0808A714 + + thumb_func_start sub_0808A72C +sub_0808A72C: @ 0x0808A72C + push {lr} + ldr r1, _0808A740 + movs r0, #3 + bl sub_0808A6C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A740: .4byte sub_0808B09C + thumb_func_end sub_0808A72C + + thumb_func_start sub_0808A744 +sub_0808A744: @ 0x0808A744 + push {lr} + ldr r1, _0808A758 + movs r0, #4 + bl sub_0808A6C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808A758: .4byte sub_0808B09C + thumb_func_end sub_0808A744 + + thumb_func_start sub_0808A75C +sub_0808A75C: @ 0x0808A75C + push {lr} + bl sub_0808BE3C + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0808A75C + + thumb_func_start sub_0808A768 +sub_0808A768: @ 0x0808A768 + push {lr} + bl sub_0808BF14 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0808A768 + + thumb_func_start sub_0808A774 +sub_0808A774: @ 0x0808A774 + push {r4, lr} + ldr r0, _0808A7B8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808A7BC + adds r4, r0, r1 + ldrb r1, [r4, #0x18] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x20 + bne _0808A79A + bl sub_0811A988 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bgt _0808A7C4 +_0808A79A: + movs r0, #0 + bl sub_0811A964 + ldrb r0, [r4, #1] + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #1] + ldr r1, _0808A7C0 + movs r0, #1 + bl sub_0808A544 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808A7C6 + .align 2, 0 +_0808A7B8: .4byte gUnknown_2037230 +_0808A7BC: .4byte gUnknown_2036FF0 +_0808A7C0: .4byte sub_0808B09C +_0808A7C4: + movs r0, #0 +_0808A7C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808A774 + + thumb_func_start sub_0808A7CC +sub_0808A7CC: @ 0x0808A7CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r6, _0808A7F8 + adds r0, r4, #0 + bl sub_0808A7FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r6 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 + pop {r4, r5, r6} + thumb_func_end sub_0808A7CC + + thumb_func_start sub_0808A7F4 +sub_0808A7F4: @ 0x0808A7F4 + pop {r0} + bx r0 + .align 2, 0 +_0808A7F8: .4byte gUnknown_846F8B0 + thumb_func_end sub_0808A7F4 + + thumb_func_start sub_0808A7FC +sub_0808A7FC: @ 0x0808A7FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0808A814 + ldr r0, _0808A810 + strb r4, [r0, #2] + movs r0, #0 + b _0808A836 + .align 2, 0 +_0808A810: .4byte gUnknown_2037230 +_0808A814: + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _0808A830 + ldr r1, _0808A82C + ldrb r0, [r1, #2] + cmp r0, #2 + beq _0808A830 + movs r0, #1 + b _0808A834 + .align 2, 0 +_0808A82C: .4byte gUnknown_2037230 +_0808A830: + ldr r1, _0808A83C + movs r0, #2 +_0808A834: + strb r0, [r1, #2] +_0808A836: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808A83C: .4byte gUnknown_2037230 + thumb_func_end sub_0808A7FC + + thumb_func_start sub_0808A840 +sub_0808A840: @ 0x0808A840 + push {lr} + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B174 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808A840 + + thumb_func_start sub_0808A854 +sub_0808A854: @ 0x0808A854 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B18C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808A854 + + thumb_func_start sub_0808A864 +sub_0808A864: @ 0x0808A864 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + adds r0, r5, #0 + bl sub_0808A920 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0808A8B2 + cmp r4, #6 + bne _0808A888 + adds r0, r5, #0 + bl sub_0808B1A4 + b _0808A91A +_0808A888: + cmp r4, #4 + bne _0808A8A0 + adds r0, r5, #0 + bl sub_0808AC88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A8A0 + adds r0, r5, #0 + bl sub_0808B15C + b _0808A91A +_0808A8A0: + subs r0, r4, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0808A91A + adds r0, r5, #0 + bl sub_0808B138 + b _0808A91A +_0808A8B2: + ldr r4, _0808A8C8 + ldrb r1, [r4] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0808A8CC + adds r0, r5, #0 + bl sub_0808B09C + b _0808A91A + .align 2, 0 +_0808A8C8: .4byte gUnknown_2037230 +_0808A8CC: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0808A914 + movs r0, #2 + ands r6, r0 + cmp r6, #0 + beq _0808A914 + movs r0, #0x8c + lsls r0, r0, #4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808A914 + ldr r2, _0808A910 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1e] + bl sub_0811AA2C + cmp r0, #0 + bne _0808A914 + adds r0, r5, #0 + bl sub_0808B0E4 + ldrb r1, [r4] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4] + b _0808A91A + .align 2, 0 +_0808A910: .4byte gUnknown_2036FF0 +_0808A914: + adds r0, r5, #0 + bl sub_0808B084 +_0808A91A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0808A864 + + thumb_func_start sub_0808A920 +sub_0808A920: @ 0x0808A920 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0808A984 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808A988 + adds r4, r4, r0 + ldrh r1, [r4, #0x10] + add r0, sp, #4 + strh r1, [r0] + ldrh r0, [r4, #0x12] + mov r5, sp + adds r5, #6 + strh r0, [r5] + adds r0, r6, #0 + add r1, sp, #4 + adds r2, r5, #0 + bl sub_080928AC + add r0, sp, #4 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r1, sp, #4 + 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_0808A9F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808A984: .4byte gUnknown_2037230 +_0808A988: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A920 + + thumb_func_start sub_0808A98C +sub_0808A98C: @ 0x0808A98C + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0808A9F0 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808A9F4 + adds r4, r4, r0 + ldrh r1, [r4, #0x10] + add r0, sp, #4 + strh r1, [r0] + ldrh r0, [r4, #0x12] + mov r5, sp + adds r5, #6 + strh r0, [r5] + adds r0, r6, #0 + add r1, sp, #4 + adds r2, r5, #0 + bl sub_080928AC + add r0, sp, #4 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r1, sp, #4 + 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_0808AAC8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808A9F0: .4byte gUnknown_2037230 +_0808A9F4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808A98C + + thumb_func_start sub_0808A9F8 +sub_0808A9F8: @ 0x0808A9F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + lsls r1, r1, #0x10 + lsls r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + lsrs r7, r1, #0x10 + asrs r5, r1, #0x10 + lsrs r1, r2, #0x10 + mov sb, r1 + asrs r4, r2, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_08092538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + cmp r0, #3 + bne _0808AA48 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0808AB20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AA48 + movs r0, #5 + b _0808AAB6 +_0808AA48: + lsls r5, r7, #0x10 + asrs r0, r5, #0x10 + mov r8, r0 + mov r1, sb + lsls r4, r1, #0x10 + asrs r7, r4, #0x10 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0808AB78 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AA6C + movs r0, #0x2b + bl sub_0808414C + movs r0, #6 + b _0808AAB6 +_0808AA6C: + mov r0, sp + ldrb r0, [r0] + cmp r0, #4 + bne _0808AA88 + mov r0, r8 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0808AB9C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AA88 + movs r0, #7 + b _0808AAB6 +_0808AA88: + mov r0, sp + ldrb r0, [r0] + cmp r0, #0 + bne _0808AAB2 + asrs r5, r5, #0x10 + asrs r4, r4, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080FC760 + cmp r0, #0 + beq _0808AAA6 + movs r0, #8 + b _0808AAB6 +_0808AAA6: + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, sl + mov r3, sp + bl sub_0808AC48 +_0808AAB2: + mov r0, sp + ldrb r0, [r0] +_0808AAB6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808A9F8 + + thumb_func_start sub_0808AAC8 +sub_0808AAC8: @ 0x0808AAC8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r4, [sp, #0x18] + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + lsls r2, r2, #0x10 + asrs r4, r2, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_08092538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + cmp r0, #0 + bne _0808AB12 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080FC844 + cmp r0, #0 + beq _0808AB06 + movs r0, #8 + b _0808AB16 +_0808AB06: + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + mov r3, sp + bl sub_0808AC48 +_0808AB12: + mov r0, sp + ldrb r0, [r0] +_0808AB16: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AAC8 + + thumb_func_start sub_0808AB20 +sub_0808AB20: @ 0x0808AB20 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _0808AB6C + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0808AB70 + lsls r5, r3, #0x10 + asrs r0, r5, #0x10 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808AB70 + lsrs r0, r5, #0x10 + lsrs r1, r4, #0x10 + movs r2, #3 + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bne _0808AB70 + adds r0, r6, #0 + bl sub_0808C0B4 + movs r0, #1 + b _0808AB72 + .align 2, 0 +_0808AB6C: .4byte gUnknown_2037230 +_0808AB70: + movs r0, #0 +_0808AB72: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808AB20 + + thumb_func_start sub_0808AB78 +sub_0808AB78: @ 0x0808AB78 + push {lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0809657C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AB94 + movs r0, #0 + b _0808AB96 +_0808AB94: + movs r0, #1 +_0808AB96: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AB78 + + thumb_func_start sub_0808AB9C +sub_0808AB9C: @ 0x0808AB9C + push {r4, r5, r6, r7, lr} + sub sp, #4 + mov r3, sp + strh r0, [r3] + mov r5, sp + adds r5, #2 + strh r1, [r5] + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r0, _0808AC34 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AC3C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_0808CEE4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x10 + beq _0808AC3C + ldr r0, _0808AC38 + lsls r1, r6, #3 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r4, r1, r0 + ldrb r0, [r4, #5] + cmp r0, #0x57 + bne _0808AC3C + 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_080928AC + 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_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AC3C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080888BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AC3C + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_0808BC74 + movs r0, #1 + b _0808AC3E + .align 2, 0 +_0808AC34: .4byte 0x00000889 +_0808AC38: .4byte gUnknown_2036FF0 +_0808AC3C: + movs r0, #0 +_0808AC3E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AB9C + + thumb_func_start sub_0808AC48 +sub_0808AC48: @ 0x0808AC48 + push {r4, r5, r6, r7, lr} + adds r6, r3, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r4, #0 + ldr r7, _0808AC70 +_0808AC54: + lsls r0, r4, #2 + adds r0, r0, r7 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AC78 + ldr r0, _0808AC74 + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r6] + b _0808AC82 + .align 2, 0 +_0808AC70: .4byte gUnknown_846F8BC +_0808AC74: .4byte gUnknown_846F8D0 +_0808AC78: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _0808AC54 +_0808AC82: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0808AC48 + + thumb_func_start sub_0808AC88 +sub_0808AC88: @ 0x0808AC88 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808AD1C + ldrb r2, [r1, #5] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r5, _0808AD20 + adds r3, r1, r5 + ldrh r2, [r3, #0x10] + mov r1, sp + strh r2, [r1] + ldrh r1, [r3, #0x12] + mov r4, sp + adds r4, #2 + strh r1, [r4] + mov r1, sp + adds r2, r4, #0 + bl sub_080928AC + movs r0, #1 + movs r1, #0x39 + movs r2, #0x1a + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r6, r4, #0 + cmp r1, #0x10 + beq _0808AD24 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r5 + mov r0, sp + movs r1, #0x14 + ldrsh r2, [r3, r1] + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r2, r0 + bne _0808AD24 + movs r5, #0x16 + ldrsh r1, [r3, r5] + movs r4, #0 + ldrsh r0, [r6, r4] + ldrh r4, [r3, #0x16] + cmp r1, r0 + bne _0808ACFC + movs r5, #0x10 + ldrsh r0, [r3, r5] + cmp r0, r2 + bne _0808ACFC + movs r2, #0x12 + ldrsh r0, [r3, r2] + cmp r0, r1 + beq _0808AD24 +_0808ACFC: + mov r0, sp + movs r5, #0x14 + ldrsh r1, [r3, r5] + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _0808AD24 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + movs r4, #0 + ldrsh r1, [r6, r4] + cmp r0, r1 + bne _0808AD24 + movs r0, #1 + b _0808AD26 + .align 2, 0 +_0808AD1C: .4byte gUnknown_2037230 +_0808AD20: .4byte gUnknown_2036FF0 +_0808AD24: + movs r0, #0 +_0808AD26: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AC88 + + thumb_func_start sub_0808AD30 +sub_0808AD30: @ 0x0808AD30 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0808AD48 + ldrb r1, [r2, #1] + orrs r0, r1 + strb r0, [r2, #1] + bl sub_0808AD4C + pop {r0} + bx r0 + .align 2, 0 +_0808AD48: .4byte gUnknown_2037230 + thumb_func_end sub_0808AD30 + + thumb_func_start sub_0808AD4C +sub_0808AD4C: @ 0x0808AD4C + push {r4, r5, lr} + ldr r0, _0808AD94 + ldrb r4, [r0, #1] + cmp r4, #0 + beq _0808AD8C + movs r5, #0 +_0808AD58: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0808AD7A + ldr r0, _0808AD98 + lsls r2, r5, #2 + adds r2, r2, r0 + ldr r0, _0808AD94 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808AD9C + adds r0, r0, r1 + ldr r1, [r2] + bl _call_via_r1 +_0808AD7A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsrs r4, r4, #1 + cmp r5, #7 + bls _0808AD58 + ldr r1, _0808AD94 + movs r0, #0 + strb r0, [r1, #1] +_0808AD8C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808AD94: .4byte gUnknown_2037230 +_0808AD98: .4byte gUnknown_846F8D8 +_0808AD9C: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808AD4C + + thumb_func_start sub_0808ADA0 +sub_0808ADA0: @ 0x0808ADA0 + bx lr + .align 2, 0 + thumb_func_end sub_0808ADA0 + + thumb_func_start sub_0808ADA4 +sub_0808ADA4: @ 0x0808ADA4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + movs r0, #1 + bl sub_0808B878 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808ADA4 + + thumb_func_start sub_0808ADD0 +sub_0808ADD0: @ 0x0808ADD0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + movs r0, #2 + bl sub_0808B878 + movs r0, #0 + movs r1, #0 + bl sub_0811A920 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808ADD0 + + thumb_func_start sub_0808AE04 +sub_0808AE04: @ 0x0808AE04 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + movs r0, #4 + bl sub_0808B878 + movs r0, #0 + movs r1, #0 + bl sub_0811A920 + bl sub_0811A9D8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808AE04 + + thumb_func_start sub_0808AE3C +sub_0808AE3C: @ 0x0808AE3C + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + movs r0, #8 + bl sub_0808B878 + ldr r1, _0808AE90 + movs r2, #0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, #0x12 + ldrsh r0, [r4, r2] + str r0, [r1, #4] + ldr r0, _0808AE94 + ldrb r0, [r0, #5] + str r0, [r1, #8] + movs r0, #8 + bl sub_080B5270 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x1a] + movs r1, #1 + bl sub_081554E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808AE90: .4byte gUnknown_20388A8 +_0808AE94: .4byte gUnknown_2037230 + thumb_func_end sub_0808AE3C + + thumb_func_start sub_0808AE98 +sub_0808AE98: @ 0x0808AE98 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + movs r0, #0x10 + bl sub_0808B878 + ldrb r0, [r4, #4] + bl sub_0815573C + strb r0, [r4, #0x1a] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808AE98 + + thumb_func_start sub_0808AECC +sub_0808AECC: @ 0x0808AECC + ldr r2, _0808AED8 + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_0808AED8: .4byte gUnknown_2037230 + thumb_func_end sub_0808AECC + + thumb_func_start sub_0808AEDC +sub_0808AEDC: @ 0x0808AEDC + push {r4, lr} + ldr r4, _0808AF08 + movs r0, #0 + strb r0, [r4, #3] + bl sub_0808AFA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AF1A + bl sub_0808AFC4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AF0C + bl sub_0808AF20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AF1A + movs r0, #1 + b _0808AF18 + .align 2, 0 +_0808AF08: .4byte gUnknown_2037230 +_0808AF0C: + bl sub_0808AF7C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808AF1A + movs r0, #2 +_0808AF18: + strb r0, [r4, #3] +_0808AF1A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808AEDC + + thumb_func_start sub_0808AF20 +sub_0808AF20: @ 0x0808AF20 + push {lr} + ldr r2, _0808AF6C + ldr r0, _0808AF70 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #0x1c] + cmp r1, #3 + bls _0808AF66 + adds r0, r1, #0 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _0808AF66 + adds r0, r1, #0 + subs r0, #0x19 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _0808AF66 + adds r0, r1, #0 + subs r0, #0x64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb + bls _0808AF66 + adds r0, r1, #0 + subs r0, #0x7c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _0808AF74 +_0808AF66: + movs r0, #1 + b _0808AF76 + .align 2, 0 +_0808AF6C: .4byte gUnknown_2036FF0 +_0808AF70: .4byte gUnknown_2037230 +_0808AF74: + movs r0, #0 +_0808AF76: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AF20 + + thumb_func_start sub_0808AF7C +sub_0808AF7C: @ 0x0808AF7C + push {lr} + bl sub_0808AF20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808AF98 + ldr r0, _0808AF94 + ldrb r0, [r0, #2] + cmp r0, #1 + beq _0808AF98 + movs r0, #1 + b _0808AF9A + .align 2, 0 +_0808AF94: .4byte gUnknown_2037230 +_0808AF98: + movs r0, #0 +_0808AF9A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808AF7C + + thumb_func_start sub_0808AFA0 +sub_0808AFA0: @ 0x0808AFA0 + push {lr} + ldr r0, _0808AFBC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808AFC0 + adds r0, r0, r1 + bl sub_08092AFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808AFBC: .4byte gUnknown_2037230 +_0808AFC0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808AFA0 + + thumb_func_start sub_0808AFC4 +sub_0808AFC4: @ 0x0808AFC4 + push {lr} + ldr r0, _0808AFE0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808AFE4 + adds r0, r0, r1 + bl sub_08092BE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808AFE0: .4byte gUnknown_2037230 +_0808AFE4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808AFC4 + + thumb_func_start sub_0808AFE8 +sub_0808AFE8: @ 0x0808AFE8 + ldr r3, _0808AFFC + ldr r1, _0808B000 + ldrb r2, [r1, #5] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + adds r1, #0x22 + strb r0, [r1] + bx lr + .align 2, 0 +_0808AFFC: .4byte gUnknown_2036FF0 +_0808B000: .4byte gUnknown_2037230 + thumb_func_end sub_0808AFE8 + + thumb_func_start sub_0808B004 +sub_0808B004: @ 0x0808B004 + ldr r2, _0808B018 + ldr r0, _0808B01C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x22 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808B018: .4byte gUnknown_2036FF0 +_0808B01C: .4byte gUnknown_2037230 + thumb_func_end sub_0808B004 + + thumb_func_start sub_0808B020 +sub_0808B020: @ 0x0808B020 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0808B040 + ldrb r2, [r0, #5] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808B044 + adds r0, r0, r2 + bl sub_08092B78 + pop {r0} + bx r0 + .align 2, 0 +_0808B040: .4byte gUnknown_2037230 +_0808B044: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808B020 + + thumb_func_start sub_0808B048 +sub_0808B048: @ 0x0808B048 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_0808AFA0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808B076 + adds r0, r4, #0 + bl sub_0808AFE8 + ldr r0, _0808B07C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808B080 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_08092B30 +_0808B076: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B07C: .4byte gUnknown_2037230 +_0808B080: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808B048 + + thumb_func_start sub_0808B084 +sub_0808B084: @ 0x0808B084 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B084 + + thumb_func_start sub_0808B09C +sub_0808B09C: @ 0x0808B09C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092D24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B09C + + thumb_func_start sub_0808B0B4 +sub_0808B0B4: @ 0x0808B0B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092D50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B0B4 + + thumb_func_start sub_0808B0CC +sub_0808B0CC: @ 0x0808B0CC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092D7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B0CC + + thumb_func_start sub_0808B0E4 +sub_0808B0E4: @ 0x0808B0E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092DD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B0E4 + + thumb_func_start sub_0808B0FC +sub_0808B0FC: @ 0x0808B0FC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0808B350 + adds r0, r4, #0 + bl sub_08092F08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B0FC + + thumb_func_start sub_0808B120 +sub_0808B120: @ 0x0808B120 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092F08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B120 + + thumb_func_start sub_0808B138 +sub_0808B138: @ 0x0808B138 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0808B350 + adds r0, r4, #0 + bl sub_08092EDC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B138 + + thumb_func_start sub_0808B15C +sub_0808B15C: @ 0x0808B15C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092EDC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B15C + + thumb_func_start sub_0808B174 +sub_0808B174: @ 0x0808B174 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B174 + + thumb_func_start sub_0808B18C +sub_0808B18C: @ 0x0808B18C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B18C + + thumb_func_start sub_0808B1A4 +sub_0808B1A4: @ 0x0808B1A4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xa + bl sub_080A306C + adds r0, r4, #0 + bl sub_08092E00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #8 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B1A4 + + thumb_func_start sub_0808B1C8 +sub_0808B1C8: @ 0x0808B1C8 + push {r4, lr} + ldr r4, _0808B204 + ldrb r0, [r4, #3] + cmp r0, #2 + beq _0808B1D6 + cmp r0, #0 + bne _0808B1FE +_0808B1D6: + bl sub_0811A894 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808B1FE + ldr r2, _0808B208 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B020 +_0808B1FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B204: .4byte gUnknown_2037230 +_0808B208: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808B1C8 + + thumb_func_start sub_0808B20C +sub_0808B20C: @ 0x0808B20C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092FB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B20C + + thumb_func_start sub_0808B224 +sub_0808B224: @ 0x0808B224 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092FE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B224 + + thumb_func_start sub_0808B23C +sub_0808B23C: @ 0x0808B23C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08093010 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B23C + + thumb_func_start sub_0808B254 +sub_0808B254: @ 0x0808B254 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x22 + bl sub_080A306C + adds r0, r4, #0 + bl sub_0809303C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B254 + + thumb_func_start sub_0808B278 +sub_0808B278: @ 0x0808B278 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x22 + bl sub_080A306C + adds r0, r4, #0 + bl sub_08093068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B278 + + thumb_func_start sub_0808B29C +sub_0808B29C: @ 0x0808B29C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x22 + bl sub_080A306C + adds r0, r4, #0 + bl sub_08093094 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #8 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B29C + + thumb_func_start sub_0808B2C0 +sub_0808B2C0: @ 0x0808B2C0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x22 + bl sub_080A306C + adds r0, r4, #0 + bl sub_08092E58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B2C0 + + thumb_func_start sub_0808B2E4 +sub_0808B2E4: @ 0x0808B2E4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #7 + bl sub_080A306C + adds r0, r4, #0 + bl sub_080930C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808B2E4 + + thumb_func_start sub_0808B308 +sub_0808B308: @ 0x0808B308 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080930EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B308 + + thumb_func_start sub_0808B320 +sub_0808B320: @ 0x0808B320 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08093118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B320 + + thumb_func_start sub_0808B338 +sub_0808B338: @ 0x0808B338 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08093144 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 + pop {r0} + bx r0 + thumb_func_end sub_0808B338 + + thumb_func_start sub_0808B350 +sub_0808B350: @ 0x0808B350 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _0808B3C0 + ldr r0, _0808B3C4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1e] + ldr r2, _0808B3C8 + subs r1, r4, #1 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808B3B8 + cmp r4, #2 + bne _0808B3B2 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + movs r0, #2 + mov r1, sp + adds r2, r4, #0 + bl sub_080928AC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808884C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808B3B8 +_0808B3B2: + movs r0, #7 + bl sub_080A306C +_0808B3B8: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B3C0: .4byte gUnknown_2036FF0 +_0808B3C4: .4byte gUnknown_2037230 +_0808B3C8: .4byte gUnknown_846F8F8 + thumb_func_end sub_0808B350 + + thumb_func_start sub_0808B3CC +sub_0808B3CC: @ 0x0808B3CC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r3, _0808B408 + ldr r2, _0808B40C + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x10] + strh r0, [r4] + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x12] + strh r0, [r5] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080928AC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B408: .4byte gUnknown_2036FF0 +_0808B40C: .4byte gUnknown_2037230 + thumb_func_end sub_0808B3CC + + thumb_func_start sub_0808B410 +sub_0808B410: @ 0x0808B410 + push {r4, r5, lr} + ldr r5, _0808B438 + ldr r4, _0808B43C + ldrb r3, [r4, #5] + lsls r2, r3, #3 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrh r2, [r2, #0x10] + strh r2, [r0] + ldrb r2, [r4, #5] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r0, [r0, #0x12] + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B438: .4byte gUnknown_2036FF0 +_0808B43C: .4byte gUnknown_2037230 + thumb_func_end sub_0808B410 + + thumb_func_start sub_0808B440 +sub_0808B440: @ 0x0808B440 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _0808B494 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808B498 + adds r3, r0, r1 + ldrb r1, [r3] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x40 + beq _0808B460 + b _0808B588 +_0808B460: + ldr r2, _0808B49C + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x32 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0808B476 + b _0808B588 +_0808B476: + ldrh r0, [r3, #0x10] + strh r0, [r4] + ldrh r0, [r3, #0x12] + strh r0, [r5] + ldrb r0, [r3, #0x1c] + subs r0, #8 + cmp r0, #0x30 + bls _0808B488 + b _0808B588 +_0808B488: + lsls r0, r0, #2 + ldr r1, _0808B4A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808B494: .4byte gUnknown_2037230 +_0808B498: .4byte gUnknown_2036FF0 +_0808B49C: .4byte gUnknown_20205AC +_0808B4A0: .4byte _0808B4A4 +_0808B4A4: @ jump table + .4byte _0808B568 @ case 0 + .4byte _0808B56E @ case 1 + .4byte _0808B578 @ case 2 + .4byte _0808B57E @ case 3 + .4byte _0808B588 @ case 4 + .4byte _0808B588 @ case 5 + .4byte _0808B588 @ case 6 + .4byte _0808B588 @ case 7 + .4byte _0808B588 @ case 8 + .4byte _0808B588 @ case 9 + .4byte _0808B588 @ case 10 + .4byte _0808B588 @ case 11 + .4byte _0808B588 @ case 12 + .4byte _0808B588 @ case 13 + .4byte _0808B588 @ case 14 + .4byte _0808B588 @ case 15 + .4byte _0808B588 @ case 16 + .4byte _0808B588 @ case 17 + .4byte _0808B588 @ case 18 + .4byte _0808B588 @ case 19 + .4byte _0808B588 @ case 20 + .4byte _0808B588 @ case 21 + .4byte _0808B588 @ case 22 + .4byte _0808B588 @ case 23 + .4byte _0808B588 @ case 24 + .4byte _0808B588 @ case 25 + .4byte _0808B588 @ case 26 + .4byte _0808B588 @ case 27 + .4byte _0808B588 @ case 28 + .4byte _0808B588 @ case 29 + .4byte _0808B588 @ case 30 + .4byte _0808B588 @ case 31 + .4byte _0808B588 @ case 32 + .4byte _0808B588 @ case 33 + .4byte _0808B588 @ case 34 + .4byte _0808B588 @ case 35 + .4byte _0808B588 @ case 36 + .4byte _0808B588 @ case 37 + .4byte _0808B588 @ case 38 + .4byte _0808B588 @ case 39 + .4byte _0808B588 @ case 40 + .4byte _0808B588 @ case 41 + .4byte _0808B588 @ case 42 + .4byte _0808B588 @ case 43 + .4byte _0808B588 @ case 44 + .4byte _0808B568 @ case 45 + .4byte _0808B56E @ case 46 + .4byte _0808B578 @ case 47 + .4byte _0808B57E @ case 48 +_0808B568: + ldrh r0, [r5] + adds r0, #1 + b _0808B572 +_0808B56E: + ldrh r0, [r5] + subs r0, #1 +_0808B572: + strh r0, [r5] + movs r0, #1 + b _0808B594 +_0808B578: + ldrh r0, [r4] + subs r0, #1 + b _0808B582 +_0808B57E: + ldrh r0, [r4] + adds r0, #1 +_0808B582: + strh r0, [r4] + movs r0, #1 + b _0808B594 +_0808B588: + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 + strh r0, [r4] + strh r0, [r5] + movs r0, #0 +_0808B594: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808B440 + + thumb_func_start sub_0808B59C +sub_0808B59C: @ 0x0808B59C + ldr r2, _0808B5B4 + ldr r0, _0808B5B8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bx lr + .align 2, 0 +_0808B5B4: .4byte gUnknown_2036FF0 +_0808B5B8: .4byte gUnknown_2037230 + thumb_func_end sub_0808B59C + + thumb_func_start sub_0808B5BC +sub_0808B5BC: @ 0x0808B5BC + ldr r2, _0808B5D0 + ldr r0, _0808B5D4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x18] + lsrs r0, r0, #4 + bx lr + .align 2, 0 +_0808B5D0: .4byte gUnknown_2036FF0 +_0808B5D4: .4byte gUnknown_2037230 + thumb_func_end sub_0808B5BC + + thumb_func_start sub_0808B5D8 +sub_0808B5D8: @ 0x0808B5D8 + ldr r2, _0808B5EC + ldr r0, _0808B5F0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0xb] + lsrs r0, r0, #4 + bx lr + .align 2, 0 +_0808B5EC: .4byte gUnknown_2036FF0 +_0808B5F0: .4byte gUnknown_2037230 + thumb_func_end sub_0808B5D8 + + thumb_func_start sub_0808B5F4 +sub_0808B5F4: @ 0x0808B5F4 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0808B61C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808B620 + adds r0, r0, r1 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r1, r3, #0 + bl sub_0808E478 + pop {r0} + bx r0 + .align 2, 0 +_0808B61C: .4byte gUnknown_2037230 +_0808B620: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808B5F4 + + thumb_func_start sub_0808B624 +sub_0808B624: @ 0x0808B624 + ldr r1, _0808B630 + ldrb r1, [r1] + ands r1, r0 + adds r0, r1, #0 + bx lr + .align 2, 0 +_0808B630: .4byte gUnknown_2037230 + thumb_func_end sub_0808B624 + + thumb_func_start sub_0808B634 +sub_0808B634: @ 0x0808B634 + ldr r0, _0808B63C + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808B63C: .4byte gUnknown_2037230 + thumb_func_end sub_0808B634 + + thumb_func_start sub_0808B640 +sub_0808B640: @ 0x0808B640 + ldr r0, _0808B648 + ldrb r0, [r0, #4] + bx lr + .align 2, 0 +_0808B648: .4byte gUnknown_2037230 + thumb_func_end sub_0808B640 + + thumb_func_start sub_0808B64C +sub_0808B64C: @ 0x0808B64C + push {lr} + bl sub_0808A4F8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808B64C + + thumb_func_start sub_0808B658 +sub_0808B658: @ 0x0808B658 + push {r4, lr} + ldr r0, _0808B698 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808B69C + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0808A400 + ldrb r1, [r4, #0x18] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #6 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808B690 + bl sub_0811A9D8 + movs r0, #0 + bl sub_0811A964 +_0808B690: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808B698: .4byte gUnknown_2037230 +_0808B69C: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808B658 + + thumb_func_start sub_0808B6A0 +sub_0808B6A0: @ 0x0808B6A0 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0808B6B4 + lsrs r0, r0, #0x17 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_0808B6B4: .4byte gUnknown_846F908 + thumb_func_end sub_0808B6A0 + + thumb_func_start sub_0808B6B8 +sub_0808B6B8: @ 0x0808B6B8 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0808B6CC + lsrs r0, r0, #0x17 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_0808B6CC: .4byte gUnknown_846F918 + thumb_func_end sub_0808B6B8 + + thumb_func_start sub_0808B6D0 +sub_0808B6D0: @ 0x0808B6D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808B6DC + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808B6DC: .4byte gUnknown_846F928 + thumb_func_end sub_0808B6D0 + + thumb_func_start sub_0808B6E0 +sub_0808B6E0: @ 0x0808B6E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808B6EC + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0808B6EC: .4byte gUnknown_846F92A + thumb_func_end sub_0808B6E0 + + thumb_func_start sub_0808B6F0 +sub_0808B6F0: @ 0x0808B6F0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808B708 + ldrb r1, [r1, #7] + bl sub_0808B6B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808B708: .4byte gUnknown_2037230 + thumb_func_end sub_0808B6F0 + + thumb_func_start sub_0808B70C +sub_0808B70C: @ 0x0808B70C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0x70 + beq _0808B72E + cmp r0, #0x70 + bgt _0808B726 + cmp r0, #0x6d + bgt _0808B732 + cmp r0, #0x69 + blt _0808B732 + b _0808B72E +_0808B726: + cmp r1, #0x8a + beq _0808B72E + cmp r1, #0xc0 + bne _0808B732 +_0808B72E: + movs r0, #1 + b _0808B734 +_0808B732: + movs r0, #0 +_0808B734: + pop {r1} + bx r1 + thumb_func_end sub_0808B70C + + thumb_func_start sub_0808B738 +sub_0808B738: @ 0x0808B738 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0x70 + beq _0808B75A + cmp r0, #0x70 + bgt _0808B752 + cmp r0, #0x5d + bgt _0808B75E + cmp r0, #0x59 + blt _0808B75E + b _0808B75A +_0808B752: + cmp r1, #0x8a + beq _0808B75A + cmp r1, #0xc0 + bne _0808B75E +_0808B75A: + movs r0, #1 + b _0808B760 +_0808B75E: + movs r0, #0 +_0808B760: + pop {r1} + bx r1 + thumb_func_end sub_0808B738 + + thumb_func_start sub_0808B764 +sub_0808B764: @ 0x0808B764 + push {r4, r5, lr} + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808B7A8 + movs r5, #0 + b _0808B78E +_0808B776: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_081B69FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808B788 + movs r0, #1 + b _0808B7AA +_0808B788: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0808B78E: + cmp r5, #5 + bhi _0808B7A8 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0808B7B0 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + bne _0808B776 +_0808B7A8: + movs r0, #0 +_0808B7AA: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808B7B0: .4byte gUnknown_2024190 + thumb_func_end sub_0808B764 + + thumb_func_start sub_0808B7B4 +sub_0808B7B4: @ 0x0808B7B4 + push {lr} + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808B7D2 + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808B7D2 + movs r0, #1 + b _0808B7D4 +_0808B7D2: + movs r0, #0 +_0808B7D4: + pop {r1} + bx r1 + thumb_func_end sub_0808B7B4 + + thumb_func_start sub_0808B7D8 +sub_0808B7D8: @ 0x0808B7D8 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _0808B850 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808B854 + adds r4, r4, r0 + ldrh r1, [r4, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r4, #0x12] + mov r5, sp + adds r5, #2 + strh r0, [r5] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + mov r1, sp + adds r2, r5, #0 + bl sub_080928AC + mov r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r5, r0] + ldrb r3, [r4, #0x18] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1c + adds r0, r4, #0 + bl sub_08092538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808B858 + bl sub_0808B5D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808B858 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089238 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808B858 + movs r0, #1 + b _0808B85A + .align 2, 0 +_0808B850: .4byte gUnknown_2037230 +_0808B854: .4byte gUnknown_2036FF0 +_0808B858: + movs r0, #0 +_0808B85A: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808B7D8 + + thumb_func_start sub_0808B864 +sub_0808B864: @ 0x0808B864 + push {lr} + ldr r0, _0808B874 + movs r1, #0 + movs r2, #0x24 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_0808B874: .4byte gUnknown_2037230 + thumb_func_end sub_0808B864 + + thumb_func_start sub_0808B878 +sub_0808B878: @ 0x0808B878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0808B88C + ldrb r2, [r3] + movs r1, #0xe0 + ands r1, r2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_0808B88C: .4byte gUnknown_2037230 + thumb_func_end sub_0808B878 + + thumb_func_start sub_0808B890 +sub_0808B890: @ 0x0808B890 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + ldr r3, _0808B8B8 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r4, r0, #1 + adds r6, r3, #1 +_0808B8A6: + lsls r0, r2, #1 + adds r1, r0, r4 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _0808B8BC + adds r0, r1, r6 + ldrb r0, [r0] + b _0808B8C8 + .align 2, 0 +_0808B8B8: .4byte gUnknown_846F92C +_0808B8BC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _0808B8A6 + movs r0, #1 +_0808B8C8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808B890 + + thumb_func_start sub_0808B8D0 +sub_0808B8D0: @ 0x0808B8D0 + push {r4, r5, r6, lr} + ldr r0, _0808B8F8 + ldrb r5, [r0] + movs r2, #0 + ldr r3, _0808B8FC + ldrb r1, [r0, #7] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r4, r0, #1 + adds r6, r3, #1 +_0808B8E4: + lsls r0, r2, #1 + adds r1, r0, r4 + adds r0, r1, r6 + ldrb r0, [r0] + ands r0, r5 + cmp r0, #0 + beq _0808B900 + adds r0, r1, r3 + ldrb r0, [r0] + b _0808B90C + .align 2, 0 +_0808B8F8: .4byte gUnknown_2037230 +_0808B8FC: .4byte gUnknown_846F92C +_0808B900: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _0808B8E4 + movs r0, #0 +_0808B90C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808B8D0 + + thumb_func_start sub_0808B914 +sub_0808B914: @ 0x0808B914 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0808B940 + ldrb r1, [r5, #7] + bl sub_0808B890 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + orrs r0, r4 + ldrb r1, [r5, #1] + orrs r0, r1 + strb r0, [r5, #1] + bl sub_0808AD4C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808B940: .4byte gUnknown_2037230 + thumb_func_end sub_0808B914 + + thumb_func_start sub_0808B944 +sub_0808B944: @ 0x0808B944 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x18 + adds r4, r0, #0 + adds r5, r1, #0 + mov sb, r2 + mov r8, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov r1, sp + movs r0, #0xff + strb r0, [r1] + movs r0, #0 + mov r1, r8 + bl sub_0808B6B8 + mov r1, sp + movs r3, #0 + strb r0, [r1, #1] + mov r0, sp + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + subs r4, #7 + movs r6, #0 + strh r4, [r0, #4] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + subs r5, #7 + strh r5, [r0, #6] + strb r6, [r0, #8] + movs r0, #0xb + strb r0, [r1, #9] + 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_0808D578 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #3 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r0, _0808BA04 + adds r4, r4, r0 + ldrb r0, [r4, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #2] + bl sub_08154164 + strb r0, [r4, #0x1b] + adds r0, r4, #0 + mov r1, sb + bl sub_0808DEB4 + bl sub_0808B864 + ldr r0, _0808BA08 + strb r6, [r0, #2] + strb r6, [r0, #3] + strb r5, [r0, #5] + ldrb r1, [r4, #4] + strb r1, [r0, #4] + mov r1, r8 + strb r1, [r0, #7] + movs r0, #0x21 + bl sub_0808B878 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BA04: .4byte gUnknown_2036FF0 +_0808BA08: .4byte gUnknown_2037230 + thumb_func_end sub_0808B944 + + thumb_func_start sub_0808BA0C +sub_0808BA0C: @ 0x0808BA0C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _0808BA6C + ldr r5, _0808BA70 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r0, #1 + ands r4, r0 + lsls r3, r4, #5 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #1] + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BA64 + ldr r2, _0808BA74 + ldrb r1, [r5, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #0x1a] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + lsls r3, r4, #2 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_0808BA64: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BA6C: .4byte gUnknown_2036FF0 +_0808BA70: .4byte gUnknown_2037230 +_0808BA74: .4byte gUnknown_20205AC + thumb_func_end sub_0808BA0C + + thumb_func_start sub_0808BA78 +sub_0808BA78: @ 0x0808BA78 + push {r4, r5, lr} + ldr r5, _0808BAB4 + ldrb r0, [r5, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BAB8 + adds r4, r4, r0 + movs r0, #5 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808BABC + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BAB4: .4byte gUnknown_2037230 +_0808BAB8: .4byte gUnknown_2036FF0 +_0808BABC: .4byte gUnknown_20205AC + thumb_func_end sub_0808BA78 + + thumb_func_start sub_0808BAC0 +sub_0808BAC0: @ 0x0808BAC0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0808BB0C + ldrb r0, [r6, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BB10 + adds r4, r4, r0 + movs r0, #6 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r0, [r6, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BB14 + adds r4, r4, r0 + adds r0, r5, #0 + bl sub_0809237C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BB0C: .4byte gUnknown_2037230 +_0808BB10: .4byte gUnknown_2036FF0 +_0808BB14: .4byte gUnknown_20205AC + thumb_func_end sub_0808BAC0 + + thumb_func_start sub_0808BB18 +sub_0808BB18: @ 0x0808BB18 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0808BB80 + ldrb r0, [r6, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BB84 + adds r4, r4, r0 + movs r0, #2 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r0, [r6, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BB88 + mov r8, r0 + add r4, r8 + adds r0, r5, #0 + bl sub_0809232C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldrb r1, [r6, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + movs r1, #1 + bl sub_08007EF4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BB80: .4byte gUnknown_2037230 +_0808BB84: .4byte gUnknown_2036FF0 +_0808BB88: .4byte gUnknown_20205AC + thumb_func_end sub_0808BB18 + + thumb_func_start sub_0808BB8C +sub_0808BB8C: @ 0x0808BB8C + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0808BBD8 + ldrb r0, [r6, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BBDC + adds r4, r4, r0 + movs r0, #7 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r0, [r6, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808BBE0 + adds r4, r4, r0 + adds r0, r5, #0 + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BBD8: .4byte gUnknown_2037230 +_0808BBDC: .4byte gUnknown_2036FF0 +_0808BBE0: .4byte gUnknown_20205AC + thumb_func_end sub_0808BB8C + + thumb_func_start sub_0808BBE4 +sub_0808BBE4: @ 0x0808BBE4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r5, r0, #0 + ldrb r0, [r5, #0x1e] + mov r8, r0 + movs r1, #0 + mov r0, sp + strh r1, [r0] + movs r6, #1 + ldr r1, _0808BC48 + mov sb, r1 + mov r4, sp + mov r7, sp + adds r7, #2 +_0808BC06: + movs r1, #0 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + add r0, sb + ldr r1, [r0] + mov r0, r8 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BC4C + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + cmp r6, r0 + bne _0808BC4C + 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_080928AC + ldrb r0, [r5, #0x1b] + movs r1, #0 + ldrsh r2, [r4, r1] + movs r1, #0 + ldrsh r3, [r7, r1] + adds r1, r6, #0 + bl sub_081541D4 + b _0808BC66 + .align 2, 0 +_0808BC48: .4byte gUnknown_846F940 +_0808BC4C: + ldrh r1, [r4] + adds r1, #1 + strh r1, [r4] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #3 + ble _0808BC06 + ldrb r0, [r5, #0x1b] + bl sub_081541B4 +_0808BC66: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0808BBE4 + + thumb_func_start sub_0808BC74 +sub_0808BC74: @ 0x0808BC74 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0808BCA8 + adds r0, r6, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808BCAC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + strh r5, [r1, #0xc] + bl _call_via_r6 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BCA8: .4byte sub_0808BCB0 +_0808BCAC: .4byte gUnknown_3005B60 + thumb_func_end sub_0808BC74 + + thumb_func_start sub_0808BCB0 +sub_0808BCB0: @ 0x0808BCB0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _0808BCF8 + ldr r2, _0808BCFC + ldr r5, _0808BD00 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0808BCC4: + movs r0, #8 + ldrsh r3, [r4, r0] + lsls r3, r3, #2 + adds r3, r3, r6 + ldr r0, _0808BD04 + ldrb r0, [r0, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r5 + ldr r3, [r3] + adds r0, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BCC4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808BCF8: .4byte gUnknown_846F950 +_0808BCFC: .4byte gUnknown_3005B60 +_0808BD00: .4byte gUnknown_2036FF0 +_0808BD04: .4byte gUnknown_2037230 + thumb_func_end sub_0808BCB0 + + thumb_func_start sub_0808BD08 +sub_0808BD08: @ 0x0808BD08 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987DC + ldr r1, _0808BD24 + movs r0, #1 + strb r0, [r1, #6] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808BD24: .4byte gUnknown_2037230 + thumb_func_end sub_0808BD08 + + thumb_func_start sub_0808BD28 +sub_0808BD28: @ 0x0808BD28 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r5, #0 + bl sub_08092B14 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BD42 + adds r0, r5, #0 + bl sub_08092BF4 +_0808BD42: + adds r0, r4, #0 + bl sub_08092B14 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BD54 + adds r0, r4, #0 + bl sub_08092BF4 +_0808BD54: + adds r0, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BDD6 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BDD6 + adds r0, r5, #0 + bl sub_08092BF4 + adds r0, r4, #0 + bl sub_08092BF4 + ldrb r0, [r6, #0xc] + bl sub_08092F08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + ldrb r0, [r6, #0xc] + bl sub_08092CCC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldr r2, _0808BDE0 + movs r1, #0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, #0x12 + ldrsh r0, [r4, r1] + str r0, [r2, #4] + ldrb r0, [r4, #0xb] + lsrs r0, r0, #4 + str r0, [r2, #8] + ldr r3, _0808BDE4 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r2, #0xc] + movs r0, #0xa + bl sub_080B5270 + movs r0, #0xd6 + bl sub_080A306C + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_0808BDD6: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808BDE0: .4byte gUnknown_20388A8 +_0808BDE4: .4byte gUnknown_20205AC + thumb_func_end sub_0808BD28 + + thumb_func_start sub_0808BDE8 +sub_0808BDE8: @ 0x0808BDE8 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r0, r4, #0 + bl sub_08092BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BE2A + adds r0, r5, #0 + bl sub_08092BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BE2A + adds r0, r4, #0 + bl sub_08092BF4 + adds r0, r5, #0 + bl sub_08092BF4 + ldr r1, _0808BE34 + movs r0, #0 + strb r0, [r1, #6] + bl sub_080987E8 + ldr r0, _0808BE38 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0808BE2A: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808BE34: .4byte gUnknown_2037230 +_0808BE38: .4byte sub_0808BCB0 + thumb_func_end sub_0808BDE8 + + thumb_func_start sub_0808BE3C +sub_0808BE3C: @ 0x0808BE3C + push {r4, lr} + ldr r4, _0808BE58 + adds r0, r4, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808BE58: .4byte sub_0808BE5C + thumb_func_end sub_0808BE3C + + thumb_func_start sub_0808BE5C +sub_0808BE5C: @ 0x0808BE5C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0808BE98 + ldr r2, _0808BE9C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0808BE6E: + movs r0, #8 + ldrsh r2, [r4, r0] + lsls r2, r2, #2 + adds r2, r2, r5 + ldr r0, _0808BEA0 + ldrb r0, [r0, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0808BEA4 + adds r1, r1, r0 + ldr r2, [r2] + adds r0, r4, #0 + bl _call_via_r2 + thumb_func_end sub_0808BE5C + + thumb_func_start sub_0808BE8C +sub_0808BE8C: @ 0x0808BE8C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BE6E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BE98: .4byte gUnknown_846F95C +_0808BE9C: .4byte gUnknown_3005B60 +_0808BEA0: .4byte gUnknown_2037230 +_0808BEA4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808BE8C + + thumb_func_start sub_0808BEA8 +sub_0808BEA8: @ 0x0808BEA8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + ldr r5, _0808BF0C + movs r0, #1 + strb r0, [r5, #6] + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808BF04 + movs r0, #0xa + bl sub_080A306C + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092E2C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r6, #0xa] + adds r0, #1 + strh r0, [r6, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0808BF04 + movs r0, #0 + strb r0, [r5, #6] + ldrb r0, [r5, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r5, #1] + ldr r0, _0808BF10 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0808BF04: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808BF0C: .4byte gUnknown_2037230 +_0808BF10: .4byte sub_0808BE5C + thumb_func_end sub_0808BEA8 + + thumb_func_start sub_0808BF14 +sub_0808BF14: @ 0x0808BF14 + push {r4, lr} + ldr r4, _0808BF30 + adds r0, r4, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808BF30: .4byte sub_0808BF34 + thumb_func_end sub_0808BF14 + + thumb_func_start sub_0808BF34 +sub_0808BF34: @ 0x0808BF34 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0808BF70 + ldr r2, _0808BF74 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0808BF46: + movs r0, #8 + ldrsh r2, [r4, r0] + lsls r2, r2, #2 + adds r2, r2, r5 + ldr r0, _0808BF78 + ldrb r0, [r0, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0808BF7C + adds r1, r1, r0 + ldr r2, [r2] + adds r0, r4, #0 + bl _call_via_r2 + thumb_func_end sub_0808BF34 + + thumb_func_start sub_0808BF64 +sub_0808BF64: @ 0x0808BF64 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BF46 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808BF70: .4byte gUnknown_846F960 +_0808BF74: .4byte gUnknown_3005B60 +_0808BF78: .4byte gUnknown_2037230 +_0808BF7C: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808BF64 + + thumb_func_start sub_0808BF80 +sub_0808BF80: @ 0x0808BF80 + push {lr} + ldrh r2, [r0, #8] + adds r2, #1 + strh r2, [r0, #8] + ldrb r1, [r1, #0x18] + lsrs r1, r1, #4 + strh r1, [r0, #0xa] + ldr r1, _0808BFA4 + movs r0, #1 + strb r0, [r1, #6] + bl sub_080987DC + movs r0, #0x2d + bl sub_080A306C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0808BFA4: .4byte gUnknown_2037230 + thumb_func_end sub_0808BF80 + + thumb_func_start sub_0808BFA8 +sub_0808BFA8: @ 0x0808BFA8 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808C01C + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C010 + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + subs r0, #1 + add r0, sp + ldrb r6, [r0] + adds r0, r6, #0 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + ldrb r0, [r4, #0xa] + cmp r6, r0 + bne _0808BFEE + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] +_0808BFEE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _0808C010 + ldrb r0, [r4, #0xa] + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _0808C010 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0808C010: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808C01C: .4byte gUnknown_846F970 + thumb_func_end sub_0808BFA8 + + thumb_func_start sub_0808C020 +sub_0808C020: @ 0x0808C020 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, _0808C05C + mov r0, sp + movs r2, #5 + bl memcpy + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C050 + movs r1, #0xc + ldrsh r0, [r5, r1] + add r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08092B30 + movs r0, #1 + strh r0, [r5, #8] +_0808C050: + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C05C: .4byte gUnknown_846F974 + thumb_func_end sub_0808C020 + + thumb_func_start sub_0808C060 +sub_0808C060: @ 0x0808C060 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C0A4 + ldrb r0, [r4, #0xa] + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CCC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + bl sub_080987E8 + ldr r1, _0808C0AC + movs r0, #0 + strb r0, [r1, #6] + ldr r0, _0808C0B0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0808C0A4: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C0AC: .4byte gUnknown_2037230 +_0808C0B0: .4byte sub_0808BF34 + thumb_func_end sub_0808C060 + + thumb_func_start sub_0808C0B4 +sub_0808C0B4: @ 0x0808C0B4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + bl sub_08085168 + bl sub_08085200 + ldr r2, _0808C100 + ldrb r1, [r2] + movs r0, #0xf7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + strb r0, [r2, #6] + ldr r5, _0808C104 + adds r0, r5, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808C108 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + bl _call_via_r5 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808C100: .4byte gUnknown_2037230 +_0808C104: .4byte sub_0808C10C +_0808C108: .4byte gUnknown_3005B60 + thumb_func_end sub_0808C0B4 + + thumb_func_start sub_0808C10C +sub_0808C10C: @ 0x0808C10C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0808C168 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808C16C + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C138 + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C160 +_0808C138: + ldrb r0, [r5, #0x1a] + movs r1, #2 + bl sub_081554E8 + ldr r0, _0808C170 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r0, [r4, #8] + bl sub_08092EB0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + ldr r0, _0808C174 + str r0, [r4] +_0808C160: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808C168: .4byte gUnknown_2037230 +_0808C16C: .4byte gUnknown_2036FF0 +_0808C170: .4byte gUnknown_3005B60 +_0808C174: .4byte sub_0808C178 + thumb_func_end sub_0808C10C + + thumb_func_start sub_0808C178 +sub_0808C178: @ 0x0808C178 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _0808C1E4 + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808C1E8 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808C1DE + movs r0, #0 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + movs r0, #0 + strb r0, [r6, #6] + bl sub_080987E8 + ldrb r1, [r4, #0x1a] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808C1EC + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_080A8964 +_0808C1DE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808C1E4: .4byte gUnknown_2037230 +_0808C1E8: .4byte gUnknown_2036FF0 +_0808C1EC: .4byte gUnknown_20205AC + thumb_func_end sub_0808C178 + + thumb_func_start sub_0808C1F0 +sub_0808C1F0: @ 0x0808C1F0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0808C21C + adds r0, r5, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808C220 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0x26] + bl _call_via_r5 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808C21C: .4byte sub_0808C224 +_0808C220: .4byte gUnknown_3005B60 + thumb_func_end sub_0808C1F0 + + thumb_func_start sub_0808C224 +sub_0808C224: @ 0x0808C224 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0808C254 + ldr r2, _0808C258 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0808C236: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808C236 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808C254: .4byte gUnknown_846F97C +_0808C258: .4byte gUnknown_3005B60 + thumb_func_end sub_0808C224 + + thumb_func_start sub_0808C25C +sub_0808C25C: @ 0x0808C25C + push {r4, lr} + adds r4, r0, #0 + bl sub_080987DC + ldr r1, _0808C278 + movs r0, #1 + strb r0, [r1, #6] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808C278: .4byte gUnknown_2037230 + thumb_func_end sub_0808C25C + + thumb_func_start sub_0808C27C +sub_0808C27C: @ 0x0808C27C + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r5, r0, #0 + ldr r1, _0808C304 + mov r0, sp + movs r2, #6 + bl memcpy + add r4, sp, #8 + ldr r1, _0808C308 + adds r0, r4, #0 + movs r2, #6 + bl memcpy + movs r0, #0 + strh r0, [r5, #0x20] + bl sub_0806F050 + movs r2, #0x26 + ldrsh r1, [r5, r2] + lsls r1, r1, #1 + mov r2, sp + adds r6, r2, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r4, r1 + movs r2, #0 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r6] + adds r1, r1, r0 + strh r1, [r5, #0x22] + ldr r3, _0808C30C + ldr r2, _0808C310 + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #5] + strh r0, [r5, #0x24] + ldrb r0, [r2, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r3 + adds r0, r4, #0 + bl sub_08092B94 + ldrb r0, [r4, #1] + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_0808BAC0 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808C304: .4byte gUnknown_846F9BC +_0808C308: .4byte gUnknown_846F9C2 +_0808C30C: .4byte gUnknown_2036FF0 +_0808C310: .4byte gUnknown_2037230 + thumb_func_end sub_0808C27C + + thumb_func_start sub_0808C314 +sub_0808C314: @ 0x0808C314 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808C8E8 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3b + ble _0808C330 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0808C330: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808C314 + + thumb_func_start sub_0808C338 +sub_0808C338: @ 0x0808C338 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #1 + bl sub_08197650 + ldrh r0, [r4, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #8] + strh r1, [r4, #0xa] + strh r1, [r4, #0xc] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + adds r0, r1, #1 + strh r0, [r4, #0xe] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0808C370 + adds r0, r1, #4 + strh r0, [r4, #0xe] +_0808C370: + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #9 + ble _0808C37C + movs r0, #0xa + strh r0, [r4, #0xe] +_0808C37C: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808C338 + + thumb_func_start sub_0808C384 +sub_0808C384: @ 0x0808C384 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + ldr r1, _0808C3C0 + add r0, sp, #0xc + movs r2, #2 + bl memcpy + bl sub_0808C8E8 + ldrh r0, [r4, #0xa] + adds r1, r0, #1 + strh r1, [r4, #0xa] + ldr r0, _0808C3C4 + ldrh r0, [r0, #0x2e] + movs r2, #1 + ands r2, r0 + cmp r2, #0 + beq _0808C3C8 + movs r0, #0xb + strh r0, [r4, #8] + movs r1, #0x20 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0808C3BA + movs r0, #0xc + strh r0, [r4, #8] +_0808C3BA: + movs r0, #1 + b _0808C41A + .align 2, 0 +_0808C3C0: .4byte gUnknown_846F9C8 +_0808C3C4: .4byte gUnknown_3002360 +_0808C3C8: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0808C418 + strh r2, [r4, #0xa] + movs r3, #0xc + ldrsh r1, [r4, r3] + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _0808C3F8 + ldrh r0, [r4, #8] + adds r1, r0, #1 + strh r1, [r4, #8] + ldrh r2, [r4, #0x20] + movs r3, #0x20 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0808C3F2 + adds r0, r1, #1 + strh r0, [r4, #8] +_0808C3F2: + adds r0, r2, #1 + strh r0, [r4, #0x20] + b _0808C418 +_0808C3F8: + movs r0, #0xc + ldrsh r3, [r4, r0] + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r0, #2 + str r0, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + bl sub_0800449C + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] +_0808C418: + movs r0, #0 +_0808C41A: + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808C384 + + thumb_func_start sub_0808C424 +sub_0808C424: @ 0x0808C424 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_0808C8E8 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r6, #0 + bl sub_080B4E54 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808C444 + movs r0, #0xb + strh r0, [r5, #8] + b _0808C4C4 +_0808C444: + ldr r4, _0808C494 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _0808C47C + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x15 + beq _0808C464 + cmp r0, #0x3c + bne _0808C47C +_0808C464: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xe + bls _0808C47C + movs r6, #1 +_0808C47C: + cmp r6, #0 + bne _0808C49A + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0808C498 + movs r0, #0xb + strh r0, [r5, #8] + b _0808C49A + .align 2, 0 +_0808C494: .4byte gUnknown_2024190 +_0808C498: + movs r6, #1 +_0808C49A: + cmp r6, #1 + bne _0808C4C4 + ldr r0, _0808C4CC + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808C4D0 + adds r4, r4, r0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809239C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_0808C4C4: + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808C4CC: .4byte gUnknown_2037230 +_0808C4D0: .4byte gUnknown_20205AC + thumb_func_end sub_0808C424 + + thumb_func_start sub_0808C4D4 +sub_0808C4D4: @ 0x0808C4D4 + push {r4, r5, lr} + sub sp, #0x18 + adds r5, r0, #0 + ldr r1, _0808C510 + add r0, sp, #0xc + movs r2, #0xc + bl memcpy + bl sub_0808C8E8 + movs r0, #0x12 + str r0, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0 + bl sub_0800449C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + strh r4, [r5, #0xa] + movs r0, #0 + add sp, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C510: .4byte gUnknown_846F9CA + thumb_func_end sub_0808C4D4 + + thumb_func_start sub_0808C514 +sub_0808C514: @ 0x0808C514 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _0808C548 + mov r0, sp + movs r2, #6 + bl memcpy + bl sub_0808C8E8 + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + add r0, sp + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _0808C54C + movs r0, #0xc + b _0808C55C + .align 2, 0 +_0808C548: .4byte gUnknown_846F9D6 +_0808C54C: + ldr r0, _0808C568 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808C55E + ldrh r0, [r4, #8] + adds r0, #1 +_0808C55C: + strh r0, [r4, #8] +_0808C55E: + movs r0, #0 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808C568: .4byte gUnknown_3002360 + thumb_func_end sub_0808C514 + + thumb_func_start sub_0808C56C +sub_0808C56C: @ 0x0808C56C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r1, _0808C5D0 + mov r0, sp + movs r2, #0xc + bl memcpy + bl sub_0808C8E8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0808C5C2 + cmp r1, #1 + bgt _0808C5C6 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + movs r3, #0x20 + ldrsh r2, [r4, r3] + lsls r2, r2, #1 + movs r3, #0x26 + ldrsh r1, [r4, r3] + lsls r1, r1, #2 + adds r2, r2, r1 + mov r3, sp + adds r1, r3, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + ble _0808C5C6 +_0808C5C2: + movs r0, #3 + strh r0, [r4, #8] +_0808C5C6: + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808C5D0: .4byte gUnknown_846F9DC + thumb_func_end sub_0808C56C + + thumb_func_start sub_0808C5D4 +sub_0808C5D4: @ 0x0808C5D4 + push {r4, r5, lr} + sub sp, #0x10 + adds r4, r0, #0 + bl sub_0808C8E8 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0808C614 + movs r5, #0 + str r5, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #1 + bl sub_08196E2C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + strh r5, [r4, #0xa] + movs r0, #0 + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C614: .4byte gUnknown_846F9E8 + thumb_func_end sub_0808C5D4 + + thumb_func_start sub_0808C618 +sub_0808C618: @ 0x0808C618 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0808C62C + bl sub_0808C8E8 +_0808C62C: + bl sub_08004630 + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0808C6C8 + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _0808C6C0 + ldr r7, _0808C6B4 + ldrb r0, [r7, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808C6B8 + mov r8, r0 + add r4, r8 + ldrh r1, [r5, #0x24] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + ldrb r1, [r7] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0808C68A + ldrb r0, [r7, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r0, [r1, #0x1a] + movs r1, #0 + movs r2, #0 + bl sub_08155540 +_0808C68A: + ldr r2, _0808C6BC + ldrb r1, [r7, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #0x24] + ldrb r1, [r7, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #0x26] + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + b _0808C6F0 + .align 2, 0 +_0808C6B4: .4byte gUnknown_2037230 +_0808C6B8: .4byte gUnknown_2036FF0 +_0808C6BC: .4byte gUnknown_20205AC +_0808C6C0: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0808C6F0 +_0808C6C8: + ldr r1, _0808C6FC + movs r0, #0 + strb r0, [r1, #6] + bl sub_080987E8 + ldrh r0, [r5, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080B4E8C + movs r0, #1 + bl sub_080EE470 + ldr r0, _0808C700 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0808C6F0: + movs r0, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808C6FC: .4byte gUnknown_2037230 +_0808C700: .4byte sub_0808C224 + thumb_func_end sub_0808C618 + + thumb_func_start sub_0808C704 +sub_0808C704: @ 0x0808C704 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + bl sub_0808C8E8 + ldr r0, _0808C768 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808C76C + adds r4, r4, r0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809238C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0808C770 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #1 + bl sub_08196E2C + movs r0, #0xd + strh r0, [r5, #8] + movs r0, #1 + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C768: .4byte gUnknown_2037230 +_0808C76C: .4byte gUnknown_20205AC +_0808C770: .4byte gUnknown_846F9F7 + thumb_func_end sub_0808C704 + + thumb_func_start sub_0808C774 +sub_0808C774: @ 0x0808C774 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + bl sub_0808C8E8 + ldr r0, _0808C7D8 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808C7DC + adds r4, r4, r0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809238C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0808C7E0 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #1 + bl sub_08196E2C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808C7D8: .4byte gUnknown_2037230 +_0808C7DC: .4byte gUnknown_20205AC +_0808C7E0: .4byte gUnknown_846FA03 + thumb_func_end sub_0808C774 + + thumb_func_start sub_0808C7E4 +sub_0808C7E4: @ 0x0808C7E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808C8E8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808C7E4 + + thumb_func_start sub_0808C7FC +sub_0808C7FC: @ 0x0808C7FC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_0808C8E8 + ldr r7, _0808C890 + ldr r5, _0808C894 + ldrb r0, [r5, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3f + ldrb r0, [r1] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _0808C882 + ldrb r0, [r5, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0808C898 + mov r8, r0 + add r4, r8 + ldrh r1, [r6, #0x24] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_0808DEB4 + ldrb r1, [r5] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0808C862 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r0, [r1, #0x1a] + movs r1, #0 + movs r2, #0 + bl sub_08155540 +_0808C862: + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r2, #0 + strh r2, [r0, #0x24] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_0808C882: + movs r0, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808C890: .4byte gUnknown_20205AC +_0808C894: .4byte gUnknown_2037230 +_0808C898: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808C7FC + + thumb_func_start sub_0808C89C +sub_0808C89C: @ 0x0808C89C + push {lr} + bl sub_08004630 + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _0808C8D8 + ldr r0, _0808C8E0 + strb r1, [r0, #6] + bl sub_080987E8 + bl sub_08096EEC + movs r0, #0 + movs r1, #1 + bl sub_08197028 + movs r0, #0 + bl sub_080EE470 + ldr r0, _0808C8E4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0808C8D8: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0808C8E0: .4byte gUnknown_2037230 +_0808C8E4: .4byte sub_0808C224 + thumb_func_end sub_0808C89C + + thumb_func_start sub_0808C8E8 +sub_0808C8E8: @ 0x0808C8E8 + push {r4, r5, r6, r7, lr} + ldr r0, _0808C9D4 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808C9D8 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08007358 + 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, r0, r4 + mov ip, r0 + ldrb r0, [r0] + ldr r1, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r6, r5, #2 + adds r0, r6, r0 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r7, #1 + rsbs r7, r7, #0 + cmp r0, r7 + beq _0808C95A + adds r3, r4, #0 + adds r3, #0x2c + ldrb r2, [r3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1a + adds r1, #1 + movs r0, #0x3f + ands r1, r0 + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + mov r1, ip + ldrb r0, [r1] + ldr r1, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, r6, r0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, r7 + bne _0808C960 +_0808C95A: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0808C960: + adds r0, r4, #0 + adds r0, #0x2a + ldrb r0, [r0] + ldr r1, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r5, #2 + adds r0, r0, r1 + ldrb r5, [r0] + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0808C992 + movs r0, #8 + strh r0, [r4, #0x24] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808C992 + ldr r0, _0808C9DC + strh r0, [r4, #0x24] +_0808C992: + cmp r5, #5 + bne _0808C99A + ldr r0, _0808C9DC + strh r0, [r4, #0x26] +_0808C99A: + adds r0, r5, #0 + subs r0, #0xa + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0808C9AA + movs r0, #8 + strh r0, [r4, #0x26] +_0808C9AA: + ldr r3, _0808C9D4 + ldrb r1, [r3] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0808C9CE + ldr r2, _0808C9E0 + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1a] + movs r1, #0x26 + ldrsh r2, [r4, r1] + movs r1, #1 + bl sub_08155540 +_0808C9CE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808C9D4: .4byte gUnknown_2037230 +_0808C9D8: .4byte gUnknown_20205AC +_0808C9DC: .4byte 0x0000FFF8 +_0808C9E0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808C8E8 + + thumb_func_start sub_0808C9E4 +sub_0808C9E4: @ 0x0808C9E4 + ldr r1, _0808C9EC + strb r0, [r1] + bx lr + .align 2, 0 +_0808C9EC: .4byte gUnknown_2036FEC + thumb_func_end sub_0808C9E4 + + thumb_func_start sub_0808C9F0 +sub_0808C9F0: @ 0x0808C9F0 + push {lr} + ldr r1, _0808CA00 + ldrb r0, [r1] + cmp r0, #0 + bne _0808C9FC + movs r0, #1 +_0808C9FC: + pop {r1} + bx r1 + .align 2, 0 +_0808CA00: .4byte gUnknown_2036FEC + thumb_func_end sub_0808C9F0 + + thumb_func_start sub_0808CA04 +sub_0808CA04: @ 0x0808CA04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + ldr r0, _0808CA48 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808CA4C + adds r4, r0, r1 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808CA50 + adds r7, r0, r1 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0808CA54 + adds r5, r0, r1 + movs r0, #0 + ldrsh r6, [r5, r0] + cmp r6, #1 + beq _0808CABA + cmp r6, #1 + bgt _0808CA58 + cmp r6, #0 + beq _0808CA5E + b _0808CAFA + .align 2, 0 +_0808CA48: .4byte gUnknown_2037230 +_0808CA4C: .4byte gUnknown_2036FF0 +_0808CA50: .4byte gUnknown_20205AC +_0808CA54: .4byte gUnknown_3005B68 +_0808CA58: + cmp r6, #2 + beq _0808CAF4 + b _0808CAFA +_0808CA5E: + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808CAFA + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_0808C9E4 + movs r1, #0 + mov r8, r1 + strh r6, [r5, #2] + movs r0, #1 + strh r0, [r5, #4] + ldrh r0, [r7, #0x26] + ldrh r2, [r7, #0x22] + adds r0, r0, r2 + lsls r0, r0, #4 + strh r0, [r5, #6] + strh r6, [r7, #0x26] + bl sub_0808E84C + ldrb r0, [r4, #3] + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #3] + ldrb r1, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r7, #5] + 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, #1 + strh r0, [r5] +_0808CABA: + adds r1, r5, #2 + adds r0, r4, #0 + bl sub_0808CCFC + ldrh r0, [r5, #6] + ldrh r1, [r5, #4] + subs r0, r0, r1 + strh r0, [r5, #6] + adds r1, #3 + strh r1, [r5, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r7, #0x22] + movs r2, #0x22 + ldrsh r1, [r7, r2] + ldr r0, _0808CAF0 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r1, r1, r0 + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0808CAFA + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0808CAFA + .align 2, 0 +_0808CAF0: .4byte gUnknown_3005B48 +_0808CAF4: + adds r0, r2, #0 + bl sub_080A8964 +_0808CAFA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0808CA04 + + thumb_func_start sub_0808CB04 +sub_0808CB04: @ 0x0808CB04 + push {r4, lr} + ldr r4, _0808CB20 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808CB20: .4byte sub_0808CB6C + thumb_func_end sub_0808CB04 + + thumb_func_start sub_0808CB24 +sub_0808CB24: @ 0x0808CB24 + push {lr} + ldr r0, _0808CB34 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808CB34: .4byte sub_0808CB6C + thumb_func_end sub_0808CB24 + + thumb_func_start sub_0808CB38 +sub_0808CB38: @ 0x0808CB38 + push {r4, lr} + ldr r4, _0808CB54 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808CB54: .4byte sub_0808CA04 + thumb_func_end sub_0808CB38 + + thumb_func_start sub_0808CB58 +sub_0808CB58: @ 0x0808CB58 + push {lr} + ldr r0, _0808CB68 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0808CB68: .4byte sub_0808CA04 + thumb_func_end sub_0808CB58 + + thumb_func_start sub_0808CB6C +sub_0808CB6C: @ 0x0808CB6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0808CBB4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808CBB8 + adds r4, r0, r1 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808CBBC + adds r7, r0, r1 + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _0808CBC0 + adds r5, r0, r1 + movs r2, #0 + ldrsh r6, [r5, r2] + cmp r6, #1 + beq _0808CC4E + cmp r6, #1 + bgt _0808CBC4 + cmp r6, #0 + beq _0808CBCE + b _0808CCEE + .align 2, 0 +_0808CBB4: .4byte gUnknown_2037230 +_0808CBB8: .4byte gUnknown_2036FF0 +_0808CBBC: .4byte gUnknown_20205AC +_0808CBC0: .4byte gUnknown_3005B68 +_0808CBC4: + cmp r6, #2 + beq _0808CC8C + cmp r6, #3 + beq _0808CCAA + b _0808CCEE +_0808CBCE: + bl sub_0808C9F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + ldr r1, _0808CC88 + movs r3, #0xa + ldrsh r0, [r5, r3] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B78 + movs r0, #0 + mov sb, r0 + strh r6, [r5, #2] + movs r0, #0x74 + strh r0, [r5, #4] + ldrh r0, [r7, #0x22] + strh r0, [r5, #8] + ldrb r0, [r7, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strh r0, [r5, #0xc] + movs r1, #0x43 + adds r1, r1, r7 + mov r8, r1 + ldrb r0, [r1] + strh r0, [r5, #0xe] + ldrh r0, [r7, #0x26] + adds r0, #0x20 + rsbs r0, r0, #0 + lsls r0, r0, #4 + strh r0, [r5, #6] + strh r6, [r7, #0x26] + bl sub_0808E84C + ldrb r0, [r4, #3] + movs r2, #4 + orrs r0, r2 + strb r0, [r4, #3] + ldrb r1, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r7, #5] + mov r3, sb + 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, #1 + strh r0, [r5] +_0808CC4E: + adds r1, r5, #2 + adds r0, r4, #0 + bl sub_0808CCFC + ldrh r0, [r5, #4] + ldrh r2, [r5, #6] + adds r1, r0, r2 + strh r1, [r5, #6] + subs r0, #3 + strh r0, [r5, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bgt _0808CC6E + movs r0, #4 + strh r0, [r5, #4] +_0808CC6E: + ldrh r0, [r5, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r7, #0x22] + ldrh r2, [r5, #8] + movs r3, #8 + ldrsh r1, [r5, r3] + cmp r0, r1 + blt _0808CCEE + strh r2, [r7, #0x22] + movs r0, #0 + strh r0, [r5, #0x10] + b _0808CCA2 + .align 2, 0 +_0808CC88: .4byte gUnknown_846FA13 +_0808CC8C: + adds r1, r5, #2 + adds r0, r4, #0 + bl sub_0808CCFC + ldrh r0, [r5, #0x10] + adds r0, #1 + strh r0, [r5, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0808CCEE +_0808CCA2: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0808CCEE +_0808CCAA: + movs r0, #0xa + ldrsh r6, [r5, r0] + adds r1, r5, #2 + adds r0, r4, #0 + bl sub_0808CCFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _0808CCEE + ldrb r1, [r4, #3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #3] + movs r0, #3 + ldrb r1, [r5, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #5] + ldrh r1, [r5, #0xe] + adds r0, r7, #0 + adds r0, #0x43 + strb r1, [r0] + bl sub_0808E7FC + mov r0, r8 + bl sub_080A8964 +_0808CCEE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808CB6C + + thumb_func_start sub_0808CCFC +sub_0808CCFC: @ 0x0808CCFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldrh r1, [r6] + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #7 + bgt _0808CD18 + adds r0, r1, #1 + strh r0, [r6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0808CD54 +_0808CD18: + adds r0, r5, #0 + bl sub_08092BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808CD54 + ldr r4, _0808CD50 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B78 + movs r0, #0 + strh r0, [r6] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r0, r0, r4 + ldrb r0, [r0] + b _0808CD5A + .align 2, 0 +_0808CD50: .4byte gUnknown_846FA13 +_0808CD54: + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c +_0808CD5A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808CCFC + + thumb_func_start sub_0808CD60 +sub_0808CD60: @ 0x0808CD60 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #0x24 + bl memset + movs r0, #0xff + strb r0, [r4, #8] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808CD60 + + thumb_func_start sub_0808CD80 +sub_0808CD80: @ 0x0808CD80 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _0808CDA4 +_0808CD86: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_0808CD60 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0808CD86 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808CDA4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808CD80 + + thumb_func_start sub_0808CDA8 +sub_0808CDA8: @ 0x0808CDA8 + push {lr} + bl sub_08087030 + bl sub_0808CD80 + bl sub_0808B864 + bl sub_0808CDC0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808CDA8 + + thumb_func_start sub_0808CDC0 +sub_0808CDC0: @ 0x0808CDC0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + ldr r0, _0808CE5C + ldr r0, [r0, #0x54] + mov sb, r0 + movs r1, #0 + movs r2, #0 + movs r3, #0x1f + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808CE60 + mov sl, r1 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + add r4, sl + ldrb r1, [r4, #1] + movs r5, #4 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + movs r1, #1 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r4, #0 + bl sub_08008140 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + adds r4, #0x3e + ldrb r0, [r4] + movs r6, #4 + orrs r0, r6 + strb r0, [r4] + mov r0, sb + movs r1, #0 + movs r2, #0 + movs r3, #0x1f + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + add r4, sl + ldrb r0, [r4, #1] + ands r5, r0 + mov r0, r8 + orrs r5, r0 + strb r5, [r4, #1] + adds r0, r4, #0 + bl sub_08008140 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + adds r4, #0x3e + ldrb r0, [r4] + orrs r0, r6 + strb r0, [r4] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808CE5C: .4byte gUnknown_84DDE4C +_0808CE60: .4byte gUnknown_20205AC + thumb_func_end sub_0808CDC0 + + thumb_func_start sub_0808CE64 +sub_0808CE64: @ 0x0808CE64 + push {lr} + movs r1, #0 + ldr r2, _0808CE70 + ldrb r0, [r2] + b _0808CE88 + .align 2, 0 +_0808CE70: .4byte gUnknown_2036FF0 +_0808CE74: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bhi _0808CE8E + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] +_0808CE88: + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0808CE74 +_0808CE8E: + adds r0, r1, #0 + pop {r1} + bx r1 + thumb_func_end sub_0808CE64 + + thumb_func_start sub_0808CE94 +sub_0808CE94: @ 0x0808CE94 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r0, #0xfe + bls _0808CEAC + bl sub_0808CF78 + b _0808CEB0 +_0808CEAC: + bl sub_0808CF28 +_0808CEB0: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_0808CE94 + + thumb_func_start sub_0808CEB8 +sub_0808CEB8: @ 0x0808CEB8 + push {r4, lr} + adds r4, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_0808CE94 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0808CEDA + movs r0, #0 + b _0808CEDC +_0808CEDA: + movs r0, #1 +_0808CEDC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808CEB8 + + thumb_func_start sub_0808CEE4 +sub_0808CEE4: @ 0x0808CEE4 + push {r4, r5, r6, lr} + movs r3, #0 + ldr r5, _0808CF24 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 +_0808CEF2: + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808CF12 + movs r6, #0x10 + ldrsh r0, [r2, r6] + cmp r0, r4 + bne _0808CF12 + movs r6, #0x12 + ldrsh r0, [r2, r6] + cmp r0, r1 + beq _0808CF1C +_0808CF12: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _0808CEF2 +_0808CF1C: + adds r0, r3, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808CF24: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808CEE4 + + thumb_func_start sub_0808CF28 +sub_0808CF28: @ 0x0808CF28 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0 + ldr r6, _0808CF60 +_0808CF3A: + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r6 + ldrb r0, [r3] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808CF64 + ldrb r0, [r3, #8] + cmp r0, r5 + bne _0808CF64 + ldrb r0, [r3, #9] + cmp r0, r4 + bne _0808CF64 + ldrb r0, [r3, #0xa] + cmp r0, r2 + bne _0808CF64 + adds r0, r1, #0 + b _0808CF70 + .align 2, 0 +_0808CF60: .4byte gUnknown_2036FF0 +_0808CF64: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _0808CF3A + movs r0, #0x10 +_0808CF70: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808CF28 + + thumb_func_start sub_0808CF78 +sub_0808CF78: @ 0x0808CF78 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r4, _0808CF9C +_0808CF82: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808CFA0 + ldrb r0, [r1, #8] + cmp r0, r3 + bne _0808CFA0 + adds r0, r2, #0 + b _0808CFAC + .align 2, 0 +_0808CF9C: .4byte gUnknown_2036FF0 +_0808CFA0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _0808CF82 + movs r0, #0x10 +_0808CFAC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808CF78 + + thumb_func_start sub_0808CFB4 +sub_0808CFB4: @ 0x0808CFB4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldrb r0, [r5] + adds r1, r6, #0 + adds r2, r7, #0 + mov r3, sp + bl sub_0808D180 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808CFDE + movs r0, #0x10 + b _0808D0D2 +_0808CFDE: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808D0E0 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_0808CD60 + ldrh r3, [r5, #4] + adds r3, #7 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldrh r2, [r5, #6] + adds r2, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, #1] + strb r0, [r4, #5] + ldrb r0, [r5, #9] + strb r0, [r4, #6] + ldrb r0, [r5] + strb r0, [r4, #8] + strb r6, [r4, #9] + strb r7, [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, #8] + movs r7, #0xf + adds r1, r7, #0 + ands r1, r0 + ldrb r2, [r4, #0xb] + movs r0, #0x10 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0xb] + ldrb r1, [r5, #8] + lsls r1, r1, #4 + ands r0, r7 + orrs r0, r1 + strb r0, [r4, #0xb] + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x1c + movs r0, #0xf + mov sb, r0 + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r1, [r5, #0xa] + lsrs r1, r1, #4 + lsls r1, r1, #4 + ands r0, r7 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrh r0, [r5, #0xc] + strb r0, [r4, #7] + ldrh r0, [r5, #0xe] + strb r0, [r4, #0x1d] + ldr r1, _0808D0E4 + ldrb r0, [r5, #9] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x20 + strb r1, [r0] + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0808E930 + adds r0, r4, #0 + bl sub_0808E04C + ldr r1, _0808D0E8 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0808D0CE + ldrb r2, [r4, #0x19] + adds r0, r7, #0 + ands r0, r2 + cmp r0, #0 + bne _0808D0B6 + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1c + adds r0, #1 + mov r1, sb + ands r0, r1 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] +_0808D0B6: + ldrb r2, [r4, #0x19] + movs r0, #0xf0 + ands r0, r2 + cmp r0, #0 + bne _0808D0CE + lsrs r1, r2, #4 + adds r1, #1 + lsls r1, r1, #4 + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] +_0808D0CE: + mov r0, sp + ldrb r0, [r0] +_0808D0D2: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D0E0: .4byte gUnknown_2036FF0 +_0808D0E4: .4byte gUnknown_84DDA21 +_0808D0E8: .4byte gUnknown_84DD9D0 + thumb_func_end sub_0808CFB4 + + thumb_func_start sub_0808D0EC +sub_0808D0EC: @ 0x0808D0EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _0808D114 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0808D16E + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808D118 + bl sub_081AA7B8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _0808D13A + .align 2, 0 +_0808D114: .4byte gUnknown_2036FB8 +_0808D118: + bl sub_081D5A10 + cmp r0, #0 + beq _0808D136 + movs r6, #2 + b _0808D13A +_0808D124: + ldr r0, [r7] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + adds r0, r4, #0 + bl sub_0808CFB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808D170 +_0808D136: + ldr r0, [r4, #4] + ldrb r6, [r0] +_0808D13A: + movs r5, #0 + cmp r5, r6 + bhs _0808D16E + ldr r7, _0808D17C +_0808D142: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + movs r1, #0xc7 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, r8 + bne _0808D164 + ldrh r0, [r4, #0x14] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808D124 +_0808D164: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _0808D142 +_0808D16E: + movs r0, #0x10 +_0808D170: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D17C: .4byte gUnknown_3005AEC + thumb_func_end sub_0808D0EC + + thumb_func_start sub_0808D180 +sub_0808D180: @ 0x0808D180 + push {r4, r5, r6, r7, lr} + mov ip, r3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r2, #0 + ldr r1, _0808D1DC + ldrb r0, [r1] + lsls r0, r0, #0x1f + adds r7, r1, #0 + cmp r0, #0 + beq _0808D1D4 + adds r3, r1, #0 +_0808D1A0: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r3 + ldrb r0, [r1, #8] + cmp r0, r6 + bne _0808D1BA + ldrb r0, [r1, #9] + cmp r0, r5 + bne _0808D1BA + ldrb r0, [r1, #0xa] + cmp r0, r4 + beq _0808D1D8 +_0808D1BA: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bhi _0808D1D8 + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0808D1A0 +_0808D1D4: + cmp r2, #0xf + bls _0808D1E0 +_0808D1D8: + movs r0, #1 + b _0808D214 + .align 2, 0 +_0808D1DC: .4byte gUnknown_2036FF0 +_0808D1E0: + mov r0, ip + strb r2, [r0] + ldr r1, _0808D21C +_0808D1E6: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808D208 + ldrb r0, [r3, #8] + cmp r0, r6 + bne _0808D208 + ldrb r0, [r3, #9] + cmp r0, r5 + bne _0808D208 + ldrb r0, [r3, #0xa] + cmp r0, r4 + beq _0808D1D8 +_0808D208: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _0808D1E6 + movs r0, #0 +_0808D214: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D21C: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808D180 + + thumb_func_start sub_0808D220 +sub_0808D220: @ 0x0808D220 + push {lr} + ldrb r2, [r0] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bl sub_0808D27C + pop {r0} + bx r0 + thumb_func_end sub_0808D220 + + thumb_func_start sub_0808D234 +sub_0808D234: @ 0x0808D234 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D272 + mov r0, sp + ldrb r0, [r0] + bl sub_0808E9C8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808D278 + adds r0, r0, r1 + bl sub_0808D220 +_0808D272: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0808D278: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808D234 + + thumb_func_start sub_0808D27C +sub_0808D27C: @ 0x0808D27C + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldrb r0, [r4, #5] + bl sub_0808E004 + ldrh r2, [r0, #6] + ldr r1, _0808D2C0 + ldr r0, [sp, #4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + ldr r2, _0808D2C4 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0xc + adds r0, r0, r1 + mov r1, sp + str r1, [r0] + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + bl sub_08006E00 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D2C0: .4byte 0xFFFF0000 +_0808D2C4: .4byte gUnknown_20205AC + thumb_func_end sub_0808D27C + + thumb_func_start sub_0808D2C8 +sub_0808D2C8: @ 0x0808D2C8 + push {r4, lr} + movs r4, #0 +_0808D2CC: + ldr r0, _0808D2F4 + ldrb r0, [r0, #5] + cmp r4, r0 + beq _0808D2E2 + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0808D2F8 + adds r0, r0, r1 + bl sub_0808D220 +_0808D2E2: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0808D2CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D2F4: .4byte gUnknown_2037230 +_0808D2F8: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808D2C8 + + thumb_func_start sub_0808D2FC +sub_0808D2FC: @ 0x0808D2FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r1 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r3, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sl, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp] + bl sub_0808CFB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #0x10 + bne _0808D338 + movs r0, #0x10 + b _0808D49C +_0808D338: + mov r0, sb + lsls r4, r0, #3 + adds r0, r4, r0 + lsls r0, r0, #2 + ldr r1, _0808D360 + adds r6, r0, r1 + ldrb r0, [r6, #5] + bl sub_0808E004 + adds r7, r0, #0 + ldrb r0, [r7, #0xc] + lsls r0, r0, #0x1c + lsrs r5, r0, #0x1c + cmp r5, #0 + bne _0808D364 + ldrh r0, [r7, #2] + movs r1, #0 + bl sub_0808E338 + b _0808D386 + .align 2, 0 +_0808D360: .4byte gUnknown_2036FF0 +_0808D364: + cmp r5, #0xa + bne _0808D372 + ldrh r0, [r7, #2] + movs r1, #0xa + bl sub_0808E3A8 + b _0808D386 +_0808D372: + cmp r5, #0xf + bls _0808D386 + adds r0, r5, #0 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r7, #2] + adds r1, r5, #0 + bl sub_0808E420 +_0808D386: + ldrb r0, [r6, #6] + cmp r0, #0x4c + bne _0808D394 + ldrb r0, [r6, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r6, #1] +_0808D394: + ldr r1, _0808D3CC + adds r0, r1, #0 + mov r2, r8 + strh r0, [r2, #2] + mov r0, r8 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0x40 + bne _0808D3D4 + ldr r0, _0808D3D0 + mov r2, sb + adds r1, r4, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0x10 + b _0808D49C + .align 2, 0 +_0808D3CC: .4byte 0x0000FFFF +_0808D3D0: .4byte gUnknown_2036FF0 +_0808D3D4: + mov r1, r8 + lsls r0, r1, #4 + add r0, r8 + lsls r0, r0, #2 + ldr r1, _0808D4AC + adds r4, r0, r1 + mov r2, sl + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r6, #0x10] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, [sp] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r6, #0x12] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + bl sub_08092960 + ldrh r0, [r7, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x28 + strb r0, [r1] + ldrh r0, [r7, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + strb r0, [r2] + ldrh r0, [r4, #0x20] + adds r0, #8 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + adds r1, #0x10 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + strh r0, [r4, #0x22] + lsls r2, r5, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + mov r0, sb + strh r0, [r4, #0x2e] + mov r1, r8 + strb r1, [r6, #4] + ldrb r1, [r7, #0xc] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldrb r2, [r6, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #1] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0808D486 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_0808D486: + ldrb r0, [r6, #0xb] + lsrs r0, r0, #4 + adds r1, r4, #0 + movs r2, #1 + bl sub_0809677C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08095E88 + mov r0, sb +_0808D49C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D4AC: .4byte gUnknown_20205AC + thumb_func_end sub_0808D2FC + + thumb_func_start sub_0808D4B0 +sub_0808D4B0: @ 0x0808D4B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x2c + mov sb, r0 + adds r6, r1, #0 + mov r8, r2 + adds r4, r3, #0 + ldr r5, [sp, #0x48] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r0, #0 + str r0, [sp, #0x20] + mov r1, sb + ldrb r0, [r1, #1] + bl sub_0808E004 + adds r7, r0, #0 + add r2, sp, #0x20 + mov r0, sb + add r1, sp, #8 + bl sub_0808D6C0 + ldrh r3, [r7, #6] + ldr r2, _0808D528 + add r1, sp, #0x24 + ldr r0, [r1, #4] + ands r0, r2 + orrs r0, r3 + str r0, [r1, #4] + str r1, [sp, #0x14] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + mov r0, sb + add r1, sp, #8 + adds r2, r6, #0 + mov r3, r8 + bl sub_0808D2FC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + cmp r2, #0x10 + bne _0808D52C + movs r0, #0x10 + b _0808D562 + .align 2, 0 +_0808D528: .4byte 0xFFFF0000 +_0808D52C: + ldr r4, _0808D570 + ldr r1, _0808D574 + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0xc + adds r0, r0, r1 + ldr r1, [r7, #0x1c] + str r1, [r0] + ldr r2, [sp, #0x20] + cmp r2, #0 + beq _0808D560 + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r1, r2, #0 + bl sub_0800858C +_0808D560: + adds r0, r5, #0 +_0808D562: + add sp, #0x2c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D570: .4byte gUnknown_20205AC +_0808D574: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808D4B0 + + thumb_func_start sub_0808D578 +sub_0808D578: @ 0x0808D578 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + mov r4, sp + adds r4, #6 + add r0, sp, #4 + adds r1, r4, #0 + bl sub_08092A9C + ldr r0, _0808D5B0 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + add r0, sp, #4 + movs r6, #0 + ldrsh r3, [r0, r6] + movs r6, #0 + ldrsh r0, [r4, r6] + str r0, [sp] + adds r0, r5, #0 + bl sub_0808D4B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808D5B0: .4byte gUnknown_3005AEC + thumb_func_end sub_0808D578 + + thumb_func_start sub_0808D5B4 +sub_0808D5B4: @ 0x0808D5B4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x18 + ldr r4, [sp, #0x2c] + ldr r5, [sp, #0x30] + mov r8, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x10 + ldr r5, _0808D618 + adds r3, r3, r5 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + adds r4, r4, r5 + lsrs r4, r4, #0x10 + mov r5, sp + movs r6, #0 + strb r2, [r5] + mov r2, sp + strb r0, [r2, #1] + mov r0, sp + strb r6, [r0, #2] + movs r5, #0 + strh r3, [r0, #4] + strh r4, [r0, #6] + mov r2, r8 + strb r2, [r0, #8] + strb r1, [r0, #9] + mov r2, sp + ldrb r1, [r2, #0xa] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xa] + mov r0, sp + strb r5, [r0, #0xa] + strh r6, [r0, #0xc] + strh r6, [r0, #0xe] + bl sub_0808D578 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808D618: .4byte 0xFFF90000 + thumb_func_end sub_0808D5B4 + + thumb_func_start sub_0808D61C +sub_0808D61C: @ 0x0808D61C + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0808EA98 + adds r5, r0, #0 + cmp r5, #0 + beq _0808D662 + mov r4, sp + adds r4, #6 + add r0, sp, #4 + adds r1, r4, #0 + bl sub_08092A9C + add r0, sp, #4 + 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_0808D4B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808D664 +_0808D662: + movs r0, #0x10 +_0808D664: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808D61C + + thumb_func_start sub_0808D66C +sub_0808D66C: @ 0x0808D66C + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808E004 + ldrh r1, [r0] + strh r1, [r4] + ldrh r1, [r0, #2] + strh r1, [r4, #2] + ldr r1, [r0, #0x10] + str r1, [r4, #4] + ldr r1, [r0, #0x18] + str r1, [r4, #8] + ldr r1, [r0, #0x1c] + str r1, [r4, #0xc] + ldr r1, [r0, #0x20] + str r1, [r4, #0x10] + str r5, [r4, #0x14] + ldr r0, [r0, #0x14] + str r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0808D66C + + thumb_func_start sub_0808D6A0 +sub_0808D6A0: @ 0x0808D6A0 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + ldr r4, _0808D6BC + lsrs r1, r1, #0xe + adds r1, r1, r4 + ldr r1, [r1] + bl sub_0808D66C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808D6BC: .4byte gUnknown_84DD88C + thumb_func_end sub_0808D6A0 + + thumb_func_start sub_0808D6C0 +sub_0808D6C0: @ 0x0808D6C0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldrb r0, [r4, #1] + ldrb r1, [r4, #9] + adds r2, r5, #0 + bl sub_0808D6A0 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0808D6C0 + + thumb_func_start sub_0808D6D8 +sub_0808D6D8: @ 0x0808D6D8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [sp, #0x20] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0x18 + bl sub_08000BC8 + adds r6, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + mov r3, sp + bl sub_0808D66C + ldrh r1, [r6, #2] + ldr r0, _0808D774 + cmp r1, r0 + beq _0808D71E + adds r0, r1, #0 + bl sub_0808E204 +_0808D71E: + mov r0, r8 + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + lsls r2, r7, #0x10 + asrs r2, r2, #0x10 + adds r0, r6, #0 + mov r3, sb + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #0 + bl sub_08000BF0 + cmp r5, #0x40 + beq _0808D762 + ldr r1, [sp] + cmp r1, #0 + beq _0808D762 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r0, _0808D778 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800858C + adds r4, #0x42 + ldrb r1, [r4] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4] +_0808D762: + adds r0, r5, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808D774: .4byte 0x0000FFFF +_0808D778: .4byte gUnknown_20205AC + thumb_func_end sub_0808D6D8 + + thumb_func_start sub_0808D77C +sub_0808D77C: @ 0x0808D77C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r5, r0, #0 + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x44] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + add r1, sp, #0x18 + mov r8, r1 + strh r2, [r1] + mov r6, sp + adds r6, #0x1a + strh r3, [r6] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + adds r0, r5, #0 + bl sub_0808E004 + adds r4, r0, #0 + ldr r1, _0808D87C + add r3, sp, #0x1c + adds r0, r5, #0 + mov r2, sp + bl sub_0808D66C + mov r1, sp + ldr r2, _0808D880 + adds r0, r2, #0 + strh r0, [r1, #2] + mov r1, r8 + movs r2, #0 + ldrsh r0, [r1, r2] + adds r0, #7 + strh r0, [r1] + movs r1, #0 + ldrsh r0, [r6, r1] + adds r0, #7 + strh r0, [r6] + mov r0, r8 + adds r1, r6, #0 + movs r2, #8 + movs r3, #0x10 + bl sub_08092A50 + 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_08006B60 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _0808D8DC + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _0808D884 + adds r5, r0, r1 + ldrh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, r5, #0 + adds r1, #0x28 + strb r0, [r1] + ldrh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, #1 + strb r0, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldrb r0, [r4, #0xc] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + ldrb r1, [r5, #5] + movs r3, #0xf + adds r2, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, #5] + lsls r1, r2, #0x18 + lsrs r0, r1, #0x1c + cmp r0, #0xf + bls _0808D854 + subs r0, #0x10 + lsls r0, r0, #4 + ands r2, r3 + orrs r2, r0 + strb r2, [r5, #5] +_0808D854: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + mov r2, sb + strh r2, [r5, #0x2e] + strh r7, [r5, #0x30] + ldrb r1, [r4, #0xc] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0xa + bne _0808D888 + ldrh r0, [r4, #2] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + bl sub_0808E3A8 + b _0808D89C + .align 2, 0 +_0808D87C: .4byte sub_08097438 +_0808D880: .4byte 0x0000FFFF +_0808D884: .4byte gUnknown_20205AC +_0808D888: + lsls r1, r1, #0x1c + lsrs r0, r1, #0x1c + cmp r0, #0xf + bls _0808D89C + ldrh r0, [r4, #2] + lsrs r2, r1, #0x1c + movs r1, #0xf0 + orrs r1, r2 + bl sub_0808E420 +_0808D89C: + ldr r1, [sp, #0x1c] + cmp r1, #0 + beq _0808D8B8 + adds r0, r5, #0 + bl sub_0800858C + 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] +_0808D8B8: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_080966CC + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_0809677C + mov r0, sl + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 +_0808D8DC: + adds r0, r6, #0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808D77C + + thumb_func_start sub_0808D8F0 +sub_0808D8F0: @ 0x0808D8F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #8] + ldr r5, _0808D948 + ldr r0, [r5, #4] + cmp r0, #0 + beq _0808D9E8 + ldr r0, _0808D94C + ldr r2, [r0] + ldrh r1, [r2] + subs r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r1, #0x11 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0xc] + ldrh r4, [r2, #2] + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808D950 + bl sub_081AA7B8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _0808D960 + .align 2, 0 +_0808D948: .4byte gUnknown_2036FB8 +_0808D94C: .4byte gUnknown_3005AEC +_0808D950: + bl sub_081D5A10 + cmp r0, #0 + beq _0808D95C + movs r6, #2 + b _0808D960 +_0808D95C: + ldr r0, [r5, #4] + ldrb r6, [r0] +_0808D960: + movs r5, #0 + cmp r5, r6 + bhs _0808D9E8 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + mov sb, r0 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 +_0808D974: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + movs r2, #0xc7 + lsls r2, r2, #4 + adds r0, r0, r2 + ldr r3, _0808D9F8 + ldr r1, [r3] + adds r4, r1, r0 + ldrh r0, [r4, #4] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r4, #6] + adds r0, #7 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp sb, r1 + bgt _0808D9DE + mov r7, sl + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + blt _0808D9DE + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + cmp r8, r1 + bgt _0808D9DE + ldr r2, [sp, #0xc] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + blt _0808D9DE + ldrh r0, [r4, #0x14] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D9DE + ldr r3, _0808D9F8 + ldr r0, [r3] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + ldr r7, [sp, #4] + lsls r3, r7, #0x10 + ldr r7, [sp, #8] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + adds r0, r4, #0 + asrs r3, r3, #0x10 + bl sub_0808D4B0 +_0808D9DE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _0808D974 +_0808D9E8: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808D9F8: .4byte gUnknown_3005AEC + thumb_func_end sub_0808D8F0 + + thumb_func_start sub_0808D9FC +sub_0808D9FC: @ 0x0808D9FC + push {r4, r5, r6, lr} + movs r3, #0 + ldr r6, _0808DA50 +_0808DA02: + movs r2, #0 + movs r4, #0 + adds r5, r3, #1 +_0808DA08: + lsls r0, r2, #2 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0 + beq _0808DA1A + ldrb r1, [r1, #2] + cmp r3, r1 + bne _0808DA1A + movs r4, #1 +_0808DA1A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0808DA08 + cmp r4, #0 + bne _0808DA42 + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, _0808DA54 + adds r2, r0, r1 + ldr r0, [r2] + ldr r1, _0808DA58 + ands r0, r1 + cmp r0, #1 + bne _0808DA42 + adds r0, r2, #0 + bl sub_0808DA5C +_0808DA42: + lsls r0, r5, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _0808DA02 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808DA50: .4byte gUnknown_2031FA8 +_0808DA54: .4byte gUnknown_2036FF0 +_0808DA58: .4byte 0x00010001 + thumb_func_end sub_0808D9FC + + thumb_func_start sub_0808DA5C +sub_0808DA5C: @ 0x0808DA5C + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldr r0, _0808DAD8 + ldr r2, [r0] + ldrh r0, [r2] + subs r1, r0, #2 + lsls r1, r1, #0x10 + adds r0, #0x11 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r4, [r2, #2] + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0x10 + ldrsh r2, [r3, r0] + lsrs r7, r1, #0x10 + asrs r1, r1, #0x10 + cmp r2, r1 + blt _0808DAA2 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r2, r0 + bgt _0808DAA2 + movs r0, #0x12 + ldrsh r1, [r3, r0] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + blt _0808DAA2 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + ble _0808DAD0 +_0808DAA2: + movs r0, #0xc + ldrsh r1, [r3, r0] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + blt _0808DACA + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _0808DACA + movs r0, #0xe + ldrsh r1, [r3, r0] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + blt _0808DACA + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + ble _0808DAD0 +_0808DACA: + adds r0, r3, #0 + bl sub_0808D220 +_0808DAD0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808DAD8: .4byte gUnknown_3005AEC + thumb_func_end sub_0808DA5C + + thumb_func_start sub_0808DADC +sub_0808DADC: @ 0x0808DADC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_0808B864 + movs r6, #0 + ldr r7, _0808DB24 + lsls r4, r4, #0x10 + lsls r5, r5, #0x10 +_0808DAF6: + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808DB10 + adds r0, r6, #0 + asrs r1, r4, #0x10 + asrs r2, r5, #0x10 + bl sub_0808DB28 +_0808DB10: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xf + bls _0808DAF6 + bl sub_0808CDC0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808DB24: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808DADC + + thumb_func_start sub_0808DB28 +sub_0808DB28: @ 0x0808DB28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x24] + movs r7, #0 + ldr r2, _0808DBB8 +_0808DB4A: + lsls r0, r7, #2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _0808DB5C + ldrb r1, [r1, #2] + cmp sb, r1 + bne _0808DB5C + b _0808DCE4 +_0808DB5C: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _0808DB4A + mov r1, sb + lsls r0, r1, #3 + add r0, sb + lsls r0, r0, #2 + ldr r1, _0808DBBC + adds r6, r0, r1 + movs r0, #0 + str r0, [sp, #0x20] + ldrb r0, [r6, #5] + bl sub_0808E004 + adds r5, r0, #0 + ldrh r2, [r5, #6] + ldr r1, _0808DBC0 + add r4, sp, #0x18 + ldr r0, [r4, #4] + ands r0, r1 + orrs r0, r2 + str r0, [r4, #4] + ldrb r0, [r6, #5] + ldrb r1, [r6, #6] + add r3, sp, #0x20 + mov r2, sp + bl sub_0808D6A0 + str r4, [sp, #0xc] + mov r1, sp + ldr r2, _0808DBC4 + adds r0, r2, #0 + strh r0, [r1, #2] + ldrb r0, [r5, #0xc] + lsls r1, r0, #0x1c + lsrs r0, r1, #0x1c + mov r8, r0 + cmp r0, #0 + bne _0808DBC8 + ldrh r0, [r5, #2] + lsrs r1, r1, #0x1c + bl sub_0808E338 + b _0808DBEE + .align 2, 0 +_0808DBB8: .4byte gUnknown_2031FA8 +_0808DBBC: .4byte gUnknown_2036FF0 +_0808DBC0: .4byte 0xFFFF0000 +_0808DBC4: .4byte 0x0000FFFF +_0808DBC8: + mov r2, r8 + cmp r2, #0xa + bne _0808DBD8 + ldrh r0, [r5, #2] + lsrs r1, r1, #0x1c + bl sub_0808E3A8 + b _0808DBEE +_0808DBD8: + mov r0, r8 + cmp r0, #0xf + bls _0808DBEE + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r0, [r5, #2] + mov r1, r8 + bl sub_0808E420 +_0808DBEE: + mov r1, sp + ldr r2, _0808DCF4 + adds r0, r2, #0 + strh r0, [r1, #2] + mov r0, sp + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0x40 + beq _0808DCE4 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _0808DCF8 + adds r4, r0, r1 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r6, #0x10] + adds r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, [sp, #0x24] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r6, #0x12] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + bl sub_08092960 + ldrh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x28 + strb r0, [r1] + ldrh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + strb r0, [r2] + ldrh r0, [r4, #0x20] + adds r0, #8 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + adds r1, #0x10 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, [r5, #0x1c] + str r0, [r4, #0xc] + ldrb r0, [r6, #6] + cmp r0, #0xb + bne _0808DC82 + mov r0, sb + adds r1, r7, #0 + bl sub_0808DD34 + bl sub_08154164 + strb r0, [r6, #0x1b] +_0808DC82: + ldr r1, [sp, #0x20] + cmp r1, #0 + beq _0808DC8E + adds r0, r4, #0 + bl sub_0800858C +_0808DC8E: + mov r0, r8 + lsls r2, r0, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + mov r1, sb + strh r1, [r4, #0x2e] + strb r7, [r6, #4] + ldrb r0, [r6, #1] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0808DCD2 + ldrb r0, [r6, #6] + cmp r0, #0xb + beq _0808DCD2 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_0808DCD2: + adds r0, r6, #0 + bl sub_0808DCFC + ldrb r0, [r6, #0xb] + lsrs r0, r0, #4 + adds r1, r4, #0 + movs r2, #1 + bl sub_0809677C +_0808DCE4: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808DCF4: .4byte 0x0000FFFF +_0808DCF8: .4byte gUnknown_20205AC + thumb_func_end sub_0808DB28 + + thumb_func_start sub_0808DCFC +sub_0808DCFC: @ 0x0808DCFC + push {lr} + ldrb r2, [r0] + movs r3, #3 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r2, [r0, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + ands r1, r3 + movs r2, #5 + rsbs r2, r2, #0 + ands r1, r2 + subs r2, #4 + ands r1, r2 + subs r2, #8 + ands r1, r2 + subs r2, #0x10 + ands r1, r2 + strb r1, [r0, #2] + bl sub_08092BAC + pop {r0} + bx r0 + thumb_func_end sub_0808DCFC + + thumb_func_start sub_0808DD34 +sub_0808DD34: @ 0x0808DD34 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0808DD60 + strb r0, [r5, #5] + strb r1, [r5, #4] + ldr r1, _0808DD64 + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r1 + ldrb r0, [r4, #5] + bl sub_0808B738 + strb r0, [r5, #7] + ldrb r0, [r4, #5] + movs r1, #0x20 + bl sub_0808B914 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808DD60: .4byte gUnknown_2037230 +_0808DD64: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808DD34 + + thumb_func_start sub_0808DD68 +sub_0808DD68: @ 0x0808DD68 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov r0, r8 + bl sub_0808E004 + adds r6, r0, #0 + ldrb r1, [r7, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808DDA0 + adds r4, r0, r1 + ldrb r0, [r6, #0xc] + lsls r1, r0, #0x1c + lsrs r5, r1, #0x1c + cmp r5, #0 + bne _0808DDA4 + ldrh r0, [r6, #2] + adds r1, r5, #0 + bl sub_0808E28C + b _0808DDC6 + .align 2, 0 +_0808DDA0: .4byte gUnknown_20205AC +_0808DDA4: + cmp r5, #0xa + bne _0808DDB2 + ldrh r0, [r6, #2] + lsrs r1, r1, #0x1c + bl sub_0808E3A8 + b _0808DDC6 +_0808DDB2: + cmp r5, #0xf + bls _0808DDC6 + adds r0, r5, #0 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r6, #2] + adds r1, r5, #0 + bl sub_0808E420 +_0808DDC6: + ldr r0, [r6, #0x10] + ldrb r2, [r0, #1] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #1] + ldr r0, [r6, #0x10] + ldrb r0, [r0, #3] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #3] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #3] + ldr r0, [r6, #0x1c] + str r0, [r4, #0xc] + ldr r0, [r6, #0x18] + str r0, [r4, #8] + ldr r0, [r6, #0x14] + str r0, [r4, #0x18] + lsls r2, r5, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] + ldrb r1, [r6, #0xc] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldrb r2, [r7, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #1] + mov r0, r8 + strb r0, [r7, #5] + movs r1, #0x10 + ldrsh r0, [r7, r1] + movs r2, #0x12 + ldrsh r1, [r7, r2] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + bl sub_080929A8 + ldrh r0, [r6, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x28 + strb r0, [r1] + ldrh r0, [r6, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + strb r0, [r2] + ldrh r0, [r4, #0x20] + adds r0, #8 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + adds r1, #0x10 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrb r0, [r7, #1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _0808DE68 + bl sub_0808E7FC +_0808DE68: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808DD68 + + thumb_func_start sub_0808DE74 +sub_0808DE74: @ 0x0808DE74 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808DEA8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808DEB0 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0808DD68 +_0808DEA8: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DEB0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808DE74 + + thumb_func_start sub_0808DEB4 +sub_0808DEB4: @ 0x0808DEB4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_0808E930 + ldrb r0, [r6, #1] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0808DEFA + ldrb r0, [r6, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r5, _0808DF00 + adds r4, r4, r5 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldrb r1, [r6, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0 + bl sub_08007EF4 +_0808DEFA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808DF00: .4byte gUnknown_20205AC + thumb_func_end sub_0808DEB4 + + thumb_func_start sub_0808DF04 +sub_0808DF04: @ 0x0808DF04 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808DF38 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808DF40 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0808DEB4 +_0808DF38: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808DF40: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808DF04 + + thumb_func_start sub_0808DF44 +sub_0808DF44: @ 0x0808DF44 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r0, #5] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808DF60 + adds r0, r0, r2 + bl sub_0808DEB4 + pop {r0} + bx r0 + .align 2, 0 +_0808DF60: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808DF44 + + thumb_func_start sub_0808DF64 +sub_0808DF64: @ 0x0808DF64 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldrb r0, [r5, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r5, #1] + adds r4, r7, #0 + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, #0x1d] + bl sub_080E0F14 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0808DFF0 + ldrb r1, [r5, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #1] + ldrb r1, [r4] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r5, #0x1d] + bl sub_080E0EF8 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + subs r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r4, #0x2b + bls _0808DFB8 + movs r4, #0 +_0808DFB8: + ldr r0, _0808DFF8 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r0, [r0] + adds r0, r0, r6 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0808DD68 + ldr r0, _0808DFFC + adds r0, r4, r0 + ldr r0, [r0] + str r0, [r7, #0xc] + ldr r0, _0808E000 + adds r4, r4, r0 + ldr r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r1, r1, #4 + ldrb r2, [r7, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #5] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_08007EC0 +_0808DFF0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808DFF8: .4byte gUnknown_84E4D5C +_0808DFFC: .4byte gUnknown_84E4C04 +_0808E000: .4byte gUnknown_84E4CB0 + thumb_func_end sub_0808DF64 + + thumb_func_start sub_0808E004 +sub_0808E004: @ 0x0808E004 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xef + bls _0808E01C + adds r0, r1, #0 + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809CFA8 + adds r1, r0, #0 +_0808E01C: + cmp r1, #0x45 + bne _0808E034 + bl sub_081206E8 + lsls r0, r0, #0x18 + ldr r1, _0808E030 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + b _0808E042 + .align 2, 0 +_0808E030: .4byte gUnknown_84DDE30 +_0808E034: + cmp r1, #0xee + bls _0808E03A + movs r1, #5 +_0808E03A: + ldr r0, _0808E048 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] +_0808E042: + pop {r1} + bx r1 + .align 2, 0 +_0808E048: .4byte gUnknown_84DDA74 + thumb_func_end sub_0808E004 + + thumb_func_start sub_0808E04C +sub_0808E04C: @ 0x0808E04C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #5] + cmp r0, #0xef + bls _0808E062 + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809CFA8 + strb r0, [r4, #5] +_0808E062: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808E04C + + thumb_func_start sub_0808E068 +sub_0808E068: @ 0x0808E068 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E0AA + ldr r2, _0808E0B4 + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #1 + adds r2, r4, #0 + ands r2, r0 + lsls r2, r2, #5 + ldrb r3, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #1] +_0808E0AA: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E0B4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E068 + + thumb_func_start sub_0808E0B8 +sub_0808E0B8: @ 0x0808E0B8 + push {r4, lr} + ldrb r4, [r0, #8] + strb r4, [r1] + ldrb r1, [r0, #9] + strb r1, [r2] + ldrb r0, [r0, #0xa] + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808E0B8 + + thumb_func_start sub_0808E0CC +sub_0808E0CC: @ 0x0808E0CC + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0808CEE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x10 + beq _0808E0F4 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808E0F8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0808E0F4: + pop {r0} + bx r0 + .align 2, 0 +_0808E0F8: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E0CC + + thumb_func_start sub_0808E0FC +sub_0808E0FC: @ 0x0808E0FC + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E142 + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0808E14C + adds r2, r2, r0 + ldrb r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808E150 + adds r0, r0, r1 + ldrb r1, [r2, #3] + movs r3, #4 + orrs r1, r3 + strb r1, [r2, #3] + adds r0, #0x43 + strb r4, [r0] +_0808E142: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E14C: .4byte gUnknown_2036FF0 +_0808E150: .4byte gUnknown_20205AC + thumb_func_end sub_0808E0FC + + thumb_func_start sub_0808E154 +sub_0808E154: @ 0x0808E154 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E190 + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0808E198 + adds r1, r1, r0 + ldrb r2, [r1, #3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #3] + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] +_0808E190: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0808E198: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E154 + + thumb_func_start sub_0808E19C +sub_0808E19C: @ 0x0808E19C + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E1E0 + ldr r2, _0808E1E8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808E1EC + adds r0, r0, r1 + strh r5, [r0, #0x24] + strh r4, [r0, #0x26] +_0808E1E0: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E1E8: .4byte gUnknown_2036FF0 +_0808E1EC: .4byte gUnknown_20205AC + thumb_func_end sub_0808E19C + + thumb_func_start sub_0808E1F0 +sub_0808E1F0: @ 0x0808E1F0 + push {lr} + bl sub_08008424 + ldr r1, _0808E200 + movs r0, #0xc + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0808E200: .4byte gUnknown_30030BC + thumb_func_end sub_0808E1F0 + + thumb_func_start sub_0808E204 +sub_0808E204: @ 0x0808E204 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0808E2F0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0808E228 + cmp r1, r0 + beq _0808E222 + lsls r0, r1, #3 + ldr r1, _0808E22C + adds r0, r0, r1 + bl sub_0808E264 +_0808E222: + pop {r0} + bx r0 + .align 2, 0 +_0808E228: .4byte 0x000011FF +_0808E22C: .4byte gUnknown_84E401C + thumb_func_end sub_0808E204 + + thumb_func_start sub_0808E230 +sub_0808E230: @ 0x0808E230 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldrh r0, [r5] + ldr r1, _0808E260 + cmp r0, r1 + beq _0808E25A + adds r6, r1, #0 +_0808E240: + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_0808E204 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r0, r6 + bne _0808E240 +_0808E25A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0808E260: .4byte 0x000011FF + thumb_func_end sub_0808E230 + + thumb_func_start sub_0808E264 +sub_0808E264: @ 0x0808E264 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0808E282 + adds r0, r4, #0 + bl sub_0800845C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808E284 +_0808E282: + movs r0, #0xff +_0808E284: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808E264 + + thumb_func_start sub_0808E28C +sub_0808E28C: @ 0x0808E28C + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0808E2F0 + lsls r0, r0, #0x18 + ldr r1, _0808E2C0 + lsrs r0, r0, #0x15 + adds r0, r0, r1 + ldr r0, [r0] + lsls r4, r4, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r4, r4, r1 + lsrs r4, r4, #0x10 + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808E2C0: .4byte gUnknown_84E401C + thumb_func_end sub_0808E28C + + thumb_func_start sub_0808E2C4 +sub_0808E2C4: @ 0x0808E2C4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + cmp r4, r6 + bhs _0808E2E8 +_0808E2D4: + ldrh r0, [r5] + adds r1, r4, #0 + bl sub_0808E28C + adds r5, #2 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _0808E2D4 +_0808E2E8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E2C4 + + thumb_func_start sub_0808E2F0 +sub_0808E2F0: @ 0x0808E2F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r2, #0 + ldr r0, _0808E318 + ldrh r1, [r0, #4] + ldr r3, _0808E31C + adds r4, r0, #0 + cmp r1, r3 + beq _0808E330 + adds r6, r4, #0 + adds r1, r3, #0 +_0808E308: + lsls r0, r2, #3 + adds r0, r0, r6 + ldrh r0, [r0, #4] + cmp r0, r5 + bne _0808E320 + adds r0, r2, #0 + b _0808E332 + .align 2, 0 +_0808E318: .4byte gUnknown_84E401C +_0808E31C: .4byte 0x000011FF +_0808E320: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #3 + adds r0, r0, r4 + ldrh r0, [r0, #4] + cmp r0, r1 + bne _0808E308 +_0808E330: + movs r0, #0xff +_0808E332: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808E2F0 + + thumb_func_start sub_0808E338 +sub_0808E338: @ 0x0808E338 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808E28C + movs r3, #0 + ldr r1, _0808E380 + ldrh r0, [r1] + ldr r2, _0808E384 + cmp r0, r2 + beq _0808E3A0 + ldr r0, _0808E388 + adds r5, r5, r0 + adds r6, r2, #0 +_0808E35C: + lsls r2, r3, #3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0808E390 + adds r1, #4 + adds r1, r2, r1 + ldr r0, _0808E38C + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl sub_0808E28C + b _0808E3A0 + .align 2, 0 +_0808E380: .4byte gUnknown_84E4154 +_0808E384: .4byte 0x000011FF +_0808E388: .4byte gUnknown_846FA18 +_0808E38C: .4byte gUnknown_2037254 +_0808E390: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0808E35C +_0808E3A0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E338 + + thumb_func_start sub_0808E3A8 +sub_0808E3A8: @ 0x0808E3A8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _0808E3F4 + strh r4, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808E28C + movs r3, #0 + ldr r1, _0808E3F8 + ldrh r0, [r1] + ldr r2, _0808E3FC + cmp r0, r2 + beq _0808E418 + ldr r0, _0808E400 + adds r5, r5, r0 + adds r6, r2, #0 +_0808E3D0: + lsls r2, r3, #3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0808E408 + adds r1, #4 + adds r1, r2, r1 + ldr r0, _0808E404 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl sub_0808E28C + b _0808E418 + .align 2, 0 +_0808E3F4: .4byte gUnknown_2037256 +_0808E3F8: .4byte gUnknown_84E41CC +_0808E3FC: .4byte 0x000011FF +_0808E400: .4byte gUnknown_846FA18 +_0808E404: .4byte gUnknown_2037254 +_0808E408: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0808E3D0 +_0808E418: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E3A8 + + thumb_func_start sub_0808E420 +sub_0808E420: @ 0x0808E420 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_0808E28C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E420 + + thumb_func_start sub_0808E434 +sub_0808E434: @ 0x0808E434 + push {r4, lr} + ldrh r3, [r0, #0x10] + strh r3, [r0, #0x14] + ldrh r4, [r0, #0x12] + strh r4, [r0, #0x16] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r3 + strh r1, [r0, #0x10] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r4 + strh r2, [r0, #0x12] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808E434 + + thumb_func_start sub_0808E454 +sub_0808E454: @ 0x0808E454 + 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 + .align 2, 0 + thumb_func_end sub_0808E454 + + thumb_func_start sub_0808E464 +sub_0808E464: @ 0x0808E464 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + strh r1, [r0, #0x10] + strh r2, [r0, #0x12] + bx lr + .align 2, 0 + thumb_func_end sub_0808E464 + + thumb_func_start sub_0808E478 +sub_0808E478: @ 0x0808E478 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldrb r1, [r6, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808E514 + adds r7, r0, r1 + ldrb r0, [r6, #5] + bl sub_0808E004 + mov r8, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0808E464 + 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_080929A8 + mov r1, r8 + ldrh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r1, r7, #0 + adds r1, #0x28 + strb r0, [r1] + mov r2, r8 + ldrh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + rsbs r0, r0, #0 + adds r2, r7, #0 + adds r2, #0x29 + strb r0, [r2] + ldrh r0, [r7, #0x20] + adds r0, #8 + strh r0, [r7, #0x20] + ldrh r1, [r7, #0x22] + adds r1, #0x10 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + strh r0, [r7, #0x22] + adds r0, r6, #0 + bl sub_0808DCFC + ldrb r0, [r6, #1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _0808E50A + bl sub_0808E7FC +_0808E50A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0808E514: .4byte gUnknown_20205AC + thumb_func_end sub_0808E478 + + thumb_func_start sub_0808E518 +sub_0808E518: @ 0x0808E518 + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E560 + lsls r1, r5, #0x10 + lsls r2, r4, #0x10 + mov r0, sp + ldrb r3, [r0] + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r3, _0808E568 + adds r0, r0, r3 + movs r3, #0xe0 + lsls r3, r3, #0xb + adds r1, r1, r3 + asrs r1, r1, #0x10 + adds r2, r2, r3 + asrs r2, r2, #0x10 + bl sub_0808E478 +_0808E560: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E568: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E518 + + thumb_func_start sub_0808E56C +sub_0808E56C: @ 0x0808E56C + push {lr} + movs r2, #0x10 + ldrsh r1, [r0, r2] + movs r3, #0x12 + ldrsh r2, [r0, r3] + bl sub_0808E454 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E56C + + thumb_func_start sub_0808E580 +sub_0808E580: @ 0x0808E580 + push {r4, r5, lr} + ldr r2, _0808E5E0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808E5D8 + movs r3, #0 + ldr r5, _0808E5E4 + movs r0, #4 + ldrsh r4, [r2, r0] + movs r0, #8 + ldrsh r1, [r2, r0] +_0808E59A: + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808E5CE + ldrh r0, [r2, #0xc] + subs r0, r0, r4 + strh r0, [r2, #0xc] + ldrh r0, [r2, #0xe] + subs r0, r0, r1 + strh r0, [r2, #0xe] + ldrh r0, [r2, #0x10] + subs r0, r0, r4 + strh r0, [r2, #0x10] + ldrh r0, [r2, #0x12] + subs r0, r0, r1 + strh r0, [r2, #0x12] + ldrh r0, [r2, #0x14] + subs r0, r0, r4 + strh r0, [r2, #0x14] + ldrh r0, [r2, #0x16] + subs r0, r0, r1 + strh r0, [r2, #0x16] +_0808E5CE: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _0808E59A +_0808E5D8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E5E0: .4byte gUnknown_2036FD4 +_0808E5E4: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E580 + + thumb_func_start sub_0808E5E8 +sub_0808E5E8: @ 0x0808E5E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r4, #0 + ldr r0, _0808E634 + mov r8, r0 +_0808E600: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808E638 + movs r2, #0x10 + ldrsh r0, [r1, r2] + cmp r0, r7 + bne _0808E638 + movs r2, #0x12 + ldrsh r0, [r1, r2] + cmp r0, r6 + bne _0808E638 + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0808E650 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808E638 + adds r0, r4, #0 + b _0808E644 + .align 2, 0 +_0808E634: .4byte gUnknown_2036FF0 +_0808E638: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0808E600 + movs r0, #0x10 +_0808E644: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808E5E8 + + thumb_func_start sub_0808E650 +sub_0808E650: @ 0x0808E650 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r0, #0xb] + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + beq _0808E670 + cmp r1, #0 + beq _0808E670 + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1c + cmp r0, r1 + beq _0808E670 + movs r0, #0 + b _0808E672 +_0808E670: + movs r0, #1 +_0808E672: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808E650 + + thumb_func_start sub_0808E678 +sub_0808E678: @ 0x0808E678 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_0808E580 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808D8F0 + bl sub_0808D9FC + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0808E678 + + thumb_func_start sub_0808E6A4 +sub_0808E6A4: @ 0x0808E6A4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0808E6E0 + movs r1, #0 + movs r2, #0 + movs r3, #4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808E6E4 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r2, #0x3e + adds r2, r2, r1 + mov ip, r2 + ldrb r2, [r2] + movs r3, #4 + orrs r2, r3 + mov r3, ip + strb r2, [r3] + strh r4, [r1, #0x2e] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808E6E0: .4byte gUnknown_846FA28 +_0808E6E4: .4byte gUnknown_20205AC + thumb_func_end sub_0808E6A4 + + thumb_func_start sub_0808E6E8 +sub_0808E6E8: @ 0x0808E6E8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, sp + ldr r1, _0808E70C + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + movs r2, #0x30 + ldrsh r1, [r0, r2] + lsls r1, 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 +_0808E70C: .4byte gUnknown_846FA40 + thumb_func_end sub_0808E6E8 + + thumb_func_start sub_0808E710 +sub_0808E710: @ 0x0808E710 + push {lr} + ldr r3, _0808E748 + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r1, [r1, #0x20] + strh r1, [r0, #0x20] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r1, [r1, #0x22] + strh r1, [r0, #0x22] + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + movs r1, #1 + strh r1, [r0, #0x30] + bl sub_0808E74C + pop {r0} + bx r0 + .align 2, 0 +_0808E748: .4byte gUnknown_20205AC + thumb_func_end sub_0808E710 + + thumb_func_start sub_0808E74C +sub_0808E74C: @ 0x0808E74C + push {r4, r5, lr} + ldr r3, _0808E780 + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r3, [r1, #0x22] + ldrh r2, [r0, #0x20] + ldrh r4, [r1, #0x20] + movs r5, #0x20 + ldrsh r1, [r1, r5] + subs r1, r1, r2 + strh r1, [r0, #0x32] + ldrh r2, [r0, #0x22] + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r2 + strh r1, [r0, #0x34] + strh r4, [r0, #0x20] + strh r3, [r0, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808E780: .4byte gUnknown_20205AC + thumb_func_end sub_0808E74C + + thumb_func_start sub_0808E784 +sub_0808E784: @ 0x0808E784 + push {r4, lr} + ldr r4, _0808E7B0 + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x20] + movs r3, #0 + strh r1, [r0, #0x20] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, 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 +_0808E7B0: .4byte gUnknown_20205AC + thumb_func_end sub_0808E784 + + thumb_func_start sub_0808E7B4 +sub_0808E7B4: @ 0x0808E7B4 + push {r4, r5, lr} + movs r3, #0 + ldr r4, _0808E7E0 + adds r5, r4, #0 + adds r5, #0x1c +_0808E7BE: + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r1, r0, #2 + adds r2, r1, r4 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0808E7E8 + adds r0, r1, r5 + ldr r1, [r0] + ldr r0, _0808E7E4 + cmp r1, r0 + bne _0808E7E8 + adds r0, r2, #0 + b _0808E7F4 + .align 2, 0 +_0808E7E0: .4byte gUnknown_20205AC +_0808E7E4: .4byte sub_0808E6E8 +_0808E7E8: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x3f + bls _0808E7BE + movs r0, #0 +_0808E7F4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808E7B4 + + thumb_func_start sub_0808E7FC +sub_0808E7FC: @ 0x0808E7FC + push {lr} + bl sub_0808E7B4 + adds r2, r0, #0 + cmp r2, #0 + beq _0808E814 + movs r0, #0 + strh r0, [r2, #0x30] + ldr r1, [r2, #0x1c] + adds r0, r2, #0 + bl _call_via_r1 +_0808E814: + pop {r0} + bx r0 + thumb_func_end sub_0808E7FC + + thumb_func_start sub_0808E818 +sub_0808E818: @ 0x0808E818 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0808E7B4 + cmp r0, #0 + beq _0808E82C + strh r4, [r0, #0x2e] + bl sub_0808E7FC +_0808E82C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E818 + + thumb_func_start sub_0808E834 +sub_0808E834: @ 0x0808E834 + push {lr} + bl sub_0808E7B4 + cmp r0, #0 + beq _0808E846 + ldrh r0, [r0, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0808E848 +_0808E846: + movs r0, #0x40 +_0808E848: + pop {r1} + bx r1 + thumb_func_end sub_0808E834 + + thumb_func_start sub_0808E84C +sub_0808E84C: @ 0x0808E84C + push {lr} + bl sub_0808E7B4 + movs r1, #2 + strh r1, [r0, #0x30] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808E84C + + thumb_func_start sub_0808E85C +sub_0808E85C: @ 0x0808E85C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r5, #0 + ldr r1, _0808E8A4 +_0808E876: + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0808E8A8 + adds r0, r4, #0 + mov r1, ip + 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 _0808E8B2 + .align 2, 0 +_0808E8A4: .4byte gUnknown_20205AC +_0808E8A8: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x3f + bls _0808E876 +_0808E8B2: + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808E85C + + thumb_func_start sub_0808E8C0 +sub_0808E8C0: @ 0x0808E8C0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r5, #0x3f + ldr r3, _0808E914 + movs r2, #1 + rsbs r2, r2, #0 +_0808E8DE: + lsls r0, r5, #0x10 + asrs r1, r0, #0x10 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r3 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0808E918 + adds r0, r4, #0 + mov r1, ip + 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, #0x18 + lsrs r0, r0, #0x18 + b _0808E926 + .align 2, 0 +_0808E914: .4byte gUnknown_20205AC +_0808E918: + subs r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r2 + bgt _0808E8DE + movs r0, #0x40 +_0808E926: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808E8C0 + + thumb_func_start sub_0808E930 +sub_0808E930: @ 0x0808E930 + push {r4, lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + adds r4, r2, #0 + ldrb r0, [r3, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, r3, #0 + adds r1, #0x20 + strb r0, [r1] + ldrb r0, [r3, #1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _0808E960 + movs r0, #0xf + adds r1, r2, #0 + ands r1, r0 + ldrb r2, [r3, #0x18] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] +_0808E960: + 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 + .align 2, 0 + thumb_func_end sub_0808E930 + + thumb_func_start sub_0808E974 +sub_0808E974: @ 0x0808E974 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_0808EA98 + ldr r0, [r0, #0x10] + pop {r1} + bx r1 + thumb_func_end sub_0808E974 + + thumb_func_start sub_0808E98C +sub_0808E98C: @ 0x0808E98C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808E9AC + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r0, [r2, #8] + ldrb r1, [r2, #9] + ldrb r2, [r2, #0xa] + bl sub_0808E974 + pop {r1} + bx r1 + .align 2, 0 +_0808E9AC: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E98C + + thumb_func_start sub_0808E9B0 +sub_0808E9B0: @ 0x0808E9B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_0808EA98 + ldrh r0, [r0, #0x14] + pop {r1} + bx r1 + thumb_func_end sub_0808E9B0 + + thumb_func_start sub_0808E9C8 +sub_0808E9C8: @ 0x0808E9C8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0808E9EC + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r0, [r2, #8] + ldrb r1, [r2, #9] + ldrb r2, [r2, #0xa] + bl sub_0808E9B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_0808E9EC: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808E9C8 + + thumb_func_start sub_0808E9F0 +sub_0808E9F0: @ 0x0808E9F0 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808EA24 + ldr r2, _0808EA20 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #7] + b _0808EA26 + .align 2, 0 +_0808EA20: .4byte gUnknown_2036FF0 +_0808EA24: + movs r0, #0xff +_0808EA26: + add sp, #4 + pop {r1} + bx r1 + thumb_func_end sub_0808E9F0 + + thumb_func_start sub_0808EA2C +sub_0808EA2C: @ 0x0808EA2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808EA40 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #7] + bx lr + .align 2, 0 +_0808EA40: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808EA2C + + thumb_func_start sub_0808EA44 +sub_0808EA44: @ 0x0808EA44 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808EA78 + ldr r2, _0808EA74 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1d] + b _0808EA7A + .align 2, 0 +_0808EA74: .4byte gUnknown_2036FF0 +_0808EA78: + movs r0, #0xff +_0808EA7A: + add sp, #4 + pop {r1} + bx r1 + thumb_func_end sub_0808EA44 + + thumb_func_start sub_0808EA80 +sub_0808EA80: @ 0x0808EA80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0808EA94 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #0x1d] + bx lr + .align 2, 0 +_0808EA94: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808EA80 + + thumb_func_start sub_0808EA98 +sub_0808EA98: @ 0x0808EA98 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _0808EAC8 + ldr r1, [r0] + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, r3 + bne _0808EAD0 + movs r0, #4 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _0808EAD0 + movs r0, #0xc7 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r0, _0808EACC + ldr r0, [r0, #4] + b _0808EADC + .align 2, 0 +_0808EAC8: .4byte gUnknown_3005AEC +_0808EACC: .4byte gUnknown_2036FB8 +_0808EAD0: + adds r0, r2, #0 + adds r1, r3, #0 + bl sub_080843F8 + ldr r0, [r0, #4] + ldr r1, [r0, #4] +_0808EADC: + ldrb r2, [r0] + adds r0, r4, #0 + bl sub_0808EAEC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EA98 + + thumb_func_start sub_0808EAEC +sub_0808EAEC: @ 0x0808EAEC + push {r4, r5, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0 + cmp r1, r2 + bhs _0808EB1A +_0808EAFE: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, r4 + bne _0808EB10 + adds r0, r3, #0 + b _0808EB1C +_0808EB10: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + blo _0808EAFE +_0808EB1A: + movs r0, #0 +_0808EB1C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EAEC + + thumb_func_start sub_0808EB24 +sub_0808EB24: @ 0x0808EB24 + push {r4, r5, lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + ldr r1, _0808EB44 + ldr r2, [r1] + movs r1, #5 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0808EB70 + ldrb r1, [r3, #0xa] + movs r0, #4 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _0808EB52 + b _0808EB70 + .align 2, 0 +_0808EB44: .4byte gUnknown_3005AEC +_0808EB48: + movs r1, #0xc7 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r4, r0 + b _0808EB72 +_0808EB52: + movs r1, #0 + adds r4, r2, #0 + ldrb r3, [r3, #8] + movs r5, #0xc7 + lsls r5, r5, #4 + adds r2, r4, r5 + movs r0, #0 +_0808EB60: + ldrb r5, [r2] + cmp r3, r5 + beq _0808EB48 + adds r2, #0x18 + adds r0, #0x18 + adds r1, #1 + cmp r1, #0x3f + ble _0808EB60 +_0808EB70: + movs r0, #0 +_0808EB72: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0808EB24 + + thumb_func_start sub_0808EB78 +sub_0808EB78: @ 0x0808EB78 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808EB24 + adds r1, r0, #0 + cmp r1, #0 + beq _0808EB92 + ldrh r0, [r4, #0x10] + subs r0, #7 + strh r0, [r1, #4] + ldrh r0, [r4, #0x12] + subs r0, #7 + strh r0, [r1, #6] +_0808EB92: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808EB78 + + thumb_func_start sub_0808EB98 +sub_0808EB98: @ 0x0808EB98 + push {r4, lr} + adds r4, r1, #0 + bl sub_0808EB24 + cmp r0, #0 + beq _0808EBA6 + str r4, [r0, #0x10] +_0808EBA6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0808EB98 + + thumb_func_start sub_0808EBAC +sub_0808EBAC: @ 0x0808EBAC + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_0808EB24 + cmp r0, #0 + beq _0808EBBC + strb r4, [r0, #9] +_0808EBBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0808EBAC + + thumb_func_start sub_0808EBC4 +sub_0808EBC4: @ 0x0808EBC4 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808EBF2 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808EBF8 + adds r0, r0, r1 + bl sub_0808EB78 +_0808EBF2: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0808EBF8: .4byte gUnknown_2036FF0 + thumb_func_end sub_0808EBC4 + + thumb_func_start sub_0808EBFC +sub_0808EBFC: @ 0x0808EBFC + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808EC58 + cmp r4, #6 + beq _0808EC26 + cmp r4, #7 + beq _0808EC44 + b _0808EC58 +_0808EC26: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808EC3C + adds r0, r0, r1 + ldr r1, _0808EC40 + bl sub_0808EB98 + b _0808EC58 + .align 2, 0 +_0808EC3C: .4byte gUnknown_2036FF0 +_0808EC40: .4byte gUnknown_82465B5 +_0808EC44: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808EC60 + adds r0, r0, r1 + ldr r1, _0808EC64 + bl sub_0808EB98 +_0808EC58: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808EC60: .4byte gUnknown_2036FF0 +_0808EC64: .4byte gUnknown_82465B9 + thumb_func_end sub_0808EBFC + + thumb_func_start sub_0808EC68 +sub_0808EC68: @ 0x0808EC68 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0808E1F0 + ldr r1, _0808ECA0 + ldr r2, _0808ECA4 + adds r0, r2, #0 + strh r0, [r1] + ldr r2, _0808ECA8 + strb r4, [r2] + cmp r4, #1 + bne _0808ECB4 + ldr r1, _0808ECAC + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #6 + bl sub_0808E2C4 + ldr r1, _0808ECB0 + movs r0, #8 + strb r0, [r1] + b _0808ECC6 + .align 2, 0 +_0808ECA0: .4byte gUnknown_2037256 +_0808ECA4: .4byte 0x000011FF +_0808ECA8: .4byte gUnknown_2037254 +_0808ECAC: .4byte gUnknown_84E428C +_0808ECB0: .4byte gUnknown_30030BC +_0808ECB4: + ldr r0, _0808ECCC + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + movs r1, #0 + movs r2, #0xa + bl sub_0808E2C4 +_0808ECC6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808ECCC: .4byte gUnknown_84E428C + thumb_func_end sub_0808EC68 + + thumb_func_start sub_0808ECD0 +sub_0808ECD0: @ 0x0808ECD0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #9 + bhi _0808ED0C + ldr r1, _0808ECEC + ldr r0, _0808ECF0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r2, #1 + b _0808ED00 + .align 2, 0 +_0808ECEC: .4byte gUnknown_84E428C +_0808ECF0: .4byte gUnknown_2037254 +_0808ECF4: + adds r1, r4, #4 + adds r1, r2, r1 + ldr r0, _0808ED08 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #1 +_0808ED00: + adds r0, r0, r1 + ldrh r0, [r0] + b _0808ED3E + .align 2, 0 +_0808ED08: .4byte gUnknown_2037254 +_0808ED0C: + movs r3, #0 + ldr r0, _0808ED44 + ldrh r1, [r0] + ldr r2, _0808ED48 + adds r4, r0, #0 + cmp r1, r2 + beq _0808ED3C + adds r6, r4, #0 + ldr r0, _0808ED4C + ldrh r1, [r0] + adds r5, r2, #0 +_0808ED22: + lsls r2, r3, #3 + adds r0, r2, r6 + ldrh r0, [r0] + cmp r0, r1 + beq _0808ECF4 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, r5 + bne _0808ED22 +_0808ED3C: + ldr r0, _0808ED48 +_0808ED3E: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808ED44: .4byte gUnknown_84E41CC +_0808ED48: .4byte 0x000011FF +_0808ED4C: .4byte gUnknown_2037256 + thumb_func_end sub_0808ECD0 + + thumb_func_start sub_0808ED50 +sub_0808ED50: @ 0x0808ED50 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808ED6C + adds r0, r0, r2 + ldr r2, _0808ED70 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808ED6C: .4byte gUnknown_2036FF0 +_0808ED70: .4byte sub_0808ED74 + thumb_func_end sub_0808ED50 + + thumb_func_start sub_0808ED74 +sub_0808ED74: @ 0x0808ED74 + movs r0, #0 + bx lr + thumb_func_end sub_0808ED74 + + thumb_func_start sub_0808ED78 +sub_0808ED78: @ 0x0808ED78 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808ED94 + adds r0, r0, r2 + ldr r2, _0808ED98 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808ED94: .4byte gUnknown_2036FF0 +_0808ED98: .4byte sub_0808ED9C + thumb_func_end sub_0808ED78 + + thumb_func_start sub_0808ED9C +sub_0808ED9C: @ 0x0808ED9C + push {r4, lr} + ldr r3, _0808EDB8 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808ED9C + + thumb_func_start sub_0808EDB0 +sub_0808EDB0: @ 0x0808EDB0 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808EDB8: .4byte gUnknown_84E5B48 + thumb_func_end sub_0808EDB0 + + thumb_func_start sub_0808EDBC +sub_0808EDBC: @ 0x0808EDBC + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EDBC + + thumb_func_start sub_0808EDD0 +sub_0808EDD0: @ 0x0808EDD0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EDD0 + + thumb_func_start sub_0808EDFC +sub_0808EDFC: @ 0x0808EDFC + push {r4, r5, r6, lr} + adds r6, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808EE30 + ldr r5, _0808EE2C + bl sub_0806F050 + movs r4, #3 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r5 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r6, #0 + bl sub_080972E8 + strh r4, [r6, #0x30] + movs r0, #1 + b _0808EE32 + .align 2, 0 +_0808EE2C: .4byte gUnknown_84E5B30 +_0808EE30: + movs r0, #0 +_0808EE32: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808EDFC + + thumb_func_start sub_0808EE38 +sub_0808EE38: @ 0x0808EE38 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808EE4C + movs r0, #0 + b _0808EE52 +_0808EE4C: + movs r0, #4 + strh r0, [r4, #0x30] + movs r0, #1 +_0808EE52: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808EE38 + + thumb_func_start sub_0808EE58 +sub_0808EE58: @ 0x0808EE58 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _0808EEA0 + mov r0, sp + movs r2, #4 + bl memcpy + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0808E930 + movs r0, #5 + strh r0, [r6, #0x30] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808EE96 + movs r0, #1 + strh r0, [r6, #0x30] +_0808EE96: + movs r0, #1 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808EEA0: .4byte gUnknown_84E5B64 + thumb_func_end sub_0808EE58 + + thumb_func_start sub_0808EEA4 +sub_0808EEA4: @ 0x0808EEA4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #6 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0808EEA4 + + thumb_func_start sub_0808EED4 +sub_0808EED4: @ 0x0808EED4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808EEF2 + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_0808EEF2: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EED4 + + thumb_func_start sub_0808EEFC +sub_0808EEFC: @ 0x0808EEFC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + movs r0, #0x80 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808EF68 + ldrb r0, [r5, #7] + cmp r0, #1 + beq _0808EF18 + cmp r0, #3 + bne _0808EF68 +_0808EF18: + mov r7, sp + adds r7, #2 + mov r0, sp + adds r1, r7, #0 + bl sub_0808B410 + ldrh r2, [r5, #0x10] + ldrh r4, [r5, #0x12] + ldrb r1, [r5, #0x1d] + subs r3, r2, r1 + subs r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r2, r1, r2 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r1, r1, r4 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + mov r0, sp + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r1, #0 + ldrsh r4, [r0, r1] + cmp r3, r4 + bgt _0808EF68 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, r4 + blt _0808EF68 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r2, #0 + ldrsh r1, [r7, r2] + cmp r0, r1 + bgt _0808EF68 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + bge _0808EF6C +_0808EF68: + movs r0, #0 + b _0808EF6E +_0808EF6C: + movs r0, #1 +_0808EF6E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EEFC + + thumb_func_start sub_0808EF78 +sub_0808EF78: @ 0x0808EF78 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r2, r2, #0x10 + lsls r3, r3, #0x10 + cmp r2, r3 + ble _0808EF96 + movs r2, #4 + lsls r0, r4, #0x10 + cmp r0, #0 + bge _0808EFA0 + movs r2, #3 + b _0808EFA0 +_0808EF96: + movs r2, #1 + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0808EFA0 + movs r2, #2 +_0808EFA0: + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808EF78 + + thumb_func_start sub_0808EFA8 +sub_0808EFA8: @ 0x0808EFA8 + push {lr} + movs r0, #1 + lsls r1, r1, #0x10 + cmp r1, #0 + bge _0808EFB4 + movs r0, #2 +_0808EFB4: + pop {r1} + bx r1 + thumb_func_end sub_0808EFA8 + + thumb_func_start sub_0808EFB8 +sub_0808EFB8: @ 0x0808EFB8 + push {lr} + movs r1, #4 + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0808EFC4 + movs r1, #3 +_0808EFC4: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808EFB8 + + thumb_func_start sub_0808EFCC +sub_0808EFCC: @ 0x0808EFCC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + lsls r2, r2, #0x10 + asrs r6, r2, #0x10 + lsls r3, r3, #0x10 + asrs r7, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808F008 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0808F022 + b _0808F020 +_0808F008: + cmp r0, #4 + bne _0808F022 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808F022 +_0808F020: + movs r0, #2 +_0808F022: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808EFCC + + thumb_func_start sub_0808F028 +sub_0808F028: @ 0x0808F028 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + lsls r2, r2, #0x10 + asrs r6, r2, #0x10 + lsls r3, r3, #0x10 + asrs r7, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808F064 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808F07E + b _0808F07C +_0808F064: + cmp r0, #3 + bne _0808F07E + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808F07E +_0808F07C: + movs r0, #2 +_0808F07E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F028 + + thumb_func_start sub_0808F084 +sub_0808F084: @ 0x0808F084 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + lsls r2, r2, #0x10 + asrs r6, r2, #0x10 + lsls r3, r3, #0x10 + asrs r7, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808F0C0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0808F0DA + b _0808F0D8 +_0808F0C0: + cmp r0, #4 + bne _0808F0DA + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808F0DA +_0808F0D8: + movs r0, #1 +_0808F0DA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F084 + + thumb_func_start sub_0808F0E0 +sub_0808F0E0: @ 0x0808F0E0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + lsls r2, r2, #0x10 + asrs r6, r2, #0x10 + lsls r3, r3, #0x10 + asrs r7, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808F11C + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808F136 + b _0808F134 +_0808F11C: + cmp r0, #3 + bne _0808F136 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808F136 +_0808F134: + movs r0, #1 +_0808F136: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F0E0 + + thumb_func_start sub_0808F13C +sub_0808F13C: @ 0x0808F13C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r7, r0, #0x10 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r2, r2, #0x10 + asrs r5, r2, #0x10 + lsls r3, r3, #0x10 + asrs r4, r3, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0808F172 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808F172: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F13C + + thumb_func_start sub_0808F178 +sub_0808F178: @ 0x0808F178 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r7, r0, #0x10 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r2, r2, #0x10 + asrs r5, r2, #0x10 + lsls r3, r3, #0x10 + asrs r4, r3, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _0808F1AE + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808F1AE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F178 + + thumb_func_start sub_0808F1B4 +sub_0808F1B4: @ 0x0808F1B4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r7, r0, #0x10 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r2, r2, #0x10 + asrs r5, r2, #0x10 + lsls r3, r3, #0x10 + asrs r4, r3, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808F1EA + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808F1EA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F1B4 + + thumb_func_start sub_0808F1F0 +sub_0808F1F0: @ 0x0808F1F0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + asrs r7, r0, #0x10 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r2, r2, #0x10 + asrs r5, r2, #0x10 + lsls r3, r3, #0x10 + asrs r4, r3, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EF78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808F226 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0808EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808F226: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F1F0 + + thumb_func_start sub_0808F22C +sub_0808F22C: @ 0x0808F22C + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F244 + movs r0, #0 + b _0808F2A8 +_0808F244: + mov r5, sp + adds r5, #2 + mov r0, sp + adds r1, r5, #0 + bl sub_0808B410 + mov r2, sp + mov r0, sp + ldrh r0, [r0] + ldrh r1, [r4, #0x10] + subs r0, r0, r1 + strh r0, [r2] + ldrh r0, [r5] + ldrh r1, [r4, #0x12] + subs r0, 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 _0808F278 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_0808F278: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0808F286 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_0808F286: + ldr r0, _0808F2B0 + lsls r4, r6, #2 + adds r4, r4, r0 + mov r0, sp + movs r6, #0 + ldrsh r0, [r0, r6] + movs r6, #0 + ldrsh r1, [r5, r6] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldr r4, [r4] + bl _call_via_r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0808F2A8: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0808F2B0: .4byte gUnknown_84E5B68 + thumb_func_end sub_0808F22C + + thumb_func_start sub_0808F2B4 +sub_0808F2B4: @ 0x0808F2B4 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808F2D0 + adds r0, r0, r2 + ldr r2, _0808F2D4 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808F2D0: .4byte gUnknown_2036FF0 +_0808F2D4: .4byte sub_0808F2D8 + thumb_func_end sub_0808F2B4 + + thumb_func_start sub_0808F2D8 +sub_0808F2D8: @ 0x0808F2D8 + push {r4, lr} + ldr r3, _0808F2F4 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F2D8 + + thumb_func_start sub_0808F2EC +sub_0808F2EC: @ 0x0808F2EC + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F2F4: .4byte gUnknown_84E5B94 + thumb_func_end sub_0808F2EC + + thumb_func_start sub_0808F2F8 +sub_0808F2F8: @ 0x0808F2F8 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F2F8 + + thumb_func_start sub_0808F30C +sub_0808F30C: @ 0x0808F30C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F30C + + thumb_func_start sub_0808F338 +sub_0808F338: @ 0x0808F338 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F36E + ldr r4, _0808F378 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808F36E: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808F378: .4byte gUnknown_84E5B30 + thumb_func_end sub_0808F338 + + thumb_func_start sub_0808F37C +sub_0808F37C: @ 0x0808F37C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F39A + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F3A2 +_0808F39A: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808F3A4 +_0808F3A2: + movs r0, #0 +_0808F3A4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F37C + + thumb_func_start sub_0808F3AC +sub_0808F3AC: @ 0x0808F3AC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808F3F0 + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + movs r1, #0 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808F3DC + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808F3DC: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808F3F0: .4byte gUnknown_84E5B64 + thumb_func_end sub_0808F3AC + + thumb_func_start sub_0808F3F4 +sub_0808F3F4: @ 0x0808F3F4 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808F410 + adds r0, r0, r2 + ldr r2, _0808F414 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808F410: .4byte gUnknown_2036FF0 +_0808F414: .4byte sub_0808F418 + thumb_func_end sub_0808F3F4 + + thumb_func_start sub_0808F418 +sub_0808F418: @ 0x0808F418 + push {r4, lr} + ldr r3, _0808F434 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F418 + + thumb_func_start sub_0808F42C +sub_0808F42C: @ 0x0808F42C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F434: .4byte gUnknown_84E5BA8 + thumb_func_end sub_0808F42C + + thumb_func_start sub_0808F438 +sub_0808F438: @ 0x0808F438 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F438 + + thumb_func_start sub_0808F44C +sub_0808F44C: @ 0x0808F44C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F44C + + thumb_func_start sub_0808F478 +sub_0808F478: @ 0x0808F478 + push {r4, r5, r6, lr} + adds r6, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F4AC + ldr r5, _0808F4A8 + bl sub_0806F050 + movs r4, #3 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r5 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r6, #0 + bl sub_080972E8 + strh r4, [r6, #0x30] + movs r0, #1 + b _0808F4AE + .align 2, 0 +_0808F4A8: .4byte gUnknown_84E5B30 +_0808F4AC: + movs r0, #0 +_0808F4AE: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808F478 + + thumb_func_start sub_0808F4B4 +sub_0808F4B4: @ 0x0808F4B4 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F4C8 + movs r0, #0 + b _0808F4CE +_0808F4C8: + movs r0, #4 + strh r0, [r4, #0x30] + movs r0, #1 +_0808F4CE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808F4B4 + + thumb_func_start sub_0808F4D4 +sub_0808F4D4: @ 0x0808F4D4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _0808F51C + mov r0, sp + movs r2, #2 + bl memcpy + bl sub_0806F050 + movs r7, #1 + 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_0808E930 + movs r0, #5 + strh r0, [r6, #0x30] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F512 + strh r7, [r6, #0x30] +_0808F512: + movs r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808F51C: .4byte gUnknown_84E5BC4 + thumb_func_end sub_0808F4D4 + + thumb_func_start sub_0808F520 +sub_0808F520: @ 0x0808F520 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #6 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0808F520 + + thumb_func_start sub_0808F550 +sub_0808F550: @ 0x0808F550 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F56E + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_0808F56E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F550 + + thumb_func_start sub_0808F578 +sub_0808F578: @ 0x0808F578 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808F594 + adds r0, r0, r2 + ldr r2, _0808F598 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808F594: .4byte gUnknown_2036FF0 +_0808F598: .4byte sub_0808F59C + thumb_func_end sub_0808F578 + + thumb_func_start sub_0808F59C +sub_0808F59C: @ 0x0808F59C + push {r4, lr} + ldr r3, _0808F5B8 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F59C + + thumb_func_start sub_0808F5B0 +sub_0808F5B0: @ 0x0808F5B0 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F5B8: .4byte gUnknown_84E5BC8 + thumb_func_end sub_0808F5B0 + + thumb_func_start sub_0808F5BC +sub_0808F5BC: @ 0x0808F5BC + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F5BC + + thumb_func_start sub_0808F5D0 +sub_0808F5D0: @ 0x0808F5D0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F5D0 + + thumb_func_start sub_0808F5FC +sub_0808F5FC: @ 0x0808F5FC + push {r4, r5, r6, lr} + adds r6, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F630 + ldr r5, _0808F62C + bl sub_0806F050 + movs r4, #3 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r5 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r6, #0 + bl sub_080972E8 + strh r4, [r6, #0x30] + movs r0, #1 + b _0808F632 + .align 2, 0 +_0808F62C: .4byte gUnknown_84E5B30 +_0808F630: + movs r0, #0 +_0808F632: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0808F5FC + + thumb_func_start sub_0808F638 +sub_0808F638: @ 0x0808F638 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F64C + movs r0, #0 + b _0808F652 +_0808F64C: + movs r0, #4 + strh r0, [r4, #0x30] + movs r0, #1 +_0808F652: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808F638 + + thumb_func_start sub_0808F658 +sub_0808F658: @ 0x0808F658 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _0808F6A0 + mov r0, sp + movs r2, #2 + bl memcpy + bl sub_0806F050 + movs r7, #1 + 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_0808E930 + movs r0, #5 + strh r0, [r6, #0x30] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F696 + strh r7, [r6, #0x30] +_0808F696: + movs r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808F6A0: .4byte gUnknown_84E5BE4 + thumb_func_end sub_0808F658 + + thumb_func_start sub_0808F6A4 +sub_0808F6A4: @ 0x0808F6A4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #6 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0808F6A4 + + thumb_func_start sub_0808F6D4 +sub_0808F6D4: @ 0x0808F6D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808F6F2 + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_0808F6F2: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F6D4 + + thumb_func_start sub_0808F6FC +sub_0808F6FC: @ 0x0808F6FC + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808F718 + adds r0, r0, r2 + ldr r2, _0808F71C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808F718: .4byte gUnknown_2036FF0 +_0808F71C: .4byte sub_0808F720 + thumb_func_end sub_0808F6FC + + thumb_func_start sub_0808F720 +sub_0808F720: @ 0x0808F720 + push {r4, lr} + ldr r3, _0808F73C + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F720 + + thumb_func_start sub_0808F734 +sub_0808F734: @ 0x0808F734 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F73C: .4byte gUnknown_84E5BE8 + thumb_func_end sub_0808F734 + + thumb_func_start sub_0808F740 +sub_0808F740: @ 0x0808F740 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0808F740 + + thumb_func_start sub_0808F76C +sub_0808F76C: @ 0x0808F76C + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F77E + movs r0, #0 + b _0808F784 +_0808F77E: + movs r0, #2 + strh r0, [r4, #0x30] + movs r0, #1 +_0808F784: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F76C + + thumb_func_start sub_0808F78C +sub_0808F78C: @ 0x0808F78C + ldrb r2, [r0] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0808F78C + + thumb_func_start sub_0808F79C +sub_0808F79C: @ 0x0808F79C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808F7D8 + adds r5, r0, r1 + ldrh r1, [r4, #0x3c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0808F7C8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0808DF64 + ldrh r1, [r4, #0x3c] + movs r0, #1 + orrs r0, r1 + strh r0, [r4, #0x3c] +_0808F7C8: + ldr r2, _0808F7DC + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08092C30 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0808F7D8: .4byte gUnknown_2036FF0 +_0808F7DC: .4byte sub_0808F7E0 + thumb_func_end sub_0808F79C + + thumb_func_start sub_0808F7E0 +sub_0808F7E0: @ 0x0808F7E0 + push {r4, lr} + ldr r3, _0808F7FC + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F7E0 + + thumb_func_start sub_0808F7F4 +sub_0808F7F4: @ 0x0808F7F4 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F7FC: .4byte gUnknown_84E5BF4 + thumb_func_end sub_0808F7F4 + + thumb_func_start sub_0808F800 +sub_0808F800: @ 0x0808F800 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + adds r6, r5, #0 + adds r6, #0x3e + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r4, #0x1d] + bl sub_080E0F14 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _0808F870 + ldrh r1, [r5, #0x3c] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0808F866 + subs r6, #0x14 + ldrb r0, [r6] + cmp r0, #4 + bne _0808F866 + ldr r1, _0808F86C + movs r2, #0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, #0x12 + ldrsh r0, [r4, r2] + str r0, [r1, #4] + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r1, #8] + ldrb r0, [r5, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r1, #0xc] + movs r0, #0x17 + bl sub_080B5270 + strb r7, [r6] +_0808F866: + movs r0, #0 + b _0808F8B2 + .align 2, 0 +_0808F86C: .4byte gUnknown_20388A8 +_0808F870: + ldrb r1, [r4, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + ldrb r1, [r6] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + subs r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r5, #0 + adds r0, #0x2a + ldrb r0, [r0] + cmp r0, r7 + bne _0808F8AC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808DF64 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x39 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + b _0808F8B2 +_0808F8AC: + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 +_0808F8B2: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0808F800 + + thumb_func_start sub_0808F8B8 +sub_0808F8B8: @ 0x0808F8B8 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F8CA + movs r0, #0 + b _0808F8D0 +_0808F8CA: + movs r0, #0 + strh r0, [r4, #0x30] + movs r0, #1 +_0808F8D0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F8B8 + + thumb_func_start sub_0808F8D8 +sub_0808F8D8: @ 0x0808F8D8 + push {r4, lr} + ldrb r2, [r0] + movs r3, #2 + orrs r2, r3 + strb r2, [r0] + movs r3, #0 + movs r2, #3 + strh r2, [r1, #0x30] + strh r3, [r1, #0x32] + ldrh r3, [r1, #0x3c] + movs r2, #2 + orrs r2, r3 + strh r2, [r1, #0x3c] + ldr r3, _0808F920 + movs r4, #0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r2, #0x12 + ldrsh r0, [r0, r2] + str r0, [r3, #4] + adds r0, r1, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r3, #8] + ldrb r0, [r1, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r3, #0xc] + movs r0, #0x17 + bl sub_080B5270 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808F920: .4byte gUnknown_20388A8 + thumb_func_end sub_0808F8D8 + + thumb_func_start sub_0808F924 +sub_0808F924: @ 0x0808F924 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldrh r1, [r4, #0x32] + adds r1, #1 + strh r1, [r4, #0x32] + movs r0, #2 + ands r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x11 + lsls r1, r1, #5 + ldrb r2, [r3, #1] + subs r0, #0x23 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bgt _0808F95C + movs r0, #0 + b _0808F96E +_0808F95C: + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0808DF64 + movs r0, #4 + strh r0, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + movs r0, #1 +_0808F96E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0808F924 + + thumb_func_start sub_0808F974 +sub_0808F974: @ 0x0808F974 + push {r4, lr} + adds r4, r1, #0 + ldrh r2, [r4, #0x32] + adds r2, #1 + strh r2, [r4, #0x32] + movs r1, #2 + ands r2, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x11 + lsls r2, r2, #5 + ldrb r3, [r0, #1] + subs r1, #0x23 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #1] + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bgt _0808F9AA + movs r0, #0 + b _0808F9B8 +_0808F9AA: + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x3c] + subs r0, #3 + ands r0, r1 + strh r0, [r4, #0x3c] + movs r0, #1 +_0808F9B8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808F974 + + thumb_func_start sub_0808F9C0 +sub_0808F9C0: @ 0x0808F9C0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808F9DC + adds r0, r0, r2 + ldr r2, _0808F9E0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808F9DC: .4byte gUnknown_2036FF0 +_0808F9E0: .4byte sub_0808F9E4 + thumb_func_end sub_0808F9C0 + + thumb_func_start sub_0808F9E4 +sub_0808F9E4: @ 0x0808F9E4 + push {r4, lr} + ldr r3, _0808FA00 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808F9E4 + + thumb_func_start sub_0808F9F8 +sub_0808F9F8: @ 0x0808F9F8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808FA00: .4byte gUnknown_84E5C08 + thumb_func_end sub_0808F9F8 + + thumb_func_start sub_0808FA04 +sub_0808FA04: @ 0x0808FA04 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FA04 + + thumb_func_start sub_0808FA18 +sub_0808FA18: @ 0x0808FA18 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FA18 + + thumb_func_start sub_0808FA44 +sub_0808FA44: @ 0x0808FA44 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FA7A + ldr r4, _0808FA84 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808FA7A: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808FA84: .4byte gUnknown_84E5B30 + thumb_func_end sub_0808FA44 + + thumb_func_start sub_0808FA88 +sub_0808FA88: @ 0x0808FA88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FAA6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FAAE +_0808FAA6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808FAB0 +_0808FAAE: + movs r0, #0 +_0808FAB0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FA88 + + thumb_func_start sub_0808FAB8 +sub_0808FAB8: @ 0x0808FAB8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808FAFC + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #1 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808FAE8 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FAE8: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808FAFC: .4byte gUnknown_84E5BC4 + thumb_func_end sub_0808FAB8 + + thumb_func_start sub_0808FB00 +sub_0808FB00: @ 0x0808FB00 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808FB1C + adds r0, r0, r2 + ldr r2, _0808FB20 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808FB1C: .4byte gUnknown_2036FF0 +_0808FB20: .4byte sub_0808FB24 + thumb_func_end sub_0808FB00 + + thumb_func_start sub_0808FB24 +sub_0808FB24: @ 0x0808FB24 + push {r4, lr} + ldr r3, _0808FB40 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808FB24 + + thumb_func_start sub_0808FB38 +sub_0808FB38: @ 0x0808FB38 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808FB40: .4byte gUnknown_84E5C1C + thumb_func_end sub_0808FB38 + + thumb_func_start sub_0808FB44 +sub_0808FB44: @ 0x0808FB44 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FB44 + + thumb_func_start sub_0808FB58 +sub_0808FB58: @ 0x0808FB58 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FB58 + + thumb_func_start sub_0808FB84 +sub_0808FB84: @ 0x0808FB84 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FBBA + ldr r4, _0808FBC4 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808FBBA: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808FBC4: .4byte gUnknown_84E5B30 + thumb_func_end sub_0808FB84 + + thumb_func_start sub_0808FBC8 +sub_0808FBC8: @ 0x0808FBC8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FBE6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FBEE +_0808FBE6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808FBF0 +_0808FBEE: + movs r0, #0 +_0808FBF0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FBC8 + + thumb_func_start sub_0808FBF8 +sub_0808FBF8: @ 0x0808FBF8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808FC3C + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #2 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808FC28 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FC28: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808FC3C: .4byte gUnknown_84E5BE4 + thumb_func_end sub_0808FBF8 + + thumb_func_start sub_0808FC40 +sub_0808FC40: @ 0x0808FC40 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808FC5C + adds r0, r0, r2 + ldr r2, _0808FC60 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808FC5C: .4byte gUnknown_2036FF0 +_0808FC60: .4byte sub_0808FC64 + thumb_func_end sub_0808FC40 + + thumb_func_start sub_0808FC64 +sub_0808FC64: @ 0x0808FC64 + push {r4, lr} + ldr r3, _0808FC80 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808FC64 + + thumb_func_start sub_0808FC78 +sub_0808FC78: @ 0x0808FC78 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808FC80: .4byte gUnknown_84E5C30 + thumb_func_end sub_0808FC78 + + thumb_func_start sub_0808FC84 +sub_0808FC84: @ 0x0808FC84 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FC84 + + thumb_func_start sub_0808FC98 +sub_0808FC98: @ 0x0808FC98 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FC98 + + thumb_func_start sub_0808FCC4 +sub_0808FCC4: @ 0x0808FCC4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FCFA + ldr r4, _0808FD04 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808FCFA: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808FD04: .4byte gUnknown_84E5B40 + thumb_func_end sub_0808FCC4 + + thumb_func_start sub_0808FD08 +sub_0808FD08: @ 0x0808FD08 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FD26 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FD2E +_0808FD26: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808FD30 +_0808FD2E: + movs r0, #0 +_0808FD30: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FD08 + + thumb_func_start sub_0808FD38 +sub_0808FD38: @ 0x0808FD38 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808FD7C + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #3 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808FD68 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FD68: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808FD7C: .4byte gUnknown_84E5C44 + thumb_func_end sub_0808FD38 + + thumb_func_start sub_0808FD80 +sub_0808FD80: @ 0x0808FD80 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808FD9C + adds r0, r0, r2 + ldr r2, _0808FDA0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808FD9C: .4byte gUnknown_2036FF0 +_0808FDA0: .4byte sub_0808FDA4 + thumb_func_end sub_0808FD80 + + thumb_func_start sub_0808FDA4 +sub_0808FDA4: @ 0x0808FDA4 + push {r4, lr} + ldr r3, _0808FDC0 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808FDA4 + + thumb_func_start sub_0808FDB8 +sub_0808FDB8: @ 0x0808FDB8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808FDC0: .4byte gUnknown_84E5C48 + thumb_func_end sub_0808FDB8 + + thumb_func_start sub_0808FDC4 +sub_0808FDC4: @ 0x0808FDC4 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FDC4 + + thumb_func_start sub_0808FDD8 +sub_0808FDD8: @ 0x0808FDD8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FDD8 + + thumb_func_start sub_0808FE04 +sub_0808FE04: @ 0x0808FE04 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FE3A + ldr r4, _0808FE44 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808FE3A: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808FE44: .4byte gUnknown_84E5B40 + thumb_func_end sub_0808FE04 + + thumb_func_start sub_0808FE48 +sub_0808FE48: @ 0x0808FE48 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FE66 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FE6E +_0808FE66: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808FE70 +_0808FE6E: + movs r0, #0 +_0808FE70: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FE48 + + thumb_func_start sub_0808FE78 +sub_0808FE78: @ 0x0808FE78 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808FEBC + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #4 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808FEA8 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FEA8: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808FEBC: .4byte gUnknown_84E5C5C + thumb_func_end sub_0808FE78 + + thumb_func_start sub_0808FEC0 +sub_0808FEC0: @ 0x0808FEC0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0808FEDC + adds r0, r0, r2 + ldr r2, _0808FEE0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0808FEDC: .4byte gUnknown_2036FF0 +_0808FEE0: .4byte sub_0808FEE4 + thumb_func_end sub_0808FEC0 + + thumb_func_start sub_0808FEE4 +sub_0808FEE4: @ 0x0808FEE4 + push {r4, lr} + ldr r3, _0808FF00 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0808FEE4 + + thumb_func_start sub_0808FEF8 +sub_0808FEF8: @ 0x0808FEF8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0808FF00: .4byte gUnknown_84E5C60 + thumb_func_end sub_0808FEF8 + + thumb_func_start sub_0808FF04 +sub_0808FF04: @ 0x0808FF04 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FF04 + + thumb_func_start sub_0808FF18 +sub_0808FF18: @ 0x0808FF18 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FF18 + + thumb_func_start sub_0808FF44 +sub_0808FF44: @ 0x0808FF44 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FF7A + ldr r4, _0808FF84 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0808FF7A: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0808FF84: .4byte gUnknown_84E5B40 + thumb_func_end sub_0808FF44 + + thumb_func_start sub_0808FF88 +sub_0808FF88: @ 0x0808FF88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FFA6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808FFAE +_0808FFA6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _0808FFB0 +_0808FFAE: + movs r0, #0 +_0808FFB0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0808FF88 + + thumb_func_start sub_0808FFB8 +sub_0808FFB8: @ 0x0808FFB8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0808FFFC + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #5 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808FFE8 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FFE8: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0808FFFC: .4byte gUnknown_84E5C74 + thumb_func_end sub_0808FFB8 + + thumb_func_start sub_08090000 +sub_08090000: @ 0x08090000 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809001C + adds r0, r0, r2 + ldr r2, _08090020 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809001C: .4byte gUnknown_2036FF0 +_08090020: .4byte sub_08090024 + thumb_func_end sub_08090000 + + thumb_func_start sub_08090024 +sub_08090024: @ 0x08090024 + push {r4, lr} + ldr r3, _08090040 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090024 + + thumb_func_start sub_08090038 +sub_08090038: @ 0x08090038 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090040: .4byte gUnknown_84E5C78 + thumb_func_end sub_08090038 + + thumb_func_start sub_08090044 +sub_08090044: @ 0x08090044 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090044 + + thumb_func_start sub_08090058 +sub_08090058: @ 0x08090058 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090058 + + thumb_func_start sub_08090084 +sub_08090084: @ 0x08090084 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080900BA + ldr r4, _080900C4 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_080900BA: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080900C4: .4byte gUnknown_84E5B40 + thumb_func_end sub_08090084 + + thumb_func_start sub_080900C8 +sub_080900C8: @ 0x080900C8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080900E6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080900EE +_080900E6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _080900F0 +_080900EE: + movs r0, #0 +_080900F0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080900C8 + + thumb_func_start sub_080900F8 +sub_080900F8: @ 0x080900F8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809013C + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r4, #0 + movs r1, #6 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08090128 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090128: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809013C: .4byte gUnknown_84E5C8C + thumb_func_end sub_080900F8 + + thumb_func_start sub_08090140 +sub_08090140: @ 0x08090140 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809015C + adds r0, r0, r2 + ldr r2, _08090160 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809015C: .4byte gUnknown_2036FF0 +_08090160: .4byte sub_08090164 + thumb_func_end sub_08090140 + + thumb_func_start sub_08090164 +sub_08090164: @ 0x08090164 + push {r4, lr} + ldr r3, _08090180 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090164 + + thumb_func_start sub_08090178 +sub_08090178: @ 0x08090178 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090180: .4byte gUnknown_84E5C90 + thumb_func_end sub_08090178 + + thumb_func_start sub_08090184 +sub_08090184: @ 0x08090184 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090184 + + thumb_func_start sub_08090198 +sub_08090198: @ 0x08090198 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090198 + + thumb_func_start sub_080901C4 +sub_080901C4: @ 0x080901C4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080901FA + ldr r4, _08090204 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_080901FA: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08090204: .4byte gUnknown_84E5B40 + thumb_func_end sub_080901C4 + + thumb_func_start sub_08090208 +sub_08090208: @ 0x08090208 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08090226 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809022E +_08090226: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _08090230 +_0809022E: + movs r0, #0 +_08090230: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090208 + + thumb_func_start sub_08090238 +sub_08090238: @ 0x08090238 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809027C + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + movs r1, #7 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08090268 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090268: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809027C: .4byte gUnknown_84E5CA4 + thumb_func_end sub_08090238 + + thumb_func_start sub_08090280 +sub_08090280: @ 0x08090280 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809029C + adds r0, r0, r2 + ldr r2, _080902A0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809029C: .4byte gUnknown_2036FF0 +_080902A0: .4byte sub_080902A4 + thumb_func_end sub_08090280 + + thumb_func_start sub_080902A4 +sub_080902A4: @ 0x080902A4 + push {r4, lr} + ldr r3, _080902C0 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080902A4 + + thumb_func_start sub_080902B8 +sub_080902B8: @ 0x080902B8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080902C0: .4byte gUnknown_84E5CA8 + thumb_func_end sub_080902B8 + + thumb_func_start sub_080902C4 +sub_080902C4: @ 0x080902C4 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080902C4 + + thumb_func_start sub_080902D8 +sub_080902D8: @ 0x080902D8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080902D8 + + thumb_func_start sub_08090304 +sub_08090304: @ 0x08090304 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809033A + ldr r4, _08090344 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0809033A: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08090344: .4byte gUnknown_84E5B40 + thumb_func_end sub_08090304 + + thumb_func_start sub_08090348 +sub_08090348: @ 0x08090348 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08090366 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809036E +_08090366: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _08090370 +_0809036E: + movs r0, #0 +_08090370: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090348 + + thumb_func_start sub_08090378 +sub_08090378: @ 0x08090378 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080903BC + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + movs r1, #8 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080903A8 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080903A8: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080903BC: .4byte gUnknown_84E5CBC + thumb_func_end sub_08090378 + + thumb_func_start sub_080903C0 +sub_080903C0: @ 0x080903C0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080903DC + adds r0, r0, r2 + ldr r2, _080903E0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080903DC: .4byte gUnknown_2036FF0 +_080903E0: .4byte sub_080903E4 + thumb_func_end sub_080903C0 + + thumb_func_start sub_080903E4 +sub_080903E4: @ 0x080903E4 + push {r4, lr} + ldr r3, _08090400 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080903E4 + + thumb_func_start sub_080903F8 +sub_080903F8: @ 0x080903F8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090400: .4byte gUnknown_84E5CC0 + thumb_func_end sub_080903F8 + + thumb_func_start sub_08090404 +sub_08090404: @ 0x08090404 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090404 + + thumb_func_start sub_08090418 +sub_08090418: @ 0x08090418 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090418 + + thumb_func_start sub_08090444 +sub_08090444: @ 0x08090444 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809047A + ldr r4, _08090484 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_0809047A: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08090484: .4byte gUnknown_84E5B40 + thumb_func_end sub_08090444 + + thumb_func_start sub_08090488 +sub_08090488: @ 0x08090488 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080904A6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080904AE +_080904A6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _080904B0 +_080904AE: + movs r0, #0 +_080904B0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090488 + + thumb_func_start sub_080904B8 +sub_080904B8: @ 0x080904B8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080904FC + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + movs r1, #9 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080904E8 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080904E8: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080904FC: .4byte gUnknown_84E5CD4 + thumb_func_end sub_080904B8 + + thumb_func_start sub_08090500 +sub_08090500: @ 0x08090500 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809051C + adds r0, r0, r2 + ldr r2, _08090520 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809051C: .4byte gUnknown_2036FF0 +_08090520: .4byte sub_08090524 + thumb_func_end sub_08090500 + + thumb_func_start sub_08090524 +sub_08090524: @ 0x08090524 + push {r4, lr} + ldr r3, _08090540 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090524 + + thumb_func_start sub_08090538 +sub_08090538: @ 0x08090538 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090540: .4byte gUnknown_84E5CD8 + thumb_func_end sub_08090538 + + thumb_func_start sub_08090544 +sub_08090544: @ 0x08090544 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090544 + + thumb_func_start sub_08090558 +sub_08090558: @ 0x08090558 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090558 + + thumb_func_start sub_08090584 +sub_08090584: @ 0x08090584 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080905BA + ldr r4, _080905C4 + bl sub_0806F050 + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r7, #0 + bl sub_080972E8 + ldrb r1, [r6] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, #0x30] +_080905BA: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080905C4: .4byte gUnknown_84E5B40 + thumb_func_end sub_08090584 + + thumb_func_start sub_080905C8 +sub_080905C8: @ 0x080905C8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080905E6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080905EE +_080905E6: + movs r0, #4 + strh r0, [r5, #0x30] + movs r0, #1 + b _080905F0 +_080905EE: + movs r0, #0 +_080905F0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080905C8 + + thumb_func_start sub_080905F8 +sub_080905F8: @ 0x080905F8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809063C + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + movs r1, #0xa + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08090628 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090628: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x30] + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809063C: .4byte gUnknown_84E5CEC + thumb_func_end sub_080905F8 + + thumb_func_start sub_08090640 +sub_08090640: @ 0x08090640 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809065C + adds r0, r0, r2 + ldr r2, _08090660 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809065C: .4byte gUnknown_2036FF0 +_08090660: .4byte sub_08090664 + thumb_func_end sub_08090640 + + thumb_func_start sub_08090664 +sub_08090664: @ 0x08090664 + push {r4, lr} + ldr r3, _08090680 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090664 + + thumb_func_start sub_08090678 +sub_08090678: @ 0x08090678 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090680: .4byte gUnknown_84E5CF0 + thumb_func_end sub_08090678 + + thumb_func_start sub_08090684 +sub_08090684: @ 0x08090684 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08090684 + + thumb_func_start sub_080906B0 +sub_080906B0: @ 0x080906B0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080906CA + adds r0, r4, #0 + movs r1, #0x30 + bl sub_080972E8 + movs r0, #2 + strh r0, [r4, #0x30] +_080906CA: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080906B0 + + thumb_func_start sub_080906D4 +sub_080906D4: @ 0x080906D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080906F2 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080906F6 +_080906F2: + movs r0, #3 + strh r0, [r5, #0x30] +_080906F6: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080906D4 + + thumb_func_start sub_08090700 +sub_08090700: @ 0x08090700 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090740 + mov r0, sp + movs r2, #5 + bl memcpy + adds r0, r4, #0 + movs r1, #0 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0809072C + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] +_0809072C: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #0 + strh r0, [r5, #0x30] + movs r0, #1 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090740: .4byte gUnknown_84E5D00 + thumb_func_end sub_08090700 + + thumb_func_start sub_08090744 +sub_08090744: @ 0x08090744 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090760 + adds r0, r0, r2 + ldr r2, _08090764 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090760: .4byte gUnknown_2036FF0 +_08090764: .4byte sub_08090768 + thumb_func_end sub_08090744 + + thumb_func_start sub_08090768 +sub_08090768: @ 0x08090768 + push {r4, lr} + ldr r3, _08090784 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090768 + + thumb_func_start sub_0809077C +sub_0809077C: @ 0x0809077C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090784: .4byte gUnknown_84E5D08 + thumb_func_end sub_0809077C + + thumb_func_start sub_08090788 +sub_08090788: @ 0x08090788 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08090788 + + thumb_func_start sub_080907B4 +sub_080907B4: @ 0x080907B4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080907CE + adds r0, r4, #0 + movs r1, #0x30 + bl sub_080972E8 + movs r0, #2 + strh r0, [r4, #0x30] +_080907CE: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080907B4 + + thumb_func_start sub_080907D8 +sub_080907D8: @ 0x080907D8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080907F6 + adds r0, r4, #0 + bl sub_0808EEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080907FA +_080907F6: + movs r0, #3 + strh r0, [r5, #0x30] +_080907FA: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080907D8 + + thumb_func_start sub_08090804 +sub_08090804: @ 0x08090804 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090844 + mov r0, sp + movs r2, #5 + bl memcpy + adds r0, r4, #0 + movs r1, #0 + bl sub_0808F22C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08090830 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] +_08090830: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #0 + strh r0, [r5, #0x30] + movs r0, #1 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090844: .4byte gUnknown_84E5D18 + thumb_func_end sub_08090804 + + thumb_func_start sub_08090848 +sub_08090848: @ 0x08090848 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090864 + adds r0, r0, r2 + ldr r2, _08090868 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090864: .4byte gUnknown_2036FF0 +_08090868: .4byte sub_0809086C + thumb_func_end sub_08090848 + + thumb_func_start sub_0809086C +sub_0809086C: @ 0x0809086C + push {r4, lr} + ldr r3, _08090888 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0809086C + + thumb_func_start sub_08090880 +sub_08090880: @ 0x08090880 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090888: .4byte gUnknown_84E5D20 + thumb_func_end sub_08090880 + + thumb_func_start sub_0809088C +sub_0809088C: @ 0x0809088C + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809088C + + thumb_func_start sub_080908A0 +sub_080908A0: @ 0x080908A0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _080908D4 + ldrb r1, [r4, #6] + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _080908C2 + adds r0, r1, #0 + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_080908C2: + adds r0, r4, #0 + bl sub_0808E930 + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080908D4: .4byte gUnknown_84DDA21 + thumb_func_end sub_080908A0 + + thumb_func_start sub_080908D8 +sub_080908D8: @ 0x080908D8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r1, #0 + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0 + beq _08090908 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + cmp r1, r0 + bne _08090908 + movs r0, #0 + strb r0, [r2] + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08093170 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808E930 +_08090908: + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r5, #1 + bne _0809095E + adds r1, r4, #0 + adds r1, #0x21 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08093170 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808E930 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0809095E: + cmp r5, #0 + beq _08090970 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F08 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08090970: + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #3 + strh r0, [r7, #0x30] + movs r0, #1 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080908D8 + + thumb_func_start sub_08090990 +sub_08090990: @ 0x08090990 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080909AE + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_080909AE: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090990 + + thumb_func_start sub_080909B8 +sub_080909B8: @ 0x080909B8 + push {r4, lr} + adds r4, r1, #0 + bl sub_080922AC + movs r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080909B8 + + thumb_func_start sub_080909CC +sub_080909CC: @ 0x080909CC + push {r4, r5, r6, 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, #3 + bne _080909EE + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x10] + cmp r1, r0 + bne _080909EE + movs r0, #0 + strb r0, [r2] +_080909EE: + adds r5, r4, #0 + adds r5, #0x21 + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0808E930 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08090A48 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0808E930 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r1, [r4, #0x18] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_080924F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08090A48: + cmp r0, #0 + beq _08090A5A + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F08 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08090A5A: + adds r0, r4, #0 + mov r1, r8 + adds r2, r6, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + mov r1, r8 + strh r0, [r1, #0x30] + movs r0, #1 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080909CC + + thumb_func_start sub_08090A80 +sub_08090A80: @ 0x08090A80 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08090A9E + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_08090A9E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08090A80 + + thumb_func_start sub_08090AA8 +sub_08090AA8: @ 0x08090AA8 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090AC4 + adds r0, r0, r2 + ldr r2, _08090AC8 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090AC4: .4byte gUnknown_2036FF0 +_08090AC8: .4byte sub_08090ACC + thumb_func_end sub_08090AA8 + + thumb_func_start sub_08090ACC +sub_08090ACC: @ 0x08090ACC + push {r4, lr} + ldr r3, _08090AE8 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090ACC + + thumb_func_start sub_08090AE0 +sub_08090AE0: @ 0x08090AE0 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090AE8: .4byte gUnknown_84E5D30 + thumb_func_end sub_08090AE0 + + thumb_func_start sub_08090AEC +sub_08090AEC: @ 0x08090AEC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090B30 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08090B18 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090B18 + movs r0, #3 + strb r0, [r2] +_08090B18: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090B30: .4byte gUnknown_84E5D3C + thumb_func_end sub_08090AEC + + thumb_func_start sub_08090B34 +sub_08090B34: @ 0x08090B34 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090B50 + adds r0, r0, r2 + ldr r2, _08090B54 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090B50: .4byte gUnknown_2036FF0 +_08090B54: .4byte sub_08090B58 + thumb_func_end sub_08090B34 + + thumb_func_start sub_08090B58 +sub_08090B58: @ 0x08090B58 + push {r4, lr} + ldr r3, _08090B74 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090B58 + + thumb_func_start sub_08090B6C +sub_08090B6C: @ 0x08090B6C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090B74: .4byte gUnknown_84E5D40 + thumb_func_end sub_08090B6C + + thumb_func_start sub_08090B78 +sub_08090B78: @ 0x08090B78 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090BBC + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08090BA4 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090BA4 + movs r0, #2 + strb r0, [r2] +_08090BA4: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090BBC: .4byte gUnknown_84E5D4C + thumb_func_end sub_08090B78 + + thumb_func_start sub_08090BC0 +sub_08090BC0: @ 0x08090BC0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090BDC + adds r0, r0, r2 + ldr r2, _08090BE0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090BDC: .4byte gUnknown_2036FF0 +_08090BE0: .4byte sub_08090BE4 + thumb_func_end sub_08090BC0 + + thumb_func_start sub_08090BE4 +sub_08090BE4: @ 0x08090BE4 + push {r4, lr} + ldr r3, _08090C00 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090BE4 + + thumb_func_start sub_08090BF8 +sub_08090BF8: @ 0x08090BF8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090C00: .4byte gUnknown_84E5D50 + thumb_func_end sub_08090BF8 + + thumb_func_start sub_08090C04 +sub_08090C04: @ 0x08090C04 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090C48 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08090C30 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090C30 + movs r0, #2 + strb r0, [r2] +_08090C30: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090C48: .4byte gUnknown_84E5D5C + thumb_func_end sub_08090C04 + + thumb_func_start sub_08090C4C +sub_08090C4C: @ 0x08090C4C + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090C68 + adds r0, r0, r2 + ldr r2, _08090C6C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090C68: .4byte gUnknown_2036FF0 +_08090C6C: .4byte sub_08090C70 + thumb_func_end sub_08090C4C + + thumb_func_start sub_08090C70 +sub_08090C70: @ 0x08090C70 + push {r4, lr} + ldr r3, _08090C8C + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090C70 + + thumb_func_start sub_08090C84 +sub_08090C84: @ 0x08090C84 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090C8C: .4byte gUnknown_84E5D60 + thumb_func_end sub_08090C84 + + thumb_func_start sub_08090C90 +sub_08090C90: @ 0x08090C90 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090CD4 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08090CBC + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090CBC + movs r0, #3 + strb r0, [r2] +_08090CBC: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090CD4: .4byte gUnknown_84E5D6C + thumb_func_end sub_08090C90 + + thumb_func_start sub_08090CD8 +sub_08090CD8: @ 0x08090CD8 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090CF4 + adds r0, r0, r2 + ldr r2, _08090CF8 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090CF4: .4byte gUnknown_2036FF0 +_08090CF8: .4byte sub_08090CFC + thumb_func_end sub_08090CD8 + + thumb_func_start sub_08090CFC +sub_08090CFC: @ 0x08090CFC + push {r4, lr} + ldr r3, _08090D18 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090CFC + + thumb_func_start sub_08090D10 +sub_08090D10: @ 0x08090D10 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090D18: .4byte gUnknown_84E5D70 + thumb_func_end sub_08090D10 + + thumb_func_start sub_08090D1C +sub_08090D1C: @ 0x08090D1C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090D60 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08090D48 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090D48 + movs r0, #3 + strb r0, [r2] +_08090D48: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090D60: .4byte gUnknown_84E5D7C + thumb_func_end sub_08090D1C + + thumb_func_start sub_08090D64 +sub_08090D64: @ 0x08090D64 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090D80 + adds r0, r0, r2 + ldr r2, _08090D84 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090D80: .4byte gUnknown_2036FF0 +_08090D84: .4byte sub_08090D88 + thumb_func_end sub_08090D64 + + thumb_func_start sub_08090D88 +sub_08090D88: @ 0x08090D88 + push {r4, lr} + ldr r3, _08090DA4 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090D88 + + thumb_func_start sub_08090D9C +sub_08090D9C: @ 0x08090D9C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090DA4: .4byte gUnknown_84E5D80 + thumb_func_end sub_08090D9C + + thumb_func_start sub_08090DA8 +sub_08090DA8: @ 0x08090DA8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090DEC + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08090DD4 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090DD4 + movs r0, #2 + strb r0, [r2] +_08090DD4: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090DEC: .4byte gUnknown_84E5D8C + thumb_func_end sub_08090DA8 + + thumb_func_start sub_08090DF0 +sub_08090DF0: @ 0x08090DF0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090E0C + adds r0, r0, r2 + ldr r2, _08090E10 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090E0C: .4byte gUnknown_2036FF0 +_08090E10: .4byte sub_08090E14 + thumb_func_end sub_08090DF0 + + thumb_func_start sub_08090E14 +sub_08090E14: @ 0x08090E14 + push {r4, lr} + ldr r3, _08090E30 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090E14 + + thumb_func_start sub_08090E28 +sub_08090E28: @ 0x08090E28 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090E30: .4byte gUnknown_84E5D90 + thumb_func_end sub_08090E28 + + thumb_func_start sub_08090E34 +sub_08090E34: @ 0x08090E34 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090E78 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08090E60 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090E60 + movs r0, #2 + strb r0, [r2] +_08090E60: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090E78: .4byte gUnknown_84E5B64 + thumb_func_end sub_08090E34 + + thumb_func_start sub_08090E7C +sub_08090E7C: @ 0x08090E7C + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090E98 + adds r0, r0, r2 + ldr r2, _08090E9C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090E98: .4byte gUnknown_2036FF0 +_08090E9C: .4byte sub_08090EA0 + thumb_func_end sub_08090E7C + + thumb_func_start sub_08090EA0 +sub_08090EA0: @ 0x08090EA0 + push {r4, lr} + ldr r3, _08090EBC + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090EA0 + + thumb_func_start sub_08090EB4 +sub_08090EB4: @ 0x08090EB4 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090EBC: .4byte gUnknown_84E5D9C + thumb_func_end sub_08090EB4 + + thumb_func_start sub_08090EC0 +sub_08090EC0: @ 0x08090EC0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090F04 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08090EEC + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090EEC + movs r0, #3 + strb r0, [r2] +_08090EEC: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090F04: .4byte gUnknown_84E5DA8 + thumb_func_end sub_08090EC0 + + thumb_func_start sub_08090F08 +sub_08090F08: @ 0x08090F08 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090F24 + adds r0, r0, r2 + ldr r2, _08090F28 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090F24: .4byte gUnknown_2036FF0 +_08090F28: .4byte sub_08090F2C + thumb_func_end sub_08090F08 + + thumb_func_start sub_08090F2C +sub_08090F2C: @ 0x08090F2C + push {r4, lr} + ldr r3, _08090F48 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090F2C + + thumb_func_start sub_08090F40 +sub_08090F40: @ 0x08090F40 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090F48: .4byte gUnknown_84E5DAC + thumb_func_end sub_08090F40 + + thumb_func_start sub_08090F4C +sub_08090F4C: @ 0x08090F4C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08090F90 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08090F78 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08090F78 + movs r0, #3 + strb r0, [r2] +_08090F78: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08090F90: .4byte gUnknown_84E5DB8 + thumb_func_end sub_08090F4C + + thumb_func_start sub_08090F94 +sub_08090F94: @ 0x08090F94 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08090FB0 + adds r0, r0, r2 + ldr r2, _08090FB4 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08090FB0: .4byte gUnknown_2036FF0 +_08090FB4: .4byte sub_08090FB8 + thumb_func_end sub_08090F94 + + thumb_func_start sub_08090FB8 +sub_08090FB8: @ 0x08090FB8 + push {r4, lr} + ldr r3, _08090FD4 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08090FB8 + + thumb_func_start sub_08090FCC +sub_08090FCC: @ 0x08090FCC + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08090FD4: .4byte gUnknown_84E5DBC + thumb_func_end sub_08090FCC + + thumb_func_start sub_08090FD8 +sub_08090FD8: @ 0x08090FD8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809101C + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08091004 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091004 + movs r0, #2 + strb r0, [r2] +_08091004: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809101C: .4byte gUnknown_84E5DC8 + thumb_func_end sub_08090FD8 + + thumb_func_start sub_08091020 +sub_08091020: @ 0x08091020 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809103C + adds r0, r0, r2 + ldr r2, _08091040 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809103C: .4byte gUnknown_2036FF0 +_08091040: .4byte sub_08091044 + thumb_func_end sub_08091020 + + thumb_func_start sub_08091044 +sub_08091044: @ 0x08091044 + push {r4, lr} + ldr r3, _08091060 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091044 + + thumb_func_start sub_08091058 +sub_08091058: @ 0x08091058 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091060: .4byte gUnknown_84E5DCC + thumb_func_end sub_08091058 + + thumb_func_start sub_08091064 +sub_08091064: @ 0x08091064 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080910A8 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08091090 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091090 + movs r0, #2 + strb r0, [r2] +_08091090: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080910A8: .4byte gUnknown_84E5DD8 + thumb_func_end sub_08091064 + + thumb_func_start sub_080910AC +sub_080910AC: @ 0x080910AC + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080910C8 + adds r0, r0, r2 + ldr r2, _080910CC + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080910C8: .4byte gUnknown_2036FF0 +_080910CC: .4byte sub_080910D0 + thumb_func_end sub_080910AC + + thumb_func_start sub_080910D0 +sub_080910D0: @ 0x080910D0 + push {r4, lr} + ldr r3, _080910EC + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080910D0 + + thumb_func_start sub_080910E4 +sub_080910E4: @ 0x080910E4 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080910EC: .4byte gUnknown_84E5DDC + thumb_func_end sub_080910E4 + + thumb_func_start sub_080910F0 +sub_080910F0: @ 0x080910F0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091134 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _0809111C + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0809111C + movs r0, #3 + strb r0, [r2] +_0809111C: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091134: .4byte gUnknown_84E5DE8 + thumb_func_end sub_080910F0 + + thumb_func_start sub_08091138 +sub_08091138: @ 0x08091138 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091154 + adds r0, r0, r2 + ldr r2, _08091158 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091154: .4byte gUnknown_2036FF0 +_08091158: .4byte sub_0809115C + thumb_func_end sub_08091138 + + thumb_func_start sub_0809115C +sub_0809115C: @ 0x0809115C + push {r4, lr} + ldr r3, _08091178 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0809115C + + thumb_func_start sub_08091170 +sub_08091170: @ 0x08091170 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091178: .4byte gUnknown_84E5DEC + thumb_func_end sub_08091170 + + thumb_func_start sub_0809117C +sub_0809117C: @ 0x0809117C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080911C0 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _080911A8 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080911A8 + movs r0, #3 + strb r0, [r2] +_080911A8: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080911C0: .4byte gUnknown_84E5DF8 + thumb_func_end sub_0809117C + + thumb_func_start sub_080911C4 +sub_080911C4: @ 0x080911C4 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080911E0 + adds r0, r0, r2 + ldr r2, _080911E4 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080911E0: .4byte gUnknown_2036FF0 +_080911E4: .4byte sub_080911E8 + thumb_func_end sub_080911C4 + + thumb_func_start sub_080911E8 +sub_080911E8: @ 0x080911E8 + push {r4, lr} + ldr r3, _08091204 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080911E8 + + thumb_func_start sub_080911FC +sub_080911FC: @ 0x080911FC + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091204: .4byte gUnknown_84E5DFC + thumb_func_end sub_080911FC + + thumb_func_start sub_08091208 +sub_08091208: @ 0x08091208 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809124C + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _08091234 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091234 + movs r0, #2 + strb r0, [r2] +_08091234: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809124C: .4byte gUnknown_84E5E08 + thumb_func_end sub_08091208 + + thumb_func_start sub_08091250 +sub_08091250: @ 0x08091250 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809126C + adds r0, r0, r2 + ldr r2, _08091270 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809126C: .4byte gUnknown_2036FF0 +_08091270: .4byte sub_08091274 + thumb_func_end sub_08091250 + + thumb_func_start sub_08091274 +sub_08091274: @ 0x08091274 + push {r4, lr} + ldr r3, _08091290 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091274 + + thumb_func_start sub_08091288 +sub_08091288: @ 0x08091288 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091290: .4byte gUnknown_84E5E0C + thumb_func_end sub_08091288 + + thumb_func_start sub_08091294 +sub_08091294: @ 0x08091294 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080912D8 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #1 + bne _080912C0 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080912C0 + movs r0, #2 + strb r0, [r2] +_080912C0: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080912D8: .4byte gUnknown_84E5E18 + thumb_func_end sub_08091294 + + thumb_func_start sub_080912DC +sub_080912DC: @ 0x080912DC + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080912F8 + adds r0, r0, r2 + ldr r2, _080912FC + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080912F8: .4byte gUnknown_2036FF0 +_080912FC: .4byte sub_08091300 + thumb_func_end sub_080912DC + + thumb_func_start sub_08091300 +sub_08091300: @ 0x08091300 + push {r4, lr} + ldr r3, _0809131C + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091300 + + thumb_func_start sub_08091314 +sub_08091314: @ 0x08091314 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809131C: .4byte gUnknown_84E5E1C + thumb_func_end sub_08091314 + + thumb_func_start sub_08091320 +sub_08091320: @ 0x08091320 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091364 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _0809134C + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0809134C + movs r0, #3 + strb r0, [r2] +_0809134C: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091364: .4byte gUnknown_84E5E28 + thumb_func_end sub_08091320 + + thumb_func_start sub_08091368 +sub_08091368: @ 0x08091368 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091384 + adds r0, r0, r2 + ldr r2, _08091388 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091384: .4byte gUnknown_2036FF0 +_08091388: .4byte sub_0809138C + thumb_func_end sub_08091368 + + thumb_func_start sub_0809138C +sub_0809138C: @ 0x0809138C + push {r4, lr} + ldr r3, _080913A8 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_0809138C + + thumb_func_start sub_080913A0 +sub_080913A0: @ 0x080913A0 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080913A8: .4byte gUnknown_84E5E2C + thumb_func_end sub_080913A0 + + thumb_func_start sub_080913AC +sub_080913AC: @ 0x080913AC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080913F0 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _080913D8 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080913D8 + movs r0, #3 + strb r0, [r2] +_080913D8: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080913F0: .4byte gUnknown_84E5E38 + thumb_func_end sub_080913AC + + thumb_func_start sub_080913F4 +sub_080913F4: @ 0x080913F4 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091410 + adds r0, r0, r2 + ldr r2, _08091414 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091410: .4byte gUnknown_2036FF0 +_08091414: .4byte sub_08091418 + thumb_func_end sub_080913F4 + + thumb_func_start sub_08091418 +sub_08091418: @ 0x08091418 + push {r4, lr} + ldr r3, _08091434 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091418 + + thumb_func_start sub_0809142C +sub_0809142C: @ 0x0809142C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091434: .4byte gUnknown_84E5E3C + thumb_func_end sub_0809142C + + thumb_func_start sub_08091438 +sub_08091438: @ 0x08091438 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0809147C + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08091464 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091464 + movs r0, #3 + strb r0, [r2] +_08091464: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809147C: .4byte gUnknown_84E5E48 + thumb_func_end sub_08091438 + + thumb_func_start sub_08091480 +sub_08091480: @ 0x08091480 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _0809149C + adds r0, r0, r2 + ldr r2, _080914A0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_0809149C: .4byte gUnknown_2036FF0 +_080914A0: .4byte sub_080914A4 + thumb_func_end sub_08091480 + + thumb_func_start sub_080914A4 +sub_080914A4: @ 0x080914A4 + push {r4, lr} + ldr r3, _080914C0 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080914A4 + + thumb_func_start sub_080914B8 +sub_080914B8: @ 0x080914B8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080914C0: .4byte gUnknown_84E5E4C + thumb_func_end sub_080914B8 + + thumb_func_start sub_080914C4 +sub_080914C4: @ 0x080914C4 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091508 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _080914F0 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080914F0 + movs r0, #3 + strb r0, [r2] +_080914F0: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091508: .4byte gUnknown_84E5E58 + thumb_func_end sub_080914C4 + + thumb_func_start sub_0809150C +sub_0809150C: @ 0x0809150C + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091528 + adds r0, r0, r2 + ldr r2, _0809152C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091528: .4byte gUnknown_2036FF0 +_0809152C: .4byte sub_08091530 + thumb_func_end sub_0809150C + + thumb_func_start sub_08091530 +sub_08091530: @ 0x08091530 + push {r4, lr} + ldr r3, _0809154C + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091530 + + thumb_func_start sub_08091544 +sub_08091544: @ 0x08091544 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809154C: .4byte gUnknown_84E5E5C + thumb_func_end sub_08091544 + + thumb_func_start sub_08091550 +sub_08091550: @ 0x08091550 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091594 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _0809157C + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0809157C + movs r0, #3 + strb r0, [r2] +_0809157C: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091594: .4byte gUnknown_84E5E68 + thumb_func_end sub_08091550 + + thumb_func_start sub_08091598 +sub_08091598: @ 0x08091598 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080915B4 + adds r0, r0, r2 + ldr r2, _080915B8 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080915B4: .4byte gUnknown_2036FF0 +_080915B8: .4byte sub_080915BC + thumb_func_end sub_08091598 + + thumb_func_start sub_080915BC +sub_080915BC: @ 0x080915BC + push {r4, lr} + ldr r3, _080915D8 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080915BC + + thumb_func_start sub_080915D0 +sub_080915D0: @ 0x080915D0 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080915D8: .4byte gUnknown_84E5E6C + thumb_func_end sub_080915D0 + + thumb_func_start sub_080915DC +sub_080915DC: @ 0x080915DC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091620 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08091608 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091608 + movs r0, #3 + strb r0, [r2] +_08091608: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091620: .4byte gUnknown_84E5E78 + thumb_func_end sub_080915DC + + thumb_func_start sub_08091624 +sub_08091624: @ 0x08091624 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091640 + adds r0, r0, r2 + ldr r2, _08091644 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091640: .4byte gUnknown_2036FF0 +_08091644: .4byte sub_08091648 + thumb_func_end sub_08091624 + + thumb_func_start sub_08091648 +sub_08091648: @ 0x08091648 + push {r4, lr} + ldr r3, _08091664 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091648 + + thumb_func_start sub_0809165C +sub_0809165C: @ 0x0809165C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091664: .4byte gUnknown_84E5E7C + thumb_func_end sub_0809165C + + thumb_func_start sub_08091668 +sub_08091668: @ 0x08091668 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080916AC + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08091694 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091694 + movs r0, #3 + strb r0, [r2] +_08091694: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080916AC: .4byte gUnknown_84E5E88 + thumb_func_end sub_08091668 + + thumb_func_start sub_080916B0 +sub_080916B0: @ 0x080916B0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080916CC + adds r0, r0, r2 + ldr r2, _080916D0 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080916CC: .4byte gUnknown_2036FF0 +_080916D0: .4byte sub_080916D4 + thumb_func_end sub_080916B0 + + thumb_func_start sub_080916D4 +sub_080916D4: @ 0x080916D4 + push {r4, lr} + ldr r3, _080916F0 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080916D4 + + thumb_func_start sub_080916E8 +sub_080916E8: @ 0x080916E8 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080916F0: .4byte gUnknown_84E5E8C + thumb_func_end sub_080916E8 + + thumb_func_start sub_080916F4 +sub_080916F4: @ 0x080916F4 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08091738 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _08091720 + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091720 + movs r0, #3 + strb r0, [r2] +_08091720: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091738: .4byte gUnknown_84E5E98 + thumb_func_end sub_080916F4 + + thumb_func_start sub_0809173C +sub_0809173C: @ 0x0809173C + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091758 + adds r0, r0, r2 + ldr r2, _0809175C + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091758: .4byte gUnknown_2036FF0 +_0809175C: .4byte sub_08091760 + thumb_func_end sub_0809173C + + thumb_func_start sub_08091760 +sub_08091760: @ 0x08091760 + push {r4, lr} + ldr r3, _0809177C + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091760 + + thumb_func_start sub_08091774 +sub_08091774: @ 0x08091774 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809177C: .4byte gUnknown_84E5E9C + thumb_func_end sub_08091774 + + thumb_func_start sub_08091780 +sub_08091780: @ 0x08091780 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080917C4 + mov r0, sp + movs r2, #4 + bl memcpy + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #2 + bne _080917AC + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080917AC + movs r0, #3 + strb r0, [r2] +_080917AC: + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080909CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080917C4: .4byte gUnknown_84E5EA8 + thumb_func_end sub_08091780 + + thumb_func_start sub_080917C8 +sub_080917C8: @ 0x080917C8 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080917E4 + adds r0, r0, r2 + ldr r2, _080917E8 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080917E4: .4byte gUnknown_2036FF0 +_080917E8: .4byte sub_080917EC + thumb_func_end sub_080917C8 + + thumb_func_start sub_080917EC +sub_080917EC: @ 0x080917EC + push {r4, lr} + ldr r3, _08091808 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080917EC + + thumb_func_start sub_08091800 +sub_08091800: @ 0x08091800 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091808: .4byte gUnknown_84E5EAC + thumb_func_end sub_08091800 + + thumb_func_start sub_0809180C +sub_0809180C: @ 0x0809180C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + adds r4, #0x21 + ldrb r0, [r4] + cmp r0, #0 + bne _08091824 + bl sub_0808B59C + strb r0, [r4] +_08091824: + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809180C + + thumb_func_start sub_08091830 +sub_08091830: @ 0x08091830 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + ldr r2, _08091854 + ldr r3, _08091858 + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0xff + beq _08091850 + ldrb r0, [r3, #3] + cmp r0, #2 + bne _0809185C +_08091850: + movs r0, #0 + b _08091884 + .align 2, 0 +_08091854: .4byte gUnknown_2036FF0 +_08091858: .4byte gUnknown_2037230 +_0809185C: + ldr r5, _0809188C + bl sub_0808B004 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x16 + adds r4, r4, r5 + bl sub_0808B5BC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, [r4] + adds r0, r6, #0 + adds r1, r7, #0 + movs r3, #0 + bl _call_via_r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08091884: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0809188C: .4byte gUnknown_84E5EB8 + thumb_func_end sub_08091830 + + thumb_func_start sub_08091890 +sub_08091890: @ 0x08091890 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080918AE + ldrb r0, [r4] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + movs r0, #1 + strh r0, [r5, #0x30] +_080918AE: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08091890 + + thumb_func_start sub_080918B8 +sub_080918B8: @ 0x080918B8 + movs r0, #0 + bx lr + thumb_func_end sub_080918B8 + + thumb_func_start sub_080918BC +sub_080918BC: @ 0x080918BC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _08091900 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + bl sub_080931BC + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091900: .4byte gUnknown_84DDA21 + thumb_func_end sub_080918BC + + thumb_func_start sub_08091904 +sub_08091904: @ 0x08091904 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r6, r5, #0 + bl sub_081D4068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809196C + bl sub_081D38FC + adds r5, r0, #0 + cmp r5, #0 + bne _08091982 + adds r5, r6, #0 + ldr r1, _08091968 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r5, #0 + bl sub_080931BC + adds r5, r0, #0 + mov r3, sp + adds r3, #2 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_08092ADC + adds r0, r5, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + b _080919F4 + .align 2, 0 +_08091968: .4byte gUnknown_84DDA21 +_0809196C: + ldr r1, _08091A10 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r5, #0 + bl sub_080931BC + adds r5, r0, #0 +_08091982: + mov r6, sp + adds r6, #2 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + adds r3, r6, #0 + bl sub_08092ADC + adds r0, r5, #0 + bl sub_08092CF8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + mov r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r6, r0] + adds r0, r4, #0 + adds r3, r5, #0 + bl sub_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080919E0 + mov r1, r8 + cmp r1, #0 + beq _080919F4 + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080919F4 +_080919E0: + adds r0, r5, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_080919F4: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091A10: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091904 + + thumb_func_start sub_08091A14 +sub_08091A14: @ 0x08091A14 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r1, _08091AC8 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r6, #0 + bl sub_080931BC + adds r6, r0, #0 + mov r5, sp + adds r5, #2 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_08092ADC + adds r0, r6, #0 + bl sub_08092D24 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + 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_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091A9A + mov r1, r8 + cmp r1, #0 + beq _08091AAE + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091AAE +_08091A9A: + adds r0, r6, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_08091AAE: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091AC8: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091A14 + + thumb_func_start sub_08091ACC +sub_08091ACC: @ 0x08091ACC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r1, _08091B80 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r6, #0 + bl sub_080931BC + adds r6, r0, #0 + mov r5, sp + adds r5, #2 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_08092ADC + adds r0, r6, #0 + bl sub_08092D7C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + 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_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091B52 + mov r1, r8 + cmp r1, #0 + beq _08091B66 + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091B66 +_08091B52: + adds r0, r6, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_08091B66: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091B80: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091ACC + + thumb_func_start sub_08091B84 +sub_08091B84: @ 0x08091B84 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r1, _08091C38 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r6, #0 + bl sub_080931BC + adds r6, r0, #0 + mov r5, sp + adds r5, #2 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_08092ADC + adds r0, r6, #0 + bl sub_08092DA8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + 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_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091C0A + mov r1, r8 + cmp r1, #0 + beq _08091C1E + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091C1E +_08091C0A: + adds r0, r6, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_08091C1E: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091C38: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091B84 + + thumb_func_start sub_08091C3C +sub_08091C3C: @ 0x08091C3C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _08091C80 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + bl sub_080931BC + bl sub_08092E2C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r5, #0x30] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08091C80: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091C3C + + thumb_func_start sub_08091C84 +sub_08091C84: @ 0x08091C84 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r1, _08091D38 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r6, #0 + bl sub_080931BC + adds r6, r0, #0 + mov r5, sp + adds r5, #2 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_08092ADC + adds r0, r6, #0 + bl sub_08092E84 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + 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_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091D0A + mov r1, r8 + cmp r1, #0 + beq _08091D1E + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091D1E +_08091D0A: + adds r0, r6, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_08091D1E: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091D38: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091C84 + + thumb_func_start sub_08091D3C +sub_08091D3C: @ 0x08091D3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r4, r0, #0 + adds r7, r1, #0 + mov r8, r3 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r1, _08091E00 + ldrb r0, [r4, #6] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r2, r6, #0 + bl sub_080931BC + adds r6, r0, #0 + ldrh r1, [r4, #0x10] + add r0, sp, #4 + strh r1, [r0] + ldrh r0, [r4, #0x12] + mov r5, sp + adds r5, #6 + strh r0, [r5] + movs r0, #2 + str r0, [sp] + adds r0, r6, #0 + add r1, sp, #4 + adds r2, r5, #0 + movs r3, #2 + bl sub_080928F8 + adds r0, r6, #0 + bl sub_08092E00 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 + add r0, sp, #4 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + adds r3, r6, #0 + bl sub_08092538 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091DD0 + mov r1, r8 + cmp r1, #0 + beq _08091DE4 + add r0, sp, #4 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091DE4 +_08091DD0: + adds r0, r6, #0 + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08093274 +_08091DE4: + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #2 + strh r0, [r7, #0x30] + movs r0, #1 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091E00: .4byte gUnknown_84DDA21 + thumb_func_end sub_08091D3C + + thumb_func_start sub_08091E04 +sub_08091E04: @ 0x08091E04 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08091E20 + adds r0, r0, r2 + ldr r2, _08091E24 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08091E20: .4byte gUnknown_2036FF0 +_08091E24: .4byte sub_08091E28 + thumb_func_end sub_08091E04 + + thumb_func_start sub_08091E28 +sub_08091E28: @ 0x08091E28 + push {r4, lr} + ldr r3, _08091E44 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091E28 + + thumb_func_start sub_08091E3C +sub_08091E3C: @ 0x08091E3C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08091E44: .4byte gUnknown_84E5EE4 + thumb_func_end sub_08091E3C + + thumb_func_start sub_08091E48 +sub_08091E48: @ 0x08091E48 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + ldr r2, _08091E6C + ldr r3, _08091E70 + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0xff + beq _08091E68 + ldrb r0, [r3, #3] + cmp r0, #2 + bne _08091E74 +_08091E68: + movs r0, #0 + b _08091E9C + .align 2, 0 +_08091E6C: .4byte gUnknown_2036FF0 +_08091E70: .4byte gUnknown_2037230 +_08091E74: + ldr r5, _08091EA4 + bl sub_0808B004 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x16 + adds r4, r4, r5 + bl sub_0808B5BC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08091EA8 + ldr r4, [r4] + adds r0, r6, #0 + adds r1, r7, #0 + bl _call_via_r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08091E9C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08091EA4: .4byte gUnknown_84E5EB8 +_08091EA8: .4byte sub_080887C8 + thumb_func_end sub_08091E48 + + thumb_func_start sub_08091EAC +sub_08091EAC: @ 0x08091EAC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08091F10 + adds r4, r1, r0 + adds r6, r4, #0 + adds r6, #0x21 + ldrb r0, [r6] + cmp r0, #0 + beq _08091ED4 + cmp r0, #1 + bne _08091EF4 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08091EF4 +_08091ED4: + ldr r1, _08091F14 + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + adds r0, r4, #0 + bl sub_0808E0B8 + movs r0, #0x1c + bl sub_080B5270 + strb r0, [r4, #0x1a] + movs r0, #1 + strb r0, [r6] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] +_08091EF4: + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08091F10 + adds r0, r0, r1 + ldr r2, _08091F18 + adds r1, r5, #0 + bl sub_08092C30 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08091F10: .4byte gUnknown_2036FF0 +_08091F14: .4byte gUnknown_20388A8 +_08091F18: .4byte sub_08091F1C + thumb_func_end sub_08091EAC + + thumb_func_start sub_08091F1C +sub_08091F1C: @ 0x08091F1C + push {lr} + bl sub_080922AC + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08091F1C + + thumb_func_start sub_08091F28 +sub_08091F28: @ 0x08091F28 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08091F8C + adds r4, r1, r0 + adds r6, r4, #0 + adds r6, #0x21 + ldrb r0, [r6] + cmp r0, #0 + beq _08091F50 + cmp r0, #1 + bne _08091F70 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08091F70 +_08091F50: + ldr r1, _08091F90 + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + adds r0, r4, #0 + bl sub_0808E0B8 + movs r0, #0x1d + bl sub_080B5270 + strb r0, [r4, #0x1a] + movs r0, #1 + strb r0, [r6] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] +_08091F70: + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08091F8C + adds r0, r0, r1 + ldr r2, _08091F94 + adds r1, r5, #0 + bl sub_08092C30 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08091F8C: .4byte gUnknown_2036FF0 +_08091F90: .4byte gUnknown_20388A8 +_08091F94: .4byte sub_08091F1C + thumb_func_end sub_08091F28 + + thumb_func_start sub_08091F98 +sub_08091F98: @ 0x08091F98 + push {r4, lr} + adds r3, r0, #0 + movs r1, #0x3c + ldrsh r0, [r3, r1] + ldr r4, _08091FF4 + cmp r0, #0 + bne _08091FD8 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #3] + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #3] + 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, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r3, #5] + ldrh r0, [r3, #0x3c] + adds r0, #1 + strh r0, [r3, #0x3c] +_08091FD8: + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r2, _08091FF8 + adds r1, r3, #0 + bl sub_08092C30 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08091FF4: .4byte gUnknown_2036FF0 +_08091FF8: .4byte sub_08091FFC + thumb_func_end sub_08091F98 + + thumb_func_start sub_08091FFC +sub_08091FFC: @ 0x08091FFC + push {r4, lr} + ldr r3, _08092018 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08091FFC + + thumb_func_start sub_08092010 +sub_08092010: @ 0x08092010 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092018: .4byte gUnknown_84E5EF0 + thumb_func_end sub_08092010 + + thumb_func_start sub_0809201C +sub_0809201C: @ 0x0809201C + push {lr} + bl sub_080922AC + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809201C + + thumb_func_start sub_08092028 +sub_08092028: @ 0x08092028 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809203A + movs r0, #0 + strh r0, [r4, #0x30] +_0809203A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092028 + + thumb_func_start sub_08092044 +sub_08092044: @ 0x08092044 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08092060 + adds r0, r0, r2 + ldr r2, _08092064 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08092060: .4byte gUnknown_2036FF0 +_08092064: .4byte sub_08092068 + thumb_func_end sub_08092044 + + thumb_func_start sub_08092068 +sub_08092068: @ 0x08092068 + push {r4, lr} + ldr r3, _08092084 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08092068 + + thumb_func_start sub_0809207C +sub_0809207C: @ 0x0809207C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092084: .4byte gUnknown_84E5EF4 + thumb_func_end sub_0809207C + + thumb_func_start sub_08092088 +sub_08092088: @ 0x08092088 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F08 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08092088 + + thumb_func_start sub_080920B4 +sub_080920B4: @ 0x080920B4 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080920D0 + adds r0, r0, r2 + ldr r2, _080920D4 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080920D0: .4byte gUnknown_2036FF0 +_080920D4: .4byte sub_080920D8 + thumb_func_end sub_080920B4 + + thumb_func_start sub_080920D8 +sub_080920D8: @ 0x080920D8 + push {r4, lr} + ldr r3, _080920F4 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080920D8 + + thumb_func_start sub_080920EC +sub_080920EC: @ 0x080920EC + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080920F4: .4byte gUnknown_84E5EFC + thumb_func_end sub_080920EC + + thumb_func_start sub_080920F8 +sub_080920F8: @ 0x080920F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092EDC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080920F8 + + thumb_func_start sub_08092124 +sub_08092124: @ 0x08092124 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08092140 + adds r0, r0, r2 + ldr r2, _08092144 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08092140: .4byte gUnknown_2036FF0 +_08092144: .4byte sub_08092148 + thumb_func_end sub_08092124 + + thumb_func_start sub_08092148 +sub_08092148: @ 0x08092148 + push {r4, lr} + ldr r3, _08092164 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08092148 + + thumb_func_start sub_0809215C +sub_0809215C: @ 0x0809215C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092164: .4byte gUnknown_84E5F04 + thumb_func_end sub_0809215C + + thumb_func_start sub_08092168 +sub_08092168: @ 0x08092168 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F34 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08092168 + + thumb_func_start sub_08092194 +sub_08092194: @ 0x08092194 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080921B0 + adds r0, r0, r2 + ldr r2, _080921B4 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_080921B0: .4byte gUnknown_2036FF0 +_080921B4: .4byte sub_080921B8 + thumb_func_end sub_08092194 + + thumb_func_start sub_080921B8 +sub_080921B8: @ 0x080921B8 + push {r4, lr} + ldr r3, _080921D4 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080921B8 + + thumb_func_start sub_080921CC +sub_080921CC: @ 0x080921CC + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080921D4: .4byte gUnknown_84E5F0C + thumb_func_end sub_080921CC + + thumb_func_start sub_080921D8 +sub_080921D8: @ 0x080921D8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F60 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080921D8 + + thumb_func_start sub_08092204 +sub_08092204: @ 0x08092204 + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _08092220 + adds r0, r0, r2 + ldr r2, _08092224 + bl sub_08092C30 + pop {r0} + bx r0 + .align 2, 0 +_08092220: .4byte gUnknown_2036FF0 +_08092224: .4byte sub_08092228 + thumb_func_end sub_08092204 + + thumb_func_start sub_08092228 +sub_08092228: @ 0x08092228 + push {r4, lr} + ldr r3, _08092244 + movs r4, #0x30 + ldrsh r2, [r1, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08092228 + + thumb_func_start sub_0809223C +sub_0809223C: @ 0x0809223C + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092244: .4byte gUnknown_84E5F14 + thumb_func_end sub_0809223C + + thumb_func_start sub_08092248 +sub_08092248: @ 0x08092248 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080922AC + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093274 + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #1 + strh r0, [r5, #0x30] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08092248 + + thumb_func_start sub_0809227C +sub_0809227C: @ 0x0809227C + push {r4, lr} + adds r4, r1, #0 + bl sub_08093234 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809228E + movs r0, #0 + b _08092294 +_0809228E: + movs r0, #2 + strh r0, [r4, #0x30] + movs r0, #1 +_08092294: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809227C + + thumb_func_start sub_0809229C +sub_0809229C: @ 0x0809229C + ldrb r2, [r0] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0809229C + + thumb_func_start sub_080922AC +sub_080922AC: @ 0x080922AC + ldrb r3, [r0] + movs r2, #3 + rsbs r2, r2, #0 + ands r2, r3 + movs r3, #0x41 + rsbs r3, r3, #0 + 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 + .align 2, 0 + thumb_func_end sub_080922AC + + thumb_func_start sub_080922CC +sub_080922CC: @ 0x080922CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080922D8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080922D8: .4byte gUnknown_84E5F20 + thumb_func_end sub_080922CC + + thumb_func_start sub_080922DC +sub_080922DC: @ 0x080922DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080922E8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080922E8: .4byte gUnknown_84E5F29 + thumb_func_end sub_080922DC + + thumb_func_start sub_080922EC +sub_080922EC: @ 0x080922EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080922F8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080922F8: .4byte gUnknown_84E5F32 + thumb_func_end sub_080922EC + + thumb_func_start sub_080922FC +sub_080922FC: @ 0x080922FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092308 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092308: .4byte gUnknown_84E5F3B + thumb_func_end sub_080922FC + + thumb_func_start sub_0809230C +sub_0809230C: @ 0x0809230C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092318 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092318: .4byte gUnknown_84E5F44 + thumb_func_end sub_0809230C + + thumb_func_start sub_0809231C +sub_0809231C: @ 0x0809231C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092328 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092328: .4byte gUnknown_84E5F4D + thumb_func_end sub_0809231C + + thumb_func_start sub_0809232C +sub_0809232C: @ 0x0809232C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092338 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092338: .4byte gUnknown_84E5F56 + thumb_func_end sub_0809232C + + thumb_func_start sub_0809233C +sub_0809233C: @ 0x0809233C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092348 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092348: .4byte gUnknown_84E5F5F + thumb_func_end sub_0809233C + + thumb_func_start sub_0809234C +sub_0809234C: @ 0x0809234C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092358 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092358: .4byte gUnknown_84E5F68 + thumb_func_end sub_0809234C + + thumb_func_start sub_0809235C +sub_0809235C: @ 0x0809235C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092368 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092368: .4byte gUnknown_84E5F71 + thumb_func_end sub_0809235C + + thumb_func_start sub_0809236C +sub_0809236C: @ 0x0809236C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092378 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092378: .4byte gUnknown_84E5F7A + thumb_func_end sub_0809236C + + thumb_func_start sub_0809237C +sub_0809237C: @ 0x0809237C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092388 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092388: .4byte gUnknown_84E5F83 + thumb_func_end sub_0809237C + + thumb_func_start sub_0809238C +sub_0809238C: @ 0x0809238C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08092398 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08092398: .4byte gUnknown_84E5F8C + thumb_func_end sub_0809238C + + thumb_func_start sub_0809239C +sub_0809239C: @ 0x0809239C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080923A8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080923A8: .4byte gUnknown_84E5F95 + thumb_func_end sub_0809239C + + thumb_func_start sub_080923AC +sub_080923AC: @ 0x080923AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080923B8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080923B8: .4byte gUnknown_84E5F9E + thumb_func_end sub_080923AC + + thumb_func_start sub_080923BC +sub_080923BC: @ 0x080923BC + push {lr} + adds r2, r0, #0 + ldr r1, _080923C4 + b _080923D4 + .align 2, 0 +_080923C4: .4byte gUnknown_84E1900 +_080923C8: + ldr r0, [r1] + cmp r0, r2 + bne _080923D2 + adds r0, r1, #0 + b _080923DC +_080923D2: + adds r1, #8 +_080923D4: + ldr r0, [r1] + cmp r0, #0 + bne _080923C8 + movs r0, #0 +_080923DC: + pop {r1} + bx r1 + thumb_func_end sub_080923BC + + thumb_func_start sub_080923E0 +sub_080923E0: @ 0x080923E0 + push {r4, lr} + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _08092422 + adds r0, r4, #0 + adds r0, #0x2a + strb r2, [r0] + ldr r0, [r4, #8] + bl sub_080923BC + adds r1, r4, #0 + adds r1, #0x2b + cmp r0, #0 + beq _0809241A + ldrb r2, [r1] + ldrb r3, [r0, #4] + cmp r2, r3 + bne _08092410 + ldrb r0, [r0, #7] + b _08092418 +_08092410: + ldrb r3, [r0, #5] + cmp r2, r3 + bne _0809241A + ldrb r0, [r0, #6] +_08092418: + strb r0, [r1] +_0809241A: + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08007EF4 +_08092422: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080923E0 + + thumb_func_start sub_08092428 +sub_08092428: @ 0x08092428 + push {r4, lr} + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _08092460 + adds r0, r4, #0 + adds r0, #0x2a + strb r2, [r0] + ldr r0, [r4, #8] + bl sub_080923BC + adds r2, r0, #0 + cmp r2, #0 + beq _08092460 + ldrb r1, [r2, #5] + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldrb r3, [r2, #4] + cmp r0, r3 + bhi _0809245A + ldrb r1, [r2, #4] +_0809245A: + adds r0, r4, #0 + bl sub_08007EF4 +_08092460: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092428 + + thumb_func_start sub_08092468 +sub_08092468: @ 0x08092468 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r0, r2 + ble _08092482 + movs r0, #3 + b _08092498 +_08092482: + cmp r0, r2 + bge _0809248A + movs r0, #4 + b _08092498 +_0809248A: + lsls r1, r1, #0x10 + lsls r0, r3, #0x10 + cmp r1, r0 + bgt _08092496 + movs r0, #1 + b _08092498 +_08092496: + movs r0, #2 +_08092498: + pop {r1} + bx r1 + thumb_func_end sub_08092468 + + thumb_func_start sub_0809249C +sub_0809249C: @ 0x0809249C + push {r4, lr} + mov ip, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0 + strb r1, [r0, #6] + adds r0, #0x21 + strb r3, [r0] + adds r0, #1 + strb r3, [r0] + ldr r4, _080924E0 + mov r0, ip + ldrb r2, [r0, #4] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r2, r4, #0 + adds r2, #0x1c + adds r0, r0, r2 + ldr r2, _080924E4 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, ip + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r3, [r0, #0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080924E0: .4byte gUnknown_20205AC +_080924E4: .4byte gUnknown_84DD88C + thumb_func_end sub_0809249C + + thumb_func_start sub_080924E8 +sub_080924E8: @ 0x080924E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080924F4 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080924F4: .4byte gUnknown_84E5FA7 + thumb_func_end sub_080924E8 + + thumb_func_start sub_080924F8 +sub_080924F8: @ 0x080924F8 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + ldrh r1, [r6, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, #0x12] + mov r4, sp + adds r4, #2 + strh r0, [r4] + adds r0, r5, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_080928AC + 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_08092538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080924F8 + + thumb_func_start sub_08092538 +sub_08092538: @ 0x08092538 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsls r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + mov r8, r7 + lsrs r0, r1, #0x10 + mov sb, r0 + asrs r5, r1, #0x10 + lsrs r0, r2, #0x10 + mov sl, r0 + asrs r4, r2, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080926C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809256E + movs r0, #1 + b _080925EE +_0809256E: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B14 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080925B0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08088000 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080925B0 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_08092738 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080925B0 + ldrb r0, [r6, #1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _080925B4 + mov r0, r8 + bl sub_08088114 + cmp r0, #0 + bne _080925B4 +_080925B0: + movs r0, #2 + b _080925EE +_080925B4: + ldrb r0, [r6, #0xb] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + mov r2, sb + lsls r1, r2, #0x10 + asrs r5, r1, #0x10 + mov r2, sl + lsls r1, r2, #0x10 + asrs r4, r1, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08096634 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080925D8 + movs r0, #3 + b _080925EE +_080925D8: + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08092790 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080925EC + movs r0, #0 + b _080925EE +_080925EC: + movs r0, #4 +_080925EE: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08092538 + + thumb_func_start sub_080925FC +sub_080925FC: @ 0x080925FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + lsls r1, r1, #0x10 + lsls r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsrs r0, r1, #0x10 + mov sb, r0 + asrs r6, r1, #0x10 + lsrs r0, r2, #0x10 + mov sl, r0 + asrs r5, r2, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080926C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08087B14 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08092674 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08088000 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _08092674 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + mov r3, r8 + bl sub_08092738 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08092674 + ldrb r0, [r7, #1] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08092678 + mov r0, r8 + bl sub_08088114 + cmp r0, #0 + bne _08092678 +_08092674: + movs r0, #2 + orrs r4, r0 +_08092678: + ldrb r0, [r7, #0xb] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + mov r2, sb + lsls r1, r2, #0x10 + asrs r6, r1, #0x10 + mov r2, sl + lsls r1, r2, #0x10 + asrs r5, r1, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08096634 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080926A0 + movs r0, #4 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_080926A0: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08092790 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080926B8 + movs r0, #8 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_080926B8: + adds r0, r4, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080925FC + + thumb_func_start sub_080926C8 +sub_080926C8: @ 0x080926C8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + ldrb r1, [r4, #0x19] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08092700 + lsls r1, r1, #0x1c + lsrs r2, r1, #0x1c + ldrh r0, [r4, #0xc] + subs r2, r0, r2 + lsrs r1, r1, #0x1c + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + lsls r2, r2, #0x10 + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + cmp r2, r0 + bgt _0809272C + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + blt _0809272C +_08092700: + ldrb r1, [r4, #0x19] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _08092730 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x1c + ldrh r0, [r4, #0xe] + subs r2, r0, r2 + lsrs r1, r1, #0x1c + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + lsls r2, r2, #0x10 + lsls r0, r5, #0x10 + asrs r3, r0, #0x10 + cmp r2, r0 + bgt _0809272C + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + bge _08092730 +_0809272C: + movs r0, #1 + b _08092732 +_08092730: + movs r0, #0 +_08092732: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080926C8 + + thumb_func_start sub_08092738 +sub_08092738: @ 0x08092738 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x18 + ldr r1, _08092780 + lsrs r3, r3, #0x16 + subs r5, r3, #4 + adds r1, r5, r1 + ldrb r0, [r0, #0x1e] + ldr r1, [r1] + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809277A + ldr r4, _08092784 + adds r4, r5, r4 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08092788 +_0809277A: + movs r0, #1 + b _0809278A + .align 2, 0 +_08092780: .4byte gUnknown_84E5FB0 +_08092784: .4byte gUnknown_84E5FC0 +_08092788: + movs r0, #0 +_0809278A: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08092738 + + thumb_func_start sub_08092790 +sub_08092790: @ 0x08092790 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r4, #0 + lsls r2, r2, #0x10 + asrs r5, r2, #0x10 +_0809279E: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080927F4 + adds r2, r0, r1 + ldrb r0, [r2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080927F8 + cmp r2, r6 + beq _080927F8 + movs r0, #0x10 + ldrsh r1, [r2, r0] + lsls r0, r7, #0x10 + asrs r3, r0, #0x10 + cmp r1, r3 + bne _080927C8 + movs r1, #0x12 + ldrsh r0, [r2, r1] + cmp r0, r5 + beq _080927D8 +_080927C8: + movs r1, #0x14 + ldrsh r0, [r2, r1] + cmp r0, r3 + bne _080927F8 + movs r1, #0x16 + ldrsh r0, [r2, r1] + cmp r0, r5 + bne _080927F8 +_080927D8: + ldrb r0, [r6, #0xb] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r2, #0xb] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + bl sub_080967E0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080927F8 + movs r0, #1 + b _08092804 + .align 2, 0 +_080927F4: .4byte gUnknown_2036FF0 +_080927F8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0809279E + movs r0, #0 +_08092804: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092790 + + thumb_func_start sub_0809280C +sub_0809280C: @ 0x0809280C + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08092858 + ldr r3, _08092850 + ldr r2, _08092854 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x3c] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08092858 + movs r0, #1 + b _0809285A + .align 2, 0 +_08092850: .4byte gUnknown_20205AC +_08092854: .4byte gUnknown_2036FF0 +_08092858: + movs r0, #0 +_0809285A: + add sp, #4 + pop {r1} + bx r1 + thumb_func_end sub_0809280C + + thumb_func_start sub_08092860 +sub_08092860: @ 0x08092860 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809289E + ldr r3, _080928A4 + ldr r2, _080928A8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r2, [r1, #0x3c] + movs r0, #4 + orrs r0, r2 + strh r0, [r1, #0x3c] +_0809289E: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080928A4: .4byte gUnknown_20205AC +_080928A8: .4byte gUnknown_2036FF0 + thumb_func_end sub_08092860 + + thumb_func_start sub_080928AC +sub_080928AC: @ 0x080928AC + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _080928CC + lsrs r0, r0, #0x16 + adds r0, r0, r3 + ldrh r3, [r0] + ldrh r4, [r1] + adds r3, r3, r4 + strh r3, [r1] + ldrh r0, [r0, #2] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080928CC: .4byte gUnknown_84E5FD0 + thumb_func_end sub_080928AC + + thumb_func_start sub_080928D0 +sub_080928D0: @ 0x080928D0 + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _080928F4 + lsrs r0, r0, #0x16 + adds r0, r0, r3 + ldrh r3, [r0] + lsls r3, r3, #4 + ldrh r4, [r1] + adds r3, r3, r4 + strh r3, [r1] + ldrh r0, [r0, #2] + lsls r0, r0, #4 + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080928F4: .4byte gUnknown_84E5FD0 + thumb_func_end sub_080928D0 + + thumb_func_start sub_080928F8 +sub_080928F8: @ 0x080928F8 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + ldr r1, [sp, #0x14] + lsls r0, r0, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r7, r3, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + mov ip, r6 + ldr r1, _0809295C + lsrs r0, r0, #0x16 + adds r5, r0, r1 + movs r0, #0 + ldrsh r1, [r5, r0] + cmp r1, #0 + ble _08092924 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r4] + adds r0, r0, r3 + strh r0, [r4] +_08092924: + cmp r1, #0 + bge _08092932 + ldrh r1, [r4] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + strh r1, [r4] +_08092932: + movs r0, #2 + ldrsh r1, [r5, r0] + cmp r1, #0 + ble _08092944 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r2] + adds r0, r0, r3 + strh r0, [r2] +_08092944: + cmp r1, #0 + bge _08092954 + ldrh r1, [r2] + mov r3, ip + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + strh r1, [r2] +_08092954: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809295C: .4byte gUnknown_84E5FD0 + thumb_func_end sub_080928F8 + + thumb_func_start sub_08092960 +sub_08092960: @ 0x08092960 + push {r4, r5, lr} + ldr r5, _0809299C + ldr r4, [r5] + ldrh r4, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r4 + lsls r0, r0, #4 + strh r0, [r2] + ldr r0, [r5] + ldrh r0, [r0, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #4 + strh r1, [r3] + ldr r1, _080929A0 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2] + ldr r1, _080929A4 + ldrh r0, [r3] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r3] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809299C: .4byte gUnknown_3005AEC +_080929A0: .4byte gUnknown_3005B4C +_080929A4: .4byte gUnknown_3005B48 + thumb_func_end sub_08092960 + + thumb_func_start sub_080929A8 +sub_080929A8: @ 0x080929A8 + push {r4, r5, r6, r7, lr} + adds r7, r2, #0 + mov ip, r3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r0, _08092A3C + ldrh r0, [r0] + rsbs r0, r0, #0 + ldr r1, _08092A40 + ldr r2, [r1, #0x10] + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _08092A44 + ldrh r0, [r0] + rsbs r0, r0, #0 + ldr r1, [r1, #0x14] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r2, #0 + ble _080929E2 + lsls r0, r3, #0x10 + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r0, r3 + lsrs r3, r0, #0x10 +_080929E2: + cmp r2, #0 + bge _080929EE + lsls r0, r3, #0x10 + ldr r2, _08092A48 + adds r0, r0, r2 + lsrs r3, r0, #0x10 +_080929EE: + cmp r1, #0 + ble _080929FC + lsls r0, r4, #0x10 + movs r2, #0x80 + lsls r2, r2, #0xd + adds r0, r0, r2 + lsrs r4, r0, #0x10 +_080929FC: + cmp r1, #0 + bge _08092A08 + lsls r0, r4, #0x10 + ldr r1, _08092A48 + adds r0, r0, r1 + lsrs r4, r0, #0x10 +_08092A08: + ldr r2, _08092A4C + ldr r0, [r2] + ldrh r1, [r0] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #4 + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r0 + strh r1, [r7] + ldr r0, [r2] + ldrh r1, [r0, #2] + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #4 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r0 + mov r2, ip + strh r1, [r2] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08092A3C: .4byte gUnknown_3005B4C +_08092A40: .4byte gUnknown_3005B30 +_08092A44: .4byte gUnknown_3005B48 +_08092A48: .4byte 0xFFF00000 +_08092A4C: .4byte gUnknown_3005AEC + thumb_func_end sub_080929A8 + + thumb_func_start sub_08092A50 +sub_08092A50: @ 0x08092A50 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + mov r8, r1 + adds r4, r2, #0 + adds r5, r3, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + 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_080929A8 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + ldrh r0, [r6] + adds r4, r4, r0 + strh r4, [r6] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + mov r1, r8 + ldrh r1, [r1] + adds r5, r5, r1 + mov r2, r8 + strh r5, [r2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092A50 + + thumb_func_start sub_08092A9C +sub_08092A9C: @ 0x08092A9C + push {lr} + adds r2, r0, #0 + movs r0, #0 + strh r0, [r2] + strh r0, [r1] + ldr r3, _08092AD8 + ldr r0, [r3, #0x10] + cmp r0, #0 + ble _08092AB2 + movs r0, #1 + strh r0, [r2] +_08092AB2: + ldr r0, [r3, #0x10] + cmp r0, #0 + bge _08092ABE + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] +_08092ABE: + ldr r2, [r3, #0x14] + cmp r2, #0 + ble _08092ACA + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_08092ACA: + cmp r2, #0 + bge _08092AD4 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_08092AD4: + pop {r0} + bx r0 + .align 2, 0 +_08092AD8: .4byte gUnknown_3005B30 + thumb_func_end sub_08092A9C + + thumb_func_start sub_08092ADC +sub_08092ADC: @ 0x08092ADC + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + 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_080928AC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092ADC + + thumb_func_start sub_08092AFC +sub_08092AFC: @ 0x08092AFC + push {lr} + ldrb r1, [r0] + movs r0, #0x42 + ands r0, r1 + cmp r0, #0 + bne _08092B0C + movs r0, #0 + b _08092B0E +_08092B0C: + movs r0, #1 +_08092B0E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092AFC + + thumb_func_start sub_08092B14 +sub_08092B14: @ 0x08092B14 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _08092B2A + ldrb r0, [r1, #0x1c] + cmp r0, #0xff + beq _08092B2A + movs r0, #1 + b _08092B2C +_08092B2A: + movs r0, #0 +_08092B2C: + pop {r1} + bx r1 + thumb_func_end sub_08092B14 + + thumb_func_start sub_08092B30 +sub_08092B30: @ 0x08092B30 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_08092AFC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _08092B70 + adds r0, r4, #0 + bl sub_08096E84 + strb r5, [r4, #0x1c] + ldrb r0, [r4] + movs r1, #0x40 + orrs r0, r1 + movs r1, #0x7f + ands r0, r1 + strb r0, [r4] + ldr r2, _08092B6C + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #0x32] + movs r0, #0 + b _08092B72 + .align 2, 0 +_08092B6C: .4byte gUnknown_20205AC +_08092B70: + movs r0, #1 +_08092B72: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08092B30 + + thumb_func_start sub_08092B78 +sub_08092B78: @ 0x08092B78 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_08092B94 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08092B30 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092B78 + + thumb_func_start sub_08092B94 +sub_08092B94: @ 0x08092B94 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _08092BA6 + adds r0, r1, #0 + bl sub_08092BAC +_08092BA6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092B94 + + thumb_func_start sub_08092BAC +sub_08092BAC: @ 0x08092BAC + movs r1, #0xff + strb r1, [r0, #0x1c] + ldrb r2, [r0] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x7f + ands r1, r2 + strb r1, [r0] + ldr r3, _08092BDC + ldrb r2, [r0, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r2, #0 + strh r2, [r1, #0x30] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x32] + bx lr + .align 2, 0 +_08092BDC: .4byte gUnknown_20205AC + thumb_func_end sub_08092BAC + + thumb_func_start sub_08092BE0 +sub_08092BE0: @ 0x08092BE0 + push {lr} + ldrb r1, [r0] + lsls r0, r1, #0x19 + cmp r0, #0 + blt _08092BEE + movs r0, #0x10 + b _08092BF0 +_08092BEE: + lsrs r0, r1, #7 +_08092BF0: + pop {r1} + bx r1 + thumb_func_end sub_08092BE0 + + thumb_func_start sub_08092BF4 +sub_08092BF4: @ 0x08092BF4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08092BE0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08092C0E + cmp r4, #0x10 + beq _08092C0E + adds r0, r5, #0 + bl sub_08092B94 +_08092C0E: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092BF4 + + thumb_func_start sub_08092C18 +sub_08092C18: @ 0x08092C18 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _08092C28 + movs r0, #0xff + b _08092C2A +_08092C28: + ldrb r0, [r1, #0x1c] +_08092C2A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092C18 + + thumb_func_start sub_08092C30 +sub_08092C30: @ 0x08092C30 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_08096C80 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095E58 + adds r0, r4, #0 + bl sub_08092B14 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08092C5A + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080931FC + b _08092C70 +_08092C5A: + ldrb r0, [r4, #1] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08092C70 +_08092C62: + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r6 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08092C62 +_08092C70: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096CCC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096D20 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095E3C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095E88 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080967C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08092C30 + + thumb_func_start sub_08092CA0 +sub_08092CA0: @ 0x08092CA0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092CC8 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092CB8 + movs r4, #0 +_08092CB8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092CC8: .4byte gUnknown_84E5FF4 + thumb_func_end sub_08092CA0 + + thumb_func_start sub_08092CCC +sub_08092CCC: @ 0x08092CCC + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092CF4 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092CE4 + movs r4, #0 +_08092CE4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092CF4: .4byte gUnknown_84E5FF9 + thumb_func_end sub_08092CCC + + thumb_func_start sub_08092CF8 +sub_08092CF8: @ 0x08092CF8 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092D20 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092D10 + movs r4, #0 +_08092D10: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092D20: .4byte gUnknown_84E5FFE + thumb_func_end sub_08092CF8 + + thumb_func_start sub_08092D24 +sub_08092D24: @ 0x08092D24 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092D4C + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092D3C + movs r4, #0 +_08092D3C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092D4C: .4byte gUnknown_84E6003 + thumb_func_end sub_08092D24 + + thumb_func_start sub_08092D50 +sub_08092D50: @ 0x08092D50 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092D78 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092D68 + movs r4, #0 +_08092D68: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092D78: .4byte gUnknown_84E6008 + thumb_func_end sub_08092D50 + + thumb_func_start sub_08092D7C +sub_08092D7C: @ 0x08092D7C + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092DA4 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092D94 + movs r4, #0 +_08092D94: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092DA4: .4byte gUnknown_84E600D + thumb_func_end sub_08092D7C + + thumb_func_start sub_08092DA8 +sub_08092DA8: @ 0x08092DA8 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092DD0 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092DC0 + movs r4, #0 +_08092DC0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092DD0: .4byte gUnknown_84E6012 + thumb_func_end sub_08092DA8 + + thumb_func_start sub_08092DD4 +sub_08092DD4: @ 0x08092DD4 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092DFC + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092DEC + movs r4, #0 +_08092DEC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092DFC: .4byte gUnknown_84E6017 + thumb_func_end sub_08092DD4 + + thumb_func_start sub_08092E00 +sub_08092E00: @ 0x08092E00 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092E28 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092E18 + movs r4, #0 +_08092E18: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092E28: .4byte gUnknown_84E601C + thumb_func_end sub_08092E00 + + thumb_func_start sub_08092E2C +sub_08092E2C: @ 0x08092E2C + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092E54 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092E44 + movs r4, #0 +_08092E44: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092E54: .4byte gUnknown_84E6021 + thumb_func_end sub_08092E2C + + thumb_func_start sub_08092E58 +sub_08092E58: @ 0x08092E58 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092E80 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092E70 + movs r4, #0 +_08092E70: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092E80: .4byte gUnknown_84E6026 + thumb_func_end sub_08092E58 + + thumb_func_start sub_08092E84 +sub_08092E84: @ 0x08092E84 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092EAC + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092E9C + movs r4, #0 +_08092E9C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092EAC: .4byte gUnknown_84E602B + thumb_func_end sub_08092E84 + + thumb_func_start sub_08092EB0 +sub_08092EB0: @ 0x08092EB0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092ED8 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092EC8 + movs r4, #0 +_08092EC8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092ED8: .4byte gUnknown_84E6030 + thumb_func_end sub_08092EB0 + + thumb_func_start sub_08092EDC +sub_08092EDC: @ 0x08092EDC + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092F04 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092EF4 + movs r4, #0 +_08092EF4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092F04: .4byte gUnknown_84E6035 + thumb_func_end sub_08092EDC + + thumb_func_start sub_08092F08 +sub_08092F08: @ 0x08092F08 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092F30 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092F20 + movs r4, #0 +_08092F20: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092F30: .4byte gUnknown_84E603A + thumb_func_end sub_08092F08 + + thumb_func_start sub_08092F34 +sub_08092F34: @ 0x08092F34 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092F5C + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092F4C + movs r4, #0 +_08092F4C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092F5C: .4byte gUnknown_84E603F + thumb_func_end sub_08092F34 + + thumb_func_start sub_08092F60 +sub_08092F60: @ 0x08092F60 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092F88 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092F78 + movs r4, #0 +_08092F78: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092F88: .4byte gUnknown_84E6044 + thumb_func_end sub_08092F60 + + thumb_func_start sub_08092F8C +sub_08092F8C: @ 0x08092F8C + push {r4, lr} + adds r4, r0, #0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08092F8C + + thumb_func_start sub_08092FB8 +sub_08092FB8: @ 0x08092FB8 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08092FE0 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092FD0 + movs r4, #0 +_08092FD0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08092FE0: .4byte gUnknown_84E6049 + thumb_func_end sub_08092FB8 + + thumb_func_start sub_08092FE4 +sub_08092FE4: @ 0x08092FE4 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0809300C + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08092FFC + movs r4, #0 +_08092FFC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809300C: .4byte gUnknown_84E604E + thumb_func_end sub_08092FE4 + + thumb_func_start sub_08093010 +sub_08093010: @ 0x08093010 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093038 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08093028 + movs r4, #0 +_08093028: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08093038: .4byte gUnknown_84E6053 + thumb_func_end sub_08093010 + + thumb_func_start sub_0809303C +sub_0809303C: @ 0x0809303C + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093064 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08093054 + movs r4, #0 +_08093054: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08093064: .4byte gUnknown_84E6058 + thumb_func_end sub_0809303C + + thumb_func_start sub_08093068 +sub_08093068: @ 0x08093068 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093090 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08093080 + movs r4, #0 +_08093080: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08093090: .4byte gUnknown_84E605D + thumb_func_end sub_08093068 + + thumb_func_start sub_08093094 +sub_08093094: @ 0x08093094 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080930BC + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _080930AC + movs r4, #0 +_080930AC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080930BC: .4byte gUnknown_84E6062 + thumb_func_end sub_08093094 + + thumb_func_start sub_080930C0 +sub_080930C0: @ 0x080930C0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080930E8 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _080930D8 + movs r4, #0 +_080930D8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080930E8: .4byte gUnknown_84E6067 + thumb_func_end sub_080930C0 + + thumb_func_start sub_080930EC +sub_080930EC: @ 0x080930EC + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093114 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08093104 + movs r4, #0 +_08093104: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08093114: .4byte gUnknown_84E606C + thumb_func_end sub_080930EC + + thumb_func_start sub_08093118 +sub_08093118: @ 0x08093118 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093140 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _08093130 + movs r4, #0 +_08093130: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08093140: .4byte gUnknown_84E6071 + thumb_func_end sub_08093118 + + thumb_func_start sub_08093144 +sub_08093144: @ 0x08093144 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0809316C + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #4 + bls _0809315C + movs r4, #0 +_0809315C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809316C: .4byte gUnknown_84E6076 + thumb_func_end sub_08093144 + + thumb_func_start sub_08093170 +sub_08093170: @ 0x08093170 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08093194 + mov r0, sp + movs r2, #8 + bl memcpy + subs r1, r4, #1 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bhi _08093198 + mov r2, sp + adds r0, r2, r1 + ldrb r0, [r0] + b _0809319A + .align 2, 0 +_08093194: .4byte gUnknown_84E607B +_08093198: + adds r0, r4, #0 +_0809319A: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093170 + + thumb_func_start sub_080931A4 +sub_080931A4: @ 0x080931A4 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080931B8 + lsrs r0, r0, #0x16 + subs r0, #5 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080931B8: .4byte gUnknown_84E6083 + thumb_func_end sub_080931A4 + + thumb_func_start sub_080931BC +sub_080931BC: @ 0x080931BC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r1, #0 + beq _080931DC + cmp r2, #0 + beq _080931DC + cmp r1, #4 + bhi _080931DC + cmp r2, #4 + bls _080931E0 +_080931DC: + movs r0, #0 + b _080931F2 +_080931E0: + adds r1, r2, #0 + bl sub_080931A4 + ldr r2, _080931F8 + lsls r1, r4, #2 + subs r1, #5 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] +_080931F2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080931F8: .4byte gUnknown_84E6093 + thumb_func_end sub_080931BC + + thumb_func_start sub_080931FC +sub_080931FC: @ 0x080931FC + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08093230 + ldrb r0, [r4, #0x1c] + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x32 + ldrsh r2, [r1, r3] + ldr r0, [r0] + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r2, [r2] + adds r0, r4, #0 + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_080931FC + + thumb_func_start sub_0809321C +sub_0809321C: @ 0x0809321C + cmp r0, #0 + beq _08093228 + ldrb r0, [r4] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4] +_08093228: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08093230: .4byte gUnknown_84E60A4 + thumb_func_end sub_0809321C + + thumb_func_start sub_08093234 +sub_08093234: @ 0x08093234 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08093260 + ldrb r0, [r4, #0x1c] + lsls r0, r0, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 + lsls r0, r0, #0x18 + thumb_func_end sub_08093234 + + thumb_func_start sub_08093258 +sub_08093258: @ 0x08093258 + cmp r0, #0 + bne _08093264 + movs r0, #0 + b _0809326E + .align 2, 0 +_08093260: .4byte gUnknown_84E60A4 +_08093264: + movs r0, #0xff + strb r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r5, #0x32] + movs r0, #1 +_0809326E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093258 + + thumb_func_start sub_08093274 +sub_08093274: @ 0x08093274 + movs r3, #0 + strb r2, [r0, #0x1c] + strh r3, [r1, #0x32] + bx lr + thumb_func_end sub_08093274 + + thumb_func_start sub_0809327C +sub_0809327C: @ 0x0809327C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_0808E930 + adds r0, r4, #0 + bl sub_0808E56C + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08092428 + adds r2, r5, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + strh r0, [r5, #0x32] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809327C + + thumb_func_start sub_080932C0 +sub_080932C0: @ 0x080932C0 + push {lr} + movs r2, #1 + bl sub_0809327C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080932C0 + + thumb_func_start sub_080932D0 +sub_080932D0: @ 0x080932D0 + push {lr} + movs r2, #2 + bl sub_0809327C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080932D0 + + thumb_func_start sub_080932E0 +sub_080932E0: @ 0x080932E0 + push {lr} + movs r2, #3 + bl sub_0809327C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080932E0 + + thumb_func_start sub_080932F0 +sub_080932F0: @ 0x080932F0 + push {lr} + movs r2, #4 + bl sub_0809327C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080932F0 + + thumb_func_start sub_08093300 +sub_08093300: @ 0x08093300 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + mov r8, r1 + adds r4, r2, #0 + adds r6, r3, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldrh r1, [r7, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r7, #0x12] + mov r5, sp + adds r5, #2 + strh r0, [r5] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0808E930 + adds r0, r4, #0 + mov r1, sp + adds r2, r5, #0 + bl sub_080928AC + mov r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r5, r0] + adds r0, r7, #0 + bl sub_0808E454 + mov r0, r8 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_08096FD0 + mov r4, r8 + adds r4, #0x2c + ldrb r1, [r4] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldr r0, _08093398 + ldr r0, [r0] + cmp r0, #0 + beq _0809337E + adds r0, r7, #0 + bl sub_08097900 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0809337E + ldrb r0, [r4] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4] +_0809337E: + ldrb r0, [r7] + movs r1, #4 + orrs r0, r1 + strb r0, [r7] + movs r0, #1 + mov r1, r8 + strh r0, [r1, #0x32] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08093398: .4byte gUnknown_2037258 + thumb_func_end sub_08093300 + + thumb_func_start sub_0809339C +sub_0809339C: @ 0x0809339C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r5, r0, #0 + mov r8, r1 + adds r4, r3, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sp + ldr r0, _080933F4 + 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_08093300 + lsls r4, r4, #2 + mov r7, sp + adds r1, r7, r4 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldr r1, [r1] + bl _call_via_r1 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + mov r1, r8 + bl sub_080923E0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080933F4: .4byte gUnknown_84E633C + thumb_func_end sub_0809339C + + thumb_func_start sub_080933F8 +sub_080933F8: @ 0x080933F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #1 + bl sub_08093300 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080923AC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080923E0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080933F8 + + thumb_func_start sub_08093428 +sub_08093428: @ 0x08093428 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_08096FE4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809343E + movs r0, #0 + b _0809345A +_0809343E: + adds r0, r4, #0 + bl sub_0808E56C + ldrb r0, [r4] + movs r1, #8 + 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, #1 +_0809345A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093428 + + thumb_func_start sub_08093460 +sub_08093460: @ 0x08093460 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r6, r0, #0 + mov r8, r1 + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + ldrh r1, [r6, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, #0x12] + mov r4, sp + adds r4, #2 + strh r0, [r4] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0808E930 + adds r0, r5, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_080928AC + mov r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r4, r0] + adds r0, r6, #0 + bl sub_0808E454 + mov r0, r8 + adds r1, r5, #0 + bl sub_0809704C + mov r2, r8 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + strb r0, [r6] + movs r0, #1 + mov r1, r8 + strh r0, [r1, #0x32] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08093460 + + thumb_func_start sub_080934D0 +sub_080934D0: @ 0x080934D0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_08093460 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080923E0 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080934D0 + + thumb_func_start sub_080934FC +sub_080934FC: @ 0x080934FC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_0809705C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093512 + movs r0, #0 + b _0809352E +_08093512: + adds r0, r4, #0 + bl sub_0808E56C + ldrb r0, [r4] + movs r1, #8 + 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, #1 +_0809352E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080934FC + + thumb_func_start sub_08093534 +sub_08093534: @ 0x08093534 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #7 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093554 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093534 + + thumb_func_start sub_08093554 +sub_08093554: @ 0x08093554 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093566 + movs r0, #0 + b _0809356C +_08093566: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809356C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093554 + + thumb_func_start sub_08093574 +sub_08093574: @ 0x08093574 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #8 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093594 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093574 + + thumb_func_start sub_08093594 +sub_08093594: @ 0x08093594 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080935A6 + movs r0, #0 + b _080935AC +_080935A6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080935AC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093594 + + thumb_func_start sub_080935B4 +sub_080935B4: @ 0x080935B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #5 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080935D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080935B4 + + thumb_func_start sub_080935D4 +sub_080935D4: @ 0x080935D4 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080935E6 + movs r0, #0 + b _080935EC +_080935E6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080935EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080935D4 + + thumb_func_start sub_080935F4 +sub_080935F4: @ 0x080935F4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #6 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093614 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080935F4 + + thumb_func_start sub_08093614 +sub_08093614: @ 0x08093614 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093626 + movs r0, #0 + b _0809362C +_08093626: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809362C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093614 + + thumb_func_start sub_08093634 +sub_08093634: @ 0x08093634 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093654 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093634 + + thumb_func_start sub_08093654 +sub_08093654: @ 0x08093654 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093666 + movs r0, #0 + b _0809366C +_08093666: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809366C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093654 + + thumb_func_start sub_08093674 +sub_08093674: @ 0x08093674 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093694 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093674 + + thumb_func_start sub_08093694 +sub_08093694: @ 0x08093694 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080936A6 + movs r0, #0 + b _080936AC +_080936A6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080936AC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093694 + + thumb_func_start sub_080936B4 +sub_080936B4: @ 0x080936B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080936D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080936B4 + + thumb_func_start sub_080936D4 +sub_080936D4: @ 0x080936D4 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080936E6 + movs r0, #0 + b _080936EC +_080936E6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080936EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080936D4 + + thumb_func_start sub_080936F4 +sub_080936F4: @ 0x080936F4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + bl sub_080934D0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093714 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080936F4 + + thumb_func_start sub_08093714 +sub_08093714: @ 0x08093714 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093726 + movs r0, #0 + b _0809372C +_08093726: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809372C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093714 + + thumb_func_start sub_08093734 +sub_08093734: @ 0x08093734 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #7 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093754 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093734 + + thumb_func_start sub_08093754 +sub_08093754: @ 0x08093754 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093766 + movs r0, #0 + b _0809376C +_08093766: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809376C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093754 + + thumb_func_start sub_08093774 +sub_08093774: @ 0x08093774 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #8 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093774 + + thumb_func_start sub_08093794 +sub_08093794: @ 0x08093794 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080937A6 + movs r0, #0 + b _080937AC +_080937A6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080937AC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093794 + + thumb_func_start sub_080937B4 +sub_080937B4: @ 0x080937B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #5 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080937D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080937B4 + + thumb_func_start sub_080937D4 +sub_080937D4: @ 0x080937D4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080937E6 + movs r0, #0 + b _080937EC +_080937E6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080937EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080937D4 + + thumb_func_start sub_080937F4 +sub_080937F4: @ 0x080937F4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #6 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093814 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080937F4 + + thumb_func_start sub_08093814 +sub_08093814: @ 0x08093814 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093826 + movs r0, #0 + b _0809382C +_08093826: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809382C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093814 + + thumb_func_start sub_08093834 +sub_08093834: @ 0x08093834 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093854 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093834 + + thumb_func_start sub_08093854 +sub_08093854: @ 0x08093854 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093866 + movs r0, #0 + b _0809386C +_08093866: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809386C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093854 + + thumb_func_start sub_08093874 +sub_08093874: @ 0x08093874 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093894 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093874 + + thumb_func_start sub_08093894 +sub_08093894: @ 0x08093894 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080938A6 + movs r0, #0 + b _080938AC +_080938A6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080938AC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093894 + + thumb_func_start sub_080938B4 +sub_080938B4: @ 0x080938B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080938D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080938B4 + + thumb_func_start sub_080938D4 +sub_080938D4: @ 0x080938D4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080938E6 + movs r0, #0 + b _080938EC +_080938E6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080938EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080938D4 + + thumb_func_start sub_080938F4 +sub_080938F4: @ 0x080938F4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #0 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093914 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080938F4 + + thumb_func_start sub_08093914 +sub_08093914: @ 0x08093914 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093926 + movs r0, #0 + b _0809392C +_08093926: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809392C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093914 + + thumb_func_start sub_08093934 +sub_08093934: @ 0x08093934 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r7, r0, #0 + mov sl, r1 + adds r4, r2, #0 + mov r8, r3 + ldr r0, [sp, #0x30] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _080939EC + add r0, sp, #4 + movs r2, #6 + 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_0808E930 + mov r1, r8 + lsls r0, r1, #1 + add r0, sp + adds r0, #4 + movs r1, #0 + ldrsh r3, [r0, r1] + str r3, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080928F8 + ldrh r1, [r5] + ldrh r0, [r7, #0x10] + adds r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r6] + ldrh r0, [r7, #0x12] + adds r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r7, #0 + bl sub_0808E454 + mov r0, sl + adds r1, r4, #0 + mov r2, r8 + mov r3, sb + bl sub_080971AC + movs r0, #1 + mov r1, sl + strh r0, [r1, #0x32] + movs r0, #0x2c + add sl, r0 + mov r0, sl + ldrb r1, [r0] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, sl + strb r0, [r1] + ldrb r0, [r7] + movs r1, #4 + orrs r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r7] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080939EC: .4byte gUnknown_84E6410 + thumb_func_end sub_08093934 + + thumb_func_start sub_080939F0 +sub_080939F0: @ 0x080939F0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [sp, #0x10] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + adds r0, r4, #0 + bl sub_08093934 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080923E0 + adds r0, r4, #0 + bl sub_08097780 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080939F0 + + thumb_func_start sub_08093A34 +sub_08093A34: @ 0x08093A34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r6, r0, #0 + adds r7, r1, #0 + adds r4, r2, #0 + ldr r1, _08093AC0 + add r0, sp, #4 + movs r2, #6 + bl memcpy + adds r0, r7, #0 + bl _call_via_r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #1 + bne _08093AC4 + movs r1, #0x36 + ldrsh r0, [r7, r1] + lsls r0, r0, #1 + add r0, sp + adds r0, #4 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + beq _08093AC4 + 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, r0, #4 + movs r2, #0x36 + ldrsh r1, [r7, r2] + lsls r1, r1, #1 + add r1, sp + adds r1, #4 + movs r2, #0 + ldrsh r3, [r1, r2] + str r3, [sp] + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080928F8 + ldrh r1, [r4] + ldrh r0, [r6, #0x10] + adds r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r5] + ldrh r0, [r6, #0x12] + adds r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r6, #0 + bl sub_0808E454 + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r6] + b _08093AE8 + .align 2, 0 +_08093AC0: .4byte gUnknown_84E6416 +_08093AC4: + mov r1, r8 + cmp r1, #0xff + bne _08093AE8 + adds r0, r6, #0 + bl sub_0808E56C + ldrb r0, [r6] + movs r1, #8 + 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] +_08093AE8: + mov r0, r8 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093A34 + + thumb_func_start sub_08093AF8 +sub_08093AF8: @ 0x08093AF8 + push {lr} + ldr r2, _08093B08 + bl sub_08093A34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08093B08: .4byte sub_080971CC + thumb_func_end sub_08093AF8 + + thumb_func_start sub_08093B0C +sub_08093B0C: @ 0x08093B0C + push {lr} + ldr r2, _08093B1C + bl sub_08093A34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08093B1C: .4byte sub_08097254 + thumb_func_end sub_08093B0C + + thumb_func_start sub_08093B20 +sub_08093B20: @ 0x08093B20 + push {lr} + bl sub_08093AF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08093B32 + movs r0, #0 + b _08093B34 +_08093B32: + movs r0, #1 +_08093B34: + pop {r1} + bx r1 + thumb_func_end sub_08093B20 + + thumb_func_start sub_08093B38 +sub_08093B38: @ 0x08093B38 + push {lr} + bl sub_08093B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08093B4A + movs r0, #0 + b _08093B4C +_08093B4A: + movs r0, #1 +_08093B4C: + pop {r1} + bx r1 + thumb_func_end sub_08093B38 + + thumb_func_start sub_08093B50 +sub_08093B50: @ 0x08093B50 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093AF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08093B6A + cmp r0, #0xff + bne _08093B96 + movs r0, #1 + b _08093B98 +_08093B6A: + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08093170 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808E930 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080922DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08092428 +_08093B96: + movs r0, #0 +_08093B98: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093B50 + + thumb_func_start sub_08093BA0 +sub_08093BA0: @ 0x08093BA0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093BCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093BA0 + + thumb_func_start sub_08093BCC +sub_08093BCC: @ 0x08093BCC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093BE0 + movs r0, #0 + b _08093BF0 +_08093BE0: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08093BF0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093BCC + + thumb_func_start sub_08093BF8 +sub_08093BF8: @ 0x08093BF8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093C24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093BF8 + + thumb_func_start sub_08093C24 +sub_08093C24: @ 0x08093C24 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093C38 + movs r0, #0 + b _08093C48 +_08093C38: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08093C48: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093C24 + + thumb_func_start sub_08093C50 +sub_08093C50: @ 0x08093C50 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #2 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093C7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093C50 + + thumb_func_start sub_08093C7C +sub_08093C7C: @ 0x08093C7C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093C90 + movs r0, #0 + b _08093CA0 +_08093C90: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08093CA0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093C7C + + thumb_func_start sub_08093CA8 +sub_08093CA8: @ 0x08093CA8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #2 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093CD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093CA8 + + thumb_func_start sub_08093CD4 +sub_08093CD4: @ 0x08093CD4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093CE8 + movs r0, #0 + b _08093CF8 +_08093CE8: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08093CF8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093CD4 + + thumb_func_start sub_08093D00 +sub_08093D00: @ 0x08093D00 + movs r2, #1 + strh r2, [r0, #0x32] + strh r1, [r0, #0x34] + bx lr + thumb_func_end sub_08093D00 + + thumb_func_start sub_08093D08 +sub_08093D08: @ 0x08093D08 + push {lr} + ldrh r0, [r1, #0x34] + subs r0, #1 + strh r0, [r1, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08093D1A + movs r0, #0 + b _08093D20 +_08093D1A: + movs r0, #2 + strh r0, [r1, #0x32] + movs r0, #1 +_08093D20: + pop {r1} + bx r1 + thumb_func_end sub_08093D08 + + thumb_func_start sub_08093D24 +sub_08093D24: @ 0x08093D24 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #1 + bl sub_08093D00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093D24 + + thumb_func_start sub_08093D44 +sub_08093D44: @ 0x08093D44 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #2 + bl sub_08093D00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093D44 + + thumb_func_start sub_08093D64 +sub_08093D64: @ 0x08093D64 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #4 + bl sub_08093D00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093D64 + + thumb_func_start sub_08093D84 +sub_08093D84: @ 0x08093D84 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #8 + bl sub_08093D00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093D84 + + thumb_func_start sub_08093DA4 +sub_08093DA4: @ 0x08093DA4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08093D00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093DA4 + + thumb_func_start sub_08093DC4 +sub_08093DC4: @ 0x08093DC4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093DE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093DC4 + + thumb_func_start sub_08093DE4 +sub_08093DE4: @ 0x08093DE4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093DF6 + movs r0, #0 + b _08093DFC +_08093DF6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08093DFC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093DE4 + + thumb_func_start sub_08093E04 +sub_08093E04: @ 0x08093E04 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093E24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093E04 + + thumb_func_start sub_08093E24 +sub_08093E24: @ 0x08093E24 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093E36 + movs r0, #0 + b _08093E3C +_08093E36: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08093E3C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093E24 + + thumb_func_start sub_08093E44 +sub_08093E44: @ 0x08093E44 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093E64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093E44 + + thumb_func_start sub_08093E64 +sub_08093E64: @ 0x08093E64 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093E76 + movs r0, #0 + b _08093E7C +_08093E76: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08093E7C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093E64 + + thumb_func_start sub_08093E84 +sub_08093E84: @ 0x08093E84 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093EA4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093E84 + + thumb_func_start sub_08093EA4 +sub_08093EA4: @ 0x08093EA4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093EB6 + movs r0, #0 + b _08093EBC +_08093EB6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08093EBC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093EA4 + + thumb_func_start sub_08093EC4 +sub_08093EC4: @ 0x08093EC4 + push {r4, r5, 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, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_0808E930 + mov r0, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080923E0 + adds r2, r6, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #1 + strh r0, [r6, #0x32] + strh r5, [r6, #0x34] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08093EC4 + + thumb_func_start sub_08093F0C +sub_08093F0C: @ 0x08093F0C + push {lr} + ldrh r0, [r1, #0x34] + subs r0, #1 + strh r0, [r1, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08093F1E + movs r0, #0 + b _08093F30 +_08093F1E: + movs r0, #2 + 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, #1 +_08093F30: + pop {r1} + bx r1 + thumb_func_end sub_08093F0C + + thumb_func_start sub_08093F34 +sub_08093F34: @ 0x08093F34 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrh r1, [r4, #0x34] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08093F5E + adds r3, r4, #0 + adds r3, #0x2c + ldrb r2, [r3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1a + adds r1, #1 + movs r0, #0x3f + ands r1, r0 + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08093F5E: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08093F34 + + thumb_func_start sub_08093F70 +sub_08093F70: @ 0x08093F70 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x20 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093F70 + + thumb_func_start sub_08093FA8 +sub_08093FA8: @ 0x08093FA8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x20 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093FA8 + + thumb_func_start sub_08093FE0 +sub_08093FE0: @ 0x08093FE0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x20 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08093FE0 + + thumb_func_start sub_08094018 +sub_08094018: @ 0x08094018 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x20 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094018 + + thumb_func_start sub_08094050 +sub_08094050: @ 0x08094050 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x10 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094050 + + thumb_func_start sub_08094088 +sub_08094088: @ 0x08094088 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x10 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094088 + + thumb_func_start sub_080940C0 +sub_080940C0: @ 0x080940C0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x10 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080940C0 + + thumb_func_start sub_080940F8 +sub_080940F8: @ 0x080940F8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_080922DC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x10 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080940F8 + + thumb_func_start sub_08094130 +sub_08094130: @ 0x08094130 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_080922EC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094130 + + thumb_func_start sub_08094168 +sub_08094168: @ 0x08094168 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_080922EC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094168 + + thumb_func_start sub_080941A0 +sub_080941A0: @ 0x080941A0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_080922EC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080941A0 + + thumb_func_start sub_080941D8 +sub_080941D8: @ 0x080941D8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_080922EC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080941D8 + + thumb_func_start sub_08094210 +sub_08094210: @ 0x08094210 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_080922FC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094210 + + thumb_func_start sub_08094248 +sub_08094248: @ 0x08094248 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_080922FC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094248 + + thumb_func_start sub_08094280 +sub_08094280: @ 0x08094280 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_080922FC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094280 + + thumb_func_start sub_080942B8 +sub_080942B8: @ 0x080942B8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_080922FC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080942B8 + + thumb_func_start sub_080942F0 +sub_080942F0: @ 0x080942F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #2 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094310 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080942F0 + + thumb_func_start sub_08094310 +sub_08094310: @ 0x08094310 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094322 + movs r0, #0 + b _08094328 +_08094322: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094328: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094310 + + thumb_func_start sub_08094330 +sub_08094330: @ 0x08094330 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #2 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094350 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094330 + + thumb_func_start sub_08094350 +sub_08094350: @ 0x08094350 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094362 + movs r0, #0 + b _08094368 +_08094362: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094368: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094350 + + thumb_func_start sub_08094370 +sub_08094370: @ 0x08094370 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #2 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094390 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094370 + + thumb_func_start sub_08094390 +sub_08094390: @ 0x08094390 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080943A2 + movs r0, #0 + b _080943A8 +_080943A2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080943A8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094390 + + thumb_func_start sub_080943B0 +sub_080943B0: @ 0x080943B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #2 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080943D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080943B0 + + thumb_func_start sub_080943D0 +sub_080943D0: @ 0x080943D0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080943E2 + movs r0, #0 + b _080943E8 +_080943E2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080943E8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080943D0 + + thumb_func_start sub_080943F0 +sub_080943F0: @ 0x080943F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #3 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094410 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080943F0 + + thumb_func_start sub_08094410 +sub_08094410: @ 0x08094410 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094422 + movs r0, #0 + b _08094428 +_08094422: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094428: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094410 + + thumb_func_start sub_08094430 +sub_08094430: @ 0x08094430 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #3 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094450 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094430 + + thumb_func_start sub_08094450 +sub_08094450: @ 0x08094450 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094462 + movs r0, #0 + b _08094468 +_08094462: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094468: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094450 + + thumb_func_start sub_08094470 +sub_08094470: @ 0x08094470 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #3 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094490 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094470 + + thumb_func_start sub_08094490 +sub_08094490: @ 0x08094490 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080944A2 + movs r0, #0 + b _080944A8 +_080944A2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080944A8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094490 + + thumb_func_start sub_080944B0 +sub_080944B0: @ 0x080944B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #3 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080944D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080944B0 + + thumb_func_start sub_080944D0 +sub_080944D0: @ 0x080944D0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080944E2 + movs r0, #0 + b _080944E8 +_080944E2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080944E8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080944D0 + + thumb_func_start sub_080944F0 +sub_080944F0: @ 0x080944F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #4 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094510 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080944F0 + + thumb_func_start sub_08094510 +sub_08094510: @ 0x08094510 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094522 + movs r0, #0 + b _08094528 +_08094522: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094528: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094510 + + thumb_func_start sub_08094530 +sub_08094530: @ 0x08094530 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #4 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094550 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094530 + + thumb_func_start sub_08094550 +sub_08094550: @ 0x08094550 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094562 + movs r0, #0 + b _08094568 +_08094562: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094568: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094550 + + thumb_func_start sub_08094570 +sub_08094570: @ 0x08094570 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #4 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094590 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094570 + + thumb_func_start sub_08094590 +sub_08094590: @ 0x08094590 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080945A2 + movs r0, #0 + b _080945A8 +_080945A2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080945A8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094590 + + thumb_func_start sub_080945B0 +sub_080945B0: @ 0x080945B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #4 + bl sub_0809339C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080945D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080945B0 + + thumb_func_start sub_080945D0 +sub_080945D0: @ 0x080945D0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080945E2 + movs r0, #0 + b _080945E8 +_080945E2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080945E8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080945D0 + + thumb_func_start sub_080945F0 +sub_080945F0: @ 0x080945F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + bl sub_080933F8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094610 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080945F0 + + thumb_func_start sub_08094610 +sub_08094610: @ 0x08094610 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094622 + movs r0, #0 + b _08094628 +_08094622: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094628: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094610 + + thumb_func_start sub_08094630 +sub_08094630: @ 0x08094630 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + bl sub_080933F8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094650 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094630 + + thumb_func_start sub_08094650 +sub_08094650: @ 0x08094650 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094662 + movs r0, #0 + b _08094668 +_08094662: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094668: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094650 + + thumb_func_start sub_08094670 +sub_08094670: @ 0x08094670 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + bl sub_080933F8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094690 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094670 + + thumb_func_start sub_08094690 +sub_08094690: @ 0x08094690 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080946A2 + movs r0, #0 + b _080946A8 +_080946A2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080946A8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094690 + + thumb_func_start sub_080946B0 +sub_080946B0: @ 0x080946B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + bl sub_080933F8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080946D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080946B0 + + thumb_func_start sub_080946D0 +sub_080946D0: @ 0x080946D0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080946E2 + movs r0, #0 + b _080946E8 +_080946E2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080946E8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080946D0 + + thumb_func_start sub_080946F0 +sub_080946F0: @ 0x080946F0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + adds r1, r3, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + movs r2, #0 + bl sub_08097304 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0808E930 + movs r0, #1 + strh r0, [r5, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080946F0 + + thumb_func_start sub_0809471C +sub_0809471C: @ 0x0809471C + push {lr} + ldrb r2, [r0, #0x18] + lsrs r2, r2, #4 + adds r3, r1, #0 + adds r3, #0x2a + ldrb r3, [r3] + bl sub_080946F0 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809471C + + thumb_func_start sub_08094734 +sub_08094734: @ 0x08094734 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_0809732C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094748 + movs r0, #0 + b _0809474E +_08094748: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_0809474E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08094734 + + thumb_func_start sub_08094754 +sub_08094754: @ 0x08094754 + push {r4, r5, lr} + sub sp, #4 + adds r5, r1, #0 + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + str r1, [sp] + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08093934 + adds r0, r4, #0 + bl sub_0809231C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08094754 + + thumb_func_start sub_08094788 +sub_08094788: @ 0x08094788 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + bl sub_08094754 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080947A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094788 + + thumb_func_start sub_080947A8 +sub_080947A8: @ 0x080947A8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080947BC + movs r0, #0 + b _080947CA +_080947BC: + movs r0, #2 + strh r0, [r5, #0x32] + ldrb r1, [r4] + subs r0, #0x23 + ands r0, r1 + strb r0, [r4] + movs r0, #1 +_080947CA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080947A8 + + thumb_func_start sub_080947D0 +sub_080947D0: @ 0x080947D0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + bl sub_08094754 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080947F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080947D0 + + thumb_func_start sub_080947F0 +sub_080947F0: @ 0x080947F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094804 + movs r0, #0 + b _08094812 +_08094804: + movs r0, #2 + strh r0, [r5, #0x32] + ldrb r1, [r4] + subs r0, #0x23 + ands r0, r1 + strb r0, [r4] + movs r0, #1 +_08094812: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080947F0 + + thumb_func_start sub_08094818 +sub_08094818: @ 0x08094818 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + bl sub_08094754 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094838 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094818 + + thumb_func_start sub_08094838 +sub_08094838: @ 0x08094838 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809484C + movs r0, #0 + b _0809485A +_0809484C: + movs r0, #2 + strh r0, [r5, #0x32] + ldrb r1, [r4] + subs r0, #0x23 + ands r0, r1 + strb r0, [r4] + movs r0, #1 +_0809485A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094838 + + thumb_func_start sub_08094860 +sub_08094860: @ 0x08094860 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + bl sub_08094754 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094880 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094860 + + thumb_func_start sub_08094880 +sub_08094880: @ 0x08094880 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094894 + movs r0, #0 + b _080948A2 +_08094894: + movs r0, #2 + strh r0, [r5, #0x32] + ldrb r1, [r4] + subs r0, #0x23 + ands r0, r1 + strb r0, [r4] + movs r0, #1 +_080948A2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094880 + + thumb_func_start sub_080948A8 +sub_080948A8: @ 0x080948A8 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080948F2 + movs r1, #0x10 + ldrsh r0, [r5, r1] + movs r2, #0x12 + ldrsh r1, [r5, r2] + ldr r4, _08094900 + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, #3 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r4 + movs r4, #0x10 + ldrsh r2, [r3, r4] + movs r4, #0x12 + ldrsh r3, [r3, r4] + bl sub_08092468 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0809327C +_080948F2: + movs r0, #1 + strh r0, [r6, #0x32] + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08094900: .4byte gUnknown_2036FF0 + thumb_func_end sub_080948A8 + + thumb_func_start sub_08094904 +sub_08094904: @ 0x08094904 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094956 + movs r1, #0x10 + ldrsh r0, [r5, r1] + movs r2, #0x12 + ldrsh r1, [r5, r2] + ldr r4, _08094964 + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, #3 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r4 + movs r4, #0x10 + ldrsh r2, [r3, r4] + movs r4, #0x12 + ldrsh r3, [r3, r4] + bl sub_08092468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08093170 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0809327C +_08094956: + movs r0, #1 + strh r0, [r6, #0x32] + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08094964: .4byte gUnknown_2036FF0 + thumb_func_end sub_08094904 + + thumb_func_start sub_08094968 +sub_08094968: @ 0x08094968 + ldrb r2, [r0, #1] + movs r3, #2 + orrs r2, r3 + strb r2, [r0, #1] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + .align 2, 0 + thumb_func_end sub_08094968 + + thumb_func_start sub_08094978 +sub_08094978: @ 0x08094978 + ldrb r3, [r0, #1] + movs r2, #3 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r0, #1] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + thumb_func_end sub_08094978 + + thumb_func_start sub_08094988 +sub_08094988: @ 0x08094988 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #1 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080949B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094988 + + thumb_func_start sub_080949B4 +sub_080949B4: @ 0x080949B4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080949C8 + movs r0, #0 + b _080949D8 +_080949C8: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080949D8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080949B4 + + thumb_func_start sub_080949E0 +sub_080949E0: @ 0x080949E0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #1 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094A0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080949E0 + + thumb_func_start sub_08094A0C +sub_08094A0C: @ 0x08094A0C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094A20 + movs r0, #0 + b _08094A30 +_08094A20: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094A30: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094A0C + + thumb_func_start sub_08094A38 +sub_08094A38: @ 0x08094A38 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #1 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094A64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094A38 + + thumb_func_start sub_08094A64 +sub_08094A64: @ 0x08094A64 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094A78 + movs r0, #0 + b _08094A88 +_08094A78: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094A88: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094A64 + + thumb_func_start sub_08094A90 +sub_08094A90: @ 0x08094A90 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #1 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094ABC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094A90 + + thumb_func_start sub_08094ABC +sub_08094ABC: @ 0x08094ABC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094AD0 + movs r0, #0 + b _08094AE0 +_08094AD0: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094AE0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094ABC + + thumb_func_start sub_08094AE8 +sub_08094AE8: @ 0x08094AE8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094AE8 + + thumb_func_start sub_08094B14 +sub_08094B14: @ 0x08094B14 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094B28 + movs r0, #0 + b _08094B38 +_08094B28: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094B38: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094B14 + + thumb_func_start sub_08094B40 +sub_08094B40: @ 0x08094B40 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094B6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094B40 + + thumb_func_start sub_08094B6C +sub_08094B6C: @ 0x08094B6C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094B80 + movs r0, #0 + b _08094B90 +_08094B80: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094B90: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094B6C + + thumb_func_start sub_08094B98 +sub_08094B98: @ 0x08094B98 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094BC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094B98 + + thumb_func_start sub_08094BC4 +sub_08094BC4: @ 0x08094BC4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094BD8 + movs r0, #0 + b _08094BE8 +_08094BD8: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094BE8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094BC4 + + thumb_func_start sub_08094BF0 +sub_08094BF0: @ 0x08094BF0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094C1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094BF0 + + thumb_func_start sub_08094C1C +sub_08094C1C: @ 0x08094C1C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094C30 + movs r0, #0 + b _08094C40 +_08094C30: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094C40: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094C1C + + thumb_func_start sub_08094C48 +sub_08094C48: @ 0x08094C48 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094C74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094C48 + + thumb_func_start sub_08094C74 +sub_08094C74: @ 0x08094C74 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094C88 + movs r0, #0 + b _08094C98 +_08094C88: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094C98: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094C74 + + thumb_func_start sub_08094CA0 +sub_08094CA0: @ 0x08094CA0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094CCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094CA0 + + thumb_func_start sub_08094CCC +sub_08094CCC: @ 0x08094CCC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094CE0 + movs r0, #0 + b _08094CF0 +_08094CE0: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094CF0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094CCC + + thumb_func_start sub_08094CF8 +sub_08094CF8: @ 0x08094CF8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094D24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094CF8 + + thumb_func_start sub_08094D24 +sub_08094D24: @ 0x08094D24 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094D38 + movs r0, #0 + b _08094D48 +_08094D38: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094D48: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094D24 + + thumb_func_start sub_08094D50 +sub_08094D50: @ 0x08094D50 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #0 + bl sub_080939F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094D7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094D50 + + thumb_func_start sub_08094D7C +sub_08094D7C: @ 0x08094D7C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094D90 + movs r0, #0 + b _08094DA0 +_08094D90: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094DA0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094D7C + + thumb_func_start sub_08094DA8 +sub_08094DA8: @ 0x08094DA8 + push {lr} + ldr r3, _08094DBC + ldrb r2, [r0, #6] + adds r2, r2, r3 + ldrb r2, [r2] + bl sub_0809327C + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_08094DBC: .4byte gUnknown_84DDA21 + thumb_func_end sub_08094DA8 + + thumb_func_start sub_08094DC0 +sub_08094DC0: @ 0x08094DC0 + push {lr} + movs r2, #1 + movs r3, #0x14 + bl sub_080946F0 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08094DC0 + + thumb_func_start sub_08094DD0 +sub_08094DD0: @ 0x08094DD0 + ldrb r3, [r0, #3] + movs r2, #3 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r0, #3] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + thumb_func_end sub_08094DD0 + + thumb_func_start sub_08094DE0 +sub_08094DE0: @ 0x08094DE0 + ldrb r2, [r0, #3] + movs r3, #2 + orrs r2, r3 + strb r2, [r0, #3] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + .align 2, 0 + thumb_func_end sub_08094DE0 + + thumb_func_start sub_08094DF0 +sub_08094DF0: @ 0x08094DF0 + ldrb r2, [r0, #1] + movs r3, #0x10 + orrs r2, r3 + strb r2, [r0, #1] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + .align 2, 0 + thumb_func_end sub_08094DF0 + + thumb_func_start sub_08094E00 +sub_08094E00: @ 0x08094E00 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #5] + bl sub_0808E004 + ldrb r1, [r0, #0xc] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldrb r2, [r4, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #1 + strh r0, [r5, #0x32] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094E00 + + thumb_func_start sub_08094E2C +sub_08094E2C: @ 0x08094E2C + ldrb r2, [r0, #1] + movs r3, #0x20 + orrs r2, r3 + strb r2, [r0, #1] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + .align 2, 0 + thumb_func_end sub_08094E2C + + thumb_func_start sub_08094E3C +sub_08094E3C: @ 0x08094E3C + ldrb r3, [r0, #1] + movs r2, #0x21 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r0, #1] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + thumb_func_end sub_08094E3C + + thumb_func_start sub_08094E4C +sub_08094E4C: @ 0x08094E4C + push {r4, lr} + adds r4, r1, #0 + ldr r1, _08094E6C + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + bl sub_0808E0B8 + movs r0, #0 + bl sub_080B5270 + movs r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08094E6C: .4byte gUnknown_20388A8 + thumb_func_end sub_08094E4C + + thumb_func_start sub_08094E70 +sub_08094E70: @ 0x08094E70 + push {r4, lr} + adds r4, r1, #0 + ldr r1, _08094E90 + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + bl sub_0808E0B8 + movs r0, #0x21 + bl sub_080B5270 + movs r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08094E90: .4byte gUnknown_20388A8 + thumb_func_end sub_08094E70 + + thumb_func_start sub_08094E94 +sub_08094E94: @ 0x08094E94 + push {r4, lr} + adds r4, r1, #0 + ldr r1, _08094EB4 + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + bl sub_0808E0B8 + movs r0, #0x2e + bl sub_080B5270 + movs r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08094EB4: .4byte gUnknown_20388A8 + thumb_func_end sub_08094E94 + + thumb_func_start sub_08094EB8 +sub_08094EB8: @ 0x08094EB8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #6] + cmp r0, #0x3f + bne _08094ECE + adds r0, r4, #0 + bl sub_080B3CD0 + movs r0, #0 + b _08094EF6 +_08094ECE: + subs r0, #0x39 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08094EF0 + adds r0, r4, #0 + bl sub_08155CB4 + movs r0, #1 + strh r0, [r5, #0x32] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08094EFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08094EF6 +_08094EF0: + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08094EF6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08094EB8 + + thumb_func_start sub_08094EFC +sub_08094EFC: @ 0x08094EFC + push {r4, lr} + adds r4, r1, #0 + bl sub_08155CDC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08094F0E + movs r0, #0 + b _08094F14 +_08094F0E: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08094F14: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094EFC + + thumb_func_start sub_08094F1C +sub_08094F1C: @ 0x08094F1C + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_08097304 + movs r0, #1 + strh r0, [r4, #0x32] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094F1C + + thumb_func_start sub_08094F38 +sub_08094F38: @ 0x08094F38 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_0809732C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08094F54 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_080972E8 + movs r0, #2 + strh r0, [r4, #0x32] +_08094F54: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08094F38 + + thumb_func_start sub_08094F5C +sub_08094F5C: @ 0x08094F5C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r2, [r4, #1] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #5 + subs r0, #0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08094F8E + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #3 + strh r0, [r5, #0x32] +_08094F8E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094F5C + + thumb_func_start sub_08094F98 +sub_08094F98: @ 0x08094F98 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_08097304 + movs r0, #1 + strh r0, [r4, #0x32] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094F98 + + thumb_func_start sub_08094FB4 +sub_08094FB4: @ 0x08094FB4 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_0809732C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08094FD0 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_080972E8 + movs r0, #2 + strh r0, [r4, #0x32] +_08094FD0: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08094FB4 + + thumb_func_start sub_08094FD8 +sub_08094FD8: @ 0x08094FD8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r2, [r4, #1] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #5 + subs r0, #0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r5, #0 + bl sub_080972EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809500A + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #3 + strh r0, [r5, #0x32] +_0809500A: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08094FD8 + + thumb_func_start sub_08095014 +sub_08095014: @ 0x08095014 + ldrb r2, [r0, #3] + movs r3, #4 + orrs r2, r3 + strb r2, [r0, #3] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + .align 2, 0 + thumb_func_end sub_08095014 + + thumb_func_start sub_08095024 +sub_08095024: @ 0x08095024 + ldrb r3, [r0, #3] + movs r2, #5 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r0, #3] + movs r0, #1 + strh r0, [r1, #0x32] + bx lr + thumb_func_end sub_08095024 + + thumb_func_start sub_08095034 +sub_08095034: @ 0x08095034 + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r4, #0 + bl sub_08008140 + 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, #1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08095034 + + thumb_func_start sub_08095064 +sub_08095064: @ 0x08095064 + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4, #1] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #1] + lsrs r1, r1, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + movs r3, #0 + adds r0, r4, #0 + bl sub_08006F70 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095064 + + thumb_func_start sub_08095094 +sub_08095094: @ 0x08095094 + ldrb r1, [r0, #3] + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #3] + movs r0, #1 + bx lr + thumb_func_end sub_08095094 + + thumb_func_start sub_080950A0 +sub_080950A0: @ 0x080950A0 + ldrb r2, [r0, #3] + movs r1, #9 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #3] + movs r0, #1 + bx lr + .align 2, 0 + thumb_func_end sub_080950A0 + + thumb_func_start sub_080950B0 +sub_080950B0: @ 0x080950B0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r2, #1 + bl sub_080934D0 + 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_08007F9C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080950E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080950B0 + + thumb_func_start sub_080950E4 +sub_080950E4: @ 0x080950E4 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080950F6 + movs r0, #0 + b _08095108 +_080950F6: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095108: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080950E4 + + thumb_func_start sub_08095110 +sub_08095110: @ 0x08095110 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r2, #1 + bl sub_080934D0 + 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, #1 + bl sub_08008008 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08095144 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095110 + + thumb_func_start sub_08095144 +sub_08095144: @ 0x08095144 + push {r4, lr} + adds r4, r1, #0 + bl sub_080934FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095156 + movs r0, #0 + b _08095168 +_08095156: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095168: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095144 + + thumb_func_start sub_08095170 +sub_08095170: @ 0x08095170 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_0809339C + 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, #2 + bl sub_08008008 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080951A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095170 + + thumb_func_start sub_080951A4 +sub_080951A4: @ 0x080951A4 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080951B6 + movs r0, #0 + b _080951C8 +_080951B6: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080951C8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080951A4 + + thumb_func_start sub_080951D0 +sub_080951D0: @ 0x080951D0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_0809339C + 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, #3 + bl sub_08008008 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08095204 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080951D0 + + thumb_func_start sub_08095204 +sub_08095204: @ 0x08095204 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095216 + movs r0, #0 + b _08095228 +_08095216: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095228: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095204 + + thumb_func_start sub_08095230 +sub_08095230: @ 0x08095230 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + adds r1, r4, #0 + bl sub_0808E930 + adds r0, r5, #0 + bl sub_0808E56C + adds r0, r4, #0 + bl sub_0809236C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08092428 + adds r2, r6, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08095230 + + thumb_func_start sub_08095270 +sub_08095270: @ 0x08095270 + push {lr} + movs r2, #1 + bl sub_08095230 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095270 + + thumb_func_start sub_08095280 +sub_08095280: @ 0x08095280 + push {lr} + movs r2, #2 + bl sub_08095230 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095280 + + thumb_func_start sub_08095290 +sub_08095290: @ 0x08095290 + push {lr} + movs r2, #3 + bl sub_08095230 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095290 + + thumb_func_start sub_080952A0 +sub_080952A0: @ 0x080952A0 + push {lr} + movs r2, #4 + bl sub_08095230 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080952A0 + + thumb_func_start sub_080952B0 +sub_080952B0: @ 0x080952B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_0809232C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080952B0 + + thumb_func_start sub_080952D4 +sub_080952D4: @ 0x080952D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_0809232C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080952D4 + + thumb_func_start sub_080952F8 +sub_080952F8: @ 0x080952F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_0809232C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080952F8 + + thumb_func_start sub_0809531C +sub_0809531C: @ 0x0809531C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_0809232C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809531C + + thumb_func_start sub_08095340 +sub_08095340: @ 0x08095340 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_0809234C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095340 + + thumb_func_start sub_08095364 +sub_08095364: @ 0x08095364 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_0809234C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095364 + + thumb_func_start sub_08095388 +sub_08095388: @ 0x08095388 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_0809234C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095388 + + thumb_func_start sub_080953AC +sub_080953AC: @ 0x080953AC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_0809234C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080953AC + + thumb_func_start sub_080953D0 +sub_080953D0: @ 0x080953D0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_0809235C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080953D0 + + thumb_func_start sub_080953F4 +sub_080953F4: @ 0x080953F4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_0809235C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080953F4 + + thumb_func_start sub_08095418 +sub_08095418: @ 0x08095418 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_0809235C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095418 + + thumb_func_start sub_0809543C +sub_0809543C: @ 0x0809543C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_0809235C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_080946F0 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809543C + + thumb_func_start sub_08095460 +sub_08095460: @ 0x08095460 + push {r4, lr} + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_080970C0 + adds r4, #0x2c + ldrb r1, [r4] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08095460 + + thumb_func_start sub_0809547C +sub_0809547C: @ 0x0809547C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + bl sub_080970C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095492 + movs r0, #0 + b _080954AE +_08095492: + adds r0, r4, #0 + bl sub_0808E56C + ldrb r0, [r4] + movs r1, #8 + 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, #1 +_080954AE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809547C + + thumb_func_start sub_080954B4 +sub_080954B4: @ 0x080954B4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08095460 + movs r0, #1 + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080954D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080954B4 + + thumb_func_start sub_080954D4 +sub_080954D4: @ 0x080954D4 + push {r4, lr} + adds r4, r1, #0 + bl sub_0809547C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080954E6 + movs r0, #0 + b _080954EC +_080954E6: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_080954EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080954D4 + + thumb_func_start sub_080954F4 +sub_080954F4: @ 0x080954F4 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + ldr r0, [sp, #0x14] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + adds r0, r6, #0 + adds r2, r4, #0 + bl sub_08093934 + adds r0, r4, #0 + bl sub_0809232C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007ED8 + adds r0, r6, #0 + bl sub_08097780 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080954F4 + + thumb_func_start sub_08095538 +sub_08095538: @ 0x08095538 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #0 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095538 + + thumb_func_start sub_08095564 +sub_08095564: @ 0x08095564 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095578 + movs r0, #0 + b _08095588 +_08095578: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095588: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095564 + + thumb_func_start sub_08095590 +sub_08095590: @ 0x08095590 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #0 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080955BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095590 + + thumb_func_start sub_080955BC +sub_080955BC: @ 0x080955BC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080955D0 + movs r0, #0 + b _080955E0 +_080955D0: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080955E0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080955BC + + thumb_func_start sub_080955E8 +sub_080955E8: @ 0x080955E8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #0 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095614 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080955E8 + + thumb_func_start sub_08095614 +sub_08095614: @ 0x08095614 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095628 + movs r0, #0 + b _08095638 +_08095628: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095638: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095614 + + thumb_func_start sub_08095640 +sub_08095640: @ 0x08095640 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #0 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809566C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095640 + + thumb_func_start sub_0809566C +sub_0809566C: @ 0x0809566C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095680 + movs r0, #0 + b _08095690 +_08095680: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095690: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809566C + + thumb_func_start sub_08095698 +sub_08095698: @ 0x08095698 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #1 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080956C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095698 + + thumb_func_start sub_080956C4 +sub_080956C4: @ 0x080956C4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080956D8 + movs r0, #0 + b _080956E8 +_080956D8: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080956E8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080956C4 + + thumb_func_start sub_080956F0 +sub_080956F0: @ 0x080956F0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #1 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809571C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080956F0 + + thumb_func_start sub_0809571C +sub_0809571C: @ 0x0809571C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095730 + movs r0, #0 + b _08095740 +_08095730: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095740: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809571C + + thumb_func_start sub_08095748 +sub_08095748: @ 0x08095748 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #1 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095774 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095748 + + thumb_func_start sub_08095774 +sub_08095774: @ 0x08095774 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095788 + movs r0, #0 + b _08095798 +_08095788: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095798: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095774 + + thumb_func_start sub_080957A0 +sub_080957A0: @ 0x080957A0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #1 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080957CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080957A0 + + thumb_func_start sub_080957CC +sub_080957CC: @ 0x080957CC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080957E0 + movs r0, #0 + b _080957F0 +_080957E0: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080957F0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080957CC + + thumb_func_start sub_080957F8 +sub_080957F8: @ 0x080957F8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095824 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080957F8 + + thumb_func_start sub_08095824 +sub_08095824: @ 0x08095824 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095838 + movs r0, #0 + b _08095848 +_08095838: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095848: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095824 + + thumb_func_start sub_08095850 +sub_08095850: @ 0x08095850 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809587C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095850 + + thumb_func_start sub_0809587C +sub_0809587C: @ 0x0809587C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095890 + movs r0, #0 + b _080958A0 +_08095890: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080958A0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809587C + + thumb_func_start sub_080958A8 +sub_080958A8: @ 0x080958A8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #3 + movs r3, #2 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080958D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080958A8 + + thumb_func_start sub_080958D4 +sub_080958D4: @ 0x080958D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080958E8 + movs r0, #0 + b _080958F8 +_080958E8: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_080958F8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080958D4 + + thumb_func_start sub_08095900 +sub_08095900: @ 0x08095900 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #4 + movs r3, #2 + bl sub_080954F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809592C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095900 + + thumb_func_start sub_0809592C +sub_0809592C: @ 0x0809592C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08093B20 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095940 + movs r0, #0 + b _08095950 +_08095940: + ldrb r0, [r4, #2] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #2] + movs r0, #2 + strh r0, [r5, #0x32] + movs r0, #1 +_08095950: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809592C + + thumb_func_start sub_08095958 +sub_08095958: @ 0x08095958 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_0809236C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095958 + + thumb_func_start sub_08095990 +sub_08095990: @ 0x08095990 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #2 + bl sub_0809236C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095990 + + thumb_func_start sub_080959C8 +sub_080959C8: @ 0x080959C8 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #3 + bl sub_0809236C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080959C8 + + thumb_func_start sub_08095A00 +sub_08095A00: @ 0x08095A00 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #4 + bl sub_0809236C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_08093EC4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08093F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095A00 + + thumb_func_start sub_08095A38 +sub_08095A38: @ 0x08095A38 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08093300 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_0809232C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EF4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095A38 + + thumb_func_start sub_08095A70 +sub_08095A70: @ 0x08095A70 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_08095A38 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095A90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095A70 + + thumb_func_start sub_08095A90 +sub_08095A90: @ 0x08095A90 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095AA2 + movs r0, #0 + b _08095AA8 +_08095AA2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095AA8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095A90 + + thumb_func_start sub_08095AB0 +sub_08095AB0: @ 0x08095AB0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_08095A38 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095AD0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095AB0 + + thumb_func_start sub_08095AD0 +sub_08095AD0: @ 0x08095AD0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095AE2 + movs r0, #0 + b _08095AE8 +_08095AE2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095AE8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095AD0 + + thumb_func_start sub_08095AF0 +sub_08095AF0: @ 0x08095AF0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_08095A38 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095B10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095AF0 + + thumb_func_start sub_08095B10 +sub_08095B10: @ 0x08095B10 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095B22 + movs r0, #0 + b _08095B28 +_08095B22: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095B28: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095B10 + + thumb_func_start sub_08095B30 +sub_08095B30: @ 0x08095B30 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_08095A38 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095B50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095B30 + + thumb_func_start sub_08095B50 +sub_08095B50: @ 0x08095B50 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095B62 + movs r0, #0 + b _08095B68 +_08095B62: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095B68: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095B50 + + thumb_func_start sub_08095B70 +sub_08095B70: @ 0x08095B70 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08093300 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_0809236C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080923E0 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08095B70 + + thumb_func_start sub_08095BA0 +sub_08095BA0: @ 0x08095BA0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_08095B70 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095BC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095BA0 + + thumb_func_start sub_08095BC0 +sub_08095BC0: @ 0x08095BC0 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095BD2 + movs r0, #0 + b _08095BD8 +_08095BD2: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095BD8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095BC0 + + thumb_func_start sub_08095BE0 +sub_08095BE0: @ 0x08095BE0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_08095B70 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095BE0 + + thumb_func_start sub_08095C00 +sub_08095C00: @ 0x08095C00 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095C12 + movs r0, #0 + b _08095C18 +_08095C12: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095C18: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095C00 + + thumb_func_start sub_08095C20 +sub_08095C20: @ 0x08095C20 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_08095B70 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095C40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095C20 + + thumb_func_start sub_08095C40 +sub_08095C40: @ 0x08095C40 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095C52 + movs r0, #0 + b _08095C58 +_08095C52: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095C58: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095C40 + + thumb_func_start sub_08095C60 +sub_08095C60: @ 0x08095C60 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_08095B70 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095C80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095C60 + + thumb_func_start sub_08095C80 +sub_08095C80: @ 0x08095C80 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095C92 + movs r0, #0 + b _08095C98 +_08095C92: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095C98: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095C80 + + thumb_func_start sub_08095CA0 +sub_08095CA0: @ 0x08095CA0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08093300 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_0809234C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EF4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095CA0 + + thumb_func_start sub_08095CD8 +sub_08095CD8: @ 0x08095CD8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_08095CA0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095CF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095CD8 + + thumb_func_start sub_08095CF8 +sub_08095CF8: @ 0x08095CF8 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095D0A + movs r0, #0 + b _08095D10 +_08095D0A: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095D10: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095CF8 + + thumb_func_start sub_08095D18 +sub_08095D18: @ 0x08095D18 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_08095CA0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095D38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095D18 + + thumb_func_start sub_08095D38 +sub_08095D38: @ 0x08095D38 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095D4A + movs r0, #0 + b _08095D50 +_08095D4A: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095D50: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095D38 + + thumb_func_start sub_08095D58 +sub_08095D58: @ 0x08095D58 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_08095CA0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095D78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095D58 + + thumb_func_start sub_08095D78 +sub_08095D78: @ 0x08095D78 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095D8A + movs r0, #0 + b _08095D90 +_08095D8A: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095D90: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095D78 + + thumb_func_start sub_08095D98 +sub_08095D98: @ 0x08095D98 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_08095CA0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095DB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08095D98 + + thumb_func_start sub_08095DB8 +sub_08095DB8: @ 0x08095DB8 + push {r4, lr} + adds r4, r1, #0 + bl sub_08093428 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095DCA + movs r0, #0 + b _08095DD0 +_08095DCA: + movs r0, #2 + strh r0, [r4, #0x32] + movs r0, #1 +_08095DD0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095DB8 + + thumb_func_start sub_08095DD8 +sub_08095DD8: @ 0x08095DD8 + push {r4, lr} + adds r4, r1, #0 + bl sub_0809792C + movs r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095DD8 + + thumb_func_start sub_08095DEC +sub_08095DEC: @ 0x08095DEC + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1b] + bl sub_080979CC + movs r0, #0 + strh r0, [r4, #0x26] + movs r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08095DEC + + thumb_func_start sub_08095E04 +sub_08095E04: @ 0x08095E04 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08095E16 + movs r0, #0 + b _08095E20 +_08095E16: + ldrb r0, [r2, #0x1b] + bl sub_080979CC + movs r0, #1 + strh r0, [r4, #0x32] +_08095E20: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08095E04 + + thumb_func_start sub_08095E28 +sub_08095E28: @ 0x08095E28 + movs r0, #1 + bx lr + thumb_func_end sub_08095E28 + + thumb_func_start sub_08095E2C +sub_08095E2C: @ 0x08095E2C + adds r1, #0x2c + ldrb r0, [r1] + movs r2, #0x40 + orrs r0, r2 + strb r0, [r1] + movs r0, #1 + bx lr + .align 2, 0 + thumb_func_end sub_08095E2C + + thumb_func_start sub_08095E3C +sub_08095E3C: @ 0x08095E3C + push {lr} + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08095E52 + adds r0, r1, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] +_08095E52: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095E3C + + thumb_func_start sub_08095E58 +sub_08095E58: @ 0x08095E58 + push {r4, lr} + adds r4, r0, #0 + ldrb r3, [r4, #1] + lsls r0, r3, #0x1c + cmp r0, #0 + bge _08095E80 + adds r2, r1, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + movs r1, #9 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4, #1] +_08095E80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095E58 + + thumb_func_start sub_08095E88 +sub_08095E88: @ 0x08095E88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08095EA0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08095F80 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08095E88 + + thumb_func_start sub_08095EA0 +sub_08095EA0: @ 0x08095EA0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r1, [r5, #1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #1] + ldrb r0, [r5, #5] + bl sub_0808E004 + adds r6, r0, #0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08095F04 + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x20] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r2, _08095EFC + adds r0, r0, r1 + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r1, [r4, #0x26] + ldrh r0, [r4, #0x22] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r2, _08095F00 + adds r0, r0, r1 + ldrh r2, [r2] + adds r0, r0, r2 + b _08095F2C + .align 2, 0 +_08095EFC: .4byte gUnknown_2021B38 +_08095F00: .4byte gUnknown_2021B3A +_08095F04: + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x20] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r1, [r4, #0x26] + ldrh r0, [r4, #0x22] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 +_08095F2C: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r6, #8] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldrh r0, [r6, #0xa] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + bgt _08095F54 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08095F5C +_08095F54: + ldrb r0, [r5, #1] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #1] +_08095F5C: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xaf + bgt _08095F70 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08095F78 +_08095F70: + ldrb r0, [r5, #1] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #1] +_08095F78: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095EA0 + + thumb_func_start sub_08095F80 +sub_08095F80: @ 0x08095F80 + push {lr} + adds r2, r1, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #5 + rsbs r3, r3, #0 + ands r3, r1 + strb r3, [r2] + ldrb r1, [r0, #1] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08095FA2 + movs r1, #4 + adds r0, r3, #0 + orrs r0, r1 + strb r0, [r2] +_08095FA2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08095F80 + + thumb_func_start sub_08095FA8 +sub_08095FA8: @ 0x08095FA8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08096098 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080960C0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809611C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809615C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080961DC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809622C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080962E0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096330 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08095FA8 + + thumb_func_start sub_08095FF0 +sub_08095FF0: @ 0x08095FF0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08096098 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080960C0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809613C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809617C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809619C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080961DC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809622C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096290 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080962E0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096330 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08095FF0 + + thumb_func_start sub_08096048 +sub_08096048: @ 0x08096048 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08096098 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809622C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080961DC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096290 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080962C0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080962E0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096330 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096380 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080963A0 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08096048 + + thumb_func_start sub_08096098 +sub_08096098: @ 0x08096098 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x14 + ldrsh r0, [r4, r1] + movs r2, #0x16 + ldrsh r1, [r4, r2] + bl sub_08087C20 + strb r0, [r4, #0x1f] + movs r1, #0x10 + ldrsh r0, [r4, r1] + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl sub_08087C20 + strb r0, [r4, #0x1e] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096098 + + thumb_func_start sub_080960C0 +sub_080960C0: @ 0x080960C0 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08096104 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + adds r0, r4, #0 + bl sub_080963FC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08096108 + ldrb r1, [r4, #2] + lsls r0, r1, #0x1e + cmp r0, #0 + blt _08096112 + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #2] + subs r0, r2, #1 + lsls r0, r0, #2 + add r0, sp + ldr r1, [r5] + ldr r0, [r0] + orrs r1, r0 + str r1, [r5] + b _08096112 + .align 2, 0 +_08096104: .4byte gUnknown_84E6A30 +_08096108: + ldrb r1, [r4, #2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] +_08096112: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080960C0 + + thumb_func_start sub_0809611C +sub_0809611C: @ 0x0809611C + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_08088DAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096134 + ldr r0, [r4] + movs r1, #1 + orrs r0, r1 + str r0, [r4] +_08096134: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809611C + + thumb_func_start sub_0809613C +sub_0809613C: @ 0x0809613C + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_08088DAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096154 + ldr r0, [r4] + movs r1, #2 + orrs r0, r1 + str r0, [r4] +_08096154: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809613C + + thumb_func_start sub_0809615C +sub_0809615C: @ 0x0809615C + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096174 + ldr r0, [r4] + movs r1, #4 + orrs r0, r1 + str r0, [r4] +_08096174: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809615C + + thumb_func_start sub_0809617C +sub_0809617C: @ 0x0809617C + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096194 + ldr r0, [r4] + movs r1, #8 + orrs r0, r1 + str r0, [r4] +_08096194: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809617C + + thumb_func_start sub_0809619C +sub_0809619C: @ 0x0809619C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1f] + bl sub_080887FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080961B6 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #1 + b _080961D2 +_080961B6: + ldrb r0, [r4, #0x1f] + bl sub_080887E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080961CE + ldrb r0, [r4, #0x1f] + bl sub_08088DFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080961D6 +_080961CE: + ldr r0, [r5] + movs r1, #0x80 +_080961D2: + orrs r0, r1 + str r0, [r5] +_080961D6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0809619C + + thumb_func_start sub_080961DC +sub_080961DC: @ 0x080961DC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1e] + bl sub_080887FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809621A + ldrb r0, [r4, #0x1f] + bl sub_080887FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809621A + ldrb r1, [r4, #2] + lsls r0, r1, #0x1b + cmp r0, #0 + blt _08096224 + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #2] + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #4 + orrs r0, r1 + str r0, [r5] + b _08096224 +_0809621A: + ldrb r1, [r4, #2] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] +_08096224: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080961DC + + thumb_func_start sub_0809622C +sub_0809622C: @ 0x0809622C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1e] + bl sub_08088F4C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809624A + ldrb r0, [r4, #0x1f] + bl sub_08088F4C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08096262 +_0809624A: + ldrb r0, [r4, #0x1e] + bl sub_08089118 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096280 + ldrb r0, [r4, #0x1f] + bl sub_08089118 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096280 +_08096262: + ldrb r1, [r4, #2] + lsls r0, r1, #0x1c + cmp r0, #0 + blt _0809628A + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #2] + ldr r0, [r5] + movs r1, #0x40 + orrs r0, r1 + str r0, [r5] + b _0809628A +_08096280: + ldrb r1, [r4, #2] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] +_0809628A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0809622C + + thumb_func_start sub_08096290 +sub_08096290: @ 0x08096290 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1e] + bl sub_08088D98 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080962B8 + ldrb r0, [r4, #0x1f] + bl sub_08088D98 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080962B8 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #3 + orrs r0, r1 + str r0, [r5] +_080962B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096290 + + thumb_func_start sub_080962C0 +sub_080962C0: @ 0x080962C0 + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_08088D7C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080962DA + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + str r0, [r4] +_080962DA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080962C0 + + thumb_func_start sub_080962E0 +sub_080962E0: @ 0x080962E0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1e] + bl sub_08089078 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809631E + ldrb r0, [r4, #0x1f] + bl sub_08089078 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809631E + ldrb r1, [r4, #2] + lsls r0, r1, #0x1d + cmp r0, #0 + blt _08096328 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #2] + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xa + orrs r0, r1 + str r0, [r5] + b _08096328 +_0809631E: + ldrb r1, [r4, #2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] +_08096328: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080962E0 + + thumb_func_start sub_08096330 +sub_08096330: @ 0x08096330 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #0x1e] + bl sub_0808908C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809636E + ldrb r0, [r4, #0x1f] + bl sub_0808908C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809636E + ldrb r1, [r4, #2] + lsls r0, r1, #0x1a + cmp r0, #0 + blt _08096378 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #2] + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xb + orrs r0, r1 + str r0, [r5] + b _08096378 +_0809636E: + ldrb r1, [r4, #2] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] +_08096378: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096330 + + thumb_func_start sub_08096380 +sub_08096380: @ 0x08096380 + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #0x1e] + bl sub_0808931C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809639A + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r4] +_0809639A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08096380 + + thumb_func_start sub_080963A0 +sub_080963A0: @ 0x080963A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r6, r1, #0 + ldr r0, [r7] + ldr r1, _080963DC + ands r0, r1 + cmp r0, #0x20 + bne _080963F2 + movs r5, #0 + ldr r0, _080963E0 + mov r8, r0 +_080963BA: + lsls r4, r5, #2 + mov r0, r8 + adds r1, r4, r0 + ldrb r0, [r7, #0x1e] + ldr r1, [r1] + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080963E8 + ldr r0, _080963E4 + adds r0, r4, r0 + ldr r1, [r6] + ldr r0, [r0] + orrs r1, r0 + str r1, [r6] + b _080963F2 + .align 2, 0 +_080963DC: .4byte gUnknown_2000020 +_080963E0: .4byte gUnknown_84E6A38 +_080963E4: .4byte gUnknown_84E6A50 +_080963E8: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _080963BA +_080963F2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080963A0 + + thumb_func_start sub_080963FC +sub_080963FC: @ 0x080963FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + ldrb r0, [r5, #5] + bl sub_0808E004 + movs r2, #8 + ldrsh r1, [r0, r2] + adds r1, #8 + lsls r1, r1, #0xc + lsrs r1, r1, #0x10 + str r1, [sp] + movs r1, #0xa + ldrsh r0, [r0, r1] + adds r0, #8 + lsls r0, r0, #0xc + movs r4, #0 + lsrs r2, r0, #0x10 + str r2, [sp, #4] + asrs r0, r0, #0x10 + cmp r4, r0 + blt _08096432 + b _08096538 +_08096432: + movs r0, #1 + mov sl, r0 +_08096436: + movs r1, #0x10 + ldrsh r0, [r5, r1] + movs r2, #0x12 + ldrsh r1, [r5, r2] + add r1, sl + lsls r4, r4, #0x10 + asrs r6, r4, #0x10 + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r4 + cmp r0, #0 + bne _0809653A + movs r1, #0x14 + ldrsh r0, [r5, r1] + movs r2, #0x16 + ldrsh r1, [r5, r2] + add r1, sl + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809653A + movs r2, #1 + ldr r1, [sp] + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + mov r8, r0 + cmp r2, r1 + bge _08096526 + movs r0, #0x80 + lsls r0, r0, #9 + asrs r7, r0, #0x10 +_08096490: + movs r1, #0x10 + ldrsh r0, [r5, r1] + lsls r1, r2, #0x10 + asrs r4, r1, #0x10 + adds r0, r0, r4 + movs r2, #0x12 + ldrsh r1, [r5, r2] + adds r1, r1, r7 + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809653A + movs r1, #0x10 + ldrsh r0, [r5, r1] + subs r0, r0, r4 + movs r2, #0x12 + ldrsh r1, [r5, r2] + adds r1, r1, r7 + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809653A + movs r1, #0x14 + ldrsh r0, [r5, r1] + adds r0, r0, r4 + movs r2, #0x16 + ldrsh r1, [r5, r2] + adds r1, r1, r7 + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809653A + movs r1, #0x14 + ldrsh r0, [r5, r1] + subs r0, r0, r4 + movs r2, #0x16 + ldrsh r1, [r5, r2] + adds r1, r1, r7 + adds r1, r1, r6 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809654C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809653A + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r0, r8 + blt _08096490 +_08096526: + movs r1, #0x80 + lsls r1, r1, #9 + add r1, sb + lsrs r4, r1, #0x10 + ldr r2, [sp, #4] + lsls r0, r2, #0x10 + cmp r1, r0 + bge _08096538 + b _08096436 +_08096538: + movs r0, #0 +_0809653A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080963FC + + thumb_func_start sub_0809654C +sub_0809654C: @ 0x0809654C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088838 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096562 + movs r0, #1 + b _08096574 +_08096562: + adds r0, r4, #0 + bl sub_08088810 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08096572 + movs r0, #0 + b _08096574 +_08096572: + movs r0, #2 +_08096574: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809654C + + thumb_func_start sub_0809657C +sub_0809657C: @ 0x0809657C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #0 + beq _080965C2 + cmp r4, #4 + bls _08096598 + subs r0, r4, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08096598: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080965C8 + lsls r1, r4, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080965CC +_080965C2: + movs r0, #0 + b _080965D2 + .align 2, 0 +_080965C8: .4byte gUnknown_84E6A68 +_080965CC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080965D2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809657C + + thumb_func_start sub_080965D8 +sub_080965D8: @ 0x080965D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r5] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _0809662C + ldrb r0, [r5, #0x1e] + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809662C + ldrb r0, [r5, #0x1f] + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809662C + adds r4, #0x42 + ldrb r1, [r4] + movs r6, #0x40 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, #0xb] + lsrs r0, r0, #4 + bl sub_08096718 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809662C + ldrb r0, [r4] + adds r1, r6, #0 + ands r1, r0 + movs r0, #5 + orrs r1, r0 + strb r1, [r4] +_0809662C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080965D8 + + thumb_func_start sub_08096634 +sub_08096634: @ 0x08096634 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r1, r2, #0x10 + cmp r4, #0 + beq _08096662 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08096662 + cmp r0, #0xf + beq _08096662 + cmp r0, r4 + bne _08096666 +_08096662: + movs r0, #0 + b _08096668 +_08096666: + movs r0, #1 +_08096668: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08096634 + + thumb_func_start sub_08096670 +sub_08096670: @ 0x08096670 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _080966BE + adds r0, r4, #0 + bl sub_08096728 + ldr r1, _080966C4 + ldrb r2, [r4, #0xb] + lsls r2, r2, #0x18 + lsrs r0, r2, #0x1c + adds r0, r0, r1 + ldrb r0, [r0] + adds r4, r5, #0 + adds r4, #0x42 + movs r1, #0x3f + ands r1, r0 + ldrb r3, [r4] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + ldr r0, _080966C8 + lsrs r2, r2, #0x1c + adds r2, r2, r0 + movs r0, #3 + ldrb r1, [r2] + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] +_080966BE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080966C4: .4byte gUnknown_84E6A98 +_080966C8: .4byte gUnknown_84E6A88 + thumb_func_end sub_08096670 + + thumb_func_start sub_080966CC +sub_080966CC: @ 0x080966CC + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08096710 + adds r2, r1, r2 + ldrb r2, [r2] + movs r3, #0x42 + adds r3, r3, r0 + mov ip, r3 + movs r3, #0x3f + ands r3, r2 + mov r2, ip + ldrb r4, [r2] + movs r2, #0x40 + rsbs r2, r2, #0 + ands r2, r4 + orrs r2, r3 + mov r3, ip + strb r2, [r3] + ldr r2, _08096714 + adds r1, r1, r2 + movs r3, #3 + ldrb r2, [r1] + ands r2, r3 + lsls r2, r2, #2 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096710: .4byte gUnknown_84E6A98 +_08096714: .4byte gUnknown_84E6A88 + thumb_func_end sub_080966CC + + thumb_func_start sub_08096718 +sub_08096718: @ 0x08096718 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08096724 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08096724: .4byte gUnknown_84E6A88 + thumb_func_end sub_08096718 + + thumb_func_start sub_08096728 +sub_08096728: @ 0x08096728 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x10 + ldrsh r0, [r4, r1] + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x14 + ldrsh r0, [r4, r1] + movs r2, #0x16 + ldrsh r1, [r4, r2] + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, #0xf + beq _08096776 + cmp r0, #0xf + beq _08096776 + movs r3, #0xf + adds r0, r5, #0 + ands r0, r3 + ldrb r1, [r4, #0xb] + movs r2, #0x10 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0xb] + cmp r5, #0 + beq _08096776 + cmp r5, #0xf + beq _08096776 + lsls r0, r5, #4 + ands r2, r3 + orrs r2, r0 + strb r2, [r4, #0xb] +_08096776: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08096728 + + thumb_func_start sub_0809677C +sub_0809677C: @ 0x0809677C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r3, r1, #0 + adds r3, #0x29 + movs r5, #0 + ldrsb r5, [r3, r5] + ldrh r4, [r1, #0x22] + ldr r3, _080967BC + subs r4, r4, r5 + ldrh r3, [r3] + adds r4, r4, r3 + adds r4, #8 + movs r3, #0xff + ands r4, r3 + lsrs r4, r4, #4 + movs r3, #0x10 + subs r3, r3, r4 + lsls r3, r3, #0x11 + ldr r4, _080967C0 + adds r0, r0, r4 + lsrs r3, r3, #0x10 + ldrb r0, [r0] + adds r3, r3, r0 + adds r2, r2, r3 + adds r1, #0x43 + strb r2, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080967BC: .4byte gUnknown_2021B3A +_080967C0: .4byte gUnknown_84E6A78 + thumb_func_end sub_0809677C + + thumb_func_start sub_080967C4 +sub_080967C4: @ 0x080967C4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _080967DA + ldrb r0, [r2, #0xb] + lsrs r0, r0, #4 + movs r2, #1 + bl sub_0809677C +_080967DA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080967C4 + + thumb_func_start sub_080967E0 +sub_080967E0: @ 0x080967E0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r0, #0 + beq _080967F6 + cmp r1, #0 + beq _080967F6 + cmp r0, r1 + bne _080967FA +_080967F6: + movs r0, #1 + b _080967FC +_080967FA: + movs r0, #0 +_080967FC: + pop {r1} + bx r1 + thumb_func_end sub_080967E0 + + thumb_func_start sub_08096800 +sub_08096800: @ 0x08096800 + push {lr} + ldr r3, _08096844 + movs r2, #0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, #0x12 + ldrsh r1, [r0, r2] + str r1, [r3, #4] + ldrb r1, [r0, #0xb] + lsrs r1, r1, #4 + str r1, [r3, #8] + movs r1, #2 + str r1, [r3, #0xc] + ldrb r1, [r0, #8] + lsls r1, r1, #8 + ldrb r2, [r0, #9] + orrs r1, r2 + str r1, [r3, #0x10] + ldrb r0, [r0, #0xa] + str r0, [r3, #0x14] + ldr r0, _08096848 + ldr r1, [r0] + ldrb r0, [r1, #5] + lsls r0, r0, #8 + ldrb r1, [r1, #4] + orrs r0, r1 + str r0, [r3, #0x18] + movs r0, #1 + str r0, [r3, #0x1c] + movs r0, #4 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08096844: .4byte gUnknown_20388A8 +_08096848: .4byte gUnknown_3005AEC + thumb_func_end sub_08096800 + + thumb_func_start sub_0809684C +sub_0809684C: @ 0x0809684C + push {lr} + ldr r3, _08096890 + movs r2, #0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, #0x12 + ldrsh r1, [r0, r2] + str r1, [r3, #4] + ldrb r1, [r0, #0xb] + lsrs r1, r1, #4 + str r1, [r3, #8] + movs r1, #2 + str r1, [r3, #0xc] + ldrb r1, [r0, #8] + lsls r1, r1, #8 + ldrb r2, [r0, #9] + orrs r1, r2 + str r1, [r3, #0x10] + ldrb r0, [r0, #0xa] + str r0, [r3, #0x14] + ldr r0, _08096894 + ldr r1, [r0] + ldrb r0, [r1, #5] + lsls r0, r0, #8 + ldrb r1, [r1, #4] + orrs r0, r1 + str r0, [r3, #0x18] + movs r0, #0 + str r0, [r3, #0x1c] + movs r0, #4 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08096890: .4byte gUnknown_20388A8 +_08096894: .4byte gUnknown_3005AEC + thumb_func_end sub_0809684C + + thumb_func_start sub_08096898 +sub_08096898: @ 0x08096898 + push {lr} + ldr r3, _080968DC + movs r2, #0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, #0x12 + ldrsh r1, [r0, r2] + str r1, [r3, #4] + ldrb r1, [r0, #0xb] + lsrs r1, r1, #4 + str r1, [r3, #8] + movs r1, #2 + str r1, [r3, #0xc] + ldrb r1, [r0, #8] + lsls r1, r1, #8 + ldrb r2, [r0, #9] + orrs r1, r2 + str r1, [r3, #0x10] + ldrb r0, [r0, #0xa] + str r0, [r3, #0x14] + ldr r0, _080968E0 + ldr r1, [r0] + ldrb r0, [r1, #5] + lsls r0, r0, #8 + ldrb r1, [r1, #4] + orrs r0, r1 + str r0, [r3, #0x18] + movs r0, #1 + str r0, [r3, #0x1c] + movs r0, #0x11 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_080968DC: .4byte gUnknown_20388A8 +_080968E0: .4byte gUnknown_3005AEC + thumb_func_end sub_08096898 + + thumb_func_start sub_080968E4 +sub_080968E4: @ 0x080968E4 + push {lr} + ldr r3, _08096928 + movs r2, #0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, #0x12 + ldrsh r1, [r0, r2] + str r1, [r3, #4] + ldrb r1, [r0, #0xb] + lsrs r1, r1, #4 + str r1, [r3, #8] + movs r1, #2 + str r1, [r3, #0xc] + ldrb r1, [r0, #8] + lsls r1, r1, #8 + ldrb r2, [r0, #9] + orrs r1, r2 + str r1, [r3, #0x10] + ldrb r0, [r0, #0xa] + str r0, [r3, #0x14] + ldr r0, _0809692C + ldr r1, [r0] + ldrb r0, [r1, #5] + lsls r0, r0, #8 + ldrb r1, [r1, #4] + orrs r0, r1 + str r0, [r3, #0x18] + movs r0, #0 + str r0, [r3, #0x1c] + movs r0, #0x11 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08096928: .4byte gUnknown_20388A8 +_0809692C: .4byte gUnknown_3005AEC + thumb_func_end sub_080968E4 + + thumb_func_start sub_08096930 +sub_08096930: @ 0x08096930 + push {lr} + movs r2, #0 + bl sub_08153E10 + pop {r0} + bx r0 + thumb_func_end sub_08096930 + + thumb_func_start sub_0809693C +sub_0809693C: @ 0x0809693C + push {lr} + movs r2, #1 + bl sub_08153E10 + pop {r0} + bx r0 + thumb_func_end sub_0809693C + + thumb_func_start sub_08096948 +sub_08096948: @ 0x08096948 + push {lr} + adds r1, r0, #0 + movs r0, #0x22 + bl sub_08097758 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096948 + + thumb_func_start sub_08096958 +sub_08096958: @ 0x08096958 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #5] + bl sub_0808E004 + ldr r1, _08096980 + ldrb r0, [r0, #0xd] + lsls r0, r0, #2 + adds r0, 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 +_08096980: .4byte gUnknown_84E6AA8 + thumb_func_end sub_08096958 + + thumb_func_start sub_08096984 +sub_08096984: @ 0x08096984 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #5] + bl sub_0808E004 + ldr r1, _080969AC + ldrb r0, [r0, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl _call_via_r3 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080969AC: .4byte gUnknown_84E6AA8 + thumb_func_end sub_08096984 + + thumb_func_start sub_080969B0 +sub_080969B0: @ 0x080969B0 + bx lr + .align 2, 0 + thumb_func_end sub_080969B0 + + thumb_func_start sub_080969B4 +sub_080969B4: @ 0x080969B4 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _080969FC + mov r0, sp + movs r2, #4 + bl memcpy + ldr r1, _08096A00 + movs r2, #0x14 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r2, #0x16 + ldrsh r0, [r5, r2] + str r0, [r1, #4] + movs r0, #0x95 + str r0, [r1, #8] + movs r0, #2 + str r0, [r1, #0xc] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + str r0, [r1, #0x10] + lsls r4, r4, #1 + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_080B5270 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080969FC: .4byte gUnknown_84E6AB4 +_08096A00: .4byte gUnknown_20388A8 + thumb_func_end sub_080969B4 + + thumb_func_start sub_08096A04 +sub_08096A04: @ 0x08096A04 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + cmp r1, r0 + beq _08096A46 + ldr r2, _08096A4C + movs r1, #0x14 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, #0x16 + ldrsh r0, [r4, r1] + str r0, [r2, #4] + movs r0, #0x95 + str r0, [r2, #8] + movs r0, #2 + str r0, [r2, #0xc] + ldr r3, _08096A50 + ldrb r1, [r4, #0x18] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #2 + subs r0, #5 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1] + str r0, [r2, #0x10] + movs r0, #0x23 + bl sub_080B5270 +_08096A46: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096A4C: .4byte gUnknown_20388A8 +_08096A50: .4byte gUnknown_84E6AB8 + thumb_func_end sub_08096A04 + + thumb_func_start sub_08096A54 +sub_08096A54: @ 0x08096A54 + push {lr} + bl sub_0809779C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096A54 + + thumb_func_start sub_08096A60 +sub_08096A60: @ 0x08096A60 + push {lr} + adds r1, r0, #0 + movs r0, #0xf + bl sub_08097758 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096A60 + + thumb_func_start sub_08096A70 +sub_08096A70: @ 0x08096A70 + push {lr} + adds r1, r0, #0 + movs r0, #0x27 + bl sub_08097758 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096A70 + + thumb_func_start sub_08096A80 +sub_08096A80: @ 0x08096A80 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _08096AD4 + movs r2, #0x10 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r4, #0x12 + ldrsh r0, [r5, r4] + str r0, [r1, #4] + ldrb r0, [r5, #0xb] + lsrs r0, r0, #4 + str r0, [r1, #8] + movs r0, #2 + str r0, [r1, #0xc] + movs r0, #0xc + bl sub_080B5270 + ldrb r0, [r5, #8] + ldrb r1, [r5, #9] + ldrb r2, [r5, #0xa] + movs r7, #0x10 + ldrsh r3, [r5, r7] + movs r7, #0x12 + ldrsh r4, [r5, r7] + str r4, [sp] + bl sub_08154604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + bne _08096ACA + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08096800 +_08096ACA: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08096AD4: .4byte gUnknown_20388A8 + thumb_func_end sub_08096A80 + + thumb_func_start sub_08096AD8 +sub_08096AD8: @ 0x08096AD8 + push {lr} + ldr r2, _08096AFC + movs r3, #0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r3, #0x12 + ldrsh r1, [r0, r3] + str r1, [r2, #4] + ldrb r0, [r0, #0xb] + lsrs r0, r0, #4 + str r0, [r2, #8] + movs r0, #2 + str r0, [r2, #0xc] + movs r0, #0x12 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08096AFC: .4byte gUnknown_20388A8 + thumb_func_end sub_08096AD8 + + thumb_func_start sub_08096B00 +sub_08096B00: @ 0x08096B00 + push {r4, lr} + ldr r3, _08096B2C + movs r4, #0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, #0x12 + ldrsh r2, [r0, r4] + str r2, [r3, #4] + ldrb r0, [r0, #0xb] + lsrs r0, r0, #4 + str r0, [r3, #8] + ldrb r0, [r1, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r3, #0xc] + movs r0, #0x10 + bl sub_080B5270 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096B2C: .4byte gUnknown_20388A8 + thumb_func_end sub_08096B00 + + thumb_func_start sub_08096B30 +sub_08096B30: @ 0x08096B30 + push {r4, lr} + ldr r3, _08096B5C + movs r4, #0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, #0x12 + ldrsh r2, [r0, r4] + str r2, [r3, #4] + ldrb r0, [r0, #0xb] + lsrs r0, r0, #4 + str r0, [r3, #8] + ldrb r0, [r1, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r3, #0xc] + movs r0, #0xe + bl sub_080B5270 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096B5C: .4byte gUnknown_20388A8 + thumb_func_end sub_08096B30 + + thumb_func_start sub_08096B60 +sub_08096B60: @ 0x08096B60 + push {r4, lr} + ldr r3, _08096B8C + movs r4, #0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, #0x12 + ldrsh r2, [r0, r4] + str r2, [r3, #4] + ldrb r0, [r0, #0xb] + lsrs r0, r0, #4 + str r0, [r3, #8] + ldrb r0, [r1, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r3, #0xc] + movs r0, #0xa + bl sub_080B5270 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096B8C: .4byte gUnknown_20388A8 + thumb_func_end sub_08096B60 + + thumb_func_start sub_08096B90 +sub_08096B90: @ 0x08096B90 + push {lr} + adds r1, r0, #0 + movs r0, #0x29 + bl sub_08097758 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096B90 + + thumb_func_start sub_08096BA0 +sub_08096BA0: @ 0x08096BA0 + push {lr} + adds r1, r0, #0 + movs r0, #0x2a + bl sub_08097758 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08096BA0 + + thumb_func_start sub_08096BB0 +sub_08096BB0: @ 0x08096BB0 + push {lr} + ldr r2, _08096BCC + movs r3, #0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r1, #0x12 + ldrsh r0, [r0, r1] + str r0, [r2, #4] + movs r0, #0x35 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08096BCC: .4byte gUnknown_20388A8 + thumb_func_end sub_08096BB0 + + thumb_func_start sub_08096BD0 +sub_08096BD0: @ 0x08096BD0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r7, r1, #0 + adds r5, r2, #0 + bl sub_081D4068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08096BF4 + adds r0, r6, #0 + bl sub_081D40D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08096C1C +_08096BF4: + movs r4, #0 + ldr r0, _08096C28 + mov r8, r0 +_08096BFA: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _08096C10 + lsls r0, r4, #2 + add r0, r8 + ldr r2, [r0] + adds r0, r6, #0 + adds r1, r7, #0 + bl _call_via_r2 +_08096C10: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsrs r5, r5, #1 + cmp r4, #0x13 + bls _08096BFA +_08096C1C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08096C28: .4byte gUnknown_84E6AC8 + thumb_func_end sub_08096BD0 + + thumb_func_start sub_08096C2C +sub_08096C2C: @ 0x08096C2C + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldrb r0, [r2] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08096C5A + ldrb r1, [r2, #2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + adds r1, #8 + ands r0, r1 + subs r1, #0x18 + ands r0, r1 + strb r0, [r2, #2] + ldr r0, [r3] + ldr r1, _08096C60 + ands r0, r1 + str r0, [r3] +_08096C5A: + pop {r0} + bx r0 + .align 2, 0 +_08096C60: .4byte 0xFFF9F7BD + thumb_func_end sub_08096C2C + + thumb_func_start sub_08096C64 +sub_08096C64: @ 0x08096C64 + push {lr} + adds r2, r1, #0 + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _08096C78 + ldr r0, [r2] + ldr r1, _08096C7C + ands r0, r1 + str r0, [r2] +_08096C78: + pop {r0} + bx r0 + .align 2, 0 +_08096C7C: .4byte 0xFFFFFBFF + thumb_func_end sub_08096C64 + + thumb_func_start sub_08096C80 +sub_08096C80: @ 0x08096C80 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08096CC4 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + bl sub_08096670 + adds r0, r4, #0 + mov r1, sp + bl sub_08095FA8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080965D8 + ldr r2, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096BD0 + ldrb r1, [r4] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4] +_08096CC4: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08096C80 + + thumb_func_start sub_08096CCC +sub_08096CCC: @ 0x08096CCC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08096D18 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + bl sub_08096670 + adds r0, r4, #0 + mov r1, sp + bl sub_08095FF0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080965D8 + adds r0, r4, #0 + mov r1, sp + bl sub_08096C2C + ldr r2, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096BD0 + ldrb r1, [r4] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4] +_08096D18: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08096CCC + + thumb_func_start sub_08096D20 +sub_08096D20: @ 0x08096D20 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _08096D6C + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + bl sub_08096670 + adds r0, r4, #0 + mov r1, sp + bl sub_08096048 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080965D8 + adds r0, r4, #0 + mov r1, sp + bl sub_08096C64 + ldr r2, [sp] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08096BD0 + ldrb r1, [r4] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4] +_08096D6C: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08096D20 + + thumb_func_start sub_08096D74 +sub_08096D74: @ 0x08096D74 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5] + movs r0, #0xa0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08096DFC + ldrb r0, [r5, #1] + movs r4, #1 + orrs r0, r4 + strb r0, [r5, #1] + ldr r3, _08096DF8 + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x2c + ldrb r1, [r0] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + lsls r1, r1, #7 + ldrb r2, [r5, #2] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #2] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x2c + ldrb r1, [r0] + lsrs r1, r1, #7 + ands r1, r4 + ldrb r2, [r5, #3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #3] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + movs r0, #0 + b _08096DFE + .align 2, 0 +_08096DF8: .4byte gUnknown_20205AC +_08096DFC: + movs r0, #1 +_08096DFE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08096D74 + + thumb_func_start sub_08096E04 +sub_08096E04: @ 0x08096E04 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08096E38 +_08096E0A: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08096E28 + ldr r0, _08096E3C + ldrb r0, [r0, #5] + cmp r4, r0 + beq _08096E28 + adds r0, r1, #0 + bl sub_08096D74 +_08096E28: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08096E0A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08096E38: .4byte gUnknown_2036FF0 +_08096E3C: .4byte gUnknown_2037230 + thumb_func_end sub_08096E04 + + thumb_func_start sub_08096E40 +sub_08096E40: @ 0x08096E40 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r6, _08096E7C +_08096E4A: + cmp r4, r5 + beq _08096E6C + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r6 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08096E6C + ldr r0, _08096E80 + ldrb r0, [r0, #5] + cmp r4, r0 + beq _08096E6C + adds r0, r1, #0 + bl sub_08096D74 +_08096E6C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08096E4A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08096E7C: .4byte gUnknown_2036FF0 +_08096E80: .4byte gUnknown_2037230 + thumb_func_end sub_08096E40 + + thumb_func_start sub_08096E84 +sub_08096E84: @ 0x08096E84 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r2, [r5] + ldr r1, _08096EE4 + adds r0, r1, #0 + ands r0, r2 + cmp r0, r1 + bne _08096EDC + ldrb r1, [r5, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #1] + ldr r4, _08096EE8 + ldrb r0, [r5, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r5, #2] + adds r1, #0x2c + lsrs r2, r2, #7 + lsls r2, r2, #6 + ldrb r3, [r1] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + ldrb r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrb r1, [r5, #3] + lsls r1, r1, #0x1f + lsrs r1, r1, #0x1f + adds r2, #0x2c + lsls r1, r1, #7 + ldrb r3, [r2] + movs r0, #0x7f + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_08096EDC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08096EE4: .4byte 0x00000101 +_08096EE8: .4byte gUnknown_20205AC + thumb_func_end sub_08096E84 + + thumb_func_start sub_08096EEC +sub_08096EEC: @ 0x08096EEC + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08096F18 +_08096EF2: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08096F08 + adds r0, r1, #0 + bl sub_08096E84 +_08096F08: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08096EF2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08096F18: .4byte gUnknown_2036FF0 + thumb_func_end sub_08096EEC + + thumb_func_start sub_08096F1C +sub_08096F1C: @ 0x08096F1C + lsls r1, r1, #0x18 + ldr r2, _08096F38 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldrh r2, [r1] + ldrh r3, [r0, #0x20] + adds r2, r2, r3 + strh r2, [r0, #0x20] + ldrh r1, [r1, #2] + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_08096F38: .4byte gUnknown_84E5FD0 + thumb_func_end sub_08096F1C + + thumb_func_start sub_08096F3C +sub_08096F3C: @ 0x08096F3C + lsls r1, r1, #0x18 + ldr r2, _08096F5C + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r2, r2, #1 + ldrh r3, [r0, #0x20] + adds r2, r2, r3 + strh r2, [r0, #0x20] + ldrh r1, [r1, #2] + lsls r1, r1, #1 + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_08096F5C: .4byte gUnknown_84E5FD0 + thumb_func_end sub_08096F3C + + thumb_func_start sub_08096F60 +sub_08096F60: @ 0x08096F60 + lsls r1, r1, #0x18 + ldr r2, _08096F84 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r3, r2, #1 + adds r2, r2, r3 + ldrh r3, [r0, #0x20] + adds r2, r2, r3 + strh r2, [r0, #0x20] + ldrh r1, [r1, #2] + lsls r2, r1, #1 + adds r1, r1, r2 + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_08096F84: .4byte gUnknown_84E5FD0 + thumb_func_end sub_08096F60 + + thumb_func_start sub_08096F88 +sub_08096F88: @ 0x08096F88 + lsls r1, r1, #0x18 + ldr r2, _08096FA8 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r2, r2, #2 + ldrh r3, [r0, #0x20] + adds r2, r2, r3 + strh r2, [r0, #0x20] + ldrh r1, [r1, #2] + lsls r1, r1, #2 + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_08096FA8: .4byte gUnknown_84E5FD0 + thumb_func_end sub_08096F88 + + thumb_func_start sub_08096FAC +sub_08096FAC: @ 0x08096FAC + lsls r1, r1, #0x18 + ldr r2, _08096FCC + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r2, r2, #3 + ldrh r3, [r0, #0x20] + adds r2, r2, r3 + strh r2, [r0, #0x20] + ldrh r1, [r1, #2] + lsls r1, r1, #3 + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_08096FCC: .4byte gUnknown_84E5FD0 + thumb_func_end sub_08096FAC + + thumb_func_start sub_08096FD0 +sub_08096FD0: @ 0x08096FD0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #0 + strh r1, [r0, #0x34] + strh r2, [r0, #0x36] + strh r3, [r0, #0x38] + bx lr + .align 2, 0 + thumb_func_end sub_08096FD0 + + thumb_func_start sub_08096FE4 +sub_08096FE4: @ 0x08096FE4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0809703C + movs r0, #0x36 + ldrsh r2, [r4, r0] + lsls r0, r2, #1 + adds r0, r0, r5 + movs r3, #0x38 + ldrsh r1, [r4, r3] + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _08097044 + ldr r1, _08097040 + lsls r0, r2, #2 + adds r0, r0, r1 + movs r1, #0x38 + ldrsh r2, [r4, r1] + ldr r0, [r0] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r1, [r4, #0x34] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, [r2] + adds r0, r4, #0 + bl _call_via_r2 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + movs r2, #0x36 + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + adds r1, r1, r5 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0 + ldrsh r1, [r1, r3] + cmp r0, r1 + blt _08097044 + movs r0, #1 + b _08097046 + .align 2, 0 +_0809703C: .4byte gUnknown_84E6BBC +_08097040: .4byte gUnknown_84E6BA8 +_08097044: + movs r0, #0 +_08097046: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08096FE4 + + thumb_func_start sub_0809704C +sub_0809704C: @ 0x0809704C + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + strh r1, [r0, #0x34] + strh r2, [r0, #0x36] + strh r2, [r0, #0x38] + bx lr + .align 2, 0 + thumb_func_end sub_0809704C + + thumb_func_start sub_0809705C +sub_0809705C: @ 0x0809705C + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x36] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0809707C + ldrh r1, [r4, #0x34] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08096F1C + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_0809707C: + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0xf + bgt _0809708E + movs r0, #0 + b _08097090 +_0809708E: + movs r0, #1 +_08097090: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809705C + + thumb_func_start sub_08097098 +sub_08097098: @ 0x08097098 + ldr r1, _080970A8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bx lr + .align 2, 0 +_080970A8: .4byte gUnknown_84E6C0E + thumb_func_end sub_08097098 + + thumb_func_start sub_080970AC +sub_080970AC: @ 0x080970AC + ldr r1, _080970BC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bx lr + .align 2, 0 +_080970BC: .4byte gUnknown_84E6BC6 + thumb_func_end sub_080970AC + + thumb_func_start sub_080970C0 +sub_080970C0: @ 0x080970C0 + movs r1, #0 + strh r1, [r0, #0x3a] + strh r1, [r0, #0x3c] + bx lr + thumb_func_end sub_080970C0 + + thumb_func_start sub_080970C8 +sub_080970C8: @ 0x080970C8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080970FE + cmp r0, #1 + bgt _080970E0 + cmp r0, #0 + beq _080970EA + b _08097162 +_080970E0: + cmp r0, #2 + beq _08097126 + cmp r0, #3 + beq _0809713A + b _08097162 +_080970EA: + movs r2, #0x3a + ldrsh r0, [r5, r2] + bl sub_080970AC + ldrh r1, [r5, #0x24] + adds r0, r0, r1 + strh r0, [r5, #0x24] + movs r2, #0x3a + ldrsh r0, [r5, r2] + b _08097158 +_080970FE: + ldrh r0, [r5, #0x3a] + movs r4, #0x47 + subs r0, r4, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080970AC + ldrh r1, [r5, #0x24] + subs r1, r1, r0 + strh r1, [r5, #0x24] + ldrh r0, [r5, #0x3a] + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_08097098 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + b _08097160 +_08097126: + movs r1, #0x3a + ldrsh r0, [r5, r1] + bl sub_080970AC + ldrh r1, [r5, #0x24] + subs r1, r1, r0 + strh r1, [r5, #0x24] + movs r2, #0x3a + ldrsh r0, [r5, r2] + b _08097158 +_0809713A: + ldrh r0, [r5, #0x3a] + movs r4, #0x47 + subs r0, r4, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080970AC + ldrh r2, [r5, #0x24] + adds r0, r0, r2 + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x3a] + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 +_08097158: + bl sub_08097098 + ldrh r1, [r5, #0x26] + adds r0, r0, r1 +_08097160: + strh r0, [r5, #0x26] +_08097162: + ldrh r0, [r5, #0x3a] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x48 + bne _0809717A + strh r1, [r5, #0x3a] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] +_0809717A: + movs r2, #0x3c + ldrsh r0, [r5, r2] + cmp r0, #4 + bne _08097188 + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + movs r6, #1 +_08097188: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080970C8 + + thumb_func_start sub_08097190 +sub_08097190: @ 0x08097190 + lsls r1, r1, #0x18 + ldr r2, _080971A8 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r1, [r1] + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_080971A8: .4byte gUnknown_84E6C88 + thumb_func_end sub_08097190 + + thumb_func_start sub_080971AC +sub_080971AC: @ 0x080971AC + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + 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 + .align 2, 0 + thumb_func_end sub_080971AC + + thumb_func_start sub_080971CC +sub_080971CC: @ 0x080971CC + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r1, _0809724C + mov r0, sp + movs r2, #6 + bl memcpy + add r5, sp, #8 + ldr r1, _08097250 + adds r0, r5, #0 + movs r2, #3 + bl memcpy + movs r6, #0 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080971FE + ldrh r1, [r4, #0x34] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08096F1C +_080971FE: + 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, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08097190 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x3a] + adds r1, #1 + strh r1, [r4, #0x3a] + movs r2, #0x36 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + asrs r0, r0, #0x11 + cmp r1, r0 + bne _08097238 + movs r6, #1 +_08097238: + cmp r1, r2 + blt _08097242 + movs r0, #0 + strh r0, [r4, #0x26] + movs r6, #0xff +_08097242: + adds r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0809724C: .4byte gUnknown_84E6C94 +_08097250: .4byte gUnknown_84E6C9A + thumb_func_end sub_080971CC + + thumb_func_start sub_08097254 +sub_08097254: @ 0x08097254 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + ldr r1, _080972E0 + mov r0, sp + movs r2, #6 + bl memcpy + add r4, sp, #8 + ldr r1, _080972E4 + adds r0, r4, #0 + movs r2, #3 + bl memcpy + movs r6, #0 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08097290 + ldrh r1, [r5, #0x3a] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08097290 + ldrh r1, [r5, #0x34] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08096F1C +_08097290: + 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, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08097190 + strh r0, [r5, #0x26] + ldrh r1, [r5, #0x3a] + adds r1, #1 + strh r1, [r5, #0x3a] + movs r2, #0x36 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + asrs r0, r0, #0x11 + cmp r1, r0 + bne _080972CA + movs r6, #1 +_080972CA: + cmp r1, r2 + blt _080972D4 + movs r0, #0 + strh r0, [r5, #0x26] + movs r6, #0xff +_080972D4: + adds r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080972E0: .4byte gUnknown_84E6C9E +_080972E4: .4byte gUnknown_84E6CA4 + thumb_func_end sub_08097254 + + thumb_func_start sub_080972E8 +sub_080972E8: @ 0x080972E8 + strh r1, [r0, #0x34] + bx lr + thumb_func_end sub_080972E8 + + thumb_func_start sub_080972EC +sub_080972EC: @ 0x080972EC + push {lr} + ldrh r1, [r0, #0x34] + subs r1, #1 + strh r1, [r0, #0x34] + lsls r1, r1, #0x10 + cmp r1, #0 + beq _080972FE + movs r0, #0 + b _08097300 +_080972FE: + movs r0, #1 +_08097300: + pop {r1} + bx r1 + thumb_func_end sub_080972EC + + thumb_func_start sub_08097304 +sub_08097304: @ 0x08097304 + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r3, r0, #0 + adds r3, #0x2a + strb r1, [r3] + adds r4, r0, #0 + adds r4, #0x2c + ldrb r3, [r4] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r4] + adds r1, r2, #0 + bl sub_08007EF4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08097304 + + thumb_func_start sub_0809732C +sub_0809732C: @ 0x0809732C + push {lr} + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0809733E + movs r0, #0 + b _08097340 +_0809733E: + movs r0, #1 +_08097340: + pop {r1} + bx r1 + thumb_func_end sub_0809732C + + thumb_func_start sub_08097344 +sub_08097344: @ 0x08097344 + push {r4, r5, r6, lr} + mov ip, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r3, ip + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080973AC + mov r0, ip + ldrh r1, [r0, #0x24] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + mov r4, ip + adds r4, #0x28 + movs r0, #0 + ldrsb r0, [r4, r0] + ldr r2, _080973A4 + adds r0, r0, r1 + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, ip + ldrh r1, [r0, #0x26] + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + subs r3, #0x15 + movs r0, #0 + ldrsb r0, [r3, r0] + ldr r2, _080973A8 + adds r0, r0, r1 + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r2, r3, #0 + b _080973DA + .align 2, 0 +_080973A4: .4byte gUnknown_2021B38 +_080973A8: .4byte gUnknown_2021B3A +_080973AC: + mov r0, ip + ldrh r1, [r0, #0x24] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + mov r3, ip + adds r3, #0x28 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, ip + ldrh r1, [r0, #0x26] + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + mov r2, ip + adds r2, #0x29 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, r3, #0 +_080973DA: + ldrb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x19 + subs r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x19 + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + bgt _08097406 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08097412 +_08097406: + mov r4, ip + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] +_08097412: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xaf + bgt _08097426 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08097432 +_08097426: + mov r0, ip + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08097432: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08097344 + + thumb_func_start sub_08097438 +sub_08097438: @ 0x08097438 + push {r4, lr} + adds r4, r0, #0 + bl sub_080976D8 + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + movs r2, #1 + bl sub_0809677C + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08097344 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08097438 + + thumb_func_start sub_08097460 +sub_08097460: @ 0x08097460 + push {r4, r5, lr} + movs r5, #0 + movs r4, #0x3f +_08097466: + ldr r0, _08097494 + adds r2, r5, r0 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08097486 + ldr r1, [r2, #0x1c] + ldr r0, _08097498 + cmp r1, r0 + bne _08097486 + adds r0, r2, #0 + bl sub_08006E00 +_08097486: + adds r5, #0x44 + subs r4, #1 + cmp r4, #0 + bge _08097466 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08097494: .4byte gUnknown_20205AC +_08097498: .4byte sub_08097438 + thumb_func_end sub_08097460 + + thumb_func_start sub_0809749C +sub_0809749C: @ 0x0809749C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + ldr r6, _080974D0 + movs r4, #0 +_080974A8: + adds r2, r4, r6 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080974D8 + ldr r1, [r2, #0x1c] + ldr r0, _080974D4 + cmp r1, r0 + bne _080974D8 + ldrh r0, [r2, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _080974D8 + adds r0, r3, #0 + b _080974E2 + .align 2, 0 +_080974D0: .4byte gUnknown_20205AC +_080974D4: .4byte sub_08097438 +_080974D8: + adds r4, #0x44 + adds r3, #1 + cmp r3, #0x3f + ble _080974A8 + movs r0, #0x40 +_080974E2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0809749C + + thumb_func_start sub_080974E8 +sub_080974E8: @ 0x080974E8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_0809749C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0809751A + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _08097520 + adds r4, r4, r0 + adds r0, r5, #0 + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_0809751A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08097520: .4byte gUnknown_20205AC + thumb_func_end sub_080974E8 + + thumb_func_start sub_08097524 +sub_08097524: @ 0x08097524 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_0809749C + adds r1, r0, #0 + cmp r1, #0x40 + beq _080975AE + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08097588 + adds r4, r0, r1 + adds r0, r5, #0 + bl sub_0808E004 + ldrh r3, [r4, #4] + lsls r3, r3, #0x16 + ldr r1, [r0, #0x10] + ldr r2, [r1, #4] + ldr r1, [r1] + str r1, [r4] + str r2, [r4, #4] + lsrs r3, r3, #0x16 + ldrh r2, [r4, #4] + ldr r1, _0809758C + ands r1, r2 + orrs r1, r3 + strh r1, [r4, #4] + ldrb r2, [r0, #0xc] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x18 + ldrb r3, [r4, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r2 + strb r1, [r4, #5] + ldr r1, [r0, #0x1c] + str r1, [r4, #0xc] + ldr r1, [r0, #0x14] + cmp r1, #0 + bne _08097590 + str r1, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + b _080975A6 + .align 2, 0 +_08097588: .4byte gUnknown_20205AC +_0809758C: .4byte 0xFFFFFC00 +_08097590: + adds r0, r4, #0 + bl sub_0800858C + 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] +_080975A6: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 +_080975AE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08097524 + + thumb_func_start sub_080975B4 +sub_080975B4: @ 0x080975B4 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809749C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + cmp r2, #0x40 + beq _080975F0 + cmp r4, #0 + beq _080975E4 + ldr r0, _080975E0 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x32] + b _080975F0 + .align 2, 0 +_080975E0: .4byte gUnknown_20205AC +_080975E4: + ldr r1, _080975F8 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r4, [r0, #0x32] +_080975F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080975F8: .4byte gUnknown_20205AC + thumb_func_end sub_080975B4 + + thumb_func_start sub_080975FC +sub_080975FC: @ 0x080975FC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809749C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + bne _08097612 + movs r0, #0 + b _0809762A +_08097612: + movs r3, #0 + ldr r0, _08097630 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r2, #0x32 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _08097628 + movs r3, #1 +_08097628: + adds r0, r3, #0 +_0809762A: + pop {r1} + bx r1 + .align 2, 0 +_08097630: .4byte gUnknown_20205AC + thumb_func_end sub_080975FC + + thumb_func_start sub_08097634 +sub_08097634: @ 0x08097634 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_0809749C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0809765A + ldr r0, _08097660 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0 + strh r4, [r1, #0x34] + strh r0, [r1, #0x36] +_0809765A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08097660: .4byte gUnknown_20205AC + thumb_func_end sub_08097634 + + thumb_func_start sub_08097664 +sub_08097664: @ 0x08097664 + push {lr} + adds r2, r0, #0 + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _08097676 + cmp r0, #1 + beq _0809767E + b _0809769C +_08097676: + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x36] + adds r0, #1 + strh r0, [r2, #0x36] +_0809767E: + ldrh r0, [r2, #0x26] + subs r0, #8 + movs r3, #0 + strh r0, [r2, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa0 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0809769C + strh r3, [r2, #0x26] + movs r0, #1 + strh r0, [r2, #0x32] + strh r3, [r2, #0x34] + strh r3, [r2, #0x36] +_0809769C: + pop {r0} + bx r0 + thumb_func_end sub_08097664 + + thumb_func_start sub_080976A0 +sub_080976A0: @ 0x080976A0 + push {lr} + adds r1, r0, #0 + movs r2, #0x36 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080976B2 + cmp r0, #1 + beq _080976BC + b _080976CE +_080976B2: + ldr r0, _080976D4 + strh r0, [r1, #0x26] + ldrh r0, [r1, #0x36] + adds r0, #1 + strh r0, [r1, #0x36] +_080976BC: + ldrh r0, [r1, #0x26] + adds r0, #8 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _080976CE + strh r0, [r1, #0x34] + strh r0, [r1, #0x36] +_080976CE: + pop {r0} + bx r0 + .align 2, 0 +_080976D4: .4byte 0x0000FF60 + thumb_func_end sub_080976A0 + + thumb_func_start sub_080976D8 +sub_080976D8: @ 0x080976D8 + push {lr} + adds r1, r0, #0 + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _080976F4 + cmp r0, #1 + bgt _080976EE + cmp r0, #0 + beq _08097714 + b _08097704 +_080976EE: + cmp r0, #2 + beq _080976FC + b _08097704 +_080976F4: + adds r0, r1, #0 + bl sub_080976A0 + b _08097714 +_080976FC: + adds r0, r1, #0 + bl sub_08097664 + b _08097714 +_08097704: + movs r0, #0 + strh r0, [r1, #0x34] + ldr r0, _08097718 + ldr r1, _0809771C + ldr r2, _08097720 + movs r3, #1 + bl AGBAssert +_08097714: + pop {r0} + bx r0 + .align 2, 0 +_08097718: .4byte gUnknown_84E6CA8 +_0809771C: .4byte 0x00003106 +_08097720: .4byte gUnknown_84E6CB4 + thumb_func_end sub_080976D8 + + thumb_func_start sub_08097724 +sub_08097724: @ 0x08097724 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0809749C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _08097748 + ldr r0, _0809774C + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08097750 +_08097748: + movs r0, #0 + b _08097752 + .align 2, 0 +_0809774C: .4byte gUnknown_20205AC +_08097750: + movs r0, #1 +_08097752: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097724 + + thumb_func_start sub_08097758 +sub_08097758: @ 0x08097758 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0809777C + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + bl sub_0808E0B8 + adds r0, r4, #0 + bl sub_080B5270 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809777C: .4byte gUnknown_20388A8 + thumb_func_end sub_08097758 + + thumb_func_start sub_08097780 +sub_08097780: @ 0x08097780 + push {lr} + adds r1, r0, #0 + ldrb r2, [r1, #2] + lsls r0, r2, #0x19 + cmp r0, #0 + blt _08097798 + movs r0, #0x40 + orrs r0, r2 + strb r0, [r1, #2] + movs r0, #3 + bl sub_08097758 +_08097798: + pop {r0} + bx r0 + thumb_func_end sub_08097780 + + thumb_func_start sub_0809779C +sub_0809779C: @ 0x0809779C + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r0, #5] + bl sub_0808E004 + ldr r2, _080977D4 + movs r3, #0x20 + ldrsh r1, [r4, r3] + str r1, [r2] + movs r3, #0x22 + ldrsh r1, [r4, r3] + ldrh r0, [r0, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + adds r1, r1, r0 + subs r1, #2 + str r1, [r2, #4] + movs r0, #0x97 + str r0, [r2, #8] + movs r0, #3 + str r0, [r2, #0xc] + movs r0, #5 + bl sub_080B5270 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080977D4: .4byte gUnknown_20388A8 + thumb_func_end sub_0809779C + + thumb_func_start sub_080977D8 +sub_080977D8: @ 0x080977D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + movs r0, #0 + mov ip, r0 + ldr r0, _08097804 + ldr r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + bne _08097808 + movs r0, #0x14 + bl sub_08000BDC + str r0, [r6] + ldrb r1, [r4, #8] + strb r1, [r0] + ldr r1, [r6] + movs r0, #1 + strb r0, [r1, #0x10] + b _08097854 + .align 2, 0 +_08097804: .4byte gUnknown_2037258 +_08097808: + movs r2, #0x10 + movs r5, #0 + movs r1, #0 + adds r3, r6, #0 + b _08097818 +_08097812: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_08097818: + cmp r1, #0xf + bhi _0809783A + cmp r2, #0x10 + bne _0809782C + ldr r0, [r3] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0809782C + adds r2, r1, #0 +_0809782C: + ldr r0, [r3] + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r7, [r4, #8] + cmp r0, r7 + bne _08097812 + movs r5, #1 +_0809783A: + cmp r5, #0 + bne _08097856 + cmp r2, #0x10 + beq _08097856 + ldr r0, [r6] + adds r0, r0, r2 + ldrb r1, [r4, #8] + strb r1, [r0] + ldr r1, [r6] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + movs r0, #1 +_08097854: + mov ip, r0 +_08097856: + mov r1, ip + cmp r1, #1 + bne _08097868 + ldrb r0, [r4, #1] + movs r1, #0x10 + orrs r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #1] +_08097868: + movs r0, #1 + mov r7, r8 + strh r0, [r7, #0x32] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080977D8 + + thumb_func_start sub_08097878 +sub_08097878: @ 0x08097878 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + movs r0, #1 + strh r0, [r1, #0x32] + ldr r5, _080978FC + ldr r0, [r5] + cmp r0, #0 + beq _080978F0 + movs r7, #0 + adds r0, r6, #0 + bl sub_08097900 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x10 + beq _080978B0 + ldr r0, [r5] + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r1, [r5] + ldrb r0, [r1, #0x10] + subs r0, #1 + strb r0, [r1, #0x10] + movs r7, #1 +_080978B0: + ldr r0, [r5] + ldrb r4, [r0, #0x10] + cmp r4, #0 + bne _080978BE + bl sub_08000BF0 + str r4, [r5] +_080978BE: + cmp r7, #1 + bne _080978F0 + ldrb r0, [r6, #5] + bl sub_0808E004 + ldrb r1, [r0, #0xc] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldrb r2, [r6, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + movs r1, #3 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r6, #1] + mov r2, r8 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_080978F0: + movs r0, #1 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080978FC: .4byte gUnknown_2037258 + thumb_func_end sub_08097878 + + thumb_func_start sub_08097900 +sub_08097900: @ 0x08097900 + push {lr} + movs r2, #0 + ldr r1, _08097918 + ldr r1, [r1] + ldrb r3, [r0, #8] +_0809790A: + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, r3 + bne _0809791C + adds r0, r2, #0 + b _08097928 + .align 2, 0 +_08097918: .4byte gUnknown_2037258 +_0809791C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _0809790A + movs r0, #0x10 +_08097928: + pop {r1} + bx r1 + thumb_func_end sub_08097900 + + thumb_func_start sub_0809792C +sub_0809792C: @ 0x0809792C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08097960 + movs r1, #0xff + bl sub_080A8878 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _08097964 + adds r4, r4, r0 + adds r0, r4, #0 + adds r0, #8 + adds r1, r6, #0 + bl sub_0806F100 + strb r5, [r6, #0x1b] + ldr r0, _08097968 + strh r0, [r4, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08097960: .4byte sub_0809796C +_08097964: .4byte gUnknown_3005B60 +_08097968: .4byte 0x0000FFFF + thumb_func_end sub_0809792C + + thumb_func_start sub_0809796C +sub_0809796C: @ 0x0809796C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080979C4 + adds r4, r1, r0 + adds r0, r4, #0 + adds r0, #8 + mov r1, sp + bl sub_0806F108 + ldr r0, [sp] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080979C8 + adds r2, r0, r1 + ldrh r1, [r4, #0xc] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080979A8 + ldrh r0, [r4, #0xe] + ldrh r1, [r2, #0x26] + adds r0, r0, r1 + strh r0, [r2, #0x26] +_080979A8: + ldrh r1, [r4, #0xc] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _080979B8 + ldrh r0, [r4, #0xe] + rsbs r0, r0, #0 + strh r0, [r4, #0xe] +_080979B8: + adds r0, r1, #1 + strh r0, [r4, #0xc] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080979C4: .4byte gUnknown_3005B60 +_080979C8: .4byte gUnknown_20205AC + thumb_func_end sub_0809796C + + thumb_func_start sub_080979CC +sub_080979CC: @ 0x080979CC + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080979F8 + adds r0, r0, r1 + adds r0, #8 + mov r1, sp + bl sub_0806F108 + adds r0, r4, #0 + bl sub_080A8964 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080979F8: .4byte gUnknown_3005B60 + thumb_func_end sub_080979CC + + thumb_func_start sub_080979FC +sub_080979FC: @ 0x080979FC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r4, #0 + ldr r7, _08097A40 +_08097A0A: + cmp r4, r6 + beq _08097A30 + cmp r4, r5 + beq _08097A30 + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r7 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08097A30 + ldr r0, _08097A44 + ldrb r0, [r0, #5] + cmp r4, r0 + beq _08097A30 + adds r0, r1, #0 + bl sub_08096D74 +_08097A30: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08097A0A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08097A40: .4byte gUnknown_2036FF0 +_08097A44: .4byte gUnknown_2037230 + thumb_func_end sub_080979FC + + thumb_func_start sub_08097A48 +sub_08097A48: @ 0x08097A48 + movs r0, #0 + strh r0, [r1, #0x26] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_08097A48 + + thumb_func_start sub_08097A58 +sub_08097A58: @ 0x08097A58 + push {lr} + adds r2, r1, #0 + ldrh r0, [r2, #0x26] + subs r0, #8 + strh r0, [r2, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa0 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08097A74 + ldrh r0, [r2, #0x32] + adds r0, #1 + strh r0, [r2, #0x32] +_08097A74: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097A58 + + thumb_func_start sub_08097A7C +sub_08097A7C: @ 0x08097A7C + ldr r0, _08097A8C + strh r0, [r1, #0x26] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + movs r0, #0 + bx lr + .align 2, 0 +_08097A8C: .4byte 0x0000FF60 + thumb_func_end sub_08097A7C + + thumb_func_start sub_08097A90 +sub_08097A90: @ 0x08097A90 + push {lr} + ldrh r0, [r1, #0x26] + adds r0, #8 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08097AA4 + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] +_08097AA4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097A90 + + thumb_func_start sub_08097AAC +sub_08097AAC: @ 0x08097AAC + movs r0, #1 + bx lr + thumb_func_end sub_08097AAC + + thumb_func_start sub_08097AB0 +sub_08097AB0: @ 0x08097AB0 + ldr r1, _08097AD4 + movs r0, #0 + strb r0, [r1] + ldr r2, _08097AD8 + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + rsbs r1, r1, #0 + ands r0, r1 + subs r1, #2 + ands r0, r1 + subs r1, #4 + ands r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_08097AD4: .4byte gUnknown_203725C +_08097AD8: .4byte gUnknown_30030B4 + thumb_func_end sub_08097AB0 + + thumb_func_start sub_08097ADC +sub_08097ADC: @ 0x08097ADC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08097B00 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08097B10 + cmp r0, #1 + bgt _08097B04 + cmp r0, #0 + beq _08097B0A + b _08097B38 + .align 2, 0 +_08097B00: .4byte gUnknown_3005B60 +_08097B04: + cmp r0, #2 + beq _08097B20 + b _08097B38 +_08097B0A: + bl sub_08196F98 + b _08097B18 +_08097B10: + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 +_08097B18: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08097B38 +_08097B20: + bl sub_08196E18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _08097B38 + ldr r1, _08097B40 + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + bl sub_080A8964 +_08097B38: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08097B40: .4byte gUnknown_203725C + thumb_func_end sub_08097ADC + + thumb_func_start sub_08097B44 +sub_08097B44: @ 0x08097B44 + push {lr} + ldr r0, _08097B54 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08097B54: .4byte sub_08097ADC + thumb_func_end sub_08097B44 + + thumb_func_start sub_08097B58 +sub_08097B58: @ 0x08097B58 + push {lr} + ldr r0, _08097B70 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08097B6C + bl sub_080A8964 +_08097B6C: + pop {r0} + bx r0 + .align 2, 0 +_08097B70: .4byte sub_08097ADC + thumb_func_end sub_08097B58 + + thumb_func_start sub_08097B74 +sub_08097B74: @ 0x08097B74 + push {r4, lr} + adds r1, r0, #0 + ldr r4, _08097B90 + ldrb r0, [r4] + cmp r0, #0 + bne _08097B94 + adds r0, r1, #0 + movs r1, #1 + bl sub_08097C64 + movs r0, #2 + strb r0, [r4] + movs r0, #1 + b _08097B96 + .align 2, 0 +_08097B90: .4byte gUnknown_203725C +_08097B94: + movs r0, #0 +_08097B96: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08097B74 + + thumb_func_start sub_08097B9C +sub_08097B9C: @ 0x08097B9C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08195C94 + adds r1, r0, #0 + cmp r1, #0 + bne _08097BB6 + ldr r0, _08097BBC + strb r1, [r0] + adds r0, r4, #0 + bl sub_080A8964 +_08097BB6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08097BBC: .4byte gUnknown_203725C + thumb_func_end sub_08097B9C + + thumb_func_start sub_08097BC0 +sub_08097BC0: @ 0x08097BC0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08097BEC + ldrb r0, [r5] + cmp r0, #0 + bne _08097BF8 + ldr r0, _08097BF0 + adds r1, r4, #0 + bl sub_08008BCC + ldr r0, _08097BF4 + movs r1, #0 + bl sub_080A8878 + adds r0, r4, #0 + bl sub_08195C80 + movs r0, #2 + strb r0, [r5] + movs r0, #1 + b _08097BFA + .align 2, 0 +_08097BEC: .4byte gUnknown_203725C +_08097BF0: .4byte gUnknown_2021C7C +_08097BF4: .4byte sub_08097B9C +_08097BF8: + movs r0, #0 +_08097BFA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08097BC0 + + thumb_func_start sub_08097C00 +sub_08097C00: @ 0x08097C00 + push {lr} + adds r1, r0, #0 + ldr r2, _08097C1C + ldrb r0, [r2] + cmp r0, #0 + bne _08097C20 + movs r0, #3 + strb r0, [r2] + adds r0, r1, #0 + movs r1, #0 + bl sub_08097C64 + movs r0, #1 + b _08097C22 + .align 2, 0 +_08097C1C: .4byte gUnknown_203725C +_08097C20: + movs r0, #0 +_08097C22: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097C00 + + thumb_func_start sub_08097C28 +sub_08097C28: @ 0x08097C28 + push {lr} + ldr r2, _08097C3C + movs r1, #3 + strb r1, [r2] + movs r1, #1 + bl sub_08097C64 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_08097C3C: .4byte gUnknown_203725C + thumb_func_end sub_08097C28 + + thumb_func_start sub_08097C40 +sub_08097C40: @ 0x08097C40 + push {lr} + ldr r1, _08097C58 + ldrb r0, [r1] + cmp r0, #0 + bne _08097C5C + movs r0, #2 + strb r0, [r1] + bl sub_08097C8C + movs r0, #1 + b _08097C5E + .align 2, 0 +_08097C58: .4byte gUnknown_203725C +_08097C5C: + movs r0, #0 +_08097C5E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097C40 + + thumb_func_start sub_08097C64 +sub_08097C64: @ 0x08097C64 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldr r0, _08097C88 + adds r1, r2, #0 + bl sub_08008BCC + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08196EB8 + bl sub_08097B44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08097C88: .4byte gUnknown_2021C7C + thumb_func_end sub_08097C64 + + thumb_func_start sub_08097C8C +sub_08097C8C: @ 0x08097C8C + push {lr} + movs r0, #1 + bl sub_08196EB8 + bl sub_08097B44 + pop {r0} + bx r0 + thumb_func_end sub_08097C8C + + thumb_func_start sub_08097C9C +sub_08097C9C: @ 0x08097C9C + push {lr} + bl sub_08097B58 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r1, _08097CB4 + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08097CB4: .4byte gUnknown_203725C + thumb_func_end sub_08097C9C + + thumb_func_start sub_08097CB8 +sub_08097CB8: @ 0x08097CB8 + ldr r0, _08097CC0 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08097CC0: .4byte gUnknown_203725C + thumb_func_end sub_08097CB8 + + thumb_func_start sub_08097CC4 +sub_08097CC4: @ 0x08097CC4 + push {lr} + ldr r0, _08097CD4 + ldrb r0, [r0] + cmp r0, #0 + beq _08097CD8 + movs r0, #0 + b _08097CDA + .align 2, 0 +_08097CD4: .4byte gUnknown_203725C +_08097CD8: + movs r0, #1 +_08097CDA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097CC4 + + thumb_func_start sub_08097CE0 +sub_08097CE0: @ 0x08097CE0 + push {lr} + bl sub_08097B58 + movs r0, #0 + movs r1, #1 + bl sub_08196FF0 + ldr r1, _08097CF8 + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08097CF8: .4byte gUnknown_203725C + thumb_func_end sub_08097CE0 + + thumb_func_start sub_08097CFC +sub_08097CFC: @ 0x08097CFC + push {lr} + bl sub_08097B58 + ldr r1, _08097D0C + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08097D0C: .4byte gUnknown_203725C + thumb_func_end sub_08097CFC + + thumb_func_start sub_08097D10 +sub_08097D10: @ 0x08097D10 + push {lr} + ldr r0, _08097D20 + ldrb r0, [r0, #3] + cmp r0, #1 + beq _08097D24 + movs r0, #1 + b _08097D26 + .align 2, 0 +_08097D20: .4byte gUnknown_2037230 +_08097D24: + movs r0, #0 +_08097D26: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097D10 + + thumb_func_start sub_08097D2C +sub_08097D2C: @ 0x08097D2C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08097D10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08097D46 + bl sub_0808B1C8 + adds r0, r4, #0 + bl sub_080A8964 +_08097D46: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08097D2C + + thumb_func_start sub_08097D4C +sub_08097D4C: @ 0x08097D4C + push {lr} + ldr r0, _08097D64 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08097D68 + bl sub_0808B658 + movs r0, #1 + b _08097D6A + .align 2, 0 +_08097D64: .4byte sub_08097D2C +_08097D68: + movs r0, #0 +_08097D6A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097D4C + + thumb_func_start sub_08097D70 +sub_08097D70: @ 0x08097D70 + push {lr} + bl sub_08096E04 + ldr r0, _08097D84 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08097D84: .4byte sub_08097D2C + thumb_func_end sub_08097D70 + + thumb_func_start sub_08097D88 +sub_08097D88: @ 0x08097D88 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08097DF8 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08097DB2 + bl sub_08097D10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _08097DB2 + bl sub_0808B1C8 + strh r4, [r5, #8] +_08097DB2: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08097DDA + ldr r2, _08097DFC + ldr r0, _08097E00 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _08097DDA + adds r0, r1, #0 + bl sub_08096D74 + movs r0, #1 + strh r0, [r5, #0xa] +_08097DDA: + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08097DF0 + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08097DF0 + adds r0, r6, #0 + bl sub_080A8964 +_08097DF0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08097DF8: .4byte gUnknown_3005B60 +_08097DFC: .4byte gUnknown_2036FF0 +_08097E00: .4byte gUnknown_3005B50 + thumb_func_end sub_08097D88 + + thumb_func_start sub_08097E04 +sub_08097E04: @ 0x08097E04 + push {lr} + ldr r0, _08097E1C + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08097E20 + bl sub_0808B658 + movs r0, #1 + b _08097E22 + .align 2, 0 +_08097E1C: .4byte sub_08097D88 +_08097E20: + movs r0, #0 +_08097E22: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08097E04 + + thumb_func_start sub_08097E28 +sub_08097E28: @ 0x08097E28 + push {r4, r5, lr} + ldr r4, _08097E6C + ldrb r0, [r4] + bl sub_08096E40 + ldr r0, _08097E70 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08097E74 + ldrb r1, [r4] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _08097E66 + adds r0, r1, #0 + bl sub_08096D74 + ldr r0, _08097E78 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0xa] +_08097E66: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08097E6C: .4byte gUnknown_3005B50 +_08097E70: .4byte sub_08097D88 +_08097E74: .4byte gUnknown_2036FF0 +_08097E78: .4byte gUnknown_3005B60 + thumb_func_end sub_08097E28 + + thumb_func_start sub_08097E7C +sub_08097E7C: @ 0x08097E7C + push {lr} + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08097EA8 + adds r0, r0, r1 + bl sub_08092BF4 + bl sub_080D2C2C + bl sub_08096EEC + pop {r0} + bx r0 + .align 2, 0 +_08097EA8: .4byte gUnknown_2036FF0 + thumb_func_end sub_08097E7C + + thumb_func_start sub_08097EAC +sub_08097EAC: @ 0x08097EAC + push {r4, lr} + ldr r4, _08097EF4 + ldr r0, _08097EF8 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _08097ECA + adds r0, r1, #0 + bl sub_08092BF4 +_08097ECA: + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08092BF4 + bl sub_080D2C2C + bl sub_08096EEC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08097EF4: .4byte gUnknown_2036FF0 +_08097EF8: .4byte gUnknown_3005B50 + thumb_func_end sub_08097EAC + + thumb_func_start sub_08097EFC +sub_08097EFC: @ 0x08097EFC + push {lr} + ldr r0, _08097F18 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08097F1C + adds r0, r0, r1 + ldr r1, _08097F20 + ldrb r1, [r1] + bl sub_08092F8C + pop {r0} + bx r0 + .align 2, 0 +_08097F18: .4byte gUnknown_3005B50 +_08097F1C: .4byte gUnknown_2036FF0 +_08097F20: .4byte gUnknown_2037294 + thumb_func_end sub_08097EFC + + thumb_func_start sub_08097F24 +sub_08097F24: @ 0x08097F24 + push {lr} + ldr r0, _08097F3C + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08097F40 + adds r0, r0, r1 + bl sub_08092B94 + pop {r0} + bx r0 + .align 2, 0 +_08097F3C: .4byte gUnknown_3005B50 +_08097F40: .4byte gUnknown_2036FF0 + thumb_func_end sub_08097F24 + + thumb_func_start sub_08097F44 +sub_08097F44: @ 0x08097F44 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08097FB0 + adds r5, r0, r1 + ldrb r7, [r5, #0xc] + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08097F70 + bl sub_08097D10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _08097F70 + bl sub_0808B1C8 + strh r4, [r5, #8] +_08097F70: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08097F94 + ldr r0, _08097FB4 + lsls r1, r7, #3 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _08097F94 + adds r0, r1, #0 + bl sub_08096D74 + movs r0, #1 + strh r0, [r5, #0xa] +_08097F94: + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08097FAA + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08097FAA + adds r0, r6, #0 + bl sub_080A8964 +_08097FAA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08097FB0: .4byte gUnknown_3005B60 +_08097FB4: .4byte gUnknown_2036FF0 + thumb_func_end sub_08097F44 + + thumb_func_start sub_08097FB8 +sub_08097FB8: @ 0x08097FB8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + bl sub_080B3F38 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08098058 + ldrb r0, [r0] + cmp r0, #2 + bne _08098068 + movs r0, #1 + bl sub_080B3F38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080979FC + ldr r7, _0809805C + adds r0, r7, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08098060 + mov sb, r0 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + mov r1, sb + adds r6, r0, r1 + strh r4, [r6, #0xc] + ldr r2, _08098064 + mov r8, r2 + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _08098022 + adds r0, r1, #0 + bl sub_08096D74 + movs r0, #1 + strh r0, [r6, #0xa] +_08098022: + adds r0, r7, #0 + movs r1, #0x51 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + mov r1, sb + adds r4, r0, r1 + strh r5, [r4, #0xc] + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r0, r0, #2 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _080980A2 + adds r0, r1, #0 + bl sub_08096D74 + movs r0, #1 + strh r0, [r4, #0xa] + b _080980A2 + .align 2, 0 +_08098058: .4byte gUnknown_3005E08 +_0809805C: .4byte sub_08097F44 +_08098060: .4byte gUnknown_3005B60 +_08098064: .4byte gUnknown_2036FF0 +_08098068: + adds r0, r4, #0 + bl sub_08096E40 + ldr r0, _080980B0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080980B4 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r5, r0, r1 + strh r4, [r5, #0xc] + ldr r1, _080980B8 + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, r0, #0x1e + cmp r0, #0 + blt _080980A2 + adds r0, r1, #0 + bl sub_08096D74 + movs r0, #1 + strh r0, [r5, #0xa] +_080980A2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080980B0: .4byte sub_08097F44 +_080980B4: .4byte gUnknown_3005B60 +_080980B8: .4byte gUnknown_2036FF0 + thumb_func_end sub_08097FB8 + + thumb_func_start sub_080980BC +sub_080980BC: @ 0x080980BC + push {lr} + ldr r0, _080980D4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080980D8 + bl sub_0808B658 + movs r0, #1 + b _080980DA + .align 2, 0 +_080980D4: .4byte sub_08097F44 +_080980D8: + movs r0, #0 +_080980DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080980BC + + thumb_func_start sub_080980E0 +sub_080980E0: @ 0x080980E0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080980F8 + lsls r0, r0, #3 + ldr r1, _080980F4 + adds r0, r0, r1 + b _080980FA + .align 2, 0 +_080980F4: .4byte gUnknown_84E8860 +_080980F8: + ldr r0, _08098100 +_080980FA: + pop {r1} + bx r1 + .align 2, 0 +_08098100: .4byte gUnknown_84E8860 + thumb_func_end sub_080980E0 + + thumb_func_start sub_08098104 +sub_08098104: @ 0x08098104 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08098140 + movs r2, #0xe0 + lsls r2, r2, #1 + adds r3, r4, #0 + bl sub_0800195C + bl sub_080985EC + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08098140: .4byte gUnknown_84E85E0 + thumb_func_end sub_08098104 + + thumb_func_start sub_08098144 +sub_08098144: @ 0x08098144 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080981B4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08098144 + + thumb_func_start sub_0809815C +sub_0809815C: @ 0x0809815C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080981B0 + lsls r4, r4, #3 + adds r1, r4, r5 + ldr r1, [r1] + movs r2, #0x90 + lsls r2, r2, #1 + adds r3, r6, #0 + bl sub_0800195C + adds r5, #4 + adds r4, r4, r5 + ldr r0, [r4] + mov r1, r8 + movs r2, #0x20 + bl sub_080A1200 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080981B0: .4byte gUnknown_84E8860 + thumb_func_end sub_0809815C + + thumb_func_start sub_080981B4 +sub_080981B4: @ 0x080981B4 + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _080981DC + ldr r1, [r1] + ldrb r1, [r1, #0x14] + lsrs r1, r1, #3 + adds r2, r4, #0 + bl sub_0809815C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080981DC: .4byte gUnknown_3005AF0 + thumb_func_end sub_080981B4 + + thumb_func_start sub_080981E0 +sub_080981E0: @ 0x080981E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_0800401C + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0800401C + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + adds r0, r4, #0 + movs r1, #3 + bl sub_0800401C + mov sb, r0 + mov r2, sb + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + adds r0, r4, #0 + movs r1, #4 + bl sub_0800401C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x10] + mov r0, r8 + subs r0, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + subs r4, r6, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + mov sl, r0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0xc] + str r2, [sp, #8] + adds r0, r7, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x14] + adds r3, r4, #0 + bl sub_080026E0 + adds r1, r5, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r0, r8 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x18] + mov r2, sb + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] + str r0, [sp] + mov r0, sl + str r0, [sp, #4] + ldr r2, [sp, #0xc] + str r2, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x18] + adds r3, r4, #0 + bl sub_080026E0 + adds r1, r5, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + add r8, sb + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r2, sl + str r2, [sp] + str r2, [sp, #4] + ldr r0, [sp, #0xc] + str r0, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_080026E0 + adds r1, r5, #3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + mov r0, sl + str r0, [sp] + ldr r2, [sp, #0x10] + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + ldr r0, [sp, #0xc] + str r0, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x14] + mov r3, sb + bl sub_080026E0 + adds r1, r5, #5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r2, sl + str r2, [sp] + str r4, [sp, #4] + ldr r0, [sp, #0xc] + str r0, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + mov r3, sb + bl sub_080026E0 + adds r1, r5, #6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0x10] + adds r6, r6, r2 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, sl + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0xc] + str r2, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x14] + adds r3, r6, #0 + bl sub_080026E0 + adds r1, r5, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x1c] + str r0, [sp] + mov r2, sl + str r2, [sp, #4] + ldr r0, [sp, #0xc] + str r0, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x18] + adds r3, r6, #0 + bl sub_080026E0 + adds r5, #8 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r2, sl + str r2, [sp] + str r2, [sp, #4] + ldr r0, [sp, #0xc] + str r0, [sp, #8] + adds r0, r7, #0 + adds r1, r5, #0 + mov r2, r8 + adds r3, r6, #0 + bl sub_080026E0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080981E0 + + thumb_func_start sub_08098368 +sub_08098368: @ 0x08098368 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r4, r0, #0 + mov sb, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + adds r0, r4, #0 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_0800401C + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0800401C + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + adds r0, r4, #0 + movs r1, #3 + bl sub_0800401C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #4 + bl sub_0800401C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + mov r0, r8 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + mov r1, sb + adds r3, r4, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r0, r8 + adds r0, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + subs r0, r5, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + adds r3, r4, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + add r8, r5 + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r5, r6, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + str r0, [sp] + ldr r4, [sp, #0xc] + subs r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x10] + adds r3, r5, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + str r0, [sp] + str r4, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + adds r3, r5, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0xc] + adds r6, r6, r0 + subs r6, #1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x10] + adds r3, r6, #0 + bl sub_080026E0 + mov r1, sb + adds r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0x14] + adds r3, r6, #0 + bl sub_080026E0 + movs r0, #8 + add sb, r0 + mov r0, sb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r7, #0 + mov r1, sb + mov r2, r8 + adds r3, r6, #0 + bl sub_080026E0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08098368 + + thumb_func_start sub_08098504 +sub_08098504: @ 0x08098504 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0xc + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r6, #0 + movs r1, #0 + bl sub_0800401C + mov sb, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r6, #0 + movs r1, #1 + bl sub_0800401C + mov r8, r0 + mov r1, r8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + adds r0, r6, #0 + movs r1, #2 + bl sub_0800401C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + movs r1, #3 + bl sub_0800401C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r6, #0 + movs r1, #4 + bl sub_0800401C + movs r1, #1 + rsbs r1, r1, #0 + add r8, r1 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + subs r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x12 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + mov r0, sb + movs r1, #0 + mov r2, r8 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08098504 + + thumb_func_start sub_080985A0 +sub_080985A0: @ 0x080985A0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080985DC + lsls r0, r0, #2 + ldr r1, _080985B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080985B4: .4byte _080985B8 +_080985B8: @ jump table + .4byte _080985CC @ case 0 + .4byte _080985D0 @ case 1 + .4byte _080985D4 @ case 2 + .4byte _080985D8 @ case 3 + .4byte _080985DC @ case 4 +_080985CC: + movs r0, #0 + b _080985DE +_080985D0: + movs r0, #0x10 + b _080985DE +_080985D4: + movs r0, #0x20 + b _080985DE +_080985D8: + movs r0, #0x30 + b _080985DE +_080985DC: + movs r0, #0x40 +_080985DE: + lsls r0, r0, #1 + ldr r1, _080985E8 + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_080985E8: .4byte gUnknown_84E87A0 + thumb_func_end sub_080985A0 + + thumb_func_start sub_080985EC +sub_080985EC: @ 0x080985EC + ldr r0, _080985F0 + bx lr + .align 2, 0 +_080985F0: .4byte gUnknown_84E8840 + thumb_func_end sub_080985EC + + thumb_func_start sub_080985F4 +sub_080985F4: @ 0x080985F4 + push {r4, r5, lr} + adds r3, r1, #0 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r2, _08098638 + ldr r5, _0809863C + ldr r1, [r5] + ldrb r1, [r1, #0x14] + lsrs r1, r1, #3 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0x90 + lsls r2, r2, #1 + bl sub_0800195C + ldr r0, [r5] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r0, [r0, #4] + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08098638: .4byte gUnknown_84E8860 +_0809863C: .4byte gUnknown_3005AF0 + thumb_func_end sub_080985F4 + + thumb_func_start sub_08098640 +sub_08098640: @ 0x08098640 + push {lr} + adds r3, r0, #0 + movs r0, #0 + strb r0, [r3, #1] + str r0, [r3, #8] + strb r0, [r3] + str r0, [r3, #4] + str r1, [r3, #0x5c] + str r2, [r3, #0x60] + movs r2, #0 + movs r1, #3 + adds r0, r3, #0 + adds r0, #0x70 +_0809865A: + str r2, [r0] + subs r0, #4 + subs r1, #1 + cmp r1, #0 + bge _0809865A + adds r1, r3, #0 + adds r1, #0xc + movs r2, #0 + adds r0, r3, #0 + adds r0, #0x58 +_0809866E: + str r2, [r0] + subs r0, #4 + cmp r0, r1 + bge _0809866E + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08098640 + + thumb_func_start sub_0809867C +sub_0809867C: @ 0x0809867C + str r1, [r0, #8] + movs r1, #1 + strb r1, [r0, #1] + movs r0, #1 + bx lr + .align 2, 0 + thumb_func_end sub_0809867C + + thumb_func_start sub_08098688 +sub_08098688: @ 0x08098688 + movs r2, #2 + strb r2, [r0, #1] + str r1, [r0, #4] + bx lr + thumb_func_end sub_08098688 + + thumb_func_start sub_08098690 +sub_08098690: @ 0x08098690 + movs r1, #0 + strb r1, [r0, #1] + str r1, [r0, #8] + bx lr + thumb_func_end sub_08098690 + + thumb_func_start sub_08098698 +sub_08098698: @ 0x08098698 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _080986A6 +_080986A2: + movs r0, #0 + b _08098718 +_080986A6: + ldrb r0, [r4, #1] + cmp r0, #1 + beq _080986DE + cmp r0, #1 + bgt _080986B6 + cmp r0, #0 + beq _080986A2 + b _08098716 +_080986B6: + cmp r0, #2 + bne _08098716 + ldr r0, [r4, #4] + cmp r0, #0 + beq _080986DA + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08098716 + strb r0, [r4, #1] + b _08098716 +_080986D0: + strb r2, [r4, #1] + b _080986A2 +_080986D4: + movs r0, #0 + strb r0, [r4, #1] + b _08098718 +_080986DA: + movs r0, #1 + strb r0, [r4, #1] +_080986DE: + ldr r2, [r4, #8] + cmp r2, #0 + beq _080986D0 + ldr r0, _080986F0 + ldr r0, [r0] + cmp r2, r0 + bne _080986F4 +_080986EC: + svc #2 + b _080986EC + .align 2, 0 +_080986F0: .4byte gUnknown_84E8900 +_080986F4: + ldrb r1, [r2] + adds r0, r2, #1 + str r0, [r4, #8] + lsls r1, r1, #2 + ldr r0, [r4, #0x5c] + adds r1, r0, r1 + ldr r0, [r4, #0x60] + cmp r1, r0 + bhs _080986D4 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080986DE +_08098716: + movs r0, #1 +_08098718: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098698 + + thumb_func_start sub_08098720 +sub_08098720: @ 0x08098720 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldrb r1, [r2] + adds r0, r1, #1 + cmp r0, #0x13 + bgt _08098742 + lsls r0, r1, #2 + adds r1, r2, #0 + adds r1, #0xc + adds r1, r1, r0 + str r3, [r1] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0 + b _08098744 +_08098742: + movs r0, #1 +_08098744: + pop {r1} + bx r1 + thumb_func_end sub_08098720 + + thumb_func_start sub_08098748 +sub_08098748: @ 0x08098748 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2] + cmp r0, #0 + beq _08098764 + subs r0, #1 + strb r0, [r2] + ldrb r1, [r2] + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0xc + adds r0, r0, r1 + ldr r0, [r0] + b _08098766 +_08098764: + movs r0, #0 +_08098766: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098748 + + thumb_func_start sub_0809876C +sub_0809876C: @ 0x0809876C + str r1, [r0, #8] + bx lr + thumb_func_end sub_0809876C + + thumb_func_start sub_08098770 +sub_08098770: @ 0x08098770 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, [r4, #8] + bl sub_08098720 + str r5, [r4, #8] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08098770 + + thumb_func_start sub_08098784 +sub_08098784: @ 0x08098784 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098748 + str r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08098784 + + thumb_func_start sub_08098794 +sub_08098794: @ 0x08098794 + adds r3, r0, #0 + ldr r2, [r3, #8] + ldrb r0, [r2] + adds r2, #1 + str r2, [r3, #8] + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r0, r1 + adds r2, #1 + str r2, [r3, #8] + bx lr + .align 2, 0 + thumb_func_end sub_08098794 + + thumb_func_start sub_080987AC +sub_080987AC: @ 0x080987AC + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldr r0, [r3, #8] + ldrb r6, [r0] + adds r0, #1 + str r0, [r3, #8] + ldrb r5, [r0] + adds r2, r0, #1 + str r2, [r3, #8] + ldrb r4, [r0, #1] + adds r1, r2, #1 + str r1, [r3, #8] + ldrb r0, [r2, #1] + adds r1, #1 + str r1, [r3, #8] + lsls r0, r0, #8 + adds r0, r0, r4 + lsls r0, r0, #8 + adds r0, r0, r5 + lsls r0, r0, #8 + adds r0, r0, r6 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080987AC + + thumb_func_start sub_080987DC +sub_080987DC: @ 0x080987DC + ldr r1, _080987E4 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_080987E4: .4byte gUnknown_3000F2C + thumb_func_end sub_080987DC + + thumb_func_start sub_080987E8 +sub_080987E8: @ 0x080987E8 + ldr r1, _080987F0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080987F0: .4byte gUnknown_3000F2C + thumb_func_end sub_080987E8 + + thumb_func_start sub_080987F4 +sub_080987F4: @ 0x080987F4 + ldr r0, _080987FC + ldrb r0, [r0] + bx lr + .align 2, 0 +_080987FC: .4byte gUnknown_3000F2C + thumb_func_end sub_080987F4 + + thumb_func_start sub_08098800 +sub_08098800: @ 0x08098800 + push {lr} + ldr r0, _08098810 + ldrb r0, [r0] + cmp r0, #0 + beq _08098814 + movs r0, #0 + b _08098816 + .align 2, 0 +_08098810: .4byte gUnknown_3000E38 +_08098814: + movs r0, #1 +_08098816: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098800 + + thumb_func_start sub_0809881C +sub_0809881C: @ 0x0809881C + push {lr} + ldr r0, _08098834 + ldr r1, _08098838 + ldr r2, _0809883C + bl sub_08098640 + ldr r1, _08098840 + movs r0, #2 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08098834: .4byte gUnknown_3000E40 +_08098838: .4byte gUnknown_81DABAC +_0809883C: .4byte gUnknown_81DAF30 +_08098840: .4byte gUnknown_3000E38 + thumb_func_end sub_0809881C + + thumb_func_start sub_08098844 +sub_08098844: @ 0x08098844 + push {r4, lr} + ldr r4, _08098868 + ldrb r0, [r4] + cmp r0, #2 + beq _08098878 + cmp r0, #1 + beq _08098878 + bl sub_080987DC + ldr r0, _0809886C + bl sub_08098698 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08098870 + movs r0, #1 + b _0809887A + .align 2, 0 +_08098868: .4byte gUnknown_3000E38 +_0809886C: .4byte gUnknown_3000E40 +_08098870: + movs r0, #2 + strb r0, [r4] + bl sub_080987E8 +_08098878: + movs r0, #0 +_0809887A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08098844 + + thumb_func_start sub_08098880 +sub_08098880: @ 0x08098880 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080988A8 + ldr r1, _080988AC + ldr r2, _080988B0 + adds r0, r4, #0 + bl sub_08098640 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809867C + bl sub_080987DC + ldr r1, _080988B4 + movs r0, #0 + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080988A8: .4byte gUnknown_3000E40 +_080988AC: .4byte gUnknown_81DABAC +_080988B0: .4byte gUnknown_81DAF30 +_080988B4: .4byte gUnknown_3000E38 + thumb_func_end sub_08098880 + + thumb_func_start sub_080988B8 +sub_080988B8: @ 0x080988B8 + ldr r1, _080988C0 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_080988C0: .4byte gUnknown_3000E38 + thumb_func_end sub_080988B8 + + thumb_func_start sub_080988C4 +sub_080988C4: @ 0x080988C4 + push {lr} + ldr r1, _080988D4 + movs r0, #0 + strb r0, [r1] + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080988D4: .4byte gUnknown_3000E38 + thumb_func_end sub_080988C4 + + thumb_func_start sub_080988D8 +sub_080988D8: @ 0x080988D8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08098904 + ldr r1, _08098908 + ldr r2, _0809890C + adds r0, r4, #0 + bl sub_08098640 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809867C +_080988F0: + ldr r0, _08098904 + bl sub_08098698 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080988F0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08098904: .4byte gUnknown_3000EB8 +_08098908: .4byte gUnknown_81DABAC +_0809890C: .4byte gUnknown_81DAF30 + thumb_func_end sub_080988D8 + + thumb_func_start sub_08098910 +sub_08098910: @ 0x08098910 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _08098928 + ldr r2, [r0, #8] + cmp r2, #0 + beq _08098924 +_0809891E: + ldrb r0, [r2] + cmp r0, #0 + bne _0809892C +_08098924: + movs r0, #0 + b _0809894A + .align 2, 0 +_08098928: .4byte gUnknown_2036FB8 +_0809892C: + cmp r0, r1 + beq _08098934 + adds r2, #5 + b _0809891E +_08098934: + adds r2, #1 + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + ldrb r1, [r2, #2] + lsls r1, r1, #0x10 + adds r0, r0, r1 + ldrb r1, [r2, #3] + lsls r1, r1, #0x18 + adds r0, r0, r1 +_0809894A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098910 + + thumb_func_start sub_08098950 +sub_08098950: @ 0x08098950 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08098910 + cmp r0, #0 + beq _08098962 + bl sub_080988D8 +_08098962: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08098950 + + thumb_func_start sub_08098968 +sub_08098968: @ 0x08098968 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08098910 + adds r6, r0, #0 + cmp r6, #0 + beq _08098984 +_08098978: + ldrb r1, [r6] + ldrb r0, [r6, #1] + lsls r0, r0, #8 + orrs r1, r0 + cmp r1, #0 + bne _08098988 +_08098984: + movs r0, #0 + b _080989C2 +_08098988: + adds r6, #2 + ldrb r5, [r6] + ldrb r0, [r6, #1] + lsls r0, r0, #8 + orrs r5, r0 + adds r6, #2 + adds r0, r1, #0 + bl sub_0809CF6C + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_0809CF6C + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + cmp r4, r0 + beq _080989AE + adds r6, #4 + b _08098978 +_080989AE: + ldrb r0, [r6] + ldrb r1, [r6, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + ldrb r1, [r6, #2] + lsls r1, r1, #0x10 + adds r0, r0, r1 + ldrb r1, [r6, #3] + lsls r1, r1, #0x18 + adds r0, r0, r1 +_080989C2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08098968 + + thumb_func_start sub_080989C8 +sub_080989C8: @ 0x080989C8 + push {lr} + movs r0, #1 + bl sub_08098950 + pop {r0} + bx r0 + thumb_func_end sub_080989C8 + + thumb_func_start sub_080989D4 +sub_080989D4: @ 0x080989D4 + push {lr} + movs r0, #3 + bl sub_08098950 + pop {r0} + bx r0 + thumb_func_end sub_080989D4 + + thumb_func_start sub_080989E0 +sub_080989E0: @ 0x080989E0 + push {lr} + movs r0, #5 + bl sub_08098950 + pop {r0} + bx r0 + thumb_func_end sub_080989E0 + + thumb_func_start sub_080989EC +sub_080989EC: @ 0x080989EC + push {lr} + movs r0, #7 + bl sub_08098950 + pop {r0} + bx r0 + thumb_func_end sub_080989EC + + thumb_func_start sub_080989F8 +sub_080989F8: @ 0x080989F8 + push {lr} + movs r0, #6 + bl sub_08098950 + pop {r0} + bx r0 + thumb_func_end sub_080989F8 + + thumb_func_start sub_08098A04 +sub_08098A04: @ 0x08098A04 + push {lr} + movs r0, #2 + bl sub_08098968 + cmp r0, #0 + beq _08098A18 + bl sub_08098880 + movs r0, #1 + b _08098A1A +_08098A18: + movs r0, #0 +_08098A1A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098A04 + + thumb_func_start sub_08098A20 +sub_08098A20: @ 0x08098A20 + push {lr} + movs r0, #4 + bl sub_08098968 + cmp r0, #0 + beq _08098A30 + bl sub_080988D8 +_08098A30: + pop {r0} + bx r0 + thumb_func_end sub_08098A20 + + thumb_func_start sub_08098A34 +sub_08098A34: @ 0x08098A34 + push {lr} + ldr r0, _08098A50 + ldr r0, [r0] + ldr r1, _08098A54 + adds r0, r0, r1 + movs r1, #0xfa + lsls r1, r1, #2 + bl sub_0806F3AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08098A50: .4byte gUnknown_3005AEC +_08098A54: .4byte 0x0000372C + thumb_func_end sub_08098A34 + + thumb_func_start sub_08098A58 +sub_08098A58: @ 0x08098A58 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r0, _08098A78 + ldr r1, [r0] + ldr r0, _08098A7C + adds r1, r1, r0 + ldr r2, _08098A80 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08098A78: .4byte gUnknown_3005AEC +_08098A7C: .4byte 0x00003728 +_08098A80: .4byte 0x050000FB + thumb_func_end sub_08098A58 + + thumb_func_start sub_08098A84 +sub_08098A84: @ 0x08098A84 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + ldr r0, [sp, #0x24] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08098AE8 + mov sl, r0 + ldr r5, [r0] + ldr r1, _08098AEC + adds r4, r5, r1 + bl sub_08098A58 + ldr r0, _08098AF0 + cmp r8, r0 + bhi _08098AFC + movs r0, #0x33 + strb r0, [r4] + mov r2, sb + strb r2, [r4, #1] + strb r7, [r4, #2] + strb r6, [r4, #3] + ldr r1, _08098AF4 + adds r0, r5, r1 + ldr r1, [sp] + mov r2, r8 + bl memcpy + bl sub_08098A34 + mov r2, sl + ldr r1, [r2] + ldr r2, _08098AF8 + adds r1, r1, r2 + str r0, [r1] + movs r0, #1 + b _08098AFE + .align 2, 0 +_08098AE8: .4byte gUnknown_3005AEC +_08098AEC: .4byte 0x0000372C +_08098AF0: .4byte 0x000003E3 +_08098AF4: .4byte 0x00003730 +_08098AF8: .4byte 0x00003728 +_08098AFC: + movs r0, #0 +_08098AFE: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098A84 + + thumb_func_start sub_08098B10 +sub_08098B10: @ 0x08098B10 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r6, _08098B60 + ldr r5, [r6] + ldr r0, _08098B64 + adds r2, r5, r0 + ldr r7, _08098B68 + movs r0, #0 + str r0, [r7] + ldrb r0, [r2] + cmp r0, #0x33 + bne _08098B78 + ldrb r1, [r2, #1] + movs r0, #4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _08098B78 + ldrb r1, [r2, #2] + movs r0, #5 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _08098B78 + ldrb r0, [r2, #3] + cmp r0, r3 + bne _08098B78 + bl sub_08098A34 + ldr r1, [r6] + ldr r2, _08098B6C + adds r1, r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08098B74 + str r4, [r7] + ldr r1, _08098B70 + adds r0, r5, r1 + b _08098B7A + .align 2, 0 +_08098B60: .4byte gUnknown_3005AEC +_08098B64: .4byte 0x0000372C +_08098B68: .4byte gUnknown_2037260 +_08098B6C: .4byte 0x00003728 +_08098B70: .4byte 0x00003730 +_08098B74: + bl sub_08098A58 +_08098B78: + adds r0, r4, #0 +_08098B7A: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08098B10 + + thumb_func_start sub_08098B80 +sub_08098B80: @ 0x08098B80 + push {r4, lr} + ldr r4, _08098BB8 + ldr r0, [r4] + ldr r2, _08098BBC + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0x33 + bne _08098BC4 + ldrb r0, [r1, #1] + cmp r0, #0xff + bne _08098BC4 + ldrb r0, [r1, #2] + cmp r0, #0xff + bne _08098BC4 + ldrb r0, [r1, #3] + cmp r0, #0xff + bne _08098BC4 + bl sub_08098A34 + ldr r1, [r4] + ldr r2, _08098BC0 + adds r1, r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08098BC4 + movs r0, #1 + b _08098BC6 + .align 2, 0 +_08098BB8: .4byte gUnknown_3005AEC +_08098BBC: .4byte 0x0000372C +_08098BC0: .4byte 0x00003728 +_08098BC4: + movs r0, #0 +_08098BC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08098B80 + + thumb_func_start sub_08098BCC +sub_08098BCC: @ 0x08098BCC + push {r4, r5, r6, lr} + ldr r6, _08098C0C + ldr r5, [r6] + ldr r0, _08098C10 + adds r4, r5, r0 + bl sub_0801AD40 + cmp r0, #0 + beq _08098C20 + ldrb r0, [r4] + cmp r0, #0x33 + bne _08098C20 + ldrb r0, [r4, #1] + cmp r0, #0xff + bne _08098C20 + ldrb r0, [r4, #2] + cmp r0, #0xff + bne _08098C20 + ldrb r0, [r4, #3] + cmp r0, #0xff + bne _08098C20 + bl sub_08098A34 + ldr r1, [r6] + ldr r2, _08098C14 + adds r1, r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _08098C1C + ldr r1, _08098C18 + adds r0, r5, r1 + b _08098C22 + .align 2, 0 +_08098C0C: .4byte gUnknown_3005AEC +_08098C10: .4byte 0x0000372C +_08098C14: .4byte 0x00003728 +_08098C18: .4byte 0x00003730 +_08098C1C: + bl sub_08098A58 +_08098C20: + movs r0, #0 +_08098C22: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08098BCC + + thumb_func_start sub_08098C28 +sub_08098C28: @ 0x08098C28 + push {lr} + sub sp, #4 + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _08098C50 + cmp r1, r0 + bls _08098C3A + adds r1, r0, #0 +_08098C3A: + movs r0, #0xff + str r0, [sp] + adds r0, r2, #0 + movs r2, #0xff + movs r3, #0xff + bl sub_08098A84 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08098C50: .4byte 0x000003E3 + thumb_func_end sub_08098C28 + + thumb_func_start sub_08098C54 +sub_08098C54: @ 0x08098C54 + movs r0, #0 + bx lr + thumb_func_end sub_08098C54 + + thumb_func_start sub_08098C58 +sub_08098C58: @ 0x08098C58 + movs r0, #0 + bx lr + thumb_func_end sub_08098C58 + + thumb_func_start sub_08098C5C +sub_08098C5C: @ 0x08098C5C + push {lr} + bl sub_08098690 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08098C5C + + thumb_func_start sub_08098C68 +sub_08098C68: @ 0x08098C68 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08098C68 + + thumb_func_start sub_08098C80 +sub_08098C80: @ 0x08098C80 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + ldr r1, _08098C9C + lsrs r0, r0, #0xe + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_08098C80 + + thumb_func_start sub_08098C94 +sub_08098C94: @ 0x08098C94 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08098C9C: .4byte gUnknown_81DAF8C + thumb_func_end sub_08098C94 + + thumb_func_start sub_08098CA0 +sub_08098CA0: @ 0x08098CA0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r6, r0, #0 + ldr r4, _08098CD0 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r0, r4 + ldr r0, [r0] + bl _call_via_r0 + strh r0, [r6] + thumb_func_end sub_08098CA0 + + thumb_func_start sub_08098CC8 +sub_08098CC8: @ 0x08098CC8 + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08098CD0: .4byte gUnknown_81DAF8C + thumb_func_end sub_08098CC8 + + thumb_func_start sub_08098CD4 +sub_08098CD4: @ 0x08098CD4 + push {lr} + bl sub_080987AC + bl _call_via_r0 + movs r0, #0 + thumb_func_end sub_08098CD4 + + thumb_func_start sub_08098CE0 +sub_08098CE0: @ 0x08098CE0 + pop {r1} + bx r1 + thumb_func_end sub_08098CE0 + + thumb_func_start sub_08098CE4 +sub_08098CE4: @ 0x08098CE4 + push {lr} + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_08098CE4 + + thumb_func_start sub_08098CF0 +sub_08098CF0: @ 0x08098CF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0809876C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08098CF0 + + thumb_func_start sub_08098D08 +sub_08098D08: @ 0x08098D08 + push {lr} + bl sub_08098784 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08098D08 + + thumb_func_start sub_08098D14 +sub_08098D14: @ 0x08098D14 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08098770 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08098D14 + + thumb_func_start sub_08098D2C +sub_08098D2C: @ 0x08098D2C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_080987AC + adds r2, r0, #0 + ldr r1, _08098D64 + lsls r0, r4, #1 + adds r0, r0, r4 + ldrb r3, [r5, #2] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098D5A + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0809876C +_08098D5A: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08098D64: .4byte gUnknown_84E8904 + thumb_func_end sub_08098D2C + + thumb_func_start sub_08098D68 +sub_08098D68: @ 0x08098D68 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_080987AC + adds r2, r0, #0 + ldr r1, _08098DA0 + lsls r0, r4, #1 + adds r0, r0, r4 + ldrb r3, [r5, #2] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098D96 + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_08098770 +_08098D96: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08098DA0: .4byte gUnknown_84E8904 + thumb_func_end sub_08098D68 + + thumb_func_start sub_08098DA4 +sub_08098DA4: @ 0x08098DA4 + push {r4, lr} + ldr r4, [r0, #8] + subs r4, #1 + bl sub_080987AC + ldr r1, _08098DBC + subs r0, r0, r4 + str r0, [r1] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08098DBC: .4byte gUnknown_2037264 + thumb_func_end sub_08098DA4 + + thumb_func_start sub_08098DC0 +sub_08098DC0: @ 0x08098DC0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, _08098DE0 + ldr r0, [r0] + subs r1, r1, r0 + adds r0, r4, #0 + bl sub_0809876C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08098DE0: .4byte gUnknown_2037264 + thumb_func_end sub_08098DC0 + + thumb_func_start sub_08098DE4 +sub_08098DE4: @ 0x08098DE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, _08098E04 + ldr r0, [r0] + subs r1, r1, r0 + adds r0, r4, #0 + bl sub_08098770 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08098E04: .4byte gUnknown_2037264 + thumb_func_end sub_08098DE4 + + thumb_func_start sub_08098E08 +sub_08098E08: @ 0x08098E08 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_080987AC + ldr r1, _08098E44 + ldr r1, [r1] + subs r2, r0, r1 + ldr r1, _08098E48 + lsls r0, r4, #1 + adds r0, r0, r4 + ldrb r3, [r5, #2] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098E3A + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0809876C +_08098E3A: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08098E44: .4byte gUnknown_2037264 +_08098E48: .4byte gUnknown_84E8904 + thumb_func_end sub_08098E08 + + thumb_func_start sub_08098E4C +sub_08098E4C: @ 0x08098E4C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_080987AC + ldr r1, _08098E88 + ldr r1, [r1] + subs r2, r0, r1 + ldr r1, _08098E8C + lsls r0, r4, #1 + adds r0, r0, r4 + ldrb r3, [r5, #2] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098E7E + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_08098770 +_08098E7E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08098E88: .4byte gUnknown_2037264 +_08098E8C: .4byte gUnknown_84E8904 + thumb_func_end sub_08098E4C + + thumb_func_start sub_08098E90 +sub_08098E90: @ 0x08098E90 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r2, #8] + lsls r1, r1, #2 + ldr r0, _08098EB8 + adds r1, r1, r0 + ldr r0, _08098EBC + cmp r1, r0 + bhs _08098EB0 + ldr r1, [r1] + adds r0, r2, #0 + bl sub_0809876C +_08098EB0: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08098EB8: .4byte gUnknown_81DB7BC +_08098EBC: .4byte gUnknown_81DB7E8 + thumb_func_end sub_08098E90 + + thumb_func_start sub_08098EC0 +sub_08098EC0: @ 0x08098EC0 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r2, #8] + lsls r1, r1, #2 + ldr r0, _08098EE8 + adds r1, r1, r0 + ldr r0, _08098EEC + cmp r1, r0 + bhs _08098EE0 + ldr r1, [r1] + adds r0, r2, #0 + bl sub_08098770 +_08098EE0: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08098EE8: .4byte gUnknown_81DB7BC +_08098EEC: .4byte gUnknown_81DB7E8 + thumb_func_end sub_08098EC0 + + thumb_func_start sub_08098EF0 +sub_08098EF0: @ 0x08098EF0 + push {r4, lr} + adds r3, r0, #0 + ldr r0, [r3, #8] + ldrb r2, [r0] + adds r0, #1 + str r0, [r3, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r3, #8] + ldr r1, _08098F30 + lsls r0, r2, #1 + adds r0, r0, r2 + ldrb r2, [r3, #2] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098F28 + lsls r0, r4, #2 + ldr r1, _08098F34 + adds r1, r0, r1 + ldr r0, _08098F38 + cmp r1, r0 + bhs _08098F28 + ldr r1, [r1] + adds r0, r3, #0 + bl sub_0809876C +_08098F28: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08098F30: .4byte gUnknown_84E8904 +_08098F34: .4byte gUnknown_81DB7BC +_08098F38: .4byte gUnknown_81DB7E8 + thumb_func_end sub_08098EF0 + + thumb_func_start sub_08098F3C +sub_08098F3C: @ 0x08098F3C + push {r4, lr} + adds r3, r0, #0 + ldr r0, [r3, #8] + ldrb r2, [r0] + adds r0, #1 + str r0, [r3, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r3, #8] + ldr r1, _08098F7C + lsls r0, r2, #1 + adds r0, r0, r2 + ldrb r2, [r3, #2] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08098F74 + lsls r0, r4, #2 + ldr r1, _08098F80 + adds r1, r0, r1 + ldr r0, _08098F84 + cmp r1, r0 + bhs _08098F74 + ldr r1, [r1] + adds r0, r3, #0 + bl sub_08098770 +_08098F74: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08098F7C: .4byte gUnknown_84E8904 +_08098F80: .4byte gUnknown_81DB7BC +_08098F84: .4byte gUnknown_81DB7E8 + thumb_func_end sub_08098F3C + + thumb_func_start sub_08098F88 +sub_08098F88: @ 0x08098F88 + push {lr} + ldr r1, _08098F98 + ldr r1, [r1] + bl sub_0809876C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08098F98: .4byte gUnknown_2037260 + thumb_func_end sub_08098F88 + + thumb_func_start sub_08098F9C +sub_08098F9C: @ 0x08098F9C + push {r4, lr} + adds r4, r0, #0 + bl sub_08098A58 + adds r0, r4, #0 + bl sub_08098690 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098F9C + + thumb_func_start sub_08098FB4 +sub_08098FB4: @ 0x08098FB4 + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + adds r0, r2, #0 + bl sub_08153800 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098FB4 + + thumb_func_start sub_08098FCC +sub_08098FCC: @ 0x08098FCC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r5, [r0] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + lsls r5, r5, #2 + adds r4, #0x64 + adds r4, r4, r5 + str r0, [r4] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08098FCC + + thumb_func_start sub_08098FF0 +sub_08098FF0: @ 0x08098FF0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r5, [r0] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + lsls r5, r5, #2 + adds r4, #0x64 + adds r4, r4, r5 + ldrb r0, [r0] + str r0, [r4] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08098FF0 + + thumb_func_start sub_08099014 +sub_08099014: @ 0x08099014 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_080987AC + strb r4, [r0] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08099014 + + thumb_func_start sub_0809902C +sub_0809902C: @ 0x0809902C + ldr r1, [r0, #8] + ldrb r3, [r1] + adds r1, #1 + str r1, [r0, #8] + lsls r3, r3, #2 + adds r2, r0, #0 + adds r2, #0x64 + adds r2, r2, r3 + ldrb r3, [r1] + str r3, [r2] + adds r1, #1 + str r1, [r0, #8] + movs r0, #0 + bx lr + thumb_func_end sub_0809902C + + thumb_func_start sub_08099048 +sub_08099048: @ 0x08099048 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r5, [r0] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + lsls r5, r5, #2 + adds r4, #0x64 + adds r4, r4, r5 + ldr r1, [r4] + strb r1, [r0] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08099048 + + thumb_func_start sub_0809906C +sub_0809906C: @ 0x0809906C + ldr r1, [r0, #8] + ldrb r3, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + lsls r3, r3, #2 + adds r0, #0x64 + adds r3, r0, r3 + lsls r2, r2, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r3] + movs r0, #0 + bx lr + thumb_func_end sub_0809906C + + thumb_func_start sub_0809908C +sub_0809908C: @ 0x0809908C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_080987AC + ldrb r0, [r0] + strb r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809908C + + thumb_func_start sub_080990A8 +sub_080990A8: @ 0x080990A8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08098794 + strh r0, [r4] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080990A8 + + thumb_func_start sub_080990CC +sub_080990CC: @ 0x080990CC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + ldrh r0, [r0] + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080990CC + + thumb_func_start sub_080990F8 +sub_080990F8: @ 0x080990F8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080990F8 + + thumb_func_start sub_08099124 +sub_08099124: @ 0x08099124 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r0, r1 + bhs _08099136 + movs r0, #0 + b _08099140 +_08099136: + cmp r0, r1 + beq _0809913E + movs r0, #2 + b _08099140 +_0809913E: + movs r0, #1 +_08099140: + pop {r1} + bx r1 + thumb_func_end sub_08099124 + + thumb_func_start sub_08099144 +sub_08099144: @ 0x08099144 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #8] + ldrb r0, [r2] + lsls r0, r0, #2 + adds r3, r4, #0 + adds r3, #0x64 + adds r0, r3, r0 + ldrb r0, [r0] + adds r2, #1 + str r2, [r4, #8] + ldrb r1, [r2] + lsls r1, r1, #2 + adds r3, r3, r1 + ldrb r1, [r3] + adds r2, #1 + str r2, [r4, #8] + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08099144 + + thumb_func_start sub_08099174 +sub_08099174: @ 0x08099174 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #8] + ldrb r1, [r2] + lsls r1, r1, #2 + adds r0, #0x64 + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, #1 + str r2, [r4, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r4, #8] + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08099174 + + thumb_func_start sub_0809919C +sub_0809919C: @ 0x0809919C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, [r4, #8] + ldrb r1, [r2] + lsls r1, r1, #2 + adds r0, #0x64 + adds r0, r0, r1 + ldrb r5, [r0] + adds r2, #1 + str r2, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809919C + + thumb_func_start sub_080991C8 +sub_080991C8: @ 0x080991C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + ldrb r0, [r0] + ldr r3, [r4, #8] + ldrb r2, [r3] + lsls r2, r2, #2 + adds r1, r4, #0 + adds r1, #0x64 + adds r1, r1, r2 + ldrb r1, [r1] + adds r3, #1 + str r3, [r4, #8] + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080991C8 + + thumb_func_start sub_080991F4 +sub_080991F4: @ 0x080991F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + ldrb r0, [r0] + ldr r2, [r4, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r4, #8] + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080991F4 + + thumb_func_start sub_08099214 +sub_08099214: @ 0x08099214 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080987AC + ldrb r5, [r0] + adds r0, r4, #0 + bl sub_080987AC + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099214 + + thumb_func_start sub_08099238 +sub_08099238: @ 0x08099238 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + ldrh r5, [r0] + adds r0, r4, #0 + bl sub_08098794 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099238 + + thumb_func_start sub_08099268 +sub_08099268: @ 0x08099268 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + ldrh r2, [r5] + ldrh r1, [r0] + adds r0, r2, #0 + bl sub_08099124 + strb r0, [r4, #2] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08099268 + + thumb_func_start sub_0809929C +sub_0809929C: @ 0x0809929C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08098794 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r4] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809929C + + thumb_func_start sub_080992C4 +sub_080992C4: @ 0x080992C4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldrh r1, [r5] + subs r1, r1, r0 + strh r1, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080992C4 + + thumb_func_start sub_080992F4 +sub_080992F4: @ 0x080992F4 + push {r4, r5, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _08099324 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __umodsi3 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099324: .4byte gUnknown_2037290 + thumb_func_end sub_080992F4 + + thumb_func_start sub_08099328 +sub_08099328: @ 0x08099328 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + ldr r5, _08099368 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099368: .4byte gUnknown_2037290 + thumb_func_end sub_08099328 + + thumb_func_start sub_0809936C +sub_0809936C: @ 0x0809936C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + ldr r5, _080993AC + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D62BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080993AC: .4byte gUnknown_2037290 + thumb_func_end sub_0809936C + + thumb_func_start sub_080993B0 +sub_080993B0: @ 0x080993B0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + ldr r5, _080993F0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D6018 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080993F0: .4byte gUnknown_2037290 + thumb_func_end sub_080993B0 + + thumb_func_start sub_080993F4 +sub_080993F4: @ 0x080993F4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + ldr r5, _08099434 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099434: .4byte gUnknown_2037290 + thumb_func_end sub_080993F4 + + thumb_func_start sub_08099438 +sub_08099438: @ 0x08099438 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _08099460 + bl sub_080D6480 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099460: .4byte gUnknown_2037290 + thumb_func_end sub_08099438 + + thumb_func_start sub_08099464 +sub_08099464: @ 0x08099464 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r5, _080994A4 + adds r0, r4, #0 + bl sub_080D6588 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080994A4: .4byte gUnknown_2037290 + thumb_func_end sub_08099464 + + thumb_func_start sub_080994A8 +sub_080994A8: @ 0x080994A8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r5, _080994E8 + adds r0, r4, #0 + bl sub_080D6534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080994E8: .4byte gUnknown_2037290 + thumb_func_end sub_080994A8 + + thumb_func_start sub_080994EC +sub_080994EC: @ 0x080994EC + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r4, _08099514 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08161868 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099514: .4byte gUnknown_2037290 + thumb_func_end sub_080994EC + + thumb_func_start sub_08099518 +sub_08099518: @ 0x08099518 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r4, _08099540 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081618EC + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099540: .4byte gUnknown_2037290 + thumb_func_end sub_08099518 + + thumb_func_start sub_08099544 +sub_08099544: @ 0x08099544 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r4, _0809956C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081618B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809956C: .4byte gUnknown_2037290 + thumb_func_end sub_08099544 + + thumb_func_start sub_08099570 +sub_08099570: @ 0x08099570 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r4, _08099598 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0816181C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099598: .4byte gUnknown_2037290 + thumb_func_end sub_08099570 + + thumb_func_start sub_0809959C +sub_0809959C: @ 0x0809959C + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809959C + + thumb_func_start sub_080995B0 +sub_080995B0: @ 0x080995B0 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D040 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080995B0 + + thumb_func_start sub_080995C4 +sub_080995C4: @ 0x080995C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080995C4 + + thumb_func_start sub_080995E0 +sub_080995E0: @ 0x080995E0 + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + adds r0, r2, #0 + bl sub_0808414C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080995E0 + + thumb_func_start sub_080995F8 +sub_080995F8: @ 0x080995F8 + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + adds r0, r2, #0 + bl sub_080AF998 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080995F8 + + thumb_func_start sub_08099614 +sub_08099614: @ 0x08099614 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08084E54 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099614 + + thumb_func_start sub_08099630 +sub_08099630: @ 0x08099630 + push {lr} + ldr r0, _08099644 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08099648 + movs r0, #0 + b _0809964A + .align 2, 0 +_08099644: .4byte gUnknown_2037C74 +_08099648: + movs r0, #1 +_0809964A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099630 + + thumb_func_start sub_08099650 +sub_08099650: @ 0x08099650 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #8] + ldrb r0, [r1] + adds r1, #1 + str r1, [r4, #8] + movs r1, #0 + bl sub_080AB5CC + ldr r1, _08099674 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099674: .4byte sub_08099630 + thumb_func_end sub_08099650 + + thumb_func_start sub_08099678 +sub_08099678: @ 0x08099678 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #8] + ldrb r0, [r2] + adds r2, #1 + str r2, [r4, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r4, #8] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080AB5CC + ldr r1, _080996A4 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080996A4: .4byte sub_08099630 + thumb_func_end sub_08099678 + + thumb_func_start sub_080996A8 +sub_080996A8: @ 0x080996A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r4, [r0] + adds r0, #1 + str r0, [r5, #8] + cmp r4, #1 + beq _080996C6 + cmp r4, #1 + bgt _080996C2 + cmp r4, #0 + beq _080996E8 + b _080996C6 +_080996C2: + cmp r4, #2 + beq _080996E8 +_080996C6: + ldr r0, _080996DC + ldr r1, _080996E0 + ldr r2, _080996E4 + bl CpuSet + adds r0, r4, #0 + movs r1, #0 + bl sub_080AB5CC + b _080996FA + .align 2, 0 +_080996DC: .4byte gUnknown_20373B4 +_080996E0: .4byte gUnknown_2037C88 +_080996E4: .4byte 0x04000100 +_080996E8: + ldr r0, _0809970C + ldr r1, _08099710 + ldr r2, _08099714 + bl CpuSet + adds r0, r4, #0 + movs r1, #0 + bl sub_080AB5CC +_080996FA: + ldr r1, _08099718 + adds r0, r5, #0 + bl sub_08098688 + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809970C: .4byte gUnknown_2037C88 +_08099710: .4byte gUnknown_20373B4 +_08099714: .4byte 0x04000100 +_08099718: .4byte sub_08099630 + thumb_func_end sub_080996A8 + + thumb_func_start sub_0809971C +sub_0809971C: @ 0x0809971C + push {lr} + ldr r1, _08099730 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08099734 + movs r0, #0 + b _08099736 + .align 2, 0 +_08099730: .4byte gUnknown_2037268 +_08099734: + movs r0, #1 +_08099736: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809971C + + thumb_func_start sub_0809973C +sub_0809973C: @ 0x0809973C + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + ldr r1, _08099758 + strh r0, [r1] + ldr r1, _0809975C + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099758: .4byte gUnknown_2037268 +_0809975C: .4byte sub_0809971C + thumb_func_end sub_0809973C + + thumb_func_start sub_08099760 +sub_08099760: @ 0x08099760 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0802F218 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08099760 + + thumb_func_start sub_08099798 +sub_08099798: @ 0x08099798 + push {lr} + bl sub_0809E088 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099798 + + thumb_func_start sub_080997A4 +sub_080997A4: @ 0x080997A4 + push {lr} + bl sub_0802F1EC + ldr r2, _080997CC + ldr r1, _080997D0 + movs r0, #2 + ldrsb r0, [r1, r0] + strh r0, [r2] + ldr r2, _080997D4 + movs r0, #3 + ldrsb r0, [r1, r0] + strh r0, [r2] + ldr r2, _080997D8 + movs r0, #4 + ldrsb r0, [r1, r0] + strh r0, [r2] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080997CC: .4byte gUnknown_2037278 +_080997D0: .4byte gUnknown_3005A50 +_080997D4: .4byte gUnknown_203727A +_080997D8: .4byte gUnknown_203727C + thumb_func_end sub_080997A4 + + thumb_func_start sub_080997DC +sub_080997DC: @ 0x080997DC + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080AE678 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080997DC + + thumb_func_start sub_080997F8 +sub_080997F8: @ 0x080997F8 + push {lr} + bl sub_080AE6B8 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080997F8 + + thumb_func_start sub_08099804 +sub_08099804: @ 0x08099804 + push {lr} + bl sub_080AE71C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099804 + + thumb_func_start sub_08099810 +sub_08099810: @ 0x08099810 + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + adds r0, r2, #0 + bl sub_0809D280 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099810 + + thumb_func_start sub_08099828 +sub_08099828: @ 0x08099828 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08084E8C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099828 + + thumb_func_start sub_08099844 +sub_08099844: @ 0x08099844 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF030 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099844 + + thumb_func_start sub_080998CC +sub_080998CC: @ 0x080998CC + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF068 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080998CC + + thumb_func_start sub_08099954 +sub_08099954: @ 0x08099954 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF0CC + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099954 + + thumb_func_start sub_080999DC +sub_080999DC: @ 0x080999DC + push {r4, r5, r6, lr} + sub sp, #8 + ldr r1, [r0, #8] + ldrb r6, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + mov r4, sp + adds r4, #6 + add r0, sp, #4 + adds r1, r4, #0 + bl sub_0808B410 + cmp r6, #0xff + bne _08099A1A + cmp r5, #0xff + bne _08099A1A + add r0, sp, #4 + ldrh r0, [r0] + subs r0, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4] + subs r1, #7 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08084824 + b _08099A3E +_08099A1A: + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + add r3, sp, #4 + ldrb r3, [r3] + subs r3, #7 + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + ldrb r4, [r4] + subs r4, #7 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_08084554 +_08099A3E: + bl sub_080AF0F0 + bl sub_08084BD0 + movs r0, #1 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080999DC + + thumb_func_start sub_08099A50 +sub_08099A50: @ 0x08099A50 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF144 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099A50 + + thumb_func_start sub_08099AD8 +sub_08099AD8: @ 0x08099AD8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF178 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099AD8 + + thumb_func_start sub_08099B60 +sub_08099B60: @ 0x08099B60 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + movs r0, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099B60 + + thumb_func_start sub_08099BE0 +sub_08099BE0: @ 0x08099BE0 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0 + mov r1, sb + mov r2, r8 + adds r3, r6, #0 + bl sub_080845E4 + movs r0, #0 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099BE0 + + thumb_func_start sub_08099C64 +sub_08099C64: @ 0x08099C64 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084794 + movs r0, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099C64 + + thumb_func_start sub_08099CE4 +sub_08099CE4: @ 0x08099CE4 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080847E8 + movs r0, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099CE4 + + thumb_func_start sub_08099D64 +sub_08099D64: @ 0x08099D64 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_0808473C + movs r0, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099D64 + + thumb_func_start sub_08099DE4 +sub_08099DE4: @ 0x08099DE4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + ldr r2, _08099E1C + ldr r1, [r2] + ldrh r1, [r1] + strh r1, [r5] + ldr r1, [r2] + ldrh r1, [r1, #2] + strh r1, [r0] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099E1C: .4byte gUnknown_3005AEC + thumb_func_end sub_08099DE4 + + thumb_func_start sub_08099E20 +sub_08099E20: @ 0x08099E20 + push {r4, lr} + ldr r4, _08099E38 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099E38: .4byte gUnknown_2037290 + thumb_func_end sub_08099E20 + + thumb_func_start sub_08099E3C +sub_08099E3C: @ 0x08099E3C + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A306C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099E3C + + thumb_func_start sub_08099E50 +sub_08099E50: @ 0x08099E50 + push {lr} + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08099E60 + movs r0, #0 + b _08099E62 +_08099E60: + movs r0, #1 +_08099E62: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099E50 + + thumb_func_start sub_08099E68 +sub_08099E68: @ 0x08099E68 + push {lr} + ldr r1, _08099E78 + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_08099E78: .4byte sub_08099E50 + thumb_func_end sub_08099E68 + + thumb_func_start sub_08099E7C +sub_08099E7C: @ 0x08099E7C + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A29AC + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099E7C + + thumb_func_start sub_08099E90 +sub_08099E90: @ 0x08099E90 + push {lr} + bl sub_080A29E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099E90 + + thumb_func_start sub_08099EA0 +sub_08099EA0: @ 0x08099EA0 + push {lr} + ldr r1, _08099EB0 + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_08099EB0: .4byte sub_08099E90 + thumb_func_end sub_08099EA0 + + thumb_func_start sub_08099EB4 +sub_08099EB4: @ 0x08099EB4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r5, r2, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + cmp r1, #1 + bne _08099ED4 + adds r0, r2, #0 + bl sub_0808515C +_08099ED4: + adds r0, r5, #0 + bl sub_080A27D8 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08099EB4 + + thumb_func_start sub_08099EE4 +sub_08099EE4: @ 0x08099EE4 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0808515C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099EE4 + + thumb_func_start sub_08099EF8 +sub_08099EF8: @ 0x08099EF8 + push {lr} + bl sub_08085200 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099EF8 + + thumb_func_start sub_08099F04 +sub_08099F04: @ 0x08099F04 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0808522C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099F04 + + thumb_func_start sub_08099F18 +sub_08099F18: @ 0x08099F18 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + cmp r1, #0 + beq _08099F32 + lsls r0, r1, #0x1a + lsrs r0, r0, #0x18 + bl sub_080A2AB0 + b _08099F38 +_08099F32: + movs r0, #4 + bl sub_080A2AB0 +_08099F38: + ldr r1, _08099F48 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08099F48: .4byte sub_080A2AC8 + thumb_func_end sub_08099F18 + + thumb_func_start sub_08099F4C +sub_08099F4C: @ 0x08099F4C + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + cmp r2, #0 + beq _08099F64 + lsls r0, r2, #0x1a + lsrs r0, r0, #0x18 + bl sub_080A2AF0 + b _08099F6A +_08099F64: + movs r0, #4 + bl sub_080A2AF0 +_08099F6A: + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08099F4C + + thumb_func_start sub_08099F70 +sub_08099F70: @ 0x08099F70 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_080987AC + adds r3, r0, #0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08099FAC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_080D2B88 + ldr r0, _08099FB0 + strh r4, [r0] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099FAC: .4byte gUnknown_3005AEC +_08099FB0: .4byte gUnknown_203726A + thumb_func_end sub_08099F70 + + thumb_func_start sub_08099FB4 +sub_08099FB4: @ 0x08099FB4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_080987AC + adds r3, r0, #0 + ldr r0, [r5, #8] + ldrb r2, [r0] + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r5, #8] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D2B88 + ldr r0, _08099FF4 + strh r4, [r0] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08099FF4: .4byte gUnknown_203726A + thumb_func_end sub_08099FB4 + + thumb_func_start sub_08099FF8 +sub_08099FF8: @ 0x08099FF8 + push {lr} + ldr r0, _0809A014 + ldrb r0, [r0] + ldr r1, _0809A018 + ldrb r1, [r1] + ldr r2, _0809A01C + ldrb r2, [r2] + bl sub_080D2BE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0809A014: .4byte gUnknown_203726A +_0809A018: .4byte gUnknown_203726E +_0809A01C: .4byte gUnknown_203726C + thumb_func_end sub_08099FF8 + + thumb_func_start sub_0809A020 +sub_0809A020: @ 0x0809A020 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0809A03C + ldr r0, _0809A060 + strh r1, [r0] +_0809A03C: + ldr r1, _0809A064 + ldr r0, _0809A068 + ldr r2, [r0] + movs r0, #4 + ldrsb r0, [r2, r0] + strh r0, [r1] + ldr r1, _0809A06C + movs r0, #5 + ldrsb r0, [r2, r0] + strh r0, [r1] + ldr r1, _0809A070 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A060: .4byte gUnknown_203726A +_0809A064: .4byte gUnknown_203726C +_0809A068: .4byte gUnknown_3005AEC +_0809A06C: .4byte gUnknown_203726E +_0809A070: .4byte sub_08099FF8 + thumb_func_end sub_0809A020 + + thumb_func_start sub_0809A074 +sub_0809A074: @ 0x0809A074 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _0809A090 + ldr r0, _0809A0B8 + strh r1, [r0] +_0809A090: + ldr r0, [r4, #8] + ldrb r2, [r0] + adds r0, #1 + str r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + ldr r0, _0809A0BC + strh r2, [r0] + ldr r0, _0809A0C0 + strh r1, [r0] + ldr r1, _0809A0C4 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A0B8: .4byte gUnknown_203726A +_0809A0BC: .4byte gUnknown_203726C +_0809A0C0: .4byte gUnknown_203726E +_0809A0C4: .4byte sub_08099FF8 + thumb_func_end sub_0809A074 + + thumb_func_start sub_0809A0C8 +sub_0809A0C8: @ 0x0809A0C8 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0809A0EC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D234 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809A0EC: .4byte gUnknown_3005AEC + thumb_func_end sub_0809A0C8 + + thumb_func_start sub_0809A0F0 +sub_0809A0F0: @ 0x0809A0F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808D234 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A0F0 + + thumb_func_start sub_0809A120 +sub_0809A120: @ 0x0809A120 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0809A144 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D61C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809A144: .4byte gUnknown_3005AEC + thumb_func_end sub_0809A120 + + thumb_func_start sub_0809A148 +sub_0809A148: @ 0x0809A148 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808D61C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A148 + + thumb_func_start sub_0809A178 +sub_0809A178: @ 0x0809A178 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r6, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _0809A1DC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + adds r0, r5, #0 + adds r3, r4, #0 + bl sub_0808E518 + movs r0, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0809A1DC: .4byte gUnknown_3005AEC + thumb_func_end sub_0809A178 + + thumb_func_start sub_0809A1E0 +sub_0809A1E0: @ 0x0809A1E0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r6, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r2, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08084298 + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A1E0 + + thumb_func_start sub_0809A238 +sub_0809A238: @ 0x0809A238 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0809A25C + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808EBC4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809A25C: .4byte gUnknown_3005AEC + thumb_func_end sub_0809A238 + + thumb_func_start sub_0809A260 +sub_0809A260: @ 0x0809A260 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + bl sub_0808E068 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809A260 + + thumb_func_start sub_0809A290 +sub_0809A290: @ 0x0809A290 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #1 + bl sub_0808E068 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809A290 + + thumb_func_start sub_0809A2C0 +sub_0809A2C0: @ 0x0809A2C0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r5, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r5, #8] + ldrb r1, [r3] + adds r4, r3, #1 + str r4, [r5, #8] + ldrb r3, [r3, #1] + adds r4, #1 + str r4, [r5, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, #0x53 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_0808E0FC + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A2C0 + + thumb_func_start sub_0809A2FC +sub_0809A2FC: @ 0x0809A2FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808E154 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A2FC + + thumb_func_start sub_0809A32C +sub_0809A32C: @ 0x0809A32C + push {r4, lr} + ldr r2, _0809A35C + ldr r0, _0809A360 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + ldrb r0, [r4] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0809A354 + bl sub_0808B59C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092F8C +_0809A354: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A35C: .4byte gUnknown_2036FF0 +_0809A360: .4byte gUnknown_3005B50 + thumb_func_end sub_0809A32C + + thumb_func_start sub_0809A364 +sub_0809A364: @ 0x0809A364 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r1, [r4, #8] + ldrb r3, [r1] + adds r1, #1 + str r1, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0809A394 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808DF04 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A394: .4byte gUnknown_3005AEC + thumb_func_end sub_0809A364 + + thumb_func_start sub_0809A398 +sub_0809A398: @ 0x0809A398 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r2, [r4, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080842D4 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809A398 + + thumb_func_start sub_0809A3C0 +sub_0809A3C0: @ 0x0809A3C0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r6, [r0] + adds r0, #1 + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r3, r0, #0 + ldr r0, [r5, #8] + ldrb r2, [r0] + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r5, #8] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + str r2, [sp] + str r1, [sp, #4] + mov r0, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0808D77C + movs r0, #0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0809A3C0 + + thumb_func_start sub_0809A430 +sub_0809A430: @ 0x0809A430 + push {lr} + ldr r2, [r0, #8] + ldrb r3, [r2] + adds r2, #1 + str r2, [r0, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r0, #8] + adds r0, r3, #0 + bl sub_080974E8 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809A430 + + thumb_func_start sub_0809A44C +sub_0809A44C: @ 0x0809A44C + push {r4, lr} + adds r4, r0, #0 + bl sub_080856F4 + cmp r0, #0 + bne _0809A46C + bl sub_08097D70 + ldr r1, _0809A468 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + b _0809A46E + .align 2, 0 +_0809A468: .4byte sub_08097D4C +_0809A46C: + movs r0, #0 +_0809A46E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809A44C + + thumb_func_start sub_0809A474 +sub_0809A474: @ 0x0809A474 + push {r4, lr} + adds r4, r0, #0 + bl sub_080856F4 + cmp r0, #0 + beq _0809A484 + movs r0, #0 + b _0809A4C2 +_0809A484: + ldr r2, _0809A4A8 + ldr r0, _0809A4AC + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0809A4B4 + bl sub_08097E28 + ldr r1, _0809A4B0 + adds r0, r4, #0 + bl sub_08098688 + b _0809A4C0 + .align 2, 0 +_0809A4A8: .4byte gUnknown_2036FF0 +_0809A4AC: .4byte gUnknown_3005B50 +_0809A4B0: .4byte sub_08097E04 +_0809A4B4: + bl sub_08097D70 + ldr r1, _0809A4C8 + adds r0, r4, #0 + bl sub_08098688 +_0809A4C0: + movs r0, #1 +_0809A4C2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A4C8: .4byte sub_08097D4C + thumb_func_end sub_0809A474 + + thumb_func_start sub_0809A4CC +sub_0809A4CC: @ 0x0809A4CC + push {lr} + bl sub_08097C9C + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0809A500 + adds r0, r0, r1 + bl sub_08092BF4 + bl sub_080D2C2C + bl sub_08096EEC + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809A500: .4byte gUnknown_2036FF0 + thumb_func_end sub_0809A4CC + + thumb_func_start sub_0809A504 +sub_0809A504: @ 0x0809A504 + push {r4, lr} + bl sub_08097C9C + ldr r4, _0809A554 + ldr r0, _0809A558 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0809A526 + adds r0, r1, #0 + bl sub_08092BF4 +_0809A526: + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08092BF4 + bl sub_080D2C2C + bl sub_08096EEC + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A554: .4byte gUnknown_2036FF0 +_0809A558: .4byte gUnknown_3005B50 + thumb_func_end sub_0809A504 + + thumb_func_start sub_0809A55C +sub_0809A55C: @ 0x0809A55C + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + cmp r0, #0 + bne _0809A56A + ldr r0, [r4, #0x64] +_0809A56A: + bl sub_08097B74 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A55C + + thumb_func_start sub_0809A578 +sub_0809A578: @ 0x0809A578 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + cmp r0, #0 + bne _0809A586 + ldr r0, [r4, #0x64] +_0809A586: + bl sub_08097BC0 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A578 + + thumb_func_start sub_0809A594 +sub_0809A594: @ 0x0809A594 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r3, r0, #0 + cmp r3, #0 + bne _0809A5A4 + ldr r3, [r4, #0x64] +_0809A5A4: + ldr r2, _0809A5C0 + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r3, #0 + bl sub_08097C00 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A5C0: .4byte gUnknown_30030B4 + thumb_func_end sub_0809A594 + + thumb_func_start sub_0809A5C4 +sub_0809A5C4: @ 0x0809A5C4 + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + bl sub_080987AC + adds r4, r0, #0 + cmp r4, #0 + bne _0809A5D6 + ldr r4, [r5, #0x64] +_0809A5D6: + bl sub_08196F98 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809A5C4 + + thumb_func_start sub_0809A600 +sub_0809A600: @ 0x0809A600 + push {lr} + ldr r1, _0809A610 + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809A610: .4byte sub_08097CC4 + thumb_func_end sub_0809A600 + + thumb_func_start sub_0809A614 +sub_0809A614: @ 0x0809A614 + push {lr} + bl sub_08097C9C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809A614 + + thumb_func_start sub_0809A620 +sub_0809A620: @ 0x0809A620 + push {lr} + ldr r0, _0809A63C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0809A640 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0809A640 + movs r0, #0 + b _0809A642 + .align 2, 0 +_0809A63C: .4byte gUnknown_3002360 +_0809A640: + movs r0, #1 +_0809A642: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A620 + + thumb_func_start sub_0809A648 +sub_0809A648: @ 0x0809A648 + push {lr} + ldr r1, _0809A658 + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809A658: .4byte sub_0809A620 + thumb_func_end sub_0809A648 + + thumb_func_start sub_0809A65C +sub_0809A65C: @ 0x0809A65C + push {lr} + ldr r2, [r0, #8] + ldrb r3, [r2] + adds r2, #1 + str r2, [r0, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r0, #8] + adds r0, r3, #0 + bl sub_080E1618 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809A67E + movs r0, #0 + b _0809A684 +_0809A67E: + bl sub_080988B8 + movs r0, #1 +_0809A684: + pop {r1} + bx r1 + thumb_func_end sub_0809A65C + + thumb_func_start sub_0809A688 +sub_0809A688: @ 0x0809A688 + push {r4, r5, lr} + ldr r2, [r0, #8] + ldrb r5, [r2] + adds r2, #1 + str r2, [r0, #8] + ldrb r1, [r2] + adds r3, r2, #1 + str r3, [r0, #8] + ldrb r2, [r2, #1] + adds r4, r3, #1 + str r4, [r0, #8] + ldrb r3, [r3, #1] + adds r4, #1 + str r4, [r0, #8] + adds r0, r5, #0 + bl sub_080E12C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809A6B6 + movs r0, #0 + b _0809A6BC +_0809A6B6: + bl sub_080988B8 + movs r0, #1 +_0809A6BC: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A688 + + thumb_func_start sub_0809A6C4 +sub_0809A6C4: @ 0x0809A6C4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r2, [r0, #8] + ldrb r1, [r2] + mov r8, r1 + adds r2, #1 + str r2, [r0, #8] + ldrb r1, [r2] + adds r3, r2, #1 + str r3, [r0, #8] + ldrb r2, [r2, #1] + adds r5, r3, #1 + str r5, [r0, #8] + ldrb r6, [r3, #1] + adds r4, r5, #1 + str r4, [r0, #8] + ldrb r3, [r5, #1] + adds r4, #1 + str r4, [r0, #8] + str r6, [sp] + mov r0, r8 + bl sub_080E1318 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809A702 + movs r0, #0 + b _0809A708 +_0809A702: + bl sub_080988B8 + movs r0, #1 +_0809A708: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0809A6C4 + + thumb_func_start sub_0809A714 +sub_0809A714: @ 0x0809A714 + movs r0, #0 + bx lr + thumb_func_end sub_0809A714 + + thumb_func_start sub_0809A718 +sub_0809A718: @ 0x0809A718 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + ldr r2, [r0, #8] + ldrb r1, [r2] + mov r8, r1 + adds r2, #1 + str r2, [r0, #8] + ldrb r1, [r2] + adds r3, r2, #1 + str r3, [r0, #8] + ldrb r2, [r2, #1] + adds r5, r3, #1 + str r5, [r0, #8] + ldrb r6, [r3, #1] + adds r4, r5, #1 + str r4, [r0, #8] + ldrb r3, [r5, #1] + adds r4, #1 + str r4, [r0, #8] + str r6, [sp] + mov r0, r8 + bl sub_080E16E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809A756 + movs r0, #0 + b _0809A75C +_0809A756: + bl sub_080988B8 + movs r0, #1 +_0809A75C: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0809A718 + + thumb_func_start sub_0809A768 +sub_0809A768: @ 0x0809A768 + ldr r1, [r0, #8] + adds r1, #4 + str r1, [r0, #8] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0809A768 + + thumb_func_start sub_0809A774 +sub_0809A774: @ 0x0809A774 + ldr r1, [r0, #8] + adds r1, #4 + str r1, [r0, #8] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_0809A774 + + thumb_func_start sub_0809A780 +sub_0809A780: @ 0x0809A780 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r3, [r4, #8] + ldrb r1, [r3] + adds r3, #1 + str r3, [r4, #8] + ldrb r2, [r3] + adds r3, #1 + str r3, [r4, #8] + bl sub_080E1DF4 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A780 + + thumb_func_start sub_0809A7B0 +sub_0809A7B0: @ 0x0809A7B0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080E1EB8 + adds r1, r0, #0 + cmp r1, #0 + beq _0809A7C8 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + b _0809A7CA +_0809A7C8: + movs r0, #0 +_0809A7CA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809A7B0 + + thumb_func_start sub_0809A7D0 +sub_0809A7D0: @ 0x0809A7D0 + push {lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + cmp r2, #0 + beq _0809A7E4 + adds r0, r2, #0 + bl sub_0812FDE0 +_0809A7E4: + bl sub_080F936C + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809A7D0 + + thumb_func_start sub_0809A7F4 +sub_0809A7F4: @ 0x0809A7F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + bl sub_080987AC + adds r1, r0, #0 + ldrb r0, [r1] + mov sb, r0 + ldrb r0, [r1, #1] + mov sl, r0 + ldrb r4, [r1, #2] + ldrb r5, [r1, #3] + ldrb r0, [r1, #4] + mov r8, r0 + ldrb r6, [r1, #5] + ldr r7, _0809A8DC + adds r1, #6 + adds r0, r7, #0 + bl sub_08008BCC + mov r2, sb + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sl + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r1, sb + subs r4, r4, r1 + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sl + subs r5, r5, r0 + subs r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, r8 + subs r0, r0, r1 + mov r8, r0 + movs r1, #1 + rsbs r1, r1, #0 + add r8, r1 + mov r0, r8 + lsls r0, r0, #0x1b + lsrs r0, r0, #0x18 + mov r8, r0 + mov r1, sl + subs r6, r6, r1 + subs r6, #1 + lsls r6, r6, #0x1b + lsrs r6, r6, #0x18 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + bl sub_08198B60 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r4, _0809A8E0 + add r0, sp, #0x18 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x85 + lsls r1, r1, #2 + movs r2, #0xe0 + bl sub_080981B4 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4] + str r6, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #6 + adds r2, r7, #0 + mov r3, r8 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + movs r0, #0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0809A8DC: .4byte gUnknown_2021C7C +_0809A8E0: .4byte gUnknown_3000F30 + thumb_func_end sub_0809A7F4 + + thumb_func_start sub_0809A8E4 +sub_0809A8E4: @ 0x0809A8E4 + push {lr} + bl sub_0809B68C + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809A8E4 + + thumb_func_start sub_0809A8F0 +sub_0809A8F0: @ 0x0809A8F0 + push {lr} + bl sub_080987AC + ldr r1, _0809A908 + ldr r1, [r1] + subs r0, r0, r1 + bl sub_08097B74 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809A908: .4byte gUnknown_2037264 + thumb_func_end sub_0809A8F0 + + thumb_func_start sub_0809A90C +sub_0809A90C: @ 0x0809A90C + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809A948 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r2, [r4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0809A94C + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A948: .4byte gUnknown_84E8918 +_0809A94C: .4byte gUnknown_82EA31C + thumb_func_end sub_0809A90C + + thumb_func_start sub_0809A950 +sub_0809A950: @ 0x0809A950 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + ldr r0, _0809A994 + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r4, [r2] + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0809A998 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0809A99C + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A994: .4byte gUnknown_84E8918 +_0809A998: .4byte gUnknown_2024190 +_0809A99C: .4byte gUnknown_82EA31C + thumb_func_end sub_0809A950 + + thumb_func_start sub_0809A9A0 +sub_0809A9A0: @ 0x0809A9A0 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0809A9E0 + adds r0, r0, r1 + ldr r1, _0809A9E4 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r4, [r4] + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_0800885C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809A9E0: .4byte gUnknown_2024190 +_0809A9E4: .4byte gUnknown_84E8918 + thumb_func_end sub_0809A9A0 + + thumb_func_start sub_0809A9E8 +sub_0809A9E8: @ 0x0809A9E8 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809AA18 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r1, [r4] + bl sub_080D5EC8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA18: .4byte gUnknown_84E8918 + thumb_func_end sub_0809A9E8 + + thumb_func_start sub_0809AA1C +sub_0809AA1C: @ 0x0809AA1C + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809AA58 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r2, [r4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0809AA5C + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA58: .4byte gUnknown_84E8918 +_0809AA5C: .4byte gUnknown_8580CD1 + thumb_func_end sub_0809AA1C + + thumb_func_start sub_0809AA60 +sub_0809AA60: @ 0x0809AA60 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _0809AA94 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + lsrs r1, r1, #0xd + ldr r2, _0809AA98 + adds r1, r1, r2 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AA94: .4byte gUnknown_84E8918 +_0809AA98: .4byte gUnknown_82EACC4 + thumb_func_end sub_0809AA60 + + thumb_func_start sub_0809AA9C +sub_0809AA9C: @ 0x0809AA9C + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_080EFE74 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0809AADC + lsls r5, r5, #2 + adds r5, r5, r0 + ldr r0, [r5] + adds r1, r4, #0 + movs r2, #0 + bl sub_080089D8 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809AADC: .4byte gUnknown_84E8918 + thumb_func_end sub_0809AA9C + + thumb_func_start sub_0809AAE0 +sub_0809AAE0: @ 0x0809AAE0 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, _0809AB18 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r2, [r4] + ldr r1, _0809AB1C + lsrs r0, r0, #0xe + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AB18: .4byte gUnknown_84E8918 +_0809AB1C: .4byte gUnknown_85645A0 + thumb_func_end sub_0809AAE0 + + thumb_func_start sub_0809AB20 +sub_0809AB20: @ 0x0809AB20 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_080987AC + adds r1, r0, #0 + ldr r0, _0809AB44 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AB44: .4byte gUnknown_84E8918 + thumb_func_end sub_0809AB20 + + thumb_func_start sub_0809AB48 +sub_0809AB48: @ 0x0809AB48 + push {lr} + bl sub_080987AC + adds r1, r0, #0 + ldr r0, _0809AB64 + ldr r0, [r0] + subs r1, r1, r0 + ldr r0, _0809AB68 + bl sub_08008BCC + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809AB64: .4byte gUnknown_2037264 +_0809AB68: .4byte gUnknown_2021C7C + thumb_func_end sub_0809AB48 + + thumb_func_start sub_0809AB6C +sub_0809AB6C: @ 0x0809AB6C + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_080987AC + adds r1, r0, #0 + ldr r0, _0809AB98 + ldr r0, [r0] + subs r1, r1, r0 + ldr r0, _0809AB9C + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AB98: .4byte gUnknown_2037264 +_0809AB9C: .4byte gUnknown_84E8918 + thumb_func_end sub_0809AB6C + + thumb_func_start sub_0809ABA0 +sub_0809ABA0: @ 0x0809ABA0 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r1, _0809ABD8 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r4, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809ABD8: .4byte gUnknown_84E8918 + thumb_func_end sub_0809ABA0 + + thumb_func_start sub_0809ABDC +sub_0809ABDC: @ 0x0809ABDC + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, [r4, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + bl sub_080987AC + mov r8, r0 + adds r0, r4, #0 + bl sub_080987AC + ldr r1, [r4, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r4, #8] + ldr r4, _0809AC58 + str r0, [sp] + str r2, [sp, #4] + adds r0, r6, #0 + mov r1, sb + adds r2, r5, #0 + mov r3, r8 + bl sub_080F9AD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0809AC58: .4byte gUnknown_2037290 + thumb_func_end sub_0809ABDC + + thumb_func_start sub_0809AC5C +sub_0809AC5C: @ 0x0809AC5C + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0809AC84 + bl sub_080F9B58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AC84: .4byte gUnknown_2037290 + thumb_func_end sub_0809AC5C + + thumb_func_start sub_0809AC88 +sub_0809AC88: @ 0x0809AC88 + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_080F9C90 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AC88 + + thumb_func_start sub_0809ACB4 +sub_0809ACB4: @ 0x0809ACB4 + push {r4, r5, r6, r7, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r1, _0809ACC8 + movs r0, #6 + strh r0, [r1] + movs r6, #0 + b _0809AD02 + .align 2, 0 +_0809ACC8: .4byte gUnknown_2037290 +_0809ACCC: + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _0809ACFC + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_081B69FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809ACFC + ldr r0, _0809ACF4 + strh r6, [r0] + ldr r0, _0809ACF8 + strh r5, [r0] + b _0809AD22 + .align 2, 0 +_0809ACF4: .4byte gUnknown_2037290 +_0809ACF8: .4byte gUnknown_2037280 +_0809ACFC: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0809AD02: + cmp r6, #5 + bhi _0809AD22 + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _0809AD2C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _0809ACCC +_0809AD22: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0809AD2C: .4byte gUnknown_2024190 + thumb_func_end sub_0809ACB4 + + thumb_func_start sub_0809AD30 +sub_0809AD30: @ 0x0809AD30 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r2, r0, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + cmp r1, #0 + bne _0809AD56 + ldr r0, _0809AD60 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r2, #0 + bl sub_080E4948 +_0809AD56: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AD60: .4byte gUnknown_3005AEC + thumb_func_end sub_0809AD30 + + thumb_func_start sub_0809AD64 +sub_0809AD64: @ 0x0809AD64 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r2, r0, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + cmp r1, #0 + bne _0809AD8A + ldr r0, _0809AD94 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r2, #0 + bl sub_080E4980 +_0809AD8A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809AD94: .4byte gUnknown_3005AEC + thumb_func_end sub_0809AD64 + + thumb_func_start sub_0809AD98 +sub_0809AD98: @ 0x0809AD98 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r2, r0, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + adds r0, #1 + str r0, [r4, #8] + cmp r1, #0 + bne _0809ADC6 + ldr r4, _0809ADD0 + ldr r0, _0809ADD4 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r2, #0 + bl sub_080E4930 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] +_0809ADC6: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809ADD0: .4byte gUnknown_2037290 +_0809ADD4: .4byte gUnknown_3005AEC + thumb_func_end sub_0809AD98 + + thumb_func_start sub_0809ADD8 +sub_0809ADD8: @ 0x0809ADD8 + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r4, [r1] + adds r2, r1, #1 + str r2, [r0, #8] + ldrb r1, [r1, #1] + adds r2, #1 + str r2, [r0, #8] + cmp r1, #0 + bne _0809AE08 + ldr r0, _0809AE10 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080E4AC8 +_0809AE08: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0809AE10: .4byte gUnknown_3005AEC + thumb_func_end sub_0809ADD8 + + thumb_func_start sub_0809AE14 +sub_0809AE14: @ 0x0809AE14 + push {lr} + bl sub_080E4B60 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809AE14 + + thumb_func_start sub_0809AE20 +sub_0809AE20: @ 0x0809AE20 + push {lr} + ldr r1, [r0, #8] + adds r1, #1 + adds r2, r1, #1 + str r2, [r0, #8] + ldrb r1, [r1, #1] + adds r2, #1 + str r2, [r0, #8] + cmp r1, #0 + bne _0809AE46 + ldr r0, _0809AE4C + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + bl sub_080E4AB0 +_0809AE46: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809AE4C: .4byte gUnknown_3005AEC + thumb_func_end sub_0809AE20 + + thumb_func_start sub_0809AE50 +sub_0809AE50: @ 0x0809AE50 + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08145C6C + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809AE50 + + thumb_func_start sub_0809AE78 +sub_0809AE78: @ 0x0809AE78 + push {lr} + ldr r1, [r0, #8] + adds r1, #2 + str r1, [r0, #8] + bl sub_08145CD4 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AE78 + + thumb_func_start sub_0809AE8C +sub_0809AE8C: @ 0x0809AE8C + push {lr} + ldr r1, [r0, #8] + adds r1, #2 + str r1, [r0, #8] + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08145C20 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AE8C + + thumb_func_start sub_0809AEA8 +sub_0809AEA8: @ 0x0809AEA8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + bl sub_080B0D1C + str r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809AEA8 + + thumb_func_start sub_0809AEBC +sub_0809AEBC: @ 0x0809AEBC + push {lr} + bl sub_080B10CC + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809AEBC + + thumb_func_start sub_0809AEC8 +sub_0809AEC8: @ 0x0809AEC8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080B13E4 + str r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AEC8 + + thumb_func_start sub_0809AEDC +sub_0809AEDC: @ 0x0809AEDC + push {r4, lr} + adds r4, r0, #0 + bl sub_080B13FC + str r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AEDC + + thumb_func_start sub_0809AEF0 +sub_0809AEF0: @ 0x0809AEF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080B108C + strb r0, [r4, #2] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AEF0 + + thumb_func_start sub_0809AF14 +sub_0809AF14: @ 0x0809AF14 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080B10A4 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809AF14 + + thumb_func_start sub_0809AF30 +sub_0809AF30: @ 0x0809AF30 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080B10B8 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809AF30 + + thumb_func_start sub_0809AF4C +sub_0809AF4C: @ 0x0809AF4C + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08098794 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, [r4, #8] + ldrb r6, [r0] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_08098794 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080F9C30 + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809AF4C + + thumb_func_start sub_0809AF80 +sub_0809AF80: @ 0x0809AF80 + push {lr} + bl sub_080B01A4 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809AF80 + + thumb_func_start sub_0809AF90 +sub_0809AF90: @ 0x0809AF90 + push {lr} + bl sub_080987AC + bl sub_080E07D0 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809AF90 + + thumb_func_start sub_0809AFA4 +sub_0809AFA4: @ 0x0809AFA4 + push {lr} + bl sub_080987AC + bl sub_080E07F4 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809AFA4 + + thumb_func_start sub_0809AFB8 +sub_0809AFB8: @ 0x0809AFB8 + push {lr} + bl sub_080987AC + bl sub_080E0814 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809AFB8 + + thumb_func_start sub_0809AFCC +sub_0809AFCC: @ 0x0809AFCC + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0809AFF0 + bl sub_0812A550 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809AFF0: .4byte sub_08085B34 + thumb_func_end sub_0809AFCC + + thumb_func_start sub_0809AFF4 +sub_0809AFF4: @ 0x0809AFF4 + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r3, [r1] + adds r2, r1, #1 + str r2, [r0, #8] + ldrb r4, [r1, #1] + adds r2, #1 + str r2, [r0, #8] + cmp r3, #0 + bne _0809B01C + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_080E0E68 + b _0809B028 +_0809B01C: + adds r0, r5, #0 + adds r1, r3, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_080E0E68 +_0809B028: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809AFF4 + + thumb_func_start sub_0809B030 +sub_0809B030: @ 0x0809B030 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r4, _0809B058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EFB3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B058: .4byte gUnknown_2037290 + thumb_func_end sub_0809B030 + + thumb_func_start sub_0809B05C +sub_0809B05C: @ 0x0809B05C + push {lr} + bl sub_081B90A4 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809B05C + + thumb_func_start sub_0809B06C +sub_0809B06C: @ 0x0809B06C + push {lr} + bl sub_080F8C90 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809B06C + + thumb_func_start sub_0809B07C +sub_0809B07C: @ 0x0809B07C + push {lr} + bl sub_080F8D08 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809B07C + + thumb_func_start sub_0809B08C +sub_0809B08C: @ 0x0809B08C + push {lr} + ldr r0, _0809B0A0 + ldrb r0, [r0] + bl sub_080F8D48 + bl sub_080988B8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809B0A0: .4byte gUnknown_2039BCC + thumb_func_end sub_0809B08C + + thumb_func_start sub_0809B0A4 +sub_0809B0A4: @ 0x0809B0A4 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809B0C8 + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080B5270 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809B0C8: .4byte gUnknown_2037270 + thumb_func_end sub_0809B0A4 + + thumb_func_start sub_0809B0CC +sub_0809B0CC: @ 0x0809B0CC + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r1, _0809B0F8 + lsls r4, r4, #2 + adds r4, r4, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B0F8: .4byte gUnknown_20388A8 + thumb_func_end sub_0809B0CC + + thumb_func_start sub_0809B0FC +sub_0809B0FC: @ 0x0809B0FC + push {lr} + ldr r0, _0809B110 + ldrb r0, [r0] + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809B114 + movs r0, #0 + b _0809B116 + .align 2, 0 +_0809B110: .4byte gUnknown_2037270 +_0809B114: + movs r0, #1 +_0809B116: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B0FC + + thumb_func_start sub_0809B11C +sub_0809B11C: @ 0x0809B11C + push {r4, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + ldr r1, _0809B140 + strh r0, [r1] + ldr r1, _0809B144 + adds r0, r4, #0 + bl sub_08098688 + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B140: .4byte gUnknown_2037270 +_0809B144: .4byte sub_0809B0FC + thumb_func_end sub_0809B11C + + thumb_func_start sub_0809B148 +sub_0809B148: @ 0x0809B148 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08084684 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809B148 + + thumb_func_start sub_0809B164 +sub_0809B164: @ 0x0809B164 + ldr r1, _0809B174 + ldr r0, _0809B178 + ldr r0, [r0] + ldrb r0, [r0, #8] + strh r0, [r1] + movs r0, #0 + bx lr + .align 2, 0 +_0809B174: .4byte gUnknown_2037290 +_0809B178: .4byte gUnknown_3005AF0 + thumb_func_end sub_0809B164 + + thumb_func_start sub_0809B17C +sub_0809B17C: @ 0x0809B17C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080A2CCC + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809B17C + + thumb_func_start sub_0809B1B4 +sub_0809B1B4: @ 0x0809B1B4 + push {lr} + ldr r1, _0809B1C4 + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809B1C4: .4byte sub_080A2F40 + thumb_func_end sub_0809B1B4 + + thumb_func_start sub_0809B1C8 +sub_0809B1C8: @ 0x0809B1C8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + adds r1, r6, #7 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + adds r1, r5, #7 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + cmp r0, #0 + bne _0809B22C + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_08087C54 + b _0809B23E +_0809B22C: + movs r1, #0xc0 + lsls r1, r1, #4 + adds r0, r1, #0 + adds r2, r7, #0 + orrs r2, r0 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08087C54 +_0809B23E: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B1C8 + + thumb_func_start sub_0809B248 +sub_0809B248: @ 0x0809B248 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + adds r5, #7 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + adds r4, r4, r0 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0808A294 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A306C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0808A248 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B248 + + thumb_func_start sub_0809B2A0 +sub_0809B2A0: @ 0x0809B2A0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + adds r4, #7 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A210 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809B2A0 + + thumb_func_start sub_0809B2E4 +sub_0809B2E4: @ 0x0809B2E4 + push {lr} + bl sub_0808A280 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809B2F4 + movs r0, #0 + b _0809B2F6 +_0809B2F4: + movs r0, #1 +_0809B2F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B2E4 + + thumb_func_start sub_0809B2FC +sub_0809B2FC: @ 0x0809B2FC + push {lr} + ldr r1, _0809B30C + bl sub_08098688 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0809B30C: .4byte sub_0809B2E4 + thumb_func_end sub_0809B2FC + + thumb_func_start sub_0809B310 +sub_0809B310: @ 0x0809B310 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + adds r4, #7 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A1B8 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809B310 + + thumb_func_start sub_0809B354 +sub_0809B354: @ 0x0809B354 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + adds r4, #7 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0808A1E4 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809B354 + + thumb_func_start sub_0809B398 +sub_0809B398: @ 0x0809B398 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r0, r4, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809B398 + + thumb_func_start sub_0809B3D4 +sub_0809B3D4: @ 0x0809B3D4 + movs r0, #0 + bx lr + thumb_func_end sub_0809B3D4 + + thumb_func_start sub_0809B3D8 +sub_0809B3D8: @ 0x0809B3D8 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF20 + adds r4, r0, #0 + bl sub_08145CF0 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B3D8 + + thumb_func_start sub_0809B3F8 +sub_0809B3F8: @ 0x0809B3F8 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08145D40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809B420 + ldr r1, _0809B41C + movs r0, #0 + b _0809B424 + .align 2, 0 +_0809B41C: .4byte gUnknown_2037290 +_0809B420: + ldr r1, _0809B42C + movs r0, #1 +_0809B424: + strh r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809B42C: .4byte gUnknown_2037290 + thumb_func_end sub_0809B3F8 + + thumb_func_start sub_0809B430 +sub_0809B430: @ 0x0809B430 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08145D8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809B458 + ldr r1, _0809B454 + movs r0, #0 + b _0809B45C + .align 2, 0 +_0809B454: .4byte gUnknown_2037290 +_0809B458: + ldr r1, _0809B464 + movs r0, #1 +_0809B45C: + strh r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809B464: .4byte gUnknown_2037290 + thumb_func_end sub_0809B430 + + thumb_func_start sub_0809B468 +sub_0809B468: @ 0x0809B468 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A8720 + ldr r1, _0809B488 + strh r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809B488: .4byte gUnknown_203726A + thumb_func_end sub_0809B468 + + thumb_func_start sub_0809B48C +sub_0809B48C: @ 0x0809B48C + push {lr} + bl sub_081A8878 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809B48C + + thumb_func_start sub_0809B498 +sub_0809B498: @ 0x0809B498 + push {lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A86B4 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809B498 + + thumb_func_start sub_0809B4B4 +sub_0809B4B4: @ 0x0809B4B4 + push {lr} + bl sub_081A86DC + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0809B4B4 + + thumb_func_start sub_0809B4C0 +sub_0809B4C0: @ 0x0809B4C0 + push {lr} + bl sub_080B3F14 + ldr r1, _0809B4D0 + strb r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809B4D0: .4byte gUnknown_3005B50 + thumb_func_end sub_0809B4C0 + + thumb_func_start sub_0809B4D4 +sub_0809B4D4: @ 0x0809B4D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080856F4 + cmp r0, #0 + beq _0809B4E4 + movs r0, #0 + b _0809B508 +_0809B4E4: + ldr r2, _0809B510 + ldr r0, _0809B514 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0809B506 + bl sub_08097FB8 + ldr r1, _0809B518 + adds r0, r4, #0 + bl sub_08098688 +_0809B506: + movs r0, #1 +_0809B508: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B510: .4byte gUnknown_2036FF0 +_0809B514: .4byte gUnknown_3005B50 +_0809B518: .4byte sub_080980BC + thumb_func_end sub_0809B4D4 + + thumb_func_start sub_0809B51C +sub_0809B51C: @ 0x0809B51C + push {lr} + sub sp, #4 + movs r2, #1 + mov r1, sp + strb r2, [r1] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0809B550 + adds r0, r0, r1 + movs r1, #0x50 + mov r2, sp + bl sub_0806A774 + movs r0, #0 + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_0809B550: .4byte gUnknown_2024190 + thumb_func_end sub_0809B51C + + thumb_func_start sub_0809B554 +sub_0809B554: @ 0x0809B554 + push {r4, lr} + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0809B584 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0809B588 + adds r0, r0, r1 + movs r1, #0x50 + movs r2, #0 + bl sub_0806A058 + strh r0, [r4] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B584: .4byte gUnknown_2037290 +_0809B588: .4byte gUnknown_2024190 + thumb_func_end sub_0809B554 + + thumb_func_start sub_0809B58C +sub_0809B58C: @ 0x0809B58C + push {r4, lr} + adds r4, r0, #0 + bl sub_08098BCC + adds r2, r0, #0 + cmp r2, #0 + beq _0809B5A8 + ldr r1, _0809B5B0 + ldr r0, [r4, #8] + str r0, [r1] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0809876C +_0809B5A8: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B5B0: .4byte gUnknown_2037260 + thumb_func_end sub_0809B58C + + thumb_func_start sub_0809B5B4 +sub_0809B5B4: @ 0x0809B5B4 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808C9E4 + bl sub_080AFB40 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B5B4 + + thumb_func_start sub_0809B648 +sub_0809B648: @ 0x0809B648 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, [r4, #8] + ldrb r2, [r0] + mov r1, sp + strb r2, [r1] + adds r0, #1 + str r0, [r4, #8] + cmp r3, #5 + bhi _0809B67E + movs r0, #0x64 + muls r0, r3, r0 + ldr r1, _0809B688 + adds r0, r0, r1 + movs r1, #0x23 + mov r2, sp + bl sub_0806A774 +_0809B67E: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B688: .4byte gUnknown_2024190 + thumb_func_end sub_0809B648 + + thumb_func_start sub_0809B68C +sub_0809B68C: @ 0x0809B68C + push {r4, lr} + ldr r4, _0809B6A4 + ldrb r0, [r4] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809B6A4: .4byte gUnknown_3000F30 + thumb_func_end sub_0809B68C + + thumb_func_start sub_0809B6A8 +sub_0809B6A8: @ 0x0809B6A8 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809B6E0 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r4, [r4] + bl sub_0806EB08 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B6E0: .4byte gUnknown_84E8918 + thumb_func_end sub_0809B6A8 + + thumb_func_start sub_0809B6E4 +sub_0809B6E4: @ 0x0809B6E4 + push {r4, lr} + ldr r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0809B71C + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r4, [r4] + bl sub_0806EB38 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809B71C: .4byte gUnknown_84E8918 + thumb_func_end sub_0809B6E4 + + thumb_func_start sub_0809B720 +sub_0809B720: @ 0x0809B720 + ldr r1, _0809B728 + strh r0, [r1] + bx lr + .align 2, 0 +_0809B728: .4byte gUnknown_203726A + thumb_func_end sub_0809B720 + + thumb_func_start sub_0809B72C +sub_0809B72C: @ 0x0809B72C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r5, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r5, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r5, #8] + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08098794 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + mov r1, sb + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov sb, r1 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08084554 + bl sub_080AF098 + bl sub_08084BD0 + movs r0, #1 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B72C + + thumb_func_start sub_0809B7B4 +sub_0809B7B4: @ 0x0809B7B4 + push {r4, r5, lr} + movs r1, #2 + rsbs r1, r1, #0 + movs r3, #3 + rsbs r3, r3, #0 + movs r4, #5 + rsbs r4, r4, #0 + movs r5, #9 + rsbs r5, r5, #0 + movs r2, #0 + strb r2, [r0] + ldrb r2, [r0, #1] + ands r1, r2 + ands r1, r3 + ands r1, r4 + ands r1, r5 + strb r1, [r0, #1] + movs r1, #0 + strb r1, [r0, #2] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0809B7B4 + + thumb_func_start sub_0809B7E0 +sub_0809B7E0: @ 0x0809B7E0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + ldr r0, _0809B8B0 + ldrb r6, [r0, #3] + ldrb r0, [r0, #2] + mov sb, r0 + bl sub_0809BAA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080889B0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r6, #2 + bne _0809B814 + cmp r7, #0 + beq _0809B818 +_0809B814: + cmp r6, #0 + bne _0809B87A +_0809B818: + bl sub_0811A988 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + beq _0809B864 + movs r0, #8 + ands r0, r5 + cmp r0, #0 + beq _0809B834 + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] +_0809B834: + movs r0, #4 + ands r0, r5 + cmp r0, #0 + beq _0809B844 + ldrb r0, [r4] + movs r1, #8 + orrs r0, r1 + strb r0, [r4] +_0809B844: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _0809B854 + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + strb r0, [r4] +_0809B854: + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _0809B864 + ldrb r0, [r4] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4] +_0809B864: + movs r0, #0xf0 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0809B87A + ldrb r0, [r4] + movs r1, #0x10 + orrs r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4] +_0809B87A: + cmp r7, #0 + bne _0809B8A0 + cmp r6, #2 + bne _0809B890 + mov r0, sb + cmp r0, #2 + bne _0809B890 + ldrb r0, [r4] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4] +_0809B890: + cmp r7, #0 + bne _0809B8A0 + cmp r6, #2 + bne _0809B8A0 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] +_0809B8A0: + movs r0, #0x40 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0809B8B4 + movs r0, #2 + b _0809B8DC + .align 2, 0 +_0809B8B0: .4byte gUnknown_2037230 +_0809B8B4: + movs r0, #0x80 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0809B8C2 + movs r0, #1 + b _0809B8DC +_0809B8C2: + movs r0, #0x20 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0809B8D0 + movs r0, #3 + b _0809B8DC +_0809B8D0: + movs r0, #0x10 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0809B8DE + movs r0, #4 +_0809B8DC: + strb r0, [r4, #2] +_0809B8DE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809B7E0 + + thumb_func_start sub_0809B8EC +sub_0809B8EC: @ 0x0809B8EC + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r0, _0809BA2C + movs r1, #0 + strh r1, [r0] + ldr r0, _0809BA30 + strb r1, [r0] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r4, sp + mov r0, sp + bl sub_0809BA54 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080B3340 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 + bl sub_08098A04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809B948 + bl sub_0809C174 + cmp r0, #1 + beq _0809BA26 +_0809B948: + ldrb r1, [r5] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0809B96E + movs r0, #5 + bl sub_0808414C + bl sub_0813B1BC + mov r0, sp + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0809C1B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809B96E: + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0809B986 + adds r0, r4, #0 + bl sub_0809C4C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809B986: + ldrb r1, [r5] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0809B9A8 + ldrb r0, [r5, #2] + cmp r0, r6 + bne _0809B9A8 + mov r0, sp + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0809C510 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809B9A8: + mov r4, sp + mov r0, sp + bl sub_0809BA6C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809B9DE + mov r0, sp + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0809BAD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809B9DE: + ldrb r1, [r5] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0809BA00 + ldrb r0, [r5, #2] + cmp r0, r6 + bne _0809BA00 + mov r0, sp + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0809C850 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809BA00: + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809BA12 + bl sub_0809C140 + cmp r0, #1 + beq _0809BA26 +_0809BA12: + ldrb r1, [r5] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0809BA34 + movs r0, #6 + bl sub_080A306C + bl sub_0809F374 +_0809BA26: + movs r0, #1 + b _0809BA4A + .align 2, 0 +_0809BA2C: .4byte gUnknown_2037292 +_0809BA30: .4byte gUnknown_3005B50 +_0809BA34: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0809BA48 + bl sub_081AD318 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BA26 +_0809BA48: + movs r0, #0 +_0809BA4A: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809B8EC + + thumb_func_start sub_0809BA54 +sub_0809BA54: @ 0x0809BA54 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #2 + bl sub_0808B410 + bl sub_0808B5D8 + strb r0, [r4, #4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809BA54 + + thumb_func_start sub_0809BA6C +sub_0809BA6C: @ 0x0809BA6C + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + adds r1, r5, #2 + bl sub_0808B3CC + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0809BA9E + bl sub_0808B5D8 +_0809BA9E: + strb r0, [r5, #4] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0809BA6C + + thumb_func_start sub_0809BAA8 +sub_0809BAA8: @ 0x0809BAA8 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809BAA8 + + thumb_func_start sub_0809BAD4 +sub_0809BAD4: @ 0x0809BAD4 + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_0809BB48 + adds r4, r0, #0 + cmp r4, #0 + bne _0809BAEC + movs r0, #0 + b _0809BB24 +_0809BAEC: + ldr r0, _0809BB2C + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB30 + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB34 + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB38 + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB3C + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB40 + cmp r4, r0 + beq _0809BB1C + ldr r0, _0809BB44 + cmp r4, r0 + beq _0809BB1C + movs r0, #5 + bl sub_080A306C +_0809BB1C: + adds r0, r4, #0 + bl sub_08098880 + movs r0, #1 +_0809BB24: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809BB2C: .4byte gUnknown_81F01BC +_0809BB30: .4byte gUnknown_81F0D9F +_0809BB34: .4byte gUnknown_821D3AA +_0809BB38: .4byte gUnknown_821D478 +_0809BB3C: .4byte gUnknown_82465B5 +_0809BB40: .4byte gUnknown_82465B9 +_0809BB44: .4byte gUnknown_8242E1E + thumb_func_end sub_0809BAD4 + + thumb_func_start sub_0809BB48 +sub_0809BB48: @ 0x0809BB48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + mov r8, r5 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + adds r7, r4, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0809BC5C + cmp r0, #0 + bne _0809BB94 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0809BD30 + cmp r0, #0 + bne _0809BB94 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0809BE10 + cmp r0, #0 + bne _0809BB94 + adds r0, r6, #0 + mov r1, r8 + adds r2, r7, #0 + bl sub_0809C0C4 + cmp r0, #0 + bne _0809BB94 + movs r0, #0 +_0809BB94: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809BB48 + + thumb_func_start sub_0809BBA0 +sub_0809BBA0: @ 0x0809BBA0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088B1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BBC8 + ldrh r0, [r4] + ldrh r1, [r4, #2] + b _0809BBE6 +_0809BBC8: + ldr r1, _0809BC0C + lsls r2, r6, #3 + adds r0, r2, r1 + ldr r3, [r0] + ldrh r0, [r4] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, #4 + adds r2, r2, r1 + ldr r2, [r2] + ldrh r1, [r4, #2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 +_0809BBE6: + ldrb r2, [r4, #4] + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x10 + beq _0809BC06 + ldr r1, _0809BC10 + lsls r2, r3, #3 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #8] + adds r5, r1, #0 + cmp r0, #0xff + bne _0809BC14 +_0809BC06: + movs r0, #0 + b _0809BC46 + .align 2, 0 +_0809BC0C: .4byte gUnknown_830FCB0 +_0809BC10: .4byte gUnknown_2036FF0 +_0809BC14: + movs r4, #0 + ldr r1, _0809BC4C +_0809BC18: + ldrb r0, [r1] + cmp r0, #1 + bne _0809BC24 + ldrb r0, [r1, #2] + cmp r0, r3 + beq _0809BC06 +_0809BC24: + adds r1, #4 + adds r4, #1 + cmp r4, #3 + ble _0809BC18 + ldr r0, _0809BC50 + strb r3, [r0] + ldr r1, _0809BC54 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #8] + strh r0, [r1] + ldr r0, _0809BC58 + strh r6, [r0] + adds r0, r3, #0 + bl sub_0808E98C +_0809BC46: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0809BC4C: .4byte gUnknown_2031FA8 +_0809BC50: .4byte gUnknown_3005B50 +_0809BC54: .4byte gUnknown_2037292 +_0809BC58: .4byte gUnknown_2037294 + thumb_func_end sub_0809BBA0 + + thumb_func_start sub_0809BC5C +sub_0809BC5C: @ 0x0809BC5C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldrh r0, [r5] + ldrh r1, [r5, #2] + ldrb r2, [r5, #4] + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x10 + beq _0809BC8C + ldr r1, _0809BCDC + lsls r2, r4, #3 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #8] + adds r3, r1, #0 + cmp r0, #0xff + bne _0809BCE4 +_0809BC8C: + adds r0, r6, #0 + bl sub_08088B1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BCD8 + ldr r1, _0809BCE0 + lsls r2, r7, #3 + adds r0, r2, r1 + ldr r3, [r0] + ldrh r0, [r5] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, #4 + adds r2, r2, r1 + ldr r2, [r2] + ldrh r1, [r5, #2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrb r2, [r5, #4] + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x10 + beq _0809BCD8 + ldr r1, _0809BCDC + lsls r2, r4, #3 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #8] + adds r3, r1, #0 + cmp r0, #0xff + bne _0809BCE4 +_0809BCD8: + movs r0, #0 + b _0809BD26 + .align 2, 0 +_0809BCDC: .4byte gUnknown_2036FF0 +_0809BCE0: .4byte gUnknown_830FCB0 +_0809BCE4: + ldr r0, _0809BD08 + strb r4, [r0] + ldr r1, _0809BD0C + adds r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #8] + strh r0, [r1] + ldr r0, _0809BD10 + strh r7, [r0] + bl sub_081D5A10 + cmp r0, #1 + bne _0809BD14 + bl sub_081D5C48 + b _0809BD1A + .align 2, 0 +_0809BD08: .4byte gUnknown_3005B50 +_0809BD0C: .4byte gUnknown_2037292 +_0809BD10: .4byte gUnknown_2037294 +_0809BD14: + adds r0, r4, #0 + bl sub_0808E98C +_0809BD1A: + adds r1, r0, #0 + ldr r0, _0809BD2C + ldrb r0, [r0] + bl sub_08098B10 + adds r1, r0, #0 +_0809BD26: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0809BD2C: .4byte gUnknown_2037292 + thumb_func_end sub_0809BC5C + + thumb_func_start sub_0809BD30 +sub_0809BD30: @ 0x0809BD30 + push {r4, r5, lr} + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + ldr r4, _0809BD60 + ldrh r1, [r0] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r0, #2] + subs r2, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrb r3, [r0, #4] + adds r0, r4, #0 + bl sub_0809C9F4 + cmp r0, #0 + beq _0809BDA4 + ldr r2, [r0, #8] + cmp r2, #0 + bne _0809BD68 + ldr r0, _0809BD64 + b _0809BE0A + .align 2, 0 +_0809BD60: .4byte gUnknown_2036FB8 +_0809BD64: .4byte gUnknown_8276D3D +_0809BD68: + ldrb r0, [r0, #5] + cmp r0, #8 + bhi _0809BE08 + lsls r0, r0, #2 + ldr r1, _0809BD78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809BD78: .4byte _0809BD7C +_0809BD7C: @ jump table + .4byte _0809BE08 @ case 0 + .4byte _0809BDA0 @ case 1 + .4byte _0809BDA8 @ case 2 + .4byte _0809BDAE @ case 3 + .4byte _0809BDB4 @ case 4 + .4byte _0809BDBA @ case 5 + .4byte _0809BDBA @ case 6 + .4byte _0809BDBA @ case 7 + .4byte _0809BDE8 @ case 8 +_0809BDA0: + cmp r5, #2 + beq _0809BE08 +_0809BDA4: + movs r0, #0 + b _0809BE0A +_0809BDA8: + cmp r5, #1 + beq _0809BE08 + b _0809BDA4 +_0809BDAE: + cmp r5, #4 + beq _0809BE08 + b _0809BDA4 +_0809BDB4: + cmp r5, #3 + beq _0809BE08 + b _0809BDA4 +_0809BDBA: + ldr r1, _0809BDDC + lsrs r0, r2, #0x10 + movs r3, #0xfa + lsls r3, r3, #1 + adds r0, r0, r3 + strh r0, [r1] + ldr r0, _0809BDE0 + strh r2, [r0] + ldrh r0, [r1] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809BDA4 + ldr r0, _0809BDE4 + b _0809BE0A + .align 2, 0 +_0809BDDC: .4byte gUnknown_2037280 +_0809BDE0: .4byte gUnknown_2037282 +_0809BDE4: .4byte gUnknown_8242D49 +_0809BDE8: + cmp r5, #2 + bne _0809BDA4 + ldr r0, _0809BE00 + strh r2, [r0] + bl sub_080EA320 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809BDA4 + ldr r0, _0809BE04 + b _0809BE0A + .align 2, 0 +_0809BE00: .4byte gUnknown_2037280 +_0809BE04: .4byte gUnknown_8245AA0 +_0809BE08: + adds r0, r2, #0 +_0809BE0A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809BD30 + + thumb_func_start sub_0809BE10 +sub_0809BE10: @ 0x0809BE10 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08088B30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BE34 + ldr r0, _0809BE30 + b _0809C0BC + .align 2, 0 +_0809BE30: .4byte gUnknown_824C47B +_0809BE34: + adds r0, r5, #0 + bl sub_08088B4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BE4C + ldr r0, _0809BE48 + b _0809C0BC + .align 2, 0 +_0809BE48: .4byte gUnknown_8242E1E +_0809BE4C: + adds r0, r5, #0 + bl sub_0808915C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BE64 + ldr r0, _0809BE60 + b _0809C0BC + .align 2, 0 +_0809BE60: .4byte gUnknown_81E27F7 +_0809BE64: + adds r0, r5, #0 + bl sub_08089170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BE7C + ldr r0, _0809BE78 + b _0809C0BC + .align 2, 0 +_0809BE78: .4byte gUnknown_821BD3E +_0809BE7C: + adds r0, r5, #0 + bl sub_08088B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BE8C + b _0809BFBC +_0809BE8C: + adds r0, r5, #0 + bl sub_08089198 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BEA4 + ldr r0, _0809BEA0 + b _0809C0BC + .align 2, 0 +_0809BEA0: .4byte gUnknown_826240A +_0809BEA4: + adds r0, r5, #0 + bl sub_08089134 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BEBC + ldr r0, _0809BEB8 + b _0809C0BC + .align 2, 0 +_0809BEB8: .4byte gUnknown_823CFFB +_0809BEBC: + adds r0, r5, #0 + bl sub_08089148 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BED4 + ldr r0, _0809BED0 + b _0809C0BC + .align 2, 0 +_0809BED0: .4byte gUnknown_824311B +_0809BED4: + adds r0, r5, #0 + bl sub_08089380 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BEEC + ldr r0, _0809BEE8 + b _0809C0BC + .align 2, 0 +_0809BEE8: .4byte gUnknown_82585CF +_0809BEEC: + adds r0, r5, #0 + bl sub_08089394 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF04 + ldr r0, _0809BF00 + b _0809C0BC + .align 2, 0 +_0809BF00: .4byte gUnknown_8243651 +_0809BF04: + adds r0, r5, #0 + bl sub_080893A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF1C + ldr r0, _0809BF18 + b _0809C0BC + .align 2, 0 +_0809BF18: .4byte gUnknown_824365A +_0809BF1C: + adds r0, r5, #0 + bl sub_080893BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF34 + ldr r0, _0809BF30 + b _0809C0BC + .align 2, 0 +_0809BF30: .4byte gUnknown_8243663 +_0809BF34: + adds r0, r5, #0 + bl sub_080893D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF4C + ldr r0, _0809BF48 + b _0809C0BC + .align 2, 0 +_0809BF48: .4byte gUnknown_824366C +_0809BF4C: + adds r0, r5, #0 + bl sub_080893E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF64 + ldr r0, _0809BF60 + b _0809C0BC + .align 2, 0 +_0809BF60: .4byte gUnknown_8243675 +_0809BF64: + adds r0, r5, #0 + bl sub_080893F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF7C + ldr r0, _0809BF78 + b _0809C0BC + .align 2, 0 +_0809BF78: .4byte gUnknown_824367E +_0809BF7C: + adds r0, r5, #0 + bl sub_0808940C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BF94 + ldr r0, _0809BF90 + b _0809C0BC + .align 2, 0 +_0809BF90: .4byte gUnknown_8243687 +_0809BF94: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089434 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BFAC + ldr r0, _0809BFA8 + b _0809C0BC + .align 2, 0 +_0809BFA8: .4byte gUnknown_8247869 +_0809BFAC: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089450 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BFC4 +_0809BFBC: + ldr r0, _0809BFC0 + b _0809C0BC + .align 2, 0 +_0809BFC0: .4byte gUnknown_8247044 +_0809BFC4: + adds r0, r5, #0 + bl sub_0808946C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BFDC + ldr r0, _0809BFD8 + b _0809C0BC + .align 2, 0 +_0809BFD8: .4byte gUnknown_8244245 +_0809BFDC: + adds r0, r5, #0 + bl sub_080894A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809BFF4 + ldr r0, _0809BFF0 + b _0809C0BC + .align 2, 0 +_0809BFF0: .4byte gUnknown_8276CAF +_0809BFF4: + movs r4, #4 + ldrsb r4, [r6, r4] + movs r1, #0 + ldrsh r0, [r6, r1] + movs r2, #2 + ldrsh r1, [r6, r2] + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0809C0A8 + adds r0, r5, #0 + bl sub_08088BEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C024 + ldr r0, _0809C020 + b _0809C0BC + .align 2, 0 +_0809C020: .4byte gUnknown_821D3AA +_0809C024: + adds r0, r5, #0 + bl sub_08088C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C03C + ldr r0, _0809C038 + b _0809C0BC + .align 2, 0 +_0809C038: .4byte gUnknown_821D478 +_0809C03C: + adds r0, r5, #0 + bl sub_08088D40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C054 + ldr r0, _0809C050 + b _0809C0BC + .align 2, 0 +_0809C050: .4byte gUnknown_821D573 +_0809C054: + adds r0, r5, #0 + bl sub_08088D54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C06C + ldr r0, _0809C068 + b _0809C0BC + .align 2, 0 +_0809C068: .4byte gUnknown_821D57B +_0809C06C: + adds r0, r5, #0 + bl sub_08088C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C080 + bl sub_080EC10C + b _0809C0BA +_0809C080: + adds r0, r5, #0 + bl sub_08088CC8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C094 + bl sub_080EC580 + b _0809C0BA +_0809C094: + adds r0, r5, #0 + bl sub_08088CB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C0BA + bl sub_080EC6C8 + b _0809C0BA +_0809C0A8: + adds r0, r5, #0 + bl sub_08088C64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C0BA + bl sub_080EC038 +_0809C0BA: + movs r0, #0 +_0809C0BC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809BE10 + + thumb_func_start sub_0809C0C4 +sub_0809C0C4: @ 0x0809C0C4 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _0809C0F4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C0FC + bl sub_0808B764 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C0FC + bl sub_0808B7D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C0FC + ldr r0, _0809C0F8 + b _0809C13A + .align 2, 0 +_0809C0F4: .4byte 0x0000086B +_0809C0F8: .4byte gUnknown_8242F2C +_0809C0FC: + adds r0, r4, #0 + bl sub_080890A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C138 + ldr r0, _0809C128 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C130 + bl sub_0808B7B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C130 + ldr r0, _0809C12C + b _0809C13A + .align 2, 0 +_0809C128: .4byte 0x0000086E +_0809C12C: .4byte gUnknown_825685D +_0809C130: + ldr r0, _0809C134 + b _0809C13A + .align 2, 0 +_0809C134: .4byte gUnknown_8256897 +_0809C138: + movs r0, #0 +_0809C13A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809C0C4 + + thumb_func_start sub_0809C140 +sub_0809C140: @ 0x0809C140 + push {lr} + ldr r0, _0809C164 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809C16C + bl sub_0809CAC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0809C16C + ldr r0, _0809C168 + bl sub_08098880 + movs r0, #1 + b _0809C16E + .align 2, 0 +_0809C164: .4byte 0x0000086D +_0809C168: .4byte gUnknown_82568EA +_0809C16C: + movs r0, #0 +_0809C16E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C140 + + thumb_func_start sub_0809C174 +sub_0809C174: @ 0x0809C174 + push {lr} + ldr r0, _0809C1A0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809C1AC + ldr r0, _0809C1A4 + ldrb r0, [r0, #0x17] + cmp r0, #5 + bne _0809C1AC + bl sub_0809CAC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C1AC + ldr r0, _0809C1A8 + bl sub_08098880 + movs r0, #1 + b _0809C1AE + .align 2, 0 +_0809C1A0: .4byte 0x0000086D +_0809C1A4: .4byte gUnknown_2036FB8 +_0809C1A8: .4byte gUnknown_8256935 +_0809C1AC: + movs r0, #0 +_0809C1AE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C174 + + thumb_func_start sub_0809C1B4 +sub_0809C1B4: @ 0x0809C1B4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r6, r4, #0 + bl sub_0809C210 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C206 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809C574 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C206 + adds r0, r4, #0 + bl sub_0809C244 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C206 + adds r0, r6, #0 + bl sub_0809C2CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C206 + bl sub_080B4FC8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C206 + movs r0, #0 + b _0809C208 +_0809C206: + movs r0, #1 +_0809C208: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C1B4 + + thumb_func_start sub_0809C210 +sub_0809C210: @ 0x0809C210 + push {r4, lr} + ldr r4, _0809C238 + ldrh r1, [r0] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r0, #2] + subs r2, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrb r3, [r0, #4] + adds r0, r4, #0 + bl sub_0809C964 + cmp r0, #0 + beq _0809C23C + bl sub_08098880 + movs r0, #1 + b _0809C23E + .align 2, 0 +_0809C238: .4byte gUnknown_2036FB8 +_0809C23C: + movs r0, #0 +_0809C23E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809C210 + + thumb_func_start sub_0809C244 +sub_0809C244: @ 0x0809C244 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0808927C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809C260 + ldr r0, _0809C25C + b _0809C26E + .align 2, 0 +_0809C25C: .4byte gUnknown_826433F +_0809C260: + adds r0, r4, #0 + bl sub_08089420 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809C27C + ldr r0, _0809C278 +_0809C26E: + bl sub_08098880 + movs r0, #1 + b _0809C2C2 + .align 2, 0 +_0809C278: .4byte gUnknown_822D6B1 +_0809C27C: + adds r0, r4, #0 + bl sub_08088D2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C290 + bl sub_080FB240 + b _0809C2C0 +_0809C290: + adds r0, r4, #0 + bl sub_08088D18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C2C0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080FB1E0 +_0809C2C0: + movs r0, #0 +_0809C2C2: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C244 + + thumb_func_start sub_0809C2CC +sub_0809C2CC: @ 0x0809C2CC + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_08017AC0 + cmp r0, #1 + bne _0809C2DC + b _0809C3FC +_0809C2DC: + bl sub_080B1A48 + bl sub_0809C41C + bl sub_081D4018 + ldr r0, _0809C318 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0809C3D0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080889B0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809C3D0 + bl sub_0809C46C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C320 + ldr r0, _0809C31C + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C318: .4byte gUnknown_2037230 +_0809C31C: .4byte gUnknown_82440E6 +_0809C320: + bl sub_080705F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809C33C + movs r0, #0xd + bl sub_0808414C + ldr r0, _0809C338 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C338: .4byte gUnknown_8257A89 +_0809C33C: + bl sub_0813B3E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C354 + ldr r0, _0809C350 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C350: .4byte gUnknown_8244749 +_0809C354: + bl sub_081798BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C36C + ldr r0, _0809C368 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C368: .4byte gUnknown_821B7F4 +_0809C36C: + bl sub_08138148 + cmp r0, #1 + bne _0809C380 + ldr r0, _0809C37C + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C37C: .4byte gUnknown_81DDDF3 +_0809C380: + bl sub_08138190 + cmp r0, #1 + bne _0809C394 + ldr r0, _0809C390 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C390: .4byte gUnknown_81ED2AD +_0809C394: + bl sub_081381D8 + cmp r0, #1 + bne _0809C3A8 + ldr r0, _0809C3A4 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C3A4: .4byte gUnknown_81F1A71 +_0809C3A8: + bl sub_08138220 + cmp r0, #1 + bne _0809C3BC + ldr r0, _0809C3B8 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C3B8: .4byte gUnknown_8202410 +_0809C3BC: + bl sub_08138268 + cmp r0, #1 + bne _0809C3D0 + ldr r0, _0809C3CC + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C3CC: .4byte gUnknown_820DA9F +_0809C3D0: + bl sub_080FC9BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C400 + movs r0, #1 + bl sub_08138030 + cmp r0, #1 + bne _0809C3F4 + ldr r0, _0809C3F0 + bl sub_08098880 + b _0809C400 + .align 2, 0 +_0809C3F0: .4byte gUnknown_821DEC7 +_0809C3F4: + bl sub_08195C34 + cmp r0, #0 + bne _0809C400 +_0809C3FC: + movs r0, #0 + b _0809C402 +_0809C400: + movs r0, #1 +_0809C402: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809C2CC + + thumb_func_start sub_0809C408 +sub_0809C408: @ 0x0809C408 + push {lr} + ldr r0, _0809C418 + movs r1, #0 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0809C418: .4byte 0x0000402A + thumb_func_end sub_0809C408 + + thumb_func_start sub_0809C41C +sub_0809C41C: @ 0x0809C41C + push {r4, r5, lr} + ldr r0, _0809C450 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + ldrh r1, [r0] + movs r2, #0x7f + ands r1, r2 + strh r1, [r0] + cmp r1, #0 + bne _0809C44A + ldr r5, _0809C454 + movs r4, #5 +_0809C43A: + adds r0, r5, #0 + movs r1, #5 + bl sub_0806D3CC + adds r5, #0x64 + subs r4, #1 + cmp r4, #0 + bge _0809C43A +_0809C44A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C450: .4byte 0x0000402A +_0809C454: .4byte gUnknown_2024190 + thumb_func_end sub_0809C41C + + thumb_func_start sub_0809C458 +sub_0809C458: @ 0x0809C458 + push {lr} + ldr r0, _0809C468 + movs r1, #0 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0809C468: .4byte 0x0000402B + thumb_func_end sub_0809C458 + + thumb_func_start sub_0809C46C +sub_0809C46C: @ 0x0809C46C + push {lr} + ldr r0, _0809C4A4 + ldrb r0, [r0, #0x17] + cmp r0, #9 + beq _0809C4AC + ldr r0, _0809C4A8 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + ldrh r1, [r0] + movs r2, #3 + ands r1, r2 + strh r1, [r0] + cmp r1, #0 + bne _0809C4AC + bl sub_080F9FD4 + cmp r0, #1 + beq _0809C4AC + cmp r0, #1 + ble _0809C4AC + cmp r0, #2 + bne _0809C4AC + movs r0, #1 + b _0809C4AE + .align 2, 0 +_0809C4A4: .4byte gUnknown_2036FB8 +_0809C4A8: .4byte 0x0000402B +_0809C4AC: + movs r0, #0 +_0809C4AE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C46C + + thumb_func_start sub_0809C4B4 +sub_0809C4B4: @ 0x0809C4B4 + ldr r1, _0809C4BC + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_0809C4BC: .4byte gUnknown_2037274 + thumb_func_end sub_0809C4B4 + + thumb_func_start sub_0809C4C0 +sub_0809C4C0: @ 0x0809C4C0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r7, r4, #0 + ldr r6, _0809C4DC + ldrb r0, [r6] + cmp r0, #3 + bhi _0809C4E4 + adds r0, #1 + strb r0, [r6] + ldr r0, _0809C4E0 + strh r4, [r0] + movs r0, #0 + b _0809C508 + .align 2, 0 +_0809C4DC: .4byte gUnknown_2037274 +_0809C4E0: .4byte gUnknown_2037276 +_0809C4E4: + ldr r5, _0809C4FC + ldrh r1, [r5] + adds r0, r4, #0 + bl sub_080B49E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C500 + strh r4, [r5] + movs r0, #0 + b _0809C508 + .align 2, 0 +_0809C4FC: .4byte gUnknown_2037276 +_0809C500: + movs r0, #0 + strb r0, [r6] + strh r7, [r5] + movs r0, #1 +_0809C508: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C4C0 + + thumb_func_start sub_0809C510 +sub_0809C510: @ 0x0809C510 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0809C564 + mov r8, r0 + adds r1, r7, #0 + bl sub_0809C764 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809C70C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C568 + lsls r0, r6, #0x18 + asrs r4, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0809C568 + bl sub_08084BE0 + mov r0, r8 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_0809C788 + bl sub_080AF030 + movs r0, #1 + b _0809C56A + .align 2, 0 +_0809C564: .4byte gUnknown_2036FB8 +_0809C568: + movs r0, #0 +_0809C56A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0809C510 + + thumb_func_start sub_0809C574 +sub_0809C574: @ 0x0809C574 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r7, _0809C5CC + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0809C764 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0809C662 + adds r0, r5, #0 + bl sub_0809C66C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C662 + bl sub_08084BE0 + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0809C788 + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C5D0 + adds r0, r4, #0 + bl sub_080AF108 + movs r0, #1 + b _0809C664 + .align 2, 0 +_0809C5CC: .4byte gUnknown_2036FB8 +_0809C5D0: + adds r0, r4, #0 + bl sub_080891D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C5E6 + bl sub_080AF124 + movs r0, #1 + b _0809C664 +_0809C5E6: + adds r0, r4, #0 + bl sub_080891E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C5FC + bl sub_080AF134 + movs r0, #1 + b _0809C664 +_0809C5FC: + adds r0, r4, #0 + bl sub_080891FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C612 + bl sub_080AF144 + movs r0, #1 + b _0809C664 +_0809C612: + adds r0, r4, #0 + bl sub_08089210 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C628 + bl sub_080AFB64 + movs r0, #1 + b _0809C664 +_0809C628: + adds r0, r4, #0 + bl sub_08089268 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C644 + ldr r0, _0809C640 + bl sub_08098880 + movs r0, #1 + b _0809C664 + .align 2, 0 +_0809C640: .4byte gUnknown_8264358 +_0809C644: + adds r0, r4, #0 + bl sub_08089224 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C65A + bl sub_080AF178 + movs r0, #1 + b _0809C664 +_0809C65A: + bl sub_080AF030 + movs r0, #1 + b _0809C664 +_0809C662: + movs r0, #0 +_0809C664: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C574 + + thumb_func_start sub_0809C66C +sub_0809C66C: @ 0x0809C66C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0808884C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_080888A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_08088878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_080888BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_080891D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_080891E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_080891FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_08089268 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_08089224 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + adds r0, r4, #0 + bl sub_08089210 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809C702 + movs r0, #0 + b _0809C704 +_0809C702: + movs r0, #1 +_0809C704: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C66C + + thumb_func_start sub_0809C70C +sub_0809C70C: @ 0x0809C70C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #2 + beq _0809C730 + cmp r1, #2 + bgt _0809C726 + cmp r1, #1 + beq _0809C73A + b _0809C75C +_0809C726: + cmp r2, #3 + beq _0809C744 + cmp r2, #4 + beq _0809C74E + b _0809C75C +_0809C730: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088938 + b _0809C756 +_0809C73A: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088950 + b _0809C756 +_0809C744: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088924 + b _0809C756 +_0809C74E: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088910 +_0809C756: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0809C75E +_0809C75C: + movs r0, #0 +_0809C75E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C70C + + thumb_func_start sub_0809C764 +sub_0809C764: @ 0x0809C764 + push {lr} + adds r3, r1, #0 + ldrh r1, [r3] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r3, #2] + subs r2, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrb r3, [r3, #4] + bl sub_0809C8DC + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C764 + + thumb_func_start sub_0809C788 +sub_0809C788: @ 0x0809C788 + push {r4, r5, r6, r7, lr} + adds r7, r2, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_081D5A38 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + cmp r5, #0 + beq _0809C7D8 + bl sub_081D5E30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bne _0809C7C8 + lsls r0, r4, #0x18 + adds r4, r0, #0 + cmp r4, #0 + bne _0809C7C0 + ldr r0, _0809C7BC + ldr r0, [r0, #4] + ldr r5, [r0, #8] + b _0809C7E6 + .align 2, 0 +_0809C7BC: .4byte gUnknown_2036FB8 +_0809C7C0: + bl sub_081D5ABC + adds r5, r0, #0 + b _0809C7E6 +_0809C7C8: + cmp r6, #5 + bne _0809C7D8 + lsls r4, r4, #0x18 + lsrs r0, r4, #0x18 + bl sub_081D5AD0 + adds r5, r0, #0 + b _0809C7E6 +_0809C7D8: + ldr r0, _0809C7F4 + ldr r0, [r0, #4] + lsls r2, r4, #0x18 + asrs r1, r2, #0x15 + ldr r0, [r0, #8] + adds r5, r0, r1 + adds r4, r2, #0 +_0809C7E6: + ldrb r0, [r5, #6] + cmp r0, #0x7f + bne _0809C7F8 + ldrb r0, [r5, #5] + bl sub_0808461C + b _0809C846 + .align 2, 0 +_0809C7F4: .4byte gUnknown_2036FB8 +_0809C7F8: + movs r0, #7 + ldrsb r0, [r5, r0] + movs r1, #6 + ldrsb r1, [r5, r1] + movs r2, #5 + ldrsb r2, [r5, r2] + bl sub_08084590 + movs r1, #0 + ldrsh r0, [r7, r1] + movs r2, #2 + ldrsh r1, [r7, r2] + bl sub_080846C4 + ldrb r0, [r5, #7] + ldrb r1, [r5, #6] + bl sub_080843F8 + ldr r1, [r0, #4] + ldrb r0, [r5, #5] + ldr r1, [r1, #8] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #6] + cmp r0, #0x7f + bne _0809C846 + asrs r3, r4, #0x18 + lsls r0, r3, #3 + adds r0, r0, r1 + ldrb r0, [r0, #5] + ldr r1, _0809C84C + ldr r2, [r1] + movs r1, #4 + ldrsb r1, [r2, r1] + ldrb r2, [r2, #5] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + bl sub_080845B0 +_0809C846: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809C84C: .4byte gUnknown_3005AEC + thumb_func_end sub_0809C788 + + thumb_func_start sub_0809C850 +sub_0809C850: @ 0x0809C850 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + adds r7, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #2 + bne _0809C8D4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088B74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C888 + ldr r0, _0809C884 + ldr r1, [r0, #4] + adds r0, r5, #0 + bl sub_080EA308 + movs r0, #1 + b _0809C8D6 + .align 2, 0 +_0809C884: .4byte gUnknown_2036FB8 +_0809C888: + adds r0, r4, #0 + bl sub_0808884C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C8D4 + ldr r6, _0809C8D0 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0809C764 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0809C8D4 + adds r0, r7, #0 + bl sub_0809C66C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809C8D4 + bl sub_08084BE0 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0809C788 + bl sub_080AF0CC + movs r0, #1 + b _0809C8D6 + .align 2, 0 +_0809C8D0: .4byte gUnknown_2036FB8 +_0809C8D4: + movs r0, #0 +_0809C8D6: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0809C850 + + thumb_func_start sub_0809C8DC +sub_0809C8DC: @ 0x0809C8DC + push {r4, r5, r6, lr} + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + ldr r0, [r0, #4] + ldr r1, [r0, #8] + ldrb r3, [r0, #1] + movs r2, #0 + cmp r2, r3 + bge _0809C91A +_0809C8F6: + ldrh r0, [r1] + cmp r0, r6 + bne _0809C912 + ldrh r0, [r1, #2] + cmp r0, r5 + bne _0809C912 + ldrb r0, [r1, #4] + cmp r0, r4 + beq _0809C90C + cmp r0, #0 + bne _0809C912 +_0809C90C: + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + b _0809C91E +_0809C912: + adds r2, #1 + adds r1, #8 + cmp r2, r3 + blt _0809C8F6 +_0809C91A: + movs r0, #1 + rsbs r0, r0, #0 +_0809C91E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0809C8DC + + thumb_func_start sub_0809C924 +sub_0809C924: @ 0x0809C924 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0809C95A + ldr r1, [r4, #0xc] + cmp r1, #0 + bne _0809C93A + ldrb r0, [r4, #6] + bl sub_0809D130 + b _0809C95A +_0809C93A: + ldrh r0, [r4, #6] + cmp r0, #0 + beq _0809C954 + ldrh r0, [r4, #6] + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4, #8] + cmp r0, r1 + bne _0809C95A + ldr r0, [r4, #0xc] + b _0809C95C +_0809C954: + adds r0, r1, #0 + bl sub_080988D8 +_0809C95A: + movs r0, #0 +_0809C95C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C924 + + thumb_func_start sub_0809C964 +sub_0809C964: @ 0x0809C964 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + ldr r0, [r0, #4] + ldr r1, [r0, #0xc] + ldrb r7, [r0, #2] + movs r6, #0 + cmp r6, r7 + bge _0809C9BA + adds r5, r1, #0 + adds r4, r5, #0 +_0809C990: + ldrh r0, [r4] + cmp r0, sl + bne _0809C9B0 + ldrh r0, [r4, #2] + cmp r0, sb + bne _0809C9B0 + ldrb r0, [r4, #4] + cmp r0, r8 + beq _0809C9A6 + cmp r0, #0 + bne _0809C9B0 +_0809C9A6: + adds r0, r5, #0 + bl sub_0809C924 + cmp r0, #0 + bne _0809C9BC +_0809C9B0: + adds r4, #0x10 + adds r5, #0x10 + adds r6, #1 + cmp r6, r7 + blt _0809C990 +_0809C9BA: + movs r0, #0 +_0809C9BC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C964 + + thumb_func_start sub_0809C9CC +sub_0809C9CC: @ 0x0809C9CC + push {r4, lr} + ldr r4, _0809C9F0 + ldrh r1, [r0] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r0, #2] + subs r2, #7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrb r3, [r0, #4] + adds r0, r4, #0 + bl sub_0809C964 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809C9F0: .4byte gUnknown_2036FB8 + thumb_func_end sub_0809C9CC + + thumb_func_start sub_0809C9F4 +sub_0809C9F4: @ 0x0809C9F4 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + ldr r0, [r0, #4] + ldr r4, [r0, #0x10] + ldrb r3, [r0, #3] + movs r2, #0 + cmp r2, r3 + bhs _0809CA3A +_0809CA0E: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, r7 + bne _0809CA30 + ldrh r0, [r1, #2] + cmp r0, r6 + bne _0809CA30 + ldrb r0, [r1, #4] + cmp r0, r5 + beq _0809CA2C + cmp r0, #0 + bne _0809CA30 +_0809CA2C: + adds r0, r1, #0 + b _0809CA3C +_0809CA30: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _0809CA0E +_0809CA3A: + movs r0, #0 +_0809CA3C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809C9F4 + + thumb_func_start sub_0809CA44 +sub_0809CA44: @ 0x0809CA44 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r0, _0809CA78 + ldrb r0, [r0, #0x17] + cmp r0, #5 + bne _0809CA7C + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088F34 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809CA7C + ldrh r0, [r4] + subs r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4, #2] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080849C0 + b _0809CAA0 + .align 2, 0 +_0809CA78: .4byte gUnknown_2036FB8 +_0809CA7C: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088F14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809CAB8 + ldrh r0, [r4] + subs r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4, #2] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080849E0 +_0809CAA0: + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809CAB8 + bl sub_08084BE0 + bl sub_080AF068 + movs r0, #0xe9 + bl sub_080A306C + movs r0, #1 + b _0809CABA +_0809CAB8: + movs r0, #0 +_0809CABA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809CA44 + + thumb_func_start sub_0809CAC0 +sub_0809CAC0: @ 0x0809CAC0 + push {r4, r5, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0809CB18 + ldrb r0, [r0, #0x17] + cmp r0, #5 + bne _0809CB1C + adds r0, r5, #0 + bl sub_08088F34 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809CB1C + mov r0, sp + ldrh r0, [r0] + subs r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080849C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809CB4C + movs r0, #1 + b _0809CB4E + .align 2, 0 +_0809CB18: .4byte gUnknown_2036FB8 +_0809CB1C: + adds r0, r5, #0 + bl sub_08088F14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809CB4C + mov r0, sp + ldrh r0, [r0] + subs r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4] + subs r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080849E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809CB4C + movs r0, #2 + b _0809CB4E +_0809CB4C: + movs r0, #0 +_0809CB4E: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809CAC0 + + thumb_func_start sub_0809CB58 +sub_0809CB58: @ 0x0809CB58 + push {r4, r5, lr} + sub sp, #8 + bl sub_0808B5BC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r5, sp + mov r0, sp + bl sub_0809BA6C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #2 + ldrsh r1, [r5, r2] + bl sub_08087C20 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sp + adds r2, r4, #0 + bl sub_0809BC5C + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809CB58 + + thumb_func_start sub_0809CB94 +sub_0809CB94: @ 0x0809CB94 + push {r4, lr} + sub sp, #8 + bl sub_0808B5BC + mov r4, sp + mov r0, sp + bl sub_0809BA54 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08087C20 + ldr r4, _0809CBD4 + adds r0, r4, #0 + mov r1, sp + bl sub_0809C764 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + mov r2, sp + bl sub_0809C788 + movs r0, #0 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809CBD4: .4byte gUnknown_2036FB8 + thumb_func_end sub_0809CB94 + + thumb_func_start sub_0809CBD8 +sub_0809CBD8: @ 0x0809CBD8 + push {r4, lr} + ldr r4, _0809CC0C + ldr r0, [r4] + ldr r1, _0809CC10 + adds r0, r0, r1 + movs r2, #0x96 + lsls r2, r2, #1 + movs r1, #0 + bl memset + ldr r0, [r4] + ldr r1, _0809CC14 + adds r0, r0, r1 + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #0 + bl memset + ldr r0, _0809CC18 + movs r1, #0 + movs r2, #0x10 + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CC0C: .4byte gUnknown_3005AEC +_0809CC10: .4byte 0x00001270 +_0809CC14: .4byte 0x0000139C +_0809CC18: .4byte gUnknown_203729C + thumb_func_end sub_0809CBD8 + + thumb_func_start sub_0809CC1C +sub_0809CC1C: @ 0x0809CC1C + push {lr} + ldr r0, _0809CC5C + ldr r0, [r0] + ldr r1, _0809CC60 + adds r2, r0, r1 + movs r1, #0 + str r1, [r2] + ldr r1, _0809CC64 + adds r0, r0, r1 + movs r1, #0 + movs r2, #0x20 + bl memset + ldr r0, _0809CC68 + bl sub_0809D040 + ldr r0, _0809CC6C + bl sub_0809D040 + ldr r0, _0809CC70 + bl sub_0809D040 + ldr r0, _0809CC74 + bl sub_0809D040 + movs r0, #0x88 + lsls r0, r0, #4 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CC5C: .4byte gUnknown_3005AEC +_0809CC60: .4byte 0x00001270 +_0809CC64: .4byte 0x0000139C +_0809CC68: .4byte 0x000008AD +_0809CC6C: .4byte 0x000008AE +_0809CC70: .4byte 0x00000889 +_0809CC74: .4byte 0x000008C1 + thumb_func_end sub_0809CC1C + + thumb_func_start sub_0809CC78 +sub_0809CC78: @ 0x0809CC78 + push {lr} + ldr r0, _0809CC90 + ldr r0, [r0] + ldr r1, _0809CC94 + adds r0, r0, r1 + movs r1, #0 + movs r2, #8 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_0809CC90: .4byte gUnknown_3005AEC +_0809CC94: .4byte 0x00001394 + thumb_func_end sub_0809CC78 + + thumb_func_start sub_0809CC98 +sub_0809CC98: @ 0x0809CC98 + push {lr} + ldr r0, _0809CCB4 + bl sub_0809CF20 + ldr r1, _0809CCB8 + ldr r2, [r1] + movs r1, #0 + strb r1, [r2, #0x1a] + strh r1, [r0] + ldr r0, _0809CCBC + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CCB4: .4byte 0x00004046 +_0809CCB8: .4byte gUnknown_3005AF0 +_0809CCBC: .4byte 0x00000896 + thumb_func_end sub_0809CC98 + + thumb_func_start sub_0809CCC0 +sub_0809CCC0: @ 0x0809CCC0 + push {r4, r5, lr} + ldr r0, _0809CCF4 + bl sub_0809CF20 + ldr r4, _0809CCF8 + ldr r2, [r4] + movs r5, #0 + movs r1, #0xda + strb r1, [r2, #0x1a] + ldr r2, _0809CCFC + adds r1, r2, #0 + strh r1, [r0] + ldr r0, _0809CD00 + bl sub_0809D018 + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #0x19] + ldr r0, [r4] + strb r5, [r0, #0x18] + bl sub_080BAA94 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809CCF4: .4byte 0x00004046 +_0809CCF8: .4byte gUnknown_3005AF0 +_0809CCFC: .4byte 0x00000302 +_0809CD00: .4byte 0x00000896 + thumb_func_end sub_0809CCC0 + + thumb_func_start sub_0809CD04 +sub_0809CD04: @ 0x0809CD04 + push {lr} + ldr r0, _0809CD30 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + cmp r0, #0xda + bne _0809CD40 + ldr r0, _0809CD34 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, _0809CD38 + cmp r0, r1 + bne _0809CD40 + ldr r0, _0809CD3C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809CD40 + movs r0, #1 + b _0809CD42 + .align 2, 0 +_0809CD30: .4byte gUnknown_3005AF0 +_0809CD34: .4byte 0x00004046 +_0809CD38: .4byte 0x03020000 +_0809CD3C: .4byte 0x00000896 +_0809CD40: + movs r0, #0 +_0809CD42: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809CD04 + + thumb_func_start sub_0809CD48 +sub_0809CD48: @ 0x0809CD48 + push {lr} + ldr r0, _0809CD54 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CD54: .4byte 0x000008AC + thumb_func_end sub_0809CD48 + + thumb_func_start sub_0809CD58 +sub_0809CD58: @ 0x0809CD58 + push {lr} + ldr r0, _0809CD64 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_0809CD64: .4byte 0x000008AC + thumb_func_end sub_0809CD58 + + thumb_func_start sub_0809CD68 +sub_0809CD68: @ 0x0809CD68 + push {lr} + ldr r0, _0809CD78 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0809CD78: .4byte 0x000008AC + thumb_func_end sub_0809CD68 + + thumb_func_start sub_0809CD7C +sub_0809CD7C: @ 0x0809CD7C + push {lr} + ldr r0, _0809CD88 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CD88: .4byte 0x000008DB + thumb_func_end sub_0809CD7C + + thumb_func_start sub_0809CD8C +sub_0809CD8C: @ 0x0809CD8C + push {lr} + ldr r0, _0809CD98 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_0809CD98: .4byte 0x000008DB + thumb_func_end sub_0809CD8C + + thumb_func_start sub_0809CD9C +sub_0809CD9C: @ 0x0809CD9C + push {lr} + ldr r0, _0809CDAC + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0809CDAC: .4byte 0x000008DB + thumb_func_end sub_0809CD9C + + thumb_func_start sub_0809CDB0 +sub_0809CDB0: @ 0x0809CDB0 + push {lr} + movs r0, #0xf2 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE28 + bl sub_0809D040 + movs r0, #0xf3 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE2C + bl sub_0809D040 + movs r0, #0xf4 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE30 + bl sub_0809D040 + movs r0, #0xf5 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE34 + bl sub_0809D040 + movs r0, #0xf6 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE38 + bl sub_0809D040 + movs r0, #0xf7 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE3C + bl sub_0809D040 + movs r0, #0xf8 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE40 + bl sub_0809D040 + movs r0, #0xf9 + lsls r0, r0, #1 + bl sub_0809D040 + ldr r0, _0809CE44 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CE28: .4byte 0x000001E5 +_0809CE2C: .4byte 0x000001E7 +_0809CE30: .4byte 0x000001E9 +_0809CE34: .4byte 0x000001EB +_0809CE38: .4byte 0x000001ED +_0809CE3C: .4byte 0x000001EF +_0809CE40: .4byte 0x000001F1 +_0809CE44: .4byte 0x000001F3 + thumb_func_end sub_0809CDB0 + + thumb_func_start sub_0809CE48 +sub_0809CE48: @ 0x0809CE48 + push {lr} + ldr r0, _0809CE90 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CE94 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CE98 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CE9C + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CEA0 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CEA4 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CEA8 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CEAC + movs r1, #0 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0809CE90: .4byte 0x000040DD +_0809CE94: .4byte 0x000040DE +_0809CE98: .4byte 0x000040DF +_0809CE9C: .4byte 0x000040E0 +_0809CEA0: .4byte 0x000040E1 +_0809CEA4: .4byte 0x000040E2 +_0809CEA8: .4byte 0x000040E3 +_0809CEAC: .4byte 0x000040E4 + thumb_func_end sub_0809CE48 + + thumb_func_start sub_0809CEB0 +sub_0809CEB0: @ 0x0809CEB0 + push {lr} + ldr r0, _0809CEC4 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0809CEC8 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0809CEC4: .4byte 0x0000402C +_0809CEC8: .4byte 0x000008C2 + thumb_func_end sub_0809CEB0 + + thumb_func_start sub_0809CECC +sub_0809CECC: @ 0x0809CECC + push {lr} + ldr r0, _0809CEE4 + movs r1, #0x92 + lsls r1, r1, #4 + bl sub_0809CF88 + ldr r0, _0809CEE8 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_0809CEE4: .4byte 0x0000402C +_0809CEE8: .4byte 0x000008C2 + thumb_func_end sub_0809CECC + + thumb_func_start sub_0809CEEC +sub_0809CEEC: @ 0x0809CEEC + push {lr} + ldr r0, _0809CF10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809CF18 + ldr r0, _0809CF14 + bl sub_0809CF6C + lsls r0, r0, #0x10 + movs r1, #0x92 + lsls r1, r1, #0x14 + cmp r0, r1 + bne _0809CF18 + movs r0, #1 + b _0809CF1A + .align 2, 0 +_0809CF10: .4byte 0x000008C2 +_0809CF14: .4byte 0x0000402C +_0809CF18: + movs r0, #0 +_0809CF1A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809CEEC + + thumb_func_start sub_0809CF20 +sub_0809CF20: @ 0x0809CF20 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r1, #0 + ldr r0, _0809CF34 + cmp r1, r0 + bhi _0809CF38 + movs r0, #0 + b _0809CF60 + .align 2, 0 +_0809CF34: .4byte 0x00003FFF +_0809CF38: + lsls r0, r1, #0x10 + cmp r0, #0 + bge _0809CF54 + ldr r0, _0809CF4C + ldr r2, _0809CF50 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + b _0809CF60 + .align 2, 0 +_0809CF4C: .4byte gUnknown_81DAF34 +_0809CF50: .4byte 0xFFFF8000 +_0809CF54: + ldr r0, _0809CF64 + lsls r1, r2, #1 + ldr r2, _0809CF68 + adds r1, r1, r2 + ldr r0, [r0] + adds r0, r0, r1 +_0809CF60: + pop {r1} + bx r1 + .align 2, 0 +_0809CF64: .4byte gUnknown_3005AEC +_0809CF68: .4byte 0xFFFF939C + thumb_func_end sub_0809CF20 + + thumb_func_start sub_0809CF6C +sub_0809CF6C: @ 0x0809CF6C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0809CF20 + cmp r0, #0 + beq _0809CF80 + ldrh r0, [r0] + b _0809CF82 +_0809CF80: + adds r0, r4, #0 +_0809CF82: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809CF6C + + thumb_func_start sub_0809CF88 +sub_0809CF88: @ 0x0809CF88 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + bl sub_0809CF20 + cmp r0, #0 + beq _0809CFA0 + strh r4, [r0] + movs r0, #1 + b _0809CFA2 +_0809CFA0: + movs r0, #0 +_0809CFA2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809CF88 + + thumb_func_start sub_0809CFA8 +sub_0809CFA8: @ 0x0809CFA8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + ldr r1, _0809CFC0 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0809CFC0: .4byte 0x40100000 + thumb_func_end sub_0809CFA8 + + thumb_func_start sub_0809CFC4 +sub_0809CFC4: @ 0x0809CFC4 + push {lr} + lsls r1, r0, #0x10 + lsrs r2, r1, #0x10 + adds r3, r2, #0 + cmp r2, #0 + bne _0809CFD4 + movs r0, #0 + b _0809D006 +_0809CFD4: + ldr r0, _0809CFE8 + cmp r2, r0 + bhi _0809CFF4 + ldr r0, _0809CFEC + lsrs r1, r1, #0x13 + ldr r2, _0809CFF0 + adds r1, r1, r2 + ldr r0, [r0] + b _0809D004 + .align 2, 0 +_0809CFE8: .4byte 0x00003FFF +_0809CFEC: .4byte gUnknown_3005AEC +_0809CFF0: .4byte 0x00001270 +_0809CFF4: + ldr r1, _0809D00C + adds r0, r3, r1 + cmp r0, #0 + bge _0809D000 + ldr r2, _0809D010 + adds r0, r3, r2 +_0809D000: + asrs r0, r0, #3 + ldr r1, _0809D014 +_0809D004: + adds r0, r0, r1 +_0809D006: + pop {r1} + bx r1 + .align 2, 0 +_0809D00C: .4byte 0xFFFFC000 +_0809D010: .4byte 0xFFFFC007 +_0809D014: .4byte gUnknown_203729C + thumb_func_end sub_0809CFC4 + + thumb_func_start sub_0809D018 +sub_0809D018: @ 0x0809D018 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0809CFC4 + adds r2, r0, #0 + cmp r2, #0 + beq _0809D038 + movs r0, #7 + ands r0, r4 + movs r1, #1 + lsls r1, r0 + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] +_0809D038: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809D018 + + thumb_func_start sub_0809D040 +sub_0809D040: @ 0x0809D040 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0809CFC4 + adds r2, r0, #0 + cmp r2, #0 + beq _0809D060 + movs r0, #7 + ands r0, r4 + movs r1, #1 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] +_0809D060: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809D040 + + thumb_func_start sub_0809D068 +sub_0809D068: @ 0x0809D068 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0809CFC4 + cmp r0, #0 + beq _0809D08C + ldrb r0, [r0] + movs r1, #7 + ands r1, r4 + asrs r0, r1 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0809D08C + movs r0, #1 + b _0809D08E +_0809D08C: + movs r0, #0 +_0809D08E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809D068 + + thumb_func_start sub_0809D094 +sub_0809D094: @ 0x0809D094 + push {lr} + movs r0, #1 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D094 + + thumb_func_start sub_0809D0A0 +sub_0809D0A0: @ 0x0809D0A0 + push {lr} + movs r0, #2 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0A0 + + thumb_func_start sub_0809D0AC +sub_0809D0AC: @ 0x0809D0AC + push {lr} + movs r0, #3 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0AC + + thumb_func_start sub_0809D0B8 +sub_0809D0B8: @ 0x0809D0B8 + push {lr} + movs r0, #4 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0B8 + + thumb_func_start sub_0809D0C4 +sub_0809D0C4: @ 0x0809D0C4 + push {lr} + movs r0, #5 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0C4 + + thumb_func_start sub_0809D0D0 +sub_0809D0D0: @ 0x0809D0D0 + push {lr} + movs r0, #6 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0D0 + + thumb_func_start sub_0809D0DC +sub_0809D0DC: @ 0x0809D0DC + push {lr} + movs r0, #9 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0DC + + thumb_func_start sub_0809D0E8 +sub_0809D0E8: @ 0x0809D0E8 + push {lr} + movs r0, #7 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0E8 + + thumb_func_start sub_0809D0F4 +sub_0809D0F4: @ 0x0809D0F4 + push {lr} + movs r0, #8 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D0F4 + + thumb_func_start sub_0809D100 +sub_0809D100: @ 0x0809D100 + push {lr} + movs r0, #0xb + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D100 + + thumb_func_start sub_0809D10C +sub_0809D10C: @ 0x0809D10C + push {lr} + movs r0, #0xc + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D10C + + thumb_func_start sub_0809D118 +sub_0809D118: @ 0x0809D118 + push {lr} + movs r0, #0x14 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D118 + + thumb_func_start sub_0809D124 +sub_0809D124: @ 0x0809D124 + push {lr} + movs r0, #0x15 + bl sub_080AE6EC + pop {r0} + bx r0 + thumb_func_end sub_0809D124 + + thumb_func_start sub_0809D130 +sub_0809D130: @ 0x0809D130 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r2, #0 + ldr r3, _0809D150 +_0809D13A: + lsls r1, r2, #3 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _0809D154 + adds r0, r3, #4 + adds r0, r1, r0 + ldr r0, [r0] + bl _call_via_r0 + b _0809D15E + .align 2, 0 +_0809D150: .4byte gUnknown_84E8924 +_0809D154: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xc + bls _0809D13A +_0809D15E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0809D130 + + thumb_func_start sub_0809D164 +sub_0809D164: @ 0x0809D164 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0809D188 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #8 + ldrsh r1, [r1, r2] + ldr r2, _0809D18C + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0809D188: .4byte gUnknown_3005B60 +_0809D18C: .4byte gUnknown_84E898C + thumb_func_end sub_0809D164 + + thumb_func_start sub_0809D190 +sub_0809D190: @ 0x0809D190 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0809D1A2 + cmp r0, #1 + beq _0809D1C0 + b _0809D1D4 +_0809D1A2: + ldr r0, _0809D1BC + ldr r0, [r0, #0x20] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _0809D1D4 + bl sub_0809E088 + ldrh r0, [r4] + adds r0, #1 + b _0809D1D2 + .align 2, 0 +_0809D1BC: .4byte gUnknown_3002360 +_0809D1C0: + ldr r0, _0809D1DC + ldr r0, [r0, #0x20] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + bne _0809D1D4 + ldrh r0, [r4] + subs r0, #1 +_0809D1D2: + strh r0, [r4] +_0809D1D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809D1DC: .4byte gUnknown_3002360 + thumb_func_end sub_0809D190 + + thumb_func_start sub_0809D1E0 +sub_0809D1E0: @ 0x0809D1E0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809D210 + adds r4, r1, r0 + bl sub_080987F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809D208 + adds r0, r4, #0 + bl sub_0809D190 + adds r0, r4, #2 + adds r1, r4, #4 + bl sub_080853A4 +_0809D208: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809D210: .4byte gUnknown_3005B68 + thumb_func_end sub_0809D1E0 + + thumb_func_start sub_0809D214 +sub_0809D214: @ 0x0809D214 + push {r4, r5, lr} + ldr r5, _0809D270 + adds r0, r5, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0809D23E + adds r0, r5, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0809D274 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] +_0809D23E: + ldr r4, _0809D278 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809D254 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 +_0809D254: + ldr r4, _0809D27C + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809D26A + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 +_0809D26A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D270: .4byte sub_0809D164 +_0809D274: .4byte gUnknown_3005B60 +_0809D278: .4byte sub_0809DF10 +_0809D27C: .4byte sub_0809D1E0 + thumb_func_end sub_0809D214 + + thumb_func_start sub_0809D280 +sub_0809D280: @ 0x0809D280 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0809D2B8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _0809D2C2 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0809D2BC + adds r1, r0, r1 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0x1e +_0809D2A4: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _0809D2A4 + cmp r4, #7 + bls _0809D2C0 + movs r0, #0 + strh r0, [r1] + b _0809D2C2 + .align 2, 0 +_0809D2B8: .4byte sub_0809D164 +_0809D2BC: .4byte gUnknown_3005B68 +_0809D2C0: + strh r4, [r1] +_0809D2C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0809D280 + + thumb_func_start sub_0809D2C8 +sub_0809D2C8: @ 0x0809D2C8 + push {lr} + ldr r0, _0809D2F8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0809D2FC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _0809D2F2 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0809D300 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #2] + strh r1, [r0, #4] +_0809D2F2: + pop {r0} + bx r0 + .align 2, 0 +_0809D2F8: .4byte sub_0809D164 +_0809D2FC: .4byte sub_0809D1E0 +_0809D300: .4byte gUnknown_3005B68 + thumb_func_end sub_0809D2C8 + + thumb_func_start sub_0809D304 +sub_0809D304: @ 0x0809D304 + bx lr + .align 2, 0 + thumb_func_end sub_0809D304 + + thumb_func_start sub_0809D308 +sub_0809D308: @ 0x0809D308 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r0, r4, #0 + bl sub_080890C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D320 + adds r0, r5, #0 + b _0809D358 +_0809D320: + adds r0, r4, #0 + bl sub_080890DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D332 + adds r0, r5, #0 + adds r0, #8 + b _0809D358 +_0809D332: + adds r0, r4, #0 + bl sub_080890F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D344 + adds r0, r5, #0 + adds r0, #0x10 + b _0809D358 +_0809D344: + adds r0, r4, #0 + bl sub_08089104 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809D354 + movs r0, #0 + b _0809D358 +_0809D354: + adds r0, r5, #0 + adds r0, #0x18 +_0809D358: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809D308 + + thumb_func_start sub_0809D360 +sub_0809D360: @ 0x0809D360 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + mov r8, r3 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r2, r2, #0x10 + asrs r7, r2, #0x10 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08087C20 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0809D308 + adds r4, r0, #0 + adds r5, r4, #0 + cmp r4, #0 + beq _0809D3DE + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, #1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + ldrh r2, [r4, #2] + bl sub_08087C54 + mov r0, r8 + cmp r0, #0 + beq _0809D3B6 + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, r6, r0 + movs r1, #1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + bl sub_08089804 +_0809D3B6: + movs r0, #4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, #5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + ldrh r2, [r5, #6] + bl sub_08087C54 + mov r0, r8 + cmp r0, #0 + beq _0809D3DE + movs r0, #4 + ldrsb r0, [r5, r0] + adds r0, r6, r0 + movs r1, #5 + ldrsb r1, [r5, r1] + adds r1, r7, r1 + bl sub_08089804 +_0809D3DE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0809D360 + + thumb_func_start sub_0809D3E8 +sub_0809D3E8: @ 0x0809D3E8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldr r0, _0809D408 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0809D360 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D408: .4byte gUnknown_84E89AC + thumb_func_end sub_0809D3E8 + + thumb_func_start sub_0809D40C +sub_0809D40C: @ 0x0809D40C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldr r0, _0809D42C + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0809D360 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D42C: .4byte gUnknown_84E89CC + thumb_func_end sub_0809D40C + + thumb_func_start sub_0809D430 +sub_0809D430: @ 0x0809D430 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + ldr r0, _0809D450 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0809D360 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D450: .4byte gUnknown_84E89EC + thumb_func_end sub_0809D430 + + thumb_func_start sub_0809D454 +sub_0809D454: @ 0x0809D454 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + mov sl, r8 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + mov sb, r7 + lsls r2, r2, #0x10 + asrs r6, r2, #0x10 + lsls r3, r3, #0x10 + asrs r5, r3, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080890C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D498 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r0, r5 + ble _0809D4DE +_0809D494: + movs r0, #0 + b _0809D4E0 +_0809D498: + adds r0, r4, #0 + bl sub_080890DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D4B0 + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r5 + bge _0809D4DE + b _0809D494 +_0809D4B0: + adds r0, r4, #0 + bl sub_080890F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D4C8 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + ble _0809D4DE + b _0809D494 +_0809D4C8: + adds r0, r4, #0 + bl sub_08089104 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D4DE + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + blt _0809D494 +_0809D4DE: + movs r0, #1 +_0809D4E0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809D454 + + thumb_func_start sub_0809D4F0 +sub_0809D4F0: @ 0x0809D4F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + mov sl, r8 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + mov sb, r7 + lsls r0, r0, #0x10 + asrs r6, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080890C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D534 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r5, r0 + bge _0809D57A +_0809D530: + movs r0, #0 + b _0809D57C +_0809D534: + adds r0, r4, #0 + bl sub_080890DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D54C + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r5, r0 + ble _0809D57A + b _0809D530 +_0809D54C: + adds r0, r4, #0 + bl sub_080890F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D564 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r6, r0 + bge _0809D57A + b _0809D530 +_0809D564: + adds r0, r4, #0 + bl sub_08089104 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D57A + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r6, r0 + bgt _0809D530 +_0809D57A: + movs r0, #1 +_0809D57C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809D4F0 + + thumb_func_start sub_0809D58C +sub_0809D58C: @ 0x0809D58C + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809D5C0 + adds r4, r1, r0 + mov r5, sp + adds r5, #2 + mov r0, sp + adds r1, r5, #0 + bl sub_0808B410 + movs r1, #2 + ldrsh r0, [r4, r1] + adds r6, r5, #0 + cmp r0, #1 + beq _0809D5E6 + cmp r0, #1 + bgt _0809D5C4 + cmp r0, #0 + beq _0809D5CA + b _0809D6F6 + .align 2, 0 +_0809D5C0: .4byte gUnknown_3005B68 +_0809D5C4: + cmp r0, #2 + beq _0809D6B4 + b _0809D6F6 +_0809D5CA: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, #4] + ldrh r0, [r5] + strh r0, [r4, #6] + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r3, #0 + ldrsh r1, [r5, r3] + movs r2, #1 + bl sub_0809D40C + b _0809D6F2 +_0809D5E6: + mov r0, sp + movs r7, #0 + ldrsh r1, [r0, r7] + movs r2, #4 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0809D600 + movs r3, #0 + ldrsh r1, [r5, r3] + movs r7, #6 + ldrsh r0, [r4, r7] + cmp r1, r0 + beq _0809D6F6 +_0809D600: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r5, #6 + ldrsh r3, [r4, r5] + bl sub_0809D454 + cmp r0, #0 + beq _0809D648 + movs r7, #4 + ldrsh r0, [r4, r7] + movs r2, #6 + ldrsh r1, [r4, r2] + movs r2, #1 + bl sub_0809D3E8 + movs r3, #4 + ldrsh r0, [r4, r3] + movs r5, #6 + ldrsh r1, [r4, r5] + movs r2, #0 + bl sub_0809D430 + ldrh r0, [r4, #4] + strh r0, [r4, #8] + ldrh r0, [r4, #6] + strh r0, [r4, #0xa] + movs r0, #2 + strh r0, [r4, #2] + movs r0, #8 + strh r0, [r4, #0xc] + b _0809D652 +_0809D648: + movs r7, #1 + rsbs r7, r7, #0 + adds r0, r7, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] +_0809D652: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + adds r5, r6, #0 + movs r2, #0 + ldrsh r1, [r5, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r7, #6 + ldrsh r3, [r4, r7] + bl sub_0809D4F0 + cmp r0, #0 + beq _0809D686 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + movs r2, #1 + bl sub_0809D3E8 + movs r0, #2 + strh r0, [r4, #2] + movs r0, #8 + strh r0, [r4, #0xc] +_0809D686: + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, #4] + ldrh r0, [r6] + strh r0, [r4, #6] + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r5, #0 + ldrsh r1, [r6, r5] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089118 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809D6F6 + movs r0, #0x46 + bl sub_080A306C + b _0809D6F6 +_0809D6B4: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809D6F6 + mov r0, sp + movs r7, #0 + ldrsh r0, [r0, r7] + movs r2, #0 + ldrsh r1, [r5, r2] + movs r2, #1 + bl sub_0809D40C + movs r3, #8 + ldrsh r0, [r4, r3] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0809D6F2 + movs r5, #0xa + ldrsh r0, [r4, r5] + cmp r0, r1 + beq _0809D6F2 + movs r7, #8 + ldrsh r0, [r4, r7] + movs r2, #0xa + ldrsh r1, [r4, r2] + movs r2, #1 + bl sub_0809D430 +_0809D6F2: + movs r0, #1 + strh r0, [r4, #2] +_0809D6F6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809D58C + + thumb_func_start sub_0809D700 +sub_0809D700: @ 0x0809D700 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + bl sub_0808B5D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0809D75A + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + lsls r0, r5, #0x10 + asrs r5, r0, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _0809D73C + cmp r1, r0 + beq _0809D740 + adds r0, #8 + cmp r1, r0 + beq _0809D750 + b _0809D75A + .align 2, 0 +_0809D73C: .4byte 0x0000024E +_0809D740: + ldr r2, _0809D74C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _0809D75A + .align 2, 0 +_0809D74C: .4byte 0x0000024F +_0809D750: + ldr r2, _0809D760 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 +_0809D75A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D760: .4byte 0x00000257 + thumb_func_end sub_0809D700 + + thumb_func_start sub_0809D764 +sub_0809D764: @ 0x0809D764 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + bl sub_0808B5D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0809D7BE + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + lsls r0, r5, #0x10 + asrs r5, r0, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _0809D7A0 + cmp r1, r0 + beq _0809D7A4 + adds r0, #8 + cmp r1, r0 + beq _0809D7B4 + b _0809D7BE + .align 2, 0 +_0809D7A0: .4byte 0x0000024F +_0809D7A4: + ldr r2, _0809D7B0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _0809D7BE + .align 2, 0 +_0809D7B0: .4byte 0x0000024E +_0809D7B4: + ldr r2, _0809D7C4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 +_0809D7BE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809D7C4: .4byte 0x00000256 + thumb_func_end sub_0809D764 + + thumb_func_start sub_0809D7C8 +sub_0809D7C8: @ 0x0809D7C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809D804 + adds r6, r1, r0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + movs r0, #2 + ldrsh r5, [r6, r0] + mov sb, r4 + cmp r5, #1 + beq _0809D85C + cmp r5, #1 + bgt _0809D808 + cmp r5, #0 + beq _0809D810 + b _0809D9CE + .align 2, 0 +_0809D804: .4byte gUnknown_3005B68 +_0809D808: + cmp r5, #2 + bne _0809D80E + b _0809D93C +_0809D80E: + b _0809D9CE +_0809D810: + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, #4] + mov r1, sb + ldrh r0, [r1] + strh r0, [r6, #6] + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r3, #0 + ldrsh r1, [r1, r3] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080890B4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809D83A + b _0809D9CA +_0809D83A: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + mov r2, sb + movs r3, #0 + ldrsh r1, [r2, r3] + bl sub_0809D700 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + mov r2, sb + movs r3, #0 + ldrsh r1, [r2, r3] + bl sub_08089804 + b _0809D9CA +_0809D85C: + ldrh r0, [r6, #6] + mov r8, r0 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + ldrh r2, [r6, #4] + mov sl, r2 + movs r3, #4 + ldrsh r7, [r6, r3] + cmp r0, r7 + bne _0809D884 + mov r0, sb + movs r2, #0 + ldrsh r1, [r0, r2] + mov r3, r8 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _0809D884 + b _0809D9CE +_0809D884: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + mov r2, sb + movs r3, #0 + ldrsh r1, [r2, r3] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080890B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, r8 + lsls r4, r0, #0x10 + asrs r1, r4, #0x10 + adds r0, r7, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080890B4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_0808B5D8 + movs r1, #0 + ands r5, r0 + lsls r0, r5, #0x18 + adds r5, r4, #0 + cmp r0, #0 + bne _0809D8CC + movs r1, #1 +_0809D8CC: + cmp r1, #0 + beq _0809D8E0 + ldr r1, [sp, #4] + cmp r1, #1 + beq _0809D8DA + cmp r7, #1 + bne _0809D8E0 +_0809D8DA: + movs r0, #0x47 + bl sub_080A306C +_0809D8E0: + cmp r7, #0 + beq _0809D91C + mov r2, sl + lsls r4, r2, #0x10 + asrs r4, r4, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809D764 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08089804 + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + mov r2, sb + movs r3, #0 + ldrsh r1, [r2, r3] + bl sub_0809D700 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + mov r2, sb + movs r3, #0 + ldrsh r1, [r2, r3] + bl sub_08089804 +_0809D91C: + mov r0, sl + strh r0, [r6, #8] + mov r1, r8 + strh r1, [r6, #0xa] + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, #4] + mov r2, sb + ldrh r0, [r2] + strh r0, [r6, #6] + cmp r7, #0 + beq _0809D9CE + movs r0, #0x10 + strh r0, [r6, #0xc] + movs r0, #2 + strh r0, [r6, #2] +_0809D93C: + ldrh r0, [r6, #0xc] + subs r0, #1 + strh r0, [r6, #0xc] + ldrh r3, [r6, #8] + mov sl, r3 + ldrh r0, [r6, #0xa] + mov r8, r0 + movs r1, #0xc + ldrsh r0, [r6, r1] + movs r1, #7 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bhi _0809D9C2 + lsls r0, r0, #2 + ldr r1, _0809D968 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809D968: .4byte _0809D96C +_0809D96C: @ jump table + .4byte _0809D98C @ case 0 + .4byte _0809D9C2 @ case 1 + .4byte _0809D9C2 @ case 2 + .4byte _0809D9C2 @ case 3 + .4byte _0809D99E @ case 4 + .4byte _0809D9C2 @ case 5 + .4byte _0809D9C2 @ case 6 + .4byte _0809D9C2 @ case 7 +_0809D98C: + mov r2, sl + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + mov r3, r8 + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + bl sub_08089804 + b _0809D9C2 +_0809D99E: + mov r0, sl + lsls r5, r0, #0x10 + asrs r5, r5, #0x10 + mov r1, r8 + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809D700 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089804 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809D764 +_0809D9C2: + movs r2, #0xc + ldrsh r0, [r6, r2] + cmp r0, #0 + bne _0809D9CE +_0809D9CA: + movs r0, #1 + strh r0, [r6, #2] +_0809D9CE: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809D7C8 + + thumb_func_start sub_0809D9E0 +sub_0809D9E0: @ 0x0809D9E0 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r0, r0, #0x10 + ldr r2, _0809DA10 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #0xa + bhi _0809DA1C + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + ldr r2, _0809DA14 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #0xd + bhi _0809DA1C + ldr r0, _0809DA18 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _0809DA1C + movs r0, #1 + b _0809DA1E + .align 2, 0 +_0809DA10: .4byte 0xFFFD0000 +_0809DA14: .4byte 0xFFFA0000 +_0809DA18: .4byte gUnknown_84E8A0C +_0809DA1C: + movs r0, #0 +_0809DA1E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809D9E0 + + thumb_func_start sub_0809DA24 +sub_0809DA24: @ 0x0809DA24 + push {r4, r5, lr} + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809D9E0 + cmp r0, #0 + beq _0809DA52 + ldr r1, _0809DA58 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0809CF20 + subs r2, r5, #3 + movs r1, #1 + lsls r1, r2 + ldrh r2, [r0] + orrs r1, r2 + strh r1, [r0] +_0809DA52: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809DA58: .4byte gUnknown_84E8A0C + thumb_func_end sub_0809DA24 + + thumb_func_start sub_0809DA5C +sub_0809DA5C: @ 0x0809DA5C + push {r4, r5, lr} + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809D9E0 + cmp r0, #0 + beq _0809DA8E + ldr r1, _0809DA94 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0809CF6C + lsls r0, r0, #0x10 + subs r2, r5, #3 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r2 + ands r1, r0 + cmp r1, #0 + bne _0809DA98 +_0809DA8E: + movs r0, #0 + b _0809DA9A + .align 2, 0 +_0809DA94: .4byte gUnknown_84E8A0C +_0809DA98: + movs r0, #1 +_0809DA9A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0809DA5C + + thumb_func_start sub_0809DAA0 +sub_0809DAA0: @ 0x0809DAA0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _0809DAF4 + ldr r0, [r0] + ldr r1, [r0] + mov sb, r1 + ldr r7, [r0, #4] + movs r5, #0 + cmp r5, sb + bge _0809DAE8 +_0809DAB8: + movs r4, #0 + adds r0, r5, #1 + mov r8, r0 + cmp r4, r7 + bge _0809DAE2 + lsls r6, r5, #0x10 +_0809DAC4: + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + asrs r0, r6, #0x10 + bl sub_0809DA5C + cmp r0, #1 + bne _0809DADC + adds r1, r4, #7 + adds r0, r5, #7 + ldr r2, _0809DAF8 + bl sub_08087C54 +_0809DADC: + adds r4, #1 + cmp r4, r7 + blt _0809DAC4 +_0809DAE2: + mov r5, r8 + cmp r5, sb + blt _0809DAB8 +_0809DAE8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809DAF4: .4byte gUnknown_2036FB8 +_0809DAF8: .4byte 0x0000020E + thumb_func_end sub_0809DAA0 + + thumb_func_start sub_0809DAFC +sub_0809DAFC: @ 0x0809DAFC + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809DB20 + adds r5, r1, r0 + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0809DB48 + cmp r0, #1 + bgt _0809DB24 + cmp r0, #0 + beq _0809DB30 + b _0809DC7E + .align 2, 0 +_0809DB20: .4byte gUnknown_3005B68 +_0809DB24: + cmp r0, #2 + beq _0809DBDE + cmp r0, #3 + bne _0809DB2E + b _0809DC38 +_0809DB2E: + b _0809DC7E +_0809DB30: + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r4] + strh r0, [r5, #6] + b _0809DC7A +_0809DB48: + mov r7, sp + adds r7, #2 + mov r0, sp + adds r1, r7, #0 + bl sub_0808B410 + mov r0, sp + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + movs r3, #4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809DB72 + movs r0, #0 + ldrsh r1, [r7, r0] + movs r3, #6 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809DB72 + b _0809DC7E +_0809DB72: + strh r2, [r5, #4] + ldrh r0, [r7] + strh r0, [r5, #6] + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r7, r2] + bl sub_08087C20 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0809DBB4 + bl sub_0809CF20 + adds r6, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08088F68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809DBB8 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + movs r0, #4 + strh r0, [r5, #0xc] + movs r0, #2 + b _0809DBD0 + .align 2, 0 +_0809DBB4: .4byte 0x00004022 +_0809DBB8: + adds r0, r4, #0 + bl sub_08088F7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809DC7E + movs r0, #0 + strh r0, [r6] + movs r0, #4 + strh r0, [r5, #0xc] + movs r0, #3 +_0809DBD0: + strh r0, [r5, #2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, #8] + ldrh r0, [r7] + strh r0, [r5, #0xa] + b _0809DC7E +_0809DBDE: + ldrh r1, [r5, #0xc] + movs r3, #0xc + ldrsh r0, [r5, r3] + cmp r0, #0 + bne _0809DC42 + mov r1, sp + ldrh r0, [r5, #8] + strh r0, [r1] + mov r4, sp + adds r4, #2 + ldrh r0, [r5, #0xa] + strh r0, [r4] + movs r0, #0x2a + bl sub_080A306C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + ldr r2, _0809DC34 + bl sub_08087C54 + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08089804 + mov r0, sp + ldrh r0, [r0] + subs r0, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4] + subs r1, #7 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0809DA24 + b _0809DC7A + .align 2, 0 +_0809DC34: .4byte 0x0000020E +_0809DC38: + ldrh r1, [r5, #0xc] + movs r3, #0xc + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _0809DC48 +_0809DC42: + subs r0, r1, #1 + strh r0, [r5, #0xc] + b _0809DC7E +_0809DC48: + mov r1, sp + ldrh r0, [r5, #8] + strh r0, [r1] + mov r4, sp + adds r4, #2 + ldrh r0, [r5, #0xa] + strh r0, [r4] + movs r0, #0x29 + bl sub_080A306C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + ldr r2, _0809DC88 + bl sub_08087C54 + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08089804 +_0809DC7A: + movs r0, #1 + strh r0, [r5, #2] +_0809DC7E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809DC88: .4byte 0x00000206 + thumb_func_end sub_0809DAFC + + thumb_func_start sub_0809DC8C +sub_0809DC8C: @ 0x0809DC8C + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809DD10 + adds r5, r1, r0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + movs r3, #2 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809DCC6 + movs r0, #0 + ldrsh r1, [r4, r0] + movs r3, #4 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809DD52 +_0809DCC6: + strh r2, [r5, #2] + ldrh r0, [r4] + strh r0, [r5, #4] + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088DE8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809DD52 + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + ldr r1, _0809DD14 + cmp r0, r1 + bne _0809DD1C + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r4, r2] + ldr r2, _0809DD18 + movs r3, #4 + bl sub_081552DC + b _0809DD2E + .align 2, 0 +_0809DD10: .4byte gUnknown_3005B68 +_0809DD14: .4byte 0x0000020A +_0809DD18: .4byte 0x00000212 +_0809DD1C: + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r4, r2] + ldr r2, _0809DD5C + movs r3, #4 + bl sub_081552DC +_0809DD2E: + movs r0, #0x87 + lsls r0, r0, #1 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809DD52 + ldr r0, _0809DD60 + bl sub_0809CF20 + adds r2, r0, #0 + ldrh r1, [r2] + ldr r0, _0809DD64 + cmp r1, r0 + bhi _0809DD52 + adds r0, r1, #1 + strh r0, [r2] +_0809DD52: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809DD5C: .4byte 0x00000206 +_0809DD60: .4byte 0x00004048 +_0809DD64: .4byte 0x0000270E + thumb_func_end sub_0809DC8C + + thumb_func_start sub_0809DD68 +sub_0809DD68: @ 0x0809DD68 + push {r4, r5, lr} + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _0809DD9C + ldr r2, _0809DDA0 + cmp r0, r1 + bne _0809DD84 + subs r2, #0x31 +_0809DD84: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089804 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809DD9C: .4byte 0x0000022F +_0809DDA0: .4byte 0x00000237 + thumb_func_end sub_0809DD68 + + thumb_func_start sub_0809DDA4 +sub_0809DDA4: @ 0x0809DDA4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809DE8C + adds r5, r1, r0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrh r1, [r5, #8] + movs r3, #8 + ldrsh r0, [r5, r3] + adds r7, r4, #0 + cmp r0, #0 + beq _0809DDF6 + subs r0, r1, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809DDF6 + movs r1, #0xa + ldrsh r0, [r5, r1] + movs r2, #0xc + ldrsh r1, [r5, r2] + bl sub_0809DD68 +_0809DDF6: + ldrh r1, [r5, #0xe] + movs r3, #0xe + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _0809DE16 + subs r0, r1, #1 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809DE16 + movs r1, #0x10 + ldrsh r0, [r5, r1] + movs r2, #0x12 + ldrsh r1, [r5, r2] + bl sub_0809DD68 +_0809DE16: + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_0808927C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809DE2E + ldr r0, _0809DE90 + movs r1, #0 + bl sub_0809CF88 +_0809DE2E: + mov r0, sp + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + movs r3, #4 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _0809DE4A + movs r0, #0 + ldrsh r1, [r7, r0] + movs r3, #6 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809DEAA +_0809DE4A: + strh r2, [r5, #4] + adds r4, r7, #0 + ldrh r0, [r4] + strh r0, [r5, #6] + adds r0, r6, #0 + bl sub_08089290 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809DEAA + bl sub_0811A988 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + beq _0809DE72 + ldr r0, _0809DE90 + movs r1, #0 + bl sub_0809CF88 +_0809DE72: + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0809DE94 + movs r0, #3 + strh r0, [r5, #8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, #0xa] + ldrh r0, [r4] + strh r0, [r5, #0xc] + b _0809DEAA + .align 2, 0 +_0809DE8C: .4byte gUnknown_3005B68 +_0809DE90: .4byte 0x00004022 +_0809DE94: + movs r2, #0xe + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0809DEAA + movs r0, #3 + strh r0, [r5, #0xe] + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, #0x10] + ldrh r0, [r7] + strh r0, [r5, #0x12] +_0809DEAA: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809DDA4 + + thumb_func_start sub_0809DEB4 +sub_0809DEB4: @ 0x0809DEB4 + push {r4, r5, lr} + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + ldrh r0, [r3] + subs r0, #1 + strh r0, [r3] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809DED0 + movs r2, #0xe8 + b _0809DEE4 +_0809DED0: + ldr r1, _0809DF0C + movs r2, #0 + ldrsh r0, [r3, r2] + cmp r0, #0 + bge _0809DEDC + adds r0, #7 +_0809DEDC: + asrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] +_0809DEE4: + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089804 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0xe8 + bl sub_08087C54 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809DF0C: .4byte gUnknown_84E8A40 + thumb_func_end sub_0809DEB4 + + thumb_func_start sub_0809DF10 +sub_0809DF10: @ 0x0809DF10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0809DF58 + adds r4, r1, r0 + mov r5, sp + adds r5, #2 + mov r0, sp + adds r1, r5, #0 + bl sub_0808B410 + ldr r0, _0809DF5C + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + lsls r1, r1, #8 + ldrb r0, [r0, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + orrs r0, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r0, #2 + ldrsh r1, [r4, r0] + mov r8, r5 + cmp r1, #0 + beq _0809DF60 + cmp r1, #1 + beq _0809DF8C + b _0809DFE0 + .align 2, 0 +_0809DF58: .4byte gUnknown_3005B68 +_0809DF5C: .4byte gUnknown_3005AEC +_0809DF60: + strh r7, [r4] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, #4] + ldrh r0, [r5] + strh r0, [r4, #6] + movs r0, #1 + strh r0, [r4, #2] + strh r1, [r4, #8] + strh r1, [r4, #0xe] + strh r1, [r4, #0x14] + strh r1, [r4, #0x1a] + b _0809DFE0 +_0809DF7A: + movs r0, #0x20 + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + strh r0, [r1, #2] + mov r2, r8 + ldrh r0, [r2] + strh r0, [r1, #4] + b _0809DFE0 +_0809DF8C: + mov r0, sp + movs r3, #4 + ldrsh r1, [r4, r3] + ldrh r2, [r0] + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bne _0809DFA8 + movs r0, #6 + ldrsh r1, [r4, r0] + movs r3, #0 + ldrsh r0, [r5, r3] + cmp r1, r0 + beq _0809DFE0 +_0809DFA8: + strh r2, [r4, #4] + ldrh r0, [r5] + strh r0, [r4, #6] + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080892A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809DFE0 + movs r6, #4 + adds r1, r4, #0 + adds r1, #8 +_0809DFD0: + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _0809DF7A + adds r1, #6 + adds r6, #3 + cmp r6, #0xd + ble _0809DFD0 +_0809DFE0: + ldr r2, _0809DFFC + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809E000 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r7, r0 + beq _0809E000 + strh r7, [r4] + ldrh r0, [r2, #4] + ldrh r1, [r2, #8] + b _0809E004 + .align 2, 0 +_0809DFFC: .4byte gUnknown_2036FD4 +_0809E000: + movs r0, #0 + movs r1, #0 +_0809E004: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + lsls r0, r1, #0x10 + asrs r7, r0, #0x10 + adds r5, r4, #0 + adds r5, #8 + adds r4, r5, #0 + movs r6, #9 +_0809E016: + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0809E03A + ldrh r0, [r4, #2] + mov r3, r8 + subs r0, r0, r3 + strh r0, [r4, #2] + ldrh r0, [r4, #4] + subs r0, r0, r7 + strh r0, [r4, #4] + movs r0, #2 + ldrsh r1, [r4, r0] + movs r3, #4 + ldrsh r2, [r4, r3] + adds r0, r5, #0 + bl sub_0809DEB4 +_0809E03A: + adds r4, #6 + adds r5, #6 + subs r6, #3 + cmp r6, #0 + bge _0809E016 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0809DF10 + + thumb_func_start sub_0809E050 +sub_0809E050: @ 0x0809E050 + push {lr} + ldr r0, _0809E078 + bl sub_0809D018 + bl sub_0802F1EC + ldr r0, _0809E07C + ldr r2, [r0] + adds r2, #0xa0 + ldr r3, _0809E080 + ldr r0, [r3] + ldr r1, [r3, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _0809E084 + ldrh r1, [r3] + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_0809E078: .4byte 0x00000895 +_0809E07C: .4byte gUnknown_3005AF0 +_0809E080: .4byte gUnknown_3005A50 +_0809E084: .4byte 0x00004040 + thumb_func_end sub_0809E050 + + thumb_func_start sub_0809E088 +sub_0809E088: @ 0x0809E088 + push {r4, lr} + ldr r0, _0809E0B8 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809E0B2 + bl sub_0813B9F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809E0B2 + bl sub_0802F1EC + ldr r4, _0809E0BC + adds r0, r4, #0 + bl sub_0809E0C0 + adds r0, r4, #0 + bl sub_0809E130 +_0809E0B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809E0B8: .4byte 0x00000895 +_0809E0BC: .4byte gUnknown_3005A50 + thumb_func_end sub_0809E088 + + thumb_func_start sub_0809E0C0 +sub_0809E0C0: @ 0x0809E0C0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _0809E12C + bl sub_0809CF20 + adds r6, r0, #0 + ldrh r0, [r6] + movs r2, #0 + ldrsh r1, [r5, r2] + cmp r0, r1 + beq _0809E126 + cmp r0, r1 + bgt _0809E126 + ldrh r4, [r5] + subs r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0809CC78 + adds r0, r4, #0 + bl sub_0812258C + adds r0, r4, #0 + bl sub_080EE3A8 + adds r0, r4, #0 + bl sub_080AE8B8 + adds r0, r4, #0 + bl sub_0806D8D8 + adds r0, r4, #0 + bl sub_08137974 + adds r0, r4, #0 + bl sub_08137A90 + adds r0, r4, #0 + bl sub_08139F30 + adds r0, r4, #0 + bl sub_0813A7FC + adds r0, r4, #0 + bl sub_081394CC + adds r0, r4, #0 + bl sub_08177410 + ldrh r0, [r5] + strh r0, [r6] +_0809E126: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E12C: .4byte 0x00004040 + thumb_func_end sub_0809E0C0 + + thumb_func_start sub_0809E130 +sub_0809E130: @ 0x0809E130 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + mov r4, sp + ldr r6, _0809E188 + ldr r1, [r6] + adds r1, #0xa0 + mov r0, sp + adds r2, r5, #0 + bl sub_0802F260 + mov r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + movs r2, #2 + ldrsb r2, [r4, r2] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #3 + ldrsb r0, [r4, r0] + adds r0, r1, r0 + cmp r0, #0 + beq _0809E180 + cmp r0, #0 + blt _0809E180 + bl sub_080E0DBC + ldr r2, [r6] + adds r2, #0xa0 + ldr r0, [r5] + ldr r1, [r5, #4] + str r0, [r2] + str r1, [r2, #4] +_0809E180: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E188: .4byte gUnknown_3005AF0 + thumb_func_end sub_0809E130 + + thumb_func_start sub_0809E18C +sub_0809E18C: @ 0x0809E18C + push {lr} + bl sub_0809E050 + ldr r0, _0809E19C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0809E19C: .4byte sub_08085B34 + thumb_func_end sub_0809E18C + + thumb_func_start sub_0809E1A0 +sub_0809E1A0: @ 0x0809E1A0 + push {lr} + ldr r0, _0809E1B4 + bl sub_08000540 + ldr r1, _0809E1B8 + ldr r0, _0809E1BC + str r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_0809E1B4: .4byte sub_08134A3C +_0809E1B8: .4byte gUnknown_3002360 +_0809E1BC: .4byte sub_0809E18C + thumb_func_end sub_0809E1A0 + + thumb_func_start sub_0809E1C0 +sub_0809E1C0: @ 0x0809E1C0 + push {lr} + adds r3, r0, #0 + ldr r2, _0809E1F0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #0xc + ldrsh r1, [r0, r2] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r1, r0 + beq _0809E2D6 + strh r1, [r3, #0x30] + subs r0, r1, #1 + cmp r0, #5 + bhi _0809E2D6 + lsls r0, r0, #2 + ldr r1, _0809E1F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809E1F0: .4byte gUnknown_3005B60 +_0809E1F4: .4byte _0809E1F8 +_0809E1F8: @ jump table + .4byte _0809E210 @ case 0 + .4byte _0809E234 @ case 1 + .4byte _0809E258 @ case 2 + .4byte _0809E27C @ case 3 + .4byte _0809E2A6 @ case 4 + .4byte _0809E2D0 @ case 5 +_0809E210: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #1 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x41 + ands r0, r1 + strb r0, [r2] + movs r0, #0x40 + b _0809E29E +_0809E234: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #1 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x41 + ands r0, r1 + strb r0, [r2] + movs r0, #0x60 + b _0809E29E +_0809E258: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #1 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x41 + ands r0, r1 + strb r0, [r2] + movs r0, #0x78 + b _0809E29E +_0809E27C: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #1 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x41 + ands r0, r1 + strb r0, [r2] + movs r0, #0x90 +_0809E29E: + strh r0, [r3, #0x20] + movs r0, #0x44 + strh r0, [r3, #0x22] + b _0809E2D6 +_0809E2A6: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #2 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x42 + ands r0, r1 + strb r0, [r2] + movs r0, #0x9b + strh r0, [r3, #0x20] + movs r0, #0x50 + strh r0, [r3, #0x22] + b _0809E2D6 +_0809E2D0: + adds r0, r3, #0 + bl sub_08006E00 +_0809E2D6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809E1C0 + + thumb_func_start sub_0809E2DC +sub_0809E2DC: @ 0x0809E2DC + push {lr} + adds r3, r0, #0 + ldr r2, _0809E30C + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #0xc + ldrsh r1, [r0, r2] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r1, r0 + beq _0809E3D6 + strh r1, [r3, #0x30] + subs r0, r1, #1 + cmp r0, #5 + bhi _0809E3D6 + lsls r0, r0, #2 + ldr r1, _0809E310 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809E30C: .4byte gUnknown_3005B60 +_0809E310: .4byte _0809E314 +_0809E314: @ jump table + .4byte _0809E32C @ case 0 + .4byte _0809E350 @ case 1 + .4byte _0809E374 @ case 2 + .4byte _0809E398 @ case 3 + .4byte _0809E3C2 @ case 4 + .4byte _0809E3D0 @ case 5 +_0809E32C: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #0 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x40 + ands r0, r1 + strb r0, [r2] + movs r0, #0x40 + b _0809E3BA +_0809E350: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #0 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x40 + ands r0, r1 + strb r0, [r2] + movs r0, #0x60 + b _0809E3BA +_0809E374: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #0 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x40 + ands r0, r1 + strb r0, [r2] + movs r0, #0x78 + b _0809E3BA +_0809E398: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r0, #0 + strb r0, [r1] + subs r2, #0x12 + ldrb r1, [r2] + subs r0, #0x40 + ands r0, r1 + strb r0, [r2] + movs r0, #0x90 +_0809E3BA: + strh r0, [r3, #0x20] + movs r0, #0x5c + strh r0, [r3, #0x22] + b _0809E3D6 +_0809E3C2: + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _0809E3D6 +_0809E3D0: + adds r0, r3, #0 + bl sub_08006E00 +_0809E3D6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809E2DC + + thumb_func_start sub_0809E3DC +sub_0809E3DC: @ 0x0809E3DC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0809E44C + bl sub_0800845C + ldr r0, _0809E450 + mov r8, r0 + movs r1, #0x40 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r6, _0809E454 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r6, #0 + adds r4, #0x1c + adds r2, r0, r4 + ldr r1, _0809E458 + str r1, [r2] + adds r0, r0, r6 + strh r5, [r0, #0x2e] + ldr r1, _0809E45C + strh r1, [r0, #0x30] + mov r0, r8 + movs r1, #0x40 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r4 + ldr r1, _0809E460 + str r1, [r4] + adds r0, r0, r6 + strh r5, [r0, #0x2e] + movs r1, #1 + rsbs r1, r1, #0 + strh r1, [r0, #0x30] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E44C: .4byte gUnknown_84E8B14 +_0809E450: .4byte gUnknown_84E8B40 +_0809E454: .4byte gUnknown_20205AC +_0809E458: .4byte sub_0809E1C0 +_0809E45C: .4byte 0x0000FFFF +_0809E460: .4byte sub_0809E2DC + thumb_func_end sub_0809E3DC + + thumb_func_start sub_0809E464 +sub_0809E464: @ 0x0809E464 + push {lr} + ldr r0, _0809E474 + ldrh r0, [r0, #4] + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 +_0809E474: .4byte gUnknown_84E8B14 + thumb_func_end sub_0809E464 + + thumb_func_start sub_0809E478 +sub_0809E478: @ 0x0809E478 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08198134 + adds r0, r4, #0 + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809E478 + + thumb_func_start sub_0809E49C +sub_0809E49C: @ 0x0809E49C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sl, r0 + adds r0, r1, #0 + mov sb, r2 + adds r1, r3, #0 + ldr r5, [sp, #0x30] + ldr r6, [sp, #0x34] + ldr r2, [sp, #0x38] + mov r8, r2 + mov r2, sl + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + lsls r3, r0, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0xc] + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r2, r8 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r7, _0809E57C + ldr r4, _0809E580 + adds r0, r4, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088B8 + adds r7, r0, #0 + ldr r1, _0809E584 + bl sub_080088B8 + adds r7, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088B8 + adds r7, r0, #0 + ldr r5, _0809E588 + adds r1, r5, #0 + bl sub_080088B8 + adds r7, r0, #0 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088B8 + adds r7, r0, #0 + adds r1, r5, #0 + bl sub_080088B8 + adds r7, r0, #0 + adds r0, r4, #0 + mov r1, r8 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080088B8 + ldr r2, _0809E57C + mov r0, sb + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + mov r0, sl + movs r1, #1 + ldr r3, [sp, #0xc] + bl sub_0800449C + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809E57C: .4byte gUnknown_2021C7C +_0809E580: .4byte gUnknown_2021C40 +_0809E584: .4byte gUnknown_84E8A6C +_0809E588: .4byte gUnknown_84E8A6F + thumb_func_end sub_0809E49C + + thumb_func_start sub_0809E58C +sub_0809E58C: @ 0x0809E58C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0xc + adds r4, r0, #0 + mov sb, r1 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r0, [sp, #0x24] + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r2, #0x85 + lsls r2, r2, #2 + adds r0, r4, #0 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + str r5, [sp] + str r6, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + mov r3, sb + bl sub_0809E49C + ldr r2, _0809E60C + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #0x80 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E60C: .4byte gUnknown_84E8A71 + thumb_func_end sub_0809E58C + + thumb_func_start sub_0809E610 +sub_0809E610: @ 0x0809E610 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r1, r3, #0 + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _0809E62A + ldrh r0, [r4] + subs r0, #1 + b _0809E644 +_0809E62A: + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + beq _0809E638 + ldrh r0, [r4] + adds r0, #1 + b _0809E662 +_0809E638: + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _0809E652 + ldrh r0, [r4] + subs r0, #0xa +_0809E644: + strh r0, [r4] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, r5 + bge _0809E66E + strh r2, [r4] + b _0809E66E +_0809E652: + movs r0, #0x10 + ands r1, r0 + cmp r1, #0 + bne _0809E65E + movs r0, #0 + b _0809E670 +_0809E65E: + ldrh r0, [r4] + adds r0, #0xa +_0809E662: + strh r0, [r4] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, r2 + ble _0809E66E + strh r5, [r4] +_0809E66E: + movs r0, #1 +_0809E670: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809E610 + + thumb_func_start sub_0809E678 +sub_0809E678: @ 0x0809E678 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0809E68C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #8] + bx lr + .align 2, 0 +_0809E68C: .4byte gUnknown_3005B60 + thumb_func_end sub_0809E678 + + thumb_func_start sub_0809E690 +sub_0809E690: @ 0x0809E690 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _0809E6B8 + adds r0, r4, r5 + ldrb r0, [r0, #0x10] + bl sub_0809E478 + bl sub_0809E464 + subs r5, #8 + adds r4, r4, r5 + ldr r0, _0809E6BC + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809E6B8: .4byte gUnknown_3005B68 +_0809E6BC: .4byte sub_0809E678 + thumb_func_end sub_0809E690 + + thumb_func_start sub_0809E6C0 +sub_0809E6C0: @ 0x0809E6C0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r7, r0, #3 + ldr r0, _0809E704 + mov r8, r0 + adds r5, r7, r0 + ldrb r4, [r5, #4] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0809E708 + adds r2, r0, r1 + ldr r1, _0809E70C + ldrh r3, [r1, #0x2e] + movs r0, #2 + ands r0, r3 + mov ip, r1 + cmp r0, #0 + beq _0809E714 + mov r0, r8 + subs r0, #8 + adds r0, r7, r0 + ldr r1, _0809E710 + str r1, [r0] + movs r0, #0 + strh r0, [r5, #2] + movs r0, #6 + b _0809E734 + .align 2, 0 +_0809E704: .4byte gUnknown_3005B68 +_0809E708: .4byte gUnknown_84E8A6C +_0809E70C: .4byte gUnknown_3002360 +_0809E710: .4byte sub_0809E690 +_0809E714: + movs r0, #0x10 + ands r0, r3 + cmp r0, #0 + beq _0809E722 + ldrb r0, [r2, #7] + cmp r0, #0 + bne _0809E734 +_0809E722: + mov r3, ip + ldrh r1, [r3, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0809E73E + ldrb r0, [r2, #6] + cmp r0, #0 + beq _0809E73E +_0809E734: + strh r0, [r5, #4] + movs r0, #5 + bl sub_080A306C + b _0809E7CC +_0809E73E: + cmp r4, #5 + bne _0809E78C + mov r0, ip + ldrh r1, [r0, #0x2e] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0809E7CC + ldr r1, _0809E780 + ldrh r0, [r5, #6] + strh r0, [r1] + ldrh r0, [r5, #8] + strb r0, [r1, #2] + ldrh r0, [r5, #0xa] + strb r0, [r1, #3] + ldrh r0, [r5, #0xc] + strb r0, [r1, #4] + movs r0, #5 + bl sub_080A306C + ldr r1, _0809E784 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0809E788 + str r1, [r0] + strh r4, [r5, #2] + movs r0, #6 + strh r0, [r5, #4] + b _0809E7CC + .align 2, 0 +_0809E780: .4byte gUnknown_3005A50 +_0809E784: .4byte gUnknown_3005B60 +_0809E788: .4byte sub_0809E690 +_0809E78C: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r5, r0 + ldrh r1, [r2, #2] + ldrh r2, [r2, #4] + mov r3, ip + ldrh r4, [r3, #0x30] + movs r3, #0xc0 + ands r3, r4 + bl sub_0809E610 + cmp r0, #0 + beq _0809E7CC + movs r0, #5 + bl sub_080A306C + ldrb r0, [r5, #0x10] + ldrh r3, [r5, #6] + ldrb r1, [r5, #8] + str r1, [sp] + ldrb r1, [r5, #0xa] + str r1, [sp, #4] + ldrb r1, [r5, #0xc] + str r1, [sp, #8] + movs r1, #0 + movs r2, #2 + bl sub_0809E49C + ldrb r0, [r5, #0x10] + movs r1, #2 + bl sub_08003528 +_0809E7CC: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0809E6C0 + + thumb_func_start sub_0809E7D8 +sub_0809E7D8: @ 0x0809E7D8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r0, #2 + add r6, r8 + lsls r6, r6, #3 + ldr r0, _0809E850 + mov sb, r0 + adds r5, r6, r0 + movs r0, #0 + strh r0, [r5] + ldr r1, _0809E854 + ldrh r0, [r1] + strh r0, [r5, #6] + movs r0, #2 + ldrsb r0, [r1, r0] + strh r0, [r5, #8] + movs r0, #3 + ldrsb r0, [r1, r0] + strh r0, [r5, #0xa] + movs r0, #4 + ldrsb r0, [r1, r0] + strh r0, [r5, #0xc] + ldr r0, _0809E858 + bl sub_08003250 + strh r0, [r5, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #6] + ldrb r2, [r5, #8] + ldrb r3, [r5, #0xa] + ldrb r4, [r5, #0xc] + str r4, [sp] + bl sub_0809E58C + mov r0, r8 + bl sub_0809E3DC + movs r0, #2 + strh r0, [r5, #4] + movs r0, #8 + rsbs r0, r0, #0 + add sb, r0 + add r6, sb + ldr r0, _0809E85C + str r0, [r6] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809E850: .4byte gUnknown_3005B68 +_0809E854: .4byte gUnknown_3005A50 +_0809E858: .4byte gUnknown_84E8A64 +_0809E85C: .4byte sub_0809E6C0 + thumb_func_end sub_0809E7D8 + + thumb_func_start sub_0809E860 +sub_0809E860: @ 0x0809E860 + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080006F0 + movs r2, #0xa0 + lsls r2, r2, #0x13 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _0809E908 + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + ldr r0, _0809E90C + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0xc0 + lsls r3, r3, #9 + mov r4, sp + movs r6, #0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0809E910 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0809E8A2: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r5 + subs r3, r3, r5 + cmp r3, r5 + bhi _0809E8A2 + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0 + movs r1, #0x80 + bl sub_08006E68 + bl sub_08006EA0 + bl sub_080B9710 + bl sub_080B9750 + bl sub_0800668C + bl sub_080A8818 + bl sub_080A133C + bl sub_0809E920 + ldr r0, _0809E914 + bl sub_080006F0 + ldr r0, _0809E918 + bl sub_08000540 + ldr r0, _0809E91C + movs r1, #0x50 + bl sub_080A8878 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0809E908: .4byte 0x040000D4 +_0809E90C: .4byte 0x81000200 +_0809E910: .4byte 0x81000800 +_0809E914: .4byte sub_0809E984 +_0809E918: .4byte sub_0809E968 +_0809E91C: .4byte sub_0809EAD8 + thumb_func_end sub_0809E860 + + thumb_func_start sub_0809E920 +sub_0809E920: @ 0x0809E920 + push {lr} + bl sub_08199640 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0809E960 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + movs r0, #0 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + ldr r0, _0809E964 + bl sub_08003090 + bl sub_08004480 + bl sub_08196F98 + pop {r0} + bx r0 + .align 2, 0 +_0809E960: .4byte gUnknown_84E8A48 +_0809E964: .4byte gUnknown_84E8A4C + thumb_func_end sub_0809E920 + + thumb_func_start sub_0809E968 +sub_0809E968: @ 0x0809E968 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809E968 + + thumb_func_start sub_0809E984 +sub_0809E984: @ 0x0809E984 + push {lr} + bl sub_08007144 + bl sub_08006EA0 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809E984 + + thumb_func_start sub_0809E998 +sub_0809E998: @ 0x0809E998 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r2, #0x80 + lsls r2, r2, #2 + movs r0, #1 + movs r1, #0 + movs r3, #0xf + bl sub_08197924 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0809E998 + + thumb_func_start sub_0809E9D0 +sub_0809E9D0: @ 0x0809E9D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0809E9F0 + adds r6, r0, r1 + movs r0, #0 + ldrsh r5, [r6, r0] + cmp r5, #0 + beq _0809E9F4 + cmp r5, #1 + beq _0809EA8A + b _0809EAD0 + .align 2, 0 +_0809E9F0: .4byte gUnknown_3005B68 +_0809E9F4: + movs r2, #0x85 + lsls r2, r2, #2 + movs r0, #0 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + ldr r2, _0809EAA4 + movs r0, #2 + str r0, [sp] + movs r4, #0xff + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r1, _0809EAA8 + ldrh r3, [r1] + ldrb r0, [r1, #2] + str r0, [sp] + ldrb r0, [r1, #3] + str r0, [sp, #4] + ldrb r0, [r1, #4] + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x12 + bl sub_0809E49C + ldr r2, _0809EAAC + movs r0, #0x22 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, _0809EAB0 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xa0 + ldrh r3, [r0] + adds r0, #2 + ldrb r0, [r0] + str r0, [sp] + adds r0, r1, #0 + adds r0, #0xa3 + ldrb r0, [r0] + str r0, [sp, #4] + adds r0, r1, #0 + adds r0, #0xa4 + ldrb r0, [r0] + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x32 + bl sub_0809E49C + ldr r0, _0809EAB4 + bl sub_0809E998 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08199654 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] +_0809EA8A: + ldr r0, _0809EAB8 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0809EABC + adds r0, r7, #0 + bl sub_080A8964 + bl sub_080008F4 + b _0809EAD0 + .align 2, 0 +_0809EAA4: .4byte gUnknown_85CBEE9 +_0809EAA8: .4byte gUnknown_3005A50 +_0809EAAC: .4byte gUnknown_85CBEF9 +_0809EAB0: .4byte gUnknown_3005AF0 +_0809EAB4: .4byte gUnknown_85CBECB +_0809EAB8: .4byte gUnknown_3002360 +_0809EABC: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809EAD0 + movs r0, #5 + bl sub_080A306C + adds r0, r7, #0 + bl sub_080A8964 +_0809EAD0: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0809E9D0 + + thumb_func_start sub_0809EAD8 +sub_0809EAD8: @ 0x0809EAD8 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0809EB00 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #6 + bls _0809EAF4 + b _0809ECDC +_0809EAF4: + lsls r0, r0, #2 + ldr r1, _0809EB04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809EB00: .4byte gUnknown_3005B68 +_0809EB04: .4byte _0809EB08 +_0809EB08: @ jump table + .4byte _0809EB24 @ case 0 + .4byte _0809EB40 @ case 1 + .4byte _0809EB8C @ case 2 + .4byte _0809EBE8 @ case 3 + .4byte _0809EC70 @ case 4 + .4byte _0809ECA0 @ case 5 + .4byte _0809ECC2 @ case 6 +_0809EB24: + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0809EB3C + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + strh r0, [r5] + b _0809ECDC + .align 2, 0 +_0809EB3C: .4byte 0x0000FFFF +_0809EB40: + ldr r0, _0809EB68 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809EB4E + b _0809ECDC +_0809EB4E: + ldr r0, _0809EB6C + ldrh r0, [r0] + cmp r0, #0 + beq _0809EB5A + cmp r0, #2 + bne _0809EB74 +_0809EB5A: + ldr r0, _0809EB70 + bl sub_0809E998 + movs r0, #5 + strh r0, [r5] + b _0809ECDC + .align 2, 0 +_0809EB68: .4byte gUnknown_2037C74 +_0809EB6C: .4byte gUnknown_3005F50 +_0809EB70: .4byte gUnknown_85CBF69 +_0809EB74: + bl sub_0802F1EC + ldr r0, _0809EB88 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #2] + b _0809EC0C + .align 2, 0 +_0809EB88: .4byte sub_0809E9D0 +_0809EB8C: + ldr r2, _0809EBD4 + movs r0, #2 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _0809EBA2 + b _0809ECDC +_0809EBA2: + movs r0, #0 + movs r1, #0 + bl sub_08198134 + ldr r0, _0809EBD8 + bl sub_0809E998 + ldr r2, _0809EBDC + ldr r0, _0809EBE0 + ldr r0, [r0] + adds r0, #0xa0 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _0809EBE4 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #2] + movs r0, #3 + strh r0, [r5] + b _0809ECDC + .align 2, 0 +_0809EBD4: .4byte gUnknown_3005B60 +_0809EBD8: .4byte gUnknown_85CBF09 +_0809EBDC: .4byte gUnknown_3005A50 +_0809EBE0: .4byte gUnknown_3005AF0 +_0809EBE4: .4byte sub_0809E7D8 +_0809EBE8: + ldr r2, _0809EC14 + movs r0, #2 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0809ECDC + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0809EC18 + ldrb r0, [r5, #2] + bl sub_080A8964 +_0809EC0C: + movs r0, #2 + strh r0, [r5] + b _0809ECDC + .align 2, 0 +_0809EC14: .4byte gUnknown_3005B60 +_0809EC18: + ldrb r0, [r5, #2] + bl sub_080A8964 + bl sub_0802F05C + ldr r4, _0809EC60 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #2 + ldrsb r1, [r4, r1] + movs r2, #3 + ldrsb r2, [r4, r2] + movs r3, #4 + ldrsb r3, [r4, r3] + bl sub_0802F22C + ldr r0, _0809EC64 + ldr r2, [r0] + adds r2, #0xa0 + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r0, _0809EC68 + ldrh r1, [r4] + bl sub_0809CF88 + bl sub_0809CEB0 + ldr r0, _0809EC6C + bl sub_0809E998 + movs r0, #4 + strh r0, [r5] + b _0809ECDC + .align 2, 0 +_0809EC60: .4byte gUnknown_3005A50 +_0809EC64: .4byte gUnknown_3005AF0 +_0809EC68: .4byte 0x00004040 +_0809EC6C: .4byte gUnknown_85CBF1C +_0809EC70: + movs r0, #0 + bl sub_08153274 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EC90 + ldr r0, _0809EC8C + bl sub_0809E998 + movs r0, #0x49 + bl sub_080A306C + b _0809EC9C + .align 2, 0 +_0809EC8C: .4byte gUnknown_85CBF43 +_0809EC90: + ldr r0, _0809ECE4 + bl sub_0809E998 + movs r0, #0x16 + bl sub_080A306C +_0809EC9C: + movs r0, #5 + strh r0, [r5] +_0809ECA0: + ldr r0, _0809ECE8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809ECDC + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0809ECEC + str r1, [sp] + movs r1, #1 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #6 + strh r0, [r5] +_0809ECC2: + ldr r0, _0809ECF0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0809ECDC + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080034D4 + bl sub_080008F4 +_0809ECDC: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809ECE4: .4byte gUnknown_85CBF52 +_0809ECE8: .4byte gUnknown_3002360 +_0809ECEC: .4byte 0x0000FFFF +_0809ECF0: .4byte gUnknown_2037C74 + thumb_func_end sub_0809EAD8 + + thumb_func_start sub_0809ECF4 +sub_0809ECF4: @ 0x0809ECF4 + push {lr} + ldr r0, _0809ED10 + bl sub_0809D018 + movs r0, #0x86 + lsls r0, r0, #4 + bl sub_0809D018 + ldr r0, _0809ED14 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_0809ED10: .4byte 0x00000861 +_0809ED14: .4byte 0x00000862 + thumb_func_end sub_0809ECF4 + + thumb_func_start sub_0809ED18 +sub_0809ED18: @ 0x0809ED18 + push {lr} + ldr r0, _0809ED30 + movs r1, #0 + strb r1, [r0] + bl sub_080856F4 + cmp r0, #1 + bne _0809ED34 + bl sub_0809EE40 + b _0809ED84 + .align 2, 0 +_0809ED30: .4byte gUnknown_20372AF +_0809ED34: + bl sub_08017AC0 + cmp r0, #1 + bne _0809ED42 + bl sub_0809EE7C + b _0809ED84 +_0809ED42: + bl sub_080FC910 + cmp r0, #1 + bne _0809ED50 + bl sub_0809EE10 + b _0809ED84 +_0809ED50: + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809ED60 + bl sub_0809EEB8 + b _0809ED84 +_0809ED60: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809ED70 + bl sub_0809EEDC + b _0809ED84 +_0809ED70: + bl sub_081399C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809ED80 + bl sub_0809EF0C + b _0809ED84 +_0809ED80: + bl sub_0809EDA4 +_0809ED84: + pop {r0} + bx r0 + thumb_func_end sub_0809ED18 + + thumb_func_start sub_0809ED88 +sub_0809ED88: @ 0x0809ED88 + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _0809ED9C + ldr r1, _0809EDA0 + bl sub_080A020C + pop {r0} + bx r0 + .align 2, 0 +_0809ED9C: .4byte gUnknown_20372B0 +_0809EDA0: .4byte gUnknown_20372AF + thumb_func_end sub_0809ED88 + + thumb_func_start sub_0809EDA4 +sub_0809EDA4: @ 0x0809EDA4 + push {lr} + ldr r0, _0809EE08 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EDBA + movs r0, #0 + bl sub_0809ED88 +_0809EDBA: + movs r0, #0x86 + lsls r0, r0, #4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EDD0 + movs r0, #1 + bl sub_0809ED88 +_0809EDD0: + movs r0, #2 + bl sub_0809ED88 + ldr r0, _0809EE0C + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EDEA + movs r0, #3 + bl sub_0809ED88 +_0809EDEA: + movs r0, #4 + bl sub_0809ED88 + movs r0, #5 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + .align 2, 0 +_0809EE08: .4byte 0x00000861 +_0809EE0C: .4byte 0x00000862 + thumb_func_end sub_0809EDA4 + + thumb_func_start sub_0809EE10 +sub_0809EE10: @ 0x0809EE10 + push {lr} + movs r0, #8 + bl sub_0809ED88 + movs r0, #0 + bl sub_0809ED88 + movs r0, #1 + bl sub_0809ED88 + movs r0, #2 + bl sub_0809ED88 + movs r0, #4 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + thumb_func_end sub_0809EE10 + + thumb_func_start sub_0809EE40 +sub_0809EE40: @ 0x0809EE40 + push {lr} + movs r0, #1 + bl sub_0809ED88 + movs r0, #2 + bl sub_0809ED88 + ldr r0, _0809EE78 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EE62 + movs r0, #3 + bl sub_0809ED88 +_0809EE62: + movs r0, #9 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + .align 2, 0 +_0809EE78: .4byte 0x00000862 + thumb_func_end sub_0809EE40 + + thumb_func_start sub_0809EE7C +sub_0809EE7C: @ 0x0809EE7C + push {lr} + movs r0, #1 + bl sub_0809ED88 + movs r0, #2 + bl sub_0809ED88 + ldr r0, _0809EEB4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809EE9E + movs r0, #3 + bl sub_0809ED88 +_0809EE9E: + movs r0, #4 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + .align 2, 0 +_0809EEB4: .4byte 0x00000862 + thumb_func_end sub_0809EE7C + + thumb_func_start sub_0809EEB8 +sub_0809EEB8: @ 0x0809EEB8 + push {lr} + movs r0, #0 + bl sub_0809ED88 + movs r0, #1 + bl sub_0809ED88 + movs r0, #4 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + thumb_func_end sub_0809EEB8 + + thumb_func_start sub_0809EEDC +sub_0809EEDC: @ 0x0809EEDC + push {lr} + movs r0, #1 + bl sub_0809ED88 + movs r0, #0xc + bl sub_0809ED88 + movs r0, #4 + bl sub_0809ED88 + movs r0, #0xa + bl sub_0809ED88 + movs r0, #0xb + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + thumb_func_end sub_0809EEDC + + thumb_func_start sub_0809EF0C +sub_0809EF0C: @ 0x0809EF0C + push {lr} + movs r0, #1 + bl sub_0809ED88 + movs r0, #4 + bl sub_0809ED88 + movs r0, #6 + bl sub_0809ED88 + movs r0, #7 + bl sub_0809ED88 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809EF0C + + thumb_func_start sub_0809EF2C +sub_0809EF2C: @ 0x0809EF2C + push {r4, r5, lr} + sub sp, #0xc + ldr r4, _0809EF88 + ldr r0, _0809EF8C + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _0809EF90 + ldr r1, _0809EF94 + ldrb r1, [r1] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r5, _0809EF98 + ldr r1, _0809EF9C + adds r0, r5, #0 + bl sub_08008BCC + ldrb r0, [r4] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809EF88: .4byte gUnknown_20372AC +_0809EF8C: .4byte gUnknown_84E8B94 +_0809EF90: .4byte gUnknown_2021C40 +_0809EF94: .4byte gUnknown_2039D18 +_0809EF98: .4byte gUnknown_2021C7C +_0809EF9C: .4byte gUnknown_84E8B84 + thumb_func_end sub_0809EF2C + + thumb_func_start sub_0809EFA0 +sub_0809EFA0: @ 0x0809EFA0 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _0809EFB8 + ldr r0, [r0] + ldr r1, _0809EFBC + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #7 + bne _0809EFC8 + ldr r4, _0809EFC0 + ldr r0, _0809EFC4 + b _0809EFCC + .align 2, 0 +_0809EFB8: .4byte gUnknown_3005AF0 +_0809EFBC: .4byte 0x00000CB2 +_0809EFC0: .4byte gUnknown_20372AD +_0809EFC4: .4byte gUnknown_84E8C24 +_0809EFC8: + ldr r4, _0809F02C + ldr r0, _0809F030 +_0809EFCC: + bl sub_08003250 + strb r0, [r4] + ldr r4, _0809F02C + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldr r0, _0809F034 + ldr r2, _0809F038 + ldr r1, _0809F03C + ldr r1, [r1] + ldr r3, _0809F040 + adds r1, r1, r3 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r5, _0809F044 + ldr r1, _0809F048 + adds r0, r5, #0 + bl sub_08008BCC + ldrb r0, [r4] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F02C: .4byte gUnknown_20372AD +_0809F030: .4byte gUnknown_84E8C1C +_0809F034: .4byte gUnknown_2021C40 +_0809F038: .4byte gUnknown_84E8BFC +_0809F03C: .4byte gUnknown_3005AF0 +_0809F040: .4byte 0x00000CB2 +_0809F044: .4byte gUnknown_2021C7C +_0809F048: .4byte gUnknown_84E8B9C + thumb_func_end sub_0809EFA0 + + thumb_func_start sub_0809F04C +sub_0809F04C: @ 0x0809F04C + push {r4, lr} + bl sub_080FC910 + cmp r0, #0 + beq _0809F06E + ldr r4, _0809F090 + ldrb r0, [r4] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r4] + bl sub_08003444 +_0809F06E: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809F088 + ldr r4, _0809F094 + ldrb r0, [r4] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 +_0809F088: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F090: .4byte gUnknown_20372AC +_0809F094: .4byte gUnknown_20372AD + thumb_func_end sub_0809F04C + + thumb_func_start sub_0809F098 +sub_0809F098: @ 0x0809F098 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov r8, r0 + adds r6, r1, #0 + ldrb r2, [r0] + ldr r0, _0809F0F0 + mov sb, r0 + ldr r1, _0809F0F4 + mov sl, r1 +_0809F0B2: + ldr r0, _0809F0F8 + lsls r2, r2, #0x18 + asrs r4, r2, #0x18 + adds r5, r4, r0 + ldrb r0, [r5] + lsls r3, r0, #3 + mov r0, sb + adds r0, #4 + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0809F0FC + adds r7, r2, #0 + cmp r1, r0 + bne _0809F100 + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r5] + lsls r1, r1, #3 + add r1, sb + ldr r1, [r1] + lsls r3, r4, #4 + adds r3, #0xa + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r2, #8 + bl sub_08199CBC + b _0809F130 + .align 2, 0 +_0809F0F0: .4byte gUnknown_84E8C2C +_0809F0F4: .4byte gUnknown_2021C7C +_0809F0F8: .4byte gUnknown_20372B0 +_0809F0FC: .4byte sub_0809F564 +_0809F100: + mov r1, sb + adds r0, r3, r1 + ldr r1, [r0] + mov r0, sl + bl sub_08008BCC + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #4 + adds r1, #0xa + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + mov r2, sl + movs r3, #8 + bl sub_0800449C +_0809F130: + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r7, r0 + lsrs r2, r1, #0x18 + asrs r1, r1, #0x18 + ldr r0, _0809F150 + ldrb r0, [r0] + cmp r1, r0 + bge _0809F154 + subs r6, #1 + cmp r6, #0 + bne _0809F0B2 + mov r1, r8 + strb r2, [r1] + movs r0, #0 + b _0809F15A + .align 2, 0 +_0809F150: .4byte gUnknown_20372AF +_0809F154: + mov r0, r8 + strb r2, [r0] + movs r0, #1 +_0809F15A: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F098 + + thumb_func_start sub_0809F16C +sub_0809F16C: @ 0x0809F16C + push {r4, lr} + sub sp, #0xc + ldr r0, _0809F188 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r2, r0, #0 + cmp r1, #5 + bhi _0809F264 + lsls r0, r1, #2 + ldr r1, _0809F18C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809F188: .4byte gUnknown_20372B9 +_0809F18C: .4byte _0809F190 +_0809F190: @ jump table + .4byte _0809F1A8 @ case 0 + .4byte _0809F1B0 @ case 1 + .4byte _0809F1BC @ case 2 + .4byte _0809F1E4 @ case 3 + .4byte _0809F208 @ case 4 + .4byte _0809F224 @ case 5 +_0809F1A8: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _0809F264 +_0809F1B0: + bl sub_0809ED18 + ldr r1, _0809F1B8 + b _0809F218 + .align 2, 0 +_0809F1B8: .4byte gUnknown_20372B9 +_0809F1BC: + bl sub_08196F98 + ldr r0, _0809F1DC + ldrb r0, [r0] + bl sub_081977C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08196FF0 + ldr r1, _0809F1E0 + movs r0, #0 + strb r0, [r1, #1] + b _0809F218 + .align 2, 0 +_0809F1DC: .4byte gUnknown_20372AF +_0809F1E0: .4byte gUnknown_20372B9 +_0809F1E4: + bl sub_080FC910 + cmp r0, #0 + beq _0809F1F0 + bl sub_0809EF2C +_0809F1F0: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809F1FE + bl sub_0809EFA0 +_0809F1FE: + ldr r1, _0809F204 + b _0809F218 + .align 2, 0 +_0809F204: .4byte gUnknown_20372B9 +_0809F208: + ldr r4, _0809F220 + adds r0, r4, #0 + movs r1, #2 + bl sub_0809F098 + cmp r0, #0 + beq _0809F264 + subs r1, r4, #1 +_0809F218: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0809F264 + .align 2, 0 +_0809F220: .4byte gUnknown_20372BA +_0809F224: + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x10 + str r1, [sp] + ldr r1, _0809F25C + ldrb r1, [r1] + str r1, [sp, #4] + ldr r4, _0809F260 + ldrb r1, [r4] + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #0xa + bl sub_081984B0 + strb r0, [r4] + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08003528 + movs r0, #1 + b _0809F266 + .align 2, 0 +_0809F25C: .4byte gUnknown_20372AF +_0809F260: .4byte gUnknown_20372AE +_0809F264: + movs r0, #0 +_0809F266: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F16C + + thumb_func_start sub_0809F270 +sub_0809F270: @ 0x0809F270 + push {lr} + ldr r1, _0809F288 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] +_0809F27A: + bl sub_0809F16C + cmp r0, #0 + beq _0809F27A + pop {r0} + bx r0 + .align 2, 0 +_0809F288: .4byte gUnknown_20372B9 + thumb_func_end sub_0809F270 + + thumb_func_start sub_0809F28C +sub_0809F28C: @ 0x0809F28C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0809F16C + cmp r0, #1 + bne _0809F2A0 + adds r0, r4, #0 + bl sub_080A8A78 +_0809F2A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809F28C + + thumb_func_start sub_0809F2A8 +sub_0809F2A8: @ 0x0809F2A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _0809F2D0 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + ldr r4, _0809F2D4 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A8A44 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F2D0: .4byte gUnknown_20372B9 +_0809F2D4: .4byte sub_0809F28C + thumb_func_end sub_0809F2A8 + + thumb_func_start sub_0809F2D8 +sub_0809F2D8: @ 0x0809F2D8 + push {lr} + bl sub_0809F16C + cmp r0, #0 + beq _0809F2EA + bl sub_080AEF84 + movs r0, #1 + b _0809F2EC +_0809F2EA: + movs r0, #0 +_0809F2EC: + pop {r1} + bx r1 + thumb_func_end sub_0809F2D8 + + thumb_func_start sub_0809F2F0 +sub_0809F2F0: @ 0x0809F2F0 + ldr r1, _0809F300 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + ldr r1, _0809F304 + ldr r0, _0809F308 + str r0, [r1] + bx lr + .align 2, 0 +_0809F300: .4byte gUnknown_20372B9 +_0809F304: .4byte gUnknown_3005B10 +_0809F308: .4byte sub_0809F2D8 + thumb_func_end sub_0809F2F0 + + thumb_func_start sub_0809F30C +sub_0809F30C: @ 0x0809F30C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0809F32C + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0809F330 + cmp r0, #1 + beq _0809F354 + b _0809F36A + .align 2, 0 +_0809F32C: .4byte gUnknown_3005B60 +_0809F330: + bl sub_08017AC0 + cmp r0, #1 + bne _0809F33C + bl sub_08016398 +_0809F33C: + ldr r1, _0809F34C + ldr r0, _0809F350 + str r0, [r1] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0809F36A + .align 2, 0 +_0809F34C: .4byte gUnknown_3005B54 +_0809F350: .4byte sub_0809F39C +_0809F354: + ldr r0, _0809F370 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0809F36A + adds r0, r5, #0 + bl sub_080A8964 +_0809F36A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0809F370: .4byte gUnknown_3005B54 + thumb_func_end sub_0809F30C + + thumb_func_start sub_0809F374 +sub_0809F374: @ 0x0809F374 + push {lr} + bl sub_080856F4 + cmp r0, #0 + bne _0809F38A + bl sub_08096E04 + bl sub_0808B1C8 + bl sub_0808B658 +_0809F38A: + ldr r0, _0809F398 + bl sub_0809F2A8 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_0809F398: .4byte sub_0809F30C + thumb_func_end sub_0809F374 + + thumb_func_start sub_0809F39C +sub_0809F39C: @ 0x0809F39C + push {r4, lr} + ldr r4, _0809F448 + ldrh r1, [r4, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0809F3BC + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + bl sub_081985E8 + ldr r1, _0809F44C + strb r0, [r1] +_0809F3BC: + ldrh r1, [r4, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F3D6 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_081985E8 + ldr r1, _0809F44C + strb r0, [r1] +_0809F3D6: + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809F470 + movs r0, #5 + bl sub_080A306C + ldr r1, _0809F450 + ldr r2, _0809F454 + ldr r0, _0809F44C + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0809F458 + cmp r1, r0 + bne _0809F40C + movs r0, #0 + bl sub_080BFD4C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0809F478 +_0809F40C: + ldr r3, _0809F45C + ldr r1, _0809F450 + ldr r2, _0809F454 + ldr r0, _0809F44C + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + str r1, [r3] + ldr r0, _0809F460 + cmp r1, r0 + beq _0809F478 + ldr r0, _0809F464 + cmp r1, r0 + beq _0809F478 + ldr r0, _0809F468 + cmp r1, r0 + beq _0809F478 + ldr r0, _0809F46C + cmp r1, r0 + beq _0809F478 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + b _0809F478 + .align 2, 0 +_0809F448: .4byte gUnknown_3002360 +_0809F44C: .4byte gUnknown_20372AE +_0809F450: .4byte gUnknown_84E8C2C +_0809F454: .4byte gUnknown_20372B0 +_0809F458: .4byte sub_0809F48C +_0809F45C: .4byte gUnknown_3005B54 +_0809F460: .4byte sub_0809F5D4 +_0809F464: .4byte sub_0809F63C +_0809F468: .4byte sub_0809F64C +_0809F46C: .4byte sub_0809F698 +_0809F470: + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _0809F47C +_0809F478: + movs r0, #0 + b _0809F486 +_0809F47C: + bl sub_0809F04C + bl sub_080A01FC + movs r0, #1 +_0809F486: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0809F39C + + thumb_func_start sub_0809F48C +sub_0809F48C: @ 0x0809F48C + push {lr} + ldr r0, _0809F4A0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F4A4 + movs r0, #0 + b _0809F4BE + .align 2, 0 +_0809F4A0: .4byte gUnknown_2037C74 +_0809F4A4: + movs r0, #0x29 + bl sub_0808414C + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F4C4 + bl sub_08000540 + movs r0, #1 +_0809F4BE: + pop {r1} + bx r1 + .align 2, 0 +_0809F4C4: .4byte sub_080BAC70 + thumb_func_end sub_0809F48C + + thumb_func_start sub_0809F4C8 +sub_0809F4C8: @ 0x0809F4C8 + push {lr} + ldr r0, _0809F4DC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F4E0 + movs r0, #0 + b _0809F4F4 + .align 2, 0 +_0809F4DC: .4byte gUnknown_2037C74 +_0809F4E0: + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F4F8 + bl sub_08000540 + movs r0, #1 +_0809F4F4: + pop {r1} + bx r1 + .align 2, 0 +_0809F4F8: .4byte sub_081B7BD4 + thumb_func_end sub_0809F4C8 + + thumb_func_start sub_0809F4FC +sub_0809F4FC: @ 0x0809F4FC + push {lr} + ldr r0, _0809F510 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F514 + movs r0, #0 + b _0809F528 + .align 2, 0 +_0809F510: .4byte gUnknown_2037C74 +_0809F514: + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F52C + bl sub_08000540 + movs r0, #1 +_0809F528: + pop {r1} + bx r1 + .align 2, 0 +_0809F52C: .4byte sub_081AA914 + thumb_func_end sub_0809F4FC + + thumb_func_start sub_0809F530 +sub_0809F530: @ 0x0809F530 + push {lr} + ldr r0, _0809F544 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F548 + movs r0, #0 + b _0809F55C + .align 2, 0 +_0809F544: .4byte gUnknown_2037C74 +_0809F548: + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F560 + bl sub_08000540 + movs r0, #1 +_0809F55C: + pop {r1} + bx r1 + .align 2, 0 +_0809F560: .4byte sub_081C6A10 + thumb_func_end sub_0809F530 + + thumb_func_start sub_0809F564 +sub_0809F564: @ 0x0809F564 + push {lr} + ldr r0, _0809F598 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0809F5CC + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + bl sub_080856F4 + cmp r0, #0 + bne _0809F58E + bl sub_08017AC0 + cmp r0, #0 + beq _0809F5A0 +_0809F58E: + ldr r0, _0809F59C + bl sub_080C4710 + b _0809F5C2 + .align 2, 0 +_0809F598: .4byte gUnknown_2037C74 +_0809F59C: .4byte sub_08085AFC +_0809F5A0: + ldr r0, _0809F5B4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809F5BC + ldr r0, _0809F5B8 + bl sub_080C4AC0 + b _0809F5C2 + .align 2, 0 +_0809F5B4: .4byte 0x000008D2 +_0809F5B8: .4byte sub_08085AFC +_0809F5BC: + ldr r0, _0809F5C8 + bl sub_080C4710 +_0809F5C2: + movs r0, #1 + b _0809F5CE + .align 2, 0 +_0809F5C8: .4byte sub_08085AFC +_0809F5CC: + movs r0, #0 +_0809F5CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F564 + + thumb_func_start sub_0809F5D4 +sub_0809F5D4: @ 0x0809F5D4 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809F5E4 + bl sub_0809F04C +_0809F5E4: + ldr r1, _0809F5F0 + ldr r0, _0809F5F4 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F5F0: .4byte gUnknown_3005B54 +_0809F5F4: .4byte sub_0809F700 + thumb_func_end sub_0809F5D4 + + thumb_func_start sub_0809F5F8 +sub_0809F5F8: @ 0x0809F5F8 + push {lr} + ldr r0, _0809F60C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F610 + movs r0, #0 + b _0809F62A + .align 2, 0 +_0809F60C: .4byte gUnknown_2037C74 +_0809F610: + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F630 + bl sub_08000540 + ldr r1, _0809F634 + ldr r0, _0809F638 + str r0, [r1, #8] + movs r0, #1 +_0809F62A: + pop {r1} + bx r1 + .align 2, 0 +_0809F630: .4byte sub_080B9C34 +_0809F634: .4byte gUnknown_3002360 +_0809F638: .4byte sub_08085AFC + thumb_func_end sub_0809F5F8 + + thumb_func_start sub_0809F63C +sub_0809F63C: @ 0x0809F63C + push {lr} + bl sub_0809F04C + bl sub_080A01FC + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809F63C + + thumb_func_start sub_0809F64C +sub_0809F64C: @ 0x0809F64C + push {lr} + bl sub_0809F04C + bl sub_080A01FC + bl sub_080FC9F0 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0809F64C + + thumb_func_start sub_0809F660 +sub_0809F660: @ 0x0809F660 + push {lr} + ldr r0, _0809F674 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F678 + movs r0, #0 + b _0809F68C + .align 2, 0 +_0809F674: .4byte gUnknown_2037C74 +_0809F678: + bl sub_080ABC74 + bl sub_0808569C + ldr r0, _0809F690 + ldrb r0, [r0] + ldr r1, _0809F694 + bl sub_080C4798 + movs r0, #1 +_0809F68C: + pop {r1} + bx r1 + .align 2, 0 +_0809F690: .4byte gUnknown_3005B14 +_0809F694: .4byte sub_08085AFC + thumb_func_end sub_0809F660 + + thumb_func_start sub_0809F698 +sub_0809F698: @ 0x0809F698 + ldr r1, _0809F6A4 + ldr r0, _0809F6A8 + str r0, [r1] + movs r0, #0 + bx lr + .align 2, 0 +_0809F6A4: .4byte gUnknown_3005B54 +_0809F6A8: .4byte sub_0809F774 + thumb_func_end sub_0809F698 + + thumb_func_start sub_0809F6AC +sub_0809F6AC: @ 0x0809F6AC + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_08197EBC + bl sub_08097E7C + ldr r0, _0809F6C8 + bl sub_0809F2A8 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_0809F6C8: .4byte sub_0809F30C + thumb_func_end sub_0809F6AC + + thumb_func_start sub_0809F6CC +sub_0809F6CC: @ 0x0809F6CC + push {lr} + ldr r0, _0809F6E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F6E4 + movs r0, #0 + b _0809F6F8 + .align 2, 0 +_0809F6E0: .4byte gUnknown_2037C74 +_0809F6E4: + bl sub_080ABC74 + bl sub_0809F04C + bl sub_0808569C + ldr r0, _0809F6FC + bl sub_08000540 + movs r0, #1 +_0809F6F8: + pop {r1} + bx r1 + .align 2, 0 +_0809F6FC: .4byte sub_081C4704 + thumb_func_end sub_0809F6CC + + thumb_func_start sub_0809F700 +sub_0809F700: @ 0x0809F700 + push {lr} + bl sub_0809F800 + ldr r1, _0809F714 + ldr r0, _0809F718 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F714: .4byte gUnknown_3005B54 +_0809F718: .4byte sub_0809F71C + thumb_func_end sub_0809F700 + + thumb_func_start sub_0809F71C +sub_0809F71C: @ 0x0809F71C + push {lr} + bl sub_0809F824 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809F754 + cmp r0, #1 + ble _0809F76C + cmp r0, #2 + beq _0809F738 + cmp r0, #3 + beq _0809F754 + b _0809F76C +_0809F738: + movs r0, #0 + movs r1, #0 + bl sub_08197EBC + bl sub_0809F270 + ldr r1, _0809F74C + ldr r0, _0809F750 + str r0, [r1] + b _0809F76C + .align 2, 0 +_0809F74C: .4byte gUnknown_3005B54 +_0809F750: .4byte sub_0809F39C +_0809F754: + movs r0, #0 + movs r1, #1 + bl sub_08197EBC + bl sub_08097E7C + bl sub_080987E8 + bl sub_081A9C40 + movs r0, #1 + b _0809F76E +_0809F76C: + movs r0, #0 +_0809F76E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F71C + + thumb_func_start sub_0809F774 +sub_0809F774: @ 0x0809F774 + push {lr} + bl sub_0809FC18 + ldr r1, _0809F788 + ldr r0, _0809F78C + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F788: .4byte gUnknown_3005B54 +_0809F78C: .4byte sub_0809F7AC + thumb_func_end sub_0809F774 + + thumb_func_start sub_0809F790 +sub_0809F790: @ 0x0809F790 + push {lr} + bl sub_0809F270 + ldr r1, _0809F7A4 + ldr r0, _0809F7A8 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F7A4: .4byte gUnknown_3005B54 +_0809F7A8: .4byte sub_0809F39C + thumb_func_end sub_0809F790 + + thumb_func_start sub_0809F7AC +sub_0809F7AC: @ 0x0809F7AC + push {lr} + bl sub_0809F824 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0809F7C4 + cmp r0, #1 + ble _0809F7F8 + cmp r0, #2 + beq _0809F7D8 + b _0809F7F8 +_0809F7C4: + bl sub_0809F04C + ldr r1, _0809F7D0 + ldr r0, _0809F7D4 + str r0, [r1] + b _0809F7F8 + .align 2, 0 +_0809F7D0: .4byte gUnknown_3005B54 +_0809F7D4: .4byte sub_0809F790 +_0809F7D8: + movs r0, #0 + movs r1, #1 + bl sub_08197EBC + bl sub_08097E7C + bl sub_080987E8 + ldr r0, _0809F7F4 + bl sub_08098880 + movs r0, #1 + b _0809F7FA + .align 2, 0 +_0809F7F4: .4byte gUnknown_822D751 +_0809F7F8: + movs r0, #0 +_0809F7FA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F7AC + + thumb_func_start sub_0809F800 +sub_0809F800: @ 0x0809F800 + push {lr} + bl sub_08087D28 + ldr r1, _0809F818 + ldr r0, _0809F81C + str r0, [r1] + ldr r1, _0809F820 + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0809F818: .4byte gUnknown_20372BC +_0809F81C: .4byte sub_0809F978 +_0809F820: .4byte gUnknown_20372C1 + thumb_func_end sub_0809F800 + + thumb_func_start sub_0809F824 +sub_0809F824: @ 0x0809F824 + push {lr} + bl sub_08196E18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _0809F850 + ldr r1, _0809F848 + movs r0, #0 + strb r0, [r1] + ldr r0, _0809F84C + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0809F852 + .align 2, 0 +_0809F848: .4byte gUnknown_20372C1 +_0809F84C: .4byte gUnknown_20372BC +_0809F850: + movs r0, #0 +_0809F852: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F824 + + thumb_func_start sub_0809F858 +sub_0809F858: @ 0x0809F858 + push {lr} + bl sub_0809F800 + ldr r0, _0809F86C + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_0809F86C: .4byte sub_0809F8A8 + thumb_func_end sub_0809F858 + + thumb_func_start sub_0809F870 +sub_0809F870: @ 0x0809F870 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldr r0, _0809F89C + adds r1, r2, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #1 + bl sub_08197650 + movs r0, #1 + bl sub_08196F04 + ldr r1, _0809F8A0 + movs r0, #1 + strb r0, [r1] + ldr r0, _0809F8A4 + str r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F89C: .4byte gUnknown_2021C7C +_0809F8A0: .4byte gUnknown_20372C1 +_0809F8A4: .4byte gUnknown_20372BC + thumb_func_end sub_0809F870 + + thumb_func_start sub_0809F8A8 +sub_0809F8A8: @ 0x0809F8A8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0809F824 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + beq _0809F8D4 + cmp r1, #1 + bgt _0809F8C4 + cmp r1, #0 + beq _0809F8E2 + b _0809F8D8 +_0809F8C4: + cmp r1, #3 + bgt _0809F8D8 + ldr r1, _0809F8D0 + movs r0, #0 + strh r0, [r1] + b _0809F8D8 + .align 2, 0 +_0809F8D0: .4byte gUnknown_2037290 +_0809F8D4: + ldr r0, _0809F8E8 + strh r1, [r0] +_0809F8D8: + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_0809F8E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809F8E8: .4byte gUnknown_2037290 + thumb_func_end sub_0809F8A8 + + thumb_func_start sub_0809F8EC +sub_0809F8EC: @ 0x0809F8EC + push {lr} + movs r0, #0 + movs r1, #1 + bl sub_08197028 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809F8EC + + thumb_func_start sub_0809F8FC +sub_0809F8FC: @ 0x0809F8FC + push {lr} + bl sub_080A0150 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809F8FC + + thumb_func_start sub_0809F908 +sub_0809F908: @ 0x0809F908 + ldr r1, _0809F910 + movs r0, #0x3c + strb r0, [r1] + bx lr + .align 2, 0 +_0809F910: .4byte gUnknown_20372C0 + thumb_func_end sub_0809F908 + + thumb_func_start sub_0809F914 +sub_0809F914: @ 0x0809F914 + push {lr} + ldr r1, _0809F934 + ldrb r0, [r1] + subs r2, r0, #1 + strb r2, [r1] + ldr r0, _0809F938 + ldrh r1, [r0, #0x2c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0809F93C + lsls r0, r2, #0x18 + cmp r0, #0 + beq _0809F942 + movs r0, #0 + b _0809F944 + .align 2, 0 +_0809F934: .4byte gUnknown_20372C0 +_0809F938: .4byte gUnknown_3002360 +_0809F93C: + movs r0, #5 + bl sub_080A306C +_0809F942: + movs r0, #1 +_0809F944: + pop {r1} + bx r1 + thumb_func_end sub_0809F914 + + thumb_func_start sub_0809F948 +sub_0809F948: @ 0x0809F948 + push {lr} + ldr r1, _0809F964 + ldrb r0, [r1] + cmp r0, #0 + bne _0809F96C + ldr r0, _0809F968 + ldrh r1, [r0, #0x2c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809F970 + movs r0, #1 + b _0809F972 + .align 2, 0 +_0809F964: .4byte gUnknown_20372C0 +_0809F968: .4byte gUnknown_3002360 +_0809F96C: + subs r0, #1 + strb r0, [r1] +_0809F970: + movs r0, #0 +_0809F972: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F948 + + thumb_func_start sub_0809F978 +sub_0809F978: @ 0x0809F978 + push {lr} + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197060 + bl sub_08197818 + bl sub_0809FF8C + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809F9AC + ldr r0, _0809F9A4 + ldr r1, _0809F9A8 + bl sub_0809F870 + b _0809F9B4 + .align 2, 0 +_0809F9A4: .4byte gUnknown_822D762 +_0809F9A8: .4byte sub_0809F9C4 +_0809F9AC: + ldr r0, _0809F9BC + ldr r1, _0809F9C0 + bl sub_0809F870 +_0809F9B4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F9BC: .4byte gUnknown_8276F58 +_0809F9C0: .4byte sub_0809F9C4 + thumb_func_end sub_0809F978 + + thumb_func_start sub_0809F9C4 +sub_0809F9C4: @ 0x0809F9C4 + push {lr} + bl sub_08197714 + ldr r1, _0809F9D8 + ldr r0, _0809F9DC + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809F9D8: .4byte gUnknown_20372BC +_0809F9DC: .4byte sub_0809F9E0 + thumb_func_end sub_0809F9C4 + + thumb_func_start sub_0809F9E0 +sub_0809F9E0: @ 0x0809F9E0 + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0809FA02 + cmp r1, #0 + bgt _0809F9FC + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0809FA40 + b _0809FA4C +_0809F9FC: + cmp r1, #1 + beq _0809FA40 + b _0809FA4C +_0809FA02: + ldr r0, _0809FA20 + ldrh r0, [r0] + cmp r0, #0 + beq _0809FA0E + cmp r0, #2 + bne _0809FA16 +_0809FA0E: + ldr r0, _0809FA24 + ldrb r0, [r0] + cmp r0, #0 + bne _0809FA30 +_0809FA16: + ldr r1, _0809FA28 + ldr r0, _0809FA2C + str r0, [r1] + b _0809FA4C + .align 2, 0 +_0809FA20: .4byte gUnknown_3005F50 +_0809FA24: .4byte gUnknown_2031F74 +_0809FA28: .4byte gUnknown_20372BC +_0809FA2C: .4byte sub_0809FA54 +_0809FA30: + ldr r1, _0809FA38 + ldr r0, _0809FA3C + str r0, [r1] + b _0809FA4C + .align 2, 0 +_0809FA38: .4byte gUnknown_20372BC +_0809FA3C: .4byte sub_0809FB0C +_0809FA40: + bl sub_0809F8FC + bl sub_0809F8EC + movs r0, #2 + b _0809FA4E +_0809FA4C: + movs r0, #0 +_0809FA4E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809F9E0 + + thumb_func_start sub_0809FA54 +sub_0809FA54: @ 0x0809FA54 + push {lr} + ldr r0, _0809FA68 + ldrb r0, [r0] + cmp r0, #1 + bne _0809FA74 + ldr r0, _0809FA6C + ldr r1, _0809FA70 + bl sub_0809F870 + b _0809FA7C + .align 2, 0 +_0809FA68: .4byte gUnknown_2031F74 +_0809FA6C: .4byte gUnknown_8276FD3 +_0809FA70: .4byte sub_0809FA8C +_0809FA74: + ldr r0, _0809FA84 + ldr r1, _0809FA88 + bl sub_0809F870 +_0809FA7C: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FA84: .4byte gUnknown_8276F77 +_0809FA88: .4byte sub_0809FAA8 + thumb_func_end sub_0809FA54 + + thumb_func_start sub_0809FA8C +sub_0809FA8C: @ 0x0809FA8C + push {lr} + movs r0, #1 + bl sub_0819773C + ldr r1, _0809FAA0 + ldr r0, _0809FAA4 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FAA0: .4byte gUnknown_20372BC +_0809FAA4: .4byte sub_0809FAC4 + thumb_func_end sub_0809FA8C + + thumb_func_start sub_0809FAA8 +sub_0809FAA8: @ 0x0809FAA8 + push {lr} + bl sub_08197714 + ldr r1, _0809FABC + ldr r0, _0809FAC0 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FABC: .4byte gUnknown_20372BC +_0809FAC0: .4byte sub_0809FAC4 + thumb_func_end sub_0809FAA8 + + thumb_func_start sub_0809FAC4 +sub_0809FAC4: @ 0x0809FAC4 + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0809FAE6 + cmp r1, #0 + bgt _0809FAE0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0809FAF8 + b _0809FB04 +_0809FAE0: + cmp r1, #1 + beq _0809FAF8 + b _0809FB04 +_0809FAE6: + ldr r1, _0809FAF0 + ldr r0, _0809FAF4 + str r0, [r1] + b _0809FB04 + .align 2, 0 +_0809FAF0: .4byte gUnknown_20372BC +_0809FAF4: .4byte sub_0809FB0C +_0809FAF8: + bl sub_0809F8FC + bl sub_0809F8EC + movs r0, #2 + b _0809FB06 +_0809FB04: + movs r0, #0 +_0809FB06: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809FAC4 + + thumb_func_start sub_0809FB0C +sub_0809FB0C: @ 0x0809FB0C + push {lr} + ldr r0, _0809FB1C + ldr r1, _0809FB20 + bl sub_0809F870 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FB1C: .4byte gUnknown_8276F97 +_0809FB20: .4byte sub_0809FB24 + thumb_func_end sub_0809FB0C + + thumb_func_start sub_0809FB24 +sub_0809FB24: @ 0x0809FB24 + push {r4, lr} + movs r0, #0 + bl sub_0808414C + bl sub_081A9C08 + ldr r4, _0809FB48 + ldrb r0, [r4] + cmp r0, #1 + bne _0809FB4C + movs r0, #4 + bl sub_08153274 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #0 + strb r0, [r4] + b _0809FB56 + .align 2, 0 +_0809FB48: .4byte gUnknown_2031F74 +_0809FB4C: + movs r0, #0 + bl sub_08153274 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_0809FB56: + cmp r1, #1 + bne _0809FB6C + ldr r0, _0809FB64 + ldr r1, _0809FB68 + bl sub_0809F870 + b _0809FB74 + .align 2, 0 +_0809FB64: .4byte gUnknown_8276FBB +_0809FB68: .4byte sub_0809FB88 +_0809FB6C: + ldr r0, _0809FB80 + ldr r1, _0809FB84 + bl sub_0809F870 +_0809FB74: + bl sub_0809F908 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0809FB80: .4byte gUnknown_8277048 +_0809FB84: .4byte sub_0809FBD4 + thumb_func_end sub_0809FB24 + + thumb_func_start sub_0809FB88 +sub_0809FB88: @ 0x0809FB88 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809FBA2 + movs r0, #0x37 + bl sub_080A306C + ldr r1, _0809FBA8 + ldr r0, _0809FBAC + str r0, [r1] +_0809FBA2: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FBA8: .4byte gUnknown_20372BC +_0809FBAC: .4byte sub_0809FBB0 + thumb_func_end sub_0809FB88 + + thumb_func_start sub_0809FBB0 +sub_0809FBB0: @ 0x0809FBB0 + push {lr} + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809FBCE + bl sub_0809F914 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809FBCE + bl sub_0809F8FC + movs r0, #1 + b _0809FBD0 +_0809FBCE: + movs r0, #0 +_0809FBD0: + pop {r1} + bx r1 + thumb_func_end sub_0809FBB0 + + thumb_func_start sub_0809FBD4 +sub_0809FBD4: @ 0x0809FBD4 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809FBEE + movs r0, #0x16 + bl sub_080A306C + ldr r1, _0809FBF4 + ldr r0, _0809FBF8 + str r0, [r1] +_0809FBEE: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FBF4: .4byte gUnknown_20372BC +_0809FBF8: .4byte sub_0809FBFC + thumb_func_end sub_0809FBD4 + + thumb_func_start sub_0809FBFC +sub_0809FBFC: @ 0x0809FBFC + push {lr} + bl sub_0809F948 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809FC10 + bl sub_0809F8FC + movs r0, #3 + b _0809FC12 +_0809FC10: + movs r0, #0 +_0809FC12: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809FBFC + + thumb_func_start sub_0809FC18 +sub_0809FC18: @ 0x0809FC18 + ldr r1, _0809FC28 + ldr r0, _0809FC2C + str r0, [r1] + ldr r1, _0809FC30 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_0809FC28: .4byte gUnknown_20372BC +_0809FC2C: .4byte sub_0809FC34 +_0809FC30: .4byte gUnknown_20372C1 + thumb_func_end sub_0809FC18 + + thumb_func_start sub_0809FC34 +sub_0809FC34: @ 0x0809FC34 + push {lr} + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197060 + bl sub_08197818 + ldr r0, _0809FC58 + ldr r1, _0809FC5C + bl sub_0809F870 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FC58: .4byte gUnknown_822D78F +_0809FC5C: .4byte sub_0809FC60 + thumb_func_end sub_0809FC34 + + thumb_func_start sub_0809FC60 +sub_0809FC60: @ 0x0809FC60 + push {lr} + movs r0, #1 + bl sub_0819773C + ldr r1, _0809FC74 + ldr r0, _0809FC78 + str r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0809FC74: .4byte gUnknown_20372BC +_0809FC78: .4byte sub_0809FC7C + thumb_func_end sub_0809FC60 + + thumb_func_start sub_0809FC7C +sub_0809FC7C: @ 0x0809FC7C + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0809FC9E + cmp r1, #0 + bgt _0809FC98 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0809FCA2 + b _0809FCAA +_0809FC98: + cmp r1, #1 + beq _0809FCA2 + b _0809FCAA +_0809FC9E: + movs r0, #2 + b _0809FCAC +_0809FCA2: + bl sub_0809F8EC + movs r0, #1 + b _0809FCAC +_0809FCAA: + movs r0, #0 +_0809FCAC: + pop {r1} + bx r1 + thumb_func_end sub_0809FC7C + + thumb_func_start sub_0809FCB0 +sub_0809FCB0: @ 0x0809FCB0 + push {lr} + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809FCB0 + + thumb_func_start sub_0809FCBC +sub_0809FCBC: @ 0x0809FCBC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r8, r0 + ldrb r0, [r0] + cmp r0, #4 + bls _0809FCCE + b _0809FDD4 +_0809FCCE: + lsls r0, r0, #2 + ldr r1, _0809FCD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809FCD8: .4byte _0809FCDC +_0809FCDC: @ jump table + .4byte _0809FCF0 @ case 0 + .4byte _0809FD68 @ case 1 + .4byte _0809FD7A @ case 2 + .4byte _0809FDAC @ case 3 + .4byte _0809FDD0 @ case 4 +_0809FCF0: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + movs r2, #0xa0 + lsls r2, r2, #0x13 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _0809FD5C + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + ldr r0, _0809FD60 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0xc0 + lsls r3, r3, #9 + mov r4, sp + movs r6, #0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0809FD64 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0809FD32: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r5 + subs r3, r3, r5 + cmp r3, r5 + bhi _0809FD32 + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + b _0809FDD4 + .align 2, 0 +_0809FD5C: .4byte 0x040000D4 +_0809FD60: .4byte 0x81000200 +_0809FD64: .4byte 0x81000800 +_0809FD68: + bl sub_0800668C + bl sub_080A8818 + bl sub_080A133C + bl sub_080B9750 + b _0809FDD4 +_0809FD7A: + movs r0, #0 + bl sub_080017D4 + ldr r1, _0809FDA4 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + ldr r0, _0809FDA8 + bl sub_08003090 + movs r0, #0 + movs r1, #8 + movs r2, #0xe0 + bl sub_08098144 + movs r0, #0xf0 + bl sub_08197694 + b _0809FDD4 + .align 2, 0 +_0809FDA4: .4byte gUnknown_84E8C94 +_0809FDA8: .4byte gUnknown_84E8C98 +_0809FDAC: + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _0809FDCC + bl sub_080006F0 + movs r0, #1 + bl sub_08001274 + b _0809FDD4 + .align 2, 0 +_0809FDCC: .4byte sub_0809FCB0 +_0809FDD0: + movs r0, #1 + b _0809FDDE +_0809FDD4: + mov r1, r8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 +_0809FDDE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0809FCBC + + thumb_func_start sub_0809FDEC +sub_0809FDEC: @ 0x0809FDEC + push {lr} + ldr r0, _0809FE0C + bl sub_0809FCBC + cmp r0, #0 + beq _0809FE06 + ldr r0, _0809FE10 + movs r1, #0x50 + bl sub_080A8878 + ldr r0, _0809FE14 + bl sub_08000540 +_0809FE06: + pop {r0} + bx r0 + .align 2, 0 +_0809FE0C: .4byte gUnknown_3002798 +_0809FE10: .4byte sub_0809FE28 +_0809FE14: .4byte sub_0809FE18 + thumb_func_end sub_0809FDEC + + thumb_func_start sub_0809FE18 +sub_0809FE18: @ 0x0809FE18 + push {lr} + bl sub_080A89D4 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0809FE18 + + thumb_func_start sub_0809FE28 +sub_0809FE28: @ 0x0809FE28 + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0809FE5C + adds r5, r0, r1 + ldr r0, _0809FE60 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809FE48 + b _0809FF80 +_0809FE48: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #6 + bls _0809FE52 + b _0809FF80 +_0809FE52: + lsls r0, r0, #2 + ldr r1, _0809FE64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809FE5C: .4byte gUnknown_3005B68 +_0809FE60: .4byte gUnknown_2037C74 +_0809FE64: .4byte _0809FE68 +_0809FE68: @ jump table + .4byte _0809FE84 @ case 0 + .4byte _0809FF08 @ case 1 + .4byte _0809FF14 @ case 2 + .4byte _0809FF34 @ case 3 + .4byte _0809FF48 @ case 4 + .4byte _0809FF60 @ case 5 + .4byte _0809FF70 @ case 6 +_0809FE84: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0809FEEC + movs r4, #0 + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r6, #1 + str r6, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0xff + bl sub_08196E2C + movs r0, #0 + movs r1, #8 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0809FEF0 + ldrb r0, [r0] + cmp r0, #0 + beq _0809FEF8 + bl sub_08017AC0 + cmp r0, #0 + beq _0809FEF8 + bl sub_08009C40 + cmp r0, #0 + beq _0809FEF4 + strh r6, [r5] + b _0809FF80 + .align 2, 0 +_0809FEEC: .4byte gUnknown_8277071 +_0809FEF0: .4byte gUnknown_300319C +_0809FEF4: + movs r0, #5 + b _0809FF7E +_0809FEF8: + ldr r0, _0809FF04 + movs r1, #1 + strb r1, [r0] + movs r0, #1 + b _0809FF7E + .align 2, 0 +_0809FF04: .4byte gUnknown_30027A0 +_0809FF08: + bl sub_08076764 + bl sub_0815336C + movs r0, #2 + b _0809FF7E +_0809FF14: + bl sub_081533B0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809FF80 + bl sub_08076780 + movs r0, #3 + strh r0, [r5] + ldr r1, _0809FF30 + movs r0, #0 + strb r0, [r1] + b _0809FF80 + .align 2, 0 +_0809FF30: .4byte gUnknown_30027A0 +_0809FF34: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #4 + b _0809FF7E +_0809FF48: + bl sub_080034D4 + ldr r0, _0809FF5C + ldr r0, [r0, #8] + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 + b _0809FF80 + .align 2, 0 +_0809FF5C: .4byte gUnknown_3002360 +_0809FF60: + ldr r0, _0809FF6C + movs r1, #5 + bl sub_080A8878 + movs r0, #6 + b _0809FF7E + .align 2, 0 +_0809FF6C: .4byte sub_081535C4 +_0809FF70: + ldr r0, _0809FF88 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809FF80 + movs r0, #3 +_0809FF7E: + strh r0, [r5] +_0809FF80: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0809FF88: .4byte sub_081535C4 + thumb_func_end sub_0809FE28 + + thumb_func_start sub_0809FF8C +sub_0809FF8C: @ 0x0809FF8C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r0, _080A00F4 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, _080A00F8 + mov sl, r0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809FFC4 + add r0, sp, #0xc + ldrb r1, [r0, #4] + subs r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080A00FC + ldr r0, [sp, #0x10] + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x10] +_0809FFC4: + ldr r6, _080A0100 + add r0, sp, #0xc + bl sub_08003250 + strb r0, [r6] + ldrb r0, [r6] + movs r1, #0 + bl sub_08196FF0 + ldr r1, _080A0104 + ldr r0, [r1] + ldrb r0, [r0, #8] + movs r1, #4 + mov sb, r1 + cmp r0, #0 + bne _0809FFE8 + movs r0, #8 + mov sb, r0 +_0809FFE8: + movs r4, #2 + ldr r5, _080A0108 + movs r0, #3 + adds r1, r5, #0 + movs r2, #6 + bl sub_08199FDC + ldrb r0, [r6] + str r4, [sp] + movs r7, #0xff + str r7, [sp, #4] + movs r1, #0 + mov r8, r1 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + movs r4, #0x10 + ldrb r0, [r6] + ldr r2, _080A010C + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + adds r1, r5, #0 + mov r2, sb + bl sub_08199FDC + movs r0, #0xff + strb r0, [r5, #0xb] + ldrb r0, [r6] + adds r1, r5, #0 + movs r2, #0x48 + movs r3, #0x10 + bl sub_08199CBC + movs r4, #0x1e + ldrb r0, [r6] + ldr r2, _080A0110 + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #4 + adds r1, r5, #0 + mov r2, sb + bl sub_08199FDC + ldrb r0, [r6] + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x48 + bl sub_0800449C + movs r4, #0x2c + mov r0, sl + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080A00B6 + ldrb r0, [r6] + ldr r2, _080A0114 + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #1 + adds r1, r5, #0 + mov r2, sb + bl sub_08199FDC + ldrb r0, [r6] + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x48 + bl sub_0800449C + movs r4, #0x3a +_080A00B6: + ldrb r0, [r6] + ldr r2, _080A0118 + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #2 + adds r1, r5, #0 + mov r2, sb + bl sub_08199FDC + ldr r1, _080A0104 + ldr r0, [r1] + ldrh r0, [r0, #0xe] + cmp r0, #0x63 + bls _080A011C + ldrb r0, [r6] + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x40 + bl sub_0800449C + b _080A0130 + .align 2, 0 +_080A00F4: .4byte gUnknown_84E8CA8 +_080A00F8: .4byte 0x00000861 +_080A00FC: .4byte 0xFFFFFF00 +_080A0100: .4byte gUnknown_20372C2 +_080A0104: .4byte gUnknown_3005AF0 +_080A0108: .4byte gUnknown_2021C7C +_080A010C: .4byte gUnknown_84E8CB0 +_080A0110: .4byte gUnknown_84E8CB7 +_080A0114: .4byte gUnknown_84E8CC0 +_080A0118: .4byte gUnknown_84E8CC8 +_080A011C: + ldrb r0, [r6] + str r4, [sp] + str r7, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x48 + bl sub_0800449C +_080A0130: + ldr r0, _080A014C + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A014C: .4byte gUnknown_20372C2 + thumb_func_end sub_0809FF8C + + thumb_func_start sub_080A0150 +sub_080A0150: @ 0x080A0150 + push {r4, lr} + ldr r4, _080A0168 + ldrb r0, [r4] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0168: .4byte gUnknown_20372C2 + thumb_func_end sub_080A0150 + + thumb_func_start sub_080A016C +sub_080A016C: @ 0x080A016C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A0190 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0188 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080A0188: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0190: .4byte sub_081535C4 + thumb_func_end sub_080A016C + + thumb_func_start sub_080A0194 +sub_080A0194: @ 0x080A0194 + push {r4, r5, lr} + ldr r0, _080A01D0 + movs r1, #5 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080A01D4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0, #0xc] + ldr r0, _080A01D8 + movs r1, #6 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + strh r4, [r1, #0xa] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A01D0: .4byte sub_081535C4 +_080A01D4: .4byte gUnknown_3005B60 +_080A01D8: .4byte sub_080A016C + thumb_func_end sub_080A0194 + + thumb_func_start sub_080A01DC +sub_080A01DC: @ 0x080A01DC + push {lr} + bl sub_0819780C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08197060 + bl sub_08197818 + bl sub_08097E7C + bl sub_080987E8 + pop {r0} + bx r0 + thumb_func_end sub_080A01DC + + thumb_func_start sub_080A01FC +sub_080A01FC: @ 0x080A01FC + push {lr} + movs r0, #5 + bl sub_080A306C + bl sub_080A01DC + pop {r0} + bx r0 + thumb_func_end sub_080A01FC + + thumb_func_start sub_080A020C +sub_080A020C: @ 0x080A020C + ldrb r3, [r1] + adds r0, r0, r3 + strb r2, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 + thumb_func_end sub_080A020C + + thumb_func_start sub_080A021C +sub_080A021C: @ 0x080A021C + push {lr} + sub sp, #4 + ldr r1, _080A023C + movs r0, #0 + strb r0, [r1] + movs r0, #0 + str r0, [sp] + ldr r1, _080A0240 + ldr r2, _080A0244 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080A023C: .4byte gUnknown_3000F34 +_080A0240: .4byte gUnknown_20372C4 +_080A0244: .4byte 0x0500003C + thumb_func_end sub_080A021C + + thumb_func_start sub_080A0248 +sub_080A0248: @ 0x080A0248 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r3, _080A0290 + ldrb r0, [r3] + cmp r0, #0x13 + bhi _080A0288 + ldr r2, _080A0294 + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + str r4, [r0] + ldrb r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #4 + adds r0, r0, r1 + str r5, [r0] + ldrb r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r6, [r0, #8] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_080A0288: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A0290: .4byte gUnknown_3000F34 +_080A0294: .4byte gUnknown_20372C4 + thumb_func_end sub_080A0248 + + thumb_func_start sub_080A0298 +sub_080A0298: @ 0x080A0298 + push {r4, r5, r6, lr} + movs r3, #0 + ldr r4, _080A02D4 + adds r6, r4, #0 + ldrb r0, [r4] + cmp r3, r0 + bge _080A02CA + ldr r2, _080A02D8 + ldr r1, _080A02DC + movs r5, #0x80 + lsls r5, r5, #0x18 +_080A02AE: + ldr r0, [r1] + str r0, [r2] + ldr r0, [r1, #4] + str r0, [r2, #4] + ldrh r0, [r1, #8] + lsrs r0, r0, #1 + orrs r0, r5 + str r0, [r2, #8] + ldr r0, [r2, #8] + adds r1, #0xc + adds r3, #1 + ldrb r0, [r4] + cmp r3, r0 + blt _080A02AE +_080A02CA: + movs r0, #0 + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A02D4: .4byte gUnknown_3000F34 +_080A02D8: .4byte 0x040000D4 +_080A02DC: .4byte gUnknown_20372C4 + thumb_func_end sub_080A0298 + + thumb_func_start sub_080A02E0 +sub_080A02E0: @ 0x080A02E0 + push {lr} + bl sub_080A021C + bl sub_080A0370 + bl sub_080A03AC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A02E0 + + thumb_func_start sub_080A02F4 +sub_080A02F4: @ 0x080A02F4 + push {lr} + bl sub_080A03AC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A02F4 + + thumb_func_start sub_080A0300 +sub_080A0300: @ 0x080A0300 + push {r4, lr} + bl sub_080A021C + ldr r2, _080A0358 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + ldr r1, _080A035C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + blo _080A031E + movs r0, #0 + strh r0, [r2] +_080A031E: + ldr r4, _080A0360 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldr r1, _080A0364 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + blo _080A0336 + movs r0, #0 + strh r0, [r4] +_080A0336: + ldr r0, _080A0368 + ldr r1, [r0] + cmp r1, #0 + beq _080A0344 + ldrh r0, [r2] + bl _call_via_r1 +_080A0344: + ldr r0, _080A036C + ldr r1, [r0] + cmp r1, #0 + beq _080A0352 + ldrh r0, [r4] + bl _call_via_r1 +_080A0352: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0358: .4byte gUnknown_3000F36 +_080A035C: .4byte gUnknown_3000F38 +_080A0360: .4byte gUnknown_3000F3A +_080A0364: .4byte gUnknown_3000F3C +_080A0368: .4byte gUnknown_3000F40 +_080A036C: .4byte gUnknown_3000F44 + thumb_func_end sub_080A0300 + + thumb_func_start sub_080A0370 +sub_080A0370: @ 0x080A0370 + push {lr} + ldr r0, _080A039C + movs r1, #0 + strh r1, [r0] + ldr r0, _080A03A0 + strh r1, [r0] + ldr r1, _080A03A4 + movs r0, #0 + str r0, [r1] + ldr r0, _080A03A8 + ldr r0, [r0] + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _080A0396 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _080A0396 + bl _call_via_r0 +_080A0396: + pop {r0} + bx r0 + .align 2, 0 +_080A039C: .4byte gUnknown_3000F36 +_080A03A0: .4byte gUnknown_3000F38 +_080A03A4: .4byte gUnknown_3000F40 +_080A03A8: .4byte gUnknown_2036FB8 + thumb_func_end sub_080A0370 + + thumb_func_start sub_080A03AC +sub_080A03AC: @ 0x080A03AC + push {lr} + ldr r0, _080A03D8 + movs r1, #0 + strh r1, [r0] + ldr r0, _080A03DC + strh r1, [r0] + ldr r1, _080A03E0 + movs r0, #0 + str r0, [r1] + ldr r0, _080A03E4 + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _080A03D2 + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _080A03D2 + bl _call_via_r0 +_080A03D2: + pop {r0} + bx r0 + .align 2, 0 +_080A03D8: .4byte gUnknown_3000F3A +_080A03DC: .4byte gUnknown_3000F3C +_080A03E0: .4byte gUnknown_3000F44 +_080A03E4: .4byte gUnknown_2036FB8 + thumb_func_end sub_080A03AC + + thumb_func_start sub_080A03E8 +sub_080A03E8: @ 0x080A03E8 + ldr r1, _080A0400 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0404 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080A0408 + ldr r0, _080A040C + str r0, [r1] + bx lr + .align 2, 0 +_080A0400: .4byte gUnknown_3000F36 +_080A0404: .4byte gUnknown_3000F38 +_080A0408: .4byte gUnknown_3000F40 +_080A040C: .4byte sub_080A0438 + thumb_func_end sub_080A03E8 + + thumb_func_start sub_080A0410 +sub_080A0410: @ 0x080A0410 + ldr r1, _080A0428 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A042C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080A0430 + ldr r0, _080A0434 + str r0, [r1] + bx lr + .align 2, 0 +_080A0428: .4byte gUnknown_3000F36 +_080A042C: .4byte gUnknown_3000F38 +_080A0430: .4byte gUnknown_3000F40 +_080A0434: .4byte sub_080A047C + thumb_func_end sub_080A0410 + + thumb_func_start sub_080A0438 +sub_080A0438: @ 0x080A0438 + push {r4, r5, lr} + lsls r5, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r5 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _080A044E + lsrs r0, r5, #0x14 + bl sub_080A0494 +_080A044E: + cmp r4, #1 + bne _080A0458 + lsrs r0, r5, #0x14 + bl sub_080A04BC +_080A0458: + cmp r4, #2 + bne _080A0462 + lsrs r0, r5, #0x14 + bl sub_080A04E4 +_080A0462: + cmp r4, #3 + bne _080A046C + lsrs r0, r5, #0x14 + bl sub_080A050C +_080A046C: + cmp r4, #4 + bne _080A0476 + lsrs r0, r5, #0x14 + bl sub_080A0B74 +_080A0476: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080A0438 + + thumb_func_start sub_080A047C +sub_080A047C: @ 0x080A047C + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + bne _080A0490 + lsrs r0, r1, #0x13 + bl sub_080A0F50 +_080A0490: + pop {r0} + bx r0 + thumb_func_end sub_080A047C + + thumb_func_start sub_080A0494 +sub_080A0494: @ 0x080A0494 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A04B4 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A04B8 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A04B4: .4byte gUnknown_84E8E70 +_080A04B8: .4byte 0x06003F80 + thumb_func_end sub_080A0494 + + thumb_func_start sub_080A04BC +sub_080A04BC: @ 0x080A04BC + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + ands r0, r1 + ldr r1, _080A04DC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A04E0 + movs r2, #0xf0 + lsls r2, r2, #2 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A04DC: .4byte gUnknown_84EAC80 +_080A04E0: .4byte 0x06003600 + thumb_func_end sub_080A04BC + + thumb_func_start sub_080A04E4 +sub_080A04E4: @ 0x080A04E4 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + ldr r0, _080A0504 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0508 + movs r2, #0xa0 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0504: .4byte gUnknown_84EB560 +_080A0508: .4byte 0x06003A00 + thumb_func_end sub_080A04E4 + + thumb_func_start sub_080A050C +sub_080A050C: @ 0x080A050C + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A052C + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0530 + movs r2, #0xc0 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A052C: .4byte gUnknown_84EB880 +_080A0530: .4byte 0x06003E00 + thumb_func_end sub_080A050C + + thumb_func_start sub_080A0534 +sub_080A0534: @ 0x080A0534 + ldr r1, _080A054C + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0550 + ldr r0, _080A0554 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0558 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080A054C: .4byte gUnknown_3000F3A +_080A0550: .4byte gUnknown_3000F3C +_080A0554: .4byte gUnknown_3000F38 +_080A0558: .4byte gUnknown_3000F44 + thumb_func_end sub_080A0534 + + thumb_func_start sub_080A055C +sub_080A055C: @ 0x080A055C + ldr r1, _080A0574 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0578 + ldr r0, _080A057C + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0580 + ldr r0, _080A0584 + str r0, [r1] + bx lr + .align 2, 0 +_080A0574: .4byte gUnknown_3000F3A +_080A0578: .4byte gUnknown_3000F3C +_080A057C: .4byte gUnknown_3000F38 +_080A0580: .4byte gUnknown_3000F44 +_080A0584: .4byte sub_080A0904 + thumb_func_end sub_080A055C + + thumb_func_start sub_080A0588 +sub_080A0588: @ 0x080A0588 + ldr r1, _080A05A0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A05A4 + ldr r0, _080A05A8 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A05AC + ldr r0, _080A05B0 + str r0, [r1] + bx lr + .align 2, 0 +_080A05A0: .4byte gUnknown_3000F3A +_080A05A4: .4byte gUnknown_3000F3C +_080A05A8: .4byte gUnknown_3000F38 +_080A05AC: .4byte gUnknown_3000F44 +_080A05B0: .4byte sub_080A0980 + thumb_func_end sub_080A0588 + + thumb_func_start sub_080A05B4 +sub_080A05B4: @ 0x080A05B4 + ldr r1, _080A05CC + movs r0, #0 + strh r0, [r1] + ldr r1, _080A05D0 + ldr r0, _080A05D4 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A05D8 + ldr r0, _080A05DC + str r0, [r1] + bx lr + .align 2, 0 +_080A05CC: .4byte gUnknown_3000F3A +_080A05D0: .4byte gUnknown_3000F3C +_080A05D4: .4byte gUnknown_3000F38 +_080A05D8: .4byte gUnknown_3000F44 +_080A05DC: .4byte sub_080A0998 + thumb_func_end sub_080A05B4 + + thumb_func_start sub_080A05E0 +sub_080A05E0: @ 0x080A05E0 + ldr r1, _080A05F8 + ldr r0, _080A05FC + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0600 + ldr r0, _080A0604 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0608 + ldr r0, _080A060C + str r0, [r1] + bx lr + .align 2, 0 +_080A05F8: .4byte gUnknown_3000F3A +_080A05FC: .4byte gUnknown_3000F36 +_080A0600: .4byte gUnknown_3000F3C +_080A0604: .4byte gUnknown_3000F38 +_080A0608: .4byte gUnknown_3000F44 +_080A060C: .4byte sub_080A09B0 + thumb_func_end sub_080A05E0 + + thumb_func_start sub_080A0610 +sub_080A0610: @ 0x080A0610 + ldr r1, _080A0628 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A062C + ldr r0, _080A0630 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0634 + ldr r0, _080A0638 + str r0, [r1] + bx lr + .align 2, 0 +_080A0628: .4byte gUnknown_3000F3A +_080A062C: .4byte gUnknown_3000F3C +_080A0630: .4byte gUnknown_3000F38 +_080A0634: .4byte gUnknown_3000F44 +_080A0638: .4byte sub_080A0A24 + thumb_func_end sub_080A0610 + + thumb_func_start sub_080A063C +sub_080A063C: @ 0x080A063C + ldr r1, _080A0654 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0658 + ldr r0, _080A065C + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0660 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080A0654: .4byte gUnknown_3000F3A +_080A0658: .4byte gUnknown_3000F3C +_080A065C: .4byte gUnknown_3000F38 +_080A0660: .4byte gUnknown_3000F44 + thumb_func_end sub_080A063C + + thumb_func_start sub_080A0664 +sub_080A0664: @ 0x080A0664 + ldr r1, _080A067C + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0680 + ldr r0, _080A0684 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0688 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080A067C: .4byte gUnknown_3000F3A +_080A0680: .4byte gUnknown_3000F3C +_080A0684: .4byte gUnknown_3000F38 +_080A0688: .4byte gUnknown_3000F44 + thumb_func_end sub_080A0664 + + thumb_func_start sub_080A068C +sub_080A068C: @ 0x080A068C + ldr r1, _080A06A4 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A06A8 + ldr r0, _080A06AC + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A06B0 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080A06A4: .4byte gUnknown_3000F3A +_080A06A8: .4byte gUnknown_3000F3C +_080A06AC: .4byte gUnknown_3000F38 +_080A06B0: .4byte gUnknown_3000F44 + thumb_func_end sub_080A068C + + thumb_func_start sub_080A06B4 +sub_080A06B4: @ 0x080A06B4 + ldr r1, _080A06CC + movs r0, #0 + strh r0, [r1] + ldr r1, _080A06D0 + ldr r0, _080A06D4 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A06D8 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_080A06CC: .4byte gUnknown_3000F3A +_080A06D0: .4byte gUnknown_3000F3C +_080A06D4: .4byte gUnknown_3000F38 +_080A06D8: .4byte gUnknown_3000F44 + thumb_func_end sub_080A06B4 + + thumb_func_start sub_080A06DC +sub_080A06DC: @ 0x080A06DC + ldr r1, _080A06F4 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A06F8 + ldr r0, _080A06FC + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0700 + ldr r0, _080A0704 + str r0, [r1] + bx lr + .align 2, 0 +_080A06F4: .4byte gUnknown_3000F3A +_080A06F8: .4byte gUnknown_3000F3C +_080A06FC: .4byte gUnknown_3000F38 +_080A0700: .4byte gUnknown_3000F44 +_080A0704: .4byte sub_080A0A50 + thumb_func_end sub_080A06DC + + thumb_func_start sub_080A0708 +sub_080A0708: @ 0x080A0708 + ldr r1, _080A0720 + ldr r0, _080A0724 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0728 + ldr r0, _080A072C + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0730 + ldr r0, _080A0734 + str r0, [r1] + bx lr + .align 2, 0 +_080A0720: .4byte gUnknown_3000F3A +_080A0724: .4byte gUnknown_3000F36 +_080A0728: .4byte gUnknown_3000F3C +_080A072C: .4byte gUnknown_3000F38 +_080A0730: .4byte gUnknown_3000F44 +_080A0734: .4byte sub_080A0AC4 + thumb_func_end sub_080A0708 + + thumb_func_start sub_080A0738 +sub_080A0738: @ 0x080A0738 + ldr r1, _080A0750 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0754 + ldr r0, _080A0758 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A075C + ldr r0, _080A0760 + str r0, [r1] + bx lr + .align 2, 0 +_080A0750: .4byte gUnknown_3000F3A +_080A0754: .4byte gUnknown_3000F3C +_080A0758: .4byte gUnknown_3000F38 +_080A075C: .4byte gUnknown_3000F44 +_080A0760: .4byte sub_080A0AF4 + thumb_func_end sub_080A0738 + + thumb_func_start sub_080A0764 +sub_080A0764: @ 0x080A0764 + ldr r1, _080A077C + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0780 + ldr r0, _080A0784 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0788 + ldr r0, _080A078C + str r0, [r1] + bx lr + .align 2, 0 +_080A077C: .4byte gUnknown_3000F3A +_080A0780: .4byte gUnknown_3000F3C +_080A0784: .4byte gUnknown_3000F38 +_080A0788: .4byte gUnknown_3000F44 +_080A078C: .4byte sub_080A0B44 + thumb_func_end sub_080A0764 + + thumb_func_start sub_080A0790 +sub_080A0790: @ 0x080A0790 + ldr r1, _080A07A8 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A07AC + ldr r0, _080A07B0 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A07B4 + ldr r0, _080A07B8 + str r0, [r1] + bx lr + .align 2, 0 +_080A07A8: .4byte gUnknown_3000F3A +_080A07AC: .4byte gUnknown_3000F3C +_080A07B0: .4byte gUnknown_3000F38 +_080A07B4: .4byte gUnknown_3000F44 +_080A07B8: .4byte sub_080A0B5C + thumb_func_end sub_080A0790 + + thumb_func_start sub_080A07BC +sub_080A07BC: @ 0x080A07BC + ldr r1, _080A07D0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A07D4 + movs r0, #0x80 + strh r0, [r1] + ldr r1, _080A07D8 + ldr r0, _080A07DC + str r0, [r1] + bx lr + .align 2, 0 +_080A07D0: .4byte gUnknown_3000F3A +_080A07D4: .4byte gUnknown_3000F3C +_080A07D8: .4byte gUnknown_3000F44 +_080A07DC: .4byte sub_080A0B0C + thumb_func_end sub_080A07BC + + thumb_func_start sub_080A07E0 +sub_080A07E0: @ 0x080A07E0 + ldr r1, _080A07F4 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A07F8 + movs r0, #0xf0 + strh r0, [r1] + ldr r1, _080A07FC + ldr r0, _080A0800 + str r0, [r1] + bx lr + .align 2, 0 +_080A07F4: .4byte gUnknown_3000F3A +_080A07F8: .4byte gUnknown_3000F3C +_080A07FC: .4byte gUnknown_3000F44 +_080A0800: .4byte sub_080A0EA0 + thumb_func_end sub_080A07E0 + + thumb_func_start sub_080A0804 +sub_080A0804: @ 0x080A0804 + ldr r1, _080A081C + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0820 + ldr r0, _080A0824 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0828 + ldr r0, _080A082C + str r0, [r1] + bx lr + .align 2, 0 +_080A081C: .4byte gUnknown_3000F3A +_080A0820: .4byte gUnknown_3000F3C +_080A0824: .4byte gUnknown_3000F38 +_080A0828: .4byte gUnknown_3000F44 +_080A082C: .4byte sub_080A0B28 + thumb_func_end sub_080A0804 + + thumb_func_start sub_080A0830 +sub_080A0830: @ 0x080A0830 + ldr r1, _080A0844 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0848 + movs r0, #0x80 + strh r0, [r1] + ldr r1, _080A084C + ldr r0, _080A0850 + str r0, [r1] + bx lr + .align 2, 0 +_080A0844: .4byte gUnknown_3000F3A +_080A0848: .4byte gUnknown_3000F3C +_080A084C: .4byte gUnknown_3000F44 +_080A0850: .4byte sub_080A0EB8 + thumb_func_end sub_080A0830 + + thumb_func_start sub_080A0854 +sub_080A0854: @ 0x080A0854 + ldr r1, _080A086C + movs r0, #0 + strh r0, [r1] + ldr r1, _080A0870 + ldr r0, _080A0874 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A0878 + ldr r0, _080A087C + str r0, [r1] + bx lr + .align 2, 0 +_080A086C: .4byte gUnknown_3000F3A +_080A0870: .4byte gUnknown_3000F3C +_080A0874: .4byte gUnknown_3000F38 +_080A0878: .4byte gUnknown_3000F44 +_080A087C: .4byte sub_080A0E88 + thumb_func_end sub_080A0854 + + thumb_func_start sub_080A0880 +sub_080A0880: @ 0x080A0880 + ldr r1, _080A0898 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A089C + ldr r0, _080A08A0 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A08A4 + ldr r0, _080A08A8 + str r0, [r1] + bx lr + .align 2, 0 +_080A0898: .4byte gUnknown_3000F3A +_080A089C: .4byte gUnknown_3000F3C +_080A08A0: .4byte gUnknown_3000F38 +_080A08A4: .4byte gUnknown_3000F44 +_080A08A8: .4byte sub_080A0EE4 + thumb_func_end sub_080A0880 + + thumb_func_start sub_080A08AC +sub_080A08AC: @ 0x080A08AC + ldr r1, _080A08C4 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A08C8 + ldr r0, _080A08CC + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A08D0 + ldr r0, _080A08D4 + str r0, [r1] + bx lr + .align 2, 0 +_080A08C4: .4byte gUnknown_3000F3A +_080A08C8: .4byte gUnknown_3000F3C +_080A08CC: .4byte gUnknown_3000F38 +_080A08D0: .4byte gUnknown_3000F44 +_080A08D4: .4byte sub_080A0EFC + thumb_func_end sub_080A08AC + + thumb_func_start sub_080A08D8 +sub_080A08D8: @ 0x080A08D8 + ldr r1, _080A08F0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A08F4 + ldr r0, _080A08F8 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _080A08FC + ldr r0, _080A0900 + str r0, [r1] + bx lr + .align 2, 0 +_080A08F0: .4byte gUnknown_3000F3A +_080A08F4: .4byte gUnknown_3000F3C +_080A08F8: .4byte gUnknown_3000F38 +_080A08FC: .4byte gUnknown_3000F44 +_080A0900: .4byte sub_080A0F20 + thumb_func_end sub_080A08D8 + + thumb_func_start sub_080A0904 +sub_080A0904: @ 0x080A0904 + push {r4, r5, r6, lr} + lsls r5, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r5 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _080A0924 + lsrs r4, r5, #0x13 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A0CFC + adds r0, r4, #0 + bl sub_080A0D38 +_080A0924: + cmp r6, #1 + bne _080A0930 + lsrs r0, r5, #0x13 + movs r1, #1 + bl sub_080A0CFC +_080A0930: + cmp r6, #2 + bne _080A093C + lsrs r0, r5, #0x13 + movs r1, #2 + bl sub_080A0CFC +_080A093C: + cmp r6, #3 + bne _080A0948 + lsrs r0, r5, #0x13 + movs r1, #3 + bl sub_080A0CFC +_080A0948: + cmp r6, #4 + bne _080A0954 + lsrs r0, r5, #0x13 + movs r1, #4 + bl sub_080A0CFC +_080A0954: + cmp r6, #5 + bne _080A0960 + lsrs r0, r5, #0x13 + movs r1, #5 + bl sub_080A0CFC +_080A0960: + cmp r6, #6 + bne _080A096C + lsrs r0, r5, #0x13 + movs r1, #6 + bl sub_080A0CFC +_080A096C: + cmp r6, #7 + bne _080A0978 + lsrs r0, r5, #0x13 + movs r1, #7 + bl sub_080A0CFC +_080A0978: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0904 + + thumb_func_start sub_080A0980 +sub_080A0980: @ 0x080A0980 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + bne _080A0994 + lsrs r0, r1, #0x13 + bl sub_080A0DE8 +_080A0994: + pop {r0} + bx r0 + thumb_func_end sub_080A0980 + + thumb_func_start sub_080A0998 +sub_080A0998: @ 0x080A0998 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _080A09AC + lsrs r0, r1, #0x14 + bl sub_080A0E60 +_080A09AC: + pop {r0} + bx r0 + thumb_func_end sub_080A0998 + + thumb_func_start sub_080A09B0 +sub_080A09B0: @ 0x080A09B0 + push {r4, r5, lr} + lsls r4, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r4 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080A09C8 + lsrs r0, r4, #0x13 + movs r1, #0 + bl sub_080A0C5C +_080A09C8: + cmp r5, #1 + bne _080A09D4 + lsrs r0, r4, #0x13 + movs r1, #1 + bl sub_080A0C5C +_080A09D4: + cmp r5, #2 + bne _080A09E0 + lsrs r0, r4, #0x13 + movs r1, #2 + bl sub_080A0C5C +_080A09E0: + cmp r5, #3 + bne _080A09EC + lsrs r0, r4, #0x13 + movs r1, #3 + bl sub_080A0C5C +_080A09EC: + cmp r5, #4 + bne _080A09F8 + lsrs r0, r4, #0x13 + movs r1, #4 + bl sub_080A0C5C +_080A09F8: + cmp r5, #5 + bne _080A0A04 + lsrs r0, r4, #0x13 + movs r1, #5 + bl sub_080A0C5C +_080A0A04: + cmp r5, #6 + bne _080A0A10 + lsrs r0, r4, #0x13 + movs r1, #6 + bl sub_080A0C5C +_080A0A10: + cmp r5, #7 + bne _080A0A1C + lsrs r0, r4, #0x13 + movs r1, #7 + bl sub_080A0C5C +_080A0A1C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A09B0 + + thumb_func_start sub_080A0A24 +sub_080A0A24: @ 0x080A0A24 + push {r4, r5, lr} + lsls r4, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r4 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080A0A3E + lsrs r0, r4, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A0B9C +_080A0A3E: + cmp r5, #1 + bne _080A0A48 + lsrs r0, r4, #0x14 + bl sub_080A0D60 +_080A0A48: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0A24 + + thumb_func_start sub_080A0A50 +sub_080A0A50: @ 0x080A0A50 + push {r4, r5, lr} + lsls r4, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r4 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080A0A68 + lsrs r0, r4, #0x13 + movs r1, #0 + bl sub_080A0D88 +_080A0A68: + cmp r5, #1 + bne _080A0A74 + lsrs r0, r4, #0x13 + movs r1, #1 + bl sub_080A0D88 +_080A0A74: + cmp r5, #2 + bne _080A0A80 + lsrs r0, r4, #0x13 + movs r1, #2 + bl sub_080A0D88 +_080A0A80: + cmp r5, #3 + bne _080A0A8C + lsrs r0, r4, #0x13 + movs r1, #3 + bl sub_080A0D88 +_080A0A8C: + cmp r5, #4 + bne _080A0A98 + lsrs r0, r4, #0x13 + movs r1, #4 + bl sub_080A0D88 +_080A0A98: + cmp r5, #5 + bne _080A0AA4 + lsrs r0, r4, #0x13 + movs r1, #5 + bl sub_080A0D88 +_080A0AA4: + cmp r5, #6 + bne _080A0AB0 + lsrs r0, r4, #0x13 + movs r1, #6 + bl sub_080A0D88 +_080A0AB0: + cmp r5, #7 + bne _080A0ABC + lsrs r0, r4, #0x13 + movs r1, #7 + bl sub_080A0D88 +_080A0ABC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0A50 + + thumb_func_start sub_080A0AC4 +sub_080A0AC4: @ 0x080A0AC4 + push {r4, r5, lr} + lsls r4, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r4 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080A0ADE + lsrs r0, r4, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A0BE4 +_080A0ADE: + cmp r5, #1 + bne _080A0AEC + lsrs r0, r4, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A0C34 +_080A0AEC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0AC4 + + thumb_func_start sub_080A0AF4 +sub_080A0AF4: @ 0x080A0AF4 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _080A0B08 + lsrs r0, r1, #0x14 + bl sub_080A1060 +_080A0B08: + pop {r0} + bx r0 + thumb_func_end sub_080A0AF4 + + thumb_func_start sub_080A0B0C +sub_080A0B0C: @ 0x080A0B0C + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _080A0B24 + lsrs r0, r1, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A0C0C +_080A0B24: + pop {r0} + bx r0 + thumb_func_end sub_080A0B0C + + thumb_func_start sub_080A0B28 +sub_080A0B28: @ 0x080A0B28 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0xc + ands r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _080A0B3E + lsrs r0, r1, #0x14 + bl sub_080A0DC0 +_080A0B3E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0B28 + + thumb_func_start sub_080A0B44 +sub_080A0B44: @ 0x080A0B44 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + bne _080A0B58 + lsrs r0, r1, #0x13 + bl sub_080A0E10 +_080A0B58: + pop {r0} + bx r0 + thumb_func_end sub_080A0B44 + + thumb_func_start sub_080A0B5C +sub_080A0B5C: @ 0x080A0B5C + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + bne _080A0B70 + lsrs r0, r1, #0x13 + bl sub_080A0E38 +_080A0B70: + pop {r0} + bx r0 + thumb_func_end sub_080A0B5C + + thumb_func_start sub_080A0B74 +sub_080A0B74: @ 0x080A0B74 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0B94 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0B98 + movs r2, #0xa0 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0B94: .4byte gUnknown_84EBD90 +_080A0B98: .4byte 0x06003C00 + thumb_func_end sub_080A0B74 + + thumb_func_start sub_080A0B9C +sub_080A0B9C: @ 0x080A0B9C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #3 + ands r0, r4 + ldr r5, _080A0BD8 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + ldr r1, _080A0BDC + movs r2, #0x80 + bl sub_080A0248 + adds r1, r4, #2 + adds r0, r1, #0 + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r5 + ldr r0, [r0] + ldr r1, _080A0BE0 + movs r2, #0x80 + bl sub_080A0248 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A0BD8: .4byte gUnknown_84EBFA0 +_080A0BDC: .4byte 0x06006400 +_080A0BE0: .4byte 0x06006480 + thumb_func_end sub_080A0B9C + + thumb_func_start sub_080A0BE4 +sub_080A0BE4: @ 0x080A0BE4 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0xc0 + lsls r1, r1, #0x12 + ands r1, r0 + ldr r0, _080A0C04 + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0C08 + movs r2, #0xf0 + lsls r2, r2, #2 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0C04: .4byte gUnknown_84ECAF0 +_080A0C08: .4byte 0x06007A00 + thumb_func_end sub_080A0BE4 + + thumb_func_start sub_080A0C0C +sub_080A0C0C: @ 0x080A0C0C + push {lr} + lsls r0, r0, #0x18 + movs r1, #0xc0 + lsls r1, r1, #0x12 + ands r1, r0 + ldr r0, _080A0C2C + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0C30 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0C2C: .4byte gUnknown_84ECD00 +_080A0C30: .4byte 0x06007E00 + thumb_func_end sub_080A0C0C + + thumb_func_start sub_080A0C34 +sub_080A0C34: @ 0x080A0C34 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0xe0 + lsls r1, r1, #0x13 + ands r1, r0 + ldr r0, _080A0C54 + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0C58 + movs r2, #0x80 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0C54: .4byte gUnknown_84ED510 +_080A0C58: .4byte 0x06007E00 + thumb_func_end sub_080A0C34 + + thumb_func_start sub_080A0C5C +sub_080A0C5C: @ 0x080A0C5C + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + subs r0, r5, r6 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xb + bhi _080A0CB8 + adds r0, r5, #0 + movs r1, #0xc + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + ldr r0, _080A0CA8 + lsrs r4, r4, #0xe + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _080A0CAC + lsls r5, r6, #2 + adds r1, r5, r1 + ldr r1, [r1] + movs r2, #0x80 + bl sub_080A0248 + ldr r0, _080A0CB0 + adds r4, r4, r0 + ldr r0, [r4] + ldr r1, _080A0CB4 + adds r5, r5, r1 + ldr r1, [r5] + movs r2, #0x80 + bl sub_080A0248 + b _080A0CE4 + .align 2, 0 +_080A0CA8: .4byte gUnknown_84EDA90 +_080A0CAC: .4byte gUnknown_84EDA50 +_080A0CB0: .4byte gUnknown_84EDAC0 +_080A0CB4: .4byte gUnknown_84EDA70 +_080A0CB8: + movs r0, #3 + ands r5, r0 + ldr r0, _080A0CEC + lsls r5, r5, #2 + adds r0, r5, r0 + ldr r0, [r0] + ldr r1, _080A0CF0 + lsls r4, r6, #2 + adds r1, r4, r1 + ldr r1, [r1] + movs r2, #0x80 + bl sub_080A0248 + ldr r0, _080A0CF4 + adds r5, r5, r0 + ldr r0, [r5] + ldr r1, _080A0CF8 + adds r4, r4, r1 + ldr r1, [r4] + movs r2, #0x80 + bl sub_080A0248 +_080A0CE4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A0CEC: .4byte gUnknown_84EDAF0 +_080A0CF0: .4byte gUnknown_84EDA50 +_080A0CF4: .4byte gUnknown_84EDB00 +_080A0CF8: .4byte gUnknown_84EDA70 + thumb_func_end sub_080A0C5C + + thumb_func_start sub_080A0CFC +sub_080A0CFC: @ 0x080A0CFC + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + subs r0, r0, r3 + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + ldr r0, _080A0D30 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r2, [r1] + cmp r2, #0 + beq _080A0D2C + ldr r0, _080A0D34 + lsls r1, r3, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + movs r2, #0x80 + bl sub_080A0248 +_080A0D2C: + pop {r0} + bx r0 + .align 2, 0 +_080A0D30: .4byte gUnknown_84EDF30 +_080A0D34: .4byte gUnknown_84EDF10 + thumb_func_end sub_080A0CFC + + thumb_func_start sub_080A0D38 +sub_080A0D38: @ 0x080A0D38 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + ldr r1, _080A0D58 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A0D5C + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0D58: .4byte gUnknown_84EE070 +_080A0D5C: .4byte 0x06007800 + thumb_func_end sub_080A0D38 + + thumb_func_start sub_080A0D60 +sub_080A0D60: @ 0x080A0D60 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0D80 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0D84 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0D80: .4byte gUnknown_84EE498 +_080A0D84: .4byte 0x06005400 + thumb_func_end sub_080A0D60 + + thumb_func_start sub_080A0D88 +sub_080A0D88: @ 0x080A0D88 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + subs r0, r0, r1 + lsls r0, r0, #0x10 + movs r2, #0xe0 + lsls r2, r2, #0xb + ands r2, r0 + ldr r0, _080A0DB8 + lsrs r2, r2, #0xe + adds r2, r2, r0 + ldr r0, [r2] + ldr r2, _080A0DBC + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0DB8: .4byte gUnknown_84EE8E8 +_080A0DBC: .4byte gUnknown_84EE8C8 + thumb_func_end sub_080A0D88 + + thumb_func_start sub_080A0DC0 +sub_080A0DC0: @ 0x080A0DC0 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0DE0 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0DE4 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0DE0: .4byte gUnknown_84EE498 +_080A0DE4: .4byte 0x06007400 + thumb_func_end sub_080A0DC0 + + thumb_func_start sub_080A0DE8 +sub_080A0DE8: @ 0x080A0DE8 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0E08 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0E0C + movs r2, #0xc0 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0E08: .4byte gUnknown_84EEC08 +_080A0E0C: .4byte 0x06005540 + thumb_func_end sub_080A0DE8 + + thumb_func_start sub_080A0E10 +sub_080A0E10: @ 0x080A0E10 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0E30 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0E34 + movs r2, #0xc0 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0E30: .4byte gUnknown_84EEF18 +_080A0E34: .4byte 0x06005B40 + thumb_func_end sub_080A0E10 + + thumb_func_start sub_080A0E38 +sub_080A0E38: @ 0x080A0E38 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0E58 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0E5C + movs r2, #0xc0 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0E58: .4byte gUnknown_84EF228 +_080A0E5C: .4byte 0x06005B40 + thumb_func_end sub_080A0E38 + + thumb_func_start sub_080A0E60 +sub_080A0E60: @ 0x080A0E60 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0E80 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0E84 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0E80: .4byte gUnknown_84EF438 +_080A0E84: .4byte 0x06005C00 + thumb_func_end sub_080A0E60 + + thumb_func_start sub_080A0E88 +sub_080A0E88: @ 0x080A0E88 + push {lr} + lsls r2, r0, #0x10 + lsrs r0, r2, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080A0E9C + lsrs r0, r2, #0x11 + bl sub_080A1010 +_080A0E9C: + pop {r0} + bx r0 + thumb_func_end sub_080A0E88 + + thumb_func_start sub_080A0EA0 +sub_080A0EA0: @ 0x080A0EA0 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r1 + cmp r0, #0 + bne _080A0EB4 + lsrs r0, r1, #0x13 + bl sub_080A0F78 +_080A0EB4: + pop {r0} + bx r0 + thumb_func_end sub_080A0EA0 + + thumb_func_start sub_080A0EB8 +sub_080A0EB8: @ 0x080A0EB8 + push {r4, r5, lr} + lsls r4, r0, #0x10 + lsrs r0, r4, #0x10 + adds r5, r0, #0 + movs r0, #0x3f + ands r0, r5 + cmp r0, #1 + bne _080A0ECE + lsrs r0, r4, #0x16 + bl sub_080A0FE8 +_080A0ECE: + movs r0, #7 + ands r0, r5 + cmp r0, #1 + bne _080A0EDC + lsrs r0, r4, #0x13 + bl sub_080A0FC0 +_080A0EDC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0EB8 + + thumb_func_start sub_080A0EE4 +sub_080A0EE4: @ 0x080A0EE4 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xc0 + lsls r0, r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _080A0EF8 + lsrs r0, r1, #0x12 + bl sub_080A1038 +_080A0EF8: + pop {r0} + bx r0 + thumb_func_end sub_080A0EE4 + + thumb_func_start sub_080A0EFC +sub_080A0EFC: @ 0x080A0EFC + push {r4, lr} + lsls r4, r0, #0x10 + movs r0, #0xe0 + lsls r0, r0, #0xb + ands r0, r4 + cmp r0, #0 + bne _080A0F18 + lsrs r4, r4, #0x13 + adds r0, r4, #0 + bl sub_080A1088 + adds r0, r4, #0 + bl sub_080A10B4 +_080A0F18: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A0EFC + + thumb_func_start sub_080A0F20 +sub_080A0F20: @ 0x080A0F20 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xc0 + lsls r0, r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _080A0F34 + lsrs r0, r1, #0x12 + bl sub_080A10E0 +_080A0F34: + pop {r0} + bx r0 + thumb_func_end sub_080A0F20 + + thumb_func_start sub_080A0F38 +sub_080A0F38: @ 0x080A0F38 + push {lr} + lsls r1, r0, #0x10 + movs r0, #0xc0 + lsls r0, r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _080A0F4C + lsrs r0, r1, #0x12 + bl sub_080A114C +_080A0F4C: + pop {r0} + bx r0 + thumb_func_end sub_080A0F38 + + thumb_func_start sub_080A0F50 +sub_080A0F50: @ 0x080A0F50 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + ldr r1, _080A0F70 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A0F74 + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0F70: .4byte gUnknown_84EF548 +_080A0F74: .4byte 0x06003E00 + thumb_func_end sub_080A0F50 + + thumb_func_start sub_080A0F78 +sub_080A0F78: @ 0x080A0F78 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + ldr r0, _080A0FB0 + lsrs r4, r4, #0xe + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _080A0FB4 + movs r2, #0xc0 + lsls r2, r2, #1 + bl sub_080A0248 + ldr r0, _080A0FB8 + adds r4, r4, r0 + ldr r0, [r4] + ldr r1, _080A0FBC + movs r2, #0xa0 + lsls r2, r2, #2 + bl sub_080A0248 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A0FB0: .4byte gUnknown_84F0150 +_080A0FB4: .4byte 0x06007E00 +_080A0FB8: .4byte gUnknown_84F015C +_080A0FBC: .4byte 0x06007A00 + thumb_func_end sub_080A0F78 + + thumb_func_start sub_080A0FC0 +sub_080A0FC0: @ 0x080A0FC0 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + ldr r0, _080A0FE0 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A0FE4 + movs r2, #0x20 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A0FE0: .4byte gUnknown_84F0308 +_080A0FE4: .4byte 0x06007F00 + thumb_func_end sub_080A0FC0 + + thumb_func_start sub_080A0FE8 +sub_080A0FE8: @ 0x080A0FE8 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + ldr r1, _080A1008 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A100C + movs r2, #0x80 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A1008: .4byte gUnknown_84F0318 +_080A100C: .4byte 0x06007C00 + thumb_func_end sub_080A0FE8 + + thumb_func_start sub_080A1010 +sub_080A1010: @ 0x080A1010 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + ldr r1, _080A1030 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A1034 + movs r2, #0x80 + lsls r2, r2, #2 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A1030: .4byte gUnknown_84F0740 +_080A1034: .4byte 0x06005200 + thumb_func_end sub_080A1010 + + thumb_func_start sub_080A1038 +sub_080A1038: @ 0x080A1038 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + ldr r1, _080A1058 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A105C + movs r2, #0x90 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A1058: .4byte gUnknown_84F09A8 +_080A105C: .4byte 0x06007E00 + thumb_func_end sub_080A1038 + + thumb_func_start sub_080A1060 +sub_080A1060: @ 0x080A1060 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + ldr r0, _080A1080 + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldr r0, [r1] + ldr r1, _080A1084 + movs r2, #0xc0 + lsls r2, r2, #4 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A1080: .4byte gUnknown_84F89D0 +_080A1084: .4byte 0x06005E00 + thumb_func_end sub_080A1060 + + thumb_func_start sub_080A1088 +sub_080A1088: @ 0x080A1088 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + ldr r1, _080A10AC + lsrs r0, r0, #0xe + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A10B0 + movs r2, #0x80 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A10AC: .4byte gUnknown_84FCF70 +_080A10B0: .4byte 0x060052E0 + thumb_func_end sub_080A1088 + + thumb_func_start sub_080A10B4 +sub_080A10B4: @ 0x080A10B4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + ldr r1, _080A10D8 + lsrs r0, r0, #0xe + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080A10DC + movs r2, #0x80 + lsls r2, r2, #1 + bl sub_080A0248 + pop {r0} + bx r0 + .align 2, 0 +_080A10D8: .4byte gUnknown_84FCF7C +_080A10DC: .4byte 0x060050E0 + thumb_func_end sub_080A10B4 + + thumb_func_start sub_080A10E0 +sub_080A10E0: @ 0x080A10E0 + push {lr} + lsls r0, r0, #0x10 + ldr r2, _080A1130 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0xe + adds r1, r1, r2 + ldr r0, [r1] + ldr r1, _080A1134 + movs r2, #0x10 + bl CpuSet + ldr r0, _080A1138 + ldrh r2, [r0, #4] + lsls r2, r2, #0x15 + lsrs r2, r2, #0x1b + ldrh r3, [r0, #6] + lsls r3, r3, #0x11 + lsrs r3, r3, #0x11 + movs r0, #0x80 + movs r1, #0x10 + bl sub_0806F410 + ldr r0, _080A113C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080A112A + ldr r1, _080A1140 + ldr r0, _080A1144 + str r0, [r1] + ldr r1, _080A1148 + movs r0, #0x20 + strh r0, [r1] +_080A112A: + pop {r0} + bx r0 + .align 2, 0 +_080A1130: .4byte gUnknown_84FCF88 +_080A1134: .4byte gUnknown_20374B4 +_080A1138: .4byte gUnknown_2037C74 +_080A113C: .4byte sub_08149EBC +_080A1140: .4byte gUnknown_3000F44 +_080A1144: .4byte sub_080A0F38 +_080A1148: .4byte gUnknown_3000F3C + thumb_func_end sub_080A10E0 + + thumb_func_start sub_080A114C +sub_080A114C: @ 0x080A114C + push {lr} + lsls r0, r0, #0x10 + ldr r2, _080A11A4 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0xe + adds r1, r1, r2 + ldr r0, [r1] + ldr r1, _080A11A8 + movs r2, #0x10 + bl CpuSet + ldr r0, _080A11AC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080A119E + ldr r0, _080A11B0 + ldrh r2, [r0, #4] + lsls r2, r2, #0x15 + lsrs r2, r2, #0x1b + ldrh r3, [r0, #6] + lsls r3, r3, #0x11 + lsrs r3, r3, #0x11 + movs r0, #0x80 + movs r1, #0x10 + bl sub_0806F410 + ldr r1, _080A11B4 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080A119E + ldr r0, _080A11B8 + str r1, [r0] +_080A119E: + pop {r0} + bx r0 + .align 2, 0 +_080A11A4: .4byte gUnknown_84FCF88 +_080A11A8: .4byte gUnknown_20374B4 +_080A11AC: .4byte sub_08149EBC +_080A11B0: .4byte gUnknown_2037C74 +_080A11B4: .4byte gUnknown_3000F3C +_080A11B8: .4byte gUnknown_3000F44 + thumb_func_end sub_080A114C + + thumb_func_start sub_080A11BC +sub_080A11BC: @ 0x080A11BC + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + ldr r6, _080A11F4 + adds r1, r6, #0 + bl sub_08034370 + lsls r4, r4, #1 + ldr r1, _080A11F8 + adds r1, r4, r1 + lsrs r5, r5, #0x11 + adds r0, r6, #0 + adds r2, r5, #0 + bl CpuSet + ldr r0, _080A11FC + adds r4, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl CpuSet + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A11F4: .4byte gUnknown_2037C88 +_080A11F8: .4byte gUnknown_20373B4 +_080A11FC: .4byte gUnknown_20377B4 + thumb_func_end sub_080A11BC + + thumb_func_start sub_080A1200 +sub_080A1200: @ 0x080A1200 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r4, r4, #0xf + ldr r1, _080A1230 + adds r1, r4, r1 + lsrs r5, r5, #0x11 + adds r2, r5, #0 + bl CpuSet + ldr r0, _080A1234 + adds r4, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl CpuSet + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A1230: .4byte gUnknown_20373B4 +_080A1234: .4byte gUnknown_20377B4 + thumb_func_end sub_080A1200 + + thumb_func_start sub_080A1238 +sub_080A1238: @ 0x080A1238 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r4, r4, #0x10 + lsls r5, r5, #0x10 + mov r0, sp + strh r6, [r0] + lsrs r4, r4, #0xf + ldr r1, _080A1280 + adds r1, r4, r1 + lsrs r5, r5, #0x11 + movs r0, #0x80 + lsls r0, r0, #0x11 + orrs r5, r0 + mov r0, sp + adds r2, r5, #0 + bl CpuSet + mov r0, sp + adds r0, #2 + strh r6, [r0] + ldr r1, _080A1284 + adds r4, r4, r1 + adds r1, r4, #0 + adds r2, r5, #0 + bl CpuSet + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A1280: .4byte gUnknown_20373B4 +_080A1284: .4byte gUnknown_20377B4 + thumb_func_end sub_080A1238 + + thumb_func_start sub_080A1288 +sub_080A1288: @ 0x080A1288 + push {r4, r5, lr} + ldr r4, _080A12D0 + ldrb r1, [r4, #8] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080A12CA + ldr r1, _080A12D4 + movs r2, #0xa0 + lsls r2, r2, #0x13 + ldr r0, _080A12D8 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _080A12DC + str r1, [r0, #8] + ldr r0, [r0, #8] + ldr r0, _080A12E0 + str r3, [r0] + ldrb r1, [r4, #9] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _080A12CA + ldrb r1, [r4, #7] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080A12CA + bl sub_080A2230 +_080A12CA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A12D0: .4byte gUnknown_2037C74 +_080A12D4: .4byte gUnknown_20377B4 +_080A12D8: .4byte 0x040000D4 +_080A12DC: .4byte 0x80000200 +_080A12E0: .4byte gUnknown_2037C84 + thumb_func_end sub_080A1288 + + thumb_func_start sub_080A12E4 +sub_080A12E4: @ 0x080A12E4 + push {lr} + ldr r0, _080A12F4 + ldr r0, [r0] + cmp r0, #0 + beq _080A12F8 + movs r0, #0xff + b _080A1330 + .align 2, 0 +_080A12F4: .4byte gUnknown_2037C84 +_080A12F8: + ldr r0, _080A130C + ldrb r0, [r0, #9] + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _080A1310 + bl sub_080A19A0 + b _080A131E + .align 2, 0 +_080A130C: .4byte gUnknown_2037C74 +_080A1310: + cmp r1, #1 + bne _080A131A + bl sub_080A1D00 + b _080A131E +_080A131A: + bl sub_080A2114 +_080A131E: + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080A1334 + ldr r0, _080A1338 + ldr r0, [r0] + movs r1, #0 + orrs r0, r1 + str r0, [r2] + adds r0, r3, #0 +_080A1330: + pop {r1} + bx r1 + .align 2, 0 +_080A1334: .4byte gUnknown_2037C84 +_080A1338: .4byte gUnknown_2037C74 + thumb_func_end sub_080A12E4 + + thumb_func_start sub_080A133C +sub_080A133C: @ 0x080A133C + push {r4, lr} + movs r4, #0 +_080A1340: + adds r0, r4, #0 + bl sub_080A183C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080A1340 + bl sub_080A1898 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A133C + + thumb_func_start sub_080A135C +sub_080A135C: @ 0x080A135C + push {r4, r5, r6, r7, lr} + movs r0, #0xa0 + lsls r0, r0, #0x13 + mov ip, r0 + movs r4, #0 + ldr r7, _080A1390 + ldr r6, _080A1394 + ldr r5, _080A1398 +_080A136C: + lsls r1, r4, #1 + adds r3, r1, r7 + mov r0, ip + adds r2, r1, r0 + ldrh r0, [r2] + strh r0, [r3] + adds r1, r1, r6 + ldrh r0, [r2] + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r5 + bls _080A136C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A1390: .4byte gUnknown_20373B4 +_080A1394: .4byte gUnknown_20377B4 +_080A1398: .4byte 0x000001FF + thumb_func_end sub_080A135C + + thumb_func_start sub_080A139C +sub_080A139C: @ 0x080A139C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r0, [sp, #0x18] + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov ip, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r5, _080A13CC + ldrb r1, [r5, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A13D0 + movs r0, #0 + b _080A14C8 + .align 2, 0 +_080A13CC: .4byte gUnknown_2037C74 +_080A13D0: + ldrb r0, [r5, #0xa] + movs r3, #0x79 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r2, r0 + movs r0, #0x10 + orrs r2, r0 + strb r2, [r5, #0xa] + lsls r0, r6, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bge _080A13FE + lsls r0, r2, #0x19 + lsrs r0, r0, #0x1c + rsbs r1, r1, #0 + adds r0, r0, r1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #3 + ands r2, r3 + orrs r2, r0 + strb r2, [r5, #0xa] + movs r6, #0 +_080A13FE: + str r4, [r5] + movs r4, #0x3f + adds r1, r6, #0 + ands r1, r4 + ldrb r2, [r5, #4] + movs r3, #0x40 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #4] + ands r6, r4 + ldrb r0, [r5, #8] + ands r3, r0 + orrs r3, r6 + strb r3, [r5, #8] + movs r0, #0x1f + mov r1, ip + ands r1, r0 + lsls r1, r1, #6 + ldrh r2, [r5, #4] + ldr r0, _080A146C + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + lsls r2, r7, #3 + ldrb r1, [r5, #5] + movs r0, #7 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + ldr r1, _080A1470 + mov r0, r8 + ands r1, r0 + ldrh r2, [r5, #6] + ldr r0, _080A1474 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #6] + ldrb r0, [r5, #7] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #7] + ldrb r1, [r5, #9] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #9] + cmp ip, r7 + bhs _080A1478 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r3, r0 + b _080A147C + .align 2, 0 +_080A146C: .4byte 0xFFFFF83F +_080A1470: .4byte 0x00007FFF +_080A1474: .4byte 0xFFFF8000 +_080A1478: + movs r0, #0x40 + orrs r3, r0 +_080A147C: + strb r3, [r5, #8] + bl sub_080A12E4 + ldr r4, _080A14D4 + ldrb r1, [r4, #8] + lsrs r5, r1, #7 + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #8] + ldr r0, _080A14D8 + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _080A14DC + bl CpuSet + ldr r1, _080A14E0 + movs r0, #0 + str r0, [r1] + ldrb r1, [r4, #9] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _080A14B8 + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A14B8 + bl sub_080A2230 +_080A14B8: + ldr r2, _080A14D4 + lsls r3, r5, #7 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #8] + movs r0, #1 +_080A14C8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A14D4: .4byte gUnknown_2037C74 +_080A14D8: .4byte gUnknown_20377B4 +_080A14DC: .4byte 0x04000100 +_080A14E0: .4byte gUnknown_2037C84 + thumb_func_end sub_080A139C + + thumb_func_start sub_080A14E4 +sub_080A14E4: @ 0x080A14E4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + mov r8, r0 + adds r4, r1, #0 + adds r6, r2, #0 + ldr r5, [sp, #0x1c] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r3, [sp, #4] + bl sub_080A135C + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r5, [sp] + mov r0, r8 + adds r1, r4, #0 + adds r2, r6, #0 + ldr r3, [sp, #4] + bl sub_080A139C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080A14E4 + + thumb_func_start sub_080A152C +sub_080A152C: @ 0x080A152C + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r5, #0 +_080A1536: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _080A1584 + adds r4, r0, r1 + ldrb r0, [r4, #4] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080A1594 + ldr r2, [r4] + ldrb r0, [r2, #8] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + cmp r0, r7 + bne _080A1594 + ldrh r1, [r4, #6] + lsls r1, r1, #0x14 + lsrs r1, r1, #0x19 + ldrb r0, [r2, #0xb] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + cmp r1, r0 + bne _080A1572 + adds r0, r4, #0 + bl sub_080A17C8 + ldrb r0, [r4, #4] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080A1594 +_080A1572: + ldrb r0, [r4, #8] + cmp r0, #0 + bne _080A1588 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A15A4 + b _080A158C + .align 2, 0 +_080A1584: .4byte gUnknown_2037BB4 +_080A1588: + subs r0, #1 + strb r0, [r4, #8] +_080A158C: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A1708 +_080A1594: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _080A1536 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080A152C + + thumb_func_start sub_080A15A4 +sub_080A15A4: @ 0x080A15A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + movs r6, #0 + ldrh r1, [r4, #6] + lsls r1, r1, #0x14 + lsrs r1, r1, #0x19 + ldr r3, [r4] + ldrb r0, [r3, #9] + lsls r2, r0, #0x19 + lsrs r0, r2, #0x1b + adds r5, r1, #0 + muls r5, r0, r5 + ldrb r1, [r3, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080A1640 + lsrs r0, r2, #0x1b + cmp r6, r0 + bhs _080A168C + ldr r0, _080A1630 + mov ip, r0 + ldr r7, _080A1634 +_080A15D8: + ldr r0, [r4, #4] + lsls r0, r0, #0xb + lsrs r0, r0, #0x16 + lsls r0, r0, #1 + add r0, ip + ldr r1, [r3, #4] + lsls r2, r5, #1 + adds r1, r2, r1 + ldrh r1, [r1] + strh r1, [r0] + ldr r0, [r4, #4] + lsls r0, r0, #0xb + lsrs r0, r0, #0x16 + lsls r0, r0, #1 + adds r0, r0, r7 + ldr r1, [r4] + ldr r1, [r1, #4] + adds r2, r2, r1 + ldrh r1, [r2] + strh r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, [r4, #4] + lsls r1, r2, #0xb + lsrs r1, r1, #0x16 + adds r1, #1 + ldr r0, _080A1638 + ands r1, r0 + lsls r1, r1, #0xb + ldr r0, _080A163C + ands r0, r2 + orrs r0, r1 + str r0, [r4, #4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r3, [r4] + ldrb r0, [r3, #9] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + cmp r6, r0 + blo _080A15D8 + b _080A168C + .align 2, 0 +_080A1630: .4byte gUnknown_20373B4 +_080A1634: .4byte gUnknown_20377B4 +_080A1638: .4byte 0x000003FF +_080A163C: .4byte 0xFFE007FF +_080A1640: + lsrs r0, r2, #0x1b + cmp r6, r0 + bhs _080A168C + ldr r3, _080A16F8 +_080A1648: + ldr r1, [r4, #4] + lsls r1, r1, #0xb + lsrs r1, r1, #0x16 + lsls r1, r1, #1 + adds r1, r1, r3 + ldr r0, [r4] + ldr r2, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, [r4, #4] + lsls r1, r2, #0xb + lsrs r1, r1, #0x16 + adds r1, #1 + ldr r0, _080A16FC + ands r1, r0 + lsls r1, r1, #0xb + ldr r0, _080A1700 + ands r0, r2 + orrs r0, r1 + str r0, [r4, #4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [r4] + ldrb r0, [r0, #9] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + cmp r6, r0 + blo _080A1648 +_080A168C: + ldrh r0, [r4, #4] + lsls r0, r0, #0x15 + lsrs r0, r0, #0x17 + lsls r0, r0, #0xb + ldr r1, [r4, #4] + ldr r2, _080A1700 + ands r1, r2 + orrs r1, r0 + str r1, [r4, #4] + ldr r3, [r4] + ldrb r0, [r3, #0xa] + strb r0, [r4, #8] + ldrh r2, [r4, #6] + lsls r0, r2, #0x14 + lsrs r0, r0, #0x19 + adds r0, #1 + movs r1, #0x7f + ands r0, r1 + lsls r0, r0, #5 + ldr r5, _080A1704 + adds r1, r5, #0 + ands r1, r2 + orrs r1, r0 + strh r1, [r4, #6] + lsls r1, r1, #0x14 + lsrs r1, r1, #0x19 + ldrb r0, [r3, #0xb] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + cmp r1, r0 + blt _080A16DC + ldrb r0, [r4, #9] + cmp r0, #0 + beq _080A16D4 + subs r0, #1 + strb r0, [r4, #9] +_080A16D4: + ldrh r1, [r4, #6] + adds r0, r5, #0 + ands r0, r1 + strh r0, [r4, #6] +_080A16DC: + ldrh r0, [r4, #4] + lsls r0, r0, #0x15 + lsrs r0, r0, #0x1b + movs r1, #1 + lsls r1, r0 + mov r2, r8 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A16F8: .4byte gUnknown_20377B4 +_080A16FC: .4byte 0x000003FF +_080A1700: .4byte 0xFFE007FF +_080A1704: .4byte 0xFFFFF01F + thumb_func_end sub_080A15A4 + + thumb_func_start sub_080A1708 +sub_080A1708: @ 0x080A1708 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r3, _080A1760 + ldrb r1, [r3, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A17BC + ldrh r0, [r4, #4] + lsls r0, r0, #0x15 + lsrs r6, r0, #0x17 + asrs r1, r6, #4 + movs r5, #1 + adds r0, r5, #0 + lsls r0, r1 + ldr r1, [r3] + ands r0, r1 + cmp r0, #0 + beq _080A17BC + ldr r2, [r4] + ldrb r1, [r2, #8] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080A1764 + ldrb r1, [r3, #4] + lsls r1, r1, #0x1a + ldrb r0, [r3, #8] + lsls r0, r0, #0x1a + cmp r1, r0 + beq _080A17BC + adds r0, r6, #0 + ldrb r1, [r2, #9] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1b + ldrh r2, [r3, #4] + lsls r2, r2, #0x15 + lsrs r2, r2, #0x1b + ldrh r3, [r3, #6] + lsls r3, r3, #0x11 + lsrs r3, r3, #0x11 + bl sub_0806F410 + b _080A17BC + .align 2, 0 +_080A1760: .4byte gUnknown_2037C74 +_080A1764: + ldrb r1, [r3, #4] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080A17BC + ldrb r0, [r4, #8] + ldrb r1, [r2, #0xa] + cmp r0, r1 + beq _080A17BC + ldrh r0, [r4, #6] + lsls r0, r0, #0x14 + lsrs r0, r0, #0x19 + ldrb r1, [r2, #9] + lsls r1, r1, #0x19 + lsrs r2, r1, #0x1b + adds r5, r0, #0 + muls r5, r2, r5 + movs r3, #0 + adds r1, r2, #0 + cmp r3, r1 + bhs _080A17BC + ldr r6, _080A17C4 +_080A1790: + ldrh r1, [r4, #4] + lsls r1, r1, #0x15 + lsrs r1, r1, #0x17 + adds r1, r1, r3 + lsls r1, r1, #1 + adds r1, r1, r6 + ldr r2, [r4] + adds r0, r5, r3 + ldr r2, [r2, #4] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, [r4] + ldrb r0, [r0, #9] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + cmp r3, r0 + blo _080A1790 +_080A17BC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A17C4: .4byte gUnknown_20377B4 + thumb_func_end sub_080A1708 + + thumb_func_start sub_080A17C8 +sub_080A17C8: @ 0x080A17C8 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + cmp r0, #0 + bne _080A1818 + ldr r2, [r3] + ldrb r0, [r2, #0xb] + lsrs r0, r0, #5 + cmp r0, #0 + bne _080A1808 + ldrh r1, [r3, #6] + ldr r0, _080A1800 + ands r0, r1 + strh r0, [r3, #6] + ldrb r0, [r2, #0xa] + strb r0, [r3, #8] + ldrb r0, [r2, #0xc] + strb r0, [r3, #9] + ldrh r0, [r3, #4] + lsls r0, r0, #0x15 + lsrs r0, r0, #0x17 + lsls r0, r0, #0xb + ldr r1, [r3, #4] + ldr r2, _080A1804 + ands r1, r2 + orrs r1, r0 + str r1, [r3, #4] + b _080A181C + .align 2, 0 +_080A1800: .4byte 0xFFFFF01F +_080A1804: .4byte 0xFFE007FF +_080A1808: + cmp r0, #0 + blt _080A181C + cmp r0, #2 + bgt _080A181C + ldrh r0, [r2] + bl sub_080A1820 + b _080A181C +_080A1818: + subs r0, #1 + strb r0, [r3, #9] +_080A181C: + pop {r0} + bx r0 + thumb_func_end sub_080A17C8 + + thumb_func_start sub_080A1820 +sub_080A1820: @ 0x080A1820 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A196C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _080A1836 + bl sub_080A183C +_080A1836: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A1820 + + thumb_func_start sub_080A183C +sub_080A183C: @ 0x080A183C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A1884 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, _080A1888 + str r0, [r1] + ldrb r2, [r1, #4] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #4] + ldrh r2, [r1, #4] + ldr r0, _080A188C + ands r0, r2 + strh r0, [r1, #4] + ldr r0, [r1, #4] + ldr r2, _080A1890 + ands r0, r2 + str r0, [r1, #4] + ldrh r2, [r1, #6] + ldr r0, _080A1894 + ands r0, r2 + strh r0, [r1, #6] + ldrb r2, [r1, #4] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #4] + movs r0, #0 + strb r0, [r1, #8] + strb r0, [r1, #9] + bx lr + .align 2, 0 +_080A1884: .4byte gUnknown_2037BB4 +_080A1888: .4byte gUnknown_84FCF98 +_080A188C: .4byte 0xFFFFF803 +_080A1890: .4byte 0xFFE007FF +_080A1894: .4byte 0xFFFFF01F + thumb_func_end sub_080A183C + + thumb_func_start sub_080A1898 +sub_080A1898: @ 0x080A1898 + ldr r2, _080A1900 + movs r0, #0 + str r0, [r2] + subs r0, #0x40 + ldrb r1, [r2, #4] + ands r0, r1 + strb r0, [r2, #4] + ldrh r1, [r2, #4] + ldr r0, _080A1904 + ands r0, r1 + strh r0, [r2, #4] + ldrb r1, [r2, #5] + movs r0, #7 + ands r0, r1 + strb r0, [r2, #5] + ldrh r1, [r2, #6] + ldr r0, _080A1908 + ands r0, r1 + strh r0, [r2, #6] + ldrb r1, [r2, #7] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #7] + movs r0, #0 + strb r0, [r2, #8] + ldrb r1, [r2, #9] + movs r3, #5 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #9 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2, #9] + ldrb r1, [r2, #0xa] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xa] + ldr r0, [r2, #8] + ldr r1, _080A190C + ands r0, r1 + str r0, [r2, #8] + ldrb r0, [r2, #0xa] + ands r3, r0 + movs r0, #0x79 + rsbs r0, r0, #0 + ands r3, r0 + movs r0, #0x10 + orrs r3, r0 + strb r3, [r2, #0xa] + bx lr + .align 2, 0 +_080A1900: .4byte gUnknown_2037C74 +_080A1904: .4byte 0xFFFFF83F +_080A1908: .4byte 0xFFFF8000 +_080A190C: .4byte 0xFFFE0FFF + thumb_func_end sub_080A1898 + + thumb_func_start sub_080A1910 +sub_080A1910: @ 0x080A1910 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A196C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x10 + beq _080A1934 + ldr r1, _080A1938 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #4] + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #4] +_080A1934: + pop {r0} + bx r0 + .align 2, 0 +_080A1938: .4byte gUnknown_2037BB4 + thumb_func_end sub_080A1910 + + thumb_func_start sub_080A193C +sub_080A193C: @ 0x080A193C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A196C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x10 + beq _080A1962 + ldr r0, _080A1968 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #4] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #4] +_080A1962: + pop {r0} + bx r0 + .align 2, 0 +_080A1968: .4byte gUnknown_2037BB4 + thumb_func_end sub_080A193C + + thumb_func_start sub_080A196C +sub_080A196C: @ 0x080A196C + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + ldr r3, _080A198C +_080A1976: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, r2 + bne _080A1990 + adds r0, r1, #0 + b _080A199C + .align 2, 0 +_080A198C: .4byte gUnknown_2037BB4 +_080A1990: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _080A1976 + movs r0, #0x10 +_080A199C: + pop {r1} + bx r1 + thumb_func_end sub_080A196C + + thumb_func_start sub_080A19A0 +sub_080A19A0: @ 0x080A19A0 + push {r4, r5, r6, r7, lr} + ldr r4, _080A19B4 + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A19B8 + movs r0, #0 + b _080A1AD4 + .align 2, 0 +_080A19B4: .4byte gUnknown_2037C74 +_080A19B8: + bl sub_080A2284 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A19C6 + ldrb r0, [r4, #7] + b _080A1AD2 +_080A19C6: + ldrb r1, [r4, #0xa] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080A19FA + ldrb r2, [r4, #4] + lsls r1, r2, #0x1a + ldrb r0, [r4, #8] + lsls r0, r0, #0x1a + cmp r1, r0 + bhs _080A19F2 + lsrs r0, r1, #0x1a + adds r0, #1 + movs r1, #0x3f + ands r0, r1 + movs r1, #0x40 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #4] + movs r0, #2 + b _080A1AD4 +_080A19F2: + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4, #4] +_080A19FA: + movs r5, #0 + ldr r2, _080A1A10 + ldrb r1, [r2, #0xa] + movs r0, #4 + ands r0, r1 + adds r7, r2, #0 + cmp r0, #0 + bne _080A1A14 + ldrh r4, [r7] + b _080A1A1A + .align 2, 0 +_080A1A10: .4byte gUnknown_2037C74 +_080A1A14: + ldrh r4, [r7, #2] + movs r5, #0x80 + lsls r5, r5, #1 +_080A1A1A: + cmp r4, #0 + beq _080A1A4C + ldr r7, _080A1A88 + adds r6, r7, #0 +_080A1A22: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _080A1A3E + ldrh r2, [r6, #4] + lsls r2, r2, #0x15 + lsrs r2, r2, #0x1b + ldrh r3, [r6, #6] + lsls r3, r3, #0x11 + lsrs r3, r3, #0x11 + adds r0, r5, #0 + movs r1, #0x10 + bl sub_0806F410 +_080A1A3E: + lsrs r4, r4, #1 + adds r0, r5, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #0 + bne _080A1A22 +_080A1A4C: + ldrb r2, [r7, #0xa] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r4, #5 + rsbs r4, r4, #0 + ands r4, r2 + orrs r4, r1 + strb r4, [r7, #0xa] + movs r0, #4 + ands r0, r4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080A1AD0 + ldrh r6, [r7, #4] + lsls r2, r6, #0x15 + ldrb r0, [r7, #5] + lsls r5, r0, #0x18 + lsrs r1, r2, #0x1b + lsrs r0, r5, #0x1b + cmp r1, r0 + bne _080A1A8C + str r3, [r7] + movs r0, #2 + orrs r4, r0 + strb r4, [r7, #0xa] + b _080A1AD0 + .align 2, 0 +_080A1A88: .4byte gUnknown_2037C74 +_080A1A8C: + ldrb r1, [r7, #8] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080A1AA8 + lsrs r3, r2, #0x1b + lsls r0, r4, #0x19 + lsrs r0, r0, #0x1c + adds r3, r0, r3 + lsrs r0, r5, #0x1b + cmp r3, r0 + ble _080A1ABE + adds r3, r0, #0 + b _080A1ABE +_080A1AA8: + lsrs r3, r2, #0x1b + lsls r0, r4, #0x19 + lsrs r0, r0, #0x1c + subs r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + asrs r0, r0, #0x18 + lsrs r1, r5, #0x1b + cmp r0, r1 + bge _080A1ABE + adds r3, r1, #0 +_080A1ABE: + lsls r0, r3, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #6 + ldr r1, _080A1ADC + ands r1, r6 + orrs r1, r0 + strh r1, [r7, #4] +_080A1AD0: + ldrb r0, [r7, #7] +_080A1AD2: + lsrs r0, r0, #7 +_080A1AD4: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A1ADC: .4byte 0xFFFFF83F + thumb_func_end sub_080A19A0 + + thumb_func_start sub_080A1AE0 +sub_080A1AE0: @ 0x080A1AE0 + push {r4, r5, r6, r7, lr} + adds r1, r0, #0 + movs r3, #0 + cmp r1, #0 + beq _080A1B1E + ldr r7, _080A1B24 +_080A1AEC: + movs r0, #1 + ands r0, r1 + lsrs r4, r1, #1 + adds r5, r3, #0 + adds r5, #0x10 + cmp r0, #0 + beq _080A1B14 + movs r2, #0 + adds r6, r7, #0 +_080A1AFE: + adds r0, r3, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r0] + mvns r1, r1 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080A1AFE +_080A1B14: + adds r1, r4, #0 + lsls r0, r5, #0x10 + lsrs r3, r0, #0x10 + cmp r1, #0 + bne _080A1AEC +_080A1B1E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A1B24: .4byte gUnknown_20377B4 + thumb_func_end sub_080A1AE0 + + thumb_func_start sub_080A1B28 +sub_080A1B28: @ 0x080A1B28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #4] + movs r0, #0 + mov sb, r0 + cmp r4, #0 + beq _080A1BE4 + lsls r1, r1, #0x18 + str r1, [sp, #8] +_080A1B52: + movs r0, #1 + ands r0, r4 + lsrs r4, r4, #1 + str r4, [sp, #0xc] + movs r1, #0x10 + add r1, sb + mov sl, r1 + cmp r0, #0 + beq _080A1BD6 + movs r4, #0 + ldr r2, _080A1BF4 + mov r8, r2 + ldr r1, [sp] + lsls r0, r1, #0x18 + ldr r2, [sp, #4] + lsls r1, r2, #0x18 + ldr r2, [sp, #8] + asrs r2, r2, #0x18 + mov ip, r2 + movs r5, #0x1f + asrs r7, r0, #0x18 + asrs r6, r1, #0x18 +_080A1B7E: + mov r0, sb + adds r2, r0, r4 + lsls r2, r2, #1 + add r2, r8 + ldr r1, [r2] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + add r1, ip + ands r1, r5 + ldrb r3, [r2] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r2] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x1b + adds r1, r1, r7 + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #5 + ldrh r3, [r2] + ldr r0, _080A1BF8 + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + ldr r1, [r2] + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + adds r1, r1, r6 + ands r1, r5 + lsls r1, r1, #2 + ldrb r3, [r2, #1] + movs r0, #0x7d + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080A1B7E +_080A1BD6: + ldr r4, [sp, #0xc] + mov r1, sl + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r4, #0 + bne _080A1B52 +_080A1BE4: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A1BF4: .4byte gUnknown_20377B4 +_080A1BF8: .4byte 0xFFFFFC1F + thumb_func_end sub_080A1B28 + + thumb_func_start sub_080A1BFC +sub_080A1BFC: @ 0x080A1BFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r1, r0, #0 + movs r3, #0 + cmp r1, #0 + beq _080A1C46 + ldr r0, _080A1C50 + mov r8, r0 + ldr r0, _080A1C54 + mov ip, r0 +_080A1C12: + movs r0, #1 + ands r0, r1 + lsrs r4, r1, #1 + adds r5, r3, #0 + adds r5, #0x10 + cmp r0, #0 + beq _080A1C3C + movs r2, #0 + mov r7, r8 + mov r6, ip +_080A1C26: + adds r0, r3, r2 + lsls r0, r0, #1 + adds r1, r0, r7 + adds r0, r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080A1C26 +_080A1C3C: + adds r1, r4, #0 + lsls r0, r5, #0x10 + lsrs r3, r0, #0x10 + cmp r1, #0 + bne _080A1C12 +_080A1C46: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A1C50: .4byte gUnknown_20377B4 +_080A1C54: .4byte gUnknown_20373B4 + thumb_func_end sub_080A1BFC + + thumb_func_start sub_080A1C58 +sub_080A1C58: @ 0x080A1C58 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080A1C78 + ldrb r2, [r3, #0xa] + movs r1, #0x79 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x10 + orrs r1, r2 + strb r1, [r3, #0xa] + bl sub_080A1C7C + pop {r0} + bx r0 + .align 2, 0 +_080A1C78: .4byte gUnknown_2037C74 + thumb_func_end sub_080A1C58 + + thumb_func_start sub_080A1C7C +sub_080A1C7C: @ 0x080A1C7C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r2, _080A1CF0 + ldrh r0, [r2, #4] + movs r3, #0xf8 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2, #4] + movs r1, #0x3f + ands r1, r4 + ldrb r3, [r2, #8] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #8] + ldrb r0, [r2, #7] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #7] + ldrb r1, [r2, #9] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + cmp r4, #2 + bne _080A1CCE + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _080A1CF4 + ldr r2, _080A1CF8 + mov r0, sp + bl CpuSet +_080A1CCE: + cmp r4, #0 + bne _080A1CE4 + mov r0, sp + adds r0, #2 + ldr r2, _080A1CFC + adds r1, r2, #0 + strh r1, [r0] + ldr r1, _080A1CF4 + ldr r2, _080A1CF8 + bl CpuSet +_080A1CE4: + bl sub_080A12E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A1CF0: .4byte gUnknown_2037C74 +_080A1CF4: .4byte gUnknown_20377B4 +_080A1CF8: .4byte 0x01000200 +_080A1CFC: .4byte 0x00007FFF + thumb_func_end sub_080A1C7C + + thumb_func_start sub_080A1D00 +sub_080A1D00: @ 0x080A1D00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r4, _080A1D1C + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A1D20 + movs r0, #0 + b _080A205A + .align 2, 0 +_080A1D1C: .4byte gUnknown_2037C74 +_080A1D20: + bl sub_080A2284 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A1D2E + ldrb r0, [r4, #7] + b _080A2058 +_080A1D2E: + ldrb r1, [r4, #0xa] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A1D44 + movs r2, #0x80 + lsls r2, r2, #1 + movs r0, #0x80 + lsls r0, r0, #2 + mov sl, r0 + b _080A1D4C +_080A1D44: + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #1 + mov sl, r1 +_080A1D4C: + ldr r1, _080A1D64 + ldrb r0, [r1, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + cmp r0, #1 + beq _080A1E0C + cmp r0, #1 + bgt _080A1D68 + cmp r0, #0 + beq _080A1D76 + b _080A1F5C + .align 2, 0 +_080A1D64: .4byte gUnknown_2037C74 +_080A1D68: + cmp r0, #2 + bne _080A1D6E + b _080A1E70 +_080A1D6E: + cmp r0, #3 + bne _080A1D74 + b _080A1EF8 +_080A1D74: + b _080A1F5C +_080A1D76: + adds r7, r2, #0 + cmp r7, sl + blo _080A1D7E + b _080A1F5C +_080A1D7E: + lsls r2, r7, #1 + ldr r0, _080A1E04 + adds r0, r2, r0 + ldr r1, [r0] + lsls r3, r1, #0x1b + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + mov ip, r0 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + mov r8, r1 + ldr r0, _080A1E08 + adds r2, r2, r0 + mov sb, r2 + ldr r1, [r2] + lsls r2, r1, #0x1b + lsrs r2, r2, #3 + movs r4, #0xfe + lsls r4, r4, #0x18 + adds r2, r2, r4 + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + subs r1, #2 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsrs r6, r2, #0x18 + asrs r2, r2, #0x18 + lsrs r3, r3, #3 + asrs r0, r3, #0x18 + cmp r2, r0 + bge _080A1DC8 + lsrs r6, r3, #0x18 +_080A1DC8: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + mov r2, ip + lsls r1, r2, #0x18 + cmp r0, ip + bge _080A1DD6 + lsrs r5, r1, #0x18 +_080A1DD6: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + mov r3, r8 + lsls r1, r3, #0x18 + cmp r0, r8 + bge _080A1DE4 + lsrs r4, r1, #0x18 +_080A1DE4: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x18 + asrs r0, r0, #0x13 + orrs r1, r0 + lsls r0, r4, #0x18 + asrs r0, r0, #0xe + orrs r1, r0 + mov r4, sb + strh r1, [r4] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, sl + blo _080A1D7E + b _080A1F5C + .align 2, 0 +_080A1E04: .4byte gUnknown_20373B4 +_080A1E08: .4byte gUnknown_20377B4 +_080A1E0C: + adds r7, r2, #0 + cmp r7, sl + blo _080A1E14 + b _080A1F5C +_080A1E14: + lsls r1, r7, #1 + ldr r0, _080A1E6C + adds r2, r1, r0 + ldr r1, [r2] + lsls r0, r1, #0x1b + lsrs r0, r0, #3 + movs r3, #0x80 + lsls r3, r3, #0x12 + adds r0, r0, r3 + lsrs r6, r0, #0x18 + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + adds r5, r0, #2 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + adds r4, r1, #2 + cmp r6, #0x1f + ble _080A1E3A + movs r6, #0x1f +_080A1E3A: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x1f + ble _080A1E44 + movs r5, #0x1f +_080A1E44: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x1f + ble _080A1E4E + movs r4, #0x1f +_080A1E4E: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x18 + asrs r0, r0, #0x13 + orrs r1, r0 + lsls r0, r4, #0x18 + asrs r0, r0, #0xe + orrs r1, r0 + strh r1, [r2] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, sl + blo _080A1E14 + b _080A1F5C + .align 2, 0 +_080A1E6C: .4byte gUnknown_20377B4 +_080A1E70: + adds r7, r2, #0 + cmp r7, sl + bhs _080A1F5C +_080A1E76: + lsls r2, r7, #1 + ldr r0, _080A1EF0 + adds r0, r2, r0 + ldr r1, [r0] + lsls r3, r1, #0x1b + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + mov ip, r0 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + mov r8, r1 + ldr r0, _080A1EF4 + adds r2, r2, r0 + ldr r1, [r2] + lsls r0, r1, #0x1b + lsrs r0, r0, #3 + movs r4, #0x80 + lsls r4, r4, #0x12 + adds r0, r0, r4 + lsrs r6, r0, #0x18 + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + adds r5, r0, #2 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + adds r4, r1, #2 + lsrs r3, r3, #3 + asrs r0, r3, #0x18 + cmp r6, r0 + ble _080A1EB4 + lsrs r6, r3, #0x18 +_080A1EB4: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + mov r3, ip + lsls r1, r3, #0x18 + cmp r0, ip + ble _080A1EC2 + lsrs r5, r1, #0x18 +_080A1EC2: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + mov r3, r8 + lsls r1, r3, #0x18 + cmp r0, r8 + ble _080A1ED0 + lsrs r4, r1, #0x18 +_080A1ED0: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x18 + asrs r0, r0, #0x13 + orrs r1, r0 + lsls r0, r4, #0x18 + asrs r0, r0, #0xe + orrs r1, r0 + strh r1, [r2] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, sl + blo _080A1E76 + b _080A1F5C + .align 2, 0 +_080A1EF0: .4byte gUnknown_20373B4 +_080A1EF4: .4byte gUnknown_20377B4 +_080A1EF8: + adds r7, r2, #0 + cmp r7, sl + bhs _080A1F5C + ldr r4, _080A1F84 + mov r8, r4 +_080A1F02: + lsls r0, r7, #1 + mov r1, r8 + adds r3, r0, r1 + ldr r1, [r3] + lsls r2, r1, #0x1b + lsrs r2, r2, #3 + movs r4, #0xfe + lsls r4, r4, #0x18 + adds r2, r2, r4 + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + subs r1, #2 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsrs r6, r2, #0x18 + cmp r2, #0 + bge _080A1F30 + movs r6, #0 +_080A1F30: + lsls r0, r5, #0x18 + cmp r0, #0 + bge _080A1F38 + movs r5, #0 +_080A1F38: + lsls r0, r4, #0x18 + cmp r0, #0 + bge _080A1F40 + movs r4, #0 +_080A1F40: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x18 + asrs r0, r0, #0x13 + orrs r1, r0 + lsls r0, r4, #0x18 + asrs r0, r0, #0xe + orrs r1, r0 + strh r1, [r3] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, sl + blo _080A1F02 +_080A1F5C: + ldr r0, _080A1F88 + ldrb r2, [r0, #0xa] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r3, #5 + rsbs r3, r3, #0 + ands r3, r2 + orrs r3, r1 + ldr r1, _080A1F88 + strb r3, [r1, #0xa] + movs r0, #4 + ands r0, r3 + cmp r0, #0 + beq _080A1F8C + ldrb r0, [r1, #7] + b _080A2058 + .align 2, 0 +_080A1F84: .4byte gUnknown_20377B4 +_080A1F88: .4byte gUnknown_2037C74 +_080A1F8C: + ldr r2, _080A1FA8 + ldrh r4, [r2, #4] + lsls r5, r4, #0x15 + lsrs r0, r5, #0x1b + lsls r2, r3, #0x19 + lsrs r1, r2, #0x1c + subs r0, r0, r1 + cmp r0, #0 + bge _080A1FB0 + ldr r0, _080A1FAC + ands r0, r4 + ldr r3, _080A1FA8 + strh r0, [r3, #4] + b _080A1FC6 + .align 2, 0 +_080A1FA8: .4byte gUnknown_2037C74 +_080A1FAC: .4byte 0xFFFFF83F +_080A1FB0: + lsrs r1, r5, #0x1b + lsrs r0, r2, #0x1c + subs r1, r1, r0 + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #6 + ldr r0, _080A1FEC + ands r0, r4 + orrs r0, r1 + ldr r4, _080A1FF0 + strh r0, [r4, #4] +_080A1FC6: + ldr r1, _080A1FF0 + ldrh r0, [r1, #4] + movs r1, #0xf8 + lsls r1, r1, #3 + ands r1, r0 + cmp r1, #0 + bne _080A2054 + ldr r2, _080A1FF0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + cmp r0, #1 + beq _080A2018 + cmp r0, #1 + bgt _080A1FF4 + cmp r0, #0 + beq _080A1FFE + b _080A2040 + .align 2, 0 +_080A1FEC: .4byte 0xFFFFF83F +_080A1FF0: .4byte gUnknown_2037C74 +_080A1FF4: + cmp r0, #2 + beq _080A1FFE + cmp r0, #3 + beq _080A2034 + b _080A2040 +_080A1FFE: + ldr r0, _080A200C + ldr r1, _080A2010 + ldr r2, _080A2014 + bl CpuSet + b _080A2040 + .align 2, 0 +_080A200C: .4byte gUnknown_20373B4 +_080A2010: .4byte gUnknown_20377B4 +_080A2014: .4byte 0x04000100 +_080A2018: + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp] + ldr r1, _080A202C + ldr r2, _080A2030 + mov r0, sp + bl CpuSet + b _080A2040 + .align 2, 0 +_080A202C: .4byte gUnknown_20377B4 +_080A2030: .4byte 0x05000100 +_080A2034: + str r1, [sp, #4] + add r0, sp, #4 + ldr r1, _080A206C + ldr r2, _080A2070 + bl CpuSet +_080A2040: + ldr r2, _080A2074 + ldrb r1, [r2, #9] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldrb r0, [r2, #0xa] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0xa] +_080A2054: + ldr r3, _080A2074 + ldrb r0, [r3, #7] +_080A2058: + lsrs r0, r0, #7 +_080A205A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A206C: .4byte gUnknown_20377B4 +_080A2070: .4byte 0x05000100 +_080A2074: .4byte gUnknown_2037C74 + thumb_func_end sub_080A1D00 + + thumb_func_start sub_080A2078 +sub_080A2078: @ 0x080A2078 + push {r4, r5, r6, r7, lr} + ldr r5, [sp, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r7, _080A2100 + str r0, [r7] + movs r0, #0x3f + ands r1, r0 + ldrb r4, [r7, #4] + movs r6, #0x40 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r7, #4] + ldrb r0, [r7, #8] + ands r6, r0 + orrs r6, r1 + strb r6, [r7, #8] + movs r0, #0x1f + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #6 + ldrh r4, [r7, #4] + ldr r0, _080A2104 + ands r0, r4 + orrs r0, r1 + strh r0, [r7, #4] + lsls r4, r3, #3 + ldrb r1, [r7, #5] + movs r0, #7 + ands r0, r1 + orrs r0, r4 + strb r0, [r7, #5] + ldrb r0, [r7, #7] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r7, #7] + ldrb r1, [r7, #9] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + movs r1, #1 + ands r5, r1 + lsls r5, r5, #2 + subs r1, #6 + ands r0, r1 + orrs r0, r5 + subs r1, #4 + ands r0, r1 + strb r0, [r7, #9] + cmp r2, r3 + bhs _080A2108 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r6, r0 + b _080A210C + .align 2, 0 +_080A2100: .4byte gUnknown_2037C74 +_080A2104: .4byte 0xFFFFF83F +_080A2108: + movs r0, #0x40 + orrs r6, r0 +_080A210C: + strb r6, [r7, #8] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080A2078 + + thumb_func_start sub_080A2114 +sub_080A2114: @ 0x080A2114 + push {r4, r5, r6, r7, lr} + ldr r2, _080A2128 + ldrb r1, [r2, #7] + movs r0, #0x80 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + bne _080A212C + movs r0, #0 + b _080A2224 + .align 2, 0 +_080A2128: .4byte gUnknown_2037C74 +_080A212C: + ldrb r2, [r4, #4] + lsls r1, r2, #0x1a + ldrb r3, [r4, #8] + lsls r0, r3, #0x1a + cmp r1, r0 + bhs _080A214E + lsrs r0, r1, #0x1a + adds r0, #1 + movs r1, #0x3f + ands r0, r1 + movs r1, #0x40 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #4] + movs r0, #2 + b _080A2224 +_080A214E: + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4, #4] + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + bne _080A21AC + ldrh r1, [r4, #4] + lsls r0, r1, #0x15 + lsrs r0, r0, #0x1b + adds r0, #1 + movs r7, #0x1f + ands r0, r7 + lsls r0, r0, #6 + ldr r6, _080A21A8 + adds r3, r6, #0 + ands r3, r1 + orrs r3, r0 + strh r3, [r4, #4] + lsls r5, r3, #0x15 + ldrb r0, [r4, #5] + lsrs r1, r5, #0x1b + lsrs r0, r0, #3 + cmp r1, r0 + bls _080A21F8 + ldrb r2, [r4, #9] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1f + adds r1, #1 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #3 + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #9] + lsrs r0, r5, #0x1b + subs r0, #1 + ands r0, r7 + lsls r0, r0, #6 + ands r3, r6 + b _080A21F4 + .align 2, 0 +_080A21A8: .4byte 0xFFFFF83F +_080A21AC: + ldrh r2, [r4, #4] + lsls r1, r2, #0x15 + lsrs r0, r1, #0x1b + subs r0, #1 + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #6 + ldr r5, _080A222C + adds r3, r5, #0 + ands r3, r2 + orrs r3, r0 + strh r3, [r4, #4] + lsrs r1, r1, #0x1b + subs r1, #1 + ldrb r0, [r4, #5] + lsrs r0, r0, #3 + cmp r1, r0 + bge _080A21F8 + ldrb r2, [r4, #9] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1f + adds r1, #1 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #3 + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #9] + lsls r0, r3, #0x15 + lsrs r0, r0, #0x1b + adds r0, #1 + ands r0, r6 + lsls r0, r0, #6 + ands r3, r5 +_080A21F4: + orrs r3, r0 + strh r3, [r4, #4] +_080A21F8: + ldrb r1, [r4, #9] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A2220 + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A2216 + movs r0, #0 + str r0, [r4] + ldrh r1, [r4, #4] + ldr r0, _080A222C + ands r0, r1 + strh r0, [r4, #4] +_080A2216: + ldrb r1, [r4, #9] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #9] +_080A2220: + ldrb r0, [r4, #7] + lsrs r0, r0, #7 +_080A2224: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A222C: .4byte 0xFFFFF83F + thumb_func_end sub_080A2114 + + thumb_func_start sub_080A2230 +sub_080A2230: @ 0x080A2230 + push {r4, lr} + ldr r4, _080A227C + ldrh r1, [r4] + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r4, #4] + lsls r1, r1, #0x15 + lsrs r1, r1, #0x1b + movs r0, #0x54 + bl sub_08001144 + ldrb r1, [r4, #9] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A2274 + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4, #9] + movs r0, #0 + str r0, [r4] + ldrh r1, [r4, #4] + ldr r0, _080A2280 + ands r0, r1 + strh r0, [r4, #4] + ldrb r1, [r4, #7] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #7] +_080A2274: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A227C: .4byte gUnknown_2037C74 +_080A2280: .4byte 0xFFFFF83F + thumb_func_end sub_080A2230 + + thumb_func_start sub_080A2284 +sub_080A2284: @ 0x080A2284 + push {r4, lr} + ldr r3, _080A22BC + ldrb r4, [r3, #0xa] + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080A22E0 + ldr r2, [r3, #8] + movs r0, #0xf8 + lsls r0, r0, #9 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #7 + cmp r0, r1 + bne _080A22C4 + ldrb r1, [r3, #7] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #7] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r4 + strb r0, [r3, #0xa] + ldr r0, [r3, #8] + ldr r1, _080A22C0 + ands r0, r1 + str r0, [r3, #8] + b _080A22D8 + .align 2, 0 +_080A22BC: .4byte gUnknown_2037C74 +_080A22C0: .4byte 0xFFFE0FFF +_080A22C4: + lsls r0, r2, #0xf + lsrs r0, r0, #0x1b + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #0xc + ldr r1, _080A22DC + ands r1, r2 + orrs r1, r0 + str r1, [r3, #8] +_080A22D8: + movs r0, #1 + b _080A22E2 + .align 2, 0 +_080A22DC: .4byte 0xFFFE0FFF +_080A22E0: + movs r0, #0 +_080A22E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080A2284 + + thumb_func_start sub_080A22E8 +sub_080A22E8: @ 0x080A22E8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + movs r5, #0 + cmp r4, #0 + beq _080A231C +_080A22FA: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _080A230E + adds r0, r5, #0 + movs r1, #0x10 + adds r2, r7, #0 + adds r3, r6, #0 + bl sub_0806F410 +_080A230E: + lsrs r4, r4, #1 + adds r0, r5, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #0 + bne _080A22FA +_080A231C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A22E8 + + thumb_func_start sub_080A2324 +sub_080A2324: @ 0x080A2324 + push {r4, r5, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _080A2348 + ldr r5, _080A234C + ldr r3, _080A2350 + str r4, [r3] + str r5, [r3, #4] + ldr r4, _080A2354 + str r4, [r3, #8] + ldr r3, [r3, #8] + bl sub_080A22E8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2348: .4byte gUnknown_20373B4 +_080A234C: .4byte gUnknown_20377B4 +_080A2350: .4byte 0x040000D4 +_080A2354: .4byte 0x84000100 + thumb_func_end sub_080A2324 + + thumb_func_start sub_080A2358 +sub_080A2358: @ 0x080A2358 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0 + beq _080A23A0 + movs r6, #0x1f + adds r5, r1, #0 +_080A2368: + ldrh r1, [r4] + movs r2, #0x1f + ands r2, r1 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x15 + ands r3, r6 + lsrs r1, r1, #0x1a + ands r1, r6 + movs r0, #0x4c + muls r2, r0, r2 + movs r0, #0x97 + muls r0, r3, r0 + adds r2, r2, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r2, r2, r0 + asrs r2, r2, #8 + lsls r0, r2, #0xa + lsls r1, r2, #5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r4] + adds r4, #2 + subs r5, #1 + cmp r5, #0 + bne _080A2368 +_080A23A0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A2358 + + thumb_func_start sub_080A23A8 +sub_080A23A8: @ 0x080A23A8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0 + beq _080A23FC + movs r6, #0x1f + ldr r7, _080A2404 + adds r5, r1, #0 +_080A23BA: + ldrh r1, [r4] + movs r2, #0x1f + ands r2, r1 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x15 + ands r3, r6 + lsrs r1, r1, #0x1a + ands r1, r6 + movs r0, #0x4c + muls r2, r0, r2 + movs r0, #0x97 + muls r0, r3, r0 + adds r2, r2, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r2, r2, r0 + asrs r2, r2, #8 + cmp r2, #0x1f + bls _080A23E6 + movs r2, #0x1f +_080A23E6: + adds r0, r2, r7 + ldrb r2, [r0] + lsls r0, r2, #0xa + lsls r1, r2, #5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r4] + adds r4, #2 + subs r5, #1 + cmp r5, #0 + bne _080A23BA +_080A23FC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2404: .4byte gUnknown_84FCFA8 + thumb_func_end sub_080A23A8 + + thumb_func_start sub_080A2408 +sub_080A2408: @ 0x080A2408 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0 + beq _080A246A + movs r7, #0x1f + adds r6, r1, #0 +_080A2418: + ldrh r0, [r5] + movs r1, #0x1f + ands r1, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + ands r2, r7 + lsrs r3, r0, #0x1a + ands r3, r7 + movs r0, #0x4c + muls r1, r0, r1 + movs r0, #0x97 + muls r0, r2, r0 + adds r1, r1, r0 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r1, r1, r0 + asrs r1, r1, #8 + ldr r0, _080A2470 + muls r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x18 + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #0x14 + lsrs r3, r0, #0x18 + cmp r2, #0x1f + ble _080A2458 + movs r2, #0x1f +_080A2458: + lsls r0, r3, #0xa + lsls r1, r4, #5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r5] + adds r5, #2 + subs r6, #1 + cmp r6, #0 + bne _080A2418 +_080A246A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2470: .4byte 0x00000133 + thumb_func_end sub_080A2408 + + thumb_func_start sub_080A2474 +sub_080A2474: @ 0x080A2474 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldr r0, [sp, #0x1c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r8, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov ip, r0 + cmp r1, #0 + beq _080A2500 + movs r7, #0x1f + adds r6, r1, #0 +_080A249E: + ldrh r0, [r5] + movs r1, #0x1f + ands r1, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + ands r2, r7 + lsrs r3, r0, #0x1a + ands r3, r7 + movs r0, #0x4c + muls r1, r0, r1 + movs r0, #0x97 + muls r0, r2, r0 + adds r1, r1, r0 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r1, r1, r0 + asrs r1, r1, #8 + mov r0, sb + muls r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x18 + mov r0, r8 + muls r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x18 + mov r0, ip + muls r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x18 + cmp r4, #0x1f + ble _080A24E2 + movs r4, #0x1f +_080A24E2: + cmp r2, #0x1f + ble _080A24E8 + movs r2, #0x1f +_080A24E8: + cmp r3, #0x1f + ble _080A24EE + movs r3, #0x1f +_080A24EE: + lsls r0, r3, #0xa + lsls r1, r2, #5 + orrs r0, r1 + orrs r0, r4 + strh r0, [r5] + adds r5, #2 + subs r6, #1 + cmp r6, #0 + bne _080A249E +_080A2500: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080A2474 + + thumb_func_start sub_080A250C +sub_080A250C: @ 0x080A250C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + adds r4, r1, #0 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r8, r5 + ldr r0, _080A2564 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080A2568 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + strh r7, [r1, #8] + strh r6, [r1, #0xa] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + cmp r4, #0 + blt _080A256C + strh r4, [r1, #0xe] + movs r0, #1 + b _080A2574 + .align 2, 0 +_080A2564: .4byte sub_080A261C +_080A2568: .4byte gUnknown_3005B60 +_080A256C: + movs r0, #0 + strh r0, [r1, #0xe] + rsbs r0, r4, #0 + adds r0, #1 +_080A2574: + strh r0, [r1, #0xc] + lsls r4, r5, #2 + cmp r6, r7 + bhs _080A258C + ldr r0, _080A25BC + adds r1, r4, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0xc + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #0xc] +_080A258C: + adds r0, r5, #0 + movs r1, #5 + mov r2, sl + bl sub_080A8B44 + ldr r0, _080A25BC + adds r1, r4, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + mov r0, sb + strh r0, [r1, #0x16] + mov r2, r8 + strh r2, [r1, #0x18] + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A25BC: .4byte gUnknown_3005B60 + thumb_func_end sub_080A250C + + thumb_func_start sub_080A25C0 +sub_080A25C0: @ 0x080A25C0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r4, _080A25E4 + ldr r1, _080A25E8 +_080A25CC: + ldrb r0, [r1, #4] + cmp r0, #1 + bne _080A25EC + ldr r0, [r1] + cmp r0, r4 + bne _080A25EC + movs r5, #0x18 + ldrsh r0, [r1, r5] + cmp r0, r3 + bne _080A25EC + movs r0, #1 + b _080A25F6 + .align 2, 0 +_080A25E4: .4byte sub_080A261C +_080A25E8: .4byte gUnknown_3005B60 +_080A25EC: + adds r1, #0x28 + adds r2, #1 + cmp r2, #0xf + ble _080A25CC + movs r0, #0 +_080A25F6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080A25C0 + + thumb_func_start sub_080A25FC +sub_080A25FC: @ 0x080A25FC + push {lr} + b _080A2604 +_080A2600: + bl sub_080A8964 +_080A2604: + ldr r0, _080A2618 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080A2600 + pop {r0} + bx r0 + .align 2, 0 +_080A2618: .4byte sub_080A261C + thumb_func_end sub_080A25FC + + thumb_func_start sub_080A261C +sub_080A261C: @ 0x080A261C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080A2670 + adds r4, r0, r1 + adds r0, r5, #0 + movs r1, #5 + bl sub_080A8B7C + adds r3, r0, #0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #6 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080A2694 + movs r0, #0 + strh r0, [r4, #8] + ldrb r1, [r4] + ldrh r2, [r4, #0xe] + adds r0, r3, #0 + bl sub_080A22E8 + ldrh r1, [r4] + movs r6, #0 + ldrsh r0, [r4, r6] + ldrh r3, [r4, #2] + movs r6, #2 + ldrsh r2, [r4, r6] + cmp r0, r2 + bne _080A2674 + adds r0, r5, #0 + bl sub_080A8964 + b _080A2694 + .align 2, 0 +_080A2670: .4byte gUnknown_3005B68 +_080A2674: + ldrh r0, [r4, #4] + adds r1, r1, r0 + strh r1, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _080A268A + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r2 + blt _080A2694 + b _080A2692 +_080A268A: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, r2 + bgt _080A2694 +_080A2692: + strh r3, [r4] +_080A2694: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A261C + + thumb_func_start sub_080A269C +sub_080A269C: @ 0x080A269C + push {lr} + ldr r1, _080A26AC + movs r0, #0 + strb r0, [r1] + bl sub_080A27A8 + pop {r0} + bx r0 + .align 2, 0 +_080A26AC: .4byte gUnknown_3005B58 + thumb_func_end sub_080A269C + + thumb_func_start sub_080A26B0 +sub_080A26B0: @ 0x080A26B0 + push {r4, r5, lr} + ldr r0, _080A26C8 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #7 + bhi _080A2792 + lsls r0, r1, #2 + ldr r1, _080A26CC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A26C8: .4byte gUnknown_3000F4C +_080A26CC: .4byte _080A26D0 +_080A26D0: @ jump table + .4byte _080A2792 @ case 0 + .4byte _080A26F0 @ case 1 + .4byte _080A2792 @ case 2 + .4byte _080A2792 @ case 3 + .4byte _080A2792 @ case 4 + .4byte _080A2704 @ case 5 + .4byte _080A2724 @ case 6 + .4byte _080A2760 @ case 7 +_080A26F0: + movs r0, #2 + strb r0, [r2] + ldr r0, _080A2700 + ldrh r0, [r0] + bl sub_080A3040 + b _080A2792 + .align 2, 0 +_080A2700: .4byte gUnknown_3000F48 +_080A2704: + bl sub_080A2B20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2792 + ldr r0, _080A271C + movs r1, #0 + strh r1, [r0] + ldr r0, _080A2720 + strb r1, [r0] + b _080A2792 + .align 2, 0 +_080A271C: .4byte gUnknown_3000F4A +_080A2720: .4byte gUnknown_3000F4C +_080A2724: + bl sub_080A2B20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2792 + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2792 + ldr r2, _080A2754 + ldr r1, _080A2758 + ldrh r0, [r1] + strh r0, [r2] + movs r0, #0 + strh r0, [r1] + ldr r1, _080A275C + movs r0, #2 + strb r0, [r1] + ldrh r0, [r2] + bl sub_080A3040 + b _080A2792 + .align 2, 0 +_080A2754: .4byte gUnknown_3000F48 +_080A2758: .4byte gUnknown_3000F4A +_080A275C: .4byte gUnknown_3000F4C +_080A2760: + bl sub_080A2B20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2792 + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2792 + ldr r4, _080A2798 + ldrh r0, [r4] + ldr r5, _080A279C + ldrb r1, [r5] + bl sub_080A2A5C + ldr r1, _080A27A0 + ldrh r0, [r4] + strh r0, [r1] + movs r2, #0 + strh r2, [r4] + ldr r1, _080A27A4 + movs r0, #2 + strb r0, [r1] + strb r2, [r5] +_080A2792: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2798: .4byte gUnknown_3000F4A +_080A279C: .4byte gUnknown_3000F4D +_080A27A0: .4byte gUnknown_3000F48 +_080A27A4: .4byte gUnknown_3000F4C + thumb_func_end sub_080A26B0 + + thumb_func_start sub_080A27A8 +sub_080A27A8: @ 0x080A27A8 + ldr r0, _080A27BC + movs r1, #0 + strh r1, [r0] + ldr r0, _080A27C0 + strh r1, [r0] + ldr r0, _080A27C4 + strb r1, [r0] + ldr r0, _080A27C8 + strb r1, [r0] + bx lr + .align 2, 0 +_080A27BC: .4byte gUnknown_3000F48 +_080A27C0: .4byte gUnknown_3000F4A +_080A27C4: .4byte gUnknown_3000F4C +_080A27C8: .4byte gUnknown_3000F4D + thumb_func_end sub_080A27A8 + + thumb_func_start sub_080A27CC +sub_080A27CC: @ 0x080A27CC + ldr r0, _080A27D4 + ldrh r0, [r0] + bx lr + .align 2, 0 +_080A27D4: .4byte gUnknown_3000F48 + thumb_func_end sub_080A27CC + + thumb_func_start sub_080A27D8 +sub_080A27D8: @ 0x080A27D8 + ldr r1, _080A27EC + strh r0, [r1] + ldr r1, _080A27F0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080A27F4 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_080A27EC: .4byte gUnknown_3000F48 +_080A27F0: .4byte gUnknown_3000F4A +_080A27F4: .4byte gUnknown_3000F4C + thumb_func_end sub_080A27D8 + + thumb_func_start sub_080A27F8 +sub_080A27F8: @ 0x080A27F8 + ldr r0, _080A280C + movs r1, #0 + strh r1, [r0] + ldr r0, _080A2810 + strh r1, [r0] + ldr r1, _080A2814 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_080A280C: .4byte gUnknown_3000F48 +_080A2810: .4byte gUnknown_3000F4A +_080A2814: .4byte gUnknown_3000F4C + thumb_func_end sub_080A27F8 + + thumb_func_start sub_080A2818 +sub_080A2818: @ 0x080A2818 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A2904 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A282E + adds r0, r4, #0 + bl sub_080A2B08 +_080A282E: + ldr r0, _080A2844 + movs r1, #0 + strh r1, [r0] + ldr r0, _080A2848 + strh r1, [r0] + ldr r1, _080A284C + movs r0, #5 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2844: .4byte gUnknown_3000F48 +_080A2848: .4byte gUnknown_3000F4A +_080A284C: .4byte gUnknown_3000F4C + thumb_func_end sub_080A2818 + + thumb_func_start sub_080A2850 +sub_080A2850: @ 0x080A2850 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A2818 + ldr r1, _080A2878 + movs r0, #0 + strh r0, [r1] + ldr r0, _080A287C + strh r4, [r0] + ldr r1, _080A2880 + movs r0, #6 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2878: .4byte gUnknown_3000F48 +_080A287C: .4byte gUnknown_3000F4A +_080A2880: .4byte gUnknown_3000F4C + thumb_func_end sub_080A2850 + + thumb_func_start sub_080A2884 +sub_080A2884: @ 0x080A2884 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_080A2818 + ldr r1, _080A28B8 + movs r0, #0 + strh r0, [r1] + ldr r0, _080A28BC + strh r4, [r0] + ldr r1, _080A28C0 + movs r0, #7 + strb r0, [r1] + ldr r0, _080A28C4 + strb r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A28B8: .4byte gUnknown_3000F48 +_080A28BC: .4byte gUnknown_3000F4A +_080A28C0: .4byte gUnknown_3000F4C +_080A28C4: .4byte gUnknown_3000F4D + thumb_func_end sub_080A2884 + + thumb_func_start sub_080A28C8 +sub_080A28C8: @ 0x080A28C8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080A2A5C + ldr r0, _080A28F4 + strh r4, [r0] + ldr r0, _080A28F8 + movs r2, #0 + strh r2, [r0] + ldr r1, _080A28FC + movs r0, #2 + strb r0, [r1] + ldr r0, _080A2900 + strb r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A28F4: .4byte gUnknown_3000F48 +_080A28F8: .4byte gUnknown_3000F4A +_080A28FC: .4byte gUnknown_3000F4C +_080A2900: .4byte gUnknown_3000F4D + thumb_func_end sub_080A28C8 + + thumb_func_start sub_080A2904 +sub_080A2904: @ 0x080A2904 + push {lr} + ldr r0, _080A291C + ldrb r0, [r0] + cmp r0, #6 + beq _080A2920 + cmp r0, #5 + beq _080A2920 + cmp r0, #7 + beq _080A2920 + movs r0, #1 + b _080A2922 + .align 2, 0 +_080A291C: .4byte gUnknown_3000F4C +_080A2920: + movs r0, #0 +_080A2922: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2904 + + thumb_func_start sub_080A2928 +sub_080A2928: @ 0x080A2928 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A2950 + bl m4aMPlayStop + ldr r0, _080A2954 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrh r0, [r4] + ldr r2, _080A2958 + ldrh r1, [r4, #2] + strh r1, [r2] + bl m4aSongNumStart + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2950: .4byte gUnknown_30074D0 +_080A2954: .4byte gUnknown_84FCFC8 +_080A2958: .4byte gUnknown_3000F4E + thumb_func_end sub_080A2928 + + thumb_func_start sub_080A295C +sub_080A295C: @ 0x080A295C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r2, _080A2974 + ldrh r0, [r2] + cmp r0, #0 + beq _080A2978 + subs r0, #1 + strh r0, [r2] + movs r0, #0 + b _080A2990 + .align 2, 0 +_080A2974: .4byte gUnknown_3000F4E +_080A2978: + cmp r1, #0 + bne _080A2988 + ldr r0, _080A2984 + bl m4aMPlayContinue + b _080A298E + .align 2, 0 +_080A2984: .4byte gUnknown_30074D0 +_080A2988: + movs r0, #0 + bl m4aSongNumStart +_080A298E: + movs r0, #1 +_080A2990: + pop {r1} + bx r1 + thumb_func_end sub_080A295C + + thumb_func_start sub_080A2994 +sub_080A2994: @ 0x080A2994 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _080A29A8 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrh r0, [r0] + bl m4aSongNumStop + pop {r0} + bx r0 + .align 2, 0 +_080A29A8: .4byte gUnknown_84FCFC8 + thumb_func_end sub_080A2994 + + thumb_func_start sub_080A29AC +sub_080A29AC: @ 0x080A29AC + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r1, #0 + ldr r2, _080A29CC +_080A29B6: + ldrh r0, [r2] + cmp r0, r3 + bne _080A29D0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A2928 + bl sub_080A2A38 + b _080A29E2 + .align 2, 0 +_080A29CC: .4byte gUnknown_84FCFC8 +_080A29D0: + adds r2, #4 + adds r1, #1 + cmp r1, #0x11 + bls _080A29B6 + movs r0, #0 + bl sub_080A2928 + bl sub_080A2A38 +_080A29E2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A29AC + + thumb_func_start sub_080A29E8 +sub_080A29E8: @ 0x080A29E8 + push {lr} + ldr r0, _080A29FC + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A2A00 + movs r0, #1 + b _080A2A02 + .align 2, 0 +_080A29FC: .4byte sub_080A2A08 +_080A2A00: + movs r0, #0 +_080A2A02: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A29E8 + + thumb_func_start sub_080A2A08 +sub_080A2A08: @ 0x080A2A08 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080A2A1C + ldrh r0, [r1] + cmp r0, #0 + beq _080A2A20 + subs r0, #1 + strh r0, [r1] + b _080A2A2C + .align 2, 0 +_080A2A1C: .4byte gUnknown_3000F4E +_080A2A20: + ldr r0, _080A2A34 + bl m4aMPlayContinue + adds r0, r4, #0 + bl sub_080A8964 +_080A2A2C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2A34: .4byte gUnknown_30074D0 + thumb_func_end sub_080A2A08 + + thumb_func_start sub_080A2A38 +sub_080A2A38: @ 0x080A2A38 + push {r4, lr} + ldr r4, _080A2A58 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A2A52 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 +_080A2A52: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A2A58: .4byte sub_080A2A08 + thumb_func_end sub_080A2A38 + + thumb_func_start sub_080A2A5C +sub_080A2A5C: @ 0x080A2A5C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r0, _080A2AA4 + ldrb r0, [r0] + cmp r0, #0 + beq _080A2A70 + movs r5, #0 +_080A2A70: + ldr r6, _080A2AA8 + cmp r5, r6 + bne _080A2A78 + movs r5, #0 +_080A2A78: + adds r0, r5, #0 + bl m4aSongNumStart + ldr r4, _080A2AAC + 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, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2AA4: .4byte gUnknown_3005B58 +_080A2AA8: .4byte 0x0000FFFF +_080A2AAC: .4byte gUnknown_30074D0 + thumb_func_end sub_080A2A5C + + thumb_func_start sub_080A2AB0 +sub_080A2AB0: @ 0x080A2AB0 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080A2AC4 + bl m4aMPlayFadeOutTemporarily + pop {r0} + bx r0 + .align 2, 0 +_080A2AC4: .4byte gUnknown_30074D0 + thumb_func_end sub_080A2AB0 + + thumb_func_start sub_080A2AC8 +sub_080A2AC8: @ 0x080A2AC8 + push {lr} + ldr r0, _080A2AE0 + ldr r1, [r0, #4] + cmp r1, #0 + blt _080A2AE8 + ldr r0, _080A2AE4 + ands r1, r0 + cmp r1, #0 + beq _080A2AE8 + movs r0, #0 + b _080A2AEA + .align 2, 0 +_080A2AE0: .4byte gUnknown_30074D0 +_080A2AE4: .4byte 0x0000FFFF +_080A2AE8: + movs r0, #1 +_080A2AEA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2AC8 + + thumb_func_start sub_080A2AF0 +sub_080A2AF0: @ 0x080A2AF0 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080A2B04 + bl m4aMPlayFadeIn + pop {r0} + bx r0 + .align 2, 0 +_080A2B04: .4byte gUnknown_30074D0 + thumb_func_end sub_080A2AF0 + + thumb_func_start sub_080A2B08 +sub_080A2B08: @ 0x080A2B08 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080A2B1C + bl m4aMPlayFadeOut + pop {r0} + bx r0 + .align 2, 0 +_080A2B1C: .4byte gUnknown_30074D0 + thumb_func_end sub_080A2B08 + + thumb_func_start sub_080A2B20 +sub_080A2B20: @ 0x080A2B20 + push {lr} + ldr r0, _080A2B30 + ldrh r0, [r0, #4] + cmp r0, #0 + beq _080A2B34 + movs r0, #0 + b _080A2B36 + .align 2, 0 +_080A2B30: .4byte gUnknown_30074D0 +_080A2B34: + movs r0, #1 +_080A2B36: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2B20 + + thumb_func_start sub_080A2B3C +sub_080A2B3C: @ 0x080A2B3C + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A2B7C + ldr r1, _080A2B80 + movs r2, #0x55 + bl m4aMPlayVolumeControl + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + movs r0, #0 + str r0, [sp] + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + ldr r1, _080A2B84 + movs r0, #2 + strb r0, [r1] + bl sub_080A301C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2B7C: .4byte gUnknown_30074D0 +_080A2B80: .4byte 0x0000FFFF +_080A2B84: .4byte gUnknown_203808C + thumb_func_end sub_080A2B3C + + thumb_func_start sub_080A2B88 +sub_080A2B88: @ 0x080A2B88 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + movs r4, #0 + str r4, [sp] + bl sub_080A2D14 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A2B88 + + thumb_func_start sub_080A2BAC +sub_080A2BAC: @ 0x080A2BAC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #1 + bne _080A2BD2 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + adds r0, r6, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + b _080A2BF6 +_080A2BD2: + ldr r0, _080A2C00 + ldr r1, _080A2C04 + movs r2, #0x55 + bl m4aMPlayVolumeControl + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + adds r0, r6, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + ldr r1, _080A2C08 + movs r0, #2 + strb r0, [r1] + bl sub_080A301C +_080A2BF6: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2C00: .4byte gUnknown_30074D0 +_080A2C04: .4byte 0x0000FFFF +_080A2C08: .4byte gUnknown_203808C + thumb_func_end sub_080A2BAC + + thumb_func_start sub_080A2C0C +sub_080A2C0C: @ 0x080A2C0C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r4, r2, #0 + cmp r2, #1 + bne _080A2C36 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + str r2, [sp] + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + b _080A2C5C +_080A2C36: + ldr r0, _080A2C64 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080A2C4C + ldr r0, _080A2C68 + ldr r1, _080A2C6C + movs r2, #0x55 + bl m4aMPlayVolumeControl +_080A2C4C: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + adds r0, r6, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 +_080A2C5C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2C64: .4byte gUnknown_2022C90 +_080A2C68: .4byte gUnknown_30074D0 +_080A2C6C: .4byte 0x0000FFFF + thumb_func_end sub_080A2C0C + + thumb_func_start sub_080A2C70 +sub_080A2C70: @ 0x080A2C70 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r4, #1 + bne _080A2C96 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + adds r0, r6, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + b _080A2CB6 +_080A2C96: + ldr r0, _080A2CC0 + ldr r1, _080A2CC4 + movs r2, #0x55 + bl m4aMPlayVolumeControl + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + adds r0, r6, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + ldr r1, _080A2CC8 + movs r0, #2 + strb r0, [r1] +_080A2CB6: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A2CC0: .4byte gUnknown_30074D0 +_080A2CC4: .4byte 0x0000FFFF +_080A2CC8: .4byte gUnknown_203808C + thumb_func_end sub_080A2C70 + + thumb_func_start sub_080A2CCC +sub_080A2CCC: @ 0x080A2CCC + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A2D08 + ldr r1, _080A2D0C + movs r2, #0x55 + bl m4aMPlayVolumeControl + str r4, [sp] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + ldr r1, _080A2D10 + movs r0, #2 + strb r0, [r1] + bl sub_080A301C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A2D08: .4byte gUnknown_30074D0 +_080A2D0C: .4byte 0x0000FFFF +_080A2D10: .4byte gUnknown_203808C + thumb_func_end sub_080A2CCC + + thumb_func_start sub_080A2D14 +sub_080A2D14: @ 0x080A2D14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + ldr r3, _080A2D5C + adds r0, r0, r3 + lsrs r7, r0, #0x10 + movs r6, #0x8c + movs r0, #0 + mov sb, r0 + movs r5, #0 + movs r4, #0xf0 + lsls r4, r4, #6 + mov r8, r5 + cmp r1, #0xc + bhi _080A2E2A + lsls r0, r1, #2 + ldr r1, _080A2D60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A2D5C: .4byte 0xFFFF0000 +_080A2D60: .4byte _080A2D64 +_080A2D64: @ jump table + .4byte _080A2E2A @ case 0 + .4byte _080A2D98 @ case 1 + .4byte _080A2D9E @ case 2 + .4byte _080A2DAC @ case 3 + .4byte _080A2DC0 @ case 4 + .4byte _080A2DD8 @ case 5 + .4byte _080A2DE4 @ case 6 + .4byte _080A2DF4 @ case 7 + .4byte _080A2DFE @ case 8 + .4byte _080A2E08 @ case 9 + .4byte _080A2E18 @ case 10 + .4byte _080A2E28 @ case 11 + .4byte _080A2E24 @ case 12 +_080A2D98: + movs r6, #0x14 + movs r5, #0xe1 + b _080A2E2A +_080A2D9E: + movs r5, #0xe1 + ldr r4, _080A2DA8 + movs r1, #0x14 + b _080A2DCC + .align 2, 0 +_080A2DA8: .4byte 0x00003CF0 +_080A2DAC: + movs r6, #0x32 + movs r5, #0xc8 + ldr r4, _080A2DBC + movs r3, #0x14 + mov r8, r3 + movs r2, #0x5a + b _080A2E2A + .align 2, 0 +_080A2DBC: .4byte 0x00003DB8 +_080A2DC0: + movs r6, #0x19 + movs r0, #1 + mov sb, r0 + movs r5, #0x64 + ldr r4, _080A2DD4 + movs r1, #0xc0 +_080A2DCC: + mov r8, r1 + movs r2, #0x5a + b _080A2E2A + .align 2, 0 +_080A2DD4: .4byte 0x00003CF0 +_080A2DD8: + movs r5, #0xc8 + ldr r4, _080A2DE0 + b _080A2E2A + .align 2, 0 +_080A2DE0: .4byte 0x00003868 +_080A2DE4: + movs r5, #0xdc + ldr r4, _080A2DF0 + movs r3, #0xc0 + mov r8, r3 + movs r2, #0x46 + b _080A2E2A + .align 2, 0 +_080A2DF0: .4byte 0x00003CC3 +_080A2DF4: + movs r6, #0xa + movs r5, #0x64 + movs r4, #0xe8 + lsls r4, r4, #6 + b _080A2E2A +_080A2DFE: + movs r6, #0x3c + movs r5, #0xe1 + movs r4, #0xf4 + lsls r4, r4, #6 + b _080A2E2A +_080A2E08: + movs r6, #0xf + movs r0, #1 + mov sb, r0 + movs r5, #0x7d + ldr r4, _080A2E14 + b _080A2E2A + .align 2, 0 +_080A2E14: .4byte 0x00003B60 +_080A2E18: + movs r6, #0x64 + movs r5, #0xe1 + ldr r4, _080A2E20 + b _080A2E2A + .align 2, 0 +_080A2E20: .4byte 0x00003B60 +_080A2E24: + movs r6, #0x14 + movs r5, #0xe1 +_080A2E28: + ldr r4, _080A2E84 +_080A2E2A: + adds r0, r2, #0 + bl SetPokemonCryVolume + mov r1, sl + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + 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, #0x18 + asrs r0, r0, #0x18 + bl SetPokemonCryChorus + ldr r0, [sp] + bl SetPokemonCryPriority + adds r0, r7, #0 + bl sub_0806CFD4 + adds r7, r0, #0 + movs r1, #0x7f + ands r1, r7 + lsrs r0, r7, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + cmp r0, #1 + beq _080A2EB8 + cmp r0, #1 + bgt _080A2E88 + cmp r0, #0 + beq _080A2E92 + b _080A2F26 + .align 2, 0 +_080A2E84: .4byte 0x00003A98 +_080A2E88: + cmp r2, #2 + beq _080A2EDC + cmp r2, #3 + beq _080A2F00 + b _080A2F26 +_080A2E92: + mov r0, sb + cmp r0, #0 + beq _080A2EA8 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2EA4 + b _080A2F1C + .align 2, 0 +_080A2EA4: .4byte gUnknown_8626A44 +_080A2EA8: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2EB4 + b _080A2F1C + .align 2, 0 +_080A2EB4: .4byte gUnknown_8625814 +_080A2EB8: + mov r3, sb + cmp r3, #0 + beq _080A2ECC + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2EC8 + b _080A2F1C + .align 2, 0 +_080A2EC8: .4byte gUnknown_8627044 +_080A2ECC: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2ED8 + b _080A2F1C + .align 2, 0 +_080A2ED8: .4byte gUnknown_8625E14 +_080A2EDC: + mov r0, sb + cmp r0, #0 + beq _080A2EF0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2EEC + b _080A2F1C + .align 2, 0 +_080A2EEC: .4byte gUnknown_8627644 +_080A2EF0: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2EFC + b _080A2F1C + .align 2, 0 +_080A2EFC: .4byte gUnknown_8626414 +_080A2F00: + mov r3, sb + cmp r3, #0 + beq _080A2F14 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2F10 + b _080A2F1C + .align 2, 0 +_080A2F10: .4byte gUnknown_8627C44 +_080A2F14: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A2F38 +_080A2F1C: + adds r0, r0, r1 + bl SetPokemonCryTone + ldr r1, _080A2F3C + str r0, [r1] +_080A2F26: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A2F38: .4byte gUnknown_8626A14 +_080A2F3C: .4byte gUnknown_2038088 + thumb_func_end sub_080A2D14 + + thumb_func_start sub_080A2F40 +sub_080A2F40: @ 0x080A2F40 + push {lr} + ldr r0, _080A2F58 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A2F5C + bl sub_08000964 + movs r0, #1 + b _080A2F5E + .align 2, 0 +_080A2F58: .4byte sub_080A2FD4 +_080A2F5C: + movs r0, #0 +_080A2F5E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2F40 + + thumb_func_start sub_080A2F64 +sub_080A2F64: @ 0x080A2F64 + push {lr} + ldr r0, _080A2F78 + ldr r0, [r0] + bl m4aMPlayStop + bl sub_08000964 + pop {r0} + bx r0 + .align 2, 0 +_080A2F78: .4byte gUnknown_2038088 + thumb_func_end sub_080A2F64 + + thumb_func_start sub_080A2F7C +sub_080A2F7C: @ 0x080A2F7C + push {lr} + ldr r0, _080A2F8C + ldr r0, [r0] + bl m4aMPlayStop + pop {r0} + bx r0 + .align 2, 0 +_080A2F8C: .4byte gUnknown_2038088 + thumb_func_end sub_080A2F7C + + thumb_func_start sub_080A2F90 +sub_080A2F90: @ 0x080A2F90 + push {lr} + ldr r0, _080A2FA8 + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, #0 + bne _080A2FAC + bl sub_08000964 + movs r0, #0 + b _080A2FAE + .align 2, 0 +_080A2FA8: .4byte gUnknown_2038088 +_080A2FAC: + movs r0, #1 +_080A2FAE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2F90 + + thumb_func_start sub_080A2FB4 +sub_080A2FB4: @ 0x080A2FB4 + push {lr} + ldr r0, _080A2FC8 + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, #0 + bne _080A2FCC + movs r0, #0 + b _080A2FCE + .align 2, 0 +_080A2FC8: .4byte gUnknown_2038088 +_080A2FCC: + movs r0, #1 +_080A2FCE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A2FB4 + + thumb_func_start sub_080A2FD4 +sub_080A2FD4: @ 0x080A2FD4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080A2FE8 + ldrb r0, [r1] + cmp r0, #0 + beq _080A2FEC + subs r0, #1 + strb r0, [r1] + b _080A300A + .align 2, 0 +_080A2FE8: .4byte gUnknown_203808C +_080A2FEC: + ldr r0, _080A3010 + ldr r0, [r0] + bl IsPokemonCryPlaying + cmp r0, #0 + bne _080A300A + ldr r0, _080A3014 + ldr r1, _080A3018 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + adds r0, r4, #0 + bl sub_080A8964 +_080A300A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A3010: .4byte gUnknown_2038088 +_080A3014: .4byte gUnknown_30074D0 +_080A3018: .4byte 0x0000FFFF + thumb_func_end sub_080A2FD4 + + thumb_func_start sub_080A301C +sub_080A301C: @ 0x080A301C + push {r4, lr} + ldr r4, _080A303C + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A3036 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 +_080A3036: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A303C: .4byte sub_080A2FD4 + thumb_func_end sub_080A301C + + thumb_func_start sub_080A3040 +sub_080A3040: @ 0x080A3040 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080A3064 + ldrb r0, [r0] + cmp r0, #0 + beq _080A3050 + movs r1, #0 +_080A3050: + ldr r0, _080A3068 + cmp r1, r0 + bne _080A3058 + movs r1, #0 +_080A3058: + adds r0, r1, #0 + bl m4aSongNumStart + pop {r0} + bx r0 + .align 2, 0 +_080A3064: .4byte gUnknown_3005B58 +_080A3068: .4byte 0x0000FFFF + thumb_func_end sub_080A3040 + + thumb_func_start sub_080A306C +sub_080A306C: @ 0x080A306C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl m4aSongNumStart + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A306C + + thumb_func_start sub_080A307C +sub_080A307C: @ 0x080A307C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl m4aSongNumStart + ldr r6, _080A30C4 + adds r0, r6, #0 + bl m4aMPlayImmInit + ldr r0, _080A30C8 + mov r8, r0 + bl m4aMPlayImmInit + ldr r5, _080A30CC + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + 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, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A30C4: .4byte gUnknown_3007510 +_080A30C8: .4byte gUnknown_3007550 +_080A30CC: .4byte 0x0000FFFF + thumb_func_end sub_080A307C + + thumb_func_start sub_080A30D0 +sub_080A30D0: @ 0x080A30D0 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl m4aSongNumStart + ldr r5, _080A30FC + adds r0, r5, #0 + bl m4aMPlayImmInit + ldr r1, _080A3100 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A30FC: .4byte gUnknown_3007510 +_080A3100: .4byte 0x0000FFFF + thumb_func_end sub_080A30D0 + + thumb_func_start sub_080A3104 +sub_080A3104: @ 0x080A3104 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl m4aSongNumStart + ldr r5, _080A3130 + adds r0, r5, #0 + bl m4aMPlayImmInit + ldr r1, _080A3134 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A3130: .4byte gUnknown_3007550 +_080A3134: .4byte 0x0000FFFF + thumb_func_end sub_080A3104 + + thumb_func_start sub_080A3138 +sub_080A3138: @ 0x080A3138 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080A315C + ldr r5, _080A3160 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r1, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + ldr r0, _080A3164 + adds r1, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A315C: .4byte gUnknown_3007510 +_080A3160: .4byte 0x0000FFFF +_080A3164: .4byte gUnknown_3007550 + thumb_func_end sub_080A3138 + + thumb_func_start sub_080A3168 +sub_080A3168: @ 0x080A3168 + push {lr} + ldr r0, _080A3198 + ldr r1, [r0, #4] + movs r2, #0x80 + lsls r2, r2, #0x18 + adds r3, r0, #0 + cmp r1, #0 + bge _080A3182 + ldr r0, _080A319C + ldr r0, [r0, #4] + ands r0, r2 + cmp r0, #0 + bne _080A3194 +_080A3182: + ldr r1, _080A31A0 + ldrh r0, [r3, #4] + cmp r0, #0 + bne _080A31A4 + ldr r0, _080A319C + ldr r0, [r0, #4] + ands r0, r1 + cmp r0, #0 + bne _080A31A4 +_080A3194: + movs r0, #0 + b _080A31A6 + .align 2, 0 +_080A3198: .4byte gUnknown_3007510 +_080A319C: .4byte gUnknown_3007550 +_080A31A0: .4byte 0x0000FFFF +_080A31A4: + movs r0, #1 +_080A31A6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A3168 + + thumb_func_start sub_080A31AC +sub_080A31AC: @ 0x080A31AC + push {lr} + ldr r0, _080A31C4 + ldr r1, [r0, #4] + cmp r1, #0 + blt _080A31CC + ldr r0, _080A31C8 + ands r1, r0 + cmp r1, #0 + beq _080A31CC + movs r0, #1 + b _080A31CE + .align 2, 0 +_080A31C4: .4byte gUnknown_30074D0 +_080A31C8: .4byte 0x0000FFFF +_080A31CC: + movs r0, #0 +_080A31CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A31AC + + thumb_func_start sub_080A31D4 +sub_080A31D4: @ 0x080A31D4 + push {lr} + ldr r0, _080A31EC + ldr r1, [r0, #4] + cmp r1, #0 + blt _080A31F4 + ldr r0, _080A31F0 + ands r1, r0 + cmp r1, #0 + beq _080A31F4 + movs r0, #1 + b _080A31F6 + .align 2, 0 +_080A31EC: .4byte gUnknown_30075A0 +_080A31F0: .4byte 0x0000FFFF +_080A31F4: + movs r0, #0 +_080A31F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A31D4 + + thumb_func_start sub_080A31FC +sub_080A31FC: @ 0x080A31FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _080A3290 + movs r1, #0 + strb r1, [r0] + ldr r0, _080A3294 + strb r1, [r0] + ldr r0, _080A3298 + strb r1, [r0] + ldr r0, _080A329C + strb r1, [r0] + ldr r0, _080A32A0 + movs r1, #0 + str r1, [r0] + ldr r0, _080A32A4 + str r1, [r0] + ldr r0, _080A32A8 + movs r2, #0 + strh r1, [r0] + ldr r0, _080A32AC + strb r2, [r0] + ldr r4, _080A32B0 + ldr r5, _080A32B4 + ldr r6, _080A32B8 + ldr r7, _080A32BC + ldr r0, _080A32C0 + mov ip, r0 + ldr r1, _080A32C4 + mov r8, r1 + ldr r0, _080A32C8 + mov sb, r0 + ldr r1, _080A32CC + adds r3, r1, #0 + ldr r1, _080A32D0 + movs r2, #7 +_080A3246: + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080A3246 + ldr r1, _080A32D4 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xe +_080A325C: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _080A325C + movs r1, #0 + movs r0, #0xff + strb r0, [r4] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #1] + strb r1, [r5] + strb r1, [r6] + movs r0, #0 + strh r1, [r7] + mov r1, ip + strb r0, [r1] + mov r1, r8 + strb r0, [r1] + mov r1, sb + strb r0, [r1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3290: .4byte gUnknown_203809C +_080A3294: .4byte gUnknown_203809D +_080A3298: .4byte gUnknown_203809E +_080A329C: .4byte gUnknown_203809F +_080A32A0: .4byte gUnknown_20380A0 +_080A32A4: .4byte gUnknown_20380A4 +_080A32A8: .4byte gUnknown_20380A8 +_080A32AC: .4byte gUnknown_20380BA +_080A32B0: .4byte gUnknown_20380D0 +_080A32B4: .4byte gUnknown_20380D2 +_080A32B8: .4byte gUnknown_20380D3 +_080A32BC: .4byte gUnknown_20380D4 +_080A32C0: .4byte gUnknown_20380D6 +_080A32C4: .4byte gUnknown_20380D7 +_080A32C8: .4byte gUnknown_20380E0 +_080A32CC: .4byte 0x0000FFFF +_080A32D0: .4byte gUnknown_20380AA +_080A32D4: .4byte gUnknown_20380BE + thumb_func_end sub_080A31FC + + thumb_func_start sub_080A32D8 +sub_080A32D8: @ 0x080A32D8 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _080A32FC + ldr r0, _080A3300 + ldrb r0, [r0] + strb r0, [r2] + ldr r2, _080A3304 + ldr r0, _080A3308 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _080A330C + movs r2, #1 + bl sub_080A3310 + pop {r0} + bx r0 + .align 2, 0 +_080A32FC: .4byte gUnknown_20380D6 +_080A3300: .4byte gUnknown_2023EAF +_080A3304: .4byte gUnknown_20380D7 +_080A3308: .4byte gUnknown_2023EB0 +_080A330C: .4byte gUnknown_82772F8 + thumb_func_end sub_080A32D8 + + thumb_func_start sub_080A3310 +sub_080A3310: @ 0x080A3310 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A33B0 + bl sub_080A7B40 + movs r0, #0 + bl sub_08072498 + movs r4, #0 + mov r0, r8 + lsls r0, r0, #2 + mov sl, r0 + ldr r6, _080A3364 + movs r7, #0x64 + ldr r5, _080A3368 +_080A334C: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3370 + ldrh r0, [r6] + muls r0, r7, r0 + ldr r1, _080A336C + b _080A3376 + .align 2, 0 +_080A3364: .4byte gUnknown_2023D12 +_080A3368: .4byte gUnknown_20380D8 +_080A336C: .4byte gUnknown_20243E8 +_080A3370: + ldrh r0, [r6] + muls r0, r7, r0 + ldr r1, _080A3398 +_080A3376: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + strh r0, [r5] + adds r6, #2 + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _080A334C + ldr r3, _080A339C + ldr r5, _080A33A0 + ldr r1, _080A33A4 + mov ip, r1 + ldr r7, _080A33A8 + ldr r6, _080A33AC + b _080A33D8 + .align 2, 0 +_080A3398: .4byte gUnknown_2024190 +_080A339C: .4byte gUnknown_20380D4 +_080A33A0: .4byte gUnknown_20380D0 +_080A33A4: .4byte gUnknown_203809D +_080A33A8: .4byte gUnknown_2038098 +_080A33AC: .4byte sub_080A35AC +_080A33B0: + ldr r3, _080A33E4 + ldr r5, _080A33E8 + mov r0, r8 + lsls r0, r0, #2 + mov sl, r0 + ldr r1, _080A33EC + mov ip, r1 + ldr r7, _080A33F0 + ldr r6, _080A33F4 + ldr r2, _080A33F8 + ldr r1, _080A33FC + movs r4, #3 +_080A33C8: + ldr r0, [r2] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + strh r0, [r1] + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _080A33C8 +_080A33D8: + mov r0, sb + cmp r0, #0 + bne _080A3400 + strh r0, [r3] + b _080A3404 + .align 2, 0 +_080A33E4: .4byte gUnknown_20380D4 +_080A33E8: .4byte gUnknown_20380D0 +_080A33EC: .4byte gUnknown_203809D +_080A33F0: .4byte gUnknown_2038098 +_080A33F4: .4byte sub_080A35AC +_080A33F8: .4byte gUnknown_2039BD4 +_080A33FC: .4byte gUnknown_20380D8 +_080A3400: + mov r1, r8 + strh r1, [r3] +_080A3404: + ldr r1, _080A3458 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0xe +_080A340C: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _080A340C + movs r0, #0xff + strb r0, [r5] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r5, #1] + ldr r0, [sp] + add r0, sl + ldr r0, [r0] + ldr r1, _080A345C + str r0, [r1] + movs r0, #1 + mov r1, ip + strb r0, [r1] + movs r0, #0 + ldr r1, _080A3460 + strb r0, [r1] + str r6, [r7] + ldr r0, _080A3464 + adds r2, r0, #0 + ldr r1, _080A3468 + movs r4, #7 +_080A343E: + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _080A343E + mov r1, sb + cmp r1, #0 + beq _080A348A + movs r4, #0 + ldr r2, _080A346C + b _080A3472 + .align 2, 0 +_080A3458: .4byte gUnknown_20380BE +_080A345C: .4byte gUnknown_2038090 +_080A3460: .4byte gUnknown_203809C +_080A3464: .4byte 0x0000FFFF +_080A3468: .4byte gUnknown_20380AA +_080A346C: .4byte gUnknown_82772F0 +_080A3470: + adds r4, #1 +_080A3472: + lsls r0, r4, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r1, _080A34AC + cmp r0, r1 + beq _080A348A + cmp r8, r0 + bne _080A3470 + ldr r0, _080A34B0 + movs r2, #0x80 + bl m4aMPlayVolumeControl +_080A348A: + ldr r0, _080A34B4 + movs r1, #0 + strh r1, [r0] + ldr r0, _080A34B8 + strh r1, [r0] + ldr r0, _080A34BC + strh r1, [r0] + ldr r0, _080A34C0 + strh r1, [r0] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A34AC: .4byte 0x0000FFFF +_080A34B0: .4byte gUnknown_30074D0 +_080A34B4: .4byte gUnknown_2022AD8 +_080A34B8: .4byte gUnknown_2022ADA +_080A34BC: .4byte gUnknown_2022ADC +_080A34C0: .4byte gUnknown_2022ADE + thumb_func_end sub_080A3310 + + thumb_func_start sub_080A34C4 +sub_080A34C4: @ 0x080A34C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + ldr r1, _080A34E0 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A34E0: .4byte gUnknown_203809E + thumb_func_end sub_080A34C4 + + thumb_func_start sub_080A34E4 +sub_080A34E4: @ 0x080A34E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldr r1, _080A34FC + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A34FC: .4byte gUnknown_203809E + thumb_func_end sub_080A34E4 + + thumb_func_start sub_080A3500 +sub_080A3500: @ 0x080A3500 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldr r1, _080A3518 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A3518: .4byte gUnknown_203809F + thumb_func_end sub_080A3500 + + thumb_func_start sub_080A351C +sub_080A351C: @ 0x080A351C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r4, _080A3534 + ldr r1, _080A3538 +_080A3528: + ldrh r0, [r1] + cmp r0, r4 + bne _080A353C + strh r3, [r1] + b _080A3544 + .align 2, 0 +_080A3534: .4byte 0x0000FFFF +_080A3538: .4byte gUnknown_20380AA +_080A353C: + adds r1, #2 + adds r2, #1 + cmp r2, #7 + ble _080A3528 +_080A3544: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A351C + + thumb_func_start sub_080A354C +sub_080A354C: @ 0x080A354C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r0, _080A3568 + adds r4, r0, #0 + ldr r1, _080A356C +_080A355A: + ldrh r0, [r1] + cmp r0, r3 + bne _080A3570 + orrs r0, r4 + strh r0, [r1] + b _080A3578 + .align 2, 0 +_080A3568: .4byte 0x0000FFFF +_080A356C: .4byte gUnknown_20380AA +_080A3570: + adds r1, #2 + adds r2, #1 + cmp r2, #7 + ble _080A355A +_080A3578: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A354C + + thumb_func_start sub_080A3580 +sub_080A3580: @ 0x080A3580 + push {lr} + ldr r2, _080A3598 + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + bgt _080A35A4 + ldr r0, _080A359C + ldr r1, _080A35A0 + str r1, [r0] + movs r0, #0 + b _080A35A6 + .align 2, 0 +_080A3598: .4byte gUnknown_203809C +_080A359C: .4byte gUnknown_2038098 +_080A35A0: .4byte sub_080A35AC +_080A35A4: + subs r0, r1, #1 +_080A35A6: + strb r0, [r2] + pop {r0} + bx r0 + thumb_func_end sub_080A3580 + + thumb_func_start sub_080A35AC +sub_080A35AC: @ 0x080A35AC + push {r4, lr} + ldr r4, _080A35DC +_080A35B0: + ldr r0, _080A35E0 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_080A35AC + + thumb_func_start sub_080A35C0 +sub_080A35C0: @ 0x080A35C0 + ldr r0, _080A35E4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080A35D4 + ldr r0, _080A35E8 + ldrb r0, [r0] + cmp r0, #0 + bne _080A35B0 +_080A35D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A35DC: .4byte gUnknown_84FE5A4 +_080A35E0: .4byte gUnknown_2038090 +_080A35E4: .4byte gUnknown_203809C +_080A35E8: .4byte gUnknown_203809D + thumb_func_end sub_080A35C0 + + thumb_func_start sub_080A35EC +sub_080A35EC: @ 0x080A35EC + push {r4, r5, r6, lr} + ldr r6, _080A3638 + ldr r0, [r6] + adds r1, r0, #1 + str r1, [r6] + ldrb r4, [r0, #1] + ldrb r0, [r1, #1] + lsls r0, r0, #8 + orrs r4, r0 + lsls r5, r4, #3 + ldr r0, _080A363C + adds r0, r5, r0 + bl sub_080347E0 + ldr r0, _080A3640 + adds r5, r5, r0 + adds r0, r5, #0 + bl sub_0803481C + ldr r0, [r6] + adds r0, #2 + str r0, [r6] + ldr r0, _080A3644 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_080A351C + ldr r1, _080A3648 + movs r0, #1 + strb r0, [r1] + ldr r1, _080A364C + ldr r0, _080A3650 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3638: .4byte gUnknown_2038090 +_080A363C: .4byte gUnknown_84E99D0 +_080A3640: .4byte gUnknown_84EA2D8 +_080A3644: .4byte 0xFFFFD8F0 +_080A3648: .4byte gUnknown_203809C +_080A364C: .4byte gUnknown_2038098 +_080A3650: .4byte sub_080A3580 + thumb_func_end sub_080A35EC + + thumb_func_start sub_080A3654 +sub_080A3654: @ 0x080A3654 + push {r4, r5, r6, lr} + ldr r6, _080A3694 + ldr r0, [r6] + adds r1, r0, #1 + str r1, [r6] + ldrb r4, [r0, #1] + ldrb r0, [r1, #1] + lsls r0, r0, #8 + orrs r4, r0 + ldr r1, _080A3698 + ldr r0, _080A369C + adds r4, r4, r0 + lsls r0, r4, #3 + adds r0, r0, r1 + ldrh r5, [r0, #6] + adds r0, r5, #0 + bl sub_08008280 + adds r0, r5, #0 + bl sub_08008564 + ldr r0, [r6] + adds r0, #2 + str r0, [r6] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_080A354C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A3694: .4byte gUnknown_2038090 +_080A3698: .4byte gUnknown_84FD250 +_080A369C: .4byte 0xFFFFD8F0 + thumb_func_end sub_080A3654 + + thumb_func_start sub_080A36A0 +sub_080A36A0: @ 0x080A36A0 + push {r4, r5, r6, r7, lr} + ldr r5, _080A3708 + ldr r1, [r5] + adds r3, r1, #1 + str r3, [r5] + ldrb r2, [r1, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r3, #2] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x18 + adds r7, r2, r0 + adds r0, r1, #5 + str r0, [r5] + ldrb r4, [r1, #5] + adds r0, r1, #6 + str r0, [r5] + ldrb r0, [r1, #6] + adds r1, #7 + str r1, [r5] + cmp r0, #0 + beq _080A36F0 + adds r6, r5, #0 + ldr r5, _080A370C + adds r3, r0, #0 +_080A36D8: + ldr r2, [r6] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r5] + adds r2, #2 + str r2, [r6] + adds r5, #2 + subs r3, #1 + cmp r3, #0 + bne _080A36D8 +_080A36F0: + movs r0, #0x80 + ands r0, r4 + cmp r0, #0 + beq _080A3720 + movs r0, #0x80 + eors r4, r0 + cmp r4, #0x3f + bls _080A3710 + adds r0, r4, #0 + subs r0, #0x40 + b _080A3712 + .align 2, 0 +_080A3708: .4byte gUnknown_2038090 +_080A370C: .4byte gUnknown_20380BE +_080A3710: + rsbs r0, r4, #0 +_080A3712: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A371C + b _080A3732 + .align 2, 0 +_080A371C: .4byte gUnknown_20380D7 +_080A3720: + cmp r4, #0x3f + bls _080A372A + adds r0, r4, #0 + subs r0, #0x40 + b _080A372C +_080A372A: + rsbs r0, r4, #0 +_080A372C: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A3788 +_080A3732: + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bgt _080A3750 + movs r6, #3 +_080A3750: + ldr r5, _080A378C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08006D6C + ldr r1, _080A3790 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3788: .4byte gUnknown_20380D6 +_080A378C: .4byte gUnknown_20380D7 +_080A3790: .4byte gUnknown_203809E + thumb_func_end sub_080A36A0 + + thumb_func_start sub_080A3794 +sub_080A3794: @ 0x080A3794 + push {r4, r5, r6, r7, lr} + ldr r4, _080A3804 + ldr r1, [r4] + adds r3, r1, #1 + str r3, [r4] + ldrb r2, [r1, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r3, #2] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x18 + adds r6, r2, r0 + adds r0, r1, #5 + str r0, [r4] + ldrb r7, [r1, #5] + adds r0, r1, #6 + str r0, [r4] + ldrb r0, [r1, #6] + adds r1, #7 + str r1, [r4] + cmp r0, #0 + beq _080A37E4 + adds r5, r4, #0 + ldr r4, _080A3808 + adds r3, r0, #0 +_080A37CC: + ldr r2, [r5] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r4] + adds r2, #2 + str r2, [r5] + adds r4, #2 + subs r3, #1 + cmp r3, #0 + bne _080A37CC +_080A37E4: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r6 + ldr r1, _080A380C + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3804: .4byte gUnknown_2038090 +_080A3808: .4byte gUnknown_20380BE +_080A380C: .4byte gUnknown_203809E + thumb_func_end sub_080A3794 + + thumb_func_start sub_080A3810 +sub_080A3810: @ 0x080A3810 + push {r4, lr} + ldr r1, _080A3840 + ldr r0, [r1] + adds r2, r0, #1 + str r2, [r1] + ldr r3, _080A3844 + ldrb r0, [r0, #1] + strb r0, [r3] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A382E + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + strb r0, [r3] +_080A382E: + adds r0, r2, #1 + str r0, [r1] + ldr r1, _080A3848 + ldr r0, _080A384C + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A3840: .4byte gUnknown_2038090 +_080A3844: .4byte gUnknown_203809C +_080A3848: .4byte gUnknown_2038098 +_080A384C: .4byte sub_080A3580 + thumb_func_end sub_080A3810 + + thumb_func_start sub_080A3850 +sub_080A3850: @ 0x080A3850 + push {lr} + ldr r0, _080A3868 + ldrb r2, [r0] + cmp r2, #0 + bne _080A3874 + ldr r0, _080A386C + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + ldr r0, _080A3870 + strb r2, [r0] + b _080A387A + .align 2, 0 +_080A3868: .4byte gUnknown_203809E +_080A386C: .4byte gUnknown_2038090 +_080A3870: .4byte gUnknown_203809C +_080A3874: + ldr r1, _080A3880 + movs r0, #1 + strb r0, [r1] +_080A387A: + pop {r0} + bx r0 + .align 2, 0 +_080A3880: .4byte gUnknown_203809C + thumb_func_end sub_080A3850 + + thumb_func_start sub_080A3884 +sub_080A3884: @ 0x080A3884 + bx lr + .align 2, 0 + thumb_func_end sub_080A3884 + + thumb_func_start sub_080A3888 +sub_080A3888: @ 0x080A3888 + bx lr + .align 2, 0 + thumb_func_end sub_080A3888 + + thumb_func_start sub_080A388C +sub_080A388C: @ 0x080A388C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + mov r8, r0 + ldr r0, _080A38BC + ldrb r0, [r0] + cmp r0, #0 + bne _080A38B4 + ldr r0, _080A38C0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A38B4 + ldr r1, _080A38C4 + ldrb r0, [r1] + cmp r0, #0xff + bne _080A38B4 + ldrb r0, [r1, #1] + cmp r0, #0xff + beq _080A38CC +_080A38B4: + ldr r1, _080A38C8 + movs r0, #0 + strh r0, [r1] + b _080A38E6 + .align 2, 0 +_080A38BC: .4byte gUnknown_203809E +_080A38C0: .4byte gUnknown_203809F +_080A38C4: .4byte gUnknown_20380D0 +_080A38C8: .4byte gUnknown_20380CE +_080A38CC: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3904 + ldr r1, _080A38F0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x5a + bhi _080A38F8 +_080A38E6: + ldr r1, _080A38F4 + movs r0, #1 + strb r0, [r1] + b _080A396A + .align 2, 0 +_080A38F0: .4byte gUnknown_20380CE +_080A38F4: .4byte gUnknown_203809C +_080A38F8: + ldr r0, _080A3974 + bl m4aMPlayStop + ldr r0, _080A3978 + bl m4aMPlayStop +_080A3904: + ldr r1, _080A397C + movs r0, #0 + strh r0, [r1] + movs r5, #0 + ldr r7, _080A3980 + ldr r6, _080A3984 + ldr r4, _080A3988 +_080A3912: + ldrh r0, [r4] + cmp r0, r7 + beq _080A3936 + lsls r0, r0, #3 + adds r0, r0, r6 + ldrh r0, [r0, #6] + bl sub_08008280 + ldrh r0, [r4] + lsls r0, r0, #3 + adds r0, r0, r6 + ldrh r0, [r0, #6] + bl sub_08008564 + ldrh r1, [r4] + adds r0, r7, #0 + orrs r0, r1 + strh r0, [r4] +_080A3936: + adds r4, #2 + adds r5, #1 + cmp r5, #7 + ble _080A3912 + mov r1, r8 + cmp r1, #0 + bne _080A396A + ldr r0, _080A398C + ldr r1, _080A3980 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A3964 + bl sub_080A7B40 + movs r0, #1 + bl sub_08072498 +_080A3964: + ldr r0, _080A3990 + mov r1, r8 + strb r1, [r0] +_080A396A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3974: .4byte gUnknown_3007510 +_080A3978: .4byte gUnknown_3007550 +_080A397C: .4byte gUnknown_20380CE +_080A3980: .4byte 0x0000FFFF +_080A3984: .4byte gUnknown_84FD250 +_080A3988: .4byte gUnknown_20380AA +_080A398C: .4byte gUnknown_30074D0 +_080A3990: .4byte gUnknown_203809D + thumb_func_end sub_080A388C + + thumb_func_start sub_080A3994 +sub_080A3994: @ 0x080A3994 + push {r4, lr} + ldr r4, _080A39B8 + ldr r0, [r4] + adds r1, r0, #1 + str r1, [r4] + ldrb r0, [r0, #1] + ldrb r1, [r1, #1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A306C + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A39B8: .4byte gUnknown_2038090 + thumb_func_end sub_080A3994 + + thumb_func_start sub_080A39BC +sub_080A39BC: @ 0x080A39BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _080A3A04 + mov r8, r1 + adds r6, r0, r1 + ldr r1, _080A3A08 + movs r2, #0 + ldrsh r0, [r6, r2] + adds r0, r0, r1 + ldrb r5, [r0] + ldr r1, _080A3A0C + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r4, r0, r1 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r3, #4 + ldrsh r0, [r6, r3] + cmp r0, #0 + bne _080A3A10 + adds r0, r7, #0 + bl sub_080A34E4 + b _080A3A86 + .align 2, 0 +_080A3A04: .4byte gUnknown_3005B68 +_080A3A08: .4byte gUnknown_2023E88 +_080A3A0C: .4byte gUnknown_20205AC +_080A3A10: + ldr r0, _080A3A4C + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + mov r1, r8 + subs r1, #8 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + strh r5, [r1, #8] + ldrh r0, [r4, #0x24] + ldrh r3, [r4, #0x20] + adds r0, r0, r3 + strh r0, [r1, #0xa] + ldrh r0, [r4, #0x26] + ldrh r4, [r4, #0x22] + adds r0, r0, r4 + strh r0, [r1, #0xc] + movs r3, #2 + ldrsh r0, [r6, r3] + cmp r0, #0 + bne _080A3A58 + ldr r0, _080A3A50 + ldrh r0, [r0] + strh r0, [r1, #0xe] + ldr r0, _080A3A54 + b _080A3A60 + .align 2, 0 +_080A3A4C: .4byte sub_080A40A0 +_080A3A50: .4byte gUnknown_2022ACC +_080A3A54: .4byte gUnknown_2022ACE +_080A3A58: + ldr r0, _080A3A90 + ldrh r0, [r0] + strh r0, [r1, #0xe] + ldr r0, _080A3A94 +_080A3A60: + ldrh r0, [r0] + strh r0, [r1, #0x10] + ldr r1, _080A3A98 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r6, #2] + strh r1, [r0, #0x12] + ldrh r1, [r6] + strh r1, [r0, #0x14] + ldr r1, _080A3A9C + movs r3, #6 + ldrsh r0, [r6, r3] + adds r0, r0, r1 + strb r2, [r0] + adds r0, r7, #0 + bl sub_080A34E4 +_080A3A86: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3A90: .4byte gUnknown_2022AD0 +_080A3A94: .4byte gUnknown_2022AD2 +_080A3A98: .4byte gUnknown_3005B60 +_080A3A9C: .4byte gUnknown_20380D0 + thumb_func_end sub_080A39BC + + thumb_func_start sub_080A3AA0 +sub_080A3AA0: @ 0x080A3AA0 + push {r4, r5, lr} + ldr r1, _080A3AB8 + ldr r2, [r1] + adds r0, r2, #1 + str r0, [r1] + ldrb r0, [r2, #1] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080A3AC0 + ldr r0, _080A3ABC + b _080A3AC2 + .align 2, 0 +_080A3AB8: .4byte gUnknown_2038090 +_080A3ABC: .4byte gUnknown_20380D7 +_080A3AC0: + ldr r0, _080A3AF4 +_080A3AC2: + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3B2E + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A3AEE + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3AF8 +_080A3AEE: + movs r5, #0 + b _080A3AFA + .align 2, 0 +_080A3AF4: .4byte gUnknown_20380D6 +_080A3AF8: + movs r5, #1 +_080A3AFA: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_080A3C54 + ldr r0, _080A3B60 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080A3B64 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _080A3B68 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + strh r4, [r0, #8] + strh r5, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #0xc] + strh r2, [r0, #0xe] +_080A3B2E: + movs r0, #2 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3BA0 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A3B5C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3B6C +_080A3B5C: + movs r5, #0 + b _080A3B6E + .align 2, 0 +_080A3B60: .4byte sub_080A39BC +_080A3B64: .4byte gUnknown_203809E +_080A3B68: .4byte gUnknown_3005B60 +_080A3B6C: + movs r5, #1 +_080A3B6E: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_080A3C54 + ldr r0, _080A3BBC + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080A3BC0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _080A3BC4 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + strh r5, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #0xc] + strh r1, [r0, #0xe] +_080A3BA0: + ldr r1, _080A3BC8 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r1, _080A3BCC + movs r0, #1 + strb r0, [r1] + ldr r1, _080A3BD0 + ldr r0, _080A3BD4 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A3BBC: .4byte sub_080A39BC +_080A3BC0: .4byte gUnknown_203809E +_080A3BC4: .4byte gUnknown_3005B60 +_080A3BC8: .4byte gUnknown_2038090 +_080A3BCC: .4byte gUnknown_203809C +_080A3BD0: .4byte gUnknown_2038098 +_080A3BD4: .4byte sub_080A3580 + thumb_func_end sub_080A3AA0 + + thumb_func_start sub_080A3BD8 +sub_080A3BD8: @ 0x080A3BD8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3BF8 + ldr r0, _080A3BF4 + ldrb r0, [r0] + cmp r4, r0 + beq _080A3C3C + b _080A3C4C + .align 2, 0 +_080A3BF4: .4byte gUnknown_20380D6 +_080A3BF8: + adds r0, r4, #0 + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3C4C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A3C3C + ldr r0, _080A3C40 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A3C3C + ldr r2, _080A3C44 + ldr r0, _080A3C48 + adds r0, r5, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _080A3C4C +_080A3C3C: + movs r0, #1 + b _080A3C4E + .align 2, 0 +_080A3C40: .4byte gUnknown_2024174 +_080A3C44: .4byte gUnknown_20205AC +_080A3C48: .4byte gUnknown_2023E88 +_080A3C4C: + movs r0, #0 +_080A3C4E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080A3BD8 + + thumb_func_start sub_080A3C54 +sub_080A3C54: @ 0x080A3C54 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + cmp r1, #0 + beq _080A3C72 + b _080A3E26 +_080A3C72: + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080A3CA4 + ldr r1, _080A3C9C + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + ldr r1, _080A3CA0 + movs r2, #0x80 + lsls r2, r2, #5 + movs r0, #0xff + movs r3, #0 + bl sub_08000F90 + b _080A3CC0 + .align 2, 0 +_080A3C9C: .4byte 0x06008000 +_080A3CA0: .4byte 0x0600F000 +_080A3CA4: + ldr r1, _080A3DC0 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + ldr r1, _080A3DC4 + movs r2, #0x80 + lsls r2, r2, #5 + movs r0, #0xff + movs r3, #0 + bl sub_08000F90 +_080A3CC0: + add r0, sp, #0x10 + bl sub_080A63F8 + add r0, sp, #0x20 + movs r1, #0 + strh r1, [r0] + ldr r1, [sp, #0x10] + ldr r2, _080A3DC8 + bl CpuSet + mov r0, sp + adds r0, #0x22 + movs r1, #0xff + strh r1, [r0] + ldr r1, [sp, #0x14] + ldr r2, _080A3DCC + bl CpuSet + movs r0, #1 + movs r1, #4 + movs r2, #2 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_0811887C + ldr r0, _080A3DD0 + adds r0, r6, r0 + ldrb r4, [r0] + ldr r5, _080A3DD4 + ldr r0, _080A3DD8 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x24] + ldrh r1, [r1, #0x20] + adds r0, r0, r1 + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r5] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3D42 + ldr r0, _080A3DDC + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + bl sub_080DAA0C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3D42 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] +_080A3D42: + ldr r5, _080A3DE0 + ldr r2, _080A3DD8 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x26] + ldrh r1, [r1, #0x22] + adds r0, r0, r1 + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r5] + mov r0, sb + cmp r0, #0 + beq _080A3D78 + ldr r0, _080A3DD0 + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080A3D78: + ldr r0, _080A3DD4 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldrh r1, [r5] + movs r0, #0x16 + bl sub_08001144 + lsls r4, r6, #5 + ldr r0, _080A3DE4 + adds r4, r4, r0 + add r0, sp, #0x10 + ldrb r1, [r0, #8] + lsls r1, r1, #4 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + add r0, sp, #0x10 + ldrb r1, [r0, #8] + lsls r1, r1, #5 + movs r0, #0xa0 + lsls r0, r0, #0x13 + adds r1, r1, r0 + ldr r2, _080A3DE8 + adds r0, r4, #0 + bl CpuSet + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3DEC + movs r3, #0 + b _080A3DF6 + .align 2, 0 +_080A3DC0: .4byte 0x06004000 +_080A3DC4: .4byte 0x0600E000 +_080A3DC8: .4byte 0x01000800 +_080A3DCC: .4byte 0x01000400 +_080A3DD0: .4byte gUnknown_2023E88 +_080A3DD4: .4byte gUnknown_2022ACC +_080A3DD8: .4byte gUnknown_20205AC +_080A3DDC: .4byte gUnknown_2039BD4 +_080A3DE0: .4byte gUnknown_2022ACE +_080A3DE4: .4byte gUnknown_20375B4 +_080A3DE8: .4byte 0x04000008 +_080A3DEC: + adds r0, r6, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080A3DF6: + add r0, sp, #0x10 + ldrb r0, [r0, #8] + str r0, [sp] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [sp, #0x14] + str r0, [sp, #8] + add r0, sp, #0x10 + ldrh r0, [r0, #0xa] + str r0, [sp, #0xc] + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811980C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A3E20 + b _080A3F2E +_080A3E20: + bl sub_080A3F68 + b _080A3F2E +_080A3E26: + ldr r1, _080A3F3C + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + ldr r1, _080A3F40 + movs r7, #0x80 + lsls r7, r7, #5 + movs r0, #0 + adds r2, r7, #0 + movs r3, #1 + bl sub_08000F90 + add r0, sp, #0x10 + movs r1, #2 + bl sub_080A6458 + add r0, sp, #0x24 + movs r4, #0 + strh r4, [r0] + ldr r1, [sp, #0x10] + adds r1, r1, r7 + ldr r2, _080A3F44 + bl CpuSet + mov r0, sp + adds r0, #0x26 + strh r4, [r0] + ldr r1, [sp, #0x14] + movs r2, #0x80 + lsls r2, r2, #4 + mov r8, r2 + add r1, r8 + ldr r2, _080A3F48 + bl CpuSet + movs r0, #2 + movs r1, #4 + movs r2, #2 + bl sub_0811887C + movs r0, #2 + movs r1, #0 + movs r2, #1 + bl sub_0811887C + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_0811887C + ldr r0, _080A3F4C + adds r2, r5, r0 + ldrb r4, [r2] + ldr r5, _080A3F50 + ldr r3, _080A3F54 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r1, #0x24] + ldrh r4, [r1, #0x20] + adds r0, r0, r4 + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r5] + ldr r4, _080A3F58 + ldrh r0, [r1, #0x26] + ldrh r1, [r1, #0x22] + adds r0, r0, r1 + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r4] + mov r0, sb + cmp r0, #0 + beq _080A3ED6 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080A3ED6: + ldrh r1, [r5] + movs r0, #0x18 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x1a + bl sub_08001144 + lsls r4, r6, #5 + ldr r0, _080A3F5C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080A3F60 + ldr r2, _080A3F64 + adds r0, r4, #0 + bl CpuSet + adds r0, r6, #0 + bl sub_080A630C + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r0, sp, #0x10 + ldrb r0, [r0, #8] + str r0, [sp] + ldr r0, [sp, #0x10] + adds r0, r0, r7 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + add r0, r8 + str r0, [sp, #8] + add r0, sp, #0x10 + ldrh r0, [r0, #0xa] + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_0811980C +_080A3F2E: + add sp, #0x28 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3F3C: .4byte 0x06006000 +_080A3F40: .4byte 0x0600F000 +_080A3F44: .4byte 0x01000800 +_080A3F48: .4byte 0x01000400 +_080A3F4C: .4byte gUnknown_2023E88 +_080A3F50: .4byte gUnknown_2022AD0 +_080A3F54: .4byte gUnknown_20205AC +_080A3F58: .4byte gUnknown_2022AD2 +_080A3F5C: .4byte gUnknown_20375B4 +_080A3F60: .4byte 0x05000120 +_080A3F64: .4byte 0x04000008 + thumb_func_end sub_080A3C54 + + thumb_func_start sub_080A3F68 +sub_080A3F68: @ 0x080A3F68 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _080A3FE4 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + bl sub_080DAA0C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A3FDA + mov r0, sp + bl sub_080A63F8 + ldr r6, [sp, #4] + movs r5, #0 + movs r0, #7 + mov ip, r0 + movs r7, #0 +_080A3F8E: + movs r4, #0 + adds r3, r7, r6 + mov r1, ip + lsls r0, r1, #1 + adds r2, r0, r6 +_080A3F98: + ldrh r1, [r3] + ldrh r0, [r2] + strh r0, [r3] + strh r1, [r2] + adds r3, #2 + subs r2, #2 + adds r4, #1 + cmp r4, #3 + ble _080A3F98 + movs r0, #0x20 + add ip, r0 + adds r7, #0x40 + adds r5, #1 + cmp r5, #7 + ble _080A3F8E + movs r5, #0 + movs r1, #0x80 + lsls r1, r1, #3 + adds r3, r1, #0 +_080A3FBE: + adds r2, r5, #1 + lsls r0, r5, #6 + adds r1, r0, r6 + movs r4, #7 +_080A3FC6: + ldrh r0, [r1] + eors r0, r3 + strh r0, [r1] + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _080A3FC6 + adds r5, r2, #0 + cmp r5, #7 + ble _080A3FBE +_080A3FDA: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A3FE4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080A3F68 + + thumb_func_start sub_080A3FE8 +sub_080A3FE8: @ 0x080A3FE8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + adds r6, r2, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r3, r3, #0x18 + movs r0, #0x40 + mov ip, r0 + cmp r3, #0 + bne _080A4004 + movs r1, #0x20 + mov ip, r1 +_080A4004: + lsls r0, r5, #0x1c + lsrs r5, r0, #0x10 + movs r0, #0 + cmp r0, ip + bge _080A4034 + ldr r7, _080A4040 +_080A4010: + adds r4, r0, #1 + lsls r0, r0, #6 + mov r1, r8 + adds r3, r0, r1 + movs r2, #0x1f +_080A401A: + ldrh r1, [r3] + adds r0, r7, #0 + ands r0, r1 + orrs r0, r5 + adds r0, r0, r6 + strh r0, [r3] + adds r3, #2 + subs r2, #1 + cmp r2, #0 + bge _080A401A + adds r0, r4, #0 + cmp r0, ip + blt _080A4010 +_080A4034: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4040: .4byte 0x00000FFF + thumb_func_end sub_080A3FE8 + + thumb_func_start sub_080A4044 +sub_080A4044: @ 0x080A4044 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sp + bl sub_080A63F8 + cmp r4, #0 + beq _080A4064 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _080A4080 +_080A4064: + movs r0, #1 + bl sub_080A6530 + ldr r0, _080A4078 + movs r1, #0 + strh r1, [r0] + ldr r0, _080A407C + strh r1, [r0] + b _080A408E + .align 2, 0 +_080A4078: .4byte gUnknown_2022ACC +_080A407C: .4byte gUnknown_2022ACE +_080A4080: + movs r0, #2 + bl sub_080A6530 + ldr r0, _080A4098 + strh r4, [r0] + ldr r0, _080A409C + strh r4, [r0] +_080A408E: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4098: .4byte gUnknown_2022AD0 +_080A409C: .4byte gUnknown_2022AD2 + thumb_func_end sub_080A4044 + + thumb_func_start sub_080A40A0 +sub_080A40A0: @ 0x080A40A0 + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A411C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrb r4, [r5, #8] + ldrb r6, [r5, #0x14] + mov r0, sp + bl sub_080A63F8 + ldr r0, _080A4120 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x24] + ldrh r0, [r1, #0x20] + adds r2, r2, r0 + ldrh r0, [r5, #0xa] + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r2, [r1, #0x26] + ldrh r1, [r1, #0x22] + adds r2, r2, r1 + ldrh r0, [r5, #0xc] + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0x12 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080A4138 + ldr r1, _080A4124 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r5, #0xe] + adds r0, r0, r3 + strh r0, [r1] + ldr r1, _080A4128 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + ldrh r5, [r5, #0x10] + adds r0, r0, r5 + strh r0, [r1] + lsls r0, r6, #5 + ldr r2, _080A412C + adds r0, r0, r2 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #5 + ldr r3, _080A4130 + adds r2, r2, r3 + adds r1, r1, r2 + ldr r2, _080A4134 + bl CpuSet + b _080A415E + .align 2, 0 +_080A411C: .4byte gUnknown_3005B60 +_080A4120: .4byte gUnknown_20205AC +_080A4124: .4byte gUnknown_2022ACC +_080A4128: .4byte gUnknown_2022ACE +_080A412C: .4byte gUnknown_20379B4 +_080A4130: .4byte 0xFFFFFE00 +_080A4134: .4byte 0x04000008 +_080A4138: + ldr r1, _080A4168 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r5, #0xe] + adds r0, r0, r3 + strh r0, [r1] + ldr r1, _080A416C + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + ldrh r5, [r5, #0x10] + adds r0, r0, r5 + strh r0, [r1] + lsls r0, r6, #5 + ldr r1, _080A4170 + adds r0, r0, r1 + subs r1, #0xe0 + ldr r2, _080A4174 + bl CpuSet +_080A415E: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4168: .4byte gUnknown_2022AD0 +_080A416C: .4byte gUnknown_2022AD2 +_080A4170: .4byte gUnknown_20379B4 +_080A4174: .4byte 0x04000008 + thumb_func_end sub_080A40A0 + + thumb_func_start sub_080A4178 +sub_080A4178: @ 0x080A4178 + push {r4, r5, lr} + ldr r0, _080A418C + ldr r2, [r0] + adds r1, r2, #1 + str r1, [r0] + ldrb r4, [r2, #1] + cmp r4, #0 + bne _080A4190 + movs r4, #2 + b _080A419A + .align 2, 0 +_080A418C: .4byte gUnknown_2038090 +_080A4190: + cmp r4, #1 + bne _080A4196 + movs r4, #3 +_080A4196: + cmp r4, #0 + beq _080A419E +_080A419A: + cmp r4, #2 + bne _080A41A8 +_080A419E: + ldr r0, _080A41A4 + b _080A41AA + .align 2, 0 +_080A41A4: .4byte gUnknown_20380D6 +_080A41A8: + ldr r0, _080A4200 +_080A41AA: + ldrb r5, [r0] + ldr r3, _080A4204 + ldrb r0, [r3] + cmp r0, #0xff + beq _080A41D0 + ldr r2, _080A4208 + ldr r0, _080A420C + adds r0, r5, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_080A41D0: + cmp r4, #1 + bls _080A4210 + ldrb r0, [r3, #1] + cmp r0, #0xff + beq _080A4210 + ldr r3, _080A4208 + ldr r2, _080A420C + movs r1, #2 + adds r0, r5, #0 + eors r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + b _080A4212 + .align 2, 0 +_080A4200: .4byte gUnknown_20380D7 +_080A4204: .4byte gUnknown_20380D0 +_080A4208: .4byte gUnknown_20205AC +_080A420C: .4byte gUnknown_2023E88 +_080A4210: + movs r4, #0 +_080A4212: + ldr r0, _080A423C + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4240 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + strh r5, [r1, #0xc] + ldr r1, _080A4244 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A423C: .4byte sub_080A4248 +_080A4240: .4byte gUnknown_3005B60 +_080A4244: .4byte gUnknown_2038090 + thumb_func_end sub_080A4178 + + thumb_func_start sub_080A4248 +sub_080A4248: @ 0x080A4248 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080A4288 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _080A42D2 + ldrb r0, [r1, #0xc] + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A4284 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A428C +_080A4284: + movs r4, #0 + b _080A428E + .align 2, 0 +_080A4288: .4byte gUnknown_3005B60 +_080A428C: + movs r4, #1 +_080A428E: + ldr r6, _080A42D8 + ldrb r0, [r6] + cmp r0, #0xff + beq _080A42A6 + adds r0, r4, #0 + bl sub_080A4044 + ldrb r0, [r6] + bl sub_080A8964 + movs r0, #0xff + strb r0, [r6] +_080A42A6: + ldr r0, _080A42DC + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #1 + ble _080A42CC + movs r0, #1 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A4044 + ldrb r0, [r6, #1] + bl sub_080A8964 + movs r0, #0xff + strb r0, [r6, #1] +_080A42CC: + adds r0, r5, #0 + bl sub_080A8964 +_080A42D2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A42D8: .4byte gUnknown_20380D0 +_080A42DC: .4byte gUnknown_3005B60 + thumb_func_end sub_080A4248 + + thumb_func_start sub_080A42E0 +sub_080A42E0: @ 0x080A42E0 + push {r4, r5, lr} + ldr r0, _080A42F4 + ldr r2, [r0] + adds r1, r2, #1 + str r1, [r0] + ldrb r5, [r2, #1] + cmp r5, #0 + bne _080A42F8 + movs r5, #2 + b _080A4302 + .align 2, 0 +_080A42F4: .4byte gUnknown_2038090 +_080A42F8: + cmp r5, #1 + bne _080A42FE + movs r5, #3 +_080A42FE: + cmp r5, #0 + beq _080A4306 +_080A4302: + cmp r5, #2 + bne _080A4310 +_080A4306: + ldr r0, _080A430C + b _080A4312 + .align 2, 0 +_080A430C: .4byte gUnknown_20380D6 +_080A4310: + ldr r0, _080A4344 +_080A4312: + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4352 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A433E + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4348 +_080A433E: + movs r1, #0 + b _080A434A + .align 2, 0 +_080A4344: .4byte gUnknown_20380D7 +_080A4348: + movs r1, #1 +_080A434A: + adds r0, r4, #0 + movs r2, #0 + bl sub_080A3C54 +_080A4352: + movs r0, #2 + eors r4, r0 + cmp r5, #1 + bls _080A4392 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4392 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A4384 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4388 +_080A4384: + movs r1, #0 + b _080A438A +_080A4388: + movs r1, #1 +_080A438A: + adds r0, r4, #0 + movs r2, #0 + bl sub_080A3C54 +_080A4392: + ldr r1, _080A43A0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A43A0: .4byte gUnknown_2038090 + thumb_func_end sub_080A42E0 + + thumb_func_start sub_080A43A4 +sub_080A43A4: @ 0x080A43A4 + push {r4, r5, r6, lr} + ldr r0, _080A43B8 + ldr r2, [r0] + adds r1, r2, #1 + str r1, [r0] + ldrb r5, [r2, #1] + cmp r5, #0 + bne _080A43BC + movs r5, #2 + b _080A43C6 + .align 2, 0 +_080A43B8: .4byte gUnknown_2038090 +_080A43BC: + cmp r5, #1 + bne _080A43C2 + movs r5, #3 +_080A43C2: + cmp r5, #0 + beq _080A43CA +_080A43C6: + cmp r5, #2 + bne _080A43D4 +_080A43CA: + ldr r0, _080A43D0 + b _080A43D6 + .align 2, 0 +_080A43D0: .4byte gUnknown_20380D6 +_080A43D4: + ldr r0, _080A4434 +_080A43D6: + ldrb r6, [r0] + adds r0, r6, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4400 + ldr r2, _080A4438 + ldr r0, _080A443C + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_080A4400: + cmp r5, #1 + bls _080A4440 + movs r0, #2 + adds r4, r6, #0 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4440 + ldr r2, _080A4438 + ldr r0, _080A443C + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + b _080A4442 + .align 2, 0 +_080A4434: .4byte gUnknown_20380D7 +_080A4438: .4byte gUnknown_20205AC +_080A443C: .4byte gUnknown_2023E88 +_080A4440: + movs r5, #0 +_080A4442: + ldr r0, _080A446C + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4470 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + strh r6, [r1, #0xc] + ldr r1, _080A4474 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A446C: .4byte sub_080A4478 +_080A4470: .4byte gUnknown_3005B60 +_080A4474: .4byte gUnknown_2038090 + thumb_func_end sub_080A43A4 + + thumb_func_start sub_080A4478 +sub_080A4478: @ 0x080A4478 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080A44BC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _080A4506 + ldrb r4, [r1, #0xc] + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080A44B6 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A44C0 +_080A44B6: + movs r5, #0 + b _080A44C2 + .align 2, 0 +_080A44BC: .4byte gUnknown_3005B60 +_080A44C0: + movs r5, #1 +_080A44C2: + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A44D4 + adds r0, r5, #0 + bl sub_080A4044 +_080A44D4: + ldr r0, _080A450C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #1 + ble _080A4500 + movs r0, #2 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4500 + movs r0, #1 + eors r5, r0 + adds r0, r5, #0 + bl sub_080A4044 +_080A4500: + adds r0, r6, #0 + bl sub_080A8964 +_080A4506: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A450C: .4byte gUnknown_3005B60 + thumb_func_end sub_080A4478 + + thumb_func_start sub_080A4510 +sub_080A4510: @ 0x080A4510 + push {r4, r5, lr} + ldr r2, _080A4544 + ldr r0, [r2] + adds r1, r0, #1 + str r1, [r2] + ldrb r5, [r0, #1] + adds r0, r1, #1 + str r0, [r2] + ldrb r4, [r1, #1] + lsls r4, r4, #8 + adds r0, #1 + str r0, [r2] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + orrs r5, r4 + movs r0, #0x52 + adds r1, r5, #0 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4544: .4byte gUnknown_2038090 + thumb_func_end sub_080A4510 + + thumb_func_start sub_080A4548 +sub_080A4548: @ 0x080A4548 + push {lr} + ldr r3, _080A456C + ldr r0, [r3] + adds r2, r0, #1 + str r2, [r3] + ldrb r1, [r0, #1] + adds r0, r2, #1 + str r0, [r3] + ldrb r2, [r2, #1] + lsls r2, r2, #8 + adds r0, #1 + str r0, [r3] + orrs r1, r2 + movs r0, #0x50 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080A456C: .4byte gUnknown_2038090 + thumb_func_end sub_080A4548 + + thumb_func_start sub_080A4570 +sub_080A4570: @ 0x080A4570 + push {lr} + ldr r1, _080A4590 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080A4590: .4byte gUnknown_2038090 + thumb_func_end sub_080A4570 + + thumb_func_start sub_080A4594 +sub_080A4594: @ 0x080A4594 + push {r4, lr} + ldr r4, _080A45C0 + ldr r1, [r4] + adds r3, r1, #1 + str r3, [r4] + ldr r2, _080A45C4 + adds r0, r1, #5 + str r0, [r2] + ldrb r1, [r1, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A45C0: .4byte gUnknown_2038090 +_080A45C4: .4byte gUnknown_2038094 + thumb_func_end sub_080A4594 + + thumb_func_start sub_080A45C8 +sub_080A45C8: @ 0x080A45C8 + ldr r0, _080A45D4 + ldr r1, _080A45D8 + ldr r1, [r1] + str r1, [r0] + bx lr + .align 2, 0 +_080A45D4: .4byte gUnknown_2038090 +_080A45D8: .4byte gUnknown_2038094 + thumb_func_end sub_080A45C8 + + thumb_func_start sub_080A45DC +sub_080A45DC: @ 0x080A45DC + push {r4, r5, lr} + ldr r5, _080A4608 + ldr r1, [r5] + adds r0, r1, #1 + str r0, [r5] + ldrb r2, [r1, #1] + adds r3, r0, #1 + str r3, [r5] + ldrb r4, [r0, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r4, r0 + adds r1, #4 + str r1, [r5] + ldr r0, _080A460C + lsls r2, r2, #1 + adds r2, r2, r0 + strh r4, [r2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4608: .4byte gUnknown_2038090 +_080A460C: .4byte gUnknown_20380BE + thumb_func_end sub_080A45DC + + thumb_func_start sub_080A4610 +sub_080A4610: @ 0x080A4610 + push {lr} + ldr r3, _080A4648 + ldr r2, [r3] + adds r0, r2, #1 + str r0, [r3] + ldr r0, _080A464C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A462A + adds r0, r2, #5 + str r0, [r3] +_080A462A: + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080A4648: .4byte gUnknown_2038090 +_080A464C: .4byte gUnknown_20380D2 + thumb_func_end sub_080A4610 + + thumb_func_start sub_080A4650 +sub_080A4650: @ 0x080A4650 + push {r4, r5, lr} + ldr r5, _080A4680 + ldr r4, [r5] + adds r2, r4, #1 + str r2, [r5] + ldrb r1, [r4, #1] + adds r3, r2, #1 + str r3, [r5] + ldr r0, _080A4684 + ldrb r0, [r0] + cmp r1, r0 + bne _080A4688 + ldrb r1, [r2, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r5] + b _080A468C + .align 2, 0 +_080A4680: .4byte gUnknown_2038090 +_080A4684: .4byte gUnknown_20380D2 +_080A4688: + adds r0, r4, #6 + str r0, [r5] +_080A468C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A4650 + + thumb_func_start sub_080A4694 +sub_080A4694: @ 0x080A4694 + ldr r3, _080A46B4 + ldr r0, [r3] + adds r2, r0, #1 + str r2, [r3] + ldrb r1, [r0, #1] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_080A46B4: .4byte gUnknown_2038090 + thumb_func_end sub_080A4694 + + thumb_func_start sub_080A46B8 +sub_080A46B8: @ 0x080A46B8 + push {lr} + ldr r0, _080A46D0 + ldr r1, _080A46D4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080A46D8 + movs r0, #0 + b _080A46DA + .align 2, 0 +_080A46D0: .4byte gUnknown_3002360 +_080A46D4: .4byte 0x00000439 +_080A46D8: + movs r0, #1 +_080A46DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A46B8 + + thumb_func_start sub_080A46E0 +sub_080A46E0: @ 0x080A46E0 + push {r4, lr} + ldr r1, _080A4714 + ldr r2, [r1] + adds r0, r2, #1 + str r0, [r1] + ldrb r4, [r2, #1] + adds r0, #1 + str r0, [r1] + ldr r0, _080A4718 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A471C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + ldr r1, _080A4720 + movs r0, #1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4714: .4byte gUnknown_2038090 +_080A4718: .4byte sub_080A47BC +_080A471C: .4byte gUnknown_3005B60 +_080A4720: .4byte gUnknown_20380D3 + thumb_func_end sub_080A46E0 + + thumb_func_start sub_080A4724 +sub_080A4724: @ 0x080A4724 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r2, _080A4764 + ldr r1, [r2] + adds r0, r1, #1 + str r0, [r2] + ldrb r3, [r1, #1] + mov r8, r3 + ldrb r7, [r0, #1] + ldrb r6, [r0, #2] + adds r1, #4 + str r1, [r2] + ldr r0, _080A4768 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4770 + ldr r1, _080A476C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #8] + b _080A47A2 + .align 2, 0 +_080A4764: .4byte gUnknown_2038090 +_080A4768: .4byte sub_080A47BC +_080A476C: .4byte gUnknown_3005B60 +_080A4770: + ldr r0, _080A478C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4794 + ldr r1, _080A4790 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r7, [r0, #8] + b _080A47A2 + .align 2, 0 +_080A478C: .4byte gUnknown_20380D7 +_080A4790: .4byte gUnknown_3005B60 +_080A4794: + ldr r1, _080A47B4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + mov r1, r8 + strh r1, [r0, #8] +_080A47A2: + ldr r1, _080A47B8 + movs r0, #1 + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A47B4: .4byte gUnknown_3005B60 +_080A47B8: .4byte gUnknown_20380D3 + thumb_func_end sub_080A4724 + + thumb_func_start sub_080A47BC +sub_080A47BC: @ 0x080A47BC + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080A47F0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, 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 _080A47F4 + str r3, [sp] + movs r0, #0xe8 + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A2078 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + b _080A4884 + .align 2, 0 +_080A47F0: .4byte gUnknown_3005B60 +_080A47F4: + ldr r2, _080A4810 + ldrb r1, [r2, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A4884 + cmp r3, #1 + bne _080A4818 + adds r0, r6, #1 + strh r0, [r4, #0x1c] + ldr r1, _080A4814 + movs r0, #2 + strb r0, [r1] + b _080A485C + .align 2, 0 +_080A4810: .4byte gUnknown_2037C74 +_080A4814: .4byte gUnknown_20380D3 +_080A4818: + cmp r3, #2 + bne _080A485C + ldrh r0, [r4, #8] + lsls r2, r0, #0x10 + asrs r1, r2, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080A4830 + bl sub_080A4958 + b _080A4836 +_080A4830: + lsrs r0, r2, #0x10 + bl sub_080A4890 +_080A4836: + movs r0, #1 + str r0, [sp] + movs r0, #0xe8 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A2078 + ldr r1, _080A4858 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x1c] + adds r1, #1 + strh r1, [r0, #0x1c] + b _080A4884 + .align 2, 0 +_080A4858: .4byte gUnknown_3005B60 +_080A485C: + ldrb r1, [r2, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080A4884 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #0x1c + ldrsh r0, [r0, r1] + cmp r0, #3 + bne _080A4884 + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _080A488C + strb r4, [r0] +_080A4884: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A488C: .4byte gUnknown_20380D3 + thumb_func_end sub_080A47BC + + thumb_func_start sub_080A4890 +sub_080A4890: @ 0x080A4890 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4918 + ldr r6, _080A4900 + lsls r4, r7, #1 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r0, r6, #0 + adds r0, #8 + adds r0, r4, r0 + ldr r0, [r0] + ldr r5, _080A4904 + adds r1, r5, #0 + bl sub_08034370 + bl sub_080A665C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r5, #0 + movs r3, #0 + bl sub_080A3FE8 + ldr r1, _080A4908 + ldr r0, _080A490C + str r5, [r0] + str r1, [r0, #4] + ldr r1, _080A4910 + str r1, [r0, #8] + ldr r0, [r0, #8] + adds r0, r4, r6 + ldr r0, [r0] + ldr r1, _080A4914 + bl sub_0803437C + adds r6, #4 + adds r4, r4, r6 + ldr r4, [r4] + bl sub_080A665C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x14 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A11BC + b _080A4946 + .align 2, 0 +_080A4900: .4byte gUnknown_84FE460 +_080A4904: .4byte gUnknown_201C000 +_080A4908: .4byte 0x0600D000 +_080A490C: .4byte 0x040000D4 +_080A4910: .4byte 0x84000200 +_080A4914: .4byte 0x06002000 +_080A4918: + ldr r5, _080A494C + lsls r4, r7, #1 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r0, r5, #0 + adds r0, #8 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _080A4950 + bl sub_0803437C + adds r0, r4, r5 + ldr r0, [r0] + ldr r1, _080A4954 + bl sub_0803437C + adds r5, #4 + adds r4, r4, r5 + ldr r0, [r4] + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A11BC +_080A4946: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A494C: .4byte gUnknown_84FE460 +_080A4950: .4byte 0x0600D000 +_080A4954: .4byte 0x06008000 + thumb_func_end sub_080A4890 + + thumb_func_start sub_080A4958 +sub_080A4958: @ 0x080A4958 + push {lr} + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A496A + bl sub_080D6F50 + b _080A496E +_080A496A: + bl sub_080355C8 +_080A496E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A4958 + + thumb_func_start sub_080A4974 +sub_080A4974: @ 0x080A4974 + push {lr} + ldr r1, _080A49A4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r0, _080A49A8 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A49AC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080A49B0 + strh r0, [r1, #8] + ldr r1, _080A49B4 + movs r0, #1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A49A4: .4byte gUnknown_2038090 +_080A49A8: .4byte sub_080A47BC +_080A49AC: .4byte gUnknown_3005B60 +_080A49B0: .4byte 0x0000FFFF +_080A49B4: .4byte gUnknown_20380D3 + thumb_func_end sub_080A4974 + + thumb_func_start sub_080A49B8 +sub_080A49B8: @ 0x080A49B8 + push {lr} + ldr r0, _080A49D0 + ldrb r0, [r0] + cmp r0, #2 + bne _080A49DC + ldr r1, _080A49D4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r1, _080A49D8 + movs r0, #0 + b _080A49E0 + .align 2, 0 +_080A49D0: .4byte gUnknown_20380D3 +_080A49D4: .4byte gUnknown_2038090 +_080A49D8: .4byte gUnknown_203809C +_080A49DC: + ldr r1, _080A49E8 + movs r0, #1 +_080A49E0: + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A49E8: .4byte gUnknown_203809C + thumb_func_end sub_080A49B8 + + thumb_func_start sub_080A49EC +sub_080A49EC: @ 0x080A49EC + push {lr} + ldr r0, _080A4A04 + ldrb r2, [r0] + cmp r2, #0 + bne _080A4A10 + ldr r0, _080A4A08 + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + ldr r0, _080A4A0C + strb r2, [r0] + b _080A4A16 + .align 2, 0 +_080A4A04: .4byte gUnknown_20380D3 +_080A4A08: .4byte gUnknown_2038090 +_080A4A0C: .4byte gUnknown_203809C +_080A4A10: + ldr r1, _080A4A1C + movs r0, #1 + strb r0, [r1] +_080A4A16: + pop {r0} + bx r0 + .align 2, 0 +_080A4A1C: .4byte gUnknown_203809C + thumb_func_end sub_080A49EC + + thumb_func_start sub_080A4A20 +sub_080A4A20: @ 0x080A4A20 + push {r4, lr} + ldr r4, _080A4A3C + ldr r1, [r4] + adds r0, r1, #1 + str r0, [r4] + ldrb r0, [r1, #1] + bl sub_080A4890 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4A3C: .4byte gUnknown_2038090 + thumb_func_end sub_080A4A20 + + thumb_func_start sub_080A4A40 +sub_080A4A40: @ 0x080A4A40 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4A88 + ldr r0, _080A4A80 + ldr r1, [r0] + ldr r0, _080A4A84 + ldrb r2, [r0] + ldr r1, [r1, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080A4A88 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r4, #0xc0 + cmp r0, #0 + beq _080A4B1A + movs r4, #0x3f + b _080A4B1A + .align 2, 0 +_080A4A80: .4byte gUnknown_2024174 +_080A4A84: .4byte gUnknown_20380D6 +_080A4A88: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4AB0 + ldr r0, _080A4AA8 + ldr r1, _080A4AAC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _080A4B14 + cmp r0, #2 + bne _080A4B14 + cmp r4, #0x3f + beq _080A4B26 + b _080A4B14 + .align 2, 0 +_080A4AA8: .4byte gUnknown_20380D6 +_080A4AAC: .4byte gUnknown_20380D7 +_080A4AB0: + ldr r0, _080A4AD8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4AEE + ldr r0, _080A4ADC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4B1A + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0x3f + bne _080A4AE0 + movs r4, #0xc0 + b _080A4B1A + .align 2, 0 +_080A4AD8: .4byte gUnknown_20380D6 +_080A4ADC: .4byte gUnknown_20380D7 +_080A4AE0: + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080A4B1A + rsbs r0, r1, #0 + lsls r0, r0, #0x18 + b _080A4B18 +_080A4AEE: + ldr r0, _080A4B10 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080A4B14 + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x40 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080A4B1A + movs r4, #0x3f + b _080A4B1A + .align 2, 0 +_080A4B10: .4byte gUnknown_20380D7 +_080A4B14: + lsls r0, r4, #0x18 + rsbs r0, r0, #0 +_080A4B18: + lsrs r4, r0, #0x18 +_080A4B1A: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x3f + ble _080A4B26 + movs r4, #0x3f + b _080A4B34 +_080A4B26: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x40 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080A4B34 + movs r4, #0xc0 +_080A4B34: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A4A40 + + thumb_func_start sub_080A4B40 +sub_080A4B40: @ 0x080A4B40 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4B88 + ldr r0, _080A4B80 + ldr r1, [r0] + ldr r0, _080A4B84 + ldrb r2, [r0] + ldr r1, [r1, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080A4B88 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r4, #0xc0 + cmp r0, #0 + beq _080A4BA6 + movs r4, #0x3f + b _080A4BA6 + .align 2, 0 +_080A4B80: .4byte gUnknown_2024174 +_080A4B84: .4byte gUnknown_20380D6 +_080A4B88: + ldr r0, _080A4BB0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A4BA0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A4BA6 +_080A4BA0: + lsls r0, r4, #0x18 + rsbs r0, r0, #0 + lsrs r4, r0, #0x18 +_080A4BA6: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A4BB0: .4byte gUnknown_20380D6 + thumb_func_end sub_080A4B40 + + thumb_func_start sub_080A4BB4 +sub_080A4BB4: @ 0x080A4BB4 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0x3f + ble _080A4BC4 + movs r1, #0x3f + b _080A4BCE +_080A4BC4: + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r2, r0 + bge _080A4BCE + ldr r1, _080A4BD8 +_080A4BCE: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080A4BD8: .4byte 0x0000FFC0 + thumb_func_end sub_080A4BB4 + + thumb_func_start sub_080A4BDC +sub_080A4BDC: @ 0x080A4BDC + push {lr} + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r3, r2, #0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bge _080A4BFA + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080A4C0A + b _080A4C08 +_080A4BFA: + cmp r0, r1 + ble _080A4C10 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080A4C08 + rsbs r0, r0, #0 +_080A4C08: + rsbs r0, r0, #0 +_080A4C0A: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080A4C12 +_080A4C10: + movs r0, #0 +_080A4C12: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A4BDC + + thumb_func_start sub_080A4C1C +sub_080A4C1C: @ 0x080A4C1C + push {r4, r5, lr} + ldr r5, _080A4C50 + ldr r0, [r5] + adds r1, r0, #1 + str r1, [r5] + ldrb r4, [r0, #1] + ldrb r0, [r1, #1] + lsls r0, r0, #8 + orrs r4, r0 + movs r0, #2 + ldrsb r0, [r1, r0] + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080A307C + ldr r0, [r5] + adds r0, #3 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A4C50: .4byte gUnknown_2038090 + thumb_func_end sub_080A4C1C + + thumb_func_start sub_080A4C54 +sub_080A4C54: @ 0x080A4C54 + push {r4, lr} + ldr r4, _080A4C7C + ldr r1, [r4] + adds r0, r1, #1 + str r0, [r4] + movs r0, #1 + ldrsb r0, [r1, r0] + bl sub_080A4A40 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A3138 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A4C7C: .4byte gUnknown_2038090 + thumb_func_end sub_080A4C54 + + thumb_func_start sub_080A4C80 +sub_080A4C80: @ 0x080A4C80 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A4D30 + mov sl, r0 + ldr r0, [r0] + adds r1, r0, #1 + mov r2, sl + str r1, [r2] + ldrb r0, [r0, #1] + mov sb, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #8 + mov r2, sb + orrs r2, r0 + mov sb, r2 + ldrb r4, [r1, #3] + ldrb r6, [r1, #4] + ldrb r7, [r1, #5] + movs r0, #2 + ldrsb r0, [r1, r0] + bl sub_080A4A40 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A4A40 + mov r8, r0 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + adds r0, r5, #0 + mov r1, r8 + adds r2, r6, #0 + bl sub_080A4BDC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A4D34 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4D38 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + mov r2, r8 + strh r2, [r1, #0xa] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #0xc] + strh r7, [r1, #0xe] + strh r5, [r1, #0x10] + mov r0, sb + adds r1, r5, #0 + bl sub_080A307C + ldr r1, _080A4D3C + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r1, sl + ldr r0, [r1] + adds r0, #6 + str r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4D30: .4byte gUnknown_2038090 +_080A4D34: .4byte sub_080A4D40 +_080A4D38: .4byte gUnknown_3005B60 +_080A4D3C: .4byte gUnknown_203809F + thumb_func_end sub_080A4C80 + + thumb_func_start sub_080A4D40 +sub_080A4D40: @ 0x080A4D40 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r7, #0 + ldr r1, _080A4D84 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0x18] + adds r1, r0, #1 + strh r1, [r2, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0xe + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _080A4DC4 + strh r7, [r2, #0x18] + ldrh r6, [r2, #8] + ldrh r3, [r2, #0xa] + movs r4, #0x10 + ldrsh r0, [r2, r4] + movs r4, #0xc + ldrsh r1, [r2, r4] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + strh r4, [r2, #0x10] + cmp r1, #0 + bne _080A4D88 + lsls r2, r3, #0x10 + b _080A4DAC + .align 2, 0 +_080A4D84: .4byte gUnknown_3005B60 +_080A4D88: + lsls r1, r6, #0x10 + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + adds r2, r0, #0 + cmp r1, r2 + bge _080A4D9E + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + blt _080A4DA8 + b _080A4DAC +_080A4D9E: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + bgt _080A4DA8 + movs r7, #1 +_080A4DA8: + cmp r7, #0 + beq _080A4DBC +_080A4DAC: + lsrs r4, r2, #0x10 + adds r0, r5, #0 + bl sub_080A8964 + ldr r1, _080A4DCC + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_080A4DBC: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + bl sub_080A3138 +_080A4DC4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4DCC: .4byte gUnknown_203809F + thumb_func_end sub_080A4D40 + + thumb_func_start sub_080A4DD0 +sub_080A4DD0: @ 0x080A4DD0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + ldr r0, _080A4E54 + mov sb, r0 + ldr r0, [r0] + adds r1, r0, #1 + mov r2, sb + str r1, [r2] + ldrb r0, [r0, #1] + mov r8, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #8 + mov r2, r8 + orrs r2, r0 + mov r8, r2 + ldrb r4, [r1, #2] + ldrb r5, [r1, #3] + ldrb r6, [r1, #4] + ldrb r1, [r1, #5] + mov sl, r1 + ldr r0, _080A4E58 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4E5C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #8] + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + strh r5, [r1, #0xa] + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + strh r6, [r1, #0xc] + mov r0, sl + strh r0, [r1, #0xe] + strh r4, [r1, #0x10] + mov r0, r8 + adds r1, r4, #0 + bl sub_080A307C + ldr r1, _080A4E60 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r1, sb + ldr r0, [r1] + adds r0, #6 + str r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4E54: .4byte gUnknown_2038090 +_080A4E58: .4byte sub_080A4D40 +_080A4E5C: .4byte gUnknown_3005B60 +_080A4E60: .4byte gUnknown_203809F + thumb_func_end sub_080A4DD0 + + thumb_func_start sub_080A4E64 +sub_080A4E64: @ 0x080A4E64 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A4F14 + mov sl, r0 + ldr r0, [r0] + adds r1, r0, #1 + mov r2, sl + str r1, [r2] + ldrb r0, [r0, #1] + mov sb, r0 + ldrb r0, [r1, #1] + lsls r0, r0, #8 + mov r2, sb + orrs r2, r0 + mov sb, r2 + ldrb r4, [r1, #3] + ldrb r0, [r1, #4] + mov r8, r0 + ldrb r7, [r1, #5] + movs r0, #2 + ldrsb r0, [r1, r0] + bl sub_080A4B40 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A4B40 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + mov r0, r8 + bl sub_080A4B40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A4F18 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4F1C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + strh r6, [r1, #8] + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + strh r5, [r1, #0xa] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #0xc] + strh r7, [r1, #0xe] + strh r6, [r1, #0x10] + mov r0, sb + adds r1, r6, #0 + bl sub_080A307C + ldr r1, _080A4F20 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + mov r2, sl + ldr r0, [r2] + adds r0, #6 + str r0, [r2] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A4F14: .4byte gUnknown_2038090 +_080A4F18: .4byte sub_080A4D40 +_080A4F1C: .4byte gUnknown_3005B60 +_080A4F20: .4byte gUnknown_203809F + thumb_func_end sub_080A4E64 + + thumb_func_start sub_080A4F24 +sub_080A4F24: @ 0x080A4F24 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + ldr r6, _080A4F9C + ldr r0, [r6] + adds r1, r0, #1 + str r1, [r6] + ldrb r5, [r0, #1] + ldrb r0, [r1, #1] + lsls r0, r0, #8 + orrs r5, r0 + ldrb r0, [r1, #3] + mov r8, r0 + ldrb r2, [r1, #4] + mov sb, r2 + movs r0, #2 + ldrsb r0, [r1, r0] + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A4FA0 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A4FA4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #0xa] + mov r2, r8 + strh r2, [r1, #0xc] + mov r2, sb + strh r2, [r1, #0xe] + mov r2, r8 + strh r2, [r1, #0x18] + ldr r1, [r1] + bl _call_via_r1 + ldr r1, _080A4FA8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r6] + adds r0, #5 + str r0, [r6] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A4F9C: .4byte gUnknown_2038090 +_080A4FA0: .4byte sub_080A4FAC +_080A4FA4: .4byte gUnknown_3005B60 +_080A4FA8: .4byte gUnknown_203809F + thumb_func_end sub_080A4F24 + + thumb_func_start sub_080A4FAC +sub_080A4FAC: @ 0x080A4FAC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080A5000 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0x18] + adds r1, r0, #1 + strh r1, [r2, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0xc + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _080A4FFA + movs r0, #0 + strh r0, [r2, #0x18] + ldrh r0, [r2, #8] + ldrb r1, [r2, #0xa] + ldrh r4, [r2, #0xe] + subs r4, #1 + strh r4, [r2, #0xe] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + cmp r4, #0 + bne _080A4FFA + adds r0, r5, #0 + bl sub_080A8964 + ldr r1, _080A5004 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_080A4FFA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5000: .4byte gUnknown_3005B60 +_080A5004: .4byte gUnknown_203809F + thumb_func_end sub_080A4FAC + + thumb_func_start sub_080A5008 +sub_080A5008: @ 0x080A5008 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r6, _080A506C + ldr r0, [r6] + adds r1, r0, #1 + str r1, [r6] + ldrb r5, [r0, #1] + ldrb r0, [r1, #1] + lsls r0, r0, #8 + orrs r5, r0 + ldrb r0, [r1, #3] + mov r8, r0 + movs r0, #2 + ldrsb r0, [r1, r0] + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A5070 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A5074 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #0xa] + mov r0, r8 + strh r0, [r1, #0xc] + ldr r1, _080A5078 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r6] + adds r0, #4 + str r0, [r6] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A506C: .4byte gUnknown_2038090 +_080A5070: .4byte sub_080A507C +_080A5074: .4byte gUnknown_3005B60 +_080A5078: .4byte gUnknown_203809F + thumb_func_end sub_080A5008 + + thumb_func_start sub_080A507C +sub_080A507C: @ 0x080A507C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080A50B8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0xc] + subs r1, r0, #1 + strh r1, [r2, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080A50B0 + ldrh r0, [r2, #8] + movs r1, #0xa + ldrsb r1, [r2, r1] + bl sub_080A307C + adds r0, r4, #0 + bl sub_080A8964 + ldr r1, _080A50BC + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_080A50B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A50B8: .4byte gUnknown_3005B60 +_080A50BC: .4byte gUnknown_203809F + thumb_func_end sub_080A507C + + thumb_func_start sub_080A50C0 +sub_080A50C0: @ 0x080A50C0 + push {r4, r5, r6, lr} + ldr r4, _080A5128 + ldr r1, [r4] + adds r3, r1, #1 + str r3, [r4] + ldrb r2, [r1, #1] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + adds r2, r2, r0 + ldrb r0, [r3, #2] + lsls r0, r0, #0x10 + adds r2, r2, r0 + ldrb r0, [r3, #3] + lsls r0, r0, #0x18 + adds r6, r2, r0 + adds r0, r1, #5 + str r0, [r4] + ldrb r0, [r1, #5] + adds r1, #6 + str r1, [r4] + cmp r0, #0 + beq _080A510A + adds r5, r4, #0 + ldr r4, _080A512C + adds r3, r0, #0 +_080A50F2: + ldr r2, [r5] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r4] + adds r2, #2 + str r2, [r5] + adds r4, #2 + subs r3, #1 + cmp r3, #0 + bne _080A50F2 +_080A510A: + adds r0, r6, #0 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r6 + ldr r1, _080A5130 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A5128: .4byte gUnknown_2038090 +_080A512C: .4byte gUnknown_20380BE +_080A5130: .4byte gUnknown_203809F + thumb_func_end sub_080A50C0 + + thumb_func_start sub_080A5134 +sub_080A5134: @ 0x080A5134 + push {r4, r5, lr} + ldr r0, _080A516C + ldrb r5, [r0] + cmp r5, #0 + bne _080A517C + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080A5194 + ldr r4, _080A5170 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x5a + bls _080A5182 + ldr r0, _080A5174 + bl m4aMPlayStop + ldr r0, _080A5178 + bl m4aMPlayStop + strh r5, [r4] + b _080A51A6 + .align 2, 0 +_080A516C: .4byte gUnknown_203809F +_080A5170: .4byte gUnknown_20380CE +_080A5174: .4byte gUnknown_3007510 +_080A5178: .4byte gUnknown_3007550 +_080A517C: + ldr r1, _080A518C + movs r0, #0 + strh r0, [r1] +_080A5182: + ldr r1, _080A5190 + movs r0, #1 + strb r0, [r1] + b _080A51A6 + .align 2, 0 +_080A518C: .4byte gUnknown_20380CE +_080A5190: .4byte gUnknown_203809C +_080A5194: + ldr r0, _080A51AC + movs r2, #0 + strh r1, [r0] + ldr r1, _080A51B0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r0, _080A51B4 + strb r2, [r0] +_080A51A6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A51AC: .4byte gUnknown_20380CE +_080A51B0: .4byte gUnknown_2038090 +_080A51B4: .4byte gUnknown_203809C + thumb_func_end sub_080A5134 + + thumb_func_start sub_080A51B8 +sub_080A51B8: @ 0x080A51B8 + push {r4, r5, r6, lr} + ldr r5, _080A51F8 + ldr r4, [r5] + adds r3, r4, #1 + str r3, [r5] + ldrb r2, [r4, #1] + ldrb r1, [r3, #1] + ldrb r0, [r3, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r0, _080A51FC + lsls r2, r2, #1 + adds r2, r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r6, #0 + ldrsh r0, [r2, r6] + cmp r1, r0 + bne _080A5200 + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r5] + b _080A5206 + .align 2, 0 +_080A51F8: .4byte gUnknown_2038090 +_080A51FC: .4byte gUnknown_20380BE +_080A5200: + adds r0, r4, #0 + adds r0, #8 + str r0, [r5] +_080A5206: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080A51B8 + + thumb_func_start sub_080A520C +sub_080A520C: @ 0x080A520C + push {r4, lr} + ldr r4, _080A523C + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5240 + ldr r2, [r4] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + adds r1, r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + adds r1, r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + adds r1, r1, r0 + str r1, [r4] + b _080A5246 + .align 2, 0 +_080A523C: .4byte gUnknown_2038090 +_080A5240: + ldr r0, [r4] + adds r0, #4 + str r0, [r4] +_080A5246: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A520C + + thumb_func_start sub_080A524C +sub_080A524C: @ 0x080A524C + push {r4, lr} + ldr r0, _080A5260 + ldr r1, [r0] + ldrb r2, [r1, #1] + adds r1, #2 + str r1, [r0] + cmp r2, #0 + beq _080A5268 + ldr r0, _080A5264 + b _080A526A + .align 2, 0 +_080A5260: .4byte gUnknown_2038090 +_080A5264: .4byte gUnknown_20380D7 +_080A5268: + ldr r0, _080A52A0 +_080A526A: + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A529A + cmp r4, #0 + beq _080A5286 + cmp r4, #3 + bne _080A529A +_080A5286: + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #2 + movs r1, #4 + movs r2, #2 + bl sub_0811887C +_080A529A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A52A0: .4byte gUnknown_20380D6 + thumb_func_end sub_080A524C + + thumb_func_start sub_080A52A4 +sub_080A52A4: @ 0x080A52A4 + push {lr} + ldr r0, _080A52D0 + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A52CC + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #2 + movs r1, #4 + movs r2, #2 + bl sub_0811887C +_080A52CC: + pop {r0} + bx r0 + .align 2, 0 +_080A52D0: .4byte gUnknown_2038090 + thumb_func_end sub_080A52A4 + + thumb_func_start sub_080A52D4 +sub_080A52D4: @ 0x080A52D4 + push {r4, r5, r6, r7, lr} + ldr r1, _080A5304 + ldr r0, [r1] + ldrb r6, [r0, #1] + adds r0, #2 + str r0, [r1] + ldr r7, _080A5308 + ldrb r0, [r7] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r5, _080A530C + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080A5340 + cmp r6, #0 + beq _080A5310 + ldrb r0, [r5] + b _080A5312 + .align 2, 0 +_080A5304: .4byte gUnknown_2038090 +_080A5308: .4byte gUnknown_20380D6 +_080A530C: .4byte gUnknown_20380D7 +_080A5310: + ldrb r0, [r7] +_080A5312: + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A5340 + cmp r4, #0 + beq _080A532C + cmp r4, #3 + bne _080A5340 +_080A532C: + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #2 + movs r1, #4 + movs r2, #2 + bl sub_0811887C +_080A5340: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A52D4 + + thumb_func_start sub_080A5348 +sub_080A5348: @ 0x080A5348 + push {r4, lr} + ldr r4, _080A537C + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080A5370 + ldr r1, _080A5380 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080A5370: + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A537C: .4byte gUnknown_2038090 +_080A5380: .4byte gUnknown_20205AC + thumb_func_end sub_080A5348 + + thumb_func_start sub_080A5384 +sub_080A5384: @ 0x080A5384 + push {r4, lr} + ldr r4, _080A53BC + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080A53AE + ldr r1, _080A53C0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_080A53AE: + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A53BC: .4byte gUnknown_2038090 +_080A53C0: .4byte gUnknown_20205AC + thumb_func_end sub_080A5384 + + thumb_func_start sub_080A53C4 +sub_080A53C4: @ 0x080A53C4 + push {r4, r5, r6, r7, lr} + ldr r1, _080A5410 + ldr r0, [r1] + ldrb r7, [r0, #1] + adds r0, #2 + str r0, [r1] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A546E + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A546E + ldr r6, _080A5414 + ldrb r0, [r6] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r5, _080A5418 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080A546E + cmp r7, #0 + bne _080A541C + ldrb r0, [r6] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + b _080A5428 + .align 2, 0 +_080A5410: .4byte gUnknown_2038090 +_080A5414: .4byte gUnknown_20380D6 +_080A5418: .4byte gUnknown_20380D7 +_080A541C: + ldrb r0, [r5] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #1 +_080A5428: + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080A546E + ldr r1, _080A5464 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r2, r0, r1 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + cmp r4, #2 + bne _080A5458 + ldrb r0, [r2, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r2, #5] +_080A5458: + cmp r4, #1 + bne _080A5468 + movs r0, #0 + bl sub_080A4044 + b _080A546E + .align 2, 0 +_080A5464: .4byte gUnknown_20205AC +_080A5468: + movs r0, #1 + bl sub_080A4044 +_080A546E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080A53C4 + + thumb_func_start sub_080A5474 +sub_080A5474: @ 0x080A5474 + push {r4, r5, r6, r7, lr} + ldr r1, _080A54C0 + ldr r0, [r1] + ldrb r7, [r0, #1] + adds r0, #2 + str r0, [r1] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A5500 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5500 + ldr r6, _080A54C4 + ldrb r0, [r6] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r5, _080A54C8 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080A5500 + cmp r7, #0 + bne _080A54CC + ldrb r0, [r6] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + b _080A54D8 + .align 2, 0 +_080A54C0: .4byte gUnknown_2038090 +_080A54C4: .4byte gUnknown_20380D6 +_080A54C8: .4byte gUnknown_20380D7 +_080A54CC: + ldrb r0, [r5] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #1 +_080A54D8: + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080A5500 + cmp r4, #2 + bne _080A5500 + ldr r1, _080A5508 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #5] +_080A5500: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A5508: .4byte gUnknown_20205AC + thumb_func_end sub_080A5474 + + thumb_func_start sub_080A550C +sub_080A550C: @ 0x080A550C + push {lr} + ldr r0, _080A5528 + bl m4aMPlayStop + ldr r0, _080A552C + bl m4aMPlayStop + ldr r1, _080A5530 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080A5528: .4byte gUnknown_3007510 +_080A552C: .4byte gUnknown_3007550 +_080A5530: .4byte gUnknown_2038090 + thumb_func_end sub_080A550C + + thumb_func_start sub_080A5534 +sub_080A5534: @ 0x080A5534 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5552 + cmp r4, #3 + bne _080A5552 + cmp r5, #3 + bne _080A5552 + movs r4, #1 +_080A5552: + cmp r4, #4 + bhi _080A55C8 + lsls r0, r4, #2 + ldr r1, _080A5560 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A5560: .4byte _080A5564 +_080A5564: @ jump table + .4byte _080A5578 @ case 0 + .4byte _080A55A0 @ case 1 + .4byte _080A5578 @ case 2 + .4byte _080A55C8 @ case 3 + .4byte _080A55C8 @ case 4 +_080A5578: + ldr r4, _080A5598 + adds r0, r5, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + ldr r1, _080A559C + ldr r1, [r1] + movs r2, #1 + ands r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + b _080A5678 + .align 2, 0 +_080A5598: .4byte gUnknown_84FE664 +_080A559C: .4byte gUnknown_2022C90 +_080A55A0: + ldr r4, _080A55C0 + adds r0, r5, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + ldr r1, _080A55C4 + ldr r1, [r1] + movs r2, #1 + ands r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0, #1] + b _080A5678 + .align 2, 0 +_080A55C0: .4byte gUnknown_84FE664 +_080A55C4: .4byte gUnknown_2022C90 +_080A55C8: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A55F0 + ldr r0, _080A55E8 + ldr r0, [r0] + ldr r2, [r0, #0x18] + ldrb r1, [r2, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A55EC + ldrh r1, [r2, #2] + b _080A5662 + .align 2, 0 +_080A55E8: .4byte gUnknown_2039BD4 +_080A55EC: + ldrh r1, [r2] + b _080A5662 +_080A55F0: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5628 + ldr r0, _080A561C + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A5660 + ldr r1, _080A5620 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A5624 + b _080A5646 + .align 2, 0 +_080A561C: .4byte gUnknown_2024174 +_080A5620: .4byte gUnknown_2023D12 +_080A5624: .4byte gUnknown_20243E8 +_080A5628: + ldr r0, _080A5654 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A5660 + ldr r1, _080A5658 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A565C +_080A5646: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + b _080A5662 + .align 2, 0 +_080A5654: .4byte gUnknown_2024174 +_080A5658: .4byte gUnknown_2023D12 +_080A565C: .4byte gUnknown_2024190 +_080A5660: + ldrh r1, [r1, #2] +_080A5662: + cmp r4, #3 + bne _080A566C + adds r0, r5, #0 + movs r2, #1 + b _080A5670 +_080A566C: + adds r0, r5, #0 + movs r2, #0 +_080A5670: + bl sub_080A58D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080A5678: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A5534 + + thumb_func_start sub_080A5680 +sub_080A5680: @ 0x080A5680 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A56A2 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A56A2 + b _080A5790 +_080A56A2: + cmp r5, #0xc9 + bne _080A5758 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A56CC + ldr r0, _080A56C4 + ldr r0, [r0] + ldr r2, [r0, #0x18] + ldrb r1, [r2, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A56C8 + ldr r2, [r2, #0x10] + b _080A570A + .align 2, 0 +_080A56C4: .4byte gUnknown_2039BD4 +_080A56C8: + ldr r2, [r2, #8] + b _080A570A +_080A56CC: + ldr r0, _080A56F8 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r4, #2 + adds r0, r1, r0 + ldrh r0, [r0, #2] + cmp r0, #0 + bne _080A5704 + ldr r1, _080A56FC + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A5700 + adds r0, r0, r1 + movs r1, #0 + bl sub_0806A058 + adds r2, r0, #0 + b _080A570A + .align 2, 0 +_080A56F8: .4byte gUnknown_2024174 +_080A56FC: .4byte gUnknown_2023D12 +_080A5700: .4byte gUnknown_2024190 +_080A5704: + ldr r0, _080A5740 + adds r0, r1, r0 + ldr r2, [r0] +_080A570A: + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080A5744 + adds r0, r5, #0 + b _080A574E + .align 2, 0 +_080A5740: .4byte gUnknown_2024160 +_080A5744: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080A574E: + ldr r1, _080A5754 + lsls r0, r0, #2 + b _080A5858 + .align 2, 0 +_080A5754: .4byte gUnknown_82D5A68 +_080A5758: + ldr r0, _080A576C + cmp r5, r0 + bne _080A5778 + ldr r0, _080A5770 + ldr r1, _080A5774 + adds r1, r4, r1 + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + b _080A585C + .align 2, 0 +_080A576C: .4byte 0x00000181 +_080A5770: .4byte gUnknown_84FE698 +_080A5774: .4byte gUnknown_2024188 +_080A5778: + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + bls _080A5788 + ldr r0, _080A5784 + b _080A585A + .align 2, 0 +_080A5784: .4byte gUnknown_82D5A68 +_080A5788: + ldr r1, _080A578C + b _080A5856 + .align 2, 0 +_080A578C: .4byte gUnknown_82D5A68 +_080A5790: + cmp r5, #0xc9 + bne _080A5820 + ldr r0, _080A57C0 + ldr r0, [r0] + ldr r0, [r0] + lsls r1, r4, #2 + adds r0, r1, r0 + ldrh r0, [r0, #2] + cmp r0, #0 + bne _080A57CC + ldr r1, _080A57C4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A57C8 + adds r0, r0, r1 + movs r1, #0 + bl sub_0806A058 + adds r2, r0, #0 + b _080A57D2 + .align 2, 0 +_080A57C0: .4byte gUnknown_2024174 +_080A57C4: .4byte gUnknown_2023D12 +_080A57C8: .4byte gUnknown_20243E8 +_080A57CC: + ldr r0, _080A5808 + adds r0, r1, r0 + ldr r2, [r0] +_080A57D2: + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080A580C + adds r0, r5, #0 + b _080A5816 + .align 2, 0 +_080A5808: .4byte gUnknown_2024160 +_080A580C: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080A5816: + ldr r1, _080A581C + lsls r0, r0, #2 + b _080A5858 + .align 2, 0 +_080A581C: .4byte gUnknown_82D45C8 +_080A5820: + ldr r0, _080A5838 + cmp r5, r0 + bne _080A5844 + ldr r0, _080A583C + ldr r1, _080A5840 + adds r1, r4, r1 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + b _080A585C + .align 2, 0 +_080A5838: .4byte 0x00000181 +_080A583C: .4byte gUnknown_84FE684 +_080A5840: .4byte gUnknown_2024188 +_080A5844: + movs r0, #0xce + lsls r0, r0, #1 + cmp r5, r0 + bls _080A5854 + ldr r0, _080A5850 + b _080A585A + .align 2, 0 +_080A5850: .4byte gUnknown_82D45C8 +_080A5854: + ldr r1, _080A5864 +_080A5856: + lsls r0, r5, #2 +_080A5858: + adds r0, r0, r1 +_080A585A: + ldrb r0, [r0, #1] +_080A585C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080A5864: .4byte gUnknown_82D45C8 + thumb_func_end sub_080A5680 + + thumb_func_start sub_080A5868 +sub_080A5868: @ 0x080A5868 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r7, r4, #0 + movs r5, #0 + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080A58C6 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A58C6 + ldr r0, _080A58A4 + cmp r4, r0 + bne _080A58B0 + ldr r0, _080A58A8 + ldr r1, _080A58AC + adds r1, r6, r1 + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r5, [r1] + b _080A58C6 + .align 2, 0 +_080A58A4: .4byte 0x00000181 +_080A58A8: .4byte gUnknown_84FE694 +_080A58AC: .4byte gUnknown_2024188 +_080A58B0: + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bls _080A58C0 + ldr r0, _080A58BC + b _080A58C4 + .align 2, 0 +_080A58BC: .4byte gUnknown_82D965C +_080A58C0: + ldr r0, _080A58D0 + adds r0, r7, r0 +_080A58C4: + ldrb r5, [r0] +_080A58C6: + adds r0, r5, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A58D0: .4byte gUnknown_82D965C + thumb_func_end sub_080A5868 + + thumb_func_start sub_080A58D4 +sub_080A58D4: @ 0x080A58D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A58F8 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5906 +_080A58F8: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080A5680 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _080A5924 +_080A5906: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080A5680 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080A5868 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080A5924: + adds r0, r6, #0 + bl sub_080A630C + ldr r3, _080A596C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + ldr r1, _080A5970 + ldr r1, [r1] + movs r2, #1 + ands r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0, #1] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r7, #0 + beq _080A5964 + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A595E + adds r0, r4, #0 + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080A595E: + cmp r4, #0x68 + bls _080A5964 + movs r4, #0x68 +_080A5964: + adds r0, r4, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A596C: .4byte gUnknown_84FE664 +_080A5970: .4byte gUnknown_2022C90 + thumb_func_end sub_080A58D4 + + thumb_func_start sub_080A5974 +sub_080A5974: @ 0x080A5974 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r0, #0xfd + lsls r0, r0, #0x18 + adds r1, r1, r0 + lsrs r1, r1, #0x18 + cmp r1, #1 + bhi _080A59EE + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A59B0 + ldr r0, _080A59A8 + ldr r0, [r0] + ldr r2, [r0, #0x18] + ldrb r1, [r2, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A59AC + ldrh r1, [r2, #2] + b _080A59D6 + .align 2, 0 +_080A59A8: .4byte gUnknown_2039BD4 +_080A59AC: + ldrh r1, [r2] + b _080A59D6 +_080A59B0: + ldr r0, _080A59CC + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A59D4 + ldr r1, _080A59D0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + b _080A59D6 + .align 2, 0 +_080A59CC: .4byte gUnknown_2024174 +_080A59D0: .4byte gUnknown_20380D8 +_080A59D4: + ldrh r1, [r1, #2] +_080A59D6: + cmp r5, #3 + bne _080A59E4 + adds r0, r4, #0 + movs r2, #1 + bl sub_080A58D4 + b _080A59F6 +_080A59E4: + adds r0, r4, #0 + movs r2, #0 + bl sub_080A58D4 + b _080A59F6 +_080A59EE: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A5534 +_080A59F6: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080A5974 + + thumb_func_start sub_080A5A00 +sub_080A5A00: @ 0x080A5A00 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #4 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080A5A00 + + thumb_func_start sub_080A5A14 +sub_080A5A14: @ 0x080A5A14 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5A38 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r1, #0x80 + lsls r1, r1, #0xd + b _080A5A48 +_080A5A38: + adds r0, r4, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r1, #0x88 + lsls r1, r1, #0xd +_080A5A48: + adds r0, r0, r1 + lsrs r0, r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A5A14 + + thumb_func_start sub_080A5A58 +sub_080A5A58: @ 0x080A5A58 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A5B00 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5AAC + ldr r0, _080A5AA0 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A5AE4 + ldr r1, _080A5AA4 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A5AA8 + b _080A5ACA + .align 2, 0 +_080A5AA0: .4byte gUnknown_2024174 +_080A5AA4: .4byte gUnknown_2023D12 +_080A5AA8: .4byte gUnknown_20243E8 +_080A5AAC: + ldr r0, _080A5AD8 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A5AE4 + ldr r1, _080A5ADC + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A5AE0 +_080A5ACA: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _080A5AE6 + .align 2, 0 +_080A5AD8: .4byte gUnknown_2024174 +_080A5ADC: .4byte gUnknown_2023D12 +_080A5AE0: .4byte gUnknown_2024190 +_080A5AE4: + ldrh r4, [r1, #2] +_080A5AE6: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5B00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080A5868 + subs r0, r6, r0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080A5B00: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080A5A58 + + thumb_func_start sub_080A5B08 +sub_080A5B08: @ 0x080A5B08 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0 + bne _080A5B30 + ldr r4, _080A5B28 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5B7E + ldr r1, _080A5B2C + ldrb r0, [r4] + b _080A5B8E + .align 2, 0 +_080A5B28: .4byte gUnknown_20380D6 +_080A5B2C: .4byte gUnknown_2023E88 +_080A5B30: + cmp r0, #1 + bne _080A5B50 + ldr r4, _080A5B48 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5B7E + ldr r1, _080A5B4C + ldrb r0, [r4] + b _080A5B8E + .align 2, 0 +_080A5B48: .4byte gUnknown_20380D7 +_080A5B4C: .4byte gUnknown_2023E88 +_080A5B50: + cmp r1, #2 + bne _080A5B6C + ldr r5, _080A5B68 + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A5B7E + b _080A5B88 + .align 2, 0 +_080A5B68: .4byte gUnknown_20380D6 +_080A5B6C: + ldr r5, _080A5B84 + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A5B88 +_080A5B7E: + movs r0, #0xff + b _080A5B92 + .align 2, 0 +_080A5B84: .4byte gUnknown_20380D7 +_080A5B88: + ldr r1, _080A5B98 + ldrb r0, [r5] + eors r0, r4 +_080A5B8E: + adds r0, r0, r1 + ldrb r0, [r0] +_080A5B92: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080A5B98: .4byte gUnknown_2023E88 + thumb_func_end sub_080A5B08 + + thumb_func_start sub_080A5B9C +sub_080A5B9C: @ 0x080A5B9C + strh r1, [r0, #0x3a] + lsrs r1, r1, #0x10 + strh r1, [r0, #0x3c] + bx lr + thumb_func_end sub_080A5B9C + + thumb_func_start sub_080A5BA4 +sub_080A5BA4: @ 0x080A5BA4 + ldrh r2, [r0, #0x3a] + movs r3, #0x3c + ldrsh r1, [r0, r3] + lsls r1, r1, #0x10 + orrs r2, r1 + str r2, [r0, #0x1c] + bx lr + .align 2, 0 + thumb_func_end sub_080A5BA4 + + thumb_func_start sub_080A5BB4 +sub_080A5BB4: @ 0x080A5BB4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A5C08 + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x2e] + adds r1, r0, r2 + strh r1, [r4, #0x2e] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080A5BF4 + ldr r2, _080A5BF0 + b _080A5BFC + .align 2, 0 +_080A5BF0: .4byte 0xFFFFFF00 +_080A5BF4: + cmp r0, #0 + bge _080A5C00 + movs r2, #0x80 + lsls r2, r2, #1 +_080A5BFC: + adds r0, r1, r2 + strh r0, [r4, #0x2e] +_080A5C00: + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + b _080A5C0E +_080A5C08: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5C0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5BB4 + + thumb_func_start sub_080A5C14 +sub_080A5C14: @ 0x080A5C14 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A5C84 + movs r2, #0x2e + ldrsh r0, [r4, r2] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r2, [r4, #0x30] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r2, [r4, #0x30] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFD4 + 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, r0, r2 + strh r0, [r4, #0x38] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080A5C70 + ldr r2, _080A5C6C + b _080A5C78 + .align 2, 0 +_080A5C6C: .4byte 0xFFFFFF00 +_080A5C70: + cmp r0, #0 + bge _080A5C7C + movs r2, #0x80 + lsls r2, r2, #1 +_080A5C78: + adds r0, r1, r2 + strh r0, [r4, #0x2e] +_080A5C7C: + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + b _080A5C8A +_080A5C84: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5C8A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5C14 + + thumb_func_start sub_080A5C90 +sub_080A5C90: @ 0x080A5C90 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A5D0C + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + 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, r0, r2 + strh r0, [r4, #0x36] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080A5CD8 + ldr r2, _080A5CD4 + b _080A5CE0 + .align 2, 0 +_080A5CD4: .4byte 0xFFFFFF00 +_080A5CD8: + cmp r0, #0 + bge _080A5CE4 + movs r2, #0x80 + lsls r2, r2, #1 +_080A5CE0: + adds r0, r1, r2 + strh r0, [r4, #0x2e] +_080A5CE4: + ldrh r1, [r4, #0x36] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #0xff + ble _080A5CF8 + ldr r2, _080A5CF4 + b _080A5D00 + .align 2, 0 +_080A5CF4: .4byte 0xFFFFFF00 +_080A5CF8: + cmp r0, #0 + bge _080A5D04 + movs r2, #0x80 + lsls r2, r2, #1 +_080A5D00: + adds r0, r1, r2 + strh r0, [r4, #0x36] +_080A5D04: + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + b _080A5D12 +_080A5D0C: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5D12: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5C90 + + thumb_func_start sub_080A5D18 +sub_080A5D18: @ 0x080A5D18 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A5D6C + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x2e] + adds r1, r0, r2 + strh r1, [r4, #0x2e] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080A5D58 + ldr r2, _080A5D54 + b _080A5D60 + .align 2, 0 +_080A5D54: .4byte 0xFFFFFF00 +_080A5D58: + cmp r0, #0 + bge _080A5D64 + movs r2, #0x80 + lsls r2, r2, #1 +_080A5D60: + adds r0, r1, r2 + strh r0, [r4, #0x2e] +_080A5D64: + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + b _080A5D72 +_080A5D6C: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5D72: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5D18 + + thumb_func_start sub_080A5D78 +sub_080A5D78: @ 0x080A5D78 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x2e] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _080A5D8C + subs r0, r2, #1 + strh r0, [r1, #0x2e] + b _080A5D92 +_080A5D8C: + adds r0, r1, #0 + bl sub_080A5BA4 +_080A5D92: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A5D78 + + thumb_func_start sub_080A5D98 +sub_080A5D98: @ 0x080A5D98 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A5DB4 + ldr r1, _080A5DB0 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A5DB0: .4byte sub_080A5E04 + thumb_func_end sub_080A5D98 + + thumb_func_start sub_080A5DB4 +sub_080A5DB4: @ 0x080A5DB4 + 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 _080A5DCA + ldrh r0, [r4, #0x2e] + rsbs r0, r0, #0 + strh r0, [r4, #0x2e] +_080A5DCA: + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + ldrh r5, [r4, #0x2e] + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl __divsi3 + cmp r0, #0 + bge _080A5DE4 + rsbs r0, r0, #0 +_080A5DE4: + strh r0, [r4, #0x2e] + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r2, #0x34 + ldrsh r1, [r4, r2] + subs r0, 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 + .align 2, 0 + thumb_func_end sub_080A5DB4 + + thumb_func_start sub_080A5E04 +sub_080A5E04: @ 0x080A5E04 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x2e] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _080A5E28 + subs r0, r2, #1 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x30] + ldrh r2, [r1, #0x24] + adds r0, r0, r2 + strh r0, [r1, #0x24] + ldrh r0, [r1, #0x32] + ldrh r3, [r1, #0x26] + adds r0, r0, r3 + strh r0, [r1, #0x26] + b _080A5E2E +_080A5E28: + adds r0, r1, #0 + bl sub_080A5BA4 +_080A5E2E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A5E04 + + thumb_func_start sub_080A5E34 +sub_080A5E34: @ 0x080A5E34 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + ble _080A5E64 + subs r0, r1, #1 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x34] + adds r0, r0, r1 + strh r0, [r2, #0x34] + ldrh r1, [r2, #0x32] + ldrh r3, [r2, #0x36] + adds r1, r1, r3 + strh r1, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r2, #0x26] + b _080A5E6A +_080A5E64: + adds r0, r2, #0 + bl sub_080A5BA4 +_080A5E6A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A5E34 + + thumb_func_start sub_080A5E70 +sub_080A5E70: @ 0x080A5E70 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080A5EA0 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r1, [r4, #0x32] + ldrh r2, [r4, #0x36] + adds r1, r1, r2 + strh r1, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r4, #0x26] + b _080A5EA6 +_080A5EA0: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5EA6: + adds r0, r4, #0 + bl sub_080D297C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A5E70 + + thumb_func_start sub_080A5EB4 +sub_080A5EB4: @ 0x080A5EB4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldr r5, _080A5EF0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _080A5EF4 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A5EF0: .4byte gUnknown_20380D7 +_080A5EF4: .4byte sub_080A5D98 + thumb_func_end sub_080A5EB4 + + thumb_func_start sub_080A5EF8 +sub_080A5EF8: @ 0x080A5EF8 + push {r4, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x2e] + movs r2, #0x2e + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _080A5F3C + subs r0, r1, #1 + strh r0, [r3, #0x2e] + ldr r2, _080A5F38 + movs r4, #0x34 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x30] + ldrh r4, [r0, #0x24] + adds r1, r1, r4 + strh r1, [r0, #0x24] + movs r0, #0x34 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x32] + ldrh r2, [r0, #0x26] + adds r1, r1, r2 + strh r1, [r0, #0x26] + b _080A5F42 + .align 2, 0 +_080A5F38: .4byte gUnknown_20205AC +_080A5F3C: + adds r0, r3, #0 + bl sub_080A5BA4 +_080A5F42: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5EF8 + + thumb_func_start sub_080A5F48 +sub_080A5F48: @ 0x080A5F48 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080A5F98 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x30] + ldrh r0, [r4, #0x34] + adds r1, r1, r0 + strh r1, [r4, #0x34] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + strh r0, [r4, #0x36] + ldr r3, _080A5F94 + movs r0, #0x38 + ldrsh r2, [r4, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r0, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r1, #0x26] + b _080A5F9E + .align 2, 0 +_080A5F94: .4byte gUnknown_20205AC +_080A5F98: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A5F9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A5F48 + + thumb_func_start sub_080A5FA4 +sub_080A5FA4: @ 0x080A5FA4 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080A6006 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r1, r1, r0 + strh r1, [r4, #0x32] + ldrh r1, [r4, #0x36] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + adds r1, 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 _080A600C + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A600C + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080A600C +_080A6006: + adds r0, r4, #0 + bl sub_080A5BA4 +_080A600C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A5FA4 + + thumb_func_start sub_080A6014 +sub_080A6014: @ 0x080A6014 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A6014 + + thumb_func_start sub_080A6028 +sub_080A6028: @ 0x080A6028 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldr r5, _080A6064 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _080A6068 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6064: .4byte gUnknown_20380D6 +_080A6068: .4byte sub_080A5D98 + thumb_func_end sub_080A6028 + + thumb_func_start sub_080A606C +sub_080A606C: @ 0x080A606C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + bl sub_080A1820 + adds r0, r4, #0 + bl sub_080A6014 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A606C + + thumb_func_start sub_080A6084 +sub_080A6084: @ 0x080A6084 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A609A + adds r0, r2, #0 + bl sub_080A5BA4 +_080A609A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A6084 + + thumb_func_start sub_080A60A0 +sub_080A60A0: @ 0x080A60A0 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080A60B6 + adds r0, r2, #0 + bl sub_080A5BA4 +_080A60B6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A60A0 + + thumb_func_start sub_080A60BC +sub_080A60BC: @ 0x080A60BC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A60BC + + thumb_func_start sub_080A60DC +sub_080A60DC: @ 0x080A60DC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A60DC + + thumb_func_start sub_080A6100 +sub_080A6100: @ 0x080A6100 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A6128 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6128: .4byte gUnknown_20380D6 + thumb_func_end sub_080A6100 + + thumb_func_start sub_080A612C +sub_080A612C: @ 0x080A612C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + mov r8, r5 + ldr r7, _080A6164 + ldrb r0, [r7] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080A6168 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bhi _080A6178 + cmp r6, r0 + bhs _080A616C + lsls r0, r5, #0x10 + b _080A6188 + .align 2, 0 +_080A6164: .4byte gUnknown_20380D6 +_080A6168: .4byte gUnknown_20380D7 +_080A616C: + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6184 +_080A6178: + ldrh r1, [r4, #0x20] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + strh r1, [r4, #0x20] + b _080A6190 +_080A6184: + mov r1, r8 + lsls r0, r1, #0x10 +_080A6188: + asrs r0, r0, #0x10 + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] +_080A6190: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A612C + + thumb_func_start sub_080A619C +sub_080A619C: @ 0x080A619C + 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_080A671C + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #8 + bl __divsi3 + strh r0, [r4, #0x3a] + strh r5, [r4, #0x3c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A619C + + thumb_func_start sub_080A61C8 +sub_080A61C8: @ 0x080A61C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A61F4 + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + movs r0, #0 + b _080A61F6 +_080A61F4: + movs r0, #1 +_080A61F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080A61C8 + + thumb_func_start sub_080A61FC +sub_080A61FC: @ 0x080A61FC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6228 + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r0, #0 + b _080A622A +_080A6228: + movs r0, #1 +_080A622A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080A61FC + + thumb_func_start sub_080A6230 +sub_080A6230: @ 0x080A6230 + ldrh r1, [r0, #0x24] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + movs r2, #0 + strh r1, [r0, #0x20] + ldrh r1, [r0, #0x26] + ldrh r3, [r0, #0x22] + adds r1, r1, r3 + strh r1, [r0, #0x22] + strh r2, [r0, #0x24] + strh r2, [r0, #0x26] + bx lr + thumb_func_end sub_080A6230 + + thumb_func_start sub_080A6248 +sub_080A6248: @ 0x080A6248 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _080A6270 + ldr r4, _080A628C + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] +_080A6270: + ldr r4, _080A6290 + movs r0, #0 + ldrsh r1, [r4, r0] + adds r0, r5, #0 + bl sub_080A612C + ldrh r0, [r4, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A628C: .4byte gUnknown_20380D7 +_080A6290: .4byte gUnknown_20380BE + thumb_func_end sub_080A6248 + + thumb_func_start sub_080A6294 +sub_080A6294: @ 0x080A6294 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _080A62B8 + ldr r4, _080A62B4 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + b _080A62CC + .align 2, 0 +_080A62B4: .4byte gUnknown_20380D6 +_080A62B8: + ldr r4, _080A62F0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 +_080A62CC: + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r4, _080A62F4 + movs r0, #0 + ldrsh r1, [r4, r0] + adds r0, r5, #0 + bl sub_080A612C + ldrh r0, [r4, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A62F0: .4byte gUnknown_20380D6 +_080A62F4: .4byte gUnknown_20380BE + thumb_func_end sub_080A6294 + + thumb_func_start sub_080A62F8 +sub_080A62F8: @ 0x080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080A6308 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080A6308: .4byte gUnknown_2023D1A + thumb_func_end sub_080A62F8 + + thumb_func_start sub_080A630C +sub_080A630C: @ 0x080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080A6318 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080A6318: .4byte gUnknown_2023D1A + thumb_func_end sub_080A630C + + thumb_func_start sub_080A631C +sub_080A631C: @ 0x080A631C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0 + ldr r0, _080A6350 + ldrb r2, [r0] + cmp r1, r2 + bhs _080A6346 + ldr r4, _080A6354 + ldrb r0, [r4] + cmp r0, r3 + beq _080A6346 +_080A6334: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + bhs _080A6346 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _080A6334 +_080A6346: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A6350: .4byte gUnknown_2023D10 +_080A6354: .4byte gUnknown_2023D1A + thumb_func_end sub_080A631C + + thumb_func_start sub_080A6358 +sub_080A6358: @ 0x080A6358 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6384 + ldr r0, _080A637C + ldrb r0, [r0] + cmp r0, r4 + beq _080A63D2 + ldr r0, _080A6380 + ldrb r0, [r0] + cmp r0, r4 + beq _080A63D2 + b _080A63E0 + .align 2, 0 +_080A637C: .4byte gUnknown_20380D6 +_080A6380: .4byte gUnknown_20380D7 +_080A6384: + ldr r0, _080A63AC + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, #0xff + beq _080A63E0 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A63B8 + ldr r1, _080A63B0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A63B4 + b _080A63C6 + .align 2, 0 +_080A63AC: .4byte gUnknown_2023D1A +_080A63B0: .4byte gUnknown_2023D12 +_080A63B4: .4byte gUnknown_20243E8 +_080A63B8: + ldr r1, _080A63D8 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A63DC +_080A63C6: + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080A63E0 +_080A63D2: + movs r0, #1 + b _080A63E2 + .align 2, 0 +_080A63D8: .4byte gUnknown_2023D12 +_080A63DC: .4byte gUnknown_2024190 +_080A63E0: + movs r0, #0 +_080A63E2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080A6358 + + thumb_func_start sub_080A63E8 +sub_080A63E8: @ 0x080A63E8 + ldr r0, _080A63F4 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080A63F4: .4byte gUnknown_2022C90 + thumb_func_end sub_080A63E8 + + thumb_func_start sub_080A63F8 +sub_080A63F8: @ 0x080A63F8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080A642C + ldr r0, _080A6424 + ldr r0, [r0] + str r0, [r4] + ldr r0, _080A6428 + ldr r0, [r0] + str r0, [r4, #4] + movs r1, #0 + movs r0, #0xe + strb r0, [r4, #8] + movs r0, #1 + strb r0, [r4, #9] + strh r1, [r4, #0xa] + b _080A6446 + .align 2, 0 +_080A6424: .4byte gUnknown_2022D00 +_080A6428: .4byte gUnknown_2022D04 +_080A642C: + ldr r0, _080A6450 + ldr r0, [r0] + str r0, [r4] + ldr r0, _080A6454 + ldr r0, [r0] + str r0, [r4, #4] + movs r0, #8 + strb r0, [r4, #8] + movs r0, #1 + strb r0, [r4, #9] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0xa] +_080A6446: + strh r1, [r4, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6450: .4byte gUnknown_2022D00 +_080A6454: .4byte gUnknown_2022D04 + thumb_func_end sub_080A63F8 + + thumb_func_start sub_080A6458 +sub_080A6458: @ 0x080A6458 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080A648C + ldr r0, _080A6484 + ldr r0, [r0] + str r0, [r4] + ldr r0, _080A6488 + ldr r0, [r0] + str r0, [r4, #4] + movs r1, #0 + movs r0, #0xe + strb r0, [r4, #8] + movs r0, #1 + strb r0, [r4, #9] + strh r1, [r4, #0xa] + b _080A64B2 + .align 2, 0 +_080A6484: .4byte gUnknown_2022D00 +_080A6488: .4byte gUnknown_2022D04 +_080A648C: + cmp r5, #1 + bne _080A6498 + adds r0, r4, #0 + bl sub_080A63F8 + b _080A64B4 +_080A6498: + ldr r0, _080A64BC + ldr r0, [r0] + str r0, [r4] + ldr r0, _080A64C0 + ldr r0, [r0] + str r0, [r4, #4] + movs r0, #9 + strb r0, [r4, #8] + movs r0, #2 + strb r0, [r4, #9] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0xa] +_080A64B2: + strh r1, [r4, #0xc] +_080A64B4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A64BC: .4byte gUnknown_2022D00 +_080A64C0: .4byte gUnknown_2022D04 + thumb_func_end sub_080A6458 + + thumb_func_start sub_080A64C4 +sub_080A64C4: @ 0x080A64C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080A64F0 + ldr r0, [r0] + str r0, [r4] + ldr r0, _080A64F4 + ldr r0, [r0] + str r0, [r4, #4] + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _080A64F8 + movs r0, #0 + movs r1, #0xe + strb r1, [r4, #8] + movs r1, #1 + strb r1, [r4, #9] + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + b _080A6528 + .align 2, 0 +_080A64F0: .4byte gUnknown_2022D00 +_080A64F4: .4byte gUnknown_2022D04 +_080A64F8: + ldr r0, _080A6514 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080A6518 + movs r0, #8 + strb r0, [r4, #8] + strb r1, [r4, #9] + movs r0, #0x80 + lsls r0, r0, #2 + b _080A6524 + .align 2, 0 +_080A6514: .4byte gUnknown_20380D6 +_080A6518: + movs r0, #9 + strb r0, [r4, #8] + movs r0, #2 + strb r0, [r4, #9] + movs r0, #0xc0 + lsls r0, r0, #2 +_080A6524: + strh r0, [r4, #0xa] + strh r5, [r4, #0xc] +_080A6528: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A64C4 + + thumb_func_start sub_080A6530 +sub_080A6530: @ 0x080A6530 + push {lr} + sub sp, #0x20 + adds r1, r0, #0 + add r0, sp, #0xc + bl sub_080A6458 + movs r0, #0 + str r0, [sp, #0x1c] + add r0, sp, #0x1c + ldr r1, [sp, #0xc] + ldr r2, _080A6584 + bl CpuSet + add r0, sp, #0xc + ldrb r0, [r0, #9] + ldr r1, [sp, #0xc] + movs r2, #0x80 + lsls r2, r2, #6 + add r3, sp, #0xc + ldrh r3, [r3, #0xa] + bl sub_0800195C + add r0, sp, #0xc + ldrb r0, [r0, #9] + movs r1, #0x20 + str r1, [sp] + movs r1, #0x40 + str r1, [sp, #4] + movs r1, #0x11 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + add r0, sp, #0xc + ldrb r0, [r0, #9] + bl sub_08002248 + add sp, #0x20 + pop {r0} + bx r0 + .align 2, 0 +_080A6584: .4byte 0x05000800 + thumb_func_end sub_080A6530 + + thumb_func_start sub_080A6588 +sub_080A6588: @ 0x080A6588 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r5, r0, #0 + mov r8, r1 + adds r6, r2, #0 + movs r0, #0 + str r0, [sp] + ldr r4, _080A65D0 + ldr r1, [r4] + ldr r2, _080A65D4 + mov r0, sp + bl CpuSet + ldr r1, [r4] + mov r0, r8 + bl sub_08034370 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #6 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + adds r0, r5, #0 + adds r3, r6, #0 + bl sub_0800195C + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A65D0: .4byte gUnknown_2022D00 +_080A65D4: .4byte 0x05000800 + thumb_func_end sub_080A6588 + + thumb_func_start sub_080A65D8 +sub_080A65D8: @ 0x080A65D8 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x40 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080A65D8 + + thumb_func_start sub_080A6610 +sub_080A6610: @ 0x080A6610 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A65D8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08002248 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A6610 + + thumb_func_start sub_080A6628 +sub_080A6628: @ 0x080A6628 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r2, #0 + ldrb r0, [r4, #9] + bl sub_080A65D8 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080A664E + ldrb r0, [r4, #8] + ldr r1, [r4, #4] + lsls r3, r5, #0x18 + lsrs r3, r3, #0x18 + movs r2, #0 + bl sub_080A3FE8 +_080A664E: + ldrb r0, [r4, #9] + bl sub_08002248 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A6628 + + thumb_func_start sub_080A665C +sub_080A665C: @ 0x080A665C + push {lr} + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A666C + movs r0, #2 + b _080A666E +_080A666C: + movs r0, #1 +_080A666E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A665C + + thumb_func_start sub_080A6674 +sub_080A6674: @ 0x080A6674 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6686 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A669C +_080A6686: + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + movs r0, #3 + movs r1, #1 + movs r2, #1 + bl sub_0811887C + b _080A66B0 +_080A669C: + movs r0, #3 + movs r1, #0 + movs r2, #1 + bl sub_0811887C + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_0811887C +_080A66B0: + pop {r0} + bx r0 + thumb_func_end sub_080A6674 + + thumb_func_start sub_080A66B4 +sub_080A66B4: @ 0x080A66B4 + 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_080A66DC + ldr r1, _080A66D8 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A66D8: .4byte sub_080A5E70 + thumb_func_end sub_080A66B4 + + thumb_func_start sub_080A66DC +sub_080A66DC: @ 0x080A66DC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x32] + ldrh r1, [r5, #0x30] + subs r0, r0, r1 + ldrh r4, [r5, #0x36] + ldrh r1, [r5, #0x34] + subs r4, r4, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + asrs r0, r0, #0x10 + movs r2, #0x2e + ldrsh r1, [r5, r2] + bl __divsi3 + movs r6, #0 + strh r0, [r5, #0x30] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + 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, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A66DC + + thumb_func_start sub_080A671C +sub_080A671C: @ 0x080A671C + push {r4, r5, r6, r7, lr} + mov r7, sb + 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, r1, r0 + movs r3, #0x36 + ldrsh r2, [r7, r3] + movs r3, #0x34 + ldrsh r0, [r7, r3] + subs r2, r2, r0 + lsrs r0, r1, #0x1f + mov r8, r0 + lsrs r3, r2, #0x1f + mov sb, r3 + cmp r1, #0 + bge _080A6748 + rsbs r1, r1, #0 +_080A6748: + lsls r0, r1, #0x18 + lsrs r6, r0, #0x10 + adds r0, r2, #0 + cmp r0, #0 + bge _080A6754 + rsbs r0, r0, #0 +_080A6754: + lsls r0, r0, #0x18 + lsrs r5, r0, #0x10 + movs r0, #0x2e + ldrsh r4, [r7, r0] + adds r0, r6, #0 + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r2, r8 + cmp r2, #0 + beq _080A6780 + movs r0, #1 + orrs r6, r0 + b _080A6784 +_080A6780: + ldr r0, _080A6790 + ands r6, r0 +_080A6784: + mov r3, sb + cmp r3, #0 + beq _080A6794 + movs r0, #1 + orrs r5, r0 + b _080A6798 + .align 2, 0 +_080A6790: .4byte 0x0000FFFE +_080A6794: + ldr r0, _080A67B0 + ands r5, r0 +_080A6798: + 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 sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A67B0: .4byte 0x0000FFFE + thumb_func_end sub_080A671C + + thumb_func_start sub_080A67B4 +sub_080A67B4: @ 0x080A67B4 + 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_080A671C + ldr r1, _080A67D8 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A67D8: .4byte sub_080A6860 + thumb_func_end sub_080A67B4 + + thumb_func_start sub_080A67DC +sub_080A67DC: @ 0x080A67DC + 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_080A671C + ldr r1, _080A6800 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6800: .4byte sub_080A687C + thumb_func_end sub_080A67DC + + thumb_func_start sub_080A6804 +sub_080A6804: @ 0x080A6804 + push {r4, r5, r6, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _080A6814 + movs r0, #1 + b _080A6858 +_080A6814: + ldrh r1, [r2, #0x30] + ldrh r4, [r2, #0x32] + ldrh r6, [r2, #0x34] + ldrh r5, [r2, #0x36] + adds r0, r6, r1 + lsls r3, r0, #0x10 + lsrs r6, r3, #0x10 + adds r0, r5, r4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _080A6836 + lsrs r0, r3, #0x18 + rsbs r0, r0, #0 + b _080A6838 +_080A6836: + lsrs r0, r3, #0x18 +_080A6838: + strh r0, [r2, #0x24] + movs r0, #1 + ands r4, r0 + cmp r4, #0 + beq _080A6848 + lsrs r0, r5, #8 + rsbs r0, r0, #0 + b _080A684A +_080A6848: + lsrs r0, r5, #8 +_080A684A: + strh r0, [r2, #0x26] + strh r6, [r2, #0x34] + strh r5, [r2, #0x36] + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + movs r0, #0 +_080A6858: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A6804 + + thumb_func_start sub_080A6860 +sub_080A6860: @ 0x080A6860 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6874 + adds r0, r4, #0 + bl sub_080A5BA4 +_080A6874: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A6860 + + thumb_func_start sub_080A687C +sub_080A687C: @ 0x080A687C + push {r4, lr} + adds r4, r0, #0 + bl sub_08039AE0 + adds r0, r4, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6896 + adds r0, r4, #0 + bl sub_080A5BA4 +_080A6896: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A687C + + thumb_func_start sub_080A689C +sub_080A689C: @ 0x080A689C + 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 _080A68B0 + rsbs r0, r0, #0 +_080A68B0: + lsls r0, r0, #8 + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A671C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A689C + + thumb_func_start sub_080A68C8 +sub_080A68C8: @ 0x080A68C8 + 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_080A689C + ldr r1, _080A68EC + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A68EC: .4byte sub_080A6860 + thumb_func_end sub_080A68C8 + + thumb_func_start sub_080A68F0 +sub_080A68F0: @ 0x080A68F0 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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, r1, r0 + movs r3, #0x36 + ldrsh r2, [r7, r3] + movs r3, #0x34 + ldrsh r0, [r7, r3] + subs r2, r2, r0 + lsrs r0, r1, #0x1f + mov r8, r0 + lsrs r3, r2, #0x1f + mov sb, r3 + cmp r1, #0 + bge _080A691C + rsbs r1, r1, #0 +_080A691C: + lsls r0, r1, #0x14 + lsrs r6, r0, #0x10 + adds r0, r2, #0 + cmp r0, #0 + bge _080A6928 + rsbs r0, r0, #0 +_080A6928: + lsls r0, r0, #0x14 + lsrs r5, r0, #0x10 + movs r0, #0x2e + ldrsh r4, [r7, r0] + adds r0, r6, #0 + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r2, r8 + cmp r2, #0 + beq _080A6954 + movs r0, #1 + orrs r6, r0 + b _080A6958 +_080A6954: + ldr r0, _080A6964 + ands r6, r0 +_080A6958: + mov r3, sb + cmp r3, #0 + beq _080A6968 + movs r0, #1 + orrs r5, r0 + b _080A696C + .align 2, 0 +_080A6964: .4byte 0x0000FFFE +_080A6968: + ldr r0, _080A6984 + ands r5, r0 +_080A696C: + 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 sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6984: .4byte 0x0000FFFE + thumb_func_end sub_080A68F0 + + thumb_func_start sub_080A6988 +sub_080A6988: @ 0x080A6988 + 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_080A68F0 + ldr r1, _080A69AC + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A69AC: .4byte sub_080A6A0C + thumb_func_end sub_080A6988 + + thumb_func_start sub_080A69B0 +sub_080A69B0: @ 0x080A69B0 + push {r4, r5, r6, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _080A69C0 + movs r0, #1 + b _080A6A04 +_080A69C0: + ldrh r1, [r2, #0x30] + ldrh r4, [r2, #0x32] + ldrh r6, [r2, #0x34] + ldrh r5, [r2, #0x36] + adds r0, r6, r1 + lsls r3, r0, #0x10 + lsrs r6, r3, #0x10 + adds r0, r5, r4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _080A69E2 + lsrs r0, r3, #0x14 + rsbs r0, r0, #0 + b _080A69E4 +_080A69E2: + lsrs r0, r3, #0x14 +_080A69E4: + strh r0, [r2, #0x24] + movs r0, #1 + ands r4, r0 + cmp r4, #0 + beq _080A69F4 + lsrs r0, r5, #4 + rsbs r0, r0, #0 + b _080A69F6 +_080A69F4: + lsrs r0, r5, #4 +_080A69F6: + strh r0, [r2, #0x26] + strh r6, [r2, #0x34] + strh r5, [r2, #0x36] + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + movs r0, #0 +_080A6A04: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A69B0 + + thumb_func_start sub_080A6A0C +sub_080A6A0C: @ 0x080A6A0C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A69B0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6A20 + adds r0, r4, #0 + bl sub_080A5BA4 +_080A6A20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A6A0C + + thumb_func_start sub_080A6A28 +sub_080A6A28: @ 0x080A6A28 + 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 _080A6A3C + rsbs r0, r0, #0 +_080A6A3C: + lsls r0, r0, #4 + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A68F0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A6A28 + + thumb_func_start sub_080A6A54 +sub_080A6A54: @ 0x080A6A54 + 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_080A6A28 + ldr r1, _080A6A78 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6A78: .4byte sub_080A6A0C + thumb_func_end sub_080A6A54 + + thumb_func_start sub_080A6A7C +sub_080A6A7C: @ 0x080A6A7C + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r5, _080A6AF4 + lsls r2, r2, #0x10 + lsrs r1, r1, #0x10 + orrs r1, r2 + str r1, [sp] + ldr r0, [sp, #4] + ands r0, r5 + orrs r0, r3 + str r0, [sp, #4] + bl sub_080A6B00 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6AB8 + mov r0, sp + ldrh r0, [r0] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp] + ands r1, r5 + orrs r1, r0 + str r1, [sp] +_080A6AB8: + ldr r1, _080A6AF8 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #3] + lsls r4, r4, #0x1a + lsrs r4, r4, #0x1b + add r5, sp, #8 + mov r0, sp + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + ldr r0, _080A6AFC + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, #2] + strh r0, [r4, #2] + ldrh r0, [r5, #4] + strh r0, [r4, #4] + ldrh r0, [r5, #6] + strh r0, [r4, #6] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A6AF4: .4byte 0xFFFF0000 +_080A6AF8: .4byte gUnknown_20205AC +_080A6AFC: .4byte gUnknown_2021B3C + thumb_func_end sub_080A6A7C + + thumb_func_start sub_080A6B00 +sub_080A6B00: @ 0x080A6B00 + push {r4, lr} + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6B30 + ldr r4, _080A6B2C + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r2, #0x32 + ldrsh r0, [r1, r2] + cmp r0, #0xc9 + beq _080A6B30 + movs r0, #1 + b _080A6B32 + .align 2, 0 +_080A6B2C: .4byte gUnknown_20205AC +_080A6B30: + movs r0, #0 +_080A6B32: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080A6B00 + + thumb_func_start sub_080A6B38 +sub_080A6B38: @ 0x080A6B38 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r1, _080A6C04 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6B6E + adds r0, r7, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6B7C +_080A6B6E: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_080A6B7C: + ldr r1, _080A6C04 + lsls r4, r6, #4 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r5, r0, r1 + movs r0, #3 + mov r1, r8 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #1] + adds r2, r5, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6BDA + ldrb r0, [r5, #1] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _080A6BDA + ldr r0, _080A6C08 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #6] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #3] +_080A6BDA: + ldr r1, _080A6C04 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r3, [r0, #1] + movs r1, #3 + orrs r3, r1 + strb r3, [r0, #1] + lsrs r1, r3, #6 + ldrb r2, [r0, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + bl sub_08006F70 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6C04: .4byte gUnknown_20205AC +_080A6C08: .4byte gUnknown_2024174 + thumb_func_end sub_080A6B38 + + thumb_func_start sub_080A6C0C +sub_080A6C0C: @ 0x080A6C0C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldr r1, _080A6C64 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + movs r2, #0xd + rsbs r2, r2, #0 + ands r1, r2 + strb r1, [r0, #1] + adds r3, r0, #0 + adds r3, #0x2c + ldrb r2, [r3] + movs r1, #0x7f + ands r1, r2 + strb r1, [r3] + ldrb r3, [r0, #1] + lsrs r1, r3, #6 + ldrb r2, [r0, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + bl sub_08006F70 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A6C64: .4byte gUnknown_20205AC + thumb_func_end sub_080A6C0C + + thumb_func_start sub_080A6C68 +sub_080A6C68: @ 0x080A6C68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A6CA0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r0, [r2, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + ldr r1, _080A6CA4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #4] + movs r3, #4 + ldrsh r0, [r0, r3] + cmp r0, #0 + bge _080A6C94 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_080A6C94: + lsls r0, r1, #0x10 + asrs r0, r0, #0x13 + strh r0, [r2, #0x26] + pop {r0} + bx r0 + .align 2, 0 +_080A6CA0: .4byte gUnknown_20205AC +_080A6CA4: .4byte gUnknown_2021B3C + thumb_func_end sub_080A6C68 + + thumb_func_start sub_080A6CA8 +sub_080A6CA8: @ 0x080A6CA8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r4, r0, #0 + ldr r0, [sp, #0x28] + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080A6D4E + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + cmp r6, #0 + beq _080A6CF6 + ldrb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 +_080A6CF6: + ldr r6, _080A6D5C + lsls r0, r7, #0x10 + orrs r5, r0 + str r5, [sp] + ldr r0, [sp, #4] + ands r0, r6 + mov r1, r8 + orrs r0, r1 + str r0, [sp, #4] + bl sub_080A6B00 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6D24 + mov r0, sp + ldrh r0, [r0] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp] + ands r1, r6 + orrs r1, r0 + str r1, [sp] +_080A6D24: + ldrb r4, [r4, #3] + lsls r4, r4, #0x1a + lsrs r4, r4, #0x1b + add r5, sp, #8 + mov r0, sp + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + ldr r0, _080A6D60 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, #2] + strh r0, [r4, #2] + ldrh r0, [r5, #4] + strh r0, [r4, #4] + ldrh r0, [r5, #6] + strh r0, [r4, #6] +_080A6D4E: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6D5C: .4byte 0xFFFF0000 +_080A6D60: .4byte gUnknown_2021B3C + thumb_func_end sub_080A6CA8 + + thumb_func_start sub_080A6D64 +sub_080A6D64: @ 0x080A6D64 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r3, #0x80 + lsls r3, r3, #1 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #1 + adds r2, r3, #0 + bl sub_080A6CA8 + adds r2, r4, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldrb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A6D64 + + thumb_func_start sub_080A6DA4 +sub_080A6DA4: @ 0x080A6DA4 + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl ArcTan2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A6DA4 + + thumb_func_start sub_080A6DBC +sub_080A6DBC: @ 0x080A6DBC + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DA4 + lsls r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_080A6DBC + + thumb_func_start sub_080A6DD4 +sub_080A6DD4: @ 0x080A6DD4 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x18 + lsls r0, r0, #0x14 + lsrs r0, r0, #0x10 + cmp r1, #0 + bne _080A6E50 + ldr r2, _080A6E44 + ldr r1, _080A6E48 + lsls r0, r0, #1 + adds r4, r0, r1 + adds r5, r0, r2 + movs r6, #0xf +_080A6DEC: + ldr r0, [r5] + lsls r2, r0, #0x1b + lsrs r2, r2, #0x1b + lsls r1, r0, #0x16 + lsrs r1, r1, #0x1b + adds r2, r2, r1 + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + adds r0, r0, r2 + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1f + ands r0, r1 + ldrb r1, [r4] + movs r3, #0x20 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] + lsls r3, r0, #5 + ldrh r1, [r4] + ldr r7, _080A6E4C + adds r2, r7, #0 + ands r1, r2 + orrs r1, r3 + strh r1, [r4] + lsls r0, r0, #2 + ldrb r1, [r4, #1] + movs r3, #0x7d + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #1] + adds r4, #2 + adds r5, #2 + subs r6, #1 + cmp r6, #0 + bge _080A6DEC + b _080A6E60 + .align 2, 0 +_080A6E44: .4byte gUnknown_20373B4 +_080A6E48: .4byte gUnknown_20377B4 +_080A6E4C: .4byte 0xFFFFFC1F +_080A6E50: + lsls r1, r0, #1 + ldr r0, _080A6E68 + adds r0, r1, r0 + ldr r2, _080A6E6C + adds r1, r1, r2 + ldr r2, _080A6E70 + bl CpuSet +_080A6E60: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A6E68: .4byte gUnknown_20373B4 +_080A6E6C: .4byte gUnknown_20377B4 +_080A6E70: .4byte 0x04000008 + thumb_func_end sub_080A6DD4 + + thumb_func_start sub_080A6E74 +sub_080A6E74: @ 0x080A6E74 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r4, [sp, #0x28] + ldr r5, [sp, #0x2c] + ldr r6, [sp, #0x30] + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #4] + movs r4, #0 + cmp r0, #0 + beq _080A6ECA + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6EBE + movs r4, #0xe + b _080A6ECA +_080A6EBE: + bl sub_080A665C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #1 + lsls r4, r0 +_080A6ECA: + cmp r7, #0 + beq _080A6EDC + ldr r0, _080A6F54 + ldrb r0, [r0] + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A6EDC: + mov r0, r8 + cmp r0, #0 + beq _080A6EF0 + ldr r0, _080A6F58 + ldrb r0, [r0] + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A6EF0: + mov r0, sb + cmp r0, #0 + beq _080A6F16 + ldr r6, _080A6F54 + ldrb r0, [r6] + movs r5, #2 + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6F16 + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A6F16: + mov r0, sl + cmp r0, #0 + beq _080A6F3C + ldr r6, _080A6F58 + ldrb r0, [r6] + movs r5, #2 + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6F3C + ldrb r0, [r6] + eors r0, r5 + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A6F3C: + ldr r0, [sp] + cmp r0, #0 + beq _080A6F62 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6F5C + movs r0, #0x80 + lsls r0, r0, #1 + b _080A6F60 + .align 2, 0 +_080A6F54: .4byte gUnknown_20380D6 +_080A6F58: .4byte gUnknown_20380D7 +_080A6F5C: + movs r0, #0x80 + lsls r0, r0, #7 +_080A6F60: + orrs r4, r0 +_080A6F62: + ldr r0, [sp, #4] + cmp r0, #0 + beq _080A6F78 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A6F78 + movs r0, #0x80 + lsls r0, r0, #2 + orrs r4, r0 +_080A6F78: + adds r0, r4, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A6E74 + + thumb_func_start sub_080A6F8C +sub_080A6F8C: @ 0x080A6F8C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + movs r4, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6FBA + cmp r5, #0 + beq _080A7068 + movs r4, #0x80 + lsls r4, r4, #0xb + b _080A7068 +_080A6FBA: + cmp r5, #0 + beq _080A6FE2 + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A6FE2 + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r4, #1 + lsls r4, r0 +_080A6FE2: + cmp r6, #0 + beq _080A700E + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A700E + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A700E: + cmp r7, #0 + beq _080A703A + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A703A + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A703A: + mov r0, r8 + cmp r0, #0 + beq _080A7068 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7068 + movs r0, #3 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r4, r0 +_080A7068: + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080A6F8C + + thumb_func_start sub_080A7074 +sub_080A7074: @ 0x080A7074 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 + thumb_func_end sub_080A7074 + + thumb_func_start sub_080A707C +sub_080A707C: @ 0x080A707C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A707C + + thumb_func_start sub_080A7090 +sub_080A7090: @ 0x080A7090 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080A70CE + ldr r2, _080A70BC + movs r3, #6 + ldrsh r0, [r2, r3] + movs r1, #0 + cmp r0, #0 + bne _080A70AA + movs r1, #1 +_080A70AA: + movs r3, #4 + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _080A70C0 + adds r0, r4, #0 + bl sub_080A6294 + b _080A70C6 + .align 2, 0 +_080A70BC: .4byte gUnknown_20380BE +_080A70C0: + adds r0, r4, #0 + bl sub_080A6248 +_080A70C6: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _080A70E2 +_080A70CE: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _080A70E2 + adds r0, r4, #0 + bl sub_080A6014 +_080A70E2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A7090 + + thumb_func_start sub_080A70E8 +sub_080A70E8: @ 0x080A70E8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, _080A7160 + movs r1, #0xa + ldrsh r0, [r6, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0 + cmp r0, #0 + bne _080A7100 + movs r1, #1 +_080A7100: + ldrb r0, [r6, #0xa] + movs r7, #1 + cmp r0, #0 + bne _080A710A + movs r7, #3 +_080A710A: + adds r0, r5, #0 + bl sub_080A6294 + ldr r0, _080A7164 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7124 + ldrh r0, [r6, #4] + rsbs r0, r0, #0 + strh r0, [r6, #4] +_080A7124: + ldrh r0, [r6, #8] + strh r0, [r5, #0x2e] + ldr r4, _080A7168 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r0, [r4] + adds r1, r7, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #6] + adds r0, r0, r6 + strh r0, [r5, #0x36] + ldr r0, _080A716C + str r0, [r5, #0x1c] + ldr r1, _080A7170 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7160: .4byte gUnknown_20380BE +_080A7164: .4byte gUnknown_20380D6 +_080A7168: .4byte gUnknown_20380D7 +_080A716C: .4byte sub_080A67B4 +_080A7170: .4byte sub_080A34C4 + thumb_func_end sub_080A70E8 + + thumb_func_start sub_080A7174 +sub_080A7174: @ 0x080A7174 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _080A71D4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7194 + ldr r1, _080A71D8 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080A7194: + ldr r4, _080A71D8 + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldr r5, _080A71DC + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r6, #0x36] + ldrh r0, [r4, #0xa] + strh r0, [r6, #0x38] + adds r0, r6, #0 + bl sub_080A619C + ldr r0, _080A71E0 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A71D4: .4byte gUnknown_20380D6 +_080A71D8: .4byte gUnknown_20380BE +_080A71DC: .4byte gUnknown_20380D7 +_080A71E0: .4byte sub_080A71E4 + thumb_func_end sub_080A7174 + + thumb_func_start sub_080A71E4 +sub_080A71E4: @ 0x080A71E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A71F8 + adds r0, r4, #0 + bl sub_080A34C4 +_080A71F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A71E4 + + thumb_func_start sub_080A7200 +sub_080A7200: @ 0x080A7200 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _080A7214 + movs r2, #0xc + ldrsh r1, [r0, r2] + cmp r1, #0 + bne _080A7218 + movs r4, #1 + movs r7, #3 + b _080A721C + .align 2, 0 +_080A7214: .4byte gUnknown_20380BE +_080A7218: + movs r4, #0 + movs r7, #1 +_080A721C: + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080A7234 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080A6294 + ldr r0, _080A7230 + b _080A723E + .align 2, 0 +_080A7230: .4byte gUnknown_20380D6 +_080A7234: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080A6248 + ldr r0, _080A729C +_080A723E: + ldrb r6, [r0] + ldr r0, _080A72A0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7256 + ldr r1, _080A72A4 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080A7256: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080A6248 + ldr r4, _080A72A4 + ldrh r0, [r4, #8] + strh r0, [r5, #0x2e] + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r4, #4] + adds r0, r0, r2 + strh r0, [r5, #0x32] + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r5, #0x36] + ldr r0, _080A72A8 + str r0, [r5, #0x1c] + ldr r1, _080A72AC + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A729C: .4byte gUnknown_20380D7 +_080A72A0: .4byte gUnknown_20380D6 +_080A72A4: .4byte gUnknown_20380BE +_080A72A8: .4byte sub_080A67B4 +_080A72AC: .4byte sub_080A34C4 + thumb_func_end sub_080A7200 + + thumb_func_start sub_080A72B0 +sub_080A72B0: @ 0x080A72B0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _080A731A + movs r6, #0 + ldr r2, _080A730C + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r1, r0, #2 +_080A72CC: + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r4, r0, r2 + adds r5, r4, #0 + adds r5, #0x3e + ldrb r0, [r5] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080A7310 + adds r0, r4, #0 + adds r1, r1, r2 + movs r2, #0x44 + bl memcpy + ldrb r1, [r4, #1] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #1] + ldrb r0, [r5] + adds r2, #8 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r5] + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + b _080A731E + .align 2, 0 +_080A730C: .4byte gUnknown_20205AC +_080A7310: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x3f + bls _080A72CC +_080A731A: + movs r0, #1 + rsbs r0, r0, #0 +_080A731E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080A72B0 + + thumb_func_start sub_080A7324 +sub_080A7324: @ 0x080A7324 + push {lr} + adds r3, r0, #0 + adds r3, #0x3f + ldrb r1, [r3] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r3] + bl sub_08006E00 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A7324 + + thumb_func_start sub_080A733C +sub_080A733C: @ 0x080A733C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + movs r3, #0 + ldr r2, _080A73B4 + movs r0, #4 + ldrsh r1, [r2, r0] + movs r4, #0 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _080A7356 + movs r3, #1 +_080A7356: + cmp r1, r0 + bge _080A735C + ldr r3, _080A73B8 +_080A735C: + movs r0, #6 + ldrsh r1, [r2, r0] + movs r4, #2 + ldrsh r0, [r2, r4] + cmp r1, r0 + ble _080A736A + movs r6, #1 +_080A736A: + cmp r1, r0 + bge _080A7370 + ldr r6, _080A73B8 +_080A7370: + ldr r0, _080A73BC + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0 + strh r1, [r4, #8] + ldrh r0, [r2, #8] + strh r0, [r4, #0xa] + strh r1, [r4, #0xc] + ldrh r0, [r2] + strh r0, [r4, #0xe] + ldrh r0, [r2, #2] + strh r0, [r4, #0x10] + strh r3, [r4, #0x12] + strh r6, [r4, #0x14] + ldrh r0, [r2, #4] + strh r0, [r4, #0x16] + ldrh r0, [r2, #6] + strh r0, [r4, #0x18] + ldrh r1, [r2, #2] + lsls r1, r1, #8 + ldrh r0, [r2] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _080A73C0 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A73B4: .4byte gUnknown_20380BE +_080A73B8: .4byte 0x0000FFFF +_080A73BC: .4byte gUnknown_3005B60 +_080A73C0: .4byte sub_080A73C4 + thumb_func_end sub_080A733C + + thumb_func_start sub_080A73C4 +sub_080A73C4: @ 0x080A73C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080A7410 + adds r4, r0, r1 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xa + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080A7458 + movs r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080A7414 + ldrh r2, [r4, #0xe] + movs r3, #0xe + ldrsh r1, [r4, r3] + movs r3, #0x16 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _080A7428 + ldrh r0, [r4, #0x12] + adds r0, r2, r0 + strh r0, [r4, #0xe] + b _080A7428 + .align 2, 0 +_080A7410: .4byte gUnknown_3005B60 +_080A7414: + ldrh r2, [r4, #0x10] + movs r0, #0x10 + ldrsh r1, [r4, r0] + movs r3, #0x18 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _080A7428 + ldrh r0, [r4, #0x14] + adds r0, r2, r0 + strh r0, [r4, #0x10] +_080A7428: + ldrh r1, [r4, #0x10] + lsls r1, r1, #8 + ldrh r0, [r4, #0xe] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0xe + ldrsh r1, [r4, r0] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080A7458 + movs r3, #0x10 + ldrsh r1, [r4, r3] + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080A7458 + adds r0, r5, #0 + bl sub_080A34E4 +_080A7458: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A73C4 + + thumb_func_start sub_080A7460 +sub_080A7460: @ 0x080A7460 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A7480 + ldrb r0, [r0] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xff + bne _080A7484 + adds r0, r4, #0 + bl sub_080A34E4 + b _080A74AA + .align 2, 0 +_080A7480: .4byte gUnknown_20380BE +_080A7484: + ldr r1, _080A74B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, _080A74B4 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + lsls r1, r1, #4 + ldr r3, _080A74B8 + adds r2, r3, #0 + adds r1, r1, r2 + strh r1, [r0, #8] + bl sub_080A74BC +_080A74AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A74B0: .4byte gUnknown_3005B60 +_080A74B4: .4byte gUnknown_20205AC +_080A74B8: .4byte 0x00000101 + thumb_func_end sub_080A7460 + + thumb_func_start sub_080A74BC +sub_080A74BC: @ 0x080A74BC + ldr r3, _080A74DC + ldrh r1, [r3, #2] + movs r2, #0 + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + ldrh r1, [r3, #4] + strh r1, [r0, #0xe] + strh r2, [r0, #0x10] + ldrh r1, [r3, #6] + strh r1, [r0, #0x12] + strh r2, [r0, #0x14] + ldrh r1, [r3, #8] + strh r1, [r0, #0x16] + ldr r1, _080A74E0 + str r1, [r0] + bx lr + .align 2, 0 +_080A74DC: .4byte gUnknown_20380BE +_080A74E0: .4byte sub_080A74E4 + thumb_func_end sub_080A74BC + + thumb_func_start sub_080A74E4 +sub_080A74E4: @ 0x080A74E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080A753C + adds r4, r0, r1 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080A7574 + movs r0, #0 + strh r0, [r4, #0x10] + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080A7540 + ldrh r2, [r4, #0xc] + adds r2, #1 + strh r2, [r4, #0xc] + ldrh r0, [r4, #8] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrh r3, [r4, #0xa] + movs r1, #0xf + bl sub_0806F410 + movs r2, #0xc + ldrsh r1, [r4, r2] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080A7574 + movs r0, #1 + strh r0, [r4, #0x14] + b _080A7574 + .align 2, 0 +_080A753C: .4byte gUnknown_3005B60 +_080A7540: + ldrh r2, [r4, #0xc] + subs r2, #1 + strh r2, [r4, #0xc] + ldrh r0, [r4, #8] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrh r3, [r4, #0xa] + movs r1, #0xf + bl sub_0806F410 + movs r0, #0xc + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _080A7574 + ldrh r0, [r4, #0x16] + subs r0, #1 + strh r0, [r4, #0x16] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080A756E + strh r1, [r4, #0x10] + strh r1, [r4, #0x14] + b _080A7574 +_080A756E: + adds r0, r5, #0 + bl sub_080A34E4 +_080A7574: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A74E4 + + thumb_func_start sub_080A757C +sub_080A757C: @ 0x080A757C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A759C + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _080A75A0 + adds r0, r4, #0 + bl sub_080A34E4 + b _080A75B6 + .align 2, 0 +_080A759C: .4byte gUnknown_20380BE +_080A75A0: + ldr r1, _080A75BC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + lsls r1, r2, #4 + ldr r2, _080A75C0 + adds r1, r1, r2 + strh r1, [r0, #8] + bl sub_080A74BC +_080A75B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A75BC: .4byte gUnknown_3005B60 +_080A75C0: .4byte 0x00000101 + thumb_func_end sub_080A757C + + thumb_func_start sub_080A75C4 +sub_080A75C4: @ 0x080A75C4 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + strh r1, [r3, #0x16] + strh r1, [r3, #0x18] + strh r1, [r3, #0x1a] + strh r4, [r3, #0x26] + movs r0, #0x80 + lsls r0, 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_080A7910 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6B38 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A75C4 + + thumb_func_start sub_080A75FC +sub_080A75FC: @ 0x080A75FC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _080A769C + movs r1, #0x22 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + bl sub_080A7918 + movs r3, #0x16 + ldrsh r1, [r4, r3] + lsls r1, r1, #3 + adds r1, r0, r1 + str r1, [r5] + movs r6, #0 + ldrsh r2, [r1, r6] + ldr r0, _080A76A0 + cmp r2, r0 + beq _080A76A4 + cmp r2, r0 + bgt _080A7704 + subs r0, #1 + cmp r2, r0 + beq _080A76AA + ldrb r0, [r1, #5] + cmp r0, #0 + bne _080A764A + ldrh r0, [r1] + strh r0, [r4, #0x1c] + ldrh r0, [r1, #2] + strh r0, [r4, #0x1e] + ldrb r0, [r1, #4] + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] + adds r0, r1, #0 + adds r0, #8 + str r0, [r5] +_080A764A: + ldr r1, [r5] + ldrh r0, [r1] + ldrh r2, [r4, #0x1c] + adds r0, r0, r2 + strh r0, [r4, #0x1c] + ldrh r0, [r1, #2] + ldrh r3, [r4, #0x1e] + adds r0, r0, r3 + strh r0, [r4, #0x1e] + ldrh r0, [r4, #0x20] + ldrb r1, [r1, #4] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0x1c + ldrsh r1, [r4, r6] + movs r3, #0x1e + ldrsh r2, [r4, r3] + ldrh r3, [r4, #0x20] + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7734 + ldrh r0, [r4, #0x18] + adds r0, #1 + strh r0, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r1, [r5] + ldrb r1, [r1, #5] + cmp r0, r1 + blt _080A772A + movs r0, #0 + strh r0, [r4, #0x18] + b _080A76FC + .align 2, 0 +_080A769C: .4byte gUnknown_20380E4 +_080A76A0: .4byte 0x00007FFE +_080A76A4: + ldrh r0, [r1, #2] + strh r0, [r4, #0x16] + b _080A772A +_080A76AA: + ldrh r2, [r1, #2] + movs r6, #2 + ldrsh r0, [r1, r6] + cmp r0, #0 + beq _080A76FC + ldrh r1, [r4, #0x1a] + movs r3, #0x1a + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080A76CA + subs r0, r1, #1 + strh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A76CC + b _080A76FC +_080A76CA: + strh r2, [r4, #0x1a] +_080A76CC: + movs r6, #0x16 + ldrsh r0, [r4, r6] + cmp r0, #0 + beq _080A772A + ldr r3, _080A76F4 + ldr r5, _080A76F8 +_080A76D8: + ldrh r2, [r4, #0x16] + subs r1, r2, #1 + strh r1, [r4, #0x16] + ldr r0, [r3] + subs r0, #8 + str r0, [r3] + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r0, r5 + beq _080A7728 + lsls r0, r1, #0x10 + cmp r0, #0 + bne _080A76D8 + b _080A772A + .align 2, 0 +_080A76F4: .4byte gUnknown_20380E4 +_080A76F8: .4byte 0x00007FFD +_080A76FC: + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] + b _080A772A +_080A7704: + ldr r2, _080A7724 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x26] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + movs r0, #0 + b _080A772C + .align 2, 0 +_080A7724: .4byte gUnknown_20205AC +_080A7728: + strh r2, [r4, #0x16] +_080A772A: + movs r0, #1 +_080A772C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A75FC + + thumb_func_start sub_080A7734 +sub_080A7734: @ 0x080A7734 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A77E0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + movs r1, #0x40 + subs r5, r1, r0 + ldr r1, _080A7780 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r1, [r4, #3] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1b + lsls r0, r5, #8 + ldr r2, _080A7784 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, #0x80 + ble _080A7770 + movs r0, #0x80 +_080A7770: + subs r0, r5, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x26] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A7780: .4byte gUnknown_20205AC +_080A7784: .4byte gUnknown_2021B3C + thumb_func_end sub_080A7734 + + thumb_func_start sub_080A7788 +sub_080A7788: @ 0x080A7788 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A77E0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + movs r1, #0x40 + subs r5, r1, r0 + ldr r1, _080A77D8 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r1, [r4, #3] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1b + lsls r0, r5, #8 + ldr r2, _080A77DC + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #6 + ldrsh r1, [r1, r2] + bl __divsi3 + cmp r0, #0x80 + ble _080A77C8 + movs r0, #0x80 +_080A77C8: + subs r0, r5, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x26] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A77D8: .4byte gUnknown_20205AC +_080A77DC: .4byte gUnknown_2021B3C + thumb_func_end sub_080A7788 + + thumb_func_start sub_080A77E0 +sub_080A77E0: @ 0x080A77E0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080A7828 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r1, _080A782C + ldr r7, _080A7830 + ldr r0, _080A7834 + adds r6, r5, r0 +_080A7800: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, r2 + beq _080A780A + b _080A78FC +_080A780A: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7840 + ldr r0, _080A7838 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r2, [r0] + ldr r1, _080A783C + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + b _080A790A + .align 2, 0 +_080A7828: .4byte gUnknown_20205AC +_080A782C: .4byte gUnknown_2023E88 +_080A7830: .4byte 0x00000181 +_080A7834: .4byte gUnknown_2024188 +_080A7838: .4byte gUnknown_2039BD4 +_080A783C: .4byte gUnknown_82D5A68 +_080A7840: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A78A0 + ldr r0, _080A787C + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A7888 + ldr r1, _080A7880 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A7884 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _080A788A + .align 2, 0 +_080A787C: .4byte gUnknown_2024174 +_080A7880: .4byte gUnknown_2023D12 +_080A7884: .4byte gUnknown_2024190 +_080A7888: + ldrh r2, [r1, #2] +_080A788A: + cmp r2, r7 + bne _080A7898 + ldr r0, _080A7894 + b _080A78E0 + .align 2, 0 +_080A7894: .4byte gUnknown_84FE698 +_080A7898: + ldr r0, _080A789C + b _080A78EE + .align 2, 0 +_080A789C: .4byte gUnknown_82D5A68 +_080A78A0: + ldr r0, _080A78CC + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A78D8 + ldr r1, _080A78D0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A78D4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _080A78DA + .align 2, 0 +_080A78CC: .4byte gUnknown_2024174 +_080A78D0: .4byte gUnknown_2023D12 +_080A78D4: .4byte gUnknown_20243E8 +_080A78D8: + ldrh r2, [r1, #2] +_080A78DA: + cmp r2, r7 + bne _080A78EC + ldr r0, _080A78E8 +_080A78E0: + ldrb r1, [r6] + adds r1, r1, r0 + ldrb r0, [r1] + b _080A790A + .align 2, 0 +_080A78E8: .4byte gUnknown_84FE694 +_080A78EC: + ldr r0, _080A78F8 +_080A78EE: + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + b _080A790A + .align 2, 0 +_080A78F8: .4byte gUnknown_82D45C8 +_080A78FC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bhi _080A7908 + b _080A7800 +_080A7908: + movs r0, #0x40 +_080A790A: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080A77E0 + + thumb_func_start sub_080A7910 +sub_080A7910: @ 0x080A7910 + strh r2, [r0] + asrs r2, r2, #0x10 + strh r2, [r1] + bx lr + thumb_func_end sub_080A7910 + + thumb_func_start sub_080A7918 +sub_080A7918: @ 0x080A7918 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + orrs r0, r1 + bx lr + .align 2, 0 + thumb_func_end sub_080A7918 + + thumb_func_start sub_080A7924 +sub_080A7924: @ 0x080A7924 + push {r4, r5, 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, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + 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, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + subs r0, r0, r2 + adds r1, r6, #0 + bl __divsi3 + mov r1, r8 + strh r0, [r1, #0x1e] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + subs r4, 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, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A7924 + + thumb_func_start sub_080A7990 +sub_080A7990: @ 0x080A7990 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x18] + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080A79A2 + movs r0, #0 + b _080A79FE +_080A79A2: + subs r0, r1, #1 + strh r0, [r4, #0x18] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080A79BC + ldrh r0, [r4, #0x1e] + ldrh r3, [r4, #0x1a] + adds r0, r0, r3 + strh r0, [r4, #0x1a] + ldrh r0, [r4, #0x20] + ldrh r1, [r4, #0x1c] + adds r0, r0, r1 + b _080A79C2 +_080A79BC: + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x1a] + ldrh r0, [r4, #0x24] +_080A79C2: + strh r0, [r4, #0x1c] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x1a + ldrsh r1, [r4, r2] + movs r3, #0x1c + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_080A6A7C + movs r0, #0x18 + ldrsh r3, [r4, r0] + cmp r3, #0 + beq _080A79EC + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7734 + b _080A79FC +_080A79EC: + ldr r2, _080A7A04 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] +_080A79FC: + ldrb r0, [r4, #0x18] +_080A79FE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A7A04: .4byte gUnknown_20205AC + thumb_func_end sub_080A7990 + + thumb_func_start sub_080A7A08 +sub_080A7A08: @ 0x080A7A08 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080A7A34 + ldrb r0, [r0] + movs r1, #0 + cmp r0, #0x1e + bls _080A7A26 + movs r1, #1 + cmp r0, #0x64 + bls _080A7A26 + movs r1, #3 + cmp r0, #0xc8 + bhi _080A7A26 + movs r1, #2 +_080A7A26: + ldr r0, _080A7A38 + strh r1, [r0, #0xe] + adds r0, r2, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_080A7A34: .4byte gUnknown_20380BA +_080A7A38: .4byte gUnknown_20380BE + thumb_func_end sub_080A7A08 + + thumb_func_start sub_080A7A3C +sub_080A7A3C: @ 0x080A7A3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, r4, #0 + ldr r6, _080A7B30 + ldrb r0, [r6] + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7A7C + ldr r2, _080A7B34 + ldr r1, _080A7B38 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #3 + adds r2, r4, #0 + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_080A7A7C: + ldr r0, _080A7B3C + mov r8, r0 + ldrb r0, [r0] + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7AB4 + ldr r2, _080A7B34 + ldr r1, _080A7B38 + mov r3, r8 + ldrb r0, [r3] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #3 + adds r2, r4, #0 + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_080A7AB4: + ldrb r0, [r6] + movs r5, #2 + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7AEC + ldr r2, _080A7B34 + ldr r1, _080A7B38 + ldrb r0, [r6] + eors r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #3 + adds r2, r4, #0 + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_080A7AEC: + mov r1, r8 + ldrb r0, [r1] + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7B24 + ldr r2, _080A7B34 + ldr r1, _080A7B38 + mov r3, r8 + ldrb r0, [r3] + eors r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #3 + ands r7, r0 + lsls r3, r7, #2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] +_080A7B24: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A7B30: .4byte gUnknown_20380D7 +_080A7B34: .4byte gUnknown_20205AC +_080A7B38: .4byte gUnknown_2023E88 +_080A7B3C: .4byte gUnknown_20380D6 + thumb_func_end sub_080A7A3C + + thumb_func_start sub_080A7B40 +sub_080A7B40: @ 0x080A7B40 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r0, _080A7BA0 + ldrb r0, [r0] + cmp r5, r0 + bge _080A7B9A + ldr r6, _080A7BA4 +_080A7B4E: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7B90 + adds r0, r4, #0 + bl sub_080A7BAC + ldr r3, _080A7BA8 + adds r3, r5, r3 + ldrb r2, [r3] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x43 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r2, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + movs r1, #8 + orrs r2, r1 + strb r2, [r0, #5] +_080A7B90: + adds r5, #1 + ldr r0, _080A7BA0 + ldrb r0, [r0] + cmp r5, r0 + blt _080A7B4E +_080A7B9A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A7BA0: .4byte gUnknown_2023D10 +_080A7BA4: .4byte gUnknown_20205AC +_080A7BA8: .4byte gUnknown_2023E88 + thumb_func_end sub_080A7B40 + + thumb_func_start sub_080A7BAC +sub_080A7BAC: @ 0x080A7BAC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7BC8 + cmp r4, #2 + bne _080A7BC4 + movs r0, #0x1e + b _080A7BE8 +_080A7BC4: + movs r0, #0x28 + b _080A7BE8 +_080A7BC8: + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x1e + cmp r0, #0 + beq _080A7BE6 + movs r1, #0x14 + cmp r0, #2 + beq _080A7BE6 + movs r1, #0x32 + cmp r0, #1 + bne _080A7BE6 + movs r1, #0x28 +_080A7BE6: + adds r0, r1, #0 +_080A7BE8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A7BAC + + thumb_func_start sub_080A7BF0 +sub_080A7BF0: @ 0x080A7BF0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7C0C + movs r0, #2 + b _080A7C24 +_080A7C0C: + cmp r4, #0 + beq _080A7C14 + cmp r4, #3 + bne _080A7C18 +_080A7C14: + movs r0, #2 + b _080A7C1A +_080A7C18: + movs r0, #1 +_080A7C1A: + movs r1, #4 + bl sub_08118990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080A7C24: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A7BF0 + + thumb_func_start sub_080A7C2C +sub_080A7C2C: @ 0x080A7C2C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A7C52 + adds r0, r4, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080A7C4E + cmp r0, #3 + bne _080A7C52 +_080A7C4E: + movs r0, #2 + b _080A7C54 +_080A7C52: + movs r0, #1 +_080A7C54: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A7C2C + + thumb_func_start sub_080A7C5C +sub_080A7C5C: @ 0x080A7C5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + mov r8, r6 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sl, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp, #4] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp, #8] + lsls r0, r7, #3 + ldr r1, _080A7D3C + adds r0, r0, r1 + bl sub_08008210 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r1, _080A7D40 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #2] + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080A7D44 + ldr r0, [r4] + cmp r0, #0 + beq _080A7CDA + movs r1, #0xbe + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _080A7CDA + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + ldr r1, [r4] + movs r2, #0xbe + lsls r2, r2, #1 + adds r1, r1, r2 + str r0, [r1] +_080A7CDA: + mov r3, sb + cmp r3, #0 + bne _080A7D78 + adds r0, r6, #0 + ldr r1, [sp, #0x3c] + mov r2, r8 + bl sub_0806E1CC + lsls r1, r5, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A11BC + ldr r3, [sp, #0x44] + cmp r3, #1 + beq _080A7D26 + ldr r0, [sp, #0x40] + lsls r1, r0, #0x18 + lsrs r1, r1, #0x18 + movs r0, #5 + bl sub_08068438 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A7D26 + ldr r0, _080A7D48 + ldr r0, [r0] + ldr r1, [r0] + ldr r2, [sp, #0x40] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _080A7D50 +_080A7D26: + lsls r0, r6, #3 + ldr r1, _080A7D4C + adds r0, r0, r1 + ldr r1, _080A7D44 + ldr r1, [r1] + movs r3, #0xbe + lsls r3, r3, #1 + adds r1, r1, r3 + ldr r1, [r1] + movs r2, #1 + b _080A7DD2 + .align 2, 0 +_080A7D3C: .4byte gUnknown_84FE6CC +_080A7D40: .4byte gUnknown_84FE69C +_080A7D44: .4byte gUnknown_2024178 +_080A7D48: .4byte gUnknown_2024174 +_080A7D4C: .4byte gUnknown_82DDA1C +_080A7D50: + lsls r0, r6, #3 + ldr r1, _080A7D70 + adds r0, r0, r1 + ldr r1, _080A7D74 + ldr r1, [r1] + movs r2, #0xbe + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #1 + str r2, [sp] + adds r2, r6, #0 + mov r3, r8 + bl sub_08034898 + b _080A7E08 + .align 2, 0 +_080A7D70: .4byte gUnknown_82DDA1C +_080A7D74: .4byte gUnknown_2024178 +_080A7D78: + adds r0, r6, #0 + ldr r1, [sp, #0x3c] + mov r2, r8 + bl sub_0806E1CC + lsls r1, r5, #0x14 + movs r3, #0x80 + lsls r3, r3, #0x11 + adds r1, r1, r3 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, [sp, #0x44] + cmp r0, #1 + beq _080A7DBE + ldr r2, [sp, #0x40] + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + movs r0, #5 + bl sub_08068438 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080A7DBE + ldr r0, _080A7DE0 + ldr r0, [r0] + ldr r1, [r0] + ldr r3, [sp, #0x40] + lsls r0, r3, #2 + adds r0, r0, r1 + ldrh r2, [r0, #2] + cmp r2, #0 + beq _080A7DEC +_080A7DBE: + lsls r0, r6, #3 + ldr r1, _080A7DE4 + adds r0, r0, r1 + ldr r1, _080A7DE8 + ldr r1, [r1] + movs r2, #0xbe + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 +_080A7DD2: + str r2, [sp] + adds r2, r6, #0 + mov r3, r8 + bl sub_080349D4 + b _080A7E08 + .align 2, 0 +_080A7DE0: .4byte gUnknown_2024174 +_080A7DE4: .4byte gUnknown_82D6148 +_080A7DE8: .4byte gUnknown_2024178 +_080A7DEC: + lsls r0, r6, #3 + ldr r1, _080A7E54 + adds r0, r0, r1 + ldr r1, _080A7E58 + ldr r1, [r1] + movs r3, #0xbe + lsls r3, r3, #1 + adds r1, r1, r3 + ldr r1, [r1] + str r2, [sp] + adds r2, r6, #0 + mov r3, r8 + bl sub_08034898 +_080A7E08: + ldr r5, _080A7E58 + ldr r0, [r5] + movs r4, #0xbe + lsls r4, r4, #1 + adds r0, r0, r4 + ldr r0, [r0] + ldr r2, [sp, #0xc] + lsls r1, r2, #5 + ldr r3, _080A7E5C + adds r1, r1, r3 + movs r2, #0x80 + lsls r2, r2, #4 + movs r3, #1 + bl sub_08000EF8 + ldr r0, [r5] + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] + mov r0, sb + cmp r0, #0 + bne _080A7E68 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _080A7E60 + adds r0, r0, r1 + mov r2, sl + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldr r3, _080A7E64 + b _080A7E7A + .align 2, 0 +_080A7E54: .4byte gUnknown_82D6148 +_080A7E58: .4byte gUnknown_2024178 +_080A7E5C: .4byte 0x06010000 +_080A7E60: .4byte gUnknown_84FE69C +_080A7E64: .4byte gUnknown_82D45C8 +_080A7E68: + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _080A7EC8 + adds r0, r0, r1 + mov r2, sl + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldr r3, _080A7ECC +_080A7E7A: + lsls r2, r6, #2 + adds r2, r2, r3 + ldrb r2, [r2, #1] + ldr r3, [sp, #4] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r3, [sp, #8] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7EB6 + ldr r3, _080A7ED0 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r1, r0, r1 + ldr r2, _080A7ED4 + str r2, [r1] + adds r0, r0, r3 + movs r1, #0 + bl sub_08007F70 +_080A7EB6: + adds r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A7EC8: .4byte gUnknown_84FE69C +_080A7ECC: .4byte gUnknown_82D5A68 +_080A7ED0: .4byte gUnknown_20205AC +_080A7ED4: .4byte gUnknown_82D2F50 + thumb_func_end sub_080A7C5C + + thumb_func_start sub_080A7ED8 +sub_080A7ED8: @ 0x080A7ED8 + push {lr} + bl sub_08007338 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A7ED8 + + thumb_func_start sub_080A7EE4 +sub_080A7EE4: @ 0x080A7EE4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7F8C + ldr r0, _080A7F18 + ldr r0, [r0] + ldr r2, [r0, #0x18] + ldrb r1, [r2, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A7F1C + ldrh r7, [r2, #2] + ldr r2, [r2, #0x10] + b _080A7F20 + .align 2, 0 +_080A7F18: .4byte gUnknown_2039BD4 +_080A7F1C: + ldrh r7, [r2] + ldr r2, [r2, #8] +_080A7F20: + cmp r7, #0xc9 + bne _080A7F6C + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080A7F58 + movs r0, #0xc9 + b _080A7F62 +_080A7F58: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080A7F62: + lsls r1, r0, #2 + ldr r0, _080A7F68 + b _080A812C + .align 2, 0 +_080A7F68: .4byte gUnknown_82D5A68 +_080A7F6C: + ldr r0, _080A7F84 + cmp r7, r0 + bne _080A7F74 + b _080A80FC +_080A7F74: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + bhi _080A8044 + lsls r1, r7, #2 + ldr r0, _080A7F88 + b _080A812C + .align 2, 0 +_080A7F84: .4byte 0x00000181 +_080A7F88: .4byte gUnknown_82D5A68 +_080A7F8C: + mov r0, r8 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A8058 + ldr r0, _080A7FD8 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, #2 + adds r1, r2, r0 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A7FE4 + ldr r0, _080A7FDC + mov r1, r8 + lsls r4, r1, #1 + adds r4, r4, r0 + ldrh r0, [r4] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080A7FE0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldrh r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + adds r2, r0, #0 + b _080A7FEC + .align 2, 0 +_080A7FD8: .4byte gUnknown_2024174 +_080A7FDC: .4byte gUnknown_2023D12 +_080A7FE0: .4byte gUnknown_2024190 +_080A7FE4: + ldrh r7, [r1, #2] + ldr r0, _080A8024 + adds r0, r2, r0 + ldr r2, [r0] +_080A7FEC: + cmp r7, #0xc9 + bne _080A803C + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080A8028 + movs r0, #0xc9 + b _080A8032 + .align 2, 0 +_080A8024: .4byte gUnknown_2024160 +_080A8028: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080A8032: + lsls r1, r0, #2 + ldr r0, _080A8038 + b _080A812C + .align 2, 0 +_080A8038: .4byte gUnknown_82D5A68 +_080A803C: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + bls _080A804C +_080A8044: + ldr r4, _080A8048 + b _080A812E + .align 2, 0 +_080A8048: .4byte gUnknown_82D5A68 +_080A804C: + lsls r1, r7, #2 + ldr r0, _080A8054 + b _080A812C + .align 2, 0 +_080A8054: .4byte gUnknown_82D5A68 +_080A8058: + ldr r0, _080A8098 + ldr r0, [r0] + ldr r0, [r0] + mov r1, r8 + lsls r2, r1, #2 + adds r1, r2, r0 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080A80A4 + ldr r0, _080A809C + mov r1, r8 + lsls r4, r1, #1 + adds r4, r4, r0 + ldrh r0, [r4] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080A80A0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldrh r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + adds r2, r0, #0 + b _080A80AC + .align 2, 0 +_080A8098: .4byte gUnknown_2024174 +_080A809C: .4byte gUnknown_2023D12 +_080A80A0: .4byte gUnknown_20243E8 +_080A80A4: + ldrh r7, [r1, #2] + ldr r0, _080A80E4 + adds r0, r2, r0 + ldr r2, [r0] +_080A80AC: + cmp r7, #0xc9 + bne _080A80F6 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080A80E8 + movs r0, #0xc9 + b _080A80F2 + .align 2, 0 +_080A80E4: .4byte gUnknown_2024160 +_080A80E8: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080A80F2: + lsls r1, r0, #2 + b _080A812A +_080A80F6: + ldr r0, _080A810C + cmp r7, r0 + bne _080A8118 +_080A80FC: + ldr r0, _080A8110 + add r0, r8 + ldrb r0, [r0] + lsls r0, r0, #2 + ldr r1, _080A8114 + adds r4, r0, r1 + b _080A812E + .align 2, 0 +_080A810C: .4byte 0x00000181 +_080A8110: .4byte gUnknown_2024188 +_080A8114: .4byte gUnknown_84FE684 +_080A8118: + movs r0, #0xce + lsls r0, r0, #1 + cmp r7, r0 + bls _080A8128 + ldr r4, _080A8124 + b _080A812E + .align 2, 0 +_080A8124: .4byte gUnknown_82D45C8 +_080A8128: + lsls r1, r7, #2 +_080A812A: + ldr r0, _080A8140 +_080A812C: + adds r4, r1, r0 +_080A812E: + mov r0, sb + cmp r0, #6 + bhi _080A81DE + lsls r0, r0, #2 + ldr r1, _080A8144 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A8140: .4byte gUnknown_82D45C8 +_080A8144: .4byte _080A8148 +_080A8148: @ jump table + .4byte _080A8164 @ case 0 + .4byte _080A816E @ case 1 + .4byte _080A819A @ case 2 + .4byte _080A81B2 @ case 3 + .4byte _080A8176 @ case 4 + .4byte _080A8188 @ case 5 + .4byte _080A81CA @ case 6 +_080A8164: + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + lsls r0, r0, #3 + b _080A81E0 +_080A816E: + ldrb r0, [r4] + lsrs r0, r0, #4 + lsls r0, r0, #3 + b _080A81E0 +_080A8176: + mov r0, r8 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + lsrs r1, r1, #4 + b _080A81AC +_080A8188: + mov r0, r8 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + lsrs r1, r1, #4 + b _080A81C4 +_080A819A: + mov r0, r8 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r4] + movs r1, #0xf + ands r1, r2 +_080A81AC: + lsls r1, r1, #2 + subs r0, r0, r1 + b _080A81E0 +_080A81B2: + mov r0, r8 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r4] + movs r1, #0xf + ands r1, r2 +_080A81C4: + lsls r1, r1, #2 + adds r0, r0, r1 + b _080A81E0 +_080A81CA: + mov r0, r8 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x1f + ldrb r1, [r4, #1] + subs r0, r0, r1 + b _080A81E0 +_080A81DE: + movs r0, #0 +_080A81E0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080A7EE4 + + thumb_func_start sub_080A81EC +sub_080A81EC: @ 0x080A81EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r2 + mov sl, r3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _080A820A + movs r5, #0 + movs r6, #1 + b _080A820E +_080A820A: + movs r5, #2 + movs r6, #3 +_080A820E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8260 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A8260 + movs r0, #2 + eors r4, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r0, r8 + lsls r1, r0, #0x10 + lsls r2, r7, #0x10 + b _080A826C +_080A8260: + mov r0, r8 + lsls r1, r0, #0x10 + lsrs r5, r1, #0x10 + lsls r0, r7, #0x10 + lsrs r3, r0, #0x10 + adds r2, r0, #0 +_080A826C: + asrs r0, r1, #0x10 + adds r0, r0, r5 + asrs r0, r0, #1 + mov r1, sb + strh r0, [r1] + asrs r0, r2, #0x10 + adds r0, r0, r3 + asrs r0, r0, #1 + mov r1, sl + strh r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A81EC + + thumb_func_start sub_080A8290 +sub_080A8290: @ 0x080A8290 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #4 + lsls r6, r1, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _080A8328 + mov sl, r0 + bl sub_0806F0C4 + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _080A832C + mov sb, r0 + mov r0, r8 + lsls r3, r0, #4 + add r3, r8 + lsls r3, r3, #2 + mov r0, sb + adds r5, r3, r0 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + add r4, sb + 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, #5] + movs r1, #0xd + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r5, #5] + ldrb r0, [r5, #1] + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r5, #1] + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldrh r2, [r5, #4] + ldr r0, _080A8330 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + movs r0, #0x1c + add sb, r0 + ldr r3, [sp] + add r3, sb + mov r0, sl + str r0, [r3] + mov r0, r8 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080A8328: .4byte sub_08007140 +_080A832C: .4byte gUnknown_20205AC +_080A8330: .4byte 0xFFFFFC00 + thumb_func_end sub_080A8290 + + thumb_func_start sub_080A8334 +sub_080A8334: @ 0x080A8334 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _080A836C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8374 + ldr r2, _080A8370 + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #6] + rsbs r0, r0, #0 + strh r0, [r2, #6] + adds r3, r4, #0 + adds r3, #0x3f + ldrb r0, [r3] + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + b _080A837E + .align 2, 0 +_080A836C: .4byte gUnknown_20380D6 +_080A8370: .4byte gUnknown_20380BE +_080A8374: + ldr r1, _080A83A8 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] +_080A837E: + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x34] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x38] + ldr r1, _080A83AC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _080A83B0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A83A8: .4byte gUnknown_20380BE +_080A83AC: .4byte sub_080A6014 +_080A83B0: .4byte sub_080A5FA4 + thumb_func_end sub_080A8334 + + thumb_func_start sub_080A83B4 +sub_080A83B4: @ 0x080A83B4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080A83DC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A83E4 + ldr r2, _080A83E0 + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + movs r1, #6 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2, #6] + adds r1, r2, #0 + b _080A83EE + .align 2, 0 +_080A83DC: .4byte gUnknown_20380D6 +_080A83E0: .4byte gUnknown_20380BE +_080A83E4: + ldr r1, _080A8420 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] +_080A83EE: + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x34] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x38] + ldrb r1, [r1, #0xc] + adds r0, r4, #0 + bl sub_08007EC0 + ldr r1, _080A8424 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _080A8428 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8420: .4byte gUnknown_20380BE +_080A8424: .4byte sub_080A6014 +_080A8428: .4byte sub_080A5FA4 + thumb_func_end sub_080A83B4 + + thumb_func_start sub_080A842C +sub_080A842C: @ 0x080A842C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _080A8450 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8458 + ldr r0, _080A8454 + ldrh r1, [r4, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r4, #0x20] + b _080A8464 + .align 2, 0 +_080A8450: .4byte gUnknown_20380D6 +_080A8454: .4byte gUnknown_20380BE +_080A8458: + ldr r1, _080A8480 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + adds r0, r1, #0 +_080A8464: + ldrh r0, [r0, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _080A8484 + str r0, [r4, #0x1c] + ldr r1, _080A8488 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8480: .4byte gUnknown_20380BE +_080A8484: .4byte sub_080A60A0 +_080A8488: .4byte sub_080A34C4 + thumb_func_end sub_080A842C + + thumb_func_start sub_080A848C +sub_080A848C: @ 0x080A848C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080A8520 + adds r5, r1, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + strh r0, [r5, #8] + ldr r7, _080A8524 + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #8 + cmp r0, #0 + beq _080A84C0 + movs r0, #8 + rsbs r0, r0, #0 + adds r1, r0, #0 +_080A84C0: + strh r1, [r5, #0xa] + strh r6, [r5, #0xc] + strh r6, [r5, #0xe] + ldr r4, _080A8528 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x24] + ldrh r2, [r5, #8] + subs r1, r1, r2 + strh r1, [r0, #0x24] + ldr r0, _080A852C + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x10] + strh r6, [r5, #0x12] + movs r1, #0x10 + ldrsh r0, [r5, r1] + adds r0, #0x10 + lsls r0, r0, #0x14 + lsrs r6, r0, #0x10 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + lsls r4, r0, #4 + ldrb r0, [r7] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + cmp r0, #0x14 + beq _080A851C + cmp r0, #0x28 + bne _080A8530 +_080A851C: + movs r0, #2 + b _080A8532 + .align 2, 0 +_080A8520: .4byte gUnknown_3005B60 +_080A8524: .4byte gUnknown_20380D6 +_080A8528: .4byte gUnknown_20205AC +_080A852C: .4byte 0x00002771 +_080A8530: + movs r0, #3 +_080A8532: + strh r0, [r5, #0x14] + lsls r0, r4, #1 + ldr r1, _080A8560 + adds r0, r0, r1 + lsls r1, r6, #1 + ldr r2, _080A8564 + adds r1, r1, r2 + ldr r2, _080A8568 + bl CpuSet + ldr r0, _080A856C + ldrb r2, [r0, #2] + ldrh r3, [r0] + adds r0, r6, #0 + movs r1, #0x10 + bl sub_0806F410 + ldr r0, _080A8570 + str r0, [r5] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8560: .4byte gUnknown_20373B4 +_080A8564: .4byte gUnknown_20377B4 +_080A8568: .4byte 0x04000008 +_080A856C: .4byte gUnknown_20380BE +_080A8570: .4byte sub_080A8574 + thumb_func_end sub_080A848C + + thumb_func_start sub_080A8574 +sub_080A8574: @ 0x080A8574 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080A8598 + adds r4, r0, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080A85D8 + cmp r0, #1 + bgt _080A859C + cmp r0, #0 + beq _080A85A2 + b _080A8634 + .align 2, 0 +_080A8598: .4byte gUnknown_3005B60 +_080A859C: + cmp r0, #2 + beq _080A8620 + b _080A8634 +_080A85A2: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A8640 + ldr r2, _080A85D4 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0xa] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + ldrh r1, [r4, #0xe] + adds r0, r1, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _080A8634 + strh r1, [r4, #0xe] + b _080A8612 + .align 2, 0 +_080A85D4: .4byte gUnknown_20205AC +_080A85D8: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A8640 + ldr r3, _080A861C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x24] + ldrh r2, [r4, #0xa] + subs r1, r1, r2 + strh r1, [r0, #0x24] + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + bne _080A8634 + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + strh r2, [r1, #0x24] +_080A8612: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + b _080A8634 + .align 2, 0 +_080A861C: .4byte gUnknown_20205AC +_080A8620: + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080A8634 + ldr r0, _080A863C + bl sub_08008564 + adds r0, r5, #0 + bl sub_080A34E4 +_080A8634: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A863C: .4byte 0x00002771 + thumb_func_end sub_080A8574 + + thumb_func_start sub_080A8640 +sub_080A8640: @ 0x080A8640 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r0, #0 + bl sub_080A72B0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + blt _080A86B0 + ldr r5, _080A86BC + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r3, r4, r5 + movs r0, #3 + ldrb r1, [r6, #0x14] + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + ldrb r1, [r6, #0x10] + lsls r1, r1, #4 + movs r2, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + movs r0, #8 + strh r0, [r3, #0x2e] + mov r0, r8 + strh r0, [r3, #0x30] + strh r7, [r3, #0x32] + movs r0, #8 + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r0, [r0, #0x24] + strh r0, [r3, #0x24] + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _080A86C0 + str r0, [r4] + ldrh r0, [r6, #0x12] + adds r0, #1 + strh r0, [r6, #0x12] +_080A86B0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A86BC: .4byte gUnknown_20205AC +_080A86C0: .4byte sub_080A86C4 + thumb_func_end sub_080A8640 + + thumb_func_start sub_080A86C4 +sub_080A86C4: @ 0x080A86C4 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + subs r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A86EE + ldr r2, _080A86F4 + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x12] + subs r1, #1 + strh r1, [r0, #0x12] + adds r0, r3, #0 + bl sub_080A7324 +_080A86EE: + pop {r0} + bx r0 + .align 2, 0 +_080A86F4: .4byte gUnknown_3005B60 + thumb_func_end sub_080A86C4 + + thumb_func_start sub_080A86F8 +sub_080A86F8: @ 0x080A86F8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A872C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A8730 + movs r0, #5 + b _080A8732 + .align 2, 0 +_080A872C: .4byte gUnknown_20380D6 +_080A8730: + ldr r0, _080A8744 +_080A8732: + strh r0, [r5, #0x2e] + ldr r0, _080A8748 + strh r0, [r5, #0x30] + ldr r0, _080A874C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8744: .4byte 0x0000FFF6 +_080A8748: .4byte 0x0000FFD8 +_080A874C: .4byte sub_080A8750 + thumb_func_end sub_080A86F8 + + thumb_func_start sub_080A8750 +sub_080A8750: @ 0x080A8750 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + adds r0, 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, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080A878C + adds r0, r5, #1 + strh r0, [r4, #0x30] +_080A878C: + movs r1, #0x22 + ldrsh r0, [r4, r1] + movs r2, #0x26 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080A87A4 + adds r0, r4, #0 + bl sub_080A34C4 +_080A87A4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A8750 + + thumb_func_start sub_080A87AC +sub_080A87AC: @ 0x080A87AC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080A87E4 + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #8] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r5, #0xa] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x36] + ldr r0, _080A87E8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A87EC + ldrh r0, [r5, #8] + adds r0, #0x1e + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #0xa] + subs r0, #0x14 + b _080A87FA + .align 2, 0 +_080A87E4: .4byte gUnknown_20380BE +_080A87E8: .4byte gUnknown_20380D7 +_080A87EC: + ldrh r0, [r5, #8] + subs r0, #0x1e + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #0xa] + subs r0, #0x50 +_080A87FA: + strh r0, [r4, #0x22] + ldr r0, _080A8810 + str r0, [r4, #0x1c] + ldr r1, _080A8814 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8810: .4byte sub_080A67B4 +_080A8814: .4byte sub_080A34C4 + thumb_func_end sub_080A87AC + + thumb_func_start sub_080A8818 +sub_080A8818: @ 0x080A8818 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r6, _080A886C + adds r7, r6, #0 + adds r7, #8 +_080A8822: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r6 + movs r1, #0 + strb r1, [r2, #4] + ldr r1, _080A8870 + str r1, [r2] + strb r4, [r2, #5] + adds r4, #1 + strb r4, [r2, #6] + movs r1, #1 + rsbs r1, r1, #0 + adds r5, r1, #0 + movs r1, #0xff + strb r1, [r2, #7] + adds r0, r0, r7 + movs r1, #0 + movs r2, #0x20 + bl memset + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + cmp r4, #0xf + bls _080A8822 + ldr r0, _080A886C + movs r1, #0xfe + strb r1, [r0, #5] + ldr r1, _080A8874 + adds r0, r0, r1 + ldrb r1, [r0] + orrs r1, r5 + strb r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A886C: .4byte gUnknown_3005B60 +_080A8870: .4byte sub_080A8A40 +_080A8874: .4byte 0x0000025E + thumb_func_end sub_080A8818 + + thumb_func_start sub_080A8878 +sub_080A8878: @ 0x080A8878 + push {r4, r5, r6, r7, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r6, #0 + ldr r7, _080A88B4 +_080A8884: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r5, r0, #3 + adds r4, r5, r7 + ldrb r0, [r4, #4] + cmp r0, #0 + bne _080A88B8 + str r2, [r4] + strb r1, [r4, #7] + adds r0, r6, #0 + bl sub_080A88CC + adds r0, r7, #0 + adds r0, #8 + adds r0, r5, r0 + movs r1, #0 + movs r2, #0x20 + bl memset + movs r0, #1 + strb r0, [r4, #4] + adds r0, r6, #0 + b _080A88C4 + .align 2, 0 +_080A88B4: .4byte gUnknown_3005B60 +_080A88B8: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xf + bls _080A8884 + movs r0, #0 +_080A88C4: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A8878 + + thumb_func_start sub_080A88CC +sub_080A88CC: @ 0x080A88CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A8A04 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x10 + bne _080A88FC + ldr r1, _080A88F8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xfe + strb r1, [r0, #5] + movs r1, #0xff + strb r1, [r0, #6] + b _080A8958 + .align 2, 0 +_080A88F8: .4byte gUnknown_3005B60 +_080A88FC: + ldr r6, _080A8938 + lsls r0, r4, #2 + mov ip, r0 + mov r8, r6 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r6 +_080A890A: + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r5, r0, #3 + mov r7, r8 + adds r3, r5, r7 + ldrb r0, [r2, #7] + ldrb r7, [r3, #7] + cmp r0, r7 + bhs _080A893C + ldrb r0, [r3, #5] + strb r0, [r2, #5] + strb r1, [r2, #6] + ldrb r0, [r3, #5] + cmp r0, #0xfe + beq _080A8934 + adds r1, r0, #0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, r8 + strb r4, [r0, #6] +_080A8934: + strb r4, [r3, #5] + b _080A8958 + .align 2, 0 +_080A8938: .4byte gUnknown_3005B60 +_080A893C: + ldrb r0, [r3, #6] + cmp r0, #0xff + beq _080A8946 + adds r1, r0, #0 + b _080A890A +_080A8946: + mov r2, ip + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + strb r1, [r0, #5] + adds r2, r5, r6 + ldrb r1, [r2, #6] + strb r1, [r0, #6] + strb r4, [r2, #6] +_080A8958: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A88CC + + thumb_func_start sub_080A8964 +sub_080A8964: @ 0x080A8964 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080A8998 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r4 + ldrb r0, [r2, #4] + cmp r0, #0 + beq _080A89CE + movs r0, #0 + strb r0, [r2, #4] + ldrb r3, [r2, #5] + cmp r3, #0xfe + bne _080A899C + ldrb r0, [r2, #6] + cmp r0, #0xff + beq _080A89CE + adds r1, r0, #0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strb r3, [r0, #5] + b _080A89CE + .align 2, 0 +_080A8998: .4byte gUnknown_3005B60 +_080A899C: + ldrb r3, [r2, #6] + adds r0, r3, #0 + cmp r0, #0xff + bne _080A89B4 + ldrb r0, [r2, #5] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r0, #0xff + strb r0, [r1, #6] + b _080A89CE +_080A89B4: + ldrb r1, [r2, #5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strb r3, [r0, #6] + ldrb r1, [r2, #6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r1, [r2, #5] + strb r1, [r0, #5] +_080A89CE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A8964 + + thumb_func_start sub_080A89D4 +sub_080A89D4: @ 0x080A89D4 + push {r4, r5, lr} + bl sub_080A8A04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _080A89F8 + ldr r5, _080A8A00 +_080A89E4: + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r5 + ldr r1, [r4] + bl _call_via_r1 + ldrb r0, [r4, #6] + cmp r0, #0xff + bne _080A89E4 +_080A89F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8A00: .4byte gUnknown_3005B60 + thumb_func_end sub_080A89D4 + + thumb_func_start sub_080A8A04 +sub_080A8A04: @ 0x080A8A04 + push {lr} + movs r2, #0 + ldr r0, _080A8A3C + ldrb r1, [r0, #4] + adds r3, r0, #0 + cmp r1, #1 + bne _080A8A18 + ldrb r0, [r3, #5] + cmp r0, #0xfe + beq _080A8A36 +_080A8A18: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bhi _080A8A36 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r3 + ldrb r0, [r1, #4] + cmp r0, #1 + bne _080A8A18 + ldrb r0, [r1, #5] + cmp r0, #0xfe + bne _080A8A18 +_080A8A36: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_080A8A3C: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8A04 + + thumb_func_start sub_080A8A40 +sub_080A8A40: @ 0x080A8A40 + bx lr + .align 2, 0 + thumb_func_end sub_080A8A40 + + thumb_func_start sub_080A8A44 +sub_080A8A44: @ 0x080A8A44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080A8A74 + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #3 + adds r0, r3, #0 + adds r0, #0x1c + adds r4, r5, #0 + adds r4, #8 + adds r0, r0, r4 + strh r2, [r0] + adds r0, r3, #0 + adds r0, #0x1e + adds r0, r0, r4 + lsrs r2, r2, #0x10 + strh r2, [r0] + adds r3, r3, r5 + str r1, [r3] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8A74: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8A44 + + thumb_func_start sub_080A8A78 +sub_080A8A78: @ 0x080A8A78 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080A8AA8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r3 + adds r0, r1, #0 + adds r0, #0x1c + adds r3, #8 + adds r0, r0, r3 + ldrh r2, [r0] + adds r1, #0x1e + adds r1, r1, r3 + movs r3, #0 + ldrsh r0, [r1, r3] + lsls r0, r0, #0x10 + orrs r2, r0 + str r2, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A8AA8: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8A78 + + thumb_func_start sub_080A8AAC +sub_080A8AAC: @ 0x080A8AAC + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r4, _080A8ACC +_080A8AB4: + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r4 + ldrb r0, [r1, #4] + cmp r0, #1 + bne _080A8AD0 + ldr r0, [r1] + cmp r0, r3 + bne _080A8AD0 + movs r0, #1 + b _080A8ADC + .align 2, 0 +_080A8ACC: .4byte gUnknown_3005B60 +_080A8AD0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080A8AB4 + movs r0, #0 +_080A8ADC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A8AAC + + thumb_func_start sub_080A8AE4 +sub_080A8AE4: @ 0x080A8AE4 + push {lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _080A8B00 +_080A8AEC: + ldrb r0, [r1, #4] + cmp r0, #1 + bne _080A8B04 + ldr r0, [r1] + cmp r0, r3 + bne _080A8B04 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + b _080A8B0E + .align 2, 0 +_080A8B00: .4byte gUnknown_3005B60 +_080A8B04: + adds r1, #0x28 + adds r2, #1 + cmp r2, #0xf + ble _080A8AEC + movs r0, #0xff +_080A8B0E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080A8AE4 + + thumb_func_start sub_080A8B14 +sub_080A8B14: @ 0x080A8B14 + push {lr} + movs r2, #0 + movs r1, #0 + ldr r3, _080A8B40 +_080A8B1C: + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _080A8B30 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080A8B30: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _080A8B1C + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_080A8B40: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8B14 + + thumb_func_start sub_080A8B44 +sub_080A8B44: @ 0x080A8B44 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + cmp r3, #0xe + bhi _080A8B72 + ldr r2, _080A8B78 + lsls r0, r3, #1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r2, #8 + adds r0, r0, r2 + strh r5, [r0] + adds r0, r3, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, r0, r2 + lsrs r1, r5, #0x10 + strh r1, [r0] +_080A8B72: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A8B78: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8B44 + + thumb_func_start sub_080A8B7C +sub_080A8B7C: @ 0x080A8B7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xe + bls _080A8B8E + movs r0, #0 + b _080A8BB0 +_080A8B8E: + ldr r3, _080A8BB8 + lsls r0, r1, #1 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #3 + adds r0, r0, r2 + adds r3, #8 + adds r0, r0, r3 + ldrh r0, [r0] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r2 + adds r1, r1, r3 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r1, r1, #0x10 + orrs r0, r1 +_080A8BB0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A8BB8: .4byte gUnknown_3005B60 + thumb_func_end sub_080A8B7C + + thumb_func_start sub_080A8BBC +sub_080A8BBC: @ 0x080A8BBC + bx lr + .align 2, 0 + thumb_func_end sub_080A8BBC + + thumb_func_start sub_080A8BC0 +sub_080A8BC0: @ 0x080A8BC0 + push {lr} + ldr r2, _080A8BF8 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r0, _080A8BFC + adds r2, r0, #0 + adds r2, #0x21 + movs r1, #0 + strb r1, [r2] + adds r0, #0x22 + strb r1, [r0] + ldr r0, _080A8C00 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080A8BF8: .4byte gUnknown_2037C74 +_080A8BFC: .4byte gUnknown_2024118 +_080A8C00: .4byte sub_080A8C04 + thumb_func_end sub_080A8BC0 + + thumb_func_start sub_080A8C04 +sub_080A8C04: @ 0x080A8C04 + push {r4, r5, r6, r7, lr} + sub sp, #8 + ldr r0, _080A8C20 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0x13 + bls _080A8C14 + b _080A8E6C +_080A8C14: + lsls r0, r0, #2 + ldr r1, _080A8C24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A8C20: .4byte gUnknown_2024118 +_080A8C24: .4byte _080A8C28 +_080A8C28: @ jump table + .4byte _080A8C78 @ case 0 + .4byte _080A8CF4 @ case 1 + .4byte _080A8D0C @ case 2 + .4byte _080A8D12 @ case 3 + .4byte _080A8D18 @ case 4 + .4byte _080A8D28 @ case 5 + .4byte _080A8D2E @ case 6 + .4byte _080A8D56 @ case 7 + .4byte _080A8D5A @ case 8 + .4byte _080A8D5E @ case 9 + .4byte _080A8D62 @ case 10 + .4byte _080A8D80 @ case 11 + .4byte _080A8D88 @ case 12 + .4byte _080A8D90 @ case 13 + .4byte _080A8D98 @ case 14 + .4byte _080A8DA0 @ case 15 + .4byte _080A8DA8 @ case 16 + .4byte _080A8DB0 @ case 17 + .4byte _080A8DB8 @ case 18 + .4byte _080A8DC0 @ case 19 +_080A8C78: + bl sub_080B9750 + bl sub_080354B0 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl sub_080A133C + ldr r0, _080A8CD4 + movs r1, #0 + strh r1, [r0] + ldr r0, _080A8CD8 + strh r1, [r0] + ldr r0, _080A8CDC + strh r1, [r0] + ldr r0, _080A8CE0 + strh r1, [r0] + ldr r0, _080A8CE4 + strh r1, [r0] + ldr r0, _080A8CE8 + strh r1, [r0] + ldr r0, _080A8CEC + strh r1, [r0] + ldr r0, _080A8CF0 + strh r1, [r0] + b _080A8E9A + .align 2, 0 +_080A8CD4: .4byte gUnknown_2022AC8 +_080A8CD8: .4byte gUnknown_2022ACA +_080A8CDC: .4byte gUnknown_2022ACC +_080A8CE0: .4byte gUnknown_2022ACE +_080A8CE4: .4byte gUnknown_2022AD0 +_080A8CE8: .4byte gUnknown_2022AD2 +_080A8CEC: .4byte gUnknown_2022AD4 +_080A8CF0: .4byte gUnknown_2022AD6 +_080A8CF4: + movs r0, #0 + str r0, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _080A8D08 + add r0, sp, #4 + bl CpuFastSet + b _080A8E9A + .align 2, 0 +_080A8D08: .4byte 0x01006000 +_080A8D0C: + bl sub_080358F8 + b _080A8E9A +_080A8D12: + bl sub_0800668C + b _080A8E9A +_080A8D18: + bl sub_08008424 + ldr r1, _080A8D24 + movs r0, #4 + strb r0, [r1] + b _080A8E9A + .align 2, 0 +_080A8D24: .4byte gUnknown_30030BC +_080A8D28: + bl sub_0805DF6C + b _080A8E9A +_080A8D2E: + ldr r5, _080A8D48 + adds r4, r5, #0 + adds r4, #0x22 + ldrb r0, [r4] + bl sub_0805DCA8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8D4C + movs r0, #0 + strb r0, [r4] + b _080A8E9A + .align 2, 0 +_080A8D48: .4byte gUnknown_2024118 +_080A8D4C: + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r1, r5, #0 + b _080A8D72 +_080A8D56: + movs r0, #0 + b _080A8D64 +_080A8D5A: + movs r0, #1 + b _080A8D64 +_080A8D5E: + movs r0, #2 + b _080A8D64 +_080A8D62: + movs r0, #3 +_080A8D64: + bl sub_080A8EDC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8D70 + b _080A8E9A +_080A8D70: + ldr r1, _080A8D7C +_080A8D72: + adds r1, #0x21 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + b _080A8E9A + .align 2, 0 +_080A8D7C: .4byte gUnknown_2024118 +_080A8D80: + movs r0, #0 + bl sub_080A8FD0 + b _080A8E9A +_080A8D88: + movs r0, #1 + bl sub_080A8FD0 + b _080A8E9A +_080A8D90: + movs r0, #2 + bl sub_080A8FD0 + b _080A8E9A +_080A8D98: + movs r0, #3 + bl sub_080A8FD0 + b _080A8E9A +_080A8DA0: + movs r0, #0 + bl sub_080A93A4 + b _080A8E9A +_080A8DA8: + movs r0, #1 + bl sub_080A93A4 + b _080A8E9A +_080A8DB0: + movs r0, #2 + bl sub_080A93A4 + b _080A8E9A +_080A8DB8: + movs r0, #3 + bl sub_080A93A4 + b _080A8E9A +_080A8DC0: + bl sub_0805E8A0 + movs r0, #1 + bl sub_080A631C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r7, _080A8E54 + lsls r0, r4, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080A8E58 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8E24 + movs r0, #3 + bl sub_080A631C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 +_080A8E24: + ldr r1, _080A8E5C + ldr r0, _080A8E60 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + ldr r0, _080A8E64 + ldrb r0, [r0] + cmp r0, #0 + beq _080A8E9A + ldr r0, _080A8E68 + ldrb r0, [r0] + cmp r0, #0 + beq _080A8E9A + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 + b _080A8E9A + .align 2, 0 +_080A8E54: .4byte gUnknown_2023D12 +_080A8E58: .4byte gUnknown_20243E8 +_080A8E5C: .4byte gUnknown_2024150 +_080A8E60: .4byte gUnknown_202415C +_080A8E64: .4byte gUnknown_300319C +_080A8E68: .4byte gUnknown_30031C4 +_080A8E6C: + ldr r0, _080A8EAC + bl sub_080006F0 + bl sub_080A8EBC + movs r0, #1 + str r0, [sp] + movs r0, #0xff + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A2078 + ldr r2, _080A8EB0 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r0, _080A8EB4 + bl sub_08000540 + bl sub_0805EB30 +_080A8E9A: + ldr r1, _080A8EB8 + adds r1, #0x21 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A8EAC: .4byte sub_080386DC +_080A8EB0: .4byte gUnknown_2037C74 +_080A8EB4: .4byte sub_080380FC +_080A8EB8: .4byte gUnknown_2024118 + thumb_func_end sub_080A8C04 + + thumb_func_start sub_080A8EBC +sub_080A8EBC: @ 0x080A8EBC + ldr r3, _080A8ED4 + ldrb r2, [r3] + movs r1, #0xd + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + ldr r2, _080A8ED8 + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_080A8ED4: .4byte 0x0400000A +_080A8ED8: .4byte 0x0400000C + thumb_func_end sub_080A8EBC + + thumb_func_start sub_080A8EDC +sub_080A8EDC: @ 0x080A8EDC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A8F24 + ldrb r0, [r0] + cmp r4, r0 + bhs _080A8FC4 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A8F3E + ldr r0, _080A8F28 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080A8F34 + ldr r1, _080A8F2C + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A8F30 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0805D828 + b _080A8FBC + .align 2, 0 +_080A8F24: .4byte gUnknown_2023D10 +_080A8F28: .4byte gUnknown_2024174 +_080A8F2C: .4byte gUnknown_2023D12 +_080A8F30: .4byte gUnknown_20243E8 +_080A8F34: + adds r0, r4, #0 + movs r1, #0 + bl sub_0805E3F8 + b _080A8FBC +_080A8F3E: + ldr r0, _080A8F58 + ldr r1, [r0] + movs r2, #0x80 + ands r1, r2 + cmp r1, #0 + beq _080A8F60 + cmp r4, #0 + bne _080A8F60 + ldr r0, _080A8F5C + ldr r0, [r0] + ldrb r0, [r0, #8] + b _080A8F72 + .align 2, 0 +_080A8F58: .4byte gUnknown_2022C90 +_080A8F5C: .4byte gUnknown_3005AF0 +_080A8F60: + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080A8F7A + cmp r4, #0 + bne _080A8F7A + movs r0, #6 +_080A8F72: + movs r1, #0 + bl sub_0805DBA0 + b _080A8FBC +_080A8F7A: + ldr r0, _080A8FA8 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080A8FB4 + ldr r1, _080A8FAC + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A8FB0 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_0805D998 + b _080A8FBC + .align 2, 0 +_080A8FA8: .4byte gUnknown_2024174 +_080A8FAC: .4byte gUnknown_2023D12 +_080A8FB0: .4byte gUnknown_2024190 +_080A8FB4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0805E3F8 +_080A8FBC: + ldr r0, _080A8FCC + adds r0, #0x22 + movs r1, #0 + strb r1, [r0] +_080A8FC4: + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080A8FCC: .4byte gUnknown_2024118 + thumb_func_end sub_080A8EDC + + thumb_func_start sub_080A8FD0 +sub_080A8FD0: @ 0x080A8FD0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080A9008 + ldrb r0, [r0] + cmp r7, r0 + blo _080A8FEA + b _080A9368 +_080A8FEA: + ldr r0, _080A900C + ldr r0, [r0] + ldr r0, [r0] + lsls r2, r7, #2 + adds r0, r2, r0 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + str r2, [sp] + cmp r0, #0 + beq _080A9010 + adds r0, r7, #0 + bl sub_080A5A14 + b _080A9016 + .align 2, 0 +_080A9008: .4byte gUnknown_2023D10 +_080A900C: .4byte gUnknown_2024174 +_080A9010: + adds r0, r7, #0 + bl sub_080A5A00 +_080A9016: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A902A + b _080A9134 +_080A902A: + ldr r1, _080A9114 + lsls r0, r7, #1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r1, #0x64 + mov sl, r1 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + ldr r1, _080A9118 + mov sb, r1 + add r0, sb + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080A904E + b _080A9368 +_080A904E: + ldrh r0, [r6] + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r5, _080A911C + adds r0, r7, #0 + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, r8 + bl sub_08006B0C + ldr r1, _080A9120 + adds r4, r7, r1 + strb r0, [r4] + ldr r5, _080A9124 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r7, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080A9128 + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r7, [r0, #0x2e] + ldrh r0, [r6] + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + ldrb r2, [r4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + strh r0, [r1, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _080A912C + adds r1, r7, r1 + ldrb r1, [r1] + bl sub_08007EC0 + ldr r0, _080A9130 + ldr r0, [r0] + ldr r0, [r0] + ldr r2, [sp] + adds r0, r2, r0 + b _080A9318 + .align 2, 0 +_080A9114: .4byte gUnknown_2023D12 +_080A9118: .4byte gUnknown_20243E8 +_080A911C: .4byte gUnknown_2024640 +_080A9120: .4byte gUnknown_2023E88 +_080A9124: .4byte gUnknown_20205AC +_080A9128: .4byte sub_08007140 +_080A912C: .4byte gUnknown_2024188 +_080A9130: .4byte gUnknown_2024174 +_080A9134: + ldr r0, _080A9188 + ldr r1, [r0] + movs r2, #0x80 + ands r1, r2 + cmp r1, #0 + beq _080A9198 + cmp r7, #0 + bne _080A9198 + ldr r5, _080A918C + ldr r0, [r5] + ldrb r4, [r0, #8] + movs r0, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r6, _080A9190 + ldr r1, _080A9194 + ldr r0, [r5] + ldrb r0, [r0, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r0, #0xa0 + lsls r0, r0, #0xf + adds r4, r4, r0 + asrs r4, r4, #0x10 + movs r0, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + b _080A91DC + .align 2, 0 +_080A9188: .4byte gUnknown_2022C90 +_080A918C: .4byte gUnknown_3005AF0 +_080A9190: .4byte gUnknown_2024640 +_080A9194: .4byte gUnknown_82D95BC +_080A9198: + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080A9230 + cmp r7, #0 + bne _080A9230 + movs r0, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #6 + bl sub_08069C6C + ldr r5, _080A921C + ldr r0, _080A9220 + ldrb r0, [r0, #0x18] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r4, r4, r1 + asrs r4, r4, #0x10 + movs r0, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r5, #0 +_080A91DC: + movs r1, #0x50 + adds r2, r4, #0 + bl sub_08006B0C + ldr r3, _080A9224 + strb r0, [r3] + ldr r4, _080A9228 + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + strb r0, [r1, #5] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080A922C + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r7, [r0, #0x2e] + b _080A9338 + .align 2, 0 +_080A921C: .4byte gUnknown_2024640 +_080A9220: .4byte gUnknown_82D95BC +_080A9224: .4byte gUnknown_2023E88 +_080A9228: .4byte gUnknown_20205AC +_080A922C: .4byte sub_08007140 +_080A9230: + ldr r1, _080A9378 + lsls r0, r7, #1 + adds r6, r0, r1 + ldrh r0, [r6] + movs r2, #0x64 + mov sl, r2 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + ldr r2, _080A937C + mov sb, r2 + add r0, sb + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080A9254 + b _080A9368 +_080A9254: + ldrh r0, [r6] + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r5, _080A9380 + adds r0, r7, #0 + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, r8 + bl sub_08006B0C + ldr r1, _080A9384 + adds r4, r7, r1 + strb r0, [r4] + ldr r5, _080A9388 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r7, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080A938C + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r7, [r0, #0x2e] + ldrh r0, [r6] + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + ldrb r2, [r4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + strh r0, [r1, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _080A9390 + adds r1, r7, r1 + ldrb r1, [r1] + bl sub_08007EC0 + ldr r0, _080A9394 + ldr r0, [r0] + ldr r0, [r0] + ldr r1, [sp] + adds r0, r1, r0 +_080A9318: + ldrh r1, [r0, #2] + ldr r0, _080A9398 + cmp r1, r0 + bne _080A9338 + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r5, #0 + adds r0, #8 + adds r1, r1, r0 + ldr r0, _080A939C + ldr r2, _080A93A0 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_080A9338: + ldr r1, _080A9388 + ldr r0, _080A9384 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldr r0, _080A9394 + ldr r0, [r0] + ldr r0, [r0] + ldr r1, [sp] + adds r0, r1, r0 + ldr r1, [r0] + lsls r1, r1, #0x1f + adds r2, #0x3e + lsrs r1, r1, #0x1f + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080A9368: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A9378: .4byte gUnknown_2023D12 +_080A937C: .4byte gUnknown_2024190 +_080A9380: .4byte gUnknown_2024640 +_080A9384: .4byte gUnknown_2023E88 +_080A9388: .4byte gUnknown_20205AC +_080A938C: .4byte sub_08007140 +_080A9390: .4byte gUnknown_2024188 +_080A9394: .4byte gUnknown_2024174 +_080A9398: .4byte 0x00000181 +_080A939C: .4byte gUnknown_82DD33C +_080A93A0: .4byte 0x00000604 + thumb_func_end sub_080A8FD0 + + thumb_func_start sub_080A93A4 +sub_080A93A4: @ 0x080A93A4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080A93CC + ldrb r0, [r0] + cmp r5, r0 + blo _080A93B4 + b _080A9526 +_080A93B4: + ldr r0, _080A93D0 + ldr r1, [r0] + movs r2, #0x80 + ands r1, r2 + cmp r1, #0 + beq _080A93D4 + cmp r5, #0 + bne _080A93D4 + bl sub_08072214 + b _080A93EC + .align 2, 0 +_080A93CC: .4byte gUnknown_2023D10 +_080A93D0: .4byte gUnknown_2022C90 +_080A93D4: + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080A93E6 + cmp r5, #0 + bne _080A93E6 + b _080A9526 +_080A93E6: + adds r0, r5, #0 + bl sub_08071EEC +_080A93EC: + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080A9428 + adds r4, r5, r0 + strb r6, [r4] + adds r0, r5, #0 + bl sub_08072528 + adds r0, r6, #0 + bl sub_080723E0 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A9434 + ldrb r0, [r4] + ldr r1, _080A942C + lsls r4, r5, #1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _080A9430 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + b _080A9480 + .align 2, 0 +_080A9428: .4byte gUnknown_3005AD0 +_080A942C: .4byte gUnknown_2023D12 +_080A9430: .4byte gUnknown_20243E8 +_080A9434: + ldr r0, _080A945C + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A9468 + ldrb r0, [r4] + ldr r1, _080A9460 + lsls r4, r5, #1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _080A9464 + adds r1, r1, r2 + movs r2, #0xa + bl sub_080743F0 + b _080A9480 + .align 2, 0 +_080A945C: .4byte gUnknown_2022C90 +_080A9460: .4byte gUnknown_2023D12 +_080A9464: .4byte gUnknown_2024190 +_080A9468: + ldrb r0, [r4] + ldr r1, _080A94AC + lsls r4, r5, #1 + adds r1, r4, r1 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _080A94B0 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 +_080A9480: + adds r0, r5, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _080A949C + adds r0, r5, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080A94B8 +_080A949C: + ldr r0, _080A94B4 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, #1 + bl sub_08072494 + b _080A94C4 + .align 2, 0 +_080A94AC: .4byte gUnknown_2023D12 +_080A94B0: .4byte gUnknown_2024190 +_080A94B4: .4byte gUnknown_3005AD0 +_080A94B8: + ldr r0, _080A94F0 + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, #0 + bl sub_08072494 +_080A94C4: + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A94FC + ldr r0, _080A94F4 + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A94F8 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080A9526 + adds r0, r6, #0 + bl sub_08072394 + b _080A9526 + .align 2, 0 +_080A94F0: .4byte gUnknown_3005AD0 +_080A94F4: .4byte gUnknown_2023D12 +_080A94F8: .4byte gUnknown_20243E8 +_080A94FC: + ldr r0, _080A952C + ldr r0, [r0] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A9526 + ldr r0, _080A9530 + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080A9534 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080A9526 + adds r0, r6, #0 + bl sub_08072394 +_080A9526: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A952C: .4byte gUnknown_2022C90 +_080A9530: .4byte gUnknown_2023D12 +_080A9534: .4byte gUnknown_2024190 + thumb_func_end sub_080A93A4 + + thumb_func_start sub_080A9538 +sub_080A9538: @ 0x080A9538 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080A95DC + adds r0, r4, r0 + ldrb r6, [r0] + ldr r0, _080A95E0 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _080A95E4 + bl sub_080347E0 + ldr r0, _080A95E8 + bl sub_0803481C + ldr r1, _080A95EC + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + strh r4, [r1, #8] + cmp r5, #0 + beq _080A95F8 + movs r0, #0x1f + strh r0, [r1, #0xa] + movs r5, #0 + lsls r0, r6, #4 + ldr r7, _080A95F0 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r6, r0, r7 +_080A958C: + movs r0, #0x20 + ldrsh r1, [r6, r0] + ldrh r2, [r6, #0x22] + adds r2, #0x20 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r0, _080A95F4 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r0, r7 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r1, r0, #4 + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #0xff + lsls r0, r0, #8 + strh r0, [r3, #0x30] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + cmp r5, #4 + bls _080A95D0 + movs r0, #0x15 + strh r0, [r3, #0x3a] +_080A95D0: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _080A958C + b _080A9658 + .align 2, 0 +_080A95DC: .4byte gUnknown_2023E88 +_080A95E0: .4byte sub_080A967C +_080A95E4: .4byte gUnknown_84FD690 +_080A95E8: .4byte gUnknown_84FDF98 +_080A95EC: .4byte gUnknown_3005B60 +_080A95F0: .4byte gUnknown_20205AC +_080A95F4: .4byte gUnknown_85176BC +_080A95F8: + movs r0, #0xf8 + lsls r0, r0, #7 + strh r0, [r1, #0xa] + movs r5, #0 + lsls r0, r6, #4 + ldr r7, _080A9674 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r6, r0, r7 +_080A960A: + movs r2, #0x20 + ldrsh r1, [r6, r2] + ldrh r2, [r6, #0x22] + subs r2, #0x20 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r0, _080A9678 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r0, r7 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r1, r0, #4 + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r3, #0x30] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + cmp r5, #4 + bls _080A964E + movs r0, #0x15 + strh r0, [r3, #0x3a] +_080A964E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _080A960A +_080A9658: + ldr r0, _080A9674 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080A9674: .4byte gUnknown_20205AC +_080A9678: .4byte gUnknown_85176BC + thumb_func_end sub_080A9538 + + thumb_func_start sub_080A967C +sub_080A967C: @ 0x080A967C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080A96D4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #2 + bne _080A9702 + movs r0, #0 + strh r0, [r4, #0xc] + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #0x10] + ldrh r3, [r4, #0xa] + movs r1, #0x10 + bl sub_0806F410 + ldrh r2, [r4, #0x12] + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080A96D8 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _080A9706 + movs r0, #1 + eors r0, r2 + strh r0, [r4, #0x12] + b _080A9706 + .align 2, 0 +_080A96D4: .4byte gUnknown_3005B60 +_080A96D8: + ldrh r1, [r4, #0x10] + subs r0, r1, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080A9706 + strh r1, [r4, #0x10] + movs r0, #1 + eors r0, r2 + strh r0, [r4, #0x12] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _080A9706 + adds r0, r5, #0 + bl sub_080A8964 + b _080A9706 +_080A9702: + adds r0, r1, #1 + strh r0, [r4, #0xc] +_080A9706: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080A967C + + thumb_func_start sub_080A970C +sub_080A970C: @ 0x080A970C + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x3a] + movs r3, #0x3a + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _080A9738 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r3] + ldr r1, _080A9734 + str r1, [r2, #0x1c] + adds r0, r2, #0 + bl _call_via_r1 + b _080A973C + .align 2, 0 +_080A9734: .4byte sub_080A9740 +_080A9738: + subs r0, r1, #1 + strh r0, [r2, #0x3a] +_080A973C: + pop {r0} + bx r0 + thumb_func_end sub_080A970C + + thumb_func_start sub_080A9740 +sub_080A9740: @ 0x080A9740 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x7f + bgt _080A976C + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1d + b _080A9772 +_080A976C: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1f +_080A9772: + strb r0, [r1] + ldrh r0, [r4, #0x2e] + adds r0, #8 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x38] + adds r0, r0, r1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x34 + bne _080A97B4 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080A97AE + adds r0, r4, #0 + bl sub_08007338 + b _080A97B4 +_080A97AE: + adds r0, r4, #0 + bl sub_08006E00 +_080A97B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A9740 + + thumb_func_start sub_080A97BC +sub_080A97BC: @ 0x080A97BC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _080A986C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + ldr r1, _080A9870 + adds r0, r0, r1 + lsrs r5, r0, #0x10 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + ldr r1, _080A9874 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A97FA + lsls r0, r5, #0x10 + ldr r1, _080A9878 + adds r0, r0, r1 + lsrs r5, r0, #0x10 +_080A97FA: + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _080A987C + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + lsls r2, r4, #0x10 + asrs r2, r2, #0x10 + movs r3, #4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A9880 + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _080A9884 + cmp r0, r1 + bne _080A9844 + ldr r1, _080A9888 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080A9844: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080A9888 + adds r0, r0, r1 + ldr r1, _080A988C + bl sub_0800858C + ldr r1, _080A9890 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0x26] + ldr r1, _080A9894 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A986C: .4byte gUnknown_20380D7 +_080A9870: .4byte 0xFFE00000 +_080A9874: .4byte 0xFFDC0000 +_080A9878: .4byte 0xFFFA0000 +_080A987C: .4byte gUnknown_85176A4 +_080A9880: .4byte 0x0000271A +_080A9884: .4byte 0xFFFF0000 +_080A9888: .4byte gUnknown_20205AC +_080A988C: .4byte gUnknown_851769C +_080A9890: .4byte gUnknown_3005B60 +_080A9894: .4byte sub_080A9898 + thumb_func_end sub_080A97BC + + thumb_func_start sub_080A9898 +sub_080A9898: @ 0x080A9898 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A98C4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r1, #0xa] + adds r0, #1 + adds r2, r0, #0 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _080A98CC + ldr r0, _080A98C8 + str r0, [r1] + movs r0, #0 + strh r0, [r1, #0xa] + b _080A98E2 + .align 2, 0 +_080A98C4: .4byte gUnknown_3005B60 +_080A98C8: .4byte sub_080A98E8 +_080A98CC: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_080A98E2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A9898 + + thumb_func_start sub_080A98E8 +sub_080A98E8: @ 0x080A98E8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080A9980 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080A9984 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #0xa] + adds r1, r0, #1 + strh r1, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + ble _080A9978 + ldrh r0, [r5, #0xc] + adds r0, #1 + movs r6, #0 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _080A9978 + ldr r3, _080A9988 + lsls r2, r2, #4 + mov ip, r2 + ldr r1, _080A998C + add r1, ip + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r4, [r1] + movs r2, #0x87 + lsls r2, r2, #1 + add r2, ip + lsls r2, r2, #1 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r1] + ldr r0, _080A9990 + add r0, ip + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + strh r1, [r2] + strh r4, [r0] + strh r6, [r5, #0xc] + ldrh r0, [r5, #0xe] + adds r0, #1 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _080A9978 + strh r6, [r5, #0xe] + strh r6, [r5, #0xa] + ldrh r0, [r5, #0x10] + adds r0, #1 + strh r0, [r5, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _080A9978 + movs r0, #9 + strh r0, [r5, #0xa] + ldr r0, _080A9994 + str r0, [r5] +_080A9978: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9980: .4byte 0x0000271A +_080A9984: .4byte gUnknown_3005B60 +_080A9988: .4byte gUnknown_20377B4 +_080A998C: .4byte 0x0000010D +_080A9990: .4byte 0x0000010F +_080A9994: .4byte sub_080A9998 + thumb_func_end sub_080A98E8 + + thumb_func_start sub_080A9998 +sub_080A9998: @ 0x080A9998 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A99C8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + ldrh r0, [r2, #0xa] + subs r0, #1 + adds r3, r0, #0 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080A99D0 + ldr r0, _080A99CC + str r0, [r2] + movs r0, #0 + strh r0, [r2, #0xa] + b _080A99E6 + .align 2, 0 +_080A99C8: .4byte gUnknown_3005B60 +_080A99CC: .4byte sub_080A99EC +_080A99D0: + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_080A99E6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A9998 + + thumb_func_start sub_080A99EC +sub_080A99EC: @ 0x080A99EC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r1, _080A9A2C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x25 + bne _080A9A34 + ldrh r0, [r1, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080A9A30 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + b _080A9A4E + .align 2, 0 +_080A9A2C: .4byte gUnknown_3005B60 +_080A9A30: .4byte gUnknown_20205AC +_080A9A34: + cmp r0, #0x27 + bne _080A9A4E + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34E4 +_080A9A4E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080A99EC + + thumb_func_start sub_080A9A54 +sub_080A9A54: @ 0x080A9A54 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + ldr r0, _080A9A78 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrh r0, [r0] + subs r0, #0xf + cmp r0, #0x2b + bls _080A9A6C + b _080A9BF0 +_080A9A6C: + lsls r0, r0, #2 + ldr r1, _080A9A7C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A9A78: .4byte gUnknown_2024174 +_080A9A7C: .4byte _080A9A80 +_080A9A80: @ jump table + .4byte _080A9B30 @ case 0 + .4byte _080A9B36 @ case 1 + .4byte _080A9B3C @ case 2 + .4byte _080A9B42 @ case 3 + .4byte _080A9B48 @ case 4 + .4byte _080A9B4E @ case 5 + .4byte _080A9B54 @ case 6 + .4byte _080A9B5A @ case 7 + .4byte _080A9B60 @ case 8 + .4byte _080A9B66 @ case 9 + .4byte _080A9B6C @ case 10 + .4byte _080A9B72 @ case 11 + .4byte _080A9B78 @ case 12 + .4byte _080A9B7E @ case 13 + .4byte _080A9BF0 @ case 14 + .4byte _080A9BF0 @ case 15 + .4byte _080A9BF0 @ case 16 + .4byte _080A9BF0 @ case 17 + .4byte _080A9BF0 @ case 18 + .4byte _080A9BF0 @ case 19 + .4byte _080A9BF0 @ case 20 + .4byte _080A9BF0 @ case 21 + .4byte _080A9BF0 @ case 22 + .4byte _080A9BF0 @ case 23 + .4byte _080A9B84 @ case 24 + .4byte _080A9B88 @ case 25 + .4byte _080A9B8C @ case 26 + .4byte _080A9B90 @ case 27 + .4byte _080A9B94 @ case 28 + .4byte _080A9B98 @ case 29 + .4byte _080A9B9C @ case 30 + .4byte _080A9BA0 @ case 31 + .4byte _080A9BA8 @ case 32 + .4byte _080A9BB0 @ case 33 + .4byte _080A9BB8 @ case 34 + .4byte _080A9BC0 @ case 35 + .4byte _080A9BC8 @ case 36 + .4byte _080A9BD0 @ case 37 + .4byte _080A9BF0 @ case 38 + .4byte _080A9BF0 @ case 39 + .4byte _080A9BD8 @ case 40 + .4byte _080A9BDC @ case 41 + .4byte _080A9BE0 @ case 42 + .4byte _080A9BE8 @ case 43 +_080A9B30: + movs r5, #0 + movs r2, #0 + b _080A9BF8 +_080A9B36: + movs r5, #0 + movs r2, #1 + b _080A9BF8 +_080A9B3C: + movs r5, #0 + movs r2, #3 + b _080A9BF8 +_080A9B42: + movs r5, #0 + movs r2, #5 + b _080A9BF8 +_080A9B48: + movs r5, #0 + movs r2, #6 + b _080A9BF8 +_080A9B4E: + movs r5, #0 + movs r2, #2 + b _080A9BF8 +_080A9B54: + movs r5, #0 + movs r2, #4 + b _080A9BF8 +_080A9B5A: + movs r5, #1 + movs r2, #0 + b _080A9BF8 +_080A9B60: + movs r5, #1 + movs r2, #1 + b _080A9BF8 +_080A9B66: + movs r5, #1 + movs r2, #3 + b _080A9BF8 +_080A9B6C: + movs r5, #1 + movs r2, #5 + b _080A9BF8 +_080A9B72: + movs r5, #1 + movs r2, #6 + b _080A9BF8 +_080A9B78: + movs r5, #1 + movs r2, #2 + b _080A9BF8 +_080A9B7E: + movs r5, #1 + movs r2, #4 + b _080A9BF8 +_080A9B84: + movs r5, #0 + b _080A9BA2 +_080A9B88: + movs r5, #0 + b _080A9BAA +_080A9B8C: + movs r5, #0 + b _080A9BB2 +_080A9B90: + movs r5, #0 + b _080A9BBA +_080A9B94: + movs r5, #0 + b _080A9BC2 +_080A9B98: + movs r5, #0 + b _080A9BCA +_080A9B9C: + movs r5, #0 + b _080A9BD2 +_080A9BA0: + movs r5, #1 +_080A9BA2: + movs r2, #0 + movs r3, #1 + b _080A9BF8 +_080A9BA8: + movs r5, #1 +_080A9BAA: + movs r2, #1 + movs r3, #1 + b _080A9BF8 +_080A9BB0: + movs r5, #1 +_080A9BB2: + movs r2, #3 + movs r3, #1 + b _080A9BF8 +_080A9BB8: + movs r5, #1 +_080A9BBA: + movs r2, #5 + movs r3, #1 + b _080A9BF8 +_080A9BC0: + movs r5, #1 +_080A9BC2: + movs r2, #6 + movs r3, #1 + b _080A9BF8 +_080A9BC8: + movs r5, #1 +_080A9BCA: + movs r2, #2 + movs r3, #1 + b _080A9BF8 +_080A9BD0: + movs r5, #1 +_080A9BD2: + movs r2, #4 + movs r3, #1 + b _080A9BF8 +_080A9BD8: + movs r5, #0 + b _080A9BE2 +_080A9BDC: + movs r5, #0 + b _080A9BEA +_080A9BE0: + movs r5, #1 +_080A9BE2: + movs r2, #0xff + movs r3, #0 + b _080A9BF8 +_080A9BE8: + movs r5, #1 +_080A9BEA: + movs r2, #0xff + movs r3, #1 + b _080A9BF8 +_080A9BF0: + adds r0, r4, #0 + bl sub_080A34E4 + b _080A9C1A +_080A9BF8: + ldr r0, _080A9C20 + movs r1, #0 + strh r5, [r0] + strh r2, [r0, #2] + strh r1, [r0, #4] + strh r1, [r0, #6] + strh r3, [r0, #8] + ldr r1, _080A9C24 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080A9C28 + str r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_080A9C1A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080A9C20: .4byte gUnknown_20380BE +_080A9C24: .4byte gUnknown_3005B60 +_080A9C28: .4byte sub_08117704 + thumb_func_end sub_080A9A54 + + thumb_func_start sub_080A9C2C +sub_080A9C2C: @ 0x080A9C2C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080A9C68 + strb r4, [r0] + ldr r0, _080A9C6C + strb r4, [r0] + ldr r0, _080A9C70 + movs r2, #0 + bl sub_080A3310 + ldr r0, _080A9C74 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080A9C78 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9C68: .4byte gUnknown_20380D6 +_080A9C6C: .4byte gUnknown_20380D7 +_080A9C70: .4byte gUnknown_8277888 +_080A9C74: .4byte sub_080A9C7C +_080A9C78: .4byte gUnknown_3005B60 + thumb_func_end sub_080A9C2C + + thumb_func_start sub_080A9C7C +sub_080A9C7C: @ 0x080A9C7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080A9CC4 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080A9CC8 + thumb_func_end sub_080A9C7C + + thumb_func_start sub_080A9C8C +sub_080A9C8C: @ 0x080A9C8C + ldrb r0, [r0] + cmp r0, #0 + bne _080A9CBE + ldr r0, _080A9CCC + ldr r2, [r0] + ldr r1, _080A9CD0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + ldr r2, [r2, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_080A9CBE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9CC4: .4byte gUnknown_2038098 +_080A9CC8: .4byte gUnknown_203809D +_080A9CCC: .4byte gUnknown_2024174 +_080A9CD0: .4byte gUnknown_3005B60 + thumb_func_end sub_080A9C8C + + thumb_func_start sub_080A9CD4 +sub_080A9CD4: @ 0x080A9CD4 + push {lr} + adds r3, r0, #0 + ldr r2, _080A9D00 + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080A9D04 + ldrb r0, [r3, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r3, #1] + movs r0, #0x30 + strh r0, [r3, #0x22] + b _080A9D32 + .align 2, 0 +_080A9D00: .4byte gUnknown_3005B60 +_080A9D04: + ldrh r1, [r3, #0x22] + movs r2, #0x22 + ldrsh r0, [r3, r2] + cmp r0, #0x30 + beq _080A9D12 + adds r0, r1, #1 + strh r0, [r3, #0x22] +_080A9D12: + ldrh r1, [r3, #0x2e] + movs r2, #0x2e + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _080A9D20 + subs r0, r1, #1 + strh r0, [r3, #0x2e] +_080A9D20: + ldr r0, _080A9D38 + movs r2, #0x2e + ldrsh r1, [r3, r2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r0, #0x52 + bl sub_08001144 +_080A9D32: + pop {r0} + bx r0 + .align 2, 0 +_080A9D38: .4byte gUnknown_851AC0C + thumb_func_end sub_080A9CD4 + + thumb_func_start sub_080A9D3C +sub_080A9D3C: @ 0x080A9D3C + push {lr} + adds r3, r0, #0 + ldr r2, _080A9D64 + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080A9D68 + ldrb r0, [r3, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r3, #1] + movs r0, #0x30 + b _080A9D74 + .align 2, 0 +_080A9D64: .4byte gUnknown_3005B60 +_080A9D68: + ldrh r1, [r3, #0x22] + movs r2, #0x22 + ldrsh r0, [r3, r2] + cmp r0, #0x30 + beq _080A9D76 + adds r0, r1, #1 +_080A9D74: + strh r0, [r3, #0x22] +_080A9D76: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A9D3C + + thumb_func_start sub_080A9D7C +sub_080A9D7C: @ 0x080A9D7C + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _080A9DA4 + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080A9DA4 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _080A9DB0 +_080A9DA4: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_080A9DB0: + pop {r0} + bx r0 + thumb_func_end sub_080A9D7C + + thumb_func_start sub_080A9DB4 +sub_080A9DB4: @ 0x080A9DB4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + ldr r2, _080A9E04 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + movs r6, #0 + lsls r7, r1, #0x10 +_080A9DC2: + lsls r5, r0, #0x10 + asrs r5, r5, #0x10 + ldr r0, _080A9E08 + adds r1, r5, #0 + asrs r2, r7, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080A9E0C + adds r4, r4, r0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08007EC0 + movs r0, #1 + strh r0, [r4, #0x2e] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r5, #0x20 + lsls r5, r5, #0x10 + lsrs r0, r5, #0x10 + cmp r6, #4 + bls _080A9DC2 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080A9E04: .4byte 0xFFC00000 +_080A9E08: .4byte gUnknown_851AD74 +_080A9E0C: .4byte gUnknown_20205AC + thumb_func_end sub_080A9DB4 + + thumb_func_start sub_080A9E10 +sub_080A9E10: @ 0x080A9E10 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + ldr r2, _080A9E60 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + movs r5, #0 + lsls r6, r1, #0x10 +_080A9E1E: + lsls r4, r0, #0x10 + asrs r4, r4, #0x10 + ldr r0, _080A9E64 + adds r1, r4, #0 + asrs r2, r6, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080A9E68 + adds r2, r2, r0 + adds r1, r5, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #0x20 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + cmp r5, #4 + bls _080A9E1E + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080A9E60: .4byte 0xFFC00000 +_080A9E64: .4byte gUnknown_851AD74 +_080A9E68: .4byte gUnknown_20205AC + thumb_func_end sub_080A9E10 + + thumb_func_start sub_080A9E6C +sub_080A9E6C: @ 0x080A9E6C + push {r4, lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x20] + movs r0, #0x20 + ldrsh r1, [r3, r0] + ldr r0, _080A9EA4 + cmp r1, r0 + bgt _080A9F04 + movs r4, #0x2e + ldrsh r0, [r3, r4] + adds r4, r2, #0 + cmp r0, #0 + beq _080A9EF8 + cmp r1, #0x77 + bgt _080A9EA8 + ldrh r1, [r3, #0x30] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r0, #0x1e + bgt _080A9EC0 + adds r1, #1 + strh r1, [r3, #0x30] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + bgt _080A9EC0 + adds r0, r1, #1 + b _080A9EBE + .align 2, 0 +_080A9EA4: .4byte 0x0000010F +_080A9EA8: + ldrh r1, [r3, #0x30] + movs r4, #0x30 + ldrsh r0, [r3, r4] + cmp r0, #0 + beq _080A9EC0 + subs r0, r1, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080A9EC0 + subs r0, r1, #2 +_080A9EBE: + strh r0, [r3, #0x30] +_080A9EC0: + ldrh r1, [r3, #0x30] + movs r0, #0x1f + ands r0, r1 + lsls r2, r0, #0xa + lsls r1, r0, #5 + adds r2, r2, r1 + orrs r2, r0 + movs r1, #0x20 + ldrsh r0, [r3, r1] + ldrh r4, [r3, #0x20] + cmp r0, #0x84 + beq _080A9EE4 + cmp r0, #0x88 + beq _080A9EE4 + cmp r0, #0x8c + beq _080A9EE4 + cmp r0, #0x90 + bne _080A9EF4 +_080A9EE4: + ldr r1, _080A9EEC + ldr r0, _080A9EF0 + strh r0, [r1] + b _080A9EF8 + .align 2, 0 +_080A9EEC: .4byte gUnknown_20377B4 +_080A9EF0: .4byte 0x000033F8 +_080A9EF4: + ldr r0, _080A9F00 + strh r2, [r0] +_080A9EF8: + adds r0, r4, #4 + strh r0, [r3, #0x20] + b _080A9F10 + .align 2, 0 +_080A9F00: .4byte gUnknown_20377B4 +_080A9F04: + ldr r1, _080A9F18 + movs r0, #0 + strh r0, [r1] + adds r0, r3, #0 + bl sub_08006E00 +_080A9F10: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080A9F18: .4byte gUnknown_20377B4 + thumb_func_end sub_080A9E6C + + thumb_func_start sub_080A9F1C +sub_080A9F1C: @ 0x080A9F1C + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x20] + movs r0, #0x20 + ldrsh r1, [r2, r0] + ldr r0, _080A9F34 + cmp r1, r0 + bgt _080A9F38 + adds r0, r3, #0 + adds r0, #8 + strh r0, [r2, #0x20] + b _080A9F3E + .align 2, 0 +_080A9F34: .4byte 0x0000010F +_080A9F38: + adds r0, r2, #0 + bl sub_08006E00 +_080A9F3E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080A9F1C + + thumb_func_start sub_080A9F44 +sub_080A9F44: @ 0x080A9F44 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + beq _080A9F98 + cmp r5, #1 + bgt _080A9F60 + cmp r5, #0 + beq _080A9F64 + b _080AA02E +_080A9F60: + cmp r5, #2 + bne _080AA02E +_080A9F64: + ldr r0, _080A9F90 + movs r1, #0 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080A9F94 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #1] + strh r5, [r0, #0x2e] + b _080AA02E + .align 2, 0 +_080A9F90: .4byte gUnknown_851ADC0 +_080A9F94: .4byte gUnknown_20205AC +_080A9F98: + ldr r0, _080AA03C + mov sb, r0 + movs r1, #0 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r6, _080AA040 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r2, [r1, #1] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + movs r2, #8 + mov r8, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #1] + strh r5, [r1, #0x2e] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + mov r0, sb + movs r1, #0 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r5, r6, #0 + adds r5, #0x1c + adds r0, r1, r5 + ldr r2, _080AA044 + mov sl, r2 + str r2, [r0] + adds r1, r1, r6 + ldrb r2, [r1, #1] + adds r0, r4, #0 + ands r0, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #1] + movs r1, #0x50 + rsbs r1, r1, #0 + mov r0, sb + movs r2, #0x44 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r5 + mov r1, sl + str r1, [r5] + adds r0, r0, r6 + ldrb r1, [r0, #1] + ands r4, r1 + mov r2, r8 + orrs r4, r2 + strb r4, [r0, #1] +_080AA02E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AA03C: .4byte gUnknown_851ADC0 +_080AA040: .4byte gUnknown_20205AC +_080AA044: .4byte sub_080A9F1C + thumb_func_end sub_080A9F44 + + thumb_func_start sub_080AA048 +sub_080AA048: @ 0x080AA048 + push {lr} + bl sub_080B9800 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + ldr r0, _080AA068 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080AA068: .4byte gUnknown_2022ACE + thumb_func_end sub_080AA048 + + thumb_func_start sub_080AA06C +sub_080AA06C: @ 0x080AA06C + push {r4, r5, lr} + sub sp, #0x14 + ldr r0, _080AA088 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #5 + bhi _080AA0A8 + lsls r0, r0, #2 + ldr r1, _080AA08C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AA088: .4byte gUnknown_3002360 +_080AA08C: .4byte _080AA090 +_080AA090: @ jump table + .4byte _080AA0A8 @ case 0 + .4byte _080AA18C @ case 1 + .4byte _080AA26C @ case 2 + .4byte _080AA2B4 @ case 3 + .4byte _080AA2E8 @ case 4 + .4byte _080AA3C4 @ case 5 +_080AA0A8: + movs r0, #0 + bl sub_080006F0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _080AA170 + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + add r1, sp, #0xc + movs r0, #0 + strh r0, [r1] + ldr r1, _080AA174 + add r0, sp, #0xc + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _080AA178 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0 + str r2, [sp, #0x10] + add r0, sp, #0x10 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _080AA17C + str r0, [r1, #8] + ldr r0, [r1, #8] + add r0, sp, #0xc + strh r2, [r0] + str r0, [r1] + ldr r0, _080AA180 + str r0, [r1, #4] + ldr r0, _080AA184 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080A133C + ldr r0, _080AA188 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + b _080AA3F2 + .align 2, 0 +_080AA170: .4byte 0x00007FFF +_080AA174: .4byte 0x040000D4 +_080AA178: .4byte 0x8100C000 +_080AA17C: .4byte 0x85000100 +_080AA180: .4byte 0x05000002 +_080AA184: .4byte 0x810001FF +_080AA188: .4byte gUnknown_3002360 +_080AA18C: + ldr r0, _080AA224 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _080AA228 + ldr r1, _080AA22C + bl LZ77UnCompVram + ldr r4, _080AA230 + movs r5, #0x90 + lsls r5, r5, #1 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl sub_080A1200 + ldr r0, _080AA234 + ldr r1, _080AA238 + bl LZ77UnCompVram + ldr r0, _080AA23C + ldr r1, _080AA240 + bl LZ77UnCompVram + adds r0, r4, #0 + adds r0, #0xa0 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080AA244 + ldr r1, _080AA248 + bl LZ77UnCompVram + ldr r0, _080AA24C + ldr r1, _080AA250 + bl LZ77UnCompVram + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + ldr r1, _080AA254 + movs r0, #9 + strb r0, [r1] + ldr r0, _080AA258 + bl sub_08034388 + ldr r0, _080AA25C + bl sub_08034388 + ldr r0, _080AA260 + bl sub_08034388 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_080A1200 + ldr r0, _080AA264 + bl sub_0800845C + ldr r0, _080AA268 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0] + b _080AA3F2 + .align 2, 0 +_080AA224: .4byte gUnknown_8517C18 +_080AA228: .4byte gUnknown_8517AA0 +_080AA22C: .4byte 0x06004800 +_080AA230: .4byte gUnknown_8517B58 +_080AA234: .4byte gUnknown_8519AB4 +_080AA238: .4byte 0x06008000 +_080AA23C: .4byte gUnknown_851A298 +_080AA240: .4byte 0x0600D000 +_080AA244: .4byte gUnknown_851A6E8 +_080AA248: .4byte 0x0600C000 +_080AA24C: .4byte gUnknown_851A9CC +_080AA250: .4byte 0x0600D800 +_080AA254: .4byte gUnknown_30030BC +_080AA258: .4byte gUnknown_851ACE4 +_080AA25C: .4byte gUnknown_851AD8C +_080AA260: .4byte gUnknown_851ADD8 +_080AA264: .4byte gUnknown_851AD9C +_080AA268: .4byte gUnknown_3002360 +_080AA26C: + ldr r0, _080AA2A4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080AA2A8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #8] + strh r2, [r1, #0xa] + ldr r0, _080AA2AC + strh r0, [r1, #0xc] + subs r0, #0x10 + strh r0, [r1, #0xe] + ldr r0, _080AA2B0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + b _080AA3F2 + .align 2, 0 +_080AA2A4: .4byte sub_080AA418 +_080AA2A8: .4byte gUnknown_3005B60 +_080AA2AC: .4byte 0x0000FFF0 +_080AA2B0: .4byte gUnknown_3002360 +_080AA2B4: + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _080AA2DC + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080AA2E0 + bl sub_080006F0 + ldr r0, _080AA2E4 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #4 + strb r1, [r0] + b _080AA3F2 + .align 2, 0 +_080AA2DC: .4byte 0x0000FFFF +_080AA2E0: .4byte sub_080AA048 +_080AA2E4: .4byte gUnknown_3002360 +_080AA2E8: + movs r2, #0x80 + lsls r2, r2, #1 + movs r0, #0x78 + movs r1, #0x50 + movs r3, #0 + bl sub_0816F08C + movs r1, #0xf0 + lsls r1, r1, #8 + movs r0, #0x28 + bl sub_08001144 + ldr r4, _080AA3A0 + movs r0, #0x2a + adds r1, r4, #0 + bl sub_08001144 + movs r1, #0xe0 + lsls r1, r1, #8 + movs r0, #0x2c + bl sub_08001144 + movs r0, #0x2e + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + ldr r1, _080AA3A4 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _080AA3A8 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x50 + movs r1, #0x84 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0xc + bl sub_08001144 + ldr r1, _080AA3AC + movs r0, #8 + bl sub_08001144 + ldr r1, _080AA3B0 + movs r0, #0xa + bl sub_08001144 + ldr r1, _080AA3B4 + movs r0, #0xc + bl sub_08001144 + movs r0, #1 + bl sub_08001274 + ldr r1, _080AA3B8 + movs r0, #0 + bl sub_08001144 + ldr r0, _080AA3BC + bl m4aSongNumStart + ldr r0, _080AA3C0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + b _080AA3F2 + .align 2, 0 +_080AA3A0: .4byte 0x0000FFFF +_080AA3A4: .4byte 0x00001F1F +_080AA3A8: .4byte 0x00003F1F +_080AA3AC: .4byte 0x00001A0B +_080AA3B0: .4byte 0x00001B0E +_080AA3B4: .4byte 0x00004981 +_080AA3B8: .4byte 0x0000B441 +_080AA3BC: .4byte 0x0000019D +_080AA3C0: .4byte gUnknown_3002360 +_080AA3C4: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080AA3F2 + movs r0, #0 + bl sub_080A9F44 + str r4, [sp] + movs r0, #4 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0xa0 + movs r2, #4 + movs r3, #4 + bl sub_080B9ADC + ldr r0, _080AA3FC + bl sub_08000540 +_080AA3F2: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA3FC: .4byte sub_080AA400 + thumb_func_end sub_080AA06C + + thumb_func_start sub_080AA400 +sub_080AA400: @ 0x080AA400 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AA400 + + thumb_func_start sub_080AA418 +sub_080AA418: @ 0x080AA418 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080AA46C + ldrh r1, [r0, #0x2e] + movs r0, #0xf + ands r0, r1 + ldr r5, _080AA470 + cmp r0, #0 + bne _080AA43E + lsls r0, r6, #2 + adds r1, r0, r6 + lsls r1, r1, #3 + adds r1, r1, r5 + movs r2, #0xa + ldrsh r1, [r1, r2] + adds r4, r0, #0 + cmp r1, #0 + beq _080AA450 +_080AA43E: + lsls r3, r6, #2 + adds r0, r3, r6 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0 + movs r1, #1 + strh r1, [r0, #0xa] + strh r2, [r0, #8] + adds r4, r3, #0 +_080AA450: + adds r0, r4, r6 + lsls r0, r0, #3 + adds r7, r0, r5 + movs r1, #8 + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _080AA494 + ldrh r0, [r7, #8] + cmp r0, #0xb0 + bne _080AA474 + movs r0, #1 + bl sub_080A9F44 + b _080AA47E + .align 2, 0 +_080AA46C: .4byte gUnknown_3002360 +_080AA470: .4byte gUnknown_3005B60 +_080AA474: + cmp r0, #0x40 + bne _080AA47E + movs r0, #2 + bl sub_080A9F44 +_080AA47E: + ldr r0, _080AA490 + adds r1, r4, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + b _080AA50A + .align 2, 0 +_080AA490: .4byte gUnknown_3005B60 +_080AA494: + ldr r1, _080AA510 + movs r0, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + ldr r1, _080AA514 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r0, _080AA518 + movs r4, #0x10 + rsbs r4, r4, #0 + movs r1, #0xa2 + adds r2, r4, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080AA51C + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r0, #0x40 + strh r0, [r1, #0x2e] + strh r6, [r1, #0x30] + ldr r0, _080AA520 + movs r1, #0xd2 + adds r2, r4, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + strh r6, [r1, #0x30] + movs r0, #0x90 + strh r0, [r7, #8] + ldr r0, _080AA524 + str r0, [r7] +_080AA50A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AA510: .4byte 0x00001441 +_080AA514: .4byte 0x00003F50 +_080AA518: .4byte gUnknown_851ACB4 +_080AA51C: .4byte gUnknown_20205AC +_080AA520: .4byte gUnknown_851ACCC +_080AA524: .4byte sub_080AA528 + thumb_func_end sub_080AA418 + + thumb_func_start sub_080AA528 +sub_080AA528: @ 0x080AA528 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080AA578 + ldrh r1, [r0, #0x2e] + movs r0, #0xf + ands r0, r1 + ldr r2, _080AA57C + cmp r0, #0 + bne _080AA54E + lsls r0, r4, #2 + adds r1, r0, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r3, #0xa + ldrsh r1, [r1, r3] + adds r6, r0, #0 + cmp r1, #0 + beq _080AA560 +_080AA54E: + lsls r3, r4, #2 + adds r0, r3, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #0 + movs r1, #1 + strh r1, [r0, #0xa] + strh r2, [r0, #8] + adds r6, r3, #0 +_080AA560: + ldr r1, _080AA57C + adds r0, r6, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #8] + movs r1, #8 + ldrsh r7, [r5, r1] + cmp r7, #0 + beq _080AA580 + subs r0, #1 + strh r0, [r5, #8] + b _080AA5BA + .align 2, 0 +_080AA578: .4byte gUnknown_3002360 +_080AA57C: .4byte gUnknown_3005B60 +_080AA580: + movs r0, #1 + strh r0, [r5, #0xa] + ldr r1, _080AA63C + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080AA640 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _080AA644 + movs r0, #0 + bl sub_08001144 + movs r0, #0x80 + movs r1, #0x6c + bl sub_080A9DB4 + movs r0, #0x80 + movs r1, #0x94 + bl sub_080A9E10 + strh r7, [r5, #0x10] + ldr r0, _080AA648 + str r0, [r5] +_080AA5BA: + ldr r2, _080AA64C + adds r0, r6, r4 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r1, [r3, #8] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080AA5DA + ldrh r1, [r3, #0xc] + movs r5, #0xc + ldrsh r0, [r3, r5] + cmp r0, #0 + beq _080AA5DA + adds r0, r1, #1 + strh r0, [r3, #0xc] +_080AA5DA: + adds r0, r6, r4 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r1, [r3, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080AA5F8 + ldrh r1, [r3, #0xe] + movs r5, #0xe + ldrsh r0, [r3, r5] + cmp r0, #0 + beq _080AA5F8 + adds r0, r1, #1 + strh r0, [r3, #0xe] +_080AA5F8: + adds r4, r6, r4 + lsls r4, r4, #3 + adds r4, r4, r2 + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r5, r1, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + movs r0, #0x28 + bl sub_08001144 + lsrs r1, r5, #0x10 + movs r0, #0x2a + bl sub_08001144 + movs r3, #0xe + ldrsh r1, [r4, r3] + lsls r5, r1, #8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + movs r0, #0x2c + bl sub_08001144 + lsrs r1, r5, #0x10 + movs r0, #0x2e + bl sub_08001144 + movs r0, #0xf + strh r0, [r4, #0x12] + movs r0, #6 + strh r0, [r4, #0x14] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AA63C: .4byte 0x00002142 +_080AA640: .4byte 0x00000F06 +_080AA644: .4byte 0x00001741 +_080AA648: .4byte sub_080AA650 +_080AA64C: .4byte gUnknown_3005B60 + thumb_func_end sub_080AA528 + + thumb_func_start sub_080AA650 +sub_080AA650: @ 0x080AA650 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _080AA690 + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080AA670 + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080AA69C +_080AA670: + movs r0, #4 + bl sub_080A2B08 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _080AA694 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080AA698 + bl sub_08000540 + b _080AA794 + .align 2, 0 +_080AA690: .4byte gUnknown_3002360 +_080AA694: .4byte 0x0000FFFF +_080AA698: .4byte sub_080AA7B4 +_080AA69C: + ldrh r1, [r2, #0x2c] + movs r0, #0x46 + ands r0, r1 + cmp r0, #0x46 + bne _080AA6B4 + ldr r0, _080AA6B0 + bl sub_08000540 + b _080AA794 + .align 2, 0 +_080AA6B0: .4byte sub_080AA7EC +_080AA6B4: + movs r0, #0x26 + ands r0, r1 + cmp r0, #0x26 + bne _080AA6E8 + bl sub_0809CEEC + cmp r0, #1 + bne _080AA6E8 + movs r0, #4 + bl sub_080A2B08 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080AA6E4 + bl sub_08000540 + b _080AA794 + .align 2, 0 +_080AA6E4: .4byte sub_080AA808 +_080AA6E8: + ldr r0, _080AA714 + ldrh r1, [r0, #0x2c] + movs r0, #6 + ands r0, r1 + cmp r0, #6 + bne _080AA71C + movs r0, #4 + bl sub_080A2B08 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080AA718 + bl sub_08000540 + b _080AA794 + .align 2, 0 +_080AA714: .4byte gUnknown_3002360 +_080AA718: .4byte sub_080AA824 +_080AA71C: + movs r0, #0x28 + movs r1, #0 + bl sub_08001144 + movs r0, #0x2a + movs r1, #0 + bl sub_08001144 + movs r0, #0x2c + movs r1, #0 + bl sub_08001144 + movs r0, #0x2e + movs r1, #0 + bl sub_08001144 + ldr r1, _080AA79C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080AA76E + ldrh r0, [r3, #0x10] + adds r0, #1 + strh r0, [r3, #0x10] + ldr r2, _080AA7A0 + movs r1, #0x10 + ldrsh r0, [r3, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r2] + ldr r1, _080AA7A4 + movs r0, #0 + strh r0, [r1] +_080AA76E: + ldrb r0, [r3, #8] + bl sub_080AA844 + ldr r0, _080AA7A8 + ldr r1, _080AA7AC + ldrh r0, [r0, #4] + cmp r0, #0 + bne _080AA794 + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080AA7B0 + bl sub_08000540 +_080AA794: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AA79C: .4byte gUnknown_3005B60 +_080AA7A0: .4byte gUnknown_2022ACE +_080AA7A4: .4byte gUnknown_2022ACC +_080AA7A8: .4byte gUnknown_30074D0 +_080AA7AC: .4byte 0x0000FFFF +_080AA7B0: .4byte sub_080AA7D0 + thumb_func_end sub_080AA650 + + thumb_func_start sub_080AA7B4 +sub_080AA7B4: @ 0x080AA7B4 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA7C6 + ldr r0, _080AA7CC + bl sub_08000540 +_080AA7C6: + pop {r0} + bx r0 + .align 2, 0 +_080AA7CC: .4byte sub_0802F340 + thumb_func_end sub_080AA7B4 + + thumb_func_start sub_080AA7D0 +sub_080AA7D0: @ 0x080AA7D0 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA7E2 + ldr r0, _080AA7E8 + bl sub_08000540 +_080AA7E2: + pop {r0} + bx r0 + .align 2, 0 +_080AA7E8: .4byte sub_0816CCF0 + thumb_func_end sub_080AA7D0 + + thumb_func_start sub_080AA7EC +sub_080AA7EC: @ 0x080AA7EC + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA7FE + ldr r0, _080AA804 + bl sub_08000540 +_080AA7FE: + pop {r0} + bx r0 + .align 2, 0 +_080AA804: .4byte sub_0817AB80 + thumb_func_end sub_080AA7EC + + thumb_func_start sub_080AA808 +sub_080AA808: @ 0x080AA808 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA81A + ldr r0, _080AA820 + bl sub_08000540 +_080AA81A: + pop {r0} + bx r0 + .align 2, 0 +_080AA820: .4byte sub_0809E860 + thumb_func_end sub_080AA808 + + thumb_func_start sub_080AA824 +sub_080AA824: @ 0x080AA824 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA83A + bl m4aMPlayAllStop + ldr r0, _080AA840 + bl sub_08000540 +_080AA83A: + pop {r0} + bx r0 + .align 2, 0 +_080AA840: .4byte sub_081BF020 + thumb_func_end sub_080AA824 + + thumb_func_start sub_080AA844 +sub_080AA844: @ 0x080AA844 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080AA898 + adds r0, r1, #0 + movs r1, #0x80 + bl sub_0806EFD4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r2, r0, #0 + adds r2, #0x80 + lsls r0, r2, #5 + subs r0, r0, r2 + cmp r0, #0 + bge _080AA86E + adds r0, #0xff +_080AA86E: + asrs r0, r0, #8 + movs r3, #0x1f + subs r1, r3, r0 + movs r0, #0x16 + muls r0, r2, r0 + cmp r0, #0 + bge _080AA87E + adds r0, #0xff +_080AA87E: + asrs r0, r0, #8 + subs r0, r3, r0 + lsls r0, r0, #5 + orrs r1, r0 + movs r0, #0xc0 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, sp + strh r1, [r0] + movs r1, #0xef + movs r2, #2 + bl sub_080A1200 +_080AA898: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AA844 + + thumb_func_start sub_080AA8A0 +sub_080AA8A0: @ 0x080AA8A0 + push {r4, r5, r6, lr} + ldr r0, _080AA964 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080AA95C + movs r0, #0x90 + lsls r0, r0, #5 + bl sub_080084EC + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080AA968 + lsls r1, r5, #5 + ldr r2, _080AA96C + adds r1, r1, r2 + ldr r2, _080AA970 + bl CpuSet + bl sub_080AAB90 + ldr r4, _080AA974 + ldr r1, _080AA978 + adds r0, r4, r1 + strb r5, [r0] + ldr r0, _080AA97C + bl sub_080084EC + ldr r2, _080AA980 + adds r1, r4, r2 + strb r0, [r1] + ldr r1, _080AA984 + adds r0, r4, r1 + strb r6, [r0] + adds r2, #4 + adds r0, r4, r2 + strb r6, [r0] + adds r1, #4 + adds r0, r4, r1 + strb r6, [r0] + adds r2, #0xc + adds r0, r4, r2 + strb r6, [r0] + adds r1, #0x22 + adds r0, r4, r1 + strb r6, [r0] + adds r2, #0x17 + adds r0, r4, r2 + strb r6, [r0] + adds r1, #0x24 + adds r0, r4, r1 + strb r6, [r0] + adds r2, #0x1b + adds r0, r4, r2 + strb r6, [r0] + subs r1, #0xd + adds r0, r4, r1 + strb r6, [r0] + adds r2, #0x18 + adds r0, r4, r2 + strb r6, [r0] + subs r1, #0x1d + adds r0, r4, r1 + strb r6, [r0] + movs r0, #0x10 + movs r1, #0 + bl sub_080ABA20 + movs r2, #0xda + lsls r2, r2, #3 + adds r0, r4, r2 + strb r6, [r0] + ldr r0, _080AA988 + adds r1, r4, r0 + movs r0, #3 + strb r0, [r1] + movs r1, #0xd9 + lsls r1, r1, #3 + adds r0, r4, r1 + strb r6, [r0] + adds r2, #3 + adds r1, r4, r2 + movs r0, #1 + strb r0, [r1] + ldr r0, _080AA98C + movs r1, #0x50 + bl sub_080A8878 + ldr r1, _080AA990 + adds r4, r4, r1 + strb r0, [r4] +_080AA95C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AA964: .4byte sub_080AAAAC +_080AA968: .4byte gUnknown_8526F0C +_080AA96C: .4byte gUnknown_20375B4 +_080AA970: .4byte 0x04000008 +_080AA974: .4byte gUnknown_20380F4 +_080AA978: .4byte 0x000006D5 +_080AA97C: .4byte 0x00001201 +_080AA980: .4byte 0x000006D4 +_080AA984: .4byte 0x000006DA +_080AA988: .4byte 0x000006C6 +_080AA98C: .4byte sub_080AAA5C +_080AA990: .4byte 0x000006C9 + thumb_func_end sub_080AA8A0 + + thumb_func_start sub_080AA994 +sub_080AA994: @ 0x080AA994 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + beq _080AA9AA + cmp r4, #5 + beq _080AA9AA + cmp r4, #0xd + beq _080AA9AA + bl sub_080ABC74 +_080AA9AA: + ldr r1, _080AA9EC + ldr r2, _080AA9F0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, r4 + beq _080AA9CE + movs r3, #0xda + lsls r3, r3, #3 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r4 + bne _080AA9CE + ldr r0, _080AA9F4 + lsls r1, r4, #4 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_080AA9CE: + ldr r1, _080AA9EC + ldr r2, _080AA9F8 + adds r0, r1, r2 + movs r2, #0 + strb r2, [r0] + ldr r3, _080AA9F0 + adds r0, r1, r3 + strb r4, [r0] + ldr r0, _080AA9FC + adds r1, r1, r0 + strh r2, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AA9EC: .4byte gUnknown_20380F4 +_080AA9F0: .4byte 0x000006D1 +_080AA9F4: .4byte gUnknown_8526DEC +_080AA9F8: .4byte 0x000006D3 +_080AA9FC: .4byte 0x000006CE + thumb_func_end sub_080AA994 + + thumb_func_start sub_080AAA00 +sub_080AAA00: @ 0x080AAA00 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080ABC74 + ldr r0, _080AAA24 + movs r2, #0xda + lsls r2, r2, #3 + adds r1, r0, r2 + strb r4, [r1] + ldr r1, _080AAA28 + adds r0, r0, r1 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAA24: .4byte gUnknown_20380F4 +_080AAA28: .4byte 0x000006D1 + thumb_func_end sub_080AAA00 + + thumb_func_start sub_080AAA2C +sub_080AAA2C: @ 0x080AAA2C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080ABC74 + ldr r1, _080AAA58 + movs r2, #0xda + lsls r2, r2, #3 + adds r0, r1, r2 + strb r4, [r0] + adds r2, #1 + adds r0, r1, r2 + strb r4, [r0] + movs r0, #0xd9 + lsls r0, r0, #3 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAA58: .4byte gUnknown_20380F4 + thumb_func_end sub_080AAA2C + + thumb_func_start sub_080AAA5C +sub_080AAA5C: @ 0x080AAA5C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _080AAA9C + movs r1, #0xd9 + lsls r1, r1, #3 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080AAA94 + ldr r1, _080AAAA0 + movs r3, #0xda + lsls r3, r3, #3 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, #8 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r1, _080AAAA4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080AAAA8 + str r1, [r0] +_080AAA94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AAA9C: .4byte gUnknown_20380F4 +_080AAAA0: .4byte gUnknown_8526DEC +_080AAAA4: .4byte gUnknown_3005B60 +_080AAAA8: .4byte sub_080AAAAC + thumb_func_end sub_080AAA5C + + thumb_func_start sub_080AAAAC +sub_080AAAAC: @ 0x080AAAAC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r5, _080AAB14 + movs r0, #0xda + lsls r0, r0, #3 + adds r6, r5, r0 + ldr r1, _080AAB18 + adds r7, r5, r1 + ldrb r0, [r6] + ldrb r2, [r7] + cmp r0, r2 + beq _080AAB28 + ldr r0, _080AAB1C + mov sb, r0 + ldrb r0, [r6] + lsls r0, r0, #4 + mov r1, sb + adds r1, #0xc + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080AAB38 + ldr r1, _080AAB20 + adds r1, r1, r5 + mov r8, r1 + ldrb r0, [r1] + cmp r0, #2 + beq _080AAB38 + ldrb r0, [r7] + lsls r0, r0, #4 + add r0, sb + ldr r0, [r0] + bl _call_via_r0 + ldr r2, _080AAB24 + adds r0, r5, r2 + strb r4, [r0] + mov r0, r8 + strb r4, [r0] + ldrb r0, [r7] + strb r0, [r6] + adds r2, #0x10 + adds r1, r5, r2 + movs r0, #1 + strb r0, [r1] + b _080AAB38 + .align 2, 0 +_080AAB14: .4byte gUnknown_20380F4 +_080AAB18: .4byte 0x000006D1 +_080AAB1C: .4byte gUnknown_8526DEC +_080AAB20: .4byte 0x000006C6 +_080AAB24: .4byte 0x000006C3 +_080AAB28: + ldr r0, _080AAB58 + ldrb r1, [r6] + lsls r1, r1, #4 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_080AAB38: + ldr r1, _080AAB5C + ldr r0, _080AAB60 + ldr r2, _080AAB64 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_080AAAAC + + thumb_func_start sub_080AAB4C +sub_080AAB4C: @ 0x080AAB4C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AAB58: .4byte gUnknown_8526DEC +_080AAB5C: .4byte gUnknown_8526EDC +_080AAB60: .4byte gUnknown_20380F4 +_080AAB64: .4byte 0x000006C6 + thumb_func_end sub_080AAB4C + + thumb_func_start sub_080AAB68 +sub_080AAB68: @ 0x080AAB68 + ldr r0, _080AAB7C + ldr r2, _080AAB80 + adds r1, r0, r2 + movs r2, #0 + strb r2, [r1] + ldr r1, _080AAB84 + adds r0, r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_080AAB7C: .4byte gUnknown_20380F4 +_080AAB80: .4byte 0x000006C1 +_080AAB84: .4byte 0x000006C2 + thumb_func_end sub_080AAB68 + + thumb_func_start sub_080AAB88 +sub_080AAB88: @ 0x080AAB88 + bx lr + .align 2, 0 + thumb_func_end sub_080AAB88 + + thumb_func_start sub_080AAB8C +sub_080AAB8C: @ 0x080AAB8C + movs r0, #0 + bx lr + thumb_func_end sub_080AAB8C + + thumb_func_start sub_080AAB90 +sub_080AAB90: @ 0x080AAB90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r1, _080AABD0 + ldr r0, _080AABD4 + str r0, [r1] + movs r0, #0 + mov ip, r0 + ldr r1, _080AABD8 + mov sl, r1 +_080AABA8: + mov r7, sl + mov r0, ip + cmp r0, #0 + bne _080AABB4 + ldr r1, _080AABDC + adds r7, r7, r1 +_080AABB4: + movs r5, #0 + movs r0, #1 + add r0, ip + mov sb, r0 +_080AABBC: + lsls r1, r5, #8 + lsls r0, r5, #0x18 + lsrs r2, r0, #0x10 + mov r0, ip + cmp r0, #0 + bne _080AABE0 + adds r0, r1, #0 + lsls r0, r0, #0xc + lsrs r4, r0, #0x10 + b _080AABE2 + .align 2, 0 +_080AABD0: .4byte gUnknown_3000F50 +_080AABD4: .4byte gUnknown_8526EEC +_080AABD8: .4byte gUnknown_2038554 +_080AABDC: .4byte 0xFFFFFDA0 +_080AABE0: + movs r4, #0 +_080AABE2: + movs r3, #0 + adds r1, r5, #1 + mov r8, r1 +_080AABE8: + subs r1, r2, r4 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + lsls r0, r3, #5 + adds r0, r0, r7 + adds r0, r0, r5 + lsrs r1, r1, #0x18 + strb r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #2 + bls _080AABE8 + adds r6, r2, #0 + movs r0, #0xf8 + lsls r0, r0, #5 + subs r0, r0, r2 + cmp r0, #0 + bge _080AAC10 + adds r0, #0xf +_080AAC10: + lsls r0, r0, #0xc + lsrs r4, r0, #0x10 + cmp r5, #0xb + bhi _080AAC5A + cmp r3, #0x12 + bhi _080AAC80 +_080AAC1C: + adds r0, r2, r4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + subs r0, r2, r6 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + ble _080AAC38 + lsrs r0, r0, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + subs r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080AAC38: + lsls r0, r3, #5 + adds r0, r0, r7 + adds r1, r0, r5 + lsrs r0, r2, #8 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _080AAC4E + movs r0, #0x1f + strb r0, [r1] +_080AAC4E: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x12 + bls _080AAC1C + b _080AAC80 +_080AAC5A: + cmp r3, #0x12 + bhi _080AAC80 + movs r6, #0x1f +_080AAC60: + adds r1, r2, r4 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + lsls r0, r3, #5 + adds r0, r0, r7 + adds r0, r0, r5 + lsrs r1, r1, #0x18 + strb r1, [r0] + cmp r1, #0x1f + bls _080AAC76 + strb r6, [r0] +_080AAC76: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x12 + bls _080AAC60 +_080AAC80: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x1f + bls _080AABBC + mov r1, sb + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + mov ip, r0 + cmp r0, #1 + bls _080AABA8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AAB90 + + thumb_func_start sub_080AACA4 +sub_080AACA4: @ 0x080AACA4 + push {r4, r5, r6, r7, lr} + ldr r0, _080AACD4 + ldr r1, _080AACD8 + adds r2, r0, r1 + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #2 + beq _080AAD28 + movs r7, #0xd8 + lsls r7, r7, #3 + adds r4, r3, r7 + ldr r1, _080AACDC + adds r0, r3, r1 + ldrb r7, [r4] + mov ip, r7 + movs r6, #0 + ldrsb r6, [r4, r6] + movs r5, #0 + ldrsb r5, [r0, r5] + cmp r6, r5 + bne _080AACE0 + movs r0, #3 + strb r0, [r2] + b _080AAD28 + .align 2, 0 +_080AACD4: .4byte gUnknown_20380F4 +_080AACD8: .4byte 0x000006C6 +_080AACDC: .4byte 0x000006C1 +_080AACE0: + ldr r0, _080AAD08 + adds r2, r3, r0 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r7, _080AAD0C + adds r1, r3, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + blo _080AAD28 + movs r0, #0 + strb r0, [r2] + mov r0, ip + cmp r6, r5 + bge _080AAD10 + adds r0, #1 + b _080AAD14 + .align 2, 0 +_080AAD08: .4byte 0x000006C3 +_080AAD0C: .4byte 0x000006C2 +_080AAD10: + mov r0, ip + subs r0, #1 +_080AAD14: + strb r0, [r4] + movs r1, #0xd8 + lsls r1, r1, #3 + adds r0, r3, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r0, #0 + movs r1, #0x20 + bl sub_080AAF40 +_080AAD28: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AACA4 + + thumb_func_start sub_080AAD30 +sub_080AAD30: @ 0x080AAD30 + push {lr} + ldr r2, _080AAD68 + ldr r0, _080AAD6C + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080AAD4E + ldr r3, _080AAD70 + adds r1, r2, r3 + movs r0, #0 + strb r0, [r1] +_080AAD4E: + movs r1, #0xda + lsls r1, r1, #3 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, #3 + cmp r0, #0xa + bhi _080AAE18 + lsls r0, r0, #2 + ldr r1, _080AAD74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AAD68: .4byte gUnknown_20380F4 +_080AAD6C: .4byte 0x000006CB +_080AAD70: .4byte 0x000006CA +_080AAD74: .4byte _080AAD78 +_080AAD78: @ jump table + .4byte _080AADA4 @ case 0 + .4byte _080AADA4 @ case 1 + .4byte _080AADA4 @ case 2 + .4byte _080AADF0 @ case 3 + .4byte _080AAE18 @ case 4 + .4byte _080AAE18 @ case 5 + .4byte _080AAE18 @ case 6 + .4byte _080AAE18 @ case 7 + .4byte _080AADA4 @ case 8 + .4byte _080AADCC @ case 9 + .4byte _080AADA4 @ case 10 +_080AADA4: + bl sub_080AAE48 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AAE38 + ldr r0, _080AADC4 + movs r2, #0xd8 + lsls r2, r2, #3 + adds r1, r0, r2 + movs r2, #3 + strb r2, [r1] + ldr r3, _080AADC8 + adds r0, r0, r3 + strb r2, [r0] + b _080AAE38 + .align 2, 0 +_080AADC4: .4byte gUnknown_20380F4 +_080AADC8: .4byte 0x000006C6 +_080AADCC: + bl sub_080AAEA8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AAE38 + ldr r1, _080AADE8 + movs r0, #0xd8 + lsls r0, r0, #3 + adds r2, r1, r0 + movs r0, #0xfa + strb r0, [r2] + ldr r2, _080AADEC + adds r1, r1, r2 + b _080AAE34 + .align 2, 0 +_080AADE8: .4byte gUnknown_20380F4 +_080AADEC: .4byte 0x000006C6 +_080AADF0: + bl sub_080AAF00 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080AAE38 + ldr r0, _080AAE10 + movs r3, #0xd8 + lsls r3, r3, #3 + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _080AAE14 + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + b _080AAE38 + .align 2, 0 +_080AAE10: .4byte gUnknown_20380F4 +_080AAE14: .4byte 0x000006C6 +_080AAE18: + ldr r0, _080AAE3C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AAE38 + ldr r3, _080AAE40 + adds r0, r2, r3 + ldrb r1, [r0] + subs r3, #1 + adds r0, r2, r3 + strb r1, [r0] + ldr r0, _080AAE44 + adds r1, r2, r0 +_080AAE34: + movs r0, #3 + strb r0, [r1] +_080AAE38: + pop {r0} + bx r0 + .align 2, 0 +_080AAE3C: .4byte gUnknown_2037C74 +_080AAE40: .4byte 0x000006C1 +_080AAE44: .4byte 0x000006C6 + thumb_func_end sub_080AAD30 + + thumb_func_start sub_080AAE48 +sub_080AAE48: @ 0x080AAE48 + push {r4, lr} + sub sp, #4 + ldr r2, _080AAE84 + ldr r0, _080AAE88 + adds r4, r2, r0 + ldrb r0, [r4] + cmp r0, #0x10 + beq _080AAE9E + adds r1, r0, #1 + strb r1, [r4] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bhi _080AAE90 + movs r3, #0x10 + subs r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _080AAE8C + adds r0, r2, r1 + ldrh r0, [r0] + str r0, [sp] + movs r0, #0 + movs r1, #0x20 + movs r2, #3 + bl sub_080AB144 + movs r0, #1 + b _080AAEA0 + .align 2, 0 +_080AAE84: .4byte gUnknown_20380F4 +_080AAE88: .4byte 0x000006C7 +_080AAE8C: .4byte 0x000006C4 +_080AAE90: + movs r0, #0 + movs r1, #0x20 + movs r2, #3 + bl sub_080AAF40 + movs r0, #0x10 + strb r0, [r4] +_080AAE9E: + movs r0, #0 +_080AAEA0: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080AAE48 + + thumb_func_start sub_080AAEA8 +sub_080AAEA8: @ 0x080AAEA8 + push {r4, lr} + ldr r2, _080AAEDC + ldr r0, _080AAEE0 + adds r4, r2, r0 + ldrb r0, [r4] + cmp r0, #0x10 + beq _080AAEF8 + adds r3, r0, #1 + strb r3, [r4] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bhi _080AAEE8 + movs r0, #6 + rsbs r0, r0, #0 + movs r1, #0x10 + subs r1, r1, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080AAEE4 + adds r2, r2, r3 + ldrh r2, [r2] + bl sub_080AB28C + movs r0, #1 + b _080AAEFA + .align 2, 0 +_080AAEDC: .4byte gUnknown_20380F4 +_080AAEE0: .4byte 0x000006C7 +_080AAEE4: .4byte 0x000006C4 +_080AAEE8: + movs r2, #6 + rsbs r2, r2, #0 + movs r0, #0 + movs r1, #0x20 + bl sub_080AAF40 + movs r0, #0x10 + strb r0, [r4] +_080AAEF8: + movs r0, #0 +_080AAEFA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080AAEA8 + + thumb_func_start sub_080AAF00 +sub_080AAF00: @ 0x080AAF00 + push {lr} + ldr r2, _080AAF28 + ldr r1, _080AAF2C + adds r0, r2, r1 + ldrb r1, [r0] + cmp r1, #0x10 + beq _080AAF34 + adds r1, #1 + strb r1, [r0] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080AAF30 + adds r1, r2, r3 + ldrh r1, [r1] + bl sub_080AB3AC + movs r0, #1 + b _080AAF36 + .align 2, 0 +_080AAF28: .4byte gUnknown_20380F4 +_080AAF2C: .4byte 0x000006C7 +_080AAF30: .4byte 0x000006C4 +_080AAF34: + movs r0, #0 +_080AAF36: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AAF00 + + thumb_func_start sub_080AAF3C +sub_080AAF3C: @ 0x080AAF3C + bx lr + .align 2, 0 + thumb_func_end sub_080AAF3C + + thumb_func_start sub_080AAF40 +sub_080AAF40: @ 0x080AAF40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, r3, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + asrs r0, r2, #0x18 + cmp r0, #0 + ble _080AB050 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r6, r3, #4 + adds r0, r1, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r4, sb + blo _080AAF78 + b _080AB12A +_080AAF78: + ldr r1, [sp] + lsls r0, r1, #0x18 + asrs r0, r0, #0x13 + str r0, [sp, #4] +_080AAF80: + ldr r0, _080AAFB0 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080AAFBC + lsls r1, r6, #1 + ldr r0, _080AAFB4 + adds r0, r1, r0 + ldr r2, _080AAFB8 + adds r1, r1, r2 + movs r2, #8 + bl CpuFastSet + adds r0, r6, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r2, sb + lsls r2, r2, #0x10 + mov r8, r2 + adds r4, #1 + mov ip, r4 + b _080AB03A + .align 2, 0 +_080AAFB0: .4byte gUnknown_3000F50 +_080AAFB4: .4byte gUnknown_20373B4 +_080AAFB8: .4byte gUnknown_20377B4 +_080AAFBC: + cmp r0, #2 + beq _080AAFD0 + adds r1, r4, #0 + subs r1, #0x10 + ldr r2, _080AAFD4 + ldr r3, _080AAFD8 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _080AAFE0 +_080AAFD0: + ldr r0, _080AAFDC + b _080AAFE6 + .align 2, 0 +_080AAFD4: .4byte gUnknown_20380F4 +_080AAFD8: .4byte 0x000006D5 +_080AAFDC: .4byte gUnknown_2038554 +_080AAFE0: + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r2, r3 +_080AAFE6: + ldr r1, [sp, #4] + adds r5, r1, r0 + movs r7, #0 + mov r2, sb + lsls r2, r2, #0x10 + mov r8, r2 + adds r4, #1 + mov ip, r4 + ldr r3, _080AB048 + mov sl, r3 +_080AAFFA: + adds r2, r6, #0 + lsls r0, r2, #1 + ldr r1, _080AB04C + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1b + adds r0, r5, r0 + ldrb r4, [r0] + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + adds r0, r5, r0 + ldrb r3, [r0] + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + adds r1, r5, r1 + ldrb r1, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r2, r2, #1 + add r2, sl + lsls r1, r1, #0xa + lsls r3, r3, #5 + orrs r1, r3 + orrs r1, r4 + strh r1, [r2] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0xf + bls _080AAFFA +_080AB03A: + mov r2, ip + lsls r0, r2, #0x10 + lsrs r4, r0, #0x10 + cmp r0, r8 + blo _080AAF80 + b _080AB12A + .align 2, 0 +_080AB048: .4byte gUnknown_20377B4 +_080AB04C: .4byte gUnknown_20373B4 +_080AB050: + cmp r0, #0 + bge _080AB118 + mvns r0, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r6, r3, #4 + adds r0, r1, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r4, r3, #0 + cmp r4, sb + bhs _080AB12A +_080AB06C: + ldr r0, _080AB09C + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080AB0A8 + lsls r1, r6, #1 + ldr r0, _080AB0A0 + adds r0, r1, r0 + ldr r2, _080AB0A4 + adds r1, r1, r2 + movs r2, #8 + bl CpuFastSet + adds r0, r6, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r3, sb + lsls r3, r3, #0x10 + mov r8, r3 + adds r4, #1 + mov ip, r4 + b _080AB100 + .align 2, 0 +_080AB09C: .4byte gUnknown_3000F50 +_080AB0A0: .4byte gUnknown_20373B4 +_080AB0A4: .4byte gUnknown_20377B4 +_080AB0A8: + movs r7, #0 + mov r0, sb + lsls r0, r0, #0x10 + mov r8, r0 + adds r4, #1 + mov ip, r4 + ldr r1, _080AB10C + mov sl, r1 + ldr r2, [sp] + lsls r0, r2, #0x18 + asrs r5, r0, #0xb +_080AB0BE: + lsls r0, r6, #1 + ldr r3, _080AB110 + adds r4, r0, r3 + ldr r1, _080AB114 + adds r0, r0, r1 + ldrh r3, [r0] + lsls r3, r3, #0x10 + lsrs r0, r3, #0x11 + movs r1, #0xf + ands r0, r1 + lsrs r1, r3, #0x12 + movs r2, #0xf0 + ands r1, r2 + orrs r0, r1 + lsrs r3, r3, #0x13 + movs r2, #0xf0 + lsls r2, r2, #4 + adds r1, r2, #0 + ands r3, r1 + orrs r0, r3 + lsls r0, r0, #1 + adds r0, r0, r5 + add r0, sl + ldrh r0, [r0] + strh r0, [r4] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0xf + bls _080AB0BE +_080AB100: + mov r3, ip + lsls r0, r3, #0x10 + lsrs r4, r0, #0x10 + cmp r0, r8 + blo _080AB06C + b _080AB12A + .align 2, 0 +_080AB10C: .4byte gUnknown_851ADE8 +_080AB110: .4byte gUnknown_20377B4 +_080AB114: .4byte gUnknown_20373B4 +_080AB118: + lsls r1, r4, #5 + ldr r0, _080AB13C + adds r0, r1, r0 + ldr r2, _080AB140 + adds r1, r1, r2 + mov r3, sb + lsls r2, r3, #3 + bl CpuFastSet +_080AB12A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB13C: .4byte gUnknown_20373B4 +_080AB140: .4byte gUnknown_20377B4 + thumb_func_end sub_080AAF40 + + thumb_func_start sub_080AB144 +sub_080AB144: @ 0x080AB144 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r4, [sp, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + mov r1, sp + strh r4, [r1] + ldr r1, [sp] + lsls r3, r1, #0x1b + lsrs r3, r3, #0x1b + str r3, [sp, #4] + lsls r3, r1, #0x16 + lsrs r3, r3, #0x1b + str r3, [sp, #8] + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + str r1, [sp, #0xc] + lsls r6, r0, #4 + mov r3, sl + adds r1, r3, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r2, r2, r1 + lsrs r2, r2, #0x18 + adds r4, r0, #0 + cmp r4, sl + bhs _080AB270 + lsls r0, r2, #0x18 + asrs r0, r0, #0x13 + str r0, [sp, #0x10] +_080AB19C: + ldr r0, _080AB1CC + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080AB1D0 + mov r0, sp + ldrh r3, [r0] + adds r0, r6, #0 + movs r1, #0x10 + mov r2, r8 + bl sub_0806F410 + adds r0, r6, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r3, sl + lsls r3, r3, #0x10 + mov sb, r3 + adds r4, #1 + mov ip, r4 + b _080AB266 + .align 2, 0 +_080AB1CC: .4byte gUnknown_3000F50 +_080AB1D0: + cmp r0, #1 + bne _080AB1E0 + ldr r0, _080AB1DC + ldr r1, [sp, #0x10] + adds r5, r1, r0 + b _080AB1E6 + .align 2, 0 +_080AB1DC: .4byte gUnknown_20382F4 +_080AB1E0: + ldr r0, _080AB280 + ldr r3, [sp, #0x10] + adds r5, r3, r0 +_080AB1E6: + movs r7, #0 + mov r0, sl + lsls r0, r0, #0x10 + mov sb, r0 + adds r4, #1 + mov ip, r4 +_080AB1F2: + adds r4, r6, #0 + lsls r0, r4, #1 + ldr r1, _080AB284 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1b + adds r0, r5, r0 + ldrb r3, [r0] + lsls r0, r1, #0x16 + lsrs r0, r0, #0x1b + adds r0, r5, r0 + ldrb r2, [r0] + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + adds r1, r5, r1 + ldrb r1, [r1] + ldr r6, [sp, #4] + subs r0, r6, r3 + mov r6, r8 + muls r6, r0, r6 + adds r0, r6, #0 + asrs r0, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r6, [sp, #8] + subs r0, r6, r2 + mov r6, r8 + muls r6, r0, r6 + adds r0, r6, #0 + asrs r0, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #0x18 + ldr r6, [sp, #0xc] + subs r0, r6, r1 + mov r6, r8 + muls r6, r0, r6 + adds r0, r6, #0 + asrs r0, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #0x18 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r4, r4, #1 + ldr r0, _080AB288 + adds r4, r4, r0 + lsrs r1, r1, #0xe + lsrs r2, r2, #0x13 + orrs r1, r2 + orrs r1, r3 + strh r1, [r4] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0xf + bls _080AB1F2 +_080AB266: + mov r1, ip + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + cmp r0, sb + blo _080AB19C +_080AB270: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB280: .4byte gUnknown_2038554 +_080AB284: .4byte gUnknown_20373B4 +_080AB288: .4byte gUnknown_20377B4 + thumb_func_end sub_080AB144 + + thumb_func_start sub_080AB28C +sub_080AB28C: @ 0x080AB28C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r1, sp + strh r2, [r1] + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + eors r0, r1 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp] + lsls r1, r0, #0x1b + lsrs r1, r1, #0x1b + str r1, [sp, #8] + lsls r1, r0, #0x16 + lsrs r1, r1, #0x1b + str r1, [sp, #0xc] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + mov sl, r0 + movs r5, #0 + movs r4, #0 +_080AB2C4: + ldr r0, _080AB2EC + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080AB2F0 + mov r0, sp + ldrh r3, [r0] + adds r0, r5, #0 + movs r1, #0x10 + adds r2, r6, #0 + bl sub_0806F410 + adds r0, r5, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, #1 + mov r8, r4 + b _080AB386 + .align 2, 0 +_080AB2EC: .4byte gUnknown_3000F50 +_080AB2F0: + movs r0, #0 + mov ip, r0 + ldr r1, [sp, #4] + lsls r0, r1, #0x18 + adds r4, #1 + mov r8, r4 + movs r7, #0x1e + asrs r0, r0, #0xb + mov sb, r0 +_080AB302: + adds r4, r5, #0 + lsls r0, r4, #1 + ldr r5, _080AB3A0 + adds r0, r0, r5 + ldr r0, [r0] + lsls r2, r0, #0x1b + lsrs r2, r2, #0x1b + lsls r1, r0, #0x16 + lsrs r1, r1, #0x1b + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + ands r0, r7 + lsls r0, r0, #7 + ands r1, r7 + lsls r1, r1, #3 + orrs r0, r1 + ands r2, r7 + lsls r0, r0, #1 + orrs r0, r2 + add r0, sb + ldr r1, _080AB3A4 + adds r0, r0, r1 + ldr r1, [r0] + lsls r3, r1, #0x1b + lsrs r3, r3, #0x1b + lsls r2, r1, #0x16 + lsrs r2, r2, #0x1b + lsls r1, r1, #0x11 + lsrs r1, r1, #0x1b + ldr r5, [sp, #8] + subs r0, r5, r3 + muls r0, r6, r0 + asrs r0, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r5, [sp, #0xc] + subs r0, r5, r2 + muls r0, r6, r0 + asrs r0, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #0x18 + mov r5, sl + subs r0, r5, r1 + muls r0, r6, r0 + asrs r0, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #0x18 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r4, r4, #1 + ldr r0, _080AB3A8 + adds r4, r4, r0 + lsrs r1, r1, #0xe + lsrs r2, r2, #0x13 + orrs r1, r2 + orrs r1, r3 + strh r1, [r4] + mov r0, ip + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov ip, r0 + cmp r0, #0xf + bls _080AB302 +_080AB386: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1f + bls _080AB2C4 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AB3A0: .4byte gUnknown_20373B4 +_080AB3A4: .4byte gUnknown_851ADE8 +_080AB3A8: .4byte gUnknown_20377B4 + thumb_func_end sub_080AB28C + + thumb_func_start sub_080AB3AC +sub_080AB3AC: @ 0x080AB3AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r0, sp + strh r3, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #0 + adds r2, r7, #0 + bl sub_0806F410 + ldr r0, [sp] + lsls r1, r0, #0x1b + lsrs r1, r1, #0x1b + str r1, [sp, #4] + lsls r1, r0, #0x16 + lsrs r1, r1, #0x1b + str r1, [sp, #8] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + mov sl, r0 + movs r4, #0x10 +_080AB3E8: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AB4FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AB498 + adds r0, r4, #1 + lsls r1, r0, #0x14 + lsrs r1, r1, #0x10 + mov ip, r1 + lsls r1, r4, #0x14 + lsrs r6, r1, #0x10 + mov sb, r0 + cmp r6, ip + bhs _080AB4AC + movs r0, #0x1c + mov r8, r0 +_080AB40C: + lsls r5, r6, #1 + ldr r0, _080AB490 + adds r0, r5, r0 + ldr r2, [r0] + lsls r4, r2, #0x1b + lsrs r4, r4, #0x1b + lsls r3, r2, #0x16 + lsrs r3, r3, #0x1b + lsls r2, r2, #0x11 + lsrs r2, r2, #0x1b + mov r0, r8 + subs r1, r0, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + asrs r0, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0x1f + subs r1, r1, r3 + lsls r0, r1, #1 + adds r0, r0, r1 + asrs r0, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + subs r1, r0, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + asrs r0, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [sp, #4] + subs r0, r1, r4 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, [sp, #8] + subs r0, r1, r3 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #0x18 + mov r1, sl + subs r0, r1, r2 + muls r0, r7, r0 + asrs r0, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #0x18 + ldr r0, _080AB494 + adds r5, r5, r0 + lsrs r2, r2, #0xe + lsrs r3, r3, #0x13 + orrs r2, r3 + orrs r2, r4 + strh r2, [r5] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, ip + blo _080AB40C + b _080AB4AC + .align 2, 0 +_080AB490: .4byte gUnknown_20373B4 +_080AB494: .4byte gUnknown_20377B4 +_080AB498: + lsls r0, r4, #0x14 + lsrs r0, r0, #0x10 + mov r1, sp + ldrh r3, [r1] + movs r1, #0x10 + adds r2, r7, #0 + bl sub_0806F410 + adds r4, #1 + mov sb, r4 +_080AB4AC: + mov r1, sb + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1f + bls _080AB3E8 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AB3AC + + thumb_func_start sub_080AB4C8 +sub_080AB4C8: @ 0x080AB4C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, _080AB4F0 + ldr r0, _080AB4F4 + adds r1, r3, r0 + ldrb r0, [r1] + cmp r0, #5 + bhi _080AB4EA + ldr r4, _080AB4F8 + adds r0, r3, r4 + ldrb r3, [r1] + adds r0, r0, r3 + strb r2, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080AB4EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB4F0: .4byte gUnknown_20380F4 +_080AB4F4: .4byte 0x000006FA +_080AB4F8: .4byte 0x000006F4 + thumb_func_end sub_080AB4C8 + + thumb_func_start sub_080AB4FC +sub_080AB4FC: @ 0x080AB4FC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0 + ldr r2, _080AB524 + ldr r4, _080AB528 + adds r0, r2, r4 + ldrb r0, [r0] + cmp r1, r0 + bhs _080AB53A + ldr r5, _080AB52C + adds r4, r2, r5 + adds r2, r0, #0 +_080AB516: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _080AB530 + movs r0, #1 + b _080AB53C + .align 2, 0 +_080AB524: .4byte gUnknown_20380F4 +_080AB528: .4byte 0x000006FA +_080AB52C: .4byte 0x000006F4 +_080AB530: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + blo _080AB516 +_080AB53A: + movs r0, #0 +_080AB53C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AB4FC + + thumb_func_start sub_080AB544 +sub_080AB544: @ 0x080AB544 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _080AB570 + ldr r1, _080AB574 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _080AB56A + lsls r2, r4, #0x18 + asrs r2, r2, #0x18 + movs r0, #0 + movs r1, #0x20 + bl sub_080AAF40 + movs r1, #0xd8 + lsls r1, r1, #3 + adds r0, r5, r1 + strb r4, [r0] +_080AB56A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AB570: .4byte gUnknown_20380F4 +_080AB574: .4byte 0x000006C6 + thumb_func_end sub_080AB544 + + thumb_func_start sub_080AB578 +sub_080AB578: @ 0x080AB578 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r3, _080AB5C0 + ldr r0, _080AB5C4 + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, #3 + bne _080AB5B8 + movs r1, #0 + strb r1, [r2] + movs r2, #0xd8 + lsls r2, r2, #3 + adds r0, r3, r2 + strb r4, [r0] + adds r2, #1 + adds r0, r3, r2 + strb r5, [r0] + adds r2, #2 + adds r0, r3, r2 + strb r1, [r0] + ldr r1, _080AB5C8 + adds r0, r3, r1 + strb r6, [r0] + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + bl sub_080AB544 +_080AB5B8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AB5C0: .4byte gUnknown_20380F4 +_080AB5C4: .4byte 0x000006C6 +_080AB5C8: .4byte 0x000006C2 + thumb_func_end sub_080AB578 + + thumb_func_start sub_080AB5CC +sub_080AB5CC: @ 0x080AB5CC + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r0, #1 + beq _080AB604 + cmp r0, #1 + bgt _080AB5E8 + cmp r0, #0 + beq _080AB5F2 + b _080AB6E0 +_080AB5E8: + cmp r2, #2 + beq _080AB5F8 + cmp r2, #3 + beq _080AB608 + b _080AB6E0 +_080AB5F2: + movs r4, #0 + movs r1, #0 + b _080AB60C +_080AB5F8: + ldr r4, _080AB600 + movs r1, #0 + b _080AB60C + .align 2, 0 +_080AB600: .4byte 0x0000FFFF +_080AB604: + movs r4, #0 + b _080AB60A +_080AB608: + ldr r4, _080AB62C +_080AB60A: + movs r1, #1 +_080AB60C: + ldr r0, _080AB630 + movs r2, #0xda + lsls r2, r2, #3 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #3 + blt _080AB634 + cmp r0, #6 + ble _080AB626 + cmp r0, #0xd + bgt _080AB634 + cmp r0, #0xb + blt _080AB634 +_080AB626: + movs r2, #1 + b _080AB636 + .align 2, 0 +_080AB62C: .4byte 0x0000FFFF +_080AB630: .4byte gUnknown_20380F4 +_080AB634: + movs r2, #0 +_080AB636: + cmp r1, #0 + beq _080AB678 + cmp r2, #0 + beq _080AB64A + ldr r0, _080AB668 + ldr r1, _080AB66C + movs r2, #0x80 + lsls r2, r2, #1 + bl CpuFastSet +_080AB64A: + movs r0, #1 + rsbs r0, r0, #0 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080AB670 + ldr r3, _080AB674 + adds r0, r0, r3 + movs r1, #2 + strb r1, [r0] + b _080AB6E0 + .align 2, 0 +_080AB668: .4byte gUnknown_20377B4 +_080AB66C: .4byte gUnknown_20373B4 +_080AB670: .4byte gUnknown_20380F4 +_080AB674: .4byte 0x000006C6 +_080AB678: + ldr r1, _080AB690 + ldr r3, _080AB694 + adds r0, r1, r3 + strh r4, [r0] + cmp r2, #0 + beq _080AB69C + ldr r0, _080AB698 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + b _080AB6AE + .align 2, 0 +_080AB690: .4byte gUnknown_20380F4 +_080AB694: .4byte 0x000006C4 +_080AB698: .4byte 0x000006C7 +_080AB69C: + movs r0, #1 + rsbs r0, r0, #0 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + str r4, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_080AB6AE: + ldr r4, _080AB6E8 + ldr r1, _080AB6EC + adds r0, r4, r1 + movs r1, #0 + movs r5, #1 + strb r5, [r0] + ldr r2, _080AB6F0 + adds r0, r4, r2 + strb r5, [r0] + ldr r3, _080AB6F4 + adds r0, r4, r3 + strb r1, [r0] + movs r1, #0xe6 + lsls r1, r1, #3 + adds r0, r4, r1 + ldrb r0, [r0] + adds r2, #0x68 + adds r1, r4, r2 + ldrb r1, [r1] + bl sub_080ABA20 + movs r3, #0xd9 + lsls r3, r3, #3 + adds r4, r4, r3 + strb r5, [r4] +_080AB6E0: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AB6E8: .4byte gUnknown_20380F4 +_080AB6EC: .4byte 0x000006C6 +_080AB6F0: .4byte 0x000006CA +_080AB6F4: .4byte 0x000006CB + thumb_func_end sub_080AB5CC + + thumb_func_start sub_080AB6F8 +sub_080AB6F8: @ 0x080AB6F8 + ldr r0, _080AB70C + ldr r1, _080AB710 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_080AB70C: .4byte gUnknown_20380F4 +_080AB710: .4byte 0x000006C6 + thumb_func_end sub_080AB6F8 + + thumb_func_start sub_080AB714 +sub_080AB714: @ 0x080AB714 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r4, r0, #0x10 + ldr r5, _080AB754 + ldr r2, _080AB758 + adds r0, r5, r2 + ldrb r0, [r0] + adds r1, r5, #0 + cmp r0, #1 + beq _080AB75C + cmp r0, #2 + beq _080AB7A8 + adds r2, #0xa + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #6 + beq _080AB7E0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + subs r2, #0x10 + adds r1, r1, r2 + movs r2, #0 + ldrsb r2, [r1, r2] + movs r1, #1 + bl sub_080AAF40 + b _080AB7F0 + .align 2, 0 +_080AB754: .4byte gUnknown_20380F4 +_080AB758: .4byte 0x000006C6 +_080AB75C: + ldr r2, _080AB79C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080AB7F0 + adds r2, #6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #6 + bne _080AB778 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AB4C8 +_080AB778: + lsls r0, r4, #0x14 + lsrs r4, r0, #0x10 + movs r2, #0 + ldr r6, _080AB7A0 + ldr r0, _080AB7A4 + adds r3, r5, r0 +_080AB784: + adds r0, r4, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r3] + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _080AB784 + b _080AB7F0 + .align 2, 0 +_080AB79C: .4byte 0x000006CA +_080AB7A0: .4byte gUnknown_20377B4 +_080AB7A4: .4byte 0x000006C4 +_080AB7A8: + lsls r0, r4, #0x14 + lsrs r4, r0, #0x10 + lsls r1, r4, #1 + ldr r0, _080AB7D4 + adds r0, r1, r0 + ldr r2, _080AB7D8 + adds r1, r1, r2 + movs r2, #8 + bl CpuFastSet + ldr r0, _080AB7DC + ldrh r2, [r0, #4] + lsls r2, r2, #0x15 + lsrs r2, r2, #0x1b + ldrh r3, [r0, #6] + lsls r3, r3, #0x11 + lsrs r3, r3, #0x11 + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0806F410 + b _080AB7F0 + .align 2, 0 +_080AB7D4: .4byte gUnknown_20377B4 +_080AB7D8: .4byte gUnknown_20373B4 +_080AB7DC: .4byte gUnknown_2037C74 +_080AB7E0: + lsls r0, r4, #0x14 + lsrs r4, r0, #0x10 + ldr r3, _080AB7F8 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0xc + bl sub_0806F410 +_080AB7F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AB7F8: .4byte 0x000073FC + thumb_func_end sub_080AB714 + + thumb_func_start sub_080AB7FC +sub_080AB7FC: @ 0x080AB7FC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080AB818 + movs r2, #0xd8 + lsls r2, r2, #3 + adds r1, r1, r2 + movs r2, #0 + ldrsb r2, [r1, r2] + movs r1, #1 + bl sub_080AAF40 + pop {r0} + bx r0 + .align 2, 0 +_080AB818: .4byte gUnknown_20380F4 + thumb_func_end sub_080AB7FC + + thumb_func_start sub_080AB81C +sub_080AB81C: @ 0x080AB81C + push {lr} + ldr r1, _080AB830 + ldr r2, _080AB834 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + beq _080AB838 + movs r0, #0 + b _080AB83E + .align 2, 0 +_080AB830: .4byte gUnknown_20380F4 +_080AB834: .4byte 0x000006C6 +_080AB838: + ldr r2, _080AB844 + adds r0, r1, r2 + ldrb r0, [r0] +_080AB83E: + pop {r1} + bx r1 + .align 2, 0 +_080AB844: .4byte 0x000006CA + thumb_func_end sub_080AB81C + + thumb_func_start sub_080AB848 +sub_080AB848: @ 0x080AB848 + push {r4, lr} + ldr r4, _080AB870 + ldr r1, _080AB874 + adds r4, r4, r1 + ldrb r1, [r4] + lsls r1, r1, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + ldrb r0, [r4] + bl sub_080AB714 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AB870: .4byte gUnknown_20380F4 +_080AB874: .4byte 0x000006D4 + thumb_func_end sub_080AB848 + + thumb_func_start sub_080AB878 +sub_080AB878: @ 0x080AB878 + movs r2, #0x20 + strb r2, [r0] + strb r2, [r1] + bx lr + thumb_func_end sub_080AB878 + + thumb_func_start sub_080AB880 +sub_080AB880: @ 0x080AB880 + ldr r0, _080AB894 + ldr r2, _080AB898 + adds r1, r0, r2 + movs r2, #1 + strb r2, [r1] + ldr r1, _080AB89C + adds r0, r0, r1 + strb r2, [r0] + bx lr + .align 2, 0 +_080AB894: .4byte gUnknown_20380F4 +_080AB898: .4byte 0x0000074D +_080AB89C: .4byte 0x0000074E + thumb_func_end sub_080AB880 + + thumb_func_start sub_080AB8A0 +sub_080AB8A0: @ 0x080AB8A0 + push {r4, lr} + ldr r1, _080AB8C8 + ldr r0, _080AB8CC + adds r4, r1, r0 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0x1f + bgt _080AB8D4 + ldr r0, _080AB8D0 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080AB878 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0x1f + bgt _080AB8D4 + movs r0, #1 + b _080AB8D6 + .align 2, 0 +_080AB8C8: .4byte gUnknown_20380F4 +_080AB8CC: .4byte 0x0000074D +_080AB8D0: .4byte 0x0000074E +_080AB8D4: + movs r0, #0 +_080AB8D6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080AB8A0 + + thumb_func_start sub_080AB8DC +sub_080AB8DC: @ 0x080AB8DC + push {lr} + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mvns r0, r0 + bl sub_080AB544 + pop {r0} + bx r0 + thumb_func_end sub_080AB8DC + + thumb_func_start sub_080AB8EC +sub_080AB8EC: @ 0x080AB8EC + ldr r1, _080AB90C + ldr r2, _080AB910 + adds r0, r1, r2 + movs r2, #0 + strh r2, [r0] + movs r3, #0xe8 + lsls r3, r3, #3 + adds r0, r1, r3 + strh r2, [r0] + adds r3, #2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _080AB914 + adds r1, r1, r0 + strh r2, [r1] + bx lr + .align 2, 0 +_080AB90C: .4byte gUnknown_20380F4 +_080AB910: .4byte 0x0000073C +_080AB914: .4byte 0x0000073E + thumb_func_end sub_080AB8EC + + thumb_func_start sub_080AB918 +sub_080AB918: @ 0x080AB918 + push {r4, r5, r6, r7, lr} + ldr r5, _080AB934 + ldr r0, _080AB938 + adds r7, r5, r0 + movs r2, #0 + ldrsh r1, [r7, r2] + cmp r1, #1 + beq _080AB98C + cmp r1, #1 + bgt _080AB93C + cmp r1, #0 + beq _080AB942 + b _080ABA14 + .align 2, 0 +_080AB934: .4byte gUnknown_20380F4 +_080AB938: .4byte 0x00000742 +_080AB93C: + cmp r1, #2 + beq _080AB9E0 + b _080ABA14 +_080AB942: + movs r3, #0xe8 + lsls r3, r3, #3 + adds r6, r5, r3 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080ABA14 + strh r1, [r6] + ldr r0, _080AB984 + adds r4, r5, r0 + ldrh r0, [r4] + adds r1, r0, #1 + strh r1, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080AB8DC + ldrh r1, [r4] + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #5 + ble _080ABA14 + ldr r3, _080AB988 + adds r0, r5, r3 + strh r1, [r0] + movs r0, #1 + strh r0, [r7] + movs r0, #0x3c + strh r0, [r6] + b _080ABA14 + .align 2, 0 +_080AB984: .4byte 0x0000073C +_080AB988: .4byte 0x0000073E +_080AB98C: + movs r0, #0xe8 + lsls r0, r0, #3 + adds r2, r5, r0 + ldrh r0, [r2] + adds r0, #3 + movs r1, #0x7f + ands r0, r1 + strh r0, [r2] + ldr r1, _080AB9D4 + movs r3, #0 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + subs r0, #1 + asrs r0, r0, #6 + adds r0, #2 + ldr r2, _080AB9D8 + adds r6, r5, r2 + adds r2, r0, #0 + strh r0, [r6] + ldr r3, _080AB9DC + adds r4, r5, r3 + movs r3, #0 + ldrsh r1, [r4, r3] + cmp r0, r1 + beq _080AB9CC + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + bl sub_080AB8DC +_080AB9CC: + ldrh r0, [r6] + strh r0, [r4] + b _080ABA14 + .align 2, 0 +_080AB9D4: .4byte gUnknown_82FA8CC +_080AB9D8: .4byte 0x0000073C +_080AB9DC: .4byte 0x0000073E +_080AB9E0: + movs r0, #0xe8 + lsls r0, r0, #3 + adds r1, r5, r0 + ldrh r0, [r1] + adds r0, #1 + movs r6, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080ABA14 + strh r6, [r1] + ldr r1, _080ABA1C + adds r4, r5, r1 + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080AB8DC + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #3 + bne _080ABA14 + strh r6, [r7] +_080ABA14: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ABA1C: .4byte 0x0000073C + thumb_func_end sub_080AB918 + + thumb_func_start sub_080ABA20 +sub_080ABA20: @ 0x080ABA20 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080ABA58 + movs r4, #0xe6 + lsls r4, r4, #3 + adds r2, r3, r4 + strh r0, [r2] + adds r4, #2 + adds r2, r3, r4 + strh r1, [r2] + adds r4, #2 + adds r2, r3, r4 + strh r0, [r2] + ldr r2, _080ABA5C + adds r3, r3, r2 + strh r1, [r3] + lsls r1, r1, #8 + orrs r1, r0 + movs r0, #0x52 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ABA58: .4byte gUnknown_20380F4 +_080ABA5C: .4byte 0x00000736 + thumb_func_end sub_080ABA20 + + thumb_func_start sub_080ABA60 +sub_080ABA60: @ 0x080ABA60 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080ABA94 + ldr r5, _080ABA98 + adds r4, r3, r5 + movs r5, #0 + strh r0, [r4] + ldr r4, _080ABA9C + adds r0, r3, r4 + strh r1, [r0] + ldr r1, _080ABAA0 + adds r0, r3, r1 + strb r2, [r0] + adds r4, #3 + adds r0, r3, r4 + strb r5, [r0] + movs r0, #0xe7 + lsls r0, r0, #3 + adds r3, r3, r0 + strb r5, [r3] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ABA94: .4byte gUnknown_20380F4 +_080ABA98: .4byte 0x00000734 +_080ABA9C: .4byte 0x00000736 +_080ABAA0: .4byte 0x0000073A + thumb_func_end sub_080ABA60 + + thumb_func_start sub_080ABAA4 +sub_080ABAA4: @ 0x080ABAA4 + push {r4, r5, r6, lr} + ldr r0, _080ABAFC + movs r1, #0xe6 + lsls r1, r1, #3 + adds r3, r0, r1 + ldr r2, [r3] + ldr r6, _080ABB00 + adds r4, r0, r6 + ldr r1, [r4] + adds r5, r0, #0 + cmp r2, r1 + beq _080ABB68 + ldr r0, _080ABB04 + adds r2, r5, r0 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r6, _080ABB08 + adds r1, r5, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bls _080ABB34 + movs r0, #0 + strb r0, [r2] + movs r0, #0xe7 + lsls r0, r0, #3 + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080ABB0C + ldrh r1, [r3] + adds r2, r1, #0 + ldrh r0, [r4] + cmp r2, r0 + bhs _080ABB2C + adds r0, r1, #1 + b _080ABB32 + .align 2, 0 +_080ABAFC: .4byte gUnknown_20380F4 +_080ABB00: .4byte 0x00000734 +_080ABB04: .4byte 0x00000739 +_080ABB08: .4byte 0x0000073A +_080ABB0C: + ldr r1, _080ABB24 + adds r3, r5, r1 + ldr r2, _080ABB28 + adds r0, r5, r2 + ldrh r1, [r3] + adds r2, r1, #0 + ldrh r0, [r0] + cmp r2, r0 + bhs _080ABB2C + adds r0, r1, #1 + b _080ABB32 + .align 2, 0 +_080ABB24: .4byte 0x00000732 +_080ABB28: .4byte 0x00000736 +_080ABB2C: + cmp r2, r0 + bls _080ABB34 + subs r0, r1, #1 +_080ABB32: + strh r0, [r3] +_080ABB34: + ldr r6, _080ABB60 + adds r0, r5, r6 + ldrh r1, [r0] + lsls r1, r1, #8 + movs r0, #0xe6 + lsls r0, r0, #3 + adds r4, r5, r0 + ldrh r0, [r4] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r4] + ldr r2, _080ABB64 + adds r0, r5, r2 + ldr r0, [r0] + cmp r1, r0 + beq _080ABB68 + movs r0, #0 + b _080ABB6A + .align 2, 0 +_080ABB60: .4byte 0x00000732 +_080ABB64: .4byte 0x00000734 +_080ABB68: + movs r0, #1 +_080ABB6A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080ABAA4 + + thumb_func_start sub_080ABB70 +sub_080ABB70: @ 0x080ABB70 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #9 + bhi _080ABC02 + lsls r0, r0, #2 + ldr r1, _080ABB88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ABB88: .4byte _080ABB8C +_080ABB8C: @ jump table + .4byte _080ABBB4 @ case 0 + .4byte _080ABBBC @ case 1 + .4byte _080ABBC4 @ case 2 + .4byte _080ABBCC @ case 3 + .4byte _080ABBD4 @ case 4 + .4byte _080ABBDC @ case 5 + .4byte _080ABBE4 @ case 6 + .4byte _080ABBEC @ case 7 + .4byte _080ABBF4 @ case 8 + .4byte _080ABBFC @ case 9 +_080ABBB4: + movs r0, #1 + bl sub_080AE6EC + b _080ABC02 +_080ABBBC: + movs r0, #2 + bl sub_080AE6EC + b _080ABC02 +_080ABBC4: + movs r0, #3 + bl sub_080AE6EC + b _080ABC02 +_080ABBCC: + movs r0, #4 + bl sub_080AE6EC + b _080ABC02 +_080ABBD4: + movs r0, #5 + bl sub_080AE6EC + b _080ABC02 +_080ABBDC: + movs r0, #6 + bl sub_080AE6EC + b _080ABC02 +_080ABBE4: + movs r0, #9 + bl sub_080AE6EC + b _080ABC02 +_080ABBEC: + movs r0, #7 + bl sub_080AE6EC + b _080ABC02 +_080ABBF4: + movs r0, #8 + bl sub_080AE6EC + b _080ABC02 +_080ABBFC: + movs r0, #0xb + bl sub_080AE6EC +_080ABC02: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080ABB70 + + thumb_func_start sub_080ABC08 +sub_080ABC08: @ 0x080ABC08 + ldr r0, _080ABC14 + movs r1, #0xda + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080ABC14: .4byte gUnknown_20380F4 + thumb_func_end sub_080ABC08 + + thumb_func_start sub_080ABC18 +sub_080ABC18: @ 0x080ABC18 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _080ABC38 + ldr r3, _080ABC3C + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #2 + beq _080ABC6A + cmp r2, #0x53 + beq _080ABC50 + cmp r2, #0x53 + bgt _080ABC40 + cmp r2, #0x51 + beq _080ABC5C + b _080ABC6A + .align 2, 0 +_080ABC38: .4byte gUnknown_20380F4 +_080ABC3C: .4byte 0x000006C6 +_080ABC40: + cmp r2, #0x55 + bne _080ABC6A + ldr r0, _080ABC4C + adds r1, r1, r0 + movs r0, #0 + b _080ABC62 + .align 2, 0 +_080ABC4C: .4byte 0x000006DD +_080ABC50: + ldr r3, _080ABC58 + adds r1, r1, r3 + movs r0, #1 + b _080ABC62 + .align 2, 0 +_080ABC58: .4byte 0x000006DD +_080ABC5C: + ldr r0, _080ABC70 + adds r1, r1, r0 + movs r0, #2 +_080ABC62: + strb r0, [r1] + adds r0, r2, #0 + bl sub_080A306C +_080ABC6A: + pop {r0} + bx r0 + .align 2, 0 +_080ABC70: .4byte 0x000006DD + thumb_func_end sub_080ABC18 + + thumb_func_start sub_080ABC74 +sub_080ABC74: @ 0x080ABC74 + push {lr} + bl sub_080A31D4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ABCB2 + ldr r0, _080ABC9C + ldr r1, _080ABCA0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080ABCA4 + cmp r0, #1 + bgt _080ABCAC + cmp r0, #0 + bne _080ABCAC + movs r0, #0x56 + bl sub_080A306C + b _080ABCB2 + .align 2, 0 +_080ABC9C: .4byte gUnknown_20380F4 +_080ABCA0: .4byte 0x000006DD +_080ABCA4: + movs r0, #0x54 + bl sub_080A306C + b _080ABCB2 +_080ABCAC: + movs r0, #0x52 + bl sub_080A306C +_080ABCB2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080ABC74 + + thumb_func_start sub_080ABCB8 +sub_080ABCB8: @ 0x080ABCB8 + ldr r0, _080ABCC4 + ldr r1, _080ABCC8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080ABCC4: .4byte gUnknown_20380F4 +_080ABCC8: .4byte 0x000006D3 + thumb_func_end sub_080ABCB8 + + thumb_func_start sub_080ABCCC +sub_080ABCCC: @ 0x080ABCCC + ldr r0, _080ABCD8 + ldr r1, _080ABCDC + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + bx lr + .align 2, 0 +_080ABCD8: .4byte gUnknown_20380F4 +_080ABCDC: .4byte 0x000006C6 + thumb_func_end sub_080ABCCC + + thumb_func_start sub_080ABCE0 +sub_080ABCE0: @ 0x080ABCE0 + ldr r0, _080ABCEC + ldr r1, _080ABCF0 + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + bx lr + .align 2, 0 +_080ABCEC: .4byte gUnknown_20380F4 +_080ABCF0: .4byte 0x000006C6 + thumb_func_end sub_080ABCE0 + + thumb_func_start sub_080ABCF4 +sub_080ABCF4: @ 0x080ABCF4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080ABD18 + ldr r5, _080ABD1C + adds r1, r5, #0 + movs r2, #0x10 + bl CpuSet + adds r4, r4, r5 + movs r0, #0 + strb r0, [r4] + ldr r0, _080ABD20 + str r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ABD18: .4byte gUnknown_8526EEC +_080ABD1C: .4byte gUnknown_2038844 +_080ABD20: .4byte gUnknown_3000F50 + thumb_func_end sub_080ABCF4 + + thumb_func_start sub_080ABD24 +sub_080ABD24: @ 0x080ABD24 + ldr r1, _080ABD2C + ldr r0, _080ABD30 + str r0, [r1] + bx lr + .align 2, 0 +_080ABD2C: .4byte gUnknown_3000F50 +_080ABD30: .4byte gUnknown_8526EEC + thumb_func_end sub_080ABD24 + + thumb_func_start sub_080ABD34 +sub_080ABD34: @ 0x080ABD34 + push {lr} + ldr r0, _080ABD6C + ldr r0, [r0] + ldr r2, _080ABD70 + adds r1, r0, r2 + movs r2, #0 + strb r2, [r1] + ldr r1, _080ABD74 + adds r3, r0, r1 + movs r1, #0x14 + strb r1, [r3] + ldr r3, _080ABD78 + adds r1, r0, r3 + strb r2, [r1] + subs r3, #6 + adds r1, r0, r3 + strh r2, [r1] + ldr r1, _080ABD7C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080ABD68 + movs r0, #0 + movs r1, #0x10 + bl sub_080ABA20 +_080ABD68: + pop {r0} + bx r0 + .align 2, 0 +_080ABD6C: .4byte gUnknown_8526DE8 +_080ABD70: .4byte 0x000006C1 +_080ABD74: .4byte 0x000006C2 +_080ABD78: .4byte 0x000006D2 +_080ABD7C: .4byte 0x000006DE + thumb_func_end sub_080ABD34 + + thumb_func_start sub_080ABD80 +sub_080ABD80: @ 0x080ABD80 + push {r4, lr} + bl sub_080ABD34 + ldr r0, _080ABDA8 + ldr r1, [r0] + ldr r2, _080ABDAC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ABDA0 + adds r4, r1, r2 +_080ABD96: + bl sub_080ABDB0 + ldrb r0, [r4] + cmp r0, #0 + beq _080ABD96 +_080ABDA0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ABDA8: .4byte gUnknown_8526DE8 +_080ABDAC: .4byte 0x000006D2 + thumb_func_end sub_080ABD80 + + thumb_func_start sub_080ABDB0 +sub_080ABDB0: @ 0x080ABDB0 + push {r4, r5, lr} + ldr r0, _080ABDCC + ldr r5, [r0] + ldr r0, _080ABDD0 + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, #1 + beq _080ABDE0 + cmp r0, #1 + bgt _080ABDD4 + cmp r0, #0 + beq _080ABDDA + b _080ABE04 + .align 2, 0 +_080ABDCC: .4byte gUnknown_8526DE8 +_080ABDD0: .4byte 0x000006CC +_080ABDD4: + cmp r0, #2 + beq _080ABDEC + b _080ABE04 +_080ABDDA: + bl sub_080ABE90 + b _080ABDFE +_080ABDE0: + movs r0, #0xc + movs r1, #8 + movs r2, #1 + bl sub_080ABA60 + b _080ABDFE +_080ABDEC: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ABE04 + ldr r0, _080ABE0C + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080ABDFE: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080ABE04: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ABE0C: .4byte 0x000006D2 + thumb_func_end sub_080ABDB0 + + thumb_func_start sub_080ABE10 +sub_080ABE10: @ 0x080ABE10 + push {r4, lr} + ldr r0, _080ABE28 + ldr r0, [r0] + ldr r1, _080ABE2C + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #0 + beq _080ABE30 + cmp r0, #1 + beq _080ABE3C + movs r0, #0 + b _080ABE52 + .align 2, 0 +_080ABE28: .4byte gUnknown_8526DE8 +_080ABE2C: .4byte 0x000006CE +_080ABE30: + movs r0, #0 + movs r1, #0x10 + movs r2, #1 + bl sub_080ABA60 + b _080ABE4A +_080ABE3C: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ABE50 + bl sub_080ABF5C +_080ABE4A: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080ABE50: + movs r0, #1 +_080ABE52: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080ABE10 + + thumb_func_start sub_080ABE58 +sub_080ABE58: @ 0x080ABE58 + ldr r0, _080ABE70 + ldr r1, [r0] + ldr r0, _080ABE74 + adds r2, r1, r0 + movs r0, #0 + strb r0, [r2] + ldr r0, _080ABE78 + adds r1, r1, r0 + movs r0, #0x14 + strb r0, [r1] + bx lr + .align 2, 0 +_080ABE70: .4byte gUnknown_8526DE8 +_080ABE74: .4byte 0x000006C1 +_080ABE78: .4byte 0x000006C2 + thumb_func_end sub_080ABE58 + + thumb_func_start sub_080ABE7C +sub_080ABE7C: @ 0x080ABE7C + push {lr} + bl sub_080ABE58 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080ABE7C + + thumb_func_start sub_080ABE88 +sub_080ABE88: @ 0x080ABE88 + bx lr + .align 2, 0 + thumb_func_end sub_080ABE88 + + thumb_func_start sub_080ABE8C +sub_080ABE8C: @ 0x080ABE8C + movs r0, #0 + bx lr + thumb_func_end sub_080ABE8C + + thumb_func_start sub_080ABE90 +sub_080ABE90: @ 0x080ABE90 + push {r4, r5, lr} + ldr r0, _080ABF08 + ldr r0, [r0] + ldr r1, _080ABF0C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080ABF4C + ldr r0, _080ABF10 + bl sub_08008210 + ldr r0, _080ABF14 + bl sub_080AB848 + movs r5, #0 +_080ABEAE: + ldr r0, _080ABF18 + movs r1, #0 + movs r2, #0 + movs r3, #0xff + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _080ABF24 + ldr r0, _080ABF08 + ldr r1, [r0] + lsls r2, r5, #2 + movs r0, #0xfa + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + lsls r4, r3, #4 + adds r4, r4, r3 + lsls r4, r4, #2 + ldr r0, _080ABF1C + adds r4, r4, r0 + str r4, [r1] + ldr r0, _080ABF20 + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r2, #2] + adds r1, #7 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + bl sub_080929A8 + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + b _080ABF36 + .align 2, 0 +_080ABF08: .4byte gUnknown_8526DE8 +_080ABF0C: .4byte 0x000006DE +_080ABF10: .4byte gUnknown_852A7F8 +_080ABF14: .4byte gUnknown_8526F2C +_080ABF18: .4byte gUnknown_852A814 +_080ABF1C: .4byte gUnknown_20205AC +_080ABF20: .4byte gUnknown_852A7EC +_080ABF24: + ldr r0, _080ABF54 + ldr r1, [r0] + lsls r0, r5, #2 + movs r2, #0xfa + lsls r2, r2, #1 + adds r1, r1, r2 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_080ABF36: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #2 + bls _080ABEAE + ldr r0, _080ABF54 + ldr r0, [r0] + ldr r1, _080ABF58 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080ABF4C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ABF54: .4byte gUnknown_8526DE8 +_080ABF58: .4byte 0x000006DE + thumb_func_end sub_080ABE90 + + thumb_func_start sub_080ABF5C +sub_080ABF5C: @ 0x080ABF5C + push {r4, r5, lr} + ldr r0, _080ABFA8 + ldr r1, [r0] + ldr r2, _080ABFAC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080ABFA0 + movs r4, #0 + movs r0, #0xfa + lsls r0, r0, #1 + adds r5, r1, r0 +_080ABF74: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080ABF82 + bl sub_08006E00 +_080ABF82: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #2 + bls _080ABF74 + movs r0, #0x90 + lsls r0, r0, #5 + bl sub_08008280 + ldr r0, _080ABFA8 + ldr r0, [r0] + ldr r1, _080ABFAC + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080ABFA0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ABFA8: .4byte gUnknown_8526DE8 +_080ABFAC: .4byte 0x000006DE + thumb_func_end sub_080ABF5C + + thumb_func_start sub_080ABFB0 +sub_080ABFB0: @ 0x080ABFB0 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + movs r1, #1 + ands r0, r1 + strh r0, [r2, #0x2e] + cmp r0, #0 + beq _080ABFC8 + ldrh r0, [r2, #0x20] + subs r0, #1 + strh r0, [r2, #0x20] +_080ABFC8: + pop {r0} + bx r0 + thumb_func_end sub_080ABFB0 + + thumb_func_start sub_080ABFCC +sub_080ABFCC: @ 0x080ABFCC + ldr r0, _080ABFF0 + ldr r1, [r0] + ldr r0, _080ABFF4 + adds r3, r1, r0 + movs r2, #0 + movs r0, #0 + strh r0, [r3] + ldr r3, _080ABFF8 + adds r0, r1, r3 + strb r2, [r0] + subs r3, #0x11 + adds r0, r1, r3 + strb r2, [r0] + ldr r0, _080ABFFC + adds r1, r1, r0 + strb r2, [r1] + bx lr + .align 2, 0 +_080ABFF0: .4byte gUnknown_8526DE8 +_080ABFF4: .4byte 0x000006CC +_080ABFF8: .4byte 0x000006D2 +_080ABFFC: .4byte 0x000006C2 + thumb_func_end sub_080ABFCC + + thumb_func_start sub_080AC000 +sub_080AC000: @ 0x080AC000 + push {r4, lr} + bl sub_080ABFCC + ldr r0, _080AC028 + ldr r1, [r0] + ldr r2, _080AC02C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AC020 + adds r4, r1, r2 +_080AC016: + bl sub_080AC030 + ldrb r0, [r4] + cmp r0, #0 + beq _080AC016 +_080AC020: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC028: .4byte gUnknown_8526DE8 +_080AC02C: .4byte 0x000006D2 + thumb_func_end sub_080AC000 + + thumb_func_start sub_080AC030 +sub_080AC030: @ 0x080AC030 + push {lr} + ldr r1, _080AC04C + ldr r0, [r1] + ldr r2, _080AC050 + adds r0, r0, r2 + ldrh r0, [r0] + adds r2, r1, #0 + cmp r0, #4 + bhi _080AC10C + lsls r0, r0, #2 + ldr r1, _080AC054 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AC04C: .4byte gUnknown_8526DE8 +_080AC050: .4byte 0x000006CC +_080AC054: .4byte _080AC058 +_080AC058: @ jump table + .4byte _080AC06C @ case 0 + .4byte _080AC088 @ case 1 + .4byte _080AC0A0 @ case 2 + .4byte _080AC0BC @ case 3 + .4byte _080AC0D4 @ case 4 +_080AC06C: + ldr r1, [r2] + ldr r2, _080AC080 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080AC110 + ldr r0, _080AC084 + adds r1, r1, r0 + b _080AC0F4 + .align 2, 0 +_080AC080: .4byte 0x000006C6 +_080AC084: .4byte 0x000006CC +_080AC088: + bl sub_080AB880 + ldr r0, _080AC098 + ldr r1, [r0] + ldr r2, _080AC09C + adds r1, r1, r2 + b _080AC0F4 + .align 2, 0 +_080AC098: .4byte gUnknown_8526DE8 +_080AC09C: .4byte 0x000006CC +_080AC0A0: + bl sub_080AB8A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC110 + ldr r0, _080AC0B4 + ldr r1, [r0] + ldr r0, _080AC0B8 + adds r1, r1, r0 + b _080AC0F4 + .align 2, 0 +_080AC0B4: .4byte gUnknown_8526DE8 +_080AC0B8: .4byte 0x000006CC +_080AC0BC: + bl sub_080AB8EC + ldr r0, _080AC0CC + ldr r1, [r0] + ldr r2, _080AC0D0 + adds r1, r1, r2 + b _080AC0F4 + .align 2, 0 +_080AC0CC: .4byte gUnknown_8526DE8 +_080AC0D0: .4byte 0x000006CC +_080AC0D4: + bl sub_080AB918 + ldr r0, _080AC0FC + ldr r2, [r0] + ldr r1, _080AC100 + adds r0, r2, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #6 + bne _080AC110 + ldr r0, _080AC104 + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] + ldr r0, _080AC108 + adds r1, r2, r0 +_080AC0F4: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080AC110 + .align 2, 0 +_080AC0FC: .4byte gUnknown_8526DE8 +_080AC100: .4byte 0x0000073C +_080AC104: .4byte 0x000006D2 +_080AC108: .4byte 0x000006CC +_080AC10C: + bl sub_080AB918 +_080AC110: + pop {r0} + bx r0 + thumb_func_end sub_080AC030 + + thumb_func_start sub_080AC114 +sub_080AC114: @ 0x080AC114 + movs r0, #0 + bx lr + thumb_func_end sub_080AC114 + + thumb_func_start sub_080AC118 +sub_080AC118: @ 0x080AC118 + push {lr} + ldr r0, _080AC128 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AC128: .4byte sub_080AC12C + thumb_func_end sub_080AC118 + + thumb_func_start sub_080AC12C +sub_080AC12C: @ 0x080AC12C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AC150 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bhi _080AC21E + lsls r0, r0, #2 + ldr r1, _080AC154 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AC150: .4byte gUnknown_3005B60 +_080AC154: .4byte _080AC158 +_080AC158: @ jump table + .4byte _080AC16C @ case 0 + .4byte _080AC196 @ case 1 + .4byte _080AC1C4 @ case 2 + .4byte _080AC1F4 @ case 3 + .4byte _080AC214 @ case 4 +_080AC16C: + movs r0, #0 + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + ldr r0, _080AC1BC + ldrh r0, [r0] + strh r0, [r4, #0xe] + ldr r1, _080AC1C0 + movs r0, #0x48 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0x9e + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080AC196: + ldrh r0, [r4, #0xa] + adds r0, #3 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _080AC1A8 + movs r0, #0x10 + strh r0, [r4, #0xa] +_080AC1A8: + ldrh r1, [r4, #0xa] + movs r0, #0x54 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xf + ble _080AC21E + b _080AC20C + .align 2, 0 +_080AC1BC: .4byte 0x04000048 +_080AC1C0: .4byte 0x00003F3F +_080AC1C4: + ldrh r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _080AC21E + strh r1, [r4, #0xc] + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080AC1EA + strh r1, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080AC1EA: + ldrh r1, [r4, #0xa] + movs r0, #0x54 + bl sub_08001144 + b _080AC21E +_080AC1F4: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4, #0xe] + movs r0, #0x48 + bl sub_08001144 +_080AC20C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AC21E +_080AC214: + bl sub_080988C4 + adds r0, r5, #0 + bl sub_080A8964 +_080AC21E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AC12C + + thumb_func_start sub_080AC224 +sub_080AC224: @ 0x080AC224 + push {r4, lr} + ldr r0, _080AC274 + ldr r1, [r0] + ldr r2, _080AC278 + adds r0, r1, r2 + movs r3, #0 + movs r2, #0 + strh r2, [r0] + ldr r4, _080AC27C + adds r0, r1, r4 + strb r3, [r0] + adds r4, #4 + adds r0, r1, r4 + strh r2, [r0] + ldr r0, _080AC280 + adds r2, r1, r0 + movs r0, #8 + strb r0, [r2] + ldr r2, _080AC284 + adds r0, r1, r2 + strb r3, [r0] + adds r4, #3 + adds r2, r1, r4 + movs r0, #0xa + strb r0, [r2] + ldr r0, _080AC288 + adds r2, r1, r0 + movs r0, #3 + strb r0, [r2] + ldr r2, _080AC28C + adds r1, r1, r2 + movs r0, #0x14 + strb r0, [r1] + movs r0, #0x55 + bl sub_080ABC18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC274: .4byte gUnknown_8526DE8 +_080AC278: .4byte 0x000006CC +_080AC27C: .4byte 0x000006D2 +_080AC280: .4byte 0x000006DB +_080AC284: .4byte 0x000006DC +_080AC288: .4byte 0x000006C1 +_080AC28C: .4byte 0x000006C2 + thumb_func_end sub_080AC224 + + thumb_func_start sub_080AC290 +sub_080AC290: @ 0x080AC290 + push {r4, lr} + bl sub_080AC224 + ldr r0, _080AC2B8 + ldr r1, [r0] + ldr r2, _080AC2BC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AC2B0 + adds r4, r1, r2 +_080AC2A6: + bl sub_080AC2C0 + ldrb r0, [r4] + cmp r0, #0 + beq _080AC2A6 +_080AC2B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC2B8: .4byte gUnknown_8526DE8 +_080AC2BC: .4byte 0x000006D2 + thumb_func_end sub_080AC290 + + thumb_func_start sub_080AC2C0 +sub_080AC2C0: @ 0x080AC2C0 + push {r4, r5, lr} + ldr r0, _080AC2DC + ldr r5, [r0] + ldr r0, _080AC2E0 + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, #1 + beq _080AC2F0 + cmp r0, #1 + bgt _080AC2E4 + cmp r0, #0 + beq _080AC2EA + b _080AC314 + .align 2, 0 +_080AC2DC: .4byte gUnknown_8526DE8 +_080AC2E0: .4byte 0x000006CC +_080AC2E4: + cmp r0, #2 + beq _080AC2FC + b _080AC314 +_080AC2EA: + bl sub_080AC664 + b _080AC30E +_080AC2F0: + bl sub_080AC674 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC314 + b _080AC30E +_080AC2FC: + bl sub_080AC7A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC314 + ldr r0, _080AC31C + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080AC30E: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080AC314: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC31C: .4byte 0x000006D2 + thumb_func_end sub_080AC2C0 + + thumb_func_start sub_080AC320 +sub_080AC320: @ 0x080AC320 + push {r4, r5, lr} + ldr r0, _080AC33C + ldr r2, [r0] + ldr r1, _080AC340 + adds r3, r2, r1 + ldrh r1, [r3] + adds r4, r0, #0 + cmp r1, #0 + beq _080AC344 + cmp r1, #1 + beq _080AC378 + movs r0, #0 + b _080AC3A6 + .align 2, 0 +_080AC33C: .4byte gUnknown_8526DE8 +_080AC340: .4byte 0x000006CE +_080AC344: + ldr r5, _080AC364 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #3 + beq _080AC356 + cmp r0, #5 + beq _080AC356 + cmp r0, #0xd + bne _080AC36C +_080AC356: + ldr r0, [r4] + ldr r1, _080AC368 + adds r0, r0, r1 + movs r1, #0xff + strh r1, [r0] + movs r0, #0 + b _080AC3A6 + .align 2, 0 +_080AC364: .4byte 0x000006D1 +_080AC368: .4byte 0x000006CE +_080AC36C: + ldr r4, _080AC398 + adds r0, r2, r4 + strb r1, [r0] + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] +_080AC378: + bl sub_080AC7A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC3A4 + bl sub_080AC834 + ldr r0, _080AC39C + ldr r1, [r0] + ldr r5, _080AC3A0 + adds r1, r1, r5 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0 + b _080AC3A6 + .align 2, 0 +_080AC398: .4byte 0x000006D9 +_080AC39C: .4byte gUnknown_8526DE8 +_080AC3A0: .4byte 0x000006CE +_080AC3A4: + movs r0, #1 +_080AC3A6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080AC320 + + thumb_func_start sub_080AC3AC +sub_080AC3AC: @ 0x080AC3AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + movs r1, #0x30 + ldrsh r0, [r7, r1] + cmp r0, #0 + bne _080AC3C0 + ldr r0, _080AC464 + strh r0, [r7, #0x30] +_080AC3C0: + movs r2, #0x30 + ldrsh r1, [r7, r2] + ldr r0, _080AC468 + muls r0, r1, r0 + ldr r3, _080AC46C + adds r0, r0, r3 + lsls r0, r0, #1 + lsrs r0, r0, #0x11 + movs r1, #0x96 + lsls r1, r1, #2 + bl __umodsi3 + movs r1, #0 + mov r8, r1 + strh r0, [r7, #0x30] + ldr r1, _080AC470 + ldr r0, _080AC474 + ldr r5, [r0] + ldr r2, _080AC478 + adds r5, r5, r2 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r6, [r0] + movs r3, #0x30 + ldrsh r0, [r7, r3] + movs r1, #0x1e + bl __modsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r0, r4, #3 + strh r0, [r7, #0x32] + movs r1, #0x30 + ldrsh r0, [r7, r1] + movs r1, #0x1e + bl __divsi3 + lsls r0, r0, #0x10 + lsls r4, r4, #7 + strh r4, [r7, #0x32] + asrs r0, r0, #9 + strh r0, [r7, #0x34] + ldr r2, _080AC47C + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r2 + movs r3, #0 + ldrsh r1, [r1, r3] + muls r1, r6, r1 + subs r4, r4, r1 + strh r4, [r7, #0x32] + ldrb r1, [r5] + lsls r1, r1, #2 + adds r2, #2 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + muls r1, r6, r1 + subs r0, r0, r1 + strh r0, [r7, #0x34] + adds r0, r7, #0 + movs r1, #0 + bl sub_08007EC0 + mov r3, r8 + strh r3, [r7, #0x36] + adds r2, r7, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + strh r6, [r7, #0x2e] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AC464: .4byte 0x00000169 +_080AC468: .4byte 0x41C64E6D +_080AC46C: .4byte 0x00003039 +_080AC470: .4byte gUnknown_852A8E8 +_080AC474: .4byte gUnknown_8526DE8 +_080AC478: .4byte 0x000006DC +_080AC47C: .4byte gUnknown_852A8E0 + thumb_func_end sub_080AC3AC + + thumb_func_start sub_080AC480 +sub_080AC480: @ 0x080AC480 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080AC55C + ldr r3, _080AC4F4 + ldr r4, _080AC4F8 + ldr r2, [r4] + ldr r0, _080AC4FC + adds r2, r2, r0 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0] + ldrh r0, [r5, #0x32] + adds r1, r1, r0 + strh r1, [r5, #0x32] + ldrb r0, [r2] + lsls r0, r0, #2 + adds r3, #2 + adds r0, r0, r3 + ldrh r0, [r0] + ldrh r2, [r5, #0x34] + adds r0, r0, r2 + strh r0, [r5, #0x34] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r5, #0x20] + lsls r0, r0, #0x10 + asrs r2, r0, #0x14 + strh r2, [r5, #0x22] + movs r3, #0x38 + ldrsh r0, [r5, r3] + adds r3, r4, #0 + cmp r0, #0 + beq _080AC500 + adds r0, r1, #0 + adds r0, #8 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _080AC500 + adds r1, r2, #0 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + blt _080AC500 + cmp r1, #0xb0 + bgt _080AC500 + adds r0, r5, #0 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _080AC50A + .align 2, 0 +_080AC4F4: .4byte gUnknown_852A8E0 +_080AC4F8: .4byte gUnknown_8526DE8 +_080AC4FC: .4byte 0x000006DC +_080AC500: + adds r0, r5, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_080AC50A: + strb r1, [r0] + adds r4, r0, #0 + ldrh r0, [r5, #0x2e] + subs r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AC57C + ldr r0, [r3] + ldr r1, _080AC550 + adds r0, r0, r1 + ldrb r1, [r0] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + movs r0, #1 + strh r0, [r5, #0x36] + ldr r1, _080AC554 + ldrh r0, [r5, #0x20] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r5, #0x20] + ldr r1, _080AC558 + ldrh r0, [r5, #0x22] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r5, #0x22] + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + b _080AC57C + .align 2, 0 +_080AC550: .4byte 0x000006DC +_080AC554: .4byte gUnknown_2021B38 +_080AC558: .4byte gUnknown_2021B3A +_080AC55C: + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080AC57C + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_080AC3AC +_080AC57C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AC480 + + thumb_func_start sub_080AC584 +sub_080AC584: @ 0x080AC584 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080AC5A4 + adds r0, r4, #0 + bl sub_080AC3AC + ldr r0, _080AC5A0 + str r0, [r4, #0x1c] + b _080AC5A8 + .align 2, 0 +_080AC5A0: .4byte sub_080AC480 +_080AC5A4: + subs r0, r1, #1 + strh r0, [r4, #0x2e] +_080AC5A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AC584 + + thumb_func_start sub_080AC5B0 +sub_080AC5B0: @ 0x080AC5B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + lsls r5, r1, #0x10 + lsrs r5, r5, #0x10 + ldr r2, _080AC634 + ldr r0, _080AC638 + ldr r0, [r0] + ldr r1, _080AC63C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r0, r2 + ldrh r1, [r1] + mov r8, r1 + adds r2, #2 + adds r0, r0, r2 + ldrh r4, [r0] + add r4, r8 + adds r0, r5, #0 + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + subs r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _080AC640 + cmp r6, r0 + beq _080AC60E + adds r5, r0, #0 +_080AC5FE: + adds r0, r7, #0 + bl sub_080AC3AC + subs r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r5 + bne _080AC5FE +_080AC60E: + cmp r4, r8 + bhs _080AC644 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080AC640 + cmp r4, r0 + beq _080AC630 + adds r5, r0, #0 +_080AC620: + adds r0, r7, #0 + bl sub_080AC480 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r5 + bne _080AC620 +_080AC630: + movs r0, #0 + b _080AC658 + .align 2, 0 +_080AC634: .4byte gUnknown_852A8E8 +_080AC638: .4byte gUnknown_8526DE8 +_080AC63C: .4byte 0x000006DC +_080AC640: .4byte 0x0000FFFF +_080AC644: + mov r1, r8 + subs r0, r4, r1 + strh r0, [r7, #0x2e] + adds r2, r7, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 +_080AC658: + strh r0, [r7, #0x3a] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AC5B0 + + thumb_func_start sub_080AC664 +sub_080AC664: @ 0x080AC664 + push {lr} + ldr r0, _080AC670 + bl sub_08008210 + pop {r0} + bx r0 + .align 2, 0 +_080AC670: .4byte gUnknown_852A8F0 + thumb_func_end sub_080AC664 + + thumb_func_start sub_080AC674 +sub_080AC674: @ 0x080AC674 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080AC720 + ldr r4, [r0] + ldr r0, _080AC724 + adds r2, r4, r0 + ldrb r0, [r2] + cmp r0, #0x18 + bne _080AC68E + b _080AC794 +_080AC68E: + ldrb r7, [r2] + ldr r0, _080AC728 + ldr r2, _080AC72C + lsls r6, r7, #2 + adds r2, r6, r2 + movs r3, #0 + ldrsh r1, [r2, r3] + movs r3, #2 + ldrsh r2, [r2, r3] + movs r3, #0x4e + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _080AC73C + ldr r3, _080AC730 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r0, #0 + strh r0, [r1, #0x38] + lsls r2, r7, #3 + adds r0, r2, r7 + lsls r0, r0, #4 + adds r0, r0, r7 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r1, _080AC734 + mov sl, r6 + mov sb, r3 + mov ip, r4 + mov r8, r2 + cmp r0, r1 + ble _080AC6F2 + adds r2, r1, #0 +_080AC6DA: + adds r0, r4, r5 + lsls r0, r0, #2 + ldr r6, _080AC730 + adds r0, r0, r6 + ldr r3, _080AC738 + ldrh r6, [r0, #0x30] + adds r1, r3, r6 + strh r1, [r0, #0x30] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, r2 + bgt _080AC6DA +_080AC6F2: + mov r0, ip + adds r4, r0, r5 + lsls r4, r4, #2 + add r4, sb + adds r0, r4, #0 + bl sub_080AC3AC + mov r3, r8 + adds r1, r3, r7 + adds r0, r4, #0 + bl sub_080AC5B0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AC720 + ldr r0, [r0] + add r0, sl + str r4, [r0] + b _080AC742 + .align 2, 0 +_080AC720: .4byte gUnknown_8526DE8 +_080AC724: .4byte 0x000006DA +_080AC728: .4byte gUnknown_852A8C8 +_080AC72C: .4byte gUnknown_852A82C +_080AC730: .4byte gUnknown_20205AC +_080AC734: .4byte 0x00000257 +_080AC738: .4byte 0xFFFFFDA8 +_080AC73C: + adds r1, r4, r6 + movs r0, #0 + str r0, [r1] +_080AC742: + ldr r0, _080AC778 + ldr r2, [r0] + ldr r6, _080AC77C + adds r1, r2, r6 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x18 + bne _080AC798 + movs r3, #0 + adds r1, r2, #0 + ldr r5, _080AC780 + ldr r4, _080AC784 +_080AC760: + lsls r0, r3, #2 + adds r0, r1, r0 + ldr r2, [r0] + cmp r2, #0 + beq _080AC78A + movs r6, #0x3a + ldrsh r0, [r2, r6] + cmp r0, #0 + bne _080AC788 + str r5, [r2, #0x1c] + b _080AC78A + .align 2, 0 +_080AC778: .4byte gUnknown_8526DE8 +_080AC77C: .4byte 0x000006DA +_080AC780: .4byte sub_080AC480 +_080AC784: .4byte sub_080AC584 +_080AC788: + str r4, [r2, #0x1c] +_080AC78A: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x17 + bls _080AC760 +_080AC794: + movs r0, #0 + b _080AC79A +_080AC798: + movs r0, #1 +_080AC79A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080AC674 + + thumb_func_start sub_080AC7A8 +sub_080AC7A8: @ 0x080AC7A8 + push {r4, r5, r6, r7, lr} + ldr r0, _080AC7C4 + ldr r3, [r0] + movs r0, #0xdb + lsls r0, r0, #3 + adds r4, r3, r0 + ldr r1, _080AC7C8 + adds r5, r3, r1 + ldrb r0, [r4] + ldrb r7, [r5] + cmp r0, r7 + bne _080AC7CC + movs r0, #0 + b _080AC82E + .align 2, 0 +_080AC7C4: .4byte gUnknown_8526DE8 +_080AC7C8: .4byte 0x000006D9 +_080AC7CC: + ldr r0, _080AC804 + adds r2, r3, r0 + ldrh r0, [r2] + adds r0, #1 + movs r6, #0 + strh r0, [r2] + ldr r7, _080AC808 + adds r1, r3, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + cmp r0, r1 + bls _080AC82C + strh r6, [r2] + ldrb r0, [r4] + adds r1, r0, #0 + ldrb r5, [r5] + cmp r1, r5 + bhs _080AC80C + adds r0, #1 + strb r0, [r4] + lsls r0, r1, #2 + adds r0, r3, r0 + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #0x38] + b _080AC82C + .align 2, 0 +_080AC804: .4byte 0x000006D6 +_080AC808: .4byte 0x000006DB +_080AC80C: + subs r0, #1 + strb r0, [r4] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r0, [r0] + strh r6, [r0, #0x38] + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r3, r0 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] +_080AC82C: + movs r0, #1 +_080AC82E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080AC7A8 + + thumb_func_start sub_080AC834 +sub_080AC834: @ 0x080AC834 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r0, _080AC87C + ldr r2, [r0] + ldr r3, _080AC880 + adds r1, r2, r3 + adds r7, r0, #0 + ldrb r1, [r1] + cmp r4, r1 + bhs _080AC866 + adds r5, r2, #0 + adds r6, r5, r3 +_080AC84C: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080AC85A + bl sub_08006E00 +_080AC85A: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r0, [r6] + cmp r4, r0 + blo _080AC84C +_080AC866: + ldr r0, [r7] + ldr r1, _080AC880 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, _080AC884 + bl sub_08008280 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AC87C: .4byte gUnknown_8526DE8 +_080AC880: .4byte 0x000006DA +_080AC884: .4byte 0x00001206 + thumb_func_end sub_080AC834 + + thumb_func_start sub_080AC888 +sub_080AC888: @ 0x080AC888 + push {r4, lr} + ldr r0, _080AC8C4 + ldr r1, [r0] + ldr r2, _080AC8C8 + adds r0, r1, r2 + movs r2, #0 + movs r3, #0 + strh r3, [r0] + ldr r4, _080AC8CC + adds r0, r1, r4 + strb r2, [r0] + ldr r0, _080AC8D0 + adds r2, r1, r0 + movs r0, #3 + strb r0, [r2] + subs r4, #0x10 + adds r2, r1, r4 + movs r0, #0x14 + strb r0, [r2] + ldr r0, _080AC8D4 + adds r2, r1, r0 + movs r0, #0x10 + strb r0, [r2] + movs r2, #0xdc + lsls r2, r2, #3 + adds r1, r1, r2 + strh r3, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AC8C4: .4byte gUnknown_8526DE8 +_080AC8C8: .4byte 0x000006CC +_080AC8CC: .4byte 0x000006D2 +_080AC8D0: .4byte 0x000006C1 +_080AC8D4: .4byte 0x000006E5 + thumb_func_end sub_080AC888 + + thumb_func_start sub_080AC8D8 +sub_080AC8D8: @ 0x080AC8D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_080AC888 + ldr r2, _080AC938 + ldr r1, [r2] + ldr r3, _080AC93C + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080AC92E + mov r8, r2 + adds r7, r1, r3 +_080AC8F4: + bl sub_080AC944 + movs r4, #0 + mov r1, r8 + ldr r0, [r1] + ldr r3, _080AC940 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r4, r0 + bhs _080AC928 + ldr r0, _080AC938 + ldr r5, [r0] + adds r6, r5, r3 +_080AC90E: + lsls r1, r4, #2 + adds r0, r5, #0 + adds r0, #0x60 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080ACC08 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r0, [r6] + cmp r4, r0 + blo _080AC90E +_080AC928: + ldrb r0, [r7] + cmp r0, #0 + beq _080AC8F4 +_080AC92E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AC938: .4byte gUnknown_8526DE8 +_080AC93C: .4byte 0x000006D2 +_080AC940: .4byte 0x000006E4 + thumb_func_end sub_080AC8D8 + + thumb_func_start sub_080AC944 +sub_080AC944: @ 0x080AC944 + push {r4, r5, lr} + ldr r0, _080AC974 + ldr r5, [r0] + ldr r0, _080AC978 + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, #0 + bne _080AC96C + bl sub_080AC9E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC96C + ldr r0, _080AC97C + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080AC96C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AC974: .4byte gUnknown_8526DE8 +_080AC978: .4byte 0x000006CC +_080AC97C: .4byte 0x000006D2 + thumb_func_end sub_080AC944 + + thumb_func_start sub_080AC980 +sub_080AC980: @ 0x080AC980 + push {r4, lr} + ldr r0, _080AC998 + ldr r2, [r0] + ldr r0, _080AC99C + adds r3, r2, r0 + ldrh r1, [r3] + cmp r1, #0 + beq _080AC9A0 + cmp r1, #1 + beq _080AC9B2 + movs r0, #0 + b _080AC9DE + .align 2, 0 +_080AC998: .4byte gUnknown_8526DE8 +_080AC99C: .4byte 0x000006CE +_080AC9A0: + ldr r4, _080AC9D0 + adds r0, r2, r4 + strb r1, [r0] + subs r4, #5 + adds r0, r2, r4 + strh r1, [r0] + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] +_080AC9B2: + bl sub_080AC9E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC9DC + ldr r0, _080AC9D4 + ldr r1, [r0] + ldr r0, _080AC9D8 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0 + b _080AC9DE + .align 2, 0 +_080AC9D0: .4byte 0x000006E5 +_080AC9D4: .4byte gUnknown_8526DE8 +_080AC9D8: .4byte 0x000006CE +_080AC9DC: + movs r0, #1 +_080AC9DE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080AC980 + + thumb_func_start sub_080AC9E4 +sub_080AC9E4: @ 0x080AC9E4 + push {r4, lr} + ldr r0, _080ACA00 + ldr r1, [r0] + ldr r0, _080ACA04 + adds r3, r1, r0 + ldr r4, _080ACA08 + adds r2, r1, r4 + ldrb r0, [r3] + ldrb r4, [r2] + cmp r0, r4 + bne _080ACA0C + movs r0, #0 + b _080ACA4E + .align 2, 0 +_080ACA00: .4byte gUnknown_8526DE8 +_080ACA04: .4byte 0x000006E4 +_080ACA08: .4byte 0x000006E5 +_080ACA0C: + movs r0, #0xdc + lsls r0, r0, #3 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x24 + bls _080ACA36 + movs r0, #0 + strh r0, [r1] + ldrb r0, [r3] + ldrb r2, [r2] + cmp r0, r2 + bhs _080ACA32 + bl sub_080ACA60 + b _080ACA36 +_080ACA32: + bl sub_080ACACC +_080ACA36: + ldr r0, _080ACA54 + ldr r0, [r0] + ldr r2, _080ACA58 + adds r1, r0, r2 + ldr r4, _080ACA5C + adds r0, r0, r4 + ldrb r1, [r1] + ldrb r0, [r0] + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_080ACA4E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080ACA54: .4byte gUnknown_8526DE8 +_080ACA58: .4byte 0x000006E4 +_080ACA5C: .4byte 0x000006E5 + thumb_func_end sub_080AC9E4 + + thumb_func_start sub_080ACA60 +sub_080ACA60: @ 0x080ACA60 + push {r4, r5, r6, lr} + ldr r0, _080ACAB4 + movs r1, #0 + movs r2, #0 + movs r3, #0x4e + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080ACAC4 + ldr r0, _080ACAB8 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, _080ACABC + ldr r5, [r0] + ldr r0, _080ACAC0 + adds r6, r5, r0 + ldrb r0, [r6] + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080ACB00 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + adds r1, r0, #1 + strb r1, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r5, #0x60 + adds r5, r5, r0 + str r4, [r5] + movs r0, #1 + b _080ACAC6 + .align 2, 0 +_080ACAB4: .4byte gUnknown_852A928 +_080ACAB8: .4byte gUnknown_20205AC +_080ACABC: .4byte gUnknown_8526DE8 +_080ACAC0: .4byte 0x000006E4 +_080ACAC4: + movs r0, #0 +_080ACAC6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080ACA60 + + thumb_func_start sub_080ACACC +sub_080ACACC: @ 0x080ACACC + push {lr} + ldr r0, _080ACAE0 + ldr r1, [r0] + ldr r0, _080ACAE4 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #0 + bne _080ACAE8 + movs r0, #0 + b _080ACAFC + .align 2, 0 +_080ACAE0: .4byte gUnknown_8526DE8 +_080ACAE4: .4byte 0x000006E4 +_080ACAE8: + subs r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r1, #0x60 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08006E00 + movs r0, #1 +_080ACAFC: + pop {r1} + bx r1 + thumb_func_end sub_080ACACC + + thumb_func_start sub_080ACB00 +sub_080ACB00: @ 0x080ACB00 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_0806F050 + movs r1, #0x36 + ldrsh r2, [r5, r1] + lsls r1, r2, #2 + adds r1, r1, r2 + movs r2, #7 + ands r1, r2 + lsls r4, r1, #4 + subs r4, r4, r1 + lsls r4, r4, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r1, _080ACBA4 + adds r0, r5, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r1] + adds r0, r0, r1 + movs r2, #3 + rsbs r2, r2, #0 + adds r1, r2, #0 + subs r1, r1, r0 + movs r7, #0 + strh r1, [r5, #0x22] + ldr r1, _080ACBA8 + adds r0, r5, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r1] + adds r0, r0, r1 + subs r4, r4, r0 + strh r4, [r5, #0x20] + movs r1, #0x22 + ldrsh r0, [r5, r1] + lsls r0, r0, #7 + strh r0, [r5, #0x2e] + strh r7, [r5, #0x24] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r6, r0, #0 + movs r4, #3 + ands r4, r6 + lsls r0, r4, #2 + adds r0, r0, r4 + adds r0, #0x40 + strh r0, [r5, #0x30] + strh r0, [r5, #0x3c] + movs r1, #1 + bics r1, r6 + adds r0, r5, #0 + bl sub_08007EC0 + strh r7, [r5, #0x34] + movs r0, #1 + cmp r4, #0 + bne _080ACB90 + movs r0, #2 +_080ACB90: + strh r0, [r5, #0x32] + movs r0, #0x1f + ands r0, r6 + adds r0, #0xd2 + strh r0, [r5, #0x3a] + strh r7, [r5, #0x38] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ACBA4: .4byte gUnknown_2021B3A +_080ACBA8: .4byte gUnknown_2021B38 + thumb_func_end sub_080ACB00 + + thumb_func_start sub_080ACBAC +sub_080ACBAC: @ 0x080ACBAC + push {r4, lr} + adds r3, r0, #0 + ldr r0, _080ACBF8 + ldr r0, [r0] + ldr r1, _080ACBFC + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #0x12 + bls _080ACBF2 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080ACC00 + str r0, [r3, #0x1c] + ldr r1, _080ACC04 + adds r0, r3, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r1] + adds r0, r0, r1 + movs r1, #0xfa + subs r1, r1, r0 + movs r2, #0 + strh r1, [r3, #0x22] + movs r1, #0x22 + ldrsh r0, [r3, r1] + lsls r0, r0, #7 + strh r0, [r3, #0x2e] + strh r2, [r4] +_080ACBF2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACBF8: .4byte gUnknown_8526DE8 +_080ACBFC: .4byte 0x000006E2 +_080ACC00: .4byte sub_080ACC08 +_080ACC04: .4byte gUnknown_2021B3A + thumb_func_end sub_080ACBAC + + thumb_func_start sub_080ACC08 +sub_080ACC08: @ 0x080ACC08 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x34] + adds r0, r0, r2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + ldr r1, _080ACC80 + movs r3, #0x34 + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080ACC3A + adds r0, #0x3f +_080ACC3A: + asrs r0, 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, r0, r5 + ldr r1, _080ACC84 + ldrh r1, [r1] + adds r3, r1, r0 + ldr r2, _080ACC88 + adds r0, r2, #0 + ands r3, r0 + adds r2, r3, #0 + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080ACC6C + ldr r3, _080ACC8C + adds r0, r3, #0 + orrs r2, r0 + lsls r0, r2, #0x10 + lsrs r3, r0, #0x10 +_080ACC6C: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + movs r2, #3 + rsbs r2, r2, #0 + cmp r0, r2 + bge _080ACC90 + adds r1, r1, r5 + movs r0, #0xf2 + subs r0, r0, r1 + b _080ACC98 + .align 2, 0 +_080ACC80: .4byte gUnknown_82FA8CC +_080ACC84: .4byte gUnknown_2021B38 +_080ACC88: .4byte 0x000001FF +_080ACC8C: .4byte 0xFFFFFF00 +_080ACC90: + cmp r0, #0xf2 + ble _080ACC9A + adds r0, r1, r5 + subs r0, r2, r0 +_080ACC98: + strh r0, [r4, #0x20] +_080ACC9A: + adds r0, r4, #0 + adds r0, #0x29 + movs r3, #0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, #0x22] + adds r0, r0, r3 + ldr r1, _080ACCD8 + ldrh r1, [r1] + adds r2, r1, r0 + movs r0, #0xff + ands r2, r0 + adds r0, r2, #0 + subs r0, #0xa4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bhi _080ACCDC + adds r1, r1, r3 + movs r0, #0xfa + subs r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x22] + movs r2, #0x22 + ldrsh r0, [r4, r2] + lsls r0, r0, #7 + strh r0, [r4, #0x2e] + strh r1, [r4, #0x38] + movs r0, #0xdc + strh r0, [r4, #0x3a] + b _080ACD08 + .align 2, 0 +_080ACCD8: .4byte gUnknown_2021B3A +_080ACCDC: + adds r0, r2, #0 + subs r0, #0xf3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bhi _080ACD08 + movs r1, #0 + movs r0, #0xa3 + strh r0, [r4, #0x22] + lsls r0, 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, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080ACD3C + str r0, [r4, #0x1c] +_080ACD08: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x3a + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _080ACD34 + adds r0, r4, #0 + bl sub_080ACB00 + movs r0, #0xfa + strh r0, [r4, #0x22] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080ACD3C + str r0, [r4, #0x1c] +_080ACD34: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACD3C: .4byte sub_080ACBAC + thumb_func_end sub_080ACC08 + + thumb_func_start sub_080ACD40 +sub_080ACD40: @ 0x080ACD40 + push {r4, r5, lr} + ldr r0, _080ACD98 + ldr r1, [r0] + ldr r2, _080ACD9C + adds r0, r1, r2 + movs r3, #0 + movs r2, #0 + strh r2, [r0] + ldr r5, _080ACDA0 + adds r4, r1, r5 + strb r3, [r4] + adds r5, #4 + adds r0, r1, r5 + strh r2, [r0] + ldr r0, _080ACDA4 + adds r2, r1, r0 + movs r0, #4 + strb r0, [r2] + ldr r2, _080ACDA8 + adds r0, r1, r2 + strb r3, [r0] + adds r5, #3 + adds r2, r1, r5 + movs r0, #0x10 + strb r0, [r2] + ldr r0, _080ACDAC + adds r2, r1, r0 + movs r0, #3 + strb r0, [r2] + subs r5, #0x17 + adds r2, r1, r5 + movs r0, #0x14 + strb r0, [r2] + strb r3, [r4] + ldr r0, _080ACDB0 + adds r1, r1, r0 + strb r3, [r1] + movs r0, #0x51 + bl sub_080ABC18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACD98: .4byte gUnknown_8526DE8 +_080ACD9C: .4byte 0x000006CC +_080ACDA0: .4byte 0x000006D2 +_080ACDA4: .4byte 0x000006DB +_080ACDA8: .4byte 0x000006DC +_080ACDAC: .4byte 0x000006C1 +_080ACDB0: .4byte 0x000006ED + thumb_func_end sub_080ACD40 + + thumb_func_start sub_080ACDB4 +sub_080ACDB4: @ 0x080ACDB4 + push {r4, lr} + bl sub_080ACD40 + ldr r0, _080ACDDC + ldr r1, [r0] + ldr r2, _080ACDE0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ACDD4 + adds r4, r1, r2 +_080ACDCA: + bl sub_080ACE80 + ldrb r0, [r4] + cmp r0, #0 + beq _080ACDCA +_080ACDD4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACDDC: .4byte gUnknown_8526DE8 +_080ACDE0: .4byte 0x000006D2 + thumb_func_end sub_080ACDB4 + + thumb_func_start sub_080ACDE4 +sub_080ACDE4: @ 0x080ACDE4 + push {r4, r5, lr} + ldr r0, _080ACE38 + ldr r1, [r0] + ldr r2, _080ACE3C + adds r0, r1, r2 + movs r4, #0 + movs r2, #0 + strh r2, [r0] + ldr r5, _080ACE40 + adds r3, r1, r5 + strb r4, [r3] + adds r5, #4 + adds r0, r1, r5 + strh r2, [r0] + ldr r0, _080ACE44 + adds r2, r1, r0 + movs r0, #4 + strb r0, [r2] + adds r5, #6 + adds r2, r1, r5 + movs r0, #1 + strb r0, [r2] + ldr r0, _080ACE48 + adds r2, r1, r0 + movs r0, #0x18 + strb r0, [r2] + subs r5, #0x1b + adds r2, r1, r5 + movs r0, #3 + strb r0, [r2] + ldr r0, _080ACE4C + adds r1, r1, r0 + movs r0, #0x14 + strb r0, [r1] + strb r4, [r3] + movs r0, #0x53 + bl sub_080ABC18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ACE38: .4byte gUnknown_8526DE8 +_080ACE3C: .4byte 0x000006CC +_080ACE40: .4byte 0x000006D2 +_080ACE44: .4byte 0x000006DB +_080ACE48: .4byte 0x000006D9 +_080ACE4C: .4byte 0x000006C2 + thumb_func_end sub_080ACDE4 + + thumb_func_start sub_080ACE50 +sub_080ACE50: @ 0x080ACE50 + push {r4, lr} + bl sub_080ACDE4 + ldr r0, _080ACE78 + ldr r1, [r0] + ldr r2, _080ACE7C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ACE70 + adds r4, r1, r2 +_080ACE66: + bl sub_080ACE80 + ldrb r0, [r4] + cmp r0, #0 + beq _080ACE66 +_080ACE70: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ACE78: .4byte gUnknown_8526DE8 +_080ACE7C: .4byte 0x000006D2 + thumb_func_end sub_080ACE50 + + thumb_func_start sub_080ACE80 +sub_080ACE80: @ 0x080ACE80 + push {r4, r5, lr} + bl sub_080AD2F4 + ldr r0, _080ACEA0 + ldr r0, [r0] + ldr r1, _080ACEA4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xe + bls _080ACE96 + b _080AD1F6 +_080ACE96: + lsls r0, r0, #2 + ldr r1, _080ACEA8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ACEA0: .4byte gUnknown_8526DE8 +_080ACEA4: .4byte 0x000006CC +_080ACEA8: .4byte _080ACEAC +_080ACEAC: @ jump table + .4byte _080ACEE8 @ case 0 + .4byte _080ACF04 @ case 1 + .4byte _080ACF28 @ case 2 + .4byte _080ACF58 @ case 3 + .4byte _080ACF7C @ case 4 + .4byte _080ACFAC @ case 5 + .4byte _080ACFDC @ case 6 + .4byte _080AD008 @ case 7 + .4byte _080AD026 @ case 8 + .4byte _080AD084 @ case 9 + .4byte _080AD108 @ case 10 + .4byte _080AD130 @ case 11 + .4byte _080AD160 @ case 12 + .4byte _080AD1A4 @ case 13 + .4byte _080AD1D8 @ case 14 +_080ACEE8: + bl sub_080AC664 + ldr r0, _080ACEFC + ldr r1, [r0] + ldr r2, _080ACF00 + adds r1, r1, r2 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080ACEFC: .4byte gUnknown_8526DE8 +_080ACF00: .4byte 0x000006CC +_080ACF04: + bl sub_080AC674 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ACF10 + b _080AD1F6 +_080ACF10: + ldr r0, _080ACF20 + ldr r1, [r0] + ldr r3, _080ACF24 + adds r1, r1, r3 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080ACF20: .4byte gUnknown_8526DE8 +_080ACF24: .4byte 0x000006CC +_080ACF28: + bl sub_080AC7A8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ACF34 + b _080AD1F6 +_080ACF34: + ldr r0, _080ACF4C + ldr r1, [r0] + ldr r0, _080ACF50 + adds r2, r1, r0 + movs r0, #1 + strb r0, [r2] + ldr r2, _080ACF54 + adds r1, r1, r2 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080ACF4C: .4byte gUnknown_8526DE8 +_080ACF50: .4byte 0x000006D2 +_080ACF54: .4byte 0x000006CC +_080ACF58: + ldr r0, _080ACF70 + ldr r1, [r0] + ldr r3, _080ACF74 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080ACF68 + b _080AD1F6 +_080ACF68: + ldr r0, _080ACF78 + adds r1, r1, r0 + movs r0, #6 + b _080AD1F4 + .align 2, 0 +_080ACF70: .4byte gUnknown_8526DE8 +_080ACF74: .4byte 0x000006C6 +_080ACF78: .4byte 0x000006CC +_080ACF7C: + ldr r0, _080ACFCC + ldr r4, [r0] + ldr r2, _080ACFD0 + adds r1, r4, r2 + movs r0, #1 + strb r0, [r1] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r5, #0xb4 + lsls r5, r5, #1 + adds r1, r5, #0 + bl __umodsi3 + adds r0, r0, r5 + ldr r3, _080ACFD4 + adds r1, r4, r3 + strh r0, [r1] + ldr r0, _080ACFD8 + adds r4, r4, r0 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080ACFAC: + ldr r0, _080ACFCC + ldr r2, [r0] + ldr r3, _080ACFD4 + adds r1, r2, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080ACFC2 + b _080AD1F6 +_080ACFC2: + ldr r0, _080ACFD8 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080ACFCC: .4byte gUnknown_8526DE8 +_080ACFD0: .4byte 0x000006EA +_080ACFD4: .4byte 0x000006E6 +_080ACFD8: .4byte 0x000006CC +_080ACFDC: + ldr r0, _080ACFFC + ldr r4, [r0] + ldr r1, _080AD000 + adds r0, r4, r1 + movs r5, #1 + strb r5, [r0] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ands r0, r5 + ldr r2, _080AD004 + adds r1, r4, r2 + strb r0, [r1] + b _080AD064 + .align 2, 0 +_080ACFFC: .4byte gUnknown_8526DE8 +_080AD000: .4byte 0x000006EA +_080AD004: .4byte 0x000006EB +_080AD008: + bl sub_0806F050 + ldr r1, _080AD070 + ldr r2, [r1] + movs r1, #1 + ands r1, r0 + adds r1, #1 + ldr r3, _080AD074 + adds r0, r2, r3 + strb r1, [r0] + ldr r0, _080AD078 + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] +_080AD026: + movs r0, #0x13 + bl sub_080AB544 + ldr r0, _080AD070 + ldr r1, [r0] + ldr r2, _080AD07C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD04A + ldr r3, _080AD074 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #1 + bne _080AD04A + movs r0, #0x14 + bl sub_080AD2B8 +_080AD04A: + bl sub_0806F050 + ldr r1, _080AD070 + ldr r4, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + adds r0, #6 + ldr r2, _080AD080 + adds r1, r4, r2 + strh r0, [r1] +_080AD064: + ldr r3, _080AD078 + adds r4, r4, r3 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AD1F6 + .align 2, 0 +_080AD070: .4byte gUnknown_8526DE8 +_080AD074: .4byte 0x000006EC +_080AD078: .4byte 0x000006CC +_080AD07C: .4byte 0x000006EB +_080AD080: .4byte 0x000006E6 +_080AD084: + ldr r0, _080AD0D0 + ldr r4, [r0] + ldr r0, _080AD0D4 + adds r5, r4, r0 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080AD09A + b _080AD1F6 +_080AD09A: + movs r0, #3 + bl sub_080AB544 + ldr r2, _080AD0D8 + adds r1, r4, r2 + movs r0, #1 + strb r0, [r1] + ldr r3, _080AD0DC + adds r1, r4, r3 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AD0E4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + adds r0, #0x3c + strh r0, [r5] + ldr r0, _080AD0E0 + adds r1, r4, r0 + movs r0, #0xa + b _080AD1F4 + .align 2, 0 +_080AD0D0: .4byte gUnknown_8526DE8 +_080AD0D4: .4byte 0x000006E6 +_080AD0D8: .4byte 0x000006EA +_080AD0DC: .4byte 0x000006EC +_080AD0E0: .4byte 0x000006CC +_080AD0E4: + ldr r1, _080AD0F4 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD0FC + ldr r2, _080AD0F8 + adds r1, r4, r2 + b _080AD1F2 + .align 2, 0 +_080AD0F4: .4byte 0x000006EB +_080AD0F8: .4byte 0x000006CC +_080AD0FC: + ldr r3, _080AD104 + adds r1, r4, r3 + movs r0, #0xb + b _080AD1F4 + .align 2, 0 +_080AD104: .4byte 0x000006CC +_080AD108: + ldr r0, _080AD124 + ldr r2, [r0] + ldr r0, _080AD128 + adds r1, r2, r0 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD1F6 + ldr r3, _080AD12C + adds r1, r2, r3 + movs r0, #8 + b _080AD1F4 + .align 2, 0 +_080AD124: .4byte gUnknown_8526DE8 +_080AD128: .4byte 0x000006E6 +_080AD12C: .4byte 0x000006CC +_080AD130: + bl sub_0806F050 + ldr r1, _080AD154 + ldr r2, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + adds r0, #0x3c + ldr r3, _080AD158 + adds r1, r2, r3 + strh r0, [r1] + ldr r0, _080AD15C + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _080AD1F6 + .align 2, 0 +_080AD154: .4byte gUnknown_8526DE8 +_080AD158: .4byte 0x000006E6 +_080AD15C: .4byte 0x000006CC +_080AD160: + ldr r0, _080AD198 + ldr r5, [r0] + ldr r1, _080AD19C + adds r4, r5, r1 + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD1F6 + movs r0, #0x64 + bl sub_080AD2B8 + movs r0, #0x13 + bl sub_080AB544 + bl sub_0806F050 + movs r1, #0xf + ands r1, r0 + adds r1, #0x1e + strh r1, [r4] + ldr r2, _080AD1A0 + adds r1, r5, r2 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080AD198: .4byte gUnknown_8526DE8 +_080AD19C: .4byte 0x000006E6 +_080AD1A0: .4byte 0x000006CC +_080AD1A4: + ldr r0, _080AD1CC + ldr r4, [r0] + ldr r3, _080AD1D0 + adds r1, r4, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD1F6 + movs r0, #0x13 + movs r1, #3 + movs r2, #5 + bl sub_080AB578 + ldr r0, _080AD1D4 + adds r1, r4, r0 + ldrh r0, [r1] + adds r0, #1 + b _080AD1F4 + .align 2, 0 +_080AD1CC: .4byte gUnknown_8526DE8 +_080AD1D0: .4byte 0x000006E6 +_080AD1D4: .4byte 0x000006CC +_080AD1D8: + ldr r0, _080AD1FC + ldr r2, [r0] + ldr r1, _080AD200 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _080AD1F6 + ldr r3, _080AD204 + adds r1, r2, r3 + movs r0, #1 + strb r0, [r1] + ldr r0, _080AD208 + adds r1, r2, r0 +_080AD1F2: + movs r0, #4 +_080AD1F4: + strh r0, [r1] +_080AD1F6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD1FC: .4byte gUnknown_8526DE8 +_080AD200: .4byte 0x000006C6 +_080AD204: .4byte 0x000006EA +_080AD208: .4byte 0x000006CC + thumb_func_end sub_080ACE80 + + thumb_func_start sub_080AD20C +sub_080AD20C: @ 0x080AD20C + push {r4, r5, r6, lr} + ldr r0, _080AD228 + ldr r6, [r0] + ldr r0, _080AD22C + adds r5, r6, r0 + ldrh r1, [r5] + cmp r1, #1 + beq _080AD242 + cmp r1, #1 + bgt _080AD230 + cmp r1, #0 + beq _080AD236 + b _080AD2A8 + .align 2, 0 +_080AD228: .4byte gUnknown_8526DE8 +_080AD22C: .4byte 0x000006CE +_080AD230: + cmp r1, #2 + beq _080AD28C + b _080AD2A8 +_080AD236: + ldr r2, _080AD27C + adds r0, r6, r2 + strb r1, [r0] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_080AD242: + bl sub_080ACE80 + ldr r0, _080AD280 + ldr r2, [r0] + ldr r1, _080AD27C + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080AD2B0 + subs r1, #0x19 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #3 + beq _080AD2A8 + cmp r0, #5 + beq _080AD2A8 + cmp r0, #0xd + beq _080AD2A8 + ldr r0, _080AD284 + adds r1, r2, r0 + movs r0, #0 + strb r0, [r1] + ldr r0, _080AD288 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080AD2B0 + .align 2, 0 +_080AD27C: .4byte 0x000006EA +_080AD280: .4byte gUnknown_8526DE8 +_080AD284: .4byte 0x000006D9 +_080AD288: .4byte 0x000006CE +_080AD28C: + bl sub_080AC7A8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080AD2B0 + bl sub_080AC834 + ldr r1, _080AD2AC + adds r0, r6, r1 + strb r4, [r0] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_080AD2A8: + movs r0, #0 + b _080AD2B2 + .align 2, 0 +_080AD2AC: .4byte 0x000006ED +_080AD2B0: + movs r0, #1 +_080AD2B2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080AD20C + + thumb_func_start sub_080AD2B8 +sub_080AD2B8: @ 0x080AD2B8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _080AD2EC + ldr r4, [r0] + ldr r0, _080AD2F0 + adds r5, r4, r0 + ldrb r0, [r5] + cmp r0, #0 + bne _080AD2E6 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __umodsi3 + movs r2, #0xdd + lsls r2, r2, #3 + adds r1, r4, r2 + strh r0, [r1] + movs r0, #1 + strb r0, [r5] +_080AD2E6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AD2EC: .4byte gUnknown_8526DE8 +_080AD2F0: .4byte 0x000006ED + thumb_func_end sub_080AD2B8 + + thumb_func_start sub_080AD2F4 +sub_080AD2F4: @ 0x080AD2F4 + push {r4, lr} + ldr r0, _080AD32C + ldr r1, [r0] + ldr r2, _080AD330 + adds r0, r1, r2 + ldrb r4, [r0] + cmp r4, #1 + bne _080AD354 + movs r0, #0xdd + lsls r0, r0, #3 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _080AD350 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AD354 + bl sub_0806F050 + ands r4, r0 + cmp r4, #0 + beq _080AD334 + movs r0, #0x57 + bl sub_080A306C + b _080AD33A + .align 2, 0 +_080AD32C: .4byte gUnknown_8526DE8 +_080AD330: .4byte 0x000006ED +_080AD334: + movs r0, #0x58 + bl sub_080A306C +_080AD33A: + ldr r0, _080AD348 + ldr r0, [r0] + ldr r1, _080AD34C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + b _080AD354 + .align 2, 0 +_080AD348: .4byte gUnknown_8526DE8 +_080AD34C: .4byte 0x000006ED +_080AD350: + subs r0, #1 + strh r0, [r1] +_080AD354: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AD2F4 + + thumb_func_start sub_080AD35C +sub_080AD35C: @ 0x080AD35C + push {lr} + ldr r0, _080AD3A8 + ldr r3, [r0] + ldr r0, _080AD3AC + adds r1, r3, r0 + movs r2, #0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080AD3B0 + adds r0, r3, r1 + strb r2, [r0] + subs r1, #0x11 + adds r0, r3, r1 + strb r2, [r0] + ldr r2, _080AD3B4 + adds r1, r3, r2 + movs r0, #0x14 + strb r0, [r1] + ldr r1, _080AD3B8 + adds r0, r3, r1 + ldrb r1, [r0] + cmp r1, #0 + bne _080AD3A4 + adds r2, #0x2e + adds r0, r3, r2 + strh r1, [r0] + adds r2, #2 + adds r0, r3, r2 + strh r1, [r0] + subs r2, #4 + adds r0, r3, r2 + strh r1, [r0] + movs r0, #0 + movs r1, #0x10 + bl sub_080ABA20 +_080AD3A4: + pop {r0} + bx r0 + .align 2, 0 +_080AD3A8: .4byte gUnknown_8526DE8 +_080AD3AC: .4byte 0x000006CC +_080AD3B0: .4byte 0x000006D2 +_080AD3B4: .4byte 0x000006C2 +_080AD3B8: .4byte 0x000006FB + thumb_func_end sub_080AD35C + + thumb_func_start sub_080AD3BC +sub_080AD3BC: @ 0x080AD3BC + push {r4, lr} + bl sub_080AD35C + ldr r0, _080AD3E4 + ldr r1, [r0] + ldr r2, _080AD3E8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD3DC + adds r4, r1, r2 +_080AD3D2: + bl sub_080AD3EC + ldrb r0, [r4] + cmp r0, #0 + beq _080AD3D2 +_080AD3DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD3E4: .4byte gUnknown_8526DE8 +_080AD3E8: .4byte 0x000006D2 + thumb_func_end sub_080AD3BC + + thumb_func_start sub_080AD3EC +sub_080AD3EC: @ 0x080AD3EC + push {r4, r5, r6, lr} + ldr r0, _080AD438 + ldr r6, [r0] + ldr r0, _080AD43C + ldr r1, _080AD440 + adds r2, r6, r1 + ldrh r0, [r0] + ldrh r1, [r2] + subs r0, r0, r1 + movs r1, #0xff + ands r0, r1 + ldr r3, _080AD444 + adds r1, r6, r3 + strh r0, [r1] + movs r0, #0xde + lsls r0, r0, #3 + adds r1, r6, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _080AD426 + movs r0, #0 + strh r0, [r1] + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] +_080AD426: + ldr r1, _080AD448 + adds r5, r6, r1 + ldrh r4, [r5] + cmp r4, #0 + beq _080AD44C + cmp r4, #1 + beq _080AD48C + b _080AD4A2 + .align 2, 0 +_080AD438: .4byte gUnknown_8526DE8 +_080AD43C: .4byte gUnknown_2021B38 +_080AD440: .4byte 0x000006F2 +_080AD444: .4byte 0x000006EE +_080AD448: .4byte 0x000006CC +_080AD44C: + bl sub_080AD5A8 + movs r3, #0xda + lsls r3, r3, #3 + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, #6 + bne _080AD468 + movs r0, #0xc + movs r1, #8 + movs r2, #3 + bl sub_080ABA60 + b _080AD472 +_080AD468: + movs r0, #4 + movs r1, #0x10 + movs r2, #0 + bl sub_080ABA60 +_080AD472: + ldr r0, _080AD484 + ldr r1, [r0] + ldr r0, _080AD488 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080AD4A2 + .align 2, 0 +_080AD484: .4byte gUnknown_8526DE8 +_080AD488: .4byte 0x000006CC +_080AD48C: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AD4A2 + ldr r1, _080AD4A8 + adds r0, r6, r1 + strb r4, [r0] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_080AD4A2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AD4A8: .4byte 0x000006D2 + thumb_func_end sub_080AD3EC + + thumb_func_start sub_080AD4AC +sub_080AD4AC: @ 0x080AD4AC + push {r4, lr} + ldr r0, _080AD4FC + ldr r2, [r0] + ldr r0, _080AD500 + ldr r1, _080AD504 + adds r3, r2, r1 + ldrh r0, [r0] + ldrh r1, [r3] + subs r0, r0, r1 + movs r1, #0xff + ands r0, r1 + ldr r4, _080AD508 + adds r1, r2, r4 + strh r0, [r1] + movs r0, #0xde + lsls r0, r0, #3 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _080AD4E6 + movs r0, #0 + strh r0, [r1] + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] +_080AD4E6: + ldr r1, _080AD50C + adds r4, r2, r1 + ldrh r0, [r4] + cmp r0, #1 + beq _080AD522 + cmp r0, #1 + bgt _080AD510 + cmp r0, #0 + beq _080AD516 + b _080AD53A + .align 2, 0 +_080AD4FC: .4byte gUnknown_8526DE8 +_080AD500: .4byte gUnknown_2021B38 +_080AD504: .4byte 0x000006F2 +_080AD508: .4byte 0x000006EE +_080AD50C: .4byte 0x000006CE +_080AD510: + cmp r0, #2 + beq _080AD52E + b _080AD53A +_080AD516: + movs r0, #0 + movs r1, #0x10 + movs r2, #3 + bl sub_080ABA60 + b _080AD532 +_080AD522: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AD53E + b _080AD532 +_080AD52E: + bl sub_080AD664 +_080AD532: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AD53E +_080AD53A: + movs r0, #0 + b _080AD540 +_080AD53E: + movs r0, #1 +_080AD540: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AD4AC + + thumb_func_start sub_080AD548 +sub_080AD548: @ 0x080AD548 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _080AD594 + ldrb r0, [r0] + strh r0, [r3, #0x26] + ldr r0, _080AD598 + ldr r0, [r0] + ldr r1, _080AD59C + adds r2, r0, r1 + ldrh r1, [r2] + adds r1, #0x20 + movs r4, #0x2e + ldrsh r0, [r3, r4] + lsls r0, r0, #6 + adds r1, r1, r0 + strh r1, [r3, #0x20] + lsls r1, r1, #0x10 + ldr r0, _080AD5A0 + cmp r1, r0 + ble _080AD58C + movs r0, #0xf0 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r2] + adds r1, r1, r2 + movs r4, #0x2e + ldrsh r2, [r3, r4] + movs r0, #4 + subs r0, r0, r2 + lsls r0, r0, #6 + subs r1, r1, r0 + ldr r0, _080AD5A4 + ands r1, r0 + strh r1, [r3, #0x20] +_080AD58C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD594: .4byte gUnknown_2021B3A +_080AD598: .4byte gUnknown_8526DE8 +_080AD59C: .4byte 0x000006EE +_080AD5A0: .4byte 0x010F0000 +_080AD5A4: .4byte 0x000001FF + thumb_func_end sub_080AD548 + + thumb_func_start sub_080AD5A8 +sub_080AD5A8: @ 0x080AD5A8 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _080AD61C + ldr r0, [r0] + ldr r1, _080AD620 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD652 + ldr r0, _080AD624 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + mov r0, sp + bl sub_08008210 + movs r5, #0 +_080AD5CC: + ldr r0, _080AD628 + movs r1, #0 + movs r2, #0 + movs r3, #0xff + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080AD630 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080AD62C + adds r4, r4, r0 + adds r0, r5, #0 + movs r1, #5 + bl __umodsi3 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xa + adds r0, #0x20 + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xa + adds r0, #0x20 + strh r0, [r4, #0x22] + ldr r2, _080AD61C + ldr r0, [r2] + lsls r1, r5, #2 + adds r0, #0xa0 + adds r0, r0, r1 + str r4, [r0] + b _080AD63E + .align 2, 0 +_080AD61C: .4byte gUnknown_8526DE8 +_080AD620: .4byte 0x000006FB +_080AD624: .4byte gUnknown_852A9CC +_080AD628: .4byte gUnknown_852A9B4 +_080AD62C: .4byte gUnknown_20205AC +_080AD630: + ldr r2, _080AD65C + ldr r1, [r2] + lsls r0, r5, #2 + adds r1, #0xa0 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_080AD63E: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x13 + bls _080AD5CC + ldr r0, [r2] + ldr r1, _080AD660 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080AD652: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD65C: .4byte gUnknown_8526DE8 +_080AD660: .4byte 0x000006FB + thumb_func_end sub_080AD5A8 + + thumb_func_start sub_080AD664 +sub_080AD664: @ 0x080AD664 + push {r4, r5, lr} + ldr r0, _080AD6AC + ldr r1, [r0] + ldr r2, _080AD6B0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080AD6A4 + movs r4, #0 + adds r5, r1, #0 + adds r5, #0xa0 +_080AD67A: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080AD688 + bl sub_08006E00 +_080AD688: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080AD67A + ldr r0, _080AD6B4 + bl sub_08008280 + ldr r0, _080AD6AC + ldr r0, [r0] + ldr r1, _080AD6B0 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080AD6A4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD6AC: .4byte gUnknown_8526DE8 +_080AD6B0: .4byte 0x000006FB +_080AD6B4: .4byte 0x00001201 + thumb_func_end sub_080AD664 + + thumb_func_start sub_080AD6B8 +sub_080AD6B8: @ 0x080AD6B8 + push {lr} + ldr r0, _080AD704 + ldr r1, [r0] + ldr r0, _080AD708 + adds r2, r1, r0 + movs r3, #0 + movs r0, #0 + strh r0, [r2] + ldr r2, _080AD70C + adds r0, r1, r2 + strb r3, [r0] + subs r2, #0x11 + adds r0, r1, r2 + strb r3, [r0] + ldr r3, _080AD710 + 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, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _080AD700 + movs r0, #0 + movs r1, #0x10 + bl sub_080ABA20 + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x52 + bl sub_08001144 +_080AD700: + pop {r0} + bx r0 + .align 2, 0 +_080AD704: .4byte gUnknown_8526DE8 +_080AD708: .4byte 0x000006CC +_080AD70C: .4byte 0x000006D2 +_080AD710: .4byte 0x000006C2 + thumb_func_end sub_080AD6B8 + + thumb_func_start sub_080AD714 +sub_080AD714: @ 0x080AD714 + push {r4, lr} + bl sub_080AD6B8 + ldr r0, _080AD73C + ldr r1, [r0] + ldr r2, _080AD740 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD734 + adds r4, r1, r2 +_080AD72A: + bl sub_080AD744 + ldrb r0, [r4] + cmp r0, #0 + beq _080AD72A +_080AD734: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD73C: .4byte gUnknown_8526DE8 +_080AD740: .4byte 0x000006D2 + thumb_func_end sub_080AD714 + + thumb_func_start sub_080AD744 +sub_080AD744: @ 0x080AD744 + push {r4, r5, lr} + ldr r2, _080AD788 + ldr r1, [r2] + ldr r0, _080AD78C + ldrh r0, [r0] + ldr r3, _080AD790 + ands r3, r0 + ldr r0, _080AD794 + adds r1, r1, r0 + strh r3, [r1] + cmp r3, #0xef + bls _080AD770 + adds r4, r1, #0 + adds r1, r3, #0 +_080AD760: + adds r3, r1, #0 + subs r3, #0xf0 + adds r1, r3, #0 + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xef + bhi _080AD760 + strh r3, [r4] +_080AD770: + ldr r5, [r2] + ldr r1, _080AD798 + adds r4, r5, r1 + ldrh r0, [r4] + cmp r0, #1 + beq _080AD7A8 + cmp r0, #1 + bgt _080AD79C + cmp r0, #0 + beq _080AD7A2 + b _080AD7E4 + .align 2, 0 +_080AD788: .4byte gUnknown_8526DE8 +_080AD78C: .4byte gUnknown_2021B38 +_080AD790: .4byte 0x000001FF +_080AD794: .4byte 0x000006FC +_080AD798: .4byte 0x000006CC +_080AD79C: + cmp r0, #2 + beq _080AD7C4 + b _080AD7E4 +_080AD7A2: + bl sub_080AD858 + b _080AD7D6 +_080AD7A8: + movs r1, #0xe0 + lsls r1, r1, #3 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD7B8 + bl sub_080AD868 +_080AD7B8: + movs r0, #0x10 + movs r1, #0 + movs r2, #1 + bl sub_080ABA60 + b _080AD7D6 +_080AD7C4: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AD7E8 + ldr r0, _080AD7E0 + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080AD7D6: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AD7E8 + .align 2, 0 +_080AD7E0: .4byte 0x000006D2 +_080AD7E4: + bl sub_080ABAA4 +_080AD7E8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AD744 + + thumb_func_start sub_080AD7F0 +sub_080AD7F0: @ 0x080AD7F0 + push {r4, lr} + ldr r0, _080AD80C + ldr r0, [r0] + ldr r1, _080AD810 + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #1 + beq _080AD826 + cmp r0, #1 + bgt _080AD814 + cmp r0, #0 + beq _080AD81A + b _080AD84A + .align 2, 0 +_080AD80C: .4byte gUnknown_8526DE8 +_080AD810: .4byte 0x000006CE +_080AD814: + cmp r0, #2 + beq _080AD83C + b _080AD84A +_080AD81A: + movs r0, #0 + movs r1, #0x10 + movs r2, #1 + bl sub_080ABA60 + b _080AD834 +_080AD826: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AD84E + bl sub_080AD910 +_080AD834: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AD84E +_080AD83C: + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080AD84A: + movs r0, #0 + b _080AD850 +_080AD84E: + movs r0, #1 +_080AD850: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AD7F0 + + thumb_func_start sub_080AD858 +sub_080AD858: @ 0x080AD858 + push {lr} + ldr r0, _080AD864 + bl sub_08008210 + pop {r0} + bx r0 + .align 2, 0 +_080AD864: .4byte gUnknown_852A9D4 + thumb_func_end sub_080AD858 + + thumb_func_start sub_080AD868 +sub_080AD868: @ 0x080AD868 + push {r4, r5, lr} + ldr r0, _080AD8D4 + ldr r0, [r0] + movs r1, #0xe0 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD904 + movs r5, #0 +_080AD87C: + ldr r0, _080AD8D8 + movs r1, #0 + movs r2, #0 + movs r3, #0x4e + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080AD8E0 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080AD8DC + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r0, r5, #0 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + adds r0, r5, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x34] + movs r1, #0x34 + ldrsh r0, [r4, r1] + lsls r0, r0, #6 + adds r0, #0x20 + strh r0, [r4, #0x2e] + ldr r2, _080AD8D4 + ldr r0, [r2] + lsls r1, r5, #2 + adds r0, #0xf0 + adds r0, r0, r1 + str r4, [r0] + b _080AD8EE + .align 2, 0 +_080AD8D4: .4byte gUnknown_8526DE8 +_080AD8D8: .4byte gUnknown_852A9F4 +_080AD8DC: .4byte gUnknown_20205AC +_080AD8E0: + ldr r2, _080AD90C + ldr r1, [r2] + lsls r0, r5, #2 + adds r1, #0xf0 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_080AD8EE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080AD87C + ldr r0, [r2] + movs r1, #0xe0 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080AD904: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD90C: .4byte gUnknown_8526DE8 + thumb_func_end sub_080AD868 + + thumb_func_start sub_080AD910 +sub_080AD910: @ 0x080AD910 + push {r4, r5, lr} + ldr r0, _080AD95C + ldr r1, [r0] + movs r2, #0xe0 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080AD954 + movs r4, #0 + adds r5, r1, #0 + adds r5, #0xf0 +_080AD928: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080AD936 + bl sub_08006E00 +_080AD936: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080AD928 + ldr r0, _080AD960 + bl sub_08008280 + ldr r0, _080AD95C + ldr r0, [r0] + movs r1, #0xe0 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080AD954: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AD95C: .4byte gUnknown_8526DE8 +_080AD960: .4byte 0x00001202 + thumb_func_end sub_080AD910 + + thumb_func_start sub_080AD964 +sub_080AD964: @ 0x080AD964 + push {r4, lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080AD980 + movs r0, #0 + strh r0, [r3, #0x30] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] +_080AD980: + ldr r1, _080AD9CC + ldrh r0, [r3, #0x2e] + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r3, #0x22] + ldr r0, _080AD9D0 + ldr r0, [r0] + ldr r1, _080AD9D4 + adds r2, r0, r1 + ldrh r1, [r2] + adds r1, #0x20 + movs r4, #0x32 + ldrsh r0, [r3, r4] + lsls r0, r0, #6 + adds r1, r1, r0 + strh r1, [r3, #0x20] + lsls r1, r1, #0x10 + ldr r0, _080AD9D8 + cmp r1, r0 + ble _080AD9C4 + movs r0, #0xf0 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r2] + adds r1, r1, r2 + movs r4, #0x32 + ldrsh r2, [r3, r4] + movs r0, #4 + subs r0, r0, r2 + lsls r0, r0, #6 + subs r1, r1, r0 + ldr r0, _080AD9DC + ands r1, r0 + strh r1, [r3, #0x20] +_080AD9C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AD9CC: .4byte gUnknown_2021B3A +_080AD9D0: .4byte gUnknown_8526DE8 +_080AD9D4: .4byte 0x000006FC +_080AD9D8: .4byte 0x010F0000 +_080AD9DC: .4byte 0x000001FF + thumb_func_end sub_080AD964 + + thumb_func_start sub_080AD9E0 +sub_080AD9E0: @ 0x080AD9E0 + push {r4, lr} + ldr r0, _080ADA50 + ldr r3, [r0] + ldr r1, _080ADA54 + adds r0, r3, r1 + movs r1, #0 + movs r2, #0 + strh r2, [r0] + ldr r4, _080ADA58 + adds r0, r3, r4 + strb r1, [r0] + subs r4, #0x11 + adds r0, r3, r4 + strb r1, [r0] + ldr r0, _080ADA5C + adds r1, r3, r0 + movs r0, #0x14 + strb r0, [r1] + movs r1, #0xde + lsls r1, r1, #3 + adds r0, r3, r1 + strh r2, [r0] + adds r4, #0x31 + adds r1, r3, r4 + movs r0, #1 + strh r0, [r1] + ldr r1, _080ADA60 + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, #0 + bne _080ADA4A + adds r4, #0x2a + adds r0, r3, r4 + strh r2, [r0] + subs r1, #6 + adds r0, r3, r1 + strh r2, [r0] + adds r4, #4 + adds r0, r3, r4 + strh r2, [r0] + adds r1, #4 + adds r0, r3, r1 + strh r2, [r0] + subs r4, #8 + adds r0, r3, r4 + strh r2, [r0] + subs r1, #8 + adds r0, r3, r1 + strh r2, [r0] + movs r0, #0 + movs r1, #0x10 + bl sub_080ABA20 +_080ADA4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADA50: .4byte gUnknown_8526DE8 +_080ADA54: .4byte 0x000006CC +_080ADA58: .4byte 0x000006D2 +_080ADA5C: .4byte 0x000006C2 +_080ADA60: .4byte 0x00000724 + thumb_func_end sub_080AD9E0 + + thumb_func_start sub_080ADA64 +sub_080ADA64: @ 0x080ADA64 + push {r4, lr} + bl sub_080AD9E0 + ldr r0, _080ADA8C + ldr r1, [r0] + ldr r2, _080ADA90 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ADA84 + adds r4, r1, r2 +_080ADA7A: + bl sub_080ADA94 + ldrb r0, [r4] + cmp r0, #0 + beq _080ADA7A +_080ADA84: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADA8C: .4byte gUnknown_8526DE8 +_080ADA90: .4byte 0x000006D2 + thumb_func_end sub_080ADA64 + + thumb_func_start sub_080ADA94 +sub_080ADA94: @ 0x080ADA94 + push {r4, r5, lr} + bl sub_080ADB58 + ldr r0, _080ADAB4 + ldr r5, [r0] + ldr r0, _080ADAB8 + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, #1 + beq _080ADAC8 + cmp r0, #1 + bgt _080ADABC + cmp r0, #0 + beq _080ADAC2 + b _080ADAEC + .align 2, 0 +_080ADAB4: .4byte gUnknown_8526DE8 +_080ADAB8: .4byte 0x000006CC +_080ADABC: + cmp r0, #2 + beq _080ADAD4 + b _080ADAEC +_080ADAC2: + bl sub_080ADBEC + b _080ADAE6 +_080ADAC8: + movs r0, #0xc + movs r1, #8 + movs r2, #8 + bl sub_080ABA60 + b _080ADAE6 +_080ADAD4: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ADAEC + ldr r0, _080ADAF4 + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080ADAE6: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080ADAEC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADAF4: .4byte 0x000006D2 + thumb_func_end sub_080ADA94 + + thumb_func_start sub_080ADAF8 +sub_080ADAF8: @ 0x080ADAF8 + push {r4, lr} + bl sub_080ADB58 + ldr r0, _080ADB18 + ldr r0, [r0] + ldr r1, _080ADB1C + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #1 + beq _080ADB32 + cmp r0, #1 + bgt _080ADB20 + cmp r0, #0 + beq _080ADB26 + b _080ADB4A + .align 2, 0 +_080ADB18: .4byte gUnknown_8526DE8 +_080ADB1C: .4byte 0x000006CE +_080ADB20: + cmp r0, #2 + beq _080ADB3E + b _080ADB4A +_080ADB26: + movs r0, #0 + movs r1, #0x10 + movs r2, #1 + bl sub_080ABA60 + b _080ADB42 +_080ADB32: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ADB4E + b _080ADB42 +_080ADB3E: + bl sub_080ADCA4 +_080ADB42: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080ADB4E +_080ADB4A: + movs r0, #0 + b _080ADB50 +_080ADB4E: + movs r0, #1 +_080ADB50: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ADAF8 + + thumb_func_start sub_080ADB58 +sub_080ADB58: @ 0x080ADB58 + push {r4, r5, lr} + ldr r0, _080ADBD0 + ldr r3, [r0] + ldr r0, _080ADBD4 + adds r2, r3, r0 + ldrh r0, [r2] + adds r0, #1 + movs r5, #0 + strh r0, [r2] + ldr r1, _080ADBD8 + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080ADB84 + movs r0, #0xe4 + lsls r0, r0, #3 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + strh r5, [r2] +_080ADB84: + ldr r1, _080ADBDC + adds r2, r3, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + ands r0, r4 + cmp r0, #4 + bls _080ADBA0 + ldr r0, _080ADBE0 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + strh r5, [r2] +_080ADBA0: + ldr r0, _080ADBE4 + movs r2, #0xe4 + lsls r2, r2, #3 + adds r1, r3, r2 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r0, r1 + movs r1, #0xff + ands r0, r1 + subs r2, #8 + adds r1, r3, r2 + strh r0, [r1] + ldr r1, _080ADBE8 + adds r2, #0xa + adds r0, r3, r2 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r0, r1 + subs r2, #8 + adds r1, r3, r2 + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADBD0: .4byte gUnknown_8526DE8 +_080ADBD4: .4byte 0x0000071C +_080ADBD8: .4byte 0x0000FFFF +_080ADBDC: .4byte 0x0000071E +_080ADBE0: .4byte 0x00000722 +_080ADBE4: .4byte gUnknown_2021B38 +_080ADBE8: .4byte gUnknown_2021B3A + thumb_func_end sub_080ADB58 + + thumb_func_start sub_080ADBEC +sub_080ADBEC: @ 0x080ADBEC + push {r4, r5, r6, lr} + sub sp, #8 + ldr r0, _080ADC58 + ldr r0, [r0] + ldr r1, _080ADC5C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080ADC92 + ldr r0, _080ADC60 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + mov r0, sp + bl sub_08008210 + movs r6, #0 +_080ADC10: + adds r0, r6, #0 + movs r1, #5 + bl __udivsi3 + adds r5, r0, #0 + lsls r2, r5, #0x16 + asrs r2, r2, #0x10 + ldr r0, _080ADC64 + movs r1, #0 + movs r3, #0xff + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080ADC6C + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080ADC68 + adds r4, r4, r0 + adds r0, r6, #0 + movs r1, #5 + bl __umodsi3 + strh r0, [r4, #0x2e] + strh r5, [r4, #0x30] + ldr r2, _080ADC58 + ldr r0, [r2] + lsls r1, r6, #2 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r0, r0, r3 + adds r0, r0, r1 + str r4, [r0] + b _080ADC7E + .align 2, 0 +_080ADC58: .4byte gUnknown_8526DE8 +_080ADC5C: .4byte 0x00000724 +_080ADC60: .4byte gUnknown_852AA0C +_080ADC64: .4byte gUnknown_852AA28 +_080ADC68: .4byte gUnknown_20205AC +_080ADC6C: + ldr r2, _080ADC9C + ldr r1, [r2] + lsls r0, r6, #2 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r1, r1, r3 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_080ADC7E: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x13 + bls _080ADC10 + ldr r0, [r2] + ldr r1, _080ADCA0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080ADC92: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080ADC9C: .4byte gUnknown_8526DE8 +_080ADCA0: .4byte 0x00000724 + thumb_func_end sub_080ADBEC + + thumb_func_start sub_080ADCA4 +sub_080ADCA4: @ 0x080ADCA4 + push {r4, r5, lr} + ldr r0, _080ADCEC + ldr r1, [r0] + ldr r2, _080ADCF0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080ADCE6 + movs r4, #0 + movs r0, #0xa0 + lsls r0, r0, #1 + adds r5, r1, r0 +_080ADCBC: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080ADCCA + bl sub_08006E00 +_080ADCCA: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080ADCBC + ldr r0, _080ADCF4 + bl sub_08008280 + ldr r0, _080ADCEC + ldr r0, [r0] + ldr r1, _080ADCF0 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080ADCE6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADCEC: .4byte gUnknown_8526DE8 +_080ADCF0: .4byte 0x00000724 +_080ADCF4: .4byte 0x00001203 + thumb_func_end sub_080ADCA4 + + thumb_func_start sub_080ADCF8 +sub_080ADCF8: @ 0x080ADCF8 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _080ADD48 + ldr r1, [r0] + ldr r2, _080ADD4C + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r3, #0x26] + movs r4, #0xe3 + lsls r4, r4, #3 + adds r2, r1, r4 + ldrh r1, [r2] + adds r1, #0x20 + movs r4, #0x2e + ldrsh r0, [r3, r4] + lsls r0, r0, #6 + adds r1, r1, r0 + strh r1, [r3, #0x20] + lsls r1, r1, #0x10 + ldr r0, _080ADD50 + cmp r1, r0 + ble _080ADD40 + movs r0, #0xf0 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r2] + adds r1, r1, r2 + movs r4, #0x2e + ldrsh r2, [r3, r4] + movs r0, #4 + subs r0, r0, r2 + lsls r0, r0, #6 + subs r1, r1, r0 + ldr r0, _080ADD54 + ands r1, r0 + strh r1, [r3, #0x20] +_080ADD40: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADD48: .4byte gUnknown_8526DE8 +_080ADD4C: .4byte 0x0000071A +_080ADD50: .4byte 0x010F0000 +_080ADD54: .4byte 0x000001FF + thumb_func_end sub_080ADCF8 + + thumb_func_start sub_080ADD58 +sub_080ADD58: @ 0x080ADD58 + push {r4, lr} + ldr r0, _080ADDBC + ldr r3, [r0] + ldr r0, _080ADDC0 + adds r1, r3, r0 + movs r2, #0 + movs r0, #0 + strh r0, [r1] + ldr r1, _080ADDC4 + adds r0, r3, r1 + strb r2, [r0] + ldr r4, _080ADDC8 + adds r0, r3, r4 + strb r2, [r0] + ldr r0, _080ADDCC + adds r1, r3, r0 + movs r0, #0x14 + strb r0, [r1] + ldr r1, _080ADDD0 + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, #0 + bne _080ADDB4 + adds r4, #0x43 + adds r1, r3, r4 + adds r4, #4 + adds r0, r3, r4 + str r2, [r0] + str r2, [r1] + ldr r0, _080ADDD4 + adds r1, r3, r0 + movs r0, #8 + strh r0, [r1] + adds r4, #0xc + adds r0, r3, r4 + strh r2, [r0] + ldrh r2, [r1] + cmp r2, #0x5f + bls _080ADDAC + movs r0, #0x80 + subs r0, r0, r2 + strh r0, [r1] +_080ADDAC: + movs r0, #0 + movs r1, #0x10 + bl sub_080ABA20 +_080ADDB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADDBC: .4byte gUnknown_8526DE8 +_080ADDC0: .4byte 0x000006CC +_080ADDC4: .4byte 0x000006D2 +_080ADDC8: .4byte 0x000006C1 +_080ADDCC: .4byte 0x000006C2 +_080ADDD0: .4byte 0x00000716 +_080ADDD4: .4byte 0x00000712 + thumb_func_end sub_080ADD58 + + thumb_func_start sub_080ADDD8 +sub_080ADDD8: @ 0x080ADDD8 + push {r4, lr} + bl sub_080ADD58 + ldr r0, _080ADE00 + ldr r1, [r0] + ldr r2, _080ADE04 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ADDF8 + adds r4, r1, r2 +_080ADDEE: + bl sub_080ADE08 + ldrb r0, [r4] + cmp r0, #0 + beq _080ADDEE +_080ADDF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ADE00: .4byte gUnknown_8526DE8 +_080ADE04: .4byte 0x000006D2 + thumb_func_end sub_080ADDD8 + + thumb_func_start sub_080ADE08 +sub_080ADE08: @ 0x080ADE08 + push {r4, r5, lr} + bl sub_080ADF20 + bl sub_080ADEE8 + ldr r0, _080ADE38 + ldr r5, [r0] + ldr r0, _080ADE3C + adds r1, r5, r0 + ldrh r0, [r1] + cmp r0, #0x5f + bls _080ADE24 + movs r0, #0x20 + strh r0, [r1] +_080ADE24: + ldr r0, _080ADE40 + adds r4, r5, r0 + ldrh r0, [r4] + cmp r0, #1 + beq _080ADE54 + cmp r0, #1 + bgt _080ADE44 + cmp r0, #0 + beq _080ADE4A + b _080ADE78 + .align 2, 0 +_080ADE38: .4byte gUnknown_8526DE8 +_080ADE3C: .4byte 0x00000712 +_080ADE40: .4byte 0x000006CC +_080ADE44: + cmp r0, #2 + beq _080ADE60 + b _080ADE78 +_080ADE4A: + bl sub_080AE034 + bl sub_080AE0F4 + b _080ADE72 +_080ADE54: + movs r0, #0x10 + movs r1, #0 + movs r2, #0 + bl sub_080ABA60 + b _080ADE72 +_080ADE60: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ADE78 + ldr r0, _080ADE80 + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080ADE72: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080ADE78: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ADE80: .4byte 0x000006D2 + thumb_func_end sub_080ADE08 + + thumb_func_start sub_080ADE84 +sub_080ADE84: @ 0x080ADE84 + push {r4, lr} + bl sub_080ADF20 + bl sub_080ADEE8 + ldr r0, _080ADEA8 + ldr r0, [r0] + ldr r1, _080ADEAC + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #1 + beq _080ADEC2 + cmp r0, #1 + bgt _080ADEB0 + cmp r0, #0 + beq _080ADEB6 + b _080ADEDA + .align 2, 0 +_080ADEA8: .4byte gUnknown_8526DE8 +_080ADEAC: .4byte 0x000006CE +_080ADEB0: + cmp r0, #2 + beq _080ADECE + b _080ADEDA +_080ADEB6: + movs r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080ABA60 + b _080ADED2 +_080ADEC2: + bl sub_080ABAA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ADEDE + b _080ADED2 +_080ADECE: + bl sub_080ADFA0 +_080ADED2: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080ADEDE +_080ADEDA: + movs r0, #0 + b _080ADEE0 +_080ADEDE: + movs r0, #1 +_080ADEE0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ADE84 + + thumb_func_start sub_080ADEE8 +sub_080ADEE8: @ 0x080ADEE8 + push {lr} + ldr r0, _080ADF14 + ldr r2, [r0] + ldr r0, _080ADF18 + adds r3, r2, r0 + ldrh r0, [r3] + adds r1, r0, #1 + strh r1, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bls _080ADF0E + ldr r1, _080ADF1C + adds r0, r2, r1 + ldrh r1, [r0] + adds r1, #1 + movs r2, #0 + strh r1, [r0] + strh r2, [r3] +_080ADF0E: + pop {r0} + bx r0 + .align 2, 0 +_080ADF14: .4byte gUnknown_8526DE8 +_080ADF18: .4byte 0x00000714 +_080ADF1C: .4byte 0x00000712 + thumb_func_end sub_080ADEE8 + + thumb_func_start sub_080ADF20 +sub_080ADF20: @ 0x080ADF20 + push {r4, r5, r6, lr} + ldr r0, _080ADF84 + ldr r2, [r0] + ldr r0, _080ADF88 + adds r4, r2, r0 + ldr r6, _080ADF8C + ldr r1, _080ADF90 + adds r5, r2, r1 + ldrh r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r6 + movs r3, #0 + ldrsh r1, [r0, r3] + lsls r1, r1, #2 + ldr r0, [r4] + subs r0, r0, r1 + str r0, [r4] + movs r0, #0xe1 + lsls r0, r0, #3 + adds r3, r2, r0 + ldrh r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r6 + movs r5, #0 + ldrsh r1, [r0, r5] + ldr r0, [r3] + subs r0, r0, r1 + str r0, [r3] + ldr r1, _080ADF94 + ldr r0, [r4] + lsrs r0, r0, #8 + ldrh r1, [r1] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + ldr r4, _080ADF98 + adds r1, r2, r4 + strh r0, [r1] + ldr r1, _080ADF9C + ldr r0, [r3] + lsrs r0, r0, #8 + ldrh r1, [r1] + adds r0, r0, r1 + movs r5, #0xe2 + lsls r5, r5, #3 + adds r2, r2, r5 + strh r0, [r2] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080ADF84: .4byte gUnknown_8526DE8 +_080ADF88: .4byte 0x00000704 +_080ADF8C: .4byte gUnknown_82FA8CC +_080ADF90: .4byte 0x00000712 +_080ADF94: .4byte gUnknown_2021B38 +_080ADF98: .4byte 0x0000070E +_080ADF9C: .4byte gUnknown_2021B3A + thumb_func_end sub_080ADF20 + + thumb_func_start sub_080ADFA0 +sub_080ADFA0: @ 0x080ADFA0 + push {r4, r5, lr} + ldr r0, _080AE024 + ldr r1, [r0] + ldr r2, _080AE028 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080ADFE2 + movs r4, #0 + movs r0, #0xc8 + lsls r0, r0, #1 + adds r5, r1, r0 +_080ADFB8: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080ADFC6 + bl sub_08006E00 +_080ADFC6: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080ADFB8 + ldr r0, _080AE024 + ldr r0, [r0] + ldr r1, _080AE028 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, _080AE02C + bl sub_08008280 +_080ADFE2: + ldr r0, _080AE024 + ldr r1, [r0] + ldr r2, _080AE030 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080AE01C + movs r4, #0 + movs r0, #0xf0 + lsls r0, r0, #1 + adds r5, r1, r0 +_080ADFF8: + lsls r0, r4, #2 + adds r0, r5, r0 + ldr r0, [r0] + cmp r0, #0 + beq _080AE006 + bl sub_08006E00 +_080AE006: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _080ADFF8 + ldr r0, _080AE024 + ldr r0, [r0] + ldr r1, _080AE030 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080AE01C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE024: .4byte gUnknown_8526DE8 +_080AE028: .4byte 0x00000716 +_080AE02C: .4byte 0x00001204 +_080AE030: .4byte 0x00000717 + thumb_func_end sub_080ADFA0 + + thumb_func_start sub_080AE034 +sub_080AE034: @ 0x080AE034 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _080AE0A4 + ldr r0, [r0] + ldr r1, _080AE0A8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AE0E2 + ldr r0, _080AE0AC + bl sub_08008210 + ldr r0, _080AE0B0 + bl sub_080AB848 + movs r7, #0 +_080AE054: + adds r0, r7, #0 + movs r1, #5 + bl __udivsi3 + adds r6, r0, #0 + lsls r2, r6, #0x16 + asrs r2, r2, #0x10 + ldr r0, _080AE0B4 + movs r1, #0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080AE0BC + ldr r2, _080AE0A4 + ldr r5, [r2] + lsls r0, r7, #2 + movs r3, #0xc8 + lsls r3, r3, #1 + adds r5, r5, r3 + adds r5, r5, r0 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + ldr r0, _080AE0B8 + adds r4, r4, r0 + str r4, [r5] + adds r0, r7, #0 + movs r1, #5 + str r2, [sp] + bl __umodsi3 + strh r0, [r4, #0x2e] + ldr r0, [r5] + strh r6, [r0, #0x30] + ldr r2, [sp] + b _080AE0CE + .align 2, 0 +_080AE0A4: .4byte gUnknown_8526DE8 +_080AE0A8: .4byte 0x00000716 +_080AE0AC: .4byte gUnknown_852AA78 +_080AE0B0: .4byte gUnknown_8526F4C +_080AE0B4: .4byte gUnknown_852AA60 +_080AE0B8: .4byte gUnknown_20205AC +_080AE0BC: + ldr r2, _080AE0EC + ldr r1, [r2] + lsls r0, r7, #2 + movs r3, #0xc8 + lsls r3, r3, #1 + adds r1, r1, r3 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_080AE0CE: + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0x13 + bls _080AE054 + ldr r0, [r2] + ldr r1, _080AE0F0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080AE0E2: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE0EC: .4byte gUnknown_8526DE8 +_080AE0F0: .4byte 0x00000716 + thumb_func_end sub_080AE034 + + thumb_func_start sub_080AE0F4 +sub_080AE0F4: @ 0x080AE0F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _080AE19C + ldr r0, [r4] + ldr r1, _080AE1A0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080AE1E0 + movs r7, #0 + mov sb, r4 + movs r2, #0 + mov sl, r2 +_080AE114: + lsls r0, r7, #1 + mov r8, r0 + adds r6, r0, r7 + lsls r5, r6, #4 + adds r1, r5, #0 + adds r1, #0x18 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _080AE1A4 + movs r2, #0xd0 + movs r3, #1 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080AE1B8 + mov r2, sb + ldr r4, [r2] + lsls r0, r7, #2 + movs r2, #0xf0 + lsls r2, r2, #1 + adds r4, r4, r2 + adds r4, r4, r0 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + ldr r0, _080AE1A8 + adds r2, r2, r0 + str r2, [r4] + ldrb r1, [r2, #3] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #3] + ldr r1, [r4] + adds r0, r6, r5 + strh r0, [r1, #0x30] + ldr r1, [r4] + movs r0, #8 + strh r0, [r1, #0x2e] + ldr r0, [r4] + mov r1, sl + strh r1, [r0, #0x32] + ldr r1, [r4] + ldr r0, _080AE1AC + strh r0, [r1, #0x36] + ldr r1, [r4] + ldr r0, _080AE1B0 + add r0, r8 + ldrh r0, [r0] + strh r0, [r1, #0x34] + ldr r0, [r4] + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r4] + movs r1, #0 + movs r2, #2 + movs r3, #0 + bl sub_08006F70 + ldr r1, [r4] + ldr r0, _080AE1B4 + str r0, [r1, #0x1c] + b _080AE1CA + .align 2, 0 +_080AE19C: .4byte gUnknown_8526DE8 +_080AE1A0: .4byte 0x00000717 +_080AE1A4: .4byte gUnknown_852AA60 +_080AE1A8: .4byte gUnknown_20205AC +_080AE1AC: .4byte 0x00006730 +_080AE1B0: .4byte gUnknown_852AA80 +_080AE1B4: .4byte sub_080AE254 +_080AE1B8: + mov r2, sb + ldr r0, [r2] + lsls r1, r7, #2 + movs r2, #0xf0 + lsls r2, r2, #1 + adds r0, r0, r2 + adds r0, r0, r1 + mov r1, sl + str r1, [r0] +_080AE1CA: + mov r2, sb + ldr r0, [r2] + ldr r1, _080AE1F0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #4 + bls _080AE114 +_080AE1E0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE1F0: .4byte 0x00000717 + thumb_func_end sub_080AE0F4 + + thumb_func_start sub_080AE1F4 +sub_080AE1F4: @ 0x080AE1F4 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _080AE244 + ldr r1, [r0] + movs r2, #0xe2 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r3, #0x26] + ldr r4, _080AE248 + adds r2, r1, r4 + ldrh r1, [r2] + adds r1, #0x20 + movs r4, #0x2e + ldrsh r0, [r3, r4] + lsls r0, r0, #6 + adds r1, r1, r0 + strh r1, [r3, #0x20] + lsls r1, r1, #0x10 + ldr r0, _080AE24C + cmp r1, r0 + ble _080AE23C + movs r0, #0xf0 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r2] + adds r1, r1, r2 + movs r4, #0x2e + ldrsh r2, [r3, r4] + movs r0, #4 + subs r0, r0, r2 + lsls r0, r0, #6 + subs r1, r1, r0 + ldr r0, _080AE250 + ands r1, r0 + strh r1, [r3, #0x20] +_080AE23C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE244: .4byte gUnknown_8526DE8 +_080AE248: .4byte 0x0000070E +_080AE24C: .4byte 0x010F0000 +_080AE250: .4byte 0x000001FF + thumb_func_end sub_080AE1F4 + + thumb_func_start sub_080AE254 +sub_080AE254: @ 0x080AE254 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x34] + subs r0, #1 + strh r0, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080AE26E + ldr r0, _080AE274 + str r0, [r2, #0x1c] +_080AE26E: + pop {r0} + bx r0 + .align 2, 0 +_080AE274: .4byte sub_080AE278 + thumb_func_end sub_080AE254 + + thumb_func_start sub_080AE278 +sub_080AE278: @ 0x080AE278 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x22] + subs r0, #1 + strh r0, [r5, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x30 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080AE296 + movs r0, #0xd0 + strh r0, [r5, #0x22] + movs r0, #4 + strh r0, [r5, #0x2e] +_080AE296: + movs r0, #0x2e + ldrsh r4, [r5, r0] + ldr r3, _080AE2E8 + movs r2, #0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r2, r4, #0 + muls r2, r0, r2 + adds r1, #0x40 + lsls r1, r1, #1 + adds r1, r1, r3 + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r4, r0 + lsrs r2, r2, #8 + strh r2, [r5, #0x24] + lsrs r0, 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, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _080AE2E2 + movs r0, #0 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_080AE2E2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE2E8: .4byte gUnknown_82FA8CC + thumb_func_end sub_080AE278 + + thumb_func_start sub_080AE2EC +sub_080AE2EC: @ 0x080AE2EC + ldr r0, _080AE30C + ldr r1, [r0] + ldr r0, _080AE310 + adds r2, r1, r0 + movs r0, #0 + strh r0, [r2] + ldr r0, _080AE314 + adds r2, r1, r0 + movs r0, #3 + strb r0, [r2] + ldr r0, _080AE318 + adds r1, r1, r0 + movs r0, #0x14 + strb r0, [r1] + bx lr + .align 2, 0 +_080AE30C: .4byte gUnknown_8526DE8 +_080AE310: .4byte 0x000006CC +_080AE314: .4byte 0x000006C1 +_080AE318: .4byte 0x000006C2 + thumb_func_end sub_080AE2EC + + thumb_func_start sub_080AE31C +sub_080AE31C: @ 0x080AE31C + push {lr} + bl sub_080AE2EC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE31C + + thumb_func_start sub_080AE328 +sub_080AE328: @ 0x080AE328 + bx lr + .align 2, 0 + thumb_func_end sub_080AE328 + + thumb_func_start sub_080AE32C +sub_080AE32C: @ 0x080AE32C + movs r0, #0 + bx lr + thumb_func_end sub_080AE32C + + thumb_func_start sub_080AE330 +sub_080AE330: @ 0x080AE330 + push {r4, r5, lr} + bl sub_080AD35C + ldr r0, _080AE370 + ldr r4, [r0] + ldr r1, _080AE374 + adds r0, r4, r1 + ldrb r5, [r0] + cmp r5, #0 + bne _080AE368 + ldr r0, _080AE378 + bl sub_08008210 + movs r2, #0xe5 + lsls r2, r2, #3 + adds r0, r4, r2 + strh r5, [r0] + ldr r0, _080AE37C + ldrb r1, [r0] + subs r2, #2 + adds r0, r4, r2 + strh r1, [r0] + ldr r1, _080AE380 + adds r0, r4, r1 + strh r5, [r0] + adds r2, #6 + adds r0, r4, r2 + strh r5, [r0] +_080AE368: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE370: .4byte gUnknown_8526DE8 +_080AE374: .4byte 0x0000072E +_080AE378: .4byte gUnknown_852AA94 +_080AE37C: .4byte gUnknown_852AA8C +_080AE380: .4byte 0x0000072A + thumb_func_end sub_080AE330 + + thumb_func_start sub_080AE384 +sub_080AE384: @ 0x080AE384 + push {r4, lr} + bl sub_080AE330 + ldr r0, _080AE3AC + ldr r1, [r0] + ldr r2, _080AE3B0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080AE3A4 + adds r4, r1, r2 +_080AE39A: + bl sub_080AE3B4 + ldrb r0, [r4] + cmp r0, #0 + beq _080AE39A +_080AE3A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE3AC: .4byte gUnknown_8526DE8 +_080AE3B0: .4byte 0x000006D2 + thumb_func_end sub_080AE384 + + thumb_func_start sub_080AE3B4 +sub_080AE3B4: @ 0x080AE3B4 + push {r4, r5, r6, r7, lr} + bl sub_080AD3EC + ldr r0, _080AE414 + ldr r5, [r0] + ldr r0, _080AE418 + adds r4, r5, r0 + ldrh r0, [r4] + adds r0, #1 + movs r6, #0 + strh r0, [r4] + ldr r1, _080AE41C + adds r7, r1, #0 + ldr r2, _080AE420 + movs r1, #0xe5 + lsls r1, r1, #3 + adds r3, r5, r1 + ldrh r1, [r3] + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + cmp r0, r1 + bls _080AE40C + strh r6, [r4] + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + ands r0, r7 + cmp r0, #7 + bls _080AE3F4 + strh r6, [r3] +_080AE3F4: + ldr r0, _080AE424 + adds r4, r5, r0 + ldrh r0, [r4] + bl sub_080AE444 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ands r0, r7 + cmp r0, #0xc + bls _080AE40C + strh r6, [r4] +_080AE40C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080AE414: .4byte gUnknown_8526DE8 +_080AE418: .4byte 0x00000726 +_080AE41C: .4byte 0x0000FFFF +_080AE420: .4byte gUnknown_852AA8C +_080AE424: .4byte 0x0000072A + thumb_func_end sub_080AE3B4 + + thumb_func_start sub_080AE428 +sub_080AE428: @ 0x080AE428 + push {lr} + bl sub_080AD4AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AE438 + movs r0, #1 + b _080AE43E +_080AE438: + bl sub_080AE4CC + movs r0, #0 +_080AE43E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AE428 + + thumb_func_start sub_080AE444 +sub_080AE444: @ 0x080AE444 + push {r4, lr} + lsls r0, r0, #0x10 + ldr r1, _080AE4B4 + lsrs r0, r0, #0xe + adds r3, r0, r1 + adds r1, #2 + adds r0, r0, r1 + ldr r1, _080AE4B8 + ldrh r2, [r0] + ldrh r0, [r1] + subs r2, r2, r0 + ldr r0, _080AE4BC + movs r4, #0 + ldrsh r1, [r3, r4] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _080AE4AC + ldr r0, _080AE4C0 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #5] + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #2 + orrs r0, r2 + strb r0, [r3] + movs r0, #0 + strh r0, [r1, #0x2e] + strh r0, [r1, #0x30] + strh r0, [r1, #0x32] + ldr r0, _080AE4C4 + ldr r1, [r0] + ldr r0, _080AE4C8 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080AE4AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE4B4: .4byte gUnknown_852AA9C +_080AE4B8: .4byte gUnknown_2021B3A +_080AE4BC: .4byte gUnknown_852AAE0 +_080AE4C0: .4byte gUnknown_20205AC +_080AE4C4: .4byte gUnknown_8526DE8 +_080AE4C8: .4byte 0x0000072C + thumb_func_end sub_080AE444 + + thumb_func_start sub_080AE4CC +sub_080AE4CC: @ 0x080AE4CC + push {r4, r5, lr} + ldr r0, _080AE51C + ldr r0, [r0] + ldr r1, _080AE520 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080AE516 + movs r4, #0 + ldr r5, _080AE524 +_080AE4E0: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r2, r0, #2 + adds r0, r5, #0 + adds r0, #0x14 + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _080AE528 + cmp r1, r0 + bne _080AE4FA + adds r0, r2, r5 + bl sub_08006E00 +_080AE4FA: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x3f + bls _080AE4E0 + ldr r0, _080AE52C + bl sub_08008280 + ldr r0, _080AE51C + ldr r0, [r0] + ldr r1, _080AE520 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] +_080AE516: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE51C: .4byte gUnknown_8526DE8 +_080AE520: .4byte 0x0000072C +_080AE524: .4byte gUnknown_20205AC +_080AE528: .4byte gUnknown_852AAE0 +_080AE52C: .4byte 0x00001205 + thumb_func_end sub_080AE4CC + + thumb_func_start sub_080AE530 +sub_080AE530: @ 0x080AE530 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + movs r2, #0 + adds r0, #2 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _080AE570 + strh r2, [r1, #0x2e] + movs r3, #0x30 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _080AE562 + ldrh r0, [r1, #0x24] + adds r0, #1 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _080AE570 + movs r0, #1 + strh r0, [r1, #0x30] + b _080AE570 +_080AE562: + ldrh r0, [r1, #0x24] + subs r0, #1 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080AE570 + strh r2, [r1, #0x30] +_080AE570: + ldrh r0, [r1, #0x22] + subs r0, #3 + strh r0, [r1, #0x22] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x77 + ble _080AE58A + adds r0, r1, #0 + bl sub_08006E00 +_080AE58A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE530 + + thumb_func_start sub_080AE590 +sub_080AE590: @ 0x080AE590 + ldr r2, _080AE59C + strb r0, [r2] + ldr r0, _080AE5A0 + strh r1, [r0] + bx lr + .align 2, 0 +_080AE59C: .4byte gUnknown_2038864 +_080AE5A0: .4byte gUnknown_2038866 + thumb_func_end sub_080AE590 + + thumb_func_start sub_080AE5A4 +sub_080AE5A4: @ 0x080AE5A4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080AE5C4 + adds r4, r1, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080AE5C8 + cmp r0, #1 + beq _080AE5F4 + b _080AE618 + .align 2, 0 +_080AE5C4: .4byte gUnknown_3005B68 +_080AE5C8: + ldrh r0, [r4, #0x1e] + subs r1, r0, #1 + strh r1, [r4, #0x1e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080AE618 + ldrb r0, [r4, #2] + bl sub_080AA994 + ldr r1, _080AE5F0 + ldrh r0, [r4, #2] + strb r0, [r1] + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r1, #0 + strh r0, [r4, #0x1e] + ldrh r0, [r4] + adds r0, #1 + b _080AE616 + .align 2, 0 +_080AE5F0: .4byte gUnknown_2038864 +_080AE5F4: + ldrh r0, [r4, #0x1e] + subs r1, r0, #1 + strh r1, [r4, #0x1e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080AE618 + ldrb r0, [r4, #4] + bl sub_080AA994 + ldr r1, _080AE620 + ldrh r0, [r4, #4] + strb r0, [r1] + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r1, #0 + strh r0, [r4, #0x1e] + movs r0, #0 +_080AE616: + strh r0, [r4] +_080AE618: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AE620: .4byte gUnknown_2038864 + thumb_func_end sub_080AE5A4 + + thumb_func_start sub_080AE624 +sub_080AE624: @ 0x080AE624 + push {lr} + ldr r0, _080AE650 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080AE654 + adds r1, r1, r0 + movs r2, #0x96 + lsls r2, r2, #2 + adds r0, r2, #0 + strh r0, [r1, #0x1e] + ldr r3, _080AE658 + ldrb r2, [r3] + cmp r2, #0xd + bne _080AE65C + movs r0, #0xc + b _080AE662 + .align 2, 0 +_080AE650: .4byte sub_080AE5A4 +_080AE654: .4byte gUnknown_3005B68 +_080AE658: .4byte gUnknown_2038864 +_080AE65C: + cmp r2, #0xc + bne _080AE668 + movs r0, #0xd +_080AE662: + strh r0, [r1, #2] + strh r2, [r1, #4] + b _080AE674 +_080AE668: + movs r0, #0xd + strb r0, [r3] + movs r0, #0xc + strh r0, [r1, #2] + movs r0, #0xd + strh r0, [r1, #4] +_080AE674: + pop {r0} + bx r0 + thumb_func_end sub_080AE624 + + thumb_func_start sub_080AE678 +sub_080AE678: @ 0x080AE678 + push {r4, r5, lr} + ldr r4, _080AE6A4 + ldr r1, [r4] + adds r1, #0x2e + ldrb r5, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AE7E4 + ldr r1, [r4] + adds r1, #0x2e + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x2e + ldrb r0, [r0] + adds r1, r5, #0 + bl sub_080AE8D8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE6A4: .4byte gUnknown_3005AEC + thumb_func_end sub_080AE678 + + thumb_func_start sub_080AE6A8 +sub_080AE6A8: @ 0x080AE6A8 + ldr r0, _080AE6B4 + ldr r0, [r0] + adds r0, #0x2e + ldrb r0, [r0] + bx lr + .align 2, 0 +_080AE6B4: .4byte gUnknown_3005AEC + thumb_func_end sub_080AE6A8 + + thumb_func_start sub_080AE6B8 +sub_080AE6B8: @ 0x080AE6B8 + push {r4, r5, lr} + ldr r4, _080AE6E4 + ldr r0, [r4] + adds r0, #0x2e + ldrb r5, [r0] + ldr r0, _080AE6E8 + ldrb r0, [r0, #0x16] + bl sub_080AE7E4 + ldr r1, [r4] + adds r1, #0x2e + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x2e + ldrb r0, [r0] + adds r1, r5, #0 + bl sub_080AE8D8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE6E4: .4byte gUnknown_3005AEC +_080AE6E8: .4byte gUnknown_2036FB8 + thumb_func_end sub_080AE6B8 + + thumb_func_start sub_080AE6EC +sub_080AE6EC: @ 0x080AE6EC + push {lr} + bl sub_080AE678 + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AA994 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE6EC + + thumb_func_start sub_080AE704 +sub_080AE704: @ 0x080AE704 + push {lr} + bl sub_080AE678 + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AAA00 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE704 + + thumb_func_start sub_080AE71C +sub_080AE71C: @ 0x080AE71C + push {r4, r5, lr} + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bne _080AE748 + ldr r0, _080AE740 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AE73A + bl sub_080AE624 +_080AE73A: + ldr r0, _080AE744 + ldrb r4, [r0] + b _080AE76A + .align 2, 0 +_080AE740: .4byte sub_080AE5A4 +_080AE744: .4byte gUnknown_2038864 +_080AE748: + ldr r5, _080AE778 + adds r0, r5, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AE764 + adds r0, r5, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080AE764: + ldr r1, _080AE77C + movs r0, #0xd + strb r0, [r1] +_080AE76A: + adds r0, r4, #0 + bl sub_080AA994 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE778: .4byte sub_080AE5A4 +_080AE77C: .4byte gUnknown_2038864 + thumb_func_end sub_080AE71C + + thumb_func_start sub_080AE780 +sub_080AE780: @ 0x080AE780 + push {r4, r5, lr} + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bne _080AE7AC + ldr r0, _080AE7A4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AE79E + bl sub_080AE624 +_080AE79E: + ldr r0, _080AE7A8 + ldrb r4, [r0] + b _080AE7CE + .align 2, 0 +_080AE7A4: .4byte sub_080AE5A4 +_080AE7A8: .4byte gUnknown_2038864 +_080AE7AC: + ldr r5, _080AE7DC + adds r0, r5, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AE7C8 + adds r0, r5, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080AE7C8: + ldr r1, _080AE7E0 + movs r0, #0xd + strb r0, [r1] +_080AE7CE: + adds r0, r4, #0 + bl sub_080AAA00 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AE7DC: .4byte sub_080AE5A4 +_080AE7E0: .4byte gUnknown_2038864 + thumb_func_end sub_080AE780 + + thumb_func_start sub_080AE7E4 +sub_080AE7E4: @ 0x080AE7E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x15 + bhi _080AE8B0 + lsls r0, r0, #2 + ldr r1, _080AE7F8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AE7F8: .4byte _080AE7FC +_080AE7FC: @ jump table + .4byte _080AE8B0 @ case 0 + .4byte _080AE854 @ case 1 + .4byte _080AE858 @ case 2 + .4byte _080AE85C @ case 3 + .4byte _080AE860 @ case 4 + .4byte _080AE864 @ case 5 + .4byte _080AE868 @ case 6 + .4byte _080AE86C @ case 7 + .4byte _080AE870 @ case 8 + .4byte _080AE874 @ case 9 + .4byte _080AE878 @ case 10 + .4byte _080AE87C @ case 11 + .4byte _080AE880 @ case 12 + .4byte _080AE884 @ case 13 + .4byte _080AE888 @ case 14 + .4byte _080AE88C @ case 15 + .4byte _080AE8B0 @ case 16 + .4byte _080AE8B0 @ case 17 + .4byte _080AE8B0 @ case 18 + .4byte _080AE8B0 @ case 19 + .4byte _080AE890 @ case 20 + .4byte _080AE898 @ case 21 +_080AE854: + movs r0, #1 + b _080AE8B2 +_080AE858: + movs r0, #2 + b _080AE8B2 +_080AE85C: + movs r0, #3 + b _080AE8B2 +_080AE860: + movs r0, #4 + b _080AE8B2 +_080AE864: + movs r0, #5 + b _080AE8B2 +_080AE868: + movs r0, #6 + b _080AE8B2 +_080AE86C: + movs r0, #7 + b _080AE8B2 +_080AE870: + movs r0, #8 + b _080AE8B2 +_080AE874: + movs r0, #9 + b _080AE8B2 +_080AE878: + movs r0, #0xa + b _080AE8B2 +_080AE87C: + movs r0, #0xb + b _080AE8B2 +_080AE880: + movs r0, #0xc + b _080AE8B2 +_080AE884: + movs r0, #0xd + b _080AE8B2 +_080AE888: + movs r0, #0xe + b _080AE8B2 +_080AE88C: + movs r0, #0xf + b _080AE8B2 +_080AE890: + ldr r1, _080AE894 + b _080AE89A + .align 2, 0 +_080AE894: .4byte gUnknown_852AAF8 +_080AE898: + ldr r1, _080AE8A8 +_080AE89A: + ldr r0, _080AE8AC + ldr r0, [r0] + adds r0, #0x2f + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + b _080AE8B2 + .align 2, 0 +_080AE8A8: .4byte gUnknown_852AAFC +_080AE8AC: .4byte gUnknown_3005AEC +_080AE8B0: + movs r0, #0 +_080AE8B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AE7E4 + + thumb_func_start sub_080AE8B8 +sub_080AE8B8: @ 0x080AE8B8 + lsls r0, r0, #0x10 + ldr r1, _080AE8D4 + ldr r2, [r1] + adds r2, #0x2f + lsrs r0, r0, #0x10 + ldrb r1, [r2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0x10 + strb r1, [r2] + bx lr + .align 2, 0 +_080AE8D4: .4byte gUnknown_3005AEC + thumb_func_end sub_080AE8B8 + + thumb_func_start sub_080AE8D8 +sub_080AE8D8: @ 0x080AE8D8 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r0, #0x18 + cmp r0, r1 + beq _080AE8F2 + cmp r2, #3 + beq _080AE8EC + cmp r2, #5 + bne _080AE8F2 +_080AE8EC: + movs r0, #0x28 + bl sub_0808414C +_080AE8F2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE8D8 + + thumb_func_start sub_080AE8F8 +sub_080AE8F8: @ 0x080AE8F8 + push {lr} + sub sp, #4 + ldr r0, _080AE910 + str r0, [sp] + ldr r1, _080AE914 + ldr r2, _080AE918 + mov r0, sp + bl CpuFastSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080AE910: .4byte 0x7FFF7FFF +_080AE914: .4byte gUnknown_20377B4 +_080AE918: .4byte 0x01000100 + thumb_func_end sub_080AE8F8 + + thumb_func_start sub_080AE91C +sub_080AE91C: @ 0x080AE91C + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r1, _080AE934 + ldr r2, _080AE938 + mov r0, sp + bl CpuFastSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080AE934: .4byte gUnknown_20377B4 +_080AE938: .4byte 0x01000100 + thumb_func_end sub_080AE91C + + thumb_func_start sub_080AE93C +sub_080AE93C: @ 0x080AE93C + push {r4, lr} + bl sub_08085524 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0808550C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08137418 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080AE966 + cmp r0, #1 + beq _080AE974 + b _080AE980 +_080AE966: + bl sub_080AE91C + movs r0, #0 + movs r1, #0 + bl sub_080AB5CC + b _080AE980 +_080AE974: + bl sub_080AE8F8 + movs r0, #2 + movs r1, #0 + bl sub_080AB5CC +_080AE980: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE93C + + thumb_func_start sub_080AE988 +sub_080AE988: @ 0x080AE988 + push {lr} + bl sub_080AE8F8 + movs r0, #2 + movs r1, #8 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE988 + + thumb_func_start sub_080AE99C +sub_080AE99C: @ 0x080AE99C + push {lr} + bl sub_080AE91C + movs r0, #0 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE99C + + thumb_func_start sub_080AE9B0 +sub_080AE9B0: @ 0x080AE9B0 + push {r4, lr} + bl sub_0808550C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08084410 + ldrb r1, [r0, #0x17] + adds r0, r4, #0 + bl sub_081373D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080AE9D6 + cmp r0, #1 + beq _080AE9E0 + b _080AE9E8 +_080AE9D6: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + b _080AE9E8 +_080AE9E0: + movs r0, #3 + movs r1, #0 + bl sub_080AB5CC +_080AE9E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE9B0 + + thumb_func_start sub_080AE9F0 +sub_080AE9F0: @ 0x080AE9F0 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0 + cmp r0, #0 + bne _080AE9FC + movs r1, #1 +_080AE9FC: + adds r0, r1, #0 + bl sub_0808BA0C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AE9F0 + + thumb_func_start sub_080AEA08 +sub_080AEA08: @ 0x080AEA08 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AF018 + cmp r0, #1 + bne _080AEA1C + adds r0, r4, #0 + bl sub_080A8964 +_080AEA1C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AEA08 + + thumb_func_start sub_080AEA24 +sub_080AEA24: @ 0x080AEA24 + push {lr} + bl sub_080987DC + bl sub_080850EC + bl sub_080AE99C + ldr r0, _080AEA40 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEA40: .4byte sub_080AEA08 + thumb_func_end sub_080AEA24 + + thumb_func_start sub_080AEA44 +sub_080AEA44: @ 0x080AEA44 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AF018 + cmp r0, #1 + bne _080AEA5C + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080AEA5C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AEA44 + + thumb_func_start sub_080AEA64 +sub_080AEA64: @ 0x080AEA64 + push {lr} + bl sub_080987DC + bl sub_080850EC + bl sub_080AE99C + ldr r0, _080AEA80 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEA80: .4byte sub_080AEA44 + thumb_func_end sub_080AEA64 + + thumb_func_start sub_080AEA84 +sub_080AEA84: @ 0x080AEA84 + push {lr} + bl sub_080987DC + bl sub_080AE99C + ldr r0, _080AEA9C + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEA9C: .4byte sub_080AEA44 + thumb_func_end sub_080AEA84 + + thumb_func_start sub_080AEAA0 +sub_080AEAA0: @ 0x080AEAA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r2, _080AEAC4 + adds r4, r0, r2 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AEADA + cmp r0, #1 + bgt _080AEAC8 + cmp r0, #0 + beq _080AEACE + b _080AEB0A + .align 2, 0 +_080AEAC4: .4byte gUnknown_3005B60 +_080AEAC8: + cmp r0, #2 + beq _080AEAF8 + b _080AEB0A +_080AEACE: + bl sub_080B27FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + b _080AEAF0 +_080AEADA: + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #1 + beq _080AEB0A + bl sub_080AE93C +_080AEAF0: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AEB0A +_080AEAF8: + bl sub_080AF018 + cmp r0, #1 + bne _080AEB0A + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080AEB0A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AEAA0 + + thumb_func_start sub_080AEB10 +sub_080AEB10: @ 0x080AEB10 + push {lr} + bl sub_080987DC + bl sub_080850EC + bl sub_080AE91C + ldr r0, _080AEB2C + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEB2C: .4byte sub_080AEAA0 + thumb_func_end sub_080AEB10 + + thumb_func_start sub_080AEB30 +sub_080AEB30: @ 0x080AEB30 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AEB54 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AEB64 + cmp r0, #1 + bgt _080AEB58 + cmp r0, #0 + beq _080AEB5E + b _080AEBAA + .align 2, 0 +_080AEB54: .4byte gUnknown_3005B60 +_080AEB58: + cmp r0, #2 + beq _080AEB94 + b _080AEBAA +_080AEB5E: + bl sub_0800A8D4 + b _080AEB8C +_080AEB64: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AEB88 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + movs r1, #0xe1 + lsls r1, r1, #0x13 + cmp r0, r1 + ble _080AEBAA + movs r0, #0xc0 + lsls r0, r0, #7 + bl sub_08010C60 + b _080AEBAA +_080AEB88: + bl sub_080AE93C +_080AEB8C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AEBAA +_080AEB94: + bl sub_080AF018 + cmp r0, #1 + bne _080AEBAA + bl sub_08009AB0 + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080AEBAA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AEB30 + + thumb_func_start sub_080AEBB0 +sub_080AEBB0: @ 0x080AEBB0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AEBD4 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AEBE4 + cmp r0, #1 + bgt _080AEBD8 + cmp r0, #0 + beq _080AEBDE + b _080AEC08 + .align 2, 0 +_080AEBD4: .4byte gUnknown_3005B60 +_080AEBD8: + cmp r0, #2 + beq _080AEBF6 + b _080AEC08 +_080AEBDE: + bl sub_0800A8D4 + b _080AEBEE +_080AEBE4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AEC08 +_080AEBEE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AEC08 +_080AEBF6: + bl sub_08009AB0 + bl sub_08086590 + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080AEC08: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AEBB0 + + thumb_func_start sub_080AEC10 +sub_080AEC10: @ 0x080AEC10 + push {lr} + bl sub_080987DC + bl sub_080850EC + bl sub_080AE91C + ldr r0, _080AEC2C + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEC2C: .4byte sub_080AEB30 + thumb_func_end sub_080AEC10 + + thumb_func_start sub_080AEC30 +sub_080AEC30: @ 0x080AEC30 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088860 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080AEC68 + ldr r1, _080AEC64 + b _080AEC7A + .align 2, 0 +_080AEC64: .4byte sub_080AED34 +_080AEC68: + adds r0, r4, #0 + bl sub_080888BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080AEC8C + cmp r0, #1 + bne _080AEC7A + ldr r1, _080AEC90 +_080AEC7A: + adds r0, r1, #0 + movs r1, #0xa + bl sub_080A8878 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEC8C: .4byte sub_080AEF0C +_080AEC90: .4byte sub_080AEE4C + thumb_func_end sub_080AEC30 + + thumb_func_start sub_080AEC94 +sub_080AEC94: @ 0x080AEC94 + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080AEC30 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AEC94 + + thumb_func_start sub_080AECAC +sub_080AECAC: @ 0x080AECAC + push {lr} + bl sub_080850EC + bl sub_080AE988 + bl sub_080AEC30 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AECAC + + thumb_func_start sub_080AECC4 +sub_080AECC4: @ 0x080AECC4 + push {lr} + bl sub_081D5ED4 + cmp r0, #0 + bne _080AECD2 + bl sub_080850EC +_080AECD2: + bl sub_080AE99C + bl sub_080AEC30 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AECC4 + + thumb_func_start sub_080AECE4 +sub_080AECE4: @ 0x080AECE4 + push {lr} + bl sub_080850EC + bl sub_080AE93C + movs r0, #0x2e + bl sub_080A306C + ldr r0, _080AED04 + movs r1, #0xa + bl sub_080A8878 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080AED04: .4byte sub_080AFA5C + thumb_func_end sub_080AECE4 + + thumb_func_start sub_080AED08 +sub_080AED08: @ 0x080AED08 + push {lr} + bl sub_080850EC + bl sub_080AE93C + movs r0, #0x2e + bl sub_080A306C + ldr r0, _080AED30 + movs r1, #0xa + bl sub_080A8878 + bl sub_080987DC + movs r0, #0xe + bl sub_08084EA8 + pop {r0} + bx r0 + .align 2, 0 +_080AED30: .4byte sub_080AEF0C + thumb_func_end sub_080AED08 + + thumb_func_start sub_080AED34 +sub_080AED34: @ 0x080AED34 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080AED60 + adds r5, r0, r1 + adds r6, r5, #0 + adds r6, #0xc + adds r7, r5, #0 + adds r7, #0xe + movs r2, #8 + ldrsh r0, [r5, r2] + adds r2, r1, #0 + cmp r0, #4 + bhi _080AEE46 + lsls r0, r0, #2 + ldr r1, _080AED64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AED60: .4byte gUnknown_3005B60 +_080AED64: .4byte _080AED68 +_080AED68: @ jump table + .4byte _080AED7C @ case 0 + .4byte _080AEDA0 @ case 1 + .4byte _080AEDD8 @ case 2 + .4byte _080AEE1C @ case 3 + .4byte _080AEE3C @ case 4 +_080AED7C: + movs r0, #0 + bl sub_080AE9F0 + bl sub_08096E04 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_0808B410 + movs r1, #0 + ldrsh r0, [r6, r1] + movs r2, #0 + ldrsh r1, [r7, r2] + bl sub_0808A1B8 + movs r0, #1 + strh r0, [r5, #8] + b _080AEE46 +_080AEDA0: + bl sub_080AF018 + cmp r0, #0 + beq _080AEE46 + movs r0, #1 + bl sub_080AE9F0 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080AEDD4 + adds r0, r0, r1 + movs r1, #8 + bl sub_08092B30 + movs r0, #2 + strh r0, [r5, #8] + b _080AEE46 + .align 2, 0 +_080AEDD4: .4byte gUnknown_2036FF0 +_080AEDD8: + bl sub_08097D10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AEE46 + movs r1, #0 + ldrsh r0, [r6, r1] + movs r2, #0 + ldrsh r1, [r7, r2] + bl sub_0808A210 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0xa] + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080AEE18 + adds r0, r0, r1 + bl sub_08092BF4 + movs r0, #3 + strh r0, [r5, #8] + b _080AEE46 + .align 2, 0 +_080AEE18: .4byte gUnknown_2036FF0 +_080AEE1C: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + blt _080AEE32 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #1 + beq _080AEE46 +_080AEE32: + bl sub_08096EEC + movs r0, #4 + strh r0, [r5, #8] + b _080AEE46 +_080AEE3C: + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 +_080AEE46: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AED34 + + thumb_func_start sub_080AEE4C +sub_080AEE4C: @ 0x080AEE4C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080AEE78 + adds r5, r0, r1 + adds r6, r5, #0 + adds r6, #0xc + adds r7, r5, #0 + adds r7, #0xe + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080AEE9E + cmp r0, #1 + bgt _080AEE7C + cmp r0, #0 + beq _080AEE86 + b _080AEF06 + .align 2, 0 +_080AEE78: .4byte gUnknown_3005B60 +_080AEE7C: + cmp r0, #2 + beq _080AEEE8 + cmp r0, #3 + beq _080AEEFC + b _080AEF06 +_080AEE86: + movs r0, #0 + bl sub_080AE9F0 + bl sub_08096E04 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_0808B410 + movs r0, #1 + strh r0, [r5, #8] + b _080AEF06 +_080AEE9E: + bl sub_080AF018 + cmp r0, #0 + beq _080AEF06 + movs r0, #1 + bl sub_080AE9F0 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080AEEE4 + adds r4, r4, r0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CF8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + movs r0, #2 + strh r0, [r5, #8] + b _080AEF06 + .align 2, 0 +_080AEEE4: .4byte gUnknown_2036FF0 +_080AEEE8: + bl sub_08097D10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AEF06 + bl sub_08096EEC + movs r0, #3 + strh r0, [r5, #8] + b _080AEF06 +_080AEEFC: + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 +_080AEF06: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AEE4C + + thumb_func_start sub_080AEF0C +sub_080AEF0C: @ 0x080AEF0C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080AEF2C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080AEF30 + cmp r0, #1 + beq _080AEF40 + b _080AEF56 + .align 2, 0 +_080AEF2C: .4byte gUnknown_3005B60 +_080AEF30: + bl sub_08096E04 + bl sub_080987DC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AEF56 +_080AEF40: + bl sub_080AF018 + cmp r0, #0 + beq _080AEF56 + bl sub_08096EEC + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080AEF56: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AEF0C + + thumb_func_start sub_080AEF5C +sub_080AEF5C: @ 0x080AEF5C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AF018 + cmp r0, #1 + bne _080AEF78 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _080AEF80 + movs r1, #0x50 + bl sub_080A8878 +_080AEF78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AEF80: .4byte sub_0809F30C + thumb_func_end sub_080AEF5C + + thumb_func_start sub_080AEF84 +sub_080AEF84: @ 0x080AEF84 + push {lr} + bl sub_080AE99C + ldr r0, _080AEF9C + movs r1, #0x50 + bl sub_080A8878 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080AEF9C: .4byte sub_080AEF5C + thumb_func_end sub_080AEF84 + + thumb_func_start sub_080AEFA0 +sub_080AEFA0: @ 0x080AEFA0 + push {lr} + bl sub_0809F2F0 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080AEFA0 + + thumb_func_start sub_080AEFAC +sub_080AEFAC: @ 0x080AEFAC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AF018 + cmp r0, #1 + bne _080AEFC8 + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_08097E7C +_080AEFC8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AEFAC + + thumb_func_start sub_080AEFD0 +sub_080AEFD0: @ 0x080AEFD0 + push {lr} + bl sub_080987DC + bl sub_080AE99C + ldr r0, _080AEFE8 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AEFE8: .4byte sub_080AEFAC + thumb_func_end sub_080AEFD0 + + thumb_func_start sub_080AEFEC +sub_080AEFEC: @ 0x080AEFEC + push {lr} + bl sub_080987DC + bl sub_080850EC + bl sub_080AE99C + ldr r0, _080AF008 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF008: .4byte sub_080AEFAC + thumb_func_end sub_080AEFEC + + thumb_func_start sub_080AF00C +sub_080AF00C: @ 0x080AF00C + ldr r0, _080AF014 + ldrb r0, [r0, #7] + lsrs r0, r0, #7 + bx lr + .align 2, 0 +_080AF014: .4byte gUnknown_2037C74 + thumb_func_end sub_080AF00C + + thumb_func_start sub_080AF018 +sub_080AF018: @ 0x080AF018 + push {lr} + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080AF02A + movs r0, #0 + b _080AF02C +_080AF02A: + movs r0, #1 +_080AF02C: + pop {r1} + bx r1 + thumb_func_end sub_080AF018 + + thumb_func_start sub_080AF030 +sub_080AF030: @ 0x080AF030 + push {lr} + bl sub_080987DC + bl sub_08085278 + bl sub_080AE9B0 + bl sub_080ABC74 + movs r0, #9 + bl sub_080A306C + ldr r0, _080AF05C + ldr r1, _080AF060 + str r1, [r0] + ldr r0, _080AF064 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF05C: .4byte gUnknown_3005B0C +_080AF060: .4byte sub_080AEC94 +_080AF064: .4byte sub_080AF308 + thumb_func_end sub_080AF030 + + thumb_func_start sub_080AF068 +sub_080AF068: @ 0x080AF068 + push {lr} + bl sub_080987DC + bl sub_08085278 + bl sub_080AE9B0 + bl sub_080ABC74 + ldr r0, _080AF08C + ldr r1, _080AF090 + str r1, [r0] + ldr r0, _080AF094 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF08C: .4byte gUnknown_3005B0C +_080AF090: .4byte sub_080AEC94 +_080AF094: .4byte sub_080AF308 + thumb_func_end sub_080AF068 + + thumb_func_start sub_080AF098 +sub_080AF098: @ 0x080AF098 + push {lr} + bl sub_080987DC + bl sub_08085278 + movs r0, #3 + movs r1, #8 + bl sub_080AB5CC + bl sub_080ABC74 + ldr r0, _080AF0C0 + ldr r1, _080AF0C4 + str r1, [r0] + ldr r0, _080AF0C8 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF0C0: .4byte gUnknown_3005B0C +_080AF0C4: .4byte sub_080AECAC +_080AF0C8: .4byte sub_080AF308 + thumb_func_end sub_080AF098 + + thumb_func_start sub_080AF0CC +sub_080AF0CC: @ 0x080AF0CC + push {lr} + bl sub_080987DC + ldr r0, _080AF0E4 + ldr r1, _080AF0E8 + str r1, [r0] + ldr r0, _080AF0EC + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF0E4: .4byte gUnknown_3005B0C +_080AF0E8: .4byte sub_080AEC94 +_080AF0EC: .4byte sub_080AF384 + thumb_func_end sub_080AF0CC + + thumb_func_start sub_080AF0F0 +sub_080AF0F0: @ 0x080AF0F0 + push {lr} + bl sub_080AF068 + ldr r1, _080AF100 + ldr r0, _080AF104 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AF100: .4byte gUnknown_3005B0C +_080AF104: .4byte sub_080B62C0 + thumb_func_end sub_080AF0F0 + + thumb_func_start sub_080AF108 +sub_080AF108: @ 0x080AF108 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + adds r0, r4, #0 + movs r1, #0xa + bl sub_080B65A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AF108 + + thumb_func_start sub_080AF124 +sub_080AF124: @ 0x080AF124 + push {lr} + bl sub_080987DC + movs r0, #0xa + bl sub_080B6D30 + pop {r0} + bx r0 + thumb_func_end sub_080AF124 + + thumb_func_start sub_080AF134 +sub_080AF134: @ 0x080AF134 + push {lr} + bl sub_080987DC + movs r0, #0xa + bl sub_080B71CC + pop {r0} + bx r0 + thumb_func_end sub_080AF134 + + thumb_func_start sub_080AF144 +sub_080AF144: @ 0x080AF144 + push {lr} + bl sub_080987DC + bl sub_08085278 + bl sub_080AE9B0 + movs r0, #0x2d + bl sub_080A306C + ldr r0, _080AF16C + movs r1, #0xa + bl sub_080A8878 + ldr r1, _080AF170 + ldr r0, _080AF174 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AF16C: .4byte sub_080AF308 +_080AF170: .4byte gUnknown_3005B0C +_080AF174: .4byte sub_080AECE4 + thumb_func_end sub_080AF144 + + thumb_func_start sub_080AF178 +sub_080AF178: @ 0x080AF178 + push {lr} + movs r0, #1 + bl sub_08084EA8 + bl sub_080987DC + bl sub_08076824 + bl sub_08085278 + bl sub_080AE9B0 + movs r0, #0x2d + bl sub_080A306C + ldr r0, _080AF1A8 + movs r1, #0xa + bl sub_080A8878 + ldr r1, _080AF1AC + ldr r0, _080AF1B0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AF1A8: .4byte sub_080AF308 +_080AF1AC: .4byte gUnknown_3005B0C +_080AF1B0: .4byte sub_080AED08 + thumb_func_end sub_080AF178 + + thumb_func_start sub_080AF1B4 +sub_080AF1B4: @ 0x080AF1B4 + push {lr} + bl sub_080987DC + bl sub_080AE9B0 + ldr r0, _080AF1D0 + movs r1, #0xa + bl sub_080A8878 + ldr r1, _080AF1D4 + ldr r0, _080AF1D8 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AF1D0: .4byte sub_080AF308 +_080AF1D4: .4byte gUnknown_3005B0C +_080AF1D8: .4byte sub_080FBFD8 + thumb_func_end sub_080AF1B4 + + thumb_func_start sub_080AF1DC +sub_080AF1DC: @ 0x080AF1DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AF200 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AF210 + cmp r0, #1 + bgt _080AF204 + cmp r0, #0 + beq _080AF20A + b _080AF23A + .align 2, 0 +_080AF200: .4byte gUnknown_3005B60 +_080AF204: + cmp r0, #2 + beq _080AF22A + b _080AF23A +_080AF20A: + bl sub_080987DC + b _080AF222 +_080AF210: + bl sub_080AF00C + cmp r0, #0 + bne _080AF23A + bl sub_08085308 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AF23A +_080AF222: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AF23A +_080AF22A: + bl sub_08084540 + ldr r0, _080AF240 + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080AF23A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF240: .4byte sub_080859DC + thumb_func_end sub_080AF1DC + + thumb_func_start sub_080AF244 +sub_080AF244: @ 0x080AF244 + push {lr} + bl sub_080987DC + bl sub_08085278 + bl sub_080AE9B0 + movs r0, #9 + bl sub_080A306C + ldr r0, _080AF264 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF264: .4byte sub_080AF1DC + thumb_func_end sub_080AF244 + + thumb_func_start sub_080AF268 +sub_080AF268: @ 0x080AF268 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AF28C + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AF2AE + cmp r0, #1 + bgt _080AF290 + cmp r0, #0 + beq _080AF296 + b _080AF2E4 + .align 2, 0 +_080AF28C: .4byte gUnknown_3005B68 +_080AF290: + cmp r0, #2 + beq _080AF2CC + b _080AF2E4 +_080AF296: + bl sub_08009B44 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + bl sub_08085278 + movs r0, #9 + bl sub_080A306C + b _080AF2C4 +_080AF2AE: + bl sub_080AF00C + cmp r0, #0 + bne _080AF2E4 + bl sub_08085308 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AF2E4 + bl sub_0800A7F8 +_080AF2C4: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AF2E4 +_080AF2CC: + ldr r0, _080AF2EC + ldrb r0, [r0] + cmp r0, #0 + bne _080AF2E4 + bl sub_08084540 + ldr r0, _080AF2F0 + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080AF2E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF2EC: .4byte gUnknown_30031C4 +_080AF2F0: .4byte sub_08085934 + thumb_func_end sub_080AF268 + + thumb_func_start sub_080AF2F4 +sub_080AF2F4: @ 0x080AF2F4 + push {lr} + ldr r0, _080AF304 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF304: .4byte sub_080AF268 + thumb_func_end sub_080AF2F4 + + thumb_func_start sub_080AF308 +sub_080AF308: @ 0x080AF308 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080AF32C + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _080AF340 + cmp r5, #1 + bgt _080AF330 + cmp r5, #0 + beq _080AF336 + b _080AF378 + .align 2, 0 +_080AF32C: .4byte gUnknown_3005B60 +_080AF330: + cmp r5, #2 + beq _080AF368 + b _080AF378 +_080AF336: + bl sub_08096E04 + bl sub_080987DC + b _080AF360 +_080AF340: + bl sub_080AF00C + cmp r0, #0 + bne _080AF378 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080AF356 + bl sub_081BE3C8 + strh r5, [r4, #0xa] +_080AF356: + bl sub_08085308 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AF378 +_080AF360: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AF378 +_080AF368: + bl sub_08084540 + ldr r0, _080AF380 + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 +_080AF378: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AF380: .4byte sub_08085934 + thumb_func_end sub_080AF308 + + thumb_func_start sub_080AF384 +sub_080AF384: @ 0x080AF384 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080AF3B4 + adds r5, r1, r0 + adds r4, r5, #0 + adds r4, #0xc + adds r6, r5, #0 + adds r6, #0xe + movs r2, #8 + ldrsh r1, [r5, r2] + adds r2, r0, #0 + cmp r1, #4 + bls _080AF3A8 + b _080AF4E4 +_080AF3A8: + lsls r0, r1, #2 + ldr r1, _080AF3B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AF3B4: .4byte gUnknown_3005B60 +_080AF3B8: .4byte _080AF3BC +_080AF3BC: @ jump table + .4byte _080AF3D0 @ case 0 + .4byte _080AF40C @ case 1 + .4byte _080AF468 @ case 2 + .4byte _080AF4B4 @ case 3 + .4byte _080AF4D0 @ case 4 +_080AF3D0: + bl sub_08096E04 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0808B410 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + subs r1, #1 + bl sub_0808A294 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080A306C + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + subs r1, #1 + bl sub_0808A248 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0xa] + movs r0, #1 + strh r0, [r5, #8] + b _080AF4E4 +_080AF40C: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + blt _080AF422 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #1 + beq _080AF4E4 +_080AF422: + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080AF464 + adds r0, r0, r4 + bl sub_08092B94 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #9 + bl sub_08092B30 + movs r0, #2 + strh r0, [r5, #8] + b _080AF4E4 + .align 2, 0 +_080AF464: .4byte gUnknown_2036FF0 +_080AF468: + bl sub_08097D10 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AF4E4 + movs r2, #0 + ldrsh r0, [r4, r2] + movs r2, #0 + ldrsh r1, [r6, r2] + subs r1, #1 + bl sub_0808A210 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0xa] + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080AF4B0 + adds r0, r0, r1 + bl sub_08092BF4 + movs r0, #0 + bl sub_080AE9F0 + movs r0, #3 + strh r0, [r5, #8] + b _080AF4E4 + .align 2, 0 +_080AF4B0: .4byte gUnknown_2036FF0 +_080AF4B4: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + blt _080AF4CA + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #1 + beq _080AF4E4 +_080AF4CA: + movs r0, #4 + strh r0, [r5, #8] + b _080AF4E4 +_080AF4D0: + bl sub_08085278 + bl sub_080AE9B0 + bl sub_080ABC74 + movs r0, #0 + strh r0, [r5, #8] + ldr r0, _080AF4EC + str r0, [r5] +_080AF4E4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080AF4EC: .4byte sub_080AF308 + thumb_func_end sub_080AF384 + + thumb_func_start sub_080AF4F0 +sub_080AF4F0: @ 0x080AF4F0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AF514 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AF528 + cmp r0, #1 + bgt _080AF518 + cmp r0, #0 + beq _080AF51E + b _080AF552 + .align 2, 0 +_080AF514: .4byte gUnknown_3005B60 +_080AF518: + cmp r0, #2 + beq _080AF542 + b _080AF552 +_080AF51E: + bl sub_08096E04 + bl sub_080987DC + b _080AF53A +_080AF528: + bl sub_080AF00C + cmp r0, #0 + bne _080AF552 + bl sub_08085308 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AF552 +_080AF53A: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AF552 +_080AF542: + bl sub_08084540 + ldr r0, _080AF558 + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080AF552: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF558: .4byte sub_0808598C + thumb_func_end sub_080AF4F0 + + thumb_func_start sub_080AF55C +sub_080AF55C: @ 0x080AF55C + push {lr} + bl sub_080987DC + bl sub_08085278 + bl sub_080AE9B0 + bl sub_080ABC74 + movs r0, #9 + bl sub_080A306C + ldr r0, _080AF588 + ldr r1, _080AF58C + str r1, [r0] + ldr r0, _080AF590 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AF588: .4byte gUnknown_3005B0C +_080AF58C: .4byte sub_080AECC4 +_080AF590: .4byte sub_080AF4F0 + thumb_func_end sub_080AF55C + + thumb_func_start sub_080AF594 +sub_080AF594: @ 0x080AF594 + push {lr} + cmp r1, #0xa0 + bhi _080AF5BC + cmp r2, #0 + bge _080AF5A0 + movs r2, #0 +_080AF5A0: + cmp r2, #0xff + ble _080AF5A6 + movs r2, #0xff +_080AF5A6: + cmp r3, #0 + bge _080AF5AC + movs r3, #0 +_080AF5AC: + cmp r3, #0xff + ble _080AF5B2 + movs r3, #0xff +_080AF5B2: + lsls r1, r1, #1 + adds r1, r1, r0 + lsls r0, r2, #8 + orrs r0, r3 + strh r0, [r1] +_080AF5BC: + pop {r0} + bx r0 + thumb_func_end sub_080AF594 + + thumb_func_start sub_080AF5C0 +sub_080AF5C0: @ 0x080AF5C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + mov sl, r1 + mov sb, r2 + adds r6, r3, #0 + mov r8, r6 + movs r7, #0 + cmp r6, #0 + blt _080AF63C +_080AF5DC: + mov r0, sb + subs r1, r0, r7 + mov r0, sl + subs r4, r0, r6 + adds r5, r0, r6 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF594 + mov r0, sb + adds r1, r0, r7 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF594 + mov r0, sb + subs r1, r0, r6 + mov r0, sl + subs r4, r0, r7 + adds r5, r0, r7 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF594 + mov r0, sb + adds r1, r0, r6 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF594 + mov r1, r8 + adds r1, #1 + lsls r0, r7, #1 + subs r1, r1, r0 + mov r8, r1 + adds r7, #1 + cmp r1, #0 + bge _080AF638 + subs r1, r6, #1 + lsls r0, r1, #1 + add r8, r0 + adds r6, r1, #0 +_080AF638: + cmp r6, r7 + bge _080AF5DC +_080AF63C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AF5C0 + + thumb_func_start sub_080AF64C +sub_080AF64C: @ 0x080AF64C + push {lr} + cmp r1, #0xa0 + bhi _080AF674 + cmp r2, #0 + bge _080AF658 + movs r2, #0 +_080AF658: + cmp r2, #0xf0 + ble _080AF65E + movs r2, #0xf0 +_080AF65E: + cmp r3, #0 + bge _080AF664 + movs r3, #0 +_080AF664: + cmp r3, #0xf0 + ble _080AF66A + movs r3, #0xf0 +_080AF66A: + lsls r1, r1, #1 + adds r1, r1, r0 + lsls r0, r2, #8 + orrs r0, r3 + strh r0, [r1] +_080AF674: + pop {r0} + bx r0 + thumb_func_end sub_080AF64C + + thumb_func_start sub_080AF678 +sub_080AF678: @ 0x080AF678 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + mov sl, r1 + mov sb, r2 + adds r6, r3, #0 + mov r8, r6 + movs r7, #0 + cmp r6, #0 + blt _080AF6F4 +_080AF694: + mov r0, sb + subs r1, r0, r7 + mov r0, sl + subs r4, r0, r6 + adds r5, r0, r6 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF64C + mov r0, sb + adds r1, r0, r7 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF64C + mov r0, sb + subs r1, r0, r6 + mov r0, sl + subs r4, r0, r7 + adds r5, r0, r7 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF64C + mov r0, sb + adds r1, r0, r6 + ldr r0, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080AF64C + mov r1, r8 + adds r1, #1 + lsls r0, r7, #1 + subs r1, r1, r0 + mov r8, r1 + adds r7, #1 + cmp r1, #0 + bge _080AF6F0 + subs r1, r6, #1 + lsls r0, r1, #1 + add r8, r0 + adds r6, r1, #0 +_080AF6F0: + cmp r6, r7 + bge _080AF694 +_080AF6F4: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080AF678 + + thumb_func_start sub_080AF704 +sub_080AF704: @ 0x080AF704 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AF728 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AF760 + cmp r0, #1 + bgt _080AF72C + cmp r0, #0 + beq _080AF732 + b _080AF7C2 + .align 2, 0 +_080AF728: .4byte gUnknown_3005B68 +_080AF72C: + cmp r0, #2 + beq _080AF7B8 + b _080AF7C2 +_080AF732: + ldr r0, _080AF758 + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080AF75C + adds r0, r0, r1 + movs r2, #2 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r5, #6 + ldrsh r3, [r4, r5] + bl sub_080AF5C0 + movs r0, #1 + strh r0, [r4] + b _080AF7C2 + .align 2, 0 +_080AF758: .4byte gUnknown_20397C8 +_080AF75C: .4byte gUnknown_20388C8 +_080AF760: + ldr r0, _080AF7A8 + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080AF7AC + adds r0, r0, r1 + movs r6, #2 + ldrsh r1, [r4, r6] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r6, #6 + ldrsh r3, [r4, r6] + bl sub_080AF5C0 + movs r0, #0 + strh r0, [r4] + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r4, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #8 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080AF7C2 + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _080AF7B0 + bl sub_080B9710 + movs r0, #2 + strh r0, [r4] + b _080AF7C2 + .align 2, 0 +_080AF7A8: .4byte gUnknown_20397C8 +_080AF7AC: .4byte gUnknown_20388C8 +_080AF7B0: + adds r0, r5, #0 + bl sub_080A8964 + b _080AF7C2 +_080AF7B8: + bl sub_080B9750 + adds r0, r5, #0 + bl sub_080A8964 +_080AF7C2: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080AF704 + + thumb_func_start sub_080AF7C8 +sub_080AF7C8: @ 0x080AF7C8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AF7EC + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AF824 + cmp r0, #1 + bgt _080AF7F0 + cmp r0, #0 + beq _080AF7F6 + b _080AF886 + .align 2, 0 +_080AF7EC: .4byte gUnknown_3005B68 +_080AF7F0: + cmp r0, #2 + beq _080AF87C + b _080AF886 +_080AF7F6: + ldr r0, _080AF81C + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080AF820 + adds r0, r0, r1 + movs r2, #2 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r5, #6 + ldrsh r3, [r4, r5] + bl sub_080AF678 + movs r0, #1 + strh r0, [r4] + b _080AF886 + .align 2, 0 +_080AF81C: .4byte gUnknown_20397C8 +_080AF820: .4byte gUnknown_20388C8 +_080AF824: + ldr r0, _080AF86C + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080AF870 + adds r0, r0, r1 + movs r6, #2 + ldrsh r1, [r4, r6] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r6, #6 + ldrsh r3, [r4, r6] + bl sub_080AF678 + movs r0, #0 + strh r0, [r4] + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r4, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #8 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080AF886 + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _080AF874 + bl sub_080B9710 + movs r0, #2 + strh r0, [r4] + b _080AF886 + .align 2, 0 +_080AF86C: .4byte gUnknown_20397C8 +_080AF870: .4byte gUnknown_20388C8 +_080AF874: + adds r0, r5, #0 + bl sub_080A8964 + b _080AF886 +_080AF87C: + bl sub_080B9750 + adds r0, r5, #0 + bl sub_080A8964 +_080AF886: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080AF7C8 + + thumb_func_start sub_080AF88C +sub_080AF88C: @ 0x080AF88C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080AF8B0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AF8A8 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_080AF8A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF8B0: .4byte sub_080AF704 + thumb_func_end sub_080AF88C + + thumb_func_start sub_080AF8B4 +sub_080AF8B4: @ 0x080AF8B4 + push {r4, lr} + ldr r4, _080AF8D4 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AF8CC + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 +_080AF8CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AF8D4: .4byte sub_080AF88C + thumb_func_end sub_080AF8B4 + + thumb_func_start sub_080AF8D8 +sub_080AF8D8: @ 0x080AF8D8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + mov sb, r1 + adds r5, r2, #0 + adds r4, r3, #0 + ldr r6, [sp, #0x1c] + ldr r0, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080AF91C + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080AF920 + adds r1, r0, r1 + strh r5, [r1, #6] + strh r4, [r1, #8] + mov r0, r8 + strh r0, [r1, #2] + mov r0, sb + strh r0, [r1, #4] + strh r6, [r1, #0xc] + cmp r5, r4 + bge _080AF924 + strh r7, [r1, #0xa] + b _080AF928 + .align 2, 0 +_080AF91C: .4byte sub_080AF704 +_080AF920: .4byte gUnknown_3005B68 +_080AF924: + rsbs r0, r7, #0 + strh r0, [r1, #0xa] +_080AF928: + adds r0, r2, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AF8D8 + + thumb_func_start sub_080AF938 +sub_080AF938: @ 0x080AF938 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + mov sb, r1 + adds r5, r2, #0 + adds r4, r3, #0 + ldr r6, [sp, #0x1c] + ldr r0, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080AF97C + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080AF980 + adds r1, r0, r1 + strh r5, [r1, #6] + strh r4, [r1, #8] + mov r0, r8 + strh r0, [r1, #2] + mov r0, sb + strh r0, [r1, #4] + strh r6, [r1, #0xc] + cmp r5, r4 + bge _080AF984 + strh r7, [r1, #0xa] + b _080AF988 + .align 2, 0 +_080AF97C: .4byte sub_080AF7C8 +_080AF980: .4byte gUnknown_3005B68 +_080AF984: + rsbs r0, r7, #0 + strh r0, [r1, #0xa] +_080AF988: + adds r0, r2, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080AF938 + + thumb_func_start sub_080AF998 +sub_080AF998: @ 0x080AF998 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_08084E7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + cmp r4, #0 + bne _080AF9B2 + movs r5, #1 +_080AF9B2: + ldr r1, _080AF9E0 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r3, [r0] + str r5, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x78 + movs r1, #0x50 + bl sub_080AF8D8 + bl sub_080AF8B4 + bl sub_080987DC + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AF9E0: .4byte gUnknown_852AB00 + thumb_func_end sub_080AF998 + + thumb_func_start sub_080AF9E4 +sub_080AF9E4: @ 0x080AF9E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080AFA12 + ldr r4, _080AFA18 + ldr r1, _080AFA1C + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r3, [r0] + adds r0, r4, #0 + movs r1, #0x78 + movs r2, #0x50 + bl sub_080AF5C0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r1, r4, r0 + movs r2, #0xf0 + lsls r2, r2, #1 + adds r0, r4, #0 + bl CpuFastSet +_080AFA12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AFA18: .4byte gUnknown_20388C8 +_080AFA1C: .4byte gUnknown_852AB00 + thumb_func_end sub_080AF9E4 + + thumb_func_start sub_080AFA20 +sub_080AFA20: @ 0x080AFA20 + push {r4, lr} + ldr r4, _080AFA50 + ldr r0, _080AFA54 + ldr r0, [r0] + ldr r1, _080AFA58 + adds r0, r0, r1 + ldrb r3, [r0] + adds r0, r4, #0 + movs r1, #0x78 + movs r2, #0x50 + bl sub_080AF5C0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r1, r4, r0 + movs r2, #0xf0 + lsls r2, r2, #1 + adds r0, r4, #0 + bl CpuFastSet + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080AFA50: .4byte gUnknown_20388C8 +_080AFA54: .4byte gUnknown_3005AF0 +_080AFA58: .4byte 0x00000E68 + thumb_func_end sub_080AFA20 + + thumb_func_start sub_080AFA5C +sub_080AFA5C: @ 0x080AFA5C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080AFA7C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080AFA80 + cmp r0, #1 + beq _080AFA94 + b _080AFAB2 + .align 2, 0 +_080AFA7C: .4byte gUnknown_3005B60 +_080AFA80: + bl sub_08096E04 + bl sub_080987DC + bl sub_0808CB04 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AFAB2 +_080AFA94: + bl sub_080AF018 + cmp r0, #0 + beq _080AFAB2 + bl sub_0808CB24 + cmp r0, #1 + beq _080AFAB2 + bl sub_08096EEC + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080AFAB2: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AFA5C + + thumb_func_start sub_080AFAB8 +sub_080AFAB8: @ 0x080AFAB8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AFADC + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080AFAFE + cmp r0, #1 + bgt _080AFAE0 + cmp r0, #0 + beq _080AFAEA + b _080AFB36 + .align 2, 0 +_080AFADC: .4byte gUnknown_3005B60 +_080AFAE0: + cmp r0, #2 + beq _080AFB0C + cmp r0, #3 + beq _080AFB26 + b _080AFB36 +_080AFAEA: + bl sub_08096E04 + bl sub_080987DC + movs r0, #0x2d + bl sub_080A306C + bl sub_0808CB38 + b _080AFB1E +_080AFAFE: + bl sub_0808CB58 + cmp r0, #0 + bne _080AFB36 + bl sub_080AE9B0 + b _080AFB1E +_080AFB0C: + bl sub_080AF00C + cmp r0, #0 + bne _080AFB36 + bl sub_08085308 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AFB36 +_080AFB1E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080AFB36 +_080AFB26: + bl sub_08084540 + ldr r0, _080AFB3C + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080AFB36: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFB3C: .4byte sub_08085934 + thumb_func_end sub_080AFAB8 + + thumb_func_start sub_080AFB40 +sub_080AFB40: @ 0x080AFB40 + push {lr} + bl sub_080987DC + ldr r0, _080AFB58 + movs r1, #0xa + bl sub_080A8878 + ldr r1, _080AFB5C + ldr r0, _080AFB60 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080AFB58: .4byte sub_080AF308 +_080AFB5C: .4byte gUnknown_3005B0C +_080AFB60: .4byte sub_080AECE4 + thumb_func_end sub_080AFB40 + + thumb_func_start sub_080AFB64 +sub_080AFB64: @ 0x080AFB64 + push {lr} + bl sub_080987DC + ldr r0, _080AFB7C + ldr r1, _080AFB80 + str r1, [r0] + ldr r0, _080AFB84 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AFB7C: .4byte gUnknown_3005B0C +_080AFB80: .4byte sub_080AEC94 +_080AFB84: .4byte sub_080AFAB8 + thumb_func_end sub_080AFB64 + + thumb_func_start sub_080AFB88 +sub_080AFB88: @ 0x080AFB88 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AFB96 + movs r1, #0x1f + b _080AFB9C +_080AFB96: + movs r0, #0xf8 + lsls r0, r0, #7 + adds r1, r0, #0 +_080AFB9C: + mov r0, sp + strh r1, [r0] + movs r5, #0 + movs r4, #0xf0 + lsls r4, r4, #0x10 +_080AFBA6: + lsrs r1, r4, #0x10 + mov r0, sp + movs r2, #2 + bl sub_080A1200 + movs r0, #0x80 + lsls r0, r0, #9 + adds r4, r4, r0 + adds r5, #1 + cmp r5, #0xf + ble _080AFBA6 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AFB88 + + thumb_func_start sub_080AFBC4 +sub_080AFBC4: @ 0x080AFBC4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + ldr r2, _080AFBE4 + ldrh r1, [r2] + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldrh r1, [r2] + lsrs r4, r1, #8 + cmp r0, #0 + beq _080AFBE8 + cmp r5, #0 + beq _080AFBF2 + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _080AFBF2 + .align 2, 0 +_080AFBE4: .4byte 0x04000052 +_080AFBE8: + cmp r4, #0xf + bhi _080AFBF2 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080AFBF2: + lsls r1, r4, #8 + orrs r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + cmp r5, #0 + bne _080AFC0C + cmp r4, #0x10 + bne _080AFC0C + movs r0, #1 + b _080AFC0E +_080AFC0C: + movs r0, #0 +_080AFC0E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080AFBC4 + + thumb_func_start sub_080AFC14 +sub_080AFC14: @ 0x080AFC14 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080AFC3C + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #7 + bls _080AFC30 + b _080AFE28 +_080AFC30: + lsls r0, r0, #2 + ldr r1, _080AFC40 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080AFC3C: .4byte gUnknown_3005B68 +_080AFC40: .4byte _080AFC44 +_080AFC44: @ jump table + .4byte _080AFC64 @ case 0 + .4byte _080AFD20 @ case 1 + .4byte _080AFD4C @ case 2 + .4byte _080AFD68 @ case 3 + .4byte _080AFD7E @ case 4 + .4byte _080AFDEE @ case 5 + .4byte _080AFDA8 @ case 6 + .4byte _080AFDB6 @ case 7 +_080AFC64: + movs r0, #0x80 + lsls r0, r0, #0x13 + ldrh r0, [r0] + strh r0, [r5, #0xc] + ldr r0, _080AFD00 + ldrh r0, [r0] + strh r0, [r5, #0xe] + ldr r0, _080AFD04 + ldrh r0, [r0] + strh r0, [r5, #0x10] + ldr r0, _080AFD08 + ldrh r0, [r0] + strh r0, [r5, #0x12] + ldr r0, _080AFD0C + ldrh r0, [r0] + strh r0, [r5, #0x14] + movs r1, #0x80 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001220 + ldr r0, _080AFD10 + ldrh r1, [r0] + movs r0, #0x50 + bl sub_08001200 + ldr r1, _080AFD14 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x1e + bl sub_08001144 + movs r0, #0x14 + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0x1e + bl sub_081998C8 + movs r0, #0 + bl sub_08199654 + ldr r4, _080AFD18 + movs r2, #4 + ldrsh r1, [r5, r2] + movs r0, #6 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #1 + bl sub_080AF678 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r4, r2 + movs r2, #0xf0 + lsls r2, r2, #1 + adds r0, r4, #0 + bl CpuFastSet + ldr r2, _080AFD1C + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B9790 + movs r0, #1 + strh r0, [r5] + b _080AFE28 + .align 2, 0 +_080AFD00: .4byte 0x04000050 +_080AFD04: .4byte 0x04000052 +_080AFD08: .4byte 0x04000048 +_080AFD0C: .4byte 0x0400004A +_080AFD10: .4byte gUnknown_82BF434 +_080AFD14: .4byte 0x0000070C +_080AFD18: .4byte gUnknown_20388C8 +_080AFD1C: .4byte gUnknown_852AB18 +_080AFD20: + movs r0, #0 + movs r1, #0x11 + movs r2, #0 + movs r3, #1 + bl sub_08199A88 + ldrb r0, [r5, #2] + bl sub_080AFB88 + movs r1, #4 + ldrsh r0, [r5, r1] + movs r2, #6 + ldrsh r1, [r5, r2] + movs r2, #1 + str r2, [sp] + movs r4, #2 + str r4, [sp, #4] + movs r3, #0xa0 + bl sub_080AF938 + strh r4, [r5] + b _080AFE28 +_080AFD4C: + ldr r0, _080AFD64 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AFE28 + bl sub_080988C4 + movs r0, #3 + strh r0, [r5] + b _080AFE28 + .align 2, 0 +_080AFD64: .4byte sub_080AF7C8 +_080AFD68: + bl sub_08089C48 + movs r0, #0 + bl sub_08089C24 + movs r0, #0 + strh r0, [r5, #0xa] + movs r0, #4 + strh r0, [r5, #8] + strh r0, [r5] + b _080AFE28 +_080AFD7E: + ldrh r0, [r5, #8] + subs r0, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AFE28 + movs r0, #4 + strh r0, [r5, #8] + ldrh r0, [r5, #0xa] + movs r1, #1 + eors r0, r1 + strh r0, [r5, #0xa] + movs r1, #4 + rsbs r1, r1, #0 + cmp r0, #0 + beq _080AFDA0 + movs r1, #4 +_080AFDA0: + movs r0, #0 + bl sub_08089C30 + b _080AFE28 +_080AFDA8: + bl sub_08089C48 + movs r0, #8 + strh r0, [r5, #8] + movs r0, #7 + strh r0, [r5] + b _080AFE28 +_080AFDB6: + ldrh r0, [r5, #8] + subs r0, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AFE28 + movs r0, #8 + strh r0, [r5, #8] + ldrh r0, [r5, #0xa] + movs r1, #1 + eors r0, r1 + strh r0, [r5, #0xa] + ldrh r0, [r5, #0xa] + bl sub_080AFBC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080AFE28 + movs r0, #5 + strh r0, [r5] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08199A88 + b _080AFE28 +_080AFDEE: + movs r0, #0x40 + movs r1, #0xff + bl sub_08001144 + ldrh r1, [r5, #0xc] + movs r0, #0 + bl sub_08001144 + ldrh r1, [r5, #0xe] + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r5, #0x10] + movs r0, #0x52 + bl sub_08001144 + ldrh r1, [r5, #0x12] + movs r0, #0x48 + bl sub_08001144 + ldrh r1, [r5, #0x14] + movs r0, #0x4a + bl sub_08001144 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_080AFE28: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080AFC14 + + thumb_func_start sub_080AFE30 +sub_080AFE30: @ 0x080AFE30 + push {lr} + ldr r0, _080AFE58 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080AFE5C + adds r1, r1, r0 + ldr r0, _080AFE60 + ldrh r0, [r0] + cmp r0, #0 + bne _080AFE64 + strh r0, [r1, #2] + movs r0, #0x68 + b _080AFE7C + .align 2, 0 +_080AFE58: .4byte sub_080AFC14 +_080AFE5C: .4byte gUnknown_3005B68 +_080AFE60: .4byte gUnknown_2037290 +_080AFE64: + cmp r0, #1 + bne _080AFE6E + strh r0, [r1, #2] + movs r0, #0x88 + b _080AFE7C +_080AFE6E: + cmp r0, #2 + bne _080AFE76 + movs r0, #0 + b _080AFE78 +_080AFE76: + movs r0, #1 +_080AFE78: + strh r0, [r1, #2] + movs r0, #0x78 +_080AFE7C: + strh r0, [r1, #4] + movs r0, #0x50 + strh r0, [r1, #6] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AFE30 + + thumb_func_start sub_080AFE88 +sub_080AFE88: @ 0x080AFE88 + push {lr} + ldr r0, _080AFEA8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080AFEAC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #6 + strh r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_080AFEA8: .4byte sub_080AFC14 +_080AFEAC: .4byte gUnknown_3005B60 + thumb_func_end sub_080AFE88 + + thumb_func_start sub_080AFEB0 +sub_080AFEB0: @ 0x080AFEB0 + push {lr} + bl sub_08085318 + ldr r0, _080AFEC4 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080AFEC4: .4byte sub_080AFEC8 + thumb_func_end sub_080AFEB0 + + thumb_func_start sub_080AFEC8 +sub_080AFEC8: @ 0x080AFEC8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080AFEE4 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080AFEE4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AFEC8 + + thumb_func_start sub_080AFEEC +sub_080AFEEC: @ 0x080AFEEC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080AFF0C + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080AFF10 + cmp r0, #1 + beq _080AFF2A + b _080AFF4E + .align 2, 0 +_080AFF0C: .4byte gUnknown_3005B68 +_080AFF10: + bl sub_080FB730 + cmp r0, #0 + bne _080AFF4E + ldrb r0, [r4, #2] + bl sub_08145FB4 + bl sub_081BE3C8 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080AFF4E +_080AFF2A: + bl sub_08145FE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080AFF4E + bl sub_0808569C + ldr r0, _080AFF54 + bl sub_08000540 + bl sub_0809C4B4 + bl sub_0809C458 + adds r0, r5, #0 + bl sub_080A8964 +_080AFF4E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFF54: .4byte sub_080365B4 + thumb_func_end sub_080AFEEC + + thumb_func_start sub_080AFF58 +sub_080AFF58: @ 0x080AFF58 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080AFF8C + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080AFF90 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + adds r0, r5, #0 + bl sub_0806E0F4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080AFF8C: .4byte sub_080AFEEC +_080AFF90: .4byte gUnknown_3005B60 + thumb_func_end sub_080AFF58 + + thumb_func_start sub_080AFF94 +sub_080AFF94: @ 0x080AFF94 + push {lr} + bl sub_080FC910 + cmp r0, #0 + beq _080AFFA4 + bl sub_080B0078 + b _080AFFA8 +_080AFFA4: + bl sub_080AFFB8 +_080AFFA8: + pop {r0} + bx r0 + thumb_func_end sub_080AFF94 + + thumb_func_start sub_080AFFAC +sub_080AFFAC: @ 0x080AFFAC + push {lr} + bl sub_080B00B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080AFFAC + + thumb_func_start sub_080AFFB8 +sub_080AFFB8: @ 0x080AFFB8 + push {r4, lr} + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B658 + ldr r1, _080B0018 + ldr r0, _080B001C + str r0, [r1, #8] + ldr r4, _080B0020 + movs r0, #0 + str r0, [r4] + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080AFFEE + ldr r0, _080B0024 + movs r1, #0 + bl sub_0809CF88 + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r4] +_080AFFEE: + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0018: .4byte gUnknown_3002360 +_080B001C: .4byte sub_080B03F4 +_080B0020: .4byte gUnknown_2022C90 +_080B0024: .4byte 0x0000400E + thumb_func_end sub_080AFFB8 + + thumb_func_start sub_080B0028 +sub_080B0028: @ 0x080B0028 + push {lr} + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B658 + ldr r1, _080B006C + ldr r0, _080B0070 + str r0, [r1, #8] + ldr r1, _080B0074 + movs r0, #0x80 + lsls r0, r0, #3 + str r0, [r1] + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 +_080B006C: .4byte gUnknown_3002360 +_080B0070: .4byte sub_080B03F4 +_080B0074: .4byte gUnknown_2022C90 + thumb_func_end sub_080B0028 + + thumb_func_start sub_080B0078 +sub_080B0078: @ 0x080B0078 + push {lr} + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B658 + ldr r1, _080B00A4 + ldr r0, _080B00A8 + str r0, [r1, #8] + ldr r1, _080B00AC + movs r0, #0x80 + str r0, [r1] + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + pop {r0} + bx r0 + .align 2, 0 +_080B00A4: .4byte gUnknown_3002360 +_080B00A8: .4byte sub_080FCA00 +_080B00AC: .4byte gUnknown_2022C90 + thumb_func_end sub_080B0078 + + thumb_func_start sub_080B00B0 +sub_080B00B0: @ 0x080B00B0 + push {lr} + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B658 + ldr r1, _080B00F4 + ldr r0, _080B00F8 + str r0, [r1, #8] + ldr r1, _080B00FC + movs r0, #0x80 + lsls r0, r0, #0xd + str r0, [r1] + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 +_080B00F4: .4byte gUnknown_3002360 +_080B00F8: .4byte sub_080B03F4 +_080B00FC: .4byte gUnknown_2022C90 + thumb_func_end sub_080B00B0 + + thumb_func_start sub_080B0100 +sub_080B0100: @ 0x080B0100 + push {lr} + bl sub_080B0824 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #9 + bl sub_0808414C + bl sub_080B0B20 + pop {r0} + bx r0 + thumb_func_end sub_080B0100 + + thumb_func_start sub_080B0124 +sub_080B0124: @ 0x080B0124 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B0142 + movs r0, #0xa + bl sub_080B08F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + b _080B0152 +_080B0142: + movs r0, #0xb + bl sub_080B08F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 +_080B0152: + movs r0, #7 + bl sub_0808414C + movs r0, #9 + bl sub_0808414C + bl sub_080B0B20 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B0124 + + thumb_func_start sub_080B0168 +sub_080B0168: @ 0x080B0168 + push {lr} + ldr r0, _080B0194 + movs r1, #0xc4 + lsls r1, r1, #1 + movs r2, #5 + bl sub_08067BDC + bl sub_080987DC + ldr r1, _080B0198 + ldr r0, _080B019C + str r0, [r1, #8] + ldr r1, _080B01A0 + movs r0, #0x80 + lsls r0, r0, #2 + str r0, [r1] + movs r0, #8 + movs r1, #0 + bl sub_080AFF58 + pop {r0} + bx r0 + .align 2, 0 +_080B0194: .4byte gUnknown_20243E8 +_080B0198: .4byte gUnknown_3002360 +_080B019C: .4byte sub_08085B34 +_080B01A0: .4byte gUnknown_2022C90 + thumb_func_end sub_080B0168 + + thumb_func_start sub_080B01A4 +sub_080B01A4: @ 0x080B01A4 + push {lr} + bl sub_080987DC + ldr r1, _080B01DC + ldr r0, _080B01E0 + str r0, [r1, #8] + ldr r1, _080B01E4 + movs r0, #0 + str r0, [r1] + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 +_080B01DC: .4byte gUnknown_3002360 +_080B01E0: .4byte sub_080B0468 +_080B01E4: .4byte gUnknown_2022C90 + thumb_func_end sub_080B01A4 + + thumb_func_start sub_080B01E8 +sub_080B01E8: @ 0x080B01E8 + push {lr} + bl sub_080987DC + ldr r1, _080B0224 + ldr r0, _080B0228 + str r0, [r1, #8] + ldr r1, _080B022C + movs r0, #0x80 + lsls r0, r0, #6 + str r0, [r1] + bl sub_080B07B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 +_080B0224: .4byte gUnknown_3002360 +_080B0228: .4byte sub_080B0468 +_080B022C: .4byte gUnknown_2022C90 + thumb_func_end sub_080B01E8 + + thumb_func_start sub_080B0230 +sub_080B0230: @ 0x080B0230 + push {r4, lr} + bl sub_080987DC + ldr r1, _080B0270 + ldr r0, _080B0274 + str r0, [r1, #8] + ldr r4, _080B0278 + movs r0, #0x80 + lsls r0, r0, #6 + str r0, [r4] + ldr r0, _080B027C + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0xca + lsls r0, r0, #1 + cmp r1, r0 + beq _080B02B4 + cmp r1, r0 + bhi _080B0284 + cmp r1, #0x97 + beq _080B02F0 + cmp r1, #0x97 + blo _080B0296 + cmp r1, #0xfa + bhi _080B0296 + cmp r1, #0xf9 + blo _080B0296 + ldr r1, _080B0280 + b _080B02E2 + .align 2, 0 +_080B0270: .4byte gUnknown_3002360 +_080B0274: .4byte sub_080B0468 +_080B0278: .4byte gUnknown_2022C90 +_080B027C: .4byte gUnknown_20243E8 +_080B0280: .4byte 0x00000229 +_080B0284: + movs r0, #0xcb + lsls r0, r0, #1 + cmp r1, r0 + beq _080B02CA + cmp r1, r0 + blo _080B0296 + adds r0, #4 + cmp r1, r0 + beq _080B02E0 +_080B0296: + ldr r2, _080B02B0 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x15 + orrs r0, r1 + str r0, [r2] + movs r1, #0xf0 + lsls r1, r1, #1 + movs r0, #0x17 + bl sub_080AFF58 + b _080B02FA + .align 2, 0 +_080B02B0: .4byte gUnknown_2022C90 +_080B02B4: + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0x16 + orrs r0, r1 + str r0, [r4] + movs r1, #0xf0 + lsls r1, r1, #1 + movs r0, #0x16 + bl sub_080AFF58 + b _080B02FA +_080B02CA: + ldr r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0x17 + orrs r0, r1 + str r0, [r4] + movs r1, #0xeb + lsls r1, r1, #1 + movs r0, #0x18 + bl sub_080AFF58 + b _080B02FA +_080B02E0: + ldr r1, _080B02EC +_080B02E2: + movs r0, #0 + bl sub_080AFF58 + b _080B02FA + .align 2, 0 +_080B02EC: .4byte 0x00000227 +_080B02F0: + movs r1, #0xec + lsls r1, r1, #1 + movs r0, #0xa + bl sub_080AFF58 +_080B02FA: + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B0230 + + thumb_func_start sub_080B0314 +sub_080B0314: @ 0x080B0314 + push {lr} + bl sub_080987DC + ldr r1, _080B033C + ldr r0, _080B0340 + str r0, [r1, #8] + ldr r1, _080B0344 + movs r0, #0xc0 + lsls r0, r0, #6 + str r0, [r1] + ldr r0, _080B0348 + ldrb r0, [r0] + cmp r0, #2 + bne _080B034C + movs r1, #0xf0 + lsls r1, r1, #1 + movs r0, #0xb + bl sub_080AFF58 + b _080B0356 + .align 2, 0 +_080B033C: .4byte gUnknown_3002360 +_080B0340: .4byte sub_080B0468 +_080B0344: .4byte gUnknown_2022C90 +_080B0348: .4byte gUnknown_829BDA4 +_080B034C: + movs r1, #0xf0 + lsls r1, r1, #1 + movs r0, #6 + bl sub_080AFF58 +_080B0356: + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B0314 + + thumb_func_start sub_080B0370 +sub_080B0370: @ 0x080B0370 + push {lr} + bl sub_080987DC + ldr r1, _080B03A8 + ldr r0, _080B03AC + str r0, [r1, #8] + ldr r1, _080B03B0 + movs r0, #0xc0 + lsls r0, r0, #7 + str r0, [r1] + ldr r0, _080B03B4 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r1, #0 + movs r0, #0xc9 + lsls r0, r0, #1 + cmp r1, r0 + beq _080B03C8 + cmp r1, r0 + bgt _080B03B8 + subs r0, #1 + cmp r1, r0 + beq _080B03C4 + b _080B03D0 + .align 2, 0 +_080B03A8: .4byte gUnknown_3002360 +_080B03AC: .4byte sub_080B0468 +_080B03B0: .4byte gUnknown_2022C90 +_080B03B4: .4byte gUnknown_20243E8 +_080B03B8: + ldr r0, _080B03C0 + cmp r2, r0 + beq _080B03CC + b _080B03D0 + .align 2, 0 +_080B03C0: .4byte 0x00000193 +_080B03C4: + movs r0, #0x15 + b _080B03D2 +_080B03C8: + movs r0, #0x13 + b _080B03D2 +_080B03CC: + movs r0, #0x14 + b _080B03D2 +_080B03D0: + movs r0, #0xa +_080B03D2: + ldr r1, _080B03F0 + bl sub_080AFF58 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 + pop {r0} + bx r0 + .align 2, 0 +_080B03F0: .4byte 0x000001DF + thumb_func_end sub_080B0370 + + thumb_func_start sub_080B03F4 +sub_080B03F4: @ 0x080B03F4 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _080B043C + mov r0, sp + bl CpuSet + movs r0, #0 + movs r1, #0x80 + bl sub_08006E68 + ldr r0, _080B0440 + ldrb r0, [r0] + bl sub_080B0B94 + cmp r0, #1 + bne _080B0448 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B0448 + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B0448 + ldr r0, _080B0444 + bl sub_08000540 + b _080B0454 + .align 2, 0 +_080B043C: .4byte 0x01000100 +_080B0440: .4byte gUnknown_2023FDE +_080B0444: .4byte sub_080858C0 +_080B0448: + ldr r0, _080B045C + bl sub_08000540 + ldr r1, _080B0460 + ldr r0, _080B0464 + str r0, [r1] +_080B0454: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080B045C: .4byte sub_08085A30 +_080B0460: .4byte gUnknown_3005B0C +_080B0464: .4byte sub_080AEFEC + thumb_func_end sub_080B03F4 + + thumb_func_start sub_080B0468 +sub_080B0468: @ 0x080B0468 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _080B04A4 + mov r0, sp + bl CpuSet + movs r0, #0 + movs r1, #0x80 + bl sub_08006E68 + ldr r0, _080B04A8 + ldrb r0, [r0] + bl sub_080B0B94 + cmp r0, #1 + bne _080B04BC + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B04B0 + ldr r0, _080B04AC + bl sub_08000540 + b _080B04C2 + .align 2, 0 +_080B04A4: .4byte 0x01000100 +_080B04A8: .4byte gUnknown_2023FDE +_080B04AC: .4byte sub_08085B34 +_080B04B0: + ldr r0, _080B04B8 + bl sub_08000540 + b _080B04C2 + .align 2, 0 +_080B04B8: .4byte sub_080858C0 +_080B04BC: + ldr r0, _080B04C8 + bl sub_08000540 +_080B04C2: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080B04C8: .4byte sub_08085B34 + thumb_func_end sub_080B0468 + + thumb_func_start sub_080B04CC +sub_080B04CC: @ 0x080B04CC + push {r4, r5, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088DAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B0502 + movs r0, #0 + b _080B0616 +_080B0502: + adds r0, r4, #0 + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B0512 + movs r0, #1 + b _080B0616 +_080B0512: + adds r0, r4, #0 + bl sub_080887E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B0614 + ldr r0, _080B0534 + ldrb r0, [r0, #0x17] + subs r0, #1 + cmp r0, #8 + bhi _080B0598 + lsls r0, r0, #2 + ldr r1, _080B0538 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B0534: .4byte gUnknown_2036FB8 +_080B0538: .4byte _080B053C +_080B053C: @ jump table + .4byte _080B0598 @ case 0 + .4byte _080B0598 @ case 1 + .4byte _080B0598 @ case 2 + .4byte _080B0560 @ case 3 + .4byte _080B0584 @ case 4 + .4byte _080B0588 @ case 5 + .4byte _080B0598 @ case 6 + .4byte _080B0570 @ case 7 + .4byte _080B0570 @ case 8 +_080B0560: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088EEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B0574 +_080B0570: + movs r0, #8 + b _080B0616 +_080B0574: + adds r0, r4, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B05DC + movs r0, #7 + b _080B0616 +_080B0584: + movs r0, #3 + b _080B0616 +_080B0588: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B05EE + b _080B060C +_080B0598: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B05EE + adds r0, r4, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B05DC + adds r0, r4, #0 + bl sub_08088F00 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B05C4 + movs r0, #6 + b _080B0616 +_080B05C4: + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B05F2 + adds r0, r4, #0 + bl sub_08088E38 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B05E0 +_080B05DC: + movs r0, #5 + b _080B0616 +_080B05E0: + adds r0, r4, #0 + bl sub_08088E10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B05F2 +_080B05EE: + movs r0, #4 + b _080B0616 +_080B05F2: + ldr r0, _080B0610 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xe0 + lsls r0, r0, #5 + cmp r1, r0 + beq _080B0614 + bl sub_080AE6A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + beq _080B0614 +_080B060C: + movs r0, #9 + b _080B0616 + .align 2, 0 +_080B0610: .4byte gUnknown_3005AEC +_080B0614: + movs r0, #2 +_080B0616: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B04CC + + thumb_func_start sub_080B0620 +sub_080B0620: @ 0x080B0620 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_08084E7C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B0650 + movs r0, #2 + b _080B067A +_080B0650: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B0678 + ldr r0, _080B0670 + ldrb r0, [r0, #0x17] + cmp r0, #4 + beq _080B0674 + cmp r0, #5 + beq _080B0678 + movs r0, #0 + b _080B067A + .align 2, 0 +_080B0670: .4byte gUnknown_2036FB8 +_080B0674: + movs r0, #1 + b _080B067A +_080B0678: + movs r0, #3 +_080B067A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B0620 + + thumb_func_start sub_080B0684 +sub_080B0684: @ 0x080B0684 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r7, #0 + movs r6, #0 +_080B068E: + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _080B06E0 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _080B06D2 + cmp r1, #0 + beq _080B06D2 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080B06D2 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r0, r7, r0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _080B06D8 +_080B06D2: + adds r6, #1 + cmp r6, #5 + ble _080B068E +_080B06D8: + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B06E0: .4byte gUnknown_2024190 + thumb_func_end sub_080B0684 + + thumb_func_start sub_080B06E4 +sub_080B06E4: @ 0x080B06E4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r5, _080B070C + lsrs r2, r0, #0xb + adds r4, r2, r5 + ldrb r0, [r4, #0x18] + cmp r0, r1 + bhs _080B06FA + adds r1, r0, #0 +_080B06FA: + movs r3, #0 + ldrb r0, [r4] + cmp r0, #1 + beq _080B0740 + cmp r0, #1 + bgt _080B0710 + cmp r0, #0 + beq _080B071A + b _080B07B0 + .align 2, 0 +_080B070C: .4byte gUnknown_82E383C +_080B0710: + cmp r0, #2 + beq _080B0766 + cmp r0, #3 + beq _080B078C + b _080B07B0 +_080B071A: + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r4, [r0] + movs r2, #0 + cmp r3, r1 + bhs _080B07B0 +_080B0728: + lsls r0, r2, #3 + adds r0, r0, r4 + ldrb r0, [r0, #2] + adds r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080B0728 + b _080B07B0 +_080B0740: + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r4, [r0] + movs r2, #0 + cmp r3, r1 + bhs _080B07B0 +_080B074E: + lsls r0, r2, #4 + adds r0, r0, r4 + ldrb r0, [r0, #2] + adds r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080B074E + b _080B07B0 +_080B0766: + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r4, [r0] + movs r2, #0 + cmp r3, r1 + bhs _080B07B0 +_080B0774: + lsls r0, r2, #3 + adds r0, r0, r4 + ldrb r0, [r0, #2] + adds r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080B0774 + b _080B07B0 +_080B078C: + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r4, [r0] + movs r2, #0 + cmp r3, r1 + bhs _080B07B0 +_080B079A: + lsls r0, r2, #4 + adds r0, r0, r4 + ldrb r0, [r0, #2] + adds r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080B079A +_080B07B0: + adds r0, r3, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B06E4 + + thumb_func_start sub_080B07B8 +sub_080B07B8: @ 0x080B07B8 + push {r4, r5, r6, lr} + bl sub_080B0620 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + ldr r0, _080B07F0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_080B0684 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bhs _080B0800 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B07F4 + movs r0, #0 + b _080B081E + .align 2, 0 +_080B07F0: .4byte gUnknown_20243E8 +_080B07F4: + ldr r0, _080B07FC + lsls r1, r5, #1 + b _080B0810 + .align 2, 0 +_080B07FC: .4byte gUnknown_852AB24 +_080B0800: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B081C + ldr r0, _080B0818 + lsls r1, r6, #1 + adds r0, #1 +_080B0810: + adds r1, r1, r0 + ldrb r0, [r1] + b _080B081E + .align 2, 0 +_080B0818: .4byte gUnknown_852AB24 +_080B081C: + movs r0, #0xa +_080B081E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B07B8 + + thumb_func_start sub_080B0824 +sub_080B0824: @ 0x080B0824 + push {r4, r5, r6, lr} + ldr r4, _080B084C + ldrh r1, [r4] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + beq _080B0884 + ldr r1, _080B0850 + ldrh r2, [r4] + lsls r0, r2, #5 + adds r0, r0, r1 + ldrb r1, [r0, #1] + cmp r1, #0x1f + bne _080B0880 + adds r1, r2, #0 + ldr r0, _080B0854 + cmp r1, r0 + bne _080B0858 + movs r0, #0xc + b _080B08EC + .align 2, 0 +_080B084C: .4byte gUnknown_203886A +_080B0850: .4byte gUnknown_82E383C +_080B0854: .4byte 0x00000105 +_080B0858: + movs r0, #0x83 + lsls r0, r0, #1 + cmp r1, r0 + bne _080B0864 + movs r0, #0xd + b _080B08EC +_080B0864: + ldr r0, _080B0870 + cmp r1, r0 + bne _080B0874 + movs r0, #0xe + b _080B08EC + .align 2, 0 +_080B0870: .4byte 0x00000107 +_080B0874: + movs r0, #0x84 + lsls r0, r0, #1 + cmp r1, r0 + bne _080B0884 + movs r0, #0xf + b _080B08EC +_080B0880: + cmp r1, #0x26 + bne _080B0888 +_080B0884: + movs r0, #0x10 + b _080B08EC +_080B0888: + cmp r1, #9 + beq _080B0894 + cmp r1, #0x35 + beq _080B0894 + cmp r1, #0x31 + bne _080B0898 +_080B0894: + movs r0, #0x12 + b _080B08EC +_080B0898: + cmp r1, #3 + beq _080B08A4 + cmp r1, #0xd + beq _080B08A4 + cmp r1, #0xb + bne _080B08A8 +_080B08A4: + movs r0, #0x11 + b _080B08EC +_080B08A8: + ldrb r0, [r0, #0x12] + movs r5, #1 + cmp r0, #1 + bne _080B08B2 + movs r5, #2 +_080B08B2: + bl sub_080B0620 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrh r0, [r4] + adds r1, r5, #0 + bl sub_080B06E4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_080B0684 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _080B08E4 + ldr r0, _080B08E0 + lsls r1, r6, #1 + adds r0, #1 + b _080B08E8 + .align 2, 0 +_080B08E0: .4byte gUnknown_852AB2C +_080B08E4: + ldr r0, _080B08F4 + lsls r1, r6, #1 +_080B08E8: + adds r1, r1, r0 + ldrb r0, [r1] +_080B08EC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B08F4: .4byte gUnknown_852AB2C + thumb_func_end sub_080B0824 + + thumb_func_start sub_080B08F8 +sub_080B08F8: @ 0x080B08F8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B0928 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_080B0684 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bhs _080B097C + cmp r5, #0xa + beq _080B0934 + cmp r5, #0xa + bgt _080B092C + cmp r5, #3 + beq _080B0948 + b _080B0958 + .align 2, 0 +_080B0928: .4byte gUnknown_20243E8 +_080B092C: + cmp r5, #0xd + bgt _080B0958 + movs r0, #4 + b _080B0A0C +_080B0934: + ldr r4, _080B0944 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + b _080B0A00 + .align 2, 0 +_080B0944: .4byte gUnknown_852AB40 +_080B0948: + ldr r4, _080B0954 + bl sub_0806F050 + ands r5, r0 + lsls r0, r5, #0x10 + b _080B0A06 + .align 2, 0 +_080B0954: .4byte gUnknown_852AB43 +_080B0958: + ldr r0, _080B0974 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + beq _080B09D8 + ldr r4, _080B0978 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080B09FE + .align 2, 0 +_080B0974: .4byte 0x000040CE +_080B0978: .4byte gUnknown_852AB34 +_080B097C: + cmp r5, #0xa + beq _080B0992 + cmp r5, #0xa + bgt _080B098A + cmp r5, #3 + beq _080B09A4 + b _080B09B4 +_080B098A: + cmp r5, #0xd + bgt _080B09B4 + movs r0, #3 + b _080B0A0C +_080B0992: + ldr r4, _080B09A0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + b _080B0A00 + .align 2, 0 +_080B09A0: .4byte gUnknown_852AB40 +_080B09A4: + ldr r4, _080B09B0 + bl sub_0806F050 + ands r5, r0 + lsls r0, r5, #0x10 + b _080B0A06 + .align 2, 0 +_080B09B0: .4byte gUnknown_852AB43 +_080B09B4: + ldr r0, _080B09D0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + beq _080B09D8 + ldr r4, _080B09D4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080B09FE + .align 2, 0 +_080B09D0: .4byte 0x000040CE +_080B09D4: .4byte gUnknown_852AB34 +_080B09D8: + ldr r0, _080B0A14 + ldr r1, [r0] + ldr r2, _080B0A18 + adds r0, r1, r2 + ldrh r0, [r0] + lsls r2, r0, #2 + ldr r3, _080B0A1C + adds r1, r1, r3 + adds r2, r1, r2 + lsls r0, r0, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080B0A20 +_080B09FE: + movs r1, #0xc +_080B0A00: + bl __umodsi3 + lsls r0, r0, #0x10 +_080B0A06: + lsrs r0, r0, #0x10 + adds r0, r0, r4 + ldrb r0, [r0] +_080B0A0C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B0A14: .4byte gUnknown_3005AF0 +_080B0A18: .4byte 0x00000CB2 +_080B0A1C: .4byte 0x00000CB4 +_080B0A20: .4byte gUnknown_852AB34 + thumb_func_end sub_080B08F8 + + thumb_func_start sub_080B0A24 +sub_080B0A24: @ 0x080B0A24 + push {lr} + ldr r0, _080B0A38 + bl sub_08000540 + ldr r1, _080B0A3C + ldr r0, _080B0A40 + str r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_080B0A38: .4byte sub_08133EC4 +_080B0A3C: .4byte gUnknown_3002360 +_080B0A40: .4byte sub_080B0A44 + thumb_func_end sub_080B0A24 + + thumb_func_start sub_080B0A44 +sub_080B0A44: @ 0x080B0A44 + push {lr} + sub sp, #8 + ldr r0, _080B0A88 + bl sub_0809CF20 + ldr r2, _080B0A8C + ldrh r1, [r2] + strh r1, [r0] + ldrh r0, [r2] + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + movs r1, #5 + movs r2, #0 + movs r3, #0 + bl sub_080F9AD4 + bl sub_080A8818 + bl sub_0806E0D8 + ldr r0, _080B0A90 + bl sub_08000540 + movs r0, #0 + bl sub_08145FD0 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080B0A88: .4byte 0x00004023 +_080B0A8C: .4byte gUnknown_2037290 +_080B0A90: .4byte sub_080B0A94 + thumb_func_end sub_080B0A44 + + thumb_func_start sub_080B0A94 +sub_080B0A94: @ 0x080B0A94 + push {lr} + bl sub_080A12E4 + bl sub_080A89D4 + bl sub_08145FE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B0ADC + ldr r1, _080B0AE0 + movs r0, #0x10 + str r0, [r1] + ldr r1, _080B0AE4 + ldr r0, _080B0AE8 + str r0, [r1, #8] + bl sub_080034D4 + ldr r0, _080B0AEC + bl sub_08000540 + bl sub_0809C4B4 + bl sub_0809C458 + movs r0, #7 + bl sub_0808414C + movs r0, #8 + bl sub_0808414C + bl sub_080EF7CC + bl sub_080B0B04 +_080B0ADC: + pop {r0} + bx r0 + .align 2, 0 +_080B0AE0: .4byte gUnknown_2022C90 +_080B0AE4: .4byte gUnknown_3002360 +_080B0AE8: .4byte sub_080B0AF0 +_080B0AEC: .4byte sub_080365B4 + thumb_func_end sub_080B0A94 + + thumb_func_start sub_080B0AF0 +sub_080B0AF0: @ 0x080B0AF0 + push {lr} + bl sub_08085168 + ldr r0, _080B0B00 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080B0B00: .4byte sub_08085B34 + thumb_func_end sub_080B0AF0 + + thumb_func_start sub_080B0B04 +sub_080B0B04: @ 0x080B0B04 + push {lr} + movs r0, #8 + bl sub_08084180 + movs r1, #0x3c + bl __umodsi3 + cmp r0, #0 + bne _080B0B1A + bl sub_081D9DCC +_080B0B1A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B0B04 + + thumb_func_start sub_080B0B20 +sub_080B0B20: @ 0x080B0B20 + push {lr} + movs r0, #9 + bl sub_08084180 + movs r1, #0x14 + bl __umodsi3 + cmp r0, #0 + bne _080B0B36 + bl sub_081D9DCC +_080B0B36: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B0B20 + + thumb_func_start sub_080B0B3C +sub_080B0B3C: @ 0x080B0B3C + adds r2, r0, #0 + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + orrs r0, r1 + ldrb r1, [r2, #2] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #3] + lsls r1, r1, #0x18 + orrs r0, r1 + bx lr + thumb_func_end sub_080B0B3C + + thumb_func_start sub_080B0B54 +sub_080B0B54: @ 0x080B0B54 + adds r1, r0, #0 + ldrb r0, [r1] + ldrb r1, [r1, #1] + lsls r1, r1, #8 + orrs r0, r1 + bx lr + thumb_func_end sub_080B0B54 + + thumb_func_start sub_080B0B60 +sub_080B0B60: @ 0x080B0B60 + ldrb r0, [r0] + bx lr + thumb_func_end sub_080B0B60 + + thumb_func_start sub_080B0B64 +sub_080B0B64: @ 0x080B0B64 + ldr r1, _080B0B78 + movs r2, #0xa0 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080B0B78: .4byte gUnknown_203886A + thumb_func_end sub_080B0B64 + + thumb_func_start sub_080B0B7C +sub_080B0B7C: @ 0x080B0B7C + ldr r1, _080B0B90 + movs r2, #0xa0 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080B0B90: .4byte gUnknown_203886C + thumb_func_end sub_080B0B7C + + thumb_func_start sub_080B0B94 +sub_080B0B94: @ 0x080B0B94 + push {lr} + subs r0, #1 + cmp r0, #6 + bhi _080B0BCC + lsls r0, r0, #2 + ldr r1, _080B0BA8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B0BA8: .4byte _080B0BAC +_080B0BAC: @ jump table + .4byte _080B0BCC @ case 0 + .4byte _080B0BC8 @ case 1 + .4byte _080B0BC8 @ case 2 + .4byte _080B0BCC @ case 3 + .4byte _080B0BCC @ case 4 + .4byte _080B0BCC @ case 5 + .4byte _080B0BCC @ case 6 +_080B0BC8: + movs r0, #1 + b _080B0BCE +_080B0BCC: + movs r0, #0 +_080B0BCE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B0B94 + + thumb_func_start sub_080B0BD4 +sub_080B0BD4: @ 0x080B0BD4 + ldr r0, _080B0BE0 + movs r1, #0 + strh r1, [r0] + ldr r0, _080B0BE4 + strh r1, [r0] + bx lr + .align 2, 0 +_080B0BE0: .4byte gUnknown_203886A +_080B0BE4: .4byte gUnknown_203886C + thumb_func_end sub_080B0BD4 + + thumb_func_start sub_080B0BE8 +sub_080B0BE8: @ 0x080B0BE8 + push {lr} + ldr r0, _080B0C04 + movs r1, #0 + strh r1, [r0] + ldr r0, _080B0C08 + ldrb r1, [r0] + cmp r1, #0 + bne _080B0C18 + ldr r0, _080B0C0C + str r1, [r0] + ldr r0, _080B0C10 + str r1, [r0] + ldr r0, _080B0C14 + b _080B0C24 + .align 2, 0 +_080B0C04: .4byte gUnknown_2038868 +_080B0C08: .4byte gUnknown_203889C +_080B0C0C: .4byte gUnknown_2038874 +_080B0C10: .4byte gUnknown_203887C +_080B0C14: .4byte gUnknown_2038890 +_080B0C18: + ldr r0, _080B0C40 + movs r1, #0 + str r1, [r0] + ldr r0, _080B0C44 + str r1, [r0] + ldr r0, _080B0C48 +_080B0C24: + str r1, [r0] + ldr r1, _080B0C4C + movs r0, #0 + strh r0, [r1] + ldr r0, _080B0C50 + movs r1, #0 + str r1, [r0] + ldr r0, _080B0C54 + str r1, [r0] + ldr r0, _080B0C58 + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080B0C40: .4byte gUnknown_2038878 +_080B0C44: .4byte gUnknown_2038880 +_080B0C48: .4byte gUnknown_2038894 +_080B0C4C: .4byte gUnknown_2038870 +_080B0C50: .4byte gUnknown_2038884 +_080B0C54: .4byte gUnknown_2038888 +_080B0C58: .4byte gUnknown_203888C + thumb_func_end sub_080B0BE8 + + thumb_func_start sub_080B0C5C +sub_080B0C5C: @ 0x080B0C5C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 +_080B0C62: + ldrb r0, [r4, #4] + cmp r0, #6 + bhi _080B0CD4 + lsls r0, r0, #2 + ldr r1, _080B0C74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B0C74: .4byte _080B0C78 +_080B0C78: @ jump table + .4byte _080B0C94 @ case 0 + .4byte _080B0CA2 @ case 1 + .4byte _080B0CB0 @ case 2 + .4byte _080B0CBE @ case 3 + .4byte _080B0CC6 @ case 4 + .4byte _080B0CCE @ case 5 + .4byte _080B0CD8 @ case 6 +_080B0C94: + adds r0, r5, #0 + bl sub_080B0B60 + ldr r1, [r4] + strb r0, [r1] + adds r5, #1 + b _080B0CD4 +_080B0CA2: + adds r0, r5, #0 + bl sub_080B0B54 + ldr r1, [r4] + strh r0, [r1] + adds r5, #2 + b _080B0CD4 +_080B0CB0: + adds r0, r5, #0 + bl sub_080B0B3C + ldr r1, [r4] + str r0, [r1] + adds r5, #4 + b _080B0CD4 +_080B0CBE: + ldr r1, [r4] + movs r0, #0 + strb r0, [r1] + b _080B0CD4 +_080B0CC6: + ldr r1, [r4] + movs r0, #0 + strh r0, [r1] + b _080B0CD4 +_080B0CCE: + ldr r1, [r4] + movs r0, #0 + str r0, [r1] +_080B0CD4: + adds r4, #8 + b _080B0C62 +_080B0CD8: + ldr r0, [r4] + str r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B0C5C + + thumb_func_start sub_080B0CE4 +sub_080B0CE4: @ 0x080B0CE4 + push {lr} + ldr r0, _080B0D0C + ldrh r1, [r0] + cmp r1, #0 + beq _080B0D06 + ldr r0, _080B0D10 + strh r1, [r0] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B0D14 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808CE94 + ldr r1, _080B0D18 + strb r0, [r1] +_080B0D06: + pop {r0} + bx r0 + .align 2, 0 +_080B0D0C: .4byte gUnknown_2038870 +_080B0D10: .4byte gUnknown_2037292 +_080B0D14: .4byte gUnknown_3005AEC +_080B0D18: .4byte gUnknown_3005B50 + thumb_func_end sub_080B0CE4 + + thumb_func_start sub_080B0D1C +sub_080B0D1C: @ 0x080B0D1C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080B0BE8 + ldr r4, _080B0D48 + adds r0, r5, #0 + bl sub_080B0B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldrh r0, [r4] + subs r0, #1 + cmp r0, #0xb + bls _080B0D3C + b _080B0EE0 +_080B0D3C: + lsls r0, r0, #2 + ldr r1, _080B0D4C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B0D48: .4byte gUnknown_2038868 +_080B0D4C: .4byte _080B0D50 +_080B0D50: @ jump table + .4byte _080B0DB8 @ case 0 + .4byte _080B0D9C @ case 1 + .4byte _080B0D80 @ case 2 + .4byte _080B0D94 @ case 3 + .4byte _080B0E00 @ case 4 + .4byte _080B0DC0 @ case 5 + .4byte _080B0DD8 @ case 6 + .4byte _080B0DC0 @ case 7 + .4byte _080B0E28 @ case 8 + .4byte _080B0E7C @ case 9 + .4byte _080B0E84 @ case 10 + .4byte _080B0E94 @ case 11 +_080B0D80: + ldr r0, _080B0D8C + adds r1, r5, #0 + bl sub_080B0C5C + ldr r0, _080B0D90 + b _080B0F0A + .align 2, 0 +_080B0D8C: .4byte gUnknown_852AC20 +_080B0D90: .4byte gUnknown_824245C +_080B0D94: + ldr r0, _080B0D98 + b _080B0DC2 + .align 2, 0 +_080B0D98: .4byte gUnknown_852ABD8 +_080B0D9C: + ldr r0, _080B0DA8 + ldrb r0, [r0] + cmp r0, #0 + bne _080B0DB0 + ldr r0, _080B0DAC + b _080B0EEA + .align 2, 0 +_080B0DA8: .4byte gUnknown_203889C +_080B0DAC: .4byte gUnknown_852AB90 +_080B0DB0: + ldr r0, _080B0DB4 + b _080B0F02 + .align 2, 0 +_080B0DB4: .4byte gUnknown_852ACF8 +_080B0DB8: + ldr r0, _080B0DBC + b _080B0EEA + .align 2, 0 +_080B0DBC: .4byte gUnknown_852AB90 +_080B0DC0: + ldr r0, _080B0DD0 +_080B0DC2: + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + ldr r0, _080B0DD4 + b _080B0F0A + .align 2, 0 +_080B0DD0: .4byte gUnknown_852AC68 +_080B0DD4: .4byte gUnknown_8242424 +_080B0DD8: + ldr r0, _080B0DF4 + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + ldr r4, _080B0DF8 + ldrh r0, [r4] + bl sub_080B1B20 + strh r0, [r4] + ldr r0, _080B0DFC + b _080B0F0A + .align 2, 0 +_080B0DF4: .4byte gUnknown_852ABD8 +_080B0DF8: .4byte gUnknown_203886A +_080B0DFC: .4byte gUnknown_8242492 +_080B0E00: + ldr r0, _080B0E1C + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + ldr r4, _080B0E20 + ldrh r0, [r4] + bl sub_080B1B20 + strh r0, [r4] + ldr r0, _080B0E24 + b _080B0F0A + .align 2, 0 +_080B0E1C: .4byte gUnknown_852AB48 +_080B0E20: .4byte gUnknown_203886A +_080B0E24: .4byte gUnknown_824246B +_080B0E28: + ldr r0, _080B0E48 + ldrb r0, [r0] + cmp r0, #0 + bne _080B0E58 + ldr r0, _080B0E4C + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + ldr r0, _080B0E50 + ldrb r0, [r0] + bl sub_081A9820 + ldr r1, _080B0E54 + b _080B0E6A + .align 2, 0 +_080B0E48: .4byte gUnknown_203889C +_080B0E4C: .4byte gUnknown_852AB48 +_080B0E50: .4byte gUnknown_2037292 +_080B0E54: .4byte gUnknown_203886A +_080B0E58: + ldr r0, _080B0E70 + adds r1, r5, #0 + bl sub_080B0C5C + ldr r0, _080B0E74 + ldrb r0, [r0] + bl sub_081A9820 +_080B0E68: + ldr r1, _080B0E78 +_080B0E6A: + strh r0, [r1] + b _080B0F08 + .align 2, 0 +_080B0E70: .4byte gUnknown_852ACB0 +_080B0E74: .4byte gUnknown_2037292 +_080B0E78: .4byte gUnknown_203886C +_080B0E7C: + ldr r0, _080B0E80 + b _080B0E86 + .align 2, 0 +_080B0E80: .4byte gUnknown_852AB48 +_080B0E84: + ldr r0, _080B0E90 +_080B0E86: + adds r1, r5, #0 + bl sub_080B0C5C + movs r0, #0 + b _080B0F0A + .align 2, 0 +_080B0E90: .4byte gUnknown_852ACB0 +_080B0E94: + ldr r0, _080B0EB4 + ldrb r0, [r0] + cmp r0, #0 + bne _080B0EC4 + ldr r0, _080B0EB8 + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + ldr r0, _080B0EBC + ldrb r0, [r0] + bl sub_081D5B1C + ldr r1, _080B0EC0 + b _080B0E6A + .align 2, 0 +_080B0EB4: .4byte gUnknown_203889C +_080B0EB8: .4byte gUnknown_852AB48 +_080B0EBC: .4byte gUnknown_2037292 +_080B0EC0: .4byte gUnknown_203886A +_080B0EC4: + ldr r0, _080B0ED8 + adds r1, r5, #0 + bl sub_080B0C5C + ldr r0, _080B0EDC + ldrb r0, [r0] + bl sub_081D5B1C + b _080B0E68 + .align 2, 0 +_080B0ED8: .4byte gUnknown_852ACB0 +_080B0EDC: .4byte gUnknown_2037292 +_080B0EE0: + ldr r0, _080B0EF8 + ldrb r0, [r0] + cmp r0, #0 + bne _080B0F00 + ldr r0, _080B0EFC +_080B0EEA: + adds r1, r5, #0 + bl sub_080B0C5C + bl sub_080B0CE4 + b _080B0F08 + .align 2, 0 +_080B0EF8: .4byte gUnknown_203889C +_080B0EFC: .4byte gUnknown_852AB48 +_080B0F00: + ldr r0, _080B0F10 +_080B0F02: + adds r1, r5, #0 + bl sub_080B0C5C +_080B0F08: + ldr r0, _080B0F14 +_080B0F0A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B0F10: .4byte gUnknown_852ACB0 +_080B0F14: .4byte gUnknown_82423FC + thumb_func_end sub_080B0D1C + + thumb_func_start sub_080B0F18 +sub_080B0F18: @ 0x080B0F18 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B0F4C + strb r0, [r2] + ldr r4, _080B0F50 + ldr r3, _080B0F54 + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r0, [r2, #8] + strh r0, [r4] + adds r1, #1 + adds r0, r1, #0 + bl sub_080B0D1C + ldr r0, _080B0F58 + bl sub_08098880 + bl sub_080987DC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0F4C: .4byte gUnknown_3005B50 +_080B0F50: .4byte gUnknown_2037292 +_080B0F54: .4byte gUnknown_2036FF0 +_080B0F58: .4byte gUnknown_82423EE + thumb_func_end sub_080B0F18 + + thumb_func_start sub_080B0F5C +sub_080B0F5C: @ 0x080B0F5C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B0F84 + strb r0, [r2] + ldr r4, _080B0F88 + ldr r3, _080B0F8C + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r0, [r2, #8] + strh r0, [r4] + adds r1, #1 + adds r0, r1, #0 + bl sub_080B0D1C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0F84: .4byte gUnknown_3005B50 +_080B0F88: .4byte gUnknown_2037292 +_080B0F8C: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B0F5C + + thumb_func_start sub_080B0F90 +sub_080B0F90: @ 0x080B0F90 + push {lr} + ldr r0, _080B0FA0 + bl sub_08098880 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080B0FA0: .4byte gUnknown_82423EE + thumb_func_end sub_080B0F90 + + thumb_func_start sub_080B0FA4 +sub_080B0FA4: @ 0x080B0FA4 + push {lr} + adds r0, #2 + bl sub_080B0B54 + lsls r0, r0, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B0FA4 + + thumb_func_start sub_080B0FC4 +sub_080B0FC4: @ 0x080B0FC4 + push {r4, lr} + ldr r0, _080B0FF0 + ldrb r0, [r0] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B0FF4 + adds r4, r4, r0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080924E8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809249C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B0FF0: .4byte gUnknown_3005B50 +_080B0FF4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B0FC4 + + thumb_func_start sub_080B0FF8 +sub_080B0FF8: @ 0x080B0FF8 + ldr r0, _080B1000 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080B1000: .4byte gUnknown_2038868 + thumb_func_end sub_080B0FF8 + + thumb_func_start sub_080B1004 +sub_080B1004: @ 0x080B1004 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1020 + ldr r0, _080B101C + ldrb r0, [r0] + bl sub_081A983C + b _080B103E + .align 2, 0 +_080B101C: .4byte gUnknown_3005B50 +_080B1020: + bl sub_081D5A10 + cmp r0, #0 + bne _080B1036 + bl sub_080B0B64 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + b _080B103E +_080B1036: + ldr r0, _080B1048 + ldrb r0, [r0] + bl sub_081D5B38 +_080B103E: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080B1048: .4byte gUnknown_3005B50 + thumb_func_end sub_080B1004 + + thumb_func_start sub_080B104C +sub_080B104C: @ 0x080B104C + push {lr} + ldr r0, _080B1074 + ldrh r0, [r0] + cmp r0, #0 + beq _080B1062 + bl sub_080B0B7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 +_080B1062: + bl sub_080B0B64 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_080B1074: .4byte gUnknown_203886C + thumb_func_end sub_080B104C + + thumb_func_start sub_080B1078 +sub_080B1078: @ 0x080B1078 + push {lr} + bl sub_080B0B64 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B1078 + + thumb_func_start sub_080B108C +sub_080B108C: @ 0x080B108C + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080B108C + + thumb_func_start sub_080B10A4 +sub_080B10A4: @ 0x080B10A4 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D018 + pop {r0} + bx r0 + thumb_func_end sub_080B10A4 + + thumb_func_start sub_080B10B8 +sub_080B10B8: @ 0x080B10B8 + push {lr} + lsls r0, r0, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D040 + pop {r0} + bx r0 + thumb_func_end sub_080B10B8 + + thumb_func_start sub_080B10CC +sub_080B10CC: @ 0x080B10CC + push {r4, lr} + ldr r0, _080B10DC + ldrb r0, [r0] + cmp r0, #2 + bne _080B10E8 + ldr r1, _080B10E0 + ldr r0, _080B10E4 + b _080B10EC + .align 2, 0 +_080B10DC: .4byte gUnknown_3005E08 +_080B10E0: .4byte gUnknown_2022C90 +_080B10E4: .4byte 0x00008009 +_080B10E8: + ldr r1, _080B1140 + movs r0, #8 +_080B10EC: + str r0, [r1] + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1170 + ldr r0, _080B1144 + movs r1, #0 + bl sub_0809CF88 + ldr r2, _080B1140 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r2] + ldr r0, _080B1148 + ldrb r0, [r0] + cmp r0, #2 + bne _080B1150 + movs r0, #1 + bl sub_08162F8C + ldr r4, _080B114C + adds r0, r4, #0 + bl sub_08067670 + adds r0, r4, #0 + adds r0, #0x64 + bl sub_08067670 + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r4, r1 + bl sub_08067670 + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r4, r1 + bl sub_08067670 + b _080B1166 + .align 2, 0 +_080B1140: .4byte gUnknown_2022C90 +_080B1144: .4byte 0x0000400E +_080B1148: .4byte gUnknown_3005E08 +_080B114C: .4byte gUnknown_202444C +_080B1150: + movs r0, #1 + bl sub_08162F68 + ldr r4, _080B116C + adds r0, r4, #0 + bl sub_08067670 + adds r4, #0x64 + adds r0, r4, #0 + bl sub_08067670 +_080B1166: + bl sub_081A987C + b _080B11A4 + .align 2, 0 +_080B116C: .4byte gUnknown_202444C +_080B1170: + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B11A4 + ldr r2, _080B1194 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x13 + orrs r0, r1 + str r0, [r2] + ldr r0, _080B1198 + ldrb r0, [r0] + cmp r0, #2 + bne _080B119C + bl sub_081D5D38 + b _080B11A0 + .align 2, 0 +_080B1194: .4byte gUnknown_2022C90 +_080B1198: .4byte gUnknown_3005E08 +_080B119C: + bl sub_081D5D20 +_080B11A0: + bl sub_081D5B84 +_080B11A4: + ldr r1, _080B11DC + ldr r2, _080B11E0 + ldrb r0, [r2] + strb r0, [r1] + movs r1, #0 + strb r1, [r2] + ldr r0, _080B11E4 + strb r1, [r0] + ldr r1, _080B11E8 + movs r0, #0 + strh r0, [r1] + ldr r1, _080B11EC + ldr r0, _080B11F0 + str r0, [r1, #8] + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B11D4 + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B11F4 +_080B11D4: + bl sub_080B0124 + b _080B11F8 + .align 2, 0 +_080B11DC: .4byte gUnknown_2038899 +_080B11E0: .4byte gUnknown_3005E08 +_080B11E4: .4byte gUnknown_2038898 +_080B11E8: .4byte gUnknown_3005DE0 +_080B11EC: .4byte gUnknown_3002360 +_080B11F0: .4byte sub_080B1204 +_080B11F4: + bl sub_080B0100 +_080B11F8: + bl sub_080988B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B10CC + + thumb_func_start sub_080B1204 +sub_080B1204: @ 0x080B1204 + push {lr} + ldr r0, _080B123C + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + beq _080B1232 + ldr r0, _080B1240 + ldrb r0, [r0] + bl sub_080B0B94 + cmp r0, #1 + bne _080B1254 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B1232 + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1248 +_080B1232: + ldr r0, _080B1244 + bl sub_08000540 + b _080B1276 + .align 2, 0 +_080B123C: .4byte gUnknown_203886A +_080B1240: .4byte gUnknown_2023FDE +_080B1244: .4byte sub_08085B34 +_080B1248: + ldr r0, _080B1250 + bl sub_08000540 + b _080B1276 + .align 2, 0 +_080B1250: .4byte sub_080858C0 +_080B1254: + ldr r0, _080B127C + bl sub_08000540 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B1276 + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B1276 + bl sub_080B19A8 + bl sub_080B104C +_080B1276: + pop {r0} + bx r0 + .align 2, 0 +_080B127C: .4byte sub_08085B34 + thumb_func_end sub_080B1204 + + thumb_func_start sub_080B1280 +sub_080B1280: @ 0x080B1280 + push {lr} + ldr r0, _080B1298 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + bne _080B12A0 + ldr r0, _080B129C + bl sub_08000540 + b _080B12CE + .align 2, 0 +_080B1298: .4byte gUnknown_203886A +_080B129C: .4byte sub_08085B34 +_080B12A0: + ldr r0, _080B12B4 + ldrb r0, [r0] + bl sub_080B0B94 + cmp r0, #1 + bne _080B12BC + ldr r0, _080B12B8 + bl sub_08000540 + b _080B12CE + .align 2, 0 +_080B12B4: .4byte gUnknown_2023FDE +_080B12B8: .4byte sub_080858C0 +_080B12BC: + ldr r0, _080B12D4 + bl sub_08000540 + bl sub_080B19A8 + bl sub_080B104C + bl sub_080B1BA8 +_080B12CE: + pop {r0} + bx r0 + .align 2, 0 +_080B12D4: .4byte sub_08085B34 + thumb_func_end sub_080B1280 + + thumb_func_start sub_080B12D8 +sub_080B12D8: @ 0x080B12D8 + push {lr} + ldr r1, _080B12F4 + movs r0, #8 + str r0, [r1] + ldr r1, _080B12F8 + ldr r0, _080B12FC + str r0, [r1, #8] + bl sub_080B0100 + bl sub_080988B8 + pop {r0} + bx r0 + .align 2, 0 +_080B12F4: .4byte gUnknown_2022C90 +_080B12F8: .4byte gUnknown_3002360 +_080B12FC: .4byte sub_080B1280 + thumb_func_end sub_080B12D8 + + thumb_func_start sub_080B1300 +sub_080B1300: @ 0x080B1300 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1368 + ldr r0, _080B1328 + ldrb r0, [r0] + cmp r0, #1 + bhi _080B1330 + ldr r0, _080B132C + ldrb r0, [r0] + bl sub_081A9820 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081A9C54 + b _080B13C4 + .align 2, 0 +_080B1328: .4byte gUnknown_3005E08 +_080B132C: .4byte gUnknown_2037292 +_080B1330: + ldr r3, _080B135C + ldr r2, _080B1360 + ldr r0, _080B1364 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #8] + bl sub_081A9820 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081A9C54 + b _080B13C4 + .align 2, 0 +_080B135C: .4byte gUnknown_2036FF0 +_080B1360: .4byte gUnknown_3005DF0 +_080B1364: .4byte gUnknown_203889C +_080B1368: + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B13D8 + ldr r0, _080B1390 + ldrb r0, [r0] + cmp r0, #1 + bhi _080B1398 + ldr r0, _080B1394 + ldrb r0, [r0] + bl sub_081D5B1C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #2 + bl sub_081D4D80 + b _080B13C4 + .align 2, 0 +_080B1390: .4byte gUnknown_3005E08 +_080B1394: .4byte gUnknown_2037292 +_080B1398: + ldr r3, _080B13CC + ldr r2, _080B13D0 + ldr r0, _080B13D4 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #8] + bl sub_081D5B1C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #2 + bl sub_081D4D80 +_080B13C4: + bl sub_08097C40 + b _080B13E0 + .align 2, 0 +_080B13CC: .4byte gUnknown_2036FF0 +_080B13D0: .4byte gUnknown_3005DF0 +_080B13D4: .4byte gUnknown_203889C +_080B13D8: + bl sub_080B1568 + bl sub_08097B74 +_080B13E0: + pop {r0} + bx r0 + thumb_func_end sub_080B1300 + + thumb_func_start sub_080B13E4 +sub_080B13E4: @ 0x080B13E4 + push {lr} + ldr r0, _080B13F4 + ldr r0, [r0] + cmp r0, #0 + bne _080B13F0 + ldr r0, _080B13F8 +_080B13F0: + pop {r1} + bx r1 + .align 2, 0 +_080B13F4: .4byte gUnknown_203888C +_080B13F8: .4byte gUnknown_8276D3D + thumb_func_end sub_080B13E4 + + thumb_func_start sub_080B13FC +sub_080B13FC: @ 0x080B13FC + push {lr} + ldr r1, _080B141C + ldrb r2, [r1] + cmp r2, #0 + beq _080B1428 + movs r0, #0 + strb r0, [r1] + ldr r0, _080B1420 + ldr r2, [r0] + cmp r2, #0 + beq _080B1440 + ldr r1, _080B1424 + movs r0, #1 + strh r0, [r1] + adds r0, r2, #0 + b _080B1442 + .align 2, 0 +_080B141C: .4byte gUnknown_2038898 +_080B1420: .4byte gUnknown_2038894 +_080B1424: .4byte gUnknown_3005DE0 +_080B1428: + ldr r0, _080B1438 + ldr r1, [r0] + cmp r1, #0 + beq _080B1440 + ldr r0, _080B143C + strh r2, [r0] + adds r0, r1, #0 + b _080B1442 + .align 2, 0 +_080B1438: .4byte gUnknown_2038890 +_080B143C: .4byte gUnknown_3005DE0 +_080B1440: + ldr r0, _080B1448 +_080B1442: + pop {r1} + bx r1 + .align 2, 0 +_080B1448: .4byte gUnknown_8244D10 + thumb_func_end sub_080B13FC + + thumb_func_start sub_080B144C +sub_080B144C: @ 0x080B144C + push {lr} + bl sub_080B1604 + bl sub_08097B74 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B144C + + thumb_func_start sub_080B145C +sub_080B145C: @ 0x080B145C + push {lr} + ldr r0, _080B146C + ldrb r0, [r0] + cmp r0, #0 + bne _080B1474 + ldr r0, _080B1470 + b _080B1476 + .align 2, 0 +_080B146C: .4byte gUnknown_203889C +_080B1470: .4byte gUnknown_203886A +_080B1474: + ldr r0, _080B149C +_080B1476: + ldrh r1, [r0] + ldr r0, _080B14A0 + ldrh r0, [r0] + cmp r0, #1 + beq _080B154E + cmp r0, #8 + beq _080B154E + adds r0, r1, #0 + bl sub_0806D324 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + bhi _080B1548 + lsls r0, r0, #2 + ldr r1, _080B14A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B149C: .4byte gUnknown_203886C +_080B14A0: .4byte gUnknown_2038868 +_080B14A4: .4byte _080B14A8 +_080B14A8: @ jump table + .4byte _080B14E0 @ case 0 + .4byte _080B14E6 @ case 1 + .4byte _080B14F0 @ case 2 + .4byte _080B1548 @ case 3 + .4byte _080B14F8 @ case 4 + .4byte _080B14FE @ case 5 + .4byte _080B1508 @ case 6 + .4byte _080B1510 @ case 7 + .4byte _080B1518 @ case 8 + .4byte _080B1520 @ case 9 + .4byte _080B1528 @ case 10 + .4byte _080B152E @ case 11 + .4byte _080B1538 @ case 12 + .4byte _080B1540 @ case 13 +_080B14E0: + movs r0, #0xbe + lsls r0, r0, #1 + b _080B154A +_080B14E6: + ldr r0, _080B14EC + b _080B154A + .align 2, 0 +_080B14EC: .4byte 0x00000197 +_080B14F0: + ldr r0, _080B14F4 + b _080B154A + .align 2, 0 +_080B14F4: .4byte 0x0000017B +_080B14F8: + movs r0, #0xd0 + lsls r0, r0, #1 + b _080B154A +_080B14FE: + ldr r0, _080B1504 + b _080B154A + .align 2, 0 +_080B1504: .4byte 0x000001A1 +_080B1508: + ldr r0, _080B150C + b _080B154A + .align 2, 0 +_080B150C: .4byte 0x000001A3 +_080B1510: + ldr r0, _080B1514 + b _080B154A + .align 2, 0 +_080B1514: .4byte 0x000001B9 +_080B1518: + ldr r0, _080B151C + b _080B154A + .align 2, 0 +_080B151C: .4byte 0x00000181 +_080B1520: + ldr r0, _080B1524 + b _080B154A + .align 2, 0 +_080B1524: .4byte 0x000001C1 +_080B1528: + movs r0, #0xe1 + lsls r0, r0, #1 + b _080B154A +_080B152E: + ldr r0, _080B1534 + b _080B154A + .align 2, 0 +_080B1534: .4byte 0x000001C3 +_080B1538: + ldr r0, _080B153C + b _080B154A + .align 2, 0 +_080B153C: .4byte 0x000001C5 +_080B1540: + ldr r0, _080B1544 + b _080B154A + .align 2, 0 +_080B1544: .4byte 0x0000018D +_080B1548: + ldr r0, _080B1554 +_080B154A: + bl sub_080A27D8 +_080B154E: + pop {r0} + bx r0 + .align 2, 0 +_080B1554: .4byte 0x000001A7 + thumb_func_end sub_080B145C + + thumb_func_start sub_080B1558 +sub_080B1558: @ 0x080B1558 + push {lr} + cmp r0, #0 + bne _080B1560 + ldr r0, _080B1564 +_080B1560: + pop {r1} + bx r1 + .align 2, 0 +_080B1564: .4byte gUnknown_85C93D0 + thumb_func_end sub_080B1558 + + thumb_func_start sub_080B1568 +sub_080B1568: @ 0x080B1568 + push {lr} + ldr r0, _080B1578 + ldrb r0, [r0] + cmp r0, #0 + beq _080B1580 + ldr r0, _080B157C + b _080B1582 + .align 2, 0 +_080B1578: .4byte gUnknown_203889C +_080B157C: .4byte gUnknown_2038878 +_080B1580: + ldr r0, _080B158C +_080B1582: + ldr r0, [r0] + bl sub_080B1558 + pop {r1} + bx r1 + .align 2, 0 +_080B158C: .4byte gUnknown_2038874 + thumb_func_end sub_080B1568 + + thumb_func_start sub_080B1590 +sub_080B1590: @ 0x080B1590 + push {r4, lr} + ldr r0, _080B15A4 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + bne _080B15A8 + bl sub_080EAE98 + b _080B15AC + .align 2, 0 +_080B15A4: .4byte gUnknown_203886A +_080B15A8: + ldr r0, _080B15C4 + ldr r0, [r0] +_080B15AC: + ldr r4, _080B15C8 + bl sub_080B1558 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B15C4: .4byte gUnknown_203887C +_080B15C8: .4byte gUnknown_2021C7C + thumb_func_end sub_080B1590 + + thumb_func_start sub_080B15CC +sub_080B15CC: @ 0x080B15CC + push {r4, lr} + ldr r4, _080B15E8 + ldr r0, _080B15EC + ldr r0, [r0] + bl sub_080B1558 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B15E8: .4byte gUnknown_2021C7C +_080B15EC: .4byte gUnknown_2038880 + thumb_func_end sub_080B15CC + + thumb_func_start sub_080B15F0 +sub_080B15F0: @ 0x080B15F0 + push {lr} + ldr r0, _080B1600 + ldr r0, [r0] + bl sub_080B1558 + pop {r1} + bx r1 + .align 2, 0 +_080B1600: .4byte gUnknown_2038884 + thumb_func_end sub_080B15F0 + + thumb_func_start sub_080B1604 +sub_080B1604: @ 0x080B1604 + push {lr} + ldr r0, _080B1614 + ldr r0, [r0] + bl sub_080B1558 + pop {r1} + bx r1 + .align 2, 0 +_080B1614: .4byte gUnknown_2038888 + thumb_func_end sub_080B1604 + + thumb_func_start sub_080B1618 +sub_080B1618: @ 0x080B1618 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r3, #0 + adds r2, r0, #0 +_080B1622: + ldrh r0, [r2] + cmp r0, r1 + bne _080B162C + adds r0, r3, #0 + b _080B1638 +_080B162C: + adds r2, #0x10 + adds r3, #1 + cmp r3, #0x4d + ble _080B1622 + movs r0, #1 + rsbs r0, r0, #0 +_080B1638: + pop {r1} + bx r1 + thumb_func_end sub_080B1618 + + thumb_func_start sub_080B163C +sub_080B163C: @ 0x080B163C + push {r4, r5, lr} + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 + adds r2, r0, #0 +_080B1646: + movs r1, #0 + ldrh r0, [r2] + cmp r0, #0 + beq _080B166C + movs r3, #0 +_080B1650: + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, r5 + bne _080B165C + adds r0, r4, #0 + b _080B1678 +_080B165C: + adds r3, #2 + adds r1, #1 + cmp r1, #4 + bgt _080B166C + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, #0 + bne _080B1650 +_080B166C: + adds r2, #0x10 + adds r4, #1 + cmp r4, #0x4d + ble _080B1646 + movs r0, #1 + rsbs r0, r0, #0 +_080B1678: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B163C + + thumb_func_start sub_080B1680 +sub_080B1680: @ 0x080B1680 + push {lr} + cmp r0, #0x48 + ble _080B168A + movs r0, #1 + b _080B16A4 +_080B168A: + cmp r0, #0x40 + bne _080B16A2 + movs r0, #0x7e + bl sub_0809D068 + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B169E + movs r1, #1 +_080B169E: + adds r0, r1, #0 + b _080B16A4 +_080B16A2: + movs r0, #0 +_080B16A4: + pop {r1} + bx r1 + thumb_func_end sub_080B1680 + + thumb_func_start sub_080B16A8 +sub_080B16A8: @ 0x080B16A8 + push {r4, r5, r6, lr} + adds r6, r1, #0 + movs r5, #1 + lsls r1, r6, #4 + adds r1, r1, r0 + adds r4, r1, #2 + b _080B16BA +_080B16B6: + adds r4, #2 + adds r5, #1 +_080B16BA: + cmp r5, #4 + bgt _080B16CE + ldrh r0, [r4] + cmp r0, #0 + beq _080B16CE + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B16B6 +_080B16CE: + ldr r0, _080B16E0 + ldr r0, [r0] + ldr r1, _080B16E4 + adds r0, r0, r1 + adds r0, r0, r6 + strb r5, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B16E0: .4byte gUnknown_3005AEC +_080B16E4: .4byte 0x000009CA + thumb_func_end sub_080B16A8 + + thumb_func_start sub_080B16E8 +sub_080B16E8: @ 0x080B16E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + movs r7, #0 + movs r5, #0 + adds r4, r6, #0 + adds r4, #0xa +_080B1706: + ldrh r0, [r4] + cmp r0, sb + bne _080B1760 + ldrh r0, [r4, #2] + cmp r0, r8 + bne _080B1760 + adds r0, r5, #0 + bl sub_080B1680 + cmp r0, #0 + bne _080B1760 + ldr r0, _080B1778 + ldr r0, [r0] + ldr r1, _080B177C + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080B175E + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r5, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1760 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bhi _080B1760 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080B16A8 +_080B175E: + movs r7, #1 +_080B1760: + adds r4, #0x10 + adds r5, #1 + cmp r5, #0x40 + ble _080B1706 + adds r0, r7, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B1778: .4byte gUnknown_3005AEC +_080B177C: .4byte 0x000009CA + thumb_func_end sub_080B16E8 + + thumb_func_start sub_080B1780 +sub_080B1780: @ 0x080B1780 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080B17A8 + lsls r0, r4, #4 + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_080B108C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B17A0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080B16A8 +_080B17A0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B17A8: .4byte gUnknown_852AD40 + thumb_func_end sub_080B1780 + + thumb_func_start sub_080B17AC +sub_080B17AC: @ 0x080B17AC + push {r4, r5, r6, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r1, #0 + adds r3, r0, #0 + adds r3, #0xa + ldr r5, _080B17DC +_080B17BE: + ldrh r0, [r3] + cmp r0, r4 + bne _080B17E4 + ldrh r0, [r3, #2] + cmp r0, r2 + bne _080B17E4 + ldr r0, [r5] + ldr r6, _080B17E0 + adds r0, r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080B17E4 + movs r0, #1 + b _080B17EE + .align 2, 0 +_080B17DC: .4byte gUnknown_3005AEC +_080B17E0: .4byte 0x000009CA +_080B17E4: + adds r3, #0x10 + adds r1, #1 + cmp r1, #0x4d + ble _080B17BE + movs r0, #0 +_080B17EE: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B17AC + + thumb_func_start sub_080B17F4 +sub_080B17F4: @ 0x080B17F4 + push {r4, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r1, #0 + adds r3, r0, #0 + adds r3, #0xa +_080B1804: + ldrh r0, [r3] + cmp r0, r4 + bne _080B1814 + ldrh r0, [r3, #2] + cmp r0, r2 + bne _080B1814 + movs r0, #1 + b _080B181E +_080B1814: + adds r3, #0x10 + adds r1, #1 + cmp r1, #0x4d + ble _080B1804 + movs r0, #0 +_080B181E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B17F4 + + thumb_func_start sub_080B1824 +sub_080B1824: @ 0x080B1824 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B1618 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080B1858 + cmp r1, #0x63 + bgt _080B1858 + ldr r0, _080B1850 + ldr r0, [r0] + ldr r2, _080B1854 + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080B1858 + movs r0, #1 + b _080B185A + .align 2, 0 +_080B1850: .4byte gUnknown_3005AEC +_080B1854: .4byte 0x000009CA +_080B1858: + movs r0, #0 +_080B185A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B1824 + + thumb_func_start sub_080B1860 +sub_080B1860: @ 0x080B1860 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B163C + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080B1894 + cmp r1, #0x63 + bgt _080B1894 + ldr r0, _080B188C + ldr r0, [r0] + ldr r2, _080B1890 + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080B1894 + movs r0, #1 + b _080B1896 + .align 2, 0 +_080B188C: .4byte gUnknown_3005AEC +_080B1890: .4byte 0x000009CA +_080B1894: + movs r0, #0 +_080B1896: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B1860 + + thumb_func_start sub_080B189C +sub_080B189C: @ 0x080B189C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B1618 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080B18C4 + movs r0, #0 + b _080B18EA +_080B18B6: + subs r0, r6, #1 + lsls r0, r0, #1 + adds r0, r7, r0 + ldrh r0, [r0] + b _080B18EA +_080B18C0: + ldrh r0, [r5] + b _080B18EA +_080B18C4: + lsls r0, r1, #4 + adds r7, r4, r0 + movs r6, #1 + adds r5, r7, #2 + adds r4, r5, #0 +_080B18CE: + ldrh r0, [r4] + cmp r0, #0 + beq _080B18B6 + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B18C0 + adds r4, #2 + adds r5, #2 + adds r6, #1 + cmp r6, #4 + ble _080B18CE + ldrh r0, [r7, #8] +_080B18EA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080B189C + + thumb_func_start sub_080B18F0 +sub_080B18F0: @ 0x080B18F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B1618 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080B191E + movs r0, #0 + b _080B1940 +_080B190A: + subs r0, r5, #1 + lsls r0, r0, #1 + adds r0, r6, r0 + ldrh r0, [r0] + b _080B1940 +_080B1914: + subs r0, r5, #1 + lsls r0, r0, #1 + adds r0, r6, r0 + ldrh r0, [r0] + b _080B1940 +_080B191E: + lsls r0, r1, #4 + adds r6, r4, r0 + movs r5, #1 + adds r4, r6, #2 +_080B1926: + ldrh r0, [r4] + cmp r0, #0 + beq _080B190A + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1914 + adds r4, #2 + adds r5, #1 + cmp r5, #4 + ble _080B1926 + ldrh r0, [r6, #8] +_080B1940: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B18F0 + + thumb_func_start sub_080B1948 +sub_080B1948: @ 0x080B1948 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B163C + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080B196A + ldr r0, _080B1970 + ldr r0, [r0] + ldr r2, _080B1974 + adds r0, r0, r2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080B196A: + pop {r0} + bx r0 + .align 2, 0 +_080B1970: .4byte gUnknown_3005AEC +_080B1974: .4byte 0x000009CA + thumb_func_end sub_080B1948 + + thumb_func_start sub_080B1978 +sub_080B1978: @ 0x080B1978 + push {r4, lr} + adds r3, r0, #0 + movs r1, #0 + movs r4, #0xae + lsls r4, r4, #1 + ldr r2, _080B1990 +_080B1984: + ldrh r0, [r2] + cmp r0, r3 + bne _080B1994 + adds r0, r1, r4 + b _080B199E + .align 2, 0 +_080B1990: .4byte gUnknown_852AD40 +_080B1994: + adds r2, #0x10 + adds r1, #1 + cmp r1, #0x4d + ble _080B1984 + ldr r0, _080B19A4 +_080B199E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B19A4: .4byte 0x0000FFFF + thumb_func_end sub_080B1978 + + thumb_func_start sub_080B19A8 +sub_080B19A8: @ 0x080B19A8 + push {lr} + ldr r0, _080B19D4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B19CE + ldr r0, _080B19D8 + ldrh r0, [r0] + bl sub_080B1978 + adds r1, r0, #0 + ldr r0, _080B19DC + cmp r1, r0 + beq _080B19CE + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 +_080B19CE: + pop {r0} + bx r0 + .align 2, 0 +_080B19D4: .4byte 0x0000012F +_080B19D8: .4byte gUnknown_203886A +_080B19DC: .4byte 0x0000FFFF + thumb_func_end sub_080B19A8 + + thumb_func_start sub_080B19E0 +sub_080B19E0: @ 0x080B19E0 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080B1618 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080B1A0A + lsls r0, r1, #4 + adds r0, r0, r4 + ldrh r0, [r0, #2] + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1A0A + movs r0, #1 + b _080B1A0C +_080B1A0A: + movs r0, #0 +_080B1A0C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B19E0 + + thumb_func_start sub_080B1A14 +sub_080B1A14: @ 0x080B1A14 + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 + ldr r4, _080B1A34 +_080B1A1C: + ldrh r0, [r4] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B1A38 + adds r6, #1 + cmp r6, #4 + ble _080B1A38 + movs r0, #1 + b _080B1A42 + .align 2, 0 +_080B1A34: .4byte gUnknown_852B220 +_080B1A38: + adds r4, #2 + adds r5, #1 + cmp r5, #7 + bls _080B1A1C + movs r0, #0 +_080B1A42: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B1A14 + + thumb_func_start sub_080B1A48 +sub_080B1A48: @ 0x080B1A48 + push {lr} + bl sub_080B1A14 + cmp r0, #0 + beq _080B1A70 + ldr r0, _080B1A64 + ldr r0, [r0] + ldr r2, _080B1A68 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #0xfe + bls _080B1A6C + movs r0, #0xff + b _080B1A6E + .align 2, 0 +_080B1A64: .4byte gUnknown_3005AEC +_080B1A68: .4byte 0x000009C8 +_080B1A6C: + adds r0, #1 +_080B1A6E: + strh r0, [r1] +_080B1A70: + pop {r0} + bx r0 + thumb_func_end sub_080B1A48 + + thumb_func_start sub_080B1A74 +sub_080B1A74: @ 0x080B1A74 + push {lr} + bl sub_080B1A14 + cmp r0, #0 + beq _080B1A98 + ldr r0, _080B1A90 + ldr r0, [r0] + ldr r1, _080B1A94 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xfe + bls _080B1A98 + movs r0, #1 + b _080B1A9A + .align 2, 0 +_080B1A90: .4byte gUnknown_3005AEC +_080B1A94: .4byte 0x000009C8 +_080B1A98: + movs r0, #0 +_080B1A9A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B1A74 + + thumb_func_start sub_080B1AA0 +sub_080B1AA0: @ 0x080B1AA0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + bl sub_080B1A74 + cmp r0, #0 + beq _080B1ACC + ldr r0, _080B1AD4 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080B16E8 + cmp r0, #1 + bne _080B1ACC + ldr r0, _080B1AD8 + ldr r0, [r0] + ldr r1, _080B1ADC + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] +_080B1ACC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1AD4: .4byte gUnknown_852AD40 +_080B1AD8: .4byte gUnknown_3005AEC +_080B1ADC: .4byte 0x000009C8 + thumb_func_end sub_080B1AA0 + + thumb_func_start sub_080B1AE0 +sub_080B1AE0: @ 0x080B1AE0 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _080B1AFC + adds r1, r3, #0 + bl sub_080B17AC + pop {r1} + bx r1 + .align 2, 0 +_080B1AFC: .4byte gUnknown_852AD40 + thumb_func_end sub_080B1AE0 + + thumb_func_start sub_080B1B00 +sub_080B1B00: @ 0x080B1B00 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _080B1B1C + adds r1, r3, #0 + bl sub_080B17F4 + pop {r1} + bx r1 + .align 2, 0 +_080B1B1C: .4byte gUnknown_852AD40 + thumb_func_end sub_080B1B00 + + thumb_func_start sub_080B1B20 +sub_080B1B20: @ 0x080B1B20 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _080B1B38 + bl sub_080B189C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080B1B38: .4byte gUnknown_852AD40 + thumb_func_end sub_080B1B20 + + thumb_func_start sub_080B1B3C +sub_080B1B3C: @ 0x080B1B3C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _080B1B54 + bl sub_080B18F0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080B1B54: .4byte gUnknown_852AD40 + thumb_func_end sub_080B1B3C + + thumb_func_start sub_080B1B58 +sub_080B1B58: @ 0x080B1B58 + push {r4, r5, lr} + ldr r5, _080B1B7C + ldr r4, _080B1B80 + ldrh r1, [r4] + adds r0, r5, #0 + bl sub_080B1824 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B1B84 + ldrh r1, [r4] + adds r0, r5, #0 + bl sub_080B19E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B1B86 + .align 2, 0 +_080B1B7C: .4byte gUnknown_852AD40 +_080B1B80: .4byte gUnknown_203886A +_080B1B84: + movs r0, #1 +_080B1B86: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B1B58 + + thumb_func_start sub_080B1B8C +sub_080B1B8C: @ 0x080B1B8C + push {lr} + ldr r0, _080B1BA0 + ldr r1, _080B1BA4 + ldrh r1, [r1] + bl sub_080B1860 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080B1BA0: .4byte gUnknown_852AD40 +_080B1BA4: .4byte gUnknown_203886A + thumb_func_end sub_080B1B8C + + thumb_func_start sub_080B1BA8 +sub_080B1BA8: @ 0x080B1BA8 + push {lr} + ldr r0, _080B1BBC + ldr r1, _080B1BC0 + ldrh r1, [r1] + bl sub_080B1948 + bl sub_080B104C + pop {r0} + bx r0 + .align 2, 0 +_080B1BBC: .4byte gUnknown_852AD40 +_080B1BC0: .4byte gUnknown_203886A + thumb_func_end sub_080B1BA8 + + thumb_func_start sub_080B1BC4 +sub_080B1BC4: @ 0x080B1BC4 + push {lr} + ldr r1, _080B1BE0 + ldrb r0, [r1] + cmp r0, #1 + bls _080B1BEC + movs r0, #0 + strb r0, [r1] + ldr r1, _080B1BE4 + movs r0, #1 + strb r0, [r1] + ldr r1, _080B1BE8 + movs r0, #1 + b _080B1BF6 + .align 2, 0 +_080B1BE0: .4byte gUnknown_2038899 +_080B1BE4: .4byte gUnknown_2038898 +_080B1BE8: .4byte gUnknown_2037290 +_080B1BEC: + ldr r1, _080B1BFC + movs r0, #0 + strb r0, [r1] + ldr r1, _080B1C00 + movs r0, #0 +_080B1BF6: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080B1BFC: .4byte gUnknown_2038898 +_080B1C00: .4byte gUnknown_2037290 + thumb_func_end sub_080B1BC4 + + thumb_func_start sub_080B1C04 +sub_080B1C04: @ 0x080B1C04 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + ldr r7, _080B1C20 + lsrs r4, r0, #0xc + adds r6, r4, r7 + ldrh r0, [r6] + bl sub_080B108C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B1C24 + movs r0, #0 + b _080B1C50 + .align 2, 0 +_080B1C20: .4byte gUnknown_852AD40 +_080B1C24: + movs r5, #1 + adds r0, r4, #2 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, #0 + beq _080B1C4C + adds r4, r6, #2 +_080B1C32: + ldrh r0, [r4] + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1C4C + adds r4, #2 + adds r5, #1 + cmp r5, #4 + bgt _080B1C4C + ldrh r0, [r4] + cmp r0, #0 + bne _080B1C32 +_080B1C4C: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 +_080B1C50: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B1C04 + + thumb_func_start sub_080B1C58 +sub_080B1C58: @ 0x080B1C58 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r4, _080B1C94 + adds r0, r4, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080B1C8C + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B1C98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r6, [r1, #0xa] + strh r5, [r1, #0xc] +_080B1C8C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B1C94: .4byte sub_080B1F10 +_080B1C98: .4byte gUnknown_3005B60 + thumb_func_end sub_080B1C58 + + thumb_func_start sub_080B1C9C +sub_080B1C9C: @ 0x080B1C9C + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _080B1CEC + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08197638 + ldr r5, _080B1CF0 + ldr r1, _080B1CF4 + adds r0, r5, #0 + bl sub_08008BCC + movs r1, #0 + str r1, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1CEC: .4byte gUnknown_2021C40 +_080B1CF0: .4byte gUnknown_2021C7C +_080B1CF4: .4byte gUnknown_852B230 + thumb_func_end sub_080B1C9C + + thumb_func_start sub_080B1CF8 +sub_080B1CF8: @ 0x080B1CF8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08197060 + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B1CF8 + + thumb_func_start sub_080B1D18 +sub_080B1D18: @ 0x080B1D18 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B1D40 + adds r4, r1, r0 + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r5, r0 + beq _080B1D4E + cmp r5, #1 + bhi _080B1D44 + ldrh r0, [r4, #0xa] + bl sub_080B1CF8 + b _080B1D4C + .align 2, 0 +_080B1D40: .4byte gUnknown_3005B68 +_080B1D44: + ldrh r0, [r4, #0xa] + adds r1, r5, #0 + bl sub_080B1C9C +_080B1D4C: + strh r5, [r4, #6] +_080B1D4E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B1D18 + + thumb_func_start sub_080B1D54 +sub_080B1D54: @ 0x080B1D54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08009C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #6 + bhi _080B1DCC + lsls r0, r0, #2 + ldr r1, _080B1D78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B1D78: .4byte _080B1D7C +_080B1D7C: @ jump table + .4byte _080B1D98 @ case 0 + .4byte _080B1DCC @ case 1 + .4byte _080B1D9C @ case 2 + .4byte _080B1DA0 @ case 3 + .4byte _080B1DA4 @ case 4 + .4byte _080B1DA8 @ case 5 + .4byte _080B1DC8 @ case 6 +_080B1D98: + movs r0, #1 + b _080B1DCE +_080B1D9C: + movs r0, #3 + b _080B1DCE +_080B1DA0: + movs r0, #7 + b _080B1DCE +_080B1DA4: + movs r0, #9 + b _080B1DCE +_080B1DA8: + ldr r4, _080B1DC4 + bl sub_0800A770 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + movs r0, #4 + b _080B1DCE + .align 2, 0 +_080B1DC4: .4byte gUnknown_2021C40 +_080B1DC8: + movs r0, #0xa + b _080B1DCE +_080B1DCC: + movs r0, #0 +_080B1DCE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B1D54 + + thumb_func_start sub_080B1DD4 +sub_080B1DD4: @ 0x080B1DD4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800AE18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B1DEA + movs r0, #0 + b _080B1DFA +_080B1DEA: + ldr r0, _080B1E00 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B1E04 + str r0, [r1] + movs r0, #1 +_080B1DFA: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B1E00: .4byte gUnknown_3005B60 +_080B1E04: .4byte sub_080B2608 + thumb_func_end sub_080B1DD4 + + thumb_func_start sub_080B1E08 +sub_080B1E08: @ 0x080B1E08 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080B1E3C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080B1E4C + bl sub_0800ADFC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080B1E4C + ldr r0, _080B1E40 + strh r1, [r0] + ldr r1, _080B1E44 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B1E48 + str r1, [r0] + movs r0, #1 + b _080B1E4E + .align 2, 0 +_080B1E3C: .4byte gUnknown_3002360 +_080B1E40: .4byte gUnknown_202267E +_080B1E44: .4byte gUnknown_3005B60 +_080B1E48: .4byte sub_080B25C8 +_080B1E4C: + movs r0, #0 +_080B1E4E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B1E08 + + thumb_func_start sub_080B1E54 +sub_080B1E54: @ 0x080B1E54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800ADFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B1E6A + movs r0, #1 + bl sub_0800AE0C +_080B1E6A: + ldr r0, _080B1E7C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080B1E80 + movs r0, #0 + b _080B1E96 + .align 2, 0 +_080B1E7C: .4byte gUnknown_3002360 +_080B1E80: + ldr r1, _080B1E9C + movs r0, #0 + strh r0, [r1] + ldr r1, _080B1EA0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B1EA4 + str r1, [r0] + movs r0, #1 +_080B1E96: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B1E9C: .4byte gUnknown_202267E +_080B1EA0: .4byte gUnknown_3005B60 +_080B1EA4: .4byte sub_080B25C8 + thumb_func_end sub_080B1E54 + + thumb_func_start sub_080B1EA8 +sub_080B1EA8: @ 0x080B1EA8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800ADC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B1EBE + movs r0, #0 + b _080B1ECE +_080B1EBE: + ldr r0, _080B1ED4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B1ED8 + str r0, [r1] + movs r0, #1 +_080B1ECE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B1ED4: .4byte gUnknown_3005B60 +_080B1ED8: .4byte sub_080B2608 + thumb_func_end sub_080B1EA8 + + thumb_func_start sub_080B1EDC +sub_080B1EDC: @ 0x080B1EDC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080B1F0C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _080B1F06 + movs r0, #2 + bl sub_0800A09C + adds r0, r4, #0 + bl sub_080A8964 +_080B1F06: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1F0C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B1EDC + + thumb_func_start sub_080B1F10 +sub_080B1F10: @ 0x080B1F10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B1F40 + adds r4, r1, r0 + movs r3, #0 + ldrsh r2, [r4, r3] + cmp r2, #0 + bne _080B1F48 + bl sub_08009C70 + bl sub_0800A75C + bl sub_08009E80 + ldr r0, _080B1F44 + bl sub_08003250 + strh r0, [r4, #0xa] + b _080B1F54 + .align 2, 0 +_080B1F40: .4byte gUnknown_3005B68 +_080B1F44: .4byte gUnknown_852B23C +_080B1F48: + cmp r2, #9 + ble _080B1F54 + subs r0, #8 + adds r0, r1, r0 + ldr r1, _080B1F60 + str r1, [r0] +_080B1F54: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B1F60: .4byte sub_080B1F64 + thumb_func_end sub_080B1F10 + + thumb_func_start sub_080B1F64 +sub_080B1F64: @ 0x080B1F64 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_080B1E08 + cmp r0, #1 + beq _080B1FD8 + adds r0, r4, #0 + bl sub_080B1E54 + cmp r0, #1 + beq _080B1FD8 + cmp r5, #1 + bls _080B1FD8 + movs r0, #1 + bl sub_0800AE0C + ldr r1, _080B1FBC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #0 + strh r0, [r4, #0xe] + bl sub_0800A780 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B1FC8 + movs r0, #0x15 + bl sub_080A306C + ldr r0, _080B1FC0 + bl sub_08097C00 + ldr r0, _080B1FC4 + b _080B1FD6 + .align 2, 0 +_080B1FBC: .4byte gUnknown_3005B60 +_080B1FC0: .4byte gUnknown_8247C97 +_080B1FC4: .4byte sub_080B1FE8 +_080B1FC8: + movs r0, #0x16 + bl sub_080A306C + ldr r0, _080B1FE0 + bl sub_08097C00 + ldr r0, _080B1FE4 +_080B1FD6: + str r0, [r4] +_080B1FD8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B1FE0: .4byte gUnknown_8247CDA +_080B1FE4: .4byte sub_080B21F4 + thumb_func_end sub_080B1F64 + + thumb_func_start sub_080B1FE8 +sub_080B1FE8: @ 0x080B1FE8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080B1E08 + cmp r0, #1 + beq _080B2028 + adds r0, r4, #0 + bl sub_080B1EA8 + cmp r0, #1 + beq _080B2028 + adds r0, r4, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B2028 + bl sub_08097CB8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080B2028 + ldr r0, _080B2030 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r2, [r1, #0xe] + ldr r0, _080B2034 + str r0, [r1] +_080B2028: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2030: .4byte gUnknown_3005B60 +_080B2034: .4byte sub_080B2038 + thumb_func_end sub_080B1FE8 + + thumb_func_start sub_080B2038 +sub_080B2038: @ 0x080B2038 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + mov r8, r0 + ldr r0, _080B20CC + mov sb, r0 + mov r7, r8 + add r7, sb + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_080B1E08 + cmp r0, #1 + beq _080B20C0 + adds r0, r4, #0 + bl sub_080B1EA8 + cmp r0, #1 + beq _080B20C0 + adds r0, r4, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B20C0 + adds r6, r5, #0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080B1D18 + ldr r0, _080B20D0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080B20C0 + movs r1, #2 + ldrsh r0, [r7, r1] + cmp r5, r0 + blt _080B20C0 + adds r0, r6, #0 + bl sub_0800A5C8 + ldrh r0, [r7, #0xa] + bl sub_080B1CF8 + ldr r0, _080B20D4 + adds r1, r5, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r0, _080B20D8 + bl sub_08097C00 + mov r0, sb + subs r0, #8 + add r0, r8 + ldr r1, _080B20DC + str r1, [r0] +_080B20C0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B20CC: .4byte gUnknown_3005B68 +_080B20D0: .4byte gUnknown_3002360 +_080B20D4: .4byte gUnknown_2021C40 +_080B20D8: .4byte gUnknown_8247CB5 +_080B20DC: .4byte sub_080B20E0 + thumb_func_end sub_080B2038 + + thumb_func_start sub_080B20E0 +sub_080B20E0: @ 0x080B20E0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + adds r0, r5, #0 + bl sub_080B1E08 + cmp r0, #1 + beq _080B2174 + adds r0, r5, #0 + bl sub_080B1EA8 + cmp r0, #1 + beq _080B2174 + adds r0, r5, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B2174 + bl sub_08097CB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B2174 + bl sub_0800A60C + adds r4, r0, #0 + bl sub_0800A770 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080B212E + ldr r0, _080B2144 + ldrh r1, [r0, #0x2c] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080B2154 +_080B212E: + ldr r0, _080B2148 + bl sub_08097C00 + ldr r1, _080B214C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B2150 + str r1, [r0] + b _080B2174 + .align 2, 0 +_080B2144: .4byte gUnknown_3002360 +_080B2148: .4byte gUnknown_8247C97 +_080B214C: .4byte gUnknown_3005B60 +_080B2150: .4byte sub_080B1FE8 +_080B2154: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080B2174 + movs r0, #5 + bl sub_080A306C + bl sub_0800A1E4 + ldr r0, _080B217C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B2180 + str r0, [r1] +_080B2174: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B217C: .4byte gUnknown_3005B60 +_080B2180: .4byte sub_080B2184 + thumb_func_end sub_080B20E0 + + thumb_func_start sub_080B2184 +sub_080B2184: @ 0x080B2184 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080B21C8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrb r7, [r5, #0xa] + ldrb r6, [r5, #0xc] + adds r0, r4, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B21E6 + adds r0, r4, #0 + bl sub_080B2648 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B21E6 + bl sub_0800A770 + adds r4, r0, #0 + bl sub_0800A60C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080B21D0 + ldr r0, _080B21CC + b _080B21E4 + .align 2, 0 +_080B21C8: .4byte gUnknown_3005B60 +_080B21CC: .4byte sub_080B2608 +_080B21D0: + ldr r4, _080B21EC + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080B1D54 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080B21E6 + ldr r0, _080B21F0 +_080B21E4: + str r0, [r5] +_080B21E6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B21EC: .4byte gUnknown_2037290 +_080B21F0: .4byte sub_080B22E4 + thumb_func_end sub_080B2184 + + thumb_func_start sub_080B21F4 +sub_080B21F4: @ 0x080B21F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080B224C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r7, r0, r1 + ldrb r6, [r7, #0xa] + ldrb r5, [r7, #0xc] + adds r0, r4, #0 + bl sub_080B1E08 + cmp r0, #1 + beq _080B22C2 + adds r0, r4, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B22C2 + ldr r4, _080B2250 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080B1D54 + adds r1, r0, #0 + strh r1, [r4] + lsls r0, r1, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _080B22C2 + subs r0, r1, #3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080B2258 + bl sub_0800A7F8 + bl sub_08097C9C + ldr r0, _080B2254 + b _080B22C0 + .align 2, 0 +_080B224C: .4byte gUnknown_3005B60 +_080B2250: .4byte gUnknown_2037290 +_080B2254: .4byte sub_080B258C +_080B2258: + cmp r2, #7 + beq _080B2260 + cmp r2, #9 + bne _080B2270 +_080B2260: + bl sub_08009384 + bl sub_08097C9C + ldr r0, _080B226C + b _080B22C0 + .align 2, 0 +_080B226C: .4byte sub_080B258C +_080B2270: + bl sub_0800A770 + ldr r4, _080B22CC + strb r0, [r4] + bl sub_0800A02C + ldr r1, _080B22D0 + strb r0, [r1] + ldrb r0, [r4] + bl sub_0800A5C8 + ldr r4, _080B22D4 + adds r0, r4, #0 + bl sub_080C26D4 + ldr r0, _080B22D8 + mov r8, r0 + ldrb r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080B22DC + adds r0, r0, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r4, #0 + adds r1, #0x54 + strh r0, [r1] + mov r1, r8 + ldrb r0, [r1, #1] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, #0x56 + strh r0, [r4] + ldr r0, _080B22E0 +_080B22C0: + str r0, [r7] +_080B22C2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B22CC: .4byte gUnknown_3005B18 +_080B22D0: .4byte gUnknown_3005B14 +_080B22D4: .4byte gUnknown_202257C +_080B22D8: .4byte gUnknown_203CBC4 +_080B22DC: .4byte gUnknown_202412C +_080B22E0: .4byte sub_080B250C + thumb_func_end sub_080B21F4 + + thumb_func_start sub_080B22E4 +sub_080B22E4: @ 0x080B22E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r7, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B23AA + ldr r0, _080B2310 + ldrh r0, [r0] + cmp r0, #4 + bne _080B2314 + bl sub_08009C28 + cmp r0, #0 + bne _080B2326 + bl sub_0800A7F8 + b _080B232A + .align 2, 0 +_080B2310: .4byte gUnknown_2037290 +_080B2314: + cmp r0, #3 + bne _080B231E + bl sub_0800A7F8 + b _080B232A +_080B231E: + cmp r0, #7 + beq _080B2326 + cmp r0, #9 + bne _080B2348 +_080B2326: + bl sub_08009384 +_080B232A: + bl sub_08097C9C + ldr r0, _080B2340 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B2344 + str r0, [r1] + b _080B23AA + .align 2, 0 +_080B2340: .4byte gUnknown_3005B60 +_080B2344: .4byte sub_080B258C +_080B2348: + bl sub_0800A770 + ldr r4, _080B23B4 + strb r0, [r4] + bl sub_0800A02C + ldr r1, _080B23B8 + strb r0, [r1] + ldrb r0, [r4] + bl sub_0800A5C8 + ldr r4, _080B23BC + adds r0, r4, #0 + bl sub_080C26D4 + ldr r0, _080B23C0 + mov r8, r0 + ldrb r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080B23C4 + adds r0, r0, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r4, #0 + adds r1, #0x54 + strh r0, [r1] + mov r1, r8 + ldrb r0, [r1, #1] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, #0x56 + strh r0, [r4] + ldr r1, _080B23C8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B23CC + str r1, [r0] + movs r0, #2 + bl sub_0800A09C +_080B23AA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B23B4: .4byte gUnknown_3005B18 +_080B23B8: .4byte gUnknown_3005B14 +_080B23BC: .4byte gUnknown_202257C +_080B23C0: .4byte gUnknown_203CBC4 +_080B23C4: .4byte gUnknown_202412C +_080B23C8: .4byte gUnknown_3005B60 +_080B23CC: .4byte sub_080B250C + thumb_func_end sub_080B22E4 + + thumb_func_start sub_080B23D0 +sub_080B23D0: @ 0x080B23D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + mov sl, r1 + movs r2, #0 + movs r7, #0 + ldr r1, _080B2460 + movs r0, #0xff + strb r0, [r1] + ldr r1, _080B2464 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + movs r1, #0 + ldr r0, _080B2468 + mov sb, r0 +_080B23F8: + lsls r0, r1, #1 + adds r1, #1 + mov r8, r1 + ldr r1, [sp] + adds r4, r0, r1 + mov r5, sl + movs r6, #1 +_080B2406: + ldrh r0, [r4] + ldrh r1, [r5] + cmp r0, r1 + bne _080B243A + cmp r7, #0 + bne _080B2422 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + add r1, sb + ldr r0, _080B2460 + bl sub_080088B8 + movs r2, #1 +_080B2422: + cmp r7, #1 + bne _080B2438 + ldrh r0, [r4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + add r1, sb + ldr r0, _080B2464 + bl sub_080088B8 + movs r2, #1 +_080B2438: + adds r7, #1 +_080B243A: + adds r5, #2 + subs r6, #1 + cmp r6, #0 + bge _080B2406 + mov r1, r8 + cmp r1, #1 + ble _080B23F8 + ldr r0, _080B246C + strh r7, [r0] + adds r0, r2, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B2460: .4byte gUnknown_2021C40 +_080B2464: .4byte gUnknown_2021C54 +_080B2468: .4byte gUnknown_82EA31C +_080B246C: .4byte gUnknown_2037282 + thumb_func_end sub_080B23D0 + + thumb_func_start sub_080B2470 +sub_080B2470: @ 0x080B2470 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, _080B24B4 + ldrh r0, [r5] + cmp r0, #1 + bne _080B24EC + ldr r0, _080B24B8 + ldrh r2, [r0] + ldr r0, _080B24BC + cmp r2, r0 + beq _080B248E + adds r0, #0x11 + cmp r2, r0 + bne _080B24C8 +_080B248E: + adds r0, r1, #0 + adds r0, #0x54 + adds r1, #0xb8 + bl sub_080B23D0 + cmp r0, #0 + beq _080B24C8 + movs r0, #0xb + strh r0, [r5] + bl sub_0800A7F8 + ldr r1, _080B24C0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B24C4 + str r1, [r0] + b _080B24FE + .align 2, 0 +_080B24B4: .4byte gUnknown_20397F8 +_080B24B8: .4byte gUnknown_202267E +_080B24BC: .4byte 0x00002266 +_080B24C0: .4byte gUnknown_3005B60 +_080B24C4: .4byte sub_080B258C +_080B24C8: + ldr r1, _080B24E8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x12] + bl sub_080B1CF8 + bl sub_080988C4 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _080B24FE + .align 2, 0 +_080B24E8: .4byte gUnknown_3005B60 +_080B24EC: + bl sub_0800A7F8 + ldr r0, _080B2504 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B2508 + str r0, [r1] +_080B24FE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2504: .4byte gUnknown_3005B60 +_080B2508: .4byte sub_080B258C + thumb_func_end sub_080B2470 + + thumb_func_start sub_080B250C +sub_080B250C: @ 0x080B250C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080B1DD4 + cmp r0, #1 + beq _080B2578 + bl sub_0800A114 + adds r4, r0, #0 + bl sub_0800A56C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080B2578 + movs r4, #0 + ldr r6, _080B2534 + b _080B255A + .align 2, 0 +_080B2534: .4byte gUnknown_20226A0 +_080B2538: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _080B2580 + adds r0, r0, r1 + lsls r1, r4, #8 + ldr r2, _080B2584 + adds r1, r1, r2 + lsls r2, r4, #3 + subs r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r6 + ldrb r2, [r2] + bl sub_080C2750 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080B255A: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _080B2538 + movs r0, #0 + bl sub_0800AE0C + bl sub_0800A178 + ldr r0, _080B2588 + adds r1, r5, #0 + bl sub_080B2470 +_080B2578: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B2580: .4byte gUnknown_20397F8 +_080B2584: .4byte gUnknown_202207C +_080B2588: .4byte gUnknown_2037290 + thumb_func_end sub_080B250C + + thumb_func_start sub_080B258C +sub_080B258C: @ 0x080B258C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080B25C0 + ldrb r0, [r0] + cmp r0, #0 + bne _080B25BA + ldr r0, _080B25C4 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0x12] + bl sub_080B1CF8 + bl sub_080988C4 + ldrb r0, [r4, #0x12] + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 +_080B25BA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B25C0: .4byte gUnknown_30031C4 +_080B25C4: .4byte gUnknown_3005B60 + thumb_func_end sub_080B258C + + thumb_func_start sub_080B25C8 +sub_080B25C8: @ 0x080B25C8 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _080B2600 + movs r0, #5 + strh r0, [r1] + ldr r0, _080B2604 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0x12] + bl sub_080B1CF8 + bl sub_08097CFC + ldrb r0, [r4, #0x12] + bl sub_08003444 + bl sub_080988C4 + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2600: .4byte gUnknown_2037290 +_080B2604: .4byte gUnknown_3005B60 + thumb_func_end sub_080B25C8 + + thumb_func_start sub_080B2608 +sub_080B2608: @ 0x080B2608 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _080B2640 + movs r0, #6 + strh r0, [r1] + ldr r0, _080B2644 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0x12] + bl sub_080B1CF8 + ldrb r0, [r4, #0x12] + bl sub_08003444 + bl sub_08097C9C + bl sub_080988C4 + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2640: .4byte gUnknown_2037290 +_080B2644: .4byte gUnknown_3005B60 + thumb_func_end sub_080B2608 + + thumb_func_start sub_080B2648 +sub_080B2648: @ 0x080B2648 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B266C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + ldrh r0, [r2, #0x10] + adds r0, #1 + strh r0, [r2, #0x10] + lsls r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #0x12 + cmp r0, r1 + bgt _080B2670 + movs r0, #0 + b _080B2676 + .align 2, 0 +_080B266C: .4byte gUnknown_3005B60 +_080B2670: + ldr r0, _080B267C + str r0, [r2] + movs r0, #1 +_080B2676: + pop {r1} + bx r1 + .align 2, 0 +_080B267C: .4byte sub_080B2608 + thumb_func_end sub_080B2648 + + thumb_func_start sub_080B2680 +sub_080B2680: @ 0x080B2680 + push {r4, lr} + movs r3, #2 + movs r2, #2 + ldr r0, _080B2698 + ldrh r0, [r0] + cmp r0, #2 + beq _080B26B8 + cmp r0, #2 + bgt _080B269C + cmp r0, #1 + beq _080B26A6 + b _080B2710 + .align 2, 0 +_080B2698: .4byte gUnknown_2037280 +_080B269C: + cmp r0, #5 + beq _080B26C8 + cmp r0, #9 + beq _080B26DC + b _080B2710 +_080B26A6: + movs r3, #2 + ldr r1, _080B26B0 + ldr r4, _080B26B4 + b _080B270C + .align 2, 0 +_080B26B0: .4byte gUnknown_202267E +_080B26B4: .4byte 0x00002233 +_080B26B8: + movs r3, #2 + ldr r1, _080B26C0 + ldr r4, _080B26C4 + b _080B270C + .align 2, 0 +_080B26C0: .4byte gUnknown_202267E +_080B26C4: .4byte 0x00002244 +_080B26C8: + movs r3, #4 + movs r2, #4 + ldr r1, _080B26D4 + ldr r4, _080B26D8 + b _080B270C + .align 2, 0 +_080B26D4: .4byte gUnknown_202267E +_080B26D8: .4byte 0x00002255 +_080B26DC: + movs r3, #2 + ldr r0, _080B26F8 + ldr r0, [r0] + ldr r1, _080B26FC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080B2708 + ldr r1, _080B2700 + ldr r4, _080B2704 + b _080B270C + .align 2, 0 +_080B26F8: .4byte gUnknown_3005AF0 +_080B26FC: .4byte 0x00000CA9 +_080B2700: .4byte gUnknown_202267E +_080B2704: .4byte 0x00002266 +_080B2708: + ldr r1, _080B2720 + ldr r4, _080B2724 +_080B270C: + adds r0, r4, #0 + strh r0, [r1] +_080B2710: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_080B1C58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2720: .4byte gUnknown_202267E +_080B2724: .4byte 0x00002277 + thumb_func_end sub_080B2680 + + thumb_func_start sub_080B2728 +sub_080B2728: @ 0x080B2728 + push {lr} + ldr r1, _080B2744 + ldr r2, _080B2748 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080B274C + movs r0, #0 + str r0, [r1] + movs r0, #2 + movs r1, #2 + bl sub_080B1C58 + pop {r0} + bx r0 + .align 2, 0 +_080B2744: .4byte gUnknown_202267E +_080B2748: .4byte 0x00001133 +_080B274C: .4byte gUnknown_2022C90 + thumb_func_end sub_080B2728 + + thumb_func_start sub_080B2750 +sub_080B2750: @ 0x080B2750 + push {lr} + ldr r1, _080B2774 + movs r0, #0 + strh r0, [r1] + ldr r1, _080B2778 + ldr r2, _080B277C + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080B2780 + movs r0, #0 + str r0, [r1] + movs r0, #2 + movs r1, #4 + bl sub_080B1C58 + pop {r0} + bx r0 + .align 2, 0 +_080B2774: .4byte gUnknown_2037290 +_080B2778: .4byte gUnknown_202267E +_080B277C: .4byte 0x00003311 +_080B2780: .4byte gUnknown_2022C90 + thumb_func_end sub_080B2750 + + thumb_func_start sub_080B2784 +sub_080B2784: @ 0x080B2784 + push {lr} + ldr r1, _080B27A0 + ldr r2, _080B27A4 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080B27A8 + movs r0, #0 + str r0, [r1] + movs r0, #2 + movs r1, #4 + bl sub_080B1C58 + pop {r0} + bx r0 + .align 2, 0 +_080B27A0: .4byte gUnknown_202267E +_080B27A4: .4byte 0x00004411 +_080B27A8: .4byte gUnknown_2022C90 + thumb_func_end sub_080B2784 + + thumb_func_start sub_080B27AC +sub_080B27AC: @ 0x080B27AC + push {lr} + ldr r1, _080B27C8 + ldr r2, _080B27CC + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080B27D0 + movs r0, #0 + str r0, [r1] + movs r0, #4 + movs r1, #4 + bl sub_080B1C58 + pop {r0} + bx r0 + .align 2, 0 +_080B27C8: .4byte gUnknown_202267E +_080B27CC: .4byte 0x00006601 +_080B27D0: .4byte gUnknown_2022C90 + thumb_func_end sub_080B27AC + + thumb_func_start sub_080B27D4 +sub_080B27D4: @ 0x080B27D4 + push {lr} + ldr r1, _080B27F0 + ldr r2, _080B27F4 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080B27F8 + movs r0, #0 + str r0, [r1] + movs r0, #2 + movs r1, #4 + bl sub_080B1C58 + pop {r0} + bx r0 + .align 2, 0 +_080B27F0: .4byte gUnknown_202267E +_080B27F4: .4byte 0x00006602 +_080B27F8: .4byte gUnknown_2022C90 + thumb_func_end sub_080B27D4 + + thumb_func_start sub_080B27FC +sub_080B27FC: @ 0x080B27FC + push {lr} + ldr r0, _080B2810 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B2814 + movs r0, #0xff + b _080B28E0 + .align 2, 0 +_080B2810: .4byte sub_080B28F0 +_080B2814: + ldr r0, _080B2828 + ldrh r0, [r0] + subs r0, #1 + cmp r0, #8 + bhi _080B28D4 + lsls r0, r0, #2 + ldr r1, _080B282C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B2828: .4byte gUnknown_2037280 +_080B282C: .4byte _080B2830 +_080B2830: @ jump table + .4byte _080B2854 @ case 0 + .4byte _080B2864 @ case 1 + .4byte _080B28BC @ case 2 + .4byte _080B28CC @ case 3 + .4byte _080B2874 @ case 4 + .4byte _080B28D4 @ case 5 + .4byte _080B28D4 @ case 6 + .4byte _080B28D4 @ case 7 + .4byte _080B2884 @ case 8 +_080B2854: + ldr r1, _080B285C + ldr r2, _080B2860 + b _080B28D0 + .align 2, 0 +_080B285C: .4byte gUnknown_202267E +_080B2860: .4byte 0x00002233 +_080B2864: + ldr r1, _080B286C + ldr r2, _080B2870 + b _080B28D0 + .align 2, 0 +_080B286C: .4byte gUnknown_202267E +_080B2870: .4byte 0x00002244 +_080B2874: + ldr r1, _080B287C + ldr r2, _080B2880 + b _080B28D0 + .align 2, 0 +_080B287C: .4byte gUnknown_202267E +_080B2880: .4byte 0x00002255 +_080B2884: + ldr r0, _080B289C + ldr r0, [r0] + ldr r1, _080B28A0 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080B28AC + ldr r1, _080B28A4 + ldr r2, _080B28A8 + b _080B28D0 + .align 2, 0 +_080B289C: .4byte gUnknown_3005AF0 +_080B28A0: .4byte 0x00000CA9 +_080B28A4: .4byte gUnknown_202267E +_080B28A8: .4byte 0x00002266 +_080B28AC: + ldr r1, _080B28B4 + ldr r2, _080B28B8 + b _080B28D0 + .align 2, 0 +_080B28B4: .4byte gUnknown_202267E +_080B28B8: .4byte 0x00002277 +_080B28BC: + ldr r1, _080B28C4 + ldr r2, _080B28C8 + b _080B28D0 + .align 2, 0 +_080B28C4: .4byte gUnknown_202267E +_080B28C8: .4byte 0x00001111 +_080B28CC: + ldr r1, _080B28E4 + ldr r2, _080B28E8 +_080B28D0: + adds r0, r2, #0 + strh r0, [r1] +_080B28D4: + ldr r0, _080B28EC + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080B28E0: + pop {r1} + bx r1 + .align 2, 0 +_080B28E4: .4byte gUnknown_202267E +_080B28E8: .4byte 0x00003322 +_080B28EC: .4byte sub_080B28F0 + thumb_func_end sub_080B27FC + + thumb_func_start sub_080B28F0 +sub_080B28F0: @ 0x080B28F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B291C + adds r4, r1, r0 + movs r3, #0 + ldrsh r2, [r4, r3] + cmp r2, #0 + bne _080B2924 + bl sub_080092D0 + bl sub_08009E80 + ldr r0, _080B2920 + movs r1, #0x50 + bl sub_080A8878 + b _080B2930 + .align 2, 0 +_080B291C: .4byte gUnknown_3005B68 +_080B2920: .4byte sub_080B3188 +_080B2924: + cmp r2, #9 + ble _080B2930 + subs r0, #8 + adds r0, r1, r0 + ldr r1, _080B293C + str r1, [r0] +_080B2930: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B293C: .4byte sub_080B2940 + thumb_func_end sub_080B28F0 + + thumb_func_start sub_080B2940 +sub_080B2940: @ 0x080B2940 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080B2986 + bl sub_0800A780 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B2978 + ldr r0, _080B2970 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B2974 + b _080B2984 + .align 2, 0 +_080B2970: .4byte gUnknown_3005B60 +_080B2974: .4byte sub_080B2994 +_080B2978: + ldr r0, _080B298C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B2990 +_080B2984: + str r0, [r1] +_080B2986: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B298C: .4byte gUnknown_3005B60 +_080B2990: .4byte sub_080B29CC + thumb_func_end sub_080B2940 + + thumb_func_start sub_080B2994 +sub_080B2994: @ 0x080B2994 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0800A60C + adds r4, r0, #0 + bl sub_0800A770 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080B29BE + bl sub_0800A1E4 + ldr r0, _080B29C4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B29C8 + str r0, [r1] +_080B29BE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B29C4: .4byte gUnknown_3005B60 +_080B29C8: .4byte sub_080B29CC + thumb_func_end sub_080B2994 + + thumb_func_start sub_080B29CC +sub_080B29CC: @ 0x080B29CC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080B29FC + ldrb r0, [r0] + cmp r0, #1 + bne _080B29F4 + bl sub_08009E00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B29F4 + bl sub_0800A6DC + bl sub_08009AB0 + adds r0, r4, #0 + bl sub_080A8964 +_080B29F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B29FC: .4byte gUnknown_30031C4 + thumb_func_end sub_080B29CC + + thumb_func_start sub_080B2A00 +sub_080B2A00: @ 0x080B2A00 + push {lr} + bl sub_0809F858 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B2A00 + + thumb_func_start sub_080B2A0C +sub_080B2A0C: @ 0x080B2A0C + push {lr} + cmp r0, #2 + beq _080B2A30 + cmp r0, #2 + bgt _080B2A1C + cmp r0, #1 + beq _080B2A26 + b _080B2A52 +_080B2A1C: + cmp r0, #5 + beq _080B2A3C + cmp r0, #9 + beq _080B2A4C + b _080B2A52 +_080B2A26: + ldr r1, _080B2A2C + movs r0, #0xa + b _080B2A50 + .align 2, 0 +_080B2A2C: .4byte gUnknown_2022C90 +_080B2A30: + ldr r1, _080B2A38 + movs r0, #0xb + b _080B2A50 + .align 2, 0 +_080B2A38: .4byte gUnknown_2022C90 +_080B2A3C: + bl sub_080F9D78 + ldr r1, _080B2A48 + movs r0, #0x4b + b _080B2A50 + .align 2, 0 +_080B2A48: .4byte gUnknown_2022C90 +_080B2A4C: + ldr r1, _080B2A58 + ldr r0, _080B2A5C +_080B2A50: + str r0, [r1] +_080B2A52: + pop {r0} + bx r0 + .align 2, 0 +_080B2A58: .4byte gUnknown_2022C90 +_080B2A5C: .4byte 0x0000014B + thumb_func_end sub_080B2A0C + + thumb_func_start sub_080B2A60 +sub_080B2A60: @ 0x080B2A60 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B2A84 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #5 + bhi _080B2B4C + lsls r0, r0, #2 + ldr r1, _080B2A88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B2A84: .4byte gUnknown_3005B60 +_080B2A88: .4byte _080B2A8C +_080B2A8C: @ jump table + .4byte _080B2AA4 @ case 0 + .4byte _080B2AC4 @ case 1 + .4byte _080B2AD4 @ case 2 + .4byte _080B2AE4 @ case 3 + .4byte _080B2AEA @ case 4 + .4byte _080B2B00 @ case 5 +_080B2AA4: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _080B2ABC + ldr r2, _080B2AC0 + adds r0, r2, #0 + strh r0, [r1] + bl sub_08009B44 + b _080B2AF2 + .align 2, 0 +_080B2ABC: .4byte gUnknown_202267E +_080B2AC0: .4byte 0x00002211 +_080B2AC4: + ldr r0, _080B2AD0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + b _080B2AEE + .align 2, 0 +_080B2AD0: .4byte gUnknown_2037C74 +_080B2AD4: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080B2B4C + b _080B2AF2 +_080B2AE4: + bl sub_0800A7F8 + b _080B2AF2 +_080B2AEA: + ldr r0, _080B2AFC + ldrb r0, [r0] +_080B2AEE: + cmp r0, #0 + bne _080B2B4C +_080B2AF2: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080B2B4C + .align 2, 0 +_080B2AFC: .4byte gUnknown_30031C4 +_080B2B00: + ldr r0, _080B2B14 + ldr r0, [r0, #4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B2B1C + ldr r0, _080B2B18 + bl sub_0806E0F4 + b _080B2B24 + .align 2, 0 +_080B2B14: .4byte gUnknown_20226A0 +_080B2B18: .4byte 0x000001DD +_080B2B1C: + movs r0, #0xee + lsls r0, r0, #1 + bl sub_0806E0F4 +_080B2B24: + ldr r0, _080B2B54 + ldrh r0, [r0] + bl sub_080B2A0C + bl sub_0808569C + ldr r1, _080B2B58 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _080B2B5C + bl sub_08000540 + ldr r1, _080B2B60 + ldr r0, _080B2B64 + str r0, [r1, #8] + adds r0, r5, #0 + bl sub_080A8964 +_080B2B4C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2B54: .4byte gUnknown_2037280 +_080B2B58: .4byte gUnknown_203886A +_080B2B5C: .4byte sub_080365B4 +_080B2B60: .4byte gUnknown_3002360 +_080B2B64: .4byte sub_080B2D68 + thumb_func_end sub_080B2A60 + + thumb_func_start sub_080B2B68 +sub_080B2B68: @ 0x080B2B68 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080B2B8C + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #7 + bls _080B2B82 + b _080B2CDA +_080B2B82: + lsls r0, r0, #2 + ldr r1, _080B2B90 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B2B8C: .4byte gUnknown_3005B68 +_080B2B90: .4byte _080B2B94 +_080B2B94: @ jump table + .4byte _080B2BB4 @ case 0 + .4byte _080B2BD8 @ case 1 + .4byte _080B2BF0 @ case 2 + .4byte _080B2C04 @ case 3 + .4byte _080B2C58 @ case 4 + .4byte _080B2C6C @ case 5 + .4byte _080B2C76 @ case 6 + .4byte _080B2C86 @ case 7 +_080B2BB4: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _080B2BD0 + ldr r2, _080B2BD4 + adds r1, r2, #0 + strh r1, [r0] + bl sub_08009B44 + movs r0, #1 + strh r0, [r5] + b _080B2CDA + .align 2, 0 +_080B2BD0: .4byte gUnknown_202267E +_080B2BD4: .4byte 0x00002211 +_080B2BD8: + ldr r0, _080B2BEC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080B2BE6 + b _080B2CDA +_080B2BE6: + movs r0, #2 + strh r0, [r5] + b _080B2CDA + .align 2, 0 +_080B2BEC: .4byte gUnknown_2037C74 +_080B2BF0: + ldr r1, _080B2C00 + movs r0, #0 + movs r2, #0x1c + bl sub_0800A070 + movs r0, #3 + strh r0, [r5] + b _080B2CDA + .align 2, 0 +_080B2C00: .4byte gUnknown_2022684 +_080B2C04: + bl sub_0800A114 + adds r4, r0, #0 + bl sub_0800A59C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080B2CDA + movs r4, #0 + ldr r6, _080B2C1C + b _080B2C40 + .align 2, 0 +_080B2C1C: .4byte gUnknown_20226A0 +_080B2C20: + lsls r1, r4, #8 + ldr r2, _080B2C54 + adds r0, r6, #0 + adds r1, 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] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800A1B0 + adds r6, #0x1c + adds r4, #1 +_080B2C40: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blt _080B2C20 + movs r0, #4 + strh r0, [r5] + b _080B2CDA + .align 2, 0 +_080B2C54: .4byte gUnknown_202207C +_080B2C58: + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080B2CDA + movs r0, #5 + strh r0, [r5] + b _080B2CDA +_080B2C6C: + bl sub_0800A8D4 + movs r0, #6 + strh r0, [r5] + b _080B2CDA +_080B2C76: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B2CDA + movs r0, #7 + strh r0, [r5] + b _080B2CDA +_080B2C86: + ldr r0, _080B2C9C + ldr r0, [r0, #4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B2CA4 + ldr r0, _080B2CA0 + bl sub_0806E0F4 + b _080B2CAC + .align 2, 0 +_080B2C9C: .4byte gUnknown_20226A0 +_080B2CA0: .4byte 0x000001DD +_080B2CA4: + movs r0, #0xee + lsls r0, r0, #1 + bl sub_0806E0F4 +_080B2CAC: + ldr r1, _080B2CE0 + ldr r0, _080B2CE4 + str r0, [r1, #0x14] + ldr r0, _080B2CE8 + ldrh r0, [r0] + bl sub_080B2A0C + bl sub_0808569C + ldr r1, _080B2CEC + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _080B2CF0 + bl sub_08000540 + ldr r1, _080B2CF4 + ldr r0, _080B2CF8 + str r0, [r1, #8] + adds r0, r4, #0 + bl sub_080A8964 +_080B2CDA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B2CE0: .4byte gUnknown_20226A0 +_080B2CE4: .4byte 0x00002211 +_080B2CE8: .4byte gUnknown_2037280 +_080B2CEC: .4byte gUnknown_203886A +_080B2CF0: .4byte sub_080365B4 +_080B2CF4: .4byte gUnknown_3002360 +_080B2CF8: .4byte sub_080B2D68 + thumb_func_end sub_080B2B68 + + thumb_func_start sub_080B2CFC +sub_080B2CFC: @ 0x080B2CFC + push {r4, lr} + ldr r0, _080B2D18 + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #1 + beq _080B2D3A + cmp r0, #1 + bgt _080B2D1C + cmp r0, #0 + beq _080B2D22 + b _080B2D5A + .align 2, 0 +_080B2D18: .4byte gUnknown_3002360 +_080B2D1C: + cmp r0, #2 + beq _080B2D54 + b _080B2D5A +_080B2D22: + bl sub_0800A7F8 + bl sub_08009C40 + cmp r0, #0 + beq _080B2D34 + movs r0, #2 + strb r0, [r4] + b _080B2D5A +_080B2D34: + movs r0, #1 + strb r0, [r4] + b _080B2D5A +_080B2D3A: + ldr r0, _080B2D4C + ldrb r0, [r0] + cmp r0, #0 + bne _080B2D5A + ldr r0, _080B2D50 + bl sub_08000540 + b _080B2D5A + .align 2, 0 +_080B2D4C: .4byte gUnknown_30031C4 +_080B2D50: .4byte sub_08085A30 +_080B2D54: + ldr r0, _080B2D64 + bl sub_08000540 +_080B2D5A: + bl sub_080A89D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B2D64: .4byte sub_08085A30 + thumb_func_end sub_080B2CFC + + thumb_func_start sub_080B2D68 +sub_080B2D68: @ 0x080B2D68 + push {r4, r5, lr} + ldr r2, _080B2DB8 + ldr r0, [r2] + movs r1, #0x21 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2] + bl sub_080850E0 + bl sub_080767DC + bl sub_080769E8 + bl sub_0813BF34 + ldr r0, _080B2DBC + ldrh r0, [r0] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080B2E0E + ldr r0, _080B2DC0 + ldrb r0, [r0] + movs r5, #1 + eors r0, r5 + bl sub_0813C2AC + ldr r0, _080B2DC4 + ldrb r0, [r0] + cmp r0, #0 + beq _080B2E0E + ldr r0, _080B2DC8 + ldrb r0, [r0] + cmp r0, #1 + beq _080B2DCC + cmp r0, #2 + beq _080B2DF0 + b _080B2E0E + .align 2, 0 +_080B2DB8: .4byte gUnknown_2022C90 +_080B2DBC: .4byte gUnknown_2037280 +_080B2DC0: .4byte gUnknown_3005B14 +_080B2DC4: .4byte gUnknown_300319C +_080B2DC8: .4byte gUnknown_2023FDE +_080B2DCC: + ldr r4, _080B2DEC + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, #4 + adds r1, r1, r4 + ldr r1, [r1] + movs r0, #0 + bl sub_0801B4A8 + b _080B2E0E + .align 2, 0 +_080B2DEC: .4byte gUnknown_20226A0 +_080B2DF0: + ldr r4, _080B2E1C + bl sub_0800A02C + eors r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, #4 + adds r1, r1, r4 + ldr r1, [r1] + movs r0, #1 + bl sub_0801B4A8 +_080B2E0E: + bl sub_08017AC0 + cmp r0, #1 + bne _080B2E28 + ldr r1, _080B2E20 + ldr r0, _080B2E24 + b _080B2E2C + .align 2, 0 +_080B2E1C: .4byte gUnknown_20226A0 +_080B2E20: .4byte gUnknown_3002360 +_080B2E24: .4byte sub_080B2CFC +_080B2E28: + ldr r1, _080B2E3C + ldr r0, _080B2E40 +_080B2E2C: + str r0, [r1, #8] + ldr r0, _080B2E44 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2E3C: .4byte gUnknown_3002360 +_080B2E40: .4byte sub_08085AA8 +_080B2E44: .4byte sub_0809FDEC + thumb_func_end sub_080B2D68 + + thumb_func_start sub_080B2E48 +sub_080B2E48: @ 0x080B2E48 + push {lr} + ldr r0, _080B2E74 + ldrh r1, [r0] + subs r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080B2E62 + adds r0, r1, #0 + cmp r0, #5 + beq _080B2E62 + cmp r0, #9 + bne _080B2E6A +_080B2E62: + bl sub_080767DC + bl sub_080769E8 +_080B2E6A: + movs r0, #0x7f + bl sub_0808461C + pop {r0} + bx r0 + .align 2, 0 +_080B2E74: .4byte gUnknown_2037280 + thumb_func_end sub_080B2E48 + + thumb_func_start sub_080B2E78 +sub_080B2E78: @ 0x080B2E78 + push {lr} + bl sub_08086C14 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B2E78 + + thumb_func_start sub_080B2E84 +sub_080B2E84: @ 0x080B2E84 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080B2EA8 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080B2EC8 + cmp r0, #1 + bgt _080B2EAC + cmp r0, #0 + beq _080B2EB6 + b _080B2F28 + .align 2, 0 +_080B2EA8: .4byte gUnknown_3005B60 +_080B2EAC: + cmp r0, #2 + beq _080B2EE8 + cmp r0, #3 + beq _080B2F14 + b _080B2F28 +_080B2EB6: + ldr r0, _080B2EC4 + bl sub_08097B74 + movs r0, #1 + strh r0, [r5, #8] + b _080B2F28 + .align 2, 0 +_080B2EC4: .4byte gUnknown_8247C79 +_080B2EC8: + bl sub_08097CC4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B2F28 + bl sub_08086BEC + ldr r0, _080B2EE4 + ldrb r0, [r0] + bl sub_080091C4 + movs r0, #2 + strh r0, [r5, #8] + b _080B2F28 + .align 2, 0 +_080B2EE4: .4byte gUnknown_2037282 +_080B2EE8: + bl sub_08086B78 + cmp r0, #1 + beq _080B2EFA + cmp r0, #1 + blo _080B2F28 + cmp r0, #2 + beq _080B2F0E + b _080B2F28 +_080B2EFA: + bl sub_08097C9C + movs r0, #0 + strh r0, [r5, #8] + bl sub_08086C28 + adds r0, r4, #0 + bl sub_080A8A78 + b _080B2F28 +_080B2F0E: + movs r0, #3 + strh r0, [r5, #8] + b _080B2F28 +_080B2F14: + bl sub_08086C00 + movs r0, #1 + bl sub_081978F0 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080B2F28: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B2E84 + + thumb_func_start sub_080B2F30 +sub_080B2F30: @ 0x080B2F30 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080B2F54 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A8A44 + bl sub_080988B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2F54: .4byte sub_080B2E84 + thumb_func_end sub_080B2F30 + + thumb_func_start sub_080B2F58 +sub_080B2F58: @ 0x080B2F58 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B2F7C + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080B2F9C + cmp r0, #1 + bgt _080B2F80 + cmp r0, #0 + beq _080B2F8A + b _080B2FE0 + .align 2, 0 +_080B2F7C: .4byte gUnknown_3005B60 +_080B2F80: + cmp r0, #2 + beq _080B2FB0 + cmp r0, #3 + beq _080B2FCC + b _080B2FE0 +_080B2F8A: + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + bl sub_08009B44 + b _080B2FC0 +_080B2F9C: + ldr r0, _080B2FAC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B2FE0 + b _080B2FC0 + .align 2, 0 +_080B2FAC: .4byte gUnknown_2037C74 +_080B2FB0: + ldr r1, _080B2FC8 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + bl m4aMPlayAllStop + bl sub_0800A7F8 +_080B2FC0: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080B2FE0 + .align 2, 0 +_080B2FC8: .4byte gUnknown_2031F38 +_080B2FCC: + ldr r0, _080B2FE8 + ldrb r0, [r0] + cmp r0, #0 + bne _080B2FE0 + ldr r0, _080B2FEC + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_080B2FE0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B2FE8: .4byte gUnknown_30031C4 +_080B2FEC: .4byte sub_08076DB4 + thumb_func_end sub_080B2F58 + + thumb_func_start sub_080B2FF0 +sub_080B2FF0: @ 0x080B2FF0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B3014 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080B3034 + cmp r0, #1 + bgt _080B3018 + cmp r0, #0 + beq _080B3022 + b _080B3078 + .align 2, 0 +_080B3014: .4byte gUnknown_3005B68 +_080B3018: + cmp r0, #2 + beq _080B3048 + cmp r0, #3 + beq _080B3064 + b _080B3078 +_080B3022: + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + bl sub_0800F2F8 + b _080B3058 +_080B3034: + ldr r0, _080B3044 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B3078 + b _080B3058 + .align 2, 0 +_080B3044: .4byte gUnknown_2037C74 +_080B3048: + ldr r1, _080B3060 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + bl m4aMPlayAllStop + bl sub_0800A8D4 +_080B3058: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080B3078 + .align 2, 0 +_080B3060: .4byte gUnknown_2031F38 +_080B3064: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3078 + bl sub_08013A80 + adds r0, r5, #0 + bl sub_080A8964 +_080B3078: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B2FF0 + + thumb_func_start sub_080B3080 +sub_080B3080: @ 0x080B3080 + push {lr} + ldr r0, _080B3094 + ldrb r0, [r0] + cmp r0, #0 + beq _080B309C + ldr r0, _080B3098 + bl sub_080B2F30 + b _080B30A2 + .align 2, 0 +_080B3094: .4byte gUnknown_300319C +_080B3098: .4byte sub_080B2FF0 +_080B309C: + ldr r0, _080B30A8 + bl sub_080B2F30 +_080B30A2: + pop {r0} + bx r0 + .align 2, 0 +_080B30A8: .4byte sub_080B2F58 + thumb_func_end sub_080B3080 + + thumb_func_start sub_080B30AC +sub_080B30AC: @ 0x080B30AC + push {lr} + ldr r0, _080B30BC + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B30BC: .4byte sub_080B2F58 + thumb_func_end sub_080B30AC + + thumb_func_start sub_080B30C0 +sub_080B30C0: @ 0x080B30C0 + bx lr + .align 2, 0 + thumb_func_end sub_080B30C0 + + thumb_func_start sub_080B30C4 +sub_080B30C4: @ 0x080B30C4 + push {lr} + ldr r1, _080B30E0 + ldr r2, _080B30E4 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _080B30E8 + ldrb r0, [r0] + cmp r0, #0 + beq _080B30F0 + ldr r0, _080B30EC + bl sub_080B2F30 + b _080B30F6 + .align 2, 0 +_080B30E0: .4byte gUnknown_202267E +_080B30E4: .4byte 0x00002211 +_080B30E8: .4byte gUnknown_300319C +_080B30EC: .4byte sub_080B2B68 +_080B30F0: + ldr r0, _080B30FC + bl sub_080B2F30 +_080B30F6: + pop {r0} + bx r0 + .align 2, 0 +_080B30FC: .4byte sub_080B2A60 + thumb_func_end sub_080B30C4 + + thumb_func_start sub_080B3100 +sub_080B3100: @ 0x080B3100 + push {lr} + ldr r0, _080B3114 + movs r1, #0x50 + bl sub_080A8878 + bl sub_080988B8 + pop {r0} + bx r0 + .align 2, 0 +_080B3114: .4byte sub_080B2E84 + thumb_func_end sub_080B3100 + + thumb_func_start sub_080B3118 +sub_080B3118: @ 0x080B3118 + push {lr} + ldr r0, _080B3128 + ldrb r0, [r0] + ldr r1, _080B312C + bl sub_080C4798 + pop {r0} + bx r0 + .align 2, 0 +_080B3128: .4byte gUnknown_2037284 +_080B312C: .4byte sub_08085B34 + thumb_func_end sub_080B3118 + + thumb_func_start sub_080B3130 +sub_080B3130: @ 0x080B3130 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080B316C + strh r4, [r0] + ldr r0, _080B3170 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r2, _080B3174 + adds r1, r1, r2 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080C4238 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _080B3180 + ldr r0, _080B3178 + lsls r1, r2, #2 + adds r1, r1, r2 + ldr r2, _080B317C + adds r1, r1, r2 + bl sub_080088B8 + movs r0, #1 + b _080B3182 + .align 2, 0 +_080B316C: .4byte gUnknown_2037284 +_080B3170: .4byte gUnknown_2021C40 +_080B3174: .4byte gUnknown_20226A8 +_080B3178: .4byte gUnknown_2021C54 +_080B317C: .4byte gUnknown_852B23F +_080B3180: + movs r0, #0 +_080B3182: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B3130 + + thumb_func_start sub_080B3188 +sub_080B3188: @ 0x080B3188 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080B31E8 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + movs r0, #0x96 + lsls r0, r0, #0x11 + cmp r1, r0 + ble _080B31BA + bl sub_08009384 + ldr r0, _080B31EC + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_080B31BA: + ldr r0, _080B31F0 + ldrb r0, [r0] + cmp r0, #0 + beq _080B31FE + ldr r0, _080B31F4 + ldrb r0, [r0] + cmp r0, #0 + bne _080B31F8 + bl sub_0800A624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B31DE + bl sub_08009384 + ldr r0, _080B31EC + bl sub_08000540 +_080B31DE: + adds r0, r4, #0 + bl sub_080A8964 + b _080B31FE + .align 2, 0 +_080B31E8: .4byte gUnknown_3005B60 +_080B31EC: .4byte sub_0800AA0C +_080B31F0: .4byte gUnknown_30031C4 +_080B31F4: .4byte gUnknown_300319C +_080B31F8: + adds r0, r5, #0 + bl sub_080A8964 +_080B31FE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B3188 + + thumb_func_start sub_080B3204 +sub_080B3204: @ 0x080B3204 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080B3224 + ldrb r0, [r0] + cmp r0, #0 + bne _080B321C + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_080B321C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B3224: .4byte gUnknown_30031C4 + thumb_func_end sub_080B3204 + + thumb_func_start sub_080B3228 +sub_080B3228: @ 0x080B3228 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800A7F8 + ldr r1, _080B3248 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080B324C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B3248: .4byte gUnknown_3005B60 +_080B324C: .4byte sub_080B3204 + thumb_func_end sub_080B3228 + + thumb_func_start sub_080B3250 +sub_080B3250: @ 0x080B3250 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080B3274 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080B32AC + cmp r0, #1 + bgt _080B3278 + cmp r0, #0 + beq _080B3282 + b _080B3310 + .align 2, 0 +_080B3274: .4byte gUnknown_3005B68 +_080B3278: + cmp r0, #2 + beq _080B32C0 + cmp r0, #3 + beq _080B32F6 + b _080B3310 +_080B3282: + ldr r0, _080B3294 + ldrb r0, [r0] + cmp r0, #0 + beq _080B3298 + adds r0, r4, #0 + bl sub_080A8964 + b _080B3310 + .align 2, 0 +_080B3294: .4byte gUnknown_300319C +_080B3298: + bl sub_080092D0 + ldr r0, _080B32A8 + movs r1, #1 + bl sub_080A8878 + b _080B32EE + .align 2, 0 +_080B32A8: .4byte sub_080B3188 +_080B32AC: + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _080B3310 + movs r0, #0 + strh r0, [r5, #2] + b _080B32EE +_080B32C0: + bl sub_0800A770 + adds r4, r0, #0 + bl sub_0800A60C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + blo _080B3310 + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B32EE + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _080B3310 + bl sub_0800A1E4 +_080B32EE: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _080B3310 +_080B32F6: + ldr r0, _080B3318 + ldrb r0, [r0] + cmp r0, #1 + bne _080B3310 + bl sub_08009E00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B3310 + adds r0, r4, #0 + bl sub_080A8964 +_080B3310: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B3318: .4byte gUnknown_30031C4 + thumb_func_end sub_080B3250 + + thumb_func_start sub_080B331C +sub_080B331C: @ 0x080B331C + push {lr} + ldr r0, _080B3334 + ldrb r0, [r0] + cmp r0, #0 + bne _080B332E + ldr r1, _080B3338 + ldr r2, _080B333C + adds r0, r2, #0 + strh r0, [r1] +_080B332E: + pop {r0} + bx r0 + .align 2, 0 +_080B3334: .4byte gUnknown_300319C +_080B3338: .4byte gUnknown_202267E +_080B333C: .4byte 0x00002288 + thumb_func_end sub_080B331C + + thumb_func_start sub_080B3340 +sub_080B3340: @ 0x080B3340 + push {r4, r5, r6, r7, lr} + ldr r0, _080B33CC + movs r1, #0 + strb r1, [r0] + ldr r0, _080B33D0 + strb r1, [r0] + movs r4, #0 + ldr r6, _080B33D4 +_080B3350: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r0, r6 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080B3390 + ldrb r0, [r1, #7] + cmp r0, #1 + beq _080B336A + cmp r0, #3 + bne _080B3390 +_080B336A: + adds r0, r4, #0 + bl sub_080B3458 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080B339A + cmp r0, #0 + beq _080B3390 + ldr r0, _080B33CC + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #1 + bhi _080B33E0 + bl sub_0806B100 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B339A +_080B3390: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080B3350 +_080B339A: + ldr r0, _080B33CC + ldrb r4, [r0] + adds r5, r0, #0 + cmp r4, #1 + bne _080B33E0 + bl sub_080B0BD4 + ldr r2, _080B33D8 + ldrb r0, [r5] + subs r0, #1 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #4 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080B0F18 + ldr r0, _080B33DC + strb r4, [r0] + movs r0, #1 + b _080B344C + .align 2, 0 +_080B33CC: .4byte gUnknown_3005E08 +_080B33D0: .4byte gUnknown_203889C +_080B33D4: .4byte gUnknown_2036FF0 +_080B33D8: .4byte gUnknown_3005DF0 +_080B33DC: .4byte gUnknown_3005E0C +_080B33E0: + ldrb r0, [r5] + cmp r0, #2 + bne _080B3444 + bl sub_080B0BD4 + movs r4, #0 + ldrb r5, [r5] + cmp r4, r5 + bhs _080B341E + ldr r6, _080B3434 + adds r7, r6, #4 + ldr r5, _080B3438 +_080B33F8: + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r0, r1, r6 + ldrb r0, [r0] + adds r1, r1, r7 + ldr r1, [r1] + bl sub_080B0F5C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r0, _080B343C + ldrb r0, [r0] + cmp r4, r0 + blo _080B33F8 +_080B341E: + bl sub_080B0F90 + ldr r1, _080B3438 + movs r0, #0 + strb r0, [r1] + ldr r1, _080B3440 + movs r0, #1 + strb r0, [r1] + movs r0, #1 + b _080B344C + .align 2, 0 +_080B3434: .4byte gUnknown_3005DF0 +_080B3438: .4byte gUnknown_203889C +_080B343C: .4byte gUnknown_3005E08 +_080B3440: .4byte gUnknown_3005E0C +_080B3444: + ldr r1, _080B3454 + movs r0, #0 + strb r0, [r1] + movs r0, #0 +_080B344C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B3454: .4byte gUnknown_3005E0C + thumb_func_end sub_080B3340 + + thumb_func_start sub_080B3458 +sub_080B3458: @ 0x080B3458 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #1 + mov sb, r0 + bl sub_081D5A10 + cmp r0, #1 + bne _080B3476 + bl sub_081D5C48 + b _080B347C +_080B3476: + adds r0, r5, #0 + bl sub_0808E98C +_080B347C: + adds r7, r0, #0 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3496 + adds r0, r5, #0 + bl sub_081A983C +_080B348E: + lsls r0, r0, #0x18 +_080B3490: + cmp r0, #0 + beq _080B34AE + b _080B3538 +_080B3496: + bl sub_081D5A10 + cmp r0, #1 + bne _080B34A6 + adds r0, r5, #0 + bl sub_081D5B38 + b _080B348E +_080B34A6: + adds r0, r7, #0 + bl sub_080B0FA4 + b _080B3490 +_080B34AE: + lsls r4, r5, #3 + adds r0, r4, r5 + lsls r0, r0, #2 + ldr r1, _080B352C + adds r0, r0, r1 + bl sub_080B3548 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r8, r4 + cmp r6, #0 + beq _080B3538 + ldrb r0, [r7, #1] + cmp r0, #4 + beq _080B34D4 + cmp r0, #7 + beq _080B34D4 + cmp r0, #6 + bne _080B34E2 +_080B34D4: + bl sub_0806B100 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B3538 + movs r1, #2 + mov sb, r1 +_080B34E2: + ldr r2, _080B3530 + ldr r4, _080B3534 + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r5, [r0] + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #4 + adds r0, r0, r1 + str r7, [r0] + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r6, [r0, #1] + mov r1, r8 + adds r0, r1, r5 + lsls r0, r0, #2 + ldr r1, _080B352C + adds r0, r0, r1 + subs r1, r6, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080B37C4 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + mov r0, sb + b _080B353A + .align 2, 0 +_080B352C: .4byte gUnknown_2036FF0 +_080B3530: .4byte gUnknown_3005DF0 +_080B3534: .4byte gUnknown_3005E08 +_080B3538: + movs r0, #0 +_080B353A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B3458 + + thumb_func_start sub_080B3548 +sub_080B3548: @ 0x080B3548 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + ldrb r0, [r7, #7] + mov r8, r4 + cmp r0, #1 + bne _080B35A8 + ldr r1, _080B35A0 + ldrb r0, [r7, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1a + subs r0, #4 + adds r0, 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, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r2, [r7, #0x18] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x1c + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080B3708 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B35E8 + .align 2, 0 +_080B35A0: .4byte gUnknown_852B3D8 +_080B35A4: + adds r0, r6, #0 + b _080B35E8 +_080B35A8: + movs r5, #0 +_080B35AA: + ldr r0, _080B35F4 + lsls r4, r5, #2 + adds r4, 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, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080B3708 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B35A4 + adds r5, r4, #0 + cmp r5, #3 + bls _080B35AA + movs r0, #0 +_080B35E8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B35F4: .4byte gUnknown_852B3D8 + thumb_func_end sub_080B3548 + + thumb_func_start sub_080B35F8 +sub_080B35F8: @ 0x080B35F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + movs r1, #0x10 + ldrsh r0, [r4, r1] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r0, r2 + bne _080B3632 + lsls r0, r5, #0x10 + asrs r2, r0, #0x10 + ldrh r3, [r4, #0x12] + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + ble _080B3632 + adds r1, r0, #0 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + cmp r2, r1 + bgt _080B3632 + subs r0, r5, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B3634 +_080B3632: + movs r0, #0 +_080B3634: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B35F8 + + thumb_func_start sub_080B363C +sub_080B363C: @ 0x080B363C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + movs r1, #0x10 + ldrsh r0, [r4, r1] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r0, r2 + bne _080B3676 + lsls r0, r5, #0x10 + asrs r2, r0, #0x10 + ldrh r3, [r4, #0x12] + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + bge _080B3676 + adds r1, r0, #0 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + cmp r2, r1 + blt _080B3676 + subs r0, r3, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B3678 +_080B3676: + movs r0, #0 +_080B3678: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B363C + + thumb_func_start sub_080B3680 +sub_080B3680: @ 0x080B3680 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + cmp r0, r3 + bne _080B36BA + lsls r0, r5, #0x10 + asrs r3, r0, #0x10 + ldrh r2, [r4, #0x10] + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080B36BA + adds r1, r0, #0 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + cmp r3, r1 + blt _080B36BA + subs r0, r2, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B36BC +_080B36BA: + movs r0, #0 +_080B36BC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B3680 + + thumb_func_start sub_080B36C4 +sub_080B36C4: @ 0x080B36C4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + cmp r0, r3 + bne _080B36FE + lsls r0, r5, #0x10 + asrs r3, r0, #0x10 + ldrh r2, [r4, #0x10] + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _080B36FE + adds r1, r0, #0 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + cmp r3, r1 + bgt _080B36FE + subs r0, r5, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B3700 +_080B36FE: + movs r0, #0 +_080B3700: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B36C4 + + thumb_func_start sub_080B3708 +sub_080B3708: @ 0x080B3708 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + cmp r1, #0 + beq _080B37AE + ldrh r1, [r6, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, #0x12] + mov r4, sp + adds r4, #2 + strh r0, [r4] + adds r0, r7, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_080928AC + movs r5, #0 + mov r8, r4 + mov r4, sb + subs r4, #1 + cmp r5, r4 + bge _080B3780 +_080B3746: + 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_080925FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080B376C + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + cmp r1, #0 + bne _080B37AE +_080B376C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r7, #0 + mov r1, sp + mov r2, r8 + bl sub_080928AC + cmp r5, r4 + blt _080B3746 +_080B3780: + ldrb r4, [r6, #0x19] + lsls r5, r4, #0x1c + lsrs r5, r5, #0x1c + lsrs r4, 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_08092538 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r4, r4, #4 + orrs r5, r4 + strb r5, [r6, #0x19] + cmp r1, #4 + beq _080B37B2 +_080B37AE: + movs r0, #0 + b _080B37B4 +_080B37B2: + mov r0, sb +_080B37B4: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B3708 + + thumb_func_start sub_080B37C4 +sub_080B37C4: @ 0x080B37C4 + push {r4, r5, lr} + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080B3810 + movs r1, #0x50 + bl sub_080A8878 + ldr r4, _080B3814 + ldr r3, _080B3818 + ldrb r2, [r3] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strb r0, [r1, #8] + ldrb r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #8] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B381C + adds r1, r1, r0 + strh r5, [r1, #0xe] + ldrb r2, [r3] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0] + strh r0, [r1, #0x16] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B3810: .4byte sub_080B3870 +_080B3814: .4byte gUnknown_3005DF0 +_080B3818: .4byte gUnknown_3005E08 +_080B381C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B37C4 + + thumb_func_start sub_080B3820 +sub_080B3820: @ 0x080B3820 + push {r4, r5, lr} + adds r2, r0, #0 + ldr r0, _080B3834 + ldrb r0, [r0] + cmp r0, #0 + bne _080B383C + ldr r0, _080B3838 + ldrb r5, [r0, #8] + b _080B3840 + .align 2, 0 +_080B3834: .4byte gUnknown_203889C +_080B3838: .4byte gUnknown_3005DF0 +_080B383C: + ldr r0, _080B3864 + ldrb r5, [r0, #0x14] +_080B3840: + ldr r4, _080B3868 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080A8A44 + ldr r1, _080B386C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + adds r0, r5, #0 + bl _call_via_r4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B3864: .4byte gUnknown_3005DF0 +_080B3868: .4byte sub_080B3870 +_080B386C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B3820 + + thumb_func_start sub_080B3870 +sub_080B3870: @ 0x080B3870 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080B38A0 + adds r4, r0, r1 + movs r0, #0x16 + ldrsh r1, [r4, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B38A4 + adds r5, r0, r1 + ldrb r0, [r5] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080B38A8 + adds r0, r6, #0 + bl sub_080A8A78 + b _080B38C4 + .align 2, 0 +_080B38A0: .4byte gUnknown_3005B60 +_080B38A4: .4byte gUnknown_2036FF0 +_080B38A8: + ldr r7, _080B38CC +_080B38AA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r3, [r0] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B38AA +_080B38C4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B38CC: .4byte gUnknown_852B3E8 + thumb_func_end sub_080B3870 + + thumb_func_start sub_080B38D0 +sub_080B38D0: @ 0x080B38D0 + movs r0, #0 + bx lr + thumb_func_end sub_080B38D0 + + thumb_func_start sub_080B38D4 +sub_080B38D4: @ 0x080B38D4 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + ldr r1, _080B3914 + adds r2, r1, #4 + adds r3, r1, #0 + adds r3, #8 + adds r0, r4, #0 + bl sub_0808E0B8 + movs r0, #0 + bl sub_080B5270 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B3914: .4byte gUnknown_20388A8 + thumb_func_end sub_080B38D4 + + thumb_func_start sub_080B3918 +sub_080B3918: @ 0x080B3918 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + movs r0, #0 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B392E + movs r0, #0 + b _080B3950 +_080B392E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldrb r0, [r5, #6] + subs r0, #0x39 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080B3944 + movs r0, #6 + strh r0, [r4, #8] +_080B3944: + ldrb r0, [r5, #6] + cmp r0, #0x3f + bne _080B394E + movs r0, #8 + strh r0, [r4, #8] +_080B394E: + movs r0, #1 +_080B3950: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B3918 + + thumb_func_start sub_080B3958 +sub_080B3958: @ 0x080B3958 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3976 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B39AA +_080B3976: + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080B399C + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CF8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r5, #0xe] + subs r0, #1 + strh r0, [r5, #0xe] + b _080B39AA +_080B399C: + adds r0, r4, #0 + movs r1, #0x3e + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B39AA: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B3958 + + thumb_func_start sub_080B39B4 +sub_080B39B4: @ 0x080B39B4 + push {r4, r5, r6, lr} + adds r6, r1, #0 + adds r5, r2, #0 + adds r0, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B39D2 + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3A60 +_080B39D2: + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080924E8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0809249C + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080924E8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0808EBAC + adds r0, r5, #0 + bl sub_0808EB78 + ldr r0, _080B3A68 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B3A6C + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3A2A + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3A60 +_080B3A2A: + bl sub_0808B64C + ldr r0, _080B3A68 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B3A6C + adds r4, r4, r0 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_080B3A60: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B3A68: .4byte gUnknown_2037230 +_080B3A6C: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B39B4 + + thumb_func_start sub_080B3A70 +sub_080B3A70: @ 0x080B3A70 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080B3AAC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B3AB0 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3A9C + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3AA2 +_080B3A9C: + adds r0, r5, #0 + bl sub_080A8A78 +_080B3AA2: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B3AAC: .4byte gUnknown_2037230 +_080B3AB0: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B3A70 + + thumb_func_start sub_080B3AB4 +sub_080B3AB4: @ 0x080B3AB4 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3AD2 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3AE0 +_080B3AD2: + adds r0, r4, #0 + movs r1, #0x59 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B3AE0: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B3AB4 + + thumb_func_start sub_080B3AE8 +sub_080B3AE8: @ 0x080B3AE8 + push {r4, lr} + adds r4, r1, #0 + adds r0, r2, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3AFC + movs r0, #3 + strh r0, [r4, #8] +_080B3AFC: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B3AE8 + + thumb_func_start sub_080B3B04 +sub_080B3B04: @ 0x080B3B04 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3B22 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3B30 +_080B3B22: + adds r0, r4, #0 + movs r1, #0x3e + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B3B30: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B3B04 + + thumb_func_start sub_080B3B38 +sub_080B3B38: @ 0x080B3B38 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r4, #0 + bl sub_08092BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B3B7E + ldr r2, _080B3B88 + movs r1, #0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, #0x12 + ldrsh r0, [r4, r1] + str r0, [r2, #4] + ldr r3, _080B3B8C + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r2, #8] + movs r0, #2 + str r0, [r2, #0xc] + movs r0, #0x31 + bl sub_080B5270 + strh r0, [r5, #0x10] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B3B7E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B3B88: .4byte gUnknown_20388A8 +_080B3B8C: .4byte gUnknown_20205AC + thumb_func_end sub_080B3B38 + + thumb_func_start sub_080B3B90 +sub_080B3B90: @ 0x080B3B90 + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + ldr r2, _080B3C00 + movs r1, #0x10 + ldrsh r0, [r5, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x2b + ldrb r0, [r1] + cmp r0, #2 + bne _080B3BF8 + ldrb r1, [r4, #3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #3] + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #5] + adds r0, r4, #0 + bl sub_08092BF4 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092E2C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B3BF8: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B3C00: .4byte gUnknown_20205AC + thumb_func_end sub_080B3B90 + + thumb_func_start sub_080B3C04 +sub_080B3C04: @ 0x080B3C04 + push {r4, lr} + adds r4, r1, #0 + movs r0, #0x31 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B3C18 + movs r0, #3 + strh r0, [r4, #8] +_080B3C18: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B3C04 + + thumb_func_start sub_080B3C20 +sub_080B3C20: @ 0x080B3C20 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B3CB4 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0xa + mov r1, sp + bl sub_0806F108 + movs r1, #0x16 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B3C52 + ldr r0, [sp] + bl sub_08092BAC + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] +_080B3C52: + ldr r1, _080B3CB8 + movs r2, #8 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [sp] + ldr r3, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r3 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #3 + bne _080B3CBC + movs r0, #0x31 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B3CBC + ldr r4, [sp] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080924E8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809249C + ldr r4, [sp] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_080924E8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808EBAC + adds r0, r5, #0 + bl sub_080A8964 + b _080B3CC6 + .align 2, 0 +_080B3CB4: .4byte gUnknown_3005B60 +_080B3CB8: .4byte gUnknown_852B418 +_080B3CBC: + ldr r2, [sp] + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] +_080B3CC6: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B3C20 + + thumb_func_start sub_080B3CD0 +sub_080B3CD0: @ 0x080B3CD0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B3CFC + movs r1, #0 + bl sub_080A8878 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _080B3D00 + adds r0, r0, r1 + adds r0, #2 + adds r1, r4, #0 + bl sub_0806F100 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B3CFC: .4byte sub_080B3C20 +_080B3D00: .4byte gUnknown_3005B68 + thumb_func_end sub_080B3CD0 + + thumb_func_start sub_080B3D04 +sub_080B3D04: @ 0x080B3D04 + push {lr} + ldr r0, _080B3D10 + bl sub_080B3820 + pop {r0} + bx r0 + .align 2, 0 +_080B3D10: .4byte sub_080B3D14 + thumb_func_end sub_080B3D04 + + thumb_func_start sub_080B3D14 +sub_080B3D14: @ 0x080B3D14 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B3D14 + + thumb_func_start sub_080B3D28 +sub_080B3D28: @ 0x080B3D28 + push {lr} + ldr r0, _080B3D54 + ldrb r0, [r0] + cmp r0, #2 + bne _080B3D68 + ldr r1, _080B3D58 + ldrb r0, [r1] + cmp r0, #0 + bne _080B3D64 + adds r0, #1 + strb r0, [r1] + ldr r1, _080B3D5C + movs r0, #1 + strh r0, [r1] + bl sub_08096EEC + ldr r0, _080B3D60 + ldrb r0, [r0, #0xc] + bl sub_08096E40 + b _080B3D6E + .align 2, 0 +_080B3D54: .4byte gUnknown_3005E08 +_080B3D58: .4byte gUnknown_203889C +_080B3D5C: .4byte gUnknown_2037290 +_080B3D60: .4byte gUnknown_3005DF0 +_080B3D64: + movs r0, #0 + strb r0, [r1] +_080B3D68: + ldr r1, _080B3D74 + movs r0, #0 + strh r0, [r1] +_080B3D6E: + pop {r0} + bx r0 + .align 2, 0 +_080B3D74: .4byte gUnknown_2037290 + thumb_func_end sub_080B3D28 + + thumb_func_start sub_080B3D78 +sub_080B3D78: @ 0x080B3D78 + push {lr} + ldr r0, _080B3DA8 + movs r1, #0 + movs r2, #0 + movs r3, #0x53 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080B3DA0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B3DAC + adds r0, r0, r1 + movs r1, #0 + movs r2, #0 + bl sub_080B3E30 +_080B3DA0: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B3DA8: .4byte gUnknown_852B460 +_080B3DAC: .4byte gUnknown_20205AC + thumb_func_end sub_080B3D78 + + thumb_func_start sub_080B3DB0 +sub_080B3DB0: @ 0x080B3DB0 + push {lr} + ldr r0, _080B3DE0 + movs r1, #0 + movs r2, #0 + movs r3, #0x52 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080B3DD8 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B3DE4 + adds r0, r0, r1 + movs r1, #0x21 + movs r2, #1 + bl sub_080B3E30 +_080B3DD8: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B3DE0: .4byte gUnknown_852B460 +_080B3DE4: .4byte gUnknown_20205AC + thumb_func_end sub_080B3DB0 + + thumb_func_start sub_080B3DE8 +sub_080B3DE8: @ 0x080B3DE8 + push {r4, lr} + ldr r0, _080B3E28 + movs r1, #0 + movs r2, #0 + movs r3, #0x52 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080B3E1E + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B3E2C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_080B3E30 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #5] +_080B3E1E: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B3E28: .4byte gUnknown_852B478 +_080B3E2C: .4byte gUnknown_20205AC + thumb_func_end sub_080B3DE8 + + thumb_func_start sub_080B3E30 +sub_080B3E30: @ 0x080B3E30 + push {r4, lr} + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r4, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + ands r3, r4 + movs r4, #4 + orrs r3, r4 + strb r3, [r0, #5] + movs r3, #0x3e + adds r3, r3, r0 + mov ip, r3 + ldrb r3, [r3] + movs r4, #2 + orrs r3, r4 + mov r4, ip + strb r3, [r4] + ldr r4, _080B3E74 + ldr r3, [r4] + strh r3, [r0, #0x2e] + ldr r3, [r4, #4] + strh r3, [r0, #0x30] + ldr r3, [r4, #8] + strh r3, [r0, #0x32] + ldr r3, _080B3E78 + strh r3, [r0, #0x34] + strh r1, [r0, #0x3c] + adds r1, r2, #0 + bl sub_08007EC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B3E74: .4byte gUnknown_20388A8 +_080B3E78: .4byte 0x0000FFFB + thumb_func_end sub_080B3E30 + + thumb_func_start sub_080B3E7C +sub_080B3E7C: @ 0x080B3E7C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B3EAE + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080B3EBC +_080B3EAE: + ldrh r1, [r4, #0x3c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080B5444 + b _080B3F0A +_080B3EBC: + ldr r2, _080B3F00 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B3F04 + adds r1, 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, r0, r2 + strh r0, [r4, #0x26] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0 + beq _080B3F08 + adds r0, r3, #1 + strh r0, [r4, #0x34] + b _080B3F0A + .align 2, 0 +_080B3F00: .4byte gUnknown_2036FF0 +_080B3F04: .4byte gUnknown_20205AC +_080B3F08: + strh r2, [r4, #0x34] +_080B3F0A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B3E7C + + thumb_func_start sub_080B3F14 +sub_080B3F14: @ 0x080B3F14 + push {lr} + ldr r0, _080B3F24 + ldrb r0, [r0] + cmp r0, #0 + beq _080B3F2C + ldr r0, _080B3F28 + ldrb r0, [r0, #0xc] + b _080B3F30 + .align 2, 0 +_080B3F24: .4byte gUnknown_203889C +_080B3F28: .4byte gUnknown_3005DF0 +_080B3F2C: + ldr r0, _080B3F34 + ldrb r0, [r0] +_080B3F30: + pop {r1} + bx r1 + .align 2, 0 +_080B3F34: .4byte gUnknown_3005DF0 + thumb_func_end sub_080B3F14 + + thumb_func_start sub_080B3F38 +sub_080B3F38: @ 0x080B3F38 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080B3F46 + movs r0, #0 + b _080B3F58 +_080B3F46: + cmp r0, #0 + beq _080B3F54 + ldr r0, _080B3F50 + ldrb r0, [r0, #0xc] + b _080B3F58 + .align 2, 0 +_080B3F50: .4byte gUnknown_3005DF0 +_080B3F54: + ldr r0, _080B3F5C + ldrb r0, [r0] +_080B3F58: + pop {r1} + bx r1 + .align 2, 0 +_080B3F5C: .4byte gUnknown_3005DF0 + thumb_func_end sub_080B3F38 + + thumb_func_start sub_080B3F60 +sub_080B3F60: @ 0x080B3F60 + push {lr} + ldr r0, _080B3FB0 + ldrb r0, [r0] + cmp r0, #1 + bne _080B3FC8 + ldr r2, _080B3FB4 + ldr r0, _080B3FB8 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B3FBC + adds r0, r0, r1 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08093170 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + ldr r3, _080B3FC0 + strb r0, [r3] + movs r0, #0xfe + strb r0, [r3, #1] + ldr r0, _080B3FC4 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #0xff + bl sub_080D2B88 + b _080B3FF6 + .align 2, 0 +_080B3FB0: .4byte gUnknown_3005E0C +_080B3FB4: .4byte gUnknown_3005DF0 +_080B3FB8: .4byte gUnknown_3005DE0 +_080B3FBC: .4byte gUnknown_2036FF0 +_080B3FC0: .4byte gUnknown_3005DE4 +_080B3FC4: .4byte gUnknown_3005AEC +_080B3FC8: + ldr r0, _080B4000 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B4004 + adds r0, r0, r1 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092CA0 + ldr r3, _080B4008 + strb r0, [r3] + movs r0, #0xfe + strb r0, [r3, #1] + ldr r0, _080B400C + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #0xff + bl sub_080D2B88 +_080B3FF6: + movs r0, #0xff + bl sub_0809B720 + pop {r0} + bx r0 + .align 2, 0 +_080B4000: .4byte gUnknown_2037230 +_080B4004: .4byte gUnknown_2036FF0 +_080B4008: .4byte gUnknown_3005DE4 +_080B400C: .4byte gUnknown_3005AEC + thumb_func_end sub_080B3F60 + + thumb_func_start sub_080B4010 +sub_080B4010: @ 0x080B4010 + ldr r1, _080B4018 + strb r0, [r1] + bx lr + .align 2, 0 +_080B4018: .4byte gUnknown_20388A0 + thumb_func_end sub_080B4010 + + thumb_func_start sub_080B401C +sub_080B401C: @ 0x080B401C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _080B40A4 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r2, r1, #1 + adds r2, r2, r3 + adds r0, r1, #1 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + mov sb, r0 + adds r1, #2 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r6, [r1] + ldrh r5, [r2] + cmp r5, sb + bhi _080B40C6 + ldr r0, _080B40A8 + mov sl, r0 +_080B405E: + movs r4, #0 + mov r1, sl + ldr r0, [r1] + ldr r0, [r0] + cmp r4, r0 + bge _080B40BC + ldr r1, [sp] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r1, [sp, #4] + lsls r0, r1, #0x10 + asrs r7, r0, #0x10 +_080B4078: + adds r0, r4, #7 + adds r1, r5, #7 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088FC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B40AC + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r8, r4 + bne _080B40AC + cmp r7, r5 + bne _080B40AC + adds r0, r6, #0 + b _080B40CC + .align 2, 0 +_080B40A4: .4byte gUnknown_852E728 +_080B40A8: .4byte gUnknown_2036FB8 +_080B40AC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov r1, sl + ldr r0, [r1] + ldr r0, [r0] + cmp r4, r0 + blt _080B4078 +_080B40BC: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, sb + bls _080B405E +_080B40C6: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080B40CC: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080B401C + + thumb_func_start sub_080B40DC +sub_080B40DC: @ 0x080B40DC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + movs r7, #0 + ldr r0, _080B4154 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0x88 + lsls r0, r0, #6 + cmp r1, r0 + bne _080B41D2 + add r5, sp, #0xc + mov r4, sp + adds r4, #0xe + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0808B3CC + ldrh r0, [r5] + subs r0, #7 + strh r0, [r5] + ldrh r0, [r4] + subs r0, #7 + strh r0, [r4] + movs r0, #0 + ldrsh r1, [r4, r0] + ldr r0, _080B4158 + mov sb, r5 + mov r8, r4 + ldrh r2, [r0, #6] + cmp r1, r2 + blt _080B4128 + ldrh r3, [r0, #8] + cmp r1, r3 + bgt _080B4128 + movs r7, #1 +_080B4128: + mov r2, r8 + movs r3, #0 + ldrsh r1, [r2, r3] + ldrh r2, [r0, #0xc] + cmp r1, r2 + blt _080B413C + ldrh r0, [r0, #0xe] + cmp r1, r0 + bgt _080B413C + movs r7, #2 +_080B413C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x31 + bls _080B4160 + b _080B41D2 + .align 2, 0 +_080B4154: .4byte gUnknown_3005AEC +_080B4158: .4byte gUnknown_852E728 +_080B415C: + movs r0, #1 + b _080B41D4 +_080B4160: + ldr r0, _080B41E4 + ldr r0, [r0] + ldr r3, _080B41E8 + adds r0, r0, r3 + ldrh r0, [r0] + bl sub_080B4210 + movs r5, #0 + ldr r6, _080B41EC +_080B4172: + bl sub_080B41F0 + lsls r1, r5, #1 + mov r2, sp + adds r4, r2, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __umodsi3 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B4190 + strh r6, [r4] +_080B4190: + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080B41A2 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080B41A2: + cmp r5, #6 + bne _080B4172 + mov r3, sb + movs r1, #0 + ldrsh r0, [r3, r1] + mov r2, r8 + movs r3, #0 + ldrsh r1, [r2, r3] + adds r2, r7, #0 + bl sub_080B401C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r5, #0 +_080B41BE: + lsls r0, r5, #1 + add r0, sp + ldrh r0, [r0] + cmp r1, r0 + beq _080B415C + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _080B41BE +_080B41D2: + movs r0, #0 +_080B41D4: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B41E4: .4byte gUnknown_3005AEC +_080B41E8: .4byte 0x00002E6A +_080B41EC: .4byte 0x000001BF + thumb_func_end sub_080B40DC + + thumb_func_start sub_080B41F0 +sub_080B41F0: @ 0x080B41F0 + ldr r2, _080B4204 + ldr r1, [r2] + ldr r0, _080B4208 + muls r0, r1, r0 + ldr r1, _080B420C + adds r0, r0, r1 + str r0, [r2] + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080B4204: .4byte gUnknown_20388A4 +_080B4208: .4byte 0x41C64E6D +_080B420C: .4byte 0x00003039 + thumb_func_end sub_080B41F0 + + thumb_func_start sub_080B4210 +sub_080B4210: @ 0x080B4210 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080B421C + str r0, [r1] + bx lr + .align 2, 0 +_080B421C: .4byte gUnknown_20388A4 + thumb_func_end sub_080B4210 + + thumb_func_start sub_080B4220 +sub_080B4220: @ 0x080B4220 + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x13 + bhi _080B423C + movs r0, #0 + b _080B42D6 +_080B423C: + adds r0, r1, #0 + subs r0, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080B424C + movs r0, #1 + b _080B42D6 +_080B424C: + adds r0, r1, #0 + subs r0, #0x28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bhi _080B425C + movs r0, #2 + b _080B42D6 +_080B425C: + adds r0, r1, #0 + subs r0, #0x32 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bhi _080B426C + movs r0, #3 + b _080B42D6 +_080B426C: + adds r0, r1, #0 + subs r0, #0x3c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bhi _080B427C + movs r0, #4 + b _080B42D6 +_080B427C: + adds r0, r1, #0 + subs r0, #0x46 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bhi _080B428C + movs r0, #5 + b _080B42D6 +_080B428C: + adds r0, r1, #0 + subs r0, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080B429C + movs r0, #6 + b _080B42D6 +_080B429C: + adds r0, r1, #0 + subs r0, #0x55 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080B42AC + movs r0, #7 + b _080B42D6 +_080B42AC: + adds r0, r1, #0 + subs r0, #0x5a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080B42BC + movs r0, #8 + b _080B42D6 +_080B42BC: + adds r0, r1, #0 + subs r0, #0x5e + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080B42CC + movs r0, #9 + b _080B42D6 +_080B42CC: + cmp r1, #0x62 + beq _080B42D4 + movs r0, #0xb + b _080B42D6 +_080B42D4: + movs r0, #0xa +_080B42D6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B4220 + + thumb_func_start sub_080B42DC +sub_080B42DC: @ 0x080B42DC + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + cmp r1, #0x3b + bhi _080B42FA + movs r0, #0 + b _080B432C +_080B42FA: + adds r0, r1, #0 + subs r0, #0x3c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1d + bhi _080B430A + movs r0, #1 + b _080B432C +_080B430A: + adds r0, r1, #0 + subs r0, #0x5a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080B431A + movs r0, #2 + b _080B432C +_080B431A: + adds r0, r2, #0 + subs r0, #0x5f + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _080B432A + movs r0, #4 + b _080B432C +_080B432A: + movs r0, #3 +_080B432C: + pop {r1} + bx r1 + thumb_func_end sub_080B42DC + + thumb_func_start sub_080B4330 +sub_080B4330: @ 0x080B4330 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + movs r5, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r4, #1 + beq _080B436A + cmp r4, #1 + bgt _080B435A + cmp r4, #0 + beq _080B4360 + b _080B43C4 +_080B435A: + cmp r6, #2 + beq _080B438E + b _080B43C4 +_080B4360: + movs r5, #1 + cmp r1, #0x45 + bhi _080B43C4 + movs r5, #0 + b _080B43C4 +_080B436A: + cmp r1, #0x3b + bhi _080B4370 + movs r5, #2 +_080B4370: + adds r0, r1, #0 + subs r0, #0x3c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080B437E + movs r5, #3 +_080B437E: + adds r0, r1, #0 + subs r0, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080B43C4 + movs r5, #4 + b _080B43C4 +_080B438E: + cmp r1, #0x27 + bhi _080B4394 + movs r5, #5 +_080B4394: + adds r0, r1, #0 + subs r0, #0x28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x27 + bhi _080B43A2 + movs r5, #6 +_080B43A2: + adds r0, r1, #0 + subs r0, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe + bhi _080B43B0 + movs r5, #7 +_080B43B0: + adds r0, r1, #0 + subs r0, #0x5f + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080B43BE + movs r5, #8 +_080B43BE: + cmp r1, #0x63 + bne _080B43C4 + movs r5, #9 +_080B43C4: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B4330 + + thumb_func_start sub_080B43CC +sub_080B43CC: @ 0x080B43CC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + ldrb r1, [r4] + cmp r0, r1 + blo _080B43DE + ldrb r7, [r4] + adds r6, r0, #0 + b _080B43E2 +_080B43DE: + ldrb r7, [r4, #1] + ldrb r6, [r4] +_080B43E2: + subs r4, r6, r7 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _080B4434 + adds r0, r5, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B4442 + adds r0, r5, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x37 + beq _080B4420 + cmp r0, #0x48 + beq _080B4420 + cmp r0, #0x2e + bne _080B4442 +_080B4420: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080B4438 + adds r0, r6, #0 + b _080B4448 + .align 2, 0 +_080B4434: .4byte gUnknown_2024190 +_080B4438: + cmp r4, #0 + beq _080B4442 + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080B4442: + adds r0, r7, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080B4448: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B43CC + + thumb_func_start sub_080B4450 +sub_080B4450: @ 0x080B4450 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r0, _080B44A0 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0xff + beq _080B44C4 + ldr r6, _080B44A4 +_080B4460: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r0, r5 + ldrb r1, [r3] + ldr r0, _080B44A8 + ldr r2, [r0] + movs r0, #4 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080B44B0 + ldrb r1, [r3, #1] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080B44B0 + ldrh r0, [r2, #4] + cmp r0, r6 + bne _080B449C + ldr r0, _080B44AC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bls _080B4496 + movs r0, #0 +_080B4496: + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080B449C: + adds r0, r4, #0 + b _080B44C6 + .align 2, 0 +_080B44A0: .4byte gUnknown_852D9F4 +_080B44A4: .4byte 0x00006A18 +_080B44A8: .4byte gUnknown_3005AEC +_080B44AC: .4byte 0x0000403E +_080B44B0: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0xff + bne _080B4460 +_080B44C4: + ldr r0, _080B44CC +_080B44C6: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B44CC: .4byte 0x0000FFFF + thumb_func_end sub_080B4450 + + thumb_func_start sub_080B44D0 +sub_080B44D0: @ 0x080B44D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + bl sub_080FC910 + cmp r0, #1 + bne _080B4566 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4f + bhi _080B4566 + bl sub_080FCC28 + adds r7, r0, #0 + cmp r7, #0 + beq _080B4566 + movs r5, #0 +_080B44FE: + mov r1, sp + adds r0, r1, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x18 + bls _080B44FE + movs r5, #0 +_080B4510: + adds r1, r5, #1 + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + adds r6, r1, #0 + cmp r4, #0x18 + bhi _080B4540 + add r5, sp +_080B451E: + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080B4536 + ldrb r2, [r5] + mov r0, sp + adds r1, r0, r4 + ldrb r0, [r1] + strb r0, [r5] + strb r2, [r1] +_080B4536: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x18 + bls _080B451E +_080B4540: + lsls r0, r6, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x17 + bls _080B4510 + movs r5, #0 +_080B454A: + mov r1, sp + adds r4, r1, r5 + ldrb r0, [r4] + adds r1, r7, #0 + bl sub_08137054 + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080B45A0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x18 + bls _080B454A +_080B4566: + ldr r4, _080B459C + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B45A4 + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1c + bne _080B45A4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080B45A4 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + b _080B45AC + .align 2, 0 +_080B459C: .4byte gUnknown_2024190 +_080B45A0: + ldrb r0, [r4] + b _080B45B6 +_080B45A4: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080B45AC: + movs r1, #0x19 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080B45B6: + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B44D0 + + thumb_func_start sub_080B45C0 +sub_080B45C0: @ 0x080B45C0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + bl sub_08067710 + movs r2, #1 + ldr r1, _080B4650 + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _080B45EE + cmp r0, #0 + blt _080B45F0 + cmp r0, #0xff + bgt _080B45F0 + cmp r0, #0xfe + blt _080B45F0 +_080B45EE: + movs r2, #0 +_080B45F0: + cmp r2, #0 + beq _080B4680 + ldr r5, _080B4654 + adds r0, r5, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B4680 + adds r0, r5, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x38 + bne _080B4680 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080B4680 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xfe + bne _080B4658 + movs r4, #0 + b _080B465A + .align 2, 0 +_080B4650: .4byte gUnknown_82F0D54 +_080B4654: .4byte gUnknown_2024190 +_080B4658: + movs r4, #0xfe +_080B465A: + bl sub_080B44D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B467C + str r4, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r1, #0 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x20 + bl sub_08067ADC + b _080B4698 + .align 2, 0 +_080B467C: .4byte gUnknown_20243E8 +_080B4680: + bl sub_080B44D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B46A0 + str r0, [sp] + adds r0, r1, #0 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x20 + bl sub_08067A74 +_080B4698: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B46A0: .4byte gUnknown_20243E8 + thumb_func_end sub_080B45C0 + + thumb_func_start sub_080B46A4 +sub_080B46A4: @ 0x080B46A4 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + adds r4, r3, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r1, #0 + mov r0, sp + strb r1, [r0] + cmp r3, #1 + beq _080B46F8 + cmp r3, #1 + bgt _080B46C8 + cmp r3, #0 + beq _080B46CE + b _080B4712 +_080B46C8: + cmp r4, #2 + beq _080B470A + b _080B4712 +_080B46CE: + ldr r0, [r5, #4] + movs r1, #8 + movs r2, #0x2a + mov r3, sp + bl sub_080B51A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4712 + ldr r0, [r5, #4] + movs r1, #0xd + movs r2, #9 + mov r3, sp + bl sub_080B51A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4712 + bl sub_080B4220 + b _080B470E +_080B46F8: + ldr r0, [r5, #4] + movs r1, #0xd + movs r2, #9 + mov r3, sp + bl sub_080B51A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4712 +_080B470A: + bl sub_080B42DC +_080B470E: + mov r1, sp + strb r0, [r1] +_080B4712: + mov r0, sp + ldrb r1, [r0] + lsls r1, r1, #2 + ldr r0, [r5, #4] + adds r0, r0, r1 + bl sub_080B43CC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #1 + ands r0, r6 + cmp r0, #0 + beq _080B4738 + adds r0, r4, #0 + bl sub_080B5024 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B4758 +_080B4738: + ldr r0, _080B475C + ldrh r1, [r0, #0x12] + movs r0, #0xb3 + lsls r0, r0, #1 + cmp r1, r0 + beq _080B4760 + movs r0, #2 + ands r0, r6 + cmp r0, #0 + beq _080B4760 + adds r0, r4, #0 + bl sub_080B508C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4760 +_080B4758: + movs r0, #0 + b _080B4774 + .align 2, 0 +_080B475C: .4byte gUnknown_2036FB8 +_080B4760: + mov r0, sp + ldrb r0, [r0] + ldr r1, [r5, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #2] + adds r1, r4, #0 + bl sub_080B45C0 + movs r0, #1 +_080B4774: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B46A4 + + thumb_func_start sub_080B477C +sub_080B477C: @ 0x080B477C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080B4330 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x16 + ldr r0, [r5, #4] + adds r0, r0, r4 + bl sub_080B43CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, [r5, #4] + adds r0, r4, r0 + ldrh r0, [r0, #2] + bl sub_080B45C0 + ldr r0, [r5, #4] + adds r4, r4, r0 + ldrh r0, [r4, #2] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B477C + + thumb_func_start sub_080B47B4 +sub_080B47B4: @ 0x080B47B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B47E4 + ldr r0, _080B47DC + ldr r0, [r0] + ldr r1, _080B47E0 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080B5024 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B47E4 + movs r0, #0 + b _080B481E + .align 2, 0 +_080B47DC: .4byte gUnknown_3005AEC +_080B47E0: .4byte 0x00002B94 +_080B47E4: + ldr r0, _080B4824 + ldr r1, [r0] + ldr r2, _080B4828 + adds r0, r1, r2 + ldrh r0, [r0] + adds r2, #4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_080B45C0 + movs r4, #0 +_080B47FA: + ldr r0, _080B4824 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _080B482C + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080B4830 + bl sub_08068D34 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080B47FA + movs r0, #1 +_080B481E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B4824: .4byte gUnknown_3005AEC +_080B4828: .4byte 0x00002B90 +_080B482C: .4byte 0x00002B98 +_080B4830: .4byte gUnknown_20243E8 + thumb_func_end sub_080B47B4 + + thumb_func_start sub_080B4834 +sub_080B4834: @ 0x080B4834 + push {r4, lr} + ldr r4, _080B4884 + ldr r2, [r4] + ldr r1, _080B4888 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080B4894 + movs r1, #5 + ldrsb r1, [r2, r1] + ldr r3, _080B488C + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _080B4894 + movs r1, #4 + ldrsb r1, [r2, r1] + adds r3, #1 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _080B4894 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + ldr r1, [r4] + ldr r2, _080B4890 + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + cmp r0, r1 + bhs _080B4894 + movs r0, #1 + b _080B4896 + .align 2, 0 +_080B4884: .4byte gUnknown_3005AEC +_080B4888: .4byte 0x00002B90 +_080B488C: .4byte 0x00002B92 +_080B4890: .4byte 0x00002BA1 +_080B4894: + movs r0, #0 +_080B4896: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B4834 + + thumb_func_start sub_080B489C +sub_080B489C: @ 0x080B489C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xb4 + lsls r1, r1, #4 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + blo _080B48C0 + movs r0, #0 + b _080B48C2 +_080B48C0: + movs r0, #1 +_080B48C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B489C + + thumb_func_start sub_080B48C8 +sub_080B48C8: @ 0x080B48C8 + push {r4, lr} + sub sp, #4 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r0, r0, #4 + str r0, [sp] + movs r0, #6 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B48F2 + ldr r1, [sp] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #4 + movs r1, #0x64 + bl __udivsi3 + str r0, [sp] +_080B48F2: + mov r0, sp + bl sub_080B5208 + mov r0, sp + bl sub_080B5248 + cmp r4, #0 + bne _080B496E + ldr r4, _080B4934 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B496E + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4940 + ldr r0, _080B4938 + ldrh r1, [r0, #0x12] + ldr r0, _080B493C + cmp r1, r0 + bne _080B4968 + ldr r1, [sp] + lsls r0, r1, #1 + adds r0, r0, r1 + lsrs r0, r0, #2 + b _080B496C + .align 2, 0 +_080B4934: .4byte gUnknown_2024190 +_080B4938: .4byte gUnknown_2036FB8 +_080B493C: .4byte 0x00000169 +_080B4940: + cmp r0, #0x23 + bne _080B494A + ldr r0, [sp] + lsls r0, r0, #1 + b _080B496C +_080B494A: + cmp r0, #0x49 + beq _080B4968 + cmp r0, #0x47 + bne _080B4958 + ldr r0, [sp] + lsls r0, r0, #1 + b _080B496C +_080B4958: + cmp r0, #8 + bne _080B496E + ldr r0, _080B4990 + ldr r0, [r0] + adds r0, #0x2e + ldrb r0, [r0] + cmp r0, #8 + bne _080B496E +_080B4968: + ldr r0, [sp] + lsrs r0, r0, #1 +_080B496C: + str r0, [sp] +_080B496E: + ldr r0, [sp] + movs r1, #0xb4 + lsls r1, r1, #4 + cmp r0, r1 + bls _080B497A + str r1, [sp] +_080B497A: + ldr r0, [sp] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080B489C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B4990: .4byte gUnknown_3005AEC + thumb_func_end sub_080B48C8 + + thumb_func_start sub_080B4994 +sub_080B4994: @ 0x080B4994 + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x3b + bhi _080B49B0 + movs r0, #1 + b _080B49B2 +_080B49B0: + movs r0, #0 +_080B49B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B4994 + + thumb_func_start sub_080B49B8 +sub_080B49B8: @ 0x080B49B8 + push {lr} + ldr r0, _080B49D4 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xe0 + lsls r0, r0, #3 + cmp r1, r0 + bne _080B49D8 + movs r0, #0x53 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B49DA + .align 2, 0 +_080B49D4: .4byte gUnknown_3005AEC +_080B49D8: + movs r0, #0 +_080B49DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B49B8 + + thumb_func_start sub_080B49E0 +sub_080B49E0: @ 0x080B49E0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov sb, r6 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + mov r8, r7 + ldr r0, _080B4A78 + ldrb r0, [r0] + cmp r0, #1 + bne _080B49FE + b _080B4C56 +_080B49FE: + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080B4A7C + cmp r5, r0 + bne _080B4AF4 + ldr r0, _080B4A80 + ldrh r1, [r0, #0x12] + movs r0, #0xb3 + lsls r0, r0, #1 + cmp r1, r0 + bne _080B4A88 + bl sub_081A7A80 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r7, r6 + beq _080B4A30 + bl sub_080B4994 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4A30 + b _080B4C56 +_080B4A30: + ldr r1, _080B4A84 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, #4 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, #0 + bl sub_080B48C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4A50 + b _080B4C56 +_080B4A50: + ldr r0, [r4] + movs r1, #0 + movs r2, #2 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4A64 + b _080B4C56 +_080B4A64: + movs r0, #1 + bl sub_081A7910 + cmp r0, #0 + bne _080B4A70 + b _080B4C56 +_080B4A70: + bl sub_080AFFAC + movs r0, #1 + b _080B4C58 + .align 2, 0 +_080B4A78: .4byte gUnknown_20388A0 +_080B4A7C: .4byte 0x0000FFFF +_080B4A80: .4byte gUnknown_2036FB8 +_080B4A84: .4byte gUnknown_852E6C0 +_080B4A88: + ldr r0, _080B4AE4 + cmp r1, r0 + beq _080B4A90 + b _080B4C56 +_080B4A90: + ldr r0, _080B4AE8 + ldr r0, [r0] + ldr r1, _080B4AEC + adds r0, r0, r1 + ldrh r5, [r0] + cmp r7, r6 + beq _080B4AAA + bl sub_080B4994 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4AAA + b _080B4C56 +_080B4AAA: + ldr r1, _080B4AF0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, #4 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, #0 + bl sub_080B48C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4ACA + b _080B4C56 +_080B4ACA: + ldr r0, [r4] + movs r1, #0 + movs r2, #2 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4ADE + b _080B4C56 +_080B4ADE: + bl sub_081A997C + b _080B4C4E + .align 2, 0 +_080B4AE4: .4byte 0x00000169 +_080B4AE8: .4byte gUnknown_3005AF0 +_080B4AEC: .4byte 0x00000CB2 +_080B4AF0: .4byte gUnknown_852E540 +_080B4AF4: + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088E90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4B94 + ldr r1, _080B4B90 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + adds r4, r2, #0 + cmp r0, #0 + bne _080B4B1C + b _080B4C56 +_080B4B1C: + cmp r7, r6 + beq _080B4B2C + bl sub_080B4994 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B4B2C + b _080B4C56 +_080B4B2C: + ldr r1, _080B4B90 + adds r0, r4, r5 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0] + movs r1, #0 + bl sub_080B48C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4B4A + b _080B4C56 +_080B4B4A: + bl sub_08161DF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4C12 + bl sub_080B4834 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4B70 + movs r0, #3 + bl sub_080B47B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4C4E +_080B4B70: + ldr r1, _080B4B90 + adds r0, r4, r5 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #3 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4C4E + b _080B4C56 + .align 2, 0 +_080B4B90: .4byte gUnknown_852D9F4 +_080B4B94: + adds r0, r4, #0 + bl sub_08088EBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4BBC + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B4C56 + adds r0, r4, #0 + bl sub_08088E10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4C56 +_080B4BBC: + bl sub_080B49B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4C56 + ldr r1, _080B4C30 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + ldr r0, [r0] + adds r4, r2, #0 + cmp r0, #0 + beq _080B4C56 + cmp r8, sb + beq _080B4BEA + bl sub_080B4994 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B4C56 +_080B4BEA: + ldr r1, _080B4C30 + adds r0, r4, r5 + lsls r0, r0, #2 + adds r1, #8 + adds r4, r0, r1 + ldr r0, [r4] + ldrb r0, [r0] + movs r1, #0 + bl sub_080B48C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4C56 + bl sub_08161DF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4C3C +_080B4C12: + ldr r0, _080B4C34 + ldr r0, [r0] + ldr r1, _080B4C38 + adds r0, r0, r1 + ldrb r0, [r0, #0xc] + bl sub_080B5024 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B4C56 + bl sub_080B0028 + movs r0, #1 + b _080B4C58 + .align 2, 0 +_080B4C30: .4byte gUnknown_852D9F4 +_080B4C34: .4byte gUnknown_3005AEC +_080B4C38: .4byte 0x000031DC +_080B4C3C: + ldr r0, [r4] + movs r1, #1 + movs r2, #3 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4C56 +_080B4C4E: + bl sub_080AFF94 + movs r0, #1 + b _080B4C58 +_080B4C56: + movs r0, #0 +_080B4C58: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080B49E0 + + thumb_func_start sub_080B4C64 +sub_080B4C64: @ 0x080B4C64 + push {r4, lr} + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080B4CB4 + cmp r2, r0 + beq _080B4CC0 + ldr r1, _080B4CB8 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, #0xc + adds r0, r0, r1 + ldr r4, [r0] + cmp r4, #0 + beq _080B4CAC + ldrb r0, [r4] + movs r1, #1 + bl sub_080B48C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4CC0 + adds r0, r4, #0 + movs r1, #2 + movs r2, #3 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _080B4CC0 + bl sub_080AFF94 +_080B4CAC: + ldr r0, _080B4CBC + strh r4, [r0] + b _080B4CC6 + .align 2, 0 +_080B4CB4: .4byte 0x0000FFFF +_080B4CB8: .4byte gUnknown_852D9F4 +_080B4CBC: .4byte gUnknown_2037290 +_080B4CC0: + ldr r1, _080B4CCC + movs r0, #0 + strh r0, [r1] +_080B4CC6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B4CCC: .4byte gUnknown_2037290 + thumb_func_end sub_080B4C64 + + thumb_func_start sub_080B4CD0 +sub_080B4CD0: @ 0x080B4CD0 + push {r4, r5, lr} + sub sp, #4 + mov r5, sp + adds r5, #2 + mov r0, sp + adds r1, r5, #0 + bl sub_0808B410 + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080B4D30 + cmp r4, r0 + bne _080B4D84 + ldr r0, _080B4D34 + ldrh r1, [r0, #0x12] + movs r0, #0xb3 + lsls r0, r0, #1 + cmp r1, r0 + bne _080B4D3C + bl sub_081A7A80 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080B4D38 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #0 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4D22 + b _080B4E4A +_080B4D22: + movs r0, #0 + bl sub_081A7910 + bl sub_080AFFAC + movs r0, #1 + b _080B4E4C + .align 2, 0 +_080B4D30: .4byte 0x0000FFFF +_080B4D34: .4byte gUnknown_2036FB8 +_080B4D38: .4byte gUnknown_852E6C0 +_080B4D3C: + ldr r0, _080B4D74 + cmp r1, r0 + beq _080B4D44 + b _080B4E4A +_080B4D44: + ldr r0, _080B4D78 + ldr r0, [r0] + ldr r1, _080B4D7C + adds r0, r0, r1 + ldrh r4, [r0] + ldr r1, _080B4D80 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #0 + bl sub_080B46A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4E4A + bl sub_081A997C + b _080B4E42 + .align 2, 0 +_080B4D74: .4byte 0x00000169 +_080B4D78: .4byte gUnknown_3005AF0 +_080B4D7C: .4byte 0x00000CB2 +_080B4D80: .4byte gUnknown_852E540 +_080B4D84: + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088E90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4DE4 + ldr r1, _080B4DD4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #4 + adds r0, r0, r1 + ldr r4, [r0] + cmp r4, #0 + beq _080B4E4A + bl sub_08161DF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4E2C + bl sub_080B4834 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4DD8 + movs r0, #0 + bl sub_080B47B4 + b _080B4E42 + .align 2, 0 +_080B4DD4: .4byte gUnknown_852D9F4 +_080B4DD8: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_080B46A4 + b _080B4E42 +_080B4DE4: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088EBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4E4A + bl sub_080B49B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080B4E4A + ldr r1, _080B4E34 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + ldr r4, [r0] + cmp r4, #0 + beq _080B4E4A + bl sub_08161DF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4E38 +_080B4E2C: + bl sub_080B0028 + movs r0, #1 + b _080B4E4C + .align 2, 0 +_080B4E34: .4byte gUnknown_852D9F4 +_080B4E38: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_080B46A4 +_080B4E42: + bl sub_080AFF94 + movs r0, #1 + b _080B4E4C +_080B4E4A: + movs r0, #0 +_080B4E4C: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B4CD0 + + thumb_func_start sub_080B4E54 +sub_080B4E54: @ 0x080B4E54 + push {lr} + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080B4E7C + cmp r2, r0 + beq _080B4E84 + ldr r0, _080B4E80 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, #0x10 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + beq _080B4E84 + movs r0, #1 + b _080B4E86 + .align 2, 0 +_080B4E7C: .4byte 0x0000FFFF +_080B4E80: .4byte gUnknown_852D9F4 +_080B4E84: + movs r0, #0 +_080B4E86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B4E54 + + thumb_func_start sub_080B4E8C +sub_080B4E8C: @ 0x080B4E8C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080B40DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B4EBC + ldr r4, _080B4EB8 + adds r0, r4, #0 + bl sub_080B43CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r4, [r4, #2] + adds r0, r4, #0 + bl sub_080B45C0 + b _080B4EDC + .align 2, 0 +_080B4EB8: .4byte gUnknown_852E724 +_080B4EBC: + ldr r4, _080B4EF4 + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r4, #0x10 + adds r1, r1, r4 + ldr r0, [r1] + adds r1, r5, #0 + bl sub_080B477C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080B4EDC: + movs r0, #0xc + bl sub_0808414C + adds r0, r4, #0 + bl sub_080EE55C + bl sub_080AFF94 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B4EF4: .4byte gUnknown_852D9F4 + thumb_func_end sub_080B4E8C + + thumb_func_start sub_080B4EF8 +sub_080B4EF8: @ 0x080B4EF8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0 + strb r0, [r6] + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _080B4F30 + cmp r3, r0 + beq _080B4F2A + ldr r2, _080B4F34 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r0, r2, #4 + adds r0, r1, r0 + ldr r5, [r0] + adds r2, #8 + adds r1, r1, r2 + ldr r4, [r1] + cmp r5, #0 + bne _080B4F38 + cmp r4, #0 + bne _080B4F3E +_080B4F2A: + movs r0, #0 + b _080B4F7E + .align 2, 0 +_080B4F30: .4byte 0x0000FFFF +_080B4F34: .4byte gUnknown_852D9F4 +_080B4F38: + cmp r4, #0 + bne _080B4F4C + b _080B4F70 +_080B4F3E: + movs r0, #1 + strb r0, [r6] + bl sub_080B42DC + lsls r0, r0, #0x18 + ldr r1, [r4, #4] + b _080B4F78 +_080B4F4C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4f + bls _080B4F70 + movs r0, #1 + strb r0, [r6] + bl sub_080B42DC + lsls r0, r0, #0x18 + ldr r1, [r4, #4] + b _080B4F78 +_080B4F70: + bl sub_080B4220 + lsls r0, r0, #0x18 + ldr r1, [r5, #4] +_080B4F78: + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrh r0, [r0, #2] +_080B4F7E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B4EF8 + + thumb_func_start sub_080B4F84 +sub_080B4F84: @ 0x080B4F84 + push {r4, lr} + bl sub_080B4450 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080B4FB8 + cmp r2, r0 + beq _080B4FC0 + ldr r1, _080B4FBC + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + ldr r4, [r0] + cmp r4, #0 + beq _080B4FC0 + bl sub_080B42DC + lsls r0, r0, #0x18 + ldr r1, [r4, #4] + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrh r0, [r0, #2] + b _080B4FC2 + .align 2, 0 +_080B4FB8: .4byte 0x0000FFFF +_080B4FBC: .4byte gUnknown_852D9F4 +_080B4FC0: + movs r0, #0 +_080B4FC2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B4F84 + + thumb_func_start sub_080B4FC8 +sub_080B4FC8: @ 0x080B4FC8 + push {r4, r5, lr} + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B501C + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B501C + bl sub_08017AC0 + cmp r0, #1 + beq _080B501C + ldr r5, _080B5014 + adds r0, r5, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _080B501C + subs r4, r0, #1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809CF88 + cmp r4, #0 + bne _080B501C + ldr r0, _080B5018 + bl sub_08098880 + movs r0, #1 + b _080B501E + .align 2, 0 +_080B5014: .4byte 0x00004021 +_080B5018: .4byte gUnknown_8262393 +_080B501C: + movs r0, #0 +_080B501E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B4FC8 + + thumb_func_start sub_080B5024 +sub_080B5024: @ 0x080B5024 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080B5070 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080B506A + movs r5, #0 +_080B5038: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080B5074 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080B5078 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _080B5078 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + blo _080B5082 +_080B506A: + movs r0, #1 + b _080B5084 + .align 2, 0 +_080B5070: .4byte 0x00004021 +_080B5074: .4byte gUnknown_2024190 +_080B5078: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _080B5038 +_080B5082: + movs r0, #0 +_080B5084: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B5024 + + thumb_func_start sub_080B508C +sub_080B508C: @ 0x080B508C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080B50DC + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B50E0 + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x33 + beq _080B50B2 + cmp r0, #0x16 + bne _080B50E0 +_080B50B2: + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _080B50E0 + subs r0, #5 + cmp r5, r0 + bgt _080B50E0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080B50E0 + movs r0, #0 + b _080B50E2 + .align 2, 0 +_080B50DC: .4byte gUnknown_2024190 +_080B50E0: + movs r0, #1 +_080B50E2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B508C + + thumb_func_start sub_080B50E8 +sub_080B50E8: @ 0x080B50E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r7, sp + mov ip, r0 + mov r8, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [r7] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, sp + adds r0, r2, #3 + lsrs r0, r0, #2 + lsls r0, r0, #2 + mov r1, sp + subs r1, r1, r0 + mov sp, r1 + mov r5, sp + movs r3, #0 + cmp r3, r2 + bhs _080B512A + movs r1, #0 +_080B511C: + adds r0, r5, r3 + strb r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r2 + blo _080B511C +_080B512A: + movs r4, #0 + movs r3, #0 + cmp r4, r2 + bhs _080B516A + ldr r6, _080B5178 + mov sl, r6 +_080B5136: + lsls r0, r3, #2 + add r0, ip + ldrh r1, [r0, #2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r6, sl + adds r1, r0, r6 + ldrb r0, [r1, #6] + ldr r6, [r7] + cmp r0, r6 + beq _080B5154 + ldrb r0, [r1, #7] + cmp r0, r6 + bne _080B5160 +_080B5154: + adds r1, r4, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r1, r5, r1 + strb r3, [r1] +_080B5160: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r2 + blo _080B5136 +_080B516A: + cmp r4, #0 + beq _080B5172 + cmp r4, r2 + bne _080B517C +_080B5172: + movs r0, #0 + b _080B5194 + .align 2, 0 +_080B5178: .4byte gUnknown_82F0D54 +_080B517C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + adds r0, r5, r0 + ldrb r0, [r0] + mov r1, r8 + strb r0, [r1] + movs r0, #1 +_080B5194: + mov sp, sb + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B50E8 + + thumb_func_start sub_080B51A8 +sub_080B51A8: @ 0x080B51A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + mov r8, r3 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + ldr r4, _080B51F8 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080B51FC + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bne _080B51FC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080B51FC + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0xc + mov r3, r8 + bl sub_080B50E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080B51FE + .align 2, 0 +_080B51F8: .4byte gUnknown_2024190 +_080B51FC: + movs r0, #0 +_080B51FE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080B51A8 + + thumb_func_start sub_080B5208 +sub_080B5208: @ 0x080B5208 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B5224 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B5228 + ldr r0, [r4] + lsrs r1, r0, #1 + adds r0, r0, r1 + b _080B523A + .align 2, 0 +_080B5224: .4byte 0x000008AD +_080B5228: + ldr r0, _080B5244 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B523C + ldr r0, [r4] + lsrs r0, r0, #1 +_080B523A: + str r0, [r4] +_080B523C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B5244: .4byte 0x000008AE + thumb_func_end sub_080B5208 + + thumb_func_start sub_080B5248 +sub_080B5248: @ 0x080B5248 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B526C + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0xbe + bne _080B5264 + ldr r0, [r4] + lsls r0, r0, #1 + movs r1, #3 + bl __udivsi3 + str r0, [r4] +_080B5264: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B526C: .4byte gUnknown_2024190 + thumb_func_end sub_080B5248 + + thumb_func_start sub_080B5270 +sub_080B5270: @ 0x080B5270 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080B553C + ldr r0, _080B52B0 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + str r0, [sp] + add r4, sp, #4 + ldr r5, _080B52B4 +_080B528E: + ldr r0, [sp] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r2, [r0] + mov r0, sp + adds r1, r4, #0 + bl _call_via_r2 + thumb_func_end sub_080B5270 + + thumb_func_start sub_080B52A0 +sub_080B52A0: @ 0x080B52A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B528E + ldr r0, [sp, #4] + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B52B0: .4byte gUnknown_8289F5C +_080B52B4: .4byte gUnknown_8536E9C + thumb_func_end sub_080B52A0 + + thumb_func_start sub_080B52B8 +sub_080B52B8: @ 0x080B52B8 + push {lr} + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + bl sub_080B5394 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B52B8 + + thumb_func_start sub_080B52CC +sub_080B52CC: @ 0x080B52CC + push {lr} + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + bl sub_080B53C4 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B52CC + + thumb_func_start sub_080B52E0 +sub_080B52E0: @ 0x080B52E0 + push {lr} + ldr r1, [r0] + adds r1, #1 + str r1, [r0] + bl sub_080B53EC + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B52E0 + + thumb_func_start sub_080B52F4 +sub_080B52F4: @ 0x080B52F4 + push {lr} + ldr r2, [r0] + adds r2, #1 + str r2, [r0] + bl sub_080B5404 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B52F4 + + thumb_func_start sub_080B5308 +sub_080B5308: @ 0x080B5308 + movs r0, #0 + bx lr + thumb_func_end sub_080B5308 + + thumb_func_start sub_080B530C +sub_080B530C: @ 0x080B530C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + adds r0, r4, #0 + bl sub_080B5394 + adds r0, r4, #0 + bl sub_080B53C4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080B5404 + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B530C + + thumb_func_start sub_080B5334 +sub_080B5334: @ 0x080B5334 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + adds r0, r4, #0 + bl sub_080B5394 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080B5404 + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B5334 + + thumb_func_start sub_080B5358 +sub_080B5358: @ 0x080B5358 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4] + adds r0, #1 + str r0, [r4] + adds r0, r4, #0 + bl sub_080B53C4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080B5404 + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B5358 + + thumb_func_start sub_080B537C +sub_080B537C: @ 0x080B537C + ldr r2, [r0] + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + adds r0, r0, r1 + ldrb r1, [r2, #2] + lsls r1, r1, #0x10 + adds r0, r0, r1 + ldrb r1, [r2, #3] + lsls r1, r1, #0x18 + adds r0, r0, r1 + bx lr + thumb_func_end sub_080B537C + + thumb_func_start sub_080B5394 +sub_080B5394: @ 0x080B5394 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080B537C + adds r5, r0, #0 + ldrh r0, [r5, #6] + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _080B53C0 + cmp r0, r1 + bne _080B53B2 + adds r0, r5, #0 + bl sub_08008210 +_080B53B2: + ldr r0, [r4] + adds r0, #4 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B53C0: .4byte 0xFFFF0000 + thumb_func_end sub_080B5394 + + thumb_func_start sub_080B53C4 +sub_080B53C4: @ 0x080B53C4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080B537C + adds r4, r0, #0 + bl sub_0800845C + ldrh r0, [r4, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AB714 + ldr r0, [r5] + adds r0, #4 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B53C4 + + thumb_func_start sub_080B53EC +sub_080B53EC: @ 0x080B53EC + push {r4, lr} + adds r4, r0, #0 + bl sub_080B537C + bl sub_0800845C + ldr r0, [r4] + adds r0, #4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B53EC + + thumb_func_start sub_080B5404 +sub_080B5404: @ 0x080B5404 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080B537C + bl _call_via_r0 + str r0, [r5] + thumb_func_end sub_080B5404 + + thumb_func_start sub_080B5414 +sub_080B5414: @ 0x080B5414 + ldr r0, [r4] + adds r0, #4 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B5414 + + thumb_func_start sub_080B5420 +sub_080B5420: @ 0x080B5420 + push {r4, r5, lr} + adds r1, r0, #0 + adds r1, #0x40 + ldrh r5, [r1] + ldrb r4, [r0, #5] + lsrs r4, r4, #4 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_080B545C + adds r0, r4, #0 + bl sub_080B54C0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B5420 + + thumb_func_start sub_080B5444 +sub_080B5444: @ 0x080B5444 + push {r4, lr} + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_080B5420 + adds r0, r4, #0 + bl sub_080B5568 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B5444 + + thumb_func_start sub_080B545C +sub_080B545C: @ 0x080B545C + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_08008390 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _080B54B8 + cmp r3, r0 + beq _080B54B0 + movs r2, #0 + ldr r5, _080B54BC +_080B5476: + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r5 + adds r0, r1, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080B54A0 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080B54A0 + adds r0, r1, #0 + adds r0, #0x40 + ldrh r0, [r0] + cmp r4, r0 + beq _080B54B0 +_080B54A0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _080B5476 + adds r0, r3, #0 + bl sub_08008280 +_080B54B0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B54B8: .4byte 0x0000FFFF +_080B54BC: .4byte gUnknown_20205AC + thumb_func_end sub_080B545C + + thumb_func_start sub_080B54C0 +sub_080B54C0: @ 0x080B54C0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08008554 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080B5510 + cmp r5, r0 + beq _080B5508 + movs r2, #0 + ldr r6, _080B5514 + adds r3, r4, #0 +_080B54DC: + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r6 + adds r0, r1, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080B54F8 + ldrb r0, [r1, #5] + lsrs r0, r0, #4 + cmp r0, r3 + beq _080B5508 +_080B54F8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _080B54DC + adds r0, r5, #0 + bl sub_08008564 +_080B5508: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B5510: .4byte 0x0000FFFF +_080B5514: .4byte gUnknown_20205AC + thumb_func_end sub_080B54C0 + + thumb_func_start sub_080B5518 +sub_080B5518: @ 0x080B5518 + push {r4, lr} + movs r2, #0 + ldr r4, _080B5538 + movs r3, #0xff +_080B5520: + adds r0, r2, r4 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _080B5520 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B5538: .4byte gUnknown_3000F58 + thumb_func_end sub_080B5518 + + thumb_func_start sub_080B553C +sub_080B553C: @ 0x080B553C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r4, _080B5554 +_080B5546: + adds r1, r2, r4 + ldrb r0, [r1] + cmp r0, #0xff + bne _080B5558 + strb r3, [r1] + b _080B5562 + .align 2, 0 +_080B5554: .4byte gUnknown_3000F58 +_080B5558: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _080B5546 +_080B5562: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B553C + + thumb_func_start sub_080B5568 +sub_080B5568: @ 0x080B5568 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r4, _080B5584 + movs r5, #0xff +_080B5574: + adds r1, r2, r4 + ldrb r0, [r1] + cmp r0, r3 + bne _080B5588 + orrs r0, r5 + strb r0, [r1] + b _080B5592 + .align 2, 0 +_080B5584: .4byte gUnknown_3000F58 +_080B5588: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _080B5574 +_080B5592: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B5568 + + thumb_func_start sub_080B5598 +sub_080B5598: @ 0x080B5598 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _080B55B0 +_080B55A2: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _080B55B4 + movs r0, #1 + b _080B55C0 + .align 2, 0 +_080B55B0: .4byte gUnknown_3000F58 +_080B55B4: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1f + bls _080B55A2 + movs r0, #0 +_080B55C0: + pop {r1} + bx r1 + thumb_func_end sub_080B5598 + + thumb_func_start sub_080B55C4 +sub_080B55C4: @ 0x080B55C4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + mov sb, r3 + ldr r7, [sp, #0x34] + lsls r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsrs r4, r4, #0x15 + ldr r3, _080B564C + mov r8, r3 + add r8, r4 + mov r0, r8 + adds r1, r7, #0 + bl sub_08034418 + ldr r0, _080B5650 + adds r4, r4, r0 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_080343BC + mov r1, sp + ldrh r0, [r4, #6] + movs r2, #0 + strh r0, [r1] + mov r3, r8 + ldrh r0, [r3, #4] + strh r0, [r1, #2] + ldr r0, _080B5654 + str r0, [sp, #4] + ldr r0, _080B5658 + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, _080B565C + str r0, [sp, #0x10] + ldr r0, _080B5660 + str r0, [sp, #0x14] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + mov r0, sp + adds r1, r5, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B564C: .4byte gUnknown_82D91CC +_080B5650: .4byte gUnknown_82D8EE4 +_080B5654: .4byte gUnknown_8536EBC +_080B5658: .4byte gUnknown_82BF304 +_080B565C: .4byte gUnknown_82BF310 +_080B5660: .4byte sub_08007140 + thumb_func_end sub_080B55C4 + + thumb_func_start sub_080B5664 +sub_080B5664: @ 0x080B5664 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r1, r2, #0 + lsls r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080B5694 + lsrs r4, r4, #0x15 + adds r0, r4, r0 + ldr r0, [r0] + bl sub_0803437C + ldr r0, _080B5698 + adds r4, r4, r0 + ldr r0, [r4] + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A11BC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B5694: .4byte gUnknown_82D8EE4 +_080B5698: .4byte gUnknown_82D91CC + thumb_func_end sub_080B5664 + + thumb_func_start sub_080B569C +sub_080B569C: @ 0x080B569C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _080B56D4 + bl sub_0800845C + ldr r0, _080B56D8 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B56D4: .4byte gUnknown_8536EDC +_080B56D8: .4byte gUnknown_8536EF0 + thumb_func_end sub_080B569C + + thumb_func_start sub_080B56DC +sub_080B56DC: @ 0x080B56DC + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + str r1, [sp] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + str r2, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + ldr r1, _080B572C + lsls r4, r0, #3 + adds r4, r4, r1 + ldrh r1, [r4, #4] + str r1, [sp, #0xc] + movs r1, #0 + adds r2, r3, #0 + movs r3, #1 + bl sub_0818D504 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #4] + bl sub_0800851C + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080ABCF4 + ldr r0, _080B5730 + cmp r5, r0 + beq _080B5734 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + b _080B5736 + .align 2, 0 +_080B572C: .4byte gUnknown_82D6F08 +_080B5730: .4byte 0x0000FFFF +_080B5734: + movs r0, #0x40 +_080B5736: + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B56DC + + thumb_func_start sub_080B5740 +sub_080B5740: @ 0x080B5740 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0x10 + adds r6, r0, #0 + mov sb, r1 + mov sl, r2 + adds r4, r3, #0 + ldr r5, [sp, #0x2c] + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + bl sub_0806E258 + mov r8, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + mov r1, r8 + ldrh r0, [r1, #4] + str r0, [sp, #0xc] + adds r0, r6, #0 + mov r1, sb + mov r2, sl + movs r3, #1 + bl sub_0818D504 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov r1, r8 + ldrh r0, [r1, #4] + bl sub_0800851C + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080ABCF4 + ldr r0, _080B57B0 + cmp r4, r0 + beq _080B57B4 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + b _080B57B6 + .align 2, 0 +_080B57B0: .4byte 0x0000FFFF +_080B57B4: + movs r0, #0x40 +_080B57B6: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B5740 + + thumb_func_start sub_080B57C8 +sub_080B57C8: @ 0x080B57C8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_080ABD24 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _080B57E6 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 +_080B57E6: + adds r0, r5, #0 + bl sub_0818D54C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B57C8 + + thumb_func_start sub_080B57F4 +sub_080B57F4: @ 0x080B57F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _080B5878 + lsrs r0, r0, #0xf + adds r4, r0, r4 + ldrh r4, [r4] + movs r5, #0x1f + mov sb, r5 + mov r8, r4 + mov r6, r8 + ands r6, r5 + mov r8, r6 + movs r6, #0xf8 + lsls r6, r6, #2 + ands r6, r4 + lsrs r6, r6, #5 + movs r5, #0xf8 + lsls r5, r5, #7 + ands r4, r5 + lsrs r4, r4, #0xa + mov r7, sb + mov r5, r8 + subs r7, r7, r5 + mov ip, r7 + mov r7, ip + muls r7, r1, r7 + adds r1, r7, #0 + asrs r1, r1, #4 + add r8, r1 + mov r5, sb + subs r1, r5, r6 + muls r1, r2, r1 + asrs r1, r1, #4 + adds r6, r6, r1 + subs r5, r5, r4 + mov sb, r5 + mov r1, sb + muls r1, r3, r1 + asrs r1, r1, #4 + adds r4, r4, r1 + mov r7, r8 + lsls r7, r7, #0x10 + lsls r6, r6, #0x15 + orrs r6, r7 + lsls r4, r4, #0x1a + orrs r4, r6 + lsrs r4, r4, #0x10 + ldr r1, _080B587C + adds r0, r0, r1 + strh r4, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B5878: .4byte gUnknown_20373B4 +_080B587C: .4byte gUnknown_20377B4 + thumb_func_end sub_080B57F4 + + thumb_func_start sub_080B5880 +sub_080B5880: @ 0x080B5880 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _080B58F0 + lsrs r0, r0, #0xf + 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, r5, #2 + ands r5, r4 + lsrs r5, r5, #5 + movs r6, #0xf8 + lsls r6, r6, #7 + ands r4, r6 + lsrs r4, r4, #0xa + mov r6, r8 + muls r6, r1, r6 + adds r1, r6, #0 + asrs r1, r1, #4 + mov r6, r8 + subs r6, r6, r1 + adds r1, r5, #0 + muls r1, r2, r1 + asrs r1, r1, #4 + subs r5, r5, r1 + adds r1, r4, #0 + muls r1, r3, r1 + asrs r1, r1, #4 + subs r4, r4, r1 + lsls r6, r6, #0x10 + lsls r5, r5, #0x15 + orrs r5, r6 + lsls r4, r4, #0x1a + orrs r4, r5 + lsrs r4, r4, #0x10 + ldr r1, _080B58F4 + adds r0, r0, r1 + strh r4, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B58F0: .4byte gUnknown_20373B4 +_080B58F4: .4byte gUnknown_20377B4 + thumb_func_end sub_080B5880 + + thumb_func_start sub_080B58F8 +sub_080B58F8: @ 0x080B58F8 + push {r4, lr} + bl sub_0806B004 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080B5934 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B5938 + adds r1, r1, r0 + strh r4, [r1, #0xa] + movs r0, #0x5d + strh r0, [r1, #0xc] + movs r0, #0x24 + strh r0, [r1, #0xe] + movs r0, #0x7c + strh r0, [r1, #0x10] + movs r0, #0x18 + strh r0, [r1, #0x12] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B5934: .4byte sub_080B593C +_080B5938: .4byte gUnknown_3005B60 + thumb_func_end sub_080B58F8 + + thumb_func_start sub_080B593C +sub_080B593C: @ 0x080B593C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B5964 + adds r1, r1, r0 + ldr r2, _080B5968 + movs r3, #8 + ldrsh r0, [r1, r3] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r2, [r0] + adds r0, r1, #0 + bl _call_via_r2 + pop {r0} + thumb_func_end sub_080B593C + + thumb_func_start sub_080B5960 +sub_080B5960: @ 0x080B5960 + bx r0 + .align 2, 0 +_080B5964: .4byte gUnknown_3005B60 +_080B5968: .4byte gUnknown_8537010 + thumb_func_end sub_080B5960 + + thumb_func_start sub_080B596C +sub_080B596C: @ 0x080B596C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r2, #0xc + ldrsh r1, [r4, r2] + movs r3, #0xe + ldrsh r2, [r4, r3] + movs r3, #1 + bl sub_080B5BC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + movs r1, #0x10 + ldrsh r0, [r4, r1] + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl sub_080B5FA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x16] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B596C + + thumb_func_start sub_080B59A8 +sub_080B59A8: @ 0x080B59A8 + push {r4, lr} + adds r2, r0, #0 + ldr r3, _080B59E0 + movs r1, #0x14 + ldrsh r0, [r2, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r4, #0x2e + ldrsh r0, [r1, r4] + cmp r0, #1 + ble _080B59DA + movs r0, #0x16 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x2e] + adds r1, #1 + strh r1, [r0, #0x2e] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_080B59DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B59E0: .4byte gUnknown_20205AC + thumb_func_end sub_080B59A8 + + thumb_func_start sub_080B59E4 +sub_080B59E4: @ 0x080B59E4 + push {lr} + adds r3, r0, #0 + ldr r2, _080B5A08 + movs r0, #0x14 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x2e + ldrsh r0, [r0, r1] + cmp r0, #4 + ble _080B5A04 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B5A04: + pop {r0} + bx r0 + .align 2, 0 +_080B5A08: .4byte gUnknown_20205AC + thumb_func_end sub_080B59E4 + + thumb_func_start sub_080B5A0C +sub_080B5A0C: @ 0x080B5A0C + push {lr} + ldr r2, _080B5A44 + movs r3, #0x14 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #6 + ble _080B5A3E + adds r0, r1, #0 + bl sub_08006E00 + movs r0, #0x19 + bl sub_080B5568 + ldr r0, _080B5A48 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B5A3E: + pop {r0} + bx r0 + .align 2, 0 +_080B5A44: .4byte gUnknown_20205AC +_080B5A48: .4byte sub_080B593C + thumb_func_end sub_080B5A0C + + thumb_func_start sub_080B5A4C +sub_080B5A4C: @ 0x080B5A4C + push {r4, lr} + bl sub_0806B004 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080B5A80 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B5A84 + adds r1, r1, r0 + strh r4, [r1, #0xa] + movs r0, #0x75 + strh r0, [r1, #0xc] + movs r0, #0x34 + strh r0, [r1, #0xe] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B5A80: .4byte sub_080B5A88 +_080B5A84: .4byte gUnknown_3005B60 + thumb_func_end sub_080B5A4C + + thumb_func_start sub_080B5A88 +sub_080B5A88: @ 0x080B5A88 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B5AB0 + adds r1, r1, r0 + ldr r2, _080B5AB4 + movs r3, #8 + ldrsh r0, [r1, r3] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r2, [r0] + adds r0, r1, #0 + bl _call_via_r2 + pop {r0} + thumb_func_end sub_080B5A88 + + thumb_func_start sub_080B5AAC +sub_080B5AAC: @ 0x080B5AAC + bx r0 + .align 2, 0 +_080B5AB0: .4byte gUnknown_3005B60 +_080B5AB4: .4byte gUnknown_8537020 + thumb_func_end sub_080B5AAC + + thumb_func_start sub_080B5AB8 +sub_080B5AB8: @ 0x080B5AB8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + 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_080B5BC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + ldr r0, _080B5B28 + bl sub_080A8AE4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0x78 + movs r2, #0x18 + movs r3, #0 + bl sub_080B6044 + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #8 + movs r3, #1 + bl sub_080B6044 + adds r0, r4, #0 + movs r1, #0x48 + movs r2, #8 + movs r3, #1 + bl sub_080B6044 + adds r0, r4, #0 + movs r1, #0xa8 + movs r2, #8 + movs r3, #1 + bl sub_080B6044 + adds r0, r4, #0 + movs r1, #0xc8 + movs r2, #8 + movs r3, #1 + bl sub_080B6044 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B5B28: .4byte sub_080B5A88 + thumb_func_end sub_080B5AB8 + + thumb_func_start sub_080B5B2C +sub_080B5B2C: @ 0x080B5B2C + push {lr} + adds r3, r0, #0 + ldr r2, _080B5B58 + movs r0, #0x14 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x2e + ldrsh r0, [r0, r1] + cmp r0, #1 + ble _080B5B52 + ldrh r0, [r3, #0x26] + adds r0, #1 + strh r0, [r3, #0x26] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B5B52: + pop {r0} + bx r0 + .align 2, 0 +_080B5B58: .4byte gUnknown_20205AC + thumb_func_end sub_080B5B2C + + thumb_func_start sub_080B5B5C +sub_080B5B5C: @ 0x080B5B5C + push {lr} + adds r3, r0, #0 + ldr r2, _080B5B80 + movs r0, #0x14 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x2e + ldrsh r0, [r0, r1] + cmp r0, #4 + ble _080B5B7C + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B5B7C: + pop {r0} + bx r0 + .align 2, 0 +_080B5B80: .4byte gUnknown_20205AC + thumb_func_end sub_080B5B5C + + thumb_func_start sub_080B5B84 +sub_080B5B84: @ 0x080B5B84 + push {lr} + ldr r2, _080B5BBC + movs r3, #0x14 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #6 + ble _080B5BB6 + adds r0, r1, #0 + bl sub_08006E00 + movs r0, #0x3e + bl sub_080B5568 + ldr r0, _080B5BC0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B5BB6: + pop {r0} + bx r0 + .align 2, 0 +_080B5BBC: .4byte gUnknown_20205AC +_080B5BC0: .4byte sub_080B5A88 + thumb_func_end sub_080B5B84 + + thumb_func_start sub_080B5BC4 +sub_080B5BC4: @ 0x080B5BC4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, _080B5C10 + bl sub_08006BCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _080B5C14 + adds r1, r1, r2 + strh r4, [r1, #0x24] + strh r5, [r1, #0x26] + strh r6, [r1, #0x38] + mov r2, r8 + strh r2, [r1, #0x3a] + strh r0, [r1, #0x3c] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B5C10: .4byte sub_080B5C18 +_080B5C14: .4byte gUnknown_20205AC + thumb_func_end sub_080B5BC4 + + thumb_func_start sub_080B5C18 +sub_080B5C18: @ 0x080B5C18 + push {lr} + ldr r2, _080B5C30 + movs r3, #0x2e + ldrsh r1, [r0, r3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B5C30: .4byte gUnknown_8537030 + thumb_func_end sub_080B5C18 + + thumb_func_start sub_080B5C34 +sub_080B5C34: @ 0x080B5C34 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080B5C4C + subs r0, r1, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B5CA8 +_080B5C4C: + movs r0, #0x19 + strh r0, [r4, #0x30] + ldr r0, _080B5CC0 + ldr r1, _080B5CC4 + movs r2, #0x32 + ldrsh r3, [r4, r2] + lsls r3, r3, #2 + adds r3, r3, r1 + ldrh r1, [r4, #0x24] + ldrh r2, [r3] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r4, #0x26] + ldrh r3, [r3, #2] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B5CC8 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #5] + ldrh r0, [r4, #0x3c] + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x3a] + subs r0, #1 + strh r0, [r4, #0x3a] + movs r0, #0x17 + bl sub_080A306C +_080B5CA8: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B5CBA + movs r0, #0x20 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_080B5CBA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B5CC0: .4byte gUnknown_8536FB0 +_080B5CC4: .4byte gUnknown_8537050 +_080B5CC8: .4byte gUnknown_20205AC + thumb_func_end sub_080B5C34 + + thumb_func_start sub_080B5CCC +sub_080B5CCC: @ 0x080B5CCC + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + subs r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + bne _080B5CFC + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + movs r0, #8 + strh r0, [r1, #0x30] + strh r2, [r1, #0x32] + strh r2, [r1, #0x34] + movs r2, #0x38 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080B5CFC + movs r0, #0xb8 + lsls r0, r0, #1 + bl sub_080A29AC +_080B5CFC: + pop {r0} + bx r0 + thumb_func_end sub_080B5CCC + + thumb_func_start sub_080B5D00 +sub_080B5D00: @ 0x080B5D00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldrh r0, [r7, #0x30] + subs r0, #1 + strh r0, [r7, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B5D30 + movs r0, #8 + strh r0, [r7, #0x30] + ldrh r0, [r7, #0x32] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strh r0, [r7, #0x32] + cmp r0, #0 + bne _080B5D30 + ldrh r0, [r7, #0x34] + adds r0, #1 + strh r0, [r7, #0x34] +_080B5D30: + ldrh r4, [r7, #0x32] + adds r4, #3 + movs r0, #3 + mov r8, r0 + mov r1, r8 + ands r4, r1 + ldr r3, _080B5E28 + mov sl, r3 + mov r0, sl + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x84 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ldr r6, _080B5E2C + adds r1, r4, r6 + ldrb r1, [r1] + ldr r5, _080B5E30 + adds r2, r4, r5 + ldrb r2, [r2] + ldr r3, _080B5E34 + mov sb, r3 + add r4, sb + ldrb r3, [r4] + bl sub_080B57F4 + ldrh r4, [r7, #0x32] + adds r4, #2 + mov r0, r8 + ands r4, r0 + mov r0, sl + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x83 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r4, r6 + ldrb r1, [r1] + adds r2, r4, r5 + ldrb r2, [r2] + add r4, sb + ldrb r3, [r4] + bl sub_080B57F4 + ldrh r4, [r7, #0x32] + adds r4, #1 + mov r3, r8 + ands r4, r3 + mov r0, sl + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x81 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r4, r6 + ldrb r1, [r1] + adds r2, r4, r5 + ldrb r2, [r2] + add r4, sb + ldrb r3, [r4] + bl sub_080B57F4 + ldrh r4, [r7, #0x32] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sl + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r3, _080B5E38 + adds r0, r0, r3 + lsrs r0, r0, #0x10 + adds r6, r4, r6 + ldrb r6, [r6] + adds r5, r4, r5 + ldrb r5, [r5] + add r4, sb + ldrb r4, [r4] + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + mov r0, sl + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r1, _080B5E3C + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + movs r3, #0x34 + ldrsh r0, [r7, r3] + cmp r0, #2 + ble _080B5E1A + ldrh r0, [r7, #0x2e] + adds r0, #1 + movs r1, #0 + strh r0, [r7, #0x2e] + movs r0, #8 + strh r0, [r7, #0x30] + strh r1, [r7, #0x32] +_080B5E1A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B5E28: .4byte 0x00001007 +_080B5E2C: .4byte gUnknown_8537068 +_080B5E30: .4byte gUnknown_853706C +_080B5E34: .4byte gUnknown_8537070 +_080B5E38: .4byte 0x01050000 +_080B5E3C: .4byte 0x01030000 + thumb_func_end sub_080B5D00 + + thumb_func_start sub_080B5E40 +sub_080B5E40: @ 0x080B5E40 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + subs r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B5E70 + movs r0, #8 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x32] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strh r0, [r2, #0x32] + cmp r0, #3 + bne _080B5E70 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + movs r0, #0x1e + strh r0, [r2, #0x30] +_080B5E70: + ldrh r4, [r2, #0x32] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080B5F1C + mov r8, r0 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x84 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ldr r1, _080B5F20 + adds r1, r4, r1 + ldrb r6, [r1] + ldr r1, _080B5F24 + adds r1, r4, r1 + ldrb r5, [r1] + ldr r1, _080B5F28 + adds r4, r4, r1 + ldrb r4, [r4] + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + mov r0, r8 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x83 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + mov r0, r8 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + movs r1, #0x81 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + mov r0, r8 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r1, _080B5F2C + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + mov r0, r8 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r1, _080B5F30 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080B57F4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B5F1C: .4byte 0x00001007 +_080B5F20: .4byte gUnknown_8537068 +_080B5F24: .4byte gUnknown_853706C +_080B5F28: .4byte gUnknown_8537070 +_080B5F2C: .4byte 0x01050000 +_080B5F30: .4byte 0x01030000 + thumb_func_end sub_080B5E40 + + thumb_func_start sub_080B5F34 +sub_080B5F34: @ 0x080B5F34 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + subs r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B5F4A + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] +_080B5F4A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B5F34 + + thumb_func_start sub_080B5F50 +sub_080B5F50: @ 0x080B5F50 + ldrh r1, [r0, #0x2e] + adds r1, #1 + strh r1, [r0, #0x2e] + bx lr + thumb_func_end sub_080B5F50 + + thumb_func_start sub_080B5F58 +sub_080B5F58: @ 0x080B5F58 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080B5F6E + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B5F74 +_080B5F6E: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_080B5F74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B5F58 + + thumb_func_start sub_080B5F7C +sub_080B5F7C: @ 0x080B5F7C + bx lr + .align 2, 0 + thumb_func_end sub_080B5F7C + + thumb_func_start sub_080B5F80 +sub_080B5F80: @ 0x080B5F80 + push {lr} + adds r3, r0, #0 + ldr r2, _080B5FA4 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x2e + ldrsh r0, [r0, r1] + cmp r0, #4 + ble _080B5FA0 + adds r0, r3, #0 + bl sub_080B5420 +_080B5FA0: + pop {r0} + bx r0 + .align 2, 0 +_080B5FA4: .4byte gUnknown_20205AC + thumb_func_end sub_080B5F80 + + thumb_func_start sub_080B5FA8 +sub_080B5FA8: @ 0x080B5FA8 + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _080B5FF8 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r1, r3, #0 + movs r3, #0 + bl sub_08006B60 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080B5FFC + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #5] + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + ldr r1, _080B6000 + bl sub_0800858C + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B5FF8: .4byte gUnknown_8536FC8 +_080B5FFC: .4byte gUnknown_20205AC +_080B6000: .4byte gUnknown_8536F58 + thumb_func_end sub_080B5FA8 + + thumb_func_start sub_080B6004 +sub_080B6004: @ 0x080B6004 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080B6028 + movs r0, #0 + strh r0, [r4, #0x2e] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 +_080B6028: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080B603C + adds r0, r4, #0 + bl sub_080B5420 +_080B603C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B6004 + + thumb_func_start sub_080B6044 +sub_080B6044: @ 0x080B6044 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x18 + cmp r3, #0 + bne _080B608C + ldr r0, _080B6080 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080B6084 + adds r0, r0, r1 + ldr r1, _080B6088 + bl sub_0800858C + b _080B60A0 + .align 2, 0 +_080B6080: .4byte gUnknown_8536FE0 +_080B6084: .4byte gUnknown_20205AC +_080B6088: .4byte gUnknown_8536F70 +_080B608C: + ldr r0, _080B60C0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080B60A0: + ldr r1, _080B60C4 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + strh r5, [r0, #0x2e] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B60C0: .4byte gUnknown_8536FF8 +_080B60C4: .4byte gUnknown_20205AC + thumb_func_end sub_080B6044 + + thumb_func_start sub_080B60C8 +sub_080B60C8: @ 0x080B60C8 + push {lr} + adds r3, r0, #0 + ldr r2, _080B6130 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x26 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080B611E + ldrh r1, [r3, #0x30] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _080B60F6 + subs r0, r1, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B6118 +_080B60F6: + movs r0, #0x10 + strh r0, [r3, #0x30] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] +_080B6118: + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] +_080B611E: + movs r2, #0x32 + ldrsh r0, [r3, r2] + cmp r0, #0x7f + ble _080B612C + adds r0, r3, #0 + bl sub_080B5420 +_080B612C: + pop {r0} + bx r0 + .align 2, 0 +_080B6130: .4byte gUnknown_3005B60 + thumb_func_end sub_080B60C8 + + thumb_func_start sub_080B6134 +sub_080B6134: @ 0x080B6134 + push {lr} + ldr r0, _080B6148 + bl sub_08000540 + ldr r1, _080B614C + ldr r0, _080B6150 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080B6148: .4byte sub_08085A30 +_080B614C: .4byte gUnknown_3005B0C +_080B6150: .4byte sub_080B6154 + thumb_func_end sub_080B6134 + + thumb_func_start sub_080B6154 +sub_080B6154: @ 0x080B6154 + push {lr} + bl sub_080AE99C + ldr r0, _080B6174 + movs r1, #0 + bl sub_080A8878 + bl sub_080987DC + bl sub_08096E04 + ldr r1, _080B6178 + movs r0, #0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080B6174: .4byte sub_080B617C +_080B6178: .4byte gUnknown_3005B0C + thumb_func_end sub_080B6154 + + thumb_func_start sub_080B617C +sub_080B617C: @ 0x080B617C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B61E8 + adds r4, r0, r1 + movs r0, #8 + ldrsh r6, [r4, r0] + cmp r6, #0 + bne _080B61BC + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B61E2 + bl sub_081B1024 + ldr r1, _080B61EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + cmp r0, #5 + ble _080B61B0 + str r6, [r1] +_080B61B0: + movs r0, #0x1f + bl sub_080B5270 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B61BC: + movs r0, #0x1f + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B61E2 + bl sub_08083FE8 + bl sub_08084540 + ldr r0, _080B61F0 + bl sub_08000540 + ldr r1, _080B61F4 + ldr r0, _080B61F8 + str r0, [r1] + adds r0, r5, #0 + bl sub_080A8964 +_080B61E2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B61E8: .4byte gUnknown_3005B60 +_080B61EC: .4byte gUnknown_20388A8 +_080B61F0: .4byte sub_08085934 +_080B61F4: .4byte gUnknown_3005B0C +_080B61F8: .4byte sub_080B61FC + thumb_func_end sub_080B617C + + thumb_func_start sub_080B61FC +sub_080B61FC: @ 0x080B61FC + push {r4, lr} + bl sub_080850EC + bl sub_080AE99C + ldr r0, _080B6254 + movs r1, #0 + bl sub_080A8878 + ldr r4, _080B6258 + ldr r3, _080B625C + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + ldrb r1, [r3] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080B623E + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #3 + bl sub_0808DEB4 +_080B623E: + bl sub_080987DC + bl sub_08096E04 + ldr r1, _080B6260 + movs r0, #0 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B6254: .4byte sub_080B6264 +_080B6258: .4byte gUnknown_2036FF0 +_080B625C: .4byte gUnknown_2037230 +_080B6260: .4byte gUnknown_3005B0C + thumb_func_end sub_080B61FC + + thumb_func_start sub_080B6264 +sub_080B6264: @ 0x080B6264 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B62B8 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6296 + ldr r0, _080B62BC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B62B0 + movs r0, #0x20 + bl sub_080B5270 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6296: + movs r0, #0x20 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B62B0 + bl sub_080987E8 + bl sub_08096EEC + adds r0, r5, #0 + bl sub_080A8964 +_080B62B0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B62B8: .4byte gUnknown_3005B60 +_080B62BC: .4byte gUnknown_2037C74 + thumb_func_end sub_080B6264 + + thumb_func_start sub_080B62C0 +sub_080B62C0: @ 0x080B62C0 + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080987DC + bl sub_08096E04 + ldr r0, _080B62E4 + movs r1, #0 + bl sub_080A8878 + ldr r1, _080B62E8 + movs r0, #0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080B62E4: .4byte sub_080B62EC +_080B62E8: .4byte gUnknown_3005B0C + thumb_func_end sub_080B62C0 + + thumb_func_start sub_080B62EC +sub_080B62EC: @ 0x080B62EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B631C + adds r4, r1, r0 + ldr r5, _080B6320 +_080B62FE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B62FE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B631C: .4byte gUnknown_3005B60 +_080B6320: .4byte gUnknown_8537074 + thumb_func_end sub_080B62EC + + thumb_func_start sub_080B6324 +sub_080B6324: @ 0x080B6324 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + mov sb, r0 + ldr r6, _080B63C0 + ldrb r0, [r6, #5] + lsls r5, r0, #3 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _080B63C4 + mov r8, r0 + add r5, r8 + ldrb r0, [r6, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B63C8 + adds r4, r4, r0 + bl sub_0808E84C + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + strb r0, [r6, #6] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + adds r3, r4, #0 + adds r3, #0x42 + ldrb r0, [r3] + lsrs r0, r0, #6 + mov r1, sb + strh r0, [r1, #0x10] + ldrb r0, [r5, #3] + movs r2, #4 + orrs r0, r2 + strb r0, [r5, #3] + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] + ldrb r1, [r3] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3] + mov r1, sb + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #1 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B63C0: .4byte gUnknown_2037230 +_080B63C4: .4byte gUnknown_2036FF0 +_080B63C8: .4byte gUnknown_20205AC + thumb_func_end sub_080B6324 + + thumb_func_start sub_080B63CC +sub_080B63CC: @ 0x080B63CC + push {r4, lr} + adds r4, r0, #0 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B63E0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B63E0: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B63CC + + thumb_func_start sub_080B63E8 +sub_080B63E8: @ 0x080B63E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _080B644C + ldrb r0, [r6, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080B6450 + adds r2, r2, r0 + adds r0, r2, #0 + adds r0, #0x29 + movs r4, #0 + ldrsb r4, [r0, r4] + lsls r0, r4, #0x11 + rsbs r0, r0, #0 + ldrh r1, [r2, #0x22] + ldr r3, _080B6454 + adds r1, r1, r4 + ldrh r3, [r3] + adds r1, r1, r3 + asrs r0, r0, #0x10 + adds r0, r0, r1 + rsbs r0, r0, #0 + movs r1, #0 + strh r0, [r2, #0x26] + movs r0, #1 + strh r0, [r5, #0xa] + strh r1, [r5, #0xc] + ldr r2, _080B6458 + ldrb r0, [r6, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + movs r0, #0x2b + bl sub_080A306C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B644C: .4byte gUnknown_2037230 +_080B6450: .4byte gUnknown_20205AC +_080B6454: .4byte gUnknown_2021B3A +_080B6458: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B63E8 + + thumb_func_start sub_080B645C +sub_080B645C: @ 0x080B645C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r2, _080B6508 + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B650C + adds r6, r0, r1 + ldrb r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B6510 + adds r5, r0, r1 + ldrh r0, [r4, #0xa] + ldrh r1, [r5, #0x26] + adds r0, r0, r1 + strh r0, [r5, #0x26] + ldrh r2, [r4, #0xa] + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #7 + bgt _080B649E + ldrh r1, [r4, #0xc] + adds r0, r2, r1 + strh r0, [r4, #0xc] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _080B649E + lsls r0, r2, #1 + strh r0, [r4, #0xa] +_080B649E: + ldrh r2, [r4, #0xe] + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B64DC + movs r0, #0x26 + ldrsh r1, [r5, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + blt _080B64DC + adds r0, r2, #1 + strh r0, [r4, #0xe] + ldrb r1, [r6, #3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6, #3] + ldrb r1, [r4, #0x10] + adds r3, r5, #0 + adds r3, #0x42 + lsls r1, r1, #6 + ldrb r2, [r3] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + strb r0, [r6] +_080B64DC: + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r0, #0 + blt _080B6500 + movs r0, #0xd6 + bl sub_080A306C + ldrb r0, [r6] + movs r1, #8 + orrs r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r6] + movs r0, #0 + strh r0, [r5, #0x26] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6500: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B6508: .4byte gUnknown_2037230 +_080B650C: .4byte gUnknown_2036FF0 +_080B6510: .4byte gUnknown_20205AC + thumb_func_end sub_080B645C + + thumb_func_start sub_080B6514 +sub_080B6514: @ 0x080B6514 + push {lr} + ldrh r1, [r0, #8] + adds r1, #1 + movs r2, #0 + strh r1, [r0, #8] + movs r1, #4 + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + movs r0, #0 + bl sub_08089C24 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_080B6514 + + thumb_func_start sub_080B6530 +sub_080B6530: @ 0x080B6530 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_08089C30 + ldrh r0, [r4, #0xa] + rsbs r2, r0, #0 + strh r2, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _080B6558 + lsls r0, r2, #0x10 + asrs r0, r0, #0x11 + strh r0, [r4, #0xa] +_080B6558: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6566 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6566: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B6530 + + thumb_func_start sub_080B6570 +sub_080B6570: @ 0x080B6570 + push {lr} + ldr r1, _080B659C + movs r0, #0 + strb r0, [r1, #6] + bl sub_080987E8 + bl sub_0808E7FC + bl sub_08096EEC + bl sub_08089C48 + ldr r0, _080B65A0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B659C: .4byte gUnknown_2037230 +_080B65A0: .4byte sub_080B62EC + thumb_func_end sub_080B6570 + + thumb_func_start sub_080B65A4 +sub_080B65A4: @ 0x080B65A4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080B65D8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B65DC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0xa] + cmp r4, #0x6a + bne _080B65D0 + movs r0, #1 + strh r0, [r1, #0xa] +_080B65D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B65D8: .4byte sub_080B65E0 +_080B65DC: .4byte gUnknown_3005B60 + thumb_func_end sub_080B65A4 + + thumb_func_start sub_080B65E0 +sub_080B65E0: @ 0x080B65E0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B6610 + adds r4, r1, r0 + ldr r5, _080B6614 +_080B65F2: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B65F2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6610: .4byte gUnknown_3005B60 +_080B6614: .4byte gUnknown_8537090 + thumb_func_end sub_080B65E0 + + thumb_func_start sub_080B6618 +sub_080B6618: @ 0x080B6618 + push {r4, lr} + adds r4, r0, #0 + bl sub_08096E04 + bl sub_0808E84C + ldrb r0, [r4, #0xa] + bl sub_080E0AA4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B6618 + + thumb_func_start sub_080B6638 +sub_080B6638: @ 0x080B6638 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B66A0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B66A4 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B6662 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B6696 +_080B6662: + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #8] + strh r1, [r5, #0xc] + strh r1, [r5, #0xe] + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _080B6690 + movs r0, #4 + strh r0, [r5, #8] +_080B6690: + movs r0, #0x50 + bl sub_080A306C +_080B6696: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B66A0: .4byte gUnknown_2037230 +_080B66A4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B6638 + + thumb_func_start sub_080B66A8 +sub_080B66A8: @ 0x080B66A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080B6710 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _080B66C2 + bl sub_080B67A8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B66C2: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B66A8 + + thumb_func_start sub_080B66CC +sub_080B66CC: @ 0x080B66CC + push {lr} + bl sub_080B6710 + bl sub_080B67B8 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080B66CC + + thumb_func_start sub_080B66DC +sub_080B66DC: @ 0x080B66DC + push {r4, lr} + adds r4, r0, #0 + bl sub_080B675C + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _080B66F6 + bl sub_080B67A8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B66F6: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B66DC + + thumb_func_start sub_080B6700 +sub_080B6700: @ 0x080B6700 + push {lr} + bl sub_080B675C + bl sub_080B67B8 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_080B6700 + + thumb_func_start sub_080B6710 +sub_080B6710: @ 0x080B6710 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B6754 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B6758 + adds r4, r4, r0 + movs r0, #0xc + ldrsh r1, [r5, r0] + movs r0, #0x84 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r0, #0xc + ldrsh r1, [r5, r0] + movs r0, #0x94 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r5, #0xe] + adds r0, #1 + strh r0, [r5, #0xe] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B674E + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] +_080B674E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6754: .4byte gUnknown_2037230 +_080B6758: .4byte gUnknown_20205AC + thumb_func_end sub_080B6710 + + thumb_func_start sub_080B675C +sub_080B675C: @ 0x080B675C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B67A0 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B67A4 + adds r4, r4, r0 + movs r0, #0xc + ldrsh r1, [r5, r0] + movs r0, #0x7c + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r0, #0xc + ldrsh r1, [r5, r0] + movs r0, #0x76 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r5, #0xe] + adds r0, #1 + strh r0, [r5, #0xe] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B679A + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] +_080B679A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B67A0: .4byte gUnknown_2037230 +_080B67A4: .4byte gUnknown_20205AC + thumb_func_end sub_080B675C + + thumb_func_start sub_080B67A8 +sub_080B67A8: @ 0x080B67A8 + push {lr} + bl sub_08085278 + bl sub_080AE9B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B67A8 + + thumb_func_start sub_080B67B8 +sub_080B67B8: @ 0x080B67B8 + push {lr} + ldr r0, _080B67F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B67F4 + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B67F4 + bl sub_080E0ABC + bl sub_08084540 + ldr r1, _080B67FC + ldr r0, _080B6800 + str r0, [r1] + ldr r0, _080B6804 + bl sub_08000540 + ldr r0, _080B6808 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B67F4: + pop {r0} + bx r0 + .align 2, 0 +_080B67F8: .4byte gUnknown_2037C74 +_080B67FC: .4byte gUnknown_3005B0C +_080B6800: .4byte sub_080B680C +_080B6804: .4byte sub_08085934 +_080B6808: .4byte sub_080B65E0 + thumb_func_end sub_080B67B8 + + thumb_func_start sub_080B680C +sub_080B680C: @ 0x080B680C + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080987DC + ldr r0, _080B682C + movs r1, #0 + bl sub_080A8878 + ldr r1, _080B6830 + movs r0, #0 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080B682C: .4byte sub_080B6834 +_080B6830: .4byte gUnknown_3005B0C + thumb_func_end sub_080B680C + + thumb_func_start sub_080B6834 +sub_080B6834: @ 0x080B6834 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080B6864 + adds r4, r1, r0 + ldr r5, _080B6868 +_080B6846: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6846 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6864: .4byte gUnknown_3005B60 +_080B6868: .4byte gUnknown_85370A8 + thumb_func_end sub_080B6834 + + thumb_func_start sub_080B686C +sub_080B686C: @ 0x080B686C + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + bl sub_0808E84C + ldr r0, _080B68CC + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B68D0 + adds r4, r4, r0 + movs r0, #4 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0x10 + strh r0, [r5, #0xa] + cmp r1, #0x6b + bne _080B68D4 + movs r1, #1 + movs r0, #3 + strh r0, [r5, #8] + b _080B68D6 + .align 2, 0 +_080B68CC: .4byte gUnknown_2037230 +_080B68D0: .4byte gUnknown_2036FF0 +_080B68D4: + movs r1, #0 +_080B68D6: + adds r0, r1, #0 + bl sub_080E0AA4 + movs r0, #1 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B686C + + thumb_func_start sub_080B68E8 +sub_080B68E8: @ 0x080B68E8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B6920 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B6924 + adds r4, r4, r0 + movs r0, #0xa + ldrsh r1, [r5, r0] + movs r0, #0x84 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r0, #0xa + ldrsh r1, [r5, r0] + movs r0, #0x94 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6920: .4byte gUnknown_2037230 +_080B6924: .4byte gUnknown_20205AC + thumb_func_end sub_080B68E8 + + thumb_func_start sub_080B6928 +sub_080B6928: @ 0x080B6928 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080B6980 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B6984 + adds r5, r0, r1 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0x84 + bl sub_0806EFD4 + strh r0, [r5, #0x24] + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0x94 + bl sub_0806EFB8 + strh r0, [r5, #0x26] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B6966 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] +_080B6966: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6976 + strh r0, [r5, #0x24] + strh r0, [r5, #0x26] + movs r0, #5 + strh r0, [r4, #8] +_080B6976: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6980: .4byte gUnknown_2037230 +_080B6984: .4byte gUnknown_20205AC + thumb_func_end sub_080B6928 + + thumb_func_start sub_080B6988 +sub_080B6988: @ 0x080B6988 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B69C0 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B69C4 + adds r4, r4, r0 + movs r0, #0xa + ldrsh r1, [r5, r0] + movs r0, #0x7c + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r0, #0xa + ldrsh r1, [r5, r0] + movs r0, #0x76 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B69C0: .4byte gUnknown_2037230 +_080B69C4: .4byte gUnknown_20205AC + thumb_func_end sub_080B6988 + + thumb_func_start sub_080B69C8 +sub_080B69C8: @ 0x080B69C8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080B6A20 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B6A24 + adds r5, r0, r1 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0x7c + bl sub_0806EFD4 + strh r0, [r5, #0x24] + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0x76 + bl sub_0806EFB8 + strh r0, [r5, #0x26] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B6A06 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] +_080B6A06: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6A18 + strh r0, [r5, #0x24] + strh r0, [r5, #0x26] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6A18: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6A20: .4byte gUnknown_2037230 +_080B6A24: .4byte gUnknown_20205AC + thumb_func_end sub_080B69C8 + + thumb_func_start sub_080B6A28 +sub_080B6A28: @ 0x080B6A28 + push {r4, lr} + adds r4, r0, #0 + bl sub_080E0AD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6A44 + bl sub_080E0ABC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + b _080B6A46 +_080B6A44: + movs r0, #0 +_080B6A46: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B6A28 + + thumb_func_start sub_080B6A4C +sub_080B6A4C: @ 0x080B6A4C + push {r4, lr} + ldr r0, _080B6A98 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B6A9C + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B6A90 + bl sub_0808E7FC + bl sub_080987E8 + movs r0, #4 + bl sub_08092CF8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldr r0, _080B6AA0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B6A90: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B6A98: .4byte gUnknown_2037230 +_080B6A9C: .4byte gUnknown_2036FF0 +_080B6AA0: .4byte sub_080B6834 + thumb_func_end sub_080B6A4C + + thumb_func_start sub_080B6AA4 +sub_080B6AA4: @ 0x080B6AA4 + push {r4, lr} + ldr r4, _080B6AD0 + adds r0, r4, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B6AD4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080B6AD8 + ldr r2, [r2] + strh r2, [r1, #0xa] + bl _call_via_r4 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B6AD0: .4byte sub_080B6ADC +_080B6AD4: .4byte gUnknown_3005B60 +_080B6AD8: .4byte gUnknown_20388A8 + thumb_func_end sub_080B6AA4 + + thumb_func_start sub_080B6ADC +sub_080B6ADC: @ 0x080B6ADC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080B6B18 + ldr r2, _080B6B1C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080B6AEE: + movs r0, #8 + ldrsh r2, [r4, r0] + lsls r2, r2, #2 + adds r2, r2, r5 + ldr r0, _080B6B20 + ldrb r0, [r0, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B6B24 + adds r1, r1, r0 + ldr r2, [r2] + adds r0, r4, #0 + bl _call_via_r2 + thumb_func_end sub_080B6ADC + + thumb_func_start sub_080B6B0C +sub_080B6B0C: @ 0x080B6B0C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6AEE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6B18: .4byte gUnknown_85370C4 +_080B6B1C: .4byte gUnknown_3005B60 +_080B6B20: .4byte gUnknown_2037230 +_080B6B24: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B6B0C + + thumb_func_start sub_080B6B28 +sub_080B6B28: @ 0x080B6B28 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987DC + ldr r1, _080B6B44 + movs r0, #1 + strb r0, [r1, #6] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B6B44: .4byte gUnknown_2037230 + thumb_func_end sub_080B6B28 + + thumb_func_start sub_080B6B48 +sub_080B6B48: @ 0x080B6B48 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080987DC + adds r0, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6B78 + adds r0, r5, #0 + bl sub_08092BF4 + ldr r1, _080B6B80 + movs r2, #0xa + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, #0x3b + bl sub_080B5270 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6B78: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6B80: .4byte gUnknown_20388A8 + thumb_func_end sub_080B6B48 + + thumb_func_start sub_080B6B84 +sub_080B6B84: @ 0x080B6B84 + push {r4, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6B9E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + b _080B6BA0 +_080B6B9E: + movs r0, #0 +_080B6BA0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B6B84 + + thumb_func_start sub_080B6BA8 +sub_080B6BA8: @ 0x080B6BA8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #2 + bl sub_08092CCC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B6BA8 + + thumb_func_start sub_080B6BD0 +sub_080B6BD0: @ 0x080B6BD0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6BE6 + movs r0, #0 + b _080B6C22 +_080B6BE6: + ldrb r0, [r4, #0x1e] + bl sub_080890A0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080B6C1C + bl sub_080987E8 + ldr r0, _080B6C14 + strb r4, [r0, #6] + ldr r0, _080B6C18 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0x2b + bl sub_080B5568 + movs r0, #0 + b _080B6C22 + .align 2, 0 +_080B6C14: .4byte gUnknown_2037230 +_080B6C18: .4byte sub_080B6ADC +_080B6C1C: + movs r0, #3 + strh r0, [r5, #8] + movs r0, #1 +_080B6C22: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080B6BD0 + + thumb_func_start sub_080B6C28 +sub_080B6C28: @ 0x080B6C28 + push {r4, lr} + ldr r4, _080B6C58 + adds r0, r4, #0 + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B6C5C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r3, _080B6C60 + ldr r2, [r3] + strh r2, [r1, #0x26] + ldr r2, [r3, #4] + strh r2, [r1, #0x24] + bl _call_via_r4 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B6C58: .4byte sub_080B6C64 +_080B6C5C: .4byte gUnknown_3005B60 +_080B6C60: .4byte gUnknown_20388A8 + thumb_func_end sub_080B6C28 + + thumb_func_start sub_080B6C64 +sub_080B6C64: @ 0x080B6C64 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080B6C94 + ldr r2, _080B6C98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080B6C76: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6C76 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B6C94: .4byte gUnknown_85370D8 +_080B6C98: .4byte gUnknown_3005B60 + thumb_func_end sub_080B6C64 + + thumb_func_start sub_080B6C9C +sub_080B6C9C: @ 0x080B6C9C + ldr r2, _080B6CAC + movs r1, #1 + strb r1, [r2, #6] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + movs r0, #0 + bx lr + .align 2, 0 +_080B6CAC: .4byte gUnknown_2037230 + thumb_func_end sub_080B6C9C + + thumb_func_start sub_080B6CB0 +sub_080B6CB0: @ 0x080B6CB0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987DC + ldr r1, _080B6CD4 + movs r2, #0x26 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, #0x3b + bl sub_080B5270 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B6CD4: .4byte gUnknown_20388A8 + thumb_func_end sub_080B6CB0 + + thumb_func_start sub_080B6CD8 +sub_080B6CD8: @ 0x080B6CD8 + push {lr} + sub sp, #8 + mov r1, sp + adds r1, #2 + mov r0, sp + bl sub_0808B410 + movs r0, #6 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6D1C + ldr r2, _080B6D24 + ldr r0, _080B6D28 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #0x1e] + mov r0, sp + bl sub_0809CA44 + ldr r0, _080B6D2C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0x2c + bl sub_080B5568 +_080B6D1C: + movs r0, #0 + add sp, #8 + pop {r1} + bx r1 + .align 2, 0 +_080B6D24: .4byte gUnknown_2036FF0 +_080B6D28: .4byte gUnknown_2037230 +_080B6D2C: .4byte sub_080B6C64 + thumb_func_end sub_080B6CD8 + + thumb_func_start sub_080B6D30 +sub_080B6D30: @ 0x080B6D30 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080B6D44 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B6D44: .4byte sub_080B6D48 + thumb_func_end sub_080B6D30 + + thumb_func_start sub_080B6D48 +sub_080B6D48: @ 0x080B6D48 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080B6D90 + ldr r2, _080B6D94 + ldr r5, _080B6D98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080B6D5C: + movs r0, #8 + ldrsh r3, [r4, r0] + lsls r3, r3, #2 + adds r3, r3, r6 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B6D9C + adds r1, r1, r0 + ldrb r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080B6DA0 + adds r2, r2, r0 + ldr r3, [r3] + adds r0, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6D5C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B6D90: .4byte gUnknown_85370E4 +_080B6D94: .4byte gUnknown_3005B60 +_080B6D98: .4byte gUnknown_2037230 +_080B6D9C: .4byte gUnknown_2036FF0 +_080B6DA0: .4byte gUnknown_20205AC + thumb_func_end sub_080B6D48 + + thumb_func_start sub_080B6DA4 +sub_080B6DA4: @ 0x080B6DA4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08096E04 + bl sub_0808E84C + movs r0, #0 + bl sub_08089C24 + ldr r0, _080B6DD8 + movs r2, #1 + strb r2, [r0, #6] + ldrb r0, [r5, #3] + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #3] + strh r2, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6DD8: .4byte gUnknown_2037230 + thumb_func_end sub_080B6DA4 + + thumb_func_start sub_080B6DDC +sub_080B6DDC: @ 0x080B6DDC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_08089C30 + ldrh r0, [r4, #0xa] + rsbs r0, r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080B6E08 + movs r0, #0 + strh r0, [r4, #0xc] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6E08: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B6DDC + + thumb_func_start sub_080B6E10 +sub_080B6E10: @ 0x080B6E10 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0 + strh r0, [r2, #0x26] + movs r0, #1 + strh r0, [r4, #0xe] + ldr r3, _080B6E58 + movs r5, #0x10 + ldrsh r0, [r1, r5] + str r0, [r3] + movs r5, #0x12 + ldrsh r0, [r1, r5] + str r0, [r3, #4] + adds r0, r2, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r3, #8] + ldrb r0, [r2, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r3, #0xc] + movs r0, #0x32 + bl sub_080B5270 + movs r0, #0xb2 + bl sub_080A306C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B6E58: .4byte gUnknown_20388A8 + thumb_func_end sub_080B6E10 + + thumb_func_start sub_080B6E5C +sub_080B6E5C: @ 0x080B6E5C + push {r4, r5, r6, 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_08089C30 + ldrh r0, [r4, #0xa] + rsbs r2, r0, #0 + strh r2, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r1, r0, #1 + strh r1, [r4, #0xc] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x11 + bgt _080B6E96 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _080B6EA8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bgt _080B6EA8 + lsls r0, r2, #1 + b _080B6EA6 +_080B6E96: + movs r0, #4 + ands r1, r0 + cmp r1, #0 + bne _080B6EA8 + lsls r0, r2, #0x10 + cmp r0, #0 + ble _080B6EA8 + asrs r0, r0, #0x11 +_080B6EA6: + strh r0, [r4, #0xa] +_080B6EA8: + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #6 + ble _080B6EF4 + adds r0, r5, #0 + adds r0, #0x29 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r2, r1, #0x11 + rsbs r2, r2, #0 + movs r7, #0x26 + ldrsh r3, [r5, r7] + movs r7, #0x22 + ldrsh r0, [r5, r7] + adds r0, r0, r1 + ldr r1, _080B6EEC + movs r7, #0 + ldrsh r1, [r1, r7] + adds r0, r0, r1 + asrs r2, r2, #0x10 + adds r0, r0, r2 + cmn r3, r0 + ble _080B6EF0 + ldrh r0, [r5, #0x26] + ldrh r1, [r4, #0xe] + subs r0, r0, r1 + strh r0, [r5, #0x26] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bgt _080B6EF4 + adds r0, r1, #1 + strh r0, [r4, #0xe] + b _080B6EF4 + .align 2, 0 +_080B6EEC: .4byte gUnknown_2021B3A +_080B6EF0: + movs r0, #1 + strh r0, [r4, #0x10] +_080B6EF4: + ldrh r2, [r4, #0x12] + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6F32 + movs r7, #0x26 + ldrsh r1, [r5, r7] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080B6F32 + adds r0, r2, #1 + strh r0, [r4, #0x12] + ldrb r0, [r6, #3] + movs r2, #4 + orrs r0, r2 + strb r0, [r6, #3] + ldrb r1, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + 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] +_080B6F32: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B6F48 + movs r7, #0x10 + ldrsh r0, [r4, r7] + cmp r0, #0 + beq _080B6F48 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B6F48: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080B6E5C + + thumb_func_start sub_080B6F50 +sub_080B6F50: @ 0x080B6F50 + push {r4, lr} + adds r4, r0, #0 + bl sub_08085278 + bl sub_080AE9B0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B6F50 + + thumb_func_start sub_080B6F6C +sub_080B6F6C: @ 0x080B6F6C + push {lr} + ldr r0, _080B6FAC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B6FA4 + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B6FA4 + bl sub_08084540 + ldr r1, _080B6FB0 + ldr r0, _080B6FB4 + str r0, [r1] + ldr r0, _080B6FB8 + bl sub_08000540 + ldr r0, _080B6FBC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B6FA4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B6FAC: .4byte gUnknown_2037C74 +_080B6FB0: .4byte gUnknown_3005B0C +_080B6FB4: .4byte sub_080B6FC0 +_080B6FB8: .4byte sub_08085934 +_080B6FBC: .4byte sub_080B6D48 + thumb_func_end sub_080B6F6C + + thumb_func_start sub_080B6FC0 +sub_080B6FC0: @ 0x080B6FC0 + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080987DC + ldr r0, _080B6FE0 + movs r1, #0 + str r1, [r0] + ldr r0, _080B6FE4 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B6FE0: .4byte gUnknown_3005B0C +_080B6FE4: .4byte sub_080B6FE8 + thumb_func_end sub_080B6FC0 + + thumb_func_start sub_080B6FE8 +sub_080B6FE8: @ 0x080B6FE8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080B7030 + ldr r2, _080B7034 + ldr r5, _080B7038 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080B6FFC: + movs r0, #8 + ldrsh r3, [r4, r0] + lsls r3, r3, #2 + adds r3, r3, r6 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B703C + adds r1, r1, r0 + ldrb r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080B7040 + adds r2, r2, r0 + ldr r3, [r3] + adds r0, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B6FFC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7030: .4byte gUnknown_85370FC +_080B7034: .4byte gUnknown_3005B60 +_080B7038: .4byte gUnknown_2037230 +_080B703C: .4byte gUnknown_2036FF0 +_080B7040: .4byte gUnknown_20205AC + thumb_func_end sub_080B6FE8 + + thumb_func_start sub_080B7044 +sub_080B7044: @ 0x080B7044 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_0808E84C + bl sub_08096E04 + ldr r1, _080B7070 + movs r0, #1 + strb r0, [r1, #6] + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B7070: .4byte gUnknown_2037230 + thumb_func_end sub_080B7044 + + thumb_func_start sub_080B7074 +sub_080B7074: @ 0x080B7074 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B70B4 + ldr r1, _080B70BC + movs r2, #0x10 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r2, #0x12 + ldrsh r0, [r5, r2] + str r0, [r1, #4] + adds r0, r6, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r1, #8] + ldrb r0, [r6, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r1, #0xc] + movs r0, #0x31 + bl sub_080B5270 + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B70B4: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B70BC: .4byte gUnknown_20388A8 + thumb_func_end sub_080B7074 + + thumb_func_start sub_080B70C0 +sub_080B70C0: @ 0x080B70C0 + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + movs r0, #0xa + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7110 + adds r0, r0, r1 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bls _080B7108 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + ldrb r1, [r4, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + bl sub_0808E7FC + movs r0, #0xaf + bl sub_080A306C + movs r0, #4 + bl sub_08092E84 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 +_080B7108: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B7110: .4byte gUnknown_20205AC + thumb_func_end sub_080B70C0 + + thumb_func_start sub_080B7114 +sub_080B7114: @ 0x080B7114 + push {lr} + adds r0, r1, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B713E + ldr r1, _080B7144 + movs r0, #0 + strb r0, [r1, #6] + bl sub_080987E8 + bl sub_08096EEC + ldr r0, _080B7148 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B713E: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B7144: .4byte gUnknown_2037230 +_080B7148: .4byte sub_080B6FE8 + thumb_func_end sub_080B7114 + + thumb_func_start sub_080B714C +sub_080B714C: @ 0x080B714C + push {r4, lr} + ldr r4, _080B71A4 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _080B71A8 + adds r0, #0x84 + ldr r0, [r0] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B71AC + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + movs r1, #3 + ldrb r3, [r4, #0xc] + ands r3, r1 + lsls r3, r3, #2 + ldrb r4, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r4 + orrs r1, r3 + strb r1, [r2, #5] + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #2 + orrs r1, r3 + strb r1, [r2] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B71A4: .4byte gUnknown_20388A8 +_080B71A8: .4byte gUnknown_84DDE4C +_080B71AC: .4byte gUnknown_20205AC + thumb_func_end sub_080B714C + + thumb_func_start sub_080B71B0 +sub_080B71B0: @ 0x080B71B0 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080B71C8 + adds r0, r2, #0 + movs r1, #0x32 + bl sub_080B5444 +_080B71C8: + pop {r0} + bx r0 + thumb_func_end sub_080B71B0 + + thumb_func_start sub_080B71CC +sub_080B71CC: @ 0x080B71CC + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080B71E0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B71E0: .4byte sub_080B71E4 + thumb_func_end sub_080B71CC + + thumb_func_start sub_080B71E4 +sub_080B71E4: @ 0x080B71E4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080B722C + ldr r2, _080B7230 + ldr r5, _080B7234 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080B71F8: + movs r0, #8 + ldrsh r3, [r4, r0] + lsls r3, r3, #2 + adds r3, r3, r6 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B7238 + adds r1, r1, r0 + ldrb r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080B723C + adds r2, r2, r0 + ldr r3, [r3] + adds r0, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B71F8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B722C: .4byte gUnknown_853710C +_080B7230: .4byte gUnknown_3005B60 +_080B7234: .4byte gUnknown_2037230 +_080B7238: .4byte gUnknown_2036FF0 +_080B723C: .4byte gUnknown_20205AC + thumb_func_end sub_080B71E4 + + thumb_func_start sub_080B7240 +sub_080B7240: @ 0x080B7240 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08096E04 + bl sub_0808E84C + ldr r1, _080B726C + movs r0, #1 + strb r0, [r1, #6] + ldrb r0, [r4, #3] + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #3] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080B726C: .4byte gUnknown_2037230 + thumb_func_end sub_080B7240 + + thumb_func_start sub_080B7270 +sub_080B7270: @ 0x080B7270 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B72E4 + ldrh r1, [r5, #0xa] + movs r2, #0xa + ldrsh r0, [r5, r2] + cmp r0, #3 + ble _080B72C4 + ldr r1, _080B72C0 + movs r2, #0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, #0x12 + ldrsh r0, [r4, r2] + str r0, [r1, #4] + adds r0, r6, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + str r0, [r1, #8] + ldrb r0, [r6, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + str r0, [r1, #0xc] + movs r0, #0x31 + bl sub_080B5270 + strh r0, [r5, #0xa] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _080B72E4 + .align 2, 0 +_080B72C0: .4byte gUnknown_20388A8 +_080B72C4: + adds r0, r1, #1 + strh r0, [r5, #0xa] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08092F60 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + movs r0, #0x27 + bl sub_080A306C +_080B72E4: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080B7270 + + thumb_func_start sub_080B72EC +sub_080B72EC: @ 0x080B72EC + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldr r2, _080B7320 + movs r0, #0xa + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #2 + bne _080B7316 + ldrb r0, [r4, #1] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #1] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B7316: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B7320: .4byte gUnknown_20205AC + thumb_func_end sub_080B72EC + + thumb_func_start sub_080B7324 +sub_080B7324: @ 0x080B7324 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x31 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B7342 + bl sub_08085278 + bl sub_080AE9B0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B7342: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080B7324 + + thumb_func_start sub_080B734C +sub_080B734C: @ 0x080B734C + push {lr} + ldr r0, _080B738C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B7384 + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B7384 + bl sub_08084540 + ldr r1, _080B7390 + ldr r0, _080B7394 + str r0, [r1] + ldr r0, _080B7398 + bl sub_08000540 + ldr r0, _080B739C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B7384: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B738C: .4byte gUnknown_2037C74 +_080B7390: .4byte gUnknown_3005B0C +_080B7394: .4byte sub_080B62C0 +_080B7398: .4byte sub_08085934 +_080B739C: .4byte sub_080B71E4 + thumb_func_end sub_080B734C + + thumb_func_start sub_080B73A0 +sub_080B73A0: @ 0x080B73A0 + push {r4, lr} + ldr r4, _080B73F8 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _080B73FC + adds r0, #0x80 + ldr r0, [r0] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B7400 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + movs r1, #3 + ldrb r3, [r4, #0xc] + ands r3, r1 + lsls r3, r3, #2 + ldrb r4, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r4 + orrs r1, r3 + strb r1, [r2, #5] + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #2 + orrs r1, r3 + strb r1, [r2] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B73F8: .4byte gUnknown_20388A8 +_080B73FC: .4byte gUnknown_84DDE4C +_080B7400: .4byte gUnknown_20205AC + thumb_func_end sub_080B73A0 + + thumb_func_start sub_080B7404 +sub_080B7404: @ 0x080B7404 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080B741C + adds r0, r2, #0 + movs r1, #0x31 + bl sub_080B5444 +_080B741C: + pop {r0} + bx r0 + thumb_func_end sub_080B7404 + + thumb_func_start sub_080B7420 +sub_080B7420: @ 0x080B7420 + push {lr} + bl sub_080987DC + bl sub_08096E04 + ldr r0, _080B7438 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B7438: .4byte sub_080B743C + thumb_func_end sub_080B7420 + + thumb_func_start sub_080B743C +sub_080B743C: @ 0x080B743C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B7464 + ldr r2, _080B7468 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B7464: .4byte gUnknown_8537120 +_080B7468: .4byte gUnknown_3005B60 + thumb_func_end sub_080B743C + + thumb_func_start sub_080B746C +sub_080B746C: @ 0x080B746C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x40 + strh r0, [r4, #0x24] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B746C + + thumb_func_start sub_080B748C +sub_080B748C: @ 0x080B748C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080B7530 + mov r0, sp + movs r2, #5 + bl memcpy + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080B74B8 + subs r0, r1, #1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B74B8 + bl sub_08085278 + bl sub_080AE9B0 +_080B74B8: + ldr r0, _080B7534 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7538 + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B74DE + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B7598 +_080B74DE: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B7550 + ldr r0, _080B753C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B7550 + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B7550 + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0808E930 + bl sub_0808477C + bl sub_08084540 + ldr r1, _080B7540 + ldr r0, _080B7544 + str r0, [r1] + ldr r0, _080B7548 + bl sub_08000540 + ldr r0, _080B754C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _080B7598 + .align 2, 0 +_080B7530: .4byte gUnknown_8537128 +_080B7534: .4byte gUnknown_2037230 +_080B7538: .4byte gUnknown_2036FF0 +_080B753C: .4byte gUnknown_2037C74 +_080B7540: .4byte gUnknown_3005B0C +_080B7544: .4byte sub_080B75A0 +_080B7548: .4byte sub_08085934 +_080B754C: .4byte sub_080B743C +_080B7550: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080B7564 + subs r0, r1, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B7598 +_080B7564: + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r0, [r0] + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0xb + bgt _080B758C + adds r0, r1, #1 + strh r0, [r4, #0xc] +_080B758C: + ldrh r1, [r4, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x12 + movs r0, #8 + asrs r0, r1 + strh r0, [r4, #0xa] +_080B7598: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080B748C + + thumb_func_start sub_080B75A0 +sub_080B75A0: @ 0x080B75A0 + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080987DC + bl sub_08096E04 + ldr r1, _080B75DC + movs r0, #0 + str r0, [r1] + ldr r2, _080B75E0 + ldr r0, _080B75E4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + ldr r0, _080B75E8 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B75DC: .4byte gUnknown_3005B0C +_080B75E0: .4byte gUnknown_2036FF0 +_080B75E4: .4byte gUnknown_2037230 +_080B75E8: .4byte sub_080B75EC + thumb_func_end sub_080B75A0 + + thumb_func_start sub_080B75EC +sub_080B75EC: @ 0x080B75EC + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B7614 + ldr r2, _080B7618 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B7614: .4byte gUnknown_8537130 +_080B7618: .4byte gUnknown_3005B60 + thumb_func_end sub_080B75EC + + thumb_func_start sub_080B761C +sub_080B761C: @ 0x080B761C + push {r4, lr} + adds r4, r0, #0 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B763A + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] +_080B763A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B761C + + thumb_func_start sub_080B7640 +sub_080B7640: @ 0x080B7640 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r1, _080B76C4 + mov r0, sp + movs r2, #5 + bl memcpy + ldr r0, _080B76C8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B76CC + adds r6, r0, r1 + ldrh r1, [r5, #0xa] + movs r2, #0xa + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _080B7672 + subs r0, r1, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B7704 +_080B7672: + adds r0, r6, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B768A + adds r0, r6, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B7718 +_080B768A: + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0x1f + ble _080B76D4 + movs r2, #0x26 + ldrsh r4, [r5, r2] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _080B76D4 + ldrb r1, [r6, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6, #1] + bl sub_080987E8 + bl sub_08096EEC + ldr r0, _080B76D0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _080B7718 + .align 2, 0 +_080B76C4: .4byte gUnknown_8537128 +_080B76C8: .4byte gUnknown_2037230 +_080B76CC: .4byte gUnknown_2036FF0 +_080B76D0: .4byte sub_080B75EC +_080B76D4: + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r0, [r0] + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08092B30 + ldrh r1, [r5, #0xc] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0x1f + bgt _080B76FC + adds r0, r1, #1 + strh r0, [r5, #0xc] +_080B76FC: + ldrh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x12 + strh r0, [r5, #0xa] +_080B7704: + ldrb r2, [r6, #1] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #5 + subs r0, #0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #1] +_080B7718: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080B7640 + + thumb_func_start sub_080B7720 +sub_080B7720: @ 0x080B7720 + push {lr} + ldr r0, _080B7730 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B7730: .4byte sub_080B7734 + thumb_func_end sub_080B7720 + + thumb_func_start sub_080B7734 +sub_080B7734: @ 0x080B7734 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B775C + ldr r2, _080B7760 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B775C: .4byte gUnknown_8537138 +_080B7760: .4byte gUnknown_3005B60 + thumb_func_end sub_080B7734 + + thumb_func_start sub_080B7764 +sub_080B7764: @ 0x080B7764 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987DC + bl sub_08096E04 + bl sub_0808E84C + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B7764 + + thumb_func_start sub_080B778C +sub_080B778C: @ 0x080B778C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080B7810 + mov r0, sp + movs r2, #5 + bl memcpy + ldr r0, _080B7814 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7818 + adds r5, r0, r1 + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080B77BE + subs r0, r1, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B77D8 +_080B77BE: + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0808DEB4 + movs r0, #8 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] +_080B77D8: + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #7 + ble _080B7806 + movs r2, #0x26 + ldrsh r1, [r4, r2] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r1, r0 + bne _080B7806 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #4 + strh r0, [r4, #0xa] + movs r0, #8 + strh r0, [r4, #0xc] + movs r0, #1 + strh r0, [r4, #0xe] + movs r0, #0x2d + bl sub_080A306C +_080B7806: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7810: .4byte gUnknown_8537128 +_080B7814: .4byte gUnknown_2037230 +_080B7818: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B778C + + thumb_func_start sub_080B781C +sub_080B781C: @ 0x080B781C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080B78E0 + mov r0, sp + movs r2, #5 + bl memcpy + ldr r2, _080B78E4 + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B78E8 + adds r3, r0, r1 + ldrb r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B78EC + adds r5, r0, r1 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080B7866 + movs r0, #4 + strh r0, [r4, #0xa] + ldrb r0, [r3, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] + adds r0, r3, #0 + bl sub_0808DEB4 +_080B7866: + ldrh r0, [r5, #0x22] + ldrh r1, [r4, #0xe] + subs r0, 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, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080B7892 + movs r0, #4 + strh r0, [r4, #0xc] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bgt _080B7892 + lsls r0, r1, #1 + strh r0, [r4, #0xe] +_080B7892: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #8 + ble _080B78C0 + ldrb r1, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #5] + adds r2, r5, #0 + adds r2, #0x42 + ldrb r1, [r2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080B78C0 + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] +_080B78C0: + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0xa7 + ble _080B78D6 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + bl sub_08085278 + bl sub_080AE9B0 +_080B78D6: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B78E0: .4byte gUnknown_8537128 +_080B78E4: .4byte gUnknown_2037230 +_080B78E8: .4byte gUnknown_2036FF0 +_080B78EC: .4byte gUnknown_20205AC + thumb_func_end sub_080B781C + + thumb_func_start sub_080B78F0 +sub_080B78F0: @ 0x080B78F0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B7944 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B793E + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B7910 + bl sub_081BE3C8 + movs r0, #1 + strh r0, [r4, #0x12] +_080B7910: + bl sub_08085308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B793E + bl sub_0808466C + bl sub_08084540 + ldr r0, _080B7948 + bl sub_08000540 + ldr r1, _080B794C + ldr r0, _080B7950 + str r0, [r1] + ldr r0, _080B7954 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B793E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7944: .4byte gUnknown_2037C74 +_080B7948: .4byte sub_08085934 +_080B794C: .4byte gUnknown_3005B0C +_080B7950: .4byte sub_080B7958 +_080B7954: .4byte sub_080B7734 + thumb_func_end sub_080B78F0 + + thumb_func_start sub_080B7958 +sub_080B7958: @ 0x080B7958 + push {lr} + bl sub_080850EC + bl sub_080AE93C + bl sub_080987DC + bl sub_08096E04 + ldr r1, _080B7998 + movs r0, #0 + str r0, [r1] + ldr r2, _080B799C + ldr r0, _080B79A0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + bl sub_0808E84C + ldr r0, _080B79A4 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080B7998: .4byte gUnknown_3005B0C +_080B799C: .4byte gUnknown_2036FF0 +_080B79A0: .4byte gUnknown_2037230 +_080B79A4: .4byte sub_080B79A8 + thumb_func_end sub_080B7958 + + thumb_func_start sub_080B79A8 +sub_080B79A8: @ 0x080B79A8 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B79D0 + ldr r2, _080B79D4 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B79D0: .4byte gUnknown_8537148 +_080B79D4: .4byte gUnknown_3005B60 + thumb_func_end sub_080B79A8 + + thumb_func_start sub_080B79D8 +sub_080B79D8: @ 0x080B79D8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B7A4E + ldr r5, _080B7A54 + ldrb r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _080B7A58 + adds r2, r2, r0 + adds r0, r2, #0 + adds r0, #0x29 + movs r4, #0 + ldrsb r4, [r0, r4] + lsls r0, r4, #0x11 + rsbs r0, r0, #0 + ldrh r1, [r2, #0x22] + ldr r3, _080B7A5C + adds r1, r1, r4 + ldrh r3, [r3] + adds r1, r1, r3 + asrs r0, r0, #0x10 + adds r0, r0, r1 + rsbs r0, r0, #0 + strh r0, [r2, #0x26] + ldr r3, _080B7A60 + ldrb r0, [r5, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r3, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r3 + strb r0, [r1, #1] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #8 + strh r0, [r6, #0xa] + movs r0, #1 + strh r0, [r6, #0xc] + adds r2, #0x42 + ldrb r0, [r2] + lsrs r0, r0, #6 + strh r0, [r6, #0x24] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x26] + movs r0, #0x2d + bl sub_080A306C +_080B7A4E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7A54: .4byte gUnknown_2037230 +_080B7A58: .4byte gUnknown_20205AC +_080B7A5C: .4byte gUnknown_2021B3A +_080B7A60: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B79D8 + + thumb_func_start sub_080B7A64 +sub_080B7A64: @ 0x080B7A64 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080B7ACC + mov r0, sp + movs r2, #5 + bl memcpy + ldr r2, _080B7AD0 + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7AD4 + adds r6, r0, r1 + ldrb r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7AD8 + adds r5, r0, r1 + ldrh r0, [r4, #0xa] + ldrh r1, [r5, #0x26] + adds r0, r0, r1 + strh r0, [r5, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + rsbs r1, r1, #0 + cmp r0, r1 + blt _080B7ADC + ldrh r1, [r4, #0x22] + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080B7B02 + adds r0, r1, #1 + strh r0, [r4, #0x22] + ldrb r0, [r6] + movs r1, #4 + orrs r0, r1 + strb r0, [r6] + ldrh r1, [r4, #0x24] + adds r3, r5, #0 + adds r3, #0x42 + lsls r1, r1, #6 + ldrb r2, [r3] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080B7B02 + .align 2, 0 +_080B7ACC: .4byte gUnknown_8537128 +_080B7AD0: .4byte gUnknown_2037230 +_080B7AD4: .4byte gUnknown_2036FF0 +_080B7AD8: .4byte gUnknown_20205AC +_080B7ADC: + ldrb r1, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #5] + adds r2, r5, #0 + adds r2, #0x42 + ldrb r1, [r2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080B7B02 + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] +_080B7B02: + ldrh r2, [r5, #0x26] + movs r3, #0x26 + ldrsh r1, [r5, r3] + movs r0, #0x30 + rsbs r0, r0, #0 + cmp r1, r0 + blt _080B7B26 + ldrh r1, [r4, #0xa] + movs r3, #0xa + ldrsh r0, [r4, r3] + cmp r0, #1 + ble _080B7B26 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _080B7B26 + subs r0, r1, #1 + strh r0, [r4, #0xa] +_080B7B26: + ldrh r0, [r4, #0xc] + subs r0, #1 + movs r7, #0 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B7B48 + movs r0, #4 + strh r0, [r4, #0xc] + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_0808DEB4 +_080B7B48: + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r0, #0 + blt _080B7B5E + strh r7, [r5, #0x26] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + strh r0, [r4, #0xa] + strh r7, [r4, #0xc] +_080B7B5E: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B7A64 + + thumb_func_start sub_080B7B68 +sub_080B7B68: @ 0x080B7B68 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080B7BE4 + mov r0, sp + movs r2, #5 + bl memcpy + ldr r0, _080B7BE8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7BEC + adds r5, r0, r1 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B7BDC + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + add r0, sp + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0808DEB4 + movs r0, #8 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _080B7BDC + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r1, r0 + bne _080B7BDC + bl sub_080987E8 + bl sub_0808E7FC + bl sub_08096EEC + ldr r0, _080B7BF0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B7BDC: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B7BE4: .4byte gUnknown_8537128 +_080B7BE8: .4byte gUnknown_2037230 +_080B7BEC: .4byte gUnknown_2036FF0 +_080B7BF0: .4byte sub_080B79A8 + thumb_func_end sub_080B7B68 + + thumb_func_start sub_080B7BF4 +sub_080B7BF4: @ 0x080B7BF4 + push {r4, lr} + bl sub_0808550C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08085538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080B7C14 + ldr r0, _080B7C10 + b _080B7C16 + .align 2, 0 +_080B7C10: .4byte sub_080B7CAC +_080B7C14: + ldr r0, _080B7C44 +_080B7C16: + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _080B7C48 + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B83B8 + ldr r2, _080B7C4C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x26] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B7C44: .4byte sub_080B800C +_080B7C48: .4byte gUnknown_20388A8 +_080B7C4C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B7BF4 + + thumb_func_start sub_080B7C50 +sub_080B7C50: @ 0x080B7C50 + push {r4, r5, r6, lr} + ldr r5, _080B7CA4 + ldr r0, [r5] + movs r6, #0x80 + lsls r6, r6, #0x18 + ands r6, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _080B7CA8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + str r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + str r0, [r5, #4] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r5, #8] + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + movs r0, #6 + bl sub_080B5270 + movs r0, #0x3b + bl sub_080B5568 + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B7CA4: .4byte gUnknown_20388A8 +_080B7CA8: .4byte gUnknown_2024190 + thumb_func_end sub_080B7C50 + + thumb_func_start sub_080B7CAC +sub_080B7CAC: @ 0x080B7CAC + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B7CD4 + ldr r2, _080B7CD8 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B7CD4: .4byte gUnknown_8537154 +_080B7CD8: .4byte gUnknown_3005B60 + thumb_func_end sub_080B7CAC + + thumb_func_start sub_080B7CDC +sub_080B7CDC: @ 0x080B7CDC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B7D38 + ldrh r0, [r0] + strh r0, [r4, #0x1e] + ldr r0, _080B7D3C + ldrh r0, [r0] + strh r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x22 + ldr r1, _080B7D40 + ldr r1, [r1, #0xc] + bl sub_0806F100 + ldr r1, _080B7D44 + strh r1, [r4, #0xa] + ldr r0, _080B7D48 + strh r0, [r4, #0xc] + movs r0, #0x3f + strh r0, [r4, #0xe] + movs r0, #0x3e + strh r0, [r4, #0x10] + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x44 + bl sub_08001144 + ldrh r1, [r4, #0xe] + movs r0, #0x48 + bl sub_08001144 + ldrh r1, [r4, #0x10] + movs r0, #0x4a + bl sub_08001144 + ldr r0, _080B7D4C + bl sub_080006F0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7D38: .4byte 0x04000048 +_080B7D3C: .4byte 0x0400004A +_080B7D40: .4byte gUnknown_3002360 +_080B7D44: .4byte 0x0000F0F1 +_080B7D48: .4byte 0x00005051 +_080B7D4C: .4byte sub_080B7F64 + thumb_func_end sub_080B7CDC + + thumb_func_start sub_080B7D50 +sub_080B7D50: @ 0x080B7D50 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r0, _080B7DA8 + ldrh r1, [r0] + lsrs r1, r1, #2 + lsls r1, r1, #0x1e + lsrs r1, r1, #0x10 + ldrh r4, [r0] + lsrs r4, r4, #8 + lsls r4, r4, #0x1b + lsrs r4, r4, #0x10 + ldr r0, _080B7DAC + movs r5, #0xc0 + lsls r5, r5, #0x13 + adds r1, r1, r5 + movs r2, #0x80 + lsls r2, r2, #1 + bl CpuSet + movs r0, #0 + str r0, [sp] + adds r5, r4, r5 + ldr r2, _080B7DB0 + mov r0, sp + adds r1, r5, #0 + bl CpuSet + ldr r0, _080B7DB4 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + adds r0, r4, #0 + bl sub_080B7FCC + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B7DA8: .4byte 0x04000008 +_080B7DAC: .4byte gUnknown_8535AFC +_080B7DB0: .4byte 0x05000200 +_080B7DB4: .4byte gUnknown_8535CFC + thumb_func_end sub_080B7D50 + + thumb_func_start sub_080B7DB8 +sub_080B7DB8: @ 0x080B7DB8 + push {r4, r5, r6, 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, r1, #0x10 + lsrs r0, r2, #8 + subs r0, #2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r7, #0 + ands r0, r2 + adds r5, r0, #2 + lsrs r2, r1, #0x10 + cmp r1, #0 + bge _080B7DE4 + movs r2, #0 +_080B7DE4: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + bgt _080B7DEE + movs r4, #0x28 +_080B7DEE: + cmp r5, #0x78 + ble _080B7DF4 + movs r5, #0x78 +_080B7DF4: + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r1, r2, #8 + adds r0, r7, #0 + ands r0, r6 + orrs r1, r0 + strh r1, [r3, #0xa] + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + lsls r0, r4, #8 + adds r1, r5, #0 + orrs r0, r1 + strh r0, [r3, #0xc] + cmp r2, #0 + bne _080B7E34 + cmp r4, #0x28 + bne _080B7E34 + cmp r1, #0x78 + bne _080B7E34 + ldr r2, _080B7E3C + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080B7E40 + str r1, [r0] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B7E34: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B7E3C: .4byte gUnknown_20205AC +_080B7E40: .4byte sub_080B8418 + thumb_func_end sub_080B7DB8 + + thumb_func_start sub_080B7E44 +sub_080B7E44: @ 0x080B7E44 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x12] + subs r0, #0x10 + strh r0, [r3, #0x12] + ldr r2, _080B7E70 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x3c + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080B7E6A + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B7E6A: + pop {r0} + bx r0 + .align 2, 0 +_080B7E70: .4byte gUnknown_20205AC + thumb_func_end sub_080B7E44 + + thumb_func_start sub_080B7E74 +sub_080B7E74: @ 0x080B7E74 + 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, #0x10 + movs r0, #0xff + asrs r1, r1, #0x18 + adds r1, #6 + lsls r1, r1, #0x10 + ands r0, r2 + subs r0, #6 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsrs r4, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x50 + ble _080B7E9C + movs r4, #0x50 +_080B7E9C: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x50 + bgt _080B7EA6 + movs r2, #0x51 +_080B7EA6: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #8 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + orrs r1, r2 + strh r1, [r3, #0xc] + cmp r0, #0x50 + bne _080B7EC2 + cmp r2, #0x51 + bne _080B7EC2 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_080B7EC2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B7E74 + + thumb_func_start sub_080B7EC8 +sub_080B7EC8: @ 0x080B7EC8 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _080B7F08 + ldrh r1, [r0] + lsrs r1, r1, #8 + lsls r1, r1, #0x1b + lsrs r1, r1, #0x10 + movs r0, #0 + str r0, [sp] + movs r0, #0xc0 + lsls r0, r0, #0x13 + adds r1, r1, r0 + ldr r2, _080B7F0C + 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, #8] + adds r0, #1 + strh r0, [r4, #8] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7F08: .4byte 0x04000008 +_080B7F0C: .4byte 0x05000200 + thumb_func_end sub_080B7EC8 + + thumb_func_start sub_080B7F10 +sub_080B7F10: @ 0x080B7F10 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + adds r0, #0x22 + mov r1, sp + bl sub_0806F108 + ldr r0, [sp] + bl sub_080006F0 + bl sub_08196DF4 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B7F5C + adds r0, r0, r1 + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080B57C8 + movs r0, #6 + bl sub_080B5568 + ldr r0, _080B7F60 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7F5C: .4byte gUnknown_20205AC +_080B7F60: .4byte sub_080B7CAC + thumb_func_end sub_080B7F10 + + thumb_func_start sub_080B7F64 +sub_080B7F64: @ 0x080B7F64 + push {r4, lr} + sub sp, #4 + ldr r0, _080B7FC4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _080B7FC8 + adds r4, r4, r0 + adds r0, r4, #0 + adds r0, #0x22 + mov r1, sp + bl sub_0806F108 + ldr r0, [sp] + bl _call_via_r0 + thumb_func_end sub_080B7F64 + + thumb_func_start sub_080B7F8C +sub_080B7F8C: @ 0x080B7F8C + ldrh r1, [r4, #0xa] + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x44 + bl sub_08001144 + ldrh r1, [r4, #0xe] + movs r0, #0x48 + bl sub_08001144 + ldrh r1, [r4, #0x10] + movs r0, #0x4a + bl sub_08001144 + ldrh r1, [r4, #0x12] + movs r0, #0x10 + bl sub_08001144 + ldrh r1, [r4, #0x14] + movs r0, #0x12 + bl sub_08001144 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B7FC4: .4byte sub_080B7CAC +_080B7FC8: .4byte gUnknown_3005B60 + thumb_func_end sub_080B7F8C + + thumb_func_start sub_080B7FCC +sub_080B7FCC: @ 0x080B7FCC + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080B8000 + adds r2, r0, r1 + movs r1, #0 + ldr r5, _080B8004 + movs r0, #0xf0 + lsls r0, r0, #8 + adds r4, r0, #0 + ldr r3, _080B8008 +_080B7FE2: + lsls r0, r1, #1 + adds r0, r0, r5 + ldrh r0, [r0] + orrs r0, r4 + strh r0, [r2] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, #2 + cmp r1, r3 + bls _080B7FE2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8000: .4byte 0x06000140 +_080B8004: .4byte gUnknown_8535D1C +_080B8008: .4byte 0x0000013F + thumb_func_end sub_080B7FCC + + thumb_func_start sub_080B800C +sub_080B800C: @ 0x080B800C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B8034 + ldr r2, _080B8038 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8034: .4byte gUnknown_8537170 +_080B8038: .4byte gUnknown_3005B60 + thumb_func_end sub_080B800C + + thumb_func_start sub_080B803C +sub_080B803C: @ 0x080B803C + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0xa] + movs r0, #0x10 + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x12 + bl sub_08001144 + adds r0, r4, #0 + adds r0, #0x22 + ldr r1, _080B8070 + ldr r1, [r1, #0xc] + bl sub_0806F100 + ldr r0, _080B8074 + bl sub_080006F0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8070: .4byte gUnknown_3002360 +_080B8074: .4byte sub_080B8238 + thumb_func_end sub_080B803C + + thumb_func_start sub_080B8078 +sub_080B8078: @ 0x080B8078 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r6, r0, #0 + ldr r0, _080B80D4 + ldrh r1, [r0] + lsrs r1, r1, #2 + lsls r1, r1, #0x1e + lsrs r1, r1, #0x10 + ldrh r4, [r0] + lsrs r4, r4, #8 + lsls r4, r4, #0x1b + lsrs r4, r4, #0x10 + movs r0, #0 + mov r8, r0 + strh r4, [r6, #0x20] + ldr r0, _080B80D8 + movs r5, #0xc0 + lsls r5, r5, #0x13 + adds r1, r1, r5 + movs r2, #0x40 + bl CpuSet + mov r0, r8 + str r0, [sp] + adds r4, r4, r5 + ldr r2, _080B80DC + mov r0, sp + adds r1, r4, #0 + bl CpuSet + ldr r0, _080B80E0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B80D4: .4byte 0x04000008 +_080B80D8: .4byte gUnknown_8535F9C +_080B80DC: .4byte 0x05000200 +_080B80E0: .4byte gUnknown_853601C + thumb_func_end sub_080B8078 + + thumb_func_start sub_080B80E4 +sub_080B80E4: @ 0x080B80E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080B8290 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B811C + movs r0, #0x42 + movs r1, #0xf0 + bl sub_08001144 + ldr r1, _080B8128 + movs r0, #0x46 + bl sub_08001144 + ldr r2, _080B812C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080B8130 + str r1, [r0] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B811C: + adds r0, r4, #0 + bl sub_080B8280 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8128: .4byte 0x00002878 +_080B812C: .4byte gUnknown_20205AC +_080B8130: .4byte sub_080B8418 + thumb_func_end sub_080B80E4 + + thumb_func_start sub_080B8134 +sub_080B8134: @ 0x080B8134 + push {r4, lr} + adds r4, r0, #0 + bl sub_080B8280 + ldr r2, _080B8160 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x3c + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080B8158 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B8158: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8160: .4byte gUnknown_20205AC + thumb_func_end sub_080B8134 + + thumb_func_start sub_080B8164 +sub_080B8164: @ 0x080B8164 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080B8280 + ldrh r1, [r4, #0xa] + movs r0, #7 + ands r0, r1 + movs r1, #0 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + ldr r5, _080B8198 + movs r0, #0x42 + adds r1, r5, #0 + bl sub_08001144 + movs r0, #0x46 + adds r1, r5, #0 + bl sub_08001144 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8198: .4byte 0x0000FFFF + thumb_func_end sub_080B8164 + + thumb_func_start sub_080B819C +sub_080B819C: @ 0x080B819C + push {r4, lr} + adds r4, r0, #0 + bl sub_080B8280 + adds r0, r4, #0 + bl sub_080B8348 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B81B6 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B81B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B819C + + thumb_func_start sub_080B81BC +sub_080B81BC: @ 0x080B81BC + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r0, _080B8228 + ldrh r1, [r0] + lsrs r1, r1, #8 + lsls r1, r1, #0x1b + lsrs r1, r1, #0x10 + movs r0, #0 + str r0, [sp] + movs r0, #0xc0 + lsls r0, r0, #0x13 + adds r1, r1, r0 + ldr r2, _080B822C + mov r0, sp + bl CpuSet + adds r0, r4, #0 + adds r0, #0x22 + add r1, sp, #4 + bl sub_0806F108 + ldr r0, [sp, #4] + bl sub_080006F0 + bl sub_08196DF4 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B8230 + adds r0, r0, r1 + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080B57C8 + movs r0, #6 + bl sub_080B5568 + ldr r0, _080B8234 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8228: .4byte 0x04000008 +_080B822C: .4byte 0x05000200 +_080B8230: .4byte gUnknown_20205AC +_080B8234: .4byte sub_080B800C + thumb_func_end sub_080B81BC + + thumb_func_start sub_080B8238 +sub_080B8238: @ 0x080B8238 + push {r4, lr} + sub sp, #4 + ldr r0, _080B8278 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _080B827C + adds r4, r4, r0 + adds r0, r4, #0 + adds r0, #0x22 + mov r1, sp + bl sub_0806F108 + ldr r0, [sp] + bl _call_via_r0 + thumb_func_end sub_080B8238 + + thumb_func_start sub_080B8260 +sub_080B8260: @ 0x080B8260 + ldrh r1, [r4, #0xa] + movs r0, #0x10 + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x12 + bl sub_08001144 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8278: .4byte sub_080B800C +_080B827C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B8260 + + thumb_func_start sub_080B8280 +sub_080B8280: @ 0x080B8280 + ldrh r1, [r0, #0xa] + subs r1, #0x10 + strh r1, [r0, #0xa] + ldrh r1, [r0, #0xe] + adds r1, #0x10 + strh r1, [r0, #0xe] + bx lr + .align 2, 0 + thumb_func_end sub_080B8280 + + thumb_func_start sub_080B8290 +sub_080B8290: @ 0x080B8290 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + ldrh r2, [r5, #0x10] + movs r1, #0x10 + ldrsh r0, [r5, r1] + cmp r0, #0x1f + ble _080B82AC + movs r0, #1 + b _080B8330 +_080B82AC: + ldrh r0, [r5, #0xe] + lsls r0, r0, #0x10 + asrs r3, r0, #0x13 + movs r1, #0x1f + ands r3, r1 + movs r4, #0x10 + ldrsh r0, [r5, r4] + cmp r3, r0 + blt _080B832E + movs r0, #0x20 + subs r3, r0, r3 + ands r3, r1 + subs r0, r0, r2 + mov ip, r0 + mov r7, ip + ands r7, r1 + mov ip, r7 + ldrh r0, [r5, #0x20] + ldr r1, _080B8340 + adds r1, r1, r0 + mov r8, r1 + movs r4, #0 + ldr r7, _080B8344 + mov sl, r7 + movs r0, #0xf0 + lsls r0, r0, #8 + mov sb, r0 + adds r1, r3, #1 + movs r0, #0x1f + ands r1, r0 + str r1, [sp] + mov r6, ip + adds r6, #1 + ands r6, r0 +_080B82F0: + lsls r1, r4, #5 + adds r2, r1, r3 + lsls r2, r2, #1 + add r2, r8 + mov r7, ip + adds r0, r7, r1 + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + mov r7, sb + orrs r0, r7 + strh r0, [r2] + ldr r0, [sp] + adds r2, r1, r0 + lsls r2, r2, #1 + add r2, r8 + adds r1, r6, r1 + lsls r1, r1, #1 + add r1, sl + ldrh r0, [r1] + mov r1, sb + orrs r0, r1 + strh r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bls _080B82F0 + ldrh r0, [r5, #0x10] + adds r0, #2 + strh r0, [r5, #0x10] +_080B832E: + movs r0, #0 +_080B8330: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B8340: .4byte 0x06000140 +_080B8344: .4byte gUnknown_853603C + thumb_func_end sub_080B8290 + + thumb_func_start sub_080B8348 +sub_080B8348: @ 0x080B8348 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #0x10 + ldrsh r0, [r5, r1] + cmp r0, #0x1f + ble _080B8358 + movs r0, #1 + b _080B83AC +_080B8358: + ldrh r0, [r5, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0x10 + ldrsh r0, [r5, r1] + cmp r2, r0 + blt _080B83AA + ldrh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r2, r0, #0x13 + movs r0, #0x1f + ands r2, r0 + ldrh r0, [r5, #0x20] + ldr r1, _080B83B4 + adds r6, r0, r1 + movs r3, #0 + movs r0, #0xf0 + lsls r0, r0, #8 + adds r7, r0, #0 + adds r4, r2, #1 + movs r0, #0x1f + ands r4, r0 +_080B8388: + lsls r0, r3, #5 + adds r1, r0, r2 + lsls r1, r1, #1 + adds r1, r1, r6 + strh r7, [r1] + adds r0, r0, r4 + lsls r0, r0, #1 + adds r0, r0, r6 + strh r7, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #9 + bls _080B8388 + ldrh r0, [r5, #0x10] + adds r0, #2 + strh r0, [r5, #0x10] +_080B83AA: + movs r0, #0 +_080B83AC: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B83B4: .4byte 0x06000140 + thumb_func_end sub_080B8348 + + thumb_func_start sub_080B83B8 +sub_080B83B8: @ 0x080B83B8 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + movs r5, #0x80 + lsls r5, r5, #0x18 + ands r5, r6 + lsrs r5, r5, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080B840C + ands r6, r0 + lsls r0, r6, #0x10 + lsrs r0, r0, #0x10 + movs r3, #0xa0 + lsls r3, r3, #1 + movs r4, #0x50 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + bl sub_080B5740 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r1, _080B8410 + adds r2, r2, r1 + ldr r1, _080B8414 + str r1, [r2, #0x1c] + ldrb r3, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r2, #5] + strh r6, [r2, #0x2e] + strh r5, [r2, #0x3a] + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080B840C: .4byte 0x7FFFFFFF +_080B8410: .4byte gUnknown_20205AC +_080B8414: .4byte sub_08007140 + thumb_func_end sub_080B83B8 + + thumb_func_start sub_080B8418 +sub_080B8418: @ 0x080B8418 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x20] + subs r0, #0x14 + strh r0, [r1, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x78 + bgt _080B8458 + movs r0, #0x78 + strh r0, [r1, #0x20] + movs r0, #0x1e + strh r0, [r1, #0x30] + ldr r0, _080B844C + str r0, [r1, #0x1c] + movs r2, #0x3a + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080B8450 + ldrh r0, [r1, #0x2e] + movs r1, #0 + movs r2, #0x7d + movs r3, #0xa + bl sub_080A2B88 + b _080B8458 + .align 2, 0 +_080B844C: .4byte sub_080B845C +_080B8450: + ldrh r0, [r1, #0x2e] + movs r1, #0 + bl sub_080A2B3C +_080B8458: + pop {r0} + bx r0 + thumb_func_end sub_080B8418 + + thumb_func_start sub_080B845C +sub_080B845C: @ 0x080B845C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + subs r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B8470 + ldr r0, _080B8474 + str r0, [r1, #0x1c] +_080B8470: + pop {r0} + bx r0 + .align 2, 0 +_080B8474: .4byte sub_080B8478 + thumb_func_end sub_080B845C + + thumb_func_start sub_080B8478 +sub_080B8478: @ 0x080B8478 + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x20] + movs r0, #0x20 + ldrsh r1, [r2, r0] + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080B8490 + movs r0, #1 + strh r0, [r2, #0x3c] + b _080B8496 +_080B8490: + adds r0, r3, #0 + subs r0, #0x14 + strh r0, [r2, #0x20] +_080B8496: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B8478 + + thumb_func_start sub_080B849C +sub_080B849C: @ 0x080B849C + push {lr} + ldr r0, _080B84CC + movs r1, #0xff + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B84D0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080B84D4 + ldr r0, [r0] + strh r0, [r1, #0x26] + bl sub_08085168 + ldr r0, _080B84D8 + bl sub_0808522C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B84CC: .4byte sub_080B84DC +_080B84D0: .4byte gUnknown_3005B60 +_080B84D4: .4byte gUnknown_20388A8 +_080B84D8: .4byte 0x0000016D + thumb_func_end sub_080B849C + + thumb_func_start sub_080B84DC +sub_080B84DC: @ 0x080B84DC + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B8504 + ldr r2, _080B8508 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8504: .4byte gUnknown_853718C +_080B8508: .4byte gUnknown_3005B60 + thumb_func_end sub_080B84DC + + thumb_func_start sub_080B850C +sub_080B850C: @ 0x080B850C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + bl sub_080987DC + bl sub_08096E04 + ldr r5, _080B8564 + movs r0, #1 + strb r0, [r5, #6] + movs r0, #8 + bl sub_0808B878 + adds r6, r4, #0 + adds r6, #0xa + movs r0, #0xc + adds r0, r0, r4 + mov r8, r0 + adds r0, r6, #0 + mov r1, r8 + bl sub_0808B410 + ldr r2, _080B8568 + ldrb r1, [r5, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x18] + lsrs r0, r0, #4 + adds r1, r6, #0 + mov r2, r8 + bl sub_080928AC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8564: .4byte gUnknown_2037230 +_080B8568: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B850C + + thumb_func_start sub_080B856C +sub_080B856C: @ 0x080B856C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B85B0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B85B4 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8596 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B85A8 +_080B8596: + bl sub_0808BA78 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B85A8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B85B0: .4byte gUnknown_2037230 +_080B85B4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B856C + + thumb_func_start sub_080B85B8 +sub_080B85B8: @ 0x080B85B8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B85F4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B85F8 + adds r0, r0, r1 + bl sub_08092BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B85EE + ldr r2, _080B85FC + movs r1, #0x26 + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2] + movs r0, #0x3b + bl sub_080B5270 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B85EE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B85F4: .4byte gUnknown_2037230 +_080B85F8: .4byte gUnknown_2036FF0 +_080B85FC: .4byte gUnknown_20388A8 + thumb_func_end sub_080B85B8 + + thumb_func_start sub_080B8600 +sub_080B8600: @ 0x080B8600 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #6 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B866A + ldr r5, _080B8670 + ldrb r0, [r5, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B8674 + adds r4, r4, r0 + movs r0, #3 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + adds r0, r4, #0 + bl sub_08092BF4 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092EB0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldr r1, _080B8678 + movs r2, #0xa + ldrsh r0, [r6, r2] + str r0, [r1] + movs r2, #0xc + ldrsh r0, [r6, r2] + str r0, [r1, #4] + ldrb r0, [r5, #5] + str r0, [r1, #8] + movs r0, #8 + bl sub_080B5270 + strb r0, [r4, #0x1a] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_080B866A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8670: .4byte gUnknown_2037230 +_080B8674: .4byte gUnknown_2036FF0 +_080B8678: .4byte gUnknown_20388A8 + thumb_func_end sub_080B8600 + + thumb_func_start sub_080B867C +sub_080B867C: @ 0x080B867C + push {r4, r5, lr} + ldr r5, _080B86E4 + ldrb r1, [r5, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B86E8 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B86DC + movs r0, #0 + strb r0, [r5, #6] + ldrb r1, [r5] + movs r0, #0xdf + ands r0, r1 + strb r0, [r5] + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08092CA0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldrb r0, [r4, #0x1a] + movs r1, #1 + bl sub_081554E8 + bl sub_08096EEC + bl sub_080987E8 + movs r0, #9 + bl sub_080B5568 + ldr r0, _080B86EC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B86DC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B86E4: .4byte gUnknown_2037230 +_080B86E8: .4byte gUnknown_2036FF0 +_080B86EC: .4byte sub_080B84DC + thumb_func_end sub_080B867C + + thumb_func_start sub_080B86F0 +sub_080B86F0: @ 0x080B86F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080B87F4 + adds r0, #0x90 + ldr r0, [r0] + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r0, #4 + add r1, r8 + lsls r1, r1, #2 + ldr r0, _080B87F8 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + movs r2, #0xf + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r1, #5] + movs r2, #0 + strh r2, [r1, #0x2e] + strh r2, [r1, #0x30] + strh r2, [r1, #0x32] + ldr r0, _080B87FC + strh r0, [r1, #0x34] + ldrh r0, [r1, #0x22] + strh r0, [r1, #0x36] + strh r2, [r1, #0x38] + ldr r1, _080B8800 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080B8804 + movs r0, #0x52 + bl sub_08001144 + ldr r1, _080B8808 + movs r0, #0x48 + bl sub_08001144 + ldr r0, _080B880C + movs r1, #0xc0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0x12 + movs r1, #0x78 + bl sub_08001144 + movs r4, #3 + ldr r7, _080B8810 + ldr r0, _080B8814 + adds r6, r0, #0 +_080B8772: + movs r2, #0xc + lsls r0, r4, #1 + lsls r5, r4, #5 + adds r0, r0, r4 + lsls r3, r0, #1 +_080B877C: + adds r0, r5, r2 + lsls r0, r0, #1 + adds r0, r0, r7 + adds r1, r2, r6 + adds r1, r3, r1 + adds r1, #1 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x11 + bls _080B877C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xe + bls _080B8772 + movs r0, #0 + ldr r5, _080B8818 +_080B87A2: + movs r4, #0 + adds r7, r0, #1 + lsls r6, r0, #5 +_080B87A8: + lsls r1, r4, #2 + adds r1, r6, r1 + ldr r0, _080B881C + adds r3, r1, r0 + adds r0, r1, #1 + adds r0, r0, r5 + ldrb r2, [r0] + lsls r2, r2, #8 + adds r0, r1, r5 + ldrb r0, [r0] + adds r0, r0, r2 + strh r0, [r3] + ldr r0, _080B8820 + adds r3, r1, r0 + adds r0, r1, #3 + adds r0, r0, r5 + ldrb r2, [r0] + lsls r2, r2, #8 + adds r1, #2 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, r0, r2 + strh r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _080B87A8 + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x59 + bls _080B87A2 + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B87F4: .4byte gUnknown_84DDE4C +_080B87F8: .4byte gUnknown_20205AC +_080B87FC: .4byte 0x0000FFFF +_080B8800: .4byte 0x00003E41 +_080B8804: .4byte 0x00000E0E +_080B8808: .4byte 0x00003F3F +_080B880C: .4byte gUnknown_85362BC +_080B8810: .4byte 0x0600F800 +_080B8814: .4byte 0x0000BFF4 +_080B8818: .4byte gUnknown_85362DC +_080B881C: .4byte 0x06008020 +_080B8820: .4byte 0x06008022 + thumb_func_end sub_080B86F0 + + thumb_func_start sub_080B8824 +sub_080B8824: @ 0x080B8824 + push {r4, lr} + ldr r0, _080B8870 + ldr r0, [r0, #0x68] + movs r1, #0x78 + movs r2, #0 + movs r3, #1 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r4, #4 + adds r2, r2, r4 + lsls r2, r2, #2 + ldr r0, _080B8874 + adds r2, r2, r0 + ldrb r1, [r2, #5] + movs r0, #0xf + ands r0, r1 + movs r1, #0xd + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, _080B8878 + str r0, [r2, #0x1c] + ldr r0, _080B887C + ldr r0, [r0] + strh r0, [r2, #0x30] + movs r0, #0x9e + bl sub_080A306C + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080B8870: .4byte gUnknown_84DDE4C +_080B8874: .4byte gUnknown_20205AC +_080B8878: .4byte sub_080B8880 +_080B887C: .4byte gUnknown_20388A8 + thumb_func_end sub_080B8824 + + thumb_func_start sub_080B8880 +sub_080B8880: @ 0x080B8880 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0x8c + bl sub_0806EFD4 + movs r5, #0 + strh r0, [r4, #0x24] + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0x48 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x32] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080B88E2 + movs r2, #0x30 + ldrsh r0, [r4, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B88F8 + adds r1, r1, r0 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r1, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + subs r0, #8 + strh r0, [r1, #0x22] + strh r5, [r1, #0x24] + strh r5, [r1, #0x26] +_080B88E2: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _080B88F2 + adds r0, r4, #0 + movs r1, #0x1e + bl sub_080B5444 +_080B88F2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B88F8: .4byte gUnknown_20205AC + thumb_func_end sub_080B8880 + + thumb_func_start sub_080B88FC +sub_080B88FC: @ 0x080B88FC + push {lr} + ldr r0, _080B8920 + movs r1, #0xfe + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B8924 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080B8928 + ldr r0, [r0] + strh r0, [r1, #0xa] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B8920: .4byte sub_080B892C +_080B8924: .4byte gUnknown_3005B60 +_080B8928: .4byte gUnknown_20388A8 + thumb_func_end sub_080B88FC + + thumb_func_start sub_080B892C +sub_080B892C: @ 0x080B892C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B8954 + ldr r2, _080B8958 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8954: .4byte gUnknown_85371A0 +_080B8958: .4byte gUnknown_3005B60 + thumb_func_end sub_080B892C + + thumb_func_start sub_080B895C +sub_080B895C: @ 0x080B895C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _080B89AC + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B89B0 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8986 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B89A4 +_080B8986: + ldrb r0, [r6] + strh r0, [r5, #0x26] + movs r0, #1 + strb r0, [r6, #6] + bl sub_0808B878 + bl sub_0808BA78 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_08092B30 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B89A4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B89AC: .4byte gUnknown_2037230 +_080B89B0: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B895C + + thumb_func_start sub_080B89B4 +sub_080B89B4: @ 0x080B89B4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B89EC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B89F0 + adds r0, r0, r1 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B89E4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r1, _080B89F4 + movs r2, #0xa + ldrsh r0, [r4, r2] + str r0, [r1] + movs r0, #0x3b + bl sub_080B5270 +_080B89E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B89EC: .4byte gUnknown_2037230 +_080B89F0: .4byte gUnknown_2036FF0 +_080B89F4: .4byte gUnknown_20388A8 + thumb_func_end sub_080B89B4 + + thumb_func_start sub_080B89F8 +sub_080B89F8: @ 0x080B89F8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B8A40 + ldr r0, _080B8A48 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B8A4C + adds r5, r0, r1 + ldrh r1, [r4, #0x26] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080B8A30 + ldrb r0, [r5, #0x1a] + movs r1, #2 + bl sub_081554E8 + ldrb r0, [r5, #0x1a] + movs r1, #0 + bl sub_08155514 +_080B8A30: + bl sub_080B8C1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B8A40: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8A48: .4byte gUnknown_2037230 +_080B8A4C: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B89F8 + + thumb_func_start sub_080B8A50 +sub_080B8A50: @ 0x080B8A50 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_080B8C60 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8A84 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x10 + strh r0, [r4, #0xc] + movs r0, #1 + bl sub_0808AD30 + ldr r0, _080B8A8C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B8A90 + adds r0, r0, r1 + movs r1, #2 + bl sub_08092B30 +_080B8A84: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8A8C: .4byte gUnknown_2037230 +_080B8A90: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B8A50 + + thumb_func_start sub_080B8A94 +sub_080B8A94: @ 0x080B8A94 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B8AE0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B8AE4 + adds r2, r0, r1 + ldrh r1, [r4, #0xc] + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080B8ABA + subs r0, r1, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B8AD8 +_080B8ABA: + adds r0, r2, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8AD8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x9e + bl sub_080A306C + ldrb r0, [r4, #0xa] + bl sub_080B8C7C +_080B8AD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8AE0: .4byte gUnknown_2037230 +_080B8AE4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B8A94 + + thumb_func_start sub_080B8AE8 +sub_080B8AE8: @ 0x080B8AE8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080B8B5E + ldr r0, _080B8B64 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B8B68 + adds r4, r0, r1 + movs r0, #3 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _080B8B6C + adds r0, r0, r6 + movs r1, #0x16 + bl sub_08007EC0 + ldrb r0, [r4, #1] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r4, #0 + movs r1, #0x48 + bl sub_08092B30 + ldrh r1, [r5, #0x26] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080B8B54 + ldrb r1, [r4, #0x1a] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 +_080B8B54: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + strh r0, [r5, #0xc] +_080B8B5E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B8B64: .4byte gUnknown_2037230 +_080B8B68: .4byte gUnknown_2036FF0 +_080B8B6C: .4byte gUnknown_20205AC + thumb_func_end sub_080B8AE8 + + thumb_func_start sub_080B8B70 +sub_080B8B70: @ 0x080B8B70 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _080B8BBC + ldr r0, _080B8BC4 + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B8BC8 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08092B94 + ldrb r1, [r4, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + ldrb r1, [r4, #2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #2] + ldrb r0, [r5, #0xa] + ldrb r1, [r4, #4] + bl sub_080B8CB8 + bl sub_0808E84C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080B8BBC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8BC4: .4byte gUnknown_2037230 +_080B8BC8: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B8B70 + + thumb_func_start sub_080B8BCC +sub_080B8BCC: @ 0x080B8BCC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_080B8C60 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8BE6 + bl sub_080AE9B0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B8BE6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080B8BCC + + thumb_func_start sub_080B8BEC +sub_080B8BEC: @ 0x080B8BEC + push {lr} + ldr r0, _080B8C14 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B8C0E + movs r0, #0x1f + bl sub_080B5568 + ldr r0, _080B8C18 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B8C0E: + pop {r0} + bx r0 + .align 2, 0 +_080B8C14: .4byte gUnknown_2037C74 +_080B8C18: .4byte sub_080B892C + thumb_func_end sub_080B8BEC + + thumb_func_start sub_080B8C1C +sub_080B8C1C: @ 0x080B8C1C + push {lr} + ldr r0, _080B8C54 + ldr r0, [r0, #0x68] + movs r1, #0xff + movs r2, #0xb4 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r1, _080B8C58 + adds r2, r2, r1 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + movs r3, #0xd + rsbs r3, r3, #0 + ands r1, r3 + movs r3, #4 + orrs r1, r3 + strb r1, [r2, #5] + ldr r1, _080B8C5C + str r1, [r2, #0x1c] + pop {r1} + bx r1 + .align 2, 0 +_080B8C54: .4byte gUnknown_84DDE4C +_080B8C58: .4byte gUnknown_20205AC +_080B8C5C: .4byte sub_080B8CD4 + thumb_func_end sub_080B8C1C + + thumb_func_start sub_080B8C60 +sub_080B8C60: @ 0x080B8C60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B8C78 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_080B8C78: .4byte gUnknown_20205AC + thumb_func_end sub_080B8C60 + + thumb_func_start sub_080B8C7C +sub_080B8C7C: @ 0x080B8C7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B8CB0 + adds r4, r4, r0 + ldr r0, _080B8CB4 + 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 +_080B8CB0: .4byte gUnknown_20205AC +_080B8CB4: .4byte sub_080B8D94 + thumb_func_end sub_080B8C7C + + thumb_func_start sub_080B8CB8 +sub_080B8CB8: @ 0x080B8CB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B8CD0 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + strh r1, [r2, #0x3a] + bx lr + .align 2, 0 +_080B8CD0: .4byte gUnknown_20205AC + thumb_func_end sub_080B8CB8 + + thumb_func_start sub_080B8CD4 +sub_080B8CD4: @ 0x080B8CD4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B8D80 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B8D18 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, _080B8D88 + str r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08008140 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + movs r0, #0x76 + strh r0, [r4, #0x20] + ldr r0, _080B8D8C + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x40 + strh r0, [r4, #0x30] + adds r0, #0xc0 + strh r0, [r4, #0x32] +_080B8D18: + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x78 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x78 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r2, [r4, #0x32] + movs r0, #0x32 + ldrsh r1, [r4, r0] + ldr r0, _080B8D90 + cmp r1, r0 + bgt _080B8D4E + adds r0, r2, #0 + adds r0, #0x60 + strh r0, [r4, #0x32] +_080B8D4E: + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x81 + ble _080B8D80 + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + lsrs r1, r1, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + adds r0, r4, #0 + movs r3, #0 + bl sub_08006F70 +_080B8D80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8D88: .4byte gUnknown_85371F4 +_080B8D8C: .4byte 0x0000FFD0 +_080B8D90: .4byte 0x000007FF + thumb_func_end sub_080B8CD4 + + thumb_func_start sub_080B8D94 +sub_080B8D94: @ 0x080B8D94 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0x8c + bl sub_0806EFD4 + movs r5, #0 + strh r0, [r4, #0x24] + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0x48 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x32] + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0x40 + beq _080B8DF2 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B8E04 + adds r1, r1, r0 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r1, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + subs r0, #8 + strh r0, [r1, #0x22] + strh r5, [r1, #0x24] + strh r5, [r1, #0x26] +_080B8DF2: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _080B8DFE + movs r0, #1 + strh r0, [r4, #0x3c] +_080B8DFE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B8E04: .4byte gUnknown_20205AC + thumb_func_end sub_080B8D94 + + thumb_func_start sub_080B8E08 +sub_080B8E08: @ 0x080B8E08 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B8EDC + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080B8E52 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, _080B8EE4 + str r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08008140 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + movs r0, #0x5e + strh r0, [r4, #0x20] + ldr r0, _080B8EE8 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0xf0 + strh r0, [r4, #0x30] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r4, #0x32] + movs r0, #0x80 + strh r0, [r4, #0x36] +_080B8E52: + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r2, [r4, #0x30] + adds r2, r2, r1 + ldrh r0, [r4, #0x34] + adds r0, 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_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x78 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r2, #0x80 + lsls r2, r2, #1 + cmp r0, r2 + ble _080B8E94 + ldrh r0, [r4, #0x36] + subs r0, r1, r0 + strh r0, [r4, #0x32] +_080B8E94: + ldrh r1, [r4, #0x36] + movs r3, #0x36 + ldrsh r0, [r4, r3] + cmp r0, #0xff + bgt _080B8EA4 + adds r0, r1, #0 + adds r0, #0x18 + strh r0, [r4, #0x36] +_080B8EA4: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0xff + bgt _080B8EAE + strh r2, [r4, #0x32] +_080B8EAE: + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0x3b + ble _080B8EDC + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_080B8EDC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8EE4: .4byte gUnknown_85371F4 +_080B8EE8: .4byte 0x0000FFE0 + thumb_func_end sub_080B8E08 + + thumb_func_start sub_080B8EEC +sub_080B8EEC: @ 0x080B8EEC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080B8C7C + ldr r1, _080B8F10 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080B8F14 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B8F10: .4byte gUnknown_20205AC +_080B8F14: .4byte sub_080B8E08 + thumb_func_end sub_080B8EEC + + thumb_func_start sub_080B8F18 +sub_080B8F18: @ 0x080B8F18 + push {lr} + ldr r0, _080B8F28 + movs r1, #0xfe + bl sub_080A8878 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080B8F28: .4byte sub_080B8F2C + thumb_func_end sub_080B8F18 + + thumb_func_start sub_080B8F2C +sub_080B8F2C: @ 0x080B8F2C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080B8F54 + ldr r2, _080B8F58 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080B8F54: .4byte gUnknown_85371FC +_080B8F58: .4byte gUnknown_3005B60 + thumb_func_end sub_080B8F2C + + thumb_func_start sub_080B8F5C +sub_080B8F5C: @ 0x080B8F5C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _080B9004 + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B9008 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8F86 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B8FFE +_080B8F86: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0x11 + strh r0, [r5, #0xc] + ldrb r0, [r6] + strh r0, [r5, #0x26] + movs r0, #1 + strb r0, [r6, #6] + bl sub_0808B878 + ldrh r1, [r5, #0x26] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080B8FAE + ldrb r0, [r4, #0x1a] + movs r1, #0 + bl sub_081554E8 +_080B8FAE: + movs r0, #3 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + bl sub_0808E84C + adds r0, r4, #0 + movs r1, #3 + bl sub_0808DEB4 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B900C + adds r0, r0, r1 + movs r1, #0x16 + bl sub_08007EC0 + ldrb r1, [r4, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + bl sub_080B8C1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + bl sub_080B8C7C + ldrb r0, [r5, #0xa] + ldrb r1, [r4, #4] + bl sub_080B8CB8 +_080B8FFE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B9004: .4byte gUnknown_2037230 +_080B9008: .4byte gUnknown_2036FF0 +_080B900C: .4byte gUnknown_20205AC + thumb_func_end sub_080B8F5C + + thumb_func_start sub_080B9010 +sub_080B9010: @ 0x080B9010 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0xc] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _080B9028 + subs r0, r1, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B9068 +_080B9028: + ldr r0, _080B9070 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B9074 + adds r0, r0, r1 + ldrb r0, [r0, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B9078 + adds r4, r4, r0 + ldrb r0, [r5, #0xa] + movs r1, #0x40 + bl sub_080B8CB8 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r1, [r4, #0x24] + strh r1, [r4, #0x26] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + strh r1, [r5, #0xc] +_080B9068: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9070: .4byte gUnknown_2037230 +_080B9074: .4byte gUnknown_2036FF0 +_080B9078: .4byte gUnknown_20205AC + thumb_func_end sub_080B9010 + + thumb_func_start sub_080B907C +sub_080B907C: @ 0x080B907C + push {r4, lr} + sub sp, #0x24 + adds r4, r0, #0 + ldr r1, _080B90C4 + mov r0, sp + movs r2, #0x24 + bl memcpy + ldr r0, _080B90C8 + ldrb r0, [r0, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080B90CC + adds r1, r1, r0 + movs r2, #0xc + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r1, #0x26] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x11 + ble _080B90BA + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080B90BA: + add sp, #0x24 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B90C4: .4byte gUnknown_8537218 +_080B90C8: .4byte gUnknown_2037230 +_080B90CC: .4byte gUnknown_20205AC + thumb_func_end sub_080B907C + + thumb_func_start sub_080B90D0 +sub_080B90D0: @ 0x080B90D0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xa] + bl sub_080B8C60 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B9134 + ldr r0, _080B913C + ldrb r0, [r0, #5] + lsls r5, r0, #3 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _080B9140 + adds r5, r5, r0 + ldrb r0, [r5, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B9144 + adds r4, r4, r0 + ldrb r1, [r5, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #1] + movs r0, #0x10 + ldrsh r1, [r5, r0] + movs r0, #0x12 + ldrsh r2, [r5, r0] + adds r0, r5, #0 + bl sub_0808E478 + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + bl sub_0808BA78 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_08092B30 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_080B9134: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080B913C: .4byte gUnknown_2037230 +_080B9140: .4byte gUnknown_2036FF0 +_080B9144: .4byte gUnknown_20205AC + thumb_func_end sub_080B90D0 + + thumb_func_start sub_080B9148 +sub_080B9148: @ 0x080B9148 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080B9178 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B917C + adds r0, r0, r1 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B9170 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldrb r0, [r4, #0xa] + bl sub_080B8EEC +_080B9170: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9178: .4byte gUnknown_2037230 +_080B917C: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B9148 + + thumb_func_start sub_080B9180 +sub_080B9180: @ 0x080B9180 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_080B8C60 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080B91AC + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B91B4 + adds r0, r0, r1 + bl sub_08006E00 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x10 + strh r0, [r4, #0xa] +_080B91AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B91B4: .4byte gUnknown_20205AC + thumb_func_end sub_080B9180 + + thumb_func_start sub_080B91B8 +sub_080B91B8: @ 0x080B91B8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0xa] + subs r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080B9222 + ldr r6, _080B9228 + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B922C + adds r4, r0, r1 + movs r7, #0 + ldrh r1, [r5, #0x26] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080B91EC + movs r7, #3 + ldrb r0, [r4, #0x1a] + movs r1, #1 + bl sub_081554E8 +_080B91EC: + adds r0, r7, #0 + bl sub_0808B6F0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + adds r0, r4, #0 + movs r1, #1 + bl sub_0808DEB4 + ldrh r0, [r5, #0x26] + strb r0, [r6] + movs r0, #0 + strb r0, [r6, #6] + movs r0, #0x20 + bl sub_080B5568 + ldr r0, _080B9230 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_080B9222: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9228: .4byte gUnknown_2037230 +_080B922C: .4byte gUnknown_2036FF0 +_080B9230: .4byte sub_080B8F2C + thumb_func_end sub_080B91B8 + + thumb_func_start sub_080B9234 +sub_080B9234: @ 0x080B9234 + push {r4, lr} + sub sp, #4 + ldr r4, _080B9278 + ldrb r0, [r4] + ldrb r1, [r4, #4] + ldrb r2, [r4, #8] + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B9284 + ldr r0, _080B927C + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B9280 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + mov r0, sp + ldrb r0, [r0] + strh r0, [r1, #0xc] + ldr r0, [r4] + strh r0, [r1, #0x14] + ldr r0, [r4, #4] + strh r0, [r1, #0x16] + ldr r0, [r4, #8] + strh r0, [r1, #0x18] + b _080B928A + .align 2, 0 +_080B9278: .4byte gUnknown_20388A8 +_080B927C: .4byte sub_080B9340 +_080B9280: .4byte gUnknown_3005B60 +_080B9284: + movs r0, #0x41 + bl sub_080B5568 +_080B928A: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080B9234 + + thumb_func_start sub_080B9294 +sub_080B9294: @ 0x080B9294 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080B92CC + adds r4, r0, r1 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080B92D0 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080B92D4 + movs r0, #0 + strh r0, [r4, #0xc] + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080B92D4 + subs r0, r1, #1 + b _080B92D2 + .align 2, 0 +_080B92CC: .4byte gUnknown_3005B68 +_080B92D0: + movs r0, #4 +_080B92D2: + strh r0, [r4, #0xa] +_080B92D4: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _080B930E + movs r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080B9304 + ldrh r1, [r4, #0xa] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_08089C30 + b _080B930E +_080B9304: + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_08089C30 +_080B930E: + bl sub_08089C78 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080B9320 + adds r0, r5, #0 + bl sub_080A8964 +_080B9320: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B9294 + + thumb_func_start sub_080B9328 +sub_080B9328: @ 0x080B9328 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080B933C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #0x16] + bx lr + .align 2, 0 +_080B933C: .4byte gUnknown_3005B60 + thumb_func_end sub_080B9328 + + thumb_func_start sub_080B9340 +sub_080B9340: @ 0x080B9340 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _080B9378 + adds r4, r4, r0 + bl sub_08089C48 + movs r0, #0 + bl sub_08089C24 + ldr r1, _080B937C + movs r2, #2 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 + thumb_func_end sub_080B9340 + + thumb_func_start sub_080B9370 +sub_080B9370: @ 0x080B9370 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9378: .4byte gUnknown_3005B68 +_080B937C: .4byte gUnknown_853723C + thumb_func_end sub_080B9370 + + thumb_func_start sub_080B9380 +sub_080B9380: @ 0x080B9380 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080B93A8 + movs r1, #0x5a + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x58 + bl sub_080A306C + strh r4, [r5, #0xa] + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B93A8: .4byte sub_080B9294 + thumb_func_end sub_080B9380 + + thumb_func_start sub_080B93AC +sub_080B93AC: @ 0x080B93AC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + ldrh r0, [r7, #6] + adds r0, #1 + strh r0, [r7, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x78 + ble _080B941A + ldr r2, _080B9424 + movs r1, #4 + ldrsh r0, [r7, r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #4] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B9428 + adds r4, r4, r0 + ldrb r0, [r1, #1] + movs r2, #0x20 + orrs r0, r2 + strb r0, [r1, #1] + ldr r6, _080B942C + ldr r5, _080B9430 + adds r0, r6, #0 + movs r1, #0x10 + adds r2, r5, #0 + bl sub_080A22E8 + str r5, [sp] + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + adds r0, r4, #0 + bl sub_080B947C + movs r0, #0x57 + bl sub_080A306C + ldrb r0, [r7, #0xa] + bl sub_080B9328 + movs r0, #0 + strh r0, [r7, #6] + ldrh r0, [r7, #2] + adds r0, #1 + strh r0, [r7, #2] +_080B941A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9424: .4byte gUnknown_2036FF0 +_080B9428: .4byte gUnknown_20205AC +_080B942C: .4byte 0x0000FFFF +_080B9430: .4byte 0x00007FFF + thumb_func_end sub_080B93AC + + thumb_func_start sub_080B9434 +sub_080B9434: @ 0x080B9434 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _080B9474 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B946E + ldr r0, _080B9478 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B946E + bl sub_08089C48 + ldrb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + bl sub_0808D234 + movs r0, #0x41 + bl sub_080B5568 + adds r0, r5, #0 + bl sub_080A8964 +_080B946E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080B9474: .4byte gUnknown_2037C74 +_080B9478: .4byte sub_080B9294 + thumb_func_end sub_080B9434 + + thumb_func_start sub_080B947C +sub_080B947C: @ 0x080B947C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _080B9500 + movs r1, #0 + ldrsh r2, [r0, r1] + movs r3, #0x20 + ldrsh r0, [r6, r3] + adds r2, r2, r0 + movs r1, #0x24 + ldrsh r0, [r6, r1] + adds r2, r2, r0 + ldr r0, _080B9504 + movs r3, #0 + ldrsh r0, [r0, r3] + movs r3, #0x22 + ldrsh r1, [r6, r3] + adds r0, r0, r1 + movs r3, #0x26 + ldrsh r1, [r6, r3] + adds r0, r0, r1 + subs r0, #4 + movs r5, #0 + lsls r2, r2, #0x10 + mov r8, r2 + lsls r7, r0, #0x10 +_080B94B2: + ldr r0, _080B9508 + mov r2, r8 + asrs r1, r2, #0x10 + asrs r2, r7, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080B94EE + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B950C + adds r4, r4, r0 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + strh r5, [r4, #0x2e] + ldrb r1, [r6, #5] + lsrs r1, r1, #4 + lsls r1, r1, #4 + ldrb r2, [r4, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] +_080B94EE: + adds r5, #1 + cmp r5, #3 + ble _080B94B2 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9500: .4byte gUnknown_3005B4C +_080B9504: .4byte gUnknown_3005B48 +_080B9508: .4byte gUnknown_8537298 +_080B950C: .4byte gUnknown_20205AC + thumb_func_end sub_080B947C + + thumb_func_start sub_080B9510 +sub_080B9510: @ 0x080B9510 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _080B953C + cmp r0, #1 + bgt _080B9526 + cmp r0, #0 + beq _080B9530 + b _080B955A +_080B9526: + cmp r0, #2 + beq _080B9548 + cmp r0, #3 + beq _080B954E + b _080B955A +_080B9530: + ldrh r0, [r1, #0x20] + subs r0, #0x10 + strh r0, [r1, #0x20] + ldrh r0, [r1, #0x22] + subs r0, #0xc + b _080B9558 +_080B953C: + ldrh r0, [r1, #0x20] + adds r0, #0x10 + strh r0, [r1, #0x20] + ldrh r0, [r1, #0x22] + subs r0, #0xc + b _080B9558 +_080B9548: + ldrh r0, [r1, #0x20] + subs r0, #0x10 + b _080B9552 +_080B954E: + ldrh r0, [r1, #0x20] + adds r0, #0x10 +_080B9552: + strh r0, [r1, #0x20] + ldrh r0, [r1, #0x22] + adds r0, #0xc +_080B9558: + strh r0, [r1, #0x22] +_080B955A: + ldrh r0, [r1, #0x20] + adds r0, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf8 + bhi _080B9576 + movs r0, #0x22 + ldrsh r2, [r1, r0] + movs r0, #4 + rsbs r0, r0, #0 + cmp r2, r0 + blt _080B9576 + cmp r2, #0xa4 + ble _080B957C +_080B9576: + adds r0, r1, #0 + bl sub_08006E00 +_080B957C: + pop {r0} + bx r0 + thumb_func_end sub_080B9510 + + thumb_func_start sub_080B9580 +sub_080B9580: @ 0x080B9580 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r7, _080B9620 + ldrb r0, [r7] + ldrb r1, [r7, #4] + ldrb r2, [r7, #8] + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080B9616 + mov r0, sp + ldrb r0, [r0] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B9624 + adds r4, r4, r0 + movs r0, #0x10 + ldrsh r5, [r4, r0] + subs r5, #7 + movs r0, #0x12 + ldrsh r6, [r4, r0] + subs r6, #7 + ldr r1, [r7, #0xc] + subs r5, r1, r5 + lsls r5, r5, #4 + ldr r2, [r7, #0x10] + subs r6, r2, r6 + lsls r6, r6, #4 + adds r1, #7 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, #7 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + bl sub_0808E454 + ldr r0, _080B9628 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B962C + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r1 + ldrb r0, [r4, #4] + strh r0, [r2, #0xa] + ldr r3, _080B9630 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x20] + adds r0, r0, r5 + strh r0, [r2, #0xc] + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x22] + adds r0, r0, r6 + strh r0, [r2, #0xe] + ldr r0, [r7, #0x14] + strh r0, [r2, #0x18] + mov r0, sp + ldrb r0, [r0] + strh r0, [r2, #0x1a] +_080B9616: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B9620: .4byte gUnknown_20388A8 +_080B9624: .4byte gUnknown_2036FF0 +_080B9628: .4byte sub_080B9634 +_080B962C: .4byte gUnknown_3005B60 +_080B9630: .4byte gUnknown_20205AC + thumb_func_end sub_080B9580 + + thumb_func_start sub_080B9634 +sub_080B9634: @ 0x080B9634 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _080B9660 + adds r5, r0, r1 + movs r0, #2 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080B9664 + adds r6, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080B9668 + cmp r0, #1 + beq _080B96A6 + b _080B9704 + .align 2, 0 +_080B9660: .4byte gUnknown_3005B68 +_080B9664: .4byte gUnknown_20205AC +_080B9668: + ldrh r0, [r6, #0x20] + lsls r0, r0, #4 + strh r0, [r5, #8] + ldrh r0, [r6, #0x22] + lsls r0, r0, #4 + strh r0, [r5, #0xa] + movs r2, #4 + ldrsh r0, [r5, r2] + lsls r0, r0, #4 + movs r2, #8 + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r2, #0x10 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, #0xc] + movs r1, #6 + ldrsh r0, [r5, r1] + lsls r0, r0, #4 + movs r2, #0xa + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r2, #0x10 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, #0xe] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_080B96A6: + ldrh r1, [r5, #0x10] + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _080B96D4 + subs r0, r1, #1 + strh r0, [r5, #0x10] + ldrh r1, [r5, #0xc] + ldrh r0, [r5, #8] + adds r1, r1, r0 + strh r1, [r5, #8] + ldrh r0, [r5, #0xe] + ldrh r2, [r5, #0xa] + adds r0, r0, r2 + strh r0, [r5, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r6, #0x20] + ldrh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r6, #0x22] + b _080B9704 +_080B96D4: + movs r1, #0x12 + ldrsh r0, [r5, r1] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080B970C + adds r4, r4, r0 + ldrh r0, [r5, #4] + strh r0, [r6, #0x20] + ldrh r0, [r5, #6] + strh r0, [r6, #0x22] + adds r0, r4, #0 + bl sub_0808E56C + ldrb r0, [r4] + movs r1, #8 + orrs r0, r1 + strb r0, [r4] + movs r0, #0x42 + bl sub_080B5568 + adds r0, r7, #0 + bl sub_080A8964 +_080B9704: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B970C: .4byte gUnknown_2036FF0 + thumb_func_end sub_080B9634 + + thumb_func_start sub_080B9710 +sub_080B9710: @ 0x080B9710 + push {r4, lr} + ldr r4, _080B9740 + movs r0, #0 + strb r0, [r4, #0x15] + ldr r1, _080B9744 + ldrh r2, [r1, #0xa] + ldr r0, _080B9748 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _080B974C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldrb r0, [r4, #0x18] + cmp r0, #0xff + beq _080B973A + bl sub_080A8964 + movs r0, #0xff + strb r0, [r4, #0x18] +_080B973A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9740: .4byte gUnknown_20397C8 +_080B9744: .4byte 0x040000B0 +_080B9748: .4byte 0x0000C5FF +_080B974C: .4byte 0x00007FFF + thumb_func_end sub_080B9710 + + thumb_func_start sub_080B9750 +sub_080B9750: @ 0x080B9750 + push {r4, lr} + sub sp, #4 + mov r0, sp + movs r4, #0 + strh r4, [r0] + ldr r1, _080B9784 + ldr r2, _080B9788 + bl CpuSet + ldr r0, _080B978C + movs r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + 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, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9784: .4byte gUnknown_20388C8 +_080B9788: .4byte 0x01000780 +_080B978C: .4byte gUnknown_20397C8 + thumb_func_end sub_080B9750 + + thumb_func_start sub_080B9790 +sub_080B9790: @ 0x080B9790 + push {lr} + sub sp, #0xc + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + ldr r0, _080B97B4 + cmp r1, r0 + bne _080B97C4 + ldr r0, _080B97B8 + ldr r1, _080B97BC + str r1, [r0] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + str r1, [r0, #4] + ldr r1, _080B97C0 + b _080B97D4 + .align 2, 0 +_080B97B4: .4byte 0xA2600001 +_080B97B8: .4byte gUnknown_20397C8 +_080B97BC: .4byte gUnknown_20388CA +_080B97C0: .4byte sub_080B988C +_080B97C4: + ldr r0, _080B97F4 + ldr r1, _080B97F8 + str r1, [r0] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + str r1, [r0, #4] + ldr r1, _080B97FC +_080B97D4: + str r1, [r0, #0x10] + adds r1, r0, #0 + ldr r0, [sp, #4] + str r0, [r1, #0xc] + ldr r0, [sp] + str r0, [r1, #8] + mov r0, sp + ldrb r0, [r0, #8] + strb r0, [r1, #0x15] + mov r0, sp + ldrb r0, [r0, #9] + strb r0, [r1, #0x16] + strb r0, [r1, #0x17] + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_080B97F4: .4byte gUnknown_20397C8 +_080B97F8: .4byte gUnknown_20388CC +_080B97FC: .4byte sub_080B98AC + thumb_func_end sub_080B9790 + + thumb_func_start sub_080B9800 +sub_080B9800: @ 0x080B9800 + push {r4, lr} + ldr r4, _080B9830 + ldrb r0, [r4, #0x15] + cmp r0, #0 + beq _080B987A + cmp r0, #3 + bne _080B9844 + movs r0, #0 + strb r0, [r4, #0x15] + ldr r1, _080B9834 + ldrh r2, [r1, #0xa] + ldr r0, _080B9838 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _080B983C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldr r1, _080B9840 + movs r0, #1 + strb r0, [r1] + b _080B987A + .align 2, 0 +_080B9830: .4byte gUnknown_20397C8 +_080B9834: .4byte 0x040000B0 +_080B9838: .4byte 0x0000C5FF +_080B983C: .4byte 0x00007FFF +_080B9840: .4byte gUnknown_20397E4 +_080B9844: + ldr r1, _080B9880 + ldrh r2, [r1, #0xa] + ldr r0, _080B9884 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _080B9888 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + ldr r0, [r4, #8] + str r0, [r1, #4] + ldr r0, [r4, #0xc] + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, [r4, #0x10] + bl _call_via_r0 + ldrb r0, [r4, #0x14] + movs r1, #1 + eors r0, r1 + strb r0, [r4, #0x14] +_080B987A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080B9880: .4byte 0x040000B0 +_080B9884: .4byte 0x0000C5FF +_080B9888: .4byte 0x00007FFF + thumb_func_end sub_080B9800 + + thumb_func_start sub_080B988C +sub_080B988C: @ 0x080B988C + ldr r0, _080B98A4 + ldr r2, [r0, #8] + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080B98A8 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080B98A4: .4byte gUnknown_20397C8 +_080B98A8: .4byte gUnknown_20388C8 + thumb_func_end sub_080B988C + + thumb_func_start sub_080B98AC +sub_080B98AC: @ 0x080B98AC + ldr r0, _080B98C4 + ldr r2, [r0, #8] + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + ldr r1, _080B98C8 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_080B98C4: .4byte gUnknown_20397C8 +_080B98C8: .4byte gUnknown_20388C8 + thumb_func_end sub_080B98AC + + thumb_func_start sub_080B98CC +sub_080B98CC: @ 0x080B98CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + movs r6, #0 + ldr r0, _080B98F4 + ldrb r0, [r0] + cmp r0, #0 + beq _080B98FC + mov r0, ip + bl sub_080A8964 + ldr r1, _080B98F8 + movs r0, #0xff + strb r0, [r1, #0x18] + b _080B9A7C + .align 2, 0 +_080B98F4: .4byte gUnknown_20397E4 +_080B98F8: .4byte gUnknown_20397C8 +_080B98FC: + ldr r1, _080B9928 + mov r0, ip + lsls r2, r0, #2 + adds r0, r2, r0 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r4, #0x16 + ldrsh r0, [r3, r4] + mov sl, r1 + mov sb, r2 + cmp r0, #0 + beq _080B99A8 + movs r1, #0x14 + ldrsh r0, [r3, r1] + cmp r0, #0xe + bhi _080B99A8 + lsls r0, r0, #2 + ldr r1, _080B992C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B9928: .4byte gUnknown_3005B60 +_080B992C: .4byte _080B9930 +_080B9930: @ jump table + .4byte _080B996C @ case 0 + .4byte _080B99A8 @ case 1 + .4byte _080B9974 @ case 2 + .4byte _080B99A8 @ case 3 + .4byte _080B997C @ case 4 + .4byte _080B99A8 @ case 5 + .4byte _080B9984 @ case 6 + .4byte _080B99A8 @ case 7 + .4byte _080B998C @ case 8 + .4byte _080B99A8 @ case 9 + .4byte _080B9994 @ case 10 + .4byte _080B99A8 @ case 11 + .4byte _080B999C @ case 12 + .4byte _080B99A8 @ case 13 + .4byte _080B99A4 @ case 14 +_080B996C: + ldr r0, _080B9970 + b _080B99A6 + .align 2, 0 +_080B9970: .4byte gUnknown_2022AC8 +_080B9974: + ldr r0, _080B9978 + b _080B99A6 + .align 2, 0 +_080B9978: .4byte gUnknown_2022ACA +_080B997C: + ldr r0, _080B9980 + b _080B99A6 + .align 2, 0 +_080B9980: .4byte gUnknown_2022ACC +_080B9984: + ldr r0, _080B9988 + b _080B99A6 + .align 2, 0 +_080B9988: .4byte gUnknown_2022ACE +_080B998C: + ldr r0, _080B9990 + b _080B99A6 + .align 2, 0 +_080B9990: .4byte gUnknown_2022AD0 +_080B9994: + ldr r0, _080B9998 + b _080B99A6 + .align 2, 0 +_080B9998: .4byte gUnknown_2022AD2 +_080B999C: + ldr r0, _080B99A0 + b _080B99A6 + .align 2, 0 +_080B99A0: .4byte gUnknown_2022AD4 +_080B99A4: + ldr r0, _080B9A08 +_080B99A6: + ldrh r6, [r0] +_080B99A8: + mov r0, sb + add r0, ip + lsls r0, r0, #3 + mov r2, sl + adds r1, r0, r2 + ldrh r2, [r1, #0x10] + movs r3, #0x10 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _080B9A14 + subs r0, r2, #1 + strh r0, [r1, #0x10] + movs r4, #0xe + ldrsh r0, [r1, r4] + movs r3, #0xa0 + lsls r3, r3, #1 + adds r2, r0, r3 + movs r4, #8 + ldrsh r3, [r1, r4] + movs r4, #0xa + ldrsh r0, [r1, r4] + cmp r3, r0 + bge _080B9A7C + ldr r5, _080B9A0C + ldr r0, _080B9A10 + mov r8, r0 + adds r7, r1, #0 + lsls r0, r2, #1 + adds r4, r0, r5 +_080B99E2: + lsls r2, r3, #1 + mov r0, r8 + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r5 + ldrh r0, [r4] + adds r0, r0, r6 + strh r0, [r2] + adds r4, #2 + adds r3, #1 + movs r1, #0xa + ldrsh r0, [r7, r1] + cmp r3, r0 + blt _080B99E2 + b _080B9A7C + .align 2, 0 +_080B9A08: .4byte gUnknown_2022AD6 +_080B9A0C: .4byte gUnknown_20388C8 +_080B9A10: .4byte gUnknown_20397C8 +_080B9A14: + ldrh r0, [r1, #0x12] + strh r0, [r1, #0x10] + movs r2, #0xe + ldrsh r0, [r1, r2] + movs r3, #0xa0 + lsls r3, r3, #1 + adds r2, r0, r3 + movs r4, #8 + ldrsh r3, [r1, r4] + movs r4, #0xa + ldrsh r0, [r1, r4] + cmp r3, r0 + bge _080B9A5C + ldr r5, _080B9A8C + adds r7, r1, #0 + lsls r0, r2, #1 + adds r4, r0, r5 + ldr r0, _080B9A90 + mov r8, r0 +_080B9A3A: + lsls r2, r3, #1 + mov r0, r8 + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r5 + ldrh r0, [r4] + adds r0, r0, r6 + strh r0, [r2] + adds r4, #2 + adds r3, #1 + movs r1, #0xa + ldrsh r0, [r7, r1] + cmp r3, r0 + blt _080B9A3A +_080B9A5C: + mov r0, sb + add r0, ip + lsls r0, r0, #3 + mov r3, sl + adds r2, r0, r3 + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0xc + ldrsh r1, [r2, r4] + cmp r0, r1 + bne _080B9A7C + movs r0, #0 + strh r0, [r2, #0xe] +_080B9A7C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9A8C: .4byte gUnknown_20388C8 +_080B9A90: .4byte gUnknown_20397C8 + thumb_func_end sub_080B98CC + + thumb_func_start sub_080B9A94 +sub_080B9A94: @ 0x080B9A94 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r1, #0 + movs r2, #0 + ldr r0, _080B9AD8 + mov ip, r0 +_080B9AA8: + lsls r0, r1, #1 + adds r3, r0, r6 + lsls r0, r2, #1 + add r0, ip + movs r7, #0 + ldrsh r0, [r0, r7] + muls r0, r4, r0 + cmp r0, #0 + bge _080B9ABC + adds r0, #0xff +_080B9ABC: + asrs r0, r0, #8 + strh r0, [r3] + adds r0, r2, r5 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xff + bls _080B9AA8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9AD8: .4byte gUnknown_82FA8CC + thumb_func_end sub_080B9A94 + + thumb_func_start sub_080B9ADC +sub_080B9ADC: @ 0x080B9ADC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r5, r0, #0 + str r1, [sp, #0x10] + ldr r0, [sp, #0x40] + mov r8, r0 + ldr r1, [sp, #0x44] + mov sb, r1 + ldr r0, [sp, #0x48] + mov sl, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, [sp, #0x10] + lsls r1, r1, #0x18 + str r1, [sp, #0x14] + lsrs r0, r1, #0x18 + str r0, [sp, #0xc] + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsls r2, r3, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov r3, sb + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + bl sub_080B9750 + ldr r0, _080B9BE8 + add r0, sb + str r0, [sp] + ldr r0, _080B9BEC + str r0, [sp, #4] + mov r1, sp + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + movs r1, #0 + strb r1, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _080B9BF0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080B9BF4 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r5, [r4, #8] + mov r3, sp + ldrh r3, [r3, #0xc] + strh r3, [r4, #0xa] + movs r0, #0x80 + lsls r0, 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, sb + strh r3, [r4, #0x14] + mov r0, sl + strh r0, [r4, #0x16] + ldr r0, _080B9BF8 + strb r7, [r0, #0x18] + ldr r0, _080B9BFC + movs r1, #0 + strb r1, [r0] + ldr r4, _080B9C00 + ldr r3, [sp, #0xc] + subs r6, r3, r5 + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + bl sub_080B9A94 + ldr r0, [sp, #0xc] + cmp r5, r0 + bge _080B9BD6 + ldr r1, _080B9C04 + adds r2, r4, r1 + lsls r1, r5, #1 + movs r3, #0xf0 + lsls r3, r3, #3 + adds r0, r1, r3 + adds r3, r0, r2 + adds r1, r1, r2 + adds r2, r4, #0 + adds r5, r6, #0 +_080B9BC2: + ldrh r0, [r2] + strh r0, [r1] + ldrh r0, [r2] + strh r0, [r3] + adds r2, #2 + adds r3, #2 + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bne _080B9BC2 +_080B9BD6: + adds r0, r7, #0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080B9BE8: .4byte 0x04000010 +_080B9BEC: .4byte 0xA2600001 +_080B9BF0: .4byte sub_080B98CC +_080B9BF4: .4byte gUnknown_3005B60 +_080B9BF8: .4byte gUnknown_20397C8 +_080B9BFC: .4byte gUnknown_20397E4 +_080B9C00: .4byte gUnknown_2038B48 +_080B9C04: .4byte 0xFFFFFD80 + thumb_func_end sub_080B9ADC + + thumb_func_start sub_080B9C08 +sub_080B9C08: @ 0x080B9C08 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B9C08 + + thumb_func_start sub_080B9C20 +sub_080B9C20: @ 0x080B9C20 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080B9C20 + + thumb_func_start sub_080B9C34 +sub_080B9C34: @ 0x080B9C34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r1, _080B9C58 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xb + bhi _080B9C90 + lsls r0, r0, #2 + ldr r1, _080B9C5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080B9C58: .4byte gUnknown_3002360 +_080B9C5C: .4byte _080B9C60 +_080B9C60: @ jump table + .4byte _080B9C90 @ case 0 + .4byte _080B9CA4 @ case 1 + .4byte _080B9DF4 @ case 2 + .4byte _080B9E14 @ case 3 + .4byte _080B9E38 @ case 4 + .4byte _080B9E70 @ case 5 + .4byte _080B9E80 @ case 6 + .4byte _080B9E98 @ case 7 + .4byte _080B9EA0 @ case 8 + .4byte _080B9EB8 @ case 9 + .4byte _080B9ECC @ case 10 + .4byte _080B9F64 @ case 11 +_080B9C90: + movs r0, #0 + bl sub_080006F0 + ldr r1, _080B9CA0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080B9F4C + .align 2, 0 +_080B9CA0: .4byte gUnknown_3002360 +_080B9CA4: + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r1, sp, #8 + mov r8, r1 + add r2, sp, #4 + movs r6, #0 + ldr r1, _080B9DE4 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _080B9DE8 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_080B9CC2: + strh r6, [r2] + add r0, sp, #4 + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _080B9CC2 + strh r6, [r2] + add r2, sp, #4 + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #8] + ldr r2, _080B9DE4 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + add r0, sp, #4 + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080B9DEC + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, _080B9DF0 + bl sub_08003090 + bl sub_08004480 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #1 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x23 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc1 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #4 + bl sub_08001144 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + b _080B9F44 + .align 2, 0 +_080B9DE4: .4byte 0x040000D4 +_080B9DE8: .4byte 0x81000800 +_080B9DEC: .4byte gUnknown_8537414 +_080B9DF0: .4byte gUnknown_85373FC +_080B9DF4: + bl sub_080A133C + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + ldr r1, _080B9E10 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080B9F4C + .align 2, 0 +_080B9E10: .4byte gUnknown_3002360 +_080B9E14: + ldr r0, _080B9E34 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + movs r3, #0xd1 + lsls r3, r3, #1 + movs r0, #1 + bl sub_0800195C + b _080B9F44 + .align 2, 0 +_080B9E34: .4byte gUnknown_3005AF0 +_080B9E38: + ldr r0, _080B9E64 + movs r1, #0 + movs r2, #2 + bl sub_080A1200 + ldr r0, _080B9E68 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r0, [r0, #4] + movs r1, #0x70 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080B9E6C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080B9F4C + .align 2, 0 +_080B9E64: .4byte gUnknown_853741C +_080B9E68: .4byte gUnknown_3005AF0 +_080B9E6C: .4byte gUnknown_3002360 +_080B9E70: + ldr r0, _080B9E7C + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + b _080B9F44 + .align 2, 0 +_080B9E7C: .4byte gUnknown_85372B0 +_080B9E80: + movs r0, #0 + bl sub_0800365C + bl sub_080BA800 + ldr r1, _080B9E94 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080B9F4C + .align 2, 0 +_080B9E94: .4byte gUnknown_3002360 +_080B9E98: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _080B9F4C +_080B9EA0: + movs r0, #1 + bl sub_0800365C + bl sub_080BA834 + ldr r1, _080B9EC8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080B9EB8: + bl sub_080BA890 + ldr r1, _080B9EC8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080B9F4C + .align 2, 0 +_080B9EC8: .4byte gUnknown_3002360 +_080B9ECC: + ldr r0, _080B9F54 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080B9F58 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _080B9F5C + ldr r2, [r0] + ldrb r0, [r2, #0x14] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + strh r0, [r4, #0xa] + ldrb r1, [r2, #0x15] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + strh r1, [r4, #0xc] + ldrb r1, [r2, #0x15] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1f + strh r1, [r4, #0xe] + ldrb r1, [r2, #0x15] + lsls r1, r1, #0x1f + lsrs r1, r1, #0x1f + strh r1, [r4, #0x10] + ldrb r1, [r2, #0x13] + strh r1, [r4, #0x12] + ldrb r1, [r2, #0x14] + lsrs r1, r1, #3 + strh r1, [r4, #0x14] + bl sub_080BA390 + ldrb r0, [r4, #0xc] + bl sub_080BA40C + ldrb r0, [r4, #0xe] + bl sub_080BA490 + ldrb r0, [r4, #0x10] + bl sub_080BA51C + ldrb r0, [r4, #0x12] + bl sub_080BA780 + ldrb r0, [r4, #0x14] + bl sub_080BA634 + ldrb r0, [r4, #8] + bl sub_080BA290 + movs r0, #1 + movs r1, #3 + bl sub_08003528 +_080B9F44: + ldr r1, _080B9F60 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_080B9F4C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080B9F80 + .align 2, 0 +_080B9F54: .4byte sub_080B9F94 +_080B9F58: .4byte gUnknown_3005B60 +_080B9F5C: .4byte gUnknown_3005AF0 +_080B9F60: .4byte gUnknown_3002360 +_080B9F64: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080B9F8C + bl sub_080006F0 + ldr r0, _080B9F90 + bl sub_08000540 +_080B9F80: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080B9F8C: .4byte sub_080B9C20 +_080B9F90: .4byte sub_080B9C08 + thumb_func_end sub_080B9C34 + + thumb_func_start sub_080B9F94 +sub_080B9F94: @ 0x080B9F94 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080B9FB8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080B9FB4 + ldr r0, _080B9FBC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080B9FC0 + str r0, [r1] +_080B9FB4: + pop {r0} + bx r0 + .align 2, 0 +_080B9FB8: .4byte gUnknown_2037C74 +_080B9FBC: .4byte gUnknown_3005B60 +_080B9FC0: .4byte sub_080B9FC4 + thumb_func_end sub_080B9F94 + + thumb_func_start sub_080B9FC4 +sub_080B9FC4: @ 0x080B9FC4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080B9FEC + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080B9FF4 + ldr r0, _080B9FF0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #6 + beq _080B9FEA + b _080BA1B2 +_080B9FEA: + b _080BA006 + .align 2, 0 +_080B9FEC: .4byte gUnknown_3002360 +_080B9FF0: .4byte gUnknown_3005B60 +_080B9FF4: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080BA014 + ldr r0, _080BA00C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 +_080BA006: + ldr r0, _080BA010 + str r0, [r1] + b _080BA1B2 + .align 2, 0 +_080BA00C: .4byte gUnknown_3005B60 +_080BA010: .4byte sub_080BA1BC +_080BA014: + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _080BA044 + ldr r1, _080BA03C + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r5, [r3, #8] + movs r6, #8 + ldrsh r0, [r3, r6] + adds r7, r1, #0 + cmp r0, #0 + ble _080BA040 + subs r0, r5, #1 + b _080BA064 + .align 2, 0 +_080BA03C: .4byte gUnknown_3005B60 +_080BA040: + movs r0, #6 + b _080BA064 +_080BA044: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BA07C + ldr r1, _080BA068 + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r5, [r3, #8] + movs r7, #8 + ldrsh r0, [r3, r7] + adds r7, r1, #0 + cmp r0, #5 + bgt _080BA06C + adds r0, r5, #1 +_080BA064: + strh r0, [r3, #8] + b _080BA06E + .align 2, 0 +_080BA068: .4byte gUnknown_3005B60 +_080BA06C: + strh r6, [r3, #8] +_080BA06E: + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrb r0, [r0, #8] + bl sub_080BA290 + b _080BA1B2 +_080BA07C: + ldr r0, _080BA09C + lsls r2, r4, #2 + adds r1, r2, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #8 + ldrsh r1, [r1, r3] + adds r7, r0, #0 + cmp r1, #5 + bls _080BA092 + b _080BA1B2 +_080BA092: + lsls r0, r1, #2 + ldr r1, _080BA0A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BA09C: .4byte gUnknown_3005B60 +_080BA0A0: .4byte _080BA0A4 +_080BA0A4: @ jump table + .4byte _080BA0BC @ case 0 + .4byte _080BA0E2 @ case 1 + .4byte _080BA108 @ case 2 + .4byte _080BA12E @ case 3 + .4byte _080BA154 @ case 4 + .4byte _080BA17A @ case 5 +_080BA0BC: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0xa] + adds r0, r5, #0 + bl sub_080BA334 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0xa] + movs r6, #0xa + ldrsh r0, [r4, r6] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA390 + b _080BA19E +_080BA0E2: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0xc] + adds r0, r5, #0 + bl sub_080BA3E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0xc] + movs r7, #0xc + ldrsh r0, [r4, r7] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA40C + b _080BA19E +_080BA108: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0xe] + adds r0, r5, #0 + bl sub_080BA468 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA490 + b _080BA19E +_080BA12E: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0x10] + adds r0, r5, #0 + bl sub_080BA4EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0x10] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA51C + b _080BA19E +_080BA154: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0x12] + adds r0, r5, #0 + bl sub_080BA724 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0x12] + movs r6, #0x12 + ldrsh r0, [r4, r6] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA780 + b _080BA19E +_080BA17A: + adds r4, r2, r4 + lsls r4, r4, #3 + adds r4, r4, r7 + ldrb r5, [r4, #0x14] + adds r0, r5, #0 + bl sub_080BA584 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + strh r0, [r4, #0x14] + movs r7, #0x14 + ldrsh r0, [r4, r7] + cmp r5, r0 + beq _080BA19E + adds r0, r1, #0 + bl sub_080BA634 +_080BA19E: + ldr r1, _080BA1B8 + ldrb r0, [r1] + cmp r0, #0 + beq _080BA1B2 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + movs r1, #2 + bl sub_08003528 +_080BA1B2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA1B8: .4byte gUnknown_20397E8 + thumb_func_end sub_080B9FC4 + + thumb_func_start sub_080BA1BC +sub_080BA1BC: @ 0x080BA1BC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080BA254 + ldr r3, [r6] + ldr r1, _080BA258 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r0, #7 + ldrb r1, [r4, #0xa] + ands r1, r0 + ldrb r2, [r3, #0x14] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x14] + ldr r3, [r6] + movs r5, #1 + ldrb r1, [r4, #0xc] + ands r1, r5 + lsls r1, r1, #2 + ldrb r2, [r3, #0x15] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x15] + ldr r3, [r6] + ldrb r1, [r4, #0xe] + ands r1, r5 + lsls r1, r1, #1 + ldrb r2, [r3, #0x15] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x15] + ldr r3, [r6] + ldrb r1, [r4, #0x10] + ands r1, r5 + ldrb r2, [r3, #0x15] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x15] + ldr r1, [r6] + ldrh r0, [r4, #0x12] + movs r5, #0 + strb r0, [r1, #0x13] + ldr r3, [r6] + ldrb r1, [r4, #0x14] + lsls r1, r1, #3 + ldrb r2, [r3, #0x14] + movs r0, #7 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x14] + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BA25C + str r0, [r4] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BA254: .4byte gUnknown_3005AF0 +_080BA258: .4byte gUnknown_3005B60 +_080BA25C: .4byte sub_080BA260 + thumb_func_end sub_080BA1BC + + thumb_func_start sub_080BA260 +sub_080BA260: @ 0x080BA260 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BA288 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BA284 + adds r0, r2, #0 + bl sub_080A8964 + bl sub_080034D4 + ldr r0, _080BA28C + ldr r0, [r0, #8] + bl sub_08000540 +_080BA284: + pop {r0} + bx r0 + .align 2, 0 +_080BA288: .4byte gUnknown_2037C74 +_080BA28C: .4byte gUnknown_3002360 + thumb_func_end sub_080BA260 + + thumb_func_start sub_080BA290 +sub_080BA290: @ 0x080BA290 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0x87 + lsls r1, r1, #5 + movs r0, #0x40 + bl sub_08001144 + lsls r4, r4, #4 + adds r1, r4, #0 + adds r1, #0x28 + lsls r1, r1, #8 + adds r4, #0x38 + orrs r1, r4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BA290 + + thumb_func_start sub_080BA2C0 +sub_080BA2C0: @ 0x080BA2C0 + push {r4, r5, r6, lr} + sub sp, #0x1c + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r2, #0 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + beq _080BA2F8 +_080BA2DC: + mov r0, sp + adds r0, r0, r2 + adds r0, #0xc + strb r1, [r0] + adds r4, #1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + beq _080BA2F8 + cmp r2, #0xe + bls _080BA2DC +_080BA2F8: + cmp r3, #0 + beq _080BA306 + add r1, sp, #0xc + movs r0, #4 + strb r0, [r1, #2] + movs r0, #5 + strb r0, [r1, #5] +_080BA306: + mov r1, sp + adds r1, r1, r2 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + adds r0, r5, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + add r2, sp, #0xc + adds r3, r6, #0 + bl sub_0800449C + add sp, #0x1c + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080BA2C0 + + thumb_func_start sub_080BA334 +sub_080BA334: @ 0x080BA334 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080BA354 + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080BA360 + cmp r3, #1 + bhi _080BA358 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _080BA35A + .align 2, 0 +_080BA354: .4byte gUnknown_3002360 +_080BA358: + movs r3, #0 +_080BA35A: + ldr r1, _080BA378 + movs r0, #1 + strb r0, [r1] +_080BA360: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080BA384 + cmp r3, #0 + beq _080BA37C + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _080BA37E + .align 2, 0 +_080BA378: .4byte gUnknown_20397E8 +_080BA37C: + movs r3, #2 +_080BA37E: + ldr r1, _080BA38C + movs r0, #1 + strb r0, [r1] +_080BA384: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_080BA38C: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA334 + + thumb_func_start sub_080BA390 +sub_080BA390: @ 0x080BA390 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r0, _080BA3D8 + mov r1, sp + ldrb r3, [r1] + movs r1, #0x68 + bl sub_080BA2C0 + ldr r0, _080BA3DC + mov r1, sp + ldrb r3, [r1, #1] + movs r1, #0x88 + movs r2, #0 + bl sub_080BA2C0 + ldr r0, _080BA3E0 + mov r1, sp + ldrb r3, [r1, #2] + movs r1, #0xa8 + movs r2, #0 + bl sub_080BA2C0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080BA3D8: .4byte gUnknown_853736C +_080BA3DC: .4byte gUnknown_8537376 +_080BA3E0: .4byte gUnknown_8537380 + thumb_func_end sub_080BA390 + + thumb_func_start sub_080BA3E4 +sub_080BA3E4: @ 0x080BA3E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BA404 + ldrh r1, [r0, #0x2e] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _080BA3FE + movs r1, #1 + eors r2, r1 + ldr r0, _080BA408 + strb r1, [r0] +_080BA3FE: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_080BA404: .4byte gUnknown_3002360 +_080BA408: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA3E4 + + thumb_func_start sub_080BA40C +sub_080BA40C: @ 0x080BA40C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + strb r2, [r1] + strb r2, [r1, #1] + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r4, _080BA460 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0] + adds r0, r4, #0 + movs r1, #0x68 + bl sub_080BA2C0 + ldr r4, _080BA464 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0, #1] + adds r0, r4, #0 + movs r1, #0xa8 + bl sub_080BA2C0 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA460: .4byte gUnknown_853738A +_080BA464: .4byte gUnknown_8537393 + thumb_func_end sub_080BA40C + + thumb_func_start sub_080BA468 +sub_080BA468: @ 0x080BA468 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BA488 + ldrh r1, [r0, #0x2e] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _080BA482 + movs r1, #1 + eors r2, r1 + ldr r0, _080BA48C + strb r1, [r0] +_080BA482: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_080BA488: .4byte gUnknown_3002360 +_080BA48C: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA468 + + thumb_func_start sub_080BA490 +sub_080BA490: @ 0x080BA490 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + strb r2, [r1] + strb r2, [r1, #1] + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r4, _080BA4E4 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0] + adds r0, r4, #0 + movs r1, #0x68 + bl sub_080BA2C0 + ldr r4, _080BA4E8 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0, #1] + adds r0, r4, #0 + movs r1, #0xa0 + bl sub_080BA2C0 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA4E4: .4byte gUnknown_853739D +_080BA4E8: .4byte gUnknown_85373A8 + thumb_func_end sub_080BA490 + + thumb_func_start sub_080BA4EC +sub_080BA4EC: @ 0x080BA4EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080BA514 + ldrh r1, [r0, #0x2e] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _080BA50C + movs r4, #1 + eors r5, r4 + adds r0, r5, #0 + bl SetPokemonCryStereo + ldr r0, _080BA518 + strb r4, [r0] +_080BA50C: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080BA514: .4byte gUnknown_3002360 +_080BA518: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA4EC + + thumb_func_start sub_080BA51C +sub_080BA51C: @ 0x080BA51C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + strb r2, [r1] + strb r2, [r1, #1] + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r4, _080BA57C + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0] + adds r0, r4, #0 + movs r1, #0x68 + bl sub_080BA2C0 + ldr r4, _080BA580 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0, #1] + adds r0, r4, #0 + movs r1, #0xa0 + bl sub_080BA2C0 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA57C: .4byte gUnknown_85373B3 +_080BA580: .4byte gUnknown_85373BE + thumb_func_end sub_080BA51C + + thumb_func_start sub_080BA584 +sub_080BA584: @ 0x080BA584 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BA5A4 + ldrh r1, [r0, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080BA5D6 + cmp r4, #0x12 + bhi _080BA5A8 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _080BA5AA + .align 2, 0 +_080BA5A4: .4byte gUnknown_3002360 +_080BA5A8: + movs r4, #0 +_080BA5AA: + adds r0, r4, #0 + bl sub_080980E0 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + movs r3, #0xd1 + lsls r3, r3, #1 + movs r0, #1 + bl sub_0800195C + adds r0, r4, #0 + bl sub_080980E0 + ldr r0, [r0, #4] + movs r1, #0x70 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080BA5F0 + movs r0, #1 + strb r0, [r1] +_080BA5D6: + ldr r0, _080BA5F4 + ldrh r1, [r0, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080BA626 + cmp r4, #0 + beq _080BA5F8 + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _080BA5FA + .align 2, 0 +_080BA5F0: .4byte gUnknown_20397E8 +_080BA5F4: .4byte gUnknown_3002360 +_080BA5F8: + movs r4, #0x13 +_080BA5FA: + adds r0, r4, #0 + bl sub_080980E0 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + movs r3, #0xd1 + lsls r3, r3, #1 + movs r0, #1 + bl sub_0800195C + adds r0, r4, #0 + bl sub_080980E0 + ldr r0, [r0, #4] + movs r1, #0x70 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080BA630 + movs r0, #1 + strb r0, [r1] +_080BA626: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080BA630: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA584 + + thumb_func_start sub_080BA634 +sub_080BA634: @ 0x080BA634 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r7, r0, #0x18 + movs r5, #0 + ldr r1, _080BA6A8 + ldrb r0, [r1] + ldr r2, _080BA6AC + mov r8, r2 + cmp r0, #0xff + beq _080BA672 + adds r2, r1, #0 +_080BA656: + mov r0, sp + adds r1, r0, r5 + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _080BA672 + cmp r5, #5 + bls _080BA656 +_080BA672: + adds r0, r7, #0 + movs r1, #0xa + bl __udivsi3 + adds r2, r0, #0 + lsls r0, r2, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _080BA6B0 + mov r0, sp + adds r1, r0, r5 + adds r0, r2, #0 + adds r0, #0xa1 + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r1, sp + adds r4, r1, r5 + adds r0, r7, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r4] + b _080BA6CC + .align 2, 0 +_080BA6A8: .4byte gUnknown_85373D3 +_080BA6AC: .4byte gUnknown_85373C9 +_080BA6B0: + mov r2, sp + adds r4, r2, r5 + adds r0, r7, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r1, sp + adds r0, r1, r5 + strb r6, [r0] +_080BA6CC: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r2, sp + adds r1, r2, r5 + movs r0, #0xff + strb r0, [r1] + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, r8 + movs r1, #0x68 + movs r3, #0 + bl sub_080BA2C0 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + movs r1, #0x80 + movs r3, #1 + bl sub_080BA2C0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BA634 + + thumb_func_start sub_080BA724 +sub_080BA724: @ 0x080BA724 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080BA744 + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080BA750 + cmp r3, #1 + bhi _080BA748 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _080BA74A + .align 2, 0 +_080BA744: .4byte gUnknown_3002360 +_080BA748: + movs r3, #0 +_080BA74A: + ldr r1, _080BA768 + movs r0, #1 + strb r0, [r1] +_080BA750: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080BA774 + cmp r3, #0 + beq _080BA76C + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _080BA76E + .align 2, 0 +_080BA768: .4byte gUnknown_20397E8 +_080BA76C: + movs r3, #2 +_080BA76E: + ldr r1, _080BA77C + movs r0, #1 + strb r0, [r1] +_080BA774: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_080BA77C: .4byte gUnknown_20397E8 + thumb_func_end sub_080BA724 + + thumb_func_start sub_080BA780 +sub_080BA780: @ 0x080BA780 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + strb r2, [r1] + strb r2, [r1, #1] + strb r2, [r1, #2] + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r4, _080BA7F4 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x1a + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0] + adds r0, r4, #0 + movs r1, #0x68 + bl sub_080BA2C0 + ldr r4, _080BA7F8 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x1a + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0, #1] + adds r0, r4, #0 + movs r1, #0x90 + bl sub_080BA2C0 + ldr r4, _080BA7FC + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x1a + lsrs r2, r2, #0x18 + mov r0, sp + ldrb r3, [r0, #2] + adds r0, r4, #0 + movs r1, #0xa8 + bl sub_080BA2C0 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA7F4: .4byte gUnknown_85373DA +_080BA7F8: .4byte gUnknown_85373E5 +_080BA7FC: .4byte gUnknown_85373EE + thumb_func_end sub_080BA780 + + thumb_func_start sub_080BA800 +sub_080BA800: @ 0x080BA800 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _080BA830 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_080BA830: .4byte gUnknown_8537310 + thumb_func_end sub_080BA800 + + thumb_func_start sub_080BA834 +sub_080BA834: @ 0x080BA834 + push {r4, lr} + sub sp, #0xc + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + movs r4, #0 +_080BA842: + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + adds r1, r4, #0 + muls r1, r0, r1 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080BA88C + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r2, [r0] + str r1, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #8 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080BA842 + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BA88C: .4byte gUnknown_8537350 + thumb_func_end sub_080BA834 + + thumb_func_start sub_080BA890 +sub_080BA890: @ 0x080BA890 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r5, #7 + str r5, [sp, #8] + movs r0, #1 + movs r1, #0xd1 + lsls r1, r1, #1 + movs r2, #1 + movs r3, #0 + bl sub_080026E0 + movs r0, #0x1b + mov r8, r0 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BA9FC + movs r2, #2 + movs r3, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0xd2 + lsls r1, r1, #1 + movs r2, #0x1c + movs r3, #0 + bl sub_080026E0 + str r4, [sp] + movs r6, #2 + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BAA00 + movs r2, #1 + movs r3, #1 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BAA04 + movs r2, #0x1c + movs r3, #1 + bl sub_080026E0 + movs r7, #0xd4 + lsls r7, r7, #1 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + adds r1, r7, #0 + movs r2, #1 + movs r3, #3 + bl sub_080026E0 + ldr r0, _080BAA08 + mov sl, r0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + mov r1, sl + movs r2, #2 + movs r3, #3 + bl sub_080026E0 + movs r0, #0xd5 + lsls r0, r0, #1 + mov sb, r0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + mov r1, sb + movs r2, #0x1c + movs r3, #3 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0xd1 + lsls r1, r1, #1 + movs r2, #1 + movs r3, #4 + bl sub_080026E0 + movs r0, #0x1a + mov r8, r0 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BA9FC + movs r2, #2 + movs r3, #4 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0xd2 + lsls r1, r1, #1 + movs r2, #0x1c + movs r3, #4 + bl sub_080026E0 + str r4, [sp] + movs r6, #0x12 + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BAA00 + movs r2, #1 + movs r3, #5 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + ldr r1, _080BAA04 + movs r2, #0x1c + movs r3, #5 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + adds r1, r7, #0 + movs r2, #1 + movs r3, #0x13 + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + mov r1, sl + movs r2, #2 + movs r3, #0x13 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + mov r1, sb + movs r2, #0x1c + movs r3, #0x13 + bl sub_080026E0 + movs r0, #1 + bl sub_08002248 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BA9FC: .4byte 0x000001A3 +_080BAA00: .4byte 0x000001A5 +_080BAA04: .4byte 0x000001A7 +_080BAA08: .4byte 0x000001A9 + thumb_func_end sub_080BA890 + + thumb_func_start sub_080BAA0C +sub_080BAA0C: @ 0x080BAA0C + push {r4, r5, r6, lr} + ldr r0, _080BAA78 + movs r2, #0 + strh r2, [r0] + ldr r1, _080BAA7C + movs r0, #0x40 + strb r0, [r1] + ldr r0, _080BAA80 + strb r2, [r0] + ldr r4, _080BAA84 + ldr r0, [r4] + movs r1, #0 + strb r2, [r0, #0x19] + ldr r0, [r4] + strb r2, [r0, #0x18] + ldr r0, [r4] + strb r2, [r0, #0x1a] + ldr r0, [r4] + strb r2, [r0, #0x1b] + ldr r0, [r4] + str r1, [r0, #0x1c] + str r1, [r0, #0x20] + str r1, [r0, #0x24] + bl sub_0809CC98 + movs r1, #0 + movs r2, #0 + ldr r3, _080BAA88 + ldr r6, _080BAA8C + ldr r5, _080BAA90 +_080BAA48: + ldr r0, [r4] + adds r0, #0x28 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r0, #0x5c + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r0, r0, r6 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r3] + adds r0, r0, r5 + adds r0, r0, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x33 + bls _080BAA48 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BAA78: .4byte gUnknown_20397F0 +_080BAA7C: .4byte gUnknown_20397F2 +_080BAA80: .4byte gUnknown_3005E10 +_080BAA84: .4byte gUnknown_3005AF0 +_080BAA88: .4byte gUnknown_3005AEC +_080BAA8C: .4byte 0x00000988 +_080BAA90: .4byte 0x00003B24 + thumb_func_end sub_080BAA0C + + thumb_func_start sub_080BAA94 +sub_080BAA94: @ 0x080BAA94 + ldr r1, _080BAAA4 + movs r0, #0 + strh r0, [r1] + ldr r1, _080BAAA8 + movs r0, #0x40 + strb r0, [r1] + bx lr + .align 2, 0 +_080BAAA4: .4byte gUnknown_20397F0 +_080BAAA8: .4byte gUnknown_20397F2 + thumb_func_end sub_080BAA94 + + thumb_func_start sub_080BAAAC +sub_080BAAAC: @ 0x080BAAAC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BAAAC + + thumb_func_start sub_080BAAC0 +sub_080BAAC0: @ 0x080BAAC0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r3, #0 + ldr r0, _080BAC34 + adds r7, r0, #0 + movs r1, #2 + rsbs r1, r1, #0 + mov ip, r1 + movs r6, #3 + rsbs r6, r6, #0 + ldr r5, _080BAC38 +_080BAAD6: + lsls r1, r3, #2 + adds r1, r4, r1 + ldrh r0, [r1] + orrs r0, r7 + strh r0, [r1] + ldrb r2, [r1, #2] + mov r0, ip + ands r0, r2 + ands r0, r6 + strb r0, [r1, #2] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r5 + bls _080BAAD6 + movs r2, #0xc1 + lsls r2, r2, #3 + adds r0, r4, r2 + movs r2, #0 + strh r2, [r0] + ldr r0, _080BAC3C + adds r3, r4, r0 + ldrb r1, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldr r1, _080BAC40 + adds r0, r4, r1 + strh r2, [r0] + ldr r3, _080BAC44 + adds r0, r4, r3 + strh r2, [r0] + adds r1, #4 + adds r0, r4, r1 + strh r2, [r0] + adds r3, #4 + adds r0, r4, r3 + strh r2, [r0] + adds r1, #4 + adds r0, r4, r1 + strh r2, [r0] + adds r3, #4 + adds r0, r4, r3 + strh r2, [r0] + adds r1, #4 + adds r0, r4, r1 + strh r2, [r0] + adds r3, #4 + adds r0, r4, r3 + strh r2, [r0] + adds r1, #4 + adds r0, r4, r1 + strh r2, [r0] + movs r3, #0 + ldr r0, _080BAC48 + adds r2, r4, r0 + ldr r1, _080BAC34 + adds r5, r1, #0 +_080BAB52: + lsls r0, r3, #1 + adds r0, r2, r0 + ldrh r1, [r0] + orrs r1, r5 + strh r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _080BAB52 + movs r2, #0xc5 + lsls r2, r2, #3 + adds r0, r4, r2 + movs r2, #0 + movs r1, #0 + strh r1, [r0] + ldr r3, _080BAC4C + adds r0, r4, r3 + strh r1, [r0] + adds r3, #2 + adds r0, r4, r3 + strb r2, [r0] + adds r3, #1 + adds r0, r4, r3 + strb r2, [r0] + adds r3, #1 + adds r0, r4, r3 + strb r2, [r0] + adds r3, #1 + adds r0, r4, r3 + strb r2, [r0] + movs r2, #0xc6 + lsls r2, r2, #3 + adds r0, r4, r2 + strh r1, [r0] + adds r3, #3 + adds r0, r4, r3 + strh r1, [r0] + adds r2, #4 + adds r0, r4, r2 + strh r1, [r0] + adds r3, #4 + adds r0, r4, r3 + strh r1, [r0] + adds r2, #4 + adds r0, r4, r2 + strh r1, [r0] + movs r3, #0 + ldr r0, _080BAC50 + adds r1, r4, r0 + movs r2, #0 +_080BABB8: + lsls r0, r3, #1 + adds r0, r1, r0 + strh r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _080BABB8 + ldr r1, _080BAC54 + adds r0, r4, r1 + movs r1, #0 + strb r1, [r0] + ldr r2, _080BAC58 + adds r0, r4, r2 + strb r1, [r0] + ldr r0, _080BAC5C + adds r3, r4, r0 + ldrb r2, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldr r2, _080BAC60 + adds r0, r4, r2 + strb r1, [r0] + ldr r3, _080BAC64 + adds r0, r4, r3 + strb r1, [r0] + adds r2, #2 + adds r0, r4, r2 + strb r1, [r0] + adds r3, #2 + adds r0, r4, r3 + strh r1, [r0] + adds r2, #3 + adds r0, r4, r2 + strh r1, [r0] + movs r3, #0 + ldr r0, _080BAC68 + adds r1, r4, r0 + movs r2, #0 +_080BAC0A: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #7 + bls _080BAC0A + movs r3, #0 + ldr r2, _080BAC6C + adds r1, r4, r2 + movs r2, #0 +_080BAC20: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #7 + bls _080BAC20 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BAC34: .4byte 0x0000FFFF +_080BAC38: .4byte 0x00000181 +_080BAC3C: .4byte 0x0000060A +_080BAC40: .4byte 0x0000060C +_080BAC44: .4byte 0x0000060E +_080BAC48: .4byte 0x0000061E +_080BAC4C: .4byte 0x0000062A +_080BAC50: .4byte 0x0000063A +_080BAC54: .4byte 0x0000064A +_080BAC58: .4byte 0x0000064B +_080BAC5C: .4byte 0x0000064C +_080BAC60: .4byte 0x0000064D +_080BAC64: .4byte 0x0000064E +_080BAC68: .4byte 0x00000654 +_080BAC6C: .4byte 0x0000065C + thumb_func_end sub_080BAAC0 + + thumb_func_start sub_080BAC70 +sub_080BAC70: @ 0x080BAC70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r0, _080BAD2C + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #1 + beq _080BAD38 + cmp r0, #1 + ble _080BAC94 + cmp r0, #2 + beq _080BAD64 + cmp r0, #3 + bne _080BAC94 + b _080BAE58 +_080BAC94: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080BFF08 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r2, sp, #4 + mov r8, r2 + mov r2, sp + movs r6, #0 + ldr r1, _080BAD30 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _080BAD34 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_080BACBE: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _080BACBE + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r3, ip + orrs r0, r3 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _080BAD30 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _080BAD2C + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + b _080BAE88 + .align 2, 0 +_080BAD2C: .4byte gUnknown_3002360 +_080BAD30: .4byte 0x040000D4 +_080BAD34: .4byte 0x81000800 +_080BAD38: + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_08008424 + ldr r1, _080BAD60 + movs r0, #8 + strb r0, [r1] + bl sub_0818CCF8 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _080BAE88 + .align 2, 0 +_080BAD60: .4byte gUnknown_30030BC +_080BAD64: + ldr r4, _080BADE4 + ldr r0, _080BADE8 + bl sub_08000BDC + str r0, [r4] + bl sub_080BAAC0 + ldr r0, _080BADEC + movs r1, #0 + bl sub_080A8878 + ldr r1, [r4] + ldr r5, _080BADF0 + ldr r0, [r5] + ldrb r0, [r0, #0x19] + ldr r3, _080BADF4 + adds r1, r1, r3 + strh r0, [r1] + bl sub_0809CD04 + adds r1, r0, #0 + cmp r1, #0 + bne _080BAD9A + ldr r0, [r4] + ldr r2, _080BADF4 + adds r0, r0, r2 + strh r1, [r0] +_080BAD9A: + ldr r1, [r4] + ldr r0, [r5] + ldrb r2, [r0, #0x18] + ldr r3, _080BADF8 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _080BADFC + ldrh r2, [r0] + subs r3, #8 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _080BAE00 + ldrb r0, [r0] + ldr r2, _080BAE04 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r4] + adds r3, #0x3f + adds r0, r0, r3 + movs r1, #0 + strb r1, [r0] + bl sub_0809CD04 + cmp r0, #0 + bne _080BAE0C + movs r0, #0 + bl sub_080BFD9C + ldr r1, [r4] + ldr r2, _080BAE08 + adds r1, r1, r2 + strh r0, [r1] + movs r0, #1 + bl sub_080BFD9C + b _080BAE20 + .align 2, 0 +_080BADE4: .4byte gUnknown_20397EC +_080BADE8: .4byte 0x00000664 +_080BADEC: .4byte sub_080BAEC8 +_080BADF0: .4byte gUnknown_3005AF0 +_080BADF4: .4byte 0x00000612 +_080BADF8: .4byte 0x00000616 +_080BADFC: .4byte gUnknown_20397F0 +_080BAE00: .4byte gUnknown_20397F2 +_080BAE04: .4byte 0x0000062C +_080BAE08: .4byte 0x0000061A +_080BAE0C: + movs r0, #0 + bl sub_080BFD4C + ldr r1, [r4] + ldr r2, _080BAE44 + adds r1, r1, r2 + strh r0, [r1] + movs r0, #1 + bl sub_080BFD4C +_080BAE20: + ldr r1, [r4] + ldr r3, _080BAE48 + adds r1, r1, r3 + strh r0, [r1] + ldr r0, _080BAE4C + ldr r0, [r0] + ldr r1, _080BAE50 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] + ldr r1, _080BAE54 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080BAE88 + .align 2, 0 +_080BAE44: .4byte 0x0000061A +_080BAE48: .4byte 0x0000061C +_080BAE4C: .4byte gUnknown_20397EC +_080BAE50: .4byte 0x0000062D +_080BAE54: .4byte gUnknown_3002360 +_080BAE58: + movs r0, #1 + bl sub_08001274 + ldr r0, _080BAE94 + bl sub_080006F0 + ldr r0, _080BAE98 + bl sub_08000540 + ldr r0, _080BAE9C + ldr r1, [r0] + ldr r3, _080BAEA0 + adds r0, r1, r3 + ldrb r0, [r0] + ldr r2, _080BAEA4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_080BC010 + ldr r0, _080BAEA8 + ldr r1, _080BAEAC + movs r2, #0x80 + bl m4aMPlayVolumeControl +_080BAE88: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BAE94: .4byte sub_080BAAAC +_080BAE98: .4byte sub_080BAEB0 +_080BAE9C: .4byte gUnknown_20397EC +_080BAEA0: .4byte 0x00000612 +_080BAEA4: .4byte 0x00000616 +_080BAEA8: .4byte gUnknown_30074D0 +_080BAEAC: .4byte 0x0000FFFF + thumb_func_end sub_080BAC70 + + thumb_func_start sub_080BAEB0 +sub_080BAEB0: @ 0x080BAEB0 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BAEB0 + + thumb_func_start sub_080BAEC8 +sub_080BAEC8: @ 0x080BAEC8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BAF00 + ldr r1, [r0] + ldr r0, _080BAF04 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0 + bl sub_080BBC50 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BAEFA + ldr r0, _080BAF08 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BAF0C + str r0, [r1] +_080BAEFA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BAF00: .4byte gUnknown_20397EC +_080BAF04: .4byte 0x0000064C +_080BAF08: .4byte gUnknown_3005B60 +_080BAF0C: .4byte sub_080BAF10 + thumb_func_end sub_080BAEC8 + + thumb_func_start sub_080BAF10 +sub_080BAF10: @ 0x080BAF10 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _080BAF44 + ldr r0, [r7] + ldr r4, _080BAF48 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r3, [r7] + adds r1, r3, r4 + ldrh r0, [r1] + movs r4, #0 + ldrsh r2, [r1, r4] + mov r8, r2 + cmp r2, #0 + beq _080BAF4C + subs r0, #8 + strh r0, [r1] + b _080BB142 + .align 2, 0 +_080BAF44: .4byte gUnknown_20397EC +_080BAF48: .4byte 0x00000652 +_080BAF4C: + ldr r2, _080BAFC4 + ldrh r1, [r2, #0x2e] + movs r0, #1 + mov sb, r0 + ands r0, r1 + cmp r0, #0 + beq _080BAFE0 + ldr r1, _080BAFC8 + adds r0, r3, r1 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r3, r0 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BAFE0 + bl sub_080BD070 + ldr r4, _080BAFCC + ldr r0, [r7] + ldr r5, _080BAFD0 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + mov r0, sb + lsls r0, r1 + mvns r0, r0 + mov r2, r8 + str r2, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r7] + adds r0, r0, r5 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _080BAFD4 + str r1, [r0] + ldr r1, _080BAFD8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BAFDC + str r1, [r0] + movs r0, #0x15 + b _080BB0B2 + .align 2, 0 +_080BAFC4: .4byte gUnknown_3002360 +_080BAFC8: .4byte 0x0000060E +_080BAFCC: .4byte gUnknown_20205AC +_080BAFD0: .4byte 0x00000626 +_080BAFD4: .4byte sub_080BDC10 +_080BAFD8: .4byte gUnknown_3005B60 +_080BAFDC: .4byte sub_080BB330 +_080BAFE0: + ldrh r2, [r2, #0x2e] + movs r0, #8 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080BB038 + ldr r3, _080BB024 + ldr r1, [r3] + ldr r4, _080BB028 + adds r0, r1, r4 + movs r2, #0 + strh r2, [r0] + ldr r0, _080BB02C + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r0, [r3] + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r0, r1 + strh r2, [r0] + ldr r1, _080BB030 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB034 + str r1, [r0] + movs r0, #5 + bl sub_080A306C + b _080BB142 + .align 2, 0 +_080BB024: .4byte gUnknown_20397EC +_080BB028: .4byte 0x00000652 +_080BB02C: .4byte 0x0000064F +_080BB030: .4byte gUnknown_3005B60 +_080BB034: .4byte sub_080BB1B4 +_080BB038: + movs r0, #4 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080BB0DC + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl sub_080C07B4 + ldr r1, _080BB0BC + lsls r3, r6, #2 + adds r3, r3, r6 + lsls r3, r3, #3 + adds r3, r3, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + strh r0, [r3, #8] + ldr r1, _080BB0C0 + ldr r0, [r1] + ldr r4, _080BB0C4 + adds r0, r0, r4 + strb r2, [r0] + ldr r0, [r1] + ldr r2, _080BB0C8 + adds r1, r0, r2 + ldrb r2, [r1] + subs r4, #0x24 + adds r1, r0, r4 + strh r2, [r1] + ldr r2, _080BB0CC + adds r1, r0, r2 + ldrh r2, [r1] + subs r4, #0x1a + adds r1, r0, r4 + strh r2, [r1] + ldr r2, _080BB0D0 + adds r1, r0, r2 + ldrh r2, [r1] + adds r4, #4 + adds r1, r0, r4 + strh r2, [r1] + ldr r2, _080BB0D4 + adds r1, r0, r2 + ldrh r1, [r1] + adds r4, #4 + adds r0, r0, r4 + strh r1, [r0] + ldr r0, _080BB0D8 + str r0, [r3] + movs r0, #2 +_080BB0B2: + bl sub_080A306C + bl sub_080BBFCC + b _080BB142 + .align 2, 0 +_080BB0BC: .4byte gUnknown_3005B60 +_080BB0C0: .4byte gUnknown_20397EC +_080BB0C4: .4byte 0x0000064E +_080BB0C8: .4byte 0x0000062C +_080BB0CC: .4byte 0x0000060E +_080BB0D0: .4byte 0x00000612 +_080BB0D4: .4byte 0x00000616 +_080BB0D8: .4byte sub_080BB458 +_080BB0DC: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080BB114 + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB10C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB110 + str r1, [r0] + movs r0, #3 + bl sub_080A306C + b _080BB142 + .align 2, 0 +_080BB10C: .4byte gUnknown_3005B60 +_080BB110: .4byte sub_080BB524 +_080BB114: + ldr r5, _080BB150 + ldr r0, [r5] + ldr r4, _080BB154 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xe + bl sub_080BCE3C + ldr r1, [r5] + adds r4, r1, r4 + strh r0, [r4] + ldr r0, _080BB158 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _080BB142 + ldr r0, _080BB15C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BB160 + str r0, [r1] +_080BB142: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BB150: .4byte gUnknown_20397EC +_080BB154: .4byte 0x0000060E +_080BB158: .4byte 0x0000062E +_080BB15C: .4byte gUnknown_3005B60 +_080BB160: .4byte sub_080BB164 + thumb_func_end sub_080BAF10 + + thumb_func_start sub_080BB164 +sub_080BB164: @ 0x080BB164 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BB1A0 + ldr r2, [r0] + ldr r1, _080BB1A4 + adds r0, r2, r1 + ldrb r0, [r0] + ldr r3, _080BB1A8 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, #2 + adds r2, r2, r3 + ldrb r2, [r2] + bl sub_080BCBA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BB198 + ldr r0, _080BB1AC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BB1B0 + str r0, [r1] +_080BB198: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BB1A0: .4byte gUnknown_20397EC +_080BB1A4: .4byte 0x0000062F +_080BB1A8: .4byte 0x00000634 +_080BB1AC: .4byte gUnknown_3005B60 +_080BB1B0: .4byte sub_080BAF10 + thumb_func_end sub_080BB164 + + thumb_func_start sub_080BB1B4 +sub_080BB1B4: @ 0x080BB1B4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r6, _080BB1E4 + ldr r0, [r6] + ldr r4, _080BB1E8 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r3, [r6] + adds r1, r3, r4 + ldrh r2, [r1] + movs r4, #0 + ldrsh r0, [r1, r4] + cmp r0, #0x50 + beq _080BB1EC + adds r0, r2, #0 + adds r0, #8 + strh r0, [r1] + b _080BB324 + .align 2, 0 +_080BB1E4: .4byte gUnknown_20397EC +_080BB1E8: .4byte 0x00000652 +_080BB1EC: + ldr r5, _080BB214 + ldrh r1, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080BB294 + movs r2, #0xca + lsls r2, r2, #3 + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, #1 + beq _080BB218 + cmp r0, #1 + ble _080BB25C + cmp r0, #2 + beq _080BB230 + cmp r0, #3 + beq _080BB270 + b _080BB25C + .align 2, 0 +_080BB214: .4byte gUnknown_3002360 +_080BB218: + ldr r4, _080BB228 + adds r1, r3, r4 + movs r0, #0 + strh r0, [r1] + ldr r0, _080BB22C + adds r1, r3, r0 + movs r0, #0x40 + b _080BB248 + .align 2, 0 +_080BB228: .4byte 0x0000060E +_080BB22C: .4byte 0x0000062C +_080BB230: + ldr r1, _080BB264 + adds r2, r3, r1 + ldrh r0, [r2] + subs r0, #1 + ldr r4, _080BB268 + adds r1, r3, r4 + strh r0, [r1] + ldrh r0, [r2] + lsls r0, r0, #4 + adds r0, #0x30 + ldr r2, _080BB26C + adds r1, r3, r2 +_080BB248: + strb r0, [r1] + bl sub_080BD1E0 + ldr r0, [r6] + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xe + bl sub_080BCA54 + ldrh r1, [r5, #0x2e] +_080BB25C: + movs r0, #8 + orrs r0, r1 + strh r0, [r5, #0x2e] + b _080BB294 + .align 2, 0 +_080BB264: .4byte 0x0000060C +_080BB268: .4byte 0x0000060E +_080BB26C: .4byte 0x0000062C +_080BB270: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB2BC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB2C0 + str r1, [r0] + movs r0, #3 + bl sub_080A306C +_080BB294: + ldr r2, _080BB2C4 + ldrh r1, [r2, #0x2e] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _080BB2D4 + ldr r0, _080BB2C8 + ldr r0, [r0] + ldr r3, _080BB2CC + adds r0, r0, r3 + movs r1, #0 + strb r1, [r0] + ldr r1, _080BB2BC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB2D0 + str r1, [r0] + b _080BB2F2 + .align 2, 0 +_080BB2BC: .4byte gUnknown_3005B60 +_080BB2C0: .4byte sub_080BB524 +_080BB2C4: .4byte gUnknown_3002360 +_080BB2C8: .4byte gUnknown_20397EC +_080BB2CC: .4byte 0x0000064F +_080BB2D0: .4byte sub_080BAF10 +_080BB2D4: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080BB300 + ldr r0, _080BB2FC + ldr r0, [r0] + movs r4, #0xca + lsls r4, r4, #3 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, #0 + beq _080BB300 + subs r0, #1 + strh r0, [r1] +_080BB2F2: + movs r0, #5 + bl sub_080A306C + b _080BB324 + .align 2, 0 +_080BB2FC: .4byte gUnknown_20397EC +_080BB300: + ldrh r1, [r2, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BB324 + ldr r0, _080BB32C + ldr r0, [r0] + movs r2, #0xca + lsls r2, r2, #3 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #2 + bhi _080BB324 + adds r0, #1 + strh r0, [r1] + movs r0, #5 + bl sub_080A306C +_080BB324: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BB32C: .4byte gUnknown_20397EC + thumb_func_end sub_080BB1B4 + + thumb_func_start sub_080BB330 +sub_080BB330: @ 0x080BB330 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _080BB394 + ldr r5, _080BB398 + ldr r3, [r5] + ldr r6, _080BB39C + adds r0, r3, r6 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r2, #0x20 + ldrsh r0, [r1, r2] + cmp r0, #0x30 + bne _080BB38E + movs r2, #0x22 + ldrsh r0, [r1, r2] + cmp r0, #0x38 + bne _080BB38E + ldr r1, _080BB3A0 + adds r0, r3, r1 + ldrb r1, [r0] + ldr r2, _080BB3A4 + adds r0, r3, r2 + strb r1, [r0] + ldr r1, [r5] + subs r2, #0x3d + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r1, r0 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_080BE0C0 + ldr r2, _080BB3A8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #8] + ldr r0, _080BB3AC + str r0, [r1] +_080BB38E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB394: .4byte gUnknown_20205AC +_080BB398: .4byte gUnknown_20397EC +_080BB39C: .4byte 0x00000626 +_080BB3A0: .4byte 0x0000064A +_080BB3A4: .4byte 0x0000064B +_080BB3A8: .4byte gUnknown_3005B60 +_080BB3AC: .4byte sub_080BB3B0 + thumb_func_end sub_080BB330 + + thumb_func_start sub_080BB3B0 +sub_080BB3B0: @ 0x080BB3B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BB40C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _080BB41C + ldr r5, _080BB410 + ldr r0, [r5] + ldr r1, _080BB414 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080BB438 + ldrb r0, [r4, #8] + bl sub_080BE168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BB438 + bl sub_080BD0D0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BB438 + ldr r0, [r5] + ldr r2, _080BB418 + adds r1, r0, r2 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r1, [r4, #8] + bl sub_080BE19C + b _080BB438 + .align 2, 0 +_080BB40C: .4byte gUnknown_3005B60 +_080BB410: .4byte gUnknown_20397EC +_080BB414: .4byte 0x0000064A +_080BB418: .4byte 0x0000060E +_080BB41C: + ldr r2, _080BB440 + ldr r0, _080BB444 + ldr r1, [r0] + ldr r3, _080BB448 + adds r0, r1, r3 + ldrh r0, [r0] + strh r0, [r2] + ldr r2, _080BB44C + ldr r0, _080BB450 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + ldr r0, _080BB454 + str r0, [r4] +_080BB438: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BB440: .4byte gUnknown_20397F0 +_080BB444: .4byte gUnknown_20397EC +_080BB448: .4byte 0x0000060E +_080BB44C: .4byte gUnknown_20397F2 +_080BB450: .4byte 0x0000062C +_080BB454: .4byte sub_080BAEC8 + thumb_func_end sub_080BB3B0 + + thumb_func_start sub_080BB458 +sub_080BB458: @ 0x080BB458 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BB4A0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r6, r1, r2 + movs r0, #8 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r4, [r0, #4] + cmp r4, #0 + bne _080BB506 + bl sub_080BD1E0 + ldr r5, _080BB4A4 + ldr r2, [r5] + ldr r1, _080BB4A8 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080BB4B8 + ldr r3, _080BB4AC + adds r0, r2, r3 + strh r4, [r0] + ldr r0, _080BB4B0 + adds r1, r2, r0 + movs r0, #0x40 + strb r0, [r1] + ldr r0, _080BB4B4 + b _080BB504 + .align 2, 0 +_080BB4A0: .4byte gUnknown_3005B60 +_080BB4A4: .4byte gUnknown_20397EC +_080BB4A8: .4byte 0x0000064E +_080BB4AC: .4byte 0x0000060E +_080BB4B0: .4byte 0x0000062C +_080BB4B4: .4byte sub_080BB5AC +_080BB4B8: + ldr r1, _080BB50C + adds r0, r2, r1 + ldrh r1, [r0] + ldr r3, _080BB510 + adds r0, r2, r3 + strb r1, [r0] + ldr r1, [r5] + movs r2, #0xc2 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrh r2, [r0] + subs r3, #0x1e + adds r0, r1, r3 + strh r2, [r0] + ldr r2, _080BB514 + adds r0, r1, r2 + ldrh r0, [r0] + adds r3, #4 + adds r1, r1, r3 + strh r0, [r1] + bl sub_0809CD04 + adds r1, r0, #0 + cmp r1, #0 + bne _080BB4F2 + ldr r0, [r5] + ldr r2, _080BB518 + adds r0, r0, r2 + strh r1, [r0] +_080BB4F2: + ldr r0, [r5] + movs r3, #0xc3 + lsls r3, r3, #3 + adds r1, r0, r3 + ldrh r1, [r1] + ldr r2, _080BB51C + adds r0, r0, r2 + strh r1, [r0] + ldr r0, _080BB520 +_080BB504: + str r0, [r6] +_080BB506: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB50C: .4byte 0x0000062A +_080BB510: .4byte 0x0000062C +_080BB514: .4byte 0x00000614 +_080BB518: .4byte 0x00000612 +_080BB51C: .4byte 0x00000616 +_080BB520: .4byte sub_080BAEC8 + thumb_func_end sub_080BB458 + + thumb_func_start sub_080BB524 +sub_080BB524: @ 0x080BB524 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080BB58C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BB586 + ldr r4, _080BB590 + ldr r0, [r4] + ldr r5, _080BB594 + ldr r1, [r5] + ldr r2, _080BB598 + adds r1, r1, r2 + ldrh r1, [r1] + strb r1, [r0, #0x19] + bl sub_0809CD04 + adds r1, r0, #0 + cmp r1, #0 + bne _080BB554 + ldr r0, [r4] + strb r1, [r0, #0x19] +_080BB554: + ldr r1, [r4] + ldr r0, [r5] + ldr r2, _080BB59C + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #0x18] + bl sub_080BD1E0 + bl sub_080BBFCC + adds r0, r6, #0 + bl sub_080A8964 + ldr r0, _080BB5A0 + bl sub_08000540 + ldr r0, _080BB5A4 + ldr r1, _080BB5A8 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + ldr r0, [r5] + bl sub_08000BF0 +_080BB586: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BB58C: .4byte gUnknown_2037C74 +_080BB590: .4byte gUnknown_3005AF0 +_080BB594: .4byte gUnknown_20397EC +_080BB598: .4byte 0x00000612 +_080BB59C: .4byte 0x00000616 +_080BB5A0: .4byte sub_08085AFC +_080BB5A4: .4byte gUnknown_30074D0 +_080BB5A8: .4byte 0x0000FFFF + thumb_func_end sub_080BB524 + + thumb_func_start sub_080BB5AC +sub_080BB5AC: @ 0x080BB5AC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BB5E4 + ldr r1, [r0] + ldr r0, _080BB5E8 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + movs r0, #3 + bl sub_080BBC50 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BB5DC + ldr r0, _080BB5EC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BB5F0 + str r0, [r1] +_080BB5DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BB5E4: .4byte gUnknown_20397EC +_080BB5E8: .4byte 0x0000064C +_080BB5EC: .4byte gUnknown_3005B60 +_080BB5F0: .4byte sub_080BB5F4 + thumb_func_end sub_080BB5AC + + thumb_func_start sub_080BB5F4 +sub_080BB5F4: @ 0x080BB5F4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _080BB620 + ldr r0, [r5] + ldr r4, _080BB624 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r3, [r5] + adds r1, r3, r4 + ldrh r0, [r1] + movs r2, #0 + ldrsh r4, [r1, r2] + cmp r4, #0 + beq _080BB628 + subs r0, #8 + strh r0, [r1] + b _080BB7C6 + .align 2, 0 +_080BB620: .4byte gUnknown_20397EC +_080BB624: .4byte 0x00000652 +_080BB628: + ldr r2, _080BB690 + ldrh r1, [r2, #0x2e] + movs r7, #1 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _080BB6AC + ldr r1, _080BB694 + adds r0, r3, r1 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r3, r0 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BB6AC + bl sub_080BD070 + ldr r3, _080BB698 + ldr r0, [r5] + ldr r2, _080BB69C + adds r0, r0, r2 + ldrh r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r0, r2, r3 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + adds r0, r7, #0 + lsls r0, r1 + adds r3, #0x1c + adds r2, r2, r3 + ldr r1, _080BB6A0 + str r1, [r2] + mvns r0, r0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB6A4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB6A8 + str r1, [r0] + movs r0, #0x15 + b _080BB746 + .align 2, 0 +_080BB690: .4byte gUnknown_3002360 +_080BB694: .4byte 0x0000060E +_080BB698: .4byte gUnknown_20205AC +_080BB69C: .4byte 0x00000626 +_080BB6A0: .4byte sub_080BDC10 +_080BB6A4: .4byte gUnknown_3005B60 +_080BB6A8: .4byte sub_080BBA10 +_080BB6AC: + ldrh r2, [r2, #0x2e] + movs r0, #8 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080BB704 + ldr r3, _080BB6F0 + ldr r1, [r3] + ldr r2, _080BB6F4 + adds r0, r1, r2 + movs r2, #0 + strh r2, [r0] + ldr r0, _080BB6F8 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + ldr r0, [r3] + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r0, r1 + strh r2, [r0] + ldr r1, _080BB6FC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB700 + str r1, [r0] + movs r0, #5 + bl sub_080A306C + b _080BB7C6 + .align 2, 0 +_080BB6F0: .4byte gUnknown_20397EC +_080BB6F4: .4byte 0x00000652 +_080BB6F8: .4byte 0x0000064F +_080BB6FC: .4byte gUnknown_3005B60 +_080BB700: .4byte sub_080BB834 +_080BB704: + movs r0, #4 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _080BB760 + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl sub_080C07B4 + ldr r2, _080BB750 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + strh r0, [r1, #8] + ldr r0, _080BB754 + ldr r0, [r0] + ldr r3, _080BB758 + adds r0, r0, r3 + strb r2, [r0] + ldr r0, _080BB75C + str r0, [r1] + movs r0, #2 +_080BB746: + bl sub_080A306C + bl sub_080BBFCC + b _080BB7C6 + .align 2, 0 +_080BB750: .4byte gUnknown_3005B60 +_080BB754: .4byte gUnknown_20397EC +_080BB758: .4byte 0x0000064E +_080BB75C: .4byte sub_080BB458 +_080BB760: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080BB798 + movs r0, #1 + rsbs r0, r0, #0 + str r3, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB790 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB794 + str r1, [r0] + movs r0, #3 + bl sub_080A306C + b _080BB7C6 + .align 2, 0 +_080BB790: .4byte gUnknown_3005B60 +_080BB794: .4byte sub_080BBB18 +_080BB798: + ldr r5, _080BB7D0 + ldr r0, [r5] + ldr r4, _080BB7D4 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xe + bl sub_080BCE3C + ldr r1, [r5] + adds r4, r1, r4 + strh r0, [r4] + ldr r0, _080BB7D8 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _080BB7C6 + ldr r0, _080BB7DC + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BB7E0 + str r0, [r1] +_080BB7C6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BB7D0: .4byte gUnknown_20397EC +_080BB7D4: .4byte 0x0000060E +_080BB7D8: .4byte 0x0000062E +_080BB7DC: .4byte gUnknown_3005B60 +_080BB7E0: .4byte sub_080BB7E4 + thumb_func_end sub_080BB5F4 + + thumb_func_start sub_080BB7E4 +sub_080BB7E4: @ 0x080BB7E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BB820 + ldr r2, [r0] + ldr r1, _080BB824 + adds r0, r2, r1 + ldrb r0, [r0] + ldr r3, _080BB828 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, #2 + adds r2, r2, r3 + ldrb r2, [r2] + bl sub_080BCBA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BB818 + ldr r0, _080BB82C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BB830 + str r0, [r1] +_080BB818: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BB820: .4byte gUnknown_20397EC +_080BB824: .4byte 0x0000062F +_080BB828: .4byte 0x00000634 +_080BB82C: .4byte gUnknown_3005B60 +_080BB830: .4byte sub_080BB5F4 + thumb_func_end sub_080BB7E4 + + thumb_func_start sub_080BB834 +sub_080BB834: @ 0x080BB834 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _080BB864 + ldr r0, [r5] + ldr r4, _080BB868 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r5, [r5] + adds r1, r5, r4 + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0x60 + beq _080BB86C + adds r0, r2, #0 + adds r0, #8 + strh r0, [r1] + b _080BBA04 + .align 2, 0 +_080BB864: .4byte gUnknown_20397EC +_080BB868: .4byte 0x00000652 +_080BB86C: + ldr r0, _080BB890 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080BB87A + b _080BB974 +_080BB87A: + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r5, r1 + ldrh r0, [r0] + cmp r0, #4 + bhi _080BB8FE + lsls r0, r0, #2 + ldr r1, _080BB894 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BB890: .4byte gUnknown_3002360 +_080BB894: .4byte _080BB898 +_080BB898: @ jump table + .4byte _080BB8FE @ case 0 + .4byte _080BB8AC @ case 1 + .4byte _080BB8D0 @ case 2 + .4byte _080BB920 @ case 3 + .4byte _080BB950 @ case 4 +_080BB8AC: + ldr r5, _080BB8C4 + ldr r1, [r5] + ldr r4, _080BB8C8 + adds r2, r1, r4 + movs r0, #0 + strh r0, [r2] + ldr r2, _080BB8CC + adds r1, r1, r2 + movs r0, #0x40 + strb r0, [r1] + b _080BB8EE + .align 2, 0 +_080BB8C4: .4byte gUnknown_20397EC +_080BB8C8: .4byte 0x0000060E +_080BB8CC: .4byte 0x0000062C +_080BB8D0: + ldr r5, _080BB90C + ldr r2, [r5] + ldr r0, _080BB910 + adds r3, r2, r0 + ldrh r0, [r3] + subs r0, #1 + ldr r4, _080BB914 + adds r1, r2, r4 + strh r0, [r1] + ldrh r0, [r3] + lsls r0, r0, #4 + adds r0, #0x30 + ldr r1, _080BB918 + adds r2, r2, r1 + strb r0, [r2] +_080BB8EE: + bl sub_080BD1E0 + ldr r0, [r5] + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xe + bl sub_080BCA54 +_080BB8FE: + ldr r2, _080BB91C + ldrh r1, [r2, #0x2e] + movs r0, #8 + orrs r0, r1 + strh r0, [r2, #0x2e] + b _080BB974 + .align 2, 0 +_080BB90C: .4byte gUnknown_20397EC +_080BB910: .4byte 0x0000060C +_080BB914: .4byte 0x0000060E +_080BB918: .4byte 0x0000062C +_080BB91C: .4byte gUnknown_3002360 +_080BB920: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB948 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB94C + str r1, [r0] + movs r0, #0x34 + bl sub_080A306C + b _080BB974 + .align 2, 0 +_080BB948: .4byte gUnknown_3005B60 +_080BB94C: .4byte sub_080BBB18 +_080BB950: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080BB99C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB9A0 + str r1, [r0] + movs r0, #3 + bl sub_080A306C +_080BB974: + ldr r2, _080BB9A4 + ldrh r1, [r2, #0x2e] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _080BB9B4 + ldr r0, _080BB9A8 + ldr r0, [r0] + ldr r2, _080BB9AC + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0] + ldr r1, _080BB99C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BB9B0 + str r1, [r0] + b _080BB9D2 + .align 2, 0 +_080BB99C: .4byte gUnknown_3005B60 +_080BB9A0: .4byte sub_080BBBB8 +_080BB9A4: .4byte gUnknown_3002360 +_080BB9A8: .4byte gUnknown_20397EC +_080BB9AC: .4byte 0x0000064F +_080BB9B0: .4byte sub_080BB5F4 +_080BB9B4: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080BB9E0 + ldr r0, _080BB9DC + ldr r0, [r0] + movs r3, #0xca + lsls r3, r3, #3 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, #0 + beq _080BB9E0 + subs r0, #1 + strh r0, [r1] +_080BB9D2: + movs r0, #5 + bl sub_080A306C + b _080BBA04 + .align 2, 0 +_080BB9DC: .4byte gUnknown_20397EC +_080BB9E0: + ldrh r1, [r2, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BBA04 + ldr r0, _080BBA0C + ldr r0, [r0] + movs r2, #0xca + lsls r2, r2, #3 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #3 + bhi _080BBA04 + adds r0, #1 + strh r0, [r1] + movs r0, #5 + bl sub_080A306C +_080BBA04: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BBA0C: .4byte gUnknown_20397EC + thumb_func_end sub_080BB834 + + thumb_func_start sub_080BBA10 +sub_080BBA10: @ 0x080BBA10 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _080BBA7C + ldr r5, _080BBA80 + ldr r3, [r5] + ldr r4, _080BBA84 + adds r0, r3, r4 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r2, #0x20 + ldrsh r0, [r1, r2] + cmp r0, #0x30 + bne _080BBA76 + movs r2, #0x22 + ldrsh r0, [r1, r2] + cmp r0, #0x38 + bne _080BBA76 + ldr r1, _080BBA88 + adds r0, r3, r1 + ldrb r1, [r0] + ldr r2, _080BBA8C + adds r0, r3, r2 + strb r1, [r0] + ldr r1, [r5] + subs r2, #0x3d + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + bl sub_080BE0C0 + ldr r2, _080BBA90 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #8] + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, _080BBA94 + strh r2, [r0] + ldr r0, _080BBA98 + str r0, [r1] +_080BBA76: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BBA7C: .4byte gUnknown_20205AC +_080BBA80: .4byte gUnknown_20397EC +_080BBA84: .4byte 0x00000626 +_080BBA88: .4byte 0x0000064A +_080BBA8C: .4byte 0x0000064B +_080BBA90: .4byte gUnknown_3005B60 +_080BBA94: .4byte 0x0000FFFF +_080BBA98: .4byte sub_080BBA9C + thumb_func_end sub_080BBA10 + + thumb_func_start sub_080BBA9C +sub_080BBA9C: @ 0x080BBA9C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BBAF8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _080BBB08 + ldr r5, _080BBAFC + ldr r0, [r5] + ldr r1, _080BBB00 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080BBB0C + ldrb r0, [r4, #8] + bl sub_080BE168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BBB0C + bl sub_080BD0D0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BBB0C + ldr r0, [r5] + ldr r2, _080BBB04 + adds r1, r0, r2 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r1, [r4, #8] + bl sub_080BE19C + b _080BBB0C + .align 2, 0 +_080BBAF8: .4byte gUnknown_3005B60 +_080BBAFC: .4byte gUnknown_20397EC +_080BBB00: .4byte 0x0000064A +_080BBB04: .4byte 0x0000060E +_080BBB08: + ldr r0, _080BBB14 + str r0, [r4] +_080BBB0C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BBB14: .4byte sub_080BB5AC + thumb_func_end sub_080BBA9C + + thumb_func_start sub_080BBB18 +sub_080BBB18: @ 0x080BBB18 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080BBB94 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BBB8C + ldr r4, _080BBB98 + ldr r0, [r4] + ldr r2, _080BBB9C + adds r1, r0, r2 + ldrh r1, [r1] + ldr r3, _080BBBA0 + adds r0, r0, r3 + strb r1, [r0] + ldr r1, [r4] + subs r2, #0x1a + adds r0, r1, r2 + ldrh r2, [r0] + subs r3, #0x1e + adds r0, r1, r3 + strh r2, [r0] + ldr r2, _080BBBA4 + adds r0, r1, r2 + ldrh r0, [r0] + adds r3, #4 + adds r1, r1, r3 + strh r0, [r1] + bl sub_0809CD04 + adds r1, r0, #0 + cmp r1, #0 + bne _080BBB66 + ldr r0, [r4] + ldr r2, _080BBBA8 + adds r0, r0, r2 + strh r1, [r0] +_080BBB66: + ldr r0, [r4] + movs r3, #0xc3 + lsls r3, r3, #3 + adds r1, r0, r3 + ldrh r1, [r1] + ldr r2, _080BBBAC + adds r0, r0, r2 + strh r1, [r0] + ldr r1, _080BBBB0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BBBB4 + str r1, [r0] + bl sub_080BD1E0 + bl sub_080BBFCC +_080BBB8C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BBB94: .4byte gUnknown_2037C74 +_080BBB98: .4byte gUnknown_20397EC +_080BBB9C: .4byte 0x0000062A +_080BBBA0: .4byte 0x0000062C +_080BBBA4: .4byte 0x00000614 +_080BBBA8: .4byte 0x00000612 +_080BBBAC: .4byte 0x00000616 +_080BBBB0: .4byte gUnknown_3005B60 +_080BBBB4: .4byte sub_080BAEC8 + thumb_func_end sub_080BBB18 + + thumb_func_start sub_080BBBB8 +sub_080BBBB8: @ 0x080BBBB8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080BBC2C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BBC24 + ldr r4, _080BBC30 + ldr r0, [r4] + ldr r2, _080BBC34 + adds r1, r0, r2 + ldrh r1, [r1] + ldr r3, _080BBC38 + adds r0, r0, r3 + strb r1, [r0] + ldr r1, [r4] + subs r2, #0x1a + adds r0, r1, r2 + ldrh r2, [r0] + subs r3, #0x1e + adds r0, r1, r3 + strh r2, [r0] + ldr r2, _080BBC3C + adds r0, r1, r2 + ldrh r0, [r0] + adds r3, #4 + adds r1, r1, r3 + strh r0, [r1] + bl sub_0809CD04 + adds r1, r0, #0 + cmp r1, #0 + bne _080BBC06 + ldr r0, [r4] + ldr r2, _080BBC40 + adds r0, r0, r2 + strh r1, [r0] +_080BBC06: + ldr r0, [r4] + movs r3, #0xc3 + lsls r3, r3, #3 + adds r1, r0, r3 + ldrh r1, [r1] + ldr r2, _080BBC44 + adds r0, r0, r2 + strh r1, [r0] + ldr r1, _080BBC48 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BBC4C + str r1, [r0] +_080BBC24: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BBC2C: .4byte gUnknown_2037C74 +_080BBC30: .4byte gUnknown_20397EC +_080BBC34: .4byte 0x0000062A +_080BBC38: .4byte 0x0000062C +_080BBC3C: .4byte 0x00000614 +_080BBC40: .4byte 0x00000612 +_080BBC44: .4byte 0x00000616 +_080BBC48: .4byte gUnknown_3005B60 +_080BBC4C: .4byte sub_080BB524 + thumb_func_end sub_080BBBB8 + + thumb_func_start sub_080BBC50 +sub_080BBC50: @ 0x080BBC50 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080BBC74 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #6 + bhi _080BBC98 + lsls r0, r0, #2 + ldr r1, _080BBC78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BBC74: .4byte gUnknown_3002360 +_080BBC78: .4byte _080BBC7C +_080BBC7C: @ jump table + .4byte _080BBC98 @ case 0 + .4byte _080BBE08 @ case 1 + .4byte _080BBE38 @ case 2 + .4byte _080BBE40 @ case 3 + .4byte _080BBEA4 @ case 4 + .4byte _080BBECC @ case 5 + .4byte _080BBF54 @ case 6 +_080BBC98: + ldr r0, _080BBD58 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _080BBCAA + b _080BBF74 +_080BBCAA: + movs r0, #0 + bl sub_080006F0 + ldr r4, _080BBD5C + ldr r0, [r4] + ldr r1, _080BBD60 + adds r0, r0, r1 + strb r5, [r0] + movs r0, #0 + bl sub_080BFF08 + ldr r0, [r4] + ldr r2, _080BBD64 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x1a + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080BBD68 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #2 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + ldr r1, _080BBD6C + movs r2, #0x80 + lsls r2, r2, #6 + str r6, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r1, _080BBD70 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _080BBD74 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + cmp r5, #0 + bne _080BBD7C + ldr r1, _080BBD78 + movs r3, #0xa0 + lsls r3, r3, #2 + movs r0, #0 + movs r2, #0 + bl sub_080021CC + b _080BBD8A + .align 2, 0 +_080BBD58: .4byte gUnknown_2037C74 +_080BBD5C: .4byte gUnknown_20397EC +_080BBD60: .4byte 0x0000064A +_080BBD64: .4byte 0x0000062D +_080BBD68: .4byte gUnknown_8539BE8 +_080BBD6C: .4byte gUnknown_8537E8C +_080BBD70: .4byte gUnknown_8537804 +_080BBD74: .4byte gUnknown_8537954 +_080BBD78: .4byte gUnknown_8537660 +_080BBD7C: + ldr r1, _080BBDA4 + movs r3, #0xa0 + lsls r3, r3, #2 + movs r0, #0 + movs r2, #0 + bl sub_080021CC +_080BBD8A: + bl sub_080A133C + cmp r5, #0 + bne _080BBDB0 + ldr r3, _080BBDA8 + ldr r1, [r3] + ldr r0, _080BBDAC + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + b _080BBDBE + .align 2, 0 +_080BBDA4: .4byte gUnknown_8537730 +_080BBDA8: .4byte gUnknown_20397EC +_080BBDAC: .4byte 0x0000064C +_080BBDB0: + ldr r3, _080BBDF8 + ldr r1, [r3] + ldr r2, _080BBDFC + adds r1, r1, r2 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 +_080BBDBE: + strb r0, [r1] + ldr r0, [r3] + ldr r1, _080BBDFC + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_080BBF80 + ldr r0, _080BBE00 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _080BBE04 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + b _080BBF74 + .align 2, 0 +_080BBDF8: .4byte gUnknown_20397EC +_080BBDFC: .4byte 0x0000064C +_080BBE00: .4byte gUnknown_8539BF8 +_080BBE04: .4byte gUnknown_3002360 +_080BBE08: + bl sub_0800668C + bl sub_08008424 + ldr r1, _080BBE2C + movs r0, #8 + strb r0, [r1] + ldr r0, _080BBE30 + bl sub_08034388 + ldr r0, _080BBE34 + bl sub_080084A8 + adds r0, r5, #0 + bl sub_080BD31C + b _080BBF34 + .align 2, 0 +_080BBE2C: .4byte gUnknown_30030BC +_080BBE30: .4byte gUnknown_8539BBC +_080BBE34: .4byte gUnknown_8539BCC +_080BBE38: + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r3, r2 + b _080BBF3C +_080BBE40: + cmp r5, #0 + bne _080BBE58 + ldr r0, _080BBE94 + ldr r1, [r0] + ldr r2, _080BBE98 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_080BC010 +_080BBE58: + ldr r4, _080BBE94 + ldr r0, [r4] + ldr r1, _080BBE9C + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0xe + bl sub_080BCA54 + ldr r0, [r4] + ldr r2, _080BBEA0 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + adds r2, #3 + adds r0, r0, r2 + strh r1, [r0] + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080BBF34 + .align 2, 0 +_080BBE94: .4byte gUnknown_20397EC +_080BBE98: .4byte 0x00000612 +_080BBE9C: .4byte 0x0000060E +_080BBEA0: .4byte 0x0000064F +_080BBEA4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080BBEC4 + bl sub_080006F0 + ldr r1, _080BBEC8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _080BBF3C + .align 2, 0 +_080BBEC4: .4byte sub_080BAAAC +_080BBEC8: .4byte gUnknown_3002360 +_080BBECC: + ldr r1, _080BBF44 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _080BBF48 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _080BBF4C + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_080BBF34: + ldr r1, _080BBF50 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_080BBF3C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080BBF74 + .align 2, 0 +_080BBF44: .4byte 0x00003F3F +_080BBF48: .4byte 0x00001D3F +_080BBF4C: .4byte 0x00009040 +_080BBF50: .4byte gUnknown_3002360 +_080BBF54: + ldr r0, _080BBF70 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080BBF74 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r3, r1 + strb r2, [r0] + movs r0, #1 + b _080BBF76 + .align 2, 0 +_080BBF70: .4byte gUnknown_2037C74 +_080BBF74: + movs r0, #0 +_080BBF76: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BBC50 + + thumb_func_start sub_080BBF80 +sub_080BBF80: @ 0x080BBF80 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080BBF94 + ldr r0, _080BBF90 + b _080BBF9E + .align 2, 0 +_080BBF90: .4byte gUnknown_85374E2 +_080BBF94: + bl sub_0809CD04 + cmp r0, #0 + bne _080BBFAC + ldr r0, _080BBFA8 +_080BBF9E: + movs r1, #1 + movs r2, #0xbe + bl sub_080A1200 + b _080BBFB6 + .align 2, 0 +_080BBFA8: .4byte gUnknown_8537422 +_080BBFAC: + ldr r0, _080BBFC8 + movs r1, #1 + movs r2, #0xbe + bl sub_080A1200 +_080BBFB6: + bl sub_080985EC + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_080BBFC8: .4byte gUnknown_85375A2 + thumb_func_end sub_080BBF80 + + thumb_func_start sub_080BBFCC +sub_080BBFCC: @ 0x080BBFCC + push {lr} + bl sub_080034D4 + movs r0, #0 + bl sub_08002194 + cmp r0, #0 + beq _080BBFE0 + bl sub_08000BF0 +_080BBFE0: + movs r0, #1 + bl sub_08002194 + cmp r0, #0 + beq _080BBFEE + bl sub_08000BF0 +_080BBFEE: + movs r0, #2 + bl sub_08002194 + cmp r0, #0 + beq _080BBFFC + bl sub_08000BF0 +_080BBFFC: + movs r0, #3 + bl sub_08002194 + cmp r0, #0 + beq _080BC00A + bl sub_08000BF0 +_080BC00A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BBFCC + + thumb_func_start sub_080BC010 +sub_080BC010: @ 0x080BC010 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r0, _080BC044 + ldr r0, [r0] + ldr r1, _080BC048 + adds r0, r0, r1 + movs r5, #0 + strh r5, [r0] + cmp r4, #0 + beq _080BC038 + cmp r4, #1 + beq _080BC04C +_080BC038: + mov r1, sp + movs r0, #0xca + strh r0, [r1] + movs r0, #1 + strh r0, [r1, #2] + b _080BC068 + .align 2, 0 +_080BC044: .4byte gUnknown_20397EC +_080BC048: .4byte 0x0000060C +_080BC04C: + bl sub_0809CD04 + cmp r0, #0 + beq _080BC060 + mov r0, sp + movs r1, #0xc1 + lsls r1, r1, #1 + strh r1, [r0] + strh r5, [r0, #2] + b _080BC068 +_080BC060: + mov r0, sp + movs r1, #0xca + strh r1, [r0] + strh r4, [r0, #2] +_080BC068: + cmp r6, #5 + bls _080BC06E + b _080BC4F0 +_080BC06E: + lsls r0, r6, #2 + ldr r1, _080BC078 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BC078: .4byte _080BC07C +_080BC07C: @ jump table + .4byte _080BC094 @ case 0 + .4byte _080BC208 @ case 1 + .4byte _080BC2B4 @ case 2 + .4byte _080BC344 @ case 3 + .4byte _080BC3DC @ case 4 + .4byte _080BC46C @ case 5 +_080BC094: + mov r0, sp + ldrh r0, [r0, #2] + cmp r0, #0 + beq _080BC13C + movs r4, #0 + mov r0, sp + ldrh r0, [r0] + cmp r4, r0 + blt _080BC0A8 + b _080BC4F0 +_080BC0A8: + mov r5, sp + ldr r2, _080BC134 + mov r8, r2 + movs r3, #1 + mov sb, r3 +_080BC0B2: + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r7, r4, #1 + mov sl, r7 + lsls r0, r7, #0x10 + lsrs r6, r0, #0x10 + adds r0, r6, #0 + bl sub_0806CFB0 + strh r0, [r5, #4] + mov r2, r8 + ldr r1, [r2] + lsls r4, r4, #2 + adds r1, r1, r4 + strh r0, [r1] + ldrh r0, [r5, #4] + movs r1, #0 + bl sub_080BFBBC + mov r3, r8 + ldr r2, [r3] + adds r2, r2, r4 + mov r3, sb + ands r3, r0 + ldrb r0, [r2, #2] + movs r7, #2 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #2] + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + mov r1, r8 + ldr r3, [r1] + adds r3, r3, r4 + mov r2, sb + ands r2, r0 + lsls r2, r2, #1 + ldrb r0, [r3, #2] + subs r7, #1 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #2] + mov r0, r8 + ldr r1, [r0] + adds r4, r1, r4 + ldrb r0, [r4, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BC126 + ldr r2, _080BC138 + adds r0, r1, r2 + mov r3, sl + strh r3, [r0] +_080BC126: + adds r4, r6, #0 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r7, [r5] + cmp r0, r7 + blt _080BC0B2 + b _080BC4F0 + .align 2, 0 +_080BC134: .4byte gUnknown_20397EC +_080BC138: .4byte 0x0000060C +_080BC13C: + movs r4, #0 + movs r5, #0 + mov sl, r5 + mov r0, sp + ldrh r0, [r0] + cmp r4, r0 + blt _080BC14C + b _080BC4F0 +_080BC14C: + mov r6, sp + ldr r0, _080BC200 + mov r8, r0 + movs r1, #1 + mov sb, r1 +_080BC156: + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + adds r0, #1 + strh r0, [r6, #4] + ldrh r0, [r6, #4] + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + adds r7, r4, #0 + cmp r0, #0 + beq _080BC172 + movs r2, #1 + mov sl, r2 +_080BC172: + mov r3, sl + cmp r3, #0 + beq _080BC1EE + mov r4, r8 + ldr r1, [r4] + lsls r0, r5, #0x10 + asrs r5, r0, #0x10 + lsls r4, r5, #2 + adds r1, r1, r4 + ldrh r0, [r6, #4] + strh r0, [r1] + ldrh r0, [r6, #4] + movs r1, #0 + bl sub_080BFBBC + mov r1, r8 + ldr r2, [r1] + adds r2, r2, r4 + mov r3, sb + ands r3, r0 + mov ip, r3 + ldrb r0, [r2, #2] + movs r3, #2 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + mov r1, ip + orrs r0, r1 + strb r0, [r2, #2] + ldrh r0, [r6, #4] + movs r1, #1 + bl sub_080BFBBC + mov r2, r8 + ldr r3, [r2] + adds r3, r3, r4 + mov r2, sb + ands r2, r0 + lsls r2, r2, #1 + mov ip, r2 + ldrb r0, [r3, #2] + movs r2, #3 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + mov r1, ip + orrs r0, r1 + strb r0, [r3, #2] + mov r3, r8 + ldr r2, [r3] + adds r4, r2, r4 + ldrb r0, [r4, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BC1E8 + adds r1, r5, #1 + ldr r4, _080BC204 + adds r0, r2, r4 + strh r1, [r0] +_080BC1E8: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080BC1EE: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r7, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r6] + cmp r0, r2 + blt _080BC156 + b _080BC4F0 + .align 2, 0 +_080BC200: .4byte gUnknown_20397EC +_080BC204: .4byte 0x0000060C +_080BC208: + movs r4, #0 + mov r5, sp + ldr r3, _080BC2A8 + mov r8, r3 + ldr r6, _080BC2AC + movs r7, #1 + mov sb, r7 +_080BC216: + ldr r1, _080BC2B0 + lsls r4, r4, #0x10 + asrs r0, r4, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r5, #4] + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r4, #0 + ldrh r1, [r5] + cmp r0, r1 + bhi _080BC294 + ldrh r0, [r5, #4] + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BC294 + mov r3, r8 + ldr r2, [r3] + adds r3, r2, r6 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r1, [r5, #4] + strh r1, [r0] + ldrh r0, [r3] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + mov r4, sb + orrs r0, r4 + strb r0, [r2, #2] + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + mov r1, r8 + ldr r3, [r1] + adds r1, r3, r6 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r3, r3, r1 + mov r2, sb + ands r2, r0 + lsls r2, r2, #1 + ldrb r0, [r3, #2] + movs r4, #3 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #2] + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r6 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080BC294: + movs r2, #0x80 + lsls r2, r2, #9 + adds r1, r7, r2 + lsrs r4, r1, #0x10 + movs r0, #0xcd + lsls r0, r0, #0x11 + cmp r1, r0 + ble _080BC216 + b _080BC4F0 + .align 2, 0 +_080BC2A8: .4byte gUnknown_20397EC +_080BC2AC: .4byte 0x0000060C +_080BC2B0: .4byte gUnknown_8538FF4 +_080BC2B4: + ldr r4, _080BC330 + lsls r0, r4, #0x10 + mov r5, sp + ldr r7, _080BC334 + ldr r6, _080BC338 +_080BC2BE: + ldr r1, _080BC33C + asrs r0, r0, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r5, #4] + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r3, [r5] + cmp r0, r3 + bhi _080BC31E + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BC31E + ldr r2, [r7] + adds r3, r2, r6 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r1, [r5, #4] + strh r1, [r0] + ldrh r0, [r3] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + ldr r2, [r7] + adds r0, r2, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r7] + adds r1, r1, r6 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080BC31E: + lsls r0, r4, #0x10 + ldr r4, _080BC340 + adds r0, r0, r4 + lsrs r4, r0, #0x10 + lsls r0, r4, #0x10 + cmp r0, #0 + bge _080BC2BE + b _080BC4F0 + .align 2, 0 +_080BC330: .4byte 0x00000181 +_080BC334: .4byte gUnknown_20397EC +_080BC338: .4byte 0x0000060C +_080BC33C: .4byte gUnknown_853932A +_080BC340: .4byte 0xFFFF0000 +_080BC344: + movs r4, #0 + mov r5, sp + ldr r7, _080BC3CC + mov r8, r7 + ldr r6, _080BC3D0 + ldr r0, _080BC3D4 + mov sb, r0 +_080BC352: + ldr r1, _080BC3D8 + lsls r4, r4, #0x10 + asrs r0, r4, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r5, #4] + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r4, #0 + ldrh r1, [r5] + cmp r0, r1 + bhi _080BC3BA + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BC3BA + mov r3, r8 + ldr r2, [r3] + adds r3, r2, r6 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r1, [r5, #4] + strh r1, [r0] + ldrh r0, [r3] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + mov r4, r8 + ldr r2, [r4] + adds r0, r2, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r4] + adds r1, r1, r6 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080BC3BA: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r7, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, sb + ble _080BC352 + b _080BC4F0 + .align 2, 0 +_080BC3CC: .4byte gUnknown_20397EC +_080BC3D0: .4byte 0x0000060C +_080BC3D4: .4byte 0x00000181 +_080BC3D8: .4byte gUnknown_853932A +_080BC3DC: + ldr r4, _080BC458 + lsls r0, r4, #0x10 + mov r5, sp + ldr r7, _080BC45C + ldr r6, _080BC460 +_080BC3E6: + ldr r1, _080BC464 + asrs r0, r0, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r5, #4] + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r2, [r5] + cmp r0, r2 + bhi _080BC446 + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BC446 + ldr r2, [r7] + adds r3, r2, r6 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r1, [r5, #4] + strh r1, [r0] + ldrh r0, [r3] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + ldr r2, [r7] + adds r0, r2, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r7] + adds r1, r1, r6 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080BC446: + lsls r0, r4, #0x10 + ldr r3, _080BC468 + adds r0, r0, r3 + lsrs r4, r0, #0x10 + lsls r0, r4, #0x10 + cmp r0, #0 + bge _080BC3E6 + b _080BC4F0 + .align 2, 0 +_080BC458: .4byte 0x00000181 +_080BC45C: .4byte gUnknown_20397EC +_080BC460: .4byte 0x0000060C +_080BC464: .4byte gUnknown_853962E +_080BC468: .4byte 0xFFFF0000 +_080BC46C: + movs r4, #0 + mov r5, sp + ldr r7, _080BC554 + mov r8, r7 + ldr r6, _080BC558 + ldr r0, _080BC55C + mov sb, r0 +_080BC47A: + ldr r1, _080BC560 + lsls r4, r4, #0x10 + asrs r0, r4, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #4] + ldrh r0, [r5, #4] + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r4, #0 + ldrh r1, [r5] + cmp r0, r1 + bhi _080BC4E2 + ldrh r0, [r5, #4] + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BC4E2 + mov r3, r8 + ldr r2, [r3] + adds r3, r2, r6 + ldrh r0, [r3] + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r1, [r5, #4] + strh r1, [r0] + ldrh r0, [r3] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + mov r4, r8 + ldr r2, [r4] + adds r0, r2, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r2, r2, r0 + ldrb r0, [r2, #2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r4] + adds r1, r1, r6 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080BC4E2: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r7, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, sb + ble _080BC47A +_080BC4F0: + ldr r1, _080BC554 + ldr r0, [r1] + ldr r2, _080BC558 + adds r0, r0, r2 + ldrh r4, [r0] + lsls r3, r4, #0x10 + asrs r0, r3, #0x10 + ldr r2, _080BC55C + cmp r0, r2 + bgt _080BC544 + adds r5, r1, #0 + movs r4, #2 + rsbs r4, r4, #0 + mov sb, r4 + movs r7, #3 + rsbs r7, r7, #0 + mov r8, r7 + adds r7, r2, #0 + ldr r0, _080BC564 + adds r6, r0, #0 +_080BC518: + ldr r1, [r5] + asrs r3, r3, #0x10 + lsls r4, r3, #2 + adds r1, r1, r4 + ldrh r0, [r1] + orrs r0, r6 + strh r0, [r1] + ldrb r2, [r1, #2] + mov r0, sb + ands r0, r2 + strb r0, [r1, #2] + ldr r1, [r5] + adds r1, r1, r4 + ldrb r2, [r1, #2] + mov r0, r8 + ands r0, r2 + strb r0, [r1, #2] + adds r3, #1 + lsls r3, r3, #0x10 + asrs r0, r3, #0x10 + cmp r0, r7 + ble _080BC518 +_080BC544: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BC554: .4byte gUnknown_20397EC +_080BC558: .4byte 0x0000060C +_080BC55C: .4byte 0x00000181 +_080BC560: .4byte gUnknown_853962E +_080BC564: .4byte 0x0000FFFF + thumb_func_end sub_080BC010 + + thumb_func_start sub_080BC568 +sub_080BC568: @ 0x080BC568 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x18 + mov r8, r3 + ldr r3, [sp, #0x2c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r3, r3, #0x18 + add r4, sp, #0x14 + movs r6, #0 + strb r6, [r4] + adds r5, r4, #0 + movs r4, #0xf + strb r4, [r5, #1] + movs r4, #3 + strb r4, [r5, #2] + mov r4, r8 + lsls r4, r4, #0x1b + lsrs r4, r4, #0x18 + mov r8, r4 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r6, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, r8 + bl sub_08199B84 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BC568 + + thumb_func_start sub_080BC5C0 +sub_080BC5C0: @ 0x080BC5C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + cmp r0, #1 + beq _080BC6B8 + cmp r0, #1 + ble _080BC5E4 + cmp r0, #2 + bne _080BC5E4 + b _080BC7B0 +_080BC5E4: + subs r0, r1, #5 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0 + mov sb, r0 +_080BC5EE: + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + mov sl, r0 + ldr r1, _080BC620 + cmp r5, r1 + bhi _080BC60E + ldr r2, _080BC624 + mov r8, r2 + ldr r0, [r2] + mov r3, sl + asrs r6, r3, #0xe + adds r0, r0, r6 + ldrh r0, [r0] + ldr r1, _080BC628 + cmp r0, r1 + bne _080BC62C +_080BC60E: + mov r2, sb + lsls r1, r2, #0x19 + lsrs r1, r1, #0x18 + movs r0, #0x11 + adds r2, r7, #0 + bl sub_080BCA2C + b _080BC6A0 + .align 2, 0 +_080BC620: .4byte 0x00000181 +_080BC624: .4byte gUnknown_20397EC +_080BC628: .4byte 0x0000FFFF +_080BC62C: + mov r3, sb + lsls r0, r3, #0x19 + lsrs r4, r0, #0x18 + movs r0, #0x11 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080BCA2C + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r6 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BC67E + adds r0, r5, #0 + movs r1, #0x12 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC890 + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r6 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + movs r1, #0x11 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC930 + mov r3, r8 + ldr r0, [r3] + adds r0, r0, r6 + ldrh r0, [r0] + movs r1, #0x17 + adds r2, r4, #0 + bl sub_080BC978 + b _080BC6A0 +_080BC67E: + adds r0, r5, #0 + movs r1, #0x12 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC890 + movs r0, #0 + movs r1, #0x11 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC930 + movs r0, #0 + movs r1, #0x17 + adds r2, r4, #0 + bl sub_080BC978 +_080BC6A0: + movs r0, #0x80 + lsls r0, r0, #9 + add r0, sl + lsrs r1, r0, #0x10 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r0, #0xa + bls _080BC5EE + b _080BC87A +_080BC6B8: + subs r0, r1, #5 + lsls r1, r0, #0x10 + lsrs r5, r1, #0x10 + ldr r0, _080BC6E8 + ldr r2, _080BC6EC + cmp r5, r0 + bhi _080BC6D6 + adds r6, r2, #0 + ldr r3, [r6] + asrs r4, r1, #0xe + adds r0, r3, r4 + ldrh r1, [r0] + ldr r0, _080BC6F0 + cmp r1, r0 + bne _080BC6F4 +_080BC6D6: + ldr r0, [r2] + movs r1, #0xc6 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r1, r1, #0x19 + b _080BC7EE + .align 2, 0 +_080BC6E8: .4byte 0x00000181 +_080BC6EC: .4byte gUnknown_20397EC +_080BC6F0: .4byte 0x0000FFFF +_080BC6F4: + movs r1, #0xc6 + lsls r1, r1, #3 + adds r0, r3, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x18 + movs r0, #0x11 + adds r2, r7, #0 + bl sub_080BCA2C + ldr r1, [r6] + adds r0, r1, r4 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BC764 + movs r3, #0xc6 + lsls r3, r3, #3 + adds r0, r1, r3 + movs r1, #0 + ldrsh r2, [r0, r1] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + movs r1, #0x12 + adds r3, r7, #0 + bl sub_080BC890 + ldr r1, [r6] + adds r0, r1, r4 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + movs r2, #0xc6 + lsls r2, r2, #3 + adds r1, r1, r2 + movs r3, #0 + ldrsh r2, [r1, r3] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + movs r1, #0x11 + adds r3, r7, #0 + bl sub_080BC930 + ldr r1, [r6] + adds r0, r1, r4 + ldrh r0, [r0] + movs r2, #0xc6 + lsls r2, r2, #3 + adds r1, r1, r2 + movs r3, #0 + ldrsh r2, [r1, r3] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + b _080BC7A8 +_080BC764: + movs r2, #0xc6 + lsls r2, r2, #3 + adds r0, r1, r2 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + movs r1, #0x12 + adds r3, r7, #0 + bl sub_080BC890 + ldr r0, [r6] + movs r1, #0xc6 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + movs r0, #0 + movs r1, #0x11 + adds r3, r7, #0 + bl sub_080BC930 + ldr r0, [r6] + movs r1, #0xc6 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r2, r2, #0x19 + lsrs r2, r2, #0x18 + movs r0, #0 +_080BC7A8: + movs r1, #0x17 + bl sub_080BC978 + b _080BC87A +_080BC7B0: + adds r0, r1, #5 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080BC7FC + mov r8, r0 + ldr r3, [r0] + movs r2, #0xc6 + lsls r2, r2, #3 + adds r0, r3, r2 + ldrh r0, [r0] + adds r0, #0xa + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _080BC7D6 + adds r0, r2, #0 + subs r0, #0x10 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_080BC7D6: + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r0, _080BC800 + cmp r5, r0 + bhi _080BC7EC + asrs r6, r1, #0xe + adds r0, r3, r6 + ldrh r1, [r0] + ldr r0, _080BC804 + cmp r1, r0 + bne _080BC808 +_080BC7EC: + lsls r1, r2, #0x19 +_080BC7EE: + lsrs r1, r1, #0x18 + movs r0, #0x11 + adds r2, r7, #0 + bl sub_080BCA2C + b _080BC87A + .align 2, 0 +_080BC7FC: .4byte gUnknown_20397EC +_080BC800: .4byte 0x00000181 +_080BC804: .4byte 0x0000FFFF +_080BC808: + lsls r0, r2, #0x19 + lsrs r4, r0, #0x18 + movs r0, #0x11 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080BCA2C + mov r3, r8 + ldr r0, [r3] + adds r0, r0, r6 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080BC858 + adds r0, r5, #0 + movs r1, #0x12 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC890 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r6 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1f + movs r1, #0x11 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC930 + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r6 + ldrh r0, [r0] + movs r1, #0x17 + adds r2, r4, #0 + bl sub_080BC978 + b _080BC87A +_080BC858: + adds r0, r5, #0 + movs r1, #0x12 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC890 + movs r0, #0 + movs r1, #0x11 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080BC930 + movs r0, #0 + movs r1, #0x17 + adds r2, r4, #0 + bl sub_080BC978 +_080BC87A: + movs r0, #0 + movs r1, #2 + bl sub_08003528 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080BC5C0 + + thumb_func_start sub_080BC890 +sub_080BC890: @ 0x080BC890 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r1, _080BC924 + add r0, sp, #4 + movs r2, #6 + bl memcpy + ldr r0, _080BC928 + ldr r0, [r0] + lsls r4, r4, #2 + adds r4, r0, r4 + ldrh r6, [r4] + ldr r1, _080BC92C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080BC8D0 + adds r0, r6, #0 + bl sub_0806CF1C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080BC8D0: + add r4, sp, #4 + adds r0, r6, #0 + movs r1, #0x64 + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r4, #2] + add r5, sp, #4 + adds r0, r6, #0 + movs r1, #0x64 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #3] + add r5, sp, #4 + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #4] + str r7, [sp] + movs r0, #0 + movs r1, #1 + add r2, sp, #4 + mov r3, r8 + bl sub_080BC568 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BC924: .4byte gUnknown_8539C08 +_080BC928: .4byte gUnknown_20397EC +_080BC92C: .4byte 0x00000612 + thumb_func_end sub_080BC890 + + thumb_func_start sub_080BC930 +sub_080BC930: @ 0x080BC930 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r0, #0 + beq _080BC95C + ldr r1, _080BC958 + lsls r2, r3, #3 + lsls r3, r4, #3 + movs r0, #8 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + movs r0, #0 + bl sub_08003874 + b _080BC970 + .align 2, 0 +_080BC958: .4byte gUnknown_8539C0E +_080BC95C: + lsls r2, r3, #3 + lsls r3, r4, #3 + movs r0, #8 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + bl sub_08003A34 +_080BC970: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080BC930 + + thumb_func_start sub_080BC978 +sub_080BC978: @ 0x080BC978 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r4, #0 + movs r1, #0 +_080BC992: + mov r0, sp + adds r0, r0, r4 + adds r0, #4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080BC992 + add r0, sp, #4 + movs r1, #0xff + strb r1, [r0, #5] + adds r0, r5, #0 + bl sub_0806CED0 + adds r5, r0, #0 + cmp r5, #0 + beq _080BC9F8 + movs r4, #0 + ldr r1, _080BC9F4 + lsls r3, r5, #1 + adds r0, r3, r5 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + beq _080BCA0E + adds r6, r1, #0 +_080BC9CA: + mov r2, sp + adds r2, r2, r4 + adds r2, #4 + adds r1, r3, r5 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r1, r4, r1 + adds r1, r1, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _080BCA0E + cmp r4, #9 + bls _080BC9CA + b _080BCA0E + .align 2, 0 +_080BC9F4: .4byte gUnknown_82EA31C +_080BC9F8: + movs r4, #0 + movs r1, #0xae +_080BC9FC: + mov r0, sp + adds r0, r0, r4 + adds r0, #4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080BC9FC +_080BCA0E: + str r7, [sp] + movs r0, #0 + movs r1, #1 + add r2, sp, #4 + mov r3, r8 + bl sub_080BC568 + adds r0, r4, #0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BC978 + + thumb_func_start sub_080BCA2C +sub_080BCA2C: @ 0x080BCA2C + push {lr} + sub sp, #8 + adds r2, r0, #0 + adds r3, r1, #0 + lsls r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r2, r2, #0x15 + lsrs r3, r3, #0x15 + movs r0, #0x60 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + bl sub_08003A34 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BCA2C + + thumb_func_start sub_080BCA54 +sub_080BCA54: @ 0x080BCA54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + ldr r2, _080BCB7C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + movs r2, #0 + ldr r7, _080BCB80 + adds r5, r7, #0 + ldr r4, _080BCB84 + ldr r0, _080BCB88 + adds r3, r0, #0 +_080BCA7A: + ldr r1, [r5] + lsls r0, r2, #1 + adds r1, r1, r4 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080BCA7A + ldr r0, [r7] + ldr r1, _080BCB8C + adds r0, r0, r1 + ldr r1, _080BCB88 + strh r1, [r0] + subs r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080BD22C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080BCB88 + cmp r0, r4 + beq _080BCAD4 + movs r1, #0x60 + movs r2, #0x50 + bl sub_080BD26C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080BCB90 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _080BCB94 + str r2, [r1] + adds r0, r0, r3 + ldr r1, _080BCB98 + strh r1, [r0, #0x38] +_080BCAD4: + adds r0, r6, #0 + bl sub_080BD22C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + beq _080BCB06 + movs r1, #0x60 + movs r2, #0x50 + bl sub_080BD26C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080BCB90 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _080BCB94 + str r2, [r1] + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x38] +_080BCB06: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080BD22C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + beq _080BCB3C + movs r1, #0x60 + movs r2, #0x50 + bl sub_080BD26C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080BCB90 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _080BCB94 + str r2, [r1] + adds r0, r0, r3 + movs r1, #0x20 + strh r1, [r0, #0x38] +_080BCB3C: + movs r0, #0 + adds r1, r6, #0 + mov r2, r8 + bl sub_080BC5C0 + ldr r0, [r7] + ldr r2, _080BCB9C + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, [r7] + movs r2, #0xc6 + lsls r2, r2, #3 + adds r1, r0, r2 + movs r2, #0 + strh r2, [r1] + ldr r1, _080BCBA0 + adds r0, r0, r1 + strh r2, [r0] + ldr r2, _080BCB7C + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BCB7C: .4byte gUnknown_2037C74 +_080BCB80: .4byte gUnknown_20397EC +_080BCB84: .4byte 0x0000061E +_080BCB88: .4byte 0x0000FFFF +_080BCB8C: .4byte 0x00000626 +_080BCB90: .4byte gUnknown_20205AC +_080BCB94: .4byte sub_080BDC80 +_080BCB98: .4byte 0x0000FFE0 +_080BCB9C: .4byte 0x0000062D +_080BCBA0: .4byte 0x00000632 + thumb_func_end sub_080BCA54 + + thumb_func_start sub_080BCBA4 +sub_080BCBA4: @ 0x080BCBA4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _080BCBD8 + ldr r1, [r0] + ldr r3, _080BCBDC + adds r2, r1, r3 + ldrb r3, [r2] + adds r7, r0, #0 + cmp r3, #0 + bne _080BCBC8 + b _080BCD18 +_080BCBC8: + subs r0, r3, #1 + strb r0, [r2] + cmp r4, #1 + beq _080BCBE0 + cmp r4, #2 + beq _080BCC7C + b _080BCCF8 + .align 2, 0 +_080BCBD8: .4byte gUnknown_20397EC +_080BCBDC: .4byte 0x0000062E +_080BCBE0: + movs r3, #0 + ldr r4, _080BCC60 + mov ip, r4 + ldr r0, _080BCC64 + mov r8, r0 + adds r2, r7, #0 +_080BCBEC: + ldr r0, [r2] + lsls r1, r3, #1 + ldr r4, _080BCC68 + adds r0, r0, r4 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, ip + beq _080BCC0A + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrh r0, [r1, #0x38] + adds r0, r0, r5 + strh r0, [r1, #0x38] +_080BCC0A: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _080BCBEC + ldr r4, [r7] + ldr r1, _080BCC6C + adds r0, r4, r1 + ldrb r0, [r0] + subs r0, r6, r0 + lsls r0, r0, #4 + adds r1, r6, #0 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, _080BCC70 + adds r0, r4, r3 + ldr r1, _080BCC74 + adds r4, r4, r1 + movs r3, #0 + ldrsh r1, [r4, r3] + lsls r1, r1, #4 + ldrb r0, [r0] + adds r1, r1, r0 + subs r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldr r0, [r7] + ldr r4, _080BCC78 + adds r2, r0, r4 + movs r1, #0xc5 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2] + subs r0, r0, r1 + strb r0, [r2] + b _080BCCF8 + .align 2, 0 +_080BCC60: .4byte 0x0000FFFF +_080BCC64: .4byte gUnknown_20205AC +_080BCC68: .4byte 0x0000061E +_080BCC6C: .4byte 0x0000062E +_080BCC70: .4byte 0x0000062D +_080BCC74: .4byte 0x00000632 +_080BCC78: .4byte 0x0000062C +_080BCC7C: + movs r3, #0 + ldr r2, _080BCCFC + mov ip, r2 + ldr r4, _080BCD00 + mov r8, r4 + adds r2, r7, #0 +_080BCC88: + ldr r0, [r2] + lsls r1, r3, #1 + ldr r4, _080BCD04 + adds r0, r0, r4 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, ip + beq _080BCCA6 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrh r0, [r1, #0x38] + subs r0, r0, r5 + strh r0, [r1, #0x38] +_080BCCA6: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _080BCC88 + ldr r4, [r7] + ldr r1, _080BCD08 + adds r0, r4, r1 + ldrb r0, [r0] + subs r0, r6, r0 + lsls r0, r0, #4 + adds r1, r6, #0 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, _080BCD0C + adds r0, r4, r3 + ldr r1, _080BCD10 + adds r4, r4, r1 + movs r3, #0 + ldrsh r1, [r4, r3] + lsls r1, r1, #4 + ldrb r0, [r0] + adds r1, r1, r0 + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + ldr r0, [r7] + ldr r4, _080BCD14 + adds r1, r0, r4 + movs r2, #0xc5 + lsls r2, r2, #3 + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r3, [r1] + adds r0, r0, r3 + strb r0, [r1] +_080BCCF8: + movs r0, #0 + b _080BCD38 + .align 2, 0 +_080BCCFC: .4byte 0x0000FFFF +_080BCD00: .4byte gUnknown_20205AC +_080BCD04: .4byte 0x0000061E +_080BCD08: .4byte 0x0000062E +_080BCD0C: .4byte 0x0000062D +_080BCD10: .4byte 0x00000632 +_080BCD14: .4byte 0x0000062C +_080BCD18: + ldr r4, _080BCD44 + adds r2, r1, r4 + movs r3, #0xc6 + lsls r3, r3, #3 + adds r0, r1, r3 + movs r4, #0 + ldrsh r1, [r0, r4] + lsls r1, r1, #4 + ldrb r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + movs r0, #1 +_080BCD38: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080BCD44: .4byte 0x0000062D + thumb_func_end sub_080BCBA4 + + thumb_func_start sub_080BCD48 +sub_080BCD48: @ 0x080BCD48 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + ldr r4, _080BCD70 + ldr r0, [r4] + movs r5, #0xc6 + lsls r5, r5, #3 + adds r1, r0, r5 + ldrh r1, [r1] + ldr r6, _080BCD74 + adds r0, r0, r6 + strh r1, [r0] + cmp r2, #1 + beq _080BCD78 + cmp r2, #2 + beq _080BCDD8 + b _080BCE34 + .align 2, 0 +_080BCD70: .4byte gUnknown_20397EC +_080BCD74: .4byte 0x00000632 +_080BCD78: + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080BD22C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080BCDC4 + cmp r1, r0 + beq _080BCDB2 + adds r0, r1, #0 + movs r1, #0x60 + movs r2, #0x50 + bl sub_080BD26C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080BCDC8 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _080BCDCC + str r2, [r1] + adds r0, r0, r3 + ldr r1, _080BCDD0 + strh r1, [r0, #0x38] +_080BCDB2: + ldr r0, [r4] + adds r1, r0, r5 + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _080BCDD4 + subs r0, r2, #1 + b _080BCE32 + .align 2, 0 +_080BCDC4: .4byte 0x0000FFFF +_080BCDC8: .4byte gUnknown_20205AC +_080BCDCC: .4byte sub_080BDC80 +_080BCDD0: .4byte 0x0000FFC0 +_080BCDD4: + movs r0, #0xf + b _080BCE32 +_080BCDD8: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080BD22C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080BCE24 + cmp r1, r0 + beq _080BCE12 + adds r0, r1, #0 + movs r1, #0x60 + movs r2, #0x50 + bl sub_080BD26C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080BCE28 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _080BCE2C + str r2, [r1] + adds r0, r0, r3 + movs r1, #0x40 + strh r1, [r0, #0x38] +_080BCE12: + ldr r0, [r4] + adds r1, r0, r5 + ldrh r2, [r1] + movs r6, #0 + ldrsh r0, [r1, r6] + cmp r0, #0xe + bgt _080BCE30 + adds r0, r2, #1 + b _080BCE32 + .align 2, 0 +_080BCE24: .4byte 0x0000FFFF +_080BCE28: .4byte gUnknown_20205AC +_080BCE2C: .4byte sub_080BDC80 +_080BCE30: + movs r0, #0 +_080BCE32: + strh r0, [r1] +_080BCE34: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BCD48 + + thumb_func_start sub_080BCE3C +sub_080BCE3C: @ 0x080BCE3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + movs r0, #0 + mov sl, r0 + ldr r2, _080BCE90 + ldrh r1, [r2, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080BCE9C + cmp r7, #0 + beq _080BCE9C + movs r1, #1 + mov sl, r1 + ldr r0, _080BCE94 + ldr r0, [r0] + ldr r2, _080BCE98 + adds r0, r0, r2 + ldrh r3, [r0] + subs r3, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #1 + adds r1, r7, #0 + movs r2, #0 + bl sub_080C0364 + adds r7, r0, #0 + movs r0, #1 + adds r1, r7, #0 + bl sub_080BCD48 + movs r0, #1 + b _080BCED4 + .align 2, 0 +_080BCE90: .4byte gUnknown_3002360 +_080BCE94: .4byte gUnknown_20397EC +_080BCE98: .4byte 0x0000060C +_080BCE9C: + ldrh r1, [r2, #0x2c] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BCEEC + ldr r0, _080BCEE4 + ldr r0, [r0] + ldr r3, _080BCEE8 + adds r0, r0, r3 + ldrh r0, [r0] + subs r0, #1 + cmp r7, r0 + bge _080BCEEC + movs r1, #2 + mov sl, r1 + lsls r3, r0, #0x10 + lsrs r3, r3, #0x10 + movs r0, #0 + adds r1, r7, #0 + movs r2, #0 + bl sub_080C0364 + adds r7, r0, #0 + movs r0, #2 + adds r1, r7, #0 + bl sub_080BCD48 + movs r0, #2 +_080BCED4: + adds r1, r7, #0 + adds r2, r4, #0 + bl sub_080BC5C0 + movs r0, #0x6c + bl sub_080A306C + b _080BCFBA + .align 2, 0 +_080BCEE4: .4byte gUnknown_20397EC +_080BCEE8: .4byte 0x0000060C +_080BCEEC: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080BCF54 + cmp r7, #0 + beq _080BCF54 + adds r6, r7, #0 + movs r4, #0 +_080BCEFE: + ldr r5, _080BCF48 + ldr r0, [r5] + ldr r2, _080BCF4C + adds r0, r0, r2 + ldrh r3, [r0] + subs r3, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #1 + adds r1, r7, #0 + movs r2, #0 + bl sub_080C0364 + adds r7, r0, #0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080BCEFE + ldr r1, [r5] + ldr r3, _080BCF50 + adds r1, r1, r3 + subs r0, r7, r6 + lsls r0, r0, #4 + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + bl sub_080BD1E0 + adds r0, r7, #0 + movs r1, #0xe + bl sub_080BCA54 + movs r0, #0x6d + bl sub_080A306C + b _080BCFBA + .align 2, 0 +_080BCF48: .4byte gUnknown_20397EC +_080BCF4C: .4byte 0x0000060C +_080BCF50: .4byte 0x0000062C +_080BCF54: + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080BCFBA + ldr r0, _080BCFD0 + ldr r0, [r0] + ldr r3, _080BCFD4 + adds r0, r0, r3 + ldrh r0, [r0] + subs r0, #1 + cmp r7, r0 + bge _080BCFBA + adds r6, r7, #0 + movs r4, #0 +_080BCF72: + ldr r5, _080BCFD0 + ldr r0, [r5] + ldr r1, _080BCFD4 + adds r0, r0, r1 + ldrh r3, [r0] + subs r3, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #0 + adds r1, r7, #0 + movs r2, #0 + bl sub_080C0364 + adds r7, r0, #0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080BCF72 + ldr r1, [r5] + ldr r2, _080BCFD8 + adds r1, r1, r2 + subs r0, r7, r6 + lsls r0, r0, #4 + ldrb r3, [r1] + adds r0, r0, r3 + strb r0, [r1] + bl sub_080BD1E0 + adds r0, r7, #0 + movs r1, #0xe + bl sub_080BCA54 + movs r0, #0x6d + bl sub_080A306C +_080BCFBA: + mov r0, sl + cmp r0, #0 + bne _080BCFDC + ldr r0, _080BCFD0 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #3 + adds r0, r0, r1 + mov r2, sl + strh r2, [r0] + b _080BD042 + .align 2, 0 +_080BCFD0: .4byte gUnknown_20397EC +_080BCFD4: .4byte 0x0000060C +_080BCFD8: .4byte 0x0000062C +_080BCFDC: + ldr r1, _080BD054 + ldr r6, _080BD058 + ldr r2, [r6] + movs r3, #0xc7 + lsls r3, r3, #3 + mov sb, r3 + adds r0, r2, r3 + ldrh r0, [r0] + lsrs r0, r0, #2 + adds r1, r0, r1 + ldrb r5, [r1] + ldr r1, _080BD05C + adds r0, r0, r1 + ldrb r3, [r0] + ldr r0, _080BD060 + adds r2, r2, r0 + strb r3, [r2] + ldr r1, [r6] + ldr r2, _080BD064 + mov r8, r2 + adds r0, r1, r2 + strh r3, [r0] + ldr r4, _080BD068 + adds r0, r1, r4 + strh r5, [r0] + ldr r3, _080BD06C + adds r1, r1, r3 + mov r0, sl + strb r0, [r1] + ldr r2, [r6] + lsrs r5, r5, #1 + movs r1, #0xc5 + lsls r1, r1, #3 + adds r0, r2, r1 + strh r5, [r0] + adds r3, r2, r3 + ldrb r0, [r3] + adds r4, r2, r4 + ldrb r1, [r4] + add r2, r8 + ldrb r2, [r2] + bl sub_080BCBA4 + ldr r0, [r6] + mov r2, sb + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #0xb + bhi _080BD042 + adds r0, #1 + strh r0, [r1] +_080BD042: + adds r0, r7, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080BD054: .4byte gUnknown_8539BDC +_080BD058: .4byte gUnknown_20397EC +_080BD05C: .4byte gUnknown_8539BE1 +_080BD060: .4byte 0x0000062E +_080BD064: .4byte 0x00000636 +_080BD068: .4byte 0x00000634 +_080BD06C: .4byte 0x0000062F + thumb_func_end sub_080BCE3C + + thumb_func_start sub_080BD070 +sub_080BD070: @ 0x080BD070 + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r0, _080BD0BC + mov ip, r0 + ldr r6, _080BD0C0 + ldr r5, _080BD0C4 +_080BD07C: + mov r1, ip + ldr r3, [r1] + lsls r1, r4, #1 + ldr r2, _080BD0C8 + adds r0, r3, r2 + adds r0, r0, r1 + ldrh r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r6 + movs r7, #0x24 + ldrsh r0, [r1, r7] + cmp r0, #0 + bne _080BD0AC + movs r7, #0x26 + ldrsh r0, [r1, r7] + cmp r0, #0 + bne _080BD0AC + cmp r2, r5 + beq _080BD0AC + ldr r1, _080BD0CC + adds r0, r3, r1 + strh r2, [r0] +_080BD0AC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080BD07C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BD0BC: .4byte gUnknown_20397EC +_080BD0C0: .4byte gUnknown_20205AC +_080BD0C4: .4byte 0x0000FFFF +_080BD0C8: .4byte 0x0000061E +_080BD0CC: .4byte 0x00000626 + thumb_func_end sub_080BD070 + + thumb_func_start sub_080BD0D0 +sub_080BD0D0: @ 0x080BD0D0 + push {r4, r5, r6, lr} + ldr r3, _080BD130 + ldr r0, [r3] + ldr r1, _080BD134 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r2, _080BD138 + ldrh r1, [r2, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080BD158 + cmp r4, #0 + beq _080BD158 + adds r2, r4, #0 + adds r5, r3, #0 +_080BD0F0: + ldr r0, [r5] + ldr r1, _080BD13C + adds r0, r0, r1 + ldrh r3, [r0] + subs r3, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #1 + adds r1, r2, #0 + movs r2, #0 + bl sub_080C0364 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080BD140 + cmp r2, #0 + bne _080BD0F0 +_080BD11E: + ldr r0, _080BD130 + ldr r1, [r0] + ldr r0, _080BD134 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, r4 + bne _080BD144 + b _080BD1D8 + .align 2, 0 +_080BD130: .4byte gUnknown_20397EC +_080BD134: .4byte 0x0000060E +_080BD138: .4byte gUnknown_3002360 +_080BD13C: .4byte 0x0000060C +_080BD140: + adds r4, r2, #0 + b _080BD11E +_080BD144: + strh r4, [r2] + ldr r0, _080BD150 + adds r1, r1, r0 + ldrb r0, [r1] + subs r0, #0x10 + b _080BD1C0 + .align 2, 0 +_080BD150: .4byte 0x0000062C +_080BD154: + adds r4, r2, #0 + b _080BD1A8 +_080BD158: + ldrh r1, [r2, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BD1D8 + ldr r0, [r3] + ldr r1, _080BD1C8 + adds r0, r0, r1 + ldrh r0, [r0] + subs r0, #1 + cmp r4, r0 + bge _080BD1D8 + adds r2, r4, #0 + adds r6, r3, #0 + adds r5, r1, #0 +_080BD176: + ldr r0, [r6] + adds r0, r0, r5 + ldrh r3, [r0] + subs r3, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #0 + adds r1, r2, #0 + movs r2, #0 + bl sub_080C0364 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, [r6] + lsls r0, r2, #2 + adds r0, r1, r0 + ldrb r0, [r0, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080BD154 + adds r0, r1, r5 + ldrh r0, [r0] + subs r0, #1 + cmp r2, r0 + blt _080BD176 +_080BD1A8: + ldr r0, _080BD1CC + ldr r1, [r0] + ldr r0, _080BD1D0 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, r4 + beq _080BD1D8 + strh r4, [r2] + ldr r0, _080BD1D4 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #0x10 +_080BD1C0: + strb r0, [r1] + movs r0, #1 + b _080BD1DA + .align 2, 0 +_080BD1C8: .4byte 0x0000060C +_080BD1CC: .4byte gUnknown_20397EC +_080BD1D0: .4byte 0x0000060E +_080BD1D4: .4byte 0x0000062C +_080BD1D8: + movs r0, #0 +_080BD1DA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080BD0D0 + + thumb_func_start sub_080BD1E0 +sub_080BD1E0: @ 0x080BD1E0 + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r6, _080BD220 + ldr r7, _080BD224 +_080BD1E8: + ldr r0, [r6] + lsls r4, r5, #1 + ldr r1, _080BD228 + adds r0, r0, r1 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, r7 + beq _080BD20C + bl sub_0818D54C + ldr r1, [r6] + ldr r0, _080BD228 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r2, [r1] + adds r0, r7, #0 + orrs r0, r2 + strh r0, [r1] +_080BD20C: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _080BD1E8 + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080BD220: .4byte gUnknown_20397EC +_080BD224: .4byte 0x0000FFFF +_080BD228: .4byte 0x0000061E + thumb_func_end sub_080BD1E0 + + thumb_func_start sub_080BD22C +sub_080BD22C: @ 0x080BD22C + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080BD24C + cmp r2, r0 + bhi _080BD248 + ldr r0, _080BD250 + ldr r1, [r0] + lsls r0, r2, #2 + adds r2, r1, r0 + ldrh r1, [r2] + ldr r0, _080BD254 + cmp r1, r0 + bne _080BD258 +_080BD248: + ldr r0, _080BD254 + b _080BD266 + .align 2, 0 +_080BD24C: .4byte 0x00000181 +_080BD250: .4byte gUnknown_20397EC +_080BD254: .4byte 0x0000FFFF +_080BD258: + ldrb r0, [r2, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _080BD264 + movs r0, #0 + b _080BD266 +_080BD264: + ldrh r0, [r2] +_080BD266: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BD22C + + thumb_func_start sub_080BD26C +sub_080BD26C: @ 0x080BD26C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r6, #0 + ldr r0, _080BD2F0 + mov sb, r0 + ldr r3, _080BD2F4 + lsls r1, r1, #0x10 +_080BD288: + mov r4, sb + ldr r0, [r4] + lsls r7, r6, #1 + ldr r4, _080BD2F8 + adds r0, r0, r4 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, r3 + bne _080BD300 + lsls r2, r2, #0x10 + mov r0, r8 + asrs r1, r1, #0x10 + asrs r2, r2, #0x10 + adds r3, r6, #0 + bl sub_080C03F4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080BD2FC + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrb r1, [r4, #1] + movs r2, #4 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #1] + ldrb r0, [r4, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r4, #5] + movs r0, #0 + strh r0, [r4, #0x2e] + strh r6, [r4, #0x30] + mov r0, r8 + bl sub_0806CED0 + strh r0, [r4, #0x32] + mov r4, sb + ldr r0, [r4] + ldr r1, _080BD2F8 + adds r0, r0, r1 + adds r0, r0, r7 + strh r5, [r0] + adds r0, r5, #0 + b _080BD30C + .align 2, 0 +_080BD2F0: .4byte gUnknown_20397EC +_080BD2F4: .4byte 0x0000FFFF +_080BD2F8: .4byte 0x0000061E +_080BD2FC: .4byte gUnknown_20205AC +_080BD300: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _080BD288 + ldr r0, _080BD318 +_080BD30C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080BD318: .4byte 0x0000FFFF + thumb_func_end sub_080BD26C + + thumb_func_start sub_080BD31C +sub_080BD31C: @ 0x080BD31C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _080BD4E8 + adds r0, r4, #0 + movs r1, #0xb8 + movs r2, #4 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080BD4EC + mov sl, r1 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #0 + strh r1, [r0, #0x30] + adds r0, r4, #0 + movs r1, #0xb8 + movs r2, #0x9c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + strh r1, [r0, #0x30] + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] + ldr r0, _080BD4F0 + movs r1, #0xe4 + movs r2, #0x14 + movs r3, #0 + bl sub_08006B0C + ldr r5, _080BD4F4 + adds r0, r5, #0 + movs r1, #0x10 + movs r2, #0x78 + movs r3, #0 + bl sub_08006B0C + adds r0, r5, #0 + movs r1, #0x30 + movs r2, #0x78 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #3 + bl sub_08007EC0 + adds r0, r5, #0 + movs r1, #0x10 + movs r2, #0x90 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + add r4, sl + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + movs r0, #0x80 + mov sb, r0 + mov r1, sb + strh r1, [r4, #0x32] + adds r0, r5, #0 + movs r1, #0x30 + movs r2, #0x90 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + bl sub_08007EC0 + ldr r6, _080BD4F8 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + add r1, sl + ldrb r2, [r1, #1] + movs r4, #4 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + movs r5, #1 + orrs r0, r5 + strb r0, [r1, #1] + ldrb r2, [r1, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #0x3c + orrs r0, r2 + strb r0, [r1, #3] + movs r0, #0x1e + strh r0, [r1, #0x2e] + movs r0, #0 + strh r0, [r1, #0x30] + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + add r1, sl + ldrb r0, [r1, #1] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, #1] + ldrb r0, [r1, #3] + movs r2, #0x3e + orrs r0, r2 + strb r0, [r1, #3] + movs r0, #0x1f + strh r0, [r1, #0x2e] + mov r0, sb + strh r0, [r1, #0x30] + mov r1, r8 + cmp r1, #0 + beq _080BD46C + b _080BDBB4 +_080BD46C: + bl sub_0809CD04 + cmp r0, #0 + beq _080BD476 + b _080BD6EC +_080BD476: + ldr r4, _080BD4FC + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x28 + movs r3, #1 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x48 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + bl sub_08007EC0 + movs r0, #0 + mov r8, r0 + ldr r0, _080BD500 + movs r1, #0x18 + movs r2, #0x30 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD504 + ldr r0, [r0] + ldr r1, _080BD508 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + mov r1, sl + adds r4, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BD50C + movs r0, #1 + mov r8, r0 + b _080BD518 + .align 2, 0 +_080BD4E8: .4byte gUnknown_8539AFC +_080BD4EC: .4byte gUnknown_20205AC +_080BD4F0: .4byte gUnknown_8539AE4 +_080BD4F4: .4byte gUnknown_8539B14 +_080BD4F8: .4byte gUnknown_8539B2C +_080BD4FC: .4byte gUnknown_8539B44 +_080BD500: .4byte gUnknown_8539B74 +_080BD504: .4byte gUnknown_20397EC +_080BD508: .4byte 0x0000061A +_080BD50C: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD518: + ldr r0, _080BD564 + movs r1, #0x20 + movs r2, #0x30 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD568 + ldr r0, [r0] + ldr r1, _080BD56C + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BD550 + mov r0, r8 + cmp r0, #0 + beq _080BD574 +_080BD550: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BD570 + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BD588 + .align 2, 0 +_080BD564: .4byte gUnknown_8539B74 +_080BD568: .4byte gUnknown_20397EC +_080BD56C: .4byte 0x0000061A +_080BD570: .4byte gUnknown_20205AC +_080BD574: + ldr r1, _080BD60C + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD588: + ldr r6, _080BD610 + adds r0, r6, #0 + movs r1, #0x28 + movs r2, #0x30 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _080BD614 + ldr r0, [r5] + ldr r1, _080BD618 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r4, _080BD60C + adds r0, r0, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + movs r0, #0 + mov r8, r0 + adds r0, r6, #0 + movs r1, #0x18 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [r5] + ldr r1, _080BD61C + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r4 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BD620 + movs r0, #1 + mov r8, r0 + b _080BD62C + .align 2, 0 +_080BD60C: .4byte gUnknown_20205AC +_080BD610: .4byte gUnknown_8539B74 +_080BD614: .4byte gUnknown_20397EC +_080BD618: .4byte 0x0000061A +_080BD61C: .4byte 0x0000061C +_080BD620: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD62C: + ldr r0, _080BD678 + movs r1, #0x20 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD67C + ldr r0, [r0] + ldr r1, _080BD680 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BD664 + mov r0, r8 + cmp r0, #0 + beq _080BD688 +_080BD664: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BD684 + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BD69C + .align 2, 0 +_080BD678: .4byte gUnknown_8539B74 +_080BD67C: .4byte gUnknown_20397EC +_080BD680: .4byte 0x0000061C +_080BD684: .4byte gUnknown_20205AC +_080BD688: + ldr r1, _080BD6DC + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD69C: + ldr r0, _080BD6E0 + movs r1, #0x28 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD6E4 + ldr r0, [r0] + ldr r1, _080BD6E8 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r2, _080BD6DC + adds r0, r0, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BDB82 + .align 2, 0 +_080BD6DC: .4byte gUnknown_20205AC +_080BD6E0: .4byte gUnknown_8539B74 +_080BD6E4: .4byte gUnknown_20397EC +_080BD6E8: .4byte 0x0000061C +_080BD6EC: + ldr r4, _080BD7B8 + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x28 + movs r3, #1 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x4c + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + bl sub_08007EC0 + ldr r4, _080BD7BC + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x2d + movs r3, #1 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x37 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x51 + movs r3, #1 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x5b + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl + movs r1, #1 + bl sub_08007EC0 + movs r0, #0 + bl sub_080BFD9C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0 + mov r8, r0 + ldr r0, _080BD7C0 + movs r1, #0x28 + movs r2, #0x2d + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + mov r1, sl + adds r4, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BD7C4 + movs r0, #1 + mov r8, r0 + b _080BD7D0 + .align 2, 0 +_080BD7B8: .4byte gUnknown_8539B44 +_080BD7BC: .4byte gUnknown_8539B5C +_080BD7C0: .4byte gUnknown_8539B8C +_080BD7C4: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD7D0: + ldr r0, _080BD814 + movs r1, #0x30 + movs r2, #0x2d + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BD800 + mov r1, r8 + cmp r1, #0 + beq _080BD81C +_080BD800: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BD818 + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BD830 + .align 2, 0 +_080BD814: .4byte gUnknown_8539B8C +_080BD818: .4byte gUnknown_20205AC +_080BD81C: + ldr r1, _080BD8AC + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD830: + ldr r5, _080BD8B0 + adds r0, r5, #0 + movs r1, #0x38 + movs r2, #0x2d + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r4, _080BD8AC + adds r0, r0, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + movs r0, #0 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0x37 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD8B4 + ldr r0, [r0] + ldr r1, _080BD8B8 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r4 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BD8BC + movs r0, #1 + mov r8, r0 + b _080BD8C8 + .align 2, 0 +_080BD8AC: .4byte gUnknown_20205AC +_080BD8B0: .4byte gUnknown_8539B8C +_080BD8B4: .4byte gUnknown_20397EC +_080BD8B8: .4byte 0x0000061A +_080BD8BC: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD8C8: + ldr r0, _080BD914 + movs r1, #0x30 + movs r2, #0x37 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD918 + ldr r0, [r0] + ldr r1, _080BD91C + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BD900 + mov r0, r8 + cmp r0, #0 + beq _080BD924 +_080BD900: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BD920 + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BD938 + .align 2, 0 +_080BD914: .4byte gUnknown_8539B8C +_080BD918: .4byte gUnknown_20397EC +_080BD91C: .4byte 0x0000061A +_080BD920: .4byte gUnknown_20205AC +_080BD924: + ldr r1, _080BD9C0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD938: + ldr r5, _080BD9C4 + adds r0, r5, #0 + movs r1, #0x38 + movs r2, #0x37 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BD9C8 + ldr r0, [r0] + ldr r1, _080BD9CC + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r4, _080BD9C0 + adds r0, r0, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + movs r0, #1 + bl sub_080BFD9C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0x51 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r4 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BD9D0 + movs r1, #1 + mov r8, r1 + b _080BD9DC + .align 2, 0 +_080BD9C0: .4byte gUnknown_20205AC +_080BD9C4: .4byte gUnknown_8539B8C +_080BD9C8: .4byte gUnknown_20397EC +_080BD9CC: .4byte 0x0000061A +_080BD9D0: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BD9DC: + ldr r0, _080BDA20 + movs r1, #0x30 + movs r2, #0x51 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BDA0C + mov r0, r8 + cmp r0, #0 + beq _080BDA28 +_080BDA0C: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BDA24 + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BDA3C + .align 2, 0 +_080BDA20: .4byte gUnknown_8539B8C +_080BDA24: .4byte gUnknown_20205AC +_080BDA28: + ldr r1, _080BDAB8 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BDA3C: + ldr r5, _080BDABC + adds r0, r5, #0 + movs r1, #0x38 + movs r2, #0x51 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r4, _080BDAB8 + adds r0, r0, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + movs r1, #0 + mov r8, r1 + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0x5b + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BDAC0 + ldr r0, [r0] + ldr r1, _080BDAC4 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r4, r0, r4 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + cmp r5, #0 + beq _080BDAC8 + movs r0, #1 + mov r8, r0 + b _080BDAD4 + .align 2, 0 +_080BDAB8: .4byte gUnknown_20205AC +_080BDABC: .4byte gUnknown_8539B8C +_080BDAC0: .4byte gUnknown_20397EC +_080BDAC4: .4byte 0x0000061C +_080BDAC8: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BDAD4: + ldr r0, _080BDB20 + movs r1, #0x30 + movs r2, #0x5b + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BDB24 + ldr r0, [r0] + ldr r1, _080BDB28 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _080BDB0C + mov r0, r8 + cmp r0, #0 + beq _080BDB30 +_080BDB0C: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080BDB2C + adds r0, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + b _080BDB44 + .align 2, 0 +_080BDB20: .4byte gUnknown_8539B8C +_080BDB24: .4byte gUnknown_20397EC +_080BDB28: .4byte 0x0000061C +_080BDB2C: .4byte gUnknown_20205AC +_080BDB30: + ldr r1, _080BDBA0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BDB44: + ldr r0, _080BDBA4 + movs r1, #0x38 + movs r2, #0x5b + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080BDBA8 + ldr r0, [r0] + ldr r1, _080BDBAC + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r2, _080BDBA0 + adds r0, r0, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 +_080BDB82: + ldr r0, _080BDBB0 + movs r1, #0x90 + movs r2, #0x60 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080BDBA0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + b _080BDBCC + .align 2, 0 +_080BDBA0: .4byte gUnknown_20205AC +_080BDBA4: .4byte gUnknown_8539B8C +_080BDBA8: .4byte gUnknown_20397EC +_080BDBAC: .4byte 0x0000061C +_080BDBB0: .4byte gUnknown_8539BA4 +_080BDBB4: + ldr r0, _080BDBE4 + movs r1, #0x90 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, sl +_080BDBCC: + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BDBE4: .4byte gUnknown_8539BA4 + thumb_func_end sub_080BD31C + + thumb_func_start sub_080BDBE8 +sub_080BDBE8: @ 0x080BDBE8 + bx lr + .align 2, 0 + thumb_func_end sub_080BDBE8 + + thumb_func_start sub_080BDBEC +sub_080BDBEC: @ 0x080BDBEC + push {lr} + adds r1, r0, #0 + ldr r0, _080BDC08 + ldr r0, [r0] + ldr r2, _080BDC0C + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080BDC04 + adds r0, r1, #0 + bl sub_08006E00 +_080BDC04: + pop {r0} + bx r0 + .align 2, 0 +_080BDC08: .4byte gUnknown_20397EC +_080BDC0C: .4byte 0x0000064A + thumb_func_end sub_080BDBEC + + thumb_func_start sub_080BDC10 +sub_080BDC10: @ 0x080BDC10 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #5] + ldrb r1, [r2, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #1] + movs r0, #0 + strh r0, [r2, #0x24] + strh r0, [r2, #0x26] + ldr r1, [r2, #0x20] + ldr r0, _080BDC70 + cmp r1, r0 + beq _080BDC74 + ldrh r1, [r2, #0x20] + movs r3, #0x20 + ldrsh r0, [r2, r3] + cmp r0, #0x30 + ble _080BDC44 + subs r0, r1, #1 + strh r0, [r2, #0x20] +_080BDC44: + ldrh r1, [r2, #0x20] + movs r3, #0x20 + ldrsh r0, [r2, r3] + cmp r0, #0x2f + bgt _080BDC52 + adds r0, r1, #1 + strh r0, [r2, #0x20] +_080BDC52: + ldrh r1, [r2, #0x22] + movs r3, #0x22 + ldrsh r0, [r2, r3] + cmp r0, #0x38 + ble _080BDC60 + subs r0, r1, #1 + strh r0, [r2, #0x22] +_080BDC60: + ldrh r1, [r2, #0x22] + movs r3, #0x22 + ldrsh r0, [r2, r3] + cmp r0, #0x37 + bgt _080BDC78 + adds r0, r1, #1 + strh r0, [r2, #0x22] + b _080BDC78 + .align 2, 0 +_080BDC70: .4byte 0x00380030 +_080BDC74: + ldr r0, _080BDC7C + str r0, [r2, #0x1c] +_080BDC78: + pop {r0} + bx r0 + .align 2, 0 +_080BDC7C: .4byte sub_080BDBE8 + thumb_func_end sub_080BDC10 + + thumb_func_start sub_080BDC80 +sub_080BDC80: @ 0x080BDC80 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _080BDCB4 + ldr r1, [r7] + ldr r2, _080BDCB8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080BDCC0 + cmp r0, #3 + beq _080BDCC0 + lsls r5, r6, #1 + ldr r4, _080BDCBC + adds r0, r1, r4 + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_0818D54C + ldr r0, [r7] + adds r0, r0, r4 + adds r0, r0, r5 + b _080BDD8C + .align 2, 0 +_080BDCB4: .4byte gUnknown_20397EC +_080BDCB8: .4byte 0x0000064A +_080BDCBC: .4byte 0x0000061E +_080BDCC0: + ldr r2, _080BDD4C + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + movs r3, #0 + ldrsh r1, [r0, r3] + movs r0, #0x4c + muls r0, r1, r0 + cmp r0, #0 + bge _080BDCD8 + adds r0, #0xff +_080BDCD8: + asrs r0, r0, #8 + strh r0, [r4, #0x26] + movs r1, #0x38 + ldrsh r0, [r4, r1] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r2, r0, #0 + ldr r0, _080BDD50 + cmp r2, r0 + bls _080BDCFC + adds r2, r0, #0 +_080BDCFC: + ldrh r0, [r4, #0x30] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + adds r1, r6, #1 + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + ldrh r0, [r4, #0x38] + adds r0, #0x3f + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7e + bhi _080BDD54 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + movs r0, #1 + strh r0, [r4, #0x2e] + b _080BDD60 + .align 2, 0 +_080BDD4C: .4byte gUnknown_82FA8CC +_080BDD50: .4byte 0x0000FFFF +_080BDD54: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_080BDD60: + ldrh r0, [r4, #0x38] + adds r0, #0x3f + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7e + bls _080BDD90 + movs r3, #0x2e + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080BDD90 + ldr r5, _080BDD98 + ldr r0, [r5] + lsls r6, r6, #1 + ldr r4, _080BDD9C + adds r0, r0, r4 + adds r0, r0, r6 + ldrh r0, [r0] + bl sub_0818D54C + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r6 +_080BDD8C: + ldr r1, _080BDDA0 + strh r1, [r0] +_080BDD90: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BDD98: .4byte gUnknown_20397EC +_080BDD9C: .4byte 0x0000061E +_080BDDA0: .4byte 0x0000FFFF + thumb_func_end sub_080BDC80 + + thumb_func_start sub_080BDDA4 +sub_080BDDA4: @ 0x080BDDA4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080BDDC4 + ldr r0, [r1] + ldr r2, _080BDDC8 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080BDDCC + cmp r0, #3 + beq _080BDDCC + adds r0, r4, #0 + bl sub_08006E00 + b _080BDDE8 + .align 2, 0 +_080BDDC4: .4byte gUnknown_20397EC +_080BDDC8: .4byte 0x0000064A +_080BDDCC: + ldr r2, [r1] + ldr r1, _080BDDF0 + adds r0, r2, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _080BDDF4 + adds r2, r2, r1 + ldrh r1, [r2] + subs r1, #1 + bl __divsi3 + strh r0, [r4, #0x26] +_080BDDE8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BDDF0: .4byte 0x0000060E +_080BDDF4: .4byte 0x0000060C + thumb_func_end sub_080BDDA4 + + thumb_func_start sub_080BDDF8 +sub_080BDDF8: @ 0x080BDDF8 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r1, _080BDE18 + ldr r0, [r1] + ldr r2, _080BDE1C + adds r0, r0, r2 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #0 + beq _080BDE20 + cmp r0, #3 + beq _080BDE20 + adds r0, r3, #0 + bl sub_08006E00 + b _080BDEF0 + .align 2, 0 +_080BDE18: .4byte gUnknown_20397EC +_080BDE1C: .4byte 0x0000064A +_080BDE20: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _080BDE62 + ldr r0, [r5] + ldr r2, _080BDE48 + adds r1, r0, r2 + ldrh r1, [r1] + subs r2, #2 + adds r0, r0, r2 + ldrh r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _080BDE4C + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _080BDE58 + .align 2, 0 +_080BDE48: .4byte 0x0000060E +_080BDE4C: + adds r0, r3, #0 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_080BDE58: + strb r1, [r0] + adds r2, r0, #0 + ldrh r1, [r3, #0x32] + lsls r0, r1, #0x18 + b _080BDE98 +_080BDE62: + ldr r0, [r5] + ldr r1, _080BDE7C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080BDE80 + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _080BDE8C + .align 2, 0 +_080BDE7C: .4byte 0x0000060E +_080BDE80: + adds r0, r3, #0 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_080BDE8C: + strb r1, [r0] + adds r2, r0, #0 + ldrh r1, [r3, #0x32] + adds r0, r1, #0 + subs r0, #0x80 + lsls r0, r0, #0x18 +_080BDE98: + lsrs r0, r0, #0x18 + adds r4, r1, #0 + ldr r1, _080BDEE0 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080BDEAC + adds r0, #0x3f +_080BDEAC: + asrs r0, r0, #6 + strh r0, [r3, #0x26] + adds r0, r4, #0 + adds r0, #8 + strh r0, [r3, #0x32] + ldr r1, [r5] + ldr r3, _080BDEE4 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080BDEE8 + adds r3, #3 + adds r0, r1, r3 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080BDEE8 + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080BDEE8 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + b _080BDEEE + .align 2, 0 +_080BDEE0: .4byte gUnknown_82FA8CC +_080BDEE4: .4byte 0x0000064F +_080BDEE8: + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 +_080BDEEE: + strb r0, [r2] +_080BDEF0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BDDF8 + + thumb_func_start sub_080BDEF8 +sub_080BDEF8: @ 0x080BDEF8 + push {lr} + adds r1, r0, #0 + ldr r0, _080BDF18 + ldr r0, [r0] + ldr r2, _080BDF1C + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080BDF14 + cmp r0, #3 + beq _080BDF14 + adds r0, r1, #0 + bl sub_08006E00 +_080BDF14: + pop {r0} + bx r0 + .align 2, 0 +_080BDF18: .4byte gUnknown_20397EC +_080BDF1C: .4byte 0x0000064A + thumb_func_end sub_080BDEF8 + + thumb_func_start sub_080BDF20 +sub_080BDF20: @ 0x080BDF20 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r1, _080BDF44 + ldr r0, [r1] + ldr r2, _080BDF48 + adds r0, r0, r2 + ldrb r0, [r0] + adds r7, r1, #0 + cmp r0, #0 + beq _080BDF4C + cmp r0, #3 + beq _080BDF4C + adds r0, r6, #0 + bl sub_08006E00 + b _080BDFC4 + .align 2, 0 +_080BDF44: .4byte gUnknown_20397EC +_080BDF48: .4byte 0x0000064A +_080BDF4C: + ldr r0, [r7] + ldr r5, _080BDFCC + adds r0, r0, r5 + ldrb r1, [r0] + ldrh r0, [r6, #0x30] + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r4, _080BDFD0 + lsls r0, r1, #1 + adds r0, r0, r4 + ldrh r3, [r0] + adds r1, #0x40 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r6, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r1] + lsls r3, r3, #0x10 + lsrs r2, r3, #0x10 + rsbs r3, r3, #0 + lsrs r3, r3, #0x10 + str r1, [sp] + bl sub_08006F3C + ldr r1, [r7] + adds r1, r1, r5 + ldrh r0, [r6, #0x30] + adds r0, #0x40 + ldrb r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r4 + ldrh r3, [r1] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r4 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + cmp r0, #0 + bge _080BDFAC + adds r0, #0xff +_080BDFAC: + asrs r0, r0, #8 + strh r0, [r6, #0x24] + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + cmp r0, #0 + bge _080BDFC0 + adds r0, #0xff +_080BDFC0: + asrs r0, r0, #8 + strh r0, [r6, #0x26] +_080BDFC4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BDFCC: .4byte 0x0000062C +_080BDFD0: .4byte gUnknown_82FA8CC + thumb_func_end sub_080BDF20 + + thumb_func_start sub_080BDFD4 +sub_080BDFD4: @ 0x080BDFD4 + push {r4, lr} + adds r3, r0, #0 + ldr r1, _080BDFF4 + ldr r0, [r1] + ldr r2, _080BDFF8 + adds r0, r0, r2 + ldrb r2, [r0] + cmp r2, #0 + beq _080BDFFC + cmp r2, #3 + beq _080BDFFC + adds r0, r3, #0 + bl sub_08006E00 + b _080BE074 + .align 2, 0 +_080BDFF4: .4byte gUnknown_20397EC +_080BDFF8: .4byte 0x0000064A +_080BDFFC: + ldr r4, [r1] + ldr r1, _080BE05C + adds r0, r4, r1 + ldrb r0, [r0] + movs r1, #0x60 + cmp r0, #0 + bne _080BE00C + movs r1, #0x50 +_080BE00C: + ldr r2, _080BE060 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080BE068 + adds r2, #3 + adds r0, r4, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, r1 + bne _080BE068 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r4, r1 + ldrh r0, [r0] + lsls r0, r0, #4 + strh r0, [r3, #0x26] + ldr r1, _080BE064 + ldrh r2, [r3, #0x32] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080BE050 + adds r0, #0x3f +_080BE050: + asrs r0, r0, #6 + strh r0, [r3, #0x24] + adds r0, r2, #0 + adds r0, #8 + strh r0, [r3, #0x32] + b _080BE074 + .align 2, 0 +_080BE05C: .4byte 0x0000064A +_080BE060: .4byte 0x0000064F +_080BE064: .4byte gUnknown_82FA8CC +_080BE068: + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080BE074: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BDFD4 + + thumb_func_start sub_080BE07C +sub_080BE07C: @ 0x080BE07C + push {r4, r5, lr} + sub sp, #0x18 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r3, r3, #0x18 + add r1, sp, #0x14 + movs r4, #0 + strb r4, [r1] + adds r2, r1, #0 + movs r1, #0xf + strb r1, [r2, #1] + movs r1, #3 + strb r1, [r2, #2] + lsls r5, r5, #0x1b + lsrs r5, r5, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r4, [sp] + str r4, [sp, #4] + str r2, [sp, #8] + subs r1, #4 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080BE07C + + thumb_func_start sub_080BE0C0 +sub_080BE0C0: @ 0x080BE0C0 + push {r4, r5, lr} + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _080BE154 + str r0, [r1] + ldr r0, _080BE158 + movs r1, #0 + bl sub_080A8878 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _080BE15C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0, #8] + movs r1, #1 + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + strh r2, [r0, #0xe] + strh r4, [r0, #0x10] + movs r1, #0xff + strh r1, [r0, #0x12] + movs r0, #0 + bl sub_080017D4 + ldr r1, _080BE160 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #2 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + ldr r0, _080BE164 + bl sub_08003090 + bl sub_08004480 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080BE154: .4byte gUnknown_20397F4 +_080BE158: .4byte sub_080BE1C8 +_080BE15C: .4byte gUnknown_3005B60 +_080BE160: .4byte gUnknown_8543110 +_080BE164: .4byte gUnknown_8543120 + thumb_func_end sub_080BE0C0 + + thumb_func_start sub_080BE168 +sub_080BE168: @ 0x080BE168 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BE18C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _080BE194 + ldr r1, [r1] + ldr r0, _080BE190 + cmp r1, r0 + bne _080BE194 + movs r0, #0 + b _080BE196 + .align 2, 0 +_080BE18C: .4byte gUnknown_3005B60 +_080BE190: .4byte sub_080BE678 +_080BE194: + movs r0, #1 +_080BE196: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BE168 + + thumb_func_start sub_080BE19C +sub_080BE19C: @ 0x080BE19C + adds r2, r0, #0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080BE1C0 + str r2, [r1] + ldr r2, _080BE1C4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r3, #0 + movs r2, #1 + strh r2, [r1, #8] + strh r3, [r1, #0xa] + strh r3, [r1, #0xc] + strh r3, [r1, #0xe] + bx lr + .align 2, 0 +_080BE1C0: .4byte gUnknown_20397F4 +_080BE1C4: .4byte gUnknown_3005B60 + thumb_func_end sub_080BE19C + + thumb_func_start sub_080BE1C8 +sub_080BE1C8: @ 0x080BE1C8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080BE1EC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #0xa + bhi _080BE220 + lsls r0, r0, #2 + ldr r1, _080BE1F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BE1EC: .4byte gUnknown_3002360 +_080BE1F0: .4byte _080BE1F4 +_080BE1F4: @ jump table + .4byte _080BE220 @ case 0 + .4byte _080BE294 @ case 1 + .4byte _080BE2F4 @ case 2 + .4byte _080BE334 @ case 3 + .4byte _080BE33C @ case 4 + .4byte _080BE498 @ case 5 + .4byte _080BE4E4 @ case 6 + .4byte _080BE540 @ case 7 + .4byte _080BE588 @ case 8 + .4byte _080BE5E2 @ case 9 + .4byte _080BE600 @ case 10 +_080BE220: + ldr r0, _080BE280 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BE22E + b _080BE624 +_080BE22E: + ldr r0, _080BE284 + ldr r0, [r0] + ldr r3, _080BE288 + adds r0, r0, r3 + movs r6, #1 + strb r6, [r0] + ldr r1, _080BE28C + ldr r0, [r5, #0xc] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + movs r2, #0 + ldr r1, _080BE290 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _080BE25E + movs r2, #0x80 + lsls r2, r2, #5 +_080BE25E: + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _080BE26E + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r1, #0 + orrs r2, r0 +_080BE26E: + adds r0, r2, #0 + bl sub_080BFF08 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r5, r2 + strb r6, [r0] + b _080BE624 + .align 2, 0 +_080BE280: .4byte gUnknown_2037C74 +_080BE284: .4byte gUnknown_20397EC +_080BE288: .4byte 0x0000064A +_080BE28C: .4byte gUnknown_3005E14 +_080BE290: .4byte gUnknown_3005B60 +_080BE294: + ldr r1, _080BE2E4 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r1, _080BE2E8 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + ldr r0, _080BE2EC + ldr r0, [r0] + ldrh r1, [r0] + movs r0, #1 + bl sub_080C0288 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + ldr r1, _080BE2F0 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _080BE5F4 + .align 2, 0 +_080BE2E4: .4byte gUnknown_8537E8C +_080BE2E8: .4byte gUnknown_8537A10 +_080BE2EC: .4byte gUnknown_20397F4 +_080BE2F0: .4byte gUnknown_3002360 +_080BE2F4: + movs r0, #0xd + bl sub_080BF598 + ldr r4, _080BE324 + ldr r0, [r4] + ldr r1, _080BE328 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0xd + bl sub_080BF5C8 + ldr r0, [r4] + ldr r2, _080BE32C + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_080BBF80 + ldr r1, _080BE330 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _080BE5F4 + .align 2, 0 +_080BE324: .4byte gUnknown_20397EC +_080BE328: .4byte 0x0000064D +_080BE32C: .4byte 0x0000064C +_080BE330: .4byte gUnknown_3002360 +_080BE334: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r5, r0 + b _080BE5F4 +_080BE33C: + ldr r0, _080BE368 + ldr r0, [r0] + ldr r1, _080BE36C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080BE374 + ldr r0, _080BE370 + ldr r0, [r0] + ldrh r0, [r0] + bl sub_0806CF1C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + movs r2, #0xd + movs r3, #3 + bl sub_080C0020 + b _080BE384 + .align 2, 0 +_080BE368: .4byte gUnknown_20397EC +_080BE36C: .4byte 0x00000612 +_080BE370: .4byte gUnknown_20397F4 +_080BE374: + ldr r0, _080BE420 + ldr r0, [r0] + ldrh r1, [r0] + movs r0, #0 + movs r2, #0xd + movs r3, #3 + bl sub_080C0020 +_080BE384: + ldr r5, _080BE420 + ldr r0, [r5] + ldrh r1, [r0] + movs r0, #0 + movs r2, #0x11 + movs r3, #3 + bl sub_080C00A0 + ldr r0, [r5] + ldrb r1, [r0, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080BE434 + ldr r0, _080BE424 + movs r1, #0xd + movs r2, #5 + bl sub_080BE07C + ldr r0, _080BE428 + movs r1, #0x10 + movs r2, #7 + bl sub_080BE07C + ldr r0, _080BE42C + movs r1, #0x10 + movs r2, #9 + bl sub_080BE07C + ldr r0, [r5] + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r4, _080BE430 + adds r1, r1, r4 + movs r0, #0 + movs r2, #0xd + movs r3, #5 + bl sub_080C0150 + ldr r0, [r5] + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #6] + movs r0, #0 + movs r2, #0x10 + movs r3, #7 + bl sub_080C01C8 + ldr r0, [r5] + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #8] + movs r0, #0 + movs r2, #0x10 + movs r3, #9 + bl sub_080C01C8 + ldr r0, [r5] + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0xc + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #3 + movs r2, #0xd + bl sub_080BE07C + b _080BE466 + .align 2, 0 +_080BE420: .4byte gUnknown_20397F4 +_080BE424: .4byte gUnknown_85C8FBB +_080BE428: .4byte gUnknown_85C8FC5 +_080BE42C: .4byte gUnknown_85C8FCC +_080BE430: .4byte gUnknown_854069C +_080BE434: + ldr r0, _080BE484 + movs r1, #0xd + movs r2, #5 + bl sub_080BE07C + ldr r0, _080BE488 + movs r1, #0x10 + movs r2, #7 + bl sub_080BE07C + ldr r0, _080BE48C + movs r1, #0x10 + movs r2, #9 + bl sub_080BE07C + ldr r0, _080BE490 + movs r1, #3 + movs r2, #0xd + bl sub_080BE07C + ldr r0, _080BE494 + movs r1, #0x31 + movs r2, #0x1e + bl sub_080A1200 +_080BE466: + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080BE5EC + .align 2, 0 +_080BE484: .4byte gUnknown_85C8FA2 +_080BE488: .4byte gUnknown_85C8FAC +_080BE48C: .4byte gUnknown_85C8FB3 +_080BE490: .4byte gUnknown_8539C50 +_080BE494: .4byte gUnknown_20373B6 +_080BE498: + ldr r0, _080BE4D8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r3, #0xa + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080BE4AC + b _080BE5EC +_080BE4AC: + ldr r0, _080BE4DC + ldr r0, [r0] + ldrh r0, [r0] + movs r1, #0x30 + movs r2, #0x38 + movs r3, #0 + bl sub_080C03F4 + strh r0, [r4, #0x10] + ldr r2, _080BE4E0 + movs r1, #0x10 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + b _080BE5EC + .align 2, 0 +_080BE4D8: .4byte gUnknown_3005B60 +_080BE4DC: .4byte gUnknown_20397F4 +_080BE4E0: .4byte gUnknown_20205AC +_080BE4E4: + movs r3, #0 + ldr r0, _080BE534 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0xc + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080BE4FA + movs r3, #0x14 +_080BE4FA: + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080BE51C + ldr r2, _080BE538 + movs r0, #0x10 + ldrsh r1, [r1, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + orrs r3, r0 +_080BE51C: + mvns r0, r3 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080BE53C + ldr r0, [r0] + bl sub_080006F0 + b _080BE5EC + .align 2, 0 +_080BE534: .4byte gUnknown_3005B60 +_080BE538: .4byte gUnknown_20205AC +_080BE53C: .4byte gUnknown_3005E14 +_080BE540: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r1, _080BE584 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _080BE5F4 + .align 2, 0 +_080BE584: .4byte gUnknown_3002360 +_080BE588: + ldr r0, _080BE5D0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BE624 + movs r0, #0x87 + lsls r0, r0, #3 + adds r2, r5, r0 + ldrb r0, [r2] + adds r3, r0, #1 + strb r3, [r2] + ldr r1, _080BE5D4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080BE5DC + bl sub_080A2F64 + ldr r0, _080BE5D8 + ldr r0, [r0] + ldrh r0, [r0] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + movs r2, #0x7d + movs r3, #0xa + bl sub_080A2B88 + b _080BE624 + .align 2, 0 +_080BE5D0: .4byte gUnknown_2037C74 +_080BE5D4: .4byte gUnknown_3005B60 +_080BE5D8: .4byte gUnknown_20397F4 +_080BE5DC: + adds r0, r3, #1 + strb r0, [r2] + b _080BE624 +_080BE5E2: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BE624 +_080BE5EC: + ldr r1, _080BE5FC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_080BE5F4: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080BE624 + .align 2, 0 +_080BE5FC: .4byte gUnknown_3002360 +_080BE600: + ldr r1, _080BE62C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0 + strh r1, [r0, #8] + strh r1, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #0xc] + strh r1, [r0, #0xe] + ldr r1, _080BE630 + str r1, [r0] + movs r3, #0x87 + lsls r3, r3, #3 + adds r0, r5, r3 + strb r2, [r0] +_080BE624: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BE62C: .4byte gUnknown_3005B60 +_080BE630: .4byte sub_080BE678 + thumb_func_end sub_080BE1C8 + + thumb_func_start sub_080BE634 +sub_080BE634: @ 0x080BE634 + push {lr} + bl sub_080034D4 + movs r0, #0 + bl sub_08002194 + cmp r0, #0 + beq _080BE648 + bl sub_08000BF0 +_080BE648: + movs r0, #1 + bl sub_08002194 + cmp r0, #0 + beq _080BE656 + bl sub_08000BF0 +_080BE656: + movs r0, #2 + bl sub_08002194 + cmp r0, #0 + beq _080BE664 + bl sub_08000BF0 +_080BE664: + movs r0, #3 + bl sub_08002194 + cmp r0, #0 + beq _080BE672 + bl sub_08000BF0 +_080BE672: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080BE634 + + thumb_func_start sub_080BE678 +sub_080BE678: @ 0x080BE678 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BE6B0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _080BE6B8 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BE6B4 + str r0, [r4] + movs r0, #0x6c + bl sub_080A306C + b _080BE83E + .align 2, 0 +_080BE6B0: .4byte gUnknown_3005B60 +_080BE6B4: .4byte sub_080BE8BC +_080BE6B8: + ldr r1, _080BE6D0 + ldrh r2, [r1, #0x2e] + movs r0, #2 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _080BE6D4 + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + b _080BE792 + .align 2, 0 +_080BE6D0: .4byte gUnknown_3002360 +_080BE6D4: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080BE7AC + ldr r5, _080BE6F4 + ldr r0, [r5] + ldr r1, _080BE6F8 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #1 + beq _080BE724 + cmp r1, #1 + bgt _080BE6FC + cmp r1, #0 + beq _080BE706 + b _080BE83E + .align 2, 0 +_080BE6F4: .4byte gUnknown_20397EC +_080BE6F8: .4byte 0x0000064D +_080BE6FC: + cmp r1, #2 + beq _080BE744 + cmp r1, #3 + beq _080BE78C + b _080BE83E +_080BE706: + movs r0, #0x15 + rsbs r0, r0, #0 + str r3, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r5] + ldr r3, _080BE720 + adds r0, r0, r3 + movs r1, #1 + b _080BE774 + .align 2, 0 +_080BE720: .4byte 0x0000064E +_080BE724: + movs r0, #0x15 + rsbs r0, r0, #0 + str r3, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r5] + ldr r1, _080BE740 + adds r0, r0, r1 + movs r1, #2 + b _080BE774 + .align 2, 0 +_080BE740: .4byte 0x0000064E +_080BE744: + ldr r0, _080BE758 + ldr r0, [r0] + ldrb r0, [r0, #2] + ands r1, r0 + cmp r1, #0 + bne _080BE75C + movs r0, #0x20 + bl sub_080A306C + b _080BE83E + .align 2, 0 +_080BE758: .4byte gUnknown_20397F4 +_080BE75C: + movs r0, #0x15 + rsbs r0, r0, #0 + str r3, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, [r5] + ldr r3, _080BE784 + adds r0, r0, r3 + movs r1, #3 +_080BE774: + strb r1, [r0] + ldr r0, _080BE788 + str r0, [r4] + movs r0, #0x15 + bl sub_080A306C + b _080BE83E + .align 2, 0 +_080BE784: .4byte 0x0000064E +_080BE788: .4byte sub_080BE854 +_080BE78C: + movs r0, #1 + rsbs r0, r0, #0 + str r3, [sp] +_080BE792: + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BE7A8 + str r0, [r4] + movs r0, #3 + bl sub_080A306C + b _080BE83E + .align 2, 0 +_080BE7A8: .4byte sub_080BE8F4 +_080BE7AC: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + bne _080BE7C8 + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080BE7FC + ldr r0, _080BE7F0 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080BE7FC +_080BE7C8: + ldr r3, _080BE7F4 + ldr r0, [r3] + ldr r4, _080BE7F8 + adds r2, r0, r4 + ldrb r0, [r2] + cmp r0, #0 + beq _080BE7FC + subs r0, #1 + strb r0, [r2] + ldr r0, [r3] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0xd + bl sub_080BF5C8 + movs r0, #0x6d + bl sub_080A306C + b _080BE83E + .align 2, 0 +_080BE7F0: .4byte gUnknown_3005AF0 +_080BE7F4: .4byte gUnknown_20397EC +_080BE7F8: .4byte 0x0000064D +_080BE7FC: + ldrh r1, [r1, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080BE81A + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080BE83E + ldr r0, _080BE848 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080BE83E +_080BE81A: + ldr r2, _080BE84C + ldr r0, [r2] + ldr r3, _080BE850 + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, #2 + bhi _080BE83E + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + movs r1, #0xd + bl sub_080BF5C8 + movs r0, #0x6d + bl sub_080A306C +_080BE83E: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BE848: .4byte gUnknown_3005AF0 +_080BE84C: .4byte gUnknown_20397EC +_080BE850: .4byte 0x0000064D + thumb_func_end sub_080BE678 + + thumb_func_start sub_080BE854 +sub_080BE854: @ 0x080BE854 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BE890 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BE8B0 + ldr r1, _080BE894 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x10] + bl sub_0818D54C + ldr r0, _080BE898 + ldr r0, [r0] + ldr r1, _080BE89C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + beq _080BE8A4 + cmp r0, #2 + ble _080BE88C + cmp r0, #3 + beq _080BE8AC +_080BE88C: + ldr r0, _080BE8A0 + b _080BE8AE + .align 2, 0 +_080BE890: .4byte gUnknown_2037C74 +_080BE894: .4byte gUnknown_3005B60 +_080BE898: .4byte gUnknown_20397EC +_080BE89C: .4byte 0x0000064E +_080BE8A0: .4byte sub_080BE930 +_080BE8A4: + ldr r0, _080BE8A8 + b _080BE8AE + .align 2, 0 +_080BE8A8: .4byte sub_080BEAD4 +_080BE8AC: + ldr r0, _080BE8B8 +_080BE8AE: + str r0, [r4] +_080BE8B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BE8B8: .4byte sub_080BF0C8 + thumb_func_end sub_080BE854 + + thumb_func_start sub_080BE8BC +sub_080BE8BC: @ 0x080BE8BC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BE8E8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BE8E2 + ldr r0, _080BE8EC + lsls r4, r2, #2 + adds r4, r4, r2 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0x10] + bl sub_0818D54C + ldr r0, _080BE8F0 + str r0, [r4] +_080BE8E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BE8E8: .4byte gUnknown_2037C74 +_080BE8EC: .4byte gUnknown_3005B60 +_080BE8F0: .4byte sub_080BE1C8 + thumb_func_end sub_080BE8BC + + thumb_func_start sub_080BE8F4 +sub_080BE8F4: @ 0x080BE8F4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BE928 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BE920 + ldr r0, _080BE92C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x10] + bl sub_0818D54C + bl sub_080BE634 + adds r0, r4, #0 + bl sub_080A8964 +_080BE920: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BE928: .4byte gUnknown_2037C74 +_080BE92C: .4byte gUnknown_3005B60 + thumb_func_end sub_080BE8F4 + + thumb_func_start sub_080BE930 +sub_080BE930: @ 0x080BE930 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _080BE98C + movs r0, #0x87 + lsls r0, r0, #3 + adds r7, r2, r0 + ldrb r0, [r7] + cmp r0, #1 + beq _080BE9A4 + cmp r0, #1 + ble _080BE94C + cmp r0, #2 + beq _080BE9E0 +_080BE94C: + ldr r0, _080BE990 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080BEA1A + ldr r4, _080BE994 + ldr r0, [r4] + ldr r1, _080BE998 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + ldr r1, _080BE99C + ldr r0, [r2, #0xc] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_080BFF08 + ldr r0, [r4] + ldr r1, _080BE9A0 + adds r0, r0, r1 + strb r5, [r0] + movs r0, #1 + strb r0, [r7] + b _080BEA1A + .align 2, 0 +_080BE98C: .4byte gUnknown_3002360 +_080BE990: .4byte gUnknown_2037C74 +_080BE994: .4byte gUnknown_20397EC +_080BE998: .4byte 0x0000064A +_080BE99C: .4byte gUnknown_3005E14 +_080BE9A0: .4byte 0x0000064D +_080BE9A4: + movs r0, #0xd + bl sub_080BF5B0 + movs r0, #0 + movs r1, #0xd + bl sub_080BF638 + ldr r0, _080BE9D8 + ldr r0, [r0] + ldr r1, _080BE9DC + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_080BBF80 + movs r1, #0xd0 + lsls r1, r1, #4 + movs r0, #0xa + bl sub_08001144 + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + b _080BEA1A + .align 2, 0 +_080BE9D8: .4byte gUnknown_20397EC +_080BE9DC: .4byte 0x0000064C +_080BE9E0: + ldr r0, _080BEA20 + ldr r0, [r0] + ldrh r0, [r0] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r5, _080BEA24 + ldr r1, [r5] + ldr r4, _080BEA28 + adds r1, r1, r4 + bl sub_0813D4DC + ldr r0, _080BEA2C + ldr r0, [r0] + bl sub_080006F0 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0 + strb r1, [r0] + strb r1, [r7] + ldr r1, _080BEA30 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BEA34 + str r1, [r0] +_080BEA1A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BEA20: .4byte gUnknown_20397F4 +_080BEA24: .4byte gUnknown_20397EC +_080BEA28: .4byte 0x0000064E +_080BEA2C: .4byte gUnknown_3005E14 +_080BEA30: .4byte gUnknown_3005B60 +_080BEA34: .4byte sub_080BEA38 + thumb_func_end sub_080BE930 + + thumb_func_start sub_080BEA38 +sub_080BEA38: @ 0x080BEA38 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BEA60 + ldr r0, [r0] + ldr r1, _080BEA64 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080BEA5A + ldr r0, _080BEA68 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BEA6C + str r0, [r1] +_080BEA5A: + pop {r0} + bx r0 + .align 2, 0 +_080BEA60: .4byte gUnknown_20397EC +_080BEA64: .4byte 0x0000064E +_080BEA68: .4byte gUnknown_3005B60 +_080BEA6C: .4byte sub_080BEA70 + thumb_func_end sub_080BEA38 + + thumb_func_start sub_080BEA70 +sub_080BEA70: @ 0x080BEA70 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BEAA4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BEAC6 + ldr r0, _080BEAA8 + ldr r0, [r0] + ldr r1, _080BEAAC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080BEA94 + cmp r0, #2 + beq _080BEAB8 +_080BEA94: + ldr r0, _080BEAB0 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BEAB4 + b _080BEAC4 + .align 2, 0 +_080BEAA4: .4byte gUnknown_2037C74 +_080BEAA8: .4byte gUnknown_20397EC +_080BEAAC: .4byte 0x0000064E +_080BEAB0: .4byte gUnknown_3005B60 +_080BEAB4: .4byte sub_080BE1C8 +_080BEAB8: + ldr r0, _080BEACC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080BEAD0 +_080BEAC4: + str r0, [r1] +_080BEAC6: + pop {r0} + bx r0 + .align 2, 0 +_080BEACC: .4byte gUnknown_3005B60 +_080BEAD0: .4byte sub_080BEAD4 + thumb_func_end sub_080BEA70 + + thumb_func_start sub_080BEAD4 +sub_080BEAD4: @ 0x080BEAD4 + push {r4, r5, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080BEAF8 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xa + bhi _080BEB2C + lsls r0, r0, #2 + ldr r1, _080BEAFC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BEAF8: .4byte gUnknown_3002360 +_080BEAFC: .4byte _080BEB00 +_080BEB00: @ jump table + .4byte _080BEB2C @ case 0 + .4byte _080BEB94 @ case 1 + .4byte _080BEBE4 @ case 2 + .4byte _080BEC10 @ case 3 + .4byte _080BEC24 @ case 4 + .4byte _080BEC6C @ case 5 + .4byte _080BECB8 @ case 6 + .4byte _080BED34 @ case 7 + .4byte _080BEDB0 @ case 8 + .4byte _080BEDDC @ case 9 + .4byte _080BEE2C @ case 10 +_080BEB2C: + ldr r0, _080BEB78 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BEB3A + b _080BEE4E +_080BEB3A: + ldr r0, _080BEB7C + bl m4aMPlayStop + ldr r5, _080BEB80 + ldr r0, [r5] + ldr r3, _080BEB84 + adds r0, r0, r3 + movs r1, #6 + strb r1, [r0] + ldr r1, _080BEB88 + ldr r4, _080BEB8C + ldr r0, [r4, #0xc] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_080BFF08 + ldr r0, [r5] + ldr r1, _080BEB90 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + movs r2, #0x87 + lsls r2, r2, #3 + adds r4, r4, r2 + strb r1, [r4] + b _080BEE4E + .align 2, 0 +_080BEB78: .4byte gUnknown_2037C74 +_080BEB7C: .4byte gUnknown_30074D0 +_080BEB80: .4byte gUnknown_20397EC +_080BEB84: .4byte 0x0000064A +_080BEB88: .4byte gUnknown_3005E14 +_080BEB8C: .4byte gUnknown_3002360 +_080BEB90: .4byte 0x0000064D +_080BEB94: + ldr r1, _080BEBD8 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r1, _080BEBDC + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #3 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + ldr r1, _080BEBE0 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _080BEE1E + .align 2, 0 +_080BEBD8: .4byte gUnknown_8537E8C +_080BEBDC: .4byte gUnknown_8537B44 +_080BEBE0: .4byte gUnknown_3002360 +_080BEBE4: + movs r0, #0xd + bl sub_080BF5B0 + movs r0, #1 + movs r1, #0xd + bl sub_080BF638 + ldr r0, _080BEC08 + ldr r0, [r0] + ldr r4, _080BEC0C + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_080BBF80 + b _080BEE16 + .align 2, 0 +_080BEC08: .4byte gUnknown_20397EC +_080BEC0C: .4byte 0x0000064C +_080BEC10: + bl sub_080A133C + ldr r1, _080BEC20 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _080BEE1E + .align 2, 0 +_080BEC20: .4byte gUnknown_3002360 +_080BEC24: + ldr r0, _080BEC5C + ldr r0, [r0] + ldrh r1, [r0] + movs r0, #0 + movs r2, #0xb + movs r3, #4 + bl sub_080C00A0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + ldr r0, _080BEC60 + movs r3, #0xb0 + lsls r3, r3, #0x14 + adds r1, r1, r3 + lsrs r1, r1, #0x18 + movs r2, #4 + bl sub_080BE07C + ldr r0, _080BEC64 + movs r1, #0xb + movs r2, #6 + bl sub_080BE07C + ldr r1, _080BEC68 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _080BEE1E + .align 2, 0 +_080BEC5C: .4byte gUnknown_20397F4 +_080BEC60: .4byte gUnknown_85C8FD4 +_080BEC64: .4byte gUnknown_85C8FD6 +_080BEC68: .4byte gUnknown_3002360 +_080BEC6C: + ldr r0, _080BECA8 + ldr r0, [r0] + ldrh r0, [r0] + movs r1, #0x30 + movs r2, #0x38 + movs r3, #0 + bl sub_080C03F4 + ldr r2, _080BECAC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r3, #0 + strh r0, [r1, #0x10] + ldr r2, _080BECB0 + movs r4, #0x10 + ldrsh r0, [r1, r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + ldr r0, _080BECB4 + strb r3, [r0] + b _080BEE16 + .align 2, 0 +_080BECA8: .4byte gUnknown_20397F4 +_080BECAC: .4byte gUnknown_3005B60 +_080BECB0: .4byte gUnknown_20205AC +_080BECB4: .4byte gUnknown_3005F2C +_080BECB8: + ldr r1, _080BED14 + ldr r0, [sp, #4] + ands r0, r1 + ldr r1, _080BED18 + orrs r0, r1 + ldr r1, _080BED1C + ands r0, r1 + movs r1, #0xf8 + lsls r1, r1, #0xd + orrs r0, r1 + ldr r1, _080BED20 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0x14 + orrs r0, r1 + str r0, [sp, #4] + ldr r1, _080BED24 + ldr r0, [sp, #8] + ands r0, r1 + movs r1, #0xf0 + lsls r1, r1, #5 + orrs r0, r1 + ldr r1, _080BED28 + ands r0, r1 + movs r1, #0xc + orrs r0, r1 + str r0, [sp, #8] + add r0, sp, #4 + movs r1, #2 + bl sub_08145420 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BECFE + b _080BEE4E +_080BECFE: + ldr r1, _080BED2C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + movs r2, #0 + strb r0, [r1] + ldr r0, _080BED30 + strb r2, [r0] + b _080BEE4E + .align 2, 0 +_080BED14: .4byte 0xFFFF0000 +_080BED18: .4byte 0x00004020 +_080BED1C: .4byte 0xFF00FFFF +_080BED20: .4byte 0x00FFFFFF +_080BED24: .4byte 0xFFFF00FF +_080BED28: .4byte 0xFFFFFF00 +_080BED2C: .4byte gUnknown_3002360 +_080BED30: .4byte gUnknown_3005F2C +_080BED34: + ldr r1, _080BEDA0 + ldr r0, [sp, #0xc] + ands r0, r1 + movs r1, #0x90 + lsls r1, r1, #0x14 + orrs r0, r1 + str r0, [sp, #0xc] + ldr r2, _080BEDA4 + add r0, sp, #0xc + ldr r1, [r0, #4] + ands r1, r2 + movs r2, #0x12 + orrs r1, r2 + ldr r2, _080BEDA8 + ands r1, r2 + movs r2, #0xc0 + lsls r2, r2, #2 + orrs r1, r2 + str r1, [r0, #4] + movs r1, #3 + bl sub_0814591C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BED74 + ldr r1, _080BEDAC + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080BED74: + movs r0, #3 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080BEE4E + .align 2, 0 +_080BEDA0: .4byte 0x00FFFFFF +_080BEDA4: .4byte 0xFFFFFF00 +_080BEDA8: .4byte 0xFFFF00FF +_080BEDAC: .4byte gUnknown_3002360 +_080BEDB0: + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080BEDD4 + ldr r0, [r0] + bl sub_080006F0 + ldr r1, _080BEDD8 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _080BEE1E + .align 2, 0 +_080BEDD4: .4byte gUnknown_3005E14 +_080BEDD8: .4byte gUnknown_3002360 +_080BEDDC: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_080BEE16: + ldr r1, _080BEE28 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_080BEE1E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080BEE4E + .align 2, 0 +_080BEE28: .4byte gUnknown_3002360 +_080BEE2C: + ldr r0, _080BEE58 + ldr r0, [r0] + ldr r1, _080BEE5C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + movs r3, #0x87 + lsls r3, r3, #3 + adds r0, r2, r3 + strb r1, [r0] + ldr r1, _080BEE60 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BEE64 + str r1, [r0] +_080BEE4E: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BEE58: .4byte gUnknown_20397EC +_080BEE5C: .4byte 0x0000064E +_080BEE60: .4byte gUnknown_3005B60 +_080BEE64: .4byte sub_080BEE68 + thumb_func_end sub_080BEAD4 + + thumb_func_start sub_080BEE68 +sub_080BEE68: @ 0x080BEE68 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + bl sub_08145528 + bl sub_080A2FB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BEE88 + movs r0, #1 + bl sub_080BF098 + b _080BEE8E +_080BEE88: + movs r0, #0 + bl sub_080BF098 +_080BEE8E: + ldr r1, _080BEEB8 + ldrh r2, [r1, #0x2e] + movs r0, #1 + ands r0, r2 + adds r5, r1, #0 + cmp r0, #0 + beq _080BEEC0 + movs r0, #1 + bl sub_080BF098 + ldr r0, _080BEEBC + ldr r0, [r0] + ldrh r0, [r0] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08145600 + b _080BF00E + .align 2, 0 +_080BEEB8: .4byte gUnknown_3002360 +_080BEEBC: .4byte gUnknown_20397F4 +_080BEEC0: + ldr r0, _080BEF18 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080BEED2 + b _080BF00E +_080BEED2: + movs r0, #2 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _080BEF30 + movs r0, #0x15 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BEF1C + bl m4aMPlayContinue + ldr r0, _080BEF20 + ldr r0, [r0] + ldr r1, _080BEF24 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r1, _080BEF28 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BEF2C + str r1, [r0] + movs r0, #3 + bl sub_080A306C + b _080BF00E + .align 2, 0 +_080BEF18: .4byte gUnknown_2037C74 +_080BEF1C: .4byte gUnknown_30074D0 +_080BEF20: .4byte gUnknown_20397EC +_080BEF24: .4byte 0x0000064E +_080BEF28: .4byte gUnknown_3005B60 +_080BEF2C: .4byte sub_080BF02C +_080BEF30: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + bne _080BEF4C + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080BEF9C + ldr r0, _080BEF84 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080BEF9C +_080BEF4C: + movs r0, #0x15 + rsbs r0, r0, #0 + str r3, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BEF88 + bl m4aMPlayContinue + ldr r0, _080BEF8C + ldr r0, [r0] + ldr r1, _080BEF90 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r1, _080BEF94 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BEF98 + str r1, [r0] + movs r0, #0x6d + bl sub_080A306C + b _080BF00E + .align 2, 0 +_080BEF84: .4byte gUnknown_3005AF0 +_080BEF88: .4byte gUnknown_30074D0 +_080BEF8C: .4byte gUnknown_20397EC +_080BEF90: .4byte 0x0000064E +_080BEF94: .4byte gUnknown_3005B60 +_080BEF98: .4byte sub_080BF02C +_080BEF9C: + ldrh r1, [r5, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080BEFBA + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080BF00E + ldr r0, _080BEFD0 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080BF00E +_080BEFBA: + ldr r0, _080BEFD4 + ldr r0, [r0] + ldrb r1, [r0, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080BEFD8 + movs r0, #0x20 + bl sub_080A306C + b _080BF00E + .align 2, 0 +_080BEFD0: .4byte gUnknown_3005AF0 +_080BEFD4: .4byte gUnknown_20397F4 +_080BEFD8: + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BF018 + bl m4aMPlayContinue + ldr r0, _080BF01C + ldr r0, [r0] + ldr r1, _080BF020 + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + ldr r1, _080BF024 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BF028 + str r1, [r0] + movs r0, #0x6d + bl sub_080A306C +_080BF00E: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BF018: .4byte gUnknown_30074D0 +_080BF01C: .4byte gUnknown_20397EC +_080BF020: .4byte 0x0000064E +_080BF024: .4byte gUnknown_3005B60 +_080BF028: .4byte sub_080BF02C + thumb_func_end sub_080BEE68 + + thumb_func_start sub_080BF02C +sub_080BF02C: @ 0x080BF02C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BF06C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BF08C + bl sub_081459E0 + ldr r1, _080BF070 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x10] + bl sub_0818D54C + ldr r0, _080BF074 + ldr r0, [r0] + ldr r1, _080BF078 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + beq _080BF080 + cmp r0, #2 + ble _080BF068 + cmp r0, #3 + beq _080BF088 +_080BF068: + ldr r0, _080BF07C + b _080BF08A + .align 2, 0 +_080BF06C: .4byte gUnknown_2037C74 +_080BF070: .4byte gUnknown_3005B60 +_080BF074: .4byte gUnknown_20397EC +_080BF078: .4byte 0x0000064E +_080BF07C: .4byte sub_080BE1C8 +_080BF080: + ldr r0, _080BF084 + b _080BF08A + .align 2, 0 +_080BF084: .4byte sub_080BE930 +_080BF088: + ldr r0, _080BF094 +_080BF08A: + str r0, [r4] +_080BF08C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF094: .4byte sub_080BF0C8 + thumb_func_end sub_080BF02C + + thumb_func_start sub_080BF098 +sub_080BF098: @ 0x080BF098 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BF0AC + ldr r1, _080BF0A8 + b _080BF0AE + .align 2, 0 +_080BF0A8: .4byte 0x00000392 +_080BF0AC: + ldr r1, _080BF0C4 +_080BF0AE: + mov r0, sp + strh r1, [r0] + mov r0, sp + movs r1, #0x5d + movs r2, #2 + bl sub_080A1200 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080BF0C4: .4byte 0x000002AF + thumb_func_end sub_080BF098 + + thumb_func_start sub_080BF0C8 +sub_080BF0C8: @ 0x080BF0C8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080BF0EC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #9 + bhi _080BF11C + lsls r0, r0, #2 + ldr r1, _080BF0F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BF0EC: .4byte gUnknown_3002360 +_080BF0F0: .4byte _080BF0F4 +_080BF0F4: @ jump table + .4byte _080BF11C @ case 0 + .4byte _080BF174 @ case 1 + .4byte _080BF1AC @ case 2 + .4byte _080BF1D8 @ case 3 + .4byte _080BF228 @ case 4 + .4byte _080BF22E @ case 5 + .4byte _080BF2E8 @ case 6 + .4byte _080BF3A4 @ case 7 + .4byte _080BF3D0 @ case 8 + .4byte _080BF420 @ case 9 +_080BF11C: + ldr r0, _080BF160 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BF12A + b _080BF450 +_080BF12A: + ldr r4, _080BF164 + ldr r0, [r4] + ldr r1, _080BF168 + adds r0, r0, r1 + movs r1, #7 + strb r1, [r0] + ldr r1, _080BF16C + ldr r0, [r5, #0xc] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_080BFF08 + ldr r0, [r4] + ldr r2, _080BF170 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0] + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] + b _080BF450 + .align 2, 0 +_080BF160: .4byte gUnknown_2037C74 +_080BF164: .4byte gUnknown_20397EC +_080BF168: .4byte 0x0000064A +_080BF16C: .4byte gUnknown_3005E14 +_080BF170: .4byte 0x0000064D +_080BF174: + ldr r1, _080BF1A4 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r1, _080BF1A8 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + b _080BF40A + .align 2, 0 +_080BF1A4: .4byte gUnknown_8537E8C +_080BF1A8: .4byte gUnknown_8537C30 +_080BF1AC: + movs r0, #0xd + bl sub_080BF5B0 + movs r0, #2 + movs r1, #0xd + bl sub_080BF638 + ldr r0, _080BF1D0 + ldr r0, [r0] + ldr r1, _080BF1D4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_080BBF80 + b _080BF40A + .align 2, 0 +_080BF1D0: .4byte gUnknown_20397EC +_080BF1D4: .4byte 0x0000064C +_080BF1D8: + ldr r0, _080BF214 + ldr r0, [r0] + ldrh r1, [r0] + movs r0, #0 + movs r2, #4 + movs r3, #0xf + bl sub_080C00A0 + ldr r0, _080BF218 + movs r1, #9 + movs r2, #0xf + bl sub_080BE07C + ldr r0, _080BF21C + ldr r0, [r0] + movs r1, #0xb + movs r2, #0xf + bl sub_080BE07C + ldr r0, _080BF220 + movs r1, #0x10 + movs r2, #0xf + bl sub_080BE07C + ldr r1, _080BF224 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080BF412 + .align 2, 0 +_080BF214: .4byte gUnknown_20397F4 +_080BF218: .4byte gUnknown_85C8FDB +_080BF21C: .4byte gUnknown_3005AF0 +_080BF220: .4byte gUnknown_85C8FDD +_080BF224: .4byte gUnknown_3002360 +_080BF228: + bl sub_080A133C + b _080BF40A +_080BF22E: + ldr r0, _080BF2CC + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x98 + movs r2, #0x38 + movs r3, #0 + bl sub_080C0450 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080BF2D0 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #3] + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #5] + ldr r3, _080BF2D4 + ldr r0, _080BF2D8 + ldr r2, [r0] + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x18] + strh r0, [r4, #0x26] + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x16] + str r1, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldr r0, _080BF2DC + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080BF2E0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0x12] + ldr r1, _080BF2E4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080BF412 + .align 2, 0 +_080BF2CC: .4byte gUnknown_3005AF0 +_080BF2D0: .4byte gUnknown_20205AC +_080BF2D4: .4byte gUnknown_854069C +_080BF2D8: .4byte gUnknown_20397F4 +_080BF2DC: .4byte gUnknown_85430F0 +_080BF2E0: .4byte gUnknown_3005B60 +_080BF2E4: .4byte gUnknown_3002360 +_080BF2E8: + ldr r5, _080BF390 + ldr r0, [r5] + ldrh r0, [r0] + movs r1, #0x58 + movs r2, #0x38 + movs r3, #1 + bl sub_080C03F4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080BF394 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #3] + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #5] + ldr r3, _080BF398 + ldr r2, [r5] + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x14] + strh r0, [r4, #0x26] + ldrh r1, [r2] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x12] + str r1, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldr r0, _080BF39C + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080BF3A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0x10] + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080BF40A + .align 2, 0 +_080BF390: .4byte gUnknown_20397F4 +_080BF394: .4byte gUnknown_20205AC +_080BF398: .4byte gUnknown_854069C +_080BF39C: .4byte gUnknown_85430F0 +_080BF3A0: .4byte gUnknown_3005B60 +_080BF3A4: + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080BF3C8 + ldr r0, [r0] + bl sub_080006F0 + ldr r1, _080BF3CC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080BF412 + .align 2, 0 +_080BF3C8: .4byte gUnknown_3005E14 +_080BF3CC: .4byte gUnknown_3002360 +_080BF3D0: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_080BF40A: + ldr r1, _080BF41C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_080BF412: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080BF450 + .align 2, 0 +_080BF41C: .4byte gUnknown_3002360 +_080BF420: + ldr r0, _080BF458 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080BF450 + ldr r0, _080BF45C + ldr r0, [r0] + ldr r1, _080BF460 + adds r0, r0, r1 + strb r2, [r0] + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r5, r1 + strb r2, [r0] + ldr r1, _080BF464 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BF468 + str r1, [r0] +_080BF450: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF458: .4byte gUnknown_2037C74 +_080BF45C: .4byte gUnknown_20397EC +_080BF460: .4byte 0x0000064E +_080BF464: .4byte gUnknown_3005B60 +_080BF468: .4byte sub_080BF46C + thumb_func_end sub_080BF0C8 + + thumb_func_start sub_080BF46C +sub_080BF46C: @ 0x080BF46C + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _080BF4B8 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _080BF4CC + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BF4BC + ldr r0, [r0] + ldr r1, _080BF4C0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r1, _080BF4C4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BF4C8 + str r1, [r0] + movs r0, #3 + bl sub_080A306C + b _080BF518 + .align 2, 0 +_080BF4B8: .4byte gUnknown_3002360 +_080BF4BC: .4byte gUnknown_20397EC +_080BF4C0: .4byte 0x0000064E +_080BF4C4: .4byte gUnknown_3005B60 +_080BF4C8: .4byte sub_080BF534 +_080BF4CC: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080BF4E8 + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080BF518 + ldr r0, _080BF520 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080BF518 +_080BF4E8: + movs r0, #0x15 + rsbs r0, r0, #0 + str r2, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080BF524 + ldr r0, [r0] + ldr r1, _080BF528 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r1, _080BF52C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080BF530 + str r1, [r0] + movs r0, #0x6d + bl sub_080A306C +_080BF518: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BF520: .4byte gUnknown_3005AF0 +_080BF524: .4byte gUnknown_20397EC +_080BF528: .4byte 0x0000064E +_080BF52C: .4byte gUnknown_3005B60 +_080BF530: .4byte sub_080BF534 + thumb_func_end sub_080BF46C + + thumb_func_start sub_080BF534 +sub_080BF534: @ 0x080BF534 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080BF574 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BF58C + ldr r1, _080BF578 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x10] + bl sub_0818D54C + ldrh r0, [r4, #0x12] + bl sub_0818D61C + ldr r0, _080BF57C + ldr r0, [r0] + ldr r1, _080BF580 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080BF56E + cmp r0, #2 + beq _080BF588 +_080BF56E: + ldr r0, _080BF584 + b _080BF58A + .align 2, 0 +_080BF574: .4byte gUnknown_2037C74 +_080BF578: .4byte gUnknown_3005B60 +_080BF57C: .4byte gUnknown_20397EC +_080BF580: .4byte 0x0000064E +_080BF584: .4byte sub_080BE1C8 +_080BF588: + ldr r0, _080BF594 +_080BF58A: + str r0, [r4] +_080BF58C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BF594: .4byte sub_080BEAD4 + thumb_func_end sub_080BF534 + + thumb_func_start sub_080BF598 +sub_080BF598: @ 0x080BF598 + push {lr} + ldr r1, _080BF5AC + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + pop {r0} + bx r0 + .align 2, 0 +_080BF5AC: .4byte gUnknown_8537D24 + thumb_func_end sub_080BF598 + + thumb_func_start sub_080BF5B0 +sub_080BF5B0: @ 0x080BF5B0 + push {lr} + ldr r1, _080BF5C4 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + pop {r0} + bx r0 + .align 2, 0 +_080BF5C4: .4byte gUnknown_8537DB4 + thumb_func_end sub_080BF5B0 + + thumb_func_start sub_080BF5C8 +sub_080BF5C8: @ 0x080BF5C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #1 + bl sub_08002194 + adds r7, r0, #0 + movs r1, #0 +_080BF5DE: + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0x80 + lsls r3, r3, #7 + cmp r1, r8 + bne _080BF5F4 + movs r3, #0x80 + lsls r3, r3, #6 +_080BF5F4: + movs r2, #0 + adds r6, r1, #1 + ldr r4, _080BF634 +_080BF5FA: + adds r1, r5, r2 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r0, [r1] + ands r0, r4 + orrs r0, r3 + strh r0, [r1] + adds r1, #0x40 + ldrh r0, [r1] + ands r0, r4 + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #6 + bls _080BF5FA + lsls r0, r6, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _080BF5DE + movs r0, #1 + bl sub_08002248 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF634: .4byte 0x00000FFF + thumb_func_end sub_080BF5C8 + + thumb_func_start sub_080BF638 +sub_080BF638: @ 0x080BF638 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #1 + bl sub_08002194 + adds r7, r0, #0 + movs r1, #0 +_080BF64E: + lsls r0, r1, #3 + subs r0, r0, r1 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r1, r8 + beq _080BF660 + cmp r1, #3 + bne _080BF666 +_080BF660: + movs r3, #0x80 + lsls r3, r3, #6 + b _080BF66A +_080BF666: + movs r3, #0x80 + lsls r3, r3, #7 +_080BF66A: + movs r2, #0 + adds r5, r1, #1 + ldr r4, _080BF6AC +_080BF670: + adds r1, r6, r2 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r0, [r1] + ands r0, r4 + orrs r0, r3 + strh r0, [r1] + adds r1, #0x40 + ldrh r0, [r1] + ands r0, r4 + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #6 + bls _080BF670 + lsls r0, r5, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _080BF64E + movs r0, #1 + bl sub_08002248 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF6AC: .4byte 0x00000FFF + thumb_func_end sub_080BF638 + + thumb_func_start sub_080BF6B0 +sub_080BF6B0: @ 0x080BF6B0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _080BF6EC + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080BF6F0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + strh r4, [r1, #0xa] + strh r5, [r1, #0x20] + lsrs r5, r5, #0x10 + strh r5, [r1, #0x22] + strh r6, [r1, #0x24] + lsrs r6, r6, #0x10 + strh r6, [r1, #0x26] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080BF6EC: .4byte sub_080BF6F4 +_080BF6F0: .4byte gUnknown_3005B60 + thumb_func_end sub_080BF6B0 + + thumb_func_start sub_080BF6F4 +sub_080BF6F4: @ 0x080BF6F4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080BF71C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r5, [r0, #0xa] + movs r2, #8 + ldrsh r0, [r0, r2] + adds r4, r1, #0 + cmp r0, #6 + bhi _080BF740 + lsls r0, r0, #2 + ldr r1, _080BF720 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080BF71C: .4byte gUnknown_3005B60 +_080BF720: .4byte _080BF724 +_080BF724: @ jump table + .4byte _080BF740 @ case 0 + .4byte _080BF7C8 @ case 1 + .4byte _080BF834 @ case 2 + .4byte _080BF83E @ case 3 + .4byte _080BF904 @ case 4 + .4byte _080BF95C @ case 5 + .4byte _080BF9A0 @ case 6 +_080BF740: + ldr r0, _080BF7B0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080BF74E + b _080BF9D0 +_080BF74E: + ldr r1, _080BF7B4 + ldr r0, _080BF7B8 + ldr r0, [r0, #0xc] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_080BFF08 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080BF7BC + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #2 + bl sub_0800212C + ldr r0, _080BF7C0 + bl sub_08003090 + bl sub_08004480 + ldr r1, _080BF7C4 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + b _080BF9D0 + .align 2, 0 +_080BF7B0: .4byte gUnknown_2037C74 +_080BF7B4: .4byte gUnknown_3005E14 +_080BF7B8: .4byte gUnknown_3002360 +_080BF7BC: .4byte gUnknown_8543148 +_080BF7C0: .4byte gUnknown_8543150 +_080BF7C4: .4byte gUnknown_3005B60 +_080BF7C8: + ldr r1, _080BF828 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r1, _080BF82C + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + ldr r0, _080BF830 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r1, [r4, #0xa] + movs r0, #1 + bl sub_080C0288 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + bl sub_080A133C + movs r0, #0 + bl sub_080BBF80 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080BF9D0 + .align 2, 0 +_080BF828: .4byte gUnknown_8537E8C +_080BF82C: .4byte gUnknown_8537A10 +_080BF830: .4byte gUnknown_3005B60 +_080BF834: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + b _080BF994 +_080BF83E: + ldr r0, _080BF868 + movs r1, #3 + movs r2, #0 + bl sub_080BE07C + bl sub_0809CD04 + cmp r0, #0 + bne _080BF86C + adds r0, r5, #0 + bl sub_0806CF1C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + movs r2, #0xd + movs r3, #3 + bl sub_080C0020 + b _080BF878 + .align 2, 0 +_080BF868: .4byte gUnknown_85C8FE7 +_080BF86C: + movs r0, #0 + adds r1, r5, #0 + movs r2, #0xd + movs r3, #3 + bl sub_080C0020 +_080BF878: + movs r0, #0 + adds r1, r5, #0 + movs r2, #0x11 + movs r3, #3 + bl sub_080C00A0 + ldr r0, _080BF8F4 + movs r1, #0xd + movs r2, #5 + bl sub_080BE07C + ldr r0, _080BF8F8 + movs r1, #0x10 + movs r2, #7 + bl sub_080BE07C + ldr r0, _080BF8FC + movs r1, #0x10 + movs r2, #9 + bl sub_080BE07C + lsls r4, r5, #3 + subs r4, r4, r5 + lsls r4, r4, #2 + ldr r6, _080BF900 + adds r5, r4, r6 + movs r0, #0 + adds r1, r5, #0 + movs r2, #0xd + movs r3, #5 + bl sub_080C0150 + ldrh r1, [r5, #6] + movs r0, #0 + movs r2, #0x10 + movs r3, #7 + bl sub_080C01C8 + ldrh r1, [r5, #8] + movs r0, #0 + movs r2, #0x10 + movs r3, #9 + bl sub_080C01C8 + adds r6, #0xc + adds r4, r4, r6 + ldr r0, [r4] + movs r1, #3 + movs r2, #0xd + bl sub_080BE07C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080BF98A + .align 2, 0 +_080BF8F4: .4byte gUnknown_85C8FBB +_080BF8F8: .4byte gUnknown_85C8FC5 +_080BF8FC: .4byte gUnknown_85C8FCC +_080BF900: .4byte gUnknown_854069C +_080BF904: + adds r0, r5, #0 + movs r1, #0x30 + movs r2, #0x38 + movs r3, #0 + bl sub_080C03F4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080BF950 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080BF954 + ldr r0, [r0] + bl sub_080006F0 + ldr r1, _080BF958 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0xe] + b _080BF994 + .align 2, 0 +_080BF950: .4byte gUnknown_20205AC +_080BF954: .4byte gUnknown_3005E14 +_080BF958: .4byte gUnknown_3005B60 +_080BF95C: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_080BF98A: + ldr r1, _080BF99C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 +_080BF994: + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080BF9D0 + .align 2, 0 +_080BF99C: .4byte gUnknown_3005B60 +_080BF9A0: + ldr r0, _080BF9D8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080BF9D0 + adds r0, r5, #0 + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080A2B3C + ldr r1, _080BF9DC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0xc] + ldr r1, _080BF9E0 + str r1, [r0] +_080BF9D0: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080BF9D8: .4byte gUnknown_2037C74 +_080BF9DC: .4byte gUnknown_3005B60 +_080BF9E0: .4byte sub_080BF9E4 + thumb_func_end sub_080BF6F4 + + thumb_func_start sub_080BF9E4 +sub_080BF9E4: @ 0x080BF9E4 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080BFA2C + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080BFA44 + ldr r0, _080BFA30 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r3, _080BFA34 + ldr r0, _080BFA38 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xe + ldrsh r2, [r1, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r2, _080BFA3C + str r2, [r0] + ldr r0, _080BFA40 + str r0, [r1] + b _080BFA7A + .align 2, 0 +_080BFA2C: .4byte gUnknown_3002360 +_080BFA30: .4byte 0x0000FFFF +_080BFA34: .4byte gUnknown_20205AC +_080BFA38: .4byte gUnknown_3005B60 +_080BFA3C: .4byte sub_080BFB28 +_080BFA40: .4byte sub_080BFA88 +_080BFA44: + ldr r1, _080BFA68 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0xc] + adds r1, #1 + strh r1, [r0, #0xc] + movs r0, #0x10 + ands r1, r0 + cmp r1, #0 + beq _080BFA70 + ldr r0, _080BFA6C + movs r1, #0x31 + movs r2, #0xe + bl sub_080A1200 + b _080BFA7A + .align 2, 0 +_080BFA68: .4byte gUnknown_3005B60 +_080BFA6C: .4byte gUnknown_8537422 +_080BFA70: + ldr r0, _080BFA84 + movs r1, #0x31 + movs r2, #0xe + bl sub_080A1200 +_080BFA7A: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080BFA84: .4byte gUnknown_8537482 + thumb_func_end sub_080BF9E4 + + thumb_func_start sub_080BFA88 +sub_080BFA88: @ 0x080BFA88 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080BFB1C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080BFB16 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + bl sub_080034D4 + movs r0, #2 + bl sub_08002194 + cmp r0, #0 + beq _080BFAB6 + bl sub_08000BF0 +_080BFAB6: + movs r0, #3 + bl sub_08002194 + cmp r0, #0 + beq _080BFAC4 + bl sub_08000BF0 +_080BFAC4: + ldr r0, _080BFB20 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0xa] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4, #0x22] + lsls r1, r1, #0x10 + ldrh r2, [r4, #0x20] + orrs r1, r2 + ldrh r2, [r4, #0x26] + lsls r2, r2, #0x10 + ldrh r3, [r4, #0x24] + orrs r2, r3 + ldr r5, _080BFB24 + movs r3, #0xe + ldrsh r4, [r4, r3] + lsls r3, r4, #4 + adds r3, r3, r4 + lsls r3, r3, #2 + adds r3, r3, r5 + ldrb r4, [r3, #5] + lsrs r4, r4, #4 + bl sub_0806E1CC + lsls r4, r4, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r4, r1 + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A11BC + adds r0, r6, #0 + bl sub_080A8964 +_080BFB16: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080BFB1C: .4byte gUnknown_2037C74 +_080BFB20: .4byte gUnknown_3005B60 +_080BFB24: .4byte gUnknown_20205AC + thumb_func_end sub_080BFA88 + + thumb_func_start sub_080BFB28 +sub_080BFB28: @ 0x080BFB28 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x20] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0x77 + bgt _080BFB3A + adds r0, r2, #2 + strh r0, [r1, #0x20] +_080BFB3A: + ldrh r2, [r1, #0x20] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0x78 + ble _080BFB48 + subs r0, r2, #2 + strh r0, [r1, #0x20] +_080BFB48: + ldrh r2, [r1, #0x22] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x4f + bgt _080BFB56 + adds r0, r2, #1 + strh r0, [r1, #0x22] +_080BFB56: + ldrh r2, [r1, #0x22] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x50 + ble _080BFB64 + subs r0, r2, #1 + strh r0, [r1, #0x22] +_080BFB64: + pop {r0} + bx r0 + thumb_func_end sub_080BFB28 + + thumb_func_start sub_080BFB68 +sub_080BFB68: @ 0x080BFB68 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080BFB7C + adds r0, r0, r1 + bx lr + .align 2, 0 +_080BFB7C: .4byte gUnknown_854069C + thumb_func_end sub_080BFB68 + + thumb_func_start sub_080BFB80 +sub_080BFB80: @ 0x080BFB80 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + beq _080BFB96 + cmp r1, #1 + beq _080BFBA8 + movs r0, #1 + b _080BFBB4 +_080BFB96: + ldr r0, _080BFBA4 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + b _080BFBB4 + .align 2, 0 +_080BFBA4: .4byte gUnknown_854069C +_080BFBA8: + ldr r0, _080BFBB8 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #8] +_080BFBB4: + pop {r1} + bx r1 + .align 2, 0 +_080BFBB8: .4byte gUnknown_854069C + thumb_func_end sub_080BFB80 + + thumb_func_start sub_080BFBBC +sub_080BFBBC: @ 0x080BFBBC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + adds r3, r2, #0 + ldr r1, _080BFBF0 + adds r0, r0, r1 + lsrs r1, r0, #0x10 + lsrs r0, r0, #0x13 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #7 + ands r1, r0 + movs r0, #0x80 + lsls r0, r0, #0x11 + lsls r0, r1 + lsrs r5, r0, #0x18 + movs r6, #0 + cmp r2, #1 + beq _080BFC54 + cmp r2, #1 + bgt _080BFBF4 + cmp r2, #0 + beq _080BFC02 + b _080BFD40 + .align 2, 0 +_080BFBF0: .4byte 0xFFFF0000 +_080BFBF4: + cmp r3, #2 + bne _080BFBFA + b _080BFCF4 +_080BFBFA: + cmp r3, #3 + bne _080BFC00 + b _080BFD30 +_080BFC00: + b _080BFD40 +_080BFC02: + ldr r1, _080BFC44 + ldr r0, [r1] + adds r0, #0x5c + adds r0, r0, r4 + ldrb r2, [r0] + ands r2, r5 + adds r7, r1, #0 + cmp r2, #0 + bne _080BFC16 + b _080BFD40 +_080BFC16: + ldr r0, _080BFC48 + ldr r3, [r0] + ldr r6, _080BFC4C + adds r1, r3, r6 + adds r1, r1, r4 + ldrb r1, [r1] + ands r1, r5 + adds r6, r0, #0 + cmp r2, r1 + bne _080BFC38 + ldr r1, _080BFC50 + adds r0, r3, r1 + adds r0, r0, r4 + ldrb r0, [r0] + ands r0, r5 + cmp r2, r0 + beq _080BFC96 +_080BFC38: + ldr r1, [r7] + adds r1, #0x5c + adds r1, r1, r4 + mvns r3, r5 + b _080BFCC2 + .align 2, 0 +_080BFC44: .4byte gUnknown_3005AF0 +_080BFC48: .4byte gUnknown_3005AEC +_080BFC4C: .4byte 0x00000988 +_080BFC50: .4byte 0x00003B24 +_080BFC54: + ldr r1, _080BFC9C + ldr r3, [r1] + adds r0, r3, #0 + adds r0, #0x28 + adds r0, r0, r4 + ldrb r2, [r0] + ands r2, r5 + adds r7, r1, #0 + cmp r2, #0 + beq _080BFD40 + adds r0, r3, #0 + adds r0, #0x5c + adds r0, r0, r4 + ldrb r0, [r0] + ands r0, r5 + ldr r6, _080BFCA0 + cmp r2, r0 + bne _080BFCAC + ldr r1, [r6] + ldr r3, _080BFCA4 + adds r0, r1, r3 + adds r0, r0, r4 + ldrb r0, [r0] + ands r0, r5 + cmp r2, r0 + bne _080BFCAC + ldr r3, _080BFCA8 + adds r0, r1, r3 + adds r0, r0, r4 + ldrb r0, [r0] + ands r0, r5 + cmp r2, r0 + bne _080BFCAC +_080BFC96: + movs r6, #1 + b _080BFD40 + .align 2, 0 +_080BFC9C: .4byte gUnknown_3005AF0 +_080BFCA0: .4byte gUnknown_3005AEC +_080BFCA4: .4byte 0x00000988 +_080BFCA8: .4byte 0x00003B24 +_080BFCAC: + ldr r1, [r7] + adds r1, #0x28 + adds r1, r1, r4 + mvns r3, r5 + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r7] + adds r1, #0x5c + adds r1, r1, r4 +_080BFCC2: + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r6] + ldr r0, _080BFCEC + adds r1, r1, r0 + adds r1, r1, r4 + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r6] + ldr r1, _080BFCF0 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + movs r6, #0 + b _080BFD40 + .align 2, 0 +_080BFCEC: .4byte 0x00000988 +_080BFCF0: .4byte 0x00003B24 +_080BFCF4: + ldr r0, _080BFD20 + ldr r1, [r0] + adds r1, #0x5c + adds r1, r1, r4 + ldrb r2, [r1] + adds r0, r5, #0 + orrs r0, r2 + strb r0, [r1] + ldr r3, _080BFD24 + ldr r1, [r3] + ldr r0, _080BFD28 + adds r1, r1, r0 + adds r1, r1, r4 + ldrb r2, [r1] + adds r0, r5, #0 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r3] + ldr r3, _080BFD2C + adds r1, r1, r3 + b _080BFD36 + .align 2, 0 +_080BFD20: .4byte gUnknown_3005AF0 +_080BFD24: .4byte gUnknown_3005AEC +_080BFD28: .4byte 0x00000988 +_080BFD2C: .4byte 0x00003B24 +_080BFD30: + ldr r0, _080BFD48 + ldr r1, [r0] + adds r1, #0x28 +_080BFD36: + adds r1, r1, r4 + ldrb r2, [r1] + adds r0, r5, #0 + orrs r0, r2 + strb r0, [r1] +_080BFD40: + adds r0, r6, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080BFD48: .4byte gUnknown_3005AF0 + thumb_func_end sub_080BFBBC + + thumb_func_start sub_080BFD4C +sub_080BFD4C: @ 0x080BFD4C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + movs r0, #0 + ldr r7, _080BFD64 +_080BFD58: + cmp r6, #0 + beq _080BFD68 + cmp r6, #1 + beq _080BFD72 + adds r4, r0, #1 + b _080BFD8A + .align 2, 0 +_080BFD64: .4byte 0x00000181 +_080BFD68: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + b _080BFD7A +_080BFD72: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 +_080BFD7A: + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BFD8A + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080BFD8A: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r7 + bls _080BFD58 + adds r0, r5, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BFD4C + + thumb_func_start sub_080BFD9C +sub_080BFD9C: @ 0x080BFD9C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + movs r0, #0 +_080BFDA6: + cmp r6, #0 + beq _080BFDB2 + cmp r6, #1 + beq _080BFDC4 + adds r4, r0, #1 + b _080BFDE4 +_080BFDB2: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CFB0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + b _080BFDD4 +_080BFDC4: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CFB0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 +_080BFDD4: + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BFDE4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080BFDE4: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc9 + bls _080BFDA6 + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080BFD9C + + thumb_func_start sub_080BFDF4 +sub_080BFDF4: @ 0x080BFDF4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + movs r0, #0 +_080BFDFE: + cmp r6, #0 + beq _080BFE0A + cmp r6, #1 + beq _080BFE14 + adds r4, r0, #1 + b _080BFE2C +_080BFE0A: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + b _080BFE1C +_080BFE14: + adds r4, r0, #1 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 +_080BFE1C: + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BFE2C + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080BFE2C: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x96 + bls _080BFDFE + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080BFDF4 + + thumb_func_start sub_080BFE3C +sub_080BFE3C: @ 0x080BFE3C + push {r4, lr} + movs r0, #0 +_080BFE40: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0806CFB0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BFE60 + movs r0, #0 + b _080BFE68 +_080BFE60: + adds r0, r4, #0 + cmp r0, #0xc7 + bls _080BFE40 + movs r0, #1 +_080BFE68: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BFE3C + + thumb_func_start sub_080BFE70 +sub_080BFE70: @ 0x080BFE70 + push {r4, lr} + movs r0, #0 +_080BFE74: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BFE8C + movs r0, #0 + b _080BFE94 +_080BFE8C: + adds r0, r4, #0 + cmp r0, #0x95 + bls _080BFE74 + movs r0, #1 +_080BFE94: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BFE70 + + thumb_func_start sub_080BFE9C +sub_080BFE9C: @ 0x080BFE9C + push {r4, r5, lr} + movs r0, #0 +_080BFEA0: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BFEEE + adds r0, r4, #0 + cmp r0, #0x95 + bls _080BFEA0 + movs r0, #0x97 +_080BFEBC: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080BFEEE + adds r0, r4, #0 + cmp r0, #0xf7 + bls _080BFEBC + movs r0, #0xfb + ldr r5, _080BFEF4 +_080BFEDA: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080BFEF8 +_080BFEEE: + movs r0, #0 + b _080BFF00 + .align 2, 0 +_080BFEF4: .4byte 0x0000017F +_080BFEF8: + adds r0, r4, #0 + cmp r0, r5 + bls _080BFEDA + movs r0, #1 +_080BFF00: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080BFE9C + + thumb_func_start sub_080BFF08 +sub_080BFF08: @ 0x080BFF08 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _080BFF3A + movs r0, #0 + bl sub_08001220 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 +_080BFF3A: + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _080BFF64 + movs r0, #0 + bl sub_08001220 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 +_080BFF64: + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _080BFF8E + movs r0, #0 + bl sub_08001220 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 +_080BFF8E: + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _080BFFB8 + movs r0, #0 + bl sub_08001220 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 +_080BFFB8: + movs r1, #0x80 + lsls r1, r1, #5 + ands r5, r1 + cmp r5, #0 + bne _080BFFD6 + movs r0, #0 + bl sub_08001220 + bl sub_0800668C + bl sub_08008424 + ldr r1, _080BFFDC + movs r0, #8 + strb r0, [r1] +_080BFFD6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080BFFDC: .4byte gUnknown_30030BC + thumb_func_end sub_080BFF08 + + thumb_func_start sub_080BFFE0 +sub_080BFFE0: @ 0x080BFFE0 + push {r4, r5, r6, lr} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x18 + add r4, sp, #0x14 + movs r6, #0 + strb r6, [r4] + adds r5, r4, #0 + movs r4, #0xf + strb r4, [r5, #1] + movs r4, #3 + strb r4, [r5, #2] + lsls r2, r2, #0x1b + lsrs r2, r2, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r6, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + subs r4, #4 + str r4, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080BFFE0 + + thumb_func_start sub_080C0020 +sub_080C0020: @ 0x080C0020 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r6, r0, #0 + adds r4, r1, #0 + mov r8, r2 + mov sb, r3 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r5, sp + adds r0, r4, #0 + movs r1, #0x64 + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5] + mov r5, sp + adds r0, r4, #0 + movs r1, #0x64 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #1] + mov r5, sp + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #2] + mov r1, sp + movs r0, #0xff + strb r0, [r1, #3] + adds r0, r6, #0 + mov r2, r8 + mov r3, sb + bl sub_080BFFE0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080C0020 + + thumb_func_start sub_080C00A0 +sub_080C00A0: @ 0x080C00A0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r4, #0 + movs r2, #0xff +_080C00C2: + mov r1, sp + adds r0, r1, r4 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xa + bls _080C00C2 + adds r0, r5, #0 + bl sub_0806CED0 + adds r5, r0, #0 + cmp r5, #0 + beq _080C0120 + movs r4, #0 + ldr r1, _080C011C + lsls r3, r5, #1 + adds r0, r3, r5 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + beq _080C0134 + adds r6, r1, #0 +_080C00F6: + mov r0, sp + adds r2, r0, r4 + adds r1, r3, r5 + lsls r1, r1, #1 + adds r0, r4, r1 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r1, r4, r1 + adds r1, r1, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _080C0134 + cmp r4, #9 + bls _080C00F6 + b _080C0134 + .align 2, 0 +_080C011C: .4byte gUnknown_82EA31C +_080C0120: + movs r4, #0 + movs r1, #0xae +_080C0124: + mov r2, sp + adds r0, r2, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080C0124 +_080C0134: + mov r0, sb + mov r1, sp + mov r2, r8 + adds r3, r7, #0 + bl sub_080BFFE0 + adds r0, r4, #0 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080C00A0 + + thumb_func_start sub_080C0150 +sub_080C0150: @ 0x080C0150 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov ip, r2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + movs r2, #0 + movs r1, #0 +_080C0168: + mov r3, sp + adds r0, r3, r2 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _080C0168 + movs r3, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _080C0192 +_080C0180: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r4, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _080C0192 + cmp r3, #4 + bls _080C0180 +_080C0192: + movs r2, #0 + cmp r2, r3 + bhs _080C01B0 +_080C0198: + adds r0, r2, #5 + subs r0, r0, r3 + mov r7, sp + adds r1, r7, r0 + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _080C0198 +_080C01B0: + mov r1, sp + movs r0, #0xff + strb r0, [r1, #5] + adds r0, r6, #0 + mov r2, ip + adds r3, r5, #0 + bl sub_080BFFE0 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080C0150 + + thumb_func_start sub_080C01C8 +sub_080C01C8: @ 0x080C01C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + movs r5, #0 + movs r1, #0xfa + lsls r1, r1, #2 + adds r0, r4, #0 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080C01FC + mov r0, sp + strb r5, [r0] + b _080C0204 +_080C01FC: + mov r1, sp + adds r0, #0xa1 + strb r0, [r1] + movs r5, #1 +_080C0204: + movs r1, #0xfa + lsls r1, r1, #2 + adds r0, r4, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080C022A + cmp r5, #0 + bne _080C022A + mov r0, sp + strb r5, [r0, #1] + b _080C0230 +_080C022A: + mov r1, sp + adds r0, #0xa1 + strb r0, [r1, #1] +_080C0230: + mov r5, sp + movs r1, #0xfa + lsls r1, r1, #2 + adds r0, r4, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #2] + mov r1, sp + movs r0, #0xb8 + strb r0, [r1, #3] + mov r5, sp + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #4] + mov r1, sp + movs r0, #0xff + strb r0, [r1, #5] + mov r0, r8 + adds r2, r7, #0 + adds r3, r6, #0 + bl sub_080BFFE0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080C01C8 + + thumb_func_start sub_080C0288 +sub_080C0288: @ 0x080C0288 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _080C0314 + adds r0, r1, #0 + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r0, r4 + ldr r0, [r0] + mov ip, r0 + movs r5, #0 + movs r1, #0 + movs r7, #2 +_080C02B2: + mov r2, ip + adds r0, r2, r1 + ldrb r3, [r0] + movs r4, #0 + adds r6, r1, #1 +_080C02BC: + lsls r2, r4, #1 + adds r1, r3, #0 + asrs r1, r2 + movs r0, #1 + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r1, r0, #0x1f + ands r1, r7 + adds r0, r7, #0 + lsls r0, r2 + ands r0, r3 + cmp r0, #0 + beq _080C02DC + movs r0, #0x20 + orrs r1, r0 +_080C02DC: + mov r2, sp + adds r0, r2, r5 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080C02BC + lsls r0, r6, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x1f + bls _080C02B2 + mov r0, r8 + mov r1, sp + movs r2, #0x80 + movs r3, #0 + bl sub_08003AC0 + add sp, #0x80 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C0314: .4byte gUnknown_8543168 + thumb_func_end sub_080C0288 + + thumb_func_start sub_080C0318 +sub_080C0318: @ 0x080C0318 + push {r4, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r0, r0, #5 + ldr r2, _080C0354 + adds r3, r0, r2 + movs r4, #0xf0 + lsls r4, r4, #8 + adds r2, r1, r4 + strh r2, [r3] + ldr r2, _080C0358 + adds r3, r0, r2 + adds r4, #1 + adds r2, r1, r4 + strh r2, [r3] + ldr r2, _080C035C + adds r3, r0, r2 + adds r4, #1 + adds r2, r1, r4 + strh r2, [r3] + ldr r2, _080C0360 + adds r0, r0, r2 + adds r4, #1 + adds r1, r1, r4 + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C0354: .4byte 0x06000232 +_080C0358: .4byte 0x06000234 +_080C035C: .4byte 0x06000272 +_080C0360: .4byte 0x06000274 + thumb_func_end sub_080C0318 + + thumb_func_start sub_080C0364 +sub_080C0364: @ 0x080C0364 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + cmp r4, #1 + beq _080C0390 + cmp r4, #1 + bgt _080C0386 + cmp r4, #0 + beq _080C0398 + b _080C03B8 +_080C0386: + cmp r5, #2 + beq _080C03AA + cmp r5, #3 + beq _080C039E + b _080C03B8 +_080C0390: + cmp r0, r2 + bls _080C03B8 + subs r0, #1 + b _080C03B0 +_080C0398: + cmp r0, r3 + bhs _080C03B8 + b _080C03AE +_080C039E: + cmp r0, r2 + bls _080C03A6 + subs r0, #1 + b _080C03B0 +_080C03A6: + adds r0, r3, #0 + b _080C03B8 +_080C03AA: + cmp r0, r3 + bhs _080C03B6 +_080C03AE: + adds r0, #1 +_080C03B0: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080C03B8 +_080C03B6: + adds r0, r2, #0 +_080C03B8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C0364 + + thumb_func_start sub_080C03C0 +sub_080C03C0: @ 0x080C03C0 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xc9 + beq _080C03E0 + movs r0, #0x9a + lsls r0, r0, #1 + cmp r1, r0 + bne _080C03EC + ldr r0, _080C03DC + ldr r0, [r0] + ldr r0, [r0, #0x20] + b _080C03EE + .align 2, 0 +_080C03DC: .4byte gUnknown_3005AF0 +_080C03E0: + ldr r0, _080C03E8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + b _080C03EE + .align 2, 0 +_080C03E8: .4byte gUnknown_3005AF0 +_080C03EC: + movs r0, #0 +_080C03EE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C03C0 + + thumb_func_start sub_080C03F4 +sub_080C03F4: @ 0x080C03F4 + push {r4, r5, r6, lr} + sub sp, #0x14 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + bl sub_0806CED0 + adds r1, r0, #0 + adds r0, r1, #0 + str r1, [sp, #0x10] + bl sub_080C03C0 + adds r2, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #8] + ldr r0, _080C044C + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + adds r0, r1, #0 + movs r1, #8 + movs r3, #1 + bl sub_0818D504 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x14 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080C044C: .4byte 0x0000FFFF + thumb_func_end sub_080C03F4 + + thumb_func_start sub_080C0450 +sub_080C0450: @ 0x080C0450 + push {r4, r5, lr} + sub sp, #8 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + ldr r1, _080C0484 + str r1, [sp, #4] + movs r1, #1 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_0818D5D8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C0484: .4byte 0x0000FFFF + thumb_func_end sub_080C0450 + + thumb_func_start sub_080C0488 +sub_080C0488: @ 0x080C0488 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r4, [sp, #0x34] + ldr r5, [sp, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #4] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #8] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov sl, r5 + bl sub_080BC010 + movs r5, #0 + movs r6, #0 + ldr r4, _080C069C + ldr r3, _080C06A0 +_080C04C2: + ldr r2, [r3] + lsls r0, r5, #2 + adds r1, r2, r0 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080C04DE + lsls r0, r6, #2 + adds r0, r2, r0 + ldr r1, [r1] + str r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C04DE: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r4 + bls _080C04C2 + ldr r1, _080C06A0 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + adds r1, r6, #0 + strh r6, [r0] + cmp r7, #0xff + beq _080C0596 + movs r5, #0 + lsls r0, r1, #0x10 + movs r6, #0 + cmp r0, #0 + beq _080C058C + lsls r7, r7, #2 + ldr r0, _080C06A8 + adds r0, #3 + adds r0, r7, r0 + str r0, [sp, #0xc] + ldr r0, _080C06A8 + adds r0, r0, r7 + mov sb, r0 +_080C0512: + ldr r1, _080C06A0 + ldr r0, [r1] + lsls r4, r5, #2 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _080C06AC + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r2, [r0] + adds r3, r2, #0 + mov r0, sb + ldrb r0, [r0] + cmp r2, r0 + blo _080C054C + mov r1, sb + ldrb r0, [r1] + ldr r1, _080C06A8 + adds r1, #1 + adds r1, r7, r1 + ldrb r1, [r1] + adds r0, r0, r1 + cmp r2, r0 + blt _080C0564 +_080C054C: + ldr r0, _080C06A8 + adds r0, #2 + adds r0, r7, r0 + ldrb r2, [r0] + cmp r3, r2 + blo _080C0578 + ldrb r1, [r0] + ldr r2, [sp, #0xc] + ldrb r0, [r2] + adds r1, r1, r0 + cmp r3, r1 + bge _080C0578 +_080C0564: + ldr r2, _080C06A0 + ldr r0, [r2] + lsls r1, r6, #2 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C0578: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080C06A0 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + blo _080C0512 +_080C058C: + ldr r1, _080C06A0 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + strh r6, [r0] +_080C0596: + ldr r0, [sp, #4] + cmp r0, #0xff + beq _080C0606 + movs r5, #0 + movs r6, #0 + ldr r1, _080C06A0 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r6, r0 + bhs _080C05FC + adds r7, r1, #0 + ldr r0, _080C06B0 + mov r8, r0 +_080C05B4: + ldr r0, [r7] + lsls r4, r5, #2 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0x19] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + ldr r1, [sp, #4] + cmp r1, r0 + bne _080C05EA + ldr r0, [r7] + lsls r1, r6, #2 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C05EA: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [r7] + ldr r2, _080C06A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + blo _080C05B4 +_080C05FC: + ldr r1, _080C06A0 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + strh r6, [r0] +_080C0606: + ldr r0, [sp, #8] + cmp r0, #0xff + bne _080C061C + mov r1, sl + cmp r1, #0xff + bne _080C0614 + b _080C073A +_080C0614: + mov r2, sl + str r2, [sp, #8] + movs r0, #0xff + mov sl, r0 +_080C061C: + mov r1, sl + cmp r1, #0xff + bne _080C06B4 + movs r5, #0 + movs r6, #0 + ldr r2, _080C06A0 + ldr r0, [r2] + ldr r1, _080C06A4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bhs _080C0730 + adds r3, r2, #0 + mov r7, sp + mov r8, r2 +_080C063A: + ldr r0, [r3] + lsls r4, r5, #2 + adds r1, r0, r4 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1e + cmp r0, #0 + bge _080C0684 + ldrh r0, [r1] + str r3, [sp, #0x10] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _080C06B0 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #6] + strb r1, [r7] + ldrb r0, [r0, #7] + strb r0, [r7, #1] + ldr r3, [sp, #0x10] + ldr r2, [sp, #8] + cmp r1, r2 + beq _080C0672 + cmp r0, r2 + bne _080C0684 +_080C0672: + ldr r0, [r3] + lsls r1, r6, #2 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C0684: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r1, r8 + ldr r0, [r1] + ldr r2, _080C06A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + blo _080C063A + b _080C0730 + .align 2, 0 +_080C069C: .4byte 0x00000181 +_080C06A0: .4byte gUnknown_20397EC +_080C06A4: .4byte 0x0000060C +_080C06A8: .4byte gUnknown_854410C +_080C06AC: .4byte gUnknown_82EA31C +_080C06B0: .4byte gUnknown_82F0D54 +_080C06B4: + movs r5, #0 + movs r6, #0 + ldr r1, _080C07A0 + ldr r0, [r1] + ldr r2, _080C07A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r6, r0 + bhs _080C0730 + mov r7, sp +_080C06C8: + ldr r0, [r1] + lsls r1, r5, #2 + adds r2, r0, r1 + ldrb r0, [r2, #2] + lsls r0, r0, #0x1e + adds r4, r1, #0 + cmp r0, #0 + bge _080C071C + ldrh r0, [r2] + bl sub_0806CED0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _080C07A8 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #6] + strb r1, [r7] + ldrb r0, [r0, #7] + strb r0, [r7, #1] + ldr r2, [sp, #8] + cmp r1, r2 + bne _080C06FE + cmp r0, sl + beq _080C0708 +_080C06FE: + cmp r1, sl + bne _080C071C + ldr r1, [sp, #8] + cmp r0, r1 + bne _080C071C +_080C0708: + ldr r2, _080C07A0 + ldr r0, [r2] + lsls r1, r6, #2 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C071C: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080C07A0 + ldr r0, [r1] + ldr r2, _080C07A4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + blo _080C06C8 +_080C0730: + ldr r1, _080C07A0 + ldr r0, [r1] + ldr r2, _080C07A4 + adds r0, r0, r2 + strh r6, [r0] +_080C073A: + ldr r1, _080C07A0 + ldr r0, [r1] + ldr r2, _080C07A4 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #0 + beq _080C078E + adds r5, r0, #0 + ldr r0, _080C07AC + cmp r5, r0 + bhi _080C078E + ldr r4, _080C07A0 + movs r1, #2 + rsbs r1, r1, #0 + mov sl, r1 + movs r2, #3 + rsbs r2, r2, #0 + mov sb, r2 + mov r8, r0 + ldr r0, _080C07B0 + adds r7, r0, #0 +_080C0764: + ldr r1, [r4] + lsls r3, r5, #2 + adds r1, r1, r3 + ldrh r0, [r1] + orrs r0, r7 + strh r0, [r1] + ldrb r2, [r1, #2] + mov r0, sl + ands r0, r2 + strb r0, [r1, #2] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1, #2] + mov r0, sb + ands r0, r2 + strb r0, [r1, #2] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + bls _080C0764 +_080C078E: + adds r0, r6, #0 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080C07A0: .4byte gUnknown_20397EC +_080C07A4: .4byte 0x0000060C +_080C07A8: .4byte gUnknown_82F0D54 +_080C07AC: .4byte 0x00000181 +_080C07B0: .4byte 0x0000FFFF + thumb_func_end sub_080C0488 + + thumb_func_start sub_080C07B4 +sub_080C07B4: @ 0x080C07B4 + push {lr} + ldr r0, _080C07C8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080C07C8: .4byte sub_080C0850 + thumb_func_end sub_080C07B4 + + thumb_func_start sub_080C07CC +sub_080C07CC: @ 0x080C07CC + push {r4, r5, lr} + sub sp, #0x18 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r3, r3, #0x18 + add r1, sp, #0x14 + movs r4, #0 + strb r4, [r1] + adds r2, r1, #0 + movs r1, #0xf + strb r1, [r2, #1] + movs r1, #2 + strb r1, [r2, #2] + lsls r5, r5, #0x1b + lsrs r5, r5, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r4, [sp] + str r4, [sp, #4] + str r2, [sp, #8] + subs r1, #3 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080C07CC + + thumb_func_start sub_080C0810 +sub_080C0810: @ 0x080C0810 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r0, #3 + lsls r5, r1, #3 + subs r0, #1 + subs r2, r2, r0 + lsls r2, r2, #0x13 + lsrs r2, r2, #0x10 + str r2, [sp] + subs r1, #1 + subs r3, r3, r1 + lsls r3, r3, #0x13 + lsrs r3, r3, #0x10 + str r3, [sp, #4] + movs r0, #0 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08003A34 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080C0810 + + thumb_func_start sub_080C0850 +sub_080C0850: @ 0x080C0850 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080C0874 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #4 + bhi _080C0890 + lsls r0, r0, #2 + ldr r1, _080C0878 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C0874: .4byte gUnknown_3002360 +_080C0878: .4byte _080C087C +_080C087C: @ jump table + .4byte _080C0890 @ case 0 + .4byte _080C0984 @ case 1 + .4byte _080C09F0 @ case 2 + .4byte _080C0A10 @ case 3 + .4byte _080C0A60 @ case 4 +_080C0890: + ldr r0, _080C0938 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _080C08A2 + b _080C0A86 +_080C08A2: + ldr r0, _080C093C + ldr r0, [r0] + ldr r1, _080C0940 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + movs r0, #0 + bl sub_080BFF08 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080C0944 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #3 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #2 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + adds r0, r4, #0 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + ldr r0, _080C0948 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + bl sub_0800365C + ldr r1, _080C094C + movs r2, #0x80 + lsls r2, r2, #6 + str r5, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + bl sub_0809CD04 + cmp r0, #0 + bne _080C0954 + ldr r1, _080C0950 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + b _080C0960 + .align 2, 0 +_080C0938: .4byte gUnknown_2037C74 +_080C093C: .4byte gUnknown_20397EC +_080C0940: .4byte 0x0000064A +_080C0944: .4byte gUnknown_85443FC +_080C0948: .4byte gUnknown_854440C +_080C094C: .4byte gUnknown_854385C +_080C0950: .4byte gUnknown_8543F84 +_080C0954: + ldr r1, _080C0978 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC +_080C0960: + ldr r0, _080C097C + movs r1, #1 + movs r2, #0x7e + bl sub_080A1200 + ldr r0, _080C0980 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + b _080C0A86 + .align 2, 0 +_080C0978: .4byte gUnknown_8543DE8 +_080C097C: .4byte gUnknown_85437DE +_080C0980: .4byte gUnknown_3002360 +_080C0984: + ldr r0, _080C09E4 + bl sub_08034388 + ldr r0, _080C09E8 + bl sub_080084A8 + adds r0, r4, #0 + bl sub_080C1C38 + movs r1, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r2, r0, #3 + ldr r5, _080C09EC + movs r3, #0 +_080C09A2: + lsls r0, r1, #1 + adds r0, r0, r2 + adds r0, r0, r5 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _080C09A2 + adds r0, r4, #0 + bl sub_080C1A5C + movs r0, #0 + bl sub_080C1684 + adds r0, r4, #0 + bl sub_080C175C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _080C0A4A + .align 2, 0 +_080C09E4: .4byte gUnknown_8539BBC +_080C09E8: .4byte gUnknown_8539BCC +_080C09EC: .4byte gUnknown_3005B68 +_080C09F0: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _080C0A0C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _080C0A52 + .align 2, 0 +_080C0A0C: .4byte gUnknown_3002360 +_080C0A10: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_080C0A4A: + ldr r1, _080C0A5C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_080C0A52: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C0A86 + .align 2, 0 +_080C0A5C: .4byte gUnknown_3002360 +_080C0A60: + ldr r0, _080C0A90 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080C0A86 + ldr r1, _080C0A94 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080C0A98 + str r1, [r0] + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r3, r1 + strb r2, [r0] +_080C0A86: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C0A90: .4byte gUnknown_2037C74 +_080C0A94: .4byte gUnknown_3005B60 +_080C0A98: .4byte sub_080C0AE0 + thumb_func_end sub_080C0850 + + thumb_func_start sub_080C0A9C +sub_080C0A9C: @ 0x080C0A9C + push {lr} + bl sub_080034D4 + movs r0, #0 + bl sub_08002194 + cmp r0, #0 + beq _080C0AB0 + bl sub_08000BF0 +_080C0AB0: + movs r0, #1 + bl sub_08002194 + cmp r0, #0 + beq _080C0ABE + bl sub_08000BF0 +_080C0ABE: + movs r0, #2 + bl sub_08002194 + cmp r0, #0 + beq _080C0ACC + bl sub_08000BF0 +_080C0ACC: + movs r0, #3 + bl sub_08002194 + cmp r0, #0 + beq _080C0ADA + bl sub_08000BF0 +_080C0ADA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C0A9C + + thumb_func_start sub_080C0AE0 +sub_080C0AE0: @ 0x080C0AE0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080C0B18 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrb r0, [r5, #8] + bl sub_080C1684 + adds r0, r4, #0 + bl sub_080C175C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 + ldr r0, _080C0B1C + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C0B18: .4byte gUnknown_3005B60 +_080C0B1C: .4byte sub_080C0B20 + thumb_func_end sub_080C0AE0 + + thumb_func_start sub_080C0B20 +sub_080C0B20: @ 0x080C0B20 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080C0B48 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080C0B54 + movs r0, #3 + bl sub_080A306C + ldr r0, _080C0B4C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080C0B50 + str r0, [r1] + b _080C0C2C + .align 2, 0 +_080C0B48: .4byte gUnknown_3002360 +_080C0B4C: .4byte gUnknown_3005B60 +_080C0B50: .4byte sub_080C137C +_080C0B54: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C0BB0 + ldr r1, _080C0B78 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r0, #8 + ldrsh r4, [r5, r0] + cmp r4, #1 + beq _080C0B8C + cmp r4, #1 + bgt _080C0B7C + cmp r4, #0 + beq _080C0B82 + b _080C0C2C + .align 2, 0 +_080C0B78: .4byte gUnknown_3005B60 +_080C0B7C: + cmp r4, #2 + beq _080C0BA0 + b _080C0C2C +_080C0B82: + movs r0, #0x15 + bl sub_080A306C + strh r4, [r5, #0xa] + b _080C0B96 +_080C0B8C: + movs r0, #0x15 + bl sub_080A306C + movs r0, #4 + strh r0, [r5, #0xa] +_080C0B96: + ldr r0, _080C0B9C + str r0, [r5] + b _080C0C2C + .align 2, 0 +_080C0B9C: .4byte sub_080C0C3C +_080C0BA0: + movs r0, #3 + bl sub_080A306C + ldr r0, _080C0BAC + str r0, [r5] + b _080C0C2C + .align 2, 0 +_080C0BAC: .4byte sub_080C137C +_080C0BB0: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080C0BEC + ldr r0, _080C0C34 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _080C0BEC + movs r0, #0x6d + bl sub_080A306C + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C1684 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0BEC: + ldr r0, _080C0C38 + ldrh r1, [r0, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080C0C2C + ldr r0, _080C0C34 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + bgt _080C0C2C + movs r0, #0x6d + bl sub_080A306C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C1684 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0C2C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C0C34: .4byte gUnknown_3005B60 +_080C0C38: .4byte gUnknown_3002360 + thumb_func_end sub_080C0B20 + + thumb_func_start sub_080C0C3C +sub_080C0C3C: @ 0x080C0C3C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080C0C74 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrb r0, [r5, #8] + ldrb r1, [r5, #0xa] + bl sub_080C16B8 + adds r0, r4, #0 + bl sub_080C175C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 + ldr r0, _080C0C78 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C0C74: .4byte gUnknown_3005B60 +_080C0C78: .4byte sub_080C0C7C + thumb_func_end sub_080C0C3C + + thumb_func_start sub_080C0C7C +sub_080C0C7C: @ 0x080C0C7C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080C0CA4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _080C0CB0 + bl sub_0809CD04 + ldr r6, _080C0CA8 + cmp r0, #0 + bne _080C0CBC + ldr r6, _080C0CAC + b _080C0CBC + .align 2, 0 +_080C0CA4: .4byte gUnknown_3005B60 +_080C0CA8: .4byte gUnknown_85441BC +_080C0CAC: .4byte gUnknown_85441F4 +_080C0CB0: + bl sub_0809CD04 + ldr r6, _080C0CE8 + cmp r0, #0 + bne _080C0CBC + ldr r6, _080C0CEC +_080C0CBC: + ldr r0, _080C0CF0 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _080C0CFC + movs r0, #0x17 + bl sub_080A306C + adds r0, r5, #0 + bl sub_080C1A5C + ldr r0, _080C0CF4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080C0CF8 + str r0, [r1] + b _080C0F14 + .align 2, 0 +_080C0CE8: .4byte gUnknown_85441A0 +_080C0CEC: .4byte gUnknown_85441D8 +_080C0CF0: .4byte gUnknown_3002360 +_080C0CF4: .4byte gUnknown_3005B60 +_080C0CF8: .4byte sub_080C0AE0 +_080C0CFC: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C0DF0 + ldr r0, _080C0D8C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r6, r1, r0 + movs r2, #0xa + ldrsh r0, [r6, r2] + cmp r0, #6 + bne _080C0DE0 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _080C0DAC + ldr r1, _080C0D90 + movs r0, #0x40 + strb r0, [r1] + ldr r7, _080C0D94 + ldr r1, [r7] + ldr r0, _080C0D98 + adds r2, r1, r0 + movs r0, #0x40 + strh r0, [r2] + ldr r0, _080C0D9C + strh r3, [r0] + movs r2, #0xc2 + lsls r2, r2, #3 + adds r1, r1, r2 + strh r3, [r1] + adds r0, r5, #0 + movs r1, #5 + bl sub_080C19BC + ldr r4, _080C0DA0 + ldr r1, [r4] + strb r0, [r1, #0x19] + bl sub_0809CD04 + cmp r0, #0 + bne _080C0D58 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #0x19] +_080C0D58: + ldr r0, [r7] + ldr r1, [r4] + ldrb r1, [r1, #0x19] + ldr r2, _080C0DA4 + adds r0, r0, r2 + strh r1, [r0] + adds r0, r5, #0 + movs r1, #4 + bl sub_080C19BC + ldr r1, [r4] + strb r0, [r1, #0x18] + ldr r0, [r7] + ldr r1, [r4] + ldrb r1, [r1, #0x18] + movs r2, #0xc3 + lsls r2, r2, #3 + adds r0, r0, r2 + strh r1, [r0] + movs r0, #3 + bl sub_080A306C + ldr r0, _080C0DA8 + str r0, [r6] + b _080C0F14 + .align 2, 0 +_080C0D8C: .4byte gUnknown_3005B60 +_080C0D90: .4byte gUnknown_20397F2 +_080C0D94: .4byte gUnknown_20397EC +_080C0D98: .4byte 0x0000062A +_080C0D9C: .4byte gUnknown_20397F0 +_080C0DA0: .4byte gUnknown_3005AF0 +_080C0DA4: .4byte 0x00000614 +_080C0DA8: .4byte sub_080C137C +_080C0DAC: + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldr r0, _080C0DD8 + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + ldr r0, _080C0DDC + str r0, [r6] + movs r0, #0x70 + bl sub_080A306C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + b _080C0F14 + .align 2, 0 +_080C0DD8: .4byte gUnknown_85C8FFC +_080C0DDC: .4byte sub_080C0F24 +_080C0DE0: + movs r0, #0x15 + bl sub_080A306C + ldr r0, _080C0DEC + str r0, [r6] + b _080C0F14 + .align 2, 0 +_080C0DEC: .4byte sub_080C1104 +_080C0DF0: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080C0E36 + ldr r1, _080C0F1C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0xff + beq _080C0E36 + movs r0, #5 + bl sub_080A306C + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0] + strh r1, [r4, #0xa] + ldrb r0, [r4, #8] + bl sub_080C16B8 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0E36: + ldr r0, _080C0F20 + ldrh r1, [r0, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080C0E80 + ldr r1, _080C0F1C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #1] + cmp r0, #0xff + beq _080C0E80 + movs r0, #5 + bl sub_080A306C + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #1] + strh r1, [r4, #0xa] + ldrb r0, [r4, #8] + bl sub_080C16B8 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0E80: + ldr r0, _080C0F20 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080C0ECA + ldr r1, _080C0F1C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #2] + cmp r0, #0xff + beq _080C0ECA + movs r0, #5 + bl sub_080A306C + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #2] + strh r1, [r4, #0xa] + ldrb r0, [r4, #8] + bl sub_080C16B8 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0ECA: + ldr r0, _080C0F20 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C0F14 + ldr r1, _080C0F1C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + cmp r0, #0xff + beq _080C0F14 + movs r0, #5 + bl sub_080A306C + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #3] + strh r1, [r4, #0xa] + ldrb r0, [r4, #8] + bl sub_080C16B8 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 +_080C0F14: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C0F1C: .4byte gUnknown_3005B60 +_080C0F20: .4byte gUnknown_3002360 + thumb_func_end sub_080C0C7C + + thumb_func_start sub_080C0F24 +sub_080C0F24: @ 0x080C0F24 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #8 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + movs r1, #5 + bl sub_080C19BC + mov sl, r0 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + adds r0, r5, #0 + movs r1, #4 + bl sub_080C19BC + mov sb, r0 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r5, #0 + movs r1, #0 + bl sub_080C19BC + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r5, #0 + movs r1, #1 + bl sub_080C19BC + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r5, #0 + movs r1, #2 + bl sub_080C19BC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #3 + bl sub_080C19BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp] + str r0, [sp, #4] + mov r0, sl + mov r1, sb + mov r2, r8 + adds r3, r6, #0 + bl sub_080C0488 + ldr r1, _080C0FC4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080C0FC8 + str r1, [r0] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C0FC4: .4byte gUnknown_3005B60 +_080C0FC8: .4byte sub_080C0FCC + thumb_func_end sub_080C0F24 + + thumb_func_start sub_080C0FCC +sub_080C0FCC: @ 0x080C0FCC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C1046 + ldr r0, _080C1008 + ldr r0, [r0] + ldr r1, _080C100C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080C1014 + movs r0, #0x1f + bl sub_080A306C + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldr r0, _080C1010 + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + b _080C1030 + .align 2, 0 +_080C1008: .4byte gUnknown_20397EC +_080C100C: .4byte 0x0000060C +_080C1010: .4byte gUnknown_85C900A +_080C1014: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldr r0, _080C104C + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC +_080C1030: + ldr r0, _080C1050 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080C1054 + str r0, [r1] + movs r0, #0 + movs r1, #2 + bl sub_08003528 +_080C1046: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C104C: .4byte gUnknown_85C901D +_080C1050: .4byte gUnknown_3005B60 +_080C1054: .4byte sub_080C1058 + thumb_func_end sub_080C0FCC + + thumb_func_start sub_080C1058 +sub_080C1058: @ 0x080C1058 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r2, r4, #0 + ldr r0, _080C10C0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C10F4 + ldr r5, _080C10C4 + ldr r1, [r5] + ldr r3, _080C10C8 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080C10E0 + ldr r0, _080C10CC + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #5 + bl sub_080C19BC + ldr r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C10D0 + adds r1, r1, r2 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_080C19BC + ldr r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080C10D4 + adds r1, r1, r3 + strh r0, [r1] + ldr r1, _080C10D8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080C10DC + str r1, [r0] + movs r0, #3 + bl sub_080A306C + b _080C10F4 + .align 2, 0 +_080C10C0: .4byte gUnknown_3002360 +_080C10C4: .4byte gUnknown_20397EC +_080C10C8: .4byte 0x0000060C +_080C10CC: .4byte 0x0000064E +_080C10D0: .4byte 0x00000612 +_080C10D4: .4byte 0x00000616 +_080C10D8: .4byte gUnknown_3005B60 +_080C10DC: .4byte sub_080C137C +_080C10E0: + ldr r0, _080C10FC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080C1100 + str r0, [r1] + movs r0, #0x17 + bl sub_080A306C +_080C10F4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C10FC: .4byte gUnknown_3005B60 +_080C1100: .4byte sub_080C0C3C + thumb_func_end sub_080C1058 + + thumb_func_start sub_080C1104 +sub_080C1104: @ 0x080C1104 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0 + bl sub_080C1838 + ldr r2, _080C116C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r6, r1, r2 + ldrb r0, [r6, #0xa] + adds r2, #8 + adds r1, r1, r2 + ldr r2, _080C1170 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r4, [r0, #4] + lsls r4, r4, #1 + adds r4, r1, r4 + ldrb r0, [r0, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r4] + strh r0, [r6, #0x24] + ldrh r0, [r1] + strh r0, [r6, #0x26] + adds r0, r5, #0 + bl sub_080C1918 + ldr r0, _080C1174 + ldrh r2, [r4] + lsls r2, r2, #1 + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x12 + bl sub_080C07CC + ldr r0, _080C1178 + str r0, [r6] + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C116C: .4byte gUnknown_3005B60 +_080C1170: .4byte gUnknown_85443CC +_080C1174: .4byte gUnknown_85C9299 +_080C1178: .4byte sub_080C117C + thumb_func_end sub_080C1104 + + thumb_func_start sub_080C117C +sub_080C117C: @ 0x080C117C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, _080C11DC + lsls r2, r7, #2 + adds r2, r2, r7 + lsls r2, r2, #3 + adds r5, r2, r3 + ldrb r1, [r5, #0xa] + ldr r0, _080C11E0 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, [r1] + mov r8, r0 + adds r3, #8 + adds r2, r2, r3 + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r4, r2, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #1 + adds r6, r2, r0 + ldrh r0, [r1, #6] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080C11E4 + mov ip, r0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C11E8 + movs r0, #0x15 + bl sub_080A306C + movs r0, #0x12 + movs r1, #1 + movs r2, #0x1c + movs r3, #0xc + bl sub_080C0810 + movs r0, #1 + bl sub_080C1838 + b _080C1210 + .align 2, 0 +_080C11DC: .4byte gUnknown_3005B60 +_080C11E0: .4byte gUnknown_85443CC +_080C11E4: .4byte gUnknown_3002360 +_080C11E8: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080C1228 + movs r0, #0x17 + bl sub_080A306C + movs r0, #0x12 + movs r1, #1 + movs r2, #0x1c + movs r3, #0xc + bl sub_080C0810 + movs r0, #1 + bl sub_080C1838 + ldrh r0, [r5, #0x24] + strh r0, [r4] + ldrh r0, [r5, #0x26] + strh r0, [r6] +_080C1210: + ldr r0, _080C1224 + str r0, [r5] + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #3 + bl sub_08002248 + b _080C136C + .align 2, 0 +_080C1224: .4byte sub_080C0C3C +_080C1228: + movs r3, #0 + mov r0, ip + ldrh r1, [r0, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080C12D0 + ldrh r0, [r4] + cmp r0, #0 + beq _080C1274 + adds r3, r0, #0 + lsls r3, r3, #1 + adds r1, r3, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x12 + movs r2, #0x12 + bl sub_080C0810 + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + ldr r0, _080C1270 + ldrh r2, [r4] + lsls r2, r2, #1 + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x12 + bl sub_080C07CC + b _080C129C + .align 2, 0 +_080C1270: .4byte gUnknown_85C9299 +_080C1274: + ldrh r0, [r6] + cmp r0, #0 + beq _080C1298 + subs r0, #1 + strh r0, [r6] + adds r0, r7, #0 + bl sub_080C1918 + ldr r0, _080C12CC + ldrh r2, [r4] + lsls r2, r2, #1 + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x12 + bl sub_080C07CC + movs r3, #1 +_080C1298: + cmp r3, #0 + beq _080C136C +_080C129C: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldrh r0, [r4] + ldrh r1, [r6] + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, r8 + ldr r0, [r0] + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + movs r0, #0 + movs r1, #2 + bl sub_08003528 + b _080C136C + .align 2, 0 +_080C12CC: .4byte gUnknown_85C9299 +_080C12D0: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C136C + ldrh r0, [r4] + cmp r0, #4 + bhi _080C1318 + cmp r0, r2 + bhs _080C1318 + adds r3, r0, #0 + lsls r3, r3, #1 + adds r1, r3, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x12 + movs r2, #0x12 + bl sub_080C0810 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldr r0, _080C1314 + ldrh r2, [r4] + lsls r2, r2, #1 + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x12 + bl sub_080C07CC + b _080C133E + .align 2, 0 +_080C1314: .4byte gUnknown_85C9299 +_080C1318: + cmp r2, #5 + bls _080C133A + ldrh r1, [r6] + subs r0, r2, #5 + cmp r1, r0 + bge _080C133A + adds r0, r1, #1 + strh r0, [r6] + adds r0, r7, #0 + bl sub_080C1918 + ldr r0, _080C1378 + movs r1, #0x12 + movs r2, #0xb + bl sub_080C07CC + movs r3, #1 +_080C133A: + cmp r3, #0 + beq _080C136C +_080C133E: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldrh r0, [r4] + ldrh r1, [r6] + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, r8 + ldr r0, [r0] + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + movs r0, #0 + movs r1, #2 + bl sub_08003528 +_080C136C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C1378: .4byte gUnknown_85C9299 + thumb_func_end sub_080C117C + + thumb_func_start sub_080C137C +sub_080C137C: @ 0x080C137C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080C13AC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080C13B0 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C13AC: .4byte gUnknown_3005B60 +_080C13B0: .4byte sub_080C13B4 + thumb_func_end sub_080C137C + + thumb_func_start sub_080C13B4 +sub_080C13B4: @ 0x080C13B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080C13D8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080C13D0 + bl sub_080C0A9C + adds r0, r4, #0 + bl sub_080A8964 +_080C13D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C13D8: .4byte gUnknown_2037C74 + thumb_func_end sub_080C13B4 + + thumb_func_start sub_080C13DC +sub_080C13DC: @ 0x080C13DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r3, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #3 + bl sub_08002194 + adds r2, r0, #0 + movs r3, #0 + cmp r3, r4 + bhs _080C1430 + lsls r0, r5, #6 + adds r7, r0, r2 + ldr r5, _080C143C + lsls r2, r6, #0xc +_080C140C: + mov r0, r8 + adds r1, r0, r3 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r0, [r1] + ands r0, r5 + orrs r0, r2 + strh r0, [r1] + adds r1, #0x40 + ldrh r0, [r1] + ands r0, r5 + orrs r0, r2 + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blo _080C140C +_080C1430: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C143C: .4byte 0x00000FFF + thumb_func_end sub_080C13DC + + thumb_func_start sub_080C1440 +sub_080C1440: @ 0x080C1440 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + ands r5, r0 + ands r2, r0 + lsls r2, r2, #1 + orrs r5, r2 + cmp r4, #0xa + bhi _080C152C + lsls r0, r4, #2 + ldr r1, _080C1468 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C1468: .4byte _080C146C +_080C146C: @ jump table + .4byte _080C1498 @ case 0 + .4byte _080C1498 @ case 1 + .4byte _080C1498 @ case 2 + .4byte _080C14A8 @ case 3 + .4byte _080C14A8 @ case 4 + .4byte _080C14C0 @ case 5 + .4byte _080C14C0 @ case 6 + .4byte _080C14A8 @ case 7 + .4byte _080C14A8 @ case 8 + .4byte _080C14E8 @ case 9 + .4byte _080C14D8 @ case 10 +_080C1498: + ldr r1, _080C14A4 + lsls r0, r4, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] + ldrb r2, [r0, #5] + b _080C1506 + .align 2, 0 +_080C14A4: .4byte gUnknown_8544134 +_080C14A8: + ldr r2, _080C14D4 + subs r1, r4, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + ldrb r2, [r0, #5] + ldrb r3, [r0, #6] + adds r0, r5, #0 + bl sub_080C13DC +_080C14C0: + ldr r2, _080C14D4 + subs r1, r4, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #7] + ldrb r2, [r0, #8] + ldrb r3, [r0, #9] + b _080C1508 + .align 2, 0 +_080C14D4: .4byte gUnknown_854414C +_080C14D8: + ldr r0, _080C14E4 + ldrb r1, [r0, #0x1c] + ldrb r2, [r0, #0x1d] + ldrb r3, [r0, #0x1e] + b _080C1508 + .align 2, 0 +_080C14E4: .4byte gUnknown_854414C +_080C14E8: + bl sub_0809CD04 + cmp r0, #0 + bne _080C1514 + ldr r2, _080C1510 + subs r1, r4, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + ldrb r2, [r0, #5] + subs r2, #2 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 +_080C1506: + ldrb r3, [r0, #6] +_080C1508: + adds r0, r5, #0 + bl sub_080C13DC + b _080C152C + .align 2, 0 +_080C1510: .4byte gUnknown_854414C +_080C1514: + ldr r2, _080C1534 + subs r1, r4, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + ldrb r2, [r0, #5] + ldrb r3, [r0, #6] + adds r0, r5, #0 + bl sub_080C13DC +_080C152C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C1534: .4byte gUnknown_854414C + thumb_func_end sub_080C1440 + + thumb_func_start sub_080C1538 +sub_080C1538: @ 0x080C1538 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _080C15A2 + cmp r0, #1 + bgt _080C154E + cmp r0, #0 + beq _080C1554 + b _080C1680 +_080C154E: + cmp r1, #2 + beq _080C1612 + b _080C1680 +_080C1554: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #4 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #0xa + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #5 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #6 + movs r1, #1 + movs r2, #0 + b _080C15EE +_080C15A2: + movs r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #3 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #4 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #0xa + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #5 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #6 + movs r1, #1 + movs r2, #1 +_080C15EE: + bl sub_080C1440 + movs r0, #7 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #8 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #9 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + b _080C1680 +_080C1612: + movs r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_080C1440 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + movs r0, #3 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #4 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #0xa + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #5 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #6 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #7 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #8 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 + movs r0, #9 + movs r1, #1 + movs r2, #1 + bl sub_080C1440 +_080C1680: + pop {r0} + bx r0 + thumb_func_end sub_080C1538 + + thumb_func_start sub_080C1684 +sub_080C1684: @ 0x080C1684 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080C1538 + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldr r0, _080C16B4 + lsls r4, r4, #3 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C16B4: .4byte gUnknown_8544134 + thumb_func_end sub_080C1684 + + thumb_func_start sub_080C16B8 +sub_080C16B8: @ 0x080C16B8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_080C1538 + cmp r4, #6 + bhi _080C1732 + lsls r0, r4, #2 + ldr r1, _080C16D4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C16D4: .4byte _080C16D8 +_080C16D8: @ jump table + .4byte _080C16F4 @ case 0 + .4byte _080C16F8 @ case 1 + .4byte _080C16FC @ case 2 + .4byte _080C170A @ case 3 + .4byte _080C1718 @ case 4 + .4byte _080C171C @ case 5 + .4byte _080C1728 @ case 6 +_080C16F4: + movs r0, #3 + b _080C171E +_080C16F8: + movs r0, #4 + b _080C171E +_080C16FC: + movs r0, #0xa + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + movs r0, #5 + b _080C171E +_080C170A: + movs r0, #0xa + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + movs r0, #6 + b _080C171E +_080C1718: + movs r0, #7 + b _080C171E +_080C171C: + movs r0, #8 +_080C171E: + movs r1, #0 + movs r2, #0 + bl sub_080C1440 + b _080C1732 +_080C1728: + movs r0, #9 + movs r1, #0 + movs r2, #0 + bl sub_080C1440 +_080C1732: + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + ldr r0, _080C1758 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C1758: .4byte gUnknown_854414C + thumb_func_end sub_080C16B8 + + thumb_func_start sub_080C175C +sub_080C175C: @ 0x080C175C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #6 + movs r1, #2 + movs r2, #0xf + movs r3, #0xb + bl sub_080C0810 + ldr r1, _080C1820 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #0x16] + ldrh r1, [r5, #0x14] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, _080C1824 + lsrs r0, r0, #0xd + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #6 + movs r2, #2 + bl sub_080C07CC + ldrh r0, [r5, #0x1a] + ldrh r1, [r5, #0x18] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, _080C1828 + lsrs r0, r0, #0xd + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #6 + movs r2, #4 + bl sub_080C07CC + ldrh r0, [r5, #0x1e] + ldrh r1, [r5, #0x1c] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r4, _080C182C + lsrs r0, r0, #0xd + adds r4, #4 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #6 + movs r2, #6 + bl sub_080C07CC + ldrh r0, [r5, #0x22] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0xc + movs r2, #6 + bl sub_080C07CC + ldrh r0, [r5, #0x12] + ldrh r1, [r5, #0x10] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, _080C1830 + lsrs r0, r0, #0xd + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #6 + movs r2, #8 + bl sub_080C07CC + bl sub_0809CD04 + cmp r0, #0 + beq _080C181A + ldrh r0, [r5, #0xe] + ldrh r5, [r5, #0xc] + adds r0, r0, r5 + lsls r0, r0, #0x10 + ldr r1, _080C1834 + lsrs r0, r0, #0xd + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #6 + movs r2, #0xa + bl sub_080C07CC +_080C181A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C1820: .4byte gUnknown_3005B60 +_080C1824: .4byte gUnknown_8544260 +_080C1828: .4byte gUnknown_85442B8 +_080C182C: .4byte gUnknown_8544318 +_080C1830: .4byte gUnknown_8544228 +_080C1834: .4byte gUnknown_8544210 + thumb_func_end sub_080C175C + + thumb_func_start sub_080C1838 +sub_080C1838: @ 0x080C1838 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #3 + bl sub_08002194 + adds r5, r0, #0 + cmp r4, #0 + bne _080C18EC + ldr r1, _080C18D0 + adds r0, r1, #0 + strh r0, [r5, #0x22] + movs r2, #0x12 + ldr r0, _080C18D4 + adds r1, r0, #0 +_080C1858: + lsls r0, r2, #1 + adds r0, r0, r5 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1c + bls _080C1858 + ldr r1, _080C18D8 + adds r0, r1, #0 + strh r0, [r5, #0x3a] + movs r3, #1 + movs r6, #2 + ldr r2, _080C18DC + adds r7, r2, #0 +_080C1876: + lsls r0, r3, #6 + adds r1, r0, r5 + strh r7, [r1, #0x22] + movs r2, #0x12 + adds r4, r0, #0 + adds r3, #1 +_080C1882: + lsls r0, r2, #1 + adds r0, r0, r1 + strh r6, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1c + bls _080C1882 + adds r0, r4, r5 + movs r1, #0xa + strh r1, [r0, #0x3a] + lsls r0, r3, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0xc + bls _080C1876 + ldr r0, _080C18E0 + adds r1, r5, r0 + ldr r2, _080C18E4 + adds r0, r2, #0 + strh r0, [r1] + movs r2, #0x12 + movs r3, #0xd0 + lsls r3, r3, #2 + movs r1, #0xd +_080C18B2: + lsls r0, r2, #1 + adds r0, r0, r5 + adds r0, r0, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1c + bls _080C18B2 + ldr r0, _080C18E8 + adds r1, r5, r0 + movs r0, #0xb + strh r0, [r1] + b _080C1910 + .align 2, 0 +_080C18D0: .4byte 0x00000C0B +_080C18D4: .4byte 0x0000080D +_080C18D8: .4byte 0x0000080B +_080C18DC: .4byte 0x0000040A +_080C18E0: .4byte 0x00000362 +_080C18E4: .4byte 0x0000040B +_080C18E8: .4byte 0x0000037A +_080C18EC: + movs r3, #0 + movs r6, #0x4f +_080C18F0: + movs r2, #0x11 + lsls r4, r3, #6 + adds r3, #1 + adds r1, r4, r5 +_080C18F8: + lsls r0, r2, #1 + adds r0, r0, r1 + strh r6, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1d + bls _080C18F8 + lsls r0, r3, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0xd + bls _080C18F0 +_080C1910: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C1838 + + thumb_func_start sub_080C1918 +sub_080C1918: @ 0x080C1918 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080C195C + ldr r3, _080C1960 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r0, r2, r3 + movs r5, #0xa + ldrsh r1, [r0, r5] + lsls r1, r1, #3 + adds r1, r1, r4 + ldr r6, [r1] + adds r3, #8 + adds r2, r2, r3 + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r0, r0, r2 + mov r8, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #1 + adds r7, r2, r0 + movs r0, #0x12 + movs r1, #1 + movs r2, #0x1c + movs r3, #0xc + bl sub_080C0810 + movs r5, #0 + ldrh r4, [r7] + b _080C1986 + .align 2, 0 +_080C195C: .4byte gUnknown_85443CC +_080C1960: .4byte gUnknown_3005B60 +_080C1964: + adds r0, r1, r6 + ldr r0, [r0, #4] + lsls r2, r5, #1 + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x13 + bl sub_080C07CC + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r5, #5 + bhi _080C1990 +_080C1986: + lsls r1, r4, #3 + adds r0, r1, r6 + ldr r0, [r0, #4] + cmp r0, #0 + bne _080C1964 +_080C1990: + movs r0, #0 + movs r1, #0xe + movs r2, #0x1d + movs r3, #0x13 + bl sub_080C0810 + mov r1, r8 + ldrh r0, [r1] + ldrh r1, [r7] + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r6 + ldr r0, [r0] + movs r1, #2 + movs r2, #0xf + bl sub_080C07CC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080C1918 + + thumb_func_start sub_080C19BC +sub_080C19BC: @ 0x080C19BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080C19FC + adds r1, r1, r0 + ldr r2, _080C1A00 + lsls r0, r3, #3 + adds r0, r0, r2 + ldrb r2, [r0, #4] + lsls r2, r2, #1 + adds r2, r1, r2 + ldrb r0, [r0, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r3, #5 + bhi _080C1A20 + lsls r0, r3, #2 + ldr r1, _080C1A04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C19FC: .4byte gUnknown_3005B68 +_080C1A00: .4byte gUnknown_85443CC +_080C1A04: .4byte _080C1A08 +_080C1A08: @ jump table + .4byte _080C1A34 @ case 0 + .4byte _080C1A3E @ case 1 + .4byte _080C1A4E @ case 2 + .4byte _080C1A4E @ case 3 + .4byte _080C1A2C @ case 4 + .4byte _080C1A24 @ case 5 +_080C1A20: + movs r0, #0 + b _080C1A54 +_080C1A24: + ldr r0, _080C1A28 + b _080C1A50 + .align 2, 0 +_080C1A28: .4byte gUnknown_85443B0 +_080C1A2C: + ldr r0, _080C1A30 + b _080C1A50 + .align 2, 0 +_080C1A30: .4byte gUnknown_85443B2 +_080C1A34: + cmp r2, #0 + beq _080C1A42 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + b _080C1A54 +_080C1A3E: + cmp r2, #0 + bne _080C1A46 +_080C1A42: + movs r0, #0xff + b _080C1A54 +_080C1A46: + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080C1A54 +_080C1A4E: + ldr r0, _080C1A58 +_080C1A50: + adds r0, r2, r0 + ldrb r0, [r0] +_080C1A54: + pop {r1} + bx r1 + .align 2, 0 +_080C1A58: .4byte gUnknown_85443B8 + thumb_func_end sub_080C19BC + + thumb_func_start sub_080C1A5C +sub_080C1A5C: @ 0x080C1A5C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080C1A7C + ldr r0, [r1] + ldr r2, _080C1A80 + adds r0, r0, r2 + ldrh r0, [r0] + adds r5, r1, #0 + cmp r0, #0 + beq _080C1A76 + cmp r0, #1 + beq _080C1A84 +_080C1A76: + movs r3, #0 + b _080C1A86 + .align 2, 0 +_080C1A7C: .4byte gUnknown_20397EC +_080C1A80: .4byte 0x00000614 +_080C1A84: + movs r3, #1 +_080C1A86: + ldr r1, _080C1AAC + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r3, [r0, #0xc] + ldr r0, [r5] + movs r3, #0xc3 + lsls r3, r3, #3 + adds r0, r0, r3 + ldrh r0, [r0] + adds r5, r1, #0 + cmp r0, #5 + bhi _080C1ACC + lsls r0, r0, #2 + ldr r1, _080C1AB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C1AAC: .4byte gUnknown_3005B60 +_080C1AB0: .4byte _080C1AB4 +_080C1AB4: @ jump table + .4byte _080C1ACC @ case 0 + .4byte _080C1AD0 @ case 1 + .4byte _080C1AD4 @ case 2 + .4byte _080C1AD8 @ case 3 + .4byte _080C1ADC @ case 4 + .4byte _080C1AE0 @ case 5 +_080C1ACC: + movs r3, #0 + b _080C1AE2 +_080C1AD0: + movs r3, #1 + b _080C1AE2 +_080C1AD4: + movs r3, #2 + b _080C1AE2 +_080C1AD8: + movs r3, #3 + b _080C1AE2 +_080C1ADC: + movs r3, #4 + b _080C1AE2 +_080C1AE0: + movs r3, #5 +_080C1AE2: + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r3, [r0, #0x10] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080C1A5C + + thumb_func_start sub_080C1AF0 +sub_080C1AF0: @ 0x080C1AF0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080C1B28 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r0, r1, r3 + ldrb r2, [r0, #0xa] + adds r3, #8 + adds r1, r1, r3 + ldr r0, _080C1B2C + lsls r2, r2, #3 + adds r2, r2, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r2, #6] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bls _080C1B30 + ldrh r0, [r1] + cmp r0, #0 + beq _080C1B30 + movs r0, #0 + b _080C1B32 + .align 2, 0 +_080C1B28: .4byte gUnknown_3005B60 +_080C1B2C: .4byte gUnknown_85443CC +_080C1B30: + movs r0, #1 +_080C1B32: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C1AF0 + + thumb_func_start sub_080C1B38 +sub_080C1B38: @ 0x080C1B38 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080C1B74 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r0, r1, r3 + ldrb r2, [r0, #0xa] + adds r3, #8 + adds r1, r1, r3 + ldr r0, _080C1B78 + lsls r2, r2, #3 + adds r2, r2, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r2, #6] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bls _080C1B7C + ldrh r1, [r1] + subs r0, #5 + cmp r1, r0 + bge _080C1B7C + movs r0, #0 + b _080C1B7E + .align 2, 0 +_080C1B74: .4byte gUnknown_3005B60 +_080C1B78: .4byte gUnknown_85443CC +_080C1B7C: + movs r0, #1 +_080C1B7E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C1B38 + + thumb_func_start sub_080C1B84 +sub_080C1B84: @ 0x080C1B84 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _080C1BC4 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _080C1BC8 + cmp r1, r0 + bne _080C1C24 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080C1BCC + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C1B38 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1BE8 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + b _080C1BF4 + .align 2, 0 +_080C1BC4: .4byte gUnknown_3005B60 +_080C1BC8: .4byte sub_080C117C +_080C1BCC: + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C1AF0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1BE8 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + b _080C1BF4 +_080C1BE8: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 +_080C1BF4: + strb r0, [r2] + ldrh r2, [r4, #0x32] + movs r1, #0x30 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + adds r0, r2, r0 + lsls r0, r0, #0x18 + ldr r1, _080C1C20 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080C1C12 + adds r0, #0x7f +_080C1C12: + asrs r0, r0, #7 + strh r0, [r4, #0x26] + adds r0, r2, #0 + adds r0, #8 + strh r0, [r4, #0x32] + b _080C1C30 + .align 2, 0 +_080C1C20: .4byte gUnknown_82FA8CC +_080C1C24: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080C1C30: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C1B84 + + thumb_func_start sub_080C1C38 +sub_080C1C38: @ 0x080C1C38 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _080C1CB0 + adds r0, r6, #0 + movs r1, #0xb8 + movs r2, #4 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080C1CB4 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r0, r1, r4 + movs r2, #0 + strh r5, [r0, #0x2e] + strh r2, [r0, #0x30] + movs r0, #0x1c + adds r0, r0, r4 + mov sb, r0 + add r1, sb + ldr r0, _080C1CB8 + mov r8, r0 + str r0, [r1] + adds r0, r6, #0 + movs r1, #0xb8 + movs r2, #0x6c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r4, r1, r4 + strh r5, [r4, #0x2e] + movs r0, #1 + strh r0, [r4, #0x30] + adds r4, #0x3f + ldrb r0, [r4] + movs r2, #2 + orrs r0, r2 + strb r0, [r4] + add r1, sb + mov r0, r8 + str r0, [r1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C1CB0: .4byte gUnknown_8539AFC +_080C1CB4: .4byte gUnknown_20205AC +_080C1CB8: .4byte sub_080C1B84 + thumb_func_end sub_080C1C38 + + thumb_func_start sub_080C1CBC +sub_080C1CBC: @ 0x080C1CBC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080C41FC + ldr r0, _080C1CF0 + ldr r0, [r0] + ldrb r0, [r0, #9] + cmp r0, #0 + beq _080C1CEC + ldr r1, _080C1CF4 + ldr r0, _080C1CF8 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _080C1CFC + str r0, [r1, #8] + ldr r0, [r1, #8] +_080C1CEC: + pop {r0} + bx r0 + .align 2, 0 +_080C1CF0: .4byte gUnknown_2039988 +_080C1CF4: .4byte 0x040000D4 +_080C1CF8: .4byte gUnknown_20388C8 +_080C1CFC: .4byte 0x800000A0 + thumb_func_end sub_080C1CBC + + thumb_func_start sub_080C1D00 +sub_080C1D00: @ 0x080C1D00 + push {r4, lr} + ldr r4, _080C1D2C + ldrh r3, [r4] + movs r0, #0 + strh r0, [r4] + ldr r1, _080C1D30 + ldr r0, _080C1D34 + ldrh r2, [r0] + movs r0, #0xff + ands r0, r2 + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _080C1D38 + strh r1, [r0] + strh r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C1D2C: .4byte 0x04000208 +_080C1D30: .4byte gUnknown_20388C8 +_080C1D34: .4byte 0x04000006 +_080C1D38: .4byte 0x04000012 + thumb_func_end sub_080C1D00 + + thumb_func_start sub_080C1D3C +sub_080C1D3C: @ 0x080C1D3C + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C1D3C + + thumb_func_start sub_080C1D54 +sub_080C1D54: @ 0x080C1D54 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080C1D84 + ldr r0, [r5] + ldr r1, _080C1D88 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08000540 + bl sub_080034D4 + ldr r0, [r5] + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] + adds r0, r4, #0 + bl sub_080A8964 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C1D84: .4byte gUnknown_2039988 +_080C1D88: .4byte 0x0000051C + thumb_func_end sub_080C1D54 + + thumb_func_start sub_080C1D8C +sub_080C1D8C: @ 0x080C1D8C + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080C1DAC + ldr r0, [r1] + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0x10 + bls _080C1DA2 + b _080C20F6 +_080C1DA2: + lsls r0, r0, #2 + ldr r1, _080C1DB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C1DAC: .4byte gUnknown_2039988 +_080C1DB0: .4byte _080C1DB4 +_080C1DB4: @ jump table + .4byte _080C1DF8 @ case 0 + .4byte _080C1E0E @ case 1 + .4byte _080C1E1C @ case 2 + .4byte _080C1E24 @ case 3 + .4byte _080C1E38 @ case 4 + .4byte _080C1E4C @ case 5 + .4byte _080C1E60 @ case 6 + .4byte _080C1E66 @ case 7 + .4byte _080C1EC8 @ case 8 + .4byte _080C1EF4 @ case 9 + .4byte _080C1F10 @ case 10 + .4byte _080C1FC8 @ case 11 + .4byte _080C1F9C @ case 12 + .4byte _080C20D6 @ case 13 + .4byte _080C20C4 @ case 14 + .4byte _080C2058 @ case 15 + .4byte _080C2094 @ case 16 +_080C1DF8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1E04 + b _080C20F6 +_080C1E04: + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + b _080C1F00 +_080C1E0E: + bl sub_080C2A68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C1E1A + b _080C20F6 +_080C1E1A: + b _080C1F00 +_080C1E1C: + movs r0, #1 + bl sub_080C3CC8 + b _080C1F00 +_080C1E24: + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + bl sub_080C48F4 + movs r0, #2 + bl sub_080C3CC8 + b _080C1F00 +_080C1E38: + ldr r0, [r4] + ldr r1, _080C1E48 + adds r0, r0, r1 + bl sub_080C3E84 + ldr r1, [r4] + b _080C1F04 + .align 2, 0 +_080C1E48: .4byte 0x00000EE4 +_080C1E4C: + ldr r0, [r4] + ldr r2, _080C1E5C + adds r0, r0, r2 + bl sub_080C3EF4 + ldr r1, [r4] + b _080C1F04 + .align 2, 0 +_080C1E5C: .4byte 0x00000584 +_080C1E60: + bl sub_080C3F64 + b _080C1F00 +_080C1E66: + ldr r0, _080C1EB8 + ldrb r0, [r0] + cmp r0, #1 + bne _080C1E82 + ldr r0, _080C1EBC + ldrb r0, [r0] + cmp r0, #1 + bne _080C1E82 + bl sub_0800DBB4 + movs r0, #0xe6 + movs r1, #0x96 + bl sub_0800DA80 +_080C1E82: + movs r6, #1 + rsbs r6, r6, #0 + ldr r4, _080C1EC0 + ldr r0, [r4] + movs r5, #0xa3 + lsls r5, r5, #3 + adds r0, r0, r5 + ldrh r2, [r0] + adds r0, r6, #0 + movs r1, #0x10 + bl sub_080A22E8 + ldr r0, [r4] + adds r0, r0, r5 + ldrh r0, [r0] + str r0, [sp] + adds r0, r6, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080C1EC4 + bl sub_080006F0 + ldr r1, [r4] + b _080C1F04 + .align 2, 0 +_080C1EB8: .4byte gUnknown_300319C +_080C1EBC: .4byte gUnknown_30031C4 +_080C1EC0: .4byte gUnknown_2039988 +_080C1EC4: .4byte sub_080C1CBC +_080C1EC8: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1ED4 + b _080C20F6 +_080C1ED4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1EE0 + b _080C20F6 +_080C1EE0: + movs r0, #0xfb + bl sub_080A306C + ldr r0, _080C1EF0 + ldr r1, [r0] + movs r0, #0xa + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C1EF0: .4byte gUnknown_2039988 +_080C1EF4: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C1F00 + b _080C20F6 +_080C1F00: + ldr r0, _080C1F0C + ldr r1, [r0] +_080C1F04: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C1F0C: .4byte gUnknown_2039988 +_080C1F10: + ldr r0, _080C1F58 + ldrb r5, [r0] + cmp r5, #0 + bne _080C1F36 + ldr r0, [r4] + ldr r1, _080C1F5C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C1F36 + bl sub_080C2F5C + movs r0, #1 + bl sub_080C3CC8 + ldr r0, [r4] + ldr r2, _080C1F5C + adds r0, r0, r2 + strb r5, [r0] +_080C1F36: + ldr r0, _080C1F60 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C1F68 + bl sub_080C424C + movs r0, #0xf9 + bl sub_080A306C + ldr r0, _080C1F64 + ldr r1, [r0] + movs r0, #0xc + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C1F58: .4byte gUnknown_30031C4 +_080C1F5C: .4byte 0x00000515 +_080C1F60: .4byte gUnknown_3002360 +_080C1F64: .4byte gUnknown_2039988 +_080C1F68: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080C1F72 + b _080C20F6 +_080C1F72: + ldr r0, _080C1F94 + ldrb r0, [r0] + cmp r0, #0 + beq _080C1F8C + ldr r4, _080C1F98 + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080C1F8C + bl sub_08017AC0 + cmp r0, #1 + beq _080C2040 +_080C1F8C: + movs r0, #1 + rsbs r0, r0, #0 + ldr r4, _080C1F98 + b _080C20A0 + .align 2, 0 +_080C1F94: .4byte gUnknown_30031C4 +_080C1F98: .4byte gUnknown_2039988 +_080C1F9C: + bl sub_080C4274 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C1FA8 + b _080C20F6 +_080C1FA8: + bl sub_08086EFC + cmp r0, #1 + bne _080C1FB2 + b _080C20F6 +_080C1FB2: + movs r0, #0xfb + bl sub_080A306C + ldr r0, _080C1FC4 + ldr r1, [r0] + movs r0, #0xb + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C1FC4: .4byte gUnknown_2039988 +_080C1FC8: + ldr r0, _080C1FFC + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080C2020 + ldr r0, _080C2000 + ldrb r0, [r0] + cmp r0, #0 + beq _080C2008 + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080C1FEC + bl sub_08017AC0 + cmp r0, #1 + beq _080C2040 +_080C1FEC: + ldr r0, _080C2000 + ldrb r0, [r0] + cmp r0, #0 + beq _080C2008 + movs r0, #1 + rsbs r0, r0, #0 + ldr r4, _080C2004 + b _080C20A0 + .align 2, 0 +_080C1FFC: .4byte gUnknown_3002360 +_080C2000: .4byte gUnknown_30031C4 +_080C2004: .4byte gUnknown_2039988 +_080C2008: + bl sub_080C424C + ldr r0, _080C201C + ldr r1, [r0] + movs r0, #0xd + strb r0, [r1] + movs r0, #0xf9 + bl sub_080A306C + b _080C20F6 + .align 2, 0 +_080C201C: .4byte gUnknown_2039988 +_080C2020: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C20F6 + ldr r0, _080C2048 + ldrb r0, [r0] + cmp r0, #0 + beq _080C204C + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080C204C + bl sub_08017AC0 + cmp r0, #1 + bne _080C204C +_080C2040: + ldr r1, [r4] + movs r0, #0xf + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C2048: .4byte gUnknown_30031C4 +_080C204C: + movs r0, #1 + rsbs r0, r0, #0 + ldr r4, _080C2054 + b _080C20A0 + .align 2, 0 +_080C2054: .4byte gUnknown_2039988 +_080C2058: + bl sub_0800A7F8 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + ldr r2, _080C208C + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _080C2090 + ldr r1, [r0] + movs r0, #0x10 + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C208C: .4byte gUnknown_85CC3A7 +_080C2090: .4byte gUnknown_2039988 +_080C2094: + ldr r0, _080C20C0 + ldrb r0, [r0] + cmp r0, #0 + bne _080C20F6 + movs r0, #1 + rsbs r0, r0, #0 +_080C20A0: + ldr r1, [r4] + movs r2, #0xa3 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrh r1, [r1] + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + movs r0, #0xe + strb r0, [r1] + b _080C20F6 + .align 2, 0 +_080C20C0: .4byte gUnknown_30031C4 +_080C20C4: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C20F6 + adds r0, r5, #0 + bl sub_080C1D54 + b _080C20F6 +_080C20D6: + bl sub_080C4274 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C20F6 + bl sub_08086EFC + cmp r0, #1 + beq _080C20F6 + ldr r0, _080C2100 + ldr r1, [r0] + movs r0, #0xa + strb r0, [r1] + movs r0, #0xfb + bl sub_080A306C +_080C20F6: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C2100: .4byte gUnknown_2039988 + thumb_func_end sub_080C1D8C + + thumb_func_start sub_080C2104 +sub_080C2104: @ 0x080C2104 + push {lr} + ldr r0, _080C211C + ldr r1, [r0] + ldrb r0, [r1, #2] + cmp r0, #5 + bls _080C2112 + b _080C2298 +_080C2112: + lsls r0, r0, #2 + ldr r1, _080C2120 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C211C: .4byte gUnknown_2039988 +_080C2120: .4byte _080C2124 +_080C2124: @ jump table + .4byte _080C213C @ case 0 + .4byte _080C2170 @ case 1 + .4byte _080C21A4 @ case 2 + .4byte _080C2204 @ case 3 + .4byte _080C2238 @ case 4 + .4byte _080C226C @ case 5 +_080C213C: + ldr r0, _080C2150 + ldr r1, [r0] + ldr r2, _080C2154 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C2160 + ldr r0, _080C2158 + ldr r2, _080C215C + b _080C227E + .align 2, 0 +_080C2150: .4byte gUnknown_2039988 +_080C2154: .4byte 0x00000516 +_080C2158: .4byte gUnknown_8545BFC +_080C215C: .4byte 0x00000EE4 +_080C2160: + ldr r0, _080C2168 + ldr r2, _080C216C + b _080C227E + .align 2, 0 +_080C2168: .4byte gUnknown_8545C94 +_080C216C: .4byte 0x00000EE4 +_080C2170: + ldr r0, _080C2184 + ldr r1, [r0] + ldr r2, _080C2188 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C2194 + ldr r0, _080C218C + ldr r2, _080C2190 + b _080C227E + .align 2, 0 +_080C2184: .4byte gUnknown_2039988 +_080C2188: .4byte 0x00000516 +_080C218C: .4byte gUnknown_85456E8 +_080C2190: .4byte 0x00000A34 +_080C2194: + ldr r0, _080C219C + ldr r2, _080C21A0 + b _080C227E + .align 2, 0 +_080C219C: .4byte gUnknown_85457C4 +_080C21A0: .4byte 0x00000A34 +_080C21A4: + ldr r0, _080C21C0 + ldr r1, [r0] + ldrb r0, [r1, #5] + cmp r0, #0 + bne _080C21DC + ldr r2, _080C21C4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C21CC + ldr r0, _080C21C8 + adds r2, #0x6e + b _080C227E + .align 2, 0 +_080C21C0: .4byte gUnknown_2039988 +_080C21C4: .4byte 0x00000516 +_080C21C8: .4byte gUnknown_8545390 +_080C21CC: + ldr r0, _080C21D4 + ldr r2, _080C21D8 + b _080C227E + .align 2, 0 +_080C21D4: .4byte gUnknown_8545530 +_080C21D8: .4byte 0x00000584 +_080C21DC: + ldr r2, _080C21EC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C21F4 + ldr r0, _080C21F0 + adds r2, #0x6e + b _080C227E + .align 2, 0 +_080C21EC: .4byte 0x00000516 +_080C21F0: .4byte gUnknown_85458F0 +_080C21F4: + ldr r0, _080C21FC + ldr r2, _080C2200 + b _080C227E + .align 2, 0 +_080C21FC: .4byte gUnknown_8545A70 +_080C2200: .4byte 0x00000584 +_080C2204: + ldr r0, _080C2218 + ldr r1, [r0] + ldr r2, _080C221C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C2228 + ldr r0, _080C2220 + ldr r2, _080C2224 + b _080C227E + .align 2, 0 +_080C2218: .4byte gUnknown_2039988 +_080C221C: .4byte 0x00000516 +_080C2220: .4byte gUnknown_854622C +_080C2224: .4byte 0x00001394 +_080C2228: + ldr r0, _080C2230 + ldr r2, _080C2234 + b _080C227E + .align 2, 0 +_080C2230: .4byte gUnknown_8546474 +_080C2234: .4byte 0x00001394 +_080C2238: + ldr r0, _080C224C + ldr r1, [r0] + ldr r2, _080C2250 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C225C + ldr r0, _080C2254 + ldr r2, _080C2258 + b _080C227E + .align 2, 0 +_080C224C: .4byte gUnknown_2039988 +_080C2250: .4byte 0x00000516 +_080C2254: .4byte gUnknown_854441C +_080C2258: .4byte 0x00001994 +_080C225C: + ldr r0, _080C2264 + ldr r2, _080C2268 + b _080C227E + .align 2, 0 +_080C2264: .4byte gUnknown_8544B5C +_080C2268: .4byte 0x00001994 +_080C226C: + ldr r0, _080C2288 + ldr r1, [r0] + ldr r2, _080C228C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080C22A0 + ldr r0, _080C2290 + ldr r2, _080C2294 +_080C227E: + adds r1, r1, r2 + bl LZ77UnCompWram + b _080C22A0 + .align 2, 0 +_080C2288: .4byte gUnknown_2039988 +_080C228C: .4byte 0x00000516 +_080C2290: .4byte gUnknown_854521C +_080C2294: .4byte 0x00001794 +_080C2298: + movs r0, #0 + strb r0, [r1, #2] + movs r0, #1 + b _080C22AC +_080C22A0: + ldr r0, _080C22B0 + ldr r1, [r0] + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + movs r0, #0 +_080C22AC: + pop {r1} + bx r1 + .align 2, 0 +_080C22B0: .4byte gUnknown_2039988 + thumb_func_end sub_080C2104 + + thumb_func_start sub_080C22B4 +sub_080C22B4: @ 0x080C22B4 + push {lr} + sub sp, #8 + ldr r1, _080C22D4 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #0xa + bls _080C22CA + b _080C2408 +_080C22CA: + lsls r0, r0, #2 + ldr r1, _080C22D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C22D4: .4byte gUnknown_3002360 +_080C22D8: .4byte _080C22DC +_080C22DC: @ jump table + .4byte _080C2308 @ case 0 + .4byte _080C2320 @ case 1 + .4byte _080C2348 @ case 2 + .4byte _080C2380 @ case 3 + .4byte _080C239A @ case 4 + .4byte _080C23A4 @ case 5 + .4byte _080C23B8 @ case 6 + .4byte _080C23BE @ case 7 + .4byte _080C23D0 @ case 8 + .4byte _080C23D6 @ case 9 + .4byte _080C23E8 @ case 10 +_080C2308: + bl sub_080C297C + bl sub_080C2A44 + ldr r1, _080C231C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080C23FC + .align 2, 0 +_080C231C: .4byte gUnknown_3002360 +_080C2320: + movs r1, #0xe0 + lsls r1, r1, #0x13 + movs r0, #0 + str r0, [sp] + ldr r0, _080C2340 + mov r2, sp + str r2, [r0] + str r1, [r0, #4] + ldr r1, _080C2344 + str r1, [r0, #8] + ldr r0, [r0, #8] + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r3, r0 + b _080C23FC + .align 2, 0 +_080C2340: .4byte 0x040000D4 +_080C2344: .4byte 0x85000100 +_080C2348: + ldr r0, _080C2374 + ldr r0, [r0] + movs r1, #0xa3 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080C236C + movs r2, #0xa0 + lsls r2, r2, #0x13 + add r1, sp, #4 + strh r0, [r1] + ldr r0, _080C2378 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _080C237C + str r1, [r0, #8] + ldr r0, [r0, #8] +_080C236C: + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r3, r2 + b _080C23FC + .align 2, 0 +_080C2374: .4byte gUnknown_2039988 +_080C2378: .4byte 0x040000D4 +_080C237C: .4byte 0x81000200 +_080C2380: + bl sub_0800668C + bl sub_08008424 + bl sub_080A133C + ldr r1, _080C23A0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C239A: + bl sub_080C29B8 + b _080C23F4 + .align 2, 0 +_080C23A0: .4byte gUnknown_3002360 +_080C23A4: + bl sub_080C3B0C + ldr r1, _080C23B4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080C23FC + .align 2, 0 +_080C23B4: .4byte gUnknown_3002360 +_080C23B8: + bl sub_080C2104 + b _080C23EC +_080C23BE: + bl sub_080C3C6C + ldr r1, _080C23CC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080C23FC + .align 2, 0 +_080C23CC: .4byte gUnknown_3002360 +_080C23D0: + bl sub_080C28A4 + b _080C23F4 +_080C23D6: + bl sub_080C2B78 + ldr r1, _080C23E4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080C23FC + .align 2, 0 +_080C23E4: .4byte gUnknown_3002360 +_080C23E8: + bl sub_080C3CE4 +_080C23EC: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080C240C +_080C23F4: + ldr r1, _080C2404 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_080C23FC: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C240C + .align 2, 0 +_080C2404: .4byte gUnknown_3002360 +_080C2408: + bl sub_080C2A34 +_080C240C: + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C22B4 + + thumb_func_start sub_080C2414 +sub_080C2414: @ 0x080C2414 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08084180 + cmp r0, r4 + bls _080C2426 + adds r0, r4, #0 +_080C2426: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080C2414 + + thumb_func_start sub_080C242C +sub_080C242C: @ 0x080C242C + push {r4, r5, lr} + movs r5, #0 +_080C2430: + lsls r4, r5, #1 + ldr r1, _080C2454 + adds r0, r4, r1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C244E + ldr r1, _080C2458 + adds r0, r4, r1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C245C +_080C244E: + movs r0, #0 + b _080C2468 + .align 2, 0 +_080C2454: .4byte 0x000008C4 +_080C2458: .4byte 0x000008C5 +_080C245C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #6 + bls _080C2430 + movs r0, #1 +_080C2468: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C242C + + thumb_func_start sub_080C2470 +sub_080C2470: @ 0x080C2470 + push {r4, lr} + movs r0, #0xa + bl sub_08084180 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + bl sub_080BFE3C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080C248A + adds r4, #1 +_080C248A: + bl sub_080F91D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080C249C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080C249C: + bl sub_080C242C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C24AC + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080C24AC: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080C2470 + + thumb_func_start sub_080C24B4 +sub_080C24B4: @ 0x080C24B4 + push {lr} + adds r1, r0, #0 + movs r2, #0 + ldrh r0, [r1, #6] + cmp r0, #0 + bne _080C24C6 + ldr r0, [r1, #8] + cmp r0, #0 + beq _080C24C8 +_080C24C6: + movs r2, #1 +_080C24C8: + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080C24D4 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080C24D4: + ldrh r0, [r1, #0x1a] + cmp r0, #0x31 + bls _080C24E0 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080C24E0: + ldrb r0, [r1, #4] + cmp r0, #0 + beq _080C24EC + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080C24EC: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C24B4 + + thumb_func_start sub_080C24F4 +sub_080C24F4: @ 0x080C24F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r6, _080C25D4 + ldr r1, [r6] + ldrb r0, [r1, #8] + strb r0, [r5] + ldrh r0, [r1, #0xe] + strh r0, [r5, #0x10] + ldrb r0, [r1, #0x10] + strh r0, [r5, #0x12] + movs r0, #1 + bl sub_08084180 + adds r4, r0, #0 + movs r0, #0xa + bl sub_08084180 + cmp r0, #0 + bne _080C2526 + movs r4, #0 +_080C2526: + lsrs r0, r4, #0x10 + strh r0, [r5, #6] + lsrs r1, r4, #8 + movs r2, #0xff + ands r1, r2 + strh r1, [r5, #8] + ands r4, r2 + strh r4, [r5, #0xa] + ldr r1, _080C25D8 + cmp r0, r1 + bls _080C2544 + strh r1, [r5, #6] + movs r0, #0x3b + strh r0, [r5, #8] + strh r0, [r5, #0xa] +_080C2544: + ldr r0, _080C25DC + bl sub_0809D068 + strb r0, [r5, #2] + bl sub_080BFE3C + strb r0, [r5, #3] + bl sub_080C2E20 + strh r0, [r5, #0xc] + ldr r0, [r6] + ldrb r1, [r0, #0xb] + lsls r1, r1, #8 + ldrb r0, [r0, #0xa] + orrs r0, r1 + strh r0, [r5, #0xe] + ldr r4, _080C25E0 + movs r0, #0x17 + adds r1, r4, #0 + bl sub_080C2414 + strh r0, [r5, #0x14] + movs r0, #0x18 + adds r1, r4, #0 + bl sub_080C2414 + strh r0, [r5, #0x16] + ldr r1, _080C25E4 + movs r0, #0x15 + bl sub_080C2414 + strh r0, [r5, #0x20] + ldr r4, _080C25E8 + ldr r0, [r4] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + 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, _080C25EC + adds r3, r0, r1 +_080C25A4: + lsls r0, r2, #1 + adds r1, r6, r0 + adds r0, r3, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080C25A4 + ldr r0, _080C25D4 + ldr r1, [r0] + adds r0, r7, #0 + bl sub_080088B8 + mov r0, r8 + cmp r0, #1 + beq _080C2634 + cmp r0, #1 + bgt _080C25F0 + cmp r0, #0 + beq _080C25FC + b _080C2644 + .align 2, 0 +_080C25D4: .4byte gUnknown_3005AF0 +_080C25D8: .4byte 0x000003E7 +_080C25DC: .4byte 0x00000861 +_080C25E0: .4byte 0x0000270F +_080C25E4: .4byte 0x0000FFFF +_080C25E8: .4byte gUnknown_3005AEC +_080C25EC: .4byte 0x00002BB0 +_080C25F0: + mov r1, r8 + cmp r1, #2 + bne _080C2644 + movs r0, #0 + strh r0, [r5, #0x18] + strh r0, [r5, #0x1a] +_080C25FC: + ldr r1, _080C262C + movs r0, #0x23 + bl sub_080C2414 + strh r0, [r5, #0x1c] + ldr r1, _080C2630 + movs r0, #0x22 + bl sub_080C2414 + strh r0, [r5, #0x1e] + bl sub_080F91D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080C2620 + movs r0, #1 + strb r0, [r5, #4] +_080C2620: + adds r0, r5, #0 + bl sub_080C24B4 + strb r0, [r5, #1] + b _080C2644 + .align 2, 0 +_080C262C: .4byte 0x000003E7 +_080C2630: .4byte 0x0000FFFF +_080C2634: + movs r1, #0 + movs r0, #0 + strh r0, [r5, #0x18] + strh r0, [r5, #0x1a] + strh r0, [r5, #0x1c] + strh r0, [r5, #0x1e] + strb r1, [r5, #4] + strb r1, [r5, #1] +_080C2644: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C24F4 + + thumb_func_start sub_080C2650 +sub_080C2650: @ 0x080C2650 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #0x64 + bl memset + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_080C24F4 + bl sub_080C242C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r1, #0x60 + strh r0, [r1] + ldr r0, _080C26A8 + ldr r0, [r0] + ldr r2, _080C26AC + adds r0, r0, r2 + ldrh r0, [r0] + adds r2, r4, #0 + adds r2, #0x62 + strh r0, [r2] + ldrh r0, [r1] + cmp r0, #0 + beq _080C2696 + ldrb r0, [r4, #1] + adds r0, #1 + strb r0, [r4, #1] +_080C2696: + ldrb r0, [r4] + cmp r0, #1 + bne _080C26B4 + ldr r2, _080C26B0 + ldrh r0, [r4, #0xe] + movs r1, #7 + ands r0, r1 + adds r0, #8 + b _080C26BC + .align 2, 0 +_080C26A8: .4byte gUnknown_3005AF0 +_080C26AC: .4byte 0x00000EBA +_080C26B0: .4byte gUnknown_82FA6E2 +_080C26B4: + ldr r2, _080C26D0 + ldrh r0, [r4, #0xe] + movs r1, #7 + ands r0, r1 +_080C26BC: + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x4f + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C26D0: .4byte gUnknown_82FA6E2 + thumb_func_end sub_080C2650 + + thumb_func_start sub_080C26D4 +sub_080C26D4: @ 0x080C26D4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #0x60 + bl memset + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_080C24F4 + bl sub_080C242C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x3a] + ldr r1, _080C2724 + ldr r1, [r1] + ldr r2, _080C2728 + adds r1, r1, r2 + ldrh r1, [r1] + strh r1, [r4, #0x3c] + cmp r0, #0 + beq _080C2710 + ldrb r0, [r4, #1] + adds r0, #1 + strb r0, [r4, #1] +_080C2710: + ldrb r0, [r4] + cmp r0, #1 + bne _080C2730 + ldr r2, _080C272C + ldrh r0, [r4, #0xe] + movs r1, #7 + ands r0, r1 + adds r0, #8 + b _080C2738 + .align 2, 0 +_080C2724: .4byte gUnknown_3005AF0 +_080C2728: .4byte 0x00000EBA +_080C272C: .4byte gUnknown_82FA6E2 +_080C2730: + ldr r2, _080C274C + ldrh r0, [r4, #0xe] + movs r1, #7 + ands r0, r1 +_080C2738: + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x4f + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C274C: .4byte gUnknown_82FA6E2 + thumb_func_end sub_080C26D4 + + thumb_func_start sub_080C2750 +sub_080C2750: @ 0x080C2750 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + movs r2, #0x64 + bl memset + adds r0, r5, #0 + adds r0, #0x38 + strb r4, [r0] + adds r0, r4, #0 + bl sub_080C48D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080C2792 + cmp r0, #1 + bgt _080C2780 + cmp r0, #0 + beq _080C2786 + b _080C27BA +_080C2780: + cmp r0, #2 + beq _080C279E + b _080C27BA +_080C2786: + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x60 + bl memcpy + b _080C27BA +_080C2792: + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x38 + bl memcpy + b _080C27BA +_080C279E: + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x60 + bl memcpy + movs r0, #0 + str r0, [r5, #0x3c] + ldrh r1, [r6, #0x3a] + adds r0, r5, #0 + adds r0, #0x60 + strh r1, [r0] + ldrh r1, [r6, #0x3c] + adds r0, #2 + strh r1, [r0] +_080C27BA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080C2750 + + thumb_func_start sub_080C27C0 +sub_080C27C0: @ 0x080C27C0 + push {r4, r5, lr} + ldr r4, _080C288C + 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, #8 + bl memset + ldr r1, [r4] + ldr r2, _080C2890 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C27FE + ldrb r0, [r1, #0xa] + adds r0, #1 + strb r0, [r1, #0xa] +_080C27FE: + ldr r1, [r4] + ldr r3, _080C2894 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, #0 + bne _080C2816 + movs r2, #0xa5 + lsls r2, r2, #3 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C281C +_080C2816: + ldrb r0, [r1, #0xb] + adds r0, #1 + strb r0, [r1, #0xb] +_080C281C: + ldr r2, _080C288C + ldr r1, [r2] + ldr r3, _080C2898 + adds r0, r1, r3 + ldr r0, [r0] + cmp r0, #0 + beq _080C2830 + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] +_080C2830: + ldr r1, [r2] + movs r3, #0xa8 + lsls r3, r3, #3 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080C2844 + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] +_080C2844: + ldr r1, [r2] + movs r2, #0xa7 + lsls r2, r2, #3 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C2858 + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] +_080C2858: + movs r5, #0 + ldr r4, _080C289C +_080C285C: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C2878 + ldr r0, _080C288C + ldr r1, [r0] + adds r1, #0x11 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C2878: + adds r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080C28A0 + cmp r4, r0 + bls _080C285C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C288C: .4byte gUnknown_2039988 +_080C2890: .4byte 0x00000522 +_080C2894: .4byte 0x00000526 +_080C2898: .4byte 0x00000534 +_080C289C: .4byte 0x00000867 +_080C28A0: .4byte 0x0000086E + thumb_func_end sub_080C27C0 + + thumb_func_start sub_080C28A4 +sub_080C28A4: @ 0x080C28A4 + push {lr} + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0xc1 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x1e + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + ldr r0, _080C2908 + ldrb r0, [r0] + cmp r0, #0 + beq _080C290C + movs r0, #0xc7 + bl sub_08001274 + b _080C2912 + .align 2, 0 +_080C2908: .4byte gUnknown_30031C4 +_080C290C: + movs r0, #3 + bl sub_08001274 +_080C2912: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C28A4 + + thumb_func_start sub_080C2918 +sub_080C2918: @ 0x080C2918 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #0x28 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + bgt _080C2932 + movs r2, #0 +_080C2932: + ldr r4, _080C2970 + ldr r0, [r4] + ldr r1, _080C2974 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x54 + bl sub_08001144 + ldr r0, [r4] + ldr r1, _080C2978 + adds r0, r0, r1 + ldrh r2, [r0] + lsls r1, r2, #8 + movs r0, #0xa0 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2970: .4byte gUnknown_2039988 +_080C2974: .4byte 0x00000514 +_080C2978: .4byte 0x00007C94 + thumb_func_end sub_080C2918 + + thumb_func_start sub_080C297C +sub_080C297C: @ 0x080C297C + push {lr} + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C297C + + thumb_func_start sub_080C29B8 +sub_080C29B8: @ 0x080C29B8 + push {lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _080C2A2C + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, _080C2A30 + bl sub_08003090 + bl sub_08004480 + bl sub_08196F98 + pop {r0} + bx r0 + .align 2, 0 +_080C2A2C: .4byte gUnknown_8546714 +_080C2A30: .4byte gUnknown_8546724 + thumb_func_end sub_080C29B8 + + thumb_func_start sub_080C2A34 +sub_080C2A34: @ 0x080C2A34 + push {lr} + ldr r0, _080C2A40 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080C2A40: .4byte sub_080C1D3C + thumb_func_end sub_080C2A34 + + thumb_func_start sub_080C2A44 +sub_080C2A44: @ 0x080C2A44 + push {lr} + bl sub_080A8818 + bl sub_080B9710 + ldr r0, _080C2A64 + movs r1, #0 + bl sub_080A8878 + bl sub_080C47EC + bl sub_080C27C0 + pop {r0} + bx r0 + .align 2, 0 +_080C2A64: .4byte sub_080C1D8C + thumb_func_end sub_080C2A44 + + thumb_func_start sub_080C2A68 +sub_080C2A68: @ 0x080C2A68 + push {lr} + ldr r0, _080C2A80 + ldr r1, [r0] + ldrb r0, [r1, #1] + cmp r0, #5 + bhi _080C2AC4 + lsls r0, r0, #2 + ldr r1, _080C2A84 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C2A80: .4byte gUnknown_2039988 +_080C2A84: .4byte _080C2A88 +_080C2A88: @ jump table + .4byte _080C2AA0 @ case 0 + .4byte _080C2AA6 @ case 1 + .4byte _080C2AAC @ case 2 + .4byte _080C2AB2 @ case 3 + .4byte _080C2AB8 @ case 4 + .4byte _080C2ABE @ case 5 +_080C2AA0: + bl sub_080C2BA4 + b _080C2ACC +_080C2AA6: + bl sub_080C2C5C + b _080C2ACC +_080C2AAC: + bl sub_080C2D14 + b _080C2ACC +_080C2AB2: + bl sub_080C2E40 + b _080C2ACC +_080C2AB8: + bl sub_080C2F5C + b _080C2ACC +_080C2ABE: + bl sub_080C310C + b _080C2ACC +_080C2AC4: + movs r0, #0 + strb r0, [r1, #1] + movs r0, #1 + b _080C2AD8 +_080C2ACC: + ldr r0, _080C2ADC + ldr r1, [r0] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + movs r0, #0 +_080C2AD8: + pop {r1} + bx r1 + .align 2, 0 +_080C2ADC: .4byte gUnknown_2039988 + thumb_func_end sub_080C2A68 + + thumb_func_start sub_080C2AE0 +sub_080C2AE0: @ 0x080C2AE0 + push {lr} + ldr r0, _080C2AF8 + ldr r1, [r0] + ldrb r0, [r1, #1] + cmp r0, #7 + bhi _080C2B5C + lsls r0, r0, #2 + ldr r1, _080C2AFC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C2AF8: .4byte gUnknown_2039988 +_080C2AFC: .4byte _080C2B00 +_080C2B00: @ jump table + .4byte _080C2B20 @ case 0 + .4byte _080C2B26 @ case 1 + .4byte _080C2B2C @ case 2 + .4byte _080C2B32 @ case 3 + .4byte _080C2B38 @ case 4 + .4byte _080C2B42 @ case 5 + .4byte _080C2B4C @ case 6 + .4byte _080C2B56 @ case 7 +_080C2B20: + bl sub_080C323C + b _080C2B64 +_080C2B26: + bl sub_080C3330 + b _080C2B64 +_080C2B2C: + bl sub_080C340C + b _080C2B64 +_080C2B32: + bl sub_080C34E4 + b _080C2B64 +_080C2B38: + bl sub_080C35C0 + bl sub_080C3760 + b _080C2B64 +_080C2B42: + bl sub_080C3684 + bl sub_080C3828 + b _080C2B64 +_080C2B4C: + bl sub_080C3A70 + bl sub_080C395C + b _080C2B64 +_080C2B56: + bl sub_080C3BE4 + b _080C2B64 +_080C2B5C: + movs r0, #0 + strb r0, [r1, #1] + movs r0, #1 + b _080C2B70 +_080C2B64: + ldr r0, _080C2B74 + ldr r1, [r0] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + movs r0, #0 +_080C2B70: + pop {r1} + bx r1 + .align 2, 0 +_080C2B74: .4byte gUnknown_2039988 + thumb_func_end sub_080C2AE0 + + thumb_func_start sub_080C2B78 +sub_080C2B78: @ 0x080C2B78 + push {lr} + bl sub_080C31FC + bl sub_080C32C0 + bl sub_080C33A0 + bl sub_080C34B8 + bl sub_080C3584 + bl sub_080C364C + bl sub_080C3710 + bl sub_080C37EC + bl sub_080C38B4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C2B78 + + thumb_func_start sub_080C2BA4 +sub_080C2BA4: @ 0x080C2BA4 + push {r4, lr} + sub sp, #0xc + ldr r0, _080C2BD4 + ldr r0, [r0] + ldr r1, _080C2BD8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C2BE8 + ldr r0, _080C2BDC + ldrb r1, [r0, #1] + ldr r0, _080C2BE0 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _080C2BE4 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x14 + movs r3, #0x1e + bl sub_08199AFC + b _080C2C04 + .align 2, 0 +_080C2BD4: .4byte gUnknown_2039988 +_080C2BD8: .4byte 0x00000516 +_080C2BDC: .4byte gUnknown_8546775 +_080C2BE0: .4byte gUnknown_854676C +_080C2BE4: .4byte gUnknown_85CC31F +_080C2BE8: + ldr r0, _080C2C40 + ldrb r1, [r0, #1] + ldr r0, _080C2C44 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _080C2C48 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #0x22 + bl sub_08199AFC +_080C2C04: + ldr r0, _080C2C40 + ldrb r1, [r0, #1] + ldr r2, _080C2C4C + ldr r0, _080C2C50 + ldr r4, [r0] + ldr r3, _080C2C54 + adds r0, r4, r3 + ldrb r0, [r0] + adds r2, r0, r2 + ldrb r2, [r2] + ldr r3, _080C2C58 + adds r0, r0, r3 + ldrb r3, [r0] + ldr r0, _080C2C44 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + movs r0, #0xaa + lsls r0, r0, #3 + adds r4, r4, r0 + str r4, [sp, #8] + movs r0, #1 + bl sub_08199AFC + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C2C40: .4byte gUnknown_8546775 +_080C2C44: .4byte gUnknown_854676C +_080C2C48: .4byte gUnknown_85CC31F +_080C2C4C: .4byte gUnknown_85467A0 +_080C2C50: .4byte gUnknown_2039988 +_080C2C54: .4byte 0x00000517 +_080C2C58: .4byte gUnknown_85467A2 + thumb_func_end sub_080C2BA4 + + thumb_func_start sub_080C2C5C +sub_080C2C5C: @ 0x080C2C5C + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r4, _080C2CB4 + ldr r0, [r4] + ldr r1, _080C2CB8 + adds r0, r0, r1 + ldrh r1, [r0] + add r0, sp, #0xc + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C2CBC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C2CCC + ldr r0, _080C2CC0 + ldrb r6, [r0, #1] + ldr r5, _080C2CC4 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2CC8 + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x82 + movs r3, #0xb + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0xa6 + movs r3, #0xb + bl sub_08199AFC + b _080C2CFE + .align 2, 0 +_080C2CB4: .4byte gUnknown_2039988 +_080C2CB8: .4byte 0x0000052E +_080C2CBC: .4byte 0x00000516 +_080C2CC0: .4byte gUnknown_8546775 +_080C2CC4: .4byte gUnknown_854676C +_080C2CC8: .4byte gUnknown_85CC323 +_080C2CCC: + ldr r0, _080C2D08 + ldrb r6, [r0, #1] + ldr r5, _080C2D0C + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2D10 + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x73 + movs r3, #0xa + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + add r1, sp, #0xc + str r1, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x99 + movs r3, #0xa + bl sub_08199AFC +_080C2CFE: + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C2D08: .4byte gUnknown_8546775 +_080C2D0C: .4byte gUnknown_854676C +_080C2D10: .4byte gUnknown_85CC323 + thumb_func_end sub_080C2C5C + + thumb_func_start sub_080C2D14 +sub_080C2D14: @ 0x080C2D14 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _080C2D94 + ldr r4, _080C2D98 + ldr r0, [r4] + ldr r1, _080C2D9C + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r7, #0 + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C2DA0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C2DB4 + ldr r6, _080C2DA4 + ldrb r1, [r6, #1] + ldr r5, _080C2DA8 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2DAC + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x14 + movs r3, #0x38 + bl sub_08199AFC + adds r0, r7, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + movs r1, #0x78 + rsbs r1, r1, #0 + adds r2, r1, #0 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r6, [r6] + str r5, [sp] + str r4, [sp, #4] + str r7, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r3, #0x38 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _080C2DB0 + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x8a + movs r3, #0x38 + bl sub_08199AFC + b _080C2E08 + .align 2, 0 +_080C2D94: .4byte gUnknown_2021C7C +_080C2D98: .4byte gUnknown_2039988 +_080C2D9C: .4byte 0x00000544 +_080C2DA0: .4byte 0x00000517 +_080C2DA4: .4byte gUnknown_8546775 +_080C2DA8: .4byte gUnknown_854676C +_080C2DAC: .4byte gUnknown_85CC329 +_080C2DB0: .4byte gUnknown_85CC32F +_080C2DB4: + ldr r6, _080C2E10 + ldrb r1, [r6, #1] + ldr r5, _080C2E14 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2E18 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #0x3a + bl sub_08199AFC + adds r0, r7, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + movs r2, #0x6c + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r6, [r6] + str r5, [sp] + str r4, [sp, #4] + str r7, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r3, #0x3a + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _080C2E1C + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x6e + movs r3, #0x3a + bl sub_08199AFC +_080C2E08: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2E10: .4byte gUnknown_8546775 +_080C2E14: .4byte gUnknown_854676C +_080C2E18: .4byte gUnknown_85CC329 +_080C2E1C: .4byte gUnknown_85CC32F + thumb_func_end sub_080C2D14 + + thumb_func_start sub_080C2E20 +sub_080C2E20: @ 0x080C2E20 + push {lr} + bl sub_0809CD04 + cmp r0, #0 + bne _080C2E32 + movs r0, #1 + bl sub_080BFD9C + b _080C2E38 +_080C2E32: + movs r0, #1 + bl sub_080BFD4C +_080C2E38: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_080C2E20 + + thumb_func_start sub_080C2E40 +sub_080C2E40: @ 0x080C2E40 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _080C2ECC + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C2F44 + ldr r7, _080C2ED0 + ldr r4, _080C2ED4 + ldr r0, [r4] + ldr r1, _080C2ED8 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r7, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C2EDC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C2EF0 + ldr r6, _080C2EE0 + ldrb r1, [r6, #1] + ldr r5, _080C2EE4 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2EE8 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x14 + movs r3, #0x48 + bl sub_08199AFC + adds r0, r7, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + movs r1, #0x78 + rsbs r1, r1, #0 + adds r2, r1, #0 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r6, [r6] + str r5, [sp] + str r4, [sp, #4] + str r7, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r3, #0x48 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _080C2EEC + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x8a + movs r3, #0x48 + bl sub_08199AFC + b _080C2F44 + .align 2, 0 +_080C2ECC: .4byte 0x00000861 +_080C2ED0: .4byte gUnknown_2021C7C +_080C2ED4: .4byte gUnknown_2039988 +_080C2ED8: .4byte 0x0000052C +_080C2EDC: .4byte 0x00000517 +_080C2EE0: .4byte gUnknown_8546775 +_080C2EE4: .4byte gUnknown_854676C +_080C2EE8: .4byte gUnknown_85CC331 +_080C2EEC: .4byte gUnknown_85CC339 +_080C2EF0: + ldr r6, _080C2F4C + ldrb r1, [r6, #1] + ldr r5, _080C2F50 + str r5, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C2F54 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #0x4a + bl sub_08199AFC + adds r0, r7, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + movs r2, #0x6c + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r6, [r6] + str r5, [sp] + str r4, [sp, #4] + str r7, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r3, #0x4a + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _080C2F58 + str r0, [sp, #8] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0x6e + movs r3, #0x4a + bl sub_08199AFC +_080C2F44: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C2F4C: .4byte gUnknown_8546775 +_080C2F50: .4byte gUnknown_854676C +_080C2F54: .4byte gUnknown_85CC331 +_080C2F58: .4byte gUnknown_85CC339 + thumb_func_end sub_080C2E40 + + thumb_func_start sub_080C2F5C +sub_080C2F5C: @ 0x080C2F5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r0, _080C2F84 + ldr r2, [r0] + ldrb r1, [r2, #5] + adds r6, r0, #0 + cmp r1, #0 + beq _080C2F88 + movs r1, #0xa6 + lsls r1, r1, #3 + adds r0, r2, r1 + ldrh r5, [r0] + adds r1, #2 + adds r0, r2, r1 + ldrh r0, [r0] + b _080C2F90 + .align 2, 0 +_080C2F84: .4byte gUnknown_2039988 +_080C2F88: + ldr r0, _080C2FF0 + ldr r0, [r0] + ldrh r5, [r0, #0xe] + ldrb r0, [r0, #0x10] +_080C2F90: + mov sl, r0 + ldr r0, _080C2FF4 + cmp r5, r0 + bls _080C2F9A + adds r5, r0, #0 +_080C2F9A: + mov r2, sl + cmp r2, #0x3b + bls _080C2FA4 + movs r0, #0x3b + mov sl, r0 +_080C2FA4: + ldr r1, _080C2FF8 + ldr r0, [r6] + ldr r4, _080C2FFC + adds r0, r0, r4 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + ldr r1, _080C3000 + adds r0, r0, r1 + ldrb r3, [r0] + movs r0, #0x32 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + bl sub_08003A34 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080C3010 + ldr r0, _080C3004 + ldrb r1, [r0, #1] + ldr r0, _080C3008 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _080C300C + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x14 + movs r3, #0x58 + bl sub_08199AFC + b _080C302C + .align 2, 0 +_080C2FF0: .4byte gUnknown_3005AF0 +_080C2FF4: .4byte 0x000003E7 +_080C2FF8: .4byte gUnknown_85467AC +_080C2FFC: .4byte 0x00000517 +_080C3000: .4byte gUnknown_85467B2 +_080C3004: .4byte gUnknown_8546775 +_080C3008: .4byte gUnknown_854676C +_080C300C: .4byte gUnknown_85CC341 +_080C3010: + ldr r0, _080C30DC + ldrb r1, [r0, #1] + ldr r0, _080C30E0 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _080C30E4 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #0x5a + bl sub_08199AFC +_080C302C: + ldr r0, _080C30E8 + adds r1, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, _080C30DC + ldrb r7, [r0] + ldr r1, _080C30EC + ldr r2, _080C30F0 + mov sb, r2 + ldr r0, [r2] + ldr r2, _080C30F4 + mov r8, r2 + add r0, r8 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + ldr r6, _080C30F8 + adds r0, r0, r6 + ldrb r3, [r0] + ldr r0, _080C30E0 + str r0, [sp] + movs r5, #1 + rsbs r5, r5, #0 + str r5, [sp, #4] + ldr r1, _080C30E8 + str r1, [sp, #8] + movs r0, #1 + adds r1, r7, #0 + bl sub_08199AFC + ldr r1, _080C30FC + mov r2, sb + ldr r4, [r2] + mov r2, r8 + adds r0, r4, r2 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + adds r0, r0, r6 + ldrb r3, [r0] + ldr r1, _080C3100 + ldrb r0, [r4, #7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp] + str r5, [sp, #4] + ldr r0, _080C3104 + str r0, [sp, #8] + movs r0, #1 + adds r1, r7, #0 + bl sub_08199AFC + ldr r0, _080C30E8 + mov r1, sl + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r1, _080C3108 + mov r2, sb + ldr r0, [r2] + add r0, r8 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r2, [r1] + adds r0, r0, r6 + ldrb r3, [r0] + ldr r0, _080C30E0 + str r0, [sp] + str r5, [sp, #4] + ldr r1, _080C30E8 + str r1, [sp, #8] + movs r0, #1 + adds r1, r7, #0 + bl sub_08199AFC + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C30DC: .4byte gUnknown_8546775 +_080C30E0: .4byte gUnknown_854676C +_080C30E4: .4byte gUnknown_85CC341 +_080C30E8: .4byte gUnknown_2021C7C +_080C30EC: .4byte gUnknown_85467AC +_080C30F0: .4byte gUnknown_2039988 +_080C30F4: .4byte 0x00000517 +_080C30F8: .4byte gUnknown_85467B2 +_080C30FC: .4byte gUnknown_85467AE +_080C3100: .4byte gUnknown_85467A4 +_080C3104: .4byte gUnknown_85CC33C +_080C3108: .4byte gUnknown_85467B0 + thumb_func_end sub_080C2F5C + + thumb_func_start sub_080C310C +sub_080C310C: @ 0x080C310C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _080C31E8 + ldr r1, [r7] + ldrb r0, [r1, #5] + cmp r0, #0 + beq _080C31DC + ldr r0, _080C31EC + mov r8, r0 + ldr r4, _080C31F0 + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + ldr r0, _080C31F4 + str r0, [sp] + movs r5, #1 + rsbs r5, r5, #0 + str r5, [sp, #4] + adds r0, r1, #0 + adds r0, #0x19 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0xa + bl sub_08199AFC + ldr r0, [r7] + adds r0, #0x19 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + adds r2, r0, #0 + muls r2, r6, r2 + adds r2, #0xa + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + ldr r0, _080C31F4 + str r0, [sp] + str r5, [sp, #4] + adds r1, #0x21 + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + bl sub_08199AFC + ldr r0, _080C31F8 + mov r8, r0 + ldr r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r3, [r0] + ldr r0, _080C31F4 + str r0, [sp] + str r5, [sp, #4] + adds r1, #0x29 + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0xa + bl sub_08199AFC + ldr r0, [r7] + adds r0, #0x29 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #1 + adds r2, r0, #0 + muls r2, r6, r2 + adds r2, #0xa + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [r7] + adds r4, r1, r4 + ldrb r0, [r4] + add r0, r8 + ldrb r3, [r0] + ldr r0, _080C31F4 + str r0, [sp] + str r5, [sp, #4] + adds r1, #0x31 + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + bl sub_08199AFC +_080C31DC: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C31E8: .4byte gUnknown_2039988 +_080C31EC: .4byte gUnknown_85467B4 +_080C31F0: .4byte 0x00000517 +_080C31F4: .4byte gUnknown_854676C +_080C31F8: .4byte gUnknown_85467B6 + thumb_func_end sub_080C310C + + thumb_func_start sub_080C31FC +sub_080C31FC: @ 0x080C31FC + push {r4, lr} + ldr r4, _080C3230 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x39 + movs r2, #0xaa + lsls r2, r2, #3 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, [r4] + ldr r1, _080C3234 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3228 + adds r0, r4, #0 + adds r0, #0x39 + ldr r1, _080C3238 + movs r2, #0xa + bl sub_08008920 +_080C3228: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3230: .4byte gUnknown_2039988 +_080C3234: .4byte 0x00000516 +_080C3238: .4byte gUnknown_85CC350 + thumb_func_end sub_080C31FC + + thumb_func_start sub_080C323C +sub_080C323C: @ 0x080C323C + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _080C3270 + ldr r2, [r5] + ldr r1, _080C3274 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C3280 + ldr r0, _080C3278 + ldrb r1, [r0, #1] + ldr r0, _080C327C + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + adds r0, r2, #0 + adds r0, #0x39 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x82 + movs r3, #0xa + bl sub_08199AFC + b _080C32B0 + .align 2, 0 +_080C3270: .4byte gUnknown_2039988 +_080C3274: .4byte 0x00000517 +_080C3278: .4byte gUnknown_8546775 +_080C327C: .4byte gUnknown_854676C +_080C3280: + adds r1, r2, #0 + adds r1, #0x39 + movs r4, #1 + rsbs r4, r4, #0 + movs r0, #1 + adds r2, r4, #0 + bl sub_08005DAC + movs r2, #0xd8 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080C32B8 + ldrb r1, [r0, #1] + ldr r0, _080C32BC + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + adds r0, #0x39 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0xa + bl sub_08199AFC +_080C32B0: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C32B8: .4byte gUnknown_8546775 +_080C32BC: .4byte gUnknown_854676C + thumb_func_end sub_080C323C + + thumb_func_start sub_080C32C0 +sub_080C32C0: @ 0x080C32C0 + push {r4, lr} + ldr r4, _080C3314 + ldr r1, [r4] + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _080C330C + ldr r0, _080C3318 + ldr r2, _080C331C + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, _080C3320 + ldr r1, [r4] + movs r2, #0xa5 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, _080C3324 + ldr r1, [r4] + ldr r2, _080C3328 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r4] + adds r0, #0x7f + ldr r1, _080C332C + bl sub_08008BCC +_080C330C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3314: .4byte gUnknown_2039988 +_080C3318: .4byte gUnknown_2021C40 +_080C331C: .4byte 0x00000526 +_080C3320: .4byte gUnknown_2021C54 +_080C3324: .4byte gUnknown_2021C68 +_080C3328: .4byte 0x0000052A +_080C332C: .4byte gUnknown_85467B8 + thumb_func_end sub_080C32C0 + + thumb_func_start sub_080C3330 +sub_080C3330: @ 0x080C3330 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C3384 + ldr r3, [r6] + ldrb r0, [r3, #0xb] + cmp r0, #0 + beq _080C337C + ldr r5, _080C3388 + ldrb r1, [r5, #1] + ldr r2, _080C338C + ldr r4, _080C3390 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C3394 + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C3398 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x23 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C339C + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r6] + adds r0, #0x7f + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x91 + movs r3, #0x23 + bl sub_08199AFC +_080C337C: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3384: .4byte gUnknown_2039988 +_080C3388: .4byte gUnknown_8546775 +_080C338C: .4byte gUnknown_85467C1 +_080C3390: .4byte 0x00000517 +_080C3394: .4byte gUnknown_854676C +_080C3398: .4byte gUnknown_85CC35A +_080C339C: .4byte gUnknown_854676F + thumb_func_end sub_080C3330 + + thumb_func_start sub_080C33A0 +sub_080C33A0: @ 0x080C33A0 + push {r4, lr} + ldr r4, _080C33F0 + ldr r1, [r4] + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _080C33EA + adds r0, r1, #0 + adds r0, #0xc5 + ldr r2, _080C33F4 + ldr r3, _080C33F8 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r1, [r4] + ldr r2, _080C33FC + adds r0, r1, r2 + ldr r3, _080C3400 + adds r1, r1, r3 + ldrh r1, [r1] + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + ldr r1, [r4] + ldr r2, _080C3404 + adds r0, r1, r2 + ldr r3, _080C3408 + adds r1, r1, r3 + ldrh r1, [r1] + movs r2, #0 + movs r3, #4 + bl sub_080089D8 +_080C33EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C33F0: .4byte gUnknown_2039988 +_080C33F4: .4byte gUnknown_85467C4 +_080C33F8: .4byte 0x00000516 +_080C33FC: .4byte 0x00000151 +_080C3400: .4byte 0x00000534 +_080C3404: .4byte 0x00000197 +_080C3408: .4byte 0x00000536 + thumb_func_end sub_080C33A0 + + thumb_func_start sub_080C340C +sub_080C340C: @ 0x080C340C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _080C3494 + ldr r3, [r7] + ldrb r0, [r3, #0xc] + cmp r0, #0 + beq _080C348A + ldr r5, _080C3498 + ldrb r1, [r5, #1] + ldr r2, _080C349C + ldr r4, _080C34A0 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r6, _080C34A4 + str r6, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + adds r0, r3, #0 + adds r0, #0xc5 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x33 + bl sub_08199AFC + ldrb r5, [r5] + str r6, [sp] + str r4, [sp, #4] + ldr r0, _080C34A8 + str r0, [sp, #8] + movs r0, #1 + adds r1, r5, #0 + movs r2, #0x6e + movs r3, #0x33 + bl sub_08199AFC + ldr r6, _080C34AC + str r6, [sp] + str r4, [sp, #4] + ldr r0, [r7] + ldr r1, _080C34B0 + adds r0, r0, r1 + str r0, [sp, #8] + movs r0, #1 + adds r1, r5, #0 + movs r2, #0x82 + movs r3, #0x33 + bl sub_08199AFC + str r6, [sp] + str r4, [sp, #4] + ldr r0, [r7] + ldr r4, _080C34B4 + adds r0, r0, r4 + str r0, [sp, #8] + movs r0, #1 + adds r1, r5, #0 + movs r2, #0xb9 + movs r3, #0x33 + bl sub_08199AFC +_080C348A: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3494: .4byte gUnknown_2039988 +_080C3498: .4byte gUnknown_8546775 +_080C349C: .4byte gUnknown_85467C1 +_080C34A0: .4byte 0x00000517 +_080C34A4: .4byte gUnknown_854676C +_080C34A8: .4byte gUnknown_85CC379 +_080C34AC: .4byte gUnknown_854676F +_080C34B0: .4byte 0x00000151 +_080C34B4: .4byte 0x00000197 + thumb_func_end sub_080C340C + + thumb_func_start sub_080C34B8 +sub_080C34B8: @ 0x080C34B8 + push {lr} + ldr r0, _080C34DC + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _080C34D8 + ldr r2, _080C34E0 + adds r0, r1, r2 + movs r2, #0xa8 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #5 + bl sub_080089D8 +_080C34D8: + pop {r0} + bx r0 + .align 2, 0 +_080C34DC: .4byte gUnknown_2039988 +_080C34E0: .4byte 0x00000223 + thumb_func_end sub_080C34B8 + + thumb_func_start sub_080C34E4 +sub_080C34E4: @ 0x080C34E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _080C353C + ldr r3, [r7] + ldrb r0, [r3, #0x10] + cmp r0, #0 + beq _080C3574 + ldr r6, _080C3540 + ldrb r1, [r6, #1] + ldr r2, _080C3544 + ldr r4, _080C3548 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C354C + str r0, [sp] + movs r5, #1 + rsbs r5, r5, #0 + str r5, [sp, #4] + ldr r0, _080C3550 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x43 + bl sub_08199AFC + ldr r2, [r7] + adds r4, r2, r4 + ldrb r0, [r4] + cmp r0, #0 + beq _080C355C + ldrb r1, [r6] + ldr r0, _080C3554 + str r0, [sp] + str r5, [sp, #4] + ldr r3, _080C3558 + adds r0, r2, r3 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa8 + movs r3, #0x43 + bl sub_08199AFC + b _080C3574 + .align 2, 0 +_080C353C: .4byte gUnknown_2039988 +_080C3540: .4byte gUnknown_8546775 +_080C3544: .4byte gUnknown_85467C1 +_080C3548: .4byte 0x00000517 +_080C354C: .4byte gUnknown_854676C +_080C3550: .4byte gUnknown_85CC383 +_080C3554: .4byte gUnknown_854676F +_080C3558: .4byte 0x00000223 +_080C355C: + ldrb r1, [r6] + ldr r0, _080C357C + str r0, [sp] + str r5, [sp, #4] + ldr r3, _080C3580 + adds r0, r2, r3 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa0 + movs r3, #0x43 + bl sub_08199AFC +_080C3574: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C357C: .4byte gUnknown_854676F +_080C3580: .4byte 0x00000223 + thumb_func_end sub_080C34E4 + + thumb_func_start sub_080C3584 +sub_080C3584: @ 0x080C3584 + push {lr} + ldr r0, _080C35B0 + ldr r2, [r0] + ldr r1, _080C35B4 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C35AA + ldr r3, _080C35B8 + adds r0, r2, r3 + ldr r1, [r0] + cmp r1, #0 + beq _080C35AA + ldr r3, _080C35BC + adds r0, r2, r3 + movs r2, #1 + movs r3, #5 + bl sub_080089D8 +_080C35AA: + pop {r0} + bx r0 + .align 2, 0 +_080C35B0: .4byte gUnknown_2039988 +_080C35B4: .4byte 0x00000516 +_080C35B8: .4byte 0x0000055C +_080C35BC: .4byte 0x000002AF + thumb_func_end sub_080C3584 + + thumb_func_start sub_080C35C0 +sub_080C35C0: @ 0x080C35C0 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C3624 + ldr r3, [r6] + ldr r1, _080C3628 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C361C + ldr r2, _080C362C + adds r0, r3, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C361C + ldr r5, _080C3630 + ldrb r1, [r5, #1] + ldr r2, _080C3634 + ldr r4, _080C3638 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C363C + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C3640 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x63 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C3644 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r6] + ldr r2, _080C3648 + adds r0, r0, r2 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x72 + movs r3, #0x63 + bl sub_08199AFC +_080C361C: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C3624: .4byte gUnknown_2039988 +_080C3628: .4byte 0x00000516 +_080C362C: .4byte 0x0000055C +_080C3630: .4byte gUnknown_8546775 +_080C3634: .4byte gUnknown_85467C1 +_080C3638: .4byte 0x00000517 +_080C363C: .4byte gUnknown_854676C +_080C3640: .4byte gUnknown_85CC39E +_080C3644: .4byte gUnknown_854676F +_080C3648: .4byte 0x000002AF + thumb_func_end sub_080C35C0 + + thumb_func_start sub_080C364C +sub_080C364C: @ 0x080C364C + push {lr} + ldr r0, _080C3678 + ldr r2, [r0] + ldr r1, _080C367C + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C3674 + movs r3, #0xac + lsls r3, r3, #3 + adds r0, r2, r3 + ldr r1, [r0] + cmp r1, #0 + beq _080C3674 + ldr r3, _080C3680 + adds r0, r2, r3 + movs r2, #1 + movs r3, #5 + bl sub_080089D8 +_080C3674: + pop {r0} + bx r0 + .align 2, 0 +_080C3678: .4byte gUnknown_2039988 +_080C367C: .4byte 0x00000516 +_080C3680: .4byte 0x0000033B + thumb_func_end sub_080C364C + + thumb_func_start sub_080C3684 +sub_080C3684: @ 0x080C3684 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C36EC + ldr r3, [r6] + ldr r1, _080C36F0 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080C36E2 + movs r2, #0xac + lsls r2, r2, #3 + adds r0, r3, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C36E2 + ldr r5, _080C36F4 + ldrb r1, [r5, #1] + ldr r2, _080C36F8 + ldr r4, _080C36FC + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C3700 + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C3704 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x53 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C3708 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r6] + ldr r2, _080C370C + adds r0, r0, r2 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa0 + movs r3, #0x53 + bl sub_08199AFC +_080C36E2: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C36EC: .4byte gUnknown_2039988 +_080C36F0: .4byte 0x00000516 +_080C36F4: .4byte gUnknown_8546775 +_080C36F8: .4byte gUnknown_85467C1 +_080C36FC: .4byte 0x00000517 +_080C3700: .4byte gUnknown_854676C +_080C3704: .4byte gUnknown_85CC390 +_080C3708: .4byte gUnknown_854676F +_080C370C: .4byte 0x0000033B + thumb_func_end sub_080C3684 + + thumb_func_start sub_080C3710 +sub_080C3710: @ 0x080C3710 + push {r4, lr} + ldr r4, _080C3748 + ldr r1, [r4] + ldr r2, _080C374C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3742 + ldr r0, _080C3750 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _080C3742 + ldr r0, _080C3754 + ldrh r1, [r1] + movs r2, #1 + movs r3, #5 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C3758 + adds r0, r0, r1 + ldr r1, _080C375C + bl sub_08008BCC +_080C3742: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3748: .4byte gUnknown_2039988 +_080C374C: .4byte 0x00000516 +_080C3750: .4byte 0x0000053E +_080C3754: .4byte gUnknown_2021C40 +_080C3758: .4byte 0x00000381 +_080C375C: .4byte gUnknown_85CC3CF + thumb_func_end sub_080C3710 + + thumb_func_start sub_080C3760 +sub_080C3760: @ 0x080C3760 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C37C4 + ldr r3, [r6] + ldr r1, _080C37C8 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C37BC + ldr r2, _080C37CC + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _080C37BC + ldr r5, _080C37D0 + ldrb r1, [r5, #1] + ldr r2, _080C37D4 + ldr r4, _080C37D8 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C37DC + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C37E0 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x53 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C37E4 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r6] + ldr r2, _080C37E8 + adds r0, r0, r2 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa8 + movs r3, #0x53 + bl sub_08199AFC +_080C37BC: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C37C4: .4byte gUnknown_2039988 +_080C37C8: .4byte 0x00000516 +_080C37CC: .4byte 0x0000053E +_080C37D0: .4byte gUnknown_8546775 +_080C37D4: .4byte gUnknown_85467C1 +_080C37D8: .4byte 0x00000517 +_080C37DC: .4byte gUnknown_854676C +_080C37E0: .4byte gUnknown_85CC3BF +_080C37E4: .4byte gUnknown_854676F +_080C37E8: .4byte 0x00000381 + thumb_func_end sub_080C3760 + + thumb_func_start sub_080C37EC +sub_080C37EC: @ 0x080C37EC + push {lr} + ldr r0, _080C3818 + ldr r1, [r0] + ldr r2, _080C381C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3814 + ldr r3, _080C3820 + adds r2, r1, r3 + ldrh r0, [r2] + cmp r0, #0 + beq _080C3814 + ldr r3, _080C3824 + adds r0, r1, r3 + ldrh r1, [r2] + movs r2, #1 + movs r3, #5 + bl sub_080089D8 +_080C3814: + pop {r0} + bx r0 + .align 2, 0 +_080C3818: .4byte gUnknown_2039988 +_080C381C: .4byte 0x00000516 +_080C3820: .4byte 0x0000053C +_080C3824: .4byte 0x000003C7 + thumb_func_end sub_080C37EC + + thumb_func_start sub_080C3828 +sub_080C3828: @ 0x080C3828 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C388C + ldr r3, [r6] + ldr r1, _080C3890 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3884 + ldr r2, _080C3894 + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _080C3884 + ldr r5, _080C3898 + ldrb r1, [r5, #1] + ldr r2, _080C389C + ldr r4, _080C38A0 + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C38A4 + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C38A8 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x63 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C38AC + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r6] + ldr r2, _080C38B0 + adds r0, r0, r2 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa8 + movs r3, #0x63 + bl sub_08199AFC +_080C3884: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C388C: .4byte gUnknown_2039988 +_080C3890: .4byte 0x00000516 +_080C3894: .4byte 0x0000053C +_080C3898: .4byte gUnknown_8546775 +_080C389C: .4byte gUnknown_85467C1 +_080C38A0: .4byte 0x00000517 +_080C38A4: .4byte gUnknown_854676C +_080C38A8: .4byte gUnknown_85CC3D9 +_080C38AC: .4byte gUnknown_854676F +_080C38B0: .4byte 0x000003C7 + thumb_func_end sub_080C3828 + + thumb_func_start sub_080C38B4 +sub_080C38B4: @ 0x080C38B4 + push {r4, lr} + ldr r4, _080C38D0 + ldr r1, [r4] + ldr r2, _080C38D4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + beq _080C38D8 + cmp r0, #1 + ble _080C3946 + cmp r0, #2 + beq _080C3924 + b _080C3946 + .align 2, 0 +_080C38D0: .4byte gUnknown_2039988 +_080C38D4: .4byte 0x00000516 +_080C38D8: + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _080C3946 + ldr r0, _080C3910 + movs r2, #0xa7 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r0, _080C3914 + ldr r1, [r4] + ldr r2, _080C3918 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C391C + adds r0, r0, r1 + ldr r1, _080C3920 + bl sub_08008BCC + b _080C3946 + .align 2, 0 +_080C3910: .4byte gUnknown_2021C40 +_080C3914: .4byte gUnknown_2021C54 +_080C3918: .4byte 0x0000053A +_080C391C: .4byte 0x0000040D +_080C3920: .4byte gUnknown_85CC418 +_080C3924: + ldr r2, _080C394C + adds r1, r1, r2 + ldrh r0, [r1] + cmp r0, #0 + beq _080C3946 + ldr r0, _080C3950 + ldrh r1, [r1] + movs r2, #1 + movs r3, #5 + bl sub_080089D8 + ldr r0, [r4] + ldr r1, _080C3954 + adds r0, r0, r1 + ldr r1, _080C3958 + bl sub_08008BCC +_080C3946: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C394C: .4byte 0x00000582 +_080C3950: .4byte gUnknown_2021C40 +_080C3954: .4byte 0x0000040D +_080C3958: .4byte gUnknown_85CC3F8 + thumb_func_end sub_080C38B4 + + thumb_func_start sub_080C395C +sub_080C395C: @ 0x080C395C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r7, _080C397C + ldr r3, [r7] + ldr r1, _080C3980 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080C3984 + cmp r0, #1 + ble _080C3A42 + cmp r0, #2 + beq _080C39F8 + b _080C3A42 + .align 2, 0 +_080C397C: .4byte gUnknown_2039988 +_080C3980: .4byte 0x00000516 +_080C3984: + ldrb r0, [r3, #0xd] + cmp r0, #0 + beq _080C3A42 + ldr r5, _080C39DC + ldrb r1, [r5, #1] + ldr r2, _080C39E0 + mov r8, r2 + ldr r4, _080C39E4 + adds r0, r3, r4 + ldrb r0, [r0] + add r0, r8 + ldrb r2, [r0] + ldr r0, _080C39E8 + str r0, [sp] + movs r6, #1 + rsbs r6, r6, #0 + str r6, [sp, #4] + ldr r0, _080C39EC + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x73 + bl sub_08199AFC + ldrb r1, [r5] + ldr r3, [r7] + adds r4, r3, r4 + ldrb r0, [r4] + add r0, r8 + ldrb r2, [r0] + adds r2, #0x50 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080C39F0 + str r0, [sp] + str r6, [sp, #4] + ldr r4, _080C39F4 + adds r3, r3, r4 + str r3, [sp, #8] + movs r0, #1 + movs r3, #0x73 + bl sub_08199AFC + b _080C3A42 + .align 2, 0 +_080C39DC: .4byte gUnknown_8546775 +_080C39E0: .4byte gUnknown_85467C1 +_080C39E4: .4byte 0x00000517 +_080C39E8: .4byte gUnknown_854676C +_080C39EC: .4byte gUnknown_85CC403 +_080C39F0: .4byte gUnknown_854676F +_080C39F4: .4byte 0x0000040D +_080C39F8: + ldr r1, _080C3A50 + adds r0, r3, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080C3A42 + ldr r5, _080C3A54 + ldrb r1, [r5, #1] + ldr r2, _080C3A58 + ldr r4, _080C3A5C + adds r0, r3, r4 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + ldr r0, _080C3A60 + str r0, [sp] + movs r4, #1 + rsbs r4, r4, #0 + str r4, [sp, #4] + ldr r0, _080C3A64 + str r0, [sp, #8] + movs r0, #1 + movs r3, #0x73 + bl sub_08199AFC + ldrb r1, [r5] + ldr r0, _080C3A68 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r7] + ldr r2, _080C3A6C + adds r0, r0, r2 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0xa0 + movs r3, #0x73 + bl sub_08199AFC +_080C3A42: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C3A50: .4byte 0x00000582 +_080C3A54: .4byte gUnknown_8546775 +_080C3A58: .4byte gUnknown_85467C1 +_080C3A5C: .4byte 0x00000517 +_080C3A60: .4byte gUnknown_854676C +_080C3A64: .4byte gUnknown_85CC3EA +_080C3A68: .4byte gUnknown_854676F +_080C3A6C: .4byte 0x0000040D + thumb_func_end sub_080C395C + + thumb_func_start sub_080C3A70 +sub_080C3A70: @ 0x080C3A70 + push {r4, r5, lr} + sub sp, #0x20 + ldr r1, _080C3AF8 + add r0, sp, #0x10 + movs r2, #6 + bl memcpy + add r4, sp, #0x18 + ldr r1, _080C3AFC + adds r0, r4, #0 + movs r2, #6 + bl memcpy + ldr r0, _080C3B00 + ldr r0, [r0] + ldr r1, _080C3B04 + adds r0, r0, r1 + ldrb r0, [r0] + adds r5, r4, #0 + cmp r0, #0 + bne _080C3AEE + movs r4, #0 +_080C3A9C: + ldr r0, _080C3B00 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _080C3B08 + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _080C3AE4 + bl sub_080D2940 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #0x14 + movs r2, #0xe0 + lsls r2, r2, #0x10 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + adds r2, r5, r4 + ldrb r2, [r2] + adds r2, #3 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #4 + str r3, [sp] + str r3, [sp, #4] + add r0, sp + adds r0, #0x10 + ldrb r0, [r0] + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #3 + movs r3, #0xf + bl sub_0800271C +_080C3AE4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _080C3A9C +_080C3AEE: + add sp, #0x20 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3AF8: .4byte gUnknown_85467D0 +_080C3AFC: .4byte gUnknown_85467D6 +_080C3B00: .4byte gUnknown_2039988 +_080C3B04: .4byte 0x00000516 +_080C3B08: .4byte 0x00000574 + thumb_func_end sub_080C3A70 + + thumb_func_start sub_080C3B0C +sub_080C3B0C: @ 0x080C3B0C + push {r4, r5, lr} + sub sp, #4 + ldr r0, _080C3B3C + ldr r4, _080C3B40 + ldr r1, [r4] + ldr r5, _080C3B44 + adds r1, r1, r5 + movs r2, #0x60 + bl CpuSet + ldr r4, [r4] + ldr r1, _080C3B48 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080C3B4C + cmp r0, #1 + ble _080C3B84 + cmp r0, #2 + beq _080C3B64 + cmp r0, #3 + beq _080C3B7C + b _080C3B84 + .align 2, 0 +_080C3B3C: .4byte gUnknown_85567A4 +_080C3B40: .4byte gUnknown_2039988 +_080C3B44: .4byte 0x00000454 +_080C3B48: .4byte 0x0000056E +_080C3B4C: + ldr r2, _080C3B60 + adds r0, r4, r2 + movs r1, #0 + str r1, [sp] + movs r1, #0x60 + movs r2, #0 + movs r3, #0 + bl sub_080A2474 + b _080C3B84 + .align 2, 0 +_080C3B60: .4byte 0x00000454 +_080C3B64: + adds r0, r4, r5 + movs r2, #0xfa + lsls r2, r2, #1 + movs r3, #0xa5 + lsls r3, r3, #1 + movs r1, #0x9b + lsls r1, r1, #1 + str r1, [sp] + movs r1, #0x60 + bl sub_080A2474 + b _080C3B84 +_080C3B7C: + adds r0, r4, r5 + movs r1, #0x60 + bl sub_080A2408 +_080C3B84: + ldr r0, _080C3BD8 + ldr r0, [r0] + ldr r1, _080C3BDC + adds r0, r0, r1 + movs r1, #0x50 + movs r2, #0xc0 + bl sub_080A1200 + movs r4, #0 +_080C3B96: + ldr r0, _080C3BD8 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _080C3BE0 + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _080C3BC4 + movs r1, #0 + bl sub_080D28C0 + adds r1, r0, #0 + lsls r3, r4, #0x14 + movs r0, #0x80 + lsls r0, r0, #0xe + adds r3, r3, r0 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #0x80 + lsls r2, r2, #2 + bl sub_0800195C +_080C3BC4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _080C3B96 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C3BD8: .4byte gUnknown_2039988 +_080C3BDC: .4byte 0x00000454 +_080C3BE0: .4byte 0x00000574 + thumb_func_end sub_080C3B0C + + thumb_func_start sub_080C3BE4 +sub_080C3BE4: @ 0x080C3BE4 + push {r4, lr} + sub sp, #0x14 + ldr r1, _080C3C60 + add r0, sp, #0x10 + movs r2, #4 + bl memcpy + ldr r0, _080C3C64 + ldr r1, [r0] + ldr r2, _080C3C68 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080C3C58 + adds r2, #0x56 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + bne _080C3C58 + movs r4, #0 +_080C3C0C: + ldr r0, _080C3C64 + ldr r0, [r0] + movs r1, #0xae + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r3, [r0] + cmp r3, #0 + beq _080C3C4E + lsls r1, r4, #0x12 + movs r2, #0xa0 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + lsls r2, r4, #1 + adds r2, r2, r4 + adds r2, #2 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + subs r0, r3, #1 + add r0, sp + adds r0, #0x10 + ldrb r0, [r0] + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #3 + movs r3, #2 + bl sub_0800271C +_080C3C4E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080C3C0C +_080C3C58: + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C3C60: .4byte gUnknown_85467DC +_080C3C64: .4byte gUnknown_2039988 +_080C3C68: .4byte 0x00000516 + thumb_func_end sub_080C3BE4 + + thumb_func_start sub_080C3C6C +sub_080C3C6C: @ 0x080C3C6C + push {lr} + ldr r0, _080C3CB0 + movs r1, #0xb0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C3CB4 + movs r1, #0xc0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C3CB8 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C3CBC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C3CC0 + ldr r1, [r0] + ldr r0, _080C3CC4 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #3 + movs r3, #0x80 + bl sub_0800195C + pop {r0} + bx r0 + .align 2, 0 +_080C3CB0: .4byte gUnknown_85461AC +_080C3CB4: .4byte gUnknown_85461CC +_080C3CB8: .4byte gUnknown_85461EC +_080C3CBC: .4byte gUnknown_854620C +_080C3CC0: .4byte gUnknown_2039988 +_080C3CC4: .4byte 0x00001794 + thumb_func_end sub_080C3C6C + + thumb_func_start sub_080C3CC8 +sub_080C3CC8: @ 0x080C3CC8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080C3CC8 + + thumb_func_start sub_080C3CE4 +sub_080C3CE4: @ 0x080C3CE4 + push {r4, lr} + sub sp, #8 + ldr r0, _080C3D00 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #4 + bls _080C3CF4 + b _080C3E66 +_080C3CF4: + lsls r0, r0, #2 + ldr r1, _080C3D04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C3D00: .4byte gUnknown_2039988 +_080C3D04: .4byte _080C3D08 +_080C3D08: @ jump table + .4byte _080C3D1C @ case 0 + .4byte _080C3D34 @ case 1 + .4byte _080C3D54 @ case 2 + .4byte _080C3E0C @ case 3 + .4byte _080C3E34 @ case 4 +_080C3D1C: + ldr r0, _080C3D2C + ldr r1, [r0] + ldr r0, _080C3D30 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #3 + b _080C3D42 + .align 2, 0 +_080C3D2C: .4byte gUnknown_2039988 +_080C3D30: .4byte 0x00001394 +_080C3D34: + ldr r0, _080C3D4C + ldr r1, [r0] + ldr r3, _080C3D50 + adds r1, r1, r3 + movs r2, #0xc0 + lsls r2, r2, #5 + movs r0, #0 +_080C3D42: + movs r3, #0 + bl sub_0800195C + b _080C3E6A + .align 2, 0 +_080C3D4C: .4byte gUnknown_2039988 +_080C3D50: .4byte 0x00001994 +_080C3D54: + ldr r4, _080C3D9C + ldr r2, [r4] + ldr r1, _080C3DA0 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3DB4 + ldr r1, _080C3DA4 + ldr r3, _080C3DA8 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r0, _080C3DAC + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, [r4] + movs r1, #0xa4 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3DEC + ldr r0, _080C3DB0 + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + b _080C3DEC + .align 2, 0 +_080C3D9C: .4byte gUnknown_2039988 +_080C3DA0: .4byte 0x00000516 +_080C3DA4: .4byte gUnknown_8546744 +_080C3DA8: .4byte 0x00000521 +_080C3DAC: .4byte gUnknown_854614C +_080C3DB0: .4byte gUnknown_854610C +_080C3DB4: + ldr r1, _080C3DF8 + ldr r3, _080C3DFC + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r0, _080C3E00 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, [r4] + movs r1, #0xa4 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C3DEC + ldr r0, _080C3E04 + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 +_080C3DEC: + ldr r0, _080C3E08 + movs r1, #0x40 + movs r2, #0x20 + bl sub_080A1200 + b _080C3E6A + .align 2, 0 +_080C3DF8: .4byte gUnknown_8546758 +_080C3DFC: .4byte 0x00000521 +_080C3E00: .4byte gUnknown_854616C +_080C3E04: .4byte gUnknown_854612C +_080C3E08: .4byte gUnknown_854618C +_080C3E0C: + ldr r4, _080C3E28 + ldr r1, [r4] + ldr r3, _080C3E2C + adds r1, r1, r3 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _080C3E30 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + b _080C3E6A + .align 2, 0 +_080C3E28: .4byte gUnknown_2039988 +_080C3E2C: .4byte 0x00003C94 +_080C3E30: .4byte 0x00005C94 +_080C3E34: + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 +_080C3E66: + movs r0, #1 + b _080C3E76 +_080C3E6A: + ldr r0, _080C3E80 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + movs r0, #0 +_080C3E76: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C3E80: .4byte gUnknown_2039988 + thumb_func_end sub_080C3CE4 + + thumb_func_start sub_080C3E84 +sub_080C3E84: @ 0x080C3E84 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _080C3EBC + ldr r0, [r0] + ldr r1, _080C3EC0 + adds r6, r0, r1 + movs r1, #0 +_080C3E92: + movs r2, #0 + lsls r5, r1, #0x10 + asrs r1, r5, #0x10 + lsls r3, r1, #5 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r4, r0, #1 +_080C3EA0: + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + adds r2, r0, #0 + cmp r1, #0x1d + bgt _080C3EC4 + adds r0, r3, r1 + lsls r0, r0, #1 + adds r0, r0, r6 + adds r1, r4, r1 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r1, [r1] + b _080C3ECC + .align 2, 0 +_080C3EBC: .4byte gUnknown_2039988 +_080C3EC0: .4byte 0x00005C94 +_080C3EC4: + adds r0, r3, r1 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r7] +_080C3ECC: + strh r1, [r0] + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r2, r1 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + ble _080C3EA0 + adds r0, r5, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080C3E92 + movs r0, #2 + bl sub_08002248 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C3E84 + + thumb_func_start sub_080C3EF4 +sub_080C3EF4: @ 0x080C3EF4 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _080C3F2C + ldr r0, [r0] + ldr r1, _080C3F30 + adds r6, r0, r1 + movs r1, #0 +_080C3F02: + movs r2, #0 + lsls r5, r1, #0x10 + asrs r1, r5, #0x10 + lsls r3, r1, #5 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r4, r0, #1 +_080C3F10: + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + adds r2, r0, #0 + cmp r1, #0x1d + bgt _080C3F34 + adds r0, r3, r1 + lsls r0, r0, #1 + adds r0, r0, r6 + adds r1, r4, r1 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r1, [r1] + b _080C3F3C + .align 2, 0 +_080C3F2C: .4byte gUnknown_2039988 +_080C3F30: .4byte 0x00003C94 +_080C3F34: + adds r0, r3, r1 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r7] +_080C3F3C: + strh r1, [r0] + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r2, r1 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + ble _080C3F10 + adds r0, r5, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080C3F02 + movs r0, #0 + bl sub_08002248 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C3EF4 + + thumb_func_start sub_080C3F64 +sub_080C3F64: @ 0x080C3F64 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r0, #0xc0 + mov r8, r0 + movs r2, #3 + mov sl, r2 + ldr r2, _080C4070 + ldr r4, _080C4074 + ldr r1, [r4] + ldr r3, _080C4078 + adds r0, r1, r3 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r3, [r0] + ldr r0, _080C407C + adds r1, r1, r0 + ldrb r0, [r1] + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #4 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0x8f + movs r2, #0xf + bl sub_080026E0 + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r0, #0 + bne _080C4058 + movs r2, #4 + mov sb, r2 + movs r2, #0 + movs r6, #1 +_080C3FB2: + ldr r0, _080C4074 + ldr r1, [r0] + lsls r0, r2, #0x10 + asrs r7, r0, #0x10 + adds r1, #0x11 + adds r1, r1, r7 + ldrb r0, [r1] + cmp r0, #0 + beq _080C4034 + mov r3, sb + lsls r5, r3, #0x18 + lsrs r5, r5, #0x18 + str r6, [sp] + str r6, [sp, #4] + mov r0, sl + str r0, [sp, #8] + movs r0, #3 + mov r1, r8 + adds r2, r5, #0 + movs r3, #0xf + bl sub_080026E0 + mov r1, r8 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r4, sb + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r6, [sp] + str r6, [sp, #4] + mov r2, sl + str r2, [sp, #8] + movs r0, #3 + adds r2, r4, #0 + movs r3, #0xf + bl sub_080026E0 + mov r1, r8 + adds r1, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r6, [sp] + str r6, [sp, #4] + mov r3, sl + str r3, [sp, #8] + movs r0, #3 + adds r2, r5, #0 + movs r3, #0x10 + bl sub_080026E0 + mov r1, r8 + adds r1, #0x11 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r6, [sp] + str r6, [sp, #4] + mov r0, sl + str r0, [sp, #8] + movs r0, #3 + adds r2, r4, #0 + movs r3, #0x10 + bl sub_080026E0 +_080C4034: + adds r0, r7, #1 + lsls r0, r0, #0x10 + mov r1, r8 + adds r1, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + mov r2, sb + lsls r1, r2, #0x10 + movs r3, #0xc0 + lsls r3, r3, #0xa + adds r1, r1, r3 + lsrs r1, r1, #0x10 + mov sb, r1 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080C3FB2 +_080C4058: + movs r0, #3 + bl sub_08002248 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4070: .4byte gUnknown_85467E0 +_080C4074: .4byte gUnknown_2039988 +_080C4078: .4byte 0x00000517 +_080C407C: .4byte 0x00000521 + thumb_func_end sub_080C3F64 + + thumb_func_start sub_080C4080 +sub_080C4080: @ 0x080C4080 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _080C4128 + ldr r1, [r6] + ldr r2, _080C412C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080C4134 + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _080C40BE + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x1b + movs r3, #9 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x1b + movs r3, #0xa + bl sub_080026E0 +_080C40BE: + ldr r0, [r6] + ldr r1, _080C4130 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _080C40F0 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x15 + movs r3, #0xd + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x15 + movs r3, #0xe + bl sub_080026E0 +_080C40F0: + ldr r0, [r6] + movs r2, #0xac + lsls r2, r2, #3 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C41EA + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x1b + movs r3, #0xb + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x1b + movs r3, #0xc + bl sub_080026E0 + b _080C41EA + .align 2, 0 +_080C4128: .4byte gUnknown_2039988 +_080C412C: .4byte 0x00000516 +_080C4130: .4byte 0x0000055C +_080C4134: + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _080C4162 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x1b + movs r3, #9 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x1b + movs r3, #0xa + bl sub_080026E0 +_080C4162: + ldr r0, [r6] + ldr r1, _080C41F8 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080C4196 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x1b + movs r3, #0xd + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x1b + movs r3, #0xe + bl sub_080026E0 +_080C4196: + ldr r0, [r6] + ldrb r0, [r0, #0xd] + cmp r0, #0 + beq _080C41EA + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x8d + movs r2, #0x11 + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x9d + movs r2, #0x11 + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x8c + movs r2, #0x1b + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0x9c + movs r2, #0x1b + movs r3, #0x10 + bl sub_080026E0 +_080C41EA: + movs r0, #3 + bl sub_08002248 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C41F8: .4byte 0x0000053C + thumb_func_end sub_080C4080 + + thumb_func_start sub_080C41FC +sub_080C41FC: @ 0x080C41FC + push {lr} + ldr r3, _080C4230 + ldr r1, [r3] + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bls _080C422A + ldr r1, [r3] + movs r0, #0 + strb r0, [r1, #6] + ldr r2, [r3] + ldrb r0, [r2, #7] + movs r1, #1 + eors r0, r1 + strb r0, [r2, #7] + ldr r0, [r3] + ldr r1, _080C4234 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080C422A: + pop {r0} + bx r0 + .align 2, 0 +_080C4230: .4byte gUnknown_2039988 +_080C4234: .4byte 0x00000515 + thumb_func_end sub_080C41FC + + thumb_func_start sub_080C4238 +sub_080C4238: @ 0x080C4238 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C4248 + movs r1, #0x64 + muls r0, r1, r0 + adds r0, r0, r2 + ldrb r0, [r0, #1] + bx lr + .align 2, 0 +_080C4248: .4byte gUnknown_20397F8 + thumb_func_end sub_080C4238 + + thumb_func_start sub_080C424C +sub_080C424C: @ 0x080C424C + push {r4, lr} + ldr r4, _080C426C + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + ldr r0, _080C4270 + bl sub_080006FC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C426C: .4byte sub_080C4294 +_080C4270: .4byte sub_080C1D00 + thumb_func_end sub_080C424C + + thumb_func_start sub_080C4274 +sub_080C4274: @ 0x080C4274 + push {lr} + ldr r0, _080C4288 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080C428C + movs r0, #0 + b _080C428E + .align 2, 0 +_080C4288: .4byte sub_080C4294 +_080C428C: + movs r0, #1 +_080C428E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C4274 + + thumb_func_start sub_080C4294 +sub_080C4294: @ 0x080C4294 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080C42C4 + ldr r2, _080C42C8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080C42A6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C42A6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C42C4: .4byte gUnknown_8546788 +_080C42C8: .4byte gUnknown_3005B60 + thumb_func_end sub_080C4294 + + thumb_func_start sub_080C42CC +sub_080C42CC: @ 0x080C42CC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + bl sub_080B9710 + bl sub_080B9750 + movs r1, #0 + ldr r0, _080C4308 + movs r2, #0 + movs r3, #0xf0 + lsls r3, r3, #3 + adds r0, r0, r3 +_080C42F0: + strh r2, [r0] + adds r0, #2 + adds r1, #1 + cmp r1, #0x9f + bls _080C42F0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C4308: .4byte gUnknown_20388C8 + thumb_func_end sub_080C42CC + + thumb_func_start sub_080C430C +sub_080C430C: @ 0x080C430C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + ldr r0, _080C4338 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #9] + mov r0, r8 + ldrh r1, [r0, #0xa] + movs r2, #0xa + ldrsh r0, [r0, r2] + cmp r0, #0x4c + ble _080C433C + movs r0, #0x4d + mov r3, r8 + strh r0, [r3, #0xa] + b _080C4342 + .align 2, 0 +_080C4338: .4byte gUnknown_2039988 +_080C433C: + adds r0, r1, #7 + mov r4, r8 + strh r0, [r4, #0xa] +_080C4342: + ldr r0, _080C442C + ldr r0, [r0] + mov r2, r8 + ldrh r1, [r2, #0xa] + ldr r3, _080C4430 + adds r0, r0, r3 + strh r1, [r0] + ldrh r0, [r2, #0xa] + bl sub_080C2918 + mov r4, r8 + movs r0, #0xa + ldrsh r7, [r4, r0] + movs r0, #0xa0 + subs r0, r0, r7 + mov sb, r0 + subs r4, r0, r7 + rsbs r0, r7, #0 + lsls r6, r0, #0x10 + movs r0, #0xa0 + lsls r0, r0, #0x10 + adds r1, r4, #0 + bl __udivsi3 + adds r5, r0, #0 + ldr r1, _080C4434 + adds r5, r5, r1 + adds r0, r5, #0 + muls r0, r4, r0 + adds r0, r6, r0 + str r0, [sp] + adds r0, r5, #0 + adds r1, r4, #0 + bl __udivsi3 + mov sl, r0 + lsls r5, r5, #1 + movs r2, #0 + cmp r2, r7 + bhs _080C43AC + ldr r3, _080C4438 +_080C4394: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r3 + rsbs r2, r0, #0 + strh r2, [r1] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r7 + blo _080C4394 +_080C43AC: + lsls r1, r2, #0x10 + mov r3, sb + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + ldr r4, _080C442C + mov sb, r4 + ldr r4, [sp] + lsrs r7, r4, #0x10 + cmp r1, r0 + bge _080C43E4 + ldr r0, _080C4438 + mov ip, r0 + adds r4, r3, #0 +_080C43C6: + lsrs r3, r6, #0x10 + adds r6, r6, r5 + mov r2, sl + subs r5, r5, r2 + asrs r0, r1, #0x10 + lsls r1, r0, #1 + add r1, ip + strh r3, [r1] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, r4 + blt _080C43C6 +_080C43E4: + adds r3, r7, #0 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + bgt _080C4402 + ldr r2, _080C4438 +_080C43F0: + asrs r0, r1, #0x10 + lsls r1, r0, #1 + adds r1, r1, r2 + strh r3, [r1] + adds r0, #1 + lsls r1, r0, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + ble _080C43F0 +_080C4402: + mov r3, sb + ldr r0, [r3] + movs r1, #1 + strb r1, [r0, #9] + mov r4, r8 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x4c + ble _080C441A + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080C441A: + movs r0, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080C442C: .4byte gUnknown_2039988 +_080C4430: .4byte 0x00007C94 +_080C4434: .4byte 0xFFFF0000 +_080C4438: .4byte gUnknown_20388C8 + thumb_func_end sub_080C430C + + thumb_func_start sub_080C443C +sub_080C443C: @ 0x080C443C + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r4, _080C4468 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #9] + bl sub_08086EFC + adds r2, r4, #0 + cmp r0, #1 + beq _080C453C +_080C4454: + ldr r3, [r2] + ldrb r0, [r3, #4] + cmp r0, #4 + bhi _080C4518 + lsls r0, r0, #2 + ldr r1, _080C446C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C4468: .4byte gUnknown_2039988 +_080C446C: .4byte _080C4470 +_080C4470: @ jump table + .4byte _080C4484 @ case 0 + .4byte _080C44A0 @ case 1 + .4byte _080C44C0 @ case 2 + .4byte _080C44E4 @ case 3 + .4byte _080C4502 @ case 4 +_080C4484: + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + b _080C452A +_080C44A0: + ldr r0, [r2] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _080C44B4 + bl sub_080C2AE0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C452A + b _080C453C +_080C44B4: + bl sub_080C2A68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C452A + b _080C453C +_080C44C0: + ldr r0, _080C44D4 + ldr r1, [r0] + ldrb r0, [r1, #8] + cmp r0, #0 + bne _080C44DC + ldr r2, _080C44D8 + adds r0, r1, r2 + bl sub_080C3EF4 + b _080C452A + .align 2, 0 +_080C44D4: .4byte gUnknown_2039988 +_080C44D8: .4byte 0x00000A34 +_080C44DC: + movs r0, #1 + bl sub_080C3CC8 + b _080C452A +_080C44E4: + ldr r0, _080C44F4 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _080C44F8 + bl sub_080C4080 + b _080C452A + .align 2, 0 +_080C44F4: .4byte gUnknown_2039988 +_080C44F8: + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + b _080C452A +_080C4502: + ldr r0, _080C4514 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _080C452A + bl sub_080C48F4 + b _080C452A + .align 2, 0 +_080C4514: .4byte gUnknown_2039988 +_080C4518: + ldrh r0, [r5, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #8] + movs r0, #1 + strb r0, [r3, #9] + ldr r0, [r2] + strb r1, [r0, #4] + b _080C453C +_080C452A: + ldr r2, _080C4548 + ldr r1, [r2] + ldrb r0, [r1, #4] + adds r0, #1 + strb r0, [r1, #4] + ldr r0, _080C454C + ldrb r0, [r0] + cmp r0, #0 + beq _080C4454 +_080C453C: + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C4548: .4byte gUnknown_2039988 +_080C454C: .4byte gUnknown_30031C4 + thumb_func_end sub_080C443C + + thumb_func_start sub_080C4550 +sub_080C4550: @ 0x080C4550 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080C45AC + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #9] + ldr r0, [r4] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _080C4582 + movs r0, #2 + bl sub_080C3CC8 + ldr r0, [r4] + ldr r1, _080C45B0 + adds r0, r0, r1 + bl sub_080C3E84 + ldr r0, [r4] + ldr r1, _080C45B4 + adds r0, r0, r1 + bl sub_080C3EF4 + bl sub_080C3F64 +_080C4582: + movs r0, #1 + bl sub_080C3CC8 + ldr r2, [r4] + ldrb r0, [r2, #8] + movs r1, #1 + eors r0, r1 + strb r0, [r2, #8] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #9] + movs r0, #0xfa + bl sub_080A306C + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C45AC: .4byte gUnknown_2039988 +_080C45B0: .4byte 0x00000EE4 +_080C45B4: .4byte 0x00000584 + thumb_func_end sub_080C4550 + + thumb_func_start sub_080C45B8 +sub_080C45B8: @ 0x080C45B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + ldr r0, _080C45E0 + ldr r0, [r0] + movs r2, #0 + strb r2, [r0, #9] + mov r0, r8 + ldrh r1, [r0, #0xa] + movs r3, #0xa + ldrsh r0, [r0, r3] + cmp r0, #5 + bgt _080C45E4 + mov r4, r8 + strh r2, [r4, #0xa] + b _080C45EA + .align 2, 0 +_080C45E0: .4byte gUnknown_2039988 +_080C45E4: + subs r0, r1, #5 + mov r1, r8 + strh r0, [r1, #0xa] +_080C45EA: + ldr r0, _080C46D4 + ldr r0, [r0] + mov r2, r8 + ldrh r1, [r2, #0xa] + ldr r3, _080C46D8 + adds r0, r0, r3 + strh r1, [r0] + ldrh r0, [r2, #0xa] + bl sub_080C2918 + mov r4, r8 + movs r0, #0xa + ldrsh r7, [r4, r0] + movs r0, #0xa0 + subs r0, r0, r7 + mov sb, r0 + subs r4, r0, r7 + rsbs r0, r7, #0 + lsls r6, r0, #0x10 + movs r0, #0xa0 + lsls r0, r0, #0x10 + adds r1, r4, #0 + bl __udivsi3 + adds r5, r0, #0 + ldr r1, _080C46DC + adds r5, r5, r1 + adds r0, r5, #0 + muls r0, r4, r0 + adds r0, r6, r0 + str r0, [sp] + adds r0, r5, #0 + adds r1, r4, #0 + bl __udivsi3 + mov sl, r0 + lsrs r5, r5, #1 + movs r2, #0 + cmp r2, r7 + bhs _080C4654 + ldr r3, _080C46E0 +_080C463C: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r3 + rsbs r2, r0, #0 + strh r2, [r1] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r7 + blo _080C463C +_080C4654: + lsls r1, r2, #0x10 + mov r3, sb + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + ldr r4, _080C46D4 + mov sb, r4 + ldr r4, [sp] + lsrs r7, r4, #0x10 + cmp r1, r0 + bge _080C468A + ldr r0, _080C46E0 + mov ip, r0 + adds r4, r3, #0 +_080C466E: + lsrs r3, r6, #0x10 + adds r6, r6, r5 + add r5, sl + asrs r0, r1, #0x10 + lsls r1, r0, #1 + add r1, ip + strh r3, [r1] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, r4 + blt _080C466E +_080C468A: + adds r3, r7, #0 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + bgt _080C46A8 + ldr r2, _080C46E0 +_080C4696: + asrs r0, r1, #0x10 + lsls r1, r0, #1 + adds r1, r1, r2 + strh r3, [r1] + adds r0, #1 + lsls r1, r0, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + ble _080C4696 +_080C46A8: + mov r1, sb + ldr r0, [r1] + movs r1, #1 + strb r1, [r0, #9] + mov r2, r8 + movs r3, #0xa + ldrsh r0, [r2, r3] + cmp r0, #0 + bgt _080C46C0 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_080C46C0: + movs r0, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080C46D4: .4byte gUnknown_2039988 +_080C46D8: .4byte 0x00007C94 +_080C46DC: .4byte 0xFFFF0000 +_080C46E0: .4byte gUnknown_20388C8 + thumb_func_end sub_080C45B8 + + thumb_func_start sub_080C46E4 +sub_080C46E4: @ 0x080C46E4 + push {lr} + movs r0, #1 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #0 + bl sub_080006FC + ldr r0, _080C470C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080C470C: .4byte sub_080C4294 + thumb_func_end sub_080C46E4 + + thumb_func_start sub_080C4710 +sub_080C4710: @ 0x080C4710 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080C4738 + ldr r0, _080C473C + bl sub_08000BDC + adds r1, r0, #0 + str r1, [r4] + ldr r2, _080C4740 + adds r0, r1, r2 + str r5, [r0] + ldr r0, _080C4744 + cmp r5, r0 + bne _080C474C + movs r0, #0xa3 + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, _080C4748 + b _080C4754 + .align 2, 0 +_080C4738: .4byte gUnknown_2039988 +_080C473C: .4byte 0x00007C98 +_080C4740: .4byte 0x0000051C +_080C4744: .4byte sub_080C5164 +_080C4748: .4byte 0x00007FFF +_080C474C: + movs r2, #0xa3 + lsls r2, r2, #3 + adds r1, r1, r2 + movs r0, #0 +_080C4754: + strh r0, [r1] + bl sub_08017AC0 + adds r3, r0, #0 + cmp r3, #1 + bne _080C476C + ldr r1, _080C4768 + ldr r0, [r1] + strb r3, [r0, #5] + b _080C4776 + .align 2, 0 +_080C4768: .4byte gUnknown_2039988 +_080C476C: + ldr r2, _080C4790 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #5] + adds r1, r2, #0 +_080C4776: + ldr r0, [r1] + movs r1, #0xa4 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080C2650 + ldr r0, _080C4794 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C4790: .4byte gUnknown_2039988 +_080C4794: .4byte sub_080C22B4 + thumb_func_end sub_080C4710 + + thumb_func_start sub_080C4798 +sub_080C4798: @ 0x080C4798 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080C47D8 + ldr r0, _080C47DC + bl sub_08000BDC + str r0, [r5] + ldr r2, _080C47E0 + adds r1, r0, r2 + str r6, [r1] + movs r1, #1 + strb r1, [r0, #5] + ldr r0, [r5] + movs r1, #0xa4 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r2, _080C47E4 + movs r1, #0x64 + muls r1, r4, r1 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + ldr r0, _080C47E8 + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C47D8: .4byte gUnknown_2039988 +_080C47DC: .4byte 0x00007C98 +_080C47E0: .4byte 0x0000051C +_080C47E4: .4byte gUnknown_20397F8 +_080C47E8: .4byte sub_080C22B4 + thumb_func_end sub_080C4798 + + thumb_func_start sub_080C47EC +sub_080C47EC: @ 0x080C47EC + push {r4, r5, lr} + ldr r4, _080C4848 + ldr r0, [r4] + movs r1, #0 + strb r1, [r0] + ldr r2, [r4] + ldr r0, _080C484C + ldr r0, [r0] + ldrb r0, [r0, #0x12] + strb r0, [r2, #6] + ldr r0, [r4] + strb r1, [r0, #7] + ldr r0, [r4] + strb r1, [r0, #8] + ldr r0, [r4] + ldr r2, _080C4850 + adds r0, r0, r2 + strb r1, [r0] + bl sub_080C4858 + ldr r1, [r4] + ldr r3, _080C4854 + adds r1, r1, r3 + strb r0, [r1] + movs r5, #0 +_080C481E: + lsls r0, r5, #3 + adds r0, #0x19 + ldr r1, [r4] + adds r0, r1, r0 + lsls r2, r5, #1 + movs r3, #0xa9 + lsls r3, r3, #3 + adds r1, r1, r3 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_0811F180 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080C481E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C4848: .4byte gUnknown_2039988 +_080C484C: .4byte gUnknown_3005AF0 +_080C4850: .4byte 0x00000514 +_080C4854: .4byte 0x00000516 + thumb_func_end sub_080C47EC + + thumb_func_start sub_080C4858 +sub_080C4858: @ 0x080C4858 + push {lr} + ldr r0, _080C4874 + ldr r1, [r0] + cmp r1, #0 + bne _080C4884 + ldr r0, _080C4878 + ldrb r1, [r0] + subs r0, r1, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080C487C + movs r0, #0 + b _080C48C6 + .align 2, 0 +_080C4874: .4byte gUnknown_2039988 +_080C4878: .4byte gUnknown_829BDA4 +_080C487C: + cmp r1, #3 + beq _080C48C4 + movs r0, #1 + b _080C48C6 +_080C4884: + movs r2, #0xab + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r2, [r0] + subs r0, r2, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080C48A4 + ldr r0, _080C48A0 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + b _080C48C6 + .align 2, 0 +_080C48A0: .4byte 0x00000517 +_080C48A4: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _080C48BC + ldr r2, _080C48B8 + adds r1, r1, r2 + movs r0, #1 + strb r0, [r1] + b _080C48C6 + .align 2, 0 +_080C48B8: .4byte 0x00000517 +_080C48BC: + ldr r0, _080C48CC + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1] +_080C48C4: + movs r0, #2 +_080C48C6: + pop {r1} + bx r1 + .align 2, 0 +_080C48CC: .4byte 0x00000517 + thumb_func_end sub_080C4858 + + thumb_func_start sub_080C48D0 +sub_080C48D0: @ 0x080C48D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xfc + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080C48E6 + movs r0, #0 + b _080C48F0 +_080C48E6: + cmp r1, #3 + beq _080C48EE + movs r0, #1 + b _080C48F0 +_080C48EE: + movs r0, #2 +_080C48F0: + pop {r1} + bx r1 + thumb_func_end sub_080C48D0 + + thumb_func_start sub_080C48F4 +sub_080C48F4: @ 0x080C48F4 + push {r4, r5, r6, lr} + sub sp, #8 + bl sub_08017AC0 + cmp r0, #1 + bne _080C4960 + ldr r0, _080C494C + ldrb r0, [r0] + cmp r0, #1 + bne _080C4960 + ldr r5, _080C4950 + ldr r0, [r5] + ldr r1, _080C4954 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0806EA7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080C4958 + ldr r1, [r5] + movs r3, #0xa4 + lsls r3, r3, #3 + adds r2, r1, r3 + ldrb r3, [r2] + lsls r3, r3, #1 + ldr r2, _080C495C + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r3, r3, r1 + adds r1, r3, r4 + ldrb r2, [r1] + adds r4, #1 + adds r3, r3, r4 + ldrb r3, [r3] + movs r1, #8 + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r1, #1 + bl sub_0818D664 + b _080C49B0 + .align 2, 0 +_080C494C: .4byte gUnknown_30031C4 +_080C4950: .4byte gUnknown_2039988 +_080C4954: .4byte 0x0000056F +_080C4958: .4byte gUnknown_8546778 +_080C495C: .4byte 0x00000517 +_080C4960: + ldr r2, _080C49B8 + ldr r6, _080C49BC + ldr r0, [r6] + movs r5, #0xa4 + lsls r5, r5, #3 + adds r1, r0, r5 + ldr r3, _080C49C0 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #1 + ldrb r1, [r1] + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_0806EA7C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080C49C4 + ldr r1, [r6] + adds r5, r1, r5 + ldrb r3, [r5] + lsls r3, r3, #1 + ldr r2, _080C49C8 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r3, r3, r1 + adds r1, r3, r4 + ldrb r2, [r1] + adds r4, #1 + adds r3, r3, r4 + ldrb r3, [r3] + movs r1, #8 + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r1, #1 + bl sub_0818D664 +_080C49B0: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C49B8: .4byte gUnknown_8546780 +_080C49BC: .4byte gUnknown_2039988 +_080C49C0: .4byte 0x00000516 +_080C49C4: .4byte gUnknown_8546778 +_080C49C8: .4byte 0x00000517 + thumb_func_end sub_080C48F4 + + thumb_func_start sub_080C49CC +sub_080C49CC: @ 0x080C49CC + push {lr} + sub sp, #8 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + mov r1, sp + movs r0, #0 + strh r0, [r1] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _080C4AB8 + mov r0, sp + bl CpuSet + movs r0, #0 + str r0, [sp, #4] + add r0, sp, #4 + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _080C4ABC + bl CpuSet + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080C4AB8: .4byte 0x0100C000 +_080C4ABC: .4byte 0x05000100 + thumb_func_end sub_080C49CC + + thumb_func_start sub_080C4AC0 +sub_080C4AC0: @ 0x080C4AC0 + push {lr} + bl sub_080C4AEC + ldr r0, _080C4AD0 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080C4AD0: .4byte sub_080C4D48 + thumb_func_end sub_080C4AC0 + + thumb_func_start sub_080C4AD4 +sub_080C4AD4: @ 0x080C4AD4 + push {lr} + ldr r0, _080C4AE8 + ldr r0, [r0] + ldr r0, [r0] + bl sub_08000540 + bl sub_080C4BE0 + pop {r0} + bx r0 + .align 2, 0 +_080C4AE8: .4byte gUnknown_203998C + thumb_func_end sub_080C4AD4 + + thumb_func_start sub_080C4AEC +sub_080C4AEC: @ 0x080C4AEC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _080C4AFC + ldr r0, [r5] + cmp r0, #0 + beq _080C4B00 + movs r0, #1 + b _080C4BC4 + .align 2, 0 +_080C4AFC: .4byte gUnknown_203998C +_080C4B00: + movs r0, #0x18 + bl sub_08000BDC + str r0, [r5] + cmp r0, #0 + bne _080C4B10 + movs r0, #2 + b _080C4BC4 +_080C4B10: + str r4, [r0] + bl sub_080855C0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x3a + beq _080C4B2E + cmp r4, #0xca + beq _080C4B2E + ldr r0, [r5] + movs r1, #0xb0 + strh r1, [r0, #8] + movs r1, #0x68 + strh r1, [r0, #0xa] + b _080C4B3C +_080C4B2E: + ldr r2, _080C4BCC + ldr r1, [r2] + movs r0, #0xb0 + strh r0, [r1, #8] + movs r0, #0x30 + strh r0, [r1, #0xa] + adds r5, r2, #0 +_080C4B3C: + ldr r1, [r5] + ldr r0, _080C4BD0 + ldr r0, [r0] + ldr r2, _080C4BD4 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1, #6] + bl sub_081850F0 + ldr r3, [r5] + movs r1, #1 + ands r0, r1 + ldrb r2, [r3, #0xe] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0xe] + ldr r2, [r5] + ldrb r1, [r2, #0xe] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xe] + bl sub_080C2470 + ldr r3, [r5] + lsls r0, r0, #4 + ldrb r2, [r3, #0xe] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0xe] + movs r4, #0 + adds r6, r5, #0 +_080C4B82: + lsls r5, r4, #1 + ldr r1, _080C4BD8 + adds r0, r5, r1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C4B9E + ldr r1, [r6] + adds r1, #0xf + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C4B9E: + ldr r2, _080C4BDC + adds r0, r5, r2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C4BB8 + ldr r1, [r6] + adds r1, #0xf + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C4BB8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080C4B82 + movs r0, #0 +_080C4BC4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080C4BCC: .4byte gUnknown_203998C +_080C4BD0: .4byte gUnknown_3005AF0 +_080C4BD4: .4byte 0x00000EB8 +_080C4BD8: .4byte 0x000008C4 +_080C4BDC: .4byte 0x000008C5 + thumb_func_end sub_080C4AEC + + thumb_func_start sub_080C4BE0 +sub_080C4BE0: @ 0x080C4BE0 + push {r4, lr} + ldr r4, _080C4C00 + ldr r0, [r4] + cmp r0, #0 + beq _080C4C04 + movs r1, #0 + movs r2, #0x18 + bl memset + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + b _080C4C06 + .align 2, 0 +_080C4C00: .4byte gUnknown_203998C +_080C4C04: + movs r0, #1 +_080C4C06: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080C4BE0 + + thumb_func_start sub_080C4C0C +sub_080C4C0C: @ 0x080C4C0C + push {r4, lr} + ldr r4, _080C4C1C + ldr r0, [r4] + cmp r0, #0 + beq _080C4C20 + movs r0, #1 + b _080C4C36 + .align 2, 0 +_080C4C1C: .4byte gUnknown_2039990 +_080C4C20: + ldr r0, _080C4C30 + bl sub_08000BDC + str r0, [r4] + cmp r0, #0 + beq _080C4C34 + movs r0, #0 + b _080C4C36 + .align 2, 0 +_080C4C30: .4byte 0x00002434 +_080C4C34: + movs r0, #2 +_080C4C36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080C4C0C + + thumb_func_start sub_080C4C3C +sub_080C4C3C: @ 0x080C4C3C + push {r4, lr} + bl sub_080034D4 + ldr r4, _080C4C50 + ldr r0, [r4] + cmp r0, #0 + bne _080C4C54 + movs r0, #1 + b _080C4C9C + .align 2, 0 +_080C4C50: .4byte gUnknown_2039990 +_080C4C54: + ldr r0, [r0, #0x28] + cmp r0, #0 + beq _080C4C64 + bl sub_08000BF0 + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x28] +_080C4C64: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _080C4C76 + bl sub_08000BF0 + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x24] +_080C4C76: + ldr r0, [r4] + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _080C4C88 + bl sub_08000BF0 + ldr r1, [r4] + movs r0, #0 + str r0, [r1, #0x20] +_080C4C88: + ldr r0, [r4] + ldr r2, _080C4CA4 + movs r1, #0 + bl memset + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_080C4C9C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C4CA4: .4byte 0x00002434 + thumb_func_end sub_080C4C3C + + thumb_func_start sub_080C4CA8 +sub_080C4CA8: @ 0x080C4CA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _080C4D28 + ldr r6, [r0] + adds r0, r6, #0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _080C4D12 + ldr r3, _080C4D2C + ldr r0, _080C4D30 + ldr r0, [r0] + ldrb r4, [r0, #0xe] + lsls r4, r4, #0x1c + lsrs r0, r4, #0x1d + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r1, r1, #8 + lsrs r0, r4, #0x1d + subs r0, #1 + lsls r0, r0, #2 + adds r5, r3, #2 + adds r0, r0, r5 + movs r7, #0 + ldrsh r2, [r0, r7] + lsls r2, r2, #8 + lsrs r0, r4, #0x1d + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r7, #0 + ldrsh r3, [r0, r7] + lsrs r4, r4, #0x1d + subs r4, #1 + lsls r4, r4, #2 + adds r4, r4, r5 + movs r5, #0 + ldrsh r0, [r4, r5] + str r0, [sp] + movs r7, #0x2e + ldrsh r0, [r6, r7] + str r0, [sp, #4] + movs r4, #0x30 + ldrsh r0, [r6, r4] + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #2 + bl sub_0800200C +_080C4D12: + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C4D28: .4byte gUnknown_2039990 +_080C4D2C: .4byte gUnknown_854AF04 +_080C4D30: .4byte gUnknown_203998C + thumb_func_end sub_080C4CA8 + + thumb_func_start sub_080C4D34 +sub_080C4D34: @ 0x080C4D34 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C4D34 + + thumb_func_start sub_080C4D48 +sub_080C4D48: @ 0x080C4D48 + push {lr} + bl sub_080C4D80 + cmp r0, #0 + beq _080C4D60 + ldr r0, _080C4D64 + movs r1, #0 + bl sub_080A8878 + ldr r0, _080C4D68 + bl sub_08000540 +_080C4D60: + pop {r0} + bx r0 + .align 2, 0 +_080C4D64: .4byte sub_080C5344 +_080C4D68: .4byte sub_080C4D34 + thumb_func_end sub_080C4D48 + + thumb_func_start sub_080C4D6C +sub_080C4D6C: @ 0x080C4D6C + push {lr} + bl sub_080C5008 + cmp r0, #0 + beq _080C4D7A + bl sub_080C4AD4 +_080C4D7A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C4D6C + + thumb_func_start sub_080C4D80 +sub_080C4D80: @ 0x080C4D80 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #0 + str r0, [sp, #8] + ldr r0, _080C4DA0 + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #0xa + bls _080C4D94 + b _080C4FF0 +_080C4D94: + lsls r0, r0, #2 + ldr r1, _080C4DA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C4DA0: .4byte gUnknown_203998C +_080C4DA4: .4byte _080C4DA8 +_080C4DA8: @ jump table + .4byte _080C4DD4 @ case 0 + .4byte _080C4DEA @ case 1 + .4byte _080C4DF0 @ case 2 + .4byte _080C4E06 @ case 3 + .4byte _080C4E0C @ case 4 + .4byte _080C4E5C @ case 5 + .4byte _080C4E6C @ case 6 + .4byte _080C4ECC @ case 7 + .4byte _080C4F20 @ case 8 + .4byte _080C4F80 @ case 9 + .4byte _080C4FCC @ case 10 +_080C4DD4: + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_08121E58 + movs r0, #2 + bl sub_080012A0 + b _080C4FF0 +_080C4DEA: + bl sub_080C49CC + b _080C4FF0 +_080C4DF0: + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + bl sub_080A133C + bl sub_081996B8 + b _080C4FF0 +_080C4E06: + bl sub_080C4C0C + b _080C4FF0 +_080C4E0C: + movs r0, #0 + bl sub_080017D4 + ldr r1, _080C4E4C + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r4, _080C4E50 + ldr r1, [r4] + adds r1, #0x32 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _080C4E54 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _080C4E58 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + movs r0, #2 + movs r1, #6 + movs r2, #1 + bl sub_08001B70 + b _080C4FF0 + .align 2, 0 +_080C4E4C: .4byte gUnknown_854AF0C +_080C4E50: .4byte gUnknown_2039990 +_080C4E54: .4byte 0x00001032 +_080C4E58: .4byte 0x00002032 +_080C4E5C: + ldr r0, _080C4E68 + bl sub_08003090 + bl sub_08004480 + b _080C4FF0 + .align 2, 0 +_080C4E68: .4byte gUnknown_854AF24 +_080C4E6C: + ldr r0, _080C4EB4 + add r1, sp, #8 + bl sub_08199858 + ldr r4, _080C4EB8 + ldr r1, [r4] + str r0, [r1, #0x20] + ldr r0, _080C4EBC + add r1, sp, #8 + bl sub_08199858 + ldr r1, [r4] + str r0, [r1, #0x24] + ldr r0, _080C4EC0 + add r1, sp, #8 + bl sub_08199858 + ldr r1, [r4] + str r0, [r1, #0x28] + ldr r1, _080C4EC4 + movs r4, #0 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _080C4EC8 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _080C4FF0 + .align 2, 0 +_080C4EB4: .4byte gUnknown_854AE1C +_080C4EB8: .4byte gUnknown_2039990 +_080C4EBC: .4byte gUnknown_8549B58 +_080C4EC0: .4byte gUnknown_8549DE8 +_080C4EC4: .4byte gUnknown_85469A4 +_080C4EC8: .4byte gUnknown_8549E20 +_080C4ECC: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C4ED8 + b _080C4FFA +_080C4ED8: + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _080C4FF0 +_080C4F20: + ldr r4, _080C4F78 + movs r2, #0xd0 + lsls r2, r2, #1 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A1200 + ldr r5, _080C4F7C + ldr r0, [r5] + ldrb r0, [r0, #0xe] + lsrs r0, r0, #4 + lsls r0, r0, #5 + adds r4, #0x20 + adds r0, r0, r4 + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + bl sub_080985A0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + bl sub_080C5B88 + ldr r1, [r5] + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xd] + bl sub_080C59F0 + ldr r5, [r5] + ldrb r0, [r5, #0xe] + movs r1, #0xe + ands r1, r0 + cmp r1, #2 + beq _080C4F70 + cmp r1, #4 + bne _080C4FF0 +_080C4F70: + movs r0, #0 + strh r0, [r5, #4] + movs r0, #1 + b _080C4FFC + .align 2, 0 +_080C4F78: .4byte gUnknown_85467E4 +_080C4F7C: .4byte gUnknown_203998C +_080C4F80: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + bl sub_080C5BC8 + ldr r0, _080C4FC8 + bl sub_080006F0 + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _080C4FF0 + .align 2, 0 +_080C4FC8: .4byte sub_080C4CA8 +_080C4FCC: + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080C4FFA + ldr r0, _080C4FEC + ldr r0, [r0] + strh r1, [r0, #4] + movs r0, #1 + b _080C4FFC + .align 2, 0 +_080C4FEC: .4byte gUnknown_203998C +_080C4FF0: + ldr r0, _080C5004 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] +_080C4FFA: + movs r0, #0 +_080C4FFC: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C5004: .4byte gUnknown_203998C + thumb_func_end sub_080C4D80 + + thumb_func_start sub_080C5008 +sub_080C5008: @ 0x080C5008 + push {lr} + sub sp, #4 + ldr r1, _080C5024 + ldr r0, [r1] + ldrh r0, [r0, #4] + adds r2, r1, #0 + cmp r0, #5 + bhi _080C50E0 + lsls r0, r0, #2 + ldr r1, _080C5028 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5024: .4byte gUnknown_203998C +_080C5028: .4byte _080C502C +_080C502C: @ jump table + .4byte _080C5044 @ case 0 + .4byte _080C506C @ case 1 + .4byte _080C5078 @ case 2 + .4byte _080C50A2 @ case 3 + .4byte _080C50A8 @ case 4 + .4byte _080C50BA @ case 5 +_080C5044: + ldr r0, [r2] + ldrb r0, [r0, #0xe] + movs r1, #0xe + ands r1, r0 + cmp r1, #2 + beq _080C5066 + cmp r1, #4 + beq _080C5066 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _080C50E0 +_080C5066: + ldr r1, [r2] + movs r0, #2 + b _080C50E8 +_080C506C: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C50E0 + b _080C50EA +_080C5078: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_08121E58 + b _080C50E0 +_080C50A2: + bl sub_080C5CE8 + b _080C50E0 +_080C50A8: + bl sub_080C49CC + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + b _080C50E0 +_080C50BA: + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #2 + bl sub_08002160 + bl sub_080C4C3C + ldr r0, _080C50DC + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #4] + movs r0, #1 + b _080C50EC + .align 2, 0 +_080C50DC: .4byte gUnknown_203998C +_080C50E0: + ldr r0, _080C50F4 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 +_080C50E8: + strh r0, [r1, #4] +_080C50EA: + movs r0, #0 +_080C50EC: + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_080C50F4: .4byte gUnknown_203998C + thumb_func_end sub_080C5008 + + thumb_func_start sub_080C50F8 +sub_080C50F8: @ 0x080C50F8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r4, #0 + ldr r7, _080C5148 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 +_080C5106: + lsls r0, r4, #3 + adds r3, r0, r7 + movs r1, #0 + ldrsh r0, [r3, r1] + cmp r0, r5 + bgt _080C5150 + movs r1, #2 + ldrsh r0, [r3, r1] + cmp r0, r5 + blt _080C5150 + movs r0, #4 + ldrsh r1, [r3, r0] + lsls r0, r6, #0x10 + asrs r2, r0, #0x10 + cmp r1, r2 + bgt _080C5150 + movs r1, #6 + ldrsh r0, [r3, r1] + cmp r0, r2 + blt _080C5150 + cmp r4, #5 + bls _080C513E + ldr r0, _080C514C + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0, #9] + cmp r0, #0 + beq _080C515A +_080C513E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080C515C + .align 2, 0 +_080C5148: .4byte gUnknown_854AF78 +_080C514C: .4byte gUnknown_203998C +_080C5150: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xc + bls _080C5106 +_080C515A: + movs r0, #0 +_080C515C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C50F8 + + thumb_func_start sub_080C5164 +sub_080C5164: @ 0x080C5164 + push {lr} + bl sub_080C4D80 + cmp r0, #0 + beq _080C51C2 + ldr r1, _080C519C + ldr r0, [r1] + ldrb r0, [r0, #0xe] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #1 + blt _080C51A8 + cmp r0, #2 + bgt _080C51A8 + ldr r0, _080C51A0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C51A4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #8] + b _080C51BC + .align 2, 0 +_080C519C: .4byte gUnknown_203998C +_080C51A0: .4byte sub_080C54D4 +_080C51A4: .4byte gUnknown_3005B60 +_080C51A8: + ldr r2, [r1] + ldrb r1, [r2, #0xe] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xe] + ldr r0, _080C51C8 + movs r1, #0 + bl sub_080A8878 +_080C51BC: + ldr r0, _080C51CC + bl sub_08000540 +_080C51C2: + pop {r0} + bx r0 + .align 2, 0 +_080C51C8: .4byte sub_080C5344 +_080C51CC: .4byte sub_080C4D34 + thumb_func_end sub_080C5164 + + thumb_func_start sub_080C51D0 +sub_080C51D0: @ 0x080C51D0 + push {r4, lr} + ldr r4, _080C5208 + ldr r0, [r4] + bl sub_080C4AEC + ldr r0, _080C520C + ldr r1, [r0] + ldrh r0, [r4, #4] + strh r0, [r1, #8] + ldrh r0, [r4, #6] + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl memset + bl sub_081A9BB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080C5210 + cmp r0, #2 + beq _080C5218 + bl sub_080850EC + b _080C5220 + .align 2, 0 +_080C5208: .4byte gUnknown_2039998 +_080C520C: .4byte gUnknown_203998C +_080C5210: + ldr r0, _080C5214 + b _080C521C + .align 2, 0 +_080C5214: .4byte 0x000001CD +_080C5218: + movs r0, #0xe7 + lsls r0, r0, #1 +_080C521C: + bl sub_080A3040 +_080C5220: + ldr r0, _080C522C + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C522C: .4byte sub_080C5164 + thumb_func_end sub_080C51D0 + + thumb_func_start sub_080C5230 +sub_080C5230: @ 0x080C5230 + push {lr} + bl sub_080C5008 + cmp r0, #0 + beq _080C5296 + ldr r0, _080C5254 + ldr r2, [r0] + ldrb r0, [r2, #0xe] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #2 + beq _080C5290 + cmp r0, #2 + bgt _080C5258 + cmp r0, #1 + beq _080C525E + b _080C5296 + .align 2, 0 +_080C5254: .4byte gUnknown_203998C +_080C5258: + cmp r0, #3 + beq _080C526C + b _080C5296 +_080C525E: + ldr r0, _080C5268 + bl sub_080C5D40 + b _080C5296 + .align 2, 0 +_080C5268: .4byte sub_080C5164 +_080C526C: + ldr r1, _080C5288 + ldr r0, [r2] + str r0, [r1] + ldrh r0, [r2, #8] + strh r0, [r1, #4] + ldrh r0, [r2, #0xa] + strh r0, [r1, #6] + bl sub_080C4BE0 + ldr r0, _080C528C + bl sub_08185B7C + b _080C5296 + .align 2, 0 +_080C5288: .4byte gUnknown_2039998 +_080C528C: .4byte sub_080C51D0 +_080C5290: + ldr r0, _080C529C + bl sub_080C4710 +_080C5296: + pop {r0} + bx r0 + .align 2, 0 +_080C529C: .4byte sub_080C5164 + thumb_func_end sub_080C5230 + + thumb_func_start sub_080C52A0 +sub_080C52A0: @ 0x080C52A0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, r3, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #1 + blt _080C52C8 + cmp r1, #2 + ble _080C52F0 + cmp r1, #3 + bne _080C52C8 + ldr r0, _080C52CC + ldr r2, [r0] + ldrb r1, [r2, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080C52D0 +_080C52C8: + movs r0, #0 + b _080C532C + .align 2, 0 +_080C52CC: .4byte gUnknown_203998C +_080C52D0: + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2, #0xe] + adds r0, r3, #0 + bl sub_080A8964 + ldr r0, _080C52EC + bl sub_08000540 + b _080C5316 + .align 2, 0 +_080C52EC: .4byte sub_080C5230 +_080C52F0: + ldr r0, _080C5334 + ldr r3, [r0] + movs r0, #7 + ands r2, r0 + lsls r2, r2, #1 + ldrb r1, [r3, #0xe] + subs r0, #0x16 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0xe] + ldr r1, _080C5338 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080C533C + str r1, [r0] + movs r1, #0 + strh r1, [r0, #8] +_080C5316: + ldr r0, _080C5334 + ldr r2, [r0] + ldr r0, _080C5340 + ldr r1, [r0] + ldr r0, [r1] + ldrh r0, [r0, #0x20] + strh r0, [r2, #8] + ldr r0, [r1] + ldrh r0, [r0, #0x22] + strh r0, [r2, #0xa] + movs r0, #1 +_080C532C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C5334: .4byte gUnknown_203998C +_080C5338: .4byte gUnknown_3005B60 +_080C533C: .4byte sub_080C54D4 +_080C5340: .4byte gUnknown_2039990 + thumb_func_end sub_080C52A0 + + thumb_func_start sub_080C5344 +sub_080C5344: @ 0x080C5344 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r2, _080C5438 + ldrh r1, [r2, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080C537C + ldr r0, _080C543C + ldr r4, [r0] + ldr r1, [r4] + ldrh r3, [r1, #0x22] + movs r7, #0x22 + ldrsh r0, [r1, r7] + cmp r0, #8 + ble _080C537C + subs r0, r3, #2 + strh r0, [r1, #0x22] + ldr r1, [r4] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #7 + bgt _080C537A + movs r0, #2 + strh r0, [r1, #0x22] +_080C537A: + movs r5, #1 +_080C537C: + ldrh r1, [r2, #0x2c] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C53AA + ldr r0, _080C543C + ldr r4, [r0] + ldr r1, [r4] + ldrh r3, [r1, #0x22] + movs r7, #0x22 + ldrsh r0, [r1, r7] + cmp r0, #0x87 + bgt _080C53AA + adds r0, r3, #2 + strh r0, [r1, #0x22] + ldr r1, [r4] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x88 + ble _080C53A8 + movs r0, #0x88 + strh r0, [r1, #0x22] +_080C53A8: + movs r5, #1 +_080C53AA: + ldrh r1, [r2, #0x2c] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080C53D8 + ldr r0, _080C543C + ldr r4, [r0] + ldr r1, [r4] + ldrh r3, [r1, #0x20] + movs r7, #0x20 + ldrsh r0, [r1, r7] + cmp r0, #5 + ble _080C53D8 + subs r0, r3, #2 + strh r0, [r1, #0x20] + ldr r1, [r4] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #4 + bgt _080C53D6 + movs r0, #5 + strh r0, [r1, #0x20] +_080C53D6: + movs r5, #1 +_080C53D8: + ldrh r1, [r2, #0x2c] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080C5406 + ldr r0, _080C543C + ldr r4, [r0] + ldr r1, [r4] + ldrh r3, [r1, #0x20] + movs r7, #0x20 + ldrsh r0, [r1, r7] + cmp r0, #0xe7 + bgt _080C5406 + adds r0, r3, #2 + strh r0, [r1, #0x20] + ldr r1, [r4] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0xe8 + ble _080C5404 + movs r0, #0xe8 + strh r0, [r1, #0x20] +_080C5404: + movs r5, #1 +_080C5406: + cmp r5, #0 + bne _080C5484 + ldr r4, _080C5440 + ldr r0, [r4] + ldrb r3, [r0, #0xc] + cmp r3, #0 + beq _080C545A + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C545A + cmp r3, #3 + bhi _080C5444 + movs r0, #5 + bl sub_080A306C + ldr r0, [r4] + ldrb r1, [r0, #0xc] + adds r0, r6, #0 + bl sub_080C52A0 + cmp r0, #0 + bne _080C54C6 + b _080C545A + .align 2, 0 +_080C5438: .4byte gUnknown_3002360 +_080C543C: .4byte gUnknown_2039990 +_080C5440: .4byte gUnknown_203998C +_080C5444: + cmp r3, #4 + bne _080C545A + movs r0, #3 + bl sub_080A306C + ldr r0, _080C547C + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 +_080C545A: + ldr r0, _080C5480 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080C54C6 + movs r0, #3 + bl sub_080A306C + ldr r0, _080C547C + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 + b _080C54C6 + .align 2, 0 +_080C547C: .4byte sub_080C4D6C +_080C5480: .4byte gUnknown_3002360 +_080C5484: + ldr r0, _080C54CC + ldr r0, [r0] + ldr r1, [r0] + ldrh r0, [r1, #0x20] + subs r0, #5 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r1, #0x22] + adds r1, #5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080C50F8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080C54D0 + ldr r0, [r4] + ldrb r0, [r0, #0xc] + cmp r0, r5 + beq _080C54C6 + adds r0, r5, #0 + bl sub_080C57BC + ldr r1, [r4] + ldrb r0, [r1, #0xc] + strb r0, [r1, #0xd] + ldr r0, [r4] + strb r5, [r0, #0xc] + ldr r1, [r4] + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xd] + bl sub_080C59F0 +_080C54C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C54CC: .4byte gUnknown_2039990 +_080C54D0: .4byte gUnknown_203998C + thumb_func_end sub_080C5344 + + thumb_func_start sub_080C54D4 +sub_080C54D4: @ 0x080C54D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r5, r0, #3 + ldr r0, _080C5500 + mov r8, r0 + adds r6, r5, r0 + ldr r7, _080C5504 + ldr r0, [r7] + ldrh r0, [r0, #4] + cmp r0, #1 + beq _080C55D0 + cmp r0, #1 + bgt _080C5508 + cmp r0, #0 + beq _080C5510 + b _080C5698 + .align 2, 0 +_080C5500: .4byte gUnknown_3005B68 +_080C5504: .4byte gUnknown_203998C +_080C5508: + cmp r0, #2 + bne _080C550E + b _080C5626 +_080C550E: + b _080C5698 +_080C5510: + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080C5548 + movs r0, #1 + movs r1, #0 + bl sub_080C5844 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + strh r0, [r6, #2] + strh r0, [r6, #4] + movs r0, #0x15 + strh r0, [r6, #6] + strh r0, [r6, #8] + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _080C5544 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _080C55A0 + .align 2, 0 +_080C5544: .4byte 0x00007FFF +_080C5548: + movs r1, #0xfe + lsls r1, r1, #1 + adds r0, r1, #0 + strh r0, [r6, #2] + strh r0, [r6, #4] + movs r1, #0x15 + rsbs r1, r1, #0 + adds r0, r1, #0 + strh r0, [r6, #6] + strh r0, [r6, #8] + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + bl sub_080C5BC8 + ldr r0, _080C55C4 + bl sub_080006F0 + movs r5, #1 + rsbs r5, r5, #0 + ldr r4, _080C55C8 + adds r0, r5, #0 + movs r1, #0x10 + adds r2, r4, #0 + bl sub_080A22E8 + str r4, [sp] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_080C55A0: + ldr r4, _080C55CC + ldr r0, [r4] + adds r0, #0x2c + movs r1, #1 + strb r1, [r0] + movs r1, #2 + ldrsh r0, [r6, r1] + bl sub_08151600 + ldr r1, [r4] + strh r0, [r1, #0x2e] + movs r1, #4 + ldrsh r0, [r6, r1] + bl sub_08151600 + ldr r1, [r4] + strh r0, [r1, #0x30] + b _080C5698 + .align 2, 0 +_080C55C4: .4byte sub_080C4CA8 +_080C55C8: .4byte 0x00007FFF +_080C55CC: .4byte gUnknown_2039990 +_080C55D0: + bl sub_080A12E4 + ldrh r0, [r6, #6] + ldrh r1, [r6, #2] + adds r0, r0, r1 + strh r0, [r6, #2] + ldrh r0, [r6, #8] + ldrh r1, [r6, #4] + adds r0, r0, r1 + strh r0, [r6, #4] + movs r1, #2 + ldrsh r0, [r6, r1] + bl sub_08151600 + ldr r4, _080C5614 + ldr r1, [r4] + strh r0, [r1, #0x2e] + movs r1, #4 + ldrsh r0, [r6, r1] + bl sub_08151600 + ldr r1, [r4] + strh r0, [r1, #0x30] + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080C5618 + movs r0, #2 + ldrsh r1, [r6, r0] + movs r0, #0xfe + lsls r0, r0, #1 + cmp r1, r0 + ble _080C56A2 + b _080C5698 + .align 2, 0 +_080C5614: .4byte gUnknown_2039990 +_080C5618: + movs r0, #2 + ldrsh r1, [r6, r0] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _080C56A2 + b _080C5698 +_080C5626: + ldr r0, _080C5658 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x2c + ldrb r0, [r1] + cmp r0, #0 + beq _080C5638 + movs r0, #0 + strb r0, [r1] +_080C5638: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C56A2 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080C5660 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _080C565C + bl sub_08000540 + b _080C567E + .align 2, 0 +_080C5658: .4byte gUnknown_2039990 +_080C565C: .4byte sub_080C5230 +_080C5660: + movs r0, #0 + movs r1, #0 + bl sub_080C5844 + ldr r2, [r7] + ldrb r1, [r2, #0xe] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0xe] + mov r0, r8 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _080C5690 + str r1, [r0] +_080C567E: + movs r0, #2 + movs r1, #6 + movs r2, #0 + bl sub_08001B70 + ldr r0, _080C5694 + ldr r1, [r0] + movs r0, #0 + b _080C56A0 + .align 2, 0 +_080C5690: .4byte sub_080C5344 +_080C5694: .4byte gUnknown_203998C +_080C5698: + ldr r0, _080C56B0 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 +_080C56A0: + strh r0, [r1, #4] +_080C56A2: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C56B0: .4byte gUnknown_203998C + thumb_func_end sub_080C54D4 + + thumb_func_start sub_080C56B4 +sub_080C56B4: @ 0x080C56B4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + movs r4, #0 +_080C56BE: + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080C56BE + ldr r6, _080C57A4 + str r6, [sp] + movs r0, #0 + mov r8, r0 + str r0, [sp, #4] + ldr r0, _080C57A8 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #8 + movs r3, #6 + bl sub_08199AFC + str r6, [sp] + mov r1, r8 + str r1, [sp, #4] + ldr r0, _080C57AC + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0xe + movs r3, #6 + bl sub_08199AFC + str r6, [sp] + mov r0, r8 + str r0, [sp, #4] + ldr r0, _080C57B0 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #8 + movs r3, #3 + bl sub_08199AFC + ldr r4, _080C57B4 + ldr r5, _080C57B8 + ldr r0, [r5] + ldrh r1, [r0, #6] + adds r0, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #0 + adds r1, r4, #0 + bl sub_08005DAC + movs r2, #0x5c + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r6, [sp] + mov r1, r8 + str r1, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r3, #0xf + bl sub_08199AFC + ldr r1, [r5] + ldrh r0, [r1, #8] + subs r0, #5 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r1, #0xa] + adds r1, #5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080C50F8 + ldr r1, [r5] + strb r0, [r1, #0xc] + ldr r0, [r5] + mov r1, r8 + strb r1, [r0, #0xd] + ldr r0, [r5] + ldrb r0, [r0, #0xc] + bl sub_080C57BC + movs r4, #0 +_080C577E: + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080C577E + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C57A4: .4byte gUnknown_854AF6C +_080C57A8: .4byte gUnknown_85CCA93 +_080C57AC: .4byte gUnknown_85CCA9E +_080C57B0: .4byte gUnknown_85CCAA8 +_080C57B4: .4byte gUnknown_2021C7C +_080C57B8: .4byte gUnknown_203998C + thumb_func_end sub_080C56B4 + + thumb_func_start sub_080C57BC +sub_080C57BC: @ 0x080C57BC + push {r4, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #3 + movs r1, #0 + bl sub_08003B18 + cmp r4, #3 + bne _080C5804 + ldr r0, _080C57F8 + ldr r0, [r0] + ldrb r0, [r0, #0xe] + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _080C5804 + ldr r0, _080C57FC + str r0, [sp] + str r1, [sp, #4] + ldr r0, _080C5800 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + b _080C5826 + .align 2, 0 +_080C57F8: .4byte gUnknown_203998C +_080C57FC: .4byte gUnknown_854AF6F +_080C5800: .4byte gUnknown_854B138 +_080C5804: + cmp r4, #0 + beq _080C5826 + ldr r0, _080C583C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r1, _080C5840 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC +_080C5826: + movs r0, #3 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C583C: .4byte gUnknown_854AF6F +_080C5840: .4byte gUnknown_854B138 + thumb_func_end sub_080C57BC + + thumb_func_start sub_080C5844 +sub_080C5844: @ 0x080C5844 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r0, _080C5868 + ldr r0, [r0] + ldrb r0, [r0, #0xe] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #1 + beq _080C586C + cmp r0, #2 + beq _080C58AE + b _080C59DA + .align 2, 0 +_080C5868: .4byte gUnknown_203998C +_080C586C: + cmp r2, #0 + beq _080C5894 + ldr r0, _080C5890 + ldr r0, [r0] + ldr r1, [r0, #0x20] + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x10 + str r0, [sp, #8] + movs r0, #2 + movs r2, #0x10 + movs r3, #3 + bl sub_080023B4 + b _080C58F0 + .align 2, 0 +_080C5890: .4byte gUnknown_2039990 +_080C5894: + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x10 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #0x10 + movs r3, #3 + bl sub_080026E0 + b _080C58F0 +_080C58AE: + cmp r2, #0 + beq _080C58D8 + ldr r0, _080C58D4 + ldr r0, [r0] + ldr r1, [r0, #0x20] + adds r1, #0x54 + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x10 + str r0, [sp, #8] + movs r0, #2 + movs r2, #0x10 + movs r3, #0xa + bl sub_080023B4 + b _080C58F0 + .align 2, 0 +_080C58D4: .4byte gUnknown_2039990 +_080C58D8: + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x10 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #0x10 + movs r3, #0xa + bl sub_080026E0 +_080C58F0: + movs r0, #2 + bl sub_08002248 + cmp r7, #0 + beq _080C5970 + movs r4, #0xfe + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_08151600 + adds r6, r0, #0 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r0, r4, #0 + bl sub_08151600 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r5, _080C5968 + ldr r1, _080C596C + ldr r1, [r1] + ldrb r4, [r1, #0xe] + lsls r4, r4, #0x1c + lsrs r1, r4, #0x1d + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r1, r1, #8 + lsrs r2, r4, #0x1d + subs r2, #1 + lsls r2, r2, #2 + adds r3, r5, #2 + mov r8, r3 + add r2, r8 + movs r3, #0 + ldrsh r2, [r2, r3] + lsls r2, r2, #8 + lsrs r3, r4, #0x1d + subs r3, #1 + lsls r3, r3, #2 + adds r3, r3, r5 + movs r5, #0 + ldrsh r3, [r3, r5] + lsrs r4, r4, #0x1d + subs r4, #1 + lsls r4, r4, #2 + add r4, r8 + movs r5, #0 + ldrsh r4, [r4, r5] + str r4, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #2 + bl sub_0800200C + b _080C59DA + .align 2, 0 +_080C5968: .4byte gUnknown_854AF04 +_080C596C: .4byte gUnknown_203998C +_080C5970: + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_08151600 + adds r6, r0, #0 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r0, r4, #0 + bl sub_08151600 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r5, _080C59E8 + ldr r1, _080C59EC + ldr r1, [r1] + ldrb r4, [r1, #0xe] + lsls r4, r4, #0x1c + lsrs r1, r4, #0x1d + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r1, r1, #8 + lsrs r2, r4, #0x1d + subs r2, #1 + lsls r2, r2, #2 + adds r3, r5, #2 + mov r8, r3 + add r2, r8 + movs r3, #0 + ldrsh r2, [r2, r3] + lsls r2, r2, #8 + lsrs r3, r4, #0x1d + subs r3, #1 + lsls r3, r3, #2 + adds r3, r3, r5 + movs r5, #0 + ldrsh r3, [r3, r5] + lsrs r4, r4, #0x1d + subs r4, #1 + lsls r4, r4, #2 + add r4, r8 + movs r5, #0 + ldrsh r4, [r4, r5] + str r4, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + str r7, [sp, #0xc] + movs r0, #2 + bl sub_0800200C +_080C59DA: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C59E8: .4byte gUnknown_854AF04 +_080C59EC: .4byte gUnknown_203998C + thumb_func_end sub_080C5844 + + thumb_func_start sub_080C59F0 +sub_080C59F0: @ 0x080C59F0 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r5, #2 + beq _080C5A38 + cmp r5, #2 + bgt _080C5A0A + cmp r5, #1 + beq _080C5A14 + b _080C5AB0 +_080C5A0A: + cmp r5, #3 + beq _080C5A5C + cmp r5, #4 + beq _080C5A90 + b _080C5AB0 +_080C5A14: + ldr r0, _080C5A34 + ldr r0, [r0] + ldr r1, [r0, #0x24] + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #3 + bl sub_080023B4 + b _080C5ABA + .align 2, 0 +_080C5A34: .4byte gUnknown_2039990 +_080C5A38: + ldr r0, _080C5A58 + ldr r0, [r0] + ldr r1, [r0, #0x24] + movs r0, #0xa8 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + b _080C5A7E + .align 2, 0 +_080C5A58: .4byte gUnknown_2039990 +_080C5A5C: + ldr r0, _080C5A88 + ldr r0, [r0] + ldrb r1, [r0, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C5AB0 + ldr r0, _080C5A8C + ldr r0, [r0] + ldr r1, [r0, #0x28] + movs r0, #0xc + str r0, [sp] + str r5, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #2 +_080C5A7E: + movs r3, #0xa + bl sub_080023B4 + b _080C5ABA + .align 2, 0 +_080C5A88: .4byte gUnknown_203998C +_080C5A8C: .4byte gUnknown_2039990 +_080C5A90: + ldr r1, _080C5AAC + movs r0, #6 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x15 + movs r3, #0 + bl sub_080023B4 + b _080C5ABA + .align 2, 0 +_080C5AAC: .4byte gUnknown_8549DB8 +_080C5AB0: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080C5B80 +_080C5ABA: + cmp r4, #2 + beq _080C5AF8 + cmp r4, #2 + bgt _080C5AC8 + cmp r4, #1 + beq _080C5AD2 + b _080C5B70 +_080C5AC8: + cmp r4, #3 + beq _080C5B1C + cmp r4, #4 + beq _080C5B50 + b _080C5B70 +_080C5AD2: + ldr r0, _080C5AF4 + ldr r0, [r0] + ldr r1, [r0, #0x24] + adds r1, #0xa8 + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + movs r3, #3 + bl sub_080023B4 + b _080C5B7A + .align 2, 0 +_080C5AF4: .4byte gUnknown_2039990 +_080C5AF8: + ldr r0, _080C5B18 + ldr r0, [r0] + ldr r1, [r0, #0x24] + movs r0, #0xfc + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0xc + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x10 + b _080C5B40 + .align 2, 0 +_080C5B18: .4byte gUnknown_2039990 +_080C5B1C: + ldr r0, _080C5B48 + ldr r0, [r0] + ldrb r1, [r0, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C5B80 + ldr r0, _080C5B4C + ldr r0, [r0] + ldr r1, [r0, #0x28] + adds r1, #0x48 + movs r0, #0xc + str r0, [sp] + str r4, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #2 +_080C5B40: + movs r3, #0xa + bl sub_080023B4 + b _080C5B7A + .align 2, 0 +_080C5B48: .4byte gUnknown_203998C +_080C5B4C: .4byte gUnknown_2039990 +_080C5B50: + ldr r1, _080C5B6C + movs r0, #6 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x15 + movs r3, #0 + bl sub_080023B4 + b _080C5B7A + .align 2, 0 +_080C5B6C: .4byte gUnknown_8549DD0 +_080C5B70: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080C5B80 +_080C5B7A: + movs r0, #1 + bl sub_08002248 +_080C5B80: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080C59F0 + + thumb_func_start sub_080C5B88 +sub_080C5B88: @ 0x080C5B88 + push {r4, lr} + ldr r1, _080C5BC0 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r4, _080C5BC4 + ldr r1, [r4] + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xd] + bl sub_080C59F0 + ldr r0, [r4] + ldrb r1, [r0, #0xe] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1d + movs r0, #1 + bl sub_080C5844 + bl sub_080C56B4 + movs r0, #1 + bl sub_08002248 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C5BC0: .4byte gUnknown_8549610 +_080C5BC4: .4byte gUnknown_203998C + thumb_func_end sub_080C5B88 + + thumb_func_start sub_080C5BC8 +sub_080C5BC8: @ 0x080C5BC8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + movs r5, #0 + bl sub_08008424 + bl sub_08008094 + ldr r0, _080C5CC4 + bl sub_080084A8 + ldr r4, _080C5CC8 + adds r0, r4, #0 + bl sub_08034388 + adds r4, #0x10 + adds r0, r4, #0 + bl sub_08034388 + ldr r0, _080C5CCC + ldr r1, _080C5CD0 + ldr r2, [r1] + movs r3, #8 + ldrsh r1, [r2, r3] + movs r6, #0xa + ldrsh r2, [r2, r6] + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080C5CD4 + ldr r2, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080C5CD8 + adds r1, r1, r0 + str r1, [r2] + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + mov r8, sp + mov sb, r3 +_080C5C28: + ldr r0, _080C5CD0 + ldr r0, [r0] + adds r0, #0xf + adds r2, r0, r5 + ldrb r0, [r2] + adds r4, r5, #1 + cmp r0, #0 + beq _080C5CAE + mov r1, sp + ldr r0, _080C5CDC + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + mov r7, r8 + ldrh r0, [r7, #2] + ldr r1, _080C5CE0 + adds r0, r0, r1 + ldrb r2, [r2] + adds r0, r0, r2 + strh r0, [r7, #2] + ldr r1, _080C5CE4 + adds r0, r5, #6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #4] + adds r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r0] + adds r2, #6 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r3, r4, #0x18 + lsrs r3, r3, #0x18 + mov r0, sp + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r3, sb + ldr r2, [r3] + lsls r3, r5, #2 + adds r2, #4 + adds r2, r2, r3 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080C5CD8 + adds r1, r1, r0 + str r1, [r2] + ldrb r2, [r1, #5] + movs r6, #0xd + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r2, r0 + movs r0, #8 + orrs r2, r0 + strb r2, [r1, #5] + mov r7, sb + ldr r0, [r7] + adds r0, #4 + adds r0, r0, r3 + ldr r0, [r0] + adds r1, r5, #0 + bl sub_08007EC0 +_080C5CAE: + lsls r0, r4, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #6 + bls _080C5C28 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C5CC4: .4byte gUnknown_854B008 +_080C5CC8: .4byte gUnknown_854AFE0 +_080C5CCC: .4byte gUnknown_854B0D8 +_080C5CD0: .4byte gUnknown_203998C +_080C5CD4: .4byte gUnknown_2039990 +_080C5CD8: .4byte gUnknown_20205AC +_080C5CDC: .4byte gUnknown_854B108 +_080C5CE0: .4byte 0x0000FFFF +_080C5CE4: .4byte gUnknown_854AF78 + thumb_func_end sub_080C5BC8 + + thumb_func_start sub_080C5CE8 +sub_080C5CE8: @ 0x080C5CE8 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r4, _080C5D38 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08006E00 + ldr r0, [r4] + str r5, [r0] + adds r6, r4, #0 +_080C5CFC: + ldr r0, [r6] + lsls r4, r5, #2 + adds r0, #4 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080C5D18 + bl sub_08006E00 + ldr r0, [r6] + adds r0, #4 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080C5D18: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #6 + bls _080C5CFC + bl sub_08008424 + movs r0, #2 + bl sub_08008280 + movs r0, #0 + bl sub_08008280 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C5D38: .4byte gUnknown_2039990 + thumb_func_end sub_080C5CE8 + + thumb_func_start sub_080C5D3C +sub_080C5D3C: @ 0x080C5D3C + bx lr + .align 2, 0 + thumb_func_end sub_080C5D3C + + thumb_func_start sub_080C5D40 +sub_080C5D40: @ 0x080C5D40 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080C5D74 + ldr r0, [r5] + cmp r0, #0 + beq _080C5D52 + adds r0, r4, #0 + bl sub_08000540 +_080C5D52: + ldr r0, _080C5D78 + bl sub_08000BDC + str r0, [r5] + str r4, [r0] + bl sub_080A8818 + ldr r0, _080C5D7C + movs r1, #0 + bl sub_080A8878 + ldr r0, _080C5D80 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C5D74: .4byte gUnknown_2039994 +_080C5D78: .4byte 0x00003014 +_080C5D7C: .4byte sub_080C60A8 +_080C5D80: .4byte sub_080C4D34 + thumb_func_end sub_080C5D40 + + thumb_func_start sub_080C5D84 +sub_080C5D84: @ 0x080C5D84 + push {r4, lr} + bl sub_080A8818 + ldr r4, _080C5DB0 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000540 + ldr r0, [r4] + ldr r2, _080C5DB4 + movs r1, #0 + bl memset + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C5DB0: .4byte gUnknown_2039994 +_080C5DB4: .4byte 0x00003014 + thumb_func_end sub_080C5D84 + + thumb_func_start sub_080C5DB8 +sub_080C5DB8: @ 0x080C5DB8 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _080C5DD4 + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #7 + bls _080C5DC8 + b _080C5F80 +_080C5DC8: + lsls r0, r0, #2 + ldr r1, _080C5DD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5DD4: .4byte gUnknown_203998C +_080C5DD8: .4byte _080C5DDC +_080C5DDC: @ jump table + .4byte _080C5DFC @ case 0 + .4byte _080C5E0C @ case 1 + .4byte _080C5E12 @ case 2 + .4byte _080C5E24 @ case 3 + .4byte _080C5EAC @ case 4 + .4byte _080C5ED4 @ case 5 + .4byte _080C5F14 @ case 6 + .4byte _080C5F64 @ case 7 +_080C5DFC: + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_08121E58 + b _080C5F80 +_080C5E0C: + bl sub_080C49CC + b _080C5F80 +_080C5E12: + bl sub_0800668C + bl sub_08008424 + bl sub_080A133C + bl sub_081996B8 + b _080C5F80 +_080C5E24: + movs r0, #0 + bl sub_080017D4 + ldr r1, _080C5E9C + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r4, _080C5EA0 + ldr r1, [r4] + adds r1, #0x12 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _080C5EA4 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _080C5EA8 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + b _080C5F04 + .align 2, 0 +_080C5E9C: .4byte gUnknown_854AF18 +_080C5EA0: .4byte gUnknown_2039994 +_080C5EA4: .4byte 0x00001012 +_080C5EA8: .4byte 0x00002012 +_080C5EAC: + ldr r0, _080C5ECC + bl sub_08003090 + bl sub_08004480 + bl sub_080C6480 + ldr r1, _080C5ED0 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _080C5F80 + .align 2, 0 +_080C5ECC: .4byte gUnknown_854AF4C +_080C5ED0: .4byte gUnknown_8548168 +_080C5ED4: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C5F8A + ldr r0, _080C5F0C + movs r2, #0xd0 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A1200 + movs r0, #0 + bl sub_080985A0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _080C5F10 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC +_080C5F04: + movs r0, #2 + bl sub_08002248 + b _080C5F80 + .align 2, 0 +_080C5F0C: .4byte gUnknown_85467E4 +_080C5F10: .4byte gUnknown_85498F8 +_080C5F14: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + bl sub_080C6260 + ldr r0, _080C5F5C + bl sub_080006F0 + movs r5, #1 + rsbs r5, r5, #0 + ldr r4, _080C5F60 + adds r0, r5, #0 + movs r1, #0x10 + adds r2, r4, #0 + bl sub_080A22E8 + str r4, [sp] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _080C5F80 + .align 2, 0 +_080C5F5C: .4byte sub_080C4CA8 +_080C5F60: .4byte 0x00007FFF +_080C5F64: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080C5F8A + ldr r0, _080C5F7C + ldr r0, [r0] + strh r1, [r0, #4] + movs r0, #1 + b _080C5F8C + .align 2, 0 +_080C5F7C: .4byte gUnknown_203998C +_080C5F80: + ldr r0, _080C5F94 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] +_080C5F8A: + movs r0, #0 +_080C5F8C: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C5F94: .4byte gUnknown_203998C + thumb_func_end sub_080C5DB8 + + thumb_func_start sub_080C5F98 +sub_080C5F98: @ 0x080C5F98 + push {r4, lr} + sub sp, #4 + ldr r0, _080C5FB0 + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #5 + bhi _080C6090 + lsls r0, r0, #2 + ldr r1, _080C5FB4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C5FB0: .4byte gUnknown_203998C +_080C5FB4: .4byte _080C5FB8 +_080C5FB8: @ jump table + .4byte _080C5FD0 @ case 0 + .4byte _080C5FE8 @ case 1 + .4byte _080C600E @ case 2 + .4byte _080C601E @ case 3 + .4byte _080C6060 @ case 4 + .4byte _080C606E @ case 5 +_080C5FD0: + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _080C5FE4 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _080C6090 + .align 2, 0 +_080C5FE4: .4byte 0x00007FFF +_080C5FE8: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C609A + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + b _080C6090 +_080C600E: + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_08121E58 + b _080C6090 +_080C601E: + ldr r4, _080C605C + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0 + beq _080C6032 + bl sub_08006E00 + movs r0, #0 + bl sub_08008280 +_080C6032: + ldr r0, [r4] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _080C6044 + bl sub_08006E00 + movs r0, #1 + bl sub_08008280 +_080C6044: + ldr r0, [r4] + ldr r0, [r0, #8] + cmp r0, #0 + beq _080C6056 + bl sub_08006E00 + movs r0, #4 + bl sub_08008280 +_080C6056: + bl sub_080034D4 + b _080C6090 + .align 2, 0 +_080C605C: .4byte gUnknown_2039994 +_080C6060: + bl sub_080C49CC + bl sub_0800668C + bl sub_08008424 + b _080C6090 +_080C606E: + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #2 + bl sub_08002160 + ldr r0, _080C608C + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #4] + movs r0, #1 + b _080C609C + .align 2, 0 +_080C608C: .4byte gUnknown_203998C +_080C6090: + ldr r0, _080C60A4 + ldr r1, [r0] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] +_080C609A: + movs r0, #0 +_080C609C: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080C60A4: .4byte gUnknown_203998C + thumb_func_end sub_080C5F98 + + thumb_func_start sub_080C60A8 +sub_080C60A8: @ 0x080C60A8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080C60CC + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _080C60C2 + b _080C61C6 +_080C60C2: + lsls r0, r0, #2 + ldr r1, _080C60D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C60CC: .4byte gUnknown_3005B68 +_080C60D0: .4byte _080C60D4 +_080C60D4: @ jump table + .4byte _080C60EC @ case 0 + .4byte _080C60F2 @ case 1 + .4byte _080C6158 @ case 2 + .4byte _080C6180 @ case 3 + .4byte _080C61B0 @ case 4 + .4byte _080C61BA @ case 5 +_080C60EC: + bl sub_080C5DB8 + b _080C61B4 +_080C60F2: + ldr r0, _080C610C + ldrh r1, [r0, #0x2e] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080C6110 + movs r0, #3 + bl sub_080A306C + movs r0, #4 + b _080C61CA + .align 2, 0 +_080C610C: .4byte gUnknown_3002360 +_080C6110: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C6134 + ldr r0, _080C612C + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #5 + bls _080C6130 + movs r0, #0 + bl sub_080C655C + b _080C61CC + .align 2, 0 +_080C612C: .4byte gUnknown_2039994 +_080C6130: + strh r2, [r4] + b _080C61CC +_080C6134: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080C61CC + ldr r0, _080C6150 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _080C6154 + movs r0, #1 + bl sub_080C655C + b _080C61CC + .align 2, 0 +_080C6150: .4byte gUnknown_2039994 +_080C6154: + movs r0, #3 + b _080C61CA +_080C6158: + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _080C616E + movs r0, #0 + bl sub_080C655C + movs r0, #0 + strh r0, [r4, #2] + movs r0, #1 + b _080C61CA +_080C616E: + ldr r0, _080C617C + ldr r0, [r0] + ldr r1, [r0, #4] + ldrh r0, [r1, #0x22] + adds r0, #4 + b _080C61A0 + .align 2, 0 +_080C617C: .4byte gUnknown_2039994 +_080C6180: + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _080C6196 + movs r0, #1 + bl sub_080C655C + movs r0, #0 + strh r0, [r4, #2] + movs r0, #1 + b _080C61CA +_080C6196: + ldr r0, _080C61AC + ldr r0, [r0] + ldr r1, [r0, #4] + ldrh r0, [r1, #0x22] + subs r0, #4 +_080C61A0: + strh r0, [r1, #0x22] + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + b _080C61CC + .align 2, 0 +_080C61AC: .4byte gUnknown_2039994 +_080C61B0: + bl sub_080C5F98 +_080C61B4: + cmp r0, #0 + bne _080C61C6 + b _080C61CC +_080C61BA: + adds r0, r2, #0 + bl sub_080A8964 + bl sub_080C5D84 + b _080C61CC +_080C61C6: + ldrh r0, [r4] + adds r0, #1 +_080C61CA: + strh r0, [r4] +_080C61CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C60A8 + + thumb_func_start sub_080C61D4 +sub_080C61D4: @ 0x080C61D4 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _080C61F4 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _080C61F0 + adds r0, r1, #0 + subs r0, #0xf + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _080C61F8 +_080C61F0: + movs r0, #1 + b _080C625A + .align 2, 0 +_080C61F4: .4byte 0xFFFB0000 +_080C61F8: + adds r0, r1, #0 + subs r0, #0x12 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bhi _080C6208 + movs r0, #2 + b _080C625A +_080C6208: + adds r0, r1, #0 + subs r0, #0x16 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _080C6218 + movs r0, #3 + b _080C625A +_080C6218: + adds r0, r1, #0 + subs r0, #0x1c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _080C6228 + movs r0, #4 + b _080C625A +_080C6228: + adds r0, r1, #0 + subs r0, #0x1f + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _080C6238 + movs r0, #5 + b _080C625A +_080C6238: + adds r0, r1, #0 + subs r0, #0x22 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bhi _080C6248 + movs r0, #6 + b _080C625A +_080C6248: + adds r0, r1, #0 + subs r0, #0x19 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080C6258 + movs r0, #0 + b _080C625A +_080C6258: + movs r0, #7 +_080C625A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C61D4 + + thumb_func_start sub_080C6260 +sub_080C6260: @ 0x080C6260 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + movs r7, #0 + bl sub_08008424 + ldr r0, _080C6368 + bl sub_080084A8 + ldr r6, _080C636C + adds r0, r6, #0 + bl sub_08034388 + ldr r0, _080C6370 + mov r8, r0 + ldr r4, _080C6374 + ldr r0, [r4] + ldrb r2, [r0, #0x10] + lsls r2, r2, #4 + adds r2, #8 + mov r0, r8 + movs r1, #0x9b + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, [r4] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r2, _080C6378 + mov sb, r2 + add r1, sb + str r1, [r0, #4] + ldrb r2, [r1, #5] + movs r5, #0xd + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + strb r0, [r1, #5] + ldr r0, [r4] + ldr r1, [r0, #4] + adds r1, #0x3f + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r4] + ldr r0, [r0, #4] + movs r1, #1 + bl sub_08007EC0 + adds r6, #8 + adds r0, r6, #0 + bl sub_08034388 + movs r3, #0x18 + add r8, r3 + ldr r6, _080C637C + ldr r0, [r4] + ldrb r0, [r0, #0x10] + lsls r0, r0, #4 + adds r0, r0, r6 + movs r2, #8 + ldrsh r1, [r0, r2] + movs r3, #0xa + ldrsh r2, [r0, r3] + mov r0, r8 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, [r4] + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + add r0, sb + str r0, [r1, #0xc] + ldrb r1, [r0, #5] + ands r5, r1 + strb r5, [r0, #5] + ldr r1, [r4] + ldr r0, [r1, #0xc] + ldrb r1, [r1, #0x10] + lsls r1, r1, #4 + adds r1, r1, r6 + ldrb r1, [r1, #0xc] + bl sub_08007EC0 + bl sub_080855C0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x3a + beq _080C632C + cmp r5, #0xca + beq _080C632C + b _080C6466 +_080C632C: + ldr r4, _080C6380 + ldr r2, [r4] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r0, #4 + beq _080C633E + cmp r0, #0xe + bne _080C6384 + movs r7, #0x37 +_080C633E: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + ldrh r6, [r2] + adds r0, r0, r6 + ldrh r4, [r2, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080C6352 + adds r0, #7 +_080C6352: + lsls r0, r0, #0xd + lsrs r7, r0, #0x10 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080C6360 + adds r0, #7 +_080C6360: + lsls r0, r0, #0xd + lsrs r4, r0, #0x10 + movs r5, #0 + b _080C63DE + .align 2, 0 +_080C6368: .4byte gUnknown_854B008 +_080C636C: .4byte gUnknown_854AFE0 +_080C6370: .4byte gUnknown_854B0D8 +_080C6374: .4byte gUnknown_2039994 +_080C6378: .4byte gUnknown_20205AC +_080C637C: .4byte gUnknown_854B174 +_080C6380: .4byte gUnknown_3005AEC +_080C6384: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080C61D4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _080C63A0 + subs r0, r5, #1 + lsls r0, r0, #4 + adds r0, r0, r6 + ldrh r7, [r0, #8] + ldrh r4, [r0, #0xa] + b _080C63DE +_080C63A0: + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x25 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xe + bne _080C63BA + ldrh r0, [r1, #0x28] + adds r0, #0x37 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + b _080C63BC +_080C63BA: + ldrh r7, [r1, #0x28] +_080C63BC: + ldr r0, _080C6408 + ldr r0, [r0] + ldrh r4, [r0, #0x2a] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080C63CC + adds r0, #7 +_080C63CC: + lsls r0, r0, #0xd + lsrs r7, r0, #0x10 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _080C63DA + adds r0, #7 +_080C63DA: + lsls r0, r0, #0xd + lsrs r4, r0, #0x10 +_080C63DE: + ldr r0, _080C640C + bl sub_08034388 + mov r1, sp + ldr r0, _080C6410 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + mov r1, sp + ldr r0, _080C6414 + ldr r0, [r0] + ldrb r0, [r0, #8] + adds r0, #4 + strh r0, [r1, #2] + cmp r5, #0 + beq _080C6418 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + lsls r2, r4, #0x10 + b _080C642A + .align 2, 0 +_080C6408: .4byte gUnknown_3005AEC +_080C640C: .4byte gUnknown_854AFF8 +_080C6410: .4byte gUnknown_854B120 +_080C6414: .4byte gUnknown_3005AF0 +_080C6418: + lsls r1, r7, #0x13 + lsls r2, r4, #0x13 + movs r0, #0xa0 + lsls r0, r0, #0xd + adds r1, r1, r0 + asrs r1, r1, #0x10 + movs r3, #0x90 + lsls r3, r3, #0xe + adds r2, r2, r3 +_080C642A: + asrs r2, r2, #0x10 + mov r0, sp + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r4, _080C6474 + ldr r2, [r4] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r0, _080C6478 + adds r1, r1, r0 + str r1, [r2, #8] + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + ldr r0, _080C647C + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _080C6466 + ldr r0, [r4] + ldr r0, [r0, #8] + movs r1, #1 + bl sub_08007EC0 +_080C6466: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6474: .4byte gUnknown_2039994 +_080C6478: .4byte gUnknown_20205AC +_080C647C: .4byte gUnknown_3005AF0 + thumb_func_end sub_080C6260 + + thumb_func_start sub_080C6480 +sub_080C6480: @ 0x080C6480 + push {r4, r5, r6, lr} + sub sp, #0xc + movs r4, #0 +_080C6486: + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080C6486 + movs r4, #0 + movs r6, #0 + ldr r5, _080C64D0 +_080C64A4: + ldr r0, _080C64D4 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r4, r0 + bne _080C64DC + lsls r1, r4, #4 + adds r3, r1, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _080C64D8 + str r0, [sp] + str r6, [sp, #4] + adds r1, r1, r5 + ldr r0, [r1] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #4 + bl sub_08199AFC + b _080C64FA + .align 2, 0 +_080C64D0: .4byte gUnknown_854B174 +_080C64D4: .4byte gUnknown_2039994 +_080C64D8: .4byte gUnknown_854AF72 +_080C64DC: + lsls r1, r4, #4 + adds r3, r1, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _080C654C + str r0, [sp] + str r6, [sp, #4] + adds r1, r1, r5 + ldr r0, [r1] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #4 + bl sub_08199AFC +_080C64FA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080C64A4 + ldr r0, _080C6550 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r1, _080C6554 + ldr r0, _080C6558 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + lsls r0, r0, #4 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #4 + movs r3, #1 + bl sub_08199AFC + movs r4, #0 +_080C652C: + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080C652C + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C654C: .4byte gUnknown_854AF6F +_080C6550: .4byte gUnknown_854AF6C +_080C6554: .4byte gUnknown_854B174 +_080C6558: .4byte gUnknown_2039994 + thumb_func_end sub_080C6480 + + thumb_func_start sub_080C655C +sub_080C655C: @ 0x080C655C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C6578 + ldr r0, _080C6574 + ldr r4, [r0] + ldrb r5, [r4, #0x10] + adds r0, r5, #6 + b _080C6580 + .align 2, 0 +_080C6574: .4byte gUnknown_2039994 +_080C6578: + ldr r0, _080C6660 + ldr r4, [r0] + ldrb r5, [r4, #0x10] + adds r0, r5, #1 +_080C6580: + movs r1, #7 + bl __modsi3 + strb r0, [r4, #0x10] + lsls r0, r5, #4 + adds r3, r0, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r6, _080C6664 + str r6, [sp] + movs r1, #0 + mov r8, r1 + str r1, [sp, #4] + ldr r4, _080C6668 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #4 + bl sub_08199AFC + ldr r5, _080C6660 + ldr r1, [r5] + ldrb r3, [r1, #0x10] + lsls r3, r3, #4 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #3 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + ldrb r0, [r1, #0x10] + lsls r0, r0, #4 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #4 + bl sub_08199AFC + ldr r1, [r5] + ldr r2, [r1, #4] + ldrb r0, [r1, #0x10] + lsls r0, r0, #4 + adds r0, #8 + strh r0, [r2, #0x22] + ldr r0, [r1, #0xc] + ldrb r1, [r1, #0x10] + lsls r1, r1, #4 + adds r1, r1, r4 + ldrb r1, [r1, #0xc] + bl sub_08007EC0 + ldr r1, [r5] + ldr r2, [r1, #0xc] + ldrb r0, [r1, #0x10] + lsls r0, r0, #4 + adds r0, r0, r4 + ldrh r0, [r0, #8] + strh r0, [r2, #0x20] + ldr r2, [r1, #0xc] + ldrb r0, [r1, #0x10] + lsls r0, r0, #4 + adds r0, r0, r4 + ldrh r0, [r0, #0xa] + strh r0, [r2, #0x22] + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + subs r6, #3 + str r6, [sp] + mov r1, r8 + str r1, [sp, #4] + ldr r0, [r5] + ldrb r0, [r0, #0x10] + lsls r0, r0, #4 + adds r4, #4 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r2, #4 + movs r3, #1 + bl sub_08199AFC + movs r4, #0 +_080C6636: + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080C6636 + movs r0, #0 + bl sub_08002248 + movs r0, #0x6c + bl sub_080A306C + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C6660: .4byte gUnknown_2039994 +_080C6664: .4byte gUnknown_854AF6F +_080C6668: .4byte gUnknown_854B174 + thumb_func_end sub_080C655C + + thumb_func_start sub_080C666C +sub_080C666C: @ 0x080C666C + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, [sp, #0x1c] + lsls r2, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r4, r3, #0x10 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r2, #0 + bne _080C6686 + movs r3, #0 +_080C6686: + movs r0, #0xf + movs r1, #0xe + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp, #0x20] + str r0, [sp, #8] + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080C6738 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080C666C + + thumb_func_start sub_080C66A4 +sub_080C66A4: @ 0x080C66A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r6, #0 +_080C66BC: + movs r3, #0 + ldrb r0, [r4] + adds r1, r0, #0 + adds r2, r0, #0 + cmp r1, #0xff + beq _080C672A +_080C66C8: + mov r0, sp + adds r0, r0, r3 + adds r0, #8 + strb r2, [r0] + adds r4, #1 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bhi _080C6704 + ldrb r0, [r4] + adds r1, r0, #0 + adds r2, r0, #0 + cmp r1, #0xff + bne _080C66C8 + cmp r3, #0 + beq _080C672A + movs r6, #1 + cmp r3, #3 + bhi _080C6704 + movs r2, #0 +_080C66F2: + adds r0, r3, #0 + adds r1, r0, #1 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + add r0, sp + adds r0, #8 + strb r2, [r0] + cmp r3, #3 + bls _080C66F2 +_080C6704: + mov r1, sp + adds r1, r1, r3 + adds r1, #8 + movs r0, #0xff + strb r0, [r1] + str r7, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + add r0, sp, #8 + adds r1, r5, #0 + mov r2, r8 + movs r3, #0x80 + bl sub_080C666C + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r5, r0 + cmp r6, #0 + beq _080C66BC +_080C672A: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C66A4 + + thumb_func_start sub_080C6738 +sub_080C6738: @ 0x080C6738 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + str r0, [sp, #0x20] + str r1, [sp, #0x24] + adds r6, r3, #0 + ldr r0, [sp, #0x4c] + mov sb, r0 + ldr r1, [sp, #0x50] + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x28] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r2, sb + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r0, #0 + movs r1, #0 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + bl sub_08008EB8 + lsls r0, r0, #0x18 + ldr r2, _080C6824 + ldr r1, [sp, #0x18] + ands r1, r2 + orrs r1, r0 + str r1, [sp, #0x18] + ldr r1, _080C6828 + add r2, sp, #0x18 + mov r8, r2 + ldr r0, [r2, #4] + ands r0, r1 + movs r1, #2 + orrs r0, r1 + str r0, [r2, #4] + ldr r5, [sp, #0x18] + lsrs r5, r5, #0x18 + lsls r5, r5, #5 + mov r0, r8 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r6, #4 + orrs r1, r6 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08003B18 + adds r0, r4, #0 + movs r1, #7 + bl sub_0800401C + adds r7, r0, #0 + mov r0, r8 + ldrb r0, [r0, #3] + lsls r0, r0, #5 + mov r8, r0 + add r8, r7 + add r0, sp, #0x14 + movs r1, #0 + strb r6, [r0] + mov r2, sb + strb r2, [r0, #1] + mov r2, sl + strb r2, [r0, #2] + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + str r0, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199B84 + lsrs r5, 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_08003444 + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6824: .4byte 0x00FFFFFF +_080C6828: .4byte 0xFFFFFF00 + thumb_func_end sub_080C6738 + + thumb_func_start sub_080C682C +sub_080C682C: @ 0x080C682C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + movs r5, #0 +_080C6836: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0xb + bl sub_080D15D0 + cmp r0, #0 + beq _080C684C + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080C684C: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1d + bls _080C6836 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080C682C + + thumb_func_start sub_080C6860 +sub_080C6860: @ 0x080C6860 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 +_080C6868: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + movs r2, #0xb + bl sub_080D15D0 + cmp r0, #0 + bne _080C687E + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + b _080C688C +_080C687E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1d + bls _080C6868 + movs r0, #1 + rsbs r0, r0, #0 +_080C688C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C6860 + + thumb_func_start sub_080C6894 +sub_080C6894: @ 0x080C6894 + push {r4, r5, r6, lr} + movs r5, #0 + movs r6, #0 +_080C689A: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080C68D8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080C68C2 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _080C68C2 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C68C2: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080C689A + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080C68D8: .4byte gUnknown_2024190 + thumb_func_end sub_080C6894 + + thumb_func_start sub_080C68DC +sub_080C68DC: @ 0x080C68DC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + movs r5, #0 + movs r6, #0 + lsrs r7, r0, #0x18 +_080C68E6: + cmp r5, r7 + beq _080C691E + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080C6934 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080C691E + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _080C691E + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080C691E + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080C691E: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080C68E6 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080C6934: .4byte gUnknown_2024190 + thumb_func_end sub_080C68DC + + thumb_func_start sub_080C6938 +sub_080C6938: @ 0x080C6938 + push {lr} + ldr r0, _080C694C + ldrb r0, [r0] + bl sub_080C68DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080C694C: .4byte gUnknown_2037280 + thumb_func_end sub_080C6938 + + thumb_func_start sub_080C6950 +sub_080C6950: @ 0x080C6950 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0 +_080C6956: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _080C6984 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080C696E + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080C696E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #5 + bls _080C6956 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080C6984: .4byte gUnknown_2024190 + thumb_func_end sub_080C6950 + + thumb_func_start sub_080C6988 +sub_080C6988: @ 0x080C6988 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r2, #0x10 + lsrs r4, r4, #0x10 + bl sub_080088B8 + adds r1, r0, #0 + adds r5, r5, r4 + cmp r1, r5 + bhs _080C69A6 + movs r0, #0 +_080C699E: + strb r0, [r1] + adds r1, #1 + cmp r1, r5 + blo _080C699E +_080C69A6: + movs r0, #0xff + strb r0, [r1] + adds r0, r1, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C6988 + + thumb_func_start sub_080C69B4 +sub_080C69B4: @ 0x080C69B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r0 + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x2c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r0, sb + lsls r0, r0, #0x11 + mov sb, r0 + lsrs r2, r2, #0xb + adds r2, r2, r1 + lsls r2, r2, #1 + adds r6, r6, r2 + adds r0, r4, #0 + muls r0, r3, r0 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r7, r7, r0 + movs r4, #0 + cmp r4, r8 + bhs _080C6A24 + mov r0, sb + lsrs r0, r0, #1 + mov sb, r0 + lsls r5, r3, #1 +_080C6A0A: + adds r0, r7, #0 + adds r1, r6, #0 + mov r3, sb + lsrs r2, r3, #0x10 + bl CpuSet + adds r6, #0x40 + adds r7, r7, r5 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r8 + blo _080C6A0A +_080C6A24: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080C69B4 + + thumb_func_start sub_080C6A30 +sub_080C6A30: @ 0x080C6A30 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r4, r0, #0 + ldr r0, [sp, #0x28] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsrs r2, r2, #0xb + adds r2, r2, r1 + lsls r2, r2, #1 + adds r4, r4, r2 + lsls r3, r3, #0x11 + lsrs r0, r3, #0x10 + str r0, [sp, #4] + movs r0, #0 + cmp r0, sl + bhs _080C6ADA + movs r6, #0x80 + lsls r6, r6, #5 + mov r5, sp + ldr r7, _080C6A9C + lsrs r3, r3, #0x11 + mov sb, r3 + mov r1, sb + movs r2, #0x81 + lsls r2, r2, #0x18 + orrs r1, r2 + mov sb, r1 +_080C6A76: + adds r3, r4, #0 + ldr r2, [sp, #4] + movs r1, #0x40 + adds r1, r1, r4 + mov r8, r1 + adds r0, #1 + mov ip, r0 + cmp r2, r6 + bhi _080C6AA0 + movs r0, #0 + strh r0, [r5] + mov r2, sp + str r2, [r7] + str r4, [r7, #4] + mov r0, sb + str r0, [r7, #8] + ldr r0, [r7, #8] + b _080C6ACE + .align 2, 0 +_080C6A9C: .4byte 0x040000D4 +_080C6AA0: + movs r4, #0 + strh r4, [r5] + ldr r1, _080C6AEC + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + ldr r0, _080C6AF0 + str r0, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r6 + subs r2, r2, r6 + cmp r2, r6 + bhi _080C6AA0 + strh r4, [r5] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + lsrs r0, r2, #1 + movs r2, #0x81 + lsls r2, r2, #0x18 + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] +_080C6ACE: + mov r4, r8 + mov r1, ip + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, sl + blo _080C6A76 +_080C6ADA: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6AEC: .4byte 0x040000D4 +_080C6AF0: .4byte 0x81000800 + thumb_func_end sub_080C6A30 + + thumb_func_start sub_080C6AF4 +sub_080C6AF4: @ 0x080C6AF4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080C6B1C + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #4 + bls _080C6B10 + b _080C6DF6 +_080C6B10: + lsls r0, r0, #2 + ldr r1, _080C6B20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C6B1C: .4byte gUnknown_3005B60 +_080C6B20: .4byte _080C6B24 +_080C6B24: @ jump table + .4byte _080C6B38 @ case 0 + .4byte _080C6B98 @ case 1 + .4byte _080C6BAC @ case 2 + .4byte _080C6CF6 @ case 3 + .4byte _080C6DD0 @ case 4 +_080C6B38: + ldrb r0, [r5, #0xa] + adds r1, r5, #0 + adds r1, #0x26 + bl sub_080C6E88 + bl sub_08196F98 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _080C6B94 + movs r2, #0xa + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0xff + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldrh r0, [r5, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_08003528 + b _080C6BA4 + .align 2, 0 +_080C6B94: .4byte gUnknown_854B1E4 +_080C6B98: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C6BA4 + b _080C6DF6 +_080C6BA4: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _080C6DF6 +_080C6BAC: + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0xc] + movs r3, #0xc + ldrsh r1, [r5, r3] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C6C5C + cmp r1, r0 + bgt _080C6BCE + subs r0, #1 + cmp r1, r0 + beq _080C6BD4 + b _080C6C82 +_080C6BCE: + cmp r1, #4 + beq _080C6C5C + b _080C6C82 +_080C6BD4: + ldrh r3, [r5, #0xa] + strh r3, [r5, #0xe] + ldr r2, _080C6C54 + ldrh r1, [r2, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080C6BF2 + subs r0, r3, #1 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080C6BF2 + movs r0, #4 + strh r0, [r5, #0xe] +_080C6BF2: + ldrh r1, [r2, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C6C0E + ldrh r0, [r5, #0xe] + adds r0, #1 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _080C6C0E + movs r0, #0 + strh r0, [r5, #0xe] +_080C6C0E: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r5, #0xe] + movs r3, #0xe + ldrsh r1, [r5, r3] + cmp r0, r1 + bne _080C6C1E + b _080C6DF6 +_080C6C1E: + movs r4, #0 + strh r2, [r5, #0xa] + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _080C6C58 + movs r2, #0xa + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + b _080C6DF6 + .align 2, 0 +_080C6C54: .4byte gUnknown_3002360 +_080C6C58: .4byte gUnknown_854B1E4 +_080C6C5C: + ldrh r0, [r5, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08197060 + bl sub_080987E8 + bl sub_080988C4 + ldrh r0, [r5, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + adds r0, r4, #0 + bl sub_080A8964 + b _080C6DF6 +_080C6C82: + movs r3, #0xc + ldrsh r4, [r5, r3] + cmp r4, #0 + bne _080C6CB4 + bl sub_080C6950 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bne _080C6CB4 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _080C6CB0 + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r4, #3 + str r4, [sp, #0xc] + b _080C6DBE + .align 2, 0 +_080C6CB0: .4byte gUnknown_85CB55C +_080C6CB4: + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _080C6CE8 + bl sub_080C6950 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _080C6CE8 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _080C6CE4 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + movs r4, #3 + str r4, [sp, #0xc] + b _080C6DBE + .align 2, 0 +_080C6CE4: .4byte gUnknown_85CB534 +_080C6CE8: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + movs r0, #4 + strh r0, [r5, #8] + b _080C6DF6 +_080C6CF6: + ldr r0, _080C6D20 + ldrh r1, [r0, #0x2e] + movs r7, #3 + adds r4, r7, #0 + ands r4, r1 + cmp r4, #0 + beq _080C6D28 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _080C6D24 + movs r2, #0xa + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + b _080C6DB4 + .align 2, 0 +_080C6D20: .4byte gUnknown_3002360 +_080C6D24: .4byte gUnknown_854B1E4 +_080C6D28: + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _080C6D74 + ldrh r0, [r5, #0xa] + subs r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080C6D44 + movs r0, #4 + strh r0, [r5, #0xa] +_080C6D44: + movs r0, #1 + rsbs r0, r0, #0 + bl sub_081985E8 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _080C6D70 + movs r3, #0xa + ldrsh r0, [r5, r3] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + str r4, [sp] + b _080C6DB4 + .align 2, 0 +_080C6D70: .4byte gUnknown_854B1E4 +_080C6D74: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080C6DF6 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _080C6D8C + strh r6, [r5, #0xa] +_080C6D8C: + movs r0, #1 + bl sub_081985E8 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _080C6DCC + movs r2, #0xa + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + str r6, [sp] +_080C6DB4: + movs r4, #2 + str r4, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + str r7, [sp, #0xc] +_080C6DBE: + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + strh r4, [r5, #8] + b _080C6DF6 + .align 2, 0 +_080C6DCC: .4byte gUnknown_854B1E4 +_080C6DD0: + ldr r0, _080C6E00 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080C6DF6 + bl sub_0808569C + ldrb r0, [r5, #0xc] + bl sub_080C7610 + ldrh r0, [r5, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + adds r0, r4, #0 + bl sub_080A8964 +_080C6DF6: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C6E00: .4byte gUnknown_2037C74 + thumb_func_end sub_080C6AF4 + + thumb_func_start sub_080C6E04 +sub_080C6E04: @ 0x080C6E04 + push {lr} + ldr r0, _080C6E2C + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C6E30 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080C6E2C: .4byte sub_080C6AF4 +_080C6E30: .4byte gUnknown_3005B60 + thumb_func_end sub_080C6E04 + + thumb_func_start sub_080C6E34 +sub_080C6E34: @ 0x080C6E34 + push {r4, r5, lr} + ldr r0, _080C6E78 + ldr r5, [r0, #0xc] + movs r0, #0 + bl sub_080006F0 + ldr r4, _080C6E7C + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C6E80 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + ldr r2, _080C6E84 + ldrb r2, [r2] + strh r2, [r1, #0xa] + bl _call_via_r4 + adds r0, r5, #0 + bl sub_080006F0 + bl sub_080AE99C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C6E78: .4byte gUnknown_3002360 +_080C6E7C: .4byte sub_080C6AF4 +_080C6E80: .4byte gUnknown_3005B60 +_080C6E84: .4byte gUnknown_20399A0 + thumb_func_end sub_080C6E34 + + thumb_func_start sub_080C6E88 +sub_080C6E88: @ 0x080C6E88 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0xc + adds r6, r0, #0 + mov sl, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _080C6F08 + bl sub_08003250 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r5, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08196FF0 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x10 + mov sb, r0 + str r0, [sp] + movs r0, #5 + mov r8, r0 + str r0, [sp, #4] + ldr r0, _080C6F0C + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #2 + bl sub_08198850 + mov r0, sb + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + mov r0, sl + strh r5, [r0] + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C6F08: .4byte gUnknown_854B20C +_080C6F0C: .4byte gUnknown_854B1E4 + thumb_func_end sub_080C6E88 + + thumb_func_start sub_080C6F10 +sub_080C6F10: @ 0x080C6F10 + push {lr} + bl sub_080CA714 + ldr r1, _080C6F2C + strb r0, [r1] + ldr r1, _080C6F30 + ldr r0, _080C6F34 + str r0, [r1] + ldr r0, _080C6F38 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080C6F2C: .4byte gUnknown_20399A0 +_080C6F30: .4byte gUnknown_3005B0C +_080C6F34: .4byte sub_080C6E34 +_080C6F38: .4byte sub_08085A30 + thumb_func_end sub_080C6F10 + + thumb_func_start sub_080C6F3C +sub_080C6F3C: @ 0x080C6F3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r4, r3, #0 + ldr r2, _080C6FA0 + cmp r3, #1 + bhi _080C6F5E + movs r2, #1 + cmp r3, #1 + beq _080C6F62 +_080C6F5E: + cmp r4, #3 + bne _080C6FAC +_080C6F62: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + adds r1, r1, r0 + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + adds r6, r2, #0 + cmp r1, #0 + blt _080C6FF8 + cmp r1, r7 + bgt _080C6FF8 +_080C6F7A: + asrs r4, r0, #0x10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + add r0, r8 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + bne _080C6FA4 + asrs r0, r6, #0x10 + adds r0, r4, r0 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + blt _080C6FF8 + cmp r2, r7 + ble _080C6F7A + b _080C6FF8 + .align 2, 0 +_080C6FA0: .4byte 0x0000FFFF +_080C6FA4: + adds r0, r4, #0 + b _080C6FFC +_080C6FA8: + adds r0, r5, #0 + b _080C6FFC +_080C6FAC: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + adds r1, r1, r0 + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + adds r6, r2, #0 + cmp r1, #0 + blt _080C6FF8 + cmp r1, r7 + bgt _080C6FF8 +_080C6FC4: + asrs r5, r0, #0x10 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #4 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _080C6FE8 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A1B4 + cmp r0, #0 + beq _080C6FA8 +_080C6FE8: + asrs r0, r6, #0x10 + adds r0, r5, r0 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + blt _080C6FF8 + cmp r2, r7 + ble _080C6FC4 +_080C6FF8: + movs r0, #1 + rsbs r0, r0, #0 +_080C6FFC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C6F3C + + thumb_func_start sub_080C7008 +sub_080C7008: @ 0x080C7008 + push {r4, r5, r6, lr} + movs r0, #0 + bl sub_080D15B8 + movs r5, #0 +_080C7012: + movs r4, #0 + lsls r6, r5, #0x18 +_080C7016: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r6, #0x18 + bl sub_080D18B8 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1d + bls _080C7016 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xd + bls _080C7012 + movs r5, #0 +_080C7036: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + ldr r1, _080C707C + bl sub_080088B8 + adds r4, r5, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + cmp r5, #0xd + bls _080C7036 + movs r5, #0 +_080C705A: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + ands r1, r5 + bl sub_080D19C0 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xd + bls _080C705A + bl sub_080D1CCC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C707C: .4byte gUnknown_85CB584 + thumb_func_end sub_080C7008 + + thumb_func_start sub_080C7080 +sub_080C7080: @ 0x080C7080 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x20 + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r6, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r7, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + ldr r0, _080C7114 + str r0, [sp, #0x18] + ldr r1, _080C7118 + add r4, sp, #0x18 + ldr r0, [r4, #4] + ands r0, r1 + orrs r0, r7 + str r0, [r4, #4] + mov r1, sp + ldr r0, _080C711C + str r0, [sp] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r1, #4] + strh r6, [r1, #6] + ldr r0, _080C7120 + str r0, [sp, #8] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1, #0xc] + adds r0, r6, #1 + strh r0, [r1, #0xe] + add r0, sp, #0x10 + movs r1, #0 + movs r2, #8 + bl memset + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _080C70DE + adds r0, r4, #0 + bl sub_0800845C +_080C70DE: + mov r0, sp + bl sub_08008254 + ldr r0, _080C7124 + str r5, [r0] + movs r1, #0x90 + lsls r1, r1, #2 + adds r0, r5, r1 + strh r6, [r0] + adds r1, #2 + adds r0, r5, r1 + strh r7, [r0] + adds r1, #4 + adds r0, r5, r1 + mov r1, r8 + strb r1, [r0] + movs r1, #0x8f + lsls r1, r1, #2 + adds r0, r5, r1 + ldr r1, [sp, #0x38] + str r1, [r0] + add sp, #0x20 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C7114: .4byte gUnknown_854B25C +_080C7118: .4byte 0xFFFF0000 +_080C711C: .4byte gUnknown_854B27C +_080C7120: .4byte gUnknown_854BA7C +_080C7124: .4byte gUnknown_20399A4 + thumb_func_end sub_080C7080 + + thumb_func_start sub_080C7128 +sub_080C7128: @ 0x080C7128 + push {r4, r5, lr} + ldr r5, _080C7168 + ldr r1, [r5] + movs r2, #0x8f + lsls r2, r2, #2 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, #0 + beq _080C7144 + adds r2, #6 + adds r0, r1, r2 + ldrh r0, [r0] + bl sub_08008564 +_080C7144: + ldr r0, [r5] + movs r4, #0x90 + lsls r4, r4, #2 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_08008280 + ldr r0, [r5] + adds r0, r0, r4 + ldrh r0, [r0] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008280 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C7168: .4byte gUnknown_20399A4 + thumb_func_end sub_080C7128 + + thumb_func_start sub_080C716C +sub_080C716C: @ 0x080C716C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C71F0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C716C + + thumb_func_start sub_080C717C +sub_080C717C: @ 0x080C717C + push {lr} + bl sub_080C73D0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C717C + + thumb_func_start sub_080C7188 +sub_080C7188: @ 0x080C7188 + push {lr} + ldr r0, _080C71A0 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080C71A4 + movs r0, #5 + bl sub_080A306C + movs r0, #0xc9 + b _080C71EC + .align 2, 0 +_080C71A0: .4byte gUnknown_3002360 +_080C71A4: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080C71C4 + movs r0, #5 + bl sub_080A306C + ldr r0, _080C71C0 + ldr r0, [r0] + movs r1, #0x91 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + b _080C71EC + .align 2, 0 +_080C71C0: .4byte gUnknown_20399A4 +_080C71C4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080C71D8 + movs r0, #5 + bl sub_080A306C + bl sub_080C7470 + b _080C71EA +_080C71D8: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080C71EA + movs r0, #5 + bl sub_080A306C + bl sub_080C743C +_080C71EA: + movs r0, #0xc8 +_080C71EC: + pop {r1} + bx r1 + thumb_func_end sub_080C7188 + + thumb_func_start sub_080C71F0 +sub_080C71F0: @ 0x080C71F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x3c + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0 + movs r1, #0 + str r0, [sp, #0x34] + str r1, [sp, #0x38] + movs r1, #0xc0 + lsls r1, r1, #0x18 + ldr r0, [sp, #0x34] + orrs r0, r1 + str r0, [sp, #0x34] + ldr r1, _080C73A4 + add r4, sp, #0x34 + ldr r0, [r4, #4] + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r4, #4] + 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, _080C73A8 + str r0, [sp, #0x24] + str r1, [sp, #0x28] + ldr r0, _080C73AC + str r0, [sp, #0x2c] + ldr r0, _080C73B0 + str r0, [sp, #0x30] + add r0, sp, #4 + mov r1, r8 + movs r2, #0x18 + bl memcpy + ldr r1, _080C73B4 + mov r0, r8 + movs r2, #4 + bl memcpy + ldr r6, _080C73B8 + ldr r0, [r6] + movs r1, #0x91 + lsls r1, r1, #2 + adds r0, r0, r1 + strb r5, [r0] + add r2, sp, #4 + ldr r1, [r6] + movs r5, #0x90 + lsls r5, r5, #2 + adds r0, r1, r5 + ldrh r0, [r0] + strh r0, [r2] + ldr r3, _080C73BC + adds r1, r1, r3 + ldrh r0, [r1] + strh r0, [r2, #2] + adds r0, r2, #0 + movs r1, #0xa0 + movs r2, #0x60 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, [r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080C73C0 + adds r0, r0, r1 + str r0, [r3] + ldrb r2, [r4, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #3] + add r1, sp, #4 + adds r3, r3, r5 + ldrh r0, [r3] + adds r0, #1 + strh r0, [r1] + ldr r0, _080C73C4 + str r0, [sp, #0xc] + movs r4, #0 + mov r7, r8 +_080C72BC: + ldr r0, [r6] + ldr r1, _080C73C8 + adds r0, r0, r1 + ldrb r3, [r0] + add r0, sp, #4 + movs r1, #0x7c + movs r2, #0x50 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r2, [r6] + lsls r3, r4, #2 + adds r2, #4 + adds r2, r2, r3 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080C73C0 + adds r1, r0, r1 + str r1, [r2] + movs r5, #0 + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080C72F6 + movs r0, #0xc4 + strh r0, [r1, #0x20] + movs r5, #2 +_080C72F6: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _080C731A + ldr r1, [r6] + adds r1, #4 + adds r1, r1, r3 + ldr r2, [r1] + movs r0, #0x70 + strh r0, [r2, #0x22] + ldr r2, [r1] + ldrb r1, [r2, #3] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #3] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080C731A: + ldr r0, [r6] + adds r0, #4 + adds r0, r0, r3 + ldr r0, [r0] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080C72BC + movs r4, #0 + ldr r5, _080C73B8 +_080C7338: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #0x13 + movs r3, #0xf8 + lsls r3, r3, #0xf + adds r0, r0, r3 + lsrs r0, r0, #0x10 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [r5] + ldr r3, _080C73C8 + adds r1, r1, r3 + ldrb r1, [r1] + str r1, [sp] + movs r1, #0x58 + movs r3, #0 + bl sub_080CCB64 + adds r2, r0, #0 + ldr r0, [r5] + lsls r1, r4, #2 + adds r0, #0x20 + adds r0, r0, r1 + str r2, [r0] + cmp r2, #0 + beq _080C7380 + movs r1, #1 + cmp r4, #0 + bne _080C7378 + movs r3, #1 + rsbs r3, r3, #0 + adds r1, r3, #0 +_080C7378: + strh r1, [r2, #0x2e] + ldr r1, [r0] + ldr r0, _080C73CC + str r0, [r1, #0x1c] +_080C7380: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _080C7338 + bl sub_080C74A0 + adds r0, r7, #0 + movs r1, #5 + movs r2, #3 + bl sub_080C7528 + add sp, #0x3c + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C73A4: .4byte 0xFFFF0FFF +_080C73A8: .4byte gUnknown_82BF304 +_080C73AC: .4byte gUnknown_82BF310 +_080C73B0: .4byte sub_08007140 +_080C73B4: .4byte gUnknown_854B258 +_080C73B8: .4byte gUnknown_20399A4 +_080C73BC: .4byte 0x00000242 +_080C73C0: .4byte gUnknown_20205AC +_080C73C4: .4byte gUnknown_854B234 +_080C73C8: .4byte 0x00000246 +_080C73CC: .4byte sub_080C7590 + thumb_func_end sub_080C71F0 + + thumb_func_start sub_080C73D0 +sub_080C73D0: @ 0x080C73D0 + push {r4, r5, r6, lr} + ldr r4, _080C7438 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, #0 + beq _080C73E6 + bl sub_08006E00 + ldr r1, [r4] + movs r0, #0 + str r0, [r1] +_080C73E6: + movs r5, #0 + adds r6, r4, #0 +_080C73EA: + ldr r0, [r6] + lsls r4, r5, #2 + adds r0, #4 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080C7406 + bl sub_08006E00 + ldr r0, [r6] + adds r0, #4 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080C7406: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _080C73EA + movs r5, #0 +_080C7412: + ldr r0, _080C7438 + ldr r0, [r0] + lsls r1, r5, #2 + adds r0, #0x20 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _080C7426 + bl sub_08006E00 +_080C7426: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _080C7412 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C7438: .4byte gUnknown_20399A4 + thumb_func_end sub_080C73D0 + + thumb_func_start sub_080C743C +sub_080C743C: @ 0x080C743C + push {lr} + ldr r2, _080C746C + ldr r1, [r2] + movs r0, #0x91 + lsls r0, r0, #2 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + bls _080C7462 + ldr r0, [r2] + movs r1, #0x91 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080C7462: + bl sub_080C74A0 + pop {r0} + bx r0 + .align 2, 0 +_080C746C: .4byte gUnknown_20399A4 + thumb_func_end sub_080C743C + + thumb_func_start sub_080C7470 +sub_080C7470: @ 0x080C7470 + push {lr} + ldr r0, _080C7488 + ldr r2, [r0] + movs r1, #0x91 + lsls r1, r1, #2 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C748C + subs r1, r0, #1 + b _080C748E + .align 2, 0 +_080C7488: .4byte gUnknown_20399A4 +_080C748C: + movs r1, #0xd +_080C748E: + movs r3, #0x91 + lsls r3, r3, #2 + adds r0, r2, r3 + strb r1, [r0] + bl sub_080C74A0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C7470 + + thumb_func_start sub_080C74A0 +sub_080C74A0: @ 0x080C74A0 + push {r4, r5, r6, r7, lr} + ldr r6, _080C7524 + ldr r0, [r6] + movs r5, #0x91 + lsls r5, r5, #2 + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080C682C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [r6] + movs r1, #0x8a + lsls r1, r1, #2 + adds r4, r0, r1 + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + adds r1, r0, #0 + ldr r0, [r6] + movs r2, #0x8c + lsls r2, r2, #2 + adds r0, r0, r2 + cmp r1, r0 + bhs _080C74EC + movs r4, #0 + adds r3, r6, #0 +_080C74E0: + strb r4, [r1] + adds r1, #1 + ldr r0, [r3] + adds r0, r0, r2 + cmp r1, r0 + blo _080C74E0 +_080C74EC: + movs r0, #0xff + strb r0, [r1] + ldr r5, _080C7524 + ldr r0, [r5] + movs r4, #0x8a + lsls r4, r4, #2 + adds r0, r0, r4 + movs r1, #0 + movs r2, #1 + bl sub_080C7528 + ldr r0, [r5] + adds r0, r0, r4 + adds r1, r7, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #3 + movs r2, #3 + bl sub_080C7528 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C7524: .4byte gUnknown_20399A4 + thumb_func_end sub_080C74A0 + + thumb_func_start sub_080C7528 +sub_080C7528: @ 0x080C7528 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + mov r8, r0 + adds r5, r1, #0 + adds r4, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r6, _080C7588 + ldr r0, [r6] + movs r1, #0x90 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_08008338 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xb + lsls r4, r4, #8 + ldr r0, _080C758C + adds r4, r4, r0 + adds r1, r1, r4 + lsls r5, r5, #5 + adds r1, r1, r5 + movs r2, #0x80 + lsls r2, r2, #1 + movs r0, #0xf + str r0, [sp] + movs r0, #0xe + str r0, [sp, #4] + ldr r0, [r6] + adds r0, #0x28 + str r0, [sp, #8] + mov r0, r8 + movs r3, #4 + bl sub_080C6738 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080C7588: .4byte gUnknown_20399A4 +_080C758C: .4byte 0x06010000 + thumb_func_end sub_080C7528 + + thumb_func_start sub_080C7590 +sub_080C7590: @ 0x080C7590 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + movs r2, #0 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _080C75C0 + strh r2, [r1, #0x30] + ldrh r0, [r1, #0x2e] + ldrh r3, [r1, #0x24] + adds r0, r0, r3 + strh r0, [r1, #0x24] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080C75C0 + strh r2, [r1, #0x32] + strh r2, [r1, #0x24] +_080C75C0: + pop {r0} + bx r0 + thumb_func_end sub_080C7590 + + thumb_func_start sub_080C75C4 +sub_080C75C4: @ 0x080C75C4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080D2344 + bl sub_080A1288 + ldr r0, _080C75EC + ldr r0, [r0] + movs r1, #0xb3 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080C75EC: .4byte gUnknown_20399A8 + thumb_func_end sub_080C75C4 + + thumb_func_start sub_080C75F0 +sub_080C75F0: @ 0x080C75F0 + push {lr} + bl sub_080A89D4 + bl sub_08199668 + bl sub_080C989C + bl sub_080CA278 + bl sub_080066D8 + bl sub_08006724 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C75F0 + + thumb_func_start sub_080C7610 +sub_080C7610: @ 0x080C7610 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A8818 + ldr r0, _080C7634 + strb r5, [r0] + ldr r4, _080C7638 + ldr r0, _080C763C + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _080C7644 + ldr r0, _080C7640 + bl sub_08000540 + b _080C7670 + .align 2, 0 +_080C7634: .4byte gUnknown_20399AD +_080C7638: .4byte gUnknown_20399A8 +_080C763C: .4byte 0x000062C4 +_080C7640: .4byte sub_080C6F10 +_080C7644: + movs r2, #0 + strb r5, [r0, #1] + ldr r0, [r4] + strb r2, [r0, #3] + ldr r0, _080C7678 + movs r1, #0 + strh r2, [r0] + ldr r0, [r4] + strb r1, [r0] + ldr r0, _080C767C + movs r1, #3 + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1, #4] + bl sub_080D15AC + ldr r1, _080C7680 + strb r0, [r1] + ldr r0, _080C7684 + bl sub_08000540 +_080C7670: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C7678: .4byte gUnknown_20399B2 +_080C767C: .4byte sub_080C7844 +_080C7680: .4byte gUnknown_20399B0 +_080C7684: .4byte sub_080C75F0 + thumb_func_end sub_080C7610 + + thumb_func_start sub_080C7688 +sub_080C7688: @ 0x080C7688 + push {r4, lr} + bl sub_080A8818 + ldr r4, _080C76A8 + ldr r0, _080C76AC + bl sub_08000BC8 + adds r1, r0, #0 + str r1, [r4] + cmp r1, #0 + bne _080C76B4 + ldr r0, _080C76B0 + bl sub_08000540 + b _080C76D8 + .align 2, 0 +_080C76A8: .4byte gUnknown_20399A8 +_080C76AC: .4byte 0x000062C4 +_080C76B0: .4byte sub_080C6F10 +_080C76B4: + ldr r0, _080C76E0 + ldrb r0, [r0] + movs r2, #0 + strb r0, [r1, #1] + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #3] + ldr r0, [r4] + strb r2, [r0] + ldr r0, _080C76E4 + movs r1, #3 + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1, #4] + ldr r0, _080C76E8 + bl sub_08000540 +_080C76D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C76E0: .4byte gUnknown_20399AD +_080C76E4: .4byte sub_080C7844 +_080C76E8: .4byte sub_080C75F0 + thumb_func_end sub_080C7688 + + thumb_func_start sub_080C76EC +sub_080C76EC: @ 0x080C76EC + push {lr} + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C76EC + + thumb_func_start sub_080C7734 +sub_080C7734: @ 0x080C7734 + push {r4, lr} + sub sp, #4 + bl sub_080A133C + bl sub_0800668C + bl sub_080082F8 + bl sub_08008424 + bl sub_08000C48 + ldr r1, _080C77A4 + movs r2, #0xa0 + lsls r2, r2, #2 + adds r0, r2, #0 + strh r0, [r1] + ldr r4, _080C77A8 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #8 + adds r1, #0x10 + movs r2, #8 + bl sub_080D2330 + ldr r1, _080C77AC + movs r0, #0x14 + strh r0, [r1] + bl sub_08199640 + movs r0, #3 + bl sub_080D1E3C + ldr r2, _080C77B0 + movs r0, #4 + str r0, [sp] + movs r0, #0 + movs r1, #1 + movs r3, #8 + bl sub_080D1EE4 + movs r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_080D2010 + ldr r0, [r4] + ldr r1, _080C77B4 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C77A4: .4byte gUnknown_2021AB6 +_080C77A8: .4byte gUnknown_20399A8 +_080C77AC: .4byte gUnknown_3002350 +_080C77B0: .4byte gUnknown_854BEBC +_080C77B4: .4byte 0x000002C7 + thumb_func_end sub_080C7734 + + thumb_func_start sub_080C77B8 +sub_080C77B8: @ 0x080C77B8 + push {lr} + bl sub_080CD488 + ldr r2, _080C77DC + movs r1, #0 + ldr r0, _080C77E0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _080C77CE + movs r1, #1 +_080C77CE: + strb r1, [r2] + ldr r1, _080C77E4 + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080C77DC: .4byte gUnknown_20399AC +_080C77E0: .4byte gUnknown_20399A8 +_080C77E4: .4byte gUnknown_20399AE + thumb_func_end sub_080C77B8 + + thumb_func_start sub_080C77E8 +sub_080C77E8: @ 0x080C77E8 + push {lr} + ldr r0, _080C7814 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080C7806 + movs r1, #0xfc + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080C7818 + movs r0, #0x52 + bl sub_08001144 +_080C7806: + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080C7814: .4byte gUnknown_20399A8 +_080C7818: .4byte 0x00000B07 + thumb_func_end sub_080C77E8 + + thumb_func_start sub_080C781C +sub_080C781C: @ 0x080C781C + push {r4, lr} + ldr r4, _080C783C + ldr r1, _080C7840 + ldr r3, [r1] + ldrb r2, [r3, #4] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r4 + str r0, [r1] + movs r0, #0 + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C783C: .4byte gUnknown_3005B60 +_080C7840: .4byte gUnknown_20399A8 + thumb_func_end sub_080C781C + + thumb_func_start sub_080C7844 +sub_080C7844: @ 0x080C7844 + push {lr} + sub sp, #4 + ldr r0, _080C7860 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xa + bls _080C7854 + b _080C7A3E +_080C7854: + lsls r0, r0, #2 + ldr r1, _080C7864 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C7860: .4byte gUnknown_20399A8 +_080C7864: .4byte _080C7868 +_080C7868: @ jump table + .4byte _080C7894 @ case 0 + .4byte _080C78EC @ case 1 + .4byte _080C78FA @ case 2 + .4byte _080C7928 @ case 3 + .4byte _080C7944 @ case 4 + .4byte _080C7962 @ case 5 + .4byte _080C7982 @ case 6 + .4byte _080C7988 @ case 7 + .4byte _080C798E @ case 8 + .4byte _080C799C @ case 9 + .4byte _080C79E6 @ case 10 +_080C7894: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + bl sub_080C7734 + ldr r0, _080C78C4 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + beq _080C78E2 + ldr r0, _080C78C8 + ldrb r0, [r0] + cmp r0, #1 + beq _080C78D2 + cmp r0, #1 + bgt _080C78CC + cmp r0, #0 + beq _080C78D8 + b _080C78E2 + .align 2, 0 +_080C78C4: .4byte gUnknown_20399A8 +_080C78C8: .4byte gUnknown_20399AF +_080C78CC: + cmp r0, #2 + beq _080C78DE + b _080C78E2 +_080C78D2: + bl sub_080CE00C + b _080C78E2 +_080C78D8: + bl sub_080CE160 + b _080C78E2 +_080C78DE: + bl sub_080C97E0 +_080C78E2: + bl sub_080C98B8 + bl sub_080C993C + b _080C7A34 +_080C78EC: + bl sub_080C9918 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C78F8 + b _080C7A34 +_080C78F8: + b _080C796C +_080C78FA: + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_08003774 + movs r0, #0 + str r0, [sp] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _080C7924 + mov r0, sp + bl CpuSet + movs r0, #1 + movs r1, #0xb + movs r2, #0xe0 + bl sub_080981B4 + b _080C7A34 + .align 2, 0 +_080C7924: .4byte 0x05000080 +_080C7928: + bl sub_080C76EC + ldr r0, _080C7940 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + beq _080C7938 + b _080C7A34 +_080C7938: + bl sub_080C77B8 + b _080C7A34 + .align 2, 0 +_080C7940: .4byte gUnknown_20399A8 +_080C7944: + bl sub_080CA778 + ldr r0, _080C7958 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + bne _080C795C + bl sub_080CCBE8 + b _080C7A34 + .align 2, 0 +_080C7958: .4byte gUnknown_20399A8 +_080C795C: + bl sub_080CCC68 + b _080C7A34 +_080C7962: + bl sub_080CFA04 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7978 +_080C796C: + ldr r0, _080C7974 + bl sub_080C781C + b _080C7A3E + .align 2, 0 +_080C7974: .4byte sub_080C96EC +_080C7978: + bl sub_080C9860 + bl sub_080CA480 + b _080C7A34 +_080C7982: + bl sub_080C994C + b _080C7A34 +_080C7988: + bl sub_080C9F68 + b _080C7A34 +_080C798E: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080CBBA0 + b _080C7A34 +_080C799C: + bl sub_080CBBD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7A3E + ldr r0, _080C79CC + ldr r2, [r0] + ldrb r0, [r2, #1] + cmp r0, #3 + beq _080C79DC + ldr r1, _080C79D0 + adds r0, r2, r1 + movs r1, #0xd + strh r1, [r0] + ldr r1, _080C79D4 + adds r2, r2, r1 + ldr r1, _080C79D8 + strh r1, [r2] + bl sub_0811FE2C + bl sub_0811FFB0 + b _080C7A34 + .align 2, 0 +_080C79CC: .4byte gUnknown_20399A8 +_080C79D0: .4byte 0x00000DA4 +_080C79D4: .4byte 0x00000DA6 +_080C79D8: .4byte 0x0000DACE +_080C79DC: + bl sub_080D0500 + bl sub_080CA720 + b _080C7A34 +_080C79E6: + bl sub_080C77E8 + ldr r0, _080C7A08 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + bne _080C7A10 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _080C7A0C + bl sub_080C781C + b _080C7A22 + .align 2, 0 +_080C7A08: .4byte gUnknown_20399A8 +_080C7A0C: .4byte sub_080C7A48 +_080C7A10: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _080C7A2C + bl sub_080C781C +_080C7A22: + ldr r0, _080C7A30 + bl sub_080006F0 + b _080C7A3E + .align 2, 0 +_080C7A2C: .4byte sub_080C7A94 +_080C7A30: .4byte sub_080C75C4 +_080C7A34: + ldr r0, _080C7A44 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C7A3E: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080C7A44: .4byte gUnknown_20399A8 + thumb_func_end sub_080C7844 + + thumb_func_start sub_080C7A48 +sub_080C7A48: @ 0x080C7A48 + push {r4, lr} + ldr r4, _080C7A5C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C7A60 + cmp r0, #1 + beq _080C7A7A + b _080C7A8A + .align 2, 0 +_080C7A5C: .4byte gUnknown_20399A8 +_080C7A60: + movs r0, #2 + bl sub_080A306C + movs r0, #0x14 + movs r1, #0 + movs r2, #1 + bl sub_080FA43C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C7A8A +_080C7A7A: + bl sub_080FA48C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7A8A + ldr r0, _080C7A90 + bl sub_080C781C +_080C7A8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C7A90: .4byte sub_080C7B48 + thumb_func_end sub_080C7A48 + + thumb_func_start sub_080C7A94 +sub_080C7A94: @ 0x080C7A94 + push {r4, lr} + sub sp, #4 + ldr r4, _080C7AAC + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #1 + beq _080C7ACC + cmp r0, #1 + bgt _080C7AB0 + cmp r0, #0 + beq _080C7ABA + b _080C7B3C + .align 2, 0 +_080C7AAC: .4byte gUnknown_20399A8 +_080C7AB0: + cmp r0, #2 + beq _080C7B04 + cmp r0, #3 + beq _080C7B2C + b _080C7B3C +_080C7ABA: + movs r1, #1 + rsbs r1, r1, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _080C7B1E +_080C7ACC: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7B3C + ldr r0, _080C7AF0 + ldrb r0, [r0] + cmp r0, #2 + bne _080C7AF8 + ldr r0, _080C7AF4 + ldrh r0, [r0] + cmp r0, #0 + beq _080C7AF8 + movs r0, #0x1c + bl sub_080CA4BC + b _080C7B1E + .align 2, 0 +_080C7AF0: .4byte gUnknown_20399AF +_080C7AF4: .4byte gUnknown_203CB48 +_080C7AF8: + ldr r0, _080C7B00 + bl sub_080C781C + b _080C7B3C + .align 2, 0 +_080C7B00: .4byte sub_080C7B48 +_080C7B04: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7B3C + ldr r0, _080C7B28 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080C7B3C + bl sub_080CA638 +_080C7B1E: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C7B3C + .align 2, 0 +_080C7B28: .4byte gUnknown_3002360 +_080C7B2C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7B3C + ldr r0, _080C7B44 + bl sub_080C781C +_080C7B3C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C7B44: .4byte sub_080C7B48 + thumb_func_end sub_080C7A94 + + thumb_func_start sub_080C7B48 +sub_080C7B48: @ 0x080C7B48 + push {r4, r5, lr} + ldr r0, _080C7B60 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xb + bls _080C7B56 + b _080C803A +_080C7B56: + lsls r0, r0, #2 + ldr r1, _080C7B64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C7B60: .4byte gUnknown_20399A8 +_080C7B64: .4byte _080C7B68 +_080C7B68: @ jump table + .4byte _080C7B98 @ case 0 + .4byte _080C7EB8 @ case 1 + .4byte _080C7EF8 @ case 2 + .4byte _080C7F50 @ case 3 + .4byte _080C7F74 @ case 4 + .4byte _080C7F7E @ case 5 + .4byte _080C7F98 @ case 6 + .4byte _080C7FB8 @ case 7 + .4byte _080C7FBE @ case 8 + .4byte _080C7FD4 @ case 9 + .4byte _080C8000 @ case 10 + .4byte _080C8028 @ case 11 +_080C7B98: + bl sub_080CF268 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #0x19 + bls _080C7BA8 + b _080C803A +_080C7BA8: + lsls r0, r0, #2 + ldr r1, _080C7BB4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C7BB4: .4byte _080C7BB8 +_080C7BB8: @ jump table + .4byte _080C7C20 @ case 0 + .4byte _080C803A @ case 1 + .4byte _080C803A @ case 2 + .4byte _080C7CB0 @ case 3 + .4byte _080C7C34 @ case 4 + .4byte _080C7C68 @ case 5 + .4byte _080C7CC8 @ case 6 + .4byte _080C7CDC @ case 7 + .4byte _080C7CE8 @ case 8 + .4byte _080C7D20 @ case 9 + .4byte _080C7D64 @ case 10 + .4byte _080C7DE8 @ case 11 + .4byte _080C7DA8 @ case 12 + .4byte _080C7DBA @ case 13 + .4byte _080C7DFC @ case 14 + .4byte _080C7E10 @ case 15 + .4byte _080C7E24 @ case 16 + .4byte _080C7E38 @ case 17 + .4byte _080C7CBC @ case 18 + .4byte _080C7E4C @ case 19 + .4byte _080C7E6C @ case 20 + .4byte _080C7E56 @ case 21 + .4byte _080C7E76 @ case 22 + .4byte _080C7EB0 @ case 23 + .4byte _080C7E7A @ case 24 + .4byte _080C7E94 @ case 25 +_080C7C20: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7C30 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7C30: .4byte gUnknown_20399A8 +_080C7C34: + ldr r4, _080C7C54 + ldr r0, [r4] + ldrb r0, [r0, #1] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080C7C58 + movs r0, #0x10 + bl sub_080CA4BC + ldr r1, [r4] + movs r0, #3 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7C54: .4byte gUnknown_20399A8 +_080C7C58: + bl sub_080CD488 + ldr r0, _080C7C64 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7C64: .4byte sub_080C8044 +_080C7C68: + ldr r4, _080C7C94 + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #2 + bne _080C7C9C + bl sub_080CE34C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7CA2 + ldr r0, [r4] + ldr r1, _080C7C98 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7C90 + b _080C7D82 +_080C7C90: + b _080C7CA2 + .align 2, 0 +_080C7C94: .4byte gUnknown_20399A8 +_080C7C98: .4byte 0x00000CE6 +_080C7C9C: + cmp r0, #3 + beq _080C7CA2 + b _080C803A +_080C7CA2: + ldr r0, _080C7CAC + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7CAC: .4byte sub_080C8084 +_080C7CB0: + ldr r0, _080C7CB8 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7CB8: .4byte sub_080C9484 +_080C7CBC: + ldr r0, _080C7CC4 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7CC4: .4byte sub_080C95B8 +_080C7CC8: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7CD8 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7CD8: .4byte sub_080C8FC8 +_080C7CDC: + ldr r0, _080C7CE4 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7CE4: .4byte sub_080C8100 +_080C7CE8: + movs r0, #5 + bl sub_080A306C + bl sub_080D15AC + ldr r4, _080C7D18 + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + ldr r2, _080C7D1C + adds r1, r1, r2 + strh r0, [r1] + cmp r0, #0xd + ble _080C7D0A + movs r0, #0 + strh r0, [r1] +_080C7D0A: + ldr r1, [r4] + ldrb r0, [r1, #1] + cmp r0, #3 + beq _080C7D58 + adds r0, r1, r2 + b _080C8012 + .align 2, 0 +_080C7D18: .4byte gUnknown_20399A8 +_080C7D1C: .4byte 0x000002CA +_080C7D20: + movs r0, #5 + bl sub_080A306C + bl sub_080D15AC + ldr r4, _080C7D50 + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + ldr r2, _080C7D54 + adds r1, r1, r2 + strh r0, [r1] + cmp r0, #0 + bge _080C7D42 + movs r0, #0xd + strh r0, [r1] +_080C7D42: + ldr r1, [r4] + ldrb r0, [r1, #1] + cmp r0, #3 + beq _080C7D58 + adds r0, r1, r2 + b _080C8012 + .align 2, 0 +_080C7D50: .4byte gUnknown_20399A8 +_080C7D54: .4byte 0x000002CA +_080C7D58: + bl sub_080CF724 + ldr r1, [r4] + movs r0, #0xa + strb r0, [r1] + b _080C803A +_080C7D64: + bl sub_080CE2AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7DC4 + ldr r4, _080C7D8C + ldr r0, [r4] + ldr r1, _080C7D90 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7D94 +_080C7D82: + ldr r1, [r4] + movs r0, #5 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7D8C: .4byte gUnknown_20399A8 +_080C7D90: .4byte 0x00000CE6 +_080C7D94: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7DA4 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7DA4: .4byte sub_080C8614 +_080C7DA8: + bl sub_080CE2AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7DC4 + movs r0, #5 + bl sub_080A306C + b _080C7FC8 +_080C7DBA: + bl sub_080CE2E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7DD4 +_080C7DC4: + ldr r0, _080C7DD0 + ldr r1, [r0] + movs r0, #4 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7DD0: .4byte gUnknown_20399A8 +_080C7DD4: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7DE4 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7DE4: .4byte sub_080C84E4 +_080C7DE8: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7DF8 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7DF8: .4byte sub_080C852C +_080C7DFC: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7E0C + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7E0C: .4byte sub_080C8488 +_080C7E10: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7E20 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7E20: .4byte sub_080C89C4 +_080C7E24: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7E34 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7E34: .4byte sub_080C8A78 +_080C7E38: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C7E48 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7E48: .4byte sub_080C8C4C +_080C7E4C: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + b _080C7E9C +_080C7E56: + movs r0, #1 + bl sub_080CFA70 + ldr r0, _080C7E68 + ldr r1, [r0] + movs r0, #8 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7E68: .4byte gUnknown_20399A8 +_080C7E6C: + movs r0, #5 + bl sub_080A306C + movs r0, #2 + b _080C7E82 +_080C7E76: + movs r0, #3 + b _080C7E9C +_080C7E7A: + movs r0, #5 + bl sub_080A306C + movs r0, #4 +_080C7E82: + bl sub_080CFA70 + ldr r0, _080C7E90 + ldr r1, [r0] + movs r0, #9 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7E90: .4byte gUnknown_20399A8 +_080C7E94: + movs r0, #5 + bl sub_080A306C + movs r0, #5 +_080C7E9C: + bl sub_080CFA70 + ldr r0, _080C7EAC + ldr r1, [r0] + movs r0, #7 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7EAC: .4byte gUnknown_20399A8 +_080C7EB0: + movs r0, #0x20 + bl sub_080A306C + b _080C803A +_080C7EB8: + bl sub_080CCDD0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7EC4 + b _080C803A +_080C7EC4: + bl sub_080CE374 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7ED4 + bl sub_080CA224 + b _080C7ED8 +_080C7ED4: + bl sub_080CA250 +_080C7ED8: + ldr r4, _080C7EF0 + ldr r0, [r4] + ldr r1, _080C7EF4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C7EEA + bl sub_080C9AD4 +_080C7EEA: + ldr r1, [r4] + b _080C7F64 + .align 2, 0 +_080C7EF0: .4byte gUnknown_20399A8 +_080C7EF4: .4byte 0x00000CEA +_080C7EF8: + bl sub_080CBDC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C7F04 + b _080C803A +_080C7F04: + ldr r0, _080C7F44 + ldr r0, [r0] + ldr r1, _080C7F48 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080D15B8 + ldr r0, _080C7F4C + ldrb r0, [r0] + cmp r0, #0 + bne _080C7F2C + bl sub_080CE34C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C7F2C + bl sub_080CD888 + bl sub_080C9AD4 +_080C7F2C: + ldr r4, _080C7F44 + ldr r1, [r4] + ldrb r0, [r1, #1] + cmp r0, #3 + bne _080C7F64 + bl sub_080CF748 + ldr r1, [r4] + movs r0, #0xb + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7F44: .4byte gUnknown_20399A8 +_080C7F48: .4byte 0x000002CA +_080C7F4C: .4byte gUnknown_20399AC +_080C7F50: + ldr r0, _080C7F6C + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C803A + bl sub_080CA638 + ldr r0, _080C7F70 + ldr r1, [r0] +_080C7F64: + movs r0, #0 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7F6C: .4byte gUnknown_3002360 +_080C7F70: .4byte gUnknown_20399A8 +_080C7F74: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0xd + b _080C7F86 +_080C7F7E: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0x16 +_080C7F86: + bl sub_080CA4BC + ldr r0, _080C7F94 + ldr r1, [r0] + movs r0, #6 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C7F94: .4byte gUnknown_20399A8 +_080C7F98: + ldr r0, _080C7FB0 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C803A + bl sub_080CA638 + ldr r0, _080C7FB4 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7FB0: .4byte gUnknown_3002360 +_080C7FB4: .4byte sub_080C7B48 +_080C7FB8: + bl sub_080CFA84 + b _080C802C +_080C7FBE: + bl sub_080CFA84 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C803A +_080C7FC8: + ldr r0, _080C7FD0 + bl sub_080C781C + b _080C803A + .align 2, 0 +_080C7FD0: .4byte sub_080C842C +_080C7FD4: + bl sub_080CFA84 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080C803A + ldr r5, _080C7FF8 + ldr r0, [r5] + ldr r1, _080C7FFC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C7FF2 + bl sub_080C9AD4 +_080C7FF2: + ldr r0, [r5] + strb r4, [r0] + b _080C803A + .align 2, 0 +_080C7FF8: .4byte gUnknown_20399A8 +_080C7FFC: .4byte 0x00000CEA +_080C8000: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C803A + ldr r4, _080C8020 + ldr r0, [r4] + ldr r1, _080C8024 + adds r0, r0, r1 +_080C8012: + ldrb r0, [r0] + bl sub_080CBCD8 + ldr r1, [r4] + movs r0, #2 + strb r0, [r1] + b _080C803A + .align 2, 0 +_080C8020: .4byte gUnknown_20399A8 +_080C8024: .4byte 0x000002CA +_080C8028: + bl sub_080D0AB8 +_080C802C: + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080C803A + ldr r0, _080C8040 + ldr r0, [r0] + strb r1, [r0] +_080C803A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C8040: .4byte gUnknown_20399A8 + thumb_func_end sub_080C7B48 + + thumb_func_start sub_080C8044 +sub_080C8044: @ 0x080C8044 + push {r4, lr} + ldr r4, _080C8058 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C805C + cmp r0, #1 + beq _080C806A + b _080C807A + .align 2, 0 +_080C8058: .4byte gUnknown_20399A8 +_080C805C: + bl sub_080CA3B0 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C807A +_080C806A: + bl sub_080CA3D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C807A + ldr r0, _080C8080 + bl sub_080C781C +_080C807A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8080: .4byte sub_080C7B48 + thumb_func_end sub_080C8044 + + thumb_func_start sub_080C8084 +sub_080C8084: @ 0x080C8084 + push {r4, lr} + ldr r4, _080C809C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #1 + beq _080C80B2 + cmp r0, #1 + bgt _080C80A0 + cmp r0, #0 + beq _080C80A6 + b _080C80F2 + .align 2, 0 +_080C809C: .4byte gUnknown_20399A8 +_080C80A0: + cmp r0, #2 + beq _080C80D2 + b _080C80F2 +_080C80A6: + movs r0, #5 + bl sub_080A306C + bl sub_080CA0EC + b _080C80C8 +_080C80B2: + bl sub_080CA12C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C80F2 + bl sub_080CD4A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080CD474 +_080C80C8: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C80F2 +_080C80D2: + bl sub_080CCDD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C80F2 + ldr r0, [r4] + ldr r1, _080C80F8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080C80EC + bl sub_080C9AD4 +_080C80EC: + ldr r0, _080C80FC + bl sub_080C781C +_080C80F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C80F8: .4byte 0x00000CEA +_080C80FC: .4byte sub_080C7B48 + thumb_func_end sub_080C8084 + + thumb_func_start sub_080C8100 +sub_080C8100: @ 0x080C8100 + push {r4, lr} + ldr r0, _080C8118 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #6 + bls _080C810E + b _080C841E +_080C810E: + lsls r0, r0, #2 + ldr r1, _080C811C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8118: .4byte gUnknown_20399A8 +_080C811C: .4byte _080C8120 +_080C8120: @ jump table + .4byte _080C813C @ case 0 + .4byte _080C81A0 @ case 1 + .4byte _080C81BC @ case 2 + .4byte _080C83D8 @ case 3 + .4byte _080C83EC @ case 4 + .4byte _080C83E2 @ case 5 + .4byte _080C8408 @ case 6 +_080C813C: + bl sub_080C9B2C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C8148 + b _080C841E +_080C8148: + movs r0, #5 + bl sub_080A306C + ldr r4, _080C8160 + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #3 + beq _080C8164 + movs r0, #4 + bl sub_080CA4BC + b _080C818E + .align 2, 0 +_080C8160: .4byte gUnknown_20399A8 +_080C8164: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C817A + ldr r0, [r4] + ldr r1, _080C8184 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080C8188 +_080C817A: + movs r0, #0x17 + bl sub_080CA4BC + b _080C818E + .align 2, 0 +_080C8184: .4byte 0x00000CE6 +_080C8188: + movs r0, #0x18 + bl sub_080CA4BC +_080C818E: + bl sub_080CF84C + ldr r0, _080C819C + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C819C: .4byte gUnknown_20399A8 +_080C81A0: + bl sub_080CF948 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C81AC + b _080C841E +_080C81AC: + ldr r0, _080C81B8 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C81B8: .4byte gUnknown_20399A8 +_080C81BC: + bl sub_080CF94C + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x12 + bls _080C81CC + b _080C841E +_080C81CC: + lsls r0, r0, #2 + ldr r1, _080C81D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C81D8: .4byte _080C81DC +_080C81DC: @ jump table + .4byte _080C8228 @ case 0 + .4byte _080C8228 @ case 1 + .4byte _080C82A8 @ case 2 + .4byte _080C8290 @ case 3 + .4byte _080C8238 @ case 4 + .4byte _080C8270 @ case 5 + .4byte _080C8258 @ case 6 + .4byte _080C8348 @ case 7 + .4byte _080C82E4 @ case 8 + .4byte _080C835C @ case 9 + .4byte _080C841E @ case 10 + .4byte _080C841E @ case 11 + .4byte _080C841E @ case 12 + .4byte _080C8370 @ case 13 + .4byte _080C8384 @ case 14 + .4byte _080C83B8 @ case 15 + .4byte _080C83A4 @ case 16 + .4byte _080C8398 @ case 17 + .4byte _080C83CC @ case 18 +_080C8228: + bl sub_080CA638 + ldr r0, _080C8234 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8234: .4byte sub_080C7B48 +_080C8238: + bl sub_080CE2AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C82EE + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C8254 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8254: .4byte sub_080C842C +_080C8258: + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C826C + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C826C: .4byte sub_080C8488 +_080C8270: + bl sub_080CE2E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C82EE + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C828C + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C828C: .4byte sub_080C84E4 +_080C8290: + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C82A4 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C82A4: .4byte sub_080C852C +_080C82A8: + bl sub_080CE2AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C82EE + ldr r4, _080C82D8 + ldr r0, [r4] + ldr r2, _080C82DC + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8328 + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C82E0 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C82D8: .4byte gUnknown_20399A8 +_080C82DC: .4byte 0x00000CE6 +_080C82E0: .4byte sub_080C8614 +_080C82E4: + bl sub_080CE2AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C82FC +_080C82EE: + ldr r0, _080C82F8 + ldr r1, [r0] + movs r0, #3 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C82F8: .4byte gUnknown_20399A8 +_080C82FC: + ldr r4, _080C8310 + ldr r1, [r4] + ldr r2, _080C8314 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080C8318 + movs r0, #5 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C8310: .4byte gUnknown_20399A8 +_080C8314: .4byte 0x00000CED +_080C8318: + ldr r2, _080C8330 + adds r0, r1, r2 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C8334 +_080C8328: + ldr r1, [r4] + movs r0, #4 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C8330: .4byte 0x00000CE6 +_080C8334: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C8344 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8344: .4byte sub_080C8750 +_080C8348: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C8358 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8358: .4byte sub_080C93C4 +_080C835C: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C836C + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C836C: .4byte sub_080C8940 +_080C8370: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C8380 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8380: .4byte sub_080C89C4 +_080C8384: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C8394 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C8394: .4byte sub_080C8A78 +_080C8398: + ldr r0, _080C83A0 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C83A0: .4byte sub_080C8B34 +_080C83A4: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C83B4 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C83B4: .4byte sub_080C8C4C +_080C83B8: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C83C8 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C83C8: .4byte sub_080C9424 +_080C83CC: + ldr r0, _080C83D4 + bl sub_080C781C + b _080C841E + .align 2, 0 +_080C83D4: .4byte sub_080C8D34 +_080C83D8: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0xd + b _080C83F4 +_080C83E2: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0x11 + b _080C83F4 +_080C83EC: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0x16 +_080C83F4: + bl sub_080CA4BC + ldr r0, _080C8404 + ldr r1, [r0] + movs r0, #6 + strb r0, [r1] + b _080C841E + .align 2, 0 +_080C8404: .4byte gUnknown_20399A8 +_080C8408: + ldr r0, _080C8424 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C841E + bl sub_080CA638 + ldr r0, _080C8428 + bl sub_080C781C +_080C841E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8424: .4byte gUnknown_3002360 +_080C8428: .4byte sub_080C7B48 + thumb_func_end sub_080C8100 + + thumb_func_start sub_080C842C +sub_080C842C: @ 0x080C842C + push {r4, lr} + ldr r4, _080C8440 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C8444 + cmp r0, #1 + beq _080C8454 + b _080C847E + .align 2, 0 +_080C8440: .4byte gUnknown_20399A8 +_080C8444: + movs r0, #0 + bl sub_080CD4B4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C847E +_080C8454: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C847E + ldr r0, _080C8470 + ldrb r0, [r0] + cmp r0, #0 + beq _080C8478 + ldr r0, _080C8474 + bl sub_080C781C + b _080C847E + .align 2, 0 +_080C8470: .4byte gUnknown_20399AC +_080C8474: .4byte sub_080C8F0C +_080C8478: + ldr r0, _080C8484 + bl sub_080C781C +_080C847E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8484: .4byte sub_080C7B48 + thumb_func_end sub_080C842C + + thumb_func_start sub_080C8488 +sub_080C8488: @ 0x080C8488 + push {r4, lr} + ldr r4, _080C849C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C84A0 + cmp r0, #1 + beq _080C84B0 + b _080C84DA + .align 2, 0 +_080C849C: .4byte gUnknown_20399A8 +_080C84A0: + movs r0, #1 + bl sub_080CD4B4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C84DA +_080C84B0: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C84DA + ldr r0, _080C84CC + ldrb r0, [r0] + cmp r0, #0 + beq _080C84D4 + ldr r0, _080C84D0 + bl sub_080C781C + b _080C84DA + .align 2, 0 +_080C84CC: .4byte gUnknown_20399AC +_080C84D0: .4byte sub_080C8F0C +_080C84D4: + ldr r0, _080C84E0 + bl sub_080C781C +_080C84DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C84E0: .4byte sub_080C7B48 + thumb_func_end sub_080C8488 + + thumb_func_start sub_080C84E4 +sub_080C84E4: @ 0x080C84E4 + push {r4, lr} + ldr r4, _080C84F8 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C84FC + cmp r0, #1 + beq _080C850C + b _080C8520 + .align 2, 0 +_080C84F8: .4byte gUnknown_20399A8 +_080C84FC: + movs r0, #2 + bl sub_080CD4B4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8520 +_080C850C: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8520 + bl sub_080C9AD4 + ldr r0, _080C8528 + bl sub_080C781C +_080C8520: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8528: .4byte sub_080C7B48 + thumb_func_end sub_080C84E4 + + thumb_func_start sub_080C852C +sub_080C852C: @ 0x080C852C + push {lr} + ldr r0, _080C8544 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #5 + bhi _080C860A + lsls r0, r0, #2 + ldr r1, _080C8548 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8544: .4byte gUnknown_20399A8 +_080C8548: .4byte _080C854C +_080C854C: @ jump table + .4byte _080C8564 @ case 0 + .4byte _080C859C @ case 1 + .4byte _080C85BC @ case 2 + .4byte _080C85D2 @ case 3 + .4byte _080C85E4 @ case 4 + .4byte _080C8604 @ case 5 +_080C8564: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bne _080C8584 + movs r0, #0xe + bl sub_080CA4BC + ldr r0, _080C8580 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C860A + .align 2, 0 +_080C8580: .4byte gUnknown_20399A8 +_080C8584: + bl sub_080CD494 + movs r0, #0 + bl sub_080CD4B4 + ldr r0, _080C8598 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + b _080C860A + .align 2, 0 +_080C8598: .4byte gUnknown_20399A8 +_080C859C: + ldr r0, _080C85B4 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C860A + bl sub_080CA638 + ldr r0, _080C85B8 + bl sub_080C781C + b _080C860A + .align 2, 0 +_080C85B4: .4byte gUnknown_3002360 +_080C85B8: .4byte sub_080C7B48 +_080C85BC: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C860A + movs r0, #1 + bl sub_080CB948 + bl sub_080CA3B0 + b _080C85F2 +_080C85D2: + bl sub_080CA3D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C860A + movs r0, #1 + bl sub_080CD4B4 + b _080C85F2 +_080C85E4: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C860A + bl sub_080CA384 +_080C85F2: + ldr r0, _080C8600 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C860A + .align 2, 0 +_080C8600: .4byte gUnknown_20399A8 +_080C8604: + ldr r0, _080C8610 + bl sub_080C781C +_080C860A: + pop {r0} + bx r0 + .align 2, 0 +_080C8610: .4byte sub_080C8084 + thumb_func_end sub_080C852C + + thumb_func_start sub_080C8614 +sub_080C8614: @ 0x080C8614 + push {r4, lr} + sub sp, #4 + ldr r0, _080C8630 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #4 + bls _080C8624 + b _080C873E +_080C8624: + lsls r0, r0, #2 + ldr r1, _080C8634 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8630: .4byte gUnknown_20399A8 +_080C8634: .4byte _080C8638 +_080C8638: @ jump table + .4byte _080C864C @ case 0 + .4byte _080C8688 @ case 1 + .4byte _080C86E8 @ case 2 + .4byte _080C8700 @ case 3 + .4byte _080C8724 @ case 4 +_080C864C: + movs r0, #6 + bl sub_080CA4BC + ldr r4, _080C8678 + ldr r0, [r4] + ldr r1, _080C867C + adds r0, r0, r1 + ldr r2, _080C8680 + movs r1, #0 + str r1, [sp] + movs r1, #0xa + movs r3, #3 + bl sub_080C7080 + ldr r0, _080C8684 + ldrb r0, [r0] + bl sub_080C716C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + b _080C873C + .align 2, 0 +_080C8678: .4byte gUnknown_20399A8 +_080C867C: .4byte 0x00001E5C +_080C8680: .4byte 0x0000DAC7 +_080C8684: .4byte gUnknown_20399AE +_080C8688: + bl sub_080C7188 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r0, #0xc8 + beq _080C873E + cmp r0, #0xc9 + bne _080C86A8 + bl sub_080CA638 + bl sub_080C717C + bl sub_080C7128 + b _080C8716 +_080C86A8: + adds r0, r4, #0 + bl sub_080CDA18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C86D4 + ldr r0, _080C86CC + strb r4, [r0] + bl sub_080CA638 + bl sub_080C717C + bl sub_080C7128 + ldr r0, _080C86D0 + ldr r1, [r0] + movs r0, #2 + b _080C873C + .align 2, 0 +_080C86CC: .4byte gUnknown_20399AE +_080C86D0: .4byte gUnknown_20399A8 +_080C86D4: + movs r0, #8 + bl sub_080CA4BC + ldr r0, _080C86E4 + ldr r1, [r0] + movs r0, #4 + b _080C873C + .align 2, 0 +_080C86E4: .4byte gUnknown_20399A8 +_080C86E8: + bl sub_080CE188 + bl sub_080CB1C4 + ldr r0, _080C86FC + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _080C873C + .align 2, 0 +_080C86FC: .4byte gUnknown_20399A8 +_080C8700: + bl sub_080CB230 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C873E + bl sub_080CDAA8 + bl sub_080C9AD4 + bl sub_080CA384 +_080C8716: + ldr r0, _080C8720 + bl sub_080C781C + b _080C873E + .align 2, 0 +_080C8720: .4byte sub_080C7B48 +_080C8724: + ldr r0, _080C8748 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C873E + movs r0, #6 + bl sub_080CA4BC + ldr r0, _080C874C + ldr r1, [r0] + movs r0, #1 +_080C873C: + strb r0, [r1] +_080C873E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8748: .4byte gUnknown_3002360 +_080C874C: .4byte gUnknown_20399A8 + thumb_func_end sub_080C8614 + + thumb_func_start sub_080C8750 +sub_080C8750: @ 0x080C8750 + push {lr} + ldr r0, _080C8768 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xd + bls _080C875E + b _080C8932 +_080C875E: + lsls r0, r0, #2 + ldr r1, _080C876C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8768: .4byte gUnknown_20399A8 +_080C876C: .4byte _080C8770 +_080C8770: @ jump table + .4byte _080C87A8 @ case 0 + .4byte _080C87BE @ case 1 + .4byte _080C87F6 @ case 2 + .4byte _080C881C @ case 3 + .4byte _080C8828 @ case 4 + .4byte _080C8840 @ case 5 + .4byte _080C887C @ case 6 + .4byte _080C8894 @ case 7 + .4byte _080C88A0 @ case 8 + .4byte _080C88A4 @ case 9 + .4byte _080C88B8 @ case 10 + .4byte _080C88D4 @ case 11 + .4byte _080C88E6 @ case 12 + .4byte _080C891C @ case 13 +_080C87A8: + movs r0, #9 + bl sub_080CA4BC + movs r0, #1 + bl sub_080CA600 + ldr r0, _080C87D8 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C87BE: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080C87E8 + cmp r1, #0 + bgt _080C87DC + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C87E2 + b _080C8932 + .align 2, 0 +_080C87D8: .4byte gUnknown_20399A8 +_080C87DC: + cmp r1, #1 + beq _080C87E2 + b _080C8932 +_080C87E2: + bl sub_080CA638 + b _080C8894 +_080C87E8: + bl sub_080CA638 + bl sub_080CDC1C + bl sub_080CDACC + b _080C88F8 +_080C87F6: + bl sub_080CDDFC + bl sub_080CDB24 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C8806 + b _080C8932 +_080C8806: + b _080C880E +_080C8808: + cmp r0, #0 + bne _080C880E + b _080C890C +_080C880E: + bl sub_080CDDFC + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080C8808 + b _080C88F8 +_080C881C: + bl sub_080CDB54 + bl sub_080C9AA4 + movs r0, #0xa + b _080C88F4 +_080C8828: + ldr r0, _080C883C + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + bne _080C8836 + b _080C8932 +_080C8836: + movs r0, #0xb + b _080C88F4 + .align 2, 0 +_080C883C: .4byte gUnknown_3002360 +_080C8840: + ldr r0, _080C8864 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8932 + bl sub_080CA638 + ldr r0, _080C8868 + ldrb r0, [r0] + cmp r0, #0 + beq _080C886C + bl sub_080CE188 + bl sub_080CB1C4 + b _080C88F8 + .align 2, 0 +_080C8864: .4byte gUnknown_3002360 +_080C8868: .4byte gUnknown_20399AC +_080C886C: + ldr r0, _080C8878 + ldr r1, [r0] + movs r0, #7 + strb r0, [r1] + b _080C8932 + .align 2, 0 +_080C8878: .4byte gUnknown_20399A8 +_080C887C: + bl sub_080CB230 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8932 + bl sub_080CD888 + bl sub_080C9AD4 + bl sub_080CA384 + b _080C88F8 +_080C8894: + ldr r0, _080C889C + bl sub_080C781C + b _080C8932 + .align 2, 0 +_080C889C: .4byte sub_080C7B48 +_080C88A0: + movs r0, #0xa + b _080C88F4 +_080C88A4: + ldr r0, _080C88B4 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8932 + movs r0, #0x15 + b _080C88F4 + .align 2, 0 +_080C88B4: .4byte gUnknown_3002360 +_080C88B8: + ldr r0, _080C88D0 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8932 + bl sub_080CA638 + bl sub_080CB8D8 + b _080C88F8 + .align 2, 0 +_080C88D0: .4byte gUnknown_3002360 +_080C88D4: + bl sub_080CB914 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8932 + bl sub_080CDBA0 + movs r0, #0x13 + b _080C88F4 +_080C88E6: + ldr r0, _080C8904 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8932 + movs r0, #0x14 +_080C88F4: + bl sub_080CA4BC +_080C88F8: + ldr r0, _080C8908 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8932 + .align 2, 0 +_080C8904: .4byte gUnknown_3002360 +_080C8908: .4byte gUnknown_20399A8 +_080C890C: + ldr r0, _080C8918 + ldr r1, [r0] + movs r0, #8 + strb r0, [r1] + b _080C8932 + .align 2, 0 +_080C8918: .4byte gUnknown_20399A8 +_080C891C: + ldr r0, _080C8938 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8932 + bl sub_080CA638 + ldr r0, _080C893C + bl sub_080C781C +_080C8932: + pop {r0} + bx r0 + .align 2, 0 +_080C8938: .4byte gUnknown_3002360 +_080C893C: .4byte sub_080C7B48 + thumb_func_end sub_080C8750 + + thumb_func_start sub_080C8940 +sub_080C8940: @ 0x080C8940 + push {r4, lr} + ldr r4, _080C8954 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C8958 + cmp r0, #1 + beq _080C898C + b _080C89B4 + .align 2, 0 +_080C8954: .4byte gUnknown_20399A8 +_080C8958: + movs r0, #0xc + bl sub_080CA4BC + ldr r0, [r4] + ldr r2, _080C8984 + adds r1, r0, r2 + ldrb r1, [r1] + ldr r3, _080C8988 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r4] + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #0xb0 + movs r2, #0x10 + bl sub_0811FFC4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C89B4 + .align 2, 0 +_080C8984: .4byte 0x00000CEB +_080C8988: .4byte 0x00000DA8 +_080C898C: + bl sub_081200C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C89B4 + bl sub_08120018 + bl sub_080CA638 + ldr r0, [r4] + ldr r1, _080C89BC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080CE224 + bl sub_080C9AA4 + ldr r0, _080C89C0 + bl sub_080C781C +_080C89B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C89BC: .4byte 0x00000DA8 +_080C89C0: .4byte sub_080C7B48 + thumb_func_end sub_080C8940 + + thumb_func_start sub_080C89C4 +sub_080C89C4: @ 0x080C89C4 + push {r4, r5, lr} + ldr r5, _080C89DC + ldr r0, [r5] + ldrb r1, [r0] + cmp r1, #1 + beq _080C8A10 + cmp r1, #1 + bgt _080C89E0 + cmp r1, #0 + beq _080C89EA + b _080C8A6E + .align 2, 0 +_080C89DC: .4byte gUnknown_20399A8 +_080C89E0: + cmp r1, #2 + beq _080C8A38 + cmp r1, #3 + beq _080C8A5E + b _080C8A6E +_080C89EA: + ldr r1, _080C8A00 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8A04 + bl sub_080CA638 + b _080C8A54 + .align 2, 0 +_080C8A00: .4byte 0x00000CE6 +_080C8A04: + ldr r0, _080C8A0C + bl sub_080C781C + b _080C8A6E + .align 2, 0 +_080C8A0C: .4byte sub_080C8F54 +_080C8A10: + movs r0, #2 + bl sub_080CF6D0 + ldr r0, _080C8A34 + ldrb r0, [r0] + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D0730 + b _080C8A54 + .align 2, 0 +_080C8A34: .4byte gUnknown_20399AC +_080C8A38: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8A6E + movs r0, #3 + bl sub_080CF6D0 + bl sub_080CA638 + bl sub_080CD888 + bl sub_080C9D70 +_080C8A54: + ldr r1, [r5] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8A6E +_080C8A5E: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8A6E + ldr r0, _080C8A74 + bl sub_080C781C +_080C8A6E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C8A74: .4byte sub_080C7B48 + thumb_func_end sub_080C89C4 + + thumb_func_start sub_080C8A78 +sub_080C8A78: @ 0x080C8A78 + push {r4, lr} + ldr r0, _080C8A90 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #4 + bhi _080C8B28 + lsls r0, r0, #2 + ldr r1, _080C8A94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8A90: .4byte gUnknown_20399A8 +_080C8A94: .4byte _080C8A98 +_080C8A98: @ jump table + .4byte _080C8B00 @ case 0 + .4byte _080C8AAC @ case 1 + .4byte _080C8AD4 @ case 2 + .4byte _080C8AF4 @ case 3 + .4byte _080C8B18 @ case 4 +_080C8AAC: + movs r0, #2 + bl sub_080CF6D0 + ldr r0, _080C8AD0 + ldrb r0, [r0] + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D0920 + b _080C8B04 + .align 2, 0 +_080C8AD0: .4byte gUnknown_20399AC +_080C8AD4: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8B28 + movs r0, #0 + bl sub_080CF6D0 + bl sub_080CD888 + bl sub_080C9D70 + movs r0, #0x1c + bl sub_080CA4BC + b _080C8B04 +_080C8AF4: + ldr r0, _080C8B10 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8B28 +_080C8B00: + bl sub_080CA638 +_080C8B04: + ldr r0, _080C8B14 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8B28 + .align 2, 0 +_080C8B10: .4byte gUnknown_3002360 +_080C8B14: .4byte gUnknown_20399A8 +_080C8B18: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8B28 + ldr r0, _080C8B30 + bl sub_080C781C +_080C8B28: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8B30: .4byte sub_080C7B48 + thumb_func_end sub_080C8A78 + + thumb_func_start sub_080C8B34 +sub_080C8B34: @ 0x080C8B34 + push {r4, r5, lr} + ldr r1, _080C8B50 + ldr r0, [r1] + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #4 + bls _080C8B44 + b _080C8C3E +_080C8B44: + lsls r0, r0, #2 + ldr r1, _080C8B54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8B50: .4byte gUnknown_20399A8 +_080C8B54: .4byte _080C8B58 +_080C8B58: @ jump table + .4byte _080C8B6C @ case 0 + .4byte _080C8BC4 @ case 1 + .4byte _080C8BE4 @ case 2 + .4byte _080C8C28 @ case 3 + .4byte _080C8C10 @ case 4 +_080C8B6C: + ldr r0, [r5] + ldr r1, _080C8B94 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8B98 + movs r0, #0x20 + bl sub_080A306C + movs r0, #0x1a + bl sub_080CA4BC + ldr r1, [r5] + movs r0, #3 + strb r0, [r1] + b _080C8C3E + .align 2, 0 +_080C8B94: .4byte 0x00000CE6 +_080C8B98: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C8BC0 + ldrb r0, [r0] + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D09B4 + ldr r1, [r5] + movs r0, #1 + strb r0, [r1] + b _080C8C3E + .align 2, 0 +_080C8BC0: .4byte gUnknown_20399AC +_080C8BC4: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8C3E + movs r0, #0x19 + bl sub_080CA4BC + ldr r0, _080C8BE0 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + b _080C8C3E + .align 2, 0 +_080C8BE0: .4byte gUnknown_20399A8 +_080C8BE4: + ldr r0, _080C8C08 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8C3E + bl sub_080CA638 + bl sub_080CD888 + bl sub_080C9D70 + ldr r0, _080C8C0C + ldr r1, [r0] + movs r0, #4 + strb r0, [r1] + b _080C8C3E + .align 2, 0 +_080C8C08: .4byte gUnknown_3002360 +_080C8C0C: .4byte gUnknown_20399A8 +_080C8C10: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8C3E + ldr r0, _080C8C24 + bl sub_080C781C + b _080C8C3E + .align 2, 0 +_080C8C24: .4byte sub_080C7B48 +_080C8C28: + ldr r0, _080C8C44 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8C3E + bl sub_080CA638 + ldr r0, _080C8C48 + bl sub_080C781C +_080C8C3E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C8C44: .4byte gUnknown_3002360 +_080C8C48: .4byte sub_080C7B48 + thumb_func_end sub_080C8B34 + + thumb_func_start sub_080C8C4C +sub_080C8C4C: @ 0x080C8C4C + push {r4, lr} + ldr r1, _080C8C64 + ldr r0, [r1] + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #4 + bhi _080C8D28 + lsls r0, r0, #2 + ldr r1, _080C8C68 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8C64: .4byte gUnknown_20399A8 +_080C8C68: .4byte _080C8C6C +_080C8C6C: @ jump table + .4byte _080C8C80 @ case 0 + .4byte _080C8CAC @ case 1 + .4byte _080C8CD4 @ case 2 + .4byte _080C8CF4 @ case 3 + .4byte _080C8D18 @ case 4 +_080C8C80: + ldr r0, [r4] + ldr r1, _080C8C9C + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8CA0 + bl sub_080CA638 + ldr r1, [r4] + b _080C8D08 + .align 2, 0 +_080C8C9C: .4byte 0x00000CE6 +_080C8CA0: + ldr r0, _080C8CA8 + bl sub_080C781C + b _080C8D28 + .align 2, 0 +_080C8CA8: .4byte sub_080C8F54 +_080C8CAC: + movs r0, #2 + bl sub_080CF6D0 + ldr r0, _080C8CD0 + ldrb r0, [r0] + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D084C + b _080C8D04 + .align 2, 0 +_080C8CD0: .4byte gUnknown_20399AC +_080C8CD4: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8D28 + movs r0, #3 + bl sub_080CF6D0 + bl sub_080CD888 + bl sub_080C9D70 + movs r0, #0x1d + bl sub_080CA4BC + b _080C8D04 +_080C8CF4: + ldr r0, _080C8D10 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8D28 + bl sub_080CA638 +_080C8D04: + ldr r0, _080C8D14 + ldr r1, [r0] +_080C8D08: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8D28 + .align 2, 0 +_080C8D10: .4byte gUnknown_3002360 +_080C8D14: .4byte gUnknown_20399A8 +_080C8D18: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8D28 + ldr r0, _080C8D30 + bl sub_080C781C +_080C8D28: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8D30: .4byte sub_080C7B48 + thumb_func_end sub_080C8C4C + + thumb_func_start sub_080C8D34 +sub_080C8D34: @ 0x080C8D34 + push {lr} + ldr r0, _080C8D4C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #6 + bhi _080C8DE0 + lsls r0, r0, #2 + ldr r1, _080C8D50 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8D4C: .4byte gUnknown_20399A8 +_080C8D50: .4byte _080C8D54 +_080C8D54: @ jump table + .4byte _080C8D70 @ case 0 + .4byte _080C8D76 @ case 1 + .4byte _080C8D90 @ case 2 + .4byte _080C8D96 @ case 3 + .4byte _080C8D9C @ case 4 + .4byte _080C8DB4 @ case 5 + .4byte _080C8DD0 @ case 6 +_080C8D70: + bl sub_080CA638 + b _080C8DBE +_080C8D76: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8DE0 + movs r0, #6 + bl sub_080A306C + bl sub_080D1054 + bl sub_080D10B8 + b _080C8DBE +_080C8D90: + bl sub_080D10EC + b _080C8DB8 +_080C8D96: + bl sub_08001AEC + b _080C8DB8 +_080C8D9C: + ldr r0, _080C8DB0 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8DE0 + movs r0, #6 + bl sub_080A306C + b _080C8DBE + .align 2, 0 +_080C8DB0: .4byte gUnknown_3002360 +_080C8DB4: + bl sub_080D1184 +_080C8DB8: + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8DE0 +_080C8DBE: + ldr r0, _080C8DCC + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8DE0 + .align 2, 0 +_080C8DCC: .4byte gUnknown_20399A8 +_080C8DD0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8DE0 + ldr r0, _080C8DE4 + bl sub_080C781C +_080C8DE0: + pop {r0} + bx r0 + .align 2, 0 +_080C8DE4: .4byte sub_080C7B48 + thumb_func_end sub_080C8D34 + + thumb_func_start sub_080C8DE8 +sub_080C8DE8: @ 0x080C8DE8 + push {r4, lr} + ldr r0, _080C8E00 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #5 + bls _080C8DF6 + b _080C8F00 +_080C8DF6: + lsls r0, r0, #2 + ldr r1, _080C8E04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C8E00: .4byte gUnknown_20399A8 +_080C8E04: .4byte _080C8E08 +_080C8E08: @ jump table + .4byte _080C8E20 @ case 0 + .4byte _080C8E40 @ case 1 + .4byte _080C8E9E @ case 2 + .4byte _080C8EC0 @ case 3 + .4byte _080C8ED4 @ case 4 + .4byte _080C8EF0 @ case 5 +_080C8E20: + movs r0, #5 + bl sub_080A306C + movs r0, #0x1b + bl sub_080CA4BC + movs r0, #0 + bl sub_080CA600 + ldr r0, _080C8E3C + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C8F00 + .align 2, 0 +_080C8E3C: .4byte gUnknown_20399A8 +_080C8E40: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080C8E64 + cmp r1, #0 + bgt _080C8E5A + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C8E5E + b _080C8F00 +_080C8E5A: + cmp r1, #1 + bne _080C8F00 +_080C8E5E: + bl sub_080CA638 + b _080C8EE4 +_080C8E64: + ldr r4, _080C8E88 + ldr r0, [r4] + ldr r1, _080C8E8C + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080C8E90 + bl sub_080CA638 + ldr r1, [r4] + movs r0, #3 + strb r0, [r1] + b _080C8F00 + .align 2, 0 +_080C8E88: .4byte gUnknown_20399A8 +_080C8E8C: .4byte 0x00002234 +_080C8E90: + movs r0, #0x1a + bl sub_080CA4BC + ldr r1, [r4] + movs r0, #2 + strb r0, [r1] + b _080C8F00 +_080C8E9E: + ldr r0, _080C8EB8 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8F00 + bl sub_080CA638 + ldr r0, _080C8EBC + ldr r1, [r0] + movs r0, #5 + strb r0, [r1] + b _080C8F00 + .align 2, 0 +_080C8EB8: .4byte gUnknown_3002360 +_080C8EBC: .4byte gUnknown_20399A8 +_080C8EC0: + bl sub_080D0A34 + ldr r0, _080C8ED0 + ldr r1, [r0] + movs r0, #4 + strb r0, [r1] + b _080C8F00 + .align 2, 0 +_080C8ED0: .4byte gUnknown_20399A8 +_080C8ED4: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8F00 + movs r0, #0 + bl sub_080CF6D0 +_080C8EE4: + ldr r0, _080C8EEC + bl sub_080C781C + b _080C8F00 + .align 2, 0 +_080C8EEC: .4byte sub_080C7B48 +_080C8EF0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8F00 + ldr r0, _080C8F08 + bl sub_080C781C +_080C8F00: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8F08: .4byte sub_080C7B48 + thumb_func_end sub_080C8DE8 + + thumb_func_start sub_080C8F0C +sub_080C8F0C: @ 0x080C8F0C + push {r4, lr} + ldr r4, _080C8F20 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #0 + beq _080C8F24 + cmp r0, #1 + beq _080C8F36 + b _080C8F4A + .align 2, 0 +_080C8F20: .4byte gUnknown_20399A8 +_080C8F24: + bl sub_080CE188 + bl sub_080CB1C4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8F4A +_080C8F36: + bl sub_080CB230 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8F4A + bl sub_080CA384 + ldr r0, _080C8F50 + bl sub_080C781C +_080C8F4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8F50: .4byte sub_080C7B48 + thumb_func_end sub_080C8F0C + + thumb_func_start sub_080C8F54 +sub_080C8F54: @ 0x080C8F54 + push {r4, lr} + ldr r4, _080C8F6C + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #1 + beq _080C8F82 + cmp r0, #1 + bgt _080C8F70 + cmp r0, #0 + beq _080C8F7A + b _080C8FBC + .align 2, 0 +_080C8F6C: .4byte gUnknown_20399A8 +_080C8F70: + cmp r0, #2 + beq _080C8F8E + cmp r0, #3 + beq _080C8FAC + b _080C8FBC +_080C8F7A: + movs r0, #0x1e + bl sub_080CA4BC + b _080C8F9E +_080C8F82: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8FBC + b _080C8F9E +_080C8F8E: + ldr r0, _080C8FA8 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C8FBC + bl sub_080CA638 +_080C8F9E: + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C8FBC + .align 2, 0 +_080C8FA8: .4byte gUnknown_3002360 +_080C8FAC: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C8FBC + ldr r0, _080C8FC4 + bl sub_080C781C +_080C8FBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C8FC4: .4byte sub_080C7B48 + thumb_func_end sub_080C8F54 + + thumb_func_start sub_080C8FC8 +sub_080C8FC8: @ 0x080C8FC8 + push {r4, lr} + ldr r4, _080C8FE0 + ldr r0, [r4] + ldrb r0, [r0] + cmp r0, #1 + beq _080C8FFE + cmp r0, #1 + bgt _080C8FE4 + cmp r0, #0 + beq _080C8FEA + b _080C90B4 + .align 2, 0 +_080C8FE0: .4byte gUnknown_20399A8 +_080C8FE4: + cmp r0, #2 + beq _080C9010 + b _080C90B4 +_080C8FEA: + movs r0, #1 + bl sub_080CA4BC + bl sub_080CF84C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C90B4 +_080C8FFE: + bl sub_080CF948 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C90B4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080C9010: + bl sub_080CF94C + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bhi _080C90B4 + lsls r0, r0, #2 + ldr r1, _080C9028 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C9028: .4byte _080C902C +_080C902C: @ jump table + .4byte _080C9060 @ case 0 + .4byte _080C9060 @ case 1 + .4byte _080C90B4 @ case 2 + .4byte _080C90B4 @ case 3 + .4byte _080C90B4 @ case 4 + .4byte _080C90B4 @ case 5 + .4byte _080C90B4 @ case 6 + .4byte _080C90B4 @ case 7 + .4byte _080C90B4 @ case 8 + .4byte _080C90B4 @ case 9 + .4byte _080C90A4 @ case 10 + .4byte _080C908C @ case 11 + .4byte _080C9078 @ case 12 +_080C9060: + movs r0, #1 + bl sub_080CCA24 + bl sub_080CA638 + ldr r0, _080C9074 + bl sub_080C781C + b _080C90B4 + .align 2, 0 +_080C9074: .4byte sub_080C7B48 +_080C9078: + movs r0, #5 + bl sub_080A306C + ldr r0, _080C9088 + bl sub_080C781C + b _080C90B4 + .align 2, 0 +_080C9088: .4byte sub_080C9364 +_080C908C: + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C90A0 + bl sub_080C781C + b _080C90B4 + .align 2, 0 +_080C90A0: .4byte sub_080C90C0 +_080C90A4: + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r0, _080C90BC + bl sub_080C781C +_080C90B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C90BC: .4byte sub_080C9274 + thumb_func_end sub_080C8FC8 + + thumb_func_start sub_080C90C0 +sub_080C90C0: @ 0x080C90C0 + push {r4, r5, lr} + ldr r0, _080C90D8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #6 + bls _080C90CE + b _080C9268 +_080C90CE: + lsls r0, r0, #2 + ldr r1, _080C90DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C90D8: .4byte gUnknown_20399A8 +_080C90DC: .4byte _080C90E0 +_080C90E0: @ jump table + .4byte _080C90FC @ case 0 + .4byte _080C9114 @ case 1 + .4byte _080C9130 @ case 2 + .4byte _080C91A8 @ case 3 + .4byte _080C91D8 @ case 4 + .4byte _080C922C @ case 5 + .4byte _080C9248 @ case 6 +_080C90FC: + bl sub_080CA64C + movs r0, #2 + bl sub_080CA4BC + ldr r0, _080C9110 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _080C9266 + .align 2, 0 +_080C9110: .4byte gUnknown_20399A8 +_080C9114: + bl sub_080CF948 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C9120 + b _080C9268 +_080C9120: + ldr r0, _080C912C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _080C9266 + .align 2, 0 +_080C912C: .4byte gUnknown_20399A8 +_080C9130: + bl sub_080CF94C + ldr r4, _080C9154 + ldr r1, [r4] + ldr r5, _080C9158 + adds r1, r1, r5 + strh r0, [r1] + movs r0, #0 + ldrsh r1, [r1, r0] + cmp r1, #0x15 + bgt _080C915C + cmp r1, #0x12 + bge _080C916E + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C9162 + b _080C9268 + .align 2, 0 +_080C9154: .4byte gUnknown_20399A8 +_080C9158: .4byte 0x0000078E +_080C915C: + cmp r1, #0x16 + beq _080C9188 + b _080C9268 +_080C9162: + movs r0, #1 + bl sub_080CCA24 + bl sub_080CA638 + b _080C923C +_080C916E: + movs r0, #5 + bl sub_080A306C + bl sub_080CF9DC + ldr r1, [r4] + adds r2, r1, r5 + ldrh r0, [r2] + subs r0, #0x12 + strh r0, [r2] + ldrb r0, [r1] + adds r0, #1 + b _080C9266 +_080C9188: + movs r0, #5 + bl sub_080A306C + ldr r0, [r4] + movs r1, #0xf2 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0x10 + strh r1, [r0] + bl sub_080CF9DC + bl sub_080CA638 + ldr r1, [r4] + movs r0, #6 + b _080C9266 +_080C91A8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C9268 + ldr r4, _080C91D0 + ldr r0, [r4] + ldr r1, _080C91D4 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080CA680 + movs r0, #3 + bl sub_080CA4BC + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + b _080C9266 + .align 2, 0 +_080C91D0: .4byte gUnknown_20399A8 +_080C91D4: .4byte 0x0000078E +_080C91D8: + bl sub_080CF94C + ldr r4, _080C9204 + ldr r1, [r4] + movs r5, #0xf2 + lsls r5, r5, #3 + adds r1, r1, r5 + strh r0, [r1] + movs r0, #0 + ldrsh r1, [r1, r0] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C9268 + adds r0, #1 + cmp r1, r0 + bne _080C9208 + bl sub_080CA638 + ldr r1, [r4] + movs r0, #0 + b _080C9266 + .align 2, 0 +_080C9204: .4byte gUnknown_20399A8 +_080C9208: + movs r0, #5 + bl sub_080A306C + bl sub_080CA638 + ldr r1, [r4] + adds r1, r1, r5 + ldrh r0, [r1] + subs r0, #0x17 + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080CBEF4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + b _080C9266 +_080C922C: + bl sub_080CBF24 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C9268 + movs r0, #1 + bl sub_080CCA24 +_080C923C: + ldr r0, _080C9244 + bl sub_080C781C + b _080C9268 + .align 2, 0 +_080C9244: .4byte sub_080C7B48 +_080C9248: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C9268 + ldr r4, _080C9270 + ldr r0, [r4] + movs r1, #0xf2 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080CBEF4 + ldr r1, [r4] + movs r0, #5 +_080C9266: + strb r0, [r1] +_080C9268: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C9270: .4byte gUnknown_20399A8 + thumb_func_end sub_080C90C0 + + thumb_func_start sub_080C9274 +sub_080C9274: @ 0x080C9274 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _080C928C + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, #1 + beq _080C92C8 + cmp r4, #1 + bgt _080C9290 + cmp r4, #0 + beq _080C929A + b _080C9354 + .align 2, 0 +_080C928C: .4byte gUnknown_20399A8 +_080C9290: + cmp r4, #2 + beq _080C9320 + cmp r4, #3 + beq _080C9338 + b _080C9354 +_080C929A: + movs r0, #5 + bl sub_080CA4BC + ldr r0, [r5] + ldr r1, _080C92C0 + adds r0, r0, r1 + ldr r2, _080C92C4 + str r4, [sp] + movs r1, #0xa + movs r3, #3 + bl sub_080C7080 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080C716C + b _080C932A + .align 2, 0 +_080C92C0: .4byte 0x00001E5C +_080C92C4: .4byte 0x0000DAC7 +_080C92C8: + bl sub_080C7188 + ldr r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080C9318 + adds r1, r1, r2 + strh r0, [r1] + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0xc8 + beq _080C9354 + bl sub_080CA638 + bl sub_080C717C + bl sub_080C7128 + ldr r0, [r5] + ldr r2, _080C9318 + adds r1, r0, r2 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0xc9 + beq _080C9308 + adds r4, r0, #0 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _080C932A +_080C9308: + movs r0, #1 + bl sub_080CCA24 + ldr r0, _080C931C + bl sub_080C781C + b _080C9354 + .align 2, 0 +_080C9318: .4byte 0x000002CA +_080C931C: .4byte sub_080C7B48 +_080C9320: + ldr r1, _080C9334 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080CBCD8 +_080C932A: + ldr r1, [r5] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C9354 + .align 2, 0 +_080C9334: .4byte 0x000002CA +_080C9338: + bl sub_080CBDC0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C9354 + ldr r0, [r5] + ldr r2, _080C935C + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_080D15B8 + ldr r0, _080C9360 + bl sub_080C781C +_080C9354: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C935C: .4byte 0x000002CA +_080C9360: .4byte sub_080C7B48 + thumb_func_end sub_080C9274 + + thumb_func_start sub_080C9364 +sub_080C9364: @ 0x080C9364 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _080C9378 + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, #0 + beq _080C937C + cmp r4, #1 + beq _080C939A + b _080C93B4 + .align 2, 0 +_080C9378: .4byte gUnknown_20399A8 +_080C937C: + bl sub_080CDFDC + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r5] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C93B4 +_080C939A: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C93B4 + ldr r0, _080C93BC + strb r4, [r0] + ldr r1, [r5] + movs r0, #2 + strb r0, [r1, #2] + ldr r0, _080C93C0 + bl sub_080C781C +_080C93B4: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C93BC: .4byte gUnknown_20399AF +_080C93C0: .4byte sub_080C96EC + thumb_func_end sub_080C9364 + + thumb_func_start sub_080C93C4 +sub_080C93C4: @ 0x080C93C4 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _080C93D8 + ldr r0, [r5] + ldrb r4, [r0] + cmp r4, #0 + beq _080C93DC + cmp r4, #1 + beq _080C93FA + b _080C9414 + .align 2, 0 +_080C93D8: .4byte gUnknown_20399A8 +_080C93DC: + bl sub_080CE064 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r5] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C9414 +_080C93FA: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080C9414 + ldr r0, _080C941C + strb r1, [r0] + ldr r0, [r5] + strb r4, [r0, #2] + ldr r0, _080C9420 + bl sub_080C781C +_080C9414: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C941C: .4byte gUnknown_20399AF +_080C9420: .4byte sub_080C96EC + thumb_func_end sub_080C93C4 + + thumb_func_start sub_080C9424 +sub_080C9424: @ 0x080C9424 + push {r4, lr} + sub sp, #4 + ldr r4, _080C9438 + ldr r0, [r4] + ldrb r1, [r0] + cmp r1, #0 + beq _080C943C + cmp r1, #1 + beq _080C9456 + b _080C9472 + .align 2, 0 +_080C9438: .4byte gUnknown_20399A8 +_080C943C: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C9472 +_080C9456: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080C9472 + ldr r1, _080C947C + movs r0, #2 + strb r0, [r1] + ldr r1, [r4] + movs r0, #3 + strb r0, [r1, #2] + ldr r0, _080C9480 + bl sub_080C781C +_080C9472: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C947C: .4byte gUnknown_20399AF +_080C9480: .4byte sub_080C96EC + thumb_func_end sub_080C9424 + + thumb_func_start sub_080C9484 +sub_080C9484: @ 0x080C9484 + push {r4, lr} + ldr r0, _080C949C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #4 + bls _080C9492 + b _080C95A4 +_080C9492: + lsls r0, r0, #2 + ldr r1, _080C94A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C949C: .4byte gUnknown_20399A8 +_080C94A0: .4byte _080C94A4 +_080C94A4: @ jump table + .4byte _080C94B8 @ case 0 + .4byte _080C9514 @ case 1 + .4byte _080C9528 @ case 2 + .4byte _080C9564 @ case 3 + .4byte _080C9580 @ case 4 +_080C94B8: + bl sub_080CE34C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C94DC + movs r0, #0x20 + bl sub_080A306C + movs r0, #0xf + bl sub_080CA4BC + ldr r0, _080C94D8 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C95A4 + .align 2, 0 +_080C94D8: .4byte gUnknown_20399A8 +_080C94DC: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C94F4 + ldr r0, _080C94F0 + bl sub_080C781C + b _080C95A4 + .align 2, 0 +_080C94F0: .4byte sub_080C8DE8 +_080C94F4: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_080CA4BC + movs r0, #0 + bl sub_080CA600 + ldr r0, _080C9510 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + b _080C95A4 + .align 2, 0 +_080C9510: .4byte gUnknown_20399A8 +_080C9514: + ldr r0, _080C9524 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C95A4 + b _080C9546 + .align 2, 0 +_080C9524: .4byte gUnknown_3002360 +_080C9528: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080C9558 + cmp r1, #0 + bgt _080C9542 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C9546 + b _080C95A4 +_080C9542: + cmp r1, #1 + bne _080C95A4 +_080C9546: + bl sub_080CA638 + ldr r0, _080C9554 + bl sub_080C781C + b _080C95A4 + .align 2, 0 +_080C9554: .4byte sub_080C7B48 +_080C9558: + movs r0, #3 + bl sub_080A306C + bl sub_080CA638 + b _080C956E +_080C9564: + movs r0, #0x14 + movs r1, #0 + movs r2, #1 + bl sub_080FA464 +_080C956E: + ldr r0, _080C957C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C95A4 + .align 2, 0 +_080C957C: .4byte gUnknown_20399A8 +_080C9580: + bl sub_080FA4A0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080C95A4 + bl sub_080CA444 + bl sub_0806B004 + ldr r1, _080C95AC + strb r0, [r1] + ldr r0, _080C95B0 + ldr r0, [r0] + strb r4, [r0, #2] + ldr r0, _080C95B4 + bl sub_080C781C +_080C95A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C95AC: .4byte gUnknown_202418D +_080C95B0: .4byte gUnknown_20399A8 +_080C95B4: .4byte sub_080C96EC + thumb_func_end sub_080C9484 + + thumb_func_start sub_080C95B8 +sub_080C95B8: @ 0x080C95B8 + push {r4, lr} + ldr r0, _080C95D0 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #4 + bls _080C95C6 + b _080C96D8 +_080C95C6: + lsls r0, r0, #2 + ldr r1, _080C95D4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080C95D0: .4byte gUnknown_20399A8 +_080C95D4: .4byte _080C95D8 +_080C95D8: @ jump table + .4byte _080C95EC @ case 0 + .4byte _080C9648 @ case 1 + .4byte _080C965C @ case 2 + .4byte _080C9698 @ case 3 + .4byte _080C96B4 @ case 4 +_080C95EC: + bl sub_080CE34C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C9610 + movs r0, #0x20 + bl sub_080A306C + movs r0, #0xf + bl sub_080CA4BC + ldr r0, _080C960C + ldr r1, [r0] + movs r0, #1 + strb r0, [r1] + b _080C96D8 + .align 2, 0 +_080C960C: .4byte gUnknown_20399A8 +_080C9610: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080C9628 + ldr r0, _080C9624 + bl sub_080C781C + b _080C96D8 + .align 2, 0 +_080C9624: .4byte sub_080C8DE8 +_080C9628: + movs r0, #5 + bl sub_080A306C + movs r0, #0x12 + bl sub_080CA4BC + movs r0, #0 + bl sub_080CA600 + ldr r0, _080C9644 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + b _080C96D8 + .align 2, 0 +_080C9644: .4byte gUnknown_20399A8 +_080C9648: + ldr r0, _080C9658 + ldrh r1, [r0, #0x2e] + movs r0, #0xf3 + ands r0, r1 + cmp r0, #0 + beq _080C96D8 + b _080C967C + .align 2, 0 +_080C9658: .4byte gUnknown_3002360 +_080C965C: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _080C967C + cmp r1, #0 + bgt _080C9676 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080C968C + b _080C96D8 +_080C9676: + cmp r1, #1 + beq _080C968C + b _080C96D8 +_080C967C: + bl sub_080CA638 + ldr r0, _080C9688 + bl sub_080C781C + b _080C96D8 + .align 2, 0 +_080C9688: .4byte sub_080C7B48 +_080C968C: + movs r0, #3 + bl sub_080A306C + bl sub_080CA638 + b _080C96A2 +_080C9698: + movs r0, #0x14 + movs r1, #0 + movs r2, #0 + bl sub_080FA464 +_080C96A2: + ldr r0, _080C96B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080C96D8 + .align 2, 0 +_080C96B0: .4byte gUnknown_20399A8 +_080C96B4: + bl sub_080FA4A0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080C96D8 + bl sub_080CA444 + bl sub_0806B004 + ldr r1, _080C96E0 + strb r0, [r1] + ldr r0, _080C96E4 + ldr r0, [r0] + strb r4, [r0, #2] + ldr r0, _080C96E8 + bl sub_080C781C +_080C96D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C96E0: .4byte gUnknown_202418D +_080C96E4: .4byte gUnknown_20399A8 +_080C96E8: .4byte sub_080C96EC + thumb_func_end sub_080C95B8 + + thumb_func_start sub_080C96EC +sub_080C96EC: @ 0x080C96EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080C9718 + ldr r0, [r0] + ldrb r4, [r0, #2] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080C9720 + bl sub_080D0B1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080C9720 + bl sub_080D0B74 + ldr r1, _080C971C + b _080C9724 + .align 2, 0 +_080C9718: .4byte gUnknown_20399A8 +_080C971C: .4byte gUnknown_20399B2 +_080C9720: + ldr r1, _080C9744 + movs r0, #0 +_080C9724: + strh r0, [r1] + cmp r4, #1 + beq _080C974C + cmp r4, #1 + ble _080C9736 + cmp r4, #2 + beq _080C9790 + cmp r4, #3 + beq _080C97BC +_080C9736: + bl sub_080C983C + ldr r0, _080C9748 + bl sub_08000540 + b _080C97CA + .align 2, 0 +_080C9744: .4byte gUnknown_20399B2 +_080C9748: .4byte sub_080C6F10 +_080C974C: + ldr r0, _080C9780 + ldr r1, [r0] + ldr r2, _080C9784 + adds r0, r1, r2 + ldr r0, [r0] + mov r8, r0 + subs r2, #5 + adds r0, r1, r2 + ldrb r6, [r0] + subs r2, #1 + adds r0, r1, r2 + ldrb r5, [r0] + ldr r0, _080C9788 + adds r1, r1, r0 + ldrb r4, [r1] + bl sub_080C983C + ldr r0, _080C978C + str r0, [sp] + adds r0, r4, #0 + mov r1, r8 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_081BF280 + b _080C97CA + .align 2, 0 +_080C9780: .4byte gUnknown_20399A8 +_080C9784: .4byte 0x0000218C +_080C9788: .4byte 0x00002188 +_080C978C: .4byte sub_080C7688 +_080C9790: + bl sub_080C983C + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + movs r0, #0 + str r0, [sp] + ldr r0, _080C97B8 + str r0, [sp, #4] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080E2244 + b _080C97CA + .align 2, 0 +_080C97B8: .4byte sub_080C7688 +_080C97BC: + bl sub_080C983C + ldr r2, _080C97DC + movs r0, #0xb + movs r1, #0 + bl sub_081AAA08 +_080C97CA: + adds r0, r7, #0 + bl sub_080A8964 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C97DC: .4byte sub_080C7688 + thumb_func_end sub_080C96EC + + thumb_func_start sub_080C97E0 +sub_080C97E0: @ 0x080C97E0 + push {lr} + sub sp, #4 + ldr r0, _080C9814 + ldrh r1, [r0] + mov r0, sp + strh r1, [r0] + cmp r1, #0 + beq _080C9834 + bl sub_080CF684 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080C9818 + ldrb r0, [r0] + cmp r0, #0 + beq _080C9820 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080C981C + adds r0, r0, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + b _080C982A + .align 2, 0 +_080C9814: .4byte gUnknown_203CB48 +_080C9818: .4byte gUnknown_20399AC +_080C981C: .4byte gUnknown_2024190 +_080C9820: + adds r0, r1, #0 + movs r1, #0xc + mov r2, sp + bl sub_080D1678 +_080C982A: + mov r0, sp + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC +_080C9834: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C97E0 + + thumb_func_start sub_080C983C +sub_080C983C: @ 0x080C983C + push {r4, lr} + bl sub_080D1E90 + bl sub_080CFA58 + ldr r4, _080C985C + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + bl sub_080034D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C985C: .4byte gUnknown_20399A8 + thumb_func_end sub_080C983C + + thumb_func_start sub_080C9860 +sub_080C9860: @ 0x080C9860 + push {lr} + sub sp, #4 + ldr r1, _080C988C + movs r0, #0xe + bl sub_08001144 + ldr r1, _080C9890 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r0, _080C9894 + ldr r1, _080C9898 + bl LZ77UnCompVram + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080C988C: .4byte 0x00001F0F +_080C9890: .4byte gUnknown_854BBFC +_080C9894: .4byte gUnknown_854BC94 +_080C9898: .4byte 0x0600F800 + thumb_func_end sub_080C9860 + + thumb_func_start sub_080C989C +sub_080C989C: @ 0x080C989C + push {lr} + movs r0, #3 + movs r1, #0x80 + movs r2, #1 + bl sub_08001D1C + movs r0, #3 + movs r1, #0x80 + movs r2, #2 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C989C + + thumb_func_start sub_080C98B8 +sub_080C98B8: @ 0x080C98B8 + push {r4, r5, lr} + sub sp, #4 + ldr r1, _080C9904 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r1, _080C9908 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r0, _080C990C + ldr r5, _080C9910 + ldr r1, [r5] + ldr r4, _080C9914 + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r1, [r5] + adds r1, r1, r4 + movs r0, #1 + bl sub_0800212C + movs r0, #1 + bl sub_08001B48 + movs r0, #1 + bl sub_08199654 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080C9904: .4byte gUnknown_854C9E4 +_080C9908: .4byte gUnknown_854BF9C +_080C990C: .4byte gUnknown_854BDC0 +_080C9910: .4byte gUnknown_20399A8 +_080C9914: .4byte 0x00005AC4 + thumb_func_end sub_080C98B8 + + thumb_func_start sub_080C9918 +sub_080C9918: @ 0x080C9918 + push {lr} + ldr r0, _080C9930 + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080C9934 + bl sub_08004480 + movs r0, #1 + b _080C9936 + .align 2, 0 +_080C9930: .4byte gUnknown_854C9C4 +_080C9934: + movs r0, #0 +_080C9936: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080C9918 + + thumb_func_start sub_080C993C +sub_080C993C: @ 0x080C993C + push {lr} + ldr r0, _080C9948 + bl sub_0800845C + pop {r0} + bx r0 + .align 2, 0 +_080C9948: .4byte gUnknown_854C9F4 + thumb_func_end sub_080C993C + + thumb_func_start sub_080C994C +sub_080C994C: @ 0x080C994C + push {lr} + ldr r0, _080C9984 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C9988 + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C998C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _080C9990 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + beq _080C9998 + ldr r0, _080C9994 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + b _080C99A2 + .align 2, 0 +_080C9984: .4byte gUnknown_854BEFC +_080C9988: .4byte gUnknown_854BF1C +_080C998C: .4byte gUnknown_854C9A4 +_080C9990: .4byte gUnknown_20399A8 +_080C9994: .4byte gUnknown_854BF5C +_080C9998: + ldr r0, _080C99C0 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 +_080C99A2: + ldr r1, _080C99C4 + movs r0, #0xa + bl sub_08001144 + bl sub_080C9B8C + bl sub_080C99C8 + bl sub_080C9A38 + bl sub_080C9AA4 + pop {r0} + bx r0 + .align 2, 0 +_080C99C0: .4byte gUnknown_854BF7C +_080C99C4: .4byte 0x00001E05 + thumb_func_end sub_080C994C + + thumb_func_start sub_080C99C8 +sub_080C99C8: @ 0x080C99C8 + push {r4, lr} + ldr r1, _080C9A28 + movs r0, #0x10 + movs r2, #0 + bl sub_081204D4 + ldr r4, _080C9A2C + ldr r1, [r4] + ldr r3, _080C9A30 + adds r1, r1, r3 + str r0, [r1] + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + ldr r0, [r4] + adds r0, r0, r3 + ldr r0, [r0] + adds r0, #0x43 + movs r1, #1 + strb r1, [r0] + ldr r0, [r4] + adds r0, 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_08008338 + ldr r1, [r4] + movs r2, #0xda + lsls r2, r2, #4 + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r2, _080C9A34 + adds r0, r0, r2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9A28: .4byte 0x0000DAC8 +_080C9A2C: .4byte gUnknown_20399A8 +_080C9A30: .4byte 0x00000D94 +_080C9A34: .4byte 0x06010000 + thumb_func_end sub_080C99C8 + + thumb_func_start sub_080C9A38 +sub_080C9A38: @ 0x080C9A38 + push {r4, lr} + sub sp, #8 + ldr r0, _080C9A90 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + mov r0, sp + bl sub_08008210 + movs r4, #0 +_080C9A4E: + lsls r1, r4, #6 + subs r1, r1, r4 + adds r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _080C9A94 + movs r2, #9 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080C9A98 + ldr r2, [r1] + lsls r1, r4, #2 + ldr r3, _080C9A9C + adds r2, r2, r3 + adds r2, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080C9AA0 + adds r1, r1, r0 + str r1, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _080C9A4E + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9A90: .4byte gUnknown_854C9FC +_080C9A94: .4byte gUnknown_854CB6C +_080C9A98: .4byte gUnknown_20399A8 +_080C9A9C: .4byte 0x00000D98 +_080C9AA0: .4byte gUnknown_20205AC + thumb_func_end sub_080C9A38 + + thumb_func_start sub_080C9AA4 +sub_080C9AA4: @ 0x080C9AA4 + push {lr} + ldr r0, _080C9ACC + ldr r1, [r0] + ldr r2, _080C9AD0 + adds r0, r1, r2 + ldrh r0, [r0] + subs r2, #4 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080C9CC0 + bl sub_080C9D70 + bl sub_080C9EC0 + movs r0, #0 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 +_080C9ACC: .4byte gUnknown_20399A8 +_080C9AD0: .4byte 0x00000CE4 + thumb_func_end sub_080C9AA4 + + thumb_func_start sub_080C9AD4 +sub_080C9AD4: @ 0x080C9AD4 + push {lr} + bl sub_080C9AA4 + ldr r3, _080C9B24 + ldr r0, [r3] + movs r1, #0x89 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r2, [r0] + cmp r2, #0 + beq _080C9B20 + ldrb r0, [r2, #1] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #1] + ldr r1, [r3] + movs r0, #0x89 + lsls r0, r0, #6 + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0xa + strh r0, [r2, #0x2e] + ldr r2, [r1] + movs r0, #1 + strh r0, [r2, #0x30] + ldr r2, [r1] + ldr r0, _080C9B28 + str r0, [r2, #0x1c] + ldr r0, [r1] + ldrh r0, [r0, #0x2e] + lsls r1, r0, #0xc + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 +_080C9B20: + pop {r0} + bx r0 + .align 2, 0 +_080C9B24: .4byte gUnknown_20399A8 +_080C9B28: .4byte sub_080C9B44 + thumb_func_end sub_080C9AD4 + + thumb_func_start sub_080C9B2C +sub_080C9B2C: @ 0x080C9B2C + ldr r0, _080C9B40 + ldr r0, [r0] + movs r1, #0x89 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_080C9B40: .4byte gUnknown_20399A8 + thumb_func_end sub_080C9B2C + + thumb_func_start sub_080C9B44 +sub_080C9B44: @ 0x080C9B44 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x30] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080C9B5A + movs r0, #0 + strh r0, [r4, #0x2e] +_080C9B5A: + ldrh r0, [r4, #0x2e] + lsls r1, r0, #0xc + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080C9B82 + ldrb r0, [r4, #1] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #1] + ldr r0, _080C9B88 + str r0, [r4, #0x1c] +_080C9B82: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9B88: .4byte sub_08007140 + thumb_func_end sub_080C9B44 + + thumb_func_start sub_080C9B8C +sub_080C9B8C: @ 0x080C9B8C + push {r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r0, _080C9C20 + mov ip, r0 + ldr r1, [r0] + ldr r4, _080C9C24 + adds r0, r1, r4 + str r0, [sp, #0x18] + add r3, sp, #0x18 + movs r0, #0x82 + lsls r0, r0, #0xa + str r0, [r3, #4] + ldr r5, _080C9C28 + adds r1, r1, r5 + str r1, [sp, #0x20] + ldr r0, _080C9C2C + add r2, sp, #0x20 + str r0, [r2, #4] + mov r1, sp + ldr r0, _080C9C30 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + movs r6, #0 + adds r7, r2, #0 + mov r5, ip + movs r2, #0 + ldr r1, _080C9C34 +_080C9BC6: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r6 + strb r2, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r1 + bls _080C9BC6 + movs r6, #0 + ldr r5, _080C9C20 + ldr r4, _080C9C28 + movs r2, #0 +_080C9BE0: + ldr r0, [r5] + lsls r1, r6, #1 + adds r0, r0, r4 + adds r0, r0, r1 + strh r2, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0xf + bls _080C9BE0 + ldr r0, _080C9C20 + ldr r0, [r0] + movs r6, #0x89 + lsls r6, r6, #6 + adds r0, r0, r6 + movs r1, #0 + str r1, [r0] + adds r0, r3, #0 + bl sub_08008210 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _080C9C94 + adds r0, r7, #0 + bl sub_0800845C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _080C9C94 + b _080C9C80 + .align 2, 0 +_080C9C20: .4byte gUnknown_20399A8 +_080C9C24: .4byte 0x000022C4 +_080C9C28: .4byte 0x00002244 +_080C9C2C: .4byte 0x0000DAC6 +_080C9C30: .4byte gUnknown_854CA04 +_080C9C34: .4byte 0x000007FF +_080C9C38: + ldr r0, _080C9C6C + ldr r2, [r0] + movs r7, #0x89 + lsls r7, r7, #6 + adds r3, r2, r7 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080C9C70 + adds r0, r0, r1 + str r0, [r3] + lsls r0, r4, #4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r3, _080C9C74 + adds r1, r2, r3 + strh r0, [r1] + ldr r6, _080C9C78 + adds r2, r2, r6 + lsls r0, r5, #5 + ldr r7, _080C9C7C + adds r0, r0, r7 + str r0, [r2] + b _080C9C94 + .align 2, 0 +_080C9C6C: .4byte gUnknown_20399A8 +_080C9C70: .4byte gUnknown_20205AC +_080C9C74: .4byte 0x0000223A +_080C9C78: .4byte 0x0000223C +_080C9C7C: .4byte 0x06010000 +_080C9C80: + mov r0, sp + movs r1, #0x28 + movs r2, #0x30 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + bne _080C9C38 +_080C9C94: + ldr r0, _080C9CB8 + ldr r0, [r0] + movs r1, #0x89 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _080C9CB0 + movs r0, #2 + bl sub_08008280 + ldr r0, _080C9CBC + bl sub_08008564 +_080C9CB0: + add sp, #0x28 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C9CB8: .4byte gUnknown_20399A8 +_080C9CBC: .4byte 0x0000DAC6 + thumb_func_end sub_080C9B8C + + thumb_func_start sub_080C9CC0 +sub_080C9CC0: @ 0x080C9CC0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r3, r1, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r6, _080C9D3C + ldr r2, [r6] + movs r7, #0x89 + lsls r7, r7, #6 + adds r0, r2, r7 + ldr r0, [r0] + cmp r0, #0 + beq _080C9D66 + cmp r4, #0 + beq _080C9D5C + lsls r0, r4, #3 + ldr r1, _080C9D40 + adds r0, r0, r1 + ldr r5, _080C9D44 + adds r1, r2, r5 + movs r2, #1 + str r2, [sp] + adds r2, r4, #0 + bl sub_080344AC + ldr r1, [r6] + ldr r2, _080C9D48 + adds r0, r1, r2 + ldr r0, [r0] + ldr r4, _080C9D4C + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r0, [r6] + adds r5, r0, r5 + ldr r1, _080C9D50 + adds r0, r0, r1 + ldr r1, [r0] + ldr r2, _080C9D54 + adds r0, r5, #0 + bl CpuSet + ldr r0, [r6] + adds r4, r0, r4 + ldr r2, _080C9D58 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, [r6] + adds r0, r0, r7 + ldr r1, [r0] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + b _080C9D66 + .align 2, 0 +_080C9D3C: .4byte gUnknown_20399A8 +_080C9D40: .4byte gUnknown_82DDA1C +_080C9D44: .4byte 0x000022C4 +_080C9D48: .4byte 0x00000CDC +_080C9D4C: .4byte 0x00002244 +_080C9D50: .4byte 0x0000223C +_080C9D54: .4byte 0x04000200 +_080C9D58: .4byte 0x0000223A +_080C9D5C: + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080C9D66: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080C9CC0 + + thumb_func_start sub_080C9D70 +sub_080C9D70: @ 0x080C9D70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r6, _080C9DF0 + ldr r2, [r6] + ldrb r0, [r2, #1] + cmp r0, #3 + beq _080C9DFC + movs r4, #0 + movs r5, #0 + mov r8, r6 +_080C9D90: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080C9DF4 + adds r0, r0, r1 + mov r2, r8 + ldr r1, [r2] + adds r2, r1, r0 + movs r3, #0 + cmp r4, #2 + bne _080C9DA8 + movs r3, #4 +_080C9DA8: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r7, #0xff + str r7, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + movs r0, #0 + movs r1, #1 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #0 + adds r0, #0xd + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #2 + bls _080C9D90 + ldr r0, _080C9DF0 + ldr r2, [r0] + ldr r0, _080C9DF8 + adds r2, r2, r0 + adds r0, r5, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + str r7, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r3, #0 + bl sub_0800449C + b _080C9E52 + .align 2, 0 +_080C9DF0: .4byte gUnknown_20399A8 +_080C9DF4: .4byte 0x00000CF9 +_080C9DF8: .4byte 0x00000D65 +_080C9DFC: + ldr r1, _080C9E8C + adds r2, r2, r1 + movs r1, #0 + str r1, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #0 + movs r3, #0 + bl sub_0800449C + movs r4, #0 + movs r5, #0xf +_080C9E16: + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r2, _080C9E90 + adds r0, r0, r2 + ldr r1, [r6] + adds r2, r1, r0 + movs r3, #0 + cmp r4, #2 + bne _080C9E2C + movs r3, #4 +_080C9E2C: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #0 + adds r0, #0xd + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #2 + bls _080C9E16 +_080C9E52: + movs r0, #0 + movs r1, #2 + bl sub_08003528 + ldr r4, _080C9E94 + ldr r1, [r4] + ldr r2, _080C9E98 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _080C9EA0 + adds r2, #7 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #0xb5 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_081205A4 + ldr r0, [r4] + ldr r1, _080C9E9C + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + b _080C9EAE + .align 2, 0 +_080C9E8C: .4byte 0x00000D65 +_080C9E90: .4byte 0x00000CF9 +_080C9E94: .4byte gUnknown_20399A8 +_080C9E98: .4byte 0x00000CE4 +_080C9E9C: .4byte 0x00000D94 +_080C9EA0: + ldr r2, _080C9EBC + adds r0, r1, r2 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 +_080C9EAE: + strb r0, [r1] + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080C9EBC: .4byte 0x00000D94 + thumb_func_end sub_080C9D70 + + thumb_func_start sub_080C9EC0 +sub_080C9EC0: @ 0x080C9EC0 + push {r4, lr} + sub sp, #4 + ldr r0, _080C9F0C + ldr r0, [r0] + ldr r1, _080C9F10 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080C9F18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #8 + bl sub_080D204C + movs r4, #0 +_080C9EE4: + ldr r0, _080C9F0C + ldr r0, [r0] + lsls r1, r4, #2 + ldr r2, _080C9F14 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r4, #1 + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007ED8 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _080C9EE4 + b _080C9F4A + .align 2, 0 +_080C9F0C: .4byte gUnknown_20399A8 +_080C9F10: .4byte 0x00000CE4 +_080C9F14: .4byte 0x00000D98 +_080C9F18: + movs r0, #2 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #2 + movs r3, #8 + bl sub_080D204C + movs r4, #0 +_080C9F2A: + ldr r0, _080C9F60 + ldr r0, [r0] + lsls r1, r4, #2 + ldr r2, _080C9F64 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r4, #0x19 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _080C9F2A +_080C9F4A: + movs r0, #0 + bl sub_080D21B8 + movs r0, #1 + bl sub_08199654 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080C9F60: .4byte gUnknown_20399A8 +_080C9F64: .4byte 0x00000D98 + thumb_func_end sub_080C9EC0 + + thumb_func_start sub_080C9F68 +sub_080C9F68: @ 0x080C9F68 + push {r4, lr} + sub sp, #4 + ldr r0, _080C9FE0 + ldr r4, _080C9FE4 + ldr r1, [r4] + adds r1, #0xb0 + bl LZ77UnCompWram + ldr r0, _080C9FE8 + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + ldr r2, [r4] + adds r2, #0xb0 + movs r0, #0x16 + str r0, [sp] + movs r0, #1 + movs r1, #1 + movs r3, #0xc + bl sub_080D1EE4 + ldr r2, _080C9FEC + movs r0, #4 + str r0, [sp] + movs r0, #2 + movs r1, #1 + movs r3, #9 + bl sub_080D1EE4 + movs r0, #1 + movs r1, #0xa + movs r2, #0 + bl sub_080D2010 + movs r0, #2 + movs r1, #0x15 + movs r2, #0 + bl sub_080D2010 + bl sub_080CA2D8 + ldr r0, _080C9FF0 + ldrb r0, [r0] + cmp r0, #0 + beq _080C9FF4 + movs r0, #1 + bl sub_080CA1E8 + movs r0, #1 + bl sub_080CB05C + movs r0, #2 + bl sub_080D21B8 + movs r0, #1 + bl sub_080D21B8 + b _080CA016 + .align 2, 0 +_080C9FE0: .4byte gUnknown_854C65C +_080C9FE4: .4byte gUnknown_20399A8 +_080C9FE8: .4byte gUnknown_854BF3C +_080C9FEC: .4byte gUnknown_854C70C +_080C9FF0: .4byte gUnknown_20399AC +_080C9FF4: + movs r0, #2 + str r0, [sp] + movs r0, #1 + movs r1, #0 + movs r2, #0x14 + movs r3, #0xc + bl sub_080D204C + movs r0, #1 + bl sub_080CA1E8 + movs r0, #1 + bl sub_080D21B8 + movs r0, #2 + bl sub_080D21B8 +_080CA016: + movs r0, #1 + bl sub_08199654 + ldr r0, _080CA030 + ldr r0, [r0] + ldr r1, _080CA034 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA030: .4byte gUnknown_20399A8 +_080CA034: .4byte 0x000002C7 + thumb_func_end sub_080C9F68 + + thumb_func_start sub_080CA038 +sub_080CA038: @ 0x080CA038 + push {lr} + ldr r0, _080CA064 + ldr r1, [r0] + movs r0, #0xb0 + lsls r0, r0, #2 + adds r2, r1, r0 + movs r3, #0 + movs r0, #0x14 + strh r0, [r2] + ldr r0, _080CA068 + adds r2, r1, r0 + movs r0, #2 + strh r0, [r2] + ldr r0, _080CA06C + adds r1, r1, r0 + strb r3, [r1] + movs r0, #0 + bl sub_080CB05C + pop {r0} + bx r0 + .align 2, 0 +_080CA064: .4byte gUnknown_20399A8 +_080CA068: .4byte 0x000002C2 +_080CA06C: .4byte 0x000002C5 + thumb_func_end sub_080CA038 + + thumb_func_start sub_080CA070 +sub_080CA070: @ 0x080CA070 + push {r4, lr} + ldr r4, _080CA0CC + ldr r2, [r4] + ldr r1, _080CA0D0 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0x14 + beq _080CA0DE + movs r0, #0xb0 + lsls r0, r0, #2 + adds r1, r2, r0 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldr r0, _080CA0D4 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_080D2094 + movs r0, #1 + bl sub_080D21B8 + movs r0, #1 + bl sub_08199654 + movs r0, #8 + bl sub_080CB364 + ldr r1, [r4] + ldr r0, _080CA0D0 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x14 + beq _080CA0D8 + movs r0, #1 + b _080CA0E0 + .align 2, 0 +_080CA0CC: .4byte gUnknown_20399A8 +_080CA0D0: .4byte 0x000002C5 +_080CA0D4: .4byte 0x000002C2 +_080CA0D8: + ldr r1, _080CA0E8 + movs r0, #1 + strb r0, [r1] +_080CA0DE: + movs r0, #0 +_080CA0E0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080CA0E8: .4byte gUnknown_20399AC + thumb_func_end sub_080CA070 + + thumb_func_start sub_080CA0EC +sub_080CA0EC: @ 0x080CA0EC + push {r4, lr} + ldr r4, _080CA120 + ldr r1, [r4] + movs r0, #0xb0 + lsls r0, r0, #2 + adds r2, r1, r0 + movs r3, #0 + movs r0, #0 + strh r0, [r2] + ldr r0, _080CA124 + adds r2, r1, r0 + movs r0, #0x16 + strh r0, [r2] + ldr r0, _080CA128 + adds r1, r1, r0 + strb r3, [r1] + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080CA118 + bl sub_080D0A6C +_080CA118: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA120: .4byte gUnknown_20399A8 +_080CA124: .4byte 0x000002C2 +_080CA128: .4byte 0x000002C5 + thumb_func_end sub_080CA0EC + + thumb_func_start sub_080CA12C +sub_080CA12C: @ 0x080CA12C + push {r4, r5, lr} + sub sp, #8 + ldr r5, _080CA1A4 + ldr r2, [r5] + ldr r1, _080CA1A8 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0x14 + beq _080CA1D8 + movs r0, #0xb0 + lsls r0, r0, #2 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r4, _080CA1AC + adds r1, r2, r4 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + movs r1, #3 + bl sub_080D2094 + movs r0, #1 + bl sub_080D21B8 + movs r1, #0x80 + lsls r1, r1, #1 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r3, [r0] + movs r0, #0xc + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r2, #0xa + bl sub_080025E0 + movs r0, #8 + rsbs r0, r0, #0 + bl sub_080CB364 + ldr r1, [r5] + ldr r0, _080CA1A8 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x14 + beq _080CA1B0 + movs r0, #1 + bl sub_08199654 + movs r0, #1 + b _080CA1DA + .align 2, 0 +_080CA1A4: .4byte gUnknown_20399A8 +_080CA1A8: .4byte 0x000002C5 +_080CA1AC: .4byte 0x000002C2 +_080CA1B0: + ldr r0, _080CA1E4 + movs r1, #0 + strb r1, [r0] + bl sub_080CB410 + bl sub_080CE188 + movs r0, #2 + str r0, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #9 + bl sub_080D204C + movs r0, #2 + bl sub_080D21B8 + movs r0, #1 + bl sub_08199654 +_080CA1D8: + movs r0, #0 +_080CA1DA: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080CA1E4: .4byte gUnknown_20399AC + thumb_func_end sub_080CA12C + + thumb_func_start sub_080CA1E8 +sub_080CA1E8: @ 0x080CA1E8 + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CA202 + movs r0, #2 + str r0, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #9 + bl sub_080D204C + b _080CA210 +_080CA202: + movs r0, #2 + str r0, [sp] + movs r1, #0 + movs r2, #2 + movs r3, #9 + bl sub_080D204C +_080CA210: + movs r0, #2 + bl sub_080D21B8 + movs r0, #1 + bl sub_08199654 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CA1E8 + + thumb_func_start sub_080CA224 +sub_080CA224: @ 0x080CA224 + ldr r2, _080CA244 + ldr r0, [r2] + ldr r1, _080CA248 + adds r0, r0, r1 + movs r3, #1 + strb r3, [r0] + ldr r0, [r2] + adds r1, #1 + adds r0, r0, r1 + movs r1, #0x1e + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080CA24C + adds r0, r0, r1 + strb r3, [r0] + bx lr + .align 2, 0 +_080CA244: .4byte gUnknown_20399A8 +_080CA248: .4byte 0x000002C7 +_080CA24C: .4byte 0x000002C9 + thumb_func_end sub_080CA224 + + thumb_func_start sub_080CA250 +sub_080CA250: @ 0x080CA250 + push {lr} + ldr r0, _080CA270 + ldr r0, [r0] + ldr r2, _080CA274 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _080CA26A + movs r0, #0 + strb r0, [r1] + movs r0, #1 + bl sub_080CA1E8 +_080CA26A: + pop {r0} + bx r0 + .align 2, 0 +_080CA270: .4byte gUnknown_20399A8 +_080CA274: .4byte 0x000002C7 + thumb_func_end sub_080CA250 + + thumb_func_start sub_080CA278 +sub_080CA278: @ 0x080CA278 + push {r4, lr} + ldr r3, _080CA2CC + ldr r1, [r3] + ldr r2, _080CA2D0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080CA2C4 + movs r0, #0xb2 + lsls r0, r0, #2 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bls _080CA2C4 + ldr r0, [r3] + movs r1, #0xb2 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r3] + movs r2, #0 + ldr r4, _080CA2D4 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0 + bne _080CA2B8 + movs r2, #1 +_080CA2B8: + strb r2, [r1] + ldr r0, [r3] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080CA1E8 +_080CA2C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA2CC: .4byte gUnknown_20399A8 +_080CA2D0: .4byte 0x000002C7 +_080CA2D4: .4byte 0x000002C9 + thumb_func_end sub_080CA278 + + thumb_func_start sub_080CA2D8 +sub_080CA2D8: @ 0x080CA2D8 + push {r4, lr} + movs r4, #1 +_080CA2DC: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _080CA308 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + adds r0, r4, #0 + bl sub_080CA30C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _080CA2DC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA308: .4byte gUnknown_2024190 + thumb_func_end sub_080CA2D8 + + thumb_func_start sub_080CA30C +sub_080CA30C: @ 0x080CA30C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r7, _080CA378 + cmp r1, #0 + beq _080CA31C + ldr r7, _080CA37C +_080CA31C: + subs r0, #1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x12 + movs r1, #0xe0 + lsls r1, r1, #0xb + adds r0, r0, r1 + lsrs r3, r0, #0x10 + movs r0, #0 + ldr r1, _080CA380 + mov ip, r1 +_080CA338: + movs r2, #0 + adds r4, r7, #0 + adds r4, #8 + adds r5, r3, #0 + adds r5, #0xc + adds r6, r0, #1 +_080CA344: + mov r0, ip + ldr r1, [r0] + adds r0, r3, r2 + lsls r0, r0, #1 + adds r1, #0xb0 + adds r1, r1, r0 + lsls r0, r2, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #3 + bls _080CA344 + adds r7, r4, #0 + lsls r0, r5, #0x10 + lsrs r3, r0, #0x10 + lsls r0, r6, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080CA338 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CA378: .4byte gUnknown_854C76C +_080CA37C: .4byte gUnknown_854C754 +_080CA380: .4byte gUnknown_20399A8 + thumb_func_end sub_080CA30C + + thumb_func_start sub_080CA384 +sub_080CA384: @ 0x080CA384 + push {lr} + sub sp, #4 + bl sub_080CA2D8 + movs r0, #0x16 + str r0, [sp] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0xc + bl sub_080D204C + movs r0, #1 + bl sub_080D21B8 + movs r0, #1 + bl sub_08199654 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CA384 + + thumb_func_start sub_080CA3B0 +sub_080CA3B0: @ 0x080CA3B0 + push {lr} + ldr r0, _080CA3CC + ldr r0, [r0] + ldr r1, _080CA3D0 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + movs r0, #6 + bl sub_080A306C + bl sub_080CA038 + pop {r0} + bx r0 + .align 2, 0 +_080CA3CC: .4byte gUnknown_20399A8 +_080CA3D0: .4byte 0x000002C6 + thumb_func_end sub_080CA3B0 + + thumb_func_start sub_080CA3D4 +sub_080CA3D4: @ 0x080CA3D4 + push {r4, r5, lr} + ldr r4, _080CA3F0 + ldr r0, [r4] + ldr r5, _080CA3F4 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _080CA40E + cmp r0, #1 + bgt _080CA3F8 + cmp r0, #0 + beq _080CA3FE + b _080CA43C + .align 2, 0 +_080CA3F0: .4byte gUnknown_20399A8 +_080CA3F4: .4byte 0x000002C6 +_080CA3F8: + cmp r0, #2 + beq _080CA438 + b _080CA43C +_080CA3FE: + bl sub_080CA070 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CA43C + bl sub_080CD41C + b _080CA428 +_080CA40E: + bl sub_080CCDD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CA43C + ldr r0, [r4] + ldr r1, _080CA434 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080CA428 + bl sub_080C9AD4 +_080CA428: + ldr r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080CA43C + .align 2, 0 +_080CA434: .4byte 0x00000CEA +_080CA438: + movs r0, #0 + b _080CA43E +_080CA43C: + movs r0, #1 +_080CA43E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080CA3D4 + + thumb_func_start sub_080CA444 +sub_080CA444: @ 0x080CA444 + push {r4, lr} + ldr r4, _080CA474 + bl sub_080D15AC + ldrb r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + beq _080CA46E + ldr r0, _080CA478 + bl sub_0809D040 + ldr r4, _080CA47C + bl sub_080D15AC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809CF88 +_080CA46E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA474: .4byte gUnknown_20399B0 +_080CA478: .4byte 0x000008D7 +_080CA47C: .4byte 0x00004036 + thumb_func_end sub_080CA444 + + thumb_func_start sub_080CA480 +sub_080CA480: @ 0x080CA480 + push {lr} + sub sp, #0xc + movs r1, #0xe8 + lsls r1, r1, #5 + movs r0, #8 + bl sub_08001144 + movs r0, #1 + movs r1, #2 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_080CA480 + + thumb_func_start sub_080CA4BC +sub_080CA4BC: @ 0x080CA4BC + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_081AF8C8 + ldr r1, _080CA4E0 + lsls r0, r6, #3 + adds r0, r0, r1 + ldrb r0, [r0, #4] + cmp r0, #7 + bhi _080CA594 + lsls r0, r0, #2 + ldr r1, _080CA4E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CA4E0: .4byte gUnknown_854CA1C +_080CA4E4: .4byte _080CA4E8 +_080CA4E8: @ jump table + .4byte _080CA594 @ case 0 + .4byte _080CA508 @ case 1 + .4byte _080CA508 @ case 2 + .4byte _080CA508 @ case 3 + .4byte _080CA51C @ case 4 + .4byte _080CA51C @ case 5 + .4byte _080CA51C @ case 6 + .4byte _080CA534 @ case 7 +_080CA508: + ldr r0, _080CA514 + ldr r1, [r0] + ldr r0, _080CA518 + adds r1, r1, r0 + b _080CA524 + .align 2, 0 +_080CA514: .4byte gUnknown_20399A8 +_080CA518: .4byte 0x00000CEE +_080CA51C: + ldr r0, _080CA52C + ldr r1, [r0] + ldr r2, _080CA530 + adds r1, r1, r2 +_080CA524: + movs r0, #0 + bl sub_081AF8E4 + b _080CA594 + .align 2, 0 +_080CA52C: .4byte gUnknown_20399A8 +_080CA530: .4byte 0x000021E0 +_080CA534: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CA558 + ldr r0, _080CA550 + ldr r4, [r0] + ldr r0, _080CA554 + adds r4, r4, r0 + bl sub_080D0B58 + adds r1, r0, #0 + adds r0, r4, #0 + b _080CA564 + .align 2, 0 +_080CA550: .4byte gUnknown_20399A8 +_080CA554: .4byte 0x000021EB +_080CA558: + ldr r0, _080CA56C + ldr r1, [r0] + ldr r2, _080CA570 + adds r0, r1, r2 + ldr r2, _080CA574 + adds r1, r1, r2 +_080CA564: + bl sub_080088B8 + adds r2, r0, #0 + b _080CA57A + .align 2, 0 +_080CA56C: .4byte gUnknown_20399A8 +_080CA570: .4byte 0x000021EB +_080CA574: .4byte 0x00000D65 +_080CA578: + adds r2, r1, #0 +_080CA57A: + subs r1, r2, #1 + ldrb r0, [r1] + cmp r0, #0 + beq _080CA578 + movs r0, #0xff + strb r0, [r2] + ldr r0, _080CA5F0 + ldr r1, [r0] + ldr r0, _080CA5F4 + adds r1, r1, r0 + movs r0, #0 + bl sub_081AF8E4 +_080CA594: + ldr r5, _080CA5F0 + ldr r0, [r5] + ldr r4, _080CA5F8 + adds r0, r0, r4 + ldr r2, _080CA5FC + lsls r1, r6, #3 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_081AF900 + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, [r5] + adds r2, r2, r4 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #1 + movs r1, #2 + movs r2, #0xe + bl sub_080981E0 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA5F0: .4byte gUnknown_20399A8 +_080CA5F4: .4byte 0x000021EB +_080CA5F8: .4byte 0x00002190 +_080CA5FC: .4byte gUnknown_854CA1C + thumb_func_end sub_080CA4BC + + thumb_func_start sub_080CA600 +sub_080CA600: @ 0x080CA600 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080CA634 + movs r1, #0xb + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0819862C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CA634: .4byte gUnknown_854CB14 + thumb_func_end sub_080CA600 + + thumb_func_start sub_080CA638 +sub_080CA638: @ 0x080CA638 + push {lr} + movs r0, #1 + movs r1, #0 + bl sub_08198134 + movs r0, #0 + bl sub_08199654 + pop {r0} + bx r0 + thumb_func_end sub_080CA638 + + thumb_func_start sub_080CA64C +sub_080CA64C: @ 0x080CA64C + push {lr} + bl sub_080CF76C + movs r0, #0x12 + bl sub_080CF7B0 + movs r0, #0x13 + bl sub_080CF7B0 + movs r0, #0x14 + bl sub_080CF7B0 + movs r0, #0x15 + bl sub_080CF7B0 + bl sub_080D1D34 + cmp r0, #0 + beq _080CA678 + movs r0, #0x16 + bl sub_080CF7B0 +_080CA678: + bl sub_080CF84C + pop {r0} + bx r0 + thumb_func_end sub_080CA64C + + thumb_func_start sub_080CA680 +sub_080CA680: @ 0x080CA680 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080CF76C + cmp r4, #1 + beq _080CA6BE + cmp r4, #1 + bgt _080CA69A + cmp r4, #0 + beq _080CA6A4 + b _080CA70A +_080CA69A: + cmp r5, #2 + beq _080CA6D8 + cmp r5, #3 + beq _080CA6F2 + b _080CA70A +_080CA6A4: + movs r0, #0x17 + bl sub_080CF7B0 + movs r0, #0x18 + bl sub_080CF7B0 + movs r0, #0x19 + bl sub_080CF7B0 + movs r0, #0x1a + bl sub_080CF7B0 + b _080CA70A +_080CA6BE: + movs r0, #0x1b + bl sub_080CF7B0 + movs r0, #0x1c + bl sub_080CF7B0 + movs r0, #0x1d + bl sub_080CF7B0 + movs r0, #0x1e + bl sub_080CF7B0 + b _080CA70A +_080CA6D8: + movs r0, #0x1f + bl sub_080CF7B0 + movs r0, #0x20 + bl sub_080CF7B0 + movs r0, #0x21 + bl sub_080CF7B0 + movs r0, #0x22 + bl sub_080CF7B0 + b _080CA70A +_080CA6F2: + movs r0, #0x23 + bl sub_080CF7B0 + movs r0, #0x24 + bl sub_080CF7B0 + movs r0, #0x25 + bl sub_080CF7B0 + movs r0, #0x26 + bl sub_080CF7B0 +_080CA70A: + bl sub_080CF84C + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080CA680 + + thumb_func_start sub_080CA714 +sub_080CA714: @ 0x080CA714 + ldr r0, _080CA71C + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CA71C: .4byte gUnknown_20399AD + thumb_func_end sub_080CA714 + + thumb_func_start sub_080CA720 +sub_080CA720: @ 0x080CA720 + push {lr} + bl sub_080CE358 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CA75C + ldr r0, _080CA748 + ldrb r0, [r0] + cmp r0, #0 + beq _080CA74C + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_080D062C + b _080CA75C + .align 2, 0 +_080CA748: .4byte gUnknown_20399AC +_080CA74C: + bl sub_080CF684 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_080D062C +_080CA75C: + ldr r1, _080CA774 + ldrh r0, [r1] + cmp r0, #0 + beq _080CA76E + bl sub_080D07D8 + movs r0, #3 + bl sub_080CF6D0 +_080CA76E: + pop {r0} + bx r0 + .align 2, 0 +_080CA774: .4byte gUnknown_20399B2 + thumb_func_end sub_080CA720 + + thumb_func_start sub_080CA778 +sub_080CA778: @ 0x080CA778 + push {r4, r5, r6, lr} + bl sub_080D27A4 + movs r2, #0 + ldr r3, _080CA808 + ldr r5, _080CA80C + movs r4, #0 + adds r6, r3, #0 +_080CA788: + ldr r0, [r3] + lsls r1, r2, #1 + adds r0, r0, r5 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x27 + bls _080CA788 + movs r2, #0 + ldr r5, _080CA808 + ldr r4, _080CA810 + movs r3, #0 +_080CA7A4: + ldr r0, [r5] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x27 + bls _080CA7A4 + movs r2, #0 + ldr r5, _080CA808 + movs r4, #0xa7 + lsls r4, r4, #4 + movs r3, #0 +_080CA7C2: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + str r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #5 + bls _080CA7C2 + movs r2, #0 + ldr r5, _080CA808 + ldr r4, _080CA814 + movs r3, #0 +_080CA7DE: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + str r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1d + bls _080CA7DE + ldr r0, [r6] + ldr r2, _080CA818 + adds r1, r0, r2 + movs r2, #0 + str r2, [r1] + ldr r1, _080CA81C + adds r0, r0, r1 + strh r2, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA808: .4byte gUnknown_20399A8 +_080CA80C: .4byte 0x00000B08 +_080CA810: .4byte 0x00000B58 +_080CA814: .4byte 0x00000A88 +_080CA818: .4byte 0x00000A6C +_080CA81C: .4byte 0x0000078C + thumb_func_end sub_080CA778 + + thumb_func_start sub_080CA820 +sub_080CA820: @ 0x080CA820 + push {lr} + bl sub_080CE3A0 + lsls r0, r0, #0x18 + movs r1, #1 + cmp r0, #0 + beq _080CA830 + movs r1, #2 +_080CA830: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CA820 + + thumb_func_start sub_080CA838 +sub_080CA838: @ 0x080CA838 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r5, _080CA88C + ldr r0, [r5] + ldr r4, _080CA890 + adds r0, r0, r4 + movs r1, #0 + bl sub_0806A058 + adds r6, r0, #0 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0x41 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_080CA820 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_080CBAA4 + ldr r1, [r5] + ldr r2, _080CA894 + adds r1, r1, r2 + str r0, [r1] + ldr r1, _080CA898 + str r1, [r0, #0x1c] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CA88C: .4byte gUnknown_20399A8 +_080CA890: .4byte 0x000020A4 +_080CA894: .4byte 0x00000A6C +_080CA898: .4byte sub_080CB974 + thumb_func_end sub_080CA838 + + thumb_func_start sub_080CA89C +sub_080CA89C: @ 0x080CA89C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0 + mov r8, r0 + movs r6, #0 + movs r7, #0 +_080CA8B6: + movs r5, #0 + adds r1, r7, #1 + mov sl, r1 +_080CA8BC: + mov r0, sb + adds r1, r6, #0 + movs r2, #0x41 + bl sub_080D15D0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080CA924 + mov r0, sb + adds r1, r6, #0 + movs r2, #0 + bl sub_080D15D0 + adds r1, r0, #0 + lsls r2, r5, #1 + adds r2, r2, r5 + lsls r2, r2, #0x13 + movs r3, #0xc8 + lsls r3, r3, #0xf + adds r2, r2, r3 + asrs r2, r2, #0x10 + lsls r3, r7, #1 + adds r3, r3, r7 + lsls r3, r3, #0x13 + movs r0, #0xb0 + lsls r0, r0, #0xe + adds r3, r3, r0 + movs r0, #2 + str r0, [sp] + movs r0, #0x13 + subs r0, r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + adds r0, r4, #0 + asrs r3, r3, #0x10 + bl sub_080CBAA4 + ldr r1, _080CA91C + ldr r1, [r1] + mov r3, r8 + lsls r2, r3, #2 + ldr r3, _080CA920 + adds r1, r1, r3 + adds r1, r1, r2 + str r0, [r1] + b _080CA934 + .align 2, 0 +_080CA91C: .4byte gUnknown_20399A8 +_080CA920: .4byte 0x00000A88 +_080CA924: + ldr r0, _080CA9AC + ldr r0, [r0] + mov r2, r8 + lsls r1, r2, #2 + ldr r3, _080CA9B0 + adds r0, r0, r3 + adds r0, r0, r1 + str r4, [r0] +_080CA934: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080CA8BC + mov r1, sl + lsls r0, r1, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #4 + bls _080CA8B6 + ldr r0, _080CA9AC + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080CA99A + movs r6, #0 + movs r2, #0xd + rsbs r2, r2, #0 + adds r4, r2, #0 +_080CA96A: + mov r0, sb + adds r1, r6, #0 + movs r2, #0xc + bl sub_080D15D0 + cmp r0, #0 + bne _080CA990 + ldr r0, _080CA9AC + ldr r0, [r0] + lsls r1, r6, #2 + ldr r3, _080CA9B0 + adds r0, r0, r3 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r0, [r2, #1] + ands r0, r4 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #1] +_080CA990: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x1d + bls _080CA96A +_080CA99A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CA9AC: .4byte gUnknown_20399A8 +_080CA9B0: .4byte 0x00000A88 + thumb_func_end sub_080CA89C + + thumb_func_start sub_080CA9B4 +sub_080CA9B4: @ 0x080CA9B4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r7, #0 + movs r1, #0x41 + bl sub_080D1658 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #0 + beq _080CAA4E + adds r0, r7, #0 + movs r1, #6 + bl __umodsi3 + adds r6, r0, #0 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r0, #1 + adds r5, r5, r0 + lsls r5, r5, #0x13 + movs r0, #0xc8 + lsls r0, r0, #0xf + adds r5, r5, r0 + lsrs r5, r5, #0x10 + adds r0, r7, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #0x13 + movs r0, #0xb0 + lsls r0, r0, #0xe + adds r4, r4, r0 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + movs r1, #0 + bl sub_080D1658 + adds r1, r0, #0 + movs r0, #2 + str r0, [sp] + movs r0, #0x13 + subs r0, r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, r8 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080CBAA4 + adds r3, r0, #0 + ldr r0, _080CAA5C + ldr r2, [r0] + lsls r1, r7, #2 + ldr r4, _080CAA60 + adds r0, r2, r4 + adds r0, r0, r1 + str r3, [r0] + ldrb r0, [r2, #1] + cmp r0, #3 + bne _080CAA4E + ldrb r0, [r3, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r3, #1] +_080CAA4E: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CAA5C: .4byte gUnknown_20399A8 +_080CAA60: .4byte 0x00000A88 + thumb_func_end sub_080CA9B4 + + thumb_func_start sub_080CAA64 +sub_080CAA64: @ 0x080CAA64 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r7, _080CAA9C + ldr r6, _080CAAA0 + movs r5, #1 + ldr r4, _080CAAA4 +_080CAA74: + ldr r0, [r7] + lsls r1, r2, #2 + adds r0, r0, r6 + adds r1, r0, r1 + ldr r0, [r1] + cmp r0, #0 + beq _080CAA8C + strh r3, [r0, #0x32] + ldr r0, [r1] + strh r5, [r0, #0x36] + ldr r0, [r1] + str r4, [r0, #0x1c] +_080CAA8C: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1d + bls _080CAA74 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CAA9C: .4byte gUnknown_20399A8 +_080CAAA0: .4byte 0x00000A88 +_080CAAA4: .4byte sub_080CAAEC + thumb_func_end sub_080CAA64 + + thumb_func_start sub_080CAAA8 +sub_080CAAA8: @ 0x080CAAA8 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x30] + movs r3, #0x30 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _080CAAC4 + subs r0, r1, #1 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r2, #0x20] + b _080CAADA +_080CAAC4: + ldr r0, _080CAAE0 + ldr r1, [r0] + ldr r3, _080CAAE4 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrh r0, [r2, #0x34] + strh r0, [r2, #0x20] + ldr r0, _080CAAE8 + str r0, [r2, #0x1c] +_080CAADA: + pop {r0} + bx r0 + .align 2, 0 +_080CAAE0: .4byte gUnknown_20399A8 +_080CAAE4: .4byte 0x00000C66 +_080CAAE8: .4byte sub_08007140 + thumb_func_end sub_080CAAA8 + + thumb_func_start sub_080CAAEC +sub_080CAAEC: @ 0x080CAAEC + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x36] + movs r3, #0x36 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _080CAB00 + subs r0, r1, #1 + strh r0, [r2, #0x36] + b _080CAB1C +_080CAB00: + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r2, #0x20] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x38] + subs r0, #0x45 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb6 + bls _080CAB1C + ldr r0, _080CAB20 + str r0, [r2, #0x1c] +_080CAB1C: + pop {r0} + bx r0 + .align 2, 0 +_080CAB20: .4byte sub_08007140 + thumb_func_end sub_080CAAEC + + thumb_func_start sub_080CAB24 +sub_080CAB24: @ 0x080CAB24 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r7, _080CAB64 +_080CAB2E: + ldr r0, [r7] + lsls r4, r5, #2 + ldr r1, _080CAB68 + adds r0, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080CAB4E + bl sub_080CBB88 + ldr r0, [r7] + ldr r1, _080CAB68 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080CAB4E: + adds r0, r5, #6 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #4 + bls _080CAB2E + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CAB64: .4byte gUnknown_20399A8 +_080CAB68: .4byte 0x00000A88 + thumb_func_end sub_080CAB24 + + thumb_func_start sub_080CAB6C +sub_080CAB6C: @ 0x080CAB6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #8] + lsls r2, r2, #0x10 + movs r1, #0x2c + mov r8, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #0x13 + movs r3, #0xc8 + lsls r3, r3, #0xf + adds r1, r1, r3 + lsrs r1, r1, #0x10 + str r1, [sp, #0x10] + ldr r1, [sp, #8] + adds r1, #1 + lsrs r6, r2, #0x10 + str r6, [sp, #0xc] + asrs r2, r2, #0x10 + muls r1, r2, r1 + ldr r2, [sp, #0x10] + subs r1, r2, r1 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + movs r1, #0x13 + subs r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x14] + movs r3, #0 + mov sb, r3 + adds r5, r0, #0 + ldr r1, _080CAC50 + ldr r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #3 + beq _080CAC64 + movs r7, #4 + lsls r2, r2, #0x10 + mov sl, r2 +_080CABCC: + ldr r6, _080CAC50 + ldr r2, [r6] + lsls r0, r5, #1 + ldr r3, _080CAC54 + adds r1, r2, r3 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _080CAC36 + lsls r4, r5, #2 + ldr r6, _080CAC58 + adds r1, r2, r6 + adds r1, r1, r4 + ldr r1, [r1] + mov r2, r8 + lsls r3, r2, #0x10 + asrs r3, r3, #0x10 + movs r2, #2 + str r2, [sp] + ldr r6, [sp, #0x14] + str r6, [sp, #4] + mov r6, sl + asrs r2, r6, #0x10 + bl sub_080CBAA4 + adds r2, r0, #0 + ldr r1, _080CAC50 + ldr r0, [r1] + ldr r3, _080CAC5C + adds r0, r0, r3 + adds r1, r0, r4 + str r2, [r1] + cmp r2, #0 + beq _080CAC36 + mov r6, sp + ldrh r6, [r6, #8] + 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, _080CAC60 + str r0, [r1, #0x1c] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080CAC36: + adds r0, r5, #6 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + adds r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + subs r7, #1 + cmp r7, #0 + bge _080CABCC + b _080CAD1A + .align 2, 0 +_080CAC50: .4byte gUnknown_20399A8 +_080CAC54: .4byte 0x00000BA8 +_080CAC58: .4byte 0x00000BE4 +_080CAC5C: .4byte 0x00000A88 +_080CAC60: .4byte sub_080CAAA8 +_080CAC64: + mov sl, r1 + movs r7, #4 + lsls r2, r2, #0x10 + str r2, [sp, #0x18] +_080CAC6C: + mov r6, sl + ldr r2, [r6] + lsls r0, r5, #1 + ldr r3, _080CAD2C + adds r1, r2, r3 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _080CAD04 + lsls r4, r5, #2 + ldr r6, _080CAD30 + adds r1, r2, r6 + adds r1, r1, r4 + ldr r1, [r1] + mov r2, r8 + lsls r3, r2, #0x10 + asrs r3, r3, #0x10 + movs r2, #2 + str r2, [sp] + ldr r6, [sp, #0x14] + str r6, [sp, #4] + ldr r6, [sp, #0x18] + asrs r2, r6, #0x10 + bl sub_080CBAA4 + adds r2, r0, #0 + mov r0, sl + ldr r3, [r0] + ldr r1, _080CAD34 + adds r0, r3, r1 + adds r1, r0, r4 + str r2, [r1] + cmp r2, #0 + beq _080CAD04 + mov r6, sp + ldrh r6, [r6, #8] + 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, _080CAD38 + str r0, [r1, #0x1c] + ldr r1, _080CAD3C + adds r0, r3, r1 + ldrb r0, [r0] + adds r1, r5, #0 + movs r2, #0xc + bl sub_080D15D0 + cmp r0, #0 + bne _080CACFA + mov r2, sl + ldr r0, [r2] + ldr r3, _080CAD34 + adds r0, r0, r3 + adds r0, r0, r4 + ldr r2, [r0] + ldrb r1, [r2, #1] + movs r6, #0xd + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r2, #1] +_080CACFA: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080CAD04: + adds r0, r5, #6 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + adds r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + subs r7, #1 + cmp r7, #0 + bge _080CAC6C +_080CAD1A: + mov r0, sb + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080CAD2C: .4byte 0x00000BA8 +_080CAD30: .4byte 0x00000BE4 +_080CAD34: .4byte 0x00000A88 +_080CAD38: .4byte sub_080CAAA8 +_080CAD3C: .4byte 0x00000C5C + thumb_func_end sub_080CAB6C + + thumb_func_start sub_080CAD40 +sub_080CAD40: @ 0x080CAD40 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _080CADA0 + ldr r1, [r6] + ldr r2, _080CADA4 + adds r1, r1, r2 + movs r5, #0 + strb r5, [r1] + ldr r1, [r6] + ldr r3, _080CADA8 + adds r1, r1, r3 + strb r0, [r1] + ldr r1, [r6] + ldr r7, _080CADAC + adds r1, r1, r7 + strb r4, [r1] + ldr r3, [r6] + movs r1, #0xc6 + lsls r1, r1, #4 + adds r2, r3, r1 + movs r1, #0x20 + strh r1, [r2] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #1 + rsbs r1, r1, #0 + subs r7, #5 + adds r2, r3, r7 + strh r1, [r2] + ldr r1, _080CADB0 + adds r3, r3, r1 + strh r5, [r3] + bl sub_080CAF64 + cmp r4, #0 + ble _080CADB8 + ldr r0, [r6] + ldr r2, _080CADB4 + adds r0, r0, r2 + movs r1, #0 + b _080CADC0 + .align 2, 0 +_080CADA0: .4byte gUnknown_20399A8 +_080CADA4: .4byte 0x00000C6A +_080CADA8: .4byte 0x00000C6B +_080CADAC: .4byte 0x00000C69 +_080CADB0: .4byte 0x00000C66 +_080CADB4: .4byte 0x00000C68 +_080CADB8: + ldr r0, [r6] + ldr r3, _080CADEC + adds r0, r0, r3 + movs r1, #5 +_080CADC0: + strb r1, [r0] + ldr r0, _080CADF0 + ldr r2, [r0] + ldr r7, _080CADEC + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, #0x64 + ldr r3, _080CADF4 + adds r1, r2, r3 + strh r0, [r1] + subs r7, #4 + adds r2, r2, r7 + movs r1, #0 + ldrsh r0, [r2, r1] + bl sub_080CAA64 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CADEC: .4byte 0x00000C68 +_080CADF0: .4byte gUnknown_20399A8 +_080CADF4: .4byte 0x00000C62 + thumb_func_end sub_080CAD40 + + thumb_func_start sub_080CADF8 +sub_080CADF8: @ 0x080CADF8 + push {r4, r5, r6, lr} + ldr r5, _080CAE24 + ldr r0, [r5] + movs r4, #0xc6 + lsls r4, r4, #4 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, #0 + beq _080CAE0E + subs r0, #1 + strh r0, [r1] +_080CAE0E: + ldr r3, [r5] + ldr r6, _080CAE28 + adds r0, r3, r6 + ldrb r0, [r0] + cmp r0, #1 + beq _080CAE90 + cmp r0, #1 + bgt _080CAE2C + cmp r0, #0 + beq _080CAE34 + b _080CAF52 + .align 2, 0 +_080CAE24: .4byte gUnknown_20399A8 +_080CAE28: .4byte 0x00000C6A +_080CAE2C: + cmp r0, #2 + bne _080CAE32 + b _080CAF40 +_080CAE32: + b _080CAF52 +_080CAE34: + ldr r0, _080CAE80 + adds r1, r3, r0 + ldr r2, _080CAE84 + adds r0, r3, r2 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + subs r0, #0x41 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xba + bhi _080CAE50 + b _080CAF5C +_080CAE50: + ldr r1, _080CAE88 + adds r0, r3, r1 + ldrb r0, [r0] + bl sub_080CAB24 + ldr r2, [r5] + ldr r0, _080CAE80 + adds r3, r2, r0 + ldr r1, _080CAE8C + adds r0, r2, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + adds r2, r2, r6 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + b _080CAF5C + .align 2, 0 +_080CAE80: .4byte 0x00000C62 +_080CAE84: .4byte 0x00000C64 +_080CAE88: .4byte 0x00000C68 +_080CAE8C: .4byte 0x00000C69 +_080CAE90: + ldr r2, _080CAEF4 + adds r1, r3, r2 + ldr r6, _080CAEF8 + adds r2, r3, r6 + ldrh r0, [r2] + ldrh r6, [r1] + adds r0, r0, r6 + strh r0, [r1] + ldr r6, _080CAEFC + adds r0, r3, r6 + ldrb r0, [r0] + adds r1, r3, r4 + ldrh r1, [r1] + movs r3, #0 + ldrsh r2, [r2, r3] + bl sub_080CAB6C + ldr r2, [r5] + ldr r3, _080CAF00 + adds r1, r2, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + ldr r1, _080CAF04 + adds r0, r2, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _080CAED6 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, #5 + beq _080CAEE2 +_080CAED6: + cmp r1, #0 + bge _080CAF10 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, #0 + bne _080CAF10 +_080CAEE2: + ldr r0, _080CAF08 + ldr r1, [r0] + ldr r2, _080CAF0C + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080CAF5C + .align 2, 0 +_080CAEF4: .4byte 0x00000C62 +_080CAEF8: .4byte 0x00000C64 +_080CAEFC: .4byte 0x00000C68 +_080CAF00: .4byte 0x00000C66 +_080CAF04: .4byte 0x00000C69 +_080CAF08: .4byte gUnknown_20399A8 +_080CAF0C: .4byte 0x00000C6A +_080CAF10: + ldr r3, _080CAF30 + ldr r0, [r3] + ldr r6, _080CAF34 + adds r1, r0, r6 + ldr r2, _080CAF38 + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r6, [r1] + adds r0, r0, r6 + movs r2, #0 + strb r0, [r1] + ldr r0, [r3] + ldr r1, _080CAF3C + adds r0, r0, r1 + strb r2, [r0] + b _080CAF5C + .align 2, 0 +_080CAF30: .4byte gUnknown_20399A8 +_080CAF34: .4byte 0x00000C68 +_080CAF38: .4byte 0x00000C69 +_080CAF3C: .4byte 0x00000C6A +_080CAF40: + ldr r2, _080CAF58 + adds r0, r3, r2 + ldrh r0, [r0] + cmp r0, #0 + bne _080CAF5C + adds r1, r3, r4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080CAF52: + movs r0, #0 + b _080CAF5E + .align 2, 0 +_080CAF58: .4byte 0x00000C66 +_080CAF5C: + movs r0, #1 +_080CAF5E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080CADF8 + + thumb_func_start sub_080CAF64 +sub_080CAF64: @ 0x080CAF64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + movs r0, #0 + ldr r1, _080CAFDC + mov sb, r1 +_080CAF78: + adds r0, #1 + mov r8, r0 + movs r7, #5 +_080CAF7E: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x41 + bl sub_080D15D0 + mov r2, sb + ldr r1, [r2] + lsls r2, r5, #1 + ldr r3, _080CAFE0 + adds r1, r1, r3 + adds r1, r1, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080CAFB8 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_080D15D0 + mov r2, sb + ldr r1, [r2] + lsls r2, r5, #2 + ldr r3, _080CAFE4 + adds r1, r1, r3 + adds r1, r1, r2 + str r0, [r1] +_080CAFB8: + adds r5, #1 + subs r7, #1 + cmp r7, #0 + bge _080CAF7E + mov r0, r8 + cmp r0, #4 + ble _080CAF78 + ldr r0, _080CAFDC + ldr r0, [r0] + ldr r1, _080CAFE8 + adds r0, r0, r1 + strb r6, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CAFDC: .4byte gUnknown_20399A8 +_080CAFE0: .4byte 0x00000BA8 +_080CAFE4: .4byte 0x00000BE4 +_080CAFE8: .4byte 0x00000C5C + thumb_func_end sub_080CAF64 + + thumb_func_start sub_080CAFEC +sub_080CAFEC: @ 0x080CAFEC + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r5, _080CB018 + ldr r1, [r5] + lsrs r4, r0, #0x16 + ldr r0, _080CB01C + adds r1, r1, r0 + adds r1, r1, r4 + ldr r0, [r1] + cmp r0, #0 + beq _080CB012 + bl sub_080CBB88 + ldr r0, [r5] + ldr r1, _080CB01C + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080CB012: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB018: .4byte gUnknown_20399A8 +_080CB01C: .4byte 0x00000A88 + thumb_func_end sub_080CAFEC + + thumb_func_start sub_080CB020 +sub_080CB020: @ 0x080CB020 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r1, _080CB054 + ldr r1, [r1] + lsrs r0, r0, #0x16 + ldr r3, _080CB058 + adds r1, r1, r3 + adds r1, r1, r0 + ldr r3, [r1] + cmp r3, #0 + beq _080CB04E + movs r0, #3 + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] +_080CB04E: + pop {r0} + bx r0 + .align 2, 0 +_080CB054: .4byte gUnknown_20399A8 +_080CB058: .4byte 0x00000A88 + thumb_func_end sub_080CB020 + + thumb_func_start sub_080CB05C +sub_080CB05C: @ 0x080CB05C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _080CB100 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #1 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #0x68 + movs r3, #0x40 + bl sub_080CBAA4 + ldr r1, _080CB104 + ldr r1, [r1] + movs r2, #0xa7 + lsls r2, r2, #4 + adds r1, r1, r2 + str r0, [r1] + movs r7, #1 + movs r6, #1 +_080CB0A4: + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _080CB100 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _080CB108 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r1, r0, #0 + subs r0, r6, #1 + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #0x13 + movs r0, #0x80 + lsls r0, r0, #0xd + adds r3, r3, r0 + asrs r3, r3, #0x10 + movs r0, #1 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #0x98 + bl sub_080CBAA4 + ldr r1, _080CB104 + ldr r1, [r1] + lsls r2, r6, #2 + movs r3, #0xa7 + lsls r3, r3, #4 + adds r1, r1, r3 + adds r1, r1, r2 + str r0, [r1] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + b _080CB118 + .align 2, 0 +_080CB100: .4byte gUnknown_2024190 +_080CB104: .4byte gUnknown_20399A8 +_080CB108: + ldr r0, _080CB1BC + ldr r0, [r0] + lsls r1, r6, #2 + movs r2, #0xa7 + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, r0, r1 + str r5, [r0] +_080CB118: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _080CB0A4 + ldr r3, _080CB1BC + mov r0, r8 + cmp r0, #0 + bne _080CB15E + movs r6, #0 + cmp r6, r7 + bhs _080CB15E + mov ip, r3 + movs r5, #0xa7 + lsls r5, r5, #4 + movs r4, #4 +_080CB138: + mov r2, ip + ldr r1, [r2] + lsls r0, r6, #2 + adds r1, r1, r5 + adds r1, 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, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r7 + blo _080CB138 +_080CB15E: + ldr r0, [r3] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080CB1B0 + movs r6, #0 + adds r7, r3, #0 + movs r5, #0xa7 + lsls r5, r5, #4 +_080CB16E: + ldr r0, [r7] + lsls r4, r6, #2 + adds r0, r0, r5 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080CB1A6 + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _080CB1C0 + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + bne _080CB1A6 + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + ldr r2, [r0] + ldrb r1, [r2, #1] + movs r3, #0xd + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r2, #1] +_080CB1A6: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _080CB16E +_080CB1B0: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CB1BC: .4byte gUnknown_20399A8 +_080CB1C0: .4byte gUnknown_2024190 + thumb_func_end sub_080CB05C + + thumb_func_start sub_080CB1C4 +sub_080CB1C4: @ 0x080CB1C4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _080CB228 + ldr r1, [r0] + ldr r2, _080CB22C + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1] + movs r5, #0 + movs r6, #0 + adds r3, r0, #0 + movs r7, #0xa7 + lsls r7, r7, #4 +_080CB1DE: + ldr r0, [r3] + lsls r4, r5, #2 + adds r0, r0, r7 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080CB214 + cmp r5, r6 + beq _080CB20E + adds r1, r6, #0 + str r3, [sp] + bl sub_080CB244 + ldr r3, [sp] + ldr r2, [r3] + adds r0, r2, r7 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] + ldr r0, _080CB22C + adds r2, r2, r0 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_080CB20E: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080CB214: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080CB1DE + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CB228: .4byte gUnknown_20399A8 +_080CB22C: .4byte 0x00000C5E + thumb_func_end sub_080CB1C4 + + thumb_func_start sub_080CB230 +sub_080CB230: @ 0x080CB230 + ldr r0, _080CB23C + ldr r0, [r0] + ldr r1, _080CB240 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CB23C: .4byte gUnknown_20399A8 +_080CB240: .4byte 0x00000C5E + thumb_func_end sub_080CB230 + + thumb_func_start sub_080CB244 +sub_080CB244: @ 0x080CB244 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + strh r1, [r2, #0x30] + cmp r1, #0 + bne _080CB258 + movs r3, #0x68 + movs r4, #0x40 + b _080CB26A +_080CB258: + movs r3, #0x98 + subs r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x13 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r4, r0, #0x10 +_080CB26A: + ldrh r0, [r2, #0x20] + lsls r0, r0, #3 + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x22] + lsls r0, 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 _080CB284 + adds r0, #7 +_080CB284: + asrs r0, r0, #3 + strh r0, [r2, #0x36] + lsls r0, r4, #0x10 + asrs r0, r0, #0xd + movs r3, #0x34 + ldrsh r1, [r2, r3] + subs r0, r0, r1 + cmp r0, #0 + bge _080CB298 + adds r0, #7 +_080CB298: + asrs r0, r0, #3 + strh r0, [r2, #0x38] + movs r0, #8 + strh r0, [r2, #0x3a] + ldr r0, _080CB2AC + str r0, [r2, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB2AC: .4byte sub_080CB2B0 + thumb_func_end sub_080CB244 + + thumb_func_start sub_080CB2B0 +sub_080CB2B0: @ 0x080CB2B0 + push {r4, lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x3a] + movs r1, #0x3a + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _080CB2E0 + ldrh r0, [r3, #0x36] + ldrh r4, [r3, #0x32] + adds r0, r0, r4 + strh r0, [r3, #0x32] + ldrh r1, [r3, #0x38] + ldrh r4, [r3, #0x34] + adds r1, r1, r4 + strh r1, [r3, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r3, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x13 + strh r1, [r3, #0x22] + subs r0, r2, #1 + strh r0, [r3, #0x3a] + b _080CB326 +_080CB2E0: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _080CB2F0 + movs r0, #0x68 + strh r0, [r3, #0x20] + movs r0, #0x40 + b _080CB302 +_080CB2F0: + movs r0, #0x98 + strh r0, [r3, #0x20] + movs r4, #0x30 + ldrsh r1, [r3, r4] + subs r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, #0x10 +_080CB302: + strh r0, [r3, #0x22] + ldr r0, _080CB32C + str r0, [r3, #0x1c] + ldr r0, _080CB330 + ldr r2, [r0] + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r1, r1, #2 + movs r4, #0xa7 + lsls r4, r4, #4 + adds r0, r2, r4 + adds r0, r0, r1 + str r3, [r0] + ldr r0, _080CB334 + adds r2, r2, r0 + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] +_080CB326: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB32C: .4byte sub_08007140 +_080CB330: .4byte gUnknown_20399A8 +_080CB334: .4byte 0x00000C5E + thumb_func_end sub_080CB2B0 + + thumb_func_start sub_080CB338 +sub_080CB338: @ 0x080CB338 + push {r4, lr} + ldr r4, _080CB35C + ldr r0, [r4] + ldr r1, _080CB360 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _080CB356 + bl sub_080CBB88 + ldr r0, [r4] + ldr r1, _080CB360 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] +_080CB356: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB35C: .4byte gUnknown_20399A8 +_080CB360: .4byte 0x00000A6C + thumb_func_end sub_080CB338 + + thumb_func_start sub_080CB364 +sub_080CB364: @ 0x080CB364 + push {r4, r5, r6, lr} + movs r3, #0 + ldr r6, _080CB3BC + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + movs r5, #5 + rsbs r5, r5, #0 +_080CB372: + ldr r0, [r6] + lsls r1, r3, #2 + movs r2, #0xa7 + lsls r2, r2, #4 + adds r0, r0, r2 + adds r2, r0, r1 + ldr r1, [r2] + cmp r1, #0 + beq _080CB3CA + 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, r1, r0 + adds r0, r2, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #0xc0 + bls _080CB3C0 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _080CB3CA + .align 2, 0 +_080CB3BC: .4byte gUnknown_20399A8 +_080CB3C0: + adds r2, #0x3e + ldrb r1, [r2] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2] +_080CB3CA: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #5 + bls _080CB372 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CB364 + + thumb_func_start sub_080CB3DC +sub_080CB3DC: @ 0x080CB3DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r5, _080CB40C + ldr r1, [r5] + lsrs r4, r0, #0x16 + movs r0, #0xa7 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r4 + ldr r0, [r1] + cmp r0, #0 + beq _080CB406 + bl sub_080CBB88 + ldr r0, [r5] + movs r1, #0xa7 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080CB406: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB40C: .4byte gUnknown_20399A8 + thumb_func_end sub_080CB3DC + + thumb_func_start sub_080CB410 +sub_080CB410: @ 0x080CB410 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _080CB44C +_080CB416: + ldr r0, [r6] + lsls r4, r5, #2 + movs r1, #0xa7 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _080CB43A + bl sub_080CBB88 + ldr r0, [r6] + movs r1, #0xa7 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_080CB43A: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080CB416 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB44C: .4byte gUnknown_20399A8 + thumb_func_end sub_080CB410 + + thumb_func_start sub_080CB450 +sub_080CB450: @ 0x080CB450 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r1, _080CB484 + ldr r1, [r1] + lsrs r0, r0, #0x16 + movs r3, #0xa7 + lsls r3, r3, #4 + adds r1, r1, r3 + adds r1, r1, r0 + ldr r3, [r1] + cmp r3, #0 + beq _080CB480 + movs r0, #3 + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] +_080CB480: + pop {r0} + bx r0 + .align 2, 0 +_080CB484: .4byte gUnknown_20399A8 + thumb_func_end sub_080CB450 + + thumb_func_start sub_080CB488 +sub_080CB488: @ 0x080CB488 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r5, r1, #0 + cmp r4, #0 + bne _080CB4B8 + ldr r3, _080CB4B0 + ldr r0, [r3] + ldr r5, _080CB4B4 + adds r2, r0, r5 + lsls r1, r1, #2 + adds r5, #4 + adds r0, r0, r5 + adds r0, r0, r1 + ldr r1, [r0] + str r1, [r2] + str r4, [r0] + b _080CB4D4 + .align 2, 0 +_080CB4B0: .4byte gUnknown_20399A8 +_080CB4B4: .4byte 0x00000A6C +_080CB4B8: + cmp r4, #1 + bne _080CB50A + ldr r3, _080CB510 + ldr r0, [r3] + ldr r1, _080CB514 + adds r2, r0, r1 + lsls r1, r5, #2 + ldr r4, _080CB518 + adds r0, r0, r4 + adds r0, r0, r1 + ldr r1, [r0] + str r1, [r2] + movs r1, #0 + str r1, [r0] +_080CB4D4: + adds r5, r3, #0 + ldr r0, [r5] + ldr r4, _080CB514 + adds r0, r0, r4 + ldr r1, [r0] + ldr r0, _080CB51C + str r0, [r1, #0x1c] + bl sub_080CA820 + ldr r1, [r5] + adds r1, r1, r4 + ldr r3, [r1] + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + ldr r0, [r5] + adds r0, r0, r4 + ldr r0, [r0] + adds r0, #0x43 + movs r1, #7 + strb r1, [r0] +_080CB50A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CB510: .4byte gUnknown_20399A8 +_080CB514: .4byte 0x00000A6C +_080CB518: .4byte 0x00000A88 +_080CB51C: .4byte sub_080CB974 + thumb_func_end sub_080CB488 + + thumb_func_start sub_080CB520 +sub_080CB520: @ 0x080CB520 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + cmp r0, #0xe + bne _080CB56C + ldr r3, _080CB564 + ldr r1, [r3] + lsls r5, r6, #2 + movs r4, #0xa7 + lsls r4, r4, #4 + adds r0, r1, r4 + adds r0, r0, r5 + ldr r2, _080CB568 + adds r1, r1, r2 + ldr r2, [r1] + str r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r3] + adds r0, r0, r4 + adds r0, r0, r5 + ldr r0, [r0] + adds r0, #0x43 + movs r1, #0xc + strb r1, [r0] + b _080CB5A8 + .align 2, 0 +_080CB564: .4byte gUnknown_20399A8 +_080CB568: .4byte 0x00000A6C +_080CB56C: + ldr r5, _080CB5C0 + ldr r1, [r5] + lsls r4, r6, #2 + ldr r3, _080CB5C4 + adds r0, r1, r3 + adds r0, r0, r4 + ldr r2, _080CB5C8 + adds r1, r1, r2 + ldr r2, [r1] + str r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r5] + adds r0, r0, r3 + adds r0, r0, r4 + ldr r4, [r0] + adds r0, r6, #0 + movs r1, #6 + bl __umodsi3 + movs r1, #0x13 + subs r1, r1, r0 + adds r4, #0x43 + strb r1, [r4] + adds r3, r5, #0 +_080CB5A8: + ldr r1, [r3] + ldr r0, _080CB5C8 + adds r1, r1, r0 + ldr r2, [r1] + ldr r0, _080CB5CC + str r0, [r2, #0x1c] + movs r0, #0 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CB5C0: .4byte gUnknown_20399A8 +_080CB5C4: .4byte 0x00000A88 +_080CB5C8: .4byte 0x00000A6C +_080CB5CC: .4byte sub_08007140 + thumb_func_end sub_080CB520 + + thumb_func_start sub_080CB5D0 +sub_080CB5D0: @ 0x080CB5D0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r0, #0xe + bne _080CB5F4 + ldr r3, _080CB5F0 + ldr r1, [r3] + movs r0, #0xb0 + lsls r0, r0, #4 + adds r2, r1, r0 + lsls r0, r4, #2 + movs r4, #0xa7 + lsls r4, r4, #4 + b _080CB602 + .align 2, 0 +_080CB5F0: .4byte gUnknown_20399A8 +_080CB5F4: + ldr r3, _080CB624 + ldr r1, [r3] + movs r0, #0xb0 + lsls r0, r0, #4 + adds r2, r1, r0 + lsls r0, r4, #2 + ldr r4, _080CB628 +_080CB602: + adds r0, r0, r4 + adds r1, r1, r0 + str r1, [r2] + ldr r1, [r3] + ldr r2, _080CB62C + adds r0, r1, r2 + ldr r2, [r0] + ldr r0, _080CB630 + str r0, [r2, #0x1c] + ldr r4, _080CB634 + adds r1, r1, r4 + movs r0, #0 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB624: .4byte gUnknown_20399A8 +_080CB628: .4byte 0x00000A88 +_080CB62C: .4byte 0x00000A6C +_080CB630: .4byte sub_08007140 +_080CB634: .4byte 0x00000C5D + thumb_func_end sub_080CB5D0 + + thumb_func_start sub_080CB638 +sub_080CB638: @ 0x080CB638 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r6, _080CB654 + ldr r0, [r6] + ldr r1, _080CB658 + mov sb, r1 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0x10 + bne _080CB65C + movs r0, #0 + b _080CB768 + .align 2, 0 +_080CB654: .4byte gUnknown_20399A8 +_080CB658: .4byte 0x00000C5D +_080CB65C: + adds r0, #1 + strb r0, [r1] + ldr r2, [r6] + ldr r5, _080CB774 + adds r0, r2, r5 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CB68C + movs r1, #0xb0 + lsls r1, r1, #4 + adds r0, r2, r1 + ldr r0, [r0] + ldr r1, [r0] + ldrh r0, [r1, #0x22] + subs r0, #1 + strh r0, [r1, #0x22] + ldr r5, _080CB778 + adds r0, r2, r5 + ldr r1, [r0] + ldrh r0, [r1, #0x22] + adds r0, #1 + strh r0, [r1, #0x22] +_080CB68C: + ldr r3, [r6] + movs r7, #0xb0 + lsls r7, r7, #4 + adds r4, r3, r7 + ldr r0, [r4] + ldr r0, [r0] + mov r8, r0 + ldr r5, _080CB77C + mov r0, sb + adds r1, r3, r0 + ldrb r0, [r1] + lsls r0, r0, #4 + adds r0, r0, r5 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bge _080CB6B0 + adds r0, #0xf +_080CB6B0: + asrs r0, r0, #4 + mov r2, r8 + strh r0, [r2, #0x24] + ldr r0, _080CB778 + mov r8, r0 + add r3, r8 + ldr r2, [r3] + ldrb r0, [r1] + lsls r0, r0, #4 + adds r0, r0, r5 + movs r5, #0 + ldrsh r0, [r0, r5] + cmp r0, #0 + bge _080CB6CE + adds r0, #0xf +_080CB6CE: + asrs r0, r0, #4 + rsbs r0, r0, #0 + strh r0, [r2, #0x24] + ldrb r0, [r1] + cmp r0, #8 + bne _080CB732 + ldr r3, [r3] + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0, #5] + movs r5, #3 + movs r1, #0xc + ands r1, r0 + ldrb r2, [r3, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + ldr r0, [r6] + mov r2, r8 + adds r1, r0, r2 + ldr r1, [r1] + adds r0, r0, r7 + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x43 + ldrb r0, [r0] + adds r1, #0x43 + strb r0, [r1] + bl sub_080CA820 + ldr r1, [r6] + adds r1, r1, r7 + ldr r1, [r1] + ldr r1, [r1] + ands r5, r0 + lsls r5, r5, #2 + ldrb r0, [r1, #5] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, #5] + ldr r0, [r6] + adds r0, r0, r7 + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x43 + movs r1, #7 + strb r1, [r0] +_080CB732: + ldr r1, [r6] + mov r5, sb + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #0x10 + bne _080CB766 + mov r0, r8 + adds r2, r1, r0 + ldr r3, [r2] + adds r1, 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, _080CB780 + str r0, [r2, #0x1c] + adds r1, r1, r7 + ldr r0, [r1] + ldr r1, [r0] + ldr r0, _080CB784 + str r0, [r1, #0x1c] +_080CB766: + movs r0, #1 +_080CB768: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080CB774: .4byte 0x00000C5D +_080CB778: .4byte 0x00000A6C +_080CB77C: .4byte gUnknown_82FA8CC +_080CB780: .4byte sub_080CB974 +_080CB784: .4byte sub_08007140 + thumb_func_end sub_080CB638 + + thumb_func_start sub_080CB788 +sub_080CB788: @ 0x080CB788 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r0, #1 + beq _080CB7C0 + cmp r0, #1 + bgt _080CB7A2 + cmp r0, #0 + beq _080CB7A8 + b _080CB834 +_080CB7A2: + cmp r2, #2 + beq _080CB7E4 + b _080CB834 +_080CB7A8: + ldr r3, _080CB7B8 + ldr r1, [r3] + ldr r0, _080CB7BC + adds r2, r1, r0 + lsls r0, r4, #2 + movs r4, #0xa7 + lsls r4, r4, #4 + b _080CB7CC + .align 2, 0 +_080CB7B8: .4byte gUnknown_20399A8 +_080CB7BC: .4byte 0x00000B04 +_080CB7C0: + ldr r3, _080CB7D8 + ldr r1, [r3] + ldr r0, _080CB7DC + adds r2, r1, r0 + lsls r0, r4, #2 + ldr r4, _080CB7E0 +_080CB7CC: + adds r0, r0, r4 + adds r1, r1, r0 + str r1, [r2] + adds r4, r3, #0 + b _080CB7F4 + .align 2, 0 +_080CB7D8: .4byte gUnknown_20399A8 +_080CB7DC: .4byte 0x00000B04 +_080CB7E0: .4byte 0x00000A88 +_080CB7E4: + ldr r0, _080CB83C + ldr r1, [r0] + ldr r3, _080CB840 + adds r2, r1, r3 + ldr r4, _080CB844 + adds r1, r1, r4 + str r1, [r2] + adds r4, r0, #0 +_080CB7F4: + ldr r0, [r4] + ldr r1, _080CB840 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _080CB834 + bl sub_08008140 + ldr r0, [r4] + ldr r3, _080CB840 + adds r0, r0, r3 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldr r1, [r4] + adds r1, r1, r3 + ldr r0, [r1] + ldr r2, [r0] + ldr r0, _080CB848 + str r0, [r2, #0x10] + ldr r0, [r1] + ldr r0, [r0] + movs r1, #0 + bl sub_08007F70 +_080CB834: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB83C: .4byte gUnknown_20399A8 +_080CB840: .4byte 0x00000B04 +_080CB844: .4byte 0x00000A6C +_080CB848: .4byte gUnknown_854CBCC + thumb_func_end sub_080CB788 + + thumb_func_start sub_080CB84C +sub_080CB84C: @ 0x080CB84C + push {lr} + ldr r0, _080CB870 + ldr r0, [r0] + ldr r1, _080CB874 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, [r0] + cmp r1, #0 + beq _080CB86C + adds r3, r1, #0 + adds r3, #0x3e + ldrb r2, [r3] + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _080CB878 +_080CB86C: + movs r0, #0 + b _080CB88E + .align 2, 0 +_080CB870: .4byte gUnknown_20399A8 +_080CB874: .4byte 0x00000B04 +_080CB878: + adds r0, r1, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CB88C + movs r0, #4 + orrs r0, r2 + strb r0, [r3] +_080CB88C: + movs r0, #1 +_080CB88E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CB84C + + thumb_func_start sub_080CB894 +sub_080CB894: @ 0x080CB894 + push {r4, lr} + ldr r4, _080CB8D0 + ldr r0, [r4] + ldr r1, _080CB8D4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _080CB8CA + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, [r4] + ldr r1, _080CB8D4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + bl sub_080CBB88 + ldr r0, [r4] + ldr r1, _080CB8D4 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0 + str r0, [r1] +_080CB8CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CB8D0: .4byte gUnknown_20399A8 +_080CB8D4: .4byte 0x00000B04 + thumb_func_end sub_080CB894 + + thumb_func_start sub_080CB8D8 +sub_080CB8D8: @ 0x080CB8D8 + push {lr} + ldr r3, _080CB90C + ldr r0, [r3] + ldr r1, _080CB910 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _080CB908 + adds r2, r0, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldr r1, _080CB910 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + movs r1, #1 + bl sub_08007F70 +_080CB908: + pop {r0} + bx r0 + .align 2, 0 +_080CB90C: .4byte gUnknown_20399A8 +_080CB910: .4byte 0x00000B04 + thumb_func_end sub_080CB8D8 + + thumb_func_start sub_080CB914 +sub_080CB914: @ 0x080CB914 + push {lr} + ldr r0, _080CB928 + ldr r0, [r0] + ldr r1, _080CB92C + adds r2, r0, r1 + ldr r0, [r2] + cmp r0, #0 + bne _080CB930 + movs r0, #0 + b _080CB944 + .align 2, 0 +_080CB928: .4byte gUnknown_20399A8 +_080CB92C: .4byte 0x00000B04 +_080CB930: + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CB942 + movs r0, #0 + str r0, [r2] +_080CB942: + movs r0, #1 +_080CB944: + pop {r1} + bx r1 + thumb_func_end sub_080CB914 + + thumb_func_start sub_080CB948 +sub_080CB948: @ 0x080CB948 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080CB96C + ldr r1, [r1] + ldr r2, _080CB970 + adds r1, r1, r2 + ldr r3, [r1] + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r3, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #5] + bx lr + .align 2, 0 +_080CB96C: .4byte gUnknown_20399A8 +_080CB970: .4byte 0x00000A6C + thumb_func_end sub_080CB948 + + thumb_func_start sub_080CB974 +sub_080CB974: @ 0x080CB974 + ldr r1, _080CB990 + ldr r1, [r1] + ldr r2, _080CB994 + adds r1, 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, r1, r2 + adds r1, #4 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_080CB990: .4byte gUnknown_20399A8 +_080CB994: .4byte 0x00000CB4 + thumb_func_end sub_080CB974 + + thumb_func_start sub_080CB998 +sub_080CB998: @ 0x080CB998 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r4, #0 + ldr r1, _080CBA00 + ldr r0, [r1] + ldr r2, _080CBA04 + adds r0, r0, r2 + ldrh r0, [r0] + adds r2, r1, #0 + cmp r0, r3 + beq _080CB9CC + adds r6, r2, #0 + ldr r5, _080CBA04 +_080CB9B4: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x27 + bhi _080CB9CC + ldr r0, [r6] + lsls r1, r4, #1 + adds r0, r0, r5 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _080CB9B4 +_080CB9CC: + cmp r4, #0x28 + bne _080CBA0C + movs r4, #0 + ldr r0, [r2] + ldr r5, _080CBA04 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r0, #0 + beq _080CB9F8 + adds r6, r2, #0 +_080CB9E0: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x27 + bhi _080CB9F8 + ldr r0, [r6] + lsls r1, r4, #1 + adds r0, r0, r5 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080CB9E0 +_080CB9F8: + cmp r4, #0x28 + bne _080CBA0C + ldr r0, _080CBA08 + b _080CBA3E + .align 2, 0 +_080CBA00: .4byte gUnknown_20399A8 +_080CBA04: .4byte 0x00000B58 +_080CBA08: .4byte 0x0000FFFF +_080CBA0C: + ldr r1, [r2] + lsls r2, r4, #1 + ldr r5, _080CBA44 + adds r0, r1, r5 + adds r0, r0, r2 + strh r3, [r0] + ldr r0, _080CBA48 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r4, r4, #0x14 + lsrs r4, r4, #0x10 + adds r0, r3, #0 + movs r1, #1 + bl sub_080D28C0 + lsls r1, r4, #5 + ldr r2, _080CBA4C + adds r1, r1, r2 + ldr r2, _080CBA50 + bl CpuSet + adds r0, r4, #0 +_080CBA3E: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080CBA44: .4byte 0x00000B58 +_080CBA48: .4byte 0x00000B08 +_080CBA4C: .4byte 0x06010000 +_080CBA50: .4byte 0x04000080 + thumb_func_end sub_080CB998 + + thumb_func_start sub_080CBA54 +sub_080CBA54: @ 0x080CBA54 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #0 + ldr r6, _080CBA88 +_080CBA5E: + ldr r1, [r6] + lsls r2, r3, #1 + ldr r4, _080CBA8C + adds r0, r1, r4 + adds r4, r0, r2 + ldrh r0, [r4] + cmp r0, r5 + bne _080CBA94 + ldr r0, _080CBA90 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080CBA9E + strh r0, [r4] + b _080CBA9E + .align 2, 0 +_080CBA88: .4byte gUnknown_20399A8 +_080CBA8C: .4byte 0x00000B58 +_080CBA90: .4byte 0x00000B08 +_080CBA94: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x27 + bls _080CBA5E +_080CBA9E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080CBA54 + + thumb_func_start sub_080CBAA4 +sub_080CBAA4: @ 0x080CBAA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r4, [sp, #0x3c] + ldr r5, [sp, #0x40] + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x18] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov sb, r5 + mov r2, sp + ldr r0, _080CBB54 + 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_080D26A8 + mov sl, r0 + mov r6, sl + mov r2, sp + ldr r1, _080CBB58 + adds r1, r6, r1 + ldr r3, _080CBB5C + adds r0, r3, #0 + ldrb r1, [r1] + adds r0, r0, r1 + strh r0, [r2, #2] + adds r0, r6, #0 + bl sub_080CB998 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r0, #0 + ldr r0, _080CBB60 + cmp r5, r0 + beq _080CBB76 + ldr r7, [sp, #0x18] + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + mov r0, r8 + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + mov r0, sp + mov r3, sb + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _080CBB70 + ldr r1, _080CBB64 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, _080CBB68 + ands r2, r5 + ldrh r3, [r0, #4] + ldr r1, _080CBB6C + ands r1, r3 + orrs r1, r2 + strh r1, [r0, #4] + movs r1, #3 + ands r4, r1 + lsls r3, r4, #2 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #5] + mov r1, sl + strh r1, [r0, #0x2e] + b _080CBB78 + .align 2, 0 +_080CBB54: .4byte gUnknown_854CB84 +_080CBB58: .4byte gUnknown_8556EE4 +_080CBB5C: .4byte 0x0000DAC0 +_080CBB60: .4byte 0x0000FFFF +_080CBB64: .4byte gUnknown_20205AC +_080CBB68: .4byte 0x000003FF +_080CBB6C: .4byte 0xFFFFFC00 +_080CBB70: + adds r0, r6, #0 + bl sub_080CBA54 +_080CBB76: + movs r0, #0 +_080CBB78: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080CBAA4 + + thumb_func_start sub_080CBB88 +sub_080CBB88: @ 0x080CBB88 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + bl sub_080CBA54 + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CBB88 + + thumb_func_start sub_080CBBA0 +sub_080CBBA0: @ 0x080CBBA0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080CBBC8 + movs r1, #2 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080CBBCC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CBBC8: .4byte sub_080CBBE4 +_080CBBCC: .4byte gUnknown_3005B60 + thumb_func_end sub_080CBBA0 + + thumb_func_start sub_080CBBD0 +sub_080CBBD0: @ 0x080CBBD0 + push {lr} + ldr r0, _080CBBE0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080CBBE0: .4byte sub_080CBBE4 + thumb_func_end sub_080CBBD0 + + thumb_func_start sub_080CBBE4 +sub_080CBBE4: @ 0x080CBBE4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080CBC08 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bhi _080CBCC8 + lsls r0, r0, #2 + ldr r1, _080CBC0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CBC08: .4byte gUnknown_3005B60 +_080CBC0C: .4byte _080CBC10 +_080CBC10: @ jump table + .4byte _080CBC24 @ case 0 + .4byte _080CBC5C @ case 1 + .4byte _080CBC90 @ case 2 + .4byte _080CBC9A @ case 3 + .4byte _080CBCC0 @ case 4 +_080CBC24: + ldr r1, _080CBC50 + ldr r0, [r1] + ldr r2, _080CBC54 + adds r0, r0, r2 + movs r2, #0 + strb r2, [r0] + ldr r1, [r1] + movs r3, #0xb3 + lsls r3, r3, #2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _080CBC58 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #5 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + strh r0, [r4, #0xa] + b _080CBCCC + .align 2, 0 +_080CBC50: .4byte gUnknown_20399A8 +_080CBC54: .4byte 0x000002D2 +_080CBC58: .4byte 0x00004AC4 +_080CBC5C: + movs r1, #0xa + ldrsh r0, [r4, r1] + bl sub_08001034 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080CBCD2 + ldr r0, _080CBC88 + ldr r1, [r0] + ldr r2, _080CBC8C + adds r1, r1, r2 + movs r0, #2 + bl sub_0800212C + movs r0, #2 + bl sub_08001B48 + b _080CBCCC + .align 2, 0 +_080CBC88: .4byte gUnknown_20399A8 +_080CBC8C: .4byte 0x00004AC4 +_080CBC90: + ldrb r0, [r4, #0xc] + movs r1, #0 + bl sub_080CC014 + b _080CBCCC +_080CBC9A: + bl sub_080CC274 + cmp r0, #0 + beq _080CBCD2 + ldrb r0, [r4, #0xc] + bl sub_080CC3C4 + bl sub_080CC8A8 + ldrb r0, [r4, #0xc] + bl sub_080CA89C + ldr r1, _080CBCBC + movs r0, #0xc + bl sub_08001144 + b _080CBCCC + .align 2, 0 +_080CBCBC: .4byte 0x00005B0A +_080CBCC0: + adds r0, r2, #0 + bl sub_080A8964 + b _080CBCCC +_080CBCC8: + movs r0, #0 + b _080CBCD0 +_080CBCCC: + ldrh r0, [r4, #8] + adds r0, #1 +_080CBCD0: + strh r0, [r4, #8] +_080CBCD2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080CBBE4 + + thumb_func_start sub_080CBCD8 +sub_080CBCD8: @ 0x080CBCD8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + adds r0, r4, #0 + bl sub_080CBEB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r5, _080CBD9C + ldr r2, [r5] + lsls r0, r6, #0x18 + asrs r3, r0, #0x18 + movs r0, #6 + rsbs r0, r0, #0 + adds r1, r0, #0 + cmp r3, #0 + ble _080CBD04 + movs r1, #6 +_080CBD04: + ldr r7, _080CBDA0 + adds r0, r2, r7 + strh r1, [r0] + movs r1, #2 + cmp r3, #0 + ble _080CBD12 + movs r1, #1 +_080CBD12: + ldr r7, _080CBDA4 + adds r0, r2, r7 + strb r1, [r0] + ldr r2, [r5] + movs r0, #0xb4 + lsls r0, r0, #2 + adds r1, r2, r0 + movs r0, #0x20 + strh r0, [r1] + movs r1, #0xb5 + lsls r1, r1, #2 + adds r0, r2, r1 + strb r4, [r0] + ldr r2, [r5] + movs r1, #0 + cmp r3, #0 + bgt _080CBD36 + movs r1, #5 +_080CBD36: + ldr r4, _080CBDA8 + adds r0, r2, r4 + strh r1, [r0] + movs r7, #0xb6 + lsls r7, r7, #2 + adds r0, r2, r7 + strh r3, [r0] + movs r1, #0x38 + cmp r3, #0 + ble _080CBD50 + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r0, #0 +_080CBD50: + ldr r4, _080CBDAC + adds r0, r2, r4 + strh r1, [r0] + movs r1, #0 + cmp r3, #0 + bgt _080CBD5E + movs r1, #5 +_080CBD5E: + movs r7, #0xb7 + lsls r7, r7, #2 + adds r0, r2, r7 + strh r1, [r0] + ldr r0, _080CBDB0 + adds r1, r2, r0 + movs r0, #0 + strh r0, [r1] + movs r3, #0xb8 + lsls r3, r3, #2 + adds r1, r2, r3 + movs r0, #2 + strh r0, [r1] + ldr r4, _080CBDB4 + adds r0, r2, r4 + mov r7, r8 + strb r7, [r0] + ldr r0, [r5] + ldr r1, _080CBDB8 + adds r0, r0, r1 + strb r6, [r0] + ldr r0, [r5] + ldr r3, _080CBDBC + adds r0, r0, r3 + movs r1, #0 + strb r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CBD9C: .4byte gUnknown_20399A8 +_080CBDA0: .4byte 0x000002CE +_080CBDA4: .4byte 0x000002D3 +_080CBDA8: .4byte 0x000002D6 +_080CBDAC: .4byte 0x000002DA +_080CBDB0: .4byte 0x000002DE +_080CBDB4: .4byte 0x00000A64 +_080CBDB8: .4byte 0x00000A65 +_080CBDBC: .4byte 0x00000A63 + thumb_func_end sub_080CBCD8 + + thumb_func_start sub_080CBDC0 +sub_080CBDC0: @ 0x080CBDC0 + push {r4, r5, r6, lr} + ldr r4, _080CBDDC + ldr r1, [r4] + ldr r5, _080CBDE0 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _080CBE08 + cmp r0, #1 + bgt _080CBDE4 + cmp r0, #0 + beq _080CBDEA + b _080CBE98 + .align 2, 0 +_080CBDDC: .4byte gUnknown_20399A8 +_080CBDE0: .4byte 0x00000A63 +_080CBDE4: + cmp r0, #2 + beq _080CBE58 + b _080CBE98 +_080CBDEA: + ldr r2, _080CBE4C + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080CC014 + ldr r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080CBE08: + bl sub_080CC274 + cmp r0, #0 + beq _080CBEA6 + ldr r6, _080CBE50 + ldr r1, [r6] + ldr r4, _080CBE4C + adds r0, r1, r4 + ldrb r0, [r0] + ldr r5, _080CBE54 + adds r1, r1, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080CAD40 + ldr r1, [r6] + adds r4, r1, r4 + ldrb r0, [r4] + adds r1, r1, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080CC57C + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080CC934 + b _080CBE98 + .align 2, 0 +_080CBE4C: .4byte 0x00000A64 +_080CBE50: .4byte gUnknown_20399A8 +_080CBE54: .4byte 0x00000A65 +_080CBE58: + bl sub_080CADF8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, [r4] + movs r4, #0xb4 + lsls r4, r4, #2 + adds r3, r2, r4 + ldrh r0, [r3] + cmp r0, #0 + beq _080CBE94 + movs r0, #0xb3 + lsls r0, r0, #2 + adds r1, r2, r0 + subs r4, #2 + adds r0, r2, r4 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r3] + subs r0, #1 + strh r0, [r3] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080CBEA6 + bl sub_080CC76C + bl sub_080CC9D4 +_080CBE94: + adds r0, r5, #0 + b _080CBEA8 +_080CBE98: + ldr r0, _080CBEB0 + ldr r1, [r0] + ldr r4, _080CBEB4 + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080CBEA6: + movs r0, #1 +_080CBEA8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080CBEB0: .4byte gUnknown_20399A8 +_080CBEB4: .4byte 0x00000A63 + thumb_func_end sub_080CBDC0 + + thumb_func_start sub_080CBEB8 +sub_080CBEB8: @ 0x080CBEB8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0 + cmp r1, r4 + beq _080CBEE2 +_080CBECC: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xd + bls _080CBED8 + movs r1, #0 +_080CBED8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r1, r4 + bne _080CBECC +_080CBEE2: + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, #6 + bhi _080CBEEC + movs r0, #1 +_080CBEEC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CBEB8 + + thumb_func_start sub_080CBEF4 +sub_080CBEF4: @ 0x080CBEF4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_080D19C0 + ldr r0, _080CBF1C + ldr r0, [r0] + ldr r1, _080CBF20 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CBF1C: .4byte gUnknown_20399A8 +_080CBF20: .4byte 0x00000A62 + thumb_func_end sub_080CBEF4 + + thumb_func_start sub_080CBF24 +sub_080CBF24: @ 0x080CBF24 + push {r4, lr} + sub sp, #4 + ldr r1, _080CBF44 + ldr r0, [r1] + ldr r2, _080CBF48 + adds r0, r0, r2 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #4 + bhi _080CC008 + lsls r0, r0, #2 + ldr r1, _080CBF4C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CBF44: .4byte gUnknown_20399A8 +_080CBF48: .4byte 0x00000A62 +_080CBF4C: .4byte _080CBF50 +_080CBF50: @ jump table + .4byte _080CBF64 @ case 0 + .4byte _080CBF8C @ case 1 + .4byte _080CBFA6 @ case 2 + .4byte _080CBFE0 @ case 3 + .4byte _080CC004 @ case 4 +_080CBF64: + ldr r0, [r4] + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080CBF84 + str r1, [sp] + movs r1, #1 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + ldr r2, _080CBF88 + adds r1, r1, r2 + b _080CBFF2 + .align 2, 0 +_080CBF84: .4byte 0x0000FFFF +_080CBF88: .4byte 0x00000A62 +_080CBF8C: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CC008 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080CC014 + b _080CBFEA +_080CBFA6: + bl sub_080CC274 + cmp r0, #1 + bne _080CC008 + bl sub_080CC828 + ldr r4, _080CBFD4 + ldr r0, [r4] + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080CBFD8 + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, [r4] + ldr r2, _080CBFDC + adds r1, r1, r2 + b _080CBFF2 + .align 2, 0 +_080CBFD4: .4byte gUnknown_20399A8 +_080CBFD8: .4byte 0x0000FFFF +_080CBFDC: .4byte 0x00000A62 +_080CBFE0: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CC008 +_080CBFEA: + ldr r0, _080CBFFC + ldr r1, [r0] + ldr r0, _080CC000 + adds r1, r1, r0 +_080CBFF2: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080CC008 + .align 2, 0 +_080CBFFC: .4byte gUnknown_20399A8 +_080CC000: .4byte 0x00000A62 +_080CC004: + movs r0, #0 + b _080CC00A +_080CC008: + movs r0, #1 +_080CC00A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CBF24 + + thumb_func_start sub_080CC014 +sub_080CC014: @ 0x080CC014 + push {r4, r5, r6, r7, lr} + sub sp, #8 + ldr r4, _080CC0C8 + ldr r2, [r4] + ldr r3, _080CC0CC + adds r2, r2, r3 + movs r3, #0 + strb r3, [r2] + ldr r2, [r4] + ldr r3, _080CC0D0 + adds r2, r2, r3 + strb r0, [r2] + ldr r0, [r4] + ldr r2, _080CC0D4 + adds r0, r0, r2 + strb r1, [r0] + ldr r1, [r4] + adds r2, r1, r2 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _080CC05A + movs r3, #0 + ldr r0, _080CC0D8 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #0 + bne _080CC04E + movs r3, #1 +_080CC04E: + strb r3, [r2] + ldr r0, [r4] + ldr r1, _080CC0DC + adds r0, r0, r1 + bl sub_080CC354 +_080CC05A: + ldr r7, _080CC0C8 + ldr r0, [r7] + ldr r2, _080CC0D0 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_080D1998 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x10 + beq _080CC138 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080CC0E0 + adds r6, r0, r1 + ldr r0, [r6, #4] + ldr r1, [r7] + ldr r5, _080CC0E4 + adds r1, r1, r5 + bl LZ77UnCompWram + ldr r0, [r7] + adds r5, r0, r5 + ldr r4, _080CC0D4 + adds r1, r0, r4 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + ldr r3, _080CC0D8 + adds r0, r0, r3 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_080CC2B0 + ldr r1, [r7] + adds r4, r1, r4 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _080CC0E8 + ldr r0, [r6, #8] + ldr r2, _080CC0D8 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x15 + movs r3, #0x80 + lsls r3, r3, #0xf + adds r1, r1, r3 + lsrs r1, r1, #0x10 + movs r2, #0x40 + bl sub_080A1200 + b _080CC0FC + .align 2, 0 +_080CC0C8: .4byte gUnknown_20399A8 +_080CC0CC: .4byte 0x000006F9 +_080CC0D0: .4byte 0x000006FA +_080CC0D4: .4byte 0x000006FB +_080CC0D8: .4byte 0x000002D2 +_080CC0DC: .4byte 0x00004AC4 +_080CC0E0: .4byte gUnknown_8551868 +_080CC0E4: .4byte 0x00000792 +_080CC0E8: + ldr r0, [r6, #8] + ldr r2, _080CC128 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #6 + ldr r2, _080CC12C + adds r1, r1, r2 + movs r2, #0x20 + bl CpuSet +_080CC0FC: + ldr r0, [r6] + mov r1, sp + bl sub_08199858 + adds r1, r0, #0 + ldr r0, _080CC130 + ldr r3, [r0] + ldr r2, _080CC134 + adds r0, r3, r2 + str r1, [r0] + ldr r2, [sp] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _080CC128 + adds r3, r3, r0 + ldrb r3, [r3] + lsls r3, r3, #8 + movs r0, #2 + bl sub_0800195C + b _080CC24E + .align 2, 0 +_080CC128: .4byte 0x000002D2 +_080CC12C: .4byte gUnknown_2037434 +_080CC130: .4byte gUnknown_20399A8 +_080CC134: .4byte 0x00000A68 +_080CC138: + bl sub_080D1D48 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080CC1BC + adds r6, r1, r0 + ldr r0, [r6, #4] + ldr r1, [r7] + ldr r4, _080CC1C0 + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r2, [r7] + adds r0, r2, r4 + ldr r5, _080CC1C4 + adds r1, r2, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + ldr r3, _080CC1C8 + adds r2, r2, r3 + ldrb r2, [r2] + bl sub_080CC2B0 + ldr r0, [r6, #8] + ldr r1, [r7] + adds r1, r1, r4 + movs r2, #0x20 + bl CpuSet + bl sub_080D1DB0 + ldr r1, [r7] + ldr r2, _080CC1CC + adds r1, r1, r2 + movs r2, #2 + bl CpuSet + bl sub_080D1DB0 + ldr r1, [r7] + ldr r3, _080CC1D0 + adds r1, r1, r3 + movs r2, #2 + bl CpuSet + ldr r1, [r7] + adds r5, r1, r5 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _080CC1D4 + adds r0, r1, r4 + ldr r2, _080CC1C8 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x15 + movs r3, #0x80 + lsls r3, r3, #0xf + adds r1, r1, r3 + lsrs r1, r1, #0x10 + movs r2, #0x40 + bl sub_080A1200 + b _080CC1EA + .align 2, 0 +_080CC1BC: .4byte gUnknown_8555A40 +_080CC1C0: .4byte 0x00000792 +_080CC1C4: .4byte 0x000006FB +_080CC1C8: .4byte 0x000002D2 +_080CC1CC: .4byte 0x00000794 +_080CC1D0: .4byte 0x000007B4 +_080CC1D4: + ldr r2, _080CC25C + adds r0, r1, r2 + ldr r3, _080CC260 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #6 + ldr r2, _080CC264 + adds r1, r1, r2 + movs r2, #0x20 + bl CpuSet +_080CC1EA: + ldr r0, [r6] + mov r1, sp + bl sub_08199858 + ldr r6, _080CC268 + ldr r1, [r6] + ldr r5, _080CC26C + adds r1, r1, r5 + str r0, [r1] + ldr r4, _080CC270 + bl sub_080D1D7C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + add r1, sp, #4 + bl sub_08199858 + adds r4, r0, #0 + ldr r0, [r6] + adds r0, r0, r5 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r2, [sp, #4] + lsls r2, r2, #9 + lsrs r2, r2, #0xb + movs r0, #0x80 + lsls r0, r0, #0x13 + orrs r2, r0 + adds r0, r4, #0 + bl CpuSet + adds r0, r4, #0 + bl sub_08000BF0 + ldr r0, [r6] + adds r5, r0, r5 + ldr r1, [r5] + ldr r2, [sp] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r3, _080CC260 + adds r0, r0, r3 + ldrb r3, [r0] + lsls r3, r3, #8 + movs r0, #2 + bl sub_0800195C +_080CC24E: + movs r0, #2 + bl sub_08002248 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC25C: .4byte 0x00000792 +_080CC260: .4byte 0x000002D2 +_080CC264: .4byte gUnknown_2037434 +_080CC268: .4byte gUnknown_20399A8 +_080CC26C: .4byte 0x00000A68 +_080CC270: .4byte gUnknown_8555B00 + thumb_func_end sub_080CC014 + + thumb_func_start sub_080CC274 +sub_080CC274: @ 0x080CC274 + push {r4, r5, lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _080CC286 + movs r0, #0 + b _080CC2A2 +_080CC286: + ldr r5, _080CC2A8 + ldr r0, [r5] + ldr r1, _080CC2AC + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _080CC2A0 + bl sub_08000BF0 + ldr r0, [r5] + ldr r1, _080CC2AC + adds r0, r0, r1 + str r4, [r0] +_080CC2A0: + movs r0, #1 +_080CC2A2: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080CC2A8: .4byte gUnknown_20399A8 +_080CC2AC: .4byte 0x00000A68 + thumb_func_end sub_080CC274 + + thumb_func_start sub_080CC2B0 +sub_080CC2B0: @ 0x080CC2B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + adds r5, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r2, #0x11 + ldr r0, _080CC320 + ldr r0, [r0] + movs r3, #0xb3 + lsls r3, r3, #2 + adds r0, r0, r3 + ldrh r3, [r0] + lsrs r3, r3, #3 + adds r3, #0xa + lsls r1, r1, #0x18 + asrs r7, r1, #0x18 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r6, r3, r0 + movs r0, #0x3f + ands r6, r0 + movs r3, #0x14 + str r3, [sp] + movs r1, #0x12 + str r1, [sp, #4] + str r6, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + str r1, [sp, #0x14] + movs r0, #0x11 + str r0, [sp, #0x18] + lsls r2, r2, #0x18 + asrs r2, r2, #0x10 + str r2, [sp, #0x1c] + movs r0, #0xc0 + lsls r0, r0, #0xa + adds r4, r4, r0 + asrs r4, r4, #0x10 + str r4, [sp, #0x20] + movs r0, #2 + adds r1, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + cmp r7, #0 + beq _080CC346 + cmp r7, #0 + ble _080CC324 + lsls r0, r6, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + b _080CC32A + .align 2, 0 +_080CC320: .4byte gUnknown_20399A8 +_080CC324: + lsls r0, r6, #0x10 + ldr r3, _080CC350 + adds r0, r0, r3 +_080CC32A: + lsrs r6, r0, #0x10 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + movs r0, #4 + str r0, [sp] + movs r0, #0x12 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r3, #2 + bl sub_080026E0 +_080CC346: + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC350: .4byte 0xFFFC0000 + thumb_func_end sub_080CC2B0 + + thumb_func_start sub_080CC354 +sub_080CC354: @ 0x080CC354 + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldr r0, _080CC380 + ldr r0, [r0] + movs r1, #0xb3 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r0, [r0] + lsrs r0, r0, #3 + adds r3, r0, #0 + adds r3, #0x1e + movs r0, #0x3f + ands r3, r0 + adds r0, r3, #0 + cmp r0, #0x1f + bgt _080CC384 + lsls r0, r0, #1 + movs r6, #0x98 + lsls r6, r6, #3 + adds r0, r0, r6 + b _080CC38C + .align 2, 0 +_080CC380: .4byte gUnknown_20399A8 +_080CC384: + lsls r0, r0, #1 + movs r1, #0xc8 + lsls r1, r1, #4 + adds r0, r0, r1 +_080CC38C: + adds r2, r2, r0 + movs r0, #0 + movs r5, #0 + movs r4, #0x3f +_080CC394: + strh r5, [r2] + adds r2, #2 + adds r3, #1 + ands r3, r4 + adds r1, r3, #0 + cmp r1, #0 + bne _080CC3A6 + ldr r6, _080CC3C0 + adds r2, r2, r6 +_080CC3A6: + cmp r1, #0x20 + bne _080CC3B0 + movs r1, #0xf8 + lsls r1, r1, #3 + adds r2, r2, r1 +_080CC3B0: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x2b + bls _080CC394 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CC3C0: .4byte 0xFFFFF7C0 + thumb_func_end sub_080CC354 + + thumb_func_start sub_080CC3C4 +sub_080CC3C4: @ 0x080CC3C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _080CC550 + mov sl, r1 + ldr r1, [r1] + movs r2, #0xbe + lsls r2, r2, #2 + adds r0, r1, r2 + str r0, [sp, #0x24] + mov r3, sp + adds r3, #0x24 + str r3, [sp, #0x2c] + ldr r0, _080CC554 + str r0, [r3, #4] + ldr r4, _080CC558 + adds r1, r1, r4 + str r1, [sp, #0x14] + add r0, sp, #0x18 + ldr r7, _080CC55C + strh r7, [r0] + add r0, sp, #0x1c + movs r1, #0 + movs r2, #8 + bl memset + add r1, sp, #0x14 + add r0, sp, #4 + movs r2, #0x10 + bl memcpy + mov r0, r8 + bl sub_080D1998 + lsls r0, r0, #0x18 + mov r5, sl + ldr r4, [r5] + ldr r2, _080CC560 + lsrs r0, r0, #0x16 + adds r1, r0, r2 + ldrh r3, [r1] + movs r5, #0xe3 + lsls r5, r5, #3 + adds r1, r4, r5 + strh r3, [r1] + adds r2, #2 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r1, _080CC564 + adds r4, r4, r1 + strh r0, [r4] + add r0, sp, #4 + bl sub_080084A8 + mov r2, sl + ldr r0, [r2] + movs r6, #0xe7 + lsls r6, r6, #3 + adds r0, r0, r6 + movs r1, #0xfc + lsls r1, r1, #2 + str r1, [r0] + adds r0, r7, #0 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r4, sl + ldr r3, [r4] + lsls r1, r0, #4 + movs r5, #0x87 + lsls r5, r5, #1 + mov sb, r5 + add r1, sb + ldr r4, _080CC568 + adds r2, r3, r4 + strh r1, [r2] + adds r3, r3, r6 + movs r5, #0x80 + lsls r5, r5, #9 + adds r1, r5, #0 + lsls r1, r0 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + adds r0, r7, #0 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sl + ldr r4, [r1] + lsls r1, r0, #4 + add r1, sb + ldr r3, _080CC56C + 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, _080CC570 + adds r4, r4, r5 + mov r0, r8 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #8 + bl sub_08008E14 + mov r4, sl + ldr r0, [r4] + adds r5, r0, r5 + movs r2, #0xbe + lsls r2, r2, #2 + adds r1, r0, r2 + movs r3, #0x9f + lsls r3, r3, #3 + adds r0, r0, r3 + str r0, [sp] + adds r0, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + ldr r0, [sp, #0x2c] + bl sub_08008210 + mov r0, r8 + bl sub_080D1970 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080CC898 + movs r4, #0 + lsls r0, r0, #0x10 + asrs r6, r0, #0x10 +_080CC4F0: + lsls r1, r4, #5 + adds r1, r6, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _080CC574 + movs r2, #0x1c + movs r3, #0x18 + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r5, _080CC550 + ldr r2, [r5] + lsls r0, r4, #2 + movs r3, #0xe4 + lsls r3, r3, #3 + adds r2, r2, r3 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080CC578 + adds r0, r0, r1 + str r0, [r2] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _080CC4F0 + ldr r0, [r5] + movs r4, #0xdf + lsls r4, r4, #3 + adds r0, r0, r4 + movs r1, #0 + strb r1, [r0] + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC550: .4byte gUnknown_20399A8 +_080CC554: .4byte 0x00030200 +_080CC558: .4byte 0x000006FC +_080CC55C: .4byte 0x0000DAC9 +_080CC560: .4byte gUnknown_8551824 +_080CC564: .4byte 0x0000071A +_080CC568: .4byte 0x0000071C +_080CC56C: .4byte 0x0000071E +_080CC570: .4byte 0x000021B8 +_080CC574: .4byte gUnknown_8555BA4 +_080CC578: .4byte gUnknown_20205AC + thumb_func_end sub_080CC3C4 + + thumb_func_start sub_080CC57C +sub_080CC57C: @ 0x080CC57C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + ldr r4, _080CC5F8 + ldr r2, [r4] + movs r1, #0xbe + lsls r1, r1, #2 + adds r0, r2, r1 + str r0, [sp, #0x1c] + add r3, sp, #0x1c + ldr r5, _080CC5FC + mov ip, r5 + movs r6, #0xc0 + lsls r6, r6, #0xa + mov sb, r6 + ldr r0, _080CC600 + str r0, [r3, #4] + add r1, sp, #4 + ldr r0, _080CC604 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + movs r1, #0 + movs r5, #0xdf + lsls r5, r5, #3 + adds r2, r2, r5 + ldrb r0, [r2] + mov r8, r4 + adds r6, r3, #0 + cmp r0, #0 + bne _080CC5D0 + movs r1, #1 +_080CC5D0: + strb r1, [r2] + mov r7, r8 + ldr r0, [r7] + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080CC60C + ldr r0, [r6, #4] + mov r1, ip + ands r0, r1 + mov r2, sb + orrs r0, r2 + str r0, [r6, #4] + ldr r0, [r7] + ldr r3, _080CC608 + adds r0, r0, r3 + ldrh r0, [r0] + mov sb, r0 + b _080CC630 + .align 2, 0 +_080CC5F8: .4byte gUnknown_20399A8 +_080CC5FC: .4byte 0x0000FFFF +_080CC600: .4byte 0x00030200 +_080CC604: .4byte gUnknown_8555BA4 +_080CC608: .4byte 0x0000071C +_080CC60C: + ldr r0, [r6, #4] + mov r5, ip + ands r0, r5 + movs r1, #0x80 + lsls r1, r1, #0xb + orrs r0, r1 + str r0, [r6, #4] + mov r7, r8 + ldr r0, [r7] + ldr r1, _080CC750 + adds r0, r0, r1 + ldrh r0, [r0] + mov sb, r0 + add r1, sp, #4 + movs r0, #4 + strh r0, [r1] + ldr r0, _080CC754 + strh r0, [r1, #2] +_080CC630: + mov r2, r8 + ldr r4, [r2] + ldr r5, _080CC758 + adds r4, r4, r5 + ldr r0, [sp, #0x28] + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #8 + bl sub_08008E14 + mov r3, r8 + ldr r0, [r3] + adds r5, r0, r5 + movs r7, #0xbe + lsls r7, r7, #2 + adds r1, r0, r7 + movs r2, #0x9f + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [sp] + adds r0, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080C66A4 + adds r0, r6, #0 + bl sub_08008210 + ldr r0, [sp, #0x28] + bl sub_080D1998 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + ldr r1, _080CC75C + adds r0, r0, r1 + mov r1, sb + movs r2, #4 + bl sub_080A1200 + ldr r0, [sp, #0x28] + bl sub_080D1970 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080CC898 + lsls r0, r0, #0x10 + mov r3, sl + lsls r2, r3, #0x18 + asrs r2, r2, #0x18 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #6 + lsrs r5, r0, #0x10 + str r5, [sp, #0x24] + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + movs r7, #0 + mov sb, r8 + rsbs r2, r2, #0 + mov r8, r2 +_080CC6BA: + lsls r6, r7, #5 + mov r0, sl + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r6 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + add r0, sp, #4 + movs r2, #0x1c + movs r3, #0x18 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sb + ldr r2, [r1] + lsls r5, r7, #2 + movs r3, #0xe5 + lsls r3, r3, #3 + adds r2, r2, r3 + adds r2, r2, r5 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080CC760 + adds r1, r1, r0 + str r1, [r2] + mov r0, r8 + lsls r4, r0, #1 + add r4, r8 + lsls r4, r4, #1 + strh r4, [r1, #0x2e] + ldr r1, [r2] + ldr r3, [sp, #0x24] + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r6 + strh r0, [r1, #0x30] + ldr r0, [r2] + movs r6, #0 + strh r6, [r0, #0x32] + ldr r0, [r2] + ldr r1, _080CC764 + str r1, [r0, #0x1c] + lsls r1, r7, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + mov r1, sb + ldr r0, [r1] + movs r2, #0xe4 + lsls r2, r2, #3 + adds r0, r0, r2 + adds r0, r0, r5 + ldr r1, [r0] + strh r4, [r1, #0x2e] + ldr r2, [r0] + movs r1, #1 + strh r1, [r2, #0x30] + ldr r1, [r0] + ldr r0, _080CC768 + str r0, [r1, #0x1c] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #1 + bls _080CC6BA + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC750: .4byte 0x0000071C +_080CC754: .4byte 0x0000DAC9 +_080CC758: .4byte 0x000021B8 +_080CC75C: .4byte gUnknown_8551824 +_080CC760: .4byte gUnknown_20205AC +_080CC764: .4byte sub_080CC7BC +_080CC768: .4byte sub_080CC7F0 + thumb_func_end sub_080CC57C + + thumb_func_start sub_080CC76C +sub_080CC76C: @ 0x080CC76C + push {lr} + ldr r0, _080CC788 + ldr r0, [r0] + movs r1, #0xdf + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080CC78C + movs r0, #4 + bl sub_08008280 + b _080CC792 + .align 2, 0 +_080CC788: .4byte gUnknown_20399A8 +_080CC78C: + movs r0, #3 + bl sub_08008280 +_080CC792: + ldr r0, _080CC7B4 + ldr r0, [r0] + movs r3, #0xe4 + lsls r3, r3, #3 + adds r2, r0, r3 + adds r3, #8 + adds r1, r0, r3 + ldr r1, [r1] + str r1, [r2] + ldr r2, _080CC7B8 + adds r1, r0, r2 + adds r3, #4 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080CC7B4: .4byte gUnknown_20399A8 +_080CC7B8: .4byte 0x00000724 + thumb_func_end sub_080CC76C + + thumb_func_start sub_080CC7BC +sub_080CC7BC: @ 0x080CC7BC + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x32] + movs r3, #0x32 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _080CC7D0 + subs r0, r1, #1 + strh r0, [r2, #0x32] + b _080CC7E8 +_080CC7D0: + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _080CC7E8 + ldr r0, _080CC7EC + str r0, [r2, #0x1c] +_080CC7E8: + pop {r0} + bx r0 + .align 2, 0 +_080CC7EC: .4byte sub_08007140 + thumb_func_end sub_080CC7BC + + thumb_func_start sub_080CC7F0 +sub_080CC7F0: @ 0x080CC7F0 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x30] + movs r3, #0x30 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _080CC804 + subs r0, r1, #1 + strh r0, [r2, #0x30] + b _080CC822 +_080CC804: + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r2, #0x20] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x32] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc0 + bls _080CC822 + adds r0, r2, #0 + bl sub_08006E00 +_080CC822: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CC7F0 + + thumb_func_start sub_080CC828 +sub_080CC828: @ 0x080CC828 + push {lr} + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1998 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080CC864 + ldr r2, [r0] + movs r3, #0xdf + lsls r3, r3, #3 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080CC870 + lsls r0, r1, #2 + ldr r1, _080CC868 + adds r0, r0, r1 + adds r3, #0x24 + adds r1, r2, r3 + ldrh r1, [r1] + lsls r1, r1, #1 + ldr r2, _080CC86C + adds r1, r1, r2 + movs r2, #2 + bl CpuSet + b _080CC888 + .align 2, 0 +_080CC864: .4byte gUnknown_20399A8 +_080CC868: .4byte gUnknown_8551824 +_080CC86C: .4byte gUnknown_20373B4 +_080CC870: + lsls r0, r1, #2 + ldr r1, _080CC88C + adds r0, r0, r1 + ldr r3, _080CC890 + adds r1, r2, r3 + ldrh r1, [r1] + lsls r1, r1, #1 + ldr r2, _080CC894 + adds r1, r1, r2 + movs r2, #2 + bl CpuSet +_080CC888: + pop {r0} + bx r0 + .align 2, 0 +_080CC88C: .4byte gUnknown_8551824 +_080CC890: .4byte 0x0000071E +_080CC894: .4byte gUnknown_20373B4 + thumb_func_end sub_080CC828 + + thumb_func_start sub_080CC898 +sub_080CC898: @ 0x080CC898 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xe + movs r0, #0xb0 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bx lr + thumb_func_end sub_080CC898 + + thumb_func_start sub_080CC8A8 +sub_080CC8A8: @ 0x080CC8A8 + push {r4, r5, lr} + ldr r0, _080CC924 + bl sub_08008210 + movs r5, #0 +_080CC8B2: + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #0x13 + movs r0, #0xb8 + lsls r0, r0, #0xf + adds r1, r1, r0 + asrs r1, r1, #0x10 + ldr r0, _080CC928 + movs r2, #0x1c + movs r3, #0x16 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _080CC904 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080CC92C + adds r4, r0, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + movs r0, #1 + cmp r5, #0 + bne _080CC8F2 + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 +_080CC8F2: + strh r0, [r4, #0x34] + ldr r0, _080CC930 + ldr r0, [r0] + lsls r1, r5, #2 + movs r2, #0xe6 + lsls r2, r2, #3 + adds r0, r0, r2 + adds r0, r0, r1 + str r4, [r0] +_080CC904: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _080CC8B2 + bl sub_080CE358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CC91E + movs r0, #1 + bl sub_080CCA24 +_080CC91E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CC924: .4byte gUnknown_8555B7C +_080CC928: .4byte gUnknown_8555BDC +_080CC92C: .4byte gUnknown_20205AC +_080CC930: .4byte gUnknown_20399A8 + thumb_func_end sub_080CC8A8 + + thumb_func_start sub_080CC934 +sub_080CC934: @ 0x080CC934 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r2, #0 + ldr r7, _080CC988 + mov ip, r7 + movs r6, #0xe6 + lsls r6, r6, #3 + movs r4, #0 + movs r3, #2 +_080CC948: + mov r0, ip + ldr r1, [r0] + lsls r0, r2, #2 + adds r1, r1, r6 + adds r1, r1, r0 + ldr r0, [r1] + strh r4, [r0, #0x24] + ldr r0, [r1] + strh r3, [r0, #0x2e] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #1 + bls _080CC948 + lsls r0, r5, #0x18 + cmp r0, #0 + bge _080CC990 + ldr r1, [r7] + movs r2, #0xe6 + lsls r2, r2, #3 + adds r3, r1, r2 + ldr r2, [r3] + movs r0, #0x1d + strh r0, [r2, #0x30] + ldr r0, _080CC98C + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #5 + strh r0, [r2, #0x30] + ldr r0, [r3] + movs r2, #0x48 + b _080CC9AC + .align 2, 0 +_080CC988: .4byte gUnknown_20399A8 +_080CC98C: .4byte 0x00000734 +_080CC990: + ldr r1, [r7] + movs r2, #0xe6 + lsls r2, r2, #3 + adds r3, r1, r2 + ldr r2, [r3] + movs r0, #5 + strh r0, [r2, #0x30] + ldr r0, _080CC9D0 + adds r1, r1, r0 + ldr r2, [r1] + movs r0, #0x1d + strh r0, [r2, #0x30] + ldr r0, [r3] + movs r2, #0xf8 +_080CC9AC: + strh r2, [r0, #0x32] + ldr r0, [r1] + strh r2, [r0, #0x32] + ldr r1, [r7] + movs r2, #0xe6 + lsls r2, r2, #3 + adds r0, r1, r2 + ldr r2, [r0] + movs r0, #0 + strh r0, [r2, #0x3c] + ldr r0, _080CC9D0 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #1 + strh r0, [r1, #0x3c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CC9D0: .4byte 0x00000734 + thumb_func_end sub_080CC934 + + thumb_func_start sub_080CC9D4 +sub_080CC9D4: @ 0x080CC9D4 + push {r4, r5, r6, lr} + movs r3, #0 + movs r5, #0 + movs r6, #5 + rsbs r6, r6, #0 + ldr r4, _080CCA20 +_080CC9E0: + ldr r1, [r4] + lsls r0, r3, #2 + movs r2, #0xe6 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r1, r1, r0 + ldr r2, [r1] + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, 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, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #1 + bls _080CC9E0 + movs r0, #1 + bl sub_080CCA24 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CCA20: .4byte gUnknown_20399A8 + thumb_func_end sub_080CC9D4 + + thumb_func_start sub_080CCA24 +sub_080CCA24: @ 0x080CCA24 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CCA60 + movs r2, #0 + ldr r6, _080CCA5C + movs r5, #0xe6 + lsls r5, r5, #3 + movs r3, #0 + movs r4, #1 +_080CCA38: + ldr r1, [r6] + lsls r0, r2, #2 + adds r1, r1, r5 + adds r1, 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, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #1 + bls _080CCA38 + b _080CCA80 + .align 2, 0 +_080CCA5C: .4byte gUnknown_20399A8 +_080CCA60: + movs r2, #0 + ldr r5, _080CCA88 + movs r4, #0xe6 + lsls r4, r4, #3 + movs r3, #0 +_080CCA6A: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r4 + adds r0, r0, r1 + ldr r0, [r0] + strh r3, [r0, #0x2e] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #1 + bls _080CCA6A +_080CCA80: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CCA88: .4byte gUnknown_20399A8 + thumb_func_end sub_080CCA24 + + thumb_func_start sub_080CCA8C +sub_080CCA8C: @ 0x080CCA8C + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #4 + bhi _080CCB58 + lsls r0, r0, #2 + ldr r1, _080CCAA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CCAA4: .4byte _080CCAA8 +_080CCAA8: @ jump table + .4byte _080CCABC @ case 0 + .4byte _080CCAC2 @ case 1 + .4byte _080CCAF0 @ case 2 + .4byte _080CCAF6 @ case 3 + .4byte _080CCB48 @ case 4 +_080CCABC: + movs r0, #0 + strh r0, [r2, #0x24] + b _080CCB58 +_080CCAC2: + ldrh r0, [r2, #0x30] + adds r0, #1 + movs r1, #0 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _080CCB58 + strh r1, [r2, #0x30] + ldrh r0, [r2, #0x34] + ldrh r3, [r2, #0x24] + adds r0, r0, r3 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x32] + adds r0, #1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080CCB58 + strh r1, [r2, #0x32] + strh r1, [r2, #0x24] + b _080CCB58 +_080CCAF0: + movs r0, #3 + strh r0, [r2, #0x2e] + b _080CCB58 +_080CCAF6: + ldr r0, _080CCB40 + ldr r1, [r0] + ldr r0, _080CCB44 + adds r1, r1, r0 + ldrh r0, [r2, #0x20] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2, #0x20] + subs r0, #0x49 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xae + bls _080CCB1C + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] +_080CCB1C: + ldrh r0, [r2, #0x30] + subs r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080CCB58 + ldrh r0, [r2, #0x32] + strh r0, [r2, #0x20] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + movs r0, #4 + strh r0, [r2, #0x2e] + b _080CCB58 + .align 2, 0 +_080CCB40: .4byte gUnknown_20399A8 +_080CCB44: .4byte 0x000002CE +_080CCB48: + ldr r0, _080CCB5C + ldr r0, [r0] + ldr r1, _080CCB60 + adds r0, r0, r1 + ldrh r1, [r2, #0x20] + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r2, #0x20] +_080CCB58: + pop {r0} + bx r0 + .align 2, 0 +_080CCB5C: .4byte gUnknown_20399A8 +_080CCB60: .4byte 0x000002CE + thumb_func_end sub_080CCA8C + + thumb_func_start sub_080CCB64 +sub_080CCB64: @ 0x080CCB64 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r4, [sp, #0x18] + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080CCBD0 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080CCBDC + movs r1, #1 + ands r1, r7 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r5, _080CCBD4 + adds r6, r4, r5 + adds r0, r6, #0 + bl sub_08007EC0 + movs r0, #3 + mov r1, r8 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r6, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #5] + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _080CCBD8 + str r0, [r4] + adds r0, r6, #0 + b _080CCBDE + .align 2, 0 +_080CCBD0: .4byte gUnknown_8555BDC +_080CCBD4: .4byte gUnknown_20205AC +_080CCBD8: .4byte sub_08007140 +_080CCBDC: + movs r0, #0 +_080CCBDE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080CCB64 + + thumb_func_start sub_080CCBE8 +sub_080CCBE8: @ 0x080CCBE8 + push {lr} + ldr r0, _080CCBFC + ldr r0, [r0] + ldrb r1, [r0, #1] + cmp r1, #1 + beq _080CCC04 + ldr r1, _080CCC00 + movs r0, #0 + strb r0, [r1] + b _080CCC08 + .align 2, 0 +_080CCBFC: .4byte gUnknown_20399A8 +_080CCC00: .4byte gUnknown_2039A18 +_080CCC04: + ldr r0, _080CCC44 + strb r1, [r0] +_080CCC08: + ldr r0, _080CCC48 + movs r1, #0 + strb r1, [r0] + ldr r0, _080CCC4C + strb r1, [r0] + ldr r0, _080CCC50 + strb r1, [r0] + ldr r0, _080CCC54 + strb r1, [r0] + ldr r0, _080CCC58 + strb r1, [r0] + bl sub_080CD488 + bl sub_080CF490 + ldr r2, _080CCC5C + ldr r0, [r2] + ldr r1, _080CCC60 + adds r0, r0, r1 + movs r3, #0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080CCC64 + adds r0, r0, r1 + strb r3, [r0] + bl sub_080CE3BC + pop {r0} + bx r0 + .align 2, 0 +_080CCC44: .4byte gUnknown_2039A18 +_080CCC48: .4byte gUnknown_2039A19 +_080CCC4C: .4byte gUnknown_2039A1A +_080CCC50: .4byte gUnknown_2039A1B +_080CCC54: .4byte gUnknown_2039A1C +_080CCC58: .4byte gUnknown_2039A1D +_080CCC5C: .4byte gUnknown_20399A8 +_080CCC60: .4byte 0x00000CD6 +_080CCC64: .4byte 0x000021FF + thumb_func_end sub_080CCBE8 + + thumb_func_start sub_080CCC68 +sub_080CCC68: @ 0x080CCC68 + push {lr} + bl sub_080CF490 + bl sub_080CE458 + ldr r3, _080CCCA8 + ldr r0, [r3] + ldr r1, _080CCCAC + adds r0, r0, r1 + movs r2, #0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r3] + ldr r1, _080CCCB0 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, _080CCCB4 + ldrb r0, [r0] + cmp r0, #0 + beq _080CCCA2 + ldr r0, [r3] + ldr r1, _080CCCB8 + adds r0, r0, r1 + ldr r1, _080CCCBC + movs r2, #0x64 + bl memcpy + bl sub_080CA838 +_080CCCA2: + pop {r0} + bx r0 + .align 2, 0 +_080CCCA8: .4byte gUnknown_20399A8 +_080CCCAC: .4byte 0x00000CD6 +_080CCCB0: .4byte 0x000021FF +_080CCCB4: .4byte gUnknown_2039A1A +_080CCCB8: .4byte 0x000020A4 +_080CCCBC: .4byte gUnknown_20399B4 + thumb_func_end sub_080CCC68 + + thumb_func_start sub_080CCCC0 +sub_080CCCC0: @ 0x080CCCC0 + push {r4, r5, r6, lr} + adds r4, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r0, #4 + bhi _080CCD78 + lsls r0, r0, #2 + ldr r1, _080CCCDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CCCDC: .4byte _080CCCE0 +_080CCCE0: @ jump table + .4byte _080CCCF4 @ case 0 + .4byte _080CCD22 @ case 1 + .4byte _080CCD4A @ case 2 + .4byte _080CCD52 @ case 3 + .4byte _080CCD70 @ case 4 +_080CCCF4: + adds r0, r5, #0 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, #0x64 + strh r1, [r4] + adds r0, r5, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, #0x20 + strh r1, [r6] + b _080CCD78 +_080CCD22: + cmp r5, #0 + bne _080CCD2E + movs r0, #0x68 + strh r0, [r4] + movs r0, #0x34 + b _080CCD76 +_080CCD2E: + cmp r5, #6 + bne _080CCD3A + movs r0, #0x98 + strh r0, [r4] + movs r0, #0x84 + b _080CCD76 +_080CCD3A: + movs r0, #0x98 + strh r0, [r4] + subs r1, r5, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, #4 + b _080CCD76 +_080CCD4A: + movs r0, #0xa2 + strh r0, [r4] + movs r0, #0xc + b _080CCD76 +_080CCD52: + ldr r0, _080CCD6C + ldrb r0, [r0] + movs r1, #0xe + cmp r0, #0 + beq _080CCD5E + movs r1, #8 +_080CCD5E: + strh r1, [r6] + movs r0, #0x58 + muls r0, r5, r0 + adds r0, #0x78 + strh r0, [r4] + b _080CCD78 + .align 2, 0 +_080CCD6C: .4byte gUnknown_2039A1A +_080CCD70: + movs r0, #0xa0 + strh r0, [r4] + movs r0, #0x60 +_080CCD76: + strh r0, [r6] +_080CCD78: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CCCC0 + + thumb_func_start sub_080CCD80 +sub_080CCD80: @ 0x080CCD80 + push {lr} + ldr r0, _080CCDA8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080CCDB4 + cmp r0, #1 + bne _080CCDC8 + ldr r0, _080CCDAC + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080CCDB0 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + b _080CCDBE + .align 2, 0 +_080CCDA8: .4byte gUnknown_2039A18 +_080CCDAC: .4byte gUnknown_2039A19 +_080CCDB0: .4byte gUnknown_2024190 +_080CCDB4: + ldr r0, _080CCDC4 + ldrb r0, [r0] + movs r1, #0xb + bl sub_080D1658 +_080CCDBE: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080CCDCA + .align 2, 0 +_080CCDC4: .4byte gUnknown_2039A19 +_080CCDC8: + movs r0, #0 +_080CCDCA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CCD80 + + thumb_func_start sub_080CCDD0 +sub_080CCDD0: @ 0x080CCDD0 + push {r4, r5, r6, r7, lr} + ldr r7, _080CCDEC + ldr r5, [r7] + movs r0, #0xcd + lsls r0, r0, #4 + adds r1, r5, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _080CCDFA + ldrb r0, [r5, #1] + cmp r0, #3 + beq _080CCDF0 + movs r0, #0 + b _080CCF16 + .align 2, 0 +_080CCDEC: .4byte gUnknown_20399A8 +_080CCDF0: + bl sub_080D0AB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080CCF16 +_080CCDFA: + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080CCEF8 + ldr r1, _080CCEE4 + adds r4, r5, r1 + ldr r2, _080CCEE8 + adds r1, r5, r2 + ldr r0, [r4] + ldr r1, [r1] + adds r0, r0, r1 + str r0, [r4] + movs r0, #0xcc + lsls r0, r0, #4 + adds r3, r5, r0 + adds r2, #4 + adds r1, r5, r2 + ldr r0, [r3] + ldr r1, [r1] + adds r0, r0, r1 + str r0, [r3] + ldr r6, _080CCEEC + adds r1, r5, r6 + ldr r2, [r1] + ldr r0, [r4] + asrs r0, r0, #8 + strh r0, [r2, #0x20] + ldr r2, [r1] + ldr r0, [r3] + asrs r0, 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, r3, #1 + cmp r0, r3 + ble _080CCE56 + ldr r4, _080CCEF0 + adds r0, r2, r4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, #0x40 + strh r0, [r1, #0x20] +_080CCE56: + ldr r0, [r7] + adds r0, r0, r6 + ldr r1, [r0] + ldrh r2, [r1, #0x20] + movs r4, #0x20 + ldrsh r0, [r1, r4] + cmp r0, #0x3f + bgt _080CCE72 + movs r0, #0x40 + subs r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, r3, r0 + strh r0, [r1, #0x20] +_080CCE72: + ldr r0, [r7] + adds r0, r0, r6 + ldr r1, [r0] + ldrh r2, [r1, #0x22] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0xb0 + ble _080CCE8E + adds r0, r2, #0 + subs r0, #0xb0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, #0x10 + strh r0, [r1, #0x22] +_080CCE8E: + ldr r0, [r7] + adds r0, r0, r6 + ldr r2, [r0] + ldrh r3, [r2, #0x22] + movs r4, #0x22 + ldrsh r0, [r2, r4] + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080CCEAE + subs r0, r1, r3 + movs r1, #0xb0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + strh r1, [r2, #0x22] +_080CCEAE: + ldr r0, [r7] + ldr r2, _080CCEF4 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _080CCF14 + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CCF14 + ldr r0, [r7] + adds r0, r0, r6 + ldr r2, [r0] + adds r2, #0x3f + ldrb r3, [r2] + lsrs r1, r3, #1 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #1 + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _080CCF14 + .align 2, 0 +_080CCEE4: .4byte 0x00000CBC +_080CCEE8: .4byte 0x00000CC4 +_080CCEEC: .4byte 0x00000CB4 +_080CCEF0: .4byte 0xFFFFFF00 +_080CCEF4: .4byte 0x00000CD7 +_080CCEF8: + ldr r3, _080CCF1C + adds r2, r5, r3 + ldr r1, [r2] + ldr r4, _080CCF20 + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r1, #0x20] + ldr r1, [r2] + ldr r2, _080CCF24 + adds r0, r5, r2 + ldrh r0, [r0] + strh r0, [r1, #0x22] + bl sub_080CD2E4 +_080CCF14: + movs r0, #1 +_080CCF16: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080CCF1C: .4byte 0x00000CB4 +_080CCF20: .4byte 0x00000CCC +_080CCF24: .4byte 0x00000CCE + thumb_func_end sub_080CCDD0 + + thumb_func_start sub_080CCF28 +sub_080CCF28: @ 0x080CCF28 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r6, sp + adds r6, #2 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sp + adds r3, r6, #0 + bl sub_080CCCC0 + ldr r1, _080CCF78 + ldr r0, [r1] + ldr r2, _080CCF7C + adds r0, r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r3, _080CCF80 + adds r0, r0, r3 + strb r5, [r0] + ldr r1, [r1] + mov r0, sp + ldrh r2, [r0] + subs r3, #9 + adds r0, r1, r3 + strh r2, [r0] + ldrh r0, [r6] + ldr r2, _080CCF84 + adds r1, r1, r2 + strh r0, [r1] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CCF78: .4byte gUnknown_20399A8 +_080CCF7C: .4byte 0x00000CD4 +_080CCF80: .4byte 0x00000CD5 +_080CCF84: .4byte 0x00000CCE + thumb_func_end sub_080CCF28 + + thumb_func_start sub_080CCF88 +sub_080CCF88: @ 0x080CCF88 + push {r4, r5, r6, r7, lr} + ldr r0, _080CCFA4 + ldr r2, [r0] + ldr r3, _080CCFA8 + adds r1, r2, r3 + ldrh r1, [r1] + adds r4, r0, #0 + cmp r1, #0 + beq _080CCFAC + movs r0, #0xcd + lsls r0, r0, #4 + adds r1, r2, r0 + movs r0, #0xc + b _080CCFB4 + .align 2, 0 +_080CCFA4: .4byte gUnknown_20399A8 +_080CCFA8: .4byte 0x00000CD2 +_080CCFAC: + movs r3, #0xcd + lsls r3, r3, #4 + adds r1, r2, r3 + movs r0, #6 +_080CCFB4: + strh r0, [r1] + ldr r1, [r4] + ldr r0, _080CCFF8 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080CCFCE + movs r3, #0xcd + lsls r3, r3, #4 + adds r0, r1, r3 + ldrh r0, [r0] + lsrs r0, r0, #1 + strb r0, [r2] +_080CCFCE: + ldr r2, [r4] + ldr r1, _080CCFFC + adds r0, r2, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080CD008 + cmp r1, #1 + beq _080CD028 + ldr r3, _080CD000 + adds r0, r2, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD004 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x22 + ldrsh r0, [r0, r2] + b _080CD03C + .align 2, 0 +_080CCFF8: .4byte 0x00000CD7 +_080CCFFC: .4byte 0x00000CD2 +_080CD000: .4byte 0x00000CCE +_080CD004: .4byte 0x00000CB4 +_080CD008: + ldr r3, _080CD020 + adds r0, r2, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD024 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x22 + ldrsh r0, [r0, r2] + adds r0, #0xc0 + b _080CD03C + .align 2, 0 +_080CD020: .4byte 0x00000CCE +_080CD024: .4byte 0x00000CB4 +_080CD028: + ldr r3, _080CD068 + adds r0, r2, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD06C + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x22 + ldrsh r0, [r0, r2] + subs r0, #0xc0 +_080CD03C: + subs r7, r1, r0 + ldr r2, [r4] + ldr r3, _080CD070 + adds r0, r2, r3 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080CD078 + cmp r1, #1 + beq _080CD098 + ldr r1, _080CD074 + adds r0, r2, r1 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD06C + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x20 + ldrsh r0, [r0, r2] + b _080CD0AC + .align 2, 0 +_080CD068: .4byte 0x00000CCE +_080CD06C: .4byte 0x00000CB4 +_080CD070: .4byte 0x00000CD3 +_080CD074: .4byte 0x00000CCC +_080CD078: + ldr r3, _080CD090 + adds r0, r2, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD094 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x20 + ldrsh r0, [r0, r2] + adds r0, #0xc0 + b _080CD0AC + .align 2, 0 +_080CD090: .4byte 0x00000CCC +_080CD094: .4byte 0x00000CB4 +_080CD098: + ldr r3, _080CD0FC + adds r0, r2, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldr r3, _080CD100 + adds r0, r2, r3 + ldr r0, [r0] + movs r2, #0x20 + ldrsh r0, [r0, r2] + subs r0, #0xc0 +_080CD0AC: + subs r0, r1, r0 + lsls r7, r7, #8 + lsls r0, r0, #8 + ldr r4, [r4] + ldr r3, _080CD104 + adds r6, r4, r3 + movs r1, #0xcd + lsls r1, r1, #4 + adds r5, r4, r1 + ldrh r1, [r5] + bl __divsi3 + str r0, [r6] + ldr r2, _080CD108 + adds r6, r4, r2 + ldrh r1, [r5] + adds r0, r7, #0 + bl __divsi3 + str r0, [r6] + ldr r3, _080CD10C + adds r2, r4, r3 + ldr r0, _080CD100 + adds r1, r4, r0 + ldr r0, [r1] + movs r3, #0x20 + ldrsh r0, [r0, r3] + lsls r0, r0, #8 + str r0, [r2] + movs r0, #0xcc + lsls r0, r0, #4 + adds r4, r4, r0 + ldr r0, [r1] + movs r1, #0x22 + ldrsh r0, [r0, r1] + lsls r0, r0, #8 + str r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CD0FC: .4byte 0x00000CCC +_080CD100: .4byte 0x00000CB4 +_080CD104: .4byte 0x00000CC4 +_080CD108: .4byte 0x00000CC8 +_080CD10C: .4byte 0x00000CBC + thumb_func_end sub_080CCF88 + + thumb_func_start sub_080CD110 +sub_080CD110: @ 0x080CD110 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080CCF28 + bl sub_080CCF88 + ldr r5, _080CD150 + ldr r1, [r5] + ldrb r0, [r1, #1] + cmp r0, #3 + beq _080CD160 + ldr r2, _080CD154 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD178 + ldr r0, _080CD158 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD178 + ldr r2, _080CD15C + adds r0, r1, r2 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + b _080CD178 + .align 2, 0 +_080CD150: .4byte gUnknown_20399A8 +_080CD154: .4byte 0x000021FF +_080CD158: .4byte gUnknown_2039A1A +_080CD15C: .4byte 0x00000CB4 +_080CD160: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD178 + ldr r0, [r5] + ldr r1, _080CD19C + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 +_080CD178: + ldr r0, _080CD1A0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080CD1D8 + ldr r0, _080CD1A4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CD1AC + ldr r0, _080CD1A8 + ldrb r1, [r0] + movs r0, #0 + bl sub_080D06F0 + b _080CD1BA + .align 2, 0 +_080CD19C: .4byte 0x00000CB4 +_080CD1A0: .4byte gUnknown_20399A8 +_080CD1A4: .4byte gUnknown_2039A18 +_080CD1A8: .4byte gUnknown_2039A19 +_080CD1AC: + cmp r0, #1 + bne _080CD1BA + ldr r0, _080CD1C8 + ldrb r1, [r0] + movs r0, #1 + bl sub_080D06F0 +_080CD1BA: + cmp r4, #0 + bne _080CD1CC + movs r0, #0 + adds r1, r6, #0 + bl sub_080D062C + b _080CD1D8 + .align 2, 0 +_080CD1C8: .4byte gUnknown_2039A19 +_080CD1CC: + cmp r4, #1 + bne _080CD204 + movs r0, #1 + adds r1, r6, #0 + bl sub_080D062C +_080CD1D8: + cmp r4, #1 + bne _080CD204 + ldr r0, _080CD24C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + beq _080CD204 + ldr r1, _080CD250 + ldr r0, [r1] + ldr r2, _080CD254 + adds r0, r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r1, _080CD258 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] +_080CD204: + cmp r4, #0 + beq _080CD260 + cmp r4, #0 + blt _080CD2D2 + cmp r4, #3 + bgt _080CD2D2 + ldr r5, _080CD250 + ldr r0, [r5] + ldr r2, _080CD25C + adds r0, r0, r2 + ldr r4, [r0] + ldrb r1, [r4, #5] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r3, #4 + orrs r0, r3 + strb r0, [r4, #5] + ldr r0, [r5] + ldr r4, _080CD258 + adds r0, r0, r4 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, [r0] + ldrb r0, [r1, #5] + ands r2, r0 + orrs r2, r3 + strb r2, [r1, #5] + b _080CD2D2 + .align 2, 0 +_080CD24C: .4byte gUnknown_2039A18 +_080CD250: .4byte gUnknown_20399A8 +_080CD254: .4byte 0x00000CD6 +_080CD258: .4byte 0x00000CB8 +_080CD25C: .4byte 0x00000CB4 +_080CD260: + ldr r3, _080CD294 + ldr r1, [r3] + ldr r2, _080CD298 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080CD2A4 + ldr r2, _080CD29C + adds r0, r1, r2 + ldr r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #5] + ldr r0, [r3] + ldr r1, _080CD2A0 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + b _080CD2D2 + .align 2, 0 +_080CD294: .4byte gUnknown_20399A8 +_080CD298: .4byte 0x000021FF +_080CD29C: .4byte 0x00000CB4 +_080CD2A0: .4byte 0x00000CB8 +_080CD2A4: + ldr r2, _080CD2D8 + adds r0, r1, r2 + ldr r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, _080CD2DC + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CD2D2 + ldr r0, _080CD2E0 + ldrb r0, [r0] + cmp r0, #0 + beq _080CD2D2 + movs r0, #2 + bl sub_080CB948 +_080CD2D2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CD2D8: .4byte 0x00000CB4 +_080CD2DC: .4byte gUnknown_2039A18 +_080CD2E0: .4byte gUnknown_2039A1A + thumb_func_end sub_080CD110 + + thumb_func_start sub_080CD2E4 +sub_080CD2E4: @ 0x080CD2E4 + push {r4, lr} + ldr r1, _080CD324 + ldr r4, _080CD328 + ldr r2, [r4] + ldr r3, _080CD32C + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _080CD330 + adds r3, #1 + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2, #1] + cmp r0, #3 + beq _080CD33C + ldr r1, _080CD334 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD354 + ldr r0, _080CD338 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD354 + subs r3, #0x21 + adds r0, r2, r3 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + b _080CD354 + .align 2, 0 +_080CD324: .4byte gUnknown_2039A18 +_080CD328: .4byte gUnknown_20399A8 +_080CD32C: .4byte 0x00000CD4 +_080CD330: .4byte gUnknown_2039A19 +_080CD334: .4byte 0x000021FF +_080CD338: .4byte gUnknown_2039A1A +_080CD33C: + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD354 + ldr r0, [r4] + ldr r1, _080CD370 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 +_080CD354: + bl sub_080CE3BC + ldr r0, _080CD374 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + beq _080CD38A + cmp r0, #1 + bgt _080CD378 + cmp r0, #0 + beq _080CD3AC + b _080CD406 + .align 2, 0 +_080CD370: .4byte 0x00000CB4 +_080CD374: .4byte gUnknown_2039A18 +_080CD378: + cmp r0, #2 + beq _080CD382 + cmp r0, #3 + bne _080CD406 + b _080CD39A +_080CD382: + movs r0, #1 + bl sub_080CCA24 + b _080CD406 +_080CD38A: + ldr r0, _080CD3A4 + ldr r0, [r0] + ldr r2, _080CD3A8 + adds r0, r0, r2 + ldr r0, [r0] + adds r0, #0x43 + movs r1, #0xd + strb r1, [r0] +_080CD39A: + movs r0, #1 + bl sub_080CB948 + b _080CD406 + .align 2, 0 +_080CD3A4: .4byte gUnknown_20399A8 +_080CD3A8: .4byte 0x00000CB8 +_080CD3AC: + ldr r4, _080CD40C + ldr r1, [r4] + ldr r3, _080CD410 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD406 + ldr r2, _080CD414 + adds r0, r1, r2 + ldr r3, [r0] + ldrb r1, [r3, #5] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3, #5] + ldr r0, [r4] + ldr r3, _080CD418 + adds r0, r0, r3 + ldr r1, [r0] + ldrb r0, [r1, #5] + ands r2, r0 + movs r0, #8 + orrs r2, r0 + strb r2, [r1, #5] + ldr r0, [r4] + adds r0, r0, r3 + ldr r0, [r0] + adds r0, #0x43 + movs r1, #0x15 + strb r1, [r0] + ldr r0, [r4] + adds r0, r0, r3 + ldr r1, [r0] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #2 + bl sub_080CB948 +_080CD406: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD40C: .4byte gUnknown_20399A8 +_080CD410: .4byte 0x000021FF +_080CD414: .4byte 0x00000CB4 +_080CD418: .4byte 0x00000CB8 + thumb_func_end sub_080CD2E4 + + thumb_func_start sub_080CD41C +sub_080CD41C: @ 0x080CD41C + push {lr} + ldr r0, _080CD42C + ldrb r0, [r0] + cmp r0, #0 + bne _080CD430 + movs r3, #0 + b _080CD43E + .align 2, 0 +_080CD42C: .4byte gUnknown_2039A1A +_080CD430: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #5 + bls _080CD43E + movs r3, #5 +_080CD43E: + ldr r0, _080CD468 + ldr r2, [r0] + ldr r1, _080CD46C + adds r0, r2, r1 + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CD45C + ldr r0, _080CD470 + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] +_080CD45C: + movs r0, #1 + adds r1, r3, #0 + bl sub_080CD110 + pop {r0} + bx r0 + .align 2, 0 +_080CD468: .4byte gUnknown_20399A8 +_080CD46C: .4byte 0x00000CB4 +_080CD470: .4byte 0x00000CD7 + thumb_func_end sub_080CD41C + + thumb_func_start sub_080CD474 +sub_080CD474: @ 0x080CD474 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_080CD110 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CD474 + + thumb_func_start sub_080CD488 +sub_080CD488: @ 0x080CD488 + ldr r1, _080CD490 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080CD490: .4byte gUnknown_2039A1E + thumb_func_end sub_080CD488 + + thumb_func_start sub_080CD494 +sub_080CD494: @ 0x080CD494 + ldr r0, _080CD4A0 + ldr r1, _080CD4A4 + ldrb r1, [r1] + strb r1, [r0] + bx lr + .align 2, 0 +_080CD4A0: .4byte gUnknown_2039A1E +_080CD4A4: .4byte gUnknown_2039A19 + thumb_func_end sub_080CD494 + + thumb_func_start sub_080CD4A8 +sub_080CD4A8: @ 0x080CD4A8 + ldr r0, _080CD4B0 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CD4B0: .4byte gUnknown_2039A1E + thumb_func_end sub_080CD4A8 + + thumb_func_start sub_080CD4B4 +sub_080CD4B4: @ 0x080CD4B4 + lsls r0, r0, #0x18 + ldr r1, _080CD4D4 + ldr r1, [r1] + ldr r2, _080CD4D8 + adds r3, r1, r2 + ldr r2, _080CD4DC + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r3] + movs r0, #0xd9 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080CD4D4: .4byte gUnknown_20399A8 +_080CD4D8: .4byte 0x00000D8C +_080CD4DC: .4byte gUnknown_8556494 + thumb_func_end sub_080CD4B4 + + thumb_func_start sub_080CD4E0 +sub_080CD4E0: @ 0x080CD4E0 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD500 + ldr r0, _080CD4F4 + ldr r1, [r0] + ldr r2, _080CD4F8 + adds r1, r1, r2 + ldr r2, _080CD4FC + b _080CD50A + .align 2, 0 +_080CD4F4: .4byte gUnknown_20399A8 +_080CD4F8: .4byte 0x00000D8C +_080CD4FC: .4byte sub_080CD730 +_080CD500: + ldr r0, _080CD51C + ldr r1, [r0] + ldr r2, _080CD520 + adds r1, r1, r2 + ldr r2, _080CD524 +_080CD50A: + str r2, [r1] + ldr r0, [r0] + movs r1, #0xd9 + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080CD51C: .4byte gUnknown_20399A8 +_080CD520: .4byte 0x00000D8C +_080CD524: .4byte sub_080CD740 + thumb_func_end sub_080CD4E0 + + thumb_func_start sub_080CD528 +sub_080CD528: @ 0x080CD528 + push {lr} + ldr r0, _080CD540 + ldr r0, [r0] + ldr r1, _080CD544 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_080CD528 + + thumb_func_start sub_080CD538 +sub_080CD538: @ 0x080CD538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080CD540: .4byte gUnknown_20399A8 +_080CD544: .4byte 0x00000D8C + thumb_func_end sub_080CD538 + + thumb_func_start sub_080CD548 +sub_080CD548: @ 0x080CD548 + push {r4, r5, lr} + ldr r4, _080CD564 + ldr r1, [r4] + movs r5, #0xd9 + lsls r5, r5, #4 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _080CD598 + cmp r0, #1 + bgt _080CD568 + cmp r0, #0 + beq _080CD572 + b _080CD5D0 + .align 2, 0 +_080CD564: .4byte gUnknown_20399A8 +_080CD568: + cmp r0, #2 + beq _080CD5BC + cmp r0, #3 + beq _080CD57A + b _080CD5D0 +_080CD572: + ldr r0, _080CD580 + ldrb r0, [r0] + cmp r0, #0 + beq _080CD584 +_080CD57A: + movs r0, #0 + b _080CD5D2 + .align 2, 0 +_080CD580: .4byte gUnknown_2039A1A +_080CD584: + ldr r2, _080CD594 + adds r0, r1, r2 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + b _080CD5C6 + .align 2, 0 +_080CD594: .4byte 0x00000CB4 +_080CD598: + bl sub_080CD750 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD5D0 + ldr r0, [r4] + ldr r1, _080CD5B8 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 + bl sub_080CD7B4 + b _080CD5C6 + .align 2, 0 +_080CD5B8: .4byte 0x00000CB4 +_080CD5BC: + bl sub_080CD784 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD5D0 +_080CD5C6: + ldr r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080CD5D0: + movs r0, #1 +_080CD5D2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080CD548 + + thumb_func_start sub_080CD5D8 +sub_080CD5D8: @ 0x080CD5D8 + push {r4, r5, lr} + ldr r4, _080CD5F4 + ldr r0, [r4] + movs r5, #0xd9 + lsls r5, r5, #4 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _080CD620 + cmp r0, #1 + bgt _080CD5F8 + cmp r0, #0 + beq _080CD5FE + b _080CD64C + .align 2, 0 +_080CD5F4: .4byte gUnknown_20399A8 +_080CD5F8: + cmp r0, #2 + beq _080CD648 + b _080CD64C +_080CD5FE: + bl sub_080CD750 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD64C + ldr r0, [r4] + ldr r1, _080CD61C + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + bl sub_080CD828 + b _080CD638 + .align 2, 0 +_080CD61C: .4byte 0x00000CB4 +_080CD620: + bl sub_080CD784 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD64C + ldr r0, [r4] + ldr r1, _080CD644 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 +_080CD638: + ldr r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080CD64C + .align 2, 0 +_080CD644: .4byte 0x00000CB4 +_080CD648: + movs r0, #0 + b _080CD64E +_080CD64C: + movs r0, #1 +_080CD64E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080CD5D8 + + thumb_func_start sub_080CD654 +sub_080CD654: @ 0x080CD654 + push {r4, r5, lr} + ldr r4, _080CD670 + ldr r1, [r4] + movs r5, #0xd9 + lsls r5, r5, #4 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _080CD6E4 + cmp r0, #1 + bgt _080CD674 + cmp r0, #0 + beq _080CD67A + b _080CD728 + .align 2, 0 +_080CD670: .4byte gUnknown_20399A8 +_080CD674: + cmp r0, #2 + beq _080CD724 + b _080CD728 +_080CD67A: + ldr r0, _080CD694 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080CD69C + cmp r0, #1 + bne _080CD724 + ldr r0, _080CD698 + adds r1, r1, r0 + movs r0, #0xe + b _080CD6A6 + .align 2, 0 +_080CD694: .4byte gUnknown_2039A18 +_080CD698: .4byte 0x00000D91 +_080CD69C: + bl sub_080D15AC + ldr r1, [r4] + ldr r2, _080CD6D4 + adds r1, r1, r2 +_080CD6A6: + strb r0, [r1] + ldr r4, _080CD6D8 + ldr r0, [r4] + ldr r1, _080CD6DC + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + ldr r0, [r4] + ldr r2, _080CD6D4 + adds r0, r0, r2 + ldrb r0, [r0] + ldr r1, _080CD6E0 + ldrb r1, [r1] + bl sub_080CB5D0 + ldr r1, [r4] + movs r0, #0xd9 + lsls r0, r0, #4 + adds r1, r1, r0 + b _080CD710 + .align 2, 0 +_080CD6D4: .4byte 0x00000D91 +_080CD6D8: .4byte gUnknown_20399A8 +_080CD6DC: .4byte 0x00000CB4 +_080CD6E0: .4byte gUnknown_2039A19 +_080CD6E4: + bl sub_080CB638 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CD728 + ldr r0, [r4] + ldr r1, _080CD718 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 + ldr r0, [r4] + ldr r2, _080CD71C + adds r0, r0, r2 + ldrb r0, [r0] + ldr r1, _080CD720 + ldrb r1, [r1] + bl sub_080CD98C + ldr r1, [r4] + adds r1, r1, r5 +_080CD710: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080CD728 + .align 2, 0 +_080CD718: .4byte 0x00000CB4 +_080CD71C: .4byte 0x00000D91 +_080CD720: .4byte gUnknown_2039A19 +_080CD724: + movs r0, #0 + b _080CD72A +_080CD728: + movs r0, #1 +_080CD72A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080CD654 + + thumb_func_start sub_080CD730 +sub_080CD730: @ 0x080CD730 + push {lr} + bl sub_080CD750 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CD730 + + thumb_func_start sub_080CD740 +sub_080CD740: @ 0x080CD740 + push {lr} + bl sub_080CD784 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CD740 + + thumb_func_start sub_080CD750 +sub_080CD750: @ 0x080CD750 + push {lr} + ldr r0, _080CD770 + ldr r0, [r0] + ldr r1, _080CD774 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0x26 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080CD768 + cmp r0, #8 + beq _080CD778 +_080CD768: + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _080CD77C + .align 2, 0 +_080CD770: .4byte gUnknown_20399A8 +_080CD774: .4byte 0x00000CB4 +_080CD778: + movs r0, #0 + b _080CD77E +_080CD77C: + movs r0, #1 +_080CD77E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CD750 + + thumb_func_start sub_080CD784 +sub_080CD784: @ 0x080CD784 + push {lr} + ldr r0, _080CD7A4 + ldr r0, [r0] + ldr r1, _080CD7A8 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0x26 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080CD7AC + ldrh r0, [r1, #0x26] + subs r0, #1 + strh r0, [r1, #0x26] + movs r0, #1 + b _080CD7AE + .align 2, 0 +_080CD7A4: .4byte gUnknown_20399A8 +_080CD7A8: .4byte 0x00000CB4 +_080CD7AC: + movs r0, #0 +_080CD7AE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CD784 + + thumb_func_start sub_080CD7B4 +sub_080CD7B4: @ 0x080CD7B4 + push {r4, lr} + ldr r0, _080CD7DC + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080CD7E4 + cmp r0, #1 + bne _080CD810 + ldr r4, _080CD7E0 + ldrb r1, [r4] + movs r0, #0xe + bl sub_080CD894 + ldrb r1, [r4] + movs r0, #0 + bl sub_080CB488 + b _080CD80A + .align 2, 0 +_080CD7DC: .4byte gUnknown_2039A18 +_080CD7E0: .4byte gUnknown_2039A19 +_080CD7E4: + ldr r0, _080CD818 + ldr r0, [r0] + ldr r1, _080CD81C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080CD80A + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080CD820 + ldrb r1, [r4] + bl sub_080CD894 + ldrb r1, [r4] + movs r0, #1 + bl sub_080CB488 +_080CD80A: + ldr r1, _080CD824 + movs r0, #1 + strb r0, [r1] +_080CD810: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CD818: .4byte gUnknown_20399A8 +_080CD81C: .4byte 0x000021FF +_080CD820: .4byte gUnknown_2039A19 +_080CD824: .4byte gUnknown_2039A1A + thumb_func_end sub_080CD7B4 + + thumb_func_start sub_080CD828 +sub_080CD828: @ 0x080CD828 + push {r4, r5, lr} + ldr r0, _080CD850 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080CD858 + cmp r0, #1 + bne _080CD87A + ldr r4, _080CD854 + ldrb r1, [r4] + movs r0, #0xe + bl sub_080CD908 + ldrb r1, [r4] + movs r0, #0xe + bl sub_080CB520 + b _080CD874 + .align 2, 0 +_080CD850: .4byte gUnknown_2039A18 +_080CD854: .4byte gUnknown_2039A19 +_080CD858: + bl sub_080D15AC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080CD880 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080CD908 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080CB520 +_080CD874: + ldr r1, _080CD884 + movs r0, #0 + strb r0, [r1] +_080CD87A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CD880: .4byte gUnknown_2039A19 +_080CD884: .4byte gUnknown_2039A1A + thumb_func_end sub_080CD828 + + thumb_func_start sub_080CD888 +sub_080CD888: @ 0x080CD888 + push {lr} + bl sub_080CE3BC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CD888 + + thumb_func_start sub_080CD894 +sub_080CD894: @ 0x080CD894 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r4, #0xe + bne _080CD8D0 + ldr r0, _080CD8C0 + ldr r0, [r0] + ldr r1, _080CD8C4 + adds r0, r0, r1 + ldr r3, _080CD8C8 + ldr r1, _080CD8CC + movs r2, #0 + ldrsb r2, [r1, r2] + movs r1, #0x64 + muls r1, r2, r1 + adds r1, r1, r3 + movs r2, #0x64 + bl memcpy + b _080CD8E0 + .align 2, 0 +_080CD8C0: .4byte gUnknown_20399A8 +_080CD8C4: .4byte 0x000020A4 +_080CD8C8: .4byte gUnknown_2024190 +_080CD8CC: .4byte gUnknown_2039A19 +_080CD8D0: + ldr r0, _080CD8F8 + ldr r2, [r0] + ldr r0, _080CD8FC + adds r2, r2, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080D18F4 +_080CD8E0: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080CD964 + ldr r0, _080CD900 + strb r4, [r0] + ldr r0, _080CD904 + strb r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CD8F8: .4byte gUnknown_20399A8 +_080CD8FC: .4byte 0x000020A4 +_080CD900: .4byte gUnknown_2039A1B +_080CD904: .4byte gUnknown_2039A1C + thumb_func_end sub_080CD894 + + thumb_func_start sub_080CD908 +sub_080CD908: @ 0x080CD908 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + cmp r6, #0xe + bne _080CD93C + ldr r1, _080CD930 + movs r0, #0x64 + muls r0, r7, r0 + adds r0, r0, r1 + ldr r1, _080CD934 + ldr r1, [r1] + ldr r2, _080CD938 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + b _080CD954 + .align 2, 0 +_080CD930: .4byte gUnknown_2024190 +_080CD934: .4byte gUnknown_20399A8 +_080CD938: .4byte 0x000020A4 +_080CD93C: + ldr r5, _080CD95C + ldr r0, [r5] + ldr r4, _080CD960 + adds r0, r0, r4 + bl sub_0806E3BC + ldr r2, [r5] + adds r2, r2, r4 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080D17B8 +_080CD954: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CD95C: .4byte gUnknown_20399A8 +_080CD960: .4byte 0x000020A4 + thumb_func_end sub_080CD908 + + thumb_func_start sub_080CD964 +sub_080CD964: @ 0x080CD964 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r0, #0xe + bne _080CD984 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080CD980 + adds r0, r0, r1 + bl sub_08067670 + b _080CD988 + .align 2, 0 +_080CD980: .4byte gUnknown_2024190 +_080CD984: + bl sub_080D18B8 +_080CD988: + pop {r0} + bx r0 + thumb_func_end sub_080CD964 + + thumb_func_start sub_080CD98C +sub_080CD98C: @ 0x080CD98C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + cmp r6, #0xe + bne _080CD9C0 + ldr r0, _080CD9B4 + ldr r0, [r0] + ldr r1, _080CD9B8 + adds r0, r0, r1 + ldr r2, _080CD9BC + movs r1, #0x64 + muls r1, r7, r1 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + b _080CD9D0 + .align 2, 0 +_080CD9B4: .4byte gUnknown_20399A8 +_080CD9B8: .4byte 0x00002108 +_080CD9BC: .4byte gUnknown_2024190 +_080CD9C0: + ldr r0, _080CDA04 + ldr r2, [r0] + ldr r0, _080CDA08 + adds r2, r2, r0 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080D18F4 +_080CD9D0: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080CD908 + ldr r5, _080CDA04 + ldr r1, [r5] + ldr r4, _080CDA0C + adds r0, r1, r4 + ldr r2, _080CDA08 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0 + bl sub_080CE47C + ldr r0, _080CDA10 + strb r6, [r0] + ldr r0, _080CDA14 + strb r7, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CDA04: .4byte gUnknown_20399A8 +_080CDA08: .4byte 0x00002108 +_080CDA0C: .4byte 0x000020A4 +_080CDA10: .4byte gUnknown_2039A1B +_080CDA14: .4byte gUnknown_2039A1C + thumb_func_end sub_080CD98C + + thumb_func_start sub_080CDA18 +sub_080CDA18: @ 0x080CDA18 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_080C6860 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080CDA36 + movs r0, #0 + b _080CDA96 +_080CDA36: + ldr r5, _080CDA54 + ldrb r0, [r5] + cmp r0, #0 + beq _080CDA58 + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + adds r0, r6, #0 + bl sub_080CD908 + bl sub_080CB338 + movs r0, #0 + strb r0, [r5] + b _080CDA72 + .align 2, 0 +_080CDA54: .4byte gUnknown_2039A1A +_080CDA58: + ldr r5, _080CDA9C + ldrb r1, [r5] + movs r0, #0xe + bl sub_080CD894 + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + adds r0, r6, #0 + bl sub_080CD908 + ldrb r0, [r5] + bl sub_080CB3DC +_080CDA72: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bne _080CDA84 + lsrs r0, r4, #0x18 + bl sub_080CA9B4 +_080CDA84: + ldr r0, _080CDAA0 + ldr r0, [r0] + ldr r1, _080CDAA4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + movs r0, #1 +_080CDA96: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080CDA9C: .4byte gUnknown_2039A19 +_080CDAA0: .4byte gUnknown_20399A8 +_080CDAA4: .4byte 0x00000CB4 + thumb_func_end sub_080CDA18 + + thumb_func_start sub_080CDAA8 +sub_080CDAA8: @ 0x080CDAA8 + push {lr} + ldr r0, _080CDAC4 + ldr r0, [r0] + ldr r1, _080CDAC8 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + bl sub_080CE3BC + pop {r0} + bx r0 + .align 2, 0 +_080CDAC4: .4byte gUnknown_20399A8 +_080CDAC8: .4byte 0x00000CB4 + thumb_func_end sub_080CDAA8 + + thumb_func_start sub_080CDACC +sub_080CDACC: @ 0x080CDACC + push {lr} + ldr r0, _080CDADC + ldrb r0, [r0] + cmp r0, #0 + beq _080CDAE0 + movs r2, #2 + b _080CDAF0 + .align 2, 0 +_080CDADC: .4byte gUnknown_2039A1A +_080CDAE0: + ldr r0, _080CDB10 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r2, #1 + eors r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r2, r0, #0x1f +_080CDAF0: + ldr r0, _080CDB14 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_080CB788 + ldr r0, _080CDB18 + ldr r1, [r0] + ldr r2, _080CDB1C + adds r0, r1, r2 + ldr r2, _080CDB20 + adds r1, r1, r2 + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_080CDB10: .4byte gUnknown_2039A18 +_080CDB14: .4byte gUnknown_2039A19 +_080CDB18: .4byte gUnknown_20399A8 +_080CDB1C: .4byte 0x000021E0 +_080CDB20: .4byte 0x00000CEE + thumb_func_end sub_080CDACC + + thumb_func_start sub_080CDB24 +sub_080CDB24: @ 0x080CDB24 + push {lr} + bl sub_080CB84C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CDB34 + movs r0, #1 + b _080CDB46 +_080CDB34: + ldr r0, _080CDB4C + ldr r0, [r0] + ldr r1, _080CDB50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + movs r0, #0 +_080CDB46: + pop {r1} + bx r1 + .align 2, 0 +_080CDB4C: .4byte gUnknown_20399A8 +_080CDB50: .4byte 0x00000CB4 + thumb_func_end sub_080CDB24 + + thumb_func_start sub_080CDB54 +sub_080CDB54: @ 0x080CDB54 + push {lr} + bl sub_080CB894 + ldr r1, _080CDB68 + ldrb r0, [r1] + cmp r0, #0 + beq _080CDB6C + movs r0, #0 + strb r0, [r1] + b _080CDB92 + .align 2, 0 +_080CDB68: .4byte gUnknown_2039A1A +_080CDB6C: + ldr r0, _080CDB7C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CDB80 + movs r2, #0xe + b _080CDB88 + .align 2, 0 +_080CDB7C: .4byte gUnknown_2039A18 +_080CDB80: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080CDB88: + ldr r0, _080CDB9C + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_080CD964 +_080CDB92: + bl sub_080CE3BC + pop {r0} + bx r0 + .align 2, 0 +_080CDB9C: .4byte gUnknown_2039A19 + thumb_func_end sub_080CDB54 + + thumb_func_start sub_080CDBA0 +sub_080CDBA0: @ 0x080CDBA0 + push {lr} + ldr r0, _080CDBC0 + ldrb r0, [r0] + cmp r0, #0 + beq _080CDBBA + ldr r0, _080CDBC4 + ldr r0, [r0] + ldr r1, _080CDBC8 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 +_080CDBBA: + pop {r0} + bx r0 + .align 2, 0 +_080CDBC0: .4byte gUnknown_2039A1A +_080CDBC4: .4byte gUnknown_20399A8 +_080CDBC8: .4byte 0x00000CB4 + thumb_func_end sub_080CDBA0 + + thumb_func_start sub_080CDBCC +sub_080CDBCC: @ 0x080CDBCC + push {r4, r5, lr} + adds r3, r0, #0 + movs r5, #0 + ldr r4, _080CDC10 +_080CDBD4: + movs r1, #0 + ldrsb r1, [r4, r1] + cmp r1, #0x22 + beq _080CDBF4 + ldr r0, _080CDC14 + ldr r2, [r0] + movs r0, #4 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080CDBFA + movs r1, #1 + ldrsb r1, [r4, r1] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _080CDBFA +_080CDBF4: + ldrh r0, [r4, #2] + strh r0, [r3] + adds r3, #2 +_080CDBFA: + adds r4, #4 + adds r5, #1 + cmp r5, #5 + bls _080CDBD4 + ldr r1, _080CDC18 + adds r0, r1, #0 + strh r0, [r3] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CDC10: .4byte gUnknown_85564A0 +_080CDC14: .4byte gUnknown_3005AEC +_080CDC18: .4byte 0x00000163 + thumb_func_end sub_080CDBCC + + thumb_func_start sub_080CDC1C +sub_080CDC1C: @ 0x080CDC1C + push {r4, r5, lr} + bl sub_080CDD98 + adds r3, r0, #0 + cmp r3, #0 + bne _080CDC4C + ldr r2, _080CDC40 + ldr r0, [r2] + ldr r1, _080CDC44 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _080CDC48 + adds r0, r0, r2 + strb r3, [r0] + b _080CDD80 + .align 2, 0 +_080CDC40: .4byte gUnknown_20399A8 +_080CDC44: .4byte 0x0000216D +_080CDC48: .4byte 0x0000216C +_080CDC4C: + ldr r0, _080CDC7C + ldrb r0, [r0] + cmp r0, #0 + beq _080CDC94 + ldr r4, _080CDC80 + ldr r1, [r4] + ldr r3, _080CDC84 + adds r0, r1, r3 + ldr r2, _080CDC88 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + ldr r0, [r4] + ldr r3, _080CDC8C + adds r0, r0, r3 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080CDC90 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + b _080CDD10 + .align 2, 0 +_080CDC7C: .4byte gUnknown_2039A1A +_080CDC80: .4byte gUnknown_20399A8 +_080CDC84: .4byte 0x00002108 +_080CDC88: .4byte 0x000020A4 +_080CDC8C: .4byte 0x00002170 +_080CDC90: .4byte 0x00002171 +_080CDC94: + ldr r0, _080CDCC8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CDCE0 + ldr r4, _080CDCCC + ldr r0, [r4] + ldr r2, _080CDCD0 + adds r0, r0, r2 + ldr r3, _080CDCD4 + ldr r1, _080CDCD8 + movs r2, #0 + ldrsb r2, [r1, r2] + movs r1, #0x64 + muls r1, r2, r1 + adds r1, r1, r3 + movs r2, #0x64 + bl memcpy + ldr r0, [r4] + ldr r3, _080CDCDC + adds r0, r0, r3 + movs r1, #0xe + strb r1, [r0] + b _080CDD04 + .align 2, 0 +_080CDCC8: .4byte gUnknown_2039A18 +_080CDCCC: .4byte gUnknown_20399A8 +_080CDCD0: .4byte 0x00002108 +_080CDCD4: .4byte gUnknown_2024190 +_080CDCD8: .4byte gUnknown_2039A19 +_080CDCDC: .4byte 0x00002170 +_080CDCE0: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080CDD44 + ldrb r1, [r1] + ldr r4, _080CDD48 + ldr r2, [r4] + ldr r3, _080CDD4C + adds r2, r2, r3 + bl sub_080D18F4 + bl sub_080D15AC + ldr r1, [r4] + ldr r2, _080CDD50 + adds r1, r1, r2 + strb r0, [r1] +_080CDD04: + ldr r0, _080CDD48 + ldr r0, [r0] + ldr r1, _080CDD44 + ldrb r1, [r1] + ldr r3, _080CDD54 + adds r0, r0, r3 +_080CDD10: + strb r1, [r0] + ldr r5, _080CDD48 + ldr r0, [r5] + ldr r4, _080CDD58 + adds r0, r0, r4 + bl sub_080CDBCC + ldr r2, [r5] + ldr r1, _080CDD4C + adds r0, r2, r1 + adds r2, r2, r4 + movs r1, #0x51 + bl sub_0806A058 + ldr r2, [r5] + ldr r3, _080CDD5C + adds r1, r2, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080CDD64 + ldr r0, _080CDD60 + adds r1, r2, r0 + movs r0, #0 + strb r0, [r1] + b _080CDD74 + .align 2, 0 +_080CDD44: .4byte gUnknown_2039A19 +_080CDD48: .4byte gUnknown_20399A8 +_080CDD4C: .4byte 0x00002108 +_080CDD50: .4byte 0x00002170 +_080CDD54: .4byte 0x00002171 +_080CDD58: .4byte 0x00002176 +_080CDD5C: .4byte 0x00002174 +_080CDD60: .4byte 0x0000216D +_080CDD64: + ldr r1, _080CDD88 + adds r0, r2, r1 + movs r1, #1 + strb r1, [r0] + ldr r0, [r5] + ldr r2, _080CDD8C + adds r0, r0, r2 + strb r1, [r0] +_080CDD74: + ldr r0, _080CDD90 + ldr r0, [r0] + ldr r3, _080CDD94 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0] +_080CDD80: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CDD88: .4byte 0x0000216D +_080CDD8C: .4byte 0x0000216C +_080CDD90: .4byte gUnknown_20399A8 +_080CDD94: .4byte 0x00002172 + thumb_func_end sub_080CDC1C + + thumb_func_start sub_080CDD98 +sub_080CDD98: @ 0x080CDD98 + push {r4, r5, r6, lr} + ldr r0, _080CDDC8 + ldrb r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r5, r0, #0x1f + movs r4, #0 +_080CDDA6: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _080CDDCC + adds r0, r0, r1 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _080CDDBA + adds r5, #1 +_080CDDBA: + adds r4, #1 + cmp r4, #5 + ble _080CDDA6 + cmp r5, #2 + ble _080CDDD0 +_080CDDC4: + movs r0, #1 + b _080CDDF4 + .align 2, 0 +_080CDDC8: .4byte gUnknown_2039A1A +_080CDDCC: .4byte gUnknown_2024190 +_080CDDD0: + movs r6, #0 +_080CDDD2: + movs r4, #0 +_080CDDD4: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080D1B10 + cmp r0, #0 + beq _080CDDE6 + adds r5, #1 + cmp r5, #2 + bgt _080CDDC4 +_080CDDE6: + adds r4, #1 + cmp r4, #0x1d + ble _080CDDD4 + adds r6, #1 + cmp r6, #0xd + ble _080CDDD2 + movs r0, #0 +_080CDDF4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CDD98 + + thumb_func_start sub_080CDDFC +sub_080CDDFC: @ 0x080CDDFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080CDE20 + ldr r2, [r0] + ldr r3, _080CDE24 + adds r1, r2, r3 + ldrb r1, [r1] + adds r5, r0, #0 + cmp r1, #0 + beq _080CDE2C + ldr r1, _080CDE28 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _080CDFB2 + .align 2, 0 +_080CDE20: .4byte gUnknown_20399A8 +_080CDE24: .4byte 0x0000216D +_080CDE28: .4byte 0x0000216C +_080CDE2C: + ldr r3, _080CDE3C + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080CDE40 + cmp r0, #1 + beq _080CDF0C + b _080CDFAE + .align 2, 0 +_080CDE3C: .4byte 0x00002172 +_080CDE40: + movs r6, #0 +_080CDE42: + ldr r2, [r5] + ldr r1, _080CDEAC + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xe + bne _080CDE60 + ldr r3, _080CDEB0 + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r6 + beq _080CDE82 +_080CDE60: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _080CDEB4 + adds r0, r0, r1 + ldr r1, _080CDEB8 + adds r2, r2, r1 + movs r1, #0x51 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r1, [r5] + ldr r2, _080CDEBC + adds r1, r1, r2 + ldrh r0, [r1] + bics r0, r4 + strh r0, [r1] +_080CDE82: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _080CDE42 + ldr r2, _080CDEC0 + ldr r1, [r2] + ldr r3, _080CDEBC + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, #0 + bne _080CDEC8 + subs r3, #7 + adds r0, r1, r3 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _080CDEC4 + adds r0, r0, r2 + strb r1, [r0] + b _080CDFAE + .align 2, 0 +_080CDEAC: .4byte 0x00002170 +_080CDEB0: .4byte 0x00002171 +_080CDEB4: .4byte gUnknown_2024190 +_080CDEB8: .4byte 0x00002176 +_080CDEBC: .4byte 0x00002174 +_080CDEC0: .4byte gUnknown_20399A8 +_080CDEC4: .4byte 0x0000216C +_080CDEC8: + ldr r3, _080CDEE8 + adds r0, r1, r3 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + adds r3, #1 + adds r0, r0, r3 + strb r1, [r0] + ldr r1, [r2] + ldr r0, _080CDEEC + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080CDFAE + .align 2, 0 +_080CDEE8: .4byte 0x0000216E +_080CDEEC: .4byte 0x00002172 +_080CDEF0: + ldr r1, _080CDF04 + adds r0, r5, r1 + movs r1, #1 + strb r1, [r0] + mov r2, r8 + ldr r0, [r2] + ldr r3, _080CDF08 + adds r0, r0, r3 + strb r1, [r0] + b _080CDFAE + .align 2, 0 +_080CDF04: .4byte 0x0000216D +_080CDF08: .4byte 0x0000216C +_080CDF0C: + movs r6, #0 + mov r8, r5 + ldr r7, _080CDFBC +_080CDF12: + mov r0, r8 + ldr r3, [r0] + ldr r1, _080CDFC0 + adds r0, r3, r1 + ldrb r0, [r0] + ldr r2, _080CDFC4 + adds r1, r3, r2 + ldrb r1, [r1] + adds r2, #7 + adds r3, r3, r2 + movs r2, #0x51 + bl sub_080D1770 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080CDF5C + ldr r5, [r5] + ldr r3, _080CDFC8 + adds r0, r5, r3 + ldrh r2, [r0] + ldr r1, _080CDFC0 + adds r0, r5, r1 + ldrh r3, [r0] + adds r1, r7, #0 + ands r1, r2 + adds r0, r7, #0 + ands r0, r3 + cmp r1, r0 + beq _080CDF5C + ldr r2, _080CDFCC + adds r1, r5, r2 + ldrh r0, [r1] + bics r0, r4 + strh r0, [r1] + cmp r0, #0 + beq _080CDEF0 +_080CDF5C: + ldr r2, _080CDFD0 + ldr r1, [r2] + ldr r3, _080CDFC4 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + movs r3, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r5, r2, #0 + cmp r0, #0x1d + ble _080CDFA4 + ldr r0, [r2] + ldr r1, _080CDFC4 + adds r0, r0, r1 + strb r3, [r0] + ldr r1, [r2] + ldr r0, _080CDFC0 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xd + ble _080CDFA4 + ldr r0, [r2] + ldr r1, _080CDFD4 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _080CDFD8 + adds r0, r0, r2 + strb r3, [r0] +_080CDFA4: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x1d + bls _080CDF12 +_080CDFAE: + movs r0, #1 + rsbs r0, r0, #0 +_080CDFB2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080CDFBC: .4byte 0x0000FFFF +_080CDFC0: .4byte 0x0000216E +_080CDFC4: .4byte 0x0000216F +_080CDFC8: .4byte 0x00002170 +_080CDFCC: .4byte 0x00002174 +_080CDFD0: .4byte gUnknown_20399A8 +_080CDFD4: .4byte 0x0000216D +_080CDFD8: .4byte 0x0000216C + thumb_func_end sub_080CDDFC + + thumb_func_start sub_080CDFDC +sub_080CDFDC: @ 0x080CDFDC + push {lr} + ldr r0, _080CDFFC + ldrb r0, [r0] + cmp r0, #0 + beq _080CDFF6 + ldr r0, _080CE000 + ldr r1, _080CE004 + ldr r1, [r1] + ldr r2, _080CE008 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy +_080CDFF6: + pop {r0} + bx r0 + .align 2, 0 +_080CDFFC: .4byte gUnknown_2039A1A +_080CE000: .4byte gUnknown_20399B4 +_080CE004: .4byte gUnknown_20399A8 +_080CE008: .4byte 0x000020A4 + thumb_func_end sub_080CDFDC + + thumb_func_start sub_080CE00C +sub_080CE00C: @ 0x080CE00C + push {lr} + ldr r0, _080CE030 + ldrb r0, [r0] + cmp r0, #0 + beq _080CE054 + ldr r0, _080CE034 + ldrb r0, [r0] + cmp r0, #0xe + bne _080CE044 + ldr r0, _080CE038 + ldr r0, [r0] + ldr r1, _080CE03C + adds r0, r0, r1 + ldr r1, _080CE040 + movs r2, #0x64 + bl memcpy + b _080CE054 + .align 2, 0 +_080CE030: .4byte gUnknown_2039A1A +_080CE034: .4byte gUnknown_2039A1B +_080CE038: .4byte gUnknown_20399A8 +_080CE03C: .4byte 0x000020A4 +_080CE040: .4byte gUnknown_20399B4 +_080CE044: + ldr r0, _080CE058 + ldr r0, [r0] + ldr r1, _080CE05C + adds r0, r0, r1 + ldr r1, _080CE060 + movs r2, #0x50 + bl memcpy +_080CE054: + pop {r0} + bx r0 + .align 2, 0 +_080CE058: .4byte gUnknown_20399A8 +_080CE05C: .4byte 0x000020A4 +_080CE060: .4byte gUnknown_20399B4 + thumb_func_end sub_080CE00C + + thumb_func_start sub_080CE064 +sub_080CE064: @ 0x080CE064 + push {r4, r5, lr} + ldr r0, _080CE098 + ldrb r5, [r0] + cmp r5, #0 + beq _080CE0B4 + bl sub_080CDFDC + ldr r3, _080CE09C + ldr r1, [r3] + ldr r0, _080CE0A0 + adds r2, r1, r0 + ldr r0, _080CE0A4 + str r0, [r2] + ldr r2, _080CE0A8 + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1] + ldr r0, [r3] + ldr r4, _080CE0AC + adds r0, r0, r4 + strb r2, [r0] + ldr r0, [r3] + ldr r1, _080CE0B0 + adds r0, r0, r1 + strb r2, [r0] + b _080CE146 + .align 2, 0 +_080CE098: .4byte gUnknown_2039A1A +_080CE09C: .4byte gUnknown_20399A8 +_080CE0A0: .4byte 0x0000218C +_080CE0A4: .4byte gUnknown_20399B4 +_080CE0A8: .4byte 0x00002187 +_080CE0AC: .4byte 0x00002186 +_080CE0B0: .4byte 0x00002188 +_080CE0B4: + ldr r0, _080CE0F0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CE110 + ldr r4, _080CE0F4 + ldr r1, [r4] + ldr r0, _080CE0F8 + adds r2, r1, r0 + ldr r0, _080CE0FC + str r0, [r2] + ldr r0, _080CE100 + ldrb r0, [r0] + ldr r2, _080CE104 + adds r1, r1, r2 + strb r0, [r1] + bl sub_080C6950 + ldr r1, [r4] + subs r0, #1 + ldr r2, _080CE108 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r4] + ldr r4, _080CE10C + adds r0, r0, r4 + strb r5, [r0] + b _080CE146 + .align 2, 0 +_080CE0F0: .4byte gUnknown_2039A18 +_080CE0F4: .4byte gUnknown_20399A8 +_080CE0F8: .4byte 0x0000218C +_080CE0FC: .4byte gUnknown_2024190 +_080CE100: .4byte gUnknown_2039A19 +_080CE104: .4byte 0x00002187 +_080CE108: .4byte 0x00002186 +_080CE10C: .4byte 0x00002188 +_080CE110: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080D1934 + ldr r3, _080CE14C + ldr r2, [r3] + ldr r4, _080CE150 + adds r1, r2, r4 + str r0, [r1] + ldr r0, _080CE154 + ldrb r0, [r0] + ldr r1, _080CE158 + adds r2, r2, r1 + strb r0, [r2] + ldr r0, [r3] + ldr r2, _080CE15C + adds r0, r0, r2 + movs r1, #0x1d + strb r1, [r0] + ldr r0, [r3] + subs r4, #4 + adds r0, r0, r4 + movs r1, #2 + strb r1, [r0] +_080CE146: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CE14C: .4byte gUnknown_20399A8 +_080CE150: .4byte 0x0000218C +_080CE154: .4byte gUnknown_2039A19 +_080CE158: .4byte 0x00002187 +_080CE15C: .4byte 0x00002186 + thumb_func_end sub_080CE064 + + thumb_func_start sub_080CE160 +sub_080CE160: @ 0x080CE160 + push {lr} + ldr r0, _080CE170 + ldrb r0, [r0] + cmp r0, #0 + beq _080CE174 + bl sub_080CE00C + b _080CE17C + .align 2, 0 +_080CE170: .4byte gUnknown_2039A1A +_080CE174: + ldr r0, _080CE180 + ldr r1, _080CE184 + ldrb r1, [r1] + strb r1, [r0] +_080CE17C: + pop {r0} + bx r0 + .align 2, 0 +_080CE180: .4byte gUnknown_2039A19 +_080CE184: .4byte gUnknown_203CBEC + thumb_func_end sub_080CE160 + + thumb_func_start sub_080CE188 +sub_080CE188: @ 0x080CE188 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r7, _080CE1D4 + movs r6, #0 + movs r5, #0 + movs r0, #0x64 + mov sb, r0 + ldr r1, _080CE1D8 + mov r8, r1 + subs r0, #0x65 + mov sl, r0 +_080CE1A4: + mov r0, sb + muls r0, r6, r0 + mov r1, r8 + adds r4, r0, r1 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080CE1DC + cmp r6, r5 + beq _080CE1CC + mov r0, sb + muls r0, r5, r0 + add r0, r8 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy +_080CE1CC: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _080CE1E6 + .align 2, 0 +_080CE1D4: .4byte 0x0000FFFF +_080CE1D8: .4byte gUnknown_2024190 +_080CE1DC: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r0, sl + bne _080CE1E6 + adds r7, r6, #0 +_080CE1E6: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _080CE1A4 + lsls r7, r7, #0x10 + cmp r5, #5 + bhi _080CE20E + movs r6, #0x64 + ldr r4, _080CE220 +_080CE1FA: + adds r0, r5, #0 + muls r0, r6, r0 + adds r0, r0, r4 + bl sub_08067670 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _080CE1FA +_080CE20E: + asrs r0, r7, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080CE220: .4byte gUnknown_2024190 + thumb_func_end sub_080CE188 + + thumb_func_start sub_080CE224 +sub_080CE224: @ 0x080CE224 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + ldr r2, _080CE254 + ldr r1, [r2] + ldr r3, _080CE258 + adds r1, r1, r3 + strb r0, [r1] + ldr r0, _080CE25C + ldrb r0, [r0] + cmp r0, #0 + beq _080CE264 + ldr r0, [r2] + ldr r1, _080CE260 + adds r0, r0, r1 + movs r1, #8 + mov r2, sp + bl sub_0806A774 + b _080CE298 + .align 2, 0 +_080CE254: .4byte gUnknown_20399A8 +_080CE258: .4byte 0x00000CEB +_080CE25C: .4byte gUnknown_2039A1A +_080CE260: .4byte 0x000020A4 +_080CE264: + ldr r4, _080CE2A0 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #1 + bne _080CE284 + ldr r0, _080CE2A4 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080CE2A8 + adds r0, r0, r1 + movs r1, #8 + mov r2, sp + bl sub_0806A774 +_080CE284: + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _080CE298 + ldr r0, _080CE2A4 + ldrb r0, [r0] + movs r1, #8 + mov r2, sp + bl sub_080D1678 +_080CE298: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CE2A0: .4byte gUnknown_2039A18 +_080CE2A4: .4byte gUnknown_2039A19 +_080CE2A8: .4byte gUnknown_2024190 + thumb_func_end sub_080CE224 + + thumb_func_start sub_080CE2AC +sub_080CE2AC: @ 0x080CE2AC + push {lr} + ldr r0, _080CE2D4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CE2E0 + ldr r0, _080CE2D8 + ldrb r0, [r0] + cmp r0, #0 + bne _080CE2E0 + ldr r0, _080CE2DC + ldrb r0, [r0] + bl sub_080C68DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CE2E0 + movs r0, #1 + b _080CE2E2 + .align 2, 0 +_080CE2D4: .4byte gUnknown_2039A18 +_080CE2D8: .4byte gUnknown_2039A1A +_080CE2DC: .4byte gUnknown_2039A19 +_080CE2E0: + movs r0, #0 +_080CE2E2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CE2AC + + thumb_func_start sub_080CE2E8 +sub_080CE2E8: @ 0x080CE2E8 + push {lr} + ldr r0, _080CE32C + ldrb r0, [r0] + cmp r0, #0 + beq _080CE344 + ldr r0, _080CE330 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CE328 + ldr r0, _080CE334 + ldrb r0, [r0] + bl sub_080C68DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CE328 + ldr r0, _080CE338 + ldr r1, [r0] + ldr r2, _080CE33C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080CE344 + ldr r2, _080CE340 + adds r0, r1, r2 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080CE344 +_080CE328: + movs r0, #1 + b _080CE346 + .align 2, 0 +_080CE32C: .4byte gUnknown_2039A1A +_080CE330: .4byte gUnknown_2039A18 +_080CE334: .4byte gUnknown_2039A19 +_080CE338: .4byte gUnknown_20399A8 +_080CE33C: .4byte 0x00000CED +_080CE340: .4byte 0x000020A4 +_080CE344: + movs r0, #0 +_080CE346: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CE2E8 + + thumb_func_start sub_080CE34C +sub_080CE34C: @ 0x080CE34C + ldr r0, _080CE354 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CE354: .4byte gUnknown_2039A1A + thumb_func_end sub_080CE34C + + thumb_func_start sub_080CE358 +sub_080CE358: @ 0x080CE358 + push {lr} + movs r1, #0 + ldr r0, _080CE370 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + bne _080CE36A + movs r1, #1 +_080CE36A: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_080CE370: .4byte gUnknown_2039A18 + thumb_func_end sub_080CE358 + + thumb_func_start sub_080CE374 +sub_080CE374: @ 0x080CE374 + push {lr} + movs r1, #0 + ldr r0, _080CE398 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + bne _080CE392 + ldr r0, _080CE39C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CE392 + movs r1, #1 +_080CE392: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_080CE398: .4byte gUnknown_2039A18 +_080CE39C: .4byte gUnknown_2039A19 + thumb_func_end sub_080CE374 + + thumb_func_start sub_080CE3A0 +sub_080CE3A0: @ 0x080CE3A0 + push {lr} + movs r1, #0 + ldr r0, _080CE3B8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CE3B2 + movs r1, #1 +_080CE3B2: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_080CE3B8: .4byte gUnknown_2039A18 + thumb_func_end sub_080CE3A0 + + thumb_func_start sub_080CE3BC +sub_080CE3BC: @ 0x080CE3BC + push {r4, lr} + ldr r0, _080CE3F0 + ldr r1, [r0] + movs r2, #0 + ldr r3, _080CE3F4 + ldrb r0, [r3] + cmp r0, #0 + bne _080CE3CE + movs r2, #1 +_080CE3CE: + ldr r4, _080CE3F8 + adds r0, r1, r4 + strb r2, [r0] + ldrb r0, [r3] + cmp r0, #0 + bne _080CE44C + ldr r0, _080CE3FC + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + beq _080CE406 + cmp r0, #1 + bgt _080CE400 + cmp r0, #0 + beq _080CE436 + b _080CE44C + .align 2, 0 +_080CE3F0: .4byte gUnknown_20399A8 +_080CE3F4: .4byte gUnknown_2039A1A +_080CE3F8: .4byte 0x00000CEA +_080CE3FC: .4byte gUnknown_2039A18 +_080CE400: + cmp r0, #3 + bgt _080CE44C + b _080CE42C +_080CE406: + ldr r1, _080CE424 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _080CE42C + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080CE428 + adds r0, r0, r1 + movs r1, #0 + bl sub_080CE47C + b _080CE44C + .align 2, 0 +_080CE424: .4byte gUnknown_2039A19 +_080CE428: .4byte gUnknown_2024190 +_080CE42C: + movs r0, #0 + movs r1, #2 + bl sub_080CE47C + b _080CE44C +_080CE436: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080CE454 + ldrb r1, [r1] + bl sub_080D1934 + movs r1, #1 + bl sub_080CE47C +_080CE44C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080CE454: .4byte gUnknown_2039A19 + thumb_func_end sub_080CE3BC + + thumb_func_start sub_080CE458 +sub_080CE458: @ 0x080CE458 + push {lr} + ldr r0, _080CE46C + ldrb r0, [r0] + cmp r0, #0 + beq _080CE474 + ldr r0, _080CE470 + movs r1, #0 + bl sub_080CE47C + b _080CE478 + .align 2, 0 +_080CE46C: .4byte gUnknown_2039A1A +_080CE470: .4byte gUnknown_20399B4 +_080CE474: + bl sub_080CE3BC +_080CE478: + pop {r0} + bx r0 + thumb_func_end sub_080CE458 + + thumb_func_start sub_080CE47C +sub_080CE47C: @ 0x080CE47C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r5, r1, #0 + ldr r0, _080CE4E0 + mov r8, r0 + ldr r1, [r0] + ldr r3, _080CE4E4 + adds r2, r1, r3 + movs r0, #0 + strh r0, [r2] + mov sb, r0 + mov sl, r0 + cmp r5, #0 + bne _080CE594 + adds r6, r4, #0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + mov r2, r8 + ldr r1, [r2] + ldr r3, _080CE4E8 + adds r1, r1, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080CE4C0 + b _080CE6B0 +_080CE4C0: + adds r0, r4, #0 + movs r1, #4 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0 + beq _080CE4F0 + mov r1, r8 + ldr r0, [r1] + ldr r2, _080CE4EC + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + b _080CE502 + .align 2, 0 +_080CE4E0: .4byte gUnknown_20399A8 +_080CE4E4: .4byte 0x00000CE6 +_080CE4E8: .4byte 0x00000CE4 +_080CE4EC: .4byte 0x00000CED +_080CE4F0: + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, r8 + ldr r1, [r3] + ldr r2, _080CE578 + adds r1, r1, r2 + strb r0, [r1] +_080CE502: + ldr r4, _080CE57C + ldr r2, [r4] + ldr r5, _080CE580 + adds r2, r2, r5 + adds r0, r6, #0 + movs r1, #2 + bl sub_0806A058 + ldr r0, [r4] + adds r0, r0, r5 + bl sub_0800885C + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [r4] + ldr r3, _080CE584 + adds r1, r1, r3 + strb r0, [r1] + adds r0, r6, #0 + movs r1, #8 + bl sub_0806A058 + ldr r1, [r4] + ldr r2, _080CE588 + adds r1, r1, r2 + strb r0, [r1] + adds r0, r6, #0 + movs r1, #0 + bl sub_0806A058 + ldr r1, [r4] + movs r3, #0xce + lsls r3, r3, #4 + adds r1, r1, r3 + str r0, [r1] + adds r0, r6, #0 + bl sub_0806E194 + ldr r1, [r4] + ldr r2, _080CE58C + adds r1, r1, r2 + str r0, [r1] + adds r0, r6, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r6, #0 + movs r1, #0xc + bl sub_0806A058 + ldr r1, [r4] + ldr r3, _080CE590 + adds r1, r1, r3 + strh r0, [r1] + b _080CE6A2 + .align 2, 0 +_080CE578: .4byte 0x00000CED +_080CE57C: .4byte gUnknown_20399A8 +_080CE580: .4byte 0x00000CEE +_080CE584: .4byte 0x00000CEC +_080CE588: .4byte 0x00000CEB +_080CE58C: .4byte 0x00000CDC +_080CE590: .4byte 0x00000CE6 +_080CE594: + cmp r5, #1 + beq _080CE59A + b _080CE698 +_080CE59A: + adds r7, r4, #0 + adds r0, r7, #0 + movs r1, #0x41 + bl sub_0806A1B4 + mov r2, r8 + ldr r1, [r2] + ldr r3, _080CE5E0 + adds r1, r1, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080CE5B6 + b _080CE6B0 +_080CE5B6: + adds r0, r7, #0 + movs r1, #1 + bl sub_0806A1B4 + mov sb, r0 + adds r0, r7, #0 + movs r1, #4 + bl sub_0806A1B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0 + beq _080CE5E8 + mov r1, r8 + ldr r0, [r1] + ldr r2, _080CE5E4 + adds r0, r0, r2 + strb r5, [r0] + b _080CE5FA + .align 2, 0 +_080CE5E0: .4byte 0x00000CE4 +_080CE5E4: .4byte 0x00000CED +_080CE5E8: + adds r0, r7, #0 + movs r1, #0x2d + bl sub_0806A1B4 + mov r3, r8 + ldr r1, [r3] + ldr r2, _080CE67C + adds r1, r1, r2 + strb r0, [r1] +_080CE5FA: + ldr r5, _080CE680 + ldr r2, [r5] + ldr r4, _080CE684 + adds r2, r2, r4 + adds r0, r7, #0 + movs r1, #2 + bl sub_0806A1B4 + ldr r0, [r5] + adds r0, r0, r4 + bl sub_0800885C + adds r0, r7, #0 + bl sub_08068C00 + ldr r1, [r5] + ldr r3, _080CE688 + adds r1, r1, r3 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #8 + bl sub_0806A1B4 + ldr r1, [r5] + ldr r2, _080CE68C + adds r1, r1, r2 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0 + bl sub_0806A1B4 + adds r2, r0, #0 + ldr r1, [r5] + movs r6, #0xce + lsls r6, r6, #4 + adds r0, r1, r6 + str r2, [r0] + subs r4, #0xa + adds r1, r1, r4 + ldrh r0, [r1] + mov r1, sb + bl sub_0806E1CC + ldr r1, [r5] + ldr r3, _080CE690 + adds r2, r1, r3 + str r0, [r2] + adds r4, r1, r4 + ldrh r0, [r4] + adds r1, r1, r6 + ldr r1, [r1] + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A1B4 + ldr r1, [r5] + ldr r2, _080CE694 + adds r1, r1, r2 + strh r0, [r1] + b _080CE6A2 + .align 2, 0 +_080CE67C: .4byte 0x00000CED +_080CE680: .4byte gUnknown_20399A8 +_080CE684: .4byte 0x00000CEE +_080CE688: .4byte 0x00000CEC +_080CE68C: .4byte 0x00000CEB +_080CE690: .4byte 0x00000CDC +_080CE694: .4byte 0x00000CE6 +_080CE698: + ldr r3, _080CE6F4 + adds r0, r1, r3 + mov r1, sb + strh r1, [r0] + strh r1, [r2] +_080CE6A2: + ldr r0, _080CE6F8 + ldr r1, [r0] + ldr r2, _080CE6F4 + adds r0, r1, r2 + ldrh r2, [r0] + cmp r2, #0 + bne _080CE710 +_080CE6B0: + ldr r4, _080CE6F8 + ldr r0, [r4] + ldr r3, _080CE6FC + adds r0, r0, r3 + movs r1, #0 + movs r2, #5 + bl sub_08008DE8 + ldr r0, [r4] + ldr r1, _080CE700 + adds r0, r0, r1 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + ldr r0, [r4] + ldr r2, _080CE704 + adds r0, r0, r2 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + ldr r0, [r4] + ldr r3, _080CE708 + adds r0, r0, r3 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + ldr r0, [r4] + ldr r1, _080CE70C + adds r0, r0, r1 + b _080CE76E + .align 2, 0 +_080CE6F4: .4byte 0x00000CE4 +_080CE6F8: .4byte gUnknown_20399A8 +_080CE6FC: .4byte 0x00000CEE +_080CE700: .4byte 0x00000CF9 +_080CE704: .4byte 0x00000D1D +_080CE708: .4byte 0x00000D41 +_080CE70C: .4byte 0x00000D65 +_080CE710: + ldr r3, _080CE734 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _080CE790 + mov r0, sl + cmp r0, #0 + beq _080CE73C + ldr r2, _080CE738 + adds r0, r1, r2 + adds r3, #1 + adds r1, r1, r3 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + b _080CE74A + .align 2, 0 +_080CE734: .4byte 0x00000CED +_080CE738: .4byte 0x00000CF9 +_080CE73C: + ldr r2, _080CE778 + adds r0, r1, r2 + ldr r1, _080CE77C + movs r2, #0 + movs r3, #8 + bl sub_08008E14 +_080CE74A: + ldr r4, _080CE780 + ldr r0, [r4] + ldr r3, _080CE784 + adds r0, r0, r3 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + ldr r0, [r4] + ldr r1, _080CE788 + adds r0, r0, r1 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + ldr r0, [r4] + ldr r2, _080CE78C + adds r0, r0, r2 +_080CE76E: + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 + b _080CE934 + .align 2, 0 +_080CE778: .4byte 0x00000CF9 +_080CE77C: .4byte gUnknown_85C8C62 +_080CE780: .4byte gUnknown_20399A8 +_080CE784: .4byte 0x00000D1D +_080CE788: .4byte 0x00000D41 +_080CE78C: .4byte 0x00000D65 +_080CE790: + cmp r2, #0x1d + beq _080CE798 + cmp r2, #0x20 + bne _080CE79C +_080CE798: + movs r3, #0xff + mov sb, r3 +_080CE79C: + ldr r4, _080CE81C + ldr r1, [r4] + ldr r2, _080CE820 + adds r0, r1, r2 + ldr r3, _080CE824 + adds r1, r1, r3 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + ldr r1, [r4] + ldr r0, _080CE828 + adds r2, r1, r0 + movs r0, #0xba + strb r0, [r2] + ldr r3, _080CE82C + adds r2, r1, r3 + ldr r0, [r4] + ldr r1, _080CE830 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _080CE834 + adds r1, r1, r0 + adds r0, r2, #0 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + ldr r4, [r4] + ldr r3, _080CE838 + adds r2, r4, r3 + movs r0, #0xfc + strb r0, [r2] + ldr r0, _080CE83C + adds r2, r4, r0 + movs r0, #4 + strb r0, [r2] + ldr r1, _080CE840 + adds r2, r4, r1 + mov r3, sb + cmp r3, #0 + beq _080CE850 + cmp r3, #0xfe + beq _080CE87C + movs r0, #2 + strb r0, [r2] + ldr r0, _080CE844 + adds r2, r4, r0 + movs r0, #1 + strb r0, [r2] + adds r1, #2 + adds r2, r4, r1 + movs r0, #3 + strb r0, [r2] + ldr r3, _080CE848 + adds r2, r4, r3 + movs r0, #0 + strb r0, [r2] + ldr r0, _080CE84C + adds r2, r4, r0 + b _080CE89C + .align 2, 0 +_080CE81C: .4byte gUnknown_20399A8 +_080CE820: .4byte 0x00000CF9 +_080CE824: .4byte 0x00000CEE +_080CE828: .4byte 0x00000D1D +_080CE82C: .4byte 0x00000D1E +_080CE830: .4byte 0x00000CE4 +_080CE834: .4byte gUnknown_82EA31C +_080CE838: .4byte 0x00000D41 +_080CE83C: .4byte 0x00000D42 +_080CE840: .4byte 0x00000D43 +_080CE844: .4byte 0x00000D44 +_080CE848: .4byte 0x00000D46 +_080CE84C: .4byte 0x00000D47 +_080CE850: + strb r0, [r2] + ldr r1, _080CE870 + adds r2, r4, r1 + movs r0, #1 + strb r0, [r2] + ldr r3, _080CE874 + adds r2, r4, r3 + movs r0, #5 + strb r0, [r2] + ldr r0, _080CE878 + adds r2, r4, r0 + movs r0, #0xb5 + strb r0, [r2] + adds r1, #3 + adds r2, r4, r1 + b _080CE89C + .align 2, 0 +_080CE870: .4byte 0x00000D44 +_080CE874: .4byte 0x00000D45 +_080CE878: .4byte 0x00000D46 +_080CE87C: + movs r0, #6 + strb r0, [r2] + ldr r3, _080CE90C + adds r2, r4, r3 + movs r0, #1 + strb r0, [r2] + ldr r0, _080CE910 + adds r2, r4, r0 + movs r0, #7 + strb r0, [r2] + ldr r1, _080CE914 + adds r2, r4, r1 + movs r0, #0xb6 + strb r0, [r2] + adds r3, #3 + adds r2, r4, r3 +_080CE89C: + movs r0, #0xfc + strb r0, [r2] + adds r2, #1 + movs r0, #4 + strb r0, [r2] + adds r2, #1 + movs r0, #2 + strb r0, [r2] + adds r2, #1 + movs r0, #1 + strb r0, [r2] + adds r2, #1 + movs r0, #3 + strb r0, [r2] + adds r2, #1 + movs r5, #0 + strb r5, [r2] + adds r2, #1 + movs r0, #0xf9 + strb r0, [r2] + adds r2, #1 + movs r0, #5 + strb r0, [r2] + adds r2, #1 + ldr r4, _080CE918 + ldr r0, [r4] + ldr r1, _080CE91C + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r2, r0, #0 + strb r5, [r2] + movs r0, #0xff + strb r0, [r2, #1] + ldr r4, [r4] + ldr r2, _080CE920 + adds r1, r4, r2 + ldrh r0, [r1] + cmp r0, #0 + beq _080CE928 + ldr r3, _080CE924 + adds r4, r4, r3 + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #8 + bl sub_08008E14 + b _080CE934 + .align 2, 0 +_080CE90C: .4byte 0x00000D44 +_080CE910: .4byte 0x00000D45 +_080CE914: .4byte 0x00000D46 +_080CE918: .4byte gUnknown_20399A8 +_080CE91C: .4byte 0x00000CEC +_080CE920: .4byte 0x00000CE6 +_080CE924: .4byte 0x00000D65 +_080CE928: + ldr r1, _080CE944 + adds r0, r4, r1 + movs r1, #0 + movs r2, #8 + bl sub_08008DE8 +_080CE934: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CE944: .4byte 0x00000D65 + thumb_func_end sub_080CE47C + + thumb_func_start sub_080CE948 +sub_080CE948: @ 0x080CE948 + push {lr} + ldr r0, _080CE968 + ldr r0, [r0] + ldr r1, _080CE96C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080CE970 + cmp r0, #1 + ble _080CE960 + cmp r0, #2 + beq _080CE976 +_080CE960: + bl sub_080CE984 + b _080CE97A + .align 2, 0 +_080CE968: .4byte gUnknown_20399A8 +_080CE96C: .4byte 0x000021FF +_080CE970: + bl sub_080CEBF0 + b _080CE97A +_080CE976: + bl sub_080CED2C +_080CE97A: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CE948 + + thumb_func_start sub_080CE984 +sub_080CE984: @ 0x080CE984 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080CEA08 + ldrb r0, [r0] + mov r8, r0 + ldr r2, _080CEA0C + ldrb r4, [r2] + ldr r5, _080CEA10 + ldr r0, [r5] + ldr r1, _080CEA14 + mov sl, r1 + add r0, sl + movs r1, #0 + strb r1, [r0] + ldr r0, [r5] + ldr r7, _080CEA18 + adds r0, r0, r7 + strb r1, [r0] + ldr r0, [r5] + ldr r3, _080CEA1C + mov sb, r3 + add r0, sb + strb r1, [r0] + ldr r6, _080CEA20 + ldrh r1, [r6, #0x30] + movs r0, #0x40 + ands r0, r1 + adds r3, r2, #0 + cmp r0, #0 + beq _080CE9C8 + b _080CEBB8 +_080CE9C8: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080CEA24 + movs r6, #1 + lsls r0, r4, #0x18 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r4, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x1d + bgt _080CE9E4 + b _080CEBD4 +_080CE9E4: + movs r2, #3 + mov r8, r2 + subs r0, #0x1e + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, [r5] + add r0, sl + strb r6, [r0] + ldr r0, [r5] + add r0, sb + strb r6, [r0] + b _080CEBD4 + .align 2, 0 +_080CEA08: .4byte gUnknown_2039A18 +_080CEA0C: .4byte gUnknown_2039A19 +_080CEA10: .4byte gUnknown_20399A8 +_080CEA14: .4byte 0x00000CD2 +_080CEA18: .4byte 0x00000CD3 +_080CEA1C: .4byte 0x00000CD7 +_080CEA20: .4byte gUnknown_3002360 +_080CEA24: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CEA5A + movs r6, #1 + movs r0, #0 + ldrsb r0, [r3, r0] + movs r1, #6 + bl __modsi3 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEA46 + lsls r0, r4, #0x18 + movs r3, #0xff + lsls r3, r3, #0x18 + b _080CEBC8 +_080CEA46: + ldr r0, [r5] + adds r0, r0, r7 + movs r1, #0xff + strb r1, [r0] + lsls r0, r4, #0x18 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r0, r0, r1 + lsrs r4, r0, #0x18 + b _080CEBD4 +_080CEA5A: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080CEA8E + movs r6, #1 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r0, #1 + movs r1, #6 + bl __modsi3 + cmp r0, #0 + beq _080CEA80 + lsls r0, r4, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r4, r0, #0x18 + b _080CEBD4 +_080CEA80: + ldr r0, [r5] + adds r0, r0, r7 + strb r6, [r0] + lsls r0, r4, #0x18 + movs r3, #0xfb + lsls r3, r3, #0x18 + b _080CEBC8 +_080CEA8E: + ldrh r1, [r6, #0x2e] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080CEA9C + movs r6, #1 + b _080CEBCE +_080CEA9C: + movs r4, #1 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CEB60 + bl sub_080CF2D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEB60 + ldr r0, _080CEABC + ldrb r0, [r0] + cmp r0, #0 + bne _080CEAC0 + movs r0, #8 + b _080CEBE2 + .align 2, 0 +_080CEABC: .4byte gUnknown_2039A1D +_080CEAC0: + ldr r1, [r5] + ldrb r0, [r1, #1] + cmp r0, #2 + bne _080CEAD0 + ldr r0, _080CEAEC + ldrb r0, [r0] + cmp r0, #1 + bne _080CEB50 +_080CEAD0: + movs r0, #0 + bl sub_080CF814 + subs r0, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xe + bhi _080CEB60 + lsls r0, r0, #2 + ldr r1, _080CEAF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CEAEC: .4byte gUnknown_2039A1A +_080CEAF0: .4byte _080CEAF4 +_080CEAF4: @ jump table + .4byte _080CEB30 @ case 0 + .4byte _080CEB34 @ case 1 + .4byte _080CEB38 @ case 2 + .4byte _080CEB3C @ case 3 + .4byte _080CEB40 @ case 4 + .4byte _080CEB60 @ case 5 + .4byte _080CEB60 @ case 6 + .4byte _080CEB60 @ case 7 + .4byte _080CEB60 @ case 8 + .4byte _080CEB60 @ case 9 + .4byte _080CEB60 @ case 10 + .4byte _080CEB44 @ case 11 + .4byte _080CEB48 @ case 12 + .4byte _080CEB60 @ case 13 + .4byte _080CEB4C @ case 14 +_080CEB30: + movs r0, #0xb + b _080CEBE2 +_080CEB34: + movs r0, #0xc + b _080CEBE2 +_080CEB38: + movs r0, #0xd + b _080CEBE2 +_080CEB3C: + movs r0, #0xe + b _080CEBE2 +_080CEB40: + movs r0, #0xf + b _080CEBE2 +_080CEB44: + movs r0, #0x10 + b _080CEBE2 +_080CEB48: + movs r0, #0x11 + b _080CEBE2 +_080CEB4C: + movs r0, #0x12 + b _080CEBE2 +_080CEB50: + ldr r2, _080CEB5C + adds r0, r1, r2 + strb r4, [r0] + movs r0, #0x14 + b _080CEBE2 + .align 2, 0 +_080CEB5C: .4byte 0x000021FF +_080CEB60: + ldr r2, _080CEB70 + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CEB74 + movs r0, #0x13 + b _080CEBE2 + .align 2, 0 +_080CEB70: .4byte gUnknown_3002360 +_080CEB74: + ldr r0, _080CEB90 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080CEBA2 + ldrh r1, [r2, #0x2c] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CEB94 + movs r0, #0xa + b _080CEBE2 + .align 2, 0 +_080CEB90: .4byte gUnknown_3005AF0 +_080CEB94: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CEBA2 + movs r0, #9 + b _080CEBE2 +_080CEBA2: + ldrh r1, [r2, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080CEBB4 + bl sub_080CF640 + movs r0, #0 + b _080CEBE2 +_080CEBB4: + movs r6, #0 + b _080CEBE0 +_080CEBB8: + movs r6, #1 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #5 + ble _080CEBCE + lsls r0, r4, #0x18 + movs r3, #0xfa + lsls r3, r3, #0x18 +_080CEBC8: + adds r0, r0, r3 + lsrs r4, r0, #0x18 + b _080CEBD4 +_080CEBCE: + movs r0, #2 + mov r8, r0 + movs r4, #0 +_080CEBD4: + cmp r6, #0 + beq _080CEBE0 + mov r0, r8 + adds r1, r4, #0 + bl sub_080CD110 +_080CEBE0: + adds r0, r6, #0 +_080CEBE2: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080CE984 + + thumb_func_start sub_080CEBF0 +sub_080CEBF0: @ 0x080CEBF0 + push {r4, lr} + ldr r1, _080CEC20 + ldrh r0, [r1, #0x2c] + movs r4, #1 + ands r4, r0 + cmp r4, #0 + beq _080CECA4 + ldrh r1, [r1, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080CEC28 + ldr r4, _080CEC24 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #6 + bl __divsi3 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEC9C + ldrb r1, [r4] + subs r1, #6 + b _080CEC8A + .align 2, 0 +_080CEC20: .4byte gUnknown_3002360 +_080CEC24: .4byte gUnknown_2039A19 +_080CEC28: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080CEC48 + ldr r1, _080CEC44 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, #6 + cmp r0, #0x1d + bgt _080CEC9C + ldrb r1, [r1] + adds r1, #6 + b _080CEC8A + .align 2, 0 +_080CEC44: .4byte gUnknown_2039A19 +_080CEC48: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CEC6C + ldr r4, _080CEC68 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #6 + bl __modsi3 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEC9C + ldrb r1, [r4] + subs r1, #1 + b _080CEC8A + .align 2, 0 +_080CEC68: .4byte gUnknown_2039A19 +_080CEC6C: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080CECA0 + ldr r4, _080CEC98 + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, #1 + movs r1, #6 + bl __modsi3 + cmp r0, #0 + beq _080CEC9C + ldrb r1, [r4] + adds r1, #1 +_080CEC8A: + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_080CD110 + movs r0, #0x15 + b _080CED18 + .align 2, 0 +_080CEC98: .4byte gUnknown_2039A19 +_080CEC9C: + movs r0, #0x18 + b _080CED18 +_080CECA0: + movs r0, #0 + b _080CED18 +_080CECA4: + bl sub_080D0444 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080CECE0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + cmp r0, r1 + beq _080CECF8 + ldr r2, _080CECE4 + ldr r0, _080CECE8 + ldr r1, [r0] + ldr r3, _080CECEC + adds r0, r1, r3 + ldrh r0, [r0] + rsbs r0, r0, #0 + lsrs r0, r0, #0x1f + strb r0, [r2] + ldr r0, _080CECF0 + adds r1, r1, r0 + movs r0, #2 + strb r0, [r1] + bl sub_080D15AC + ldr r1, _080CECF4 + strb r0, [r1] + movs r0, #0x17 + b _080CED18 + .align 2, 0 +_080CECE0: .4byte gUnknown_2039A19 +_080CECE4: .4byte gUnknown_2039A1A +_080CECE8: .4byte gUnknown_20399A8 +_080CECEC: .4byte 0x00000CE4 +_080CECF0: .4byte 0x000021FF +_080CECF4: .4byte gUnknown_2039A1B +_080CECF8: + ldr r1, _080CED20 + ldr r0, [r1] + ldr r2, _080CED24 + adds r0, r0, r2 + strb r4, [r0] + ldr r0, [r1] + ldr r3, _080CED28 + adds r0, r0, r3 + ldr r1, [r0] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0x16 +_080CED18: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080CED20: .4byte gUnknown_20399A8 +_080CED24: .4byte 0x000021FF +_080CED28: .4byte 0x00000CB8 + thumb_func_end sub_080CEBF0 + + thumb_func_start sub_080CED2C +sub_080CED2C: @ 0x080CED2C + push {r4, lr} + ldr r2, _080CED50 + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080CED58 + movs r0, #0 + bl sub_080CFE20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEE04 + ldr r0, _080CED54 + ldrb r1, [r0] + subs r1, #6 + b _080CEDB6 + .align 2, 0 +_080CED50: .4byte gUnknown_3002360 +_080CED54: .4byte gUnknown_2039A19 +_080CED58: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080CED78 + movs r0, #1 + bl sub_080CFE20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEE04 + ldr r0, _080CED74 + ldrb r1, [r0] + adds r1, #6 + b _080CEDB6 + .align 2, 0 +_080CED74: .4byte gUnknown_2039A19 +_080CED78: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CED98 + movs r0, #2 + bl sub_080CFE20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEE1E + ldr r0, _080CED94 + ldrb r1, [r0] + subs r1, #1 + b _080CEDB6 + .align 2, 0 +_080CED94: .4byte gUnknown_2039A19 +_080CED98: + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080CEDC8 + movs r0, #3 + bl sub_080CFE20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEE32 + ldr r0, _080CEDC4 + ldrb r1, [r0] + adds r1, #1 +_080CEDB6: + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_080CD110 + movs r0, #0x19 + b _080CEE38 + .align 2, 0 +_080CEDC4: .4byte gUnknown_2039A19 +_080CEDC8: + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CEDFC + bl sub_080D0460 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEE04 + ldr r0, _080CEDF0 + strb r4, [r0] + ldr r0, _080CEDF4 + ldr r0, [r0] + ldr r1, _080CEDF8 + adds r0, r0, r1 + strb r4, [r0] + movs r0, #0x1a + b _080CEE38 + .align 2, 0 +_080CEDF0: .4byte gUnknown_2039A1A +_080CEDF4: .4byte gUnknown_20399A8 +_080CEDF8: .4byte 0x000021FF +_080CEDFC: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CEE08 +_080CEE04: + movs r0, #0x18 + b _080CEE38 +_080CEE08: + ldr r0, _080CEE24 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080CEE36 + ldrh r1, [r2, #0x2c] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CEE28 +_080CEE1E: + movs r0, #0xa + b _080CEE38 + .align 2, 0 +_080CEE24: .4byte gUnknown_3005AF0 +_080CEE28: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CEE36 +_080CEE32: + movs r0, #9 + b _080CEE38 +_080CEE36: + movs r0, #0 +_080CEE38: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CED2C + + thumb_func_start sub_080CEE40 +sub_080CEE40: @ 0x080CEE40 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _080CEEB0 + ldrb r0, [r0] + mov sb, r0 + ldr r6, _080CEEB4 + ldrb r4, [r6] + ldr r2, _080CEEB8 + ldr r0, [r2] + ldr r1, _080CEEBC + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _080CEEC0 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, #5 + adds r0, r0, r3 + strb r1, [r0] + mov r8, r1 + movs r7, #0 + ldr r1, _080CEEC4 + ldrh r3, [r1, #0x30] + movs r0, #0x40 + ands r0, r3 + adds r5, r6, #0 + mov ip, r1 + cmp r0, #0 + beq _080CEE84 + b _080CF024 +_080CEE84: + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _080CEEC8 + lsls r0, r4, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r4, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + ble _080CEE9E + movs r4, #0 +_080CEE9E: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r5, r1] + cmp r0, r1 + bne _080CEEAC + b _080CF042 +_080CEEAC: + movs r7, #1 + b _080CF046 + .align 2, 0 +_080CEEB0: .4byte gUnknown_2039A18 +_080CEEB4: .4byte gUnknown_2039A19 +_080CEEB8: .4byte gUnknown_20399A8 +_080CEEBC: .4byte 0x00000CD3 +_080CEEC0: .4byte 0x00000CD2 +_080CEEC4: .4byte gUnknown_3002360 +_080CEEC8: + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _080CEEEC + ldrb r1, [r5] + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _080CEEEC + movs r7, #1 + ldr r0, [r2] + ldr r2, _080CEEE8 + adds r0, r0, r2 + strb r1, [r0] + movs r4, #0 + b _080CF042 + .align 2, 0 +_080CEEE8: .4byte 0x00000CD6 +_080CEEEC: + mov r3, ip + ldrh r1, [r3, #0x30] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080CEF1A + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + bne _080CEF10 + movs r7, #1 + ldr r0, [r2] + ldr r1, _080CEF0C + adds r0, r0, r1 + ldrb r4, [r0] + b _080CF042 + .align 2, 0 +_080CEF0C: .4byte 0x00000CD6 +_080CEF10: + movs r7, #6 + movs r2, #0 + mov sb, r2 + movs r4, #0 + b _080CF042 +_080CEF1A: + mov r3, ip + ldrh r1, [r3, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CEFD8 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #6 + bne _080CEF40 + ldr r0, [r2] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _080CEF3A + movs r0, #4 + b _080CF054 +_080CEF3A: + movs r0, #1 + mov r8, r0 + b _080CEFD8 +_080CEF40: + bl sub_080CF2D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080CEFD8 + ldr r0, _080CEF58 + ldrb r0, [r0] + cmp r0, #0 + bne _080CEF5C + movs r0, #8 + b _080CF054 + .align 2, 0 +_080CEF58: .4byte gUnknown_2039A1D +_080CEF5C: + movs r0, #0 + bl sub_080CF814 + subs r0, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xe + bhi _080CEFD8 + lsls r0, r0, #2 + ldr r1, _080CEF78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CEF78: .4byte _080CEF7C +_080CEF7C: @ jump table + .4byte _080CEFB8 @ case 0 + .4byte _080CEFBC @ case 1 + .4byte _080CEFC0 @ case 2 + .4byte _080CEFC4 @ case 3 + .4byte _080CEFC8 @ case 4 + .4byte _080CEFD8 @ case 5 + .4byte _080CEFD8 @ case 6 + .4byte _080CEFD8 @ case 7 + .4byte _080CEFD8 @ case 8 + .4byte _080CEFD8 @ case 9 + .4byte _080CEFD8 @ case 10 + .4byte _080CEFCC @ case 11 + .4byte _080CEFD0 @ case 12 + .4byte _080CEFD8 @ case 13 + .4byte _080CEFD4 @ case 14 +_080CEFB8: + movs r0, #0xb + b _080CF054 +_080CEFBC: + movs r0, #0xc + b _080CF054 +_080CEFC0: + movs r0, #0xd + b _080CF054 +_080CEFC4: + movs r0, #0xe + b _080CF054 +_080CEFC8: + movs r0, #0xf + b _080CF054 +_080CEFCC: + movs r0, #0x10 + b _080CF054 +_080CEFD0: + movs r0, #0x11 + b _080CF054 +_080CEFD4: + movs r0, #0x12 + b _080CF054 +_080CEFD8: + ldr r2, _080CEFF4 + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + mov ip, r2 + cmp r0, #0 + beq _080CF000 + ldr r0, _080CEFF8 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _080CEFFC + movs r0, #0x13 + b _080CF054 + .align 2, 0 +_080CEFF4: .4byte gUnknown_3002360 +_080CEFF8: .4byte gUnknown_20399A8 +_080CEFFC: + movs r1, #1 + mov r8, r1 +_080CF000: + mov r2, r8 + cmp r2, #0 + beq _080CF010 + movs r7, #6 + movs r3, #0 + mov sb, r3 + movs r4, #0 + b _080CF042 +_080CF010: + mov r0, ip + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080CF042 + bl sub_080CF640 + movs r0, #0 + b _080CF054 +_080CF024: + lsls r0, r4, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r4, r0, #0x18 + cmp r0, #0 + bge _080CF034 + movs r4, #6 +_080CF034: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r6, r1] + cmp r0, r1 + beq _080CF042 + movs r7, #1 +_080CF042: + cmp r7, #0 + beq _080CF052 +_080CF046: + cmp r7, #6 + beq _080CF052 + mov r0, sb + adds r1, r4, #0 + bl sub_080CD110 +_080CF052: + adds r0, r7, #0 +_080CF054: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080CEE40 + + thumb_func_start sub_080CF060 +sub_080CF060: @ 0x080CF060 + push {r4, r5, r6, lr} + ldr r3, _080CF09C + ldr r0, [r3] + ldr r1, _080CF0A0 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r3] + ldr r2, _080CF0A4 + adds r0, r0, r2 + strb r1, [r0] + ldr r0, [r3] + ldr r5, _080CF0A8 + adds r0, r0, r5 + strb r1, [r0] + ldr r1, _080CF0AC + ldrh r2, [r1, #0x30] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + bne _080CF126 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _080CF0B0 + movs r4, #1 + movs r1, #0 + movs r6, #2 + b _080CF132 + .align 2, 0 +_080CF09C: .4byte gUnknown_20399A8 +_080CF0A0: .4byte 0x00000CD3 +_080CF0A4: .4byte 0x00000CD2 +_080CF0A8: .4byte 0x00000CD7 +_080CF0AC: .4byte gUnknown_3002360 +_080CF0B0: + ldrh r2, [r1, #0x2c] + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + bne _080CF0D6 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _080CF0EA + ldr r0, _080CF0DC + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _080CF0EE + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080CF0E0 +_080CF0D6: + movs r0, #0xa + b _080CF14E + .align 2, 0 +_080CF0DC: .4byte gUnknown_3005AF0 +_080CF0E0: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080CF0EE +_080CF0EA: + movs r0, #9 + b _080CF14E +_080CF0EE: + ldrh r1, [r1, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CF106 + movs r0, #0 + bl sub_080CCA24 + bl sub_080CF2B4 + movs r0, #7 + b _080CF14E +_080CF106: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CF112 + movs r0, #0x13 + b _080CF14E +_080CF112: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080CF122 + bl sub_080CF640 + movs r0, #0 + b _080CF14E +_080CF122: + movs r4, #0 + b _080CF14C +_080CF126: + movs r4, #1 + movs r1, #3 + movs r6, #0 + ldr r0, [r3] + adds r0, r0, r5 + strb r4, [r0] +_080CF132: + cmp r4, #0 + beq _080CF14C + lsls r5, r1, #0x18 + cmp r1, #2 + beq _080CF142 + movs r0, #0 + bl sub_080CCA24 +_080CF142: + lsrs r0, r5, #0x18 + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + bl sub_080CD110 +_080CF14C: + adds r0, r4, #0 +_080CF14E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080CF060 + + thumb_func_start sub_080CF154 +sub_080CF154: @ 0x080CF154 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080CF1A4 + ldrb r0, [r0] + mov r8, r0 + ldr r0, _080CF1A8 + mov ip, r0 + ldrb r2, [r0] + ldr r3, _080CF1AC + ldr r0, [r3] + ldr r1, _080CF1B0 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r3] + ldr r6, _080CF1B4 + adds r0, r0, r6 + strb r1, [r0] + ldr r0, [r3] + ldr r5, _080CF1B8 + adds r0, r0, r5 + strb r1, [r0] + ldr r7, _080CF1BC + ldrh r1, [r7, #0x30] + movs r0, #0x40 + ands r0, r1 + adds r4, r3, #0 + cmp r0, #0 + bne _080CF22E + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + beq _080CF1C0 + movs r7, #1 + movs r0, #2 + mov r8, r0 + movs r2, #0 + ldr r0, [r4] + b _080CF24C + .align 2, 0 +_080CF1A4: .4byte gUnknown_2039A18 +_080CF1A8: .4byte gUnknown_2039A19 +_080CF1AC: .4byte gUnknown_20399A8 +_080CF1B0: .4byte 0x00000CD3 +_080CF1B4: .4byte 0x00000CD2 +_080CF1B8: .4byte 0x00000CD7 +_080CF1BC: .4byte gUnknown_3002360 +_080CF1C0: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080CF1DC + movs r7, #1 + lsls r0, r2, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r2, r0, #0x18 + cmp r0, #0 + bge _080CF250 + movs r2, #1 + b _080CF250 +_080CF1DC: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080CF1FA + movs r7, #1 + lsls r0, r2, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + ble _080CF250 + movs r2, #0 + b _080CF250 +_080CF1FA: + ldrh r1, [r7, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080CF20E + movs r0, #4 + cmp r2, #0 + bne _080CF25E + movs r0, #5 + b _080CF25E +_080CF20E: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CF21A + movs r0, #0x13 + b _080CF25E +_080CF21A: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080CF22A + bl sub_080CF640 + movs r0, #0 + b _080CF25E +_080CF22A: + movs r7, #0 + b _080CF25C +_080CF22E: + movs r7, #1 + movs r0, #0 + mov r8, r0 + ldr r0, [r3] + adds r0, r0, r6 + movs r1, #0xff + strb r1, [r0] + mov r1, ip + movs r0, #0 + ldrsb r0, [r1, r0] + movs r2, #0x1d + cmp r0, #0 + bne _080CF24A + movs r2, #0x18 +_080CF24A: + ldr r0, [r3] +_080CF24C: + adds r0, r0, r5 + strb r7, [r0] +_080CF250: + cmp r7, #0 + beq _080CF25C + mov r0, r8 + adds r1, r2, #0 + bl sub_080CD110 +_080CF25C: + adds r0, r7, #0 +_080CF25E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080CF154 + + thumb_func_start sub_080CF268 +sub_080CF268: @ 0x080CF268 + push {r4, r5, lr} + movs r3, #0 + ldr r0, _080CF294 + ldr r1, [r0] + adds r4, r0, #0 + cmp r1, #0 + beq _080CF2AC + ldr r5, _080CF298 +_080CF278: + lsls r0, r3, #3 + adds r2, r0, r4 + movs r1, #4 + ldrsb r1, [r2, r1] + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r1, r0 + bne _080CF29C + ldr r0, [r2] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080CF2AE + .align 2, 0 +_080CF294: .4byte gUnknown_85564B8 +_080CF298: .4byte gUnknown_2039A18 +_080CF29C: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r0, r3, #3 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + bne _080CF278 +_080CF2AC: + movs r0, #0 +_080CF2AE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080CF268 + + thumb_func_start sub_080CF2B4 +sub_080CF2B4: @ 0x080CF2B4 + push {lr} + bl sub_080CF76C + movs r0, #9 + bl sub_080CF7B0 + movs r0, #0xa + bl sub_080CF7B0 + movs r0, #0xb + bl sub_080CF7B0 + movs r0, #0 + bl sub_080CF7B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CF2B4 + + thumb_func_start sub_080CF2D8 +sub_080CF2D8: @ 0x080CF2D8 + push {lr} + bl sub_080CF76C + ldr r0, _080CF2F0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080CF2F4 + bl sub_080CF3C0 + b _080CF2F8 + .align 2, 0 +_080CF2F0: .4byte gUnknown_20399A8 +_080CF2F4: + bl sub_080CF300 +_080CF2F8: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080CF2D8 + + thumb_func_start sub_080CF300 +sub_080CF300: @ 0x080CF300 + push {lr} + bl sub_080CCD80 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080CF320 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + beq _080CF32A + cmp r0, #1 + bgt _080CF324 + cmp r0, #0 + beq _080CF336 + b _080CF370 + .align 2, 0 +_080CF320: .4byte gUnknown_20399A8 +_080CF324: + cmp r0, #2 + beq _080CF342 + b _080CF370 +_080CF32A: + cmp r1, #0 + beq _080CF370 + movs r0, #1 + bl sub_080CF7B0 + b _080CF374 +_080CF336: + cmp r1, #0 + beq _080CF370 + movs r0, #2 + bl sub_080CF7B0 + b _080CF374 +_080CF342: + ldr r0, _080CF358 + ldrb r0, [r0] + cmp r0, #0 + beq _080CF364 + cmp r1, #0 + beq _080CF35C + movs r0, #4 + bl sub_080CF7B0 + b _080CF374 + .align 2, 0 +_080CF358: .4byte gUnknown_2039A1A +_080CF35C: + movs r0, #5 + bl sub_080CF7B0 + b _080CF374 +_080CF364: + cmp r1, #0 + beq _080CF370 + movs r0, #3 + bl sub_080CF7B0 + b _080CF374 +_080CF370: + movs r0, #0 + b _080CF3BA +_080CF374: + movs r0, #6 + bl sub_080CF7B0 + ldr r0, _080CF398 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #2 + bne _080CF3A6 + ldr r0, _080CF39C + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CF3A0 + movs r0, #2 + bl sub_080CF7B0 + b _080CF3A6 + .align 2, 0 +_080CF398: .4byte gUnknown_20399A8 +_080CF39C: .4byte gUnknown_2039A18 +_080CF3A0: + movs r0, #1 + bl sub_080CF7B0 +_080CF3A6: + movs r0, #8 + bl sub_080CF7B0 + movs r0, #7 + bl sub_080CF7B0 + movs r0, #0 + bl sub_080CF7B0 + movs r0, #1 +_080CF3BA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CF300 + + thumb_func_start sub_080CF3C0 +sub_080CF3C0: @ 0x080CF3C0 + push {r4, r5, lr} + ldr r4, _080CF3FC + ldr r0, [r4] + ldr r5, _080CF400 + adds r0, r0, r5 + ldrh r1, [r0] + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _080CF456 + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CF428 + ldr r2, [r4] + ldr r0, _080CF404 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _080CF408 + adds r0, r2, r5 + ldrh r0, [r0] + cmp r0, #0 + beq _080CF456 + movs r0, #0xe + bl sub_080CF7B0 + b _080CF460 + .align 2, 0 +_080CF3FC: .4byte gUnknown_20399A8 +_080CF400: .4byte 0x00000CE4 +_080CF404: .4byte 0x00000CE6 +_080CF408: + ldrh r0, [r1] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CF420 + movs r0, #0xc + bl sub_080CF7B0 + movs r0, #0x10 + bl sub_080CF7B0 +_080CF420: + movs r0, #0x11 + bl sub_080CF7B0 + b _080CF460 +_080CF428: + ldr r2, [r4] + ldr r0, _080CF444 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _080CF448 + adds r0, r2, r5 + ldrh r0, [r0] + cmp r0, #0 + beq _080CF456 + movs r0, #0xd + bl sub_080CF7B0 + b _080CF460 + .align 2, 0 +_080CF444: .4byte 0x00000CE6 +_080CF448: + ldrh r0, [r1] + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080CF45A +_080CF456: + movs r0, #0 + b _080CF468 +_080CF45A: + movs r0, #0xf + bl sub_080CF7B0 +_080CF460: + movs r0, #0 + bl sub_080CF7B0 + movs r0, #1 +_080CF468: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CF3C0 + + thumb_func_start sub_080CF470 +sub_080CF470: @ 0x080CF470 + ldr r1, _080CF488 + ldr r1, [r1] + ldr r2, _080CF48C + adds r1, 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 +_080CF488: .4byte gUnknown_20399A8 +_080CF48C: .4byte 0x00000CB4 + thumb_func_end sub_080CF470 + + thumb_func_start sub_080CF490 +sub_080CF490: @ 0x080CF490 + push {r4, r5, r6, lr} + sub sp, #0x2c + mov r1, sp + ldr r0, _080CF55C + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + add r4, sp, #0x18 + adds r1, r4, #0 + ldr r0, _080CF560 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldr r0, [r0] + str r0, [r1] + mov r0, sp + bl sub_08008254 + adds r0, r4, #0 + bl sub_080084A8 + ldr r0, _080CF564 + bl sub_0800851C + ldr r6, _080CF568 + ldr r1, [r6] + ldr r4, _080CF56C + adds r1, r1, r4 + strb r0, [r1] + ldr r0, _080CF570 + bl sub_0800851C + ldr r1, [r6] + ldr r5, _080CF574 + adds r1, r1, r5 + strb r0, [r1] + ldr r0, _080CF578 + ldrb r0, [r0] + ldr r1, _080CF57C + ldrb r1, [r1] + add r4, sp, #0x28 + mov r5, sp + adds r5, #0x2a + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080CCCC0 + ldr r0, _080CF580 + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #0 + ldrsh r2, [r5, r3] + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080CF594 + ldr r2, [r6] + ldr r4, _080CF584 + adds r3, r2, r4 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080CF588 + adds r1, r1, r0 + str r1, [r3] + ldr r0, _080CF58C + ldr r5, _080CF56C + adds r2, r2, r5 + ldrb r0, [r0] + adds r2, r2, r0 + ldrb r2, [r2] + lsls r2, r2, #4 + ldrb r3, [r1, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [r6] + adds r0, r0, r4 + ldr r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, _080CF590 + ldrb r0, [r0] + cmp r0, #0 + beq _080CF59E + ldr r0, [r6] + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 + b _080CF59E + .align 2, 0 +_080CF55C: .4byte gUnknown_85564E0 +_080CF560: .4byte gUnknown_85564F8 +_080CF564: .4byte 0x0000DACA +_080CF568: .4byte gUnknown_20399A8 +_080CF56C: .4byte 0x00000CD8 +_080CF570: .4byte 0x0000DAC7 +_080CF574: .4byte 0x00000CD9 +_080CF578: .4byte gUnknown_2039A18 +_080CF57C: .4byte gUnknown_2039A19 +_080CF580: .4byte gUnknown_855654C +_080CF584: .4byte 0x00000CB4 +_080CF588: .4byte gUnknown_20205AC +_080CF58C: .4byte gUnknown_2039A1D +_080CF590: .4byte gUnknown_2039A1A +_080CF594: + ldr r0, [r6] + ldr r1, _080CF5B0 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] +_080CF59E: + ldr r0, _080CF5B4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080CF5B8 + movs r3, #0xd + movs r4, #1 + b _080CF5BC + .align 2, 0 +_080CF5B0: .4byte 0x00000CB4 +_080CF5B4: .4byte gUnknown_2039A18 +_080CF5B8: + movs r3, #0x15 + movs r4, #2 +_080CF5BC: + ldr r0, _080CF610 + movs r1, #0 + movs r2, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080CF624 + ldr r5, _080CF614 + ldr r2, [r5] + ldr r3, _080CF618 + adds r2, r2, r3 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080CF61C + adds r1, r1, r0 + str r1, [r2] + lsls r3, r4, #2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldr r0, _080CF620 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080CF630 + ldr r0, [r5] + ldr r4, _080CF618 + adds r0, r0, r4 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + b _080CF630 + .align 2, 0 +_080CF610: .4byte gUnknown_8556564 +_080CF614: .4byte gUnknown_20399A8 +_080CF618: .4byte 0x00000CB8 +_080CF61C: .4byte gUnknown_20205AC +_080CF620: .4byte gUnknown_2039A18 +_080CF624: + ldr r0, _080CF638 + ldr r0, [r0] + ldr r5, _080CF63C + adds r0, r0, r5 + movs r1, #0 + str r1, [r0] +_080CF630: + add sp, #0x2c + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CF638: .4byte gUnknown_20399A8 +_080CF63C: .4byte 0x00000CB8 + thumb_func_end sub_080CF490 + + thumb_func_start sub_080CF640 +sub_080CF640: @ 0x080CF640 + push {lr} + ldr r2, _080CF674 + movs r1, #0 + ldrb r0, [r2] + cmp r0, #0 + bne _080CF64E + movs r1, #1 +_080CF64E: + strb r1, [r2] + ldr r0, _080CF678 + ldr r0, [r0] + ldr r3, _080CF67C + adds r1, r0, r3 + ldr r3, [r1] + ldr r1, _080CF680 + adds r0, r0, r1 + ldrb r2, [r2] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r1, r1, #4 + ldrb r2, [r3, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + pop {r0} + bx r0 + .align 2, 0 +_080CF674: .4byte gUnknown_2039A1D +_080CF678: .4byte gUnknown_20399A8 +_080CF67C: .4byte 0x00000CB4 +_080CF680: .4byte 0x00000CD8 + thumb_func_end sub_080CF640 + + thumb_func_start sub_080CF684 +sub_080CF684: @ 0x080CF684 + ldr r0, _080CF68C + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CF68C: .4byte gUnknown_2039A19 + thumb_func_end sub_080CF684 + + thumb_func_start sub_080CF690 +sub_080CF690: @ 0x080CF690 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, _080CF6BC + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CF6C4 + ldr r4, _080CF6C0 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #6 + bl __modsi3 + strb r0, [r5] + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #6 + bl __divsi3 + b _080CF6C8 + .align 2, 0 +_080CF6BC: .4byte gUnknown_2039A18 +_080CF6C0: .4byte gUnknown_2039A19 +_080CF6C4: + movs r0, #0 + strb r0, [r5] +_080CF6C8: + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080CF690 + + thumb_func_start sub_080CF6D0 +sub_080CF6D0: @ 0x080CF6D0 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080CF6EC + ldr r0, [r0] + ldr r2, _080CF6F0 + adds r0, r0, r2 + ldr r0, [r0] + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_080CF6EC: .4byte gUnknown_20399A8 +_080CF6F0: .4byte 0x00000CB4 + thumb_func_end sub_080CF6D0 + + thumb_func_start sub_080CF6F4 +sub_080CF6F4: @ 0x080CF6F4 + ldr r0, _080CF6FC + ldrb r0, [r0] + bx lr + .align 2, 0 +_080CF6FC: .4byte gUnknown_2039A1B + thumb_func_end sub_080CF6F4 + + thumb_func_start sub_080CF700 +sub_080CF700: @ 0x080CF700 + ldr r0, _080CF71C + ldr r0, [r0] + ldr r1, _080CF720 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + bx lr + .align 2, 0 +_080CF71C: .4byte gUnknown_20399A8 +_080CF720: .4byte 0x00000CB4 + thumb_func_end sub_080CF700 + + thumb_func_start sub_080CF724 +sub_080CF724: @ 0x080CF724 + push {lr} + ldr r0, _080CF740 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CF73C + ldr r0, _080CF744 + ldrb r1, [r0] + movs r0, #0 + bl sub_080D06F0 +_080CF73C: + pop {r0} + bx r0 + .align 2, 0 +_080CF740: .4byte gUnknown_2039A18 +_080CF744: .4byte gUnknown_2039A19 + thumb_func_end sub_080CF724 + + thumb_func_start sub_080CF748 +sub_080CF748: @ 0x080CF748 + push {lr} + ldr r0, _080CF764 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080CF760 + ldr r0, _080CF768 + ldrb r1, [r0] + movs r0, #0 + bl sub_080D062C +_080CF760: + pop {r0} + bx r0 + .align 2, 0 +_080CF764: .4byte gUnknown_2039A18 +_080CF768: .4byte gUnknown_2039A19 + thumb_func_end sub_080CF748 + + thumb_func_start sub_080CF76C +sub_080CF76C: @ 0x080CF76C + ldr r2, _080CF7A0 + ldr r0, [r2] + ldr r1, _080CF7A4 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _080CF7A8 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + subs r3, #0x41 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _080CF7AC + adds r0, r0, r1 + movs r1, #0xf + strb r1, [r0] + ldr r0, [r2] + adds r3, #6 + adds r0, r0, r3 + movs r1, #0x5c + strh r1, [r0] + bx lr + .align 2, 0 +_080CF7A0: .4byte gUnknown_20399A8 +_080CF7A4: .4byte 0x00000CAC +_080CF7A8: .4byte 0x00000CAD +_080CF7AC: .4byte 0x00000C71 + thumb_func_end sub_080CF76C + + thumb_func_start sub_080CF7B0 +sub_080CF7B0: @ 0x080CF7B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r4, _080CF800 + ldr r2, [r4] + ldr r5, _080CF804 + adds r1, r2, r5 + ldrb r0, [r1] + cmp r0, #6 + bhi _080CF7FA + adds r1, r0, #0 + lsls r1, r1, #3 + ldr r0, _080CF808 + adds r1, r1, r0 + adds r1, r2, r1 + ldr r2, _080CF80C + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + str r3, [r1, #4] + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, [r4] + ldr r2, _080CF810 + adds r0, r0, r2 + ldrb r2, [r0] + cmp r1, r2 + bls _080CF7F0 + strb r1, [r0] +_080CF7F0: + ldr r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080CF7FA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CF800: .4byte gUnknown_20399A8 +_080CF804: .4byte 0x00000CAC +_080CF808: .4byte 0x00000C74 +_080CF80C: .4byte gUnknown_855657C +_080CF810: .4byte 0x00000CAD + thumb_func_end sub_080CF7B0 + + thumb_func_start sub_080CF814 +sub_080CF814: @ 0x080CF814 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080CF838 + ldr r1, [r0] + ldr r3, _080CF83C + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bhs _080CF844 + lsls r0, r2, #3 + ldr r2, _080CF840 + adds r1, r1, r2 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + b _080CF848 + .align 2, 0 +_080CF838: .4byte gUnknown_20399A8 +_080CF83C: .4byte 0x00000CAC +_080CF840: .4byte 0x00000C78 +_080CF844: + movs r0, #1 + rsbs r0, r0, #0 +_080CF848: + pop {r1} + bx r1 + thumb_func_end sub_080CF814 + + thumb_func_start sub_080CF84C +sub_080CF84C: @ 0x080CF84C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0xc + ldr r5, _080CF928 + ldr r1, [r5] + ldr r2, _080CF92C + adds r0, r1, r2 + ldrb r0, [r0] + adds r0, #2 + subs r2, #0x3e + adds r1, r1, r2 + movs r3, #0 + mov sb, r3 + strb r0, [r1] + ldr r1, [r5] + ldr r6, _080CF930 + adds r0, r1, r6 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r3, #0xc7 + lsls r3, r3, #4 + adds r1, r1, r3 + strb r0, [r1] + ldr r1, [r5] + adds r2, r1, r2 + ldrb r2, [r2] + movs r0, #0x1d + subs r0, r0, r2 + ldr r2, _080CF934 + adds r1, r1, r2 + strb r0, [r1] + ldr r1, [r5] + adds r3, r1, r3 + ldrb r2, [r3] + movs r0, #0xf + subs r0, r0, r2 + ldr r3, _080CF938 + adds r1, r1, r3 + strb r0, [r1] + ldr r0, [r5] + ldr r1, _080CF93C + adds r0, r0, r1 + bl sub_08003250 + ldr r1, [r5] + movs r4, #0xcb + lsls r4, r4, #4 + adds r1, r1, r4 + movs r2, #0 + mov r8, r2 + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003774 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + movs r2, #0xb + movs r3, #0xe + bl sub_08197F44 + ldr r2, [r5] + adds r0, r2, r4 + ldrb r0, [r0] + movs r1, #0x10 + str r1, [sp] + adds r1, r2, r6 + ldrb r1, [r1] + str r1, [sp, #4] + ldr r3, _080CF940 + adds r2, r2, r3 + str r2, [sp, #8] + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08198850 + ldr r1, [r5] + adds r4, r1, r4 + ldrb r0, [r4] + adds r1, r1, r6 + ldrb r1, [r1] + str r1, [sp] + mov r1, sb + str r1, [sp, #4] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984F0 + movs r0, #0 + bl sub_08199654 + ldr r0, [r5] + ldr r2, _080CF944 + adds r0, r0, r2 + mov r3, r8 + strb r3, [r0] + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080CF928: .4byte gUnknown_20399A8 +_080CF92C: .4byte 0x00000CAD +_080CF930: .4byte 0x00000CAC +_080CF934: .4byte 0x00000C6D +_080CF938: .4byte 0x00000C6E +_080CF93C: .4byte 0x00000C6C +_080CF940: .4byte 0x00000C74 +_080CF944: .4byte 0x00000CAE + thumb_func_end sub_080CF84C + + thumb_func_start sub_080CF948 +sub_080CF948: @ 0x080CF948 + movs r0, #0 + bx lr + thumb_func_end sub_080CF948 + + thumb_func_start sub_080CF94C +sub_080CF94C: @ 0x080CF94C + push {r4, r5, lr} + movs r5, #2 + rsbs r5, r5, #0 + ldr r4, _080CF988 + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080CF9A2 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080CF96E + movs r0, #5 + bl sub_080A306C + adds r5, #1 +_080CF96E: + ldrh r1, [r4, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080CF98C + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + bl sub_081985E8 + b _080CF9AA + .align 2, 0 +_080CF988: .4byte gUnknown_3002360 +_080CF98C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080CF9AA + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_081985E8 + b _080CF9AA +_080CF9A2: + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080CF9AA: + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _080CF9B6 + bl sub_080CF9DC +_080CF9B6: + cmp r5, #0 + blt _080CF9C8 + ldr r0, _080CF9D4 + ldr r0, [r0] + lsls r1, r5, #3 + ldr r2, _080CF9D8 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r5, [r0] +_080CF9C8: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080CF9D4: .4byte gUnknown_20399A8 +_080CF9D8: .4byte 0x00000C78 + thumb_func_end sub_080CF94C + + thumb_func_start sub_080CF9DC +sub_080CF9DC: @ 0x080CF9DC + push {r4, r5, lr} + ldr r5, _080CFA00 + ldr r0, [r5] + movs r4, #0xcb + lsls r4, r4, #4 + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #1 + bl sub_08198134 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_08003444 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080CFA00: .4byte gUnknown_20399A8 + thumb_func_end sub_080CF9DC + + thumb_func_start sub_080CFA04 +sub_080CFA04: @ 0x080CFA04 + push {r4, lr} + ldr r4, _080CFA40 + ldr r0, _080CFA44 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + beq _080CFA50 + ldr r0, _080CFA48 + bl sub_08004130 + adds r1, r0, #0 + ldr r0, _080CFA4C + ldr r0, [r0] + movs r2, #0x88 + lsls r2, r2, #6 + adds r0, r0, r2 + strh r1, [r0] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + beq _080CFA50 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + b _080CFA52 + .align 2, 0 +_080CFA40: .4byte gUnknown_2039A20 +_080CFA44: .4byte 0x00000974 +_080CFA48: .4byte gUnknown_8556618 +_080CFA4C: .4byte gUnknown_20399A8 +_080CFA50: + movs r0, #0 +_080CFA52: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080CFA04 + + thumb_func_start sub_080CFA58 +sub_080CFA58: @ 0x080CFA58 + push {lr} + ldr r0, _080CFA6C + ldr r0, [r0] + cmp r0, #0 + beq _080CFA66 + bl sub_08000BF0 +_080CFA66: + pop {r0} + bx r0 + .align 2, 0 +_080CFA6C: .4byte gUnknown_2039A20 + thumb_func_end sub_080CFA58 + + thumb_func_start sub_080CFA70 +sub_080CFA70: @ 0x080CFA70 + ldr r2, _080CFA80 + ldr r1, [r2] + movs r3, #0 + strb r0, [r1] + ldr r0, [r2] + strb r3, [r0, #1] + bx lr + .align 2, 0 +_080CFA80: .4byte gUnknown_2039A20 + thumb_func_end sub_080CFA70 + + thumb_func_start sub_080CFA84 +sub_080CFA84: @ 0x080CFA84 + push {lr} + ldr r0, _080CFA9C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #5 + bhi _080CFAE4 + lsls r0, r0, #2 + ldr r1, _080CFAA0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080CFA9C: .4byte gUnknown_2039A20 +_080CFAA0: .4byte _080CFAA4 +_080CFAA4: @ jump table + .4byte _080CFABC @ case 0 + .4byte _080CFAC2 @ case 1 + .4byte _080CFAC8 @ case 2 + .4byte _080CFACE @ case 3 + .4byte _080CFAD4 @ case 4 + .4byte _080CFADA @ case 5 +_080CFABC: + bl sub_080CFAEC + b _080CFADE +_080CFAC2: + bl sub_080CFBE4 + b _080CFADE +_080CFAC8: + bl sub_080CFC50 + b _080CFADE +_080CFACE: + bl sub_080CFCC0 + b _080CFADE +_080CFAD4: + bl sub_080CFD40 + b _080CFADE +_080CFADA: + bl sub_080CFD68 +_080CFADE: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080CFAE6 +_080CFAE4: + movs r0, #0 +_080CFAE6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CFA84 + + thumb_func_start sub_080CFAEC +sub_080CFAEC: @ 0x080CFAEC + push {r4, r5, r6, lr} + sub sp, #8 + ldr r6, _080CFB04 + ldr r1, [r6] + ldrb r0, [r1, #1] + cmp r0, #1 + beq _080CFB1C + cmp r0, #1 + bgt _080CFB08 + cmp r0, #0 + beq _080CFB0E + b _080CFBD8 + .align 2, 0 +_080CFB04: .4byte gUnknown_2039A20 +_080CFB08: + cmp r0, #2 + beq _080CFBC4 + b _080CFBD8 +_080CFB0E: + movs r0, #0 + bl sub_08001B5C + movs r0, #0x80 + bl sub_080D28EC + b _080CFBAE +_080CFB1C: + adds r0, r1, #2 + adds r1, #3 + bl sub_080CF690 + ldr r1, [r6] + ldrb r0, [r1, #2] + strb r0, [r1, #4] + ldr r1, [r6] + ldrb r0, [r1, #3] + strb r0, [r1, #5] + ldr r4, _080CFBB8 + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + ldr r5, _080CFBBC + ldr r0, [r5] + movs r4, #0x88 + lsls r4, r4, #6 + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + bl sub_08004238 + ldr r1, [r6] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_080D0050 + movs r0, #0 + movs r1, #4 + movs r2, #1 + bl sub_08001B70 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #3 + bl sub_080043D0 + movs r0, #0xfc + lsls r0, r0, #6 + ldr r2, _080CFBC0 + movs r1, #8 + bl sub_080A22E8 + movs r0, #2 + bl sub_080CF6D0 + movs r0, #8 + movs r1, #0x80 + bl sub_08001200 +_080CFBAE: + ldr r1, [r6] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _080CFBD8 + .align 2, 0 +_080CFBB8: .4byte 0xFFFFFC00 +_080CFBBC: .4byte gUnknown_20399A8 +_080CFBC0: .4byte 0x00007FFF +_080CFBC4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFBD8 + movs r0, #0 + bl sub_08001B48 + movs r0, #0 + b _080CFBDA +_080CFBD8: + movs r0, #1 +_080CFBDA: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CFAEC + + thumb_func_start sub_080CFBE4 +sub_080CFBE4: @ 0x080CFBE4 + push {r4, lr} + ldr r4, _080CFBFC + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #1 + beq _080CFC0E + cmp r0, #1 + bgt _080CFC00 + cmp r0, #0 + beq _080CFC06 + b _080CFC48 + .align 2, 0 +_080CFBFC: .4byte gUnknown_2039A20 +_080CFC00: + cmp r0, #2 + beq _080CFC22 + b _080CFC48 +_080CFC06: + movs r0, #0 + bl sub_08001B5C + b _080CFC18 +_080CFC0E: + bl sub_080D03FC + movs r0, #0 + bl sub_080CF6D0 +_080CFC18: + ldr r1, [r4] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _080CFC48 +_080CFC22: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFC48 + bl sub_080CF700 + movs r0, #3 + bl sub_080985A0 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + bl sub_08001B48 + movs r0, #0 + b _080CFC4A +_080CFC48: + movs r0, #1 +_080CFC4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080CFBE4 + + thumb_func_start sub_080CFC50 +sub_080CFC50: @ 0x080CFC50 + push {r4, lr} + ldr r4, _080CFC64 + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #0 + beq _080CFC68 + cmp r0, #1 + beq _080CFCAC + b _080CFCB6 + .align 2, 0 +_080CFC64: .4byte gUnknown_2039A20 +_080CFC68: + bl sub_080CCDD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFCB6 + ldr r1, [r4] + adds r0, r1, #6 + adds r1, #7 + bl sub_080CF690 + bl sub_080CFECC + ldr r1, [r4] + ldrb r0, [r1, #6] + strb r0, [r1, #4] + ldr r1, [r4] + ldrb r0, [r1, #7] + strb r0, [r1, #5] + ldr r0, _080CFCA8 + ldr r0, [r0] + movs r1, #0x88 + lsls r1, r1, #6 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_080043D0 + ldr r1, [r4] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _080CFCB6 + .align 2, 0 +_080CFCA8: .4byte gUnknown_20399A8 +_080CFCAC: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080CFCB8 +_080CFCB6: + movs r0, #1 +_080CFCB8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CFC50 + + thumb_func_start sub_080CFCC0 +sub_080CFCC0: @ 0x080CFCC0 + push {r4, lr} + ldr r4, _080CFCD8 + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #1 + beq _080CFCEE + cmp r0, #1 + bgt _080CFCDC + cmp r0, #0 + beq _080CFCE2 + b _080CFD38 + .align 2, 0 +_080CFCD8: .4byte gUnknown_2039A20 +_080CFCDC: + cmp r0, #2 + beq _080CFD1A + b _080CFD38 +_080CFCE2: + bl sub_080D016C + bl sub_080D0244 + movs r0, #0 + b _080CFD0C +_080CFCEE: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFD38 + movs r0, #3 + bl sub_080CF6D0 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #0 + movs r2, #8 + bl sub_080D0124 + movs r0, #1 +_080CFD0C: + bl sub_080CD4E0 + ldr r1, [r4] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _080CFD38 +_080CFD1A: + bl sub_080D0134 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080CD528 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #0 + bne _080CFD38 + cmp r0, #0 + bne _080CFD38 + movs r0, #0 + b _080CFD3A +_080CFD38: + movs r0, #1 +_080CFD3A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080CFCC0 + + thumb_func_start sub_080CFD40 +sub_080CFD40: @ 0x080CFD40 + push {r4, lr} + bl sub_080CCDD0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080D0134 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #0 + bne _080CFD60 + cmp r0, #0 + bne _080CFD60 + movs r0, #0 + b _080CFD62 +_080CFD60: + movs r0, #1 +_080CFD62: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080CFD40 + + thumb_func_start sub_080CFD68 +sub_080CFD68: @ 0x080CFD68 + push {r4, lr} + ldr r4, _080CFD80 + ldr r0, [r4] + ldrb r0, [r0, #1] + cmp r0, #1 + beq _080CFDA6 + cmp r0, #1 + bgt _080CFD84 + cmp r0, #0 + beq _080CFD8E + b _080CFE16 + .align 2, 0 +_080CFD80: .4byte gUnknown_2039A20 +_080CFD84: + cmp r0, #2 + beq _080CFDD2 + cmp r0, #3 + beq _080CFDF0 + b _080CFE16 +_080CFD8E: + bl sub_080D034C + movs r1, #0xff + lsls r1, r1, #8 + movs r0, #0 + movs r2, #8 + bl sub_080D0124 + movs r0, #0 + bl sub_080CD4E0 + b _080CFDE6 +_080CFDA6: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFE16 + bl sub_080D0134 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFE16 + bl sub_080D02BC + movs r0, #2 + bl sub_080CF6D0 + movs r0, #1 + bl sub_080CD4E0 + movs r0, #0 + bl sub_08001B5C + b _080CFDE6 +_080CFDD2: + bl sub_080CD528 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFE16 + movs r0, #0 + bl sub_080CF6D0 + bl sub_080D03FC +_080CFDE6: + ldr r1, [r4] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + b _080CFE16 +_080CFDF0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080CFE16 + movs r0, #3 + bl sub_080985A0 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + bl sub_080CF700 + movs r0, #0 + bl sub_08001B48 + movs r0, #0 + b _080CFE18 +_080CFE16: + movs r0, #1 +_080CFE18: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CFD68 + + thumb_func_start sub_080CFE20 +sub_080CFE20: @ 0x080CFE20 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _080CFE5C + cmp r0, #1 + bgt _080CFE36 + cmp r0, #0 + beq _080CFE40 + b _080CFEC4 +_080CFE36: + cmp r1, #2 + beq _080CFE7C + cmp r1, #3 + beq _080CFE9C + b _080CFEC4 +_080CFE40: + ldr r0, _080CFE58 + ldr r1, [r0] + ldrb r0, [r1, #9] + cmp r0, #0 + beq _080CFEAA + subs r0, #1 + strb r0, [r1, #9] + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + b _080CFE90 + .align 2, 0 +_080CFE58: .4byte gUnknown_2039A20 +_080CFE5C: + ldr r0, _080CFE78 + ldr r1, [r0] + ldrb r2, [r1, #9] + ldrb r0, [r1, #0xb] + adds r0, r2, r0 + cmp r0, #4 + bgt _080CFEAA + adds r0, r2, #1 + strb r0, [r1, #9] + movs r1, #0xfc + lsls r1, r1, #8 + movs r0, #0 + b _080CFE90 + .align 2, 0 +_080CFE78: .4byte gUnknown_2039A20 +_080CFE7C: + ldr r0, _080CFE98 + ldr r1, [r0] + ldrb r0, [r1, #8] + cmp r0, #0 + beq _080CFEAA + subs r0, #1 + strb r0, [r1, #8] + movs r0, #0x80 + lsls r0, r0, #3 + movs r1, #0 +_080CFE90: + movs r2, #6 + bl sub_080D0124 + b _080CFEC4 + .align 2, 0 +_080CFE98: .4byte gUnknown_2039A20 +_080CFE9C: + ldr r0, _080CFEB0 + ldr r1, [r0] + ldrb r2, [r1, #8] + ldrb r0, [r1, #0xa] + adds r0, r2, r0 + cmp r0, #5 + ble _080CFEB4 +_080CFEAA: + movs r0, #0 + b _080CFEC6 + .align 2, 0 +_080CFEB0: .4byte gUnknown_2039A20 +_080CFEB4: + adds r0, r2, #1 + strb r0, [r1, #8] + movs r0, #0xfc + lsls r0, r0, #8 + movs r1, #0 + movs r2, #6 + bl sub_080D0124 +_080CFEC4: + movs r0, #1 +_080CFEC6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080CFE20 + + thumb_func_start sub_080CFECC +sub_080CFECC: @ 0x080CFECC + push {r4, r5, r6, r7, lr} + ldr r6, _080CFF6C + ldr r2, [r6] + ldrb r3, [r2, #2] + ldrb r5, [r2, #6] + subs r1, r3, r5 + cmp r1, #0 + bge _080CFEDE + rsbs r1, r1, #0 +_080CFEDE: + ldrb r0, [r2, #4] + subs r0, r3, r0 + cmp r0, #0 + bge _080CFEE8 + rsbs r0, r0, #0 +_080CFEE8: + subs r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r1, [r2, #3] + ldrb r0, [r2, #7] + subs r3, r1, r0 + cmp r3, #0 + bge _080CFEFA + rsbs r3, r3, #0 +_080CFEFA: + ldrb r2, [r2, #5] + subs r0, r1, r2 + cmp r0, #0 + bge _080CFF04 + rsbs r0, r0, #0 +_080CFF04: + subs r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + ble _080CFF18 + adds r0, r5, #0 + bl sub_080CFF70 +_080CFF18: + cmp r4, #0 + bge _080CFF34 + ldr r2, [r6] + ldrb r0, [r2, #4] + ldrb r1, [r2, #3] + ldrb r2, [r2, #5] + bl sub_080CFFE0 + ldr r2, [r6] + ldrb r0, [r2, #6] + ldrb r1, [r2, #3] + ldrb r2, [r2, #5] + bl sub_080CFF70 +_080CFF34: + lsls r0, r7, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + ble _080CFF48 + ldr r2, [r6] + ldrb r0, [r2, #7] + ldrb r1, [r2, #2] + ldrb r2, [r2, #4] + bl sub_080CFFA8 +_080CFF48: + cmp r4, #0 + bge _080CFF64 + ldr r2, [r6] + ldrb r0, [r2, #5] + ldrb r1, [r2, #2] + ldrb r2, [r2, #4] + bl sub_080D0018 + ldr r2, [r6] + ldrb r0, [r2, #7] + ldrb r1, [r2, #2] + ldrb r2, [r2, #4] + bl sub_080CFFA8 +_080CFF64: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080CFF6C: .4byte gUnknown_2039A20 + thumb_func_end sub_080CFECC + + thumb_func_start sub_080CFF70 +sub_080CFF70: @ 0x080CFF70 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r4, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r5, #0 + cmp r4, r5 + bls _080CFF8E + adds r4, r5, #0 + adds r5, r1, #0 + cmp r0, r5 + bhi _080CFFA0 +_080CFF8E: + adds r1, r4, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + bl sub_080D0050 + cmp r4, r5 + bls _080CFF8E +_080CFFA0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CFF70 + + thumb_func_start sub_080CFFA8 +sub_080CFFA8: @ 0x080CFFA8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r4, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r5, #0 + cmp r4, r5 + bls _080CFFC6 + adds r4, r5, #0 + adds r5, r1, #0 + cmp r0, r5 + bhi _080CFFD8 +_080CFFC6: + adds r0, r4, #0 + adds r1, r0, #1 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r6, #0 + bl sub_080D0050 + cmp r4, r5 + bls _080CFFC6 +_080CFFD8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CFFA8 + + thumb_func_start sub_080CFFE0 +sub_080CFFE0: @ 0x080CFFE0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r4, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r5, #0 + cmp r4, r5 + bls _080CFFFE + adds r4, r5, #0 + adds r5, r1, #0 + cmp r0, r5 + bhi _080D0010 +_080CFFFE: + adds r1, r4, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + bl sub_080D00D4 + cmp r4, r5 + bls _080CFFFE +_080D0010: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080CFFE0 + + thumb_func_start sub_080D0018 +sub_080D0018: @ 0x080D0018 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r4, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r5, #0 + cmp r4, r5 + bls _080D0036 + adds r4, r5, #0 + adds r5, r1, #0 + cmp r0, r5 + bhi _080D0048 +_080D0036: + adds r0, r4, #0 + adds r1, r0, #1 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r1, r6, #0 + bl sub_080D00D4 + cmp r4, r5 + bls _080D0036 +_080D0048: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D0018 + + thumb_func_start sub_080D0050 +sub_080D0050: @ 0x080D0050 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r7, r0, r1 + lsls r4, r7, #1 + adds r4, r6, r4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_080D1658 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_080D1658 + adds r1, r0, #0 + cmp r5, #0 + beq _080D00C8 + adds r0, r5, #0 + movs r2, #1 + bl sub_080D277C + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_080D2920 + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080D00D0 + ldr r1, [r1] + movs r2, #0x88 + lsls r2, r2, #6 + adds r1, r1, r2 + ldrb r3, [r1] + movs r2, #0x20 + str r2, [sp] + str r2, [sp, #4] + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #3 + str r1, [sp, #8] + 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_08004304 +_080D00C8: + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D00D0: .4byte gUnknown_20399A8 + thumb_func_end sub_080D0050 + + thumb_func_start sub_080D00D4 +sub_080D00D4: @ 0x080D00D4 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r5, r0, r1 + lsls r0, r5, #1 + adds r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x41 + bl sub_080D1658 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080D0118 + ldr r0, _080D0120 + ldr r0, [r0] + movs r1, #0x88 + lsls r1, r1, #6 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #3 + lsls r3, r5, #3 + movs r1, #0x20 + str r1, [sp] + str r1, [sp, #4] + movs r1, #0 + bl sub_08004278 +_080D0118: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0120: .4byte gUnknown_20399A8 + thumb_func_end sub_080D00D4 + + thumb_func_start sub_080D0124 +sub_080D0124: @ 0x080D0124 + ldr r3, _080D0130 + ldr r3, [r3] + strh r0, [r3, #0xc] + strh r1, [r3, #0xe] + strh r2, [r3, #0x10] + bx lr + .align 2, 0 +_080D0130: .4byte gUnknown_2039A20 + thumb_func_end sub_080D0124 + + thumb_func_start sub_080D0134 +sub_080D0134: @ 0x080D0134 + push {r4, lr} + ldr r4, _080D0168 + ldr r1, [r4] + ldrh r0, [r1, #0x10] + cmp r0, #0 + beq _080D015E + ldrh r1, [r1, #0xc] + movs r0, #0 + movs r2, #1 + bl sub_08001D1C + ldr r0, [r4] + ldrh r1, [r0, #0xe] + movs r0, #0 + movs r2, #1 + bl sub_08001E94 + ldr r1, [r4] + ldrh r0, [r1, #0x10] + subs r0, #1 + strh r0, [r1, #0x10] +_080D015E: + ldr r0, [r4] + ldrb r0, [r0, #0x10] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D0168: .4byte gUnknown_2039A20 + thumb_func_end sub_080D0134 + + thumb_func_start sub_080D016C +sub_080D016C: @ 0x080D016C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, _080D0240 + ldr r1, [r4] + ldrb r0, [r1, #4] + ldrb r2, [r1, #2] + cmp r0, r2 + bls _080D0184 + adds r0, r2, #0 +_080D0184: + strb r0, [r1, #8] + ldr r1, [r4] + ldrb r0, [r1, #5] + ldrb r2, [r1, #3] + cmp r0, r2 + bls _080D0192 + adds r0, r2, #0 +_080D0192: + strb r0, [r1, #9] + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #4] + subs r0, r1, r0 + cmp r0, #0 + bge _080D01A2 + rsbs r0, r0, #0 +_080D01A2: + adds r0, #1 + strb r0, [r2, #0xa] + ldr r2, [r4] + ldrb r1, [r2, #3] + ldrb r0, [r2, #5] + subs r0, r1, r0 + cmp r0, #0 + bge _080D01B4 + rsbs r0, r0, #0 +_080D01B4: + adds r0, #1 + strb r0, [r2, #0xb] + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r6, #0 + ldr r0, [r4] + ldrb r2, [r0, #8] + ldrb r1, [r0, #0xa] + adds r2, r2, r1 + mov r8, r2 + ldrb r1, [r0, #9] + ldrb r0, [r0, #0xb] + adds r0, r0, r1 + mov sb, r0 + adds r2, r1, #0 + cmp r2, sb + bge _080D0230 +_080D01DC: + lsls r0, r2, #1 + adds r0, r0, r2 + ldr r3, _080D0240 + ldr r1, [r3] + lsls r0, r0, #1 + ldrb r3, [r1, #8] + adds r0, r0, r3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r4, [r1, #8] + adds r7, r2, #1 + cmp r4, r8 + bge _080D022A + mov r0, r8 + subs r4, r0, r4 +_080D01FA: + mov r0, sl + adds r1, r5, #0 + bl sub_080D1934 + adds r1, r0, #0 + ldr r2, _080D0240 + ldr r0, [r2] + lsls r2, r6, #2 + adds r2, r2, r6 + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, #0x14 + movs r2, #0x50 + bl memcpy + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + subs r4, #1 + cmp r4, #0 + bne _080D01FA +_080D022A: + adds r2, r7, #0 + cmp r2, sb + blt _080D01DC +_080D0230: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0240: .4byte gUnknown_2039A20 + thumb_func_end sub_080D016C + + thumb_func_start sub_080D0244 +sub_080D0244: @ 0x080D0244 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _080D02B8 + ldr r0, [r4] + ldrb r2, [r0, #8] + ldrb r1, [r0, #0xa] + adds r7, r2, r1 + ldrb r1, [r0, #9] + ldrb r0, [r0, #0xb] + adds r1, r1, r0 + mov sb, r1 + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, [r4] + ldrb r2, [r0, #9] + cmp r2, sb + bge _080D02AC +_080D0270: + lsls r0, r2, #1 + adds r0, r0, r2 + ldr r1, _080D02B8 + ldr r1, [r1] + lsls r0, r0, #1 + ldrb r3, [r1, #8] + adds r0, r0, r3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r4, [r1, #8] + adds r6, r2, #1 + cmp r4, r7 + bge _080D02A6 + subs r4, r7, r4 +_080D028C: + adds r0, r5, #0 + bl sub_080CAFEC + mov r0, r8 + adds r1, r5, #0 + bl sub_080D18B8 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + subs r4, #1 + cmp r4, #0 + bne _080D028C +_080D02A6: + adds r2, r6, #0 + cmp r2, sb + blt _080D0270 +_080D02AC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D02B8: .4byte gUnknown_2039A20 + thumb_func_end sub_080D0244 + + thumb_func_start sub_080D02BC +sub_080D02BC: @ 0x080D02BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080D0348 + ldr r0, [r0] + ldrb r2, [r0, #8] + ldrb r1, [r0, #0xa] + adds r2, r2, r1 + mov r8, r2 + ldrb r1, [r0, #9] + ldrb r0, [r0, #0xb] + adds r0, r0, r1 + mov sl, r0 + movs r6, #0 + adds r2, r1, #0 + cmp r2, sl + bge _080D0338 +_080D02E2: + lsls r0, r2, #1 + adds r0, r0, r2 + ldr r3, _080D0348 + ldr r1, [r3] + lsls r0, r0, #1 + ldrb r4, [r1, #8] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r4, [r1, #8] + adds r7, r2, #1 + cmp r4, r8 + bge _080D0332 + mov sb, r3 + mov r0, r8 + subs r4, r0, r4 +_080D0302: + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #4 + adds r1, #0x14 + mov r2, sb + ldr r0, [r2] + adds r0, r0, r1 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D0320 + adds r0, r5, #0 + bl sub_080CA9B4 +_080D0320: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + subs r4, #1 + cmp r4, #0 + bne _080D0302 +_080D0332: + adds r2, r7, #0 + cmp r2, sl + blt _080D02E2 +_080D0338: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0348: .4byte gUnknown_2039A20 + thumb_func_end sub_080D02BC + + thumb_func_start sub_080D034C +sub_080D034C: @ 0x080D034C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r4, _080D03F8 + ldr r0, [r4] + ldrb r2, [r0, #8] + ldrb r1, [r0, #0xa] + adds r2, r2, r1 + mov sl, r2 + ldrb r1, [r0, #9] + ldrb r0, [r0, #0xb] + adds r1, r1, r0 + str r1, [sp] + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r7, #0 + ldr r0, [r4] + ldrb r3, [r0, #9] + ldr r0, [sp] + cmp r3, r0 + bge _080D03E6 +_080D0382: + lsls r0, r3, #1 + adds r0, r0, r3 + ldr r2, _080D03F8 + ldr r1, [r2] + lsls r0, r0, #1 + ldrb r4, [r1, #8] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r5, [r1, #8] + adds r3, #1 + mov sb, r3 + cmp r5, sl + bge _080D03DE + mov r8, r2 + mov r0, sl + subs r5, r0, r5 +_080D03A4: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #4 + adds r4, r0, #0 + adds r4, #0x14 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D03CC + mov r0, r8 + ldr r2, [r0] + adds r2, r2, r4 + ldr r0, [sp, #4] + adds r1, r6, #0 + bl sub_080D17B8 +_080D03CC: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + subs r5, #1 + cmp r5, #0 + bne _080D03A4 +_080D03DE: + mov r3, sb + ldr r1, [sp] + cmp r3, r1 + blt _080D0382 +_080D03E6: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D03F8: .4byte gUnknown_2039A20 + thumb_func_end sub_080D034C + + thumb_func_start sub_080D03FC +sub_080D03FC: @ 0x080D03FC + push {lr} + sub sp, #8 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0 + movs r1, #4 + movs r2, #0 + bl sub_08001B70 + movs r0, #8 + movs r1, #0x80 + bl sub_08001220 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_080D03FC + + thumb_func_start sub_080D0444 +sub_080D0444: @ 0x080D0444 + ldr r0, _080D045C + ldr r2, [r0] + ldrb r1, [r2, #3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldrb r2, [r2, #2] + adds r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_080D045C: .4byte gUnknown_2039A20 + thumb_func_end sub_080D0444 + + thumb_func_start sub_080D0460 +sub_080D0460: @ 0x080D0460 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _080D04CC + ldr r0, [r0] + ldrb r2, [r0, #8] + ldrb r1, [r0, #0xa] + adds r2, r2, r1 + mov sb, r2 + ldrb r1, [r0, #9] + ldrb r0, [r0, #0xb] + adds r0, r1, r0 + str r0, [sp] + movs r7, #0 + adds r6, r1, #0 + cmp r6, r0 + bge _080D04EE + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #1 + mov r8, r0 +_080D0490: + ldr r2, _080D04CC + ldr r1, [r2] + ldrb r0, [r1, #8] + add r0, r8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r4, [r1, #8] + cmp r4, sb + bge _080D04E2 + mov sl, r2 +_080D04A4: + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #4 + adds r1, #0x14 + mov r2, sl + ldr r0, [r2] + adds r0, r0, r1 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D04D0 + adds r0, r5, #0 + movs r1, #5 + bl sub_080D1658 + cmp r0, #0 + beq _080D04D0 + movs r0, #0 + b _080D04F0 + .align 2, 0 +_080D04CC: .4byte gUnknown_2039A20 +_080D04D0: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #1 + cmp r4, sb + blt _080D04A4 +_080D04E2: + movs r0, #6 + add r8, r0 + adds r6, #1 + ldr r2, [sp] + cmp r6, r2 + blt _080D0490 +_080D04EE: + movs r0, #1 +_080D04F0: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080D0460 + + thumb_func_start sub_080D0500 +sub_080D0500: @ 0x080D0500 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r3, _080D05FC + ldr r0, [r3] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D05DE + ldr r0, _080D0600 + str r0, [sp, #0x18] + ldr r1, _080D0604 + add r2, sp, #0x18 + ldr r0, [r2, #4] + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + str r0, [r2, #4] + mov r1, sp + ldr r0, _080D0608 + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + movs r7, #0 + mov sb, r2 + mov r8, r3 + movs r0, #0 + mov sl, r0 +_080D0540: + adds r6, r7, #7 + lsls r1, r6, #0x10 + mov r2, sb + ldrh r0, [r2, #4] + orrs r0, r1 + str r0, [r2, #4] + mov r0, sb + bl sub_08034388 + mov r4, sb + ldrh r0, [r4, #6] + bl sub_08008338 + mov r5, r8 + ldr r1, [r5] + lsls r5, r7, #4 + ldr r2, _080D060C + adds r1, r1, r2 + adds r1, r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r4, _080D0610 + adds r0, r0, r4 + str r0, [r1] + ldr r0, _080D0614 + adds r4, r7, r0 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_080084EC + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D0618 + adds r1, r1, r2 + strh r0, [r1] + ldrh r0, [r1] + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r0, r2 + strh r0, [r1] + mov r0, sp + strh r6, [r0] + strh r4, [r0, #2] + movs r1, #0 + movs r2, #0 + movs r3, #0xb + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r4, r8 + ldr r2, [r4] + ldr r6, _080D061C + adds r2, r2, r6 + adds r2, r2, r5 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080D0620 + adds r1, r1, r0 + str r1, [r2] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r4] + adds r0, r0, r5 + ldr r1, _080D0624 + adds r0, r0, r1 + mov r2, sl + strb r2, [r0] + adds r7, #1 + cmp r7, #2 + ble _080D0540 +_080D05DE: + ldr r0, _080D05FC + ldr r0, [r0] + ldr r4, _080D0628 + adds r0, r0, r4 + movs r1, #0 + strh r1, [r0] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D05FC: .4byte gUnknown_20399A8 +_080D0600: .4byte gUnknown_3000F78 +_080D0604: .4byte 0xFFFF0000 +_080D0608: .4byte gUnknown_855676C +_080D060C: .4byte 0x00002208 +_080D0610: .4byte 0x06010000 +_080D0614: .4byte 0xFFFFDACB +_080D0618: .4byte 0x0000220C +_080D061C: .4byte 0x00002204 +_080D0620: .4byte gUnknown_20205AC +_080D0624: .4byte 0x00002210 +_080D0628: .4byte 0x00002234 + thumb_func_end sub_080D0500 + + thumb_func_start sub_080D062C +sub_080D062C: @ 0x080D062C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r0, _080D0660 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D06E2 + mov r0, r8 + adds r1, r7, #0 + bl sub_080D0BC4 + cmp r0, #0 + bne _080D06E2 + mov r0, r8 + cmp r0, #0 + beq _080D0664 + cmp r0, #1 + beq _080D067A + b _080D06E2 + .align 2, 0 +_080D0660: .4byte gUnknown_20399A8 +_080D0664: + adds r0, r7, #0 + movs r1, #5 + bl sub_080D1658 + cmp r0, #0 + beq _080D06E2 + adds r0, r7, #0 + movs r1, #0xc + bl sub_080D1658 + b _080D069C +_080D067A: + cmp r7, #5 + bhi _080D06E2 + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _080D06EC + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _080D06E2 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 +_080D069C: + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080D06E2 + adds r0, r4, #0 + bl sub_080D1034 + adds r6, r0, #0 + adds r0, r4, #0 + bl sub_080D1044 + adds r5, r0, #0 + bl sub_080D0B88 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + mov r1, r8 + adds r2, r7, #0 + bl sub_080D0CAC + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080D0DC4 + adds r0, r4, #0 + movs r1, #1 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #1 + bl sub_080D0FE0 +_080D06E2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D06EC: .4byte gUnknown_2024190 + thumb_func_end sub_080D062C + + thumb_func_start sub_080D06F0 +sub_080D06F0: @ 0x080D06F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _080D072C + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D0726 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080D0C10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #2 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_080D0EA4 +_080D0726: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D072C: .4byte gUnknown_20399A8 + thumb_func_end sub_080D06F0 + + thumb_func_start sub_080D0730 +sub_080D0730: @ 0x080D0730 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r7, r5, #0 + ldr r0, _080D0794 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D07C0 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080D0C10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + mov r0, sp + strh r1, [r0] + adds r0, r4, #0 + movs r1, #3 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #1 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_080D0EA4 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_080D0CAC + cmp r6, #0 + bne _080D0798 + adds r0, r5, #0 + movs r1, #0xc + mov r2, sp + bl sub_080D1678 + adds r0, r5, #0 + movs r1, #1 + bl sub_080CB020 + b _080D07B0 + .align 2, 0 +_080D0794: .4byte gUnknown_20399A8 +_080D0798: + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _080D07C8 + adds r0, r0, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #1 + bl sub_080CB450 +_080D07B0: + ldr r0, _080D07CC + ldr r0, [r0] + ldr r2, _080D07D0 + adds r1, r0, r2 + ldrh r1, [r1] + ldr r2, _080D07D4 + adds r0, r0, r2 + strh r1, [r0] +_080D07C0: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D07C8: .4byte gUnknown_2024190 +_080D07CC: .4byte gUnknown_20399A8 +_080D07D0: .4byte 0x00000CE6 +_080D07D4: .4byte 0x00002234 + thumb_func_end sub_080D0730 + + thumb_func_start sub_080D07D8 +sub_080D07D8: @ 0x080D07D8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r5, #0 + bl sub_080D1034 + mov r8, r0 + adds r0, r5, #0 + bl sub_080D1044 + adds r6, r0, #0 + bl sub_080D0B88 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + mov r1, r8 + adds r2, r6, #0 + bl sub_080D0DC4 + adds r0, r4, #0 + movs r1, #6 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080D0EA4 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_080D0CAC + adds r0, r4, #0 + movs r1, #1 + bl sub_080D0FE0 + ldr r0, _080D0844 + ldr r0, [r0] + ldr r1, _080D0848 + adds r0, r0, r1 + strh r5, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D0844: .4byte gUnknown_20399A8 +_080D0848: .4byte 0x00002234 + thumb_func_end sub_080D07D8 + + thumb_func_start sub_080D084C +sub_080D084C: @ 0x080D084C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r0, _080D08B4 + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D090A + mov r0, sb + adds r1, r7, #0 + bl sub_080D0C10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + movs r1, #3 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #3 + movs r2, #2 + movs r3, #0 + bl sub_080D0EA4 + mov r1, sb + cmp r1, #0 + bne _080D08BC + adds r0, r7, #0 + movs r1, #0xc + bl sub_080D1658 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, r8 + ldr r2, [r0] + ldr r4, _080D08B8 + adds r2, r2, r4 + adds r0, r7, #0 + movs r1, #0xc + bl sub_080D1678 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + b _080D08E8 + .align 2, 0 +_080D08B4: .4byte gUnknown_20399A8 +_080D08B8: .4byte 0x00002234 +_080D08BC: + movs r0, #0x64 + adds r4, r7, #0 + muls r4, r0, r4 + ldr r0, _080D0918 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, r8 + ldr r2, [r0] + ldr r5, _080D091C + adds r2, r2, r5 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r5 +_080D08E8: + strh r6, [r0] + movs r0, #2 + movs r1, #0 + bl sub_080D0C10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + movs r1, #4 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #4 + mov r2, sb + adds r3, r7, #0 + bl sub_080D0EA4 +_080D090A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0918: .4byte gUnknown_2024190 +_080D091C: .4byte 0x00002234 + thumb_func_end sub_080D084C + + thumb_func_start sub_080D0920 +sub_080D0920: @ 0x080D0920 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + mov r8, r5 + ldr r6, _080D0978 + ldr r0, [r6] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D09A0 + movs r0, #2 + movs r1, #0 + bl sub_080D0C10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #4 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #2 + adds r2, r7, #0 + adds r3, r5, #0 + bl sub_080D0EA4 + cmp r7, #0 + bne _080D0980 + ldr r2, [r6] + ldr r0, _080D097C + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_080D1678 + adds r0, r5, #0 + movs r1, #0 + bl sub_080CB020 + b _080D09A0 + .align 2, 0 +_080D0978: .4byte gUnknown_20399A8 +_080D097C: .4byte 0x00002234 +_080D0980: + movs r0, #0x64 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r1, _080D09AC + adds r0, r0, r1 + ldr r2, [r6] + ldr r1, _080D09B0 + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 + mov r0, r8 + movs r1, #0 + bl sub_080CB450 +_080D09A0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D09AC: .4byte gUnknown_2024190 +_080D09B0: .4byte 0x00002234 + thumb_func_end sub_080D0920 + + thumb_func_start sub_080D09B4 +sub_080D09B4: @ 0x080D09B4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r7, r5, #0 + ldr r0, _080D0A0C + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D0A28 + movs r1, #0 + mov r0, sp + strh r1, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080D0C10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #2 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_080D0EA4 + cmp r6, #0 + bne _080D0A10 + adds r0, r5, #0 + movs r1, #0xc + mov r2, sp + bl sub_080D1678 + adds r0, r5, #0 + movs r1, #1 + bl sub_080CB020 + b _080D0A28 + .align 2, 0 +_080D0A0C: .4byte gUnknown_20399A8 +_080D0A10: + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _080D0A30 + adds r0, r0, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #1 + bl sub_080CB450 +_080D0A28: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0A30: .4byte gUnknown_2024190 + thumb_func_end sub_080D09B4 + + thumb_func_start sub_080D0A34 +sub_080D0A34: @ 0x080D0A34 + push {r4, lr} + ldr r0, _080D0A68 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D0A62 + movs r0, #2 + movs r1, #0 + bl sub_080D0C10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #5 + bl sub_080D0E74 + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + movs r3, #0 + bl sub_080D0EA4 +_080D0A62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D0A68: .4byte gUnknown_20399A8 + thumb_func_end sub_080D0A34 + + thumb_func_start sub_080D0A6C +sub_080D0A6C: @ 0x080D0A6C + push {r4, lr} + ldr r0, _080D0AB0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #3 + bne _080D0AAA + movs r4, #0 +_080D0A7A: + ldr r0, _080D0AB0 + ldr r1, [r0] + lsls r0, r4, #4 + adds r1, r1, r0 + ldr r2, _080D0AB4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080D0AA4 + subs r2, #2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + bne _080D0AA4 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #7 + movs r2, #2 + movs r3, #0 + bl sub_080D0EA4 +_080D0AA4: + adds r4, #1 + cmp r4, #2 + ble _080D0A7A +_080D0AAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D0AB0: .4byte gUnknown_20399A8 +_080D0AB4: .4byte 0x00002210 + thumb_func_end sub_080D0A6C + + thumb_func_start sub_080D0AB8 +sub_080D0AB8: @ 0x080D0AB8 + push {r4, r5, lr} + movs r5, #0 + ldr r0, _080D0AF4 + ldr r0, [r0] + ldr r1, _080D0AF8 + adds r4, r0, r1 + adds r3, r0, #0 +_080D0AC6: + ldr r1, _080D0AFC + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080D0B08 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x28 + ands r0, r1 + cmp r0, #8 + beq _080D0AEE + ldr r1, [r2, #0x1c] + ldr r0, _080D0B00 + cmp r1, r0 + beq _080D0B08 + ldr r0, _080D0B04 + cmp r1, r0 + beq _080D0B08 +_080D0AEE: + movs r0, #1 + b _080D0B14 + .align 2, 0 +_080D0AF4: .4byte gUnknown_20399A8 +_080D0AF8: .4byte 0x00002204 +_080D0AFC: .4byte 0x00002210 +_080D0B00: .4byte sub_08007140 +_080D0B04: .4byte sub_080D1378 +_080D0B08: + adds r4, #0x10 + adds r3, #0x10 + adds r5, #1 + cmp r5, #2 + ble _080D0AC6 + movs r0, #0 +_080D0B14: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D0AB8 + + thumb_func_start sub_080D0B1C +sub_080D0B1C: @ 0x080D0B1C + push {lr} + ldr r0, _080D0B40 + ldr r1, [r0] + ldrb r0, [r1, #1] + cmp r0, #3 + bne _080D0B50 + movs r2, #0 + ldr r0, _080D0B44 + adds r1, r1, r0 +_080D0B2E: + ldrb r0, [r1, #2] + cmp r0, #0 + beq _080D0B48 + ldrb r0, [r1] + cmp r0, #2 + bne _080D0B48 + movs r0, #1 + b _080D0B52 + .align 2, 0 +_080D0B40: .4byte gUnknown_20399A8 +_080D0B44: .4byte 0x0000220E +_080D0B48: + adds r1, #0x10 + adds r2, #1 + cmp r2, #2 + ble _080D0B2E +_080D0B50: + movs r0, #0 +_080D0B52: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D0B1C + + thumb_func_start sub_080D0B58 +sub_080D0B58: @ 0x080D0B58 + push {lr} + ldr r0, _080D0B6C + ldr r0, [r0] + ldr r1, _080D0B70 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D6C8C + pop {r1} + bx r1 + .align 2, 0 +_080D0B6C: .4byte gUnknown_20399A8 +_080D0B70: .4byte 0x00002234 + thumb_func_end sub_080D0B58 + + thumb_func_start sub_080D0B74 +sub_080D0B74: @ 0x080D0B74 + ldr r0, _080D0B80 + ldr r0, [r0] + ldr r1, _080D0B84 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_080D0B80: .4byte gUnknown_20399A8 +_080D0B84: .4byte 0x00002234 + thumb_func_end sub_080D0B74 + + thumb_func_start sub_080D0B88 +sub_080D0B88: @ 0x080D0B88 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _080D0BA8 + ldr r3, _080D0BAC + movs r4, #1 +_080D0B92: + ldr r0, [r5] + lsls r1, r2, #4 + adds r0, r0, r1 + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, #0 + bne _080D0BB0 + strb r4, [r1] + adds r0, r2, #0 + b _080D0BBC + .align 2, 0 +_080D0BA8: .4byte gUnknown_20399A8 +_080D0BAC: .4byte 0x00002210 +_080D0BB0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _080D0B92 + movs r0, #3 +_080D0BBC: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D0B88 + + thumb_func_start sub_080D0BC4 +sub_080D0BC4: @ 0x080D0BC4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0 + ldr r0, _080D0BF8 + ldr r2, [r0] +_080D0BD4: + ldr r5, _080D0BFC + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + beq _080D0C00 + subs r5, #2 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r4 + bne _080D0C00 + adds r5, #1 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r1 + bne _080D0C00 + movs r0, #1 + b _080D0C0A + .align 2, 0 +_080D0BF8: .4byte gUnknown_20399A8 +_080D0BFC: .4byte 0x00002210 +_080D0C00: + adds r2, #0x10 + adds r3, #1 + cmp r3, #2 + ble _080D0BD4 + movs r0, #0 +_080D0C0A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080D0BC4 + + thumb_func_start sub_080D0C10 +sub_080D0C10: @ 0x080D0C10 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + ldr r0, _080D0C48 + ldr r1, [r0] +_080D0C20: + lsls r0, r3, #4 + adds r2, r1, r0 + ldr r6, _080D0C4C + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _080D0C50 + subs r6, #2 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, r5 + bne _080D0C50 + adds r6, #1 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, r4 + bne _080D0C50 + adds r0, r3, #0 + b _080D0C5C + .align 2, 0 +_080D0C48: .4byte gUnknown_20399A8 +_080D0C4C: .4byte 0x00002210 +_080D0C50: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _080D0C20 + movs r0, #3 +_080D0C5C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D0C10 + + thumb_func_start sub_080D0C64 +sub_080D0C64: @ 0x080D0C64 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r2, #0 + ldr r0, _080D0C8C + ldr r3, [r0] + ldr r0, _080D0C90 + adds r4, r3, r0 + ldr r6, _080D0C94 +_080D0C74: + lsls r1, r2, #4 + adds r0, r3, r1 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _080D0C98 + adds r0, r4, r1 + ldr r0, [r0] + cmp r0, r5 + bne _080D0C98 + adds r0, r2, #0 + b _080D0CA4 + .align 2, 0 +_080D0C8C: .4byte gUnknown_20399A8 +_080D0C90: .4byte 0x00002204 +_080D0C94: .4byte 0x00002210 +_080D0C98: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _080D0C74 + movs r0, #3 +_080D0CA4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D0C64 + + thumb_func_start sub_080D0CAC +sub_080D0CAC: @ 0x080D0CAC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + cmp r5, #2 + bhi _080D0DAA + cmp r1, #0 + beq _080D0CD8 + cmp r1, #1 + beq _080D0D34 + ldr r4, _080D0CD4 + lsls r3, r5, #4 + b _080D0D94 + .align 2, 0 +_080D0CD4: .4byte gUnknown_20399A8 +_080D0CD8: + adds r0, r7, #0 + movs r1, #6 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080D0D2C + ldr r2, [r6] + lsls r5, r5, #4 + ldr r1, _080D0D30 + adds r2, r2, r1 + adds r2, r2, r5 + ldr r3, [r2] + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, #0x70 + strh r1, [r3, #0x20] + ldr r3, [r2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, #0x38 + strh r1, [r3, #0x22] + ldr r2, [r2] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #5] + adds r4, r6, #0 + adds r3, r5, #0 + b _080D0D94 + .align 2, 0 +_080D0D2C: .4byte gUnknown_20399A8 +_080D0D30: .4byte 0x00002204 +_080D0D34: + cmp r7, #0 + bne _080D0D5C + ldr r4, _080D0D54 + ldr r0, [r4] + lsls r3, r5, #4 + ldr r1, _080D0D58 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r2, [r0] + movs r1, #0x74 + strh r1, [r2, #0x20] + ldr r1, [r0] + movs r0, #0x4c + strh r0, [r1, #0x22] + b _080D0D7C + .align 2, 0 +_080D0D54: .4byte gUnknown_20399A8 +_080D0D58: .4byte 0x00002204 +_080D0D5C: + ldr r4, _080D0DB4 + ldr r0, [r4] + lsls r3, r5, #4 + ldr r1, _080D0DB8 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r2, [r0] + movs r1, #0xa4 + strh r1, [r2, #0x20] + ldr r2, [r0] + subs r1, r7, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, #0x1c + strh r0, [r2, #0x22] +_080D0D7C: + ldr r0, [r4] + ldr r1, _080D0DB8 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r2, [r0] + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] +_080D0D94: + ldr r0, [r4] + adds r0, r0, r3 + ldr r1, _080D0DBC + adds r0, r0, r1 + mov r1, r8 + strb r1, [r0] + ldr r0, [r4] + adds r0, r0, r3 + ldr r1, _080D0DC0 + adds r0, r0, r1 + strb r7, [r0] +_080D0DAA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0DB4: .4byte gUnknown_20399A8 +_080D0DB8: .4byte 0x00002204 +_080D0DBC: .4byte 0x0000220E +_080D0DC0: .4byte 0x0000220F + thumb_func_end sub_080D0CAC + + thumb_func_start sub_080D0DC4 +sub_080D0DC4: @ 0x080D0DC4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + mov r8, r1 + mov sb, r2 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bhi _080D0E4C + movs r0, #0 + str r0, [sp] + ldr r4, _080D0E5C + ldr r1, [r4] + ldr r6, _080D0E60 + adds r1, r1, r6 + ldr r2, _080D0E64 + mov r0, sp + bl CpuFastSet + ldr r1, [r4] + ldr r5, _080D0E68 + adds r1, r1, r5 + mov r0, r8 + bl LZ77UnCompWram + lsls r7, r7, #4 + mov r8, r7 + adds r7, r4, #0 + movs r4, #2 +_080D0E02: + ldr r1, [r7] + adds r0, r1, r5 + adds r1, r1, r6 + movs r2, #0x18 + bl CpuFastSet + adds r6, #0x80 + adds r5, #0x60 + subs r4, #1 + cmp r4, #0 + bge _080D0E02 + ldr r5, _080D0E5C + ldr r1, [r5] + ldr r4, _080D0E60 + adds r0, r1, r4 + ldr r2, _080D0E6C + adds r1, r1, r2 + add r1, r8 + ldr r1, [r1] + movs r2, #0x80 + bl CpuFastSet + ldr r1, [r5] + adds r1, r1, r4 + mov r0, sb + bl LZ77UnCompWram + ldr r0, [r5] + adds r4, r0, r4 + add r0, r8 + ldr r1, _080D0E70 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 +_080D0E4C: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D0E5C: .4byte gUnknown_20399A8 +_080D0E60: .4byte 0x000042C4 +_080D0E64: .4byte 0x01000080 +_080D0E68: .4byte 0x000022C4 +_080D0E6C: .4byte 0x00002208 +_080D0E70: .4byte 0x0000220C + thumb_func_end sub_080D0DC4 + + thumb_func_start sub_080D0E74 +sub_080D0E74: @ 0x080D0E74 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + cmp r2, #2 + bhi _080D0E96 + ldr r0, _080D0E9C + ldr r0, [r0] + lsls r1, r2, #4 + ldr r2, _080D0EA0 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + adds r1, r3, #0 + bl sub_08007F70 +_080D0E96: + pop {r0} + bx r0 + .align 2, 0 +_080D0E9C: .4byte gUnknown_20399A8 +_080D0EA0: .4byte 0x00002204 + thumb_func_end sub_080D0E74 + + thumb_func_start sub_080D0EA4 +sub_080D0EA4: @ 0x080D0EA4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + cmp r4, #2 + bls _080D0EBC + b _080D0FCE +_080D0EBC: + cmp r0, #7 + bls _080D0EC2 + b _080D0FCE +_080D0EC2: + lsls r0, r0, #2 + ldr r1, _080D0ECC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D0ECC: .4byte _080D0ED0 +_080D0ED0: @ jump table + .4byte _080D0EF0 @ case 0 + .4byte _080D0F14 @ case 1 + .4byte _080D0F38 @ case 2 + .4byte _080D0F64 @ case 3 + .4byte _080D0F90 @ case 4 + .4byte _080D0FCE @ case 5 + .4byte _080D0FCE @ case 6 + .4byte _080D0FBC @ case 7 +_080D0EF0: + ldr r0, _080D0F08 + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0F0C + adds r0, r0, r2 + adds r0, r0, r1 + ldr r1, [r0] + strh r4, [r1, #0x2e] + ldr r1, [r0] + ldr r0, _080D0F10 + b _080D0FCC + .align 2, 0 +_080D0F08: .4byte gUnknown_20399A8 +_080D0F0C: .4byte 0x00002204 +_080D0F10: .4byte sub_080D12E8 +_080D0F14: + ldr r0, _080D0F2C + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0F30 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r2, [r0] + movs r1, #0 + strh r1, [r2, #0x2e] + ldr r1, [r0] + ldr r0, _080D0F34 + b _080D0FCC + .align 2, 0 +_080D0F2C: .4byte gUnknown_20399A8 +_080D0F30: .4byte 0x00002204 +_080D0F34: .4byte sub_080D1314 +_080D0F38: + ldr r0, _080D0F58 + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0F5C + adds r0, r0, r2 + adds r0, 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, _080D0F60 + b _080D0FCC + .align 2, 0 +_080D0F58: .4byte gUnknown_20399A8 +_080D0F5C: .4byte 0x00002204 +_080D0F60: .4byte sub_080D13B4 +_080D0F64: + ldr r0, _080D0F84 + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0F88 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r2, [r0] + movs r1, #0 + strh r1, [r2, #0x2e] + ldr r2, [r0] + ldr r1, _080D0F8C + str r1, [r2, #0x1c] + strh r5, [r2, #0x3a] + ldr r0, [r0] + strh r3, [r0, #0x3c] + b _080D0FCE + .align 2, 0 +_080D0F84: .4byte gUnknown_20399A8 +_080D0F88: .4byte 0x00002204 +_080D0F8C: .4byte sub_080D1434 +_080D0F90: + ldr r0, _080D0FB0 + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0FB4 + adds r0, r0, r2 + adds r0, 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, _080D0FB8 + b _080D0FCC + .align 2, 0 +_080D0FB0: .4byte gUnknown_20399A8 +_080D0FB4: .4byte 0x00002204 +_080D0FB8: .4byte sub_080D14D0 +_080D0FBC: + ldr r0, _080D0FD4 + ldr r0, [r0] + lsls r1, r4, #4 + ldr r2, _080D0FD8 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _080D0FDC +_080D0FCC: + str r0, [r1, #0x1c] +_080D0FCE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D0FD4: .4byte gUnknown_20399A8 +_080D0FD8: .4byte 0x00002204 +_080D0FDC: .4byte sub_080D156C + thumb_func_end sub_080D0EA4 + + thumb_func_start sub_080D0FE0 +sub_080D0FE0: @ 0x080D0FE0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r2, #2 + bhi _080D1020 + ldr r1, _080D1028 + ldr r0, [r1] + lsls r2, r2, #4 + adds r0, r0, r2 + ldr r3, _080D102C + adds r0, r0, r3 + strb r4, [r0] + ldr r0, [r1] + ldr r1, _080D1030 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r0, [r0] + movs r3, #0 + cmp r4, #0 + bne _080D100E + movs r3, #1 +_080D100E: + adds r2, r0, #0 + adds r2, #0x3e + lsls r3, r3, #2 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_080D1020: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1028: .4byte gUnknown_20399A8 +_080D102C: .4byte 0x00002210 +_080D1030: .4byte 0x00002204 + thumb_func_end sub_080D0FE0 + + thumb_func_start sub_080D1034 +sub_080D1034: @ 0x080D1034 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_081AFCD4 + pop {r1} + bx r1 + thumb_func_end sub_080D1034 + + thumb_func_start sub_080D1044 +sub_080D1044: @ 0x080D1044 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_081AFCD4 + pop {r1} + bx r1 + thumb_func_end sub_080D1044 + + thumb_func_start sub_080D1054 +sub_080D1054: @ 0x080D1054 + push {r4, lr} + sub sp, #0x14 + bl sub_080D0B1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D1074 + ldr r0, _080D106C + ldr r0, [r0] + ldr r1, _080D1070 + b _080D107A + .align 2, 0 +_080D106C: .4byte gUnknown_20399A8 +_080D1070: .4byte 0x00002234 +_080D1074: + ldr r0, _080D10B0 + ldr r0, [r0] + ldr r1, _080D10B4 +_080D107A: + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D6D40 + adds r4, r0, #0 + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + str r0, [sp, #0x10] + movs r0, #2 + movs r1, #1 + adds r2, r4, #0 + movs r3, #4 + bl sub_08199C0C + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D10B0: .4byte gUnknown_20399A8 +_080D10B4: .4byte 0x00000CE6 + thumb_func_end sub_080D1054 + + thumb_func_start sub_080D10B8 +sub_080D10B8: @ 0x080D10B8 + push {lr} + ldr r0, _080D10E0 + ldr r0, [r0] + ldr r1, _080D10E4 + adds r0, r0, r1 + movs r1, #0x15 + strh r1, [r0] + ldr r1, _080D10E8 + movs r3, #0x9d + lsls r3, r3, #1 + movs r0, #0 + movs r2, #0x80 + bl sub_0800195C + movs r0, #0 + bl sub_080D1254 + pop {r0} + bx r0 + .align 2, 0 +_080D10E0: .4byte gUnknown_20399A8 +_080D10E4: .4byte 0x00002236 +_080D10E8: .4byte gUnknown_8556620 + thumb_func_end sub_080D10B8 + + thumb_func_start sub_080D10EC +sub_080D10EC: @ 0x080D10EC + push {r4, r5, lr} + sub sp, #0x10 + ldr r0, _080D1104 + ldr r0, [r0] + ldr r2, _080D1108 + adds r1, r0, r2 + ldrh r0, [r1] + cmp r0, #0 + bne _080D110C + movs r0, #0 + b _080D1172 + .align 2, 0 +_080D1104: .4byte gUnknown_20399A8 +_080D1108: .4byte 0x00002236 +_080D110C: + subs r0, #1 + strh r0, [r1] + ldrh r1, [r1] + movs r0, #0x15 + subs r5, r0, r1 + movs r4, #0 + cmp r4, r5 + bge _080D115C +_080D111C: + movs r0, #0 + movs r1, #0xa + bl sub_08001C34 + adds r1, r0, #0 + ldr r0, _080D117C + ldr r0, [r0] + ldr r2, _080D1180 + adds r0, r0, r2 + adds r1, #0x14 + ldrh r0, [r0] + adds r1, r1, r0 + adds r1, r1, r4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x15 + str r0, [sp, #0xc] + movs r0, #0 + movs r3, #0xd + bl sub_0800271C + adds r4, #1 + cmp r4, r5 + blt _080D111C +_080D115C: + adds r0, r5, #0 + bl sub_080D1254 + ldr r0, _080D117C + ldr r0, [r0] + ldr r1, _080D1180 + adds r0, r0, r1 + ldrh r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_080D1172: + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080D117C: .4byte gUnknown_20399A8 +_080D1180: .4byte 0x00002236 + thumb_func_end sub_080D10EC + + thumb_func_start sub_080D1184 +sub_080D1184: @ 0x080D1184 + push {r4, r5, lr} + sub sp, #0x10 + ldr r5, _080D119C + ldr r0, [r5] + ldr r4, _080D11A0 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0x16 + bne _080D11A4 + movs r0, #0 + b _080D1244 + .align 2, 0 +_080D119C: .4byte gUnknown_20399A8 +_080D11A0: .4byte 0x00002236 +_080D11A4: + cmp r0, #0 + bne _080D11C0 + movs r0, #1 + str r0, [sp] + movs r0, #9 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x15 + movs r3, #0xc + bl sub_080026E0 +_080D11C0: + ldr r1, [r5] + adds r1, r1, r4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrh r1, [r1] + movs r0, #0x15 + subs r5, r0, r1 + movs r4, #0 + cmp r4, r5 + bge _080D1216 +_080D11D6: + movs r0, #0 + movs r1, #0xa + bl sub_08001C34 + adds r1, r0, #0 + ldr r0, _080D124C + ldr r0, [r0] + ldr r2, _080D1250 + adds r0, r0, r2 + adds r1, #0x14 + ldrh r0, [r0] + adds r1, r1, r0 + adds r1, r1, r4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x15 + str r0, [sp, #0xc] + movs r0, #0 + movs r3, #0xd + bl sub_0800271C + adds r4, #1 + cmp r4, r5 + blt _080D11D6 +_080D1216: + cmp r5, #0 + blt _080D1220 + adds r0, r5, #0 + bl sub_080D1254 +_080D1220: + adds r2, r5, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #9 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r3, #0xc + bl sub_080026E0 + movs r0, #0 + bl sub_08199654 + movs r0, #1 +_080D1244: + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080D124C: .4byte gUnknown_20399A8 +_080D1250: .4byte 0x00002236 + thumb_func_end sub_080D1184 + + thumb_func_start sub_080D1254 +sub_080D1254: @ 0x080D1254 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r7, r0, #0 + cmp r7, #0 + beq _080D128C + movs r1, #0x9d + lsls r1, r1, #1 + lsls r4, r7, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r6, #1 + str r6, [sp, #4] + movs r5, #0xf + str r5, [sp, #8] + movs r0, #0 + movs r2, #0 + movs r3, #0xc + bl sub_080026E0 + ldr r1, _080D12DC + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0 + movs r3, #0x14 + bl sub_080026E0 +_080D128C: + ldr r1, _080D12E0 + lsls r5, r7, #0x18 + lsrs r5, r5, #0x18 + movs r4, #1 + str r4, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r6, #0xf + str r6, [sp, #8] + movs r0, #0 + adds r2, r5, #0 + movs r3, #0xd + bl sub_080026E0 + movs r1, #0x9e + lsls r1, r1, #1 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + adds r2, r5, #0 + movs r3, #0xc + bl sub_080026E0 + ldr r1, _080D12E4 + str r4, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + movs r0, #0 + adds r2, r5, #0 + movs r3, #0x14 + bl sub_080026E0 + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D12DC: .4byte 0x0000093A +_080D12E0: .4byte 0x0000013B +_080D12E4: .4byte 0x0000013D + thumb_func_end sub_080D1254 + + thumb_func_start sub_080D12E8 +sub_080D12E8: @ 0x080D12E8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080D1308 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080D0FE0 + ldr r0, _080D1310 + str r0, [r4, #0x1c] +_080D1308: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1310: .4byte sub_08007140 + thumb_func_end sub_080D12E8 + + thumb_func_start sub_080D1314 +sub_080D1314: @ 0x080D1314 + push {lr} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + cmp r1, #0 + beq _080D1326 + cmp r1, #1 + beq _080D1342 + b _080D1370 +_080D1326: + ldrh r0, [r3, #0x20] + lsls r0, r0, #4 + strh r0, [r3, #0x30] + ldrh r0, [r3, #0x22] + lsls r0, 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, #1 + strh r0, [r3, #0x2e] +_080D1342: + ldrh r1, [r3, #0x30] + ldrh r0, [r3, #0x34] + subs r1, r1, r0 + strh r1, [r3, #0x30] + ldrh r0, [r3, #0x32] + ldrh r2, [r3, #0x36] + subs r0, r0, r2 + strh r0, [r3, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r3, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r3, #0x22] + ldrh r0, [r3, #0x38] + adds r0, #1 + strh r0, [r3, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _080D1370 + ldr r0, _080D1374 + str r0, [r3, #0x1c] +_080D1370: + pop {r0} + bx r0 + .align 2, 0 +_080D1374: .4byte sub_080D1378 + thumb_func_end sub_080D1314 + + thumb_func_start sub_080D1378 +sub_080D1378: @ 0x080D1378 + ldr r1, _080D13AC + ldr r3, [r1] + ldr r1, _080D13B0 + adds r3, r3, r1 + ldr r1, [r3] + ldrh r1, [r1, #0x20] + adds r1, #4 + strh r1, [r0, #0x20] + ldr r2, [r3] + ldrh r1, [r2, #0x26] + ldrh r2, [r2, #0x22] + adds r1, r1, r2 + adds r1, #8 + strh r1, [r0, #0x22] + ldr r1, [r3] + ldrb r1, [r1, #5] + movs r2, #0xc + ands r2, r1 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + bx lr + .align 2, 0 +_080D13AC: .4byte gUnknown_20399A8 +_080D13B0: .4byte 0x00000CB4 + thumb_func_end sub_080D1378 + + thumb_func_start sub_080D13B4 +sub_080D13B4: @ 0x080D13B4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _080D13C6 + cmp r1, #1 + beq _080D13E2 + b _080D142A +_080D13C6: + ldrh r0, [r4, #0x20] + lsls r0, r0, #4 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x22] + lsls r0, 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, #1 + strh r0, [r4, #0x2e] +_080D13E2: + ldrh r0, [r4, #0x34] + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x36] + ldrh r2, [r4, #0x32] + adds r1, r1, r2 + strh r1, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r4, #0x22] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _080D142A + adds r0, r4, #0 + bl sub_080D0C64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080D0CAC + ldr r0, _080D1430 + str r0, [r4, #0x1c] +_080D142A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1430: .4byte sub_08007140 + thumb_func_end sub_080D13B4 + + thumb_func_start sub_080D1434 +sub_080D1434: @ 0x080D1434 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _080D1446 + cmp r1, #1 + beq _080D1462 + b _080D14C0 +_080D1446: + ldrh r0, [r4, #0x20] + lsls r0, r0, #4 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x22] + lsls r0, 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, #1 + strh r0, [r4, #0x2e] +_080D1462: + ldrh r1, [r4, #0x30] + ldrh r0, [r4, #0x34] + subs r1, r1, r0 + strh r1, [r4, #0x30] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x36] + subs r0, r0, r2 + strh r0, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x22] + ldr r1, _080D14C8 + movs r2, #0x38 + ldrsh r0, [r4, r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _080D14C0 + adds r0, r4, #0 + bl sub_080D0C64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080D0CAC + movs r0, #0 + strh r0, [r4, #0x24] + ldr r0, _080D14CC + str r0, [r4, #0x1c] +_080D14C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D14C8: .4byte gUnknown_82FA8CC +_080D14CC: .4byte sub_080D1378 + thumb_func_end sub_080D1434 + + thumb_func_start sub_080D14D0 +sub_080D14D0: @ 0x080D14D0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _080D14E2 + cmp r1, #1 + beq _080D14FE + b _080D155E +_080D14E2: + ldrh r0, [r4, #0x20] + lsls r0, r0, #4 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x22] + lsls r0, 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, #1 + strh r0, [r4, #0x2e] +_080D14FE: + ldrh r0, [r4, #0x34] + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x36] + ldrh r2, [r4, #0x32] + adds r1, r1, r2 + strh r1, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r4, #0x22] + ldr r1, _080D1564 + movs r2, #0x38 + ldrsh r0, [r4, r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _080D155E + adds r0, r4, #0 + bl sub_080D0C64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080D0CAC + ldr r0, _080D1568 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] +_080D155E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1564: .4byte gUnknown_82FA8CC +_080D1568: .4byte sub_08007140 + thumb_func_end sub_080D14D0 + + thumb_func_start sub_080D156C +sub_080D156C: @ 0x080D156C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x22] + subs r0, #8 + strh r0, [r2, #0x22] + movs r1, #0x22 + ldrsh r0, [r2, r1] + movs r3, #0x26 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080D159C + ldr r0, _080D15A0 + str r0, [r2, #0x1c] + adds r0, r2, #0 + bl sub_080D0C64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080D0FE0 +_080D159C: + pop {r0} + bx r0 + .align 2, 0 +_080D15A0: .4byte sub_08007140 + thumb_func_end sub_080D156C + + thumb_func_start sub_080D15A4 +sub_080D15A4: @ 0x080D15A4 + bx lr + .align 2, 0 + thumb_func_end sub_080D15A4 + + thumb_func_start sub_080D15A8 +sub_080D15A8: @ 0x080D15A8 + bx lr + .align 2, 0 + thumb_func_end sub_080D15A8 + + thumb_func_start sub_080D15AC +sub_080D15AC: @ 0x080D15AC + ldr r0, _080D15B4 + ldr r0, [r0] + ldrb r0, [r0] + bx lr + .align 2, 0 +_080D15B4: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D15AC + + thumb_func_start sub_080D15B8 +sub_080D15B8: @ 0x080D15B8 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xd + bhi _080D15C8 + ldr r0, _080D15CC + ldr r0, [r0] + strb r1, [r0] +_080D15C8: + pop {r0} + bx r0 + .align 2, 0 +_080D15CC: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D15B8 + + thumb_func_start sub_080D15D0 +sub_080D15D0: @ 0x080D15D0 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D160C + cmp r4, #0x1d + bhi _080D160C + ldr r2, _080D1608 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_0806A1B4 + b _080D160E + .align 2, 0 +_080D1608: .4byte gUnknown_3005AF4 +_080D160C: + movs r0, #0 +_080D160E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080D15D0 + + thumb_func_start sub_080D1614 +sub_080D1614: @ 0x080D1614 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D164C + cmp r4, #0x1d + bhi _080D164C + ldr r2, _080D1654 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0806A864 +_080D164C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D1654: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1614 + + thumb_func_start sub_080D1658 +sub_080D1658: @ 0x080D1658 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _080D1674 + ldr r0, [r0] + ldrb r0, [r0] + adds r1, r3, #0 + bl sub_080D15D0 + pop {r1} + bx r1 + .align 2, 0 +_080D1674: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1658 + + thumb_func_start sub_080D1678 +sub_080D1678: @ 0x080D1678 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080D1698 + ldr r0, [r0] + ldrb r0, [r0] + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080D1614 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1698: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1678 + + thumb_func_start sub_080D169C +sub_080D169C: @ 0x080D169C + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D16D8 + cmp r4, #0x1d + bhi _080D16D8 + ldr r2, _080D16D4 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A1B4 + b _080D16DC + .align 2, 0 +_080D16D4: .4byte gUnknown_3005AF4 +_080D16D8: + movs r0, #0xff + strb r0, [r5] +_080D16DC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D169C + + thumb_func_start sub_080D16E4 +sub_080D16E4: @ 0x080D16E4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + cmp r0, #0xd + bhi _080D1724 + cmp r2, #0x1d + bhi _080D1724 + ldr r6, _080D172C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + adds r5, r0, #4 + ldr r0, [r6] + adds r0, r0, r5 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r4, r1, #4 + adds r0, r0, r4 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1724 + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + bl sub_08068C00 +_080D1724: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080D172C: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D16E4 + + thumb_func_start sub_080D1730 +sub_080D1730: @ 0x080D1730 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D1766 + cmp r4, #0x1d + bhi _080D1766 + ldr r2, _080D176C + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A864 +_080D1766: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D176C: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1730 + + thumb_func_start sub_080D1770 +sub_080D1770: @ 0x080D1770 + push {r4, r5, r6, lr} + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D17B0 + cmp r4, #0x1d + bhi _080D17B0 + ldr r2, _080D17AC + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0806A1B4 + b _080D17B2 + .align 2, 0 +_080D17AC: .4byte gUnknown_3005AF4 +_080D17B0: + movs r0, #0 +_080D17B2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080D1770 + + thumb_func_start sub_080D17B8 +sub_080D17B8: @ 0x080D17B8 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r4, #0xd + bhi _080D17EE + cmp r1, #0x1d + bhi _080D17EE + ldr r0, _080D17F4 + ldr r0, [r0] + lsls r3, r1, #2 + adds r3, r3, r1 + lsls r3, r3, #4 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #5 + adds r3, r3, r1 + adds r0, r0, r3 + adds r0, #4 + adds r1, r5, #0 + movs r2, #0x50 + bl memcpy +_080D17EE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D17F4: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D17B8 + + thumb_func_start sub_080D17F8 +sub_080D17F8: @ 0x080D17F8 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + cmp r4, #0xd + bhi _080D182E + cmp r2, #0x1d + bhi _080D182E + ldr r0, _080D1834 + ldr r1, [r0] + lsls r3, r2, #2 + adds r3, r3, r2 + lsls r3, r3, #4 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #5 + adds r3, r3, r0 + adds r1, r1, r3 + adds r1, #4 + adds r0, r5, #0 + movs r2, #0x50 + bl memcpy +_080D182E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1834: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D17F8 + + thumb_func_start sub_080D1838 +sub_080D1838: @ 0x080D1838 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x3c] + mov ip, r6 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, ip + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r7, #0xd + bhi _080D18A4 + cmp r6, #0x1d + bhi _080D18A4 + ldr r2, _080D18B4 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #4 + adds r0, r0, r1 + str r5, [sp] + ldr r1, [sp, #0x38] + str r1, [sp, #4] + str r3, [sp, #8] + ldr r1, [sp, #0x40] + str r1, [sp, #0xc] + mov r1, sb + mov r2, r8 + adds r3, r4, #0 + bl sub_080677A0 +_080D18A4: + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D18B4: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1838 + + thumb_func_start sub_080D18B8 +sub_080D18B8: @ 0x080D18B8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D18E8 + cmp r4, #0x1d + bhi _080D18E8 + ldr r2, _080D18F0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + bl sub_08067658 +_080D18E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D18F0: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D18B8 + + thumb_func_start sub_080D18F4 +sub_080D18F4: @ 0x080D18F4 + push {r4, r5, lr} + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D1928 + cmp r4, #0x1d + bhi _080D1928 + ldr r2, _080D1930 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_08068B44 +_080D1928: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1930: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D18F4 + + thumb_func_start sub_080D1934 +sub_080D1934: @ 0x080D1934 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r3, #0xd + bhi _080D1968 + cmp r4, #0x1d + bhi _080D1968 + ldr r2, _080D1964 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r0, r0, r1 + b _080D196A + .align 2, 0 +_080D1964: .4byte gUnknown_3005AF4 +_080D1968: + movs r0, #0 +_080D196A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080D1934 + + thumb_func_start sub_080D1970 +sub_080D1970: @ 0x080D1970 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xd + bls _080D197E + movs r0, #0 + b _080D198C +_080D197E: + ldr r0, _080D1990 + lsls r1, r2, #3 + adds r1, r1, r2 + ldr r2, _080D1994 + adds r1, r1, r2 + ldr r0, [r0] + adds r0, r0, r1 +_080D198C: + pop {r1} + bx r1 + .align 2, 0 +_080D1990: .4byte gUnknown_3005AF4 +_080D1994: .4byte 0x00008344 + thumb_func_end sub_080D1970 + + thumb_func_start sub_080D1998 +sub_080D1998: @ 0x080D1998 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xd + bls _080D19A6 + movs r0, #0 + b _080D19B2 +_080D19A6: + ldr r0, _080D19B8 + ldr r0, [r0] + ldr r2, _080D19BC + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] +_080D19B2: + pop {r1} + bx r1 + .align 2, 0 +_080D19B8: .4byte gUnknown_3005AF4 +_080D19BC: .4byte 0x000083C2 + thumb_func_end sub_080D1998 + + thumb_func_start sub_080D19C0 +sub_080D19C0: @ 0x080D19C0 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r2, #0xd + bhi _080D19DE + cmp r1, #0x10 + bhi _080D19DE + ldr r0, _080D19E4 + ldr r0, [r0] + ldr r3, _080D19E8 + adds r0, r0, r3 + adds r0, r0, r2 + strb r1, [r0] +_080D19DE: + pop {r0} + bx r0 + .align 2, 0 +_080D19E4: .4byte gUnknown_3005AF4 +_080D19E8: .4byte 0x000083C2 + thumb_func_end sub_080D19C0 + + thumb_func_start sub_080D19EC +sub_080D19EC: @ 0x080D19EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r4, r3, #0 + ldr r2, _080D1A50 + cmp r3, #1 + bhi _080D1A0E + movs r2, #1 + cmp r3, #1 + beq _080D1A12 +_080D1A0E: + cmp r4, #3 + bne _080D1A5C +_080D1A12: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + adds r1, r1, r0 + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + adds r6, r2, #0 + cmp r1, #0 + blt _080D1AA8 + cmp r1, r7 + bgt _080D1AA8 +_080D1A2A: + asrs r4, r0, #0x10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + add r0, r8 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1A54 + asrs r0, r6, #0x10 + adds r0, r4, r0 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + blt _080D1AA8 + cmp r2, r7 + ble _080D1A2A + b _080D1AA8 + .align 2, 0 +_080D1A50: .4byte 0x0000FFFF +_080D1A54: + adds r0, r4, #0 + b _080D1AAC +_080D1A58: + adds r0, r5, #0 + b _080D1AAC +_080D1A5C: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + adds r1, r1, r0 + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + adds r6, r2, #0 + cmp r1, #0 + blt _080D1AA8 + cmp r1, r7 + bgt _080D1AA8 +_080D1A74: + asrs r5, r0, #0x10 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #4 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1A98 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1A58 +_080D1A98: + asrs r0, r6, #0x10 + adds r0, r5, r0 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + blt _080D1AA8 + cmp r2, r7 + ble _080D1A74 +_080D1AA8: + movs r0, #1 + rsbs r0, r0, #0 +_080D1AAC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D19EC + + thumb_func_start sub_080D1AB8 +sub_080D1AB8: @ 0x080D1AB8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _080D1AE8 + mov r8, r0 + movs r7, #4 +_080D1AC8: + movs r5, #0 + adds r6, r7, #0 + movs r4, #0 +_080D1ACE: + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r6 + adds r0, r0, r4 + movs r1, #5 + str r2, [sp] + bl sub_0806A1B4 + ldr r2, [sp] + cmp r0, #0 + bne _080D1AEC + movs r0, #1 + b _080D1B02 + .align 2, 0 +_080D1AE8: .4byte gUnknown_3005AF4 +_080D1AEC: + adds r4, #0x50 + adds r5, #1 + cmp r5, #0x1d + ble _080D1ACE + movs r0, #0x96 + lsls r0, r0, #4 + adds r7, r7, r0 + adds r2, #1 + cmp r2, #0xd + ble _080D1AC8 + movs r0, #0 +_080D1B02: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D1AB8 + + thumb_func_start sub_080D1B10 +sub_080D1B10: @ 0x080D1B10 + push {r4, r5, r6, lr} + adds r2, r1, #0 + cmp r0, #0xd + bhi _080D1B68 + cmp r2, #0x1d + bhi _080D1B68 + ldr r6, _080D1B64 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + adds r5, r0, #4 + ldr r0, [r6] + adds r0, r0, r5 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r4, r1, #4 + adds r0, r0, r4 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1B68 + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #6 + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1B68 + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #4 + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1B68 + movs r0, #1 + b _080D1B6A + .align 2, 0 +_080D1B64: .4byte gUnknown_3005AF4 +_080D1B68: + movs r0, #0 +_080D1B6A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080D1B10 + + thumb_func_start sub_080D1B70 +sub_080D1B70: @ 0x080D1B70 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r7, #0 + movs r0, #0 + ldr r1, _080D1BD8 + mov sb, r1 +_080D1B80: + lsls r1, r0, #2 + adds r2, r0, #1 + mov r8, r2 + adds r1, r1, r0 + movs r5, #0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + adds r4, r0, #4 + movs r6, #0x1d +_080D1B94: + mov r1, sb + ldr r0, [r1] + adds r0, r0, r4 + adds r0, r0, r5 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1BBA + mov r2, sb + ldr r0, [r2] + adds r0, r0, r4 + adds r0, r0, r5 + movs r1, #6 + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1BBA + adds r7, #1 +_080D1BBA: + adds r5, #0x50 + subs r6, #1 + cmp r6, #0 + bge _080D1B94 + mov r0, r8 + cmp r0, #0xd + ble _080D1B80 + adds r0, r7, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1BD8: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1B70 + + thumb_func_start sub_080D1BDC +sub_080D1BDC: @ 0x080D1BDC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r7, #0 + movs r0, #0 + ldr r1, _080D1C44 + mov sb, r1 +_080D1BEC: + lsls r1, r0, #2 + adds r2, r0, #1 + mov r8, r2 + adds r1, r1, r0 + movs r5, #0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + adds r4, r0, #4 + movs r6, #0x1d +_080D1C00: + mov r1, sb + ldr r0, [r1] + adds r0, r0, r4 + adds r0, r0, r5 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1C24 + mov r2, sb + ldr r0, [r2] + adds r0, r0, r4 + adds r0, r0, r5 + movs r1, #6 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1C26 +_080D1C24: + adds r7, #1 +_080D1C26: + adds r5, #0x50 + subs r6, #1 + cmp r6, #0 + bge _080D1C00 + mov r0, r8 + cmp r0, #0xd + ble _080D1BEC + adds r0, r7, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D1C44: .4byte gUnknown_3005AF4 + thumb_func_end sub_080D1BDC + + thumb_func_start sub_080D1C48 +sub_080D1C48: @ 0x080D1C48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r1, sp + strh r0, [r1] + ldr r0, _080D1C9C + strh r0, [r1, #2] + movs r0, #0 + mov r8, r0 + ldr r7, _080D1CA0 + movs r5, #4 +_080D1C60: + movs r6, #0 + movs r4, #0 +_080D1C64: + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #5 + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1CA4 + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #6 + bl sub_0806A1B4 + cmp r0, #0 + bne _080D1CA4 + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #0x51 + mov r2, sp + bl sub_0806A1B4 + cmp r0, #0 + beq _080D1CA4 + movs r0, #1 + b _080D1CBE + .align 2, 0 +_080D1C9C: .4byte 0x00000163 +_080D1CA0: .4byte gUnknown_3005AF4 +_080D1CA4: + adds r4, #0x50 + adds r6, #1 + cmp r6, #0x1d + ble _080D1C64 + movs r0, #0x96 + lsls r0, r0, #4 + adds r5, r5, r0 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #0xd + ble _080D1C60 + movs r0, #0 +_080D1CBE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D1C48 + + thumb_func_start sub_080D1CCC +sub_080D1CCC: @ 0x080D1CCC + ldr r2, _080D1D04 + ldr r0, [r2] + ldr r1, _080D1D08 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _080D1D0C + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r3, #1 + adds r0, r0, r3 + strb r1, [r0] + ldr r1, [r2] + ldr r0, _080D1D10 + adds r2, r1, r0 + ldr r0, _080D1D14 + strh r0, [r2] + subs r3, #0x14 + adds r2, r1, r3 + ldr r0, _080D1D18 + strh r0, [r2] + ldr r0, _080D1D1C + adds r1, r1, r0 + movs r0, #0xff + strb r0, [r1] + bx lr + .align 2, 0 +_080D1D04: .4byte gUnknown_3005AEC +_080D1D08: .4byte 0x00003D84 +_080D1D0C: .4byte 0x00003D85 +_080D1D10: .4byte 0x00003D70 +_080D1D14: .4byte 0x00007B35 +_080D1D18: .4byte 0x00006186 +_080D1D1C: .4byte 0x00003D74 + thumb_func_end sub_080D1CCC + + thumb_func_start sub_080D1D20 +sub_080D1D20: @ 0x080D1D20 + ldr r1, _080D1D2C + ldr r1, [r1] + ldr r2, _080D1D30 + adds r1, r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080D1D2C: .4byte gUnknown_3005AEC +_080D1D30: .4byte 0x00003D86 + thumb_func_end sub_080D1D20 + + thumb_func_start sub_080D1D34 +sub_080D1D34: @ 0x080D1D34 + ldr r0, _080D1D40 + ldr r0, [r0] + ldr r1, _080D1D44 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080D1D40: .4byte gUnknown_3005AEC +_080D1D44: .4byte 0x00003D86 + thumb_func_end sub_080D1D34 + + thumb_func_start sub_080D1D48 +sub_080D1D48: @ 0x080D1D48 + ldr r0, _080D1D54 + ldr r0, [r0] + ldr r1, _080D1D58 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080D1D54: .4byte gUnknown_3005AEC +_080D1D58: .4byte 0x00003D85 + thumb_func_end sub_080D1D48 + + thumb_func_start sub_080D1D5C +sub_080D1D5C: @ 0x080D1D5C + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bhi _080D1D70 + ldr r0, _080D1D74 + ldr r0, [r0] + ldr r2, _080D1D78 + adds r0, r0, r2 + strb r1, [r0] +_080D1D70: + pop {r0} + bx r0 + .align 2, 0 +_080D1D74: .4byte gUnknown_3005AEC +_080D1D78: .4byte 0x00003D85 + thumb_func_end sub_080D1D5C + + thumb_func_start sub_080D1D7C +sub_080D1D7C: @ 0x080D1D7C + ldr r0, _080D1D88 + ldr r0, [r0] + ldr r1, _080D1D8C + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080D1D88: .4byte gUnknown_3005AEC +_080D1D8C: .4byte 0x00003D84 + thumb_func_end sub_080D1D7C + + thumb_func_start sub_080D1D90 +sub_080D1D90: @ 0x080D1D90 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1d + bhi _080D1DA4 + ldr r0, _080D1DA8 + ldr r0, [r0] + ldr r2, _080D1DAC + adds r0, r0, r2 + strb r1, [r0] +_080D1DA4: + pop {r0} + bx r0 + .align 2, 0 +_080D1DA8: .4byte gUnknown_3005AEC +_080D1DAC: .4byte 0x00003D84 + thumb_func_end sub_080D1D90 + + thumb_func_start sub_080D1DB0 +sub_080D1DB0: @ 0x080D1DB0 + ldr r0, _080D1DBC + ldr r0, [r0] + ldr r1, _080D1DC0 + adds r0, r0, r1 + bx lr + .align 2, 0 +_080D1DBC: .4byte gUnknown_3005AEC +_080D1DC0: .4byte 0x00003D70 + thumb_func_end sub_080D1DB0 + + thumb_func_start sub_080D1DC4 +sub_080D1DC4: @ 0x080D1DC4 + push {r4, lr} + ldr r2, _080D1DDC + ldr r2, [r2] + ldr r4, _080D1DE0 + adds r3, r2, r4 + strh r0, [r3] + ldr r0, _080D1DE4 + adds r2, r2, r0 + strh r1, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D1DDC: .4byte gUnknown_3005AEC +_080D1DE0: .4byte 0x00003D70 +_080D1DE4: .4byte 0x00003D72 + thumb_func_end sub_080D1DC4 + + thumb_func_start sub_080D1DE8 +sub_080D1DE8: @ 0x080D1DE8 + ldr r0, _080D1DF4 + ldr r0, [r0] + ldr r1, _080D1DF8 + adds r0, r0, r1 + bx lr + .align 2, 0 +_080D1DF4: .4byte gUnknown_3005AEC +_080D1DF8: .4byte 0x00003D74 + thumb_func_end sub_080D1DE8 + + thumb_func_start sub_080D1DFC +sub_080D1DFC: @ 0x080D1DFC + push {lr} + adds r1, r0, #0 + ldr r0, _080D1E10 + ldr r0, [r0] + ldr r2, _080D1E14 + adds r0, r0, r2 + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_080D1E10: .4byte gUnknown_3005AEC +_080D1E14: .4byte 0x00003D74 + thumb_func_end sub_080D1DFC + + thumb_func_start sub_080D1E18 +sub_080D1E18: @ 0x080D1E18 + push {lr} + movs r1, #0 + ldr r0, _080D1E34 + ldr r0, [r0] + ldr r2, _080D1E38 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _080D1E2C + movs r1, #1 +_080D1E2C: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_080D1E34: .4byte gUnknown_3005AEC +_080D1E38: .4byte 0x00003D74 + thumb_func_end sub_080D1E18 + + thumb_func_start sub_080D1E3C +sub_080D1E3C: @ 0x080D1E3C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _080D1E88 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #4 + bl sub_08000BC8 + str r0, [r6] + ldr r5, _080D1E8C + movs r1, #0 + cmp r0, #0 + beq _080D1E5A + adds r1, r4, #0 +_080D1E5A: + strh r1, [r5] + movs r2, #0 + cmp r2, r1 + bhs _080D1E82 + movs r3, #0 + adds r4, r5, #0 +_080D1E66: + ldr r0, [r6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #4 + adds r1, r1, r0 + str r3, [r1, #0x18] + adds r1, #0x2c + strb r3, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r4] + cmp r2, r0 + blo _080D1E66 +_080D1E82: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D1E88: .4byte gUnknown_2039A24 +_080D1E8C: .4byte gUnknown_2039A28 + thumb_func_end sub_080D1E3C + + thumb_func_start sub_080D1E90 +sub_080D1E90: @ 0x080D1E90 + push {lr} + ldr r0, _080D1EA0 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_080D1EA0: .4byte gUnknown_2039A24 + thumb_func_end sub_080D1E90 + + thumb_func_start sub_080D1EA4 +sub_080D1EA4: @ 0x080D1EA4 + push {r4, r5, lr} + movs r4, #0 + ldr r0, _080D1EDC + ldrh r0, [r0] + cmp r4, r0 + bge _080D1ED4 + movs r5, #0 +_080D1EB2: + ldr r0, _080D1EE0 + ldr r0, [r0] + adds r0, r5, r0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #1 + bne _080D1EC8 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D21B8 +_080D1EC8: + adds r5, #0x30 + adds r4, #1 + ldr r0, _080D1EDC + ldrh r0, [r0] + cmp r4, r0 + blt _080D1EB2 +_080D1ED4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D1EDC: .4byte gUnknown_2039A28 +_080D1EE0: .4byte gUnknown_2039A24 + thumb_func_end sub_080D1EA4 + + thumb_func_start sub_080D1EE4 +sub_080D1EE4: @ 0x080D1EE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r2, #0 + ldr r2, [sp, #0x24] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sl, r3 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp] + ldr r0, _080D1F7C + ldrh r0, [r0] + cmp r6, r0 + bhs _080D1FCC + ldr r0, _080D1F80 + mov sb, r0 + ldr r0, [r0] + lsls r1, r6, #1 + mov r8, r1 + adds r5, r1, r6 + lsls r5, 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, sb + ldr r0, [r2] + adds r0, r5, r0 + mov r3, sl + strh r3, [r0, #0x24] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, #0x26] + adds r0, r7, #0 + movs r1, #3 + bl sub_08001C34 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + movs r1, #9 + bl sub_08001C34 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, sb + ldr r1, [r2] + adds r5, r5, r1 + ldr r2, _080D1F84 + lsls r4, r4, #2 + lsls r1, r0, #4 + adds r4, r4, r1 + adds r4, r4, r2 + ldrh r1, [r4] + strh r1, [r5, #0x20] + ldrh r1, [r4, #2] + strh r1, [r5, #0x22] + mov r2, r8 + cmp r0, #0 + beq _080D1F88 + adds r1, r5, #0 + adds r1, #0x2a + movs r0, #1 + b _080D1F8E + .align 2, 0 +_080D1F7C: .4byte gUnknown_2039A28 +_080D1F80: .4byte gUnknown_2039A24 +_080D1F84: .4byte gUnknown_8556784 +_080D1F88: + adds r1, r5, #0 + adds r1, #0x2a + movs r0, #2 +_080D1F8E: + strb r0, [r1] + ldr r4, _080D1FDC + ldr r1, [r4] + adds r2, r2, r6 + lsls r2, r2, #4 + adds r1, r2, r1 + adds r0, r1, #0 + adds r0, #0x2a + ldrb r0, [r0] + mov r3, sl + muls r3, r0, r3 + movs r0, #0 + strh r3, [r1, #0x28] + mov r3, sl + 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, r2, r0 + adds r2, #0x2c + movs r0, #1 + strb r0, [r2] +_080D1FCC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D1FDC: .4byte gUnknown_2039A24 + thumb_func_end sub_080D1EE4 + + thumb_func_start sub_080D1FE0 +sub_080D1FE0: @ 0x080D1FE0 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080D2008 + ldrh r0, [r0] + cmp r2, r0 + bhs _080D2004 + ldr r0, _080D200C + ldr r1, [r0] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #4 + adds r0, r0, r1 + str r3, [r0, #0x18] + adds r0, #0x2c + movs r1, #1 + strb r1, [r0] +_080D2004: + pop {r0} + bx r0 + .align 2, 0 +_080D2008: .4byte gUnknown_2039A28 +_080D200C: .4byte gUnknown_2039A24 + thumb_func_end sub_080D1FE0 + + thumb_func_start sub_080D2010 +sub_080D2010: @ 0x080D2010 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _080D2044 + ldrh r0, [r0] + cmp r3, r0 + bhs _080D203C + ldr r0, _080D2048 + ldr r1, [r0] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + adds r0, r0, r1 + strh r4, [r0, #0x14] + strh r2, [r0, #0x16] + adds r0, #0x2c + movs r1, #1 + strb r1, [r0] +_080D203C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2044: .4byte gUnknown_2039A28 +_080D2048: .4byte gUnknown_2039A24 + thumb_func_end sub_080D2010 + + thumb_func_start sub_080D204C +sub_080D204C: @ 0x080D204C + push {r4, r5, r6, lr} + ldr r4, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _080D208C + ldrh r0, [r0] + cmp r5, r0 + bhs _080D2086 + ldr r0, _080D2090 + ldr r1, [r0] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #4 + adds r0, r0, r1 + strh r6, [r0, #0xc] + strh r2, [r0, #0xe] + strh r3, [r0, #0x10] + strh r4, [r0, #0x12] + adds r0, #0x2c + movs r1, #1 + strb r1, [r0] +_080D2086: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D208C: .4byte gUnknown_2039A28 +_080D2090: .4byte gUnknown_2039A24 + thumb_func_end sub_080D204C + + thumb_func_start sub_080D2094 +sub_080D2094: @ 0x080D2094 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _080D20C0 + ldrh r0, [r0] + cmp r5, r0 + blo _080D20AC + b _080D21AE +_080D20AC: + ldr r4, _080D20C4 + lsls r2, r5, #1 + cmp r1, #5 + bls _080D20B6 + b _080D21A0 +_080D20B6: + lsls r0, r1, #2 + ldr r1, _080D20C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D20C0: .4byte gUnknown_2039A28 +_080D20C4: .4byte gUnknown_2039A24 +_080D20C8: .4byte _080D20CC +_080D20CC: @ jump table + .4byte _080D20E4 @ case 0 + .4byte _080D2104 @ case 1 + .4byte _080D2128 @ case 2 + .4byte _080D2148 @ case 3 + .4byte _080D216C @ case 4 + .4byte _080D2188 @ case 5 +_080D20E4: + ldr r4, _080D2100 + ldr r0, [r4] + lsls r3, r5, #1 + adds r1, r3, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r2, r6, #0x18 + asrs r2, r2, #0x18 + ldrh r0, [r1, #0x14] + adds r0, r0, r2 + strh r0, [r1, #0x14] + ldrh r0, [r1, #0x10] + subs r0, r0, r2 + b _080D211E + .align 2, 0 +_080D2100: .4byte gUnknown_2039A24 +_080D2104: + ldr r4, _080D2124 + ldr r0, [r4] + lsls r3, r5, #1 + adds r1, r3, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r2, r6, #0x18 + asrs r2, r2, #0x18 + ldrh r0, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + ldrh r0, [r1, #0x10] + adds r0, r0, r2 +_080D211E: + strh r0, [r1, #0x10] + adds r2, r3, #0 + b _080D21A0 + .align 2, 0 +_080D2124: .4byte gUnknown_2039A24 +_080D2128: + ldr r4, _080D2144 + ldr r0, [r4] + lsls r3, r5, #1 + adds r1, r3, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r2, r6, #0x18 + asrs r2, r2, #0x18 + ldrh r0, [r1, #0x16] + adds r0, r0, r2 + strh r0, [r1, #0x16] + ldrh r0, [r1, #0x12] + subs r0, r0, r2 + b _080D2162 + .align 2, 0 +_080D2144: .4byte gUnknown_2039A24 +_080D2148: + ldr r4, _080D2168 + ldr r0, [r4] + lsls r3, r5, #1 + adds r1, r3, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r2, r6, #0x18 + asrs r2, r2, #0x18 + ldrh r0, [r1, #0xe] + subs r0, r0, r2 + strh r0, [r1, #0xe] + ldrh r0, [r1, #0x12] + adds r0, r0, r2 +_080D2162: + strh r0, [r1, #0x12] + adds r2, r3, #0 + b _080D21A0 + .align 2, 0 +_080D2168: .4byte gUnknown_2039A24 +_080D216C: + ldr r3, _080D2184 + ldr r0, [r3] + lsls r2, r5, #1 + adds r1, r2, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + ldrh r4, [r1, #0x14] + adds r0, r0, r4 + strh r0, [r1, #0x14] + b _080D219E + .align 2, 0 +_080D2184: .4byte gUnknown_2039A24 +_080D2188: + ldr r3, _080D21B4 + ldr r0, [r3] + lsls r2, r5, #1 + adds r1, r2, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + ldrh r4, [r1, #0x16] + adds r0, r0, r4 + strh r0, [r1, #0x16] +_080D219E: + adds r4, r3, #0 +_080D21A0: + ldr r0, [r4] + adds r1, r2, r5 + lsls r1, r1, #4 + adds r1, r1, r0 + adds r1, #0x2c + movs r0, #1 + strb r0, [r1] +_080D21AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D21B4: .4byte gUnknown_2039A24 + thumb_func_end sub_080D2094 + + thumb_func_start sub_080D21B8 +sub_080D21B8: @ 0x080D21B8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r6, r2, #0 + ldr r0, _080D21F8 + ldrh r0, [r0] + cmp r2, r0 + bhs _080D21F2 + ldr r5, _080D21FC + ldr r0, [r5] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r4, r1, #4 + adds r0, r4, r0 + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _080D21E0 + adds r0, r2, #0 + bl sub_080D2200 +_080D21E0: + adds r0, r6, #0 + bl sub_080D2298 + ldr r1, [r5] + adds r1, r4, r1 + adds r0, r1, #0 + adds r0, #0xc + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} +_080D21F2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D21F8: .4byte gUnknown_2039A28 +_080D21FC: .4byte gUnknown_2039A24 + thumb_func_end sub_080D21B8 + + thumb_func_start sub_080D2200 +sub_080D2200: @ 0x080D2200 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _080D2294 + ldr r1, [r4] + lsls r5, r0, #1 + adds r0, r5, r0 + lsls r0, r0, #4 + adds r0, r0, r1 + adds r1, r0, #0 + adds r1, #0x2a + ldrb r3, [r1] + ldrh r1, [r0, #0x20] + adds r2, r3, #0 + muls r2, r1, r2 + mov sb, r2 + movs r6, #0xa + ldrsh r1, [r0, r6] + mov r2, sb + muls r2, r1, r2 + ldr r1, [r0, #0x18] + adds r1, r1, r2 + movs r6, #8 + ldrsh r2, [r0, r6] + muls r2, r3, r2 + adds r7, r1, r2 + movs r6, #0 + ldrh r0, [r0, #6] + cmp r6, r0 + bge _080D2284 + mov sl, r4 +_080D224A: + mov r0, sl + ldr r1, [r0] + mov r2, r8 + adds r4, r5, r2 + lsls r4, r4, #4 + adds r1, r4, r1 + adds r0, r1, #0 + adds r0, #0x2b + ldrb r0, [r0] + ldrb r2, [r1, #8] + ldrb r3, [r1, #0xa] + adds r3, r3, r6 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r1, [r1, #4] + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + adds r1, r7, #0 + bl sub_080022B0 + add r7, sb + adds r6, #1 + mov r1, sl + ldr r0, [r1] + adds r4, r4, r0 + ldrh r4, [r4, #6] + cmp r6, r4 + blt _080D224A +_080D2284: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D2294: .4byte gUnknown_2039A24 + thumb_func_end sub_080D2200 + + thumb_func_start sub_080D2298 +sub_080D2298: @ 0x080D2298 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _080D232C + ldr r1, [r4] + lsls r5, r0, #1 + adds r0, r5, r0 + lsls r0, r0, #4 + adds r0, r0, r1 + adds r1, r0, #0 + adds r1, #0x2a + ldrb r3, [r1] + ldrh r1, [r0, #0x24] + adds r2, r3, #0 + muls r2, r1, r2 + mov sb, r2 + movs r6, #0xe + ldrsh r1, [r0, r6] + mov r2, sb + muls r2, r1, r2 + ldr r1, [r0, #0x1c] + adds r1, r1, r2 + movs r6, #0xc + ldrsh r2, [r0, r6] + muls r2, r3, r2 + adds r7, r1, r2 + movs r6, #0 + ldrh r0, [r0, #0x12] + cmp r6, r0 + bge _080D231C + mov sl, r4 +_080D22E2: + mov r0, sl + ldr r1, [r0] + mov r2, r8 + adds r4, r5, r2 + lsls r4, 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, r3, r6 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r1, [r1, #0x10] + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + adds r1, r7, #0 + bl sub_080022B0 + add r7, sb + adds r6, #1 + mov r1, sl + ldr r0, [r1] + adds r4, r4, r0 + ldrh r4, [r4, #0x12] + cmp r6, r4 + blt _080D22E2 +_080D231C: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D232C: .4byte gUnknown_2039A24 + thumb_func_end sub_080D2298 + + thumb_func_start sub_080D2330 +sub_080D2330: @ 0x080D2330 + ldr r3, _080D2340 + str r0, [r3] + str r1, [r0] + movs r1, #0 + strb r2, [r0, #5] + strb r1, [r0, #4] + bx lr + .align 2, 0 +_080D2340: .4byte gUnknown_2039A2C + thumb_func_end sub_080D2330 + + thumb_func_start sub_080D2344 +sub_080D2344: @ 0x080D2344 + push {r4, r5, lr} + ldr r2, _080D2388 + ldr r1, [r2] + ldrb r0, [r1, #4] + cmp r0, #0 + beq _080D2382 + movs r4, #0 + ldrb r1, [r1, #4] + cmp r4, r1 + bhs _080D237A + adds r5, r2, #0 +_080D235A: + ldr r0, [r5] + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #2 + ldr r0, [r0] + adds r0, r0, r1 + ldr r1, [r0, #0x10] + bl _call_via_r1 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [r5] + ldrb r0, [r0, #4] + cmp r4, r0 + blo _080D235A +_080D237A: + ldr r0, _080D2388 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #4] +_080D2382: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2388: .4byte gUnknown_2039A2C + thumb_func_end sub_080D2344 + + thumb_func_start sub_080D238C +sub_080D238C: @ 0x080D238C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r0 + mov sl, r3 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x28] + ldr r4, [sp, #0x2c] + ldr r5, [sp, #0x30] + ldr r6, [sp, #0x34] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov ip, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, _080D240C + ldr r2, [r0] + ldrb r0, [r2, #4] + adds r1, r0, #0 + ldrb r7, [r2, #5] + cmp r1, r7 + bhs _080D2414 + adds r0, #1 + strb r0, [r2, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r1, r1, r0 + lsls r0, r4, #1 + strh r0, [r1, #8] + ldr r2, [sp] + lsls r0, r2, #5 + add r0, ip + lsls r0, r0, #1 + add r0, sb + str r0, [r1, #4] + adds r0, r3, #0 + muls r0, r6, r0 + add r0, r8 + lsls r0, r0, #1 + add r0, sl + str r0, [r1] + strh r5, [r1, #0xc] + strh r6, [r1, #0xa] + ldr r0, _080D2410 + str r0, [r1, #0x10] + movs r0, #1 + b _080D2416 + .align 2, 0 +_080D240C: .4byte gUnknown_2039A2C +_080D2410: .4byte sub_080D2428 +_080D2414: + movs r0, #0 +_080D2416: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D238C + + thumb_func_start sub_080D2428 +sub_080D2428: @ 0x080D2428 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + b _080D2452 +_080D2430: + ldr r0, [r4] + ldr r1, [r4, #4] + ldrh r2, [r4, #8] + lsrs r2, r2, #1 + bl CpuSet + ldr r0, [r4, #4] + adds r0, #0x40 + str r0, [r4, #4] + ldrh r1, [r4, #0xa] + lsls r1, r1, #1 + ldr r0, [r4] + adds r0, r0, r1 + str r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080D2452: + ldrh r0, [r4, #0xc] + cmp r5, r0 + blo _080D2430 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D2428 + + thumb_func_start sub_080D2460 +sub_080D2460: @ 0x080D2460 + push {r4, r5, r6, r7, lr} + mov ip, r0 + ldr r0, [sp, #0x14] + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080D24AC + ldr r2, [r0] + ldrb r0, [r2, #4] + adds r1, r0, #0 + ldrb r7, [r2, #5] + cmp r1, r7 + bhs _080D24B4 + adds r0, #1 + strb r0, [r2, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r1, r1, r0 + lsls r0, r3, #1 + strh r0, [r1, #8] + lsls r0, r4, #5 + adds r0, r0, r6 + lsls r0, r0, #1 + add r0, ip + str r0, [r1, #4] + strh r5, [r1, #0xc] + ldr r0, _080D24B0 + str r0, [r1, #0x10] + movs r0, #1 + b _080D24B6 + .align 2, 0 +_080D24AC: .4byte gUnknown_2039A2C +_080D24B0: .4byte sub_080D24BC +_080D24B4: + movs r0, #0 +_080D24B6: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080D2460 + + thumb_func_start sub_080D24BC +sub_080D24BC: @ 0x080D24BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r0, #0 + movs r0, #0 + ldrh r1, [r6, #0xc] + cmp r0, r1 + bhs _080D254A + movs r7, #0x80 + lsls r7, r7, #5 + mov r5, sp + ldr r2, _080D2508 + mov r8, r2 + movs r1, #0x81 + lsls r1, r1, #0x18 + mov sl, r1 +_080D24E2: + ldr r2, [r6, #4] + ldrh r3, [r6, #8] + mov ip, r2 + adds r0, #1 + mov sb, r0 + cmp r3, r7 + bhi _080D250C + movs r0, #0 + strh r0, [r5] + mov r2, sp + mov r0, r8 + str r2, [r0] + mov r1, ip + str r1, [r0, #4] + lsrs r0, r3, #1 + mov r2, sl + orrs r0, r2 + mov r1, r8 + b _080D2534 + .align 2, 0 +_080D2508: .4byte 0x040000D4 +_080D250C: + movs r4, #0 + strh r4, [r5] + ldr r1, _080D255C + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + ldr r0, _080D2560 + str r0, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r7 + subs r3, r3, r7 + cmp r3, r7 + bhi _080D250C + strh r4, [r5] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, sl + orrs r0, r2 +_080D2534: + str r0, [r1, #8] + ldr r0, [r1, #8] + mov r0, ip + adds r0, #0x40 + str r0, [r6, #4] + mov r1, sb + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + ldrh r2, [r6, #0xc] + cmp r0, r2 + blo _080D24E2 +_080D254A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D255C: .4byte 0x040000D4 +_080D2560: .4byte 0x81000800 + thumb_func_end sub_080D24BC + + thumb_func_start sub_080D2564 +sub_080D2564: @ 0x080D2564 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _080D2600 + str r0, [sp, #0x18] + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_080D277C + str r0, [sp, #0x1c] + ldr r0, _080D2604 + str r0, [sp, #0x20] + ldr r0, _080D2608 + str r0, [sp, #0x24] + str r6, [sp, #0x28] + ldr r0, _080D260C + adds r0, r4, r0 + ldr r1, _080D2610 + 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, r0, #1 + cmp r4, r0 + bls _080D25CA + mov r0, sp + strh r5, [r0, #0x14] +_080D25CA: + mov r0, r8 + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + lsls r2, r7, #0x10 + asrs r2, r2, #0x10 + mov r0, sp + mov r3, sb + bl sub_080D2A54 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080D2614 + adds r0, r0, r1 + bl sub_080D297C + adds r0, r4, #0 + add sp, #0x30 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2600: .4byte gUnknown_85570CC +_080D2604: .4byte gUnknown_8557110 +_080D2608: .4byte gUnknown_8557144 +_080D260C: .4byte gUnknown_8556EE4 +_080D2610: .4byte 0x0000DAC0 +_080D2614: .4byte gUnknown_20205AC + thumb_func_end sub_080D2564 + + thumb_func_start sub_080D2618 +sub_080D2618: @ 0x080D2618 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + adds r4, r2, #0 + adds r5, r3, #0 + ldr r6, [sp, #0x2c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r3, sp + ldr r2, _080D2690 + str r2, [sp] + movs r2, #0 + str r2, [sp, #4] + ldr r2, _080D2694 + str r2, [sp, #8] + ldr r2, _080D2698 + str r2, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, _080D269C + adds r2, r0, r2 + ldr r7, _080D26A0 + adds r1, r7, #0 + ldrb r2, [r2] + adds r1, r1, r2 + strh r1, [r3, #0x14] + ldr r1, [sp, #0x30] + bl sub_080D28C0 + str r0, [sp, #4] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080D2A54 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080D26A4 + adds r0, r0, r1 + bl sub_080D297C + adds r0, r4, #0 + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D2690: .4byte gUnknown_85570CC +_080D2694: .4byte gUnknown_8557110 +_080D2698: .4byte gUnknown_8557144 +_080D269C: .4byte gUnknown_8556EE4 +_080D26A0: .4byte 0x0000DAC0 +_080D26A4: .4byte gUnknown_20205AC + thumb_func_end sub_080D2618 + + thumb_func_start sub_080D26A8 +sub_080D26A8: @ 0x080D26A8 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xc9 + bne _080D26D2 + adds r0, r1, #0 + bl sub_080D26E8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _080D26C4 + movs r0, #0xc9 + b _080D26CE +_080D26C4: + movs r1, #0xce + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080D26CE: + adds r1, r0, #0 + b _080D26E0 +_080D26D2: + movs r0, #0xce + lsls r0, r0, #1 + adds r1, r2, #0 + cmp r1, r0 + bls _080D26E0 + movs r1, #0x82 + lsls r1, r1, #1 +_080D26E0: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D26A8 + + thumb_func_start sub_080D26E8 +sub_080D26E8: @ 0x080D26E8 + push {lr} + adds r2, r0, #0 + cmp r2, #0 + beq _080D271E + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r2 + lsrs r0, r0, #0x12 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r2 + lsrs r1, r1, #0xc + orrs r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + ands r1, r2 + lsrs r1, r1, #6 + orrs r0, r1 + movs r1, #3 + ands r1, r2 + orrs r0, r1 + movs r1, #0x1c + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080D2720 +_080D271E: + movs r0, #0 +_080D2720: + pop {r1} + bx r1 + thumb_func_end sub_080D26E8 + + thumb_func_start sub_080D2724 +sub_080D2724: @ 0x080D2724 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + mov r1, sp + bl sub_080D3E6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc9 + bne _080D275A + mov r0, sp + ldrh r0, [r0] + cmp r0, #0 + bne _080D274A + mov r1, sp + adds r0, #0xc9 + b _080D2752 +_080D274A: + mov r1, sp + movs r2, #0xce + lsls r2, r2, #1 + adds r0, r0, r2 +_080D2752: + strh r0, [r1] + mov r0, sp + ldrh r0, [r0] + b _080D2772 +_080D275A: + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bls _080D2766 + movs r4, #0x82 + lsls r4, r4, #1 +_080D2766: + adds r0, r4, #0 + movs r1, #0 + bl sub_080D26A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080D2772: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D2724 + + thumb_func_start sub_080D277C +sub_080D277C: @ 0x080D277C + push {r4, lr} + adds r4, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D26A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_080D28C0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080D277C + + thumb_func_start sub_080D2798 +sub_080D2798: @ 0x080D2798 + push {lr} + bl sub_080D2B2C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D2798 + + thumb_func_start sub_080D27A4 +sub_080D27A4: @ 0x080D27A4 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080D27C4 +_080D27AA: + lsls r0, r4, #3 + adds r0, r0, r5 + bl sub_0800845C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _080D27AA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D27C4: .4byte gUnknown_855709C + thumb_func_end sub_080D27A4 + + thumb_func_start sub_080D27C8 +sub_080D27C8: @ 0x080D27C8 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bls _080D27DA + movs r1, #0x82 + lsls r1, r1, #1 +_080D27DA: + ldr r0, _080D2800 + adds r0, r1, r0 + ldrb r0, [r0] + ldr r1, _080D2804 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080D27FA + adds r0, r4, #0 + bl sub_0800845C +_080D27FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2800: .4byte gUnknown_8556EE4 +_080D2804: .4byte gUnknown_855709C + thumb_func_end sub_080D27C8 + + thumb_func_start sub_080D2808 +sub_080D2808: @ 0x080D2808 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080D2834 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _080D2838 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080D282E + adds r0, r4, #0 + bl sub_0800845C +_080D282E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D2834: .4byte gUnknown_8556EE4 +_080D2838: .4byte gUnknown_855709C + thumb_func_end sub_080D2808 + + thumb_func_start sub_080D283C +sub_080D283C: @ 0x080D283C + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080D285C +_080D2842: + lsls r0, r4, #3 + adds r0, r0, r5 + ldrh r0, [r0, #4] + bl sub_08008564 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _080D2842 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D285C: .4byte gUnknown_855709C + thumb_func_end sub_080D283C + + thumb_func_start sub_080D2860 +sub_080D2860: @ 0x080D2860 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bls _080D2872 + movs r1, #0x82 + lsls r1, r1, #1 +_080D2872: + ldr r0, _080D2888 + adds r0, r1, r0 + ldrb r0, [r0] + ldr r1, _080D288C + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 +_080D2888: .4byte gUnknown_8556EE4 +_080D288C: .4byte gUnknown_855709C + thumb_func_end sub_080D2860 + + thumb_func_start sub_080D2890 +sub_080D2890: @ 0x080D2890 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080D28AC + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _080D28B0 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 +_080D28AC: .4byte gUnknown_8556EE4 +_080D28B0: .4byte gUnknown_855709C + thumb_func_end sub_080D2890 + + thumb_func_start sub_080D28B4 +sub_080D28B4: @ 0x080D28B4 + push {lr} + bl sub_080D297C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D28B4 + + thumb_func_start sub_080D28C0 +sub_080D28C0: @ 0x080D28C0 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _080D28E8 + lsls r1, r0, #2 + adds r1, r1, r2 + ldr r2, [r1] + movs r1, #0xcd + lsls r1, r1, #1 + cmp r0, r1 + bne _080D28E2 + cmp r3, #1 + bne _080D28E2 + movs r0, #0x80 + lsls r0, r0, #3 + adds r2, r2, r0 +_080D28E2: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_080D28E8: .4byte gUnknown_8556804 + thumb_func_end sub_080D28C0 + + thumb_func_start sub_080D28EC +sub_080D28EC: @ 0x080D28EC + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xa0 + bhi _080D2914 + ldr r6, _080D291C + movs r5, #5 +_080D28FA: + ldr r0, [r6] + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, #8 + subs r5, #1 + cmp r5, #0 + bge _080D28FA +_080D2914: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D291C: .4byte gUnknown_855709C + thumb_func_end sub_080D28EC + + thumb_func_start sub_080D2920 +sub_080D2920: @ 0x080D2920 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bls _080D2932 + movs r1, #0x82 + lsls r1, r1, #1 +_080D2932: + ldr r0, _080D293C + adds r0, r1, r0 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080D293C: .4byte gUnknown_8556EE4 + thumb_func_end sub_080D2920 + + thumb_func_start sub_080D2940 +sub_080D2940: @ 0x080D2940 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080D294C + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080D294C: .4byte gUnknown_8556EE4 + thumb_func_end sub_080D2940 + + thumb_func_start sub_080D2950 +sub_080D2950: @ 0x080D2950 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r2, r0 + bls _080D2962 + movs r2, #0x82 + lsls r2, r2, #1 +_080D2962: + ldr r1, _080D2974 + ldr r0, _080D2978 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_080D2974: .4byte gUnknown_855709C +_080D2978: .4byte gUnknown_8556EE4 + thumb_func_end sub_080D2950 + + thumb_func_start sub_080D297C +sub_080D297C: @ 0x080D297C + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r0 + ands r0, r2 + cmp r0, #0 + bne _080D2A30 + movs r1, #0x2a + adds r1, r1, r4 + mov r8, r1 + ldrb r1, [r1] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + adds r5, r4, #0 + adds r5, #0x2b + ldrb r0, [r5] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0 + ldrsh r3, [r0, r1] + movs r0, #2 + rsbs r0, r0, #0 + cmp r3, r0 + beq _080D29C6 + adds r0, #1 + cmp r3, r0 + bne _080D29CA + b _080D2A44 +_080D29C6: + strb r7, [r5] + b _080D2A44 +_080D29CA: + ldr r2, _080D2A28 + ldrb r1, [r4, #3] + lsrs r1, r1, #6 + lsls r1, r1, #1 + ldrb r0, [r4, #1] + lsrs r0, r0, #6 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r2, [r1] + adds r1, r2, #0 + muls r1, r3, r1 + ldr r0, [r4, #0xc] + adds r0, r0, r1 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r3, _080D2A2C + adds r1, r1, r3 + bl sub_08007204 + mov r0, r8 + ldrb r1, [r0] + ldr r0, [r4, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r5] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0xa + lsrs r0, r0, #0x1a + mov r1, sb + ands r1, r0 + ldrb r2, [r6] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldrb r7, [r5] + b _080D2A44 + .align 2, 0 +_080D2A28: .4byte gUnknown_855714C +_080D2A2C: .4byte 0x06010000 +_080D2A30: + lsls r0, r2, #0x1a + lsrs r0, r0, #0x1a + subs r0, #1 + movs r1, #0x3f + ands r0, r1 + movs r1, #0x40 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r6] +_080D2A44: + adds r0, r7, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D297C + + thumb_func_start sub_080D2A54 +sub_080D2A54: @ 0x080D2A54 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x38 + mov sb, r0 + adds r4, r1, #0 + adds r5, r2, #0 + mov r8, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #0 + str r0, [sp, #0x30] + ldr r2, _080D2B1C + mov r0, sb + ldr r6, [r0] + ldrb r1, [r6, #3] + lsrs r1, r1, #6 + lsls r1, r1, #1 + ldrb r0, [r6, #1] + lsrs r0, r0, #6 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r2, [r1] + ldr r1, _080D2B20 + add r3, sp, #0x30 + ldr r0, [r3, #4] + ands r0, r1 + orrs r0, r2 + str r0, [r3, #4] + add r1, sp, #0x18 + ldr r0, _080D2B24 + strh r0, [r1] + mov r0, sb + ldrh r2, [r0, #0x14] + mov r0, sp + adds r0, #0x1a + strh r2, [r0] + str r6, [sp, #0x1c] + mov r2, sb + ldr r0, [r2, #8] + 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, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + mov r3, r8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080D2B28 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, 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, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r4] + adds r6, #0xc + adds r3, r3, r6 + mov r2, sb + ldr r1, [r2, #4] + str r1, [r3] + add sp, #0x38 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080D2B1C: .4byte gUnknown_855714C +_080D2B20: .4byte 0xFFFF0000 +_080D2B24: .4byte 0x0000FFFF +_080D2B28: .4byte gUnknown_20205AC + thumb_func_end sub_080D2A54 + + thumb_func_start sub_080D2B2C +sub_080D2B2C: @ 0x080D2B2C + push {lr} + sub sp, #8 + movs r1, #0 + str r1, [sp] + ldr r3, _080D2B60 + ldrb r2, [r0, #3] + lsrs r2, r2, #6 + lsls r2, r2, #1 + ldrb r1, [r0, #1] + lsrs r1, r1, #6 + lsls r1, r1, #3 + adds r2, r2, r1 + adds r2, r2, r3 + ldrh r3, [r2] + ldr r2, _080D2B64 + ldr r1, [sp, #4] + ands r1, r2 + orrs r1, r3 + str r1, [sp, #4] + mov r1, sp + str r1, [r0, #0xc] + bl sub_08006E00 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080D2B60: .4byte gUnknown_855714C +_080D2B64: .4byte 0xFFFF0000 + thumb_func_end sub_080D2B2C + + thumb_func_start sub_080D2B68 +sub_080D2B68: @ 0x080D2B68 + mov ip, r0 + adds r0, #0x2a + movs r3, #0 + strb r1, [r0] + mov r2, ip + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + mov r0, ip + adds r0, #0x2b + strb r3, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_080D2B68 + + thumb_func_start sub_080D2B88 +sub_080D2B88: @ 0x080D2B88 + push {r4, lr} + sub sp, #4 + adds r4, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D2BAA + movs r0, #1 + b _080D2BD2 +_080D2BAA: + ldr r0, _080D2BDC + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D2BBC + movs r0, #0x32 + bl sub_080D2C4C +_080D2BBC: + bl sub_080D2C94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + ldrb r1, [r1] + adds r2, r4, #0 + bl sub_080D2CA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080D2BD2: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D2BDC: .4byte sub_080D2F00 + thumb_func_end sub_080D2B88 + + thumb_func_start sub_080D2BE0 +sub_080D2BE0: @ 0x080D2BE0 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D2C22 + bl sub_080D2C94 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080D2D14 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x10 + beq _080D2C22 + adds r0, r4, #0 + bl sub_080D2E24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080D2C24 +_080D2C22: + movs r0, #1 +_080D2C24: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080D2BE0 + + thumb_func_start sub_080D2C2C +sub_080D2C2C: @ 0x080D2C2C + push {r4, lr} + bl sub_080D2C94 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _080D2C46 + adds r0, r4, #0 + bl sub_080D2EBC + adds r0, r4, #0 + bl sub_080A8964 +_080D2C46: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080D2C2C + + thumb_func_start sub_080D2C4C +sub_080D2C4C: @ 0x080D2C4C + push {r4, r5, lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080D2C88 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #1 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r3, r1, #3 + ldr r5, _080D2C8C + ldr r0, _080D2C90 + adds r4, r0, #0 +_080D2C6C: + lsls r0, r2, #1 + adds r0, r0, r3 + adds r0, r0, r5 + ldrh r1, [r0] + orrs r1, r4 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080D2C6C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2C88: .4byte sub_080D2F00 +_080D2C8C: .4byte gUnknown_3005B68 +_080D2C90: .4byte 0x0000FFFF + thumb_func_end sub_080D2C4C + + thumb_func_start sub_080D2C94 +sub_080D2C94: @ 0x080D2C94 + push {lr} + ldr r0, _080D2CA4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080D2CA4: .4byte sub_080D2F00 + thumb_func_end sub_080D2C94 + + thumb_func_start sub_080D2CA8 +sub_080D2CA8: @ 0x080D2CA8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r2 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r8, r6 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080D2D14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x10 + beq _080D2CE4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D2E24 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D2D04 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + b _080D2CFA +_080D2CE4: + adds r0, r7, #0 + movs r1, #0xff + bl sub_080D2D14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x10 + beq _080D2D04 + adds r0, r7, #0 + adds r1, r4, #0 + mov r2, r8 +_080D2CFA: + mov r3, sb + bl sub_080D2E7C + movs r0, #0 + b _080D2D06 +_080D2D04: + movs r0, #1 +_080D2D06: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D2CA8 + + thumb_func_start sub_080D2D14 +sub_080D2D14: @ 0x080D2D14 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080D2D38 + adds r1, r1, r0 + adds r1, #2 + movs r2, #0 +_080D2D2C: + ldrb r0, [r1] + cmp r0, r3 + bne _080D2D3C + adds r0, r2, #0 + b _080D2D4A + .align 2, 0 +_080D2D38: .4byte gUnknown_3005B68 +_080D2D3C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, #1 + cmp r2, #0xf + bls _080D2D2C + movs r0, #0x10 +_080D2D4A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D2D14 + + thumb_func_start sub_080D2D50 +sub_080D2D50: @ 0x080D2D50 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080D2D80 + adds r1, r1, r0 + adds r1, #2 + str r1, [r2] + movs r0, #0 + cmp r0, r3 + bhs _080D2D7C +_080D2D6E: + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, #1 + cmp r0, r3 + blo _080D2D6E + str r1, [r2] +_080D2D7C: + pop {r0} + bx r0 + .align 2, 0 +_080D2D80: .4byte gUnknown_3005B68 + thumb_func_end sub_080D2D50 + + thumb_func_start sub_080D2D84 +sub_080D2D84: @ 0x080D2D84 + push {r4, lr} + sub sp, #4 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r2, sp + bl sub_080D2D50 + ldr r0, [sp] + strb r4, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080D2D84 + + thumb_func_start sub_080D2DA8 +sub_080D2DA8: @ 0x080D2DA8 + push {r4, lr} + sub sp, #4 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r2, sp + bl sub_080D2D50 + ldr r0, [sp] + ldrb r0, [r0] + strb r0, [r4] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D2DA8 + + thumb_func_start sub_080D2DCC +sub_080D2DCC: @ 0x080D2DCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _080D2DF4 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldr r2, [r1] + mvns r2, r2 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r3, _080D2DF8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r0, [r1, #8] + ands r2, r0 + strh r2, [r1, #8] + bx lr + .align 2, 0 +_080D2DF4: .4byte gUnknown_82FACB4 +_080D2DF8: .4byte gUnknown_3005B60 + thumb_func_end sub_080D2DCC + + thumb_func_start sub_080D2DFC +sub_080D2DFC: @ 0x080D2DFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _080D2E1C + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + ldr r0, _080D2E20 + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + ldrh r1, [r2, #8] + orrs r0, r1 + strh r0, [r2, #8] + bx lr + .align 2, 0 +_080D2E1C: .4byte gUnknown_3005B60 +_080D2E20: .4byte gUnknown_82FACB4 + thumb_func_end sub_080D2DFC + + thumb_func_start sub_080D2E24 +sub_080D2E24: @ 0x080D2E24 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _080D2E4C + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + ldr r0, _080D2E50 + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + ldrh r1, [r2, #8] + ands r0, r1 + cmp r0, #0 + bne _080D2E54 + movs r0, #0 + b _080D2E56 + .align 2, 0 +_080D2E4C: .4byte gUnknown_3005B60 +_080D2E50: .4byte gUnknown_82FACB4 +_080D2E54: + movs r0, #1 +_080D2E56: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D2E24 + + thumb_func_start sub_080D2E5C +sub_080D2E5C: @ 0x080D2E5C + lsls r0, r0, #0x18 + ldr r2, _080D2E68 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + str r1, [r0] + bx lr + .align 2, 0 +_080D2E68: .4byte gUnknown_2039A30 + thumb_func_end sub_080D2E5C + + thumb_func_start sub_080D2E6C +sub_080D2E6C: @ 0x080D2E6C + lsls r0, r0, #0x18 + ldr r1, _080D2E78 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_080D2E78: .4byte gUnknown_2039A30 + thumb_func_end sub_080D2E6C + + thumb_func_start sub_080D2E7C +sub_080D2E7C: @ 0x080D2E7C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D2DCC + adds r0, r4, #0 + mov r1, r8 + bl sub_080D2E5C + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_080D2D84 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D2E7C + + thumb_func_start sub_080D2EBC +sub_080D2EBC: @ 0x080D2EBC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080D2EF8 + adds r1, r1, r0 + adds r4, r1, #2 + movs r5, #0 +_080D2ED0: + ldrb r0, [r4] + cmp r0, #0xff + beq _080D2EE6 + adds r1, r0, #0 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080D2EFC + adds r0, r0, r1 + bl sub_08096E84 +_080D2EE6: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #1 + cmp r5, #0xf + bls _080D2ED0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D2EF8: .4byte gUnknown_3005B68 +_080D2EFC: .4byte gUnknown_2036FF0 + thumb_func_end sub_080D2EBC + + thumb_func_start sub_080D2F00 +sub_080D2F00: @ 0x080D2F00 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r5, #0 + mov r6, sp +_080D2F0C: + adds r0, r7, #0 + adds r1, r5, #0 + mov r2, sp + bl sub_080D2DA8 + ldrb r0, [r6] + cmp r0, #0xff + beq _080D2F30 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_080D2E6C + adds r3, r0, #0 + adds r0, r7, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080D2F44 +_080D2F30: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _080D2F0C + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D2F00 + + thumb_func_start sub_080D2F44 +sub_080D2F44: @ 0x080D2F44 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r3, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r8, r6 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080D2F94 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092B14 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D2F7C + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D2FAE +_080D2F7C: + ldrb r1, [r5] + cmp r1, #0xfe + bne _080D2F98 + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080D2DFC + adds r0, r4, #0 + bl sub_08096D74 + b _080D2FAE + .align 2, 0 +_080D2F94: .4byte gUnknown_2036FF0 +_080D2F98: + adds r0, r4, #0 + bl sub_08092B30 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D2FAE + adds r5, #1 + mov r0, r8 + adds r1, r5, #0 + bl sub_080D2E5C +_080D2FAE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D2F44 + + thumb_func_start sub_080D2FB8 +sub_080D2FB8: @ 0x080D2FB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + movs r0, #0x52 + bl sub_08135478 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D2FF4 + ldr r1, _080D2FE4 + ldr r0, _080D2FE8 + str r0, [r1] + ldr r1, _080D2FEC + ldr r0, _080D2FF0 + str r0, [r1] + movs r0, #1 + b _080D32CC + .align 2, 0 +_080D2FE4: .4byte gUnknown_3005B10 +_080D2FE8: .4byte sub_081B53D8 +_080D2FEC: .4byte gUnknown_203CBB8 +_080D2FF0: .4byte sub_080D333C +_080D2FF4: + ldr r0, _080D3028 + adds r1, r0, #2 + bl sub_0808B410 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _080D302C + adds r0, r0, r1 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + cmp r0, #0x34 + bne _080D3038 + ldr r1, _080D3030 + movs r0, #5 + strb r0, [r1] + ldr r0, _080D3034 + movs r1, #2 + b _080D3042 + .align 2, 0 +_080D3028: .4byte gUnknown_203A80C +_080D302C: .4byte gUnknown_2024190 +_080D3030: .4byte gUnknown_3001100 +_080D3034: .4byte gUnknown_3001101 +_080D3038: + ldr r1, _080D3118 + movs r0, #3 + strb r0, [r1] + ldr r0, _080D311C + movs r1, #1 +_080D3042: + strb r1, [r0] + ldr r0, _080D3120 + strb r1, [r0] + movs r6, #0 + movs r1, #0 +_080D304C: + mov r2, sp + adds r0, r2, r6 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #8 + bls _080D304C + movs r6, #0 + ldr r2, _080D3124 + movs r1, #0 +_080D3062: + adds r0, r6, r2 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x18 + bls _080D3062 + movs r3, #0 + str r3, [sp, #0x10] + movs r6, #0 +_080D3076: + ldr r4, _080D3128 + adds r0, r6, r4 + ldr r1, _080D312C + ldrh r1, [r1, #2] + adds r0, r0, r1 + movs r5, #0 + adds r2, r6, #1 + str r2, [sp, #0x18] + lsls r7, r6, #1 + lsls r0, r0, #0x10 + str r0, [sp, #0x14] + asrs r0, r0, #0x10 + mov sl, r0 + lsls r0, r6, #2 + adds r0, r0, r6 + mov sb, r0 +_080D3096: + ldr r3, _080D3128 + adds r0, r5, r3 + ldr r4, _080D312C + ldrh r4, [r4] + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + mov r8, r1 + asrs r4, r0, #0x10 + adds r0, r4, #0 + mov r1, sl + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D312C + movs r1, #4 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _080D315C + adds r0, r4, #0 + mov r1, sl + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080887C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080D30E6 + adds r0, r4, #0 + bl sub_08088DE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D30F6 +_080D30E6: + adds r0, r5, #6 + add r0, sb + ldr r3, _080D3124 + adds r0, r0, r3 + movs r1, #1 + strb r1, [r0] + movs r0, #1 + str r0, [sp, #0x10] +_080D30F6: + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + ldr r2, [sp, #0x14] + asrs r1, r2, #0x10 + bl sub_08087B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D3130 + adds r0, r7, r6 + adds r0, r0, r5 + mov r3, sp + adds r1, r3, r0 + b _080D3164 + .align 2, 0 +_080D3118: .4byte gUnknown_3001100 +_080D311C: .4byte gUnknown_3001101 +_080D3120: .4byte gUnknown_3001102 +_080D3124: .4byte gUnknown_3001108 +_080D3128: .4byte 0x0000FFFF +_080D312C: .4byte gUnknown_203A80C +_080D3130: + adds r0, r7, r6 + adds r0, r0, r5 + mov r2, sp + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0808935C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080D3168 + adds r0, r5, #6 + add r0, sb + ldr r3, _080D3158 + adds r0, r0, r3 + strb r1, [r0] + b _080D3168 + .align 2, 0 +_080D3158: .4byte gUnknown_3001108 +_080D315C: + adds r0, r7, r6 + adds r0, r0, r5 + mov r4, sp + adds r1, r4, r0 +_080D3164: + movs r0, #0 + strb r0, [r1] +_080D3168: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _080D3096 + ldr r1, [sp, #0x18] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bhi _080D317E + b _080D3076 +_080D317E: + ldr r2, [sp, #0xc] + cmp r2, #0x34 + beq _080D318E + ldr r3, [sp, #0x10] + cmp r3, #1 + beq _080D318C + b _080D32CA +_080D318C: + b _080D32BE +_080D318E: + movs r6, #0 + ldr r4, _080D3274 + mov sb, r4 + ldr r0, _080D3278 + mov sl, r0 +_080D3198: + lsls r2, r6, #2 + mov r3, sl + adds r1, r2, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + mov r4, sb + ldrh r4, [r4] + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r0, #1 + ldrsb r0, [r1, r0] + mov r1, sb + ldrh r1, [r1, #2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r7, #1 + movs r5, #0 + ldr r3, _080D327C + adds r0, r2, r3 + ldrb r0, [r0] + adds r6, #1 + str r6, [sp, #0x18] + adds r6, r2, #0 + cmp r0, #0 + beq _080D31FA +_080D31D0: + adds r1, r2, #0 + adds r0, r5, r2 + adds r0, r0, r3 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r0, sp + ldrb r0, [r0] + cmp r0, #0 + beq _080D3294 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bhi _080D31FA + adds r0, r5, r1 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080D31D0 +_080D31FA: + cmp r7, #1 + bne _080D32AC + mov r1, r8 + lsls r0, r1, #0x10 + asrs r5, r0, #0x10 + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, sb + movs r1, #4 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _080D32AC + mov r3, sl + adds r2, r6, r3 + movs r1, #1 + ldrsb r1, [r2, r1] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, #0xc + ldrb r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080887C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080D325C + adds r0, r4, #0 + bl sub_08088DE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D3298 +_080D325C: + ldr r1, _080D3280 + ldr r0, _080D3284 + str r0, [r1] + ldr r1, _080D3288 + ldr r0, _080D328C + str r0, [r1] + ldr r0, _080D3290 + adds r0, r6, r0 + strb r7, [r0] + movs r4, #1 + str r4, [sp, #0x10] + b _080D32AC + .align 2, 0 +_080D3274: .4byte gUnknown_203A80C +_080D3278: .4byte gUnknown_8557164 +_080D327C: .4byte gUnknown_8557166 +_080D3280: .4byte gUnknown_3005B10 +_080D3284: .4byte sub_081B53D8 +_080D3288: .4byte gUnknown_203CBB8 +_080D328C: .4byte sub_080D32F0 +_080D3290: .4byte gUnknown_3001108 +_080D3294: + movs r7, #0 + b _080D31FA +_080D3298: + adds r0, r4, #0 + bl sub_0808935C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080D32AC + ldr r0, _080D32DC + adds r0, r6, r0 + strb r1, [r0] +_080D32AC: + ldr r1, [sp, #0x18] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xf + bhi _080D32B8 + b _080D3198 +_080D32B8: + ldr r2, [sp, #0x10] + cmp r2, #1 + bne _080D32CA +_080D32BE: + ldr r1, _080D32E0 + ldr r0, _080D32E4 + str r0, [r1] + ldr r1, _080D32E8 + ldr r0, _080D32EC + str r0, [r1] +_080D32CA: + ldr r0, [sp, #0x10] +_080D32CC: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D32DC: .4byte gUnknown_3001108 +_080D32E0: .4byte gUnknown_3005B10 +_080D32E4: .4byte sub_081B53D8 +_080D32E8: .4byte gUnknown_203CBB8 +_080D32EC: .4byte sub_080D32F0 + thumb_func_end sub_080D2FB8 + + thumb_func_start sub_080D32F0 +sub_080D32F0: @ 0x080D32F0 + push {lr} + movs r0, #1 + bl sub_080B5270 + bl sub_081B1024 + ldr r1, _080D3308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080D3308: .4byte gUnknown_20388A8 + thumb_func_end sub_080D32F0 + + thumb_func_start sub_080D330C +sub_080D330C: @ 0x080D330C + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D3334 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080D3338 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0x12 + bl sub_0808414C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080D3334: .4byte gUnknown_3005B60 +_080D3338: .4byte sub_080D338C + thumb_func_end sub_080D330C + + thumb_func_start sub_080D333C +sub_080D333C: @ 0x080D333C + push {lr} + bl sub_081B1024 + ldr r1, _080D3354 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _080D3358 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080D3354: .4byte gUnknown_20388A8 +_080D3358: .4byte gUnknown_8256612 + thumb_func_end sub_080D333C + + thumb_func_start sub_080D335C +sub_080D335C: @ 0x080D335C + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D3384 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080D3388 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0x12 + bl sub_0808414C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080D3384: .4byte gUnknown_3005B60 +_080D3388: .4byte sub_080D3BF4 + thumb_func_end sub_080D335C + + thumb_func_start sub_080D338C +sub_080D338C: @ 0x080D338C + push {lr} + movs r0, #1 + bl sub_080B5568 + movs r0, #0x3a + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D338C + + thumb_func_start sub_080D33A0 +sub_080D33A0: @ 0x080D33A0 + push {r4, r5, r6, r7, lr} + movs r6, #0 + movs r0, #0x80 + bl sub_080A306C + ldr r4, _080D3490 + adds r1, r4, #2 + adds r0, r4, #0 + bl sub_0808B410 + adds r7, r4, #0 +_080D33B6: + ldr r0, _080D3494 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, #1 + bne _080D3404 + adds r0, r6, #0 + movs r1, #5 + bl __umodsi3 + adds r4, r0, #0 + subs r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #5 + bl __udivsi3 + adds r5, r0, #0 + subs r5, #2 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + ldrh r0, [r7] + adds r4, r4, r0 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + ldrh r2, [r7, #2] + adds r5, r5, r2 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080D34B0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0808E0CC +_080D3404: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x18 + bls _080D33B6 + ldr r2, _080D3490 + ldr r0, _080D3498 + ldrb r1, [r0] + ldrh r0, [r2] + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r1, _080D349C + ldrb r1, [r1] + mvns r1, r1 + ldrh r2, [r2, #2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080D35FC + bl sub_08089598 + ldr r4, _080D34A0 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + movs r6, #0 + ldr r5, _080D34A4 +_080D3440: + ldr r0, _080D34A8 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #7 + movs r2, #0x80 + lsls r2, r2, #0xc + adds r1, r1, r2 + asrs r1, r1, #0x10 + ldrb r2, [r0] + adds r2, #0x14 + ldr r0, _080D34AC + movs r3, #0 + bl sub_08006B0C + ldr r1, [r4] + adds r1, r1, r6 + strb r0, [r1] + ldr r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + lsls r1, r6, #5 + strh r1, [r0, #0x32] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #7 + bls _080D3440 + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D3490: .4byte gUnknown_203A80C +_080D3494: .4byte gUnknown_3001108 +_080D3498: .4byte gUnknown_3001101 +_080D349C: .4byte gUnknown_3001102 +_080D34A0: .4byte gUnknown_2039A70 +_080D34A4: .4byte gUnknown_20205AC +_080D34A8: .4byte gUnknown_2037230 +_080D34AC: .4byte gUnknown_85571C8 + thumb_func_end sub_080D33A0 + + thumb_func_start sub_080D34B0 +sub_080D34B0: @ 0x080D34B0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r0, #0x10 + asrs r4, r0, #0x10 + lsrs r7, r1, #0x10 + asrs r5, r1, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _080D34E8 + cmp r1, r0 + bgt _080D34FC + subs r0, #1 + cmp r1, r0 + bge _080D3574 + cmp r1, #0x25 + beq _080D3596 + cmp r1, #0x25 + bgt _080D34EC + cmp r1, #0xd + beq _080D353C + cmp r1, #0x15 + beq _080D353C + b _080D35A0 + .align 2, 0 +_080D34E8: .4byte 0x00000207 +_080D34EC: + movs r0, #0xe3 + lsls r0, r0, #1 + cmp r1, r0 + beq _080D354C + adds r0, #1 + cmp r1, r0 + beq _080D3552 + b _080D35A0 +_080D34FC: + ldr r0, _080D3514 + cmp r1, r0 + beq _080D3584 + cmp r1, r0 + bgt _080D3518 + subs r0, #0xa + cmp r1, r0 + beq _080D353C + adds r0, #2 + cmp r1, r0 + beq _080D3584 + b _080D35A0 + .align 2, 0 +_080D3514: .4byte 0x00000212 +_080D3518: + ldr r0, _080D352C + cmp r1, r0 + beq _080D3564 + cmp r1, r0 + bgt _080D3530 + subs r0, #1 + cmp r1, r0 + beq _080D355C + b _080D35A0 + .align 2, 0 +_080D352C: .4byte 0x00000282 +_080D3530: + ldr r0, _080D3538 + cmp r1, r0 + beq _080D356C + b _080D35A0 + .align 2, 0 +_080D3538: .4byte 0x00000283 +_080D353C: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + movs r2, #1 + bl sub_08087C54 + b _080D35A0 +_080D354C: + movs r2, #0xe7 + lsls r2, r2, #1 + b _080D3576 +_080D3552: + ldr r2, _080D3558 + b _080D3576 + .align 2, 0 +_080D3558: .4byte 0x000001CF +_080D355C: + ldr r2, _080D3560 + b _080D3576 + .align 2, 0 +_080D3560: .4byte 0x00000279 +_080D3564: + ldr r2, _080D3568 + b _080D3576 + .align 2, 0 +_080D3568: .4byte 0x0000027A +_080D356C: + ldr r2, _080D3570 + b _080D3576 + .align 2, 0 +_080D3570: .4byte 0x0000027B +_080D3574: + ldr r2, _080D3580 +_080D3576: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _080D35A0 + .align 2, 0 +_080D3580: .4byte 0x00000271 +_080D3584: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x86 + lsls r2, r2, #2 + bl sub_08087C54 + b _080D35A0 +_080D3596: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xe + bl sub_08087C54 +_080D35A0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D34B0 + + thumb_func_start sub_080D35A8 +sub_080D35A8: @ 0x080D35A8 + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r1, #0 + cmp r1, #1 + bne _080D35C4 + movs r0, #1 + b _080D35F6 +_080D35C4: + ldr r0, _080D35D0 + cmp r1, r0 + bne _080D35D4 + movs r0, #2 + b _080D35F6 + .align 2, 0 +_080D35D0: .4byte 0x00000279 +_080D35D4: + ldr r0, _080D35E0 + cmp r1, r0 + bne _080D35E4 + movs r0, #3 + b _080D35F6 + .align 2, 0 +_080D35E0: .4byte 0x0000027A +_080D35E4: + ldr r0, _080D35F0 + cmp r2, r0 + beq _080D35F4 + movs r0, #0 + b _080D35F6 + .align 2, 0 +_080D35F0: .4byte 0x0000027B +_080D35F4: + movs r0, #4 +_080D35F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D35A8 + + thumb_func_start sub_080D35FC +sub_080D35FC: @ 0x080D35FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + ldr r1, _080D366C + ldrb r2, [r1] + mov r3, sl + adds r0, r2, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + movs r4, #0 + cmp r4, r2 + blt _080D362A + b _080D3740 +_080D362A: + lsls r0, r3, #0x10 + asrs r7, r0, #0x10 +_080D362E: + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + asrs r5, r0, #0x10 + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08087B88 + mov r8, r4 + cmp r0, #0x15 + bne _080D36B2 + adds r4, r7, #1 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_080D35A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080D3688 + cmp r0, #2 + bgt _080D3670 + cmp r0, #1 + beq _080D367A + b _080D36B2 + .align 2, 0 +_080D366C: .4byte gUnknown_3001100 +_080D3670: + cmp r0, #3 + beq _080D3698 + cmp r0, #4 + beq _080D36A8 + b _080D36B2 +_080D367A: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x82 + lsls r2, r2, #2 + bl sub_08087C54 + b _080D36B2 +_080D3688: + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D3694 + bl sub_08087C54 + b _080D36B2 + .align 2, 0 +_080D3694: .4byte 0x00000281 +_080D3698: + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D36A4 + bl sub_08087C54 + b _080D36B2 + .align 2, 0 +_080D36A4: .4byte 0x00000282 +_080D36A8: + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D3778 + bl sub_08087C54 +_080D36B2: + lsls r0, r6, #0x10 + asrs r5, r0, #0x10 + ldr r3, [sp] + lsls r0, r3, #0x10 + asrs r4, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + cmp r0, #1 + bne _080D372C + adds r4, #1 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + movs r1, #0x82 + lsls r1, r1, #2 + cmp r0, r1 + bne _080D36E4 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08087C54 +_080D36E4: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D377C + cmp r0, r1 + bne _080D36FC + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D3780 + bl sub_08087C54 +_080D36FC: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D3784 + cmp r0, r1 + bne _080D3714 + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D3788 + bl sub_08087C54 +_080D3714: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D3778 + cmp r0, r1 + bne _080D372C + adds r0, r5, #0 + adds r1, r4, #0 + ldr r2, _080D378C + bl sub_08087C54 +_080D372C: + movs r1, #0x80 + lsls r1, r1, #9 + add r1, r8 + lsrs r4, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _080D3790 + ldrb r0, [r0] + cmp r1, r0 + bge _080D3740 + b _080D362E +_080D3740: + ldr r1, _080D3790 + ldrb r0, [r1] + cmp r0, #5 + bne _080D3768 + mov r3, sb + lsls r5, r3, #0x10 + asrs r5, r5, #0x10 + mov r0, sl + lsls r4, r0, #0x10 + asrs r4, r4, #0x10 + movs r0, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080D3794 + movs r0, #1 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080D3794 +_080D3768: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D3778: .4byte 0x00000283 +_080D377C: .4byte 0x00000281 +_080D3780: .4byte 0x00000279 +_080D3784: .4byte 0x00000282 +_080D3788: .4byte 0x0000027A +_080D378C: .4byte 0x0000027B +_080D3790: .4byte gUnknown_3001100 + thumb_func_end sub_080D35FC + + thumb_func_start sub_080D3794 +sub_080D3794: @ 0x080D3794 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r3, r5, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sl, r2 + cmp r0, #0 + bne _080D37CC + mov r2, sp + ldr r1, _080D37C8 + ldrb r0, [r1, #5] + strb r0, [r2] + ldrb r0, [r1, #0xa] + strb r0, [r2, #1] + ldrb r0, [r1, #0xf] + strb r0, [r2, #2] + mov r8, r5 + b _080D37EE + .align 2, 0 +_080D37C8: .4byte gUnknown_3001108 +_080D37CC: + cmp r0, #1 + beq _080D37D2 + b _080D39EA +_080D37D2: + mov r2, sp + ldr r1, _080D38A8 + ldrb r0, [r1, #9] + strb r0, [r2] + ldrb r0, [r1, #0xe] + strb r0, [r2, #1] + ldrb r0, [r1, #0x13] + strb r0, [r2, #2] + lsls r0, r3, #0x10 + movs r1, #0x80 + lsls r1, r1, #0xb + adds r0, r0, r1 + lsrs r0, r0, #0x10 + mov r8, r0 +_080D37EE: + mov r0, sp + ldrb r0, [r0] + cmp r0, #1 + bne _080D3866 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r5, r0, #0x10 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + adds r4, r0, #3 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + movs r1, #0x82 + lsls r1, r1, #2 + cmp r0, r1 + bne _080D381E + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08087C54 +_080D381E: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D38AC + cmp r0, r1 + bne _080D3836 + ldr r2, _080D38B0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3836: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D38B4 + cmp r0, r1 + bne _080D384E + ldr r2, _080D38B8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D384E: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D38BC + cmp r0, r1 + bne _080D3866 + ldr r2, _080D38C0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3866: + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #1 + bne _080D3960 + mov r0, r8 + lsls r5, r0, #0x10 + asrs r6, r5, #0x10 + mov r1, sl + lsls r4, r1, #0x10 + asrs r7, r4, #0x10 + adds r1, r7, #2 + adds r0, r6, #0 + bl sub_08087B88 + mov sb, r4 + cmp r0, #0x15 + bne _080D38F6 + adds r4, r7, #3 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r0, r6, #0 + bl sub_080D35A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080D38D4 + cmp r0, #2 + bgt _080D38C4 + cmp r0, #1 + beq _080D38CE + b _080D38F6 + .align 2, 0 +_080D38A8: .4byte gUnknown_3001108 +_080D38AC: .4byte 0x00000281 +_080D38B0: .4byte 0x00000279 +_080D38B4: .4byte 0x00000282 +_080D38B8: .4byte 0x0000027A +_080D38BC: .4byte 0x00000283 +_080D38C0: .4byte 0x0000027B +_080D38C4: + cmp r0, #3 + beq _080D38DC + cmp r0, #4 + beq _080D38EC + b _080D38F6 +_080D38CE: + movs r2, #0x82 + lsls r2, r2, #2 + b _080D38DE +_080D38D4: + ldr r2, _080D38D8 + b _080D38DE + .align 2, 0 +_080D38D8: .4byte 0x00000281 +_080D38DC: + ldr r2, _080D38E8 +_080D38DE: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08087C54 + b _080D38F6 + .align 2, 0 +_080D38E8: .4byte 0x00000282 +_080D38EC: + ldr r2, _080D39A0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D38F6: + asrs r5, r5, #0x10 + mov r1, sb + asrs r0, r1, #0x10 + adds r4, r0, #4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + movs r1, #0x82 + lsls r1, r1, #2 + cmp r0, r1 + bne _080D3918 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08087C54 +_080D3918: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D39A4 + cmp r0, r1 + bne _080D3930 + ldr r2, _080D39A8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3930: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D39AC + cmp r0, r1 + bne _080D3948 + ldr r2, _080D39B0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3948: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087B88 + ldr r1, _080D39A0 + cmp r0, r1 + bne _080D3960 + ldr r2, _080D39B4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3960: + mov r0, sp + ldrb r0, [r0, #2] + cmp r0, #1 + bne _080D39EA + mov r1, r8 + lsls r0, r1, #0x10 + asrs r5, r0, #0x10 + mov r1, sl + lsls r0, r1, #0x10 + asrs r4, r0, #0x10 + adds r1, r4, #3 + adds r0, r5, #0 + bl sub_08087B88 + cmp r0, #0x15 + bne _080D39EA + adds r4, #4 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_080D35A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080D39C8 + cmp r0, #2 + bgt _080D39B8 + cmp r0, #1 + beq _080D39C2 + b _080D39EA + .align 2, 0 +_080D39A0: .4byte 0x00000283 +_080D39A4: .4byte 0x00000281 +_080D39A8: .4byte 0x00000279 +_080D39AC: .4byte 0x00000282 +_080D39B0: .4byte 0x0000027A +_080D39B4: .4byte 0x0000027B +_080D39B8: + cmp r0, #3 + beq _080D39D0 + cmp r0, #4 + beq _080D39E0 + b _080D39EA +_080D39C2: + movs r2, #0x82 + lsls r2, r2, #2 + b _080D39D2 +_080D39C8: + ldr r2, _080D39CC + b _080D39D2 + .align 2, 0 +_080D39CC: .4byte 0x00000281 +_080D39D0: + ldr r2, _080D39DC +_080D39D2: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 + b _080D39EA + .align 2, 0 +_080D39DC: .4byte 0x00000282 +_080D39E0: + ldr r2, _080D39FC + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D39EA: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D39FC: .4byte 0x00000283 + thumb_func_end sub_080D3794 + + thumb_func_start sub_080D3A00 +sub_080D3A00: @ 0x080D3A00 + movs r2, #0 + movs r1, #8 + strh r1, [r0, #0x2e] + strh r2, [r0, #0x30] + strh r2, [r0, #0x34] + ldr r1, _080D3A10 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_080D3A10: .4byte sub_080D3A14 + thumb_func_end sub_080D3A00 + + thumb_func_start sub_080D3A14 +sub_080D3A14: @ 0x080D3A14 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #8 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x2e] + adds r1, #1 + ldrh r2, [r4, #0x34] + lsls r0, r2, #0x10 + asrs r0, r0, #0x12 + adds r1, r1, r0 + strh r1, [r4, #0x2e] + adds r2, #1 + strh r2, [r4, #0x34] + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x1c + beq _080D3A60 + adds r0, r1, #1 + strh r0, [r4, #0x30] + b _080D3A64 +_080D3A60: + ldr r0, _080D3A6C + str r0, [r4, #0x1c] +_080D3A64: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D3A6C: .4byte sub_080D3A70 + thumb_func_end sub_080D3A14 + + thumb_func_start sub_080D3A70 +sub_080D3A70: @ 0x080D3A70 + push {r4, r5, r6, lr} + movs r4, #1 +_080D3A74: + ldr r6, _080D3AD0 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _080D3AD4 + adds r0, r0, r5 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _080D3A74 + ldr r0, [r6] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x3a + bl sub_080B5444 + ldr r0, [r6] + bl sub_08000BF0 + movs r0, #0 + str r0, [r6] + bl sub_08097E7C + bl sub_080987E8 + bl sub_081D4094 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D3ACA + ldr r0, _080D3AD8 + bl sub_08098880 +_080D3ACA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D3AD0: .4byte gUnknown_2039A70 +_080D3AD4: .4byte gUnknown_20205AC +_080D3AD8: .4byte gUnknown_823B5A9 + thumb_func_end sub_080D3A70 + + thumb_func_start sub_080D3ADC +sub_080D3ADC: @ 0x080D3ADC + push {r4, r5, lr} + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089480 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D3B4E + adds r4, #1 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_080D35A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080D3B2A + cmp r0, #2 + bgt _080D3B1A + cmp r0, #1 + beq _080D3B24 + b _080D3B4E +_080D3B1A: + cmp r0, #3 + beq _080D3B34 + cmp r0, #4 + beq _080D3B44 + b _080D3B4E +_080D3B24: + movs r2, #0x82 + lsls r2, r2, #2 + b _080D3B36 +_080D3B2A: + ldr r2, _080D3B30 + b _080D3B36 + .align 2, 0 +_080D3B30: .4byte 0x00000281 +_080D3B34: + ldr r2, _080D3B40 +_080D3B36: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 + b _080D3B4E + .align 2, 0 +_080D3B40: .4byte 0x00000282 +_080D3B44: + ldr r2, _080D3B54 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 +_080D3B4E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3B54: .4byte 0x00000283 + thumb_func_end sub_080D3ADC + + thumb_func_start sub_080D3B58 +sub_080D3B58: @ 0x080D3B58 + push {r4, r5, lr} + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + cmp r0, #1 + bne _080D3BEA + adds r5, #1 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08089494 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D3BEA + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _080D3BA4 + cmp r1, r0 + beq _080D3BC8 + cmp r1, r0 + bgt _080D3BA8 + subs r0, #0x79 + cmp r1, r0 + beq _080D3BBC + b _080D3BEA + .align 2, 0 +_080D3BA4: .4byte 0x00000281 +_080D3BA8: + ldr r0, _080D3BB8 + cmp r1, r0 + beq _080D3BD0 + adds r0, #1 + cmp r1, r0 + beq _080D3BE0 + b _080D3BEA + .align 2, 0 +_080D3BB8: .4byte 0x00000282 +_080D3BBC: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_08087C54 + b _080D3BEA +_080D3BC8: + ldr r2, _080D3BCC + b _080D3BD2 + .align 2, 0 +_080D3BCC: .4byte 0x00000279 +_080D3BD0: + ldr r2, _080D3BDC +_080D3BD2: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _080D3BEA + .align 2, 0 +_080D3BDC: .4byte 0x0000027A +_080D3BE0: + ldr r2, _080D3BF0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 +_080D3BEA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3BF0: .4byte 0x0000027B + thumb_func_end sub_080D3B58 + + thumb_func_start sub_080D3BF4 +sub_080D3BF4: @ 0x080D3BF4 + push {lr} + movs r0, #0x80 + bl sub_080A306C + movs r0, #2 + bl sub_080B5568 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D3BF4 + + thumb_func_start sub_080D3C0C +sub_080D3C0C: @ 0x080D3C0C + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080D3C34 +_080D3C12: + lsls r1, r4, #3 + adds r1, r1, r4 + lsls r1, r1, #2 + ldr r0, _080D3C38 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r1 + bl sub_080D3C3C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080D3C12 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D3C34: .4byte gUnknown_3005AEC +_080D3C38: .4byte 0x00002BE0 + thumb_func_end sub_080D3C0C + + thumb_func_start sub_080D3C3C +sub_080D3C3C: @ 0x080D3C3C + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldr r0, _080D3C8C + adds r4, r0, #0 + adds r1, r3, #0 + movs r2, #8 +_080D3C48: + ldrh r0, [r1] + orrs r0, r4 + strh r0, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080D3C48 + movs r2, #0 + adds r6, r3, #0 + adds r6, #0x1a + adds r4, r3, #0 + adds r4, #0x12 + movs r5, #0xff +_080D3C62: + adds r1, r4, r2 + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + adds r2, #1 + cmp r2, #7 + ble _080D3C62 + adds r1, r6, #0 + movs r2, #0 + adds r0, r1, #3 +_080D3C76: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _080D3C76 + movs r1, #0 + movs r0, #1 + strh r0, [r3, #0x1e] + strh r1, [r3, #0x20] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D3C8C: .4byte 0x0000FFFF + thumb_func_end sub_080D3C3C + + thumb_func_start sub_080D3C90 +sub_080D3C90: @ 0x080D3C90 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D3CB8 + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0806A058 + cmp r0, #0xff + beq _080D3CB8 + movs r0, #1 + b _080D3CBA +_080D3CB8: + movs r0, #0 +_080D3CBA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080D3C90 + + thumb_func_start sub_080D3CC0 +sub_080D3CC0: @ 0x080D3CC0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + str r0, [sp, #8] + mov r0, sp + movs r2, #0 + ldrb r3, [r0, #8] + strb r3, [r0] + lsrs r1, r1, #0x18 + strb r1, [r0, #1] + add r4, sp, #4 + strb r2, [r4] + mov ip, r4 + mov sl, r4 + adds r5, r4, #0 +_080D3CEA: + ldr r2, _080D3E10 + ldr r0, [r2] + ldrb r3, [r5] + lsls r1, r3, #3 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0xb0 + lsls r1, r1, #6 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080D3D06 + b _080D3E2C +_080D3D06: + movs r4, #0 + ldr r3, _080D3E14 + mov sb, r3 + adds r7, r2, #0 + mov r5, ip + ldr r0, _080D3E18 + adds r6, r0, #0 +_080D3D14: + ldr r2, [r7] + lsls r3, r4, #1 + ldrb r1, [r5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + ldr r1, _080D3E1C + adds r2, r2, r1 + adds r2, r2, r3 + ldrh r0, [r2] + orrs r0, r6 + strh r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #8 + bls _080D3D14 + movs r4, #0 + ldr r5, _080D3E10 + mov r3, ip +_080D3D3E: + ldr r2, [r5] + ldrb r1, [r3] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r1, _080D3E20 + adds r2, r2, r1 + adds r2, r2, r0 + mov r1, sb + ldr r0, [r1] + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080D3D3E + ldr r3, _080D3E10 + ldr r2, [r3] + mov r0, ip + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r1, _080D3E20 + adds r2, r2, r1 + adds r2, r2, r0 + movs r0, #0xff + strb r0, [r2] + movs r4, #0 + adds r5, r3, #0 + mov r3, ip +_080D3D84: + ldr r2, [r5] + ldrb r1, [r3] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r1, _080D3E24 + adds r2, r2, r1 + adds r2, r2, r0 + mov r1, sb + ldr r0, [r1] + adds r0, #0xa + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080D3D84 + mov r0, r8 + movs r1, #0xb + bl sub_0806A1B4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, r8 + movs r1, #0 + bl sub_0806A1B4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080D3E4C + ldr r1, _080D3E10 + ldr r3, [r1] + mov r4, sl + ldrb r2, [r4] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r3, r1 + ldr r2, _080D3E28 + adds r1, r1, r2 + strh r0, [r1] + ldrb r1, [r4] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + movs r4, #0xb0 + lsls r4, r4, #6 + adds r3, r3, r4 + mov r0, sp + ldrh r0, [r0, #8] + strh r0, [r3] + mov r0, r8 + movs r1, #0x40 + mov r2, sl + bl sub_0806A774 + mov r0, r8 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + mov r1, sl + ldrb r0, [r1] + b _080D3E3A + .align 2, 0 +_080D3E10: .4byte gUnknown_3005AEC +_080D3E14: .4byte gUnknown_3005AF0 +_080D3E18: .4byte 0x0000FFFF +_080D3E1C: .4byte 0x00002BE0 +_080D3E20: .4byte 0x00002BF2 +_080D3E24: .4byte 0x00002BFA +_080D3E28: .4byte 0x00002BFE +_080D3E2C: + adds r0, r3, #1 + strb r0, [r4] + ldrb r0, [r5] + cmp r0, #5 + bhi _080D3E38 + b _080D3CEA +_080D3E38: + movs r0, #0xff +_080D3E3A: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D3CC0 + + thumb_func_start sub_080D3E4C +sub_080D3E4C: @ 0x080D3E4C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc9 + bne _080D3E64 + adds r0, r1, #0 + bl sub_080D26E8 + lsls r0, r0, #0x10 + ldr r1, _080D3E68 + adds r0, r0, r1 + lsrs r0, r0, #0x10 +_080D3E64: + pop {r1} + bx r1 + .align 2, 0 +_080D3E68: .4byte 0x75300000 + thumb_func_end sub_080D3E4C + + thumb_func_start sub_080D3E6C +sub_080D3E6C: @ 0x080D3E6C + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _080D3E84 + adds r2, r3, r0 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1b + bhi _080D3E88 + movs r0, #0xc9 + strh r2, [r1] + b _080D3E8A + .align 2, 0 +_080D3E84: .4byte 0xFFFF8AD0 +_080D3E88: + adds r0, r3, #0 +_080D3E8A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D3E6C + + thumb_func_start sub_080D3E90 +sub_080D3E90: @ 0x080D3E90 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r0, #0 + adds r7, r1, #0 + ldrh r5, [r7, #0x20] + adds r1, r5, #0 + bl sub_080D3CC0 + add r4, sp, #4 + strb r0, [r4] + ldrb r2, [r4] + cmp r2, #0xff + beq _080D3EF4 + ldr r0, _080D3EEC + ldr r1, [r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080D3EF0 + adds r1, 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_0806A774 + mov r0, sp + strb r5, [r0] + mov r1, sp + lsrs r0, r5, #8 + strb r0, [r1, #1] + adds r0, r6, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + ldrb r0, [r4] + b _080D3EF6 + .align 2, 0 +_080D3EEC: .4byte gUnknown_3005AEC +_080D3EF0: .4byte 0x00002BE0 +_080D3EF4: + movs r0, #0xff +_080D3EF6: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D3E90 + + thumb_func_start sub_080D3F00 +sub_080D3F00: @ 0x080D3F00 + movs r0, #0 + bx lr + thumb_func_end sub_080D3F00 + + thumb_func_start sub_080D3F04 +sub_080D3F04: @ 0x080D3F04 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + bl sub_080D3C90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D3F56 + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0806A058 + add r2, sp, #4 + strb r0, [r2] + ldr r0, _080D3F60 + ldr r3, [r0] + ldrb r1, [r2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + movs r0, #0xb0 + lsls r0, r0, #6 + adds r3, 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, #1] + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_080D3F56: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D3F60: .4byte gUnknown_3005AEC + thumb_func_end sub_080D3F04 + + thumb_func_start sub_080D3F64 +sub_080D3F64: @ 0x080D3F64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080D3F80 + ldr r2, [r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r2, r1 + movs r0, #0xb0 + lsls r0, r0, #6 + adds r2, r2, r0 + movs r0, #0 + strh r0, [r2] + bx lr + .align 2, 0 +_080D3F80: .4byte gUnknown_3005AEC + thumb_func_end sub_080D3F64 + + thumb_func_start sub_080D3F84 +sub_080D3F84: @ 0x080D3F84 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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, #1] + add r1, sp, #4 + movs r0, #0xff + strb r0, [r1] + movs r7, #6 + mov sb, r1 + ldr r0, _080D401C + mov r8, r0 + ldr r3, _080D4020 +_080D3FA8: + mov r1, r8 + ldr r0, [r1] + lsls r1, r7, #3 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r4, r0, r1 + movs r2, #0xb0 + lsls r2, r2, #6 + adds r0, r4, r2 + ldrh r6, [r0] + cmp r6, #0 + bne _080D4024 + adds r4, r4, r3 + adds r0, r5, #0 + movs r1, #0x40 + str r3, [sp, #8] + bl sub_0806A058 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r3, [sp, #8] + adds r1, 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_0806A058 + mov r1, r8 + ldr r2, [r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r2, r1 + movs r3, #0xb0 + lsls r3, r3, #6 + adds r2, r2, r3 + strh r6, [r2] + adds r0, r5, #0 + movs r1, #0x40 + mov r2, sb + bl sub_0806A774 + adds r0, r5, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r0, r7, #0 + b _080D4030 + .align 2, 0 +_080D401C: .4byte gUnknown_3005AEC +_080D4020: .4byte 0x00002BE0 +_080D4024: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xf + bls _080D3FA8 + movs r0, #0xff +_080D4030: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D3F84 + + thumb_func_start sub_080D4040 +sub_080D4040: @ 0x080D4040 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x84 + bgt _080D4052 + cmp r0, #0x79 + blt _080D4052 + movs r0, #1 + b _080D4054 +_080D4052: + movs r0, #0 +_080D4054: + pop {r1} + bx r1 + thumb_func_end sub_080D4040 + + thumb_func_start sub_080D4058 +sub_080D4058: @ 0x080D4058 + push {lr} + bl sub_080A01FC + bl sub_080D4068 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_080D4058 + + thumb_func_start sub_080D4068 +sub_080D4068: @ 0x080D4068 + push {r4, lr} + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080D40F0 + ldr r4, _080D40BC + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D40C8 + adds r0, r4, #0 + movs r1, #0x5a + bl sub_080A8878 + ldr r4, _080D40C0 + strb r0, [r4] + movs r0, #0x12 + movs r1, #0x28 + bl sub_08001144 + ldr r2, _080D40C4 + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #6 + strh r1, [r0, #8] + ldrb r1, [r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x28 + strh r1, [r0, #0xc] + b _080D40F0 + .align 2, 0 +_080D40BC: .4byte sub_080D4100 +_080D40C0: .4byte gUnknown_2039A74 +_080D40C4: .4byte gUnknown_3005B60 +_080D40C8: + ldr r3, _080D40F8 + ldr r2, _080D40FC + ldrb r0, [r2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r3 + movs r4, #8 + ldrsh r0, [r1, r4] + cmp r0, #2 + beq _080D40E2 + movs r0, #2 + strh r0, [r1, #8] +_080D40E2: + ldrb r0, [r2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r3 + movs r0, #1 + strh r0, [r1, #0xe] +_080D40F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D40F8: .4byte gUnknown_3005B60 +_080D40FC: .4byte gUnknown_2039A74 + thumb_func_end sub_080D4068 + + thumb_func_start sub_080D4100 +sub_080D4100: @ 0x080D4100 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080D4124 + adds r4, r1, r0 + movs r2, #8 + ldrsh r1, [r4, r2] + adds r3, r0, #0 + cmp r1, #6 + bhi _080D41EA + lsls r0, r1, #2 + ldr r1, _080D4128 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D4124: .4byte gUnknown_3005B60 +_080D4128: .4byte _080D412C +_080D412C: @ jump table + .4byte _080D4162 @ case 0 + .4byte _080D418C @ case 1 + .4byte _080D41A4 @ case 2 + .4byte _080D41EA @ case 3 + .4byte _080D41D0 @ case 4 + .4byte _080D41E4 @ case 5 + .4byte _080D4148 @ case 6 +_080D4148: + ldrh r0, [r4, #0x10] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _080D41EA + strh r1, [r4, #8] + strh r1, [r4, #0x10] + bl sub_080D4234 + b _080D41EA +_080D4162: + ldrh r0, [r4, #0xc] + subs r0, #2 + movs r2, #0 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080D41EA + strh r2, [r4, #0xc] + movs r0, #1 + strh r0, [r4, #8] + ldr r0, _080D4188 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r3 + strh r2, [r0, #0xa] + b _080D41EA + .align 2, 0 +_080D4188: .4byte gUnknown_2039A74 +_080D418C: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x78 + ble _080D41EA + movs r0, #0 + strh r0, [r4, #0xa] + movs r0, #2 + strh r0, [r4, #8] + b _080D41EA +_080D41A4: + ldrh r0, [r4, #0xc] + adds r0, #2 + movs r1, #0 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + ble _080D41EA + movs r0, #0x28 + strh r0, [r4, #0xc] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080D41CA + movs r0, #6 + strh r0, [r4, #8] + strh r1, [r4, #0x10] + strh r1, [r4, #0xe] + b _080D41EA +_080D41CA: + movs r0, #4 + strh r0, [r4, #8] + b _080D41F2 +_080D41D0: + bl sub_0819787C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08197060 + movs r0, #5 + strh r0, [r4, #8] + b _080D41EA +_080D41E4: + bl sub_080D41F8 + b _080D41F2 +_080D41EA: + ldrh r1, [r4, #0xc] + movs r0, #0x12 + bl sub_08001144 +_080D41F2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080D4100 + + thumb_func_start sub_080D41F8 +sub_080D41F8: @ 0x080D41F8 + push {lr} + ldr r0, _080D422C + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D4228 + bl sub_0819787C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08197060 + bl sub_08197888 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + ldr r0, _080D4230 + ldrb r0, [r0] + bl sub_080A8964 +_080D4228: + pop {r0} + bx r0 + .align 2, 0 +_080D422C: .4byte sub_080D4100 +_080D4230: .4byte gUnknown_2039A74 + thumb_func_end sub_080D41F8 + + thumb_func_start sub_080D4234 +sub_080D4234: @ 0x080D4234 + push {r4, r5, lr} + sub sp, #0x24 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D428C + ldr r0, _080D4258 + ldrh r1, [r0, #0x12] + movs r0, #0xbd + lsls r0, r0, #1 + cmp r1, r0 + bne _080D4260 + mov r4, sp + adds r4, #0xf + ldr r0, _080D425C + ldr r1, [r0, #0x1c] + b _080D4276 + .align 2, 0 +_080D4258: .4byte gUnknown_2036FB8 +_080D425C: .4byte gUnknown_855A074 +_080D4260: + mov r4, sp + adds r4, #0xf + ldr r1, _080D4280 + ldr r0, _080D4284 + ldr r0, [r0] + ldr r2, _080D4288 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] +_080D4276: + adds r0, r4, #0 + bl sub_080088B8 + b _080D429C + .align 2, 0 +_080D4280: .4byte gUnknown_855A074 +_080D4284: .4byte gUnknown_3005AF0 +_080D4288: .4byte 0x00000CB2 +_080D428C: + mov r4, sp + adds r4, #0xf + ldr r0, _080D42F8 + ldrb r1, [r0, #0x14] + adds r0, r4, #0 + movs r2, #0 + bl sub_08124578 +_080D429C: + bl sub_08197844 + bl sub_080D4464 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0xa + subs r4, r4, r0 + lsls r4, r4, #0x1a + lsrs r4, r4, #0x18 + add r1, sp, #0xc + movs r5, #0 + movs r0, #0xfc + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + adds r0, r1, #0 + strb r5, [r0, #2] + bl sub_0819787C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #4 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + add r2, sp, #0xc + adds r3, r4, #0 + bl sub_0800449C + bl sub_0819787C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_08003528 + add sp, #0x24 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D42F8: .4byte gUnknown_2036FB8 + thumb_func_end sub_080D4234 + + thumb_func_start sub_080D42FC +sub_080D42FC: @ 0x080D42FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r4, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x10] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x14] + movs r5, #0 + lsls r0, r1, #0x18 + asrs r1, r0, #0x18 + lsrs r3, r2, #0x18 + str r3, [sp, #0xc] + movs r6, #0xff + lsls r6, r6, #0x18 + adds r6, r6, r2 + mov r8, r6 + str r0, [sp, #0x18] + subs r4, r1, #1 +_080D4338: + ldr r0, _080D4448 + adds r1, r5, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + movs r3, #1 + str r3, [sp] + str r3, [sp, #4] + movs r6, #0xe + mov sb, r6 + str r6, [sp, #8] + adds r0, r7, #0 + mov r6, r8 + lsrs r3, r6, #0x18 + bl sub_080026E0 + adds r4, #1 + adds r5, #1 + cmp r5, #0xb + ble _080D4338 + ldr r1, _080D444C + movs r0, #1 + rsbs r0, r0, #0 + add r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + mov r2, sb + str r2, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + ldr r3, [sp, #0xc] + bl sub_080026E0 + ldr r1, _080D4450 + ldr r6, [sp, #0x10] + add r6, sl + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r5, [sp] + str r5, [sp, #4] + mov r3, sb + str r3, [sp, #8] + adds r0, r7, #0 + adds r2, r6, #0 + ldr r3, [sp, #0xc] + bl sub_080026E0 + ldr r1, _080D4454 + ldr r4, [sp, #0xc] + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r5, [sp] + str r5, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_080026E0 + movs r1, #0x8b + lsls r1, r1, #2 + str r5, [sp] + str r5, [sp, #4] + mov r2, sb + str r2, [sp, #8] + adds r0, r7, #0 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080026E0 + ldr r1, _080D4458 + ldr r4, [sp, #0xc] + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r5, [sp] + str r5, [sp, #4] + mov r3, sb + str r3, [sp, #8] + adds r0, r7, #0 + mov r2, r8 + adds r3, r4, #0 + bl sub_080026E0 + ldr r1, _080D445C + str r5, [sp] + str r5, [sp, #4] + mov r0, sb + str r0, [sp, #8] + adds r0, r7, #0 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080026E0 + movs r5, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x14] + adds r0, r1, r2 + lsls r4, r0, #0x18 + movs r6, #1 +_080D440E: + ldr r3, _080D4460 + adds r1, r5, r3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + subs r0, r5, #1 + ldr r3, [sp, #0x18] + asrs r2, r3, #0x18 + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r6, [sp] + str r6, [sp, #4] + movs r0, #0xe + str r0, [sp, #8] + adds r0, r7, #0 + lsrs r3, r4, #0x18 + bl sub_080026E0 + adds r5, #1 + cmp r5, #0xb + ble _080D440E + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4448: .4byte 0x0000021D +_080D444C: .4byte 0x00000229 +_080D4450: .4byte 0x0000022A +_080D4454: .4byte 0x0000022B +_080D4458: .4byte 0x0000022D +_080D445C: .4byte 0x0000022E +_080D4460: .4byte 0x0000022F + thumb_func_end sub_080D42FC + + thumb_func_start sub_080D4464 +sub_080D4464: @ 0x080D4464 + push {r4, r5, lr} + sub sp, #8 + bl sub_0819787C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080D4488 + ldrb r1, [r0, #0x14] + cmp r1, #0x57 + bls _080D448E + cmp r1, #0xc4 + bls _080D448C + adds r0, r1, #0 + subs r0, #0x6d + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + b _080D448E + .align 2, 0 +_080D4488: .4byte gUnknown_2036FB8 +_080D448C: + movs r1, #0 +_080D448E: + ldr r0, _080D44D8 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #4 + subs r1, r1, r4 + lsls r1, r1, #6 + ldr r2, _080D44DC + adds r1, r1, r2 + movs r2, #0x80 + lsls r2, r2, #3 + ldr r3, _080D44E0 + bl sub_0800195C + ldr r1, _080D44E4 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + bl sub_0800365C + ldr r0, _080D44E8 + ldrb r0, [r0, #0x16] + cmp r0, #0xe + bne _080D44F0 + ldr r0, _080D44EC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + b _080D44FE + .align 2, 0 +_080D44D8: .4byte gUnknown_8559FC0 +_080D44DC: .4byte gUnknown_8558860 +_080D44E0: .4byte 0x0000021D +_080D44E4: .4byte sub_080D42FC +_080D44E8: .4byte gUnknown_2036FB8 +_080D44EC: .4byte gUnknown_8559FA0 +_080D44F0: + lsls r0, r4, #5 + ldr r1, _080D4524 + adds r0, r0, r1 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 +_080D44FE: + lsls r1, r4, #4 + subs r1, r1, r4 + lsls r1, r1, #6 + ldr r0, _080D4528 + adds r1, r1, r0 + movs r0, #0x50 + str r0, [sp] + movs r0, #0x18 + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_08003874 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4524: .4byte gUnknown_8559EE0 +_080D4528: .4byte gUnknown_85571E0 + thumb_func_end sub_080D4464 + + thumb_func_start sub_080D452C +sub_080D452C: @ 0x080D452C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080D4578 + ldr r2, _080D457C + adds r1, r4, r2 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + beq _080D4572 + adds r4, #0x64 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080D4580 + adds r0, r0, r4 + bl sub_0800730C + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0xff + strb r0, [r5] +_080D4572: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4578: .4byte gUnknown_203CB20 +_080D457C: .4byte 0x00000804 +_080D4580: .4byte gUnknown_20205AC + thumb_func_end sub_080D452C + + thumb_func_start sub_080D4584 +sub_080D4584: @ 0x080D4584 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080D45B0 + ldr r4, [r0] + ldr r0, _080D45B4 + adds r4, r4, r0 + ldr r0, _080D45B8 + movs r1, #0x44 + movs r2, #0x42 + movs r3, #0 + bl sub_08006B0C + strb r0, [r4] + adds r0, r5, #0 + movs r1, #0 + bl sub_080D45BC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D45B0: .4byte gUnknown_203CB20 +_080D45B4: .4byte 0x00000804 +_080D45B8: .4byte gUnknown_855A67C + thumb_func_end sub_080D4584 + + thumb_func_start sub_080D45BC +sub_080D45BC: @ 0x080D45BC + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + ldr r0, _080D45F4 + ldr r0, [r0] + ldr r2, _080D45F8 + adds r0, r0, r2 + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080D45FC + adds r2, r0, r2 + cmp r1, #0 + beq _080D4608 + ldr r0, _080D4600 + strh r0, [r2, #0x26] + ldr r0, _080D4604 + str r0, [r2, #0x1c] + adds r0, r3, #1 + strh r0, [r2, #0x2e] + adds r0, r2, #0 + movs r1, #0 + bl sub_08007EC0 + b _080D4614 + .align 2, 0 +_080D45F4: .4byte gUnknown_203CB20 +_080D45F8: .4byte 0x00000804 +_080D45FC: .4byte gUnknown_20205AC +_080D4600: .4byte 0x0000FFFB +_080D4604: .4byte sub_080D4618 +_080D4608: + adds r1, r3, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 +_080D4614: + pop {r0} + bx r0 + thumb_func_end sub_080D45BC + + thumb_func_start sub_080D4618 +sub_080D4618: @ 0x080D4618 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x26] + movs r2, #0x26 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080D462C + adds r0, r1, #1 + strh r0, [r4, #0x26] + b _080D463C +_080D462C: + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _080D4644 + str r0, [r4, #0x1c] +_080D463C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4644: .4byte sub_08007140 + thumb_func_end sub_080D4618 + + thumb_func_start sub_080D4648 +sub_080D4648: @ 0x080D4648 + push {r4, lr} + ldr r0, _080D4680 + ldr r0, [r0] + ldr r1, _080D4684 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080D4688 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080D4678 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldr r0, _080D468C + str r0, [r4, #0x1c] +_080D4678: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4680: .4byte gUnknown_203CB20 +_080D4684: .4byte 0x00000804 +_080D4688: .4byte gUnknown_20205AC +_080D468C: .4byte sub_080D4690 + thumb_func_end sub_080D4648 + + thumb_func_start sub_080D4690 +sub_080D4690: @ 0x080D4690 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080D46AC + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + ldr r0, _080D46B4 + str r0, [r4, #0x1c] +_080D46AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D46B4: .4byte sub_08007140 + thumb_func_end sub_080D4690 + + thumb_func_start sub_080D46B8 +sub_080D46B8: @ 0x080D46B8 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080D46F8 + ldr r4, [r0] + ldr r0, _080D46FC + adds r4, r4, r0 + ldr r0, _080D4700 + bl sub_08008210 + ldr r0, _080D4704 + bl sub_0800845C + ldr r0, _080D4708 + movs r1, #0x10 + movs r2, #0x10 + movs r3, #0 + bl sub_08006B0C + strb r0, [r4] + ldr r2, _080D470C + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x2e] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D46F8: .4byte gUnknown_203CB20 +_080D46FC: .4byte 0x00000805 +_080D4700: .4byte gUnknown_855A6D0 +_080D4704: .4byte gUnknown_855A6D8 +_080D4708: .4byte gUnknown_855A6E0 +_080D470C: .4byte gUnknown_20205AC + thumb_func_end sub_080D46B8 + + thumb_func_start sub_080D4710 +sub_080D4710: @ 0x080D4710 + ldrh r2, [r0, #0x30] + ldrh r1, [r0, #0x34] + adds r1, #1 + movs r3, #1 + ands r1, r3 + subs r2, r2, r1 + adds r1, r0, #0 + adds r1, #0x28 + strb r2, [r1] + ldrh r2, [r0, #0x30] + ldrh r1, [r0, #0x34] + adds r1, #1 + ands r1, r3 + subs r2, r2, r1 + adds r0, #0x29 + strb r2, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_080D4710 + + thumb_func_start sub_080D4734 +sub_080D4734: @ 0x080D4734 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080D475C + ldr r0, _080D4758 + b _080D475E + .align 2, 0 +_080D4758: .4byte gUnknown_855A6C8 +_080D475C: + ldr r0, _080D4790 +_080D475E: + str r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08008140 + adds r0, r4, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x30] + adds r0, r4, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x30] + adds r0, r4, #0 + bl sub_080D4710 + ldr r0, _080D4794 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D4790: .4byte gUnknown_855A6CC +_080D4794: .4byte sub_080D4798 + thumb_func_end sub_080D4734 + + thumb_func_start sub_080D4798 +sub_080D4798: @ 0x080D4798 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + adds r0, r4, #0 + bl sub_080D4710 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _080D47B6 + movs r0, #1 + bl sub_080D452C +_080D47B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080D4798 + + thumb_func_start sub_080D47BC +sub_080D47BC: @ 0x080D47BC + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _080D4810 + ldr r2, _080D4814 + adds r1, r4, r2 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + bne _080D480A + adds r4, #0x66 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081AFB48 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _080D480A + strb r2, [r5] + ldr r1, _080D4818 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x18 + strh r1, [r0, #0x24] + movs r1, #0x58 + strh r1, [r0, #0x26] +_080D480A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4810: .4byte gUnknown_203CB20 +_080D4814: .4byte 0x00000806 +_080D4818: .4byte gUnknown_20205AC + thumb_func_end sub_080D47BC + + thumb_func_start sub_080D481C +sub_080D481C: @ 0x080D481C + push {lr} + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x12 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + bl sub_080D452C + pop {r0} + bx r0 + thumb_func_end sub_080D481C + + thumb_func_start sub_080D4830 +sub_080D4830: @ 0x080D4830 + push {lr} + ldr r0, _080D4844 + ldr r0, [r0] + ldr r1, _080D4848 + adds r0, r0, r1 + movs r1, #8 + bl sub_08122350 + pop {r0} + bx r0 + .align 2, 0 +_080D4844: .4byte gUnknown_203CB20 +_080D4848: .4byte 0x00000808 + thumb_func_end sub_080D4830 + + thumb_func_start sub_080D484C +sub_080D484C: @ 0x080D484C + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080D4868 + ldr r0, [r0] + ldr r1, _080D486C + adds r0, r0, r1 + movs r1, #8 + bl sub_08122408 + pop {r0} + bx r0 + .align 2, 0 +_080D4868: .4byte gUnknown_203CB20 +_080D486C: .4byte 0x00000808 + thumb_func_end sub_080D484C + + thumb_func_start sub_080D4870 +sub_080D4870: @ 0x080D4870 + push {lr} + adds r3, r0, #0 + lsls r3, r3, #0x18 + ldr r0, _080D4894 + ldr r0, [r0] + ldr r1, _080D4898 + adds r0, r0, r1 + lsrs r3, r3, #4 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r3, r3, r1 + lsrs r3, r3, #0x10 + movs r1, #0x88 + movs r2, #0x78 + bl sub_08122454 + pop {r0} + bx r0 + .align 2, 0 +_080D4894: .4byte gUnknown_203CB20 +_080D4898: .4byte 0x00000808 + thumb_func_end sub_080D4870 + + thumb_func_start sub_080D489C +sub_080D489C: @ 0x080D489C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r4, r1, #0 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r4, #0 + movs r1, #0 + bl memset + movs r0, #0x80 + lsls r0, r0, #1 + adds r4, r4, r0 + movs r7, #0 +_080D48BA: + adds r4, #0x20 + movs r5, #0 + adds r1, r7, #1 + mov r8, r1 +_080D48C2: + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x20 + bl memcpy + adds r4, #0x20 + adds r6, #0x20 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _080D48C2 + cmp r7, #5 + beq _080D48E0 + adds r4, #0x20 +_080D48E0: + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #5 + bls _080D48BA + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D489C + + thumb_func_start sub_080D48F4 +sub_080D48F4: @ 0x080D48F4 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r4, #0x2a + bne _080D4906 + bl sub_080E0B78 +_080D4906: + ldr r5, _080D4944 + lsls r4, r4, #3 + adds r0, r5, #4 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp] + ldr r1, _080D4948 + ldr r0, [sp, #4] + ands r0, r1 + ldr r1, _080D494C + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_080343E4 + adds r4, r4, r5 + ldr r0, [r4] + ldr r4, _080D4950 + adds r1, r4, #0 + bl sub_08034370 + ldr r0, _080D4954 + adds r1, r4, r0 + adds r0, r4, #0 + bl sub_080D489C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4944: .4byte gUnknown_855A7C4 +_080D4948: .4byte 0xFFFF0000 +_080D494C: .4byte 0x00007544 +_080D4950: .4byte gUnknown_201D000 +_080D4954: .4byte 0xFFFFF000 + thumb_func_end sub_080D48F4 + + thumb_func_start sub_080D4958 +sub_080D4958: @ 0x080D4958 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_080D48F4 + ldr r0, _080D498C + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080D498C: .4byte gUnknown_855A71C + thumb_func_end sub_080D4958 + + thumb_func_start sub_080D4990 +sub_080D4990: @ 0x080D4990 + push {lr} + ldr r0, _080D499C + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 +_080D499C: .4byte 0x00007544 + thumb_func_end sub_080D4990 + + thumb_func_start sub_080D49A0 +sub_080D49A0: @ 0x080D49A0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _080D4A04 + bl sub_08008564 + adds r0, r4, #0 + bl sub_080D48F4 + ldr r0, _080D4A08 + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r4, r1, #0 + mov r0, r8 + cmp r0, #1 + bne _080D49F6 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080D4A0C + adds r0, r0, r1 + movs r1, #1 + bl sub_08007F70 +_080D49F6: + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080D4A04: .4byte 0x00007544 +_080D4A08: .4byte gUnknown_855A7AC +_080D4A0C: .4byte gUnknown_20205AC + thumb_func_end sub_080D49A0 + + thumb_func_start sub_080D4A10 +sub_080D4A10: @ 0x080D4A10 + push {lr} + adds r1, r0, #0 + ldr r0, _080D4A2C + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x63 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080D4A2C: .4byte gUnknown_855A940 + thumb_func_end sub_080D4A10 + + thumb_func_start sub_080D4A30 +sub_080D4A30: @ 0x080D4A30 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080D4A50 + ldrb r0, [r4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _080D4A54 + adds r0, r5, #0 + bl sub_080A34E4 + b _080D4A90 + .align 2, 0 +_080D4A50: .4byte gUnknown_20380BE +_080D4A54: + ldr r1, _080D4A98 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r4, #2] + strh r1, [r0, #0x24] + ldrh r1, [r4, #4] + strh r1, [r0, #0x26] + ldr r1, _080D4A9C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #8] + ldrh r1, [r4, #6] + strh r1, [r0, #0xa] + ldrh r1, [r4, #8] + strh r1, [r0, #0xc] + ldrh r1, [r4, #8] + strh r1, [r0, #0xe] + ldrh r1, [r4, #2] + strh r1, [r0, #0x10] + ldrh r1, [r4, #4] + strh r1, [r0, #0x12] + ldr r1, _080D4AA0 + str r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_080D4A90: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4A98: .4byte gUnknown_20205AC +_080D4A9C: .4byte gUnknown_3005B60 +_080D4AA0: .4byte sub_080D4AA4 + thumb_func_end sub_080D4A30 + + thumb_func_start sub_080D4AA4 +sub_080D4AA4: @ 0x080D4AA4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080D4AE0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, 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 _080D4B4A + ldr r2, _080D4AE4 + movs r6, #8 + ldrsh r1, [r3, r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r6, #0x24 + ldrsh r0, [r1, r6] + adds r6, r2, #0 + cmp r0, #0 + bne _080D4AE8 + ldrh r0, [r3, #0x10] + strh r0, [r1, #0x24] + b _080D4AEA + .align 2, 0 +_080D4AE0: .4byte gUnknown_3005B60 +_080D4AE4: .4byte gUnknown_20205AC +_080D4AE8: + strh r5, [r1, #0x24] +_080D4AEA: + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r3, r0, r7 + movs r0, #8 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + movs r5, #0x26 + ldrsh r0, [r1, r5] + cmp r0, #0 + bne _080D4B0A + ldrh r0, [r3, #0x12] + b _080D4B0C +_080D4B0A: + movs r0, #0 +_080D4B0C: + strh r0, [r1, #0x26] + adds r0, r2, r4 + lsls r0, r0, #3 + adds r2, r0, r7 + ldrh r0, [r2, #0xc] + strh r0, [r2, #0xe] + ldrh r0, [r2, #0xa] + subs r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r3, r0, #0x10 + cmp r3, #0 + bne _080D4B4E + movs r0, #8 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r3, [r0, #0x24] + movs r5, #8 + ldrsh r1, [r2, r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r3, [r0, #0x26] + adds r0, r4, #0 + bl sub_080A34E4 + b _080D4B4E +_080D4B4A: + subs r0, #1 + strh r0, [r3, #0xe] +_080D4B4E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D4AA4 + + thumb_func_start sub_080D4B54 +sub_080D4B54: @ 0x080D4B54 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _080D4B7C + ldrh r0, [r2] + movs r3, #0 + ldrsh r1, [r2, r3] + cmp r1, #3 + bgt _080D4B80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xff + bne _080D4BD6 + b _080D4BDA + .align 2, 0 +_080D4B7C: .4byte gUnknown_20380BE +_080D4B80: + cmp r1, #8 + beq _080D4BCC + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, #5 + beq _080D4BA0 + cmp r0, #5 + bgt _080D4B96 + cmp r0, #4 + beq _080D4B9C + b _080D4BA8 +_080D4B96: + cmp r0, #6 + beq _080D4BA4 + b _080D4BA8 +_080D4B9C: + movs r0, #0 + b _080D4BAA +_080D4BA0: + movs r0, #2 + b _080D4BAA +_080D4BA4: + movs r0, #1 + b _080D4BAA +_080D4BA8: + movs r0, #3 +_080D4BAA: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D4BC0 + movs r6, #1 +_080D4BC0: + ldr r0, _080D4BC8 + adds r0, r4, r0 + b _080D4BD4 + .align 2, 0 +_080D4BC8: .4byte gUnknown_2023E88 +_080D4BCC: + ldr r1, _080D4BE4 + ldr r0, _080D4BE8 + ldrb r0, [r0] + adds r0, r0, r1 +_080D4BD4: + ldrb r3, [r0] +_080D4BD6: + cmp r6, #0 + beq _080D4BEC +_080D4BDA: + adds r0, r5, #0 + bl sub_080A34E4 + b _080D4C2A + .align 2, 0 +_080D4BE4: .4byte gUnknown_2023E88 +_080D4BE8: .4byte gUnknown_20380D6 +_080D4BEC: + ldr r1, _080D4C30 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, _080D4C34 + ldrh r1, [r2, #2] + strh r1, [r0, #0x24] + ldrh r1, [r2, #4] + strh r1, [r0, #0x26] + ldr r1, _080D4C38 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r3, [r0, #8] + ldrh r1, [r2, #6] + strh r1, [r0, #0xa] + ldrh r1, [r2, #8] + strh r1, [r0, #0xc] + ldrh r1, [r2, #8] + strh r1, [r0, #0xe] + ldrh r1, [r2, #2] + strh r1, [r0, #0x10] + ldrh r1, [r2, #4] + strh r1, [r0, #0x12] + ldr r1, _080D4C3C + str r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_080D4C2A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4C30: .4byte gUnknown_20205AC +_080D4C34: .4byte gUnknown_20380BE +_080D4C38: .4byte gUnknown_3005B60 +_080D4C3C: .4byte sub_080D4C40 + thumb_func_end sub_080D4B54 + + thumb_func_start sub_080D4C40 +sub_080D4C40: @ 0x080D4C40 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080D4C84 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r2, [r3, #0xe] + movs r4, #0xe + ldrsh r0, [r3, r4] + mov ip, r1 + cmp r0, #0 + bne _080D4CF8 + ldr r2, _080D4C88 + movs r7, #8 + ldrsh r1, [r3, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, 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 _080D4C8C + rsbs r0, r5, #0 + strh r0, [r4, #0x24] + b _080D4C8E + .align 2, 0 +_080D4C84: .4byte gUnknown_3005B60 +_080D4C88: .4byte gUnknown_20205AC +_080D4C8C: + strh r5, [r4, #0x24] +_080D4C8E: + lsls r3, r6, #2 + adds r1, r3, r6 + lsls r1, r1, #3 + add r1, ip + movs r0, #8 + ldrsh r2, [r1, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, 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 _080D4CB8 + rsbs r0, r5, #0 + strh r0, [r4, #0x26] + b _080D4CBA +_080D4CB8: + strh r5, [r4, #0x26] +_080D4CBA: + adds r0, r3, r6 + lsls r0, r0, #3 + mov r4, ip + adds r3, r0, r4 + ldrh r0, [r3, #0xc] + strh r0, [r3, #0xe] + ldrh r0, [r3, #0xa] + subs r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + bne _080D4CFC + movs r0, #8 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x24] + movs r4, #8 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 + b _080D4CFC +_080D4CF8: + subs r0, r2, #1 + strh r0, [r3, #0xe] +_080D4CFC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D4C40 + + thumb_func_start sub_080D4D08 +sub_080D4D08: @ 0x080D4D08 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080D4D28 + ldrb r0, [r4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xff + bne _080D4D2C + adds r0, r5, #0 + bl sub_080A34E4 + b _080D4D7A + .align 2, 0 +_080D4D28: .4byte gUnknown_20380BE +_080D4D2C: + ldr r0, _080D4D80 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r4, #2] + ldrh r2, [r1, #0x24] + adds r0, r0, r2 + movs r2, #0 + strh r0, [r1, #0x24] + ldrh r0, [r4, #4] + ldrh r6, [r1, #0x26] + adds r0, r0, r6 + strh r0, [r1, #0x26] + ldr r0, _080D4D84 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r3, [r1, #8] + strh r2, [r1, #0xa] + ldrh r0, [r4, #6] + strh r0, [r1, #0xc] + strh r2, [r1, #0xe] + ldrh r0, [r4, #8] + strh r0, [r1, #0x10] + movs r2, #2 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + strh r0, [r1, #0x12] + movs r6, #4 + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + strh r0, [r1, #0x14] + ldr r2, _080D4D88 + str r2, [r1] + adds r0, r5, #0 + bl _call_via_r2 +_080D4D7A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D4D80: .4byte gUnknown_20205AC +_080D4D84: .4byte gUnknown_3005B60 +_080D4D88: .4byte sub_080D4D8C + thumb_func_end sub_080D4D08 + + thumb_func_start sub_080D4D8C +sub_080D4D8C: @ 0x080D4D8C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080D4DE4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, 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 _080D4DAA + b _080D4EBC +_080D4DAA: + ldrh r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D4DEC + ldr r2, _080D4DE8 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x12] + ldrh r3, [r0, #0x24] + adds r1, r1, r3 + strh r1, [r0, #0x24] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x14] + ldrh r3, [r0, #0x26] + adds r1, r1, r3 + strh r1, [r0, #0x26] + adds r3, r2, #0 + b _080D4E16 + .align 2, 0 +_080D4DE4: .4byte gUnknown_3005B60 +_080D4DE8: .4byte gUnknown_20205AC +_080D4DEC: + ldr r3, _080D4E78 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x24] + ldrh r2, [r4, #0x12] + subs r1, r1, r2 + strh r1, [r0, #0x24] + movs r2, #8 + ldrsh r1, [r4, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + ldrh r2, [r4, #0x14] + subs r1, r1, r2 + strh r1, [r0, #0x26] +_080D4E16: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r6 + ldrh r0, [r4, #0x10] + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xa] + adds r2, r0, #1 + strh r2, [r4, #0xa] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r6, #0xc + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _080D4EC0 + movs r0, #1 + ands r2, r0 + cmp r2, #0 + beq _080D4E7C + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r2, #0x12 + ldrsh r0, [r4, r2] + lsrs r2, r0, #0x1f + adds r0, r0, r2 + asrs r0, r0, #1 + ldrh r6, [r1, #0x24] + adds r0, r0, r6 + strh r0, [r1, #0x24] + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r2, #0x14 + ldrsh r0, [r4, r2] + lsrs r2, r0, #0x1f + adds r0, r0, r2 + asrs r0, r0, #1 + ldrh r3, [r1, #0x26] + adds r0, r0, r3 + strh r0, [r1, #0x26] + b _080D4EB4 + .align 2, 0 +_080D4E78: .4byte gUnknown_20205AC +_080D4E7C: + movs r6, #8 + ldrsh r0, [r4, r6] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + movs r3, #0x14 + ldrsh r1, [r4, r3] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + ldrh r0, [r2, #0x26] + subs r0, r0, r1 + strh r0, [r2, #0x26] +_080D4EB4: + adds r0, r5, #0 + bl sub_080A34E4 + b _080D4EC0 +_080D4EBC: + subs r0, r2, #1 + strh r0, [r4, #0xe] +_080D4EC0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D4D8C + + thumb_func_start sub_080D4EC8 +sub_080D4EC8: @ 0x080D4EC8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080D4F18 + ldrb r0, [r5] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D4F1C + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r5, #2] + strh r2, [r1, #0x24] + ldr r2, _080D4F20 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r0, [r1, #8] + ldrh r0, [r5, #2] + strh r0, [r1, #0xa] + ldrh r0, [r5, #4] + strh r0, [r1, #0xc] + ldrh r0, [r5, #6] + strh r0, [r1, #0xe] + ldrh r0, [r5, #8] + strh r0, [r1, #0x10] + ldr r2, _080D4F24 + str r2, [r1] + adds r0, r4, #0 + bl _call_via_r2 + thumb_func_end sub_080D4EC8 + + thumb_func_start sub_080D4F10 +sub_080D4F10: @ 0x080D4F10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D4F18: .4byte gUnknown_20380BE +_080D4F1C: .4byte gUnknown_20205AC +_080D4F20: .4byte gUnknown_3005B60 +_080D4F24: .4byte sub_080D4F28 + thumb_func_end sub_080D4F10 + + thumb_func_start sub_080D4F28 +sub_080D4F28: @ 0x080D4F28 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _080D4FB4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrb r5, [r3, #8] + ldrh r4, [r3, #0xa] + ldrh r1, [r3, #0x18] + adds r0, r1, #1 + strh r0, [r3, #0x18] + movs r7, #0xc + ldrsh r0, [r3, r7] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov ip, r2 + ldr r7, _080D4FB8 + cmp r0, r1 + bne _080D4F7A + movs r0, #0 + strh r0, [r3, #0x18] + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, r0, r7 + ldrh r3, [r1, #0x24] + movs r0, #0x24 + ldrsh r2, [r1, r0] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r2, r0 + bne _080D4F72 + rsbs r0, r2, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080D4F72: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r3 + strh r0, [r1, #0x24] +_080D4F7A: + lsls r2, r6, #2 + adds r2, r2, r6 + lsls r2, r2, #3 + add r2, ip + strh r4, [r2, #0xa] + ldrh r1, [r2, #0xe] + ldrh r0, [r2, #0x1a] + adds r1, r1, r0 + strh r1, [r2, #0x1a] + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r7 + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r0, #0x26] + ldrh r0, [r2, #0x10] + subs r0, #1 + strh r0, [r2, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D4FAC + adds r0, r6, #0 + bl sub_080A34E4 +_080D4FAC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D4FB4: .4byte gUnknown_3005B60 +_080D4FB8: .4byte gUnknown_20205AC + thumb_func_end sub_080D4F28 + + thumb_func_start sub_080D4FBC +sub_080D4FBC: @ 0x080D4FBC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #1 + ldr r4, _080D5030 + ldrb r0, [r4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #5 + ble _080D4FE0 + movs r0, #5 + strh r0, [r4, #8] +_080D4FE0: + movs r1, #0 + movs r2, #8 + ldrsh r0, [r4, r2] + adds r3, r4, #0 + ldr r2, _080D5034 + mov ip, r2 + lsls r4, r5, #2 + ldr r2, _080D5038 + mov r8, r2 + cmp r1, r0 + bge _080D5006 + adds r2, r0, #0 +_080D4FF8: + lsls r0, r6, #0x19 + lsrs r6, r0, #0x18 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r2 + blt _080D4FF8 +_080D5006: + adds r0, r4, r5 + lsls r0, r0, #3 + add r0, ip + strh r7, [r0, #8] + ldrh r1, [r3, #2] + strh r1, [r0, #0xa] + ldrh r1, [r3, #4] + strh r1, [r0, #0xc] + ldrh r1, [r3, #6] + 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, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5030: .4byte gUnknown_20380BE +_080D5034: .4byte gUnknown_3005B60 +_080D5038: .4byte sub_080D503C + thumb_func_end sub_080D4FBC + + thumb_func_start sub_080D503C +sub_080D503C: @ 0x080D503C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _080D50AC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrb r4, [r5, #8] + movs r1, #0x12 + ldrsh r0, [r5, r1] + movs r2, #0xa + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + ldr r2, _080D50B0 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, 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_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r1, [r5, #0xc] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r5, #0x10] + ldrh r1, [r5, #0x12] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x12] + cmp r0, #0 + bne _080D5094 + ldrh r0, [r5, #0xe] + subs r0, #1 + strh r0, [r5, #0xe] +_080D5094: + movs r2, #0xe + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _080D50A6 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 +_080D50A6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D50AC: .4byte gUnknown_3005B60 +_080D50B0: .4byte gUnknown_20205AC + thumb_func_end sub_080D503C + + thumb_func_start sub_080D50B4 +sub_080D50B4: @ 0x080D50B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080D50DC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D50D0 + ldr r1, _080D50E0 + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_080D50D0: + adds r0, r4, #0 + bl sub_080D4FBC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D50DC: .4byte gUnknown_20380D6 +_080D50E0: .4byte gUnknown_20380BE + thumb_func_end sub_080D50B4 + + thumb_func_start sub_080D50E4 +sub_080D50E4: @ 0x080D50E4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080D510C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5114 + ldr r1, _080D5110 + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + b _080D5118 + .align 2, 0 +_080D510C: .4byte gUnknown_20380D6 +_080D5110: .4byte gUnknown_20380BE +_080D5114: + ldr r1, _080D5144 + ldrh r0, [r1, #2] +_080D5118: + strh r0, [r4, #0x30] + ldrh r2, [r1] + movs r0, #0 + strh r2, [r4, #0x2e] + strh r0, [r4, #0x32] + ldr r1, _080D5148 + ldr r0, _080D514C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r4, #0x34] + strh r2, [r4, #0x36] + ldr r1, _080D5150 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _080D5154 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D5144: .4byte gUnknown_20380BE +_080D5148: .4byte gUnknown_2023E88 +_080D514C: .4byte gUnknown_20380D6 +_080D5150: .4byte sub_080D5158 +_080D5154: .4byte sub_080A5EF8 + thumb_func_end sub_080D50E4 + + thumb_func_start sub_080D5158 +sub_080D5158: @ 0x080D5158 + push {lr} + ldrh r1, [r0, #0x36] + strh r1, [r0, #0x2e] + ldrh r1, [r0, #0x30] + rsbs r1, r1, #0 + strh r1, [r0, #0x30] + ldr r1, _080D5174 + str r1, [r0, #0x1c] + ldr r1, _080D5178 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_080D5174: .4byte sub_080A5EF8 +_080D5178: .4byte sub_080A34C4 + thumb_func_end sub_080D5158 + + thumb_func_start sub_080D517C +sub_080D517C: @ 0x080D517C + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r5, _080D51BC + ldrb r0, [r5, #4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r5] + movs r1, #0 + strh r2, [r4, #0x2e] + strh r1, [r4, #0x30] + ldrh r1, [r5, #2] + strh r1, [r4, #0x32] + strh r0, [r4, #0x34] + strh r2, [r4, #0x36] + ldr r1, _080D51C0 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _080D51C4 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D51BC: .4byte gUnknown_20380BE +_080D51C0: .4byte sub_080D51C8 +_080D51C4: .4byte sub_080A5EF8 + thumb_func_end sub_080D517C + + thumb_func_start sub_080D51C8 +sub_080D51C8: @ 0x080D51C8 + push {lr} + ldrh r1, [r0, #0x36] + strh r1, [r0, #0x2e] + ldrh r1, [r0, #0x32] + rsbs r1, r1, #0 + strh r1, [r0, #0x32] + ldr r1, _080D51E4 + str r1, [r0, #0x1c] + ldr r1, _080D51E8 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_080D51E4: .4byte sub_080A5EF8 +_080D51E8: .4byte sub_080A34C4 + thumb_func_end sub_080D51C8 + + thumb_func_start sub_080D51EC +sub_080D51EC: @ 0x080D51EC + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r0, _080D5204 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080D5210 + ldr r1, _080D5208 + ldr r0, _080D520C + b _080D5214 + .align 2, 0 +_080D5204: .4byte gUnknown_20380BE +_080D5208: .4byte gUnknown_2023E88 +_080D520C: .4byte gUnknown_20380D6 +_080D5210: + ldr r1, _080D5274 + ldr r0, _080D5278 +_080D5214: + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r7, [r0] + ldr r5, _080D527C + ldrh r0, [r5, #4] + movs r3, #0 + strh r0, [r6, #0x2e] + ldr r0, _080D5280 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r6, #0x30] + ldrh r0, [r4, #0x20] + strh r0, [r6, #0x32] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r6, #0x34] + ldrh r0, [r4, #0x22] + strh r0, [r6, #0x36] + adds r0, r6, #0 + str r3, [sp] + bl sub_080A66DC + 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, #4 + orrs r0, r1 + strb r0, [r2] + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _080D5284 + strh r3, [r6, #0x32] + b _080D528A + .align 2, 0 +_080D5274: .4byte gUnknown_2023E88 +_080D5278: .4byte gUnknown_20380D7 +_080D527C: .4byte gUnknown_20380BE +_080D5280: .4byte gUnknown_20205AC +_080D5284: + cmp r0, #2 + bne _080D528A + strh r3, [r6, #0x30] +_080D528A: + ldr r0, _080D52A0 + ldrh r1, [r0, #2] + lsls r0, r7, #8 + orrs r0, r1 + strh r0, [r6, #0x3c] + ldr r0, _080D52A4 + str r0, [r6, #0x1c] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D52A0: .4byte gUnknown_20380BE +_080D52A4: .4byte sub_080D52A8 + thumb_func_end sub_080D51EC + + thumb_func_start sub_080D52A8 +sub_080D52A8: @ 0x080D52A8 + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x3c] + lsls r1, r0, #0x18 + lsrs r4, r1, #0x18 + adds r5, r4, #0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080D52E4 + adds r3, r1, r0 + ldrh r0, [r2, #0x2e] + movs r6, #0x2e + ldrsh r1, [r2, r6] + cmp r1, #0 + bne _080D52E8 + cmp r4, #1 + bhi _080D52D2 + strh r1, [r3, #0x24] +_080D52D2: + cmp r5, #2 + beq _080D52DA + cmp r5, #0 + bne _080D52DC +_080D52DA: + strh r1, [r3, #0x26] +_080D52DC: + adds r0, r2, #0 + bl sub_080A34C4 + b _080D5312 + .align 2, 0 +_080D52E4: .4byte gUnknown_20205AC +_080D52E8: + subs r0, #1 + strh r0, [r2, #0x2e] + ldrh r1, [r2, #0x30] + ldrh r0, [r2, #0x34] + adds r1, r1, r0 + strh r1, [r2, #0x34] + ldrh r0, [r2, #0x32] + ldrh r4, [r2, #0x36] + adds r0, r0, r4 + strh r0, [r2, #0x36] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r6, [r2, #0x38] + adds r1, r1, r6 + strh r1, [r3, #0x24] + ldrh r0, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r2, #0x3a] + adds r0, r0, r2 + strh r0, [r3, #0x26] +_080D5312: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080D52A8 + + thumb_func_start sub_080D5318 +sub_080D5318: @ 0x080D5318 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _080D532C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080D5334 + ldr r0, _080D5330 + b _080D5336 + .align 2, 0 +_080D532C: .4byte gUnknown_20380BE +_080D5330: .4byte gUnknown_20380D6 +_080D5334: + ldr r0, _080D53B4 +_080D5336: + ldrb r2, [r0] + ldr r0, _080D53B8 + adds r0, r2, r0 + ldrb r6, [r0] + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5360 + ldr r1, _080D53BC + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + movs r2, #6 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _080D5360 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080D5360: + ldr r2, _080D53BC + ldrh r0, [r2, #8] + movs r4, #0 + strh r0, [r5, #0x2e] + ldr r0, _080D53C0 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + strh r0, [r5, #0x30] + ldrh r0, [r2, #2] + ldrh r3, [r1, #0x20] + adds r0, r0, r3 + strh r0, [r5, #0x32] + ldrh r0, [r1, #0x22] + strh r0, [r5, #0x34] + ldrh r0, [r2, #4] + ldrh r1, [r1, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A66DC + strh r4, [r5, #0x34] + strh r4, [r5, #0x36] + strh r6, [r5, #0x38] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080D53C4 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _080D53C8 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D53B4: .4byte gUnknown_20380D7 +_080D53B8: .4byte gUnknown_2023E88 +_080D53BC: .4byte gUnknown_20380BE +_080D53C0: .4byte gUnknown_20205AC +_080D53C4: .4byte sub_080A34C4 +_080D53C8: .4byte sub_080A5F48 + thumb_func_end sub_080D5318 + + thumb_func_start sub_080D53CC +sub_080D53CC: @ 0x080D53CC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r2, r6, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080D53EC + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080D53F4 + ldr r0, _080D53F0 + b _080D53F6 + .align 2, 0 +_080D53EC: .4byte gUnknown_20380BE +_080D53F0: .4byte gUnknown_20380D6 +_080D53F4: + ldr r0, _080D5474 +_080D53F6: + ldrb r1, [r0] + ldr r0, _080D5478 + adds r0, r1, r0 + ldrb r7, [r0] + adds r0, r1, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5420 + ldr r1, _080D547C + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + movs r2, #6 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _080D5420 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080D5420: + ldr r5, _080D547C + ldrh r0, [r5, #8] + strh r0, [r6, #0x2e] + ldr r0, _080D5480 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r6, #0x30] + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r6, #0x34] + ldrh r1, [r5, #4] + adds r0, r0, r1 + strh r0, [r6, #0x36] + adds r0, r6, #0 + bl sub_080A66DC + ldrh r0, [r4, #0x24] + lsls r0, r0, #8 + strh r0, [r6, #0x34] + ldrh r0, [r4, #0x26] + lsls r0, r0, #8 + strh r0, [r6, #0x36] + strh r7, [r6, #0x38] + ldrh r0, [r5, #0xa] + strh r0, [r6, #0x3a] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D5488 + ldr r1, _080D5484 + adds r0, r6, #0 + bl sub_080A5B9C + b _080D5490 + .align 2, 0 +_080D5474: .4byte gUnknown_20380D7 +_080D5478: .4byte gUnknown_2023E88 +_080D547C: .4byte gUnknown_20380BE +_080D5480: .4byte gUnknown_20205AC +_080D5484: .4byte sub_080A34C4 +_080D5488: + ldr r1, _080D549C + adds r0, r6, #0 + bl sub_080A5B9C +_080D5490: + ldr r0, _080D54A0 + str r0, [r6, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D549C: .4byte sub_080D54A4 +_080D54A0: .4byte sub_080A5F48 + thumb_func_end sub_080D53CC + + thumb_func_start sub_080D54A4 +sub_080D54A4: @ 0x080D54A4 + push {r4, lr} + ldr r4, _080D54D0 + movs r1, #0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r3, #0 + strh r3, [r1, #0x24] + movs r1, #0x38 + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strh r3, [r1, #0x26] + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D54D0: .4byte gUnknown_20205AC + thumb_func_end sub_080D54A4 + + thumb_func_start sub_080D54D4 +sub_080D54D4: @ 0x080D54D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _080D5558 + movs r0, #6 + ldrsh r1, [r5, r0] + movs r0, #0x80 + lsls r0, r0, #8 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _080D555C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5506 + ldrh r0, [r5, #2] + rsbs r0, r0, #0 + strh r0, [r5, #2] + ldrh r0, [r5, #0xa] + rsbs r0, r0, #0 + strh r0, [r5, #0xa] +_080D5506: + ldrb r0, [r5] + bl sub_080A5B08 + ldr r1, _080D5560 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #8] + movs r1, #2 + ldrsh r0, [r5, r1] + lsls r0, r0, #8 + movs r2, #6 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, #0xa] + ldrh r0, [r5, #4] + strh r0, [r4, #0xc] + ldrh r0, [r5, #6] + strh r0, [r4, #0xe] + ldrh r0, [r5, #8] + strh r0, [r4, #0x10] + movs r1, #0xa + ldrsh r0, [r5, r1] + lsls r0, 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, _080D5564 + str r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5558: .4byte gUnknown_20380BE +_080D555C: .4byte gUnknown_20380D6 +_080D5560: .4byte gUnknown_3005B60 +_080D5564: .4byte sub_080D5568 + thumb_func_end sub_080D54D4 + + thumb_func_start sub_080D5568 +sub_080D5568: @ 0x080D5568 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D55C0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrb r1, [r5, #8] + ldrh r0, [r5, #0xa] + ldrh r2, [r5, #0x1e] + adds r0, r0, r2 + strh r0, [r5, #0x1e] + ldr r2, _080D55C4 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + adds r4, r4, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrh r0, [r5, #0x1c] + lsrs r0, r0, #8 + movs r2, #0xc + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r5, #0x16] + ldrh r1, [r5, #0x1c] + adds r0, r0, r1 + strh r0, [r5, #0x1c] + ldrh r0, [r5, #0xe] + subs r0, #1 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D55B8 + ldr r0, _080D55C8 + str r0, [r5] +_080D55B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D55C0: .4byte gUnknown_3005B60 +_080D55C4: .4byte gUnknown_20205AC +_080D55C8: .4byte sub_080D55CC + thumb_func_end sub_080D5568 + + thumb_func_start sub_080D55CC +sub_080D55CC: @ 0x080D55CC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _080D55F0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0x10] + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080D55F4 + subs r0, r1, #1 + strh r0, [r4, #0x10] + b _080D5628 + .align 2, 0 +_080D55F0: .4byte gUnknown_3005B60 +_080D55F4: + ldrb r0, [r4, #8] + ldrh r2, [r4, #0x12] + ldrh r1, [r4, #0x20] + adds r2, r2, r1 + strh r2, [r4, #0x20] + ldr r3, _080D5630 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x18 + ldrh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + adds r2, r2, r0 + strh r2, [r1, #0x24] + ldrh r0, [r4, #0x14] + subs r0, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D5628 + adds r0, r5, #0 + bl sub_080A34E4 +_080D5628: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D5630: .4byte gUnknown_20205AC + thumb_func_end sub_080D55CC + + thumb_func_start sub_080D5634 +sub_080D5634: @ 0x080D5634 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080D5658 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #2 + beq _080D5662 + cmp r0, #2 + bgt _080D565C + cmp r0, #0 + blt _080D5694 + ldrb r0, [r1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + b _080D569C + .align 2, 0 +_080D5658: .4byte gUnknown_20380BE +_080D565C: + cmp r0, #3 + beq _080D566C + b _080D5694 +_080D5662: + ldr r5, _080D5668 + b _080D566E + .align 2, 0 +_080D5668: .4byte gUnknown_20380D6 +_080D566C: + ldr r5, _080D568C +_080D566E: + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5694 + ldr r1, _080D5690 + ldrb r0, [r5] + eors r0, r4 + adds r0, r0, r1 + ldrb r2, [r0] + b _080D569C + .align 2, 0 +_080D568C: .4byte gUnknown_20380D7 +_080D5690: .4byte gUnknown_2023E88 +_080D5694: + adds r0, r6, #0 + bl sub_080A34E4 + b _080D56DC +_080D569C: + ldr r1, _080D56BC + lsls r4, r6, #2 + adds r0, r4, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + strh r2, [r5, #8] + ldr r0, _080D56C0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D56C8 + ldr r0, _080D56C4 + ldrh r0, [r0, #2] + b _080D56CE + .align 2, 0 +_080D56BC: .4byte gUnknown_3005B60 +_080D56C0: .4byte gUnknown_20380D7 +_080D56C4: .4byte gUnknown_20380BE +_080D56C8: + ldr r0, _080D56E4 + ldrh r0, [r0, #2] + rsbs r0, r0, #0 +_080D56CE: + strh r0, [r5, #0xa] + ldr r0, _080D56E8 + adds r1, r4, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D56EC + str r0, [r1] +_080D56DC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D56E4: .4byte gUnknown_20380BE +_080D56E8: .4byte gUnknown_3005B60 +_080D56EC: .4byte sub_080D56F0 + thumb_func_end sub_080D5634 + + thumb_func_start sub_080D56F0 +sub_080D56F0: @ 0x080D56F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080D5734 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r2, [r1, #8] + ldr r3, _080D5738 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r1, #0xa] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r2, #0x20 + ldrsh r0, [r0, r2] + adds r1, r1, r0 + adds r1, #0x20 + movs r0, #0x98 + lsls r0, r0, #1 + cmp r1, r0 + bls _080D572E + adds r0, r4, #0 + bl sub_080A34E4 +_080D572E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D5734: .4byte gUnknown_3005B60 +_080D5738: .4byte gUnknown_20205AC + thumb_func_end sub_080D56F0 + + thumb_func_start sub_080D573C +sub_080D573C: @ 0x080D573C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _080D578C + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5758 + ldr r1, _080D5790 + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_080D5758: + ldr r4, _080D5790 + ldrb r0, [r4, #8] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D5794 + lsls r3, r5, #2 + adds r1, r3, r5 + lsls r1, r1, #3 + adds r2, r1, r2 + ldrh r1, [r4] + strh r1, [r2, #8] + ldrh r1, [r4, #2] + strh r1, [r2, #0xa] + ldrh r1, [r4, #4] + strh r1, [r2, #0xc] + ldrh r1, [r4, #6] + strh r1, [r2, #0xe] + strh r0, [r2, #0x10] + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080D5798 + ldrb r0, [r6] + b _080D579C + .align 2, 0 +_080D578C: .4byte gUnknown_20380D6 +_080D5790: .4byte gUnknown_20380BE +_080D5794: .4byte gUnknown_3005B60 +_080D5798: + ldr r0, _080D57B4 + ldrb r0, [r0] +_080D579C: + strh r0, [r2, #0x12] + ldr r1, _080D57B8 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #0x20] + ldr r1, _080D57BC + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D57B4: .4byte gUnknown_20380D7 +_080D57B8: .4byte gUnknown_3005B60 +_080D57BC: .4byte sub_080D57C0 + thumb_func_end sub_080D573C + + thumb_func_start sub_080D57C0 +sub_080D57C0: @ 0x080D57C0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080D5810 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r7, [r4, #0x10] + ldrh r0, [r4, #0xc] + ldrh r1, [r4, #0x1c] + adds r0, r0, r1 + lsls r1, r0, #0x10 + strh r0, [r4, #0x1c] + lsrs r1, r1, #0x18 + mov r8, r1 + mov r0, r8 + movs r2, #0xa + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov sb, r5 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080D5818 + ldr r0, _080D5814 + lsls r2, r7, #4 + adds r1, r2, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + strh r5, [r1, #0x24] + mov sb, r0 + adds r4, r2, #0 + b _080D585E + .align 2, 0 +_080D5810: .4byte gUnknown_3005B60 +_080D5814: .4byte gUnknown_20205AC +_080D5818: + ldrb r0, [r4, #0x12] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D5840 + ldr r1, _080D583C + lsls r2, r7, #4 + adds r0, r2, r7 + lsls r0, r0, #2 + adds r3, r0, r1 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + mov sb, r1 + adds r4, r2, #0 + cmp r0, #0 + bge _080D585C + b _080D585A + .align 2, 0 +_080D583C: .4byte gUnknown_20205AC +_080D5840: + ldr r1, _080D58E0 + lsls r2, r7, #4 + adds r0, r2, r7 + lsls r0, r0, #2 + adds r3, r0, r1 + mov r4, sb + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + mov sb, r1 + adds r4, r2, #0 + cmp r0, #0 + bge _080D585A + rsbs r0, r0, #0 +_080D585A: + rsbs r0, r0, #0 +_080D585C: + strh r0, [r3, #0x26] +_080D585E: + mov r5, r8 + cmp r5, #0x7f + bls _080D5880 + ldr r1, _080D58E4 + lsls r2, r6, #2 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r5, #0x1e + ldrsh r0, [r3, r5] + adds r5, r1, #0 + cmp r0, #0 + bne _080D5880 + movs r1, #0x20 + ldrsh r0, [r3, r1] + cmp r0, #1 + beq _080D58A2 +_080D5880: + mov r2, r8 + cmp r2, #0x7e + bhi _080D58D4 + ldr r1, _080D58E4 + lsls r2, r6, #2 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r5, #0x1e + ldrsh r0, [r3, r5] + adds r5, r1, #0 + cmp r0, #1 + bne _080D58D4 + movs r1, #0x20 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _080D58D4 +_080D58A2: + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrh r0, [r1, #0x1e] + movs r2, #1 + eors r0, r2 + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x20] + eors r0, r2 + strh r0, [r1, #0x20] + ldrh r0, [r1, #0xe] + subs r0, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + asrs r3, r0, #0x10 + cmp r3, #0 + bne _080D58D4 + adds r0, r4, r7 + lsls r0, r0, #2 + add r0, sb + strh r3, [r0, #0x24] + strh r3, [r0, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 +_080D58D4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D58E0: .4byte gUnknown_20205AC +_080D58E4: .4byte gUnknown_3005B60 + thumb_func_end sub_080D57C0 + + thumb_func_start sub_080D58E8 +sub_080D58E8: @ 0x080D58E8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _080D5934 + ldrb r0, [r6, #6] + bl sub_080A5B08 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r1, [r6, #8] + adds r0, r5, #0 + bl sub_080A6B38 + ldr r1, _080D5938 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r6] + strh r1, [r0, #8] + ldrh r1, [r6, #2] + strh r1, [r0, #0xa] + ldrh r1, [r6, #4] + strh r1, [r0, #0xc] + ldrh r1, [r6, #4] + strh r1, [r0, #0xe] + strh r5, [r0, #0x10] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0, #0x1c] + strh r1, [r0, #0x1e] + ldr r1, _080D593C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D5934: .4byte gUnknown_20380BE +_080D5938: .4byte gUnknown_3005B60 +_080D593C: .4byte sub_080D5940 + thumb_func_end sub_080D58E8 + + thumb_func_start sub_080D5940 +sub_080D5940: @ 0x080D5940 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _080D59A0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #8] + ldrh r1, [r4, #0x1c] + adds r0, r0, r1 + strh r0, [r4, #0x1c] + ldrh r0, [r4, #0xa] + ldrh r3, [r4, #0x1e] + adds r0, 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_080A6A7C + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _080D59B0 + ldrh r2, [r4, #0xe] + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r0, #0 + ble _080D59A4 + ldrh r0, [r4, #8] + rsbs r0, r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #0xa] + rsbs r0, r0, #0 + strh r0, [r4, #0xa] + strh r2, [r4, #0xc] + strh r1, [r4, #0xe] + b _080D59B0 + .align 2, 0 +_080D59A0: .4byte gUnknown_3005B60 +_080D59A4: + adds r0, r6, #0 + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 +_080D59B0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D5940 + + thumb_func_start sub_080D59B8 +sub_080D59B8: @ 0x080D59B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _080D59F4 + ldrb r0, [r4, #4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r1, #0 + bl sub_080A6B38 + ldr r1, _080D59F8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #0 + strh r1, [r2, #0xa] + ldrh r0, [r4] + strh r0, [r2, #0xc] + movs r3, #6 + ldrsh r0, [r4, r3] + cmp r0, #1 + beq _080D59FC + strh r1, [r2, #0xe] + b _080D5A08 + .align 2, 0 +_080D59F4: .4byte gUnknown_20380BE +_080D59F8: .4byte gUnknown_3005B60 +_080D59FC: + ldrh r0, [r4] + ldrh r1, [r4, #2] + adds r3, r0, #0 + muls r3, r1, r3 + adds r0, r3, #0 + strh r0, [r2, #0xe] +_080D5A08: + ldr r1, _080D5A34 + lsls r4, r7, #2 + adds r0, r4, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + ldr r6, _080D5A38 + ldrh r0, [r6, #2] + strh r0, [r5, #0x10] + mov r0, r8 + strh r0, [r5, #0x12] + ldrh r0, [r6, #6] + strh r0, [r5, #0x14] + bl sub_080A46B8 + lsls r0, r0, #0x18 + mov r8, r4 + cmp r0, #0 + beq _080D5A3C + movs r0, #1 + strh r0, [r5, #0x16] + b _080D5A60 + .align 2, 0 +_080D5A34: .4byte gUnknown_3005B60 +_080D5A38: .4byte gUnknown_20380BE +_080D5A3C: + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080D5A4C + ldr r0, _080D5A48 + b _080D5A4E + .align 2, 0 +_080D5A48: .4byte gUnknown_20380D6 +_080D5A4C: + ldr r0, _080D5AA4 +_080D5A4E: + ldrb r0, [r0] + bl sub_080A62F8 + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D5A5E + movs r1, #1 +_080D5A5E: + strh r1, [r5, #0x16] +_080D5A60: + ldr r0, _080D5AA8 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r3, #0x16 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080D5A8C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D5A8C + movs r1, #0xe + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0xe] + movs r2, #0x10 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0x10] +_080D5A8C: + ldr r0, _080D5AA8 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D5AAC + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5AA4: .4byte gUnknown_20380D7 +_080D5AA8: .4byte gUnknown_3005B60 +_080D5AAC: .4byte sub_080D5B8C + thumb_func_end sub_080D59B8 + + thumb_func_start sub_080D5AB0 +sub_080D5AB0: @ 0x080D5AB0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080D5AEC + ldrb r0, [r4, #4] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r1, #0 + bl sub_080A6B38 + ldr r1, _080D5AF0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xa] + ldrh r1, [r4] + strh r1, [r0, #0xc] + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080D5AF8 + ldr r0, _080D5AF4 + b _080D5AFA + .align 2, 0 +_080D5AEC: .4byte gUnknown_20380BE +_080D5AF0: .4byte gUnknown_3005B60 +_080D5AF4: .4byte gUnknown_20380D6 +_080D5AF8: + ldr r0, _080D5B28 +_080D5AFA: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5B0C + ldrh r0, [r4, #2] + rsbs r0, r0, #0 + strh r0, [r4, #2] +_080D5B0C: + ldr r0, _080D5B2C + movs r2, #6 + ldrsh r1, [r0, r2] + adds r6, r0, #0 + cmp r1, #1 + beq _080D5B34 + ldr r2, _080D5B30 + lsls r3, r5, #2 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0xe] + b _080D5B4E + .align 2, 0 +_080D5B28: .4byte gUnknown_20380D7 +_080D5B2C: .4byte gUnknown_20380BE +_080D5B30: .4byte gUnknown_3005B60 +_080D5B34: + ldr r3, _080D5B84 + lsls r4, r5, #2 + adds r0, r4, r5 + lsls r0, r0, #3 + adds r0, r0, r3 + ldrh r2, [r6] + ldrh r1, [r6, #2] + adds r7, r2, #0 + muls r7, r1, r7 + adds r1, r7, #0 + strh r1, [r0, #0xe] + adds r2, r3, #0 + adds r3, r4, #0 +_080D5B4E: + adds r1, r3, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r6, #2] + strh r0, [r1, #0x10] + mov r0, r8 + strh r0, [r1, #0x12] + ldrh r0, [r6, #6] + strh r0, [r1, #0x14] + movs r0, #1 + strh r0, [r1, #0x16] + movs r2, #0xe + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #0xe] + movs r7, #0x10 + ldrsh r0, [r1, r7] + rsbs r0, r0, #0 + strh r0, [r1, #0x10] + ldr r0, _080D5B88 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5B84: .4byte gUnknown_3005B60 +_080D5B88: .4byte sub_080D5B8C + thumb_func_end sub_080D5AB0 + + thumb_func_start sub_080D5B8C +sub_080D5B8C: @ 0x080D5B8C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080D5BE4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0xe] + adds r0, r0, r1 + strh r0, [r4, #0xe] + ldrb r0, [r4, #0x12] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0xe] + adds r1, r2, #0 + bl sub_080A6A7C + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080D5BC0 + ldrb r0, [r4, #0x12] + bl sub_080A6C68 +_080D5BC0: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xc + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080D5C06 + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080D5BE8 + cmp r0, #1 + ble _080D5BEE + cmp r0, #2 + beq _080D5BF6 + b _080D5BEE + .align 2, 0 +_080D5BE4: .4byte gUnknown_3005B60 +_080D5BE8: + ldrb r0, [r4, #0x12] + bl sub_080A6C0C +_080D5BEE: + adds r0, r5, #0 + bl sub_080A34E4 + b _080D5C06 +_080D5BF6: + movs r0, #0 + strh r0, [r4, #0xa] + movs r2, #0x10 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0x10] + movs r0, #1 + strh r0, [r4, #0x14] +_080D5C06: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080D5B8C + + thumb_func_start sub_080D5C0C +sub_080D5C0C: @ 0x080D5C0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080D5C38 + movs r2, #0 + ldrsh r1, [r0, r2] + mov r8, r0 + cmp r1, #0 + bne _080D5C44 + ldr r4, _080D5C3C + lsls r5, r7, #2 + adds r0, r5, r7 + lsls r0, r0, #3 + adds r6, r0, r4 + ldr r0, _080D5C40 + ldrh r0, [r0] + movs r1, #0xc + bl __udivsi3 + b _080D5C58 + .align 2, 0 +_080D5C38: .4byte gUnknown_20380BE +_080D5C3C: .4byte gUnknown_3005B60 +_080D5C40: .4byte gUnknown_20380A8 +_080D5C44: + ldr r4, _080D5CE0 + lsls r5, r7, #2 + adds r0, r5, r7 + lsls r0, r0, #3 + adds r6, r0, r4 + ldr r0, _080D5CE4 + ldr r0, [r0] + movs r1, #0xc + bl __divsi3 +_080D5C58: + strh r0, [r6, #0x26] + lsls r0, r0, #0x10 + adds r1, r4, #0 + cmp r0, #0 + bgt _080D5C66 + movs r0, #1 + strh r0, [r6, #0x26] +_080D5C66: + movs r2, #0x26 + ldrsh r0, [r6, r2] + cmp r0, #0x10 + ble _080D5C72 + movs r0, #0x10 + strh r0, [r6, #0x26] +_080D5C72: + adds r4, r5, r7 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + movs r5, #0 + strh r1, [r4, #0x24] + ldrh r2, [r4, #0x26] + movs r0, #1 + ands r0, r2 + adds r1, r1, r0 + strh r1, [r4, #0x22] + strh r5, [r4, #0x20] + mov r1, r8 + ldrh r0, [r1, #6] + strh r0, [r4, #0x1c] + ldrh r0, [r1, #8] + strh r0, [r4, #0x1e] + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x16] + ldr r2, _080D5CE8 + movs r0, #0x16 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x24] + strh r0, [r4, #0x18] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x26] + strh r0, [r4, #0x1a] + strh r5, [r4, #8] + mov r1, r8 + ldrh r0, [r1, #2] + strh r0, [r4, #0xa] + ldrh r0, [r1, #4] + strh r0, [r4, #0xc] + ldr r0, _080D5CEC + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5CE0: .4byte gUnknown_3005B60 +_080D5CE4: .4byte gUnknown_20380A4 +_080D5CE8: .4byte gUnknown_20205AC +_080D5CEC: .4byte sub_080D5CF0 + thumb_func_end sub_080D5C0C + + thumb_func_start sub_080D5CF0 +sub_080D5CF0: @ 0x080D5CF0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080D5D44 + adds r3, r0, r1 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xa + ldrsh r1, [r3, r2] + cmp r0, r1 + ble _080D5DCE + movs r0, #0 + strh r0, [r3, #8] + ldrh r0, [r3, #0x20] + adds r1, r0, #1 + movs r0, #1 + ands r1, r0 + strh r1, [r3, #0x20] + movs r2, #0x1c + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _080D5D62 + cmp r1, #0 + beq _080D5D4C + ldr r2, _080D5D48 + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x22] + ldrh r2, [r3, #0x18] + adds r1, r1, r2 + b _080D5D60 + .align 2, 0 +_080D5D44: .4byte gUnknown_3005B60 +_080D5D48: .4byte gUnknown_20205AC +_080D5D4C: + ldr r2, _080D5D88 + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x18] + ldrh r2, [r3, #0x24] + subs r1, r1, r2 +_080D5D60: + strh r1, [r0, #0x24] +_080D5D62: + movs r1, #0x1e + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _080D5D9C + movs r2, #0x20 + ldrsh r4, [r3, r2] + cmp r4, #0 + beq _080D5D8C + ldr r2, _080D5D88 + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x26] + strh r1, [r0, #0x26] + b _080D5D9C + .align 2, 0 +_080D5D88: .4byte gUnknown_20205AC +_080D5D8C: + ldr r2, _080D5DD4 + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x26] +_080D5D9C: + ldrh r0, [r3, #0xc] + subs r0, #1 + strh r0, [r3, #0xc] + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + bne _080D5DCE + ldr r2, _080D5DD4 + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x24] + movs r0, #0x16 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x26] + adds r0, r5, #0 + bl sub_080A34E4 +_080D5DCE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D5DD4: .4byte gUnknown_20205AC + thumb_func_end sub_080D5CF0 + + thumb_func_start sub_080D5DD8 +sub_080D5DD8: @ 0x080D5DD8 + adds r1, r0, #0 + ldr r0, _080D5DEC + ldr r0, [r0] + adds r0, #0xac + ldr r0, [r0] + ldrh r1, [r1] + eors r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080D5DEC: .4byte gUnknown_3005AF0 + thumb_func_end sub_080D5DD8 + + thumb_func_start sub_080D5DF0 +sub_080D5DF0: @ 0x080D5DF0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _080D5E04 + ldr r2, [r2] + adds r2, #0xac + ldr r2, [r2] + eors r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_080D5E04: .4byte gUnknown_3005AF0 + thumb_func_end sub_080D5DF0 + + thumb_func_start sub_080D5E08 +sub_080D5E08: @ 0x080D5E08 + ldrh r0, [r0] + bx lr + thumb_func_end sub_080D5E08 + + thumb_func_start sub_080D5E0C +sub_080D5E0C: @ 0x080D5E0C + strh r1, [r0] + bx lr + thumb_func_end sub_080D5E0C + + thumb_func_start sub_080D5E10 +sub_080D5E10: @ 0x080D5E10 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + mov r8, r0 + movs r1, #0 + ldr r0, _080D5E64 + mov sb, r0 +_080D5E22: + movs r6, #0 + lsls r5, r1, #3 + mov r2, sb + adds r0, r5, r2 + adds r7, r1, #1 + ldrb r0, [r0, #4] + cmp r6, r0 + bhs _080D5E50 + ldr r2, _080D5E64 +_080D5E34: + adds r4, r5, r2 + lsls r1, r6, #2 + ldr r0, [r4] + adds r0, r0, r1 + adds r0, #2 + mov r1, r8 + str r2, [sp] + bl sub_08076B08 + adds r6, #1 + ldr r2, [sp] + ldrb r4, [r4, #4] + cmp r6, r4 + blo _080D5E34 +_080D5E50: + adds r1, r7, #0 + cmp r1, #4 + bls _080D5E22 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D5E64: .4byte gUnknown_2039A78 + thumb_func_end sub_080D5E10 + + thumb_func_start sub_080D5E68 +sub_080D5E68: @ 0x080D5E68 + push {lr} + bl sub_080D5E10 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D5E68 + + thumb_func_start sub_080D5E74 +sub_080D5E74: @ 0x080D5E74 + push {r4, lr} + ldr r1, _080D5EC0 + ldr r0, _080D5EC4 + ldr r2, [r0] + movs r3, #0xac + lsls r3, r3, #3 + adds r0, r2, r3 + str r0, [r1] + movs r3, #0x1e + strb r3, [r1, #4] + movs r4, #0xbb + lsls r4, r4, #3 + adds r0, r2, r4 + str r0, [r1, #0x20] + adds r0, r1, #0 + adds r0, #0x24 + strb r3, [r0] + movs r3, #0xca + lsls r3, r3, #3 + adds r0, r2, r3 + str r0, [r1, #8] + movs r0, #0x10 + strb r0, [r1, #0xc] + adds r4, #0xb8 + adds r0, r2, r4 + str r0, [r1, #0x10] + movs r0, #0x40 + strb r0, [r1, #0x14] + movs r0, #0xf2 + lsls r0, r0, #3 + adds r2, r2, r0 + str r2, [r1, #0x18] + movs r0, #0x2e + strb r0, [r1, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D5EC0: .4byte gUnknown_2039A78 +_080D5EC4: .4byte gUnknown_3005AEC + thumb_func_end sub_080D5E74 + + thumb_func_start sub_080D5EC8 +sub_080D5EC8: @ 0x080D5EC8 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _080D5EF0 + movs r0, #0x2b + bl sub_080E0BC8 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _080D5EEC + adds r0, r4, #0 + bl sub_080088D8 + b _080D5EFC + .align 2, 0 +_080D5EEC: .4byte gUnknown_85C9440 +_080D5EF0: + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 +_080D5EFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D5EC8 + + thumb_func_start sub_080D5F04 +sub_080D5F04: @ 0x080D5F04 + push {lr} + lsls r0, r0, #0x18 + movs r2, #0 + ldr r1, _080D5F28 + lsrs r0, r0, #0x15 + subs r0, #8 + adds r0, r0, r1 + ldrb r1, [r0, #4] + cmp r2, r1 + bhs _080D5F36 + ldr r3, [r0] +_080D5F1A: + lsls r0, r2, #2 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080D5F2C + movs r0, #1 + b _080D5F38 + .align 2, 0 +_080D5F28: .4byte gUnknown_2039A78 +_080D5F2C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _080D5F1A +_080D5F36: + movs r0, #0 +_080D5F38: + pop {r1} + bx r1 + thumb_func_end sub_080D5F04 + + thumb_func_start sub_080D5F3C +sub_080D5F3C: @ 0x080D5F3C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r0, r7, #0 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D5FCE + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D5F6A + ldr r0, _080D5F78 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D5F80 +_080D5F6A: + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_080D6924 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080D5FD0 + .align 2, 0 +_080D5F78: .4byte 0x00004004 +_080D5F7C: + movs r0, #1 + b _080D5FD0 +_080D5F80: + adds r0, r7, #0 + bl sub_080D6DB0 + subs r0, #1 + lsls r0, r0, #0x18 + movs r6, #0 + ldr r1, _080D5F94 + lsrs r4, r0, #0x15 + b _080D5FC6 + .align 2, 0 +_080D5F94: .4byte gUnknown_2039A78 +_080D5F98: + adds r0, r4, r1 + ldr r1, [r0] + lsls r0, r6, #2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, r7 + bne _080D5FBE + adds r0, r1, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + bhs _080D5F7C + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _080D5F7C +_080D5FBE: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080D5FD8 +_080D5FC6: + adds r0, r4, r1 + ldrb r0, [r0, #4] + cmp r6, r0 + blo _080D5F98 +_080D5FCE: + movs r0, #0 +_080D5FD0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D5FD8: .4byte gUnknown_2039A78 + thumb_func_end sub_080D5F3C + + thumb_func_start sub_080D5FDC +sub_080D5FDC: @ 0x080D5FDC + push {r4, lr} + movs r4, #0x85 +_080D5FE0: + adds r0, r4, #0 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080D5FFC + ldr r0, _080D5FF8 + strh r1, [r0] + movs r0, #1 + b _080D600E + .align 2, 0 +_080D5FF8: .4byte gUnknown_2037290 +_080D5FFC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xb2 + bls _080D5FE0 + ldr r1, _080D6014 + movs r0, #0 + strh r0, [r1] + movs r0, #0 +_080D600E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6014: .4byte gUnknown_2037290 + thumb_func_end sub_080D5FDC + + thumb_func_start sub_080D6018 +sub_080D6018: @ 0x080D6018 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D611E + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D6050 + ldr r0, _080D6060 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D6064 +_080D6050: + mov r0, r8 + adds r1, r5, #0 + bl sub_080D699C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080D612E + .align 2, 0 +_080D6060: .4byte 0x00004004 +_080D6064: + mov r0, r8 + bl sub_080D6DB0 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r7, _080D6124 + cmp r2, #3 + beq _080D6078 + movs r7, #0x63 +_080D6078: + movs r6, #0 + ldr r1, _080D6128 + lsls r4, r2, #3 + adds r0, r4, r1 + mov sb, r4 + ldrb r0, [r0, #4] + cmp r6, r0 + bhs _080D60D4 + subs r0, r2, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_080D6090: + adds r0, r4, r1 + ldr r1, [r0] + lsls r0, r6, #2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, r8 + bne _080D60C4 + adds r0, r1, #2 + str r2, [sp] + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r1, r5 + ldr r2, [sp] + cmp r0, r7 + ble _080D612C + mov r0, sl + cmp r0, #1 + bls _080D611E + subs r0, r7, r1 + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _080D612C +_080D60C4: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _080D6128 + adds r0, r4, r1 + ldrb r0, [r0, #4] + cmp r6, r0 + blo _080D6090 +_080D60D4: + cmp r5, #0 + beq _080D612C + movs r6, #0 + ldr r3, _080D6128 + mov r1, sb + adds r0, r1, r3 + ldrb r0, [r0, #4] + cmp r6, r0 + bhs _080D611A + adds r4, r3, #0 + subs r0, r2, #2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080D60EE: + adds r0, r1, r4 + ldr r1, [r0] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080D610A + cmp r5, r7 + bls _080D612C + cmp r2, #1 + bls _080D611E + subs r0, r5, r7 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080D610A: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r1, sb + adds r0, r1, r3 + ldrb r0, [r0, #4] + cmp r6, r0 + blo _080D60EE +_080D611A: + cmp r5, #0 + beq _080D612C +_080D611E: + movs r0, #0 + b _080D612E + .align 2, 0 +_080D6124: .4byte 0x000003E7 +_080D6128: .4byte gUnknown_2039A78 +_080D612C: + movs r0, #1 +_080D612E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6018 + + thumb_func_start sub_080D6140 +sub_080D6140: @ 0x080D6140 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D6164 + movs r0, #0 + b _080D62AA +_080D6164: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D617C + ldr r0, _080D618C + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D6190 +_080D617C: + mov r0, sb + adds r1, r5, #0 + bl sub_080D6A1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080D62AA + .align 2, 0 +_080D618C: .4byte 0x00004004 +_080D6190: + mov r0, sb + bl sub_080D6DB0 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r0, #3 + ldr r0, _080D6250 + adds r7, r1, r0 + ldrb r0, [r7, #4] + lsls r0, r0, #2 + bl sub_08000BDC + mov r8, r0 + ldr r1, [r7] + ldrb r2, [r7, #4] + lsls r2, r2, #2 + bl memcpy + ldr r2, _080D6254 + mov r0, sl + cmp r0, #3 + beq _080D61C2 + movs r2, #0x63 +_080D61C2: + movs r6, #0 + ldrb r0, [r7, #4] + cmp r6, r0 + bhs _080D621E + mov r0, sl + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] +_080D61D4: + lsls r0, r6, #2 + mov r3, r8 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, sb + bne _080D6212 + adds r4, r1, #2 + adds r0, r4, #0 + str r2, [sp, #4] + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, r5 + ldr r2, [sp, #4] + cmp r1, r2 + ble _080D6280 + ldr r1, [sp] + cmp r1, #1 + bls _080D628C + subs r0, r2, r0 + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080D5DF0 + ldr r2, [sp, #4] + cmp r5, #0 + beq _080D6296 +_080D6212: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r7, #4] + cmp r6, r0 + blo _080D61D4 +_080D621E: + cmp r5, #0 + beq _080D6296 + movs r6, #0 + cmp r6, r0 + bhs _080D627A + mov r0, sl + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080D6230: + lsls r0, r6, #2 + mov r3, r8 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, #0 + bne _080D626E + mov r0, sb + strh r0, [r1] + cmp r5, r2 + bhi _080D6258 + adds r0, r1, #2 + adds r1, r5, #0 + bl sub_080D5DF0 + b _080D6296 + .align 2, 0 +_080D6250: .4byte gUnknown_2039A78 +_080D6254: .4byte 0x000003E7 +_080D6258: + cmp r4, #1 + bls _080D628C + subs r0, r5, r2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r1, #2 + adds r1, r2, #0 + str r2, [sp, #4] + bl sub_080D5DF0 + ldr r2, [sp, #4] +_080D626E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r1, [r7, #4] + cmp r6, r1 + blo _080D6230 +_080D627A: + cmp r5, #0 + beq _080D6296 + b _080D628C +_080D6280: + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_080D5DF0 + b _080D6296 +_080D628C: + mov r0, r8 + bl sub_08000BF0 + movs r0, #0 + b _080D62AA +_080D6296: + ldr r0, [r7] + ldrb r2, [r7, #4] + lsls r2, r2, #2 + mov r1, r8 + bl memcpy + mov r0, r8 + bl sub_08000BF0 + movs r0, #1 +_080D62AA: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6140 + + thumb_func_start sub_080D62BC +sub_080D62BC: @ 0x080D62BC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r4, #0 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D6350 + mov r0, r8 + cmp r0, #0 + beq _080D6350 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D62F8 + ldr r0, _080D6308 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D630C +_080D62F8: + mov r0, r8 + adds r1, r7, #0 + bl sub_080D6B4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080D6472 + .align 2, 0 +_080D6308: .4byte 0x00004004 +_080D630C: + mov r0, r8 + bl sub_080D6DB0 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r0, #3 + ldr r0, _080D6354 + adds r5, r1, r0 + movs r6, #0 + ldrb r2, [r5, #4] + cmp r6, r2 + bhs _080D634C +_080D6328: + ldr r0, [r5] + lsls r1, r6, #2 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, r8 + bne _080D6340 + adds r0, r1, #2 + bl sub_080D5DD8 + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080D6340: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r5, #4] + cmp r6, r0 + blo _080D6328 +_080D634C: + cmp r4, r7 + bhs _080D6358 +_080D6350: + movs r0, #0 + b _080D6472 + .align 2, 0 +_080D6354: .4byte gUnknown_2039A78 +_080D6358: + bl sub_080E9EA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D6388 + ldr r4, _080D63C8 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + ldr r0, _080D63CC + mov r1, r8 + bl sub_0809CF88 +_080D6388: + mov r0, sb + bl sub_081AB8D8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrb r0, [r5, #4] + cmp r0, r1 + bls _080D63FE + ldr r0, [r5] + lsls r1, r1, #2 + adds r2, r1, r0 + ldrh r0, [r2] + adds r4, r1, #0 + cmp r0, r8 + bne _080D63FE + adds r0, r2, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r7 + blo _080D63D0 + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + subs r1, r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080D5DF0 + movs r7, #0 + b _080D63E2 + .align 2, 0 +_080D63C8: .4byte 0x000040EE +_080D63CC: .4byte 0x000040ED +_080D63D0: + subs r0, r7, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + movs r1, #0 + bl sub_080D5DF0 +_080D63E2: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + bne _080D63FA + ldr r0, [r5] + adds r0, r4, r0 + strh r2, [r0] +_080D63FA: + cmp r7, #0 + beq _080D6470 +_080D63FE: + movs r6, #0 + ldrb r0, [r5, #4] + cmp r6, r0 + bhs _080D6470 +_080D6406: + ldr r0, [r5] + lsls r1, r6, #2 + adds r2, r1, r0 + ldrh r0, [r2] + adds r4, r1, #0 + cmp r0, r8 + bne _080D6464 + adds r0, r2, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r7 + blo _080D6436 + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + subs r1, r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080D5DF0 + movs r7, #0 + b _080D6448 +_080D6436: + subs r0, r7, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + movs r1, #0 + bl sub_080D5DF0 +_080D6448: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + bne _080D6460 + ldr r0, [r5] + adds r0, r4, r0 + strh r2, [r0] +_080D6460: + cmp r7, #0 + beq _080D6470 +_080D6464: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r2, [r5, #4] + cmp r6, r2 + blo _080D6406 +_080D6470: + movs r0, #1 +_080D6472: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D62BC + + thumb_func_start sub_080D6480 +sub_080D6480: @ 0x080D6480 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6480 + + thumb_func_start sub_080D6494 +sub_080D6494: @ 0x080D6494 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + movs r4, #0 + lsrs r1, r1, #0x18 + cmp r4, r1 + bhs _080D64BE + adds r5, r1, #0 + movs r7, #0 +_080D64A6: + lsls r0, r4, #2 + adds r0, r0, r6 + strh r7, [r0] + adds r0, #2 + movs r1, #0 + bl sub_080D5DF0 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r5 + blo _080D64A6 +_080D64BE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D6494 + + thumb_func_start sub_080D64C4 +sub_080D64C4: @ 0x080D64C4 + push {lr} + movs r1, #0 + ldr r0, _080D64E4 + ldr r2, [r0] + movs r3, #0x93 + lsls r3, r3, #3 +_080D64D0: + lsls r0, r1, #0x18 + asrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r2, r0 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, #0 + bne _080D64E8 + adds r0, r1, #0 + b _080D64F8 + .align 2, 0 +_080D64E4: .4byte gUnknown_3005AEC +_080D64E8: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x31 + ble _080D64D0 + movs r0, #1 + rsbs r0, r0, #0 +_080D64F8: + pop {r1} + bx r1 + thumb_func_end sub_080D64C4 + + thumb_func_start sub_080D64FC +sub_080D64FC: @ 0x080D64FC + push {r4, lr} + movs r2, #0 + movs r1, #0 + ldr r0, _080D6530 + ldr r3, [r0] + movs r4, #0x93 + lsls r4, r4, #3 +_080D650A: + lsls r0, r1, #2 + adds r0, r3, r0 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + beq _080D651C + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080D651C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x31 + bls _080D650A + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6530: .4byte gUnknown_3005AEC + thumb_func_end sub_080D64FC + + thumb_func_start sub_080D6534 +sub_080D6534: @ 0x080D6534 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 +_080D6540: + ldr r0, _080D656C + ldr r2, [r0] + lsls r1, r4, #2 + adds r0, r2, r1 + movs r3, #0x93 + lsls r3, r3, #3 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r6 + bne _080D6574 + adds r0, r1, r2 + ldr r1, _080D6570 + adds r0, r0, r1 + bl sub_080D5E08 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + blo _080D6574 + movs r0, #1 + b _080D6580 + .align 2, 0 +_080D656C: .4byte gUnknown_3005AEC +_080D6570: .4byte 0x0000049A +_080D6574: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x31 + bls _080D6540 + movs r0, #0 +_080D6580: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6534 + + thumb_func_start sub_080D6588 +sub_080D6588: @ 0x080D6588 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r0, #0xc8 + bl sub_08000BDC + adds r7, r0, #0 + ldr r0, _080D6610 + ldr r1, [r0] + movs r0, #0x93 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r0, r7, #0 + movs r2, #0xc8 + bl memcpy + movs r6, #0 +_080D65B4: + lsls r0, r6, #2 + adds r1, r0, r7 + ldrh r0, [r1] + cmp r0, r8 + bne _080D65E8 + adds r4, r1, #2 + adds r0, r4, #0 + bl sub_080D5E08 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r1, r2, r5 + ldr r3, _080D6614 + cmp r1, r3 + ble _080D661C + ldr r1, _080D6618 + adds r0, r5, r1 + adds r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_080D5E0C + cmp r5, #0 + beq _080D6638 +_080D65E8: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x31 + bls _080D65B4 + cmp r5, #0 + beq _080D6638 + bl sub_080D64C4 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080D6628 + adds r0, r7, #0 + bl sub_08000BF0 + movs r0, #0 + b _080D6652 + .align 2, 0 +_080D6610: .4byte gUnknown_3005AEC +_080D6614: .4byte 0x000003E7 +_080D6618: .4byte 0x0000FC19 +_080D661C: + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_080D5E0C + b _080D6638 +_080D6628: + lsls r0, r1, #2 + adds r0, r0, r7 + mov r1, r8 + strh r1, [r0] + adds r0, #2 + adds r1, r5, #0 + bl sub_080D5E0C +_080D6638: + ldr r0, _080D665C + ldr r0, [r0] + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #0xc8 + bl memcpy + adds r0, r7, #0 + bl sub_08000BF0 + movs r0, #1 +_080D6652: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D665C: .4byte gUnknown_3005AEC + thumb_func_end sub_080D6588 + + thumb_func_start sub_080D6660 +sub_080D6660: @ 0x080D6660 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _080D6694 + ldr r2, [r2] + lsrs r0, r0, #0x16 + adds r3, r2, r0 + ldr r0, _080D6698 + adds r2, r3, r0 + ldrh r0, [r2] + subs r0, r0, r1 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _080D668E + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r3, r2 + strh r1, [r0] + bl sub_080D669C +_080D668E: + pop {r0} + bx r0 + .align 2, 0 +_080D6694: .4byte gUnknown_3005AEC +_080D6698: .4byte 0x0000049A + thumb_func_end sub_080D6660 + + thumb_func_start sub_080D669C +sub_080D669C: @ 0x080D669C + push {r4, r5, r6, r7, lr} + movs r2, #0 +_080D66A0: + adds r1, r2, #1 + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + adds r6, r1, #0 + cmp r4, #0x31 + bhi _080D66E2 + ldr r0, _080D66F0 + mov ip, r0 + lsls r5, r2, #2 + movs r7, #0x93 + lsls r7, r7, #3 +_080D66B6: + mov r0, ip + ldr r1, [r0] + adds r0, r1, r5 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, #0 + bne _080D66D8 + movs r0, #0x93 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r2, r1, r5 + ldr r3, [r2] + lsls r0, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + str r3, [r1] +_080D66D8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x31 + bls _080D66B6 +_080D66E2: + lsls r0, r6, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x30 + bls _080D66A0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D66F0: .4byte gUnknown_3005AEC + thumb_func_end sub_080D669C + + thumb_func_start sub_080D66F4 +sub_080D66F4: @ 0x080D66F4 + push {lr} + ldr r0, _080D6710 + ldr r0, [r0] + ldr r2, _080D6714 + adds r1, r0, r2 + ldrh r2, [r1] + ldr r3, _080D6718 + cmp r2, r3 + beq _080D671C + movs r0, #0x88 + lsls r0, r0, #1 + cmp r2, r0 + beq _080D6724 + b _080D6726 + .align 2, 0 +_080D6710: .4byte gUnknown_3005AEC +_080D6714: .4byte 0x00000496 +_080D6718: .4byte 0x00000103 +_080D671C: + movs r0, #0x88 + lsls r0, r0, #1 + strh r0, [r1] + b _080D6726 +_080D6724: + strh r3, [r1] +_080D6726: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D66F4 + + thumb_func_start sub_080D672C +sub_080D672C: @ 0x080D672C + lsls r0, r0, #0x18 + lsls r1, r1, #0x10 + ldr r2, _080D6744 + lsrs r0, r0, #0x15 + subs r0, #8 + adds r0, r0, r2 + ldr r0, [r0] + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldrh r0, [r1] + bx lr + .align 2, 0 +_080D6744: .4byte gUnknown_2039A78 + thumb_func_end sub_080D672C + + thumb_func_start sub_080D6748 +sub_080D6748: @ 0x080D6748 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x10 + ldr r2, _080D676C + lsrs r0, r0, #0x15 + subs r0, #8 + adds r0, r0, r2 + lsrs r1, r1, #0xe + ldr r0, [r0] + adds r0, r0, r1 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080D676C: .4byte gUnknown_2039A78 + thumb_func_end sub_080D6748 + + thumb_func_start sub_080D6770 +sub_080D6770: @ 0x080D6770 + ldr r3, [r0] + ldr r2, [r1] + str r2, [r0] + str r3, [r1] + bx lr + .align 2, 0 + thumb_func_end sub_080D6770 + + thumb_func_start sub_080D677C +sub_080D677C: @ 0x080D677C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r3, #0 + b _080D67BE +_080D6784: + adds r1, r3, #1 + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + adds r7, r1, #0 + cmp r4, r2 + bhs _080D67BA + lsls r5, r3, #2 +_080D6792: + ldr r0, [r6] + adds r0, r0, r5 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D67AE + ldr r1, [r6] + adds r0, r1, r5 + lsls r2, r4, #2 + adds r1, r1, r2 + bl sub_080D6770 +_080D67AE: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r0, [r6, #4] + cmp r4, r0 + blo _080D6792 +_080D67BA: + lsls r0, r7, #0x10 + lsrs r3, r0, #0x10 +_080D67BE: + ldrb r2, [r6, #4] + subs r0, r2, #1 + cmp r3, r0 + blt _080D6784 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D677C + + thumb_func_start sub_080D67CC +sub_080D67CC: @ 0x080D67CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r3, #0 + b _080D6832 +_080D67D8: + adds r1, r3, #1 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + mov r8, r1 + cmp r5, r2 + bhs _080D682C + lsls r7, r3, #2 +_080D67E6: + ldr r0, [r6] + adds r0, r0, r7 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + lsls r4, r5, #2 + cmp r0, #0 + beq _080D6816 + ldr r0, [r6] + adds r0, r0, r4 + adds r0, #2 + bl sub_080D5DD8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080D6820 + ldr r0, [r6] + adds r1, r7, r0 + adds r0, r4, r0 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bls _080D6820 +_080D6816: + ldr r1, [r6] + adds r0, r1, r7 + adds r1, r1, r4 + bl sub_080D6770 +_080D6820: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r0, [r6, #4] + cmp r5, r0 + blo _080D67E6 +_080D682C: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r3, r0, #0x10 +_080D6832: + ldrb r2, [r6, #4] + subs r0, r2, #1 + cmp r3, r0 + blt _080D67D8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D67CC + + thumb_func_start sub_080D6844 +sub_080D6844: @ 0x080D6844 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r3, r2, #0 + cmp r1, r3 + beq _080D68A4 + lsls r0, r1, #2 + adds r0, r0, r4 + ldr r6, [r0] + cmp r3, r1 + bls _080D687C + subs r3, #1 + lsls r1, r1, #0x10 + lsls r0, r3, #0x10 + asrs r2, r0, #0x10 + cmp r1, r0 + bge _080D689E + adds r5, r2, #0 +_080D6866: + asrs r2, r1, #0x10 + lsls r0, r2, #2 + adds r0, r0, r4 + ldr r1, [r0, #4] + str r1, [r0] + adds r2, #1 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, r5 + blt _080D6866 + b _080D689E +_080D687C: + lsls r1, r1, #0x10 + lsls r0, r3, #0x10 + asrs r2, r0, #0x10 + cmp r1, r0 + ble _080D689E + adds r5, r2, #0 +_080D6888: + asrs r2, r1, #0x10 + lsls r1, r2, #2 + adds r1, r1, r4 + subs r0, r1, #4 + ldr r0, [r0] + str r0, [r1] + subs r2, #1 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, r5 + bgt _080D6888 +_080D689E: + lsls r0, r3, #2 + adds r0, r0, r4 + str r6, [r0] +_080D68A4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080D6844 + + thumb_func_start sub_080D68AC +sub_080D68AC: @ 0x080D68AC + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080D68D0 +_080D68B2: + lsls r1, r4, #3 + adds r1, r1, r5 + ldr r0, [r1] + ldrb r1, [r1, #4] + bl sub_080D6494 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _080D68B2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D68D0: .4byte gUnknown_2039A78 + thumb_func_end sub_080D68AC + + thumb_func_start sub_080D68D4 +sub_080D68D4: @ 0x080D68D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r7, #0 + adds r0, r6, #0 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x15 + ldr r1, _080D6920 + adds r5, r0, r1 + movs r4, #0 + ldrb r0, [r5, #4] + cmp r7, r0 + bhs _080D6916 +_080D68F2: + ldr r0, [r5] + lsls r1, r4, #2 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, r6 + bne _080D690A + adds r0, r1, #2 + bl sub_080D5DD8 + adds r0, r7, r0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_080D690A: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrb r0, [r5, #4] + cmp r4, r0 + blo _080D68F2 +_080D6916: + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080D6920: .4byte gUnknown_2039A70 + thumb_func_end sub_080D68D4 + + thumb_func_start sub_080D6924 +sub_080D6924: @ 0x080D6924 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _080D6978 + ldr r3, [r0] + ldr r1, _080D697C + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080D6980 + adds r0, r0, r2 + adds r2, r3, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080D6984 + adds r0, r0, r1 + adds r3, r3, r0 + movs r1, #0 +_080D6958: + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r5 + bne _080D6988 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, r4 + bhs _080D6974 + subs r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _080D6988 +_080D6974: + movs r0, #1 + b _080D6994 + .align 2, 0 +_080D6978: .4byte gUnknown_3005AF0 +_080D697C: .4byte 0x00000CA9 +_080D6980: .4byte 0x00000E2C +_080D6984: .4byte 0x00000E54 +_080D6988: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _080D6958 + movs r0, #0 +_080D6994: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6924 + + thumb_func_start sub_080D699C +sub_080D699C: @ 0x080D699C + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _080D69F8 + ldr r3, [r0] + ldr r1, _080D69FC + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080D6A00 + adds r0, r0, r2 + adds r2, r3, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080D6A04 + adds r0, r0, r1 + adds r3, r3, r0 + movs r1, #0 +_080D69D0: + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r5 + beq _080D69DE + cmp r0, #0 + bne _080D6A08 +_080D69DE: + adds r0, r3, r1 + ldrb r0, [r0] + adds r0, r0, r4 + cmp r0, #0x63 + ble _080D69F2 + subs r0, #0x63 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _080D6A08 +_080D69F2: + movs r0, #1 + b _080D6A14 + .align 2, 0 +_080D69F8: .4byte gUnknown_3005AF0 +_080D69FC: .4byte 0x00000CA9 +_080D6A00: .4byte 0x00000E2C +_080D6A04: .4byte 0x00000E54 +_080D6A08: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _080D69D0 + movs r0, #0 +_080D6A14: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D699C + + thumb_func_start sub_080D6A1C +sub_080D6A1C: @ 0x080D6A1C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _080D6AAC + ldr r3, [r0] + ldr r1, _080D6AB0 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080D6AB4 + adds r0, r0, r2 + adds r0, r0, r3 + mov sb, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080D6AB8 + adds r0, r0, r1 + adds r3, r3, r0 + mov r8, r3 + movs r0, #0x14 + bl sub_08000BC8 + adds r5, r0, #0 + movs r0, #0xa + bl sub_08000BC8 + adds r6, r0, #0 + adds r0, r5, #0 + mov r1, sb + movs r2, #0x14 + bl memcpy + adds r0, r6, #0 + mov r1, r8 + movs r2, #0xa + bl memcpy + movs r2, #0 +_080D6A7E: + lsls r0, r2, #1 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r0, r7 + bne _080D6AC2 + adds r1, r6, r2 + ldrb r0, [r1] + cmp r0, #0x62 + bhi _080D6AC2 + adds r0, r0, r4 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bls _080D6ABC + ldrb r0, [r1] + subs r0, #0x63 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x63 + strb r0, [r1] + b _080D6ABE + .align 2, 0 +_080D6AAC: .4byte gUnknown_3005AF0 +_080D6AB0: .4byte 0x00000CA9 +_080D6AB4: .4byte 0x00000E2C +_080D6AB8: .4byte 0x00000E54 +_080D6ABC: + movs r4, #0 +_080D6ABE: + cmp r4, #0 + beq _080D6B1C +_080D6AC2: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #9 + bls _080D6A7E + cmp r4, #0 + beq _080D6B1C + movs r2, #0 +_080D6AD2: + lsls r0, r2, #1 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, #0 + bne _080D6AFE + strh r7, [r1] + adds r1, r6, r2 + strb r4, [r1] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bls _080D6AF8 + ldrb r0, [r1] + subs r0, #0x63 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x63 + strb r0, [r1] + b _080D6AFA +_080D6AF8: + movs r4, #0 +_080D6AFA: + cmp r4, #0 + beq _080D6B1C +_080D6AFE: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #9 + bls _080D6AD2 + cmp r4, #0 + beq _080D6B1C + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_08000BF0 + movs r0, #0 + b _080D6B3E +_080D6B1C: + mov r0, sb + adds r1, r5, #0 + movs r2, #0x14 + bl memcpy + mov r0, r8 + adds r1, r6, #0 + movs r2, #0xa + bl memcpy + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_08000BF0 + movs r0, #1 +_080D6B3E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6A1C + + thumb_func_start sub_080D6B4C +sub_080D6B4C: @ 0x080D6B4C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _080D6BB8 + ldr r3, [r0] + ldr r1, _080D6BBC + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _080D6BC0 + adds r0, r0, r2 + adds r0, r0, r3 + mov r8, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080D6BC4 + adds r0, r0, r1 + adds r7, r3, r0 + ldr r1, _080D6BC8 + ldrh r0, [r1, #8] + ldrh r1, [r1, #6] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r2, #1 + mov r1, r8 + adds r3, r0, r1 + ldrh r0, [r3] + cmp r0, sb + bne _080D6BCC + adds r1, r7, r2 + ldrb r0, [r1] + cmp r0, r4 + blo _080D6BCC + subs r0, r0, r4 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080D6C64 + strh r0, [r3] + b _080D6C64 + .align 2, 0 +_080D6BB8: .4byte gUnknown_3005AF0 +_080D6BBC: .4byte 0x00000CA9 +_080D6BC0: .4byte 0x00000E2C +_080D6BC4: .4byte 0x00000E54 +_080D6BC8: .4byte gUnknown_203CBFC +_080D6BCC: + movs r0, #0x14 + bl sub_08000BC8 + adds r5, r0, #0 + movs r0, #0xa + bl sub_08000BC8 + adds r6, r0, #0 + adds r0, r5, #0 + mov r1, r8 + movs r2, #0x14 + bl memcpy + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0xa + bl memcpy + movs r2, #0 +_080D6BF2: + lsls r0, r2, #1 + adds r3, r0, r5 + ldrh r0, [r3] + cmp r0, sb + bne _080D6C26 + adds r1, r6, r2 + ldrb r0, [r1] + cmp r0, r4 + blo _080D6C14 + subs r0, r0, r4 + strb r0, [r1] + movs r4, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D6C22 + strh r4, [r3] + b _080D6C22 +_080D6C14: + subs r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0 + strb r0, [r1] + movs r0, #0 + strh r0, [r3] +_080D6C22: + cmp r4, #0 + beq _080D6C44 +_080D6C26: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #9 + bls _080D6BF2 + cmp r4, #0 + beq _080D6C44 + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_08000BF0 + movs r0, #0 + b _080D6C66 +_080D6C44: + mov r0, r8 + adds r1, r5, #0 + movs r2, #0x14 + bl memcpy + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0xa + bl memcpy + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_08000BF0 +_080D6C64: + movs r0, #1 +_080D6C66: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080D6B4C + + thumb_func_start sub_080D6C74 +sub_080D6C74: @ 0x080D6C74 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0xbc + lsls r0, r0, #1 + cmp r1, r0 + bhi _080D6C86 + adds r0, r1, #0 + b _080D6C88 +_080D6C86: + movs r0, #0 +_080D6C88: + pop {r1} + bx r1 + thumb_func_end sub_080D6C74 + + thumb_func_start sub_080D6C8C +sub_080D6C8C: @ 0x080D6C8C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6C74 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _080D6CAC + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_080D6CAC: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6C8C + + thumb_func_start sub_080D6CB0 +sub_080D6CB0: @ 0x080D6CB0 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6CD0 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrh r0, [r1, #0xa] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6CD0: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6CB0 + + thumb_func_start sub_080D6CD4 +sub_080D6CD4: @ 0x080D6CD4 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6CF4 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrh r0, [r1, #0xc] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6CF4: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6CD4 + + thumb_func_start sub_080D6CF8 +sub_080D6CF8: @ 0x080D6CF8 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6D18 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0xe] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6D18: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6CF8 + + thumb_func_start sub_080D6D1C +sub_080D6D1C: @ 0x080D6D1C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6D3C + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0xf] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6D3C: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6D1C + + thumb_func_start sub_080D6D40 +sub_080D6D40: @ 0x080D6D40 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6D64 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, #0x10 + adds r1, r1, r4 + ldr r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6D64: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6D40 + + thumb_func_start sub_080D6D68 +sub_080D6D68: @ 0x080D6D68 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6D88 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0x14] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6D88: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6D68 + + thumb_func_start sub_080D6D8C +sub_080D6D8C: @ 0x080D6D8C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6DAC + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0x15] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6DAC: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6D8C + + thumb_func_start sub_080D6DB0 +sub_080D6DB0: @ 0x080D6DB0 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6DD0 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0x16] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6DD0: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6DB0 + + thumb_func_start sub_080D6DD4 +sub_080D6DD4: @ 0x080D6DD4 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6DF4 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0x17] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6DF4: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6DD4 + + thumb_func_start sub_080D6DF8 +sub_080D6DF8: @ 0x080D6DF8 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6E1C + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, #0x18 + adds r1, r1, r4 + ldr r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6E1C: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6DF8 + + thumb_func_start sub_080D6E20 +sub_080D6E20: @ 0x080D6E20 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6E40 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r1, #0x1c] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6E40: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6E20 + + thumb_func_start sub_080D6E44 +sub_080D6E44: @ 0x080D6E44 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6E68 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, #0x20 + adds r1, r1, r4 + ldr r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6E68: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6E44 + + thumb_func_start sub_080D6E6C +sub_080D6E6C: @ 0x080D6E6C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _080D6E90 + bl sub_080D6C74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + adds r1, #0x24 + ldrb r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080D6E90: .4byte gUnknown_855CEE8 + thumb_func_end sub_080D6E6C + + thumb_func_start sub_080D6E94 +sub_080D6E94: @ 0x080D6E94 + bx lr + .align 2, 0 + thumb_func_end sub_080D6E94 + + thumb_func_start sub_080D6E98 +sub_080D6E98: @ 0x080D6E98 + ldr r1, _080D6EA0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080D6EA0: .4byte gUnknown_2039BCA + thumb_func_end sub_080D6E98 + + thumb_func_start sub_080D6EA4 +sub_080D6EA4: @ 0x080D6EA4 + push {r4, lr} + movs r0, #0 + movs r1, #0x40 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r4, _080D6F1C + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + movs r1, #0xfe + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001200 + ldr r0, _080D6F20 + movs r1, #0 + strh r1, [r0] + ldr r0, _080D6F24 + strh r1, [r0] + ldr r0, _080D6F28 + strh r1, [r0] + ldr r0, _080D6F2C + strh r1, [r0] + ldr r0, _080D6F30 + strh r1, [r0] + ldr r0, _080D6F34 + strh r1, [r0] + ldr r0, _080D6F38 + strh r1, [r0] + ldr r0, _080D6F3C + strh r1, [r0] + ldr r0, _080D6F40 + strh r1, [r0] + ldr r0, _080D6F44 + strh r1, [r0] + ldr r0, _080D6F48 + strh r1, [r0] + ldr r0, _080D6F4C + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D6F1C: .4byte 0x00003F3F +_080D6F20: .4byte gUnknown_2022AC8 +_080D6F24: .4byte gUnknown_2022ACA +_080D6F28: .4byte gUnknown_2022ACC +_080D6F2C: .4byte gUnknown_2022ACE +_080D6F30: .4byte gUnknown_2022AD0 +_080D6F34: .4byte gUnknown_2022AD2 +_080D6F38: .4byte gUnknown_2022AD4 +_080D6F3C: .4byte gUnknown_2022AD6 +_080D6F40: .4byte gUnknown_2022AD8 +_080D6F44: .4byte gUnknown_2022ADA +_080D6F48: .4byte gUnknown_2022ADC +_080D6F4C: .4byte gUnknown_2022ADE + thumb_func_end sub_080D6EA4 + + thumb_func_start sub_080D6F50 +sub_080D6F50: @ 0x080D6F50 + push {r4, r5, lr} + ldr r0, _080D6FAC + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + ldr r0, _080D6FB0 + ldr r1, _080D6FB4 + bl sub_0803437C + ldr r1, _080D6FB8 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #3 + bl sub_08002248 + ldr r0, _080D6FBC + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #0 + bl sub_080A11BC + bl sub_080D7058 + movs r4, #0 + movs r5, #0xa0 +_080D6F8A: + ldr r0, _080D6FC0 + adds r0, r5, r0 + ldr r1, _080D6FC4 + adds r1, r4, r1 + ldrb r1, [r1] + adds r1, #5 + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + adds r5, #0x20 + adds r4, #1 + cmp r4, #3 + ble _080D6F8A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D6FAC: .4byte gUnknown_8C17AB8 +_080D6FB0: .4byte gUnknown_8C18650 +_080D6FB4: .4byte 0x06002000 +_080D6FB8: .4byte gUnknown_8C16FB0 +_080D6FBC: .4byte gUnknown_8C16E98 +_080D6FC0: .4byte gUnknown_201A004 +_080D6FC4: .4byte gUnknown_2039BC6 + thumb_func_end sub_080D6F50 + + thumb_func_start sub_080D6FC8 +sub_080D6FC8: @ 0x080D6FC8 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _080D7008 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #3 + movs r1, #6 + movs r2, #1 + bl sub_08001B70 + movs r4, #0 +_080D6FE6: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080D700C + ldr r1, [r1] + lsls r2, r4, #2 + adds r1, #0x24 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_0800212C + adds r4, #1 + cmp r4, #3 + ble _080D6FE6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D7008: .4byte gUnknown_8560E98 +_080D700C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080D6FC8 + + thumb_func_start sub_080D7010 +sub_080D7010: @ 0x080D7010 + push {lr} + ldr r0, _080D7038 + bl sub_08003090 + bl sub_08004480 + ldr r0, _080D703C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D7044 + ldr r2, _080D7040 + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _080D704E + .align 2, 0 +_080D7038: .4byte gUnknown_8560EA8 +_080D703C: .4byte gUnknown_2039BCA +_080D7040: .4byte gUnknown_30030B4 +_080D7044: + ldr r0, _080D7054 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_080D704E: + pop {r0} + bx r0 + .align 2, 0 +_080D7054: .4byte gUnknown_30030B4 + thumb_func_end sub_080D7010 + + thumb_func_start sub_080D7058 +sub_080D7058: @ 0x080D7058 + push {r4, r5, lr} + ldr r0, _080D709C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + movs r2, #2 + bl sub_080A1238 + movs r5, #0xa + movs r4, #0xfa + lsls r4, r4, #0x10 +_080D7074: + lsrs r1, r4, #0x10 + ldr r0, _080D70A0 + movs r2, #2 + bl sub_080A1200 + movs r0, #0x80 + lsls r0, r0, #9 + adds r4, r4, r0 + adds r5, #1 + cmp r5, #0xd + ble _080D7074 + ldr r0, _080D70A4 + movs r1, #0xf3 + movs r2, #2 + bl sub_080A1238 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D709C: .4byte gUnknown_8560B94 +_080D70A0: .4byte gUnknown_2037596 +_080D70A4: .4byte 0x00007E3F + thumb_func_end sub_080D7058 + + thumb_func_start sub_080D70A8 +sub_080D70A8: @ 0x080D70A8 + push {r4, r5, r6, r7, lr} + ldr r4, _080D71A8 + ldr r0, [r4] + ldr r0, [r0] + movs r1, #0 + movs r2, #0x5c + bl memset + movs r5, #0 + movs r2, #0xff +_080D70BC: + ldr r0, [r4] + ldr r1, [r0] + adds r1, #2 + adds r1, r1, r5 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + adds r5, #1 + cmp r5, #3 + ble _080D70BC + movs r4, #0 + ldr r6, _080D71A8 + movs r5, #3 +_080D70D6: + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + movs r1, #0 + movs r2, #0x1c + bl memset + adds r4, #0x1c + subs r5, #1 + cmp r5, #0 + bge _080D70D6 + ldr r4, _080D71A8 + movs r7, #4 + rsbs r7, r7, #0 + movs r6, #0xff + movs r3, #0 + movs r5, #3 +_080D70F8: + ldr r0, [r4] + ldr r1, [r0, #4] + adds r1, r3, r1 + ldrb r2, [r1, #0xb] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1, #0xb] + ldr r0, [r4] + ldr r1, [r0, #4] + adds r1, r3, r1 + ldrb r0, [r1, #0x13] + orrs r0, r6 + strb r0, [r1, #0x13] + ldr r0, [r4] + ldr r1, [r0, #4] + adds r1, r3, r1 + ldrb r0, [r1, #0x14] + orrs r0, r6 + strb r0, [r1, #0x14] + adds r3, #0x1c + subs r5, #1 + cmp r5, #0 + bge _080D70F8 + ldr r4, _080D71A8 + ldr r0, [r4] + ldr r0, [r0, #8] + movs r1, #0 + movs r2, #0x14 + bl memset + ldr r0, [r4] + ldr r0, [r0, #0xc] + movs r1, #0 + movs r2, #0x44 + bl memset + ldr r2, [r4] + ldr r1, [r2, #0x10] + movs r0, #0 + str r0, [r1] + ldr r0, [r2, #0x14] + movs r1, #0 + movs r2, #0x10 + bl memset + ldr r0, _080D71AC + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080D7164 + movs r0, #0 + bl sub_080DC5BC +_080D7164: + movs r5, #0 + adds r2, r4, #0 + movs r6, #0xff + movs r3, #0 + ldr r4, _080D71B0 +_080D716E: + ldr r0, [r2] + ldr r1, [r0, #4] + adds r1, r3, r1 + ldrb r0, [r1, #0x19] + orrs r0, r6 + strb r0, [r1, #0x19] + ldr r0, [r2] + ldr r1, [r0] + adds r1, #0x14 + adds r1, r1, r5 + adds r0, r5, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r3, #0x1c + adds r5, #1 + cmp r5, #3 + ble _080D716E + bl sub_080DCCF4 + ldr r0, _080D71A8 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + movs r1, #0 + movs r2, #0x40 + bl memset + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D71A8: .4byte gUnknown_2039BD4 +_080D71AC: .4byte gUnknown_2039BCA +_080D71B0: .4byte gUnknown_2039BC6 + thumb_func_end sub_080D70A8 + + thumb_func_start sub_080D71B4 +sub_080D71B4: @ 0x080D71B4 + push {r4, r5, lr} + ldr r4, _080D727C + movs r0, #0x40 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x5c + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] + movs r0, #0x70 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #4] + movs r0, #0x14 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #8] + movs r0, #0x44 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0xc] + movs r0, #0x10 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x10] + movs r0, #0x10 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x14] + movs r0, #0x14 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x18] + movs r0, #0x40 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x1c] + movs r0, #0xc + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x20] + movs r5, #0x80 + lsls r5, r5, #5 + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x24] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x28] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x2c] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x30] + movs r5, #0x80 + lsls r5, r5, #4 + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x34] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x38] + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + ldr r2, [r4] + str r0, [r2, #0x3c] + ldr r1, _080D7280 + str r0, [r1] + ldr r1, _080D7284 + ldr r0, [r2, #0x28] + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D727C: .4byte gUnknown_2039BD4 +_080D7280: .4byte gUnknown_2022D00 +_080D7284: .4byte gUnknown_2022D04 + thumb_func_end sub_080D71B4 + + thumb_func_start sub_080D7288 +sub_080D7288: @ 0x080D7288 + push {r4, r5, lr} + ldr r5, _080D7344 + ldr r0, [r5] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + movs r4, #0 + str r4, [r0] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #4] + ldr r0, [r0, #8] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #8] + ldr r0, [r0, #0xc] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0xc] + ldr r0, [r0, #0x10] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x10] + ldr r0, [r0, #0x14] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x14] + ldr r0, [r0, #0x18] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x18] + ldr r0, [r0, #0x1c] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x1c] + ldr r0, [r0, #0x20] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x20] + ldr r0, [r0, #0x24] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x24] + ldr r0, [r0, #0x28] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x28] + ldr r0, [r0, #0x2c] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x2c] + ldr r0, [r0, #0x30] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x30] + ldr r0, [r0, #0x34] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x34] + ldr r0, [r0, #0x38] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x38] + ldr r0, [r0, #0x3c] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x3c] + bl sub_08000BF0 + str r4, [r5] + ldr r0, _080D7348 + str r4, [r0] + ldr r0, _080D734C + str r4, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7344: .4byte gUnknown_2039BD4 +_080D7348: .4byte gUnknown_2022D00 +_080D734C: .4byte gUnknown_2022D04 + thumb_func_end sub_080D7288 + + thumb_func_start sub_080D7350 +sub_080D7350: @ 0x080D7350 + push {r4, r5, r6, lr} + ldr r0, _080D736C + movs r1, #0x87 + lsls r1, r1, #3 + adds r6, r0, r1 + ldrb r5, [r6] + cmp r5, #1 + beq _080D7400 + cmp r5, #1 + bgt _080D7370 + cmp r5, #0 + beq _080D737A + b _080D7482 + .align 2, 0 +_080D736C: .4byte gUnknown_3002360 +_080D7370: + cmp r5, #2 + beq _080D7406 + cmp r5, #3 + beq _080D7430 + b _080D7482 +_080D737A: + ldr r0, _080D73EC + strb r5, [r0] + bl sub_080D71B4 + bl sub_0805EBD8 + ldr r4, _080D73F0 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r4] + str r5, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] + movs r0, #0 + bl sub_080006F0 + bl sub_080D6FC8 + bl sub_080D7010 + bl sub_080D6EA4 + bl sub_080B9750 + bl sub_080A133C + ldr r2, _080D73F4 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + ldr r1, _080D73F8 + movs r0, #4 + strb r0, [r1] + ldr r0, _080D73FC + movs r1, #0xd0 + lsls r1, r1, #9 + adds r0, r0, r1 + strb r5, [r0] + bl sub_0806DEA8 + bl sub_080D70A8 + b _080D7422 + .align 2, 0 +_080D73EC: .4byte gUnknown_2039BD8 +_080D73F0: .4byte gUnknown_2024178 +_080D73F4: .4byte gUnknown_2037C74 +_080D73F8: .4byte gUnknown_30030BC +_080D73FC: .4byte gUnknown_2000000 +_080D7400: + movs r0, #2 + strb r0, [r6] + b _080D7482 +_080D7406: + ldr r4, _080D742C + ldr r0, [r4] + ldr r0, [r0] + adds r0, #0x59 + bl sub_080D7670 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D7482 + ldr r0, [r4] + ldr r0, [r0] + adds r0, #0x59 + movs r1, #0 + strb r1, [r0] +_080D7422: + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _080D7482 + .align 2, 0 +_080D742C: .4byte gUnknown_2039BD4 +_080D7430: + bl sub_080DD988 + ldr r0, _080D7488 + movs r1, #0 + strh r1, [r0] + ldr r0, _080D748C + strh r1, [r0] + movs r0, #2 + bl sub_080A1C58 + ldr r2, _080D7490 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r0, _080D7494 + bl sub_080006F0 + ldr r0, _080D7498 + movs r1, #0xa + bl sub_080A8878 + ldr r1, _080D749C + ldr r1, [r1] + ldr r1, [r1] + strb r0, [r1, #8] + ldr r0, _080D74A0 + bl sub_08000540 + ldr r0, _080D74A4 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080D7482 + bl sub_0800DBB4 + movs r0, #8 + movs r1, #8 + bl sub_0800DA80 +_080D7482: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D7488: .4byte gUnknown_2022ACC +_080D748C: .4byte gUnknown_2022ACE +_080D7490: .4byte gUnknown_2037C74 +_080D7494: .4byte sub_080D7AA8 +_080D7498: .4byte sub_080D74A8 +_080D749C: .4byte gUnknown_2039BD4 +_080D74A0: .4byte sub_080D7A68 +_080D74A4: .4byte gUnknown_2039BCA + thumb_func_end sub_080D7350 + + thumb_func_start sub_080D74A8 +sub_080D74A8: @ 0x080D74A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _080D74D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080D74CE + ldr r0, _080D74D8 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r2, [r1, #8] + ldr r0, _080D74DC + str r0, [r1] +_080D74CE: + pop {r0} + bx r0 + .align 2, 0 +_080D74D4: .4byte gUnknown_2037C74 +_080D74D8: .4byte gUnknown_3005B60 +_080D74DC: .4byte sub_080D74E0 + thumb_func_end sub_080D74A8 + + thumb_func_start sub_080D74E0 +sub_080D74E0: @ 0x080D74E0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080D7518 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D75BC + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080D7566 + ldr r2, _080D751C + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + adds r4, r0, r2 + movs r2, #8 + ldrsh r0, [r4, r2] + adds r6, r1, #0 + cmp r0, #1 + beq _080D7530 + cmp r0, #1 + bgt _080D7520 + cmp r0, #0 + beq _080D7526 + b _080D7566 + .align 2, 0 +_080D7518: .4byte gUnknown_2039BCA +_080D751C: .4byte gUnknown_3005B60 +_080D7520: + cmp r0, #2 + beq _080D7554 + b _080D7566 +_080D7526: + bl sub_080DB6CC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080D7530: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D75CA + bl sub_0800A8D4 + ldr r0, _080D7550 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080D75CA + .align 2, 0 +_080D7550: .4byte gUnknown_3005B60 +_080D7554: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080D75CA + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080D7566: + ldr r2, _080D75A8 + ldrb r1, [r2, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080D75CA + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r0, _080D75AC + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080D758E + bl sub_080DB6CC +_080D758E: + ldr r0, _080D75B0 + movs r1, #0 + bl sub_080A8878 + ldr r1, _080D75B4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + ldr r1, _080D75B8 + str r1, [r0] + b _080D75CA + .align 2, 0 +_080D75A8: .4byte gUnknown_2037C74 +_080D75AC: .4byte gUnknown_2039BCA +_080D75B0: .4byte sub_080D75D8 +_080D75B4: .4byte gUnknown_3005B60 +_080D75B8: .4byte sub_080D6E94 +_080D75BC: + ldr r0, _080D75D0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D75D4 + str r0, [r1] +_080D75CA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D75D0: .4byte gUnknown_3005B60 +_080D75D4: .4byte sub_080D78F4 + thumb_func_end sub_080D74E0 + + thumb_func_start sub_080D75D8 +sub_080D75D8: @ 0x080D75D8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080D75EC + ldr r2, _080D75F0 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_080D75EC: .4byte sub_080FD1EC +_080D75F0: .4byte sub_080D75F4 + thumb_func_end sub_080D75D8 + + thumb_func_start sub_080D75F4 +sub_080D75F4: @ 0x080D75F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D760C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #8] + ldr r0, _080D7610 + str r0, [r1] + bx lr + .align 2, 0 +_080D760C: .4byte gUnknown_3005B60 +_080D7610: .4byte sub_080D7614 + thumb_func_end sub_080D75F4 + + thumb_func_start sub_080D7614 +sub_080D7614: @ 0x080D7614 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _080D765C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r0, #8] + subs r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _080D7656 + bl sub_0800A02C + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _080D7660 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldr r1, _080D7664 + str r1, [r0] + ldr r1, _080D7668 + ldr r0, _080D766C + ldr r0, [r0] + str r0, [r1] +_080D7656: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D765C: .4byte gUnknown_3005B60 +_080D7660: .4byte gUnknown_2039BD4 +_080D7664: .4byte sub_080D78F4 +_080D7668: .4byte gUnknown_3005AE0 +_080D766C: .4byte gUnknown_3005E18 + thumb_func_end sub_080D7614 + + thumb_func_start sub_080D7670 +sub_080D7670: @ 0x080D7670 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + mov sl, r0 + ldrb r0, [r0] + cmp r0, #6 + bls _080D7686 + b _080D78D0 +_080D7686: + lsls r0, r0, #2 + ldr r1, _080D7690 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D7690: .4byte _080D7694 +_080D7694: @ jump table + .4byte _080D76B0 @ case 0 + .4byte _080D76F4 @ case 1 + .4byte _080D7704 @ case 2 + .4byte _080D7754 @ case 3 + .4byte _080D776C @ case 4 + .4byte _080D77A8 @ case 5 + .4byte _080D7830 @ case 6 +_080D76B0: + ldr r2, _080D76E8 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + movs r1, #0xc0 + lsls r1, r1, #0x13 + movs r4, #0x80 + lsls r4, r4, #8 + movs r0, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08000F90 + ldr r1, _080D76EC + movs r0, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08000F90 + ldr r1, _080D76F0 + movs r0, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08000F90 + b _080D78DA + .align 2, 0 +_080D76E8: .4byte gUnknown_2037C74 +_080D76EC: .4byte 0x06008000 +_080D76F0: .4byte 0x06010000 +_080D76F4: + ldr r0, _080D7700 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + b _080D78DA + .align 2, 0 +_080D7700: .4byte gUnknown_8C17AB8 +_080D7704: + ldr r0, _080D7740 + ldr r4, _080D7744 + adds r1, r4, #0 + bl sub_0803437C + ldr r3, _080D7748 + movs r5, #0x80 + lsls r5, r5, #6 + ldr r1, _080D774C + ldr r6, _080D7750 + movs r2, #0x80 + lsls r2, r2, #5 + movs r7, #0x84 + lsls r7, r7, #0x18 +_080D7720: + str r4, [r1] + str r3, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r4, r4, r2 + adds r3, r3, r2 + subs r5, r5, r2 + cmp r5, r2 + bhi _080D7720 + str r4, [r1] + str r3, [r1, #4] + lsrs r0, r5, #2 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + b _080D78DA + .align 2, 0 +_080D7740: .4byte gUnknown_8C18650 +_080D7744: .4byte 0x06002000 +_080D7748: .4byte gUnknown_2018000 +_080D774C: .4byte 0x040000D4 +_080D7750: .4byte 0x84000400 +_080D7754: + ldr r1, _080D7768 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #3 + bl sub_08002248 + b _080D78DA + .align 2, 0 +_080D7768: .4byte gUnknown_8C16FB0 +_080D776C: + ldr r1, _080D7794 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #2 + bl sub_08002248 + ldr r0, _080D7798 + ldr r0, [r0] + ldr r1, [r0, #0x2c] + ldr r2, _080D779C + ldr r0, _080D77A0 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _080D77A4 + str r1, [r0, #8] + ldr r0, [r0, #8] + b _080D78DA + .align 2, 0 +_080D7794: .4byte gUnknown_8C17178 +_080D7798: .4byte gUnknown_2039BD4 +_080D779C: .4byte gUnknown_201AA04 +_080D77A0: .4byte 0x040000D4 +_080D77A4: .4byte 0x84000200 +_080D77A8: + ldr r0, _080D7810 + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #0 + bl sub_080A11BC + ldr r5, _080D7814 + ldr r6, _080D7818 + adds r0, r5, #0 + mov r1, sp + adds r2, r6, #0 + bl CpuSet + ldr r0, _080D781C + mov sb, r0 + ldrb r0, [r0] + adds r0, #5 + lsls r0, r0, #5 + ldr r1, _080D7820 + adds r1, r1, r5 + mov r8, r1 + add r0, r8 + add r4, sp, #0x20 + adds r1, r4, #0 + adds r2, r6, #0 + bl CpuSet + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl CpuSet + mov r2, sb + ldrb r1, [r2] + adds r1, #5 + lsls r1, r1, #5 + add r1, r8 + mov r0, sp + adds r2, r6, #0 + bl CpuSet + ldr r1, _080D7824 + ldr r0, _080D7828 + mov r2, r8 + str r2, [r0] + str r1, [r0, #4] + ldr r1, _080D782C + str r1, [r0, #8] + ldr r0, [r0, #8] + bl sub_080D7058 + b _080D78DA + .align 2, 0 +_080D7810: .4byte gUnknown_8C16E98 +_080D7814: .4byte gUnknown_20374B4 +_080D7818: .4byte 0x04000008 +_080D781C: .4byte gUnknown_2039BC5 +_080D7820: .4byte 0xFFFFFF00 +_080D7824: .4byte gUnknown_201A004 +_080D7828: .4byte 0x040000D4 +_080D782C: .4byte 0x84000080 +_080D7830: + bl sub_080DC7B0 + bl sub_080DB6F4 + bl sub_080DAA20 + bl sub_080DA884 + ldr r1, _080D78B8 + ldr r1, [r1] + ldr r1, [r1] + movs r4, #0 + strb r0, [r1, #0x12] + bl sub_080DBA20 + bl sub_080DBC54 + bl sub_080DBCF8 + bl sub_080DBD4C + bl sub_080DBF50 + ldr r1, _080D78BC + strb r4, [r1] + movs r0, #1 + strb r0, [r1, #1] + movs r3, #3 + strb r3, [r1, #2] + movs r2, #2 + strb r2, [r1, #3] + ldr r0, _080D78C0 + str r4, [r0] + ldr r4, _080D78C4 + strb r2, [r4] + ldr r0, _080D78C8 + strb r3, [r0] + bl sub_080DA828 + ldr r2, _080D78CC + ldrb r1, [r4] + adds r1, r1, r2 + strb r0, [r1] + bl sub_080DE184 + movs r0, #3 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #3 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + b _080D78DA + .align 2, 0 +_080D78B8: .4byte gUnknown_2039BD4 +_080D78BC: .4byte gUnknown_2023D1A +_080D78C0: .4byte gUnknown_2022C90 +_080D78C4: .4byte gUnknown_2023EAF +_080D78C8: .4byte gUnknown_2023EB0 +_080D78CC: .4byte gUnknown_2023E88 +_080D78D0: + movs r0, #0 + mov r1, sl + strb r0, [r1] + movs r0, #1 + b _080D78E4 +_080D78DA: + mov r2, sl + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0 +_080D78E4: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080D7670 + + thumb_func_start sub_080D78F4 +sub_080D78F4: @ 0x080D78F4 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _080D7928 + ldrb r2, [r1, #8] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #8] + ldrb r1, [r1, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080D7924 + ldr r0, _080D792C + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r2, [r1, #8] + strh r2, [r1, #0xa] + ldr r0, _080D7930 + str r0, [r1] +_080D7924: + pop {r0} + bx r0 + .align 2, 0 +_080D7928: .4byte gUnknown_2037C74 +_080D792C: .4byte gUnknown_3005B60 +_080D7930: .4byte sub_080D7934 + thumb_func_end sub_080D78F4 + + thumb_func_start sub_080D7934 +sub_080D7934: @ 0x080D7934 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080D795C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bhi _080D7A34 + lsls r0, r0, #2 + ldr r1, _080D7960 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D795C: .4byte gUnknown_3005B60 +_080D7960: .4byte _080D7964 +_080D7964: @ jump table + .4byte _080D7978 @ case 0 + .4byte _080D79A2 @ case 1 + .4byte _080D79C0 @ case 2 + .4byte _080D79DC @ case 3 + .4byte _080D7A34 @ case 4 +_080D7978: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0xa] + adds r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _080D7A58 + movs r0, #0 + strh r0, [r4, #0xa] + movs r0, #0x61 + movs r1, #0 + bl sub_080A307C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080D7A58 +_080D79A2: + ldr r1, _080D79BC + ldrh r0, [r1] + adds r0, #7 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa0 + ble _080D7A58 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + b _080D7A26 + .align 2, 0 +_080D79BC: .4byte gUnknown_2022ACE +_080D79C0: + bl sub_080DDAB4 + ldr r0, _080D79D8 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080D7A58 + .align 2, 0 +_080D79D8: .4byte gUnknown_3005B60 +_080D79DC: + movs r0, #8 + bl sub_080011D0 + mov r1, sp + strh r0, [r1] + movs r0, #0xc + bl sub_080011D0 + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r3, sp + ldrb r2, [r3] + movs r1, #4 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + ldrb r0, [r4] + ands r1, r0 + strb r1, [r4] + mov r0, sp + ldrh r1, [r0] + movs r0, #8 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0xc + bl sub_08001144 + bl sub_080DD270 + ldr r1, _080D7A30 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 +_080D7A26: + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080D7A58 + .align 2, 0 +_080D7A30: .4byte gUnknown_3005B60 +_080D7A34: + ldr r0, _080D7A60 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080D7A58 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r1, [r0, #8] + strh r1, [r0, #0xa] + ldr r1, _080D7A64 + str r1, [r0] +_080D7A58: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7A60: .4byte gUnknown_2039BD4 +_080D7A64: .4byte sub_080D7B68 + thumb_func_end sub_080D7934 + + thumb_func_start sub_080D7A68 +sub_080D7A68: @ 0x080D7A68 + push {r4, r5, lr} + bl sub_080066D8 + bl sub_080A89D4 + bl sub_08006724 + bl sub_080A12E4 + movs r4, #0 +_080D7A7C: + ldr r5, _080D7AA4 + ldrb r0, [r5] + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080D7A92 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002248 +_080D7A92: + adds r4, #1 + cmp r4, #3 + ble _080D7A7C + movs r0, #0 + strb r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7AA4: .4byte gUnknown_2039BD8 + thumb_func_end sub_080D7A68 + + thumb_func_start sub_080D7AA8 +sub_080D7AA8: @ 0x080D7AA8 + push {lr} + ldr r0, _080D7B38 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _080D7B3C + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _080D7B40 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _080D7B44 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _080D7B48 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _080D7B4C + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, _080D7B50 + ldrh r1, [r0] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _080D7B54 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 + ldr r0, _080D7B58 + ldrh r1, [r0] + movs r0, #0x40 + bl sub_08001144 + ldr r0, _080D7B5C + ldrh r1, [r0] + movs r0, #0x44 + bl sub_08001144 + ldr r0, _080D7B60 + ldrh r1, [r0] + movs r0, #0x42 + bl sub_08001144 + ldr r0, _080D7B64 + ldrh r1, [r0] + movs r0, #0x46 + bl sub_08001144 + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_080D7B38: .4byte gUnknown_2022AC8 +_080D7B3C: .4byte gUnknown_2022ACA +_080D7B40: .4byte gUnknown_2022ACC +_080D7B44: .4byte gUnknown_2022ACE +_080D7B48: .4byte gUnknown_2022AD0 +_080D7B4C: .4byte gUnknown_2022AD2 +_080D7B50: .4byte gUnknown_2022AD4 +_080D7B54: .4byte gUnknown_2022AD6 +_080D7B58: .4byte gUnknown_2022AD8 +_080D7B5C: .4byte gUnknown_2022ADA +_080D7B60: .4byte gUnknown_2022ADC +_080D7B64: .4byte gUnknown_2022ADE + thumb_func_end sub_080D7AA8 + + thumb_func_start sub_080D7B68 +sub_080D7B68: @ 0x080D7B68 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080D7BCC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _080D7C38 + ldr r0, _080D7BD0 + strh r1, [r0] + ldr r0, _080D7BD4 + strh r1, [r0] + bl sub_080DC4AC + ldr r1, _080D7BD8 + ldr r2, _080D7BDC + ldr r0, _080D7BE0 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _080D7BE4 + str r1, [r0, #8] + ldr r0, [r0, #8] + ldr r0, _080D7BE8 + ldr r1, _080D7BEC + ldr r1, [r1] + ldr r1, [r1] + ldrb r1, [r1, #1] + adds r1, #1 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + adds r4, r0, #0 + ldr r0, _080D7BF0 + ldrb r0, [r0] + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D7BF8 + ldr r1, _080D7BF4 + adds r0, r4, #0 + bl sub_080088B8 + b _080D7C00 + .align 2, 0 +_080D7BCC: .4byte gUnknown_3005B60 +_080D7BD0: .4byte gUnknown_2022ACA +_080D7BD4: .4byte gUnknown_2022AD2 +_080D7BD8: .4byte gUnknown_20373B4 +_080D7BDC: .4byte gUnknown_201A204 +_080D7BE0: .4byte 0x040000D4 +_080D7BE4: .4byte 0x84000100 +_080D7BE8: .4byte gUnknown_2022AE0 +_080D7BEC: .4byte gUnknown_2039BD4 +_080D7BF0: .4byte gUnknown_2039BC5 +_080D7BF4: .4byte gUnknown_824B317 +_080D7BF8: + ldr r1, _080D7C28 + adds r0, r4, #0 + bl sub_080088B8 +_080D7C00: + bl sub_080DB000 + ldr r4, _080D7C2C + ldr r1, _080D7C30 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D7C34 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080D7C46 + .align 2, 0 +_080D7C28: .4byte gUnknown_824B32D +_080D7C2C: .4byte gUnknown_2021C7C +_080D7C30: .4byte gUnknown_2022AE0 +_080D7C34: .4byte gUnknown_3005B60 +_080D7C38: + bl sub_080DE454 + cmp r0, #0 + bne _080D7C46 + strh r0, [r4, #8] + ldr r0, _080D7C4C + str r0, [r4] +_080D7C46: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7C4C: .4byte sub_080D7C50 + thumb_func_end sub_080D7B68 + + thumb_func_start sub_080D7C50 +sub_080D7C50: @ 0x080D7C50 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _080D7C90 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080D7C68 + cmp r1, #2 + bne _080D7CAE +_080D7C68: + movs r0, #5 + bl sub_080A306C + ldr r0, _080D7C94 + ldrb r0, [r0] + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D7CA0 + movs r0, #1 + bl sub_080DBBF4 + ldr r0, _080D7C98 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D7C9C + b _080D7CAC + .align 2, 0 +_080D7C90: .4byte gUnknown_3002360 +_080D7C94: .4byte gUnknown_2039BC5 +_080D7C98: .4byte gUnknown_3005B60 +_080D7C9C: .4byte sub_080D7CBC +_080D7CA0: + ldr r0, _080D7CB4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D7CB8 +_080D7CAC: + str r0, [r1] +_080D7CAE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D7CB4: .4byte gUnknown_3005B60 +_080D7CB8: .4byte sub_080D8090 + thumb_func_end sub_080D7C50 + + thumb_func_start sub_080D7CBC +sub_080D7CBC: @ 0x080D7CBC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _080D7D60 + movs r1, #0xa0 + strh r1, [r0] + ldr r0, _080D7D64 + strh r1, [r0] + movs r7, #0 + ldr r0, _080D7D68 + mov sb, r0 + ldr r1, _080D7D6C + mov r8, r1 +_080D7CE2: + lsls r1, r7, #1 + mov r0, sb + ldrb r2, [r0] + lsls r0, r2, #6 + adds r1, r1, r0 + ldr r0, _080D7D70 + adds r1, r1, r0 + ldrh r5, [r1] + mov r6, sp + mov r1, r8 + ldr r0, [r1] + ldr r1, [r0, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #8] + cmp r0, #0 + beq _080D7D78 + adds r0, r2, #0 + bl sub_080DD94C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D7D78 + mov r2, r8 + ldr r0, [r2] + mov r2, sb + ldrb r1, [r2] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #8] + adds r1, r5, #0 + bl sub_080E4BF0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D7D78 + mov r1, r8 + ldr r0, [r1] + mov r2, sb + ldrb r1, [r2] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D7D78 + mov r0, sp + ldr r1, _080D7D74 + bl sub_080088B8 + adds r6, r0, #0 + lsls r4, r5, #3 + b _080D7DAA + .align 2, 0 +_080D7D60: .4byte gUnknown_2022ACA +_080D7D64: .4byte gUnknown_2022AD2 +_080D7D68: .4byte gUnknown_2039BC5 +_080D7D6C: .4byte gUnknown_2039BD4 +_080D7D70: .4byte gUnknown_2039ABE +_080D7D74: .4byte gUnknown_85CC48C +_080D7D78: + lsls r4, r5, #3 + cmp r5, #0 + beq _080D7DAA + mov r1, r8 + ldr r0, [r1] + mov r2, sb + ldrb r1, [r2] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #8] + cmp r0, r5 + bne _080D7DAA + ldr r0, _080D7E20 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r0, #3 + beq _080D7DAA + mov r0, sp + ldr r1, _080D7E24 + bl sub_080088B8 + adds r6, r0, #0 +_080D7DAA: + ldr r1, _080D7E28 + adds r1, r4, r1 + adds r0, r6, #0 + bl sub_080088B8 + adds r4, r7, #0 + adds r4, #9 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + mov r1, sp + bl sub_080DE2D4 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080D7CE2 + ldr r4, _080D7E2C + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080D8038 + ldr r2, _080D7E30 + ldr r0, [r4] + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, r1, #1 + ldr r0, _080D7E34 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + bl sub_080DAAD4 + ldr r1, _080D7E38 + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D7E3C + str r1, [r0] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D7E20: .4byte gUnknown_8565FCC +_080D7E24: .4byte gUnknown_85CC493 +_080D7E28: .4byte gUnknown_82EACC4 +_080D7E2C: .4byte gUnknown_2039BD4 +_080D7E30: .4byte gUnknown_2039AA0 +_080D7E34: .4byte gUnknown_2039BC5 +_080D7E38: .4byte gUnknown_3005B60 +_080D7E3C: .4byte sub_080D7E40 + thumb_func_end sub_080D7CBC + + thumb_func_start sub_080D7E40 +sub_080D7E40: @ 0x080D7E40 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + ldr r3, _080D7E8C + ldr r1, _080D7E90 + ldr r0, _080D7E94 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, #0x1e + adds r1, r0, r1 + movs r2, #3 +_080D7E58: + ldrh r0, [r1] + cmp r0, #0 + beq _080D7E64 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080D7E64: + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080D7E58 + ldrh r0, [r3, #0x2e] + movs r5, #1 + ands r5, r0 + cmp r5, #0 + beq _080D7EA0 + movs r0, #5 + bl sub_080A306C + ldr r0, _080D7E98 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D7E9C + str r0, [r1] + b _080D8026 + .align 2, 0 +_080D7E8C: .4byte gUnknown_3002360 +_080D7E90: .4byte gUnknown_2039AA0 +_080D7E94: .4byte gUnknown_2039BC5 +_080D7E98: .4byte gUnknown_3005B60 +_080D7E9C: .4byte sub_080D8090 +_080D7EA0: + ldrh r0, [r3, #0x30] + cmp r0, #0x20 + bne _080D7EA8 + b _080D8026 +_080D7EA8: + cmp r0, #0x20 + bgt _080D7EB2 + cmp r0, #2 + beq _080D7EBE + b _080D8026 +_080D7EB2: + cmp r0, #0x40 + beq _080D7F5C + cmp r0, #0x80 + bne _080D7EBC + b _080D7FC8 +_080D7EBC: + b _080D8026 +_080D7EBE: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_080DBBF4 + ldr r0, _080D7EF8 + ldr r1, _080D7EFC + ldr r1, [r1] + ldr r1, [r1] + ldrb r1, [r1, #1] + adds r1, #1 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + adds r4, r0, #0 + ldr r0, _080D7F00 + ldrb r0, [r0] + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080D7F08 + ldr r1, _080D7F04 + adds r0, r4, #0 + bl sub_080088B8 + b _080D7F10 + .align 2, 0 +_080D7EF8: .4byte gUnknown_2022AE0 +_080D7EFC: .4byte gUnknown_2039BD4 +_080D7F00: .4byte gUnknown_2039BC5 +_080D7F04: .4byte gUnknown_824B317 +_080D7F08: + ldr r1, _080D7F40 + adds r0, r4, #0 + bl sub_080088B8 +_080D7F10: + bl sub_080DB000 + ldr r4, _080D7F44 + ldr r1, _080D7F48 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_080DE338 + ldr r0, _080D7F4C + movs r1, #0 + strh r1, [r0] + ldr r0, _080D7F50 + strh r1, [r0] + ldr r1, _080D7F54 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D7F58 + str r1, [r0] + b _080D8026 + .align 2, 0 +_080D7F40: .4byte gUnknown_824B32D +_080D7F44: .4byte gUnknown_2021C7C +_080D7F48: .4byte gUnknown_2022AE0 +_080D7F4C: .4byte gUnknown_2022ACA +_080D7F50: .4byte gUnknown_2022AD2 +_080D7F54: .4byte gUnknown_3005B60 +_080D7F58: .4byte sub_080D7C50 +_080D7F5C: + ldr r4, _080D7F7C + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080D8064 + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #0 + bne _080D7F80 + subs r0, r6, #1 + b _080D7F82 + .align 2, 0 +_080D7F7C: .4byte gUnknown_2039BD4 +_080D7F80: + subs r0, #1 +_080D7F82: + strb r0, [r1] + ldr r4, _080D7FBC + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080D8038 + ldr r2, _080D7FC0 + ldr r0, [r4] + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, r1, #1 + ldr r0, _080D7FC4 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + bl sub_080DAAD4 + cmp r6, #1 + bls _080D8026 + movs r0, #5 + bl sub_080A306C + b _080D8026 + .align 2, 0 +_080D7FBC: .4byte gUnknown_2039BD4 +_080D7FC0: .4byte gUnknown_2039AA0 +_080D7FC4: .4byte gUnknown_2039BC5 +_080D7FC8: + ldr r4, _080D7FE8 + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080D8064 + ldr r0, [r4] + ldr r1, [r0] + ldrb r2, [r1] + subs r0, r6, #1 + cmp r2, r0 + bne _080D7FEC + strb r5, [r1] + b _080D7FF0 + .align 2, 0 +_080D7FE8: .4byte gUnknown_2039BD4 +_080D7FEC: + adds r0, r2, #1 + strb r0, [r1] +_080D7FF0: + ldr r4, _080D802C + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080D8038 + ldr r2, _080D8030 + ldr r0, [r4] + ldr r0, [r0] + ldrb r1, [r0] + lsls r1, r1, #1 + ldr r0, _080D8034 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + bl sub_080DAAD4 + cmp r6, #1 + bls _080D8026 + movs r0, #5 + bl sub_080A306C +_080D8026: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D802C: .4byte gUnknown_2039BD4 +_080D8030: .4byte gUnknown_2039AA0 +_080D8034: .4byte gUnknown_2039BC5 + thumb_func_end sub_080D7E40 + + thumb_func_start sub_080D8038 +sub_080D8038: @ 0x080D8038 + push {lr} + sub sp, #0x10 + adds r3, r0, #0 + lsls r3, r3, #0x19 + movs r0, #0xf8 + lsls r0, r0, #0x15 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r1, #1 + str r1, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + str r1, [sp, #0xc] + movs r0, #2 + movs r2, #1 + bl sub_080DE3C0 + add sp, #0x10 + pop {r0} + bx r0 + thumb_func_end sub_080D8038 + + thumb_func_start sub_080D8064 +sub_080D8064: @ 0x080D8064 + push {lr} + sub sp, #0xc + adds r3, r0, #0 + lsls r3, r3, #0x19 + movs r0, #0xf8 + lsls r0, r0, #0x15 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #2 + movs r1, #0xc + movs r2, #1 + bl sub_080DE418 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_080D8064 + + thumb_func_start sub_080D8090 +sub_080D8090: @ 0x080D8090 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080D80EC + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D8108 + ldr r4, _080D80F0 + ldrb r0, [r4] + bl sub_080DB01C + ldr r1, _080D80F4 + ldr r1, [r1] + ldrb r2, [r4] + ldr r3, [r1, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + strh r0, [r1, #6] + ldr r4, _080D80F8 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D80FC + adds r1, r4, #0 + bl sub_080A8A44 + ldr r1, _080D8100 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D8104 + str r1, [r0] + bl sub_080DB6CC + movs r0, #0 + bl sub_080DBBF4 + b _080D811A + .align 2, 0 +_080D80EC: .4byte gUnknown_2039BCA +_080D80F0: .4byte gUnknown_2039BC5 +_080D80F4: .4byte gUnknown_2039BD4 +_080D80F8: .4byte sub_080FD24C +_080D80FC: .4byte sub_080D8128 +_080D8100: .4byte gUnknown_3005B60 +_080D8104: .4byte sub_080D6E94 +_080D8108: + bl sub_080DB07C + ldr r0, _080D8120 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D8124 + str r0, [r1] +_080D811A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D8120: .4byte gUnknown_3005B60 +_080D8124: .4byte sub_080D8158 + thumb_func_end sub_080D8090 + + thumb_func_start sub_080D8128 +sub_080D8128: @ 0x080D8128 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldr r2, _080D814C + ldr r0, _080D8150 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080D8154 + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080D814C: .4byte gUnknown_3005B60 +_080D8150: .4byte gUnknown_2039BD4 +_080D8154: .4byte sub_080D8158 + thumb_func_end sub_080D8128 + + thumb_func_start sub_080D8158 +sub_080D8158: @ 0x080D8158 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_080DB000 + ldr r0, _080D81E0 + movs r1, #0 + strh r1, [r0] + ldr r0, _080D81E4 + strh r1, [r0] + movs r0, #0 + bl sub_080DBBF4 + movs r6, #0 + movs r5, #0x90 + lsls r5, r5, #0x14 +_080D8178: + lsrs r4, r5, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r5, r5, r0 + adds r6, #1 + cmp r6, #3 + ble _080D8178 + movs r0, #0 + bl sub_080DE468 + ldr r1, _080D81E8 + ldr r0, _080D81EC + movs r2, #0x80 + lsls r2, r2, #3 + ldr r4, _080D81F0 + str r1, [r4] + str r0, [r4, #4] + lsrs r1, r2, #2 + movs r3, #0x84 + lsls r3, r3, #0x18 + orrs r1, r3 + str r1, [r4, #8] + ldr r1, [r4, #8] + ldr r1, _080D81F4 + adds r0, r0, r1 + movs r1, #0 + bl sub_080A1200 + ldr r1, _080D81F8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + strh r1, [r0, #0xa] + ldr r1, _080D81FC + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D81E0: .4byte gUnknown_2022ACA +_080D81E4: .4byte gUnknown_2022AD2 +_080D81E8: .4byte gUnknown_20377B4 +_080D81EC: .4byte gUnknown_201A604 +_080D81F0: .4byte 0x040000D4 +_080D81F4: .4byte 0xFFFFFC00 +_080D81F8: .4byte gUnknown_3005B60 +_080D81FC: .4byte sub_080D8200 + thumb_func_end sub_080D8158 + + thumb_func_start sub_080D8200 +sub_080D8200: @ 0x080D8200 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D8244 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080D823E + movs r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _080D823E + bl sub_080DD34C + movs r0, #1 + bl sub_080DDE00 + ldr r0, _080D8248 + str r0, [r4] +_080D823E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D8244: .4byte gUnknown_3005B60 +_080D8248: .4byte sub_080D824C + thumb_func_end sub_080D8200 + + thumb_func_start sub_080D824C +sub_080D824C: @ 0x080D824C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080D8278 + ldr r0, [r0] + ldr r0, [r0] + ldrh r1, [r0, #6] + movs r0, #0x90 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080D8272 + ldr r0, _080D827C + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D8280 + str r0, [r1] +_080D8272: + pop {r0} + bx r0 + .align 2, 0 +_080D8278: .4byte gUnknown_2039BD4 +_080D827C: .4byte gUnknown_3005B60 +_080D8280: .4byte sub_080D8284 + thumb_func_end sub_080D824C + + thumb_func_start sub_080D8284 +sub_080D8284: @ 0x080D8284 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080D831C + lsls r3, r6, #2 + adds r1, r3, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080D8314 + ldr r2, _080D8320 + ldr r0, [r2] + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #0x10] + ldr r0, [r2] + ldr r1, [r0] + ldr r0, _080D8324 + ldr r0, [r0] + str r0, [r1, #0x18] + ldr r0, _080D8328 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + adds r7, r3, #0 + cmp r0, #0 + beq _080D8304 + bl sub_080DA094 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D8304 + movs r4, #0 + ldr r1, _080D832C + ldrb r0, [r1] + cmp r0, #3 + bgt _080D8304 + adds r5, r1, #0 +_080D82DA: + ldrb r0, [r5] + adds r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB01C + ldr r1, _080D8320 + ldr r1, [r1] + ldrb r2, [r5] + adds r2, r2, r4 + ldr r3, [r1, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + strh r0, [r1, #6] + adds r4, #1 + ldrb r0, [r5] + adds r0, r4, r0 + cmp r0, #3 + ble _080D82DA +_080D8304: + ldr r1, _080D831C + adds r0, r7, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + ldr r1, _080D8330 + str r1, [r0] +_080D8314: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080D831C: .4byte gUnknown_3005B60 +_080D8320: .4byte gUnknown_2039BD4 +_080D8324: .4byte gUnknown_3005AE0 +_080D8328: .4byte gUnknown_2039BCA +_080D832C: .4byte gUnknown_2039BD0 +_080D8330: .4byte sub_080D8334 + thumb_func_end sub_080D8284 + + thumb_func_start sub_080D8334 +sub_080D8334: @ 0x080D8334 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r2, _080D8374 + ldr r0, [r2] + ldr r0, [r0] + ldrb r6, [r0, #0x11] + ldr r1, _080D8378 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r4, #8 + ldrsh r0, [r0, r4] + mov sb, r2 + adds r4, r1, #0 + cmp r0, #0x3b + bls _080D836A + bl _080D98F0 +_080D836A: + lsls r0, r0, #2 + ldr r1, _080D837C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D8374: .4byte gUnknown_2039BD4 +_080D8378: .4byte gUnknown_3005B60 +_080D837C: .4byte _080D8380 +_080D8380: @ jump table + .4byte _080D8470 @ case 0 + .4byte _080D852C @ case 1 + .4byte _080D8552 @ case 2 + .4byte _080D85C0 @ case 3 + .4byte _080D8678 @ case 4 + .4byte _080D86C4 @ case 5 + .4byte _080D877C @ case 6 + .4byte _080D87B0 @ case 7 + .4byte _080D8808 @ case 8 + .4byte _080D8884 @ case 9 + .4byte _080D97B0 @ case 10 + .4byte _080D97DC @ case 11 + .4byte _080D8A30 @ case 12 + .4byte _080D8A64 @ case 13 + .4byte _080D8F6C @ case 14 + .4byte _080D905C @ case 15 + .4byte _080D90CC @ case 16 + .4byte _080D90FC @ case 17 + .4byte _080D91E4 @ case 18 + .4byte _080D9196 @ case 19 + .4byte _080D9814 @ case 20 + .4byte _080D9890 @ case 21 + .4byte _080D98B2 @ case 22 + .4byte _080D88AC @ case 23 + .4byte _080D8978 @ case 24 + .4byte _080D8B80 @ case 25 + .4byte _080D8B96 @ case 26 + .4byte _080D8C74 @ case 27 + .4byte _080D8C98 @ case 28 + .4byte _080D8D00 @ case 29 + .4byte _080D8DE4 @ case 30 + .4byte _080D9828 @ case 31 + .4byte _080D9870 @ case 32 + .4byte _080D96B0 @ case 33 + .4byte _080D9738 @ case 34 + .4byte _080D8A92 @ case 35 + .4byte _080D8AC8 @ case 36 + .4byte _080D8AEE @ case 37 + .4byte _080D8B2C @ case 38 + .4byte _080D8D54 @ case 39 + .4byte _080D8DBC @ case 40 + .4byte _080D9224 @ case 41 + .4byte _080D98F0 @ case 42 + .4byte _080D95A4 @ case 43 + .4byte _080D98F0 @ case 44 + .4byte _080D9028 @ case 45 + .4byte _080D9174 @ case 46 + .4byte _080D8A12 @ case 47 + .4byte _080D899C @ case 48 + .4byte _080D89EC @ case 49 + .4byte _080D8B54 @ case 50 + .4byte _080D8E88 @ case 51 + .4byte _080D8F14 @ case 52 + .4byte _080D93A2 @ case 53 + .4byte _080D9460 @ case 54 + .4byte _080D9758 @ case 55 + .4byte _080D9774 @ case 56 + .4byte _080D95CC @ case 57 + .4byte _080D9654 @ case 58 + .4byte _080D9694 @ case 59 +_080D8470: + bl sub_080DC4AC + movs r7, #0 + ldr r0, _080D84FC + ldr r0, [r0] + ldr r1, [r0] + ldr r0, [r0, #8] + ldrb r1, [r1, #0x10] + mov r5, r8 + lsls r5, r5, #2 + mov sl, r5 + ldrb r2, [r0] + cmp r1, r2 + beq _080D8498 + adds r2, r0, #0 +_080D848E: + adds r7, #1 + adds r0, r2, r7 + ldrb r0, [r0] + cmp r1, r0 + bne _080D848E +_080D8498: + ldr r4, _080D84FC + ldr r0, [r4] + ldr r0, [r0] + strb r7, [r0, #0x11] + ldr r0, [r4] + ldr r2, [r0] + ldrb r6, [r2, #0x11] + ldr r0, _080D8500 + ldrb r1, [r0] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080D8510 + ldrb r0, [r2, #7] + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #7] + bl sub_080DA094 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D84D0 + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0, #0x11] + bl sub_080DC7E4 +_080D84D0: + ldr r4, _080D8504 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D8508 + adds r1, r4, #0 + bl sub_080A8A44 + bl sub_080DB6CC + ldr r1, _080D850C + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D84FC: .4byte gUnknown_2039BD4 +_080D8500: .4byte gUnknown_2039BCA +_080D8504: .4byte sub_080FD4DC +_080D8508: .4byte sub_080D9900 +_080D850C: .4byte gUnknown_3005B60 +_080D8510: + adds r0, r6, #0 + bl sub_080DC7E4 + ldr r0, _080D8528 + mov r1, sl + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #2 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8528: .4byte gUnknown_3005B60 +_080D852C: + mov r3, sb + ldr r0, [r3] + ldr r0, [r0] + ldrb r1, [r0, #7] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D8540 + bl _080D98F0 +_080D8540: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #8] + bl _080D98F0 +_080D8552: + adds r0, r6, #0 + bl sub_080DE788 + bl sub_080DEE2C + ldr r0, _080D8598 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #0xc] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080D8582 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _080D85A0 +_080D8582: + ldr r0, _080D859C + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x1f + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8598: .4byte gUnknown_2039BD4 +_080D859C: .4byte gUnknown_3005B60 +_080D85A0: + bl sub_080DB000 + ldr r0, _080D85BC + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r6, [r1, #0x1c] + movs r0, #3 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D85BC: .4byte gUnknown_3005B60 +_080D85C0: + mov r4, r8 + lsls r4, r4, #2 + mov sl, r4 + ldr r1, _080D865C + movs r2, #0 + adds r0, r1, #3 +_080D85CC: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _080D85CC + movs r7, #4 + mov r5, sb + ldr r0, [r5] + ldr r0, [r0, #0x18] + movs r1, #0 + movs r2, #0x14 + bl memset + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0x11] + bl sub_080DE140 + ldr r4, _080D8660 + ldr r0, [r5] + ldr r0, [r0] + ldrb r3, [r0, #0x11] + lsls r2, r3, #6 + adds r0, r2, r4 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x3c + adds r1, r2, r1 + ldr r1, [r1] + adds r4, #0x38 + adds r2, r2, r4 + ldr r2, [r2] + bl sub_080DA8D8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _080D8664 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r3, r0, r2 + movs r1, #0x78 + strh r1, [r3, #0x24] + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080D8668 + str r1, [r0] + ldr r0, _080D866C + mov r4, sl + add r4, r8 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r5, [r4, #0xc] + ldr r1, _080D8670 + ldr r0, _080D8674 + ldrb r0, [r0] + adds r0, r0, r1 + strb r5, [r0] + mov r1, sb + ldr r0, [r1] + ldr r0, [r0] + ldrb r0, [r0, #0x11] + bl sub_080DC150 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080DC34C + strh r7, [r4, #8] + bl _080D98F0 + .align 2, 0 +_080D865C: .4byte gUnknown_2024188 +_080D8660: .4byte gUnknown_2039AA0 +_080D8664: .4byte gUnknown_20205AC +_080D8668: .4byte sub_080D9924 +_080D866C: .4byte gUnknown_3005B60 +_080D8670: .4byte gUnknown_2023E88 +_080D8674: .4byte gUnknown_2023EAF +_080D8678: + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r2, r0, r4 + ldrb r5, [r2, #0xc] + ldr r1, _080D86BC + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _080D86C0 + cmp r1, r0 + beq _080D869C + bl _080D98F0 +_080D869C: + mov r3, sb + ldr r0, [r3] + ldr r1, [r0, #0x14] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080D86B4 + bl _080D98F0 +_080D86B4: + movs r0, #5 + strh r0, [r2, #8] + bl _080D98F0 + .align 2, 0 +_080D86BC: .4byte gUnknown_20205AC +_080D86C0: .4byte sub_08007140 +_080D86C4: + mov r5, sb + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r5, r0, #2 + adds r1, r5, r1 + ldrb r1, [r1, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D86EE + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x21 + strh r1, [r0, #8] + bl _080D98F0 +_080D86EE: + bl sub_080DB000 + ldr r0, _080D8720 + lsls r1, r6, #6 + ldr r2, _080D8724 + adds r1, r1, r2 + bl sub_080088B8 + mov r2, sb + ldr r0, [r2] + ldr r0, [r0, #4] + adds r3, r5, r0 + ldrh r1, [r3, #6] + movs r0, #0xb1 + lsls r0, r0, #1 + cmp r1, r0 + bhi _080D8730 + ldr r0, _080D8728 + lsls r1, r1, #3 + ldr r2, _080D872C + adds r1, r1, r2 + bl sub_080088B8 + b _080D8740 + .align 2, 0 +_080D8720: .4byte gUnknown_2021C40 +_080D8724: .4byte gUnknown_2039AA2 +_080D8728: .4byte gUnknown_2021C54 +_080D872C: .4byte gUnknown_82EACC4 +_080D8730: + ldr r0, _080D8768 + ldr r2, _080D876C + ldrb r1, [r3, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 +_080D8740: + ldr r4, _080D8770 + ldr r1, _080D8774 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D8778 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #6 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8768: .4byte gUnknown_2021C54 +_080D876C: .4byte gUnknown_8560E80 +_080D8770: .4byte gUnknown_2021C7C +_080D8774: .4byte gUnknown_824B346 +_080D8778: .4byte gUnknown_3005B60 +_080D877C: + bl sub_080DE454 + adds r1, r0, #0 + cmp r1, #0 + beq _080D878A + bl _080D98F0 +_080D878A: + ldr r0, _080D87A8 + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x5a + strb r1, [r0] + ldr r1, _080D87AC + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #7 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D87A8: .4byte gUnknown_2039BD4 +_080D87AC: .4byte gUnknown_3005B60 +_080D87B0: + mov r5, sb + ldr r1, [r5] + ldr r0, [r1] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + bl sub_080DDF98 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0x11] + bl sub_080DDFC8 + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0x11] + bl sub_080DE140 + adds r0, r4, #0 + bl sub_080DE20C + adds r0, r4, #0 + bl sub_080A32D8 + ldr r1, _080D8804 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8804: .4byte gUnknown_3005B60 +_080D8808: + ldr r0, _080D8848 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080D884C + ldrb r4, [r0] + cmp r4, #0 + beq _080D881C + bl _080D98F0 +_080D881C: + adds r0, r6, #0 + bl sub_080DE114 + ldr r0, _080D8850 + ldr r1, [r0] + ldr r0, [r1] + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _080D8858 + ldr r0, _080D8854 + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r4, [r1, #0x1c] + movs r0, #9 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8848: .4byte gUnknown_2038098 +_080D884C: .4byte gUnknown_203809D +_080D8850: .4byte gUnknown_2039BD4 +_080D8854: .4byte gUnknown_3005B60 +_080D8858: + ldr r1, [r1, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _080D8872 + adds r0, r6, #0 + bl sub_080DBDD8 +_080D8872: + bl sub_080DD890 + ldr r0, _080D8880 + mov r4, r8 + lsls r1, r4, #2 + b _080D898A + .align 2, 0 +_080D8880: .4byte gUnknown_3005B60 +_080D8884: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r2, r0, r4 + ldrh r0, [r2, #0x1c] + adds r1, r0, #1 + strh r1, [r2, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + bgt _080D88A0 + bl _080D98F0 +_080D88A0: + movs r0, #0 + strh r0, [r2, #0x1c] + movs r0, #7 + strh r0, [r2, #8] + bl _080D98F0 +_080D88AC: + mov r0, r8 + lsls r2, r0, #2 + adds r0, r2, r0 + lsls r0, r0, #3 + adds r7, r0, r4 + movs r0, #0 + strh r0, [r7, #0xa] + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #4] + mov ip, r0 + lsls r1, r6, #3 + subs r0, r1, r6 + lsls r5, r0, #2 + mov r0, ip + adds r3, r5, r0 + ldrb r0, [r3, #0x13] + mov sl, r2 + str r1, [sp, #4] + cmp r0, #0xff + beq _080D88F2 + ldrb r1, [r3, #0x13] + adds r0, r6, #0 + bl sub_080DCBC0 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #4] + adds r0, r5, r0 + movs r1, #0xff + strb r1, [r0, #0x13] + movs r0, #0x18 + strh r0, [r7, #8] + bl _080D98F0 +_080D88F2: + ldrb r0, [r3, #0x14] + cmp r0, #0xff + beq _080D8970 + movs r7, #0 + cmp r7, r6 + beq _080D8906 + mov r2, ip + ldrb r0, [r2, #0x13] + cmp r0, #0xff + bne _080D8924 +_080D8906: + adds r7, #1 + cmp r7, #3 + bgt _080D8924 + cmp r7, r6 + beq _080D8906 + mov r3, sb + ldr r0, [r3] + ldr r1, [r0, #4] + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x13] + cmp r0, #0xff + beq _080D8906 +_080D8924: + cmp r7, #4 + bne _080D8960 + mov r4, sb + ldr r0, [r4] + ldr r0, [r0, #4] + ldr r5, [sp, #4] + subs r4, r5, r6 + lsls r4, r4, #2 + adds r0, r4, r0 + ldrb r1, [r0, #0x14] + adds r0, r6, #0 + bl sub_080DCBC0 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #4] + adds r4, r4, r0 + movs r0, #0xff + strb r0, [r4, #0x14] + ldr r1, _080D895C + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x18 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D895C: .4byte gUnknown_3005B60 +_080D8960: + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x30 + strh r1, [r0, #8] + bl _080D98F0 +_080D8970: + movs r0, #0x30 + strh r0, [r7, #8] + bl _080D98F0 +_080D8978: + bl sub_080DE454 + cmp r0, #0 + beq _080D8984 + bl _080D98F0 +_080D8984: + ldr r0, _080D8998 + mov r2, r8 + lsls r1, r2, #2 +_080D898A: + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x17 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8998: .4byte gUnknown_3005B60 +_080D899C: + mov r3, sb + ldr r0, [r3] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x11] + movs r3, #3 + ands r3, r0 + cmp r3, #1 + bne _080D89BC + movs r0, #5 + bl sub_080DCE84 + b _080D89D2 +_080D89BC: + cmp r3, #2 + bne _080D89C8 + movs r0, #6 + bl sub_080DCE84 + b _080D89D2 +_080D89C8: + cmp r3, #3 + bne _080D8A00 + movs r0, #7 + bl sub_080DCE84 +_080D89D2: + ldr r0, _080D89E8 + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x31 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D89E8: .4byte gUnknown_3005B60 +_080D89EC: + mov r3, sb + ldr r0, [r3] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D8A00 + bl _080D98F0 +_080D8A00: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x2f + strh r1, [r0, #8] + bl _080D98F0 +_080D8A12: + movs r0, #1 + bl sub_080DD76C + ldr r0, _080D8A2C + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xc + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8A2C: .4byte gUnknown_3005B60 +_080D8A30: + mov r3, sb + ldr r0, [r3] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r4, #2 + ldrsh r1, [r0, r4] + movs r0, #0 + adds r2, r6, #0 + bl sub_080DB78C + ldr r1, _080D8A60 + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xd + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8A60: .4byte gUnknown_3005B60 +_080D8A64: + mov r0, sb + ldr r1, [r0] + ldr r0, [r1] + ldrb r0, [r0, #0x11] + ldr r1, [r1, #0x14] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D8A80 + bl _080D98F0 +_080D8A80: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x23 + strh r1, [r0, #8] + bl _080D98F0 +_080D8A92: + mov r2, sb + ldr r0, [r2] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0x10 + bne _080D8AB0 + movs r0, #8 + bl sub_080DCE84 +_080D8AB0: + ldr r0, _080D8AC4 + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x24 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8AC4: .4byte gUnknown_3005B60 +_080D8AC8: + mov r5, sb + ldr r0, [r5] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D8ADC + bl _080D98F0 +_080D8ADC: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x25 + strh r1, [r0, #8] + bl _080D98F0 +_080D8AEE: + adds r0, r6, #0 + movs r1, #1 + bl sub_080DAD1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D8B18 + ldr r1, _080D8B14 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + movs r1, #0x26 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8B14: .4byte gUnknown_3005B60 +_080D8B18: + ldr r0, _080D8B28 + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + b _080D8B4C + .align 2, 0 +_080D8B28: .4byte gUnknown_3005B60 +_080D8B2C: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r4 + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bgt _080D8B48 + bl _080D98F0 +_080D8B48: + movs r0, #0 + strh r0, [r1, #0x1c] +_080D8B4C: + movs r0, #0x32 + strh r0, [r1, #8] + bl _080D98F0 +_080D8B54: + adds r0, r6, #0 + bl sub_080DAEFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D8B66 + movs r0, #0x63 + bl sub_080A306C +_080D8B66: + ldr r0, _080D8B7C + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x19 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8B7C: .4byte gUnknown_3005B60 +_080D8B80: + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0 + strh r1, [r0, #0xa] + movs r1, #0x1a + strh r1, [r0, #8] + bl _080D98F0 +_080D8B96: + movs r3, #0 + movs r5, #0 + str r5, [sp] + mov r0, r8 + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r2, #0xa + ldrsh r7, [r0, r2] + mov sl, r1 + cmp r7, #3 + bgt _080D8C10 + ldr r5, _080D8BD4 + ldr r2, _080D8BD8 +_080D8BB4: + movs r3, #0 + str r3, [sp] + adds r0, r3, #0 + cmp r0, r6 + beq _080D8BDC + ldrb r0, [r5] + cmp r0, r7 + bne _080D8BDC + ldr r0, [r2] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x13] + cmp r0, #0xff + beq _080D8BDC + movs r1, #1 + str r1, [sp] + b _080D8C04 + .align 2, 0 +_080D8BD4: .4byte gUnknown_2039BC6 +_080D8BD8: .4byte gUnknown_2039BD4 +_080D8BDC: + adds r3, #1 + cmp r3, #3 + bgt _080D8C04 + cmp r3, r6 + beq _080D8BDC + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, r7 + bne _080D8BDC + ldr r0, [r2] + ldr r1, [r0, #4] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x13] + cmp r0, #0xff + beq _080D8BDC + movs r0, #1 + str r0, [sp] +_080D8C04: + ldr r1, [sp] + cmp r1, #0 + bne _080D8C1A + adds r7, #1 + cmp r7, #3 + ble _080D8BB4 +_080D8C10: + ldr r2, [sp] + lsls r0, r2, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0 + beq _080D8C5C +_080D8C1A: + mov r5, sl + add r5, r8 + lsls r5, r5, #3 + adds r5, r5, r4 + ldr r0, _080D8C58 + adds r0, r3, r0 + ldrb r0, [r0] + strh r0, [r5, #0xa] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov r4, sb + ldr r1, [r4] + ldr r1, [r1, #4] + lsls r4, r3, #3 + subs r4, r4, r3 + lsls r4, r4, #2 + adds r1, r4, r1 + ldrb r1, [r1, #0x13] + bl sub_080DCBC0 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #4] + adds r4, r4, r0 + movs r0, #0xff + strb r0, [r4, #0x13] + movs r0, #0x1b + strh r0, [r5, #8] + bl _080D98F0 + .align 2, 0 +_080D8C58: .4byte gUnknown_2039BC6 +_080D8C5C: + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r2, [r0, #0xa] + strh r2, [r0, #0x1c] + movs r1, #0x33 + strh r1, [r0, #8] + bl sub_080DAFE8 + bl _080D98F0 +_080D8C74: + bl sub_080DE454 + cmp r0, #0 + beq _080D8C80 + bl _080D98F0 +_080D8C80: + ldr r0, _080D8C94 + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x1c + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8C94: .4byte gUnknown_3005B60 +_080D8C98: + movs r7, #0 + mov r3, r8 + lsls r0, r3, #2 + adds r1, r0, r3 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r4, #0xa + ldrsh r2, [r1, r4] + ldr r1, _080D8CF8 + mov sl, r0 + adds r5, r1, #0 + ldrb r0, [r5] + cmp r2, r0 + beq _080D8CC2 + adds r1, r2, #0 + adds r2, r5, #0 +_080D8CB8: + adds r7, #1 + adds r0, r7, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _080D8CB8 +_080D8CC2: + mov r1, sb + ldr r0, [r1] + ldr r1, [r0, #4] + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0xe] + ldrh r0, [r0, #2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r1, r1, #0 + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + bl sub_080DB78C + ldr r1, _080D8CFC + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x1d + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8CF8: .4byte gUnknown_2039BC6 +_080D8CFC: .4byte gUnknown_3005B60 +_080D8D00: + movs r7, #0 + mov r2, r8 + lsls r0, r2, #2 + adds r1, r0, r2 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r5, #0xa + ldrsh r3, [r1, r5] + ldr r1, _080D8D50 + mov sl, r0 + adds r5, r1, #0 + ldrb r0, [r5] + cmp r3, r0 + beq _080D8D26 +_080D8D1C: + adds r7, #1 + adds r0, r7, r1 + ldrb r0, [r0] + cmp r3, r0 + bne _080D8D1C +_080D8D26: + mov r1, sb + ldr r0, [r1] + ldr r1, [r0, #0x14] + lsls r0, r7, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D8D3E + bl _080D98F0 +_080D8D3E: + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x27 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8D50: .4byte gUnknown_2039BC6 +_080D8D54: + movs r7, #0 + mov r2, r8 + lsls r0, r2, #2 + adds r1, r0, r2 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r3, #0xa + ldrsh r2, [r1, r3] + ldr r1, _080D8DA4 + mov sl, r0 + adds r5, r1, #0 + ldrb r4, [r5] + cmp r2, r4 + beq _080D8D7E + adds r1, r2, #0 + adds r2, r5, #0 +_080D8D74: + adds r7, #1 + adds r0, r7, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _080D8D74 +_080D8D7E: + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_080DAD1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D8DAC + ldr r1, _080D8DA8 + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + movs r1, #0x28 + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D8DA4: .4byte gUnknown_2039BC6 +_080D8DA8: .4byte gUnknown_3005B60 +_080D8DAC: + ldr r0, _080D8DB8 + mov r1, sl + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + b _080D8DDC + .align 2, 0 +_080D8DB8: .4byte gUnknown_3005B60 +_080D8DBC: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r4 + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bgt _080D8DD8 + bl _080D98F0 +_080D8DD8: + movs r0, #0 + strh r0, [r1, #0x1c] +_080D8DDC: + movs r0, #0x1e + strh r0, [r1, #8] + bl _080D98F0 +_080D8DE4: + movs r7, #0 + ldr r2, _080D8E30 + ldrb r3, [r2] + mov r0, r8 + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r0, r0, #3 + adds r4, r0, r4 + movs r5, #0xa + ldrsh r0, [r4, r5] + mov sl, r1 + adds r5, r2, #0 + cmp r3, r0 + beq _080D8E16 + adds r3, r5, #0 + adds r2, r4, #0 +_080D8E04: + adds r7, #1 + cmp r7, #3 + bgt _080D8E16 + adds r0, r7, r3 + ldrb r1, [r0] + movs r4, #0xa + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _080D8E04 +_080D8E16: + lsls r4, r7, #0x18 + lsrs r0, r4, #0x18 + bl sub_080DAEFC + lsls r0, r0, #0x18 + adds r6, r4, #0 + cmp r0, #0 + beq _080D8E34 + movs r0, #0x63 + bl sub_080A306C + b _080D8E3A + .align 2, 0 +_080D8E30: .4byte gUnknown_2039BC6 +_080D8E34: + movs r0, #0x64 + bl sub_080A306C +_080D8E3A: + ldr r5, _080D8E80 + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r4, r0, #2 + adds r1, r4, r1 + ldrb r1, [r1, #0x15] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080D8E68 + lsrs r0, r6, #0x18 + bl sub_080DBDD8 + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x15] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x15] +_080D8E68: + ldr r0, _080D8E84 + mov r1, sl + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + movs r0, #0x1a + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8E80: .4byte gUnknown_2039BD4 +_080D8E84: .4byte gUnknown_3005B60 +_080D8E88: + mov r5, r8 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sl, r2 + cmp r0, #9 + bgt _080D8EA6 + bl _080D98F0 +_080D8EA6: + movs r0, #0 + strh r0, [r4, #0x1c] + mov r1, sb + ldr r0, [r1] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #0xc] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080D8ECC + ldrb r1, [r2, #0x11] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D8EEE +_080D8ECC: + bl sub_080DB000 + ldr r0, _080D8F00 + lsls r1, r6, #6 + ldr r2, _080D8F04 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D8F08 + ldr r1, _080D8F0C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 +_080D8EEE: + ldr r0, _080D8F10 + mov r1, sl + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x34 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8F00: .4byte gUnknown_2021C40 +_080D8F04: .4byte gUnknown_2039AA2 +_080D8F08: .4byte gUnknown_2021C7C +_080D8F0C: .4byte gUnknown_824C04A +_080D8F10: .4byte gUnknown_3005B60 +_080D8F14: + bl sub_080DE454 + cmp r0, #0 + beq _080D8F20 + bl _080D98F0 +_080D8F20: + ldr r0, _080D8F4C + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080D8F54 + ldr r0, _080D8F50 + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x11 + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8F4C: .4byte gUnknown_2039BD4 +_080D8F50: .4byte gUnknown_3005B60 +_080D8F54: + ldr r0, _080D8F68 + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xe + strh r0, [r1, #8] + bl _080D98F0 + .align 2, 0 +_080D8F68: .4byte gUnknown_3005B60 +_080D8F6C: + mov r4, sb + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] + lsls r4, r0, #0x18 + lsrs r5, r4, #0x18 + cmp r5, #0 + beq _080D8FD4 + bl sub_080DB000 + asrs r0, r4, #0x18 + cmp r0, #1 + bne _080D8F98 + ldr r0, _080D8F94 + b _080D8F9E + .align 2, 0 +_080D8F94: .4byte gUnknown_824BCF2 +_080D8F98: + cmp r0, #2 + bne _080D8FAC + ldr r0, _080D8FA8 +_080D8F9E: + movs r1, #1 + bl sub_080DE338 + b _080D8FB4 + .align 2, 0 +_080D8FA8: .4byte gUnknown_824BD18 +_080D8FAC: + ldr r0, _080D8FCC + movs r1, #1 + bl sub_080DE338 +_080D8FB4: + movs r0, #3 + bl sub_080DCE84 + ldr r1, _080D8FD0 + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + b _080D900A + .align 2, 0 +_080D8FCC: .4byte gUnknown_824BD3E +_080D8FD0: .4byte gUnknown_3005B60 +_080D8FD4: + bl sub_080DB000 + ldr r0, _080D9014 + lsls r1, r6, #6 + ldr r2, _080D9018 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D901C + ldr r1, _080D9020 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + movs r0, #2 + bl sub_080DCE84 + ldr r1, _080D9024 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0x1c] +_080D900A: + movs r1, #0x2d + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D9014: .4byte gUnknown_2021C40 +_080D9018: .4byte gUnknown_2039AA2 +_080D901C: .4byte gUnknown_2021C7C +_080D9020: .4byte gUnknown_824BCCF +_080D9024: .4byte gUnknown_3005B60 +_080D9028: + mov r3, sb + ldr r0, [r3] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D903C + bl _080D98F0 +_080D903C: + ldrb r0, [r2, #0x11] + bl sub_080DC118 + ldr r1, _080D9058 + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xf + strh r1, [r0, #8] + bl _080D98F0 + .align 2, 0 +_080D9058: .4byte gUnknown_3005B60 +_080D905C: + bl sub_080DE454 + cmp r0, #0 + beq _080D9068 + bl _080D98F0 +_080D9068: + ldr r1, _080D90C4 + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x32 + bgt _080D9086 + bl _080D98F0 +_080D9086: + ldr r7, _080D90C8 + ldr r0, [r7] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r5, r0, #2 + adds r2, r5, r1 + ldrb r1, [r2, #0x15] + movs r0, #0x10 + mov r8, r0 + ands r0, r1 + cmp r0, #0 + bne _080D90BA + movs r1, #2 + ldrsh r0, [r2, r1] + ldrb r1, [r2, #0x17] + adds r2, r6, #0 + bl sub_080DB78C + ldr r0, [r7] + ldr r1, [r0, #4] + adds r1, r5, r1 + ldrh r0, [r1, #2] + ldrb r2, [r1, #0x17] + adds r0, r0, r2 + strh r0, [r1, #2] +_080D90BA: + mov r3, r8 + strh r3, [r4, #8] + bl _080D98F0 + .align 2, 0 +_080D90C4: .4byte gUnknown_3005B60 +_080D90C8: .4byte gUnknown_2039BD4 +_080D90CC: + mov r5, sb + ldr r0, [r5] + ldr r1, [r0, #0x14] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080D90E8 + bl _080D98F0 +_080D90E8: + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r1, [r0, #0x1c] + movs r1, #0x11 + strh r1, [r0, #8] + bl _080D98F0 +_080D90FC: + mov r3, sb + ldr r0, [r3] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D9164 + bl sub_080DB000 + ldr r0, _080D9150 + lsls r1, r6, #6 + ldr r2, _080D9154 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D9158 + ldr r1, _080D915C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r0, _080D9160 + mov r5, r8 + lsls r4, r5, #2 + add r4, r8 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #0x1c] + bl sub_080DCE84 + movs r0, #0x2e + strh r0, [r4, #8] + b _080D98F0 + .align 2, 0 +_080D9150: .4byte gUnknown_2021C40 +_080D9154: .4byte gUnknown_2039AA2 +_080D9158: .4byte gUnknown_2021C7C +_080D915C: .4byte gUnknown_824BFBE +_080D9160: .4byte gUnknown_3005B60 +_080D9164: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x29 + strh r1, [r0, #8] + b _080D98F0 +_080D9174: + mov r2, sb + ldr r0, [r2] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D9186 + b _080D98F0 +_080D9186: + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x13 + strh r1, [r0, #8] + b _080D98F0 +_080D9196: + bl sub_080DE454 + cmp r0, #0 + beq _080D91A0 + b _080D98F0 +_080D91A0: + ldr r5, _080D91DC + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r4, r6, #3 + subs r4, r4, r6 + lsls r4, r4, #2 + adds r1, r4, r1 + movs r2, #2 + ldrsh r0, [r1, r2] + ldrb r1, [r1, #0x18] + rsbs r1, r1, #0 + adds r2, r6, #0 + bl sub_080DB78C + ldr r0, [r5] + ldr r0, [r0, #4] + adds r4, r4, r0 + ldrb r1, [r4, #0x18] + ldrh r0, [r4, #2] + subs r0, r0, r1 + strh r0, [r4, #2] + ldr r1, _080D91E0 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x12 + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D91DC: .4byte gUnknown_2039BD4 +_080D91E0: .4byte gUnknown_3005B60 +_080D91E4: + bl sub_080DC4AC + ldr r0, _080D921C + ldr r0, [r0] + ldr r1, [r0, #0x14] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _080D9202 + b _080D98F0 +_080D9202: + ldr r0, _080D9220 + mov r5, r8 + lsls r4, r5, #2 + add r4, r8 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r3, [r4, #0x1c] + bl sub_080DB000 + movs r0, #0x29 + strh r0, [r4, #8] + b _080D98F0 + .align 2, 0 +_080D921C: .4byte gUnknown_2039BD4 +_080D9220: .4byte gUnknown_3005B60 +_080D9224: + mov r1, sb + ldr r0, [r1] + ldr r2, [r0, #0x10] + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D924E + ldr r0, [r2] + lsls r0, r0, #0x14 + lsrs r0, r0, #0x1d + cmp r6, r0 + beq _080D924E + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x39 + strh r1, [r0, #8] + b _080D98F0 +_080D924E: + mov r3, sb + ldr r1, [r3] + ldr r0, [r1, #0x10] + ldrb r0, [r0] + str r0, [sp] + ldr r1, [r1, #4] + lsls r2, r6, #3 + subs r0, r2, r6 + lsls r0, r0, #2 + adds r5, r0, r1 + ldrb r1, [r5, #0x11] + movs r0, #0x10 + ands r0, r1 + str r2, [sp, #4] + cmp r0, #0 + beq _080D928C + movs r4, #1 + str r4, [sp] + ldr r0, _080D9284 + ldrh r1, [r5, #6] + lsls r1, r1, #3 + ldr r2, _080D9288 + adds r1, r1, r2 + bl sub_080088B8 + b _080D92A6 + .align 2, 0 +_080D9284: .4byte gUnknown_2021C68 +_080D9288: .4byte gUnknown_82EACC4 +_080D928C: + ldr r0, _080D930C + ldr r3, _080D9310 + ldr r2, _080D9314 + ldrh r1, [r5, #6] + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r1, [r1, #1] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1b + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 +_080D92A6: + ldr r5, [sp] + lsls r0, r5, #0x18 + cmp r0, #0 + ble _080D92CA + ldr r0, _080D9318 + ldr r0, [r0] + ldr r1, [r0, #4] + ldr r2, [sp, #4] + subs r0, r2, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D92CA + movs r3, #0 + str r3, [sp] +_080D92CA: + bl sub_080DB000 + ldr r0, _080D931C + lsls r1, r6, #6 + ldr r2, _080D9320 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D9318 + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r1, #0x13] + ldr r5, [sp] + lsls r2, r5, #0x18 + asrs r3, r2, #0x18 + adds r0, r3, r0 + strb r0, [r1, #0x13] + ldr r0, [r4] + ldr r1, [r0] + movs r0, #0x13 + ldrsb r0, [r1, r0] + adds r5, r2, #0 + cmp r0, #0 + bge _080D92FE + movs r0, #0 + strb r0, [r1, #0x13] +_080D92FE: + cmp r3, #0 + bne _080D9328 + ldr r0, _080D9324 + mov r2, r8 + lsls r1, r2, #2 + b _080D9748 + .align 2, 0 +_080D930C: .4byte gUnknown_2021C68 +_080D9310: .4byte gUnknown_8560E6C +_080D9314: .4byte gUnknown_8565FCC +_080D9318: .4byte gUnknown_2039BD4 +_080D931C: .4byte gUnknown_2021C40 +_080D9320: .4byte gUnknown_2039AA2 +_080D9324: .4byte gUnknown_3005B60 +_080D9328: + cmp r3, #0 + bge _080D9340 + ldr r0, _080D9338 + ldr r1, _080D933C + bl sub_08008BCC + b _080D936C + .align 2, 0 +_080D9338: .4byte gUnknown_2021C7C +_080D933C: .4byte gUnknown_824C008 +_080D9340: + cmp r3, #0 + ble _080D9364 + ldr r0, [r4] + ldr r0, [r0] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + bgt _080D9364 + ldr r0, _080D935C + ldr r1, _080D9360 + bl sub_08008BCC + b _080D936C + .align 2, 0 +_080D935C: .4byte gUnknown_2021C7C +_080D9360: .4byte gUnknown_824BFE6 +_080D9364: + ldr r0, _080D9390 + ldr r1, _080D9394 + bl sub_08008BCC +_080D936C: + ldr r0, _080D9390 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D9398 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r0, #0 + strh r0, [r1, #0x1c] + strh r0, [r1, #0x1e] + cmp r5, #0 + bge _080D939C + movs r0, #0x35 + strh r0, [r1, #8] + b _080D98F0 + .align 2, 0 +_080D9390: .4byte gUnknown_2021C7C +_080D9394: .4byte gUnknown_824C029 +_080D9398: .4byte gUnknown_3005B60 +_080D939C: + movs r0, #0x36 + strh r0, [r1, #8] + b _080D98F0 +_080D93A2: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r4 + movs r0, #0x1c + ldrsh r3, [r4, r0] + cmp r3, #1 + beq _080D93E0 + cmp r3, #1 + bgt _080D93BE + cmp r3, #0 + beq _080D93C8 + b _080D98F0 +_080D93BE: + cmp r3, #2 + beq _080D9404 + cmp r3, #3 + beq _080D943E + b _080D98F0 +_080D93C8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #1 + bl sub_080DD634 + ldr r0, _080D93DC + bl sub_080A29AC + b _080D9436 + .align 2, 0 +_080D93DC: .4byte 0x00000187 +_080D93E0: + mov r1, sb + ldr r0, [r1] + ldr r0, [r0] + ldrb r0, [r0, #7] + ands r3, r0 + cmp r3, #0 + beq _080D93F0 + b _080D98F0 +_080D93F0: + bl sub_080DE454 + cmp r0, #0 + beq _080D93FA + b _080D98F0 +_080D93FA: + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080DD440 + b _080D9436 +_080D9404: + mov r2, sb + ldr r0, [r2] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _080D941A + b _080D98F0 +_080D941A: + ldrh r0, [r4, #0x1e] + adds r1, r0, #1 + strh r1, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + bgt _080D942A + b _080D98F0 +_080D942A: + strh r2, [r4, #0x1e] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 + bl sub_080DD634 +_080D9436: + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + b _080D98F0 +_080D943E: + ldr r0, _080D945C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080D9450 + b _080D98F0 +_080D9450: + strh r0, [r4, #0x1c] + strh r0, [r4, #0x1e] + movs r0, #0x2b + strh r0, [r4, #8] + b _080D98F0 + .align 2, 0 +_080D945C: .4byte gUnknown_2037C74 +_080D9460: + mov r3, r8 + lsls r1, r3, #2 + adds r0, r1, r3 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r5, #0x1c + ldrsh r0, [r0, r5] + mov sl, r1 + cmp r0, #4 + bls _080D9476 + b _080D98F0 +_080D9476: + lsls r0, r0, #2 + ldr r1, _080D9480 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080D9480: .4byte _080D9484 +_080D9484: @ jump table + .4byte _080D9498 @ case 0 + .4byte _080D94A8 @ case 1 + .4byte _080D94CC @ case 2 + .4byte _080D9536 @ case 3 + .4byte _080D957C @ case 4 +_080D9498: + bl sub_080DE454 + cmp r0, #0 + beq _080D94A2 + b _080D98F0 +_080D94A2: + movs r0, #1 + movs r1, #1 + b _080D9560 +_080D94A8: + mov r1, sb + ldr r0, [r1] + ldr r0, [r0] + ldrb r1, [r0, #7] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080D94BA + b _080D98F0 +_080D94BA: + bl sub_080DD570 + movs r0, #0xdf + bl sub_080A306C + movs r0, #1 + bl sub_080DD440 + b _080D9564 +_080D94CC: + mov r3, sb + ldr r2, [r3] + ldr r0, [r2] + ldrb r1, [r0, #6] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _080D94E2 + b _080D98F0 +_080D94E2: + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r4 + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + bgt _080D94FA + b _080D98F0 +_080D94FA: + strh r3, [r5, #0x1e] + ldr r0, [r2, #4] + lsls r4, r6, #3 + subs r4, r4, r6 + lsls r4, r4, #2 + adds r0, r4, r0 + movs r1, #2 + ldrsh r0, [r0, r1] + ldr r1, [r2, #0x10] + ldrb r1, [r1, #2] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r2, r6, #0 + bl sub_080DB78C + mov r2, sb + ldr r1, [r2] + ldr r0, [r1, #4] + adds r4, r4, r0 + ldr r0, [r1, #0x10] + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #2] + adds r0, r0, r3 + strh r0, [r4, #2] + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + b _080D98F0 +_080D9536: + mov r4, sb + ldr r2, [r4] + ldr r1, [r2, #0x14] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D954C + b _080D98F0 +_080D954C: + ldr r0, [r2] + ldrb r1, [r0, #6] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080D955A + b _080D98F0 +_080D955A: + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #1 +_080D9560: + bl sub_080DD634 +_080D9564: + ldr r0, _080D9578 + mov r1, sl + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] + b _080D98F0 + .align 2, 0 +_080D9578: .4byte gUnknown_3005B60 +_080D957C: + ldr r0, _080D95A0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _080D958E + b _080D98F0 +_080D958E: + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r3, [r0, #0x1c] + strh r3, [r0, #0x1e] + movs r1, #0x2b + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D95A0: .4byte gUnknown_2037C74 +_080D95A4: + mov r5, sb + ldr r0, [r5] + ldr r1, [r0, #0x14] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080D95BA + b _080D98F0 +_080D95BA: + bl sub_080DB000 + ldr r0, _080D95C8 + mov r2, r8 + lsls r1, r2, #2 + b _080D9748 + .align 2, 0 +_080D95C8: .4byte gUnknown_3005B60 +_080D95CC: + bl sub_080DB000 + ldr r0, _080D9630 + ldr r5, _080D9634 + ldr r1, [r5] + ldr r1, [r1, #0x10] + ldr r1, [r1] + lsls r1, r1, #0x14 + lsrs r1, r1, #0x1d + lsls r1, r1, #6 + ldr r4, _080D9638 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080D963C + lsls r1, r6, #6 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080D9640 + ldr r1, [r5] + ldr r2, [r1, #4] + lsls r1, r6, #3 + subs r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #6] + lsls r1, r1, #3 + ldr r2, _080D9644 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D9648 + ldr r1, _080D964C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D9650 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x3a + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D9630: .4byte gUnknown_2021C68 +_080D9634: .4byte gUnknown_2039BD4 +_080D9638: .4byte gUnknown_2039AA2 +_080D963C: .4byte gUnknown_2021C40 +_080D9640: .4byte gUnknown_2021C54 +_080D9644: .4byte gUnknown_82EACC4 +_080D9648: .4byte gUnknown_2021C7C +_080D964C: .4byte gUnknown_824C091 +_080D9650: .4byte gUnknown_3005B60 +_080D9654: + bl sub_080DE454 + cmp r0, #0 + beq _080D965E + b _080D98F0 +_080D965E: + bl sub_080DB000 + ldr r4, _080D9688 + ldr r1, _080D968C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D9690 + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x3b + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D9688: .4byte gUnknown_2021C7C +_080D968C: .4byte gUnknown_824C0B1 +_080D9690: .4byte gUnknown_3005B60 +_080D9694: + bl sub_080DE454 + cmp r0, #0 + beq _080D969E + b _080D98F0 +_080D969E: + bl sub_080DB000 + ldr r0, _080D96AC + mov r5, r8 + lsls r1, r5, #2 + b _080D9748 + .align 2, 0 +_080D96AC: .4byte gUnknown_3005B60 +_080D96B0: + mov r1, sb + ldr r0, [r1] + ldr r1, [r0, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r4, r0, #2 + adds r2, r4, r1 + ldrb r1, [r2, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080D96D0 + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] +_080D96D0: + adds r0, r6, #0 + bl sub_080DC118 + ldr r0, _080D971C + lsls r1, r6, #6 + ldr r2, _080D9720 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080D9724 + mov r2, sb + ldr r1, [r2] + ldr r1, [r1, #4] + adds r1, r4, r1 + ldrh r1, [r1, #6] + lsls r1, r1, #3 + ldr r2, _080D9728 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D972C + ldr r1, _080D9730 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D9734 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x22 + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D971C: .4byte gUnknown_2021C40 +_080D9720: .4byte gUnknown_2039AA2 +_080D9724: .4byte gUnknown_2021C54 +_080D9728: .4byte gUnknown_82EACC4 +_080D972C: .4byte gUnknown_2021C7C +_080D9730: .4byte gUnknown_824BEC1 +_080D9734: .4byte gUnknown_3005B60 +_080D9738: + bl sub_080DE454 + cmp r0, #0 + beq _080D9742 + b _080D98F0 +_080D9742: + ldr r0, _080D9754 + mov r4, r8 + lsls r1, r4, #2 +_080D9748: + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x37 + strh r0, [r1, #8] + b _080D98F0 + .align 2, 0 +_080D9754: .4byte gUnknown_3005B60 +_080D9758: + bl sub_080DD34C + ldr r0, _080D9770 + mov r5, r8 + lsls r1, r5, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x38 + strh r0, [r1, #8] + b _080D98F0 + .align 2, 0 +_080D9770: .4byte gUnknown_3005B60 +_080D9774: + mov r1, sb + ldr r0, [r1] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080D978A + b _080D98F0 +_080D978A: + movs r0, #0x13 + ldrsb r0, [r2, r0] + cmp r0, #4 + ble _080D9798 + strb r1, [r2, #0x13] + bl sub_080DD0A4 +_080D9798: + ldr r0, _080D97AC + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xa + strh r0, [r1, #8] + b _080D98F0 + .align 2, 0 +_080D97AC: .4byte gUnknown_3005B60 +_080D97B0: + mov r3, r8 + lsls r2, r3, #2 + add r2, r8 + lsls r2, r2, #3 + adds r2, r2, r4 + ldrb r5, [r2, #0xc] + ldr r1, _080D97D4 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080D97D8 + str r1, [r0] + movs r0, #0xb + strh r0, [r2, #8] + b _080D98F0 + .align 2, 0 +_080D97D4: .4byte gUnknown_20205AC +_080D97D8: .4byte sub_080D9954 +_080D97DC: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrb r5, [r4, #0xc] + ldr r1, _080D9810 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r6, r0, r1 + adds r0, r6, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _080D98F0 + adds r0, r6, #0 + bl sub_0800730C + adds r0, r6, #0 + bl sub_08006E00 + movs r0, #0x14 + strh r0, [r4, #8] + b _080D98F0 + .align 2, 0 +_080D9810: .4byte gUnknown_20205AC +_080D9814: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0 + strh r1, [r0, #0x1c] + movs r1, #0x15 + strh r1, [r0, #8] + b _080D98F0 +_080D9828: + bl sub_080DB000 + ldr r0, _080D985C + lsls r1, r6, #6 + ldr r2, _080D9860 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _080D9864 + ldr r1, _080D9868 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D986C + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x20 + strh r1, [r0, #8] + b _080D98F0 + .align 2, 0 +_080D985C: .4byte gUnknown_2021C40 +_080D9860: .4byte gUnknown_2039AA2 +_080D9864: .4byte gUnknown_2021C7C +_080D9868: .4byte gUnknown_824B354 +_080D986C: .4byte gUnknown_3005B60 +_080D9870: + bl sub_080DE454 + cmp r0, #0 + bne _080D98F0 + ldr r0, _080D988C + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x15 + strh r0, [r1, #8] + b _080D98F0 + .align 2, 0 +_080D988C: .4byte gUnknown_3005B60 +_080D9890: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r4 + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + ble _080D98F0 + movs r0, #0 + strh r0, [r1, #0x1c] + movs r0, #0x16 + strh r0, [r1, #8] + b _080D98F0 +_080D98B2: + mov r1, sb + ldr r0, [r1] + ldr r1, [r0] + ldrb r0, [r1, #0x10] + adds r0, #1 + movs r2, #0 + strb r0, [r1, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _080D98E4 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r2, [r0, #8] + strh r2, [r0, #0xa] + strh r2, [r0, #0xc] + ldr r1, _080D98E0 + str r1, [r0] + b _080D98F0 + .align 2, 0 +_080D98E0: .4byte sub_080D9988 +_080D98E4: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r2, [r0, #8] +_080D98F0: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080D8334 + + thumb_func_start sub_080D9900 +sub_080D9900: @ 0x080D9900 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080D9920 + ldr r1, [r1] + ldr r3, [r1] + ldrb r2, [r3, #7] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3, #7] + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 +_080D9920: .4byte gUnknown_2039BD4 + thumb_func_end sub_080D9900 + + thumb_func_start sub_080D9924 +sub_080D9924: @ 0x080D9924 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x24] + movs r3, #0x24 + ldrsh r2, [r1, r3] + cmp r2, #0 + beq _080D9938 + subs r0, #2 + strh r0, [r1, #0x24] + b _080D994C +_080D9938: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _080D994C + strh r2, [r1, #0x2e] + ldr r0, _080D9950 + str r0, [r1, #0x1c] +_080D994C: + pop {r0} + bx r0 + .align 2, 0 +_080D9950: .4byte sub_08007140 + thumb_func_end sub_080D9924 + + thumb_func_start sub_080D9954 +sub_080D9954: @ 0x080D9954 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x24] + subs r0, #6 + strh r0, [r2, #0x24] + movs r1, #0x20 + ldrsh r0, [r2, r1] + movs r3, #0x24 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080D997E + ldr r0, _080D9984 + str r0, [r2, #0x1c] + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_080D997E: + pop {r0} + bx r0 + .align 2, 0 +_080D9984: .4byte sub_08007140 + thumb_func_end sub_080D9954 + + thumb_func_start sub_080D9988 +sub_080D9988: @ 0x080D9988 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D99AC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080D9A1E + cmp r0, #1 + bgt _080D99B0 + cmp r0, #0 + beq _080D99B6 + b _080D9A40 + .align 2, 0 +_080D99AC: .4byte gUnknown_3005B60 +_080D99B0: + cmp r0, #2 + beq _080D9A38 + b _080D9A40 +_080D99B6: + ldr r0, _080D9A04 + ldrb r1, [r0] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _080D9A14 + ldr r0, _080D9A08 + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #7] + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #7] + bl sub_080DA094 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D99E4 + bl sub_080DB0A8 + bl sub_080DB17C +_080D99E4: + ldr r4, _080D9A0C + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9A10 + adds r1, r4, #0 + bl sub_080A8A44 + bl sub_080DB6CC + strh r6, [r5, #8] + b _080D9A40 + .align 2, 0 +_080D9A04: .4byte gUnknown_2039BCA +_080D9A08: .4byte gUnknown_2039BD4 +_080D9A0C: .4byte sub_080FD4DC +_080D9A10: .4byte sub_080D9900 +_080D9A14: + bl sub_080DB0A8 + bl sub_080DB17C + b _080D9A2E +_080D9A1E: + ldr r0, _080D9A34 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #7] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080D9A40 +_080D9A2E: + movs r0, #2 + strh r0, [r5, #8] + b _080D9A40 + .align 2, 0 +_080D9A34: .4byte gUnknown_2039BD4 +_080D9A38: + movs r0, #0 + strh r0, [r5, #8] + ldr r0, _080D9A48 + str r0, [r5] +_080D9A40: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9A48: .4byte sub_080D9A4C + thumb_func_end sub_080D9988 + + thumb_func_start sub_080D9A4C +sub_080D9A4C: @ 0x080D9A4C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_080DD76C + ldr r1, _080D9A74 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + strh r1, [r0, #0xa] + ldr r1, _080D9A78 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9A74: .4byte gUnknown_3005B60 +_080D9A78: .4byte sub_080D9A7C + thumb_func_end sub_080D9A4C + + thumb_func_start sub_080D9A7C +sub_080D9A7C: @ 0x080D9A7C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9AA0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _080D9AC2 + cmp r5, #1 + bgt _080D9AA4 + cmp r5, #0 + beq _080D9AAA + b _080D9B02 + .align 2, 0 +_080D9AA0: .4byte gUnknown_3005B60 +_080D9AA4: + cmp r5, #2 + beq _080D9AF4 + b _080D9B02 +_080D9AAA: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080D9B02 + movs r0, #2 + bl sub_080DDE00 + strh r5, [r4, #0xa] + b _080D9AE6 +_080D9AC2: + ldr r0, _080D9AF0 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #7] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080D9B02 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080D9B02 + strh r1, [r4, #0xa] +_080D9AE6: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080D9B02 + .align 2, 0 +_080D9AF0: .4byte gUnknown_2039BD4 +_080D9AF4: + bl sub_080DBB10 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] + ldr r0, _080D9B08 + str r0, [r4] +_080D9B02: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9B08: .4byte sub_080D9B0C + thumb_func_end sub_080D9A7C + + thumb_func_start sub_080D9B0C +sub_080D9B0C: @ 0x080D9B0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080DBB28 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D9B2A + ldr r0, _080D9B30 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D9B34 + str r0, [r1] +_080D9B2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9B30: .4byte gUnknown_3005B60 +_080D9B34: .4byte sub_080D9B38 + thumb_func_end sub_080D9B0C + + thumb_func_start sub_080D9B38 +sub_080D9B38: @ 0x080D9B38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9B64 + ldr r3, _080D9B68 + ldr r1, _080D9B6C + str r2, [r1] + str r3, [r1, #4] + ldr r2, _080D9B70 + str r2, [r1, #8] + ldr r1, [r1, #8] + ldr r2, _080D9B74 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + movs r0, #2 + strh r0, [r1, #0xa] + ldr r0, _080D9B78 + str r0, [r1] + bx lr + .align 2, 0 +_080D9B64: .4byte gUnknown_201A204 +_080D9B68: .4byte gUnknown_20373B4 +_080D9B6C: .4byte 0x040000D4 +_080D9B70: .4byte 0x84000100 +_080D9B74: .4byte gUnknown_3005B60 +_080D9B78: .4byte sub_080D9B7C + thumb_func_end sub_080D9B38 + + thumb_func_start sub_080D9B7C +sub_080D9B7C: @ 0x080D9B7C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9BB4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080D9BAE + movs r0, #0 + strh r0, [r1, #8] + ldrh r0, [r1, #0xa] + subs r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080D9BAE + ldr r0, _080D9BB8 + str r0, [r1] +_080D9BAE: + pop {r0} + bx r0 + .align 2, 0 +_080D9BB4: .4byte gUnknown_3005B60 +_080D9BB8: .4byte sub_080D9BBC + thumb_func_end sub_080D9B7C + + thumb_func_start sub_080D9BBC +sub_080D9BBC: @ 0x080D9BBC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9C1C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r6, r1, r2 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080D9C38 + ldr r0, _080D9C20 + ldr r0, [r0] + ldr r5, _080D9C24 + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r4, [r0, #0x1a] + bl sub_080DB000 + ldr r0, _080D9C28 + ldrb r1, [r5] + lsls r1, r1, #6 + ldr r2, _080D9C2C + adds r1, r1, r2 + bl sub_080088B8 + ldr r5, _080D9C30 + ldr r0, _080D9C34 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_08008BCC + adds r0, r5, #0 + movs r1, #1 + bl sub_080DE338 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _080D9C4A + .align 2, 0 +_080D9C1C: .4byte gUnknown_3005B60 +_080D9C20: .4byte gUnknown_2039BD4 +_080D9C24: .4byte gUnknown_2039BC5 +_080D9C28: .4byte gUnknown_2021C40 +_080D9C2C: .4byte gUnknown_2039AA2 +_080D9C30: .4byte gUnknown_2021C7C +_080D9C34: .4byte gUnknown_8560CF4 +_080D9C38: + bl sub_080DE454 + cmp r0, #0 + bne _080D9C4A + strh r0, [r6, #8] + ldr r0, _080D9C50 + str r0, [r6] + bl sub_080DC4AC +_080D9C4A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080D9C50: .4byte sub_080D9C54 + thumb_func_end sub_080D9BBC + + thumb_func_start sub_080D9C54 +sub_080D9C54: @ 0x080D9C54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9C84 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r1, r0, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + ble _080D9C7E + movs r0, #0 + strh r0, [r4, #8] + bl sub_080DBB10 + ldr r0, _080D9C88 + str r0, [r4] +_080D9C7E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9C84: .4byte gUnknown_3005B60 +_080D9C88: .4byte sub_080D9C8C + thumb_func_end sub_080D9C54 + + thumb_func_start sub_080D9C8C +sub_080D9C8C: @ 0x080D9C8C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080DBB28 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080D9CAE + ldr r1, _080D9CB4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + ldr r1, _080D9CB8 + str r1, [r0] +_080D9CAE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9CB4: .4byte gUnknown_3005B60 +_080D9CB8: .4byte sub_080D9CBC + thumb_func_end sub_080D9C8C + + thumb_func_start sub_080D9CBC +sub_080D9CBC: @ 0x080D9CBC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080DD988 + ldr r1, _080D9CDC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D9CE0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9CDC: .4byte gUnknown_3005B60 +_080D9CE0: .4byte sub_080DDB88 + thumb_func_end sub_080D9CBC + + thumb_func_start sub_080D9CE4 +sub_080D9CE4: @ 0x080D9CE4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080DDAB4 + ldr r1, _080D9D04 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D9D08 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9D04: .4byte gUnknown_3005B60 +_080D9D08: .4byte sub_080D9D0C + thumb_func_end sub_080D9CE4 + + thumb_func_start sub_080D9D0C +sub_080D9D0C: @ 0x080D9D0C + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #8 + bl sub_080011D0 + mov r1, sp + strh r0, [r1] + movs r0, #0xc + bl sub_080011D0 + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r3, sp + ldrb r2, [r3] + movs r1, #4 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + ldrb r0, [r4] + ands r1, r0 + strb r1, [r4] + mov r0, sp + ldrh r1, [r0] + movs r0, #8 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0xc + bl sub_08001144 + ldr r2, _080D9D74 + ldr r0, [r2] + ldr r1, [r0] + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + ldr r0, [r2] + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #5 + bne _080D9D80 + ldr r0, _080D9D78 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D9D7C + b _080D9D90 + .align 2, 0 +_080D9D74: .4byte gUnknown_2039BD4 +_080D9D78: .4byte gUnknown_3005B60 +_080D9D7C: .4byte sub_080D9DD8 +_080D9D80: + bl sub_080DD270 + ldr r0, _080D9D9C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D9DA0 +_080D9D90: + str r0, [r1] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9D9C: .4byte gUnknown_3005B60 +_080D9DA0: .4byte sub_080D9DA4 + thumb_func_end sub_080D9D0C + + thumb_func_start sub_080D9DA4 +sub_080D9DA4: @ 0x080D9DA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080D9DCC + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080D9DC8 + ldr r0, _080D9DD0 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D9DD4 + str r0, [r1] +_080D9DC8: + pop {r0} + bx r0 + .align 2, 0 +_080D9DCC: .4byte gUnknown_2039BD4 +_080D9DD0: .4byte gUnknown_3005B60 +_080D9DD4: .4byte sub_080D7B68 + thumb_func_end sub_080D9DA4 + + thumb_func_start sub_080D9DD8 +sub_080D9DD8: @ 0x080D9DD8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080D9E34 + movs r1, #0 + strh r1, [r0] + ldr r0, _080D9E38 + strh r1, [r0] + ldr r4, _080D9E3C + movs r3, #0 + ldr r2, _080D9E40 + movs r1, #3 +_080D9DF0: + ldr r0, [r4] + ldr r0, [r0, #4] + adds r0, r3, r0 + ldrh r0, [r0, #4] + strh r0, [r2] + adds r3, #0x1c + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _080D9DF0 + bl sub_080DB47C + bl sub_080DB000 + ldr r0, _080D9E44 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080D9E4C + ldr r0, _080D9E3C + ldr r2, [r0] + ldr r0, _080D9E48 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #8] + bl sub_080EDB90 + b _080D9E58 + .align 2, 0 +_080D9E34: .4byte gUnknown_2022ACA +_080D9E38: .4byte gUnknown_2022AD2 +_080D9E3C: .4byte gUnknown_2039BD4 +_080D9E40: .4byte gUnknown_2039BB0 +_080D9E44: .4byte gUnknown_2039BCA +_080D9E48: .4byte gUnknown_2039BC5 +_080D9E4C: + bl sub_080DE958 + bl sub_080DEC00 + bl sub_080DEE2C +_080D9E58: + ldr r1, _080D9E8C + ldr r0, _080D9E90 + ldr r0, [r0] + str r0, [r1] + ldr r4, _080D9E94 + ldr r1, _080D9E98 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + ldr r1, _080D9E9C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _080D9EA0 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9E8C: .4byte gUnknown_3005E18 +_080D9E90: .4byte gUnknown_3005AE0 +_080D9E94: .4byte gUnknown_2021C7C +_080D9E98: .4byte gUnknown_824B36F +_080D9E9C: .4byte gUnknown_3005B60 +_080D9EA0: .4byte sub_080D9EA4 + thumb_func_end sub_080D9DD8 + + thumb_func_start sub_080D9EA4 +sub_080D9EA4: @ 0x080D9EA4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080DE454 + adds r4, r0, #0 + cmp r4, #0 + bne _080D9EDA + bl sub_080DD988 + ldr r0, _080D9EE0 + strh r4, [r0] + ldr r1, _080D9EE4 + movs r0, #0xa0 + strh r0, [r1] + movs r0, #0x62 + movs r1, #0 + bl sub_080A307C + ldr r1, _080D9EE8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + ldr r1, _080D9EEC + str r1, [r0] +_080D9EDA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9EE0: .4byte gUnknown_2022ACC +_080D9EE4: .4byte gUnknown_2022ACE +_080D9EE8: .4byte gUnknown_3005B60 +_080D9EEC: .4byte sub_080D9EF0 + thumb_func_end sub_080D9EA4 + + thumb_func_start sub_080D9EF0 +sub_080D9EF0: @ 0x080D9EF0 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _080D9F24 + ldrh r0, [r1] + subs r0, #7 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080D9F08 + movs r0, #0 + strh r0, [r1] +_080D9F08: + ldrh r2, [r1] + cmp r2, #0 + bne _080D9F1E + ldr r0, _080D9F28 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080D9F2C + str r0, [r1] + strh r2, [r1, #8] +_080D9F1E: + pop {r0} + bx r0 + .align 2, 0 +_080D9F24: .4byte gUnknown_2022ACE +_080D9F28: .4byte gUnknown_3005B60 +_080D9F2C: .4byte sub_080D9F30 + thumb_func_end sub_080D9EF0 + + thumb_func_start sub_080D9F30 +sub_080D9F30: @ 0x080D9F30 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9F64 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r1, r0, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x31 + ble _080D9F84 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _080D9F68 + ldrb r0, [r0] + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080D9F70 + ldr r0, _080D9F6C + b _080D9F82 + .align 2, 0 +_080D9F64: .4byte gUnknown_3005B60 +_080D9F68: .4byte gUnknown_2039BCA +_080D9F6C: .4byte sub_080D9F90 +_080D9F70: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080D9F8C +_080D9F82: + str r0, [r4] +_080D9F84: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080D9F8C: .4byte sub_080DA020 + thumb_func_end sub_080D9F30 + + thumb_func_start sub_080D9F90 +sub_080D9F90: @ 0x080D9F90 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080D9FCC + adds r0, r5, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080D9FD0 + adds r1, r5, #0 + bl sub_080A8A44 + ldr r1, _080D9FD4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080D9FD8 + str r1, [r0] + bl sub_080DB6CC + movs r0, #0 + bl sub_080DBBF4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080D9FCC: .4byte sub_080FD320 +_080D9FD0: .4byte sub_080D9FDC +_080D9FD4: .4byte gUnknown_3005B60 +_080D9FD8: .4byte sub_080D6E94 + thumb_func_end sub_080D9F90 + + thumb_func_start sub_080D9FDC +sub_080D9FDC: @ 0x080D9FDC + push {lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r2, _080DA014 + ldr r0, _080DA018 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080DA01C + str r1, [r0] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080DA014: .4byte gUnknown_3005B60 +_080DA018: .4byte gUnknown_2039BD4 +_080DA01C: .4byte sub_080DA020 + thumb_func_end sub_080D9FDC + + thumb_func_start sub_080DA020 +sub_080DA020: @ 0x080DA020 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080DA054 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080DA050 + adds r0, r2, #0 + bl sub_080A8964 + ldr r0, _080DA058 + ldr r1, _080DA05C + str r1, [r0] + bl sub_080034D4 + bl sub_080D7288 + bl sub_0805ECB0 + ldr r0, _080DA060 + bl sub_08000540 +_080DA050: + pop {r0} + bx r0 + .align 2, 0 +_080DA054: .4byte gUnknown_2037C74 +_080DA058: .4byte gUnknown_3005B0C +_080DA05C: .4byte sub_080DA064 +_080DA060: .4byte sub_08085A30 + thumb_func_end sub_080DA020 + + thumb_func_start sub_080DA064 +sub_080DA064: @ 0x080DA064 + push {lr} + bl sub_080987E8 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DA064 + + thumb_func_start sub_080DA074 +sub_080DA074: @ 0x080DA074 + push {lr} + ldr r0, _080DA08C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080DA088 + ldr r1, _080DA090 + movs r0, #3 + strb r0, [r1] +_080DA088: + pop {r0} + bx r0 + .align 2, 0 +_080DA08C: .4byte gUnknown_2039BCA +_080DA090: .4byte gUnknown_2039BC5 + thumb_func_end sub_080DA074 + + thumb_func_start sub_080DA094 +sub_080DA094: @ 0x080DA094 + push {lr} + ldr r0, _080DA0A8 + ldr r1, _080DA0AC + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080DA0B0 + movs r0, #0 + b _080DA0B2 + .align 2, 0 +_080DA0A8: .4byte gUnknown_2039BC5 +_080DA0AC: .4byte gUnknown_2039BCB +_080DA0B0: + movs r0, #1 +_080DA0B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DA094 + + thumb_func_start sub_080DA0B8 +sub_080DA0B8: @ 0x080DA0B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _080DA0F0 + ldr r1, [r4] + mov r0, sp + bl sub_080088B8 + mov r1, sp + movs r0, #0xff + strb r0, [r1, #5] + ldr r6, _080DA0F4 + ldrb r0, [r6] + lsls r0, r0, #6 + ldr r5, _080DA0F8 + adds r0, r0, r5 + bl sub_080088B8 + ldr r0, [r4] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _080DA0FC + ldrb r0, [r6] + lsls r0, r0, #6 + adds r0, r5, r0 + movs r1, #0xd8 + b _080DA104 + .align 2, 0 +_080DA0F0: .4byte gUnknown_3005AF0 +_080DA0F4: .4byte gUnknown_2039BC5 +_080DA0F8: .4byte gUnknown_2039AAD +_080DA0FC: + ldrb r0, [r6] + lsls r0, r0, #6 + adds r0, r5, r0 + movs r1, #0xd9 +_080DA104: + strb r1, [r0, #8] + ldr r6, _080DA260 + ldr r5, _080DA264 + ldrb r0, [r5] + lsls r0, r0, #6 + adds r1, r6, #0 + adds r1, #0x18 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + ldrb r0, [r5] + lsls r0, r0, #6 + adds r0, r0, r6 + adds r0, #0x2c + strb r1, [r0] + movs r0, #0x64 + adds r4, r7, #0 + muls r4, r0, r4 + ldr r0, _080DA268 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + ldrb r0, [r5] + lsls r0, r0, #6 + adds r1, r6, #2 + adds r0, r0, r1 + mov r1, sp + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #0x16 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x26 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x17 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x27 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x18 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x28 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x21 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x29 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2f + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x2a + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x30 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + adds r1, #0x2b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0xd + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + strh r0, [r1, #0x1e] + adds r0, r4, #0 + movs r1, #0xe + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + strh r0, [r1, #0x20] + adds r0, r4, #0 + movs r1, #0xf + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + strh r0, [r1, #0x22] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r1, r1, r6 + strh r0, [r1, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r2, r6, #0 + adds r2, #0x38 + adds r1, r1, r2 + str r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + ldrb r1, [r5] + lsls r1, r1, #6 + adds r2, r6, #0 + adds r2, #0x3c + adds r1, r1, r2 + str r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + mov ip, r2 + ldrb r0, [r5] + lsls r0, r0, #6 + adds r1, r0, r6 + adds r0, r1, #0 + adds r0, #0x26 + ldrb r3, [r0] + adds r0, #1 + ldrb r4, [r0] + adds r0, #1 + ldrb r5, [r0] + adds r0, #1 + ldrb r6, [r0] + adds r0, #1 + ldrb r7, [r0] + cmp r2, #0xfe + bne _080DA26C + adds r3, #0x14 + b _080DA2BA + .align 2, 0 +_080DA260: .4byte gUnknown_2039AA0 +_080DA264: .4byte gUnknown_2039BC5 +_080DA268: .4byte gUnknown_2024190 +_080DA26C: + cmp r2, #0xff + bne _080DA27C + lsls r0, r4, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r4, r0, #0x10 + b _080DA2BA +_080DA27C: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + bne _080DA290 + lsls r0, r5, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r5, r0, #0x10 + b _080DA2BA +_080DA290: + ldr r0, _080DA2A4 + cmp r2, r0 + bne _080DA2A8 + lsls r0, r6, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r6, r0, #0x10 + b _080DA2BA + .align 2, 0 +_080DA2A4: .4byte 0x00000101 +_080DA2A8: + movs r0, #0x81 + lsls r0, r0, #1 + cmp ip, r0 + bne _080DA2BA + lsls r0, r7, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r7, r0, #0x10 +_080DA2BA: + cmp r3, #0xff + ble _080DA2C0 + movs r3, #0xff +_080DA2C0: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080DA2CA + movs r4, #0xff +_080DA2CA: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080DA2D4 + movs r5, #0xff +_080DA2D4: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080DA2DE + movs r6, #0xff +_080DA2DE: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _080DA2E8 + movs r7, #0xff +_080DA2E8: + ldr r2, _080DA328 + ldr r1, _080DA32C + ldrb r0, [r1] + lsls r0, r0, #6 + adds r0, r0, r2 + adds r0, #0x26 + strb r3, [r0] + ldrb r0, [r1] + lsls r0, r0, #6 + adds r0, r0, r2 + adds r0, #0x27 + strb r4, [r0] + ldrb r0, [r1] + lsls r0, r0, #6 + adds r0, r0, r2 + adds r0, #0x28 + strb r5, [r0] + ldrb r0, [r1] + lsls r0, r0, #6 + adds r0, r0, r2 + adds r0, #0x29 + strb r6, [r0] + ldrb r0, [r1] + lsls r0, r0, #6 + adds r0, r0, r2 + adds r0, #0x2a + strb r7, [r0] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA328: .4byte gUnknown_2039AA0 +_080DA32C: .4byte gUnknown_2039BC5 + thumb_func_end sub_080DA0B8 + + thumb_func_start sub_080DA330 +sub_080DA330: @ 0x080DA330 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x64 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r6, #0 + movs r7, #0 + bl sub_080DA074 + ldr r0, _080DA380 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DA364 + ldr r0, _080DA384 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080DA364 + movs r7, #1 +_080DA364: + movs r5, #0 + ldr r2, _080DA388 + ldr r3, _080DA38C +_080DA36A: + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r8, r0 + bne _080DA3DE + cmp r7, #1 + bne _080DA390 + ldrb r0, [r3] + cmp r0, #1 + beq _080DA3DE + b _080DA396 + .align 2, 0 +_080DA380: .4byte 0x00000864 +_080DA384: .4byte gUnknown_2039BCA +_080DA388: .4byte gUnknown_8561028 +_080DA38C: .4byte gUnknown_8562828 +_080DA390: + ldrb r0, [r3] + cmp r0, #2 + beq _080DA3DE +_080DA396: + cmp r4, #0 + bne _080DA3A2 + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _080DA3D2 +_080DA3A2: + cmp r4, #1 + bne _080DA3AE + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x1c + cmp r0, #0 + blt _080DA3D2 +_080DA3AE: + cmp r4, #2 + bne _080DA3BA + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _080DA3D2 +_080DA3BA: + cmp r4, #3 + bne _080DA3C6 + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x1a + cmp r0, #0 + blt _080DA3D2 +_080DA3C6: + cmp r4, #4 + bne _080DA3DE + ldrb r0, [r2, #0x1c] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080DA3DE +_080DA3D2: + adds r0, r6, #0 + adds r1, r0, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + add r0, sp + strb r5, [r0] +_080DA3DE: + adds r2, #0x40 + adds r3, #1 + adds r5, #1 + cmp r5, #0x5f + bls _080DA36A + mov r0, sp + adds r1, r0, r6 + movs r0, #0xff + strb r0, [r1] + movs r5, #0 + ldr r7, _080DA454 +_080DA3F4: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080DA458 + lsls r2, r5, #6 + adds r2, r2, r1 + mov r1, sp + adds r4, r1, r0 + ldrb r1, [r4] + lsls r1, r1, #6 + adds r1, r1, r7 + adds r0, r2, #0 + movs r2, #0x40 + bl memcpy + ldrb r0, [r4] + adds r2, r5, #1 + subs r1, r6, #1 + cmp r0, #0xff + beq _080DA436 + adds r3, r4, #0 +_080DA42A: + ldrb r0, [r3, #1] + strb r0, [r3] + adds r3, #1 + ldrb r0, [r3] + cmp r0, #0xff + bne _080DA42A +_080DA436: + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + adds r5, r2, #0 + cmp r5, #2 + ble _080DA3F4 + ldr r0, _080DA45C + ldrb r0, [r0] + bl sub_080DA0B8 + add sp, #0x64 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA454: .4byte gUnknown_8561028 +_080DA458: .4byte gUnknown_2039AA0 +_080DA45C: .4byte gUnknown_2039BC4 + thumb_func_end sub_080DA330 + + thumb_func_start sub_080DA460 +sub_080DA460: @ 0x080DA460 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x64 + mov ip, r2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r6, #0 + ldr r0, _080DA49C + ldrb r1, [r0] + mov r8, r0 + cmp r1, #4 + beq _080DA572 + movs r5, #0 + ldr r3, _080DA4A0 + ldr r2, _080DA4A4 +_080DA484: + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r7, r0 + bne _080DA4F6 + mov r0, ip + cmp r0, #1 + bne _080DA4A8 + ldrb r0, [r2] + cmp r0, #1 + beq _080DA4F6 + b _080DA4AE + .align 2, 0 +_080DA49C: .4byte gUnknown_2039BD0 +_080DA4A0: .4byte gUnknown_8561028 +_080DA4A4: .4byte gUnknown_8562828 +_080DA4A8: + ldrb r0, [r2] + cmp r0, #2 + beq _080DA4F6 +_080DA4AE: + cmp r4, #0 + bne _080DA4BA + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _080DA4EA +_080DA4BA: + cmp r4, #1 + bne _080DA4C6 + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x1c + cmp r0, #0 + blt _080DA4EA +_080DA4C6: + cmp r4, #2 + bne _080DA4D2 + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _080DA4EA +_080DA4D2: + cmp r4, #3 + bne _080DA4DE + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x1a + cmp r0, #0 + blt _080DA4EA +_080DA4DE: + cmp r4, #4 + bne _080DA4F6 + ldrb r0, [r3, #0x1c] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080DA4F6 +_080DA4EA: + adds r0, r6, #0 + adds r1, r0, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + add r0, sp + strb r5, [r0] +_080DA4F6: + adds r3, #0x40 + adds r2, #1 + adds r5, #1 + cmp r5, #0x5f + bls _080DA484 + mov r3, sp + adds r1, r3, r6 + movs r0, #0xff + strb r0, [r1] + movs r5, #0 + mov r0, r8 + ldrb r1, [r0] + movs r0, #4 + subs r0, r0, r1 + cmp r5, r0 + bge _080DA572 + ldr r7, _080DA580 +_080DA518: + bl sub_080F98CC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _080DA584 + ldrb r0, [r0] + adds r0, r0, r5 + lsls r0, r0, #6 + adds r0, r0, r7 + ldr r2, _080DA588 + mov r3, sp + adds r4, r3, r1 + ldrb r1, [r4] + lsls r1, r1, #6 + adds r1, r1, r2 + movs r2, #0x40 + bl memcpy + ldrb r0, [r4] + adds r3, r5, #1 + subs r1, r6, #1 + cmp r0, #0xff + beq _080DA560 + adds r2, r4, #0 +_080DA554: + ldrb r0, [r2, #1] + strb r0, [r2] + adds r2, #1 + ldrb r0, [r2] + cmp r0, #0xff + bne _080DA554 +_080DA560: + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + adds r5, r3, #0 + ldr r0, _080DA584 + ldrb r1, [r0] + movs r0, #4 + subs r0, r0, r1 + cmp r5, r0 + blt _080DA518 +_080DA572: + add sp, #0x64 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DA580: .4byte gUnknown_2039AA0 +_080DA584: .4byte gUnknown_2039BD0 +_080DA588: .4byte gUnknown_8561028 + thumb_func_end sub_080DA460 + + thumb_func_start sub_080DA58C +sub_080DA58C: @ 0x080DA58C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _080DA59E + movs r0, #3 + b _080DA61A +_080DA59E: + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080DA5AE + movs r0, #4 + b _080DA61A +_080DA5AE: + ldr r0, _080DA5C0 + ldrh r0, [r0] + cmp r0, #4 + bhi _080DA602 + lsls r0, r0, #2 + ldr r1, _080DA5C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DA5C0: .4byte gUnknown_2039BCC +_080DA5C4: .4byte _080DA5C8 +_080DA5C8: @ jump table + .4byte _080DA5DC @ case 0 + .4byte _080DA5E2 @ case 1 + .4byte _080DA5E8 @ case 2 + .4byte _080DA5EE @ case 3 + .4byte _080DA5F4 @ case 4 +_080DA5DC: + adds r0, r4, #0 + movs r1, #0x32 + b _080DA5F8 +_080DA5E2: + adds r0, r4, #0 + movs r1, #0x33 + b _080DA5F8 +_080DA5E8: + adds r0, r4, #0 + movs r1, #0x34 + b _080DA5F8 +_080DA5EE: + adds r0, r4, #0 + movs r1, #0x35 + b _080DA5F8 +_080DA5F4: + adds r0, r4, #0 + movs r1, #0x36 +_080DA5F8: + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + b _080DA606 +_080DA602: + movs r0, #0 + b _080DA61A +_080DA606: + ldr r0, _080DA620 + adds r2, r1, #0 + ldrh r1, [r0] + movs r0, #2 + cmp r2, r1 + bhi _080DA61A + movs r0, #0 + cmp r2, r1 + blo _080DA61A + movs r0, #1 +_080DA61A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080DA620: .4byte gUnknown_2039BCE + thumb_func_end sub_080DA58C + + thumb_func_start sub_080DA624 +sub_080DA624: @ 0x080DA624 + push {r4, r5, lr} + movs r5, #0 +_080DA628: + ldr r4, _080DA660 + adds r4, r5, r4 + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + adds r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + lsls r4, r5, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080DA68C + adds r0, r4, #0 + bl sub_080DA6F8 + adds r5, #1 + cmp r5, #3 + ble _080DA628 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA660: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DA624 + + thumb_func_start sub_080DA664 +sub_080DA664: @ 0x080DA664 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080DA684 + ldr r1, _080DA688 + bl sub_080088B8 + strb r4, [r0] + adds r0, #1 + adds r1, r5, #0 + bl sub_080088B8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA684: .4byte gUnknown_2022AE0 +_080DA688: .4byte gUnknown_85CC497 + thumb_func_end sub_080DA664 + + thumb_func_start sub_080DA68C +sub_080DA68C: @ 0x080DA68C + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + movs r2, #0xa0 + lsls r2, r2, #0x14 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + bl sub_080DA6A4 + pop {r0} + bx r0 + thumb_func_end sub_080DA68C + + thumb_func_start sub_080DA6A4 +sub_080DA6A4: @ 0x080DA6A4 + push {r4, r5, lr} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _080DA6E8 + mov r0, sp + bl sub_080088B8 + lsls r1, r4, #6 + ldr r0, _080DA6EC + adds r1, r1, r0 + mov r0, sp + bl sub_080088D8 + mov r0, sp + adds r1, r5, #0 + bl sub_080DA664 + ldr r0, _080DA6F0 + adds r4, r4, r0 + ldrb r0, [r4] + adds r0, #4 + ldr r1, _080DA6F4 + bl sub_080DE2D4 + add sp, #0x20 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DA6E8: .4byte gUnknown_85C93FF +_080DA6EC: .4byte gUnknown_2039AAD +_080DA6F0: .4byte gUnknown_2039BC6 +_080DA6F4: .4byte gUnknown_2022AE0 + thumb_func_end sub_080DA6A4 + + thumb_func_start sub_080DA6F8 +sub_080DA6F8: @ 0x080DA6F8 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + movs r2, #0xa0 + lsls r2, r2, #0x14 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + bl sub_080DA710 + pop {r0} + bx r0 + thumb_func_end sub_080DA6F8 + + thumb_func_start sub_080DA710 +sub_080DA710: @ 0x080DA710 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r4, #6 + ldr r2, _080DA738 + adds r0, r0, r2 + bl sub_080DA664 + ldr r0, _080DA73C + adds r4, r4, r0 + ldrb r0, [r4] + ldr r1, _080DA740 + bl sub_080DE2D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DA738: .4byte gUnknown_2039AA2 +_080DA73C: .4byte gUnknown_2039BC6 +_080DA740: .4byte gUnknown_2022AE0 + thumb_func_end sub_080DA710 + + thumb_func_start sub_080DA744 +sub_080DA744: @ 0x080DA744 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #4 + bhi _080DA7D0 + lsls r0, r0, #2 + ldr r1, _080DA75C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DA75C: .4byte _080DA760 +_080DA760: @ jump table + .4byte _080DA774 @ case 0 + .4byte _080DA78C @ case 1 + .4byte _080DA7A4 @ case 2 + .4byte _080DA7B4 @ case 3 + .4byte _080DA7D0 @ case 4 +_080DA774: + ldr r0, _080DA788 + lsls r2, r2, #6 + adds r1, r2, r0 + adds r3, r1, #0 + adds r3, #0x26 + ldrb r5, [r3] + adds r3, #4 + ldrb r4, [r3] + adds r1, #0x27 + b _080DA7E2 + .align 2, 0 +_080DA788: .4byte gUnknown_2039AA0 +_080DA78C: + ldr r0, _080DA7A0 + lsls r2, r2, #6 + adds r1, r2, r0 + adds r3, r1, #0 + adds r3, #0x27 + ldrb r5, [r3] + subs r3, #1 + ldrb r4, [r3] + adds r1, #0x28 + b _080DA7E2 + .align 2, 0 +_080DA7A0: .4byte gUnknown_2039AA0 +_080DA7A4: + ldr r1, _080DA7B0 + lsls r2, r2, #6 + adds r3, r2, r1 + adds r0, r3, #0 + adds r0, #0x28 + b _080DA7BE + .align 2, 0 +_080DA7B0: .4byte gUnknown_2039AA0 +_080DA7B4: + ldr r1, _080DA7CC + lsls r2, r2, #6 + adds r3, r2, r1 + adds r0, r3, #0 + adds r0, #0x29 +_080DA7BE: + ldrb r5, [r0] + subs r0, #1 + ldrb r4, [r0] + adds r0, #2 + ldrb r3, [r0] + adds r0, r1, #0 + b _080DA7E4 + .align 2, 0 +_080DA7CC: .4byte gUnknown_2039AA0 +_080DA7D0: + ldr r0, _080DA7FC + lsls r2, r2, #6 + adds r1, r2, r0 + adds r3, r1, #0 + adds r3, #0x2a + ldrb r5, [r3] + subs r3, #1 + ldrb r4, [r3] + adds r1, #0x26 +_080DA7E2: + ldrb r3, [r1] +_080DA7E4: + adds r1, r2, r0 + adds r1, #0x2b + adds r0, r4, r3 + ldrb r1, [r1] + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA7FC: .4byte gUnknown_2039AA0 + thumb_func_end sub_080DA744 + + thumb_func_start sub_080DA800 +sub_080DA800: @ 0x080DA800 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + ldr r5, _080DA824 +_080DA80A: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + adds r1, r6, #0 + bl sub_080DA744 + strh r0, [r5] + adds r5, #2 + adds r4, #1 + cmp r4, #3 + ble _080DA80A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DA824: .4byte gUnknown_2039BA0 + thumb_func_end sub_080DA800 + + thumb_func_start sub_080DA828 +sub_080DA828: @ 0x080DA828 + push {r4, r5, lr} + ldr r0, _080DA870 + bl sub_08034388 + ldr r0, _080DA874 + movs r1, #0x88 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _080DA878 + movs r1, #0x70 + movs r2, #0x24 + movs r3, #0x1e + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080DA87C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r5, r2, r4 + ldrb r3, [r5, #5] + movs r1, #0xf + ands r1, r3 + movs r3, #0x10 + orrs r1, r3 + strb r1, [r5, #5] + adds r4, #0x1c + adds r2, r2, r4 + ldr r1, _080DA880 + str r1, [r2] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080DA870: .4byte gUnknown_8560B64 +_080DA874: .4byte gUnknown_8C1C700 +_080DA878: .4byte gUnknown_8560B4C +_080DA87C: .4byte gUnknown_20205AC +_080DA880: .4byte sub_08007140 + thumb_func_end sub_080DA828 + + thumb_func_start sub_080DA884 +sub_080DA884: @ 0x080DA884 + push {lr} + ldr r0, _080DA8C8 + bl sub_08034388 + ldr r0, _080DA8CC + bl sub_080343E4 + ldr r0, _080DA8D0 + movs r1, #0x60 + movs r2, #0xa + movs r3, #0x1d + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DA8D4 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + movs r1, #0x3e + adds r1, r1, r2 + mov ip, r1 + ldrb r1, [r1] + movs r3, #4 + orrs r1, r3 + mov r3, ip + strb r1, [r3] + ldrh r1, [r2, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + strh r1, [r2, #0x2e] + pop {r1} + bx r1 + .align 2, 0 +_080DA8C8: .4byte gUnknown_8560B6C +_080DA8CC: .4byte gUnknown_8560B74 +_080DA8D0: .4byte gUnknown_8560B7C +_080DA8D4: .4byte gUnknown_20205AC + thumb_func_end sub_080DA884 + + thumb_func_start sub_080DA8D8 +sub_080DA8D8: @ 0x080DA8D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r1, #0 + adds r6, r2, #0 + adds r4, r3, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r5, #0 + bl sub_080DDFB0 + adds r5, r0, #0 + ldr r0, _080DA910 + ldrb r0, [r0] + cmp r4, r0 + bne _080DA91C + lsls r0, r5, #3 + ldr r1, _080DA914 + adds r0, r0, r1 + ldr r1, _080DA918 + ldr r1, [r1] + ldr r1, [r1, #4] + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_08034954 + b _080DA930 + .align 2, 0 +_080DA910: .4byte gUnknown_2039BC5 +_080DA914: .4byte gUnknown_82D6148 +_080DA918: .4byte gUnknown_2024178 +_080DA91C: + lsls r0, r5, #3 + ldr r1, _080DA9C4 + adds r0, r0, r1 + ldr r1, _080DA9C8 + ldr r1, [r1] + ldr r1, [r1, #4] + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080349A8 +_080DA930: + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0806E1CC + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + adds r0, r5, #0 + movs r1, #0 + bl sub_08069BA8 + ldr r4, _080DA9CC + movs r0, #2 + adds r1, r5, #0 + movs r2, #0 + bl sub_080A58D4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + movs r1, #0x70 + movs r3, #0x1e + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080DA9D0 + mov r8, r0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r6, r0, #2 + mov r0, r8 + adds r4, r6, r0 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + movs r1, #0xd + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #5] + movs r0, #2 + bl sub_080A7BAC + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + mov r0, r8 + adds r0, #0x1c + adds r0, r6, r0 + ldr r1, _080DA9D4 + str r1, [r0] + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + strh r0, [r4, #0x2e] + strh r5, [r4, #0x32] + adds r0, r5, #0 + bl sub_080DAA0C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DA9DC + mov r0, r8 + adds r0, #0x10 + adds r0, r6, r0 + ldr r1, _080DA9D8 + b _080DA9E4 + .align 2, 0 +_080DA9C4: .4byte gUnknown_82D6148 +_080DA9C8: .4byte gUnknown_2024178 +_080DA9CC: .4byte gUnknown_2024640 +_080DA9D0: .4byte gUnknown_20205AC +_080DA9D4: .4byte sub_08007140 +_080DA9D8: .4byte gUnknown_82D2F50 +_080DA9DC: + mov r0, r8 + adds r0, #0x10 + adds r0, r6, r0 + ldr r1, _080DAA04 +_080DA9E4: + str r1, [r0] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _080DAA08 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007F70 + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080DAA04: .4byte gUnknown_82D2F24 +_080DAA08: .4byte gUnknown_20205AC + thumb_func_end sub_080DA8D8 + + thumb_func_start sub_080DAA0C +sub_080DAA0C: @ 0x080DAA0C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc9 + beq _080DAA1A + movs r0, #1 + b _080DAA1C +_080DAA1A: + movs r0, #0 +_080DAA1C: + pop {r1} + bx r1 + thumb_func_end sub_080DAA0C + + thumb_func_start sub_080DAA20 +sub_080DAA20: @ 0x080DAA20 + push {r4, r5, r6, lr} + ldr r5, _080DAA4C + ldr r0, [r5] + ldr r0, [r0, #0x24] + movs r4, #0xa0 + lsls r4, r4, #3 + adds r1, r0, r4 + movs r6, #0xa0 + lsls r6, r6, #1 + adds r2, r6, #0 + bl CpuSet + ldr r0, [r5] + ldr r0, [r0, #0x2c] + adds r4, r0, r4 + adds r1, r4, #0 + adds r2, r6, #0 + bl CpuSet + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DAA4C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DAA20 + + thumb_func_start sub_080DAA50 +sub_080DAA50: @ 0x080DAA50 + push {lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r2, _080DAA78 + ldr r1, _080DAA7C + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #8 + bhi _080DAAB8 + lsls r0, r0, #2 + ldr r1, _080DAA80 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DAA78: .4byte gUnknown_8566AE4 +_080DAA7C: .4byte gUnknown_8565FCC +_080DAA80: .4byte _080DAA84 +_080DAA84: @ jump table + .4byte _080DAAA8 @ case 0 + .4byte _080DAAA8 @ case 1 + .4byte _080DAAB0 @ case 2 + .4byte _080DAAB0 @ case 3 + .4byte _080DAAB8 @ case 4 + .4byte _080DAAB8 @ case 5 + .4byte _080DAAB8 @ case 6 + .4byte _080DAAB8 @ case 7 + .4byte _080DAAA8 @ case 8 +_080DAAA8: + ldr r0, _080DAAAC + b _080DAABA + .align 2, 0 +_080DAAAC: .4byte 0x00009082 +_080DAAB0: + ldr r0, _080DAAB4 + b _080DAABA + .align 2, 0 +_080DAAB4: .4byte 0x00009088 +_080DAAB8: + ldr r0, _080DAAD0 +_080DAABA: + lsls r1, r3, #0xc + movs r2, #0x90 + lsls r2, r2, #8 + adds r1, r1, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080DAAD0: .4byte 0x00009086 + thumb_func_end sub_080DAA50 + + thumb_func_start sub_080DAAD4 +sub_080DAAD4: @ 0x080DAAD4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r1, _080DAB54 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + ldr r7, _080DAB58 + cmp r0, #0 + beq _080DAB08 + adds r7, #5 + cmp r0, #1 + beq _080DAB08 + adds r7, #5 + cmp r0, #2 + beq _080DAB08 + adds r7, #0x40 + cmp r0, #3 + bne _080DAB08 + subs r7, #0x20 +_080DAB08: + movs r6, #5 + str r6, [sp] + movs r4, #1 + str r4, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0 + adds r1, r7, #0 + movs r2, #0xb + movs r3, #0x1f + bl sub_080DE3C0 + adds r1, r7, #0 + adds r1, #0x10 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0 + movs r2, #0xb + movs r3, #0x20 + bl sub_080DE3C0 + ldr r2, _080DAB5C + ldr r0, _080DAB54 + mov r3, r8 + lsls r1, r3, #3 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #1] + adds r7, r1, #0 + cmp r0, #0xff + bne _080DAB60 + movs r6, #0 + b _080DAB6C + .align 2, 0 +_080DAB54: .4byte gUnknown_8565FCC +_080DAB58: .4byte 0x00004040 +_080DAB5C: .4byte gUnknown_8566AE4 +_080DAB60: + ldrb r0, [r2, #1] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080DAB6C: + cmp r6, #8 + bls _080DAB72 + movs r6, #8 +_080DAB72: + ldr r1, _080DABB4 + movs r0, #8 + str r0, [sp] + movs r5, #1 + str r5, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x15 + movs r3, #0x1f + bl sub_080DE418 + ldr r1, _080DABB8 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x15 + movs r3, #0x1f + bl sub_080DE418 + ldr r1, _080DABBC + ldr r0, _080DABC0 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #2] + cmp r0, #0xff + bne _080DABC4 + movs r6, #0 + b _080DABD0 + .align 2, 0 +_080DABB4: .4byte 0x00005035 +_080DABB8: .4byte 0x00005012 +_080DABBC: .4byte gUnknown_8566AE4 +_080DABC0: .4byte gUnknown_8565FCC +_080DABC4: + ldrb r0, [r1, #2] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080DABD0: + cmp r6, #8 + bls _080DABD6 + movs r6, #8 +_080DABD6: + ldr r1, _080DAC30 + movs r0, #8 + str r0, [sp] + movs r5, #1 + str r5, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x15 + movs r3, #0x20 + bl sub_080DE418 + ldr r1, _080DAC34 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x15 + movs r3, #0x20 + bl sub_080DE418 + movs r0, #0xe + movs r1, #0 + bl sub_08003B18 + ldr r1, _080DAC38 + ldr r0, _080DAC3C + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0xe + bl sub_080DE2D4 + ldr r1, _080DAC40 + movs r0, #0xd + bl sub_080DE2D4 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAC30: .4byte 0x00005036 +_080DAC34: .4byte 0x00005014 +_080DAC38: .4byte gUnknown_8560BB4 +_080DAC3C: .4byte gUnknown_8565FCC +_080DAC40: .4byte gUnknown_85C93FF + thumb_func_end sub_080DAAD4 + + thumb_func_start sub_080DAC44 +sub_080DAC44: @ 0x080DAC44 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _080DACC0 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080DACC4 + cmp r5, #0 + beq _080DACC4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080DAA50 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #2 + mov r8, r0 + str r0, [sp] + movs r5, #1 + str r5, [sp, #4] + movs r6, #0x11 + str r6, [sp, #8] + str r5, [sp, #0xc] + movs r0, #0 + adds r1, r4, #0 + movs r2, #0x14 + adds r3, r7, #0 + bl sub_080DE3C0 + adds r4, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r3, r7, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + str r5, [sp, #0xc] + movs r0, #0 + adds r1, r4, #0 + movs r2, #0x14 + bl sub_080DE3C0 + b _080DACDA + .align 2, 0 +_080DACC0: .4byte gUnknown_2039BC6 +_080DACC4: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x14 + adds r3, r7, #0 + bl sub_080DE418 +_080DACDA: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DAC44 + + thumb_func_start sub_080DACE8 +sub_080DACE8: @ 0x080DACE8 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0 +_080DACEE: + ldr r0, _080DAD10 + ldr r0, [r0] + ldr r0, [r0, #4] + adds r0, r5, r0 + ldrh r0, [r0, #6] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_080DAC44 + adds r5, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080DACEE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DAD10: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DACE8 + + thumb_func_start sub_080DAD14 +sub_080DAD14: @ 0x080DAD14 + ldr r0, _080DAD18 + bx lr + .align 2, 0 +_080DAD18: .4byte 0x00002034 + thumb_func_end sub_080DAD14 + + thumb_func_start sub_080DAD1C +sub_080DAD1C: @ 0x080DAD1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov sl, r8 + ldr r0, _080DAD54 + mov sb, r0 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r7, r0, #2 + adds r3, r7, r1 + ldrb r0, [r3, #0x10] + movs r5, #0x30 + ands r5, r0 + cmp r5, #0 + bne _080DAD58 + movs r0, #0 + b _080DADEE + .align 2, 0 +_080DAD54: .4byte gUnknown_2039BD4 +_080DAD58: + ldr r0, _080DADA8 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0xd + ldrsb r0, [r3, r0] + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + cmp r5, #0x10 + bne _080DADAC + bl sub_080DAD14 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + str r0, [sp] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r2, #0x13 + adds r3, r6, #0 + bl sub_080DE418 + mov r1, r8 + cmp r1, #0 + beq _080DADEC + movs r0, #0x5b + b _080DADD6 + .align 2, 0 +_080DADA8: .4byte gUnknown_2039BC6 +_080DADAC: + adds r3, r6, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #3 + subs r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x13 + bl sub_080DE418 + mov r0, sl + cmp r0, #0 + beq _080DADEC + movs r0, #0x26 +_080DADD6: + bl sub_080A306C + mov r1, sb + ldr r0, [r1] + ldr r1, [r0, #4] + adds r1, r7, r1 + ldrb r2, [r1, #0x10] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x10] +_080DADEC: + movs r0, #1 +_080DADEE: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DAD1C + + thumb_func_start sub_080DAE00 +sub_080DAE00: @ 0x080DAE00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r7, #0 + movs r0, #1 + mov sl, r0 + movs r1, #0x11 + mov sb, r1 + movs r0, #0 + mov r8, r0 +_080DAE1A: + ldr r0, _080DAEA4 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r4, r0, #2 + adds r4, r4, r0 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080DAD14 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080DAEA8 + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r8 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + mov r1, sl + str r1, [sp] + asrs r6, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + movs r0, #0 + adds r1, r5, #0 + movs r2, #0x13 + adds r3, r4, #0 + bl sub_080DE418 + adds r4, r4, r6 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sl + str r1, [sp] + movs r0, #3 + subs r0, r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x13 + adds r3, r4, #0 + bl sub_080DE418 + movs r1, #0x1c + add r8, r1 + adds r7, #1 + cmp r7, #3 + ble _080DAE1A + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DAEA4: .4byte gUnknown_2039BC6 +_080DAEA8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DAE00 + + thumb_func_start sub_080DAEAC +sub_080DAEAC: @ 0x080DAEAC + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #0 + cmp r1, #4 + bhi _080DAEEE + lsls r0, r1, #2 + ldr r1, _080DAEC4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DAEC4: .4byte _080DAEC8 +_080DAEC8: @ jump table + .4byte _080DAEDC @ case 0 + .4byte _080DAEE0 @ case 1 + .4byte _080DAEE4 @ case 2 + .4byte _080DAEE8 @ case 3 + .4byte _080DAEEC @ case 4 +_080DAEDC: + movs r0, #0x80 + b _080DAEEE +_080DAEE0: + movs r0, #0x84 + b _080DAEEE +_080DAEE4: + movs r0, #0x86 + b _080DAEEE +_080DAEE8: + movs r0, #0x88 + b _080DAEEE +_080DAEEC: + movs r0, #0x82 +_080DAEEE: + movs r1, #0x90 + lsls r1, r1, #8 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_080DAEAC + + thumb_func_start sub_080DAEFC +sub_080DAEFC: @ 0x080DAEFC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + mov sb, r1 + movs r1, #0 + mov r8, r1 + ldr r1, _080DAF44 + adds r1, r0, r1 + ldrb r2, [r1] + lsls r1, r2, #2 + adds r1, r1, r2 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r1, _080DAF48 + ldr r1, [r1] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldr r0, [r2, #0x10] + ldr r1, _080DAF4C + ands r0, r1 + cmp r0, #0 + bne _080DAF40 + ldrb r0, [r2, #0xf] + cmp r0, #0 + beq _080DAF50 +_080DAF40: + movs r0, #0 + b _080DAF72 + .align 2, 0 +_080DAF44: .4byte gUnknown_2039BC6 +_080DAF48: .4byte gUnknown_2039BD4 +_080DAF4C: .4byte 0x00FF0003 +_080DAF50: + ldrb r1, [r2, #0xc] + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _080DAF5E + movs r0, #1 + b _080DAF72 +_080DAF5E: + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080DAF70 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080DAF7E +_080DAF70: + movs r0, #2 +_080DAF72: + bl sub_080DAEAC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + b _080DAF82 +_080DAF7E: + movs r0, #0 + mov sb, r0 +_080DAF82: + mov r1, sb + cmp r1, #0 + beq _080DAFC2 + movs r6, #2 + str r6, [sp] + movs r4, #1 + str r4, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0 + mov r1, r8 + movs r2, #0x14 + adds r3, r7, #0 + bl sub_080DE3C0 + mov r1, r8 + adds r1, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r3, r7, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0 + movs r2, #0x14 + bl sub_080DE3C0 + b _080DAFD8 +_080DAFC2: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x14 + adds r3, r7, #0 + bl sub_080DE418 +_080DAFD8: + mov r0, sb + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080DAEFC + + thumb_func_start sub_080DAFE8 +sub_080DAFE8: @ 0x080DAFE8 + push {r4, lr} + movs r4, #0 +_080DAFEC: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DAEFC + adds r4, #1 + cmp r4, #3 + ble _080DAFEC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DAFE8 + + thumb_func_start sub_080DB000 +sub_080DB000: @ 0x080DB000 + push {lr} + movs r0, #8 + movs r1, #0 + bl sub_08003B18 + movs r0, #8 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_080DE468 + pop {r0} + bx r0 + thumb_func_end sub_080DB000 + + thumb_func_start sub_080DB01C +sub_080DB01C: @ 0x080DB01C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + adds r0, r4, #0 + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DB034 + movs r0, #0 + b _080DB06E +_080DB034: + ldr r0, _080DB050 + ldrb r0, [r0] + cmp r4, r0 + beq _080DB058 + adds r0, r4, #0 + bl sub_08156200 + bl sub_08156260 + lsls r0, r0, #0x18 + ldr r2, _080DB054 + lsrs r0, r0, #0x17 + lsls r1, r4, #6 + b _080DB066 + .align 2, 0 +_080DB050: .4byte gUnknown_2039BC5 +_080DB054: .4byte gUnknown_2039AA0 +_080DB058: + ldr r2, _080DB074 + ldr r0, _080DB078 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #1 + lsls r1, r5, #6 +_080DB066: + adds r0, r0, r1 + adds r2, #0x1e + adds r0, r0, r2 + ldrh r0, [r0] +_080DB06E: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080DB074: .4byte gUnknown_2039AA0 +_080DB078: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DB01C + + thumb_func_start sub_080DB07C +sub_080DB07C: @ 0x080DB07C + push {r4, r5, lr} + movs r4, #0 + movs r5, #0 +_080DB082: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB01C + ldr r1, _080DB0A4 + ldr r1, [r1] + ldr r1, [r1, #4] + adds r1, r5, r1 + strh r0, [r1, #6] + adds r5, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080DB082 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DB0A4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DB07C + + thumb_func_start sub_080DB0A8 +sub_080DB0A8: @ 0x080DB0A8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + ldr r5, _080DB150 + mov r4, sp + movs r3, #0 + movs r6, #3 +_080DB0BA: + ldr r2, [r5] + ldr r1, [r2, #4] + adds r1, r3, r1 + ldrh r0, [r1, #2] + ldrh r7, [r1, #4] + adds r0, r0, r7 + strh r0, [r1, #4] + ldr r0, [r2, #4] + adds r0, r3, r0 + ldrh r0, [r0, #4] + strh r0, [r4] + adds r4, #2 + adds r3, #0x1c + subs r6, #1 + cmp r6, #0 + bge _080DB0BA + movs r6, #0 +_080DB0DC: + movs r4, #3 + cmp r4, r6 + ble _080DB108 +_080DB0E2: + subs r5, r4, #1 + lsls r0, r5, #1 + mov r1, sp + adds r3, r1, r0 + lsls r0, r4, #1 + adds r2, r1, r0 + ldrh r4, [r3] + movs r7, #0 + ldrsh r1, [r3, r7] + movs r7, #0 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080DB102 + ldrh r0, [r2] + strh r4, [r2] + strh r0, [r3] +_080DB102: + adds r4, r5, #0 + cmp r4, r6 + bgt _080DB0E2 +_080DB108: + adds r6, #1 + cmp r6, #2 + ble _080DB0DC + movs r6, #0 + movs r0, #4 + rsbs r0, r0, #0 + mov sb, r0 + ldr r1, _080DB150 + mov r8, r1 + movs r7, #3 + mov ip, r7 +_080DB11E: + movs r4, #0 + lsls r0, r6, #3 + adds r7, r6, #1 + subs r0, r0, r6 + lsls r5, r0, #2 + mov r3, sp +_080DB12A: + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #4] + adds r2, r5, r0 + movs r6, #4 + ldrsh r1, [r2, r6] + movs r6, #0 + ldrsh r0, [r3, r6] + cmp r1, r0 + bne _080DB154 + mov r0, ip + ands r4, r0 + ldrb r1, [r2, #0xb] + mov r0, sb + ands r0, r1 + orrs r0, r4 + strb r0, [r2, #0xb] + b _080DB15C + .align 2, 0 +_080DB150: .4byte gUnknown_2039BD4 +_080DB154: + adds r3, #2 + adds r4, #1 + cmp r4, #3 + ble _080DB12A +_080DB15C: + adds r6, r7, #0 + cmp r6, #3 + ble _080DB11E + movs r0, #1 + bl sub_080DC5BC + bl sub_080DCCF4 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DB0A8 + + thumb_func_start sub_080DB17C +sub_080DB17C: @ 0x080DB17C + push {r4, r5, lr} + ldr r4, _080DB194 + movs r2, #0 + movs r3, #3 +_080DB184: + ldr r0, [r4] + ldr r0, [r0, #4] + adds r1, r2, r0 + ldrh r0, [r1, #6] + cmp r0, #0 + bne _080DB198 + movs r1, #5 + b _080DB1B6 + .align 2, 0 +_080DB194: .4byte gUnknown_2039BD4 +_080DB198: + movs r5, #2 + ldrsh r0, [r1, r5] + movs r1, #0 + cmp r0, #0 + ble _080DB1B6 + movs r1, #1 + cmp r0, #0x1d + ble _080DB1B6 + movs r1, #2 + cmp r0, #0x3b + ble _080DB1B6 + movs r1, #4 + cmp r0, #0x4f + bgt _080DB1B6 + movs r1, #3 +_080DB1B6: + ldr r0, [r4] + ldr r0, [r0, #4] + adds r0, r2, r0 + strb r1, [r0, #0x1a] + adds r2, #0x1c + subs r3, #1 + cmp r3, #0 + bge _080DB184 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080DB17C + + thumb_func_start sub_080DB1CC +sub_080DB1CC: @ 0x080DB1CC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DB1F8 + ldr r1, [r1] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r1, [r2, #0xc] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080DB1F4 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080DB1FC +_080DB1F4: + movs r0, #0 + b _080DB1FE + .align 2, 0 +_080DB1F8: .4byte gUnknown_2039BD4 +_080DB1FC: + movs r0, #1 +_080DB1FE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DB1CC + + thumb_func_start sub_080DB204 +sub_080DB204: @ 0x080DB204 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r5, _080DB408 + movs r0, #0 + mov r8, r0 + movs r1, #7 + rsbs r1, r1, #0 + mov sl, r1 + movs r0, #2 + rsbs r0, r0, #0 + mov sb, r0 + movs r4, #0 + movs r6, #3 +_080DB224: + ldr r1, [r5] + ldr r0, [r1, #4] + adds r0, r4, r0 + movs r2, #0 + strh r2, [r0, #2] + ldr r0, [r1, #4] + adds r0, r4, r0 + strh r2, [r0] + ldr r0, [r1, #4] + adds r0, r4, r0 + mov r1, r8 + strb r1, [r0, #0x12] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r3, r4, r0 + ldrb r2, [r3, #0xc] + movs r0, #6 + ands r0, r2 + cmp r0, #0 + beq _080DB260 + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1e + subs r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #1 + mov r1, sl + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0xc] +_080DB260: + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + mov r1, r8 + strb r1, [r0, #0xe] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x10] + mov r0, sb + ands r0, r2 + strb r0, [r1, #0x10] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + mov r1, r8 + strb r1, [r0, #0xf] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x10] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x10] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x10] + movs r7, #5 + rsbs r7, r7, #0 + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1, #0x10] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x10] + movs r0, #9 + rsbs r0, r0, #0 + mov ip, r0 + ands r0, r2 + strb r0, [r1, #0x10] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0xc] + mov r0, sb + ands r0, r2 + strb r0, [r1, #0xc] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + movs r1, #0xff + strb r1, [r0, #0x13] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0, #0x14] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x10] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x10] + ldr r0, [r5] + ldr r2, [r0, #4] + adds r2, r4, r2 + ldrb r3, [r2, #0x15] + lsls r1, r3, #0x1f + lsrs r1, r1, #0x1f + lsls r1, r1, #2 + adds r0, r7, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0x15] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x15] + mov r0, sb + ands r0, r2 + strb r0, [r1, #0x15] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x11] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x11] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x11] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x11] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r2, r4, r0 + ldrb r1, [r2, #0x11] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080DB358 + ldrb r1, [r2, #0xc] + mov r0, sl + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0xc] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x11] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1, #0x11] +_080DB358: + ldr r0, [r5] + ldr r0, [r0, #4] + adds r2, r4, r0 + ldrb r1, [r2, #0x11] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080DB37E + ldrb r0, [r2, #0xb] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xb] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x11] + mov r0, ip + ands r0, r2 + strb r0, [r1, #0x11] +_080DB37E: + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x11] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x11] + adds r4, #0x1c + subs r6, #1 + cmp r6, #0 + blt _080DB398 + b _080DB224 +_080DB398: + movs r6, #0 + ldr r5, _080DB408 + movs r7, #0 + movs r4, #0 +_080DB3A0: + ldr r3, [r5] + ldr r0, [r3, #4] + adds r0, r4, r0 + ldrh r1, [r0, #6] + strh r1, [r0, #8] + ldr r2, [r3] + lsls r1, r6, #1 + ldrb r0, [r2, #1] + lsls r0, r0, #3 + adds r1, r1, r0 + adds r2, #0x1c + adds r2, r2, r1 + ldr r0, [r3, #4] + adds r0, r4, r0 + ldrh r0, [r0, #6] + strh r0, [r2] + ldr r0, [r3, #4] + adds r0, r4, r0 + ldrh r0, [r0, #6] + bl sub_080DD154 + ldr r1, [r5] + ldr r2, [r1] + ldrb r1, [r2, #1] + lsls r1, r1, #2 + adds r1, r6, r1 + adds r2, #0x44 + adds r2, r2, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + strh r7, [r0, #6] + adds r4, #0x1c + adds r6, #1 + cmp r6, #3 + ble _080DB3A0 + ldr r0, _080DB408 + ldr r0, [r0] + ldr r2, [r0, #0x10] + ldrb r1, [r2, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB408: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DB204 + + thumb_func_start sub_080DB40C +sub_080DB40C: @ 0x080DB40C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DB438 + ldr r1, [r1] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r1, [r2, #0xc] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080DB434 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080DB43C +_080DB434: + movs r0, #1 + b _080DB43E + .align 2, 0 +_080DB438: .4byte gUnknown_2039BD4 +_080DB43C: + movs r0, #0 +_080DB43E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DB40C + + thumb_func_start sub_080DB444 +sub_080DB444: @ 0x080DB444 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080DB498 + ldr r1, _080DB470 + lsls r4, r4, #1 + adds r1, r4, r1 + strh r0, [r1] + ldr r2, _080DB474 + adds r2, r4, r2 + ldr r1, _080DB478 + adds r4, r4, r1 + ldrh r4, [r4] + adds r0, r0, r4 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DB470: .4byte gUnknown_2039BB8 +_080DB474: .4byte gUnknown_2039BA8 +_080DB478: .4byte gUnknown_2039BA0 + thumb_func_end sub_080DB444 + + thumb_func_start sub_080DB47C +sub_080DB47C: @ 0x080DB47C + push {r4, lr} + movs r4, #0 +_080DB480: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB444 + adds r4, #1 + cmp r4, #3 + ble _080DB480 + bl sub_080DB4B0 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DB47C + + thumb_func_start sub_080DB498 +sub_080DB498: @ 0x080DB498 + lsls r0, r0, #0x18 + ldr r1, _080DB4AC + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r0, r0, #0x11 + asrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080DB4AC: .4byte gUnknown_2039BB0 + thumb_func_end sub_080DB498 + + thumb_func_start sub_080DB4B0 +sub_080DB4B0: @ 0x080DB4B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x70 + mov r0, sp + movs r1, #0 + movs r2, #8 + bl memset + movs r0, #0 + mov sb, r0 + mov r1, sp + adds r1, #8 + str r1, [sp, #0x64] + mov r3, sp + adds r3, #0xc + str r3, [sp, #0x68] + mov r6, sp + adds r6, #0x14 + str r6, [sp, #0x6c] + mov r4, sp +_080DB4DE: + bl sub_0806F050 + strh r0, [r4] + movs r2, #0 + cmp r2, sb + bge _080DB51C + mov r1, sp + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + bne _080DB500 + subs r4, #2 + movs r7, #1 + rsbs r7, r7, #0 + add sb, r7 + b _080DB51C +_080DB500: + adds r2, #1 + cmp r2, sb + bge _080DB51C + lsls r0, r2, #1 + mov r3, sp + adds r1, r3, r0 + ldrh r0, [r4] + ldrh r1, [r1] + cmp r0, r1 + bne _080DB500 + subs r4, #2 + movs r6, #1 + rsbs r6, r6, #0 + add sb, r6 +_080DB51C: + adds r4, #2 + movs r7, #1 + add sb, r7 + mov r0, sb + cmp r0, #3 + ble _080DB4DE + movs r1, #0 + mov sb, r1 + mov r4, sp + ldr r6, _080DB62C + ldr r2, [sp, #0x64] + ldr r5, _080DB630 + ldr r3, [sp, #0x68] +_080DB536: + mov r7, sb + lsls r1, r7, #4 + movs r7, #0 + ldrsh r0, [r6, r7] + str r0, [r2] + movs r7, #0 + ldrsh r0, [r5, r7] + str r0, [r3] + ldrh r0, [r4] + str r0, [r2, #8] + ldr r0, [sp, #0x6c] + adds r1, r0, r1 + mov r7, sb + str r7, [r1] + adds r4, #2 + adds r6, #2 + adds r2, #0x10 + adds r5, #2 + adds r3, #0x10 + movs r0, #1 + add sb, r0 + mov r1, sb + cmp r1, #3 + ble _080DB536 + movs r3, #0 + mov sb, r3 +_080DB56A: + movs r4, #3 + cmp r4, sb + ble _080DB5F4 + add r7, sp, #0x48 + ldr r6, [sp, #0x68] + str r6, [sp, #0x58] + ldr r0, [sp, #0x64] + adds r0, #8 + str r0, [sp, #0x5c] + ldr r1, [sp, #0x6c] + str r1, [sp, #0x60] +_080DB580: + subs r3, r4, #1 + mov sl, r3 + mov r0, sl + adds r1, r4, #0 + ldr r2, [sp, #0x64] + bl sub_080DB694 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DB5EE + mov r6, sl + lsls r2, r6, #4 + ldr r0, [sp, #0x64] + adds r3, r0, r2 + ldr r0, [r3] + str r0, [sp, #0x48] + ldr r1, [sp, #0x58] + adds r6, r1, r2 + ldr r0, [r6] + str r0, [r7, #4] + ldr r0, [sp, #0x5c] + adds r0, r0, r2 + mov r8, r0 + ldr r0, [r0] + str r0, [r7, #8] + ldr r1, [sp, #0x60] + adds r2, r1, r2 + ldr r0, [r2] + str r0, [r7, #0xc] + lsls r1, r4, #4 + ldr r0, [sp, #0x64] + adds r5, r0, r1 + ldr r0, [r5] + str r0, [r3] + ldr r3, [sp, #0x58] + adds r4, r3, r1 + ldr r0, [r4] + str r0, [r6] + ldr r6, [sp, #0x5c] + adds r3, r6, r1 + ldr r0, [r3] + mov r6, r8 + str r0, [r6] + ldr r0, [sp, #0x60] + adds r1, r0, r1 + ldr r0, [r1] + str r0, [r2] + ldr r0, [sp, #0x48] + str r0, [r5] + ldr r0, [r7, #4] + str r0, [r4] + ldr r0, [r7, #8] + str r0, [r3] + ldr r0, [r7, #0xc] + str r0, [r1] +_080DB5EE: + mov r4, sl + cmp r4, sb + bgt _080DB580 +_080DB5F4: + movs r1, #1 + add sb, r1 + mov r3, sb + cmp r3, #2 + ble _080DB56A + movs r6, #0 + mov sb, r6 + ldr r2, _080DB634 + ldr r1, [sp, #0x6c] +_080DB606: + ldr r0, [r1] + adds r0, r0, r2 + mov r7, sb + strb r7, [r0] + adds r1, #0x10 + movs r0, #1 + add sb, r0 + mov r3, sb + cmp r3, #3 + ble _080DB606 + add sp, #0x70 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DB62C: .4byte gUnknown_2039BA8 +_080DB630: .4byte gUnknown_2039BA0 +_080DB634: .4byte gUnknown_2039BC0 + thumb_func_end sub_080DB4B0 + + thumb_func_start sub_080DB638 +sub_080DB638: @ 0x080DB638 + push {lr} + ldr r0, _080DB678 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080DB672 + ldr r0, _080DB67C + ldr r2, [r0] + ldr r1, _080DB680 + ldr r0, _080DB684 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #1 + ldr r0, _080DB688 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r0, _080DB68C + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + adds r0, #1 + ldr r1, _080DB690 + cmp r0, r1 + ble _080DB670 + adds r0, r1, #0 +_080DB670: + strh r0, [r2] +_080DB672: + pop {r0} + bx r0 + .align 2, 0 +_080DB678: .4byte gUnknown_2039BCA +_080DB67C: .4byte gUnknown_3005AF0 +_080DB680: .4byte gUnknown_2039BC0 +_080DB684: .4byte gUnknown_2039BC5 +_080DB688: .4byte gUnknown_2039BCC +_080DB68C: .4byte 0x00000624 +_080DB690: .4byte 0x0000270F + thumb_func_end sub_080DB638 + + thumb_func_start sub_080DB694 +sub_080DB694: @ 0x080DB694 + push {lr} + lsls r0, r0, #4 + adds r0, r0, r2 + lsls r1, r1, #4 + adds r3, r1, r2 + ldr r2, [r0] + ldr r1, [r3] + cmp r2, r1 + blt _080DB6C4 + cmp r2, r1 + bgt _080DB6B6 + ldr r2, [r0, #4] + ldr r1, [r3, #4] + cmp r2, r1 + blt _080DB6C4 + cmp r2, r1 + ble _080DB6BA +_080DB6B6: + movs r2, #0 + b _080DB6C6 +_080DB6BA: + ldr r1, [r0, #8] + ldr r0, [r3, #8] + movs r2, #0 + cmp r1, r0 + bge _080DB6C6 +_080DB6C4: + movs r2, #1 +_080DB6C6: + adds r0, r2, #0 + pop {r1} + bx r1 + thumb_func_end sub_080DB694 + + thumb_func_start sub_080DB6CC +sub_080DB6CC: @ 0x080DB6CC + push {lr} + ldr r0, _080DB6E8 + movs r1, #0 + strh r1, [r0] + ldr r0, _080DB6EC + strh r1, [r0] + bl sub_080DB000 + ldr r0, _080DB6F0 + movs r1, #0 + bl sub_080DE338 + pop {r0} + bx r0 + .align 2, 0 +_080DB6E8: .4byte gUnknown_2022ACA +_080DB6EC: .4byte gUnknown_2022AD2 +_080DB6F0: .4byte gUnknown_824C140 + thumb_func_end sub_080DB6CC + + thumb_func_start sub_080DB6F4 +sub_080DB6F4: @ 0x080DB6F4 + push {r4, r5, lr} + sub sp, #0xc + movs r5, #0x80 + lsls r5, r5, #0x12 + movs r4, #3 +_080DB6FE: + lsrs r3, r5, #0x18 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x16 + bl sub_080DE418 + movs r0, #0xa0 + lsls r0, r0, #0x13 + adds r5, r5, r0 + subs r4, #1 + cmp r4, #0 + bge _080DB6FE + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DB6F4 + + thumb_func_start sub_080DB72C +sub_080DB72C: @ 0x080DB72C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DB750 + cmp r0, #0 + beq _080DB746 + ldr r1, _080DB754 + cmp r0, #1 + beq _080DB746 + ldr r1, _080DB758 + cmp r0, #2 + bne _080DB746 + ldr r1, _080DB75C +_080DB746: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080DB750: .4byte 0x00005011 +_080DB754: .4byte 0x00006011 +_080DB758: .4byte 0x00008011 +_080DB75C: .4byte 0x00007011 + thumb_func_end sub_080DB72C + + thumb_func_start sub_080DB760 +sub_080DB760: @ 0x080DB760 + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0x10 + ble _080DB77A + movs r1, #0x10 + b _080DB784 +_080DB77A: + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r2, r0 + bge _080DB784 + movs r1, #0xf0 +_080DB784: + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080DB760 + + thumb_func_start sub_080DB78C +sub_080DB78C: @ 0x080DB78C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r0, _080DB820 + ldr r0, [r0] + ldr r0, [r0, #0x14] + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #2] + ldr r0, _080DB824 + movs r1, #0x14 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r5, #0 + bl sub_080DB760 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r5, r5, r6 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r5, #0 + bl sub_080DB760 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + subs r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + bl sub_080DB72C + ldr r2, _080DB828 + lsls r3, r7, #2 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r1, r0, r2 + adds r0, r4, #0 + cmp r4, #0 + bge _080DB804 + rsbs r0, r4, #0 +_080DB804: + strh r0, [r1, #8] + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0xa] + cmp r4, #0 + bgt _080DB818 + cmp r4, #0 + bne _080DB82C + cmp r0, #0 + ble _080DB82C +_080DB818: + movs r0, #1 + strh r0, [r1, #0xc] + b _080DB83A + .align 2, 0 +_080DB820: .4byte gUnknown_2039BD4 +_080DB824: .4byte sub_080DB858 +_080DB828: .4byte gUnknown_3005B60 +_080DB82C: + ldr r2, _080DB850 + lsls r3, r7, #2 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080DB854 + strh r1, [r0, #0xc] +_080DB83A: + adds r0, r3, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + mov r1, r8 + strh r1, [r0, #0xe] + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080DB850: .4byte gUnknown_3005B60 +_080DB854: .4byte 0x0000FFFF + thumb_func_end sub_080DB78C + + thumb_func_start sub_080DB858 +sub_080DB858: @ 0x080DB858 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080DB8B8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r0, [r4, #0xe] + mov sb, r0 + ldrh r3, [r4, #8] + ldrh r1, [r4, #0xa] + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xe + bgt _080DB88A + b _080DBA0C +_080DB88A: + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r2, [r4, #0xa] + movs r5, #0xa + ldrsh r0, [r4, r5] + cmp r0, #0 + bne _080DB8C0 + adds r0, r7, #0 + bl sub_080A8964 + ldr r0, _080DB8BC + ldr r0, [r0] + ldr r0, [r0, #0x14] + mov r2, sb + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r2, [r1, #2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #2] + b _080DBA0C + .align 2, 0 +_080DB8B8: .4byte gUnknown_3005B60 +_080DB8BC: .4byte gUnknown_2039BD4 +_080DB8C0: + cmp r3, #0 + bne _080DB908 + lsls r0, r1, #0x10 + mov r8, r0 + cmp r0, #0 + bge _080DB8DE + mov r0, sb + bl sub_080DB72C + adds r0, #2 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrh r0, [r4, #0xa] + adds r0, #1 + b _080DB8EC +_080DB8DE: + mov r0, sb + bl sub_080DB72C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrh r0, [r4, #0xa] + subs r0, #1 +_080DB8EC: + strh r0, [r4, #0xa] + ldr r1, _080DB904 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r2, r1, #1 + strh r2, [r0, #8] + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + b _080DB974 + .align 2, 0 +_080DB904: .4byte gUnknown_3005B60 +_080DB908: + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0 + bge _080DB942 + lsls r0, r1, #0x10 + mov r8, r0 + cmp r0, #0 + bge _080DB930 + ldrh r0, [r4, #8] + adds r1, r0, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r2, #1 + strh r0, [r4, #0xa] + mov r0, sb + bl sub_080DB72C + adds r0, #2 + b _080DB970 +_080DB930: + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + subs r0, r2, #1 + strh r0, [r4, #0xa] + b _080DB974 +_080DB942: + lsls r0, r1, #0x10 + mov r8, r0 + cmp r0, #0 + bge _080DB95C + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + adds r0, r2, #1 + strh r0, [r4, #0xa] + b _080DB974 +_080DB95C: + ldrh r0, [r4, #8] + adds r1, r0, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + subs r0, r2, #1 + strh r0, [r4, #0xa] + mov r0, sb + bl sub_080DB72C +_080DB970: + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080DB974: + str r5, [sp, #0xc] + movs r0, #0 + mov sl, r0 + cmp r5, #7 + bls _080DB98A + movs r2, #1 + mov sl, r2 + adds r0, r5, #0 + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080DB98A: + adds r2, r5, #0 + adds r2, #0x16 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _080DB9DC + add r0, sb + ldrb r0, [r0] + lsls r3, r0, #2 + adds r3, r3, r0 + adds r3, #2 + add r3, sl + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + adds r1, r6, #0 + bl sub_080DE418 + mov r3, r8 + cmp r3, #0 + ble _080DB9E8 + movs r0, #0x60 + bl sub_080A306C + ldr r4, _080DB9E0 + adds r0, r4, #0 + bl m4aMPlayImmInit + ldr r1, _080DB9E4 + ldr r0, [sp, #0xc] + lsls r2, r0, #0x18 + asrs r2, r2, #0x10 + adds r0, r4, #0 + bl m4aMPlayPitchControl + b _080DB9EE + .align 2, 0 +_080DB9DC: .4byte gUnknown_2039BC6 +_080DB9E0: .4byte gUnknown_3007510 +_080DB9E4: .4byte 0x0000FFFF +_080DB9E8: + movs r0, #0x16 + bl sub_080A306C +_080DB9EE: + mov r2, sl + cmp r2, #0 + bne _080DBA0C + cmp r5, #0 + bne _080DBA0C + cmp r6, #0 + bne _080DBA0C + ldr r0, _080DBA1C + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + rsbs r0, r0, #0 + strh r0, [r1, #0xc] +_080DBA0C: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBA1C: .4byte gUnknown_3005B60 + thumb_func_end sub_080DB858 + + thumb_func_start sub_080DBA20 +sub_080DBA20: @ 0x080DBA20 + push {r4, r5, lr} + ldr r0, _080DBA58 + bl sub_08008210 + movs r4, #0 + ldr r5, _080DBA5C +_080DBA2C: + ldr r0, _080DBA60 + adds r0, r4, r0 + ldrb r0, [r0] + adds r0, r0, r5 + ldrb r2, [r0] + ldr r0, _080DBA64 + movs r1, #0xb4 + movs r3, #1 + bl sub_08006B0C + ldr r1, _080DBA68 + ldr r1, [r1] + ldr r2, [r1, #0x14] + lsls r1, r4, #2 + adds r1, r1, r2 + strb r0, [r1] + adds r4, #1 + cmp r4, #3 + ble _080DBA2C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBA58: .4byte gUnknown_85609D8 +_080DBA5C: .4byte gUnknown_85609D0 +_080DBA60: .4byte gUnknown_2039BC6 +_080DBA64: .4byte gUnknown_8560A34 +_080DBA68: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DBA20 + + thumb_func_start sub_080DBA6C +sub_080DBA6C: @ 0x080DBA6C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _080DBAB0 + ldr r0, [r4] + ldr r2, [r0, #0x14] + lsls r3, r6, #2 + adds r2, r3, r2 + ldrb r0, [r2, #2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #2] + ldr r1, [r4] + ldr r0, [r1, #0x14] + adds r3, r3, r0 + ldrb r7, [r3] + ldr r1, [r1, #4] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #4 + ldrsh r0, [r0, r1] + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x11 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x38 + ble _080DBAB4 + movs r5, #0x38 + b _080DBABA + .align 2, 0 +_080DBAB0: .4byte gUnknown_2039BD4 +_080DBAB4: + cmp r0, #0 + bge _080DBABA + movs r5, #0 +_080DBABA: + ldr r2, _080DBAEC + lsls r3, r7, #4 + adds r0, r3, r7 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r0, #0x3e + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + strh r6, [r4, #0x2e] + strh r5, [r4, #0x30] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x24 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _080DBAF0 + movs r0, #1 + b _080DBAF2 + .align 2, 0 +_080DBAEC: .4byte gUnknown_20205AC +_080DBAF0: + ldr r0, _080DBB08 +_080DBAF2: + strh r0, [r4, #0x32] + adds r0, r3, r7 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _080DBB0C + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBB08: .4byte 0x0000FFFF +_080DBB0C: .4byte sub_080DBB6C + thumb_func_end sub_080DBA6C + + thumb_func_start sub_080DBB10 +sub_080DBB10: @ 0x080DBB10 + push {r4, lr} + movs r4, #0 +_080DBB14: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DBA6C + adds r4, #1 + cmp r4, #3 + ble _080DBB14 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DBB10 + + thumb_func_start sub_080DBB28 +sub_080DBB28: @ 0x080DBB28 + push {r4, lr} + movs r2, #0 + ldr r3, _080DBB60 + ldr r0, [r3] + ldr r0, [r0, #0x14] + ldrb r1, [r0, #2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080DBB56 + movs r4, #1 +_080DBB3E: + adds r2, #1 + cmp r2, #3 + bgt _080DBB56 + ldr r0, [r3] + ldr r1, [r0, #0x14] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _080DBB3E +_080DBB56: + cmp r2, #4 + beq _080DBB64 + movs r0, #0 + b _080DBB66 + .align 2, 0 +_080DBB60: .4byte gUnknown_2039BD4 +_080DBB64: + movs r0, #1 +_080DBB66: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080DBB28 + + thumb_func_start sub_080DBB6C +sub_080DBB6C: @ 0x080DBB6C + push {r4, lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x24] + movs r0, #0x24 + ldrsh r1, [r3, r0] + movs r4, #0x30 + ldrsh r0, [r3, r4] + cmp r1, r0 + bne _080DBBA4 + ldr r0, _080DBB9C + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r3, r2] + ldr r0, [r0, #0x14] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #2] + ldr r0, _080DBBA0 + str r0, [r3, #0x1c] + b _080DBBAA + .align 2, 0 +_080DBB9C: .4byte gUnknown_2039BD4 +_080DBBA0: .4byte sub_08007140 +_080DBBA4: + ldrh r0, [r3, #0x32] + adds r0, r2, r0 + strh r0, [r3, #0x24] +_080DBBAA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DBB6C + + thumb_func_start sub_080DBBB0 +sub_080DBBB0: @ 0x080DBBB0 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r6, _080DBBE4 + ldr r5, _080DBBE8 + ldr r4, _080DBBEC + ldr r3, _080DBBF0 +_080DBBBC: + ldr r0, [r5] + ldr r1, [r0, #0x14] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r0, r2, r3 + ldrb r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + strh r0, [r1, #0x22] + adds r2, #1 + cmp r2, #3 + ble _080DBBBC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DBBE4: .4byte gUnknown_20205AC +_080DBBE8: .4byte gUnknown_2039BD4 +_080DBBEC: .4byte gUnknown_85609D0 +_080DBBF0: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DBBB0 + + thumb_func_start sub_080DBBF4 +sub_080DBBF4: @ 0x080DBBF4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r3, #0 + ldr r7, _080DBC24 + ldr r5, _080DBC28 + ldr r4, _080DBC2C + movs r2, #0 +_080DBC04: + adds r0, r3, r7 + ldrb r0, [r0] + cmp r0, #1 + bls _080DBC46 + cmp r6, #0 + bne _080DBC30 + ldr r0, [r4] + ldr r0, [r0, #0x14] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xb4 + b _080DBC44 + .align 2, 0 +_080DBC24: .4byte gUnknown_2039BC6 +_080DBC28: .4byte gUnknown_20205AC +_080DBC2C: .4byte gUnknown_2039BD4 +_080DBC30: + ldr r0, [r4] + ldr r0, [r0, #0x14] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x80 + lsls r1, r1, #1 +_080DBC44: + strh r1, [r0, #0x20] +_080DBC46: + adds r2, #4 + adds r3, #1 + cmp r3, #3 + ble _080DBC04 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080DBBF4 + + thumb_func_start sub_080DBC54 +sub_080DBC54: @ 0x080DBC54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080DBCD8 + bl sub_0800845C + movs r5, #0 + ldr r7, _080DBCDC + ldr r0, _080DBCE0 + mov r8, r0 + movs r6, #0 +_080DBC6A: + lsls r0, r5, #3 + ldr r1, _080DBCE4 + adds r0, r0, r1 + bl sub_08034388 + ldr r0, _080DBCE8 + adds r0, r6, r0 + ldr r2, _080DBCEC + ldr r1, _080DBCF0 + adds r1, r5, r1 + ldrb r1, [r1] + adds r1, r1, r2 + ldrb r2, [r1] + movs r1, #0xcc + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + ldr r1, [r1, #0x14] + lsls r4, r5, #2 + adds r1, r4, r1 + strb r0, [r1, #1] + ldr r0, [r7] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldr r1, _080DBCF4 + bl sub_0800858C + ldr r0, [r7] + ldr r0, [r0, #0x14] + adds r4, r4, r0 + ldrb r1, [r4, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r6, #0x18 + adds r5, #1 + cmp r5, #3 + ble _080DBC6A + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBCD8: .4byte gUnknown_8560A6C +_080DBCDC: .4byte gUnknown_2039BD4 +_080DBCE0: .4byte gUnknown_20205AC +_080DBCE4: .4byte gUnknown_8560A4C +_080DBCE8: .4byte gUnknown_8560A7C +_080DBCEC: .4byte gUnknown_85609D4 +_080DBCF0: .4byte gUnknown_2039BC6 +_080DBCF4: .4byte gUnknown_8560AE4 + thumb_func_end sub_080DBC54 + + thumb_func_start sub_080DBCF8 +sub_080DBCF8: @ 0x080DBCF8 + push {lr} + ldr r0, _080DBD38 + bl sub_08034388 + ldr r0, _080DBD3C + bl sub_0800845C + ldr r0, _080DBD40 + movs r1, #0x1e + movs r2, #0x2c + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DBD44 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r2, [r1] + movs r3, #4 + orrs r2, r3 + strb r2, [r1] + ldr r1, _080DBD48 + ldr r1, [r1] + ldr r1, [r1] + adds r1, #0x58 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080DBD38: .4byte gUnknown_8560B14 +_080DBD3C: .4byte gUnknown_8560B1C +_080DBD40: .4byte gUnknown_8560B2C +_080DBD44: .4byte gUnknown_20205AC +_080DBD48: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DBCF8 + + thumb_func_start sub_080DBD4C +sub_080DBD4C: @ 0x080DBD4C + push {r4, lr} + ldr r0, _080DBD88 + movs r1, #0x1e + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DBD8C + ldr r1, [r1] + ldr r1, [r1] + strb r0, [r1, #0xd] + movs r2, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r4, _080DBD90 + movs r3, #0xff +_080DBD6E: + lsls r0, r2, #3 + adds r0, r0, r1 + adds r0, r0, r4 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080DBD6E + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBD88: .4byte sub_080DBE8C +_080DBD8C: .4byte gUnknown_2039BD4 +_080DBD90: .4byte gUnknown_3005B68 + thumb_func_end sub_080DBD4C + + thumb_func_start sub_080DBD94 +sub_080DBD94: @ 0x080DBD94 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080DBDD0 + ldr r1, _080DBDD4 + ldr r5, [r1] + ldr r1, [r5] + ldrb r2, [r1, #0xd] + lsls r1, r2, #2 + adds r1, r1, r2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, #8 + adds r1, r1, r3 + movs r4, #0 + strh r4, [r1] + lsls r0, r0, #2 + adds r0, #1 + lsls r0, r0, #1 + ldr r1, [r5] + ldrb r2, [r1, #0xd] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r3 + strh r4, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBDD0: .4byte gUnknown_3005B60 +_080DBDD4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DBD94 + + thumb_func_start sub_080DBDD8 +sub_080DBDD8: @ 0x080DBDD8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080DBE00 + movs r1, #0x1f + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DBE04 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBE00: .4byte sub_080DBE08 +_080DBE04: .4byte gUnknown_3005B60 + thumb_func_end sub_080DBDD8 + + thumb_func_start sub_080DBE08 +sub_080DBE08: @ 0x080DBE08 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r2, _080DBE80 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #8] + adds r5, r0, #0 + ldr r0, _080DBE84 + ldr r4, [r0] + ldr r0, [r4] + ldrb r1, [r0, #0xd] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r7, r2, #0 + adds r7, #8 + adds r1, r0, r7 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080DBE40 + cmp r0, #0xff + bne _080DBE7A +_080DBE40: + movs r3, #0 + movs r0, #0xff + strh r0, [r1] + lsls r1, r5, #2 + adds r1, #1 + lsls r1, r1, #1 + ldr r0, [r4] + ldrb r2, [r0, #0xd] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r7 + strh r3, [r1] + ldr r0, [r4] + adds r0, #0x14 + adds r0, r0, r5 + ldrb r0, [r0] + adds r0, #5 + lsls r0, r0, #4 + adds r0, #6 + ldr r3, _080DBE88 + movs r1, #2 + movs r2, #0 + bl sub_0806F410 + adds r0, r6, #0 + bl sub_080A8964 +_080DBE7A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBE80: .4byte gUnknown_3005B60 +_080DBE84: .4byte gUnknown_2039BD4 +_080DBE88: .4byte 0x00004BFF + thumb_func_end sub_080DBE08 + + thumb_func_start sub_080DBE8C +sub_080DBE8C: @ 0x080DBE8C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + mov sb, r1 + lsls r7, r1, #3 + ldr r0, _080DBEDC + mov r8, r0 + movs r1, #8 + rsbs r1, r1, #0 + add r1, r8 + mov sl, r1 +_080DBEB0: + lsls r0, r6, #0x1a + lsrs r3, r0, #0x18 + lsls r0, r3, #1 + adds r0, r0, r7 + mov r4, r8 + adds r2, r0, r4 + ldrh r4, [r2] + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r0, #0xff + beq _080DBF2E + adds r0, r3, #1 + lsls r1, r0, #1 + adds r1, r1, r7 + add r1, r8 + movs r5, #0 + ldrsh r1, [r1, r5] + adds r5, r0, #0 + cmp r1, #0 + bne _080DBEE0 + adds r0, r4, #1 + b _080DBEE2 + .align 2, 0 +_080DBEDC: .4byte gUnknown_3005B68 +_080DBEE0: + subs r0, r4, #1 +_080DBEE2: + strh r0, [r2] + lsls r1, r3, #1 + mov r0, sb + lsls r2, r0, #3 + adds r0, r1, r2 + mov r3, sl + adds r3, #8 + adds r0, r0, r3 + movs r4, #0 + ldrsh r0, [r0, r4] + adds r4, r1, #0 + cmp r0, #0x10 + beq _080DBF00 + cmp r0, #0 + bne _080DBF0E +_080DBF00: + lsls r0, r5, #1 + adds r0, r0, r2 + adds r0, r0, r3 + ldrh r1, [r0] + movs r2, #1 + eors r1, r2 + strh r1, [r0] +_080DBF0E: + ldr r0, _080DBF48 + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x14 + adds r0, r0, r6 + ldrb r0, [r0] + adds r0, #5 + lsls r0, r0, #4 + adds r0, #6 + adds r1, r4, r7 + add r1, r8 + ldrb r2, [r1] + movs r1, #2 + ldr r3, _080DBF4C + bl sub_0806F410 +_080DBF2E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _080DBEB0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DBF48: .4byte gUnknown_2039BD4 +_080DBF4C: .4byte 0x00004BFF + thumb_func_end sub_080DBE8C + + thumb_func_start sub_080DBF50 +sub_080DBF50: @ 0x080DBF50 + push {r4, lr} + ldr r0, _080DBF78 + movs r1, #0x1e + bl sub_080A8878 + ldr r1, _080DBF7C + ldr r1, [r1] + ldr r1, [r1] + strb r0, [r1, #0xe] + movs r4, #0 +_080DBF64: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DBF80 + adds r4, #1 + cmp r4, #3 + ble _080DBF64 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DBF78: .4byte sub_080DC034 +_080DBF7C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DBF50 + + thumb_func_start sub_080DBF80 +sub_080DBF80: @ 0x080DBF80 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _080DBFC0 + ldr r1, _080DBFC4 + ldr r4, [r1] + ldr r1, [r4] + ldrb r2, [r1, #0xe] + lsls r1, r2, #2 + adds r1, r1, r2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, #8 + adds r1, r1, r3 + movs r5, #0 + movs r2, #0xff + strh r2, [r1] + lsls r0, r0, #2 + adds r0, #1 + lsls r0, r0, #1 + ldr r1, [r4] + ldrb r2, [r1, #0xe] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r3 + strh r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DBFC0: .4byte gUnknown_3005B60 +_080DBFC4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DBF80 + + thumb_func_start sub_080DBFC8 +sub_080DBFC8: @ 0x080DBFC8 + push {r4, lr} + movs r4, #0 +_080DBFCC: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DBFE0 + adds r4, #1 + cmp r4, #3 + ble _080DBFCC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DBFC8 + + thumb_func_start sub_080DBFE0 +sub_080DBFE0: @ 0x080DBFE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080DBF80 + adds r0, r4, #5 + lsls r2, r0, #5 + ldr r3, _080DC024 + adds r6, r2, r3 + ldr r5, _080DC028 + adds r2, r2, r5 + ldr r1, _080DC02C + str r6, [r1] + str r2, [r1, #4] + ldr r2, _080DC030 + str r2, [r1, #8] + ldr r6, [r1, #8] + lsls r0, r0, #4 + adds r4, #0xc + adds r0, r0, r4 + lsls r0, r0, #1 + subs r3, #0x14 + adds r3, r0, r3 + subs r5, #0x14 + adds r0, r0, r5 + str r3, [r1] + str r0, [r1, #4] + str r2, [r1, #8] + ldr r0, [r1, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DC024: .4byte gUnknown_20373C8 +_080DC028: .4byte gUnknown_20377C8 +_080DC02C: .4byte 0x040000D4 +_080DC030: .4byte 0x80000001 + thumb_func_end sub_080DBFE0 + + thumb_func_start sub_080DC034 +sub_080DC034: @ 0x080DC034 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r7, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + mov sb, r1 + lsls r6, r1, #3 + ldr r0, _080DC09C + mov r8, r0 + ldr r1, _080DC0A0 + mov sl, r1 +_080DC054: + lsls r0, r7, #0x1a + lsrs r3, r0, #0x18 + lsls r0, r3, #1 + adds r0, r0, r6 + mov r4, r8 + adds r2, r0, r4 + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r0, #0xff + beq _080DC0FA + adds r0, r3, #2 + lsls r0, r0, #1 + adds r0, r0, r6 + adds r1, r0, r4 + ldrh r0, [r1] + adds r0, #1 + movs r4, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080DC0FA + strh r4, [r1] + adds r0, r3, #1 + lsls r1, r0, #1 + adds r1, r1, r6 + add r1, r8 + movs r4, #0 + ldrsh r1, [r1, r4] + adds r4, r0, #0 + cmp r1, #0 + bne _080DC0A4 + ldrh r0, [r2] + adds r0, #1 + b _080DC0A8 + .align 2, 0 +_080DC09C: .4byte gUnknown_3005B68 +_080DC0A0: .4byte 0x00004BFF +_080DC0A4: + ldrh r0, [r2] + subs r0, #1 +_080DC0A8: + strh r0, [r2] + lsls r1, r3, #1 + mov r5, sb + lsls r2, r5, #3 + adds r0, r1, r2 + ldr r3, _080DC114 + adds r3, #8 + adds r0, r0, r3 + movs r5, #0 + ldrsh r0, [r0, r5] + adds r5, r1, #0 + cmp r0, #0x10 + beq _080DC0C6 + cmp r0, #0 + bne _080DC0D4 +_080DC0C6: + lsls r0, r4, #1 + adds r0, r0, r2 + adds r0, r0, r3 + ldrh r1, [r0] + movs r2, #1 + eors r1, r2 + strh r1, [r0] +_080DC0D4: + adds r4, r7, #5 + lsls r4, r4, #4 + adds r0, r4, #0 + adds r0, #0xa + adds r5, r5, r6 + add r5, r8 + ldrb r2, [r5] + movs r1, #1 + mov r3, sl + bl sub_0806F410 + adds r4, #0xc + adds r4, r4, r7 + ldrb r2, [r5] + adds r0, r4, #0 + movs r1, #1 + mov r3, sl + bl sub_0806F410 +_080DC0FA: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080DC054 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DC114: .4byte gUnknown_3005B60 + thumb_func_end sub_080DC034 + + thumb_func_start sub_080DC118 +sub_080DC118: @ 0x080DC118 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080DC140 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080DC144 + adds r0, r2, #0 + bl sub_080DBD94 + b _080DC14A + .align 2, 0 +_080DC140: .4byte gUnknown_2039BD4 +_080DC144: + adds r0, r2, #0 + bl sub_080DBDD8 +_080DC14A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DC118 + + thumb_func_start sub_080DC150 +sub_080DC150: @ 0x080DC150 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r6, _080DC2AC + adds r6, r0, r6 + ldrb r0, [r6] + lsls r5, r0, #2 + adds r5, r5, r0 + lsls r5, r5, #0x1b + movs r0, #0x80 + lsls r0, r0, #0x16 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + ldr r1, [sp, #0xc] + lsls r4, r1, #3 + ldr r0, _080DC2B0 + adds r0, r4, r0 + bl sub_08034388 + ldr r0, _080DC2B4 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800845C + ldr r2, [sp, #0xc] + lsls r4, r2, #1 + adds r4, r4, r2 + lsls r4, r4, #3 + ldr r0, _080DC2B8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb8 + adds r2, r5, #0 + movs r3, #0x1d + bl sub_08006B0C + mov sb, r0 + mov r3, sb + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + adds r0, r4, #0 + movs r1, #0xf8 + adds r2, r5, #0 + movs r3, #0x1d + bl sub_08006B0C + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r5, r0, #4 + add r5, r8 + lsls r5, r5, #2 + ldr r1, _080DC2BC + adds r5, r5, r1 + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x40 + ldr r3, _080DC2C0 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _080DC2C4 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + movs r4, #0xc0 + lsls r4, r4, #0x13 + ldrb r0, [r6] + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #6 + ldr r0, _080DC2C8 + adds r3, r3, r0 + ldr r7, _080DC2CC + ldr r0, [r7] + ldr r0, [r0, #0x34] + str r0, [sp] + movs r0, #0 + movs r1, #3 + adds r2, r4, #0 + bl sub_0806F190 + ldrb r0, [r6] + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #6 + ldr r1, _080DC2D0 + adds r3, r3, r1 + ldr r0, [r7] + ldr r0, [r0, #0x38] + str r0, [sp] + movs r0, #0 + movs r1, #3 + adds r2, r4, #0 + bl sub_0806F190 + movs r4, #0 + str r4, [sp, #4] + ldr r0, [r7] + ldr r1, [r0, #0x34] + movs r6, #0xa0 + lsls r6, r6, #3 + adds r1, r1, r6 + ldr r2, _080DC2D4 + mov sl, r2 + add r0, sp, #4 + bl CpuSet + str r4, [sp, #8] + add r0, sp, #8 + ldr r1, [r7] + ldr r1, [r1, #0x38] + adds r1, r1, r6 + mov r2, sl + bl CpuSet + ldr r0, [r7] + ldr r0, [r0, #0x34] + mov r3, sb + lsls r4, r3, #4 + add r4, sb + lsls r4, r4, #2 + ldr r1, _080DC2BC + adds r4, r4, r1 + ldrh r1, [r4, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r6, _080DC2D8 + adds r1, r1, r6 + movs r2, #0x80 + lsls r2, r2, #4 + mov sl, r2 + movs r3, #1 + bl sub_08000EF8 + ldr r0, [r7] + ldr r0, [r0, #0x38] + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + adds r1, r1, r6 + mov r2, sl + movs r3, #1 + bl sub_08000EF8 + mov r3, r8 + strh r3, [r4, #0x2e] + mov r0, sb + strh r0, [r5, #0x2e] + mov r1, sp + ldrh r1, [r1, #0xc] + strh r1, [r4, #0x30] + mov r2, sp + ldrh r2, [r2, #0xc] + strh r2, [r5, #0x30] + mov r0, sb + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080DC2AC: .4byte gUnknown_2039BC6 +_080DC2B0: .4byte gUnknown_8562888 +_080DC2B4: .4byte gUnknown_85628A8 +_080DC2B8: .4byte gUnknown_8562910 +_080DC2BC: .4byte gUnknown_20205AC +_080DC2C0: .4byte 0x000003FF +_080DC2C4: .4byte 0xFFFFFC00 +_080DC2C8: .4byte 0x0600E026 +_080DC2CC: .4byte gUnknown_2039BD4 +_080DC2D0: .4byte 0x0600E036 +_080DC2D4: .4byte 0x050000C0 +_080DC2D8: .4byte 0x06010000 + thumb_func_end sub_080DC150 + + thumb_func_start sub_080DC2DC +sub_080DC2DC: @ 0x080DC2DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DC314 + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + adds r5, r5, r1 + ldrh r0, [r5, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r1 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_08007338 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC314: .4byte gUnknown_20205AC + thumb_func_end sub_080DC2DC + + thumb_func_start sub_080DC318 +sub_080DC318: @ 0x080DC318 + push {lr} + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080DC330 + movs r0, #0x52 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080DC330: .4byte 0x00000907 + thumb_func_end sub_080DC318 + + thumb_func_start sub_080DC334 +sub_080DC334: @ 0x080DC334 + push {lr} + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DC334 + + thumb_func_start sub_080DC34C +sub_080DC34C: @ 0x080DC34C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r4, r0, #0 + mov sb, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + bl sub_080DC318 + ldr r0, _080DC3C4 + ldr r1, [r0] + ldr r2, _080DC3C8 + mov r8, r2 + lsls r6, r4, #4 + adds r6, r6, r4 + lsls r6, r6, #2 + adds r0, r6, r2 + movs r3, #0x30 + ldrsh r2, [r0, r3] + ldr r1, [r1, #0x14] + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r1, [r2, #2] + movs r3, #2 + orrs r1, r3 + strb r1, [r2, #2] + ldrh r5, [r0, #0x2e] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #1 + bl sub_08007F70 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + mov r1, r8 + adds r0, r4, r1 + movs r1, #1 + bl sub_08007F70 + movs r2, #0x1c + add r8, r2 + add r6, r8 + ldr r0, _080DC3CC + str r0, [r6] + add r4, r8 + ldr r0, _080DC3D0 + str r0, [r4] + mov r3, sb + cmp r3, #0 + bne _080DC3D4 + movs r0, #0x65 + bl sub_080A306C + b _080DC3DA + .align 2, 0 +_080DC3C4: .4byte gUnknown_2039BD4 +_080DC3C8: .4byte gUnknown_20205AC +_080DC3CC: .4byte sub_080DC3E8 +_080DC3D0: .4byte sub_08007140 +_080DC3D4: + movs r0, #2 + bl sub_080A306C +_080DC3DA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DC34C + + thumb_func_start sub_080DC3E8 +sub_080DC3E8: @ 0x080DC3E8 + push {lr} + mov ip, r0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080DC430 + mov r0, ip + ldrh r1, [r0, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080DC434 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _080DC430 + mov r3, ip + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #4 + orrs r0, r2 + strb r0, [r3] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r0, _080DC438 + mov r1, ip + str r0, [r1, #0x1c] +_080DC430: + pop {r0} + bx r0 + .align 2, 0 +_080DC434: .4byte gUnknown_20205AC +_080DC438: .4byte sub_080DC43C + thumb_func_end sub_080DC3E8 + + thumb_func_start sub_080DC43C +sub_080DC43C: @ 0x080DC43C + push {lr} + ldr r1, _080DC468 + ldr r1, [r1] + movs r3, #0x30 + ldrsh r2, [r0, r3] + ldr r1, [r1, #0x14] + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r3, [r2, #2] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r2, #2] + ldrh r0, [r0, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DC2DC + bl sub_080DC334 + pop {r0} + bx r0 + .align 2, 0 +_080DC468: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DC43C + + thumb_func_start sub_080DC46C +sub_080DC46C: @ 0x080DC46C + push {lr} + ldr r0, _080DC484 + movs r1, #0xd0 + lsls r1, r1, #9 + adds r2, r0, r1 + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #1 + bne _080DC488 + movs r0, #0 + b _080DC48A + .align 2, 0 +_080DC484: .4byte gUnknown_2000000 +_080DC488: + movs r0, #1 +_080DC48A: + strb r0, [r2] + movs r1, #0xd0 + lsls r1, r1, #9 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080DC4A2 + bl sub_080DA624 + bl sub_080DAA20 + b _080DC4A6 +_080DC4A2: + bl sub_080DC4AC +_080DC4A6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DC46C + + thumb_func_start sub_080DC4AC +sub_080DC4AC: @ 0x080DC4AC + push {r4, r5, lr} + sub sp, #8 + ldr r0, _080DC4D8 + ldrb r0, [r0] + cmp r0, #0 + beq _080DC5A6 + ldr r0, _080DC4DC + movs r1, #0xd0 + lsls r1, r1, #9 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080DC5A6 + cmp r0, #0 + blt _080DC4E0 + cmp r0, #3 + bgt _080DC4E0 + cmp r0, #2 + blt _080DC4E0 + bl sub_080DEE2C + b _080DC5A6 + .align 2, 0 +_080DC4D8: .4byte gUnknown_2031F75 +_080DC4DC: .4byte gUnknown_2000000 +_080DC4E0: + movs r4, #0 +_080DC4E2: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080DC4E2 + movs r4, #0 +_080DC502: + ldr r0, _080DC5B0 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + mov r2, sp + ldrh r5, [r0, #4] + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080DC52C + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, sp + ldr r1, _080DC5B4 + bl sub_080088B8 + adds r2, r0, #0 +_080DC52C: + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + adds r0, r2, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + ldr r0, _080DC5B8 + adds r0, r4, r0 + ldrb r0, [r0] + adds r0, #4 + mov r1, sp + bl sub_080DE2D4 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080DC502 + movs r4, #0 +_080DC554: + ldr r0, _080DC5B0 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + mov r2, sp + ldrh r5, [r0, #2] + movs r1, #2 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080DC57E + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, sp + ldr r1, _080DC5B4 + bl sub_080088B8 + adds r2, r0, #0 +_080DC57E: + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + adds r0, r2, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + ldr r0, _080DC5B8 + adds r0, r4, r0 + ldrb r0, [r0] + mov r1, sp + bl sub_080DE2D4 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080DC554 + bl sub_080DAA20 +_080DC5A6: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC5B0: .4byte gUnknown_2039BD4 +_080DC5B4: .4byte gUnknown_85C9401 +_080DC5B8: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DC4AC + + thumb_func_start sub_080DC5BC +sub_080DC5BC: @ 0x080DC5BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + add r4, sp, #4 + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl memset + movs r5, #0 + add r4, sp, #4 + adds r6, r4, #0 + movs r7, #0 +_080DC5E2: + bl sub_0806F050 + adds r1, r0, #0 + mov r0, sp + adds r0, r0, r7 + adds r0, #4 + strh r1, [r0] + movs r2, #0 + cmp r2, r5 + bge _080DC61A + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + ldrh r1, [r1, #4] + cmp r0, r1 + beq _080DC614 +_080DC602: + adds r2, #1 + cmp r2, r5 + bge _080DC61A + lsls r0, r2, #1 + adds r0, r4, r0 + ldrh r1, [r6] + ldrh r0, [r0] + cmp r1, r0 + bne _080DC602 +_080DC614: + subs r6, #2 + subs r7, #2 + subs r5, #1 +_080DC61A: + adds r6, #2 + adds r7, #2 + adds r5, #1 + cmp r5, #3 + ble _080DC5E2 + mov r2, r8 + cmp r2, #0 + bne _080DC6E4 + movs r5, #0 + ldr r3, _080DC69C + mov r8, r3 +_080DC630: + mov r6, r8 + strb r5, [r6] + movs r4, #0 + cmp r4, r5 + bge _080DC6AC + ldr r7, _080DC6A0 + mov sb, r7 + lsls r0, r5, #1 + adds r1, r0, #0 + add r1, sb + mov ip, r1 + mov r2, sp + adds r2, #4 + str r2, [sp, #0xc] + add r0, sp + adds r0, #4 + str r0, [sp, #0x10] + ldr r3, _080DC69C + adds r6, r3, #0 + mov sl, r6 +_080DC658: + ldrb r0, [r3] + lsls r2, r0, #1 + mov r7, sb + adds r0, r2, r7 + movs r6, #0 + ldrsh r1, [r0, r6] + mov r7, ip + movs r6, #0 + ldrsh r0, [r7, r6] + cmp r1, r0 + blt _080DC680 + cmp r1, r0 + bne _080DC6A4 + ldr r7, [sp, #0xc] + adds r0, r7, r2 + ldrh r0, [r0] + ldr r1, [sp, #0x10] + ldrh r1, [r1] + cmp r0, r1 + bhs _080DC6A4 +_080DC680: + adds r2, r5, #0 + cmp r5, r4 + ble _080DC698 + subs r0, r5, #1 + mov r6, sl + adds r1, r0, r6 +_080DC68C: + ldrb r0, [r1] + strb r0, [r1, #1] + subs r1, #1 + subs r2, #1 + cmp r2, r4 + bgt _080DC68C +_080DC698: + strb r5, [r3] + b _080DC6AC + .align 2, 0 +_080DC69C: .4byte gUnknown_2039BC6 +_080DC6A0: .4byte gUnknown_2039BA0 +_080DC6A4: + adds r3, #1 + adds r4, #1 + cmp r4, r5 + blt _080DC658 +_080DC6AC: + cmp r4, r5 + bne _080DC6B4 + mov r7, r8 + strb r5, [r7] +_080DC6B4: + movs r0, #1 + add r8, r0 + adds r5, #1 + cmp r5, #3 + ble _080DC630 + ldr r4, _080DC6E0 + mov r0, sp + adds r1, r4, #0 + movs r2, #4 + bl memcpy + movs r5, #0 +_080DC6CC: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + adds r0, r0, r4 + strb r5, [r0] + adds r5, #1 + cmp r5, #3 + ble _080DC6CC + b _080DC798 + .align 2, 0 +_080DC6E0: .4byte gUnknown_2039BC6 +_080DC6E4: + mov r0, sp + movs r1, #0xff + movs r2, #4 + bl memset + movs r5, #0 + ldr r3, _080DC708 + movs r6, #0 +_080DC6F4: + ldr r0, _080DC70C + ldr r0, [r0] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrb r0, [r0, #0xb] + lsls r0, r0, #0x1e + lsrs r2, r0, #0x1e + mov r7, sp + adds r1, r7, r2 + b _080DC71A + .align 2, 0 +_080DC708: .4byte gUnknown_2039BC6 +_080DC70C: .4byte gUnknown_2039BD4 +_080DC710: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + mov r0, sp + adds r1, r0, r2 +_080DC71A: + ldrb r0, [r1] + cmp r0, #0xff + bne _080DC710 + strb r5, [r1] + strb r2, [r3] + adds r3, #1 + adds r6, #0x1c + adds r5, #1 + cmp r5, #3 + ble _080DC6F4 + movs r5, #0 +_080DC730: + movs r4, #3 + adds r1, r5, #1 + mov sl, r1 + cmp r4, r5 + ble _080DC792 + mov sb, r4 + ldr r2, _080DC7A8 + mov r8, r2 + add r3, sp, #4 + mov ip, r3 +_080DC744: + ldr r6, _080DC7AC + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r1, r0, #0 + subs r1, #0x1c + ldrb r2, [r1, #0xb] + ldrb r3, [r0, #0xb] + mov r1, sb + ands r1, r2 + mov r0, sb + ands r0, r3 + subs r3, r4, #1 + cmp r1, r0 + bne _080DC78C + mov r0, r8 + adds r7, r3, r0 + adds r2, r4, r0 + ldrb r6, [r7] + ldrb r1, [r2] + cmp r6, r1 + bhs _080DC78C + lsls r0, r3, #1 + add r0, ip + lsls r1, r4, #1 + add r1, ip + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bhs _080DC78C + ldrb r0, [r2] + strb r6, [r2] + strb r0, [r7] +_080DC78C: + adds r4, r3, #0 + cmp r4, r5 + bgt _080DC744 +_080DC792: + mov r5, sl + cmp r5, #2 + ble _080DC730 +_080DC798: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DC7A8: .4byte gUnknown_2039BC6 +_080DC7AC: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DC5BC + + thumb_func_start sub_080DC7B0 +sub_080DC7B0: @ 0x080DC7B0 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0xa0 +_080DC7B6: + ldr r0, _080DC7DC + adds r0, r5, r0 + ldr r1, _080DC7E0 + adds r1, r4, r1 + ldrb r1, [r1] + adds r1, #5 + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + adds r5, #0x20 + adds r4, #1 + cmp r4, #3 + ble _080DC7B6 + bl sub_080DA624 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DC7DC: .4byte gUnknown_201A004 +_080DC7E0: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DC7B0 + + thumb_func_start sub_080DC7E4 +sub_080DC7E4: @ 0x080DC7E4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _080DC86C + ldr r3, [r4] + ldr r1, [r3, #4] + lsls r7, r6, #3 + subs r0, r7, r6 + lsls r5, r0, #2 + adds r1, r5, r1 + movs r2, #0 + strh r2, [r1, #2] + ldr r0, [r3, #4] + adds r0, r5, r0 + strh r2, [r0] + adds r0, r6, #0 + bl sub_080DB1CC + lsls r0, r0, #0x18 + mov r8, r4 + cmp r0, #0 + bne _080DC818 + b _080DCB28 +_080DC818: + ldr r0, [r4] + ldr r1, [r0, #4] + adds r1, r5, r1 + ldrh r0, [r1, #6] + ldr r2, _080DC870 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0] + mov sb, r2 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + strb r0, [r1, #0xa] + ldr r0, [r4] + ldr r0, [r0, #4] + adds r2, r5, r0 + ldrh r0, [r2, #6] + ldrh r1, [r2, #8] + cmp r0, r1 + bne _080DC874 + cmp r0, #0 + beq _080DC874 + ldrb r0, [r2, #0x15] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x15] + ldr r0, [r4] + ldr r2, [r0, #4] + adds r2, r5, r2 + ldrb r3, [r2, #0xb] + lsls r1, r3, #0x19 + lsrs r1, r1, #0x1d + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0xb] + b _080DC890 + .align 2, 0 +_080DC86C: .4byte gUnknown_2039BD4 +_080DC870: .4byte gUnknown_8565FCC +_080DC874: + ldr r4, _080DC944 + ldr r0, [r4] + ldr r0, [r0, #4] + lsls r3, r6, #3 + subs r1, r3, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #0xb] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xb] + mov r8, r4 + adds r7, r3, #0 +_080DC890: + mov r2, r8 + ldr r4, [r2] + ldr r2, [r4, #4] + subs r0, r7, r6 + lsls r0, r0, #2 + adds r2, r0, r2 + ldr r3, _080DC948 + mov r1, sb + lsls r5, r1, #2 + adds r3, r5, r3 + ldrb r1, [r3, #1] + strh r1, [r2] + ldr r1, [r4, #4] + adds r0, r0, r1 + ldrh r1, [r0] + strh r1, [r0, #2] + ldr r1, [r4, #8] + ldrb r0, [r3, #2] + strh r0, [r1, #4] + ldr r1, [r4, #8] + ldrh r0, [r1, #4] + strh r0, [r1, #6] + ldr r0, [r4, #8] + strb r6, [r0, #0x11] + movs r2, #0 + mov sb, r5 + mov r4, r8 + movs r3, #0 + movs r1, #0 +_080DC8CA: + ldr r0, [r4] + ldr r0, [r0, #4] + adds r0, r1, r0 + strb r3, [r0, #0xe] + ldr r0, [r4] + ldr r0, [r0, #8] + adds r0, #0xd + adds r0, r0, r2 + strb r3, [r0] + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + ble _080DC8CA + ldr r5, _080DC944 + ldr r0, [r5] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r4, r0, #2 + adds r2, r4, r1 + ldrb r1, [r2, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080DC918 + ldrh r0, [r2, #8] + ldrh r1, [r2, #6] + bl sub_080E4BF0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080DC918 + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x15] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x15] +_080DC918: + ldr r0, _080DC94C + add r0, sb + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080DC944 + ldr r0, [r0] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #0x10] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0x10 + bne _080DC950 + ldrh r1, [r2, #2] + subs r1, #0xa + movs r0, #0xd + ldrsb r0, [r2, r0] + b _080DC96A + .align 2, 0 +_080DC944: .4byte gUnknown_2039BD4 +_080DC948: .4byte gUnknown_8566AE4 +_080DC94C: .4byte gUnknown_8566BE4 +_080DC950: + ldrb r1, [r2, #0x11] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080DC964 + movs r1, #0xd + ldrsb r1, [r2, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + b _080DC968 +_080DC964: + movs r0, #0xd + ldrsb r0, [r2, r0] +_080DC968: + ldrh r1, [r2, #2] +_080DC96A: + adds r0, r0, r1 + strh r0, [r2, #2] + ldr r5, _080DC9FC + ldr r0, [r5] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r4, r0, #2 + adds r1, r4, r1 + movs r0, #0 + strb r0, [r1, #0x16] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x15] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x15] + adds r0, r6, #0 + bl sub_080DD94C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DCA46 + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrh r0, [r1, #8] + ldrh r1, [r1, #6] + bl sub_080E4BF0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _080DCA00 + ldr r0, [r5] + ldr r0, [r0, #4] + adds r2, r4, r0 + ldrb r1, [r2, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080DCA00 + strb r3, [r2, #0x16] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r1, #0x15] + movs r2, #0x40 + orrs r0, r2 + strb r0, [r1, #0x15] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r2, [r1, #0x15] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x15] + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + movs r1, #0 + ldrsh r2, [r0, r1] + ldrb r1, [r0, #0x16] + muls r1, r2, r1 + strb r1, [r0, #0x17] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r1, #0x15] + movs r2, #8 + b _080DCA2C + .align 2, 0 +_080DC9FC: .4byte gUnknown_2039BD4 +_080DCA00: + ldr r2, _080DCA34 + ldr r5, _080DCA38 + ldr r0, [r5] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r4, r0, #2 + adds r3, r4, r1 + ldrh r0, [r3, #6] + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _080DCA3C + ldrb r0, [r3, #0x15] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3, #0x15] + ldr r0, [r5] + ldr r1, [r0, #4] + adds r1, r4, r1 + ldrb r0, [r1, #0x15] + movs r2, #0x40 +_080DCA2C: + orrs r0, r2 + strb r0, [r1, #0x15] + b _080DCA46 + .align 2, 0 +_080DCA34: .4byte gUnknown_8565FCC +_080DCA38: .4byte gUnknown_2039BD4 +_080DCA3C: + ldrb r1, [r3, #0x15] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #0x15] +_080DCA46: + ldr r5, _080DCAE4 + ldr r0, [r5] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r4, r0, #2 + adds r2, r4, r1 + ldrb r1, [r2, #0x15] + movs r0, #1 + mov r8, r0 + ands r0, r1 + cmp r0, #0 + beq _080DCA6E + ldrb r0, [r2, #0xb] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1d + adds r0, #1 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + strb r1, [r2, #0x18] +_080DCA6E: + ldr r0, [r5] + ldr r0, [r0, #4] + adds r2, r4, r0 + ldrb r1, [r2, #0xc] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + beq _080DCA98 + ldrb r1, [r2, #0x15] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x15] + ldr r2, [r5] + ldr r0, [r2, #4] + adds r0, r4, r0 + movs r1, #0 + strh r1, [r0, #2] + ldr r0, [r2, #4] + adds r0, r4, r0 + strh r1, [r0] +_080DCA98: + ldr r0, [r5] + ldr r0, [r0, #4] + adds r0, r4, r0 + ldrh r0, [r0, #6] + bl sub_080DD154 + ldr r1, [r5] + ldr r1, [r1, #0x10] + strb r0, [r1] + ldr r2, [r5] + ldr r0, [r2, #4] + adds r0, r4, r0 + ldrb r1, [r0, #0x11] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080DCAC0 + ldr r0, [r2, #0x10] + mov r1, r8 + strb r1, [r0] +_080DCAC0: + ldr r1, [r5] + ldr r3, [r1, #0x10] + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + ble _080DCAEC + ldr r0, [r1] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r3, r1] + adds r0, r0, r1 + cmp r0, #4 + ble _080DCAE8 + movs r0, #0x3c + b _080DCAEE + .align 2, 0 +_080DCAE4: .4byte gUnknown_2039BD4 +_080DCAE8: + movs r0, #0xa + b _080DCAEE +_080DCAEC: + movs r0, #0 +_080DCAEE: + strb r0, [r3, #2] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + b _080DCB12 +_080DCB06: + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080DCB0C: + adds r2, #1 + cmp r2, #3 + bgt _080DCB1A +_080DCB12: + cmp r2, r6 + beq _080DCB0C + cmp r0, #0 + bne _080DCB06 +_080DCB1A: + ldr r0, _080DCB34 + ldr r0, [r0] + ldr r1, [r0, #4] + subs r0, r7, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r2, [r0, #0x1b] +_080DCB28: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DCB34: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DC7E4 + + thumb_func_start sub_080DCB38 +sub_080DCB38: @ 0x080DCB38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DCB50 + ldr r2, [r2] + ldr r3, [r2, #4] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + strb r1, [r2, #0x13] + bx lr + .align 2, 0 +_080DCB50: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCB38 + + thumb_func_start sub_080DCB54 +sub_080DCB54: @ 0x080DCB54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DCB6C + ldr r2, [r2] + ldr r3, [r2, #4] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + strb r1, [r2, #0x14] + bx lr + .align 2, 0 +_080DCB6C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCB54 + + thumb_func_start sub_080DCB70 +sub_080DCB70: @ 0x080DCB70 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #0x3b + bls _080DCB8A + movs r1, #0x35 + bl sub_080DCB38 + b _080DCBBA +_080DCB8A: + cmp r1, #0x27 + bls _080DCB96 + movs r1, #0x34 + bl sub_080DCB38 + b _080DCBBA +_080DCB96: + cmp r1, #0x1d + bls _080DCBA2 + movs r1, #0x33 + bl sub_080DCB38 + b _080DCBBA +_080DCBA2: + cmp r1, #0x13 + bls _080DCBAE + movs r1, #0x32 + bl sub_080DCB38 + b _080DCBBA +_080DCBAE: + cmp r2, #9 + bls _080DCBBA + adds r0, r3, #0 + movs r1, #0x31 + bl sub_080DCB38 +_080DCBBA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DCB70 + + thumb_func_start sub_080DCBC0 +sub_080DCBC0: @ 0x080DCBC0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r0, _080DCC20 + lsls r1, r4, #6 + ldr r2, _080DCC24 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080DCC28 + ldr r5, _080DCC2C + ldr r1, [r5] + ldr r2, [r1, #4] + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #6] + lsls r1, r1, #3 + ldr r2, _080DCC30 + adds r1, r1, r2 + bl sub_080088B8 + ldr r3, _080DCC34 + ldr r1, [r5] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #1] + lsls r1, r0, #0x1d + cmp r1, #0 + bne _080DCC40 + ldr r0, _080DCC38 + ldr r1, _080DCC3C + bl sub_080088B8 + b _080DCC90 + .align 2, 0 +_080DCC20: .4byte gUnknown_2021C40 +_080DCC24: .4byte gUnknown_2039AA2 +_080DCC28: .4byte gUnknown_2021C54 +_080DCC2C: .4byte gUnknown_2039BD4 +_080DCC30: .4byte gUnknown_82EACC4 +_080DCC34: .4byte gUnknown_8565FCC +_080DCC38: .4byte gUnknown_2021C68 +_080DCC3C: .4byte gUnknown_824C0D2 +_080DCC40: + lsrs r0, r1, #0x1d + cmp r0, #1 + bne _080DCC58 + ldr r0, _080DCC50 + ldr r1, _080DCC54 + bl sub_080088B8 + b _080DCC90 + .align 2, 0 +_080DCC50: .4byte gUnknown_2021C68 +_080DCC54: .4byte gUnknown_824C0D7 +_080DCC58: + lsrs r0, r1, #0x1d + cmp r0, #2 + bne _080DCC70 + ldr r0, _080DCC68 + ldr r1, _080DCC6C + bl sub_080088B8 + b _080DCC90 + .align 2, 0 +_080DCC68: .4byte gUnknown_2021C68 +_080DCC6C: .4byte gUnknown_824C0DC +_080DCC70: + lsrs r0, r1, #0x1d + cmp r0, #3 + bne _080DCC88 + ldr r0, _080DCC80 + ldr r1, _080DCC84 + bl sub_080088B8 + b _080DCC90 + .align 2, 0 +_080DCC80: .4byte gUnknown_2021C68 +_080DCC84: .4byte gUnknown_824C0E1 +_080DCC88: + ldr r0, _080DCCB4 + ldr r1, _080DCCB8 + bl sub_080088B8 +_080DCC90: + ldr r4, _080DCCBC + ldr r1, _080DCCC0 + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + bl sub_080DB000 + adds r0, r4, #0 + movs r1, #1 + bl sub_080DE338 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DCCB4: .4byte gUnknown_2021C68 +_080DCCB8: .4byte gUnknown_824C0E6 +_080DCCBC: .4byte gUnknown_2021C7C +_080DCCC0: .4byte gUnknown_8560D74 + thumb_func_end sub_080DCBC0 + + thumb_func_start sub_080DCCC4 +sub_080DCCC4: @ 0x080DCCC4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _080DCCF0 + ldr r1, [r4] + ldr r3, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r3, r1, r3 + ldrb r0, [r3, #0xc] + movs r2, #1 + orrs r0, r2 + strb r0, [r3, #0xc] + ldr r0, [r4] + ldr r0, [r0, #4] + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DCCF0: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCCC4 + + thumb_func_start sub_080DCCF4 +sub_080DCCF4: @ 0x080DCCF4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + movs r0, #0 + mov ip, r0 + movs r4, #0 + ldr r1, _080DCD60 + mov sb, r1 + add r2, sp, #4 + mov r6, sb + movs r5, #0 + adds r3, r2, #0 +_080DCD10: + mov r0, sp + adds r1, r0, r4 + adds r0, r4, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, r4 + strb r5, [r0] + adds r4, #1 + cmp r4, #3 + ble _080DCD10 + movs r4, #0 + ldr r7, _080DCD64 + ldr r1, [r7] + mov r8, r1 + adds r5, r2, #0 +_080DCD2E: + movs r2, #0 + mov r0, r8 + ldr r1, [r0, #4] +_080DCD34: + ldrb r0, [r1, #0x19] + cmp r0, r4 + beq _080DCD68 + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + ble _080DCD34 +_080DCD42: + cmp r2, #4 + bne _080DCDE8 + movs r2, #0 + ldrb r0, [r5] + cmp r0, #0 + bne _080DCD76 + ldr r0, [r7] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x19] + cmp r0, #0xff + bne _080DCD76 + mov ip, r2 + movs r2, #1 + b _080DCD9E + .align 2, 0 +_080DCD60: .4byte gUnknown_2039BC6 +_080DCD64: .4byte gUnknown_2039BD4 +_080DCD68: + mov r1, sp + adds r0, r1, r2 + strb r4, [r0] + adds r1, r5, r2 + movs r0, #1 + strb r0, [r1] + b _080DCD42 +_080DCD76: + adds r2, #1 + cmp r2, #3 + bgt _080DCDDA + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080DCD76 + ldr r0, [r7] + ldr r1, [r0, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x19] + cmp r0, #0xff + bne _080DCD76 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + adds r2, #1 +_080DCD9E: + cmp r2, #3 + bgt _080DCDDA + ldr r6, _080DCE38 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r3, r0, #2 +_080DCDAA: + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080DCDD2 + ldr r0, [r7] + ldr r0, [r0, #4] + adds r0, r3, r0 + ldrb r0, [r0, #0x19] + cmp r0, #0xff + bne _080DCDD2 + mov r1, ip + adds r0, r1, r6 + adds r1, r2, r6 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080DCDD2 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 +_080DCDD2: + adds r3, #0x1c + adds r2, #1 + cmp r2, #3 + ble _080DCDAA +_080DCDDA: + mov r0, sp + add r0, ip + strb r4, [r0] + mov r0, ip + adds r1, r5, r0 + movs r0, #1 + strb r0, [r1] +_080DCDE8: + adds r4, #1 + cmp r4, #3 + ble _080DCD2E + movs r4, #0 + ldr r6, _080DCE3C + movs r5, #0 +_080DCDF4: + ldr r0, [r6] + ldr r1, [r0, #8] + adds r1, r1, r4 + mov r0, sp + adds r3, r0, r4 + ldrb r0, [r3] + strb r0, [r1] + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r5, r0 + movs r1, #0xff + strb r1, [r0, #0x19] + ldr r0, [r6] + ldr r1, [r0, #4] + adds r1, r5, r1 + ldrb r2, [r1, #0x10] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1, #0x10] + mov r0, sb + adds r1, r4, r0 + ldrb r0, [r3] + strb r0, [r1] + adds r5, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080DCDF4 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DCE38: .4byte gUnknown_2039BC6 +_080DCE3C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCCF4 + + thumb_func_start sub_080DCE40 +sub_080DCE40: @ 0x080DCE40 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + adds r1, r0, #1 + strh r1, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x54 + ble _080DCE76 + movs r0, #0 + strh r0, [r2, #0x30] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldr r0, _080DCE7C + str r0, [r2, #0x1c] + ldr r0, _080DCE80 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #6] +_080DCE76: + pop {r0} + bx r0 + .align 2, 0 +_080DCE7C: .4byte sub_08007140 +_080DCE80: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCE40 + + thumb_func_start sub_080DCE84 +sub_080DCE84: @ 0x080DCE84 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080DCEA4 + ldr r0, [r0] + ldr r0, [r0] + ldrb r5, [r0, #0x12] + cmp r1, #8 + bls _080DCE98 + b _080DD038 +_080DCE98: + lsls r0, r1, #2 + ldr r1, _080DCEA8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DCEA4: .4byte gUnknown_2039BD4 +_080DCEA8: .4byte _080DCEAC +_080DCEAC: @ jump table + .4byte _080DCED0 @ case 0 + .4byte _080DCED0 @ case 1 + .4byte _080DCF00 @ case 2 + .4byte _080DCF34 @ case 3 + .4byte _080DCF68 @ case 4 + .4byte _080DCF9C @ case 5 + .4byte _080DCFD0 @ case 6 + .4byte _080DD038 @ case 7 + .4byte _080DD004 @ case 8 +_080DCED0: + ldr r0, _080DCEF4 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x2e] + ldr r2, _080DCEF8 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DCEFC + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x20 + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCEF4: .4byte gUnknown_20205AC +_080DCEF8: .4byte 0x000003FF +_080DCEFC: .4byte 0xFFFFFC00 +_080DCF00: + ldr r0, _080DCF28 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #4 + ldr r3, _080DCF2C + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DCF30 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x1f + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCF28: .4byte gUnknown_20205AC +_080DCF2C: .4byte 0x000003FF +_080DCF30: .4byte 0xFFFFFC00 +_080DCF34: + ldr r0, _080DCF5C + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #8 + ldr r3, _080DCF60 + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DCF64 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x1f + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCF5C: .4byte gUnknown_20205AC +_080DCF60: .4byte 0x000003FF +_080DCF64: .4byte 0xFFFFFC00 +_080DCF68: + ldr r0, _080DCF90 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #0xc + ldr r3, _080DCF94 + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DCF98 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x2d + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCF90: .4byte gUnknown_20205AC +_080DCF94: .4byte 0x000003FF +_080DCF98: .4byte 0xFFFFFC00 +_080DCF9C: + ldr r0, _080DCFC4 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #0xc + ldr r3, _080DCFC8 + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DCFCC + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x2d + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCFC4: .4byte gUnknown_20205AC +_080DCFC8: .4byte 0x000003FF +_080DCFCC: .4byte 0xFFFFFC00 +_080DCFD0: + ldr r0, _080DCFF8 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #0x10 + ldr r3, _080DCFFC + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DD000 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x2d + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DCFF8: .4byte gUnknown_20205AC +_080DCFFC: .4byte 0x000003FF +_080DD000: .4byte 0xFFFFFC00 +_080DD004: + ldr r0, _080DD02C + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #0x18 + ldr r3, _080DD030 + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DD034 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0xc3 + bl sub_080A306C + b _080DD05C + .align 2, 0 +_080DD02C: .4byte gUnknown_20205AC +_080DD030: .4byte 0x000003FF +_080DD034: .4byte 0xFFFFFC00 +_080DD038: + ldr r0, _080DD090 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r1, #0x2e] + adds r2, #0x14 + ldr r3, _080DD094 + adds r0, r3, #0 + ands r2, r0 + ldrh r3, [r1, #4] + ldr r0, _080DD098 + ands r0, r3 + orrs r0, r2 + strh r0, [r1, #4] + movs r0, #0x2d + bl sub_080A306C +_080DD05C: + adds r2, r4, #0 + ldr r4, _080DD090 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r1, r2, r4 + movs r0, #0 + strh r0, [r1, #0x30] + adds r1, #0x3e + ldrb r3, [r1] + subs r0, #5 + ands r0, r3 + strb r0, [r1] + adds r4, #0x1c + adds r2, r2, r4 + ldr r0, _080DD09C + str r0, [r2] + ldr r0, _080DD0A0 + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #6] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD090: .4byte gUnknown_20205AC +_080DD094: .4byte 0x000003FF +_080DD098: .4byte 0xFFFFFC00 +_080DD09C: .4byte sub_080DCE40 +_080DD0A0: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DCE84 + + thumb_func_start sub_080DD0A4 +sub_080DD0A4: @ 0x080DD0A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r5, #0 + ldr r6, _080DD140 + ldr r0, _080DD144 + mov sb, r0 + ldr r0, _080DD148 + mov r8, r0 + ldr r7, _080DD14C +_080DD0BA: + ldr r0, [r6] + ldr r1, [r0] + movs r0, #0x13 + ldrsb r0, [r1, r0] + ldr r4, _080DD150 + cmp r5, r0 + bge _080DD0CA + adds r4, #0x40 +_080DD0CA: + adds r0, r1, #0 + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + ldrh r1, [r0, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r0, r5, #0 + adds r0, #0x11 + adds r1, r1, r0 + lsls r1, r1, #5 + add r1, r8 + adds r0, r4, #0 + adds r2, r7, #0 + bl CpuSet + adds r0, r4, #0 + adds r0, #0x20 + ldr r1, [r6] + ldr r1, [r1] + adds r1, #0x58 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, sb + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r2, r5, #0 + adds r2, #0x19 + adds r1, r1, r2 + lsls r1, r1, #5 + add r1, r8 + adds r2, r7, #0 + bl CpuSet + ldr r0, [r6] + ldr r0, [r0] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + ble _080DD12C + bl sub_080DD184 +_080DD12C: + adds r5, #1 + cmp r5, #4 + ble _080DD0BA + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD140: .4byte gUnknown_2039BD4 +_080DD144: .4byte gUnknown_20205AC +_080DD148: .4byte 0x06010000 +_080DD14C: .4byte 0x04000008 +_080DD150: .4byte gUnknown_8D8EBD8 + thumb_func_end sub_080DD0A4 + + thumb_func_start sub_080DD154 +sub_080DD154: @ 0x080DD154 + lsls r0, r0, #0x10 + ldr r3, _080DD178 + ldr r1, _080DD17C + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrb r1, [r0, #1] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + ldr r0, _080DD180 + ldrh r2, [r0] + lsls r0, r2, #2 + adds r0, r0, r2 + adds r1, r1, r0 + adds r1, r1, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_080DD178: .4byte gUnknown_8562970 +_080DD17C: .4byte gUnknown_8565FCC +_080DD180: .4byte gUnknown_2039BCC + thumb_func_end sub_080DD154 + + thumb_func_start sub_080DD184 +sub_080DD184: @ 0x080DD184 + push {r4, r5, lr} + ldr r0, _080DD1B8 + movs r1, #0xa + bl sub_080A8878 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080DD1BC + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r0, #1 + strh r0, [r4, #0xa] + ldr r0, _080DD1C0 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xc] + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080DD1B8: .4byte sub_080DD1C4 +_080DD1BC: .4byte gUnknown_3005B60 +_080DD1C0: .4byte 0x0000ABE2 + thumb_func_end sub_080DD184 + + thumb_func_start sub_080DD1C4 +sub_080DD1C4: @ 0x080DD1C4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080DD1F4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _080DD262 + movs r0, #0 + strh r0, [r2, #8] + movs r3, #0xe + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _080DD1F8 + ldrh r0, [r2, #0x10] + adds r0, #1 + b _080DD1FC + .align 2, 0 +_080DD1F4: .4byte gUnknown_3005B60 +_080DD1F8: + ldrh r0, [r2, #0x10] + subs r0, #1 +_080DD1FC: + strh r0, [r2, #0x10] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + lsls r0, r0, #4 + movs r3, #0x84 + lsls r3, r3, #1 + adds r6, r3, #0 + adds r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #0x10] + ldr r3, _080DD268 + movs r1, #1 + bl sub_0806F410 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080DD22E + cmp r0, #0x10 + bne _080DD262 +_080DD22E: + ldrh r0, [r4, #0xe] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0xe] + ldr r0, _080DD26C + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + bgt _080DD262 + movs r3, #0xc + ldrsh r0, [r4, r3] + lsls r0, r0, #4 + adds r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + movs r2, #0 + movs r3, #0x1f + bl sub_0806F410 + adds r0, r5, #0 + bl sub_080A8964 +_080DD262: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DD268: .4byte 0x00007FFF +_080DD26C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD1C4 + + thumb_func_start sub_080DD270 +sub_080DD270: @ 0x080DD270 + push {r4, lr} + ldr r0, _080DD2C0 + movs r1, #0xa + bl sub_080A8878 + ldr r3, _080DD2C4 + ldr r4, _080DD2C8 + ldr r2, [r4] + ldr r0, [r2] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r1, _080DD2CC + strh r1, [r0, #0x24] + ldr r0, [r2] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, [r4] + ldr r2, [r0] + ldrb r0, [r2, #6] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD2C0: .4byte sub_080DD2D0 +_080DD2C4: .4byte gUnknown_20205AC +_080DD2C8: .4byte gUnknown_2039BD4 +_080DD2CC: .4byte 0x0000FFBA + thumb_func_end sub_080DD270 + + thumb_func_start sub_080DD2D0 +sub_080DD2D0: @ 0x080DD2D0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + ldr r4, _080DD340 + ldr r0, [r4] + ldr r0, [r0] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080DD344 + adds r2, r0, r1 + ldr r0, _080DD348 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r5, #0xd0 + lsls r5, r5, #3 + adds r0, r5, #0 + ldrh r5, [r1, #0x1c] + adds r0, r0, r5 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r5, [r2, #0x24] + adds r0, r0, r5 + strh r0, [r2, #0x24] + ldrb r0, [r1, #0x1c] + strh r0, [r1, #0x1c] + movs r1, #0x24 + ldrsh r0, [r2, r1] + cmp r0, #0 + ble _080DD31C + movs r0, #0 + strh r0, [r2, #0x24] +_080DD31C: + movs r5, #0x24 + ldrsh r0, [r2, r5] + cmp r0, #0 + bne _080DD338 + ldr r0, [r4] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #6] + adds r0, r3, #0 + bl sub_080A8964 +_080DD338: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD340: .4byte gUnknown_2039BD4 +_080DD344: .4byte gUnknown_20205AC +_080DD348: .4byte gUnknown_3005B60 + thumb_func_end sub_080DD2D0 + + thumb_func_start sub_080DD34C +sub_080DD34C: @ 0x080DD34C + push {r4, r5, lr} + ldr r5, _080DD378 + ldr r4, _080DD37C + ldr r0, [r4] + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _080DD380 + ldrb r1, [r2, #6] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _080DD3A4 + .align 2, 0 +_080DD378: .4byte gUnknown_20205AC +_080DD37C: .4byte gUnknown_2039BD4 +_080DD380: + ldr r0, _080DD3AC + movs r1, #0xa + bl sub_080A8878 + ldr r2, [r4] + ldr r0, [r2] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0 + strh r1, [r0, #0x24] + ldr r2, [r2] + ldrb r0, [r2, #6] + movs r1, #0x40 + orrs r0, r1 +_080DD3A4: + strb r0, [r2, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD3AC: .4byte sub_080DD3B0 + thumb_func_end sub_080DD34C + + thumb_func_start sub_080DD3B0 +sub_080DD3B0: @ 0x080DD3B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r5, _080DD430 + ldr r0, [r5] + ldr r0, [r0] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080DD434 + adds r3, r0, r1 + ldr r0, _080DD438 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #3 + adds r2, r2, r0 + movs r1, #0xd0 + lsls r1, r1, #3 + adds r0, r1, #0 + ldrh r1, [r2, #0x1c] + adds r0, r0, r1 + strh r0, [r2, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r3, #0x24] + subs r1, r1, r0 + strh r1, [r3, #0x24] + ldrb r0, [r2, #0x1c] + strh r0, [r2, #0x1c] + movs r2, #0x24 + ldrsh r0, [r3, r2] + movs r1, #0x46 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080DD400 + ldr r0, _080DD43C + strh r0, [r3, #0x24] +_080DD400: + movs r2, #0x24 + ldrsh r0, [r3, r2] + cmp r0, r1 + bne _080DD428 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #6] + adds r0, r4, #0 + bl sub_080A8964 +_080DD428: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD430: .4byte gUnknown_2039BD4 +_080DD434: .4byte gUnknown_20205AC +_080DD438: .4byte gUnknown_3005B60 +_080DD43C: .4byte 0x0000FFBA + thumb_func_end sub_080DD3B0 + + thumb_func_start sub_080DD440 +sub_080DD440: @ 0x080DD440 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080DD478 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DD47C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r1, #8] + ldr r0, _080DD480 + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #6] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2, #6] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DD478: .4byte sub_080DD484 +_080DD47C: .4byte gUnknown_3005B60 +_080DD480: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD440 + + thumb_func_start sub_080DD484 +sub_080DD484: @ 0x080DD484 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080DD4A8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x1c + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080DD4B8 + cmp r0, #1 + bgt _080DD4AC + cmp r0, #0 + beq _080DD4B2 + b _080DD500 + .align 2, 0 +_080DD4A8: .4byte gUnknown_3005B60 +_080DD4AC: + cmp r0, #2 + beq _080DD4D4 + b _080DD500 +_080DD4B2: + bl sub_080DD270 + b _080DD4C8 +_080DD4B8: + ldr r0, _080DD4D0 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #6] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080DD500 +_080DD4C8: + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + b _080DD500 + .align 2, 0 +_080DD4D0: .4byte gUnknown_2039BD4 +_080DD4D4: + ldrh r0, [r4, #0x1e] + adds r1, r0, #1 + strh r1, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _080DD500 + movs r0, #0 + strh r0, [r4, #0x1e] + bl sub_080DD0A4 + ldr r0, _080DD508 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #6] + adds r0, r5, #0 + bl sub_080A8964 +_080DD500: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD508: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD484 + + thumb_func_start sub_080DD50C +sub_080DD50C: @ 0x080DD50C + ldr r3, _080DD540 + ldr r0, _080DD544 + ldr r2, [r0] + ldr r0, [r2] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x24] + ldr r0, [r2] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_080DD540: .4byte gUnknown_20205AC +_080DD544: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD50C + + thumb_func_start sub_080DD548 +sub_080DD548: @ 0x080DD548 + ldr r2, _080DD568 + ldr r0, _080DD56C + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_080DD568: .4byte gUnknown_20205AC +_080DD56C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD548 + + thumb_func_start sub_080DD570 +sub_080DD570: @ 0x080DD570 + push {lr} + ldr r0, _080DD58C + movs r1, #0xf + bl sub_080A8878 + ldr r0, _080DD590 + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #6] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #6] + pop {r0} + bx r0 + .align 2, 0 +_080DD58C: .4byte sub_080DD594 +_080DD590: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD570 + + thumb_func_start sub_080DD594 +sub_080DD594: @ 0x080DD594 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080DD5D0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + ble _080DD61E + movs r0, #0 + strh r0, [r4, #0x1c] + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080DD5DC + ldr r0, _080DD5D4 + ldr r1, _080DD5D8 + movs r2, #0x80 + lsls r2, r2, #5 + movs r3, #1 + bl sub_08000EF8 + b _080DD5F0 + .align 2, 0 +_080DD5D0: .4byte gUnknown_3005B60 +_080DD5D4: .4byte gUnknown_2019000 +_080DD5D8: .4byte 0x06002000 +_080DD5DC: + ldr r0, _080DD624 + ldr r1, _080DD628 + movs r2, #0x80 + lsls r2, r2, #5 + movs r3, #1 + bl sub_08000EF8 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] +_080DD5F0: + ldr r1, _080DD62C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x1e] + movs r2, #1 + eors r1, r2 + strh r1, [r0, #0x1e] + movs r1, #0x20 + ldrsh r0, [r0, r1] + cmp r0, #9 + bne _080DD61E + ldr r0, _080DD630 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, #6] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #6] + adds r0, r5, #0 + bl sub_080A8964 +_080DD61E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD624: .4byte gUnknown_2018000 +_080DD628: .4byte 0x06002000 +_080DD62C: .4byte gUnknown_3005B60 +_080DD630: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD594 + + thumb_func_start sub_080DD634 +sub_080DD634: @ 0x080DD634 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _080DD674 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r4, #0x18 + cmp r4, #0 + ble _080DD69C + ldr r7, _080DD678 + lsls r0, r5, #0x18 + adds r4, r0, #0 + cmp r4, #0 + ble _080DD680 + movs r5, #0 + ldr r2, _080DD67C + ldr r0, [r2] + ldr r0, [r0] + movs r1, #0x13 + ldrsb r1, [r0, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + b _080DD6B2 + .align 2, 0 +_080DD674: .4byte sub_080DD6E4 +_080DD678: .4byte 0x0000237E +_080DD67C: .4byte gUnknown_2039BD4 +_080DD680: + ldr r2, _080DD698 + ldr r0, [r2] + ldr r0, [r0] + movs r1, #0x13 + ldrsb r1, [r0, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + b _080DD6B2 + .align 2, 0 +_080DD698: .4byte gUnknown_2039BD4 +_080DD69C: + movs r7, #0 + lsls r0, r5, #0x18 + adds r4, r0, #0 + cmp r4, #0 + ble _080DD6AC + movs r5, #0 + movs r3, #0xc + b _080DD6B0 +_080DD6AC: + movs r5, #0xc + movs r3, #0 +_080DD6B0: + ldr r2, _080DD6DC +_080DD6B2: + ldr r1, _080DD6E0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r7, [r0, #8] + strh r5, [r0, #0xa] + asrs r1, r4, #0x18 + strh r1, [r0, #0xc] + strh r3, [r0, #0xe] + ldr r0, [r2] + ldr r2, [r0] + ldrb r1, [r2, #7] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD6DC: .4byte gUnknown_2039BD4 +_080DD6E0: .4byte gUnknown_3005B60 + thumb_func_end sub_080DD634 + + thumb_func_start sub_080DD6E4 +sub_080DD6E4: @ 0x080DD6E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _080DD714 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r0, [r3, #0x1c] + adds r1, r0, #1 + strh r1, [r3, #0x1c] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _080DD760 + movs r0, #0 + strh r0, [r3, #0x1c] + movs r1, #0xc + ldrsh r0, [r3, r1] + cmp r0, #0 + ble _080DD718 + ldrh r0, [r3, #0xa] + adds r0, #1 + b _080DD71C + .align 2, 0 +_080DD714: .4byte gUnknown_3005B60 +_080DD718: + ldrh r0, [r3, #0xa] + subs r0, #1 +_080DD71C: + strh r0, [r3, #0xa] + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r2 + ldrb r2, [r4, #0xa] + ldrh r3, [r4, #8] + movs r0, #0x11 + movs r1, #1 + bl sub_0806F410 + ldrb r2, [r4, #0xa] + ldrh r3, [r4, #8] + movs r0, #0x1a + movs r1, #1 + bl sub_0806F410 + movs r2, #0xa + ldrsh r1, [r4, r2] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080DD760 + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _080DD768 + ldr r0, [r0] + ldr r2, [r0] + ldrb r1, [r2, #7] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #7] +_080DD760: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DD768: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DD6E4 + + thumb_func_start sub_080DD76C +sub_080DD76C: @ 0x080DD76C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r5, #0 + ldr r0, _080DD808 + mov sb, r0 + mov r8, sb + ldr r6, _080DD80C + movs r4, #0 + movs r7, #0 +_080DD78A: + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #4] + adds r0, r7, r0 + ldrb r1, [r0, #0x10] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080DD820 + mov r2, sl + cmp r2, #0 + beq _080DD820 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DD854 + mov r3, r8 + ldr r1, [r3] + ldr r1, [r1, #0x14] + adds r1, r4, r1 + ldrb r2, [r1, #1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r2, _080DD810 + adds r1, r1, r2 + ldr r2, _080DD814 + bl CpuSet + mov r0, r8 + ldr r3, [r0] + ldr r0, [r3, #0x14] + adds r0, r4, r0 + ldrb r0, [r0, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldr r2, _080DD818 + ldr r0, _080DD81C + adds r0, r5, r0 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1, #0x22] + ldr r0, [r3, #0x14] + adds r0, r4, r0 + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #5 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + b _080DD83A + .align 2, 0 +_080DD808: .4byte gUnknown_2039BD4 +_080DD80C: .4byte gUnknown_20205AC +_080DD810: .4byte 0x06010040 +_080DD814: .4byte 0x04000008 +_080DD818: .4byte gUnknown_85609D4 +_080DD81C: .4byte gUnknown_2039BC6 +_080DD820: + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_080DD83A: + strb r1, [r0] + adds r4, #4 + adds r7, #0x1c + adds r5, #1 + cmp r5, #3 + ble _080DD78A + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080DD76C + + thumb_func_start sub_080DD854 +sub_080DD854: @ 0x080DD854 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DD87C + ldr r1, [r1] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r1, [r2, #0x10] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x40 + bne _080DD884 + ldrb r0, [r2, #0x19] + lsls r0, r0, #5 + ldr r1, _080DD880 + adds r0, r0, r1 + b _080DD886 + .align 2, 0 +_080DD87C: .4byte gUnknown_2039BD4 +_080DD880: .4byte gUnknown_8D8E97C +_080DD884: + ldr r0, _080DD88C +_080DD886: + pop {r1} + bx r1 + .align 2, 0 +_080DD88C: .4byte gUnknown_8D8E9FC + thumb_func_end sub_080DD854 + + thumb_func_start sub_080DD890 +sub_080DD890: @ 0x080DD890 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + movs r7, #0 + movs r0, #2 + mov sl, r0 + movs r0, #1 + mov r8, r0 + movs r0, #0x11 + mov sb, r0 +_080DD8AA: + ldr r0, _080DD944 + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #0xd + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0 + beq _080DD92E + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080DD92E + ldr r0, _080DD948 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r5, r0, #2 + adds r5, r5, r0 + adds r6, r5, #2 + movs r0, #3 + bl sub_080DAEAC + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, sl + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + mov r0, r8 + str r0, [sp, #0xc] + movs r0, #0 + adds r1, r4, #0 + movs r2, #0x14 + adds r3, r6, #0 + bl sub_080DE3C0 + adds r4, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r5, #3 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sl + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + mov r0, r8 + str r0, [sp, #0xc] + movs r0, #0 + adds r1, r4, #0 + movs r2, #0x14 + adds r3, r5, #0 + bl sub_080DE3C0 + movs r0, #0x63 + bl sub_080A306C +_080DD92E: + adds r7, #1 + cmp r7, #3 + ble _080DD8AA + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DD944: .4byte gUnknown_2039BD4 +_080DD948: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DD890 + + thumb_func_start sub_080DD94C +sub_080DD94C: @ 0x080DD94C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080DD97C + ldr r1, [r1] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r1, [r2, #0x15] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _080DD976 + ldrb r1, [r2, #0xc] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080DD980 +_080DD976: + movs r0, #0 + b _080DD982 + .align 2, 0 +_080DD97C: .4byte gUnknown_2039BD4 +_080DD980: + movs r0, #1 +_080DD982: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DD94C + + thumb_func_start sub_080DD988 +sub_080DD988: @ 0x080DD988 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + movs r0, #0xa + bl sub_080011D0 + mov r1, sp + strh r0, [r1] + mov r2, sp + ldrb r1, [r2] + movs r4, #4 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r2, #1] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r1, [r2, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #1] + ldrb r1, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r1 + strb r0, [r2] + mov r0, sp + ldrh r1, [r0] + movs r0, #0xa + bl sub_08001144 + movs r0, #8 + bl sub_080011D0 + mov r6, sp + adds r6, #2 + strh r0, [r6] + movs r0, #0xc + bl sub_080011D0 + add r5, sp, #4 + strh r0, [r5] + ldrb r1, [r6] + adds r0, r4, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r5] + ands r4, r0 + orrs r4, r1 + strb r4, [r5] + ldrh r1, [r6] + movs r0, #8 + bl sub_08001144 + ldrh r1, [r5] + movs r0, #0xc + bl sub_08001144 + ldr r1, _080DDA9C + movs r0, #0xf0 + strh r0, [r1] + ldr r4, _080DDAA0 + movs r0, #0xa0 + strh r0, [r4] + movs r0, #0x14 + movs r1, #0xf0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + movs r0, #0 + str r0, [sp, #8] + add r0, sp, #8 + ldr r4, _080DDAA4 + ldr r1, [r4] + ldr r1, [r1, #0x28] + ldr r2, _080DDAA8 + bl CpuSet + ldr r1, _080DDAAC + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_080DE468 + movs r5, #0 + ldr r7, _080DDAB0 + movs r6, #4 +_080DDA54: + ldr r0, [r4] + ldr r0, [r0, #0x14] + lsls r3, r5, #2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + mov r0, r8 + ands r0, r2 + orrs r0, r6 + strb r0, [r1, #5] + ldr r0, [r4] + ldr r0, [r0, #0x14] + adds r3, r3, r0 + ldrb r0, [r3, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + mov r0, r8 + ands r0, r2 + orrs r0, r6 + strb r0, [r1, #5] + adds r5, #1 + cmp r5, #3 + ble _080DDA54 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DDA9C: .4byte gUnknown_2022ACC +_080DDAA0: .4byte gUnknown_2022ACE +_080DDAA4: .4byte gUnknown_2039BD4 +_080DDAA8: .4byte 0x05000400 +_080DDAAC: .4byte gUnknown_8C17988 +_080DDAB0: .4byte gUnknown_20205AC + thumb_func_end sub_080DD988 + + thumb_func_start sub_080DDAB4 +sub_080DDAB4: @ 0x080DDAB4 + push {r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _080DDB70 + movs r2, #0x80 + lsls r2, r2, #6 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + movs r5, #0 + str r5, [sp] + ldr r6, _080DDB74 + ldr r0, [r6] + ldr r1, [r0, #0x28] + ldr r2, _080DDB78 + mov r0, sp + bl CpuSet + movs r0, #1 + bl sub_080DE468 + movs r0, #0xa + bl sub_080011D0 + add r3, sp, #4 + strh r0, [r3] + ldrb r1, [r3] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + mov r1, sp + adds r1, #5 + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1] + ldrb r2, [r1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrb r1, [r3] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r3] + ldrh r1, [r3] + movs r0, #0xa + bl sub_08001144 + ldr r0, _080DDB7C + strh r5, [r0] + ldr r0, _080DDB80 + strh r5, [r0] + ldr r7, _080DDB84 +_080DDB2E: + ldr r0, [r6] + ldr r0, [r0, #0x14] + lsls r3, r5, #2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #5] + ldr r0, [r6] + ldr r0, [r0, #0x14] + adds r3, r3, r0 + ldrb r0, [r3, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #5] + adds r5, #1 + cmp r5, #3 + ble _080DDB2E + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DDB70: .4byte 0x06008000 +_080DDB74: .4byte gUnknown_2039BD4 +_080DDB78: .4byte 0x05000400 +_080DDB7C: .4byte gUnknown_2022ACC +_080DDB80: .4byte gUnknown_2022ACE +_080DDB84: .4byte gUnknown_20205AC + thumb_func_end sub_080DDAB4 + + thumb_func_start sub_080DDB88 +sub_080DDB88: @ 0x080DDB88 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _080DDBB8 + movs r0, #0 + strh r0, [r1] + ldr r1, _080DDBBC + movs r0, #0xa0 + strh r0, [r1] + movs r0, #0x62 + movs r1, #0 + bl sub_080A307C + ldr r1, _080DDBC0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080DDBC4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDBB8: .4byte gUnknown_2022ACC +_080DDBBC: .4byte gUnknown_2022ACE +_080DDBC0: .4byte gUnknown_3005B60 +_080DDBC4: .4byte sub_080DDBC8 + thumb_func_end sub_080DDB88 + + thumb_func_start sub_080DDBC8 +sub_080DDBC8: @ 0x080DDBC8 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _080DDC00 + ldrh r0, [r1] + subs r0, #7 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080DDBE0 + movs r0, #0 + strh r0, [r1] +_080DDBE0: + ldrh r2, [r1] + cmp r2, #0 + bne _080DDBFA + ldr r0, _080DDC04 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r2, [r1, #8] + strh r2, [r1, #0xa] + strh r2, [r1, #0xc] + ldr r0, _080DDC08 + str r0, [r1] +_080DDBFA: + pop {r0} + bx r0 + .align 2, 0 +_080DDC00: .4byte gUnknown_2022ACE +_080DDC04: .4byte gUnknown_3005B60 +_080DDC08: .4byte sub_080DDC0C + thumb_func_end sub_080DDBC8 + + thumb_func_start sub_080DDC0C +sub_080DDC0C: @ 0x080DDC0C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080DDC30 + lsls r3, r4, #2 + adds r0, r3, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r0, #8 + ldrsh r1, [r5, r0] + cmp r1, #1 + beq _080DDC90 + cmp r1, #1 + bgt _080DDC34 + cmp r1, #0 + beq _080DDC3E + b _080DDD18 + .align 2, 0 +_080DDC30: .4byte gUnknown_3005B60 +_080DDC34: + cmp r1, #2 + beq _080DDCEE + cmp r1, #3 + beq _080DDD08 + b _080DDD18 +_080DDC3E: + movs r2, #0 + adds r6, r3, #0 + ldr r5, _080DDC84 + ldr r3, _080DDC88 +_080DDC46: + ldr r0, [r5] + ldr r1, [r0] + adds r1, #0x14 + adds r1, r1, r2 + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #3 + ble _080DDC46 + bl sub_080DB6F4 + bl sub_080DBFC8 + bl sub_080DAE00 + bl sub_080DC7B0 + movs r0, #1 + bl sub_080DD76C + bl sub_080DBBB0 + ldr r0, _080DDC8C + adds r1, r6, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #8] + b _080DDD18 + .align 2, 0 +_080DDC84: .4byte gUnknown_2039BD4 +_080DDC88: .4byte gUnknown_2039BC6 +_080DDC8C: .4byte gUnknown_3005B60 +_080DDC90: + ldr r0, _080DDCD8 + ldrb r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _080DDCE8 + ldr r0, _080DDCDC + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #7] + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #7] + bl sub_080DA094 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080DDCB6 + bl sub_080DB204 +_080DDCB6: + ldr r4, _080DDCE0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DDCE4 + adds r1, r4, #0 + bl sub_080A8A44 + bl sub_080DB6CC + movs r0, #2 + strh r0, [r5, #8] + b _080DDD18 + .align 2, 0 +_080DDCD8: .4byte gUnknown_2039BCA +_080DDCDC: .4byte gUnknown_2039BD4 +_080DDCE0: .4byte sub_080FD4DC +_080DDCE4: .4byte sub_080D9900 +_080DDCE8: + bl sub_080DB204 + b _080DDCFE +_080DDCEE: + ldr r0, _080DDD04 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #7] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080DDD18 +_080DDCFE: + movs r0, #3 + strh r0, [r5, #8] + b _080DDD18 + .align 2, 0 +_080DDD04: .4byte gUnknown_2039BD4 +_080DDD08: + bl sub_080DAFE8 + bl sub_080DAA20 + movs r0, #0 + strh r0, [r5, #8] + ldr r0, _080DDD20 + str r0, [r5] +_080DDD18: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDD20: .4byte sub_080DDD58 + thumb_func_end sub_080DDC0C + + thumb_func_start sub_080DDD24 +sub_080DDD24: @ 0x080DDD24 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080DDD4C + ldrh r0, [r1] + adds r0, #7 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa0 + ble _080DDD48 + ldr r0, _080DDD50 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080DDD54 + str r0, [r1] +_080DDD48: + pop {r0} + bx r0 + .align 2, 0 +_080DDD4C: .4byte gUnknown_2022ACE +_080DDD50: .4byte gUnknown_3005B60 +_080DDD54: .4byte sub_080D9CE4 + thumb_func_end sub_080DDD24 + + thumb_func_start sub_080DDD58 +sub_080DDD58: @ 0x080DDD58 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DDD78 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #9 + bgt _080DDD7C + adds r0, r2, #1 + strh r0, [r1, #0xc] + b _080DDDB8 + .align 2, 0 +_080DDD78: .4byte gUnknown_3005B60 +_080DDD7C: + ldrh r3, [r1, #0xa] + movs r4, #0xa + ldrsh r0, [r1, r4] + cmp r0, #0 + bne _080DDD9A + ldrh r2, [r1, #8] + movs r4, #8 + ldrsh r0, [r1, r4] + cmp r0, #0x10 + bne _080DDD96 + adds r0, r3, #1 + strh r0, [r1, #0xa] + b _080DDDB8 +_080DDD96: + adds r0, r2, #1 + b _080DDDB6 +_080DDD9A: + ldrh r0, [r1, #8] + movs r3, #8 + ldrsh r2, [r1, r3] + cmp r2, #0 + bne _080DDDB4 + strh r2, [r1, #0xa] + strh r2, [r1, #0xc] + ldr r0, _080DDDB0 + str r0, [r1] + b _080DDDB8 + .align 2, 0 +_080DDDB0: .4byte sub_080DDDC0 +_080DDDB4: + subs r0, #1 +_080DDDB6: + strh r0, [r1, #8] +_080DDDB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DDD58 + + thumb_func_start sub_080DDDC0 +sub_080DDDC0: @ 0x080DDDC0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DDDE0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #9 + bgt _080DDDE4 + adds r0, r1, #1 + strh r0, [r4, #0xc] + b _080DDDF4 + .align 2, 0 +_080DDDE0: .4byte gUnknown_3005B60 +_080DDDE4: + movs r0, #0 + strh r0, [r4, #0xc] + movs r0, #0x61 + movs r1, #0 + bl sub_080A307C + ldr r0, _080DDDFC + str r0, [r4] +_080DDDF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DDDFC: .4byte sub_080DDD24 + thumb_func_end sub_080DDDC0 + + thumb_func_start sub_080DDE00 +sub_080DDE00: @ 0x080DDE00 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r7, #0 + ldr r6, _080DDEE8 + ldr r5, _080DDEEC +_080DDE12: + bl sub_080080C8 + ldr r1, [r5] + ldr r1, [r1, #0x14] + lsls r4, r7, #2 + adds r1, r4, r1 + ldrb r1, [r1] + lsls r3, r1, #4 + adds r3, r3, r1 + lsls r3, r3, #2 + adds r3, r3, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #1 + ldrb r1, [r3, #3] + movs r2, #0x3f + rsbs r2, r2, #0 + mov ip, r2 + mov r2, ip + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #3] + ldr r0, [r5] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r2, [r0, #1] + movs r3, #4 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + movs r1, #1 + orrs r2, r1 + strb r2, [r0, #1] + ldr r0, [r5] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, r8 + bl sub_08007F70 + mov r0, r8 + cmp r0, #2 + bne _080DDEB0 + ldr r0, [r5] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08007358 + ldr r0, [r5] + ldr r0, [r0, #0x14] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #5 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + strb r1, [r0] +_080DDEB0: + adds r7, #1 + cmp r7, #3 + ble _080DDE12 + ldr r0, _080DDEF0 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DDEF4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + mov r0, r8 + strh r0, [r1, #8] + ldr r0, _080DDEEC + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #7] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #7] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DDEE8: .4byte gUnknown_20205AC +_080DDEEC: .4byte gUnknown_2039BD4 +_080DDEF0: .4byte sub_080DDEF8 +_080DDEF4: .4byte gUnknown_3005B60 + thumb_func_end sub_080DDE00 + + thumb_func_start sub_080DDEF8 +sub_080DDEF8: @ 0x080DDEF8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _080DDF8C + ldr r3, _080DDF90 + ldr r0, [r3] + ldr r0, [r0, #0x14] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _080DDF86 + ldr r0, _080DDF94 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r0, [r1, #8] + cmp r0, #1 + bne _080DDF50 + movs r4, #0 + adds r5, r2, #0 + movs r2, #4 +_080DDF30: + ldr r0, [r3] + ldr r1, [r0, #0x14] + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r4, #1 + cmp r4, #3 + ble _080DDF30 +_080DDF50: + movs r4, #0 +_080DDF52: + ldr r5, _080DDF90 + ldr r0, [r5] + ldr r1, [r0, #0x14] + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080DDF8C + adds r0, r0, r1 + bl sub_0800730C + adds r4, #1 + cmp r4, #3 + ble _080DDF52 + ldr r0, [r5] + ldr r2, [r0] + ldrb r1, [r2, #7] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #7] + adds r0, r6, #0 + bl sub_080A8964 +_080DDF86: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DDF8C: .4byte gUnknown_20205AC +_080DDF90: .4byte gUnknown_2039BD4 +_080DDF94: .4byte gUnknown_3005B60 + thumb_func_end sub_080DDEF8 + + thumb_func_start sub_080DDF98 +sub_080DDF98: @ 0x080DDF98 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0xb1 + lsls r0, r0, #1 + cmp r1, r0 + bls _080DDFA8 + movs r1, #1 +_080DDFA8: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DDF98 + + thumb_func_start sub_080DDFB0 +sub_080DDFB0: @ 0x080DDFB0 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080DDFC4 + cmp r1, r0 + bls _080DDFBE + movs r1, #0 +_080DDFBE: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_080DDFC4: .4byte 0x0000019B + thumb_func_end sub_080DDFB0 + + thumb_func_start sub_080DDFC8 +sub_080DDFC8: @ 0x080DDFC8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _080DE02C + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + bl sub_080DDF98 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080DE030 + lsls r0, r7, #6 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080DDFB0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r4] + ldr r0, [r0, #0x18] + movs r1, #0 + movs r2, #0x14 + bl memset + bl sub_080A31FC + ldr r1, _080DE034 + movs r2, #0 + adds r0, r1, #3 +_080DE00C: + strb r2, [r0] + subs r0, #1 + cmp r0, r1 + bge _080DE00C + cmp r5, #0x90 + beq _080DE084 + cmp r5, #0x90 + bgt _080DE042 + cmp r5, #0x4c + beq _080DE0DC + cmp r5, #0x4c + bgt _080DE038 + cmp r5, #0xd + beq _080DE0DC + b _080DE106 + .align 2, 0 +_080DE02C: .4byte gUnknown_2039BD4 +_080DE030: .4byte gUnknown_2039AA0 +_080DE034: .4byte gUnknown_2024188 +_080DE038: + cmp r5, #0x82 + beq _080DE0DC + cmp r5, #0x8f + beq _080DE0DC + b _080DE106 +_080DE042: + cmp r5, #0xd8 + beq _080DE0C4 + cmp r5, #0xd8 + bgt _080DE050 + cmp r5, #0xae + beq _080DE05E + b _080DE106 +_080DE050: + cmp r5, #0xda + beq _080DE0D0 + movs r0, #0x88 + lsls r0, r0, #1 + cmp r5, r0 + beq _080DE084 + b _080DE106 +_080DE05E: + ldr r0, _080DE07C + lsls r1, r6, #3 + subs r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #7 + beq _080DE074 + ldrb r0, [r1, #7] + cmp r0, #7 + bne _080DE100 +_080DE074: + ldr r1, _080DE080 + movs r0, #0 + b _080DE104 + .align 2, 0 +_080DE07C: .4byte gUnknown_82F0D54 +_080DE080: .4byte gUnknown_20380D2 +_080DE084: + ldr r6, _080DE0BC + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #0x1b] + ldr r5, _080DE0C0 + lsls r4, r4, #6 + adds r0, r4, r5 + ldrh r0, [r0] + bl sub_080DDFB0 + ldr r2, [r6] + ldr r1, [r2, #0x18] + strh r0, [r1, #2] + ldr r2, [r2, #0x18] + adds r5, #0x38 + adds r4, r4, r5 + ldr r0, [r4] + str r0, [r2, #0x10] + ldrb r0, [r2, #4] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #4] + b _080DE106 + .align 2, 0 +_080DE0BC: .4byte gUnknown_2039BD4 +_080DE0C0: .4byte gUnknown_2039AA0 +_080DE0C4: + ldr r1, _080DE0CC + movs r0, #0xff + b _080DE104 + .align 2, 0 +_080DE0CC: .4byte gUnknown_20380BA +_080DE0D0: + ldr r1, _080DE0D8 + movs r0, #0 + b _080DE104 + .align 2, 0 +_080DE0D8: .4byte gUnknown_20380BA +_080DE0DC: + ldr r0, _080DE0F8 + ldr r0, [r0] + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0x5a + ldrb r1, [r2] + cmp r1, #0 + bne _080DE100 + movs r0, #2 + strb r0, [r2] + ldr r0, _080DE0FC + strb r1, [r0] + b _080DE106 + .align 2, 0 +_080DE0F8: .4byte gUnknown_2039BD4 +_080DE0FC: .4byte gUnknown_20380D2 +_080DE100: + ldr r1, _080DE110 + movs r0, #1 +_080DE104: + strb r0, [r1] +_080DE106: + bl sub_080DE1C0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE110: .4byte gUnknown_20380D2 + thumb_func_end sub_080DDFC8 + + thumb_func_start sub_080DE114 +sub_080DE114: @ 0x080DE114 + push {r4, lr} + ldr r4, _080DE13C + ldr r0, [r4] + ldr r0, [r0, #0x18] + movs r1, #0 + movs r2, #0x14 + bl memset + ldr r0, [r4] + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #0 + beq _080DE136 + subs r0, #1 + strb r0, [r1] +_080DE136: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE13C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DE114 + + thumb_func_start sub_080DE140 +sub_080DE140: @ 0x080DE140 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _080DE17C + ldr r0, [r6] + ldr r0, [r0, #0x18] + strb r4, [r0, #5] + ldr r5, _080DE180 + lsls r4, r4, #6 + adds r0, r4, r5 + ldrh r0, [r0] + bl sub_080DDFB0 + ldr r2, [r6] + ldr r1, [r2, #0x18] + strh r0, [r1] + ldr r1, [r2, #0x18] + adds r0, r5, #0 + adds r0, #0x38 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [r1, #8] + adds r5, #0x3c + adds r4, r4, r5 + ldr r0, [r4] + str r0, [r1, #0xc] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DE17C: .4byte gUnknown_2039BD4 +_080DE180: .4byte gUnknown_2039AA0 + thumb_func_end sub_080DE140 + + thumb_func_start sub_080DE184 +sub_080DE184: @ 0x080DE184 + push {lr} + ldr r0, _080DE1B0 + bl sub_0806F0C4 + ldr r1, _080DE1B4 + strb r0, [r1, #3] + ldr r0, _080DE1B8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080DE1BC + adds r0, r0, r1 + bl sub_08008140 + bl sub_080DE1C0 + pop {r0} + bx r0 + .align 2, 0 +_080DE1B0: .4byte sub_08007140 +_080DE1B4: .4byte gUnknown_2023E88 +_080DE1B8: .4byte gUnknown_2023EB0 +_080DE1BC: .4byte gUnknown_20205AC + thumb_func_end sub_080DE184 + + thumb_func_start sub_080DE1C0 +sub_080DE1C0: @ 0x080DE1C0 + push {r4, lr} + ldr r0, _080DE204 + ldrb r0, [r0, #3] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080DE208 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + movs r0, #3 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + movs r0, #3 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DE204: .4byte gUnknown_2023E88 +_080DE208: .4byte gUnknown_20205AC + thumb_func_end sub_080DE1C0 + + thumb_func_start sub_080DE20C +sub_080DE20C: @ 0x080DE20C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _080DE22C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #6] + cmp r0, #0x20 + bhi _080DE2C4 + lsls r0, r0, #2 + ldr r1, _080DE230 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DE22C: .4byte gUnknown_82ED220 +_080DE230: .4byte _080DE234 +_080DE234: @ jump table + .4byte _080DE2C4 @ case 0 + .4byte _080DE2C4 @ case 1 + .4byte _080DE2B8 @ case 2 + .4byte _080DE2C4 @ case 3 + .4byte _080DE2C4 @ case 4 + .4byte _080DE2C4 @ case 5 + .4byte _080DE2C4 @ case 6 + .4byte _080DE2C4 @ case 7 + .4byte _080DE2C4 @ case 8 + .4byte _080DE2C4 @ case 9 + .4byte _080DE2C4 @ case 10 + .4byte _080DE2C4 @ case 11 + .4byte _080DE2C4 @ case 12 + .4byte _080DE2C4 @ case 13 + .4byte _080DE2C4 @ case 14 + .4byte _080DE2C4 @ case 15 + .4byte _080DE2B8 @ case 16 + .4byte _080DE2C4 @ case 17 + .4byte _080DE2C4 @ case 18 + .4byte _080DE2C4 @ case 19 + .4byte _080DE2C4 @ case 20 + .4byte _080DE2C4 @ case 21 + .4byte _080DE2C4 @ case 22 + .4byte _080DE2C4 @ case 23 + .4byte _080DE2C4 @ case 24 + .4byte _080DE2C4 @ case 25 + .4byte _080DE2C4 @ case 26 + .4byte _080DE2C4 @ case 27 + .4byte _080DE2C4 @ case 28 + .4byte _080DE2C4 @ case 29 + .4byte _080DE2C4 @ case 30 + .4byte _080DE2C4 @ case 31 + .4byte _080DE2C4 @ case 32 +_080DE2B8: + ldr r1, _080DE2C0 + movs r0, #2 + b _080DE2C8 + .align 2, 0 +_080DE2C0: .4byte gUnknown_2023EB0 +_080DE2C4: + ldr r1, _080DE2D0 + movs r0, #3 +_080DE2C8: + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080DE2D0: .4byte gUnknown_2023EB0 + thumb_func_end sub_080DE20C + + thumb_func_start sub_080DE2D4 +sub_080DE2D4: @ 0x080DE2D4 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + str r1, [sp] + mov r0, sp + movs r2, #0 + strb r4, [r0, #4] + mov r1, sp + movs r0, #1 + strb r0, [r1, #5] + mov r0, sp + strb r2, [r0, #6] + movs r1, #2 + strb r1, [r0, #7] + strb r2, [r0, #8] + strb r1, [r0, #9] + strb r2, [r0, #0xa] + strb r2, [r0, #0xb] + mov r3, sp + ldrb r2, [r3, #0xc] + subs r1, #0x12 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + mov r2, sp + movs r0, #0xf0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + strb r1, [r2, #0xd] + mov r1, sp + movs r0, #0x80 + strb r0, [r1, #0xd] + mov r0, sp + movs r1, #0 + movs r2, #0 + bl sub_08004548 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + movs r0, #0 + bl sub_080DE468 + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DE2D4 + + thumb_func_start sub_080DE338 +sub_080DE338: @ 0x080DE338 + push {r4, r5, lr} + sub sp, #0x10 + str r0, [sp] + mov r2, sp + movs r3, #0 + movs r0, #8 + strb r0, [r2, #4] + mov r0, sp + movs r5, #1 + strb r5, [r0, #5] + strb r3, [r0, #6] + movs r2, #2 + strb r2, [r0, #7] + strb r3, [r0, #8] + strb r2, [r0, #9] + strb r3, [r0, #0xa] + strb r3, [r0, #0xb] + mov r4, sp + ldrb r3, [r4, #0xc] + subs r2, #0x12 + 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, #0x80 + strb r0, [r2, #0xd] + cmp r1, #0 + bne _080DE388 + mov r0, sp + movs r1, #0 + movs r2, #0 + bl sub_08004548 + b _080DE3AC +_080DE388: + ldr r0, _080DE398 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080DE39C + movs r1, #4 + b _080DE3A4 + .align 2, 0 +_080DE398: .4byte gUnknown_2039BCA +_080DE39C: + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_080DE3A4: + mov r0, sp + movs r2, #0 + bl sub_08004548 +_080DE3AC: + movs r0, #8 + bl sub_0800365C + movs r0, #0 + bl sub_080DE468 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080DE338 + + thumb_func_start sub_080DE3C0 +sub_080DE3C0: @ 0x080DE3C0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + mov r8, r0 + ldr r0, [sp, #0x28] + ldr r4, [sp, #0x2c] + ldr r5, [sp, #0x30] + ldr r6, [sp, #0x34] + mov r7, r8 + lsls r7, r7, #0x18 + lsrs r7, r7, #0x18 + mov r8, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + str r6, [sp, #0xc] + mov r0, r8 + bl sub_0800271C + mov r0, r8 + bl sub_080DE468 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DE3C0 + + thumb_func_start sub_080DE418 +sub_080DE418: @ 0x080DE418 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r6, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r4, #0 + str r4, [sp, #0xc] + bl sub_080DE3C0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080DE418 + + thumb_func_start sub_080DE454 +sub_080DE454: @ 0x080DE454 + push {lr} + bl sub_08004630 + movs r0, #8 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_080DE454 + + thumb_func_start sub_080DE468 +sub_080DE468: @ 0x080DE468 + ldr r2, _080DE478 + movs r1, #1 + lsls r1, r0 + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_080DE478: .4byte gUnknown_2039BD8 + thumb_func_end sub_080DE468 + + thumb_func_start sub_080DE47C +sub_080DE47C: @ 0x080DE47C + push {r4, r5, r6, lr} + movs r0, #0 + ldr r6, _080DE4A8 + ldr r5, _080DE4AC + movs r4, #0 +_080DE486: + adds r3, r0, #1 + lsls r1, r0, #3 + movs r2, #3 +_080DE48C: + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r1 + strh r4, [r0] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080DE48C + adds r0, r3, #0 + cmp r0, #4 + ble _080DE486 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DE4A8: .4byte gUnknown_3005AF0 +_080DE4AC: .4byte 0x00000624 + thumb_func_end sub_080DE47C + + thumb_func_start sub_080DE4B0 +sub_080DE4B0: @ 0x080DE4B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r1, _080DE500 + ldrb r0, [r1] + cmp r0, #0 + beq _080DE4EE +_080DE4E0: + adds r5, #1 + cmp r5, #2 + bgt _080DE4EE + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080DE4E0 +_080DE4EE: + ldr r0, [sp] + cmp r0, #0xff + bne _080DE508 + ldr r0, _080DE504 + ldrb r0, [r0] + cmp r5, r0 + beq _080DE508 + movs r0, #0 + b _080DE698 + .align 2, 0 +_080DE500: .4byte gUnknown_2039BC0 +_080DE504: .4byte gUnknown_2039BC5 +_080DE508: + ldr r0, _080DE51C + ldrh r0, [r0] + cmp r0, #4 + bhi _080DE554 + lsls r0, r0, #2 + ldr r1, _080DE520 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DE51C: .4byte gUnknown_2039BCC +_080DE520: .4byte _080DE524 +_080DE524: @ jump table + .4byte _080DE554 @ case 0 + .4byte _080DE538 @ case 1 + .4byte _080DE53E @ case 2 + .4byte _080DE544 @ case 3 + .4byte _080DE54A @ case 4 +_080DE538: + mov r0, r8 + adds r0, #3 + b _080DE54E +_080DE53E: + mov r0, r8 + adds r0, #6 + b _080DE54E +_080DE544: + mov r0, r8 + adds r0, #9 + b _080DE54E +_080DE54A: + mov r0, r8 + adds r0, #0xc +_080DE54E: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_080DE554: + ldr r1, [sp] + cmp r1, #0xfe + bne _080DE55C + b _080DE658 +_080DE55C: + adds r0, r1, #0 + movs r1, #1 + bl sub_080DE6B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r2, _080DE5E0 + mov sl, r2 + ldr r0, [r2] + mov r3, sb + lsls r7, r3, #5 + ldr r6, _080DE5E4 + adds r2, r0, r6 + adds r2, r2, r7 + ldr r4, _080DE5E8 + lsls r5, r5, #6 + adds r1, r4, #0 + adds r1, #0x38 + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r2] + adds r1, r0, r7 + adds r2, r5, r4 + ldrh r2, [r2] + ldr r3, _080DE5EC + adds r1, r1, r3 + strh r2, [r1] + ldr r1, _080DE5F0 + adds r2, r0, r1 + adds r2, r2, r7 + adds r1, r4, #0 + adds r1, #0x3c + adds r1, r5, r1 + ldr r1, [r1] + str r1, [r2] + adds r6, r7, r6 + adds r0, r0, r6 + adds r0, #0xb + adds r1, r4, #2 + adds r1, r5, r1 + bl sub_080088B8 + mov r2, sl + ldr r0, [r2] + adds r0, r0, r6 + adds r0, #0x16 + adds r4, #0xd + adds r5, r5, r4 + adds r1, r5, #0 + bl sub_080088B8 + ldr r0, _080DE5F4 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080DE5FC + mov r3, sl + ldr r0, [r3] + adds r0, r0, r7 + ldr r1, _080DE5F8 + adds r0, r0, r1 + movs r1, #4 + b _080DE60A + .align 2, 0 +_080DE5E0: .4byte gUnknown_3005AEC +_080DE5E4: .4byte 0x00002E90 +_080DE5E8: .4byte gUnknown_2039AA0 +_080DE5EC: .4byte 0x00002E98 +_080DE5F0: .4byte 0x00002E94 +_080DE5F4: .4byte gUnknown_2039BCA +_080DE5F8: .4byte 0x00002EAE +_080DE5FC: + mov r2, sl + ldr r0, [r2] + adds r0, r0, r7 + ldr r1, _080DE628 + ldrh r1, [r1] + ldr r3, _080DE62C + adds r0, r0, r3 +_080DE60A: + strb r1, [r0] + ldr r0, [sp] + cmp r0, #0xff + beq _080DE63C + ldr r0, _080DE630 + ldr r0, [r0] + mov r2, sb + lsls r1, r2, #5 + adds r0, r0, r1 + ldr r1, _080DE634 + ldrh r1, [r1] + ldr r3, _080DE638 + adds r0, r0, r3 + strb r1, [r0] + b _080DE696 + .align 2, 0 +_080DE628: .4byte gUnknown_2039BCE +_080DE62C: .4byte 0x00002EAE +_080DE630: .4byte gUnknown_3005AEC +_080DE634: .4byte gUnknown_2039BCC +_080DE638: .4byte 0x00002E9A +_080DE63C: + ldr r0, _080DE650 + ldr r0, [r0] + mov r2, sb + lsls r1, r2, #5 + adds r0, r0, r1 + ldr r3, _080DE654 + adds r0, r0, r3 + mov r1, r8 + strb r1, [r0] + b _080DE696 + .align 2, 0 +_080DE650: .4byte gUnknown_3005AEC +_080DE654: .4byte 0x00002E9A +_080DE658: + ldr r6, _080DE6A8 + ldr r4, _080DE6AC + lsls r5, r5, #6 + adds r0, r4, #0 + adds r0, #0x38 + adds r0, r5, r0 + ldr r0, [r0] + str r0, [r6] + adds r0, r4, #0 + adds r0, #0x3c + adds r0, r5, r0 + ldr r0, [r0] + str r0, [r6, #4] + adds r0, r5, r4 + ldrh r0, [r0] + strh r0, [r6, #8] + adds r0, r6, #0 + adds r0, #0xb + adds r1, r4, #2 + adds r1, r5, r1 + bl sub_080088B8 + adds r0, r6, #0 + adds r0, #0x16 + adds r4, #0xd + adds r5, r5, r4 + adds r1, r5, #0 + bl sub_080088B8 + mov r2, r8 + strb r2, [r6, #0xa] +_080DE696: + movs r0, #1 +_080DE698: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080DE6A8: .4byte gUnknown_2039BDC +_080DE6AC: .4byte gUnknown_2039AA0 + thumb_func_end sub_080DE4B0 + + thumb_func_start sub_080DE6B0 +sub_080DE6B0: @ 0x080DE6B0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r0, #3 + bgt _080DE700 + cmp r0, #0 + blt _080DE700 + cmp r1, #0 + beq _080DE6EE + movs r2, #5 + ldr r0, _080DE6F4 + mov ip, r0 + ldr r4, _080DE6F8 + ldr r3, _080DE6FC +_080DE6D0: + mov r1, ip + ldr r0, [r1] + lsls r1, r2, #5 + adds r1, r1, r0 + adds r0, r1, r4 + adds r1, r1, r3 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6} + stm r0!, {r5, r6} + subs r2, #1 + cmp r2, #0 + bgt _080DE6D0 +_080DE6EE: + movs r0, #0 + b _080DE742 + .align 2, 0 +_080DE6F4: .4byte gUnknown_3005AEC +_080DE6F8: .4byte 0x00002E90 +_080DE6FC: .4byte 0x00002E70 +_080DE700: + ldr r0, _080DE714 + ldrh r0, [r0] + cmp r0, #4 + bhi _080DE740 + lsls r0, r0, #2 + ldr r1, _080DE718 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080DE714: .4byte gUnknown_2039BCC +_080DE718: .4byte _080DE71C +_080DE71C: @ jump table + .4byte _080DE730 @ case 0 + .4byte _080DE734 @ case 1 + .4byte _080DE738 @ case 2 + .4byte _080DE73C @ case 3 + .4byte _080DE740 @ case 4 +_080DE730: + movs r0, #8 + b _080DE742 +_080DE734: + movs r0, #9 + b _080DE742 +_080DE738: + movs r0, #0xa + b _080DE742 +_080DE73C: + movs r0, #0xb + b _080DE742 +_080DE740: + movs r0, #0xc +_080DE742: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080DE6B0 + + thumb_func_start sub_080DE748 +sub_080DE748: @ 0x080DE748 + push {r4, r5, r6, r7, lr} + movs r2, #0 + ldr r0, _080DE77C + mov ip, r0 + ldr r4, _080DE780 + ldr r3, _080DE784 +_080DE754: + mov r1, ip + ldr r0, [r1] + lsls r1, r2, #5 + adds r0, r0, r1 + adds r0, r0, r4 + adds r1, r3, #0 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6} + stm r0!, {r5, r6} + adds r3, #0x20 + adds r2, #1 + cmp r2, #7 + ble _080DE754 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DE77C: .4byte gUnknown_3005AEC +_080DE780: .4byte 0x00002E90 +_080DE784: .4byte gUnknown_8560F28 + thumb_func_end sub_080DE748 + + thumb_func_start sub_080DE788 +sub_080DE788: @ 0x080DE788 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _080DE8C0 + ldr r3, [r2] + ldr r5, [r3, #0x10] + ldrb r1, [r5, #1] + movs r7, #1 + adds r0, r7, #0 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + bne _080DE7DA + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + ble _080DE7DA + ldr r1, [r3, #4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _080DE7DA + ldr r1, [r3, #0x1c] + lsls r2, r4, #4 + adds r1, r2, r1 + ldrb r3, [r1, #0xc] + movs r0, #1 + orrs r0, r3 + strb r0, [r1, #0xc] + ldr r0, [r6] + ldr r0, [r0, #0x1c] + adds r2, r2, r0 + ldrb r0, [r2, #0xe] + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0xe] +_080DE7DA: + ldr r3, [r6] + ldr r1, [r3, #4] + lsls r2, r4, #3 + subs r0, r2, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + adds r7, r2, #0 + cmp r0, #0 + beq _080DE802 + ldr r0, [r3, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xc] + movs r0, #2 + orrs r0, r2 + strb r0, [r1, #0xc] +_080DE802: + ldr r3, [r6] + ldr r2, [r3, #0x10] + ldrb r1, [r2, #1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080DE82E + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _080DE82E + movs r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #0x3c + bne _080DE82E + ldr r0, [r3, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xc] + movs r0, #4 + orrs r0, r2 + strb r0, [r1, #0xc] +_080DE82E: + ldr r3, [r6] + ldr r1, [r3, #4] + subs r0, r7, r4 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #0x15] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080DE856 + ldrb r0, [r2, #0x16] + cmp r0, #0 + beq _080DE856 + ldr r0, [r3, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xc] + movs r0, #8 + orrs r0, r2 + strb r0, [r1, #0xc] +_080DE856: + movs r3, #0 + movs r5, #0 +_080DE85A: + cmp r3, r4 + beq _080DE888 + ldr r1, [r6] + ldr r0, [r1, #4] + adds r0, r5, r0 + ldrb r0, [r0, #0xe] + cmp r0, #0 + beq _080DE888 + ldr r0, [r1, #0x1c] + lsls r2, r4, #4 + adds r2, r2, r0 + ldrb r0, [r2, #0xc] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #0xc] + ldr r0, [r6] + ldr r0, [r0, #0x1c] + lsls r2, r3, #4 + adds r2, r2, r0 + ldrb r0, [r2, #0xc] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0xc] +_080DE888: + adds r5, #0x1c + adds r3, #1 + cmp r3, #3 + ble _080DE85A + ldr r2, [r6] + ldr r1, [r2, #4] + subs r0, r7, r4 + lsls r5, r0, #2 + adds r1, r5, r1 + ldrb r3, [r1, #0xc] + movs r0, #6 + ands r0, r3 + cmp r0, #0 + bne _080DE8AE + ldrb r1, [r1, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080DE8C4 +_080DE8AE: + ldr r0, [r2, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xc] + movs r0, #0x20 + orrs r0, r2 + strb r0, [r1, #0xc] + b _080DE8FE + .align 2, 0 +_080DE8C0: .4byte gUnknown_2039BD4 +_080DE8C4: + movs r0, #1 + ands r0, r3 + cmp r0, #0 + bne _080DE8FE + ldr r2, [r2, #0x1c] + lsls r3, r4, #4 + adds r2, r3, r2 + ldrb r0, [r2, #0xc] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xc] + ldr r0, [r6] + ldr r1, [r0, #0x1c] + adds r1, r3, r1 + ldrb r0, [r1, #0xe] + movs r2, #1 + orrs r0, r2 + strb r0, [r1, #0xe] + ldr r1, [r6] + ldr r0, [r1, #0x1c] + adds r3, r3, r0 + ldr r0, [r1] + ldrb r0, [r0, #1] + lsls r0, r0, #1 + adds r3, r3, r0 + ldr r0, [r1, #4] + adds r0, r5, r0 + ldrh r0, [r0, #6] + strh r0, [r3] +_080DE8FE: + ldr r2, [r6] + ldr r1, [r2, #4] + subs r0, r7, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x15] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080DE922 + ldr r0, [r2, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xd] + movs r0, #2 + orrs r0, r2 + strb r0, [r1, #0xd] +_080DE922: + ldr r2, [r6] + ldr r0, [r2] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + bne _080DE952 + ldr r3, [r2, #0x10] + ldrb r1, [r3, #1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080DE952 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _080DE952 + ldr r0, [r2, #0x1c] + lsls r1, r4, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xd] + movs r0, #0x20 + orrs r0, r2 + strb r0, [r1, #0xd] +_080DE952: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080DE788 + + thumb_func_start sub_080DE958 +sub_080DE958: @ 0x080DE958 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + movs r1, #0 + movs r0, #0 + str r0, [sp, #0x20] + movs r4, #0 + ldr r6, _080DE998 + mov r2, sp + adds r2, #0xc + str r2, [sp, #0x28] + mov r3, sp + adds r3, #0x14 + str r3, [sp, #0x2c] + mov r7, sp + adds r7, #2 + str r7, [sp, #0x24] + ldr r5, _080DE99C + movs r2, #0 + movs r3, #0x80 + lsls r3, r3, #0x11 +_080DE988: + adds r0, r4, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080DE9A0 + lsrs r0, r2, #0x18 + str r0, [sp, #0x20] + b _080DE9A6 + .align 2, 0 +_080DE998: .4byte gUnknown_2039BD4 +_080DE99C: .4byte gUnknown_2039BC0 +_080DE9A0: + cmp r0, #3 + bne _080DE9A6 + lsrs r1, r2, #0x18 +_080DE9A6: + adds r2, r2, r3 + adds r4, #1 + cmp r4, #3 + ble _080DE988 + ldr r0, [r6] + ldr r0, [r0, #0x1c] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xd] + movs r0, #1 + orrs r0, r2 + strb r0, [r1, #0xd] + movs r4, #0 + ldr r1, [sp, #0x20] + lsls r1, r1, #4 + str r1, [sp, #0x30] + mov sb, r4 + mov sl, r4 +_080DE9CA: + ldr r2, [sp, #0x20] + cmp r4, r2 + beq _080DE9F6 + ldr r1, _080DEB94 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r2, [r0, r3] + add r1, sl + movs r6, #0 + ldrsh r0, [r1, r6] + subs r2, r2, r0 + cmp r2, #0x32 + bgt _080DE9F6 + ldr r7, _080DEB98 + ldr r0, [r7] + ldr r2, [r0, #0x1c] + add r2, sb + ldrb r0, [r2, #0xd] + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0xd] +_080DE9F6: + ldr r1, _080DEB98 + ldr r0, [r1] + ldr r0, [r0, #0x1c] + mov r3, sb + adds r2, r3, r0 + ldrb r1, [r2, #0xe] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080DEA12 + ldrb r0, [r2, #0xd] + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #0xd] +_080DEA12: + movs r5, #0 + ldr r2, _080DEB9C + add r2, sl + movs r6, #0 + ldrsh r1, [r2, r6] + ldr r7, _080DEB9C + movs r3, #0 + ldrsh r0, [r7, r3] + cmp r1, r0 + blt _080DEA3E + adds r3, r2, #0 + adds r2, r7, #0 +_080DEA2A: + adds r2, #2 + adds r5, #1 + cmp r5, #3 + bgt _080DEA3E + movs r6, #0 + ldrsh r1, [r3, r6] + movs r7, #0 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080DEA2A +_080DEA3E: + cmp r5, #4 + bne _080DEA5C + ldr r1, _080DEBA0 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080DEA5C + ldr r2, _080DEB98 + ldr r0, [r2] + ldr r2, [r0, #0x1c] + add r2, sb + ldrb r0, [r2, #0xd] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #0xd] +_080DEA5C: + movs r3, #0 + mov ip, r3 + mov r8, r3 + movs r5, #0 + ldr r0, _080DEB9C + add r0, sl + movs r7, #0 + ldrsh r6, [r0, r7] + str r6, [sp, #0x34] + ldr r2, _080DEB9C + ldr r0, _080DEBA4 + mov r1, sl + adds r6, r1, r0 + adds r3, r0, #0 +_080DEA78: + movs r7, #0 + ldrsh r0, [r2, r7] + ldr r1, [sp, #0x34] + cmp r1, r0 + ble _080DEA86 + movs r7, #1 + mov ip, r7 +_080DEA86: + movs r0, #0 + ldrsh r1, [r6, r0] + movs r7, #0 + ldrsh r0, [r3, r7] + cmp r1, r0 + ble _080DEA96 + movs r0, #1 + mov r8, r0 +_080DEA96: + adds r2, #2 + adds r3, #2 + adds r5, #1 + cmp r5, #3 + ble _080DEA78 + mov r1, ip + cmp r1, #0 + bne _080DEABC + mov r2, r8 + cmp r2, #0 + bne _080DEABC + ldr r3, _080DEB98 + ldr r0, [r3] + ldr r2, [r0, #0x1c] + add r2, sb + ldrb r0, [r2, #0xd] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0xd] +_080DEABC: + ldr r6, _080DEB98 + ldr r0, [r6] + ldr r0, [r0, #0x1c] + mov r7, sb + adds r2, r7, r0 + ldrb r1, [r2, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080DEAD8 + ldrb r0, [r2, #0xd] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xd] +_080DEAD8: + movs r0, #0x10 + add sb, r0 + movs r1, #2 + add sl, r1 + adds r4, #1 + cmp r4, #3 + bgt _080DEAE8 + b _080DE9CA +_080DEAE8: + movs r4, #0 + movs r5, #0 + movs r3, #0 + ldr r2, [sp, #0x28] + mov r1, sp +_080DEAF2: + strh r3, [r1] + adds r0, r2, r4 + strb r5, [r0] + adds r1, #2 + adds r4, #1 + cmp r4, #4 + ble _080DEAF2 + mov r1, sp + ldr r0, _080DEBA8 + strh r0, [r1, #0xa] + movs r0, #0 + ldr r2, [sp, #0x28] + strb r0, [r2, #5] + movs r4, #0 + ldr r0, _080DEB98 + ldr r0, [r0] + mov r8, r0 + ldr r7, [sp, #0x30] +_080DEB16: + mov r3, r8 + ldr r0, [r3, #0x1c] + adds r0, r7, r0 + lsls r1, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r4, #1 + mov ip, r4 + cmp r0, #0 + beq _080DEB58 + ldr r0, _080DEB98 + ldr r6, [r0] + ldr r3, [sp, #0x28] + mov r4, sp + movs r5, #4 +_080DEB34: + ldr r0, [r6, #0x1c] + adds r0, r7, r0 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r2, [r4] + cmp r0, r2 + beq _080DEB48 + cmp r2, #0 + bne _080DEB4E + strh r0, [r4] +_080DEB48: + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_080DEB4E: + adds r3, #1 + adds r4, #2 + subs r5, #1 + cmp r5, #0 + bge _080DEB34 +_080DEB58: + mov r4, ip + cmp r4, #4 + ble _080DEB16 + mov r0, sp + ldrh r0, [r0] + ldr r6, [sp, #0x2c] + strh r0, [r6] + ldr r7, [sp, #0x28] + ldrb r3, [r7] + movs r6, #0 + movs r4, #1 + ldr r1, [sp, #0x24] + ldrh r0, [r1] + ldr r1, _080DEBA8 + cmp r0, r1 + beq _080DEBC8 + ldr r5, [sp, #0x2c] + adds r7, r1, #0 + mov r2, sp + adds r2, #2 +_080DEB80: + ldr r0, [sp, #0x28] + adds r1, r0, r4 + ldrb r0, [r1] + cmp r3, r0 + bhs _080DEBAC + ldrh r0, [r2] + strh r0, [r5] + ldrb r3, [r1] + movs r6, #1 + b _080DEBBE + .align 2, 0 +_080DEB94: .4byte gUnknown_2039BA8 +_080DEB98: .4byte gUnknown_2039BD4 +_080DEB9C: .4byte gUnknown_2039BA0 +_080DEBA0: .4byte gUnknown_2039BC0 +_080DEBA4: .4byte gUnknown_2039BB8 +_080DEBA8: .4byte 0x0000FFFF +_080DEBAC: + cmp r3, r0 + bne _080DEBBE + lsls r0, r6, #1 + adds r0, r5, r0 + ldrh r1, [r2] + strh r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080DEBBE: + adds r2, #2 + adds r4, #1 + ldrh r0, [r2] + cmp r0, r7 + bne _080DEB80 +_080DEBC8: + bl sub_0806F050 + ldr r1, _080DEBFC + ldr r1, [r1] + ldr r4, [r1, #0x1c] + ldr r1, [sp, #0x30] + adds r4, r1, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #1 + ldr r2, [sp, #0x2c] + adds r0, r2, r0 + ldrh r0, [r0] + strh r0, [r4, #0xa] + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DEBFC: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DE958 + + thumb_func_start sub_080DEC00 +sub_080DEC00: @ 0x080DEC00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r2, _080DED34 + ldr r0, _080DED38 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080DEC1C + b _080DEDCC +_080DEC1C: + movs r1, #0 + movs r3, #0 + ldr r0, _080DED3C + mov sb, r0 +_080DEC24: + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080DEC30 + lsls r0, r3, #0x18 + lsrs r1, r0, #0x18 +_080DEC30: + adds r3, #1 + cmp r3, #3 + ble _080DEC24 + movs r2, #0 + mov sl, r2 + movs r4, #0 + str r4, [sp, #4] + movs r3, #0 + lsls r2, r1, #1 + lsls r1, r1, #4 + mov r8, r1 + ldr r1, _080DED40 + adds r0, r2, r1 + movs r7, #0 + ldrsh r6, [r0, r7] + adds r5, r1, #0 + ldr r0, _080DED44 + adds r2, r2, r0 + adds r4, r0, #0 +_080DEC56: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r6, r0 + bge _080DEC68 + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_080DEC68: + movs r7, #0 + ldrsh r1, [r2, r7] + movs r7, #0 + ldrsh r0, [r4, r7] + cmp r1, r0 + bge _080DEC7E + ldr r0, [sp, #4] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] +_080DEC7E: + adds r5, #2 + adds r4, #2 + adds r3, #1 + cmp r3, #3 + ble _080DEC56 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0x1c] + add r0, r8 + ldrb r1, [r0, #0xc] + movs r4, #0 + movs r2, #1 + movs r3, #7 +_080DEC98: + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _080DECA6 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080DECA6: + lsrs r1, r1, #1 + subs r3, #1 + cmp r3, #0 + bge _080DEC98 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080DED3C + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r8 + ldrb r1, [r0, #0xc] + movs r4, #0 + movs r2, #0 + movs r3, #0 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080DECE2 + cmp r5, #0 + beq _080DECFC +_080DECDC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080DECE2: + lsrs r1, r1, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, #1 + cmp r3, #7 + bgt _080DECFC + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080DECE2 + cmp r5, r4 + bne _080DECDC +_080DECFC: + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r2 + lsrs r0, r0, #0x10 + mov sb, r0 + mov r1, sp + movs r0, #0 + strb r0, [r1] + ldr r0, _080DED3C + ldr r1, [r0] + ldr r0, [r1, #0x1c] + ldrb r4, [r0, #0xd] + movs r5, #1 + movs r3, #1 + mov r6, sp +_080DED1A: + ldr r0, [r1, #0x1c] + lsls r2, r3, #4 + adds r0, r2, r0 + ldrb r0, [r0, #0xd] + cmp r4, r0 + bhs _080DED48 + strb r3, [r6] + ldr r0, [r1, #0x1c] + adds r0, r2, r0 + ldrb r4, [r0, #0xd] + movs r5, #1 + b _080DED58 + .align 2, 0 +_080DED34: .4byte gUnknown_2039BC0 +_080DED38: .4byte gUnknown_2039BC5 +_080DED3C: .4byte gUnknown_2039BD4 +_080DED40: .4byte gUnknown_2039BA0 +_080DED44: .4byte gUnknown_2039BB8 +_080DED48: + cmp r4, r0 + bne _080DED58 + mov r2, sp + adds r0, r2, r5 + strb r3, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080DED58: + adds r3, #1 + cmp r3, #3 + ble _080DED1A + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + add r0, sp + ldrb r7, [r0] + movs r2, #0x80 + movs r3, #0 + ldr r5, _080DEDDC + ldr r0, [r5] + ldr r0, [r0, #0x1c] + lsls r1, r7, #4 + adds r0, r1, r0 + ldrb r0, [r0, #0xd] + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r0, sb + lsls r6, r0, #0x18 + cmp r4, #0 + bne _080DEDA4 +_080DED8E: + lsrs r2, r2, #1 + adds r3, #1 + cmp r3, #7 + bgt _080DEDA4 + ldr r0, [r5] + ldr r0, [r0, #0x1c] + adds r0, r1, r0 + ldrb r4, [r0, #0xd] + ands r4, r2 + cmp r4, #0 + beq _080DED8E +_080DEDA4: + mov r0, sl + bl sub_080ED900 + ldr r0, [sp, #4] + bl sub_080ED950 + lsrs r0, r6, #0x18 + bl sub_080ED990 + ldr r0, _080DEDDC + ldr r0, [r0] + ldr r0, [r0, #0x1c] + add r0, r8 + ldrh r0, [r0, #0xa] + bl sub_080ED9D0 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_080EDA10 +_080DEDCC: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DEDDC: .4byte gUnknown_2039BD4 + thumb_func_end sub_080DEC00 + + thumb_func_start sub_080DEDE0 +sub_080DEDE0: @ 0x080DEDE0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _080DEE00 + movs r1, #0xd0 + lsls r1, r1, #9 + adds r2, r0, r1 + ldrb r1, [r2] + adds r4, r0, #0 + cmp r1, #0 + bne _080DEE08 + cmp r3, #0 + bne _080DEE04 + movs r0, #2 + b _080DEE0A + .align 2, 0 +_080DEE00: .4byte gUnknown_2000000 +_080DEE04: + movs r0, #3 + b _080DEE0A +_080DEE08: + movs r0, #0 +_080DEE0A: + strb r0, [r2] + movs r1, #0xd0 + lsls r1, r1, #9 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080DEE22 + bl sub_080DA624 + bl sub_080DAA20 + b _080DEE26 +_080DEE22: + bl sub_080DEE2C +_080DEE26: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080DEDE0 + + thumb_func_start sub_080DEE2C +sub_080DEE2C: @ 0x080DEE2C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + ldr r0, _080DEF28 + ldrb r0, [r0] + cmp r0, #0 + bne _080DEE42 + b _080DEFD4 +_080DEE42: + ldr r0, _080DEF2C + movs r1, #0xd0 + lsls r1, r1, #9 + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080DEE58 + b _080DEFD4 +_080DEE58: + movs r7, #0 + add r2, sp, #0x14 + mov sl, r2 +_080DEE5E: + adds r0, r7, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r7, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080DEE5E + ldr r0, _080DEF2C + movs r4, #0xd0 + lsls r4, r4, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #2 + bne _080DEF3C + movs r7, #0 + mov sb, sl +_080DEE8E: + mov r0, sp + ldr r1, _080DEF30 + bl sub_080088B8 + adds r6, r0, #0 + ldr r0, _080DEF34 + adds r0, r7, r0 + ldrb r0, [r0] + mov r1, sp + bl sub_080DE2D4 + ldr r0, _080DEF38 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + lsls r0, r7, #4 + adds r0, r0, r1 + ldrb r5, [r0, #0xc] + movs r4, #7 + adds r0, r7, #1 + mov r8, r0 +_080DEEB6: + movs r1, #1 + ands r1, r5 + adds r0, r6, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + adds r6, r0, #0 + lsrs r5, r5, #1 + lsls r0, r4, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r4, r0, #0x18 + asrs r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + cmp r0, r2 + bgt _080DEEB6 + movs r4, #0 + ldr r6, _080DEF34 + mov r3, sl +_080DEEE2: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + adds r2, r3, r0 + mov r4, sp + adds r1, r4, r0 + ldrb r1, [r1] + strb r1, [r2] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + asrs r5, r0, #0x18 + cmp r5, #4 + ble _080DEEE2 + mov r0, sb + adds r1, r0, r5 + movs r0, #0xff + strb r0, [r1] + adds r4, r7, r6 + ldrb r0, [r4] + mov r1, sb + bl sub_080DE2D4 + ldrb r0, [r4] + adds r0, #4 + mov r2, sp + adds r1, r2, r5 + bl sub_080DE2D4 + mov r4, r8 + lsls r0, r4, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080DEE8E + b _080DEFD0 + .align 2, 0 +_080DEF28: .4byte gUnknown_2031F75 +_080DEF2C: .4byte gUnknown_2000000 +_080DEF30: .4byte gUnknown_85CC49D +_080DEF34: .4byte gUnknown_2039BC6 +_080DEF38: .4byte gUnknown_2039BD4 +_080DEF3C: + movs r7, #0 + mov r0, sp + adds r0, #2 + str r0, [sp, #0x28] + mov sb, sl +_080DEF46: + mov r0, sp + ldr r1, _080DEFE4 + bl sub_080088B8 + ldr r0, _080DEFE8 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + lsls r0, r7, #4 + adds r0, r0, r1 + ldrb r5, [r0, #0xd] + ldr r6, [sp, #0x28] + movs r4, #7 + adds r1, r7, #1 + mov r8, r1 +_080DEF62: + movs r1, #1 + ands r1, r5 + adds r0, r6, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + adds r6, r0, #0 + lsrs r5, r5, #1 + lsls r0, r4, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r4, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _080DEF62 + movs r4, #0 + ldr r6, _080DEFEC + mov r3, sl +_080DEF8E: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + adds r2, r3, r0 + mov r4, sp + adds r1, r4, r0 + ldrb r1, [r1] + strb r1, [r2] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + asrs r5, r0, #0x18 + cmp r5, #4 + ble _080DEF8E + mov r0, sb + adds r1, r0, r5 + movs r0, #0xff + strb r0, [r1] + adds r4, r7, r6 + ldrb r0, [r4] + mov r1, sb + bl sub_080DE2D4 + ldrb r0, [r4] + adds r0, #4 + mov r2, sp + adds r1, r2, r5 + bl sub_080DE2D4 + mov r4, r8 + lsls r0, r4, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _080DEF46 +_080DEFD0: + bl sub_080DAA20 +_080DEFD4: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DEFE4: .4byte gUnknown_85CC4A0 +_080DEFE8: .4byte gUnknown_2039BD4 +_080DEFEC: .4byte gUnknown_2039BC6 + thumb_func_end sub_080DEE2C + + thumb_func_start sub_080DEFF0 +sub_080DEFF0: @ 0x080DEFF0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + ldr r5, _080DF018 + strb r4, [r5, #0xf] + cmp r4, #0 + bne _080DF024 + ldr r0, _080DF01C + bl sub_08003250 + strb r0, [r5, #0xe] + ldr r0, _080DF020 + str r0, [r5, #4] + movs r6, #3 + b _080DF032 + .align 2, 0 +_080DF018: .4byte gUnknown_2039C00 +_080DF01C: .4byte gUnknown_85629BC +_080DF020: .4byte gUnknown_8562994 +_080DF024: + ldr r0, _080DF088 + bl sub_08003250 + strb r0, [r5, #0xe] + ldr r0, _080DF08C + str r0, [r5, #4] + movs r6, #2 +_080DF032: + ldr r4, _080DF090 + ldrb r0, [r4, #0xe] + movs r1, #0 + bl sub_08197638 + ldrb r0, [r4, #0xe] + movs r5, #0x10 + str r5, [sp] + str r6, [sp, #4] + ldr r1, [r4, #4] + str r1, [sp, #8] + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08198850 + ldrb r0, [r4, #0xe] + str r5, [sp] + str r6, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + ldrb r0, [r4, #0xe] + bl sub_0800365C + ldrb r0, [r4, #0xe] + movs r1, #1 + bl sub_08003528 + ldr r0, _080DF094 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080DF088: .4byte gUnknown_85629C4 +_080DF08C: .4byte gUnknown_85629AC +_080DF090: .4byte gUnknown_2039C00 +_080DF094: .4byte sub_080DF0D4 + thumb_func_end sub_080DEFF0 + + thumb_func_start sub_080DF098 +sub_080DF098: @ 0x080DF098 + ldr r1, _080DF0A0 + str r0, [r1] + bx lr + .align 2, 0 +_080DF0A0: .4byte gUnknown_2039C00 + thumb_func_end sub_080DF098 + + thumb_func_start sub_080DF0A4 +sub_080DF0A4: @ 0x080DF0A4 + push {lr} + adds r1, r0, #0 + movs r2, #0 + ldr r3, _080DF0D0 + str r1, [r3, #8] + strh r2, [r3, #0xc] + ldrh r0, [r1] + cmp r0, #0 + beq _080DF0CC +_080DF0B6: + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _080DF0B6 +_080DF0CC: + pop {r0} + bx r0 + .align 2, 0 +_080DF0D0: .4byte gUnknown_2039C00 + thumb_func_end sub_080DF0A4 + + thumb_func_start sub_080DF0D4 +sub_080DF0D4: @ 0x080DF0D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r2, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r2, r0 + beq _080DF110 + adds r0, #1 + cmp r2, r0 + bne _080DF100 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_080DF1B4 + b _080DF110 +_080DF100: + ldr r0, _080DF118 + ldr r1, [r0, #4] + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + adds r0, r5, #0 + bl _call_via_r1 +_080DF110: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF118: .4byte gUnknown_2039C00 + thumb_func_end sub_080DF0D4 + + thumb_func_start sub_080DF11C +sub_080DF11C: @ 0x080DF11C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _080DF14C + adds r4, r1, r2 + ldr r3, _080DF150 + lsrs r0, r3, #0x10 + strh r0, [r4, #0x10] + strh r3, [r4, #0x12] + subs r2, #8 + adds r1, r1, r2 + ldr r0, _080DF154 + str r0, [r1] + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF14C: .4byte gUnknown_3005B68 +_080DF150: .4byte sub_080DF2E0 +_080DF154: .4byte sub_080DF1F0 + thumb_func_end sub_080DF11C + + thumb_func_start sub_080DF158 +sub_080DF158: @ 0x080DF158 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _080DF188 + adds r4, r1, r2 + ldr r3, _080DF18C + lsrs r0, r3, #0x10 + strh r0, [r4, #0x10] + strh r3, [r4, #0x12] + subs r2, #8 + adds r1, r1, r2 + ldr r0, _080DF190 + str r0, [r1] + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF188: .4byte gUnknown_3005B68 +_080DF18C: .4byte sub_081AA978 +_080DF190: .4byte sub_080DF1F0 + thumb_func_end sub_080DF158 + + thumb_func_start sub_080DF194 +sub_080DF194: @ 0x080DF194 + push {lr} + ldr r0, _080DF1A8 + ldr r1, _080DF1AC + str r1, [r0] + ldr r0, _080DF1B0 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080DF1A8: .4byte gUnknown_3005B0C +_080DF1AC: .4byte sub_080DF22C +_080DF1B0: .4byte sub_08085A30 + thumb_func_end sub_080DF194 + + thumb_func_start sub_080DF1B4 +sub_080DF1B4: @ 0x080DF1B4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080DF1EC + ldrb r0, [r5, #0xe] + movs r1, #2 + bl sub_08198134 + ldrb r0, [r5, #0xe] + bl sub_08003444 + bl sub_080EDD80 + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 + ldr r5, [r5] + cmp r5, #0 + beq _080DF1E4 + bl _call_via_r5 +_080DF1E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF1EC: .4byte gUnknown_2039C00 + thumb_func_end sub_080DF1B4 + + thumb_func_start sub_080DF1F0 +sub_080DF1F0: @ 0x080DF1F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080DF224 + adds r4, r0, r1 + ldr r0, _080DF228 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080DF21E + adds r0, r2, #0 + bl sub_080A8964 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x12] + orrs r0, r1 + bl sub_08000540 +_080DF21E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF224: .4byte gUnknown_3005B68 +_080DF228: .4byte gUnknown_2037C74 + thumb_func_end sub_080DF1F0 + + thumb_func_start sub_080DF22C +sub_080DF22C: @ 0x080DF22C + push {lr} + bl sub_080AE99C + ldr r0, _080DF240 + movs r1, #8 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080DF240: .4byte sub_080DF244 + thumb_func_end sub_080DF22C + + thumb_func_start sub_080DF244 +sub_080DF244: @ 0x080DF244 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080DF282 + ldr r0, _080DF26C + ldrb r0, [r0, #0xf] + cmp r0, #2 + bne _080DF278 + ldr r1, _080DF270 + ldr r2, _080DF274 + adds r0, r4, #0 + bl sub_081976D0 + b _080DF282 + .align 2, 0 +_080DF26C: .4byte gUnknown_2039C00 +_080DF270: .4byte gUnknown_85C9A15 +_080DF274: .4byte sub_080DF290 +_080DF278: + ldr r1, _080DF288 + ldr r2, _080DF28C + adds r0, r5, #0 + bl sub_081976D0 +_080DF282: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF288: .4byte gUnknown_85C99F5 +_080DF28C: .4byte sub_080DF290 + thumb_func_end sub_080DF244 + + thumb_func_start sub_080DF290 +sub_080DF290: @ 0x080DF290 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080DF2AC + ldrb r0, [r0, #0xf] + bl sub_080DEFF0 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF2AC: .4byte gUnknown_2039C00 + thumb_func_end sub_080DF290 + + thumb_func_start sub_080DF2B0 +sub_080DF2B0: @ 0x080DF2B0 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DF2B0 + + thumb_func_start sub_080DF2CC +sub_080DF2CC: @ 0x080DF2CC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DF2CC + + thumb_func_start sub_080DF2E0 +sub_080DF2E0: @ 0x080DF2E0 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _080DF354 + movs r1, #0x87 + lsls r1, r1, #3 + adds r5, r0, r1 + ldrb r4, [r5] + cmp r4, #0 + beq _080DF36C + cmp r4, #1 + bne _080DF2F8 + b _080DF430 +_080DF2F8: + bl sub_080DFA68 + bl sub_080DF70C + ldr r0, _080DF358 + movs r1, #8 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080DF35C + movs r1, #0 + movs r2, #0 + bl sub_081AE25C + ldr r2, _080DF360 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r1, #0x16] + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + str r5, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080DF364 + bl sub_080006F0 + ldr r0, _080DF368 + bl sub_08000540 + b _080DF440 + .align 2, 0 +_080DF354: .4byte gUnknown_3002360 +_080DF358: .4byte sub_080E000C +_080DF35C: .4byte gUnknown_3006050 +_080DF360: .4byte gUnknown_3005B60 +_080DF364: .4byte sub_080DF2CC +_080DF368: .4byte sub_080DF2B0 +_080DF36C: + bl sub_08121E58 + str r4, [sp, #8] + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _080DF418 + add r0, sp, #8 + bl CpuFastSet + bl sub_080B9710 + bl sub_081996B8 + bl sub_08008424 + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_08199640 + ldr r4, _080DF41C + ldr r0, _080DF420 + bl sub_08000BDC + str r0, [r4] + ldr r1, _080DF424 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080DF428 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080DF42C + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + bl sub_080DF478 + bl sub_080DF8B0 + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + bl sub_080DF9AC + bl sub_080DF968 + b _080DF43A + .align 2, 0 +_080DF418: .4byte 0x01000100 +_080DF41C: .4byte gUnknown_2039C10 +_080DF420: .4byte 0x000020B0 +_080DF424: .4byte 0x0000200B +_080DF428: .4byte 0x0000200D +_080DF42C: .4byte 0x0000200E +_080DF430: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080DF440 +_080DF43A: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] +_080DF440: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080DF2E0 + + thumb_func_start sub_080DF448 +sub_080DF448: @ 0x080DF448 + push {lr} + ldr r0, _080DF46C + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _080DF470 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _080DF474 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + pop {r0} + bx r0 + .align 2, 0 +_080DF46C: .4byte gUnknown_2039C10 +_080DF470: .4byte gUnknown_2039C14 +_080DF474: .4byte gUnknown_2039C18 + thumb_func_end sub_080DF448 + + thumb_func_start sub_080DF478 +sub_080DF478: @ 0x080DF478 + push {r4, r5, r6, r7, lr} + ldr r7, _080DF518 + ldr r4, _080DF51C + ldrh r0, [r4, #0xc] + adds r0, #1 + lsls r0, r0, #3 + bl sub_08000BC8 + str r0, [r7] + ldr r5, _080DF520 + ldrh r0, [r4, #0xc] + adds r0, #1 + movs r1, #0xb + muls r0, r1, r0 + bl sub_08000BC8 + str r0, [r5] + movs r6, #0 + ldrh r0, [r4, #0xc] + cmp r6, r0 + bhs _080DF4CA +_080DF4A2: + lsls r1, r6, #3 + ldr r0, [r7] + adds r0, r0, r1 + ldr r2, [r4, #8] + lsls r1, r6, #1 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #0xb + adds r3, r6, #0 + muls r3, r2, r3 + ldr r2, [r5] + adds r2, r2, r3 + bl sub_080DF554 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrh r2, [r4, #0xc] + cmp r6, r2 + blo _080DF4A2 +_080DF4CA: + ldr r5, _080DF520 + movs r0, #0xb + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _080DF524 + bl sub_080088B8 + ldr r2, _080DF518 + ldr r0, [r2] + lsls r1, r6, #3 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r1, #4] + ldr r3, _080DF528 + adds r1, r3, #0 + ldr r0, _080DF52C + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + ldr r0, [r2] + str r0, [r3] + ldr r0, _080DF51C + ldrh r0, [r0, #0xc] + adds r1, r0, #1 + strh r1, [r3, #0xc] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bls _080DF530 + movs r0, #8 + strh r0, [r3, #0xe] + b _080DF532 + .align 2, 0 +_080DF518: .4byte gUnknown_2039C14 +_080DF51C: .4byte gUnknown_2039C00 +_080DF520: .4byte gUnknown_2039C18 +_080DF524: .4byte gUnknown_85C93C8 +_080DF528: .4byte gUnknown_3006050 +_080DF52C: .4byte gUnknown_85629CC +_080DF530: + strh r1, [r3, #0xe] +_080DF532: + ldr r0, _080DF548 + ldr r0, [r0] + ldr r1, _080DF54C + ldrh r1, [r1, #0xe] + ldr r2, _080DF550 + adds r0, r0, r2 + strh r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF548: .4byte gUnknown_2039C10 +_080DF54C: .4byte gUnknown_3006050 +_080DF550: .4byte 0x00002004 + thumb_func_end sub_080DF478 + + thumb_func_start sub_080DF554 +sub_080DF554: @ 0x080DF554 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r2, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r0, _080DF570 + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080DF574 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080D5EC8 + b _080DF584 + .align 2, 0 +_080DF570: .4byte gUnknown_2039C00 +_080DF574: + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r0, _080DF590 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080088B8 +_080DF584: + str r5, [r6] + str r4, [r6, #4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DF590: .4byte gUnknown_8580CD1 + thumb_func_end sub_080DF554 + + thumb_func_start sub_080DF594 +sub_080DF594: @ 0x080DF594 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _080DF5AC + movs r0, #5 + bl sub_080A306C +_080DF5AC: + movs r0, #2 + rsbs r0, r0, #0 + cmp r7, r0 + beq _080DF5D0 + lsls r4, r7, #0x10 + lsrs r0, r4, #0x10 + ldr r1, _080DF5C8 + ldr r1, [r1] + ldr r2, _080DF5CC + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_080DF7C8 + b _080DF5E2 + .align 2, 0 +_080DF5C8: .4byte gUnknown_2039C10 +_080DF5CC: .4byte 0x0000200C +_080DF5D0: + ldr r0, _080DF620 + ldr r1, _080DF624 + ldr r1, [r1] + ldr r2, _080DF628 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_080DF7C8 + lsls r4, r7, #0x10 +_080DF5E2: + lsrs r4, r4, #0x10 + mov r8, r4 + ldr r6, _080DF624 + ldr r0, [r6] + ldr r5, _080DF628 + adds r0, r0, r5 + ldrb r0, [r0] + movs r4, #1 + adds r1, r4, #0 + eors r1, r0 + mov r0, r8 + bl sub_080DF860 + ldr r1, [r6] + adds r1, r1, r5 + ldrb r0, [r1] + eors r0, r4 + strb r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + cmp r7, r0 + beq _080DF644 + ldr r0, _080DF62C + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080DF630 + mov r0, r8 + bl sub_080D6D40 + adds r4, r0, #0 + b _080DF646 + .align 2, 0 +_080DF620: .4byte 0x0000FFFF +_080DF624: .4byte gUnknown_2039C10 +_080DF628: .4byte 0x0000200C +_080DF62C: .4byte gUnknown_2039C00 +_080DF630: + ldr r1, _080DF640 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r1, #0x14 + adds r0, r0, r1 + ldr r4, [r0] + b _080DF646 + .align 2, 0 +_080DF640: .4byte gUnknown_8580CD0 +_080DF644: + ldr r4, _080DF66C +_080DF646: + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #2 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080DF9E8 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF66C: .4byte gUnknown_85C98E0 + thumb_func_end sub_080DF594 + + thumb_func_start sub_080DF670 +sub_080DF670: @ 0x080DF670 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r3, r0 + beq _080DF6F4 + ldr r0, _080DF6B8 + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080DF6C0 + ldr r5, _080DF6BC + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6CD4 + adds r4, r0, #0 + movs r0, #1 + bl sub_080EFB3C + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r4, r0 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + movs r3, #5 + bl sub_080089D8 + b _080DF6D6 + .align 2, 0 +_080DF6B8: .4byte gUnknown_2039C00 +_080DF6BC: .4byte gUnknown_2021C40 +_080DF6C0: + ldr r0, _080DF6FC + ldr r2, _080DF700 + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #0x10] + movs r2, #1 + movs r3, #5 + bl sub_080089D8 +_080DF6D6: + ldr r4, _080DF704 + ldr r1, _080DF708 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0xff + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x48 + adds r3, r7, #0 + bl sub_080DF9E8 +_080DF6F4: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DF6FC: .4byte gUnknown_2021C40 +_080DF700: .4byte gUnknown_8580CD0 +_080DF704: .4byte gUnknown_2021C7C +_080DF708: .4byte gUnknown_85C9A9D + thumb_func_end sub_080DF670 + + thumb_func_start sub_080DF70C +sub_080DF70C: @ 0x080DF70C + push {r4, r5, lr} + sub sp, #0x10 + ldr r5, _080DF754 + ldr r2, [r5] + ldr r4, _080DF758 + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, #0xff + bne _080DF74A + ldr r0, _080DF75C + ldrh r1, [r0, #0xc] + adds r0, r1, #1 + cmp r0, #8 + ble _080DF74A + subs r0, r1, #7 + str r0, [sp] + ldr r0, _080DF760 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r1, _080DF764 + adds r0, r2, r1 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xac + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + ldr r1, [r5] + adds r1, r1, r4 + strb r0, [r1] +_080DF74A: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF754: .4byte gUnknown_2039C10 +_080DF758: .4byte 0x0000200B +_080DF75C: .4byte gUnknown_2039C00 +_080DF760: .4byte 0x00000834 +_080DF764: .4byte 0x00002008 + thumb_func_end sub_080DF70C + + thumb_func_start sub_080DF768 +sub_080DF768: @ 0x080DF768 + push {r4, lr} + ldr r4, _080DF78C + ldr r0, [r4] + ldr r2, _080DF790 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _080DF786 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _080DF790 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_080DF786: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF78C: .4byte gUnknown_2039C10 +_080DF790: .4byte 0x0000200B + thumb_func_end sub_080DF768 + + thumb_func_start sub_080DF794 +sub_080DF794: @ 0x080DF794 + push {r4, lr} + sub sp, #8 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AE564 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _080DF7C4 + movs r0, #0 + str r0, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r2, #0 + bl sub_080DF9E8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF7C4: .4byte gUnknown_85C9421 + thumb_func_end sub_080DF794 + + thumb_func_start sub_080DF7C8 +sub_080DF7C8: @ 0x080DF7C8 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r0, _080DF81C + ldr r4, _080DF820 + adds r1, r3, r4 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _080DF854 + ldr r0, _080DF824 + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _080DF7F2 + ldr r0, _080DF828 + cmp r2, r0 + bne _080DF834 +_080DF7F2: + ldr r0, _080DF82C + adds r1, r3, r0 + adds r0, r1, #0 + bl sub_081AFB48 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _080DF854 + strb r2, [r4] + ldr r1, _080DF830 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x18 + strh r1, [r0, #0x24] + movs r1, #0x58 + strh r1, [r0, #0x26] + b _080DF854 + .align 2, 0 +_080DF81C: .4byte gUnknown_2039C10 +_080DF820: .4byte 0x0000200D +_080DF824: .4byte gUnknown_2039C00 +_080DF828: .4byte 0x0000FFFF +_080DF82C: .4byte 0x0000083E +_080DF830: .4byte gUnknown_20205AC +_080DF834: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080DF85C + adds r1, r3, r2 + str r1, [sp] + str r1, [sp, #4] + movs r1, #0x14 + movs r2, #0x54 + movs r3, #1 + bl sub_081295B4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _080DF854 + strb r2, [r4] +_080DF854: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF85C: .4byte 0x0000083E + thumb_func_end sub_080DF7C8 + + thumb_func_start sub_080DF860 +sub_080DF860: @ 0x080DF860 + push {r4, r5, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _080DF8A0 + ldr r2, _080DF8A4 + adds r1, r4, r2 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + beq _080DF89A + ldr r0, _080DF8A8 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080DF8AC + adds r0, r0, r1 + bl sub_08006E00 + movs r0, #0xff + strb r0, [r5] +_080DF89A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080DF8A0: .4byte gUnknown_2039C10 +_080DF8A4: .4byte 0x0000200D +_080DF8A8: .4byte 0x0000083E +_080DF8AC: .4byte gUnknown_20205AC + thumb_func_end sub_080DF860 + + thumb_func_start sub_080DF8B0 +sub_080DF8B0: @ 0x080DF8B0 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _080DF960 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _080DF964 + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + movs r0, #0xc0 + lsls r0, r0, #5 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #5 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080DF960: .4byte gUnknown_85629E4 +_080DF964: .4byte gUnknown_2039C10 + thumb_func_end sub_080DF8B0 + + thumb_func_start sub_080DF968 +sub_080DF968: @ 0x080DF968 + push {lr} + sub sp, #4 + ldr r1, _080DF998 + movs r2, #0xe8 + lsls r2, r2, #2 + ldr r3, _080DF99C + movs r0, #0 + str r0, [sp] + movs r0, #1 + bl sub_08199728 + ldr r0, _080DF9A0 + ldr r1, _080DF9A4 + ldr r1, [r1] + bl sub_08034370 + ldr r0, _080DF9A8 + movs r1, #0xc0 + movs r2, #0x20 + bl sub_080A11BC + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080DF998: .4byte gUnknown_8D9B1B4 +_080DF99C: .4byte 0x000003E3 +_080DF9A0: .4byte gUnknown_8D9B2E8 +_080DF9A4: .4byte gUnknown_2039C10 +_080DF9A8: .4byte gUnknown_8D9B2C0 + thumb_func_end sub_080DF968 + + thumb_func_start sub_080DF9AC +sub_080DF9AC: @ 0x080DF9AC + push {lr} + ldr r0, _080DF9E4 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0xa + movs r2, #0xe0 + bl sub_08098104 + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + pop {r0} + bx r0 + .align 2, 0 +_080DF9E4: .4byte gUnknown_85629F4 + thumb_func_end sub_080DF9AC + + thumb_func_start sub_080DF9E8 +sub_080DF9E8: @ 0x080DF9E8 + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r6, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + ldr r5, _080DFA28 + adds r4, r4, r5 + str r4, [sp, #8] + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + str r6, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + bl sub_08199B84 + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DFA28: .4byte gUnknown_8562A34 + thumb_func_end sub_080DF9E8 + + thumb_func_start sub_080DFA2C +sub_080DFA2C: @ 0x080DFA2C + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r5, [sp, #8] + str r6, [sp, #0xc] + adds r0, r4, #0 + movs r1, #5 + movs r2, #0xa + movs r3, #0xe + bl sub_08121E6C + movs r0, #0 + bl sub_08199654 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DFA2C + + thumb_func_start sub_080DFA68 +sub_080DFA68: @ 0x080DFA68 + push {lr} + bl sub_080DFAB4 + bl sub_080DFF84 + movs r0, #0x13 + movs r1, #0xb + bl sub_080E4B88 + ldr r0, _080DFAB0 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + adds r3, r0, #0 + movs r0, #0 + movs r1, #1 + movs r2, #0xd + bl sub_080E4A74 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 +_080DFAB0: .4byte gUnknown_3005AEC + thumb_func_end sub_080DFA68 + + thumb_func_start sub_080DFAB4 +sub_080DFAB4: @ 0x080DFAB4 + push {lr} + bl sub_080DFCA0 + bl sub_080DFE34 + bl sub_080DFAC8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080DFAB4 + + thumb_func_start sub_080DFAC8 +sub_080DFAC8: @ 0x080DFAC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _080DFB48 + ldr r0, [r0] + mov sb, r0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r1, sp + mov r0, sp + ldrh r0, [r0] + subs r0, #4 + strh r0, [r1] + ldrh r0, [r4] + subs r0, #4 + strh r0, [r4] + movs r1, #0 + mov sl, r4 +_080DFAFA: + movs r4, #0 + lsls r7, r1, #0x10 + asrs r0, r7, #0x10 + mov r8, r0 +_080DFB02: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r4, r4, #0x10 + asrs r5, r4, #0x10 + adds r0, r0, r5 + mov r2, sl + movs r3, #0 + ldrsh r1, [r2, r3] + add r1, r8 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + mov r1, r8 + bl sub_080DFFCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080DFB4C + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, r0, r5 + mov r2, sl + movs r3, #0 + ldrsh r1, [r2, r3] + add r1, r8 + bl sub_08087C38 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _080DFB4E + .align 2, 0 +_080DFB48: .4byte gUnknown_2036FB8 +_080DFB4C: + movs r5, #1 +_080DFB4E: + ldr r0, _080DFB6C + cmp r6, r0 + bhi _080DFB70 + asrs r0, r4, #0x10 + mov r2, sb + ldr r1, [r2, #0x10] + lsls r3, r6, #4 + ldr r2, [r1, #0xc] + adds r2, r2, r3 + asrs r1, r7, #0x10 + adds r3, r5, #0 + bl sub_080DFBB4 + b _080DFB88 + .align 2, 0 +_080DFB6C: .4byte 0x000001FF +_080DFB70: + asrs r0, r4, #0x10 + mov r3, sb + ldr r2, [r3, #0x14] + ldr r3, _080DFBB0 + adds r1, r6, r3 + lsls r1, r1, #4 + ldr r2, [r2, #0xc] + adds r2, r2, r1 + asrs r1, r7, #0x10 + adds r3, r5, #0 + bl sub_080DFBB4 +_080DFB88: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r4, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xe + ble _080DFB02 + adds r0, r7, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _080DFAFA + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DFBB0: .4byte 0xFFFFFE00 + thumb_func_end sub_080DFAC8 + + thumb_func_start sub_080DFBB4 +sub_080DFBB4: @ 0x080DFBB4 + push {r4, r5, r6, r7, lr} + adds r7, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r2, r3, #0 + lsls r0, r0, #0x11 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x16 + lsrs r1, r1, #0x10 + cmp r3, #1 + beq _080DFC04 + cmp r3, #1 + bgt _080DFBD4 + cmp r3, #0 + beq _080DFBDA + b _080DFC6C +_080DFBD4: + cmp r2, #2 + beq _080DFC3C + b _080DFC6C +_080DFBDA: + ldr r6, _080DFC00 + ldr r0, [r6] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r0, r0, r2 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080DFC78 + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #4 + b _080DFC26 + .align 2, 0 +_080DFC00: .4byte gUnknown_2039C10 +_080DFC04: + ldr r6, _080DFC38 + ldr r0, [r6] + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r0, r2 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080DFC78 + ldr r0, [r6] + movs r1, #0xc0 + lsls r1, r1, #5 +_080DFC26: + adds r0, r0, r1 + adds r3, r7, #0 + adds r3, #8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080DFC78 + b _080DFC6C + .align 2, 0 +_080DFC38: .4byte gUnknown_2039C10 +_080DFC3C: + ldr r6, _080DFC74 + ldr r0, [r6] + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r0, r2 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r7, #0 + bl sub_080DFC78 + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r3, r7, #0 + adds r3, #8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080DFC78 +_080DFC6C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DFC74: .4byte gUnknown_2039C10 + thumb_func_end sub_080DFBB4 + + thumb_func_start sub_080DFC78 +sub_080DFC78: @ 0x080DFC78 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r3] + strh r0, [r1] + ldrh r0, [r3, #2] + strh r0, [r1, #2] + adds r2, r1, #0 + adds r2, #0x40 + ldrh r0, [r3, #4] + strh r0, [r2] + adds r1, #0x42 + ldrh r0, [r3, #6] + strh r0, [r1] + bx lr + .align 2, 0 + thumb_func_end sub_080DFC78 + + thumb_func_start sub_080DFCA0 +sub_080DFCA0: @ 0x080DFCA0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + movs r0, #0 + mov r8, r0 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + movs r7, #0 + ldr r5, _080DFD94 + ldr r3, _080DFD98 + movs r2, #0x10 +_080DFCC4: + ldr r1, [r5] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #1 + adds r1, r1, r3 + adds r1, r1, r0 + strh r2, [r1] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xf + bls _080DFCC4 + movs r7, #0 + str r4, [sp, #8] + ldr r1, _080DFD94 + mov sb, r1 + mov r2, sp + str r2, [sp, #4] +_080DFCE8: + movs r3, #0 + adds r4, r7, #1 + str r4, [sp, #0xc] +_080DFCEE: + ldr r1, _080DFD9C + adds r0, r3, r1 + ldr r2, [sp, #4] + ldrh r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r4, _080DFDA0 + adds r1, r7, r4 + ldr r2, [sp, #8] + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + str r3, [sp, #0x10] + bl sub_0808CEE4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, [sp, #0x10] + cmp r6, #0x10 + beq _080DFE06 + mov r4, sb + ldr r1, [r4] + mov r0, r8 + lsls r4, r0, #2 + adds r0, r4, r0 + lsls r5, r0, #1 + ldr r2, _080DFD98 + adds r0, r1, r2 + adds r0, r0, r5 + movs r2, #0 + mov sl, r2 + strh r6, [r0] + ldr r2, _080DFDA4 + adds r0, r1, r2 + adds r0, r0, r5 + strh r3, [r0] + ldr r0, _080DFDA8 + adds r1, r1, r0 + adds r1, r1, r5 + strh r7, [r1] + ldr r1, [sp, #4] + movs r2, #0 + ldrsh r0, [r1, r2] + subs r1, r3, #4 + adds r0, r0, r1 + ldr r1, [sp, #8] + movs r2, #0 + ldrsh r1, [r1, r2] + mov ip, r1 + subs r1, r7, #2 + add r1, ip + str r3, [sp, #0x10] + bl sub_08087C38 + mov r1, sb + ldr r2, [r1] + ldr r1, _080DFDAC + adds r1, r1, r2 + mov ip, r1 + add ip, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, ip + strh r0, [r1] + ldr r1, _080DFDB0 + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldr r3, [sp, #0x10] + cmp r0, #2 + beq _080DFDC8 + cmp r0, #2 + bgt _080DFDB4 + cmp r0, #1 + beq _080DFDBA + b _080DFDE8 + .align 2, 0 +_080DFD94: .4byte gUnknown_2039C10 +_080DFD98: .4byte 0x00002010 +_080DFD9C: .4byte 0x0000FFFC +_080DFDA0: .4byte 0x0000FFFE +_080DFDA4: .4byte 0x00002012 +_080DFDA8: .4byte 0x00002014 +_080DFDAC: .4byte 0x00002018 +_080DFDB0: .4byte gUnknown_2036FF0 +_080DFDB4: + cmp r0, #3 + beq _080DFDD8 + b _080DFDE8 +_080DFDBA: + ldr r4, _080DFDC4 + adds r0, r2, r4 + adds r0, r0, r5 + mov r1, sl + b _080DFDFA + .align 2, 0 +_080DFDC4: .4byte 0x00002016 +_080DFDC8: + ldr r4, _080DFDD4 + adds r0, r2, r4 + adds r0, r0, r5 + movs r1, #1 + b _080DFDFA + .align 2, 0 +_080DFDD4: .4byte 0x00002016 +_080DFDD8: + ldr r1, _080DFDE4 + adds r0, r2, r1 + adds r0, r0, r5 + movs r1, #2 + b _080DFDFA + .align 2, 0 +_080DFDE4: .4byte 0x00002016 +_080DFDE8: + mov r2, sb + ldr r0, [r2] + mov r2, r8 + adds r1, r4, r2 + lsls r1, r1, #1 + ldr r4, _080DFE30 + adds r0, r0, r4 + adds r0, r0, r1 + movs r1, #3 +_080DFDFA: + strh r1, [r0] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_080DFE06: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #6 + bhi _080DFE12 + b _080DFCEE +_080DFE12: + ldr r1, [sp, #0xc] + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #4 + bhi _080DFE1E + b _080DFCE8 +_080DFE1E: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DFE30: .4byte 0x00002016 + thumb_func_end sub_080DFCA0 + + thumb_func_start sub_080DFE34 +sub_080DFE34: @ 0x080DFE34 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r7, #0 + ldr r0, _080DFF38 + mov r8, r0 + ldr r1, _080DFF3C + mov sl, r1 + ldr r2, _080DFF40 + mov sb, r2 +_080DFE4E: + mov r3, r8 + ldr r0, [r3] + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r5, r1, #1 + ldr r4, _080DFF44 + adds r0, r0, r4 + adds r1, r0, r5 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0x10 + beq _080DFF1C + adds r1, r0, #0 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrb r0, [r0, #5] + bl sub_0808E004 + mov r4, r8 + ldr r3, [r4] + ldr r2, _080DFF44 + adds r1, r3, r2 + adds r1, r1, r5 + movs r4, #0 + ldrsh r2, [r1, r4] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, sl + ldrb r4, [r1, #5] + ldr r2, _080DFF48 + adds r1, r3, r2 + adds r1, r1, r5 + ldrh r2, [r1] + lsls r2, r2, #4 + adds r2, #8 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r1, _080DFF4C + adds r3, r3, r1 + adds r3, r3, r5 + ldrh r3, [r3] + lsls r3, r3, #4 + movs r1, #0xa + ldrsh r0, [r0, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + subs r0, #0x30 + subs r3, r3, r0 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r0, #2 + str r0, [sp] + adds r0, r4, #0 + ldr r1, _080DFF50 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r2, _080DFF44 + adds r1, r5, r2 + mov r3, r8 + ldr r0, [r3] + adds r0, r0, r1 + bl sub_080DFF58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080DFF04 + lsls r2, r4, #4 + adds r2, r2, r4 + lsls r2, r2, #2 + add r2, sb + adds r2, #0x42 + ldrb r0, [r2] + movs r4, #0x40 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] +_080DFF04: + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + add r0, sb + mov r2, r8 + ldr r1, [r2] + ldr r3, _080DFF54 + adds r1, r1, r3 + adds r1, r1, r5 + ldrb r1, [r1] + bl sub_08007EC0 +_080DFF1C: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xf + bls _080DFE4E + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080DFF38: .4byte gUnknown_2039C10 +_080DFF3C: .4byte gUnknown_2036FF0 +_080DFF40: .4byte gUnknown_20205AC +_080DFF44: .4byte 0x00002010 +_080DFF48: .4byte 0x00002012 +_080DFF4C: .4byte 0x00002014 +_080DFF50: .4byte sub_08007140 +_080DFF54: .4byte 0x00002016 + thumb_func_end sub_080DFE34 + + thumb_func_start sub_080DFF58 +sub_080DFF58: @ 0x080DFF58 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + ldrsh r0, [r4, r1] + movs r2, #4 + ldrsh r1, [r4, r2] + adds r1, #2 + bl sub_080DFFCC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080DFF7C + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080DFF7C + movs r0, #1 + b _080DFF7E +_080DFF7C: + movs r0, #0 +_080DFF7E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080DFF58 + + thumb_func_start sub_080DFF84 +sub_080DFF84: @ 0x080DFF84 + push {r4, r5, r6, lr} + ldr r0, _080DFFC0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #4 + adds r4, r0, r1 + adds r3, r0, #0 + movs r1, #0 + ldr r0, _080DFFC4 + adds r6, r0, #0 + ldr r5, _080DFFC8 +_080DFF9A: + lsls r0, r1, #0x10 + asrs r2, r0, #0x10 + lsls r1, r2, #1 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080DFFAE + adds r1, r1, r4 + adds r0, r0, r6 + strh r0, [r1] +_080DFFAE: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r5 + ble _080DFF9A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080DFFC0: .4byte gUnknown_2039C10 +_080DFFC4: .4byte 0x0000C3E3 +_080DFFC8: .4byte 0x000003FF + thumb_func_end sub_080DFF84 + + thumb_func_start sub_080DFFCC +sub_080DFFCC: @ 0x080DFFCC + push {lr} + ldr r2, _080E0000 + ldr r2, [r2] + lsls r0, r0, #1 + lsls r1, r1, #6 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + cmp r0, #0 + bne _080E0004 + adds r0, r1, #0 + adds r0, #0x40 + ldrh r0, [r0] + cmp r0, #0 + bne _080E0004 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _080E0004 + adds r0, r1, #0 + adds r0, #0x42 + ldrh r0, [r0] + cmp r0, #0 + bne _080E0004 + movs r0, #1 + b _080E0006 + .align 2, 0 +_080E0000: .4byte gUnknown_2039C10 +_080E0004: + movs r0, #0 +_080E0006: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080DFFCC + + thumb_func_start sub_080E000C +sub_080E000C: @ 0x080E000C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080E0058 + adds r4, r0, r1 + ldr r0, _080E005C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080E002E + b _080E01DA +_080E002E: + ldrb r0, [r4, #0xe] + bl sub_081AE2DC + adds r5, r0, #0 + ldrb r0, [r4, #0xe] + ldr r7, _080E0060 + ldr r2, [r7] + ldr r3, _080E0064 + adds r1, r2, r3 + subs r3, #2 + adds r2, r2, r3 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _080E0068 + adds r0, #1 + cmp r5, r0 + bne _080E0076 + b _080E01DA + .align 2, 0 +_080E0058: .4byte gUnknown_3005B68 +_080E005C: .4byte gUnknown_2037C74 +_080E0060: .4byte gUnknown_2039C10 +_080E0064: .4byte 0x00002008 +_080E0068: + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_080E06B4 + b _080E01DA +_080E0076: + movs r0, #5 + bl sub_080A306C + strh r5, [r4, #0xa] + movs r0, #2 + bl sub_08003774 + bl sub_080DF768 + ldrb r0, [r4, #0xe] + movs r1, #2 + bl sub_080DF794 + ldr r0, _080E00C0 + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080E00C4 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6CD4 + adds r4, r0, #0 + movs r0, #1 + bl sub_080EFB3C + ldr r1, [r7] + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r1, r2 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r4, r0 + str r4, [r1] + b _080E00DA + .align 2, 0 +_080E00C0: .4byte gUnknown_2039C00 +_080E00C4: + ldr r1, [r7] + movs r3, #0x80 + lsls r3, r3, #6 + adds r1, r1, r3 + ldr r2, _080E0104 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x10] + str r0, [r1] +_080E00DA: + ldr r0, _080E0108 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r2, _080E010C + mov r8, r2 + ldr r1, [r2] + movs r7, #0x80 + lsls r7, r7, #6 + adds r1, r1, r7 + ldr r1, [r1] + bl sub_080E4930 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E0118 + ldr r1, _080E0110 + ldr r2, _080E0114 + b _080E0170 + .align 2, 0 +_080E0104: .4byte gUnknown_8580CD0 +_080E0108: .4byte gUnknown_3005AEC +_080E010C: .4byte gUnknown_2039C10 +_080E0110: .4byte gUnknown_85C99B8 +_080E0114: .4byte sub_080E05EC +_080E0118: + ldr r4, _080E0158 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080E0180 + lsls r0, r5, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080E015C + adds r0, r5, #0 + bl sub_080D5EC8 + adds r0, r5, #0 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _080E016C + ldr r4, _080E0160 + adds r0, r5, #0 + bl sub_081B69B4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xd + ldr r0, _080E0164 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _080E0168 + b _080E016E + .align 2, 0 +_080E0158: .4byte gUnknown_2039C00 +_080E015C: .4byte gUnknown_2021C40 +_080E0160: .4byte gUnknown_2021C54 +_080E0164: .4byte gUnknown_82EACC4 +_080E0168: .4byte gUnknown_85C9903 +_080E016C: + ldr r1, _080E0178 +_080E016E: + ldr r2, _080E017C +_080E0170: + adds r0, r6, #0 + bl sub_080DFA2C + b _080E01DA + .align 2, 0 +_080E0178: .4byte gUnknown_85C98EC +_080E017C: .4byte sub_080E01F0 +_080E0180: + ldr r0, _080E01B4 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + ldr r2, _080E01B8 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080E01BC + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r7 + ldr r1, [r1] + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldrb r0, [r4, #0xf] + cmp r0, #1 + bne _080E01C8 + ldr r0, _080E01C0 + ldr r1, _080E01C4 + bl sub_08008BCC + b _080E01D0 + .align 2, 0 +_080E01B4: .4byte gUnknown_2021C40 +_080E01B8: .4byte gUnknown_8580CD1 +_080E01BC: .4byte gUnknown_2021C54 +_080E01C0: .4byte gUnknown_2021C7C +_080E01C4: .4byte gUnknown_85C9936 +_080E01C8: + ldr r0, _080E01E4 + ldr r1, _080E01E8 + bl sub_08008BCC +_080E01D0: + ldr r1, _080E01E4 + ldr r2, _080E01EC + adds r0, r6, #0 + bl sub_080DFA2C +_080E01DA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E01E4: .4byte gUnknown_2021C7C +_080E01E8: .4byte gUnknown_85C994B +_080E01EC: .4byte sub_080E03F8 + thumb_func_end sub_080E000C + + thumb_func_start sub_080E01F0 +sub_080E01F0: @ 0x080E01F0 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r5, r6, #2 + adds r5, r5, r6 + lsls r5, r5, #3 + ldr r0, _080E0290 + adds r5, r5, r0 + ldrh r0, [r5, #0xa] + bl sub_080D68D4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #3 + movs r1, #0 + movs r2, #1 + movs r3, #0xd + bl sub_08197F44 + ldr r0, _080E0294 + adds r1, r4, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _080E0298 + ldr r1, _080E029C + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #3 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080DF9E8 + movs r0, #1 + strh r0, [r5, #2] + movs r0, #4 + movs r1, #0 + movs r2, #1 + movs r3, #0xd + bl sub_08197F44 + adds r0, r6, #0 + bl sub_080E0638 + movs r0, #0 + bl sub_08199654 + ldr r0, _080E02A0 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + ldr r1, _080E02A4 + ldr r4, [r1] + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r4, r2 + ldr r1, [r1] + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x63 + bls _080E02AC + ldr r0, _080E02A8 + adds r1, r4, r0 + movs r0, #0x63 + strb r0, [r1] + b _080E02B2 + .align 2, 0 +_080E0290: .4byte gUnknown_3005B68 +_080E0294: .4byte gUnknown_2021C40 +_080E0298: .4byte gUnknown_2021C7C +_080E029C: .4byte gUnknown_85C98D5 +_080E02A0: .4byte gUnknown_3005AEC +_080E02A4: .4byte gUnknown_2039C10 +_080E02A8: .4byte 0x0000200A +_080E02AC: + ldr r2, _080E02C8 + adds r0, r4, r2 + strb r1, [r0] +_080E02B2: + ldr r0, _080E02CC + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080E02D0 + str r0, [r1] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E02C8: .4byte 0x0000200A +_080E02CC: .4byte gUnknown_3005B60 +_080E02D0: .4byte sub_080E02D4 + thumb_func_end sub_080E01F0 + + thumb_func_start sub_080E02D4 +sub_080E02D4: @ 0x080E02D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, r6, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080E0330 + adds r5, r0, r1 + adds r0, r5, #2 + ldr r7, _080E0334 + ldr r1, [r7] + ldr r2, _080E0338 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E033C + ldrh r0, [r5, #0xa] + bl sub_080D6CD4 + adds r4, r0, #0 + movs r0, #1 + bl sub_080EFB3C + ldr r1, [r7] + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r1, r2 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r4, r0 + movs r2, #2 + ldrsh r0, [r5, r2] + muls r0, r4, r0 + str r0, [r1] + adds r0, r6, #0 + bl sub_080E0638 + b _080E03F0 + .align 2, 0 +_080E0330: .4byte gUnknown_3005B68 +_080E0334: .4byte gUnknown_2039C10 +_080E0338: .4byte 0x0000200A +_080E033C: + ldr r0, _080E03A8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080E03C0 + movs r0, #5 + bl sub_080A306C + movs r0, #4 + movs r1, #0 + bl sub_08198134 + movs r0, #3 + movs r1, #0 + bl sub_08198134 + movs r0, #4 + bl sub_08003774 + movs r0, #3 + bl sub_08003774 + movs r0, #1 + bl sub_0800365C + ldrh r0, [r5, #0xa] + ldr r1, _080E03AC + bl sub_080D5EC8 + ldr r0, _080E03B0 + movs r2, #2 + ldrsh r1, [r5, r2] + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r0, _080E03B4 + ldr r1, [r7] + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldr r1, _080E03B8 + ldr r2, _080E03BC + adds r0, r6, #0 + bl sub_080DFA2C + b _080E03F0 + .align 2, 0 +_080E03A8: .4byte gUnknown_3002360 +_080E03AC: .4byte gUnknown_2021C40 +_080E03B0: .4byte gUnknown_2021C54 +_080E03B4: .4byte gUnknown_2021C68 +_080E03B8: .4byte gUnknown_85C991F +_080E03BC: .4byte sub_080E03F8 +_080E03C0: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080E03F0 + movs r0, #5 + bl sub_080A306C + movs r0, #4 + movs r1, #0 + bl sub_08198134 + movs r0, #3 + movs r1, #0 + bl sub_08198134 + movs r0, #4 + bl sub_08003774 + movs r0, #3 + bl sub_08003774 + adds r0, r4, #0 + bl sub_080E05EC +_080E03F0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E02D4 + + thumb_func_start sub_080E03F8 +sub_080E03F8: @ 0x080E03F8 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E0420 + movs r2, #0 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0xd + str r2, [sp, #8] + ldr r2, _080E0424 + str r2, [sp, #0xc] + movs r2, #1 + movs r3, #0 + bl sub_08121F84 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_080E0420: .4byte gUnknown_8562A2C +_080E0424: .4byte gUnknown_856298C + thumb_func_end sub_080E03F8 + + thumb_func_start sub_080E0428 +sub_080E0428: @ 0x080E0428 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080E046C + adds r4, r0, r1 + movs r0, #1 + bl sub_0800365C + ldr r6, _080E0470 + ldrb r0, [r6, #0xf] + cmp r0, #0 + bne _080E048C + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #2] + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E047C + ldr r1, _080E0474 + ldr r2, _080E0478 + adds r0, r5, #0 + bl sub_080DFA2C + adds r0, r5, #0 + bl sub_080E0750 + b _080E04C6 + .align 2, 0 +_080E046C: .4byte gUnknown_3005B68 +_080E0470: .4byte gUnknown_2039C00 +_080E0474: .4byte gUnknown_85C9962 +_080E0478: .4byte sub_080E04D4 +_080E047C: + ldr r1, _080E0484 + ldr r2, _080E0488 + b _080E04AC + .align 2, 0 +_080E0484: .4byte gUnknown_85C99C8 +_080E0488: .4byte sub_080E05EC +_080E048C: + ldrb r0, [r4, #0xa] + bl sub_08161868 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E04BC + ldrb r0, [r6, #0xf] + cmp r0, #1 + bne _080E04A8 + ldr r1, _080E04A4 + b _080E04AA + .align 2, 0 +_080E04A4: .4byte gUnknown_85C9976 +_080E04A8: + ldr r1, _080E04B4 +_080E04AA: + ldr r2, _080E04B8 +_080E04AC: + adds r0, r5, #0 + bl sub_080DFA2C + b _080E04C6 + .align 2, 0 +_080E04B4: .4byte gUnknown_85C9998 +_080E04B8: .4byte sub_080E04D4 +_080E04BC: + ldr r1, _080E04CC + ldr r2, _080E04D0 + adds r0, r7, #0 + bl sub_080DFA2C +_080E04C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E04CC: .4byte gUnknown_85C99DE +_080E04D0: .4byte sub_080E05EC + thumb_func_end sub_080E0428 + + thumb_func_start sub_080E04D4 +sub_080E04D4: @ 0x080E04D4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x26 + bl sub_0808414C + ldr r5, _080E0528 + ldr r0, [r5] + movs r4, #0x92 + lsls r4, r4, #3 + adds r0, r0, r4 + ldr r1, _080E052C + ldr r1, [r1] + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080E4980 + movs r0, #0x5f + bl sub_080A306C + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080E4908 + adds r1, r0, #0 + movs r0, #0 + movs r2, #0 + bl sub_080E49E8 + ldr r0, _080E0530 + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080E053C + ldr r0, _080E0534 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080E0538 + b _080E0548 + .align 2, 0 +_080E0528: .4byte gUnknown_3005AEC +_080E052C: .4byte gUnknown_2039C10 +_080E0530: .4byte gUnknown_2039C00 +_080E0534: .4byte gUnknown_3005B60 +_080E0538: .4byte sub_080E0558 +_080E053C: + ldr r0, _080E0550 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080E0554 +_080E0548: + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0550: .4byte gUnknown_3005B60 +_080E0554: .4byte sub_080E05C4 + thumb_func_end sub_080E04D4 + + thumb_func_start sub_080E0558 +sub_080E0558: @ 0x080E0558 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080E05A8 + adds r5, r0, r1 + ldr r0, _080E05AC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080E05BE + movs r0, #5 + bl sub_080A306C + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #4 + bne _080E05B8 + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #9 + ble _080E05B8 + movs r0, #0xc + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E05B8 + ldr r1, _080E05B0 + ldr r2, _080E05B4 + adds r0, r4, #0 + bl sub_080DFA2C + b _080E05BE + .align 2, 0 +_080E05A8: .4byte gUnknown_3005B68 +_080E05AC: .4byte gUnknown_3002360 +_080E05B0: .4byte gUnknown_85C9A2D +_080E05B4: .4byte sub_080E05EC +_080E05B8: + adds r0, r4, #0 + bl sub_080E05EC +_080E05BE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080E0558 + + thumb_func_start sub_080E05C4 +sub_080E05C4: @ 0x080E05C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080E05E8 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080E05E2 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_080E05EC +_080E05E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E05E8: .4byte gUnknown_3002360 + thumb_func_end sub_080E05C4 + + thumb_func_start sub_080E05EC +sub_080E05EC: @ 0x080E05EC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _080E0630 + adds r6, r4, r5 + movs r0, #5 + movs r1, #0 + bl sub_08197EBC + ldrb r0, [r6, #0xe] + movs r1, #1 + bl sub_080DF794 + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + bl sub_080DF70C + subs r5, #8 + adds r4, r4, r5 + ldr r0, _080E0634 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0630: .4byte gUnknown_3005B68 +_080E0634: .4byte sub_080E000C + thumb_func_end sub_080E05EC + + thumb_func_start sub_080E0638 +sub_080E0638: @ 0x080E0638 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _080E06A0 + adds r4, r4, r0 + movs r0, #4 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _080E06A4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r0, r1 + ldr r3, [r0] + movs r0, #0xff + str r0, [sp] + movs r0, #4 + movs r1, #0x20 + movs r2, #2 + bl sub_080E4A08 + ldr r0, _080E06A8 + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _080E06AC + ldr r1, _080E06B0 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #4 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080DF9E8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E06A0: .4byte gUnknown_3005B68 +_080E06A4: .4byte gUnknown_2039C10 +_080E06A8: .4byte gUnknown_2021C40 +_080E06AC: .4byte gUnknown_2021C7C +_080E06B0: .4byte gUnknown_85C943C + thumb_func_end sub_080E0638 + + thumb_func_start sub_080E06B4 +sub_080E06B4: @ 0x080E06B4 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _080E06EC + ldr r0, _080E06F0 + str r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _080E06F4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080E06F8 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E06EC: .4byte gUnknown_3005B0C +_080E06F0: .4byte sub_080DF22C +_080E06F4: .4byte gUnknown_3005B60 +_080E06F8: .4byte sub_080E06FC + thumb_func_end sub_080E06B4 + + thumb_func_start sub_080E06FC +sub_080E06FC: @ 0x080E06FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080E0728 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E0722 + bl sub_080E4BD0 + bl sub_080DF448 + ldr r0, _080E072C + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_080E0722: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0728: .4byte gUnknown_2037C74 +_080E072C: .4byte sub_08085A30 + thumb_func_end sub_080E06FC + + thumb_func_start sub_080E0730 +sub_080E0730: @ 0x080E0730 + push {lr} + ldr r0, _080E0748 + movs r1, #0 + strb r1, [r0] + ldr r0, _080E074C + movs r1, #0 + movs r2, #0xc + bl memset + pop {r0} + bx r0 + .align 2, 0 +_080E0748: .4byte gUnknown_2039C1C +_080E074C: .4byte gUnknown_2039C20 + thumb_func_end sub_080E0730 + + thumb_func_start sub_080E0750 +sub_080E0750: @ 0x080E0750 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E078C + adds r4, r1, r0 + movs r3, #0 + ldr r5, _080E0790 + adds r6, r5, #0 +_080E0766: + lsls r0, r3, #2 + adds r2, r0, r6 + ldrh r1, [r2] + movs r7, #0xa + ldrsh r0, [r4, r7] + cmp r1, r0 + bne _080E079C + ldrh r0, [r2, #2] + cmp r0, #0 + beq _080E079C + adds r1, r0, #0 + movs r3, #2 + ldrsh r0, [r4, r3] + adds r0, r1, r0 + cmp r0, #0xff + ble _080E0794 + movs r0, #0xff + strh r0, [r2, #2] + b _080E07C6 + .align 2, 0 +_080E078C: .4byte gUnknown_3005B68 +_080E0790: .4byte gUnknown_2039C20 +_080E0794: + ldrh r0, [r4, #2] + adds r0, r1, r0 + strh r0, [r2, #2] + b _080E07C6 +_080E079C: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #2 + bls _080E0766 + ldr r2, _080E07CC + ldrb r0, [r2] + cmp r0, #2 + bhi _080E07C6 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r4, #0xa] + strh r1, [r0] + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r4, #2] + strh r1, [r0, #2] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_080E07C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E07CC: .4byte gUnknown_2039C1C + thumb_func_end sub_080E0750 + + thumb_func_start sub_080E07D0 +sub_080E07D0: @ 0x080E07D0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_080DEFF0 + adds r0, r4, #0 + bl sub_080DF0A4 + bl sub_080E0730 + ldr r0, _080E07F0 + bl sub_080DF098 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E07F0: .4byte sub_080988C4 + thumb_func_end sub_080E07D0 + + thumb_func_start sub_080E07F4 +sub_080E07F4: @ 0x080E07F4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_080DEFF0 + adds r0, r4, #0 + bl sub_080DF0A4 + ldr r0, _080E0810 + bl sub_080DF098 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0810: .4byte sub_080988C4 + thumb_func_end sub_080E07F4 + + thumb_func_start sub_080E0814 +sub_080E0814: @ 0x080E0814 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl sub_080DEFF0 + adds r0, r4, #0 + bl sub_080DF0A4 + ldr r0, _080E0830 + bl sub_080DF098 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0830: .4byte sub_080988C4 + thumb_func_end sub_080E0814 + + thumb_func_start sub_080E0834 +sub_080E0834: @ 0x080E0834 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sl, r2 + ldr r2, _080E08C8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r1, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r1, #0x12] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r4, [r1, #0xa] + movs r2, #0xc + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _080E08F8 + movs r2, #0 + lsls r5, r5, #0x10 + str r5, [sp, #0xc] + lsls r0, r3, #0x10 + lsls r1, r4, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + asrs r1, r1, #0x10 + str r1, [sp, #4] + lsls r0, r1, #1 + mov r1, sb + adds r7, r0, r1 +_080E0888: + movs r4, #0 + lsls r2, r2, #0x10 + mov r8, r2 + asrs r0, r2, #0x10 + ldr r2, [sp] + adds r6, r2, r0 +_080E0894: + ldr r0, [sp, #0xc] + asrs r1, r0, #0x10 + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + adds r5, r1, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087B88 + movs r2, #0 + ldrsh r1, [r7, r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _080E08DC + ldr r0, [sp, #4] + cmp r0, #2 + beq _080E08CC + ldrh r0, [r7, #2] + mov r2, sl + orrs r2, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087C54 + b _080E08DC + .align 2, 0 +_080E08C8: .4byte gUnknown_3005B60 +_080E08CC: + mov r1, sb + ldrh r0, [r1] + mov r2, sl + orrs r2, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087C54 +_080E08DC: + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r4, r2 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080E0894 + adds r0, r2, #0 + add r0, r8 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080E0888 + b _080E0980 +_080E08F8: + movs r2, #0 + lsls r5, r5, #0x10 + str r5, [sp, #0xc] + lsls r0, r3, #0x10 + lsls r1, r4, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #8] + asrs r7, r1, #0x10 +_080E0908: + movs r4, #0 + lsls r2, r2, #0x10 + mov r8, r2 + asrs r0, r2, #0x10 + ldr r1, [sp, #8] + adds r6, r1, r0 +_080E0914: + ldr r2, [sp, #0xc] + asrs r1, r2, #0x10 + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + adds r5, r1, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087B88 + movs r1, #2 + subs r1, r1, r7 + lsls r1, r1, #1 + add r1, sb + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _080E0966 + cmp r7, #2 + beq _080E0956 + movs r0, #1 + subs r0, r0, r7 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + mov r2, sl + orrs r2, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087C54 + b _080E0966 +_080E0956: + mov r1, sb + ldrh r0, [r1, #4] + mov r2, sl + orrs r2, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087C54 +_080E0966: + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r4, r2 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080E0914 + adds r0, r2, #0 + add r0, r8 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _080E0908 +_080E0980: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E0834 + + thumb_func_start sub_080E0990 +sub_080E0990: @ 0x080E0990 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _080E09B8 + adds r4, r0, r1 + movs r0, #1 + strh r0, [r4, #6] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #6 + bhi _080E0A2A + lsls r0, r0, #2 + ldr r1, _080E09BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E09B8: .4byte gUnknown_3005B68 +_080E09BC: .4byte _080E09C0 +_080E09C0: @ jump table + .4byte _080E09DC @ case 0 + .4byte _080E09E4 @ case 1 + .4byte _080E09EC @ case 2 + .4byte _080E09F4 @ case 3 + .4byte _080E09FC @ case 4 + .4byte _080E0A10 @ case 5 + .4byte _080E0A20 @ case 6 +_080E09DC: + ldr r1, _080E09E0 + b _080E0A12 + .align 2, 0 +_080E09E0: .4byte gUnknown_8562A3E +_080E09E4: + ldr r1, _080E09E8 + b _080E0A12 + .align 2, 0 +_080E09E8: .4byte gUnknown_8562A44 +_080E09EC: + ldr r1, _080E09F0 + b _080E09FE + .align 2, 0 +_080E09F0: .4byte gUnknown_8562A4A +_080E09F4: + ldr r1, _080E09F8 + b _080E0A12 + .align 2, 0 +_080E09F8: .4byte gUnknown_8562A50 +_080E09FC: + ldr r1, _080E0A0C +_080E09FE: + movs r2, #0xc0 + lsls r2, r2, #4 + adds r0, r3, #0 + bl sub_080E0834 + b _080E0A2A + .align 2, 0 +_080E0A0C: .4byte gUnknown_8562A56 +_080E0A10: + ldr r1, _080E0A1C +_080E0A12: + adds r0, r3, #0 + movs r2, #0 + bl sub_080E0834 + b _080E0A2A + .align 2, 0 +_080E0A1C: .4byte gUnknown_8562A5C +_080E0A20: + ldr r1, _080E0A54 + adds r0, r3, #0 + movs r2, #0 + bl sub_080E0834 +_080E0A2A: + ldrh r0, [r4] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strh r0, [r4] + adds r5, r0, #0 + cmp r5, #0 + bne _080E0A4E + bl sub_08089598 + movs r1, #2 + ldrsh r0, [r4, r1] + adds r0, #1 + movs r1, #3 + bl __modsi3 + strh r0, [r4, #2] + strh r5, [r4, #6] +_080E0A4E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E0A54: .4byte gUnknown_8562A62 + thumb_func_end sub_080E0990 + + thumb_func_start sub_080E0A58 +sub_080E0A58: @ 0x080E0A58 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r6, _080E0A9C + adds r0, r6, #0 + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080E0AA0 + adds r7, r0, r1 + adds r0, r7, #0 + adds r0, #8 + adds r1, r7, #0 + adds r1, #0xa + bl sub_0808B410 + movs r0, #0 + strh r0, [r7] + strh r0, [r7, #2] + strh r5, [r7, #4] + adds r0, r4, #0 + bl _call_via_r6 + adds r0, r4, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080E0A9C: .4byte sub_080E0990 +_080E0AA0: .4byte gUnknown_3005B68 + thumb_func_end sub_080E0A58 + + thumb_func_start sub_080E0AA4 +sub_080E0AA4: @ 0x080E0AA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0A58 + ldr r1, _080E0AB8 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080E0AB8: .4byte gUnknown_2039C2C + thumb_func_end sub_080E0AA4 + + thumb_func_start sub_080E0ABC +sub_080E0ABC: @ 0x080E0ABC + push {lr} + ldr r0, _080E0ACC + ldrb r0, [r0] + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 +_080E0ACC: .4byte gUnknown_2039C2C + thumb_func_end sub_080E0ABC + + thumb_func_start sub_080E0AD0 +sub_080E0AD0: @ 0x080E0AD0 + push {lr} + ldr r2, _080E0AF4 + ldr r0, _080E0AF8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + movs r2, #0xe + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _080E0AFC + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #2 + bne _080E0AFC + movs r0, #0 + b _080E0AFE + .align 2, 0 +_080E0AF4: .4byte gUnknown_3005B60 +_080E0AF8: .4byte gUnknown_2039C2C +_080E0AFC: + movs r0, #1 +_080E0AFE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0AD0 + + thumb_func_start sub_080E0B04 +sub_080E0B04: @ 0x080E0B04 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r0, _080E0B24 + ldr r1, [r0] + ldr r0, _080E0B28 + adds r1, r1, r0 + ldr r2, _080E0B2C + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080E0B24: .4byte gUnknown_3005AEC +_080E0B28: .4byte 0x000031F8 +_080E0B2C: .4byte 0x0100001A + thumb_func_end sub_080E0B04 + + thumb_func_start sub_080E0B30 +sub_080E0B30: @ 0x080E0B30 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080E0B54 + ldr r0, [r0] + ldr r1, _080E0B58 + adds r3, r0, r1 + movs r2, #0 +_080E0B3E: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #0x33 + bls _080E0B3E + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E0B54: .4byte gUnknown_3005AEC +_080E0B58: .4byte 0x000031F8 + thumb_func_end sub_080E0B30 + + thumb_func_start sub_080E0B5C +sub_080E0B5C: @ 0x080E0B5C + push {lr} + adds r3, r0, #0 + movs r2, #0 + movs r1, #0 +_080E0B64: + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r2, r0 + adds r1, #1 + cmp r1, #0x2f + bls _080E0B64 + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0B5C + + thumb_func_start sub_080E0B78 +sub_080E0B78: @ 0x080E0B78 + push {r4, lr} + ldr r4, _080E0BAC + ldr r1, [r4] + ldr r2, _080E0BB0 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080E0BC0 + ldr r2, _080E0BB4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080E0BC0 + ldr r2, _080E0BB8 + adds r0, r1, r2 + bl sub_080E0B5C + ldr r1, [r4] + ldr r2, _080E0BBC + adds r1, r1, r2 + ldr r1, [r1] + cmp r0, r1 + bne _080E0BC0 + movs r0, #1 + b _080E0BC2 + .align 2, 0 +_080E0BAC: .4byte gUnknown_3005AEC +_080E0BB0: .4byte 0x0000320C +_080E0BB4: .4byte 0x00003202 +_080E0BB8: .4byte 0x000031F8 +_080E0BBC: .4byte 0x00003228 +_080E0BC0: + movs r0, #0 +_080E0BC2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080E0B78 + + thumb_func_start sub_080E0BC8 +sub_080E0BC8: @ 0x080E0BC8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x2b + bne _080E0BEC + bl sub_080E0B78 + cmp r0, #0 + beq _080E0BEC + ldr r0, _080E0BE4 + ldr r0, [r0] + ldr r1, _080E0BE8 + b _080E0C00 + .align 2, 0 +_080E0BE4: .4byte gUnknown_3005AEC +_080E0BE8: .4byte 0x000031F8 +_080E0BEC: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x2a + bls _080E0BF8 + movs r4, #1 +_080E0BF8: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080E0C08 +_080E0C00: + adds r0, r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E0C08: .4byte gUnknown_8563134 + thumb_func_end sub_080E0BC8 + + thumb_func_start sub_080E0C0C +sub_080E0C0C: @ 0x080E0C0C + lsls r0, r0, #0x18 + ldr r1, _080E0C20 + lsrs r0, r0, #0x15 + ldr r2, _080E0C24 + adds r0, r0, r2 + ldr r1, [r1] + adds r1, r1, r0 + adds r0, r1, #0 + bx lr + .align 2, 0 +_080E0C20: .4byte gUnknown_3005AEC +_080E0C24: .4byte 0x0000169C + thumb_func_end sub_080E0C0C + + thumb_func_start sub_080E0C28 +sub_080E0C28: @ 0x080E0C28 + push {lr} + ldr r0, _080E0C50 + ldrb r0, [r0] + bl sub_0808EA80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0C0C + adds r2, r0, #0 + ldrb r0, [r2, #1] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + cmp r0, #2 + beq _080E0C64 + cmp r0, #2 + bgt _080E0C54 + cmp r0, #1 + beq _080E0C5E + b _080E0C7A + .align 2, 0 +_080E0C50: .4byte gUnknown_3005B50 +_080E0C54: + cmp r0, #3 + beq _080E0C6A + cmp r0, #4 + beq _080E0C70 + b _080E0C7A +_080E0C5E: + ldrb r0, [r2, #5] + movs r1, #0x10 + b _080E0C74 +_080E0C64: + ldrb r0, [r2, #5] + movs r1, #0x20 + b _080E0C74 +_080E0C6A: + ldrb r0, [r2, #5] + movs r1, #0x40 + b _080E0C74 +_080E0C70: + ldrb r0, [r2, #5] + movs r1, #0x80 +_080E0C74: + orrs r0, r1 + strb r0, [r2, #5] + b _080E0C7E +_080E0C7A: + movs r0, #0 + b _080E0C80 +_080E0C7E: + movs r0, #1 +_080E0C80: + pop {r1} + bx r1 + thumb_func_end sub_080E0C28 + + thumb_func_start sub_080E0C84 +sub_080E0C84: @ 0x080E0C84 + push {lr} + bl sub_0809CB58 + ldr r1, _080E0CAC + cmp r0, r1 + bne _080E0CB4 + ldr r0, _080E0CB0 + ldrb r0, [r0] + bl sub_0808EA80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0F14 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E0CB4 + movs r0, #1 + b _080E0CB6 + .align 2, 0 +_080E0CAC: .4byte gUnknown_8244D23 +_080E0CB0: .4byte gUnknown_3005B50 +_080E0CB4: + movs r0, #0 +_080E0CB6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0C84 + + thumb_func_start sub_080E0CBC +sub_080E0CBC: @ 0x080E0CBC + push {lr} + bl sub_0809CB58 + ldr r1, _080E0CD4 + cmp r0, r1 + bne _080E0CD8 + bl sub_080E0C28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080E0CDA + .align 2, 0 +_080E0CD4: .4byte gUnknown_8244D23 +_080E0CD8: + movs r0, #0 +_080E0CDA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0CBC + + thumb_func_start sub_080E0CE0 +sub_080E0CE0: @ 0x080E0CE0 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r6, _080E0D08 + ldr r5, _080E0D0C + ldr r0, _080E0D10 + ldr r3, [r0] + ldr r4, [r0, #4] +_080E0CEE: + ldr r0, [r6] + lsls r1, r2, #3 + adds r0, r0, r1 + adds r0, r0, r5 + str r3, [r0] + str r4, [r0, #4] + adds r2, #1 + cmp r2, #0x7f + ble _080E0CEE + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E0D08: .4byte gUnknown_3005AEC +_080E0D0C: .4byte 0x0000169C +_080E0D10: .4byte gUnknown_85636B0 + thumb_func_end sub_080E0CE0 + + thumb_func_start sub_080E0D14 +sub_080E0D14: @ 0x080E0D14 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080E0D26 +_080E0D22: + movs r0, #0 + b _080E0DB2 +_080E0D26: + lsls r0, r1, #0x19 + lsrs r0, r0, #0x19 + cmp r0, #5 + bhi _080E0DB0 + lsls r0, r0, #2 + ldr r1, _080E0D38 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E0D38: .4byte _080E0D3C +_080E0D3C: @ jump table + .4byte _080E0D22 @ case 0 + .4byte _080E0D5C @ case 1 + .4byte _080E0D5C @ case 2 + .4byte _080E0D5C @ case 3 + .4byte _080E0D54 @ case 4 + .4byte _080E0D74 @ case 5 +_080E0D54: + adds r0, r4, #0 + bl sub_080E1064 + strb r0, [r4, #4] +_080E0D5C: + ldrb r2, [r4, #1] + lsls r1, r2, #0x19 + lsrs r1, r1, #0x19 + adds r1, #1 + movs r0, #0x7f + ands r1, r0 + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + b _080E0DB0 +_080E0D74: + ldrb r0, [r4, #5] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r1, r0 + subs r0, #0x20 + ands r1, r0 + movs r0, #0x7f + ands r1, r0 + movs r0, #0 + strb r0, [r4, #4] + ldrb r2, [r4, #1] + subs r0, #0x80 + ands r0, r2 + movs r2, #2 + orrs r0, r2 + strb r0, [r4, #1] + adds r1, #1 + movs r0, #0xf + ands r1, r0 + strb r1, [r4, #5] + cmp r1, #0xa + bne _080E0DB0 + ldr r0, _080E0DB8 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r4] + str r1, [r4, #4] +_080E0DB0: + movs r0, #1 +_080E0DB2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E0DB8: .4byte gUnknown_85636B0 + thumb_func_end sub_080E0D14 + + thumb_func_start sub_080E0DBC +sub_080E0DBC: @ 0x080E0DBC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r2, #0 +_080E0DC2: + ldr r1, _080E0E0C + lsls r0, r2, #3 + ldr r3, _080E0E10 + adds r0, r0, r3 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + adds r7, r2, #1 + cmp r0, #0 + beq _080E0E5C + ldrb r1, [r4, #1] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080E0E5C + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E0E5C + ldrb r0, [r4] + bl sub_080E10A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #3 + subs r1, r1, r0 + cmp r6, r1 + blt _080E0E18 + ldr r0, _080E0E14 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r4] + str r1, [r4, #4] + b _080E0E5C + .align 2, 0 +_080E0E0C: .4byte gUnknown_3005AEC +_080E0E10: .4byte 0x0000169C +_080E0E14: .4byte gUnknown_85636B0 +_080E0E18: + adds r5, r6, #0 + cmp r5, #0 + beq _080E0E5C + ldrh r1, [r4, #2] + cmp r1, r5 + ble _080E0E28 + subs r0, r1, r5 + b _080E0E5A +_080E0E28: + subs r5, r5, r1 + ldrb r0, [r4] + bl sub_080E10A8 + strh r0, [r4, #2] + adds r0, r4, #0 + bl sub_080E0D14 + cmp r0, #0 + beq _080E0E5C + ldrb r1, [r4, #1] + movs r0, #0x7f + ands r0, r1 + cmp r0, #5 + bne _080E0E4C + ldrh r0, [r4, #2] + lsls r0, r0, #2 + strh r0, [r4, #2] +_080E0E4C: + cmp r5, #0 + beq _080E0E5C + ldrh r0, [r4, #2] + adds r1, r0, #0 + cmp r0, r5 + ble _080E0E28 + subs r0, r0, r5 +_080E0E5A: + strh r0, [r4, #2] +_080E0E5C: + adds r2, r7, #0 + cmp r2, #0x7f + ble _080E0DC2 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E0DBC + + thumb_func_start sub_080E0E68 +sub_080E0E68: @ 0x080E0E68 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + bl sub_080E0C0C + adds r6, r0, #0 + ldr r0, _080E0ECC + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r6] + str r1, [r6, #4] + strb r4, [r6] + adds r0, r4, #0 + bl sub_080E10A8 + strh r0, [r6, #2] + movs r1, #0x7f + ands r1, r5 + ldrb r2, [r6, #1] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #1] + cmp r5, #5 + bne _080E0EBA + adds r0, r6, #0 + bl sub_080E1064 + strb r0, [r6, #4] + ldrh r0, [r6, #2] + lsls r0, r0, #2 + strh r0, [r6, #2] +_080E0EBA: + cmp r7, #0 + bne _080E0EC6 + ldrb r0, [r6, #1] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r6, #1] +_080E0EC6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E0ECC: .4byte gUnknown_85636B0 + thumb_func_end sub_080E0E68 + + thumb_func_start sub_080E0ED0 +sub_080E0ED0: @ 0x080E0ED0 + lsls r0, r0, #0x18 + ldr r1, _080E0EEC + ldr r2, [r1] + lsrs r0, r0, #0x15 + adds r2, r2, r0 + ldr r0, _080E0EF0 + adds r2, r2, r0 + ldr r0, _080E0EF4 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_080E0EEC: .4byte gUnknown_3005AEC +_080E0EF0: .4byte 0x0000169C +_080E0EF4: .4byte gUnknown_85636B0 + thumb_func_end sub_080E0ED0 + + thumb_func_start sub_080E0EF8 +sub_080E0EF8: @ 0x080E0EF8 + lsls r0, r0, #0x18 + ldr r1, _080E0F0C + ldr r1, [r1] + lsrs r0, r0, #0x15 + adds r1, r1, r0 + ldr r0, _080E0F10 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080E0F0C: .4byte gUnknown_3005AEC +_080E0F10: .4byte 0x0000169C + thumb_func_end sub_080E0EF8 + + thumb_func_start sub_080E0F14 +sub_080E0F14: @ 0x080E0F14 + lsls r0, r0, #0x18 + ldr r1, _080E0F2C + ldr r1, [r1] + lsrs r0, r0, #0x15 + adds r1, r1, r0 + ldr r0, _080E0F30 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + bx lr + .align 2, 0 +_080E0F2C: .4byte gUnknown_3005AEC +_080E0F30: .4byte 0x0000169D + thumb_func_end sub_080E0F14 + + thumb_func_start sub_080E0F34 +sub_080E0F34: @ 0x080E0F34 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _080E0F50 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #0x2a + bhi _080E0F54 + adds r0, r1, #0 + adds r0, #0x7c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080E0F56 + .align 2, 0 +_080E0F50: .4byte 0xFF7B0000 +_080E0F54: + movs r0, #1 +_080E0F56: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0F34 + + thumb_func_start sub_080E0F5C +sub_080E0F5C: @ 0x080E0F5C + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _080E0F78 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #0x2a + bhi _080E0F7C + adds r0, r1, #0 + adds r0, #0x84 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _080E0F7E + .align 2, 0 +_080E0F78: .4byte 0xFFFF0000 +_080E0F7C: + movs r0, #0x85 +_080E0F7E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0F5C + + thumb_func_start sub_080E0F84 +sub_080E0F84: @ 0x080E0F84 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0BC8 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #6 + bl memcpy + movs r0, #0xff + strb r0, [r4, #6] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080E0F84 + + thumb_func_start sub_080E0FA4 +sub_080E0FA4: @ 0x080E0FA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0C0C + ldrb r2, [r0, #1] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #1] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E0FA4 + + thumb_func_start sub_080E0FBC +sub_080E0FBC: @ 0x080E0FBC + push {lr} + ldrb r2, [r0, #5] + movs r0, #0x10 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + lsrs r1, r0, #0x1f + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _080E0FD6 + adds r1, #1 +_080E0FD6: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _080E0FE4 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_080E0FE4: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _080E0FF2 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_080E0FF2: + adds r0, r1, #0 + pop {r1} + bx r1 + thumb_func_end sub_080E0FBC + + thumb_func_start sub_080E0FF8 +sub_080E0FF8: @ 0x080E0FF8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0C0C + bl sub_080E0FBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E0FF8 + + thumb_func_start sub_080E1010 +sub_080E1010: @ 0x080E1010 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #0 + bne _080E1026 + lsls r0, r6, #0x18 + b _080E105A +_080E1026: + subs r1, r0, r6 + subs r0, r2, #1 + adds r5, r1, #0 + muls r5, r0, r5 + adds r4, r1, #0 + muls r4, r2, r4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r4, r4, r5 + adds r4, #1 + adds r1, r4, #0 + bl __umodsi3 + adds r5, r5, r0 + movs r0, #3 + ands r0, r5 + cmp r0, #1 + bls _080E1054 + lsrs r0, r5, #2 + adds r0, #1 + b _080E1056 +_080E1054: + lsrs r0, r5, #2 +_080E1056: + adds r0, r0, r6 + lsls r0, r0, #0x18 +_080E105A: + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1010 + + thumb_func_start sub_080E1064 +sub_080E1064: @ 0x080E1064 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4] + bl sub_080E0BC8 + ldrb r6, [r0, #0xb] + ldrb r5, [r0, #0xa] + adds r0, r4, #0 + bl sub_080E0FBC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080E1010 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080E1064 + + thumb_func_start sub_080E1090 +sub_080E1090: @ 0x080E1090 + lsls r0, r0, #0x18 + ldr r1, _080E10A4 + ldr r1, [r1] + lsrs r0, r0, #0x15 + adds r1, r1, r0 + movs r0, #0xb5 + lsls r0, r0, #5 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080E10A4: .4byte gUnknown_3005AEC + thumb_func_end sub_080E1090 + + thumb_func_start sub_080E10A8 +sub_080E10A8: @ 0x080E10A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0BC8 + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #0x12 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_080E10A8 + + thumb_func_start sub_080E10C0 +sub_080E10C0: @ 0x080E10C0 + push {r4, r5, r6, lr} + ldr r0, _080E10FC + ldrb r0, [r0] + bl sub_0808EA80 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080E0EF8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #0 + bl sub_080E0FA4 + ldr r0, _080E1100 + ldrb r0, [r0] + ldr r1, _080E1104 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0809280C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E110C + ldr r1, _080E1108 + movs r0, #0xff + strh r0, [r1] + b _080E111A + .align 2, 0 +_080E10FC: .4byte gUnknown_3005B50 +_080E1100: .4byte gUnknown_2037292 +_080E1104: .4byte gUnknown_3005AEC +_080E1108: .4byte gUnknown_2037280 +_080E110C: + ldr r4, _080E1144 + adds r0, r5, #0 + bl sub_080E0F14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] +_080E111A: + ldr r4, _080E1148 + adds r0, r5, #0 + bl sub_080E0FF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r4, _080E114C + adds r0, r5, #0 + bl sub_080E1090 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r1, _080E1150 + adds r0, r6, #0 + bl sub_080E0F84 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1144: .4byte gUnknown_2037280 +_080E1148: .4byte gUnknown_2037282 +_080E114C: .4byte gUnknown_2037284 +_080E1150: .4byte gUnknown_2021C40 + thumb_func_end sub_080E10C0 + + thumb_func_start sub_080E1154 +sub_080E1154: @ 0x080E1154 + push {lr} + ldr r0, _080E1160 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080E1160: .4byte sub_081AA954 + thumb_func_end sub_080E1154 + + thumb_func_start sub_080E1164 +sub_080E1164: @ 0x080E1164 + push {r4, lr} + ldr r0, _080E1194 + ldrh r0, [r0] + bl sub_080E0F34 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080E1198 + ldrb r0, [r0] + bl sub_0808EA80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + movs r2, #1 + movs r3, #1 + bl sub_080E0E68 + bl sub_080E10C0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E1194: .4byte gUnknown_203CB48 +_080E1198: .4byte gUnknown_3005B50 + thumb_func_end sub_080E1164 + + thumb_func_start sub_080E119C +sub_080E119C: @ 0x080E119C + push {r4, r5, r6, lr} + ldr r0, _080E11E0 + ldrb r0, [r0] + bl sub_0808EA80 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + bl sub_080E0EF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _080E11E4 + bl sub_080E0F5C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_080E1090 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E11E0: .4byte gUnknown_3005B50 +_080E11E4: .4byte gUnknown_2037280 + thumb_func_end sub_080E119C + + thumb_func_start sub_080E11E8 +sub_080E11E8: @ 0x080E11E8 + push {lr} + ldr r0, _080E1210 + ldrb r0, [r0] + bl sub_0808EA80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E0ED0 + ldr r0, _080E1214 + ldrb r0, [r0] + ldr r1, _080E1218 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_08092860 + pop {r0} + bx r0 + .align 2, 0 +_080E1210: .4byte gUnknown_3005B50 +_080E1214: .4byte gUnknown_2037292 +_080E1218: .4byte gUnknown_3005AEC + thumb_func_end sub_080E11E8 + + thumb_func_start sub_080E121C +sub_080E121C: @ 0x080E121C + push {lr} + movs r0, #4 + bl sub_080D5F04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_080E121C + + thumb_func_start sub_080E122C +sub_080E122C: @ 0x080E122C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080884E4 + mov r0, sp + ldrh r2, [r0] + ldrh r1, [r4] + adds r1, #3 + adds r3, r2, #0 + adds r3, #0xe + lsls r1, r1, #0x10 + movs r5, #0x80 + lsls r5, r5, #0xc + adds r0, r1, r5 + lsrs r0, r0, #0x10 + mov sl, r0 + mov r5, sp + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov sb, r2 + ldr r4, _080E12C4 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + mov r8, r3 + asrs r7, r1, #0x10 + movs r6, #0xf +_080E1270: + ldrb r0, [r4] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _080E12AC + ldrb r0, [r4, #6] + cmp r0, #0xc + bne _080E12AC + ldrh r0, [r4, #0x10] + strh r0, [r5] + ldrh r0, [r4, #0x12] + mov r1, sp + strh r0, [r1, #2] + movs r2, #0 + ldrsh r1, [r5, r2] + cmp sb, r1 + bgt _080E12AC + cmp r1, r8 + bgt _080E12AC + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r7, r1 + bgt _080E12AC + mov r2, sl + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _080E12AC + ldrb r0, [r4, #0x1d] + bl sub_080E0FA4 +_080E12AC: + adds r4, #0x24 + subs r6, #1 + cmp r6, #0 + bge _080E1270 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E12C4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080E122C + + thumb_func_start sub_080E12C8 +sub_080E12C8: @ 0x080E12C8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + ldr r0, _080E1304 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E130C + ldr r0, _080E1308 + 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_080E13FC + movs r0, #1 + b _080E130E + .align 2, 0 +_080E1304: .4byte sub_080E1568 +_080E1308: .4byte gUnknown_2037290 +_080E130C: + movs r0, #0 +_080E130E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E12C8 + + thumb_func_start sub_080E1318 +sub_080E1318: @ 0x080E1318 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r4, [sp, #0x1c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080E1360 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E1368 + ldr r1, _080E1364 + 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_080E13FC + movs r0, #1 + b _080E136A + .align 2, 0 +_080E1360: .4byte sub_080E1568 +_080E1364: .4byte gUnknown_2037290 +_080E1368: + movs r0, #0 +_080E136A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1318 + + thumb_func_start sub_080E1378 +sub_080E1378: @ 0x080E1378 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + b _080E13AC +_080E1380: + cmp r1, #0xfd + bne _080E13A4 + adds r4, #1 + ldrb r0, [r4] + cmp r0, #1 + bne _080E13AC + ldr r0, _080E13A0 + ldr r0, [r0] + bl sub_0800893C + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r4, #1 + b _080E13AC + .align 2, 0 +_080E13A0: .4byte gUnknown_3005AF0 +_080E13A4: + adds r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080E13AC: + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _080E1380 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080E1378 + + thumb_func_start sub_080E13BC +sub_080E13BC: @ 0x080E13BC + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r0, [r7] + bl sub_080E1378 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #1 + cmp r5, r4 + bhs _080E13F2 +_080E13D4: + lsls r0, r5, #3 + adds r0, r0, r7 + ldr r0, [r0] + bl sub_080E1378 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + bhs _080E13E8 + adds r6, r0, #0 +_080E13E8: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r4 + blo _080E13D4 +_080E13F2: + adds r0, r6, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E13BC + + thumb_func_start sub_080E13FC +sub_080E13FC: @ 0x080E13FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r4, r0, #0 + adds r5, r1, #0 + mov sb, r2 + mov sl, r3 + ldr r0, [sp, #0x34] + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + mov r2, r8 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldr r1, _080E14C8 + mov r2, sb + lsls r0, r2, #3 + adds r0, r0, r1 + ldrb r6, [r0, #4] + ldr r7, [r0] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080E13BC + adds r2, r0, #0 + lsls r2, r2, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + lsls r3, r6, #0x19 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080E1F10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08197638 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r5, #0x10 + str r5, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r3, #2 + bl sub_081988CC + str r5, [sp] + str r6, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + mov r0, sl + adds r1, r6, #0 + adds r2, r4, #0 + mov r3, sb + bl sub_080E14CC + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E14C8: .4byte gUnknown_8564218 + thumb_func_end sub_080E13FC + + thumb_func_start sub_080E14CC +sub_080E14CC: @ 0x080E14CC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + ldr r1, _080E152C + movs r0, #2 + strb r0, [r1] + movs r2, #0 + ldr r6, _080E1530 + ldr r5, _080E1534 + movs r3, #0xc +_080E14F6: + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r4 + bne _080E1500 + strb r3, [r1] +_080E1500: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _080E14F6 + adds r0, r6, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080E1538 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + mov r0, r8 + strh r0, [r1, #0x10] + cmp r7, #3 + bls _080E153C + movs r0, #1 + b _080E153E + .align 2, 0 +_080E152C: .4byte gUnknown_2039C30 +_080E1530: .4byte sub_080E1568 +_080E1534: .4byte gUnknown_8564618 +_080E1538: .4byte gUnknown_3005B60 +_080E153C: + movs r0, #0 +_080E153E: + strh r0, [r1, #0x12] + ldr r1, _080E1564 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + mov r1, sb + strh r1, [r0, #0x14] + strh r4, [r0, #0x16] + adds r0, r4, #0 + bl sub_080E1F88 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1564: .4byte gUnknown_3005B60 + thumb_func_end sub_080E14CC + + thumb_func_start sub_080E1568 +sub_080E1568: @ 0x080E1568 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080E1594 + adds r5, r0, r1 + ldr r0, _080E1598 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E160C + ldr r1, _080E159C + ldrb r0, [r1] + cmp r0, #0 + beq _080E15A0 + subs r0, #1 + strb r0, [r1] + b _080E160C + .align 2, 0 +_080E1594: .4byte gUnknown_3005B68 +_080E1598: .4byte gUnknown_2037C74 +_080E159C: .4byte gUnknown_2039C30 +_080E15A0: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E15AE + bl sub_081986E8 + b _080E15B2 +_080E15AE: + bl sub_0819867C +_080E15B2: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080E15F0 + ldrh r1, [r0, #0x2e] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080E15C8 + ldrb r0, [r5, #0xe] + bl sub_080E1F88 +_080E15C8: + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E160C + adds r0, #1 + cmp r1, r0 + bne _080E15F8 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E160C + movs r0, #5 + bl sub_080A306C + ldr r1, _080E15F4 + movs r0, #0x7f + strh r0, [r1] + b _080E15FC + .align 2, 0 +_080E15F0: .4byte gUnknown_3002360 +_080E15F4: .4byte gUnknown_2037290 +_080E15F8: + ldr r0, _080E1614 + strh r1, [r0] +_080E15FC: + ldrb r0, [r5, #0xc] + bl sub_080E1F6C + adds r0, r6, #0 + bl sub_080A8964 + bl sub_080988C4 +_080E160C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E1614: .4byte gUnknown_2037290 + thumb_func_end sub_080E1568 + + thumb_func_start sub_080E1618 +sub_080E1618: @ 0x080E1618 + push {r4, lr} + ldr r4, _080E1640 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E1648 + ldr r1, _080E1644 + movs r0, #0xff + strh r0, [r1] + bl sub_08197714 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + movs r0, #1 + b _080E164A + .align 2, 0 +_080E1640: .4byte sub_080E166C +_080E1644: .4byte gUnknown_2037290 +_080E1648: + movs r0, #0 +_080E164A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080E1618 + + thumb_func_start sub_080E1650 +sub_080E1650: @ 0x080E1650 + push {lr} + ldr r0, _080E1660 + ldrh r0, [r0] + cmp r0, #0xff + beq _080E1664 + movs r0, #1 + b _080E1666 + .align 2, 0 +_080E1660: .4byte gUnknown_2037290 +_080E1664: + movs r0, #0 +_080E1666: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1650 + + thumb_func_start sub_080E166C +sub_080E166C: @ 0x080E166C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080E168C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #4 + bgt _080E1690 + adds r0, r2, #1 + strh r0, [r1, #0xc] + b _080E16D4 + .align 2, 0 +_080E168C: .4byte gUnknown_3005B60 +_080E1690: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E16B4 + cmp r1, r0 + bgt _080E16AC + subs r0, #1 + cmp r1, r0 + beq _080E16D4 + b _080E16CA +_080E16AC: + cmp r1, #0 + beq _080E16C4 + cmp r1, #1 + bne _080E16CA +_080E16B4: + movs r0, #5 + bl sub_080A306C + ldr r1, _080E16C0 + movs r0, #0 + b _080E16C8 + .align 2, 0 +_080E16C0: .4byte gUnknown_2037290 +_080E16C4: + ldr r1, _080E16DC + movs r0, #1 +_080E16C8: + strh r0, [r1] +_080E16CA: + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080E16D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E16DC: .4byte gUnknown_2037290 + thumb_func_end sub_080E166C + + thumb_func_start sub_080E16E0 +sub_080E16E0: @ 0x080E16E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r4, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + ldr r0, _080E17C8 + mov sb, r0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E17D8 + ldr r1, _080E17CC + movs r0, #0xff + strh r0, [r1] + ldr r1, _080E17D0 + lsls r0, r5, #3 + adds r0, r0, r1 + ldr r1, [r0] + mov r8, r1 + ldrb r5, [r0, #4] + mov r0, r8 + adds r1, r5, #0 + bl sub_080E13BC + adds r4, r0, #0 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r1, r7, #0 + bl __udivsi3 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, sb + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E17D4 + lsls r5, r0, #2 + adds r5, r5, r0 + lsls r5, r5, #3 + adds r5, r5, r1 + movs r0, #0 + mov sb, r0 + mov r1, sl + strh r1, [r5, #0x10] + adds r2, r4, #0 + muls r2, r7, r2 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r6, #0x19 + lsrs r3, r3, #0x18 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl sub_080E1F10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + movs r1, #0 + bl sub_08197638 + ldrb r0, [r5, #0x14] + lsls r4, r4, #0x1b + lsrs r4, r4, #0x18 + str r4, [sp] + movs r1, #0x10 + str r1, [sp, #4] + str r7, [sp, #8] + str r6, [sp, #0xc] + mov r1, r8 + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08198DA4 + ldrb r0, [r5, #0x14] + str r4, [sp] + str r7, [sp, #4] + str r6, [sp, #8] + mov r1, sb + str r1, [sp, #0xc] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081990E4 + ldrb r0, [r5, #0x14] + movs r1, #3 + bl sub_08003528 + movs r0, #1 + b _080E17DA + .align 2, 0 +_080E17C8: .4byte sub_080E17EC +_080E17CC: .4byte gUnknown_2037290 +_080E17D0: .4byte gUnknown_8564218 +_080E17D4: .4byte gUnknown_3005B60 +_080E17D8: + movs r0, #0 +_080E17DA: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E16E0 + + thumb_func_start sub_080E17EC +sub_080E17EC: @ 0x080E17EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080E1828 + adds r5, r0, r1 + bl sub_08199450 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E1844 + adds r0, #1 + cmp r1, r0 + bne _080E1830 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E1844 + movs r0, #5 + bl sub_080A306C + ldr r1, _080E182C + movs r0, #0x7f + strh r0, [r1] + b _080E1834 + .align 2, 0 +_080E1828: .4byte gUnknown_3005B68 +_080E182C: .4byte gUnknown_2037290 +_080E1830: + ldr r0, _080E184C + strh r1, [r0] +_080E1834: + ldrb r0, [r5, #0xc] + bl sub_080E1F6C + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080E1844: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E184C: .4byte gUnknown_2037290 + thumb_func_end sub_080E17EC + + thumb_func_start sub_080E1850 +sub_080E1850: @ 0x080E1850 + push {lr} + ldr r0, _080E1870 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E1878 + ldr r1, _080E1874 + movs r0, #0xff + strh r0, [r1] + bl sub_080E1880 + movs r0, #1 + b _080E187A + .align 2, 0 +_080E1870: .4byte sub_080E1568 +_080E1874: .4byte gUnknown_2037290 +_080E1878: + movs r0, #0 +_080E187A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1850 + + thumb_func_start sub_080E1880 +sub_080E1880: @ 0x080E1880 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + ldr r0, _080E18BC + bl sub_080E1378 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080E18C0 + bl sub_080E1378 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + bls _080E18C4 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + b _080E18C6 + .align 2, 0 +_080E18BC: .4byte gUnknown_85CACFE +_080E18C0: .4byte gUnknown_85CACEC +_080E18C4: + movs r4, #8 +_080E18C6: + ldr r0, _080E1924 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _080E1930 + movs r0, #4 + mov r8, r0 + adds r2, r4, #4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0 + movs r1, #0 + movs r3, #8 + bl sub_080E1F10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + movs r1, #0 + bl sub_08197638 + ldr r2, _080E1928 + movs r0, #0x22 + str r0, [sp] + movs r5, #0xff + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r3, r7, #0 + bl sub_0800449C + ldr r2, _080E192C + movs r0, #0x32 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r3, r7, #0 + bl sub_0800449C + b _080E1966 + .align 2, 0 +_080E1924: .4byte 0x00000864 +_080E1928: .4byte gUnknown_85CAD06 +_080E192C: .4byte gUnknown_85CAD0D +_080E1930: + movs r0, #3 + mov r8, r0 + adds r2, r4, #4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0 + movs r1, #0 + movs r3, #6 + bl sub_080E1F10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + movs r1, #0 + bl sub_08197638 + ldr r2, _080E1990 + movs r0, #0x22 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r5, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r3, r7, #0 + bl sub_0800449C +_080E1966: + ldr r0, _080E1994 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080E199C + ldr r2, _080E1998 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r3, r7, #0 + bl sub_0800449C + b _080E19B2 + .align 2, 0 +_080E1990: .4byte gUnknown_85CAD0D +_080E1994: .4byte 0x000008AB +_080E1998: .4byte gUnknown_85CACF5 +_080E199C: + ldr r2, _080E1A00 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r3, r7, #0 + bl sub_0800449C +_080E19B2: + ldr r4, _080E1A04 + ldr r1, _080E1A08 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r7, #0 + movs r3, #0x12 + bl sub_08199CBC + movs r0, #0x10 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + adds r0, r6, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + mov r1, r8 + adds r2, r6, #0 + movs r3, #1 + bl sub_080E14CC + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1A00: .4byte gUnknown_85CACEC +_080E1A04: .4byte gUnknown_2021C7C +_080E1A08: .4byte gUnknown_85CACFE + thumb_func_end sub_080E1880 + + thumb_func_start sub_080E1A0C +sub_080E1A0C: @ 0x080E1A0C + push {lr} + sub sp, #0x10 + movs r0, #0 + movs r1, #1 + bl sub_08197650 + ldr r2, _080E1A3C + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_080E1A3C: .4byte gUnknown_82436CD + thumb_func_end sub_080E1A0C + + thumb_func_start sub_080E1A40 +sub_080E1A40: @ 0x080E1A40 + push {lr} + ldr r0, _080E1A60 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E1A68 + ldr r1, _080E1A64 + movs r0, #0xff + strh r0, [r1] + bl sub_080E1A70 + movs r0, #1 + b _080E1A6A + .align 2, 0 +_080E1A60: .4byte sub_080E1568 +_080E1A64: .4byte gUnknown_2037290 +_080E1A68: + movs r0, #0 +_080E1A6A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1A40 + + thumb_func_start sub_080E1A70 +sub_080E1A70: @ 0x080E1A70 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + movs r6, #0 + movs r5, #0 + movs r4, #0 + ldr r3, _080E1C94 + movs r2, #0xff +_080E1A84: + adds r0, r4, r3 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080E1A84 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + ldr r0, _080E1C98 + ldrh r1, [r0] + cmp r1, #0 + bne _080E1ACE + movs r6, #6 + ldr r4, _080E1C94 + adds r0, r5, r4 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0xe8 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080E1ACE + adds r0, r5, r4 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1ACE: + ldr r0, _080E1C9C + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1B30 + ldr r0, _080E1CA0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1B30 + ldr r2, _080E1C98 + ldrh r0, [r2] + cmp r0, #0 + bne _080E1B04 + movs r6, #7 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1B04: + ldrh r0, [r2] + cmp r0, #1 + bne _080E1B30 + movs r4, #0xd7 + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E1B30 + movs r6, #7 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_0809D018 +_080E1B30: + movs r0, #0xb9 + lsls r0, r0, #1 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1B90 + movs r0, #0x8e + lsls r0, r0, #4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1B90 + ldr r2, _080E1C98 + ldrh r0, [r2] + cmp r0, #0 + bne _080E1B68 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #3 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1B68: + ldrh r0, [r2] + cmp r0, #1 + bne _080E1B90 + ldr r4, _080E1CA4 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E1B90 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #3 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_0809D018 +_080E1B90: + ldr r0, _080E1CA8 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1BF0 + ldr r0, _080E1CAC + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1BF0 + ldr r2, _080E1C98 + ldrh r0, [r2] + cmp r0, #0 + bne _080E1BC6 + movs r6, #8 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #4 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1BC6: + ldrh r0, [r2] + cmp r0, #1 + bne _080E1BF0 + ldr r4, _080E1CB0 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E1BF0 + movs r6, #8 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #4 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_0809D018 +_080E1BF0: + movs r0, #0xbc + lsls r0, r0, #1 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1C54 + ldr r0, _080E1CB4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1C54 + ldr r2, _080E1C98 + ldrh r0, [r2] + cmp r0, #0 + bne _080E1C28 + movs r6, #8 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #5 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1C28: + ldrh r0, [r2] + cmp r0, #1 + bne _080E1C54 + movs r4, #0xd8 + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E1C54 + movs r6, #8 + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #5 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_0809D018 +_080E1C54: + ldr r0, _080E1C94 + adds r0, r5, r0 + movs r1, #6 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080E1C98 + ldrh r0, [r0] + cmp r0, #0 + bne _080E1C7C + movs r0, #0xe8 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E1C7C + movs r6, #9 +_080E1C7C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r7, r5, #0 + cmp r7, #7 + bne _080E1CB8 + ldr r1, _080E1C98 + movs r0, #0xb + strh r0, [r1] + bl sub_0813A164 + b _080E1D54 + .align 2, 0 +_080E1C94: .4byte gUnknown_3001124 +_080E1C98: .4byte gUnknown_2037280 +_080E1C9C: .4byte 0x00000113 +_080E1CA0: .4byte 0x000008B3 +_080E1CA4: .4byte 0x000001DB +_080E1CA8: .4byte 0x00000173 +_080E1CAC: .4byte 0x000008D5 +_080E1CB0: .4byte 0x000001AF +_080E1CB4: .4byte 0x000008D6 +_080E1CB8: + movs r0, #0x1c + subs r0, r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #6 + subs r1, r1, r7 + lsls r1, r1, #0x19 + lsrs r1, r1, #0x18 + lsls r3, r7, #0x19 + lsrs r3, r3, #0x18 + adds r2, r6, #0 + bl sub_080E1F10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + movs r1, #0 + bl sub_08197638 + movs r5, #0 + movs r4, #0 + subs r0, r7, #1 + mov r8, r0 + ldr r1, _080E1D64 + mov sb, r1 +_080E1CEA: + ldr r0, _080E1D68 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _080E1D1C + lsls r0, r0, #2 + add r0, sb + ldr r2, [r0] + lsls r0, r5, #4 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + movs r3, #8 + bl sub_0800449C + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E1D1C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _080E1CEA + movs r0, #0x10 + str r0, [sp] + str r7, [sp, #4] + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + adds r0, r6, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + adds r1, r7, #0 + adds r2, r6, #0 + movs r3, #8 + bl sub_080E14CC +_080E1D54: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E1D64: .4byte gUnknown_8564620 +_080E1D68: .4byte gUnknown_3001124 + thumb_func_end sub_080E1A70 + + thumb_func_start sub_080E1D6C +sub_080E1D6C: @ 0x080E1D6C + push {lr} + ldr r2, _080E1D84 + ldrh r0, [r2] + cmp r0, #0x7f + beq _080E1D80 + ldr r0, _080E1D88 + ldrh r1, [r2] + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] +_080E1D80: + pop {r0} + bx r0 + .align 2, 0 +_080E1D84: .4byte gUnknown_2037290 +_080E1D88: .4byte gUnknown_3001124 + thumb_func_end sub_080E1D6C + + thumb_func_start sub_080E1D8C +sub_080E1D8C: @ 0x080E1D8C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080E1DB0 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080E1DEC + cmp r0, #1 + bgt _080E1DB4 + cmp r0, #0 + beq _080E1DD2 + b _080E1DEC + .align 2, 0 +_080E1DB0: .4byte gUnknown_3005B60 +_080E1DB4: + cmp r0, #2 + beq _080E1DBE + cmp r0, #3 + beq _080E1DE0 + b _080E1DEC +_080E1DBE: + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E1DDC + adds r0, r0, r1 + ldrb r1, [r4, #0xc] + bl sub_080B57C8 +_080E1DD2: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080E1DEC + .align 2, 0 +_080E1DDC: .4byte gUnknown_20205AC +_080E1DE0: + ldrb r0, [r4, #0x12] + bl sub_080E1F6C + adds r0, r5, #0 + bl sub_080A8964 +_080E1DEC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E1D8C + + thumb_func_start sub_080E1DF4 +sub_080E1DF4: @ 0x080E1DF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r4, _080E1E9C + adds r0, r4, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080E1EAC + lsls r1, r7, #0x13 + movs r0, #0xa0 + lsls r0, r0, #0xe + adds r1, r1, r0 + asrs r1, r1, #0x10 + lsls r2, r6, #0x13 + adds r2, r2, r0 + asrs r2, r2, #0x10 + mov r0, r8 + movs r3, #0 + bl sub_080B56DC + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #8 + movs r3, #8 + bl sub_080E1F10 + ldr r1, _080E1EA0 + lsls r3, r4, #2 + adds r3, r3, r4 + lsls r3, r3, #3 + adds r3, r3, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + strh r0, [r3, #0x12] + strh r1, [r3, #8] + mov r0, r8 + strh r0, [r3, #0xa] + strh r5, [r3, #0xc] + ldr r4, _080E1EA4 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _080E1EA8 + str r2, [r0] + adds r1, r1, r4 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + ldrb r0, [r3, #0x12] + movs r1, #1 + bl sub_08197638 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + b _080E1EAE + .align 2, 0 +_080E1E9C: .4byte sub_080E1D8C +_080E1EA0: .4byte gUnknown_3005B60 +_080E1EA4: .4byte gUnknown_20205AC +_080E1EA8: .4byte sub_08007140 +_080E1EAC: + movs r0, #0 +_080E1EAE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080E1DF4 + + thumb_func_start sub_080E1EB8 +sub_080E1EB8: @ 0x080E1EB8 + push {lr} + ldr r0, _080E1EDC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080E1EE8 + ldr r0, _080E1EE0 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + ldr r0, _080E1EE4 + b _080E1EEA + .align 2, 0 +_080E1EDC: .4byte sub_080E1D8C +_080E1EE0: .4byte gUnknown_3005B60 +_080E1EE4: .4byte sub_080E1EF0 +_080E1EE8: + movs r0, #0 +_080E1EEA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1EB8 + + thumb_func_start sub_080E1EF0 +sub_080E1EF0: @ 0x080E1EF0 + push {lr} + ldr r0, _080E1F04 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080E1F08 + movs r0, #0 + b _080E1F0A + .align 2, 0 +_080E1F04: .4byte sub_080E1D8C +_080E1F08: + movs r0, #1 +_080E1F0A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E1EF0 + + thumb_func_start sub_080E1F10 +sub_080E1F10: @ 0x080E1F10 + push {r4, r5, lr} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r4, r4, r0 + lsrs r4, r4, #0x18 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + str r2, [sp] + str r3, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x5c + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08198B60 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x18 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + add sp, #0x20 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080E1F10 + + thumb_func_start sub_080E1F6C +sub_080E1F6C: @ 0x080E1F6C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_08198134 + adds r0, r4, #0 + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080E1F6C + + thumb_func_start sub_080E1F88 +sub_080E1F88: @ 0x080E1F88 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x4a + cmp r0, #5 + bhi _080E2064 + lsls r0, r0, #2 + ldr r1, _080E1FA0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E1FA0: .4byte _080E1FA4 +_080E1FA4: @ jump table + .4byte _080E2034 @ case 0 + .4byte _080E1FFC @ case 1 + .4byte _080E1FCC @ case 2 + .4byte _080E1FBC @ case 3 + .4byte _080E1FDC @ case 4 + .4byte _080E1FEC @ case 5 +_080E1FBC: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E1FC8 + b _080E2006 + .align 2, 0 +_080E1FC8: .4byte gUnknown_856464C +_080E1FCC: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E1FD8 + b _080E2006 + .align 2, 0 +_080E1FD8: .4byte gUnknown_856463C +_080E1FDC: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E1FE8 + b _080E2006 + .align 2, 0 +_080E1FE8: .4byte gUnknown_856465C +_080E1FEC: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E1FF8 + b _080E2006 + .align 2, 0 +_080E1FF8: .4byte gUnknown_856466C +_080E1FFC: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E2030 +_080E2006: + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + b _080E2064 + .align 2, 0 +_080E2030: .4byte gUnknown_856468C +_080E2034: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _080E206C + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C +_080E2064: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E206C: .4byte gUnknown_8564680 + thumb_func_end sub_080E1F88 + + thumb_func_start sub_080E2070 +sub_080E2070: @ 0x080E2070 + push {lr} + ldr r0, _080E2090 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E2098 + ldr r1, _080E2094 + movs r0, #0xff + strh r0, [r1] + bl sub_080E20A0 + movs r0, #1 + b _080E209A + .align 2, 0 +_080E2090: .4byte sub_080E1568 +_080E2094: .4byte gUnknown_2037290 +_080E2098: + movs r0, #0 +_080E209A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E2070 + + thumb_func_start sub_080E20A0 +sub_080E20A0: @ 0x080E20A0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0xc + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r5, r0, #0 + adds r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + movs r0, #8 + mov sl, r0 + movs r0, #0x10 + mov sb, r0 + movs r0, #0x16 + movs r1, #0 + movs r2, #6 + movs r3, #0x10 + bl sub_080E1F10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08197638 + ldr r2, _080E21D8 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + mov r8, r0 + str r0, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21DC + movs r0, #0x12 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21E0 + movs r0, #0x22 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21E4 + movs r0, #0x32 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r0, _080E21E8 + ldr r2, [r0] + movs r0, #0x42 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21EC + movs r0, #0x52 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21F0 + movs r0, #0x62 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + ldr r2, _080E21F4 + movs r0, #0x72 + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r3, r5, #0 + bl sub_0800449C + mov r0, sb + str r0, [sp] + mov r0, sl + str r0, [sp, #4] + str r6, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + movs r1, #8 + adds r2, r4, #0 + movs r3, #0x56 + bl sub_080E21F8 + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E21D8: .4byte gUnknown_85CADAE +_080E21DC: .4byte gUnknown_85CADB2 +_080E21E0: .4byte gUnknown_85CADB7 +_080E21E4: .4byte gUnknown_85CADBB +_080E21E8: .4byte gUnknown_3005AF0 +_080E21EC: .4byte gUnknown_85CADC6 +_080E21F0: .4byte gUnknown_85CADCB +_080E21F4: .4byte gUnknown_85CADD0 + thumb_func_end sub_080E20A0 + + thumb_func_start sub_080E21F8 +sub_080E21F8: @ 0x080E21F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r1, _080E2238 + movs r0, #2 + strb r0, [r1] + ldr r0, _080E223C + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E2240 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r4, [r1, #0x10] + strh r0, [r1, #0x12] + strh r5, [r1, #0x14] + strh r6, [r1, #0x16] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E2238: .4byte gUnknown_2039C30 +_080E223C: .4byte sub_080E1568 +_080E2240: .4byte gUnknown_3005B60 + thumb_func_end sub_080E21F8 + + thumb_func_start sub_080E2244 +sub_080E2244: @ 0x080E2244 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r6, r3, #0x10 + ldr r4, _080E2270 + movs r0, #0xf2 + lsls r0, r0, #5 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _080E2274 + ldr r0, [sp, #0x1c] + bl sub_08000540 + b _080E22AE + .align 2, 0 +_080E2270: .4byte gUnknown_2039C34 +_080E2274: + ldr r1, _080E22B8 + adds r0, r0, r1 + strb r7, [r0] + ldr r0, [r4] + ldr r2, _080E22BC + adds r1, r0, r2 + strh r5, [r1] + adds r2, #2 + adds r1, r0, r2 + strh r6, [r1] + ldr r1, _080E22C0 + adds r2, r0, r1 + ldr r1, [sp, #0x18] + str r1, [r2] + ldr r2, _080E22C4 + adds r1, r0, r2 + mov r2, r8 + str r2, [r1] + ldr r1, _080E22C8 + adds r0, r0, r1 + ldr r2, [sp, #0x1c] + str r2, [r0] + cmp r7, #0 + bne _080E22A8 + bl sub_08000554 +_080E22A8: + ldr r0, _080E22CC + bl sub_08000540 +_080E22AE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E22B8: .4byte 0x00001E2C +_080E22BC: .4byte 0x00001E34 +_080E22C0: .4byte 0x00001E38 +_080E22C4: .4byte 0x00001E30 +_080E22C8: .4byte 0x00001E3C +_080E22CC: .4byte sub_080E22D0 + thumb_func_end sub_080E2244 + + thumb_func_start sub_080E22D0 +sub_080E22D0: @ 0x080E22D0 + push {lr} + ldr r0, _080E22EC + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #7 + bhi _080E2368 + lsls r0, r0, #2 + ldr r1, _080E22F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E22EC: .4byte gUnknown_3002360 +_080E22F0: .4byte _080E22F4 +_080E22F4: @ jump table + .4byte _080E2314 @ case 0 + .4byte _080E231E @ case 1 + .4byte _080E2324 @ case 2 + .4byte _080E232A @ case 3 + .4byte _080E2334 @ case 4 + .4byte _080E233A @ case 5 + .4byte _080E2340 @ case 6 + .4byte _080E2346 @ case 7 +_080E2314: + bl sub_080E4764 + bl sub_080E2374 + b _080E2352 +_080E231E: + bl sub_080E24AC + b _080E2352 +_080E2324: + bl sub_080A133C + b _080E2352 +_080E232A: + bl sub_0800668C + bl sub_08008424 + b _080E2352 +_080E2334: + bl sub_080A8818 + b _080E2352 +_080E233A: + bl sub_080E4460 + b _080E2352 +_080E2340: + bl sub_080E43EC + b _080E2352 +_080E2346: + bl sub_080E31EC + bl sub_080A12E4 + bl sub_080E4810 +_080E2352: + ldr r1, _080E2364 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080E2370 + .align 2, 0 +_080E2364: .4byte gUnknown_3002360 +_080E2368: + bl sub_080E4450 + bl sub_080E265C +_080E2370: + pop {r0} + bx r0 + thumb_func_end sub_080E22D0 + + thumb_func_start sub_080E2374 +sub_080E2374: @ 0x080E2374 + push {r4, r5, r6, lr} + ldr r5, _080E2434 + ldr r0, [r5] + ldr r1, _080E2438 + adds r0, r0, r1 + movs r2, #0 + strb r2, [r0] + ldr r1, [r5] + ldr r3, _080E243C + adds r0, r1, r3 + movs r4, #0 + strh r2, [r0] + adds r3, #2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _080E2440 + adds r2, r1, r0 + movs r3, #1 + movs r0, #1 + strh r0, [r2] + ldr r0, _080E2444 + adds r2, r1, r0 + movs r0, #2 + strh r0, [r2] + movs r2, #0xf1 + lsls r2, r2, #5 + adds r1, r1, r2 + strb r4, [r1] + ldr r0, [r5] + ldr r1, _080E2448 + adds r0, r0, r1 + strb r3, [r0] + ldr r1, [r5] + ldr r6, _080E244C + adds r3, r1, r6 + ldr r2, _080E2450 + ldr r4, _080E2454 + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r3] + ldrb r0, [r0, #4] + ldr r2, _080E2458 + adds r1, r1, r2 + strb r0, [r1] + ldr r2, [r5] + adds r0, r2, r6 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsrs r0, r0, #1 + movs r1, #0xe + subs r1, r1, r0 + ldr r0, _080E245C + adds r3, r2, r0 + strh r1, [r3] + adds r2, r2, r4 + ldrb r0, [r2] + cmp r0, #4 + bne _080E23F2 + adds r0, r1, #1 + strh r0, [r3] +_080E23F2: + ldr r0, [r5] + ldr r4, _080E2460 + ldrh r1, [r4] + ldr r2, _080E2464 + adds r0, r0, r2 + strb r1, [r0] + ldr r0, [r5] + movs r3, #0xc0 + lsls r3, r3, #5 + adds r0, r0, r3 + movs r1, #0xff + movs r2, #0x10 + bl memset + ldr r1, [r5] + adds r0, r1, r6 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + beq _080E242A + movs r2, #0xc0 + lsls r2, r2, #5 + adds r0, r1, r2 + ldr r3, _080E2468 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 +_080E242A: + movs r0, #0x10 + strh r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E2434: .4byte gUnknown_2039C34 +_080E2438: .4byte 0x00001E10 +_080E243C: .4byte 0x00001E18 +_080E2440: .4byte 0x00001E1C +_080E2444: .4byte 0x00001E1E +_080E2448: .4byte 0x00001E21 +_080E244C: .4byte 0x00001E28 +_080E2450: .4byte gUnknown_8565CE8 +_080E2454: .4byte 0x00001E2C +_080E2458: .4byte 0x00001E22 +_080E245C: .4byte 0x00001E16 +_080E2460: .4byte gUnknown_3002350 +_080E2464: .4byte 0x00001E25 +_080E2468: .4byte 0x00001E30 + thumb_func_end sub_080E2374 + + thumb_func_start sub_080E246C +sub_080E246C: @ 0x080E246C + push {r4, r5, lr} + movs r3, #0 + ldr r4, _080E24A8 + movs r5, #5 + rsbs r5, r5, #0 +_080E2476: + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r2, r0, #0 + adds r2, #0x3e + ldrb r1, [r2] + lsls r0, r1, #0x1f + cmp r0, #0 + beq _080E2490 + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2] +_080E2490: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x3f + bls _080E2476 + movs r0, #0 + bl sub_080E3320 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E24A8: .4byte gUnknown_20205AC + thumb_func_end sub_080E246C + + thumb_func_start sub_080E24AC +sub_080E24AC: @ 0x080E24AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #0xc + mov r8, r0 + add r2, sp, #8 + movs r6, #0 + ldr r1, _080E2640 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _080E2644 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_080E24D2: + strh r6, [r2] + add r0, sp, #8 + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _080E24D2 + strh r6, [r2] + add r2, sp, #8 + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #0xc] + ldr r2, _080E2640 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + add r0, sp, #8 + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080E2648 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + bl sub_08196DC4 + bl sub_08196DF4 +_080E25A0: + lsls r0, r4, #3 + ldr r1, _080E264C + adds r0, r0, r1 + bl sub_08003250 + ldr r5, _080E2650 + ldr r1, [r5] + ldr r2, _080E2654 + adds r1, r1, r2 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _080E25A0 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r1, #0xc8 + lsls r1, r1, #3 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _080E2658 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r5] + movs r0, #1 + bl sub_0800212C + ldr r1, [r5] + movs r0, #0x80 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r5] + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + movs r0, #3 + bl sub_0800212C + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E2640: .4byte 0x040000D4 +_080E2644: .4byte 0x81000800 +_080E2648: .4byte gUnknown_85659FC +_080E264C: .4byte gUnknown_8565A0C +_080E2650: .4byte gUnknown_2039C34 +_080E2654: .4byte 0x00001E11 +_080E2658: .4byte 0x0000080C + thumb_func_end sub_080E24AC + + thumb_func_start sub_080E265C +sub_080E265C: @ 0x080E265C + push {lr} + ldr r0, _080E2670 + movs r1, #2 + bl sub_080A8878 + ldr r0, _080E2674 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080E2670: .4byte sub_080E2678 +_080E2674: .4byte sub_080E474C + thumb_func_end sub_080E265C + + thumb_func_start sub_080E2678 +sub_080E2678: @ 0x080E2678 + push {lr} + ldr r0, _080E2694 + ldr r0, [r0] + ldr r1, _080E2698 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #9 + bhi _080E2708 + lsls r0, r0, #2 + ldr r1, _080E269C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E2694: .4byte gUnknown_2039C34 +_080E2698: .4byte 0x00001E10 +_080E269C: .4byte _080E26A0 +_080E26A0: @ jump table + .4byte _080E26C8 @ case 0 + .4byte _080E26D6 @ case 1 + .4byte _080E26E0 @ case 2 + .4byte _080E26DC @ case 3 + .4byte _080E26E6 @ case 4 + .4byte _080E26EC @ case 5 + .4byte _080E26F2 @ case 6 + .4byte _080E26F8 @ case 7 + .4byte _080E26FE @ case 8 + .4byte _080E2704 @ case 9 +_080E26C8: + bl sub_080E27B8 + bl sub_080E246C + bl sub_080E4778 + b _080E2708 +_080E26D6: + bl sub_080E28F0 + b _080E2708 +_080E26DC: + bl sub_080E293C +_080E26E0: + bl sub_080E292C + b _080E2708 +_080E26E6: + bl sub_080E2BD4 + b _080E2708 +_080E26EC: + bl sub_080E2C14 + b _080E2708 +_080E26F2: + bl sub_080E296C + b _080E2708 +_080E26F8: + bl sub_080E2B98 + b _080E2708 +_080E26FE: + bl sub_080E29DC + b _080E2708 +_080E2704: + bl sub_080E2A10 +_080E2708: + pop {r0} + bx r0 + thumb_func_end sub_080E2678 + + thumb_func_start sub_080E270C +sub_080E270C: @ 0x080E270C + push {lr} + ldr r0, _080E2724 + ldr r0, [r0] + ldr r1, _080E2728 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080E2720 + cmp r0, #4 + bne _080E272C +_080E2720: + movs r0, #1 + b _080E272E + .align 2, 0 +_080E2724: .4byte gUnknown_2039C34 +_080E2728: .4byte 0x00001E2C +_080E272C: + movs r0, #0 +_080E272E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E270C + + thumb_func_start sub_080E2734 +sub_080E2734: @ 0x080E2734 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _080E2754 + bl sub_080E270C + lsls r1, r0, #1 + adds r1, r1, r0 + adds r4, r4, r1 + adds r4, r4, r5 + ldrb r0, [r4] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E2754: .4byte gUnknown_8565A3C + thumb_func_end sub_080E2734 + + thumb_func_start sub_080E2758 +sub_080E2758: @ 0x080E2758 + push {r4, lr} + ldr r4, _080E277C + bl sub_080E270C + ldr r1, _080E2780 + ldr r2, [r1] + ldr r1, _080E2784 + adds r2, r2, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + ldrb r2, [r2] + adds r1, r1, r2 + adds r1, r1, r4 + ldrb r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E277C: .4byte gUnknown_8565A42 +_080E2780: .4byte gUnknown_2039C34 +_080E2784: .4byte 0x00001E22 + thumb_func_end sub_080E2758 + + thumb_func_start sub_080E2788 +sub_080E2788: @ 0x080E2788 + push {r4, lr} + ldr r4, _080E27AC + bl sub_080E270C + ldr r1, _080E27B0 + ldr r2, [r1] + ldr r1, _080E27B4 + adds r2, r2, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + ldrb r2, [r2] + adds r1, r1, r2 + adds r1, r1, r4 + ldrb r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E27AC: .4byte gUnknown_8565A48 +_080E27B0: .4byte gUnknown_2039C34 +_080E27B4: .4byte 0x00001E22 + thumb_func_end sub_080E2788 + + thumb_func_start sub_080E27B8 +sub_080E27B8: @ 0x080E27B8 + push {r4, lr} + sub sp, #4 + ldr r1, _080E2818 + movs r0, #3 + bl sub_080E4490 + bl sub_080E270C + adds r1, r0, #0 + cmp r1, #0 + beq _080E2834 + ldr r4, _080E281C + ldr r0, [r4] + ldr r1, _080E2820 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r1, _080E2824 + movs r0, #2 + bl sub_080E4490 + ldr r1, _080E2828 + movs r0, #1 + bl sub_080E4490 + ldr r0, [r4] + ldr r2, _080E282C + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #0 + bl sub_080E45D0 + ldr r0, [r4] + ldr r1, _080E2830 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #1 + bl sub_080E45D0 + movs r0, #2 + movs r1, #0 + bl sub_080E44A4 + movs r0, #1 + movs r1, #1 + bl sub_080E44A4 + b _080E287A + .align 2, 0 +_080E2818: .4byte gUnknown_8565524 +_080E281C: .4byte gUnknown_2039C34 +_080E2820: .4byte 0x00001E22 +_080E2824: .4byte gUnknown_85656C8 +_080E2828: .4byte gUnknown_8565600 +_080E282C: .4byte 0x00001E12 +_080E2830: .4byte 0x00001E11 +_080E2834: + ldr r4, _080E28D4 + ldr r0, [r4] + ldr r2, _080E28D8 + adds r0, r0, r2 + strb r1, [r0] + ldr r1, _080E28DC + movs r0, #1 + bl sub_080E4490 + ldr r1, _080E28E0 + movs r0, #2 + bl sub_080E4490 + ldr r0, [r4] + ldr r1, _080E28E4 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080E45D0 + ldr r0, [r4] + ldr r2, _080E28E8 + adds r0, r0, r2 + ldrb r0, [r0] + movs r1, #1 + bl sub_080E45D0 + movs r0, #1 + movs r1, #0 + bl sub_080E44A4 + movs r0, #2 + movs r1, #1 + bl sub_080E44A4 +_080E287A: + bl sub_080E4510 + bl sub_080E3E4C + bl sub_080E3E24 + bl sub_080E46E4 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _080E28D4 + ldr r1, [r0] + ldr r0, _080E28EC + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E28D4: .4byte gUnknown_2039C34 +_080E28D8: .4byte 0x00001E22 +_080E28DC: .4byte gUnknown_85656C8 +_080E28E0: .4byte gUnknown_8565600 +_080E28E4: .4byte 0x00001E11 +_080E28E8: .4byte 0x00001E12 +_080E28EC: .4byte 0x00001E10 + thumb_func_end sub_080E27B8 + + thumb_func_start sub_080E28F0 +sub_080E28F0: @ 0x080E28F0 + push {lr} + ldr r0, _080E2920 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E2918 + movs r0, #1 + bl sub_080E3B08 + movs r0, #1 + bl sub_080E3378 + ldr r0, _080E2924 + ldr r1, [r0] + ldr r0, _080E2928 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080E2918: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080E2920: .4byte gUnknown_2037C74 +_080E2924: .4byte gUnknown_2039C34 +_080E2928: .4byte 0x00001E10 + thumb_func_end sub_080E28F0 + + thumb_func_start sub_080E292C +sub_080E292C: @ 0x080E292C + push {lr} + bl sub_080E3988 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E292C + + thumb_func_start sub_080E293C +sub_080E293C: @ 0x080E293C + push {lr} + bl sub_080E33E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E295E + movs r0, #1 + bl sub_080E3B08 + bl sub_080E3310 + ldr r0, _080E2964 + ldr r0, [r0] + ldr r1, _080E2968 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] +_080E295E: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080E2964: .4byte gUnknown_2039C34 +_080E2968: .4byte 0x00001E10 + thumb_func_end sub_080E293C + + thumb_func_start sub_080E296C +sub_080E296C: @ 0x080E296C + push {r4, lr} + bl sub_080E437C + movs r0, #0 + bl sub_080E3B08 + movs r0, #0 + bl sub_080E3378 + movs r0, #3 + movs r1, #0 + movs r2, #1 + bl sub_080E2E78 + ldr r4, _080E29B4 + ldr r0, [r4] + ldr r1, _080E29B8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _080E29C0 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _080E29C0 + bl sub_080E2A78 + ldr r0, [r4] + ldr r1, _080E29BC + adds r0, r0, r1 + movs r1, #7 + strb r1, [r0] + movs r0, #0 + b _080E29CE + .align 2, 0 +_080E29B4: .4byte gUnknown_2039C34 +_080E29B8: .4byte 0x00001E2C +_080E29BC: .4byte 0x00001E10 +_080E29C0: + ldr r0, _080E29D4 + ldr r0, [r0] + ldr r1, _080E29D8 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] + movs r0, #1 +_080E29CE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E29D4: .4byte gUnknown_2039C34 +_080E29D8: .4byte 0x00001E10 + thumb_func_end sub_080E296C + + thumb_func_start sub_080E29DC +sub_080E29DC: @ 0x080E29DC + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080E2A08 + ldr r1, [r0] + ldr r0, _080E2A0C + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_080E2A08: .4byte gUnknown_2039C34 +_080E2A0C: .4byte 0x00001E10 + thumb_func_end sub_080E29DC + + thumb_func_start sub_080E2A10 +sub_080E2A10: @ 0x080E2A10 + push {r4, r5, lr} + ldr r0, _080E2A64 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080E2A5A + ldr r4, _080E2A68 + ldr r0, [r4] + ldr r1, _080E2A6C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080E2A34 + bl sub_08000560 +_080E2A34: + ldr r0, [r4] + ldr r1, _080E2A70 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08000540 + ldr r0, _080E2A74 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + bl sub_080034D4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] +_080E2A5A: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E2A64: .4byte gUnknown_2037C74 +_080E2A68: .4byte gUnknown_2039C34 +_080E2A6C: .4byte 0x00001E2C +_080E2A70: .4byte 0x00001E3C +_080E2A74: .4byte sub_080E2678 + thumb_func_end sub_080E2A10 + + thumb_func_start sub_080E2A78 +sub_080E2A78: @ 0x080E2A78 + push {r4, r5, lr} + sub sp, #0x10 + movs r5, #0 + bl sub_0813B298 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E2AC8 + ldr r4, _080E2AB4 + ldr r0, _080E2AB8 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _080E2ABC + ldr r1, _080E2AC0 + ldr r1, [r1] + ldr r2, _080E2AC4 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + b _080E2B08 + .align 2, 0 +_080E2AB4: .4byte gUnknown_2021C40 +_080E2AB8: .4byte 0x00004036 +_080E2ABC: .4byte gUnknown_2021C54 +_080E2AC0: .4byte gUnknown_2039C34 +_080E2AC4: .4byte 0x00001E30 +_080E2AC8: + ldr r4, _080E2B70 + ldr r0, _080E2B74 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _080E2B78 + ldr r1, _080E2B7C + ldr r1, [r1] + ldr r2, _080E2B80 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r4, _080E2B84 + bl sub_0813B248 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r5, #2 +_080E2B08: + ldr r0, _080E2B88 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E2B1A + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080E2B1A: + ldr r4, _080E2B8C + ldr r1, _080E2B90 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _080E2B94 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2B70: .4byte gUnknown_2021C40 +_080E2B74: .4byte 0x00004036 +_080E2B78: .4byte gUnknown_2021C54 +_080E2B7C: .4byte gUnknown_2039C34 +_080E2B80: .4byte 0x00001E30 +_080E2B84: .4byte gUnknown_2021C68 +_080E2B88: .4byte 0x000008AB +_080E2B8C: .4byte gUnknown_2021C7C +_080E2B90: .4byte gUnknown_8565858 +_080E2B94: .4byte gUnknown_30030B4 + thumb_func_end sub_080E2A78 + + thumb_func_start sub_080E2B98 +sub_080E2B98: @ 0x080E2B98 + push {lr} + bl sub_08004630 + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080E2BC2 + ldr r0, _080E2BC8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080E2BC2 + ldr r0, _080E2BCC + ldr r0, [r0] + ldr r1, _080E2BD0 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] +_080E2BC2: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080E2BC8: .4byte gUnknown_3002360 +_080E2BCC: .4byte gUnknown_2039C34 +_080E2BD0: .4byte 0x00001E10 + thumb_func_end sub_080E2B98 + + thumb_func_start sub_080E2BD4 +sub_080E2BD4: @ 0x080E2BD4 + push {lr} + movs r0, #0 + bl sub_080E3B08 + bl sub_080E3510 + bl sub_080E2C6C + movs r0, #1 + bl sub_080E3320 + movs r0, #0 + movs r1, #0 + movs r2, #1 + bl sub_080E2E78 + movs r0, #6 + bl sub_080A306C + ldr r0, _080E2C0C + ldr r0, [r0] + ldr r1, _080E2C10 + adds r0, r0, r1 + movs r1, #5 + strb r1, [r0] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080E2C0C: .4byte gUnknown_2039C34 +_080E2C10: .4byte 0x00001E10 + thumb_func_end sub_080E2BD4 + + thumb_func_start sub_080E2C14 +sub_080E2C14: @ 0x080E2C14 + push {r4, lr} + bl sub_080E2CC4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E2C56 + ldr r2, _080E2C60 + ldr r0, [r2] + ldr r1, _080E2C64 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r1, [r2] + ldr r3, _080E2C68 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r4, [r2] + adds r4, r4, r3 + ldrb r0, [r4] + movs r1, #3 + bl __umodsi3 + strb r0, [r4] + bl sub_080E4648 + movs r0, #1 + bl sub_080E3B08 + movs r0, #0 + bl sub_080E3320 +_080E2C56: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E2C60: .4byte gUnknown_2039C34 +_080E2C64: .4byte 0x00001E10 +_080E2C68: .4byte 0x00001E22 + thumb_func_end sub_080E2C14 + + thumb_func_start sub_080E2C6C +sub_080E2C6C: @ 0x080E2C6C + push {r4, lr} + ldr r4, _080E2C88 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E2C88: .4byte sub_080E2C8C + thumb_func_end sub_080E2C6C + + thumb_func_start sub_080E2C8C +sub_080E2C8C: @ 0x080E2C8C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080E2CBC + ldr r2, _080E2CC0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_080E2C9E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E2C9E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E2CBC: .4byte gUnknown_8565A50 +_080E2CC0: .4byte gUnknown_3005B60 + thumb_func_end sub_080E2C8C + + thumb_func_start sub_080E2CC4 +sub_080E2CC4: @ 0x080E2CC4 + push {lr} + ldr r0, _080E2CD8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080E2CDC + movs r0, #0 + b _080E2CDE + .align 2, 0 +_080E2CD8: .4byte sub_080E2C8C +_080E2CDC: + movs r0, #1 +_080E2CDE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E2CC4 + + thumb_func_start sub_080E2CE4 +sub_080E2CE4: @ 0x080E2CE4 + ldr r1, _080E2D00 + ldr r1, [r1] + ldr r3, _080E2D04 + adds r2, r1, r3 + movs r3, #0 + strh r3, [r2] + ldr r2, _080E2D08 + adds r1, r1, r2 + strh r3, [r1] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + movs r0, #0 + bx lr + .align 2, 0 +_080E2D00: .4byte gUnknown_2039C34 +_080E2D04: .4byte 0x00001E18 +_080E2D08: .4byte 0x00001E1A + thumb_func_end sub_080E2CE4 + + thumb_func_start sub_080E2D0C +sub_080E2D0C: @ 0x080E2D0C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r5, _080E2D8C + ldr r0, [r5] + ldr r2, _080E2D90 + adds r1, r0, r2 + str r1, [sp] + ldr r1, _080E2D94 + adds r0, r0, r1 + str r0, [sp, #4] + ldrh r0, [r4, #0xa] + adds r0, #4 + strh r0, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + movs r1, #0x28 + bl sub_0806EFB8 + ldr r1, [r5] + movs r2, #0xf1 + lsls r2, r2, #5 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, 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_0806EFB8 + ldr r1, [r5] + ldr r2, _080E2D98 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x3f + ble _080E2D82 + ldr r0, [r5] + ldr r1, _080E2D9C + adds r2, r0, r1 + ldrb r3, [r2] + adds r1, #2 + adds r0, r0, r1 + ldrh r1, [r0] + strh r1, [r2] + strh r3, [r0] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080E2D82: + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E2D8C: .4byte gUnknown_2039C34 +_080E2D90: .4byte 0x00001E1A +_080E2D94: .4byte 0x00001E18 +_080E2D98: .4byte 0x00001E21 +_080E2D9C: .4byte 0x00001E1C + thumb_func_end sub_080E2D0C + + thumb_func_start sub_080E2DA0 +sub_080E2DA0: @ 0x080E2DA0 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r5, _080E2E24 + ldr r0, [r5] + ldr r2, _080E2E28 + adds r1, r0, r2 + str r1, [sp] + ldr r3, _080E2E2C + adds r0, r0, r3 + str r0, [sp, #4] + ldrh r0, [r4, #0xa] + adds r0, #4 + strh r0, [r4, #0xa] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r1, #0x28 + bl sub_0806EFB8 + ldr r1, [r5] + movs r2, #0xf1 + lsls r2, r2, #5 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, 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_0806EFB8 + ldr r1, [r5] + ldr r3, _080E2E30 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #2 + add r1, sp + ldr r1, [r1] + strh r0, [r1] + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _080E2E1A + ldr r0, [r5] + movs r2, #0xf1 + lsls r2, r2, #5 + adds r1, r0, r2 + ldrb r2, [r1] + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r3 + strb r2, [r0] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080E2E1A: + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E2E24: .4byte gUnknown_2039C34 +_080E2E28: .4byte 0x00001E1A +_080E2E2C: .4byte 0x00001E18 +_080E2E30: .4byte 0x00001E21 + thumb_func_end sub_080E2DA0 + + thumb_func_start sub_080E2E34 +sub_080E2E34: @ 0x080E2E34 + push {lr} + ldr r0, _080E2E4C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080E2E4C: .4byte sub_080E2C8C + thumb_func_end sub_080E2E34 + + thumb_func_start sub_080E2E50 +sub_080E2E50: @ 0x080E2E50 + push {lr} + ldr r0, _080E2E70 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E2E74 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #3 + strh r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_080E2E70: .4byte sub_080E2EEC +_080E2E74: .4byte gUnknown_3005B60 + thumb_func_end sub_080E2E50 + + thumb_func_start sub_080E2E78 +sub_080E2E78: @ 0x080E2E78 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _080E2EB0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E2EB4 + adds r4, r1, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r5, r0 + bne _080E2EB8 + cmp r6, #0 + bne _080E2EB8 + strh r7, [r4, #0xa] + movs r0, #1 + strh r0, [r4, #0xc] + b _080E2EE4 + .align 2, 0 +_080E2EB0: .4byte sub_080E2EEC +_080E2EB4: .4byte gUnknown_3005B60 +_080E2EB8: + cmp r5, #3 + bne _080E2EC8 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _080E2EC8 + cmp r6, #0 + beq _080E2EE4 +_080E2EC8: + ldrh r1, [r4, #8] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #3 + beq _080E2EDA + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E3018 +_080E2EDA: + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_080E3040 +_080E2EE4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E2E78 + + thumb_func_start sub_080E2EEC +sub_080E2EEC: @ 0x080E2EEC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E2F54 + adds r4, r1, r0 + ldrh r1, [r4, #8] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #3 + beq _080E2F9E + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _080E2F9E + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E2FA4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r3, [r4, #0xe] + adds r1, r3, #0 + adds r2, r3, #0 + bl sub_080B57F4 + ldrh r1, [r4, #0x12] + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080E2F38 + subs r0, r1, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080E2F9E +_080E2F38: + movs r0, #2 + strh r0, [r4, #0x12] + ldrh r1, [r4, #0x10] + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r0, #0 + blt _080E2F62 + ldrh r2, [r4, #0xe] + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r0, #0xd + bgt _080E2F58 + adds r0, r2, r1 + b _080E2F66 + .align 2, 0 +_080E2F54: .4byte gUnknown_3005B60 +_080E2F58: + movs r0, #0x10 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0x14] + adds r0, #1 + b _080E2F6C +_080E2F62: + ldrh r3, [r4, #0xe] + adds r0, r1, r3 +_080E2F66: + strh r0, [r4, #0xe] + ldrh r2, [r4, #0x14] + adds r0, r1, r2 +_080E2F6C: + strh r0, [r4, #0x14] + movs r3, #0xe + ldrsh r0, [r4, r3] + ldrh r1, [r4, #0xe] + cmp r0, #0x10 + bne _080E2F8C + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0x16 + bne _080E2F8C + ldr r0, _080E2F88 + strh r0, [r4, #0x10] + b _080E2F9E + .align 2, 0 +_080E2F88: .4byte 0x0000FFFC +_080E2F8C: + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _080E2F9E + ldrh r0, [r4, #0xa] + strh r0, [r4, #0xc] + movs r0, #2 + strh r0, [r4, #0x10] + strh r1, [r4, #0x14] +_080E2F9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080E2EEC + + thumb_func_start sub_080E2FA4 +sub_080E2FA4: @ 0x080E2FA4 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #4 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x87 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + add r6, sp, #8 + strh r0, [r6] + movs r0, #6 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r0, r0, r5 + mov r1, sp + adds r1, #0xa + strh r0, [r1] + movs r0, #7 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r0, r0, r5 + add r1, sp, #0xc + strh r0, [r1] + movs r0, #7 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + ldr r1, _080E3014 + adds r0, r0, r1 + mov r1, sp + adds r1, #0xe + strh r0, [r1] + mov r0, sp + adds r1, r6, #0 + movs r2, #8 + bl memcpy + lsls r4, r4, #1 + mov r1, sp + adds r0, r1, r4 + ldrh r0, [r0] + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080E3014: .4byte 0x00000101 + thumb_func_end sub_080E2FA4 + + thumb_func_start sub_080E3018 +sub_080E3018: @ 0x080E3018 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E2FA4 + lsls r0, r0, #0x10 + ldr r2, _080E3038 + lsrs r0, r0, #0xf + adds r2, r0, r2 + ldr r1, _080E303C + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080E3038: .4byte gUnknown_20377B4 +_080E303C: .4byte gUnknown_20373B4 + thumb_func_end sub_080E3018 + + thumb_func_start sub_080E3040 +sub_080E3040: @ 0x080E3040 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #0 + strh r1, [r0, #8] + strh r2, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #0xc] + movs r2, #4 + strh r2, [r0, #0xe] + movs r1, #2 + strh r1, [r0, #0x10] + strh r3, [r0, #0x12] + strh r2, [r0, #0x14] + bx lr + thumb_func_end sub_080E3040 + + thumb_func_start sub_080E3060 +sub_080E3060: @ 0x080E3060 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E3078 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 +_080E3078: + ldrh r1, [r4, #0x36] + movs r0, #0xff + ands r0, r1 + adds r3, r4, #0 + adds r3, #0x3e + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + ldrb r1, [r3] + movs r2, #5 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r3] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x13 + bne _080E30A2 + movs r0, #4 + orrs r2, r0 + strb r2, [r3] +_080E30A2: + ldrb r1, [r3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080E30D2 + movs r2, #0x36 + ldrsh r0, [r4, r2] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080E30D2 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080E30D2 + movs r0, #0x30 + ldrsh r1, [r4, r0] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080E30DC +_080E30D2: + movs r0, #0 + strh r0, [r4, #0x38] + movs r0, #2 + strh r0, [r4, #0x3a] + strh r0, [r4, #0x3c] +_080E30DC: + ldrh r0, [r4, #0x3c] + subs r0, #1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080E3104 + ldrh r1, [r4, #0x3a] + ldrh r2, [r4, #0x38] + adds r0, r1, r2 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + beq _080E30FC + cmp r0, #0 + bne _080E3100 +_080E30FC: + rsbs r0, r1, #0 + strh r0, [r4, #0x3a] +_080E3100: + movs r0, #2 + strh r0, [r4, #0x3c] +_080E3104: + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080E313A + ldrh r4, [r4, #0x38] + lsls r5, r4, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x11 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r2, _080E3140 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r5, #0 + bl sub_080B57F4 +_080E313A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3140: .4byte 0x01010000 + thumb_func_end sub_080E3060 + + thumb_func_start sub_080E3144 +sub_080E3144: @ 0x080E3144 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080E318C + mov r0, sp + movs r2, #8 + bl memcpy + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080E3168 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080E3176 +_080E3168: + movs r0, #8 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strh r0, [r4, #0x30] +_080E3176: + movs r1, #0x30 + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x24] + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E318C: .4byte gUnknown_8565A60 + thumb_func_end sub_080E3144 + + thumb_func_start sub_080E3190 +sub_080E3190: @ 0x080E3190 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _080E31B8 + mov r0, sp + movs r2, #8 + bl memcpy + bl sub_080E3F20 + lsls r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x18 + cmp r0, r1 + beq _080E31BC + movs r0, #0 + strh r0, [r4, #0x26] + strh r0, [r4, #0x30] + b _080E31E2 + .align 2, 0 +_080E31B8: .4byte gUnknown_8565A68 +_080E31BC: + movs r1, #0x30 + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _080E31E4 + ldrh r0, [r4, #0x30] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strh r0, [r4, #0x30] + movs r0, #0 +_080E31E2: + strh r0, [r4, #0x32] +_080E31E4: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080E3190 + + thumb_func_start sub_080E31EC +sub_080E31EC: @ 0x080E31EC + push {lr} + bl sub_080E3208 + bl sub_080E344C + bl sub_080E36D8 + bl sub_080E3750 + bl sub_080E3820 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E31EC + + thumb_func_start sub_080E3208 +sub_080E3208: @ 0x080E3208 + push {r4, r5, r6, lr} + ldr r0, _080E328C + movs r1, #0x1b + movs r2, #0x57 + movs r3, #1 + bl sub_08006B0C + ldr r5, _080E3290 + ldr r1, [r5] + ldr r4, _080E3294 + adds r1, r1, r4 + strb r0, [r1] + movs r0, #1 + bl sub_080E3320 + ldr r6, _080E3298 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r3, [r1, #5] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + movs r3, #4 + orrs r0, r3 + strb r0, [r1, #5] + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #1] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, #1] + ldr r2, [r5] + adds r2, r2, r4 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + strh r1, [r0, #0x3a] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #2 + strh r1, [r0, #0x3a] + movs r0, #0 + movs r1, #0 + bl sub_080E329C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E328C: .4byte gUnknown_8565E50 +_080E3290: .4byte gUnknown_2039C34 +_080E3294: .4byte 0x00001E23 +_080E3298: .4byte gUnknown_20205AC + thumb_func_end sub_080E3208 + + thumb_func_start sub_080E329C +sub_080E329C: @ 0x080E329C + push {r4, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + ldr r2, _080E32D8 + ldr r2, [r2] + ldr r3, _080E32DC + adds r2, r2, r3 + ldrb r3, [r2] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + ldr r3, _080E32E0 + adds r2, r2, r3 + lsrs r4, r0, #0x10 + asrs r0, r0, #0xd + adds r0, #0x1b + strh r0, [r2, #0x20] + lsrs r3, r1, #0x10 + asrs r1, r1, #0xc + adds r1, #0x57 + strh r1, [r2, #0x22] + ldrh r0, [r2, #0x2e] + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x30] + strh r0, [r2, #0x34] + strh r4, [r2, #0x2e] + strh r3, [r2, #0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E32D8: .4byte gUnknown_2039C34 +_080E32DC: .4byte 0x00001E23 +_080E32E0: .4byte gUnknown_20205AC + thumb_func_end sub_080E329C + + thumb_func_start sub_080E32E4 +sub_080E32E4: @ 0x080E32E4 + ldr r2, _080E3304 + ldr r2, [r2] + ldr r3, _080E3308 + adds r2, r2, r3 + ldrb r3, [r2] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + ldr r3, _080E330C + adds r2, r2, r3 + ldrh r3, [r2, #0x2e] + strh r3, [r0] + ldrh r0, [r2, #0x30] + strh r0, [r1] + bx lr + .align 2, 0 +_080E3304: .4byte gUnknown_2039C34 +_080E3308: .4byte 0x00001E23 +_080E330C: .4byte gUnknown_20205AC + thumb_func_end sub_080E32E4 + + thumb_func_start sub_080E3310 +sub_080E3310: @ 0x080E3310 + push {lr} + movs r0, #0x13 + movs r1, #2 + bl sub_080E329C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E3310 + + thumb_func_start sub_080E3320 +sub_080E3320: @ 0x080E3320 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080E3368 + ldr r1, _080E336C + ldr r4, [r1] + ldr r1, _080E3370 + adds r4, r4, r1 + ldrb r1, [r4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrh r3, [r2, #0x36] + ldr r1, _080E3374 + ands r1, r3 + strh r1, [r2, #0x36] + ldrb r2, [r4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r2, [r1, #0x36] + orrs r0, r2 + strh r0, [r1, #0x36] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0 + bl sub_08007EC0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3368: .4byte gUnknown_20205AC +_080E336C: .4byte gUnknown_2039C34 +_080E3370: .4byte 0x00001E23 +_080E3374: .4byte 0xFFFFFF00 + thumb_func_end sub_080E3320 + + thumb_func_start sub_080E3378 +sub_080E3378: @ 0x080E3378 + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r5, _080E33B0 + ldr r1, _080E33B4 + ldr r4, [r1] + ldr r1, _080E33B8 + adds r4, r4, r1 + ldrb r1, [r4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, 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, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsrs r0, r0, #0x10 + ldrh r2, [r1, #0x36] + orrs r0, r2 + strh r0, [r1, #0x36] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E33B0: .4byte gUnknown_20205AC +_080E33B4: .4byte gUnknown_2039C34 +_080E33B8: .4byte 0x00001E23 + thumb_func_end sub_080E3378 + + thumb_func_start sub_080E33BC +sub_080E33BC: @ 0x080E33BC + push {lr} + ldr r0, _080E33DC + ldr r0, [r0] + ldr r1, _080E33E0 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E33E4 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_080E33DC: .4byte gUnknown_2039C34 +_080E33E0: .4byte 0x00001E23 +_080E33E4: .4byte gUnknown_20205AC + thumb_func_end sub_080E33BC + + thumb_func_start sub_080E33E8 +sub_080E33E8: @ 0x080E33E8 + ldr r2, _080E3408 + ldr r0, _080E340C + ldr r0, [r0] + ldr r1, _080E3410 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_080E3408: .4byte gUnknown_20205AC +_080E340C: .4byte gUnknown_2039C34 +_080E3410: .4byte 0x00001E23 + thumb_func_end sub_080E33E8 + + thumb_func_start sub_080E3414 +sub_080E3414: @ 0x080E3414 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080E32E4 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0x12 + ble _080E3440 + ldr r0, _080E343C + movs r2, #0 + ldrsh r1, [r4, r2] + adds r1, r1, r0 + ldrb r0, [r1] + b _080E3442 + .align 2, 0 +_080E343C: .4byte gUnknown_8565A70 +_080E3440: + movs r0, #0 +_080E3442: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E3414 + + thumb_func_start sub_080E344C +sub_080E344C: @ 0x080E344C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _080E34F0 + movs r1, #0xcc + movs r2, #0x58 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E34F4 + ldr r1, [r1] + ldr r2, _080E34F8 + adds r1, r1, r2 + strb r0, [r1] + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _080E34FC + mov r8, r0 + add r5, r8 + ldr r1, _080E3500 + adds r0, r5, #0 + bl sub_0800858C + adds r1, r5, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r6, #4 + orrs r0, r6 + strb r0, [r1] + ldr r0, _080E3504 + movs r1, #0xcc + movs r2, #0x54 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x3a] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + add r4, r8 + ldr r1, _080E3508 + adds r0, r4, #0 + bl sub_0800858C + adds r4, #0x3e + ldrb r0, [r4] + orrs r0, r6 + strb r0, [r4] + ldr r0, _080E350C + movs r1, #0xcc + movs r2, #0x53 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + ldrb r3, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r6 + strb r1, [r2, #5] + strh r0, [r5, #0x3c] + adds r2, #0x3e + ldrb r0, [r2] + orrs r0, r6 + strb r0, [r2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E34F0: .4byte gUnknown_8565DD8 +_080E34F4: .4byte gUnknown_2039C34 +_080E34F8: .4byte 0x00001E24 +_080E34FC: .4byte gUnknown_20205AC +_080E3500: .4byte gUnknown_8565D68 +_080E3504: .4byte gUnknown_8565E08 +_080E3508: .4byte gUnknown_8565D70 +_080E350C: .4byte gUnknown_8565DF0 + thumb_func_end sub_080E344C + + thumb_func_start sub_080E3510 +sub_080E3510: @ 0x080E3510 + ldr r0, _080E3534 + ldr r2, [r0] + ldr r1, _080E3538 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E353C + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #0x2e] + ldr r1, _080E3540 + adds r2, r2, r1 + ldrb r1, [r2] + strh r1, [r0, #0x30] + bx lr + .align 2, 0 +_080E3534: .4byte gUnknown_2039C34 +_080E3538: .4byte 0x00001E24 +_080E353C: .4byte gUnknown_20205AC +_080E3540: .4byte 0x00001E22 + thumb_func_end sub_080E3510 + + thumb_func_start sub_080E3544 +sub_080E3544: @ 0x080E3544 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080E3568 +_080E354A: + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E354A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3568: .4byte gUnknown_8565A74 + thumb_func_end sub_080E3544 + + thumb_func_start sub_080E356C +sub_080E356C: @ 0x080E356C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x3a + ldrsh r0, [r6, r1] + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r1, _080E35B4 + adds r5, r5, r1 + movs r2, #0x3c + ldrsh r0, [r6, r2] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r0, _080E35B8 + ldr r0, [r0] + ldr r1, _080E35BC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E2734 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080E3678 + ldrh r0, [r6, #0x2e] + adds r0, #1 + strh r0, [r6, #0x2e] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080E35B4: .4byte gUnknown_20205AC +_080E35B8: .4byte gUnknown_2039C34 +_080E35BC: .4byte 0x00001E22 + thumb_func_end sub_080E356C + + thumb_func_start sub_080E35C0 +sub_080E35C0: @ 0x080E35C0 + movs r0, #0 + bx lr + thumb_func_end sub_080E35C0 + + thumb_func_start sub_080E35C4 +sub_080E35C4: @ 0x080E35C4 + push {r4, r5, lr} + adds r3, r0, #0 + movs r0, #0x3a + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _080E3630 + adds r4, r0, r2 + movs r0, #0x3c + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r2 + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080E3628 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + ldr r0, _080E3634 + strh r0, [r4, #0x26] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E2734 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080E3678 +_080E3628: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E3630: .4byte gUnknown_20205AC +_080E3634: .4byte 0x0000FFFC + thumb_func_end sub_080E35C4 + + thumb_func_start sub_080E3638 +sub_080E3638: @ 0x080E3638 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E3674 + adds r2, r0, r1 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x26] + adds r0, #1 + strh r0, [r2, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _080E366C + movs r0, #0 + strh r0, [r2, #0x26] + movs r0, #1 + strh r0, [r4, #0x2e] +_080E366C: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E3674: .4byte gUnknown_20205AC + thumb_func_end sub_080E3638 + + thumb_func_start sub_080E3678 +sub_080E3678: @ 0x080E3678 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080E36D0 + lsls r4, r5, #1 + adds r0, r4, r0 + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #4 + mov r1, r8 + ldrb r2, [r1, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + mov r0, r8 + strb r1, [r0, #5] + ldr r0, _080E36D4 + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_08008338 + 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 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E36D0: .4byte gUnknown_8565A84 +_080E36D4: .4byte gUnknown_8565A8A + thumb_func_end sub_080E3678 + + thumb_func_start sub_080E36D8 +sub_080E36D8: @ 0x080E36D8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _080E3740 + movs r1, #0xcc + movs r2, #0x74 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r6, _080E3744 + adds r4, r4, r6 + ldr r0, _080E3748 + mov r8, r0 + adds r0, r4, #0 + mov r1, r8 + bl sub_0800858C + adds r4, #0x3e + ldrb r0, [r4] + movs r5, #4 + orrs r0, r5 + strb r0, [r4] + ldr r0, _080E374C + movs r1, #0xcc + movs r2, #0x8c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r6 + adds r0, r4, #0 + mov r1, r8 + bl sub_0800858C + adds r4, #0x3e + ldrb r0, [r4] + orrs r0, r5 + strb r0, [r4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E3740: .4byte gUnknown_8565E20 +_080E3744: .4byte gUnknown_20205AC +_080E3748: .4byte gUnknown_8565D88 +_080E374C: .4byte gUnknown_8565E38 + thumb_func_end sub_080E36D8 + + thumb_func_start sub_080E3750 +sub_080E3750: @ 0x080E3750 + push {r4, r5, r6, lr} + ldr r5, _080E3808 + ldr r0, [r5] + ldr r4, _080E380C + adds r0, r0, r4 + ldrh r1, [r0] + subs r1, #1 + lsls r1, r1, #3 + adds r1, #4 + ldr r0, _080E3810 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x38 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _080E3814 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r1, [r5] + adds r4, r1, r4 + ldrh r0, [r4] + lsls r0, r0, #3 + adds r0, #4 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r5, #0 + ldr r0, _080E3818 + adds r1, r1, r0 + ldr r0, [r1] + ldrb r0, [r0, #1] + cmp r5, r0 + bhs _080E3800 + adds r6, r3, #0 +_080E37AE: + lsls r1, r4, #0x10 + asrs r4, r1, #0x10 + movs r0, #0xc0 + lsls r0, r0, #0xa + adds r1, r1, r0 + asrs r1, r1, #0x10 + ldr r0, _080E381C + movs r2, #0x3c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + strh r5, [r0, #0x2e] + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #0xa + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _080E3808 + ldr r0, [r0] + ldr r1, _080E3818 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r5, r0 + blo _080E37AE +_080E3800: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E3808: .4byte gUnknown_2039C34 +_080E380C: .4byte 0x00001E16 +_080E3810: .4byte gUnknown_8565E68 +_080E3814: .4byte gUnknown_20205AC +_080E3818: .4byte 0x00001E28 +_080E381C: .4byte gUnknown_8565E80 + thumb_func_end sub_080E3750 + + thumb_func_start sub_080E3820 +sub_080E3820: @ 0x080E3820 + push {lr} + ldr r1, _080E3840 + ldr r0, _080E3844 + ldr r0, [r0] + ldr r2, _080E3848 + adds r0, r0, r2 + ldr r0, [r0] + ldrb r0, [r0, #2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_080E3820 + + thumb_func_start sub_080E383C +sub_080E383C: @ 0x080E383C + bx r0 + .align 2, 0 +_080E3840: .4byte gUnknown_8565A90 +_080E3844: .4byte gUnknown_2039C34 +_080E3848: .4byte 0x00001E28 + thumb_func_end sub_080E383C + + thumb_func_start sub_080E384C +sub_080E384C: @ 0x080E384C + bx lr + .align 2, 0 + thumb_func_end sub_080E384C + + thumb_func_start sub_080E3850 +sub_080E3850: @ 0x080E3850 + push {lr} + sub sp, #4 + ldr r0, _080E389C + ldr r0, [r0] + ldr r1, _080E38A0 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0 + bl sub_0808B6A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E38A4 + movs r2, #0 + str r2, [sp] + movs r2, #0x38 + movs r3, #0x25 + bl sub_0808D6D8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080E38A8 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #4 + bl sub_08007EC0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080E389C: .4byte gUnknown_2039C34 +_080E38A0: .4byte 0x00001E34 +_080E38A4: .4byte sub_08007140 +_080E38A8: .4byte gUnknown_20205AC + thumb_func_end sub_080E3850 + + thumb_func_start sub_080E38AC +sub_080E38AC: @ 0x080E38AC + push {r4, lr} + ldr r0, _080E38E0 + movs r1, #0x38 + movs r2, #0x29 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080E38E4 + adds r4, r4, r0 + ldr r1, _080E38E8 + adds r0, r4, #0 + bl sub_0800858C + ldrb r0, [r4, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r4, #5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E38E0: .4byte gUnknown_8565E98 +_080E38E4: .4byte gUnknown_20205AC +_080E38E8: .4byte gUnknown_8565D90 + thumb_func_end sub_080E38AC + + thumb_func_start sub_080E38EC +sub_080E38EC: @ 0x080E38EC + push {lr} + sub sp, #0xc + bl sub_080D27A4 + ldr r0, _080E3934 + ldr r3, [r0] + ldr r1, _080E3938 + adds r0, r3, r1 + ldrh r0, [r0] + ldr r1, _080E393C + movs r2, #0 + str r2, [sp] + ldr r2, _080E3940 + adds r3, r3, r2 + ldr r2, [r3] + str r2, [sp, #4] + movs r2, #1 + str r2, [sp, #8] + movs r2, #0x38 + movs r3, #0x28 + bl sub_080D2564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E3944 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #5] + movs r2, #0xc + orrs r0, r2 + strb r0, [r1, #5] + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_080E3934: .4byte gUnknown_2039C34 +_080E3938: .4byte 0x00001E34 +_080E393C: .4byte sub_08007140 +_080E3940: .4byte 0x00001E38 +_080E3944: .4byte gUnknown_20205AC + thumb_func_end sub_080E38EC + + thumb_func_start sub_080E3948 +sub_080E3948: @ 0x080E3948 + push {lr} + sub sp, #4 + ldr r1, _080E3980 + movs r0, #0 + str r0, [sp] + movs r0, #0x13 + movs r2, #0x38 + movs r3, #0x25 + bl sub_0808D6D8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080E3984 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #4 + bl sub_08007EC0 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080E3980: .4byte sub_08007140 +_080E3984: .4byte gUnknown_20205AC + thumb_func_end sub_080E3948 + + thumb_func_start sub_080E3988 +sub_080E3988: @ 0x080E3988 + push {r4, r5, lr} + bl sub_080E3AE4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080E3414 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, #8 + bne _080E39A6 + bl sub_080E3AB8 + b _080E39CC +_080E39A6: + cmp r4, #6 + bne _080E39B0 + bl sub_080E3FB8 + b _080E39DC +_080E39B0: + cmp r4, #7 + bne _080E39BA + bl sub_080E40A8 + b _080E39DC +_080E39BA: + cmp r5, #9 + beq _080E39D8 + ldr r1, _080E39D4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_080E39CC: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080E39DE + .align 2, 0 +_080E39D4: .4byte gUnknown_8565AA4 +_080E39D8: + bl sub_080E3310 +_080E39DC: + movs r0, #0 +_080E39DE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080E3988 + + thumb_func_start sub_080E39E4 +sub_080E39E4: @ 0x080E39E4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_080E2E78 + cmp r4, #5 + bne _080E3A1E + bl sub_080E4018 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080E33BC + cmp r4, #0 + beq _080E3A1E + movs r0, #2 + bl sub_080E3B08 + ldr r0, _080E3A28 + ldr r0, [r0] + ldr r1, _080E3A2C + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] +_080E3A1E: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E3A28: .4byte gUnknown_2039C34 +_080E3A2C: .4byte 0x00001E10 + thumb_func_end sub_080E39E4 + + thumb_func_start sub_080E3A30 +sub_080E3A30: @ 0x080E3A30 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_080E2E78 + cmp r4, #5 + beq _080E3A4A + movs r0, #0 + b _080E3A52 +_080E3A4A: + bl sub_080E3AB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080E3A52: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080E3A30 + + thumb_func_start sub_080E3A58 +sub_080E3A58: @ 0x080E3A58 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_080E2E78 + cmp r4, #5 + bne _080E3A72 + bl sub_080E3FB8 +_080E3A72: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E3A58 + + thumb_func_start sub_080E3A7C +sub_080E3A7C: @ 0x080E3A7C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_080E2E78 + cmp r4, #5 + beq _080E3A96 + movs r0, #0 + b _080E3AAA +_080E3A96: + movs r0, #5 + bl sub_080A306C + ldr r0, _080E3AB0 + ldr r0, [r0] + ldr r1, _080E3AB4 + adds r0, r0, r1 + movs r1, #6 + strb r1, [r0] + movs r0, #1 +_080E3AAA: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E3AB0: .4byte gUnknown_2039C34 +_080E3AB4: .4byte 0x00001E10 + thumb_func_end sub_080E3A7C + + thumb_func_start sub_080E3AB8 +sub_080E3AB8: @ 0x080E3AB8 + ldr r0, _080E3AC8 + ldr r0, [r0] + ldr r1, _080E3ACC + adds r0, r0, r1 + movs r1, #4 + strb r1, [r0] + movs r0, #1 + bx lr + .align 2, 0 +_080E3AC8: .4byte gUnknown_2039C34 +_080E3ACC: .4byte 0x00001E10 + thumb_func_end sub_080E3AB8 + + thumb_func_start sub_080E3AD0 +sub_080E3AD0: @ 0x080E3AD0 + push {lr} + ldr r0, _080E3AE0 + movs r1, #1 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080E3AE0: .4byte sub_080E3B34 + thumb_func_end sub_080E3AD0 + + thumb_func_start sub_080E3AE4 +sub_080E3AE4: @ 0x080E3AE4 + push {lr} + ldr r0, _080E3B00 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E3B04 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #0xa] + pop {r1} + bx r1 + .align 2, 0 +_080E3B00: .4byte sub_080E3B34 +_080E3B04: .4byte gUnknown_3005B60 + thumb_func_end sub_080E3AE4 + + thumb_func_start sub_080E3B08 +sub_080E3B08: @ 0x080E3B08 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080E3B2C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E3B30 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E3B2C: .4byte sub_080E3B34 +_080E3B30: .4byte gUnknown_3005B60 + thumb_func_end sub_080E3B08 + + thumb_func_start sub_080E3B34 +sub_080E3B34: @ 0x080E3B34 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _080E3B5C + ldr r2, _080E3B60 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_080E3B5C: .4byte gUnknown_8565AB4 +_080E3B60: .4byte gUnknown_3005B60 + thumb_func_end sub_080E3B34 + + thumb_func_start sub_080E3B64 +sub_080E3B64: @ 0x080E3B64 + movs r1, #0 + strh r1, [r0, #0xa] + bx lr + .align 2, 0 + thumb_func_end sub_080E3B64 + + thumb_func_start sub_080E3B6C +sub_080E3B6C: @ 0x080E3B6C + push {lr} + adds r1, r0, #0 + movs r0, #0 + strh r0, [r1, #0xa] + ldr r0, _080E3B88 + ldrh r2, [r0, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080E3B8C + movs r0, #5 + strh r0, [r1, #0xa] + b _080E3BCC + .align 2, 0 +_080E3B88: .4byte gUnknown_3002360 +_080E3B8C: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080E3B9A + movs r0, #6 + strh r0, [r1, #0xa] + b _080E3BCC +_080E3B9A: + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _080E3BA8 + movs r0, #8 + strh r0, [r1, #0xa] + b _080E3BCC +_080E3BA8: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _080E3BB6 + movs r0, #9 + strh r0, [r1, #0xa] + b _080E3BCC +_080E3BB6: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080E3BC6 + movs r0, #7 + strh r0, [r1, #0xa] + b _080E3BCC +_080E3BC6: + adds r0, r1, #0 + bl sub_080E3BF4 +_080E3BCC: + pop {r0} + bx r0 + thumb_func_end sub_080E3B6C + + thumb_func_start sub_080E3BD0 +sub_080E3BD0: @ 0x080E3BD0 + push {lr} + adds r2, r0, #0 + movs r0, #0 + strh r0, [r2, #0xa] + ldr r0, _080E3BF0 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080E3BEA + movs r0, #7 + strh r0, [r2, #0xa] +_080E3BEA: + pop {r0} + bx r0 + .align 2, 0 +_080E3BF0: .4byte gUnknown_3002360 + thumb_func_end sub_080E3BD0 + + thumb_func_start sub_080E3BF4 +sub_080E3BF4: @ 0x080E3BF4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x2c + adds r6, r0, #0 + ldr r1, _080E3CB8 + mov r0, sp + movs r2, #0xa + bl memcpy + add r7, sp, #0xc + ldr r1, _080E3CBC + adds r0, r7, #0 + movs r2, #0xa + bl memcpy + add r0, sp, #0x18 + mov r8, r0 + ldr r1, _080E3CC0 + movs r2, #8 + bl memcpy + add r1, sp, #0x20 + mov sb, r1 + ldr r1, _080E3CC4 + mov r0, sb + movs r2, #6 + bl memcpy + add r4, sp, #0x28 + mov r5, sp + adds r5, #0x2a + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080E32E4 + ldr r0, _080E3CC8 + ldrh r2, [r0, #0x30] + movs r0, #0x40 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r1, r0, #0x1f + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _080E3C58 + movs r1, #2 +_080E3C58: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _080E3C62 + movs r1, #3 +_080E3C62: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _080E3C6C + movs r1, #4 +_080E3C6C: + ldrh r3, [r4] + lsls r1, r1, #1 + mov r2, sp + adds r0, r2, r1 + ldrh r2, [r0] + adds r0, r3, r2 + strh r0, [r4] + adds r1, r7, r1 + ldrh r0, [r1] + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r5] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _080E3C90 + movs r0, #0x13 + strh r0, [r4] +_080E3C90: + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0x13 + ble _080E3C9C + movs r0, #0 + strh r0, [r4] +_080E3C9C: + lsls r0, r2, #0x10 + cmp r0, #0 + beq _080E3CE8 + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #0x13 + bne _080E3CCC + ldrh r0, [r5] + strh r0, [r6, #0xc] + movs r1, #0 + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + add r0, r8 + b _080E3CE4 + .align 2, 0 +_080E3CB8: .4byte gUnknown_8565AC0 +_080E3CBC: .4byte gUnknown_8565ACA +_080E3CC0: .4byte gUnknown_8565AD4 +_080E3CC4: .4byte gUnknown_8565ADC +_080E3CC8: .4byte gUnknown_3002360 +_080E3CCC: + cmp r3, #0x13 + bne _080E3CE8 + movs r2, #0 + ldrsh r0, [r5, r2] + cmp r0, #1 + bne _080E3CDC + ldrh r0, [r6, #0xc] + b _080E3CE6 +_080E3CDC: + movs r1, #0 + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + add r0, sb +_080E3CE4: + ldrh r0, [r0] +_080E3CE6: + strh r0, [r5] +_080E3CE8: + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #0x13 + bne _080E3D1E + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _080E3CFC + movs r0, #2 + strh r0, [r5] +_080E3CFC: + movs r2, #0 + ldrsh r0, [r5, r2] + cmp r0, #2 + ble _080E3D08 + movs r0, #0 + strh r0, [r5] +_080E3D08: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E3D16 + movs r0, #1 + strh r0, [r6, #0xc] + b _080E3D36 +_080E3D16: + cmp r0, #2 + bne _080E3D36 + strh r0, [r6, #0xc] + b _080E3D36 +_080E3D1E: + movs r2, #0 + ldrsh r0, [r5, r2] + cmp r0, #0 + bge _080E3D2A + movs r0, #3 + strh r0, [r5] +_080E3D2A: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #3 + ble _080E3D36 + movs r0, #0 + strh r0, [r5] +_080E3D36: + movs r2, #0 + ldrsh r0, [r4, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_080E329C + add sp, #0x2c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E3BF4 + + thumb_func_start sub_080E3D50 +sub_080E3D50: @ 0x080E3D50 + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _080E3D98 + ldr r0, [r5] + ldr r4, _080E3D9C + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _080E3DA0 + adds r1, r1, r2 + ldr r1, [r1] + ldr r2, [r1, #8] + movs r1, #1 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + movs r3, #5 + bl sub_0800449C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0800365C + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3D98: .4byte gUnknown_2039C34 +_080E3D9C: .4byte 0x00001E14 +_080E3DA0: .4byte 0x00001E28 + thumb_func_end sub_080E3D50 + + thumb_func_start sub_080E3DA4 +sub_080E3DA4: @ 0x080E3DA4 + push {r4, r5, lr} + sub sp, #0x2c + ldr r5, _080E3E10 + ldr r0, [r5] + ldr r1, _080E3E14 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _080E3E18 + adds r1, r1, r0 + add r0, sp, #0xc + bl sub_080088B8 + ldr r0, [r5] + ldr r1, _080E3E1C + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, [r0, #8] + add r0, sp, #0xc + movs r2, #0xf + bl sub_08008920 + ldr r0, [r5] + ldr r4, _080E3E20 + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #1 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + add r2, sp, #0xc + movs r3, #9 + bl sub_0800449C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0800365C + add sp, #0x2c + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3E10: .4byte gUnknown_2039C34 +_080E3E14: .4byte 0x00001E34 +_080E3E18: .4byte gUnknown_82EA31C +_080E3E1C: .4byte 0x00001E28 +_080E3E20: .4byte 0x00001E14 + thumb_func_end sub_080E3DA4 + + thumb_func_start sub_080E3E24 +sub_080E3E24: @ 0x080E3E24 + push {lr} + ldr r1, _080E3E40 + ldr r0, _080E3E44 + ldr r0, [r0] + ldr r2, _080E3E48 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_080E3E24 + + thumb_func_start sub_080E3E3C +sub_080E3E3C: @ 0x080E3E3C + pop {r0} + bx r0 + .align 2, 0 +_080E3E40: .4byte gUnknown_8565AE4 +_080E3E44: .4byte gUnknown_2039C34 +_080E3E48: .4byte 0x00001E2C + thumb_func_end sub_080E3E3C + + thumb_func_start sub_080E3E4C +sub_080E3E4C: @ 0x080E3E4C + push {lr} + ldr r1, _080E3E6C + ldr r0, _080E3E70 + ldr r0, [r0] + ldr r2, _080E3E74 + adds r0, r0, r2 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_080E3E4C + + thumb_func_start sub_080E3E68 +sub_080E3E68: @ 0x080E3E68 + bx r0 + .align 2, 0 +_080E3E6C: .4byte gUnknown_8565AF8 +_080E3E70: .4byte gUnknown_2039C34 +_080E3E74: .4byte 0x00001E28 + thumb_func_end sub_080E3E68 + + thumb_func_start sub_080E3E78 +sub_080E3E78: @ 0x080E3E78 + bx lr + .align 2, 0 + thumb_func_end sub_080E3E78 + + thumb_func_start sub_080E3E7C +sub_080E3E7C: @ 0x080E3E7C + push {r4, r5, lr} + sub sp, #0x10 + movs r4, #0 + ldr r1, _080E3ED4 + add r0, sp, #0xc + bl sub_080088B8 + ldr r5, _080E3ED8 + ldr r0, [r5] + ldr r1, _080E3EDC + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xff + beq _080E3ECA + cmp r0, #0xfe + bne _080E3EA6 + ldr r1, _080E3EE0 + add r0, sp, #0xc + bl sub_080088B8 + movs r4, #1 +_080E3EA6: + ldr r0, [r5] + ldr r1, _080E3EE4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r4, #1 + adds r1, r1, r4 + ldr r2, _080E3EE8 + adds r1, r1, r2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + add r1, sp, #0xc + str r1, [sp, #8] + movs r1, #1 + movs r2, #0x5b + movs r3, #1 + bl sub_08199AFC +_080E3ECA: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E3ED4: .4byte gUnknown_85C940A +_080E3ED8: .4byte gUnknown_2039C34 +_080E3EDC: .4byte 0x00001E36 +_080E3EE0: .4byte gUnknown_85C940C +_080E3EE4: .4byte 0x00001E13 +_080E3EE8: .4byte gUnknown_8565B00 + thumb_func_end sub_080E3E7C + + thumb_func_start sub_080E3EEC +sub_080E3EEC: @ 0x080E3EEC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_080E2788 + ldr r1, _080E3F1C + lsls r4, r4, #0x10 + asrs r4, r4, #0xe + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r4, r4, r0 + adds r4, r4, r1 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E3F1C: .4byte gUnknown_8565EB0 + thumb_func_end sub_080E3EEC + + thumb_func_start sub_080E3F20 +sub_080E3F20: @ 0x080E3F20 + push {r4, r5, lr} + movs r2, #0 + ldr r0, _080E3F48 + ldr r4, [r0] + ldr r3, _080E3F4C + adds r1, r4, r3 + ldr r1, [r1] + ldrb r3, [r1, #1] + adds r5, r0, #0 + cmp r2, r3 + bhs _080E3F5A + movs r0, #0xc0 + lsls r0, r0, #5 + adds r1, r4, r0 +_080E3F3C: + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _080E3F50 + adds r0, r2, #0 + b _080E3F6A + .align 2, 0 +_080E3F48: .4byte gUnknown_2039C34 +_080E3F4C: .4byte 0x00001E28 +_080E3F50: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _080E3F3C +_080E3F5A: + ldr r0, [r5] + ldr r1, _080E3F70 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r0, [r0, #1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080E3F6A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080E3F70: .4byte 0x00001E28 + thumb_func_end sub_080E3F20 + + thumb_func_start sub_080E3F74 +sub_080E3F74: @ 0x080E3F74 + push {lr} + ldr r0, _080E3FA0 + ldr r2, [r0] + ldr r1, _080E3FA4 + adds r0, r2, r1 + ldr r0, [r0] + ldrb r0, [r0, #1] + subs r0, #1 + lsls r1, r0, #0x18 + cmp r1, #0 + ble _080E3FB0 + movs r0, #0xc0 + lsls r0, r0, #5 + adds r3, r2, r0 +_080E3F90: + asrs r2, r1, #0x18 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _080E3FA8 + lsrs r0, r1, #0x18 + b _080E3FB2 + .align 2, 0 +_080E3FA0: .4byte gUnknown_2039C34 +_080E3FA4: .4byte 0x00001E28 +_080E3FA8: + subs r0, r2, #1 + lsls r1, r0, #0x18 + cmp r1, #0 + bgt _080E3F90 +_080E3FB0: + movs r0, #0 +_080E3FB2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E3F74 + + thumb_func_start sub_080E3FB8 +sub_080E3FB8: @ 0x080E3FB8 + push {r4, r5, r6, lr} + bl sub_080E3F74 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _080E4014 + ldr r0, [r6] + movs r5, #0xc0 + lsls r5, r5, #5 + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #0 + strb r1, [r0] + bl sub_080E4510 + bl sub_080E3E4C + movs r0, #3 + bl sub_08002248 + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] + bl sub_080E3414 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080E3FFC + cmp r0, #2 + bne _080E4006 +_080E3FFC: + movs r0, #1 + movs r1, #0 + movs r2, #1 + bl sub_080E2E78 +_080E4006: + movs r0, #0x17 + bl sub_080A306C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E4014: .4byte gUnknown_2039C34 + thumb_func_end sub_080E3FB8 + + thumb_func_start sub_080E4018 +sub_080E4018: @ 0x080E4018 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080E32E4 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_080E3EEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + movs r4, #1 + cmp r0, #0xff + bne _080E4048 + bl sub_080E4110 + b _080E4050 +_080E4048: + cmp r0, #0xfe + bne _080E4056 + bl sub_080E414C +_080E4050: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _080E405C +_080E4056: + adds r0, r1, #0 + bl sub_080E4188 +_080E405C: + bl sub_080E4510 + bl sub_080E3E4C + movs r0, #3 + bl sub_08002248 + movs r0, #5 + bl sub_080A306C + cmp r4, #0 + beq _080E409C + bl sub_080E3F74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E4094 + ldr r1, [r1] + ldr r2, _080E4098 + adds r1, r1, r2 + ldr r1, [r1] + ldrb r1, [r1, #1] + subs r1, #1 + cmp r0, r1 + bne _080E409C + movs r0, #1 + b _080E409E + .align 2, 0 +_080E4094: .4byte gUnknown_2039C34 +_080E4098: .4byte 0x00001E28 +_080E409C: + movs r0, #0 +_080E409E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E4018 + + thumb_func_start sub_080E40A8 +sub_080E40A8: @ 0x080E40A8 + push {r4, r5, r6, r7, lr} + movs r4, #0 + bl sub_080E3F74 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r6, _080E40E0 + ldr r0, [r6] + movs r5, #0xc0 + lsls r5, r5, #5 + adds r0, r0, r5 + adds r0, r0, r3 + ldrb r1, [r0] + ldr r2, _080E40E4 + ldrb r0, [r2] + cmp r0, #0xff + beq _080E40F6 + ldr r7, _080E40E8 +_080E40CC: + ldrb r0, [r2] + cmp r1, r0 + bne _080E40EC + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r3 + adds r1, r4, r7 + ldrb r1, [r1] + strb r1, [r0] + b _080E40F6 + .align 2, 0 +_080E40E0: .4byte gUnknown_2039C34 +_080E40E4: .4byte gUnknown_8565B06 +_080E40E8: .4byte gUnknown_8565BC1 +_080E40EC: + adds r2, #1 + adds r4, #1 + ldrb r0, [r2] + cmp r0, #0xff + bne _080E40CC +_080E40F6: + bl sub_080E4510 + bl sub_080E3E4C + movs r0, #3 + bl sub_08002248 + movs r0, #5 + bl sub_080A306C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E40A8 + + thumb_func_start sub_080E4110 +sub_080E4110: @ 0x080E4110 + push {r4, r5, lr} + bl sub_080E3F74 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080E4138 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_080E41B0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E413C + movs r0, #0 + b _080E4146 + .align 2, 0 +_080E4138: .4byte gUnknown_2039C34 +_080E413C: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080E4248 + movs r0, #1 +_080E4146: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080E4110 + + thumb_func_start sub_080E414C +sub_080E414C: @ 0x080E414C + push {r4, r5, lr} + bl sub_080E3F74 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080E4174 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_080E4208 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E4178 + movs r0, #0 + b _080E4182 + .align 2, 0 +_080E4174: .4byte gUnknown_2039C34 +_080E4178: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080E4318 + movs r0, #1 +_080E4182: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080E414C + + thumb_func_start sub_080E4188 +sub_080E4188: @ 0x080E4188 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080E3F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080E41AC + ldr r1, [r1] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r1, r2 + adds r1, r1, r0 + strb r4, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E41AC: .4byte gUnknown_2039C34 + thumb_func_end sub_080E4188 + + thumb_func_start sub_080E41B0 +sub_080E41B0: @ 0x080E41B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xfa + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #0xe + bls _080E41FE + adds r0, r1, #0 + subs r0, #0x1a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E41FE + adds r0, r1, #0 + subs r0, #0x4b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E41FE + adds r0, r1, #0 + subs r0, #0x56 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe + bls _080E41FE + adds r0, r1, #0 + subs r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E41FE + adds r0, r1, #0 + adds r0, #0x65 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4202 +_080E41FE: + movs r0, #1 + b _080E4204 +_080E4202: + movs r0, #0 +_080E4204: + pop {r1} + bx r1 + thumb_func_end sub_080E41B0 + + thumb_func_start sub_080E4208 +sub_080E4208: @ 0x080E4208 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xe6 + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E423E + adds r0, r1, #0 + subs r0, #0x46 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E423E + adds r0, r1, #0 + subs r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E423E + adds r0, r1, #0 + adds r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4242 +_080E423E: + movs r0, #1 + b _080E4244 +_080E4242: + movs r0, #0 +_080E4244: + pop {r1} + bx r1 + thumb_func_end sub_080E4208 + + thumb_func_start sub_080E4248 +sub_080E4248: @ 0x080E4248 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsrs r2, r0, #0x18 + movs r3, #0xfa + lsls r3, r3, #0x18 + adds r0, r0, r3 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4264 + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E4264: + adds r0, r2, #0 + subs r0, #0xb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4276 + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E4276: + adds r0, r2, #0 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4288 + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E4288: + adds r0, r2, #0 + subs r0, #0x1a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E429A + adds r0, r2, #0 + adds r0, #0x2c + b _080E42FE +_080E429A: + adds r0, r2, #0 + subs r0, #0x4b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E42FA + adds r0, r2, #0 + subs r0, #0x56 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E42B8 + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E42B8: + adds r0, r2, #0 + subs r0, #0x5b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E42CA + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E42CA: + adds r0, r2, #0 + subs r0, #0x60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E42DC + adds r0, r2, #0 + adds r0, #0x31 + b _080E42FE +_080E42DC: + adds r0, r2, #0 + subs r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E42EE + adds r0, r2, #0 + adds r0, #0x2c + b _080E42FE +_080E42EE: + adds r0, r2, #0 + adds r0, #0x65 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4302 +_080E42FA: + adds r0, r2, #0 + adds r0, #0xfb +_080E42FE: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080E4302: + ldr r0, _080E4314 + ldr r0, [r0] + movs r3, #0xc0 + lsls r3, r3, #5 + adds r0, r0, r3 + adds r0, r0, r1 + strb r2, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080E4314: .4byte gUnknown_2039C34 + thumb_func_end sub_080E4248 + + thumb_func_start sub_080E4318 +sub_080E4318: @ 0x080E4318 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsrs r2, r0, #0x18 + movs r3, #0xe6 + lsls r3, r3, #0x18 + adds r0, r0, r3 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4334 + adds r0, r2, #0 + adds r0, #0x31 + b _080E4360 +_080E4334: + adds r0, r2, #0 + subs r0, #0x46 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080E435E + adds r0, r2, #0 + subs r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4352 + adds r0, r2, #0 + adds r0, #0x31 + b _080E4360 +_080E4352: + adds r0, r2, #0 + adds r0, #0x6a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080E4364 +_080E435E: + adds r0, r2, #5 +_080E4360: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080E4364: + ldr r0, _080E4378 + ldr r0, [r0] + movs r3, #0xc0 + lsls r3, r3, #5 + adds r0, r0, r3 + adds r0, r0, r1 + strb r2, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080E4378: .4byte gUnknown_2039C34 + thumb_func_end sub_080E4318 + + thumb_func_start sub_080E437C +sub_080E437C: @ 0x080E437C + push {r4, r5, lr} + movs r2, #0 + ldr r1, _080E4390 + ldr r0, [r1] + ldr r4, _080E4394 + adds r0, r0, r4 + ldr r0, [r0] + adds r5, r1, #0 + b _080E43DC + .align 2, 0 +_080E4390: .4byte gUnknown_2039C34 +_080E4394: .4byte 0x00001E28 +_080E4398: + ldr r1, [r1] + movs r0, #0xc0 + lsls r0, r0, #5 + adds r3, r1, r0 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080E43CC + cmp r0, #0xff + beq _080E43CC + ldr r2, _080E43C8 + adds r0, r1, r2 + ldr r0, [r0] + adds r1, r1, r4 + ldr r1, [r1] + ldrb r2, [r1, #1] + adds r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r3, #0 + bl sub_080088F0 + b _080E43E2 + .align 2, 0 +_080E43C8: .4byte 0x00001E30 +_080E43CC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, r5, #0 + ldr r0, [r1] + ldr r4, _080E43E8 + adds r0, r0, r4 + ldr r0, [r0] +_080E43DC: + ldrb r0, [r0, #1] + cmp r2, r0 + blo _080E4398 +_080E43E2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E43E8: .4byte 0x00001E28 + thumb_func_end sub_080E437C + + thumb_func_start sub_080E43EC +sub_080E43EC: @ 0x080E43EC + push {r4, r5, r6, lr} + ldr r0, _080E443C + ldr r6, _080E4440 + ldr r1, [r6] + ldr r4, _080E4444 + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r1, [r6] + adds r1, r1, r4 + movs r5, #0xc0 + lsls r5, r5, #3 + movs r0, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800195C + ldr r1, [r6] + adds r1, r1, r4 + movs r0, #2 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800195C + ldr r1, [r6] + adds r1, r1, r4 + movs r0, #3 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800195C + ldr r0, _080E4448 + bl sub_08008254 + ldr r0, _080E444C + bl sub_080084A8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E443C: .4byte gUnknown_8565318 +_080E4440: .4byte gUnknown_2039C34 +_080E4444: .4byte 0x00001810 +_080E4448: .4byte gUnknown_8565EE0 +_080E444C: .4byte gUnknown_8565F48 + thumb_func_end sub_080E43EC + + thumb_func_start sub_080E4450 +sub_080E4450: @ 0x080E4450 + push {lr} + bl sub_080E3AD0 + bl sub_080E2E50 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4450 + + thumb_func_start sub_080E4460 +sub_080E4460: @ 0x080E4460 + push {lr} + ldr r0, _080E4488 + movs r1, #0 + movs r2, #0xc0 + bl sub_080A1200 + ldr r0, _080E448C + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #2 + bl sub_080985A0 + movs r1, #0xb0 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_080E4488: .4byte gUnknown_8565258 +_080E448C: .4byte gUnknown_8565218 + thumb_func_end sub_080E4460 + + thumb_func_start sub_080E4490 +sub_080E4490: @ 0x080E4490 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4490 + + thumb_func_start sub_080E44A4 +sub_080E44A4: @ 0x080E44A4 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #2 + beq _080E4504 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + ldr r0, _080E450C + adds r0, r1, r0 + ldrb r5, [r0] + str r5, [sp, #8] + adds r0, r6, #0 + movs r1, #0x20 + movs r2, #0x13 + movs r3, #0xc + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + adds r0, r6, #0 + movs r1, #0x21 + movs r2, #0x14 + movs r3, #0xc + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + adds r0, r6, #0 + movs r1, #0x1e + movs r2, #0x14 + movs r3, #0xa + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + adds r0, r6, #0 + movs r1, #0x1f + movs r2, #0x14 + movs r3, #0xb + bl sub_080026E0 +_080E4504: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E450C: .4byte gUnknown_8565C7B + thumb_func_end sub_080E44A4 + + thumb_func_start sub_080E4510 +sub_080E4510: @ 0x080E4510 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r7, _080E45C0 + ldr r1, [r7] + ldr r2, _080E45C4 + adds r0, r1, r2 + ldr r0, [r0] + ldrb r6, [r0, #1] + ldrb r0, [r0, #5] + mov sl, r0 + ldr r0, _080E45C8 + adds r1, r1, r0 + ldrb r0, [r1] + movs r1, #0x11 + bl sub_08003B18 + movs r4, #0 + cmp r4, r6 + bhs _080E45A0 + add r5, sp, #0xc + mov r8, r7 + movs r7, #0 + ldr r0, _080E45CC + ldrb r0, [r0] + mov sb, r0 +_080E454A: + mov r1, r8 + ldr r0, [r1] + movs r2, #0xc0 + lsls r2, r2, #5 + adds r0, r0, r2 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r5] + mov r0, sb + strb r0, [r5, #1] + ldrb r0, [r5] + bl sub_080E4830 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + cmp r0, #1 + bne _080E4570 + movs r1, #2 +_080E4570: + mov r2, r8 + ldr r0, [r2] + ldr r2, _080E45C8 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r3, r4, #2 + adds r3, r3, r4 + lsls r3, r3, #1 + add r3, sl + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #1 + str r1, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + add r2, sp, #0xc + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _080E454A +_080E45A0: + ldr r0, _080E45C0 + ldr r0, [r0] + ldr r1, _080E45C8 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0800365C + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E45C0: .4byte gUnknown_2039C34 +_080E45C4: .4byte 0x00001E28 +_080E45C8: .4byte 0x00001E13 +_080E45CC: .4byte gUnknown_85C8C24 + thumb_func_end sub_080E4510 + + thumb_func_start sub_080E45D0 +sub_080E45D0: @ 0x080E45D0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _080E463C + adds r0, r5, r0 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_08003B18 + movs r4, #0 + ldr r1, _080E4640 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r7, [r0] + ldr r0, _080E4644 + mov r8, r0 +_080E45FA: + lsls r3, r4, #4 + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r7, [sp] + movs r0, #0 + str r0, [sp, #4] + lsls r0, r4, #2 + lsls r1, r5, #4 + adds r0, r0, r1 + add r0, r8 + ldr r0, [r0] + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + bl sub_08199AFC + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080E45FA + adds r0, r6, #0 + bl sub_0800365C + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E463C: .4byte gUnknown_8565C8C +_080E4640: .4byte gUnknown_8565C90 +_080E4644: .4byte gUnknown_8565EB0 + thumb_func_end sub_080E45D0 + + thumb_func_start sub_080E4648 +sub_080E4648: @ 0x080E4648 + push {r4, r5, r6, r7, lr} + movs r0, #0xa + bl sub_080011D0 + adds r4, r0, #0 + movs r5, #3 + ands r4, r5 + movs r0, #0xc + bl sub_080011D0 + ands r0, r5 + cmp r4, r0 + bls _080E4678 + movs r6, #1 + movs r7, #1 + ldr r0, _080E4670 + ldr r0, [r0] + ldr r1, _080E4674 + b _080E4682 + .align 2, 0 +_080E4670: .4byte gUnknown_2039C34 +_080E4674: .4byte 0x00001E11 +_080E4678: + movs r6, #2 + movs r7, #2 + ldr r0, _080E46D4 + ldr r0, [r0] + ldr r1, _080E46D8 +_080E4682: + adds r0, r0, r1 + ldrb r5, [r0] + ldr r4, _080E46DC + bl sub_080E270C + ldr r1, _080E46D4 + ldr r2, [r1] + ldr r1, _080E46E0 + adds r2, r2, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + ldrb r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r1, [r1] + adds r0, r6, #0 + bl sub_080E4490 + bl sub_080E2758 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_080E45D0 + bl sub_080E2758 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080E44A4 + adds r0, r7, #0 + bl sub_08002248 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E46D4: .4byte gUnknown_2039C34 +_080E46D8: .4byte 0x00001E12 +_080E46DC: .4byte gUnknown_8565C9C +_080E46E0: .4byte 0x00001E22 + thumb_func_end sub_080E4648 + + thumb_func_start sub_080E46E4 +sub_080E46E4: @ 0x080E46E4 + push {r4, r5, lr} + sub sp, #0x10 + ldr r1, _080E473C + add r0, sp, #0xc + movs r2, #3 + bl memcpy + ldr r5, _080E4740 + ldr r0, [r5] + ldr r4, _080E4744 + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0xff + bl sub_08003B18 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + add r1, sp, #0xc + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _080E4748 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0x18 + movs r3, #0 + bl sub_08199AFC + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0800365C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E473C: .4byte gUnknown_8565CB4 +_080E4740: .4byte gUnknown_2039C34 +_080E4744: .4byte 0x00001E15 +_080E4748: .4byte gUnknown_85658A0 + thumb_func_end sub_080E46E4 + + thumb_func_start sub_080E474C +sub_080E474C: @ 0x080E474C + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E474C + + thumb_func_start sub_080E4764 +sub_080E4764: @ 0x080E4764 + push {lr} + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4764 + + thumb_func_start sub_080E4778 +sub_080E4778: @ 0x080E4778 + push {lr} + ldr r0, _080E4784 + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 +_080E4784: .4byte sub_080E4788 + thumb_func_end sub_080E4778 + + thumb_func_start sub_080E4788 +sub_080E4788: @ 0x080E4788 + push {r4, r5, lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + ldr r5, _080E47F8 + ldr r0, [r5] + ldr r1, _080E47FC + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, [r5] + ldr r1, _080E4800 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + movs r0, #0xa + bl sub_080011D0 + ldr r4, _080E4804 + adds r1, r4, #0 + ands r1, r0 + movs r0, #0xa + bl sub_08001144 + ldr r0, [r5] + ldr r1, _080E4808 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xa + bl sub_08001200 + movs r0, #0xc + bl sub_080011D0 + ands r4, r0 + movs r0, #0xc + adds r1, r4, #0 + bl sub_08001144 + ldr r0, [r5] + ldr r1, _080E480C + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xc + bl sub_08001200 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E47F8: .4byte gUnknown_2039C34 +_080E47FC: .4byte 0x00001E18 +_080E4800: .4byte 0x00001E1A +_080E4804: .4byte 0x0000FFFC +_080E4808: .4byte 0x00001E1C +_080E480C: .4byte 0x00001E1E + thumb_func_end sub_080E4788 + + thumb_func_start sub_080E4810 +sub_080E4810: @ 0x080E4810 + push {lr} + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4810 + + thumb_func_start sub_080E4830 +sub_080E4830: @ 0x080E4830 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r2, #0 + ldr r0, _080E4864 + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #0xff + beq _080E485A + adds r1, r3, #0 +_080E4844: + adds r0, r2, r1 + ldrb r0, [r0] + cmp r4, r0 + beq _080E485A + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, #0xff + bne _080E4844 +_080E485A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080E4864: .4byte gUnknown_85658C1 + thumb_func_end sub_080E4830 + + thumb_func_start sub_080E4868 +sub_080E4868: @ 0x080E4868 + push {lr} + sub sp, #8 + ldr r0, _080E4888 + ldr r1, [r0] + ldrb r2, [r1, #8] + movs r0, #0 + str r0, [sp] + ldr r0, _080E488C + str r0, [sp, #4] + movs r0, #0 + movs r3, #0 + bl sub_080E2244 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080E4888: .4byte gUnknown_3005AF0 +_080E488C: .4byte sub_08085AFC + thumb_func_end sub_080E4868 + + thumb_func_start sub_080E4890 +sub_080E4890: @ 0x080E4890 + push {lr} + sub sp, #8 + ldr r0, _080E48B0 + ldr r1, [r0] + ldrb r2, [r1, #8] + movs r0, #0 + str r0, [sp] + ldr r0, _080E48B4 + str r0, [sp, #4] + movs r0, #1 + movs r3, #0 + bl sub_080E2244 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080E48B0: .4byte gUnknown_3005AF0 +_080E48B4: .4byte sub_08085AFC + thumb_func_end sub_080E4890 + + thumb_func_start sub_080E48B8 +sub_080E48B8: @ 0x080E48B8 + push {lr} + sub sp, #8 + ldr r0, _080E48D8 + ldr r1, [r0] + ldrb r2, [r1, #8] + movs r0, #0 + str r0, [sp] + ldr r0, _080E48DC + str r0, [sp, #4] + movs r0, #2 + movs r3, #0 + bl sub_080E2244 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080E48D8: .4byte gUnknown_3005AF0 +_080E48DC: .4byte sub_08085AFC + thumb_func_end sub_080E48B8 + + thumb_func_start sub_080E48E0 +sub_080E48E0: @ 0x080E48E0 + push {lr} + sub sp, #8 + ldr r0, _080E4900 + ldr r1, [r0] + ldrb r2, [r1, #8] + movs r0, #0 + str r0, [sp] + ldr r0, _080E4904 + str r0, [sp, #4] + movs r0, #3 + movs r3, #0 + bl sub_080E2244 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_080E4900: .4byte gUnknown_3005AF0 +_080E4904: .4byte sub_08085AFC + thumb_func_end sub_080E48E0 + + thumb_func_start sub_080E4908 +sub_080E4908: @ 0x080E4908 + ldr r1, _080E4918 + ldr r1, [r1] + adds r1, #0xac + ldr r0, [r0] + ldr r1, [r1] + eors r0, r1 + bx lr + .align 2, 0 +_080E4918: .4byte gUnknown_3005AF0 + thumb_func_end sub_080E4908 + + thumb_func_start sub_080E491C +sub_080E491C: @ 0x080E491C + ldr r2, _080E492C + ldr r2, [r2] + adds r2, #0xac + ldr r2, [r2] + eors r2, r1 + str r2, [r0] + bx lr + .align 2, 0 +_080E492C: .4byte gUnknown_3005AF0 + thumb_func_end sub_080E491C + + thumb_func_start sub_080E4930 +sub_080E4930: @ 0x080E4930 + push {r4, lr} + adds r4, r1, #0 + bl sub_080E4908 + cmp r0, r4 + bhs _080E4940 + movs r0, #0 + b _080E4942 +_080E4940: + movs r0, #1 +_080E4942: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080E4930 + + thumb_func_start sub_080E4948 +sub_080E4948: @ 0x080E4948 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + bl sub_080E4908 + adds r5, r0, #0 + adds r0, r5, r4 + ldr r5, _080E497C + adds r4, r5, #0 + cmp r0, r5 + bhi _080E496C + adds r5, r0, #0 + adds r0, r6, #0 + bl sub_080E4908 + cmp r5, r0 + bhs _080E496C + adds r5, r4, #0 +_080E496C: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080E491C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E497C: .4byte 0x000F423F + thumb_func_end sub_080E4948 + + thumb_func_start sub_080E4980 +sub_080E4980: @ 0x080E4980 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_080E4908 + adds r1, r0, #0 + cmp r1, r4 + bhs _080E4994 + movs r1, #0 + b _080E4996 +_080E4994: + subs r1, r1, r4 +_080E4996: + adds r0, r5, #0 + bl sub_080E491C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4980 + + thumb_func_start sub_080E49A4 +sub_080E49A4: @ 0x080E49A4 + push {lr} + ldr r0, _080E49C0 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, _080E49C4 + ldrh r1, [r1] + bl sub_080E4930 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080E49C0: .4byte gUnknown_3005AEC +_080E49C4: .4byte gUnknown_2037282 + thumb_func_end sub_080E49A4 + + thumb_func_start sub_080E49C8 +sub_080E49C8: @ 0x080E49C8 + push {lr} + ldr r0, _080E49E0 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, _080E49E4 + ldrh r1, [r1] + bl sub_080E4980 + pop {r0} + bx r0 + .align 2, 0 +_080E49E0: .4byte gUnknown_3005AEC +_080E49E4: .4byte gUnknown_2037282 + thumb_func_end sub_080E49C8 + + thumb_func_start sub_080E49E8 +sub_080E49E8: @ 0x080E49E8 + push {lr} + sub sp, #4 + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + movs r1, #0x28 + movs r2, #2 + bl sub_080E4A08 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E49E8 + + thumb_func_start sub_080E4A08 +sub_080E4A08: @ 0x080E4A08 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0xc + adds r6, r0, #0 + mov r8, r1 + adds r5, r2, #0 + adds r1, r3, #0 + ldr r4, [sp, #0x24] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080E4A68 + movs r2, #1 + movs r3, #6 + bl sub_080089D8 + ldr r0, _080E4A6C + mov sb, r0 + ldr r1, _080E4A70 + bl sub_08008BCC + str r5, [sp] + str r4, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + mov r2, sb + mov r3, r8 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E4A68: .4byte gUnknown_2021C40 +_080E4A6C: .4byte gUnknown_2021C7C +_080E4A70: .4byte gUnknown_85C9A9D + thumb_func_end sub_080E4A08 + + thumb_func_start sub_080E4A74 +sub_080E4A74: @ 0x080E4A74 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + mov r8, r3 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08197F44 + adds r0, r6, #0 + mov r1, r8 + movs r2, #0 + bl sub_080E49E8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E4A74 + + thumb_func_start sub_080E4AB0 +sub_080E4AB0: @ 0x080E4AB0 + push {lr} + adds r1, r0, #0 + ldr r0, _080E4AC4 + ldrb r0, [r0] + movs r2, #0 + bl sub_080E49E8 + pop {r0} + bx r0 + .align 2, 0 +_080E4AC4: .4byte gUnknown_2039C38 + thumb_func_end sub_080E4AB0 + + thumb_func_start sub_080E4AC8 +sub_080E4AC8: @ 0x080E4AC8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x18 + mov r8, r0 + adds r4, r1, #0 + adds r3, r2, #0 + lsls r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r4, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r4, r4, r0 + lsrs r4, r4, #0x18 + lsrs r5, r3, #0x18 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #0xc + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #8 + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + adds r2, r4, #0 + bl sub_08198B34 + ldr r4, _080E4B5C + add r0, sp, #0x10 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #1 + bl sub_08003528 + ldrb r0, [r4] + movs r1, #0x85 + lsls r1, r1, #2 + movs r2, #0xe + mov r3, r8 + bl sub_080E4A74 + lsls r6, r6, #0x13 + movs r0, #0x98 + lsls r0, r0, #0xd + adds r6, r6, r0 + lsrs r6, r6, #0x10 + lsls r5, r5, #0x13 + movs r0, #0xb0 + lsls r0, r0, #0xc + adds r5, r5, r0 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080E4B88 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E4B5C: .4byte gUnknown_2039C38 + thumb_func_end sub_080E4AC8 + + thumb_func_start sub_080E4B60 +sub_080E4B60: @ 0x080E4B60 + push {r4, lr} + bl sub_080E4BD0 + ldr r4, _080E4B84 + ldrb r0, [r4] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E4B84: .4byte gUnknown_2039C38 + thumb_func_end sub_080E4B60 + + thumb_func_start sub_080E4B88 +sub_080E4B88: @ 0x080E4B88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080E4BC0 + bl sub_08034388 + ldr r0, _080E4BC4 + bl sub_080343E4 + ldr r0, _080E4BC8 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_08006B0C + ldr r1, _080E4BCC + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E4BC0: .4byte gUnknown_8565FBC +_080E4BC4: .4byte gUnknown_8565FC4 +_080E4BC8: .4byte gUnknown_8565FA4 +_080E4BCC: .4byte gUnknown_2039C39 + thumb_func_end sub_080E4B88 + + thumb_func_start sub_080E4BD0 +sub_080E4BD0: @ 0x080E4BD0 + push {lr} + ldr r0, _080E4BE8 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E4BEC + adds r0, r0, r1 + bl sub_08007338 + pop {r0} + bx r0 + .align 2, 0 +_080E4BE8: .4byte gUnknown_2039C39 +_080E4BEC: .4byte gUnknown_20205AC + thumb_func_end sub_080E4BD0 + + thumb_func_start sub_080E4BF0 +sub_080E4BF0: @ 0x080E4BF0 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + ldr r2, _080E4C44 + lsrs r0, r0, #0xd + adds r0, r0, r2 + ldrb r4, [r0, #2] + mov r3, sp + lsrs r1, r1, #0xd + adds r1, r1, r2 + ldrb r0, [r1, #3] + strb r0, [r3] + mov r2, sp + ldrb r0, [r1, #4] + strb r0, [r2, #1] + ldrb r0, [r1, #5] + strb r0, [r2, #2] + mov r0, sp + ldrb r1, [r1, #6] + strb r1, [r0, #3] + cmp r4, #0 + beq _080E4C4C + mov r0, sp + ldrb r0, [r0] + cmp r4, r0 + beq _080E4C3A + mov r0, sp + ldrb r0, [r0, #1] + cmp r4, r0 + beq _080E4C3A + mov r0, sp + ldrb r0, [r0, #2] + cmp r4, r0 + beq _080E4C3A + cmp r4, r1 + bne _080E4C4C +_080E4C3A: + ldr r0, _080E4C48 + adds r0, r4, r0 + ldrb r0, [r0] + b _080E4C4E + .align 2, 0 +_080E4C44: .4byte gUnknown_8565FCC +_080E4C48: .4byte gUnknown_8566BA4 +_080E4C4C: + movs r0, #0 +_080E4C4E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E4BF0 + + thumb_func_start sub_080E4C58 +sub_080E4C58: @ 0x080E4C58 + bx lr + .align 2, 0 + thumb_func_end sub_080E4C58 + + thumb_func_start sub_080E4C5C +sub_080E4C5C: @ 0x080E4C5C + push {lr} + ldr r3, _080E4C88 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4C88: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4C5C + + thumb_func_start sub_080E4C8C +sub_080E4C8C: @ 0x080E4C8C + push {lr} + ldr r3, _080E4CB8 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x11] + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #0x11] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #1 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4CB8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4C8C + + thumb_func_start sub_080E4CBC +sub_080E4CBC: @ 0x080E4CBC + ldr r3, _080E4D0C + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0x15] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0x15] + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0xb] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #0xb] + bx lr + .align 2, 0 +_080E4D0C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4CBC + + thumb_func_start sub_080E4D10 +sub_080E4D10: @ 0x080E4D10 + push {lr} + ldr r3, _080E4D38 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0, #0x12] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #2 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4D38: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4D10 + + thumb_func_start sub_080E4D3C +sub_080E4D3C: @ 0x080E4D3C + push {lr} + ldr r3, _080E4D68 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #3 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4D68: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4D3C + + thumb_func_start sub_080E4D6C +sub_080E4D6C: @ 0x080E4D6C + push {lr} + ldr r3, _080E4D94 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x14 + strb r1, [r0, #0xf] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #4 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4D94: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4D6C + + thumb_func_start sub_080E4D98 +sub_080E4D98: @ 0x080E4D98 + push {lr} + ldr r3, _080E4DC4 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #5 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E4DC4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4D98 + + thumb_func_start sub_080E4DC8 +sub_080E4DC8: @ 0x080E4DC8 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _080E4E3C + ldr r0, [r5] + ldr r1, [r0, #8] + ldrb r4, [r1, #0x11] + adds r3, r1, r4 + ldrb r0, [r3] + cmp r0, #0 + beq _080E4E16 + subs r0, #1 + ldrb r1, [r1] + cmp r0, r1 + beq _080E4DFE + adds r3, r5, #0 +_080E4DE6: + adds r2, #1 + cmp r2, #3 + bgt _080E4DFE + ldr r0, [r3] + ldr r1, [r0, #8] + adds r0, r1, r4 + ldrb r0, [r0] + subs r0, #1 + adds r1, r1, r2 + ldrb r1, [r1] + cmp r0, r1 + bne _080E4DE6 +_080E4DFE: + ldr r1, _080E4E3C + ldr r0, [r1] + ldr r0, [r0, #8] + strb r2, [r0, #8] + ldr r0, [r1] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_080E6208 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080E4E16: + cmp r2, #0 + bne _080E4E28 + ldr r0, _080E4E3C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E4E28: + ldr r0, _080E4E3C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E4E3C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4DC8 + + thumb_func_start sub_080E4E40 +sub_080E4E40: @ 0x080E4E40 + push {r4, r5, r6, lr} + movs r1, #0 + ldr r2, _080E4EB8 + ldr r0, [r2] + ldr r0, [r0, #8] + ldrb r5, [r0, #0x11] + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + beq _080E4E90 + movs r3, #0 + movs r4, #0 + adds r6, r2, #0 +_080E4E5A: + ldr r0, [r6] + ldr r2, [r0, #8] + adds r0, r2, r5 + adds r1, r2, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E4E74 + adds r0, r2, #0 + adds r0, #8 + adds r0, r0, r4 + strb r3, [r0] + adds r4, #1 +_080E4E74: + adds r3, #1 + cmp r3, #3 + ble _080E4E5A + ldr r0, _080E4EB8 + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #8 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] + bl sub_080E6208 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_080E4E90: + cmp r1, #0 + bne _080E4EA2 + ldr r0, _080E4EB8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E4EA2: + ldr r0, _080E4EB8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E4EB8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4E40 + + thumb_func_start sub_080E4EBC +sub_080E4EBC: @ 0x080E4EBC + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x14 + cmp r0, #1 + bls _080E4EDE + movs r1, #0x3c + cmp r0, #7 + bhi _080E4EDE + movs r1, #0x28 +_080E4EDE: + ldr r0, _080E4EF0 + ldr r0, [r0] + ldr r0, [r0, #8] + strh r1, [r0, #4] + bl sub_080E4DC8 + pop {r0} + bx r0 + .align 2, 0 +_080E4EF0: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4EBC + + thumb_func_start sub_080E4EF4 +sub_080E4EF4: @ 0x080E4EF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r7, #0 + ldr r1, _080E4FA4 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r5, [r0, #0x11] + adds r0, r0, r5 + ldrb r0, [r0] + mov r8, r1 + cmp r0, #0 + beq _080E4F7A + movs r4, #0 + mov r6, r8 +_080E4F12: + ldr r0, [r6] + ldr r2, [r0, #8] + adds r0, r2, r5 + adds r1, r2, r4 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E4F74 + strb r4, [r2, #8] + ldr r0, [r6] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + cmp r0, #0 + beq _080E4F5E + movs r1, #0xa + cmp r0, #2 + bls _080E4F5E + movs r1, #0x14 + cmp r0, #4 + bls _080E4F5E + movs r1, #0x1e + cmp r0, #6 + bls _080E4F5E + movs r1, #0x3c + cmp r0, #8 + bhi _080E4F5E + movs r1, #0x28 +_080E4F5E: + ldr r0, [r6] + ldr r0, [r0, #8] + strh r1, [r0, #4] + bl sub_080E6208 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E4F74 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_080E4F74: + adds r4, #1 + cmp r4, #3 + ble _080E4F12 +_080E4F7A: + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + cmp r7, #0 + bne _080E4F9A + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E4F9A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E4FA4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4EF4 + + thumb_func_start sub_080E4FA8 +sub_080E4FA8: @ 0x080E4FA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sb, r0 + ldr r1, _080E5064 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r2, [r0, #0x11] + mov r8, r2 + add r0, r8 + ldrb r0, [r0] + mov sl, r1 + cmp r0, #0 + beq _080E5034 + movs r6, #0 + mov r7, sl + movs r5, #0 +_080E4FD0: + ldr r2, [r7] + ldr r0, [r2, #8] + mov r3, r8 + adds r1, r0, r3 + adds r0, r0, r6 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bls _080E502C + ldr r0, [r2, #4] + adds r0, r5, r0 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E502C + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080E61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E502C + ldr r0, [r7] + ldr r2, [r0, #4] + adds r2, r5, r2 + ldrb r0, [r2, #0x15] + movs r3, #0x11 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2, #0x15] + ldr r0, [r7] + ldr r2, [r0, #4] + adds r2, r5, r2 + ldrb r0, [r2, #0x15] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2, #0x15] + adds r0, r4, #0 + movs r1, #8 + bl sub_080DCB38 + movs r0, #1 + mov sb, r0 +_080E502C: + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _080E4FD0 +_080E5034: + mov r1, sl + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #7 + bl sub_080DCB38 + mov r2, sb + cmp r2, #0 + bne _080E5056 + mov r3, sl + ldr r0, [r3] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E5056: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5064: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E4FA8 + + thumb_func_start sub_080E5068 +sub_080E5068: @ 0x080E5068 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + mov sb, r0 + ldr r1, _080E50B0 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r7, [r0, #0x11] + adds r0, r0, r7 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0 + beq _080E50E6 + movs r5, #0 + movs r6, #0 + mov r8, r4 +_080E508C: + ldr r3, [r4] + ldr r2, [r3, #8] + adds r0, r2, r7 + adds r1, r2, r5 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E50DC + ldr r0, [r3, #4] + adds r0, r6, r0 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E50B4 + movs r0, #0x32 + b _080E50B6 + .align 2, 0 +_080E50B0: .4byte gUnknown_2039BD4 +_080E50B4: + movs r0, #0xa +_080E50B6: + strh r0, [r2, #4] + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #8] + strb r5, [r0, #8] + ldr r0, [r1] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_080E6208 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E50DC + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080E50DC: + adds r6, #0x1c + adds r5, #1 + ldr r4, _080E5110 + cmp r5, #3 + ble _080E508C +_080E50E6: + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + mov r0, sb + cmp r0, #0 + bne _080E5104 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E5104: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5110: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5068 + + thumb_func_start sub_080E5114 +sub_080E5114: @ 0x080E5114 + push {r4, lr} + ldr r4, _080E5148 + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x11] + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #0x11] + bl sub_080E4E40 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5148: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5114 + + thumb_func_start sub_080E514C +sub_080E514C: @ 0x080E514C + push {r4, lr} + ldr r4, _080E5184 + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + ldr r1, _080E5188 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + bl sub_080E6110 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5184: .4byte gUnknown_2039BD4 +_080E5188: .4byte gUnknown_8565FCC + thumb_func_end sub_080E514C + + thumb_func_start sub_080E518C +sub_080E518C: @ 0x080E518C + push {lr} + movs r0, #0 + bl sub_080E6110 + ldr r0, _080E51A8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E51A8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E518C + + thumb_func_start sub_080E51AC +sub_080E51AC: @ 0x080E51AC + push {lr} + movs r0, #1 + bl sub_080E6110 + ldr r0, _080E51C8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E51C8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E51AC + + thumb_func_start sub_080E51CC +sub_080E51CC: @ 0x080E51CC + push {lr} + movs r0, #2 + bl sub_080E6110 + ldr r0, _080E51E8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E51E8: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E51CC + + thumb_func_start sub_080E51EC +sub_080E51EC: @ 0x080E51EC + push {lr} + movs r0, #3 + bl sub_080E6110 + ldr r0, _080E5208 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E5208: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E51EC + + thumb_func_start sub_080E520C +sub_080E520C: @ 0x080E520C + push {lr} + movs r0, #4 + bl sub_080E6110 + ldr r0, _080E5228 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r0} + bx r0 + .align 2, 0 +_080E5228: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E520C + + thumb_func_start sub_080E522C +sub_080E522C: @ 0x080E522C + push {r4, r5, r6, lr} + movs r4, #0 + ldr r2, _080E5278 + ldr r0, [r2] + ldr r0, [r0, #8] + ldrb r1, [r0, #0x11] + adds r0, r0, r1 + ldrb r0, [r0] + adds r6, r2, #0 + cmp r0, #3 + beq _080E528C + movs r5, #0 +_080E5244: + ldr r0, _080E5278 + ldr r0, [r0] + ldr r1, [r0, #8] + ldrb r0, [r1, #0x11] + adds r0, r1, r0 + ldrb r0, [r0] + adds r0, #1 + adds r1, r1, r5 + ldrb r1, [r1] + cmp r0, r1 + bne _080E5286 + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080E61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E527C + adds r0, r4, #0 + bl sub_080DCCC4 + adds r0, r4, #0 + movs r1, #0xa + b _080E5280 + .align 2, 0 +_080E5278: .4byte gUnknown_2039BD4 +_080E527C: + adds r0, r4, #0 + movs r1, #0x3c +_080E5280: + bl sub_080DCB38 + movs r4, #1 +_080E5286: + adds r5, #1 + cmp r5, #3 + ble _080E5244 +_080E528C: + ldr r0, [r6] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #9 + bl sub_080DCB38 + cmp r4, #0 + bne _080E52A8 + ldr r0, [r6] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E52A8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E522C + + thumb_func_start sub_080E52B0 +sub_080E52B0: @ 0x080E52B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + movs r0, #0 + mov sb, r0 + movs r1, #0 + str r1, [sp, #0x18] + mov r0, sp + movs r1, #0xff + movs r2, #5 + bl memset + movs r5, #0 + movs r4, #0 + add r2, sp, #0x10 + mov r8, r2 + add r3, sp, #8 + mov sl, r3 + movs r6, #0 +_080E52DC: + ldr r0, _080E5328 + ldr r2, [r0] + ldr r1, [r2, #8] + ldrb r0, [r1, #0x11] + adds r0, r1, r0 + adds r1, r1, r5 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _080E5314 + ldr r0, [r2, #4] + adds r0, r6, r0 + ldrb r1, [r0, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080E5314 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E5314 + mov r1, sp + adds r0, r1, r4 + strb r5, [r0] + adds r4, #1 +_080E5314: + adds r6, #0x1c + adds r5, #1 + cmp r5, #3 + ble _080E52DC + cmp r4, #1 + bne _080E532C + movs r0, #0x3c + mov r2, r8 + strh r0, [r2] + b _080E535A + .align 2, 0 +_080E5328: .4byte gUnknown_2039BD4 +_080E532C: + cmp r4, #2 + bne _080E533A + movs r0, #0x1e + mov r3, r8 + strh r0, [r3] + strh r0, [r3, #2] + b _080E535A +_080E533A: + cmp r4, #3 + bne _080E534A + movs r0, #0x14 + mov r6, r8 + strh r0, [r6] + strh r0, [r6, #2] + strh r0, [r6, #4] + b _080E535A +_080E534A: + mov r1, r8 + movs r2, #0 + mov r0, r8 + adds r0, #6 +_080E5352: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _080E5352 +_080E535A: + movs r5, #0 + ldr r7, _080E53A0 + movs r6, #0 + mov r4, sl +_080E5362: + ldr r0, [r7] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrb r1, [r0, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E53AC + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DD94C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E53AC + ldr r0, [r7] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrh r0, [r0, #8] + lsls r0, r0, #3 + ldr r1, _080E53A4 + adds r0, r0, r1 + ldrb r0, [r0, #2] + ldr r2, _080E53A8 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + b _080E53AE + .align 2, 0 +_080E53A0: .4byte gUnknown_2039BD4 +_080E53A4: .4byte gUnknown_8565FCC +_080E53A8: .4byte gUnknown_8566BA4 +_080E53AC: + movs r0, #0 +_080E53AE: + strh r0, [r4] + ldr r0, [r7] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + ldrh r0, [r4] + subs r0, r0, r1 + strh r0, [r4] + adds r6, #0x1c + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _080E5362 + mov r3, r8 + movs r6, #0 + ldrsh r0, [r3, r6] + cmp r0, #0 + beq _080E547C + movs r5, #0 + mov r0, sp + ldrb r0, [r0] + cmp r0, #0xff + beq _080E547C + mov r4, sp +_080E53F2: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r5, #1 + add r1, r8 + movs r3, #0 + ldrsh r2, [r1, r3] + ldrb r3, [r4] + lsls r1, r3, #1 + add r1, sl + movs r6, #0 + ldrsh r1, [r1, r6] + adds r2, r2, r1 + cmp r0, r2 + bge _080E5442 + adds r0, r3, #0 + bl sub_080E61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E544C + ldrb r0, [r4] + bl sub_080DCCC4 + ldrb r0, [r4] + movs r1, #0xa + bl sub_080DCB38 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + b _080E5446 +_080E5442: + movs r0, #1 + str r0, [sp, #0x18] +_080E5446: + ldr r1, [sp, #0x18] + cmp r1, #0 + beq _080E5462 +_080E544C: + movs r2, #0 + str r2, [sp, #0x18] + ldrb r0, [r4] + movs r1, #0x3c + bl sub_080DCB38 + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080E5462: + ldr r0, _080E54AC + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #0xd + ldrb r3, [r4] + adds r0, r0, r3 + movs r1, #1 + strb r1, [r0] + adds r4, #1 + adds r5, #1 + ldrb r0, [r4] + cmp r0, #0xff + bne _080E53F2 +_080E547C: + ldr r6, _080E54AC + ldr r0, [r6] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0xb + bl sub_080DCB38 + mov r0, sb + cmp r0, #0 + bne _080E549C + ldr r0, [r6] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E549C: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E54AC: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E52B0 + + thumb_func_start sub_080E54B0 +sub_080E54B0: @ 0x080E54B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + mov r8, r0 + movs r6, #0 + ldr r7, _080E5554 + movs r5, #0 +_080E54C0: + ldr r2, [r7] + ldr r0, [r2, #8] + ldrb r1, [r0, #0x11] + adds r1, r0, r1 + adds r0, r0, r6 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bls _080E5522 + ldr r0, [r2, #4] + adds r0, r5, r0 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _080E5522 + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080E61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E5522 + ldr r0, [r7] + ldr r0, [r0, #4] + adds r0, r5, r0 + movs r1, #0 + strb r1, [r0, #0xd] + ldr r0, [r7] + ldr r2, [r0, #4] + adds r2, r5, r2 + ldrb r1, [r2, #0x10] + movs r3, #0x31 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r1, r0 + movs r0, #0x20 + orrs r1, r0 + strb r1, [r2, #0x10] + adds r0, r4, #0 + movs r1, #0xd + bl sub_080DCB38 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_080E5522: + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + ble _080E54C0 + ldr r4, _080E5554 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0xc + bl sub_080DCB38 + mov r0, r8 + cmp r0, #0 + bne _080E554A + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x39 + bl sub_080DCB54 +_080E554A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5554: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E54B0 + + thumb_func_start sub_080E5558 +sub_080E5558: @ 0x080E5558 + push {r4, r5, r6, r7, lr} + movs r7, #0 + movs r4, #0 + ldr r5, _080E5588 + movs r6, #0 +_080E5562: + ldr r3, [r5] + ldr r2, [r3, #8] + ldrb r0, [r2, #0x11] + adds r0, r2, r0 + adds r1, r2, r4 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E55AE + ldr r0, [r3, #4] + adds r0, r6, r0 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _080E558C + movs r0, #0x28 + b _080E558E + .align 2, 0 +_080E5588: .4byte gUnknown_2039BD4 +_080E558C: + movs r0, #0xa +_080E558E: + strh r0, [r2, #4] + ldr r0, [r5] + ldr r0, [r0, #8] + strb r4, [r0, #8] + ldr r0, [r5] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_080E6208 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E55AE + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_080E55AE: + adds r6, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080E5562 + ldr r4, _080E55DC + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0xe + bl sub_080DCB38 + cmp r7, #0 + bne _080E55D4 + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x39 + bl sub_080DCB54 +_080E55D4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E55DC: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5558 + + thumb_func_start sub_080E55E0 +sub_080E55E0: @ 0x080E55E0 + push {r4, lr} + ldr r1, _080E5628 + ldr r0, _080E562C + ldr r4, [r0] + ldr r0, [r4, #8] + ldrb r2, [r0, #0x11] + adds r1, r2, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _080E5622 + ldr r0, [r4, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + ldr r3, _080E5630 + ldr r2, _080E5634 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #1 + ldrh r2, [r1, #2] + adds r0, r0, r2 + strh r0, [r1, #2] + ldr r0, [r4, #8] + ldrb r0, [r0, #0x11] + movs r1, #0xf + bl sub_080DCB38 +_080E5622: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5628: .4byte gUnknown_2039BC6 +_080E562C: .4byte gUnknown_2039BD4 +_080E5630: .4byte gUnknown_8566AE4 +_080E5634: .4byte gUnknown_8565FCC + thumb_func_end sub_080E55E0 + + thumb_func_start sub_080E5638 +sub_080E5638: @ 0x080E5638 + push {r4, lr} + ldr r1, _080E5680 + ldr r0, _080E5684 + ldr r4, [r0] + ldr r0, [r4, #8] + ldrb r2, [r0, #0x11] + adds r1, r2, r1 + ldrb r0, [r1] + cmp r0, #3 + bne _080E567A + ldr r0, [r4, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + ldr r3, _080E5688 + ldr r2, _080E568C + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #1 + ldrh r2, [r1, #2] + adds r0, r0, r2 + strh r0, [r1, #2] + ldr r0, [r4, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x10 + bl sub_080DCB38 +_080E567A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E5680: .4byte gUnknown_2039BC6 +_080E5684: .4byte gUnknown_2039BD4 +_080E5688: .4byte gUnknown_8566AE4 +_080E568C: .4byte gUnknown_8565FCC + thumb_func_end sub_080E5638 + + thumb_func_start sub_080E5690 +sub_080E5690: @ 0x080E5690 + push {r4, r5, r6, r7, lr} + movs r1, #0 + movs r5, #0 + ldr r0, _080E56E4 + ldr r4, [r0] + ldr r2, [r4, #8] + ldrb r0, [r2, #0x11] + adds r0, r2, r0 + ldrb r6, [r0] + movs r3, #0 +_080E56A4: + adds r0, r2, r1 + ldrb r0, [r0] + cmp r6, r0 + bls _080E56B6 + ldr r0, [r4, #4] + adds r0, r3, r0 + movs r7, #2 + ldrsh r0, [r0, r7] + adds r5, r5, r0 +_080E56B6: + adds r3, #0x1c + adds r1, #1 + cmp r1, #3 + ble _080E56A4 + cmp r5, #0 + bge _080E56C4 + movs r5, #0 +_080E56C4: + ldr r0, _080E56E4 + ldr r3, [r0] + ldr r0, [r3, #8] + ldrb r2, [r0, #0x11] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080E56D8 + cmp r5, #0 + bne _080E56E8 +_080E56D8: + adds r0, r2, #0 + movs r1, #0x12 + bl sub_080DCB38 + b _080E5708 + .align 2, 0 +_080E56E4: .4byte gUnknown_2039BD4 +_080E56E8: + ldr r0, [r3, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r0, r0, #1 + ldrh r2, [r1, #2] + adds r0, r0, r2 + strh r0, [r1, #2] + ldr r0, [r3, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x11 + bl sub_080DCB38 +_080E5708: + ldr r4, _080E573C + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r7, #2 + ldrsh r0, [r0, r7] + bl sub_080E634C + ldr r2, [r4] + ldr r1, [r2, #8] + ldrb r3, [r1, #0x11] + ldr r2, [r2, #4] + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + strh r0, [r1, #2] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E573C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5690 + + thumb_func_start sub_080E5740 +sub_080E5740: @ 0x080E5740 + push {r4, r5, r6, r7, lr} + movs r6, #0 + ldr r0, _080E579C + ldr r4, [r0] + ldr r2, [r4, #8] + ldrb r1, [r2, #0x11] + adds r3, r2, r1 + ldrb r1, [r3] + adds r7, r0, #0 + cmp r1, #0 + beq _080E578E + movs r1, #0 + adds r5, r4, #0 + adds r4, r2, #0 + ldrb r0, [r3] + subs r3, r0, #1 + movs r2, #0 +_080E5762: + adds r0, r4, r1 + ldrb r0, [r0] + cmp r3, r0 + bne _080E5770 + ldr r0, [r5, #4] + adds r0, r2, r0 + ldrh r6, [r0, #2] +_080E5770: + adds r2, #0x1c + adds r1, #1 + cmp r1, #3 + ble _080E5762 + ldr r3, [r7] + ldr r0, [r3, #8] + ldrb r2, [r0, #0x11] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080E578E + lsls r0, r6, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + bgt _080E57A0 +_080E578E: + ldr r0, [r7] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x14 + bl sub_080DCB38 + b _080E57BA + .align 2, 0 +_080E579C: .4byte gUnknown_2039BD4 +_080E57A0: + ldr r1, [r3, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #2] + adds r1, r4, r1 + strh r1, [r0, #2] + ldr r0, [r3, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x13 + bl sub_080DCB38 +_080E57BA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E5740 + + thumb_func_start sub_080E57C0 +sub_080E57C0: @ 0x080E57C0 + push {r4, r5, lr} + ldr r1, _080E57E4 + ldr r3, [r1] + ldr r0, [r3, #8] + ldrb r2, [r0, #0x11] + adds r0, r0, r2 + ldrb r4, [r0] + adds r5, r1, #0 + cmp r4, #0 + bne _080E57E8 + ldr r0, [r3, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0xa + b _080E57F8 + .align 2, 0 +_080E57E4: .4byte gUnknown_2039BD4 +_080E57E8: + ldr r0, [r3, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 +_080E57F8: + strh r0, [r1, #2] + cmp r4, #0 + bne _080E580C + ldr r0, [r5] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x15 + bl sub_080DCB38 + b _080E583C +_080E580C: + cmp r4, #1 + bne _080E581E + ldr r0, [r5] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x16 + bl sub_080DCB38 + b _080E583C +_080E581E: + cmp r4, #2 + bne _080E5830 + ldr r0, [r5] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x17 + bl sub_080DCB38 + b _080E583C +_080E5830: + ldr r0, [r5] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x18 + bl sub_080DCB38 +_080E583C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E57C0 + + thumb_func_start sub_080E5844 +sub_080E5844: @ 0x080E5844 + push {r4, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #2 + bhi _080E5874 + movs r4, #0xa + ldr r0, _080E5870 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1a + bl sub_080DCB38 + b _080E58D8 + .align 2, 0 +_080E5870: .4byte gUnknown_2039BD4 +_080E5874: + cmp r0, #5 + bhi _080E5890 + movs r4, #0x14 + ldr r0, _080E588C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1b + bl sub_080DCB38 + b _080E58D8 + .align 2, 0 +_080E588C: .4byte gUnknown_2039BD4 +_080E5890: + cmp r0, #7 + bhi _080E58AC + movs r4, #0x28 + ldr r0, _080E58A8 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1c + bl sub_080DCB38 + b _080E58D8 + .align 2, 0 +_080E58A8: .4byte gUnknown_2039BD4 +_080E58AC: + cmp r1, #8 + bhi _080E58C8 + movs r4, #0x3c + ldr r0, _080E58C4 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1d + bl sub_080DCB38 + b _080E58D8 + .align 2, 0 +_080E58C4: .4byte gUnknown_2039BD4 +_080E58C8: + movs r4, #0x50 + ldr r0, _080E58F4 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1e + bl sub_080DCB38 +_080E58D8: + ldr r0, _080E58F4 + ldr r1, [r0] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r4, [r0, #2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E58F4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5844 + + thumb_func_start sub_080E58F8 +sub_080E58F8: @ 0x080E58F8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r2, _080E597C + ldr r0, [r2] + ldr r3, [r0, #8] + ldrb r0, [r3, #0x11] + adds r0, r3, r0 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r2 + cmp r1, #0 + beq _080E59D4 + mov r7, r8 + ldrb r6, [r3] +_080E591C: + movs r2, #0 + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + adds r5, r0, #0 + cmp r6, r1 + beq _080E5946 + ldr r4, _080E597C +_080E592A: + lsls r0, r2, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r2, r0, #0x18 + asrs r3, r0, #0x18 + cmp r3, #3 + bgt _080E5946 + ldr r0, [r4] + ldr r0, [r0, #8] + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, r1 + bne _080E592A +_080E5946: + ldr r0, [r7] + lsls r3, r2, #0x18 + asrs r1, r3, #0x18 + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + mov ip, r3 + cmp r0, #0 + bne _080E596C + ldrb r1, [r2, #0xc] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _080E5980 +_080E596C: + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r5, r1 + lsrs r4, r0, #0x18 + cmp r0, #0 + blt _080E59D4 + b _080E591C + .align 2, 0 +_080E597C: .4byte gUnknown_2039BD4 +_080E5980: + mov r2, r8 + ldr r6, [r2] + ldr r0, [r6, #8] + ldrb r1, [r0, #0x11] + ldr r4, [r6, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r4 + ldrh r0, [r5, #6] + ldr r3, _080E59E0 + lsls r0, r0, #3 + adds r7, r0, r3 + ldrb r2, [r7, #1] + lsls r2, r2, #0x1d + mov r0, ip + asrs r1, r0, #0x18 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #6] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + cmp r2, r0 + bne _080E59D4 + ldr r1, _080E59E4 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #1 + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r5, #2] + ldr r0, [r6, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1f + bl sub_080DCB38 +_080E59D4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E59E0: .4byte gUnknown_8565FCC +_080E59E4: .4byte gUnknown_8566AE4 + thumb_func_end sub_080E58F8 + + thumb_func_start sub_080E59E8 +sub_080E59E8: @ 0x080E59E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _080E5A74 + ldr r3, [r0] + ldr r1, [r3, #8] + ldrb r2, [r1, #0x11] + adds r1, r1, r2 + ldrb r1, [r1] + mov sb, r0 + cmp r1, #0 + beq _080E5A88 + ldr r1, [r3, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + mov r8, r0 + movs r6, #0 + ldr r0, _080E5A78 + mov ip, r0 + movs r7, #0 +_080E5A18: + mov r1, sb + ldr r4, [r1] + ldr r0, [r4, #8] + ldrb r2, [r0, #0x11] + adds r1, r0, r2 + ldrb r1, [r1] + subs r1, #1 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r1, r0 + bne _080E5A80 + mov r1, r8 + lsls r0, r1, #3 + mov r1, ip + adds r5, r0, r1 + ldrb r1, [r5, #1] + lsls r1, r1, #0x1d + ldr r3, [r4, #4] + adds r0, r7, r3 + ldrh r0, [r0, #6] + lsls r0, r0, #3 + add r0, ip + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + cmp r1, r0 + beq _080E5A80 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, _080E5A7C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + lsls r0, r0, #1 + ldrh r2, [r1, #2] + adds r0, r0, r2 + strh r0, [r1, #2] + ldr r0, [r4, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x20 + bl sub_080DCB38 + b _080E5A88 + .align 2, 0 +_080E5A74: .4byte gUnknown_2039BD4 +_080E5A78: .4byte gUnknown_8565FCC +_080E5A7C: .4byte gUnknown_8566AE4 +_080E5A80: + adds r7, #0x1c + adds r6, #1 + cmp r6, #3 + ble _080E5A18 +_080E5A88: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E59E8 + + thumb_func_start sub_080E5A94 +sub_080E5A94: @ 0x080E5A94 + push {r4, r5, r6, r7, lr} + ldr r0, _080E5AEC + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #0x11] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080E5B0A + movs r5, #0 + movs r6, #0 +_080E5AAA: + ldr r0, _080E5AEC + ldr r4, [r0] + ldr r1, [r4, #8] + ldrb r2, [r1, #0x11] + adds r0, r1, r2 + ldrb r0, [r0] + subs r0, #1 + adds r1, r1, r5 + ldrb r1, [r1] + cmp r0, r1 + bne _080E5B02 + ldr r1, [r4, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + adds r1, r6, r1 + movs r0, #2 + ldrsh r2, [r3, r0] + movs r7, #2 + ldrsh r0, [r1, r7] + cmp r2, r0 + ble _080E5AF0 + adds r0, r2, #0 + lsls r0, r0, #1 + strh r0, [r3, #2] + ldr r0, [r4, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x21 + bl sub_080DCB38 + b _080E5B02 + .align 2, 0 +_080E5AEC: .4byte gUnknown_2039BD4 +_080E5AF0: + cmp r2, r0 + bge _080E5B02 + movs r0, #0 + strh r0, [r3, #2] + ldr r0, [r4, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x22 + bl sub_080DCB38 +_080E5B02: + adds r6, #0x1c + adds r5, #1 + cmp r5, #3 + ble _080E5AAA +_080E5B0A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E5A94 + + thumb_func_start sub_080E5B10 +sub_080E5B10: @ 0x080E5B10 + push {r4, lr} + ldr r4, _080E5B60 + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r3, [r1, #0xd] + movs r0, #0xd + ldrsb r0, [r1, r0] + cmp r0, #0x1d + bgt _080E5B64 + adds r0, r3, #0 + adds r0, #0xa + strb r0, [r1, #0xd] + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #0x10] + movs r1, #0x31 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x10 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x23 + bl sub_080DCB38 + b _080E5B6C + .align 2, 0 +_080E5B60: .4byte gUnknown_2039BD4 +_080E5B64: + adds r0, r2, #0 + movs r1, #0x3a + bl sub_080DCB38 +_080E5B6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E5B10 + + thumb_func_start sub_080E5B74 +sub_080E5B74: @ 0x080E5B74 + push {lr} + ldr r3, _080E5BB4 + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x11] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #0x11] + ldr r1, [r3] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080E5BB8 + adds r0, r2, #0 + movs r1, #0x24 + bl sub_080DCB38 + b _080E5BC0 + .align 2, 0 +_080E5BB4: .4byte gUnknown_2039BD4 +_080E5BB8: + adds r0, r2, #0 + movs r1, #0x3b + bl sub_080DCB38 +_080E5BC0: + pop {r0} + bx r0 + thumb_func_end sub_080E5B74 + + thumb_func_start sub_080E5BC4 +sub_080E5BC4: @ 0x080E5BC4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _080E5C4C + ldr r2, [r0] + ldr r1, [r2] + ldrb r1, [r1, #1] + mov ip, r0 + cmp r1, #4 + bne _080E5BD8 + b _080E5CF4 +_080E5BD8: + movs r6, #0 + adds r4, r2, #0 +_080E5BDC: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + mov r0, sp + adds r3, r0, r1 + ldr r2, [r4, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x19] + strb r0, [r3] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _080E5BDC + mov r1, ip + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + mov r2, sp + adds r1, r2, r0 + movs r0, #0xff + strb r0, [r1] + movs r6, #0 + mov r3, ip + ldr r7, [r3] +_080E5C14: + movs r5, #0 +_080E5C16: + lsls r0, r5, #0x18 + asrs r2, r0, #0x18 + ldr r0, [r7, #8] + ldrb r0, [r0, #0x11] + cmp r2, r0 + beq _080E5C50 + lsls r0, r6, #0x18 + asrs r3, r0, #0x18 + mov r0, sp + adds r4, r0, r2 + ldrb r1, [r4] + cmp r3, r1 + bne _080E5C50 + ldr r0, [r7, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1, #0x19] + cmp r0, r1 + bne _080E5C50 + adds r0, r3, #1 + strb r0, [r4] + b _080E5C60 + .align 2, 0 +_080E5C4C: .4byte gUnknown_2039BD4 +_080E5C50: + lsls r0, r5, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r5, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _080E5C16 +_080E5C60: + cmp r5, #4 + beq _080E5C74 + lsls r0, r6, #0x18 + movs r3, #0x80 + lsls r3, r3, #0x11 + adds r0, r0, r3 + lsrs r6, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _080E5C14 +_080E5C74: + mov r4, ip + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + mov r3, sp + adds r2, r3, r0 + movs r0, #0 + strb r0, [r2] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #0x10] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0, #0x10] + movs r6, #0 + mov r3, ip +_080E5CA2: + ldr r0, [r3] + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + mov r4, sp + adds r2, r4, r1 + ldrb r2, [r2] + strb r2, [r0, #0x19] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _080E5CA2 + mov r0, ip + ldr r1, [r0] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #0x11] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x11] + mov r1, ip + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x25 + bl sub_080DCB38 +_080E5CF4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E5BC4 + + thumb_func_start sub_080E5CFC +sub_080E5CFC: @ 0x080E5CFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r0, _080E5D8C + ldr r2, [r0] + ldr r1, [r2] + ldrb r1, [r1, #1] + mov ip, r0 + cmp r1, #4 + bne _080E5D14 + b _080E5E34 +_080E5D14: + movs r6, #0 + adds r4, r2, #0 +_080E5D18: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + mov r0, sp + adds r3, r0, r1 + ldr r2, [r4, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x19] + strb r0, [r3] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _080E5D18 + mov r1, ip + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + mov r2, sp + adds r1, r2, r0 + movs r0, #0xff + strb r0, [r1] + movs r6, #3 + mov r3, ip + ldr r7, [r3] + movs r4, #1 + rsbs r4, r4, #0 + mov r8, r4 +_080E5D56: + movs r5, #0 +_080E5D58: + lsls r0, r5, #0x18 + asrs r2, r0, #0x18 + ldr r0, [r7, #8] + ldrb r0, [r0, #0x11] + cmp r2, r0 + beq _080E5D90 + lsls r0, r6, #0x18 + asrs r3, r0, #0x18 + mov r0, sp + adds r4, r0, r2 + ldrb r1, [r4] + cmp r3, r1 + bne _080E5D90 + ldr r0, [r7, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1, #0x19] + cmp r0, r1 + bne _080E5D90 + subs r0, r3, #1 + strb r0, [r4] + b _080E5DA0 + .align 2, 0 +_080E5D8C: .4byte gUnknown_2039BD4 +_080E5D90: + lsls r0, r5, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r5, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _080E5D58 +_080E5DA0: + cmp r5, #4 + beq _080E5DB4 + lsls r0, r6, #0x18 + movs r3, #0xff + lsls r3, r3, #0x18 + adds r0, r0, r3 + lsrs r6, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r8 + bgt _080E5D56 +_080E5DB4: + mov r4, ip + ldr r1, [r4] + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + mov r3, sp + adds r2, r3, r0 + movs r0, #3 + strb r0, [r2] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #0x10] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0, #0x10] + movs r6, #0 + mov r3, ip +_080E5DE2: + ldr r0, [r3] + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + mov r4, sp + adds r2, r4, r1 + ldrb r2, [r2] + strb r2, [r0, #0x19] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _080E5DE2 + mov r0, ip + ldr r1, [r0] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #0x11] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #0x11] + mov r1, ip + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x26 + bl sub_080DCB38 +_080E5E34: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E5CFC + + thumb_func_start sub_080E5E40 +sub_080E5E40: @ 0x080E5E40 + bx lr + .align 2, 0 + thumb_func_end sub_080E5E40 + + thumb_func_start sub_080E5E44 +sub_080E5E44: @ 0x080E5E44 + push {r4, r5, r6, r7, lr} + sub sp, #8 + ldr r0, _080E5EC0 + ldr r1, [r0] + ldr r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #4 + beq _080E5F48 + movs r6, #0 + add r5, sp, #4 + adds r4, r1, #0 + adds r7, r5, #0 +_080E5E5C: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + mov r0, sp + adds r3, r0, r1 + ldr r2, [r4, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x19] + strb r0, [r3] + adds r0, r7, r1 + strb r6, [r0] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #3 + ble _080E5E5C + movs r6, #0 + adds r7, r5, #0 +_080E5E86: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r6, #0x18 + asrs r2, r2, #0x18 + movs r1, #4 + subs r1, r1, r2 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0 +_080E5EA0: + lsls r0, r1, #0x18 + asrs r2, r0, #0x18 + adds r3, r7, r2 + ldrb r1, [r3] + adds r5, r0, #0 + cmp r1, #0xff + beq _080E5ECA + cmp r4, #0 + bne _080E5EC4 + mov r1, sp + adds r0, r1, r2 + strb r6, [r0] + movs r0, #0xff + strb r0, [r3] + b _080E5ED8 + .align 2, 0 +_080E5EC0: .4byte gUnknown_2039BD4 +_080E5EC4: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080E5ECA: + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r5, r1 + lsrs r1, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _080E5EA0 +_080E5ED8: + lsls r0, r6, #0x18 + movs r6, #0x80 + lsls r6, r6, #0x11 + adds r0, r0, r6 + lsrs r6, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _080E5E86 + movs r6, #0 + ldr r5, _080E5F50 + adds r4, r5, #0 +_080E5EEE: + ldr r0, [r4] + lsls r3, r6, #0x18 + asrs r3, r3, #0x18 + ldr r1, [r0, #4] + lsls r2, r3, #3 + subs r2, r2, r3 + lsls r2, r2, #2 + adds r1, r2, r1 + mov r6, sp + adds r0, r6, r3 + ldrb r0, [r0] + strb r0, [r1, #0x19] + ldr r0, [r4] + ldr r0, [r0, #4] + adds r2, r2, r0 + ldrb r1, [r2, #0x10] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + asrs r3, r3, #0x18 + cmp r3, #3 + ble _080E5EEE + ldr r1, [r5] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #0x11] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #0x11] + ldr r0, [r5] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x27 + bl sub_080DCB38 +_080E5F48: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E5F50: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5E44 + + thumb_func_start sub_080E5F54 +sub_080E5F54: @ 0x080E5F54 + push {lr} + ldr r3, _080E5F8C + ldr r0, _080E5F90 + ldr r1, [r0] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrh r0, [r2, #6] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + ldr r1, _080E5F94 + lsrs r0, r0, #0x1d + ldrh r1, [r1] + cmp r0, r1 + beq _080E5F86 + ldrb r0, [r2, #0x11] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #0x11] +_080E5F86: + pop {r0} + bx r0 + .align 2, 0 +_080E5F8C: .4byte gUnknown_8565FCC +_080E5F90: .4byte gUnknown_2039BD4 +_080E5F94: .4byte gUnknown_2039BCC + thumb_func_end sub_080E5F54 + + thumb_func_start sub_080E5F98 +sub_080E5F98: @ 0x080E5F98 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + mov r8, r0 + movs r4, #0 + ldr r5, _080E5FE0 + movs r6, #0 +_080E5FA8: + ldr r3, [r5] + ldr r2, [r3, #8] + ldrb r0, [r2, #0x11] + adds r0, r2, r0 + adds r1, r2, r4 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E600A + ldr r0, [r3, #4] + adds r1, r6, r0 + movs r7, #2 + ldrsh r0, [r1, r7] + cmp r0, #0 + ble _080E5FE4 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r2, #4] + ldr r0, [r3, #8] + movs r1, #4 + ldrsh r0, [r0, r1] + bl sub_080E6390 + ldr r1, [r5] + ldr r1, [r1, #8] + strh r0, [r1, #4] + b _080E5FE8 + .align 2, 0 +_080E5FE0: .4byte gUnknown_2039BD4 +_080E5FE4: + movs r0, #0xa + strh r0, [r2, #4] +_080E5FE8: + ldr r0, [r5] + ldr r0, [r0, #8] + strb r4, [r0, #8] + ldr r0, [r5] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_080E6208 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E600A + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_080E600A: + adds r6, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080E5FA8 + mov r7, r8 + cmp r7, #0 + bne _080E6026 + ldr r0, _080E6040 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E6026: + ldr r0, _080E6040 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x30 + bl sub_080DCB38 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E6040: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E5F98 + + thumb_func_start sub_080E6044 +sub_080E6044: @ 0x080E6044 + push {r4, lr} + ldr r0, _080E6064 + ldr r1, [r0] + ldr r0, [r1] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080E6068 + movs r4, #0xa + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1a + bl sub_080DCB38 + b _080E60AA + .align 2, 0 +_080E6064: .4byte gUnknown_2039BD4 +_080E6068: + cmp r0, #1 + bne _080E607A + movs r4, #0x14 + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1b + bl sub_080DCB38 + b _080E60AA +_080E607A: + cmp r0, #2 + bne _080E608C + movs r4, #0x1e + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1c + bl sub_080DCB38 + b _080E60AA +_080E608C: + cmp r0, #3 + bne _080E609E + movs r4, #0x32 + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1d + bl sub_080DCB38 + b _080E60AA +_080E609E: + movs r4, #0x3c + ldr r0, [r1, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x1e + bl sub_080DCB38 +_080E60AA: + ldr r0, _080E60C4 + ldr r1, [r0] + ldr r0, [r1, #8] + ldrb r2, [r0, #0x11] + ldr r1, [r1, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r4, [r0, #2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E60C4: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E6044 + + thumb_func_start sub_080E60C8 +sub_080E60C8: @ 0x080E60C8 + push {r4, lr} + ldr r4, _080E610C + ldr r0, [r4] + ldr r2, [r0, #0x10] + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080E6106 + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldr r0, [r4] + ldr r3, [r0, #0x10] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3, #1] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x3d + bl sub_080DCB38 +_080E6106: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E610C: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E60C8 + + thumb_func_start sub_080E6110 +sub_080E6110: @ 0x080E6110 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r7, #0 + movs r4, #0 + ldr r6, _080E6154 + ldr r0, _080E6158 + mov sb, r0 + movs r5, #0 +_080E612A: + ldr r3, [r6] + ldr r2, [r3, #8] + ldrb r0, [r2, #0x11] + adds r0, r2, r0 + adds r1, r2, r4 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _080E617A + ldr r0, [r3, #4] + adds r0, r5, r0 + ldrh r0, [r0, #6] + lsls r0, r0, #3 + add r0, sb + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r8, r0 + bne _080E615C + movs r0, #0x28 + b _080E615E + .align 2, 0 +_080E6154: .4byte gUnknown_2039BD4 +_080E6158: .4byte gUnknown_8565FCC +_080E615C: + movs r0, #0xa +_080E615E: + strh r0, [r2, #4] + ldr r0, [r6] + ldr r0, [r0, #8] + strb r4, [r0, #8] + ldr r0, [r6] + ldr r1, [r0, #8] + movs r0, #0xff + strb r0, [r1, #9] + bl sub_080E6208 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E617A + adds r7, #1 +_080E617A: + adds r5, #0x1c + adds r4, #1 + cmp r4, #3 + ble _080E612A + cmp r7, #0 + bne _080E6194 + ldr r0, _080E61A0 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0x11] + movs r1, #0x36 + bl sub_080DCB54 +_080E6194: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E61A0: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E6110 + + thumb_func_start sub_080E61A4 +sub_080E61A4: @ 0x080E61A4 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080E61D4 + ldr r0, [r2] + ldr r0, [r0, #8] + adds r0, #0xd + adds r0, r0, r3 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + ldr r1, [r0, #4] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080E61D8 + adds r0, r3, #0 + movs r1, #0x2d + b _080E61FE + .align 2, 0 +_080E61D4: .4byte gUnknown_2039BD4 +_080E61D8: + ldrb r0, [r2, #0x12] + cmp r0, #0 + bne _080E61F6 + ldrb r1, [r2, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E6202 + ldrb r1, [r2, #0xc] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + bne _080E6202 + movs r0, #1 + b _080E6204 +_080E61F6: + subs r0, #1 + strb r0, [r2, #0x12] + adds r0, r3, #0 + movs r1, #0x2c +_080E61FE: + bl sub_080DCB38 +_080E6202: + movs r0, #0 +_080E6204: + pop {r1} + bx r1 + thumb_func_end sub_080E61A4 + + thumb_func_start sub_080E6208 +sub_080E6208: @ 0x080E6208 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r0, sp + movs r1, #0 + movs r2, #8 + bl memset + movs r7, #0 + ldr r4, _080E628C + ldr r0, [r4] + ldr r0, [r0, #8] + ldrb r0, [r0, #8] + cmp r0, #0xff + beq _080E62EC + mov r8, r4 +_080E622A: + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #8] + adds r0, #8 + adds r0, r0, r7 + ldrb r5, [r0] + adds r6, r5, #0 + adds r0, r5, #0 + bl sub_080E61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E62DA + ldr r2, [r4] + ldr r1, [r2, #8] + ldrh r0, [r1, #4] + strh r0, [r1, #6] + ldr r1, [r2, #4] + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r4, r0, #2 + adds r1, r4, r1 + ldrb r1, [r1, #0x10] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080E626A + ldr r1, [r2, #8] + movs r2, #6 + ldrsh r0, [r1, r2] + lsls r0, r0, #1 + strh r0, [r1, #6] +_080E626A: + mov r0, r8 + ldr r3, [r0] + ldr r0, [r3, #4] + adds r1, r4, r0 + ldrb r0, [r1, #0x10] + movs r4, #1 + ands r4, r0 + cmp r4, #0 + beq _080E6290 + ldr r1, [r3, #8] + movs r0, #0xa + strh r0, [r1, #6] + adds r0, r5, #0 + movs r1, #0x2f + bl sub_080DCB38 + b _080E62DA + .align 2, 0 +_080E628C: .4byte gUnknown_2039BD4 +_080E6290: + ldr r2, [r3, #8] + ldrb r1, [r1, #0xf] + ldrh r0, [r2, #6] + subs r0, r0, r1 + strh r0, [r2, #6] + ldr r2, [r3, #8] + ldrh r1, [r2, #6] + movs r3, #6 + ldrsh r0, [r2, r3] + cmp r0, #0 + bgt _080E62B2 + strh r4, [r2, #6] + adds r0, r5, #0 + movs r1, #0x2e + bl sub_080DCB38 + b _080E62DA +_080E62B2: + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_080E6318 + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #8] + ldrb r1, [r0, #6] + adds r0, r6, #0 + bl sub_080DCB70 + lsls r0, r6, #1 + mov r2, sp + adds r1, r2, r0 + mov r3, r8 + ldr r0, [r3] + ldr r0, [r0, #8] + ldrh r0, [r0, #6] + strh r0, [r1] +_080E62DA: + adds r7, #1 + ldr r4, _080E62FC + ldr r0, [r4] + ldr r0, [r0, #8] + adds r0, #8 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0xff + bne _080E622A +_080E62EC: + movs r7, #0 + mov r1, sp +_080E62F0: + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _080E6300 + movs r0, #1 + b _080E630A + .align 2, 0 +_080E62FC: .4byte gUnknown_2039BD4 +_080E6300: + adds r1, #2 + adds r7, #1 + cmp r7, #3 + ble _080E62F0 + movs r0, #0 +_080E630A: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E6208 + + thumb_func_start sub_080E6318 +sub_080E6318: @ 0x080E6318 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080E6348 + ldr r4, [r2] + ldr r3, [r4, #4] + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + adds r3, r2, r3 + ldrh r0, [r3, #2] + subs r0, r0, r1 + strh r0, [r3, #2] + ldr r0, [r4, #4] + adds r2, r2, r0 + ldrb r0, [r2, #0xe] + adds r1, r1, r0 + strb r1, [r2, #0xe] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E6348: .4byte gUnknown_2039BD4 + thumb_func_end sub_080E6318 + + thumb_func_start sub_080E634C +sub_080E634C: @ 0x080E634C + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + cmp r4, #0 + bge _080E635C + rsbs r0, r4, #0 +_080E635C: + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, #0 + bge _080E637A + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + beq _080E6384 + adds r0, r4, #0 + subs r0, #0xa + adds r0, r1, r0 + b _080E6380 +_080E637A: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, r4, r0 +_080E6380: + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080E6384: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E634C + + thumb_func_start sub_080E6390 +sub_080E6390: @ 0x080E6390 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + cmp r4, #0 + bge _080E63A0 + rsbs r0, r4, #0 +_080E63A0: + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + beq _080E63B8 + adds r0, r4, #0 + adds r0, #0xa + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080E63B8: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E6390 + + thumb_func_start sub_080E63C4 +sub_080E63C4: @ 0x080E63C4 + push {lr} + ldr r0, _080E63D0 + bl sub_080B2F30 + pop {r0} + bx r0 + .align 2, 0 +_080E63D0: .4byte sub_080E6934 + thumb_func_end sub_080E63C4 + + thumb_func_start sub_080E63D4 +sub_080E63D4: @ 0x080E63D4 + push {r4, lr} + ldr r2, _080E642C + ldr r0, _080E6430 + ldr r1, [r0] + ldr r3, _080E6434 + adds r0, r1, r3 + str r0, [r2] + ldr r2, _080E6438 + ldr r4, _080E643C + adds r0, r1, r4 + str r0, [r2] + ldr r2, _080E6440 + ldr r3, _080E6444 + adds r0, r1, r3 + str r0, [r2] + ldr r2, _080E6448 + ldr r4, _080E644C + adds r0, r1, r4 + str r0, [r2] + ldr r2, _080E6450 + ldr r3, _080E6454 + adds r0, r1, r3 + str r0, [r2] + ldr r2, _080E6458 + ldr r0, _080E645C + str r0, [r2] + ldr r2, _080E6460 + ldr r0, _080E6464 + ldr r0, [r0] + ldr r4, _080E6468 + adds r3, r0, r4 + str r3, [r2] + ldr r2, _080E646C + ldr r4, _080E6470 + adds r1, r1, r4 + str r1, [r2] + ldr r1, _080E6474 + adds r0, #0xdc + str r0, [r1] + ldr r0, _080E6478 + str r3, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E642C: .4byte gUnknown_3001134 +_080E6430: .4byte gUnknown_3005AEC +_080E6434: .4byte 0x00001A9C +_080E6438: .4byte gUnknown_3001138 +_080E643C: .4byte 0x000027CC +_080E6440: .4byte gUnknown_300113C +_080E6444: .4byte 0x00002B50 +_080E6448: .4byte gUnknown_3001140 +_080E644C: .4byte 0x00002E28 +_080E6450: .4byte gUnknown_3001144 +_080E6454: .4byte 0x00002E68 +_080E6458: .4byte gUnknown_3001148 +_080E645C: .4byte gUnknown_2039C3C +_080E6460: .4byte gUnknown_300114C +_080E6464: .4byte gUnknown_3005AF0 +_080E6468: .4byte 0x0000064C +_080E646C: .4byte gUnknown_3001150 +_080E6470: .4byte 0x00003B58 +_080E6474: .4byte gUnknown_3001154 +_080E6478: .4byte gUnknown_3001158 + thumb_func_end sub_080E63D4 + + thumb_func_start sub_080E647C +sub_080E647C: @ 0x080E647C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080E6500 + ldr r1, [r0] + movs r4, #0xc8 + lsls r4, r4, #4 + adds r0, r5, #0 + adds r2, r4, #0 + bl memcpy + adds r4, r5, r4 + ldr r0, _080E6504 + ldr r1, [r0] + movs r2, #0xe1 + lsls r2, r2, #2 + adds r0, r4, #0 + bl memcpy + adds r0, r4, #0 + bl sub_080F1CE4 + ldr r1, _080E6508 + adds r0, r5, r1 + ldr r1, _080E650C + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r2, _080E6510 + adds r0, r5, r2 + ldr r1, _080E6514 + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r1, _080E6518 + adds r0, r5, r1 + ldr r1, _080E651C + ldr r1, [r1] + movs r2, #0x28 + bl memcpy + ldr r2, _080E6520 + adds r0, r5, r2 + bl sub_080E81E0 + ldr r0, _080E6524 + ldr r0, [r0] + ldr r2, _080E6528 + adds r1, r5, r2 + bl sub_08165820 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E64F8 + bl sub_08153910 + ldr r2, _080E652C + adds r1, r5, r2 + strh r0, [r1] +_080E64F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E6500: .4byte gUnknown_3001134 +_080E6504: .4byte gUnknown_3001138 +_080E6508: .4byte 0x00001004 +_080E650C: .4byte gUnknown_300113C +_080E6510: .4byte 0x00001044 +_080E6514: .4byte gUnknown_3001140 +_080E6518: .4byte 0x00001084 +_080E651C: .4byte gUnknown_3001144 +_080E6520: .4byte 0x000010AC +_080E6524: .4byte gUnknown_300114C +_080E6528: .4byte 0x00001124 +_080E652C: .4byte 0x000011C8 + thumb_func_end sub_080E647C + + thumb_func_start sub_080E6530 +sub_080E6530: @ 0x080E6530 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080E65D4 + ldr r1, [r0] + movs r4, #0xc8 + lsls r4, r4, #4 + adds r0, r5, #0 + adds r2, r4, #0 + bl memcpy + adds r0, r5, #0 + bl sub_080EBD2C + adds r4, r5, r4 + ldr r0, _080E65D8 + ldr r1, [r0] + movs r2, #0xe1 + lsls r2, r2, #2 + adds r0, r4, #0 + bl memcpy + adds r0, r4, #0 + movs r1, #2 + bl sub_080F1A40 + ldr r1, _080E65DC + adds r0, r5, r1 + ldr r1, _080E65E0 + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r2, _080E65E4 + adds r4, r5, r2 + ldr r0, _080E65E8 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x40 + bl memcpy + adds r0, r4, #0 + bl sub_08120E2C + ldr r1, _080E65EC + adds r0, r5, r1 + ldr r1, _080E65F0 + ldr r1, [r1] + movs r2, #0x28 + bl memcpy + ldr r2, _080E65F4 + adds r4, r5, r2 + adds r0, r4, #0 + bl sub_080E81E0 + adds r0, r4, #0 + bl sub_080E823C + ldr r0, _080E65F8 + adds r4, r5, r0 + ldr r0, _080E65FC + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08165820 + adds r0, r4, #0 + bl sub_080E8290 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E65CC + bl sub_08153910 + ldr r2, _080E6600 + adds r1, r5, r2 + strh r0, [r1] +_080E65CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E65D4: .4byte gUnknown_3001134 +_080E65D8: .4byte gUnknown_3001138 +_080E65DC: .4byte 0x00001004 +_080E65E0: .4byte gUnknown_300113C +_080E65E4: .4byte 0x00001044 +_080E65E8: .4byte gUnknown_3001140 +_080E65EC: .4byte 0x00001084 +_080E65F0: .4byte gUnknown_3001144 +_080E65F4: .4byte 0x000010AC +_080E65F8: .4byte 0x00001124 +_080E65FC: .4byte gUnknown_300114C +_080E6600: .4byte 0x000011C8 + thumb_func_end sub_080E6530 + + thumb_func_start sub_080E6604 +sub_080E6604: @ 0x080E6604 + push {r4, r5, lr} + bl sub_080EA574 + bl sub_080F1694 + bl sub_080E63D4 + bl sub_08009C28 + cmp r0, #0 + beq _080E6640 + bl sub_08009BD4 + cmp r0, #0 + bne _080E6630 + ldr r0, _080E662C + ldr r0, [r0] + bl sub_080E647C + b _080E66EA + .align 2, 0 +_080E662C: .4byte gUnknown_2039CB8 +_080E6630: + ldr r0, _080E663C + ldr r0, [r0] + bl sub_080E6530 + b _080E66EA + .align 2, 0 +_080E663C: .4byte gUnknown_2039CB8 +_080E6640: + ldr r5, _080E66F0 + ldr r0, [r5] + ldr r1, _080E66F4 + ldr r1, [r1] + movs r4, #0xc8 + lsls r4, r4, #4 + adds r2, r4, #0 + bl memcpy + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _080E66F8 + ldr r1, [r1] + movs r2, #0xe1 + lsls r2, r2, #2 + bl memcpy + ldr r0, [r5] + ldr r1, _080E66FC + adds r0, r0, r1 + ldr r1, _080E6700 + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r0, [r5] + ldr r2, _080E6704 + adds r0, r0, r2 + ldr r1, _080E6708 + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r0, [r5] + ldr r1, _080E670C + adds r0, r0, r1 + ldr r1, _080E6710 + ldr r1, [r1] + movs r2, #0x40 + bl memcpy + ldr r0, [r5] + ldr r2, _080E6714 + adds r0, r0, r2 + ldr r1, _080E6718 + ldr r1, [r1] + movs r2, #0x28 + bl memcpy + ldr r0, [r5] + ldr r1, _080E671C + adds r0, r0, r1 + bl sub_080E81E0 + ldr r0, [r5] + ldr r2, _080E6720 + adds r0, r0, r2 + ldr r1, _080E6724 + ldr r1, [r1] + movs r2, #0xec + bl memcpy + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E66D2 + bl sub_08153910 + ldr r1, [r5] + ldr r2, _080E6728 + adds r1, r1, r2 + strh r0, [r1] +_080E66D2: + ldr r0, [r5] + ldr r1, _080E672C + adds r0, r0, r1 + ldr r1, _080E6730 + ldr r1, [r1] + bl sub_080E78F8 + ldr r0, [r5] + ldr r2, _080E6734 + adds r0, r0, r2 + bl sub_080E7A48 +_080E66EA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E66F0: .4byte gUnknown_2039CB8 +_080E66F4: .4byte gUnknown_3001134 +_080E66F8: .4byte gUnknown_3001138 +_080E66FC: .4byte 0x00001004 +_080E6700: .4byte gUnknown_300113C +_080E6704: .4byte 0x00001044 +_080E6708: .4byte gUnknown_3001140 +_080E670C: .4byte 0x00001214 +_080E6710: .4byte gUnknown_3001150 +_080E6714: .4byte 0x00001084 +_080E6718: .4byte gUnknown_3001144 +_080E671C: .4byte 0x000010AC +_080E6720: .4byte 0x00001124 +_080E6724: .4byte gUnknown_300114C +_080E6728: .4byte 0x00001210 +_080E672C: .4byte 0x00001254 +_080E6730: .4byte gUnknown_3001154 +_080E6734: .4byte 0x000012DC + thumb_func_end sub_080E6604 + + thumb_func_start sub_080E6738 +sub_080E6738: @ 0x080E6738 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + bl sub_08009C28 + cmp r0, #0 + beq _080E67EC + ldr r5, _080E67CC + ldr r0, [r5] + movs r1, #0xc8 + lsls r1, r1, #4 + mov r8, r1 + add r0, r8 + bl sub_080E72FC + ldr r0, [r5] + ldr r6, _080E67D0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080EBB64 + ldr r3, [r5] + ldr r1, _080E67D4 + adds r0, r3, r1 + add r3, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E7330 + ldr r0, [r5] + ldr r1, _080E67D8 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E711C + ldr r0, [r5] + add r0, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080F0CB4 + ldr r0, [r5] + ldr r1, _080E67DC + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080F1758 + ldr r0, [r5] + ldr r1, _080E67E0 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E709C + ldr r0, [r5] + ldr r1, _080E67E4 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08122888 + ldr r0, [r5] + ldr r1, _080E67E8 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_080E7750 + b _080E6896 + .align 2, 0 +_080E67CC: .4byte gUnknown_2039CB4 +_080E67D0: .4byte 0x00001230 +_080E67D4: .4byte 0x000010AC +_080E67D8: .4byte 0x00001124 +_080E67DC: .4byte 0x00001004 +_080E67E0: .4byte 0x00001044 +_080E67E4: .4byte 0x00001084 +_080E67E8: .4byte 0x000011C8 +_080E67EC: + ldr r5, _080E68A0 + ldr r0, [r5] + movs r1, #0xc8 + lsls r1, r1, #4 + mov r8, r1 + add r0, r8 + bl sub_080E72FC + ldr r0, [r5] + ldr r6, _080E68A4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080EBB64 + ldr r0, [r5] + add r0, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080F0CB4 + ldr r0, [r5] + ldr r1, _080E68A8 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080F1758 + ldr r0, [r5] + ldr r1, _080E68AC + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E709C + ldr r0, [r5] + ldr r1, _080E68B0 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08122888 + ldr r3, [r5] + ldr r1, _080E68B4 + adds r0, r3, r1 + add r3, r8 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E7330 + ldr r0, [r5] + ldr r1, _080E68B8 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E711C + ldr r0, [r5] + ldr r1, _080E68BC + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_080E7750 + ldr r0, [r5] + ldr r1, _080E68C0 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E71E4 + ldr r0, [r5] + ldr r1, _080E68C4 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E7C50 + ldr r0, [r5] + ldr r1, _080E68C8 + adds r0, r0, r1 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080E8194 +_080E6896: + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E68A0: .4byte gUnknown_2039CB4 +_080E68A4: .4byte 0x00001444 +_080E68A8: .4byte 0x00001004 +_080E68AC: .4byte 0x00001044 +_080E68B0: .4byte 0x00001084 +_080E68B4: .4byte 0x000010AC +_080E68B8: .4byte 0x00001124 +_080E68BC: .4byte 0x00001210 +_080E68C0: .4byte 0x00001214 +_080E68C4: .4byte 0x00001254 +_080E68C8: .4byte 0x000012DC + thumb_func_end sub_080E6738 + + thumb_func_start sub_080E68CC +sub_080E68CC: @ 0x080E68CC + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E68CC + + thumb_func_start sub_080E6900 +sub_080E6900: @ 0x080E6900 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E6930 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x32 + bne _080E6928 + movs r0, #0xe2 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #8] +_080E6928: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E6930: .4byte gUnknown_3005B60 + thumb_func_end sub_080E6900 + + thumb_func_start sub_080E6934 +sub_080E6934: @ 0x080E6934 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080E6958 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #5 + bls _080E694E + b _080E6AE2 +_080E694E: + lsls r0, r0, #2 + ldr r1, _080E695C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E6958: .4byte gUnknown_3005B68 +_080E695C: .4byte _080E6960 +_080E6960: @ jump table + .4byte _080E6978 @ case 0 + .4byte _080E69F0 @ case 1 + .4byte _080E6A24 @ case 2 + .4byte _080E6A44 @ case 3 + .4byte _080E6A84 @ case 4 + .4byte _080E6A98 @ case 5 +_080E6978: + ldr r4, _080E69D0 + ldr r0, _080E69D4 + bl sub_08000BC8 + str r0, [r4] + ldr r4, _080E69D8 + ldr r0, _080E69DC + bl sub_08000BC8 + str r0, [r4] + ldr r0, _080E69E0 + ldrb r0, [r0] + bl sub_080091C4 + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #1 + bl sub_0809CF88 + ldr r1, _080E69E4 + movs r0, #0 + strb r0, [r1] + bl sub_080E6604 + bl sub_080FB87C + movs r0, #1 + strh r0, [r5] + ldr r0, _080E69E8 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + ldr r0, _080E69EC + movs r1, #0x51 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1e] + b _080E6AE2 + .align 2, 0 +_080E69D0: .4byte gUnknown_2039CB8 +_080E69D4: .4byte 0x00001444 +_080E69D8: .4byte gUnknown_2039CB4 +_080E69DC: .4byte 0x00005110 +_080E69E0: .4byte gUnknown_2037282 +_080E69E4: .4byte gUnknown_3001130 +_080E69E8: .4byte sub_080E6AFC +_080E69EC: .4byte sub_080E6900 +_080E69F0: + ldr r2, _080E6A1C + movs r0, #0x14 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _080E6AE2 + movs r0, #2 + strh r0, [r5] + ldr r0, _080E6A20 + bl sub_0809D018 + bl sub_080FB8E4 + ldrb r0, [r5, #0x1e] + bl sub_080A8964 + b _080E6AE2 + .align 2, 0 +_080E6A1C: .4byte gUnknown_3005B60 +_080E6A20: .4byte 0x00000894 +_080E6A24: + ldr r0, _080E6A40 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + movs r0, #3 + strh r0, [r5] + movs r0, #0xe0 + bl sub_080A306C + b _080E6AE2 + .align 2, 0 +_080E6A40: .4byte sub_080E77E0 +_080E6A44: + ldr r2, _080E6A78 + movs r0, #0x14 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r4, [r0, #4] + cmp r4, #0 + bne _080E6AE2 + movs r0, #4 + strh r0, [r5] + ldr r0, _080E6A7C + ldrb r0, [r0] + cmp r0, #0 + bne _080E6A6E + bl sub_080B27FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] +_080E6A6E: + ldr r0, _080E6A80 + bl sub_080E68CC + strh r4, [r5, #0x10] + b _080E6AE2 + .align 2, 0 +_080E6A78: .4byte gUnknown_3005B60 +_080E6A7C: .4byte gUnknown_300319C +_080E6A80: .4byte gUnknown_8566CB1 +_080E6A84: + ldrh r0, [r5, #0x10] + adds r0, #1 + strh r0, [r5, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _080E6AE2 + movs r0, #5 + strh r0, [r5] + b _080E6AE2 +_080E6A98: + ldr r2, _080E6AE8 + movs r0, #0x14 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _080E6AE2 + ldr r0, _080E6AEC + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _080E6AF0 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_08086C00 + ldr r0, _080E6AF4 + ldrb r0, [r0] + cmp r0, #0 + beq _080E6AD0 + ldr r0, _080E6AF8 + movs r1, #0xa + bl sub_080A8878 +_080E6AD0: + movs r0, #0 + movs r1, #1 + bl sub_08197028 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 +_080E6AE2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E6AE8: .4byte gUnknown_3005B60 +_080E6AEC: .4byte gUnknown_2039CB4 +_080E6AF0: .4byte gUnknown_2039CB8 +_080E6AF4: .4byte gUnknown_300319C +_080E6AF8: .4byte sub_080AEBB0 + thumb_func_end sub_080E6934 + + thumb_func_start sub_080E6AFC +sub_080E6AFC: @ 0x080E6AFC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r6, _080E6B28 + adds r5, r0, r6 + movs r0, #8 + ldrsh r1, [r5, r0] + cmp r1, #0x64 + beq _080E6B78 + cmp r1, #0x64 + bgt _080E6B3A + cmp r1, #1 + bne _080E6B1E + b _080E6C3C +_080E6B1E: + cmp r1, #1 + bgt _080E6B2C + cmp r1, #0 + beq _080E6B5C + b _080E6D3E + .align 2, 0 +_080E6B28: .4byte gUnknown_3005B60 +_080E6B2C: + cmp r1, #2 + bne _080E6B32 + b _080E6C68 +_080E6B32: + cmp r1, #5 + bne _080E6B38 + b _080E6D28 +_080E6B38: + b _080E6D3E +_080E6B3A: + cmp r1, #0xc9 + beq _080E6BD0 + cmp r1, #0xc9 + bgt _080E6B48 + cmp r1, #0x65 + beq _080E6B90 + b _080E6D3E +_080E6B48: + ldr r0, _080E6B58 + cmp r1, r0 + beq _080E6C0A + adds r0, #0x63 + cmp r1, r0 + beq _080E6C22 + b _080E6D3E + .align 2, 0 +_080E6B58: .4byte 0x0000012D +_080E6B5C: + ldr r0, _080E6B74 + bl sub_080E68CC + movs r0, #0xe1 + lsls r0, r0, #3 + strh r0, [r5, #0x18] + movs r0, #0xc8 + lsls r0, r0, #1 + strh r0, [r5, #8] + bl sub_08009B44 + b _080E6D3E + .align 2, 0 +_080E6B74: .4byte gUnknown_8566CA4 +_080E6B78: + ldrh r0, [r5, #0x20] + adds r0, #1 + strh r0, [r5, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bgt _080E6B88 + b _080E6D3E +_080E6B88: + movs r0, #0 + strh r0, [r5, #0x20] + movs r0, #0x65 + b _080E6D3C +_080E6B90: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800A780 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E6BC2 + bl sub_0800A60C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _080E6BB2 + b _080E6D3E +_080E6BB2: + movs r0, #0x15 + bl sub_080A306C + movs r1, #0 + movs r0, #0xc9 + strh r0, [r5, #8] + strh r1, [r5, #0x20] + b _080E6D3E +_080E6BC2: + movs r0, #0x16 + bl sub_080A306C + ldr r0, _080E6BCC + b _080E6D3C + .align 2, 0 +_080E6BCC: .4byte 0x0000012D +_080E6BD0: + bl sub_0800A60C + adds r4, r0, #0 + bl sub_0800A770 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080E6BE4 + b _080E6D3E +_080E6BE4: + ldrh r4, [r5, #0x20] + adds r4, #1 + strh r4, [r5, #0x20] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + cmp r4, r1 + bgt _080E6C02 + b _080E6D3E +_080E6C02: + bl sub_0800A1E4 + movs r0, #1 + b _080E6D3C +_080E6C0A: + bl sub_0800A60C + adds r4, r0, #0 + bl sub_0800A770 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080E6C1E + b _080E6D3E +_080E6C1E: + movs r0, #1 + b _080E6D3C +_080E6C22: + ldrh r0, [r5, #0x20] + adds r0, #1 + strh r0, [r5, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bgt _080E6C32 + b _080E6D3E +_080E6C32: + movs r0, #1 + strh r0, [r5, #8] + movs r0, #0 + strh r0, [r5, #0x20] + b _080E6D3E +_080E6C3C: + ldr r0, _080E6C60 + ldrb r0, [r0] + cmp r0, #0 + bne _080E6C46 + b _080E6D3E +_080E6C46: + ldr r4, _080E6C64 + bl sub_080E6FE8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + movs r0, #5 + b _080E6D3C + .align 2, 0 +_080E6C60: .4byte gUnknown_30031C4 +_080E6C64: .4byte gUnknown_2021C40 +_080E6C68: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + strh r0, [r5, #0x14] + strh r1, [r5, #8] + bl sub_080E6FE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + ldr r0, _080E6CC4 + str r0, [r5] + bl sub_08009C28 + cmp r0, #0 + beq _080E6CDC + ldr r0, _080E6CC8 + ldr r0, [r0] + adds r1, r5, #0 + adds r1, #0xc + bl sub_080E6FE0 + ldr r0, _080E6CCC + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1c] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r0, r1, r6 + strh r4, [r0, #8] + ldr r0, _080E6CD0 + ldr r0, [r0] + adds r1, r6, r1 + adds r1, #0x12 + bl sub_080E6FE0 + ldr r1, _080E6CD4 + ldr r0, _080E6CD8 + str r0, [r1] + b _080E6D3E + .align 2, 0 +_080E6CC4: .4byte sub_080E6D44 +_080E6CC8: .4byte gUnknown_2039CB8 +_080E6CCC: .4byte sub_080E6E08 +_080E6CD0: .4byte gUnknown_2039CB4 +_080E6CD4: .4byte gUnknown_300115C +_080E6CD8: .4byte 0x00001230 +_080E6CDC: + ldr r0, _080E6D14 + ldr r0, [r0] + adds r1, r5, #0 + adds r1, #0xc + bl sub_080E6FE0 + ldr r0, _080E6D18 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1c] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r0, r1, r6 + strh r4, [r0, #8] + ldr r0, _080E6D1C + ldr r0, [r0] + adds r1, r6, r1 + adds r1, #0x12 + bl sub_080E6FE0 + ldr r1, _080E6D20 + ldr r0, _080E6D24 + str r0, [r1] + b _080E6D3E + .align 2, 0 +_080E6D14: .4byte gUnknown_2039CB8 +_080E6D18: .4byte sub_080E6E08 +_080E6D1C: .4byte gUnknown_2039CB4 +_080E6D20: .4byte gUnknown_300115C +_080E6D24: .4byte 0x00001444 +_080E6D28: + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _080E6D3E + movs r0, #0 + strh r0, [r5, #0x1c] + movs r0, #2 +_080E6D3C: + strh r0, [r5, #8] +_080E6D3E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080E6AFC + + thumb_func_start sub_080E6D44 +sub_080E6D44: @ 0x080E6D44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E6D68 + adds r5, r1, r0 + movs r2, #8 + ldrsh r1, [r5, r2] + adds r2, r0, #0 + cmp r1, #4 + bhi _080E6DFC + lsls r0, r1, #2 + ldr r1, _080E6D6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E6D68: .4byte gUnknown_3005B60 +_080E6D6C: .4byte _080E6D70 +_080E6D70: @ jump table + .4byte _080E6D84 @ case 0 + .4byte _080E6DA8 @ case 1 + .4byte _080E6DFC @ case 2 + .4byte _080E6DBA @ case 3 + .4byte _080E6DE6 @ case 4 +_080E6D84: + adds r0, r5, #0 + adds r0, #0xc + bl sub_080E6FD4 + adds r1, r0, #0 + movs r0, #0x10 + ldrsh r2, [r5, r0] + movs r0, #0xc8 + muls r0, r2, r0 + adds r1, r1, r0 + ldr r0, _080E6DA4 + movs r2, #0xc8 + bl memcpy + b _080E6DD4 + .align 2, 0 +_080E6DA4: .4byte gUnknown_202257C +_080E6DA8: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E6DD4 + movs r0, #1 + bl sub_0800A09C + b _080E6DD4 +_080E6DBA: + ldrh r0, [r5, #0x10] + adds r0, #1 + strh r0, [r5, #0x10] + movs r1, #0x10 + ldrsh r4, [r5, r1] + ldr r0, _080E6DDC + ldr r0, [r0] + movs r1, #0xc8 + bl __udivsi3 + adds r0, #1 + cmp r4, r0 + bne _080E6DE0 +_080E6DD4: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _080E6DFC + .align 2, 0 +_080E6DDC: .4byte gUnknown_300115C +_080E6DE0: + movs r0, #0 + strh r0, [r5, #8] + b _080E6DFC +_080E6DE6: + movs r1, #0x1c + ldrsh r0, [r5, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _080E6DFC + ldr r0, _080E6E04 + str r0, [r5] +_080E6DFC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E6E04: .4byte sub_080E6FAC + thumb_func_end sub_080E6D44 + + thumb_func_start sub_080E6E08 +sub_080E6E08: @ 0x080E6E08 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r0, r0, #2 + ldr r1, [sp] + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _080E6E4C + adds r0, r0, r1 + mov sl, r0 + bl sub_0800A114 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + bl sub_0800A59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [sp, #4] + cmp r3, r0 + bne _080E6F16 + movs r4, #0 + mov r8, r4 + b _080E6EF4 + .align 2, 0 +_080E6E4C: .4byte gUnknown_3005B60 +_080E6E50: + ldr r1, [sp, #4] + mov r0, r8 + asrs r1, r0 + movs r0, #1 + ands r1, r0 + movs r2, #1 + add r2, r8 + mov sb, r2 + cmp r1, #0 + beq _080E6EEC + mov r0, sl + adds r0, #0x12 + bl sub_080E6FD4 + mov r3, sb + lsls r4, r3, #1 + mov r5, sl + adds r5, #8 + adds r4, r5, r4 + movs r2, #0 + ldrsh r1, [r4, r2] + movs r7, #0xc8 + muls r1, r7, r1 + adds r0, r0, r1 + ldr r3, _080E6EB0 + ldr r1, [r3] + mov r2, r8 + muls r2, r1, r2 + adds r1, r2, #0 + adds r6, r0, r1 + mov r0, r8 + bl sub_080E6FF8 + adds r1, r0, #0 + movs r3, #0 + ldrsh r2, [r4, r3] + adds r0, r2, #1 + muls r0, r7, r0 + ldr r4, _080E6EB0 + ldr r3, [r4] + cmp r0, r3 + bls _080E6EB4 + muls r2, r7, r2 + subs r2, r3, r2 + adds r0, r6, #0 + bl memcpy + b _080E6EBC + .align 2, 0 +_080E6EB0: .4byte gUnknown_300115C +_080E6EB4: + adds r0, r6, #0 + movs r2, #0xc8 + bl memcpy +_080E6EBC: + mov r0, r8 + bl sub_0800A1B0 + mov r0, sb + lsls r1, r0, #1 + adds r1, r5, r1 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r2, #0 + ldrsh r4, [r1, r2] + ldr r3, _080E6F3C + ldr r0, [r3] + movs r1, #0xc8 + bl __udivsi3 + adds r0, #1 + cmp r4, r0 + bne _080E6EEC + ldr r0, [sp, #8] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] +_080E6EEC: + mov r4, sb + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_080E6EF4: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r8, r0 + blo _080E6E50 + ldr r2, _080E6F40 + mov r0, sl + movs r3, #8 + ldrsh r1, [r0, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] +_080E6F16: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, [sp, #8] + cmp r4, r0 + bne _080E6F2A + ldr r0, [sp] + bl sub_080A8964 +_080E6F2A: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E6F3C: .4byte gUnknown_300115C +_080E6F40: .4byte gUnknown_3005B60 + thumb_func_end sub_080E6E08 + + thumb_func_start sub_080E6F44 +sub_080E6F44: @ 0x080E6F44 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r2, _080E6F74 + adds r0, r0, r2 + movs r4, #0x1c + ldrsh r1, [r0, r4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _080E6F6C + adds r0, r3, #0 + bl sub_080A8964 +_080E6F6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E6F74: .4byte gUnknown_3005B60 + thumb_func_end sub_080E6F44 + + thumb_func_start sub_080E6F78 +sub_080E6F78: @ 0x080E6F78 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E6FA0 + adds r1, r1, r0 + ldr r0, _080E6FA4 + str r0, [r1] + ldr r0, _080E6FA8 + ldrb r0, [r0] + cmp r0, #1 + bne _080E6F9C + movs r2, #0x12 + ldrsh r0, [r1, r2] + bl sub_080E6738 +_080E6F9C: + pop {r0} + bx r0 + .align 2, 0 +_080E6FA0: .4byte gUnknown_3005B60 +_080E6FA4: .4byte sub_080E6F44 +_080E6FA8: .4byte gUnknown_3001130 + thumb_func_end sub_080E6F78 + + thumb_func_start sub_080E6FAC +sub_080E6FAC: @ 0x080E6FAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E6FC8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080E6FCC + str r0, [r1] + ldr r1, _080E6FD0 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_080E6FC8: .4byte gUnknown_3005B60 +_080E6FCC: .4byte sub_080E6F78 +_080E6FD0: .4byte gUnknown_3001130 + thumb_func_end sub_080E6FAC + + thumb_func_start sub_080E6FD4 +sub_080E6FD4: @ 0x080E6FD4 + adds r1, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #2] + lsls r1, r1, #0x10 + orrs r0, r1 + bx lr + thumb_func_end sub_080E6FD4 + + thumb_func_start sub_080E6FE0 +sub_080E6FE0: @ 0x080E6FE0 + strh r0, [r1] + lsrs r0, r0, #0x10 + strh r0, [r1, #2] + bx lr + thumb_func_end sub_080E6FE0 + + thumb_func_start sub_080E6FE8 +sub_080E6FE8: @ 0x080E6FE8 + push {lr} + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E6FE8 + + thumb_func_start sub_080E6FF8 +sub_080E6FF8: @ 0x080E6FF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldr r1, _080E7004 + adds r0, r0, r1 + bx lr + .align 2, 0 +_080E7004: .4byte gUnknown_202207C + thumb_func_end sub_080E6FF8 + + thumb_func_start sub_080E7008 +sub_080E7008: @ 0x080E7008 + push {r4, lr} + adds r4, r0, #0 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _080E7040 + cmp r0, #3 + bhi _080E7022 + cmp r0, #2 + beq _080E7028 + b _080E7090 +_080E7022: + cmp r0, #4 + beq _080E706C + b _080E7090 +_080E7028: + movs r3, #0 + ldr r2, _080E703C + adds r1, r4, #0 +_080E702E: + adds r0, r3, r2 + ldrb r0, [r0] + stm r1!, {r0} + adds r3, #1 + cmp r3, #1 + bls _080E702E + b _080E7090 + .align 2, 0 +_080E703C: .4byte gUnknown_8566CC7 +_080E7040: + movs r0, #0 + bl sub_08009E68 + adds r2, r0, #0 + movs r0, #1 + ands r2, r0 + movs r3, #0 + ldr r1, _080E7068 + lsls r0, r2, #1 + adds r0, r0, r2 + adds r1, r0, r1 + adds r2, r4, #0 +_080E7058: + ldrb r0, [r1] + stm r2!, {r0} + adds r1, #1 + adds r3, #1 + cmp r3, #2 + bls _080E7058 + b _080E7090 + .align 2, 0 +_080E7068: .4byte gUnknown_8566CC9 +_080E706C: + movs r0, #0 + bl sub_08009E68 + movs r1, #9 + bl __umodsi3 + adds r2, r0, #0 + movs r3, #0 + ldr r1, _080E7098 + lsls r0, r2, #2 + adds r1, r0, r1 + adds r2, r4, #0 +_080E7084: + ldrb r0, [r1] + stm r2!, {r0} + adds r1, #1 + adds r3, #1 + cmp r3, #3 + bls _080E7084 +_080E7090: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E7098: .4byte gUnknown_8566CCF + thumb_func_end sub_080E7008 + + thumb_func_start sub_080E709C +sub_080E709C: @ 0x080E709C + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r5, r0, #0 + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + mov r0, sp + bl sub_080E7008 + ldr r1, _080E70E4 + lsls r0, r6, #2 + add r0, sp + ldr r2, [r0] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080E70F8 + ldrh r0, [r1, #0x1a] + cmp r0, #1 + bne _080E70E8 + adds r0, r4, #0 + muls r0, r2, r0 + adds r0, r5, r0 + ldrh r3, [r1, #0x1a] + movs r1, #1 + movs r2, #2 + bl sub_08120E90 + b _080E70F8 + .align 2, 0 +_080E70E4: .4byte gUnknown_20226A0 +_080E70E8: + adds r0, r4, #0 + muls r0, r2, r0 + adds r0, r5, r0 + ldrh r3, [r1, #0x1a] + movs r1, #1 + adds r2, r3, #0 + bl sub_08120E90 +_080E70F8: + ldr r0, _080E7118 + ldr r0, [r0] + lsls r1, r6, #2 + add r1, sp + ldr r1, [r1] + muls r1, r4, r1 + adds r1, r5, r1 + movs r2, #0x40 + bl memcpy + bl sub_08120B50 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E7118: .4byte gUnknown_3001140 + thumb_func_end sub_080E709C + + thumb_func_start sub_080E711C +sub_080E711C: @ 0x080E711C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov r8, r0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + mov r0, sp + bl sub_080E7008 + bl sub_08009C28 + cmp r0, #0 + beq _080E71B4 + lsls r0, r5, #2 + mov r1, sp + adds r7, r1, r0 + ldr r0, [r7] + muls r0, r6, r0 + add r0, r8 + adds r4, r6, #0 + muls r4, r5, r4 + mov r1, r8 + adds r5, r1, r4 + adds r1, r5, #0 + bl sub_081656C8 + adds r6, r0, #0 + mov sb, r4 + cmp r6, #1 + bne _080E71CE + ldr r4, _080E7184 + ldr r0, [r7] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x1a] + cmp r0, #1 + bne _080E7188 + adds r0, r5, #4 + bl sub_08008F14 + cmp r0, #0 + bne _080E7192 + adds r1, r5, #0 + adds r1, #0xe4 + movs r0, #2 + strb r0, [r1] + b _080E71AC + .align 2, 0 +_080E7184: .4byte gUnknown_20226A0 +_080E7188: + adds r0, r5, #4 + bl sub_08008F14 + cmp r0, #0 + beq _080E719A +_080E7192: + adds r0, r5, #0 + adds r0, #0xe4 + strb r6, [r0] + b _080E71AC +_080E719A: + ldr r1, [r7] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x1a] + adds r0, r5, #0 + adds r0, #0xe4 + strb r1, [r0] +_080E71AC: + adds r0, r5, #0 + bl sub_08164E3C + b _080E71CE +_080E71B4: + adds r4, r6, #0 + muls r4, r5, r4 + mov r1, r8 + adds r0, r1, r4 + lsls r1, r5, #2 + add r1, sp + ldr r1, [r1] + muls r1, r6, r1 + add r1, r8 + movs r2, #0xec + bl memcpy + mov sb, r4 +_080E71CE: + mov r0, r8 + add r0, sb + bl sub_081627A4 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E711C + + thumb_func_start sub_080E71E4 +sub_080E71E4: @ 0x080E71E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + mov r8, r0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + mov r0, sp + bl sub_080E7008 + adds r0, r7, #0 + muls r0, r5, r0 + add r0, r8 + ldr r6, _080E722C + ldr r1, [r6] + movs r2, #0x40 + bl memcpy + bl sub_0818D6D8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E7230 + movs r0, #0x40 + bl sub_08000BC8 + adds r4, r0, #0 + cmp r4, #0 + beq _080E725A + ldr r1, [r6] + movs r2, #0x40 + bl memcpy + b _080E7232 + .align 2, 0 +_080E722C: .4byte gUnknown_3001150 +_080E7230: + movs r4, #0 +_080E7232: + ldr r0, _080E7268 + ldr r0, [r0] + lsls r1, r5, #2 + add r1, sp + ldr r1, [r1] + muls r1, r7, r1 + add r1, r8 + movs r2, #0x40 + bl memcpy + bl sub_0818D7A4 + cmp r4, #0 + beq _080E725A + adds r0, r4, #0 + bl sub_0818E1CC + adds r0, r4, #0 + bl sub_08000BF0 +_080E725A: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7268: .4byte gUnknown_3001150 + thumb_func_end sub_080E71E4 + + thumb_func_start sub_080E726C +sub_080E726C: @ 0x080E726C + ldrh r0, [r0, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + thumb_func_end sub_080E726C + + thumb_func_start sub_080E7274 +sub_080E7274: @ 0x080E7274 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0x38 + mov r8, r0 + mov sl, r1 + mov sb, r2 + adds r4, r3, #0 + ldr r5, [sp, #0x54] + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsrs r4, r4, #0x17 + add r4, sb + ldrb r0, [r4] + mov r6, sl + muls r6, r0, r6 + add r6, r8 + ldrb r0, [r4, #1] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #3 + adds r1, r6, r1 + mov r0, sp + movs r2, #0x38 + bl memcpy + lsls r5, r5, #1 + add r5, sb + ldrb r0, [r5] + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r8, r0 + ldrb r1, [r4, #1] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #3 + adds r6, r6, r0 + ldrb r0, [r5, #1] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #3 + add r1, r8 + adds r0, r6, #0 + movs r2, #0x38 + bl memcpy + ldrb r1, [r5, #1] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #3 + add r8, r0 + mov r0, r8 + mov r1, sp + movs r2, #0x38 + bl memcpy + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080E7274 + + thumb_func_start sub_080E72FC +sub_080E72FC: @ 0x080E72FC + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + movs r1, #0 + ldr r4, _080E7320 +_080E7306: + adds r0, r3, r1 + ldrb r0, [r0] + adds r0, r2, r0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, #1 + cmp r1, #0xff + ble _080E7306 + strb r2, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E7320: .4byte gUnknown_3001160 + thumb_func_end sub_080E72FC + + thumb_func_start sub_080E7324 +sub_080E7324: @ 0x080E7324 + ldr r0, _080E732C + ldrb r0, [r0] + bx lr + .align 2, 0 +_080E732C: .4byte gUnknown_3001160 + thumb_func_end sub_080E7324 + + thumb_func_start sub_080E7330 +sub_080E7330: @ 0x080E7330 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x50 + str r0, [sp, #0x2c] + str r1, [sp, #0x30] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x38] + ldr r0, _080E73BC + ldrh r0, [r0, #4] + bl sub_0806F094 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + mov r8, r0 + mov r1, sp + adds r1, #0x1c + str r1, [sp, #0x48] + mov r2, sp + adds r2, #0x1d + str r2, [sp, #0x4c] + mov r3, sp + adds r3, #0xc + str r3, [sp, #0x44] + movs r7, #0xff + add r3, sp, #8 + movs r2, #0 + adds r6, r1, #0 + ldr r5, [sp, #0x4c] +_080E7380: + mov r1, sp + add r1, r8 + adds r1, #4 + ldrb r0, [r1] + orrs r0, r7 + strb r0, [r1] + mov r1, r8 + adds r0, r3, r1 + strb r2, [r0] + lsls r1, r1, #1 + adds r0, r6, r1 + strb r2, [r0] + adds r1, r5, r1 + strb r2, [r1] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #3 + bls _080E7380 + movs r2, #0 + mov r8, r2 + lsls r4, r4, #0x10 + str r4, [sp, #0x3c] + ldr r0, [sp, #0x30] + mov r3, sb + muls r3, r0, r3 + str r3, [sp, #0x40] + b _080E74EC + .align 2, 0 +_080E73BC: .4byte gUnknown_20226A0 +_080E73C0: + ldr r1, [sp, #0x30] + mov r0, r8 + muls r0, r1, r0 + ldr r2, [sp, #0x2c] + adds r7, r2, r0 + ldr r1, _080E7408 + mov r3, r8 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrh r0, [r1, #0x1a] + cmp r0, #1 + bne _080E7458 + movs r6, #0 + movs r0, #0x10 + rsbs r0, r0, #0 + mov sb, r0 +_080E73E4: + lsls r4, r6, #3 + subs r0, r4, r6 + lsls r0, r0, #3 + adds r5, r7, r0 + adds r0, r5, #0 + adds r0, #0x24 + bl sub_08008F14 + cmp r0, #0 + beq _080E740C + adds r0, r5, #0 + adds r0, #0x37 + ldrb r1, [r0] + mov r2, sb + ands r1, r2 + movs r2, #1 + b _080E7418 + .align 2, 0 +_080E7408: .4byte gUnknown_20226A0 +_080E740C: + adds r0, r5, #0 + adds r0, #0x37 + ldrb r1, [r0] + mov r3, sb + ands r1, r3 + movs r2, #2 +_080E7418: + orrs r1, r2 + strb r1, [r0] + subs r0, r4, r6 + lsls r0, r0, #3 + adds r4, r7, r0 + adds r0, r4, #0 + adds r0, #0x2c + bl sub_08008F14 + cmp r0, #0 + beq _080E743C + adds r2, r4, #0 + adds r2, #0x37 + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + movs r1, #0x10 + b _080E7448 +_080E743C: + adds r2, r4, #0 + adds r2, #0x37 + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + movs r1, #0x20 +_080E7448: + orrs r0, r1 + strb r0, [r2] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #1 + bls _080E73E4 + b _080E74E2 +_080E7458: + movs r6, #0 + mov sb, r1 + movs r0, #0xf + mov sl, r0 +_080E7460: + lsls r4, r6, #3 + subs r0, r4, r6 + lsls r0, r0, #3 + adds r5, r7, r0 + adds r0, r5, #0 + adds r0, #0x24 + bl sub_08008F14 + cmp r0, #0 + beq _080E7488 + adds r0, r5, #0 + adds r0, #0x37 + ldrb r1, [r0] + movs r2, #0x10 + rsbs r2, r2, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _080E74A0 +_080E7488: + mov r3, sb + ldrb r0, [r3, #0x1a] + adds r2, r5, #0 + adds r2, #0x37 + mov r1, sl + ands r1, r0 + ldrb r0, [r2] + movs r3, #0x10 + rsbs r3, r3, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_080E74A0: + subs r0, r4, r6 + lsls r0, r0, #3 + adds r4, r7, r0 + adds r0, r4, #0 + adds r0, #0x2c + bl sub_08008F14 + cmp r0, #0 + beq _080E74C4 + adds r2, r4, #0 + adds r2, #0x37 + ldrb r1, [r2] + mov r0, sl + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + b _080E74D8 +_080E74C4: + mov r0, sb + ldrb r1, [r0, #0x1a] + adds r3, r4, #0 + adds r3, #0x37 + lsls r1, r1, #4 + ldrb r2, [r3] + mov r0, sl + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080E74D8: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #1 + bls _080E7460 +_080E74E2: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_080E74EC: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r8, r0 + bhs _080E74FA + b _080E73C0 +_080E74FA: + movs r1, #0 + str r1, [sp, #0x34] + mov r8, r1 + ldr r2, [sp, #0x3c] + lsrs r0, r2, #0x10 + cmp r1, r0 + bhs _080E7556 + adds r5, r0, #0 +_080E750A: + ldr r3, [sp, #0x30] + mov r0, r8 + muls r0, r3, r0 + ldr r1, [sp, #0x2c] + adds r7, r1, r0 + ldr r0, [r7, #0x70] + cmp r0, #0 + beq _080E7548 + movs r6, #0 + cmp r6, r0 + bhs _080E7548 + adds r3, r7, #0 + adds r3, #0x74 + ldr r2, [sp, #0x48] + mov r0, r8 + lsls r1, r0, #1 + movs r4, #1 +_080E752C: + lsls r0, r6, #1 + adds r0, r3, r0 + ldrh r0, [r0] + cmp r0, #0 + bne _080E753C + adds r0, r6, r1 + adds r0, r2, r0 + strb r4, [r0] +_080E753C: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r7, #0x70] + cmp r6, r0 + blo _080E752C +_080E7548: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r8, r5 + blo _080E750A +_080E7556: + movs r6, #0 + mov r8, r6 + ldr r1, [sp, #0x3c] + cmp r1, #0 + beq _080E764A + add r2, sp, #0x24 + mov sl, r2 + movs r3, #0x25 + add r3, sp + mov sb, r3 +_080E756A: + ldr r1, [sp, #0x30] + mov r0, r8 + muls r0, r1, r0 + ldr r2, [sp, #0x2c] + adds r7, r2, r0 + mov r3, r8 + lsls r1, r3, #1 + ldr r2, [sp, #0x48] + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _080E758C + ldr r3, [sp, #0x4c] + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080E7596 +_080E758C: + ldr r0, [sp, #0x34] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x34] +_080E7596: + ldr r2, [sp, #0x48] + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080E75BA + ldr r3, [sp, #0x4c] + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, #0 + bne _080E75BA +_080E75AA: + lsls r1, r6, #1 + mov r3, sl + adds r0, r3, r1 + mov r3, r8 + strb r3, [r0] + add r1, sb + strb r2, [r1] + b _080E7634 +_080E75BA: + ldr r2, [sp, #0x48] + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080E75CE + ldr r3, [sp, #0x4c] + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, #1 + beq _080E75AA +_080E75CE: + ldr r2, [sp, #0x48] + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080E763A + ldr r3, [sp, #0x4c] + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080E763A + lsls r5, r6, #1 + mov r1, sl + adds r0, r1, r5 + mov r2, r8 + strb r2, [r0] + adds r0, r7, #0 + bl sub_080E726C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + adds r0, #0x38 + bl sub_080E726C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r4, #0 + bne _080E7616 + cmp r1, #0 + beq _080E761A + mov r3, sb + adds r1, r3, r5 + movs r0, #1 + strb r0, [r1] + b _080E7634 +_080E7616: + cmp r1, #0 + beq _080E762E +_080E761A: + bl sub_0806F0A4 + mov r1, sb + adds r2, r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + strb r0, [r2] + b _080E7634 +_080E762E: + mov r2, sb + adds r0, r2, r5 + strb r1, [r0] +_080E7634: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080E763A: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + mov r8, r3 + ldr r1, [sp, #0x3c] + cmp r0, r1 + blo _080E756A +_080E764A: + movs r2, #0 + mov r8, r2 + ldr r3, [sp, #0x40] + lsls r0, r3, #4 + subs r0, r0, r3 + lsls r0, r0, #3 + ldr r1, [sp, #0x2c] + adds r7, r1, r0 + ldr r1, [sp, #0x44] +_080E765C: + mov r2, r8 + lsls r0, r2, #2 + adds r0, r1, r0 + str r7, [r0] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #3 + bls _080E765C + bl sub_080E7324 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, [sp, #0x34] + cmp r3, #3 + beq _080E76AE + cmp r3, #3 + bgt _080E7694 + cmp r3, #2 + beq _080E769C + b _080E7704 +_080E7694: + ldr r0, [sp, #0x34] + cmp r0, #4 + beq _080E76D0 + b _080E7704 +_080E769C: + add r2, sp, #0x24 + movs r0, #1 + str r0, [sp] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + movs r3, #0 + bl sub_080E7274 + b _080E7704 +_080E76AE: + ldr r0, _080E76CC + lsls r1, r1, #1 + adds r2, r1, r0 + ldrb r3, [r2] + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + add r2, sp, #0x24 + str r0, [sp] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + bl sub_080E7274 + b _080E7704 + .align 2, 0 +_080E76CC: .4byte gUnknown_8566CF3 +_080E76D0: + add r6, sp, #0x24 + ldr r4, _080E7744 + lsls r5, r1, #2 + adds r0, r5, r4 + ldrb r3, [r0] + adds r0, r4, #1 + adds r0, r5, r0 + ldrb r0, [r0] + str r0, [sp] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + adds r2, r6, #0 + bl sub_080E7274 + adds r0, r4, #2 + adds r0, r5, r0 + ldrb r3, [r0] + adds r4, #3 + adds r5, r5, r4 + ldrb r0, [r5] + str r0, [sp] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + adds r2, r6, #0 + bl sub_080E7274 +_080E7704: + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x40] + adds r7, r1, r2 + ldr r4, _080E7748 + ldr r0, [r4] + movs r3, #0xc2 + lsls r3, r3, #6 + adds r0, r0, r3 + adds r1, r7, #0 + movs r2, #0x38 + bl memcpy + ldr r0, [r4] + ldr r1, _080E774C + adds r0, r0, r1 + adds r1, r7, #0 + adds r1, #0x38 + movs r2, #0x38 + bl memcpy + ldr r0, [sp, #0x38] + bl sub_0806F07C + add sp, #0x50 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7744: .4byte gUnknown_8566CF9 +_080E7748: .4byte gUnknown_3005AEC +_080E774C: .4byte 0x0000310C + thumb_func_end sub_080E7330 + + thumb_func_start sub_080E7750 +sub_080E7750: @ 0x080E7750 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + cmp r1, #0 + beq _080E77D4 + ldrh r0, [r4] + cmp r0, #0 + beq _080E77D4 + bl sub_080D6480 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bne _080E77D4 + ldrh r0, [r4] + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E77CC + ldrh r0, [r4] + movs r1, #1 + bl sub_080D6534 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E77CC + ldrh r0, [r4] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E77CC + ldr r0, _080E77B8 + ldrh r1, [r4] + bl sub_0809CF88 + ldr r0, _080E77BC + ldr r1, _080E77C0 + bl sub_080088B8 + ldrh r1, [r4] + ldr r0, _080E77C4 + cmp r1, r0 + bne _080E77D4 + ldr r0, _080E77C8 + bl sub_0809D018 + b _080E77D4 + .align 2, 0 +_080E77B8: .4byte 0x00004001 +_080E77BC: .4byte gUnknown_2021C40 +_080E77C0: .4byte gUnknown_20226A8 +_080E77C4: .4byte 0x00000113 +_080E77C8: .4byte 0x000008B3 +_080E77CC: + ldr r0, _080E77DC + movs r1, #0 + bl sub_0809CF88 +_080E77D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E77DC: .4byte 0x00004001 + thumb_func_end sub_080E7750 + + thumb_func_start sub_080E77E0 +sub_080E77E0: @ 0x080E77E0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080E7804 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #9 + bls _080E77FA + b _080E78F2 +_080E77FA: + lsls r0, r0, #2 + ldr r1, _080E7808 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E7804: .4byte gUnknown_3005B60 +_080E7808: .4byte _080E780C +_080E780C: @ jump table + .4byte _080E78DA @ case 0 + .4byte _080E7834 @ case 1 + .4byte _080E7842 @ case 2 + .4byte _080E784C @ case 3 + .4byte _080E7864 @ case 4 + .4byte _080E7878 @ case 5 + .4byte _080E788C @ case 6 + .4byte _080E78A8 @ case 7 + .4byte _080E78D6 @ case 8 + .4byte _080E78E2 @ case 9 +_080E7834: + bl sub_08009C28 + cmp r0, #0 + bne _080E78DA + movs r0, #6 + strh r0, [r4, #8] + b _080E78F2 +_080E7842: + bl sub_08076764 + bl sub_0815336C + b _080E78DA +_080E784C: + bl sub_081533B0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E78F2 + bl sub_08076780 + movs r1, #0 + movs r0, #4 + strh r0, [r4, #8] + strh r1, [r4, #0xa] + b _080E78F2 +_080E7864: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + ble _080E78F2 + bl sub_0800A7F8 + b _080E78DA +_080E7878: + ldr r0, _080E7888 + ldrb r0, [r0] + cmp r0, #0 + bne _080E78F2 + adds r0, r5, #0 + bl sub_080A8964 + b _080E78F2 + .align 2, 0 +_080E7888: .4byte gUnknown_30031C4 +_080E788C: + movs r0, #0 + bl sub_0800FF8C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E78F2 + ldr r0, _080E78A4 + movs r1, #5 + bl sub_080A8878 + b _080E78DA + .align 2, 0 +_080E78A4: .4byte sub_081535C4 +_080E78A8: + ldr r0, _080E78C8 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080E78F2 + ldr r0, _080E78CC + ldrb r0, [r0] + cmp r0, #0 + beq _080E78D0 + movs r0, #1 + bl sub_0800FF8C + movs r0, #8 + strh r0, [r4, #8] + b _080E78F2 + .align 2, 0 +_080E78C8: .4byte sub_081535C4 +_080E78CC: .4byte gUnknown_300319C +_080E78D0: + movs r0, #4 + strh r0, [r4, #8] + b _080E78F2 +_080E78D6: + bl sub_0800A8D4 +_080E78DA: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080E78F2 +_080E78E2: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E78F2 + adds r0, r5, #0 + bl sub_080A8964 +_080E78F2: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080E77E0 + + thumb_func_start sub_080E78F8 +sub_080E78F8: @ 0x080E78F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + str r0, [sp] + mov sl, r1 + adds r1, r0, #0 + adds r1, #0x38 + movs r0, #0xff + strb r0, [r1] + ldr r1, [sp] + adds r1, #0x7c + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + ldr r0, [sp] + mov r1, sl + movs r2, #0x44 + bl memcpy + movs r0, #0 + str r0, [sp, #8] + movs r1, #0 + str r1, [sp, #0xc] + movs r2, #0 + str r2, [sp, #4] + mov r8, r2 + movs r7, #0 + ldr r0, _080E79C4 + mov sb, r0 +_080E7938: + mov r1, sb + ldr r0, [r1] + adds r0, #0xb2 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + adds r0, r7, r0 + movs r1, #3 + bl __modsi3 + adds r6, r0, #1 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + mov r2, sl + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0xff + beq _080E79A0 + adds r5, r1, #0 + adds r5, #0x34 + adds r0, r5, #0 + bl sub_08083C64 + adds r4, r0, #0 + mov r1, sb + ldr r0, [r1] + adds r0, #0xa + bl sub_08083C64 + cmp r4, r0 + beq _080E7982 + movs r2, #1 + add r8, r2 + str r6, [sp, #4] +_080E7982: + adds r0, r5, #0 + bl sub_08083C64 + adds r4, r0, #0 + mov r1, sb + ldr r0, [r1] + adds r0, #0xa + bl sub_08083C64 + cmp r4, r0 + bne _080E79A0 + ldr r2, [sp, #0xc] + adds r2, #1 + str r2, [sp, #0xc] + str r6, [sp, #8] +_080E79A0: + adds r7, #1 + cmp r7, #1 + ble _080E7938 + mov r0, r8 + cmp r0, #0 + bne _080E79B8 + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _080E79B8 + mov r8, r1 + ldr r2, [sp, #8] + str r2, [sp, #4] +_080E79B8: + mov r0, r8 + cmp r0, #1 + beq _080E79C8 + cmp r0, #2 + beq _080E79D4 + b _080E7A34 + .align 2, 0 +_080E79C4: .4byte gUnknown_3005AF0 +_080E79C8: + ldr r2, [sp, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, sl + b _080E79F6 +_080E79D4: + bl sub_0806F0A4 + lsls r0, r0, #0x10 + ldr r1, _080E7A04 + cmp r0, r1 + bls _080E7A0C + ldr r0, _080E7A08 + ldr r0, [r0] + adds r0, #0xb2 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sl + adds r1, #0x44 +_080E79F6: + ldr r0, [sp] + adds r0, #0x44 + movs r2, #0x44 + bl memcpy + b _080E7A34 + .align 2, 0 +_080E7A04: .4byte 0x33330000 +_080E7A08: .4byte gUnknown_3005AF0 +_080E7A0C: + ldr r0, _080E7A44 + ldr r0, [r0] + adds r0, #0xb2 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + adds r0, #1 + movs r1, #3 + bl __modsi3 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sl + adds r1, #0x44 + ldr r0, [sp] + adds r0, #0x44 + movs r2, #0x44 + bl memcpy +_080E7A34: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7A44: .4byte gUnknown_3005AF0 + thumb_func_end sub_080E78F8 + + thumb_func_start sub_080E7A48 +sub_080E7A48: @ 0x080E7A48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov r8, r0 + movs r6, #0 + ldr r0, _080E7BDC + mov sl, r0 +_080E7A5C: + movs r7, #0 + lsls r0, r6, #5 + adds r6, #1 + mov sb, r6 + mov r1, r8 + adds r4, r0, r1 + adds r0, #6 + adds r6, r1, r0 + adds r5, r4, #0 +_080E7A6E: + mov r2, sl + ldr r1, [r2] + adds r1, #0xa + adds r0, r5, #0 + bl sub_08083C7C + movs r0, #1 + strb r0, [r4, #0xe] + mov r0, sl + ldr r1, [r0] + adds r0, r6, #0 + bl sub_080088B8 + adds r4, #0x10 + adds r6, #0x10 + adds r5, #0x10 + adds r7, #1 + cmp r7, #1 + ble _080E7A6E + mov r6, sb + cmp r6, #8 + ble _080E7A5C + ldr r1, _080E7BDC + mov sl, r1 + ldr r2, _080E7BE0 + str r2, [sp, #4] + movs r4, #0x99 + lsls r4, r4, #1 + add r4, r8 + movs r0, #0x95 + lsls r0, r0, #1 + add r0, r8 + mov sb, r0 + ldr r1, _080E7BE4 + str r1, [sp, #8] + movs r6, #0x92 + lsls r6, r6, #1 + add r6, r8 + movs r5, #0x90 + lsls r5, r5, #1 + add r5, r8 + movs r7, #1 +_080E7AC2: + movs r0, #1 + strb r0, [r4, #8] + mov r2, sl + ldr r1, [r2] + adds r1, #0xa + adds r0, r5, #0 + bl sub_08083C7C + mov r0, sl + ldr r1, [r0] + ldr r2, [sp, #8] + adds r1, r1, r2 + adds r0, r6, #0 + bl sub_08083C7C + mov r0, sl + ldr r1, [r0] + mov r0, sb + bl sub_080088B8 + mov r2, sl + ldr r1, [r2] + ldr r0, [sp, #4] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, [sp, #4] + adds r1, #8 + str r1, [sp, #4] + adds r4, #0x1c + movs r2, #0x1c + add sb, r2 + ldr r0, [sp, #8] + adds r0, #4 + str r0, [sp, #8] + adds r6, #0x1c + adds r5, #0x1c + subs r7, #1 + cmp r7, #0 + bge _080E7AC2 + movs r6, #0 + ldr r0, _080E7BDC + ldr r3, [r0] + mov r4, r8 + movs r1, #0xc4 + adds r1, r1, r4 + mov sb, r1 + movs r2, #0x84 + adds r2, r2, r4 + mov r8, r2 + movs r0, #0x44 + adds r0, r0, r4 + mov ip, r0 + adds r7, r4, #4 + movs r1, #0xcf + lsls r1, r1, #4 + adds r1, r3, r1 + str r1, [sp] + mov sl, r4 + ldr r2, _080E7BE8 + adds r5, r3, r2 +_080E7B3E: + lsls r2, r6, #1 + ldr r1, [sp] + ldrh r0, [r1] + strh r0, [r7] + ldrh r0, [r5] + strh r0, [r7, #0x20] + ldrh r0, [r5, #4] + mov r1, ip + strh r0, [r1] + ldr r1, _080E7BEC + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r1, ip + strh r0, [r1, #0x20] + movs r1, #0xdd + lsls r1, r1, #4 + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r1, r8 + strh r0, [r1] + ldr r1, _080E7BF0 + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r1, r8 + strh r0, [r1, #0x20] + ldr r1, _080E7BF4 + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r1, sb + strh r0, [r1] + ldr r1, _080E7BF8 + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r0, [r0] + mov r1, sb + strh r0, [r1, #0x20] + ldr r1, _080E7BFC + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x82 + lsls r0, r0, #1 + add r0, sl + strh r1, [r0] + ldr r1, _080E7C00 + adds r0, r3, r1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r2, #0x94 + lsls r2, r2, #1 + adds r0, r4, r2 + strh r1, [r0] + adds r4, #0x1c + movs r0, #0x10 + add sb, r0 + add r8, r0 + add ip, r0 + adds r7, #0x10 + ldr r1, [sp] + adds r1, #2 + str r1, [sp] + add sl, r0 + adds r5, #2 + adds r6, #1 + cmp r6, #1 + ble _080E7B3E + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7BDC: .4byte gUnknown_3005AF0 +_080E7BE0: .4byte 0x00000EE1 +_080E7BE4: .4byte 0x00000EF1 +_080E7BE8: .4byte 0x00000CF4 +_080E7BEC: .4byte 0x00000D14 +_080E7BF0: .4byte 0x00000DDE +_080E7BF4: .4byte 0x00000DEA +_080E7BF8: .4byte 0x00000E08 +_080E7BFC: .4byte 0x00000E1E +_080E7C00: .4byte 0x00000CFC + thumb_func_end sub_080E7A48 + + thumb_func_start sub_080E7C04 +sub_080E7C04: @ 0x080E7C04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + movs r0, #0 + mov r8, r0 + adds r6, r1, #0 + adds r6, #0x34 + adds r5, r1, #0 +_080E7C16: + adds r0, r7, #0 + adds r0, #0x34 + bl sub_08083C64 + adds r4, r0, #0 + adds r0, r6, #0 + bl sub_08083C64 + cmp r4, r0 + bne _080E7C36 + ldrb r0, [r7, #2] + ldrb r1, [r5, #2] + cmp r0, r1 + bne _080E7C36 + movs r0, #1 + b _080E7C46 +_080E7C36: + adds r6, #0x44 + adds r5, #0x44 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #3 + ble _080E7C16 + movs r0, #0 +_080E7C46: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080E7C04 + + thumb_func_start sub_080E7C50 +sub_080E7C50: @ 0x080E7C50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + mov r0, sp + bl sub_080E7008 + lsls r4, r4, #2 + mov r1, sp + adds r0, r1, r4 + ldr r0, [r0] + muls r0, r5, r0 + adds r3, r6, r0 + movs r7, #0 + movs r2, #0 + mov r8, r2 + movs r5, #0 + adds r6, r3, #0 + adds r6, #0x38 + adds r4, r3, #0 +_080E7C7E: + ldrb r0, [r6] + cmp r0, #0xff + beq _080E7C9C + ldr r0, _080E7CB0 + ldr r1, [r0] + adds r1, #0xdc + adds r0, r4, #0 + str r3, [sp, #0x10] + bl sub_080E7C04 + ldr r3, [sp, #0x10] + cmp r0, #0 + bne _080E7C9C + adds r7, #1 + mov r8, r5 +_080E7C9C: + adds r6, #0x44 + adds r4, #0x44 + adds r5, #1 + cmp r5, #1 + ble _080E7C7E + cmp r7, #1 + beq _080E7CB4 + cmp r7, #2 + beq _080E7CF0 + b _080E7D4E + .align 2, 0 +_080E7CB0: .4byte gUnknown_3005AF0 +_080E7CB4: + ldr r4, _080E7CEC + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xb2 + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1e + adds r2, r1, #1 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, #0xdc + mov r2, r8 + lsls r1, r2, #4 + add r1, r8 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r2, #0x44 + bl memcpy + ldr r4, [r4] + adds r4, #0xb2 + ldrb r5, [r4] + lsls r0, r5, #0x1b + lsrs r0, r0, #0x1e + adds r0, #1 + b _080E7D38 + .align 2, 0 +_080E7CEC: .4byte gUnknown_3005AF0 +_080E7CF0: + movs r5, #0 + adds r6, r3, #0 +_080E7CF4: + movs r0, #1 + eors r0, r5 + ldr r7, _080E7D5C + ldr r4, [r7] + adds r1, r4, #0 + adds r1, #0xb2 + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1e + adds r0, r0, r1 + movs r1, #3 + bl __modsi3 + adds r2, r0, #1 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r4, r0 + adds r4, #0xdc + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x44 + bl memcpy + adds r6, #0x44 + adds r5, #1 + cmp r5, #1 + ble _080E7CF4 + ldr r4, [r7] + adds r4, #0xb2 + ldrb r5, [r4] + lsls r0, r5, #0x1b + lsrs r0, r0, #0x1e + adds r0, #2 +_080E7D38: + movs r1, #3 + bl __modsi3 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + movs r1, #0x19 + rsbs r1, r1, #0 + ands r1, r5 + orrs r1, r0 + strb r1, [r4] +_080E7D4E: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E7D5C: .4byte gUnknown_3005AF0 + thumb_func_end sub_080E7C50 + + thumb_func_start sub_080E7D60 +sub_080E7D60: @ 0x080E7D60 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x54 + str r0, [sp] + ldr r0, [sp, #0x74] + movs r4, #0 + mov r8, r4 + movs r5, #0 + str r5, [sp, #4] + ldr r4, _080E7D7C + b _080E7D88 + .align 2, 0 +_080E7D7C: .4byte gUnknown_3001168 +_080E7D80: + adds r1, r1, r2 + ldr r6, [sp, #4] + adds r6, #1 + str r6, [sp, #4] +_080E7D88: + ldr r5, [sp, #4] + cmp r5, r0 + bge _080E7D9E + cmp r5, r3 + beq _080E7D98 + stm r4!, {r1} + movs r6, #1 + add r8, r6 +_080E7D98: + mov r5, r8 + cmp r5, #3 + bne _080E7D80 +_080E7D9E: + movs r6, #0 + str r6, [sp, #4] + subs r0, #1 + str r0, [sp, #0x24] +_080E7DA6: + movs r0, #0 + str r0, [sp, #8] + ldr r1, [sp, #4] + adds r1, #1 + str r1, [sp, #0x28] + ldr r2, [sp, #4] + lsls r2, r2, #1 + str r2, [sp, #0x34] + ldr r3, [sp, #4] + adds r3, r2, r3 + str r3, [sp, #0x10] + movs r4, #0 + str r4, [sp, #0x44] + movs r5, #0 + str r5, [sp, #0x48] +_080E7DC4: + movs r6, #0 + mov r8, r6 + ldr r0, _080E805C + ldr r1, [r0] + ldr r2, [sp, #0x10] + lsls r0, r2, #5 + ldr r3, [sp, #0x48] + adds r0, r3, r0 + adds r3, r0, r1 + lsls r0, r2, #6 + ldr r4, [sp, #0x44] + adds r0, r4, r0 + ldr r5, [sp] + adds r2, r0, r5 +_080E7DE0: + adds r0, r2, #0 + movs r6, #0x87 + lsls r6, r6, #2 + adds r1, r3, r6 + ldm r1!, {r4, r5, r6} + stm r0!, {r4, r5, r6} + ldr r1, [r1] + str r1, [r0] + adds r3, #0x10 + adds r2, #0x10 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #2 + ble _080E7DE0 + movs r2, #0 + mov r8, r2 + ldr r3, [sp, #0x24] + cmp r8, r3 + bge _080E7EC4 + ldr r4, [sp, #4] + lsls r4, r4, #5 + mov sb, r4 + ldr r5, [sp, #8] + lsls r7, r5, #4 + ldr r6, [sp, #0x34] + ldr r1, [sp, #4] + adds r0, r6, r1 + lsls r0, r0, #6 + str r0, [sp, #0x14] + ldr r2, [sp] + adds r0, r2, r0 + ldr r3, [sp, #0x44] + str r3, [sp, #0x18] + adds r0, r0, r3 + str r0, [sp, #0x1c] + ldr r4, [sp, #0x14] + adds r0, r3, r4 + adds r0, r0, r2 + adds r0, #0x30 + mov sl, r0 +_080E7E32: + movs r5, #0 + str r5, [sp, #0xc] + movs r3, #0 + mov r6, r8 + lsls r6, r6, #2 + str r6, [sp, #0x38] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + adds r0, r1, r2 + ldr r4, [sp] + adds r5, r0, r4 + ldr r0, _080E8060 + adds r0, r6, r0 + str r0, [sp, #0x50] +_080E7E4E: + lsls r0, r3, #4 + ldr r6, [sp, #0x1c] + adds r0, r6, r0 + str r3, [sp, #0x4c] + bl sub_08083C64 + adds r4, r0, #0 + ldr r1, [sp, #0x50] + ldr r0, [r1] + add r0, sb + adds r0, r0, r7 + bl sub_08083C64 + ldr r3, [sp, #0x4c] + cmp r4, r0 + bne _080E7E90 + ldr r2, [sp, #0xc] + adds r2, #1 + str r2, [sp, #0xc] + ldr r4, [sp, #0x50] + ldr r0, [r4] + mov r6, sb + adds r1, r7, r6 + adds r1, r0, r1 + ldrh r0, [r5, #4] + ldrh r2, [r1, #4] + cmp r0, r2 + bhs _080E7E90 + adds r0, r5, #0 + ldm r1!, {r2, r4, r6} + stm r0!, {r2, r4, r6} + ldr r1, [r1] + str r1, [r0] +_080E7E90: + adds r5, #0x10 + adds r3, #1 + cmp r3, #2 + ble _080E7E4E + ldr r3, [sp, #0xc] + cmp r3, #0 + bne _080E7EB6 + ldr r0, _080E8060 + ldr r4, [sp, #0x38] + adds r0, r4, r0 + ldr r0, [r0] + mov r5, sb + adds r2, r7, r5 + mov r1, sl + adds r0, r0, r2 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldr r0, [r0] + str r0, [r1] +_080E7EB6: + movs r4, #0x10 + add sl, r4 + movs r5, #1 + add r8, r5 + ldr r6, [sp, #0x24] + cmp r8, r6 + blt _080E7E32 +_080E7EC4: + ldr r0, [sp, #0x44] + adds r0, #0x60 + str r0, [sp, #0x44] + ldr r1, [sp, #0x48] + adds r1, #0x30 + str r1, [sp, #0x48] + ldr r2, [sp, #8] + adds r2, #1 + str r2, [sp, #8] + cmp r2, #1 + bgt _080E7EDC + b _080E7DC4 +_080E7EDC: + ldr r3, [sp, #0x28] + str r3, [sp, #4] + cmp r3, #8 + bgt _080E7EE6 + b _080E7DA6 +_080E7EE6: + movs r4, #0 + str r4, [sp, #8] +_080E7EEA: + ldr r5, [sp, #8] + adds r5, #1 + str r5, [sp, #0x2c] + ldr r0, _080E805C + ldr r1, [r0] + movs r0, #0x54 + ldr r6, [sp, #8] + muls r0, r6, r0 + adds r3, r0, r1 + movs r0, #0xa8 + muls r0, r6, r0 + ldr r1, [sp] + adds r2, r0, r1 + movs r4, #2 + mov r8, r4 +_080E7F08: + movs r5, #0xd8 + lsls r5, r5, #3 + adds r0, r2, r5 + ldr r6, _080E8064 + adds r1, r3, r6 + ldm r1!, {r4, r5, r6} + stm r0!, {r4, r5, r6} + ldm r1!, {r4, r5, r6} + stm r0!, {r4, r5, r6} + ldr r1, [r1] + str r1, [r0] + adds r3, #0x1c + adds r2, #0x1c + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + mov r1, r8 + cmp r1, #0 + bge _080E7F08 + movs r2, #0 + mov r8, r2 + ldr r3, [sp, #0x24] + cmp r8, r3 + blt _080E7F3A + b _080E8042 +_080E7F3A: + ldr r4, [sp, #8] + lsls r1, r4, #3 + movs r0, #0xa8 + adds r5, r4, #0 + muls r5, r0, r5 + str r5, [sp, #0x20] + str r5, [sp, #0x3c] + subs r1, r1, r4 + lsls r1, r1, #2 + mov sl, r1 +_080E7F4E: + movs r6, #0 + str r6, [sp, #0xc] + mov r0, r8 + lsls r0, r0, #2 + str r0, [sp, #0x38] + mov r1, r8 + adds r1, #1 + str r1, [sp, #0x30] + ldr r0, _080E8060 + ldr r2, [sp, #0x38] + adds r2, r2, r0 + mov sb, r2 + ldr r3, [sp] + movs r4, #0xd8 + lsls r4, r4, #3 + adds r0, r3, r4 + ldr r5, [sp, #0x3c] + adds r7, r5, r0 + str r6, [sp, #0x40] + movs r3, #2 +_080E7F76: + ldr r1, [sp, #0x20] + movs r2, #0xd8 + lsls r2, r2, #3 + adds r0, r1, r2 + ldr r4, [sp] + adds r0, r4, r0 + ldr r6, [sp, #0x40] + adds r5, r0, r6 + adds r0, r5, #0 + str r3, [sp, #0x4c] + bl sub_08083C64 + adds r4, r0, #0 + movs r6, #0x90 + lsls r6, r6, #1 + add r6, sl + mov r1, sb + ldr r0, [r1] + adds r0, r0, r6 + bl sub_08083C64 + ldr r3, [sp, #0x4c] + cmp r4, r0 + bne _080E7FF0 + adds r0, r5, #4 + bl sub_08083C64 + adds r4, r0, #0 + mov r2, sb + ldr r0, [r2] + adds r0, r0, r6 + adds r0, #4 + bl sub_08083C64 + ldr r3, [sp, #0x4c] + cmp r4, r0 + bne _080E7FF0 + ldr r4, [sp, #0xc] + adds r4, #1 + str r4, [sp, #0xc] + mov r5, sb + ldr r0, [r5] + mov r6, sl + adds r2, r0, r6 + movs r0, #0x94 + lsls r0, r0, #1 + adds r1, r2, r0 + ldrh r0, [r7, #8] + ldrh r1, [r1] + cmp r0, r1 + bhs _080E7FF0 + adds r0, r7, #0 + movs r4, #0x90 + lsls r4, r4, #1 + adds r1, r2, r4 + ldm r1!, {r2, r5, r6} + stm r0!, {r2, r5, r6} + ldm r1!, {r4, r5, r6} + stm r0!, {r4, r5, r6} + ldr r1, [r1] + str r1, [r0] +_080E7FF0: + adds r7, #0x1c + ldr r0, [sp, #0x40] + adds r0, #0x1c + str r0, [sp, #0x40] + subs r3, #1 + cmp r3, #0 + bge _080E7F76 + ldr r1, [sp, #0xc] + cmp r1, #0 + bne _080E8038 + mov r0, r8 + adds r0, #3 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r2, [sp, #0x20] + adds r1, r1, r2 + ldr r3, [sp] + adds r1, r3, r1 + ldr r0, _080E8060 + ldr r4, [sp, #0x38] + adds r0, r4, r0 + ldr r0, [r0] + add r0, sl + movs r5, #0xd8 + lsls r5, r5, #3 + adds r1, r1, r5 + movs r6, #0x90 + lsls r6, r6, #1 + adds r0, r0, r6 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r5, r6} + stm r1!, {r2, r5, r6} + ldr r0, [r0] + str r0, [r1] +_080E8038: + ldr r3, [sp, #0x30] + mov r8, r3 + ldr r4, [sp, #0x24] + cmp r8, r4 + blt _080E7F4E +_080E8042: + ldr r5, [sp, #0x2c] + str r5, [sp, #8] + cmp r5, #1 + bgt _080E804C + b _080E7EEA +_080E804C: + add sp, #0x54 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E805C: .4byte gUnknown_3005AF0 +_080E8060: .4byte gUnknown_3001168 +_080E8064: .4byte 0x0000057C + thumb_func_end sub_080E7D60 + + thumb_func_start sub_080E8068 +sub_080E8068: @ 0x080E8068 + push {r4, r5, r6, r7, lr} + mov ip, r0 + adds r7, r1, #0 + movs r5, #0 +_080E8070: + movs r2, #0 + movs r4, #1 + rsbs r4, r4, #0 + movs r1, #0 + adds r6, r5, #1 + adds r3, r7, #0 +_080E807C: + ldrh r0, [r3, #4] + cmp r0, r2 + ble _080E8086 + adds r4, r1, #0 + adds r2, r0, #0 +_080E8086: + adds r3, #0x10 + adds r1, #1 + cmp r1, #5 + ble _080E807C + cmp r4, #0 + blt _080E80A8 + lsls r1, r5, #4 + lsls r2, r4, #4 + adds r2, r2, r7 + add r1, ip + adds r0, r2, #0 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, [r0] + str r0, [r1] + movs r0, #0 + strh r0, [r2, #4] +_080E80A8: + adds r5, r6, #0 + cmp r5, #2 + ble _080E8070 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E8068 + + thumb_func_start sub_080E80B4 +sub_080E80B4: @ 0x080E80B4 + push {r4, r5, r6, r7, lr} + mov ip, r0 + adds r6, r1, #0 + movs r5, #0 +_080E80BC: + movs r3, #0 + movs r4, #1 + rsbs r4, r4, #0 + movs r2, #0 + adds r7, r5, #1 + adds r1, r6, #0 +_080E80C8: + ldrh r0, [r1, #8] + cmp r0, r3 + ble _080E80D2 + adds r4, r2, #0 + adds r3, r0, #0 +_080E80D2: + adds r1, #0x1c + adds r2, #1 + cmp r2, #5 + ble _080E80C8 + cmp r4, #0 + blt _080E8100 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + lsls r2, r4, #3 + subs r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r6 + add r1, ip + adds r0, r2, #0 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, [r0] + str r0, [r1] + movs r0, #0 + strh r0, [r2, #8] +_080E8100: + adds r5, r7, #0 + cmp r5, #2 + ble _080E80BC + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E80B4 + + thumb_func_start sub_080E810C +sub_080E810C: @ 0x080E810C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + movs r0, #0 + ldr r1, _080E818C + mov sl, r1 +_080E811E: + lsls r1, r0, #1 + adds r2, r0, #1 + mov r8, r2 + adds r1, r1, r0 + lsls r0, r1, #5 + movs r2, #0x87 + lsls r2, r2, #2 + adds r7, r0, r2 + lsls r1, r1, #6 + mov r0, sb + adds r4, r0, r1 + movs r6, #0 + movs r5, #1 +_080E8138: + mov r1, sl + ldr r0, [r1] + adds r0, r0, r7 + adds r0, r0, r6 + adds r1, r4, #0 + bl sub_080E8068 + adds r4, #0x60 + adds r6, #0x30 + subs r5, #1 + cmp r5, #0 + bge _080E8138 + mov r0, r8 + cmp r0, #8 + ble _080E811E + movs r5, #0 + ldr r4, _080E818C +_080E815A: + movs r0, #0x54 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r2, _080E8190 + adds r1, r1, r2 + ldr r0, [r4] + adds r0, r0, r1 + movs r1, #0xa8 + muls r1, r5, r1 + movs r2, #0xd8 + lsls r2, r2, #3 + adds r1, r1, r2 + add r1, sb + bl sub_080E80B4 + adds r5, #1 + cmp r5, #1 + ble _080E815A + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E818C: .4byte gUnknown_3005AF0 +_080E8190: .4byte 0x0000057C + thumb_func_end sub_080E810C + + thumb_func_start sub_080E8194 +sub_080E8194: @ 0x080E8194 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r6, r0, #0 + mov r8, r1 + mov sb, r2 + bl sub_08009B64 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x81 + lsls r0, r0, #4 + bl sub_08000BDC + adds r5, r0, #0 + str r4, [sp] + adds r1, r6, #0 + mov r2, r8 + mov r3, sb + bl sub_080E7D60 + adds r0, r5, #0 + bl sub_080E810C + adds r0, r5, #0 + bl sub_08000BF0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E8194 + + thumb_func_start sub_080E81E0 +sub_080E81E0: @ 0x080E81E0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r5, _080E8228 + ldr r4, _080E822C + ldr r1, [r4] + movs r0, #0xc2 + lsls r0, r0, #6 + adds r1, r1, r0 + adds r0, r5, #0 + movs r2, #0x38 + bl memcpy + ldr r1, [r4] + ldr r0, _080E8230 + adds r1, r1, r0 + adds r0, r5, #0 + adds r0, #0x38 + movs r2, #0x38 + bl memcpy + ldr r0, [r4] + ldr r1, _080E8234 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_0806F520 + ldr r0, _080E8238 + ldr r1, [r0] + adds r0, r6, #0 + movs r2, #0x78 + bl memcpy + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E8228: .4byte gUnknown_2039C3C +_080E822C: .4byte gUnknown_3005AEC +_080E8230: .4byte 0x0000310C +_080E8234: .4byte 0x00003030 +_080E8238: .4byte gUnknown_3001148 + thumb_func_end sub_080E81E0 + + thumb_func_start sub_080E823C +sub_080E823C: @ 0x080E823C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r7, #0 + ldr r0, [r6, #0x70] + cmp r7, r0 + bhs _080E8280 + adds r5, r6, #0 + adds r5, #0x2c + adds r4, r6, #0 + adds r4, #0x24 +_080E8250: + adds r0, r4, #0 + bl sub_08008F14 + cmp r0, #0 + beq _080E8262 + adds r0, r4, #0 + ldr r1, _080E8288 + bl sub_080088B8 +_080E8262: + adds r0, r5, #0 + bl sub_08008F14 + cmp r0, #0 + beq _080E8274 + adds r0, r4, #0 + ldr r1, _080E828C + bl sub_080088B8 +_080E8274: + adds r5, #0x38 + adds r4, #0x38 + adds r7, #1 + ldr r0, [r6, #0x70] + cmp r7, r0 + blo _080E8250 +_080E8280: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E8288: .4byte gUnknown_85CCEC5 +_080E828C: .4byte gUnknown_85CCECD + thumb_func_end sub_080E823C + + thumb_func_start sub_080E8290 +sub_080E8290: @ 0x080E8290 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrh r0, [r6, #2] + cmp r0, #0 + beq _080E82D4 + adds r0, r6, #4 + bl sub_08008F14 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r5, r1, #0x1f + cmp r5, #0 + bne _080E82CA + movs r4, #0 + b _080E82B0 +_080E82AE: + adds r4, #1 +_080E82B0: + cmp r4, #2 + bgt _080E82C6 + movs r0, #0x2c + muls r0, r4, r0 + adds r0, r0, r6 + adds r0, #0x3c + bl sub_08008F14 + cmp r0, #0 + beq _080E82AE + adds r5, #1 +_080E82C6: + cmp r5, #0 + beq _080E82D4 +_080E82CA: + adds r0, r6, #0 + movs r1, #0 + movs r2, #0xa4 + bl memset +_080E82D4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E8290 + + thumb_func_start sub_080E82DC +sub_080E82DC: @ 0x080E82DC + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E82DC + + thumb_func_start sub_080E82F4 +sub_080E82F4: @ 0x080E82F4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + ldr r0, _080E831C + ldrb r0, [r0] + cmp r0, #0 + beq _080E8316 + bl m4aSoundMain + bl m4aSoundMain + bl m4aSoundMain +_080E8316: + pop {r0} + bx r0 + .align 2, 0 +_080E831C: .4byte gUnknown_2039CBC + thumb_func_end sub_080E82F4 + + thumb_func_start sub_080E8320 +sub_080E8320: @ 0x080E8320 + push {r4, lr} + sub sp, #4 + ldr r1, _080E8340 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #7 + bls _080E8336 + b _080E8480 +_080E8336: + lsls r0, r0, #2 + ldr r1, _080E8344 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080E8340: .4byte gUnknown_3002360 +_080E8344: .4byte _080E8348 +_080E8348: @ jump table + .4byte _080E8368 @ case 0 + .4byte _080E8380 @ case 1 + .4byte _080E8386 @ case 2 + .4byte _080E83AC @ case 3 + .4byte _080E83B4 @ case 4 + .4byte _080E83C8 @ case 5 + .4byte _080E83E8 @ case 6 + .4byte _080E840C @ case 7 +_080E8368: + movs r0, #0 + bl sub_080006F0 + bl sub_080E9560 + ldr r1, _080E837C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080E8400 + .align 2, 0 +_080E837C: .4byte gUnknown_3002360 +_080E8380: + bl sub_080E96A8 + b _080E83F8 +_080E8386: + movs r0, #0 + bl sub_080017D4 + ldr r1, _080E83A4 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + bl sub_080E96DC + ldr r1, _080E83A8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080E8400 + .align 2, 0 +_080E83A4: .4byte gUnknown_8566D08 +_080E83A8: .4byte gUnknown_3002360 +_080E83AC: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _080E8400 +_080E83B4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E8480 + movs r0, #0 + bl sub_08001B48 + b _080E83F8 +_080E83C8: + ldr r0, _080E83E0 + bl sub_08003090 + bl sub_08004480 + bl sub_08196F98 + ldr r1, _080E83E4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _080E8400 + .align 2, 0 +_080E83E0: .4byte gUnknown_8566D0C +_080E83E4: .4byte gUnknown_3002360 +_080E83E8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_080E83F8: + ldr r1, _080E8408 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_080E8400: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _080E8480 + .align 2, 0 +_080E8408: .4byte gUnknown_3002360 +_080E840C: + bl sub_080E96C8 + ldr r1, _080E8488 + movs r0, #0x48 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x31 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xe1 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #7 + bl sub_08001144 + movs r0, #1 + bl sub_08001274 + ldr r0, _080E848C + bl sub_080006F0 + ldr r0, _080E8490 + bl sub_08000540 + ldr r0, _080E8494 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080E8498 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r4, #0 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + strh r0, [r1, #0xe] + strh r0, [r1, #0x10] + ldr r0, _080E849C + strb r4, [r0] + bl m4aSoundInit + ldr r0, _080E84A0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + strb r4, [r0] +_080E8480: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E8488: .4byte 0x00001111 +_080E848C: .4byte sub_080E82F4 +_080E8490: .4byte sub_080E82DC +_080E8494: .4byte sub_080E84A4 +_080E8498: .4byte gUnknown_3005B60 +_080E849C: .4byte gUnknown_2039CBC +_080E84A0: .4byte gUnknown_3002360 + thumb_func_end sub_080E8320 + + thumb_func_start sub_080E84A4 +sub_080E84A4: @ 0x080E84A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x48 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r1, _080E85D4 + add r0, sp, #0xc + movs r2, #0x16 + bl memcpy + add r0, sp, #0x24 + mov r8, r0 + ldr r1, _080E85D8 + movs r2, #4 + bl memcpy + add r2, sp, #0x28 + mov sb, r2 + ldr r1, _080E85DC + mov r0, sb + movs r2, #4 + bl memcpy + add r6, sp, #0x2c + ldr r1, _080E85E0 + adds r0, r6, #0 + movs r2, #0xc + bl memcpy + add r7, sp, #0x38 + ldr r1, _080E85E4 + adds r0, r7, #0 + movs r2, #0xe + bl memcpy + ldr r0, _080E85E8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080E85C2 + movs r0, #0 + movs r1, #0 + bl sub_08197638 + str r5, [sp] + movs r4, #0xff + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0 + bl sub_0800449C + movs r0, #0xe + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r7, #0 + movs r3, #0x64 + bl sub_0800449C + movs r0, #0 + bl sub_080E9734 + movs r0, #1 + movs r1, #0 + bl sub_08197638 + str r5, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #1 + mov r2, r8 + movs r3, #0 + bl sub_0800449C + str r5, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x64 + bl sub_0800449C + movs r0, #1 + bl sub_080E9734 + movs r0, #2 + movs r1, #0 + bl sub_08197638 + str r5, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #2 + movs r1, #1 + mov r2, sb + movs r3, #0 + bl sub_0800449C + str r5, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #2 + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x64 + bl sub_0800449C + movs r0, #2 + bl sub_080E9734 + movs r0, #0x40 + movs r1, #0xef + bl sub_08001144 + movs r0, #0x44 + movs r1, #0x30 + bl sub_08001144 + movs r0, #0 + bl sub_080E88E8 + ldr r1, _080E85EC + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080E85F0 + str r1, [r0] +_080E85C2: + add sp, #0x48 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E85D4: .4byte gUnknown_8566D2C +_080E85D8: .4byte gUnknown_8566D42 +_080E85DC: .4byte gUnknown_8566D46 +_080E85E0: .4byte gUnknown_8566D4A +_080E85E4: .4byte gUnknown_8566D56 +_080E85E8: .4byte gUnknown_2037C74 +_080E85EC: .4byte gUnknown_3005B60 +_080E85F0: .4byte sub_080E85F4 + thumb_func_end sub_080E84A4 + + thumb_func_start sub_080E85F4 +sub_080E85F4: @ 0x080E85F4 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _080E8674 + adds r4, r4, r0 + movs r6, #0xe0 + str r6, [sp] + movs r5, #0xc + str r5, [sp, #4] + movs r0, #1 + movs r1, #0x11 + movs r2, #0 + movs r3, #0xe + bl sub_08003A34 + ldr r1, _080E8678 + adds r0, r1, #0 + ldrh r2, [r4, #0xa] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080E8928 + ldr r1, _080E867C + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + bl sub_080E8978 + str r6, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0x11 + movs r2, #0 + movs r3, #0xe + bl sub_08003A34 + ldrh r0, [r4, #0xc] + movs r1, #2 + bl sub_080E8928 + ldr r1, _080E8680 + movs r2, #0xc + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #2 + bl sub_080E8978 + ldr r0, _080E8684 + str r0, [r4] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E8674: .4byte gUnknown_3005B60 +_080E8678: .4byte 0x0000015D +_080E867C: .4byte gUnknown_8568730 +_080E8680: .4byte gUnknown_85682F8 +_080E8684: .4byte sub_080E8878 + thumb_func_end sub_080E85F4 + + thumb_func_start sub_080E8688 +sub_080E8688: @ 0x080E8688 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E86BC + adds r5, r1, r0 + ldr r6, _080E86C0 + ldrh r2, [r6, #0x2e] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080E86C8 + movs r0, #0 + movs r1, #1 + strh r1, [r5, #0x24] + strh r0, [r5, #0x26] +_080E86B4: + ldr r0, _080E86C4 + str r0, [r5] + b _080E8868 + .align 2, 0 +_080E86BC: .4byte gUnknown_3005B60 +_080E86C0: .4byte gUnknown_3002360 +_080E86C4: .4byte sub_080E89EC +_080E86C8: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080E86D8 + strh r1, [r5, #0x24] + strh r1, [r5, #0x26] + b _080E86B4 +_080E86D8: + movs r7, #1 + movs r4, #1 + ands r4, r2 + cmp r4, #0 + beq _080E878C + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080E8722 + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _080E870C + movs r3, #0xc + ldrsh r4, [r5, r3] + cmp r4, #0 + beq _080E8702 + ldrh r0, [r5, #0x10] + bl m4aSongNumStop + b _080E8716 +_080E8702: + ldrh r0, [r5, #0x10] + bl m4aSongNumStop + strh r4, [r5, #0x10] + b _080E8868 +_080E870C: + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E8716 + b _080E8868 +_080E8716: + ldrh r0, [r5, #0xc] + bl m4aSongNumStart + ldrh r0, [r5, #0xc] + strh r0, [r5, #0x10] + b _080E8868 +_080E8722: + ldrh r1, [r5, #0xe] + movs r2, #0xe + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _080E8768 + movs r3, #0xa + ldrsh r4, [r5, r3] + cmp r4, #0 + beq _080E8754 + ldr r0, _080E8750 + adds r4, r0, #0 + adds r0, r1, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl m4aSongNumStop + ldrh r1, [r5, #0xa] + adds r4, r4, r1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + b _080E877C + .align 2, 0 +_080E8750: .4byte 0x0000015D +_080E8754: + ldr r2, _080E8764 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl m4aSongNumStop + strh r4, [r5, #0xe] + b _080E8868 + .align 2, 0 +_080E8764: .4byte 0x0000015D +_080E8768: + ldrh r1, [r5, #0xa] + movs r3, #0xa + ldrsh r0, [r5, r3] + cmp r0, #0 + bne _080E8774 + b _080E8868 +_080E8774: + ldr r2, _080E8788 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080E877C: + bl m4aSongNumStart + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + b _080E8868 + .align 2, 0 +_080E8788: .4byte 0x0000015D +_080E878C: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080E87B4 + movs r0, #5 + bl m4aSongNumStart + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _080E87B0 + str r0, [r5] + b _080E8868 + .align 2, 0 +_080E87B0: .4byte sub_080E88A8 +_080E87B4: + ldrh r1, [r6, #0x30] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080E87CE + ldrh r0, [r5, #8] + eors r0, r7 + strh r0, [r5, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080E88E8 + b _080E8868 +_080E87CE: + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _080E880E + movs r3, #8 + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _080E87FC + ldrh r1, [r5, #0xc] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0 + ble _080E87F2 + subs r0, r1, #1 + strh r0, [r5, #0xc] + b _080E8848 +_080E87F2: + ldr r0, _080E87F8 + strh r0, [r5, #0xc] + b _080E8848 + .align 2, 0 +_080E87F8: .4byte 0x0000010D +_080E87FC: + ldrh r1, [r5, #0xa] + movs r3, #0xa + ldrsh r0, [r5, r3] + cmp r0, #0 + ble _080E880A + subs r0, r1, #1 + b _080E8842 +_080E880A: + movs r0, #0xd1 + b _080E8842 +_080E880E: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080E884C + movs r0, #8 + ldrsh r1, [r5, r0] + cmp r1, #0 + beq _080E8836 + ldrh r2, [r5, #0xc] + movs r0, #0xc + ldrsh r1, [r5, r0] + movs r0, #0x86 + lsls r0, r0, #1 + cmp r1, r0 + bgt _080E8832 + adds r0, r2, #1 + strh r0, [r5, #0xc] + b _080E8848 +_080E8832: + strh r3, [r5, #0xc] + b _080E8848 +_080E8836: + ldrh r2, [r5, #0xa] + movs r3, #0xa + ldrsh r0, [r5, r3] + cmp r0, #0xd0 + bgt _080E8846 + adds r0, r2, #1 +_080E8842: + strh r0, [r5, #0xa] + b _080E8848 +_080E8846: + strh r1, [r5, #0xa] +_080E8848: + movs r0, #1 + b _080E886A +_080E884C: + ldrh r1, [r6, #0x2c] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080E8864 + ldr r0, _080E8860 + strb r7, [r0] + b _080E8868 + .align 2, 0 +_080E8860: .4byte gUnknown_2039CBC +_080E8864: + ldr r0, _080E8874 + strb r1, [r0] +_080E8868: + movs r0, #0 +_080E886A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080E8874: .4byte gUnknown_2039CBC + thumb_func_end sub_080E8688 + + thumb_func_start sub_080E8878 +sub_080E8878: @ 0x080E8878 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080E8688 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E8898 + ldr r0, _080E88A0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080E88A4 + str r0, [r1] +_080E8898: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E88A0: .4byte gUnknown_3005B60 +_080E88A4: .4byte sub_080E85F4 + thumb_func_end sub_080E8878 + + thumb_func_start sub_080E88A8 +sub_080E88A8: @ 0x080E88A8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080E88E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E88D8 + movs r4, #0 +_080E88BC: + adds r0, r4, #0 + bl sub_080E9750 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080E88BC + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _080E88E4 + bl sub_08000540 +_080E88D8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E88E0: .4byte gUnknown_2037C74 +_080E88E4: .4byte sub_080AA06C + thumb_func_end sub_080E88A8 + + thumb_func_start sub_080E88E8 +sub_080E88E8: @ 0x080E88E8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080E88F8 + cmp r0, #1 + beq _080E8910 + b _080E8920 +_080E88F8: + movs r0, #0x42 + movs r1, #0xef + bl sub_08001144 + ldr r1, _080E890C + movs r0, #0x46 + bl sub_08001144 + b _080E8920 + .align 2, 0 +_080E890C: .4byte 0x00003868 +_080E8910: + movs r0, #0x42 + movs r1, #0xef + bl sub_08001144 + ldr r1, _080E8924 + movs r0, #0x46 + bl sub_08001144 +_080E8920: + pop {r0} + bx r0 + .align 2, 0 +_080E8924: .4byte 0x000070A0 + thumb_func_end sub_080E88E8 + + thumb_func_start sub_080E8928 +sub_080E8928: @ 0x080E8928 + push {r4, r5, lr} + sub sp, #0xc + adds r2, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _080E8974 + adds r0, r4, #0 + adds r1, r2, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + movs r1, #0 + movs r0, #0xb0 + strb r0, [r4, #3] + movs r0, #0xff + strb r0, [r4, #4] + movs r0, #0xe + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + adds r0, r5, #0 + bl sub_080E9734 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E8974: .4byte gUnknown_2021C40 + thumb_func_end sub_080E8928 + + thumb_func_start sub_080E8978 +sub_080E8978: @ 0x080E8978 + push {r4, lr} + sub sp, #0x1c + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r2, #0 + movs r1, #0 +_080E8986: + mov r0, sp + adds r0, r0, r2 + adds r0, #0xc + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080E8986 + add r0, sp, #0xc + movs r1, #0xff + strb r1, [r0, #0xf] + movs r2, #0 + ldrb r0, [r3] + cmp r0, #0xff + beq _080E89C4 +_080E89A6: + mov r1, sp + adds r1, r1, r2 + adds r1, #0xc + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _080E89C4 + cmp r2, #0xe + bls _080E89A6 +_080E89C4: + movs r0, #0xe + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x28 + bl sub_0800449C + adds r0, r4, #0 + bl sub_080E9734 + add sp, #0x1c + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E8978 + + thumb_func_start sub_080E89EC +sub_080E89EC: @ 0x080E89EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E8A10 + adds r5, r1, r0 + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080E8A48 + cmp r0, #1 + bgt _080E8A14 + cmp r0, #0 + beq _080E8A1A + b _080E8A94 + .align 2, 0 +_080E8A10: .4byte gUnknown_3005B60 +_080E8A14: + cmp r0, #2 + beq _080E8A70 + b _080E8A94 +_080E8A1A: + movs r4, #0 +_080E8A1C: + adds r0, r4, #0 + bl sub_080E9750 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080E8A1C + bl sub_080034D4 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080E8A44 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + b _080E8A62 + .align 2, 0 +_080E8A44: .4byte gUnknown_8566D08 +_080E8A48: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E8A94 + ldr r0, _080E8A6C + bl sub_08003090 + movs r0, #0 + movs r1, #1 + bl sub_08197638 +_080E8A62: + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] + b _080E8A94 + .align 2, 0 +_080E8A6C: .4byte gUnknown_8566D64 +_080E8A70: + movs r0, #0 + bl sub_08001B48 + movs r1, #0xc5 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r1, #0x24 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _080E8A90 + ldr r0, _080E8A8C + b _080E8A92 + .align 2, 0 +_080E8A8C: .4byte sub_080E91E4 +_080E8A90: + ldr r0, _080E8A9C +_080E8A92: + str r0, [r5] +_080E8A94: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E8A9C: .4byte sub_080E8AA0 + thumb_func_end sub_080E89EC + + thumb_func_start sub_080E8AA0 +sub_080E8AA0: @ 0x080E8AA0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xdc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xb4] + ldr r1, _080E8D10 + add r0, sp, #0xc + movs r2, #0xa + bl memcpy + add r7, sp, #0x18 + ldr r1, _080E8D14 + adds r0, r7, #0 + movs r2, #0xb + bl memcpy + mov r0, sp + adds r0, #0x24 + str r0, [sp, #0xb8] + ldr r1, _080E8D18 + movs r2, #0xa + bl memcpy + mov r2, sp + adds r2, #0x30 + str r2, [sp, #0xbc] + ldr r1, _080E8D1C + adds r0, r2, #0 + movs r2, #0xa + bl memcpy + mov r0, sp + adds r0, #0x3c + str r0, [sp, #0xc0] + ldr r1, _080E8D20 + movs r2, #0xa + bl memcpy + mov r2, sp + adds r2, #0x48 + str r2, [sp, #0xc4] + ldr r1, _080E8D24 + adds r0, r2, #0 + movs r2, #0xa + bl memcpy + mov r0, sp + adds r0, #0x54 + str r0, [sp, #0xc8] + ldr r1, _080E8D28 + movs r2, #0xa + bl memcpy + mov r2, sp + adds r2, #0x60 + str r2, [sp, #0xcc] + ldr r1, _080E8D2C + adds r0, r2, #0 + movs r2, #0xa + bl memcpy + mov r0, sp + adds r0, #0x6c + str r0, [sp, #0xd0] + ldr r1, _080E8D30 + movs r2, #0xa + bl memcpy + mov r2, sp + adds r2, #0x78 + str r2, [sp, #0xd4] + ldr r1, _080E8D34 + adds r0, r2, #0 + movs r2, #0xa + bl memcpy + mov r0, sp + adds r0, #0x84 + str r0, [sp, #0xd8] + ldr r1, _080E8D38 + movs r2, #0xa + bl memcpy + add r6, sp, #0x90 + ldr r1, _080E8D3C + adds r0, r6, #0 + movs r2, #9 + bl memcpy + add r2, sp, #0x9c + mov r8, r2 + ldr r1, _080E8D40 + mov r0, r8 + movs r2, #9 + bl memcpy + add r0, sp, #0xa8 + mov sl, r0 + ldr r1, _080E8D44 + movs r2, #9 + bl memcpy + movs r0, #0 + movs r1, #0 + bl sub_08197638 + movs r2, #0x10 + str r2, [sp] + movs r5, #0xff + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x88 + bl sub_0800449C + movs r0, #0x20 + mov sb, r0 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r7, #0 + movs r3, #0x88 + bl sub_0800449C + movs r2, #0x50 + str r2, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x88 + bl sub_0800449C + movs r7, #0x60 + str r7, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + mov r2, r8 + movs r3, #0x88 + bl sub_0800449C + movs r6, #0x70 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + mov r2, sl + movs r3, #0x88 + bl sub_0800449C + str r4, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xb8] + movs r3, #8 + bl sub_0800449C + movs r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xbc] + movs r3, #8 + bl sub_0800449C + mov r2, sb + str r2, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xc0] + movs r3, #8 + bl sub_0800449C + movs r0, #0x30 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xc4] + movs r3, #8 + bl sub_0800449C + movs r0, #0x40 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xc8] + movs r3, #8 + bl sub_0800449C + movs r0, #0x50 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xcc] + movs r3, #8 + bl sub_0800449C + str r7, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xd0] + movs r3, #8 + bl sub_0800449C + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xd4] + movs r3, #8 + bl sub_0800449C + movs r0, #0x80 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + ldr r2, [sp, #0xd8] + movs r3, #8 + bl sub_0800449C + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001144 + ldr r0, _080E8D48 + strb r4, [r0] + ldr r0, _080E8D4C + strb r4, [r0] + ldr r0, _080E8D50 + str r4, [r0] + ldr r0, _080E8D54 + strb r4, [r0] + ldr r1, _080E8D58 + movs r0, #1 + strb r0, [r1] + ldr r0, _080E8D5C + str r4, [r0] + movs r1, #0x78 + str r1, [r0, #4] + str r4, [r0, #8] + movs r1, #0xf0 + lsls r1, r1, #6 + str r1, [r0, #0xc] + movs r1, #0xb4 + str r1, [r0, #0x10] + str r4, [r0, #0x18] + str r4, [r0, #0x14] + str r4, [r0, #0x1c] + movs r1, #2 + str r1, [r0, #0x20] + bl sub_080E900C + movs r0, #9 + str r0, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_081984F0 + ldr r1, _080E8D60 + ldr r2, [sp, #0xb4] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080E8D64 + str r1, [r0] + add sp, #0xdc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E8D10: .4byte gUnknown_8566D74 +_080E8D14: .4byte gUnknown_8566D7E +_080E8D18: .4byte gUnknown_8566D89 +_080E8D1C: .4byte gUnknown_8566D93 +_080E8D20: .4byte gUnknown_8566D9D +_080E8D24: .4byte gUnknown_8566DA7 +_080E8D28: .4byte gUnknown_8566DB1 +_080E8D2C: .4byte gUnknown_8566DBB +_080E8D30: .4byte gUnknown_8566DC5 +_080E8D34: .4byte gUnknown_8566DCF +_080E8D38: .4byte gUnknown_8566DD9 +_080E8D3C: .4byte gUnknown_8566DE3 +_080E8D40: .4byte gUnknown_8566DEC +_080E8D44: .4byte gUnknown_8566DF5 +_080E8D48: .4byte gUnknown_2039CBD +_080E8D4C: .4byte gUnknown_2039CBE +_080E8D50: .4byte gUnknown_3005E1C +_080E8D54: .4byte gUnknown_2039CE4 +_080E8D58: .4byte gUnknown_2039CE5 +_080E8D5C: .4byte gUnknown_2039CC0 +_080E8D60: .4byte gUnknown_3005B60 +_080E8D64: .4byte sub_080E8D68 + thumb_func_end sub_080E8AA0 + + thumb_func_start sub_080E8D68 +sub_080E8D68: @ 0x080E8D68 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080E8D90 + ldrh r3, [r1, #0x2e] + movs r0, #2 + ands r0, r3 + cmp r0, #0 + beq _080E8D9C + ldr r1, _080E8D94 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x26] + ldr r1, _080E8D98 + str r1, [r0] + b _080E8F8E + .align 2, 0 +_080E8D90: .4byte gUnknown_3002360 +_080E8D94: .4byte gUnknown_3005B60 +_080E8D98: .4byte sub_080E9410 +_080E8D9C: + ldrh r1, [r1, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080E8DB0 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819862C + b _080E8F8E +_080E8DB0: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080E8DC0 + movs r0, #1 + bl sub_0819862C + b _080E8F8E +_080E8DC0: + movs r0, #8 + ands r0, r3 + cmp r0, #0 + beq _080E8DDC + ldr r0, _080E8DD8 + ldrb r1, [r0] + movs r2, #1 + eors r1, r2 + strb r1, [r0] + bl sub_080E900C + b _080E8F8E + .align 2, 0 +_080E8DD8: .4byte gUnknown_2039CE4 +_080E8DDC: + movs r0, #4 + ands r0, r3 + cmp r0, #0 + beq _080E8E00 + ldr r4, _080E8DFC + ldrb r0, [r4] + movs r1, #1 + eors r0, r1 + strb r0, [r4] + bl sub_080E900C + ldrb r0, [r4] + bl SetPokemonCryStereo + b _080E8F8E + .align 2, 0 +_080E8DFC: .4byte gUnknown_2039CE5 +_080E8E00: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080E8E0E + movs r0, #0xa + b _080E8E36 +_080E8E0E: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080E8E1E + movs r0, #0xa + rsbs r0, r0, #0 + b _080E8E36 +_080E8E1E: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080E8E2C + movs r0, #1 + rsbs r0, r0, #0 + b _080E8E36 +_080E8E2C: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E8E40 + movs r0, #1 +_080E8E36: + bl sub_080E8FA4 + bl sub_080E900C + b _080E8F8E +_080E8E40: + movs r0, #1 + ands r0, r3 + cmp r0, #0 + bne _080E8E4A + b _080E8F6A +_080E8E4A: + ldr r4, _080E8EAC + ldrb r0, [r4, #4] + bl SetPokemonCryVolume + movs r0, #8 + ldrsb r0, [r4, r0] + bl SetPokemonCryPanpot + movs r1, #0xc + ldrsh r0, [r4, r1] + bl SetPokemonCryPitch + ldrh r0, [r4, #0x10] + bl SetPokemonCryLength + ldr r0, [r4, #0x18] + bl SetPokemonCryProgress + ldrb r0, [r4, #0x14] + bl SetPokemonCryRelease + movs r0, #0x1c + ldrsb r0, [r4, r0] + bl SetPokemonCryChorus + ldr r0, [r4, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl SetPokemonCryPriority + ldr r4, [r4] + adds r0, r4, #0 + cmp r4, #0 + bge _080E8E90 + adds r0, #0x7f +_080E8E90: + asrs r2, r0, #7 + lsls r0, r2, #7 + subs r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E8EE4 + cmp r0, #1 + bgt _080E8EB0 + cmp r0, #0 + beq _080E8EBA + b _080E8F6A + .align 2, 0 +_080E8EAC: .4byte gUnknown_2039CC0 +_080E8EB0: + cmp r0, #2 + beq _080E8F10 + cmp r0, #3 + beq _080E8F3C + b _080E8F6A +_080E8EBA: + ldr r0, _080E8ECC + ldrb r0, [r0] + cmp r0, #0 + beq _080E8ED4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8ED0 + b _080E8F60 + .align 2, 0 +_080E8ECC: .4byte gUnknown_2039CE4 +_080E8ED0: .4byte gUnknown_8626A44 +_080E8ED4: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8EE0 + b _080E8F60 + .align 2, 0 +_080E8EE0: .4byte gUnknown_8625814 +_080E8EE4: + ldr r0, _080E8EF8 + ldrb r0, [r0] + cmp r0, #0 + beq _080E8F00 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8EFC + b _080E8F60 + .align 2, 0 +_080E8EF8: .4byte gUnknown_2039CE4 +_080E8EFC: .4byte gUnknown_8627044 +_080E8F00: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8F0C + b _080E8F60 + .align 2, 0 +_080E8F0C: .4byte gUnknown_8625E14 +_080E8F10: + ldr r0, _080E8F24 + ldrb r0, [r0] + cmp r0, #0 + beq _080E8F2C + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8F28 + b _080E8F60 + .align 2, 0 +_080E8F24: .4byte gUnknown_2039CE4 +_080E8F28: .4byte gUnknown_8627644 +_080E8F2C: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8F38 + b _080E8F60 + .align 2, 0 +_080E8F38: .4byte gUnknown_8626414 +_080E8F3C: + ldr r0, _080E8F50 + ldrb r0, [r0] + cmp r0, #0 + beq _080E8F58 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8F54 + b _080E8F60 + .align 2, 0 +_080E8F50: .4byte gUnknown_2039CE4 +_080E8F54: .4byte gUnknown_8627C44 +_080E8F58: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E8F94 +_080E8F60: + adds r0, r0, r1 + bl SetPokemonCryTone + ldr r1, _080E8F98 + str r0, [r1] +_080E8F6A: + ldr r0, _080E8F98 + ldr r0, [r0] + cmp r0, #0 + beq _080E8F8E + ldr r5, _080E8F9C + bl IsPokemonCryPlaying + strb r0, [r5] + ldr r4, _080E8FA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + cmp r0, r1 + beq _080E8F8A + bl sub_080E900C +_080E8F8A: + ldrb r0, [r5] + strb r0, [r4] +_080E8F8E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E8F94: .4byte gUnknown_8626A14 +_080E8F98: .4byte gUnknown_3005E1C +_080E8F9C: .4byte gUnknown_2039CBD +_080E8FA0: .4byte gUnknown_2039CBE + thumb_func_end sub_080E8D68 + + thumb_func_start sub_080E8FA4 +sub_080E8FA4: @ 0x080E8FA4 + push {r4, r5, r6, lr} + sub sp, #0x40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _080E9004 + mov r0, sp + movs r2, #0x40 + bl memcpy + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + ldr r1, _080E9008 + lsls r0, r2, #2 + adds r3, r0, r1 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + ldr r1, [r3] + adds r1, r1, r4 + str r1, [r3] + lsls r0, r2, #1 + adds r0, #1 + lsls r0, r0, #2 + mov r6, sp + adds r4, r6, r0 + ldr r0, [r4] + cmp r1, r0 + ble _080E8FEA + lsls r0, r2, #3 + add r0, sp + ldr r0, [r0] + str r0, [r3] +_080E8FEA: + lsls r0, r5, #3 + add r0, sp + ldr r1, [r3] + ldr r0, [r0] + cmp r1, r0 + bge _080E8FFA + ldr r0, [r4] + str r0, [r3] +_080E8FFA: + add sp, #0x40 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9004: .4byte gUnknown_8566E00 +_080E9008: .4byte gUnknown_2039CC0 + thumb_func_end sub_080E8FA4 + + thumb_func_start sub_080E900C +sub_080E900C: @ 0x080E900C + push {r4, lr} + ldr r4, _080E90B0 + ldr r0, [r4] + adds r0, #1 + movs r1, #0x50 + movs r2, #0 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #4] + movs r1, #0x50 + movs r2, #0x10 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #8] + movs r1, #0x50 + movs r2, #0x20 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0xc] + movs r1, #0x50 + movs r2, #0x30 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0x10] + movs r1, #0x50 + movs r2, #0x40 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0x14] + movs r1, #0x50 + movs r2, #0x50 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0x18] + movs r1, #0x50 + movs r2, #0x60 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0x1c] + movs r1, #0x50 + movs r2, #0x70 + movs r3, #5 + bl sub_080E90C0 + ldr r0, [r4, #0x20] + movs r1, #0x50 + movs r2, #0x80 + movs r3, #5 + bl sub_080E90C0 + ldr r0, _080E90B4 + ldrb r0, [r0] + movs r1, #0xc8 + movs r2, #0x50 + movs r3, #1 + bl sub_080E90C0 + ldr r0, _080E90B8 + ldrb r0, [r0] + movs r1, #0xc8 + movs r2, #0x60 + movs r3, #1 + bl sub_080E90C0 + ldr r0, _080E90BC + ldrb r0, [r0] + movs r1, #0xc8 + movs r2, #0x70 + movs r3, #1 + bl sub_080E90C0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E90B0: .4byte gUnknown_2039CC0 +_080E90B4: .4byte gUnknown_2039CBD +_080E90B8: .4byte gUnknown_2039CE4 +_080E90BC: .4byte gUnknown_2039CE5 + thumb_func_end sub_080E900C + + thumb_func_start sub_080E90C0 +sub_080E90C0: @ 0x080E90C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + add r1, sp, #0xc + ldr r0, _080E91E0 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + movs r5, #0 + add r0, sp, #0x24 + mov sb, r0 + cmp r5, r7 + bgt _080E9108 + mov r4, sb + movs r3, #0 +_080E90F4: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + adds r1, r4, r0 + strb r3, [r1] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r7 + ble _080E90F4 +_080E9108: + adds r0, r7, #1 + add r0, sb + movs r1, #0xff + strb r1, [r0] + movs r1, #0 + mov r3, r8 + cmp r3, #0 + bge _080E911E + rsbs r3, r3, #0 + mov r8, r3 + movs r1, #1 +_080E911E: + movs r4, #0 + mov sl, r4 + cmp r7, #1 + bne _080E912A + movs r5, #1 + mov sl, r5 +_080E912A: + subs r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #0x18 + lsls r6, r6, #0x18 + str r6, [sp, #0x30] + lsls r2, r2, #0x18 + str r2, [sp, #0x34] + cmp r0, #0 + blt _080E91AE + str r1, [sp, #0x2c] +_080E9140: + asrs r6, r0, #0x18 + lsls r0, r6, #2 + add r0, sp + adds r0, #0xc + ldr r1, [r0] + mov r0, r8 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r0, #0 + bne _080E9164 + mov r0, sl + cmp r0, #0 + bne _080E9164 + lsls r4, r5, #0x18 + cmp r6, #0 + bne _080E9190 +_080E9164: + lsls r4, r5, #0x18 + ldr r1, [sp, #0x2c] + cmp r1, #0 + beq _080E917E + mov r3, sl + cmp r3, #0 + bne _080E917E + asrs r0, r4, #0x18 + subs r0, r7, r0 + subs r0, #1 + add r0, sb + movs r1, #0xae + strb r1, [r0] +_080E917E: + asrs r1, r4, #0x18 + subs r1, r7, r1 + add r1, sb + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + subs r0, #0x5f + strb r0, [r1] + movs r5, #1 + mov sl, r5 +_080E9190: + asrs r4, r4, #0x18 + lsls r0, r4, #2 + add r0, sp + adds r0, #0xc + ldr r1, [r0] + mov r0, r8 + bl __modsi3 + mov r8, r0 + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r5, r4, #0x18 + lsls r0, r5, #0x18 + cmp r0, #0 + bge _080E9140 +_080E91AE: + ldr r0, [sp, #0x30] + lsrs r3, r0, #0x18 + ldr r1, [sp, #0x34] + lsrs r0, r1, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + mov r2, sb + bl sub_0800449C + movs r0, #0 + bl sub_080E9734 + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E91E0: .4byte gUnknown_8566E40 + thumb_func_end sub_080E90C0 + + thumb_func_start sub_080E91E4 +sub_080E91E4: @ 0x080E91E4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _080E9270 + add r0, sp, #0xc + movs r2, #3 + bl memcpy + add r0, sp, #0x10 + mov r8, r0 + ldr r1, _080E9274 + movs r2, #4 + bl memcpy + movs r0, #0xe + str r0, [sp] + movs r6, #0xff + str r6, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0xa + bl sub_0800449C + movs r0, #0x1c + str r0, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + mov r2, r8 + movs r3, #0xa + bl sub_0800449C + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001144 + ldr r0, _080E9278 + movs r1, #1 + str r1, [r0] + str r4, [r0, #8] + str r4, [r0, #0x1c] + str r4, [r0, #0x18] + str r4, [r0, #0x14] + bl sub_080E94B8 + ldr r1, _080E927C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080E9280 + str r1, [r0] + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9270: .4byte gUnknown_8566E5D +_080E9274: .4byte gUnknown_8566E60 +_080E9278: .4byte gUnknown_2039CC0 +_080E927C: .4byte gUnknown_3005B60 +_080E9280: .4byte sub_080E9284 + thumb_func_end sub_080E91E4 + + thumb_func_start sub_080E9284 +sub_080E9284: @ 0x080E9284 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _080E92A0 + ldr r0, [r2, #0x18] + cmp r0, #0 + beq _080E92EA + ldr r0, [r2, #0x14] + cmp r0, #0 + beq _080E92A4 + subs r0, #1 + str r0, [r2, #0x14] + b _080E92EA + .align 2, 0 +_080E92A0: .4byte gUnknown_2039CC0 +_080E92A4: + ldr r0, _080E92D0 + ldr r1, [r2, #8] + adds r1, r1, r0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E92D4 + cmp r1, #0x7f + bne _080E92EA + ldr r0, [r2, #0x1c] + adds r0, #2 + str r0, [r2, #0x1c] + cmp r0, #0x3e + bgt _080E92EA + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A3138 + b _080E92EA + .align 2, 0 +_080E92D0: .4byte gUnknown_8566E58 +_080E92D4: + ldr r0, [r2, #0x1c] + subs r1, r0, #2 + str r1, [r2, #0x1c] + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r1, r0 + ble _080E92EA + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + bl sub_080A3138 +_080E92EA: + ldr r0, _080E9310 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _080E931C + ldr r1, _080E9314 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x26] + ldr r1, _080E9318 + str r1, [r0] + b _080E9400 + .align 2, 0 +_080E9310: .4byte gUnknown_3002360 +_080E9314: .4byte gUnknown_3005B60 +_080E9318: .4byte sub_080E9410 +_080E931C: + movs r6, #1 + adds r2, r6, #0 + ands r2, r1 + cmp r2, #0 + beq _080E9376 + ldr r0, _080E9350 + ldr r5, _080E9354 + ldr r1, [r5, #8] + adds r1, r1, r0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E9358 + cmp r1, #0x7f + bne _080E936C + ldrh r0, [r5] + movs r4, #0x40 + rsbs r4, r4, #0 + adds r1, r4, #0 + bl sub_080A307C + str r4, [r5, #0x1c] + b _080E9364 + .align 2, 0 +_080E9350: .4byte gUnknown_8566E58 +_080E9354: .4byte gUnknown_2039CC0 +_080E9358: + ldrh r0, [r5] + movs r1, #0x3f + bl sub_080A307C + movs r0, #0x3f + str r0, [r5, #0x1c] +_080E9364: + str r6, [r5, #0x18] + movs r0, #0x1e + str r0, [r5, #0x14] + b _080E93D2 +_080E936C: + ldrh r0, [r5] + bl sub_080A307C + str r4, [r5, #0x18] + b _080E93D2 +_080E9376: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080E9392 + ldr r1, _080E93D8 + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] + cmp r0, #4 + ble _080E938E + str r2, [r1, #8] +_080E938E: + bl sub_080E94B8 +_080E9392: + ldr r0, _080E93DC + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080E93B4 + ldr r1, _080E93D8 + ldr r0, [r1, #8] + subs r0, #1 + str r0, [r1, #8] + cmp r0, #0 + bge _080E93B0 + movs r0, #4 + str r0, [r1, #8] +_080E93B0: + bl sub_080E94B8 +_080E93B4: + ldr r0, _080E93DC + ldrh r1, [r0, #0x30] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080E93E4 + ldr r2, _080E93D8 + ldr r0, [r2] + adds r0, #1 + str r0, [r2] + ldr r1, _080E93E0 + cmp r0, r1 + ble _080E93D2 + movs r0, #0 + str r0, [r2] +_080E93D2: + bl sub_080E94B8 + b _080E9400 + .align 2, 0 +_080E93D8: .4byte gUnknown_2039CC0 +_080E93DC: .4byte gUnknown_3002360 +_080E93E0: .4byte 0x0000010D +_080E93E4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080E9400 + ldr r1, _080E9408 + ldr r0, [r1] + subs r0, #1 + str r0, [r1] + cmp r0, #0 + bge _080E93FC + ldr r0, _080E940C + str r0, [r1] +_080E93FC: + bl sub_080E94B8 +_080E9400: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9408: .4byte gUnknown_2039CC0 +_080E940C: .4byte 0x0000010D + thumb_func_end sub_080E9284 + + thumb_func_start sub_080E9410 +sub_080E9410: @ 0x080E9410 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080E9434 + adds r4, r1, r0 + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080E9460 + cmp r0, #1 + bgt _080E9438 + cmp r0, #0 + beq _080E943E + b _080E94A2 + .align 2, 0 +_080E9434: .4byte gUnknown_3005B60 +_080E9438: + cmp r0, #2 + beq _080E9480 + b _080E94A2 +_080E943E: + movs r0, #0 + bl sub_080E9750 + bl sub_080034D4 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080E945C + movs r0, #0 + movs r2, #1 + bl sub_08001800 + b _080E9472 + .align 2, 0 +_080E945C: .4byte gUnknown_8566D08 +_080E9460: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080E94A2 + ldr r0, _080E947C + bl sub_08003090 +_080E9472: + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + b _080E94A2 + .align 2, 0 +_080E947C: .4byte gUnknown_8566D0C +_080E9480: + movs r0, #0 + bl sub_08001B48 + ldr r1, _080E94A8 + movs r0, #0 + bl sub_08001144 + ldr r1, _080E94AC + movs r0, #0x40 + bl sub_08001144 + ldr r1, _080E94B0 + movs r0, #0x44 + bl sub_08001144 + ldr r0, _080E94B4 + str r0, [r4] +_080E94A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E94A8: .4byte 0x00007140 +_080E94AC: .4byte 0x000011DF +_080E94B0: .4byte 0x0000011F +_080E94B4: .4byte sub_080E84A4 + thumb_func_end sub_080E9410 + + thumb_func_start sub_080E94B8 +sub_080E94B8: @ 0x080E94B8 + push {r4, r5, lr} + sub sp, #0x1c + ldr r1, _080E951C + add r0, sp, #0xc + movs r2, #5 + bl memcpy + add r5, sp, #0x14 + ldr r1, _080E9520 + adds r0, r5, #0 + movs r2, #5 + bl memcpy + movs r0, #0x28 + str r0, [sp] + movs r0, #0xe + str r0, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x64 + movs r3, #0x1c + bl sub_08003A34 + ldr r4, _080E9524 + ldr r0, [r4] + movs r1, #0x64 + movs r2, #0xe + movs r3, #3 + bl sub_080E90C0 + ldr r1, _080E9528 + ldr r0, [r4, #8] + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080E952C + cmp r1, #0x7f + bne _080E954A + movs r0, #0x1c + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + add r2, sp, #0xc + b _080E953C + .align 2, 0 +_080E951C: .4byte gUnknown_8566E64 +_080E9520: .4byte gUnknown_8566E69 +_080E9524: .4byte gUnknown_2039CC0 +_080E9528: .4byte gUnknown_8566E58 +_080E952C: + movs r0, #0x1c + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + adds r2, r5, #0 +_080E953C: + movs r3, #0x64 + bl sub_0800449C + movs r0, #0 + bl sub_080E9734 + b _080E9556 +_080E954A: + adds r0, r1, #0 + movs r1, #0x64 + movs r2, #0x1c + movs r3, #3 + bl sub_080E90C0 +_080E9556: + add sp, #0x1c + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E94B8 + + thumb_func_start sub_080E9560 +sub_080E9560: @ 0x080E9560 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #4 + mov r8, r0 + mov r2, sp + movs r6, #0 + ldr r1, _080E96A0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _080E96A4 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_080E9586: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _080E9586 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _080E96A0 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E96A0: .4byte 0x040000D4 +_080E96A4: .4byte 0x81000800 + thumb_func_end sub_080E9560 + + thumb_func_start sub_080E96A8 +sub_080E96A8: @ 0x080E96A8 + push {lr} + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_0818CCF8 + bl sub_080A133C + bl sub_08008424 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E96A8 + + thumb_func_start sub_080E96C8 +sub_080E96C8: @ 0x080E96C8 + push {lr} + ldr r1, _080E96D8 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_080E96D8: .4byte 0x00007140 + thumb_func_end sub_080E96C8 + + thumb_func_start sub_080E96DC +sub_080E96DC: @ 0x080E96DC + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E96DC + + thumb_func_start sub_080E9734 +sub_080E9734: @ 0x080E9734 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080E9734 + + thumb_func_start sub_080E9750 +sub_080E9750: @ 0x080E9750 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_08003774 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080E9750 + + thumb_func_start sub_080E977C +sub_080E977C: @ 0x080E977C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #0 + str r0, [sp] + ldr r2, _080E97B0 + mov r0, sp + adds r1, r4, #0 + bl CpuFastSet + movs r2, #0 + adds r4, #2 + movs r3, #0xff +_080E9796: + adds r0, r4, r2 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #6 + bls _080E9796 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E97B0: .4byte 0x01000028 + thumb_func_end sub_080E977C + + thumb_func_start sub_080E97B4 +sub_080E97B4: @ 0x080E97B4 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080E97DC +_080E97BA: + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #5 + ldr r0, _080E97E0 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r1 + bl sub_080E977C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080E97BA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080E97DC: .4byte gUnknown_3005AEC +_080E97E0: .4byte 0x00001A9C + thumb_func_end sub_080E97B4 + + thumb_func_start sub_080E97E4 +sub_080E97E4: @ 0x080E97E4 + ldr r0, _080E97F0 + ldr r1, _080E97F4 + ldrh r1, [r1] + strb r1, [r0] + bx lr + .align 2, 0 +_080E97F0: .4byte gUnknown_2039CE8 +_080E97F4: .4byte gUnknown_2037280 + thumb_func_end sub_080E97E4 + + thumb_func_start sub_080E97F8 +sub_080E97F8: @ 0x080E97F8 + push {r4, lr} + ldr r0, _080E9808 + movs r1, #0 + strh r1, [r0] + movs r3, #0 + adds r4, r0, #0 + b _080E9812 + .align 2, 0 +_080E9808: .4byte gUnknown_2037290 +_080E980C: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_080E9812: + cmp r3, #0x13 + bhi _080E983C + ldr r2, _080E9844 + ldr r0, _080E9848 + ldr r1, [r0] + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _080E984C + adds r1, r1, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _080E980C + movs r0, #1 + strh r0, [r4] + ldr r0, _080E9850 + adds r1, r3, #0 + bl sub_0809CF88 +_080E983C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E9844: .4byte gUnknown_2039CE8 +_080E9848: .4byte gUnknown_3005AEC +_080E984C: .4byte 0x00001A9C +_080E9850: .4byte 0x00004054 + thumb_func_end sub_080E97F8 + + thumb_func_start sub_080E9854 +sub_080E9854: @ 0x080E9854 + push {lr} + ldr r0, _080E986C + ldr r0, [r0] + ldr r1, _080E9870 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0 + beq _080E9878 + ldr r1, _080E9874 + movs r0, #1 + strh r0, [r1] + b _080E987C + .align 2, 0 +_080E986C: .4byte gUnknown_3005AEC +_080E9870: .4byte 0x00001A9C +_080E9874: .4byte gUnknown_2037290 +_080E9878: + ldr r0, _080E9880 + strh r1, [r0] +_080E987C: + pop {r0} + bx r0 + .align 2, 0 +_080E9880: .4byte gUnknown_2037290 + thumb_func_end sub_080E9854 + + thumb_func_start sub_080E9884 +sub_080E9884: @ 0x080E9884 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + adds r1, r0, #0 + ldr r2, _080E98BC + adds r0, r2, #0 + ands r1, r0 + adds r0, r1, #0 + subs r0, #0x90 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080E98C0 + movs r0, #1 + b _080E991A + .align 2, 0 +_080E98BC: .4byte 0x00000FFF +_080E98C0: + adds r0, r1, #0 + subs r0, #0x92 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080E98D0 + movs r0, #2 + b _080E991A +_080E98D0: + adds r0, r1, #0 + subs r0, #0x9a + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080E98E0 + movs r0, #3 + b _080E991A +_080E98E0: + adds r0, r1, #0 + subs r0, #0x94 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080E98F0 + movs r0, #4 + b _080E991A +_080E98F0: + adds r0, r1, #0 + subs r0, #0x96 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080E9904 + cmp r1, #0x9c + beq _080E9904 + cmp r1, #0x9d + bne _080E9908 +_080E9904: + movs r0, #5 + b _080E991A +_080E9908: + adds r0, r1, #0 + subs r0, #0x98 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080E9918 + movs r0, #0 + b _080E991A +_080E9918: + movs r0, #6 +_080E991A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E9884 + + thumb_func_start sub_080E9924 +sub_080E9924: @ 0x080E9924 + push {r4, lr} + ldr r4, _080E9938 + bl sub_080E9884 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E9938: .4byte gUnknown_2037286 + thumb_func_end sub_080E9924 + + thumb_func_start sub_080E993C +sub_080E993C: @ 0x080E993C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sl, r2 + ldr r0, _080E99A0 + ldr r0, [r0] + mov r8, r0 + movs r0, #0 + mov ip, r0 + mov r1, r8 + ldr r0, [r1, #4] + cmp ip, r0 + bge _080E99C8 + ldr r4, [r1] +_080E9966: + movs r2, #0 + mov r0, ip + lsls r7, r0, #0x10 + cmp r2, r4 + bge _080E99B4 + asrs r0, r7, #0x10 + adds r6, r0, #0 + muls r6, r4, r6 + mov r1, r8 + ldr r5, [r1, #0xc] + ldr r0, _080E99A4 + mov sb, r0 +_080E997E: + lsls r0, r2, #0x10 + asrs r3, r0, #0x10 + adds r0, r6, r3 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + mov r0, sb + ands r0, r1 + cmp r0, sl + bne _080E99A8 + ldr r1, [sp] + strh r2, [r1] + mov r0, ip + ldr r2, [sp, #4] + strh r0, [r2] + b _080E99C8 + .align 2, 0 +_080E99A0: .4byte gUnknown_2036FB8 +_080E99A4: .4byte 0x000003FF +_080E99A8: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r4 + blt _080E997E +_080E99B4: + movs r2, #0x80 + lsls r2, r2, #9 + adds r1, r7, r2 + lsrs r0, r1, #0x10 + mov ip, r0 + asrs r1, r1, #0x10 + mov r2, r8 + ldr r0, [r2, #4] + cmp r1, r0 + blt _080E9966 +_080E99C8: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E993C + + thumb_func_start sub_080E99D8 +sub_080E99D8: @ 0x080E99D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + movs r5, #0 + mov ip, r4 + lsls r0, r0, #0x10 + asrs r3, r0, #0x10 + ldr r1, _080E9A24 + mov r8, r1 + adds r7, r0, #0 + mov r4, sp + mov r6, ip +_080E9A0C: + ldr r0, _080E9A24 + lsls r1, r5, #2 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, r3 + bne _080E9A28 + movs r3, #0 + ldrsh r0, [r4, r3] + movs r5, #0 + ldrsh r1, [r6, r5] + ldrh r3, [r2, #2] + b _080E9A50 + .align 2, 0 +_080E9A24: .4byte gUnknown_8568A78 +_080E9A28: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #6 + bls _080E9A0C + movs r5, #0 + mov r4, sp + mov r6, ip +_080E9A38: + lsls r0, r5, #2 + mov r1, r8 + adds r3, r0, r1 + ldrh r1, [r3, #2] + asrs r0, r7, #0x10 + cmp r1, r0 + bne _080E9A6A + movs r2, #0 + ldrsh r0, [r4, r2] + movs r5, #0 + ldrsh r1, [r6, r5] + ldrh r3, [r3] +_080E9A50: + movs r5, #0xc0 + lsls r5, r5, #4 + adds r2, r5, #0 + orrs r2, r3 + bl sub_08087C54 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08089804 + b _080E9A74 +_080E9A6A: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #6 + bls _080E9A38 +_080E9A74: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E99D8 + + thumb_func_start sub_080E9A80 +sub_080E9A80: @ 0x080E9A80 + push {lr} + adds r2, r0, #0 + movs r1, #0 +_080E9A86: + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _080E9A92 + adds r0, r1, #0 + b _080E9A9E +_080E9A92: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #6 + bls _080E9A86 + movs r0, #7 +_080E9A9E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E9A80 + + thumb_func_start sub_080E9AA4 +sub_080E9AA4: @ 0x080E9AA4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r2, _080E9B40 + ldr r0, [r2] + ldr r1, _080E9B44 + ldrb r1, [r1] + ldr r3, _080E9B48 + adds r0, r0, r3 + strb r1, [r0] + movs r3, #0 + ldr r5, _080E9B4C + ldr r4, _080E9B50 +_080E9ABE: + ldr r1, [r2] + adds r1, r1, r5 + adds r1, r1, r3 + ldr r0, [r4] + adds r0, #0xa + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _080E9ABE + ldr r0, _080E9B54 + movs r1, #0 + bl sub_0809CF88 + ldr r6, _080E9B40 + ldr r4, [r6] + ldr r0, _080E9B58 + adds r4, r4, r0 + ldr r1, _080E9B50 + mov r8, r1 + ldr r5, [r1] + adds r0, r5, #0 + bl sub_080E9A80 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080088F0 + ldr r3, [r6] + mov r1, r8 + ldr r0, [r1] + ldrb r0, [r0, #8] + ldr r1, _080E9B5C + adds r3, r3, r1 + movs r4, #1 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #4 + ldrb r2, [r3] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldr r0, [r6] + ldr r3, _080E9B60 + adds r0, r0, r3 + strb r4, [r0] + ldr r0, _080E9B64 + ldr r1, _080E9B68 + ldrb r1, [r1, #0x14] + bl sub_0809CF88 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9B40: .4byte gUnknown_3005AEC +_080E9B44: .4byte gUnknown_2039CE8 +_080E9B48: .4byte 0x00001A9C +_080E9B4C: .4byte 0x00001AA5 +_080E9B50: .4byte gUnknown_3005AF0 +_080E9B54: .4byte 0x00004054 +_080E9B58: .4byte 0x00001A9E +_080E9B5C: .4byte 0x00001A9D +_080E9B60: .4byte 0x00001AA9 +_080E9B64: .4byte 0x00004026 +_080E9B68: .4byte gUnknown_2036FB8 + thumb_func_end sub_080E9AA4 + + thumb_func_start sub_080E9B6C +sub_080E9B6C: @ 0x080E9B6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + movs r5, #0 + b _080E9C16 +_080E9B7A: + mov r0, r8 + ldr r1, [r0, #0x10] + lsls r2, r5, #1 + adds r0, r2, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + adds r6, r1, #0 + adds r1, r5, #1 + mov sb, r1 + cmp r0, #8 + bne _080E9C0E + movs r4, #0 + ldr r7, _080E9BEC +_080E9B96: + ldr r1, [r7] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _080E9BF0 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r2, r5 + lsls r0, r0, #2 + adds r3, r0, r6 + ldr r0, [r3, #8] + cmp r1, r0 + bne _080E9C04 + ldrh r5, [r3] + adds r5, #7 + ldrh r4, [r3, #2] + adds r4, #7 + lsls r5, r5, #0x10 + asrs r0, r5, #0x10 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + bl sub_08087B88 + movs r3, #0 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + ldr r6, _080E9BF4 +_080E9BCE: + lsls r0, r3, #2 + adds r2, r0, r6 + ldrh r0, [r2] + cmp r0, r1 + bne _080E9BF8 + ldrh r0, [r2, #2] + movs r1, #0xc0 + lsls r1, r1, #4 + adds r2, r1, #0 + orrs r2, r0 + asrs r0, r5, #0x10 + asrs r1, r4, #0x10 + bl sub_08087C54 + b _080E9C0E + .align 2, 0 +_080E9BEC: .4byte gUnknown_3005AEC +_080E9BF0: .4byte 0x00001A9C +_080E9BF4: .4byte gUnknown_8568A78 +_080E9BF8: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #6 + bls _080E9BCE + b _080E9C0E +_080E9C04: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080E9B96 +_080E9C0E: + mov r1, sb + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + mov r0, r8 +_080E9C16: + ldrb r0, [r0, #3] + cmp r5, r0 + blo _080E9B7A + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080E9B6C + + thumb_func_start sub_080E9C28 +sub_080E9C28: @ 0x080E9C28 + push {lr} + ldr r0, _080E9C54 + ldrb r0, [r0] + movs r1, #0xa + bl __udivsi3 + ldr r2, _080E9C58 + lsls r0, r0, #0x1a + asrs r0, r0, #0x18 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r0, #0x19 + bl sub_08084590 + pop {r0} + bx r0 + .align 2, 0 +_080E9C54: .4byte gUnknown_2039CE8 +_080E9C58: .4byte gUnknown_8568A94 + thumb_func_end sub_080E9C28 + + thumb_func_start sub_080E9C5C +sub_080E9C5C: @ 0x080E9C5C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080E9C7C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _080E9C80 + cmp r0, #1 + beq _080E9C98 + b _080E9CD6 + .align 2, 0 +_080E9C7C: .4byte gUnknown_3005B60 +_080E9C80: + ldr r0, _080E9C94 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E9CD6 + movs r0, #1 + strh r0, [r2, #8] + b _080E9CD6 + .align 2, 0 +_080E9C94: .4byte gUnknown_2037C74 +_080E9C98: + ldr r0, _080E9CDC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080E9CE0 + ldr r2, [r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r2, r2, r1 + ldr r0, _080E9CE4 + adds r2, r2, r0 + ldrb r0, [r2] + cmp r0, #0xfe + bhi _080E9CBC + adds r0, #1 + strb r0, [r2] +_080E9CBC: + bl sub_080E9C28 + bl sub_08084540 + ldr r0, _080E9CE8 + ldr r1, _080E9CEC + str r1, [r0] + ldr r0, _080E9CF0 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_080E9CD6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E9CDC: .4byte 0x00004054 +_080E9CE0: .4byte gUnknown_3005AEC +_080E9CE4: .4byte 0x00001AAC +_080E9CE8: .4byte gUnknown_3005B0C +_080E9CEC: .4byte sub_080AEA64 +_080E9CF0: .4byte sub_08085934 + thumb_func_end sub_080E9C5C + + thumb_func_start sub_080E9CF4 +sub_080E9CF4: @ 0x080E9CF4 + push {lr} + ldr r0, _080E9D20 + movs r1, #0 + bl sub_080A8878 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _080E9D24 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + pop {r0} + bx r0 + .align 2, 0 +_080E9D20: .4byte sub_080E9C5C +_080E9D24: .4byte gUnknown_3005AEC + thumb_func_end sub_080E9CF4 + + thumb_func_start sub_080E9D28 +sub_080E9D28: @ 0x080E9D28 + push {lr} + ldr r0, _080E9D44 + ldrb r0, [r0, #0x17] + cmp r0, #9 + bne _080E9D4C + ldr r0, _080E9D48 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080E9D4C + movs r0, #0 + b _080E9D4E + .align 2, 0 +_080E9D44: .4byte gUnknown_2036FB8 +_080E9D48: .4byte 0x00004097 +_080E9D4C: + movs r0, #1 +_080E9D4E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E9D28 + + thumb_func_start sub_080E9D54 +sub_080E9D54: @ 0x080E9D54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080E9D8C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080E9D90 + adds r0, r0, r1 + movs r1, #2 + bl sub_0808DEB4 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080E9D84 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_080E9D84: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E9D8C: .4byte gUnknown_2037230 +_080E9D90: .4byte gUnknown_2036FF0 + thumb_func_end sub_080E9D54 + + thumb_func_start sub_080E9D94 +sub_080E9D94: @ 0x080E9D94 + push {r4, lr} + sub sp, #4 + bl sub_080987DC + bl sub_080D41F8 + mov r4, sp + adds r4, #2 + movs r2, #0x88 + lsls r2, r2, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080E993C + mov r1, sp + mov r0, sp + ldrh r0, [r0] + adds r0, #7 + strh r0, [r1] + ldrh r0, [r4] + adds r0, #7 + strh r0, [r4] + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r2, #0xe2 + lsls r2, r2, #4 + bl sub_08087C54 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08089804 + bl sub_080AE99C + ldr r0, _080E9DF4 + movs r1, #0 + bl sub_080A8878 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080E9DF4: .4byte sub_080E9D54 + thumb_func_end sub_080E9D94 + + thumb_func_start sub_080E9DF8 +sub_080E9DF8: @ 0x080E9DF8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080E9E68 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080E9E60 + ldr r0, _080E9E6C + ldrb r0, [r0] + movs r1, #0xa + bl __udivsi3 + ldr r1, _080E9E70 + ldr r1, [r1] + movs r5, #4 + ldrsb r5, [r1, r5] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + ldr r4, _080E9E74 + lsls r0, r0, #0x1a + asrs r0, r0, #0x18 + adds r3, r0, #2 + adds r3, r3, r4 + ldrb r3, [r3] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r0, #3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + adds r0, r5, #0 + bl sub_08084554 + bl sub_08084540 + ldr r1, _080E9E78 + ldr r0, _080E9E7C + str r0, [r1] + ldr r0, _080E9E80 + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 +_080E9E60: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080E9E68: .4byte gUnknown_2037C74 +_080E9E6C: .4byte gUnknown_2039CE8 +_080E9E70: .4byte gUnknown_3005AEC +_080E9E74: .4byte gUnknown_8568A94 +_080E9E78: .4byte gUnknown_3005B0C +_080E9E7C: .4byte sub_080E9D94 +_080E9E80: .4byte sub_08085934 + thumb_func_end sub_080E9DF8 + + thumb_func_start sub_080E9E84 +sub_080E9E84: @ 0x080E9E84 + push {lr} + ldr r0, _080E9E9C + movs r1, #0 + bl sub_080A8878 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 +_080E9E9C: .4byte sub_080E9DF8 + thumb_func_end sub_080E9E84 + + thumb_func_start sub_080E9EA0 +sub_080E9EA0: @ 0x080E9EA0 + push {lr} + ldr r0, _080E9EB8 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + cmp r0, #0x19 + bne _080E9EBC + ldrb r0, [r1, #5] + cmp r0, #0x17 + bhi _080E9EBC + movs r0, #1 + b _080E9EBE + .align 2, 0 +_080E9EB8: .4byte gUnknown_3005AEC +_080E9EBC: + movs r0, #0 +_080E9EBE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080E9EA0 + + thumb_func_start sub_080E9EC4 +sub_080E9EC4: @ 0x080E9EC4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + bl sub_080E9EA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080E9FBC + ldr r0, _080E9F74 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080E9F78 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #5 + ldr r2, _080E9F7C + adds r0, r0, r2 + ldr r1, [r1] + adds r1, r1, r0 + adds r7, r1, #0 + adds r7, #0x12 + adds r6, r1, #0 + adds r6, #0x22 + movs r1, #0 + mov r0, sp + strh r1, [r0] + mov r4, sp + ldr r0, _080E9F80 + mov r8, r0 +_080E9F0C: + ldrh r1, [r4] + adds r2, r7, r1 + ldrb r0, [r2] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + bhi _080E9F40 + ldrb r3, [r2] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0xc] + cmp r0, #4 + beq _080E9F40 + adds r0, r6, r1 + ldrb r2, [r0] + lsrs r0, r2, #4 + adds r0, #7 + movs r1, #0xf + ands r1, r2 + adds r1, #7 + adds r2, r3, #0 + bl sub_08127D08 +_080E9F40: + ldrh r0, [r4] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strh r0, [r4] + cmp r0, #0xf + bls _080E9F0C + cmp r5, #0 + beq _080E9F88 + mov r4, sp + adds r4, #2 + movs r2, #0x88 + lsls r2, r2, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080E993C + mov r0, sp + ldrh r0, [r0] + adds r0, #7 + ldrh r1, [r4] + adds r1, #7 + ldr r2, _080E9F84 + bl sub_08087C54 + b _080E9FBC + .align 2, 0 +_080E9F74: .4byte 0x00004054 +_080E9F78: .4byte gUnknown_3005AEC +_080E9F7C: .4byte 0x00001A9C +_080E9F80: .4byte gUnknown_8580CD0 +_080E9F84: .4byte 0x00000E21 +_080E9F88: + mov r2, sb + cmp r2, #1 + bne _080E9FBC + ldr r0, _080E9FCC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _080E9FBC + mov r4, sp + adds r4, #2 + movs r2, #0x88 + lsls r2, r2, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_080E993C + mov r0, sp + ldrh r0, [r0] + adds r0, #7 + ldrh r1, [r4] + adds r1, #7 + ldr r2, _080E9FD0 + bl sub_08087C54 +_080E9FBC: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080E9FCC: .4byte 0x00004089 +_080E9FD0: .4byte 0x00000E0A + thumb_func_end sub_080E9EC4 + + thumb_func_start sub_080E9FD4 +sub_080E9FD4: @ 0x080E9FD4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + bl sub_080E9EA0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EA00C + ldr r0, _080EA000 + ldr r0, [r0] + ldr r1, _080EA004 + adds r1, r0, r1 + str r1, [sp, #4] + ldr r2, _080EA008 + adds r2, r0, r2 + str r2, [sp, #8] + movs r3, #0xc + str r3, [sp, #0x10] + b _080EA034 + .align 2, 0 +_080EA000: .4byte gUnknown_3005AEC +_080EA004: .4byte 0x0000271C +_080EA008: .4byte 0x00002728 +_080EA00C: + ldr r0, _080EA038 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _080EA03C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + ldr r4, _080EA040 + adds r1, r1, r4 + ldr r0, [r2] + adds r0, r0, r1 + adds r1, r0, #0 + adds r1, #0x12 + str r1, [sp, #4] + adds r0, #0x22 + str r0, [sp, #8] + movs r2, #0x10 + str r2, [sp, #0x10] +_080EA034: + movs r6, #0 + b _080EA1FA + .align 2, 0 +_080EA038: .4byte 0x00004054 +_080EA03C: .4byte gUnknown_3005AEC +_080EA040: .4byte 0x00001A9C +_080EA044: + ldr r4, [sp, #4] + adds r0, r4, r6 + ldrb r1, [r0] + mov sl, r0 + adds r0, r6, #1 + str r0, [sp, #0x14] + cmp r1, #0 + bne _080EA056 + b _080EA1F4 +_080EA056: + mov r1, sl + ldrb r0, [r1] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _080EA1B0 + adds r1, r1, r2 + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xe] + str r1, [sp, #0xc] + cmp r0, #4 + beq _080EA070 + b _080EA1F4 +_080EA070: + movs r5, #0 + ldr r0, _080EA1B4 + ldr r3, [r0, #4] + ldrb r4, [r3] + mov sb, r0 + cmp r5, r4 + bhs _080EA0AE + ldr r0, [r3, #4] + ldrh r2, [r0, #0x14] + ldr r1, _080EA1B8 + ldrh r0, [r1] + adds r0, #0xae + adds r7, r1, #0 + cmp r2, r0 + beq _080EA0AE + adds r2, r4, #0 +_080EA090: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r2 + bhs _080EA0AE + ldr r1, [r3, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x14] + ldrh r0, [r7] + adds r0, #0xae + cmp r1, r0 + bne _080EA090 +_080EA0AE: + mov r3, sb + ldr r0, [r3, #4] + ldrb r0, [r0] + cmp r5, r0 + bne _080EA0BA + b _080EA1F4 +_080EA0BA: + ldr r4, _080EA1BC + mov r8, r4 + ldr r0, [sp, #8] + adds r1, r0, r6 + ldrb r0, [r1] + lsrs r0, r0, #4 + strh r0, [r4] + ldr r7, _080EA1C0 + ldrb r1, [r1] + movs r0, #0xf + ands r0, r1 + strh r0, [r7] + ldrh r0, [r4] + adds r0, #7 + ldrh r1, [r7] + adds r1, #7 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088CB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EA0FE + adds r0, r4, #0 + bl sub_08088CC8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EA1F4 +_080EA0FE: + ldr r6, _080EA1C4 + mov r1, sb + ldr r0, [r1, #4] + ldr r1, [r0, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r1, r4, r1 + ldr r2, _080EA1C8 + adds r0, r2, #0 + ldrb r1, [r1, #1] + adds r0, r0, r1 + strh r0, [r6] + ldrh r0, [r6] + mov r3, sl + ldrb r2, [r3] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080EA1CC + adds r1, r1, r2 + ldr r1, [r1] + ldrh r1, [r1] + bl sub_0809CF88 + mov r3, sb + ldr r0, [r3, #4] + ldr r0, [r0, #4] + adds r4, r4, r0 + ldrb r0, [r4] + strh r0, [r6] + ldr r0, _080EA1B8 + ldrh r0, [r0] + adds r0, #0xae + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D040 + ldrb r0, [r6] + ldr r5, _080EA1D0 + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D61C + ldrb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + mov r4, r8 + movs r3, #0 + ldrsh r4, [r4, r3] + mov r8, r4 + movs r4, #0 + ldrsh r7, [r7, r4] + str r7, [sp] + mov r3, r8 + bl sub_0808E518 + ldrb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808EBC4 + bl sub_080E9EA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EA1EC + ldr r0, _080EA1D4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EA1EC + ldr r0, [sp, #0xc] + cmp r0, #6 + bne _080EA1D8 + ldrb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + movs r3, #6 + bl sub_0808EBFC + b _080EA1EC + .align 2, 0 +_080EA1B0: .4byte gUnknown_8580CD0 +_080EA1B4: .4byte gUnknown_2036FB8 +_080EA1B8: .4byte gUnknown_2037280 +_080EA1BC: .4byte gUnknown_2037284 +_080EA1C0: .4byte gUnknown_2037286 +_080EA1C4: .4byte gUnknown_2037290 +_080EA1C8: .4byte 0x00003F20 +_080EA1CC: .4byte gUnknown_8580CE8 +_080EA1D0: .4byte gUnknown_3005AEC +_080EA1D4: .4byte 0x00004054 +_080EA1D8: + ldr r1, [sp, #0xc] + cmp r1, #7 + bne _080EA1EC + ldrb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + movs r3, #7 + bl sub_0808EBFC +_080EA1EC: + ldr r1, _080EA214 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_080EA1F4: + ldr r2, [sp, #0x14] + lsls r0, r2, #0x18 + lsrs r6, r0, #0x18 +_080EA1FA: + ldr r3, [sp, #0x10] + cmp r6, r3 + bhs _080EA202 + b _080EA044 +_080EA202: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EA214: .4byte gUnknown_2037280 + thumb_func_end sub_080E9FD4 + + thumb_func_start sub_080EA218 +sub_080EA218: @ 0x080EA218 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r1, _080EA26C + ldr r0, [r1, #4] + ldrb r0, [r0] + cmp r5, r0 + bhs _080EA264 + adds r6, r1, #0 +_080EA228: + ldr r0, [r6, #4] + ldr r1, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r4, [r1, #0x14] + adds r0, r4, #0 + subs r0, #0xae + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xd + bhi _080EA256 + ldrb r0, [r1] + ldr r1, _080EA270 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D234 + adds r0, r4, #0 + bl sub_0809D018 +_080EA256: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r6, #4] + ldrb r0, [r0] + cmp r5, r0 + blo _080EA228 +_080EA264: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA26C: .4byte gUnknown_2036FB8 +_080EA270: .4byte gUnknown_3005AEC + thumb_func_end sub_080EA218 + + thumb_func_start sub_080EA274 +sub_080EA274: @ 0x080EA274 + push {r4, r5, lr} + ldr r5, _080EA29C + ldr r4, _080EA2A0 + ldr r0, _080EA2A4 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EAE54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0809CF88 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA29C: .4byte 0x0000401F +_080EA2A0: .4byte gUnknown_8568B0C +_080EA2A4: .4byte 0x00004054 + thumb_func_end sub_080EA274 + + thumb_func_start sub_080EA2A8 +sub_080EA2A8: @ 0x080EA2A8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r3, #0 + ldrb r0, [r4, #3] + cmp r3, r0 + bge _080EA300 + ldr r6, _080EA2EC +_080EA2B8: + lsls r3, r3, #0x10 + asrs r1, r3, #0x10 + ldr r2, [r4, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #5] + cmp r0, #8 + bne _080EA2F0 + movs r0, #0 + ldrsh r1, [r5, r0] + ldrh r0, [r2] + adds r0, #7 + cmp r1, r0 + bne _080EA2F0 + movs r0, #2 + ldrsh r1, [r5, r0] + ldrh r0, [r2, #2] + adds r0, #7 + cmp r1, r0 + bne _080EA2F0 + ldr r0, [r2, #8] + strb r0, [r6] + b _080EA300 + .align 2, 0 +_080EA2EC: .4byte gUnknown_2039CE8 +_080EA2F0: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r3, r1 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + ldrb r1, [r4, #3] + cmp r0, r1 + blt _080EA2B8 +_080EA300: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EA2A8 + + thumb_func_start sub_080EA308 +sub_080EA308: @ 0x080EA308 + push {lr} + bl sub_080EA2A8 + bl sub_080E97F8 + ldr r0, _080EA31C + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080EA31C: .4byte gUnknown_8245C66 + thumb_func_end sub_080EA308 + + thumb_func_start sub_080EA320 +sub_080EA320: @ 0x080EA320 + push {lr} + bl sub_080E97E4 + bl sub_080E97F8 + ldr r0, _080EA338 + ldrh r0, [r0] + cmp r0, #1 + beq _080EA33C + movs r0, #1 + b _080EA33E + .align 2, 0 +_080EA338: .4byte gUnknown_2037290 +_080EA33C: + movs r0, #0 +_080EA33E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EA320 + + thumb_func_start sub_080EA344 +sub_080EA344: @ 0x080EA344 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080EA368 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080EA37C + cmp r0, #1 + bgt _080EA36C + cmp r0, #0 + beq _080EA372 + b _080EA3B4 + .align 2, 0 +_080EA368: .4byte gUnknown_3005B60 +_080EA36C: + cmp r0, #2 + beq _080EA394 + b _080EA3B4 +_080EA372: + bl sub_080987DC + movs r0, #1 + strh r0, [r4, #8] + b _080EA3B4 +_080EA37C: + ldr r0, _080EA390 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080EA3B4 + movs r0, #2 + strh r0, [r4, #8] + b _080EA3B4 + .align 2, 0 +_080EA390: .4byte gUnknown_2037C74 +_080EA394: + movs r0, #0x7e + bl sub_0808461C + bl sub_08084540 + ldr r0, _080EA3BC + ldr r1, _080EA3C0 + str r1, [r0] + ldr r0, _080EA3C4 + bl sub_08000540 + bl sub_080987E8 + adds r0, r5, #0 + bl sub_080A8964 +_080EA3B4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA3BC: .4byte gUnknown_3005B0C +_080EA3C0: .4byte sub_080AEC94 +_080EA3C4: .4byte sub_08085934 + thumb_func_end sub_080EA344 + + thumb_func_start sub_080EA3C8 +sub_080EA3C8: @ 0x080EA3C8 + push {lr} + ldr r0, _080EA3E0 + movs r1, #0 + bl sub_080A8878 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 +_080EA3E0: .4byte sub_080EA344 + thumb_func_end sub_080EA3C8 + + thumb_func_start sub_080EA3E4 +sub_080EA3E4: @ 0x080EA3E4 + push {lr} + ldr r0, _080EA400 + ldr r0, [r0] + ldr r1, _080EA404 + adds r0, r0, r1 + ldr r1, _080EA408 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080EA410 + ldr r1, _080EA40C + movs r0, #1 + b _080EA414 + .align 2, 0 +_080EA400: .4byte gUnknown_3005AEC +_080EA404: .4byte 0x00001A9C +_080EA408: .4byte gUnknown_2039CE8 +_080EA40C: .4byte gUnknown_2037290 +_080EA410: + ldr r1, _080EA41C + movs r0, #0 +_080EA414: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080EA41C: .4byte gUnknown_2037290 + thumb_func_end sub_080EA3E4 + + thumb_func_start sub_080EA420 +sub_080EA420: @ 0x080EA420 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _080EA460 + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #5 + ldr r0, [r0] + adds r4, r4, r0 + ldr r0, _080EA464 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_080E9A80 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088F0 + movs r1, #0xff + strb r1, [r0] + ldr r1, _080EA468 + adds r0, r5, #0 + bl sub_080088D8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080EA460: .4byte gUnknown_3005AEC +_080EA464: .4byte 0x00001A9E +_080EA468: .4byte gUnknown_85CA654 + thumb_func_end sub_080EA420 + + thumb_func_start sub_080EA46C +sub_080EA46C: @ 0x080EA46C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080EA488 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080EA420 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080EA488: .4byte 0x00004054 + thumb_func_end sub_080EA46C + + thumb_func_start sub_080EA48C +sub_080EA48C: @ 0x080EA48C + push {r4, r5, lr} + ldr r0, _080EA4C8 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080EA4CC + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #5 + ldr r0, [r1] + adds r4, r4, r0 + ldr r0, _080EA4D0 + adds r4, r4, r0 + ldr r5, _080EA4D4 + adds r0, r4, #0 + bl sub_080E9A80 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088F0 + movs r1, #0xff + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EA4C8: .4byte 0x00004054 +_080EA4CC: .4byte gUnknown_3005AEC +_080EA4D0: .4byte 0x00001A9E +_080EA4D4: .4byte gUnknown_2021C40 + thumb_func_end sub_080EA48C + + thumb_func_start sub_080EA4D8 +sub_080EA4D8: @ 0x080EA4D8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080EA4FC + ldr r2, [r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r2, r2, r1 + ldr r0, _080EA500 + adds r2, r2, r0 + ldrb r0, [r2] + lsrs r0, r0, #6 + cmp r0, #0 + bne _080EA504 + movs r0, #0 + b _080EA506 + .align 2, 0 +_080EA4FC: .4byte gUnknown_3005AEC +_080EA500: .4byte 0x00001A9D +_080EA504: + movs r0, #1 +_080EA506: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EA4D8 + + thumb_func_start sub_080EA50C +sub_080EA50C: @ 0x080EA50C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x1a + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x1b + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x1c + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x1d + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x1e + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x1f + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080EA50C + + thumb_func_start sub_080EA574 +sub_080EA574: @ 0x080EA574 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + movs r0, #0 + mov sl, r0 + ldr r0, _080EA6D0 + ldr r1, [r0] + ldr r2, _080EA6D4 + adds r2, r1, r2 + str r2, [sp] + ldr r3, _080EA6D8 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _080EA59A + b _080EA6C0 +_080EA59A: + movs r6, #0 + ldr r7, _080EA6DC + adds r7, r1, r7 + str r7, [sp, #0x14] + ldr r0, _080EA6E0 + adds r0, r1, r0 + str r0, [sp, #0xc] + ldr r2, _080EA6E4 + adds r2, r1, r2 + str r2, [sp, #0x10] + adds r3, #0x94 + adds r3, r1, r3 + str r3, [sp, #0x18] + ldr r7, _080EA6E8 + adds r7, r1, r7 + str r7, [sp, #0x1c] + mov sb, r6 +_080EA5BC: + movs r4, #0 + lsls r5, r6, #2 + lsls r3, r6, #1 + ldr r0, _080EA6EC + mov r8, r0 + adds r1, r6, #1 + str r1, [sp, #4] + adds r2, r5, #0 + ldr r1, [sp, #0x14] +_080EA5CE: + adds r0, r2, r4 + lsls r0, r0, #1 + adds r0, r1, r0 + mov r7, sb + strh r7, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _080EA5CE + ldr r1, [sp, #0xc] + adds r0, r1, r3 + mov r2, sb + strh r2, [r0] + ldr r7, [sp, #0x10] + adds r0, r7, r3 + strh r2, [r0] + ldr r1, [sp, #0x18] + adds r0, r1, r6 + mov r2, sb + strb r2, [r0] + ldr r3, [sp] + adds r0, r3, r5 + mov r7, sb + str r7, [r0] + ldr r1, [sp, #0x1c] + adds r0, r1, r6 + strb r7, [r0] + movs r2, #0x64 + adds r5, r6, #0 + muls r5, r2, r5 + mov r3, r8 + adds r4, r5, r3 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080EA6B4 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _080EA6B4 + movs r4, #0 + mov r7, sl + lsls r7, r7, #2 + mov r8, r7 + mov r0, sl + lsls r7, r0, #1 + adds r0, #1 + str r0, [sp, #8] + ldr r2, _080EA6EC +_080EA63A: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r5, r2 + str r2, [sp, #0x20] + bl sub_0806A058 + mov r3, r8 + adds r1, r3, r4 + lsls r1, r1, #1 + ldr r3, [sp, #0x14] + adds r1, r3, r1 + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r2, [sp, #0x20] + cmp r4, #3 + bls _080EA63A + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _080EA6EC + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldr r2, [sp, #0xc] + adds r1, r2, r7 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + ldr r3, [sp, #0x10] + adds r1, r3, r7 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x18] + add r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldr r1, [sp] + add r1, r8 + str r0, [r1] + adds r0, r4, #0 + bl sub_080EA50C + ldr r1, [sp, #0x1c] + add r1, sl + strb r0, [r1] + ldr r7, [sp, #8] + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 +_080EA6B4: + ldr r1, [sp, #4] + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bhi _080EA6C0 + b _080EA5BC +_080EA6C0: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EA6D0: .4byte gUnknown_3005AEC +_080EA6D4: .4byte 0x00001AD0 +_080EA6D8: .4byte 0x00001A9C +_080EA6DC: .4byte 0x00001AE8 +_080EA6E0: .4byte 0x00001B18 +_080EA6E4: .4byte 0x00001B24 +_080EA6E8: .4byte 0x00001B36 +_080EA6EC: .4byte gUnknown_2024190 + thumb_func_end sub_080EA574 + + thumb_func_start sub_080EA6F0 +sub_080EA6F0: @ 0x080EA6F0 + push {r4, r5, r6, lr} + ldr r5, _080EA714 + ldr r0, [r5] + ldr r4, _080EA718 + adds r1, r0, r4 + ldrh r6, [r1] + ldr r1, _080EA71C + adds r0, r0, r1 + bl sub_080E977C + ldr r0, [r5] + adds r0, r0, r4 + strh r6, [r0] + bl sub_080EA3C8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA714: .4byte gUnknown_3005AEC +_080EA718: .4byte 0x00001AAA +_080EA71C: .4byte 0x00001A9C + thumb_func_end sub_080EA6F0 + + thumb_func_start sub_080EA720 +sub_080EA720: @ 0x080EA720 + push {lr} + movs r0, #0x14 + bl sub_0808414C + bl sub_080EA6F0 + pop {r0} + bx r0 + thumb_func_end sub_080EA720 + + thumb_func_start sub_080EA730 +sub_080EA730: @ 0x080EA730 + push {r4, r5, r6, r7, lr} + ldr r0, _080EA73C + ldr r4, [r0, #4] + movs r6, #0 + b _080EA7C2 + .align 2, 0 +_080EA73C: .4byte gUnknown_2036FB8 +_080EA740: + ldr r2, [r4, #0x10] + lsls r1, r6, #1 + adds r0, r1, r6 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #5] + adds r7, r1, #0 + cmp r0, #8 + bne _080EA7BC + ldr r0, _080EA790 + ldr r0, [r0] + ldr r1, _080EA794 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, [r2, #8] + cmp r1, r0 + bne _080EA7BC + ldrh r0, [r2] + adds r0, #7 + ldrh r1, [r2, #2] + adds r1, #7 + bl sub_08087B88 + movs r1, #0 + ldr r5, _080EA798 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 +_080EA776: + lsls r0, r1, #2 + adds r3, r0, r5 + ldrh r0, [r3, #2] + cmp r0, r2 + beq _080EA79C + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #6 + bls _080EA776 +_080EA78A: + bl sub_08089598 + b _080EA7C8 + .align 2, 0 +_080EA790: .4byte gUnknown_3005AEC +_080EA794: .4byte 0x00001A9C +_080EA798: .4byte gUnknown_8568A78 +_080EA79C: + ldr r0, [r4, #0x10] + adds r1, r7, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #7 + ldrh r1, [r1, #2] + adds r1, #7 + ldrh r3, [r3] + movs r4, #0xc0 + lsls r4, r4, #4 + adds r2, r4, #0 + orrs r2, r3 + bl sub_08087C54 + b _080EA78A +_080EA7BC: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_080EA7C2: + ldrb r0, [r4, #3] + cmp r6, r0 + blo _080EA740 +_080EA7C8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EA730 + + thumb_func_start sub_080EA7D0 +sub_080EA7D0: @ 0x080EA7D0 + push {r4, r5, r6, lr} + bl sub_080EA730 + movs r0, #0x14 + bl sub_0808414C + ldr r5, _080EA7FC + ldr r0, [r5] + ldr r4, _080EA800 + adds r1, r0, r4 + ldrh r6, [r1] + ldr r1, _080EA804 + adds r0, r0, r1 + bl sub_080E977C + ldr r0, [r5] + adds r0, r0, r4 + strh r6, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EA7FC: .4byte gUnknown_3005AEC +_080EA800: .4byte 0x00001AAA +_080EA804: .4byte 0x00001A9C + thumb_func_end sub_080EA7D0 + + thumb_func_start sub_080EA808 +sub_080EA808: @ 0x080EA808 + push {r4, r5, lr} + movs r5, #0 + movs r4, #1 +_080EA80E: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EA4D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EA824 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EA824: + lsls r0, r4, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080EA80E + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080EA808 + + thumb_func_start sub_080EA83C +sub_080EA83C: @ 0x080EA83C + push {lr} + ldr r0, _080EA85C + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EA4D8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080EA864 + ldr r0, _080EA860 + strh r1, [r0] + b _080EA882 + .align 2, 0 +_080EA85C: .4byte 0x00004054 +_080EA860: .4byte gUnknown_2037290 +_080EA864: + bl sub_080EA808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bls _080EA87C + ldr r1, _080EA878 + movs r0, #2 + b _080EA880 + .align 2, 0 +_080EA878: .4byte gUnknown_2037290 +_080EA87C: + ldr r1, _080EA888 + movs r0, #0 +_080EA880: + strh r0, [r1] +_080EA882: + pop {r0} + bx r0 + .align 2, 0 +_080EA888: .4byte gUnknown_2037290 + thumb_func_end sub_080EA83C + + thumb_func_start sub_080EA88C +sub_080EA88C: @ 0x080EA88C + push {lr} + ldr r0, _080EA8C8 + bl sub_0809CF6C + ldr r1, _080EA8CC + ldr r2, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r2, r2, r1 + ldr r0, _080EA8D0 + adds r2, r2, r0 + ldrb r3, [r2] + lsrs r1, r3, #6 + movs r0, #1 + eors r1, r0 + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_080EA8C8: .4byte 0x00004054 +_080EA8CC: .4byte gUnknown_3005AEC +_080EA8D0: .4byte 0x00001A9D + thumb_func_end sub_080EA88C + + thumb_func_start sub_080EA8D4 +sub_080EA8D4: @ 0x080EA8D4 + push {lr} + ldr r0, _080EA8E4 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080EA8E4: .4byte sub_08126AA0 + thumb_func_end sub_080EA8D4 + + thumb_func_start sub_080EA8E8 +sub_080EA8E8: @ 0x080EA8E8 + push {lr} + ldr r0, _080EA8F8 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080EA8F8: .4byte sub_080EA8FC + thumb_func_end sub_080EA8E8 + + thumb_func_start sub_080EA8FC +sub_080EA8FC: @ 0x080EA8FC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r7, r0, #3 + ldr r0, _080EA960 + mov r8, r0 + adds r5, r7, r0 + bl sub_080987DC + bl sub_080EA808 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + cmp r0, #0 + beq _080EA970 + movs r0, #0 + strh r0, [r5, #2] + strh r0, [r5, #4] + movs r0, #0 + movs r1, #0 + bl sub_08197028 + ldr r4, _080EA964 + movs r0, #0x84 + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r4] + ldr r0, _080EA968 + bl sub_08003250 + strh r0, [r5, #0xc] + adds r0, r6, #0 + bl sub_080EA98C + adds r0, r6, #0 + bl sub_080EAA60 + mov r0, r8 + subs r0, #8 + adds r0, r7, r0 + ldr r1, _080EA96C + str r1, [r0] + b _080EA97A + .align 2, 0 +_080EA960: .4byte gUnknown_3005B68 +_080EA964: .4byte gUnknown_2039CEC +_080EA968: .4byte gUnknown_8568B18 +_080EA96C: .4byte sub_080EAAF0 +_080EA970: + ldr r1, _080EA984 + ldr r2, _080EA988 + adds r0, r6, #0 + bl sub_081976D0 +_080EA97A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EA984: .4byte gUnknown_85CA688 +_080EA988: .4byte sub_080EAE18 + thumb_func_end sub_080EA8FC + + thumb_func_start sub_080EA98C +sub_080EA98C: @ 0x080EA98C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080EAA0C + adds r7, r1, r0 + movs r6, #0 + movs r5, #1 + ldr r0, _080EAA10 + mov r8, r0 +_080EA9A8: + adds r0, r5, #0 + bl sub_080EA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EA9DC + lsls r4, r6, #4 + adds r4, #0x58 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + adds r1, r5, #0 + bl sub_080EA420 + mov r3, r8 + ldr r0, [r3] + lsls r2, r6, #3 + adds r1, r0, r2 + adds r4, r0, r4 + str r4, [r1] + adds r0, #4 + adds r0, r0, r2 + str r5, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_080EA9DC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EA9A8 + ldr r4, _080EAA10 + ldr r1, [r4] + lsls r3, r6, #3 + adds r2, r1, r3 + ldr r0, _080EAA14 + str r0, [r2] + adds r1, #4 + adds r1, r1, r3 + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r1] + adds r2, r6, #1 + strh r2, [r7] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bgt _080EAA18 + strh r2, [r7, #6] + b _080EAA1C + .align 2, 0 +_080EAA0C: .4byte gUnknown_3005B68 +_080EAA10: .4byte gUnknown_2039CEC +_080EAA14: .4byte gUnknown_85C93C4 +_080EAA18: + movs r0, #8 + strh r0, [r7, #6] +_080EAA1C: + ldr r2, _080EAA44 + adds r1, r2, #0 + ldr r0, _080EAA48 + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldrh r0, [r7, #0xc] + strb r0, [r2, #0x10] + ldrh r0, [r7] + strh r0, [r2, #0xc] + ldr r0, [r4] + str r0, [r2] + ldrh r0, [r7, #6] + strh r0, [r2, #0xe] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EAA44: .4byte gUnknown_3006050 +_080EAA48: .4byte gUnknown_8568B28 + thumb_func_end sub_080EA98C + + thumb_func_start sub_080EAA4C +sub_080EAA4C: @ 0x080EAA4C + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _080EAA5C + movs r0, #5 + bl sub_080A306C +_080EAA5C: + pop {r0} + bx r0 + thumb_func_end sub_080EAA4C + + thumb_func_start sub_080EAA60 +sub_080EAA60: @ 0x080EAA60 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _080EAA9C + adds r4, r4, r0 + ldrb r0, [r4, #0xc] + movs r1, #0 + bl sub_08197638 + ldr r0, _080EAAA0 + ldrh r1, [r4, #4] + ldrh r2, [r4, #2] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + adds r0, r5, #0 + bl sub_080EAAA4 + movs r0, #0 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EAA9C: .4byte gUnknown_3005B68 +_080EAAA0: .4byte gUnknown_3006050 + thumb_func_end sub_080EAA60 + + thumb_func_start sub_080EAAA4 +sub_080EAAA4: @ 0x080EAAA4 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _080EAAE8 + adds r4, r4, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #6 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + str r0, [sp] + ldr r0, _080EAAEC + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r4, #4 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xbc + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x10] + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EAAE8: .4byte gUnknown_3005B68 +_080EAAEC: .4byte 0x000013F8 + thumb_func_end sub_080EAAA4 + + thumb_func_start sub_080EAAF0 +sub_080EAAF0: @ 0x080EAAF0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080EAB24 + adds r4, r0, r1 + ldrb r0, [r4, #0xa] + bl sub_081AE2DC + adds r5, r0, #0 + ldrb r0, [r4, #0xa] + adds r1, r4, #4 + adds r2, r4, #2 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _080EAB28 + adds r0, #1 + cmp r5, r0 + bne _080EAB6C + b _080EAB7A + .align 2, 0 +_080EAB24: .4byte gUnknown_3005B68 +_080EAB28: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #0xa] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r4, #0x10] + bl sub_081AF2F8 + ldrb r0, [r4, #0xc] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4, #0xc] + bl sub_08003774 + ldrb r0, [r4, #0xc] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + ldr r0, _080EAB68 + ldr r0, [r0] + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_080EAE18 + b _080EAB7A + .align 2, 0 +_080EAB68: .4byte gUnknown_2039CEC +_080EAB6C: + movs r0, #5 + bl sub_080A306C + strh r5, [r4, #8] + adds r0, r6, #0 + bl sub_080EAB80 +_080EAB7A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080EAAF0 + + thumb_func_start sub_080EAB80 +sub_080EAB80: @ 0x080EAB80 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r6, _080EABE8 + adds r5, r4, r6 + ldrb r0, [r5, #0x10] + bl sub_081AF2F8 + ldr r0, _080EABEC + bl sub_08003250 + strh r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197638 + ldrb r0, [r5, #0xe] + ldr r1, _080EABF0 + str r1, [sp] + movs r1, #1 + movs r2, #0x10 + movs r3, #2 + bl sub_08198964 + ldrb r0, [r5, #0xe] + movs r1, #0x10 + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + subs r6, #8 + adds r4, r4, r6 + ldr r0, _080EABF4 + str r0, [r4] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EABE8: .4byte gUnknown_3005B68 +_080EABEC: .4byte gUnknown_8568B20 +_080EABF0: .4byte gUnknown_8568AF4 +_080EABF4: .4byte sub_080EABF8 + thumb_func_end sub_080EAB80 + + thumb_func_start sub_080EABF8 +sub_080EABF8: @ 0x080EABF8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _080EAC3A + adds r0, #1 + cmp r4, r0 + bne _080EAC24 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_080EADD4 + b _080EAC3A +_080EAC24: + movs r0, #5 + bl sub_080A306C + ldr r0, _080EAC40 + lsls r1, r4, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r6, #0 + bl _call_via_r1 +_080EAC3A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EAC40: .4byte gUnknown_8568AF4 + thumb_func_end sub_080EABF8 + + thumb_func_start sub_080EAC44 +sub_080EAC44: @ 0x080EAC44 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _080EACA0 + adds r4, r4, r0 + ldrb r0, [r4, #0xc] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4, #0xe] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4, #0xc] + bl sub_08003774 + ldrb r0, [r4, #0xe] + bl sub_08003774 + ldrb r0, [r4, #0xe] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + ldr r0, _080EACA4 + ldrb r1, [r4, #8] + bl sub_080EA420 + ldr r4, _080EACA8 + ldr r1, _080EACAC + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _080EACB0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EACA0: .4byte gUnknown_3005B68 +_080EACA4: .4byte gUnknown_2021C40 +_080EACA8: .4byte gUnknown_2021C7C +_080EACAC: .4byte gUnknown_85CA658 +_080EACB0: .4byte sub_080EACB4 + thumb_func_end sub_080EAC44 + + thumb_func_start sub_080EACB4 +sub_080EACB4: @ 0x080EACB4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _080EACD0 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EACD0: .4byte gUnknown_8568B04 + thumb_func_end sub_080EACB4 + + thumb_func_start sub_080EACD4 +sub_080EACD4: @ 0x080EACD4 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + ldr r0, _080EAD58 + mov r8, r0 + adds r6, r5, r0 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + ldrb r0, [r6, #0xa] + adds r1, r6, #4 + mov sb, r1 + adds r1, r6, #2 + mov sl, r1 + mov r1, sb + mov r2, sl + bl sub_081AE3A0 + ldr r0, _080EAD5C + ldr r2, [r0] + movs r0, #8 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + adds r2, r2, r0 + ldr r1, _080EAD60 + adds r2, r2, r1 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080EA98C + ldrb r2, [r6, #6] + ldrb r3, [r6] + mov r0, sb + mov r1, sl + bl sub_08122268 + adds r0, r4, #0 + bl sub_080EAA60 + movs r0, #8 + rsbs r0, r0, #0 + add r8, r0 + add r5, r8 + ldr r0, _080EAD64 + str r0, [r5] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EAD58: .4byte gUnknown_3005B68 +_080EAD5C: .4byte gUnknown_3005AEC +_080EAD60: .4byte 0x00001A9D +_080EAD64: .4byte sub_080EAAF0 + thumb_func_end sub_080EACD4 + + thumb_func_start sub_080EAD68 +sub_080EAD68: @ 0x080EAD68 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080EAD7C + ldr r2, _080EAD80 + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_080EAD7C: .4byte gUnknown_85CA676 +_080EAD80: .4byte sub_080EACD4 + thumb_func_end sub_080EAD68 + + thumb_func_start sub_080EAD84 +sub_080EAD84: @ 0x080EAD84 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _080EADCC + mov r8, r0 + adds r6, r4, r0 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + ldrb r0, [r6, #0xa] + adds r1, r6, #4 + adds r6, #2 + adds r2, r6, #0 + bl sub_081AE3A0 + adds r0, r5, #0 + bl sub_080EAA60 + movs r0, #8 + rsbs r0, r0, #0 + add r8, r0 + add r4, r8 + ldr r0, _080EADD0 + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EADCC: .4byte gUnknown_3005B68 +_080EADD0: .4byte sub_080EAAF0 + thumb_func_end sub_080EAD84 + + thumb_func_start sub_080EADD4 +sub_080EADD4: @ 0x080EADD4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r6, _080EAE10 + adds r5, r4, r6 + bl sub_080EAAA4 + ldrb r0, [r5, #0xe] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r5, #0xe] + bl sub_08003774 + ldrb r0, [r5, #0xe] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + subs r6, #8 + adds r4, r4, r6 + ldr r0, _080EAE14 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EAE10: .4byte gUnknown_3005B68 +_080EAE14: .4byte sub_080EAAF0 + thumb_func_end sub_080EADD4 + + thumb_func_start sub_080EAE18 +sub_080EAE18: @ 0x080EAE18 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080EAE34 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080EAE3C + ldr r0, _080EAE38 + bl sub_08098880 + b _080EAE42 + .align 2, 0 +_080EAE34: .4byte 0x00004054 +_080EAE38: .4byte gUnknown_821D3D7 +_080EAE3C: + ldr r0, _080EAE50 + bl sub_08098880 +_080EAE42: + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EAE50: .4byte gUnknown_821D4D8 + thumb_func_end sub_080EAE18 + + thumb_func_start sub_080EAE54 +sub_080EAE54: @ 0x080EAE54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080EAE8C + ldr r4, [r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r4, r4, r1 + ldr r1, _080EAE90 + adds r0, r4, r1 + ldrb r0, [r0] + movs r1, #5 + bl __umodsi3 + ldr r1, _080EAE94 + adds r4, r4, r1 + ldrb r2, [r4] + lsls r2, r2, #0x1b + lsrs r2, r2, #0x1f + lsls r1, r2, #2 + adds r1, r1, r2 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080EAE8C: .4byte gUnknown_3005AEC +_080EAE90: .4byte 0x00001AA5 +_080EAE94: .4byte 0x00001A9D + thumb_func_end sub_080EAE54 + + thumb_func_start sub_080EAE98 +sub_080EAE98: @ 0x080EAE98 + push {lr} + ldr r0, _080EAEB8 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EAE54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0 + bne _080EAEC0 + ldr r0, _080EAEBC + b _080EAF22 + .align 2, 0 +_080EAEB8: .4byte 0x00004054 +_080EAEBC: .4byte gUnknown_824516F +_080EAEC0: + cmp r0, #1 + bne _080EAECC + ldr r0, _080EAEC8 + b _080EAF22 + .align 2, 0 +_080EAEC8: .4byte gUnknown_8245374 +_080EAECC: + cmp r0, #2 + bne _080EAED8 + ldr r0, _080EAED4 + b _080EAF22 + .align 2, 0 +_080EAED4: .4byte gUnknown_8245550 +_080EAED8: + cmp r0, #3 + bne _080EAEE4 + ldr r0, _080EAEE0 + b _080EAF22 + .align 2, 0 +_080EAEE0: .4byte gUnknown_824573E +_080EAEE4: + cmp r0, #4 + bne _080EAEF0 + ldr r0, _080EAEEC + b _080EAF22 + .align 2, 0 +_080EAEEC: .4byte gUnknown_82458F4 +_080EAEF0: + cmp r0, #5 + bne _080EAEFC + ldr r0, _080EAEF8 + b _080EAF22 + .align 2, 0 +_080EAEF8: .4byte gUnknown_824526D +_080EAEFC: + cmp r0, #6 + bne _080EAF08 + ldr r0, _080EAF04 + b _080EAF22 + .align 2, 0 +_080EAF04: .4byte gUnknown_8245455 +_080EAF08: + cmp r0, #7 + bne _080EAF14 + ldr r0, _080EAF10 + b _080EAF22 + .align 2, 0 +_080EAF10: .4byte gUnknown_824565C +_080EAF14: + cmp r1, #8 + beq _080EAF20 + ldr r0, _080EAF1C + b _080EAF22 + .align 2, 0 +_080EAF1C: .4byte gUnknown_8245A06 +_080EAF20: + ldr r0, _080EAF28 +_080EAF22: + pop {r1} + bx r1 + .align 2, 0 +_080EAF28: .4byte gUnknown_8245819 + thumb_func_end sub_080EAE98 + + thumb_func_start sub_080EAF2C +sub_080EAF2C: @ 0x080EAF2C + push {lr} + movs r0, #1 + bl sub_0813BB14 + ldr r1, _080EAF48 + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _080EAF4C + ldr r0, _080EAF50 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080EAF48: .4byte gUnknown_203886A +_080EAF4C: .4byte gUnknown_2022C90 +_080EAF50: .4byte 0x08000008 + thumb_func_end sub_080EAF2C + + thumb_func_start sub_080EAF54 +sub_080EAF54: @ 0x080EAF54 + push {lr} + ldr r0, _080EAF8C + bl sub_0809CF6C + ldr r1, _080EAF90 + ldr r3, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r3, r3, r1 + ldr r0, _080EAF94 + ldrb r0, [r0] + ldr r1, _080EAF98 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080EAF8C: .4byte 0x00004054 +_080EAF90: .4byte gUnknown_3005AEC +_080EAF94: .4byte gUnknown_2037290 +_080EAF98: .4byte 0x00001A9D + thumb_func_end sub_080EAF54 + + thumb_func_start sub_080EAF9C +sub_080EAF9C: @ 0x080EAF9C + push {r4, r5, r6, r7, lr} + ldr r0, _080EB014 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080EB018 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EAFE2 + movs r3, #0 + ldr r7, _080EB01C + ldr r4, _080EB020 + movs r6, #0x21 + rsbs r6, r6, #0 +_080EAFBE: + ldr r1, [r7] + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, r1, r4 + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x13 + bls _080EAFBE + ldr r0, _080EB018 + bl sub_0809D018 +_080EAFE2: + ldr r4, _080EB024 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080EAE54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r2, _080EB028 + ldr r0, _080EB01C + ldr r1, [r0] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _080EB020 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1f + strh r0, [r2] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EB014: .4byte 0x00004054 +_080EB018: .4byte 0x00000922 +_080EB01C: .4byte gUnknown_3005AEC +_080EB020: .4byte 0x00001A9D +_080EB024: .4byte gUnknown_2037280 +_080EB028: .4byte gUnknown_2037290 + thumb_func_end sub_080EAF9C + + thumb_func_start sub_080EB02C +sub_080EB02C: @ 0x080EB02C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080EB050 + adds r5, r1, r0 + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080EB090 + cmp r0, #1 + bgt _080EB054 + cmp r0, #0 + beq _080EB05C + b _080EB468 + .align 2, 0 +_080EB050: .4byte gUnknown_3005B68 +_080EB054: + cmp r0, #2 + bne _080EB05A + b _080EB458 +_080EB05A: + b _080EB468 +_080EB05C: + ldr r0, _080EB074 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080EB07C + ldr r1, _080EB078 + movs r0, #1 + strb r0, [r1] + b _080EB080 + .align 2, 0 +_080EB074: .4byte 0x00004054 +_080EB078: .4byte gUnknown_2039CE9 +_080EB07C: + ldr r0, _080EB08C + strb r1, [r0] +_080EB080: + adds r0, r5, #4 + adds r1, r5, #6 + bl sub_0808B410 + b _080EB464 + .align 2, 0 +_080EB08C: .4byte gUnknown_2039CE9 +_080EB090: + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + movs r3, #4 + ldrsh r0, [r5, r3] + adds r6, r4, #0 + cmp r1, r0 + bne _080EB0BC + movs r0, #0 + ldrsh r1, [r6, r0] + movs r3, #6 + ldrsh r0, [r5, r3] + cmp r1, r0 + bne _080EB0BC + b _080EB468 +_080EB0BC: + strh r2, [r5, #4] + ldrh r0, [r6] + strh r0, [r5, #6] + ldr r4, _080EB124 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0x8d + lsls r0, r0, #2 + cmp r4, r0 + beq _080EB10A + adds r0, #8 + cmp r4, r0 + bne _080EB130 +_080EB10A: + ldr r0, _080EB128 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB114 + b _080EB468 +_080EB114: + ldr r4, _080EB12C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x20 + b _080EB442 + .align 2, 0 +_080EB124: .4byte 0x000040EC +_080EB128: .4byte gUnknown_2039CE9 +_080EB12C: .4byte 0x000040EF +_080EB130: + ldr r3, _080EB17C + adds r0, r4, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080EB162 + movs r0, #0xb0 + lsls r0, r0, #2 + cmp r4, r0 + beq _080EB162 + adds r0, #1 + cmp r4, r0 + beq _080EB162 + adds r0, #1 + cmp r4, r0 + beq _080EB162 + adds r0, #6 + cmp r4, r0 + beq _080EB162 + adds r0, #1 + cmp r4, r0 + beq _080EB162 + adds r0, #1 + cmp r4, r0 + bne _080EB188 +_080EB162: + ldr r0, _080EB180 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB16C + b _080EB468 +_080EB16C: + ldr r4, _080EB184 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #1 + b _080EB442 + .align 2, 0 +_080EB17C: .4byte 0xFFFFFD48 +_080EB180: .4byte gUnknown_2039CE9 +_080EB184: .4byte 0x000040EE +_080EB188: + ldr r0, _080EB1B8 + cmp r4, r0 + beq _080EB1A0 + adds r0, #8 + cmp r4, r0 + beq _080EB1A0 + adds r0, #0x10 + cmp r4, r0 + beq _080EB1A0 + adds r0, #8 + cmp r4, r0 + bne _080EB1C4 +_080EB1A0: + ldr r0, _080EB1BC + ldrb r0, [r0] + cmp r0, #1 + beq _080EB1AA + b _080EB468 +_080EB1AA: + ldr r4, _080EB1C0 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #4 + b _080EB442 + .align 2, 0 +_080EB1B8: .4byte 0x00000239 +_080EB1BC: .4byte gUnknown_2039CE9 +_080EB1C0: .4byte 0x000040EE +_080EB1C4: + cmp r5, #0x34 + bne _080EB1CE + ldr r0, _080EB204 + cmp r4, r0 + beq _080EB1E6 +_080EB1CE: + cmp r5, #0x35 + bne _080EB214 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087B88 + ldr r1, _080EB208 + cmp r0, r1 + bne _080EB214 +_080EB1E6: + ldr r0, _080EB20C + ldrb r0, [r0] + cmp r0, #1 + beq _080EB1F0 + b _080EB468 +_080EB1F0: + ldr r4, _080EB210 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + b _080EB442 + .align 2, 0 +_080EB204: .4byte 0x0000026D +_080EB208: .4byte 0x0000026A +_080EB20C: .4byte gUnknown_2039CE9 +_080EB210: .4byte 0x000040EF +_080EB214: + cmp r5, #0xc1 + bne _080EB260 + ldr r0, _080EB254 + cmp r4, r0 + bne _080EB260 + ldr r0, _080EB258 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB228 + b _080EB468 +_080EB228: + ldr r4, _080EB25C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + b _080EB442 + .align 2, 0 +_080EB254: .4byte 0x0000023D +_080EB258: .4byte gUnknown_2039CE9 +_080EB25C: .4byte 0x000040EF +_080EB260: + cmp r5, #0x47 + bne _080EB2B0 + ldr r0, _080EB2A4 + cmp r4, r0 + bne _080EB2B0 + ldr r0, _080EB2A8 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB274 + b _080EB468 +_080EB274: + ldr r4, _080EB2AC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + eors r1, r0 + b _080EB444 + .align 2, 0 +_080EB2A4: .4byte 0x0000023E +_080EB2A8: .4byte gUnknown_2039CE9 +_080EB2AC: .4byte 0x000040EF +_080EB2B0: + adds r0, r5, #0 + bl sub_08088D2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB2E0 + ldr r0, _080EB2D8 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB2C8 + b _080EB468 +_080EB2C8: + ldr r4, _080EB2DC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x80 + b _080EB442 + .align 2, 0 +_080EB2D8: .4byte gUnknown_2039CE9 +_080EB2DC: .4byte 0x000040EF +_080EB2E0: + adds r0, r5, #0 + bl sub_08088CF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB374 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087B88 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, sp + movs r3, #0 + ldrsh r1, [r1, r3] + movs r3, #0 + ldrsh r2, [r6, r3] + bl sub_080FAE54 + ldr r0, _080EB340 + ldrb r0, [r0] + cmp r0, #1 + beq _080EB318 + b _080EB468 +_080EB318: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_08087B88 + adds r1, r0, #0 + movs r0, #0xce + lsls r0, r0, #2 + cmp r1, r0 + beq _080EB354 + cmp r1, r0 + bgt _080EB344 + movs r0, #0x8a + lsls r0, r0, #2 + cmp r1, r0 + beq _080EB35C + b _080EB468 + .align 2, 0 +_080EB340: .4byte gUnknown_2039CE9 +_080EB344: + movs r0, #0xcf + lsls r0, r0, #2 + cmp r1, r0 + beq _080EB354 + adds r0, #4 + cmp r1, r0 + beq _080EB354 + b _080EB468 +_080EB354: + ldr r4, _080EB358 + b _080EB438 + .align 2, 0 +_080EB358: .4byte 0x000040EE +_080EB35C: + ldr r4, _080EB370 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + b _080EB442 + .align 2, 0 +_080EB370: .4byte 0x000040EE +_080EB374: + adds r0, r5, #0 + bl sub_08088D04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB3C0 + ldr r0, _080EB3B8 + ldrb r0, [r0] + cmp r0, #1 + bne _080EB3A6 + ldr r4, _080EB3BC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EB3A6: + mov r0, sp + movs r3, #0 + ldrsh r0, [r0, r3] + movs r2, #0 + ldrsh r1, [r6, r2] + bl sub_080FB004 + b _080EB468 + .align 2, 0 +_080EB3B8: .4byte gUnknown_2039CE9 +_080EB3BC: .4byte 0x000040EF +_080EB3C0: + adds r0, r5, #0 + bl sub_08088D18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB3F0 + ldr r0, _080EB3E8 + ldrb r0, [r0] + cmp r0, #1 + bne _080EB468 + ldr r4, _080EB3EC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r3, #0x80 + lsls r3, r3, #8 + adds r0, r3, #0 + b _080EB442 + .align 2, 0 +_080EB3E8: .4byte gUnknown_2039CE9 +_080EB3EC: .4byte 0x000040EE +_080EB3F0: + adds r0, r5, #0 + bl sub_080891AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB420 + ldr r0, _080EB418 + ldrb r0, [r0] + cmp r0, #1 + bne _080EB468 + ldr r4, _080EB41C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #7 + adds r0, r2, #0 + b _080EB442 + .align 2, 0 +_080EB418: .4byte gUnknown_2039CE9 +_080EB41C: .4byte 0x000040EF +_080EB420: + adds r0, r5, #0 + bl sub_080891C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB468 + ldr r0, _080EB450 + ldrb r0, [r0] + cmp r0, #1 + bne _080EB468 + ldr r4, _080EB454 +_080EB438: + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #2 +_080EB442: + orrs r1, r0 +_080EB444: + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + b _080EB468 + .align 2, 0 +_080EB450: .4byte gUnknown_2039CE9 +_080EB454: .4byte 0x000040EF +_080EB458: + ldrb r0, [r5, #8] + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EB468 +_080EB464: + movs r0, #1 + strh r0, [r5, #2] +_080EB468: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080EB02C + + thumb_func_start sub_080EB470 +sub_080EB470: @ 0x080EB470 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r6, _080EB4BC + ldr r0, [r6] + lsls r2, r3, #2 + adds r2, r2, r3 + lsls r5, r2, #5 + adds r0, r0, r5 + ldr r2, _080EB4C0 + adds r0, r0, r2 + movs r2, #0xa0 + bl memcpy + ldr r2, [r6] + adds r2, r2, r5 + ldr r0, _080EB4C4 + adds r2, r2, r0 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + subs r4, #1 + cmp r4, #1 + bhi _080EB4B6 + ldr r0, [r6] + adds r0, r0, r5 + ldr r1, _080EB4C8 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] +_080EB4B6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EB4BC: .4byte gUnknown_3005AEC +_080EB4C0: .4byte 0x00001A9C +_080EB4C4: .4byte 0x00001A9D +_080EB4C8: .4byte 0x00001AA9 + thumb_func_end sub_080EB470 + + thumb_func_start sub_080EB4CC +sub_080EB4CC: @ 0x080EB4CC + push {r4, lr} + movs r2, #0 + adds r4, r0, #0 + adds r4, #9 + adds r3, r1, #0 + adds r3, #9 +_080EB4D8: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080EB4E8 + movs r0, #0 + b _080EB4F4 +_080EB4E8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080EB4D8 + movs r0, #1 +_080EB4F4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB4CC + + thumb_func_start sub_080EB4FC +sub_080EB4FC: @ 0x080EB4FC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r3, #0 + ldrb r0, [r6, #2] + cmp r0, #0xff + bne _080EB510 + ldrb r0, [r5, #2] + cmp r0, #0xff + beq _080EB53E +_080EB510: + adds r2, r6, #2 + adds r0, r2, r3 + adds r4, r5, #2 + adds r1, r4, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080EB524 + movs r0, #0 + b _080EB540 +_080EB524: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #6 + bhi _080EB53E + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, #0xff + bne _080EB510 + adds r0, r4, r3 + ldrb r0, [r0] + cmp r0, #0xff + bne _080EB510 +_080EB53E: + movs r0, #1 +_080EB540: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB4FC + + thumb_func_start sub_080EB548 +sub_080EB548: @ 0x080EB548 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r2, [r4, #1] + movs r0, #0x10 + adds r1, r0, #0 + ands r1, r2 + ldrb r2, [r5, #1] + ands r0, r2 + cmp r1, r0 + bne _080EB57E + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080EB4CC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EB57E + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080EB4FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EB57E + movs r0, #1 + b _080EB580 +_080EB57E: + movs r0, #0 +_080EB580: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB548 + + thumb_func_start sub_080EB588 +sub_080EB588: @ 0x080EB588 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0 + ldr r0, _080EB5B0 + ldr r2, [r0] + ldr r4, _080EB5B4 +_080EB596: + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + adds r0, r2, r0 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _080EB5B8 + adds r0, r1, #0 + b _080EB5C8 + .align 2, 0 +_080EB5B0: .4byte gUnknown_3005AEC +_080EB5B4: .4byte 0x00001A9C +_080EB5B8: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080EB596 + movs r0, #1 + rsbs r0, r0, #0 +_080EB5C8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB588 + + thumb_func_start sub_080EB5D0 +sub_080EB5D0: @ 0x080EB5D0 + push {r4, lr} + movs r2, #1 + ldr r0, _080EB5F4 + ldr r3, [r0] + ldr r4, _080EB5F8 +_080EB5DA: + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + adds r0, r3, r0 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080EB5FC + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + b _080EB60A + .align 2, 0 +_080EB5F4: .4byte gUnknown_3005AEC +_080EB5F8: .4byte 0x00001A9C +_080EB5FC: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080EB5DA + movs r0, #0 +_080EB60A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080EB5D0 + + thumb_func_start sub_080EB610 +sub_080EB610: @ 0x080EB610 + push {r4, lr} + movs r3, #1 + ldr r0, _080EB63C + ldr r4, [r0] +_080EB618: + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + adds r0, r4, r0 + ldr r1, _080EB640 + adds r0, r0, r1 + ldrb r1, [r0] + lsrs r0, r1, #6 + cmp r0, #0 + bne _080EB644 + lsls r0, r1, #0x1c + cmp r0, #0 + bne _080EB644 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + b _080EB654 + .align 2, 0 +_080EB63C: .4byte gUnknown_3005AEC +_080EB640: .4byte 0x00001A9D +_080EB644: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r2, r1 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _080EB618 + movs r0, #0 +_080EB654: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB610 + + thumb_func_start sub_080EB65C +sub_080EB65C: @ 0x080EB65C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _080EB6DE + ldrb r0, [r5] + bl sub_080EB588 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + beq _080EB6DE + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _080EB6B8 + ldr r0, _080EB6B0 + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #5 + adds r1, r1, r0 + ldr r0, _080EB6B4 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + beq _080EB6DE + lsrs r0, r1, #6 + cmp r0, #2 + bne _080EB6AA + ldrb r1, [r5, #1] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _080EB6DE +_080EB6AA: + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + b _080EB6D0 + .align 2, 0 +_080EB6B0: .4byte gUnknown_3005AEC +_080EB6B4: .4byte 0x00001A9D +_080EB6B8: + bl sub_080EB5D0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080EB6D0 + bl sub_080EB610 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _080EB6DE +_080EB6D0: + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080EB470 + adds r0, r4, #0 + b _080EB6E0 +_080EB6DE: + movs r0, #0 +_080EB6E0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EB65C + + thumb_func_start sub_080EB6E8 +sub_080EB6E8: @ 0x080EB6E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xa0 + ldr r0, _080EB790 + ldr r0, [r0] + ldr r1, _080EB794 + adds r7, r0, r1 + movs r2, #1 +_080EB6FC: + adds r1, r2, #1 + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + mov sb, r1 + cmp r5, #0x13 + bhi _080EB778 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #5 + adds r6, r0, r7 + movs r0, #0xc0 + mov r8, r0 +_080EB714: + ldrb r0, [r6, #1] + mov r3, r8 + ands r3, r0 + cmp r3, #0 + bne _080EB732 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #5 + adds r0, r0, r7 + ldrb r1, [r0, #1] + mov r0, r8 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0x40 + beq _080EB74A +_080EB732: + cmp r3, #0x80 + bne _080EB76E + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #5 + adds r0, r0, r7 + ldrb r1, [r0, #1] + mov r0, r8 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0x80 + beq _080EB76E +_080EB74A: + mov r0, sp + adds r1, r6, #0 + movs r2, #0xa0 + bl memcpy + adds r4, r4, r5 + lsls r4, r4, #5 + adds r4, r4, r7 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0xa0 + bl memcpy + adds r0, r4, #0 + mov r1, sp + movs r2, #0xa0 + bl memcpy +_080EB76E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EB714 +_080EB778: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x12 + bls _080EB6FC + add sp, #0xa0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EB790: .4byte gUnknown_3005AEC +_080EB794: .4byte 0x00001A9C + thumb_func_end sub_080EB6E8 + + thumb_func_start sub_080EB798 +sub_080EB798: @ 0x080EB798 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r4, #1 +_080EB7A2: + ldr r0, [r5] + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #5 + adds r2, r1, r0 + ldrb r0, [r2, #1] + lsrs r0, r0, #6 + cmp r0, r6 + bne _080EB7BC + ldr r1, [r5, #4] + adds r0, r2, #0 + bl sub_080EB65C +_080EB7BC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _080EB7A2 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080EB798 + + thumb_func_start sub_080EB7CC +sub_080EB7CC: @ 0x080EB7CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5] + cmp r0, #0 + beq _080EB7E8 + ldrb r0, [r5, #1] + lsls r0, r0, #0x1b + ldr r1, _080EB7EC + ldr r3, [r1] + lsrs r0, r0, #0x1f + adds r6, r1, #0 + ldrb r1, [r3, #8] + cmp r0, r1 + beq _080EB7F0 +_080EB7E8: + movs r0, #0 + b _080EB846 + .align 2, 0 +_080EB7EC: .4byte gUnknown_3005AF0 +_080EB7F0: + movs r2, #0 + adds r4, r5, #0 + adds r4, #9 + adds r3, #0xa +_080EB7F8: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _080EB7E8 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080EB7F8 + movs r2, #0 + ldrb r0, [r5, #2] + cmp r0, #0xff + bne _080EB81A + ldr r0, [r6] + b _080EB83E +_080EB81A: + adds r3, r5, #2 + adds r0, r3, r2 + ldr r4, [r6] + adds r1, r4, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _080EB7E8 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #6 + bhi _080EB844 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _080EB81A + adds r0, r4, r2 +_080EB83E: + ldrb r0, [r0] + cmp r0, #0xff + bne _080EB81A +_080EB844: + movs r0, #1 +_080EB846: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080EB7CC + + thumb_func_start sub_080EB84C +sub_080EB84C: @ 0x080EB84C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov sb, r1 + mov r8, r2 + movs r5, #0 + movs r6, #0 +_080EB860: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _080EB88A + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #5 + mov r1, sl + adds r4, r1, r0 + adds r0, r4, #0 + bl sub_080EB7CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB88A + adds r0, r4, #0 + bl sub_080E977C + movs r0, #1 + orrs r5, r0 +_080EB88A: + movs r7, #2 + movs r0, #2 + ands r0, r5 + cmp r0, #0 + bne _080EB8B8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #5 + mov r1, sb + adds r4, r1, r0 + adds r0, r4, #0 + bl sub_080EB7CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB8B8 + adds r0, r4, #0 + bl sub_080E977C + orrs r5, r7 + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 +_080EB8B8: + movs r7, #4 + movs r0, #4 + ands r0, r5 + cmp r0, #0 + bne _080EB8E6 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, #0 + bl sub_080EB7CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB8E6 + adds r0, r4, #0 + bl sub_080E977C + orrs r5, r7 + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 +_080EB8E6: + cmp r5, #7 + beq _080EB8F4 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x13 + bls _080EB860 +_080EB8F4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EB84C + + thumb_func_start sub_080EB904 +sub_080EB904: @ 0x080EB904 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r5, #0 +_080EB914: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #5 + mov r1, r8 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _080EB96E + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080EB548 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EB96E + cmp r7, #0 + bne _080EB940 + adds r0, r4, #0 + bl sub_080E977C + b _080EB978 +_080EB940: + ldrh r0, [r6, #0xe] + ldrh r3, [r4, #0xe] + cmp r0, r3 + bls _080EB950 + adds r0, r4, #0 + bl sub_080E977C + b _080EB978 +_080EB950: + ldrb r0, [r6, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r4, #1] + movs r3, #0x10 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #1] + adds r0, r6, #0 + bl sub_080E977C + movs r0, #1 + b _080EB97A +_080EB96E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EB914 +_080EB978: + movs r0, #0 +_080EB97A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080EB904 + + thumb_func_start sub_080EB984 +sub_080EB984: @ 0x080EB984 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r7, r1, #0 + mov r8, r2 + adds r6, r3, #0 + movs r5, #1 +_080EB996: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #5 + mov r1, sb + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _080EB9E8 + ldrb r1, [r4, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x40 + bne _080EB9BE + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] +_080EB9BE: + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r5, #0 + bl sub_080EB904 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EB9E8 + adds r0, r4, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_080EB904 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EB9E8 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080EB904 +_080EB9E8: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EB996 + movs r5, #0 +_080EB9F4: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #5 + adds r4, r0, r7 + ldrb r0, [r4] + cmp r0, #0 + beq _080EBA28 + ldrb r0, [r4, #1] + movs r2, #0x21 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r4, #1] + adds r0, r4, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_080EB904 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EBA28 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080EB904 +_080EBA28: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EB9F4 + movs r5, #0 + movs r0, #0x21 + rsbs r0, r0, #0 + adds r7, r0, #0 +_080EBA3A: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r4, r0, #5 + mov r2, r8 + adds r1, r4, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _080EBA5A + ldrb r0, [r1, #1] + ands r0, r7 + strb r0, [r1, #1] + adds r0, r1, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080EB904 +_080EBA5A: + adds r1, r4, r6 + ldrb r0, [r1] + cmp r0, #0 + beq _080EBA68 + ldrb r0, [r1, #1] + ands r0, r7 + strb r0, [r1, #1] +_080EBA68: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x13 + bls _080EBA3A + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EB984 + + thumb_func_start sub_080EBA80 +sub_080EBA80: @ 0x080EBA80 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + ldrb r1, [r4, #1] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _080EBA9E + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080EB65C + adds r0, r4, #0 + bl sub_080E977C +_080EBA9E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080EBA80 + + thumb_func_start sub_080EBAA4 +sub_080EBAA4: @ 0x080EBAA4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 +_080EBAAA: + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #5 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, [r5, #4] + bl sub_080EBA80 + ldr r0, [r5, #8] + adds r0, r0, r4 + ldr r1, [r5, #0xc] + bl sub_080EBA80 + ldr r0, [r5, #0x10] + adds r0, r0, r4 + ldr r1, [r5, #0x14] + bl sub_080EBA80 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x13 + bls _080EBAAA + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EBAA4 + + thumb_func_start sub_080EBAE0 +sub_080EBAE0: @ 0x080EBAE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, [r4] + ldr r1, [r4, #8] + ldr r2, [r4, #0x10] + bl sub_080EB84C + ldr r0, _080EBB5C + ldr r0, [r0] + ldr r1, _080EBB60 + adds r0, r0, r1 + ldr r1, [r4] + ldr r2, [r4, #8] + ldr r3, [r4, #0x10] + bl sub_080EB984 + adds r0, r4, #0 + bl sub_080EBAA4 + ldr r0, [r4] + ldr r1, [r4, #4] + bl sub_080EB65C + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl sub_080EB65C + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl sub_080EB65C + adds r0, r4, #0 + movs r1, #1 + bl sub_080EB798 + adds r6, r4, #0 + adds r6, #8 + adds r0, r6, #0 + movs r1, #1 + bl sub_080EB798 + adds r5, r4, #0 + adds r5, #0x10 + adds r0, r5, #0 + movs r1, #1 + bl sub_080EB798 + adds r0, r4, #0 + movs r1, #0 + bl sub_080EB798 + adds r0, r6, #0 + movs r1, #0 + bl sub_080EB798 + adds r0, r5, #0 + movs r1, #0 + bl sub_080EB798 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EBB5C: .4byte gUnknown_3005AEC +_080EBB60: .4byte 0x00001A9C + thumb_func_end sub_080EBAE0 + + thumb_func_start sub_080EBB64 +sub_080EBB64: @ 0x080EBB64 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + adds r6, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r0, #0x60 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EBB7E + b _080EBD0C +_080EBB7E: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080EBB90 + cmp r0, #3 + beq _080EBBAC + b _080EBBBA +_080EBB90: + lsls r4, r5, #1 + adds r0, r6, r4 + movs r1, #0 + adds r2, r5, #0 + bl memset + adds r4, r4, r5 + adds r4, r6, r4 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl memset + b _080EBBBA +_080EBBAC: + lsls r0, r5, #1 + adds r0, r0, r5 + adds r0, r6, r0 + movs r1, #0 + adds r2, r5, #0 + bl memset +_080EBBBA: + cmp r7, #1 + beq _080EBC00 + cmp r7, #1 + bgt _080EBBC8 + cmp r7, #0 + beq _080EBBD2 + b _080EBC76 +_080EBBC8: + cmp r7, #2 + beq _080EBC30 + cmp r7, #3 + beq _080EBC58 + b _080EBC76 +_080EBBD2: + adds r0, r6, r5 + str r0, [sp] + ldr r3, _080EBBFC + movs r4, #0xff + ldrb r0, [r3, #0x1c] + str r0, [sp, #4] + lsls r1, r5, #1 + adds r0, r6, r1 + str r0, [sp, #8] + ldrh r2, [r3, #0x38] + adds r0, r4, #0 + ands r0, r2 + str r0, [sp, #0xc] + adds r1, r1, r5 + adds r1, r6, r1 + str r1, [sp, #0x10] + adds r3, #0x54 + ldrh r0, [r3] + ands r4, r0 + str r4, [sp, #0x14] + b _080EBC76 + .align 2, 0 +_080EBBFC: .4byte gUnknown_20226A0 +_080EBC00: + lsls r2, r5, #1 + adds r0, r6, r2 + str r0, [sp] + ldr r4, _080EBC2C + ldrh r3, [r4, #0x38] + movs r1, #0xff + adds r0, r1, #0 + ands r0, r3 + str r0, [sp, #4] + adds r2, r2, r5 + adds r2, r6, r2 + str r2, [sp, #8] + adds r0, r4, #0 + adds r0, #0x54 + ldrh r2, [r0] + adds r0, r1, #0 + ands r0, r2 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + ldrh r0, [r4] + b _080EBC72 + .align 2, 0 +_080EBC2C: .4byte gUnknown_20226A0 +_080EBC30: + lsls r0, r5, #1 + adds r0, r0, r5 + adds r0, r6, r0 + str r0, [sp] + ldr r1, _080EBC54 + adds r0, r1, #0 + adds r0, #0x54 + ldrb r0, [r0] + str r0, [sp, #4] + str r6, [sp, #8] + ldrb r0, [r1] + str r0, [sp, #0xc] + adds r0, r6, r5 + str r0, [sp, #0x10] + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x14] + b _080EBC76 + .align 2, 0 +_080EBC54: .4byte gUnknown_20226A0 +_080EBC58: + str r6, [sp] + ldr r2, _080EBD14 + ldrb r0, [r2] + str r0, [sp, #4] + adds r0, r6, r5 + str r0, [sp, #8] + movs r1, #0xff + ldrb r0, [r2, #0x1c] + str r0, [sp, #0xc] + lsls r0, r5, #1 + adds r0, r6, r0 + str r0, [sp, #0x10] + ldrh r0, [r2, #0x38] +_080EBC72: + ands r1, r0 + str r1, [sp, #0x14] +_080EBC76: + mov r0, sp + bl sub_080EBAE0 + movs r3, #1 + ldr r6, _080EBD18 + movs r7, #0x10 + rsbs r7, r7, #0 +_080EBC84: + ldr r0, [r6] + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r4, r1, #5 + adds r0, r0, r4 + ldr r5, _080EBD1C + adds r2, r0, r5 + ldrb r1, [r2] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bne _080EBCB4 + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r6] + adds r1, r1, r4 + adds r1, r1, r5 + ldrb r2, [r1] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1] +_080EBCB4: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x13 + bls _080EBC84 + bl sub_080EB6E8 + movs r3, #1 + ldr r7, _080EBD18 + adds r6, r7, #0 + adds r4, r5, #0 + movs r5, #0x3f +_080EBCCC: + ldr r0, [r6] + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #5 + adds r0, r0, r1 + adds r2, r0, r4 + ldrb r1, [r2] + lsrs r0, r1, #6 + cmp r0, #2 + bne _080EBCE6 + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2] +_080EBCE6: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x13 + bls _080EBCCC + ldr r1, [r7] + ldr r2, _080EBD20 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080EBD0C + ldr r0, _080EBD24 + adds r2, r1, r0 + ldrh r1, [r2] + ldr r0, _080EBD28 + cmp r1, r0 + beq _080EBD0C + adds r0, r1, #1 + strh r0, [r2] +_080EBD0C: + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EBD14: .4byte gUnknown_20226A0 +_080EBD18: .4byte gUnknown_3005AEC +_080EBD1C: .4byte 0x00001A9D +_080EBD20: .4byte 0x00001A9C +_080EBD24: .4byte 0x00001AAA +_080EBD28: .4byte 0x0000FFFF + thumb_func_end sub_080EBB64 + + thumb_func_start sub_080EBD2C +sub_080EBD2C: @ 0x080EBD2C + push {r4, r5, lr} + movs r5, #0 + adds r4, r0, #0 +_080EBD32: + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _080EBD3E + adds r0, r4, #0 + bl sub_080E977C +_080EBD3E: + adds r4, #0xa0 + adds r5, #1 + cmp r5, #0x13 + bls _080EBD32 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080EBD2C + + thumb_func_start sub_080EBD4C +sub_080EBD4C: @ 0x080EBD4C + push {lr} + ldr r0, _080EBD84 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBD88 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBD8C + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBD90 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBD94 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBD9C + ldr r0, _080EBD98 + movs r1, #1 + bl sub_0809CF88 + b _080EBDA4 + .align 2, 0 +_080EBD84: .4byte 0x000040EC +_080EBD88: .4byte 0x000040ED +_080EBD8C: .4byte 0x000040EE +_080EBD90: .4byte 0x000040EF +_080EBD94: .4byte 0x00004054 +_080EBD98: .4byte 0x000040F0 +_080EBD9C: + ldr r0, _080EBDB0 + movs r1, #0 + bl sub_0809CF88 +_080EBDA4: + ldr r1, _080EBDB4 + movs r0, #0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080EBDB0: .4byte 0x000040F0 +_080EBDB4: .4byte gUnknown_2039CE9 + thumb_func_end sub_080EBD4C + + thumb_func_start sub_080EBDB8 +sub_080EBDB8: @ 0x080EBDB8 + push {r4, r5, r6, lr} + ldr r5, _080EBE18 + adds r0, r5, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBE12 + ldr r6, _080EBE1C + ldrb r0, [r6] + cmp r0, #1 + bne _080EBE12 + bl sub_080E9EA0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080EBE12 + adds r0, r5, #0 + movs r1, #0 + bl sub_0809CF88 + strb r4, [r6] + bl sub_080EF588 + ldr r0, _080EBE20 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBE24 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBE28 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080EBE2C + movs r1, #0 + bl sub_0809CF88 + adds r0, r5, #0 + movs r1, #0 + bl sub_0809CF88 +_080EBE12: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EBE18: .4byte 0x000040F0 +_080EBE1C: .4byte gUnknown_2039CE9 +_080EBE20: .4byte 0x000040EC +_080EBE24: .4byte 0x000040ED +_080EBE28: .4byte 0x000040EE +_080EBE2C: .4byte 0x000040EF + thumb_func_end sub_080EBDB8 + + thumb_func_start sub_080EBE30 +sub_080EBE30: @ 0x080EBE30 + push {r4, lr} + ldr r0, _080EBE60 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBE5A + ldr r4, _080EBE64 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EBE5A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EBE60: .4byte 0x00004054 +_080EBE64: .4byte 0x000040EF + thumb_func_end sub_080EBE30 + + thumb_func_start sub_080EBE68 +sub_080EBE68: @ 0x080EBE68 + push {r4, lr} + ldr r0, _080EBE98 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBE92 + ldr r4, _080EBE9C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EBE92: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EBE98: .4byte 0x00004054 +_080EBE9C: .4byte 0x000040EE + thumb_func_end sub_080EBE68 + + thumb_func_start sub_080EBEA0 +sub_080EBEA0: @ 0x080EBEA0 + push {r4, r5, lr} + ldr r0, _080EBEF4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBEEC + ldr r5, _080EBEF8 + adds r0, r5, #0 + bl sub_0809CF6C + ldr r1, _080EBEFC + ands r1, r0 + adds r0, r5, #0 + bl sub_0809CF88 + ldr r4, _080EBF00 + adds r0, r4, #0 + bl sub_0809CF6C + ldr r1, _080EBF04 + ands r1, r0 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r5, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0809CF88 +_080EBEEC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBEF4: .4byte 0x00004054 +_080EBEF8: .4byte 0x000040EE +_080EBEFC: .4byte 0x0000C7FF +_080EBF00: .4byte 0x000040EF +_080EBF04: .4byte 0x0000FFFE + thumb_func_end sub_080EBEA0 + + thumb_func_start sub_080EBF08 +sub_080EBF08: @ 0x080EBF08 + push {r4, r5, lr} + ldr r0, _080EBF5C + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBF54 + ldr r5, _080EBF60 + adds r0, r5, #0 + bl sub_0809CF6C + ldr r1, _080EBF64 + ands r1, r0 + adds r0, r5, #0 + bl sub_0809CF88 + ldr r4, _080EBF68 + adds r0, r4, #0 + bl sub_0809CF6C + ldr r1, _080EBF6C + ands r1, r0 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r5, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0809CF88 +_080EBF54: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBF5C: .4byte 0x00004054 +_080EBF60: .4byte 0x000040EE +_080EBF64: .4byte 0x0000C7FF +_080EBF68: .4byte 0x000040EF +_080EBF6C: .4byte 0x0000FFFE + thumb_func_end sub_080EBF08 + + thumb_func_start sub_080EBF70 +sub_080EBF70: @ 0x080EBF70 + push {r4, r5, lr} + ldr r0, _080EBFC4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EBFBC + ldr r5, _080EBFC8 + adds r0, r5, #0 + bl sub_0809CF6C + ldr r1, _080EBFCC + ands r1, r0 + adds r0, r5, #0 + bl sub_0809CF88 + ldr r4, _080EBFD0 + adds r0, r4, #0 + bl sub_0809CF6C + ldr r1, _080EBFD4 + ands r1, r0 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r5, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0809CF88 +_080EBFBC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EBFC4: .4byte 0x00004054 +_080EBFC8: .4byte 0x000040EE +_080EBFCC: .4byte 0x0000C7FF +_080EBFD0: .4byte 0x000040EF +_080EBFD4: .4byte 0x0000FFFE + thumb_func_end sub_080EBF70 + + thumb_func_start sub_080EBFD8 +sub_080EBFD8: @ 0x080EBFD8 + push {r4, lr} + ldr r0, _080EC028 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC020 + ldr r4, _080EC02C + adds r0, r4, #0 + bl sub_0809CF6C + ldr r1, _080EC030 + ands r1, r0 + adds r0, r4, #0 + bl sub_0809CF88 + adds r4, #1 + adds r0, r4, #0 + bl sub_0809CF6C + ldr r1, _080EC034 + ands r1, r0 + adds r0, r4, #0 + bl sub_0809CF88 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #1 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EC020: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC028: .4byte 0x00004054 +_080EC02C: .4byte 0x000040EE +_080EC030: .4byte 0x0000C7FF +_080EC034: .4byte 0x0000FFFE + thumb_func_end sub_080EBFD8 + + thumb_func_start sub_080EC038 +sub_080EC038: @ 0x080EC038 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + ldr r1, _080EC068 + adds r0, r0, r1 + cmp r0, #0x18 + bhi _080EC0FC + lsls r0, r0, #2 + ldr r1, _080EC06C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EC068: .4byte 0xFFFFFCE4 +_080EC06C: .4byte _080EC070 +_080EC070: @ jump table + .4byte _080EC0D4 @ case 0 + .4byte _080EC0D4 @ case 1 + .4byte _080EC0D4 @ case 2 + .4byte _080EC0D4 @ case 3 + .4byte _080EC0FC @ case 4 + .4byte _080EC0FC @ case 5 + .4byte _080EC0FC @ case 6 + .4byte _080EC0FC @ case 7 + .4byte _080EC0D4 @ case 8 + .4byte _080EC0D4 @ case 9 + .4byte _080EC0D4 @ case 10 + .4byte _080EC0D4 @ case 11 + .4byte _080EC0FC @ case 12 + .4byte _080EC0FC @ case 13 + .4byte _080EC0FC @ case 14 + .4byte _080EC0FC @ case 15 + .4byte _080EC0D4 @ case 16 + .4byte _080EC0D4 @ case 17 + .4byte _080EC0FC @ case 18 + .4byte _080EC0FC @ case 19 + .4byte _080EC0D4 @ case 20 + .4byte _080EC0D4 @ case 21 + .4byte _080EC0D4 @ case 22 + .4byte _080EC0D4 @ case 23 + .4byte _080EC0D4 @ case 24 +_080EC0D4: + ldr r0, _080EC104 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC0FC + ldr r4, _080EC108 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #7 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EC0FC: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC104: .4byte 0x00004054 +_080EC108: .4byte 0x000040EE + thumb_func_end sub_080EC038 + + thumb_func_start sub_080EC10C +sub_080EC10C: @ 0x080EC10C + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + ldr r1, _080EC140 + adds r0, r0, r1 + cmp r0, #0xcf + bls _080EC134 + b _080EC570 +_080EC134: + lsls r0, r0, #2 + ldr r1, _080EC144 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EC140: .4byte 0xFFFFFDD4 +_080EC144: .4byte _080EC148 +_080EC148: @ jump table + .4byte _080EC4D0 @ case 0 + .4byte _080EC51C @ case 1 + .4byte _080EC51C @ case 2 + .4byte _080EC51C @ case 3 + .4byte _080EC570 @ case 4 + .4byte _080EC570 @ case 5 + .4byte _080EC570 @ case 6 + .4byte _080EC4D0 @ case 7 + .4byte _080EC570 @ case 8 + .4byte _080EC570 @ case 9 + .4byte _080EC570 @ case 10 + .4byte _080EC570 @ case 11 + .4byte _080EC570 @ case 12 + .4byte _080EC570 @ case 13 + .4byte _080EC570 @ case 14 + .4byte _080EC570 @ case 15 + .4byte _080EC570 @ case 16 + .4byte _080EC570 @ case 17 + .4byte _080EC570 @ case 18 + .4byte _080EC570 @ case 19 + .4byte _080EC570 @ case 20 + .4byte _080EC570 @ case 21 + .4byte _080EC570 @ case 22 + .4byte _080EC570 @ case 23 + .4byte _080EC570 @ case 24 + .4byte _080EC570 @ case 25 + .4byte _080EC570 @ case 26 + .4byte _080EC570 @ case 27 + .4byte _080EC570 @ case 28 + .4byte _080EC570 @ case 29 + .4byte _080EC570 @ case 30 + .4byte _080EC570 @ case 31 + .4byte _080EC570 @ case 32 + .4byte _080EC570 @ case 33 + .4byte _080EC570 @ case 34 + .4byte _080EC570 @ case 35 + .4byte _080EC570 @ case 36 + .4byte _080EC570 @ case 37 + .4byte _080EC570 @ case 38 + .4byte _080EC570 @ case 39 + .4byte _080EC570 @ case 40 + .4byte _080EC570 @ case 41 + .4byte _080EC570 @ case 42 + .4byte _080EC570 @ case 43 + .4byte _080EC570 @ case 44 + .4byte _080EC570 @ case 45 + .4byte _080EC570 @ case 46 + .4byte _080EC570 @ case 47 + .4byte _080EC570 @ case 48 + .4byte _080EC570 @ case 49 + .4byte _080EC570 @ case 50 + .4byte _080EC570 @ case 51 + .4byte _080EC570 @ case 52 + .4byte _080EC570 @ case 53 + .4byte _080EC570 @ case 54 + .4byte _080EC570 @ case 55 + .4byte _080EC570 @ case 56 + .4byte _080EC570 @ case 57 + .4byte _080EC570 @ case 58 + .4byte _080EC570 @ case 59 + .4byte _080EC570 @ case 60 + .4byte _080EC570 @ case 61 + .4byte _080EC570 @ case 62 + .4byte _080EC570 @ case 63 + .4byte _080EC570 @ case 64 + .4byte _080EC570 @ case 65 + .4byte _080EC570 @ case 66 + .4byte _080EC570 @ case 67 + .4byte _080EC570 @ case 68 + .4byte _080EC570 @ case 69 + .4byte _080EC570 @ case 70 + .4byte _080EC570 @ case 71 + .4byte _080EC570 @ case 72 + .4byte _080EC570 @ case 73 + .4byte _080EC570 @ case 74 + .4byte _080EC570 @ case 75 + .4byte _080EC570 @ case 76 + .4byte _080EC570 @ case 77 + .4byte _080EC570 @ case 78 + .4byte _080EC570 @ case 79 + .4byte _080EC570 @ case 80 + .4byte _080EC570 @ case 81 + .4byte _080EC570 @ case 82 + .4byte _080EC570 @ case 83 + .4byte _080EC570 @ case 84 + .4byte _080EC570 @ case 85 + .4byte _080EC570 @ case 86 + .4byte _080EC570 @ case 87 + .4byte _080EC570 @ case 88 + .4byte _080EC570 @ case 89 + .4byte _080EC570 @ case 90 + .4byte _080EC54C @ case 91 + .4byte _080EC4F4 @ case 92 + .4byte _080EC4F4 @ case 93 + .4byte _080EC488 @ case 94 + .4byte _080EC488 @ case 95 + .4byte _080EC570 @ case 96 + .4byte _080EC570 @ case 97 + .4byte _080EC570 @ case 98 + .4byte _080EC54C @ case 99 + .4byte _080EC570 @ case 100 + .4byte _080EC570 @ case 101 + .4byte _080EC570 @ case 102 + .4byte _080EC570 @ case 103 + .4byte _080EC570 @ case 104 + .4byte _080EC570 @ case 105 + .4byte _080EC570 @ case 106 + .4byte _080EC570 @ case 107 + .4byte _080EC54C @ case 108 + .4byte _080EC54C @ case 109 + .4byte _080EC54C @ case 110 + .4byte _080EC54C @ case 111 + .4byte _080EC54C @ case 112 + .4byte _080EC54C @ case 113 + .4byte _080EC54C @ case 114 + .4byte _080EC54C @ case 115 + .4byte _080EC570 @ case 116 + .4byte _080EC570 @ case 117 + .4byte _080EC570 @ case 118 + .4byte _080EC570 @ case 119 + .4byte _080EC570 @ case 120 + .4byte _080EC570 @ case 121 + .4byte _080EC570 @ case 122 + .4byte _080EC570 @ case 123 + .4byte _080EC570 @ case 124 + .4byte _080EC570 @ case 125 + .4byte _080EC570 @ case 126 + .4byte _080EC54C @ case 127 + .4byte _080EC570 @ case 128 + .4byte _080EC570 @ case 129 + .4byte _080EC570 @ case 130 + .4byte _080EC570 @ case 131 + .4byte _080EC54C @ case 132 + .4byte _080EC54C @ case 133 + .4byte _080EC54C @ case 134 + .4byte _080EC570 @ case 135 + .4byte _080EC54C @ case 136 + .4byte _080EC54C @ case 137 + .4byte _080EC54C @ case 138 + .4byte _080EC54C @ case 139 + .4byte _080EC570 @ case 140 + .4byte _080EC570 @ case 141 + .4byte _080EC570 @ case 142 + .4byte _080EC570 @ case 143 + .4byte _080EC570 @ case 144 + .4byte _080EC570 @ case 145 + .4byte _080EC570 @ case 146 + .4byte _080EC570 @ case 147 + .4byte _080EC570 @ case 148 + .4byte _080EC570 @ case 149 + .4byte _080EC570 @ case 150 + .4byte _080EC570 @ case 151 + .4byte _080EC570 @ case 152 + .4byte _080EC570 @ case 153 + .4byte _080EC570 @ case 154 + .4byte _080EC570 @ case 155 + .4byte _080EC570 @ case 156 + .4byte _080EC570 @ case 157 + .4byte _080EC570 @ case 158 + .4byte _080EC54C @ case 159 + .4byte _080EC54C @ case 160 + .4byte _080EC54C @ case 161 + .4byte _080EC54C @ case 162 + .4byte _080EC54C @ case 163 + .4byte _080EC570 @ case 164 + .4byte _080EC570 @ case 165 + .4byte _080EC570 @ case 166 + .4byte _080EC570 @ case 167 + .4byte _080EC570 @ case 168 + .4byte _080EC570 @ case 169 + .4byte _080EC570 @ case 170 + .4byte _080EC570 @ case 171 + .4byte _080EC4AC @ case 172 + .4byte _080EC4AC @ case 173 + .4byte _080EC4AC @ case 174 + .4byte _080EC4AC @ case 175 + .4byte _080EC4AC @ case 176 + .4byte _080EC4AC @ case 177 + .4byte _080EC570 @ case 178 + .4byte _080EC570 @ case 179 + .4byte _080EC570 @ case 180 + .4byte _080EC570 @ case 181 + .4byte _080EC570 @ case 182 + .4byte _080EC570 @ case 183 + .4byte _080EC570 @ case 184 + .4byte _080EC570 @ case 185 + .4byte _080EC570 @ case 186 + .4byte _080EC570 @ case 187 + .4byte _080EC4AC @ case 188 + .4byte _080EC4AC @ case 189 + .4byte _080EC4AC @ case 190 + .4byte _080EC4AC @ case 191 + .4byte _080EC4AC @ case 192 + .4byte _080EC4AC @ case 193 + .4byte _080EC4AC @ case 194 + .4byte _080EC4AC @ case 195 + .4byte _080EC570 @ case 196 + .4byte _080EC570 @ case 197 + .4byte _080EC570 @ case 198 + .4byte _080EC570 @ case 199 + .4byte _080EC570 @ case 200 + .4byte _080EC570 @ case 201 + .4byte _080EC570 @ case 202 + .4byte _080EC570 @ case 203 + .4byte _080EC4AC @ case 204 + .4byte _080EC4AC @ case 205 + .4byte _080EC4AC @ case 206 + .4byte _080EC4AC @ case 207 +_080EC488: + ldr r0, _080EC4A4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC4A8 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x40 + b _080EC534 + .align 2, 0 +_080EC4A4: .4byte 0x00004054 +_080EC4A8: .4byte 0x000040EE +_080EC4AC: + ldr r0, _080EC4C8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC4CC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #8 + b _080EC534 + .align 2, 0 +_080EC4C8: .4byte 0x00004054 +_080EC4CC: .4byte 0x000040EE +_080EC4D0: + ldr r0, _080EC4EC + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC4F0 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x40 + b _080EC534 + .align 2, 0 +_080EC4EC: .4byte 0x00004054 +_080EC4F0: .4byte 0x000040EF +_080EC4F4: + ldr r0, _080EC514 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC518 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + b _080EC534 + .align 2, 0 +_080EC514: .4byte 0x00004054 +_080EC518: .4byte 0x000040EF +_080EC51C: + ldr r0, _080EC544 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC548 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x10 +_080EC534: + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + b _080EC570 + .align 2, 0 +_080EC544: .4byte 0x00004054 +_080EC548: .4byte 0x000040EF +_080EC54C: + ldr r0, _080EC578 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC570 + ldr r4, _080EC57C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EC570: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC578: .4byte 0x00004054 +_080EC57C: .4byte 0x000040EF + thumb_func_end sub_080EC10C + + thumb_func_start sub_080EC580 +sub_080EC580: @ 0x080EC580 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + ldr r1, _080EC5B4 + adds r0, r0, r1 + cmp r0, #0x35 + bls _080EC5A8 + b _080EC6B8 +_080EC5A8: + lsls r0, r0, #2 + ldr r1, _080EC5B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EC5B4: .4byte 0xFFFFFD6F +_080EC5B8: .4byte _080EC5BC +_080EC5BC: @ jump table + .4byte _080EC694 @ case 0 + .4byte _080EC6B8 @ case 1 + .4byte _080EC6B8 @ case 2 + .4byte _080EC694 @ case 3 + .4byte _080EC6B8 @ case 4 + .4byte _080EC6B8 @ case 5 + .4byte _080EC694 @ case 6 + .4byte _080EC6B8 @ case 7 + .4byte _080EC6B8 @ case 8 + .4byte _080EC6B8 @ case 9 + .4byte _080EC6B8 @ case 10 + .4byte _080EC6B8 @ case 11 + .4byte _080EC6B8 @ case 12 + .4byte _080EC6B8 @ case 13 + .4byte _080EC6B8 @ case 14 + .4byte _080EC6B8 @ case 15 + .4byte _080EC694 @ case 16 + .4byte _080EC6B8 @ case 17 + .4byte _080EC6B8 @ case 18 + .4byte _080EC6B8 @ case 19 + .4byte _080EC694 @ case 20 + .4byte _080EC6B8 @ case 21 + .4byte _080EC6B8 @ case 22 + .4byte _080EC6B8 @ case 23 + .4byte _080EC694 @ case 24 + .4byte _080EC6B8 @ case 25 + .4byte _080EC6B8 @ case 26 + .4byte _080EC6B8 @ case 27 + .4byte _080EC694 @ case 28 + .4byte _080EC6B8 @ case 29 + .4byte _080EC6B8 @ case 30 + .4byte _080EC6B8 @ case 31 + .4byte _080EC6B8 @ case 32 + .4byte _080EC6B8 @ case 33 + .4byte _080EC6B8 @ case 34 + .4byte _080EC6B8 @ case 35 + .4byte _080EC6B8 @ case 36 + .4byte _080EC6B8 @ case 37 + .4byte _080EC6B8 @ case 38 + .4byte _080EC6B8 @ case 39 + .4byte _080EC6B8 @ case 40 + .4byte _080EC6B8 @ case 41 + .4byte _080EC694 @ case 42 + .4byte _080EC6B8 @ case 43 + .4byte _080EC6B8 @ case 44 + .4byte _080EC694 @ case 45 + .4byte _080EC6B8 @ case 46 + .4byte _080EC6B8 @ case 47 + .4byte _080EC6B8 @ case 48 + .4byte _080EC6B8 @ case 49 + .4byte _080EC694 @ case 50 + .4byte _080EC6B8 @ case 51 + .4byte _080EC6B8 @ case 52 + .4byte _080EC694 @ case 53 +_080EC694: + ldr r0, _080EC6C0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080EC6B8 + ldr r4, _080EC6C4 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080EC6B8: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EC6C0: .4byte 0x00004054 +_080EC6C4: .4byte 0x000040EF + thumb_func_end sub_080EC580 + + thumb_func_start sub_080EC6C8 +sub_080EC6C8: @ 0x080EC6C8 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + ldr r1, _080EC6FC + adds r0, r0, r1 + cmp r0, #0xa2 + bls _080EC6F0 + b _080ECA0C +_080EC6F0: + lsls r0, r0, #2 + ldr r1, _080EC700 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EC6FC: .4byte 0xFFFFFDDB +_080EC700: .4byte _080EC704 +_080EC704: @ jump table + .4byte _080EC9E8 @ case 0 + .4byte _080EC9E8 @ case 1 + .4byte _080EC9E8 @ case 2 + .4byte _080ECA0C @ case 3 + .4byte _080ECA0C @ case 4 + .4byte _080ECA0C @ case 5 + .4byte _080ECA0C @ case 6 + .4byte _080ECA0C @ case 7 + .4byte _080ECA0C @ case 8 + .4byte _080ECA0C @ case 9 + .4byte _080ECA0C @ case 10 + .4byte _080ECA0C @ case 11 + .4byte _080ECA0C @ case 12 + .4byte _080ECA0C @ case 13 + .4byte _080ECA0C @ case 14 + .4byte _080ECA0C @ case 15 + .4byte _080ECA0C @ case 16 + .4byte _080ECA0C @ case 17 + .4byte _080ECA0C @ case 18 + .4byte _080ECA0C @ case 19 + .4byte _080ECA0C @ case 20 + .4byte _080ECA0C @ case 21 + .4byte _080ECA0C @ case 22 + .4byte _080ECA0C @ case 23 + .4byte _080ECA0C @ case 24 + .4byte _080ECA0C @ case 25 + .4byte _080ECA0C @ case 26 + .4byte _080ECA0C @ case 27 + .4byte _080ECA0C @ case 28 + .4byte _080ECA0C @ case 29 + .4byte _080ECA0C @ case 30 + .4byte _080ECA0C @ case 31 + .4byte _080ECA0C @ case 32 + .4byte _080ECA0C @ case 33 + .4byte _080ECA0C @ case 34 + .4byte _080ECA0C @ case 35 + .4byte _080ECA0C @ case 36 + .4byte _080ECA0C @ case 37 + .4byte _080ECA0C @ case 38 + .4byte _080ECA0C @ case 39 + .4byte _080ECA0C @ case 40 + .4byte _080ECA0C @ case 41 + .4byte _080ECA0C @ case 42 + .4byte _080ECA0C @ case 43 + .4byte _080ECA0C @ case 44 + .4byte _080ECA0C @ case 45 + .4byte _080ECA0C @ case 46 + .4byte _080ECA0C @ case 47 + .4byte _080ECA0C @ case 48 + .4byte _080ECA0C @ case 49 + .4byte _080ECA0C @ case 50 + .4byte _080ECA0C @ case 51 + .4byte _080ECA0C @ case 52 + .4byte _080ECA0C @ case 53 + .4byte _080ECA0C @ case 54 + .4byte _080ECA0C @ case 55 + .4byte _080ECA0C @ case 56 + .4byte _080ECA0C @ case 57 + .4byte _080ECA0C @ case 58 + .4byte _080ECA0C @ case 59 + .4byte _080ECA0C @ case 60 + .4byte _080ECA0C @ case 61 + .4byte _080ECA0C @ case 62 + .4byte _080ECA0C @ case 63 + .4byte _080ECA0C @ case 64 + .4byte _080ECA0C @ case 65 + .4byte _080ECA0C @ case 66 + .4byte _080ECA0C @ case 67 + .4byte _080ECA0C @ case 68 + .4byte _080ECA0C @ case 69 + .4byte _080ECA0C @ case 70 + .4byte _080ECA0C @ case 71 + .4byte _080ECA0C @ case 72 + .4byte _080ECA0C @ case 73 + .4byte _080ECA0C @ case 74 + .4byte _080ECA0C @ case 75 + .4byte _080ECA0C @ case 76 + .4byte _080ECA0C @ case 77 + .4byte _080ECA0C @ case 78 + .4byte _080ECA0C @ case 79 + .4byte _080ECA0C @ case 80 + .4byte _080ECA0C @ case 81 + .4byte _080ECA0C @ case 82 + .4byte _080ECA0C @ case 83 + .4byte _080ECA0C @ case 84 + .4byte _080ECA0C @ case 85 + .4byte _080ECA0C @ case 86 + .4byte _080ECA0C @ case 87 + .4byte _080ECA0C @ case 88 + .4byte _080ECA0C @ case 89 + .4byte _080ECA0C @ case 90 + .4byte _080EC9B4 @ case 91 + .4byte _080EC9B4 @ case 92 + .4byte _080ECA0C @ case 93 + .4byte _080ECA0C @ case 94 + .4byte _080ECA0C @ case 95 + .4byte _080ECA0C @ case 96 + .4byte _080ECA0C @ case 97 + .4byte _080ECA0C @ case 98 + .4byte _080ECA0C @ case 99 + .4byte _080ECA0C @ case 100 + .4byte _080ECA0C @ case 101 + .4byte _080ECA0C @ case 102 + .4byte _080ECA0C @ case 103 + .4byte _080ECA0C @ case 104 + .4byte _080ECA0C @ case 105 + .4byte _080ECA0C @ case 106 + .4byte _080EC990 @ case 107 + .4byte _080ECA0C @ case 108 + .4byte _080EC990 @ case 109 + .4byte _080EC990 @ case 110 + .4byte _080ECA0C @ case 111 + .4byte _080EC990 @ case 112 + .4byte _080EC990 @ case 113 + .4byte _080ECA0C @ case 114 + .4byte _080ECA0C @ case 115 + .4byte _080ECA0C @ case 116 + .4byte _080ECA0C @ case 117 + .4byte _080ECA0C @ case 118 + .4byte _080ECA0C @ case 119 + .4byte _080ECA0C @ case 120 + .4byte _080ECA0C @ case 121 + .4byte _080ECA0C @ case 122 + .4byte _080EC990 @ case 123 + .4byte _080ECA0C @ case 124 + .4byte _080EC990 @ case 125 + .4byte _080EC990 @ case 126 + .4byte _080EC990 @ case 127 + .4byte _080ECA0C @ case 128 + .4byte _080EC990 @ case 129 + .4byte _080EC990 @ case 130 + .4byte _080EC990 @ case 131 + .4byte _080ECA0C @ case 132 + .4byte _080EC990 @ case 133 + .4byte _080ECA0C @ case 134 + .4byte _080EC990 @ case 135 + .4byte _080ECA0C @ case 136 + .4byte _080EC990 @ case 137 + .4byte _080EC990 @ case 138 + .4byte _080ECA0C @ case 139 + .4byte _080ECA0C @ case 140 + .4byte _080ECA0C @ case 141 + .4byte _080ECA0C @ case 142 + .4byte _080ECA0C @ case 143 + .4byte _080ECA0C @ case 144 + .4byte _080ECA0C @ case 145 + .4byte _080ECA0C @ case 146 + .4byte _080ECA0C @ case 147 + .4byte _080ECA0C @ case 148 + .4byte _080ECA0C @ case 149 + .4byte _080ECA0C @ case 150 + .4byte _080EC990 @ case 151 + .4byte _080EC990 @ case 152 + .4byte _080ECA0C @ case 153 + .4byte _080EC990 @ case 154 + .4byte _080ECA0C @ case 155 + .4byte _080ECA0C @ case 156 + .4byte _080ECA0C @ case 157 + .4byte _080ECA0C @ case 158 + .4byte _080EC990 @ case 159 + .4byte _080EC990 @ case 160 + .4byte _080ECA0C @ case 161 + .4byte _080EC990 @ case 162 +_080EC990: + ldr r0, _080EC9AC + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080ECA0C + ldr r4, _080EC9B0 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #8 + b _080EC9D0 + .align 2, 0 +_080EC9AC: .4byte 0x00004054 +_080EC9B0: .4byte 0x000040EF +_080EC9B4: + ldr r0, _080EC9E0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080ECA0C + ldr r4, _080EC9E4 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 +_080EC9D0: + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + b _080ECA0C + .align 2, 0 +_080EC9E0: .4byte 0x00004054 +_080EC9E4: .4byte 0x000040EF +_080EC9E8: + ldr r0, _080ECA14 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080ECA0C + ldr r4, _080ECA18 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x10 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080ECA0C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ECA14: .4byte 0x00004054 +_080ECA18: .4byte 0x000040EF + thumb_func_end sub_080EC6C8 + + thumb_func_start sub_080ECA1C +sub_080ECA1C: @ 0x080ECA1C + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _080ECA74 + cmp r1, r0 + bgt _080ECA6C + subs r0, #1 + cmp r1, r0 + blt _080ECA6C + ldr r0, _080ECA78 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080ECA6C + ldr r4, _080ECA7C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #4 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080ECA6C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ECA74: .4byte 0x0000028E +_080ECA78: .4byte 0x00004054 +_080ECA7C: .4byte 0x000040EF + thumb_func_end sub_080ECA1C + + thumb_func_start sub_080ECA80 +sub_080ECA80: @ 0x080ECA80 + push {r4, r5, r6, r7, lr} + movs r3, #0 + ldr r6, _080ECAD0 + movs r5, #0 + ldr r7, _080ECAD4 +_080ECA8A: + ldr r0, [r6] + lsls r1, r3, #3 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r2, _080ECAD8 + adds r0, r0, r2 + strb r5, [r0] + ldr r0, [r6] + adds r0, r0, r1 + adds r2, #1 + adds r0, r0, r2 + strb r5, [r0] + movs r2, #0 + adds r4, r3, #1 + adds r3, r1, #0 +_080ECAAA: + ldr r0, [r6] + adds r1, r2, r3 + adds r0, r0, r7 + adds r0, r0, r1 + strb r5, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x21 + bls _080ECAAA + lsls r0, r4, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x18 + bls _080ECA8A + bl sub_080EF960 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ECAD0: .4byte gUnknown_3005AEC +_080ECAD4: .4byte 0x000027CE +_080ECAD8: .4byte 0x000027CC + thumb_func_end sub_080ECA80 + + thumb_func_start sub_080ECADC +sub_080ECADC: @ 0x080ECADC + push {r4, r5, r6, r7, lr} + movs r4, #5 + ldr r1, _080ECB50 + ldr r0, [r1] + movs r2, #0xa2 + lsls r2, r2, #6 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080ECB10 + adds r3, r1, #0 + subs r2, #0xb4 +_080ECAF4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x17 + bhi _080ECB10 + ldr r0, [r3] + lsls r1, r4, #3 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080ECAF4 +_080ECB10: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + ldr r6, _080ECB50 +_080ECB26: + ldr r1, [r6] + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r4, r0, #2 + adds r1, r1, r4 + ldr r0, _080ECB54 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_080F0AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _080ECB5C + ldr r0, [r6] + adds r0, r0, r4 + ldr r1, _080ECB58 + adds r0, r0, r1 + ldrb r0, [r0] + b _080ECB6C + .align 2, 0 +_080ECB50: .4byte gUnknown_3005AEC +_080ECB54: .4byte 0x000027CC +_080ECB58: .4byte 0x000027CD +_080ECB5C: + ldr r2, _080ECB74 + adds r0, r4, r2 + ldr r1, [r6] + adds r1, r1, r0 + ldrh r0, [r1, #0x16] + cmp r0, #0 + bne _080ECB78 + ldrb r0, [r1, #1] +_080ECB6C: + cmp r0, #1 + bne _080ECB78 + adds r0, r5, #0 + b _080ECB8C + .align 2, 0 +_080ECB74: .4byte 0x000027CC +_080ECB78: + cmp r5, #0 + bne _080ECB80 + movs r5, #0x17 + b _080ECB86 +_080ECB80: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080ECB86: + cmp r5, r7 + bne _080ECB26 + movs r0, #0xff +_080ECB8C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ECADC + + thumb_func_start sub_080ECB94 +sub_080ECB94: @ 0x080ECB94 + push {lr} + bl sub_080ECADC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + bne _080ECBA6 + movs r0, #0xff + b _080ECBDE +_080ECBA6: + ldr r0, _080ECBD0 + ldr r2, [r0] + ldr r3, _080ECBD4 + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _080ECBDC + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r2, _080ECBD8 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0x29 + bne _080ECBDC + bl sub_080ECD2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080ECBDE + .align 2, 0 +_080ECBD0: .4byte gUnknown_3005AEC +_080ECBD4: .4byte 0x00002B90 +_080ECBD8: .4byte 0x000027CC +_080ECBDC: + adds r0, r1, #0 +_080ECBDE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ECB94 + + thumb_func_start sub_080ECBE4 +sub_080ECBE4: @ 0x080ECBE4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _080ECC18 + bl sub_0809D018 + bl sub_080F0B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080ECC0A + cmp r0, #2 + beq _080ECC5E + ldr r0, _080ECC1C + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #0xd + bne _080ECC20 +_080ECC0A: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_080ECC6C + b _080ECC5E + .align 2, 0 +_080ECC18: .4byte 0x00000891 +_080ECC1C: .4byte gUnknown_3005AEC +_080ECC20: + ldr r0, _080ECC64 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ECC5E + bl sub_080ECB94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080ECC4E + bl sub_080EFA24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080ECC4E + bl sub_080ED0D0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ECC5E +_080ECC4E: + ldr r0, _080ECC68 + bl sub_0809D040 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #3 + bl sub_080ECC6C +_080ECC5E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ECC64: .4byte 0x00000892 +_080ECC68: .4byte 0x00000891 + thumb_func_end sub_080ECBE4 + + thumb_func_start sub_080ECC6C +sub_080ECC6C: @ 0x080ECC6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r5, #0 + cmp r5, sl + bge _080ECCC0 + movs r1, #0xc0 + lsls r1, r1, #4 + adds r0, r1, #0 + mov r8, r2 + mov r1, r8 + orrs r1, r0 + mov r8, r1 +_080ECC92: + movs r4, #0 + adds r7, r5, #1 + cmp r4, sb + bge _080ECCBA + mov r0, r8 + lsls r6, r0, #0x10 +_080ECC9E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C20 + cmp r0, #0x86 + bne _080ECCB4 + adds r0, r4, #0 + adds r1, r5, #0 + lsrs r2, r6, #0x10 + bl sub_08087C54 +_080ECCB4: + adds r4, #1 + cmp r4, sb + blt _080ECC9E +_080ECCBA: + adds r5, r7, #0 + cmp r5, sl + blt _080ECC92 +_080ECCC0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080ECC6C + + thumb_func_start sub_080ECCD0 +sub_080ECCD0: @ 0x080ECCD0 + push {lr} + ldr r1, _080ECCE8 + ldr r0, [r1] + ldr r1, [r1, #4] + movs r2, #2 + bl sub_080ECC6C + bl sub_08089598 + pop {r0} + bx r0 + .align 2, 0 +_080ECCE8: .4byte gUnknown_3005B20 + thumb_func_end sub_080ECCD0 + + thumb_func_start sub_080ECCEC +sub_080ECCEC: @ 0x080ECCEC + push {lr} + ldr r1, _080ECD04 + ldr r0, [r1] + ldr r1, [r1, #4] + movs r2, #3 + bl sub_080ECC6C + bl sub_08089598 + pop {r0} + bx r0 + .align 2, 0 +_080ECD04: .4byte gUnknown_3005B20 + thumb_func_end sub_080ECCEC + + thumb_func_start sub_080ECD08 +sub_080ECD08: @ 0x080ECD08 + ldr r0, _080ECD20 + ldr r1, [r0] + ldr r0, _080ECD24 + ldrh r2, [r0] + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080ECD28 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080ECD20: .4byte gUnknown_3005AEC +_080ECD24: .4byte gUnknown_2037280 +_080ECD28: .4byte 0x000027CC + thumb_func_end sub_080ECD08 + + thumb_func_start sub_080ECD2C +sub_080ECD2C: @ 0x080ECD2C + push {r4, lr} + movs r2, #0 + ldr r0, _080ECD58 + ldr r3, [r0] +_080ECD34: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r3, r0 + ldr r4, _080ECD5C + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _080ECD60 + cmp r0, #0x29 + beq _080ECD60 + adds r4, #1 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + bne _080ECD60 + adds r0, r2, #0 + b _080ECD6C + .align 2, 0 +_080ECD58: .4byte gUnknown_3005AEC +_080ECD5C: .4byte 0x000027CC +_080ECD60: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x17 + bls _080ECD34 + movs r0, #0xff +_080ECD6C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ECD2C + + thumb_func_start sub_080ECD74 +sub_080ECD74: @ 0x080ECD74 + push {lr} + ldr r3, _080ECDA4 + ldr r2, _080ECDA8 + ldrh r1, [r2] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080ECDAC + adds r0, r0, r1 + ldr r3, [r3] + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0x29 + bne _080ECDB4 + ldr r1, _080ECDB0 + adds r0, r3, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080ECDB4 + bl sub_080ECD2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080ECDB6 + .align 2, 0 +_080ECDA4: .4byte gUnknown_3005AEC +_080ECDA8: .4byte gUnknown_2037280 +_080ECDAC: .4byte 0x000027CC +_080ECDB0: .4byte 0x00002B90 +_080ECDB4: + ldrb r0, [r2] +_080ECDB6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ECD74 + + thumb_func_start sub_080ECDBC +sub_080ECDBC: @ 0x080ECDBC + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + ldr r3, _080ECEA0 + ldr r2, [r3] + ldr r1, _080ECEA4 + adds r0, r2, r1 + movs r4, #0 + mov sl, r4 + movs r1, #0 + strh r1, [r0] + ldr r4, _080ECEA8 + adds r0, r2, r4 + strh r1, [r0] + adds r4, #2 + adds r0, r2, r4 + strh r1, [r0] + ldr r0, _080ECEAC + adds r1, r2, r0 + ldr r0, _080ECEB0 + strh r0, [r1] + adds r4, #6 + adds r2, r2, r4 + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + mov sb, r0 + ands r0, r1 + strb r0, [r2] + ldr r1, [r3] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, r1, r4 + ldrb r2, [r1] + movs r6, #5 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, r1, r4 + ldrb r2, [r1] + movs r5, #9 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #0x1f + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r2, _080ECEB4 + adds r0, r0, r2 + ldrb r1, [r0] + mov r4, sb + ands r4, r1 + strb r4, [r0] + ldr r0, [r3] + adds r0, r0, r2 + ldrb r1, [r0] + mov r4, r8 + ands r4, r1 + strb r4, [r0] + ldr r0, [r3] + adds r0, r0, r2 + ldrb r1, [r0] + ands r6, r1 + strb r6, [r0] + ldr r0, [r3] + adds r0, r0, r2 + ldrb r1, [r0] + ands r5, r1 + strb r5, [r0] + ldr r1, [r3] + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + strb r0, [r1] + ldr r0, [r3] + ldr r1, _080ECEB8 + adds r0, r0, r1 + mov r4, sl + strb r4, [r0] + ldr r0, [r3] + adds r1, #1 + adds r0, r0, r1 + strb r4, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080ECEA0: .4byte gUnknown_3005AEC +_080ECEA4: .4byte 0x00002BA4 +_080ECEA8: .4byte 0x00002BA6 +_080ECEAC: .4byte 0x00002BAA +_080ECEB0: .4byte 0x0000FFFF +_080ECEB4: .4byte 0x00002BAF +_080ECEB8: .4byte 0x00002BAC + thumb_func_end sub_080ECDBC + + thumb_func_start sub_080ECEBC +sub_080ECEBC: @ 0x080ECEBC + push {r4, lr} + ldr r3, _080ECF24 + ldr r2, [r3] + ldr r0, _080ECF28 + mov ip, r0 + ldrh r1, [r0, #6] + ldr r4, _080ECF2C + adds r0, r2, r4 + strh r1, [r0] + mov r0, ip + ldrh r1, [r0, #0x26] + adds r4, #2 + adds r0, r2, r4 + strh r1, [r0] + mov r0, ip + ldrh r1, [r0, #0x22] + adds r4, #2 + adds r0, r2, r4 + strh r1, [r0] + ldr r0, _080ECF30 + adds r2, r2, r0 + ldrb r1, [r2] + adds r0, r1, #0 + adds r4, r3, #0 + cmp r0, #0xff + beq _080ECEF4 + adds r0, r1, #1 + strb r0, [r2] +_080ECEF4: + ldr r2, [r4] + mov r0, ip + ldrb r1, [r0, #5] + lsls r1, r1, #0x1f + ldr r0, _080ECF34 + adds r2, r2, r0 + lsrs r1, r1, #0x1f + ldrb r3, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + mov r1, ip + ldrb r0, [r1] + cmp r0, #0 + beq _080ECF38 + ldr r0, [r4] + ldr r1, _080ECF34 + adds r0, r0, r1 + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + b _080ECF46 + .align 2, 0 +_080ECF24: .4byte gUnknown_3005AEC +_080ECF28: .4byte gUnknown_3005A70 +_080ECF2C: .4byte 0x00002BA4 +_080ECF30: .4byte 0x00002BAD +_080ECF34: .4byte 0x00002BAE +_080ECF38: + ldr r0, [r4] + ldr r1, _080ECF60 + adds r0, r0, r1 + ldrb r2, [r0] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 +_080ECF46: + strb r1, [r0] + mov r1, ip + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080ECF64 + ldr r0, [r4] + ldr r1, _080ECF60 + adds r0, r0, r1 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _080ECF72 + .align 2, 0 +_080ECF60: .4byte 0x00002BAE +_080ECF64: + ldr r0, [r4] + ldr r1, _080ECFAC + adds r0, r0, r1 + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_080ECF72: + strb r1, [r0] + mov r0, ip + ldrb r1, [r0, #5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080ECFB0 + movs r1, #0 + mov r0, ip + adds r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + bne _080ECFB0 +_080ECF8C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xa + bhi _080ECFBE + mov r0, ip + adds r0, #0x36 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080ECF8C + ldr r0, [r4] + ldr r4, _080ECFAC + adds r0, r0, r4 + b _080ECFB6 + .align 2, 0 +_080ECFAC: .4byte 0x00002BAE +_080ECFB0: + ldr r0, [r4] + ldr r1, _080ECFDC + adds r0, r0, r1 +_080ECFB6: + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] +_080ECFBE: + bl sub_080ED088 + ldr r0, _080ECFE0 + ldr r0, [r0] + ldr r4, _080ECFE4 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + bne _080ECFD6 + movs r0, #1 + bl sub_0809D018 +_080ECFD6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ECFDC: .4byte 0x00002BAE +_080ECFE0: .4byte gUnknown_3005AEC +_080ECFE4: .4byte 0x00002BA8 + thumb_func_end sub_080ECEBC + + thumb_func_start sub_080ECFE8 +sub_080ECFE8: @ 0x080ECFE8 + push {r4, r5, r6, lr} + ldr r5, _080ED074 + ldr r2, [r5] + ldr r6, _080ED078 + adds r0, r2, r6 + ldrb r1, [r0] + lsls r1, r1, #0x1f + ldr r4, _080ED07C + adds r2, r2, r4 + lsrs r1, r1, #0x1f + ldrb r3, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r5] + adds r0, r2, r6 + ldrb r0, [r0] + adds r2, r2, r4 + movs r1, #2 + ands r1, r0 + ldrb r3, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r5] + adds r0, r2, r6 + ldrb r0, [r0] + adds r2, r2, r4 + movs r1, #4 + ands r1, r0 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r5] + adds r0, r2, r6 + ldrb r0, [r0] + adds r2, r2, r4 + movs r1, #8 + ands r1, r0 + ldrb r3, [r2] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r5] + adds r1, r1, r6 + ldrb r0, [r1] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r5] + ldr r1, _080ED080 + ldrb r1, [r1, #0x14] + ldr r2, _080ED084 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #6 + bl sub_0808414C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080ED074: .4byte gUnknown_3005AEC +_080ED078: .4byte 0x00002BAE +_080ED07C: .4byte 0x00002BAF +_080ED080: .4byte gUnknown_2036FB8 +_080ED084: .4byte 0x00002BAC + thumb_func_end sub_080ECFE8 + + thumb_func_start sub_080ED088 +sub_080ED088: @ 0x080ED088 + ldr r0, _080ED09C + ldr r1, [r0] + ldr r0, _080ED0A0 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_080ED09C: .4byte gUnknown_3005AEC +_080ED0A0: .4byte 0x00002BAE + thumb_func_end sub_080ED088 + + thumb_func_start sub_080ED0A4 +sub_080ED0A4: @ 0x080ED0A4 + push {lr} + ldr r0, _080ED0C8 + ldr r0, [r0] + ldr r2, _080ED0CC + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #5 + bls _080ED0C2 + ldrb r0, [r1] + movs r1, #3 + bl __umodsi3 + adds r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080ED0C2: + pop {r1} + bx r1 + .align 2, 0 +_080ED0C8: .4byte gUnknown_3005AEC +_080ED0CC: .4byte 0x00002BAD + thumb_func_end sub_080ED0A4 + + thumb_func_start sub_080ED0D0 +sub_080ED0D0: @ 0x080ED0D0 + ldr r0, _080ED0E0 + ldr r0, [r0] + ldr r1, _080ED0E4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_080ED0E0: .4byte gUnknown_3005AEC +_080ED0E4: .4byte 0x00002BAE + thumb_func_end sub_080ED0D0 + + thumb_func_start sub_080ED0E8 +sub_080ED0E8: @ 0x080ED0E8 + push {r4, r5, lr} + ldr r5, _080ED114 + ldr r0, [r5] + ldr r2, _080ED118 + adds r1, r0, r2 + ldrh r0, [r1] + ldr r4, _080ED11C + cmp r0, r4 + beq _080ED124 + ldr r0, _080ED120 + ldrh r1, [r1] + bl sub_0811F180 + ldr r1, [r5] + ldr r0, _080ED118 + adds r1, r1, r0 + ldrh r2, [r1] + adds r0, r4, #0 + orrs r0, r2 + strh r0, [r1] + movs r0, #1 + b _080ED126 + .align 2, 0 +_080ED114: .4byte gUnknown_3005AEC +_080ED118: .4byte 0x00002BAA +_080ED11C: .4byte 0x0000FFFF +_080ED120: .4byte gUnknown_2021C40 +_080ED124: + movs r0, #0 +_080ED126: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080ED0E8 + + thumb_func_start sub_080ED12C +sub_080ED12C: @ 0x080ED12C + push {lr} + ldr r0, _080ED144 + ldr r0, [r0] + ldr r1, _080ED148 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080ED14C + movs r0, #1 + b _080ED172 + .align 2, 0 +_080ED144: .4byte gUnknown_3005AEC +_080ED148: .4byte 0x00002BAF +_080ED14C: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080ED158 + movs r0, #2 + b _080ED172 +_080ED158: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080ED164 + movs r0, #3 + b _080ED172 +_080ED164: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080ED170 + movs r0, #0 + b _080ED172 +_080ED170: + movs r0, #4 +_080ED172: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ED12C + + thumb_func_start sub_080ED178 +sub_080ED178: @ 0x080ED178 + push {lr} + bl sub_080ED0A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #7 + bhi _080ED250 + lsls r0, r0, #2 + ldr r1, _080ED194 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ED194: .4byte _080ED198 +_080ED198: @ jump table + .4byte _080ED1B8 @ case 0 + .4byte _080ED1CC @ case 1 + .4byte _080ED1E0 @ case 2 + .4byte _080ED1F4 @ case 3 + .4byte _080ED208 @ case 4 + .4byte _080ED21C @ case 5 + .4byte _080ED230 @ case 6 + .4byte _080ED244 @ case 7 +_080ED1B8: + ldr r1, _080ED1C4 + movs r0, #0xe + strh r0, [r1] + ldr r1, _080ED1C8 + movs r0, #0xd + b _080ED24E + .align 2, 0 +_080ED1C4: .4byte gUnknown_2037280 +_080ED1C8: .4byte gUnknown_2037282 +_080ED1CC: + ldr r1, _080ED1D8 + movs r0, #5 + strh r0, [r1] + ldr r1, _080ED1DC + movs r0, #6 + b _080ED24E + .align 2, 0 +_080ED1D8: .4byte gUnknown_2037280 +_080ED1DC: .4byte gUnknown_2037282 +_080ED1E0: + ldr r1, _080ED1EC + movs r0, #0x12 + strh r0, [r1] + ldr r1, _080ED1F0 + movs r0, #0x11 + b _080ED24E + .align 2, 0 +_080ED1EC: .4byte gUnknown_2037280 +_080ED1F0: .4byte gUnknown_2037282 +_080ED1F4: + ldr r1, _080ED200 + movs r0, #0x15 + strh r0, [r1] + ldr r1, _080ED204 + movs r0, #0x16 + b _080ED24E + .align 2, 0 +_080ED200: .4byte gUnknown_2037280 +_080ED204: .4byte gUnknown_2037282 +_080ED208: + ldr r1, _080ED214 + movs r0, #8 + strh r0, [r1] + ldr r1, _080ED218 + movs r0, #9 + b _080ED24E + .align 2, 0 +_080ED214: .4byte gUnknown_2037280 +_080ED218: .4byte gUnknown_2037282 +_080ED21C: + ldr r1, _080ED228 + movs r0, #0x13 + strh r0, [r1] + ldr r1, _080ED22C + movs r0, #0x14 + b _080ED24E + .align 2, 0 +_080ED228: .4byte gUnknown_2037280 +_080ED22C: .4byte gUnknown_2037282 +_080ED230: + ldr r1, _080ED23C + movs r0, #0x17 + strh r0, [r1] + ldr r1, _080ED240 + movs r0, #0x18 + b _080ED24E + .align 2, 0 +_080ED23C: .4byte gUnknown_2037280 +_080ED240: .4byte gUnknown_2037282 +_080ED244: + ldr r1, _080ED254 + movs r0, #0xa + strh r0, [r1] + ldr r1, _080ED258 + movs r0, #0xb +_080ED24E: + strh r0, [r1] +_080ED250: + pop {r0} + bx r0 + .align 2, 0 +_080ED254: .4byte gUnknown_2037280 +_080ED258: .4byte gUnknown_2037282 + thumb_func_end sub_080ED178 + + thumb_func_start sub_080ED25C +sub_080ED25C: @ 0x080ED25C + push {lr} + ldr r0, _080ED274 + ldrh r0, [r0] + subs r0, #1 + cmp r0, #7 + bhi _080ED2C4 + lsls r0, r0, #2 + ldr r1, _080ED278 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080ED274: .4byte gUnknown_2037282 +_080ED278: .4byte _080ED27C +_080ED27C: @ jump table + .4byte _080ED29C @ case 0 + .4byte _080ED2A2 @ case 1 + .4byte _080ED2A8 @ case 2 + .4byte _080ED2AE @ case 3 + .4byte _080ED2C4 @ case 4 + .4byte _080ED2B4 @ case 5 + .4byte _080ED2BA @ case 6 + .4byte _080ED2C0 @ case 7 +_080ED29C: + bl sub_080EE07C + b _080ED2C4 +_080ED2A2: + bl sub_080EE0EC + b _080ED2C4 +_080ED2A8: + bl sub_080EE144 + b _080ED2C4 +_080ED2AE: + bl sub_080EE234 + b _080ED2C4 +_080ED2B4: + bl sub_080EDAB0 + b _080ED2C4 +_080ED2BA: + bl sub_080EDCAC + b _080ED2C4 +_080ED2C0: + bl sub_080ED5CC +_080ED2C4: + pop {r0} + bx r0 + thumb_func_end sub_080ED25C + + thumb_func_start sub_080ED2C8 +sub_080ED2C8: @ 0x080ED2C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r4, #0 + bl sub_080EF88C + bl sub_080EE238 + ldr r5, _080ED2E8 + ldrh r0, [r5, #0x28] + cmp r0, #0 + bne _080ED2EC + bl sub_080ED490 + b _080ED41E + .align 2, 0 +_080ED2E8: .4byte gUnknown_3005A70 +_080ED2EC: + bl sub_080ED438 + ldr r0, _080ED3A8 + bl sub_080F0628 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080ED2FE + b _080ED41E +_080ED2FE: + ldrh r1, [r5, #0x28] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080ED3AC + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #0x2a + bl sub_0800895C + cmp r0, #0 + bne _080ED318 + b _080ED41E +_080ED318: + ldr r0, _080ED3B0 + ldr r0, [r0] + ldr r1, _080ED3B4 + adds r0, r0, r1 + bl sub_080F05F8 + ldr r1, _080ED3B8 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED41E + movs r0, #0x15 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080ED41E + movs r2, #0 + adds r7, r5, #0 + adds r1, r7, #0 + adds r1, #0x36 +_080ED34C: + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xa + bls _080ED34C + cmp r4, #0 + bne _080ED36E + ldrb r1, [r7, #5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080ED41E +_080ED36E: + movs r4, #0 + ldr r2, _080ED3B0 + ldr r0, _080ED3B8 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080ED3B4 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + movs r0, #0x15 + strb r0, [r5] + strb r4, [r5, #1] + ldrb r1, [r7, #5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080ED3C0 + movs r4, #1 + movs r0, #1 + adds r3, r5, #0 + adds r3, #0x13 + ldr r1, _080ED3BC + mov r8, r1 + adds r6, r5, #4 + b _080ED3F2 + .align 2, 0 +_080ED3A8: .4byte 0x0000FFFF +_080ED3AC: .4byte gUnknown_82EA31C +_080ED3B0: .4byte gUnknown_3005AEC +_080ED3B4: .4byte 0x000027CC +_080ED3B8: .4byte gUnknown_3005E20 +_080ED3BC: .4byte gUnknown_3005AF0 +_080ED3C0: + movs r2, #0 + ldr r0, _080ED428 + mov ip, r0 + adds r3, r5, #0 + adds r3, #0x13 + ldr r1, _080ED42C + mov r8, r1 + adds r6, r5, #4 + adds r1, r7, #0 + adds r1, #0x36 +_080ED3D4: + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xa + bls _080ED3D4 + cmp r4, #0xff + bls _080ED3EE + movs r4, #0xff +_080ED3EE: + mov r1, ip + ldrh r0, [r1] +_080ED3F2: + strb r4, [r5, #0x12] + strb r0, [r5, #0xf] + mov r0, r8 + ldr r1, [r0] + adds r0, r3, #0 + bl sub_080088B8 + ldr r4, _080ED430 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080088B8 + subs r4, #0x2a + ldrh r0, [r4, #0x28] + strh r0, [r5, #0x10] + adds r0, r5, #0 + bl sub_080ED57C + ldr r0, _080ED434 + ldrb r0, [r0] + strb r0, [r5, #2] + strb r0, [r5, #3] +_080ED41E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ED428: .4byte gUnknown_2023EAC +_080ED42C: .4byte gUnknown_3005AF0 +_080ED430: .4byte gUnknown_3005A9A +_080ED434: .4byte gUnknown_829BDA5 + thumb_func_end sub_080ED2C8 + + thumb_func_start sub_080ED438 +sub_080ED438: @ 0x080ED438 + push {r4, lr} + ldr r0, _080ED47C + ldr r1, [r0] + ldr r0, _080ED480 + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0x19 + beq _080ED45E + ldr r2, _080ED484 + adds r0, r1, r2 + movs r1, #0x18 + bl sub_080F03FC + movs r0, #5 + bl sub_08084180 + strh r0, [r4, #6] + movs r0, #0x19 + strb r0, [r4] +_080ED45E: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + ldr r1, _080ED488 + ldrh r0, [r1, #0x28] + strh r0, [r4, #4] + ldrh r0, [r1, #6] + strh r0, [r4, #8] + ldr r0, _080ED48C + ldrb r0, [r0, #0x14] + strb r0, [r4, #0xa] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080ED47C: .4byte gUnknown_3005AEC +_080ED480: .4byte 0x00002B2C +_080ED484: .4byte 0x000027CC +_080ED488: .4byte gUnknown_3005A70 +_080ED48C: .4byte gUnknown_2036FB8 + thumb_func_end sub_080ED438 + + thumb_func_start sub_080ED490 +sub_080ED490: @ 0x080ED490 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080ED554 + bl sub_080F0628 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080ED548 + movs r1, #0 + movs r5, #0 + ldr r2, _080ED558 +_080ED4A8: + adds r0, r1, r2 + ldrb r0, [r0] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xa + bls _080ED4A8 + cmp r5, #0xff + bls _080ED4C2 + movs r5, #0xff +_080ED4C2: + cmp r5, #2 + bls _080ED548 + ldr r0, _080ED55C + mov r8, r0 + ldrb r0, [r0] + cmp r0, #6 + beq _080ED4D4 + cmp r0, #1 + bne _080ED548 +_080ED4D4: + ldr r7, _080ED560 + ldr r0, [r7] + ldr r6, _080ED564 + adds r0, r0, r6 + bl sub_080F05F8 + ldr r4, _080ED568 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED548 + movs r0, #0x17 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080ED548 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r4, [r7] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x17 + strb r0, [r4] + strb r1, [r4, #1] + ldr r1, _080ED56C + ldrh r0, [r1, #6] + strh r0, [r4, #0xc] + ldrh r0, [r1, #0x20] + strh r0, [r4, #0xe] + strb r5, [r4, #0x10] + mov r1, r8 + ldrb r0, [r1] + strb r0, [r4, #0x11] + ldr r0, _080ED570 + ldrb r0, [r0, #0x14] + strb r0, [r4, #0x12] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080ED574 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080ED578 + ldrb r0, [r0] + strb r0, [r4, #2] +_080ED548: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ED554: .4byte 0x0000FFFF +_080ED558: .4byte gUnknown_3005AA6 +_080ED55C: .4byte gUnknown_2023FDE +_080ED560: .4byte gUnknown_3005AEC +_080ED564: .4byte 0x000027CC +_080ED568: .4byte gUnknown_3005E20 +_080ED56C: .4byte gUnknown_3005A70 +_080ED570: .4byte gUnknown_2036FB8 +_080ED574: .4byte gUnknown_3005AF0 +_080ED578: .4byte gUnknown_829BDA5 + thumb_func_end sub_080ED490 + + thumb_func_start sub_080ED57C +sub_080ED57C: @ 0x080ED57C + push {r4, lr} + adds r4, r0, #0 + bl sub_080F0AEC + strb r0, [r4, #0x1e] + lsrs r2, r0, #8 + strb r2, [r4, #0x1f] + adds r1, r4, #0 + adds r1, #0x20 + strb r0, [r1] + adds r1, #1 + strb r2, [r1] + adds r1, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x23 + strb r2, [r0] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080ED57C + + thumb_func_start sub_080ED5A4 +sub_080ED5A4: @ 0x080ED5A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080F0AEC + adds r1, r4, #0 + adds r1, #0x20 + strb r0, [r1] + lsrs r1, r0, #8 + adds r2, r4, #0 + adds r2, #0x21 + strb r1, [r2] + adds r2, #1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x23 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080ED5A4 + + thumb_func_start sub_080ED5CC +sub_080ED5CC: @ 0x080ED5CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _080ED66C + mov r8, r0 + ldr r7, [r0] + ldr r1, _080ED670 + adds r6, r7, r1 + ldrb r1, [r6] + cmp r1, #8 + bne _080ED662 + ldr r0, _080ED674 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r5, _080ED678 + adds r4, r4, r5 + adds r4, r7, r4 + strb r1, [r4] + movs r0, #1 + strb r0, [r4, #1] + adds r0, r4, #0 + adds r0, #0x14 + ldr r1, _080ED67C + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _080ED680 + ldrh r0, [r0] + strb r0, [r4, #0x1c] + ldr r0, _080ED684 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080ED688 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #0x12] + ldrh r0, [r6, #2] + strh r0, [r4, #2] + ldrb r0, [r6, #0xc] + strb r0, [r4, #0xc] + ldrb r0, [r6, #0xd] + strb r0, [r4, #0xd] + ldrb r0, [r6, #0xe] + strb r0, [r4, #0xe] + ldrh r0, [r6, #0x10] + strh r0, [r4, #0x10] + ldrb r0, [r6, #0xf] + strb r0, [r4, #0xf] + adds r0, r4, #4 + ldr r2, _080ED68C + adds r1, r7, r2 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080ED690 + ldrb r0, [r0] + strb r0, [r4, #0x1d] + ldrb r0, [r6, #0x1e] + strb r0, [r4, #0x1e] + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r5 + movs r1, #0x18 + bl sub_080F03FC +_080ED662: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ED66C: .4byte gUnknown_3005AEC +_080ED670: .4byte 0x00002B2C +_080ED674: .4byte gUnknown_3005E20 +_080ED678: .4byte 0x000027CC +_080ED67C: .4byte gUnknown_3005AF0 +_080ED680: .4byte gUnknown_2039BCC +_080ED684: .4byte gUnknown_2039BC4 +_080ED688: .4byte gUnknown_2024190 +_080ED68C: .4byte 0x00002B30 +_080ED690: .4byte gUnknown_829BDA5 + thumb_func_end sub_080ED5CC + + thumb_func_start sub_080ED694 +sub_080ED694: @ 0x080ED694 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r8, r3 + ldr r6, _080ED718 + ldr r0, [r6] + ldr r5, _080ED71C + adds r0, r0, r5 + bl sub_080F05CC + ldr r4, _080ED720 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED76E + movs r0, #0xa + bl sub_080F0054 + ldr r0, _080ED724 + ldrh r0, [r0] + cmp r0, #1 + beq _080ED76E + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r6] + adds r4, r1, r0 + movs r0, #0xa + strb r0, [r4] + movs r5, #1 + strb r5, [r4, #1] + adds r0, r4, #4 + ldr r1, _080ED728 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _080ED72C + ldr r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080ED730 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080ED732 + strb r5, [r4, #0x18] + b _080ED734 + .align 2, 0 +_080ED718: .4byte gUnknown_3005AEC +_080ED71C: .4byte 0x000027CC +_080ED720: .4byte gUnknown_3005E20 +_080ED724: .4byte gUnknown_2037290 +_080ED728: .4byte gUnknown_3005AF0 +_080ED72C: .4byte gUnknown_2022C90 +_080ED730: + movs r0, #2 +_080ED732: + strb r0, [r4, #0x18] +_080ED734: + mov r0, sl + strh r0, [r4, #0x14] + mov r0, sb + strh r0, [r4, #0x16] + mov r0, r8 + strh r0, [r4, #2] + adds r0, r4, #0 + adds r0, #0xc + lsls r1, r7, #3 + subs r1, r1, r7 + lsls r5, r1, #2 + ldr r6, _080ED77C + adds r1, r5, r6 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080ED780 + ldrb r0, [r0] + strb r0, [r4, #0x19] + cmp r0, #1 + beq _080ED76A + adds r0, r6, r5 + ldrh r0, [r0, #0x12] + cmp r0, #1 + bne _080ED76C +_080ED76A: + movs r0, #1 +_080ED76C: + strb r0, [r4, #0x1a] +_080ED76E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080ED77C: .4byte gUnknown_20226A8 +_080ED780: .4byte gUnknown_829BDA5 + thumb_func_end sub_080ED694 + + thumb_func_start sub_080ED784 +sub_080ED784: @ 0x080ED784 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + ldr r0, [sp, #0x24] + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _080ED7D8 + mov r8, r0 + ldr r0, [r0] + ldr r7, _080ED7DC + adds r0, r0, r7 + bl sub_080F05CC + ldr r4, _080ED7E0 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED7D4 + movs r0, #9 + bl sub_080F0054 + ldr r0, _080ED7E4 + ldrh r0, [r0] + cmp r0, #1 + bne _080ED7E8 +_080ED7D4: + movs r0, #0 + b _080ED85E + .align 2, 0 +_080ED7D8: .4byte gUnknown_3005AEC +_080ED7DC: .4byte 0x000027CC +_080ED7E0: .4byte gUnknown_3005E20 +_080ED7E4: .4byte gUnknown_2037290 +_080ED7E8: + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r2, r8 + ldr r1, [r2] + adds r4, r1, r0 + movs r0, #9 + strb r0, [r4] + movs r7, #1 + strb r7, [r4, #1] + adds r0, r4, #0 + adds r0, #0xc + ldr r1, _080ED850 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #4 + mov r1, sl + bl sub_080088B8 + movs r0, #7 + ands r5, r0 + ldrb r1, [r4, #3] + subs r0, #0xf + ands r0, r1 + orrs r0, r5 + movs r1, #3 + ands r6, r1 + lsls r2, r6, #3 + subs r1, #0x1c + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #3] + mov r0, sp + ldrb r0, [r0] + strb r0, [r4, #2] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080ED854 + ldrb r0, [r0] + strb r0, [r4, #0x14] + cmp r0, #1 + beq _080ED84C + mov r1, sb + cmp r1, #1 + bne _080ED858 +_080ED84C: + strb r7, [r4, #0x15] + b _080ED85C + .align 2, 0 +_080ED850: .4byte gUnknown_3005AF0 +_080ED854: .4byte gUnknown_829BDA5 +_080ED858: + mov r2, sb + strb r2, [r4, #0x15] +_080ED85C: + movs r0, #1 +_080ED85E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080ED784 + + thumb_func_start sub_080ED870 +sub_080ED870: @ 0x080ED870 + push {r4, r5, r6, lr} + ldr r6, _080ED8D8 + ldr r0, _080ED8DC + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080ED8E0 + adds r0, r0, r1 + ldr r1, [r6] + adds r4, r1, r0 + ldr r0, _080ED8E4 + ldrh r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + strb r0, [r4, #0x16] + adds r0, r4, #2 + ldr r1, _080ED8E8 + ldr r1, [r1] + bl sub_080088B8 + movs r0, #0xb + strb r0, [r4] + movs r5, #1 + strb r5, [r4, #1] + bl sub_080F0AEC + strb r0, [r4, #0xa] + lsrs r0, r0, #8 + strb r0, [r4, #0xb] + adds r0, r4, #0 + adds r0, #0xc + ldr r1, _080ED8EC + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080ED8F0 + ldrb r0, [r0] + strb r0, [r4, #0x17] + cmp r0, #1 + beq _080ED8D4 + ldr r0, [r6] + ldr r1, _080ED8F4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _080ED8F8 +_080ED8D4: + strb r5, [r4, #0x18] + b _080ED8FA + .align 2, 0 +_080ED8D8: .4byte gUnknown_3005AEC +_080ED8DC: .4byte gUnknown_2037284 +_080ED8E0: .4byte 0x000027CC +_080ED8E4: .4byte gUnknown_2037282 +_080ED8E8: .4byte gUnknown_3005AF0 +_080ED8EC: .4byte gUnknown_2021C40 +_080ED8F0: .4byte gUnknown_829BDA5 +_080ED8F4: .4byte 0x000031A0 +_080ED8F8: + strb r0, [r4, #0x18] +_080ED8FA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080ED870 + + thumb_func_start sub_080ED900 +sub_080ED900: @ 0x080ED900 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _080ED940 + ldr r0, [r5] + ldr r4, _080ED944 + adds r0, r0, r4 + movs r1, #0x18 + bl sub_080F03FC + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080F05CC + ldr r1, _080ED948 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED938 + ldr r0, [r5] + ldr r1, _080ED94C + adds r0, r0, r1 + strb r6, [r0, #0xd] + movs r1, #8 + strb r1, [r0] +_080ED938: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080ED940: .4byte gUnknown_3005AEC +_080ED944: .4byte 0x000027CC +_080ED948: .4byte gUnknown_3005E20 +_080ED94C: .4byte 0x00002B2C + thumb_func_end sub_080ED900 + + thumb_func_start sub_080ED950 +sub_080ED950: @ 0x080ED950 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080ED980 + ldr r0, [r0] + ldr r1, _080ED984 + adds r4, r0, r1 + ldr r1, _080ED988 + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080ED98C + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED978 + strb r5, [r4, #0xe] +_080ED978: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ED980: .4byte gUnknown_3005AEC +_080ED984: .4byte 0x00002B2C +_080ED988: .4byte 0x000027CC +_080ED98C: .4byte gUnknown_3005E20 + thumb_func_end sub_080ED950 + + thumb_func_start sub_080ED990 +sub_080ED990: @ 0x080ED990 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080ED9C0 + ldr r0, [r0] + ldr r1, _080ED9C4 + adds r4, r0, r1 + ldr r1, _080ED9C8 + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080ED9CC + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED9B8 + strb r5, [r4, #0xf] +_080ED9B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080ED9C0: .4byte gUnknown_3005AEC +_080ED9C4: .4byte 0x00002B2C +_080ED9C8: .4byte 0x000027CC +_080ED9CC: .4byte gUnknown_3005E20 + thumb_func_end sub_080ED990 + + thumb_func_start sub_080ED9D0 +sub_080ED9D0: @ 0x080ED9D0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _080EDA00 + ldr r0, [r0] + ldr r1, _080EDA04 + adds r4, r0, r1 + ldr r1, _080EDA08 + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080EDA0C + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080ED9F8 + strh r5, [r4, #0x10] +_080ED9F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EDA00: .4byte gUnknown_3005AEC +_080EDA04: .4byte 0x00002B2C +_080EDA08: .4byte 0x000027CC +_080EDA0C: .4byte gUnknown_3005E20 + thumb_func_end sub_080ED9D0 + + thumb_func_start sub_080EDA10 +sub_080EDA10: @ 0x080EDA10 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _080EDA64 + ldr r4, [r0] + ldr r0, _080EDA68 + adds r6, r4, r0 + ldr r1, _080EDA6C + adds r0, r4, r1 + bl sub_080F05CC + ldr r1, _080EDA70 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EDAA0 + ldr r2, _080EDA74 + lsls r1, r5, #6 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r6, #2] + ldr r3, _080EDA78 + adds r0, r4, r3 + adds r2, #0xd + adds r1, r1, r2 + bl sub_080088B8 + strb r7, [r6, #0xc] + adds r1, r5, #1 + ldr r0, _080EDA7C + ldrb r0, [r0] + cmp r1, r0 + ble _080EDA84 + ldr r0, _080EDA80 + ldrb r0, [r0] + b _080EDA9E + .align 2, 0 +_080EDA64: .4byte gUnknown_3005AEC +_080EDA68: .4byte 0x00002B2C +_080EDA6C: .4byte 0x000027CC +_080EDA70: .4byte gUnknown_3005E20 +_080EDA74: .4byte gUnknown_2039AA0 +_080EDA78: .4byte 0x00002B30 +_080EDA7C: .4byte gUnknown_2039BD0 +_080EDA80: .4byte gUnknown_829BDA5 +_080EDA84: + ldr r0, _080EDAA8 + ldrb r0, [r0] + cmp r0, #1 + beq _080EDA9C + ldr r1, _080EDAAC + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x1a] + cmp r0, #1 + bne _080EDA9E +_080EDA9C: + movs r0, #1 +_080EDA9E: + strb r0, [r6, #0x1e] +_080EDAA0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDAA8: .4byte gUnknown_829BDA5 +_080EDAAC: .4byte gUnknown_20226A0 + thumb_func_end sub_080EDA10 + + thumb_func_start sub_080EDAB0 +sub_080EDAB0: @ 0x080EDAB0 + push {r4, r5, r6, r7, lr} + ldr r0, _080EDB54 + ldr r6, [r0] + ldr r0, _080EDB58 + adds r5, r6, r0 + ldrb r2, [r5] + cmp r2, #6 + bne _080EDB80 + ldr r0, _080EDB5C + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EDB60 + adds r0, r0, r1 + adds r4, r6, r0 + strb r2, [r4] + movs r7, #1 + strb r7, [r4, #1] + ldrh r0, [r5, #2] + strh r0, [r4, #2] + adds r0, r4, #0 + adds r0, #0x16 + ldr r1, _080EDB64 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + adds r0, #8 + ldr r2, _080EDB68 + adds r1, r6, r2 + bl sub_080088B8 + ldrb r0, [r5, #0x13] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + ldrb r2, [r4, #0x13] + movs r3, #8 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x13] + ldrb r2, [r5, #0x13] + movs r0, #0x18 + ands r0, r2 + movs r2, #0x19 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x13] + ldrh r0, [r5, #0x14] + strh r0, [r4, #0x14] + ldrb r0, [r5, #0x13] + movs r1, #0x60 + ands r1, r0 + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x13] + ldrb r1, [r5, #0x13] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x13] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EDB6C + ldrb r0, [r0] + strb r0, [r4, #0x1e] + cmp r0, #1 + beq _080EDB4E + ldrb r0, [r5, #0x1f] + cmp r0, #1 + bne _080EDB70 +_080EDB4E: + strb r7, [r4, #0x1f] + b _080EDB72 + .align 2, 0 +_080EDB54: .4byte gUnknown_3005AEC +_080EDB58: .4byte 0x00002B2C +_080EDB5C: .4byte gUnknown_3005E20 +_080EDB60: .4byte 0x000027CC +_080EDB64: .4byte gUnknown_3005AF0 +_080EDB68: .4byte 0x00002B34 +_080EDB6C: .4byte gUnknown_829BDA5 +_080EDB70: + strb r0, [r4, #0x1f] +_080EDB72: + ldr r0, _080EDB88 + ldr r0, [r0] + ldr r1, _080EDB8C + adds r0, r0, r1 + movs r1, #0x18 + bl sub_080F03FC +_080EDB80: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDB88: .4byte gUnknown_3005AEC +_080EDB8C: .4byte 0x000027CC + thumb_func_end sub_080EDAB0 + + thumb_func_start sub_080EDB90 +sub_080EDB90: @ 0x080EDB90 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r4, _080EDBD4 + ldr r0, [r4] + ldr r1, _080EDBD8 + adds r5, r0, r1 + bl sub_080F02B8 + ldr r0, [r4] + ldr r1, _080EDBDC + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080EDBE0 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EDBCE + ldr r0, [r4] + ldr r1, _080EDBDC + adds r0, r0, r1 + movs r1, #0x18 + bl sub_080F03FC + strh r6, [r5, #0x14] + movs r0, #6 + strb r0, [r5] +_080EDBCE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EDBD4: .4byte gUnknown_3005AEC +_080EDBD8: .4byte 0x00002B2C +_080EDBDC: .4byte 0x000027CC +_080EDBE0: .4byte gUnknown_3005E20 + thumb_func_end sub_080EDB90 + + thumb_func_start sub_080EDBE4 +sub_080EDBE4: @ 0x080EDBE4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080EDC88 + ldr r0, [r0] + mov r8, r0 + ldr r7, _080EDC8C + add r7, r8 + ldr r0, _080EDC90 + add r0, r8 + bl sub_080F05CC + ldr r1, _080EDC94 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EDC7C + movs r3, #3 + adds r0, r4, #0 + ands r0, r3 + lsls r0, r0, #5 + ldrb r1, [r7, #0x13] + movs r2, #0x61 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r7, #0x13] + ldr r0, _080EDC98 + ldrb r0, [r0] + movs r1, #7 + ands r1, r0 + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #0x13] + ldr r1, _080EDC9C + ldrb r1, [r1] + ands r3, r1 + lsls r3, r3, #3 + movs r1, #0x19 + rsbs r1, r1, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r7, #0x13] + ldr r6, _080EDCA0 + ldrb r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080EDCA4 + adds r0, r0, r4 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #2] + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + ldr r2, _080EDCA8 + add r2, r8 + movs r1, #2 + bl sub_0806A058 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #3 + bl sub_0806A058 + strb r0, [r7, #0x1f] +_080EDC7C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDC88: .4byte gUnknown_3005AEC +_080EDC8C: .4byte 0x00002B2C +_080EDC90: .4byte 0x000027CC +_080EDC94: .4byte gUnknown_3005E20 +_080EDC98: .4byte gUnknown_2039BCC +_080EDC9C: .4byte gUnknown_2039BCE +_080EDCA0: .4byte gUnknown_2039BC4 +_080EDCA4: .4byte gUnknown_2024190 +_080EDCA8: .4byte 0x00002B34 + thumb_func_end sub_080EDBE4 + + thumb_func_start sub_080EDCAC +sub_080EDCAC: @ 0x080EDCAC + push {r4, r5, r6, lr} + ldr r2, _080EDD1C + ldr r0, _080EDD20 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EDD24 + adds r0, r0, r1 + ldr r1, [r2] + adds r6, r1, r0 + movs r0, #7 + strb r0, [r6] + movs r0, #1 + strb r0, [r6, #1] + adds r0, r6, #2 + ldr r4, _080EDD28 + ldr r1, [r4] + bl sub_080088B8 + adds r0, r6, #0 + adds r0, #0xc + ldr r1, [r4] + ldr r2, _080EDD2C + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, [r4] + ldr r2, _080EDD30 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r6, #0xa] + adds r2, #2 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r6, #0x14] + ldr r5, _080EDD34 + adds r1, r1, r5 + ldrb r0, [r1] + movs r1, #0 + bl sub_08164E98 + strh r0, [r6, #0x16] + ldr r0, [r4] + ldr r1, _080EDD38 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r6, #0x1c] + ldr r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080EDD3C + movs r0, #0x32 + b _080EDD3E + .align 2, 0 +_080EDD1C: .4byte gUnknown_3005AEC +_080EDD20: .4byte gUnknown_3005E20 +_080EDD24: .4byte 0x000027CC +_080EDD28: .4byte gUnknown_3005AF0 +_080EDD2C: .4byte 0x00000BD8 +_080EDD30: .4byte 0x00000BD4 +_080EDD34: .4byte 0x00000D07 +_080EDD38: .4byte 0x00000D06 +_080EDD3C: + movs r0, #0x64 +_080EDD3E: + strb r0, [r6, #0x1a] + ldr r0, _080EDD70 + ldrh r0, [r0] + strb r0, [r6, #0x1b] + adds r0, r6, #0 + bl sub_080ED5A4 + ldr r0, _080EDD74 + ldrb r0, [r0] + strb r0, [r6, #0x1d] + cmp r0, #1 + beq _080EDD64 + ldr r0, _080EDD78 + ldr r0, [r0] + ldr r2, _080EDD7C + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #1 + bne _080EDD66 +_080EDD64: + movs r0, #1 +_080EDD66: + strb r0, [r6, #0x1e] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EDD70: .4byte gUnknown_2037280 +_080EDD74: .4byte gUnknown_829BDA5 +_080EDD78: .4byte gUnknown_3005AF0 +_080EDD7C: .4byte 0x00000BEB + thumb_func_end sub_080EDCAC + + thumb_func_start sub_080EDD80 +sub_080EDD80: @ 0x080EDD80 + push {r4, r5, r6, r7, lr} + ldr r5, _080EDE40 + ldr r0, [r5] + ldrh r1, [r0, #4] + ldr r0, _080EDE44 + cmp r1, r0 + beq _080EDE3A + ldr r0, _080EDE48 + cmp r1, r0 + beq _080EDE3A + ldr r0, _080EDE4C + bl sub_080F0628 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080EDE3A + ldr r0, [r5] + ldr r7, _080EDE50 + adds r0, r0, r7 + bl sub_080F05F8 + ldr r6, _080EDE54 + strb r0, [r6] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EDE3A + movs r0, #0x16 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EDE3A + bl sub_080F0004 + ldr r2, _080EDE58 + ldrh r0, [r2, #2] + cmp r0, #0x13 + bls _080EDE3A + movs r1, #0 + ldrsb r1, [r6, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, [r5] + adds r5, r1, r0 + movs r0, #0x16 + strb r0, [r5] + strb r4, [r5, #1] + ldr r0, _080EDE5C + ldrb r0, [r0, #0x14] + strb r0, [r5, #0x12] + movs r4, #0 + adds r7, r5, #6 + mov ip, r2 + adds r6, r5, #0 + adds r6, #0xc +_080EDDFE: + lsls r2, r4, #1 + adds r3, r7, r2 + lsls r1, r4, #2 + add r1, ip + ldrh r0, [r1] + strh r0, [r3] + adds r2, r6, r2 + ldrh r0, [r1, #2] + strh r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _080EDDFE + movs r0, #1 + bl sub_080EFB3C + strb r0, [r5, #2] + adds r0, r5, #0 + adds r0, #0x13 + ldr r1, _080EDE60 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r5, #0 + bl sub_080ED57C + ldr r0, _080EDE64 + ldrb r0, [r0] + strb r0, [r5, #3] +_080EDE3A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDE40: .4byte gUnknown_3005AEC +_080EDE44: .4byte 0x00003C1A +_080EDE48: .4byte 0x0000371A +_080EDE4C: .4byte 0x00005555 +_080EDE50: .4byte 0x000027CC +_080EDE54: .4byte gUnknown_3005E20 +_080EDE58: .4byte gUnknown_2039C20 +_080EDE5C: .4byte gUnknown_2036FB8 +_080EDE60: .4byte gUnknown_3005AF0 +_080EDE64: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EDD80 + + thumb_func_start sub_080EDE68 +sub_080EDE68: @ 0x080EDE68 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + bl sub_080F02AC + ldr r0, _080EDF40 + ldrh r0, [r0] + cmp r0, #1 + beq _080EDF32 + ldr r0, _080EDF44 + mov r8, r0 + ldrh r0, [r0] + movs r7, #0x64 + muls r0, r7, r0 + ldr r6, _080EDF48 + adds r0, r0, r6 + ldr r4, _080EDF4C + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + ldr r1, _080EDF50 + mov sb, r1 + ldr r0, [r1] + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080EDF32 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080EDF32 + ldr r2, _080EDF54 + ldr r0, _080EDF58 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EDF5C + adds r0, r0, r1 + ldr r4, [r2] + adds r4, r4, r0 + movs r0, #5 + strb r0, [r4] + movs r5, #1 + strb r5, [r4, #1] + mov r2, r8 + ldrh r0, [r2] + muls r0, r7, r0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #2] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + strb r0, [r4, #0x1a] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ands r0, r5 + strb r0, [r4, #0x1b] + ldrh r0, [r4, #2] + bl sub_080F0514 + strh r0, [r4, #0x1c] + adds r0, r4, #0 + adds r0, #0xf + mov r2, sb + ldr r1, [r2] + bl sub_080088B8 + mov r1, r8 + ldrh r0, [r1] + muls r0, r7, r0 + adds r0, r0, r6 + adds r2, r4, #4 + movs r1, #2 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EDF60 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + strb r0, [r4, #0x1f] +_080EDF32: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EDF40: .4byte gUnknown_2037290 +_080EDF44: .4byte gUnknown_2037280 +_080EDF48: .4byte gUnknown_2024190 +_080EDF4C: .4byte gUnknown_2021C40 +_080EDF50: .4byte gUnknown_3005AF0 +_080EDF54: .4byte gUnknown_3005AEC +_080EDF58: .4byte gUnknown_3005E20 +_080EDF5C: .4byte 0x000027CC +_080EDF60: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EDE68 + + thumb_func_start sub_080EDF64 +sub_080EDF64: @ 0x080EDF64 + push {r4, r5, lr} + ldr r4, _080EDFF4 + ldr r0, _080EDFF8 + ldrh r0, [r0] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080EDFFC + adds r1, r1, r0 + ldr r2, [r4] + adds r1, r2, r1 + ldrh r3, [r1, #0xc] + ldr r5, _080EE000 + adds r0, r2, r5 + strh r3, [r0] + ldrb r0, [r1, #0x10] + ldr r3, _080EE004 + adds r2, r2, r3 + strb r0, [r2] + ldr r0, [r4] + ldrb r2, [r1, #0x11] + adds r5, #3 + adds r0, r0, r5 + strb r2, [r0] + ldr r0, [r4] + ldrb r2, [r1, #0x14] + adds r3, #2 + adds r0, r0, r3 + strb r2, [r0] + ldr r0, [r4] + ldrb r2, [r1, #2] + adds r5, #2 + adds r0, r0, r5 + strb r2, [r0] + ldr r2, [r4] + ldrh r3, [r1, #0xe] + adds r5, #1 + adds r0, r2, r5 + strh r3, [r0] + ldrh r3, [r1, #4] + adds r5, #2 + adds r0, r2, r5 + strh r3, [r0] + ldrh r3, [r1, #6] + adds r5, #2 + adds r0, r2, r5 + strh r3, [r0] + ldrh r3, [r1, #8] + adds r5, #2 + adds r0, r2, r5 + strh r3, [r0] + ldrh r3, [r1, #0xa] + adds r5, #2 + adds r0, r2, r5 + strh r3, [r0] + ldrb r0, [r1, #3] + ldr r3, _080EE008 + adds r2, r2, r3 + strb r0, [r2] + ldr r0, [r4] + ldrb r1, [r1, #0x13] + adds r5, #3 + adds r0, r0, r5 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _080EE00C + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EDFF4: .4byte gUnknown_3005AEC +_080EDFF8: .4byte gUnknown_2037280 +_080EDFFC: .4byte 0x000027CC +_080EE000: .4byte 0x00002B90 +_080EE004: .4byte 0x00002B92 +_080EE008: .4byte 0x00002BA0 +_080EE00C: .4byte 0x00002BA2 + thumb_func_end sub_080EDF64 + + thumb_func_start sub_080EE010 +sub_080EE010: @ 0x080EE010 + push {r4, lr} + bl sub_080F0578 + ldr r0, _080EE06C + ldrh r0, [r0] + cmp r0, #1 + beq _080EE066 + ldr r2, _080EE070 + ldr r0, _080EE074 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EE078 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + adds r0, r4, #0 + adds r0, #0x17 + bl sub_0818E4A4 + ldrb r0, [r4, #0x17] + strb r0, [r4, #0x18] + movs r0, #0xc + strb r0, [r4] + movs r0, #1 + strb r0, [r4, #1] + adds r0, r4, #2 + bl sub_0818E478 + adds r0, r4, #0 + adds r0, #0xa + adds r1, r4, #0 + adds r1, #0xb + bl sub_0818E43C + bl sub_0818E4DC + strb r0, [r4, #0x16] + adds r0, r4, #0 + bl sub_080ED5A4 +_080EE066: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE06C: .4byte gUnknown_2037290 +_080EE070: .4byte gUnknown_3005AEC +_080EE074: .4byte gUnknown_3005E20 +_080EE078: .4byte 0x000027CC + thumb_func_end sub_080EE010 + + thumb_func_start sub_080EE07C +sub_080EE07C: @ 0x080EE07C + push {r4, lr} + ldr r2, _080EE0D4 + ldr r0, _080EE0D8 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EE0DC + adds r0, r0, r1 + ldr r4, [r2] + adds r4, r4, r0 + movs r0, #1 + strb r0, [r4] + strb r0, [r4, #1] + adds r0, r4, #0 + adds r0, #0x10 + ldr r1, _080EE0E0 + ldr r1, [r1] + bl sub_080088B8 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _080EE0E4 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #2] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EE0E8 + ldrb r0, [r0] + strb r0, [r4, #0x18] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE0D4: .4byte gUnknown_3005AEC +_080EE0D8: .4byte gUnknown_3005E20 +_080EE0DC: .4byte 0x000027CC +_080EE0E0: .4byte gUnknown_3005AF0 +_080EE0E4: .4byte gUnknown_2024190 +_080EE0E8: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE07C + + thumb_func_start sub_080EE0EC +sub_080EE0EC: @ 0x080EE0EC + push {r4, r5, lr} + ldr r2, _080EE130 + ldr r0, _080EE134 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EE138 + adds r0, r0, r1 + ldr r4, [r2] + adds r4, r4, r0 + movs r5, #0 + movs r0, #2 + strb r0, [r4] + movs r0, #1 + strb r0, [r4, #1] + adds r0, r4, #0 + adds r0, #0x10 + ldr r1, _080EE13C + ldr r1, [r1] + bl sub_080088B8 + strh r5, [r4, #2] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EE140 + ldrb r0, [r0] + strb r0, [r4, #0x18] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE130: .4byte gUnknown_3005AEC +_080EE134: .4byte gUnknown_3005E20 +_080EE138: .4byte 0x000027CC +_080EE13C: .4byte gUnknown_3005AF0 +_080EE140: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE0EC + + thumb_func_start sub_080EE144 +sub_080EE144: @ 0x080EE144 + push {r4, r5, r6, r7, lr} + ldr r2, _080EE1FC + ldr r0, _080EE200 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EE204 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + movs r0, #3 + strb r0, [r4] + movs r7, #1 + strb r7, [r4, #1] + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080EE208 + adds r0, r0, r5 + movs r1, #0x20 + movs r2, #0 + bl sub_0806A058 + lsrs r0, r0, #4 + movs r1, #0xf + ands r0, r1 + ldrb r2, [r4, #4] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #4] + ldr r0, _080EE20C + ldrb r0, [r0] + lsls r0, r0, #4 + movs r2, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #4] + adds r0, r4, #5 + ldr r1, _080EE210 + ldr r1, [r1] + bl sub_080088B8 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r0, r5 + adds r2, r4, #0 + adds r2, #0x10 + movs r1, #2 + bl sub_0806A058 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r4, #2] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EE214 + ldrb r0, [r0] + strb r0, [r4, #0xd] + cmp r0, #1 + beq _080EE1F8 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #3 + bl sub_0806A058 + cmp r0, #1 + bne _080EE218 +_080EE1F8: + strb r7, [r4, #0xe] + b _080EE22C + .align 2, 0 +_080EE1FC: .4byte gUnknown_3005AEC +_080EE200: .4byte gUnknown_3005E20 +_080EE204: .4byte 0x000027CC +_080EE208: .4byte gUnknown_2024190 +_080EE20C: .4byte gUnknown_2037286 +_080EE210: .4byte gUnknown_3005AF0 +_080EE214: .4byte gUnknown_829BDA5 +_080EE218: + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #3 + bl sub_0806A058 + strb r0, [r4, #0xe] +_080EE22C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EE144 + + thumb_func_start sub_080EE234 +sub_080EE234: @ 0x080EE234 + bx lr + .align 2, 0 + thumb_func_end sub_080EE234 + + thumb_func_start sub_080EE238 +sub_080EE238: @ 0x080EE238 + push {r4, r5, r6, lr} + ldr r0, _080EE30C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EE304 + movs r1, #0 + ldr r0, _080EE310 + ldr r2, [r0] + ldr r3, _080EE314 +_080EE24E: + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r2, r0 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0x29 + beq _080EE304 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x17 + bls _080EE24E + ldr r0, _080EE318 + bl sub_080F0628 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080EE304 + ldr r6, _080EE310 + ldr r0, [r6] + ldr r1, _080EE314 + adds r0, r0, r1 + bl sub_080F05CC + ldr r4, _080EE31C + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE304 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r2, #0 + ldrsb r2, [r4, r2] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080EE314 + adds r1, r1, r2 + ldr r4, [r6] + adds r4, r4, r1 + movs r1, #0x29 + strb r1, [r4] + movs r3, #1 + strb r3, [r4, #1] + ldr r2, _080EE320 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #0xa] + strb r0, [r4, #0x14] + strb r5, [r4, #2] + strb r5, [r4, #3] + ldrh r0, [r1] + movs r2, #0 + strh r0, [r4, #0xc] + strh r5, [r4, #0xe] + ldrh r0, [r1, #2] + strh r0, [r4, #4] + ldrh r0, [r1, #4] + strh r0, [r4, #6] + ldrh r0, [r1, #6] + strh r0, [r4, #8] + ldrh r0, [r1, #8] + strh r0, [r4, #0xa] + ldrb r0, [r1, #0xb] + strb r0, [r4, #0x10] + strb r2, [r4, #0x11] + strb r2, [r4, #0x12] + movs r0, #0x32 + strb r0, [r4, #0x13] + strb r2, [r4, #0x15] + strh r3, [r4, #0x16] + adds r0, r4, #0 + bl sub_080ED5A4 + ldr r0, _080EE324 + ldrb r0, [r0] + strb r0, [r4, #0x18] +_080EE304: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE30C: .4byte 0x00000864 +_080EE310: .4byte gUnknown_3005AEC +_080EE314: .4byte 0x000027CC +_080EE318: .4byte 0x00000147 +_080EE31C: .4byte gUnknown_3005E20 +_080EE320: .4byte gUnknown_8568B40 +_080EE324: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE238 + + thumb_func_start sub_080EE328 +sub_080EE328: @ 0x080EE328 + push {r4, r5, lr} + ldr r3, _080EE394 + ldr r0, [r3] + ldr r2, _080EE398 + adds r1, r0, r2 + movs r4, #0 + movs r2, #0 + strh r2, [r1] + ldr r5, _080EE39C + adds r0, r0, r5 + strb r4, [r0] + ldr r0, [r3] + ldr r1, _080EE3A0 + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r3] + adds r5, #2 + adds r0, r0, r5 + strb r4, [r0] + ldr r0, [r3] + adds r1, #2 + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r3] + adds r5, #2 + adds r1, r0, r5 + strh r2, [r1] + adds r5, #2 + adds r1, r0, r5 + strh r2, [r1] + adds r5, #2 + adds r1, r0, r5 + strh r2, [r1] + adds r5, #2 + adds r1, r0, r5 + strh r2, [r1] + adds r5, #2 + adds r1, r0, r5 + strh r2, [r1] + ldr r1, _080EE3A4 + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r3] + adds r5, #3 + adds r0, r0, r5 + strb r4, [r0] + ldr r0, [r3] + adds r1, #2 + adds r0, r0, r1 + strh r2, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EE394: .4byte gUnknown_3005AEC +_080EE398: .4byte 0x00002B90 +_080EE39C: .4byte 0x00002B92 +_080EE3A0: .4byte 0x00002B93 +_080EE3A4: .4byte 0x00002BA0 + thumb_func_end sub_080EE328 + + thumb_func_start sub_080EE3A8 +sub_080EE3A8: @ 0x080EE3A8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_080EE3D4 + adds r0, r4, #0 + bl sub_080EE444 + adds r0, r4, #0 + bl sub_080EFC24 + adds r0, r4, #0 + bl sub_080EE568 + adds r0, r4, #0 + bl sub_080EF69C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080EE3A8 + + thumb_func_start sub_080EE3D4 +sub_080EE3D4: @ 0x080EE3D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _080EE41C + ldr r0, [r1] + ldr r2, _080EE420 + adds r0, r0, r2 + ldrh r0, [r0] + mov ip, r1 + cmp r0, #0 + bne _080EE43C + movs r1, #0 + ldr r6, _080EE424 +_080EE3EE: + mov r7, ip + ldr r4, [r7] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r2, r4, r3 + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, #0x29 + bne _080EE432 + ldr r7, _080EE428 + adds r0, r2, r7 + ldrb r0, [r0] + cmp r0, #1 + bne _080EE432 + adds r0, r3, r6 + adds r1, r4, r0 + ldrh r0, [r1, #0x16] + cmp r0, r5 + bhs _080EE42C + movs r0, #0 + strh r0, [r1, #0x16] + b _080EE43C + .align 2, 0 +_080EE41C: .4byte gUnknown_3005AEC +_080EE420: .4byte 0x00002B90 +_080EE424: .4byte 0x000027CC +_080EE428: .4byte 0x000027CD +_080EE42C: + subs r0, r0, r5 + strh r0, [r1, #0x16] + b _080EE43C +_080EE432: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x17 + bls _080EE3EE +_080EE43C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EE3D4 + + thumb_func_start sub_080EE444 +sub_080EE444: @ 0x080EE444 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080EE460 + ldr r0, [r0] + ldr r3, _080EE464 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, r2 + bhi _080EE468 + bl sub_080EE328 + b _080EE46C + .align 2, 0 +_080EE460: .4byte gUnknown_3005AEC +_080EE464: .4byte 0x00002BA2 +_080EE468: + subs r0, r0, r2 + strh r0, [r1] +_080EE46C: + pop {r0} + bx r0 + thumb_func_end sub_080EE444 + + thumb_func_start sub_080EE470 +sub_080EE470: @ 0x080EE470 + push {r4, lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EE498 + ldr r4, _080EE494 + ldrh r0, [r4] + lsrs r0, r0, #8 + cmp r0, #4 + bls _080EE486 + bl sub_080EE4C8 +_080EE486: + ldrb r0, [r4] + strh r0, [r4] + cmp r0, #0xff + beq _080EE4BC + adds r0, #1 + b _080EE4BA + .align 2, 0 +_080EE494: .4byte gUnknown_2039CF2 +_080EE498: + ldr r4, _080EE4C4 + ldrb r0, [r4] + cmp r0, #4 + bls _080EE4A4 + bl sub_080EE4C8 +_080EE4A4: + ldrh r0, [r4] + movs r1, #0xff + lsls r1, r1, #8 + ands r1, r0 + strh r1, [r4] + lsrs r0, r1, #8 + cmp r0, #0xff + beq _080EE4BC + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r1, r2 +_080EE4BA: + strh r0, [r4] +_080EE4BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE4C4: .4byte gUnknown_2039CF2 + thumb_func_end sub_080EE470 + + thumb_func_start sub_080EE4C8 +sub_080EE4C8: @ 0x080EE4C8 + push {r4, r5, r6, lr} + ldr r6, _080EE540 + ldr r0, [r6] + ldr r5, _080EE544 + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EE548 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE538 + movs r0, #0x18 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EE538 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r4, [r6] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x18 + strb r0, [r4] + strb r1, [r4, #1] + ldr r1, _080EE54C + ldrh r0, [r1] + strb r0, [r4, #2] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #3] + ldr r0, _080EE550 + ldrh r0, [r0] + strh r0, [r4, #4] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EE554 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE558 + ldrb r0, [r0] + strb r0, [r4, #6] +_080EE538: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE540: .4byte gUnknown_3005AEC +_080EE544: .4byte 0x000027CC +_080EE548: .4byte gUnknown_3005E20 +_080EE54C: .4byte gUnknown_2039CF2 +_080EE550: .4byte gUnknown_2039CF0 +_080EE554: .4byte gUnknown_3005AF0 +_080EE558: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE4C8 + + thumb_func_start sub_080EE55C +sub_080EE55C: @ 0x080EE55C + ldr r1, _080EE564 + strh r0, [r1] + bx lr + .align 2, 0 +_080EE564: .4byte gUnknown_2039CF0 + thumb_func_end sub_080EE55C + + thumb_func_start sub_080EE568 +sub_080EE568: @ 0x080EE568 + push {r4, lr} + ldr r4, _080EE594 + ldr r0, [r4] + ldr r2, _080EE598 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0x19 + bne _080EE58E + ldrh r0, [r1, #2] + cmp r0, #0x13 + bls _080EE582 + bl sub_080EE5A0 +_080EE582: + ldr r0, [r4] + ldr r1, _080EE59C + adds r0, r0, r1 + movs r1, #0x18 + bl sub_080F03FC +_080EE58E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EE594: .4byte gUnknown_3005AEC +_080EE598: .4byte 0x00002B2C +_080EE59C: .4byte 0x000027CC + thumb_func_end sub_080EE568 + + thumb_func_start sub_080EE5A0 +sub_080EE5A0: @ 0x080EE5A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r7, _080EE648 + ldr r0, [r7] + ldr r1, _080EE64C + adds r5, r0, r1 + ldr r0, _080EE650 + bl sub_080F0628 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080EE63C + ldr r0, [r7] + ldr r1, _080EE654 + mov r8, r1 + add r0, r8 + bl sub_080F05F8 + ldr r4, _080EE658 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE63C + movs r0, #0x19 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EE63C + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldr r4, [r7] + adds r4, r4, r0 + movs r0, #0x19 + strb r0, [r4] + strb r6, [r4, #1] + ldrh r0, [r5, #2] + strh r0, [r4, #2] + movs r0, #5 + bl sub_08084180 + ldrh r1, [r5, #6] + subs r0, r0, r1 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #4] + ldrh r0, [r5, #8] + strh r0, [r4, #8] + ldrb r0, [r5, #0xa] + strb r0, [r4, #0xa] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EE65C + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE660 + ldrb r0, [r0] + strb r0, [r4, #0xb] + ldr r0, [r7] + add r0, r8 + movs r1, #0x18 + bl sub_080F03FC +_080EE63C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EE648: .4byte gUnknown_3005AEC +_080EE64C: .4byte 0x00002B2C +_080EE650: .4byte 0x0000FFFF +_080EE654: .4byte 0x000027CC +_080EE658: .4byte gUnknown_3005E20 +_080EE65C: .4byte gUnknown_3005AF0 +_080EE660: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE5A0 + + thumb_func_start sub_080EE664 +sub_080EE664: @ 0x080EE664 + push {r4, r5, r6, r7, lr} + movs r0, #0x1a + movs r1, #1 + bl sub_080EFF70 + ldr r4, _080EE6D8 + ldr r0, [r4] + ldr r1, _080EE6DC + adds r0, r0, r1 + bl sub_080F05F8 + ldr r2, _080EE6E0 + strb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE760 + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _080EE6DC + adds r0, r0, r2 + ldr r1, [r4] + adds r4, r1, r0 + movs r1, #0 + movs r0, #0x1a + strb r0, [r4] + strb r1, [r4, #1] + ldr r6, _080EE6E4 + movs r5, #0 +_080EE6A8: + lsls r0, r6, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EE6BC + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EE6BC: + adds r6, #1 + ldr r0, _080EE6E8 + cmp r6, r0 + bls _080EE6A8 + strb r5, [r4, #4] + bl sub_0809CD04 + cmp r0, #0 + beq _080EE6EC + movs r0, #1 + bl sub_080BFD4C + b _080EE6F2 + .align 2, 0 +_080EE6D8: .4byte gUnknown_3005AEC +_080EE6DC: .4byte 0x000027CC +_080EE6E0: .4byte gUnknown_3005E20 +_080EE6E4: .4byte 0x00000867 +_080EE6E8: .4byte 0x0000086E +_080EE6EC: + movs r0, #1 + bl sub_080BFD9C +_080EE6F2: + strh r0, [r4, #2] + ldr r1, _080EE768 + ldrb r0, [r1, #0x14] + strb r0, [r4, #7] + ldrh r0, [r1, #0x12] + movs r1, #0 + strh r0, [r4, #0xa] + strb r1, [r4, #5] + strb r1, [r4, #6] + movs r6, #0 + adds r7, r4, #0 + adds r7, #0x13 +_080EE70A: + ldr r0, _080EE76C + lsls r5, r6, #1 + adds r0, r5, r0 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EE724 + ldrb r0, [r4, #5] + adds r0, #1 + strb r0, [r4, #5] +_080EE724: + ldr r0, _080EE770 + adds r0, r5, r0 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EE73C + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] +_080EE73C: + adds r6, #1 + cmp r6, #6 + bls _080EE70A + ldr r0, _080EE774 + ldr r1, [r0] + ldr r2, _080EE778 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r4, #8] + adds r0, r7, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE77C + ldrb r0, [r0] + strb r0, [r4, #0xc] +_080EE760: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EE768: .4byte gUnknown_2036FB8 +_080EE76C: .4byte gUnknown_8568B8A +_080EE770: .4byte gUnknown_8568B7C +_080EE774: .4byte gUnknown_3005AF0 +_080EE778: .4byte 0x00000EB8 +_080EE77C: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE664 + + thumb_func_start sub_080EE780 +sub_080EE780: @ 0x080EE780 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r7, _080EE7F4 + ldr r0, [r7] + ldr r6, _080EE7F8 + adds r0, r0, r6 + bl sub_080F05F8 + ldr r4, _080EE7FC + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE7EE + movs r0, #0x1b + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EE7EE + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r4, [r7] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x1b + strb r0, [r4] + strb r1, [r4, #1] + ldr r1, _080EE800 + ldr r0, [r1] + ldrb r0, [r0, #8] + strb r0, [r4, #8] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE804 + ldrb r0, [r0] + strb r0, [r4, #9] +_080EE7EE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EE7F4: .4byte gUnknown_3005AEC +_080EE7F8: .4byte 0x000027CC +_080EE7FC: .4byte gUnknown_3005E20 +_080EE800: .4byte gUnknown_3005AF0 +_080EE804: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE780 + + thumb_func_start sub_080EE808 +sub_080EE808: @ 0x080EE808 + push {r4, r5, r6, lr} + ldr r6, _080EE87C + ldr r0, [r6] + ldr r5, _080EE880 + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EE884 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE876 + movs r0, #0x1c + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EE876 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r4, [r6] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x1c + strb r0, [r4] + strb r1, [r4, #1] + ldr r0, _080EE888 + ldrh r0, [r0] + strh r0, [r4, #2] + ldr r1, _080EE88C + ldrb r0, [r1, #0x14] + strb r0, [r4, #4] + ldrh r0, [r1, #0x12] + strh r0, [r4, #6] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EE890 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE894 + ldrb r0, [r0] + strb r0, [r4, #5] +_080EE876: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE87C: .4byte gUnknown_3005AEC +_080EE880: .4byte 0x000027CC +_080EE884: .4byte gUnknown_3005E20 +_080EE888: .4byte gUnknown_2037282 +_080EE88C: .4byte gUnknown_2036FB8 +_080EE890: .4byte gUnknown_3005AF0 +_080EE894: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE808 + + thumb_func_start sub_080EE898 +sub_080EE898: @ 0x080EE898 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080EE8DC + ldr r0, [r0] + ldr r1, _080EE8E0 + adds r0, r0, r1 + bl sub_080F05F8 + ldr r1, _080EE8E4 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EE974 + movs r0, #0x1d + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EE974 + movs r5, #0 + ldr r0, _080EE8E8 + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _080EE8EC + cmp r1, #1 + beq _080EE90E + b _080EE974 + .align 2, 0 +_080EE8DC: .4byte gUnknown_3005AEC +_080EE8E0: .4byte 0x000027CC +_080EE8E4: .4byte gUnknown_3005E20 +_080EE8E8: .4byte gUnknown_2039CF6 +_080EE8EC: + ldr r0, _080EE900 + ldrh r1, [r0] + adds r0, r1, #0 + adds r0, #0xc8 + cmp r4, r0 + blt _080EE904 + movs r5, #1 + subs r0, r4, r1 + b _080EE932 + .align 2, 0 +_080EE900: .4byte gUnknown_2039CF4 +_080EE904: + cmp r1, #0x63 + bls _080EE974 + adds r0, r1, #0 + subs r0, #0x64 + b _080EE92C +_080EE90E: + ldr r0, _080EE920 + ldrh r1, [r0] + adds r0, r1, #0 + adds r0, #0x32 + cmp r4, r0 + blt _080EE924 + movs r5, #1 + subs r0, r4, r1 + b _080EE932 + .align 2, 0 +_080EE920: .4byte gUnknown_2039CF4 +_080EE924: + cmp r1, #0x31 + bls _080EE974 + adds r0, r1, #0 + subs r0, #0x32 +_080EE92C: + cmp r4, r0 + bgt _080EE974 + subs r0, r1, r4 +_080EE932: + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, _080EE97C + ldr r0, _080EE980 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EE984 + adds r0, r0, r1 + ldr r4, [r2] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x1d + strb r0, [r4] + strb r1, [r4, #1] + strh r3, [r4, #4] + ldrb r0, [r6] + strb r0, [r4, #3] + strb r5, [r4, #2] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EE988 + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EE98C + ldrb r0, [r0] + strb r0, [r4, #8] +_080EE974: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EE97C: .4byte gUnknown_3005AEC +_080EE980: .4byte gUnknown_3005E20 +_080EE984: .4byte 0x000027CC +_080EE988: .4byte gUnknown_3005AF0 +_080EE98C: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EE898 + + thumb_func_start sub_080EE990 +sub_080EE990: @ 0x080EE990 + ldr r2, _080EE99C + movs r1, #0 + strb r1, [r2] + ldr r1, _080EE9A0 + strh r0, [r1] + bx lr + .align 2, 0 +_080EE99C: .4byte gUnknown_2039CF6 +_080EE9A0: .4byte gUnknown_2039CF4 + thumb_func_end sub_080EE990 + + thumb_func_start sub_080EE9A4 +sub_080EE9A4: @ 0x080EE9A4 + ldr r2, _080EE9B0 + movs r1, #1 + strb r1, [r2] + ldr r1, _080EE9B4 + strh r0, [r1] + bx lr + .align 2, 0 +_080EE9B0: .4byte gUnknown_2039CF6 +_080EE9B4: .4byte gUnknown_2039CF4 + thumb_func_end sub_080EE9A4 + + thumb_func_start sub_080EE9B8 +sub_080EE9B8: @ 0x080EE9B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + movs r3, #0 + ldr r6, _080EE9FC + ldr r7, _080EEA00 + adds r2, r6, #0 + movs r1, #0 +_080EE9CC: + adds r0, r3, r2 + strb r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _080EE9CC + movs r3, #0 + movs r5, #0 +_080EE9DE: + ldr r0, [r7] + ldr r1, _080EEA04 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r4, [r0] + adds r3, #1 + cmp r4, #0 + beq _080EEA2A + movs r1, #0 + ldrb r0, [r6] + cmp r0, #0 + bne _080EEA08 + strb r4, [r6] + b _080EEA24 + .align 2, 0 +_080EE9FC: .4byte gUnknown_3005E40 +_080EEA00: .4byte gUnknown_3005AEC +_080EEA04: .4byte 0x00001AAE +_080EEA08: + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, r4 + beq _080EEA2A + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bhi _080EEA2A + adds r2, r1, r6 + ldrb r0, [r2] + cmp r0, #0 + bne _080EEA08 + strb r4, [r2] +_080EEA24: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EEA2A: + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _080EE9DE + cmp r5, #4 + bls _080EEA3E + movs r0, #4 + mov r1, r8 + strb r0, [r1, #3] + b _080EEA42 +_080EEA3E: + mov r0, r8 + strb r5, [r0, #3] +_080EEA42: + mov r1, r8 + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080EEAC4 + cmp r0, #1 + bne _080EEA54 + ldrb r0, [r6] + strb r0, [r1, #4] + b _080EEAC4 +_080EEA54: + movs r6, #0 + adds r7, r5, #0 + muls r7, r5, r7 + cmp r6, r7 + bge _080EEA9E + ldr r0, _080EEAD0 + mov sb, r0 +_080EEA62: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + mov r0, sb + adds r2, r4, r0 + ldrb r3, [r2] + add r1, sb + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r7 + blt _080EEA62 +_080EEA9E: + movs r3, #0 + mov r1, r8 + ldrb r1, [r1, #3] + cmp r3, r1 + bhs _080EEAC4 + mov r2, r8 + adds r2, #4 + ldr r4, _080EEAD0 +_080EEAAE: + adds r1, r2, r3 + adds r0, r3, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r0, r8 + ldrb r0, [r0, #3] + cmp r3, r0 + blo _080EEAAE +_080EEAC4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEAD0: .4byte gUnknown_3005E40 + thumb_func_end sub_080EE9B8 + + thumb_func_start sub_080EEAD4 +sub_080EEAD4: @ 0x080EEAD4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + movs r7, #0 + movs r0, #0 + mov sb, r0 + ldr r1, _080EEC18 + mov r8, r1 +_080EEAEA: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _080EEC1C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080EEBB4 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _080EEBB4 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r2, _080EEC20 + mov r3, sb + lsls r1, r3, #3 + adds r6, r1, r2 + strb r0, [r6] + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + strh r0, [r6, #2] + movs r5, #0 + adds r0, r4, #0 + movs r1, #0xd + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080EEB40 + mov r0, r8 + strh r1, [r0] + movs r5, #1 +_080EEB40: + adds r0, r4, #0 + movs r1, #0xe + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080EEB5C + lsls r0, r5, #1 + add r0, r8 + strh r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EEB5C: + adds r0, r4, #0 + movs r1, #0xf + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080EEB78 + lsls r0, r5, #1 + add r0, r8 + strh r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EEB78: + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080EEB94 + lsls r0, r5, #1 + add r0, r8 + strh r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EEB94: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + strh r0, [r6, #4] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 +_080EEBB4: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #5 + bls _080EEAEA + movs r7, #0 + movs r1, #0 + cmp r1, sb + bhs _080EEBDE + ldr r2, _080EEC20 +_080EEBC8: + lsls r0, r7, #3 + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, sb + blo _080EEBC8 +_080EEBDE: + adds r0, r1, #0 + mov r1, sb + bl __divsi3 + mov r1, sl + strb r0, [r1, #2] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sb + bl __modsi3 + lsls r0, r0, #0x10 + ldr r1, _080EEC20 + lsrs r0, r0, #0xd + adds r0, r0, r1 + ldrh r1, [r0, #2] + mov r2, sl + strh r1, [r2, #8] + ldrh r0, [r0, #4] + strh r0, [r2, #0xa] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEC18: .4byte gUnknown_3005E30 +_080EEC1C: .4byte gUnknown_2024190 +_080EEC20: .4byte gUnknown_3005E50 + thumb_func_end sub_080EEAD4 + + thumb_func_start sub_080EEC24 +sub_080EEC24: @ 0x080EEC24 + push {r4, lr} + movs r0, #0x1f + movs r1, #1 + bl sub_080EFF70 + ldr r4, _080EEC90 + ldr r0, [r4] + ldr r1, _080EEC94 + adds r0, r0, r1 + bl sub_080F05F8 + ldr r2, _080EEC98 + strb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EEC88 + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EEC94 + adds r0, r0, r1 + ldr r4, [r4] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x1f + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EEC9C + ldr r1, [r1] + bl sub_080088B8 + adds r0, r4, #0 + bl sub_080EE9B8 + adds r0, r4, #0 + bl sub_080EEAD4 + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EECA0 + ldrb r0, [r0] + strb r0, [r4, #0xc] +_080EEC88: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EEC90: .4byte gUnknown_3005AEC +_080EEC94: .4byte 0x000027CC +_080EEC98: .4byte gUnknown_3005E20 +_080EEC9C: .4byte gUnknown_3005AF0 +_080EECA0: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EEC24 + + thumb_func_start sub_080EECA4 +sub_080EECA4: @ 0x080EECA4 + push {r4, r5, r6, r7, lr} + ldr r6, _080EED44 + ldr r0, [r6] + ldr r5, _080EED48 + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EED4C + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080EECC4 + b _080EEDE2 +_080EECC4: + movs r0, #0x1e + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EECD6 + b _080EEDE2 +_080EECD6: + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r6] + adds r4, r1, r0 + movs r1, #0 + movs r0, #0x1e + strb r0, [r4] + strb r1, [r4, #1] + movs r5, #0 + ldr r6, _080EED50 + ldr r3, _080EED54 + ldr r7, _080EED58 + adds r2, r6, #0 + adds r2, #0x36 +_080EECFA: + adds r0, r1, r2 + ldrb r0, [r0] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xa + bls _080EECFA + ldrb r1, [r6, #5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080EED1E + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_080EED1E: + ldrb r0, [r3, #0x14] + strb r0, [r4, #4] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, [r7] + bl sub_080088B8 + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldr r0, _080EED5C + ldrb r0, [r0] + subs r0, #1 + cmp r0, #9 + bhi _080EEDA2 + lsls r0, r0, #2 + ldr r1, _080EED60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EED44: .4byte gUnknown_3005AEC +_080EED48: .4byte 0x000027CC +_080EED4C: .4byte gUnknown_3005E20 +_080EED50: .4byte gUnknown_3005A70 +_080EED54: .4byte gUnknown_2036FB8 +_080EED58: .4byte gUnknown_3005AF0 +_080EED5C: .4byte gUnknown_2023FDE +_080EED60: .4byte _080EED64 +_080EED64: @ jump table + .4byte _080EED96 @ case 0 + .4byte _080EED8C @ case 1 + .4byte _080EED8C @ case 2 + .4byte _080EED9A @ case 3 + .4byte _080EED9A @ case 4 + .4byte _080EED9E @ case 5 + .4byte _080EED92 @ case 6 + .4byte _080EED9A @ case 7 + .4byte _080EEDA2 @ case 8 + .4byte _080EED9E @ case 9 +_080EED8C: + movs r0, #0 + strb r0, [r4] + b _080EEDE2 +_080EED92: + movs r0, #0 + b _080EEDA0 +_080EED96: + movs r0, #1 + b _080EEDA0 +_080EED9A: + movs r0, #2 + b _080EEDA0 +_080EED9E: + movs r0, #3 +_080EEDA0: + strb r0, [r4, #5] +_080EEDA2: + ldr r1, _080EEDC4 + ldrh r0, [r1, #0x20] + strh r0, [r4, #2] + ldrb r0, [r4, #5] + cmp r0, #1 + beq _080EEDD2 + cmp r0, #1 + bgt _080EEDD6 + cmp r0, #0 + bne _080EEDD6 + ldrb r1, [r1, #5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080EEDC8 + movs r0, #1 + b _080EEDCC + .align 2, 0 +_080EEDC4: .4byte gUnknown_3005A70 +_080EEDC8: + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1c +_080EEDCC: + strh r0, [r4, #6] + strh r5, [r4, #8] + b _080EEDD6 +_080EEDD2: + ldrh r0, [r1, #0x22] + strh r0, [r4, #0xc] +_080EEDD6: + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EEDE8 + ldrb r0, [r0] + strb r0, [r4, #0xe] +_080EEDE2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEDE8: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EECA4 + + thumb_func_start sub_080EEDEC +sub_080EEDEC: @ 0x080EEDEC + push {r4, r5, r6, lr} + ldr r6, _080EEE60 + ldr r0, [r6] + ldr r5, _080EEE64 + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EEE68 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EEE5A + movs r0, #0x20 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EEE5A + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r4, [r6] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x20 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EEE6C + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _080EEE70 + ldrb r1, [r0] + movs r0, #4 + subs r0, r0, r1 + strb r0, [r4, #4] + ldr r0, _080EEE74 + ldrh r0, [r0] + strh r0, [r4, #2] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EEE78 + ldrb r0, [r0] + strb r0, [r4, #5] +_080EEE5A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EEE60: .4byte gUnknown_3005AEC +_080EEE64: .4byte 0x000027CC +_080EEE68: .4byte gUnknown_3005E20 +_080EEE6C: .4byte gUnknown_3005AF0 +_080EEE70: .4byte gUnknown_2037280 +_080EEE74: .4byte gUnknown_2037282 +_080EEE78: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EEDEC + + thumb_func_start sub_080EEE7C +sub_080EEE7C: @ 0x080EEE7C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r3, #0 + ldr r3, [sp, #0x24] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp] + ldr r0, _080EEF58 + mov r8, r0 + ldr r0, [r0] + ldr r5, _080EEF5C + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EEF60 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EEF46 + movs r0, #0x21 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EEF46 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r2, r8 + ldr r1, [r2] + adds r4, r1, r0 + movs r1, #0 + movs r0, #0x21 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EEF64 + ldr r1, [r1] + bl sub_080088B8 + mov r0, sl + strh r0, [r4, #4] + mov r1, sb + strh r1, [r4, #6] + lsls r0, r6, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r4, #2] + movs r2, #0 + movs r3, #0 + adds r5, r4, #0 + adds r5, #8 +_080EEF0E: + cmp r2, r6 + beq _080EEF28 + lsls r0, r2, #1 + adds r0, r0, r7 + ldrh r1, [r0] + cmp r1, #0 + beq _080EEF28 + lsls r0, r3, #1 + adds r0, r5, r0 + strh r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080EEF28: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080EEF0E + strb r3, [r4, #0x10] + mov r2, sp + ldrh r2, [r2] + strh r2, [r4, #0xe] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EEF68 + ldrb r0, [r0] + strb r0, [r4, #0x11] +_080EEF46: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEF58: .4byte gUnknown_3005AEC +_080EEF5C: .4byte 0x000027CC +_080EEF60: .4byte gUnknown_3005E20 +_080EEF64: .4byte gUnknown_3005AF0 +_080EEF68: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EEE7C + + thumb_func_start sub_080EEF6C +sub_080EEF6C: @ 0x080EEF6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r6, _080EEFE8 + ldr r0, [r6] + ldr r5, _080EEFEC + adds r0, r0, r5 + bl sub_080F05F8 + ldr r4, _080EEFF0 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EEFDE + movs r0, #0x27 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EEFDE + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r4, [r6] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x27 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EEFF4 + ldr r1, [r1] + bl sub_080088B8 + mov r0, r8 + strb r0, [r4, #2] + strb r7, [r4, #3] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EEFF8 + ldrb r0, [r0] + strb r0, [r4, #4] +_080EEFDE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EEFE8: .4byte gUnknown_3005AEC +_080EEFEC: .4byte 0x000027CC +_080EEFF0: .4byte gUnknown_3005E20 +_080EEFF4: .4byte gUnknown_3005AF0 +_080EEFF8: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EEF6C + + thumb_func_start sub_080EEFFC +sub_080EEFFC: @ 0x080EEFFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r7, _080EF094 + ldr r0, [r7] + ldr r6, _080EF098 + adds r0, r0, r6 + bl sub_080F05F8 + ldr r4, _080EF09C + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF0B2 + movs r0, #0x23 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EF0B2 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r7] + adds r4, r1, r0 + movs r1, #0 + movs r0, #0x23 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EF0A0 + ldr r1, [r1] + bl sub_080088B8 + adds r2, r4, #4 + adds r0, r5, #0 + movs r1, #2 + bl sub_0806A058 + adds r0, r5, #0 + bl sub_080EF0BC + strb r0, [r4, #2] + mov r0, r8 + bl sub_080EF1B4 + strb r0, [r4, #3] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EF0A4 + ldrb r0, [r0] + strb r0, [r4, #0xf] + cmp r0, #1 + beq _080EF090 + adds r0, r5, #0 + movs r1, #3 + bl sub_0806A058 + cmp r0, #1 + bne _080EF0A8 +_080EF090: + movs r0, #1 + b _080EF0B0 + .align 2, 0 +_080EF094: .4byte gUnknown_3005AEC +_080EF098: .4byte 0x000027CC +_080EF09C: .4byte gUnknown_3005E20 +_080EF0A0: .4byte gUnknown_3005AF0 +_080EF0A4: .4byte gUnknown_829BDA5 +_080EF0A8: + adds r0, r5, #0 + movs r1, #3 + bl sub_0806A058 +_080EF0B0: + strb r0, [r4, #0x10] +_080EF0B2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080EEFFC + + thumb_func_start sub_080EF0BC +sub_080EF0BC: @ 0x080EF0BC + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x32 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x33 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x34 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x35 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x36 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x43 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x44 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x45 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x46 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x47 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x48 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x49 + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x4a + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x4b + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x4c + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x4d + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x4e + bl sub_0806A058 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080EF0BC + + thumb_func_start sub_080EF1B4 +sub_080EF1B4: @ 0x080EF1B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x43 + beq _080EF23A + cmp r0, #0x32 + bne _080EF1C6 + movs r0, #1 + b _080EF240 +_080EF1C6: + cmp r0, #0x33 + bne _080EF1CE + movs r0, #5 + b _080EF240 +_080EF1CE: + cmp r0, #0x34 + bne _080EF1D6 + movs r0, #9 + b _080EF240 +_080EF1D6: + cmp r0, #0x35 + bne _080EF1DE + movs r0, #0xd + b _080EF240 +_080EF1DE: + cmp r0, #0x36 + bne _080EF1E6 + movs r0, #0x11 + b _080EF240 +_080EF1E6: + cmp r0, #0x44 + bne _080EF1EE + movs r0, #0x15 + b _080EF240 +_080EF1EE: + cmp r0, #0x45 + bne _080EF1F6 + movs r0, #0x16 + b _080EF240 +_080EF1F6: + cmp r0, #0x46 + bne _080EF1FE + movs r0, #0x17 + b _080EF240 +_080EF1FE: + cmp r0, #0x47 + bne _080EF206 + movs r0, #0x18 + b _080EF240 +_080EF206: + cmp r0, #0x48 + bne _080EF20E + movs r0, #0x19 + b _080EF240 +_080EF20E: + cmp r0, #0x49 + bne _080EF216 + movs r0, #0x1a + b _080EF240 +_080EF216: + cmp r0, #0x4a + bne _080EF21E + movs r0, #0x1b + b _080EF240 +_080EF21E: + cmp r0, #0x4b + bne _080EF226 + movs r0, #0x1c + b _080EF240 +_080EF226: + cmp r0, #0x4c + bne _080EF22E + movs r0, #0x1d + b _080EF240 +_080EF22E: + cmp r0, #0x4d + bne _080EF236 + movs r0, #0x1e + b _080EF240 +_080EF236: + cmp r0, #0x4e + beq _080EF23E +_080EF23A: + movs r0, #0 + b _080EF240 +_080EF23E: + movs r0, #0x1f +_080EF240: + pop {r1} + bx r1 + thumb_func_end sub_080EF1B4 + + thumb_func_start sub_080EF244 +sub_080EF244: @ 0x080EF244 + push {r4, r5, r6, lr} + ldr r5, _080EF2BC + ldr r0, [r5] + ldr r6, _080EF2C0 + adds r0, r0, r6 + bl sub_080F05F8 + ldr r4, _080EF2C4 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF2B4 + movs r0, #0x22 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EF2B4 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r4, [r5] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x22 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EF2C8 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, [r5] + ldr r2, _080EF2CC + adds r1, r0, r2 + ldrh r1, [r1] + strh r1, [r4, #4] + ldr r1, _080EF2D0 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #6] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EF2D4 + ldrb r0, [r0] + strb r0, [r4, #8] +_080EF2B4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080EF2BC: .4byte gUnknown_3005AEC +_080EF2C0: .4byte 0x000027CC +_080EF2C4: .4byte gUnknown_3005E20 +_080EF2C8: .4byte gUnknown_3005AF0 +_080EF2CC: .4byte 0x00002BB0 +_080EF2D0: .4byte 0x00002BB2 +_080EF2D4: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EF244 + + thumb_func_start sub_080EF2D8 +sub_080EF2D8: @ 0x080EF2D8 + push {r4, lr} + ldr r4, _080EF314 + ldr r0, [r4] + ldr r1, _080EF318 + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080EF31C + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF328 + movs r0, #0xb + bl sub_080F0054 + ldr r0, _080EF320 + ldrh r0, [r0] + cmp r0, #1 + beq _080EF328 + ldr r0, [r4] + ldr r1, _080EF324 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + beq _080EF328 + movs r0, #0 + b _080EF32A + .align 2, 0 +_080EF314: .4byte gUnknown_3005AEC +_080EF318: .4byte 0x000027CC +_080EF31C: .4byte gUnknown_3005E20 +_080EF320: .4byte gUnknown_2037290 +_080EF324: .4byte 0x00003150 +_080EF328: + movs r0, #1 +_080EF32A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080EF2D8 + + thumb_func_start sub_080EF330 +sub_080EF330: @ 0x080EF330 + push {r4, r5, r6, r7, lr} + movs r0, #0x24 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080EF388 + ldr r0, _080EF3A8 + ldr r0, [r0] + ldr r1, _080EF3AC + adds r7, r0, r1 + bl sub_080F0AEC + adds r4, r0, #0 + movs r6, #5 + lsrs r5, r4, #8 +_080EF354: + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r1, r0, r7 + ldrb r0, [r1] + cmp r0, #0x24 + bne _080EF37E + movs r3, #0xff + adds r0, r4, #0 + ands r0, r3 + adds r2, r1, #0 + adds r2, #0x22 + ldrb r2, [r2] + cmp r0, r2 + bne _080EF37E + adds r0, r5, #0 + ands r0, r3 + adds r1, #0x23 + ldrb r1, [r1] + cmp r0, r1 + beq _080EF3B4 +_080EF37E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x17 + bls _080EF354 +_080EF388: + ldr r0, _080EF3A8 + ldr r0, [r0] + ldr r1, _080EF3AC + adds r0, r0, r1 + bl sub_080F05F8 + ldr r1, _080EF3B0 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF3D8 + movs r0, #1 + b _080EF3DA + .align 2, 0 +_080EF3A8: .4byte gUnknown_3005AEC +_080EF3AC: .4byte 0x000027CC +_080EF3B0: .4byte gUnknown_3005E20 +_080EF3B4: + ldr r5, _080EF3D0 + ldr r0, [r5] + ldr r4, _080EF3D4 + adds r0, r0, r4 + adds r1, r6, #0 + bl sub_080F03FC + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080F0428 + movs r0, #1 + b _080EF3DA + .align 2, 0 +_080EF3D0: .4byte gUnknown_3005AEC +_080EF3D4: .4byte 0x000027CC +_080EF3D8: + movs r0, #0 +_080EF3DA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080EF330 + + thumb_func_start sub_080EF3E0 +sub_080EF3E0: @ 0x080EF3E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r5, _080EF448 + ldr r0, [r5] + ldr r1, _080EF44C + adds r0, r0, r1 + bl sub_080F05F8 + ldr r2, _080EF450 + strb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080EF40C + b _080EF56A +_080EF40C: + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _080EF44C + adds r0, r0, r2 + ldr r1, [r5] + adds r7, r1, r0 + movs r1, #0 + movs r0, #0x24 + strb r0, [r7] + strb r1, [r7, #1] + adds r0, r7, #0 + adds r0, #0x13 + ldr r1, _080EF454 + ldr r1, [r1] + bl sub_080088B8 + strh r6, [r7, #2] + strb r4, [r7, #0xd] + subs r0, r4, #1 + cmp r0, #0xc + bls _080EF43E + b _080EF55E +_080EF43E: + lsls r0, r0, #2 + ldr r1, _080EF458 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EF448: .4byte gUnknown_3005AEC +_080EF44C: .4byte 0x000027CC +_080EF450: .4byte gUnknown_3005E20 +_080EF454: .4byte gUnknown_3005AF0 +_080EF458: .4byte _080EF45C +_080EF45C: @ jump table + .4byte _080EF490 @ case 0 + .4byte _080EF4C0 @ case 1 + .4byte _080EF500 @ case 2 + .4byte _080EF518 @ case 3 + .4byte _080EF490 @ case 4 + .4byte _080EF490 @ case 5 + .4byte _080EF490 @ case 6 + .4byte _080EF490 @ case 7 + .4byte _080EF490 @ case 8 + .4byte _080EF490 @ case 9 + .4byte _080EF490 @ case 10 + .4byte _080EF490 @ case 11 + .4byte _080EF490 @ case 12 +_080EF490: + ldr r4, _080EF4BC + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #4] + adds r0, r4, #0 + adds r0, #0x64 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #6] + adds r4, #0xc8 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #8] + b _080EF55E + .align 2, 0 +_080EF4BC: .4byte gUnknown_2024190 +_080EF4C0: + ldr r4, _080EF4FC + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #4] + adds r0, r4, #0 + adds r0, #0x64 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #6] + adds r0, r4, #0 + adds r0, #0xc8 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #8] + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r4, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #0xa] + b _080EF55E + .align 2, 0 +_080EF4FC: .4byte gUnknown_2024190 +_080EF500: + ldr r4, _080EF514 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #4] + adds r4, #0x64 + adds r0, r4, #0 + b _080EF554 + .align 2, 0 +_080EF514: .4byte gUnknown_2024190 +_080EF518: + ldr r2, _080EF574 + mov r8, r2 + ldr r6, _080EF578 + ldr r0, [r6] + ldr r1, _080EF57C + adds r0, r0, r1 + ldrh r0, [r0] + movs r5, #0x64 + adds r1, r0, #0 + muls r1, r5, r1 + movs r4, #0xea + lsls r4, r4, #1 + adds r1, r1, r4 + ldr r0, [r2] + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #4] + ldr r0, [r6] + ldr r2, _080EF580 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r0, #0 + muls r1, r5, r1 + adds r1, r1, r4 + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r1 +_080EF554: + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + strh r0, [r7, #6] +_080EF55E: + adds r0, r7, #0 + bl sub_080ED57C + ldr r0, _080EF584 + ldrb r0, [r0] + strb r0, [r7, #0xc] +_080EF56A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF574: .4byte gUnknown_3005AEC +_080EF578: .4byte gUnknown_3005AF0 +_080EF57C: .4byte 0x00000CAA +_080EF580: .4byte 0x00000CAC +_080EF584: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EF3E0 + + thumb_func_start sub_080EF588 +sub_080EF588: @ 0x080EF588 + push {r4, r5, r6, r7, lr} + movs r0, #0x26 + movs r1, #0 + bl sub_080EFF70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EF690 + ldr r7, _080EF644 + ldr r0, [r7] + ldr r1, _080EF648 + adds r0, r0, r1 + bl sub_080F05F8 + ldr r2, _080EF64C + strb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF690 + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EF648 + adds r0, r0, r1 + ldr r1, [r7] + adds r5, r1, r0 + movs r1, #0 + movs r0, #0x26 + strb r0, [r5] + strb r1, [r5, #1] + adds r0, r5, #0 + adds r0, #0x13 + ldr r1, _080EF650 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _080EF654 + bl sub_0809CF6C + strh r0, [r5, #2] + bl sub_080EA48C + adds r0, r5, #4 + ldr r1, _080EF658 + bl sub_080088B8 + ldr r0, _080EF65C + bl sub_0809CF6C + strh r0, [r5, #0x10] + ldr r0, _080EF660 + bl sub_0809CF6C + adds r4, r0, #0 + ldr r0, _080EF664 + bl sub_0809CF6C + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + adds r4, r4, r0 + str r4, [r5, #0xc] + adds r0, r5, #0 + bl sub_080ED57C + ldr r0, _080EF668 + ldrb r0, [r0] + strb r0, [r5, #0x1b] + cmp r0, #1 + beq _080EF640 + ldr r4, [r7] + ldr r6, _080EF66C + adds r0, r6, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r4, r4, r1 + ldr r0, _080EF670 + adds r4, r4, r0 + ldrb r0, [r4] + cmp r0, #1 + bne _080EF674 +_080EF640: + movs r0, #1 + b _080EF68E + .align 2, 0 +_080EF644: .4byte gUnknown_3005AEC +_080EF648: .4byte 0x000027CC +_080EF64C: .4byte gUnknown_3005E20 +_080EF650: .4byte gUnknown_3005AF0 +_080EF654: .4byte 0x000040EC +_080EF658: .4byte gUnknown_2021C40 +_080EF65C: .4byte 0x000040ED +_080EF660: .4byte 0x000040EE +_080EF664: .4byte 0x000040EF +_080EF668: .4byte gUnknown_829BDA5 +_080EF66C: .4byte 0x00004054 +_080EF670: .4byte 0x00001AA9 +_080EF674: + adds r0, r6, #0 + bl sub_0809CF6C + ldr r2, [r7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #5 + adds r2, r2, r1 + ldr r1, _080EF698 + adds r2, r2, r1 + ldrb r0, [r2] +_080EF68E: + strb r0, [r5, #0x1c] +_080EF690: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF698: .4byte 0x00001AA9 + thumb_func_end sub_080EF588 + + thumb_func_start sub_080EF69C +sub_080EF69C: @ 0x080EF69C + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r6, _080EF6A8 + adds r7, r6, #2 + b _080EF6B2 + .align 2, 0 +_080EF6A8: .4byte gUnknown_8568B98 +_080EF6AC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080EF6B2: + cmp r5, #6 + bhi _080EF6D2 + lsls r4, r5, #2 + adds r0, r4, r6 + ldrh r0, [r0] + bl sub_0809CF6C + adds r4, r4, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r4, [r4] + cmp r0, r4 + blo _080EF6AC + adds r0, r5, #0 + bl sub_080EF6F8 +_080EF6D2: + movs r5, #0 + ldr r4, _080EF6F4 +_080EF6D6: + lsls r0, r5, #2 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0 + bl sub_0809CF88 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #6 + bls _080EF6D6 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF6F4: .4byte gUnknown_8568B98 + thumb_func_end sub_080EF69C + + thumb_func_start sub_080EF6F8 +sub_080EF6F8: @ 0x080EF6F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0x25 + movs r1, #1 + bl sub_080EFF70 + ldr r4, _080EF76C + ldr r0, [r4] + ldr r1, _080EF770 + adds r0, r0, r1 + bl sub_080F05F8 + ldr r2, _080EF774 + strb r0, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF764 + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EF770 + adds r0, r0, r1 + ldr r4, [r4] + adds r4, r4, r0 + movs r1, #0 + movs r0, #0x25 + strb r0, [r4] + strb r1, [r4, #1] + adds r0, r4, #0 + adds r0, #0x13 + ldr r1, _080EF778 + ldr r1, [r1] + bl sub_080088B8 + strb r5, [r4, #4] + ldr r1, _080EF77C + lsls r0, r5, #2 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0809CF6C + strh r0, [r4, #2] + adds r0, r4, #0 + bl sub_080ED57C + ldr r0, _080EF780 + ldrb r0, [r0] + strb r0, [r4, #5] +_080EF764: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EF76C: .4byte gUnknown_3005AEC +_080EF770: .4byte 0x000027CC +_080EF774: .4byte gUnknown_3005E20 +_080EF778: .4byte gUnknown_3005AF0 +_080EF77C: .4byte gUnknown_8568B98 +_080EF780: .4byte gUnknown_829BDA5 + thumb_func_end sub_080EF6F8 + + thumb_func_start sub_080EF784 +sub_080EF784: @ 0x080EF784 + push {r4, lr} + ldr r4, _080EF7A4 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF7A4: .4byte 0x000040E6 + thumb_func_end sub_080EF784 + + thumb_func_start sub_080EF7A8 +sub_080EF7A8: @ 0x080EF7A8 + push {r4, lr} + ldr r4, _080EF7C8 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF7C8: .4byte 0x000040EB + thumb_func_end sub_080EF7A8 + + thumb_func_start sub_080EF7CC +sub_080EF7CC: @ 0x080EF7CC + push {r4, lr} + ldr r4, _080EF7EC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF7EC: .4byte 0x000040E7 + thumb_func_end sub_080EF7CC + + thumb_func_start sub_080EF7F0 +sub_080EF7F0: @ 0x080EF7F0 + push {r4, lr} + ldr r4, _080EF810 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF810: .4byte 0x000040E8 + thumb_func_end sub_080EF7F0 + + thumb_func_start sub_080EF814 +sub_080EF814: @ 0x080EF814 + push {r4, lr} + ldr r4, _080EF834 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF834: .4byte 0x000040E9 + thumb_func_end sub_080EF814 + + thumb_func_start sub_080EF838 +sub_080EF838: @ 0x080EF838 + push {r4, lr} + ldr r4, _080EF85C + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + ldr r0, _080EF860 + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF85C: .4byte 0x000040EA +_080EF860: .4byte gUnknown_2037284 + thumb_func_end sub_080EF838 + + thumb_func_start sub_080EF864 +sub_080EF864: @ 0x080EF864 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _080EF888 + adds r0, r5, #0 + bl sub_0809CF6C + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809CF88 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EF888: .4byte 0x000040F1 + thumb_func_end sub_080EF864 + + thumb_func_start sub_080EF88C +sub_080EF88C: @ 0x080EF88C + push {r4, r5, r6, r7, lr} + ldr r0, _080EF918 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080EF910 + ldr r6, _080EF91C + ldr r0, [r6] + ldr r7, _080EF920 + adds r0, r0, r7 + bl sub_080EF934 + ldr r5, _080EF924 + strb r0, [r5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080EF910 + ldr r0, _080EF928 + bl sub_080F0628 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EF910 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r4, r0, #1 + adds r0, r4, #0 + bl sub_080EFBE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EF910 + ldr r1, [r6] + movs r0, #0 + ldrsb r0, [r5, r0] + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r7 + strb r4, [r1] + ldr r2, [r6] + movs r0, #0 + ldrsb r0, [r5, r0] + lsls r0, r0, #2 + adds r0, r2, r0 + ldr r1, _080EF92C + adds r0, r0, r1 + movs r1, #4 + strh r1, [r0] + movs r0, #0 + ldrsb r0, [r5, r0] + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r0, _080EF930 + adds r2, r2, r0 + movs r0, #1 + strb r0, [r2] +_080EF910: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EF918: .4byte 0x00000864 +_080EF91C: .4byte gUnknown_3005AEC +_080EF920: .4byte 0x00002B50 +_080EF924: .4byte gUnknown_3005E20 +_080EF928: .4byte 0x0000028F +_080EF92C: .4byte 0x00002B52 +_080EF930: .4byte 0x00002B51 + thumb_func_end sub_080EF88C + + thumb_func_start sub_080EF934 +sub_080EF934: @ 0x080EF934 + push {lr} + adds r2, r0, #0 + movs r1, #0 +_080EF93A: + lsls r0, r1, #0x18 + asrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080EF94C + adds r0, r1, #0 + b _080EF95C +_080EF94C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0xf + ble _080EF93A + movs r0, #1 + rsbs r0, r0, #0 +_080EF95C: + pop {r1} + bx r1 + thumb_func_end sub_080EF934 + + thumb_func_start sub_080EF960 +sub_080EF960: @ 0x080EF960 + push {r4, lr} + movs r4, #0 +_080EF964: + adds r0, r4, #0 + bl sub_080EF97C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080EF964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EF960 + + thumb_func_start sub_080EF97C +sub_080EF97C: @ 0x080EF97C + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _080EF9AC + ldr r1, [r3] + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r2, _080EF9B0 + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + ldr r4, _080EF9B4 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _080EF9B8 + adds r1, r1, r0 + strh r2, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080EF9AC: .4byte gUnknown_3005AEC +_080EF9B0: .4byte 0x00002B50 +_080EF9B4: .4byte 0x00002B51 +_080EF9B8: .4byte 0x00002B52 + thumb_func_end sub_080EF97C + + thumb_func_start sub_080EF9BC +sub_080EF9BC: @ 0x080EF9BC + push {r4, r5, r6, r7, lr} + movs r2, #0 + ldr r6, _080EF9DC +_080EF9C2: + ldr r0, _080EF9DC + ldr r0, [r0] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r3, _080EF9E0 + adds r0, r0, r3 + ldrb r0, [r0] + adds r5, r2, #1 + cmp r0, #0 + bne _080EFA16 + lsls r0, r5, #0x18 + b _080EFA10 + .align 2, 0 +_080EF9DC: .4byte gUnknown_3005AEC +_080EF9E0: .4byte 0x00002B50 +_080EF9E4: + ldr r3, [r6] + lsls r4, r2, #2 + adds r0, r3, r4 + ldr r7, _080EFA08 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0 + beq _080EFA0C + adds r0, r3, r7 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + adds r0, r2, #0 + bl sub_080EF97C + b _080EFA16 + .align 2, 0 +_080EFA08: .4byte 0x00002B50 +_080EFA0C: + adds r0, r2, #1 + lsls r0, r0, #0x18 +_080EFA10: + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080EF9E4 +_080EFA16: + lsls r0, r5, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xe + bls _080EF9C2 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080EF9BC + + thumb_func_start sub_080EFA24 +sub_080EFA24: @ 0x080EFA24 + push {r4, lr} + movs r2, #0 + ldr r0, _080EFA54 + ldr r3, [r0] +_080EFA2C: + lsls r0, r2, #2 + adds r1, r3, r0 + ldr r4, _080EFA58 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _080EFA5C + adds r4, #1 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + bne _080EFA5C + adds r4, #1 + adds r0, r1, r4 + ldrh r0, [r0] + cmp r0, #2 + bhi _080EFA5C + adds r0, r2, #0 + b _080EFA68 + .align 2, 0 +_080EFA54: .4byte gUnknown_3005AEC +_080EFA58: .4byte 0x00002B50 +_080EFA5C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080EFA2C + movs r0, #0xff +_080EFA68: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EFA24 + + thumb_func_start sub_080EFA70 +sub_080EFA70: @ 0x080EFA70 + push {r4, r5, lr} + bl sub_080EFA24 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _080EFA88 + ldr r1, _080EFA84 + movs r0, #0 + b _080EFB1E + .align 2, 0 +_080EFA84: .4byte gUnknown_2037290 +_080EFA88: + ldr r5, _080EFAB8 + ldr r0, [r5] + lsls r4, r2, #2 + adds r1, r0, r4 + ldr r0, _080EFABC + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0 + bne _080EFAEC + ldr r2, _080EFAC0 + adds r1, r1, r2 + movs r0, #2 + strb r0, [r1] + ldr r0, _080EFAC4 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x13 + bgt _080EFACC + ldr r1, _080EFAC8 + ldr r0, [r5] + adds r0, r0, r4 + subs r2, #1 + b _080EFAD4 + .align 2, 0 +_080EFAB8: .4byte gUnknown_3005AEC +_080EFABC: .4byte 0x00002B52 +_080EFAC0: .4byte 0x00002B51 +_080EFAC4: .4byte gUnknown_3005A50 +_080EFAC8: .4byte gUnknown_8568BC8 +_080EFACC: + ldr r1, _080EFAE4 + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, _080EFAE8 +_080EFAD4: + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + b _080EFB1A + .align 2, 0 +_080EFAE4: .4byte gUnknown_8568BDC +_080EFAE8: .4byte 0x00002B50 +_080EFAEC: + ldrh r1, [r2] + ldr r0, _080EFB28 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _080EFB2C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r1, _080EFB30 + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, _080EFB34 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 +_080EFB1A: + ldr r1, _080EFB38 + movs r0, #1 +_080EFB1E: + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EFB28: .4byte gUnknown_2021C40 +_080EFB2C: .4byte 0x00002B51 +_080EFB30: .4byte gUnknown_8568BB4 +_080EFB34: .4byte 0x00002B50 +_080EFB38: .4byte gUnknown_2037290 + thumb_func_end sub_080EFA70 + + thumb_func_start sub_080EFB3C +sub_080EFB3C: @ 0x080EFB3C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080EFB4C + b _080EFB8E +_080EFB48: + movs r0, #1 + b _080EFB90 +_080EFB4C: + movs r2, #0 + ldr r4, _080EFB78 +_080EFB50: + ldr r1, [r4] + lsls r0, r2, #2 + adds r1, r1, r0 + ldr r5, _080EFB7C + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, r3 + bne _080EFB84 + ldr r2, _080EFB80 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #2 + bne _080EFB8E + adds r0, r3, #0 + bl sub_080EFB98 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080EFB48 + b _080EFB8E + .align 2, 0 +_080EFB78: .4byte gUnknown_3005AEC +_080EFB7C: .4byte 0x00002B50 +_080EFB80: .4byte 0x00002B51 +_080EFB84: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080EFB50 +_080EFB8E: + movs r0, #0 +_080EFB90: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EFB3C + + thumb_func_start sub_080EFB98 +sub_080EFB98: @ 0x080EFB98 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080EFBAA + cmp r0, #3 + beq _080EFBCC +_080EFBA6: + movs r0, #1 + b _080EFBDA +_080EFBAA: + ldr r0, _080EFBC4 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _080EFBD8 + ldr r0, _080EFBC8 + ldrh r0, [r0] + cmp r0, #0x19 + beq _080EFBA6 + b _080EFBD8 + .align 2, 0 +_080EFBC4: .4byte gUnknown_3005AEC +_080EFBC8: .4byte gUnknown_2037292 +_080EFBCC: + ldr r0, _080EFBE0 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _080EFBE4 + cmp r1, r0 + beq _080EFBA6 +_080EFBD8: + movs r0, #0 +_080EFBDA: + pop {r1} + bx r1 + .align 2, 0 +_080EFBE0: .4byte gUnknown_3005AEC +_080EFBE4: .4byte 0x0000150D + thumb_func_end sub_080EFB98 + + thumb_func_start sub_080EFBE8 +sub_080EFBE8: @ 0x080EFBE8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080EFBF6 +_080EFBF2: + movs r0, #1 + b _080EFC16 +_080EFBF6: + movs r1, #0 + ldr r0, _080EFC1C + ldr r3, [r0] + ldr r4, _080EFC20 +_080EFBFE: + lsls r0, r1, #2 + adds r0, r3, r0 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r2 + beq _080EFBF2 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _080EFBFE + movs r0, #0 +_080EFC16: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080EFC1C: .4byte gUnknown_3005AEC +_080EFC20: .4byte 0x00002B50 + thumb_func_end sub_080EFBE8 + + thumb_func_start sub_080EFC24 +sub_080EFC24: @ 0x080EFC24 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r6, #0 + ldr r0, _080EFC5C + mov r8, r0 +_080EFC34: + mov r1, r8 + ldr r0, [r1] + lsls r1, r6, #2 + adds r2, r0, r1 + ldr r3, _080EFC60 + adds r0, r2, r3 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0 + beq _080EFC9A + ldr r1, _080EFC64 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r7 + bhs _080EFC68 + adds r0, r6, #0 + bl sub_080EF97C + b _080EFC9A + .align 2, 0 +_080EFC5C: .4byte gUnknown_3005AEC +_080EFC60: .4byte 0x00002B50 +_080EFC64: .4byte 0x00002B52 +_080EFC68: + ldr r5, _080EFCB4 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080EFC8A + ldr r0, _080EFCB8 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _080EFC8A + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r4 + adds r0, r0, r5 + strb r1, [r0] +_080EFC8A: + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r4 + ldr r0, _080EFCBC + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, r0, r7 + strh r0, [r1] +_080EFC9A: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xf + bls _080EFC34 + bl sub_080EF9BC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080EFCB4: .4byte 0x00002B51 +_080EFCB8: .4byte 0x00000864 +_080EFCBC: .4byte 0x00002B52 + thumb_func_end sub_080EFC24 + + thumb_func_start sub_080EFCC0 +sub_080EFCC0: @ 0x080EFCC0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #1 + beq _080EFD00 + cmp r1, #1 + bgt _080EFCDA + cmp r1, #0 + beq _080EFCE4 + b _080EFD48 +_080EFCDA: + cmp r2, #2 + beq _080EFD1C + cmp r2, #3 + beq _080EFD38 + b _080EFD48 +_080EFCE4: + ldr r1, _080EFCF8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFCFC + ldr r1, [r1, #0x14] + bl sub_080088B8 + b _080EFD48 + .align 2, 0 +_080EFCF8: .4byte gUnknown_8568BF0 +_080EFCFC: .4byte gUnknown_85645A0 +_080EFD00: + ldr r1, _080EFD14 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFD18 + ldr r1, [r1, #0x18] + bl sub_080088B8 + b _080EFD48 + .align 2, 0 +_080EFD14: .4byte gUnknown_8568BF0 +_080EFD18: .4byte gUnknown_85645A0 +_080EFD1C: + ldr r1, _080EFD30 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFD34 + ldr r1, [r1, #0x1c] + bl sub_080088B8 + b _080EFD48 + .align 2, 0 +_080EFD30: .4byte gUnknown_8568BF0 +_080EFD34: .4byte gUnknown_85645A0 +_080EFD38: + ldr r1, _080EFD4C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFD50 + ldr r1, [r1, #0x20] + bl sub_080088B8 +_080EFD48: + pop {r0} + bx r0 + .align 2, 0 +_080EFD4C: .4byte gUnknown_8568BF0 +_080EFD50: .4byte gUnknown_85645A0 + thumb_func_end sub_080EFCC0 + + thumb_func_start sub_080EFD54 +sub_080EFD54: @ 0x080EFD54 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #4 + bhi _080EFE04 + lsls r0, r0, #2 + ldr r1, _080EFD6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080EFD6C: .4byte _080EFD70 +_080EFD70: @ jump table + .4byte _080EFD84 @ case 0 + .4byte _080EFDA0 @ case 1 + .4byte _080EFDBC @ case 2 + .4byte _080EFDD8 @ case 3 + .4byte _080EFDF4 @ case 4 +_080EFD84: + ldr r1, _080EFD98 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFD9C + ldr r1, [r1] + bl sub_080088B8 + b _080EFE04 + .align 2, 0 +_080EFD98: .4byte gUnknown_8568BF0 +_080EFD9C: .4byte gUnknown_85645A0 +_080EFDA0: + ldr r1, _080EFDB4 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFDB8 + ldr r1, [r1, #4] + bl sub_080088B8 + b _080EFE04 + .align 2, 0 +_080EFDB4: .4byte gUnknown_8568BF0 +_080EFDB8: .4byte gUnknown_85645A0 +_080EFDBC: + ldr r1, _080EFDD0 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFDD4 + ldr r1, [r1, #8] + bl sub_080088B8 + b _080EFE04 + .align 2, 0 +_080EFDD0: .4byte gUnknown_8568BF0 +_080EFDD4: .4byte gUnknown_85645A0 +_080EFDD8: + ldr r1, _080EFDEC + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFDF0 + ldr r1, [r1, #0xc] + bl sub_080088B8 + b _080EFE04 + .align 2, 0 +_080EFDEC: .4byte gUnknown_8568BF0 +_080EFDF0: .4byte gUnknown_85645A0 +_080EFDF4: + ldr r1, _080EFE08 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _080EFE0C + ldr r1, [r1, #0x10] + bl sub_080088B8 +_080EFE04: + pop {r0} + bx r0 + .align 2, 0 +_080EFE08: .4byte gUnknown_8568BF0 +_080EFE0C: .4byte gUnknown_85645A0 + thumb_func_end sub_080EFD54 + + thumb_func_start sub_080EFE10 +sub_080EFE10: @ 0x080EFE10 + push {lr} + ldr r2, _080EFE38 + ldr r0, _080EFE3C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080EFE40 + adds r0, r0, r1 + ldr r1, [r2] + adds r1, r1, r0 + ldrb r1, [r1, #0x13] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + movs r0, #1 + bl sub_080EFD54 + pop {r0} + bx r0 + .align 2, 0 +_080EFE38: .4byte gUnknown_3005AEC +_080EFE3C: .4byte gUnknown_2037280 +_080EFE40: .4byte 0x000027CC + thumb_func_end sub_080EFE10 + + thumb_func_start sub_080EFE44 +sub_080EFE44: @ 0x080EFE44 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_080EFE74 + adds r3, r0, #0 + ldr r0, _080EFE70 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r1, r5, #0 + movs r2, #0 + bl sub_080089D8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080EFE70: .4byte gUnknown_8568BF0 + thumb_func_end sub_080EFE44 + + thumb_func_start sub_080EFE74 +sub_080EFE74: @ 0x080EFE74 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa + bl __divsi3 + cmp r0, #0 + beq _080EFF00 + adds r0, r4, #0 + movs r1, #0x64 + bl __divsi3 + cmp r0, #0 + bne _080EFE92 + movs r0, #2 + b _080EFF0A +_080EFE92: + movs r1, #0xfa + lsls r1, r1, #2 + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + bne _080EFEA4 + movs r0, #3 + b _080EFF0A +_080EFEA4: + ldr r1, _080EFEB4 + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + bne _080EFEB8 + movs r0, #4 + b _080EFF0A + .align 2, 0 +_080EFEB4: .4byte 0x00002710 +_080EFEB8: + ldr r1, _080EFEC8 + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + bne _080EFECC + movs r0, #5 + b _080EFF0A + .align 2, 0 +_080EFEC8: .4byte 0x000186A0 +_080EFECC: + ldr r1, _080EFEDC + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + bne _080EFEE0 + movs r0, #6 + b _080EFF0A + .align 2, 0 +_080EFEDC: .4byte 0x000F4240 +_080EFEE0: + ldr r1, _080EFEF0 + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + bne _080EFEF4 + movs r0, #7 + b _080EFF0A + .align 2, 0 +_080EFEF0: .4byte 0x00989680 +_080EFEF4: + ldr r1, _080EFF04 + adds r0, r4, #0 + bl __divsi3 + cmp r0, #0 + beq _080EFF08 +_080EFF00: + movs r0, #1 + b _080EFF0A + .align 2, 0 +_080EFF04: .4byte 0x05F5E100 +_080EFF08: + movs r0, #8 +_080EFF0A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080EFE74 + + thumb_func_start sub_080EFF10 +sub_080EFF10: @ 0x080EFF10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r7, #0 + movs r5, #0 +_080EFF22: + lsls r4, r5, #1 + adds r0, r6, #6 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, #0 + beq _080EFF42 + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r1, #0xc + adds r1, r1, r4 + ldrh r1, [r1] + muls r0, r1, r0 + adds r7, r7, r0 +_080EFF42: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _080EFF22 + ldrb r0, [r6, #2] + cmp r0, #1 + bne _080EFF5C + asrs r1, r7, #1 + mov r0, r8 + bl sub_080EFE44 + b _080EFF64 +_080EFF5C: + mov r0, r8 + adds r1, r7, #0 + bl sub_080EFE44 +_080EFF64: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080EFF10 + + thumb_func_start sub_080EFF70 +sub_080EFF70: @ 0x080EFF70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + ldr r5, _080EFFE0 + ldr r0, [r5] + ldr r4, _080EFFE4 + adds r0, r0, r4 + mov r8, r0 + bl sub_080F0AEC + adds r7, r0, #0 + movs r6, #5 +_080EFF98: + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #2 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, sl + bne _080EFFE8 + movs r3, #0xff + adds r0, r7, #0 + ands r0, r3 + adds r2, r1, #0 + adds r2, #0x22 + ldrb r2, [r2] + cmp r0, r2 + bne _080EFFE8 + lsrs r0, r7, #8 + ands r0, r3 + adds r1, #0x23 + ldrb r1, [r1] + cmp r0, r1 + bne _080EFFE8 + mov r0, sb + cmp r0, #1 + bne _080EFFDC + ldr r0, [r5] + adds r0, r0, r4 + adds r1, r6, #0 + bl sub_080F03FC + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080F0428 +_080EFFDC: + movs r0, #1 + b _080EFFF4 + .align 2, 0 +_080EFFE0: .4byte gUnknown_3005AEC +_080EFFE4: .4byte 0x000027CC +_080EFFE8: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x17 + bls _080EFF98 + movs r0, #0 +_080EFFF4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080EFF70 + + thumb_func_start sub_080F0004 +sub_080F0004: @ 0x080F0004 + push {r4, r5, r6, r7, lr} + movs r2, #0 +_080F0008: + adds r1, r2, #1 + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + adds r7, r1, #0 + cmp r5, #2 + bhi _080F0040 + ldr r6, _080F0050 + lsls r0, r2, #2 + adds r4, r0, r6 +_080F001A: + lsls r0, r5, #2 + adds r3, r0, r6 + ldrh r0, [r4, #2] + ldrh r1, [r3, #2] + cmp r0, r1 + bhs _080F0036 + ldrh r1, [r4] + adds r2, r0, #0 + ldrh r0, [r3] + strh r0, [r4] + ldrh r0, [r3, #2] + strh r0, [r4, #2] + strh r1, [r3] + strh r2, [r3, #2] +_080F0036: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _080F001A +_080F0040: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bls _080F0008 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0050: .4byte gUnknown_2039C20 + thumb_func_end sub_080F0004 + + thumb_func_start sub_080F0054 +sub_080F0054: @ 0x080F0054 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0 + ldr r5, _080F0084 + ldr r4, _080F0088 +_080F0060: + ldr r3, [r5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r3, r0 + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, r6 + bne _080F00A8 + ldr r6, _080F008C + adds r0, r2, r6 + ldrb r2, [r0] + cmp r2, #1 + bne _080F0094 + ldr r0, _080F0090 + strh r2, [r0] + b _080F00B6 + .align 2, 0 +_080F0084: .4byte gUnknown_3005AEC +_080F0088: .4byte 0x000027CC +_080F008C: .4byte 0x000027CD +_080F0090: .4byte gUnknown_2037290 +_080F0094: + adds r0, r3, r4 + bl sub_080F03FC + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080F0428 + bl sub_080F0578 + b _080F00B6 +_080F00A8: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _080F0060 + bl sub_080F0578 +_080F00B6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080F0054 + + thumb_func_start sub_080F00BC +sub_080F00BC: @ 0x080F00BC + push {lr} + ldr r1, _080F00D8 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F00DC + ldrh r0, [r0] + subs r0, #1 + cmp r0, #0xa + bhi _080F014A + lsls r0, r0, #2 + ldr r1, _080F00E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F00D8: .4byte gUnknown_2037290 +_080F00DC: .4byte gUnknown_2037282 +_080F00E0: .4byte _080F00E4 +_080F00E4: @ jump table + .4byte _080F0110 @ case 0 + .4byte _080F0116 @ case 1 + .4byte _080F011C @ case 2 + .4byte _080F0122 @ case 3 + .4byte _080F0128 @ case 4 + .4byte _080F012E @ case 5 + .4byte _080F0134 @ case 6 + .4byte _080F013A @ case 7 + .4byte _080F0140 @ case 8 + .4byte _080F014A @ case 9 + .4byte _080F0146 @ case 10 +_080F0110: + bl sub_080F0150 + b _080F014A +_080F0116: + bl sub_080F01C8 + b _080F014A +_080F011C: + bl sub_080F0208 + b _080F014A +_080F0122: + bl sub_080F02A0 + b _080F014A +_080F0128: + bl sub_080F02AC + b _080F014A +_080F012E: + bl sub_080F02B8 + b _080F014A +_080F0134: + bl sub_080F0310 + b _080F014A +_080F013A: + bl sub_080F02F8 + b _080F014A +_080F0140: + bl sub_080F0304 + b _080F014A +_080F0146: + bl sub_080F0350 +_080F014A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F00BC + + thumb_func_start sub_080F0150 +sub_080F0150: @ 0x080F0150 + push {r4, lr} + movs r0, #1 + bl sub_080F0054 + ldr r0, _080F01AC + ldrh r0, [r0] + cmp r0, #0 + bne _080F01A6 + ldr r4, _080F01B0 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _080F01B4 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _080F01B8 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r2, _080F01BC + ldr r0, _080F01C0 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F01C4 + adds r0, r0, r1 + movs r1, #6 + bl sub_0811FDE0 +_080F01A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F01AC: .4byte gUnknown_2037290 +_080F01B0: .4byte gUnknown_2021C40 +_080F01B4: .4byte gUnknown_2024190 +_080F01B8: .4byte gUnknown_82EA31C +_080F01BC: .4byte gUnknown_3005AEC +_080F01C0: .4byte gUnknown_3005E20 +_080F01C4: .4byte 0x000027D0 + thumb_func_end sub_080F0150 + + thumb_func_start sub_080F01C8 +sub_080F01C8: @ 0x080F01C8 + push {lr} + movs r0, #2 + bl sub_080F0054 + ldr r0, _080F01F8 + ldrh r0, [r0] + cmp r0, #0 + bne _080F01F4 + ldr r2, _080F01FC + ldr r0, _080F0200 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F0204 + adds r0, r0, r1 + movs r1, #6 + bl sub_0811FDE0 +_080F01F4: + pop {r0} + bx r0 + .align 2, 0 +_080F01F8: .4byte gUnknown_2037290 +_080F01FC: .4byte gUnknown_3005AEC +_080F0200: .4byte gUnknown_3005E20 +_080F0204: .4byte 0x000027D0 + thumb_func_end sub_080F01C8 + + thumb_func_start sub_080F0208 +sub_080F0208: @ 0x080F0208 + push {r4, r5, r6, lr} + movs r0, #3 + bl sub_080F0054 + ldr r0, _080F0280 + ldrh r0, [r0] + cmp r0, #0 + bne _080F027A + ldr r6, _080F0284 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080F0288 + adds r0, r0, r4 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _080F028C + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_080088B8 + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r5, r0 + adds r0, r0, r4 + ldr r4, _080F0290 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_0800885C + ldr r2, _080F0294 + ldr r0, _080F0298 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F029C + adds r0, r0, r1 + movs r1, #2 + bl sub_0811FDE0 +_080F027A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F0280: .4byte gUnknown_2037290 +_080F0284: .4byte gUnknown_2021C40 +_080F0288: .4byte gUnknown_2024190 +_080F028C: .4byte gUnknown_82EA31C +_080F0290: .4byte gUnknown_2021C54 +_080F0294: .4byte gUnknown_3005AEC +_080F0298: .4byte gUnknown_3005E20 +_080F029C: .4byte 0x000027E8 + thumb_func_end sub_080F0208 + + thumb_func_start sub_080F02A0 +sub_080F02A0: @ 0x080F02A0 + ldr r1, _080F02A8 + movs r0, #1 + strh r0, [r1] + bx lr + .align 2, 0 +_080F02A8: .4byte gUnknown_2037290 + thumb_func_end sub_080F02A0 + + thumb_func_start sub_080F02AC +sub_080F02AC: @ 0x080F02AC + push {lr} + movs r0, #5 + bl sub_080F0054 + pop {r0} + bx r0 + thumb_func_end sub_080F02AC + + thumb_func_start sub_080F02B8 +sub_080F02B8: @ 0x080F02B8 + push {lr} + movs r0, #6 + bl sub_080F0054 + ldr r0, _080F02E8 + ldrh r0, [r0] + cmp r0, #0 + bne _080F02E4 + ldr r2, _080F02EC + ldr r0, _080F02F0 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F02F4 + adds r0, r0, r1 + movs r1, #2 + bl sub_0811FDE0 +_080F02E4: + pop {r0} + bx r0 + .align 2, 0 +_080F02E8: .4byte gUnknown_2037290 +_080F02EC: .4byte gUnknown_3005AEC +_080F02F0: .4byte gUnknown_3005E20 +_080F02F4: .4byte 0x000027D0 + thumb_func_end sub_080F02B8 + + thumb_func_start sub_080F02F8 +sub_080F02F8: @ 0x080F02F8 + push {lr} + movs r0, #8 + bl sub_080F0054 + pop {r0} + bx r0 + thumb_func_end sub_080F02F8 + + thumb_func_start sub_080F0304 +sub_080F0304: @ 0x080F0304 + push {lr} + movs r0, #9 + bl sub_080F0054 + pop {r0} + bx r0 + thumb_func_end sub_080F0304 + + thumb_func_start sub_080F0310 +sub_080F0310: @ 0x080F0310 + push {lr} + movs r0, #7 + bl sub_080F0054 + ldr r0, _080F0340 + ldrh r0, [r0] + cmp r0, #0 + bne _080F033C + ldr r2, _080F0344 + ldr r0, _080F0348 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F034C + adds r0, r0, r1 + movs r1, #1 + bl sub_0811FDE0 +_080F033C: + pop {r0} + bx r0 + .align 2, 0 +_080F0340: .4byte gUnknown_2037290 +_080F0344: .4byte gUnknown_3005AEC +_080F0348: .4byte gUnknown_3005E20 +_080F034C: .4byte 0x000027E4 + thumb_func_end sub_080F0310 + + thumb_func_start sub_080F0350 +sub_080F0350: @ 0x080F0350 + push {lr} + movs r0, #0xb + bl sub_080F0054 + ldr r0, _080F0380 + ldrh r0, [r0] + cmp r0, #0 + bne _080F037C + ldr r2, _080F0384 + ldr r0, _080F0388 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _080F038C + adds r0, r0, r1 + movs r1, #1 + bl sub_0811FDE0 +_080F037C: + pop {r0} + bx r0 + .align 2, 0 +_080F0380: .4byte gUnknown_2037290 +_080F0384: .4byte gUnknown_3005AEC +_080F0388: .4byte gUnknown_3005E20 +_080F038C: .4byte 0x000027E0 + thumb_func_end sub_080F0350 + + thumb_func_start sub_080F0390 +sub_080F0390: @ 0x080F0390 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _080F03D0 + adds r4, r4, r0 + ldr r5, _080F03D4 + adds r0, r4, #0 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A058 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080F03D8 + adds r0, r0, r1 + adds r1, r5, #0 + bl sub_0800895C + cmp r0, #0 + beq _080F03DC + movs r0, #1 + b _080F03DE + .align 2, 0 +_080F03D0: .4byte gUnknown_2024190 +_080F03D4: .4byte gUnknown_2021C40 +_080F03D8: .4byte gUnknown_82EA31C +_080F03DC: + movs r0, #0 +_080F03DE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080F0390 + + thumb_func_start sub_080F03E4 +sub_080F03E4: @ 0x080F03E4 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080F0390 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F03E4 + + thumb_func_start sub_080F03FC +sub_080F03FC: @ 0x080F03FC + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r1, #3 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r0 + movs r0, #0 + strb r0, [r2] + strb r0, [r2, #1] + movs r1, #0 + adds r2, #2 + movs r3, #0 +_080F0416: + adds r0, r2, r1 + strb r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x21 + bls _080F0416 + pop {r0} + bx r0 + thumb_func_end sub_080F03FC + + thumb_func_start sub_080F0428 +sub_080F0428: @ 0x080F0428 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r5, #0 +_080F042E: + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r1, r0, #2 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _080F0472 + adds r0, r5, #1 + b _080F046A +_080F0440: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r4 + ldrb r0, [r3] + cmp r0, #0 + beq _080F0468 + adds r1, r1, r4 + adds r0, r3, #0 + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080F03FC + b _080F0472 +_080F0468: + adds r0, r2, #1 +_080F046A: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _080F0440 +_080F0472: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080F042E + movs r5, #5 +_080F047E: + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r1, r0, #2 + adds r0, r1, r4 + ldrb r0, [r0] + adds r5, #1 + cmp r0, #0 + bne _080F04C4 + lsls r0, r5, #0x18 + b _080F04BE +_080F0492: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r4 + ldrb r0, [r3] + cmp r0, #0 + beq _080F04BA + adds r1, r1, r4 + adds r0, r3, #0 + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080F03FC + b _080F04C4 +_080F04BA: + adds r0, r2, #1 + lsls r0, r0, #0x18 +_080F04BE: + lsrs r2, r0, #0x18 + cmp r2, #0x17 + bls _080F0492 +_080F04C4: + lsls r0, r5, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x17 + bls _080F047E + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F0428 + + thumb_func_start sub_080F04D4 +sub_080F04D4: @ 0x080F04D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080F0514 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _080F050C + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #1 + ldr r2, _080F0510 + adds r1, r1, r2 + bl sub_080088B8 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080F050C: .4byte gUnknown_8568BF0 +_080F0510: .4byte gUnknown_82EA31C + thumb_func_end sub_080F04D4 + + thumb_func_start sub_080F0514 +sub_080F0514: @ 0x080F0514 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080F0534 + bl __umodsi3 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + b _080F0552 + .align 2, 0 +_080F0534: .4byte 0x0000019B +_080F0538: + cmp r4, #1 + bne _080F0544 + ldr r4, _080F0540 + b _080F054A + .align 2, 0 +_080F0540: .4byte 0x0000019B +_080F0544: + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_080F054A: + cmp r4, r6 + bne _080F0552 + adds r4, r5, #0 + b _080F056E +_080F0552: + adds r0, r4, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _080F0538 + cmp r4, r5 + beq _080F0538 +_080F056E: + adds r0, r4, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F0514 + + thumb_func_start sub_080F0578 +sub_080F0578: @ 0x080F0578 + push {lr} + ldr r0, _080F05A8 + ldr r0, [r0] + ldr r1, _080F05AC + adds r0, r0, r1 + bl sub_080F05CC + ldr r1, _080F05B0 + strb r0, [r1] + ldr r2, _080F05B4 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + strh r1, [r2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080F05BC + ldr r1, _080F05B8 + movs r0, #1 + b _080F05C0 + .align 2, 0 +_080F05A8: .4byte gUnknown_3005AEC +_080F05AC: .4byte 0x000027CC +_080F05B0: .4byte gUnknown_3005E20 +_080F05B4: .4byte gUnknown_2037284 +_080F05B8: .4byte gUnknown_2037290 +_080F05BC: + ldr r1, _080F05C8 + movs r0, #0 +_080F05C0: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080F05C8: .4byte gUnknown_2037290 + thumb_func_end sub_080F0578 + + thumb_func_start sub_080F05CC +sub_080F05CC: @ 0x080F05CC + push {lr} + adds r2, r0, #0 + movs r1, #0 +_080F05D2: + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080F05E6 + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + b _080F05F4 +_080F05E6: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _080F05D2 + movs r0, #1 + rsbs r0, r0, #0 +_080F05F4: + pop {r1} + bx r1 + thumb_func_end sub_080F05CC + + thumb_func_start sub_080F05F8 +sub_080F05F8: @ 0x080F05F8 + push {lr} + adds r2, r0, #0 + movs r1, #5 +_080F05FE: + lsls r0, r1, #0x18 + asrs r1, r0, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080F0614 + adds r0, r1, #0 + b _080F0624 +_080F0614: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x17 + ble _080F05FE + movs r0, #1 + rsbs r0, r0, #0 +_080F0624: + pop {r1} + bx r1 + thumb_func_end sub_080F05F8 + + thumb_func_start sub_080F0628 +sub_080F0628: @ 0x080F0628 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + bls _080F0640 + movs r0, #1 + b _080F0642 +_080F0640: + movs r0, #0 +_080F0642: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080F0628 + + thumb_func_start sub_080F0648 +sub_080F0648: @ 0x080F0648 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r4, #4 + ldr r6, _080F0664 + b _080F066E + .align 2, 0 +_080F0664: .4byte 0x0000FFFF +_080F0668: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080F066E: + cmp r2, #6 + bne _080F0674 + movs r2, #0 +_080F0674: + lsls r1, r2, #1 + adds r0, r5, r1 + ldrh r0, [r0] + adds r3, r4, #4 + cmp r0, r6 + beq _080F0668 + ldr r0, _080F0690 + adds r1, r3, r1 + ldrh r1, [r1] + bl sub_0811F180 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F0690: .4byte gUnknown_2021C68 + thumb_func_end sub_080F0648 + + thumb_func_start sub_080F0694 +sub_080F0694: @ 0x080F0694 + push {lr} + adds r2, r0, #0 + movs r3, #0 + movs r1, #0 + ldrb r0, [r2, #4] + cmp r0, #0xff + beq _080F06C0 + adds r2, #4 +_080F06A4: + adds r0, r2, r1 + ldrb r0, [r0] + adds r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xa + bhi _080F06C0 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _080F06A4 +_080F06C0: + movs r0, #7 + ands r3, r0 + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F0694 + + thumb_func_start sub_080F06CC +sub_080F06CC: @ 0x080F06CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + ldr r4, [sp, #0x1c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r2, #0 + movs r7, #0xff +_080F06F0: + mov r1, sp + adds r0, r1, r2 + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _080F06F0 + cmp r3, #0 + bne _080F0752 + ldr r4, [sp, #0x20] + adds r4, #0xf + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r6, #0 + bne _080F0720 + mov r0, sp + adds r1, r4, r5 + b _080F07CC +_080F0720: + cmp r6, #1 + bne _080F072C + mov r0, sp + subs r1, r2, r5 + adds r1, r4, r1 + b _080F07CC +_080F072C: + cmp r6, #2 + bne _080F073E + mov r1, sp + adds r0, r4, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + adds r0, r4, r0 + b _080F07FC +_080F073E: + mov r1, sp + subs r0, r2, #2 + subs r0, r0, r5 + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r1] + subs r0, r2, #1 + subs r0, r0, r5 + adds r0, r4, r0 + b _080F07FC +_080F0752: + cmp r3, #1 + bne _080F07A0 + ldr r4, [sp, #0x20] + adds r4, #4 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r6, #0 + bne _080F076E + mov r0, sp + adds r1, r4, r5 + b _080F07CC +_080F076E: + cmp r6, #1 + bne _080F077A + mov r0, sp + subs r1, r2, r5 + adds r1, r4, r1 + b _080F07CC +_080F077A: + cmp r6, #2 + bne _080F078C + mov r1, sp + adds r0, r4, r5 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + adds r0, r4, r0 + b _080F07FC +_080F078C: + mov r1, sp + subs r0, r2, #2 + subs r0, r0, r5 + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r1] + subs r0, r2, #1 + subs r0, r0, r5 + adds r0, r4, r0 + b _080F07FC +_080F07A0: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r4, r0, #1 + ldr r7, _080F07BC + adds r0, r4, r7 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r6, #0 + bne _080F07C0 + mov r0, sp + adds r1, r5, r4 + b _080F07CA + .align 2, 0 +_080F07BC: .4byte gUnknown_82EA31C +_080F07C0: + cmp r6, #1 + bne _080F07D2 + mov r0, sp + subs r1, r2, r5 + adds r1, r1, r4 +_080F07CA: + adds r1, r1, r7 +_080F07CC: + ldrb r1, [r1] + strb r1, [r0] + b _080F0800 +_080F07D2: + cmp r6, #2 + bne _080F07E6 + mov r1, sp + adds r0, r5, r4 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + adds r0, r5, r0 + b _080F07FA +_080F07E6: + mov r1, sp + subs r0, r2, #2 + subs r0, r0, r5 + adds r0, r0, r4 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r1] + subs r0, r2, #1 + subs r0, r0, r5 + adds r0, r0, r4 +_080F07FA: + adds r0, r0, r7 +_080F07FC: + ldrb r0, [r0] + strb r0, [r1, #1] +_080F0800: + ldr r0, _080F081C + mov r2, r8 + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] + mov r1, sp + bl sub_080088B8 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F081C: .4byte gUnknown_8568BF0 + thumb_func_end sub_080F06CC + + thumb_func_start sub_080F0820 +sub_080F0820: @ 0x080F0820 + push {r4, lr} + movs r1, #0 + ldr r0, _080F0844 + ldr r3, [r0] + ldr r0, _080F0848 + ldrh r2, [r0] + ldr r4, _080F084C +_080F082E: + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r2 + bne _080F0850 + movs r0, #1 + b _080F085C + .align 2, 0 +_080F0844: .4byte gUnknown_3005AEC +_080F0848: .4byte gUnknown_2037280 +_080F084C: .4byte 0x000027CC +_080F0850: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _080F082E + movs r0, #0 +_080F085C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F0820 + + thumb_func_start sub_080F0864 +sub_080F0864: @ 0x080F0864 + push {r4, lr} + ldr r0, _080F0890 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080F0894 + adds r0, r0, r1 + ldr r4, _080F0898 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + ldr r0, _080F089C + adds r1, r4, #0 + bl sub_0800895C + cmp r0, #0 + beq _080F08A0 + bl sub_080EDE68 + movs r0, #1 + b _080F08A2 + .align 2, 0 +_080F0890: .4byte gUnknown_2037280 +_080F0894: .4byte gUnknown_2024190 +_080F0898: .4byte gUnknown_2021C40 +_080F089C: .4byte gUnknown_2021C68 +_080F08A0: + movs r0, #0 +_080F08A2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080F0864 + + thumb_func_start sub_080F08A8 +sub_080F08A8: @ 0x080F08A8 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #8 + ldr r0, _080F0950 + mov sb, r0 + ldrh r0, [r0] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r6, _080F0954 + adds r0, r0, r6 + ldr r2, _080F0958 + movs r1, #2 + bl sub_0806A058 + mov r1, sb + ldrh r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + ldr r1, _080F095C + mov sl, r1 + movs r1, #2 + mov r2, sl + bl sub_0806A058 + mov r1, sb + ldrh r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r1, sb + ldrh r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + bl sub_08069AF4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sb + ldrh r0, [r1] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + str r0, [sp] + ldr r0, _080F0960 + str r0, [sp, #4] + movs r0, #3 + mov r1, sl + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080E2244 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F0950: .4byte gUnknown_2037280 +_080F0954: .4byte gUnknown_2024190 +_080F0958: .4byte gUnknown_2021C68 +_080F095C: .4byte gUnknown_2021C54 +_080F0960: .4byte sub_080F0964 + thumb_func_end sub_080F08A8 + + thumb_func_start sub_080F0964 +sub_080F0964: @ 0x080F0964 + push {lr} + ldr r0, _080F0984 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080F0988 + adds r0, r0, r1 + ldr r2, _080F098C + movs r1, #2 + bl sub_0806A774 + bl sub_08085B34 + pop {r0} + bx r0 + .align 2, 0 +_080F0984: .4byte gUnknown_2037280 +_080F0988: .4byte gUnknown_2024190 +_080F098C: .4byte gUnknown_2021C54 + thumb_func_end sub_080F0964 + + thumb_func_start sub_080F0990 +sub_080F0990: @ 0x080F0990 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #8 + ldr r0, _080F0A00 + ldrb r0, [r0] + ldr r1, _080F0A04 + ldrb r1, [r1] + bl sub_080D1934 + adds r6, r0, #0 + ldr r2, _080F0A08 + movs r1, #2 + bl sub_0806A1B4 + ldr r0, _080F0A0C + mov r8, r0 + adds r0, r6, #0 + movs r1, #2 + mov r2, r8 + bl sub_0806A1B4 + adds r0, r6, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + bl sub_08069B04 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A1B4 + str r0, [sp] + ldr r0, _080F0A10 + str r0, [sp, #4] + movs r0, #3 + mov r1, r8 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080E2244 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F0A00: .4byte gUnknown_2037296 +_080F0A04: .4byte gUnknown_2037298 +_080F0A08: .4byte gUnknown_2021C68 +_080F0A0C: .4byte gUnknown_2021C54 +_080F0A10: .4byte sub_080F0A14 + thumb_func_end sub_080F0990 + + thumb_func_start sub_080F0A14 +sub_080F0A14: @ 0x080F0A14 + push {lr} + ldr r0, _080F0A2C + ldrb r0, [r0] + ldr r1, _080F0A30 + ldrb r1, [r1] + ldr r2, _080F0A34 + bl sub_080D1730 + bl sub_08085B34 + pop {r0} + bx r0 + .align 2, 0 +_080F0A2C: .4byte gUnknown_2037296 +_080F0A30: .4byte gUnknown_2037298 +_080F0A34: .4byte gUnknown_2021C54 + thumb_func_end sub_080F0A14 + + thumb_func_start sub_080F0A38 +sub_080F0A38: @ 0x080F0A38 + push {r4, lr} + ldr r0, _080F0A5C + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080F0A60 + adds r0, r0, r1 + ldr r4, _080F0A64 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_0800885C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F0A5C: .4byte gUnknown_2037280 +_080F0A60: .4byte gUnknown_2024190 +_080F0A64: .4byte gUnknown_2021C40 + thumb_func_end sub_080F0A38 + + thumb_func_start sub_080F0A68 +sub_080F0A68: @ 0x080F0A68 + push {r4, lr} + bl sub_080F0AEC + adds r4, r0, #0 + ldr r0, _080F0A90 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080F0A94 + adds r0, r0, r1 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bne _080F0A9C + ldr r1, _080F0A98 + movs r0, #0 + b _080F0AA0 + .align 2, 0 +_080F0A90: .4byte gUnknown_2037280 +_080F0A94: .4byte gUnknown_2024190 +_080F0A98: .4byte gUnknown_2037290 +_080F0A9C: + ldr r1, _080F0AA8 + movs r0, #1 +_080F0AA0: + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F0AA8: .4byte gUnknown_2037290 + thumb_func_end sub_080F0A68 + + thumb_func_start sub_080F0AAC +sub_080F0AAC: @ 0x080F0AAC + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r1, #0 + cmp r1, #0 + beq _080F0AE2 + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080F0AC6 + movs r0, #2 + b _080F0AE8 +_080F0AC6: + adds r0, r1, #0 + subs r0, #0x15 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _080F0AD6 + movs r0, #3 + b _080F0AE8 +_080F0AD6: + adds r0, r2, #0 + subs r0, #0x29 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bls _080F0AE6 +_080F0AE2: + movs r0, #0 + b _080F0AE8 +_080F0AE6: + movs r0, #4 +_080F0AE8: + pop {r1} + bx r1 + thumb_func_end sub_080F0AAC + + thumb_func_start sub_080F0AEC +sub_080F0AEC: @ 0x080F0AEC + ldr r0, _080F0B08 + ldr r2, [r0] + ldrb r0, [r2, #0xd] + lsls r0, r0, #0x18 + ldrb r1, [r2, #0xc] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #0xb] + lsls r1, r1, #8 + orrs r0, r1 + ldrb r1, [r2, #0xa] + orrs r0, r1 + bx lr + .align 2, 0 +_080F0B08: .4byte gUnknown_3005AF0 + thumb_func_end sub_080F0AEC + + thumb_func_start sub_080F0B0C +sub_080F0B0C: @ 0x080F0B0C + push {lr} + ldr r0, _080F0B30 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _080F0B2C + ldr r0, _080F0B34 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _080F0B38 + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _080F0B40 +_080F0B2C: + movs r0, #0 + b _080F0B6A + .align 2, 0 +_080F0B30: .4byte gUnknown_3005AEC +_080F0B34: .4byte gUnknown_3005AF0 +_080F0B38: + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #2 + bne _080F0B2C +_080F0B40: + ldr r0, _080F0B64 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080F0B5E + movs r0, #0x89 + lsls r0, r0, #4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080F0B68 +_080F0B5E: + movs r0, #1 + b _080F0B6A + .align 2, 0 +_080F0B64: .4byte 0x000008BD +_080F0B68: + movs r0, #2 +_080F0B6A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F0B0C + + thumb_func_start sub_080F0B70 +sub_080F0B70: @ 0x080F0B70 + push {r4, lr} + ldr r0, _080F0BA4 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _080F0BD0 + ldr r0, _080F0BA8 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _080F0BB8 + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _080F0BD0 + ldr r0, _080F0BAC + ldr r1, _080F0BB0 + bl sub_080088B8 + ldr r0, _080F0BB4 + movs r1, #1 + bl sub_0809CF88 + b _080F0BD0 + .align 2, 0 +_080F0BA4: .4byte gUnknown_3005AEC +_080F0BA8: .4byte gUnknown_3005AF0 +_080F0BAC: .4byte gUnknown_2021C40 +_080F0BB0: .4byte gUnknown_85CA9E1 +_080F0BB4: .4byte 0x00004003 +_080F0BB8: + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #2 + bne _080F0BD0 + ldr r0, _080F0C18 + ldr r1, _080F0C1C + bl sub_080088B8 + ldr r0, _080F0C20 + movs r1, #1 + bl sub_0809CF88 +_080F0BD0: + ldr r4, _080F0C20 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _080F0C0E + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + beq _080F0C24 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bls _080F0C38 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080F0C24 +_080F0C0E: + ldr r0, _080F0C18 + ldr r1, _080F0C1C + bl sub_080088B8 + b _080F0C74 + .align 2, 0 +_080F0C18: .4byte gUnknown_2021C40 +_080F0C1C: .4byte gUnknown_85CA9E1 +_080F0C20: .4byte 0x00004003 +_080F0C24: + ldr r0, _080F0C30 + ldr r1, _080F0C34 + bl sub_080088B8 + b _080F0C74 + .align 2, 0 +_080F0C30: .4byte gUnknown_2021C40 +_080F0C34: .4byte gUnknown_85CA9DE +_080F0C38: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080F0C64 + ldr r0, _080F0C5C + ldr r1, _080F0C60 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #1 + bl sub_0809CF88 + b _080F0C74 + .align 2, 0 +_080F0C5C: .4byte gUnknown_2021C40 +_080F0C60: .4byte gUnknown_85CA9E1 +_080F0C64: + ldr r0, _080F0C7C + ldr r1, _080F0C80 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #2 + bl sub_0809CF88 +_080F0C74: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F0C7C: .4byte gUnknown_2021C40 +_080F0C80: .4byte gUnknown_85CA9DE + thumb_func_end sub_080F0B70 + + thumb_func_start sub_080F0C84 +sub_080F0C84: @ 0x080F0C84 + push {lr} + ldr r0, _080F0CA8 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _080F0CAC + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #5 + bl sub_0808D234 + ldr r0, _080F0CB0 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_080F0CA8: .4byte 0x000040BC +_080F0CAC: .4byte gUnknown_3005AEC +_080F0CB0: .4byte 0x00000396 + thumb_func_end sub_080F0C84 + + thumb_func_start sub_080F0CB4 +sub_080F0CB4: @ 0x080F0CB4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + movs r0, #0xe1 + lsls r0, r0, #4 + bl sub_08000BC8 + mov sb, r0 + cmp r0, #0 + bne _080F0CD8 + b _080F0E1C +_080F0CD8: + movs r4, #0 +_080F0CDA: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #5 + adds r0, r0, r4 + lsls r0, r0, #2 + add r0, sb + adds r1, r4, #0 + muls r1, r6, r1 + adds r1, r7, r1 + movs r2, #0xe1 + lsls r2, r2, #2 + bl memcpy + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080F0CDA + mov r5, sb + movs r4, #0 + ldr r0, _080F0D08 + mov sl, r0 + b _080F0D48 + .align 2, 0 +_080F0D08: .4byte gUnknown_20226A0 +_080F0D0C: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + mov r2, sl + adds r1, r0, r2 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _080F0D42 + ldrh r0, [r1, #0x1a] + cmp r0, #1 + bne _080F0D36 + adds r0, r4, #0 + muls r0, r6, r0 + adds r0, r7, r0 + movs r1, #2 + bl sub_080F1A40 + b _080F0D42 +_080F0D36: + adds r0, r4, #0 + muls r0, r6, r0 + adds r0, r7, r0 + ldrh r1, [r1, #0x1a] + bl sub_080F1A40 +_080F0D42: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080F0D48: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _080F0D0C + mov r3, r8 + cmp r3, #1 + beq _080F0D9C + cmp r3, #1 + bgt _080F0D64 + cmp r3, #0 + beq _080F0D70 + b _080F0DF6 +_080F0D64: + mov r4, r8 + cmp r4, #2 + beq _080F0DB4 + cmp r4, #3 + beq _080F0DDC + b _080F0DF6 +_080F0D70: + ldr r0, _080F0D90 + ldr r0, [r0] + ldr r1, _080F0D94 + adds r0, r0, r1 + movs r2, #0xe1 + lsls r2, r2, #2 + adds r1, r5, r2 + movs r3, #0xe1 + lsls r3, r3, #3 + adds r2, r5, r3 + ldr r4, _080F0D98 + adds r3, r5, r4 + bl sub_080F0E34 + b _080F0DF6 + .align 2, 0 +_080F0D90: .4byte gUnknown_3005AEC +_080F0D94: .4byte 0x000027CC +_080F0D98: .4byte 0x00000A8C +_080F0D9C: + ldr r0, _080F0DAC + ldr r1, [r0] + ldr r0, _080F0DB0 + adds r1, r1, r0 + movs r3, #0xe1 + lsls r3, r3, #3 + adds r2, r5, r3 + b _080F0DC2 + .align 2, 0 +_080F0DAC: .4byte gUnknown_3005AEC +_080F0DB0: .4byte 0x000027CC +_080F0DB4: + movs r0, #0xe1 + lsls r0, r0, #2 + adds r1, r5, r0 + ldr r0, _080F0DD0 + ldr r2, [r0] + ldr r3, _080F0DD4 + adds r2, r2, r3 +_080F0DC2: + ldr r4, _080F0DD8 + adds r3, r5, r4 + adds r0, r5, #0 + bl sub_080F0E34 + b _080F0DF6 + .align 2, 0 +_080F0DD0: .4byte gUnknown_3005AEC +_080F0DD4: .4byte 0x000027CC +_080F0DD8: .4byte 0x00000A8C +_080F0DDC: + movs r0, #0xe1 + lsls r0, r0, #2 + adds r1, r5, r0 + movs r3, #0xe1 + lsls r3, r3, #3 + adds r2, r5, r3 + ldr r0, _080F0E2C + ldr r3, [r0] + ldr r4, _080F0E30 + adds r3, r3, r4 + adds r0, r5, #0 + bl sub_080F0E34 +_080F0DF6: + ldr r5, _080F0E2C + ldr r0, [r5] + ldr r4, _080F0E30 + adds r0, r0, r4 + bl sub_080F0428 + bl sub_080F16E0 + ldr r0, [r5] + adds r0, r0, r4 + bl sub_080F0428 + bl sub_080F11E4 + bl sub_080F1640 + mov r0, sb + bl sub_08000BF0 +_080F0E1C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F0E2C: .4byte gUnknown_3005AEC +_080F0E30: .4byte 0x000027CC + thumb_func_end sub_080F0CB4 + + thumb_func_start sub_080F0E34 +sub_080F0E34: @ 0x080F0E34 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + add r0, sp, #0x10 + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, sp, #0x18 + str r0, [sp, #8] + add r0, sp, #0x1c + str r0, [sp, #0xc] + bl sub_08009B64 + ldr r1, _080F0EB0 + strb r0, [r1] +_080F0E60: + movs r6, #0 + ldr r0, _080F0EB0 + ldrb r1, [r0] + cmp r6, r1 + bhs _080F0E60 + mov sl, r0 +_080F0E6C: + cmp r6, #0 + bne _080F0E74 + ldr r2, _080F0EB4 + strb r6, [r2] +_080F0E74: + lsls r4, r6, #2 + mov r3, sp + adds r0, r3, r4 + ldr r0, [r0] + ldr r0, [r0] + bl sub_080F11AC + ldr r1, _080F0EB8 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + adds r7, r4, #0 + cmp r0, r1 + bne _080F0EBC + ldr r1, _080F0EB4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, sl + ldrb r2, [r2] + cmp r0, r2 + beq _080F0F68 + adds r6, #1 + mov sb, r6 + b _080F0F4C + .align 2, 0 +_080F0EB0: .4byte gUnknown_3001174 +_080F0EB4: .4byte gUnknown_2039CF8 +_080F0EB8: .4byte gUnknown_3001176 +_080F0EBC: + movs r5, #0 + mov r3, sl + ldrb r0, [r3] + subs r0, #1 + adds r2, r6, #1 + mov sb, r2 + cmp r5, r0 + bge _080F0F32 + ldr r3, _080F0F5C + mov r8, r3 +_080F0ED0: + adds r0, r6, r5 + adds r4, r0, #1 + mov r0, r8 + ldrb r1, [r0] + adds r0, r4, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + ldr r0, [r0] + bl sub_080F05F8 + ldr r1, _080F0F60 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080F0F22 + mov r2, r8 + ldrb r1, [r2] + adds r0, r4, #0 + bl __modsi3 + adds r2, r0, #0 + lsls r0, r2, #2 + add r0, sp + ldr r0, [r0] + mov r3, sp + adds r1, r3, r7 + ldr r1, [r1] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080F0F78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080F0F32 +_080F0F22: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, r8 + ldrb r0, [r1] + subs r0, #1 + cmp r5, r0 + blt _080F0ED0 +_080F0F32: + mov r2, sl + ldrb r0, [r2] + subs r0, #1 + cmp r5, r0 + bne _080F0F4C + mov r3, sp + adds r0, r3, r7 + ldr r0, [r0] + ldr r0, [r0] + ldr r1, _080F0F64 + ldrb r1, [r1] + bl sub_080F03FC +_080F0F4C: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + mov r2, sl + ldrb r2, [r2] + cmp r6, r2 + blo _080F0E6C + b _080F0E60 + .align 2, 0 +_080F0F5C: .4byte gUnknown_3001174 +_080F0F60: .4byte gUnknown_3005E20 +_080F0F64: .4byte gUnknown_3001176 +_080F0F68: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080F0E34 + + thumb_func_start sub_080F0F78 +sub_080F0F78: @ 0x080F0F78 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r4, [r0] + ldr r6, [r1] + movs r5, #0 + ldr r2, _080F0FB4 + movs r1, #0 + ldrsb r1, [r2, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0] + str r2, [sp] + bl sub_080F0AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + ldr r2, [sp] + cmp r0, #3 + beq _080F0FE8 + cmp r0, #3 + bgt _080F0FB8 + cmp r0, #2 + beq _080F0FBE + b _080F1036 + .align 2, 0 +_080F0FB4: .4byte gUnknown_3001176 +_080F0FB8: + cmp r1, #4 + beq _080F1010 + b _080F1036 +_080F0FBE: + ldr r0, _080F0FE4 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r6, r1 + adds r2, r7, #0 + bl sub_080F105C + b _080F1032 + .align 2, 0 +_080F0FE4: .4byte gUnknown_3005E20 +_080F0FE8: + ldr r0, _080F100C + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r6, r1 + adds r2, r7, #0 + bl sub_080F10C4 + b _080F1032 + .align 2, 0 +_080F100C: .4byte gUnknown_3005E20 +_080F1010: + ldr r0, _080F1040 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r6, r1 + adds r2, r7, #0 + bl sub_080F1144 +_080F1032: + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_080F1036: + cmp r5, #1 + beq _080F1044 + movs r0, #0 + b _080F1050 + .align 2, 0 +_080F1040: .4byte gUnknown_3005E20 +_080F1044: + ldr r0, _080F1058 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_080F03FC + movs r0, #1 +_080F1050: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080F1058: .4byte gUnknown_3001176 + thumb_func_end sub_080F0F78 + + thumb_func_start sub_080F105C +sub_080F105C: @ 0x080F105C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + bl sub_08009E68 + adds r5, r0, #0 + movs r2, #0xff + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x22 + ldrb r1, [r1] + cmp r0, r1 + bne _080F108C + lsrs r0, r5, #8 + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x23 + ldrb r1, [r1] + cmp r0, r1 + bne _080F108C + movs r0, #0 + b _080F10BC +_080F108C: + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r1] + adds r2, r4, #0 + adds r2, #0x22 + strb r0, [r2] + adds r3, r4, #0 + adds r3, #0x21 + ldrb r0, [r3] + adds r2, #1 + strb r0, [r2] + strb r5, [r1] + lsrs r0, r5, #8 + strb r0, [r3] + adds r1, r6, #0 + adds r0, r4, #0 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + movs r0, #1 + strb r0, [r6, #1] +_080F10BC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F105C + + thumb_func_start sub_080F10C4 +sub_080F10C4: @ 0x080F10C4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + bl sub_08009E68 + adds r2, r0, #0 + movs r3, #0xff + ands r0, r3 + adds r1, r4, #0 + adds r1, #0x20 + ldrb r1, [r1] + cmp r0, r1 + bne _080F10F0 + lsrs r0, r2, #8 + ands r0, r3 + adds r1, r4, #0 + adds r1, #0x21 + ldrb r1, [r1] + cmp r0, r1 + beq _080F1110 +_080F10F0: + movs r3, #0xff + adds r0, r2, #0 + ands r0, r3 + adds r1, r4, #0 + adds r1, #0x22 + lsrs r5, r2, #8 + ldrb r1, [r1] + cmp r0, r1 + bne _080F1114 + adds r0, r5, #0 + ands r0, r3 + adds r1, r4, #0 + adds r1, #0x23 + ldrb r1, [r1] + cmp r0, r1 + bne _080F1114 +_080F1110: + movs r0, #0 + b _080F113C +_080F1114: + ldrb r1, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x20 + strb r1, [r0] + ldrb r0, [r4, #0x1f] + adds r1, r4, #0 + adds r1, #0x21 + strb r0, [r1] + strb r2, [r4, #0x1e] + strb r5, [r4, #0x1f] + adds r1, r6, #0 + adds r0, r4, #0 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + movs r0, #1 + strb r0, [r6, #1] +_080F113C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F10C4 + + thumb_func_start sub_080F1144 +sub_080F1144: @ 0x080F1144 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + bl sub_08009E68 + adds r5, r0, #0 + movs r2, #0xff + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x22 + ldrb r1, [r1] + cmp r0, r1 + bne _080F1174 + lsrs r0, r5, #8 + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x23 + ldrb r1, [r1] + cmp r0, r1 + bne _080F1174 + movs r0, #0 + b _080F11A6 +_080F1174: + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r1] + adds r2, r4, #0 + adds r2, #0x22 + strb r0, [r2] + adds r3, r4, #0 + adds r3, #0x21 + ldrb r0, [r3] + adds r2, #1 + strb r0, [r2] + strb r5, [r1] + lsrs r0, r5, #8 + strb r0, [r3] + adds r1, r6, #0 + adds r0, r4, #0 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + movs r0, #1 + strb r0, [r6, #1] + strh r0, [r6, #0x16] +_080F11A6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080F1144 + + thumb_func_start sub_080F11AC +sub_080F11AC: @ 0x080F11AC + push {lr} + adds r3, r0, #0 + movs r2, #0 +_080F11B2: + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r3 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _080F11D2 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bhi _080F11D2 + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + b _080F11E0 +_080F11D2: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x17 + bls _080F11B2 + movs r0, #1 + rsbs r0, r0, #0 +_080F11E0: + pop {r1} + bx r1 + thumb_func_end sub_080F11AC + + thumb_func_start sub_080F11E4 +sub_080F11E4: @ 0x080F11E4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + movs r0, #0 + mov sb, r0 +_080F11F2: + ldr r3, _080F1218 + ldr r1, [r3] + mov r4, sb + lsls r2, r4, #3 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080F121C + adds r1, r1, r0 + ldrb r0, [r1] + adds r7, r2, #0 + cmp r0, #0x29 + bls _080F120E + b _080F15B4 +_080F120E: + lsls r0, r0, #2 + ldr r1, _080F1220 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F1218: .4byte gUnknown_3005AEC +_080F121C: .4byte 0x000027CC +_080F1220: .4byte _080F1224 +_080F1224: @ jump table + .4byte _080F15BE @ case 0 + .4byte _080F1324 @ case 1 + .4byte _080F15BE @ case 2 + .4byte _080F133C @ case 3 + .4byte _080F1354 @ case 4 + .4byte _080F136C @ case 5 + .4byte _080F1398 @ case 6 + .4byte _080F13B0 @ case 7 + .4byte _080F12CC @ case 8 + .4byte _080F15BE @ case 9 + .4byte _080F12F8 @ case 10 + .4byte _080F15BE @ case 11 + .4byte _080F15BE @ case 12 + .4byte _080F15B4 @ case 13 + .4byte _080F15B4 @ case 14 + .4byte _080F15B4 @ case 15 + .4byte _080F15B4 @ case 16 + .4byte _080F15B4 @ case 17 + .4byte _080F15B4 @ case 18 + .4byte _080F15B4 @ case 19 + .4byte _080F15B4 @ case 20 + .4byte _080F13DC @ case 21 + .4byte _080F15BE @ case 22 + .4byte _080F13F4 @ case 23 + .4byte _080F1420 @ case 24 + .4byte _080F1438 @ case 25 + .4byte _080F15BE @ case 26 + .4byte _080F15BE @ case 27 + .4byte _080F15BE @ case 28 + .4byte _080F15BE @ case 29 + .4byte _080F1450 @ case 30 + .4byte _080F147C @ case 31 + .4byte _080F15BE @ case 32 + .4byte _080F149C @ case 33 + .4byte _080F15BE @ case 34 + .4byte _080F15BE @ case 35 + .4byte _080F14D0 @ case 36 + .4byte _080F15BE @ case 37 + .4byte _080F15BE @ case 38 + .4byte _080F15BE @ case 39 + .4byte _080F15B4 @ case 40 + .4byte _080F15BE @ case 41 +_080F12CC: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F12F4 + adds r0, r0, r6 + ldrh r0, [r0, #0x12] + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #2] + b _080F14C2 + .align 2, 0 +_080F12F4: .4byte 0x000027CC +_080F12F8: + ldr r0, [r3] + mov r2, sb + adds r4, r7, r2 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F1320 + adds r0, r0, r6 + ldrh r0, [r0, #0x16] + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #2] + b _080F14C2 + .align 2, 0 +_080F1320: .4byte 0x000027CC +_080F1324: + ldr r0, [r3] + mov r4, sb + adds r1, r7, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _080F1338 + adds r1, r1, r0 + ldrh r0, [r1, #2] + b _080F148C + .align 2, 0 +_080F1338: .4byte 0x000027CC +_080F133C: + ldr r0, [r3] + mov r2, sb + adds r1, r7, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r4, _080F1350 + adds r1, r1, r4 + ldrh r0, [r1, #2] + lsls r1, r2, #0x18 + b _080F148E + .align 2, 0 +_080F1350: .4byte 0x000027CC +_080F1354: + ldr r0, [r3] + mov r2, sb + adds r1, r7, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r4, _080F1368 + adds r1, r1, r4 + ldrh r0, [r1, #6] + lsls r1, r2, #0x18 + b _080F148E + .align 2, 0 +_080F1368: .4byte 0x000027CC +_080F136C: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F1394 + adds r0, r0, r6 + ldrh r0, [r0, #2] + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #0x1c] + b _080F14C2 + .align 2, 0 +_080F1394: .4byte 0x000027CC +_080F1398: + ldr r0, [r3] + mov r2, sb + adds r1, r7, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r4, _080F13AC + adds r1, r1, r4 + ldrh r0, [r1, #2] + lsls r1, r2, #0x18 + b _080F148E + .align 2, 0 +_080F13AC: .4byte 0x000027CC +_080F13B0: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F13D8 + adds r0, r0, r6 + ldrh r0, [r0, #0xa] + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #0x14] + b _080F14C2 + .align 2, 0 +_080F13D8: .4byte 0x000027CC +_080F13DC: + ldr r0, [r3] + mov r2, sb + adds r1, r7, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r4, _080F13F0 + adds r1, r1, r4 + ldrh r0, [r1, #0x10] + lsls r1, r2, #0x18 + b _080F148E + .align 2, 0 +_080F13F0: .4byte 0x000027CC +_080F13F4: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F141C + adds r0, r0, r6 + ldrh r0, [r0, #0xc] + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #0xe] + b _080F14C2 + .align 2, 0 +_080F141C: .4byte 0x000027CC +_080F1420: + ldr r0, [r3] + mov r2, sb + adds r1, r7, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r4, _080F1434 + adds r1, r1, r4 + ldrh r0, [r1, #4] + lsls r1, r2, #0x18 + b _080F148E + .align 2, 0 +_080F1434: .4byte 0x000027CC +_080F1438: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F144C + adds r0, r0, r6 + ldrh r0, [r0, #8] + b _080F14AC + .align 2, 0 +_080F144C: .4byte 0x000027CC +_080F1450: + ldr r0, [r3] + mov r2, sb + adds r4, r7, r2 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F1478 + adds r0, r0, r6 + ldrh r0, [r0, #2] + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #0xa] + b _080F14C2 + .align 2, 0 +_080F1478: .4byte 0x000027CC +_080F147C: + ldr r0, [r3] + mov r4, sb + adds r1, r7, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _080F1498 + adds r1, r1, r0 + ldrh r0, [r1, #8] +_080F148C: + lsls r1, r4, #0x18 +_080F148E: + lsrs r1, r1, #0x18 + bl sub_080F1600 + b _080F15BE + .align 2, 0 +_080F1498: .4byte 0x000027CC +_080F149C: + ldr r0, [r3] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r6, _080F14CC + adds r0, r0, r6 + ldrh r0, [r0, #6] +_080F14AC: + lsls r5, r1, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r6 + ldrh r0, [r4, #4] +_080F14C2: + adds r1, r5, #0 + bl sub_080F1600 + b _080F15BE + .align 2, 0 +_080F14CC: .4byte 0x000027CC +_080F14D0: + ldr r0, [r3] + mov r2, sb + adds r4, r7, r2 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r5, _080F151C + adds r0, r0, r5 + ldrh r0, [r0, #4] + lsls r2, r2, #0x18 + mov r8, r2 + lsrs r6, r2, #0x18 + adds r1, r6, #0 + str r3, [sp, #4] + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r0, r4, r0 + adds r0, r0, r5 + ldrh r0, [r0, #6] + adds r1, r6, #0 + bl sub_080F1600 + ldr r3, [sp, #4] + ldr r0, [r3] + adds r4, r4, r0 + adds r4, r4, r5 + ldrb r0, [r4, #0xd] + subs r0, #1 + mov r6, r8 + cmp r0, #0xc + bhi _080F15BE + lsls r0, r0, #2 + ldr r1, _080F1520 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F151C: .4byte 0x000027CC +_080F1520: .4byte _080F1524 +_080F1524: @ jump table + .4byte _080F1558 @ case 0 + .4byte _080F157C @ case 1 + .4byte _080F15BE @ case 2 + .4byte _080F15BE @ case 3 + .4byte _080F1558 @ case 4 + .4byte _080F1558 @ case 5 + .4byte _080F1558 @ case 6 + .4byte _080F1558 @ case 7 + .4byte _080F1558 @ case 8 + .4byte _080F1558 @ case 9 + .4byte _080F1558 @ case 10 + .4byte _080F1558 @ case 11 + .4byte _080F1558 @ case 12 +_080F1558: + ldr r0, _080F1574 + ldr r1, [r0] + mov r4, sb + adds r0, r7, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _080F1578 + adds r0, r0, r1 + ldrh r0, [r0, #8] + lsrs r1, r6, #0x18 + bl sub_080F1600 + b _080F15BE + .align 2, 0 +_080F1574: .4byte gUnknown_3005AEC +_080F1578: .4byte 0x000027CC +_080F157C: + ldr r2, _080F15AC + ldr r0, [r2] + mov r1, sb + adds r4, r7, r1 + lsls r4, r4, #2 + adds r0, r4, r0 + ldr r5, _080F15B0 + adds r0, r0, r5 + ldrh r0, [r0, #8] + lsrs r6, r6, #0x18 + adds r1, r6, #0 + str r2, [sp] + bl sub_080F1600 + ldr r2, [sp] + ldr r0, [r2] + adds r4, r4, r0 + adds r4, r4, r5 + ldrh r0, [r4, #0xa] + adds r1, r6, #0 + bl sub_080F1600 + b _080F15BE + .align 2, 0 +_080F15AC: .4byte gUnknown_3005AEC +_080F15B0: .4byte 0x000027CC +_080F15B4: + mov r2, sb + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + bl sub_080F15DC +_080F15BE: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r0, #0x17 + bhi _080F15CE + b _080F11F2 +_080F15CE: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080F11E4 + + thumb_func_start sub_080F15DC +sub_080F15DC: @ 0x080F15DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F15F8 + ldr r2, [r1] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r2, r1 + ldr r0, _080F15FC + adds r2, r2, r0 + movs r0, #0 + strb r0, [r2] + bx lr + .align 2, 0 +_080F15F8: .4byte gUnknown_3005AEC +_080F15FC: .4byte 0x000027CD + thumb_func_end sub_080F15DC + + thumb_func_start sub_080F1600 +sub_080F1600: @ 0x080F1600 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + asrs r2, r0, #0x18 + cmp r2, #0 + bne _080F1632 + ldr r0, _080F1638 + ldr r1, [r0] + lsls r0, r4, #3 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _080F163C + adds r1, r1, r0 + strb r2, [r1] +_080F1632: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F1638: .4byte gUnknown_3005AEC +_080F163C: .4byte 0x000027CD + thumb_func_end sub_080F1600 + + thumb_func_start sub_080F1640 +sub_080F1640: @ 0x080F1640 + push {r4, r5, r6, lr} + ldr r0, _080F1684 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080F167E + movs r2, #0 + ldr r4, _080F1688 + movs r3, #0 + ldr r5, _080F168C +_080F1658: + ldr r0, [r5] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r0, r1 + ldr r6, _080F1690 + adds r0, r1, r6 + ldrb r0, [r0] + cmp r0, #7 + beq _080F1670 + cmp r0, #0x29 + bne _080F1674 +_080F1670: + adds r0, r1, r4 + strb r3, [r0] +_080F1674: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x17 + bls _080F1658 +_080F167E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F1684: .4byte 0x00000864 +_080F1688: .4byte 0x000027CD +_080F168C: .4byte gUnknown_3005AEC +_080F1690: .4byte 0x000027CC + thumb_func_end sub_080F1640 + + thumb_func_start sub_080F1694 +sub_080F1694: @ 0x080F1694 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _080F16D4 +_080F169A: + ldr r1, [r6] + lsls r0, r5, #3 + adds r0, r0, r5 + lsls r4, r0, #2 + adds r1, r1, r4 + ldr r0, _080F16D8 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_080F0AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080F16C2 + ldr r0, [r6] + adds r0, r0, r4 + ldr r1, _080F16DC + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_080F16C2: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _080F169A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F16D4: .4byte gUnknown_3005AEC +_080F16D8: .4byte 0x000027CC +_080F16DC: .4byte 0x000027CD + thumb_func_end sub_080F1694 + + thumb_func_start sub_080F16E0 +sub_080F16E0: @ 0x080F16E0 + push {r4, r5, lr} + movs r3, #0 + movs r2, #5 + ldr r0, _080F1750 + ldr r4, [r0] + ldr r5, _080F1754 +_080F16EC: + lsls r0, r2, #0x18 + asrs r1, r0, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _080F170A + lsls r0, r3, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r3, r0, #0x18 +_080F170A: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x17 + ble _080F16EC + movs r2, #0 + lsls r0, r3, #0x18 + asrs r0, r0, #0x18 + movs r1, #5 + subs r0, r1, r0 + cmp r2, r0 + bge _080F174A + adds r5, r0, #0 +_080F1726: + ldr r0, _080F1750 + ldr r0, [r0] + ldr r1, _080F1754 + adds r0, r0, r1 + lsls r1, r2, #0x18 + asrs r4, r1, #0x18 + movs r2, #0xa0 + lsls r2, r2, #0x13 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + bl sub_080F03FC + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r2, r4, #0x18 + asrs r4, r4, #0x18 + cmp r4, r5 + blt _080F1726 +_080F174A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1750: .4byte gUnknown_3005AEC +_080F1754: .4byte 0x000027CC + thumb_func_end sub_080F16E0 + + thumb_func_start sub_080F1758 +sub_080F1758: @ 0x080F1758 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_08000BC8 + adds r5, r0, #0 + cmp r5, #0 + beq _080F1828 + movs r4, #0 +_080F1776: + lsls r0, r4, #6 + adds r0, r0, r5 + adds r1, r4, #0 + muls r1, r7, r1 + add r1, r8 + movs r2, #0x40 + bl memcpy + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _080F1776 + cmp r6, #1 + beq _080F17CC + cmp r6, #1 + bgt _080F179E + cmp r6, #0 + beq _080F17A8 + b _080F181A +_080F179E: + cmp r6, #2 + beq _080F17E4 + cmp r6, #3 + beq _080F1804 + b _080F181A +_080F17A8: + ldr r0, _080F17C4 + ldr r0, [r0] + ldr r1, _080F17C8 + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #0x40 + adds r2, r5, #0 + adds r2, #0x80 + adds r3, r5, #0 + adds r3, #0xc0 + bl sub_080F183C + b _080F181A + .align 2, 0 +_080F17C4: .4byte gUnknown_3005AEC +_080F17C8: .4byte 0x00002B50 +_080F17CC: + ldr r0, _080F17DC + ldr r1, [r0] + ldr r0, _080F17E0 + adds r1, r1, r0 + adds r2, r5, #0 + adds r2, #0x80 + b _080F17F0 + .align 2, 0 +_080F17DC: .4byte gUnknown_3005AEC +_080F17E0: .4byte 0x00002B50 +_080F17E4: + adds r1, r5, #0 + adds r1, #0x40 + ldr r0, _080F17FC + ldr r2, [r0] + ldr r0, _080F1800 + adds r2, r2, r0 +_080F17F0: + adds r3, r5, #0 + adds r3, #0xc0 + adds r0, r5, #0 + bl sub_080F183C + b _080F181A + .align 2, 0 +_080F17FC: .4byte gUnknown_3005AEC +_080F1800: .4byte 0x00002B50 +_080F1804: + adds r1, r5, #0 + adds r1, #0x40 + adds r2, r5, #0 + adds r2, #0x80 + ldr r0, _080F1834 + ldr r3, [r0] + ldr r0, _080F1838 + adds r3, r3, r0 + adds r0, r5, #0 + bl sub_080F183C +_080F181A: + bl sub_080F19C8 + bl sub_080F1A00 + adds r0, r5, #0 + bl sub_08000BF0 +_080F1828: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F1834: .4byte gUnknown_3005AEC +_080F1838: .4byte 0x00002B50 + thumb_func_end sub_080F1758 + + thumb_func_start sub_080F183C +sub_080F183C: @ 0x080F183C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + add r0, sp, #0x10 + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, sp, #0x18 + str r0, [sp, #8] + add r0, sp, #0x1c + str r0, [sp, #0xc] + bl sub_08009B64 + ldr r1, _080F1878 + strb r0, [r1] + movs r0, #0 + mov sl, r0 +_080F186C: + movs r7, #0 + mov r1, sl + adds r1, #1 + str r1, [sp, #0x20] + b _080F1904 + .align 2, 0 +_080F1878: .4byte gUnknown_3001175 +_080F187C: + lsls r4, r7, #2 + mov r1, sp + adds r0, r1, r4 + ldr r0, [r0] + ldr r0, [r0] + mov r1, sl + bl sub_080F19A8 + ldr r1, _080F1928 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov r8, r4 + adds r1, r7, #1 + mov sb, r1 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080F18FE + movs r5, #0 + ldr r1, _080F192C + ldrb r0, [r1] + subs r0, #1 + cmp r5, r0 + bge _080F18FE + adds r6, r1, #0 +_080F18B0: + adds r0, r7, r5 + adds r4, r0, #1 + ldrb r1, [r6] + adds r0, r4, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + ldr r0, [r0] + bl sub_080EF934 + ldr r1, _080F1930 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080F18F0 + ldrb r1, [r6] + adds r0, r4, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + mov r1, sp + add r1, r8 + ldr r1, [r1] + bl sub_080F1934 +_080F18F0: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6] + subs r0, #1 + cmp r5, r0 + blt _080F18B0 +_080F18FE: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 +_080F1904: + ldr r0, _080F192C + ldrb r0, [r0] + cmp r7, r0 + blo _080F187C + ldr r1, [sp, #0x20] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0xf + bls _080F186C + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F1928: .4byte gUnknown_3001176 +_080F192C: .4byte gUnknown_3001175 +_080F1930: .4byte gUnknown_3005E20 + thumb_func_end sub_080F183C + + thumb_func_start sub_080F1934 +sub_080F1934: @ 0x080F1934 + push {lr} + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _080F1958 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r2, _080F195C + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + bl sub_080F1960 + pop {r0} + bx r0 + .align 2, 0 +_080F1958: .4byte gUnknown_3001176 +_080F195C: .4byte gUnknown_3005E20 + thumb_func_end sub_080F1934 + + thumb_func_start sub_080F1960 +sub_080F1960: @ 0x080F1960 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldrb r3, [r5] + adds r0, r3, #0 + cmp r0, #0 + bne _080F1976 +_080F1972: + movs r0, #0 + b _080F19A2 +_080F1976: + movs r1, #0 + adds r2, r3, #0 + adds r3, r0, #0 +_080F197C: + lsls r0, r1, #2 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r3 + beq _080F1972 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _080F197C + lsls r0, r6, #0x18 + asrs r0, r0, #0x16 + adds r0, r0, r4 + strb r2, [r0] + movs r1, #1 + strb r1, [r0, #1] + ldrh r1, [r5, #2] + strh r1, [r0, #2] + movs r0, #1 +_080F19A2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080F1960 + + thumb_func_start sub_080F19A8 +sub_080F19A8: @ 0x080F19A8 + push {lr} + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + lsls r1, r2, #2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _080F19BE + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + b _080F19C2 +_080F19BE: + movs r0, #1 + rsbs r0, r0, #0 +_080F19C2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F19A8 + + thumb_func_start sub_080F19C8 +sub_080F19C8: @ 0x080F19C8 + push {r4, lr} + movs r4, #0 +_080F19CC: + ldr r0, _080F19F8 + ldr r0, [r0] + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r1, _080F19FC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #4 + bls _080F19E4 + adds r0, r4, #0 + bl sub_080EF97C +_080F19E4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _080F19CC + bl sub_080EF9BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F19F8: .4byte gUnknown_3005AEC +_080F19FC: .4byte 0x00002B50 + thumb_func_end sub_080F19C8 + + thumb_func_start sub_080F1A00 +sub_080F1A00: @ 0x080F1A00 + push {r4, r5, lr} + ldr r0, _080F1A34 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080F1A2C + movs r2, #0 + ldr r5, _080F1A38 + ldr r4, _080F1A3C + movs r3, #0 +_080F1A18: + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, r0, r4 + strb r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _080F1A18 +_080F1A2C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F1A34: .4byte 0x00000864 +_080F1A38: .4byte gUnknown_3005AEC +_080F1A3C: .4byte 0x00002B51 + thumb_func_end sub_080F1A00 + + thumb_func_start sub_080F1A40 +sub_080F1A40: @ 0x080F1A40 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r0, #0x2c + bl sub_08000BDC + adds r4, r0, #0 + movs r7, #0 +_080F1A50: + lsls r0, r7, #3 + adds r1, r0, r7 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r1, [r1] + subs r1, #1 + adds r2, r0, #0 + cmp r1, #0x28 + bls _080F1A64 + b _080F1CD0 +_080F1A64: + lsls r0, r1, #2 + ldr r1, _080F1A70 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F1A70: .4byte _080F1A74 +_080F1A74: @ jump table + .4byte _080F1B18 @ case 0 + .4byte _080F1B18 @ case 1 + .4byte _080F1B36 @ case 2 + .4byte _080F1CD0 @ case 3 + .4byte _080F1C2E @ case 4 + .4byte _080F1BFA @ case 5 + .4byte _080F1BC2 @ case 6 + .4byte _080F1CD0 @ case 7 + .4byte _080F1CD0 @ case 8 + .4byte _080F1CD0 @ case 9 + .4byte _080F1CD0 @ case 10 + .4byte _080F1CD0 @ case 11 + .4byte _080F1CD0 @ case 12 + .4byte _080F1CD0 @ case 13 + .4byte _080F1CD0 @ case 14 + .4byte _080F1CD0 @ case 15 + .4byte _080F1CD0 @ case 16 + .4byte _080F1CD0 @ case 17 + .4byte _080F1CD0 @ case 18 + .4byte _080F1CD0 @ case 19 + .4byte _080F1B6E @ case 20 + .4byte _080F1BA2 @ case 21 + .4byte _080F1C66 @ case 22 + .4byte _080F1C86 @ case 23 + .4byte _080F1CA6 @ case 24 + .4byte _080F1CD0 @ case 25 + .4byte _080F1CD0 @ case 26 + .4byte _080F1CD0 @ case 27 + .4byte _080F1CD0 @ case 28 + .4byte _080F1CD0 @ case 29 + .4byte _080F1CD0 @ case 30 + .4byte _080F1CD0 @ case 31 + .4byte _080F1CD0 @ case 32 + .4byte _080F1CD0 @ case 33 + .4byte _080F1CD0 @ case 34 + .4byte _080F1CD0 @ case 35 + .4byte _080F1CD0 @ case 36 + .4byte _080F1CD0 @ case 37 + .4byte _080F1CD0 @ case 38 + .4byte _080F1CD0 @ case 39 + .4byte _080F1CC6 @ case 40 +_080F1B18: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4] + adds r0, #0x10 + bl sub_08008F14 + cmp r0, #0 + beq _080F1B32 + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #0x18] + b _080F1CD0 +_080F1B32: + ldr r0, [r4] + b _080F1CCE +_080F1B36: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #4] + adds r0, #5 + bl sub_08008F14 + cmp r0, #0 + beq _080F1B50 + ldr r1, [r4, #4] + movs r0, #1 + strb r0, [r1, #0xd] + b _080F1B54 +_080F1B50: + ldr r0, [r4, #4] + strb r5, [r0, #0xd] +_080F1B54: + ldr r0, [r4, #4] + adds r0, #0x10 + bl sub_08008F14 + cmp r0, #0 + beq _080F1B68 + ldr r1, [r4, #4] + movs r0, #1 + strb r0, [r1, #0xe] + b _080F1CD0 +_080F1B68: + ldr r0, [r4, #4] + strb r5, [r0, #0xe] + b _080F1CD0 +_080F1B6E: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x18] + adds r0, #0x13 + bl sub_08008F14 + cmp r0, #0 + beq _080F1B88 + ldr r1, [r4, #0x18] + movs r0, #1 + strb r0, [r1, #2] + b _080F1B8C +_080F1B88: + ldr r0, [r4, #0x18] + strb r5, [r0, #2] +_080F1B8C: + ldr r0, [r4, #0x18] + adds r0, #4 + bl sub_08008F14 + cmp r0, #0 + beq _080F1B9C + ldr r1, [r4, #0x18] + b _080F1BB6 +_080F1B9C: + ldr r0, [r4, #0x18] + strb r5, [r0, #3] + b _080F1CD0 +_080F1BA2: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x1c] + adds r0, #0x13 + bl sub_08008F14 + cmp r0, #0 + beq _080F1BBC + ldr r1, [r4, #0x1c] +_080F1BB6: + movs r0, #1 + strb r0, [r1, #3] + b _080F1CD0 +_080F1BBC: + ldr r0, [r4, #0x1c] + strb r5, [r0, #3] + b _080F1CD0 +_080F1BC2: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x14] + adds r0, #2 + bl sub_08008F14 + cmp r0, #0 + beq _080F1BDC + ldr r1, [r4, #0x14] + movs r0, #1 + strb r0, [r1, #0x1d] + b _080F1BE0 +_080F1BDC: + ldr r0, [r4, #0x14] + strb r5, [r0, #0x1d] +_080F1BE0: + ldr r0, [r4, #0x14] + adds r0, #0xc + bl sub_08008F14 + cmp r0, #0 + beq _080F1BF4 + ldr r1, [r4, #0x14] + movs r0, #1 + strb r0, [r1, #0x1e] + b _080F1CD0 +_080F1BF4: + ldr r0, [r4, #0x14] + strb r5, [r0, #0x1e] + b _080F1CD0 +_080F1BFA: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x10] + adds r0, #0x16 + bl sub_08008F14 + cmp r0, #0 + beq _080F1C14 + ldr r1, [r4, #0x10] + movs r0, #1 + strb r0, [r1, #0x1e] + b _080F1C18 +_080F1C14: + ldr r0, [r4, #0x10] + strb r5, [r0, #0x1e] +_080F1C18: + ldr r0, [r4, #0x10] + adds r0, #8 + bl sub_08008F14 + cmp r0, #0 + beq _080F1C28 + ldr r1, [r4, #0x10] + b _080F1C5A +_080F1C28: + ldr r0, [r4, #0x10] + strb r5, [r0, #0x1f] + b _080F1CD0 +_080F1C2E: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0xc] + adds r0, #0xf + bl sub_08008F14 + cmp r0, #0 + beq _080F1C48 + ldr r1, [r4, #0xc] + movs r0, #1 + strb r0, [r1, #0x1e] + b _080F1C4C +_080F1C48: + ldr r0, [r4, #0xc] + strb r5, [r0, #0x1e] +_080F1C4C: + ldr r0, [r4, #0xc] + adds r0, #4 + bl sub_08008F14 + cmp r0, #0 + beq _080F1C60 + ldr r1, [r4, #0xc] +_080F1C5A: + movs r0, #1 + strb r0, [r1, #0x1f] + b _080F1CD0 +_080F1C60: + ldr r0, [r4, #0xc] + strb r5, [r0, #0x1f] + b _080F1CD0 +_080F1C66: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #8] + adds r0, #0x13 + bl sub_08008F14 + cmp r0, #0 + beq _080F1C80 + ldr r1, [r4, #8] + movs r0, #1 + strb r0, [r1, #2] + b _080F1CD0 +_080F1C80: + ldr r0, [r4, #8] + strb r5, [r0, #2] + b _080F1CD0 +_080F1C86: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x20] + adds r0, #0x13 + bl sub_08008F14 + cmp r0, #0 + beq _080F1CA0 + ldr r1, [r4, #0x20] + movs r0, #1 + strb r0, [r1, #6] + b _080F1CD0 +_080F1CA0: + ldr r0, [r4, #0x20] + strb r5, [r0, #6] + b _080F1CD0 +_080F1CA6: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x24] + adds r0, #0x13 + bl sub_08008F14 + cmp r0, #0 + beq _080F1CC0 + ldr r1, [r4, #0x24] + movs r0, #1 + strb r0, [r1, #0xb] + b _080F1CD0 +_080F1CC0: + ldr r0, [r4, #0x24] + strb r5, [r0, #0xb] + b _080F1CD0 +_080F1CC6: + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r6, r0 + str r0, [r4, #0x28] +_080F1CCE: + strb r5, [r0, #0x18] +_080F1CD0: + adds r7, #1 + cmp r7, #0x17 + bgt _080F1CD8 + b _080F1A50 +_080F1CD8: + adds r0, r4, #0 + bl sub_08000BF0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080F1A40 + + thumb_func_start sub_080F1CE4 +sub_080F1CE4: @ 0x080F1CE4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + movs r6, #0x17 +_080F1CEC: + ldrb r0, [r4] + cmp r0, #0x17 + beq _080F1D08 + cmp r0, #0x19 + bne _080F1D18 + ldrb r0, [r4, #0xa] + cmp r0, #0x58 + bls _080F1D18 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x24 + bl memset + b _080F1D18 +_080F1D08: + ldrb r0, [r4, #0x12] + cmp r0, #0x58 + bls _080F1D18 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x24 + bl memset +_080F1D18: + adds r4, #0x24 + adds r5, #0x24 + subs r6, #1 + cmp r6, #0 + bge _080F1CEC + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080F1CE4 + + thumb_func_start sub_080F1D28 +sub_080F1D28: @ 0x080F1D28 + push {lr} + ldr r0, _080F1D60 + ldr r2, [r0] + ldr r0, _080F1D64 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r1, _080F1D68 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F1D46 + b _080F1ED2 +_080F1D46: + subs r1, #1 + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, #1 + cmp r0, #0x28 + bls _080F1D54 + b _080F1ED2 +_080F1D54: + lsls r0, r0, #2 + ldr r1, _080F1D6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F1D60: .4byte gUnknown_3005AEC +_080F1D64: .4byte gUnknown_2037280 +_080F1D68: .4byte 0x000027CD +_080F1D6C: .4byte _080F1D70 +_080F1D70: @ jump table + .4byte _080F1E14 @ case 0 + .4byte _080F1E1A @ case 1 + .4byte _080F1E20 @ case 2 + .4byte _080F1E26 @ case 3 + .4byte _080F1E4A @ case 4 + .4byte _080F1E32 @ case 5 + .4byte _080F1E38 @ case 6 + .4byte _080F1E50 @ case 7 + .4byte _080F1E5C @ case 8 + .4byte _080F1E56 @ case 9 + .4byte _080F1EA4 @ case 10 + .4byte _080F1ECE @ case 11 + .4byte _080F1ED2 @ case 12 + .4byte _080F1ED2 @ case 13 + .4byte _080F1ED2 @ case 14 + .4byte _080F1ED2 @ case 15 + .4byte _080F1ED2 @ case 16 + .4byte _080F1ED2 @ case 17 + .4byte _080F1ED2 @ case 18 + .4byte _080F1ED2 @ case 19 + .4byte _080F1E3E @ case 20 + .4byte _080F1E44 @ case 21 + .4byte _080F1E62 @ case 22 + .4byte _080F1E68 @ case 23 + .4byte _080F1E6E @ case 24 + .4byte _080F1E74 @ case 25 + .4byte _080F1E7A @ case 26 + .4byte _080F1E80 @ case 27 + .4byte _080F1E86 @ case 28 + .4byte _080F1E8C @ case 29 + .4byte _080F1E92 @ case 30 + .4byte _080F1E98 @ case 31 + .4byte _080F1E9E @ case 32 + .4byte _080F1EAA @ case 33 + .4byte _080F1EB0 @ case 34 + .4byte _080F1EB6 @ case 35 + .4byte _080F1EBC @ case 36 + .4byte _080F1EC2 @ case 37 + .4byte _080F1EC8 @ case 38 + .4byte _080F1ED2 @ case 39 + .4byte _080F1E2C @ case 40 +_080F1E14: + bl sub_080F2CB8 + b _080F1ED2 +_080F1E1A: + bl sub_080F2EE8 + b _080F1ED2 +_080F1E20: + bl sub_080F3080 + b _080F1ED2 +_080F1E26: + bl sub_080F3174 + b _080F1ED2 +_080F1E2C: + bl sub_080F3178 + b _080F1ED2 +_080F1E32: + bl sub_080F1ED8 + b _080F1ED2 +_080F1E38: + bl sub_080F2164 + b _080F1ED2 +_080F1E3E: + bl sub_080F28FC + b _080F1ED2 +_080F1E44: + bl sub_080F23EC + b _080F1ED2 +_080F1E4A: + bl sub_080F2620 + b _080F1ED2 +_080F1E50: + bl sub_080F31E8 + b _080F1ED2 +_080F1E56: + bl sub_080F39CC + b _080F1ED2 +_080F1E5C: + bl sub_080F3C00 + b _080F1ED2 +_080F1E62: + bl sub_080F2B50 + b _080F1ED2 +_080F1E68: + bl sub_080F40A4 + b _080F1ED2 +_080F1E6E: + bl sub_080F4180 + b _080F1ED2 +_080F1E74: + bl sub_080F4260 + b _080F1ED2 +_080F1E7A: + bl sub_080F4470 + b _080F1ED2 +_080F1E80: + bl sub_080F45E0 + b _080F1ED2 +_080F1E86: + bl sub_080F46E0 + b _080F1ED2 +_080F1E8C: + bl sub_080F488C + b _080F1ED2 +_080F1E92: + bl sub_080F4BBC + b _080F1ED2 +_080F1E98: + bl sub_080F4E0C + b _080F1ED2 +_080F1E9E: + bl sub_080F4EA0 + b _080F1ED2 +_080F1EA4: + bl sub_080F50AC + b _080F1ED2 +_080F1EAA: + bl sub_080F51E0 + b _080F1ED2 +_080F1EB0: + bl sub_080F537C + b _080F1ED2 +_080F1EB6: + bl sub_080F55B0 + b _080F1ED2 +_080F1EBC: + bl sub_080F5858 + b _080F1ED2 +_080F1EC2: + bl sub_080F5A10 + b _080F1ED2 +_080F1EC8: + bl sub_080F5D54 + b _080F1ED2 +_080F1ECE: + bl sub_080F5ED0 +_080F1ED2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F1D28 + + thumb_func_start sub_080F1ED8 +sub_080F1ED8: @ 0x080F1ED8 + push {r4, r5, lr} + ldr r2, _080F1F08 + ldr r0, _080F1F0C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F1F10 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F1F14 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F1F18 + ldrb r5, [r0] + cmp r5, #8 + bls _080F1EFE + b _080F2140 +_080F1EFE: + lsls r0, r5, #2 + ldr r1, _080F1F1C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F1F08: .4byte gUnknown_3005AEC +_080F1F0C: .4byte gUnknown_2037280 +_080F1F10: .4byte 0x000027CC +_080F1F14: .4byte gUnknown_2037290 +_080F1F18: .4byte gUnknown_2039CFC +_080F1F1C: .4byte _080F1F20 +_080F1F20: @ jump table + .4byte _080F1F44 @ case 0 + .4byte _080F1F9C @ case 1 + .4byte _080F1FD4 @ case 2 + .4byte _080F2004 @ case 3 + .4byte _080F2038 @ case 4 + .4byte _080F206C @ case 5 + .4byte _080F20B0 @ case 6 + .4byte _080F20F8 @ case 7 + .4byte _080F2128 @ case 8 +_080F1F44: + ldr r0, _080F1F84 + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + movs r0, #1 + bl sub_080EFD54 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1e + movs r0, #2 + bl sub_080EFCC0 + ldrh r1, [r4, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _080F1F88 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #8 + bl sub_0800895C + cmp r0, #0 + bne _080F1F90 + ldr r1, _080F1F8C + movs r0, #8 + b _080F213E + .align 2, 0 +_080F1F84: .4byte gUnknown_2021C40 +_080F1F88: .4byte gUnknown_82EA31C +_080F1F8C: .4byte gUnknown_2039CFC +_080F1F90: + ldr r1, _080F1F98 + movs r0, #1 + b _080F213E + .align 2, 0 +_080F1F98: .4byte gUnknown_2039CFC +_080F1F9C: + ldr r0, _080F1FC8 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F1FCC + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F1FD0 + adds r1, r4, #0 + adds r1, #8 + bl sub_08008828 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + movs r0, #2 + bl sub_080EFD54 + b _080F213A + .align 2, 0 +_080F1FC8: .4byte gUnknown_2021C40 +_080F1FCC: .4byte gUnknown_82EA31C +_080F1FD0: .4byte gUnknown_2021C54 +_080F1FD4: + ldr r0, _080F1FF0 + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldrb r1, [r4, #0x13] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + bne _080F1FF8 + ldr r1, _080F1FF4 + movs r0, #3 + b _080F213E + .align 2, 0 +_080F1FF0: .4byte gUnknown_2021C40 +_080F1FF4: .4byte gUnknown_2039CFC +_080F1FF8: + ldr r1, _080F2000 + movs r0, #4 + b _080F213E + .align 2, 0 +_080F2000: .4byte gUnknown_2039CFC +_080F2004: + ldr r0, _080F202C + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldr r0, _080F2030 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #2 + bl sub_080EFE44 + ldr r1, _080F2034 + movs r0, #5 + b _080F213E + .align 2, 0 +_080F202C: .4byte gUnknown_2021C40 +_080F2030: .4byte gUnknown_2021C54 +_080F2034: .4byte gUnknown_2039CFC +_080F2038: + ldr r0, _080F2060 + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldr r0, _080F2064 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #2 + bl sub_080EFE44 + ldr r1, _080F2068 + movs r0, #5 + b _080F213E + .align 2, 0 +_080F2060: .4byte gUnknown_2021C40 +_080F2064: .4byte gUnknown_2021C54 +_080F2068: .4byte gUnknown_2039CFC +_080F206C: + ldr r0, _080F2098 + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldrb r1, [r4, #0x13] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + movs r0, #1 + bl sub_080EFD54 + ldr r0, _080F209C + ldrh r1, [r4, #6] + bl sub_0811F180 + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _080F20A4 + ldr r1, _080F20A0 + movs r0, #6 + b _080F213E + .align 2, 0 +_080F2098: .4byte gUnknown_2021C40 +_080F209C: .4byte gUnknown_2021C68 +_080F20A0: .4byte gUnknown_2039CFC +_080F20A4: + ldr r1, _080F20AC + movs r0, #7 + b _080F213E + .align 2, 0 +_080F20AC: .4byte gUnknown_2039CFC +_080F20B0: + ldr r0, _080F20E0 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F20E4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F20E8 + ldrh r1, [r4, #0x14] + lsls r1, r1, #3 + ldr r2, _080F20EC + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F20F0 + ldrh r1, [r4, #6] + bl sub_0811F180 + ldr r1, _080F20F4 + movs r0, #7 + b _080F213E + .align 2, 0 +_080F20E0: .4byte gUnknown_2021C40 +_080F20E4: .4byte gUnknown_82EA31C +_080F20E8: .4byte gUnknown_2021C54 +_080F20EC: .4byte gUnknown_82EACC4 +_080F20F0: .4byte gUnknown_2021C68 +_080F20F4: .4byte gUnknown_2039CFC +_080F20F8: + ldr r0, _080F211C + adds r1, r4, #0 + adds r1, #0x16 + bl sub_080088B8 + ldr r0, _080F2120 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2124 + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 + b _080F2140 + .align 2, 0 +_080F211C: .4byte gUnknown_2021C40 +_080F2120: .4byte gUnknown_2021C54 +_080F2124: .4byte gUnknown_82EA31C +_080F2128: + ldr r0, _080F2154 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2158 + adds r1, r1, r2 + bl sub_080088B8 +_080F213A: + ldr r1, _080F215C + movs r0, #2 +_080F213E: + strb r0, [r1] +_080F2140: + ldr r0, _080F2160 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F2154: .4byte gUnknown_2021C40 +_080F2158: .4byte gUnknown_82EA31C +_080F215C: .4byte gUnknown_2039CFC +_080F2160: .4byte gUnknown_8568CB0 + thumb_func_end sub_080F1ED8 + + thumb_func_start sub_080F2164 +sub_080F2164: @ 0x080F2164 + push {r4, r5, lr} + ldr r2, _080F2198 + ldr r0, _080F219C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F21A0 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F21A4 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F21A8 + ldrb r5, [r0] + adds r2, r0, #0 + cmp r5, #0xe + bls _080F218C + b _080F23CA +_080F218C: + lsls r0, r5, #2 + ldr r1, _080F21AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2198: .4byte gUnknown_3005AEC +_080F219C: .4byte gUnknown_2037280 +_080F21A0: .4byte 0x000027CC +_080F21A4: .4byte gUnknown_2037290 +_080F21A8: .4byte gUnknown_2039CFC +_080F21AC: .4byte _080F21B0 +_080F21B0: @ jump table + .4byte _080F21EC @ case 0 + .4byte _080F2230 @ case 1 + .4byte _080F2280 @ case 2 + .4byte _080F22A0 @ case 3 + .4byte _080F22CC @ case 4 + .4byte _080F2314 @ case 5 + .4byte _080F2320 @ case 6 + .4byte _080F232C @ case 7 + .4byte _080F2332 @ case 8 + .4byte _080F2332 @ case 9 + .4byte _080F2332 @ case 10 + .4byte _080F234C @ case 11 + .4byte _080F2378 @ case 12 + .4byte _080F2378 @ case 13 + .4byte _080F23AC @ case 14 +_080F21EC: + ldr r0, _080F2214 + adds r1, r4, #2 + bl sub_080088B8 + ldr r0, _080F2218 + ldrh r2, [r4, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F221C + adds r1, r1, r2 + bl sub_080088B8 + ldrh r0, [r4, #0x16] + cmp r0, #6 + bls _080F2224 + ldr r1, _080F2220 + movs r0, #1 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2214: .4byte gUnknown_2021C40 +_080F2218: .4byte gUnknown_2021C54 +_080F221C: .4byte gUnknown_82EA31C +_080F2220: .4byte gUnknown_2039CFC +_080F2224: + ldr r1, _080F222C + movs r0, #2 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F222C: .4byte gUnknown_2039CFC +_080F2230: + ldrb r0, [r4, #0x1a] + cmp r0, #0x32 + bne _080F2248 + ldr r0, _080F2240 + ldr r1, _080F2244 + bl sub_080088B8 + b _080F2250 + .align 2, 0 +_080F2240: .4byte gUnknown_2021C40 +_080F2244: .4byte gUnknown_85CAB0D +_080F2248: + ldr r0, _080F2268 + ldr r1, _080F226C + bl sub_080088B8 +_080F2250: + ldrh r1, [r4, #0x16] + movs r0, #1 + bl sub_080EFE44 + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _080F2274 + ldr r1, _080F2270 + movs r0, #3 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2268: .4byte gUnknown_2021C40 +_080F226C: .4byte gUnknown_85CAB13 +_080F2270: .4byte gUnknown_2039CFC +_080F2274: + ldr r1, _080F227C + movs r0, #4 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F227C: .4byte gUnknown_2039CFC +_080F2280: + ldr r0, _080F229C + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldrh r1, [r4, #0x16] + adds r1, #1 + movs r0, #1 + bl sub_080EFE44 +_080F2294: + ldrb r0, [r4, #0x1b] + cmp r0, #0 + beq _080F22EE + b _080F2308 + .align 2, 0 +_080F229C: .4byte gUnknown_2021C40 +_080F22A0: + ldr r0, _080F22C0 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F22C4 + ldrh r2, [r4, #0x14] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F22C8 + adds r1, r1, r2 + bl sub_080088B8 + b _080F2294 + .align 2, 0 +_080F22C0: .4byte gUnknown_2021C40 +_080F22C4: .4byte gUnknown_2021C54 +_080F22C8: .4byte gUnknown_82EA31C +_080F22CC: + ldr r0, _080F22F8 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F22FC + ldrh r2, [r4, #0x14] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2300 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r0, [r4, #0x1b] + cmp r0, #0 + bne _080F2308 +_080F22EE: + ldr r1, _080F2304 + movs r0, #5 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F22F8: .4byte gUnknown_2021C40 +_080F22FC: .4byte gUnknown_2021C54 +_080F2300: .4byte gUnknown_82EA31C +_080F2304: .4byte gUnknown_2039CFC +_080F2308: + ldr r1, _080F2310 + movs r0, #6 + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2310: .4byte gUnknown_2039CFC +_080F2314: + ldr r0, _080F231C + adds r1, r4, #0 + adds r1, #0xc + b _080F2336 + .align 2, 0 +_080F231C: .4byte gUnknown_2021C40 +_080F2320: + ldr r0, _080F2328 + adds r1, r4, #0 + adds r1, #0xc + b _080F2336 + .align 2, 0 +_080F2328: .4byte gUnknown_2021C40 +_080F232C: + movs r0, #0xb + strb r0, [r2] + b _080F23CA +_080F2332: + ldr r0, _080F2344 + adds r1, r4, #2 +_080F2336: + bl sub_080088B8 + ldr r1, _080F2348 + movs r0, #0xb + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2344: .4byte gUnknown_2021C40 +_080F2348: .4byte gUnknown_2039CFC +_080F234C: + ldr r0, _080F2364 + ldrh r1, [r4, #0x18] + bl sub_0811F180 + ldrb r0, [r4, #0x1b] + cmp r0, #0 + bne _080F236C + ldr r1, _080F2368 + movs r0, #0xc + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2364: .4byte gUnknown_2021C40 +_080F2368: .4byte gUnknown_2039CFC +_080F236C: + ldr r1, _080F2374 + movs r0, #0xd + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F2374: .4byte gUnknown_2039CFC +_080F2378: + ldr r0, _080F239C + ldrh r1, [r4, #0x18] + bl sub_0811F180 + ldr r0, _080F23A0 + adds r1, r4, #2 + bl sub_080088B8 + ldr r0, _080F23A4 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r1, _080F23A8 + movs r0, #0xe + strb r0, [r1] + b _080F23CA + .align 2, 0 +_080F239C: .4byte gUnknown_2021C40 +_080F23A0: .4byte gUnknown_2021C54 +_080F23A4: .4byte gUnknown_2021C68 +_080F23A8: .4byte gUnknown_2039CFC +_080F23AC: + ldr r0, _080F23DC + adds r1, r4, #2 + bl sub_080088B8 + ldr r0, _080F23E0 + ldrh r2, [r4, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F23E4 + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 +_080F23CA: + ldr r0, _080F23E8 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F23DC: .4byte gUnknown_2021C40 +_080F23E0: .4byte gUnknown_2021C54 +_080F23E4: .4byte gUnknown_82EA31C +_080F23E8: .4byte gUnknown_8568CEC + thumb_func_end sub_080F2164 + + thumb_func_start sub_080F23EC +sub_080F23EC: @ 0x080F23EC + push {r4, r5, r6, lr} + ldr r2, _080F2420 + ldr r0, _080F2424 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F2428 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F242C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2430 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0xc + bls _080F2414 + b _080F2606 +_080F2414: + lsls r0, r6, #2 + ldr r1, _080F2434 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2420: .4byte gUnknown_3005AEC +_080F2424: .4byte gUnknown_2037280 +_080F2428: .4byte 0x000027CC +_080F242C: .4byte gUnknown_2037290 +_080F2430: .4byte gUnknown_2039CFC +_080F2434: .4byte _080F2438 +_080F2438: @ jump table + .4byte _080F246C @ case 0 + .4byte _080F24A8 @ case 1 + .4byte _080F24F0 @ case 2 + .4byte _080F2502 @ case 3 + .4byte _080F24F0 @ case 4 + .4byte _080F24F0 @ case 5 + .4byte _080F252C @ case 6 + .4byte _080F255C @ case 7 + .4byte _080F258C @ case 8 + .4byte _080F2598 @ case 9 + .4byte _080F25A6 @ case 10 + .4byte _080F25B8 @ case 11 + .4byte _080F25F8 @ case 12 +_080F246C: + ldr r0, _080F2490 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2494 + ldrb r1, [r5, #0x12] + movs r2, #0 + bl sub_08124578 + ldrh r0, [r5, #0xc] + cmp r0, #0xfe + bls _080F249C + ldr r1, _080F2498 + movs r0, #0xb + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F2490: .4byte gUnknown_2021C40 +_080F2494: .4byte gUnknown_2021C54 +_080F2498: .4byte gUnknown_2039CFC +_080F249C: + ldr r1, _080F24A4 + movs r0, #1 + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F24A4: .4byte gUnknown_2039CFC +_080F24A8: + ldr r0, _080F24E4 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r4, _080F24E8 + ldrh r0, [r5, #6] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrh r1, [r5, #0xc] + movs r0, #2 + bl sub_080EFE44 + ldr r4, _080F24EC + bl sub_0806F050 + ldrb r2, [r4] + adds r2, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + strb r0, [r4] + b _080F2606 + .align 2, 0 +_080F24E4: .4byte gUnknown_2021C40 +_080F24E8: .4byte gUnknown_2021C54 +_080F24EC: .4byte gUnknown_2039CFC +_080F24F0: + ldrh r0, [r5, #8] + cmp r0, #0 + beq _080F24FC + movs r0, #6 + strb r0, [r2] + b _080F2606 +_080F24FC: + movs r0, #0xa + strb r0, [r2] + b _080F2606 +_080F2502: + ldrh r1, [r5, #0xc] + adds r1, #1 + movs r0, #2 + bl sub_080EFE44 + ldrh r0, [r5, #8] + cmp r0, #0 + beq _080F2520 + ldr r1, _080F251C + movs r0, #6 + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F251C: .4byte gUnknown_2039CFC +_080F2520: + ldr r1, _080F2528 + movs r0, #0xa + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F2528: .4byte gUnknown_2039CFC +_080F252C: + ldr r4, _080F2554 + ldrh r0, [r5, #8] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrh r1, [r5, #0xe] + movs r0, #2 + bl sub_080EFE44 + ldrh r0, [r5, #0xa] + cmp r0, #0 + beq _080F2574 + ldr r1, _080F2558 + movs r0, #7 + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F2554: .4byte gUnknown_2021C54 +_080F2558: .4byte gUnknown_2039CFC +_080F255C: + ldr r4, _080F2584 + ldrh r0, [r5, #0xa] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrh r1, [r5, #0x10] + movs r0, #2 + bl sub_080EFE44 +_080F2574: + ldrb r0, [r5, #2] + cmp r0, #1 + beq _080F25D8 + ldr r1, _080F2588 + movs r0, #9 + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F2584: .4byte gUnknown_2021C54 +_080F2588: .4byte gUnknown_2039CFC +_080F258C: + ldrh r0, [r5, #0xc] + cmp r0, #0xfe + bls _080F25B2 + movs r0, #0xc + strb r0, [r2] + b _080F2606 +_080F2598: + movs r0, #1 + adds r1, r5, #0 + bl sub_080EFF10 + bl sub_080F5F74 + b _080F2606 +_080F25A6: + ldrb r0, [r5, #2] + cmp r0, #1 + bne _080F25B2 + movs r0, #8 + strb r0, [r2] + b _080F2606 +_080F25B2: + movs r0, #9 + strb r0, [r2] + b _080F2606 +_080F25B8: + ldr r0, _080F25E0 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r4, _080F25E4 + ldrh r0, [r5, #6] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r0, [r5, #2] + cmp r0, #1 + bne _080F25EC +_080F25D8: + ldr r1, _080F25E8 + movs r0, #8 + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F25E0: .4byte gUnknown_2021C40 +_080F25E4: .4byte gUnknown_2021C54 +_080F25E8: .4byte gUnknown_2039CFC +_080F25EC: + ldr r1, _080F25F4 + movs r0, #0xc + strb r0, [r1] + b _080F2606 + .align 2, 0 +_080F25F4: .4byte gUnknown_2039CFC +_080F25F8: + ldr r0, _080F2618 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F2606: + ldr r0, _080F261C + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F2618: .4byte gUnknown_2021C40 +_080F261C: .4byte gUnknown_8568C7C + thumb_func_end sub_080F23EC + + thumb_func_start sub_080F2620 +sub_080F2620: @ 0x080F2620 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r2, _080F2654 + ldr r0, _080F2658 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F265C + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F2660 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2664 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0x12 + bls _080F264A + b _080F28E0 +_080F264A: + lsls r0, r6, #2 + ldr r1, _080F2668 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2654: .4byte gUnknown_3005AEC +_080F2658: .4byte gUnknown_2037280 +_080F265C: .4byte 0x000027CC +_080F2660: .4byte gUnknown_2037290 +_080F2664: .4byte gUnknown_2039CFC +_080F2668: .4byte _080F266C +_080F266C: @ jump table + .4byte _080F26B8 @ case 0 + .4byte _080F2700 @ case 1 + .4byte _080F2722 @ case 2 + .4byte _080F2700 @ case 3 + .4byte _080F2700 @ case 4 + .4byte _080F2700 @ case 5 + .4byte _080F2700 @ case 6 + .4byte _080F2700 @ case 7 + .4byte _080F2700 @ case 8 + .4byte _080F2768 @ case 9 + .4byte _080F2768 @ case 10 + .4byte _080F2768 @ case 11 + .4byte _080F27A4 @ case 12 + .4byte _080F27B6 @ case 13 + .4byte _080F27F4 @ case 14 + .4byte _080F2814 @ case 15 + .4byte _080F285C @ case 16 + .4byte _080F288C @ case 17 + .4byte _080F28D4 @ case 18 +_080F26B8: + ldr r0, _080F26EC + adds r1, r5, #0 + adds r1, #0xf + bl sub_080088B8 + ldr r0, _080F26F0 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F26F4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F26F8 + adds r1, r5, #4 + bl sub_08008828 + ldr r4, _080F26FC + adds r0, r5, #0 + bl sub_080F0694 + adds r0, #1 + strb r0, [r4] + b _080F28E0 + .align 2, 0 +_080F26EC: .4byte gUnknown_2021C40 +_080F26F0: .4byte gUnknown_2021C54 +_080F26F4: .4byte gUnknown_82EA31C +_080F26F8: .4byte gUnknown_2021C68 +_080F26FC: .4byte gUnknown_2039CFC +_080F2700: + ldrb r0, [r5, #0x1a] + cmp r0, #0 + bne _080F270C + movs r0, #9 + strb r0, [r2] + b _080F28E0 +_080F270C: + cmp r0, #1 + bne _080F2716 + movs r0, #0xa + strb r0, [r2] + b _080F28E0 +_080F2716: + cmp r0, #2 + beq _080F271C + b _080F28E0 +_080F271C: + movs r0, #0xb + strb r0, [r2] + b _080F28E0 +_080F2722: + ldr r0, _080F273C + adds r1, r5, #0 + adds r1, #0xf + bl sub_080088B8 + ldrb r0, [r5, #0x1a] + cmp r0, #0 + bne _080F2744 + ldr r1, _080F2740 + movs r0, #9 + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F273C: .4byte gUnknown_2021C40 +_080F2740: .4byte gUnknown_2039CFC +_080F2744: + cmp r0, #1 + bne _080F2754 + ldr r1, _080F2750 + movs r0, #0xa + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F2750: .4byte gUnknown_2039CFC +_080F2754: + cmp r0, #2 + beq _080F275A + b _080F28E0 +_080F275A: + ldr r1, _080F2764 + movs r0, #0xb + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F2764: .4byte gUnknown_2039CFC +_080F2768: + ldr r0, _080F279C + adds r1, r5, #4 + bl sub_08008828 + movs r4, #0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_080F06CC + str r4, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #1 + bl sub_080F06CC + ldr r1, _080F27A0 + movs r0, #0xc + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F279C: .4byte gUnknown_2021C40 +_080F27A0: .4byte gUnknown_2039CFC +_080F27A4: + ldrb r0, [r5, #0x1b] + cmp r0, #0 + bne _080F27B0 + movs r0, #0xd + strb r0, [r2] + b _080F28E0 +_080F27B0: + movs r0, #0xf + strb r0, [r2] + b _080F28E0 +_080F27B6: + ldr r0, _080F27EC + adds r1, r5, #0 + adds r1, #0xf + bl sub_080088B8 + movs r4, #0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #2 + movs r3, #0 + bl sub_080F06CC + str r4, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_080F06CC + ldr r1, _080F27F0 + movs r0, #0xe + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F27EC: .4byte gUnknown_2021C40 +_080F27F0: .4byte gUnknown_2039CFC +_080F27F4: + movs r4, #0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_080F06CC + str r4, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #3 + movs r3, #0 + b _080F28BC +_080F2814: + movs r0, #0 + str r0, [sp] + str r5, [sp, #4] + movs r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_080F06CC + ldr r0, _080F2850 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2854 + adds r1, r1, r2 + bl sub_080088B8 + ldrh r0, [r5, #2] + str r0, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #3 + movs r3, #2 + bl sub_080F06CC + ldr r1, _080F2858 + movs r0, #0x10 + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F2850: .4byte gUnknown_2021C54 +_080F2854: .4byte gUnknown_82EA31C +_080F2858: .4byte gUnknown_2039CFC +_080F285C: + ldrh r0, [r5, #2] + str r0, [sp] + str r5, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #2 + movs r3, #2 + bl sub_080F06CC + movs r0, #0 + str r0, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #3 + movs r3, #1 + bl sub_080F06CC + ldr r1, _080F2888 + movs r0, #0x11 + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F2888: .4byte gUnknown_2039CFC +_080F288C: + movs r0, #0 + str r0, [sp] + str r5, [sp, #4] + movs r1, #0 + movs r2, #2 + movs r3, #1 + bl sub_080F06CC + ldr r0, _080F28C8 + ldrh r2, [r5, #0x1c] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F28CC + adds r1, r1, r2 + bl sub_080088B8 + ldrh r0, [r5, #0x1c] + str r0, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r1, #0 + movs r2, #3 + movs r3, #2 +_080F28BC: + bl sub_080F06CC + ldr r1, _080F28D0 + movs r0, #0x12 + strb r0, [r1] + b _080F28E0 + .align 2, 0 +_080F28C8: .4byte gUnknown_2021C54 +_080F28CC: .4byte gUnknown_82EA31C +_080F28D0: .4byte gUnknown_2039CFC +_080F28D4: + ldr r0, _080F28F4 + adds r1, r5, #4 + bl sub_08008828 + bl sub_080F5F74 +_080F28E0: + ldr r0, _080F28F8 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F28F4: .4byte gUnknown_2021C40 +_080F28F8: .4byte gUnknown_8568DE4 + thumb_func_end sub_080F2620 + + thumb_func_start sub_080F28FC +sub_080F28FC: @ 0x080F28FC + push {r4, r5, r6, lr} + ldr r2, _080F2930 + ldr r0, _080F2934 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F2938 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F293C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2940 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0xb + bls _080F2924 + b _080F2B38 +_080F2924: + lsls r0, r6, #2 + ldr r1, _080F2944 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2930: .4byte gUnknown_3005AEC +_080F2934: .4byte gUnknown_2037280 +_080F2938: .4byte 0x000027CC +_080F293C: .4byte gUnknown_2037290 +_080F2940: .4byte gUnknown_2039CFC +_080F2944: .4byte _080F2948 +_080F2948: @ jump table + .4byte _080F2978 @ case 0 + .4byte _080F29CC @ case 1 + .4byte _080F29D2 @ case 2 + .4byte _080F2A0C @ case 3 + .4byte _080F2A44 @ case 4 + .4byte _080F2A4A @ case 5 + .4byte _080F2A80 @ case 6 + .4byte _080F2AD0 @ case 7 + .4byte _080F2AD0 @ case 8 + .4byte _080F2B00 @ case 9 + .4byte _080F2B00 @ case 10 + .4byte _080F2B34 @ case 11 +_080F2978: + ldr r0, _080F29AC + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F29B0 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F29B4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F29B8 + adds r1, r5, #4 + bl sub_08008828 + ldrb r0, [r5, #0xf] + cmp r0, #1 + bne _080F29C0 + ldr r1, _080F29BC + movs r0, #5 + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F29AC: .4byte gUnknown_2021C40 +_080F29B0: .4byte gUnknown_2021C54 +_080F29B4: .4byte gUnknown_82EA31C +_080F29B8: .4byte gUnknown_2021C68 +_080F29BC: .4byte gUnknown_2039CFC +_080F29C0: + ldr r1, _080F29C8 + movs r0, #1 + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F29C8: .4byte gUnknown_2039CFC +_080F29CC: + movs r0, #2 + strb r0, [r2] + b _080F2B38 +_080F29D2: + ldr r4, _080F29F8 + ldrb r0, [r5, #0xf] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r1, [r5, #0x12] + movs r0, #2 + bl sub_080EFE44 + ldrb r0, [r5, #0x12] + cmp r0, #3 + bhi _080F2A00 + ldr r1, _080F29FC + movs r0, #3 + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F29F8: .4byte gUnknown_2021C54 +_080F29FC: .4byte gUnknown_2039CFC +_080F2A00: + ldr r1, _080F2A08 + movs r0, #4 + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F2A08: .4byte gUnknown_2039CFC +_080F2A0C: + ldr r0, _080F2A34 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2A38 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2A3C + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F2A40 + adds r1, r5, #4 + bl sub_08008828 + b _080F2A66 + .align 2, 0 +_080F2A34: .4byte gUnknown_2021C40 +_080F2A38: .4byte gUnknown_2021C54 +_080F2A3C: .4byte gUnknown_82EA31C +_080F2A40: .4byte gUnknown_2021C68 +_080F2A44: + movs r0, #6 + strb r0, [r2] + b _080F2B38 +_080F2A4A: + ldr r0, _080F2A70 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2A74 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2A78 + adds r1, r1, r2 + bl sub_080088B8 +_080F2A66: + ldr r1, _080F2A7C + movs r0, #6 + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F2A70: .4byte gUnknown_2021C40 +_080F2A74: .4byte gUnknown_2021C54 +_080F2A78: .4byte gUnknown_82EA31C +_080F2A7C: .4byte gUnknown_2039CFC +_080F2A80: + ldr r0, _080F2ABC + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2AC0 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2AC4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F2AC8 + adds r1, r5, #4 + bl sub_08008828 + ldr r4, _080F2ACC + bl sub_0806F050 + ldrb r2, [r4] + adds r2, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + strb r0, [r4] + b _080F2B38 + .align 2, 0 +_080F2ABC: .4byte gUnknown_2021C40 +_080F2AC0: .4byte gUnknown_2021C54 +_080F2AC4: .4byte gUnknown_82EA31C +_080F2AC8: .4byte gUnknown_2021C68 +_080F2ACC: .4byte gUnknown_2039CFC +_080F2AD0: + ldr r0, _080F2AF4 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2AF8 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F2AFC + adds r1, r5, #4 + bl sub_08008828 + ldrh r1, [r5, #0x10] + movs r0, #2 + bl sub_080F04D4 + b _080F2B1A + .align 2, 0 +_080F2AF4: .4byte gUnknown_2021C40 +_080F2AF8: .4byte gUnknown_82EA31C +_080F2AFC: .4byte gUnknown_2021C54 +_080F2B00: + ldr r0, _080F2B24 + ldrh r2, [r5, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2B28 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F2B2C + adds r1, r5, #4 + bl sub_08008828 +_080F2B1A: + ldr r1, _080F2B30 + movs r0, #0xb + strb r0, [r1] + b _080F2B38 + .align 2, 0 +_080F2B24: .4byte gUnknown_2021C40 +_080F2B28: .4byte gUnknown_82EA31C +_080F2B2C: .4byte gUnknown_2021C54 +_080F2B30: .4byte gUnknown_2039CFC +_080F2B34: + bl sub_080F5F74 +_080F2B38: + ldr r0, _080F2B4C + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F2B4C: .4byte gUnknown_8568C4C + thumb_func_end sub_080F28FC + + thumb_func_start sub_080F2B50 +sub_080F2B50: @ 0x080F2B50 + push {r4, r5, lr} + ldr r2, _080F2B80 + ldr r0, _080F2B84 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F2B88 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F2B8C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2B90 + ldrb r5, [r0] + cmp r5, #6 + bls _080F2B76 + b _080F2CA0 +_080F2B76: + lsls r0, r5, #2 + ldr r1, _080F2B94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2B80: .4byte gUnknown_3005AEC +_080F2B84: .4byte gUnknown_2037280 +_080F2B88: .4byte 0x000027CC +_080F2B8C: .4byte gUnknown_2037290 +_080F2B90: .4byte gUnknown_2039CFC +_080F2B94: .4byte _080F2B98 +_080F2B98: @ jump table + .4byte _080F2BB4 @ case 0 + .4byte _080F2BE8 @ case 1 + .4byte _080F2C3C @ case 2 + .4byte _080F2C3C @ case 3 + .4byte _080F2C80 @ case 4 + .4byte _080F2C80 @ case 5 + .4byte _080F2C9C @ case 6 +_080F2BB4: + ldr r0, _080F2BD8 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2BDC + ldrh r2, [r4, #0xc] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2BE0 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F2BE4 + movs r0, #1 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2BD8: .4byte gUnknown_2021C40 +_080F2BDC: .4byte gUnknown_2021C54 +_080F2BE0: .4byte gUnknown_82EA31C +_080F2BE4: .4byte gUnknown_2039CFC +_080F2BE8: + ldr r0, _080F2C1C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F2C20 + ldrb r1, [r4, #0x12] + movs r2, #0 + bl sub_08124578 + ldr r0, _080F2C24 + ldrh r2, [r4, #0xe] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2C28 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r0, [r4, #0x11] + cmp r0, #1 + bne _080F2C30 + ldr r1, _080F2C2C + movs r0, #3 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2C1C: .4byte gUnknown_2021C40 +_080F2C20: .4byte gUnknown_2021C54 +_080F2C24: .4byte gUnknown_2021C68 +_080F2C28: .4byte gUnknown_82EA31C +_080F2C2C: .4byte gUnknown_2039CFC +_080F2C30: + ldr r1, _080F2C38 + movs r0, #2 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2C38: .4byte gUnknown_2039CFC +_080F2C3C: + ldr r0, _080F2C6C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r1, [r4, #0x10] + movs r0, #1 + bl sub_080EFE44 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080F2C74 + ldr r1, _080F2C70 + movs r0, #5 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2C6C: .4byte gUnknown_2021C40 +_080F2C70: .4byte gUnknown_2039CFC +_080F2C74: + ldr r1, _080F2C7C + movs r0, #4 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2C7C: .4byte gUnknown_2039CFC +_080F2C80: + ldr r0, _080F2C94 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r1, _080F2C98 + movs r0, #6 + strb r0, [r1] + b _080F2CA0 + .align 2, 0 +_080F2C94: .4byte gUnknown_2021C40 +_080F2C98: .4byte gUnknown_2039CFC +_080F2C9C: + bl sub_080F5F74 +_080F2CA0: + ldr r0, _080F2CB4 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F2CB4: .4byte gUnknown_8568E40 + thumb_func_end sub_080F2B50 + + thumb_func_start sub_080F2CB8 +sub_080F2CB8: @ 0x080F2CB8 + push {r4, r5, r6, r7, lr} + ldr r2, _080F2CEC + ldr r0, _080F2CF0 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F2CF4 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F2CF8 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2CFC + ldrb r7, [r0] + adds r6, r0, #0 + cmp r7, #0x33 + bls _080F2CE0 + b _080F2ED0 +_080F2CE0: + lsls r0, r7, #2 + ldr r1, _080F2D00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2CEC: .4byte gUnknown_3005AEC +_080F2CF0: .4byte gUnknown_2037280 +_080F2CF4: .4byte 0x000027CC +_080F2CF8: .4byte gUnknown_2037290 +_080F2CFC: .4byte gUnknown_2039CFC +_080F2D00: .4byte _080F2D04 +_080F2D04: @ jump table + .4byte _080F2DD4 @ case 0 + .4byte _080F2E08 @ case 1 + .4byte _080F2E34 @ case 2 + .4byte _080F2E3A @ case 3 + .4byte _080F2E52 @ case 4 + .4byte _080F2E52 @ case 5 + .4byte _080F2E52 @ case 6 + .4byte _080F2E64 @ case 7 + .4byte _080F2ED0 @ case 8 + .4byte _080F2ED0 @ case 9 + .4byte _080F2ED0 @ case 10 + .4byte _080F2ED0 @ case 11 + .4byte _080F2ED0 @ case 12 + .4byte _080F2ED0 @ case 13 + .4byte _080F2ED0 @ case 14 + .4byte _080F2ED0 @ case 15 + .4byte _080F2ED0 @ case 16 + .4byte _080F2ED0 @ case 17 + .4byte _080F2ED0 @ case 18 + .4byte _080F2ED0 @ case 19 + .4byte _080F2ED0 @ case 20 + .4byte _080F2ED0 @ case 21 + .4byte _080F2ED0 @ case 22 + .4byte _080F2ED0 @ case 23 + .4byte _080F2ED0 @ case 24 + .4byte _080F2ED0 @ case 25 + .4byte _080F2ED0 @ case 26 + .4byte _080F2ED0 @ case 27 + .4byte _080F2ED0 @ case 28 + .4byte _080F2ED0 @ case 29 + .4byte _080F2ED0 @ case 30 + .4byte _080F2ED0 @ case 31 + .4byte _080F2ED0 @ case 32 + .4byte _080F2ED0 @ case 33 + .4byte _080F2ED0 @ case 34 + .4byte _080F2ED0 @ case 35 + .4byte _080F2ED0 @ case 36 + .4byte _080F2ED0 @ case 37 + .4byte _080F2ED0 @ case 38 + .4byte _080F2ED0 @ case 39 + .4byte _080F2ED0 @ case 40 + .4byte _080F2ED0 @ case 41 + .4byte _080F2ED0 @ case 42 + .4byte _080F2ED0 @ case 43 + .4byte _080F2ED0 @ case 44 + .4byte _080F2ED0 @ case 45 + .4byte _080F2ED0 @ case 46 + .4byte _080F2ED0 @ case 47 + .4byte _080F2ED0 @ case 48 + .4byte _080F2ED0 @ case 49 + .4byte _080F2E86 @ case 50 + .4byte _080F2EAC @ case 51 +_080F2DD4: + ldr r0, _080F2DF8 + adds r1, r5, #0 + adds r1, #0x10 + bl sub_080088B8 + ldr r0, _080F2DFC + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F2E00 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F2E04 + movs r0, #0x32 + strb r0, [r1] + b _080F2ED0 + .align 2, 0 +_080F2DF8: .4byte gUnknown_2021C40 +_080F2DFC: .4byte gUnknown_2021C54 +_080F2E00: .4byte gUnknown_82EA31C +_080F2E04: .4byte gUnknown_2039CFC +_080F2E08: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r2, r0, #1 + cmp r2, #1 + bne _080F2E28 + ldr r1, _080F2E24 + movs r0, #2 + strb r0, [r1] + b _080F2ED0 + .align 2, 0 +_080F2E24: .4byte gUnknown_2039CFC +_080F2E28: + ldr r1, _080F2E30 + adds r0, r2, #2 + strb r0, [r1] + b _080F2ED0 + .align 2, 0 +_080F2E30: .4byte gUnknown_2039CFC +_080F2E34: + movs r0, #0x33 + strb r0, [r6] + b _080F2ED0 +_080F2E3A: + bl sub_0806F050 + ldrb r4, [r6] + adds r4, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + adds r0, r0, r4 + strb r0, [r6] + b _080F2ED0 +_080F2E52: + adds r0, r5, #0 + bl sub_080F0648 + ldr r1, _080F2E60 + movs r0, #7 + strb r0, [r1] + b _080F2ED0 + .align 2, 0 +_080F2E60: .4byte gUnknown_2039CFC +_080F2E64: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1f + bl __umodsi3 + adds r0, #0x46 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #2 + adds r1, r2, #0 + bl sub_080EFE44 + bl sub_080F5F74 + b _080F2ED0 +_080F2E86: + ldr r4, _080F2EA4 + adds r1, r5, #4 + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_0811F1CC + adds r0, r4, #0 + bl sub_08097B74 + ldr r1, _080F2EA8 + movs r0, #1 + strb r0, [r1] + b _080F2EDC + .align 2, 0 +_080F2EA4: .4byte gUnknown_2021C7C +_080F2EA8: .4byte gUnknown_2039CFC +_080F2EAC: + ldr r4, _080F2EC8 + adds r1, r5, #4 + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_0811F1CC + adds r0, r4, #0 + bl sub_08097B74 + ldr r1, _080F2ECC + movs r0, #3 + strb r0, [r1] + b _080F2EDC + .align 2, 0 +_080F2EC8: .4byte gUnknown_2021C7C +_080F2ECC: .4byte gUnknown_2039CFC +_080F2ED0: + ldr r0, _080F2EE4 + lsls r1, r7, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 +_080F2EDC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F2EE4: .4byte gUnknown_8568BFC + thumb_func_end sub_080F2CB8 + + thumb_func_start sub_080F2EE8 +sub_080F2EE8: @ 0x080F2EE8 + push {r4, r5, r6, r7, lr} + ldr r2, _080F2F1C + ldr r0, _080F2F20 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F2F24 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F2F28 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F2F2C + ldrb r6, [r0] + adds r7, r0, #0 + cmp r6, #0x32 + bls _080F2F10 + b _080F3068 +_080F2F10: + lsls r0, r6, #2 + ldr r1, _080F2F30 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F2F1C: .4byte gUnknown_3005AEC +_080F2F20: .4byte gUnknown_2037280 +_080F2F24: .4byte 0x000027CC +_080F2F28: .4byte gUnknown_2037290 +_080F2F2C: .4byte gUnknown_2039CFC +_080F2F30: .4byte _080F2F34 +_080F2F34: @ jump table + .4byte _080F3000 @ case 0 + .4byte _080F3020 @ case 1 + .4byte _080F3038 @ case 2 + .4byte _080F3038 @ case 3 + .4byte _080F3038 @ case 4 + .4byte _080F303E @ case 5 + .4byte _080F3068 @ case 6 + .4byte _080F3068 @ case 7 + .4byte _080F3068 @ case 8 + .4byte _080F3068 @ case 9 + .4byte _080F3068 @ case 10 + .4byte _080F3068 @ case 11 + .4byte _080F3068 @ case 12 + .4byte _080F3068 @ case 13 + .4byte _080F3068 @ case 14 + .4byte _080F3068 @ case 15 + .4byte _080F3068 @ case 16 + .4byte _080F3068 @ case 17 + .4byte _080F3068 @ case 18 + .4byte _080F3068 @ case 19 + .4byte _080F3068 @ case 20 + .4byte _080F3068 @ case 21 + .4byte _080F3068 @ case 22 + .4byte _080F3068 @ case 23 + .4byte _080F3068 @ case 24 + .4byte _080F3068 @ case 25 + .4byte _080F3068 @ case 26 + .4byte _080F3068 @ case 27 + .4byte _080F3068 @ case 28 + .4byte _080F3068 @ case 29 + .4byte _080F3068 @ case 30 + .4byte _080F3068 @ case 31 + .4byte _080F3068 @ case 32 + .4byte _080F3068 @ case 33 + .4byte _080F3068 @ case 34 + .4byte _080F3068 @ case 35 + .4byte _080F3068 @ case 36 + .4byte _080F3068 @ case 37 + .4byte _080F3068 @ case 38 + .4byte _080F3068 @ case 39 + .4byte _080F3068 @ case 40 + .4byte _080F3068 @ case 41 + .4byte _080F3068 @ case 42 + .4byte _080F3068 @ case 43 + .4byte _080F3068 @ case 44 + .4byte _080F3068 @ case 45 + .4byte _080F3068 @ case 46 + .4byte _080F3068 @ case 47 + .4byte _080F3068 @ case 48 + .4byte _080F3068 @ case 49 + .4byte _080F3044 @ case 50 +_080F3000: + ldr r0, _080F3018 + adds r1, r5, #0 + adds r1, #0x10 + bl sub_080088B8 + adds r0, r5, #0 + bl sub_080F0648 + ldr r1, _080F301C + movs r0, #0x32 + strb r0, [r1] + b _080F3068 + .align 2, 0 +_080F3018: .4byte gUnknown_2021C40 +_080F301C: .4byte gUnknown_2039CFC +_080F3020: + bl sub_0806F050 + ldrb r4, [r7] + adds r4, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + adds r0, r0, r4 + strb r0, [r7] + b _080F3068 +_080F3038: + movs r0, #5 + strb r0, [r7] + b _080F3068 +_080F303E: + bl sub_080F5F74 + b _080F3068 +_080F3044: + ldr r4, _080F3060 + adds r1, r5, #4 + adds r0, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_0811F1CC + adds r0, r4, #0 + bl sub_08097B74 + ldr r1, _080F3064 + movs r0, #1 + strb r0, [r1] + b _080F3074 + .align 2, 0 +_080F3060: .4byte gUnknown_2021C7C +_080F3064: .4byte gUnknown_2039CFC +_080F3068: + ldr r0, _080F307C + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 +_080F3074: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F307C: .4byte gUnknown_8568C1C + thumb_func_end sub_080F2EE8 + + thumb_func_start sub_080F3080 +sub_080F3080: @ 0x080F3080 + push {r4, r5, r6, lr} + ldr r2, _080F30B0 + ldr r0, _080F30B4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F30B8 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F30BC + movs r0, #0 + strh r0, [r1] + ldr r6, _080F30C0 + ldrb r5, [r6] + cmp r5, #3 + bgt _080F30C4 + cmp r5, #1 + bge _080F3108 + cmp r5, #0 + beq _080F30CA + b _080F3154 + .align 2, 0 +_080F30B0: .4byte gUnknown_3005AEC +_080F30B4: .4byte gUnknown_2037280 +_080F30B8: .4byte 0x000027CC +_080F30BC: .4byte gUnknown_2037290 +_080F30C0: .4byte gUnknown_2039CFC +_080F30C4: + cmp r5, #4 + beq _080F3140 + b _080F3154 +_080F30CA: + ldr r0, _080F30F8 + adds r1, r4, #5 + bl sub_080088B8 + ldr r0, _080F30FC + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3100 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F3104 + adds r1, r4, #0 + adds r1, #0x10 + bl sub_08008828 + ldrb r0, [r4, #4] + lsrs r0, r0, #4 + adds r0, #1 + strb r0, [r6] + b _080F3154 + .align 2, 0 +_080F30F8: .4byte gUnknown_2021C40 +_080F30FC: .4byte gUnknown_2021C54 +_080F3100: .4byte gUnknown_82EA31C +_080F3104: .4byte gUnknown_2021C68 +_080F3108: + ldr r0, _080F3130 + adds r1, r4, #5 + bl sub_080088B8 + ldr r0, _080F3134 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3138 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F313C + ldrh r1, [r4, #0x1c] + bl sub_0811F180 + movs r0, #4 + strb r0, [r6] + b _080F3154 + .align 2, 0 +_080F3130: .4byte gUnknown_2021C40 +_080F3134: .4byte gUnknown_2021C54 +_080F3138: .4byte gUnknown_82EA31C +_080F313C: .4byte gUnknown_2021C68 +_080F3140: + ldr r0, _080F3168 + adds r1, r4, #5 + bl sub_080088B8 + ldr r0, _080F316C + ldrh r1, [r4, #0x1e] + bl sub_0811F180 + bl sub_080F5F74 +_080F3154: + ldr r0, _080F3170 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F3168: .4byte gUnknown_2021C40 +_080F316C: .4byte gUnknown_2021C68 +_080F3170: .4byte gUnknown_8568C34 + thumb_func_end sub_080F3080 + + thumb_func_start sub_080F3174 +sub_080F3174: @ 0x080F3174 + bx lr + .align 2, 0 + thumb_func_end sub_080F3174 + + thumb_func_start sub_080F3178 +sub_080F3178: @ 0x080F3178 + push {r4, lr} + ldr r2, _080F31C8 + ldr r0, _080F31CC + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F31D0 + adds r0, r0, r1 + ldr r4, [r2] + adds r4, r4, r0 + ldr r0, _080F31D4 + ldrb r1, [r4, #0x10] + movs r2, #0 + bl sub_08124578 + ldr r0, _080F31D8 + ldrh r2, [r4, #0xc] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F31DC + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 + bl sub_080EDF64 + ldr r1, _080F31E0 + ldr r0, _080F31E4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F31C8: .4byte gUnknown_3005AEC +_080F31CC: .4byte gUnknown_2037280 +_080F31D0: .4byte 0x000027CC +_080F31D4: .4byte gUnknown_2021C40 +_080F31D8: .4byte gUnknown_2021C54 +_080F31DC: .4byte gUnknown_82EA31C +_080F31E0: .4byte gUnknown_8568C48 +_080F31E4: .4byte gUnknown_2039CFC + thumb_func_end sub_080F3178 + + thumb_func_start sub_080F31E8 +sub_080F31E8: @ 0x080F31E8 + push {r4, r5, r6, lr} + ldr r2, _080F321C + ldr r0, _080F3220 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F3224 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F3228 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F322C + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0x20 + bls _080F3212 + bl _080F39A8 +_080F3212: + lsls r0, r6, #2 + ldr r1, _080F3230 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F321C: .4byte gUnknown_3005AEC +_080F3220: .4byte gUnknown_2037280 +_080F3224: .4byte 0x000027CC +_080F3228: .4byte gUnknown_2037290 +_080F322C: .4byte gUnknown_2039CFC +_080F3230: .4byte _080F3234 +_080F3234: @ jump table + .4byte _080F32B8 @ case 0 + .4byte _080F33A8 @ case 1 + .4byte _080F33F6 @ case 2 + .4byte _080F3420 @ case 3 + .4byte _080F3448 @ case 4 + .4byte _080F3584 @ case 5 + .4byte _080F359C @ case 6 + .4byte _080F35B4 @ case 7 + .4byte _080F35CC @ case 8 + .4byte _080F364C @ case 9 + .4byte _080F3664 @ case 10 + .4byte _080F367C @ case 11 + .4byte _080F3694 @ case 12 + .4byte _080F36AC @ case 13 + .4byte _080F36C4 @ case 14 + .4byte _080F3744 @ case 15 + .4byte _080F375C @ case 16 + .4byte _080F3774 @ case 17 + .4byte _080F378C @ case 18 + .4byte _080F37A4 @ case 19 + .4byte _080F37BC @ case 20 + .4byte _080F37D4 @ case 21 + .4byte _080F37EC @ case 22 + .4byte _080F3828 @ case 23 + .4byte _080F38FC @ case 24 + .4byte _080F3914 @ case 25 + .4byte _080F3970 @ case 26 + .4byte _080F3970 @ case 27 + .4byte _080F3938 @ case 28 + .4byte _080F393E @ case 29 + .4byte _080F3970 @ case 30 + .4byte _080F3970 @ case 31 + .4byte _080F3988 @ case 32 +_080F32B8: + ldrb r0, [r5, #0x1c] + cmp r0, #4 + bhi _080F3338 + lsls r0, r0, #2 + ldr r1, _080F32C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F32C8: .4byte _080F32CC +_080F32CC: @ jump table + .4byte _080F32E0 @ case 0 + .4byte _080F32F4 @ case 1 + .4byte _080F3308 @ case 2 + .4byte _080F331C @ case 3 + .4byte _080F3330 @ case 4 +_080F32E0: + ldr r0, _080F32EC + ldr r1, _080F32F0 + bl sub_080088B8 + b _080F3338 + .align 2, 0 +_080F32EC: .4byte gUnknown_2021C40 +_080F32F0: .4byte gUnknown_85CAC84 +_080F32F4: + ldr r0, _080F3300 + ldr r1, _080F3304 + bl sub_080088B8 + b _080F3338 + .align 2, 0 +_080F3300: .4byte gUnknown_2021C40 +_080F3304: .4byte gUnknown_85CAC8A +_080F3308: + ldr r0, _080F3314 + ldr r1, _080F3318 + bl sub_080088B8 + b _080F3338 + .align 2, 0 +_080F3314: .4byte gUnknown_2021C40 +_080F3318: .4byte gUnknown_85CAC90 +_080F331C: + ldr r0, _080F3328 + ldr r1, _080F332C + bl sub_080088B8 + b _080F3338 + .align 2, 0 +_080F3328: .4byte gUnknown_2021C40 +_080F332C: .4byte gUnknown_85CAC95 +_080F3330: + ldr r0, _080F3368 + ldr r1, _080F336C + bl sub_080088B8 +_080F3338: + ldr r0, _080F3370 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3374 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F3378 + adds r1, r5, #0 + adds r1, #0x14 + bl sub_080088B8 + ldrb r0, [r5, #0xd] + ldrb r1, [r5, #0xe] + cmp r0, r1 + bne _080F338C + cmp r0, #0 + bne _080F3380 + ldr r1, _080F337C + movs r0, #1 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3368: .4byte gUnknown_2021C40 +_080F336C: .4byte gUnknown_85CAC9A +_080F3370: .4byte gUnknown_2021C54 +_080F3374: .4byte gUnknown_82EA31C +_080F3378: .4byte gUnknown_2021C68 +_080F337C: .4byte gUnknown_2039CFC +_080F3380: + ldr r1, _080F3388 + movs r0, #3 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3388: .4byte gUnknown_2039CFC +_080F338C: + cmp r0, r1 + bls _080F339C + ldr r1, _080F3398 + movs r0, #2 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3398: .4byte gUnknown_2039CFC +_080F339C: + ldr r1, _080F33A4 + movs r0, #4 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F33A4: .4byte gUnknown_2039CFC +_080F33A8: + ldr r0, _080F33D4 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F33D8 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r5, #0xf] + cmp r1, #8 + bne _080F33C2 + b _080F3548 +_080F33C2: + cmp r1, #8 + bgt _080F33DC +_080F33C6: + cmp r1, #2 + bne _080F33CC + b _080F3530 +_080F33CC: + cmp r1, #2 + bgt _080F33D2 + b _080F34EC +_080F33D2: + b _080F3504 + .align 2, 0 +_080F33D4: .4byte gUnknown_2021C54 +_080F33D8: .4byte gUnknown_82EA31C +_080F33DC: + cmp r1, #0x20 + bne _080F33E2 + b _080F3560 +_080F33E2: + cmp r1, #0x20 + bgt _080F33E8 + b _080F3512 +_080F33E8: + cmp r1, #0x40 + bne _080F33EE + b _080F356C +_080F33EE: + cmp r1, #0x80 + beq _080F33F4 + b _080F39A8 +_080F33F4: + b _080F3578 +_080F33F6: + ldr r0, _080F3418 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F341C + adds r1, r1, r2 +_080F3404: + bl sub_080088B8 + ldrb r1, [r5, #0xf] + cmp r1, #8 + bne _080F3410 + b _080F3548 +_080F3410: + cmp r1, #8 + ble _080F33C6 + b _080F33DC + .align 2, 0 +_080F3418: .4byte gUnknown_2021C54 +_080F341C: .4byte gUnknown_82EA31C +_080F3420: + ldr r0, _080F343C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3440 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F3444 + adds r1, r5, #0 + adds r1, #0x14 + b _080F3404 + .align 2, 0 +_080F343C: .4byte gUnknown_2021C54 +_080F3440: .4byte gUnknown_82EA31C +_080F3444: .4byte gUnknown_2021C68 +_080F3448: + ldrb r0, [r5, #0x1c] + cmp r0, #4 + bhi _080F34C8 + lsls r0, r0, #2 + ldr r1, _080F3458 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3458: .4byte _080F345C +_080F345C: @ jump table + .4byte _080F3470 @ case 0 + .4byte _080F3484 @ case 1 + .4byte _080F3498 @ case 2 + .4byte _080F34AC @ case 3 + .4byte _080F34C0 @ case 4 +_080F3470: + ldr r0, _080F347C + ldr r1, _080F3480 + bl sub_080088B8 + b _080F34C8 + .align 2, 0 +_080F347C: .4byte gUnknown_2021C40 +_080F3480: .4byte gUnknown_85CAC84 +_080F3484: + ldr r0, _080F3490 + ldr r1, _080F3494 + bl sub_080088B8 + b _080F34C8 + .align 2, 0 +_080F3490: .4byte gUnknown_2021C40 +_080F3494: .4byte gUnknown_85CAC8A +_080F3498: + ldr r0, _080F34A4 + ldr r1, _080F34A8 + bl sub_080088B8 + b _080F34C8 + .align 2, 0 +_080F34A4: .4byte gUnknown_2021C40 +_080F34A8: .4byte gUnknown_85CAC90 +_080F34AC: + ldr r0, _080F34B8 + ldr r1, _080F34BC + bl sub_080088B8 + b _080F34C8 + .align 2, 0 +_080F34B8: .4byte gUnknown_2021C40 +_080F34BC: .4byte gUnknown_85CAC95 +_080F34C0: + ldr r0, _080F34F4 + ldr r1, _080F34F8 + bl sub_080088B8 +_080F34C8: + ldr r0, _080F34FC + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3500 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r5, #0xf] + cmp r1, #8 + beq _080F3548 + cmp r1, #8 + bgt _080F350A + cmp r1, #2 + beq _080F3530 + cmp r1, #2 + bgt _080F3504 +_080F34EC: + cmp r1, #1 + beq _080F3522 + b _080F39A8 + .align 2, 0 +_080F34F4: .4byte gUnknown_2021C40 +_080F34F8: .4byte gUnknown_85CAC9A +_080F34FC: .4byte gUnknown_2021C54 +_080F3500: .4byte gUnknown_82EA31C +_080F3504: + cmp r1, #4 + beq _080F353C + b _080F39A8 +_080F350A: + cmp r1, #0x20 + beq _080F3560 + cmp r1, #0x20 + bgt _080F3518 +_080F3512: + cmp r1, #0x10 + beq _080F3554 + b _080F39A8 +_080F3518: + cmp r1, #0x40 + beq _080F356C + cmp r1, #0x80 + beq _080F3578 + b _080F39A8 +_080F3522: + ldr r1, _080F352C + movs r0, #8 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F352C: .4byte gUnknown_2039CFC +_080F3530: + ldr r1, _080F3538 + movs r0, #5 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3538: .4byte gUnknown_2039CFC +_080F353C: + ldr r1, _080F3544 + movs r0, #0xe + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3544: .4byte gUnknown_2039CFC +_080F3548: + ldr r1, _080F3550 + movs r0, #7 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3550: .4byte gUnknown_2039CFC +_080F3554: + ldr r1, _080F355C + movs r0, #6 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F355C: .4byte gUnknown_2039CFC +_080F3560: + ldr r1, _080F3568 + movs r0, #0x14 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3568: .4byte gUnknown_2039CFC +_080F356C: + ldr r1, _080F3574 + movs r0, #0x15 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3574: .4byte gUnknown_2039CFC +_080F3578: + ldr r1, _080F3580 + movs r0, #0x16 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3580: .4byte gUnknown_2039CFC +_080F3584: + ldr r0, _080F3594 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3598 + b _080F3806 + .align 2, 0 +_080F3594: .4byte gUnknown_2021C54 +_080F3598: .4byte gUnknown_82EA31C +_080F359C: + ldr r0, _080F35AC + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F35B0 + b _080F3806 + .align 2, 0 +_080F35AC: .4byte gUnknown_2021C54 +_080F35B0: .4byte gUnknown_82EA31C +_080F35B4: + ldr r0, _080F35C4 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F35C8 + b _080F3806 + .align 2, 0 +_080F35C4: .4byte gUnknown_2021C54 +_080F35C8: .4byte gUnknown_82EA31C +_080F35CC: + ldr r0, _080F35F0 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F35F4 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r0, [r5, #0x1c] + cmp r0, #4 + bls _080F35E6 + b _080F39A8 +_080F35E6: + lsls r0, r0, #2 + ldr r1, _080F35F8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F35F0: .4byte gUnknown_2021C54 +_080F35F4: .4byte gUnknown_82EA31C +_080F35F8: .4byte _080F35FC +_080F35FC: @ jump table + .4byte _080F3610 @ case 0 + .4byte _080F361C @ case 1 + .4byte _080F3628 @ case 2 + .4byte _080F3634 @ case 3 + .4byte _080F3640 @ case 4 +_080F3610: + ldr r1, _080F3618 + movs r0, #9 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3618: .4byte gUnknown_2039CFC +_080F361C: + ldr r1, _080F3624 + movs r0, #0xa + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3624: .4byte gUnknown_2039CFC +_080F3628: + ldr r1, _080F3630 + movs r0, #0xb + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3630: .4byte gUnknown_2039CFC +_080F3634: + ldr r1, _080F363C + movs r0, #0xc + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F363C: .4byte gUnknown_2039CFC +_080F3640: + ldr r1, _080F3648 + movs r0, #0xd + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3648: .4byte gUnknown_2039CFC +_080F364C: + ldr r0, _080F365C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3660 + b _080F3806 + .align 2, 0 +_080F365C: .4byte gUnknown_2021C54 +_080F3660: .4byte gUnknown_82EA31C +_080F3664: + ldr r0, _080F3674 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3678 + b _080F3806 + .align 2, 0 +_080F3674: .4byte gUnknown_2021C54 +_080F3678: .4byte gUnknown_82EA31C +_080F367C: + ldr r0, _080F368C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3690 + b _080F3806 + .align 2, 0 +_080F368C: .4byte gUnknown_2021C54 +_080F3690: .4byte gUnknown_82EA31C +_080F3694: + ldr r0, _080F36A4 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F36A8 + b _080F3806 + .align 2, 0 +_080F36A4: .4byte gUnknown_2021C54 +_080F36A8: .4byte gUnknown_82EA31C +_080F36AC: + ldr r0, _080F36BC + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F36C0 + b _080F3806 + .align 2, 0 +_080F36BC: .4byte gUnknown_2021C54 +_080F36C0: .4byte gUnknown_82EA31C +_080F36C4: + ldr r0, _080F36E8 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F36EC + adds r1, r1, r2 + bl sub_080088B8 + ldrb r0, [r5, #0x1c] + cmp r0, #4 + bls _080F36DE + b _080F39A8 +_080F36DE: + lsls r0, r0, #2 + ldr r1, _080F36F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F36E8: .4byte gUnknown_2021C54 +_080F36EC: .4byte gUnknown_82EA31C +_080F36F0: .4byte _080F36F4 +_080F36F4: @ jump table + .4byte _080F3708 @ case 0 + .4byte _080F3714 @ case 1 + .4byte _080F3720 @ case 2 + .4byte _080F372C @ case 3 + .4byte _080F3738 @ case 4 +_080F3708: + ldr r1, _080F3710 + movs r0, #0xf + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3710: .4byte gUnknown_2039CFC +_080F3714: + ldr r1, _080F371C + movs r0, #0x10 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F371C: .4byte gUnknown_2039CFC +_080F3720: + ldr r1, _080F3728 + movs r0, #0x11 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3728: .4byte gUnknown_2039CFC +_080F372C: + ldr r1, _080F3734 + movs r0, #0x12 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3734: .4byte gUnknown_2039CFC +_080F3738: + ldr r1, _080F3740 + movs r0, #0x13 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3740: .4byte gUnknown_2039CFC +_080F3744: + ldr r0, _080F3754 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3758 + b _080F3806 + .align 2, 0 +_080F3754: .4byte gUnknown_2021C54 +_080F3758: .4byte gUnknown_82EA31C +_080F375C: + ldr r0, _080F376C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3770 + b _080F3806 + .align 2, 0 +_080F376C: .4byte gUnknown_2021C54 +_080F3770: .4byte gUnknown_82EA31C +_080F3774: + ldr r0, _080F3784 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3788 + b _080F3806 + .align 2, 0 +_080F3784: .4byte gUnknown_2021C54 +_080F3788: .4byte gUnknown_82EA31C +_080F378C: + ldr r0, _080F379C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F37A0 + b _080F3806 + .align 2, 0 +_080F379C: .4byte gUnknown_2021C54 +_080F37A0: .4byte gUnknown_82EA31C +_080F37A4: + ldr r0, _080F37B4 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F37B8 + b _080F3806 + .align 2, 0 +_080F37B4: .4byte gUnknown_2021C54 +_080F37B8: .4byte gUnknown_82EA31C +_080F37BC: + ldr r0, _080F37CC + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F37D0 + b _080F3806 + .align 2, 0 +_080F37CC: .4byte gUnknown_2021C54 +_080F37D0: .4byte gUnknown_82EA31C +_080F37D4: + ldr r0, _080F37E4 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F37E8 + b _080F3806 + .align 2, 0 +_080F37E4: .4byte gUnknown_2021C54 +_080F37E8: .4byte gUnknown_82EA31C +_080F37EC: + ldr r0, _080F3814 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3818 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F381C + ldrh r1, [r5, #0x10] + lsls r1, r1, #3 + ldr r2, _080F3820 +_080F3806: + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F3824 + movs r0, #0x17 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3814: .4byte gUnknown_2021C54 +_080F3818: .4byte gUnknown_82EA31C +_080F381C: .4byte gUnknown_2021C68 +_080F3820: .4byte gUnknown_82EACC4 +_080F3824: .4byte gUnknown_2039CFC +_080F3828: + ldr r0, _080F386C + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F3870 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F3874 + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F3878 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldrb r0, [r5, #0xc] + cmp r0, #8 + beq _080F38C0 + cmp r0, #8 + bgt _080F3882 + cmp r0, #2 + beq _080F38A8 + cmp r0, #2 + bgt _080F387C + cmp r0, #1 + beq _080F389A + b _080F39A8 + .align 2, 0 +_080F386C: .4byte gUnknown_2021C40 +_080F3870: .4byte gUnknown_82EA31C +_080F3874: .4byte gUnknown_2021C54 +_080F3878: .4byte gUnknown_2021C68 +_080F387C: + cmp r0, #4 + beq _080F38B4 + b _080F39A8 +_080F3882: + cmp r0, #0x20 + beq _080F38D8 + cmp r0, #0x20 + bgt _080F3890 + cmp r0, #0x10 + beq _080F38CC + b _080F39A8 +_080F3890: + cmp r0, #0x40 + beq _080F38E4 + cmp r0, #0x80 + beq _080F38F0 + b _080F39A8 +_080F389A: + ldr r1, _080F38A4 + movs r0, #0x1f + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38A4: .4byte gUnknown_2039CFC +_080F38A8: + ldr r1, _080F38B0 + movs r0, #0x1e + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38B0: .4byte gUnknown_2039CFC +_080F38B4: + ldr r1, _080F38BC + movs r0, #0x1d + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38BC: .4byte gUnknown_2039CFC +_080F38C0: + ldr r1, _080F38C8 + movs r0, #0x1c + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38C8: .4byte gUnknown_2039CFC +_080F38CC: + ldr r1, _080F38D4 + movs r0, #0x1b + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38D4: .4byte gUnknown_2039CFC +_080F38D8: + ldr r1, _080F38E0 + movs r0, #0x1a + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38E0: .4byte gUnknown_2039CFC +_080F38E4: + ldr r1, _080F38EC + movs r0, #0x19 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38EC: .4byte gUnknown_2039CFC +_080F38F0: + ldr r1, _080F38F8 + movs r0, #0x18 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F38F8: .4byte gUnknown_2039CFC +_080F38FC: + ldr r0, _080F390C + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3910 + adds r1, r1, r2 + b _080F3974 + .align 2, 0 +_080F390C: .4byte gUnknown_2021C40 +_080F3910: .4byte gUnknown_82EA31C +_080F3914: + ldr r0, _080F392C + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F3930 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3934 + adds r1, r1, r2 + b _080F3974 + .align 2, 0 +_080F392C: .4byte gUnknown_2021C40 +_080F3930: .4byte gUnknown_2021C54 +_080F3934: .4byte gUnknown_82EA31C +_080F3938: + movs r0, #0x20 + strb r0, [r2] + b _080F39A8 +_080F393E: + ldr r0, _080F3960 + adds r1, r5, #0 + adds r1, #0x14 + bl sub_080088B8 + ldr r0, _080F3964 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3968 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F396C + b _080F3972 + .align 2, 0 +_080F3960: .4byte gUnknown_2021C40 +_080F3964: .4byte gUnknown_2021C54 +_080F3968: .4byte gUnknown_82EA31C +_080F396C: .4byte gUnknown_2021C68 +_080F3970: + ldr r0, _080F3980 +_080F3972: + adds r1, r5, #4 +_080F3974: + bl sub_080088B8 + ldr r1, _080F3984 + movs r0, #0x20 + strb r0, [r1] + b _080F39A8 + .align 2, 0 +_080F3980: .4byte gUnknown_2021C40 +_080F3984: .4byte gUnknown_2039CFC +_080F3988: + ldr r0, _080F39BC + adds r1, r5, #0 + adds r1, #0x14 + bl sub_080088B8 + ldr r0, _080F39C0 + ldrh r2, [r5, #0x12] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F39C4 + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 +_080F39A8: + ldr r0, _080F39C8 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F39BC: .4byte gUnknown_2021C40 +_080F39C0: .4byte gUnknown_2021C54 +_080F39C4: .4byte gUnknown_82EA31C +_080F39C8: .4byte gUnknown_8568D28 + thumb_func_end sub_080F31E8 + + thumb_func_start sub_080F39CC +sub_080F39CC: @ 0x080F39CC + push {r4, r5, lr} + ldr r2, _080F3A00 + ldr r0, _080F3A04 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F3A08 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F3A0C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F3A10 + ldrb r5, [r0] + adds r2, r0, #0 + cmp r5, #7 + bls _080F39F4 + b _080F3BD8 +_080F39F4: + lsls r0, r5, #2 + ldr r1, _080F3A14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3A00: .4byte gUnknown_3005AEC +_080F3A04: .4byte gUnknown_2037280 +_080F3A08: .4byte 0x000027CC +_080F3A0C: .4byte gUnknown_2037290 +_080F3A10: .4byte gUnknown_2039CFC +_080F3A14: .4byte _080F3A18 +_080F3A18: @ jump table + .4byte _080F3A38 @ case 0 + .4byte _080F3A56 @ case 1 + .4byte _080F3AA4 @ case 2 + .4byte _080F3AEC @ case 3 + .4byte _080F3B20 @ case 4 + .4byte _080F3B40 @ case 5 + .4byte _080F3B68 @ case 6 + .4byte _080F3BB0 @ case 7 +_080F3A38: + ldrb r1, [r4, #0x18] + cmp r1, #0 + bge _080F3A40 + b _080F3BD8 +_080F3A40: + cmp r1, #1 + ble _080F3A4A + cmp r1, #2 + beq _080F3A50 + b _080F3BD8 +_080F3A4A: + movs r0, #1 + strb r0, [r2] + b _080F3BD8 +_080F3A50: + movs r0, #5 + strb r0, [r2] + b _080F3BD8 +_080F3A56: + ldr r0, _080F3A78 + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3A7C + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _080F3A88 + ldr r0, _080F3A80 + ldr r1, _080F3A84 + bl sub_080088B8 + b _080F3A90 + .align 2, 0 +_080F3A78: .4byte gUnknown_2021C40 +_080F3A7C: .4byte gUnknown_2021C54 +_080F3A80: .4byte gUnknown_2021C68 +_080F3A84: .4byte gUnknown_85CBFE3 +_080F3A88: + ldr r0, _080F3A98 + ldr r1, _080F3A9C + bl sub_080088B8 +_080F3A90: + ldr r1, _080F3AA0 + movs r0, #2 + strb r0, [r1] + b _080F3BD8 + .align 2, 0 +_080F3A98: .4byte gUnknown_2021C68 +_080F3A9C: .4byte gUnknown_85CBFE8 +_080F3AA0: .4byte gUnknown_2039CFC +_080F3AA4: + ldr r0, _080F3AD4 + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3AD8 + ldrh r2, [r4, #0x16] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3ADC + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F3AE0 + ldrh r1, [r4, #0x14] + lsls r1, r1, #3 + ldr r2, _080F3AE4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F3AE8 + movs r0, #3 + strb r0, [r1] + b _080F3BD8 + .align 2, 0 +_080F3AD4: .4byte gUnknown_2021C40 +_080F3AD8: .4byte gUnknown_2021C54 +_080F3ADC: .4byte gUnknown_82EA31C +_080F3AE0: .4byte gUnknown_2021C68 +_080F3AE4: .4byte gUnknown_82EACC4 +_080F3AE8: .4byte gUnknown_2039CFC +_080F3AEC: + ldr r0, _080F3B10 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F3B14 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3B18 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F3B1C + movs r0, #4 + strb r0, [r1] + b _080F3BD8 + .align 2, 0 +_080F3B10: .4byte gUnknown_2021C40 +_080F3B14: .4byte gUnknown_2021C54 +_080F3B18: .4byte gUnknown_82EA31C +_080F3B1C: .4byte gUnknown_2039CFC +_080F3B20: + ldr r0, _080F3B38 + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3B3C + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + bl sub_080F5F74 + b _080F3BD8 + .align 2, 0 +_080F3B38: .4byte gUnknown_2021C40 +_080F3B3C: .4byte gUnknown_2021C54 +_080F3B40: + ldr r0, _080F3B5C + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3B60 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r1, _080F3B64 + movs r0, #6 + strb r0, [r1] + b _080F3BD8 + .align 2, 0 +_080F3B5C: .4byte gUnknown_2021C40 +_080F3B60: .4byte gUnknown_2021C54 +_080F3B64: .4byte gUnknown_2039CFC +_080F3B68: + ldr r0, _080F3B98 + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3B9C + ldrh r2, [r4, #0x16] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3BA0 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F3BA4 + ldrh r1, [r4, #0x14] + lsls r1, r1, #3 + ldr r2, _080F3BA8 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F3BAC + movs r0, #7 + strb r0, [r1] + b _080F3BD8 + .align 2, 0 +_080F3B98: .4byte gUnknown_2021C40 +_080F3B9C: .4byte gUnknown_2021C54 +_080F3BA0: .4byte gUnknown_82EA31C +_080F3BA4: .4byte gUnknown_2021C68 +_080F3BA8: .4byte gUnknown_82EACC4 +_080F3BAC: .4byte gUnknown_2039CFC +_080F3BB0: + ldr r0, _080F3BEC + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3BF0 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F3BF4 + ldrh r2, [r4, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F3BF8 + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 +_080F3BD8: + ldr r0, _080F3BFC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F3BEC: .4byte gUnknown_2021C40 +_080F3BF0: .4byte gUnknown_2021C54 +_080F3BF4: .4byte gUnknown_2021C68 +_080F3BF8: .4byte gUnknown_82EA31C +_080F3BFC: .4byte gUnknown_8568DAC + thumb_func_end sub_080F39CC + + thumb_func_start sub_080F3C00 +sub_080F3C00: @ 0x080F3C00 + push {r4, r5, lr} + ldr r2, _080F3C30 + ldr r0, _080F3C34 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F3C38 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F3C3C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F3C40 + ldrb r5, [r0] + cmp r5, #5 + bls _080F3C26 + b _080F3E94 +_080F3C26: + lsls r0, r5, #2 + ldr r1, _080F3C44 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3C30: .4byte gUnknown_3005AEC +_080F3C34: .4byte gUnknown_2037280 +_080F3C38: .4byte 0x000027CC +_080F3C3C: .4byte gUnknown_2037290 +_080F3C40: .4byte gUnknown_2039CFC +_080F3C44: .4byte _080F3C48 +_080F3C48: @ jump table + .4byte _080F3C60 @ case 0 + .4byte _080F3C8C @ case 1 + .4byte _080F3D74 @ case 2 + .4byte _080F3D80 @ case 3 + .4byte _080F3E68 @ case 4 + .4byte _080F3E90 @ case 5 +_080F3C60: + ldr r0, _080F3C78 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldrb r0, [r4, #2] + cmp r0, #0x14 + bls _080F3C80 + ldr r1, _080F3C7C + movs r0, #1 + strb r0, [r1] + b _080F3E94 + .align 2, 0 +_080F3C78: .4byte gUnknown_2021C40 +_080F3C7C: .4byte gUnknown_2039CFC +_080F3C80: + ldr r1, _080F3C88 + movs r0, #3 + strb r0, [r1] + b _080F3E94 + .align 2, 0 +_080F3C88: .4byte gUnknown_2039CFC +_080F3C8C: + ldrb r0, [r4, #3] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #4 + bhi _080F3D10 + lsls r0, r0, #2 + ldr r1, _080F3CA0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3CA0: .4byte _080F3CA4 +_080F3CA4: @ jump table + .4byte _080F3CB8 @ case 0 + .4byte _080F3CCC @ case 1 + .4byte _080F3CE0 @ case 2 + .4byte _080F3CF4 @ case 3 + .4byte _080F3D08 @ case 4 +_080F3CB8: + ldr r0, _080F3CC4 + ldr r1, _080F3CC8 + bl sub_080088B8 + b _080F3D10 + .align 2, 0 +_080F3CC4: .4byte gUnknown_2021C40 +_080F3CC8: .4byte gUnknown_85CBFD3 +_080F3CCC: + ldr r0, _080F3CD8 + ldr r1, _080F3CDC + bl sub_080088B8 + b _080F3D10 + .align 2, 0 +_080F3CD8: .4byte gUnknown_2021C40 +_080F3CDC: .4byte gUnknown_85CBFD6 +_080F3CE0: + ldr r0, _080F3CEC + ldr r1, _080F3CF0 + bl sub_080088B8 + b _080F3D10 + .align 2, 0 +_080F3CEC: .4byte gUnknown_2021C40 +_080F3CF0: .4byte gUnknown_85CBFD9 +_080F3CF4: + ldr r0, _080F3D00 + ldr r1, _080F3D04 + bl sub_080088B8 + b _080F3D10 + .align 2, 0 +_080F3D00: .4byte gUnknown_2021C40 +_080F3D04: .4byte gUnknown_85CBFDC +_080F3D08: + ldr r0, _080F3D20 + ldr r1, _080F3D24 + bl sub_080088B8 +_080F3D10: + ldrb r0, [r4, #2] + cmp r0, #0x18 + bls _080F3D30 + ldr r0, _080F3D28 + ldr r1, _080F3D2C + bl sub_080088B8 + b _080F3D50 + .align 2, 0 +_080F3D20: .4byte gUnknown_2021C40 +_080F3D24: .4byte gUnknown_85CBFDF +_080F3D28: .4byte gUnknown_2021C54 +_080F3D2C: .4byte gUnknown_85CBFC0 +_080F3D30: + cmp r0, #0x16 + bls _080F3D48 + ldr r0, _080F3D40 + ldr r1, _080F3D44 + bl sub_080088B8 + b _080F3D50 + .align 2, 0 +_080F3D40: .4byte gUnknown_2021C54 +_080F3D44: .4byte gUnknown_85CBFBB +_080F3D48: + ldr r0, _080F3D64 + ldr r1, _080F3D68 + bl sub_080088B8 +_080F3D50: + ldr r0, _080F3D6C + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r1, _080F3D70 + movs r0, #2 + strb r0, [r1] + b _080F3E94 + .align 2, 0 +_080F3D64: .4byte gUnknown_2021C54 +_080F3D68: .4byte gUnknown_85CBFB8 +_080F3D6C: .4byte gUnknown_2021C68 +_080F3D70: .4byte gUnknown_2039CFC +_080F3D74: + ldr r0, _080F3D7C + adds r1, r4, #4 + b _080F3E76 + .align 2, 0 +_080F3D7C: .4byte gUnknown_2021C40 +_080F3D80: + ldrb r0, [r4, #3] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #4 + bhi _080F3E04 + lsls r0, r0, #2 + ldr r1, _080F3D94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3D94: .4byte _080F3D98 +_080F3D98: @ jump table + .4byte _080F3DAC @ case 0 + .4byte _080F3DC0 @ case 1 + .4byte _080F3DD4 @ case 2 + .4byte _080F3DE8 @ case 3 + .4byte _080F3DFC @ case 4 +_080F3DAC: + ldr r0, _080F3DB8 + ldr r1, _080F3DBC + bl sub_080088B8 + b _080F3E04 + .align 2, 0 +_080F3DB8: .4byte gUnknown_2021C40 +_080F3DBC: .4byte gUnknown_85CBFD3 +_080F3DC0: + ldr r0, _080F3DCC + ldr r1, _080F3DD0 + bl sub_080088B8 + b _080F3E04 + .align 2, 0 +_080F3DCC: .4byte gUnknown_2021C40 +_080F3DD0: .4byte gUnknown_85CBFD6 +_080F3DD4: + ldr r0, _080F3DE0 + ldr r1, _080F3DE4 + bl sub_080088B8 + b _080F3E04 + .align 2, 0 +_080F3DE0: .4byte gUnknown_2021C40 +_080F3DE4: .4byte gUnknown_85CBFD9 +_080F3DE8: + ldr r0, _080F3DF4 + ldr r1, _080F3DF8 + bl sub_080088B8 + b _080F3E04 + .align 2, 0 +_080F3DF4: .4byte gUnknown_2021C40 +_080F3DF8: .4byte gUnknown_85CBFDC +_080F3DFC: + ldr r0, _080F3E14 + ldr r1, _080F3E18 + bl sub_080088B8 +_080F3E04: + ldrb r0, [r4, #2] + cmp r0, #0x10 + bls _080F3E24 + ldr r0, _080F3E1C + ldr r1, _080F3E20 + bl sub_080088B8 + b _080F3E44 + .align 2, 0 +_080F3E14: .4byte gUnknown_2021C40 +_080F3E18: .4byte gUnknown_85CBFDF +_080F3E1C: .4byte gUnknown_2021C54 +_080F3E20: .4byte gUnknown_85CBFC5 +_080F3E24: + cmp r0, #0xd + bls _080F3E3C + ldr r0, _080F3E34 + ldr r1, _080F3E38 + bl sub_080088B8 + b _080F3E44 + .align 2, 0 +_080F3E34: .4byte gUnknown_2021C54 +_080F3E38: .4byte gUnknown_85CBFCA +_080F3E3C: + ldr r0, _080F3E58 + ldr r1, _080F3E5C + bl sub_080088B8 +_080F3E44: + ldr r0, _080F3E60 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r1, _080F3E64 + movs r0, #4 + strb r0, [r1] + b _080F3E94 + .align 2, 0 +_080F3E58: .4byte gUnknown_2021C54 +_080F3E5C: .4byte gUnknown_85CBFCE +_080F3E60: .4byte gUnknown_2021C68 +_080F3E64: .4byte gUnknown_2039CFC +_080F3E68: + ldr r0, _080F3E84 + adds r1, r4, #4 + bl sub_080088B8 + ldr r0, _080F3E88 + adds r1, r4, #0 + adds r1, #0xc +_080F3E76: + bl sub_080088B8 + ldr r1, _080F3E8C + movs r0, #5 + strb r0, [r1] + b _080F3E94 + .align 2, 0 +_080F3E84: .4byte gUnknown_2021C40 +_080F3E88: .4byte gUnknown_2021C54 +_080F3E8C: .4byte gUnknown_2039CFC +_080F3E90: + bl sub_080F5F74 +_080F3E94: + ldr r0, _080F3EA8 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F3EA8: .4byte gUnknown_8568CD4 + thumb_func_end sub_080F3C00 + + thumb_func_start sub_080F3EAC +sub_080F3EAC: @ 0x080F3EAC + push {r4, r5, r6, lr} + ldr r0, _080F3ECC + movs r1, #0 + strh r1, [r0] + ldr r0, _080F3ED0 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #8 + bls _080F3EC0 + b _080F4064 +_080F3EC0: + lsls r0, r6, #2 + ldr r1, _080F3ED4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F3ECC: .4byte gUnknown_2037290 +_080F3ED0: .4byte gUnknown_2039CFC +_080F3ED4: .4byte _080F3ED8 +_080F3ED8: @ jump table + .4byte _080F3EFC @ case 0 + .4byte _080F3F44 @ case 1 + .4byte _080F3F4A @ case 2 + .4byte _080F3F9C @ case 3 + .4byte _080F4010 @ case 4 + .4byte _080F4010 @ case 5 + .4byte _080F4010 @ case 6 + .4byte _080F4010 @ case 7 + .4byte _080F4016 @ case 8 +_080F3EFC: + ldr r0, _080F3F24 + ldr r4, _080F3F28 + ldr r1, [r4] + ldr r2, _080F3F2C + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #0 + bl sub_08124578 + ldr r0, [r4] + ldr r1, _080F3F30 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bls _080F3F38 + ldr r1, _080F3F34 + movs r0, #1 + strb r0, [r1] + b _080F4064 + .align 2, 0 +_080F3F24: .4byte gUnknown_2021C40 +_080F3F28: .4byte gUnknown_3005AEC +_080F3F2C: .4byte 0x00002BAC +_080F3F30: .4byte 0x00002BAD +_080F3F34: .4byte gUnknown_2039CFC +_080F3F38: + ldr r1, _080F3F40 + movs r0, #2 + strb r0, [r1] + b _080F4064 + .align 2, 0 +_080F3F40: .4byte gUnknown_2039CFC +_080F3F44: + movs r0, #2 + strb r0, [r2] + b _080F4064 +_080F3F4A: + ldr r0, _080F3F64 + ldr r0, [r0] + ldr r1, _080F3F68 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080F3F6C + movs r0, #4 + strb r0, [r2] + b _080F4064 + .align 2, 0 +_080F3F64: .4byte gUnknown_3005AEC +_080F3F68: .4byte 0x00002BAE +_080F3F6C: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080F3F7A + movs r0, #5 + strb r0, [r2] + b _080F4064 +_080F3F7A: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080F3F88 + movs r0, #6 + strb r0, [r2] + b _080F4064 +_080F3F88: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F3F96 + movs r0, #7 + strb r0, [r2] + b _080F4064 +_080F3F96: + movs r0, #3 + strb r0, [r2] + b _080F4064 +_080F3F9C: + ldr r0, _080F3FE8 + ldr r4, _080F3FEC + ldr r1, [r4] + ldr r2, _080F3FF0 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r5, _080F3FF4 + adds r1, r1, r5 + bl sub_080088B8 + ldr r0, _080F3FF8 + ldr r1, [r4] + ldr r2, _080F3FFC + adds r1, r1, r2 + ldrh r1, [r1] + lsls r1, r1, #3 + ldr r2, _080F4000 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4004 + ldr r1, [r4] + ldr r2, _080F4008 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + bl sub_080088B8 + ldr r1, _080F400C + movs r0, #8 + strb r0, [r1] + b _080F4064 + .align 2, 0 +_080F3FE8: .4byte gUnknown_2021C40 +_080F3FEC: .4byte gUnknown_3005AEC +_080F3FF0: .4byte 0x00002BA4 +_080F3FF4: .4byte gUnknown_82EA31C +_080F3FF8: .4byte gUnknown_2021C54 +_080F3FFC: .4byte 0x00002BA8 +_080F4000: .4byte gUnknown_82EACC4 +_080F4004: .4byte gUnknown_2021C68 +_080F4008: .4byte 0x00002BA6 +_080F400C: .4byte gUnknown_2039CFC +_080F4010: + movs r0, #8 + strb r0, [r2] + b _080F4064 +_080F4016: + ldr r0, _080F4078 + ldr r4, _080F407C + ldr r1, [r4] + ldr r2, _080F4080 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_0811F180 + ldr r0, _080F4084 + ldr r1, [r4] + ldr r2, _080F4088 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r5, _080F408C + adds r1, r1, r5 + bl sub_080088B8 + ldr r0, _080F4090 + ldr r1, [r4] + ldr r2, _080F4094 + adds r1, r1, r2 + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + bl sub_080088B8 + ldr r1, _080F4098 + movs r0, #1 + strh r0, [r1] + ldr r1, _080F409C + movs r0, #0 + strb r0, [r1] + bl sub_080ED088 +_080F4064: + ldr r0, _080F40A0 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F4078: .4byte gUnknown_2021C40 +_080F407C: .4byte gUnknown_3005AEC +_080F4080: .4byte 0x00002BAA +_080F4084: .4byte gUnknown_2021C54 +_080F4088: .4byte 0x00002BA4 +_080F408C: .4byte gUnknown_82EA31C +_080F4090: .4byte gUnknown_2021C68 +_080F4094: .4byte 0x00002BA6 +_080F4098: .4byte gUnknown_2037290 +_080F409C: .4byte gUnknown_2039CFC +_080F40A0: .4byte gUnknown_8569118 + thumb_func_end sub_080F3EAC + + thumb_func_start sub_080F40A4 +sub_080F40A4: @ 0x080F40A4 + push {r4, r5, lr} + ldr r2, _080F40D0 + ldr r0, _080F40D4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F40D8 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r0, _080F40DC + movs r1, #0 + strh r1, [r0] + ldrb r0, [r4, #2] + ldrb r2, [r4, #3] + cmp r0, r2 + bhs _080F40E4 + ldr r0, _080F40E0 + strb r1, [r0] + b _080F40EC + .align 2, 0 +_080F40D0: .4byte gUnknown_3005AEC +_080F40D4: .4byte gUnknown_2037280 +_080F40D8: .4byte 0x000027CC +_080F40DC: .4byte gUnknown_2037290 +_080F40E0: .4byte gUnknown_2039CFC +_080F40E4: + ldr r1, _080F40F8 + movs r0, #1 + strb r0, [r1] + adds r0, r1, #0 +_080F40EC: + ldrb r5, [r0] + cmp r5, #0 + beq _080F40FC + cmp r5, #1 + beq _080F4134 + b _080F415C + .align 2, 0 +_080F40F8: .4byte gUnknown_2039CFC +_080F40FC: + ldr r0, _080F4128 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F412C + ldrh r2, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4130 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r4, #3] + movs r0, #2 + bl sub_080EFE44 + bl sub_080F5F74 + b _080F415C + .align 2, 0 +_080F4128: .4byte gUnknown_2021C40 +_080F412C: .4byte gUnknown_2021C54 +_080F4130: .4byte gUnknown_82EA31C +_080F4134: + ldr r0, _080F4170 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4174 + ldrh r2, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4178 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r4, #2] + movs r0, #2 + bl sub_080EFE44 + bl sub_080F5F74 +_080F415C: + ldr r0, _080F417C + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F4170: .4byte gUnknown_2021C40 +_080F4174: .4byte gUnknown_2021C54 +_080F4178: .4byte gUnknown_82EA31C +_080F417C: .4byte gUnknown_8568E5C + thumb_func_end sub_080F40A4 + + thumb_func_start sub_080F4180 +sub_080F4180: @ 0x080F4180 + push {r4, r5, r6, lr} + ldr r2, _080F41B0 + ldr r0, _080F41B4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F41B8 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F41BC + movs r0, #0 + strh r0, [r1] + ldr r6, _080F41C0 + ldrb r5, [r6] + cmp r5, #1 + beq _080F41F0 + cmp r5, #1 + bgt _080F41C4 + cmp r5, #0 + beq _080F41CA + b _080F423A + .align 2, 0 +_080F41B0: .4byte gUnknown_3005AEC +_080F41B4: .4byte gUnknown_2037280 +_080F41B8: .4byte 0x000027CC +_080F41BC: .4byte gUnknown_2037290 +_080F41C0: .4byte gUnknown_2039CFC +_080F41C4: + cmp r5, #2 + beq _080F4210 + b _080F423A +_080F41CA: + ldr r0, _080F41EC + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #6] + movs r0, #1 + bl sub_080EFE44 + ldrh r1, [r4, #2] + movs r0, #2 + bl sub_080EFE44 + movs r0, #1 + strb r0, [r6] + b _080F423A + .align 2, 0 +_080F41EC: .4byte gUnknown_2021C40 +_080F41F0: + ldr r0, _080F4208 + ldrh r2, [r4, #8] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F420C + adds r1, r1, r2 + bl sub_080088B8 + movs r0, #2 + strb r0, [r6] + b _080F423A + .align 2, 0 +_080F4208: .4byte gUnknown_2021C40 +_080F420C: .4byte gUnknown_82EA31C +_080F4210: + ldr r0, _080F424C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4250 + ldrb r1, [r4, #0xa] + movs r2, #0 + bl sub_08124578 + ldr r0, _080F4254 + ldrh r2, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4258 + adds r1, r1, r2 + bl sub_080088B8 + bl sub_080F5F74 +_080F423A: + ldr r0, _080F425C + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F424C: .4byte gUnknown_2021C40 +_080F4250: .4byte gUnknown_2021C54 +_080F4254: .4byte gUnknown_2021C68 +_080F4258: .4byte gUnknown_82EA31C +_080F425C: .4byte gUnknown_8568E64 + thumb_func_end sub_080F4180 + + thumb_func_start sub_080F4260 +sub_080F4260: @ 0x080F4260 + push {r4, r5, lr} + ldr r2, _080F4294 + ldr r0, _080F4298 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F429C + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F42A0 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F42A4 + ldrb r5, [r0] + adds r2, r0, #0 + cmp r5, #0xa + bls _080F4288 + b _080F4456 +_080F4288: + lsls r0, r5, #2 + ldr r1, _080F42A8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F4294: .4byte gUnknown_3005AEC +_080F4298: .4byte gUnknown_2037280 +_080F429C: .4byte 0x000027CC +_080F42A0: .4byte gUnknown_2037290 +_080F42A4: .4byte gUnknown_2039CFC +_080F42A8: .4byte _080F42AC +_080F42AC: @ jump table + .4byte _080F42D8 @ case 0 + .4byte _080F43A0 @ case 1 + .4byte _080F43C8 @ case 2 + .4byte _080F4400 @ case 3 + .4byte _080F4412 @ case 4 + .4byte _080F4434 @ case 5 + .4byte _080F4448 @ case 6 + .4byte _080F430E @ case 7 + .4byte _080F433C @ case 8 + .4byte _080F4354 @ case 9 + .4byte _080F436C @ case 10 +_080F42D8: + ldrb r0, [r4, #7] + cmp r0, #0x56 + beq _080F42E8 + cmp r0, #0x57 + beq _080F42EE + movs r0, #7 + strb r0, [r2] + b _080F4456 +_080F42E8: + movs r0, #8 + strb r0, [r2] + b _080F4456 +_080F42EE: + ldrh r1, [r4, #0xa] + ldr r0, _080F4304 + cmp r1, r0 + bgt _080F4308 + subs r0, #2 + cmp r1, r0 + blt _080F4308 + movs r0, #0xa + strb r0, [r2] + b _080F4456 + .align 2, 0 +_080F4304: .4byte 0x00000117 +_080F4308: + movs r0, #9 + strb r0, [r2] + b _080F4456 +_080F430E: + ldr r0, _080F4334 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + ldr r0, _080F4338 + ldrb r1, [r4, #7] + movs r2, #0 + bl sub_08124578 +_080F432A: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _080F4384 + b _080F4394 + .align 2, 0 +_080F4334: .4byte gUnknown_2021C40 +_080F4338: .4byte gUnknown_2021C68 +_080F433C: + ldr r0, _080F4350 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + b _080F432A + .align 2, 0 +_080F4350: .4byte gUnknown_2021C40 +_080F4354: + ldr r0, _080F4368 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + b _080F432A + .align 2, 0 +_080F4368: .4byte gUnknown_2021C40 +_080F436C: + ldr r0, _080F438C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + ldrb r0, [r4, #4] + cmp r0, #0 + beq _080F4394 +_080F4384: + ldr r1, _080F4390 + movs r0, #1 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F438C: .4byte gUnknown_2021C40 +_080F4390: .4byte gUnknown_2039CFC +_080F4394: + ldr r1, _080F439C + movs r0, #2 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F439C: .4byte gUnknown_2039CFC +_080F43A0: + ldrb r1, [r4, #4] + movs r0, #0 + bl sub_080EFE44 + ldr r0, _080F43C0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F443C + ldr r0, [r4, #4] + ldr r1, _080F43C4 + ands r0, r1 + cmp r0, #0 + bne _080F43DE + b _080F43F4 + .align 2, 0 +_080F43C0: .4byte 0x000008A8 +_080F43C4: .4byte 0x00FFFF00 +_080F43C8: + ldr r0, _080F43E8 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F443C + ldr r0, [r4, #4] + ldr r1, _080F43EC + ands r0, r1 + cmp r0, #0 + beq _080F43F4 +_080F43DE: + ldr r1, _080F43F0 + movs r0, #4 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F43E8: .4byte 0x000008A8 +_080F43EC: .4byte 0x00FFFF00 +_080F43F0: .4byte gUnknown_2039CFC +_080F43F4: + ldr r1, _080F43FC + movs r0, #3 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F43FC: .4byte gUnknown_2039CFC +_080F4400: + ldrh r0, [r4, #8] + cmp r0, #0 + bne _080F440C + movs r0, #6 + strb r0, [r2] + b _080F4456 +_080F440C: + movs r0, #5 + strb r0, [r2] + b _080F4456 +_080F4412: + ldrb r1, [r4, #6] + movs r0, #0 + bl sub_080EFE44 + ldrb r1, [r4, #5] + movs r0, #1 + bl sub_080EFE44 + ldrh r0, [r4, #8] + cmp r0, #0 + beq _080F443C + ldr r1, _080F4430 + movs r0, #5 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F4430: .4byte gUnknown_2039CFC +_080F4434: + ldrh r1, [r4, #8] + movs r0, #0 + bl sub_080EFE44 +_080F443C: + ldr r1, _080F4444 + movs r0, #6 + strb r0, [r1] + b _080F4456 + .align 2, 0 +_080F4444: .4byte gUnknown_2039CFC +_080F4448: + ldr r0, _080F4468 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F4456: + ldr r0, _080F446C + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F4468: .4byte gUnknown_2021C40 +_080F446C: .4byte gUnknown_8568E70 + thumb_func_end sub_080F4260 + + thumb_func_start sub_080F4470 +sub_080F4470: @ 0x080F4470 + push {r4, r5, lr} + ldr r2, _080F44A0 + ldr r0, _080F44A4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F44A8 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F44AC + movs r0, #0 + strh r0, [r1] + ldr r0, _080F44B0 + ldrb r5, [r0] + cmp r5, #6 + bls _080F4496 + b _080F45C0 +_080F4496: + lsls r0, r5, #2 + ldr r1, _080F44B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F44A0: .4byte gUnknown_3005AEC +_080F44A4: .4byte gUnknown_2037280 +_080F44A8: .4byte 0x000027CC +_080F44AC: .4byte gUnknown_2037290 +_080F44B0: .4byte gUnknown_2039CFC +_080F44B4: .4byte _080F44B8 +_080F44B8: @ jump table + .4byte _080F44D4 @ case 0 + .4byte _080F450C @ case 1 + .4byte _080F450C @ case 2 + .4byte _080F4540 @ case 3 + .4byte _080F4578 @ case 4 + .4byte _080F4578 @ case 5 + .4byte _080F45AC @ case 6 +_080F44D4: + ldr r0, _080F44F4 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F44F8 + ldrh r1, [r4, #6] + bl sub_0811F180 + ldrb r0, [r4, #8] + cmp r0, #0 + bne _080F4500 + ldr r1, _080F44FC + movs r0, #1 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F44F4: .4byte gUnknown_2021C40 +_080F44F8: .4byte gUnknown_2021C54 +_080F44FC: .4byte gUnknown_2039CFC +_080F4500: + ldr r1, _080F4508 + movs r0, #2 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F4508: .4byte gUnknown_2039CFC +_080F450C: + ldr r0, _080F4530 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F4534 + ldrh r1, [r4, #6] + bl sub_0811F180 + ldr r0, _080F4538 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r1, _080F453C + movs r0, #3 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F4530: .4byte gUnknown_2021C40 +_080F4534: .4byte gUnknown_2021C54 +_080F4538: .4byte gUnknown_2021C68 +_080F453C: .4byte gUnknown_2039CFC +_080F4540: + ldr r0, _080F4560 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F4564 + ldrh r1, [r4, #6] + bl sub_0811F180 + ldrb r0, [r4, #8] + cmp r0, #0 + bne _080F456C + ldr r1, _080F4568 + movs r0, #4 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F4560: .4byte gUnknown_2021C40 +_080F4564: .4byte gUnknown_2021C54 +_080F4568: .4byte gUnknown_2039CFC +_080F456C: + ldr r1, _080F4574 + movs r0, #5 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F4574: .4byte gUnknown_2039CFC +_080F4578: + ldr r0, _080F459C + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F45A0 + ldrh r1, [r4, #6] + bl sub_0811F180 + ldr r0, _080F45A4 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r1, _080F45A8 + movs r0, #6 + strb r0, [r1] + b _080F45C0 + .align 2, 0 +_080F459C: .4byte gUnknown_2021C40 +_080F45A0: .4byte gUnknown_2021C54 +_080F45A4: .4byte gUnknown_2021C68 +_080F45A8: .4byte gUnknown_2039CFC +_080F45AC: + ldr r0, _080F45D4 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F45D8 + ldrh r1, [r4, #6] + bl sub_0811F180 + bl sub_080F5F74 +_080F45C0: + ldr r0, _080F45DC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F45D4: .4byte gUnknown_2021C40 +_080F45D8: .4byte gUnknown_2021C54 +_080F45DC: .4byte gUnknown_8568E9C + thumb_func_end sub_080F4470 + + thumb_func_start sub_080F45E0 +sub_080F45E0: @ 0x080F45E0 + push {r4, r5, r6, r7, lr} + ldr r2, _080F4610 + ldr r0, _080F4614 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F4618 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F461C + movs r0, #0 + strh r0, [r1] + ldr r7, _080F4620 + ldrb r6, [r7] + cmp r6, #1 + beq _080F466E + cmp r6, #1 + bgt _080F4624 + cmp r6, #0 + beq _080F462A + b _080F46C2 + .align 2, 0 +_080F4610: .4byte gUnknown_3005AEC +_080F4614: .4byte gUnknown_2037280 +_080F4618: .4byte 0x000027CC +_080F461C: .4byte gUnknown_2037290 +_080F4620: .4byte gUnknown_2039CFC +_080F4624: + cmp r6, #2 + beq _080F46A4 + b _080F46C2 +_080F462A: + ldr r4, _080F4654 + ldrh r0, [r5, #2] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r0, [r5, #4] + cmp r0, #0x57 + bne _080F4668 + ldrh r1, [r5, #6] + ldr r0, _080F4658 + cmp r1, r0 + bgt _080F465C + subs r0, #2 + cmp r1, r0 + blt _080F465C + movs r0, #2 + strb r0, [r7] + b _080F46C2 + .align 2, 0 +_080F4654: .4byte gUnknown_2021C40 +_080F4658: .4byte 0x00000117 +_080F465C: + ldr r1, _080F4664 + movs r0, #1 + strb r0, [r1] + b _080F46C2 + .align 2, 0 +_080F4664: .4byte gUnknown_2039CFC +_080F4668: + movs r0, #1 + strb r0, [r7] + b _080F46C2 +_080F466E: + ldr r4, _080F4698 + ldrh r0, [r5, #2] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _080F469C + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F46A0 + ldrb r1, [r5, #4] + movs r2, #0 + bl sub_08124578 + bl sub_080F5F74 + b _080F46C2 + .align 2, 0 +_080F4698: .4byte gUnknown_2021C40 +_080F469C: .4byte gUnknown_2021C54 +_080F46A0: .4byte gUnknown_2021C68 +_080F46A4: + ldr r4, _080F46D4 + ldrh r0, [r5, #2] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _080F46D8 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F46C2: + ldr r0, _080F46DC + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F46D4: .4byte gUnknown_2021C40 +_080F46D8: .4byte gUnknown_2021C54 +_080F46DC: .4byte gUnknown_8568EB8 + thumb_func_end sub_080F45E0 + + thumb_func_start sub_080F46E0 +sub_080F46E0: @ 0x080F46E0 + push {r4, r5, lr} + ldr r2, _080F4710 + ldr r0, _080F4714 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F4718 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F471C + movs r0, #0 + strh r0, [r1] + ldr r0, _080F4720 + ldrb r5, [r0] + cmp r5, #1 + beq _080F478C + cmp r5, #1 + bgt _080F4724 + cmp r5, #0 + beq _080F4730 + b _080F486C + .align 2, 0 +_080F4710: .4byte gUnknown_3005AEC +_080F4714: .4byte gUnknown_2037280 +_080F4718: .4byte 0x000027CC +_080F471C: .4byte gUnknown_2037290 +_080F4720: .4byte gUnknown_2039CFC +_080F4724: + cmp r5, #2 + beq _080F47DC + cmp r5, #3 + bne _080F472E + b _080F4830 +_080F472E: + b _080F486C +_080F4730: + ldr r0, _080F4748 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080F474C + cmp r0, #1 + beq _080F4760 + b _080F4768 + .align 2, 0 +_080F4748: .4byte gUnknown_2021C40 +_080F474C: + ldr r0, _080F4758 + ldr r1, _080F475C + bl sub_080088B8 + b _080F4768 + .align 2, 0 +_080F4758: .4byte gUnknown_2021C54 +_080F475C: .4byte gUnknown_85CBFAD +_080F4760: + ldr r0, _080F4774 + ldr r1, _080F4778 + bl sub_080088B8 +_080F4768: + ldrb r1, [r4, #2] + cmp r1, #1 + bne _080F4780 + ldr r0, _080F477C + strb r1, [r0] + b _080F486C + .align 2, 0 +_080F4774: .4byte gUnknown_2021C54 +_080F4778: .4byte gUnknown_85CBFB2 +_080F477C: .4byte gUnknown_2039CFC +_080F4780: + ldr r1, _080F4788 + movs r0, #2 + strb r0, [r1] + b _080F486C + .align 2, 0 +_080F4788: .4byte gUnknown_2039CFC +_080F478C: + ldr r0, _080F47A4 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080F47A8 + cmp r0, #1 + beq _080F47BC + b _080F47C4 + .align 2, 0 +_080F47A4: .4byte gUnknown_2021C40 +_080F47A8: + ldr r0, _080F47B4 + ldr r1, _080F47B8 + bl sub_080088B8 + b _080F47C4 + .align 2, 0 +_080F47B4: .4byte gUnknown_2021C54 +_080F47B8: .4byte gUnknown_85CBFAD +_080F47BC: + ldr r0, _080F47D4 + ldr r1, _080F47D8 + bl sub_080088B8 +_080F47C4: + ldrh r1, [r4, #4] + movs r0, #2 + bl sub_080EFE44 + bl sub_080F5F74 + b _080F486C + .align 2, 0 +_080F47D4: .4byte gUnknown_2021C54 +_080F47D8: .4byte gUnknown_85CBFB2 +_080F47DC: + ldr r0, _080F47F4 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080F47F8 + cmp r0, #1 + beq _080F480C + b _080F4814 + .align 2, 0 +_080F47F4: .4byte gUnknown_2021C40 +_080F47F8: + ldr r0, _080F4804 + ldr r1, _080F4808 + bl sub_080088B8 + b _080F4814 + .align 2, 0 +_080F4804: .4byte gUnknown_2021C54 +_080F4808: .4byte gUnknown_85CBFAD +_080F480C: + ldr r0, _080F4824 + ldr r1, _080F4828 + bl sub_080088B8 +_080F4814: + ldrh r1, [r4, #4] + movs r0, #2 + bl sub_080EFE44 + ldr r1, _080F482C + movs r0, #3 + strb r0, [r1] + b _080F486C + .align 2, 0 +_080F4824: .4byte gUnknown_2021C54 +_080F4828: .4byte gUnknown_85CBFB2 +_080F482C: .4byte gUnknown_2039CFC +_080F4830: + ldr r0, _080F4848 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r1, [r4, #3] + cmp r1, #0 + beq _080F484C + cmp r1, #1 + beq _080F4860 + b _080F4868 + .align 2, 0 +_080F4848: .4byte gUnknown_2021C40 +_080F484C: + ldr r0, _080F4858 + ldr r1, _080F485C + bl sub_080088B8 + b _080F4868 + .align 2, 0 +_080F4858: .4byte gUnknown_2021C54 +_080F485C: .4byte gUnknown_85CBFB2 +_080F4860: + ldr r0, _080F4880 + ldr r1, _080F4884 + bl sub_080088B8 +_080F4868: + bl sub_080F5F74 +_080F486C: + ldr r0, _080F4888 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F4880: .4byte gUnknown_2021C54 +_080F4884: .4byte gUnknown_85CBFAD +_080F4888: .4byte gUnknown_8568EC4 + thumb_func_end sub_080F46E0 + + thumb_func_start sub_080F488C +sub_080F488C: @ 0x080F488C + push {r4, r5, r6, lr} + ldr r2, _080F48C0 + ldr r0, _080F48C4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F48C8 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F48CC + movs r0, #0 + strh r0, [r1] + ldr r0, _080F48D0 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0xc + bls _080F48B4 + b _080F4BA2 +_080F48B4: + lsls r0, r6, #2 + ldr r1, _080F48D4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F48C0: .4byte gUnknown_3005AEC +_080F48C4: .4byte gUnknown_2037280 +_080F48C8: .4byte 0x000027CC +_080F48CC: .4byte gUnknown_2037290 +_080F48D0: .4byte gUnknown_2039CFC +_080F48D4: .4byte _080F48D8 +_080F48D8: @ jump table + .4byte _080F490C @ case 0 + .4byte _080F491E @ case 1 + .4byte _080F4960 @ case 2 + .4byte _080F49A8 @ case 3 + .4byte _080F49D0 @ case 4 + .4byte _080F49F4 @ case 5 + .4byte _080F4A38 @ case 6 + .4byte _080F4AC0 @ case 7 + .4byte _080F4B38 @ case 8 + .4byte _080F4B50 @ case 9 + .4byte _080F4B50 @ case 10 + .4byte _080F4B94 @ case 11 + .4byte _080F4AF0 @ case 12 +_080F490C: + ldrb r0, [r5, #5] + cmp r0, #0 + bne _080F4918 + movs r0, #1 + strb r0, [r2] + b _080F4BA2 +_080F4918: + movs r0, #5 + strb r0, [r2] + b _080F4BA2 +_080F491E: + ldr r0, _080F494C + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4950 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4954 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4958 + ldrb r1, [r5, #4] + movs r2, #0 + bl sub_08124578 + ldr r1, _080F495C + movs r0, #2 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F494C: .4byte gUnknown_2021C40 +_080F4950: .4byte gUnknown_2021C54 +_080F4954: .4byte gUnknown_82EA31C +_080F4958: .4byte gUnknown_2021C68 +_080F495C: .4byte gUnknown_2039CFC +_080F4960: + ldr r0, _080F4994 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4998 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F499C + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F49A0 + ldrh r2, [r5, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldr r1, _080F49A4 + movs r0, #3 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4994: .4byte gUnknown_2021C40 +_080F4998: .4byte gUnknown_2021C54 +_080F499C: .4byte gUnknown_82EA31C +_080F49A0: .4byte gUnknown_2021C68 +_080F49A4: .4byte gUnknown_2039CFC +_080F49A8: + ldrh r1, [r5, #8] + movs r0, #0 + bl sub_080EFE44 + ldr r4, _080F49C8 + ldrh r0, [r5, #6] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _080F49CC + movs r0, #4 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F49C8: .4byte gUnknown_2021C54 +_080F49CC: .4byte gUnknown_2039CFC +_080F49D0: + ldr r0, _080F49EC + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F49F0 + ldrb r1, [r5, #4] + movs r2, #0 + bl sub_08124578 + bl sub_080F5F74 + b _080F4BA2 + .align 2, 0 +_080F49EC: .4byte gUnknown_2021C40 +_080F49F0: .4byte gUnknown_2021C54 +_080F49F4: + ldr r0, _080F4A24 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4A28 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4A2C + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4A30 + ldrb r1, [r5, #4] + movs r2, #0 + bl sub_08124578 + ldr r1, _080F4A34 + movs r0, #6 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4A24: .4byte gUnknown_2021C40 +_080F4A28: .4byte gUnknown_2021C54 +_080F4A2C: .4byte gUnknown_82EA31C +_080F4A30: .4byte gUnknown_2021C68 +_080F4A34: .4byte gUnknown_2039CFC +_080F4A38: + ldr r0, _080F4A74 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4A78 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F4A7C + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F4A80 + ldrh r2, [r5, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldrb r0, [r5, #5] + cmp r0, #2 + beq _080F4AA8 + cmp r0, #2 + bgt _080F4A84 + cmp r0, #1 + beq _080F4A8A + b _080F4BA2 + .align 2, 0 +_080F4A74: .4byte gUnknown_2021C40 +_080F4A78: .4byte gUnknown_2021C54 +_080F4A7C: .4byte gUnknown_82EA31C +_080F4A80: .4byte gUnknown_2021C68 +_080F4A84: + cmp r0, #3 + beq _080F4AB4 + b _080F4BA2 +_080F4A8A: + ldrh r0, [r5, #0xc] + cmp r0, #0 + bne _080F4A9C + ldr r1, _080F4A98 + movs r0, #0xc + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4A98: .4byte gUnknown_2039CFC +_080F4A9C: + ldr r1, _080F4AA4 + movs r0, #7 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4AA4: .4byte gUnknown_2039CFC +_080F4AA8: + ldr r1, _080F4AB0 + movs r0, #9 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4AB0: .4byte gUnknown_2039CFC +_080F4AB4: + ldr r1, _080F4ABC + movs r0, #0xa + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4ABC: .4byte gUnknown_2039CFC +_080F4AC0: + ldr r0, _080F4AE0 + ldrh r1, [r5, #0xc] + lsls r1, r1, #3 + ldr r2, _080F4AE4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4AE8 + ldrh r2, [r5, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4AEC + adds r1, r1, r2 + b _080F4B18 + .align 2, 0 +_080F4AE0: .4byte gUnknown_2021C40 +_080F4AE4: .4byte gUnknown_82EACC4 +_080F4AE8: .4byte gUnknown_2021C54 +_080F4AEC: .4byte gUnknown_82EA31C +_080F4AF0: + ldr r0, _080F4B24 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4B28 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F4B2C + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F4B30 + ldrh r2, [r5, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 +_080F4B18: + bl sub_080088B8 + ldr r1, _080F4B34 + movs r0, #8 + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4B24: .4byte gUnknown_2021C40 +_080F4B28: .4byte gUnknown_2021C54 +_080F4B2C: .4byte gUnknown_82EA31C +_080F4B30: .4byte gUnknown_2021C68 +_080F4B34: .4byte gUnknown_2039CFC +_080F4B38: + ldr r0, _080F4B48 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4B4C + b _080F4B6E + .align 2, 0 +_080F4B48: .4byte gUnknown_2021C40 +_080F4B4C: .4byte gUnknown_2021C54 +_080F4B50: + ldr r0, _080F4B80 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4B84 + ldrh r2, [r5, #2] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4B88 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4B8C +_080F4B6E: + ldrb r1, [r5, #4] + movs r2, #0 + bl sub_08124578 + ldr r1, _080F4B90 + movs r0, #0xb + strb r0, [r1] + b _080F4BA2 + .align 2, 0 +_080F4B80: .4byte gUnknown_2021C40 +_080F4B84: .4byte gUnknown_2021C54 +_080F4B88: .4byte gUnknown_82EA31C +_080F4B8C: .4byte gUnknown_2021C68 +_080F4B90: .4byte gUnknown_2039CFC +_080F4B94: + ldr r0, _080F4BB4 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F4BA2: + ldr r0, _080F4BB8 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F4BB4: .4byte gUnknown_2021C40 +_080F4BB8: .4byte gUnknown_8568ED4 + thumb_func_end sub_080F488C + + thumb_func_start sub_080F4BBC +sub_080F4BBC: @ 0x080F4BBC + push {r4, r5, r6, lr} + ldr r2, _080F4BF0 + ldr r0, _080F4BF4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F4BF8 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F4BFC + movs r0, #0 + strh r0, [r1] + ldr r0, _080F4C00 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0xd + bls _080F4BE4 + b _080F4DF4 +_080F4BE4: + lsls r0, r6, #2 + ldr r1, _080F4C04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F4BF0: .4byte gUnknown_3005AEC +_080F4BF4: .4byte gUnknown_2037280 +_080F4BF8: .4byte 0x000027CC +_080F4BFC: .4byte gUnknown_2037290 +_080F4C00: .4byte gUnknown_2039CFC +_080F4C04: .4byte _080F4C08 +_080F4C08: @ jump table + .4byte _080F4C40 @ case 0 + .4byte _080F4C6C @ case 1 + .4byte _080F4D50 @ case 2 + .4byte _080F4CA4 @ case 3 + .4byte _080F4D50 @ case 4 + .4byte _080F4CFC @ case 5 + .4byte _080F4D28 @ case 6 + .4byte _080F4D50 @ case 7 + .4byte _080F4D56 @ case 8 + .4byte _080F4DA4 @ case 9 + .4byte _080F4DA4 @ case 10 + .4byte _080F4DA4 @ case 11 + .4byte _080F4DA4 @ case 12 + .4byte _080F4DF0 @ case 13 +_080F4C40: + ldr r0, _080F4C58 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r5, #3] + cmp r0, #0 + bne _080F4C60 + ldr r1, _080F4C5C + movs r0, #2 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4C58: .4byte gUnknown_2021C40 +_080F4C5C: .4byte gUnknown_2039CFC +_080F4C60: + ldr r1, _080F4C68 + movs r0, #1 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4C68: .4byte gUnknown_2039CFC +_080F4C6C: + ldr r0, _080F4C8C + ldrb r2, [r5, #4] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080F4C90 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r0, [r5, #3] + cmp r0, #1 + bne _080F4C98 + ldr r1, _080F4C94 + movs r0, #4 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4C8C: .4byte gUnknown_2021C54 +_080F4C90: .4byte gUnknown_8580CD1 +_080F4C94: .4byte gUnknown_2039CFC +_080F4C98: + ldr r1, _080F4CA0 + movs r0, #3 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4CA0: .4byte gUnknown_2039CFC +_080F4CA4: + ldr r0, _080F4CC8 + ldrb r2, [r5, #5] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080F4CCC + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r5, #3] + cmp r1, #3 + beq _080F4CE4 + cmp r1, #3 + bgt _080F4CD0 + cmp r1, #2 + beq _080F4CD6 + b _080F4DF4 + .align 2, 0 +_080F4CC8: .4byte gUnknown_2021C54 +_080F4CCC: .4byte gUnknown_8580CD1 +_080F4CD0: + cmp r1, #4 + beq _080F4CF0 + b _080F4DF4 +_080F4CD6: + ldr r1, _080F4CE0 + movs r0, #7 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4CE0: .4byte gUnknown_2039CFC +_080F4CE4: + ldr r1, _080F4CEC + movs r0, #6 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4CEC: .4byte gUnknown_2039CFC +_080F4CF0: + ldr r1, _080F4CF8 + movs r0, #5 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4CF8: .4byte gUnknown_2039CFC +_080F4CFC: + ldr r0, _080F4D1C + ldrb r2, [r5, #6] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r4, _080F4D20 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F4D24 + ldrb r2, [r5, #7] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + b _080F4D36 + .align 2, 0 +_080F4D1C: .4byte gUnknown_2021C54 +_080F4D20: .4byte gUnknown_8580CD1 +_080F4D24: .4byte gUnknown_2021C68 +_080F4D28: + ldr r0, _080F4D44 + ldrb r2, [r5, #6] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080F4D48 + adds r1, r1, r2 +_080F4D36: + bl sub_080088B8 + ldr r1, _080F4D4C + movs r0, #8 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4D44: .4byte gUnknown_2021C54 +_080F4D48: .4byte gUnknown_8580CD1 +_080F4D4C: .4byte gUnknown_2039CFC +_080F4D50: + movs r0, #8 + strb r0, [r2] + b _080F4DF4 +_080F4D56: + ldr r0, _080F4D70 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r1, [r5, #2] + cmp r1, #0x18 + bhi _080F4D78 + ldr r1, _080F4D74 + movs r0, #0xc + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4D70: .4byte gUnknown_2021C40 +_080F4D74: .4byte gUnknown_2039CFC +_080F4D78: + cmp r1, #0x31 + bhi _080F4D88 + ldr r1, _080F4D84 + movs r0, #0xb + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4D84: .4byte gUnknown_2039CFC +_080F4D88: + cmp r1, #0x45 + bhi _080F4D98 + ldr r1, _080F4D94 + movs r0, #0xa + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4D94: .4byte gUnknown_2039CFC +_080F4D98: + ldr r1, _080F4DA0 + movs r0, #9 + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4DA0: .4byte gUnknown_2039CFC +_080F4DA4: + ldr r0, _080F4DD8 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4DDC + ldrh r2, [r5, #8] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4DE0 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4DE4 + ldrh r1, [r5, #0xa] + lsls r1, r1, #3 + ldr r2, _080F4DE8 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F4DEC + movs r0, #0xd + strb r0, [r1] + b _080F4DF4 + .align 2, 0 +_080F4DD8: .4byte gUnknown_2021C40 +_080F4DDC: .4byte gUnknown_2021C54 +_080F4DE0: .4byte gUnknown_82EA31C +_080F4DE4: .4byte gUnknown_2021C68 +_080F4DE8: .4byte gUnknown_82EACC4 +_080F4DEC: .4byte gUnknown_2039CFC +_080F4DF0: + bl sub_080F5F74 +_080F4DF4: + ldr r0, _080F4E08 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F4E08: .4byte gUnknown_8568F08 + thumb_func_end sub_080F4BBC + + thumb_func_start sub_080F4E0C +sub_080F4E0C: @ 0x080F4E0C + push {r4, r5, r6, lr} + ldr r2, _080F4E48 + ldr r0, _080F4E4C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F4E50 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F4E54 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F4E58 + ldrb r6, [r0] + ldr r0, _080F4E5C + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r5, #4] + cmp r0, #0 + bne _080F4E68 + ldr r0, _080F4E60 + ldr r1, _080F4E64 + bl sub_080088B8 + b _080F4E70 + .align 2, 0 +_080F4E48: .4byte gUnknown_3005AEC +_080F4E4C: .4byte gUnknown_2037280 +_080F4E50: .4byte 0x000027CC +_080F4E54: .4byte gUnknown_2037290 +_080F4E58: .4byte gUnknown_2039CFC +_080F4E5C: .4byte gUnknown_2021C40 +_080F4E60: .4byte gUnknown_2021C54 +_080F4E64: .4byte gUnknown_85CBFEC +_080F4E68: + ldrb r1, [r5, #4] + movs r0, #1 + bl sub_080EFE44 +_080F4E70: + ldr r4, _080F4E98 + ldrh r0, [r5, #2] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + bl sub_080F5F74 + ldr r1, _080F4E9C + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F4E98: .4byte gUnknown_2021C68 +_080F4E9C: .4byte gUnknown_8568F40 + thumb_func_end sub_080F4E0C + + thumb_func_start sub_080F4EA0 +sub_080F4EA0: @ 0x080F4EA0 + push {r4, r5, r6, lr} + ldr r2, _080F4ED0 + ldr r0, _080F4ED4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F4ED8 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F4EDC + movs r0, #0 + strh r0, [r1] + ldr r0, _080F4EE0 + ldrb r6, [r0] + cmp r6, #6 + bls _080F4EC6 + b _080F508A +_080F4EC6: + lsls r0, r6, #2 + ldr r1, _080F4EE4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F4ED0: .4byte gUnknown_3005AEC +_080F4ED4: .4byte gUnknown_2037280 +_080F4ED8: .4byte 0x000027CC +_080F4EDC: .4byte gUnknown_2037290 +_080F4EE0: .4byte gUnknown_2039CFC +_080F4EE4: .4byte _080F4EE8 +_080F4EE8: @ jump table + .4byte _080F4F04 @ case 0 + .4byte _080F4F4C @ case 1 + .4byte _080F4F98 @ case 2 + .4byte _080F4FF0 @ case 3 + .4byte _080F5024 @ case 4 + .4byte _080F5048 @ case 5 + .4byte _080F506C @ case 6 +_080F4F04: + ldr r0, _080F4F38 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4F3C + ldrh r2, [r5, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F4F40 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F4F44 + ldrh r2, [r5, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldr r1, _080F4F48 + movs r0, #1 + strb r0, [r1] + b _080F508A + .align 2, 0 +_080F4F38: .4byte gUnknown_2021C40 +_080F4F3C: .4byte gUnknown_2021C54 +_080F4F40: .4byte gUnknown_82EA31C +_080F4F44: .4byte gUnknown_2021C68 +_080F4F48: .4byte gUnknown_2039CFC +_080F4F4C: + ldr r0, _080F4F80 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F4F84 + ldrh r2, [r5, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4F88 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _080F4F8C + ldrh r1, [r5, #2] + lsls r1, r1, #3 + ldr r2, _080F4F90 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _080F4F94 + movs r0, #2 + strb r0, [r1] + b _080F508A + .align 2, 0 +_080F4F80: .4byte gUnknown_2021C40 +_080F4F84: .4byte gUnknown_2021C54 +_080F4F88: .4byte gUnknown_82EA31C +_080F4F8C: .4byte gUnknown_2021C68 +_080F4F90: .4byte gUnknown_82EACC4 +_080F4F94: .4byte gUnknown_2039CFC +_080F4F98: + ldr r0, _080F4FBC + ldrh r2, [r5, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F4FC0 + adds r1, r1, r2 + bl sub_080088B8 + ldrb r1, [r5, #0x10] + cmp r1, #2 + beq _080F4FD8 + cmp r1, #2 + bgt _080F4FC4 + cmp r1, #1 + beq _080F4FCA + b _080F5056 + .align 2, 0 +_080F4FBC: .4byte gUnknown_2021C40 +_080F4FC0: .4byte gUnknown_82EA31C +_080F4FC4: + cmp r1, #3 + beq _080F4FE4 + b _080F5056 +_080F4FCA: + ldr r1, _080F4FD4 + movs r0, #5 + strb r0, [r1] + b _080F508A + .align 2, 0 +_080F4FD4: .4byte gUnknown_2039CFC +_080F4FD8: + ldr r1, _080F4FE0 + movs r0, #4 + strb r0, [r1] + b _080F508A + .align 2, 0 +_080F4FE0: .4byte gUnknown_2039CFC +_080F4FE4: + ldr r0, _080F4FEC + strb r1, [r0] + b _080F508A + .align 2, 0 +_080F4FEC: .4byte gUnknown_2039CFC +_080F4FF0: + ldr r0, _080F5014 + ldrh r1, [r5, #8] + lsls r1, r1, #3 + ldr r4, _080F5018 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F501C + ldrh r1, [r5, #0xa] + lsls r1, r1, #3 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F5020 + ldrh r1, [r5, #0xc] + lsls r1, r1, #3 + adds r1, r1, r4 + b _080F5052 + .align 2, 0 +_080F5014: .4byte gUnknown_2021C40 +_080F5018: .4byte gUnknown_82EACC4 +_080F501C: .4byte gUnknown_2021C54 +_080F5020: .4byte gUnknown_2021C68 +_080F5024: + ldr r0, _080F503C + ldrh r1, [r5, #8] + lsls r1, r1, #3 + ldr r4, _080F5040 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F5044 + ldrh r1, [r5, #0xa] + lsls r1, r1, #3 + adds r1, r1, r4 + b _080F5052 + .align 2, 0 +_080F503C: .4byte gUnknown_2021C40 +_080F5040: .4byte gUnknown_82EACC4 +_080F5044: .4byte gUnknown_2021C54 +_080F5048: + ldr r0, _080F5060 + ldrh r1, [r5, #8] + lsls r1, r1, #3 + ldr r2, _080F5064 + adds r1, r1, r2 +_080F5052: + bl sub_080088B8 +_080F5056: + ldr r1, _080F5068 + movs r0, #6 + strb r0, [r1] + b _080F508A + .align 2, 0 +_080F5060: .4byte gUnknown_2021C54 +_080F5064: .4byte gUnknown_82EACC4 +_080F5068: .4byte gUnknown_2039CFC +_080F506C: + ldr r0, _080F509C + ldrh r1, [r5, #0xe] + lsls r1, r1, #3 + ldr r4, _080F50A0 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F50A4 + ldrh r1, [r5, #2] + lsls r1, r1, #3 + adds r1, r1, r4 + bl sub_080088B8 + bl sub_080F5F74 +_080F508A: + ldr r0, _080F50A8 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F509C: .4byte gUnknown_2021C40 +_080F50A0: .4byte gUnknown_82EACC4 +_080F50A4: .4byte gUnknown_2021C54 +_080F50A8: .4byte gUnknown_8568F44 + thumb_func_end sub_080F4EA0 + + thumb_func_start sub_080F50AC +sub_080F50AC: @ 0x080F50AC + push {r4, r5, lr} + ldr r2, _080F50DC + ldr r0, _080F50E0 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F50E4 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F50E8 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F50EC + ldrb r5, [r0] + cmp r5, #5 + bls _080F50D2 + b _080F51BE +_080F50D2: + lsls r0, r5, #2 + ldr r1, _080F50F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F50DC: .4byte gUnknown_3005AEC +_080F50E0: .4byte gUnknown_2037280 +_080F50E4: .4byte 0x000027CC +_080F50E8: .4byte gUnknown_2037290 +_080F50EC: .4byte gUnknown_2039CFC +_080F50F0: .4byte _080F50F4 +_080F50F4: @ jump table + .4byte _080F510C @ case 0 + .4byte _080F5170 @ case 1 + .4byte _080F5170 @ case 2 + .4byte _080F5170 @ case 3 + .4byte _080F5170 @ case 4 + .4byte _080F51A0 @ case 5 +_080F510C: + ldr r0, _080F5134 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F5138 + adds r1, r4, #2 + bl sub_080088B8 + ldr r0, _080F513C + ldrh r1, [r4, #0x14] + bl sub_0811F180 + ldrb r1, [r4, #0x16] + cmp r1, #0x59 + bls _080F5144 + ldr r1, _080F5140 + movs r0, #1 + strb r0, [r1] + b _080F51BE + .align 2, 0 +_080F5134: .4byte gUnknown_2021C40 +_080F5138: .4byte gUnknown_2021C54 +_080F513C: .4byte gUnknown_2021C68 +_080F5140: .4byte gUnknown_2039CFC +_080F5144: + cmp r1, #0x45 + bls _080F5154 + ldr r1, _080F5150 + movs r0, #2 + strb r0, [r1] + b _080F51BE + .align 2, 0 +_080F5150: .4byte gUnknown_2039CFC +_080F5154: + cmp r1, #0x1d + bls _080F5164 + ldr r1, _080F5160 + movs r0, #3 + strb r0, [r1] + b _080F51BE + .align 2, 0 +_080F5160: .4byte gUnknown_2039CFC +_080F5164: + ldr r1, _080F516C + movs r0, #4 + strb r0, [r1] + b _080F51BE + .align 2, 0 +_080F516C: .4byte gUnknown_2039CFC +_080F5170: + ldr r0, _080F5194 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F5198 + adds r1, r4, #2 + bl sub_080088B8 + ldrb r1, [r4, #0x16] + movs r0, #2 + bl sub_080EFE44 + ldr r1, _080F519C + movs r0, #5 + strb r0, [r1] + b _080F51BE + .align 2, 0 +_080F5194: .4byte gUnknown_2021C40 +_080F5198: .4byte gUnknown_2021C54 +_080F519C: .4byte gUnknown_2039CFC +_080F51A0: + ldr r0, _080F51D0 + adds r1, r4, #0 + adds r1, #0xc + bl sub_080088B8 + ldr r0, _080F51D4 + adds r1, r4, #2 + bl sub_080088B8 + ldr r0, _080F51D8 + ldrh r1, [r4, #0x14] + bl sub_0811F180 + bl sub_080F5F74 +_080F51BE: + ldr r0, _080F51DC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F51D0: .4byte gUnknown_2021C40 +_080F51D4: .4byte gUnknown_2021C54 +_080F51D8: .4byte gUnknown_2021C68 +_080F51DC: .4byte gUnknown_8568DCC + thumb_func_end sub_080F50AC + + thumb_func_start sub_080F51E0 +sub_080F51E0: @ 0x080F51E0 + push {r4, r5, lr} + ldr r2, _080F5214 + ldr r0, _080F5218 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F521C + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F5220 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F5224 + ldrb r5, [r0] + adds r2, r0, #0 + cmp r5, #0xb + bls _080F5208 + b _080F5358 +_080F5208: + lsls r0, r5, #2 + ldr r1, _080F5228 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5214: .4byte gUnknown_3005AEC +_080F5218: .4byte gUnknown_2037280 +_080F521C: .4byte 0x000027CC +_080F5220: .4byte gUnknown_2037290 +_080F5224: .4byte gUnknown_2039CFC +_080F5228: .4byte _080F522C +_080F522C: @ jump table + .4byte _080F525C @ case 0 + .4byte _080F5334 @ case 1 + .4byte _080F5334 @ case 2 + .4byte _080F5334 @ case 3 + .4byte _080F5334 @ case 4 + .4byte _080F5334 @ case 5 + .4byte _080F5334 @ case 6 + .4byte _080F5334 @ case 7 + .4byte _080F5334 @ case 8 + .4byte _080F5334 @ case 9 + .4byte _080F5334 @ case 10 + .4byte _080F533A @ case 11 +_080F525C: + ldr r0, _080F528C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + adds r0, r4, #0 + adds r0, #0x23 + ldrb r0, [r0] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x22 + ldrb r1, [r1] + adds r0, r0, r1 + movs r1, #0xa + bl __umodsi3 + cmp r0, #9 + bls _080F5282 + b _080F5358 +_080F5282: + lsls r0, r0, #2 + ldr r1, _080F5290 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F528C: .4byte gUnknown_2021C40 +_080F5290: .4byte _080F5294 +_080F5294: @ jump table + .4byte _080F52BC @ case 0 + .4byte _080F52C8 @ case 1 + .4byte _080F52D4 @ case 2 + .4byte _080F52E0 @ case 3 + .4byte _080F52EC @ case 4 + .4byte _080F52F8 @ case 5 + .4byte _080F5304 @ case 6 + .4byte _080F5310 @ case 7 + .4byte _080F531C @ case 8 + .4byte _080F5328 @ case 9 +_080F52BC: + ldr r1, _080F52C4 + movs r0, #1 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F52C4: .4byte gUnknown_2039CFC +_080F52C8: + ldr r1, _080F52D0 + movs r0, #2 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F52D0: .4byte gUnknown_2039CFC +_080F52D4: + ldr r1, _080F52DC + movs r0, #3 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F52DC: .4byte gUnknown_2039CFC +_080F52E0: + ldr r1, _080F52E8 + movs r0, #4 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F52E8: .4byte gUnknown_2039CFC +_080F52EC: + ldr r1, _080F52F4 + movs r0, #5 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F52F4: .4byte gUnknown_2039CFC +_080F52F8: + ldr r1, _080F5300 + movs r0, #6 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F5300: .4byte gUnknown_2039CFC +_080F5304: + ldr r1, _080F530C + movs r0, #7 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F530C: .4byte gUnknown_2039CFC +_080F5310: + ldr r1, _080F5318 + movs r0, #8 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F5318: .4byte gUnknown_2039CFC +_080F531C: + ldr r1, _080F5324 + movs r0, #9 + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F5324: .4byte gUnknown_2039CFC +_080F5328: + ldr r1, _080F5330 + movs r0, #0xa + strb r0, [r1] + b _080F5358 + .align 2, 0 +_080F5330: .4byte gUnknown_2039CFC +_080F5334: + movs r0, #0xb + strb r0, [r2] + b _080F5358 +_080F533A: + ldr r0, _080F536C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F5370 + ldrh r1, [r4, #4] + bl sub_0811F180 + ldr r0, _080F5374 + ldrh r1, [r4, #6] + bl sub_0811F180 + bl sub_080F5F74 +_080F5358: + ldr r0, _080F5378 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F536C: .4byte gUnknown_2021C40 +_080F5370: .4byte gUnknown_2021C54 +_080F5374: .4byte gUnknown_2021C68 +_080F5378: .4byte gUnknown_8568F60 + thumb_func_end sub_080F51E0 + + thumb_func_start sub_080F537C +sub_080F537C: @ 0x080F537C + push {r4, r5, lr} + ldr r2, _080F53AC + ldr r0, _080F53B0 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F53B4 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F53B8 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F53BC + ldrb r5, [r0] + cmp r5, #0xf + bls _080F53A2 + b _080F5598 +_080F53A2: + lsls r0, r5, #2 + ldr r1, _080F53C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F53AC: .4byte gUnknown_3005AEC +_080F53B0: .4byte gUnknown_2037280 +_080F53B4: .4byte 0x000027CC +_080F53B8: .4byte gUnknown_2037290 +_080F53BC: .4byte gUnknown_2039CFC +_080F53C0: .4byte _080F53C4 +_080F53C4: @ jump table + .4byte _080F5404 @ case 0 + .4byte _080F544C @ case 1 + .4byte _080F544C @ case 2 + .4byte _080F544C @ case 3 + .4byte _080F547C @ case 4 + .4byte _080F557C @ case 5 + .4byte _080F557C @ case 6 + .4byte _080F557C @ case 7 + .4byte _080F557C @ case 8 + .4byte _080F557C @ case 9 + .4byte _080F557C @ case 10 + .4byte _080F557C @ case 11 + .4byte _080F557C @ case 12 + .4byte _080F557C @ case 13 + .4byte _080F557C @ case 14 + .4byte _080F5594 @ case 15 +_080F5404: + ldr r0, _080F5424 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F5428 + adds r1, r4, #4 + bl sub_080088B8 + ldrb r1, [r4, #2] + cmp r1, #9 + bhi _080F5430 + ldr r1, _080F542C + movs r0, #1 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5424: .4byte gUnknown_2021C40 +_080F5428: .4byte gUnknown_2021C54 +_080F542C: .4byte gUnknown_2039CFC +_080F5430: + cmp r1, #0x13 + bhi _080F5440 + ldr r1, _080F543C + movs r0, #2 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F543C: .4byte gUnknown_2039CFC +_080F5440: + ldr r1, _080F5448 + movs r0, #3 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5448: .4byte gUnknown_2039CFC +_080F544C: + ldr r0, _080F5470 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r0, _080F5474 + adds r1, r4, #4 + bl sub_080088B8 + ldrb r1, [r4, #2] + movs r0, #2 + bl sub_080EFE44 + ldr r1, _080F5478 + movs r0, #4 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5470: .4byte gUnknown_2021C40 +_080F5474: .4byte gUnknown_2021C54 +_080F5478: .4byte gUnknown_2039CFC +_080F547C: + ldr r0, _080F5498 + adds r1, r4, #4 + bl sub_080088B8 + ldrb r0, [r4, #3] + cmp r0, #0x18 + bls _080F548C + b _080F5598 +_080F548C: + lsls r0, r0, #2 + ldr r1, _080F549C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5498: .4byte gUnknown_2021C54 +_080F549C: .4byte _080F54A0 +_080F54A0: @ jump table + .4byte _080F5504 @ case 0 + .4byte _080F5510 @ case 1 + .4byte _080F5510 @ case 2 + .4byte _080F5510 @ case 3 + .4byte _080F5510 @ case 4 + .4byte _080F551C @ case 5 + .4byte _080F551C @ case 6 + .4byte _080F551C @ case 7 + .4byte _080F551C @ case 8 + .4byte _080F5528 @ case 9 + .4byte _080F5528 @ case 10 + .4byte _080F5528 @ case 11 + .4byte _080F5528 @ case 12 + .4byte _080F5534 @ case 13 + .4byte _080F5534 @ case 14 + .4byte _080F5534 @ case 15 + .4byte _080F5534 @ case 16 + .4byte _080F5540 @ case 17 + .4byte _080F5540 @ case 18 + .4byte _080F5540 @ case 19 + .4byte _080F5540 @ case 20 + .4byte _080F554C @ case 21 + .4byte _080F5558 @ case 22 + .4byte _080F5564 @ case 23 + .4byte _080F5570 @ case 24 +_080F5504: + ldr r1, _080F550C + movs r0, #5 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F550C: .4byte gUnknown_2039CFC +_080F5510: + ldr r1, _080F5518 + movs r0, #6 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5518: .4byte gUnknown_2039CFC +_080F551C: + ldr r1, _080F5524 + movs r0, #7 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5524: .4byte gUnknown_2039CFC +_080F5528: + ldr r1, _080F5530 + movs r0, #8 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5530: .4byte gUnknown_2039CFC +_080F5534: + ldr r1, _080F553C + movs r0, #9 + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F553C: .4byte gUnknown_2039CFC +_080F5540: + ldr r1, _080F5548 + movs r0, #0xa + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5548: .4byte gUnknown_2039CFC +_080F554C: + ldr r1, _080F5554 + movs r0, #0xb + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5554: .4byte gUnknown_2039CFC +_080F5558: + ldr r1, _080F5560 + movs r0, #0xc + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5560: .4byte gUnknown_2039CFC +_080F5564: + ldr r1, _080F556C + movs r0, #0xd + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F556C: .4byte gUnknown_2039CFC +_080F5570: + ldr r1, _080F5578 + movs r0, #0xe + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F5578: .4byte gUnknown_2039CFC +_080F557C: + ldr r0, _080F558C + adds r1, r4, #4 + bl sub_080088B8 + ldr r1, _080F5590 + movs r0, #0xf + strb r0, [r1] + b _080F5598 + .align 2, 0 +_080F558C: .4byte gUnknown_2021C54 +_080F5590: .4byte gUnknown_2039CFC +_080F5594: + bl sub_080F5F74 +_080F5598: + ldr r0, _080F55AC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F55AC: .4byte gUnknown_8568F90 + thumb_func_end sub_080F537C + + thumb_func_start sub_080F55B0 +sub_080F55B0: @ 0x080F55B0 + push {r4, r5, r6, lr} + ldr r2, _080F55E4 + ldr r0, _080F55E8 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F55EC + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F55F0 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F55F4 + ldrb r6, [r0] + adds r2, r0, #0 + cmp r6, #0x12 + bls _080F55D8 + b _080F583E +_080F55D8: + lsls r0, r6, #2 + ldr r1, _080F55F8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F55E4: .4byte gUnknown_3005AEC +_080F55E8: .4byte gUnknown_2037280 +_080F55EC: .4byte 0x000027CC +_080F55F0: .4byte gUnknown_2037290 +_080F55F4: .4byte gUnknown_2039CFC +_080F55F8: .4byte _080F55FC +_080F55FC: @ jump table + .4byte _080F5648 @ case 0 + .4byte _080F5728 @ case 1 + .4byte _080F56E2 @ case 2 + .4byte _080F5704 @ case 3 + .4byte _080F5704 @ case 4 + .4byte _080F5728 @ case 5 + .4byte _080F5728 @ case 6 + .4byte _080F5728 @ case 7 + .4byte _080F5728 @ case 8 + .4byte _080F5728 @ case 9 + .4byte _080F5728 @ case 10 + .4byte _080F5728 @ case 11 + .4byte _080F5728 @ case 12 + .4byte _080F5728 @ case 13 + .4byte _080F574C @ case 14 + .4byte _080F578C @ case 15 + .4byte _080F57B8 @ case 16 + .4byte _080F5808 @ case 17 + .4byte _080F5830 @ case 18 +_080F5648: + ldrb r0, [r5, #0xd] + subs r0, #1 + cmp r0, #0xc + bls _080F5652 + b _080F583E +_080F5652: + lsls r0, r0, #2 + ldr r1, _080F565C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F565C: .4byte _080F5660 +_080F5660: @ jump table + .4byte _080F5694 @ case 0 + .4byte _080F569A @ case 1 + .4byte _080F56A0 @ case 2 + .4byte _080F56A6 @ case 3 + .4byte _080F56AC @ case 4 + .4byte _080F56B2 @ case 5 + .4byte _080F56B8 @ case 6 + .4byte _080F56BE @ case 7 + .4byte _080F56C4 @ case 8 + .4byte _080F56CA @ case 9 + .4byte _080F56D0 @ case 10 + .4byte _080F56D6 @ case 11 + .4byte _080F56DC @ case 12 +_080F5694: + movs r0, #1 + strb r0, [r2] + b _080F583E +_080F569A: + movs r0, #2 + strb r0, [r2] + b _080F583E +_080F56A0: + movs r0, #3 + strb r0, [r2] + b _080F583E +_080F56A6: + movs r0, #4 + strb r0, [r2] + b _080F583E +_080F56AC: + movs r0, #5 + strb r0, [r2] + b _080F583E +_080F56B2: + movs r0, #6 + strb r0, [r2] + b _080F583E +_080F56B8: + movs r0, #7 + strb r0, [r2] + b _080F583E +_080F56BE: + movs r0, #8 + strb r0, [r2] + b _080F583E +_080F56C4: + movs r0, #9 + strb r0, [r2] + b _080F583E +_080F56CA: + movs r0, #0xa + strb r0, [r2] + b _080F583E +_080F56D0: + movs r0, #0xb + strb r0, [r2] + b _080F583E +_080F56D6: + movs r0, #0xc + strb r0, [r2] + b _080F583E +_080F56DC: + movs r0, #0xd + strb r0, [r2] + b _080F583E +_080F56E2: + ldr r0, _080F56FC + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r5, #2] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5700 + movs r0, #0x10 + strb r0, [r1] + b _080F583E + .align 2, 0 +_080F56FC: .4byte gUnknown_2021C40 +_080F5700: .4byte gUnknown_2039CFC +_080F5704: + ldr r0, _080F5720 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r5, #2] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5724 + movs r0, #0xf + strb r0, [r1] + b _080F583E + .align 2, 0 +_080F5720: .4byte gUnknown_2021C40 +_080F5724: .4byte gUnknown_2039CFC +_080F5728: + ldr r0, _080F5744 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r5, #2] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5748 + movs r0, #0xe + strb r0, [r1] + b _080F583E + .align 2, 0 +_080F5744: .4byte gUnknown_2021C40 +_080F5748: .4byte gUnknown_2039CFC +_080F574C: + ldr r0, _080F577C + ldrh r2, [r5, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F5780 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F5784 + ldrh r2, [r5, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F5788 + ldrh r2, [r5, #8] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + b _080F5816 + .align 2, 0 +_080F577C: .4byte gUnknown_2021C40 +_080F5780: .4byte gUnknown_82EA31C +_080F5784: .4byte gUnknown_2021C54 +_080F5788: .4byte gUnknown_2021C68 +_080F578C: + ldr r0, _080F57AC + ldrh r2, [r5, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F57B0 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F57B4 + ldrh r2, [r5, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + b _080F5816 + .align 2, 0 +_080F57AC: .4byte gUnknown_2021C40 +_080F57B0: .4byte gUnknown_82EA31C +_080F57B4: .4byte gUnknown_2021C54 +_080F57B8: + ldr r0, _080F57F4 + ldrh r2, [r5, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r4, _080F57F8 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F57FC + ldrh r2, [r5, #6] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _080F5800 + ldrh r2, [r5, #8] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r1, r4 + bl sub_080088B8 + ldr r1, _080F5804 + movs r0, #0x11 + strb r0, [r1] + b _080F583E + .align 2, 0 +_080F57F4: .4byte gUnknown_2021C40 +_080F57F8: .4byte gUnknown_82EA31C +_080F57FC: .4byte gUnknown_2021C54 +_080F5800: .4byte gUnknown_2021C68 +_080F5804: .4byte gUnknown_2039CFC +_080F5808: + ldr r0, _080F5824 + ldrh r2, [r5, #0xa] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + ldr r2, _080F5828 + adds r1, r1, r2 +_080F5816: + bl sub_080088B8 + ldr r1, _080F582C + movs r0, #0x12 + strb r0, [r1] + b _080F583E + .align 2, 0 +_080F5824: .4byte gUnknown_2021C40 +_080F5828: .4byte gUnknown_82EA31C +_080F582C: .4byte gUnknown_2039CFC +_080F5830: + ldr r0, _080F5850 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F583E: + ldr r0, _080F5854 + lsls r1, r6, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5850: .4byte gUnknown_2021C40 +_080F5854: .4byte gUnknown_8568FD0 + thumb_func_end sub_080F55B0 + + thumb_func_start sub_080F5858 +sub_080F5858: @ 0x080F5858 + push {r4, r5, lr} + ldr r2, _080F5888 + ldr r0, _080F588C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F5890 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F5894 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F5898 + ldrb r5, [r0] + cmp r5, #8 + bls _080F587E + b _080F598A +_080F587E: + lsls r0, r5, #2 + ldr r1, _080F589C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5888: .4byte gUnknown_3005AEC +_080F588C: .4byte gUnknown_2037280 +_080F5890: .4byte 0x000027CC +_080F5894: .4byte gUnknown_2037290 +_080F5898: .4byte gUnknown_2039CFC +_080F589C: .4byte _080F58A0 +_080F58A0: @ jump table + .4byte _080F58C4 @ case 0 + .4byte _080F5958 @ case 1 + .4byte _080F5958 @ case 2 + .4byte _080F5958 @ case 3 + .4byte _080F5958 @ case 4 + .4byte _080F5958 @ case 5 + .4byte _080F5958 @ case 6 + .4byte _080F5958 @ case 7 + .4byte _080F597C @ case 8 +_080F58C4: + ldr r0, _080F58E0 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r4, #4] + cmp r0, #6 + bhi _080F598A + lsls r0, r0, #2 + ldr r1, _080F58E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F58E0: .4byte gUnknown_2021C40 +_080F58E4: .4byte _080F58E8 +_080F58E8: @ jump table + .4byte _080F5904 @ case 0 + .4byte _080F5910 @ case 1 + .4byte _080F591C @ case 2 + .4byte _080F5928 @ case 3 + .4byte _080F5934 @ case 4 + .4byte _080F5940 @ case 5 + .4byte _080F594C @ case 6 +_080F5904: + ldr r1, _080F590C + movs r0, #1 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F590C: .4byte gUnknown_2039CFC +_080F5910: + ldr r1, _080F5918 + movs r0, #2 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5918: .4byte gUnknown_2039CFC +_080F591C: + ldr r1, _080F5924 + movs r0, #3 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5924: .4byte gUnknown_2039CFC +_080F5928: + ldr r1, _080F5930 + movs r0, #4 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5930: .4byte gUnknown_2039CFC +_080F5934: + ldr r1, _080F593C + movs r0, #5 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F593C: .4byte gUnknown_2039CFC +_080F5940: + ldr r1, _080F5948 + movs r0, #6 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5948: .4byte gUnknown_2039CFC +_080F594C: + ldr r1, _080F5954 + movs r0, #7 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5954: .4byte gUnknown_2039CFC +_080F5958: + ldr r0, _080F5974 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5978 + movs r0, #8 + strb r0, [r1] + b _080F598A + .align 2, 0 +_080F5974: .4byte gUnknown_2021C40 +_080F5978: .4byte gUnknown_2039CFC +_080F597C: + ldr r0, _080F599C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 +_080F598A: + ldr r0, _080F59A0 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F599C: .4byte gUnknown_2021C40 +_080F59A0: .4byte gUnknown_856901C + thumb_func_end sub_080F5858 + + thumb_func_start sub_080F59A4 +sub_080F59A4: @ 0x080F59A4 + push {r4, lr} + movs r1, #0 + movs r2, #0 + ldr r3, [r0, #0xc] + movs r4, #1 +_080F59AE: + adds r0, r3, #0 + lsrs r0, r1 + ands r0, r4 + cmp r0, #0 + beq _080F59BE + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080F59BE: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1f + bls _080F59AE + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080F59A4 + + thumb_func_start sub_080F59D0 +sub_080F59D0: @ 0x080F59D0 + push {r4, r5, r6, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r2, #0 + movs r3, #0 + ldr r1, [r0, #0xc] + movs r5, #1 + ldr r6, _080F59F4 +_080F59E0: + adds r0, r1, #0 + lsrs r0, r2 + ands r0, r5 + cmp r0, #0 + beq _080F59FE + cmp r3, r4 + bne _080F59F8 + adds r0, r2, r6 + ldrb r0, [r0] + b _080F5A0A + .align 2, 0 +_080F59F4: .4byte gUnknown_856913C +_080F59F8: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080F59FE: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _080F59E0 + movs r0, #0 +_080F5A0A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080F59D0 + + thumb_func_start sub_080F5A10 +sub_080F5A10: @ 0x080F5A10 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _080F5A4C + ldr r0, _080F5A50 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F5A54 + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldr r1, _080F5A58 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F5A5C + ldrb r2, [r0] + mov sb, r2 + adds r2, r0, #0 + mov r0, sb + cmp r0, #0x2b + bls _080F5A42 + b _080F5D36 +_080F5A42: + lsls r0, r0, #2 + ldr r1, _080F5A60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5A4C: .4byte gUnknown_3005AEC +_080F5A50: .4byte gUnknown_2037280 +_080F5A54: .4byte 0x000027CC +_080F5A58: .4byte gUnknown_2037290 +_080F5A5C: .4byte gUnknown_2039CFC +_080F5A60: .4byte _080F5A64 +_080F5A64: @ jump table + .4byte _080F5B14 @ case 0 + .4byte _080F5B68 @ case 1 + .4byte _080F5BE0 @ case 2 + .4byte _080F5C5C @ case 3 + .4byte _080F5CAC @ case 4 + .4byte _080F5CAC @ case 5 + .4byte _080F5CAC @ case 6 + .4byte _080F5CD4 @ case 7 + .4byte _080F5CF4 @ case 8 + .4byte _080F5CF8 @ case 9 + .4byte _080F5D32 @ case 10 + .4byte _080F5D32 @ case 11 + .4byte _080F5D32 @ case 12 + .4byte _080F5D32 @ case 13 + .4byte _080F5D32 @ case 14 + .4byte _080F5D32 @ case 15 + .4byte _080F5D32 @ case 16 + .4byte _080F5D32 @ case 17 + .4byte _080F5D32 @ case 18 + .4byte _080F5CFC @ case 19 + .4byte _080F5D1C @ case 20 + .4byte _080F5D32 @ case 21 + .4byte _080F5D32 @ case 22 + .4byte _080F5D32 @ case 23 + .4byte _080F5D32 @ case 24 + .4byte _080F5D32 @ case 25 + .4byte _080F5D32 @ case 26 + .4byte _080F5D32 @ case 27 + .4byte _080F5D32 @ case 28 + .4byte _080F5D32 @ case 29 + .4byte _080F5D32 @ case 30 + .4byte _080F5D32 @ case 31 + .4byte _080F5D32 @ case 32 + .4byte _080F5D32 @ case 33 + .4byte _080F5D32 @ case 34 + .4byte _080F5D32 @ case 35 + .4byte _080F5D32 @ case 36 + .4byte _080F5D32 @ case 37 + .4byte _080F5D32 @ case 38 + .4byte _080F5D32 @ case 39 + .4byte _080F5D32 @ case 40 + .4byte _080F5D32 @ case 41 + .4byte _080F5D32 @ case 42 + .4byte _080F5D32 @ case 43 +_080F5B14: + ldr r0, _080F5B3C + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F5B40 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + adds r0, r5, #0 + bl sub_080F59A4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080F5B48 + ldr r1, _080F5B44 + movs r0, #8 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5B3C: .4byte gUnknown_2021C40 +_080F5B40: .4byte gUnknown_2021C54 +_080F5B44: .4byte gUnknown_2039CFC +_080F5B48: + movs r0, #1 + strb r0, [r5, #0x12] + bl sub_0806F050 + ldr r4, _080F5B64 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + strb r0, [r4] + ldrb r1, [r4] + b _080F5C42 + .align 2, 0 +_080F5B64: .4byte gUnknown_2039CFD +_080F5B68: + ldr r0, _080F5B88 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + adds r0, r5, #0 + bl sub_080F59A4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #1 + beq _080F5BF8 + cmp r6, #2 + beq _080F5B8C + movs r4, #0 + b _080F5BA6 + .align 2, 0 +_080F5B88: .4byte gUnknown_2021C54 +_080F5B8C: + strb r6, [r5, #0x12] + ldr r0, _080F5B9C + ldrb r0, [r0] + cmp r0, #0 + bne _080F5BA0 + adds r0, r5, #0 + movs r1, #1 + b _080F5C44 + .align 2, 0 +_080F5B9C: .4byte gUnknown_2039CFD +_080F5BA0: + adds r0, r5, #0 + movs r1, #0 + b _080F5C44 +_080F5BA6: + bl sub_0806F050 + ldr r7, _080F5BD8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + strb r0, [r7, #1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r7] + cmp r0, r1 + bne _080F5BCE + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _080F5BDC + cmp r4, r0 + bls _080F5BA6 +_080F5BCE: + movs r0, #2 + strb r0, [r5, #0x12] + ldrb r1, [r7, #1] + b _080F5C42 + .align 2, 0 +_080F5BD8: .4byte gUnknown_2039CFD +_080F5BDC: .4byte 0x0000FFFE +_080F5BE0: + ldr r0, _080F5C00 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + adds r0, r5, #0 + bl sub_080F59A4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bne _080F5C08 +_080F5BF8: + ldr r1, _080F5C04 + movs r0, #9 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5C00: .4byte gUnknown_2021C54 +_080F5C04: .4byte gUnknown_2039CFC +_080F5C08: + movs r4, #0 + ldr r7, _080F5C50 + ldr r2, _080F5C54 + mov r8, r2 +_080F5C10: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + strb r0, [r7, #2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r7] + cmp r0, r1 + beq _080F5C30 + ldrb r2, [r7, #1] + cmp r0, r2 + bne _080F5C3A +_080F5C30: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r8 + bls _080F5C10 +_080F5C3A: + movs r0, #3 + strb r0, [r5, #0x12] + ldr r0, _080F5C50 + ldrb r1, [r0, #2] +_080F5C42: + adds r0, r5, #0 +_080F5C44: + bl sub_080F59D0 + ldr r1, _080F5C58 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5C50: .4byte gUnknown_2039CFD +_080F5C54: .4byte 0x0000FFFE +_080F5C58: .4byte gUnknown_2039CFC +_080F5C5C: + ldr r0, _080F5C84 + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F5C88 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrh r1, [r5, #2] + movs r0, #2 + bl sub_080EFE44 + ldrh r0, [r5, #2] + cmp r0, #0x1e + bhi _080F5C90 + ldr r1, _080F5C8C + movs r0, #4 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5C84: .4byte gUnknown_2021C40 +_080F5C88: .4byte gUnknown_2021C54 +_080F5C8C: .4byte gUnknown_2039CFC +_080F5C90: + cmp r0, #0x64 + bhi _080F5CA0 + ldr r1, _080F5C9C + movs r0, #5 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5C9C: .4byte gUnknown_2039CFC +_080F5CA0: + ldr r1, _080F5CA8 + movs r0, #6 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5CA8: .4byte gUnknown_2039CFC +_080F5CAC: + ldr r0, _080F5CC8 + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F5CCC + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r1, _080F5CD0 + movs r0, #7 + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5CC8: .4byte gUnknown_2021C40 +_080F5CCC: .4byte gUnknown_2021C54 +_080F5CD0: .4byte gUnknown_2039CFC +_080F5CD4: + ldr r0, _080F5CEC + adds r1, r5, #4 + bl sub_080088B8 + ldr r0, _080F5CF0 + adds r1, r5, #0 + adds r1, #0x13 + bl sub_080088B8 + bl sub_080F5F74 + b _080F5D36 + .align 2, 0 +_080F5CEC: .4byte gUnknown_2021C40 +_080F5CF0: .4byte gUnknown_2021C54 +_080F5CF4: + movs r0, #3 + b _080F5D34 +_080F5CF8: + movs r0, #3 + b _080F5D34 +_080F5CFC: + ldr r4, _080F5D14 + ldrh r0, [r5, #0x10] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _080F5D18 + ldrb r0, [r5, #0x12] + strb r0, [r1] + b _080F5D36 + .align 2, 0 +_080F5D14: .4byte gUnknown_2021C54 +_080F5D18: .4byte gUnknown_2039CFC +_080F5D1C: + adds r0, r5, #0 + adds r0, #0x22 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F5D2E + movs r0, #0x16 + b _080F5D34 +_080F5D2E: + movs r0, #0x15 + b _080F5D34 +_080F5D32: + ldrb r0, [r5, #0x12] +_080F5D34: + strb r0, [r2] +_080F5D36: + ldr r0, _080F5D50 + mov r2, sb + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F5D50: .4byte gUnknown_8569040 + thumb_func_end sub_080F5A10 + + thumb_func_start sub_080F5D54 +sub_080F5D54: @ 0x080F5D54 + push {r4, r5, lr} + ldr r2, _080F5D88 + ldr r0, _080F5D8C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F5D90 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F5D94 + movs r0, #0 + strh r0, [r1] + ldr r0, _080F5D98 + ldrb r5, [r0] + adds r2, r0, #0 + cmp r5, #0xa + bls _080F5D7C + b _080F5EB8 +_080F5D7C: + lsls r0, r5, #2 + ldr r1, _080F5D9C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F5D88: .4byte gUnknown_3005AEC +_080F5D8C: .4byte gUnknown_2037280 +_080F5D90: .4byte 0x000027CC +_080F5D94: .4byte gUnknown_2037290 +_080F5D98: .4byte gUnknown_2039CFC +_080F5D9C: .4byte _080F5DA0 +_080F5DA0: @ jump table + .4byte _080F5DCC @ case 0 + .4byte _080F5DE8 @ case 1 + .4byte _080F5E1C @ case 2 + .4byte _080F5E30 @ case 3 + .4byte _080F5E9A @ case 4 + .4byte _080F5E36 @ case 5 + .4byte _080F5E54 @ case 6 + .4byte _080F5E80 @ case 7 + .4byte _080F5E94 @ case 8 + .4byte _080F5E9A @ case 9 + .4byte _080F5EB4 @ case 10 +_080F5DCC: + ldrb r1, [r4, #2] + cmp r1, #0 + bne _080F5DD8 + movs r0, #6 + strb r0, [r2] + b _080F5EB8 +_080F5DD8: + cmp r1, #3 + bhi _080F5DE2 + movs r0, #5 + strb r0, [r2] + b _080F5EB8 +_080F5DE2: + movs r0, #1 + strb r0, [r2] + b _080F5EB8 +_080F5DE8: + ldr r0, _080F5E08 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + ldrb r0, [r4, #3] + cmp r0, #0 + bne _080F5E10 + ldr r1, _080F5E0C + movs r0, #3 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E08: .4byte gUnknown_2021C40 +_080F5E0C: .4byte gUnknown_2039CFC +_080F5E10: + ldr r1, _080F5E18 + movs r0, #2 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E18: .4byte gUnknown_2039CFC +_080F5E1C: + ldrb r1, [r4, #3] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5E2C + movs r0, #4 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E2C: .4byte gUnknown_2039CFC +_080F5E30: + movs r0, #4 + strb r0, [r2] + b _080F5EB8 +_080F5E36: + ldr r0, _080F5E50 + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r1, [r4, #2] + movs r0, #1 + bl sub_080EFE44 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080F5E64 + b _080F5E74 + .align 2, 0 +_080F5E50: .4byte gUnknown_2021C40 +_080F5E54: + ldr r0, _080F5E6C + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldrb r0, [r4, #3] + cmp r0, #0 + bne _080F5E74 +_080F5E64: + ldr r1, _080F5E70 + movs r0, #8 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E6C: .4byte gUnknown_2021C40 +_080F5E70: .4byte gUnknown_2039CFC +_080F5E74: + ldr r1, _080F5E7C + movs r0, #7 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E7C: .4byte gUnknown_2039CFC +_080F5E80: + ldrb r1, [r4, #3] + movs r0, #1 + bl sub_080EFE44 + ldr r1, _080F5E90 + movs r0, #9 + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5E90: .4byte gUnknown_2039CFC +_080F5E94: + movs r0, #9 + strb r0, [r2] + b _080F5EB8 +_080F5E9A: + ldr r0, _080F5EAC + adds r1, r4, #0 + adds r1, #0x13 + bl sub_080088B8 + ldr r1, _080F5EB0 + movs r0, #0xa + strb r0, [r1] + b _080F5EB8 + .align 2, 0 +_080F5EAC: .4byte gUnknown_2021C40 +_080F5EB0: .4byte gUnknown_2039CFC +_080F5EB4: + bl sub_080F5F74 +_080F5EB8: + ldr r0, _080F5ECC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F5ECC: .4byte gUnknown_85690EC + thumb_func_end sub_080F5D54 + + thumb_func_start sub_080F5ED0 +sub_080F5ED0: @ 0x080F5ED0 + push {r4, r5, r6, lr} + ldr r2, _080F5F00 + ldr r0, _080F5F04 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F5F08 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + ldr r1, _080F5F0C + movs r0, #0 + strh r0, [r1] + ldr r6, _080F5F10 + ldrb r5, [r6] + cmp r5, #2 + bgt _080F5F14 + cmp r5, #1 + bge _080F5F40 + cmp r5, #0 + beq _080F5F1A + b _080F5F56 + .align 2, 0 +_080F5F00: .4byte gUnknown_3005AEC +_080F5F04: .4byte gUnknown_2037280 +_080F5F08: .4byte 0x000027CC +_080F5F0C: .4byte gUnknown_2037290 +_080F5F10: .4byte gUnknown_2039CFC +_080F5F14: + cmp r5, #3 + beq _080F5F48 + b _080F5F56 +_080F5F1A: + ldr r0, _080F5F2C + ldrb r1, [r4, #0xa] + bl sub_0818E4C4 + ldrb r1, [r4, #0x16] + cmp r1, #1 + bne _080F5F30 + strb r1, [r6] + b _080F5F56 + .align 2, 0 +_080F5F2C: .4byte gUnknown_2021C40 +_080F5F30: + cmp r1, #0 + bne _080F5F3A + movs r0, #2 + strb r0, [r6] + b _080F5F56 +_080F5F3A: + movs r0, #3 + strb r0, [r6] + b _080F5F56 +_080F5F40: + ldr r0, _080F5F68 + adds r1, r4, #2 + bl sub_08008888 +_080F5F48: + ldr r0, _080F5F6C + adds r1, r4, #0 + adds r1, #0xb + bl sub_08008828 + bl sub_080F5F74 +_080F5F56: + ldr r0, _080F5F70 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F5F68: .4byte gUnknown_2021C68 +_080F5F6C: .4byte gUnknown_2021C54 +_080F5F70: .4byte gUnknown_8568E30 + thumb_func_end sub_080F5ED0 + + thumb_func_start sub_080F5F74 +sub_080F5F74: @ 0x080F5F74 + ldr r1, _080F5F9C + movs r0, #1 + strh r0, [r1] + ldr r1, _080F5FA0 + movs r0, #0 + strb r0, [r1] + ldr r0, _080F5FA4 + ldr r2, [r0] + ldr r0, _080F5FA8 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r0, _080F5FAC + adds r2, r2, r0 + movs r0, #0 + strb r0, [r2] + bx lr + .align 2, 0 +_080F5F9C: .4byte gUnknown_2037290 +_080F5FA0: .4byte gUnknown_2039CFC +_080F5FA4: .4byte gUnknown_3005AEC +_080F5FA8: .4byte gUnknown_2037280 +_080F5FAC: .4byte 0x000027CD + thumb_func_end sub_080F5F74 + + thumb_func_start sub_080F5FB0 +sub_080F5FB0: @ 0x080F5FB0 + ldr r1, _080F5FB8 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080F5FB8: .4byte gUnknown_2039CFC + thumb_func_end sub_080F5FB0 + + thumb_func_start sub_080F5FBC +sub_080F5FBC: @ 0x080F5FBC + push {r4, lr} + movs r0, #0 + movs r1, #0x40 + bl sub_08001144 + movs r0, #0 + bl sub_080017D4 + ldr r1, _080F60D0 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + movs r4, #0 +_080F5FD8: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F60D4 + ldr r1, [r1] + lsls r2, r4, #2 + adds r1, #0xc + adds r1, r1, r2 + ldr r1, [r1] + bl sub_0800212C + adds r4, #1 + cmp r4, #3 + ble _080F5FD8 + ldr r0, _080F60D8 + bl sub_08003090 + bl sub_08004480 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r1, _080F60DC + movs r0, #0x48 + bl sub_08001144 + ldr r1, _080F60E0 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r1, #0xff + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r0, _080F60E4 + movs r1, #0 + strh r1, [r0] + ldr r0, _080F60E8 + strh r1, [r0] + ldr r0, _080F60EC + strh r1, [r0] + ldr r0, _080F60F0 + strh r1, [r0] + ldr r0, _080F60F4 + strh r1, [r0] + ldr r0, _080F60F8 + strh r1, [r0] + ldr r0, _080F60FC + strh r1, [r0] + ldr r0, _080F6100 + strh r1, [r0] + ldr r0, _080F6104 + strh r1, [r0] + ldr r0, _080F6108 + strh r1, [r0] + ldr r0, _080F610C + strh r1, [r0] + ldr r0, _080F6110 + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F60D0: .4byte gUnknown_856944C +_080F60D4: .4byte gUnknown_2039D00 +_080F60D8: .4byte gUnknown_856945C +_080F60DC: .4byte 0x00003F3F +_080F60E0: .4byte 0x00003F2E +_080F60E4: .4byte gUnknown_2022AC8 +_080F60E8: .4byte gUnknown_2022ACA +_080F60EC: .4byte gUnknown_2022ACC +_080F60F0: .4byte gUnknown_2022ACE +_080F60F4: .4byte gUnknown_2022AD0 +_080F60F8: .4byte gUnknown_2022AD2 +_080F60FC: .4byte gUnknown_2022AD4 +_080F6100: .4byte gUnknown_2022AD6 +_080F6104: .4byte gUnknown_2022AD8 +_080F6108: .4byte gUnknown_2022ADA +_080F610C: .4byte gUnknown_2022ADC +_080F6110: .4byte gUnknown_2022ADE + thumb_func_end sub_080F5FBC + + thumb_func_start sub_080F6114 +sub_080F6114: @ 0x080F6114 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r0, _080F61CC + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + ldr r1, _080F61D0 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _080F61D4 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _080F61D8 + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + bl sub_080F7A3C + ldr r0, _080F61DC + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #0 + bl sub_080A11BC + ldr r0, _080F61E0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r7, #0 + movs r0, #1 + mov r8, r0 +_080F616E: + lsls r5, r7, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080F7BA0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080F7BF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + movs r6, #0 + lsls r1, r7, #1 + adds r2, r7, #1 + str r2, [sp, #0xc] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + mov sl, r4 + adds r1, r1, r7 + adds r0, r1, #6 + lsls r0, r0, #0x18 + mov sb, r0 + adds r1, #5 + lsls r7, r1, #0x18 +_080F61A8: + ldr r1, _080F61E4 + cmp r6, sl + bge _080F61B0 + adds r1, #2 +_080F61B0: + ldr r4, [sp, #8] + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + adds r2, r0, #0 + cmp r0, #0 + bge _080F61BE + rsbs r2, r0, #0 +_080F61BE: + cmp r6, r2 + bge _080F61EC + ldr r5, _080F61E8 + cmp r0, #0 + bge _080F61EE + adds r5, #2 + b _080F61EE + .align 2, 0 +_080F61CC: .4byte gUnknown_8C196CC +_080F61D0: .4byte gUnknown_8C1A174 +_080F61D4: .4byte gUnknown_8C1A048 +_080F61D8: .4byte gUnknown_8C19F34 +_080F61DC: .4byte gUnknown_8C1A2FC +_080F61E0: .4byte gUnknown_856915C +_080F61E4: .4byte 0x000060B2 +_080F61E8: .4byte 0x000060A4 +_080F61EC: + ldr r5, _080F6268 +_080F61EE: + adds r4, r6, #0 + adds r4, #0x13 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, r8 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + adds r2, r4, #0 + lsrs r3, r7, #0x18 + bl sub_080025E0 + mov r2, r8 + str r2, [sp] + str r2, [sp, #4] + movs r0, #1 + adds r1, r5, #0 + adds r2, r4, #0 + mov r4, sb + lsrs r3, r4, #0x18 + bl sub_080025E0 + adds r6, #1 + cmp r6, #9 + ble _080F61A8 + ldr r7, [sp, #0xc] + cmp r7, #3 + ble _080F616E + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6268: .4byte 0x000060A2 + thumb_func_end sub_080F6114 + + thumb_func_start sub_080F626C +sub_080F626C: @ 0x080F626C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080F6288 + ldrb r0, [r0] + cmp r6, r0 + bne _080F6294 + ldr r0, _080F628C + ldr r1, _080F6290 + bl sub_080088B8 + adds r5, r0, #0 + b _080F6296 + .align 2, 0 +_080F6288: .4byte gUnknown_2039BC5 +_080F628C: .4byte gUnknown_2022AE0 +_080F6290: .4byte gUnknown_85CC4E0 +_080F6294: + ldr r5, _080F62E0 +_080F6296: + lsls r4, r6, #6 + ldr r1, _080F62E4 + adds r1, r4, r1 + adds r0, r5, #0 + bl sub_080088B8 + ldr r5, _080F62E0 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080F8760 + ldr r0, _080F62E8 + ldrb r0, [r0] + cmp r6, r0 + bne _080F62BE + ldr r1, _080F62EC + adds r0, r5, #0 + bl sub_080088B8 + adds r5, r0, #0 +_080F62BE: + ldr r1, _080F62F0 + adds r0, r5, #0 + bl sub_080088B8 + ldr r1, _080F62F4 + adds r1, r4, r1 + adds r0, r5, #0 + bl sub_080088D8 + adds r0, r6, #4 + ldr r1, _080F62E0 + bl sub_080F8760 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F62E0: .4byte gUnknown_2022AE0 +_080F62E4: .4byte gUnknown_2039AA2 +_080F62E8: .4byte gUnknown_2039BC5 +_080F62EC: .4byte gUnknown_85CC4E0 +_080F62F0: .4byte gUnknown_85C93FF +_080F62F4: .4byte gUnknown_2039AAD + thumb_func_end sub_080F626C + + thumb_func_start sub_080F62F8 +sub_080F62F8: @ 0x080F62F8 + push {r4, lr} + movs r4, #0 +_080F62FC: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080F626C + adds r4, #1 + cmp r4, #3 + ble _080F62FC + movs r0, #1 + bl sub_08002248 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F62F8 + + thumb_func_start sub_080F6318 +sub_080F6318: @ 0x080F6318 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _080F63D8 + ldrb r0, [r5, #8] + movs r6, #0x80 + orrs r0, r6 + strb r0, [r5, #8] + movs r0, #0 + bl sub_080006F0 + bl sub_080F8684 + bl sub_080F5FBC + bl sub_080B9750 + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + bl sub_080F6114 + bl sub_080F72C0 + movs r0, #0 + movs r1, #1 + bl sub_080F7288 + bl sub_080F62F8 + ldr r4, _080F63DC + ldr r0, [r4] + ldr r0, [r0] + movs r1, #0 + movs r2, #0x18 + bl memset + ldr r0, [r4] + ldr r0, [r0, #4] + movs r1, #0 + movs r2, #0x50 + bl memset + bl sub_080F760C + bl sub_080F730C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldrb r1, [r5, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #8] + ldr r0, _080F63E0 + movs r1, #5 + bl sub_080A8878 + ldr r1, [r4] + ldr r1, [r1] + strb r0, [r1, #2] + ldr r0, _080F63E4 + bl sub_08000540 + ldr r1, _080F63E8 + movs r0, #0xf0 + strh r0, [r1] + ldr r1, _080F63EC + ldr r2, _080F63F0 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _080F63F4 + movs r1, #0x14 + bl sub_080A8878 + bl sub_080F8110 + ldr r0, _080F63F8 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F63FC + ldrb r0, [r5, #8] + orrs r0, r6 + strb r0, [r5, #8] + b _080F6404 + .align 2, 0 +_080F63D8: .4byte gUnknown_2037C74 +_080F63DC: .4byte gUnknown_2039D00 +_080F63E0: .4byte sub_080F64FC +_080F63E4: .4byte sub_080F6418 +_080F63E8: .4byte gUnknown_2022ADC +_080F63EC: .4byte gUnknown_2022ADE +_080F63F0: .4byte 0x000080A0 +_080F63F4: .4byte sub_080F70D8 +_080F63F8: .4byte gUnknown_2039BCA +_080F63FC: + movs r0, #0xdf + lsls r0, r0, #1 + bl sub_080A3040 +_080F6404: + ldr r0, _080F6414 + bl sub_080006F0 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F6414: .4byte sub_080F643C + thumb_func_end sub_080F6318 + + thumb_func_start sub_080F6418 +sub_080F6418: @ 0x080F6418 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_080A89D4 + bl sub_080A12E4 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F6418 + + thumb_func_start sub_080F643C +sub_080F643C: @ 0x080F643C + push {lr} + ldr r0, _080F64CC + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _080F64D0 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _080F64D4 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _080F64D8 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _080F64DC + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _080F64E0 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, _080F64E4 + ldrh r1, [r0] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _080F64E8 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 + ldr r0, _080F64EC + ldrh r1, [r0] + movs r0, #0x40 + bl sub_08001144 + ldr r0, _080F64F0 + ldrh r1, [r0] + movs r0, #0x44 + bl sub_08001144 + ldr r0, _080F64F4 + ldrh r1, [r0] + movs r0, #0x42 + bl sub_08001144 + ldr r0, _080F64F8 + ldrh r1, [r0] + movs r0, #0x46 + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_080F64CC: .4byte gUnknown_2022AC8 +_080F64D0: .4byte gUnknown_2022ACA +_080F64D4: .4byte gUnknown_2022ACC +_080F64D8: .4byte gUnknown_2022ACE +_080F64DC: .4byte gUnknown_2022AD0 +_080F64E0: .4byte gUnknown_2022AD2 +_080F64E4: .4byte gUnknown_2022AD4 +_080F64E8: .4byte gUnknown_2022AD6 +_080F64EC: .4byte gUnknown_2022AD8 +_080F64F0: .4byte gUnknown_2022ADA +_080F64F4: .4byte gUnknown_2022ADC +_080F64F8: .4byte gUnknown_2022ADE + thumb_func_end sub_080F643C + + thumb_func_start sub_080F64FC +sub_080F64FC: @ 0x080F64FC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _080F6530 + ldrb r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080F6510 + b _080F6646 +_080F6510: + ldr r2, _080F6534 + lsls r1, r6, #2 + adds r0, r1, r6 + lsls r0, r0, #3 + adds r4, r0, r2 + movs r2, #8 + ldrsh r0, [r4, r2] + adds r7, r1, #0 + cmp r0, #1 + beq _080F65F8 + cmp r0, #1 + bgt _080F6538 + cmp r0, #0 + beq _080F6542 + b _080F6646 + .align 2, 0 +_080F6530: .4byte gUnknown_2039BCA +_080F6534: .4byte gUnknown_3005B60 +_080F6538: + cmp r0, #2 + beq _080F660C + cmp r0, #3 + beq _080F6622 + b _080F6646 +_080F6542: + bl sub_080DB638 + ldr r1, _080F65D4 + ldr r0, _080F65D8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F6570 + movs r0, #0x23 + bl sub_0808414C + ldr r1, _080F65DC + movs r0, #8 + strh r0, [r1] + bl sub_080F00BC + ldr r0, _080F65E0 + ldrh r0, [r0] + cmp r0, #1 + beq _080F6570 + bl sub_080ED25C +_080F6570: + movs r0, #2 + bl sub_0813BB14 + ldr r0, _080F65E4 + ldrb r0, [r0] + bl sub_080DE4B0 + movs r0, #0xfe + bl sub_080DE4B0 + ldr r1, _080F65E8 + movs r0, #1 + strb r0, [r1] + movs r0, #0xfe + movs r1, #0 + bl sub_080DE6B0 + ldr r1, _080F65EC + strb r0, [r1] + ldr r5, _080F65F0 + adds r0, r5, #0 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_0809CF88 + bl sub_08076764 + movs r0, #1 + bl sub_08153274 + bl sub_08076780 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809CF88 + ldr r0, _080F65F4 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080F6646 + .align 2, 0 +_080F65D4: .4byte gUnknown_2039BC0 +_080F65D8: .4byte gUnknown_2039BC5 +_080F65DC: .4byte gUnknown_2037282 +_080F65E0: .4byte gUnknown_2037290 +_080F65E4: .4byte gUnknown_2039BCE +_080F65E8: .4byte gUnknown_2039BFC +_080F65EC: .4byte gUnknown_2039BFD +_080F65F0: .4byte 0x00004086 +_080F65F4: .4byte gUnknown_3005B60 +_080F65F8: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldrb r1, [r3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080F6646 + movs r0, #0x64 + b _080F6644 +_080F660C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F66D2 + bl sub_0800A8D4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080F66D2 +_080F6622: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080F66D2 + movs r0, #0xdf + lsls r0, r0, #1 + bl sub_080A3040 + ldr r2, _080F667C + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldrh r0, [r4, #8] + adds r0, #1 +_080F6644: + strh r0, [r4, #8] +_080F6646: + ldr r0, _080F667C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080F66D2 + ldr r1, _080F6680 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + strh r2, [r4, #8] + ldr r0, _080F6684 + ldrb r1, [r0] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080F6690 + ldr r0, _080F6688 + bl sub_080F78E8 + ldr r0, _080F668C + b _080F66D0 + .align 2, 0 +_080F667C: .4byte gUnknown_2037C74 +_080F6680: .4byte gUnknown_3005B60 +_080F6684: .4byte gUnknown_2039BCA +_080F6688: .4byte gUnknown_85CC4D5 +_080F668C: .4byte sub_080F66F0 +_080F6690: + movs r0, #0x24 + bl sub_0808414C + ldr r1, _080F66D8 + ldr r0, _080F66DC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F66AA + movs r0, #0x25 + bl sub_0808414C +_080F66AA: + ldr r0, _080F66E0 + ldrb r0, [r0] + bl sub_080DE4B0 + movs r0, #0xfe + bl sub_080DE4B0 + ldr r0, _080F66E4 + strb r5, [r0] + movs r0, #0xfe + movs r1, #0 + bl sub_080DE6B0 + ldr r1, _080F66E8 + strb r0, [r1] + movs r0, #2 + bl sub_0813BB14 + ldr r0, _080F66EC +_080F66D0: + str r0, [r4] +_080F66D2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F66D8: .4byte gUnknown_2039BC0 +_080F66DC: .4byte gUnknown_2039BC5 +_080F66E0: .4byte gUnknown_2039BCE +_080F66E4: .4byte gUnknown_2039BFC +_080F66E8: .4byte gUnknown_2039BFD +_080F66EC: .4byte sub_080F678C + thumb_func_end sub_080F64FC + + thumb_func_start sub_080F66F0 +sub_080F66F0: @ 0x080F66F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080F671C + ldrb r0, [r0] + cmp r0, #0 + beq _080F6714 + ldr r0, _080F6720 + movs r1, #0 + bl sub_080A8878 + ldr r1, _080F6724 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080F6728 + str r1, [r0] +_080F6714: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F671C: .4byte gUnknown_30031C4 +_080F6720: .4byte sub_080F672C +_080F6724: .4byte gUnknown_3005B60 +_080F6728: .4byte sub_080A8A40 + thumb_func_end sub_080F66F0 + + thumb_func_start sub_080F672C +sub_080F672C: @ 0x080F672C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F6740 + ldr r2, _080F6744 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_080F6740: .4byte sub_080FD1EC +_080F6744: .4byte sub_080F6748 + thumb_func_end sub_080F672C + + thumb_func_start sub_080F6748 +sub_080F6748: @ 0x080F6748 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F6778 + adds r0, r4, #0 + bl sub_080A8964 + ldr r2, _080F6780 + ldr r0, _080F6784 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _080F6788 + str r1, [r0] + bl sub_080F79B8 +_080F6778: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6780: .4byte gUnknown_3005B60 +_080F6784: .4byte gUnknown_2039D00 +_080F6788: .4byte sub_080F678C + thumb_func_end sub_080F6748 + + thumb_func_start sub_080F678C +sub_080F678C: @ 0x080F678C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F67D4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrh r1, [r5, #8] + movs r2, #8 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _080F67E4 + ldr r0, _080F67D8 + movs r1, #0x14 + bl sub_080A8878 + ldr r4, _080F67DC + ldr r0, _080F67E0 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080F739C + adds r0, r4, #0 + bl sub_080F76E8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x88 + lsls r3, r3, #3 + movs r1, #0x90 + movs r2, #0x78 + b _080F683E + .align 2, 0 +_080F67D4: .4byte gUnknown_3005B60 +_080F67D8: .4byte sub_080F7114 +_080F67DC: .4byte gUnknown_85CC4A3 +_080F67E0: .4byte gUnknown_2039D00 +_080F67E4: + cmp r0, #1 + bne _080F67FC + ldr r0, _080F67F8 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + bne _080F6870 + b _080F6810 + .align 2, 0 +_080F67F8: .4byte gUnknown_2039D00 +_080F67FC: + cmp r0, #2 + bne _080F6818 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _080F6870 + movs r0, #0 +_080F6810: + strh r0, [r5, #0xa] + adds r0, r1, #1 + strh r0, [r5, #8] + b _080F6870 +_080F6818: + cmp r0, #3 + bne _080F6858 + ldr r4, _080F684C + ldr r0, _080F6850 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080F739C + adds r0, r4, #0 + bl sub_080F76E8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, _080F6854 + movs r3, #0x88 + lsls r3, r3, #3 + movs r1, #0x90 +_080F683E: + bl sub_080F7708 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _080F6870 + .align 2, 0 +_080F684C: .4byte gUnknown_85CC4AE +_080F6850: .4byte gUnknown_2039D00 +_080F6854: .4byte 0x0000FFFF +_080F6858: + cmp r0, #4 + bne _080F6870 + ldr r0, _080F6878 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #2 + bne _080F6870 + movs r0, #0 + strh r0, [r5, #8] + ldr r0, _080F687C + str r0, [r5] +_080F6870: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6878: .4byte gUnknown_2039D00 +_080F687C: .4byte sub_080F6880 + thumb_func_end sub_080F678C + + thumb_func_start sub_080F6880 +sub_080F6880: @ 0x080F6880 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F68A4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080F68E8 + cmp r0, #1 + bgt _080F68A8 + cmp r0, #0 + beq _080F68AE + b _080F690E + .align 2, 0 +_080F68A4: .4byte gUnknown_3005B60 +_080F68A8: + cmp r0, #2 + beq _080F68FC + b _080F690E +_080F68AE: + ldr r5, _080F68DC + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _080F690E + ldrh r1, [r4, #0xc] + adds r0, r1, #1 + strh r0, [r4, #0xc] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_080F8310 + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _080F68E0 + movs r0, #2 + strh r0, [r4, #8] + b _080F690E + .align 2, 0 +_080F68DC: .4byte gUnknown_2039D00 +_080F68E0: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080F690E +_080F68E8: + ldr r0, _080F68F8 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _080F690E + strh r0, [r4, #8] + b _080F690E + .align 2, 0 +_080F68F8: .4byte gUnknown_2039D00 +_080F68FC: + movs r0, #0x88 + lsls r0, r0, #3 + bl sub_080F7760 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xc] + ldr r0, _080F6914 + str r0, [r4] +_080F690E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6914: .4byte sub_080F6918 + thumb_func_end sub_080F6880 + + thumb_func_start sub_080F6918 +sub_080F6918: @ 0x080F6918 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r4, r2, #0 + ldr r0, _080F696C + ldr r5, [r0] + ldr r0, [r5] + ldrb r3, [r0, #4] + cmp r3, #0 + bne _080F697C + ldr r1, _080F6970 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _080F698E + strh r3, [r1, #0xa] + ldr r4, _080F6974 + ldr r0, [r5] + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080F739C + adds r0, r4, #0 + bl sub_080F76E8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, _080F6978 + movs r3, #0x88 + lsls r3, r3, #3 + movs r1, #0x90 + bl sub_080F7708 + b _080F698E + .align 2, 0 +_080F696C: .4byte gUnknown_2039D00 +_080F6970: .4byte gUnknown_3005B60 +_080F6974: .4byte gUnknown_85CC4BA +_080F6978: .4byte 0x0000FFFF +_080F697C: + cmp r3, #2 + bne _080F698E + ldr r0, _080F6994 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080F6998 + str r0, [r1] +_080F698E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6994: .4byte gUnknown_3005B60 +_080F6998: .4byte sub_080F699C + thumb_func_end sub_080F6918 + + thumb_func_start sub_080F699C +sub_080F699C: @ 0x080F699C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F69C0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080F6A04 + cmp r0, #1 + bgt _080F69C4 + cmp r0, #0 + beq _080F69CA + b _080F6A28 + .align 2, 0 +_080F69C0: .4byte gUnknown_3005B60 +_080F69C4: + cmp r0, #2 + beq _080F6A18 + b _080F6A28 +_080F69CA: + ldr r5, _080F69F8 + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _080F6A28 + ldrh r1, [r4, #0xc] + adds r0, r1, #1 + strh r0, [r4, #0xc] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_080F8310 + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _080F69FC + movs r0, #2 + strh r0, [r4, #8] + b _080F6A28 + .align 2, 0 +_080F69F8: .4byte gUnknown_2039D00 +_080F69FC: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080F6A28 +_080F6A04: + ldr r0, _080F6A14 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _080F6A28 + strh r0, [r4, #8] + b _080F6A28 + .align 2, 0 +_080F6A14: .4byte gUnknown_2039D00 +_080F6A18: + movs r0, #0x88 + lsls r0, r0, #3 + bl sub_080F7760 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _080F6A30 + str r0, [r4] +_080F6A28: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F6A30: .4byte sub_080F6A34 + thumb_func_end sub_080F699C + + thumb_func_start sub_080F6A34 +sub_080F6A34: @ 0x080F6A34 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080F6A5C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #5 + bls _080F6A52 + b _080F6C1C +_080F6A52: + lsls r0, r0, #2 + ldr r1, _080F6A60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F6A5C: .4byte gUnknown_3005B60 +_080F6A60: .4byte _080F6A64 +_080F6A64: @ jump table + .4byte _080F6A7C @ case 0 + .4byte _080F6AA0 @ case 1 + .4byte _080F6ABE @ case 2 + .4byte _080F6AF8 @ case 3 + .4byte _080F6B60 @ case 4 + .4byte _080F6C0C @ case 5 +_080F6A7C: + ldr r0, _080F6A9C + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _080F6A8A + b _080F6C1C +_080F6A8A: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080F6C1C + .align 2, 0 +_080F6A9C: .4byte gUnknown_2039D00 +_080F6AA0: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + beq _080F6AB8 + b _080F6C1C +_080F6AB8: + movs r0, #0 + strh r0, [r1, #0xa] + b _080F6BE4 +_080F6ABE: + movs r4, #0 + lsls r6, r5, #2 + ldr r7, _080F6AEC +_080F6AC4: + ldr r0, _080F6AF0 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r7 + ldr r0, _080F6AF4 + adds r0, r4, r0 + ldrb r0, [r0] + strh r0, [r1, #8] + strh r4, [r1, #0xa] + adds r4, #1 + cmp r4, #3 + ble _080F6AC4 + b _080F6BDC + .align 2, 0 +_080F6AEC: .4byte gUnknown_3005B60 +_080F6AF0: .4byte sub_080F7C6C +_080F6AF4: .4byte gUnknown_2039BC0 +_080F6AF8: + ldr r0, _080F6B54 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #5] + cmp r0, #4 + beq _080F6B06 + b _080F6C1C +_080F6B06: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + beq _080F6B1E + b _080F6C1C +_080F6B1E: + movs r0, #0 + strh r0, [r4, #0xa] + ldr r0, _080F6B58 + movs r1, #0xa + bl sub_080A8878 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r4, #0 + ldr r1, _080F6B5C + ldrb r0, [r1] + cmp r0, #0 + beq _080F6B48 +_080F6B3A: + adds r4, #1 + cmp r4, #3 + bgt _080F6B48 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F6B3A +_080F6B48: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xe + bl sub_080F8070 + b _080F6C1C + .align 2, 0 +_080F6B54: .4byte gUnknown_2039D00 +_080F6B58: .4byte sub_080F7D4C +_080F6B5C: .4byte gUnknown_2039BC0 +_080F6B60: + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + adds r2, r0, r2 + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r6, r1, #0 + cmp r0, #0x15 + bne _080F6C1C + movs r0, #0 + strh r0, [r2, #0xa] + movs r4, #0 + ldr r1, _080F6BEC + ldrb r0, [r1] + ldr r2, _080F6BF0 + ldr r7, _080F6BF4 + cmp r0, #0 + beq _080F6B98 +_080F6B8A: + adds r4, #1 + cmp r4, #3 + bgt _080F6B98 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F6B8A +_080F6B98: + lsls r4, r4, #6 + adds r1, r4, r7 + adds r0, r2, #0 + bl sub_080088B8 + ldr r0, _080F6BF8 + adds r1, r7, #0 + subs r1, #0xb + adds r4, r4, r1 + adds r1, r4, #0 + bl sub_080088B8 + ldr r1, _080F6BFC + mov r0, sp + bl sub_08008BCC + ldr r0, _080F6C00 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0] + mov r0, sp + bl sub_080F739C + mov r0, sp + bl sub_080F76E8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, _080F6C04 + movs r3, #0x88 + lsls r3, r3, #3 + movs r1, #0x90 + bl sub_080F7708 +_080F6BDC: + ldr r0, _080F6C08 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 +_080F6BE4: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080F6C1C + .align 2, 0 +_080F6BEC: .4byte gUnknown_2039BC0 +_080F6BF0: .4byte gUnknown_2021C40 +_080F6BF4: .4byte gUnknown_2039AAD +_080F6BF8: .4byte gUnknown_2021C54 +_080F6BFC: .4byte gUnknown_85CC4C6 +_080F6C00: .4byte gUnknown_2039D00 +_080F6C04: .4byte 0x0000FFFF +_080F6C08: .4byte gUnknown_3005B60 +_080F6C0C: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #8] + ldr r1, _080F6C24 + str r1, [r0] +_080F6C1C: + add sp, #0x64 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6C24: .4byte sub_080F6C28 + thumb_func_end sub_080F6A34 + + thumb_func_start sub_080F6C28 +sub_080F6C28: @ 0x080F6C28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080F6C58 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r4, r1, #0 + cmp r0, #5 + bls _080F6C4C + b _080F6EC0 +_080F6C4C: + lsls r0, r0, #2 + ldr r1, _080F6C5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F6C58: .4byte gUnknown_3005B60 +_080F6C5C: .4byte _080F6C60 +_080F6C60: @ jump table + .4byte _080F6C78 @ case 0 + .4byte _080F6DB0 @ case 1 + .4byte _080F6E00 @ case 2 + .4byte _080F6E14 @ case 3 + .4byte _080F6E5C @ case 4 + .4byte _080F6EA0 @ case 5 +_080F6C78: + ldr r1, _080F6CE4 + movs r0, #0xf0 + strh r0, [r1] + ldr r1, _080F6CE8 + ldr r3, _080F6CEC + adds r0, r3, #0 + strh r0, [r1] + movs r2, #0 + ldr r1, _080F6CF0 + ldrb r0, [r1] + lsls r4, r7, #2 + mov sl, r4 + ldr r3, _080F6CF4 + ldr r4, _080F6CF8 + mov sb, r4 + ldr r4, _080F6CFC + mov ip, r4 + ldr r4, _080F6D00 + mov r8, r4 + cmp r0, #0 + beq _080F6CB0 +_080F6CA2: + adds r2, #1 + cmp r2, #3 + bgt _080F6CB0 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F6CA2 +_080F6CB0: + lsls r1, r2, #6 + adds r0, r1, r3 + ldrh r6, [r0] + adds r0, r3, #0 + adds r0, #0x38 + adds r0, r1, r0 + ldr r4, [r0] + adds r0, r3, #0 + adds r0, #0x3c + adds r1, r1, r0 + ldr r5, [r1] + mov r0, sb + ldrb r0, [r0] + cmp r2, r0 + bne _080F6D04 + lsls r0, r6, #3 + add r0, ip + mov r2, r8 + ldr r1, [r2] + ldr r1, [r1, #8] + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08034954 + b _080F6D16 + .align 2, 0 +_080F6CE4: .4byte gUnknown_2022AD8 +_080F6CE8: .4byte gUnknown_2022ADA +_080F6CEC: .4byte 0x00005050 +_080F6CF0: .4byte gUnknown_2039BC0 +_080F6CF4: .4byte gUnknown_2039AA0 +_080F6CF8: .4byte gUnknown_2039BC5 +_080F6CFC: .4byte gUnknown_82DDA1C +_080F6D00: .4byte gUnknown_2024178 +_080F6D04: + lsls r0, r6, #3 + add r0, ip + mov r3, r8 + ldr r1, [r3] + ldr r1, [r1, #8] + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080349A8 +_080F6D16: + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0806E258 + adds r4, r0, #0 + bl sub_080343E4 + adds r0, r6, #0 + movs r1, #1 + bl sub_08069BA8 + ldr r0, _080F6D90 + ldrh r1, [r4, #4] + strh r1, [r0, #2] + movs r1, #0x88 + lsls r1, r1, #1 + movs r2, #0x50 + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _080F6D94 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r3, r2, r5 + strh r6, [r3, #0x30] + ldrb r4, [r3, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r4 + strb r1, [r3, #5] + adds r5, #0x1c + adds r2, r2, r5 + ldr r1, _080F6D98 + str r1, [r2] + ldr r1, _080F6D9C + ldr r1, [r1] + ldr r1, [r1] + strb r0, [r1, #8] + ldr r0, _080F6DA0 + bl sub_08034388 + ldr r0, _080F6DA4 + bl sub_080343E4 + ldr r0, _080F6DA8 + movs r1, #0xa + bl sub_080A8878 + ldr r0, _080F6DAC + mov r4, sl + adds r1, r4, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080F6EC0 + .align 2, 0 +_080F6D90: .4byte gUnknown_2024640 +_080F6D94: .4byte gUnknown_20205AC +_080F6D98: .4byte sub_080F7E38 +_080F6D9C: .4byte gUnknown_2039D00 +_080F6DA0: .4byte gUnknown_8569324 +_080F6DA4: .4byte gUnknown_856932C +_080F6DA8: .4byte sub_080F7F00 +_080F6DAC: .4byte gUnknown_3005B60 +_080F6DB0: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _080F6DC8 + b _080F6EC0 +_080F6DC8: + movs r0, #0 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xc] + adds r0, #2 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + ble _080F6DDE + movs r0, #0x20 + strh r0, [r4, #0xc] +_080F6DDE: + ldrb r2, [r4, #0xc] + ldr r3, _080F6DFC + movs r0, #0x50 + subs r0, r0, r2 + lsls r0, r0, #8 + adds r1, r2, #0 + adds r1, #0x50 + orrs r0, r1 + strh r0, [r3] + cmp r2, #0x20 + bne _080F6EC0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080F6EC0 + .align 2, 0 +_080F6DFC: .4byte gUnknown_2022ADA +_080F6E00: + ldr r0, _080F6E10 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #1 + bne _080F6EC0 + b _080F6E88 + .align 2, 0 +_080F6E10: .4byte gUnknown_2039D00 +_080F6E14: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r3, r0, r4 + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x79 + bne _080F6EC0 + movs r0, #0 + strh r0, [r3, #0xa] + ldr r2, _080F6E50 + ldr r0, _080F6E54 + ldr r0, [r0] + ldr r0, [r0] + ldrb r1, [r0, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _080F6E58 + str r1, [r0] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + b _080F6EC0 + .align 2, 0 +_080F6E50: .4byte gUnknown_20205AC +_080F6E54: .4byte gUnknown_2039D00 +_080F6E58: .4byte sub_080F7EB0 +_080F6E5C: + ldr r0, _080F6E98 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #2 + bne _080F6EC0 + ldr r3, _080F6E9C + ldrh r0, [r3] + lsrs r2, r0, #8 + adds r0, r2, #2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x50 + bls _080F6E7A + movs r2, #0x50 +_080F6E7A: + lsls r1, r2, #8 + movs r0, #0xa0 + subs r0, r0, r2 + orrs r1, r0 + strh r1, [r3] + cmp r2, #0x50 + bne _080F6EC0 +_080F6E88: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080F6EC0 + .align 2, 0 +_080F6E98: .4byte gUnknown_2039D00 +_080F6E9C: .4byte gUnknown_2022ADA +_080F6EA0: + ldr r0, _080F6ED0 + ldr r0, [r0] + ldr r2, [r0] + ldrb r0, [r2, #6] + cmp r0, #2 + bne _080F6EC0 + movs r1, #0 + movs r0, #1 + strb r0, [r2, #9] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r1, [r0, #8] + ldr r1, _080F6ED4 + str r1, [r0] +_080F6EC0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6ED0: .4byte gUnknown_2039D00 +_080F6ED4: .4byte sub_080F6ED8 + thumb_func_end sub_080F6C28 + + thumb_func_start sub_080F6ED8 +sub_080F6ED8: @ 0x080F6ED8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080F6F2C + ldrh r1, [r0, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080F6F26 + ldr r0, _080F6F30 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + lsls r6, r7, #2 + cmp r0, #0 + bne _080F6F16 + ldr r5, _080F6F34 + movs r4, #3 +_080F6EFE: + ldrh r0, [r5] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #2 + bl sub_080BFBBC + adds r5, #0x40 + subs r4, #1 + cmp r4, #0 + bge _080F6EFE +_080F6F16: + ldr r1, _080F6F38 + adds r0, r6, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + ldr r1, _080F6F3C + str r1, [r0] +_080F6F26: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F6F2C: .4byte gUnknown_3002360 +_080F6F30: .4byte gUnknown_2039BCA +_080F6F34: .4byte gUnknown_2039AA0 +_080F6F38: .4byte gUnknown_3005B60 +_080F6F3C: .4byte sub_080F6F40 + thumb_func_end sub_080F6ED8 + + thumb_func_start sub_080F6F40 +sub_080F6F40: @ 0x080F6F40 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080F6F74 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F6F84 + ldr r0, _080F6F78 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r1, #0x1c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080F6F92 + ldr r0, _080F6F7C + bl sub_080F78E8 + bl sub_0800A7F8 + ldr r0, _080F6F80 + str r0, [r4] + b _080F6F92 + .align 2, 0 +_080F6F74: .4byte gUnknown_2039BCA +_080F6F78: .4byte gUnknown_3005B60 +_080F6F7C: .4byte gUnknown_85CC4D5 +_080F6F80: .4byte sub_080F6FA0 +_080F6F84: + ldr r0, _080F6F98 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080F6F9C + str r0, [r1] +_080F6F92: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6F98: .4byte gUnknown_3005B60 +_080F6F9C: .4byte sub_080F6FE8 + thumb_func_end sub_080F6F40 + + thumb_func_start sub_080F6FA0 +sub_080F6FA0: @ 0x080F6FA0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080F6FD8 + ldrb r0, [r0] + cmp r0, #0 + bne _080F6FD0 + ldr r0, _080F6FDC + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F6FBE + bl sub_0800DB50 +_080F6FBE: + bl sub_080F79B8 + ldr r0, _080F6FE0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080F6FE4 + str r0, [r1] +_080F6FD0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F6FD8: .4byte gUnknown_30031C4 +_080F6FDC: .4byte gUnknown_2039BCA +_080F6FE0: .4byte gUnknown_3005B60 +_080F6FE4: .4byte sub_080F6FE8 + thumb_func_end sub_080F6FA0 + + thumb_func_start sub_080F6FE8 +sub_080F6FE8: @ 0x080F6FE8 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080F7030 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080F700A + ldr r1, _080F7034 + ldr r0, _080F7038 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080EDBE4 +_080F700A: + movs r0, #0 + str r0, [sp] + movs r0, #0xff + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A2078 + ldr r1, _080F703C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080F7040 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F7030: .4byte gUnknown_2039BCA +_080F7034: .4byte gUnknown_2039BC0 +_080F7038: .4byte gUnknown_2039BC5 +_080F703C: .4byte gUnknown_3005B60 +_080F7040: .4byte sub_080F7044 + thumb_func_end sub_080F6FE8 + + thumb_func_start sub_080F7044 +sub_080F7044: @ 0x080F7044 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r5, r2, #0 + ldr r0, _080F707C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080F70CC + ldr r1, _080F7080 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080F708C + ldr r0, _080F7084 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #3] + bl sub_080A8964 + ldr r0, _080F7088 + b _080F7092 + .align 2, 0 +_080F707C: .4byte gUnknown_2037C74 +_080F7080: .4byte gUnknown_3005B60 +_080F7084: .4byte gUnknown_2039D00 +_080F7088: .4byte 0x0000FFFF +_080F708C: + cmp r0, #1 + bne _080F70A8 + ldr r0, _080F70A4 +_080F7092: + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _080F70CC + .align 2, 0 +_080F70A4: .4byte 0xFFFF0000 +_080F70A8: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080034D4 + ldr r0, _080F70D4 + bl sub_08000540 + bl sub_080F86F4 +_080F70CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F70D4: .4byte sub_08085B34 + thumb_func_end sub_080F7044 + + thumb_func_start sub_080F70D8 +sub_080F70D8: @ 0x080F70D8 + push {r4, r5, lr} + ldr r2, _080F710C + ldrh r3, [r2] + adds r0, r3, #2 + strh r0, [r2] + ldr r4, _080F7110 + ldrh r5, [r4] + adds r1, r5, #1 + strh r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + bls _080F70F8 + adds r0, r3, #0 + subs r0, #0xfd + strh r0, [r2] +_080F70F8: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + bls _080F7106 + adds r0, r5, #0 + subs r0, #0xfe + strh r0, [r4] +_080F7106: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F710C: .4byte gUnknown_2022AD4 +_080F7110: .4byte gUnknown_2022AD6 + thumb_func_end sub_080F70D8 + + thumb_func_start sub_080F7114 +sub_080F7114: @ 0x080F7114 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080F7144 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _080F7196 + movs r0, #0 + strh r0, [r2, #8] + movs r3, #0xc + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _080F7148 + ldrh r0, [r2, #0xa] + adds r0, #1 + b _080F714C + .align 2, 0 +_080F7144: .4byte gUnknown_3005B60 +_080F7148: + ldrh r0, [r2, #0xa] + subs r0, #1 +_080F714C: + strh r0, [r2, #0xa] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0x10 + bne _080F7162 + movs r0, #1 + b _080F7166 +_080F7162: + cmp r0, #0 + bne _080F7168 +_080F7166: + strh r0, [r1, #0xc] +_080F7168: + ldr r0, _080F71B4 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r2, [r4, #0xa] + ldr r3, _080F71B8 + movs r0, #0x6b + movs r1, #1 + bl sub_0806F410 + ldrb r2, [r4, #0xa] + ldr r3, _080F71BC + movs r0, #0x68 + movs r1, #1 + bl sub_0806F410 + ldrb r2, [r4, #0xa] + ldr r3, _080F71C0 + movs r0, #0x6e + movs r1, #1 + bl sub_0806F410 +_080F7196: + ldr r1, _080F71B4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #0xa + ldrsh r4, [r0, r3] + cmp r4, #0 + bne _080F71C8 + ldr r0, _080F71C4 + ldr r0, [r0] + ldr r0, [r0] + strb r4, [r0, #0xa] + b _080F71D2 + .align 2, 0 +_080F71B4: .4byte gUnknown_3005B60 +_080F71B8: .4byte 0x00002EDE +_080F71BC: .4byte 0x00007FFF +_080F71C0: .4byte 0x000077BE +_080F71C4: .4byte gUnknown_2039D00 +_080F71C8: + ldr r0, _080F71D8 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #0xa] +_080F71D2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F71D8: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7114 + + thumb_func_start sub_080F71DC +sub_080F71DC: @ 0x080F71DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + mov r8, r4 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + ldr r0, _080F725C + movs r2, #0 + ldrb r0, [r0] + cmp r4, r0 + bne _080F7202 + movs r2, #1 +_080F7202: + adds r0, r7, #0 + ldr r1, [sp, #0x28] + bl sub_080D277C + adds r3, r0, #0 + lsls r0, r5, #9 + adds r0, #0x80 + adds r3, r3, r0 + cmp r6, #0 + beq _080F7264 + lsls r1, r4, #9 + ldr r0, _080F7260 + adds r1, r1, r0 + movs r2, #0xc0 + lsls r2, r2, #1 + adds r0, r3, #0 + movs r3, #1 + bl sub_08000EF8 + adds r0, r4, #0 + adds r0, #0xa + lsls r0, r0, #0x1c + lsls r1, r4, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r1, r1, r2 + orrs r1, r0 + lsrs r1, r1, #0x10 + lsls r3, r4, #1 + adds r3, r3, r4 + adds r3, #4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r2, #3 + bl sub_0800271C + b _080F7278 + .align 2, 0 +_080F725C: .4byte gUnknown_2039BC5 +_080F7260: .4byte 0x06004000 +_080F7264: + mov r0, r8 + lsls r1, r0, #9 + ldr r2, _080F7284 + adds r1, r1, r2 + movs r2, #0xc0 + lsls r2, r2, #1 + adds r0, r3, #0 + movs r3, #1 + bl sub_08000EF8 +_080F7278: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7284: .4byte 0x06004000 + thumb_func_end sub_080F71DC + + thumb_func_start sub_080F7288 +sub_080F7288: @ 0x080F7288 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r5, #0 + ldr r4, _080F72BC +_080F7298: + ldrh r0, [r4] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + ldr r2, [r4, #0x38] + str r2, [sp] + adds r2, r7, #0 + adds r3, r6, #0 + bl sub_080F71DC + adds r4, #0x40 + adds r5, #1 + cmp r5, #3 + ble _080F7298 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F72BC: .4byte gUnknown_2039AA0 + thumb_func_end sub_080F7288 + + thumb_func_start sub_080F72C0 +sub_080F72C0: @ 0x080F72C0 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r6, _080F7300 + movs r5, #0xa0 + lsls r5, r5, #0x10 +_080F72CA: + ldr r1, _080F7304 + lsls r0, r4, #6 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0 + bl sub_080D26A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #5 + ldr r1, _080F7308 + adds r0, r0, r1 + lsrs r1, r5, #0x10 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0x80 + lsls r0, r0, #0xd + adds r5, r5, r0 + adds r4, #1 + cmp r4, #3 + ble _080F72CA + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7300: .4byte gUnknown_8556EE4 +_080F7304: .4byte gUnknown_2039AA0 +_080F7308: .4byte gUnknown_85567A4 + thumb_func_end sub_080F72C0 + + thumb_func_start sub_080F730C +sub_080F730C: @ 0x080F730C + push {r4, lr} + ldr r0, _080F7384 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F737C + bl sub_0800DBB4 + movs r0, #8 + movs r1, #8 + bl sub_0800DA80 + ldr r4, _080F7388 + ldr r0, _080F738C + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x43 + movs r1, #1 + strb r1, [r0] + ldr r0, _080F7390 + bl sub_08008210 + adds r1, r0, #0 + lsls r1, r1, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + lsrs r1, r1, #0xb + ldr r2, _080F7394 + adds r1, r1, r2 + movs r2, #0x80 + movs r3, #1 + bl sub_08000F90 + ldr r0, _080F7398 + movs r1, #8 + movs r2, #8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #1] +_080F737C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F7384: .4byte gUnknown_2039BCA +_080F7388: .4byte gUnknown_20205AC +_080F738C: .4byte gUnknown_20227C8 +_080F7390: .4byte gUnknown_85694C4 +_080F7394: .4byte 0x06010000 +_080F7398: .4byte gUnknown_85694AC + thumb_func_end sub_080F730C + + thumb_func_start sub_080F739C +sub_080F739C: @ 0x080F739C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + ldr r4, _080F74B4 + adds r2, r2, r4 + ldrh r0, [r2, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x11 + ldr r3, _080F74B8 + adds r0, r0, r3 + str r0, [sp] + movs r0, #0x2e + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x11 + adds r0, r0, r3 + str r0, [sp, #4] + movs r0, #0x30 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x11 + adds r0, r0, r3 + str r0, [sp, #8] + movs r0, #0x32 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x11 + adds r0, r0, r3 + str r0, [sp, #0xc] + movs r0, #0 + str r0, [sp, #0x10] + add r0, sp, #0x10 + ldr r1, _080F74BC + mov sl, r1 + ldr r1, [r1] + ldr r1, [r1, #0x1c] + ldr r2, _080F74C0 + bl CpuSet + ldr r4, _080F74C4 + ldr r1, _080F74C8 + adds r0, r4, #0 + bl sub_080088B8 + adds r1, r5, #0 + bl sub_080088B8 + mov r2, sl + ldr r0, [r2] + ldr r0, [r0, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_08005F7C + adds r0, r5, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r1, sl + ldr r0, [r1] + ldr r7, [r0, #0x1c] + ldr r2, _080F74CC + mov r8, r2 + ldr r5, _080F74D0 + mov r0, r8 + adds r1, r7, #0 + adds r2, r5, #0 + bl CpuSet + mov r4, r8 + adds r4, #0x80 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r7, r0 + adds r0, r4, #0 + adds r2, r5, #0 + bl CpuSet + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r7, r2 + adds r0, r4, #0 + adds r2, r5, #0 + bl CpuSet + mov r0, r8 + adds r0, #0x40 + movs r2, #0xc0 + lsls r2, r2, #2 + adds r1, r7, r2 + adds r2, r5, #0 + bl CpuSet + movs r6, #0 + cmp r6, sb + bgt _080F7588 + mov r4, sl + movs r0, #0x92 + lsls r0, r0, #4 + str r0, [sp, #0x14] + movs r1, #0xc4 + lsls r1, r1, #3 + str r1, [sp, #0x18] + movs r2, #0xc8 + lsls r2, r2, #2 + mov sl, r2 + mov r8, r5 +_080F74A6: + cmp r6, #6 + bgt _080F74D4 + ldr r0, [r4] + adds r1, r6, #1 + lsls r1, r1, #5 + ldr r0, [r0, #0x1c] + b _080F74F4 + .align 2, 0 +_080F74B4: .4byte gUnknown_20205AC +_080F74B8: .4byte 0x06010000 +_080F74BC: .4byte gUnknown_2039D00 +_080F74C0: .4byte 0x05000400 +_080F74C4: .4byte gUnknown_2022AE0 +_080F74C8: .4byte gUnknown_85CC4E4 +_080F74CC: .4byte gUnknown_856917C +_080F74D0: .4byte 0x04000008 +_080F74D4: + cmp r6, #0xe + bgt _080F74E0 + ldr r0, [r4] + ldr r0, [r0, #0x1c] + mov r1, sl + b _080F74F4 +_080F74E0: + cmp r6, #0x16 + bgt _080F74EE + ldr r0, [r4] + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x18] + adds r7, r0, r2 + b _080F74F6 +_080F74EE: + ldr r0, [r4] + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0x14] +_080F74F4: + adds r7, r0, r1 +_080F74F6: + cmp r6, sb + beq _080F7588 + ldr r0, _080F75F8 + adds r1, r7, #0 + mov r2, r8 + bl CpuSet + movs r2, #0xc0 + lsls r2, r2, #2 + adds r1, r7, r2 + ldr r0, _080F75F8 + adds r0, #0x20 + mov r2, r8 + bl CpuSet + ldr r0, [r4] + lsls r1, r6, #6 + ldr r0, [r0, #8] + adds r3, r0, r1 + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r7, r0 + movs r1, #0x11 + ldr r2, _080F75FC + adds r0, r7, r2 +_080F7528: + strb r1, [r0] + subs r0, #1 + cmp r0, r5 + bge _080F7528 + movs r0, #0x84 + lsls r0, r0, #1 + adds r5, r7, r0 + movs r2, #0 +_080F7538: + adds r1, r5, r2 + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r2, #1 + cmp r2, #0x17 + ble _080F7538 + movs r1, #0x80 + lsls r1, r1, #2 + adds r5, r7, r1 + movs r2, #0 +_080F754E: + adds r1, r5, r2 + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r2, #1 + cmp r2, #0x1f + ble _080F754E + movs r2, #0xc0 + lsls r2, r2, #2 + adds r5, r7, r2 + movs r2, #0 +_080F7564: + adds r1, r5, r2 + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r2, #1 + cmp r2, #7 + ble _080F7564 + ldr r0, [sp, #0x14] + adds r0, #0x20 + str r0, [sp, #0x14] + ldr r1, [sp, #0x18] + adds r1, #0x20 + str r1, [sp, #0x18] + movs r2, #0x20 + add sl, r2 + adds r6, #1 + cmp r6, sb + ble _080F74A6 +_080F7588: + ldr r4, _080F7600 + ldr r5, _080F7604 + adds r0, r4, #0 + adds r1, r7, #0 + adds r2, r5, #0 + bl CpuSet + adds r6, r4, #0 + adds r6, #0x80 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r7, r0 + adds r0, r6, #0 + adds r2, r5, #0 + bl CpuSet + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r7, r2 + adds r0, r6, #0 + adds r2, r5, #0 + bl CpuSet + adds r4, #0x40 + movs r0, #0xc0 + lsls r0, r0, #2 + adds r1, r7, r0 + adds r0, r4, #0 + adds r2, r5, #0 + bl CpuSet + movs r6, #0 + mov r4, sp +_080F75CA: + ldr r0, _080F7608 + ldr r0, [r0] + lsls r1, r6, #0xa + ldr r0, [r0, #0x1c] + adds r0, r0, r1 + ldm r4!, {r1} + movs r2, #0x80 + lsls r2, r2, #3 + movs r3, #1 + bl sub_08000EF8 + adds r6, #1 + cmp r6, #3 + ble _080F75CA + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F75F8: .4byte gUnknown_856923C +_080F75FC: .4byte 0x00000107 +_080F7600: .4byte gUnknown_856919C +_080F7604: .4byte 0x04000008 +_080F7608: .4byte gUnknown_2039D00 + thumb_func_end sub_080F739C + + thumb_func_start sub_080F760C +sub_080F760C: @ 0x080F760C + push {r4, r5, r6, lr} + sub sp, #0x20 + mov r1, sp + ldr r0, _080F76D4 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + add r5, sp, #0x18 + ldr r6, _080F76D8 + movs r4, #7 +_080F7622: + adds r0, r6, #0 + bl sub_08008210 + adds r6, #8 + subs r4, #1 + cmp r4, #0 + bge _080F7622 + ldr r0, _080F76DC + bl sub_0800845C + movs r4, #0 + mov r6, sp +_080F763A: + mov r0, sp + movs r1, #0x88 + lsls r1, r1, #1 + movs r2, #0x90 + movs r3, #0xa + bl sub_08006B0C + adds r1, r5, r4 + strb r0, [r1] + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + adds r4, #1 + cmp r4, #7 + ble _080F763A + ldr r2, _080F76E0 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #1] + movs r3, #0 + strh r1, [r0, #0x2e] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #2] + strh r1, [r0, #0x30] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #3] + strh r1, [r0, #0x32] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #5] + strh r1, [r0, #0x2e] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #6] + strh r1, [r0, #0x30] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r5, #7] + strh r1, [r0, #0x32] + ldr r1, _080F76E4 + ldr r0, [r1] + ldr r2, [r0] + ldrb r0, [r5] + strb r0, [r2] + ldr r0, [r1] + ldr r0, [r0] + strb r3, [r0, #4] + ldr r0, [r1] + ldr r1, [r0] + ldrb r0, [r5, #4] + strb r0, [r1, #1] + bl sub_080F79B8 + add sp, #0x20 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F76D4: .4byte gUnknown_85692A4 +_080F76D8: .4byte gUnknown_85692BC +_080F76DC: .4byte gUnknown_85692FC +_080F76E0: .4byte gUnknown_20205AC +_080F76E4: .4byte gUnknown_2039D00 + thumb_func_end sub_080F760C + + thumb_func_start sub_080F76E8 +sub_080F76E8: @ 0x080F76E8 + push {lr} + bl sub_0800893C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x16 + movs r0, #0x78 + subs r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, _080F7704 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_080F7704: .4byte 0xFFF80000 + thumb_func_end sub_080F76E8 + + thumb_func_start sub_080F7708 +sub_080F7708: @ 0x080F7708 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _080F7754 + ldr r4, [r4] + mov r8, r4 + ldr r4, [r4] + ldrb r5, [r4] + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r5, _080F7758 + adds r4, r4, r5 + movs r6, #0 + movs r5, #0x88 + lsls r5, r5, #1 + strh r5, [r4, #0x20] + strh r1, [r4, #0x22] + strh r6, [r4, #0x24] + strh r6, [r4, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, #0x20 + strh r0, [r4, #0x36] + strh r2, [r4, #0x38] + strh r3, [r4, #0x3a] + strh r6, [r4, #0x3c] + ldr r0, _080F775C + str r0, [r4, #0x1c] + mov r0, r8 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7754: .4byte gUnknown_2039D00 +_080F7758: .4byte gUnknown_20205AC +_080F775C: .4byte sub_080F77D4 + thumb_func_end sub_080F7708 + + thumb_func_start sub_080F7760 +sub_080F7760: @ 0x080F7760 + push {r4, r5, lr} + ldr r1, _080F77A0 + ldr r4, [r1] + ldr r1, [r4] + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _080F77A4 + adds r1, r1, r2 + ldrh r2, [r1, #0x24] + ldrh r3, [r1, #0x20] + adds r2, r2, r3 + movs r3, #0 + strh r2, [r1, #0x20] + ldrh r2, [r1, #0x26] + ldrh r5, [r1, #0x22] + adds r2, r2, r5 + strh r2, [r1, #0x22] + strh r3, [r1, #0x26] + strh r3, [r1, #0x24] + strh r0, [r1, #0x3a] + strh r3, [r1, #0x3c] + ldr r0, _080F77A8 + str r0, [r1, #0x1c] + ldr r1, [r4] + movs r0, #3 + strb r0, [r1, #4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F77A0: .4byte gUnknown_2039D00 +_080F77A4: .4byte gUnknown_20205AC +_080F77A8: .4byte sub_080F7880 + thumb_func_end sub_080F7760 + + thumb_func_start sub_080F77AC +sub_080F77AC: @ 0x080F77AC + movs r3, #0 + movs r2, #0 + movs r1, #0x88 + lsls r1, r1, #1 + strh r1, [r0, #0x20] + movs r1, #0x90 + strh r1, [r0, #0x22] + strh r2, [r0, #0x26] + strh r2, [r0, #0x24] + ldr r1, _080F77CC + str r1, [r0, #0x1c] + ldr r0, _080F77D0 + ldr r0, [r0] + ldr r0, [r0] + strb r3, [r0, #4] + bx lr + .align 2, 0 +_080F77CC: .4byte sub_08007140 +_080F77D0: .4byte gUnknown_2039D00 + thumb_func_end sub_080F77AC + + thumb_func_start sub_080F77D4 +sub_080F77D4: @ 0x080F77D4 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x3a] + ldrh r0, [r3, #0x3c] + adds r2, r2, r0 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r3, #0x20] + subs r0, r0, r1 + strh r0, [r3, #0x20] + movs r1, #0xff + ands r2, r1 + strh r2, [r3, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r3, #0x36] + movs r4, #0x36 + ldrsh r1, [r3, r4] + cmp r0, r1 + bge _080F77FE + strh r2, [r3, #0x20] +_080F77FE: + movs r4, #0 + ldr r6, _080F7840 + movs r5, #0x40 + adds r2, r3, #0 + adds r2, #0x2e +_080F7808: + movs r7, #0 + ldrsh r0, [r2, r7] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r3, #0x24] + ldrh r7, [r3, #0x20] + adds r0, r0, r7 + adds r0, r0, r5 + strh r0, [r1, #0x20] + adds r5, #0x40 + adds r2, #2 + adds r4, #1 + cmp r4, #2 + ble _080F7808 + movs r0, #0x20 + ldrsh r1, [r3, r0] + movs r2, #0x36 + ldrsh r0, [r3, r2] + cmp r1, r0 + bne _080F7838 + ldr r0, _080F7844 + str r0, [r3, #0x1c] +_080F7838: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7840: .4byte gUnknown_20205AC +_080F7844: .4byte sub_080F7848 + thumb_func_end sub_080F77D4 + + thumb_func_start sub_080F7848 +sub_080F7848: @ 0x080F7848 + push {lr} + adds r2, r0, #0 + ldr r0, _080F7878 + ldr r0, [r0] + ldr r1, [r0] + movs r0, #2 + strb r0, [r1, #4] + ldrh r3, [r2, #0x38] + ldr r1, _080F787C + lsrs r0, r1, #0x10 + cmp r3, r0 + beq _080F7874 + subs r0, r3, #1 + strh r0, [r2, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bne _080F7874 + ldrh r0, [r2, #0x3a] + bl sub_080F7760 +_080F7874: + pop {r0} + bx r0 + .align 2, 0 +_080F7878: .4byte gUnknown_2039D00 +_080F787C: .4byte 0xFFFF0000 + thumb_func_end sub_080F7848 + + thumb_func_start sub_080F7880 +sub_080F7880: @ 0x080F7880 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x3a] + ldrh r0, [r3, #0x3c] + adds r2, r2, r0 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r3, #0x20] + subs r0, r0, r1 + strh r0, [r3, #0x20] + movs r0, #0xff + ands r2, r0 + strh r2, [r3, #0x3c] + movs r4, #0 + ldr r6, _080F78E4 + movs r5, #0x40 + adds r2, r3, #0 + adds r2, #0x2e +_080F78A4: + movs r1, #0 + ldrsh r0, [r2, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r3, #0x24] + ldrh r7, [r3, #0x20] + adds r0, r0, r7 + adds r0, r0, r5 + strh r0, [r1, #0x20] + adds r5, #0x40 + adds r2, #2 + adds r4, #1 + cmp r4, #2 + ble _080F78A4 + movs r1, #0x20 + ldrsh r0, [r3, r1] + movs r2, #0x24 + ldrsh r1, [r3, r2] + adds r0, r0, r1 + movs r1, #0xe0 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080F78DC + adds r0, r3, #0 + bl sub_080F77AC +_080F78DC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F78E4: .4byte gUnknown_20205AC + thumb_func_end sub_080F7880 + + thumb_func_start sub_080F78E8 +sub_080F78E8: @ 0x080F78E8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r5, _080F79A4 + ldr r0, [r5] + ldr r0, [r0] + ldrb r1, [r0, #1] + adds r0, r4, #0 + bl sub_080F739C + adds r0, r4, #0 + bl sub_080F76E8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r5] + ldr r1, [r1] + ldrb r2, [r1, #1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r3, _080F79A8 + adds r4, r1, r3 + adds r0, #0x20 + strh r0, [r4, #0x20] + movs r0, #0x50 + strh r0, [r4, #0x22] + adds r5, r4, #0 + adds r5, #0x3e + ldrb r1, [r5] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + strb r0, [r5] + movs r5, #0 + adds r6, r3, #0 + mov ip, r2 + movs r3, #0x40 +_080F7934: + lsls r0, r5, #1 + adds r2, r4, #0 + adds r2, #0x2e + adds r2, r2, r0 + movs r1, #0 + ldrsh r0, [r2, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r4, #0x24] + ldrh r7, [r4, #0x20] + adds r0, r0, r7 + adds r0, r0, r3 + strh r0, [r1, #0x20] + movs r0, #0 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r4, #0x22] + strh r1, [r0, #0x22] + movs r1, #0 + ldrsh r0, [r2, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x3e + ldrb r2, [r1] + mov r0, ip + ands r0, r2 + strb r0, [r1] + adds r3, #0x40 + adds r5, #1 + cmp r5, #2 + ble _080F7934 + ldr r1, _080F79AC + movs r0, #0xf0 + strh r0, [r1] + ldr r2, _080F79B0 + ldrh r1, [r4, #0x22] + adds r0, r1, #0 + subs r0, #0x10 + lsls r0, r0, #8 + adds r1, #0x10 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080F79B4 + movs r0, #0x48 + bl sub_08001144 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F79A4: .4byte gUnknown_2039D00 +_080F79A8: .4byte gUnknown_20205AC +_080F79AC: .4byte gUnknown_2022AD8 +_080F79B0: .4byte gUnknown_2022ADA +_080F79B4: .4byte 0x00003F3E + thumb_func_end sub_080F78E8 + + thumb_func_start sub_080F79B8 +sub_080F79B8: @ 0x080F79B8 + push {r4, r5, r6, r7, lr} + ldr r0, _080F7A28 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r3, _080F7A2C + adds r2, r2, r3 + movs r0, #0x3e + adds r0, r0, r2 + mov ip, r0 + ldrb r0, [r0] + movs r1, #4 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldr r7, _080F7A30 + ldr r6, _080F7A34 + adds r5, r3, #0 + movs r4, #4 + adds r2, #0x2e + movs r3, #2 +_080F79E8: + movs r1, #0 + ldrsh r0, [r2, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bge _080F79E8 + movs r0, #0 + strh r0, [r7] + strh r0, [r6] + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r6] + movs r0, #0x44 + bl sub_08001144 + ldr r1, _080F7A38 + movs r0, #0x48 + bl sub_08001144 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7A28: .4byte gUnknown_2039D00 +_080F7A2C: .4byte gUnknown_20205AC +_080F7A30: .4byte gUnknown_2022AD8 +_080F7A34: .4byte gUnknown_2022ADA +_080F7A38: .4byte 0x00003F3F + thumb_func_end sub_080F79B8 + + thumb_func_start sub_080F7A3C +sub_080F7A3C: @ 0x080F7A3C + push {r4, r5, r6, lr} + sub sp, #0xc + movs r5, #0 + movs r4, #1 + ldr r0, _080F7A60 + ldrb r1, [r0] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _080F7A68 + movs r5, #1 + ldr r1, _080F7A64 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + b _080F7AA6 + .align 2, 0 +_080F7A60: .4byte gUnknown_2039BCA +_080F7A64: .4byte gUnknown_85693B4 +_080F7A68: + ldr r0, _080F7A7C + ldrh r2, [r0] + cmp r2, #0 + bne _080F7A84 + ldr r1, _080F7A80 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + b _080F7AA6 + .align 2, 0 +_080F7A7C: .4byte gUnknown_2039BCE +_080F7A80: .4byte gUnknown_8569334 +_080F7A84: + cmp r2, #1 + bne _080F7A98 + ldr r1, _080F7A94 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + b _080F7AA6 + .align 2, 0 +_080F7A94: .4byte gUnknown_8569354 +_080F7A98: + cmp r2, #2 + bne _080F7AB4 + ldr r1, _080F7AB0 + movs r0, #8 + str r0, [sp] + str r2, [sp, #4] + movs r0, #2 +_080F7AA6: + movs r2, #5 + movs r3, #1 + bl sub_080022B0 + b _080F7AC6 + .align 2, 0 +_080F7AB0: .4byte gUnknown_8569374 +_080F7AB4: + ldr r1, _080F7ADC + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r2, #5 + movs r3, #1 + bl sub_080022B0 +_080F7AC6: + adds r2, r5, #0 + adds r2, #0xd + movs r5, #0 + ldr r0, _080F7AE0 + ldrh r0, [r0] + cmp r0, #0 + bne _080F7AE8 + movs r6, #0 + ldr r1, _080F7AE4 + b _080F7B26 + .align 2, 0 +_080F7ADC: .4byte gUnknown_8569394 +_080F7AE0: .4byte gUnknown_2039BCC +_080F7AE4: .4byte gUnknown_85693D4 +_080F7AE8: + cmp r0, #1 + bne _080F7AF8 + movs r6, #1 + ldr r1, _080F7AF4 + b _080F7B26 + .align 2, 0 +_080F7AF4: .4byte gUnknown_85693E8 +_080F7AF8: + cmp r0, #2 + bne _080F7B1C + movs r6, #2 + subs r5, #1 + ldr r1, _080F7B18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r3, r4, #0x18 + movs r0, #5 + str r0, [sp] + str r6, [sp, #4] + movs r0, #2 + bl sub_080022B0 + b _080F7B58 + .align 2, 0 +_080F7B18: .4byte gUnknown_85693FC +_080F7B1C: + cmp r0, #3 + bne _080F7B40 + movs r6, #3 + subs r5, #1 + ldr r1, _080F7B3C +_080F7B26: + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r3, r4, #0x18 + movs r0, #5 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + bl sub_080022B0 + b _080F7B58 + .align 2, 0 +_080F7B3C: .4byte gUnknown_8569410 +_080F7B40: + movs r6, #4 + ldr r1, _080F7B94 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r3, r4, #0x18 + movs r0, #5 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + bl sub_080022B0 +_080F7B58: + adds r2, r5, #0 + adds r2, #0x13 + ldr r1, _080F7B98 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsrs r3, r4, #0x18 + movs r0, #5 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + bl sub_080022B0 + ldr r0, _080F7B9C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0x20 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + str r6, [sp, #8] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080023B4 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7B94: .4byte gUnknown_8569424 +_080F7B98: .4byte gUnknown_8569438 +_080F7B9C: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7A3C + + thumb_func_start sub_080F7BA0 +sub_080F7BA0: @ 0x080F7BA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r1, _080F7BEC + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x3f + bl __udivsi3 + adds r1, r0, #0 + ldr r0, _080F7BF0 + ands r0, r1 + cmp r0, #0 + beq _080F7BCC + movs r0, #0x80 + lsls r0, r0, #9 + adds r1, r1, r0 +_080F7BCC: + lsrs r1, r1, #0x10 + cmp r1, #0 + bne _080F7BD8 + cmp r4, #0 + beq _080F7BD8 + movs r1, #1 +_080F7BD8: + cmp r5, #0 + beq _080F7BE2 + cmp r1, #0xa + bls _080F7BE2 + movs r1, #0xa +_080F7BE2: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080F7BEC: .4byte gUnknown_2039BA0 +_080F7BF0: .4byte 0x0000FFFF + thumb_func_end sub_080F7BA0 + + thumb_func_start sub_080F7BF4 +sub_080F7BF4: @ 0x080F7BF4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r1, _080F7C54 + lsls r0, r5, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r7, r1, #0 + cmp r0, #0 + bge _080F7C10 + rsbs r0, r0, #0 +_080F7C10: + lsls r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x50 + bl __udivsi3 + adds r2, r0, #0 + ldr r0, _080F7C58 + ands r0, r2 + cmp r0, #0 + beq _080F7C2A + movs r0, #0x80 + lsls r0, r0, #9 + adds r2, r2, r0 +_080F7C2A: + lsrs r2, r2, #0x10 + cmp r2, #0 + bne _080F7C36 + cmp r4, #0 + beq _080F7C36 + movs r2, #1 +_080F7C36: + cmp r6, #0 + beq _080F7C40 + cmp r2, #0xa + bls _080F7C40 + movs r2, #0xa +_080F7C40: + lsls r0, r5, #1 + adds r0, r0, r7 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080F7C5C + rsbs r0, r2, #0 + lsls r0, r0, #0x18 + b _080F7C5E + .align 2, 0 +_080F7C54: .4byte gUnknown_2039BB8 +_080F7C58: .4byte 0x0000FFFF +_080F7C5C: + lsls r0, r2, #0x18 +_080F7C5E: + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F7BF4 + + thumb_func_start sub_080F7C6C +sub_080F7C6C: @ 0x080F7C6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _080F7CA8 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r7, r0, r1 + ldrh r2, [r7, #0x1c] + movs r0, #0x1c + ldrsh r6, [r7, r0] + cmp r6, #0 + bne _080F7CAC + movs r1, #8 + ldrsh r0, [r7, r1] + movs r1, #3 + subs r1, r1, r0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + strh r0, [r7, #0x1e] + adds r0, r2, #1 + strh r0, [r7, #0x1c] + b _080F7D34 + .align 2, 0 +_080F7CA8: .4byte gUnknown_3005B60 +_080F7CAC: + cmp r6, #1 + bne _080F7D34 + ldrh r0, [r7, #0x1e] + subs r0, #1 + strh r0, [r7, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080F7D34 + movs r2, #8 + ldrsh r4, [r7, r2] + lsls r4, r4, #0x11 + ldr r0, _080F7D44 + adds r4, r4, r0 + lsrs r4, r4, #0x10 + movs r1, #0xa + ldrsh r0, [r7, r1] + lsls r3, r0, #1 + adds r3, r3, r0 + adds r3, #5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r2, #2 + mov sb, r2 + str r2, [sp] + str r6, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + str r6, [sp, #0xc] + movs r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_0800271C + adds r4, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r1, #0xa + ldrsh r0, [r7, r1] + lsls r3, r0, #1 + adds r3, r3, r0 + adds r3, #6 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r2, sb + str r2, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + str r6, [sp, #0xc] + movs r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_0800271C + ldr r0, _080F7D48 + ldr r0, [r0] + ldr r1, [r0] + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + mov r0, r8 + bl sub_080A8964 + movs r0, #0x18 + bl sub_080A306C +_080F7D34: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7D44: .4byte 0x50430000 +_080F7D48: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7C6C + + thumb_func_start sub_080F7D4C +sub_080F7D4C: @ 0x080F7D4C + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r1, _080F7DBC + ldrb r0, [r1] + ldr r6, _080F7DC0 + cmp r0, #0 + beq _080F7D6E +_080F7D60: + adds r4, #1 + cmp r4, #3 + bgt _080F7D6E + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _080F7D60 +_080F7D6E: + ldr r1, [r6] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r0, r3, #6 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r0, r2 + ldr r1, [r1, #0x14] + adds r1, r1, r0 + adds r3, #4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x20 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #9 + str r0, [sp, #8] + movs r0, #2 + movs r2, #0 + bl sub_080023B4 + ldr r1, _080F7DC4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0x1c] + movs r1, #1 + strh r1, [r0, #0x20] + ldr r1, _080F7DC8 + str r1, [r0] + ldr r0, [r6] + ldr r0, [r0] + strb r5, [r0, #3] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F7DBC: .4byte gUnknown_2039BC0 +_080F7DC0: .4byte gUnknown_2039D00 +_080F7DC4: .4byte gUnknown_3005B60 +_080F7DC8: .4byte sub_080F7DCC + thumb_func_end sub_080F7D4C + + thumb_func_start sub_080F7DCC +sub_080F7DCC: @ 0x080F7DCC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F7E18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + cmp r5, #1 + bne _080F7E30 + movs r0, #0 + strh r0, [r4, #0x1e] + ldrh r2, [r4, #0x20] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _080F7E1C + movs r0, #0x91 + movs r1, #1 + bl sub_0806F410 + movs r1, #0x22 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080F7E20 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bne _080F7E30 + strh r5, [r4, #0x22] + b _080F7E30 + .align 2, 0 +_080F7E18: .4byte gUnknown_3005B60 +_080F7E1C: .4byte 0x00006F8D +_080F7E20: + ldrh r0, [r4, #0x20] + subs r0, #1 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _080F7E30 + strh r0, [r4, #0x22] +_080F7E30: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F7DCC + + thumb_func_start sub_080F7E38 +sub_080F7E38: @ 0x080F7E38 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #9 + bgt _080F7E60 + adds r0, r1, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _080F7EA0 + ldrh r0, [r4, #0x30] + movs r1, #0 + bl sub_080A2B3C + movs r0, #0 + strh r0, [r4, #0x30] + b _080F7EA0 +_080F7E60: + movs r0, #0xc0 + lsls r0, r0, #3 + adds r2, r0, #0 + ldrh r1, [r4, #0x30] + adds r2, r2, r1 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x20] + subs r0, r0, r1 + strh r0, [r4, #0x20] + movs r1, #0xff + ands r2, r1 + strh r2, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x77 + bgt _080F7E86 + movs r0, #0x78 + strh r0, [r4, #0x20] +_080F7E86: + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x78 + bne _080F7EA0 + ldr r0, _080F7EA8 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x30] + ldr r0, _080F7EAC + ldr r0, [r0] + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #6] +_080F7EA0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F7EA8: .4byte sub_08007140 +_080F7EAC: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7E38 + + thumb_func_start sub_080F7EB0 +sub_080F7EB0: @ 0x080F7EB0 + push {lr} + adds r3, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #3 + adds r2, r0, #0 + ldrh r0, [r3, #0x30] + adds r2, r2, r0 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r3, #0x20] + subs r0, r0, r1 + strh r0, [r3, #0x20] + movs r1, #0xff + ands r2, r1 + strh r2, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080F7EF4 + ldr r0, _080F7EF8 + str r0, [r3, #0x1c] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080F7EFC + ldr r0, [r0] + ldr r1, [r0] + movs r0, #2 + strb r0, [r1, #6] +_080F7EF4: + pop {r0} + bx r0 + .align 2, 0 +_080F7EF8: .4byte sub_08007140 +_080F7EFC: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7EB0 + + thumb_func_start sub_080F7F00 +sub_080F7F00: @ 0x080F7F00 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080F7FE0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _080F7FC2 + movs r0, #0 + strh r0, [r1, #8] + ldr r0, _080F7FE4 + mov r8, r0 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #7] + cmp r0, #0x27 + bhi _080F7FC2 + ldr r4, _080F7FE8 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf0 + bl __umodsi3 + adds r1, r0, #0 + subs r1, #0x14 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x2c + movs r3, #5 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + ldr r1, _080F7FEC + lsls r5, r4, #4 + adds r5, r5, r4 + lsls r5, r5, #2 + adds r5, r5, r1 + lsls r0, r0, #0x17 + lsrs r0, r0, #0x17 + strh r0, [r5, #0x2e] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x18 + bl __umodsi3 + adds r0, #0x10 + strh r0, [r5, #0x30] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xff + ands r0, r1 + adds r0, #0x30 + strh r0, [r5, #0x32] + bl sub_0806F050 + ldrh r6, [r5, #4] + lsls r4, r6, #0x16 + lsrs r4, r4, #0x16 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x11 + bl __umodsi3 + adds r4, r4, r0 + ldr r1, _080F7FF0 + adds r0, r1, #0 + ands r4, r0 + ldr r0, _080F7FF4 + ands r0, r6 + orrs r0, r4 + strh r0, [r5, #4] + mov r1, r8 + ldr r0, [r1] + ldr r1, [r0] + ldrb r0, [r1, #7] + adds r0, #1 + strb r0, [r1, #7] +_080F7FC2: + ldr r0, _080F7FE4 + ldr r0, [r0] + ldr r0, [r0] + ldrb r0, [r0, #9] + cmp r0, #0 + beq _080F7FD4 + adds r0, r7, #0 + bl sub_080A8964 +_080F7FD4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F7FE0: .4byte gUnknown_3005B60 +_080F7FE4: .4byte gUnknown_2039D00 +_080F7FE8: .4byte gUnknown_856930C +_080F7FEC: .4byte gUnknown_20205AC +_080F7FF0: .4byte 0x000003FF +_080F7FF4: .4byte 0xFFFFFC00 + thumb_func_end sub_080F7F00 + + thumb_func_start sub_080F7FF8 +sub_080F7FF8: @ 0x080F7FF8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x32] + ldrh r0, [r4, #0x36] + adds r1, r1, r0 + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + movs r0, #0xff + ands r1, r0 + strh r1, [r4, #0x36] + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] + ldr r5, _080F806C + ldr r0, [r5] + ldr r0, [r0] + ldrb r0, [r0, #9] + cmp r0, #0 + beq _080F8046 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_080F8046: + movs r1, #0x20 + ldrsh r0, [r4, r1] + cmp r0, #0xf8 + bgt _080F8056 + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r0, #0x74 + ble _080F8066 +_080F8056: + adds r0, r4, #0 + bl sub_08006E00 + ldr r0, [r5] + ldr r1, [r0] + ldrb r0, [r1, #7] + subs r0, #1 + strb r0, [r1, #7] +_080F8066: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F806C: .4byte gUnknown_2039D00 + thumb_func_end sub_080F7FF8 + + thumb_func_start sub_080F8070 +sub_080F8070: @ 0x080F8070 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _080F80A8 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F80AC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + strh r5, [r1, #0xa] + ldr r0, _080F80B0 + lsls r4, r4, #6 + adds r4, r4, r0 + ldrh r0, [r4] + strh r0, [r1, #0xc] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F80A8: .4byte sub_080F80B4 +_080F80AC: .4byte gUnknown_3005B60 +_080F80B0: .4byte gUnknown_2039AA0 + thumb_func_end sub_080F8070 + + thumb_func_start sub_080F80B4 +sub_080F80B4: @ 0x080F80B4 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F8108 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrb r5, [r4, #8] + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xa + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _080F80FE + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r0, [r4, #0xc] + ldrb r2, [r4, #0x1e] + ldr r1, _080F810C + lsls r3, r5, #6 + adds r1, #0x38 + adds r3, r3, r1 + ldr r1, [r3] + str r1, [sp] + adds r1, r5, #0 + movs r3, #0 + bl sub_080F71DC + ldrh r0, [r4, #0x1e] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x1e] +_080F80FE: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F8108: .4byte gUnknown_3005B60 +_080F810C: .4byte gUnknown_2039AA0 + thumb_func_end sub_080F80B4 + + thumb_func_start sub_080F8110 +sub_080F8110: @ 0x080F8110 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r0, _080F82D4 + ldrh r2, [r0] + adds r4, r0, #0 + adds r3, r4, #2 + movs r0, #2 + mov r8, r0 +_080F8128: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r5, #0 + ldrsh r1, [r3, r5] + cmp r0, r1 + bge _080F8136 + ldrh r2, [r3] +_080F8136: + adds r3, #2 + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + mov r1, r8 + cmp r1, #0 + bge _080F8128 + lsls r0, r2, #0x10 + str r0, [sp] + cmp r0, #0 + bge _080F8174 + ldrh r2, [r4] + adds r3, r4, #2 + movs r4, #2 + mov r8, r4 +_080F8154: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r5, #0 + ldrsh r1, [r3, r5] + cmp r0, r1 + ble _080F8162 + ldrh r2, [r3] +_080F8162: + adds r3, #2 + movs r0, #1 + rsbs r0, r0, #0 + add r8, r0 + lsls r1, r2, #0x10 + str r1, [sp] + mov r4, r8 + cmp r4, #0 + bge _080F8154 +_080F8174: + movs r5, #0 + mov r8, r5 + mov sl, r5 +_080F817A: + ldr r0, _080F82D8 + mov r1, r8 + lsls r7, r1, #1 + adds r0, r7, r0 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #5 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r4, [sp] + asrs r5, r4, #0x10 + adds r1, r5, #0 + cmp r5, #0 + bge _080F819C + rsbs r1, r5, #0 +_080F819C: + bl __divsi3 + adds r4, r0, #0 + movs r1, #0xa + bl __modsi3 + cmp r0, #4 + ble _080F81AE + adds r4, #0xa +_080F81AE: + ldr r0, _080F82DC + mov sb, r0 + ldr r0, [r0] + ldr r0, [r0, #4] + mov r1, sl + adds r6, r1, r0 + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + str r0, [r6] + ldr r0, _080F82E0 + adds r7, r7, r0 + movs r2, #0 + ldrsh r1, [r7, r2] + cmp r1, #0 + bge _080F81D2 + rsbs r1, r1, #0 +_080F81D2: + lsls r0, r1, #5 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r5, #0 + cmp r1, #0 + bge _080F81E4 + rsbs r1, r1, #0 +_080F81E4: + bl __divsi3 + adds r4, r0, #0 + movs r1, #0xa + bl __modsi3 + cmp r0, #4 + ble _080F81F6 + adds r4, #0xa +_080F81F6: + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + str r0, [r6, #4] + movs r4, #0 + ldrsh r0, [r7, r4] + cmp r0, #0 + bge _080F820C + movs r0, #1 + strb r0, [r6, #0x10] +_080F820C: + mov r5, sb + ldr r0, [r5] + ldr r0, [r0, #4] + mov r1, sl + adds r4, r1, r0 + ldr r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + lsls r0, r0, #0xb + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + movs r5, #0xff + ands r0, r5 + cmp r0, #0x7f + bls _080F8238 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r1, r2 +_080F8238: + lsrs r0, r1, #8 + str r0, [r4, #8] + ldr r1, [r4, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + lsls r0, r0, #0xb + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + ands r0, r5 + cmp r0, #0x7f + bls _080F825C + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r1, r5 +_080F825C: + lsrs r0, r1, #8 + str r0, [r4, #0xc] + mov r0, r8 + lsls r4, r0, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_080F7BA0 + mov r2, sb + ldr r1, [r2] + ldr r1, [r1, #4] + add r1, sl + strb r0, [r1, #0x11] + adds r0, r4, #0 + movs r1, #1 + bl sub_080F7BF4 + mov r4, sb + ldr r1, [r4] + ldr r1, [r1, #4] + add r1, sl + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _080F8292 + rsbs r0, r0, #0 +_080F8292: + strb r0, [r1, #0x12] + ldr r0, _080F82E4 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0 + beq _080F82F0 + mov r5, sb + ldr r0, [r5] + ldr r0, [r0, #4] + mov r2, sl + adds r1, r2, r0 + ldr r5, [r1, #8] + ldrh r3, [r1, #8] + ldr r4, [r1, #0xc] + ldrh r2, [r1, #0xc] + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _080F82BC + lsls r0, r2, #0x10 + rsbs r0, r0, #0 + lsrs r2, r0, #0x10 +_080F82BC: + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + adds r0, r3, r2 + cmp r0, #0x58 + bne _080F82F0 + cmp r2, #0 + ble _080F82E8 + subs r0, r4, #1 + str r0, [r1, #0xc] + b _080F82F0 + .align 2, 0 +_080F82D4: .4byte gUnknown_2039BA8 +_080F82D8: .4byte gUnknown_2039BA0 +_080F82DC: .4byte gUnknown_2039D00 +_080F82E0: .4byte gUnknown_2039BB8 +_080F82E4: .4byte gUnknown_2039BC0 +_080F82E8: + cmp r3, #0 + ble _080F82F0 + subs r0, r5, #1 + str r0, [r1, #8] +_080F82F0: + movs r4, #0x14 + add sl, r4 + movs r5, #1 + add r8, r5 + mov r0, r8 + cmp r0, #3 + bgt _080F8300 + b _080F817A +_080F8300: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080F8110 + + thumb_func_start sub_080F8310 +sub_080F8310: @ 0x080F8310 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r1, #0 + str r1, [sp, #8] + movs r3, #0 + str r3, [sp, #0xc] + cmp r0, #0 + bne _080F83EC + mov sb, r3 + ldr r4, _080F83D4 + mov sl, r4 + movs r7, #0xa0 + lsls r7, r7, #0x13 + movs r6, #0 +_080F833C: + mov r1, sl + ldr r0, [r1] + ldr r0, [r0, #4] + adds r0, r6, r0 + ldrb r2, [r0, #0x11] + cmp r8, r2 + bhs _080F83BE + adds r2, #0x13 + mov r3, r8 + subs r2, r2, r3 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsrs r3, r7, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r1, _080F83D8 + bl sub_080025E0 + ldr r0, _080F83DC + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sl + ldr r4, [r0] + ldr r1, [r4, #4] + adds r1, r6, r1 + ldr r0, [r1, #8] + lsls r0, r0, #0x10 + ldrb r1, [r1, #0x11] + bl __udivsi3 + mov r1, r8 + adds r1, #1 + adds r3, r0, #0 + muls r3, r1, r3 + ldr r0, _080F83E0 + ands r0, r3 + ldr r1, _080F83E4 + cmp r0, r1 + bls _080F839A + movs r1, #0x80 + lsls r1, r1, #9 + adds r3, r3, r1 +_080F839A: + ldr r1, _080F83E8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + mov r1, sb + strh r1, [r0, #8] + lsrs r1, r3, #0x10 + strh r1, [r0, #0xa] + ldr r1, [r4] + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] + ldr r0, [sp, #8] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] +_080F83BE: + movs r3, #0xc0 + lsls r3, r3, #0x12 + adds r7, r7, r3 + adds r6, #0x14 + movs r4, #1 + add sb, r4 + mov r0, sb + cmp r0, #3 + ble _080F833C + b _080F850E + .align 2, 0 +_080F83D4: .4byte gUnknown_2039D00 +_080F83D8: .4byte 0x000060B3 +_080F83DC: .4byte sub_080F8538 +_080F83E0: .4byte 0x0000FFFF +_080F83E4: .4byte 0x00007FFF +_080F83E8: .4byte gUnknown_3005B60 +_080F83EC: + movs r1, #0 + mov sb, r1 + mov sl, r1 + movs r3, #0xc0 + lsls r3, r3, #0x13 + str r3, [sp, #0x10] +_080F83F8: + ldr r4, _080F8494 + ldr r0, [r4] + ldr r0, [r0, #4] + add r0, sl + ldrb r2, [r0, #0x12] + ldrb r0, [r0, #0x10] + ldr r1, _080F8498 + cmp r0, #0 + beq _080F840C + adds r1, #2 +_080F840C: + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + cmp r8, r0 + bge _080F84F4 + mov r3, r8 + lsls r2, r3, #0x18 + asrs r2, r2, #0x18 + subs r2, #0x13 + subs r2, r0, r2 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, [sp, #0x10] + lsrs r3, r4, #0x18 + movs r7, #1 + str r7, [sp] + str r7, [sp, #4] + movs r0, #1 + bl sub_080025E0 + ldr r0, _080F849C + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080F8494 + ldr r6, [r0] + ldr r1, [r6, #4] + add r1, sl + ldr r0, [r1, #0xc] + lsls r0, r0, #0x10 + ldrb r1, [r1, #0x12] + bl __udivsi3 + mov r1, r8 + adds r1, #1 + adds r3, r0, #0 + muls r3, r1, r3 + ldr r0, _080F84A0 + ands r0, r3 + ldr r1, _080F84A4 + cmp r0, r1 + bls _080F846A + movs r1, #0x80 + lsls r1, r1, #9 + adds r3, r3, r1 +_080F846A: + ldr r1, _080F84A8 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + mov r0, sb + strh r0, [r4, #8] + ldr r0, [r6, #4] + add r0, sl + ldrb r0, [r0, #0x10] + adds r6, r1, #0 + cmp r0, #0 + beq _080F84AC + strh r7, [r4, #0xc] + ldr r0, [sp, #0xc] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + b _080F84B6 + .align 2, 0 +_080F8494: .4byte gUnknown_2039D00 +_080F8498: .4byte 0x000060A3 +_080F849C: .4byte sub_080F8538 +_080F84A0: .4byte 0x0000FFFF +_080F84A4: .4byte 0x00007FFF +_080F84A8: .4byte gUnknown_3005B60 +_080F84AC: + ldr r0, [sp, #8] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] +_080F84B6: + ldr r1, _080F84D8 + ldr r0, [r1] + ldr r0, [r0, #4] + mov r4, sl + adds r1, r4, r0 + ldrb r0, [r1, #0x10] + ldr r4, _080F84D8 + cmp r0, #0 + beq _080F84DC + adds r0, r2, r5 + lsls r0, r0, #3 + adds r0, r0, r6 + lsrs r2, r3, #0x10 + ldr r1, [r1, #8] + subs r1, r1, r2 + b _080F84E8 + .align 2, 0 +_080F84D8: .4byte gUnknown_2039D00 +_080F84DC: + adds r0, r2, r5 + lsls r0, r0, #3 + adds r0, r0, r6 + lsrs r2, r3, #0x10 + ldr r1, [r1, #8] + adds r1, r1, r2 +_080F84E8: + strh r1, [r0, #0xa] + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] +_080F84F4: + movs r0, #0x14 + add sl, r0 + ldr r1, [sp, #0x10] + movs r3, #0xc0 + lsls r3, r3, #0x12 + adds r1, r1, r3 + str r1, [sp, #0x10] + movs r4, #1 + add sb, r4 + mov r0, sb + cmp r0, #3 + bgt _080F850E + b _080F83F8 +_080F850E: + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _080F851A + movs r0, #0x16 + bl sub_080A306C +_080F851A: + ldr r3, [sp, #8] + cmp r3, #0 + beq _080F8526 + movs r0, #0x15 + bl sub_080A306C +_080F8526: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F8310 + + thumb_func_start sub_080F8538 +sub_080F8538: @ 0x080F8538 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r4, #0 + mov sb, r4 + ldr r1, _080F8580 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r6, [r0, #8] + ldrh r7, [r0, #0xa] + ldrh r1, [r0, #0xc] + mov ip, r1 + movs r2, #0xc + ldrsh r0, [r0, r2] + cmp r0, #0 + beq _080F8588 + ldr r2, _080F8584 + ldr r0, [r2] + ldr r0, [r0] + lsls r1, r6, #1 + adds r0, #0xc + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + adds r5, r1, #0 + cmp r0, #0 + bgt _080F85A0 + b _080F859E + .align 2, 0 +_080F8580: .4byte gUnknown_3005B60 +_080F8584: .4byte gUnknown_2039D00 +_080F8588: + ldr r2, _080F85C8 + ldr r0, [r2] + ldr r0, [r0] + lsls r1, r6, #1 + adds r0, #0xc + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + adds r5, r1, #0 + cmp r0, #0x57 + ble _080F85A0 +_080F859E: + movs r4, #1 +_080F85A0: + ldr r0, [r2] + ldr r0, [r0] + adds r0, #0xc + adds r2, r0, r5 + ldrh r3, [r2] + movs r0, #0 + ldrsh r1, [r2, r0] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _080F85BA + movs r1, #1 + mov sb, r1 +_080F85BA: + mov r0, sb + cmp r0, #0 + bne _080F85DA + cmp r4, #0 + beq _080F85CC + strh r7, [r2] + b _080F85DA + .align 2, 0 +_080F85C8: .4byte gUnknown_2039D00 +_080F85CC: + mov r1, ip + cmp r1, #0 + beq _080F85D6 + subs r0, r3, #1 + b _080F85D8 +_080F85D6: + adds r0, r3, #1 +_080F85D8: + strh r0, [r2] +_080F85DA: + cmp r4, #0 + bne _080F8654 + mov r2, sb + cmp r2, #0 + bne _080F865A + movs r2, #0 +_080F85E6: + ldr r0, _080F8604 + ldr r0, [r0] + ldr r0, [r0] + adds r0, #0xc + adds r0, r0, r5 + movs r1, #0 + ldrsh r3, [r0, r1] + adds r0, r2, #1 + lsls r1, r0, #3 + adds r4, r0, #0 + cmp r3, r1 + blt _080F8608 + movs r0, #8 + b _080F8624 + .align 2, 0 +_080F8604: .4byte gUnknown_2039D00 +_080F8608: + lsls r0, r2, #3 + cmp r3, r0 + blt _080F8622 + adds r0, r3, #0 + cmp r3, #0 + bge _080F8616 + adds r0, r3, #7 +_080F8616: + asrs r0, r0, #3 + lsls r0, r0, #3 + subs r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080F8624 +_080F8622: + movs r0, #0 +_080F8624: + cmp r0, #3 + bhi _080F8630 + ldr r3, _080F862C + b _080F8632 + .align 2, 0 +_080F862C: .4byte 0x0000504C +_080F8630: + ldr r3, _080F867C +_080F8632: + adds r1, r0, r3 + adds r2, #7 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r3, r5, r6 + adds r3, #6 + lsls r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #2 + lsrs r3, r3, #0x18 + bl sub_080025E0 + adds r2, r4, #0 + cmp r2, #0xa + ble _080F85E6 +_080F8654: + mov r0, sb + cmp r0, #0 + beq _080F866C +_080F865A: + ldr r0, _080F8680 + ldr r0, [r0] + ldr r1, [r0] + ldrb r0, [r1, #0x14] + subs r0, #1 + strb r0, [r1, #0x14] + mov r0, r8 + bl sub_080A8964 +_080F866C: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F867C: .4byte 0x00005057 +_080F8680: .4byte gUnknown_2039D00 + thumb_func_end sub_080F8538 + + thumb_func_start sub_080F8684 +sub_080F8684: @ 0x080F8684 + push {r4, r5, lr} + ldr r4, _080F86F0 + movs r0, #0x20 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x18 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] + movs r0, #0x50 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #4] + movs r5, #0x80 + lsls r5, r5, #4 + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #8] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0xc] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x10] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x14] + adds r0, r5, #0 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x18] + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0x1c] + bl sub_0805EBD8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F86F0: .4byte gUnknown_2039D00 + thumb_func_end sub_080F8684 + + thumb_func_start sub_080F86F4 +sub_080F86F4: @ 0x080F86F4 + push {r4, r5, lr} + ldr r5, _080F875C + ldr r0, [r5] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + movs r4, #0 + str r4, [r0] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #4] + ldr r0, [r0, #8] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #8] + ldr r0, [r0, #0xc] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0xc] + ldr r0, [r0, #0x10] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x10] + ldr r0, [r0, #0x14] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x14] + ldr r0, [r0, #0x18] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x18] + ldr r0, [r0, #0x1c] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #0x1c] + bl sub_08000BF0 + str r4, [r5] + bl sub_0805ECB0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F875C: .4byte gUnknown_2039D00 + thumb_func_end sub_080F86F4 + + thumb_func_start sub_080F8760 +sub_080F8760: @ 0x080F8760 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + str r1, [sp] + mov r0, sp + movs r2, #0 + strb r4, [r0, #4] + mov r1, sp + movs r0, #1 + strb r0, [r1, #5] + mov r0, sp + strb r2, [r0, #6] + movs r1, #2 + strb r1, [r0, #7] + strb r2, [r0, #8] + strb r1, [r0, #9] + strb r2, [r0, #0xa] + strb r2, [r0, #0xb] + mov r3, sp + ldrb r2, [r3, #0xc] + subs r1, #0x12 + 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 r1, sp + movs r0, #0x80 + strb r0, [r1, #0xd] + mov r0, sp + movs r1, #0 + movs r2, #0 + bl sub_08004548 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F8760 + + thumb_func_start sub_080F87C0 +sub_080F87C0: @ 0x080F87C0 + push {r4, r5, lr} + ldr r0, _080F87F8 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _080F87FC + adds r0, r0, r1 + bl sub_080DA58C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + cmp r5, #0 + beq _080F87EE + ldr r4, _080F8800 + ldrb r0, [r4] + ldr r1, _080F8804 + ldrb r1, [r1] + bl sub_080DA330 + ldrb r0, [r4] + bl sub_080DA800 +_080F87EE: + ldr r0, _080F8808 + strh r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F87F8: .4byte gUnknown_2039BC4 +_080F87FC: .4byte gUnknown_2024190 +_080F8800: .4byte gUnknown_2039BCC +_080F8804: .4byte gUnknown_2039BCE +_080F8808: .4byte gUnknown_2037290 + thumb_func_end sub_080F87C0 + + thumb_func_start sub_080F880C +sub_080F880C: @ 0x080F880C + push {r4, lr} + movs r4, #0 + ldr r0, _080F8830 + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _080F8834 + adds r2, r1, r0 + ldr r0, _080F8838 + ldrh r0, [r0] + cmp r0, #4 + bhi _080F887E + lsls r0, r0, #2 + ldr r1, _080F883C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F8830: .4byte gUnknown_2039BC4 +_080F8834: .4byte gUnknown_2024190 +_080F8838: .4byte gUnknown_2039BCC +_080F883C: .4byte _080F8840 +_080F8840: @ jump table + .4byte _080F8854 @ case 0 + .4byte _080F885A @ case 1 + .4byte _080F8860 @ case 2 + .4byte _080F8866 @ case 3 + .4byte _080F886C @ case 4 +_080F8854: + adds r0, r2, #0 + movs r1, #0x32 + b _080F8870 +_080F885A: + adds r0, r2, #0 + movs r1, #0x33 + b _080F8870 +_080F8860: + adds r0, r2, #0 + movs r1, #0x34 + b _080F8870 +_080F8866: + adds r0, r2, #0 + movs r1, #0x35 + b _080F8870 +_080F886C: + adds r0, r2, #0 + movs r1, #0x36 +_080F8870: + bl sub_0806A058 + ldr r1, _080F8888 + ldrh r1, [r1] + cmp r0, r1 + bls _080F887E + movs r4, #1 +_080F887E: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F8888: .4byte gUnknown_2039BCE + thumb_func_end sub_080F880C + + thumb_func_start sub_080F888C +sub_080F888C: @ 0x080F888C + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _080F88B4 + ldr r0, _080F88B8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080F88A0 + b _080F8AE0 +_080F88A0: + ldr r0, _080F88BC + ldrh r0, [r0] + cmp r0, #4 + bls _080F88AA + b _080F8AE0 +_080F88AA: + lsls r0, r0, #2 + ldr r1, _080F88C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F88B4: .4byte gUnknown_2039BC0 +_080F88B8: .4byte gUnknown_2039BC5 +_080F88BC: .4byte gUnknown_2039BCC +_080F88C0: .4byte _080F88C4 +_080F88C4: @ jump table + .4byte _080F88D8 @ case 0 + .4byte _080F8948 @ case 1 + .4byte _080F89B4 @ case 2 + .4byte _080F8A20 @ case 3 + .4byte _080F8A88 @ case 4 +_080F88D8: + ldr r6, _080F893C + ldrb r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080F8940 + adds r0, r0, r4 + movs r1, #0x32 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + mov r0, sp + strb r1, [r0] + ldr r0, _080F8944 + ldrh r0, [r0] + cmp r1, r0 + bls _080F88FC + b _080F8AE0 +_080F88FC: + adds r0, r1, #0 + cmp r0, #3 + bls _080F8904 + b _080F8AE0 +_080F8904: + adds r1, r0, #1 + mov r0, sp + strb r1, [r0] + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x32 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080F892C + b _080F8AE0 +_080F892C: + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x32 + bl sub_080EEFFC + b _080F8AE0 + .align 2, 0 +_080F893C: .4byte gUnknown_2039BC4 +_080F8940: .4byte gUnknown_2024190 +_080F8944: .4byte gUnknown_2039BCE +_080F8948: + mov r4, sp + ldr r7, _080F89A8 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080F89AC + adds r0, r0, r5 + movs r1, #0x33 + bl sub_0806A058 + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080F89B0 + ldrh r0, [r0] + cmp r2, r0 + bls _080F896C + b _080F8AE0 +_080F896C: + cmp r2, #3 + bls _080F8972 + b _080F8AE0 +_080F8972: + mov r1, sp + adds r0, r2, #1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x33 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080F899A + b _080F8AE0 +_080F899A: + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x33 + bl sub_080EEFFC + b _080F8AE0 + .align 2, 0 +_080F89A8: .4byte gUnknown_2039BC4 +_080F89AC: .4byte gUnknown_2024190 +_080F89B0: .4byte gUnknown_2039BCE +_080F89B4: + mov r4, sp + ldr r7, _080F8A14 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080F8A18 + adds r0, r0, r5 + movs r1, #0x34 + bl sub_0806A058 + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080F8A1C + ldrh r0, [r0] + cmp r2, r0 + bls _080F89D8 + b _080F8AE0 +_080F89D8: + cmp r2, #3 + bls _080F89DE + b _080F8AE0 +_080F89DE: + mov r1, sp + adds r0, r2, #1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x34 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080F8AE0 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x34 + bl sub_080EEFFC + b _080F8AE0 + .align 2, 0 +_080F8A14: .4byte gUnknown_2039BC4 +_080F8A18: .4byte gUnknown_2024190 +_080F8A1C: .4byte gUnknown_2039BCE +_080F8A20: + mov r4, sp + ldr r7, _080F8A7C + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080F8A80 + adds r0, r0, r5 + movs r1, #0x35 + bl sub_0806A058 + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080F8A84 + ldrh r0, [r0] + cmp r2, r0 + bhi _080F8AE0 + cmp r2, #3 + bhi _080F8AE0 + mov r1, sp + adds r0, r2, #1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x35 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080F8AE0 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x35 + bl sub_080EEFFC + b _080F8AE0 + .align 2, 0 +_080F8A7C: .4byte gUnknown_2039BC4 +_080F8A80: .4byte gUnknown_2024190 +_080F8A84: .4byte gUnknown_2039BCE +_080F8A88: + mov r4, sp + ldr r7, _080F8AE8 + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _080F8AEC + adds r0, r0, r5 + movs r1, #0x36 + bl sub_0806A058 + strb r0, [r4] + mov r0, sp + ldrb r2, [r0] + ldr r0, _080F8AF0 + ldrh r0, [r0] + cmp r2, r0 + bhi _080F8AE0 + cmp r2, #3 + bhi _080F8AE0 + mov r1, sp + adds r0, r2, #1 + strb r0, [r1] + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x36 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080F8AE0 + ldrb r0, [r7] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x36 + bl sub_080EEFFC +_080F8AE0: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F8AE8: .4byte gUnknown_2039BC4 +_080F8AEC: .4byte gUnknown_2024190 +_080F8AF0: .4byte gUnknown_2039BCE + thumb_func_end sub_080F888C + + thumb_func_start sub_080F8AF4 +sub_080F8AF4: @ 0x080F8AF4 + push {lr} + ldr r0, _080F8B0C + ldr r1, _080F8B10 + ldrh r1, [r1] + lsls r1, r1, #6 + ldr r2, _080F8B14 + adds r1, r1, r2 + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_080F8B0C: .4byte gUnknown_2021C40 +_080F8B10: .4byte gUnknown_2037284 +_080F8B14: .4byte gUnknown_2039AAD + thumb_func_end sub_080F8AF4 + + thumb_func_start sub_080F8B18 +sub_080F8B18: @ 0x080F8B18 + push {lr} + ldr r0, _080F8B30 + ldr r1, _080F8B34 + ldrh r1, [r1] + lsls r1, r1, #6 + ldr r2, _080F8B38 + adds r1, r1, r2 + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_080F8B30: .4byte gUnknown_2021C68 +_080F8B34: .4byte gUnknown_2037284 +_080F8B38: .4byte gUnknown_2039AA2 + thumb_func_end sub_080F8B18 + + thumb_func_start sub_080F8B3C +sub_080F8B3C: @ 0x080F8B3C + push {r4, r5, r6, lr} + movs r1, #0 + movs r2, #0 + ldr r5, _080F8B78 + ldr r4, _080F8B7C + ldr r0, _080F8B80 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r4 + movs r6, #0 + ldrsh r3, [r0, r6] +_080F8B52: + lsls r0, r1, #1 + adds r0, r0, r4 + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r3, r0 + bge _080F8B64 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080F8B64: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _080F8B52 + strh r2, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8B78: .4byte gUnknown_2037280 +_080F8B7C: .4byte gUnknown_2039BA0 +_080F8B80: .4byte gUnknown_2037284 + thumb_func_end sub_080F8B3C + + thumb_func_start sub_080F8B84 +sub_080F8B84: @ 0x080F8B84 + ldr r2, _080F8B98 + ldr r1, _080F8B9C + ldr r0, _080F8BA0 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080F8B98: .4byte gUnknown_2037280 +_080F8B9C: .4byte gUnknown_2039BA0 +_080F8BA0: .4byte gUnknown_2037284 + thumb_func_end sub_080F8B84 + + thumb_func_start sub_080F8BA4 +sub_080F8BA4: @ 0x080F8BA4 + push {lr} + movs r1, #0 + ldr r2, _080F8BCC + ldrb r0, [r2] + ldr r3, _080F8BD0 + cmp r0, #0 + beq _080F8BC4 +_080F8BB2: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bhi _080F8BC4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080F8BB2 +_080F8BC4: + strh r1, [r3] + pop {r0} + bx r0 + .align 2, 0 +_080F8BCC: .4byte gUnknown_2039BC0 +_080F8BD0: .4byte gUnknown_2037282 + thumb_func_end sub_080F8BA4 + + thumb_func_start sub_080F8BD4 +sub_080F8BD4: @ 0x080F8BD4 + push {r4, lr} + movs r1, #0 + ldr r2, _080F8C08 + ldrb r0, [r2] + ldr r4, _080F8C0C + ldr r3, _080F8C10 + cmp r0, #0 + beq _080F8BF6 +_080F8BE4: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bhi _080F8BF6 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080F8BE4 +_080F8BF6: + lsls r1, r1, #6 + adds r1, r1, r3 + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8C08: .4byte gUnknown_2039BC0 +_080F8C0C: .4byte gUnknown_2021C68 +_080F8C10: .4byte gUnknown_2039AAD + thumb_func_end sub_080F8BD4 + + thumb_func_start sub_080F8C14 +sub_080F8C14: @ 0x080F8C14 + push {r4, lr} + movs r1, #0 + ldr r2, _080F8C48 + ldrb r0, [r2] + ldr r4, _080F8C4C + ldr r3, _080F8C50 + cmp r0, #0 + beq _080F8C36 +_080F8C24: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bhi _080F8C36 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080F8C24 +_080F8C36: + lsls r1, r1, #6 + adds r1, r1, r3 + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8C48: .4byte gUnknown_2039BC0 +_080F8C4C: .4byte gUnknown_2021C40 +_080F8C50: .4byte gUnknown_2039AA2 + thumb_func_end sub_080F8C14 + + thumb_func_start sub_080F8C54 +sub_080F8C54: @ 0x080F8C54 + push {lr} + ldr r0, _080F8C60 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080F8C60: .4byte sub_080D7350 + thumb_func_end sub_080F8C54 + + thumb_func_start sub_080F8C64 +sub_080F8C64: @ 0x080F8C64 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080F8C88 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080F8C82 + adds r0, r2, #0 + bl sub_080A8964 + ldr r0, _080F8C8C + bl sub_08000540 +_080F8C82: + pop {r0} + bx r0 + .align 2, 0 +_080F8C88: .4byte gUnknown_2037C74 +_080F8C8C: .4byte sub_080F8C54 + thumb_func_end sub_080F8C64 + + thumb_func_start sub_080F8C90 +sub_080F8C90: @ 0x080F8C90 + push {lr} + sub sp, #4 + bl sub_080987DC + ldr r0, _080F8CB8 + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080F8CB8: .4byte sub_080F8C64 + thumb_func_end sub_080F8C90 + + thumb_func_start sub_080F8CBC +sub_080F8CBC: @ 0x080F8CBC + ldr r2, _080F8CD0 + ldr r1, _080F8CD4 + ldr r0, _080F8CD8 + ldrh r0, [r0] + lsls r0, r0, #6 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_080F8CD0: .4byte gUnknown_2037280 +_080F8CD4: .4byte gUnknown_2039AA0 +_080F8CD8: .4byte gUnknown_2037284 + thumb_func_end sub_080F8CBC + + thumb_func_start sub_080F8CDC +sub_080F8CDC: @ 0x080F8CDC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _080F8D00 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080F8CFA + adds r0, r2, #0 + bl sub_080A8964 + ldr r0, _080F8D04 + bl sub_08000540 +_080F8CFA: + pop {r0} + bx r0 + .align 2, 0 +_080F8D00: .4byte gUnknown_2037C74 +_080F8D04: .4byte sub_080F6318 + thumb_func_end sub_080F8CDC + + thumb_func_start sub_080F8D08 +sub_080F8D08: @ 0x080F8D08 + push {lr} + sub sp, #4 + bl sub_080987DC + ldr r0, _080F8D30 + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080F8D30: .4byte sub_080F8CDC + thumb_func_end sub_080F8D08 + + thumb_func_start sub_080F8D34 +sub_080F8D34: @ 0x080F8D34 + ldr r0, _080F8D40 + ldr r1, _080F8D44 + ldrb r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_080F8D40: .4byte gUnknown_2037280 +_080F8D44: .4byte gUnknown_2039BC5 + thumb_func_end sub_080F8D34 + + thumb_func_start sub_080F8D48 +sub_080F8D48: @ 0x080F8D48 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_080987DC + ldr r6, _080F8D80 + adds r0, r6, #0 + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r2, _080F8D84 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A8A44 + ldr r1, _080F8D88 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0x1a] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F8D80: .4byte sub_080FCDF0 +_080F8D84: .4byte sub_080F8D8C +_080F8D88: .4byte gUnknown_3005B60 + thumb_func_end sub_080F8D48 + + thumb_func_start sub_080F8D8C +sub_080F8D8C: @ 0x080F8D8C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080F8DB4 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080F8DC4 + ldr r0, _080F8DB8 + ldrb r0, [r0] + bl sub_080DA0B8 + ldr r1, _080F8DBC + ldr r2, _080F8DC0 + adds r0, r4, #0 + bl sub_080A8A44 + b _080F8DDA + .align 2, 0 +_080F8DB4: .4byte gUnknown_2039BCA +_080F8DB8: .4byte gUnknown_2039BC4 +_080F8DBC: .4byte sub_080FCF2C +_080F8DC0: .4byte sub_080F8DEC +_080F8DC4: + ldr r0, _080F8DE0 + ldrb r0, [r0] + bl sub_080DA0B8 + ldr r1, _080F8DE4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080F8DE8 + str r1, [r0] +_080F8DDA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8DE0: .4byte gUnknown_2039BC4 +_080F8DE4: .4byte gUnknown_3005B60 +_080F8DE8: .4byte sub_081D9690 + thumb_func_end sub_080F8D8C + + thumb_func_start sub_080F8DEC +sub_080F8DEC: @ 0x080F8DEC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F8E00 + ldr r2, _080F8E04 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_080F8E00: .4byte sub_080FD058 +_080F8E04: .4byte sub_080F8E08 + thumb_func_end sub_080F8DEC + + thumb_func_start sub_080F8E08 +sub_080F8E08: @ 0x080F8E08 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F8E1C + ldr r2, _080F8E20 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_080F8E1C: .4byte sub_080FD69C +_080F8E20: .4byte sub_080F8E24 + thumb_func_end sub_080F8E08 + + thumb_func_start sub_080F8E24 +sub_080F8E24: @ 0x080F8E24 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F8E38 + ldr r2, _080F8E3C + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_080F8E38: .4byte sub_080FD0E8 +_080F8E3C: .4byte sub_080F8E40 + thumb_func_end sub_080F8E24 + + thumb_func_start sub_080F8E40 +sub_080F8E40: @ 0x080F8E40 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r3, #0 + ldr r5, _080F8EBC + mov ip, r5 + ldr r0, _080F8EC0 + mov sb, r0 + add r1, sp, #4 + mov r8, r1 + ldrb r0, [r5] + cmp r3, r0 + bhs _080F8E8A + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r4, r0, #3 + ldr r7, _080F8EC4 +_080F8E70: + mov r1, sp + adds r2, r1, r3 + adds r1, r3, #1 + lsls r0, r1, #1 + adds r0, r0, r4 + adds r0, r0, r7 + ldrh r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldrb r0, [r5] + cmp r3, r0 + blo _080F8E70 +_080F8E8A: + movs r3, #0 + mov r1, ip + ldrb r0, [r1] + cmp r3, r0 + bhs _080F8EAE + adds r4, r0, #0 + mov r2, sp +_080F8E98: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + bhs _080F8EAE + mov r0, sp + adds r1, r0, r3 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _080F8E98 +_080F8EAE: + mov r1, ip + ldrb r1, [r1] + cmp r3, r1 + bne _080F8EC8 + movs r0, #0 + b _080F8ECA + .align 2, 0 +_080F8EBC: .4byte gUnknown_2039BD0 +_080F8EC0: .4byte gUnknown_2037280 +_080F8EC4: .4byte gUnknown_3005B68 +_080F8EC8: + movs r0, #1 +_080F8ECA: + mov r1, sb + strh r0, [r1] + movs r3, #0 + mov r4, ip + ldrb r0, [r4] + cmp r3, r0 + bhs _080F8EFC + mov r5, r8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r2, r0, #3 + ldr r7, _080F8F28 +_080F8EE2: + adds r1, r5, r3 + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r2 + adds r0, r0, r7 + ldrh r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r1, [r4] + cmp r3, r1 + blo _080F8EE2 +_080F8EFC: + mov r0, r8 + bl sub_080F8F64 + ldr r1, _080F8F2C + strb r0, [r1] + ldr r0, _080F8F30 + ldrb r0, [r0] + bl sub_080DA800 + ldr r1, _080F8F34 + ldr r2, _080F8F38 + adds r0, r6, #0 + bl sub_080A8A44 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F8F28: .4byte gUnknown_3005B68 +_080F8F2C: .4byte gUnknown_2039BCB +_080F8F30: .4byte gUnknown_2039BCC +_080F8F34: .4byte sub_080FD794 +_080F8F38: .4byte sub_080F8F3C + thumb_func_end sub_080F8E40 + + thumb_func_start sub_080F8F3C +sub_080F8F3C: @ 0x080F8F3C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_080DC5BC + ldr r1, _080F8F5C + ldr r2, _080F8F60 + adds r0, r4, #0 + bl sub_080A8A44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F8F5C: .4byte sub_080FD824 +_080F8F60: .4byte sub_080F8F98 + thumb_func_end sub_080F8F3C + + thumb_func_start sub_080F8F64 +sub_080F8F64: @ 0x080F8F64 + push {r4, r5, lr} + adds r3, r0, #0 + movs r4, #0 + movs r2, #1 + ldr r0, _080F8F94 + ldrb r0, [r0] + cmp r2, r0 + bge _080F8F8C + adds r5, r0, #0 +_080F8F76: + adds r0, r3, r4 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhs _080F8F86 + lsls r0, r2, #0x18 + lsrs r4, r0, #0x18 +_080F8F86: + adds r2, #1 + cmp r2, r5 + blt _080F8F76 +_080F8F8C: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_080F8F94: .4byte gUnknown_2039BD0 + thumb_func_end sub_080F8F64 + + thumb_func_start sub_080F8F98 +sub_080F8F98: @ 0x080F8F98 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _080F8FC0 + ldrh r0, [r0] + cmp r0, #1 + bne _080F8FCC + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F900C + ldr r0, _080F8FC4 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080F8FC8 + str r0, [r1] + b _080F900C + .align 2, 0 +_080F8FC0: .4byte gUnknown_2037280 +_080F8FC4: .4byte gUnknown_3005B60 +_080F8FC8: .4byte sub_080F901C +_080F8FCC: + ldr r0, _080F9014 + adds r4, r0, #2 + movs r7, #0xff + movs r5, #3 +_080F8FD4: + ldrb r0, [r4, #0x10] + orrs r0, r7 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0800885C + adds r4, #0x40 + subs r5, #1 + cmp r5, #0 + bge _080F8FD4 + adds r0, r6, #0 + bl sub_080A8964 + ldr r0, _080F9018 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + bl sub_080987E8 + bl sub_080988C4 +_080F900C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9014: .4byte gUnknown_2039AA0 +_080F9018: .4byte gUnknown_3005AEC + thumb_func_end sub_080F8F98 + + thumb_func_start sub_080F901C +sub_080F901C: @ 0x080F901C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800A7F8 + ldr r1, _080F903C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080F9040 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F903C: .4byte gUnknown_3005B60 +_080F9040: .4byte sub_080F9044 + thumb_func_end sub_080F901C + + thumb_func_start sub_080F9044 +sub_080F9044: @ 0x080F9044 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080F9064 + ldrb r0, [r0] + cmp r0, #0 + bne _080F9060 + adds r0, r1, #0 + bl sub_080A8964 + bl sub_080987E8 + bl sub_080988C4 +_080F9060: + pop {r0} + bx r0 + .align 2, 0 +_080F9064: .4byte gUnknown_30031C4 + thumb_func_end sub_080F9044 + + thumb_func_start sub_080F9068 +sub_080F9068: @ 0x080F9068 + push {r4, lr} + ldr r0, _080F9098 + ldr r2, [r0] + ldr r1, _080F909C + ldrb r3, [r1, #0x15] + ldr r4, _080F90A0 + adds r0, r2, r4 + strh r3, [r0] + adds r0, r1, #0 + adds r0, #0x55 + ldrb r3, [r0] + adds r4, #2 + adds r0, r2, r4 + strh r3, [r0] + adds r1, #0x95 + ldrb r0, [r1] + movs r1, #0x9e + lsls r1, r1, #5 + adds r2, r2, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F9098: .4byte gUnknown_3005AEC +_080F909C: .4byte gUnknown_2039AA0 +_080F90A0: .4byte 0x000013BC + thumb_func_end sub_080F9068 + + thumb_func_start sub_080F90A4 +sub_080F90A4: @ 0x080F90A4 + push {lr} + ldr r0, _080F90BC + ldrb r0, [r0] + adds r1, r0, #0 + cmp r0, #1 + beq _080F90CA + cmp r0, #1 + bgt _080F90C0 + cmp r0, #0 + beq _080F90C6 + b _080F90D2 + .align 2, 0 +_080F90BC: .4byte gUnknown_2037282 +_080F90C0: + cmp r1, #2 + beq _080F90CE + b _080F90D2 +_080F90C6: + movs r1, #3 + b _080F90D4 +_080F90CA: + movs r1, #4 + b _080F90D4 +_080F90CE: + movs r1, #5 + b _080F90D4 +_080F90D2: + movs r1, #0x64 +_080F90D4: + ldr r0, _080F90DC + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080F90DC: .4byte gUnknown_2037280 + thumb_func_end sub_080F90A4 + + thumb_func_start sub_080F90E0 +sub_080F90E0: @ 0x080F90E0 + push {lr} + bl sub_080F8AF4 + bl sub_080F8B18 + bl sub_080F8CBC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F90E0 + + thumb_func_start sub_080F90F4 +sub_080F90F4: @ 0x080F90F4 + push {lr} + ldr r0, _080F9108 + ldrh r0, [r0] + cmp r0, #4 + bhi _080F9134 + lsls r0, r0, #2 + ldr r1, _080F910C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F9108: .4byte gUnknown_2039BCC +_080F910C: .4byte _080F9110 +_080F9110: @ jump table + .4byte _080F9124 @ case 0 + .4byte _080F9128 @ case 1 + .4byte _080F912C @ case 2 + .4byte _080F9130 @ case 3 + .4byte _080F9134 @ case 4 +_080F9124: + movs r1, #8 + b _080F9136 +_080F9128: + movs r1, #9 + b _080F9136 +_080F912C: + movs r1, #0xa + b _080F9136 +_080F9130: + movs r1, #0xb + b _080F9136 +_080F9134: + movs r1, #0xc +_080F9136: + ldr r0, _080F9150 + ldr r0, [r0] + lsls r1, r1, #5 + adds r0, r0, r1 + ldr r1, _080F9154 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r1, #0 + bne _080F915C + ldr r0, _080F9158 + strh r1, [r0] + b _080F9162 + .align 2, 0 +_080F9150: .4byte gUnknown_3005AEC +_080F9154: .4byte 0x00002E98 +_080F9158: .4byte gUnknown_2037280 +_080F915C: + ldr r1, _080F9168 + movs r0, #1 + strh r0, [r1] +_080F9162: + pop {r0} + bx r0 + .align 2, 0 +_080F9168: .4byte gUnknown_2037280 + thumb_func_end sub_080F90F4 + + thumb_func_start sub_080F916C +sub_080F916C: @ 0x080F916C + push {lr} + movs r0, #0xff + bl sub_080DE4B0 + pop {r0} + bx r0 + thumb_func_end sub_080F916C + + thumb_func_start sub_080F9178 +sub_080F9178: @ 0x080F9178 + push {lr} + ldr r0, _080F91A8 + ldr r1, _080F91AC + ldrb r2, [r1] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _080F91C0 + ldr r0, _080F91B0 + ldrh r0, [r0] + cmp r0, #3 + bne _080F91C0 + ldr r1, _080F91B4 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _080F91B8 + cmp r1, r0 + ble _080F91C0 + ldr r1, _080F91BC + movs r0, #1 + b _080F91C4 + .align 2, 0 +_080F91A8: .4byte gUnknown_2039BC0 +_080F91AC: .4byte gUnknown_2039BC5 +_080F91B0: .4byte gUnknown_2039BCE +_080F91B4: .4byte gUnknown_2039BA8 +_080F91B8: .4byte 0x0000031F +_080F91BC: .4byte gUnknown_2037280 +_080F91C0: + ldr r1, _080F91CC + movs r0, #0 +_080F91C4: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080F91CC: .4byte gUnknown_2037280 + thumb_func_end sub_080F9178 + + thumb_func_start sub_080F91D0 +sub_080F91D0: @ 0x080F91D0 + push {lr} + movs r3, #0 + ldr r0, _080F91F8 + ldr r0, [r0] + ldr r2, _080F91FC + adds r1, r0, r2 + movs r2, #4 +_080F91DE: + ldrh r0, [r1] + cmp r0, #0 + beq _080F91EA + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080F91EA: + adds r1, #0x20 + subs r2, #1 + cmp r2, #0 + bge _080F91DE + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_080F91F8: .4byte gUnknown_3005AEC +_080F91FC: .4byte 0x00002F98 + thumb_func_end sub_080F91D0 + + thumb_func_start sub_080F9200 +sub_080F9200: @ 0x080F9200 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r0, _080F932C + mov ip, r0 + ldr r1, _080F9330 + mov r8, r1 + ldr r2, _080F9334 + mov sl, r2 + ldr r4, _080F9338 + mov sb, r4 + mov r2, ip + mov r1, sp + movs r6, #3 +_080F9222: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r6, #1 + cmp r6, #0 + bge _080F9222 + movs r6, #0 +_080F9232: + movs r1, #3 + cmp r1, r6 + ble _080F925C +_080F9238: + subs r4, r1, #1 + lsls r0, r4, #1 + mov r5, sp + adds r3, r5, r0 + lsls r0, r1, #1 + adds r2, r5, r0 + ldrh r5, [r3] + movs r7, #0 + ldrsh r1, [r3, r7] + movs r7, #0 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _080F9256 + strh r5, [r2] + strh r0, [r3] +_080F9256: + adds r1, r4, #0 + cmp r1, r6 + bgt _080F9238 +_080F925C: + adds r6, #1 + cmp r6, #2 + ble _080F9232 + mov r2, r8 + ldrh r0, [r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + movs r2, #0 + movs r7, #0 + movs r6, #0 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + adds r3, r0, #0 + mov r1, sp +_080F927A: + movs r5, #0 + ldrsh r0, [r1, r5] + cmp r0, r4 + bne _080F9296 + lsls r0, r2, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r2, r0, #0x18 + mov r5, r8 + ldrh r5, [r5] + cmp r6, r5 + bne _080F9296 + adds r7, r2, #0 +_080F9296: + adds r1, #2 + adds r6, #1 + cmp r6, #3 + ble _080F927A + movs r6, #0 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + asrs r1, r3, #0x10 + lsls r2, r2, #0x18 + mov r8, r2 + cmp r0, r1 + beq _080F92C4 + adds r2, r1, #0 + mov r1, sp +_080F92B4: + adds r1, #2 + adds r6, #1 + cmp r6, #3 + bgt _080F92C4 + movs r4, #0 + ldrsh r0, [r1, r4] + cmp r0, r2 + bne _080F92B4 +_080F92C4: + lsls r0, r6, #0x18 + lsrs r5, r0, #0x18 + adds r2, r7, #0 + movs r6, #0 + asrs r0, r3, #0x10 + str r0, [sp, #8] + mov r1, ip + movs r4, #0 + ldrsh r0, [r1, r4] + ldr r1, [sp, #8] + cmp r1, r0 + bne _080F92E6 + cmp r7, #1 + beq _080F92FE +_080F92E0: + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_080F92E6: + adds r6, #1 + cmp r6, #3 + bgt _080F92FE + lsls r0, r6, #1 + add r0, ip + asrs r1, r3, #0x10 + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r1, r0 + bne _080F92E6 + cmp r2, #1 + bne _080F92E0 +_080F92FE: + lsls r4, r6, #6 + mov r0, sb + adds r1, r4, r0 + mov r0, sl + bl sub_080088B8 + ldr r0, _080F933C + mov r1, sb + adds r1, #0xb + adds r4, r4, r1 + adds r1, r4, #0 + bl sub_080088B8 + mov r1, r8 + asrs r0, r1, #0x18 + cmp r0, #1 + beq _080F9324 + cmp r7, r0 + bne _080F9340 +_080F9324: + ldr r0, _080F9330 + strh r5, [r0] + b _080F9346 + .align 2, 0 +_080F932C: .4byte gUnknown_2039BA0 +_080F9330: .4byte gUnknown_2037284 +_080F9334: .4byte gUnknown_2021C40 +_080F9338: .4byte gUnknown_2039AA2 +_080F933C: .4byte gUnknown_2021C54 +_080F9340: + ldr r1, _080F9358 + adds r0, r5, #4 + strh r0, [r1] +_080F9346: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9358: .4byte gUnknown_2037284 + thumb_func_end sub_080F9200 + + thumb_func_start sub_080F935C +sub_080F935C: @ 0x080F935C + push {lr} + ldr r0, _080F9368 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080F9368: .4byte sub_08085B34 + thumb_func_end sub_080F935C + + thumb_func_start sub_080F936C +sub_080F936C: @ 0x080F936C + push {lr} + ldr r0, _080F9380 + bl sub_08000540 + ldr r1, _080F9384 + ldr r0, _080F9388 + str r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_080F9380: .4byte sub_0812FE24 +_080F9384: .4byte gUnknown_3002360 +_080F9388: .4byte sub_080F935C + thumb_func_end sub_080F936C + + thumb_func_start sub_080F938C +sub_080F938C: @ 0x080F938C + push {r4, r5, lr} + ldr r0, _080F93C0 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F940C + movs r3, #0 + ldr r0, _080F93C4 + adds r4, r0, #0 + ldr r5, _080F93C8 + ldrb r0, [r4] + cmp r3, r0 + bge _080F93E0 + adds r2, r5, #0 + ldr r1, _080F93CC +_080F93AC: + ldrb r0, [r1] + subs r0, #1 + cmp r0, #1 + bhi _080F93D4 + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _080F93D0 + movs r0, #0xeb + b _080F93D2 + .align 2, 0 +_080F93C0: .4byte gUnknown_2039BCA +_080F93C4: .4byte gUnknown_2039BD0 +_080F93C8: .4byte gUnknown_2039AA0 +_080F93CC: .4byte gUnknown_20226A0 +_080F93D0: + movs r0, #0xec +_080F93D2: + strb r0, [r2, #0x15] +_080F93D4: + adds r2, #0x40 + adds r1, #0x1c + adds r3, #1 + ldrb r0, [r4] + cmp r3, r0 + blt _080F93AC +_080F93E0: + ldr r0, _080F9414 + ldrb r1, [r5, #0x15] + bl sub_0809CF88 + ldr r0, _080F9418 + adds r1, r5, #0 + adds r1, #0x55 + ldrb r1, [r1] + bl sub_0809CF88 + ldr r0, _080F941C + adds r1, r5, #0 + adds r1, #0x95 + ldrb r1, [r1] + bl sub_0809CF88 + ldr r0, _080F9420 + adds r1, r5, #0 + adds r1, #0xd5 + ldrb r1, [r1] + bl sub_0809CF88 +_080F940C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F9414: .4byte 0x00004010 +_080F9418: .4byte 0x00004011 +_080F941C: .4byte 0x00004012 +_080F9420: .4byte 0x00004013 + thumb_func_end sub_080F938C + + thumb_func_start sub_080F9424 +sub_080F9424: @ 0x080F9424 + push {r4, r5, r6, r7, lr} + ldr r1, _080F9498 + movs r0, #0xc + strb r0, [r1] + ldr r0, _080F949C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F94FE + movs r5, #0 + ldr r0, _080F94A0 + ldrb r0, [r0] + cmp r5, r0 + bge _080F94FE + movs r7, #0 + movs r6, #0x60 + movs r4, #0xb0 + lsls r4, r4, #0x11 +_080F944A: + ldr r0, _080F94A4 + adds r0, r5, r0 + ldrb r0, [r0] + ldr r1, _080F94A8 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080F94AC + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080F94B0 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r6 + strb r0, [r1, #5] + ldr r0, _080F94B4 + adds r1, r7, r0 + ldrb r0, [r1] + subs r0, #1 + cmp r0, #1 + bhi _080F94C8 + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _080F94BC + lsrs r1, r4, #0x10 + ldr r0, _080F94B8 + b _080F94D2 + .align 2, 0 +_080F9498: .4byte gUnknown_30030BC +_080F949C: .4byte gUnknown_2039BCA +_080F94A0: .4byte gUnknown_2039BD0 +_080F94A4: .4byte gUnknown_85694CC +_080F94A8: .4byte gUnknown_3005AEC +_080F94AC: .4byte gUnknown_2036FF0 +_080F94B0: .4byte gUnknown_20205AC +_080F94B4: .4byte gUnknown_20226A0 +_080F94B8: .4byte gUnknown_8471E6C +_080F94BC: + lsrs r1, r4, #0x10 + ldr r0, _080F94C4 + b _080F94D2 + .align 2, 0 +_080F94C4: .4byte gUnknown_847D90C +_080F94C8: + ldrb r0, [r1, #0x13] + cmp r0, #0 + bne _080F94E0 + lsrs r1, r4, #0x10 + ldr r0, _080F94DC +_080F94D2: + movs r2, #0x20 + bl sub_080A1200 + b _080F94EA + .align 2, 0 +_080F94DC: .4byte gUnknown_8470C4C +_080F94E0: + lsrs r1, r4, #0x10 + ldr r0, _080F9504 + movs r2, #0x20 + bl sub_080A1200 +_080F94EA: + movs r0, #0x80 + lsls r0, r0, #0xd + adds r4, r4, r0 + adds r7, #0x1c + adds r6, #0x10 + adds r5, #1 + ldr r0, _080F9508 + ldrb r0, [r0] + cmp r5, r0 + blt _080F944A +_080F94FE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9504: .4byte gUnknown_847C6CC +_080F9508: .4byte gUnknown_2039BD0 + thumb_func_end sub_080F9424 + + thumb_func_start sub_080F950C +sub_080F950C: @ 0x080F950C + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _080F958C + ldrb r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _080F9590 + adds r0, r0, r4 + movs r1, #0x46 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + strb r0, [r1] + cmp r0, #0 + bne _080F95A8 + ldr r0, _080F9594 + ldr r1, _080F9598 + ldrb r2, [r1] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _080F95A8 + ldr r0, _080F959C + ldrh r0, [r0] + cmp r0, #3 + bne _080F95A8 + ldr r1, _080F95A0 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _080F95A4 + cmp r1, r0 + ble _080F95A8 + movs r1, #1 + mov r0, sp + strb r1, [r0] + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x46 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _080F9586 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x46 + bl sub_080EEFFC +_080F9586: + movs r0, #1 + b _080F95AA + .align 2, 0 +_080F958C: .4byte gUnknown_2039BC4 +_080F9590: .4byte gUnknown_2024190 +_080F9594: .4byte gUnknown_2039BC0 +_080F9598: .4byte gUnknown_2039BC5 +_080F959C: .4byte gUnknown_2039BCE +_080F95A0: .4byte gUnknown_2039BA8 +_080F95A4: .4byte 0x0000031F +_080F95A8: + movs r0, #0 +_080F95AA: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F950C + + thumb_func_start sub_080F95B4 +sub_080F95B4: @ 0x080F95B4 + movs r0, #0 + bx lr + thumb_func_end sub_080F95B4 + + thumb_func_start sub_080F95B8 +sub_080F95B8: @ 0x080F95B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r7, _080F9638 + adds r0, r7, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080F95D4 + b _080F972C +_080F95D4: + bl sub_0805EBD8 + movs r0, #0xa + mov sb, r0 + movs r1, #3 + mov sl, r1 + ldr r2, _080F963C + ldr r4, _080F9640 + ldrh r1, [r4] + lsls r1, r1, #6 + adds r0, r1, r2 + ldrh r6, [r0] + adds r0, r2, #0 + adds r0, #0x38 + adds r0, r1, r0 + ldr r5, [r0] + adds r2, #0x3c + adds r1, r1, r2 + ldr r1, [r1] + mov r8, r1 + adds r0, r7, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _080F9644 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + strh r6, [r0, #0xa] + ldr r1, _080F9648 + ldrh r0, [r4] + ldrb r1, [r1] + cmp r0, r1 + bne _080F9654 + lsls r0, r6, #3 + ldr r1, _080F964C + adds r0, r0, r1 + ldr r1, _080F9650 + ldr r1, [r1] + ldr r1, [r1, #8] + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08034954 + b _080F9668 + .align 2, 0 +_080F9638: .4byte sub_080F9778 +_080F963C: .4byte gUnknown_2039AA0 +_080F9640: .4byte gUnknown_2037284 +_080F9644: .4byte gUnknown_3005B60 +_080F9648: .4byte gUnknown_2039BC5 +_080F964C: .4byte gUnknown_82DDA1C +_080F9650: .4byte gUnknown_2024178 +_080F9654: + lsls r0, r6, #3 + ldr r1, _080F96D4 + adds r0, r0, r1 + ldr r1, _080F96D8 + ldr r1, [r1] + ldr r1, [r1, #8] + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_080349A8 +_080F9668: + adds r0, r6, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0806E258 + adds r4, r0, #0 + bl sub_080343E4 + adds r0, r6, #0 + movs r1, #1 + bl sub_08069BA8 + ldr r0, _080F96DC + ldrh r1, [r4, #4] + strh r1, [r0, #2] + mov r1, sb + adds r1, #1 + lsls r1, r1, #0x13 + movs r2, #0x80 + lsls r2, r2, #0xe + adds r1, r1, r2 + asrs r1, r1, #0x10 + mov r3, sl + lsls r2, r3, #0x13 + movs r3, #0xa0 + lsls r3, r3, #0xe + adds r2, r2, r3 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080F96E0 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F96E8 + movs r0, #4 + ands r0, r1 + lsls r4, r5, #4 + cmp r0, #0 + bne _080F96FC + adds r0, r4, r5 + lsls r0, r0, #2 + ldr r1, _080F96E4 + adds r0, r0, r1 + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_0806E7CC + b _080F96FC + .align 2, 0 +_080F96D4: .4byte gUnknown_82DDA1C +_080F96D8: .4byte gUnknown_2024178 +_080F96DC: .4byte gUnknown_2024640 +_080F96E0: .4byte gUnknown_2039BCA +_080F96E4: .4byte gUnknown_20205AC +_080F96E8: + lsls r4, r5, #4 + adds r0, r4, r5 + lsls r0, r0, #2 + ldr r1, _080F973C + adds r0, r0, r1 + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_0806E7CC +_080F96FC: + ldr r1, _080F9740 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0xc] + mov r1, sb + strh r1, [r0, #0xe] + mov r2, sl + strh r2, [r0, #0x10] + ldr r3, _080F973C + adds r1, r4, r5 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _080F9744 + str r2, [r0] + adds r1, r1, r3 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] +_080F972C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F973C: .4byte gUnknown_20205AC +_080F9740: .4byte gUnknown_3005B60 +_080F9744: .4byte sub_08007140 + thumb_func_end sub_080F95B8 + + thumb_func_start sub_080F9748 +sub_080F9748: @ 0x080F9748 + push {lr} + ldr r0, _080F9770 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _080F976C + ldr r0, _080F9774 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + bl sub_0805ECB0 +_080F976C: + pop {r0} + bx r0 + .align 2, 0 +_080F9770: .4byte sub_080F9778 +_080F9774: .4byte gUnknown_3005B60 + thumb_func_end sub_080F9748 + + thumb_func_start sub_080F9778 +sub_080F9778: @ 0x080F9778 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _080F979C + adds r5, r0, r1 + movs r2, #8 + ldrsh r0, [r5, r2] + adds r2, r1, #0 + cmp r0, #4 + bhi _080F9828 + lsls r0, r0, #2 + ldr r1, _080F97A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080F979C: .4byte gUnknown_3005B60 +_080F97A0: .4byte _080F97A4 +_080F97A4: @ jump table + .4byte _080F9808 @ case 0 + .4byte _080F97B8 @ case 1 + .4byte _080F9828 @ case 2 + .4byte _080F97D2 @ case 3 + .4byte _080F9814 @ case 4 +_080F97B8: + movs r0, #0xa + movs r1, #3 + movs r2, #8 + movs r3, #8 + bl sub_080E1F10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + movs r1, #1 + bl sub_08197638 + b _080F9808 +_080F97D2: + movs r0, #0xc + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080F9810 + adds r4, r0, r1 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + bl sub_08008554 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008564 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _080F9802 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 +_080F9802: + adds r0, r4, #0 + bl sub_08006E00 +_080F9808: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _080F9828 + .align 2, 0 +_080F9810: .4byte gUnknown_20205AC +_080F9814: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #0x12] + bl sub_080E1F6C + adds r0, r4, #0 + bl sub_080A8964 +_080F9828: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F9778 + + thumb_func_start sub_080F9830 +sub_080F9830: @ 0x080F9830 + push {r4, lr} + ldr r0, _080F985C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F9868 + ldr r0, _080F9860 + ldrb r0, [r0] + cmp r0, #4 + bne _080F9868 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080F9868 + ldr r4, _080F9864 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + b _080F986E + .align 2, 0 +_080F985C: .4byte gUnknown_2039BCA +_080F9860: .4byte gUnknown_2039BD0 +_080F9864: .4byte gUnknown_2037290 +_080F9868: + ldr r1, _080F9874 + movs r0, #4 + strh r0, [r1] +_080F986E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F9874: .4byte gUnknown_2037290 + thumb_func_end sub_080F9830 + + thumb_func_start sub_080F9878 +sub_080F9878: @ 0x080F9878 + push {r4, lr} + ldr r0, _080F989C + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080F98B0 + ldr r2, _080F98A0 + ldr r1, [r2] + ldr r0, _080F98A4 + muls r0, r1, r0 + ldr r1, _080F98A8 + adds r0, r0, r1 + str r0, [r2] + lsrs r0, r0, #0x10 + ldr r4, _080F98AC + b _080F98BA + .align 2, 0 +_080F989C: .4byte gUnknown_2039BCA +_080F98A0: .4byte gUnknown_3005E18 +_080F98A4: .4byte 0x41C64E6D +_080F98A8: .4byte 0x00006073 +_080F98AC: .4byte gUnknown_2037290 +_080F98B0: + ldr r4, _080F98C8 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080F98BA: + ldrh r1, [r4] + bl __umodsi3 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F98C8: .4byte gUnknown_2037290 + thumb_func_end sub_080F9878 + + thumb_func_start sub_080F98CC +sub_080F98CC: @ 0x080F98CC + ldr r2, _080F98E0 + ldr r1, [r2] + ldr r0, _080F98E4 + muls r0, r1, r0 + ldr r1, _080F98E8 + adds r0, r0, r1 + str r0, [r2] + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_080F98E0: .4byte gUnknown_3005E18 +_080F98E4: .4byte 0x41C64E6D +_080F98E8: .4byte 0x00006073 + thumb_func_end sub_080F98CC + + thumb_func_start sub_080F98EC +sub_080F98EC: @ 0x080F98EC + push {lr} + ldr r0, _080F9900 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080F9904 + movs r0, #0 + b _080F990E + .align 2, 0 +_080F9900: .4byte gUnknown_2039BCA +_080F9904: + ldr r0, _080F9914 + movs r1, #5 + bl sub_080A8878 + movs r0, #1 +_080F990E: + pop {r1} + bx r1 + .align 2, 0 +_080F9914: .4byte sub_080F9918 + thumb_func_end sub_080F98EC + + thumb_func_start sub_080F9918 +sub_080F9918: @ 0x080F9918 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080F994C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080F9950 + cmp r0, #1 + beq _080F995E + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080F9964 + bl sub_080988C4 + adds r0, r5, #0 + bl sub_080A8964 + b _080F9964 + .align 2, 0 +_080F994C: .4byte gUnknown_3005B60 +_080F9950: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F9964 + bl sub_0800A8D4 +_080F995E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080F9964: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080F9918 + + thumb_func_start sub_080F996C +sub_080F996C: @ 0x080F996C + push {lr} + ldr r0, _080F9994 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F998E + ldr r0, _080F9998 + ldrb r0, [r0] + cmp r0, #0 + beq _080F998E + bl sub_0800DBB4 + movs r0, #8 + movs r1, #8 + bl sub_0800DA80 +_080F998E: + pop {r0} + bx r0 + .align 2, 0 +_080F9994: .4byte gUnknown_2039BCA +_080F9998: .4byte gUnknown_30031C4 + thumb_func_end sub_080F996C + + thumb_func_start sub_080F999C +sub_080F999C: @ 0x080F999C + push {lr} + ldr r0, _080F99BC + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080F99B6 + ldr r0, _080F99C0 + ldrb r0, [r0] + cmp r0, #0 + beq _080F99B6 + bl sub_0800DB50 +_080F99B6: + pop {r0} + bx r0 + .align 2, 0 +_080F99BC: .4byte gUnknown_2039BCA +_080F99C0: .4byte gUnknown_30031C4 + thumb_func_end sub_080F999C + + thumb_func_start sub_080F99C4 +sub_080F99C4: @ 0x080F99C4 + push {lr} + ldr r0, _080F99D8 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080F99DC + movs r0, #0 + b _080F99DE + .align 2, 0 +_080F99D8: .4byte gUnknown_2039BCA +_080F99DC: + movs r0, #1 +_080F99DE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F99C4 + + thumb_func_start sub_080F99E4 +sub_080F99E4: @ 0x080F99E4 + ldr r1, _080F99EC + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_080F99EC: .4byte gUnknown_2039BCA + thumb_func_end sub_080F99E4 + + thumb_func_start sub_080F99F0 +sub_080F99F0: @ 0x080F99F0 + push {lr} + ldr r0, _080F9A04 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080F9A08 + movs r0, #0 + b _080F9A0A + .align 2, 0 +_080F9A04: .4byte gUnknown_2039BCA +_080F9A08: + movs r0, #1 +_080F9A0A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F99F0 + + thumb_func_start sub_080F9A10 +sub_080F9A10: @ 0x080F9A10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + mov r8, r0 + ldr r0, _080F9ACC + ldrb r0, [r0] + cmp r8, r0 + bhs _080F9ABC + ldr r1, _080F9AD0 + mov sl, r1 + mov r6, sp +_080F9A2E: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + add r4, sl + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + lsls r1, r0, #0x10 + strb r0, [r6] + lsrs r1, r1, #0x18 + strb r1, [r6, #1] + adds r0, r4, #0 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r5, #0 + movs r1, #1 + add r1, r8 + mov sb, r1 +_080F9A64: + adds r1, r5, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r7, #0 + adds r2, r5, #0 + bl sub_0806B424 + strb r0, [r6] + adds r1, r5, #0 + adds r1, #0x11 + adds r0, r4, #0 + mov r2, sp + bl sub_0806A774 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _080F9A64 + movs r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + movs r1, #0x64 + mov r0, r8 + muls r0, r1, r0 + add r0, sl + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + mov r1, sb + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _080F9ACC + ldrb r0, [r0] + cmp r8, r0 + blo _080F9A2E +_080F9ABC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9ACC: .4byte gUnknown_202418D +_080F9AD0: .4byte gUnknown_2024190 + thumb_func_end sub_080F9A10 + + thumb_func_start sub_080F9AD4 +sub_080F9AD4: @ 0x080F9AD4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x78 + adds r5, r0, #0 + adds r3, r1, #0 + adds r4, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + mov r8, r0 + add r6, sp, #0x14 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r3, #0 + movs r3, #0x20 + bl sub_08067730 + add r0, sp, #0x10 + mov r1, r8 + strb r1, [r0] + lsrs r4, r4, #0x18 + strb r4, [r0, #1] + adds r0, r6, #0 + movs r1, #0xc + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r6, #0 + bl sub_0806AEDC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r5, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #1 + bgt _080F9B48 + cmp r4, #0 + blt _080F9B48 + adds r0, r5, #0 + movs r1, #2 + bl sub_080BFBBC + adds r0, r5, #0 + movs r1, #3 + bl sub_080BFBBC +_080F9B48: + adds r0, r4, #0 + add sp, #0x78 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F9AD4 + + thumb_func_start sub_080F9B58 +sub_080F9B58: @ 0x080F9B58 + push {lr} + sub sp, #0x68 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r0, sp + movs r2, #1 + bl sub_080703AC + add r2, sp, #0x64 + movs r0, #1 + strb r0, [r2] + mov r0, sp + movs r1, #0x2d + bl sub_0806A774 + mov r0, sp + bl sub_0806AEDC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x68 + pop {r1} + bx r1 + thumb_func_end sub_080F9B58 + + thumb_func_start sub_080F9B88 +sub_080F9B88: @ 0x080F9B88 + push {lr} + bl sub_0806B08C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + beq _080F9BA4 + cmp r1, #1 + bgt _080F9BA0 + cmp r1, #0 + beq _080F9BA4 + b _080F9BA8 +_080F9BA0: + cmp r1, #2 + bne _080F9BA8 +_080F9BA4: + ldr r0, _080F9BAC + strh r1, [r0] +_080F9BA8: + pop {r0} + bx r0 + .align 2, 0 +_080F9BAC: .4byte gUnknown_2037290 + thumb_func_end sub_080F9B88 + + thumb_func_start sub_080F9BB0 +sub_080F9BB0: @ 0x080F9BB0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r5, #0 + movs r7, #0xce + lsls r7, r7, #1 +_080F9BBC: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080F9BEC + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _080F9BF0 + cmp r0, r7 + beq _080F9BF0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + cmp r0, r6 + bne _080F9BF0 + movs r0, #1 + b _080F9BF8 + .align 2, 0 +_080F9BEC: .4byte gUnknown_2024190 +_080F9BF0: + adds r5, #1 + cmp r5, #5 + ble _080F9BBC + movs r0, #0 +_080F9BF8: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F9BB0 + + thumb_func_start sub_080F9C00 +sub_080F9C00: @ 0x080F9C00 + push {r4, lr} + movs r0, #0xaf + bl sub_080F9BB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r4, #1 + bne _080F9C22 + movs r0, #0xaf + bl sub_080E0F34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080F9C2C + bl sub_080E0F84 +_080F9C22: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080F9C2C: .4byte gUnknown_2021C40 + thumb_func_end sub_080F9C00 + + thumb_func_start sub_080F9C30 +sub_080F9C30: @ 0x080F9C30 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r7, r2, #0x10 + lsrs r6, r7, #0x10 + bl sub_08067710 + ldr r0, _080F9C8C + mov r8, r0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0x20 + bl sub_08067730 + cmp r6, #0 + beq _080F9C7E + add r0, sp, #0x10 + strb r6, [r0] + adds r1, r0, #0 + lsrs r0, r7, #0x18 + strb r0, [r1, #1] + mov r0, r8 + movs r1, #0xc + add r2, sp, #0x10 + bl sub_0806A774 +_080F9C7E: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9C8C: .4byte gUnknown_20243E8 + thumb_func_end sub_080F9C30 + + thumb_func_start sub_080F9C90 +sub_080F9C90: @ 0x080F9C90 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r3, #6 + bls _080F9CAC + ldr r0, _080F9CC0 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_080F9CAC: + movs r0, #0x64 + muls r0, r3, r0 + ldr r1, _080F9CC4 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_08068D34 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080F9CC0: .4byte gUnknown_202418D +_080F9CC4: .4byte gUnknown_2024190 + thumb_func_end sub_080F9C90 + + thumb_func_start sub_080F9CC8 +sub_080F9CC8: @ 0x080F9CC8 + push {lr} + ldr r0, _080F9CE4 + ldr r1, _080F9CE8 + str r1, [r0, #8] + ldr r0, _080F9CEC + movs r1, #9 + bl sub_0809CF88 + movs r0, #0 + bl sub_081B81B8 + pop {r0} + bx r0 + .align 2, 0 +_080F9CE4: .4byte gUnknown_3002360 +_080F9CE8: .4byte sub_080F9CF0 +_080F9CEC: .4byte 0x000040CF + thumb_func_end sub_080F9CC8 + + thumb_func_start sub_080F9CF0 +sub_080F9CF0: @ 0x080F9CF0 + push {lr} + ldr r0, _080F9D00 + ldrb r1, [r0] + cmp r1, #0 + bne _080F9D08 + ldr r0, _080F9D04 + strh r1, [r0] + b _080F9D0E + .align 2, 0 +_080F9D00: .4byte gUnknown_203CBC4 +_080F9D04: .4byte gUnknown_2037290 +_080F9D08: + ldr r1, _080F9D18 + movs r0, #1 + strh r0, [r1] +_080F9D0E: + ldr r0, _080F9D1C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080F9D18: .4byte gUnknown_2037290 +_080F9D1C: .4byte sub_08085B34 + thumb_func_end sub_080F9CF0 + + thumb_func_start sub_080F9D20 +sub_080F9D20: @ 0x080F9D20 + push {lr} + ldr r1, _080F9D3C + ldr r0, _080F9D40 + str r0, [r1, #8] + ldr r0, _080F9D44 + ldrb r0, [r0] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081B81B8 + pop {r0} + bx r0 + .align 2, 0 +_080F9D3C: .4byte gUnknown_3002360 +_080F9D40: .4byte sub_080F9D48 +_080F9D44: .4byte gUnknown_2037280 + thumb_func_end sub_080F9D20 + + thumb_func_start sub_080F9D48 +sub_080F9D48: @ 0x080F9D48 + push {lr} + ldr r0, _080F9D58 + ldrb r1, [r0] + cmp r1, #0 + bne _080F9D60 + ldr r0, _080F9D5C + strh r1, [r0] + b _080F9D66 + .align 2, 0 +_080F9D58: .4byte gUnknown_203CBC4 +_080F9D5C: .4byte gUnknown_2037290 +_080F9D60: + ldr r1, _080F9D70 + movs r0, #1 + strh r0, [r1] +_080F9D66: + ldr r0, _080F9D74 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_080F9D70: .4byte gUnknown_2037290 +_080F9D74: .4byte sub_08085B34 + thumb_func_end sub_080F9D48 + + thumb_func_start sub_080F9D78 +sub_080F9D78: @ 0x080F9D78 + push {r4, r5, r6, r7, lr} + sub sp, #0x198 + add r0, sp, #0x190 + movs r1, #0 + str r1, [r0] + ldr r2, _080F9DE8 + mov r1, sp + bl CpuSet + movs r5, #0 + movs r7, #0x64 + ldr r6, _080F9DEC + mov r4, sp +_080F9D92: + ldr r0, _080F9DF0 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _080F9DAC + subs r0, #1 + adds r1, r0, #0 + muls r1, r7, r1 + adds r1, r1, r6 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy +_080F9DAC: + adds r4, #0x64 + adds r5, #1 + cmp r5, #3 + ble _080F9D92 + add r0, sp, #0x194 + movs r1, #0 + str r1, [r0] + ldr r4, _080F9DEC + ldr r2, _080F9DF4 + adds r1, r4, #0 + bl CpuSet + mov r5, sp + add r6, sp, #0x12c +_080F9DC8: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x64 + bl memcpy + adds r5, #0x64 + adds r4, #0x64 + cmp r5, r6 + ble _080F9DC8 + bl sub_0806B004 + add sp, #0x198 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080F9DE8: .4byte 0x05000064 +_080F9DEC: .4byte gUnknown_2024190 +_080F9DF0: .4byte gUnknown_203CBC4 +_080F9DF4: .4byte 0x05000096 + thumb_func_end sub_080F9D78 + + thumb_func_start sub_080F9DF8 +sub_080F9DF8: @ 0x080F9DF8 + push {lr} + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _080F9E10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _080F9E14 +_080F9E10: + movs r0, #0 + b _080F9E16 +_080F9E14: + movs r0, #1 +_080F9E16: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F9DF8 + + thumb_func_start sub_080F9E1C +sub_080F9E1C: @ 0x080F9E1C + push {r4, r5, lr} + ldr r4, _080F9E3C + movs r5, #0 +_080F9E22: + adds r0, r4, #0 + bl sub_080F9DF8 + cmp r0, #0 + beq _080F9E40 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _080F9E40 + movs r0, #0 + b _080F9E4A + .align 2, 0 +_080F9E3C: .4byte gUnknown_2024190 +_080F9E40: + adds r5, #1 + adds r4, #0x64 + cmp r5, #5 + ble _080F9E22 + movs r0, #1 +_080F9E4A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080F9E1C + + thumb_func_start sub_080F9E50 +sub_080F9E50: @ 0x080F9E50 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _080F9E94 + adds r4, r4, r0 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #7 + bl sub_0806D3CC + adds r0, r4, #0 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + ldr r5, _080F9E98 + adds r0, r4, #0 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A058 + adds r0, r5, #0 + bl sub_0800885C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080F9E94: .4byte gUnknown_2024190 +_080F9E98: .4byte gUnknown_2021C40 + thumb_func_end sub_080F9E50 + + thumb_func_start sub_080F9E9C +sub_080F9E9C: @ 0x080F9E9C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _080F9ED8 + adds r4, r1, r0 + adds r0, r4, #0 + bl sub_080F9DF8 + cmp r0, #0 + beq _080F9EDC + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _080F9EDC + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080F9EDC + movs r0, #1 + b _080F9EDE + .align 2, 0 +_080F9ED8: .4byte gUnknown_2024190 +_080F9EDC: + movs r0, #0 +_080F9EDE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080F9E9C + + thumb_func_start sub_080F9EE4 +sub_080F9EE4: @ 0x080F9EE4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _080F9F08 + adds r4, r0, r1 + movs r0, #0 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _080F9F3E + cmp r5, #1 + bgt _080F9F0C + cmp r5, #0 + beq _080F9F12 + b _080F9FB2 + .align 2, 0 +_080F9F08: .4byte gUnknown_3005B68 +_080F9F0C: + cmp r5, #2 + beq _080F9F50 + b _080F9FB2 +_080F9F12: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #5 + bgt _080F9F38 +_080F9F1C: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080F9E9C + cmp r0, #0 + bne _080F9F8C + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + adds r1, r0, #0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080F9F1C +_080F9F38: + movs r0, #2 + strh r0, [r4] + b _080F9FB2 +_080F9F3E: + bl sub_08097CC4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F9FB2 + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + b _080F9FB2 +_080F9F50: + bl sub_080F9E1C + adds r1, r0, #0 + cmp r1, #0 + beq _080F9FA4 + bl sub_081A9BB8 + adds r4, r0, #0 + bl sub_081A7E28 + orrs r4, r0 + lsls r4, r4, #0x18 + cmp r4, #0 + bne _080F9F76 + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080F9F80 +_080F9F76: + ldr r0, _080F9F7C + strh r5, [r0] + b _080F9FA8 + .align 2, 0 +_080F9F7C: .4byte gUnknown_2037290 +_080F9F80: + ldr r1, _080F9F88 + movs r0, #1 + strh r0, [r1] + b _080F9FA8 + .align 2, 0 +_080F9F88: .4byte gUnknown_2037290 +_080F9F8C: + ldrb r0, [r4, #2] + bl sub_080F9E50 + ldr r0, _080F9FA0 + bl sub_08097B74 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _080F9FB2 + .align 2, 0 +_080F9FA0: .4byte gUnknown_85CC30F +_080F9FA4: + ldr r0, _080F9FB8 + strh r1, [r0] +_080F9FA8: + bl sub_080988C4 + adds r0, r6, #0 + bl sub_080A8964 +_080F9FB2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080F9FB8: .4byte gUnknown_2037290 + thumb_func_end sub_080F9EE4 + + thumb_func_start sub_080F9FBC +sub_080F9FBC: @ 0x080F9FBC + push {lr} + ldr r0, _080F9FD0 + movs r1, #0x50 + bl sub_080A8878 + bl sub_080988B8 + pop {r0} + bx r0 + .align 2, 0 +_080F9FD0: .4byte sub_080F9EE4 + thumb_func_end sub_080F9FBC + + thumb_func_start sub_080F9FD4 +sub_080F9FD4: @ 0x080F9FD4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r4, _080FA040 + movs r7, #0 + movs r6, #0 + movs r5, #5 +_080F9FE0: + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _080FA024 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FA024 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + str r0, [sp] + cmp r0, #0 + beq _080FA016 + subs r0, #1 + str r0, [sp] + cmp r0, #0 + bne _080FA018 +_080FA016: + adds r6, #1 +_080FA018: + adds r0, r4, #0 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + adds r7, #1 +_080FA024: + adds r4, #0x64 + subs r5, #1 + cmp r5, #0 + bge _080F9FE0 + cmp r6, #0 + bne _080FA034 + cmp r7, #0 + beq _080FA038 +_080FA034: + bl sub_080FB718 +_080FA038: + cmp r6, #0 + beq _080FA044 + movs r0, #2 + b _080FA04E + .align 2, 0 +_080FA040: .4byte gUnknown_2024190 +_080FA044: + cmp r7, #0 + bne _080FA04C + movs r0, #0 + b _080FA04E +_080FA04C: + movs r0, #1 +_080FA04E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080F9FD4 + + thumb_func_start sub_080FA058 +sub_080FA058: @ 0x080FA058 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + movs r1, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + str r0, [sp, #4] + lsrs r0, r0, #0x10 + str r0, [sp] + adds r0, r5, #0 + movs r1, #0x27 + bl sub_0806A058 + adds r7, r0, #0 + movs r6, #0xf + ands r7, r6 + adds r0, r5, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r8, r0 + mov r1, r8 + ands r1, r6 + mov r8, r1 + adds r0, r5, #0 + movs r1, #0x29 + bl sub_0806A058 + mov sb, r0 + mov r3, sb + ands r3, r6 + mov sb, r3 + adds r0, r5, #0 + movs r1, #0x2a + bl sub_0806A058 + mov sl, r0 + ands r0, r6 + mov sl, r0 + adds r0, r5, #0 + movs r1, #0x2b + bl sub_0806A058 + adds r4, r0, #0 + ands r4, r6 + adds r0, r5, #0 + movs r1, #0x2c + bl sub_0806A058 + adds r2, r0, #0 + ands r2, r6 + mov r1, r8 + mov r3, sb + eors r1, r3 + mov r8, r1 + mov r0, r8 + muls r0, r7, r0 + movs r1, #0xff + ldr r3, [sp] + ands r3, r1 + eors r0, r3 + eors r4, r2 + mov r1, sl + muls r1, r4, r1 + ldr r3, [sp, #4] + lsrs r2, r3, #0x18 + eors r1, r2 + lsls r0, r0, #8 + adds r0, r0, r1 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080FA058 + + thumb_func_start sub_080FA0FC +sub_080FA0FC: @ 0x080FA0FC + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #1 + ldr r3, _080FA118 +_080FA106: + lsls r0, r1, #3 + adds r0, r0, r3 + ldrh r0, [r0, #4] + cmp r2, r0 + bhs _080FA11C + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _080FA128 + .align 2, 0 +_080FA118: .4byte gUnknown_85694D0 +_080FA11C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xe + bls _080FA106 + adds r0, r1, #0 +_080FA128: + pop {r1} + bx r1 + thumb_func_end sub_080FA0FC + + thumb_func_start sub_080FA12C +sub_080FA12C: @ 0x080FA12C + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFB80 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r6, #0 + bl sub_080FA0FC + lsls r0, r0, #0x18 + ldr r1, _080FA19C + lsrs r0, r0, #0x15 + adds r0, r0, r1 + ldrh r1, [r0] + str r1, [sp] + movs r2, #0 + str r2, [sp, #4] + ldrb r2, [r0, #2] + movs r3, #0 + ldrh r4, [r0, #4] + movs r5, #0 + adds r0, r6, #0 + movs r1, #0 + subs r0, r0, r4 + sbcs r1, r5 + bl __udivdi3 + ldr r2, [sp] + ldr r3, [sp, #4] + adds r2, r2, r0 + adcs r3, r1 + str r2, [sp] + str r3, [sp, #4] + adds r0, r7, #0 + movs r1, #0 + bl __muldi3 + movs r2, #0xa + movs r3, #0 + bl __udivdi3 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080FA19C: .4byte gUnknown_85694D0 + thumb_func_end sub_080FA12C + + thumb_func_start sub_080FA1A0 +sub_080FA1A0: @ 0x080FA1A0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _080FA1EC + mov r0, sp + movs r2, #2 + bl memcpy + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #8 + bl sub_080089D8 + mov r1, sp + bl sub_080088D8 + 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, #1 + bl sub_080089D8 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA1EC: .4byte gUnknown_8569550 + thumb_func_end sub_080FA1A0 + + thumb_func_start sub_080FA1F0 +sub_080FA1F0: @ 0x080FA1F0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r1, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r1, _080FA208 + ldrh r0, [r1] + cmp r0, #0xff + bne _080FA20C + movs r0, #0 + b _080FA276 + .align 2, 0 +_080FA208: .4byte gUnknown_2037290 +_080FA20C: + ldrh r1, [r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _080FA234 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #1 + beq _080FA22E + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, r6 + beq _080FA238 +_080FA22E: + movs r0, #1 + b _080FA276 + .align 2, 0 +_080FA234: .4byte gUnknown_2024190 +_080FA238: + mov r4, sp + adds r0, r5, #0 + bl sub_080FA058 + strh r0, [r4] + mov r0, sp + ldrh r1, [r0] + adds r0, r6, #0 + bl sub_080FA12C + adds r5, r0, #0 + ldrh r1, [r7] + adds r0, r6, #0 + bl sub_080FA12C + adds r4, r0, #0 + ldr r0, _080FA270 + adds r1, r5, #0 + bl sub_080FA1A0 + cmp r5, r4 + bls _080FA274 + mov r0, sp + ldrh r0, [r0] + strh r0, [r7] + movs r0, #3 + b _080FA276 + .align 2, 0 +_080FA270: .4byte gUnknown_2021C54 +_080FA274: + movs r0, #2 +_080FA276: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FA1F0 + + thumb_func_start sub_080FA280 +sub_080FA280: @ 0x080FA280 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r1, [r5] + adds r0, r4, #0 + bl sub_080FA12C + adds r1, r0, #0 + ldr r0, _080FA2C0 + bl sub_080FA1A0 + ldr r0, _080FA2C4 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #1 + ldr r2, _080FA2C8 + adds r1, r1, r2 + bl sub_080088B8 + ldrh r1, [r5] + movs r0, #0x80 + lsls r0, r0, #8 + cmp r1, r0 + bne _080FA2D4 + ldr r0, _080FA2CC + ldr r1, _080FA2D0 + bl sub_080088B8 + b _080FA2DE + .align 2, 0 +_080FA2C0: .4byte gUnknown_2021C68 +_080FA2C4: .4byte gUnknown_2021C40 +_080FA2C8: .4byte gUnknown_82EA31C +_080FA2CC: .4byte gUnknown_2021C54 +_080FA2D0: .4byte gUnknown_85CC31B +_080FA2D4: + ldr r0, _080FA2E4 + ldr r1, _080FA2E8 + ldr r1, [r1] + bl sub_080088B8 +_080FA2DE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA2E4: .4byte gUnknown_2021C54 +_080FA2E8: .4byte gUnknown_3005AF0 + thumb_func_end sub_080FA280 + + thumb_func_start sub_080FA2EC +sub_080FA2EC: @ 0x080FA2EC + push {lr} + ldr r0, _080FA2FC + movs r1, #0x80 + lsls r1, r1, #8 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_080FA2FC: .4byte 0x00004047 + thumb_func_end sub_080FA2EC + + thumb_func_start sub_080FA300 +sub_080FA300: @ 0x080FA300 + push {lr} + ldr r0, _080FA318 + bl sub_0809CF20 + adds r1, r0, #0 + movs r0, #0x95 + lsls r0, r0, #1 + bl sub_080FA280 + pop {r0} + bx r0 + .align 2, 0 +_080FA318: .4byte 0x00004047 + thumb_func_end sub_080FA300 + + thumb_func_start sub_080FA31C +sub_080FA31C: @ 0x080FA31C + push {r4, lr} + ldr r0, _080FA33C + bl sub_0809CF20 + adds r1, r0, #0 + ldr r4, _080FA340 + movs r0, #0x95 + lsls r0, r0, #1 + bl sub_080FA1F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA33C: .4byte 0x00004047 +_080FA340: .4byte gUnknown_2037290 + thumb_func_end sub_080FA31C + + thumb_func_start sub_080FA344 +sub_080FA344: @ 0x080FA344 + push {lr} + ldr r0, _080FA354 + movs r1, #0x80 + lsls r1, r1, #8 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_080FA354: .4byte 0x0000404F + thumb_func_end sub_080FA344 + + thumb_func_start sub_080FA358 +sub_080FA358: @ 0x080FA358 + push {lr} + ldr r0, _080FA36C + bl sub_0809CF20 + adds r1, r0, #0 + ldr r0, _080FA370 + bl sub_080FA280 + pop {r0} + bx r0 + .align 2, 0 +_080FA36C: .4byte 0x0000404F +_080FA370: .4byte 0x00000127 + thumb_func_end sub_080FA358 + + thumb_func_start sub_080FA374 +sub_080FA374: @ 0x080FA374 + push {r4, lr} + ldr r0, _080FA394 + bl sub_0809CF20 + adds r1, r0, #0 + ldr r4, _080FA398 + ldr r0, _080FA39C + bl sub_080FA1F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FA394: .4byte 0x0000404F +_080FA398: .4byte gUnknown_2037290 +_080FA39C: .4byte 0x00000127 + thumb_func_end sub_080FA374 + + thumb_func_start sub_080FA3A0 +sub_080FA3A0: @ 0x080FA3A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r7, #0 + add r4, sp, #8 + movs r0, #1 + strb r0, [r4] + ldr r1, _080FA428 + mov r0, sp + movs r2, #7 + bl memcpy + mov r8, r4 + cmp r6, #0xa + bhi _080FA41C + cmp r5, #0x40 + bhi _080FA41C + ldr r0, _080FA42C + ldr r0, [r0] + ldr r1, _080FA430 + adds r0, r0, r1 + adds r0, r0, r6 + strb r5, [r0] + movs r5, #0 +_080FA3DA: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _080FA434 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _080FA40C + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _080FA40C + mov r1, sp + adds r0, r1, r6 + ldrb r1, [r0] + adds r0, r4, #0 + mov r2, r8 + bl sub_0806A774 + movs r7, #1 +_080FA40C: + adds r5, #1 + cmp r5, #5 + ble _080FA3DA + cmp r7, #0 + beq _080FA41C + ldr r0, _080FA438 + bl sub_0809D018 +_080FA41C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FA428: .4byte gUnknown_8569552 +_080FA42C: .4byte gUnknown_3005AEC +_080FA430: .4byte 0x000031A8 +_080FA434: .4byte gUnknown_2024190 +_080FA438: .4byte 0x0000089B + thumb_func_end sub_080FA3A0 + + thumb_func_start sub_080FA43C +sub_080FA43C: @ 0x080FA43C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _080FA460 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080FA4B4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA460: .4byte sub_080FA500 + thumb_func_end sub_080FA43C + + thumb_func_start sub_080FA464 +sub_080FA464: @ 0x080FA464 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _080FA488 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080FA4B4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FA488: .4byte sub_080FA66C + thumb_func_end sub_080FA464 + + thumb_func_start sub_080FA48C +sub_080FA48C: @ 0x080FA48C + push {lr} + ldr r0, _080FA49C + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080FA49C: .4byte sub_080FA500 + thumb_func_end sub_080FA48C + + thumb_func_start sub_080FA4A0 +sub_080FA4A0: @ 0x080FA4A0 + push {lr} + ldr r0, _080FA4B0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080FA4B0: .4byte sub_080FA66C + thumb_func_end sub_080FA4A0 + + thumb_func_start sub_080FA4B4 +sub_080FA4B4: @ 0x080FA4B4 + push {r4, r5, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r5, r4, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r1, r3, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + ldr r1, _080FA4FC + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r0, #0 + strh r0, [r1, #8] + movs r0, #0x10 + cmp r4, #0 + beq _080FA4E2 + adds r0, r4, #0 +_080FA4E2: + strh r0, [r1, #0xa] + movs r0, #0x14 + cmp r5, #0 + beq _080FA4EC + adds r0, r5, #0 +_080FA4EC: + 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 +_080FA4FC: .4byte gUnknown_3005B60 + thumb_func_end sub_080FA4B4 + + thumb_func_start sub_080FA500 +sub_080FA500: @ 0x080FA500 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FA524 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080FA580 + cmp r0, #1 + bgt _080FA528 + cmp r0, #0 + beq _080FA532 + b _080FA64E + .align 2, 0 +_080FA524: .4byte gUnknown_3005B60 +_080FA528: + cmp r0, #2 + beq _080FA5A2 + cmp r0, #3 + beq _080FA604 + b _080FA64E +_080FA532: + 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, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x10] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x14] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + b _080FA65E +_080FA580: + movs r0, #0x50 + bl sub_080011D0 + strh r0, [r4, #0x16] + movs r0, #0x54 + bl sub_080011D0 + strh r0, [r4, #0x18] + movs r0, #0x50 + movs r1, #0xbf + bl sub_08001144 + movs r0, #0x54 + movs r1, #0x10 + bl sub_08001144 + b _080FA65E +_080FA5A2: + ldrh r0, [r4, #0xe] + ldrh r1, [r4, #0xa] + subs r0, r0, r1 + movs r5, #0 + strh r0, [r4, #0xe] + ldrh r2, [r4, #0x10] + adds r1, r1, r2 + strh r1, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _080FA5C0 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xef + ble _080FA5E6 +_080FA5C0: + strh r5, [r4, #0xe] + movs r0, #0xf0 + strh r0, [r4, #0x10] + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4, #0x16] + movs r0, #0x50 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _080FA600 + strh r5, [r0] +_080FA5E6: + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x10] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + movs r1, #0xe + ldrsh r0, [r4, r1] + b _080FA648 + .align 2, 0 +_080FA600: .4byte gUnknown_20377B4 +_080FA604: + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0xc] + subs r0, r0, r1 + strh r0, [r4, #0x12] + ldrh r2, [r4, #0x14] + adds r1, r1, r2 + strh r1, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _080FA620 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _080FA632 +_080FA620: + movs r0, #0 + strh r0, [r4, #0x12] + movs r0, #0xa0 + strh r0, [r4, #0x14] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 +_080FA632: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x14] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] +_080FA648: + cmp r0, #0 + bne _080FA664 + b _080FA65E +_080FA64E: + ldrh r1, [r4, #0x16] + movs r0, #0x50 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 + b _080FA664 +_080FA65E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FA664: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FA500 + + thumb_func_start sub_080FA66C +sub_080FA66C: @ 0x080FA66C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FA690 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _080FA6A8 + cmp r1, #1 + bgt _080FA694 + cmp r1, #0 + beq _080FA69E + b _080FA79C + .align 2, 0 +_080FA690: .4byte gUnknown_3005B60 +_080FA694: + cmp r1, #2 + beq _080FA6F6 + cmp r1, #3 + beq _080FA748 + b _080FA79C +_080FA69E: + ldr r0, _080FA6A4 + strh r1, [r0] + b _080FA7BE + .align 2, 0 +_080FA6A4: .4byte gUnknown_20377B4 +_080FA6A8: + 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, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x10] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x14] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + b _080FA7BE +_080FA6F6: + 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, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x4f + bgt _080FA714 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x51 + bgt _080FA72C +_080FA714: + movs r0, #0x50 + strh r0, [r4, #0x12] + movs r0, #0x51 + strh r0, [r4, #0x14] + movs r0, #0x50 + movs r1, #0xbf + bl sub_08001144 + movs r0, #0x54 + movs r1, #0x10 + bl sub_08001144 +_080FA72C: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x14] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0x50 + bne _080FA7C4 + b _080FA7BE +_080FA748: + 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, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x77 + bgt _080FA766 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x78 + bgt _080FA77C +_080FA766: + movs r0, #0x78 + strh r0, [r4, #0xe] + strh r0, [r4, #0x10] + subs r0, #0x79 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r1, _080FA798 + movs r0, #0 + strh r0, [r1] +_080FA77C: + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x10] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0x78 + bne _080FA7C4 + b _080FA7BE + .align 2, 0 +_080FA798: .4byte gUnknown_20377B4 +_080FA79C: + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 + b _080FA7C4 +_080FA7BE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FA7C4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FA66C + + thumb_func_start sub_080FA7CC +sub_080FA7CC: @ 0x080FA7CC + push {lr} + ldr r0, _080FA7E0 + ldr r1, _080FA7E4 + ldr r1, [r1, #4] + bl sub_080EA2A8 + bl sub_080E97F8 + pop {r0} + bx r0 + .align 2, 0 +_080FA7E0: .4byte gUnknown_203A80C +_080FA7E4: .4byte gUnknown_2036FB8 + thumb_func_end sub_080FA7CC + + thumb_func_start sub_080FA7E8 +sub_080FA7E8: @ 0x080FA7E8 + push {lr} + ldr r0, _080FA808 + ldrb r1, [r0] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + beq _080FA830 + ldr r1, _080FA80C + ldr r0, [r1, #4] + cmp r0, #2 + beq _080FA81E + cmp r0, #2 + bgt _080FA810 + cmp r0, #1 + beq _080FA816 + b _080FA86E + .align 2, 0 +_080FA808: .4byte gUnknown_2037230 +_080FA80C: .4byte gUnknown_20388A8 +_080FA810: + cmp r0, #3 + beq _080FA826 + b _080FA84C +_080FA816: + movs r0, #0x10 + str r0, [r1, #0x14] + movs r0, #0x28 + b _080FA86C +_080FA81E: + movs r0, #0x10 + str r0, [r1, #0x14] + movs r0, #8 + b _080FA86C +_080FA826: + movs r0, #8 + rsbs r0, r0, #0 + str r0, [r1, #0x14] + movs r0, #0x18 + b _080FA86C +_080FA830: + ldr r1, _080FA844 + ldr r0, [r1, #4] + cmp r0, #2 + beq _080FA85A + cmp r0, #2 + bgt _080FA848 + cmp r0, #1 + beq _080FA852 + b _080FA86E + .align 2, 0 +_080FA844: .4byte gUnknown_20388A8 +_080FA848: + cmp r0, #3 + beq _080FA85E +_080FA84C: + cmp r0, #4 + beq _080FA868 + b _080FA86E +_080FA852: + movs r0, #8 + str r0, [r1, #0x14] + movs r0, #0x28 + b _080FA86C +_080FA85A: + movs r0, #8 + b _080FA86A +_080FA85E: + movs r0, #8 + rsbs r0, r0, #0 + str r0, [r1, #0x14] + movs r0, #0x18 + b _080FA86C +_080FA868: + movs r0, #0x18 +_080FA86A: + str r0, [r1, #0x14] +_080FA86C: + str r0, [r1, #0x18] +_080FA86E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FA7E8 + + thumb_func_start sub_080FA874 +sub_080FA874: @ 0x080FA874 + push {r4, lr} + bl sub_080E9854 + ldr r0, _080FA8C8 + ldrh r0, [r0] + cmp r0, #1 + beq _080FA91E + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080FA91E + ldr r4, _080FA8CC + adds r1, r4, #2 + adds r0, r4, #0 + bl sub_0808B3CC + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088BA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FA8E0 + bl sub_080FA7CC + ldr r1, _080FA8D0 + ldr r0, _080FA8D4 + str r0, [r1] + ldr r1, _080FA8D8 + ldr r0, _080FA8DC + b _080FA930 + .align 2, 0 +_080FA8C8: .4byte gUnknown_2037290 +_080FA8CC: .4byte gUnknown_203A80C +_080FA8D0: .4byte gUnknown_3005B10 +_080FA8D4: .4byte sub_081B53D8 +_080FA8D8: .4byte gUnknown_203CBB8 +_080FA8DC: .4byte sub_080FA94C +_080FA8E0: + adds r0, r4, #0 + bl sub_08088BC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FA910 + bl sub_080FA7CC + ldr r1, _080FA900 + ldr r0, _080FA904 + str r0, [r1] + ldr r1, _080FA908 + ldr r0, _080FA90C + b _080FA930 + .align 2, 0 +_080FA900: .4byte gUnknown_3005B10 +_080FA904: .4byte sub_081B53D8 +_080FA908: .4byte gUnknown_203CBB8 +_080FA90C: .4byte sub_080FAA58 +_080FA910: + adds r0, r4, #0 + bl sub_08088BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FA922 +_080FA91E: + movs r0, #0 + b _080FA934 +_080FA922: + bl sub_080FA7CC + ldr r1, _080FA93C + ldr r0, _080FA940 + str r0, [r1] + ldr r1, _080FA944 + ldr r0, _080FA948 +_080FA930: + str r0, [r1] + movs r0, #1 +_080FA934: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FA93C: .4byte gUnknown_3005B10 +_080FA940: .4byte sub_081B53D8 +_080FA944: .4byte gUnknown_203CBB8 +_080FA948: .4byte sub_080FABBC + thumb_func_end sub_080FA874 + + thumb_func_start sub_080FA94C +sub_080FA94C: @ 0x080FA94C + push {lr} + bl sub_081B1024 + ldr r1, _080FA964 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _080FA968 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080FA964: .4byte gUnknown_20388A8 +_080FA968: .4byte gUnknown_8245B35 + thumb_func_end sub_080FA94C + + thumb_func_start sub_080FA96C +sub_080FA96C: @ 0x080FA96C + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FA990 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080FA994 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080FA990: .4byte gUnknown_3005B60 +_080FA994: .4byte sub_080FA998 + thumb_func_end sub_080FA96C + + thumb_func_start sub_080FA998 +sub_080FA998: @ 0x080FA998 + push {lr} + movs r0, #0xb + bl sub_080B5568 + movs r0, #0x37 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FA998 + + thumb_func_start sub_080FA9AC +sub_080FA9AC: @ 0x080FA9AC + push {r4, lr} + bl sub_080FA7E8 + ldr r0, _080FA9EC + ldr r3, _080FA9F0 + ldr r1, _080FA9F4 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #0x17 + ldr r4, _080FA9F8 + ldr r3, [r4, #0x14] + adds r1, r1, r3 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrb r2, [r2] + ldr r3, [r4, #0x18] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0x94 + bl sub_08006B0C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FA9EC: .4byte gUnknown_856A1E4 +_080FA9F0: .4byte gUnknown_20205AC +_080FA9F4: .4byte gUnknown_2037230 +_080FA9F8: .4byte gUnknown_20388A8 + thumb_func_end sub_080FA9AC + + thumb_func_start sub_080FA9FC +sub_080FA9FC: @ 0x080FA9FC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x83 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _080FAA14 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAA14: .4byte sub_080FAA18 + thumb_func_end sub_080FA9FC + + thumb_func_start sub_080FAA18 +sub_080FAA18: @ 0x080FAA18 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x2e] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r0, #0x27 + bgt _080FAA38 + adds r0, r2, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _080FAA40 + bl sub_080E99D8 + b _080FAA40 +_080FAA38: + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, _080FAA44 + str r0, [r1, #0x1c] +_080FAA40: + pop {r0} + bx r0 + .align 2, 0 +_080FAA44: .4byte sub_080FAA48 + thumb_func_end sub_080FAA18 + + thumb_func_start sub_080FAA48 +sub_080FAA48: @ 0x080FAA48 + push {lr} + movs r1, #0x37 + bl sub_080B5444 + bl sub_080988C4 + pop {r0} + bx r0 + thumb_func_end sub_080FAA48 + + thumb_func_start sub_080FAA58 +sub_080FAA58: @ 0x080FAA58 + push {lr} + bl sub_081B1024 + ldr r1, _080FAA70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _080FAA74 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080FAA70: .4byte gUnknown_20388A8 +_080FAA74: .4byte gUnknown_8245B8E + thumb_func_end sub_080FAA58 + + thumb_func_start sub_080FAA78 +sub_080FAA78: @ 0x080FAA78 + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FAA9C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080FAAA0 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080FAA9C: .4byte gUnknown_3005B60 +_080FAAA0: .4byte sub_080FAAA4 + thumb_func_end sub_080FAA78 + + thumb_func_start sub_080FAAA4 +sub_080FAAA4: @ 0x080FAAA4 + push {lr} + movs r0, #0x1a + bl sub_080B5568 + movs r0, #0x38 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAAA4 + + thumb_func_start sub_080FAAB8 +sub_080FAAB8: @ 0x080FAAB8 + push {r4, lr} + ldr r1, _080FAB30 + movs r2, #0 + ldrsh r0, [r1, r2] + movs r2, #2 + ldrsh r1, [r1, r2] + bl sub_08087C20 + adds r2, r0, #0 + ldr r1, _080FAB34 + adds r0, r1, #0 + ands r2, r0 + cmp r2, #0x96 + bne _080FAADA + ldr r1, _080FAB38 + movs r0, #0 + str r0, [r1, #0x1c] +_080FAADA: + cmp r2, #0x9c + bne _080FAAE4 + ldr r1, _080FAB38 + movs r0, #2 + str r0, [r1, #0x1c] +_080FAAE4: + bl sub_080FA7E8 + ldr r0, _080FAB3C + ldr r3, _080FAB40 + ldr r1, _080FAB44 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #0x17 + ldr r4, _080FAB38 + ldr r3, [r4, #0x14] + adds r1, r1, r3 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrb r2, [r2] + ldr r3, [r4, #0x18] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0x94 + bl sub_08006B0C + ldr r0, [r4, #0x1c] + cmp r0, #1 + beq _080FAB22 + cmp r0, #3 + bne _080FAB26 +_080FAB22: + bl sub_080E99D8 +_080FAB26: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FAB30: .4byte gUnknown_203A80C +_080FAB34: .4byte 0x00000FFF +_080FAB38: .4byte gUnknown_20388A8 +_080FAB3C: .4byte gUnknown_856A1FC +_080FAB40: .4byte gUnknown_20205AC +_080FAB44: .4byte gUnknown_2037230 + thumb_func_end sub_080FAAB8 + + thumb_func_start sub_080FAB48 +sub_080FAB48: @ 0x080FAB48 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x9b + bl sub_080A306C + ldr r0, _080FAB6C + ldr r1, [r0, #0x1c] + adds r2, r4, #0 + adds r2, #0x2a + movs r0, #0 + strb r1, [r2] + strh r0, [r4, #0x2e] + ldr r0, _080FAB70 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAB6C: .4byte gUnknown_20388A8 +_080FAB70: .4byte sub_080FAB74 + thumb_func_end sub_080FAB48 + + thumb_func_start sub_080FAB74 +sub_080FAB74: @ 0x080FAB74 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + ble _080FAB9E + ldr r0, _080FABA4 + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _080FAB92 + cmp r0, #2 + bne _080FAB96 +_080FAB92: + bl sub_080E99D8 +_080FAB96: + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _080FABA8 + str r0, [r4, #0x1c] +_080FAB9E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FABA4: .4byte gUnknown_20388A8 +_080FABA8: .4byte sub_080FABAC + thumb_func_end sub_080FAB74 + + thumb_func_start sub_080FABAC +sub_080FABAC: @ 0x080FABAC + push {lr} + movs r1, #0x38 + bl sub_080B5444 + bl sub_080988C4 + pop {r0} + bx r0 + thumb_func_end sub_080FABAC + + thumb_func_start sub_080FABBC +sub_080FABBC: @ 0x080FABBC + push {lr} + bl sub_081B1024 + ldr r1, _080FABD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _080FABD8 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080FABD4: .4byte gUnknown_20388A8 +_080FABD8: .4byte gUnknown_8245BE7 + thumb_func_end sub_080FABBC + + thumb_func_start sub_080FABDC +sub_080FABDC: @ 0x080FABDC + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FAC00 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _080FAC04 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_080FAC00: .4byte gUnknown_3005B60 +_080FAC04: .4byte sub_080FAC08 + thumb_func_end sub_080FABDC + + thumb_func_start sub_080FAC08 +sub_080FAC08: @ 0x080FAC08 + push {lr} + movs r0, #0x1b + bl sub_080B5568 + movs r0, #0x39 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAC08 + + thumb_func_start sub_080FAC1C +sub_080FAC1C: @ 0x080FAC1C + push {r4, lr} + bl sub_080FA7E8 + ldr r0, _080FAC5C + ldr r3, _080FAC60 + ldr r1, _080FAC64 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #0x17 + ldr r4, _080FAC68 + ldr r3, [r4, #0x14] + adds r1, r1, r3 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrb r2, [r2] + ldr r3, [r4, #0x18] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0x94 + bl sub_08006B0C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FAC5C: .4byte gUnknown_856A214 +_080FAC60: .4byte gUnknown_20205AC +_080FAC64: .4byte gUnknown_2037230 +_080FAC68: .4byte gUnknown_20388A8 + thumb_func_end sub_080FAC1C + + thumb_func_start sub_080FAC6C +sub_080FAC6C: @ 0x080FAC6C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xa9 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _080FAC84 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAC84: .4byte sub_080FAC88 + thumb_func_end sub_080FAC6C + + thumb_func_start sub_080FAC88 +sub_080FAC88: @ 0x080FAC88 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x2e] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r0, #0x27 + bgt _080FACA8 + adds r0, r2, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _080FACB0 + bl sub_080E99D8 + b _080FACB0 +_080FACA8: + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, _080FACB4 + str r0, [r1, #0x1c] +_080FACB0: + pop {r0} + bx r0 + .align 2, 0 +_080FACB4: .4byte sub_080FACB8 + thumb_func_end sub_080FAC88 + + thumb_func_start sub_080FACB8 +sub_080FACB8: @ 0x080FACB8 + push {lr} + movs r1, #0x39 + bl sub_080B5444 + bl sub_080988C4 + pop {r0} + bx r0 + thumb_func_end sub_080FACB8 + + thumb_func_start sub_080FACC8 +sub_080FACC8: @ 0x080FACC8 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + ldr r0, _080FAD08 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FAD0C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + mov r0, sp + ldrh r0, [r0] + movs r2, #0 + strh r0, [r1, #8] + ldrh r0, [r4] + strh r0, [r1, #0xa] + strh r2, [r1, #0xc] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FAD08: .4byte sub_080FAD10 +_080FAD0C: .4byte gUnknown_3005B60 + thumb_func_end sub_080FACC8 + + thumb_func_start sub_080FAD10 +sub_080FAD10: @ 0x080FAD10 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FAD38 + adds r4, r0, r1 + ldrh r0, [r4, #4] + subs r0, #4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bhi _080FADDE + lsls r0, r0, #2 + ldr r1, _080FAD3C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FAD38: .4byte gUnknown_3005B68 +_080FAD3C: .4byte _080FAD40 +_080FAD40: @ jump table + .4byte _080FAD84 @ case 0 + .4byte _080FADDE @ case 1 + .4byte _080FADDE @ case 2 + .4byte _080FADDE @ case 3 + .4byte _080FAD92 @ case 4 + .4byte _080FADDE @ case 5 + .4byte _080FADDE @ case 6 + .4byte _080FADDE @ case 7 + .4byte _080FAD84 @ case 8 + .4byte _080FADDE @ case 9 + .4byte _080FADDE @ case 10 + .4byte _080FADDE @ case 11 + .4byte _080FAD92 @ case 12 + .4byte _080FADDE @ case 13 + .4byte _080FADDE @ case 14 + .4byte _080FADDE @ case 15 + .4byte _080FADB0 @ case 16 +_080FAD84: + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #0x89 + lsls r2, r2, #2 + b _080FAD9E +_080FAD92: + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #0x88 + lsls r2, r2, #2 +_080FAD9E: + bl sub_08087C54 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08089804 + b _080FADDE +_080FADB0: + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + movs r2, #0x89 + lsls r2, r2, #2 + bl sub_08087C54 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_08089804 + movs r0, #0x3d + bl sub_080B5568 + bl sub_080988C4 + adds r0, r5, #0 + bl sub_080A8964 + b _080FADE4 +_080FADDE: + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] +_080FADE4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAD10 + + thumb_func_start sub_080FADEC +sub_080FADEC: @ 0x080FADEC + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + movs r0, #3 + bl sub_080A306C + ldr r0, _080FAE24 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080FAE28 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r2, #0xe2 + lsls r2, r2, #4 + bl sub_08087C54 + b _080FAE38 + .align 2, 0 +_080FAE24: .4byte 0x00004054 +_080FAE28: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + ldr r2, _080FAE50 + bl sub_08087C54 +_080FAE38: + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08089804 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FAE50: .4byte 0x00000E21 + thumb_func_end sub_080FADEC + + thumb_func_start sub_080FAE54 +sub_080FAE54: @ 0x080FAE54 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, _080FAE94 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FAE98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r4, [r1, #8] + strh r5, [r1, #0xa] + strh r6, [r1, #0xc] + strh r0, [r1, #0xe] + movs r0, #1 + strh r0, [r1, #0x10] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FAE94: .4byte sub_080FAE9C +_080FAE98: .4byte gUnknown_3005B60 + thumb_func_end sub_080FAE54 + + thumb_func_start sub_080FAE9C +sub_080FAE9C: @ 0x080FAE9C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FAEBC + adds r4, r0, r1 + ldrh r1, [r4, #6] + movs r2, #6 + ldrsh r0, [r4, r2] + cmp r0, #6 + bne _080FAEC0 + movs r0, #0 + b _080FAEC2 + .align 2, 0 +_080FAEBC: .4byte gUnknown_3005B68 +_080FAEC0: + adds r0, r1, #1 +_080FAEC2: + strh r0, [r4, #6] + movs r3, #6 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _080FAF14 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #2 + bne _080FAEDC + movs r2, #0 + ldrsh r0, [r4, r2] + bl sub_080FAF1C +_080FAEDC: + movs r3, #2 + ldrsh r0, [r4, r3] + movs r2, #4 + ldrsh r1, [r4, r2] + ldrh r2, [r4, #8] + ldrh r3, [r4] + adds r2, r2, r3 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + bl sub_08087C54 + movs r1, #2 + ldrsh r0, [r4, r1] + movs r2, #4 + ldrsh r1, [r4, r2] + bl sub_08089804 + ldrh r1, [r4, #8] + movs r3, #8 + ldrsh r0, [r4, r3] + cmp r0, #3 + bne _080FAF10 + adds r0, r5, #0 + bl sub_080A8964 + b _080FAF14 +_080FAF10: + adds r0, r1, #1 + strh r0, [r4, #8] +_080FAF14: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAE9C + + thumb_func_start sub_080FAF1C +sub_080FAF1C: @ 0x080FAF1C + push {lr} + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #2 + cmp r1, r0 + beq _080FAF48 + cmp r1, r0 + bgt _080FAF38 + movs r0, #0x8a + lsls r0, r0, #2 + cmp r1, r0 + beq _080FAF60 + b _080FAF66 +_080FAF38: + movs r0, #0xcf + lsls r0, r0, #2 + cmp r1, r0 + beq _080FAF50 + adds r0, #4 + cmp r1, r0 + beq _080FAF58 + b _080FAF66 +_080FAF48: + movs r0, #0x4a + bl sub_080A306C + b _080FAF66 +_080FAF50: + movs r0, #0x4b + bl sub_080A306C + b _080FAF66 +_080FAF58: + movs r0, #0x4c + bl sub_080A306C + b _080FAF66 +_080FAF60: + movs r0, #0x4e + bl sub_080A306C +_080FAF66: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAF1C + + thumb_func_start sub_080FAF6C +sub_080FAF6C: @ 0x080FAF6C + movs r0, #0 + bx lr + thumb_func_end sub_080FAF6C + + thumb_func_start sub_080FAF70 +sub_080FAF70: @ 0x080FAF70 + movs r0, #0 + bx lr + thumb_func_end sub_080FAF70 + + thumb_func_start sub_080FAF74 +sub_080FAF74: @ 0x080FAF74 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0x4d + bl sub_080A306C + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + ldr r2, _080FAFBC + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08087C54 + subs r6, r4, #1 + ldr r2, _080FAFC0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08087C54 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08089804 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08089804 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FAFBC: .4byte 0x00000276 +_080FAFC0: .4byte 0x0000026E + thumb_func_end sub_080FAF74 + + thumb_func_start sub_080FAFC4 +sub_080FAFC4: @ 0x080FAFC4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080FAFF4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #8] + movs r3, #8 + ldrsh r0, [r1, r3] + cmp r0, #7 + bne _080FAFF8 + movs r2, #0xa + ldrsh r0, [r1, r2] + movs r3, #0xc + ldrsh r1, [r1, r3] + bl sub_080FAF74 + adds r0, r4, #0 + bl sub_080A8964 + b _080FAFFC + .align 2, 0 +_080FAFF4: .4byte gUnknown_3005B60 +_080FAFF8: + adds r0, r2, #1 + strh r0, [r1, #8] +_080FAFFC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FAFC4 + + thumb_func_start sub_080FB004 +sub_080FB004: @ 0x080FB004 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r7, r5, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r6, r4, #0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FB02C + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + bl sub_080FAF74 + b _080FB04E +_080FB02C: + cmp r0, #2 + bne _080FB04E + ldr r0, _080FB054 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FB058 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + strh r7, [r1, #0xa] + strh r6, [r1, #0xc] +_080FB04E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FB054: .4byte sub_080FAFC4 +_080FB058: .4byte gUnknown_3005B60 + thumb_func_end sub_080FB004 + + thumb_func_start sub_080FB05C +sub_080FB05C: @ 0x080FB05C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080FB094 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #7 + beq _080FB078 + b _080FB1D6 +_080FB078: + ldr r2, _080FB098 + adds r0, r2, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3b + bls _080FB08A + b _080FB1CE +_080FB08A: + lsls r0, r0, #2 + ldr r1, _080FB09C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FB094: .4byte gUnknown_3005B60 +_080FB098: .4byte 0xFFFFFD88 +_080FB09C: .4byte _080FB0A0 +_080FB0A0: @ jump table + .4byte _080FB190 @ case 0 + .4byte _080FB198 @ case 1 + .4byte _080FB1A0 @ case 2 + .4byte _080FB1A8 @ case 3 + .4byte _080FB1B0 @ case 4 + .4byte _080FB1B8 @ case 5 + .4byte _080FB1C0 @ case 6 + .4byte _080FB1CE @ case 7 + .4byte _080FB1CE @ case 8 + .4byte _080FB1CE @ case 9 + .4byte _080FB1CE @ case 10 + .4byte _080FB1CE @ case 11 + .4byte _080FB1CE @ case 12 + .4byte _080FB1CE @ case 13 + .4byte _080FB1CE @ case 14 + .4byte _080FB1CE @ case 15 + .4byte _080FB1CE @ case 16 + .4byte _080FB1CE @ case 17 + .4byte _080FB1CE @ case 18 + .4byte _080FB1CE @ case 19 + .4byte _080FB1CE @ case 20 + .4byte _080FB1CE @ case 21 + .4byte _080FB1CE @ case 22 + .4byte _080FB1CE @ case 23 + .4byte _080FB1CE @ case 24 + .4byte _080FB1CE @ case 25 + .4byte _080FB1CE @ case 26 + .4byte _080FB1CE @ case 27 + .4byte _080FB1CE @ case 28 + .4byte _080FB1CE @ case 29 + .4byte _080FB1CE @ case 30 + .4byte _080FB1CE @ case 31 + .4byte _080FB1CE @ case 32 + .4byte _080FB1CE @ case 33 + .4byte _080FB1CE @ case 34 + .4byte _080FB1CE @ case 35 + .4byte _080FB1CE @ case 36 + .4byte _080FB1CE @ case 37 + .4byte _080FB1CE @ case 38 + .4byte _080FB1CE @ case 39 + .4byte _080FB1CE @ case 40 + .4byte _080FB1CE @ case 41 + .4byte _080FB1CE @ case 42 + .4byte _080FB1CE @ case 43 + .4byte _080FB1CE @ case 44 + .4byte _080FB1CE @ case 45 + .4byte _080FB1CE @ case 46 + .4byte _080FB1CE @ case 47 + .4byte _080FB1CE @ case 48 + .4byte _080FB1CE @ case 49 + .4byte _080FB1CE @ case 50 + .4byte _080FB1CE @ case 51 + .4byte _080FB1CE @ case 52 + .4byte _080FB1CE @ case 53 + .4byte _080FB1CE @ case 54 + .4byte _080FB1CE @ case 55 + .4byte _080FB1CE @ case 56 + .4byte _080FB1CE @ case 57 + .4byte _080FB1CE @ case 58 + .4byte _080FB1C8 @ case 59 +_080FB190: + movs r0, #0x3e + bl sub_080A306C + b _080FB1CE +_080FB198: + movs r0, #0x3f + bl sub_080A306C + b _080FB1CE +_080FB1A0: + movs r0, #0x40 + bl sub_080A306C + b _080FB1CE +_080FB1A8: + movs r0, #0x41 + bl sub_080A306C + b _080FB1CE +_080FB1B0: + movs r0, #0x42 + bl sub_080A306C + b _080FB1CE +_080FB1B8: + movs r0, #0x43 + bl sub_080A306C + b _080FB1CE +_080FB1C0: + movs r0, #0x44 + bl sub_080A306C + b _080FB1CE +_080FB1C8: + movs r0, #0x45 + bl sub_080A306C +_080FB1CE: + adds r0, r4, #0 + bl sub_080A8964 + b _080FB1DA +_080FB1D6: + adds r0, r2, #1 + strh r0, [r1, #0xa] +_080FB1DA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FB05C + + thumb_func_start sub_080FB1E0 +sub_080FB1E0: @ 0x080FB1E0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _080FB20C + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FB210 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r4, [r1, #8] + strh r0, [r1, #0xa] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FB20C: .4byte sub_080FB05C +_080FB210: .4byte gUnknown_3005B60 + thumb_func_end sub_080FB1E0 + + thumb_func_start sub_080FB214 +sub_080FB214: @ 0x080FB214 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + bne _080FB22C + movs r0, #0xc3 + bl sub_080A306C +_080FB22C: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x1f + ble _080FB23A + adds r0, r4, #0 + bl sub_08006E00 +_080FB23A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FB214 + + thumb_func_start sub_080FB240 +sub_080FB240: @ 0x080FB240 + push {r4, lr} + sub sp, #4 + ldr r3, _080FB2D8 + ldr r2, _080FB2DC + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x10] + mov r0, sp + strh r1, [r0] + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x12] + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r0, sp + adds r1, r4, #0 + movs r2, #8 + movs r3, #4 + bl sub_08092A50 + ldr r0, _080FB2E0 + ldr r0, [r0, #0x58] + mov r1, sp + movs r2, #0 + ldrsh r1, [r1, r2] + movs r3, #0 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _080FB2CE + ldr r3, _080FB2E4 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r4, r2, r3 + movs r0, #0x3e + adds r0, r0, r4 + mov ip, r0 + ldrb r0, [r0] + movs r1, #2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0xf + ands r0, r1 + movs r1, #0x50 + orrs r0, r1 + strb r0, [r4, #5] + adds r3, #0x1c + adds r2, r2, r3 + ldr r0, _080FB2E8 + str r0, [r2] + movs r0, #0 + strh r0, [r4, #0x2e] +_080FB2CE: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FB2D8: .4byte gUnknown_2036FF0 +_080FB2DC: .4byte gUnknown_2037230 +_080FB2E0: .4byte gUnknown_84DDE4C +_080FB2E4: .4byte gUnknown_20205AC +_080FB2E8: .4byte sub_080FB214 + thumb_func_end sub_080FB240 + + thumb_func_start sub_080FB2EC +sub_080FB2EC: @ 0x080FB2EC + push {r4, lr} + sub sp, #4 + bl sub_080987DC + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + ldr r1, _080FB328 + mov r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + str r0, [r1, #0x14] + movs r3, #0 + ldrsh r0, [r4, r3] + str r0, [r1, #0x18] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _080FB36C + cmp r0, #2 + bgt _080FB32C + cmp r0, #1 + beq _080FB336 + b _080FB3FC + .align 2, 0 +_080FB328: .4byte gUnknown_20388A8 +_080FB32C: + cmp r0, #3 + beq _080FB39C + cmp r0, #4 + beq _080FB3D4 + b _080FB3FC +_080FB336: + ldr r0, _080FB360 + ldr r3, _080FB364 + ldr r1, _080FB368 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #7 + movs r3, #0x80 + lsls r3, r3, #0xc + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldrb r2, [r2] + adds r2, #0x20 + movs r3, #0 + bl sub_08006B0C + b _080FB3FC + .align 2, 0 +_080FB360: .4byte gUnknown_856A270 +_080FB364: .4byte gUnknown_20205AC +_080FB368: .4byte gUnknown_2037230 +_080FB36C: + ldr r0, _080FB390 + ldr r3, _080FB394 + ldr r1, _080FB398 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #7 + movs r3, #0x80 + lsls r3, r3, #0xc + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldrb r2, [r2] + b _080FB3BC + .align 2, 0 +_080FB390: .4byte gUnknown_856A270 +_080FB394: .4byte gUnknown_20205AC +_080FB398: .4byte gUnknown_2037230 +_080FB39C: + ldr r0, _080FB3C4 + ldr r3, _080FB3C8 + ldr r1, _080FB3CC + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #7 + ldr r3, _080FB3D0 + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldrb r2, [r2] + adds r2, #0x10 +_080FB3BC: + movs r3, #0x94 + bl sub_08006B0C + b _080FB3FC + .align 2, 0 +_080FB3C4: .4byte gUnknown_856A270 +_080FB3C8: .4byte gUnknown_20205AC +_080FB3CC: .4byte gUnknown_2037230 +_080FB3D0: .4byte 0xFFF80000 +_080FB3D4: + ldr r0, _080FB408 + ldr r3, _080FB40C + ldr r1, _080FB410 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r2, #2] + lsls r1, r1, #0x17 + lsrs r1, r1, #7 + movs r3, #0xc0 + lsls r3, r3, #0xd + adds r1, r1, r3 + asrs r1, r1, #0x10 + ldrb r2, [r2] + adds r2, #0x10 + movs r3, #0x94 + bl sub_08006B0C +_080FB3FC: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080FB408: .4byte gUnknown_856A270 +_080FB40C: .4byte gUnknown_20205AC +_080FB410: .4byte gUnknown_2037230 + thumb_func_end sub_080FB2EC + + thumb_func_start sub_080FB414 +sub_080FB414: @ 0x080FB414 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x83 + bl sub_080A306C + ldr r4, _080FB440 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + subs r1, #1 + bl sub_08087B88 + ldr r1, _080FB444 + cmp r0, r1 + bne _080FB44C + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + subs r1, #1 + ldr r2, _080FB448 + bl sub_08087C54 + b _080FB45A + .align 2, 0 +_080FB440: .4byte gUnknown_20388A8 +_080FB444: .4byte 0x00000286 +_080FB448: .4byte 0x00000E02 +_080FB44C: + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + subs r1, #1 + movs r2, #0xa1 + lsls r2, r2, #2 + bl sub_08087C54 +_080FB45A: + ldr r4, _080FB488 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r2, _080FB48C + bl sub_08087C54 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + subs r1, #1 + bl sub_08089804 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + bl sub_08089804 + movs r0, #0 + strh r0, [r5, #0x2e] + ldr r0, _080FB490 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FB488: .4byte gUnknown_20388A8 +_080FB48C: .4byte 0x0000020A +_080FB490: .4byte sub_080FB494 + thumb_func_end sub_080FB414 + + thumb_func_start sub_080FB494 +sub_080FB494: @ 0x080FB494 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0x11 + bgt _080FB4A8 + adds r0, r1, #1 + strh r0, [r5, #0x2e] + b _080FB4C4 +_080FB4A8: + ldr r4, _080FB4CC + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r2, _080FB4D0 + bl sub_08087C54 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + bl sub_08089804 + movs r0, #0 + strh r0, [r5, #0x2e] + ldr r0, _080FB4D4 + str r0, [r5, #0x1c] +_080FB4C4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FB4CC: .4byte gUnknown_20388A8 +_080FB4D0: .4byte 0x00000E8C +_080FB4D4: .4byte sub_080FB4D8 + thumb_func_end sub_080FB494 + + thumb_func_start sub_080FB4D8 +sub_080FB4D8: @ 0x080FB4D8 + push {lr} + movs r1, #0x34 + bl sub_080B5444 + bl sub_080988C4 + pop {r0} + bx r0 + thumb_func_end sub_080FB4D8 + + thumb_func_start sub_080FB4E8 +sub_080FB4E8: @ 0x080FB4E8 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B88 + adds r1, r0, #0 + ldr r0, _080FB520 + cmp r1, r0 + beq _080FB5DC + cmp r1, r0 + bgt _080FB524 + subs r0, #0x17 + cmp r1, r0 + beq _080FB584 + adds r0, #0x16 + cmp r1, r0 + beq _080FB5D0 + b _080FB63E + .align 2, 0 +_080FB520: .4byte 0x000002F5 +_080FB524: + ldr r0, _080FB568 + cmp r1, r0 + beq _080FB614 + adds r0, #0x40 + cmp r1, r0 + beq _080FB532 + b _080FB63E +_080FB532: + ldr r0, _080FB56C + movs r1, #0x64 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _080FB570 + ldr r1, _080FB574 + bl sub_080088B8 + ldr r1, _080FB578 + movs r0, #0 + strh r0, [r1] + ldr r0, _080FB57C + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080FB63E + ldr r4, _080FB580 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x10 + b _080FB5FA + .align 2, 0 +_080FB568: .4byte 0x000002F6 +_080FB56C: .4byte gUnknown_2021C40 +_080FB570: .4byte gUnknown_2021C54 +_080FB574: .4byte gUnknown_85CA73F +_080FB578: .4byte gUnknown_2037290 +_080FB57C: .4byte 0x00004054 +_080FB580: .4byte 0x000040EE +_080FB584: + ldr r0, _080FB5B8 + movs r1, #0x32 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r0, _080FB5BC + ldr r1, _080FB5C0 + bl sub_080088B8 + ldr r1, _080FB5C4 + movs r0, #0 + strh r0, [r1] + ldr r0, _080FB5C8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080FB63E + ldr r4, _080FB5CC + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x20 + b _080FB5FA + .align 2, 0 +_080FB5B8: .4byte gUnknown_2021C40 +_080FB5BC: .4byte gUnknown_2021C54 +_080FB5C0: .4byte gUnknown_85CA742 +_080FB5C4: .4byte gUnknown_2037290 +_080FB5C8: .4byte 0x00004054 +_080FB5CC: .4byte 0x000040EE +_080FB5D0: + ldr r1, _080FB5D8 + movs r0, #1 + b _080FB5E0 + .align 2, 0 +_080FB5D8: .4byte gUnknown_2037290 +_080FB5DC: + ldr r1, _080FB608 + movs r0, #2 +_080FB5E0: + strh r0, [r1] + ldr r0, _080FB60C + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080FB63E + ldr r4, _080FB610 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x80 +_080FB5FA: + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 + b _080FB63E + .align 2, 0 +_080FB608: .4byte gUnknown_2037290 +_080FB60C: .4byte 0x00004054 +_080FB610: .4byte 0x000040EE +_080FB614: + ldr r1, _080FB648 + movs r0, #3 + strh r0, [r1] + ldr r0, _080FB64C + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080FB63E + ldr r4, _080FB650 + adds r0, r4, #0 + bl sub_0809CF6C + adds r1, r0, #0 + movs r0, #0x80 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_080FB63E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FB648: .4byte gUnknown_2037290 +_080FB64C: .4byte 0x00004054 +_080FB650: .4byte 0x000040EE + thumb_func_end sub_080FB4E8 + + thumb_func_start sub_080FB654 +sub_080FB654: @ 0x080FB654 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_080E9EA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FB698 + cmp r5, #0 + bne _080FB68C + ldr r1, _080FB684 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _080FB680 + ldr r0, _080FB688 + cmp r4, r0 + bne _080FB698 +_080FB680: + movs r0, #1 + b _080FB69A + .align 2, 0 +_080FB684: .4byte 0xFFFFFD7B +_080FB688: .4byte 0x00000237 +_080FB68C: + ldr r0, _080FB6A0 + cmp r4, r0 + beq _080FB680 + ldr r0, _080FB6A4 + cmp r6, r0 + beq _080FB680 +_080FB698: + movs r0, #0 +_080FB69A: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080FB6A0: .4byte 0x0000028D +_080FB6A4: .4byte 0x0000023F + thumb_func_end sub_080FB654 + + thumb_func_start sub_080FB6A8 +sub_080FB6A8: @ 0x080FB6A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _080FB6CC + adds r1, r0, r1 + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #1 + beq _080FB6E6 + cmp r0, #1 + bgt _080FB6D0 + cmp r0, #0 + beq _080FB6D6 + b _080FB702 + .align 2, 0 +_080FB6CC: .4byte gUnknown_3005B68 +_080FB6D0: + cmp r0, #2 + beq _080FB6FA + b _080FB702 +_080FB6D6: + ldrh r0, [r1, #2] + adds r0, #2 + strh r0, [r1, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _080FB702 + b _080FB6F2 +_080FB6E6: + ldrh r0, [r1, #2] + subs r0, #2 + strh r0, [r1, #2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080FB702 +_080FB6F2: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080FB702 +_080FB6FA: + adds r0, r2, #0 + bl sub_080A8964 + b _080FB712 +_080FB702: + ldrh r0, [r1, #2] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 +_080FB712: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FB6A8 + + thumb_func_start sub_080FB718 +sub_080FB718: @ 0x080FB718 + push {lr} + movs r0, #0x4f + bl sub_080A306C + ldr r0, _080FB72C + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080FB72C: .4byte sub_080FB6A8 + thumb_func_end sub_080FB718 + + thumb_func_start sub_080FB730 +sub_080FB730: @ 0x080FB730 + push {lr} + ldr r0, _080FB740 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080FB740: .4byte sub_080FB6A8 + thumb_func_end sub_080FB730 + + thumb_func_start sub_080FB744 +sub_080FB744: @ 0x080FB744 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FB758 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080FB75C + str r0, [r1] + bx lr + .align 2, 0 +_080FB758: .4byte gUnknown_3005B60 +_080FB75C: .4byte sub_080FB760 + thumb_func_end sub_080FB744 + + thumb_func_start sub_080FB760 +sub_080FB760: @ 0x080FB760 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080FB7C4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080FB7C8 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FB78C + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FB7BE +_080FB78C: + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808BB8C + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092F08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08092B30 + ldr r1, _080FB7CC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080FB7D0 + str r1, [r0] +_080FB7BE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FB7C4: .4byte gUnknown_2037230 +_080FB7C8: .4byte gUnknown_2036FF0 +_080FB7CC: .4byte gUnknown_3005B60 +_080FB7D0: .4byte sub_080FB7D4 + thumb_func_end sub_080FB760 + + thumb_func_start sub_080FB7D4 +sub_080FB7D4: @ 0x080FB7D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FB828 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080FB82C + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FB838 + ldr r1, _080FB830 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0xa] + adds r1, r0, #1 + strh r1, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bgt _080FB834 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08092F08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08092B30 + b _080FB838 + .align 2, 0 +_080FB828: .4byte gUnknown_2037230 +_080FB82C: .4byte gUnknown_2036FF0 +_080FB830: .4byte gUnknown_3005B60 +_080FB834: + ldr r0, _080FB840 + str r0, [r2] +_080FB838: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FB840: .4byte sub_080FB844 + thumb_func_end sub_080FB7D4 + + thumb_func_start sub_080FB844 +sub_080FB844: @ 0x080FB844 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0808B634 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808AD30 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FB844 + + thumb_func_start sub_080FB868 +sub_080FB868: @ 0x080FB868 + push {lr} + ldr r0, _080FB878 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080FB878: .4byte sub_080FB744 + thumb_func_end sub_080FB868 + + thumb_func_start sub_080FB87C +sub_080FB87C: @ 0x080FB87C + push {r4, r5, lr} + ldr r0, _080FB8D0 + bl sub_0800845C + ldr r0, _080FB8D4 + movs r1, #0 + movs r2, #0 + movs r3, #0x52 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _080FB8DC + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _080FB8D8 + adds r4, r0, r1 + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r0, #0x10 + movs r1, #0xd + bl sub_08092960 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x20] + adds r0, #0x10 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x22] + adds r0, #2 + strh r0, [r4, #0x22] + adds r0, r5, #0 + b _080FB8DE + .align 2, 0 +_080FB8D0: .4byte gUnknown_856A448 +_080FB8D4: .4byte gUnknown_856A464 +_080FB8D8: .4byte gUnknown_20205AC +_080FB8DC: + movs r0, #0x40 +_080FB8DE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080FB87C + + thumb_func_start sub_080FB8E4 +sub_080FB8E4: @ 0x080FB8E4 + push {r4, r5, r6, r7, lr} + ldr r4, _080FB918 + adds r7, r4, #0 + movs r6, #0 + movs r5, #0x3f +_080FB8EE: + adds r0, r7, #0 + adds r0, #0x14 + adds r0, r6, r0 + ldr r1, [r0] + ldr r0, _080FB91C + cmp r1, r0 + bne _080FB908 + adds r0, r4, #0 + bl sub_080072FC + adds r0, r4, #0 + bl sub_08006E00 +_080FB908: + adds r4, #0x44 + adds r6, #0x44 + subs r5, #1 + cmp r5, #0 + bge _080FB8EE + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FB918: .4byte gUnknown_20205AC +_080FB91C: .4byte gUnknown_856A464 + thumb_func_end sub_080FB8E4 + + thumb_func_start sub_080FB920 +sub_080FB920: @ 0x080FB920 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x78 + bl __modsi3 + cmp r0, #0 + bne _080FB934 + movs r0, #1 + rsbs r0, r0, #0 + b _080FB946 +_080FB934: + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + cmp r0, #4 + ble _080FB944 + movs r0, #0 + b _080FB946 +_080FB944: + movs r0, #1 +_080FB946: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080FB920 + + thumb_func_start sub_080FB94C +sub_080FB94C: @ 0x080FB94C + push {lr} + adds r0, #0x78 + movs r1, #0xb4 + bl __modsi3 + cmp r0, #0 + beq _080FB95E + movs r0, #0 + b _080FB962 +_080FB95E: + movs r0, #1 + rsbs r0, r0, #0 +_080FB962: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FB94C + + thumb_func_start sub_080FB968 +sub_080FB968: @ 0x080FB968 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080FBA0C + adds r5, r1, r0 + movs r1, #0 + ldrsh r0, [r5, r1] + adds r0, #0x1e + bl sub_080FB94C + ldr r4, _080FBA10 + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + lsls r0, r0, #0x12 + movs r3, #0xc0 + lsls r3, r3, #0xa + orrs r0, r3 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #1 + movs r3, #3 + bl sub_0808E19C + movs r3, #0 + ldrsh r0, [r5, r3] + bl sub_080FB94C + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + lsls r0, r0, #0x11 + ldr r3, _080FBA14 + adds r0, r0, r3 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #2 + movs r3, #0 + bl sub_0808E19C + movs r1, #0 + ldrsh r0, [r5, r1] + bl sub_080FB94C + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + movs r4, #0 + movs r3, #3 + rsbs r3, r3, #0 + lsls r0, r0, #0x12 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #3 + bl sub_0808E19C + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + ldr r1, _080FBA18 + cmp r0, r1 + bne _080FB9F0 + strh r4, [r5] +_080FB9F0: + movs r3, #0 + ldrsh r0, [r5, r3] + bl sub_080FB920 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_08089C30 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FBA0C: .4byte gUnknown_3005B68 +_080FBA10: .4byte gUnknown_3005AEC +_080FBA14: .4byte 0xFFFD0000 +_080FBA18: .4byte 0x75300000 + thumb_func_end sub_080FB968 + + thumb_func_start sub_080FBA1C +sub_080FBA1C: @ 0x080FBA1C + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r3, r0, #3 + ldr r4, _080FBA5C + adds r7, r3, r4 + ldrh r1, [r7] + adds r1, #1 + strh r1, [r7] + ldrh r0, [r7, #4] + adds r0, #1 + strh r0, [r7, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #5 + ble _080FBA4C + movs r0, #0 + strh r0, [r7] + ldrh r0, [r7, #2] + adds r0, #1 + strh r0, [r7, #2] +_080FBA4C: + ldrh r0, [r7, #2] + cmp r0, #0x13 + bne _080FBA60 + adds r0, r2, #0 + bl sub_080A8964 + b _080FBB18 + .align 2, 0 +_080FBA5C: .4byte gUnknown_3005B68 +_080FBA60: + ldr r2, _080FBB20 + movs r1, #2 + ldrsh r0, [r7, r1] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + bne _080FBA7C + adds r0, r4, #0 + subs r0, #8 + adds r0, r3, r0 + ldr r1, _080FBB24 + str r1, [r0] +_080FBA7C: + movs r4, #2 + ldrsh r0, [r7, r4] + adds r0, r0, r2 + movs r5, #0 + ldrsb r5, [r0, r5] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r1, #4 + ldrsh r0, [r7, r1] + bl sub_080FB920 + adds r1, r0, #0 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_08089C30 + movs r4, #4 + ldrsh r0, [r7, r4] + adds r0, #0x1e + bl sub_080FB94C + ldr r6, _080FBB28 + ldr r2, [r6] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + movs r3, #3 + subs r3, r3, r5 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r0, r0, #0x12 + movs r4, #0xc0 + lsls r4, r4, #0xa + orrs r0, r4 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #1 + bl sub_0808E19C + movs r1, #4 + ldrsh r0, [r7, r1] + bl sub_080FB94C + ldr r2, [r6] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + rsbs r3, r5, #0 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r0, r0, #0x11 + ldr r4, _080FBB2C + adds r0, r0, r4 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #2 + bl sub_0808E19C + movs r1, #4 + ldrsh r0, [r7, r1] + bl sub_080FB94C + ldr r2, [r6] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + movs r4, #3 + rsbs r4, r4, #0 + adds r3, r4, #0 + subs r3, r3, r5 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r0, r0, #0x12 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #3 + bl sub_0808E19C +_080FBB18: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FBB20: .4byte gUnknown_856A47C +_080FBB24: .4byte sub_080FBB30 +_080FBB28: .4byte gUnknown_3005AEC +_080FBB2C: .4byte 0xFFFD0000 + thumb_func_end sub_080FBA1C + + thumb_func_start sub_080FBB30 +sub_080FBB30: @ 0x080FBB30 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _080FBB70 + adds r2, r0, r1 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _080FBB60 + movs r0, #0 + strh r0, [r2] + ldrh r0, [r2, #2] + adds r0, #1 + strh r0, [r2, #2] +_080FBB60: + ldrh r0, [r2, #2] + cmp r0, #0x13 + bne _080FBB74 + adds r0, r3, #0 + bl sub_080A8964 + b _080FBBC8 + .align 2, 0 +_080FBB70: .4byte gUnknown_3005B68 +_080FBB74: + ldr r1, _080FBBD4 + movs r3, #2 + ldrsh r0, [r2, r3] + adds r0, r0, r1 + movs r1, #0 + mov r8, r1 + movs r6, #0 + ldrsb r6, [r0, r6] + adds r0, r6, #0 + bl sub_08089C30 + ldr r5, _080FBBD8 + ldr r0, [r5] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r3, #3 + subs r3, r3, r6 + movs r0, #3 + str r0, [sp] + movs r0, #1 + bl sub_0808E19C + ldr r0, [r5] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + rsbs r3, r6, #0 + mov r4, r8 + subs r4, #3 + str r4, [sp] + movs r0, #2 + bl sub_0808E19C + ldr r0, [r5] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + subs r4, r4, r6 + mov r3, r8 + str r3, [sp] + movs r0, #3 + adds r3, r4, #0 + bl sub_0808E19C +_080FBBC8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBBD4: .4byte gUnknown_856A47C +_080FBBD8: .4byte gUnknown_3005AEC + thumb_func_end sub_080FBB30 + + thumb_func_start sub_080FBBDC +sub_080FBBDC: @ 0x080FBBDC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FBC00 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _080FBBF6 + b _080FBD48 +_080FBBF6: + lsls r0, r0, #2 + ldr r1, _080FBC04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FBC00: .4byte gUnknown_3005B68 +_080FBC04: .4byte _080FBC08 +_080FBC08: @ jump table + .4byte _080FBC20 @ case 0 + .4byte _080FBC58 @ case 1 + .4byte _080FBC74 @ case 2 + .4byte _080FBCC0 @ case 3 + .4byte _080FBCE4 @ case 4 + .4byte _080FBD02 @ case 5 +_080FBC20: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5a + beq _080FBC30 + b _080FBD48 +_080FBC30: + movs r0, #0 + bl sub_08089C24 + movs r0, #0 + strh r0, [r4, #2] + ldr r0, _080FBC54 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #4] + movs r0, #1 + strh r0, [r4] + movs r0, #0x31 + bl sub_080A306C + b _080FBD48 + .align 2, 0 +_080FBC54: .4byte sub_080FB968 +_080FBC58: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x96 + bne _080FBD48 + bl sub_080AE99C + movs r0, #0 + strh r0, [r4, #2] + movs r0, #2 + strh r0, [r4] + b _080FBD48 +_080FBC74: + ldrh r0, [r4, #2] + adds r3, r0, #1 + strh r3, [r4, #2] + ldr r0, _080FBCB8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080FBD48 + lsls r1, r3, #0x10 + movs r0, #0x96 + lsls r0, r0, #0x11 + cmp r1, r0 + ble _080FBD48 + strh r2, [r4, #2] + ldrb r0, [r4, #4] + bl sub_080A8964 + ldr r0, _080FBCBC + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #6] + movs r0, #3 + strh r0, [r4] + movs r0, #0x32 + bl sub_080A306C + b _080FBD48 + .align 2, 0 +_080FBCB8: .4byte gUnknown_2037C74 +_080FBCBC: .4byte sub_080FBA1C +_080FBCC0: + ldr r2, _080FBCE0 + movs r0, #6 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r5, [r0, #4] + cmp r5, #0 + bne _080FBD48 + bl sub_08089C48 + strh r5, [r4, #2] + movs r0, #4 + strh r0, [r4] + b _080FBD48 + .align 2, 0 +_080FBCE0: .4byte gUnknown_3005B60 +_080FBCE4: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5a + bne _080FBD48 + movs r0, #0x33 + bl sub_080A306C + movs r0, #0 + strh r0, [r4, #2] + movs r0, #5 + strh r0, [r4] + b _080FBD48 +_080FBD02: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x78 + bne _080FBD48 + movs r2, #0x82 + lsls r2, r2, #2 + movs r0, #0xb + movs r1, #8 + bl sub_08087C54 + movs r2, #0x84 + lsls r2, r2, #2 + movs r0, #0xb + movs r1, #9 + bl sub_08087C54 + movs r2, #0x86 + lsls r2, r2, #2 + movs r0, #0xb + movs r1, #0xa + bl sub_08087C54 + bl sub_08089598 + movs r0, #0x34 + bl sub_080A306C + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080987E8 +_080FBD48: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FBBDC + + thumb_func_start sub_080FBD50 +sub_080FBD50: @ 0x080FBD50 + push {lr} + sub sp, #4 + ldr r2, _080FBD98 + movs r0, #0xb + movs r1, #8 + bl sub_08087C54 + ldr r2, _080FBD9C + movs r0, #0xb + movs r1, #9 + bl sub_08087C54 + ldr r2, _080FBDA0 + movs r0, #0xb + movs r1, #0xa + bl sub_08087C54 + bl sub_08089598 + bl sub_080987DC + movs r0, #0 + str r0, [sp] + ldr r1, _080FBDA4 + ldr r2, _080FBDA8 + mov r0, sp + bl CpuFastSet + ldr r0, _080FBDAC + movs r1, #0xa + bl sub_080A8878 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_080FBD98: .4byte 0x0000020D +_080FBD9C: .4byte 0x00000215 +_080FBDA0: .4byte 0x0000021D +_080FBDA4: .4byte gUnknown_20377B4 +_080FBDA8: .4byte 0x01000100 +_080FBDAC: .4byte sub_080FBBDC + thumb_func_end sub_080FBD50 + + thumb_func_start sub_080FBDB0 +sub_080FBDB0: @ 0x080FBDB0 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r0, _080FBE04 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080FBDFA + ldr r4, _080FBE08 + ldr r0, [r4] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #3 + str r0, [sp] + movs r0, #1 + movs r3, #3 + bl sub_0808E19C + ldr r0, [r4] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r5, #3 + rsbs r5, r5, #0 + str r5, [sp] + movs r0, #2 + movs r3, #0 + bl sub_0808E19C + ldr r0, [r4] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + str r6, [sp] + movs r0, #3 + adds r3, r5, #0 + bl sub_0808E19C +_080FBDFA: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FBE04: .4byte sub_080FBBDC +_080FBE08: .4byte gUnknown_3005AEC + thumb_func_end sub_080FBDB0 + + thumb_func_start sub_080FBE0C +sub_080FBE0C: @ 0x080FBE0C + push {r4, r5, r6, lr} + sub sp, #0xc + mov r4, sp + adds r4, #5 + mov r5, sp + adds r5, #6 + add r6, sp, #8 + add r0, sp, #4 + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0813806C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FBE4E + add r0, sp, #4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r4, r1] + movs r2, #1 + rsbs r2, r2, #0 + movs r3, #0 + ldrsb r3, [r5, r3] + movs r4, #0 + ldrsb r4, [r6, r4] + str r4, [sp] + bl sub_08084554 + movs r0, #1 + b _080FBE50 +_080FBE4E: + movs r0, #0 +_080FBE50: + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080FBE0C + + thumb_func_start sub_080FBE58 +sub_080FBE58: @ 0x080FBE58 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FBE88 + adds r4, r0, r1 + ldr r0, _080FBE8C + bl sub_0809CF20 + adds r7, r0, #0 + ldr r0, _080FBE90 + ldr r3, [r0] + adds r6, r3, #4 + movs r0, #0 + ldrsh r2, [r4, r0] + cmp r2, #1 + beq _080FBEB8 + cmp r2, #1 + bgt _080FBE94 + cmp r2, #0 + beq _080FBE9E + b _080FBF52 + .align 2, 0 +_080FBE88: .4byte gUnknown_3005B68 +_080FBE8C: .4byte 0x000040B4 +_080FBE90: .4byte gUnknown_3005AEC +_080FBE94: + cmp r2, #2 + beq _080FBEFA + cmp r2, #3 + beq _080FBF34 + b _080FBF52 +_080FBE9E: + ldr r0, _080FBEB4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080FBF52 + strh r2, [r4, #2] + movs r0, #2 + strh r0, [r4] + b _080FBF52 + .align 2, 0 +_080FBEB4: .4byte gUnknown_2037C74 +_080FBEB8: + ldr r0, _080FBEEC + ldrh r1, [r0, #0x2e] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080FBEC6 + strh r2, [r4, #2] +_080FBEC6: + ldrb r1, [r6, #1] + ldrb r2, [r3, #4] + movs r0, #0xff + bl sub_080D2BE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FBF52 + movs r0, #1 + bl sub_08138030 + cmp r0, #1 + bne _080FBEF6 + ldrh r0, [r7] + cmp r0, #2 + bne _080FBEF0 + movs r0, #9 + b _080FBEF2 + .align 2, 0 +_080FBEEC: .4byte gUnknown_3002360 +_080FBEF0: + movs r0, #0xa +_080FBEF2: + strh r0, [r7] + b _080FBF02 +_080FBEF6: + movs r0, #2 + strh r0, [r4] +_080FBEFA: + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FBF08 +_080FBF02: + movs r0, #3 + strh r0, [r4] + b _080FBF52 +_080FBF08: + ldrh r0, [r7] + cmp r0, #2 + bne _080FBF1C + ldrb r1, [r6, #1] + ldrb r2, [r6] + ldr r3, _080FBF18 + b _080FBF22 + .align 2, 0 +_080FBF18: .4byte gUnknown_856A48F +_080FBF1C: + ldrb r1, [r6, #1] + ldrb r2, [r6] + ldr r3, _080FBF30 +_080FBF22: + movs r0, #0xff + bl sub_080D2B88 + movs r0, #1 + strh r0, [r4] + b _080FBF52 + .align 2, 0 +_080FBF30: .4byte gUnknown_856A491 +_080FBF34: + ldr r0, _080FBF58 + bl sub_0809D040 + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809D040 + movs r0, #0 + bl sub_0808461C + bl sub_080AF068 + adds r0, r5, #0 + bl sub_080A8964 +_080FBF52: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FBF58: .4byte 0x00004001 + thumb_func_end sub_080FBE58 + + thumb_func_start sub_080FBF5C +sub_080FBF5C: @ 0x080FBF5C + push {r4, lr} + sub sp, #4 + ldr r1, _080FBFB0 + movs r0, #0 + str r0, [sp] + movs r0, #0x8c + movs r2, #0x70 + movs r3, #0x50 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FBFB4 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r4, r1, r2 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080FBFB8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bne _080FBFBC + movs r0, #4 + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + b _080FBFCE + .align 2, 0 +_080FBFB0: .4byte sub_08007140 +_080FBFB4: .4byte gUnknown_20205AC +_080FBFB8: .4byte 0x000040B4 +_080FBFBC: + movs r0, #3 + bl sub_080922CC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 +_080FBFCE: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FBF5C + + thumb_func_start sub_080FBFD8 +sub_080FBFD8: @ 0x080FBFD8 + push {lr} + bl sub_080FBF5C + ldr r2, _080FC008 + ldr r0, _080FC00C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + bl sub_080AE99C + ldr r0, _080FC010 + movs r1, #0x50 + bl sub_080A8878 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_080FC008: .4byte gUnknown_2036FF0 +_080FC00C: .4byte gUnknown_2037230 +_080FC010: .4byte sub_080FBE58 + thumb_func_end sub_080FBFD8 + + thumb_func_start sub_080FC014 +sub_080FC014: @ 0x080FC014 + push {lr} + ldr r0, _080FC04C + bl sub_0809D018 + ldr r0, _080FC050 + bl sub_0809D018 + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809D018 + ldr r0, _080FC054 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + bl sub_080FBE0C + bl sub_080AF1B4 + pop {r0} + bx r0 + .align 2, 0 +_080FC04C: .4byte 0x0000088D +_080FC050: .4byte 0x00004001 +_080FC054: .4byte gUnknown_3005AEC + thumb_func_end sub_080FC014 + + thumb_func_start sub_080FC058 +sub_080FC058: @ 0x080FC058 + push {lr} + ldr r0, _080FC06C + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0x86 + lsls r0, r0, #1 + cmp r1, r0 + bne _080FC070 + movs r0, #1 + b _080FC082 + .align 2, 0 +_080FC06C: .4byte gUnknown_3005AEC +_080FC070: + ldr r0, _080FC07C + cmp r1, r0 + beq _080FC080 + movs r0, #0 + b _080FC082 + .align 2, 0 +_080FC07C: .4byte 0x0000081D +_080FC080: + movs r0, #2 +_080FC082: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FC058 + + thumb_func_start sub_080FC088 +sub_080FC088: @ 0x080FC088 + push {r4, r5, r6, lr} + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809CF20 + adds r5, r0, #0 + movs r3, #0 + ldr r4, _080FC0BC + ldrb r0, [r4] + cmp r3, r0 + bge _080FC0B4 + ldr r6, _080FC0C0 +_080FC0A0: + adds r2, r5, r3 + ldr r1, [r6] + lsls r0, r3, #3 + adds r0, r0, r1 + ldrb r0, [r0, #5] + strb r0, [r2] + adds r3, #1 + ldrb r0, [r4] + cmp r3, r0 + blt _080FC0A0 +_080FC0B4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FC0BC: .4byte gUnknown_2039D14 +_080FC0C0: .4byte gUnknown_2039D10 + thumb_func_end sub_080FC088 + + thumb_func_start sub_080FC0C4 +sub_080FC0C4: @ 0x080FC0C4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809CF20 + adds r0, r0, r4 + ldrb r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FC0C4 + + thumb_func_start sub_080FC0E0 +sub_080FC0E0: @ 0x080FC0E0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x80 + lsls r0, r0, #7 + bl sub_0809CF20 + adds r0, r0, r4 + strb r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080FC0E0 + + thumb_func_start sub_080FC100 +sub_080FC100: @ 0x080FC100 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080FC0C4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r4, #1 + bne _080FC124 + cmp r1, #0 + beq _080FC120 + subs r0, r1, #1 + lsls r0, r0, #0x18 + b _080FC12E +_080FC120: + movs r1, #3 + b _080FC130 +_080FC124: + adds r1, #1 + lsls r1, r1, #0x18 + movs r0, #0xc0 + lsls r0, r0, #0x12 + ands r0, r1 +_080FC12E: + lsrs r1, r0, #0x18 +_080FC130: + adds r0, r5, #0 + bl sub_080FC0E0 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080FC100 + + thumb_func_start sub_080FC13C +sub_080FC13C: @ 0x080FC13C + push {lr} + bl sub_080FC058 + cmp r0, #1 + beq _080FC150 + cmp r0, #1 + ble _080FC184 + cmp r0, #2 + beq _080FC168 + b _080FC184 +_080FC150: + ldr r1, _080FC15C + ldr r0, _080FC160 + str r0, [r1] + ldr r1, _080FC164 + movs r0, #8 + b _080FC172 + .align 2, 0 +_080FC15C: .4byte gUnknown_2039D10 +_080FC160: .4byte gUnknown_856A494 +_080FC164: .4byte gUnknown_2039D14 +_080FC168: + ldr r1, _080FC188 + ldr r0, _080FC18C + str r0, [r1] + ldr r1, _080FC190 + movs r0, #0xb +_080FC172: + strb r0, [r1] + movs r1, #0 + ldr r3, _080FC194 + movs r2, #0x40 +_080FC17A: + adds r0, r1, r3 + strb r2, [r0] + adds r1, #1 + cmp r1, #0xa + bls _080FC17A +_080FC184: + pop {r0} + bx r0 + .align 2, 0 +_080FC188: .4byte gUnknown_2039D10 +_080FC18C: .4byte gUnknown_856A4D4 +_080FC190: .4byte gUnknown_2039D14 +_080FC194: .4byte gUnknown_2039D04 + thumb_func_end sub_080FC13C + + thumb_func_start sub_080FC198 +sub_080FC198: @ 0x080FC198 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + ldr r0, _080FC25C + ldr r2, [r0] + ldrh r1, [r2] + subs r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r1, #0x11 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + ldrh r1, [r2, #2] + subs r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r1, #0xe + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + movs r5, #0 + ldr r0, _080FC260 + ldrb r0, [r0] + cmp r5, r0 + bhs _080FC24A + lsls r0, r2, #0x10 + asrs r7, r0, #0x10 + lsls r0, r3, #0x10 + asrs r6, r0, #0x10 +_080FC1E6: + ldr r0, _080FC264 + ldr r0, [r0] + lsls r1, r5, #3 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r1, #2] + adds r0, #7 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r7, r1 + bgt _080FC23C + mov r3, r8 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + blt _080FC23C + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + cmp r6, r1 + bgt _080FC23C + mov r2, sb + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + blt _080FC23C + ldr r0, _080FC268 + adds r4, r5, r0 + ldrb r0, [r4] + cmp r0, #0x40 + bne _080FC23C + ldr r3, [sp] + lsls r1, r3, #0x10 + mov r0, sl + lsls r2, r0, #0x10 + adds r0, r5, #0 + asrs r1, r1, #0x10 + asrs r2, r2, #0x10 + bl sub_080FC26C + strb r0, [r4] +_080FC23C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080FC260 + ldrb r0, [r0] + cmp r5, r0 + blo _080FC1E6 +_080FC24A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC25C: .4byte gUnknown_3005AEC +_080FC260: .4byte gUnknown_2039D14 +_080FC264: .4byte gUnknown_2039D10 +_080FC268: .4byte gUnknown_2039D04 + thumb_func_end sub_080FC198 + + thumb_func_start sub_080FC26C +sub_080FC26C: @ 0x080FC26C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + ldr r0, _080FC29C + lsls r1, r6, #3 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4, #4] + cmp r0, #0 + beq _080FC294 + cmp r0, #4 + bne _080FC2A4 +_080FC294: + mov r1, sp + ldr r0, _080FC2A0 + b _080FC2A8 + .align 2, 0 +_080FC29C: .4byte gUnknown_2039D10 +_080FC2A0: .4byte gUnknown_856DBC4 +_080FC2A4: + mov r1, sp + ldr r0, _080FC33C +_080FC2A8: + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + mov r2, sp + ldrb r0, [r4, #4] + movs r3, #0x98 + lsls r3, r3, #5 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r2] + mov r0, sp + movs r1, #0 + movs r2, #0 + movs r3, #0x94 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _080FC344 + ldrh r0, [r4] + adds r0, #7 + ldrh r1, [r4, #2] + adds r1, #7 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r2, _080FC340 + adds r4, r4, r2 + strh r6, [r4, #0x2e] + movs r2, #0x3e + adds r2, r2, r4 + mov ip, r2 + ldrb r2, [r2] + movs r3, #2 + orrs r2, r3 + mov r3, ip + strb r2, [r3] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r7, #0x10 + asrs r2, r2, #0x10 + adds r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r3, r8 + lsls r2, r3, #0x10 + asrs r2, r2, #0x10 + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + bl sub_08092960 + adds r0, r4, #0 + bl sub_080FC3D4 + adds r0, r6, #0 + bl sub_080FC0C4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007F70 + adds r0, r5, #0 + b _080FC346 + .align 2, 0 +_080FC33C: .4byte gUnknown_856DBAC +_080FC340: .4byte gUnknown_20205AC +_080FC344: + movs r0, #0x40 +_080FC346: + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FC26C + + thumb_func_start sub_080FC354 +sub_080FC354: @ 0x080FC354 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrh r0, [r6, #0x30] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r6, #0x32] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, r4, #0 + adds r0, r6, #0 + bl sub_080FC3D4 + cmp r5, #1 + bne _080FC39A + adds r0, r4, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0811A988 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _080FC38A + adds r0, r4, #0 + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080FC38A: + movs r0, #0x30 + bl sub_080A306C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08007F70 + b _080FC3C8 +_080FC39A: + cmp r5, #2 + bne _080FC3C8 + adds r0, r7, #0 + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0811A988 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _080FC3BA + adds r0, r4, #0 + adds r0, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_080FC3BA: + movs r0, #0x30 + bl sub_080A306C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08007F70 +_080FC3C8: + movs r0, #0 + strh r0, [r6, #0x30] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FC354 + + thumb_func_start sub_080FC3D4 +sub_080FC3D4: @ 0x080FC3D4 + push {r4, r5, r6, lr} + mov ip, r0 + mov r4, ip + adds r4, #0x3e + ldrb r0, [r4] + movs r5, #5 + rsbs r5, r5, #0 + ands r5, r0 + strb r5, [r4] + mov r0, ip + ldrh r1, [r0, #0x24] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + adds r0, #0x28 + movs r2, #0 + ldrsb r2, [r0, r2] + ldr r0, _080FC468 + adds r2, r2, r1 + ldrh r0, [r0] + adds r2, r2, r0 + lsls r2, r2, #0x10 + mov r3, ip + ldrh r1, [r3, #0x26] + ldrh r0, [r3, #0x22] + adds r1, r1, r0 + mov r0, ip + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r3, _080FC46C + adds r0, r0, r1 + ldrh r3, [r3] + adds r0, r0, r3 + lsls r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #0xf + adds r1, r2, r3 + lsrs r1, r1, #0x10 + lsrs r6, r0, #0x10 + adds r0, r0, r3 + lsrs r3, r0, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0xff + bgt _080FC43A + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080FC442 +_080FC43A: + movs r1, #4 + adds r0, r5, #0 + orrs r0, r1 + strb r0, [r4] +_080FC442: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xaf + bgt _080FC456 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _080FC462 +_080FC456: + mov r0, ip + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080FC462: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FC468: .4byte gUnknown_2021B38 +_080FC46C: .4byte gUnknown_2021B3A + thumb_func_end sub_080FC3D4 + + thumb_func_start sub_080FC470 +sub_080FC470: @ 0x080FC470 + push {lr} + ldr r0, _080FC47C + bl sub_08008254 + pop {r0} + bx r0 + .align 2, 0 +_080FC47C: .4byte gUnknown_856D93C + thumb_func_end sub_080FC470 + + thumb_func_start sub_080FC480 +sub_080FC480: @ 0x080FC480 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080FC4B4 + ldr r2, [r0] + ldrh r1, [r2] + subs r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r1, #0x11 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + ldrh r1, [r2, #2] + subs r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r1, #0xe + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r6, #0 + b _080FC526 + .align 2, 0 +_080FC4B4: .4byte gUnknown_3005AEC +_080FC4B8: + ldr r0, _080FC53C + ldr r0, [r0] + lsls r1, r6, #3 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r1, #2] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _080FC540 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, #0x40 + beq _080FC524 + lsls r0, r2, #0x10 + mov r2, sl + lsls r1, r2, #0x10 + asrs r2, r0, #0x10 + cmp r0, r1 + blt _080FC504 + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r2, r0 + bgt _080FC504 + lsls r0, r3, #0x10 + mov r2, r8 + lsls r1, r2, #0x10 + asrs r2, r0, #0x10 + cmp r0, r1 + blt _080FC504 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r2, r0 + ble _080FC524 +_080FC504: + ldr r0, _080FC540 + adds r5, r6, r0 + ldrb r0, [r5] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080FC544 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + movs r0, #0x40 + strb r0, [r5] +_080FC524: + adds r6, #1 +_080FC526: + ldr r0, _080FC548 + ldrb r0, [r0] + cmp r6, r0 + blt _080FC4B8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FC53C: .4byte gUnknown_2039D10 +_080FC540: .4byte gUnknown_2039D04 +_080FC544: .4byte gUnknown_20205AC +_080FC548: .4byte gUnknown_2039D14 + thumb_func_end sub_080FC480 + + thumb_func_start sub_080FC54C +sub_080FC54C: @ 0x080FC54C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r1, #1 + bne _080FC56C + ldr r0, _080FC568 + mov sl, r0 + b _080FC578 + .align 2, 0 +_080FC568: .4byte gUnknown_856DC3C +_080FC56C: + cmp r1, #2 + beq _080FC574 +_080FC570: + movs r0, #0 + b _080FC608 +_080FC574: + ldr r1, _080FC618 + mov sl, r1 +_080FC578: + adds r0, r4, #0 + bl sub_080FC0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r0, _080FC61C + ldr r1, [r0] + lsls r0, r4, #3 + adds r0, r0, r1 + ldrb r2, [r0, #4] + ldrh r1, [r0] + adds r1, #7 + ldrh r0, [r0, #2] + adds r0, #7 + movs r3, #0 + lsls r2, r2, #3 + str r2, [sp, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov sb, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 +_080FC5A8: + movs r6, #0 + ldr r2, [sp] + adds r7, r2, r3 + lsls r0, r3, #1 + adds r5, r7, #0 + ldr r1, [sp, #4] + adds r0, r0, r1 + ldr r2, _080FC620 + adds r4, r0, r2 +_080FC5BA: + adds r0, r5, #0 + cmp r5, #0 + bge _080FC5C2 + adds r0, r7, #3 +_080FC5C2: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r5, r0 + lsls r0, r0, #1 + adds r0, r0, r6 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrb r0, [r4] + cmp r0, #0 + beq _080FC5F8 + lsls r1, r1, #2 + add r1, sl + movs r0, #0 + ldrsb r0, [r1, r0] + add r0, sb + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + add r1, r8 + str r3, [sp, #8] + bl sub_08087B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [sp, #8] + cmp r0, #1 + beq _080FC570 +_080FC5F8: + adds r4, #1 + adds r6, #1 + cmp r6, #1 + ble _080FC5BA + adds r3, #1 + cmp r3, #3 + ble _080FC5A8 + movs r0, #1 +_080FC608: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC618: .4byte gUnknown_856DC1C +_080FC61C: .4byte gUnknown_2039D10 +_080FC620: .4byte gUnknown_856DC5C + thumb_func_end sub_080FC54C + + thumb_func_start sub_080FC624 +sub_080FC624: @ 0x080FC624 + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r4, r4, #0x18 + lsrs r5, r4, #0x18 + lsrs r4, r4, #0x19 + movs r0, #1 + ands r5, r0 + adds r0, r6, #0 + bl sub_080FC0C4 + subs r4, r4, r0 + adds r1, r4, #4 + adds r0, r1, #0 + cmp r1, #0 + bge _080FC64A + adds r0, r4, #7 +_080FC64A: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + ldr r1, _080FC670 + ldr r2, [r1] + lsls r1, r6, #3 + adds r1, r1, r2 + ldrb r1, [r1, #4] + ldr r2, _080FC674 + lsls r0, r0, #0x18 + asrs r0, r0, #0x17 + adds r0, r0, r5 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_080FC670: .4byte gUnknown_2039D10 +_080FC674: .4byte gUnknown_856DC5C + thumb_func_end sub_080FC624 + + thumb_func_start sub_080FC678 +sub_080FC678: @ 0x080FC678 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _080FC6A4 + adds r2, r3, r0 + ldrb r0, [r2] + cmp r0, #0x40 + beq _080FC69C + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080FC6A8 + adds r4, r4, r0 + strh r1, [r4, #0x30] + adds r0, r3, #0 + bl sub_080FC0C4 + strh r0, [r4, #0x32] +_080FC69C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FC6A4: .4byte gUnknown_2039D04 +_080FC6A8: .4byte gUnknown_20205AC + thumb_func_end sub_080FC678 + + thumb_func_start sub_080FC6AC +sub_080FC6AC: @ 0x080FC6AC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r0, #2 + bne _080FC6C8 + ldr r3, _080FC6C4 + b _080FC6EA + .align 2, 0 +_080FC6C4: .4byte gUnknown_856DBDC +_080FC6C8: + cmp r0, #1 + bne _080FC6D4 + ldr r3, _080FC6D0 + b _080FC6EA + .align 2, 0 +_080FC6D0: .4byte gUnknown_856DBEC +_080FC6D4: + cmp r0, #3 + bne _080FC6E0 + ldr r3, _080FC6DC + b _080FC6EA + .align 2, 0 +_080FC6DC: .4byte gUnknown_856DBFC +_080FC6E0: + cmp r3, #4 + beq _080FC6E8 + movs r0, #0xff + b _080FC6F8 +_080FC6E8: + ldr r3, _080FC6FC +_080FC6EA: + lsls r0, r2, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + asrs r0, r0, #0xe + adds r0, r0, r1 + adds r0, r3, r0 + ldrb r0, [r0] +_080FC6F8: + pop {r1} + bx r1 + .align 2, 0 +_080FC6FC: .4byte gUnknown_856DC0C + thumb_func_end sub_080FC6AC + + thumb_func_start sub_080FC700 +sub_080FC700: @ 0x080FC700 + push {lr} + bl sub_080FC058 + cmp r0, #0 + beq _080FC712 + bl sub_080FC13C + bl sub_080FC088 +_080FC712: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FC700 + + thumb_func_start sub_080FC718 +sub_080FC718: @ 0x080FC718 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + bl sub_080FC058 + cmp r0, #0 + beq _080FC73A + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + bl sub_080FC198 + bl sub_080FC480 +_080FC73A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080FC718 + + thumb_func_start sub_080FC740 +sub_080FC740: @ 0x080FC740 + push {lr} + bl sub_080FC058 + cmp r0, #0 + beq _080FC75A + bl sub_080FC470 + bl sub_080FC13C + movs r0, #0 + movs r1, #0 + bl sub_080FC198 +_080FC75A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FC740 + + thumb_func_start sub_080FC760 +sub_080FC760: @ 0x080FC760 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + bl sub_080FC058 + cmp r0, #0 + bne _080FC794 + b _080FC832 +_080FC782: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080FC678 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080FC100 + b _080FC832 +_080FC794: + movs r6, #0 + ldr r0, _080FC820 + ldrb r0, [r0] + cmp r6, r0 + bge _080FC832 + lsls r0, r4, #0x10 + asrs r7, r0, #0x10 +_080FC7A2: + ldr r0, _080FC824 + ldr r1, [r0] + lsls r0, r6, #3 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #7 + ldrh r0, [r0, #2] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + subs r0, r4, #2 + cmp r0, r7 + bgt _080FC828 + adds r0, r4, #1 + cmp r7, r0 + bgt _080FC828 + lsls r0, r2, #0x10 + asrs r3, r0, #0x10 + subs r1, r3, #2 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + cmp r1, r2 + bgt _080FC828 + adds r0, r3, #1 + cmp r2, r0 + bgt _080FC828 + subs r1, r7, r4 + adds r1, #2 + subs r2, r2, r3 + adds r2, #2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, sb + bl sub_080FC6AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080FC828 + lsrs r5, r0, #4 + movs r1, #0xf + ands r1, r0 + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080FC624 + cmp r0, #0 + beq _080FC828 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080FC54C + cmp r0, #0 + bne _080FC782 + movs r0, #1 + b _080FC834 + .align 2, 0 +_080FC820: .4byte gUnknown_2039D14 +_080FC824: .4byte gUnknown_2039D10 +_080FC828: + adds r6, #1 + ldr r0, _080FC840 + ldrb r0, [r0] + cmp r6, r0 + blt _080FC7A2 +_080FC832: + movs r0, #0 +_080FC834: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC840: .4byte gUnknown_2039D14 + thumb_func_end sub_080FC760 + + thumb_func_start sub_080FC844 +sub_080FC844: @ 0x080FC844 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + bl sub_080FC058 + cmp r0, #0 + bne _080FC86A + b _080FC8FA +_080FC866: + movs r0, #1 + b _080FC8FC +_080FC86A: + movs r6, #0 + ldr r0, _080FC908 + ldrb r0, [r0] + cmp r6, r0 + bge _080FC8FA + lsls r0, r4, #0x10 + asrs r7, r0, #0x10 +_080FC878: + ldr r0, _080FC90C + ldr r1, [r0] + lsls r0, r6, #3 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #7 + ldrh r0, [r0, #2] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + asrs r4, r1, #0x10 + subs r0, r4, #2 + cmp r0, r7 + bgt _080FC8F0 + adds r0, r4, #1 + cmp r7, r0 + bgt _080FC8F0 + lsls r0, r2, #0x10 + asrs r3, r0, #0x10 + subs r1, r3, #2 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + cmp r1, r2 + bgt _080FC8F0 + adds r0, r3, #1 + cmp r2, r0 + bgt _080FC8F0 + subs r1, r7, r4 + adds r1, #2 + subs r2, r2, r3 + adds r2, #2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, sb + bl sub_080FC6AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080FC8F0 + lsrs r5, r0, #4 + movs r1, #0xf + ands r1, r0 + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080FC624 + cmp r0, #0 + beq _080FC8F0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080FC54C + cmp r0, #0 + beq _080FC866 +_080FC8F0: + adds r6, #1 + ldr r0, _080FC908 + ldrb r0, [r0] + cmp r6, r0 + blt _080FC878 +_080FC8FA: + movs r0, #0 +_080FC8FC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_080FC908: .4byte gUnknown_2039D14 +_080FC90C: .4byte gUnknown_2039D10 + thumb_func_end sub_080FC844 + + thumb_func_start sub_080FC910 +sub_080FC910: @ 0x080FC910 + push {lr} + ldr r0, _080FC920 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_080FC920: .4byte 0x0000088C + thumb_func_end sub_080FC910 + + thumb_func_start sub_080FC924 +sub_080FC924: @ 0x080FC924 + push {lr} + ldr r0, _080FC930 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_080FC930: .4byte 0x0000088C + thumb_func_end sub_080FC924 + + thumb_func_start sub_080FC934 +sub_080FC934: @ 0x080FC934 + push {lr} + ldr r0, _080FC940 + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_080FC940: .4byte 0x0000088C + thumb_func_end sub_080FC934 + + thumb_func_start sub_080FC944 +sub_080FC944: @ 0x080FC944 + push {lr} + movs r0, #0x11 + bl sub_0808414C + bl sub_080FC924 + bl sub_080FCAB4 + ldr r1, _080FC974 + movs r0, #0x1e + strb r0, [r1] + ldr r1, _080FC978 + movs r2, #0xfa + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _080FC97C + movs r1, #0 + strb r1, [r0] + ldr r0, _080FC980 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080FC974: .4byte gUnknown_2039D18 +_080FC978: .4byte gUnknown_2039D1A +_080FC97C: .4byte gUnknown_2039D1C +_080FC980: .4byte gUnknown_2039D1D + thumb_func_end sub_080FC944 + + thumb_func_start sub_080FC984 +sub_080FC984: @ 0x080FC984 + push {lr} + ldr r0, _080FC9AC + ldrb r0, [r0] + ldr r1, _080FC9B0 + ldrb r1, [r1] + bl sub_080EEF6C + bl sub_080FC934 + bl sub_080FCAB4 + ldr r1, _080FC9B4 + movs r0, #0 + strb r0, [r1] + ldr r1, _080FC9B8 + movs r0, #0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080FC9AC: .4byte gUnknown_2039D1C +_080FC9B0: .4byte gUnknown_2039D1D +_080FC9B4: .4byte gUnknown_2039D18 +_080FC9B8: .4byte gUnknown_2039D1A + thumb_func_end sub_080FC984 + + thumb_func_start sub_080FC9BC +sub_080FC9BC: @ 0x080FC9BC + push {lr} + bl sub_080FC910 + cmp r0, #0 + beq _080FC9D8 + bl sub_080FCCF0 + ldr r1, _080FC9DC + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080FC9E0 +_080FC9D8: + movs r0, #0 + b _080FC9E8 + .align 2, 0 +_080FC9DC: .4byte gUnknown_2039D1A +_080FC9E0: + ldr r0, _080FC9EC + bl sub_08098880 + movs r0, #1 +_080FC9E8: + pop {r1} + bx r1 + .align 2, 0 +_080FC9EC: .4byte gUnknown_82623E8 + thumb_func_end sub_080FC9BC + + thumb_func_start sub_080FC9F0 +sub_080FC9F0: @ 0x080FC9F0 + push {lr} + ldr r0, _080FC9FC + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_080FC9FC: .4byte gUnknown_82623CD + thumb_func_end sub_080FC9F0 + + thumb_func_start sub_080FCA00 +sub_080FCA00: @ 0x080FCA00 + push {lr} + ldr r1, _080FCA30 + ldr r0, _080FCA34 + ldrb r0, [r0, #0x1f] + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + ldr r2, _080FCA38 + ldrb r0, [r2] + cmp r0, #7 + bne _080FCA1E + ldr r1, _080FCA3C + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_080FCA1E: + ldr r0, _080FCA40 + ldrb r0, [r0] + cmp r0, #0 + beq _080FCA48 + ldr r0, _080FCA44 + bl sub_08000540 + b _080FCA8C + .align 2, 0 +_080FCA30: .4byte gUnknown_2039D1D +_080FCA34: .4byte gUnknown_3005A70 +_080FCA38: .4byte gUnknown_2023FDE +_080FCA3C: .4byte gUnknown_2039D1C +_080FCA40: .4byte gUnknown_2039D18 +_080FCA44: .4byte sub_08085A30 +_080FCA48: + ldrb r0, [r2] + cmp r0, #8 + bne _080FCA78 + ldr r0, _080FCA68 + bl sub_080988D8 + bl sub_08084540 + ldr r1, _080FCA6C + ldr r0, _080FCA70 + str r0, [r1] + ldr r0, _080FCA74 + bl sub_08000540 + b _080FCA8C + .align 2, 0 +_080FCA68: .4byte gUnknown_82623AA +_080FCA6C: .4byte gUnknown_3005B0C +_080FCA70: .4byte sub_080AEFEC +_080FCA74: .4byte sub_08085934 +_080FCA78: + cmp r0, #7 + bne _080FCA8C + ldr r0, _080FCA90 + bl sub_08098880 + bl sub_080988B8 + ldr r0, _080FCA94 + bl sub_08000540 +_080FCA8C: + pop {r0} + bx r0 + .align 2, 0 +_080FCA90: .4byte gUnknown_82623F9 +_080FCA94: .4byte sub_08085B34 + thumb_func_end sub_080FCA00 + + thumb_func_start sub_080FCA98 +sub_080FCA98: @ 0x080FCA98 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + ldr r1, _080FCAB0 + adds r0, r0, r1 + movs r1, #0 + movs r2, #0x10 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_080FCAB0: .4byte gUnknown_2039D20 + thumb_func_end sub_080FCA98 + + thumb_func_start sub_080FCAB4 +sub_080FCAB4: @ 0x080FCAB4 + push {lr} + ldr r0, _080FCAC4 + movs r1, #0 + movs r2, #0xa0 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_080FCAC4: .4byte gUnknown_2039D20 + thumb_func_end sub_080FCAB4 + + thumb_func_start sub_080FCAC8 +sub_080FCAC8: @ 0x080FCAC8 + push {r4, r5, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + movs r5, #0 +_080FCADA: + ldr r0, _080FCB20 + ldr r2, [r0] + ldr r1, _080FCB24 + lsls r0, r5, #4 + adds r3, r0, r1 + movs r1, #5 + ldrsb r1, [r2, r1] + movs r0, #4 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _080FCB34 + mov r0, sp + movs r2, #0 + ldrsh r1, [r3, r2] + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _080FCB34 + movs r0, #2 + ldrsh r1, [r3, r0] + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _080FCB34 + ldr r0, _080FCB28 + strh r5, [r0] + ldr r1, _080FCB2C + ldrb r0, [r3, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _080FCB30 + bl sub_080088B8 + b _080FCB46 + .align 2, 0 +_080FCB20: .4byte gUnknown_3005AEC +_080FCB24: .4byte gUnknown_2039D20 +_080FCB28: .4byte gUnknown_2037290 +_080FCB2C: .4byte gUnknown_8592078 +_080FCB30: .4byte gUnknown_2021C40 +_080FCB34: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #9 + bls _080FCADA + ldr r1, _080FCB50 + ldr r2, _080FCB54 + adds r0, r2, #0 + strh r0, [r1] +_080FCB46: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCB50: .4byte gUnknown_2037290 +_080FCB54: .4byte 0x0000FFFF + thumb_func_end sub_080FCAC8 + + thumb_func_start sub_080FCB58 +sub_080FCB58: @ 0x080FCB58 + push {r4, r5, r6, r7, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + movs r5, #0 + adds r6, r4, #0 + ldr r0, _080FCBC8 + ldr r7, [r0] + mov r4, sp + ldr r0, _080FCBCC + mov ip, r0 +_080FCB76: + lsls r0, r5, #4 + mov r1, ip + adds r3, r0, r1 + movs r1, #5 + ldrsb r1, [r7, r1] + movs r0, #4 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _080FCBD4 + ldrh r0, [r4] + ldrh r1, [r3] + subs r0, r0, r1 + strh r0, [r4] + adds r2, r6, #0 + ldrh r0, [r2] + ldrh r1, [r3, #2] + subs r0, r0, r1 + strh r0, [r2] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _080FCBA6 + rsbs r0, r0, #0 + strh r0, [r4] +_080FCBA6: + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, #0 + bge _080FCBB2 + rsbs r0, r0, #0 + strh r0, [r2] +_080FCBB2: + movs r2, #0 + ldrsh r0, [r4, r2] + movs r2, #0 + ldrsh r1, [r6, r2] + adds r0, r0, r1 + cmp r0, #5 + bgt _080FCBD4 + ldr r0, _080FCBD0 + strh r5, [r0] + b _080FCBE6 + .align 2, 0 +_080FCBC8: .4byte gUnknown_3005AEC +_080FCBCC: .4byte gUnknown_2039D20 +_080FCBD0: .4byte gUnknown_2037290 +_080FCBD4: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #9 + bls _080FCB76 + ldr r1, _080FCBF0 + ldr r2, _080FCBF4 + adds r0, r2, #0 + strh r0, [r1] +_080FCBE6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCBF0: .4byte gUnknown_2037290 +_080FCBF4: .4byte 0x0000FFFF + thumb_func_end sub_080FCB58 + + thumb_func_start sub_080FCBF8 +sub_080FCBF8: @ 0x080FCBF8 + push {lr} + bl sub_080FCAC8 + ldr r2, _080FCC14 + ldrh r1, [r2] + ldr r0, _080FCC18 + cmp r1, r0 + beq _080FCC20 + adds r0, r1, #0 + lsls r0, r0, #4 + ldr r1, _080FCC1C + adds r0, r0, r1 + b _080FCC22 + .align 2, 0 +_080FCC14: .4byte gUnknown_2037290 +_080FCC18: .4byte 0x0000FFFF +_080FCC1C: .4byte gUnknown_2039D28 +_080FCC20: + movs r0, #0 +_080FCC22: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FCBF8 + + thumb_func_start sub_080FCC28 +sub_080FCC28: @ 0x080FCC28 + push {lr} + bl sub_080FCB58 + ldr r2, _080FCC44 + ldrh r1, [r2] + ldr r0, _080FCC48 + cmp r1, r0 + beq _080FCC50 + adds r0, r1, #0 + lsls r0, r0, #4 + ldr r1, _080FCC4C + adds r0, r0, r1 + b _080FCC52 + .align 2, 0 +_080FCC44: .4byte gUnknown_2037290 +_080FCC48: .4byte 0x0000FFFF +_080FCC4C: .4byte gUnknown_2039D28 +_080FCC50: + movs r0, #0 +_080FCC52: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FCC28 + + thumb_func_start sub_080FCC58 +sub_080FCC58: @ 0x080FCC58 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r1, #0 + ldr r2, _080FCCCC + mov r6, sp + adds r6, #2 + movs r0, #8 + adds r0, r0, r2 + mov sb, r0 + ldr r7, _080FCCD0 +_080FCC78: + lsls r5, r1, #4 + adds r4, r5, r2 + movs r0, #4 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _080FCCD8 + movs r3, #0 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _080FCCD8 + movs r3, #2 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _080FCCD8 + mov r0, sp + adds r1, r6, #0 + bl sub_0808B3CC + ldr r0, [r7] + ldrb r0, [r0, #5] + strb r0, [r4, #4] + mov r0, sb + adds r2, r5, r0 + ldr r0, [r7] + mov r3, r8 + lsls r1, r3, #3 + ldr r3, _080FCCD4 + adds r0, r0, r3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + movs r0, #0x64 + strb r0, [r4, #5] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r6] + strh r0, [r4, #2] + b _080FCCE2 + .align 2, 0 +_080FCCCC: .4byte gUnknown_2039D20 +_080FCCD0: .4byte gUnknown_3005AEC +_080FCCD4: .4byte 0x00000848 +_080FCCD8: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _080FCC78 +_080FCCE2: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080FCC58 + + thumb_func_start sub_080FCCF0 +sub_080FCCF0: @ 0x080FCCF0 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _080FCD20 +_080FCCF6: + lsls r0, r4, #4 + adds r1, r0, r5 + ldrb r0, [r1, #5] + cmp r0, #0 + beq _080FCD10 + subs r0, #1 + strb r0, [r1, #5] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FCD10 + adds r0, r4, #0 + bl sub_080FCA98 +_080FCD10: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _080FCCF6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FCD20: .4byte gUnknown_2039D20 + thumb_func_end sub_080FCCF0 + + thumb_func_start sub_080FCD24 +sub_080FCD24: @ 0x080FCD24 + push {lr} + bl sub_080FCAC8 + ldr r3, _080FCD4C + ldrh r1, [r3] + ldr r0, _080FCD50 + cmp r1, r0 + beq _080FCD5C + ldr r0, _080FCD54 + ldr r2, _080FCD58 + lsls r1, r1, #4 + adds r1, r1, r2 + ldrb r1, [r1, #5] + movs r2, #2 + movs r3, #3 + bl sub_080089D8 + movs r0, #1 + b _080FCD5E + .align 2, 0 +_080FCD4C: .4byte gUnknown_2037290 +_080FCD50: .4byte 0x0000FFFF +_080FCD54: .4byte gUnknown_2021C54 +_080FCD58: .4byte gUnknown_2039D20 +_080FCD5C: + movs r0, #0 +_080FCD5E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FCD24 + + thumb_func_start sub_080FCD64 +sub_080FCD64: @ 0x080FCD64 + push {r4, r5, lr} + adds r2, r0, #0 + lsls r4, r1, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _080FCD94 + adds r0, r5, #0 + adds r1, r2, #0 + adds r2, r4, #0 + bl memcpy + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0800A070 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FCD98 + movs r0, #0 + b _080FCD9A + .align 2, 0 +_080FCD94: .4byte gUnknown_201C000 +_080FCD98: + movs r0, #1 +_080FCD9A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080FCD64 + + thumb_func_start sub_080FCDA0 +sub_080FCDA0: @ 0x080FCDA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0x80 + lsls r4, r4, #0x11 + lsls r4, r5 + lsrs r4, r4, #0x18 + bl sub_0800A114 + ands r4, r0 + cmp r4, #0 + beq _080FCDC2 + adds r0, r5, #0 + bl sub_0800A1B0 + movs r0, #1 + b _080FCDC4 +_080FCDC2: + movs r0, #0 +_080FCDC4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FCDA0 + + thumb_func_start sub_080FCDCC +sub_080FCDCC: @ 0x080FCDCC + push {r4, lr} + bl sub_0800A114 + adds r4, r0, #0 + bl sub_0800A59C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _080FCDE4 + movs r0, #0 + b _080FCDEA +_080FCDE4: + bl sub_0800A178 + movs r0, #1 +_080FCDEA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080FCDCC + + thumb_func_start sub_080FCDF0 +sub_080FCDF0: @ 0x080FCDF0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r5, _080FCE24 + ldr r6, _080FCE28 + ldr r4, _080FCE2C + movs r3, #0xff +_080FCE00: + lsls r0, r1, #8 + adds r0, r0, r4 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _080FCE00 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0 + strh r1, [r0, #8] + str r6, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FCE24: .4byte gUnknown_3005B60 +_080FCE28: .4byte sub_080FCE30 +_080FCE2C: .4byte gUnknown_202207C + thumb_func_end sub_080FCDF0 + + thumb_func_start sub_080FCE30 +sub_080FCE30: @ 0x080FCE30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FCE44 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _080FCE48 + str r0, [r1] + bx lr + .align 2, 0 +_080FCE44: .4byte gUnknown_3005B60 +_080FCE48: .4byte sub_080FCE4C + thumb_func_end sub_080FCE30 + + thumb_func_start sub_080FCE4C +sub_080FCE4C: @ 0x080FCE4C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _080FCEC8 + ldrb r0, [r0] + cmp r0, #0 + beq _080FCEC0 + bl sub_0800A02C + ldr r1, _080FCECC + strb r0, [r1] + bl sub_08009B64 + ldr r4, _080FCED0 + strb r0, [r4] + ldr r1, _080FCED4 + movs r0, #1 + strb r0, [r1] + ldr r0, _080FCED8 + ldrb r0, [r0] + cmp r0, #1 + bne _080FCE7C + movs r0, #3 + strb r0, [r1] +_080FCE7C: + movs r3, #0 + ldrb r2, [r4] + cmp r3, r2 + bge _080FCEBA + ldr r1, _080FCEDC + ldrb r0, [r1] + subs r0, #1 + adds r6, r4, #0 + cmp r0, #1 + bls _080FCEAA + adds r4, r2, #0 + adds r2, r1, #0 + movs r5, #0xff +_080FCE96: + adds r2, #0x1c + adds r3, #1 + cmp r3, r4 + bge _080FCEBA + ldrh r1, [r2] + adds r0, r5, #0 + ands r0, r1 + subs r0, #1 + cmp r0, #1 + bhi _080FCE96 +_080FCEAA: + ldrb r6, [r6] + cmp r3, r6 + bge _080FCEBA + ldr r0, _080FCED4 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_080FCEBA: + adds r0, r7, #0 + bl sub_080A8A78 +_080FCEC0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FCEC8: .4byte gUnknown_30031C4 +_080FCECC: .4byte gUnknown_2039BC5 +_080FCED0: .4byte gUnknown_2039BD0 +_080FCED4: .4byte gUnknown_2039BCA +_080FCED8: .4byte gUnknown_300319C +_080FCEDC: .4byte gUnknown_20226A0 + thumb_func_end sub_080FCE4C + + thumb_func_start sub_080FCEE0 +sub_080FCEE0: @ 0x080FCEE0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080FCF0C + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080FCF08 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FCF10 + cmp r0, #1 + beq _080FCF1E + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FCF24 +_080FCF08: + movs r0, #1 + b _080FCF26 + .align 2, 0 +_080FCF0C: .4byte gUnknown_2039BCA +_080FCF10: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FCF24 + bl sub_0800A8D4 +_080FCF1E: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_080FCF24: + movs r0, #0 +_080FCF26: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080FCEE0 + + thumb_func_start sub_080FCF2C +sub_080FCF2C: @ 0x080FCF2C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r7, r5, #2 + adds r0, r7, r5 + lsls r4, r0, #3 + ldr r6, _080FCF60 + adds r0, r4, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + bne _080FCF48 + b _080FD04C +_080FCF48: + adds r0, r6, #0 + subs r0, #8 + adds r4, r4, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080FCFC4 + cmp r0, #1 + bgt _080FCF64 + cmp r0, #0 + beq _080FCF6A + b _080FD034 + .align 2, 0 +_080FCF60: .4byte gUnknown_3005B68 +_080FCF64: + cmp r0, #0xa + beq _080FD018 + b _080FD034 +_080FCF6A: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FCFA4 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD04C + ldr r0, _080FCF98 + ldr r1, _080FCF9C + ldrb r1, [r1] + lsls r1, r1, #6 + ldr r2, _080FCFA0 + adds r1, r1, r2 + movs r2, #0x40 + bl memcpy + movs r0, #0xa + strh r0, [r4, #8] + b _080FD04C + .align 2, 0 +_080FCF98: .4byte gUnknown_202257C +_080FCF9C: .4byte gUnknown_2039BC5 +_080FCFA0: .4byte gUnknown_2039AA0 +_080FCFA4: + ldr r0, _080FCFB8 + ldr r1, _080FCFBC + ldrb r1, [r1] + lsls r1, r1, #6 + ldr r2, _080FCFC0 + adds r1, r1, r2 + movs r2, #0x40 + bl memcpy + b _080FD02E + .align 2, 0 +_080FCFB8: .4byte gUnknown_202257C +_080FCFBC: .4byte gUnknown_2039BC5 +_080FCFC0: .4byte gUnknown_2039AA0 +_080FCFC4: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD04C + movs r4, #0 + ldr r0, _080FCFD8 + adds r6, r7, #0 + b _080FCFF2 + .align 2, 0 +_080FCFD8: .4byte gUnknown_2039BD0 +_080FCFDC: + lsls r0, r4, #6 + ldr r1, _080FD008 + adds r0, r0, r1 + lsls r1, r4, #8 + ldr r2, _080FD00C + adds r1, r1, r2 + movs r2, #0x40 + bl memcpy + adds r4, #1 + ldr r0, _080FD010 +_080FCFF2: + ldrb r0, [r0] + cmp r4, r0 + blt _080FCFDC + ldr r0, _080FD014 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080FD04C + .align 2, 0 +_080FD008: .4byte gUnknown_2039AA0 +_080FD00C: .4byte gUnknown_202207C +_080FD010: .4byte gUnknown_2039BD0 +_080FD014: .4byte gUnknown_3005B60 +_080FD018: + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + movs r1, #0x96 + lsls r1, r1, #0x11 + cmp r0, r1 + ble _080FD04C + movs r0, #2 + bl sub_0800A09C +_080FD02E: + movs r0, #1 + strh r0, [r4, #8] + b _080FD04C +_080FD034: + ldr r0, _080FD054 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0x1e] + strh r0, [r1, #0x20] + adds r0, r5, #0 + bl sub_080A8A78 +_080FD04C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD054: .4byte gUnknown_3005B60 + thumb_func_end sub_080FCF2C + + thumb_func_start sub_080FD058 +sub_080FD058: @ 0x080FD058 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080FD080 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080FD084 + cmp r0, #1 + beq _080FD0AC + movs r0, #0 + strh r0, [r5, #8] + adds r0, r2, #0 + bl sub_080A8A78 + b _080FD0D4 + .align 2, 0 +_080FD080: .4byte gUnknown_3005B60 +_080FD084: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD0CE + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD0D4 + ldr r0, _080FD0A8 + movs r1, #4 + bl sub_080FCD64 + cmp r0, #1 + bne _080FD0D4 + b _080FD0CE + .align 2, 0 +_080FD0A8: .4byte gUnknown_3005AE0 +_080FD0AC: + movs r0, #0 + bl sub_080FCDA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD0D4 + ldr r0, _080FD0DC + ldr r4, _080FD0E0 + adds r1, r4, #0 + movs r2, #4 + bl memcpy + ldr r0, _080FD0E4 + adds r1, r4, #0 + movs r2, #4 + bl memcpy +_080FD0CE: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_080FD0D4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FD0DC: .4byte gUnknown_3005AE0 +_080FD0E0: .4byte gUnknown_202207C +_080FD0E4: .4byte gUnknown_3005E18 + thumb_func_end sub_080FD058 + + thumb_func_start sub_080FD0E8 +sub_080FD0E8: @ 0x080FD0E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + mov r8, r0 + adds r0, r0, r6 + lsls r5, r0, #3 + ldr r7, _080FD128 + adds r0, r5, r7 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _080FD1DA + movs r1, #8 + rsbs r1, r1, #0 + adds r1, r1, r7 + mov sb, r1 + adds r4, r5, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080FD160 + cmp r0, #1 + bgt _080FD12C + cmp r0, #0 + beq _080FD132 + b _080FD1C2 + .align 2, 0 +_080FD128: .4byte gUnknown_3005B68 +_080FD12C: + cmp r0, #0xa + beq _080FD1A8 + b _080FD1C2 +_080FD132: + ldr r1, _080FD154 + ldrh r0, [r4, #0x1a] + strb r0, [r1] + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD158 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD1DA + movs r0, #0xa + strh r0, [r4, #8] + b _080FD1DA + .align 2, 0 +_080FD154: .4byte gUnknown_202257C +_080FD158: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080FD1DA +_080FD160: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD1DA + movs r3, #0 + ldr r1, _080FD1A0 + ldrb r0, [r1] + cmp r3, r0 + bge _080FD18E + ldr r4, _080FD1A4 + adds r0, r7, #2 + adds r2, r5, r0 + movs r5, #0x80 + lsls r5, r5, #1 +_080FD17E: + ldrh r0, [r4] + strh r0, [r2] + adds r4, r4, r5 + adds r2, #2 + adds r3, #1 + ldrb r0, [r1] + cmp r3, r0 + blt _080FD17E +_080FD18E: + mov r0, r8 + adds r1, r0, r6 + lsls r1, r1, #3 + add r1, sb + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080FD1DA + .align 2, 0 +_080FD1A0: .4byte gUnknown_2039BD0 +_080FD1A4: .4byte gUnknown_202207C +_080FD1A8: + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + ble _080FD1DA + movs r0, #2 + bl sub_0800A09C + movs r0, #1 + strh r0, [r4, #8] + b _080FD1DA +_080FD1C2: + ldr r0, _080FD1E8 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0x1e] + strh r0, [r1, #0x20] + adds r0, r6, #0 + bl sub_080A8A78 +_080FD1DA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD1E8: .4byte gUnknown_3005B60 + thumb_func_end sub_080FD0E8 + + thumb_func_start sub_080FD1EC +sub_080FD1EC: @ 0x080FD1EC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080FD214 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FD218 + cmp r0, #1 + beq _080FD234 + movs r0, #0 + strh r0, [r4, #8] + adds r0, r2, #0 + bl sub_080A8A78 + b _080FD244 + .align 2, 0 +_080FD214: .4byte gUnknown_3005B60 +_080FD218: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD244 + ldr r0, _080FD230 + movs r1, #1 + bl sub_080FCD64 + cmp r0, #1 + bne _080FD244 + b _080FD23E + .align 2, 0 +_080FD230: .4byte gUnknown_2039BC5 +_080FD234: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD244 +_080FD23E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FD244: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FD1EC + + thumb_func_start sub_080FD24C +sub_080FD24C: @ 0x080FD24C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080FD280 + mov r8, r0 + lsls r7, r5, #2 + adds r0, r7, r5 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FD284 + cmp r0, #1 + beq _080FD2BC + movs r0, #0 + strh r0, [r4, #8] + adds r0, r5, #0 + bl sub_080A8A78 + b _080FD306 + .align 2, 0 +_080FD280: .4byte gUnknown_3005B60 +_080FD284: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD306 + ldr r0, _080FD2B4 + ldr r2, [r0] + ldr r0, _080FD2B8 + ldrb r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, [r2, #4] + adds r0, r0, r1 + adds r0, #6 + movs r1, #2 + bl sub_080FCD64 + cmp r0, #1 + bne _080FD306 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080FD306 + .align 2, 0 +_080FD2B4: .4byte gUnknown_2039BD4 +_080FD2B8: .4byte gUnknown_2039BC5 +_080FD2BC: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD306 + movs r2, #0 + ldr r6, _080FD314 + mov sb, r8 + mov ip, r7 + ldrb r0, [r6] + cmp r2, r0 + bge _080FD2F8 + ldr r1, _080FD318 + mov r8, r1 + ldr r4, _080FD31C + movs r3, #0 + movs r7, #0x80 + lsls r7, r7, #1 +_080FD2E0: + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #4] + adds r0, r3, r0 + ldrh r1, [r4] + strh r1, [r0, #6] + adds r4, r4, r7 + adds r3, #0x1c + adds r2, #1 + ldrb r0, [r6] + cmp r2, r0 + blt _080FD2E0 +_080FD2F8: + mov r0, ip + adds r1, r0, r5 + lsls r1, r1, #3 + add r1, sb + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_080FD306: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD314: .4byte gUnknown_2039BD0 +_080FD318: .4byte gUnknown_2039BD4 +_080FD31C: .4byte gUnknown_202207C + thumb_func_end sub_080FD24C + + thumb_func_start sub_080FD320 +sub_080FD320: @ 0x080FD320 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080FD348 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #8 + ldrsh r0, [r2, r3] + adds r3, r1, #0 + cmp r0, #0xb + bls _080FD33C + b _080FD4CC +_080FD33C: + lsls r0, r0, #2 + ldr r1, _080FD34C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FD348: .4byte gUnknown_3005B60 +_080FD34C: .4byte _080FD350 +_080FD350: @ jump table + .4byte _080FD380 @ case 0 + .4byte _080FD398 @ case 1 + .4byte _080FD3C0 @ case 2 + .4byte _080FD3E4 @ case 3 + .4byte _080FD3F8 @ case 4 + .4byte _080FD3C0 @ case 5 + .4byte _080FD420 @ case 6 + .4byte _080FD434 @ case 7 + .4byte _080FD3C0 @ case 8 + .4byte _080FD45C @ case 9 + .4byte _080FD48C @ case 10 + .4byte _080FD3C0 @ case 11 +_080FD380: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD38C + b _080FD4D6 +_080FD38C: + ldr r0, _080FD394 + movs r1, #8 + b _080FD46A + .align 2, 0 +_080FD394: .4byte gUnknown_2039BA8 +_080FD398: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD3A4 + b _080FD4D6 +_080FD3A4: + ldr r0, _080FD3B4 + ldr r1, _080FD3B8 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD3BC + adds r1, r1, r2 + movs r2, #8 + b _080FD4A4 + .align 2, 0 +_080FD3B4: .4byte gUnknown_2039BA8 +_080FD3B8: .4byte gUnknown_2039BCB +_080FD3BC: .4byte gUnknown_202207C +_080FD3C0: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r3 + ldrh r0, [r2, #0xa] + adds r1, r0, #1 + strh r1, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bgt _080FD3D8 + b _080FD4D6 +_080FD3D8: + movs r0, #0 + strh r0, [r2, #0xa] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _080FD4D6 +_080FD3E4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD3F4 + movs r1, #8 + b _080FD46A + .align 2, 0 +_080FD3F4: .4byte gUnknown_2039BB0 +_080FD3F8: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD414 + ldr r1, _080FD418 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD41C + adds r1, r1, r2 + movs r2, #8 + b _080FD4A4 + .align 2, 0 +_080FD414: .4byte gUnknown_2039BB0 +_080FD418: .4byte gUnknown_2039BCB +_080FD41C: .4byte gUnknown_202207C +_080FD420: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD430 + movs r1, #8 + b _080FD46A + .align 2, 0 +_080FD430: .4byte gUnknown_2039BB8 +_080FD434: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD450 + ldr r1, _080FD454 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD458 + adds r1, r1, r2 + movs r2, #8 + b _080FD4A4 + .align 2, 0 +_080FD450: .4byte gUnknown_2039BB8 +_080FD454: .4byte gUnknown_2039BCB +_080FD458: .4byte gUnknown_202207C +_080FD45C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD484 + movs r1, #4 +_080FD46A: + bl sub_080FCD64 + cmp r0, #1 + bne _080FD4D6 + ldr r0, _080FD488 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080FD4D6 + .align 2, 0 +_080FD484: .4byte gUnknown_2039BC0 +_080FD488: .4byte gUnknown_3005B60 +_080FD48C: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD4D6 + ldr r0, _080FD4BC + ldr r1, _080FD4C0 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD4C4 + adds r1, r1, r2 + movs r2, #4 +_080FD4A4: + bl memcpy + ldr r1, _080FD4C8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080FD4D6 + .align 2, 0 +_080FD4BC: .4byte gUnknown_2039BC0 +_080FD4C0: .4byte gUnknown_2039BCB +_080FD4C4: .4byte gUnknown_202207C +_080FD4C8: .4byte gUnknown_3005B60 +_080FD4CC: + movs r0, #0 + strh r0, [r2, #8] + adds r0, r4, #0 + bl sub_080A8A78 +_080FD4D6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FD320 + + thumb_func_start sub_080FD4DC +sub_080FD4DC: @ 0x080FD4DC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080FD504 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #8 + ldrsh r0, [r2, r3] + adds r3, r1, #0 + cmp r0, #0xb + bls _080FD4F8 + b _080FD68C +_080FD4F8: + lsls r0, r0, #2 + ldr r1, _080FD508 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FD504: .4byte gUnknown_3005B60 +_080FD508: .4byte _080FD50C +_080FD50C: @ jump table + .4byte _080FD53C @ case 0 + .4byte _080FD558 @ case 1 + .4byte _080FD584 @ case 2 + .4byte _080FD5A8 @ case 3 + .4byte _080FD5C0 @ case 4 + .4byte _080FD584 @ case 5 + .4byte _080FD5EC @ case 6 + .4byte _080FD604 @ case 7 + .4byte _080FD584 @ case 8 + .4byte _080FD61C @ case 9 + .4byte _080FD64C @ case 10 + .4byte _080FD584 @ case 11 +_080FD53C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD548 + b _080FD696 +_080FD548: + ldr r0, _080FD554 + ldr r0, [r0] + ldr r0, [r0, #4] + movs r1, #0x70 + b _080FD62A + .align 2, 0 +_080FD554: .4byte gUnknown_2039BD4 +_080FD558: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD564 + b _080FD696 +_080FD564: + ldr r0, _080FD578 + ldr r0, [r0] + ldr r0, [r0, #4] + ldr r1, _080FD57C + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD580 + adds r1, r1, r2 + movs r2, #0x70 + b _080FD664 + .align 2, 0 +_080FD578: .4byte gUnknown_2039BD4 +_080FD57C: .4byte gUnknown_2039BCB +_080FD580: .4byte gUnknown_202207C +_080FD584: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r3 + ldrh r0, [r2, #0xa] + adds r1, r0, #1 + strh r1, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bgt _080FD59C + b _080FD696 +_080FD59C: + movs r0, #0 + strh r0, [r2, #0xa] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _080FD696 +_080FD5A8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD5BC + ldr r0, [r0] + ldr r0, [r0, #8] + movs r1, #0x14 + b _080FD62A + .align 2, 0 +_080FD5BC: .4byte gUnknown_2039BD4 +_080FD5C0: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD5E0 + ldr r0, [r0] + ldr r0, [r0, #8] + ldr r1, _080FD5E4 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD5E8 + adds r1, r1, r2 + movs r2, #0x14 + b _080FD664 + .align 2, 0 +_080FD5E0: .4byte gUnknown_2039BD4 +_080FD5E4: .4byte gUnknown_2039BCB +_080FD5E8: .4byte gUnknown_202207C +_080FD5EC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD600 + ldr r0, [r0] + ldr r0, [r0, #0x10] + b _080FD628 + .align 2, 0 +_080FD600: .4byte gUnknown_2039BD4 +_080FD604: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD618 + ldr r0, [r0] + ldr r0, [r0, #0x10] + b _080FD658 + .align 2, 0 +_080FD618: .4byte gUnknown_2039BD4 +_080FD61C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD644 +_080FD628: + movs r1, #4 +_080FD62A: + bl sub_080FCD64 + cmp r0, #1 + bne _080FD696 + ldr r0, _080FD648 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080FD696 + .align 2, 0 +_080FD644: .4byte gUnknown_2039BC6 +_080FD648: .4byte gUnknown_3005B60 +_080FD64C: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD696 + ldr r0, _080FD67C +_080FD658: + ldr r1, _080FD680 + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD684 + adds r1, r1, r2 + movs r2, #4 +_080FD664: + bl memcpy + ldr r1, _080FD688 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _080FD696 + .align 2, 0 +_080FD67C: .4byte gUnknown_2039BC6 +_080FD680: .4byte gUnknown_2039BCB +_080FD684: .4byte gUnknown_202207C +_080FD688: .4byte gUnknown_3005B60 +_080FD68C: + movs r0, #0 + strh r0, [r2, #8] + adds r0, r4, #0 + bl sub_080A8A78 +_080FD696: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FD4DC + + thumb_func_start sub_080FD69C +sub_080FD69C: @ 0x080FD69C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + mov r8, r0 + adds r0, r0, r6 + lsls r5, r0, #3 + ldr r7, _080FD6DC + adds r0, r5, r7 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _080FD782 + movs r1, #8 + rsbs r1, r1, #0 + adds r1, r1, r7 + mov sb, r1 + adds r4, r5, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080FD714 + cmp r0, #1 + bgt _080FD6E0 + cmp r0, #0 + beq _080FD6E6 + b _080FD76A + .align 2, 0 +_080FD6DC: .4byte gUnknown_3005B68 +_080FD6E0: + cmp r0, #0xa + beq _080FD750 + b _080FD76A +_080FD6E6: + ldr r1, _080FD708 + movs r0, #0x6e + strb r0, [r1] + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD70C + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD782 + movs r0, #0xa + strh r0, [r4, #8] + b _080FD782 + .align 2, 0 +_080FD708: .4byte gUnknown_202257C +_080FD70C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _080FD782 +_080FD714: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD782 + mov r1, r8 + mov r8, sb + ldr r4, _080FD74C + adds r0, r7, #0 + adds r0, #0xa + adds r2, r5, r0 + movs r5, #0x80 + lsls r5, r5, #1 + movs r3, #3 +_080FD730: + ldrh r0, [r4] + strh r0, [r2] + adds r4, r4, r5 + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bge _080FD730 + adds r1, r1, r6 + lsls r1, r1, #3 + add r1, r8 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _080FD782 + .align 2, 0 +_080FD74C: .4byte gUnknown_202207C +_080FD750: + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + ble _080FD782 + movs r0, #2 + bl sub_0800A09C + movs r0, #1 + strh r0, [r4, #8] + b _080FD782 +_080FD76A: + ldr r0, _080FD790 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0x1e] + strh r0, [r1, #0x20] + adds r0, r6, #0 + bl sub_080A8A78 +_080FD782: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FD790: .4byte gUnknown_3005B60 + thumb_func_end sub_080FD69C + + thumb_func_start sub_080FD794 +sub_080FD794: @ 0x080FD794 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r4, r0, #3 + ldr r6, _080FD7D0 + adds r0, r4, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _080FD812 + adds r0, r6, #0 + subs r0, #8 + adds r4, r4, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FD7D4 + cmp r0, #1 + beq _080FD7F0 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r5, #0 + bl sub_080A8A78 + b _080FD812 + .align 2, 0 +_080FD7D0: .4byte gUnknown_3005B68 +_080FD7D4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD812 + ldr r0, _080FD7EC + movs r1, #8 + bl sub_080FCD64 + cmp r0, #1 + bne _080FD812 + b _080FD80C + .align 2, 0 +_080FD7EC: .4byte gUnknown_2039BA0 +_080FD7F0: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD812 + ldr r0, _080FD818 + ldr r1, _080FD81C + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD820 + adds r1, r1, r2 + movs r2, #8 + bl memcpy +_080FD80C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FD812: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FD818: .4byte gUnknown_2039BA0 +_080FD81C: .4byte gUnknown_2039BCB +_080FD820: .4byte gUnknown_202207C + thumb_func_end sub_080FD794 + + thumb_func_start sub_080FD824 +sub_080FD824: @ 0x080FD824 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r4, r0, #3 + ldr r6, _080FD860 + adds r0, r4, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _080FD8A2 + adds r0, r6, #0 + subs r0, #8 + adds r4, r4, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080FD864 + cmp r0, #1 + beq _080FD880 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r5, #0 + bl sub_080A8A78 + b _080FD8A2 + .align 2, 0 +_080FD860: .4byte gUnknown_3005B68 +_080FD864: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD8A2 + ldr r0, _080FD87C + movs r1, #4 + bl sub_080FCD64 + cmp r0, #1 + bne _080FD8A2 + b _080FD89C + .align 2, 0 +_080FD87C: .4byte gUnknown_2039BC6 +_080FD880: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FD8A2 + ldr r0, _080FD8A8 + ldr r1, _080FD8AC + ldrb r1, [r1] + lsls r1, r1, #8 + ldr r2, _080FD8B0 + adds r1, r1, r2 + movs r2, #4 + bl memcpy +_080FD89C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FD8A2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FD8A8: .4byte gUnknown_2039BC6 +_080FD8AC: .4byte gUnknown_2039BCB +_080FD8B0: .4byte gUnknown_202207C + thumb_func_end sub_080FD824 + + thumb_func_start sub_080FD8B4 +sub_080FD8B4: @ 0x080FD8B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _080FD8D0 + ldrh r0, [r1] + cmp r0, #0xaf + bne _080FD8D8 + ldr r0, _080FD8D4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r0, [r1, #0x10] + b _080FD8DE + .align 2, 0 +_080FD8D0: .4byte gUnknown_203CB48 +_080FD8D4: .4byte gUnknown_3005B60 +_080FD8D8: + ldrh r0, [r1] + bl sub_080D6DD4 +_080FD8DE: + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD90C + ldr r0, _080FD904 + ldr r2, [r0] + ldr r1, _080FD908 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + adds r0, r5, #0 + bl sub_081AB6A4 + b _080FD920 + .align 2, 0 +_080FD904: .4byte gUnknown_203CB20 +_080FD908: .4byte gUnknown_856DCBC +_080FD90C: + ldr r0, _080FD928 + ldr r2, [r0] + ldr r1, _080FD92C + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + adds r0, r5, #0 + bl sub_081C5310 +_080FD920: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FD928: .4byte gUnknown_203CBF8 +_080FD92C: .4byte gUnknown_856DCBC + thumb_func_end sub_080FD8B4 + + thumb_func_start sub_080FD930 +sub_080FD930: @ 0x080FD930 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _080FD958 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _080FD964 + ldr r1, _080FD95C + ldr r0, _080FD960 + str r0, [r1] + adds r0, r2, #0 + bl sub_080FD8B4 + b _080FD96E + .align 2, 0 +_080FD958: .4byte gUnknown_3005B60 +_080FD95C: .4byte gUnknown_3005B0C +_080FD960: .4byte sub_080FD978 +_080FD964: + ldr r0, _080FD974 + ldr r1, [r0] + adds r0, r2, #0 + bl _call_via_r1 +_080FD96E: + pop {r0} + bx r0 + .align 2, 0 +_080FD974: .4byte gUnknown_2039DC0 + thumb_func_end sub_080FD930 + + thumb_func_start sub_080FD978 +sub_080FD978: @ 0x080FD978 + push {lr} + bl sub_080AE99C + ldr r0, _080FD98C + movs r1, #8 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_080FD98C: .4byte sub_080FD990 + thumb_func_end sub_080FD978 + + thumb_func_start sub_080FD990 +sub_080FD990: @ 0x080FD990 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FD9AC + ldr r0, _080FD9B4 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_080FD9AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FD9B4: .4byte gUnknown_2039DC0 + thumb_func_end sub_080FD990 + + thumb_func_start sub_080FD9B8 +sub_080FD9B8: @ 0x080FD9B8 + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r1, r2, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _080FD9EC + adds r0, r6, #0 + bl sub_08008BCC + cmp r4, #0 + bne _080FDA08 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FD9F4 + ldr r3, _080FD9F0 + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_081AB8F8 + b _080FDA12 + .align 2, 0 +_080FD9EC: .4byte gUnknown_2021C7C +_080FD9F0: .4byte sub_081AB968 +_080FD9F4: + ldr r1, _080FDA00 + ldr r2, _080FDA04 + adds r0, r5, #0 + bl sub_081C6598 + b _080FDA12 + .align 2, 0 +_080FDA00: .4byte gUnknown_85C9556 +_080FDA04: .4byte sub_081C5F24 +_080FDA08: + ldr r2, _080FDA18 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_081976D0 +_080FDA12: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FDA18: .4byte sub_080FDA4C + thumb_func_end sub_080FD9B8 + + thumb_func_start sub_080FDA1C +sub_080FDA1C: @ 0x080FDA1C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080FDA30 + bl sub_080FD9B8 + pop {r0} + bx r0 + .align 2, 0 +_080FDA30: .4byte gUnknown_85C9556 + thumb_func_end sub_080FDA1C + + thumb_func_start sub_080FDA34 +sub_080FDA34: @ 0x080FDA34 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _080FDA48 + bl sub_080FD9B8 + pop {r0} + bx r0 + .align 2, 0 +_080FDA48: .4byte gUnknown_85C957F + thumb_func_end sub_080FDA34 + + thumb_func_start sub_080FDA4C +sub_080FDA4C: @ 0x080FDA4C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_08097E7C + bl sub_080987E8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FDA4C + + thumb_func_start sub_080FDA70 +sub_080FDA70: @ 0x080FDA70 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_080D6DF8 + ldr r1, _080FDA88 + cmp r0, r1 + bne _080FDA8C + movs r0, #1 + b _080FDAA2 + .align 2, 0 +_080FDA88: .4byte sub_080FE79C +_080FDA8C: + adds r0, r4, #0 + bl sub_080D6DF8 + ldr r1, _080FDA9C + cmp r0, r1 + beq _080FDAA0 + movs r0, #0 + b _080FDAA2 + .align 2, 0 +_080FDA9C: .4byte sub_080FEBC8 +_080FDAA0: + movs r0, #2 +_080FDAA2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_080FDA70 + + thumb_func_start sub_080FDAA8 +sub_080FDAA8: @ 0x080FDAA8 + push {lr} + sub sp, #0x24 + mov r1, sp + ldr r0, _080FDAC4 + ldrh r0, [r0] + strh r0, [r1, #0x20] + ldr r1, _080FDAC8 + mov r0, sp + movs r2, #0 + bl sub_08121568 + add sp, #0x24 + pop {r0} + bx r0 + .align 2, 0 +_080FDAC4: .4byte gUnknown_203CB48 +_080FDAC8: .4byte sub_081AD204 + thumb_func_end sub_080FDAA8 + + thumb_func_start sub_080FDACC +sub_080FDACC: @ 0x080FDACC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _080FDAE4 + ldr r2, [r1] + ldr r1, _080FDAE8 + str r1, [r2] + bl sub_081AB6A4 + pop {r0} + bx r0 + .align 2, 0 +_080FDAE4: .4byte gUnknown_203CB20 +_080FDAE8: .4byte sub_080FDAA8 + thumb_func_end sub_080FDACC + + thumb_func_start sub_080FDAEC +sub_080FDAEC: @ 0x080FDAEC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FDB6C + adds r6, r0, r1 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FDB70 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FDB62 + adds r0, r4, #0 + bl sub_080892F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FDB62 + adds r0, r4, #0 + bl sub_08089308 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FDB62 + adds r0, r4, #0 + bl sub_080892CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FDB62 + adds r0, r4, #0 + bl sub_080892E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FDB74 +_080FDB62: + ldrb r1, [r6, #6] + adds r0, r5, #0 + bl sub_080FDA34 + b _080FDBA4 + .align 2, 0 +_080FDB6C: .4byte gUnknown_3005B68 +_080FDB70: .4byte 0x0000088B +_080FDB74: + bl sub_08084DDC + cmp r0, #1 + bne _080FDB9C + bl sub_0811A848 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDB9C + ldr r1, _080FDB94 + ldr r0, _080FDB98 + str r0, [r1] + adds r0, r5, #0 + bl sub_080FD930 + b _080FDBA4 + .align 2, 0 +_080FDB94: .4byte gUnknown_2039DC0 +_080FDB98: .4byte sub_080FDBAC +_080FDB9C: + ldrb r1, [r6, #6] + adds r0, r5, #0 + bl sub_080FDA1C +_080FDBA4: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_080FDAEC + + thumb_func_start sub_080FDBAC +sub_080FDBAC: @ 0x080FDBAC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FDBC8 + ldrh r0, [r0] + bl sub_080D6E6C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDBCC + movs r0, #2 + bl sub_0811A8D0 + b _080FDBD2 + .align 2, 0 +_080FDBC8: .4byte gUnknown_203CB48 +_080FDBCC: + movs r0, #4 + bl sub_0811A8D0 +_080FDBD2: + bl sub_08097E7C + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FDBAC + + thumb_func_start sub_080FDBE8 +sub_080FDBE8: @ 0x080FDBE8 + push {r4, r5, r6, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r0, r6, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080890A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDC70 + movs r0, #0x10 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDC70 + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDC40 + bl sub_0808B7D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FDC70 +_080FDC3C: + movs r0, #1 + b _080FDC72 +_080FDC40: + adds r0, r5, #0 + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FDC60 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087B14 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FDC3C +_080FDC60: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088E74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FDC3C +_080FDC70: + movs r0, #0 +_080FDC72: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FDBE8 + + thumb_func_start sub_080FDC7C +sub_080FDC7C: @ 0x080FDC7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080FDBE8 + cmp r0, #1 + bne _080FDCA0 + ldr r1, _080FDC98 + ldr r0, _080FDC9C + str r0, [r1] + adds r0, r4, #0 + bl sub_080FD930 + b _080FDCB2 + .align 2, 0 +_080FDC98: .4byte gUnknown_2039DC0 +_080FDC9C: .4byte sub_080FDCBC +_080FDCA0: + ldr r0, _080FDCB8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #0xe] + adds r0, r4, #0 + bl sub_080FDA1C +_080FDCB2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FDCB8: .4byte gUnknown_3005B60 + thumb_func_end sub_080FDC7C + + thumb_func_start sub_080FDCBC +sub_080FDCBC: @ 0x080FDCBC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080FDCE0 + ldrh r0, [r0] + bl sub_080D6E6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808C1F0 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FDCE0: .4byte gUnknown_203CB48 + thumb_func_end sub_080FDCBC + + thumb_func_start sub_080FDCE4 +sub_080FDCE4: @ 0x080FDCE4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x27 + bl sub_0808414C + ldr r1, _080FDD04 + ldr r0, _080FDD08 + str r0, [r1] + adds r0, r4, #0 + bl sub_080FD930 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FDD04: .4byte gUnknown_2039DC0 +_080FDD08: .4byte sub_080FDD0C + thumb_func_end sub_080FDCE4 + + thumb_func_start sub_080FDD0C +sub_080FDD0C: @ 0x080FDD0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FDD34 + ldr r0, [r0, #4] + adds r1, r4, #0 + bl sub_080FDE44 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FDD40 + ldr r0, _080FDD38 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080FDD3C + str r0, [r1] + b _080FDD4A + .align 2, 0 +_080FDD34: .4byte gUnknown_2036FB8 +_080FDD38: .4byte gUnknown_3005B60 +_080FDD3C: .4byte sub_080FDD58 +_080FDD40: + ldr r1, _080FDD50 + ldr r2, _080FDD54 + adds r0, r4, #0 + bl sub_081976D0 +_080FDD4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FDD50: .4byte gUnknown_85C95D3 +_080FDD54: .4byte sub_080FDE20 + thumb_func_end sub_080FDD0C + + thumb_func_start sub_080FDD58 +sub_080FDD58: @ 0x080FDD58 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r6, r5, #2 + adds r0, r6, r5 + lsls r7, r0, #3 + ldr r0, _080FDDAC + mov r8, r0 + adds r4, r7, r0 + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080FDE0C + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #4 + bne _080FDE00 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #2 + ldrsh r1, [r4, r2] + bl sub_080FE204 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080FDDB8 + ldr r1, _080FDDB0 + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080FE278 + mov r0, r8 + subs r0, #8 + adds r0, r7, r0 + ldr r1, _080FDDB4 + str r1, [r0] + b _080FDE16 + .align 2, 0 +_080FDDAC: .4byte gUnknown_3005B68 +_080FDDB0: .4byte gUnknown_856DCC8 +_080FDDB4: .4byte sub_080FE2E8 +_080FDDB8: + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + adds r3, r6, #0 + ldr r7, _080FDDF4 + movs r6, #3 +_080FDDC8: + adds r0, r1, r7 + adds r1, #1 + ldrb r0, [r0] + cmp r2, r0 + bne _080FDDD8 + adds r0, r1, #0 + ands r0, r6 + strh r0, [r4, #0xa] +_080FDDD8: + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _080FDDC8 + ldr r1, _080FDDF8 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080FDDFC + str r1, [r0] + movs r0, #0 + strh r0, [r4, #6] + strh r0, [r4, #4] + b _080FDE16 + .align 2, 0 +_080FDDF4: .4byte gUnknown_856DCC8 +_080FDDF8: .4byte gUnknown_3005B60 +_080FDDFC: .4byte sub_080FE330 +_080FDE00: + movs r0, #0x48 + bl sub_080A306C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_080FDE0C: + ldrh r0, [r4, #6] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strh r0, [r4, #6] +_080FDE16: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_080FDD58 + + thumb_func_start sub_080FDE20 +sub_080FDE20: @ 0x080FDE20 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + bl sub_08097E7C + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FDE20 + + thumb_func_start sub_080FDE44 +sub_080FDE44: @ 0x080FDE44 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + ldr r1, _080FDF14 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + movs r3, #0 + mov sb, r4 + ldrb r0, [r5, #3] + cmp r3, r0 + bge _080FDEF8 + subs r1, #5 + mov r8, r1 +_080FDE7C: + lsls r3, r3, #0x10 + asrs r1, r3, #0x10 + ldr r2, [r5, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r4, r0, #2 + adds r1, r4, r2 + ldrb r0, [r1, #5] + adds r7, r3, #0 + cmp r0, #7 + bne _080FDEE8 + movs r2, #0xfa + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r1, [r1, #0xa] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDEE8 + ldr r1, [r5, #0x10] + adds r1, r4, r1 + ldrh r2, [r1] + adds r2, #7 + mov r0, sp + ldrh r0, [r0] + subs r2, r2, r0 + ldrh r0, [r1, #2] + adds r0, #7 + mov r3, sb + ldrh r1, [r3] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + movs r3, #0xe0 + lsls r3, r3, #0xb + adds r2, r2, r3 + lsrs r2, r2, #0x10 + cmp r2, #0xe + bhi _080FDEE8 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, r8 + blt _080FDEE8 + cmp r2, #5 + bgt _080FDEE8 + adds r0, r6, #0 + bl sub_080FE134 +_080FDEE8: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r7, r1 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + ldrb r2, [r5, #3] + cmp r0, r2 + blt _080FDE7C +_080FDEF8: + adds r0, r6, #0 + bl sub_080FE01C + ldr r0, _080FDF14 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #1 + beq _080FDF18 + movs r0, #0 + b _080FDF1A + .align 2, 0 +_080FDF14: .4byte gUnknown_3005B60 +_080FDF18: + movs r0, #1 +_080FDF1A: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_080FDE44 + + thumb_func_start sub_080FDF28 +sub_080FDF28: @ 0x080FDF28 + push {r4, r5, r6, lr} + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + ldrb r2, [r0, #3] + ldr r5, [r0, #0x10] + movs r1, #0 + cmp r1, r2 + bge _080FDF7C + lsls r0, r3, #0x10 + asrs r6, r0, #0x10 + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + adds r3, r5, #0 +_080FDF46: + ldrb r0, [r3, #5] + cmp r0, #7 + bne _080FDF74 + ldrh r0, [r3] + cmp r6, r0 + bne _080FDF74 + ldrh r0, [r3, #2] + cmp r4, r0 + bne _080FDF74 + movs r1, #0xfa + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r3, [r3, #0xa] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FDF7C + movs r0, #1 + b _080FDF7E +_080FDF74: + adds r3, #0xc + adds r1, #1 + cmp r1, r2 + blt _080FDF46 +_080FDF7C: + movs r0, #0 +_080FDF7E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080FDF28 + + thumb_func_start sub_080FDF84 +sub_080FDF84: @ 0x080FDF84 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + bl sub_080876A8 + adds r3, r0, #0 + ldrb r0, [r4] + cmp r0, #2 + beq _080FDFAC + cmp r0, #2 + bgt _080FDFA2 + cmp r0, #1 + beq _080FDFC0 + b _080FE000 +_080FDFA2: + cmp r0, #3 + beq _080FDFD8 + cmp r0, #4 + beq _080FDFE2 + b _080FE000 +_080FDFAC: + ldr r0, [r4, #4] + adds r0, #7 + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, [r3] + ldr r0, [r0, #4] + subs r0, #7 + adds r0, r0, r6 + b _080FDFF6 +_080FDFC0: + ldr r0, [r4, #4] + adds r0, #7 + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _080FDFD4 + ldr r0, [r0] + ldr r0, [r0, #4] + b _080FDFF2 + .align 2, 0 +_080FDFD4: .4byte gUnknown_2036FB8 +_080FDFD8: + ldr r0, [r3] + ldr r0, [r0] + subs r0, #7 + adds r0, r0, r5 + b _080FDFEC +_080FDFE2: + ldr r0, _080FDFFC + ldr r0, [r0] + ldr r0, [r0] + adds r0, #7 + subs r0, r5, r0 +_080FDFEC: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, [r4, #4] +_080FDFF2: + adds r0, #7 + subs r0, r6, r0 +_080FDFF6: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _080FE004 + .align 2, 0 +_080FDFFC: .4byte gUnknown_2036FB8 +_080FE000: + movs r0, #0 + b _080FE016 +_080FE004: + ldr r0, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + bl sub_080FDF28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_080FE016: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_080FDF84 + + thumb_func_start sub_080FE01C +sub_080FE01C: @ 0x080FE01C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, _080FE130 + ldr r1, [r0] + ldr r0, [r1] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r1, #4] + adds r0, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + ldrh r0, [r0] + subs r0, #7 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, sp + movs r2, #0 + ldrsh r1, [r1, r2] + adds r1, #7 + cmp r0, r1 + bgt _080FE120 +_080FE06A: + mov r5, sp + ldrh r0, [r5, #2] + subs r0, #5 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r2, r4, #0x10 + asrs r1, r2, #0x10 + movs r6, #2 + ldrsh r0, [r5, r6] + adds r0, #5 + lsls r3, r3, #0x10 + mov r8, r3 + cmp r1, r0 + bgt _080FE10A + movs r0, #7 + str r0, [sp, #0x10] + mov r1, r8 + asrs r1, r1, #0x10 + mov sb, r1 + mov sl, r0 +_080FE092: + ldr r3, [sp, #0x10] + cmp r3, sb + bgt _080FE0B4 + ldr r5, [sp, #8] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp sb, r0 + bge _080FE0B4 + asrs r1, r2, #0x10 + cmp sl, r1 + bgt _080FE0B4 + ldr r6, [sp, #0xc] + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + lsls r7, r4, #0x10 + cmp r1, r0 + blt _080FE0F2 +_080FE0B4: + mov r0, r8 + asrs r5, r0, #0x10 + lsls r4, r4, #0x10 + asrs r6, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080883F0 + adds r7, r4, #0 + cmp r0, #0 + beq _080FE0F2 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080FDF84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE0F2 + mov r0, sp + ldrh r1, [r0] + subs r1, r5, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r0, #2] + subs r2, r6, r2 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r0, [sp, #4] + bl sub_080FE134 +_080FE0F2: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r7, r1 + lsrs r4, r0, #0x10 + lsls r2, r4, #0x10 + asrs r1, r2, #0x10 + mov r3, sp + movs r5, #2 + ldrsh r0, [r3, r5] + adds r0, #5 + cmp r1, r0 + ble _080FE092 +_080FE10A: + movs r1, #0x80 + lsls r1, r1, #9 + add r1, r8 + lsrs r3, r1, #0x10 + asrs r1, r1, #0x10 + mov r0, sp + movs r6, #0 + ldrsh r0, [r0, r6] + adds r0, #7 + cmp r1, r0 + ble _080FE06A +_080FE120: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FE130: .4byte gUnknown_2036FB8 + thumb_func_end sub_080FE01C + + thumb_func_start sub_080FE134 +sub_080FE134: @ 0x080FE134 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov ip, r2 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _080FE168 + adds r3, r1, r0 + movs r1, #4 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _080FE16C + strh r7, [r3] + mov r0, ip + strh r0, [r3, #2] + movs r0, #1 + strh r0, [r3, #4] + b _080FE1F6 + .align 2, 0 +_080FE168: .4byte gUnknown_3005B68 +_080FE16C: + movs r1, #0 + ldrsh r0, [r3, r1] + cmp r0, #0 + bge _080FE17C + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _080FE17E +_080FE17C: + ldrh r4, [r3] +_080FE17E: + movs r1, #2 + ldrsh r0, [r3, r1] + ldrh r1, [r3, #2] + mov sb, r1 + cmp r0, #0 + bge _080FE192 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _080FE194 +_080FE192: + ldrh r2, [r3, #2] +_080FE194: + lsls r1, r7, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0 + bge _080FE1A4 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _080FE1A6 +_080FE1A4: + lsrs r6, r1, #0x10 +_080FE1A6: + mov r1, ip + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + mov r8, r0 + cmp r1, #0 + bge _080FE1B8 + rsbs r0, r1, #0 + lsls r0, r0, #0x10 + b _080FE1BA +_080FE1B8: + mov r0, r8 +_080FE1BA: + lsrs r5, r0, #0x10 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + lsls r1, r2, #0x10 + asrs r2, r1, #0x10 + adds r4, r0, r2 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r1 + cmp r4, r0 + ble _080FE1DC + strh r7, [r3] + mov r1, ip + strh r1, [r3, #2] + b _080FE1F6 +_080FE1DC: + cmp r4, r0 + bne _080FE1F6 + cmp r2, r1 + bgt _080FE1F0 + cmp r2, r1 + bne _080FE1F6 + mov r1, sb + lsls r0, r1, #0x10 + cmp r0, r8 + bge _080FE1F6 +_080FE1F0: + strh r7, [r3] + mov r0, ip + strh r0, [r3, #2] +_080FE1F6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FE134 + + thumb_func_start sub_080FE204 +sub_080FE204: @ 0x080FE204 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r2, r0, #0x10 + cmp r0, #0 + bne _080FE216 + cmp r1, #0 + beq _080FE270 +_080FE216: + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + adds r5, r0, #0 + cmp r2, #0 + bge _080FE228 + rsbs r0, r2, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _080FE22A +_080FE228: + lsrs r4, r5, #0x10 +_080FE22A: + lsls r0, r1, #0x10 + asrs r2, r0, #0x10 + adds r1, r0, #0 + cmp r2, #0 + bge _080FE23C + rsbs r0, r2, #0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + b _080FE23E +_080FE23C: + lsrs r3, r1, #0x10 +_080FE23E: + lsls r0, r4, #0x10 + asrs r2, r0, #0x10 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r2, r0 + ble _080FE256 + cmp r5, #0 + bge _080FE252 + movs r0, #4 + b _080FE272 +_080FE252: + movs r0, #2 + b _080FE272 +_080FE256: + cmp r2, r0 + bge _080FE260 + cmp r1, #0 + blt _080FE268 + b _080FE26C +_080FE260: + cmp r2, r0 + bne _080FE270 + cmp r1, #0 + bge _080FE26C +_080FE268: + movs r0, #1 + b _080FE272 +_080FE26C: + movs r0, #3 + b _080FE272 +_080FE270: + movs r0, #0 +_080FE272: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_080FE204 + + thumb_func_start sub_080FE278 +sub_080FE278: @ 0x080FE278 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _080FE2E4 + adds r0, r0, r4 + bl sub_08092BF4 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08092BAC + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08096E84 + adds r0, r5, #0 + bl sub_0808B18C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE2E4: .4byte gUnknown_2036FF0 + thumb_func_end sub_080FE278 + + thumb_func_start sub_080FE2E8 +sub_080FE2E8: @ 0x080FE2E8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080FE324 + adds r0, r0, r1 + bl sub_08092BE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE31E + ldr r1, _080FE328 + ldr r2, _080FE32C + adds r0, r4, #0 + bl sub_081976D0 +_080FE31E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE324: .4byte gUnknown_2036FF0 +_080FE328: .4byte gUnknown_85C958E +_080FE32C: .4byte sub_080FDE20 + thumb_func_end sub_080FE2E8 + + thumb_func_start sub_080FE330 +sub_080FE330: @ 0x080FE330 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _080FE3AC + adds r4, r0, r1 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080FE3B0 + adds r0, r0, r1 + bl sub_08092BE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _080FE370 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080FE3A4 +_080FE370: + ldr r1, _080FE3B4 + movs r2, #0xa + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080FE278 + movs r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4, #0xa] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #6] + adds r0, #1 + strh r0, [r4, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _080FE3A4 + ldr r1, _080FE3B8 + ldr r2, _080FE3BC + adds r0, r5, #0 + bl sub_081976D0 +_080FE3A4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE3AC: .4byte gUnknown_3005B68 +_080FE3B0: .4byte gUnknown_2036FF0 +_080FE3B4: .4byte gUnknown_856DCC8 +_080FE3B8: .4byte gUnknown_85C95B6 +_080FE3BC: .4byte sub_080FDE20 + thumb_func_end sub_080FE330 + + thumb_func_start sub_080FE3C0 +sub_080FE3C0: @ 0x080FE3C0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE3EC + ldr r0, _080FE3E8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #0xe] + adds r0, r4, #0 + bl sub_080FDA1C + b _080FE42E + .align 2, 0 +_080FE3E8: .4byte gUnknown_3005B60 +_080FE3EC: + ldr r0, _080FE410 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r5, r1, r0 + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _080FE41C + ldr r0, _080FE414 + ldr r1, [r0] + ldr r0, _080FE418 + str r0, [r1] + adds r0, r4, #0 + bl sub_081AB6A4 + b _080FE42E + .align 2, 0 +_080FE410: .4byte gUnknown_3005B60 +_080FE414: .4byte gUnknown_203CB20 +_080FE418: .4byte sub_080FE440 +_080FE41C: + ldr r0, _080FE434 + ldr r1, _080FE438 + str r1, [r0] + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _080FE43C + str r0, [r5] +_080FE42E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE434: .4byte gUnknown_3005B0C +_080FE438: .4byte sub_080AEFD0 +_080FE43C: .4byte sub_080FE454 + thumb_func_end sub_080FE3C0 + + thumb_func_start sub_080FE440 +sub_080FE440: @ 0x080FE440 + push {lr} + ldr r1, _080FE450 + movs r0, #0 + bl sub_08135850 + pop {r0} + bx r0 + .align 2, 0 +_080FE450: .4byte sub_081AD204 + thumb_func_end sub_080FE440 + + thumb_func_start sub_080FE454 +sub_080FE454: @ 0x080FE454 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FE480 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080FE478 + bl sub_0808569C + ldr r1, _080FE484 + movs r0, #0 + bl sub_08135850 + adds r0, r4, #0 + bl sub_080A8964 +_080FE478: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE480: .4byte gUnknown_2037C74 +_080FE484: .4byte sub_08085A30 + thumb_func_end sub_080FE454 + + thumb_func_start sub_080FE488 +sub_080FE488: @ 0x080FE488 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080FE4D0 + bl sub_08145CF0 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + movs r3, #4 + bl sub_080089D8 + ldr r4, _080FE4D4 + ldr r1, _080FE4D8 + adds r0, r4, #0 + bl sub_08008BCC + ldr r1, _080FE4DC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080FE4E4 + ldr r3, _080FE4E0 + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + b _080FE4EE + .align 2, 0 +_080FE4D0: .4byte gUnknown_2021C40 +_080FE4D4: .4byte gUnknown_2021C7C +_080FE4D8: .4byte gUnknown_85C95F0 +_080FE4DC: .4byte gUnknown_3005B60 +_080FE4E0: .4byte sub_081AB968 +_080FE4E4: + ldr r2, _080FE4F4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_080FE4EE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE4F4: .4byte sub_080FDA4C + thumb_func_end sub_080FE488 + + thumb_func_start sub_080FE4F8 +sub_080FE4F8: @ 0x080FE4F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080FE53C + bl sub_08024588 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + ldr r4, _080FE540 + ldr r1, _080FE544 + adds r0, r4, #0 + bl sub_08008BCC + ldr r1, _080FE548 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080FE550 + ldr r3, _080FE54C + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + b _080FE55A + .align 2, 0 +_080FE53C: .4byte gUnknown_2021C40 +_080FE540: .4byte gUnknown_2021C7C +_080FE544: .4byte gUnknown_85C96CE +_080FE548: .4byte gUnknown_3005B60 +_080FE54C: .4byte sub_081AB968 +_080FE550: + ldr r2, _080FE560 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_080FE55A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE560: .4byte sub_080FDA4C + thumb_func_end sub_080FE4F8 + + thumb_func_start sub_080FE564 +sub_080FE564: @ 0x080FE564 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080E0C84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE5AC + ldr r1, _080FE594 + ldr r0, _080FE598 + str r0, [r1] + ldr r1, _080FE59C + ldr r0, _080FE5A0 + str r0, [r1] + ldr r0, _080FE5A4 + ldr r1, [r0] + ldr r0, _080FE5A8 + str r0, [r1] + adds r0, r4, #0 + bl sub_081AB6A4 + b _080FE5BC + .align 2, 0 +_080FE594: .4byte gUnknown_2039DC0 +_080FE598: .4byte sub_080FE5C8 +_080FE59C: .4byte gUnknown_3005B0C +_080FE5A0: .4byte sub_080FD978 +_080FE5A4: .4byte gUnknown_203CB20 +_080FE5A8: .4byte sub_08085A30 +_080FE5AC: + ldr r0, _080FE5C4 + ldrh r0, [r0] + bl sub_080D6DF8 + adds r1, r0, #0 + adds r0, r4, #0 + bl _call_via_r1 +_080FE5BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE5C4: .4byte gUnknown_203CB48 + thumb_func_end sub_080FE564 + + thumb_func_start sub_080FE5C8 +sub_080FE5C8: @ 0x080FE5C8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _080FE5F0 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + bl sub_080987DC + ldr r0, _080FE5F4 + bl sub_08098880 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE5F0: .4byte gUnknown_203CB48 +_080FE5F4: .4byte gUnknown_8244E9D + thumb_func_end sub_080FE5C8 + + thumb_func_start sub_080FE5F8 +sub_080FE5F8: @ 0x080FE5F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080FE680 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE61C + ldr r1, _080FE614 + ldr r0, _080FE618 + b _080FE62C + .align 2, 0 +_080FE614: .4byte gUnknown_2039DC0 +_080FE618: .4byte sub_080FE6D0 +_080FE61C: + bl sub_080E0CBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FE640 + ldr r1, _080FE638 + ldr r0, _080FE63C +_080FE62C: + str r0, [r1] + adds r0, r4, #0 + bl sub_080FD930 + b _080FE652 + .align 2, 0 +_080FE638: .4byte gUnknown_2039DC0 +_080FE63C: .4byte sub_080FE65C +_080FE640: + ldr r0, _080FE658 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #0xe] + adds r0, r5, #0 + bl sub_080FDA1C +_080FE652: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE658: .4byte gUnknown_3005B60 + thumb_func_end sub_080FE5F8 + + thumb_func_start sub_080FE65C +sub_080FE65C: @ 0x080FE65C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + ldr r0, _080FE67C + bl sub_08098880 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE67C: .4byte gUnknown_8244ED8 + thumb_func_end sub_080FE65C + + thumb_func_start sub_080FE680 +sub_080FE680: @ 0x080FE680 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + bl sub_0808B5D8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, sp + ldrh r0, [r0] + ldrh r1, [r4] + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x10 + beq _080FE6BC + ldr r0, _080FE6C0 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #5] + cmp r0, #0xe4 + beq _080FE6C4 +_080FE6BC: + movs r0, #0 + b _080FE6C6 + .align 2, 0 +_080FE6C0: .4byte gUnknown_2036FF0 +_080FE6C4: + movs r0, #1 +_080FE6C6: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FE680 + + thumb_func_start sub_080FE6D0 +sub_080FE6D0: @ 0x080FE6D0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + ldr r0, _080FE6F0 + bl sub_08098880 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE6F0: .4byte gUnknown_8222A99 + thumb_func_end sub_080FE6D0 + + thumb_func_start sub_080FE6F4 +sub_080FE6F4: @ 0x080FE6F4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE708 + ldr r1, _080FE70C + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE708: .4byte gUnknown_3006068 +_080FE70C: .4byte sub_081B6228 + thumb_func_end sub_080FE6F4 + + thumb_func_start sub_080FE710 +sub_080FE710: @ 0x080FE710 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE724 + ldr r1, _080FE728 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE724: .4byte gUnknown_3006068 +_080FE728: .4byte sub_081B6468 + thumb_func_end sub_080FE710 + + thumb_func_start sub_080FE72C +sub_080FE72C: @ 0x080FE72C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE740 + ldr r1, _080FE744 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE740: .4byte gUnknown_3006068 +_080FE744: .4byte sub_081B768C + thumb_func_end sub_080FE72C + + thumb_func_start sub_080FE748 +sub_080FE748: @ 0x080FE748 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE75C + ldr r1, _080FE760 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE75C: .4byte gUnknown_3006068 +_080FE760: .4byte sub_081B67C4 + thumb_func_end sub_080FE748 + + thumb_func_start sub_080FE764 +sub_080FE764: @ 0x080FE764 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE778 + ldr r1, _080FE77C + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE778: .4byte gUnknown_3006068 +_080FE77C: .4byte sub_081B6978 + thumb_func_end sub_080FE764 + + thumb_func_start sub_080FE780 +sub_080FE780: @ 0x080FE780 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE794 + ldr r1, _080FE798 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE794: .4byte gUnknown_3006068 +_080FE798: .4byte sub_081B70B0 + thumb_func_end sub_080FE780 + + thumb_func_start sub_080FE79C +sub_080FE79C: @ 0x080FE79C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FE7BC + ldrh r1, [r0] + movs r0, #0xa9 + lsls r0, r0, #1 + cmp r1, r0 + bls _080FE7C8 + ldr r2, _080FE7C0 + ldr r3, _080FE7C4 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FE7D4 + .align 2, 0 +_080FE7BC: .4byte gUnknown_203CB48 +_080FE7C0: .4byte gUnknown_85C960E +_080FE7C4: .4byte sub_080FE7E4 +_080FE7C8: + ldr r2, _080FE7DC + ldr r3, _080FE7E0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 +_080FE7D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE7DC: .4byte gUnknown_85C9600 +_080FE7E0: .4byte sub_080FE7E4 + thumb_func_end sub_080FE79C + + thumb_func_start sub_080FE7E4 +sub_080FE7E4: @ 0x080FE7E4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + bl sub_080A306C + ldr r1, _080FE808 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _080FE80C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FE808: .4byte gUnknown_3005B60 +_080FE80C: .4byte sub_080FE810 + thumb_func_end sub_080FE7E4 + + thumb_func_start sub_080FE810 +sub_080FE810: @ 0x080FE810 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _080FE858 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080FE852 + ldr r4, _080FE85C + ldr r0, _080FE860 + ldrh r0, [r0] + bl sub_081B69B4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xd + ldr r0, _080FE864 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r4, _080FE868 + ldr r1, _080FE86C + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _080FE870 + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 +_080FE852: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE858: .4byte gUnknown_3002360 +_080FE85C: .4byte gUnknown_2021C40 +_080FE860: .4byte gUnknown_203CB48 +_080FE864: .4byte gUnknown_82EACC4 +_080FE868: .4byte gUnknown_2021C7C +_080FE86C: .4byte gUnknown_85C961D +_080FE870: .4byte sub_080FE874 + thumb_func_end sub_080FE810 + + thumb_func_start sub_080FE874 +sub_080FE874: @ 0x080FE874 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE888 + movs r1, #6 + bl sub_081ADF10 + pop {r0} + bx r0 + .align 2, 0 +_080FE888: .4byte gUnknown_856DCCC + thumb_func_end sub_080FE874 + + thumb_func_start sub_080FE88C +sub_080FE88C: @ 0x080FE88C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FE8A0 + ldr r1, _080FE8A4 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FE8A0: .4byte gUnknown_3006068 +_080FE8A4: .4byte sub_081B6A7C + thumb_func_end sub_080FE88C + + thumb_func_start sub_080FE8A8 +sub_080FE8A8: @ 0x080FE8A8 + push {r4, lr} + ldr r4, _080FE8EC + ldrh r0, [r4] + movs r1, #1 + bl sub_080D62BC + ldrh r0, [r4] + ldr r1, _080FE8F0 + bl sub_080D5EC8 + ldr r0, _080FE8F4 + ldr r1, _080FE8F8 + bl sub_08008BCC + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FE8FC + ldrh r0, [r4] + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AB754 + ldrh r0, [r4] + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AB834 + b _080FE904 + .align 2, 0 +_080FE8EC: .4byte gUnknown_203CB48 +_080FE8F0: .4byte gUnknown_2021C54 +_080FE8F4: .4byte gUnknown_2021C7C +_080FE8F8: .4byte gUnknown_85C9644 +_080FE8FC: + bl sub_081C5120 + bl sub_081C51B8 +_080FE904: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FE8A8 + + thumb_func_start sub_080FE90C +sub_080FE90C: @ 0x080FE90C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _080FE930 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080FE93C + ldr r0, _080FE934 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080FE938 + str r0, [r1] + b _080FE966 + .align 2, 0 +_080FE930: .4byte 0x00004021 +_080FE934: .4byte gUnknown_3005B60 +_080FE938: .4byte sub_080FE974 +_080FE93C: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FE95C + ldr r2, _080FE954 + ldr r3, _080FE958 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FE966 + .align 2, 0 +_080FE954: .4byte gUnknown_85C9654 +_080FE958: .4byte sub_081AB968 +_080FE95C: + ldr r1, _080FE96C + ldr r2, _080FE970 + adds r0, r5, #0 + bl sub_081C6598 +_080FE966: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE96C: .4byte gUnknown_85C9654 +_080FE970: .4byte sub_081C5F24 + thumb_func_end sub_080FE90C + + thumb_func_start sub_080FE974 +sub_080FE974: @ 0x080FE974 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r4, r1, #3 + ldr r5, _080FE9AC + adds r1, r4, r5 + ldrh r0, [r1, #0x10] + adds r0, #1 + strh r0, [r1, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080FE9A6 + movs r0, #0 + strh r0, [r1, #0x10] + movs r0, #0x2f + bl sub_080A306C + adds r0, r5, #0 + subs r0, #8 + adds r0, r4, r0 + ldr r1, _080FE9B0 + str r1, [r0] +_080FE9A6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FE9AC: .4byte gUnknown_3005B68 +_080FE9B0: .4byte sub_080FE9B4 + thumb_func_end sub_080FE974 + + thumb_func_start sub_080FE9B4 +sub_080FE9B4: @ 0x080FE9B4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEA12 + ldr r4, _080FE9F8 + ldr r0, _080FE9FC + ldrh r0, [r0] + bl sub_080D6D1C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809CF88 + bl sub_080FE8A8 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEA08 + ldr r2, _080FEA00 + ldr r3, _080FEA04 + adds r0, r5, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FEA12 + .align 2, 0 +_080FE9F8: .4byte 0x00004021 +_080FE9FC: .4byte gUnknown_203CB48 +_080FEA00: .4byte gUnknown_2021C7C +_080FEA04: .4byte sub_081AB968 +_080FEA08: + ldr r1, _080FEA18 + ldr r2, _080FEA1C + adds r0, r6, #0 + bl sub_081C6598 +_080FEA12: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FEA18: .4byte gUnknown_2021C7C +_080FEA1C: .4byte sub_081C5F24 + thumb_func_end sub_080FE9B4 + + thumb_func_start sub_080FEA20 +sub_080FEA20: @ 0x080FEA20 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _080FEA60 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080FEA76 + movs r0, #0x75 + bl sub_080A306C + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEA6C + ldr r2, _080FEA64 + ldr r3, _080FEA68 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FEA76 + .align 2, 0 +_080FEA60: .4byte gUnknown_3005B60 +_080FEA64: .4byte gUnknown_2021C7C +_080FEA68: .4byte sub_081AB968 +_080FEA6C: + ldr r1, _080FEA7C + ldr r2, _080FEA80 + adds r0, r5, #0 + bl sub_081C6598 +_080FEA76: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FEA7C: .4byte gUnknown_2021C7C +_080FEA80: .4byte sub_081C5F24 + thumb_func_end sub_080FEA20 + + thumb_func_start sub_080FEA84 +sub_080FEA84: @ 0x080FEA84 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _080FEAB0 + ldrh r0, [r4] + ldr r1, _080FEAB4 + bl sub_080D5EC8 + ldrh r0, [r4] + cmp r0, #0x2b + bne _080FEAC8 + ldr r0, _080FEAB8 + bl sub_0809D018 + ldr r0, _080FEABC + bl sub_0809D040 + ldr r0, _080FEAC0 + ldr r1, _080FEAC4 + bl sub_08008BCC + b _080FEADC + .align 2, 0 +_080FEAB0: .4byte gUnknown_203CB48 +_080FEAB4: .4byte gUnknown_2021C54 +_080FEAB8: .4byte 0x000008AD +_080FEABC: .4byte 0x000008AE +_080FEAC0: .4byte gUnknown_2021C7C +_080FEAC4: .4byte gUnknown_85C9675 +_080FEAC8: + ldr r0, _080FEAF4 + bl sub_0809D018 + ldr r0, _080FEAF8 + bl sub_0809D040 + ldr r0, _080FEAFC + ldr r1, _080FEB00 + bl sub_08008BCC +_080FEADC: + ldr r1, _080FEB04 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x18] + ldr r1, _080FEB08 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FEAF4: .4byte 0x000008AE +_080FEAF8: .4byte 0x000008AD +_080FEAFC: .4byte gUnknown_2021C7C +_080FEB00: .4byte gUnknown_85C9699 +_080FEB04: .4byte gUnknown_3005B60 +_080FEB08: .4byte sub_080FEA20 + thumb_func_end sub_080FEA84 + + thumb_func_start sub_080FEB0C +sub_080FEB0C: @ 0x080FEB0C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08084BD0 + bl sub_080B7420 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FEB0C + + thumb_func_start sub_080FEB28 +sub_080FEB28: @ 0x080FEB28 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0808406C + bl sub_080FE8A8 + ldr r1, _080FEB58 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + ldr r1, _080FEB5C + ldr r2, _080FEB60 + adds r0, r4, #0 + bl sub_081976D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEB58: .4byte gUnknown_3005B60 +_080FEB5C: .4byte gUnknown_2021C7C +_080FEB60: .4byte sub_080FEB0C + thumb_func_end sub_080FEB28 + + thumb_func_start sub_080FEB64 +sub_080FEB64: @ 0x080FEB64 + push {lr} + ldr r0, _080FEB78 + ldrb r1, [r0, #0x1a] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080FEB7C + movs r0, #0 + b _080FEB7E + .align 2, 0 +_080FEB78: .4byte gUnknown_2036FB8 +_080FEB7C: + movs r0, #1 +_080FEB7E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_080FEB64 + + thumb_func_start sub_080FEB84 +sub_080FEB84: @ 0x080FEB84 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080FEB64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FEBAC + ldr r1, _080FEBA4 + ldr r0, _080FEBA8 + str r0, [r1] + adds r0, r4, #0 + bl sub_080FD930 + b _080FEBBE + .align 2, 0 +_080FEBA4: .4byte gUnknown_2039DC0 +_080FEBA8: .4byte sub_080FEB28 +_080FEBAC: + ldr r0, _080FEBC4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #0xe] + adds r0, r4, #0 + bl sub_080FDA1C +_080FEBBE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEBC4: .4byte gUnknown_3005B60 + thumb_func_end sub_080FEB84 + + thumb_func_start sub_080FEBC8 +sub_080FEBC8: @ 0x080FEBC8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FEBDC + ldr r1, _080FEBE0 + str r1, [r2] + bl sub_080FD8B4 + pop {r0} + bx r0 + .align 2, 0 +_080FEBDC: .4byte gUnknown_3006068 +_080FEBE0: .4byte sub_081B7918 + thumb_func_end sub_080FEBC8 + + thumb_func_start sub_080FEBE4 +sub_080FEBE4: @ 0x080FEBE4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_0806B378 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEC20 + ldr r0, _080FEC14 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEC18 + adds r0, r4, #0 + bl sub_081AB6A4 + b _080FEC4A + .align 2, 0 +_080FEC14: .4byte gUnknown_203CB48 +_080FEC18: + adds r0, r4, #0 + bl sub_081C5310 + b _080FEC4A +_080FEC20: + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEC40 + ldr r2, _080FEC38 + ldr r3, _080FEC3C + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FEC4A + .align 2, 0 +_080FEC38: .4byte gUnknown_85C96BD +_080FEC3C: .4byte sub_081AB968 +_080FEC40: + ldr r1, _080FEC50 + ldr r2, _080FEC54 + adds r0, r5, #0 + bl sub_081C6598 +_080FEC4A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FEC50: .4byte gUnknown_85C96BD +_080FEC54: .4byte sub_081C5F24 + thumb_func_end sub_080FEBE4 + + thumb_func_start sub_080FEC58 +sub_080FEC58: @ 0x080FEC58 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _080FEC80 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _080FEC8A + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEC84 + adds r0, r4, #0 + bl sub_081AB6A4 + b _080FEC8A + .align 2, 0 +_080FEC80: .4byte gUnknown_3002360 +_080FEC84: + adds r0, r5, #0 + bl sub_081C5310 +_080FEC8A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_080FEC58 + + thumb_func_start sub_080FEC90 +sub_080FEC90: @ 0x080FEC90 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + ldr r0, _080FECE0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _080FECFC + movs r0, #1 + bl sub_080A306C + ldr r4, _080FECE4 + ldrh r0, [r4] + movs r1, #1 + bl sub_080D62BC + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FECEC + ldrh r0, [r4] + bl sub_0806CA3C + adds r2, r0, #0 + ldr r3, _080FECE8 + adds r0, r5, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FECFC + .align 2, 0 +_080FECE0: .4byte gUnknown_3005B60 +_080FECE4: .4byte gUnknown_203CB48 +_080FECE8: .4byte sub_080FEC58 +_080FECEC: + ldrh r0, [r4] + bl sub_0806CA3C + adds r1, r0, #0 + ldr r2, _080FED04 + adds r0, r6, #0 + bl sub_081C6598 +_080FECFC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FED04: .4byte sub_080FEC58 + thumb_func_end sub_080FEC90 + + thumb_func_start sub_080FED08 +sub_080FED08: @ 0x080FED08 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _080FED50 + ldr r0, _080FED54 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _080FED58 + adds r0, r0, r1 + ldr r1, _080FED5C + ldrh r1, [r1] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #0 + bl sub_0806B7C8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _080FED7C + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FED68 + ldr r2, _080FED60 + ldr r3, _080FED64 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FED8C + .align 2, 0 +_080FED50: .4byte gUnknown_2023D12 +_080FED54: .4byte gUnknown_202415C +_080FED58: .4byte gUnknown_2024190 +_080FED5C: .4byte gUnknown_203CB48 +_080FED60: .4byte gUnknown_85C9AF7 +_080FED64: .4byte sub_081AB968 +_080FED68: + ldr r1, _080FED74 + ldr r2, _080FED78 + adds r0, r4, #0 + bl sub_081C6598 + b _080FED8C + .align 2, 0 +_080FED74: .4byte gUnknown_85C9AF7 +_080FED78: .4byte sub_081C5F24 +_080FED7C: + ldr r0, _080FED94 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _080FED98 + str r0, [r1] + strh r2, [r1, #0x18] +_080FED8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FED94: .4byte gUnknown_3005B60 +_080FED98: .4byte sub_080FEC90 + thumb_func_end sub_080FED08 + + thumb_func_start sub_080FED9C +sub_080FED9C: @ 0x080FED9C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEDC4 + ldr r0, _080FEDBC + ldr r1, [r0] + ldr r0, _080FEDC0 + str r0, [r1] + adds r0, r4, #0 + bl sub_081AB6A4 + b _080FEDD2 + .align 2, 0 +_080FEDBC: .4byte gUnknown_203CB20 +_080FEDC0: .4byte sub_081B8690 +_080FEDC4: + ldr r0, _080FEDD8 + ldr r1, [r0] + ldr r0, _080FEDDC + str r0, [r1] + adds r0, r4, #0 + bl sub_081C5310 +_080FEDD2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEDD8: .4byte gUnknown_203CBF8 +_080FEDDC: .4byte sub_081B8690 + thumb_func_end sub_080FED9C + + thumb_func_start sub_080FEDE0 +sub_080FEDE0: @ 0x080FEDE0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FEDF4 + ldr r1, _080FEDF8 + str r1, [r2] + bl sub_080FED9C + pop {r0} + bx r0 + .align 2, 0 +_080FEDF4: .4byte gUnknown_3006068 +_080FEDF8: .4byte sub_081B6228 + thumb_func_end sub_080FEDE0 + + thumb_func_start sub_080FEDFC +sub_080FEDFC: @ 0x080FEDFC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FEE10 + ldr r1, _080FEE14 + str r1, [r2] + bl sub_080FED9C + pop {r0} + bx r0 + .align 2, 0 +_080FEE10: .4byte gUnknown_3006068 +_080FEE14: .4byte sub_081B768C + thumb_func_end sub_080FEDFC + + thumb_func_start sub_080FEE18 +sub_080FEE18: @ 0x080FEE18 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FEE2C + ldr r1, _080FEE30 + str r1, [r2] + bl sub_080FED9C + pop {r0} + bx r0 + .align 2, 0 +_080FEE2C: .4byte gUnknown_3006068 +_080FEE30: .4byte sub_081B67C4 + thumb_func_end sub_080FEE18 + + thumb_func_start sub_080FEE34 +sub_080FEE34: @ 0x080FEE34 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FEE64 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080FEE84 + bl sub_080FE8A8 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FEE70 + ldr r2, _080FEE68 + ldr r3, _080FEE6C + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _080FEE96 + .align 2, 0 +_080FEE64: .4byte gUnknown_2022C90 +_080FEE68: .4byte gUnknown_2021C7C +_080FEE6C: .4byte sub_081AB6A4 +_080FEE70: + ldr r1, _080FEE7C + ldr r2, _080FEE80 + adds r0, r4, #0 + bl sub_081C6598 + b _080FEE96 + .align 2, 0 +_080FEE7C: .4byte gUnknown_2021C7C +_080FEE80: .4byte sub_081C5310 +_080FEE84: + ldr r0, _080FEE9C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #0xe] + adds r0, r4, #0 + bl sub_080FDA1C +_080FEE96: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEE9C: .4byte gUnknown_3005B60 + thumb_func_end sub_080FEE34 + + thumb_func_start sub_080FEEA0 +sub_080FEEA0: @ 0x080FEEA0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FEEC4 + ldrh r0, [r0] + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #0x14 + bls _080FEEBA + b _080FEFAC +_080FEEBA: + lsls r0, r0, #2 + ldr r1, _080FEEC8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FEEC4: .4byte gUnknown_203CB48 +_080FEEC8: .4byte _080FEECC +_080FEECC: @ jump table + .4byte _080FEF58 @ case 0 + .4byte _080FEF20 @ case 1 + .4byte _080FEF20 @ case 2 + .4byte _080FEF20 @ case 3 + .4byte _080FEF20 @ case 4 + .4byte _080FEF20 @ case 5 + .4byte _080FEF20 @ case 6 + .4byte _080FEFAC @ case 7 + .4byte _080FEFAC @ case 8 + .4byte _080FEF3C @ case 9 + .4byte _080FEF20 @ case 10 + .4byte _080FEF20 @ case 11 + .4byte _080FEF20 @ case 12 + .4byte _080FEF20 @ case 13 + .4byte _080FEF20 @ case 14 + .4byte _080FEF20 @ case 15 + .4byte _080FEF20 @ case 16 + .4byte _080FEFAC @ case 17 + .4byte _080FEF74 @ case 18 + .4byte _080FEF74 @ case 19 + .4byte _080FEF90 @ case 20 +_080FEF20: + ldr r0, _080FEF38 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FE6F4 + b _080FEFC0 + .align 2, 0 +_080FEF38: .4byte gUnknown_3005B60 +_080FEF3C: + ldr r0, _080FEF54 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FE72C + b _080FEFC0 + .align 2, 0 +_080FEF54: .4byte gUnknown_3005B60 +_080FEF58: + ldr r0, _080FEF70 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FE780 + b _080FEFC0 + .align 2, 0 +_080FEF70: .4byte gUnknown_3005B60 +_080FEF74: + ldr r0, _080FEF8C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FE764 + b _080FEFC0 + .align 2, 0 +_080FEF8C: .4byte gUnknown_3005B60 +_080FEF90: + ldr r0, _080FEFA8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FE748 + b _080FEFC0 + .align 2, 0 +_080FEFA8: .4byte gUnknown_3005B60 +_080FEFAC: + ldr r0, _080FEFC8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #4 + strh r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_080FF070 +_080FEFC0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FEFC8: .4byte gUnknown_3005B60 + thumb_func_end sub_080FEEA0 + + thumb_func_start sub_080FEFCC +sub_080FEFCC: @ 0x080FEFCC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _080FEFEC + ldrh r0, [r0] + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x15 + bhi _080FF064 + lsls r0, r0, #2 + ldr r1, _080FEFF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080FEFEC: .4byte gUnknown_203CB48 +_080FEFF0: .4byte _080FEFF4 +_080FEFF4: @ jump table + .4byte _080FF04C @ case 0 + .4byte _080FF064 @ case 1 + .4byte _080FF054 @ case 2 + .4byte _080FF054 @ case 3 + .4byte _080FF054 @ case 4 + .4byte _080FF054 @ case 5 + .4byte _080FF054 @ case 6 + .4byte _080FF054 @ case 7 + .4byte _080FF054 @ case 8 + .4byte _080FF054 @ case 9 + .4byte _080FF064 @ case 10 + .4byte _080FF054 @ case 11 + .4byte _080FF064 @ case 12 + .4byte _080FF064 @ case 13 + .4byte _080FF064 @ case 14 + .4byte _080FF064 @ case 15 + .4byte _080FF064 @ case 16 + .4byte _080FF064 @ case 17 + .4byte _080FF064 @ case 18 + .4byte _080FF064 @ case 19 + .4byte _080FF064 @ case 20 + .4byte _080FF05C @ case 21 +_080FF04C: + adds r0, r4, #0 + bl sub_080FED08 + b _080FF06A +_080FF054: + adds r0, r4, #0 + bl sub_080FEDE0 + b _080FF06A +_080FF05C: + adds r0, r4, #0 + bl sub_080FEE18 + b _080FF06A +_080FF064: + adds r0, r4, #0 + bl sub_080FF070 +_080FF06A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FEFCC + + thumb_func_start sub_080FF070 +sub_080FF070: @ 0x080FF070 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _080FF08C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r1, [r1, #0xe] + bl sub_080FDA1C + pop {r0} + bx r0 + .align 2, 0 +_080FF08C: .4byte gUnknown_3005B60 + thumb_func_end sub_080FF070 + + thumb_func_start sub_080FF090 +sub_080FF090: @ 0x080FF090 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080FF0C4 + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #6] + strh r0, [r4, #0x30] + ldr r0, _080FF0C8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF0CC + ldrh r0, [r5, #8] + rsbs r0, r0, #0 + b _080FF0CE + .align 2, 0 +_080FF0C4: .4byte gUnknown_20380BE +_080FF0C8: .4byte gUnknown_20380D6 +_080FF0CC: + ldrh r0, [r5, #8] +_080FF0CE: + strh r0, [r4, #0x34] + ldr r0, _080FF0E0 + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x36] + ldr r0, _080FF0E4 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF0E0: .4byte gUnknown_20380BE +_080FF0E4: .4byte sub_080FF0E8 + thumb_func_end sub_080FF090 + + thumb_func_start sub_080FF0E8 +sub_080FF0E8: @ 0x080FF0E8 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _080FF124 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r1, r1, r0 + strh r1, [r4, #0x32] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x34 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x38] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _080FF12A +_080FF124: + adds r0, r4, #0 + bl sub_080A34C4 +_080FF12A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FF0E8 + + thumb_func_start sub_080FF130 +sub_080FF130: @ 0x080FF130 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _080FF170 + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + ldr r5, _080FF174 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _080FF178 + str r0, [r4, #0x1c] + ldr r1, _080FF17C + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF170: .4byte gUnknown_20380BE +_080FF174: .4byte gUnknown_20380D6 +_080FF178: .4byte sub_080A67B4 +_080FF17C: .4byte sub_080A6014 + thumb_func_end sub_080FF130 + + thumb_func_start sub_080FF180 +sub_080FF180: @ 0x080FF180 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r5, _080FF1C8 + ldrb r1, [r5, #6] + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldr r5, _080FF1CC + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _080FF1D0 + str r0, [r4, #0x1c] + ldr r1, _080FF1D4 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF1C8: .4byte gUnknown_20380BE +_080FF1CC: .4byte gUnknown_20380D7 +_080FF1D0: .4byte sub_080A67B4 +_080FF1D4: .4byte sub_080A34C4 + thumb_func_end sub_080FF180 + + thumb_func_start sub_080FF1D8 +sub_080FF1D8: @ 0x080FF1D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r6, _080FF228 + ldrh r0, [r6, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldr r5, _080FF22C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + ldrh r0, [r6, #6] + strh r0, [r4, #0x38] + ldr r1, _080FF230 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FF228: .4byte gUnknown_20380BE +_080FF22C: .4byte gUnknown_20380D7 +_080FF230: .4byte sub_080FF234 + thumb_func_end sub_080FF1D8 + + thumb_func_start sub_080FF234 +sub_080FF234: @ 0x080FF234 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF24A + adds r0, r4, #0 + bl sub_08006E00 + b _080FF29E +_080FF24A: + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _080FF264 + ldr r0, _080FF260 + ldrb r0, [r0] + bl sub_080A7BAC + adds r0, #1 + b _080FF26E + .align 2, 0 +_080FF260: .4byte gUnknown_20380D7 +_080FF264: + ldr r0, _080FF2A4 + ldrb r0, [r0] + bl sub_080A7BAC + adds r0, #6 +_080FF26E: + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #5 + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xe + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #0xf + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] +_080FF29E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FF2A4: .4byte gUnknown_20380D7 + thumb_func_end sub_080FF234 + + thumb_func_start sub_080FF2A8 +sub_080FF2A8: @ 0x080FF2A8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _080FF318 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #8] + subs r0, #1 + movs r2, #0 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080FF302 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + movs r0, #6 + strh r0, [r5, #8] + ldr r1, _080FF31C + movs r0, #0xf + strh r0, [r1] + strh r2, [r1, #2] + movs r0, #0x50 + strh r0, [r1, #4] + strh r2, [r1, #6] + ldr r4, _080FF320 + ldr r0, _080FF324 + ldrb r0, [r0] + bl sub_080A7BAC + adds r3, r0, #0 + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_08006D6C +_080FF302: + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #0xf + bne _080FF310 + adds r0, r6, #0 + bl sub_080A34E4 +_080FF310: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FF318: .4byte gUnknown_3005B60 +_080FF31C: .4byte gUnknown_20380BE +_080FF320: .4byte gUnknown_856DDF4 +_080FF324: .4byte gUnknown_20380D7 + thumb_func_end sub_080FF2A8 + + thumb_func_start sub_080FF328 +sub_080FF328: @ 0x080FF328 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r6, _080FF36C + ldrh r0, [r6, #6] + strh r0, [r4, #0x2e] + ldr r5, _080FF370 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldrh r0, [r6, #4] + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _080FF374 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FF36C: .4byte gUnknown_20380BE +_080FF370: .4byte gUnknown_20380D6 +_080FF374: .4byte sub_080FF378 + thumb_func_end sub_080FF328 + + thumb_func_start sub_080FF378 +sub_080FF378: @ 0x080FF378 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF38C + adds r0, r4, #0 + bl sub_080A34C4 +_080FF38C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FF378 + + thumb_func_start sub_080FF394 +sub_080FF394: @ 0x080FF394 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F0A4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #7 + ands r1, r0 + adds r0, r5, #0 + bl sub_08007EC0 + ldr r4, _080FF3DC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF3E0 + ldrh r0, [r5, #0x20] + subs r0, #0x14 + b _080FF3E4 + .align 2, 0 +_080FF3DC: .4byte gUnknown_20380D6 +_080FF3E0: + ldrh r0, [r5, #0x20] + adds r0, #0x14 +_080FF3E4: + strh r0, [r5, #0x20] + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x40 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldr r4, _080FF444 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A6A28 + bl sub_0806F0A4 + 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, _080FF448 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF444: .4byte gUnknown_20380D7 +_080FF448: .4byte sub_080FF44C + thumb_func_end sub_080FF394 + + thumb_func_start sub_080FF44C +sub_080FF44C: @ 0x080FF44C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A69B0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF462 + adds r0, r4, #0 + bl sub_080A34C4 + b _080FF492 +_080FF462: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xc + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0x7e + bgt _080FF47E + ldrh r0, [r4, #0x3a] + b _080FF482 +_080FF47E: + ldrh r0, [r4, #0x3a] + adds r0, #1 +_080FF482: + 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] +_080FF492: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FF44C + + thumb_func_start sub_080FF498 +sub_080FF498: @ 0x080FF498 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _080FF4F8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF4B8 + ldr r1, _080FF4FC + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080FF4B8: + ldr r4, _080FF4FC + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldr r5, _080FF500 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r6, #0x36] + ldrh r0, [r4, #0xa] + strh r0, [r6, #0x38] + adds r0, r6, #0 + bl sub_080A619C + ldr r0, _080FF504 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FF4F8: .4byte gUnknown_20380D6 +_080FF4FC: .4byte gUnknown_20380BE +_080FF500: .4byte gUnknown_20380D7 +_080FF504: .4byte sub_080FF508 + thumb_func_end sub_080FF498 + + thumb_func_start sub_080FF508 +sub_080FF508: @ 0x080FF508 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF532 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xa + strh r0, [r4, #0x2e] + ldr r0, _080FF538 + str r0, [r4, #0x1c] + ldr r1, _080FF53C + adds r0, r4, #0 + bl sub_080A5B9C +_080FF532: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FF538: .4byte sub_080A5D78 +_080FF53C: .4byte sub_080FF540 + thumb_func_end sub_080FF508 + + thumb_func_start sub_080FF540 +sub_080FF540: @ 0x080FF540 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + movs r0, #0x3c + strh r0, [r4, #0x2e] + ldr r0, _080FF570 + str r0, [r4, #0x1c] + ldr r1, _080FF574 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FF570: .4byte sub_080A5D78 +_080FF574: .4byte sub_080A34C4 + thumb_func_end sub_080FF540 + + thumb_func_start sub_080FF578 +sub_080FF578: @ 0x080FF578 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r5, _080FF5BC + ldrb r1, [r5, #8] + adds r0, r4, #0 + bl sub_08007EC0 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _080FF5A2 + ldrb r0, [r4, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #1] +_080FF5A2: + ldrh r0, [r5, #6] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #4] + strh r0, [r4, #0x30] + ldr r1, _080FF5C0 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF5BC: .4byte gUnknown_20380BE +_080FF5C0: .4byte sub_080FF5C4 + thumb_func_end sub_080FF578 + + thumb_func_start sub_080FF5C4 +sub_080FF5C4: @ 0x080FF5C4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #3 + rsbs r1, r1, #0 + bl sub_0806EFD4 + ldrh r1, [r4, #0x32] + adds r1, #0x18 + strh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7f + bhi _080FF618 + ldr r0, _080FF614 + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + b _080FF63C + .align 2, 0 +_080FF614: .4byte gUnknown_20380D7 +_080FF618: + ldr r0, _080FF668 + ldrb r0, [r0] + bl sub_080A7BF0 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _080FF62C + movs r2, #3 +_080FF62C: + movs r0, #3 + ands r2, r0 + lsls r2, r2, #2 + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 +_080FF63C: + strb r0, [r4, #5] + ldrh r0, [r4, #0x30] + adds r0, #2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080FF660 + adds r0, r4, #0 + bl sub_080A34C4 +_080FF660: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FF668: .4byte gUnknown_20380D7 + thumb_func_end sub_080FF5C4 + + thumb_func_start sub_080FF66C +sub_080FF66C: @ 0x080FF66C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FF686 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FF68E +_080FF686: + adds r0, r4, #0 + bl sub_080A34E4 + b _080FF6C0 +_080FF68E: + ldr r0, _080FF6AC + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FF6B0 + movs r0, #2 + movs r1, #4 + movs r2, #3 + bl sub_0811887C + b _080FF6BA + .align 2, 0 +_080FF6AC: .4byte gUnknown_20380D7 +_080FF6B0: + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C +_080FF6BA: + adds r0, r4, #0 + bl sub_080A34E4 +_080FF6C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FF66C + + thumb_func_start sub_080FF6C8 +sub_080FF6C8: @ 0x080FF6C8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r5, _080FF710 + ldrh r0, [r5, #6] + 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, _080FF714 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5, #4] + adds r0, r0, r5 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + movs r0, #0x40 + strh r0, [r4, #0x38] + ldr r1, _080FF718 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF710: .4byte gUnknown_20380BE +_080FF714: .4byte gUnknown_20380D6 +_080FF718: .4byte sub_080FF71C + thumb_func_end sub_080FF6C8 + + thumb_func_start sub_080FF71C +sub_080FF71C: @ 0x080FF71C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FF788 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #5 + rsbs r1, r1, #0 + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7f + bhi _080FF768 + ldr r0, _080FF764 + ldrb r0, [r0] + bl sub_080A7BAC + subs r0, #1 + b _080FF772 + .align 2, 0 +_080FF764: .4byte gUnknown_20380D6 +_080FF768: + ldr r0, _080FF784 + ldrb r0, [r0] + bl sub_080A7BAC + adds r0, #1 +_080FF772: + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + ldrh r0, [r4, #0x38] + adds r0, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _080FF78E + .align 2, 0 +_080FF784: .4byte gUnknown_20380D6 +_080FF788: + adds r0, r4, #0 + bl sub_080A34C4 +_080FF78E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FF71C + + thumb_func_start sub_080FF794 +sub_080FF794: @ 0x080FF794 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r5, _080FF7DC + ldrh r0, [r5, #6] + 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, _080FF7E0 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5, #4] + adds r0, r0, r5 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + movs r0, #0x40 + strh r0, [r4, #0x38] + ldr r1, _080FF7E4 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF7DC: .4byte gUnknown_20380BE +_080FF7E0: .4byte gUnknown_20380D6 +_080FF7E4: .4byte sub_080FF7E8 + thumb_func_end sub_080FF794 + + thumb_func_start sub_080FF7E8 +sub_080FF7E8: @ 0x080FF7E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FF840 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x38] + adds r0, r1, #0 + subs r0, #0x3b + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bls _080FF820 + adds r0, r1, #0 + subs r0, #0xbb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bhi _080FF834 +_080FF820: + ldrb r2, [r4, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #8 + eors r1, r0 + lsls r1, r1, #1 + subs r0, #0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] +_080FF834: + ldrh r0, [r4, #0x38] + adds r0, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _080FF846 +_080FF840: + adds r0, r4, #0 + bl sub_080A34C4 +_080FF846: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FF7E8 + + thumb_func_start sub_080FF84C +sub_080FF84C: @ 0x080FF84C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080FF888 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r1, _080FF88C + ldrh r0, [r1] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + strh r0, [r4, #0x30] + ldrh r0, [r1, #4] + strh r0, [r4, #0x32] + ldr r0, _080FF890 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FF888: .4byte gUnknown_20380D6 +_080FF88C: .4byte gUnknown_20380BE +_080FF890: .4byte sub_080FF894 + thumb_func_end sub_080FF84C + + thumb_func_start sub_080FF894 +sub_080FF894: @ 0x080FF894 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x32] + movs r2, #0x32 + ldrsh r3, [r1, r2] + cmp r3, #0 + bne _080FF8C8 + ldrh r0, [r1, #0x30] + movs r2, #1 + ands r2, r0 + cmp r2, #0 + beq _080FF8B6 + movs r0, #0x80 + strh r0, [r1, #0x2e] + strh r3, [r1, #0x30] + strh r3, [r1, #0x32] + b _080FF8BC +_080FF8B6: + strh r2, [r1, #0x2e] + strh r2, [r1, #0x30] + strh r2, [r1, #0x32] +_080FF8BC: + ldr r0, _080FF8C4 + str r0, [r1, #0x1c] + b _080FF8DC + .align 2, 0 +_080FF8C4: .4byte sub_080FF8E0 +_080FF8C8: + subs r0, #1 + strh r0, [r1, #0x32] + ldrh r0, [r1, #0x2e] + ldrh r2, [r1, #0x20] + adds r0, r0, r2 + strh r0, [r1, #0x20] + ldrh r0, [r1, #0x30] + ldrh r2, [r1, #0x22] + adds r0, r0, r2 + strh r0, [r1, #0x22] +_080FF8DC: + pop {r0} + bx r0 + thumb_func_end sub_080FF894 + + thumb_func_start sub_080FF8E0 +sub_080FF8E0: @ 0x080FF8E0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080FF900 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF904 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x19 + bl sub_0806EFB8 + rsbs r0, r0, #0 + b _080FF90E + .align 2, 0 +_080FF900: .4byte gUnknown_20380D6 +_080FF904: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x19 + bl sub_0806EFB8 +_080FF90E: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x2e] + adds r0, #2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080FF92E + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] +_080FF92E: + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x50 + ble _080FF93C + adds r0, r4, #0 + bl sub_080A34C4 +_080FF93C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FF8E0 + + thumb_func_start sub_080FF944 +sub_080FF944: @ 0x080FF944 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _080FF998 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FF964 + ldr r1, _080FF99C + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_080FF964: + ldr r6, _080FF99C + ldrh r0, [r6, #8] + strh r0, [r5, #0x2e] + movs r1, #0xc + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _080FF9A4 + ldr r4, _080FF9A0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #6] + adds r0, r0, r6 + b _080FF9C4 + .align 2, 0 +_080FF998: .4byte gUnknown_20380D6 +_080FF99C: .4byte gUnknown_20380BE +_080FF9A0: .4byte gUnknown_20380D7 +_080FF9A4: + ldr r0, _080FF9F0 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x32 + adds r3, r5, #0 + adds r3, #0x36 + movs r1, #1 + bl sub_080A81EC + ldrh r0, [r6, #4] + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r6, #6] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 +_080FF9C4: + strh r0, [r5, #0x36] + ldr r0, _080FF9F4 + ldrh r0, [r0, #0xa] + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + ldr r0, _080FF9F8 + ldrb r0, [r0] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _080FF9F0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _080FF9FC + movs r0, #1 + b _080FF9FE + .align 2, 0 +_080FF9F0: .4byte gUnknown_20380D7 +_080FF9F4: .4byte gUnknown_20380BE +_080FF9F8: .4byte gUnknown_20380D6 +_080FF9FC: + movs r0, #0 +_080FF9FE: + strh r0, [r5, #0x2e] + ldr r0, _080FFA0C + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FFA0C: .4byte sub_080FFA10 + thumb_func_end sub_080FF944 + + thumb_func_start sub_080FFA10 +sub_080FFA10: @ 0x080FFA10 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r7, #0 + ldrh r5, [r6, #0x2e] + ldrh r4, [r6, #0x3c] + movs r0, #1 + strh r0, [r6, #0x2e] + adds r0, r6, #0 + bl sub_080A61C8 + ldrh r0, [r6, #0x3c] + strh r5, [r6, #0x2e] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #0xc8 + ble _080FFA42 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x37 + bgt _080FFA42 + ldrh r0, [r6, #6] + cmp r0, #0 + bne _080FFA48 + adds r0, #1 + strh r0, [r6, #6] +_080FFA42: + ldrh r0, [r6, #6] + cmp r0, #0 + beq _080FFA7A +_080FFA48: + movs r1, #0x2e + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _080FFA7A + adds r3, r6, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r6, #6] + adds r0, #1 + strh r0, [r6, #6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bne _080FFA7A + movs r7, #1 +_080FFA7A: + movs r2, #0x20 + ldrsh r0, [r6, r2] + movs r2, #0x24 + ldrsh r1, [r6, r2] + adds r0, r0, r1 + adds r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #1 + cmp r0, r1 + bhi _080FFAA4 + movs r0, #0x22 + ldrsh r1, [r6, r0] + movs r2, #0x26 + ldrsh r0, [r6, r2] + adds r1, r1, r0 + cmp r1, #0xa0 + bgt _080FFAA4 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080FFAA6 +_080FFAA4: + movs r7, #1 +_080FFAA6: + cmp r7, #0 + beq _080FFAB0 + adds r0, r6, #0 + bl sub_080A34C4 +_080FFAB0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_080FFA10 + + thumb_func_start sub_080FFAB8 +sub_080FFAB8: @ 0x080FFAB8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080FFADA + ldr r0, _080FFB00 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #1 + bl sub_080A81EC +_080FFADA: + ldrh r0, [r4, #0x22] + adds r0, #0x20 + strh r0, [r4, #0x22] + ldr r1, _080FFB04 + ldrh r0, [r1] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + strh r0, [r4, #0x30] + ldrh r0, [r1, #4] + strh r0, [r4, #0x32] + ldrh r0, [r1, #6] + strh r0, [r4, #0x34] + ldrh r0, [r1, #8] + strh r0, [r4, #0x36] + ldr r0, _080FFB08 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FFB00: .4byte gUnknown_20380D7 +_080FFB04: .4byte gUnknown_20380BE +_080FFB08: .4byte sub_080FFB0C + thumb_func_end sub_080FFAB8 + + thumb_func_start sub_080FFB0C +sub_080FFB0C: @ 0x080FFB0C + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0xff + bne _080FFB22 + ldrh r0, [r4, #0x22] + subs r0, #2 + strh r0, [r4, #0x22] + b _080FFB30 +_080FFB22: + cmp r0, #0 + ble _080FFB30 + ldrh r0, [r4, #0x22] + subs r0, #2 + strh r0, [r4, #0x22] + subs r0, r1, #2 + strh r0, [r4, #0x30] +_080FFB30: + 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 _080FFB48 + adds r0, r2, r3 + strh r0, [r4, #0x38] +_080FFB48: + 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_0806EFD4 + strh r0, [r4, #0x24] + movs r5, #0x38 + ldrsh r0, [r4, r5] + movs r1, #5 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0x7f + bgt _080FFB88 + ldr r0, _080FFB84 + ldrb r0, [r0] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + b _080FFB96 + .align 2, 0 +_080FFB84: .4byte gUnknown_20380D7 +_080FFB88: + ldr r0, _080FFBC0 + ldrb r0, [r0] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 +_080FFB96: + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #5] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080FFBBA + adds r0, r4, #0 + bl sub_080A34C4 +_080FFBBA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FFBC0: .4byte gUnknown_20380D7 + thumb_func_end sub_080FFB0C + + thumb_func_start sub_080FFBC4 +sub_080FFBC4: @ 0x080FFBC4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0 + bl sub_080A6248 + adds r2, r5, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r4, _080FFBF8 + ldrb r1, [r4, #4] + adds r0, r5, #0 + bl sub_08007F70 + ldrh r0, [r4, #4] + strh r0, [r5, #0x3a] + ldrh r0, [r4, #6] + strh r0, [r5, #0x3c] + ldr r0, _080FFBFC + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_080FFBF8: .4byte gUnknown_20380BE +_080FFBFC: .4byte sub_080FFC00 + thumb_func_end sub_080FFBC4 + + thumb_func_start sub_080FFC00 +sub_080FFC00: @ 0x080FFC00 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080FFC30 + ldrh r1, [r0, #0xe] + ldr r0, _080FFC34 + cmp r1, r0 + bne _080FFC2A + adds r2, r4, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + movs r0, #1 + bl sub_080A5B08 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x2e] + ldr r0, _080FFC38 + str r0, [r4, #0x1c] +_080FFC2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080FFC30: .4byte gUnknown_20380BE +_080FFC34: .4byte 0x0000FFFF +_080FFC38: .4byte sub_080FFC3C + thumb_func_end sub_080FFC00 + + thumb_func_start sub_080FFC3C +sub_080FFC3C: @ 0x080FFC3C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_080A5B08 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080FFC54 + ldrh r0, [r4, #0x2e] + adds r0, #0xb + b _080FFC58 +_080FFC54: + ldrh r0, [r4, #0x2e] + subs r0, #0xb +_080FFC58: + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _080FFC74 + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x32] +_080FFC74: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080FFCA2 + ldrh r0, [r4, #0x3c] + subs r0, #1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _080FFC9C + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007F70 + b _080FFCA2 +_080FFC9C: + adds r0, r4, #0 + bl sub_080A34C4 +_080FFCA2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_080FFC3C + + thumb_func_start sub_080FFCA8 +sub_080FFCA8: @ 0x080FFCA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _080FFCE4 + mov sl, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r2, sl + adds r7, r0, r2 + adds r0, r7, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _080FFCE8 + adds r0, r4, #0 + bl sub_080A34E4 + b _080FFD6C + .align 2, 0 +_080FFCE4: .4byte gUnknown_20205AC +_080FFCE8: + adds r0, r1, #0 + movs r1, #1 + bl sub_080A6B38 + ldr r0, _080FFD7C + lsls r6, r4, #2 + adds r6, r6, r4 + lsls r6, r6, #3 + adds r6, r6, r0 + ldrb r0, [r7, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strh r0, [r6, #0x24] + ldr r0, _080FFD80 + mov sb, r0 + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + mov r8, r1 + mov r1, r8 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r7, #5] + movs r5, #0xd + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #5] + movs r0, #3 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + add r4, sl + ldrb r0, [r4, #5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + strh r0, [r6, #0x26] + mov r2, sb + ldrb r1, [r2] + movs r0, #2 + eors r0, r1 + bl sub_080A7BF0 + mov r1, r8 + ands r1, r0 + lsls r1, r1, #2 + ldrb r0, [r4, #5] + ands r5, r0 + orrs r5, r1 + strb r5, [r4, #5] + ldr r1, _080FFD84 + ldrh r0, [r1] + strh r0, [r6, #8] + ldrh r0, [r1, #2] + strh r0, [r6, #0xa] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r6, #0x1e] + ldr r0, _080FFD88 + str r0, [r6] +_080FFD6C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FFD7C: .4byte gUnknown_3005B60 +_080FFD80: .4byte gUnknown_20380D7 +_080FFD84: .4byte gUnknown_20380BE +_080FFD88: .4byte sub_080FFD8C + thumb_func_end sub_080FFCA8 + + thumb_func_start sub_080FFD8C +sub_080FFD8C: @ 0x080FFD8C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _080FFE0C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #8] + ldrh r0, [r4, #0x1c] + adds r1, r1, r0 + strh r1, [r4, #0x1c] + ldr r2, _080FFE10 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r5, r0, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r5, #0x24] + ldr r0, _080FFE14 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080FFDD6 + ldrh r0, [r5, #0x24] + rsbs r0, r0, #0 + strh r0, [r5, #0x24] +_080FFDD6: + 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_080A6A7C + adds r0, r6, #0 + bl sub_080A7734 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _080FFE04 + strh r0, [r4, #8] + ldr r0, _080FFE18 + str r0, [r4] +_080FFE04: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FFE0C: .4byte gUnknown_3005B60 +_080FFE10: .4byte gUnknown_20205AC +_080FFE14: .4byte gUnknown_20380D7 +_080FFE18: .4byte sub_080FFE1C + thumb_func_end sub_080FFD8C + + thumb_func_start sub_080FFE1C +sub_080FFE1C: @ 0x080FFE1C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _080FFEA0 + ldrh r1, [r0, #0xe] + ldr r0, _080FFEA4 + cmp r1, r0 + bne _080FFEB0 + ldr r0, _080FFEA8 + lsls r2, r3, #2 + adds r1, r2, r3 + lsls r1, r1, #3 + adds r7, r1, r0 + movs r1, #8 + ldrsh r5, [r7, r1] + adds r4, r0, #0 + cmp r5, #0 + bne _080FFEC4 + movs r0, #1 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A6C0C + ldr r6, _080FFEAC + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r6 + strh r5, [r1, #0x24] + strh r5, [r1, #0x26] + movs r5, #3 + ldrh r2, [r7, #0x24] + ands r2, r5 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] + movs r0, #3 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r7, #0x26] + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r1, #5] + ands r4, r2 + orrs r4, r0 + strb r4, [r1, #5] + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] + b _080FFEDE + .align 2, 0 +_080FFEA0: .4byte gUnknown_20380BE +_080FFEA4: .4byte 0x0000FFFF +_080FFEA8: .4byte gUnknown_3005B60 +_080FFEAC: .4byte gUnknown_20205AC +_080FFEB0: + ldr r1, _080FFEE4 + lsls r2, r3, #2 + adds r0, r2, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r4, #8 + ldrsh r0, [r0, r4] + adds r4, r1, #0 + cmp r0, #0 + beq _080FFEDE +_080FFEC4: + adds r1, r2, r3 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _080FFEDE + adds r0, r3, #0 + bl sub_080A34E4 +_080FFEDE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_080FFEE4: .4byte gUnknown_3005B60 + thumb_func_end sub_080FFE1C + + thumb_func_start sub_080FFEE8 +sub_080FFEE8: @ 0x080FFEE8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _080FFEFA + cmp r0, #1 + beq _080FFF54 + b _080FFFA6 +_080FFEFA: + ldr r6, _080FFF4C + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080FFF12 + ldr r1, _080FFF50 + movs r2, #0 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1] +_080FFF12: + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _080FFF50 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #2] + adds r0, r0, r4 + strh r0, [r5, #0x22] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _080FFFA6 + .align 2, 0 +_080FFF4C: .4byte gUnknown_20380D7 +_080FFF50: .4byte gUnknown_20380BE +_080FFF54: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + 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 _080FFFA6 + adds r0, r5, #0 + movs r1, #1 + bl sub_08007FD0 + movs r0, #0x19 + strh r0, [r5, #0x2e] + ldr r4, _080FFFAC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _080FFFB0 + str r0, [r5, #0x1c] + ldr r1, _080FFFB4 + adds r0, r5, #0 + bl sub_080A5B9C +_080FFFA6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_080FFFAC: .4byte gUnknown_20380D6 +_080FFFB0: .4byte sub_080A6988 +_080FFFB4: .4byte sub_080A34C4 + thumb_func_end sub_080FFEE8 + + thumb_func_start sub_080FFFB8 +sub_080FFFB8: @ 0x080FFFB8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08100024 + ldr r4, _08100030 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r4, _08100034 + ldrh r0, [r4] + strh r0, [r5, #0x24] + ldrh r0, [r4, #2] + strh r0, [r5, #0x26] + ldrb r0, [r4, #4] + adds r0, #0x1e + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] + ldrb r1, [r4, #6] + adds r0, r5, #0 + bl sub_08007EC0 + ldrh r0, [r4, #8] + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + movs r2, #0x22 + ldrsh r0, [r5, r2] + movs r2, #0x26 + ldrsh r1, [r5, r2] + adds r0, r0, r1 + cmp r0, #0x78 + ble _08100024 + ldrh r0, [r5, #0x22] + adds r1, r0, #0 + subs r1, #0x78 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + adds r1, r1, r0 + strh r1, [r5, #0x22] +_08100024: + ldr r0, _08100038 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08100030: .4byte gUnknown_20380D6 +_08100034: .4byte gUnknown_20380BE +_08100038: .4byte sub_0810012C + thumb_func_end sub_080FFFB8 + + thumb_func_start sub_0810003C +sub_0810003C: @ 0x0810003C + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #4 + mov sb, r0 + ldr r4, _08100118 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r6, _0810011C + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + adds r2, r0, #0 + lsls r2, r2, #0x18 + subs r4, r4, r5 + lsls r4, r4, #0x10 + lsrs r2, r2, #0x18 + mov r1, r8 + subs r2, r2, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsrs r3, r4, #0x10 + mov sl, r3 + asrs r4, r4, #0x10 + ldr r6, _08100120 + movs r1, #0 + ldrsh r0, [r6, r1] + muls r0, r4, r0 + movs r1, #0x64 + str r2, [sp] + bl __divsi3 + adds r5, r5, r0 + mov r3, sb + strh r5, [r3, #0x20] + ldr r2, [sp] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r3, #0 + ldrsh r1, [r6, r3] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + add r8, r0 + mov r1, r8 + mov r0, sb + strh r1, [r0, #0x22] + ldrh r0, [r6, #2] + mov r3, sb + strh r0, [r3, #0x24] + ldrh r0, [r6, #4] + strh r0, [r3, #0x26] + ldrb r0, [r6, #6] + adds r0, #0x1e + mov r1, sb + adds r1, #0x43 + strb r0, [r1] + ldrb r1, [r6, #8] + mov r0, sb + bl sub_08007EC0 + ldrh r0, [r6, #0xa] + mov r1, sb + strh r0, [r1, #0x32] + ldr r0, _08100124 + str r0, [r1, #0x1c] + ldr r1, _08100128 + mov r3, sb + ldrh r0, [r3, #0x20] + strh r0, [r1] + ldrh r0, [r3, #0x22] + strh r0, [r1, #2] + mov r0, sl + strh r0, [r1, #4] + ldr r2, [sp] + strh r2, [r1, #6] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08100118: .4byte gUnknown_20380D6 +_0810011C: .4byte gUnknown_20380D7 +_08100120: .4byte gUnknown_20380BE +_08100124: .4byte sub_0810012C +_08100128: .4byte gUnknown_2039DC4 + thumb_func_end sub_0810003C + + thumb_func_start sub_0810012C +sub_0810012C: @ 0x0810012C + push {lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x2e] + adds r1, #1 + strh r1, [r3, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x32 + ldrsh r0, [r3, r2] + subs r0, #0xa + cmp r1, r0 + ble _0810016C + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + movs r2, #0x3e + adds r2, r2, r3 + mov ip, r2 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] +_0810016C: + movs r2, #0x2e + ldrsh r1, [r3, r2] + movs r2, #0x32 + ldrsh r0, [r3, r2] + cmp r1, r0 + ble _0810017E + adds r0, r3, #0 + bl sub_080A34C4 +_0810017E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810012C + + thumb_func_start sub_08100184 +sub_08100184: @ 0x08100184 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _081001C4 + ldr r5, _08100200 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _08100204 + lsrs r0, r0, #0x18 + ldrh r2, [r4] + adds r0, r0, r2 + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r6, #0x22] + ldrh r0, [r4, #4] + strh r0, [r6, #0x30] + ldrh r0, [r4, #6] + strh r0, [r6, #0x32] + ldrh r0, [r4, #8] + strh r0, [r6, #0x34] +_081001C4: + ldrh r0, [r6, #0x2e] + adds r0, #1 + strh r0, [r6, #0x2e] + ldrh r1, [r6, #0x30] + muls r0, r1, r0 + strh r0, [r6, #0x24] + movs r2, #0x2e + ldrsh r1, [r6, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + movs r1, #0xff + ands r0, r1 + movs r2, #0x32 + ldrsh r1, [r6, r2] + bl sub_0806EFB8 + strh r0, [r6, #0x26] + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r2, #0x34 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _081001FA + adds r0, r6, #0 + bl sub_080A34C4 +_081001FA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08100200: .4byte gUnknown_20380D6 +_08100204: .4byte gUnknown_20380BE + thumb_func_end sub_08100184 + + thumb_func_start sub_08100208 +sub_08100208: @ 0x08100208 + push {r4, r5, lr} + movs r2, #0x20 + ldrsh r4, [r0, r2] + lsls r4, r4, #8 + movs r3, #0x22 + ldrsh r2, [r0, r3] + orrs r4, r2 + movs r5, #0x3a + ldrsh r2, [r0, r5] + lsls r2, r2, #8 + movs r5, #0x3c + ldrsh r3, [r0, r5] + orrs r2, r3 + lsls r1, 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_08100208 + + thumb_func_start sub_08100230 +sub_08100230: @ 0x08100230 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + ldrh r0, [r0, #0x38] + lsrs r1, r0, #8 + mov sl, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r1, r8 + ldrh r0, [r1, #0x3a] + lsrs r2, r0, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrh r1, [r1, #0x3c] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r3, #0xff + ands r3, r1 + cmp r2, #0 + bne _0810026A + movs r2, #0x20 + rsbs r2, r2, #0 + b _08100272 +_0810026A: + cmp r2, #0xff + bne _08100272 + movs r2, #0x88 + lsls r2, r2, #1 +_08100272: + mov r0, sb + subs r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r1, sl + subs r0, r2, r1 + lsls r5, r3, #0x10 + asrs r5, r5, #0x10 + muls r0, r5, r0 + lsls r1, r6, #0x10 + asrs r7, r1, #0x10 + adds r1, r7, #0 + bl __divsi3 + adds r6, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + muls r0, r5, r0 + adds r1, r7, #0 + bl __divsi3 + add r6, sl + mov r1, r8 + strh r6, [r1, #0x20] + add r0, sb + strh r0, [r1, #0x22] + adds r5, #1 + lsls r5, r5, #0x10 + lsrs r3, r5, #0x10 + asrs r5, r5, #0x10 + cmp r5, r7 + beq _081002C4 + lsls r1, r7, #8 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + orrs r0, r1 + mov r1, r8 + strh r0, [r1, #0x3c] + movs r0, #0 + b _081002C6 +_081002C4: + movs r0, #1 +_081002C6: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08100230 + + thumb_func_start sub_081002D4 +sub_081002D4: @ 0x081002D4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xa + bne _081002E8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_081002E8: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x32 + ble _081002FC + adds r0, r4, #0 + bl sub_080A34C4 +_081002FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081002D4 + + thumb_func_start sub_08100304 +sub_08100304: @ 0x08100304 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, #0x2e] + adds r1, r1, r0 + movs r5, #0 + strh r1, [r4, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + ble _0810032E + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + strh r5, [r4, #0x2e] +_0810032E: + ldrh r0, [r4, #0x2e] + adds r0, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x30 + ldrsh r2, [r4, r1] + lsls r2, r2, #3 + movs r1, #0x1e + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + adds r0, r4, #0 + bl sub_08100230 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810035E + strh r5, [r4, #0x26] + strh r5, [r4, #0x2e] + ldr r0, _08100364 + str r0, [r4, #0x1c] +_0810035E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08100364: .4byte sub_081002D4 + thumb_func_end sub_08100304 + + thumb_func_start sub_08100368 +sub_08100368: @ 0x08100368 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r4, _081003B0 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081003B4 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _081003B8 + strh r6, [r5, #0x3a] + adds r0, r2, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + adds r0, r5, #0 + movs r1, #0x3c + bl sub_08100208 + movs r0, #1 + b _081003CA + .align 2, 0 +_081003B0: .4byte gUnknown_20380D7 +_081003B4: .4byte gUnknown_20380D6 +_081003B8: + strh r6, [r5, #0x3a] + adds r0, r2, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + adds r0, r5, #0 + movs r1, #0x3c + bl sub_08100208 + movs r0, #3 +_081003CA: + strh r0, [r5, #0x34] + movs r0, #0x3c + strh r0, [r5, #0x36] + ldr r0, _081003DC + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081003DC: .4byte sub_08100304 + thumb_func_end sub_08100368 + + thumb_func_start sub_081003E0 +sub_081003E0: @ 0x081003E0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, #0x2e] + adds r1, r1, r0 + movs r5, #0 + strh r1, [r4, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + ble _0810040A + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + strh r5, [r4, #0x2e] +_0810040A: + ldrh r0, [r4, #0x2e] + adds r0, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x30 + ldrsh r2, [r4, r1] + lsls r2, r2, #3 + movs r1, #0x1e + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + adds r0, r4, #0 + bl sub_08100230 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810043C + strh r5, [r4, #0x26] + strh r5, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A34C4 +_0810043C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081003E0 + + thumb_func_start sub_08100444 +sub_08100444: @ 0x08100444 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _08100480 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08100488 + strh r0, [r5, #0x3a] + adds r0, r6, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + adds r0, r5, #0 + movs r1, #0x28 + bl sub_08100208 + movs r0, #3 + strh r0, [r5, #0x34] + movs r0, #0x3c + strh r0, [r5, #0x36] + ldr r0, _08100484 + b _081004B2 + .align 2, 0 +_08100480: .4byte gUnknown_20380D7 +_08100484: .4byte sub_08100304 +_08100488: + movs r0, #0xff + strh r0, [r5, #0x3a] + adds r0, r6, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081004A0 + movs r0, #0 + strh r0, [r5, #0x3a] +_081004A0: + adds r0, r5, #0 + movs r1, #0x28 + bl sub_08100208 + movs r0, #3 + strh r0, [r5, #0x34] + movs r0, #0x3c + strh r0, [r5, #0x36] + ldr r0, _081004BC +_081004B2: + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081004BC: .4byte sub_081003E0 + thumb_func_end sub_08100444 + + thumb_func_start sub_081004C0 +sub_081004C0: @ 0x081004C0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081004DA + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6248 + ldr r0, _08100500 + ldrh r0, [r0, #4] + strh r0, [r4, #0x30] +_081004DA: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x30] + muls r0, r1, r0 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081004FA + adds r0, r4, #0 + bl sub_080A34C4 +_081004FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08100500: .4byte gUnknown_20380BE + thumb_func_end sub_081004C0 + + thumb_func_start sub_08100504 +sub_08100504: @ 0x08100504 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0 + bl sub_080A6248 + ldr r4, _0810054C + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08100550 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _08100554 + strh r6, [r5, #0x3a] + adds r0, r2, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + adds r0, r5, #0 + movs r1, #0x3c + bl sub_08100208 + movs r0, #1 + b _08100566 + .align 2, 0 +_0810054C: .4byte gUnknown_20380D6 +_08100550: .4byte gUnknown_20380D7 +_08100554: + strh r6, [r5, #0x3a] + adds r0, r2, #0 + adds r0, #0xa + strh r0, [r5, #0x3c] + adds r0, r5, #0 + movs r1, #0x3c + bl sub_08100208 + movs r0, #3 +_08100566: + strh r0, [r5, #0x34] + movs r0, #0x3c + strh r0, [r5, #0x36] + ldr r0, _08100578 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08100578: .4byte sub_0810057C + thumb_func_end sub_08100504 + + thumb_func_start sub_0810057C +sub_0810057C: @ 0x0810057C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + ldrh r1, [r4, #0x2e] + adds r1, r1, r0 + movs r5, #0 + strh r1, [r4, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + ble _081005A6 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + strh r5, [r4, #0x2e] +_081005A6: + ldrh r0, [r4, #0x2e] + adds r0, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x30 + ldrsh r2, [r4, r1] + lsls r2, r2, #3 + movs r1, #0x1e + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081005DA + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x7d + bl sub_080A307C +_081005DA: + adds r0, r4, #0 + bl sub_08100230 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08100602 + strh r5, [r4, #0x26] + strh r5, [r4, #0x2e] + ldr r0, _08100608 + str r0, [r4, #0x1c] + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x7d + bl sub_080A307C +_08100602: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08100608: .4byte sub_081002D4 + thumb_func_end sub_0810057C + + thumb_func_start sub_0810060C +sub_0810060C: @ 0x0810060C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081006A0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08100634 + ldr r0, _08100630 + ldrh r1, [r0, #2] + strh r1, [r4, #0x30] + movs r1, #0x78 + strh r1, [r4, #0x20] + adds r5, r0, #0 + b _08100656 + .align 2, 0 +_08100630: .4byte gUnknown_20380BE +_08100634: + ldr r0, _08100690 + movs r1, #2 + ldrsh r3, [r0, r1] + adds r1, r3, #0 + subs r1, #0x20 + adds r2, r1, #0 + adds r5, r0, #0 + cmp r1, #0 + bge _0810064A + adds r2, r3, #0 + adds r2, #0xdf +_0810064A: + asrs r0, r2, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + strh r0, [r4, #0x30] + movs r0, #0x46 + strh r0, [r4, #0x20] +_08100656: + 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_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldr r0, _08100694 + str r0, [r4, #0x1c] + ldrh r0, [r4, #0x30] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xbe + bhi _08100698 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1f + b _0810069E + .align 2, 0 +_08100690: .4byte gUnknown_20380BE +_08100694: .4byte sub_081006A8 +_08100698: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1d +_0810069E: + strb r0, [r1] +_081006A0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810060C + + thumb_func_start sub_081006A8 +sub_081006A8: @ 0x081006A8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081006BA + cmp r0, #1 + beq _081006EA + b _0810070A +_081006BA: + ldrh r5, [r4, #0x32] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x4e + ble _081006D2 + movs r0, #1 + strh r0, [r4, #0x34] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + b _0810070A +_081006D2: + 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, #3 + strh r1, [r4, #0x36] + strh r0, [r4, #0x22] + b _0810070A +_081006EA: + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810070A + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810070A + movs r0, #0 + strh r0, [r4, #0x2e] + strh r0, [r4, #0x32] + ldr r0, _08100710 + str r0, [r4, #0x1c] +_0810070A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08100710: .4byte sub_08100714 + thumb_func_end sub_081006A8 + + thumb_func_start sub_08100714 +sub_08100714: @ 0x08100714 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _08100758 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r3, r0, r1 + adds r0, r5, #1 + adds r0, r3, r0 + ldrh r2, [r4, #0x32] + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bne _08100760 + adds r0, r5, #2 + adds r0, r3, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x7f + bne _0810074C + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _0810075C + str r0, [r4, #0x1c] +_0810074C: + movs r0, #0 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _081007C6 + .align 2, 0 +_08100758: .4byte gUnknown_856E2E4 +_0810075C: .4byte sub_081007CC +_08100760: + adds r0, r2, #1 + strh r0, [r4, #0x32] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r1, r0, r5 + movs r2, #0 + ldrsb r2, [r1, r2] + adds r1, r5, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r0, r2, r0 + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081007AE + ldrh r0, [r4, #0x30] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xbe + bhi _081007A6 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1f + b _081007AC +_081007A6: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1d +_081007AC: + strb r0, [r1] +_081007AE: + movs r6, #0x30 + ldrsh r0, [r4, r6] + movs r1, #0x3c + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] +_081007C6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08100714 + + thumb_func_start sub_081007CC +sub_081007CC: @ 0x081007CC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x14 + ble _081007DE + adds r0, r4, #0 + bl sub_080A34C4 +_081007DE: + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081007CC + + thumb_func_start sub_08100810 +sub_08100810: @ 0x08100810 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08100964 + adds r5, r0, r1 + ldr r4, _08100968 + ldrb r0, [r4] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + strh r0, [r5, #0x10] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x16] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A7EE4 + strh r0, [r5, #0x1c] + ldrb r0, [r4] + movs r1, #0 + bl sub_080A7EE4 + strh r0, [r5, #0x1e] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #1 + bne _08100878 + movs r1, #1 +_08100878: + strh r1, [r5, #0x12] + movs r3, #0x12 + ldrsh r0, [r5, r3] + lsls r0, r0, #6 + movs r1, #0x38 + subs r1, r1, r0 + strh r1, [r5, #0x1a] + ldrh r0, [r5, #0x16] + subs r0, r0, r1 + ldrh r1, [r5, #0x14] + adds r0, r0, r1 + strh r0, [r5, #0x18] + ldr r0, _0810096C + movs r2, #0x18 + ldrsh r1, [r5, r2] + movs r3, #0x1a + ldrsh r2, [r5, r3] + ldrb r3, [r5, #0x10] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xc] + cmp r0, #0x40 + bne _081008B0 + adds r0, r6, #0 + bl sub_080A34E4 +_081008B0: + ldr r4, _08100970 + movs r0, #0xc + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xa + strh r1, [r0, #0x2e] + movs r2, #0xc + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r5, #0x18] + strh r1, [r0, #0x30] + movs r3, #0xc + ldrsh r0, [r5, r3] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + movs r1, #0x1c + ldrsh r0, [r5, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r1, [r5, r3] + muls r1, r0, r1 + ldrh r0, [r5, #0x14] + subs r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #0xc + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r5, #0x1a] + strh r1, [r0, #0x34] + movs r1, #0xc + ldrsh r0, [r5, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r2, #0x1e + ldrsh r0, [r5, r2] + lsrs r2, r0, #0x1f + adds r0, r0, r2 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r2, [r5, r3] + muls r0, r2, r0 + ldrh r2, [r5, #0x16] + adds r0, r0, r2 + strh r0, [r1, #0x36] + movs r3, #0xc + ldrsh r1, [r5, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08100D54 + movs r1, #0xc + ldrsh r2, [r5, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strh r0, [r1, #0x38] + movs r2, #0xc + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_080A619C + ldr r0, _08100974 + str r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08100964: .4byte gUnknown_3005B60 +_08100968: .4byte gUnknown_20380D7 +_0810096C: .4byte gUnknown_856E35C +_08100970: .4byte gUnknown_20205AC +_08100974: .4byte sub_08100978 + thumb_func_end sub_08100810 + + thumb_func_start sub_08100978 +sub_08100978: @ 0x08100978 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081009BC + adds r6, r0, r1 + movs r0, #0xc + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081009C0 + adds r4, r0, r1 + movs r1, #8 + ldrsh r5, [r6, r1] + cmp r5, #7 + bne _081009A0 + b _08100BD0 +_081009A0: + cmp r5, #7 + bgt _081009EE + cmp r5, #3 + bne _081009AA + b _08100AC2 +_081009AA: + cmp r5, #3 + bgt _081009C4 + cmp r5, #1 + beq _08100A54 + cmp r5, #1 + bgt _08100AA4 + cmp r5, #0 + beq _08100A36 + b _08100D4C + .align 2, 0 +_081009BC: .4byte gUnknown_3005B60 +_081009C0: .4byte gUnknown_20205AC +_081009C4: + cmp r5, #5 + bne _081009CA + b _08100B38 +_081009CA: + cmp r5, #5 + ble _081009D0 + b _08100BB2 +_081009D0: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081009E6 + b _08100D4C +_081009E6: + movs r0, #5 + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_081009EE: + cmp r5, #0xb + bne _081009F4 + b _08100CB4 +_081009F4: + cmp r5, #0xb + bgt _08100A22 + cmp r5, #9 + bne _081009FE + b _08100C22 +_081009FE: + cmp r5, #9 + ble _08100A04 + b _08100C98 +_08100A04: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08100A1A + b _08100D4C +_08100A1A: + movs r0, #9 + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_08100A22: + cmp r5, #0xd + bne _08100A28 + b _08100D26 +_08100A28: + cmp r5, #0xd + bge _08100A2E + b _08100D06 +_08100A2E: + cmp r5, #0xff + bne _08100A34 + b _08100D36 +_08100A34: + b _08100D4C +_08100A36: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08100A4C + b _08100D4C +_08100A4C: + movs r0, #1 + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_08100A54: + ldrh r2, [r4, #0x24] + ldrh r3, [r4, #0x20] + adds r2, r2, r3 + movs r0, #0 + strh r2, [r4, #0x20] + ldrh r1, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r1, 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_08100D54 + strh r0, [r4, #0x38] + ldrh r0, [r6, #0x10] + adds r0, #2 + 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_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100AA4: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08100ABA + b _08100D4C +_08100ABA: + movs r0, #3 + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_08100AC2: + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x20] + adds r1, r1, r0 + movs r0, #0 + strh r1, [r4, #0x20] + ldrh r2, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r2, 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, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r1, [r6, r3] + muls r1, r0, r1 + ldrh r0, [r6, #0x14] + subs r0, r0, r1 + strh r0, [r4, #0x32] + strh r2, [r4, #0x34] + movs r1, #0x1e + ldrsh r0, [r6, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r2, #0x12 + ldrsh r1, [r6, r2] + muls r1, r0, r1 + ldrh r0, [r6, #0x16] + subs r0, r0, r1 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08100D54 + strh r0, [r4, #0x38] + movs r0, #2 + 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_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100B38: + ldrh r1, [r4, #0x24] + ldrh r3, [r4, #0x20] + adds r1, r1, r3 + movs r0, #0 + strh r1, [r4, #0x20] + ldrh r2, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r2, 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, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r1, [r6, r3] + muls r0, r1, r0 + ldrh r1, [r6, #0x14] + adds r0, r0, r1 + strh r0, [r4, #0x32] + strh r2, [r4, #0x34] + movs r2, #0x1e + ldrsh r0, [r6, r2] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r1, [r6, r3] + muls r0, r1, r0 + ldrh r1, [r6, #0x16] + adds r0, r0, r1 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08100D54 + strh r0, [r4, #0x38] + ldrh r1, [r6, #0x10] + subs r1, #2 + strh r1, [r6, #0x10] + movs r0, #3 + strh r0, [r6, #0xe] + adds r0, r4, #0 + adds r0, #0x43 + strb r1, [r0] + ldrb r1, [r6, #0xe] + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100BB2: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08100BC8 + b _08100D4C +_08100BC8: + movs r0, #7 + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_08100BD0: + ldrh r2, [r4, #0x24] + ldrh r3, [r4, #0x20] + adds r2, r2, r3 + movs r0, #0 + strh r2, [r4, #0x20] + ldrh r1, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r1, 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_08100D54 + strh r0, [r4, #0x38] + ldrh r1, [r6, #0x10] + adds r1, #2 + strh r1, [r6, #0x10] + movs r0, #4 + strh r0, [r6, #0xe] + adds r0, r4, #0 + adds r0, #0x43 + strb r1, [r0] + ldrb r1, [r6, #0xe] + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100C22: + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x20] + adds r1, r1, r0 + movs r0, #0 + strh r1, [r4, #0x20] + ldrh r2, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r2, 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, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r3, #0x12 + ldrsh r1, [r6, r3] + muls r1, r0, r1 + ldrh r0, [r6, #0x14] + subs r0, r0, r1 + strh r0, [r4, #0x32] + strh r2, [r4, #0x34] + movs r1, #0x1e + ldrsh r0, [r6, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r0, #0xa + movs r2, #0x12 + ldrsh r1, [r6, r2] + muls r0, r1, r0 + ldrh r3, [r6, #0x16] + adds r0, r0, r3 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08100D54 + strh r0, [r4, #0x38] + movs r0, #5 + 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_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100C98: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08100D4C + movs r0, #0xb + strh r0, [r6, #0x26] + movs r0, #0xff + b _08100D4A +_08100CB4: + ldrh r2, [r4, #0x24] + ldrh r0, [r4, #0x20] + adds r2, r2, r0 + movs r0, #0 + strh r2, [r4, #0x20] + ldrh r1, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r1, 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_08100D54 + strh r0, [r4, #0x38] + ldrh r1, [r6, #0x10] + subs r1, #2 + strh r1, [r6, #0x10] + movs r0, #6 + strh r0, [r6, #0xe] + adds r0, r4, #0 + adds r0, #0x43 + strb r1, [r0] + ldrb r1, [r6, #0xe] + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_080A619C + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100D06: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_08100D74 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08100D4C + adds r0, r4, #0 + bl sub_08006E00 + ldrh r0, [r6, #8] + adds r0, #1 + b _08100D4A +_08100D26: + movs r1, #0x20 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08100D4C + adds r0, r2, #0 + bl sub_080A34E4 + b _08100D4C +_08100D36: + ldrh r0, [r6, #0xa] + adds r0, #1 + strh r0, [r6, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _08100D4C + movs r0, #0 + strh r0, [r6, #0xa] + ldrh r0, [r6, #0x26] +_08100D4A: + strh r0, [r6, #8] +_08100D4C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08100978 + + thumb_func_start sub_08100D54 +sub_08100D54: @ 0x08100D54 + push {lr} + movs r2, #8 + movs r3, #0x36 + ldrsh r1, [r0, r3] + movs r3, #0x22 + ldrsh r0, [r0, r3] + cmp r1, r0 + bge _08100D6A + rsbs r0, r2, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08100D6A: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08100D54 + + thumb_func_start sub_08100D74 +sub_08100D74: @ 0x08100D74 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldrh r0, [r6, #0x24] + adds r0, #1 + strh r0, [r6, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08100E0A + movs r0, #0 + strh r0, [r6, #0x24] + ldr r0, _08100E14 + mov r8, r0 + movs r2, #0xc + ldrsh r1, [r6, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrh r1, [r0, #0x24] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + ldrh r2, [r0, #0x26] + ldrh r0, [r0, #0x22] + adds r2, r2, r0 + ldr r0, _08100E18 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldrb r3, [r6, #0x10] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08100E0A + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + mov r0, r8 + adds r4, r5, r0 + strh r7, [r4, #0x3a] + movs r0, #0xc + strh r0, [r4, #0x3c] + ldr r0, _08100E1C + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + ldrh r2, [r6, #0x22] + movs r0, #1 + ands r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x22] + adds r0, #1 + strh r0, [r1, #0x22] + ldrb r1, [r6, #0xe] + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r6, #0x10] + adds r4, #0x43 + strb r0, [r4] + mov r0, r8 + adds r0, #0x1c + adds r5, r5, r0 + ldr r0, _08100E20 + str r0, [r5] +_08100E0A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08100E14: .4byte gUnknown_20205AC +_08100E18: .4byte gUnknown_856E35C +_08100E1C: .4byte gUnknown_3005B60 +_08100E20: .4byte sub_08100E24 + thumb_func_end sub_08100D74 + + thumb_func_start sub_08100E24 +sub_08100E24: @ 0x08100E24 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08100E86 + movs r0, #0 + strh r0, [r4, #0x2e] + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _08100E86 + ldr r3, _08100E8C + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_08100E86: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08100E8C: .4byte gUnknown_3005B60 + thumb_func_end sub_08100E24 + + thumb_func_start sub_08100E90 +sub_08100E90: @ 0x08100E90 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _08100EA4 + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08100EAC + ldr r0, _08100EA8 + b _08100EAE + .align 2, 0 +_08100EA4: .4byte gUnknown_20380BE +_08100EA8: .4byte gUnknown_20380D6 +_08100EAC: + ldr r0, _08100ECC +_08100EAE: + ldrb r6, [r0] + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08100ED8 + movs r0, #0 + strh r0, [r4, #0x36] + ldr r1, _08100ED0 + ldrh r0, [r1, #6] + strh r0, [r4, #0x32] + ldr r0, _08100ED4 + b _08100EE8 + .align 2, 0 +_08100ECC: .4byte gUnknown_20380D7 +_08100ED0: .4byte gUnknown_20380BE +_08100ED4: .4byte 0x0000FFF0 +_08100ED8: + movs r0, #1 + strh r0, [r4, #0x36] + ldr r1, _08100F0C + ldrh r0, [r1, #6] + rsbs r0, r0, #0 + strh r0, [r4, #0x32] + movs r0, #0x80 + lsls r0, r0, #1 +_08100EE8: + strh r0, [r4, #0x20] + adds r7, r1, #0 + adds r5, r7, #0 + ldrh r0, [r5, #2] + strh r0, [r4, #0x30] + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #8] + strh r0, [r4, #0x34] + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08100F1E + cmp r0, #1 + bgt _08100F10 + cmp r0, #0 + beq _08100F1A + b _08100F88 + .align 2, 0 +_08100F0C: .4byte gUnknown_20380BE +_08100F10: + cmp r0, #2 + beq _08100F24 + cmp r0, #3 + beq _08100F50 + b _08100F88 +_08100F1A: + ldrh r0, [r5] + b _08100F34 +_08100F1E: + ldrh r0, [r5] + strh r0, [r4, #0x22] + b _08100F6A +_08100F24: + adds r0, r6, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5] + adds r0, r0, r5 +_08100F34: + strh r0, [r4, #0x22] + adds r0, r6, #0 + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + b _08100F88 +_08100F50: + ldr r0, _08100F94 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r7, [r7] + adds r0, r0, r7 + strh r0, [r4, #0x22] + movs r0, #1 + bl sub_080A5B08 +_08100F6A: + adds r0, r6, #0 + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #5] +_08100F88: + ldr r0, _08100F98 + str r0, [r4, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08100F94: .4byte gUnknown_20380D7 +_08100F98: .4byte sub_08100F9C + thumb_func_end sub_08100E90 + + thumb_func_start sub_08100F9C +sub_08100F9C: @ 0x08100F9C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x3c + ldrsh r3, [r4, r0] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + movs r1, #0x30 + ldrsh r2, [r4, r1] + ldr r1, _08100FF0 + movs r5, #0x2e + ldrsh r0, [r4, r5] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + muls r0, r2, r0 + asrs r0, r0, #8 + strh r0, [r4, #0x26] + movs r2, #0x32 + ldrsh r0, [r4, r2] + muls r0, r3, r0 + strh r0, [r4, #0x24] + movs r5, #0x34 + ldrsh r0, [r4, r5] + muls r0, r3, r0 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08100FF4 + movs r2, #0x24 + ldrsh r0, [r4, r2] + movs r5, #0x20 + ldrsh r1, [r4, r5] + adds r0, r0, r1 + cmp r0, #0xf7 + ble _0810100C + b _08101006 + .align 2, 0 +_08100FF0: .4byte gUnknown_82FA8CC +_08100FF4: + movs r1, #0x24 + ldrsh r0, [r4, r1] + movs r2, #0x20 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0810100C +_08101006: + adds r0, r4, #0 + bl sub_080A6014 +_0810100C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08100F9C + + thumb_func_start sub_08101014 +sub_08101014: @ 0x08101014 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08101034 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08101038 + cmp r0, #1 + beq _0810106C + b _081010C6 + .align 2, 0 +_08101034: .4byte gUnknown_3005B60 +_08101038: + ldr r0, _08101064 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r2, #0x80 + lsls r2, r2, #1 + adds r4, r2, #0 + adds r0, r0, r4 + strh r0, [r5, #0x18] + ldr r0, _08101068 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + adds r0, r0, r4 + strh r0, [r5, #0x20] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _081010C6 + .align 2, 0 +_08101064: .4byte 0x0000274F +_08101068: .4byte 0x000027B0 +_0810106C: + ldrh r0, [r5, #0x1a] + adds r0, #1 + movs r7, #0 + strh r0, [r5, #0x1a] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _081010C6 + strh r7, [r5, #0x1a] + ldrh r0, [r5, #0x18] + ldrb r2, [r5, #0x1c] + ldr r4, _081010E0 + movs r3, #0x1e + ldrsh r1, [r5, r3] + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + movs r1, #0x10 + bl sub_0806F410 + ldrh r0, [r5, #0x20] + ldrb r2, [r5, #0x1c] + movs r3, #0x1e + ldrsh r1, [r5, r3] + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + movs r1, #0x10 + bl sub_0806F410 + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x11 + bne _081010C6 + strh r7, [r5, #0x1c] + ldrh r0, [r5, #0x1e] + adds r0, #1 + strh r0, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bne _081010C6 + strh r7, [r5, #0x1e] +_081010C6: + ldr r0, _081010E4 + movs r2, #0xe + ldrsh r1, [r0, r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _081010DA + adds r0, r6, #0 + bl sub_080A34E4 +_081010DA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081010E0: .4byte gUnknown_856E45C +_081010E4: .4byte gUnknown_20380BE + thumb_func_end sub_08101014 + + thumb_func_start sub_081010E8 +sub_081010E8: @ 0x081010E8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r1, _08101100 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08101104 + adds r0, r6, #0 + bl sub_080A34C4 + b _081011DE + .align 2, 0 +_08101100: .4byte gUnknown_20380BE +_08101104: + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _08101114 + ldr r4, _08101110 + b _08101116 + .align 2, 0 +_08101110: .4byte gUnknown_20380D6 +_08101114: + ldr r4, _08101150 +_08101116: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08101154 + ldrh r1, [r0, #8] + strh r1, [r6, #0x2e] + movs r3, #2 + ldrsh r1, [r0, r3] + adds r7, r0, #0 + cmp r1, #0 + bne _08101158 + ldrh r0, [r7, #4] + adds r0, r0, r5 + strh r0, [r6, #0x20] + ldrh r0, [r7, #6] + adds r0, r0, r2 + strh r0, [r6, #0x22] + strh r5, [r6, #0x38] + strh r2, [r6, #0x3a] + b _08101168 + .align 2, 0 +_08101150: .4byte gUnknown_20380D7 +_08101154: .4byte gUnknown_20380BE +_08101158: + strh r5, [r6, #0x20] + strh r2, [r6, #0x22] + ldrh r0, [r7, #4] + adds r0, r0, r5 + strh r0, [r6, #0x38] + ldrh r0, [r7, #6] + adds r0, r0, r2 + strh r0, [r6, #0x3a] +_08101168: + 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, r0, r1 + lsls r0, r0, #4 + movs r3, #8 + 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, r0, r1 + lsls r0, r0, #4 + movs r3, #8 + ldrsh r1, [r7, r3] + bl __divsi3 + strh r0, [r6, #0x36] + ldrh r0, [r6, #0x38] + subs r0, r0, r4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r6, #0x3a] + subs r1, r1, r5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081011CA + ldr r1, _081011E8 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081011CA: + movs r3, #0x80 + lsls r3, r3, #1 + str r4, [sp] + adds r0, r6, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + ldr r0, _081011EC + str r0, [r6, #0x1c] +_081011DE: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081011E8: .4byte 0xFFFF8000 +_081011EC: .4byte sub_081011F0 + thumb_func_end sub_081010E8 + + thumb_func_start sub_081011F0 +sub_081011F0: @ 0x081011F0 + push {r4, lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x2e] + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _08101220 + ldrh r0, [r2, #0x34] + ldrh r4, [r2, #0x30] + adds r0, r0, r4 + strh r0, [r2, #0x30] + ldrh r1, [r2, #0x36] + ldrh r4, [r2, #0x32] + adds r1, r1, r4 + strh r1, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r2, #0x22] + subs r0, r3, #1 + strh r0, [r2, #0x2e] + b _08101226 +_08101220: + adds r0, r2, #0 + bl sub_080A6014 +_08101226: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081011F0 + + thumb_func_start sub_0810122C +sub_0810122C: @ 0x0810122C + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08101242 + adds r0, r2, #0 + bl sub_080A34C4 +_08101242: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810122C + + thumb_func_start sub_08101248 +sub_08101248: @ 0x08101248 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08101268 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101270 + ldr r2, _0810126C + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + b _0810127C + .align 2, 0 +_08101268: .4byte gUnknown_20380D6 +_0810126C: .4byte gUnknown_20380BE +_08101270: + ldr r0, _08101294 + ldrh r1, [r0] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + strh r1, [r4, #0x20] + ldrh r0, [r0, #2] +_0810127C: + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _08101298 + str r0, [r4, #0x1c] + ldr r1, _0810129C + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101294: .4byte gUnknown_20380BE +_08101298: .4byte sub_080A60A0 +_0810129C: .4byte sub_080A34C4 + thumb_func_end sub_08101248 + + thumb_func_start sub_081012A0 +sub_081012A0: @ 0x081012A0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _081012D8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081012BA + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_081012BA: + ldr r0, _081012DC + str r0, [r5, #0x1c] + ldr r4, _081012E0 + movs r0, #0 + ldrsh r1, [r4, r0] + adds r0, r5, #0 + bl sub_080A612C + ldrh r0, [r4, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081012D8: .4byte gUnknown_20380D6 +_081012DC: .4byte sub_0810122C +_081012E0: .4byte gUnknown_20380BE + thumb_func_end sub_081012A0 + + thumb_func_start sub_081012E4 +sub_081012E4: @ 0x081012E4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08101324 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x34] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x38] + ldrb r1, [r1, #0xc] + adds r0, r4, #0 + bl sub_08007F70 + ldr r1, _08101328 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810132C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101324: .4byte gUnknown_20380BE +_08101328: .4byte sub_080A6014 +_0810132C: .4byte sub_080A5FA4 + thumb_func_end sub_081012E4 + + thumb_func_start sub_08101330 +sub_08101330: @ 0x08101330 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08101380 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08101364 + ldrh r0, [r5, #0x22] + adds r0, #8 + strh r0, [r5, #0x22] +_08101364: + ldr r0, _08101384 + str r0, [r5, #0x1c] + ldr r0, _08101388 + movs r2, #4 + ldrsh r1, [r0, r2] + adds r3, r0, #0 + cmp r1, #0 + bne _0810138C + ldrh r0, [r3] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + strh r0, [r5, #0x20] + b _081013A0 + .align 2, 0 +_08101380: .4byte gUnknown_20380D7 +_08101384: .4byte sub_0810151C +_08101388: .4byte gUnknown_20380BE +_0810138C: + ldrh r0, [r5, #0x20] + ldrh r1, [r3] + subs r0, r0, r1 + strh r0, [r5, #0x20] + adds r2, r5, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_081013A0: + ldrh r0, [r3, #2] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + ldr r1, _081013D4 + adds r0, r1, #0 + ldrh r2, [r5, #0x30] + adds r1, r0, r2 + strh r1, [r5, #0x30] + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r2, [r5, #0x32] + adds r0, r0, r2 + strh r0, [r5, #0x32] + ldrh r0, [r3, #4] + strh r0, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _081013CE + rsbs r0, r1, #0 + strh r0, [r5, #0x30] +_081013CE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081013D4: .4byte 0xFFFFFC00 + thumb_func_end sub_08101330 + + thumb_func_start sub_081013D8 +sub_081013D8: @ 0x081013D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _081013F4 + movs r1, #6 + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _081013F8 + cmp r0, #1 + ble _08101474 + cmp r0, #2 + beq _08101418 + b _08101474 + .align 2, 0 +_081013F4: .4byte gUnknown_20380BE +_081013F8: + ldr r5, _08101414 + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r5] + eors r4, r0 + adds r0, r4, #0 + b _08101484 + .align 2, 0 +_08101414: .4byte gUnknown_20380D7 +_08101418: + ldr r5, _08101470 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5] + movs r2, #2 + mov r8, r2 + mov r1, r8 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810148E + ldrb r0, [r5] + mov r2, r8 + eors r0, r2 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r7 + lsrs r7, r0, #1 + ldrb r0, [r5] + mov r1, r8 + eors r0, r1 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + lsrs r4, r0, #1 + b _0810148E + .align 2, 0 +_08101470: .4byte gUnknown_20380D7 +_08101474: + ldr r4, _081014C0 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r4] +_08101484: + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0810148E: + strh r7, [r6, #0x20] + strh r4, [r6, #0x22] + ldr r0, _081014C0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081014A6 + ldrh r0, [r6, #0x22] + adds r0, #8 + strh r0, [r6, #0x22] +_081014A6: + ldr r0, _081014C4 + str r0, [r6, #0x1c] + ldr r0, _081014C8 + movs r2, #4 + ldrsh r1, [r0, r2] + adds r3, r0, #0 + cmp r1, #0 + bne _081014CC + ldrh r0, [r3] + ldrh r1, [r6, #0x20] + adds r0, r0, r1 + strh r0, [r6, #0x20] + b _081014E0 + .align 2, 0 +_081014C0: .4byte gUnknown_20380D7 +_081014C4: .4byte sub_0810151C +_081014C8: .4byte gUnknown_20380BE +_081014CC: + ldrh r0, [r6, #0x20] + ldrh r1, [r3] + subs r0, r0, r1 + strh r0, [r6, #0x20] + adds r2, r6, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_081014E0: + ldrh r0, [r3, #2] + ldrh r2, [r6, #0x22] + adds r0, r0, r2 + strh r0, [r6, #0x22] + ldr r1, _08101518 + adds r0, r1, #0 + ldrh r2, [r6, #0x30] + adds r1, r0, r2 + strh r1, [r6, #0x30] + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r2, [r6, #0x32] + adds r0, r0, r2 + strh r0, [r6, #0x32] + ldrh r0, [r3, #4] + strh r0, [r6, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0810150E + rsbs r0, r1, #0 + strh r0, [r6, #0x30] +_0810150E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08101518: .4byte 0xFFFFFC00 + thumb_func_end sub_081013D8 + + thumb_func_start sub_0810151C +sub_0810151C: @ 0x0810151C + 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, r0, r2 + strh r0, [r4, #0x36] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0810153E + adds r0, r1, #0 + adds r0, #0x18 + b _08101542 +_0810153E: + adds r0, r1, #0 + subs r0, #0x18 +_08101542: + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + subs r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _08101578 + ldr r1, _08101580 + adds r0, r4, #0 + bl sub_080A5B9C + movs r0, #3 + strh r0, [r4, #0x2e] + ldr r0, _08101584 + str r0, [r4, #0x1c] +_08101578: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101580: .4byte sub_080A34C4 +_08101584: .4byte sub_080A5D78 + thumb_func_end sub_0810151C + + thumb_func_start sub_08101588 +sub_08101588: @ 0x08101588 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x32] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r0, #1 + ble _0810162C + ldrh r1, [r5, #0x34] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081015E4 + adds r3, r5, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + strb r0, [r3] + ldr r4, _081015E0 + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + b _0810161A + .align 2, 0 +_081015E0: .4byte gUnknown_20205AC +_081015E4: + adds r1, r5, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r3, _08101628 + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] +_0810161A: + movs r0, #0 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + b _08101630 + .align 2, 0 +_08101628: .4byte gUnknown_20205AC +_0810162C: + adds r0, r1, #1 + strh r0, [r5, #0x32] +_08101630: + movs r1, #0x34 + ldrsh r0, [r5, r1] + cmp r0, #0xa + bne _08101660 + movs r2, #0x2e + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08101668 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_080A34C4 +_08101660: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08101668: .4byte gUnknown_20205AC + thumb_func_end sub_08101588 + + thumb_func_start sub_0810166C +sub_0810166C: @ 0x0810166C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810168C + ldrh r0, [r4, #4] + strh r0, [r5, #0x2e] + ldr r0, _08101690 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101694 + ldrh r0, [r5, #0x20] + ldrh r1, [r4] + subs r0, r0, r1 + b _0810169A + .align 2, 0 +_0810168C: .4byte gUnknown_20380BE +_08101690: .4byte gUnknown_20380D6 +_08101694: + ldrh r0, [r4] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 +_0810169A: + strh r0, [r5, #0x20] + ldr r4, _081016C8 + ldrb r1, [r4, #0xa] + adds r0, r5, #0 + bl sub_08007EC0 + ldrh r0, [r4, #6] + rsbs r0, r0, #0 + strh r0, [r5, #0x30] + ldrh r0, [r4, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldrh r0, [r4, #8] + strh r0, [r5, #0x34] + ldr r1, _081016CC + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081016C8: .4byte gUnknown_20380BE +_081016CC: .4byte sub_081016D0 + thumb_func_end sub_0810166C + + thumb_func_start sub_081016D0 +sub_081016D0: @ 0x081016D0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x64 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x7f + bgt _081016FC + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0 + b _08101702 +_081016FC: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0xe +_08101702: + strb r0, [r1] + ldrh r0, [r4, #0x30] + ldrh r2, [r4, #0x2e] + adds r0, 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, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08101738 + adds r0, r4, #0 + bl sub_080A34C4 +_08101738: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081016D0 + + thumb_func_start sub_08101740 +sub_08101740: @ 0x08101740 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101756 + ldr r1, _081017B4 + ldrh r0, [r1, #2] + adds r0, #8 + strh r0, [r1, #2] +_08101756: + ldr r6, _081017B8 + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5974 + lsls r0, r0, #0x18 + ldr r4, _081017B4 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #2] + adds r0, r0, r4 + strh r0, [r5, #0x22] + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101794 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081017BC +_08101794: + ldrb r0, [r6] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r5, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #5] + b _081017D4 + .align 2, 0 +_081017B4: .4byte gUnknown_20380BE +_081017B8: .4byte gUnknown_20380D6 +_081017BC: + ldrb r0, [r6] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] +_081017D4: + ldr r0, _08101818 + ldrh r0, [r0, #4] + strh r0, [r5, #0x2e] + ldr r0, _0810181C + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r5, #0x32] + movs r4, #0x10 + movs r0, #0x10 + strh r0, [r5, #0x3c] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r0, [r5, #0x3c] + lsls r1, r0, #8 + subs r4, r4, r0 + orrs r1, r4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _08101820 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08101818: .4byte gUnknown_20380BE +_0810181C: .4byte 0x00002828 +_08101820: .4byte sub_08101824 + thumb_func_end sub_08101740 + + thumb_func_start sub_08101824 +sub_08101824: @ 0x08101824 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + adds r0, #0x60 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08101882 + movs r0, #0 + strh r0, [r4, #0x30] + ldr r1, _081018CC + movs r2, #0x32 + ldrsh r0, [r4, r2] + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r5, [r0] + movs r2, #0 + adds r6, r1, #0 + adds r3, r6, #0 +_0810185C: + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r2, #1 + adds r0, r0, r2 + lsls r1, r0, #1 + adds r1, r1, r3 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + cmp r2, #5 + ble _0810185C + movs r2, #0x32 + ldrsh r0, [r4, r2] + adds r0, #7 + lsls r0, r0, #1 + adds r0, r0, r6 + strh r5, [r0] +_08101882: + ldrh r2, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #6 + ble _081018BC + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _081018D0 + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081018BC + movs r0, #0 + strh r0, [r4, #0x3a] + subs r2, #1 + strh r2, [r4, #0x3c] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_081018BC: + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _081018D0 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + b _08101912 + .align 2, 0 +_081018CC: .4byte gUnknown_20377B4 +_081018D0: + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08101912 + movs r0, #0 + strh r0, [r4, #0x3a] + ldrh r2, [r4, #0x3c] + adds r2, #1 + strh r2, [r4, #0x3c] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08101912 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08101918 + str r0, [r4, #0x1c] +_08101912: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08101918: .4byte sub_080A60BC + thumb_func_end sub_08101824 + + thumb_func_start sub_0810191C +sub_0810191C: @ 0x0810191C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _0810197C + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x20] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08101980 + adds r0, 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, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r4, #0x3c] + lsls r1, r1, #8 + ldrh r0, [r4, #0x3a] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _08101984 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810197C: .4byte gUnknown_20380D7 +_08101980: .4byte 0x0000FFE8 +_08101984: .4byte sub_08101988 + thumb_func_end sub_0810191C + + thumb_func_start sub_08101988 +sub_08101988: @ 0x08101988 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _08101996 + b _08101AE0 +_08101996: + lsls r0, r0, #2 + ldr r1, _081019A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081019A0: .4byte _081019A4 +_081019A4: @ jump table + .4byte _081019B8 @ case 0 + .4byte _08101A1C @ case 1 + .4byte _08101A38 @ case 2 + .4byte _08101AB6 @ case 3 + .4byte _08101ACA @ case 4 +_081019B8: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081019C6 + b _08101AE0 +_081019C6: + movs r0, #0 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081019E8 + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _081019F6 + adds r0, r1, #1 + strh r0, [r4, #0x3a] + b _081019F6 +_081019E8: + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _081019F6 + subs r0, r1, #1 + strh r0, [r4, #0x3c] +_081019F6: + ldrh r1, [r4, #0x3c] + lsls r1, r1, #8 + ldrh r0, [r4, #0x3a] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08101AE0 + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08101AE0 + strh r0, [r4, #0x30] + b _08101AC2 +_08101A1C: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _08101AE0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + b _08101AC2 +_08101A38: + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #4 + bl sub_08101AE8 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _08101A5A + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] +_08101A5A: + ldrh r0, [r4, #0x32] + adds r1, r0, #1 + strh r1, [r4, #0x32] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + ble _08101AE0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08101A80 + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08101A8E + subs r0, r1, #1 + strh r0, [r4, #0x3a] + b _08101A8E +_08101A80: + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08101A8E + adds r0, r1, #1 + strh r0, [r4, #0x3c] +_08101A8E: + ldrh r1, [r4, #0x3c] + lsls r1, r1, #8 + ldrh r0, [r4, #0x3a] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x3a + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _08101AE0 + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x10 + bne _08101AE0 + strh r1, [r4, #0x30] + strh r1, [r4, #0x32] + b _08101AC2 +_08101AB6: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08101AC2: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08101AE0 +_08101ACA: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 +_08101AE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08101988 + + thumb_func_start sub_08101AE8 +sub_08101AE8: @ 0x08101AE8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0xb + bgt _08101AFA + ldrh r0, [r4, #0x36] + adds r0, #2 + strh r0, [r4, #0x36] +_08101AFA: + ldrh r5, [r4, #0x34] + adds r0, r5, #0 + subs r0, #0x12 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + cmp r0, #0x17 + bhi _08101B10 + ldrh r0, [r4, #0x36] + subs r0, #2 + strh r0, [r4, #0x36] +_08101B10: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2f + ble _08101B1E + ldrh r0, [r4, #0x36] + adds r0, #2 + strh r0, [r4, #0x36] +_08101B1E: + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #9 + bl __divsi3 + strh r0, [r4, #0x24] + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0xe + bl __divsi3 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08101B44 + movs r1, #0x26 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08101B44: + adds r0, r5, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3b + ble _08101B54 + movs r0, #0 + strh r0, [r4, #0x34] +_08101B54: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08101AE8 + + thumb_func_start sub_08101B5C +sub_08101B5C: @ 0x08101B5C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08101BA0 + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08101B70 + adds r0, r4, #0 + bl sub_080A6100 +_08101B70: + movs r0, #0 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl sub_080A612C + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #6] + strh r0, [r4, #0x30] + ldrh r0, [r5, #8] + strh r0, [r4, #0x32] + ldr r1, _08101BA4 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08101BA8 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08101BA0: .4byte gUnknown_20380BE +_08101BA4: .4byte sub_080A34C4 +_08101BA8: .4byte sub_080A5E34 + thumb_func_end sub_08101B5C + + thumb_func_start sub_08101BAC +sub_08101BAC: @ 0x08101BAC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08101BC0 + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08101BC8 + ldr r0, _08101BC4 + b _08101BCA + .align 2, 0 +_08101BC0: .4byte gUnknown_20380BE +_08101BC4: .4byte gUnknown_20380D6 +_08101BC8: + ldr r0, _08101C0C +_08101BCA: + ldrb r6, [r0] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101C14 + movs r1, #2 + adds r0, r6, #0 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08101C14 + ldr r4, _08101C10 + ldrb r1, [r4, #0xc] + adds r2, r5, #0 + adds r2, #0x20 + adds r3, r5, #0 + adds r3, #0x22 + adds r0, r6, #0 + bl sub_080A81EC + movs r2, #0 + ldrsh r1, [r4, r2] + adds r0, r5, #0 + bl sub_080A612C + ldrh r0, [r4, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + b _08101C64 + .align 2, 0 +_08101C0C: .4byte gUnknown_20380D7 +_08101C10: .4byte gUnknown_20380BE +_08101C14: + ldr r4, _08101C34 + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08101C38 + adds r0, r6, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + adds r0, r6, #0 + movs r1, #1 + b _08101C4A + .align 2, 0 +_08101C34: .4byte gUnknown_20380BE +_08101C38: + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + adds r0, r6, #0 + movs r1, #3 +_08101C4A: + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #2] + adds r0, r0, r4 + strh r0, [r5, #0x22] + ldr r0, _08101C84 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r0, r5, #0 + bl sub_080A612C +_08101C64: + ldr r1, _08101C84 + ldrh r0, [r1, #0xa] + strh r0, [r5, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r5, #0x30] + ldrh r0, [r1, #8] + strh r0, [r5, #0x32] + ldr r1, _08101C88 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _08101C8C + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08101C84: .4byte gUnknown_20380BE +_08101C88: .4byte sub_080A34C4 +_08101C8C: .4byte sub_080A5E34 + thumb_func_end sub_08101BAC + + thumb_func_start sub_08101C90 +sub_08101C90: @ 0x08101C90 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _08101CBC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08101CC4 + ldr r0, _08101CC0 + ldrh r1, [r0] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + strh r1, [r4, #0x20] + ldrh r0, [r0, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + b _08101CDE + .align 2, 0 +_08101CBC: .4byte gUnknown_20380D6 +_08101CC0: .4byte gUnknown_20380BE +_08101CC4: + ldr r2, _08101CE8 + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 +_08101CDE: + ldr r0, _08101CEC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101CE8: .4byte gUnknown_20380BE +_08101CEC: .4byte sub_08101CF0 + thumb_func_end sub_08101C90 + + thumb_func_start sub_08101CF0 +sub_08101CF0: @ 0x08101CF0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _08101D28 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x1e + subs r0, r0, r1 + movs r1, #3 + bl __divsi3 + strh r0, [r4, #0x26] + movs r1, #0x30 + ldrsh r0, [r4, r1] + lsls r0, r0, #0x12 + asrs r0, r0, #0x10 + movs r1, #3 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_08101D28: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08101D3C + adds r0, r4, #0 + bl sub_080A34C4 +_08101D3C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08101CF0 + + thumb_func_start sub_08101D44 +sub_08101D44: @ 0x08101D44 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _08101D74 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08101D7C + ldr r1, _08101D78 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + movs r0, #1 + strh r0, [r4, #0x34] + b _08101D9A + .align 2, 0 +_08101D74: .4byte gUnknown_20380D6 +_08101D78: .4byte gUnknown_20380BE +_08101D7C: + ldr r2, _08101DA4 + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldr r0, _08101DA8 + strh r0, [r4, #0x34] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_08101D9A: + ldr r0, _08101DAC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08101DA4: .4byte gUnknown_20380BE +_08101DA8: .4byte 0x0000FFFF +_08101DAC: .4byte sub_08101DB0 + thumb_func_end sub_08101D44 + + thumb_func_start sub_08101DB0 +sub_08101DB0: @ 0x08101DB0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x28 + bl __divsi3 + rsbs r0, r0, #0 + 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, r0, #1 + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x30] + ldrh r2, [r4, #0x2e] + adds r1, r0, r2 + strh r1, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _08101DF4 + adds r0, r4, #0 + bl sub_080A6014 +_08101DF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08101DB0 + + thumb_func_start sub_08101DFC +sub_08101DFC: @ 0x08101DFC + 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, _08101E1C + str r1, [r0, #0x1c] + ldr r1, _08101E20 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08101E1C: .4byte sub_080A5D78 +_08101E20: .4byte sub_08101E24 + thumb_func_end sub_08101DFC + + thumb_func_start sub_08101E24 +sub_08101E24: @ 0x08101E24 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r6, [r5, #0x38] + movs r1, #1 + adds r0, r1, #0 + ands r0, r6 + cmp r0, #0 + beq _08101E3A + cmp r0, #1 + beq _08101E54 + b _08101EBA +_08101E3A: + strh r1, [r5, #0x2e] + ldr r0, _08101E4C + str r0, [r5, #0x1c] + ldr r1, _08101E50 + adds r0, r5, #0 + bl sub_080A5B9C + b _08101EBA + .align 2, 0 +_08101E4C: .4byte sub_080A5D78 +_08101E50: .4byte sub_08101E24 +_08101E54: + ldrh r3, [r5, #0x24] + ldrh r0, [r5, #0x20] + adds r3, r3, r0 + movs r0, #0 + strh r3, [r5, #0x20] + ldrh r4, [r5, #0x26] + ldrh r1, [r5, #0x22] + adds r4, r4, r1 + strh r4, [r5, #0x22] + strh r0, [r5, #0x26] + strh r0, [r5, #0x24] + movs r0, #8 + strh r0, [r5, #0x2e] + ldr r2, _08101EC8 + lsls r0, r6, #0x10 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r3, r3, r1 + strh r3, [r5, #0x32] + adds r2, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r4, r4, r0 + strh r4, [r5, #0x36] + ldr r0, _08101ECC + str r0, [r5, #0x1c] + ldr r1, _08101ED0 + adds r0, r5, #0 + bl sub_080A5B9C + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r5, #0x38] + adds r0, r0, r1 + strh r0, [r5, #0x38] + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xd2 + bl sub_080A307C +_08101EBA: + ldrh r0, [r5, #0x38] + movs r1, #1 + eors r0, r1 + strh r0, [r5, #0x38] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08101EC8: .4byte gUnknown_856E8B4 +_08101ECC: .4byte sub_080A67B4 +_08101ED0: .4byte sub_08101ED4 + thumb_func_end sub_08101E24 + + thumb_func_start sub_08101ED4 +sub_08101ED4: @ 0x08101ED4 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + cmp r0, #4 + bne _08101EFC + movs r0, #0xa + strh r0, [r2, #0x2e] + ldr r0, _08101EF4 + str r0, [r2, #0x1c] + ldr r1, _08101EF8 + adds r0, r2, #0 + bl sub_080A5B9C + b _08101F00 + .align 2, 0 +_08101EF4: .4byte sub_080A5D78 +_08101EF8: .4byte sub_08101F08 +_08101EFC: + ldr r0, _08101F04 + str r0, [r2, #0x1c] +_08101F00: + pop {r0} + bx r0 + .align 2, 0 +_08101F04: .4byte sub_08101E24 + thumb_func_end sub_08101ED4 + + thumb_func_start sub_08101F08 +sub_08101F08: @ 0x08101F08 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r1, [r5, #6] + cmp r1, #0 + bne _08101F30 + movs r0, #3 + strh r0, [r5, #0x2e] + strh r1, [r5, #0x30] + strh r1, [r5, #0x32] + ldr r0, _08101F28 + str r0, [r5, #0x1c] + ldr r1, _08101F2C + adds r0, r5, #0 + bl sub_080A5B9C + b _08101FB0 + .align 2, 0 +_08101F28: .4byte sub_080A5D78 +_08101F2C: .4byte sub_08101FC4 +_08101F30: + ldrh r0, [r5, #6] + cmp r0, #2 + beq _08101F50 + cmp r0, #2 + bgt _08101F40 + cmp r0, #1 + beq _08101F46 + b _08101F64 +_08101F40: + cmp r0, #3 + beq _08101F58 + b _08101F64 +_08101F46: + ldr r6, _08101F4C + adds r7, r6, #0 + b _08101F68 + .align 2, 0 +_08101F4C: .4byte 0x0000FFF8 +_08101F50: + ldr r7, _08101F54 + b _08101F66 + .align 2, 0 +_08101F54: .4byte 0x0000FFF8 +_08101F58: + movs r7, #8 + ldr r6, _08101F60 + b _08101F68 + .align 2, 0 +_08101F60: .4byte 0x0000FFF8 +_08101F64: + movs r7, #8 +_08101F66: + movs r6, #8 +_08101F68: + ldrh r0, [r5, #0x24] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + movs r0, #6 + strh r0, [r5, #0x2e] + ldr r4, _08101FB8 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r7 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x36] + ldr r0, _08101FBC + str r0, [r5, #0x1c] + ldr r1, _08101FC0 + adds r0, r5, #0 + bl sub_080A5B9C +_08101FB0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08101FB8: .4byte gUnknown_20380D7 +_08101FBC: .4byte sub_080A67B4 +_08101FC0: .4byte sub_08102070 + thumb_func_end sub_08101F08 + + thumb_func_start sub_08101FC4 +sub_08101FC4: @ 0x08101FC4 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08101FE4 + ldrh r0, [r4, #0x30] + adds r0, #3 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08101FF4 + movs r0, #0x10 + b _08101FF2 +_08101FE4: + ldrh r0, [r4, #0x30] + subs r0, #3 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08101FF4 + movs r0, #0 +_08101FF2: + strh r0, [r4, #0x30] +_08101FF4: + movs r0, #1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #1 + movs r3, #1 + bl sub_080A6E74 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08102050 + bl sub_080A22E8 + movs r3, #0x30 + ldrsh r0, [r4, r3] + cmp r0, #0x10 + bne _0810205C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + lsls r0, r1, #5 + ldr r2, _08102054 + adds r0, r0, r2 + lsls r1, r1, #4 + ldr r3, _08102058 + adds r2, r3, #0 + orrs r1, r2 + movs r2, #4 + bl sub_080A1200 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xc0 + bl sub_080A307C + b _08102064 + .align 2, 0 +_08102050: .4byte 0x00007FFF +_08102054: .4byte gUnknown_20375C4 +_08102058: .4byte 0x00000101 +_0810205C: + cmp r0, #0 + bne _08102064 + ldr r0, _0810206C + str r0, [r4, #0x1c] +_08102064: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810206C: .4byte sub_08102070 + thumb_func_end sub_08101FC4 + + thumb_func_start sub_08102070 +sub_08102070: @ 0x08102070 + push {lr} + adds r2, r0, #0 + ldr r0, _0810208C + ldrh r1, [r0, #0xe] + ldr r0, _08102090 + cmp r1, r0 + bne _08102088 + movs r0, #0 + strh r0, [r2, #0x30] + strh r0, [r2, #0x2e] + ldr r0, _08102094 + str r0, [r2, #0x1c] +_08102088: + pop {r0} + bx r0 + .align 2, 0 +_0810208C: .4byte gUnknown_20380BE +_08102090: .4byte 0x0000FFFF +_08102094: .4byte sub_08102098 + thumb_func_end sub_08102070 + + thumb_func_start sub_08102098 +sub_08102098: @ 0x08102098 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081020CC + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081020CC: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #8 + bne _081020E0 + adds r0, r4, #0 + bl sub_080A34C4 +_081020E0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08102098 + + thumb_func_start sub_081020E8 +sub_081020E8: @ 0x081020E8 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _08102108 + ldrh r0, [r0] + strh r0, [r3, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0810210C + ldrh r0, [r3, #0x20] + subs r0, #0x18 + strh r0, [r3, #0x20] + ldrh r0, [r3, #0x22] + subs r0, #0x18 + strh r0, [r3, #0x22] + b _0810215E + .align 2, 0 +_08102108: .4byte gUnknown_20380BE +_0810210C: + cmp r0, #2 + bne _08102128 + 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, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x20 + b _0810215A +_08102128: + cmp r0, #3 + bne _08102144 + 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, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + b _0810215A +_08102144: + 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, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x30 +_0810215A: + orrs r0, r1 + strb r0, [r3, #3] +_0810215E: + ldrh r2, [r3, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x10 + ldr r4, _08102184 + adds r0, r4, #0 + ands r1, r0 + ldr r0, _08102188 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + ldr r1, _0810218C + str r1, [r3, #0x1c] + adds r0, r3, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102184: .4byte 0x000003FF +_08102188: .4byte 0xFFFFFC00 +_0810218C: .4byte sub_08101DFC + thumb_func_end sub_081020E8 + + thumb_func_start sub_08102190 +sub_08102190: @ 0x08102190 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0 + strh r0, [r3, #0x2e] + ldr r0, _081021B8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _081021CC + cmp r0, #1 + bgt _081021BC + cmp r0, #0 + beq _081021C2 + b _081021DC + .align 2, 0 +_081021B8: .4byte gUnknown_20380BE +_081021BC: + cmp r0, #2 + beq _081021D4 + b _081021DC +_081021C2: + ldr r0, _081021C8 + b _081021DE + .align 2, 0 +_081021C8: .4byte sub_081021E8 +_081021CC: + ldr r0, _081021D0 + b _081021DE + .align 2, 0 +_081021D0: .4byte sub_081022C4 +_081021D4: + ldr r0, _081021D8 + b _081021DE + .align 2, 0 +_081021D8: .4byte sub_08102314 +_081021DC: + ldr r0, _081021E4 +_081021DE: + str r0, [r3, #0x1c] + pop {r0} + bx r0 + .align 2, 0 +_081021E4: .4byte sub_081023D4 + thumb_func_end sub_08102190 + + thumb_func_start sub_081021E8 +sub_081021E8: @ 0x081021E8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + strh r0, [r4, #0x2e] + ldr r5, _08102228 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r2, #2 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + beq _08102206 + movs r1, #2 +_08102206: + strh r1, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + ldr r1, _0810222C + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r4, #0x34] + ldr r1, _08102230 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08102234 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102228: .4byte gUnknown_20380D6 +_0810222C: .4byte gUnknown_2023E88 +_08102230: .4byte sub_08102238 +_08102234: .4byte sub_080A5EF8 + thumb_func_end sub_081021E8 + + thumb_func_start sub_08102238 +sub_08102238: @ 0x08102238 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _08102274 + ldr r1, _081022B4 + ldr r4, _081022B8 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r5, #0x34] + movs r1, #0 + bl sub_080A6B38 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x3a] + ldr r2, _081022BC + adds r1, r2, #0 + cmp r0, #0 + beq _08102270 + movs r0, #0xc0 + lsls r0, r0, #2 + adds r1, r0, #0 +_08102270: + strh r1, [r5, #0x36] + strh r6, [r5, #0x38] +_08102274: + ldrh r0, [r5, #0x36] + ldrh r1, [r5, #0x38] + adds r0, r0, r1 + strh r0, [r5, #0x38] + ldrh r0, [r5, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r5, #0x38] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r5, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081022AE + movs r0, #0 + strh r0, [r5, #0x2e] + ldr r0, _081022C0 + str r0, [r5, #0x1c] +_081022AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081022B4: .4byte gUnknown_2023E88 +_081022B8: .4byte gUnknown_20380D6 +_081022BC: .4byte 0xFFFFFD00 +_081022C0: .4byte sub_081023D4 + thumb_func_end sub_08102238 + + thumb_func_start sub_081022C4 +sub_081022C4: @ 0x081022C4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + strh r0, [r4, #0x2e] + ldr r5, _08102304 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #3 + cmp r0, #0 + beq _081022E2 + movs r0, #3 + rsbs r0, r0, #0 + adds r1, r0, #0 +_081022E2: + strh r1, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + ldr r1, _08102308 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r4, #0x34] + ldr r1, _0810230C + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08102310 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102304: .4byte gUnknown_20380D6 +_08102308: .4byte gUnknown_2023E88 +_0810230C: .4byte sub_081023D4 +_08102310: .4byte sub_080A5EF8 + thumb_func_end sub_081022C4 + + thumb_func_start sub_08102314 +sub_08102314: @ 0x08102314 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0810232E + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, _08102334 + str r0, [r1, #0x1c] +_0810232E: + pop {r0} + bx r0 + .align 2, 0 +_08102334: .4byte sub_08102338 + thumb_func_end sub_08102314 + + thumb_func_start sub_08102338 +sub_08102338: @ 0x08102338 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08102388 + ldr r1, _08102374 + ldr r4, _08102378 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r5, #0x34] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x3a] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810237C + movs r0, #0xfc + lsls r0, r0, #8 + strh r0, [r5, #0x36] + movs r0, #0xc0 + lsls r0, r0, #4 + b _08102386 + .align 2, 0 +_08102374: .4byte gUnknown_2023E88 +_08102378: .4byte gUnknown_20380D6 +_0810237C: + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r5, #0x36] + movs r0, #0xf4 + lsls r0, r0, #8 +_08102386: + strh r0, [r5, #0x38] +_08102388: + ldrh r0, [r5, #0x36] + ldrh r1, [r5, #0x38] + adds r0, r0, r1 + strh r0, [r5, #0x38] + ldrh r0, [r5, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r5, #0x38] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r5, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _081023C8 + ldrh r0, [r5, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + ldr r0, _081023D0 + str r0, [r5, #0x1c] +_081023C8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081023D0: .4byte sub_081023D4 + thumb_func_end sub_08102338 + + thumb_func_start sub_081023D4 +sub_081023D4: @ 0x081023D4 + push {lr} + bl sub_080A34C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081023D4 + + thumb_func_start sub_081023E0 +sub_081023E0: @ 0x081023E0 + movs r1, #0 + strh r1, [r0, #0x2e] + ldr r1, _081023EC + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_081023EC: .4byte sub_081023F0 + thumb_func_end sub_081023E0 + + thumb_func_start sub_081023F0 +sub_081023F0: @ 0x081023F0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _0810244A + cmp r5, #1 + bgt _08102406 + cmp r5, #0 + beq _0810240C + b _081024DE +_08102406: + cmp r5, #2 + beq _0810249C + b _081024DE +_0810240C: + strh r5, [r4, #0x30] + ldr r1, _08102490 + ldr r2, _08102494 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r4, #0x32] + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x34] + ldr r2, _08102498 + adds r1, r2, #0 + cmp r0, #0 + beq _08102434 + movs r0, #0x80 + lsls r0, r0, #2 + adds r1, r0, #0 +_08102434: + strh r1, [r4, #0x36] + strh r5, [r4, #0x38] + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080A6B38 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0810244A: + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x38] + adds r0, r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x38] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081024DE + movs r0, #0 + strh r0, [r4, #0x30] + movs r2, #0x36 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _081024DE + .align 2, 0 +_08102490: .4byte gUnknown_2023E88 +_08102494: .4byte gUnknown_20380D6 +_08102498: .4byte 0xFFFFFE00 +_0810249C: + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x38] + adds r0, r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x38] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081024DE + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + adds r0, r4, #0 + bl sub_080A34C4 +_081024DE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081023F0 + + thumb_func_start sub_081024E4 +sub_081024E4: @ 0x081024E4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08102528 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldr r1, _0810252C + ldr r2, _08102530 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #0 + strh r0, [r5, #8] + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + strh r2, [r5, #0xa] + strh r4, [r5, #0xc] + ldr r0, _08102534 + movs r3, #0 + ldrsh r1, [r0, r3] + cmp r1, #0 + beq _08102538 + cmp r1, #1 + beq _08102554 + adds r0, r6, #0 + bl sub_080A34E4 + b _08102572 + .align 2, 0 +_08102528: .4byte gUnknown_3005B60 +_0810252C: .4byte gUnknown_2023E88 +_08102530: .4byte gUnknown_20380D6 +_08102534: .4byte gUnknown_20380BE +_08102538: + strh r1, [r5, #0xc] + movs r0, #8 + strh r0, [r5, #0xe] + strh r1, [r5, #0x10] + movs r0, #3 + strh r0, [r5, #0x12] + cmp r2, #0 + bne _0810254C + rsbs r0, r0, #0 + strh r0, [r5, #0x12] +_0810254C: + ldr r0, _08102550 + b _08102570 + .align 2, 0 +_08102550: .4byte sub_0810257C +_08102554: + movs r0, #8 + strh r0, [r5, #0xe] + movs r0, #0xc0 + lsls r0, r0, #3 + strh r0, [r5, #0x10] + movs r1, #0xc0 + strh r1, [r5, #0x12] + cmp r2, #0 + bne _0810256E + rsbs r0, r0, #0 + strh r0, [r5, #0x10] + rsbs r0, r1, #0 + strh r0, [r5, #0x12] +_0810256E: + ldr r0, _08102578 +_08102570: + str r0, [r5] +_08102572: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08102578: .4byte sub_0810273C + thumb_func_end sub_081024E4 + + thumb_func_start sub_0810257C +sub_0810257C: @ 0x0810257C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081025A0 + adds r4, r0, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _08102596 + b _08102736 +_08102596: + lsls r0, r0, #2 + ldr r1, _081025A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081025A0: .4byte gUnknown_3005B60 +_081025A4: .4byte _081025A8 +_081025A8: @ jump table + .4byte _081025BC @ case 0 + .4byte _081025EE @ case 1 + .4byte _08102648 @ case 2 + .4byte _081026C0 @ case 3 + .4byte _08102704 @ case 4 +_081025BC: + movs r2, #0xe + ldrsh r1, [r4, r2] + cmp r1, #0 + beq _081025CC + ldrh r2, [r4, #0x12] + ldrh r3, [r4, #0x10] + adds r2, r2, r3 + b _08102712 +_081025CC: + movs r0, #8 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r1, #0xc0 + cmp r0, #0 + bne _081025E2 + movs r2, #0xc0 + rsbs r2, r2, #0 + adds r1, r2, #0 +_081025E2: + strh r1, [r4, #0x12] + ldrb r0, [r4, #8] + movs r1, #0 + bl sub_080A6B38 + b _081026F8 +_081025EE: + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08102614 + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0x10] + adds r0, r0, r1 + strh r0, [r4, #0x10] + ldrb r0, [r4, #8] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x10] + adds r1, r2, #0 + bl sub_080A6A7C + ldrb r0, [r4, #8] + bl sub_080A6C68 + b _08102724 +_08102614: + movs r0, #8 + strh r0, [r4, #0xe] + ldr r2, _08102644 + movs r3, #8 + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x24] + strh r0, [r4, #0x10] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r2, #2 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _0810263A + movs r1, #2 +_0810263A: + strh r1, [r4, #0x12] + movs r0, #1 + strh r0, [r4, #0x14] + b _081026F8 + .align 2, 0 +_08102644: .4byte gUnknown_20205AC +_08102648: + ldrh r2, [r4, #0xe] + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _081026A4 + ldrh r1, [r4, #0x14] + movs r3, #0x14 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08102662 + subs r0, r1, #1 + strh r0, [r4, #0x14] + b _08102736 +_08102662: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _08102684 + ldr r2, _08102680 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x12] + ldrh r2, [r4, #0x10] + adds r1, r1, r2 + b _08102698 + .align 2, 0 +_08102680: .4byte gUnknown_20205AC +_08102684: + ldr r2, _081026A0 + movs r3, #8 + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x10] + ldrh r2, [r4, #0x12] + subs r1, r1, r2 +_08102698: + strh r1, [r0, #0x24] + movs r0, #1 + strh r0, [r4, #0x14] + b _08102724 + .align 2, 0 +_081026A0: .4byte gUnknown_20205AC +_081026A4: + ldr r2, _081026BC + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x24] + movs r0, #0xc + strh r0, [r4, #0xe] + b _081026F8 + .align 2, 0 +_081026BC: .4byte gUnknown_20205AC +_081026C0: + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081026D0 + subs r0, r1, #1 + strh r0, [r4, #0xe] + b _08102736 +_081026D0: + movs r0, #3 + strh r0, [r4, #0xe] + ldr r2, _08102700 + movs r3, #8 + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x24] + strh r0, [r4, #0x10] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r2, #8 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _081026F6 + movs r1, #8 +_081026F6: + strh r1, [r4, #0x12] +_081026F8: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + b _08102736 + .align 2, 0 +_08102700: .4byte gUnknown_20205AC +_08102704: + movs r3, #0xe + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08102730 + ldrh r2, [r4, #0x12] + ldrh r0, [r4, #0x10] + adds r2, r2, r0 +_08102712: + strh r2, [r4, #0x10] + ldr r3, _0810272C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x24] +_08102724: + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + b _08102736 + .align 2, 0 +_0810272C: .4byte gUnknown_20205AC +_08102730: + adds r0, r2, #0 + bl sub_080A34E4 +_08102736: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810257C + + thumb_func_start sub_0810273C +sub_0810273C: @ 0x0810273C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08102778 + adds r4, r0, r1 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810277C + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0x10] + ldrb r0, [r4, #8] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x10] + adds r1, r2, #0 + bl sub_080A6A7C + ldrb r0, [r4, #8] + bl sub_080A6C68 + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + b _08102788 + .align 2, 0 +_08102778: .4byte gUnknown_3005B60 +_0810277C: + ldrb r0, [r4, #8] + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 +_08102788: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810273C + + thumb_func_start sub_08102790 +sub_08102790: @ 0x08102790 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _081027A4 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _081027AC + ldr r4, _081027A8 + b _081027AE + .align 2, 0 +_081027A4: .4byte gUnknown_20380BE +_081027A8: .4byte gUnknown_20380D6 +_081027AC: + ldr r4, _081027EC +_081027AE: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #2] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #4] + adds r0, r0, r6 + strh r0, [r5, #0x22] + movs r0, #0 + strh r0, [r5, #0x2e] + strh r0, [r5, #0x30] + ldr r1, _081027F0 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _081027F4 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081027EC: .4byte gUnknown_20380D7 +_081027F0: .4byte sub_081028DC +_081027F4: .4byte sub_080A60A0 + thumb_func_end sub_08102790 + + thumb_func_start sub_081027F8 +sub_081027F8: @ 0x081027F8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08102830 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08102834 + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r1, _08102838 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810283C + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102830: .4byte gUnknown_20380D7 +_08102834: .4byte 0x0000FFD0 +_08102838: .4byte sub_08102894 +_0810283C: .4byte sub_080A60A0 + thumb_func_end sub_081027F8 + + thumb_func_start sub_08102840 +sub_08102840: @ 0x08102840 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _08102884 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08102888 + ldr r2, _0810288C + adds r0, r0, r2 + ldrh r1, [r1] + adds r0, r0, r1 + movs r6, #0 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + strh r6, [r4, #0x2e] + strh r6, [r4, #0x30] + ldr r0, _08102890 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08102884: .4byte gUnknown_20380D7 +_08102888: .4byte gUnknown_20380BE +_0810288C: .4byte 0x0000FFD0 +_08102890: .4byte sub_081028DC + thumb_func_end sub_08102840 + + thumb_func_start sub_08102894 +sub_08102894: @ 0x08102894 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _081028BE + movs r0, #0xc + strh r0, [r4, #0x2e] + movs r0, #8 + strh r0, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + ldr r1, _081028C4 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _081028C8 + str r0, [r4, #0x1c] +_081028BE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081028C4: .4byte sub_081028CC +_081028C8: .4byte sub_080A5E04 + thumb_func_end sub_08102894 + + thumb_func_start sub_081028CC +sub_081028CC: @ 0x081028CC + movs r1, #0 + strh r1, [r0, #0x2e] + strh r1, [r0, #0x30] + ldr r1, _081028D8 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_081028D8: .4byte sub_081028DC + thumb_func_end sub_081028CC + + thumb_func_start sub_081028DC +sub_081028DC: @ 0x081028DC + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08102924 + movs r0, #0 + strh r0, [r3, #0x2e] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _08102924 + adds r0, r3, #0 + bl sub_080A34C4 +_08102924: + pop {r0} + bx r0 + thumb_func_end sub_081028DC + + thumb_func_start sub_08102928 +sub_08102928: @ 0x08102928 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0810293C + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08102944 + ldr r4, _08102940 + b _08102946 + .align 2, 0 +_0810293C: .4byte gUnknown_20380BE +_08102940: .4byte gUnknown_20380D6 +_08102944: + ldr r4, _08102980 +_08102946: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #2] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #4] + adds r0, r0, r6 + strh r0, [r5, #0x22] + movs r0, #0 + strh r0, [r5, #0x2e] + ldr r0, _08102984 + ldrh r0, [r0, #6] + strh r0, [r5, #0x30] + ldr r0, _08102988 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08102980: .4byte gUnknown_20380D7 +_08102984: .4byte gUnknown_20380BE +_08102988: .4byte sub_0810298C + thumb_func_end sub_08102928 + + thumb_func_start sub_0810298C +sub_0810298C: @ 0x0810298C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x30 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _081029AC + movs r0, #0 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x22] + subs r0, #1 + strh r0, [r2, #0x22] +_081029AC: + ldrh r0, [r2, #0x22] + ldrh r1, [r2, #0x2e] + subs r0, 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 _081029C8 + adds r0, r2, #0 + bl sub_080A34C4 +_081029C8: + pop {r0} + bx r0 + thumb_func_end sub_0810298C + + thumb_func_start sub_081029CC +sub_081029CC: @ 0x081029CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _08102A14 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x20] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0xc + strh r0, [r4, #0x22] + strh r5, [r4, #0x2e] + movs r0, #2 + strh r0, [r4, #0x30] + strh r5, [r4, #0x32] + strh r5, [r4, #0x34] + strh r5, [r4, #0x36] + subs r0, #0x42 + bl sub_080A4A40 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x38] + ldr r0, _08102A18 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08102A14: .4byte gUnknown_20380D6 +_08102A18: .4byte sub_08102A1C + thumb_func_end sub_081029CC + + thumb_func_start sub_08102A1C +sub_08102A1C: @ 0x08102A1C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08102A88 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _08102A6E + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08102A6E + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xc2 + bl sub_080A307C +_08102A6E: + movs r1, #0 + strh r1, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08102A88 + strh r1, [r4, #0x32] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_08102A88: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08102AB2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x10 + ble _08102AB2 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08102AB2 + adds r0, r4, #0 + bl sub_080A34C4 +_08102AB2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08102A1C + + thumb_func_start sub_08102AB8 +sub_08102AB8: @ 0x08102AB8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08102B02 + ldr r4, _08102B18 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r5, _08102B1C + lsrs r0, r0, #0x18 + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r6, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5, #2] + adds r0, r0, r5 + strh r0, [r6, #0x22] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08102AFC + ldrh r0, [r6, #0x22] + adds r0, #0xa + strh r0, [r6, #0x22] +_08102AFC: + ldrh r0, [r6, #0x2e] + adds r0, #1 + strh r0, [r6, #0x2e] +_08102B02: + ldr r0, _08102B1C + ldrh r1, [r0, #0xe] + ldr r0, _08102B20 + cmp r1, r0 + bne _08102B12 + adds r0, r6, #0 + bl sub_080A34C4 +_08102B12: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08102B18: .4byte gUnknown_20380D6 +_08102B1C: .4byte gUnknown_20380BE +_08102B20: .4byte 0x0000FFFF + thumb_func_end sub_08102AB8 + + thumb_func_start sub_08102B24 +sub_08102B24: @ 0x08102B24 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08102B44 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08102B50 + ldr r1, _08102B48 + ldr r0, _08102B4C + strh r0, [r1, #0xe] + b _08102B8E + .align 2, 0 +_08102B44: .4byte gUnknown_3005B60 +_08102B48: .4byte gUnknown_20380BE +_08102B4C: .4byte 0x0000FFFF +_08102B50: + cmp r0, #2 + bne _08102B5C + adds r0, r2, #0 + bl sub_080A34E4 + b _08102B94 +_08102B5C: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08102B94 + movs r0, #0 + strh r0, [r4, #8] + ldrh r2, [r4, #0xa] + adds r2, #1 + strh r2, [r4, #0xa] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08102B94 +_08102B8E: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] +_08102B94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08102B24 + + thumb_func_start sub_08102B9C +sub_08102B9C: @ 0x08102B9C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6248 + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08102BC4 + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + ldr r0, _08102BC8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102BC4: .4byte gUnknown_20380BE +_08102BC8: .4byte sub_08102BCC + thumb_func_end sub_08102B9C + + thumb_func_start sub_08102BCC +sub_08102BCC: @ 0x08102BCC + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _08102BE0 + subs r0, r1, #1 + strh r0, [r5, #0x2e] + b _08102C1C +_08102BE0: + adds r2, r5, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #0x1e + strh r0, [r5, #0x2e] + ldr r4, _08102C24 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _08102C28 + str r0, [r5, #0x1c] + ldr r1, _08102C2C + adds r0, r5, #0 + bl sub_080A5B9C +_08102C1C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102C24: .4byte gUnknown_20380D6 +_08102C28: .4byte sub_080A67B4 +_08102C2C: .4byte sub_080A34C4 + thumb_func_end sub_08102BCC + + thumb_func_start sub_08102C30 +sub_08102C30: @ 0x08102C30 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08102C80 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08102C78 + movs r0, #0 + strh r0, [r4, #8] + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08102C78 + adds r0, r5, #0 + bl sub_080A34E4 +_08102C78: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102C80: .4byte gUnknown_3005B60 + thumb_func_end sub_08102C30 + + thumb_func_start sub_08102C84 +sub_08102C84: @ 0x08102C84 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0 + ldr r0, _08102CEC + ldrb r0, [r0] + cmp r4, r0 + bhs _08102CE0 + ldr r6, _08102CF0 + ldr r5, _08102CF4 +_08102C98: + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #1 + bne _08102CB4 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08102CB4 + adds r0, r4, r5 + ldrb r0, [r0] + bl sub_08072394 +_08102CB4: + movs r1, #2 + ldrsh r0, [r6, r1] + cmp r0, #1 + bne _08102CD2 + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08102CD2 + adds r0, r4, r5 + ldrb r0, [r0] + bl sub_08072394 +_08102CD2: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08102CEC + ldrb r0, [r0] + cmp r4, r0 + blo _08102C98 +_08102CE0: + adds r0, r7, #0 + bl sub_080A34E4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08102CEC: .4byte gUnknown_2023D10 +_08102CF0: .4byte gUnknown_20380BE +_08102CF4: .4byte gUnknown_3005AD0 + thumb_func_end sub_08102C84 + + thumb_func_start sub_08102CF8 +sub_08102CF8: @ 0x08102CF8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + b _08102D12 +_08102D02: + ldr r0, _08102D28 + adds r0, r4, r0 + ldrb r0, [r0] + bl sub_080723E0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08102D12: + ldr r0, _08102D2C + ldrb r0, [r0] + cmp r4, r0 + blo _08102D02 + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08102D28: .4byte gUnknown_3005AD0 +_08102D2C: .4byte gUnknown_2023D10 + thumb_func_end sub_08102CF8 + + thumb_func_start sub_08102D30 +sub_08102D30: @ 0x08102D30 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08102D46 + movs r0, #0x30 + strh r0, [r4, #0x20] + movs r0, #0x28 + b _08102D4E +_08102D46: + ldr r0, _08102D70 + ldrh r1, [r0] + strh r1, [r4, #0x20] + ldrh r0, [r0, #2] +_08102D4E: + strh r0, [r4, #0x22] + ldrb r1, [r4, #1] + movs r0, #0x3f + ands r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #3] + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _08102D74 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102D70: .4byte gUnknown_20380BE +_08102D74: .4byte sub_08102D78 + thumb_func_end sub_08102D30 + + thumb_func_start sub_08102D78 +sub_08102D78: @ 0x08102D78 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _08102D8A + adds r0, r1, #0 + bl sub_080A34C4 +_08102D8A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08102D78 + + thumb_func_start sub_08102D90 +sub_08102D90: @ 0x08102D90 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08102DC8 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r2, _08102DCC + lsrs r0, r0, #0x18 + ldrh r1, [r2] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + strh r0, [r4, #0x22] + strh r1, [r4, #0x2e] + strh r1, [r4, #0x30] + strh r1, [r4, #0x32] + strh r1, [r4, #0x34] + movs r0, #1 + strh r0, [r4, #0x36] + ldr r0, _08102DD0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08102DC8: .4byte gUnknown_20380D6 +_08102DCC: .4byte gUnknown_20380BE +_08102DD0: .4byte sub_08102DD4 + thumb_func_end sub_08102D90 + + thumb_func_start sub_08102DD4 +sub_08102DD4: @ 0x08102DD4 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08102DFE + movs r0, #0 + strh r0, [r1, #0x30] + ldrh r2, [r1, #0x32] + movs r3, #0x32 + ldrsh r0, [r1, r3] + cmp r0, #0x77 + bgt _08102DFE + ldrh r0, [r1, #0x22] + adds r0, #1 + strh r0, [r1, #0x22] + adds r0, r2, #1 + strh r0, [r1, #0x32] +_08102DFE: + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _08102E0C + adds r0, r1, #0 + bl sub_080A34C4 +_08102E0C: + pop {r0} + bx r0 + thumb_func_end sub_08102DD4 + + thumb_func_start sub_08102E10 +sub_08102E10: @ 0x08102E10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + mov r8, r0 + ldr r0, _08102EE0 + mov r1, r8 + ands r1, r0 + mov r8, r1 + ldr r0, _08102EE4 + mov sb, r0 + lsls r5, r7, #2 + adds r5, r5, r7 + lsls r5, r5, #3 + adds r6, r5, r0 + strh r4, [r6, #8] + 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, #1 + movs r1, #1 + movs r2, #1 + movs r3, #1 + bl sub_080A6F8C + mov sl, r0 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r0, #8 + add sb, r0 + add r5, sb + adds r0, r5, #0 + adds r0, #0x1c + adds r5, #0x1e + adds r1, r5, #0 + mov r2, r8 + bl sub_080A7910 + ldr r0, _08102EE8 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0x80 + lsls r4, r4, #9 + adds r1, r4, #0 + lsls r1, r0 + mov r0, sl + orrs r0, r1 + mov sl, r0 + ldr r0, _08102EEC + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0 + mov r1, sl + orrs r4, r1 + ldr r0, _08102EF0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08102EF4 + str r1, [r6] + adds r0, r7, #0 + bl _call_via_r1 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08102EE0: .4byte 0x0000FFFF +_08102EE4: .4byte gUnknown_3005B60 +_08102EE8: .4byte 0x000027D2 +_08102EEC: .4byte 0x000027D3 +_08102EF0: .4byte 0x00007FBB +_08102EF4: .4byte sub_08102EF8 + thumb_func_end sub_08102E10 + + thumb_func_start sub_08102EF8 +sub_08102EF8: @ 0x08102EF8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08102F20 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _08102FE4 + cmp r1, #1 + bgt _08102F24 + cmp r1, #0 + beq _08102F32 + b _08103082 + .align 2, 0 +_08102F20: .4byte gUnknown_3005B60 +_08102F24: + cmp r1, #2 + bne _08102F2A + b _0810303C +_08102F2A: + cmp r1, #3 + bne _08102F30 + b _08103070 +_08102F30: + b _08103082 +_08102F32: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08102F40 + b _08103082 +_08102F40: + strh r1, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bgt _08102F8C + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x10] + adds r0, r0, r1 + strh r0, [r4, #0x10] + ldrh r2, [r4, #0x18] + ldrh r3, [r4, #0x12] + adds r2, r2, r3 + strh r2, [r4, #0x12] + ldrh r1, [r4, #0x1a] + ldrh r5, [r4, #0x14] + adds r1, r1, r5 + strh r1, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x13 + lsls r2, r2, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x13 + lsls r1, r1, #0x10 + lsrs r2, r2, #0xb + orrs r0, r2 + lsrs r1, r1, #6 + orrs r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov ip, r0 + b _08102F96 +_08102F8C: + ldr r7, _08102FDC + mov ip, r7 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08102F96: + movs r2, #1 + movs r3, #0 + movs r1, #0 +_08102F9C: + movs r5, #0xe + ldrsh r0, [r4, r5] + ands r0, r2 + lsls r5, r2, #0x11 + adds r6, r3, #0 + adds r6, #0x10 + adds r1, #1 + mov r8, r1 + cmp r0, #0 + beq _08102FC8 + movs r1, #1 + ldr r2, _08102FE0 +_08102FB4: + adds r0, r3, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + mov r7, ip + strh r7, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _08102FB4 +_08102FC8: + lsrs r2, r5, #0x10 + lsls r0, r6, #0x10 + lsrs r3, r0, #0x10 + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _08102F9C + b _08103082 + .align 2, 0 +_08102FDC: .4byte 0x00007FBB +_08102FE0: .4byte gUnknown_20377B4 +_08102FE4: + ldr r0, _0810302C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08103082 + movs r2, #0 + ldr r3, _08103030 + movs r5, #0x14 + adds r5, r5, r3 + mov ip, r5 + ldr r7, _08103034 + mov r8, r7 + ldr r6, _08103038 + movs r5, #1 +_08103002: + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r1, r0, #2 + mov r7, ip + adds r0, r1, r7 + ldr r0, [r0] + cmp r0, r8 + beq _08103016 + cmp r0, r6 + bne _0810301A +_08103016: + adds r0, r1, r3 + strh r5, [r0, #0x2e] +_0810301A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x3f + bls _08103002 + movs r0, #0 + strh r0, [r4, #0xa] + b _08103064 + .align 2, 0 +_0810302C: .4byte gUnknown_2037C74 +_08103030: .4byte gUnknown_20205AC +_08103034: .4byte gUnknown_856EAA0 +_08103038: .4byte gUnknown_856EAD0 +_0810303C: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _08103082 + movs r1, #0x24 + ldrsh r0, [r4, r1] + movs r2, #0x26 + ldrsh r1, [r4, r2] + bl sub_080A7918 + ldr r1, _0810306C + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_08103064: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08103082 + .align 2, 0 +_0810306C: .4byte 0x00007FBB +_08103070: + ldr r0, _08103090 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08103082 + adds r0, r2, #0 + bl sub_080A34E4 +_08103082: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08103090: .4byte gUnknown_2037C74 + thumb_func_end sub_08102EF8 + + thumb_func_start sub_08103094 +sub_08103094: @ 0x08103094 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _08103118 + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #1 + bgt _081030A6 + movs r0, #2 + strh r0, [r6, #4] +_081030A6: + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #0x7f + ble _081030B2 + movs r0, #0x7f + strh r0, [r6, #4] +_081030B2: + movs r0, #0 + strh r0, [r5, #0x2e] + ldrh r0, [r6, #4] + strh r0, [r5, #0x30] + ldr r4, _0810311C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #2] + adds r0, r0, r6 + strh r0, [r5, #0x22] + ldrh r1, [r5, #0x20] + strh r1, [r5, #0x3a] + strh r0, [r5, #0x3c] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08103124 + ldrb r1, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5, #3] + ldrh r0, [r5, #0x20] + adds r0, #0x28 + strh r0, [r5, #0x20] + ldrh r4, [r5, #0x22] + adds r4, #0x14 + strh r4, [r5, #0x22] + lsls r0, r0, #7 + strh r0, [r5, #0x32] + movs r0, #0x30 + ldrsh r1, [r5, r0] + ldr r0, _08103120 + b _0810314A + .align 2, 0 +_08103118: .4byte gUnknown_20380BE +_0810311C: .4byte gUnknown_20380D7 +_08103120: .4byte 0xFFFFEC00 +_08103124: + ldr r0, _08103164 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810316C + ldrh r0, [r5, #0x20] + subs r0, #0x28 + strh r0, [r5, #0x20] + ldrh r4, [r5, #0x22] + adds r4, #0x14 + strh r4, [r5, #0x22] + lsls r0, r0, #7 + strh r0, [r5, #0x32] + movs r0, #0x30 + ldrsh r1, [r5, r0] + movs r0, #0xa0 + lsls r0, r0, #5 +_0810314A: + bl __divsi3 + strh r0, [r5, #0x34] + lsls r4, r4, #7 + strh r4, [r5, #0x36] + movs r0, #0x30 + ldrsh r1, [r5, r0] + ldr r0, _08103168 + bl __divsi3 + strh r0, [r5, #0x38] + b _081031A8 + .align 2, 0 +_08103164: .4byte gUnknown_20380D6 +_08103168: .4byte 0xFFFFF600 +_0810316C: + ldrh r0, [r5, #0x20] + adds r0, #0x28 + strh r0, [r5, #0x20] + ldrh r4, [r5, #0x22] + subs r4, #0x14 + strh r4, [r5, #0x22] + lsls r0, r0, #7 + strh r0, [r5, #0x32] + movs r0, #0x30 + ldrsh r1, [r5, r0] + ldr r0, _081031B4 + bl __divsi3 + strh r0, [r5, #0x34] + lsls r4, r4, #7 + strh r4, [r5, #0x36] + movs r0, #0x30 + ldrsh r1, [r5, r0] + movs r0, #0xa0 + lsls r0, r0, #4 + bl __divsi3 + strh r0, [r5, #0x38] + ldrb r1, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x30 + orrs r0, r1 + strb r0, [r5, #3] +_081031A8: + ldr r0, _081031B8 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081031B4: .4byte 0xFFFFEC00 +_081031B8: .4byte sub_081031BC + thumb_func_end sub_08103094 + + thumb_func_start sub_081031BC +sub_081031BC: @ 0x081031BC + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x34] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r1, [r2, #0x38] + ldrh r3, [r2, #0x36] + adds r1, r1, r3 + strh r1, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x17 + strh r1, [r2, #0x22] + ldrh r0, [r2, #0x30] + subs r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _081031F2 + ldrh r0, [r2, #0x3a] + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x3c] + strh r0, [r2, #0x22] +_081031F2: + movs r1, #0x30 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08103200 + adds r0, r2, #0 + bl sub_080A34C4 +_08103200: + pop {r0} + bx r0 + thumb_func_end sub_081031BC + + thumb_func_start sub_08103204 +sub_08103204: @ 0x08103204 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _08103294 + adds r6, r0, r1 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #8] + ldr r0, _08103298 + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0xa] + movs r1, #0xa + ldrsh r0, [r6, r1] + lsls r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + ldr r2, _0810329C + movs r0, #8 + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + lsls r4, r0, #4 + movs r5, #1 + ldr r2, _081032A0 +_0810325C: + adds r1, r3, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + adds r0, r4, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xf + bls _0810325C + adds r0, r3, #0 + movs r1, #0x10 + movs r2, #0xb + movs r3, #0 + bl sub_0806F410 + movs r0, #0 + strh r0, [r6, #0xe] + movs r5, #0 + ldr r7, _0810329C + movs r1, #0x1c + adds r1, r1, r7 + mov sb, r1 + b _081032D8 + .align 2, 0 +_08103294: .4byte gUnknown_3005B60 +_08103298: .4byte 0x00002771 +_0810329C: .4byte gUnknown_20205AC +_081032A0: .4byte gUnknown_20373B4 +_081032A4: + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r4, r2, r7 + ldrb r1, [r6, #0xa] + lsls r1, r1, #4 + ldrb r3, [r4, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #5] + movs r0, #0 + strh r0, [r4, #0x2e] + lsls r0, r5, #7 + strh r0, [r4, #0x30] + mov r0, r8 + strh r0, [r4, #0x32] + add r2, sb + ldr r0, _0810330C + str r0, [r2] + ldrh r0, [r6, #0xe] + adds r0, #1 + strh r0, [r6, #0xe] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081032D8: + cmp r5, #1 + bhi _081032EA + movs r0, #0 + bl sub_080A72B0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081032A4 +_081032EA: + ldr r0, _08103310 + str r0, [r6] + ldr r0, _08103314 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08103318 + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + bl sub_08001220 + b _08103322 + .align 2, 0 +_0810330C: .4byte sub_0810338C +_08103310: .4byte sub_08103330 +_08103314: .4byte gUnknown_20380D6 +_08103318: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001220 +_08103322: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08103204 + + thumb_func_start sub_08103330 +sub_08103330: @ 0x08103330 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08103364 + adds r0, r0, r1 + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08103382 + ldr r0, _08103368 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810336C + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + bl sub_08001200 + b _08103376 + .align 2, 0 +_08103364: .4byte gUnknown_3005B60 +_08103368: .4byte gUnknown_20380D6 +_0810336C: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 +_08103376: + ldr r0, _08103388 + bl sub_08008564 + adds r0, r4, #0 + bl sub_080A34E4 +_08103382: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103388: .4byte 0x00002771 + thumb_func_end sub_08103330 + + thumb_func_start sub_0810338C +sub_0810338C: @ 0x0810338C + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081033A8 + movs r0, #0 + strh r0, [r5, #0x34] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_081033A8: + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0x40 + ble _081033D0 + ldr r2, _081033CC + movs r0, #0x32 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0xe] + subs r1, #1 + strh r1, [r0, #0xe] + adds r0, r5, #0 + bl sub_080A7324 + b _08103412 + .align 2, 0 +_081033CC: .4byte gUnknown_3005B60 +_081033D0: + ldr r4, _08103418 + movs r1, #0x2e + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + adds r0, r0, r4 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r1, #6 + bl __divsi3 + strh r0, [r5, #0x36] + movs r1, #0x2e + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + adds r0, r0, r4 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r1, #0xd + bl __divsi3 + strh r0, [r5, #0x38] + ldrh r1, [r5, #0x30] + adds r1, 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_0806EFB8 + strh r0, [r5, #0x24] +_08103412: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08103418: .4byte gUnknown_82FA8CC + thumb_func_end sub_0810338C + + thumb_func_start sub_0810341C +sub_0810341C: @ 0x0810341C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08103430 + bl sub_080A5B9C + ldr r0, _08103434 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103430: .4byte sub_080A34C4 +_08103434: .4byte sub_080A60A0 + thumb_func_end sub_0810341C + + thumb_func_start sub_08103438 +sub_08103438: @ 0x08103438 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r4, _081034E8 + ldrh r0, [r4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xff + beq _0810347C + lsls r0, r3, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + movs r2, #1 + ldr r5, _081034EC +_08103464: + adds r1, r3, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #5 + bls _08103464 +_0810347C: + movs r4, #1 + ldr r0, _081034E8 + mov r8, r0 +_08103482: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r5, r0, #2 + mov r1, r8 + adds r0, r5, r1 + ldrh r0, [r0] + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, #1 + mov ip, r4 + cmp r3, #0xff + beq _081034CA + lsls r0, r3, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + movs r2, #1 + ldr r7, _081034EC + ldr r6, _081034E8 + adds r4, r5, #0 +_081034B0: + adds r1, r3, r2 + lsls r1, r1, #1 + adds r1, r1, r7 + lsls r0, r2, #1 + adds r0, r0, r4 + adds r0, r0, r6 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #5 + bls _081034B0 +_081034CA: + mov r1, ip + lsls r0, r1, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _08103482 + mov r0, sb + bl sub_080A34E4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081034E8: .4byte gUnknown_856EC04 +_081034EC: .4byte gUnknown_20377B4 + thumb_func_end sub_08103438 + + thumb_func_start sub_081034F0 +sub_081034F0: @ 0x081034F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #1 + ldr r6, _08103520 +_081034FA: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r0, [r0] + bl sub_08008564 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _081034FA + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08103520: .4byte gUnknown_856EC04 + thumb_func_end sub_081034F0 + + thumb_func_start sub_08103524 +sub_08103524: @ 0x08103524 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + bl sub_080A6100 + ldr r4, _0810357C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r2, _08103580 + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08103560 + lsls r2, r0, #4 + ldrb r1, [r5, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] +_08103560: + ldrh r0, [r4, #2] + movs r1, #0 + strh r0, [r5, #0x30] + strh r1, [r5, #0x32] + ldrh r0, [r4, #4] + strh r0, [r5, #0x34] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08103584 + movs r6, #0x30 + movs r3, #0x28 + b _0810359E + .align 2, 0 +_0810357C: .4byte gUnknown_20380BE +_08103580: .4byte gUnknown_856EC04 +_08103584: + ldr r4, _081035D4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0810359E: + 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, r0, #0x10 + asrs r0, r0, #0x10 + subs r1, r3, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, r5, #0 + adds r2, #0x3a + adds r3, r5, #0 + adds r3, #0x3c + movs r4, #0x28 + str r4, [sp] + bl sub_081035DC + ldr r0, _081035D8 + str r0, [r5, #0x1c] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081035D4: .4byte gUnknown_20380D7 +_081035D8: .4byte sub_08103634 + thumb_func_end sub_08103524 + + thumb_func_start sub_081035DC +sub_081035DC: @ 0x081035DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r2, #0 + mov r8, r3 + ldr r2, [sp, #0x18] + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r1, r2, #0x18 + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + bge _081035FE + lsls r0, r1, #0x18 + rsbs r0, r0, #0 + lsrs r1, r0, #0x18 +_081035FE: + lsls r5, r2, #8 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, #0 + bl __divsi3 + adds r4, r0, #0 + cmp r4, #0 + bne _08103612 + movs r4, #1 +_08103612: + adds r0, r5, #0 + adds r1, r4, #0 + bl __divsi3 + strh r0, [r7] + lsls r0, r6, #0x10 + asrs r0, r0, #8 + adds r1, r4, #0 + bl __divsi3 + mov r1, r8 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081035DC + + thumb_func_start sub_08103634 +sub_08103634: @ 0x08103634 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + 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 _08103650 + adds r0, #0xff +_08103650: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + ldrh r1, [r4, #0x3a] + ldrh r2, [r4, #0x36] + adds r1, r1, r2 + strh r1, [r4, #0x36] + ldrh r2, [r4, #0x3c] + ldrh r3, [r4, #0x38] + adds r2, r2, r3 + strh r2, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r4, #0x20] + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + strh r2, [r4, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xf + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + ldrh r0, [r4, #0x20] + adds r0, #0x10 + lsls r0, r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0810369E + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + blt _0810369E + cmp r1, #0x80 + ble _081036A6 +_0810369E: + adds r0, r4, #0 + bl sub_080A6014 + b _081036F6 +_081036A6: + movs r0, #0x34 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _081036F6 + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + ble _081036F6 + strh r5, [r4, #0x32] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081036CE + strh r5, [r4, #0x30] +_081036CE: + ldr r2, _081036FC + movs r3, #0x30 + ldrsh r1, [r4, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081036F6 + lsls r2, r0, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] +_081036F6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081036FC: .4byte gUnknown_856EC04 + thumb_func_end sub_08103634 + + thumb_func_start sub_08103700 +sub_08103700: @ 0x08103700 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r7, _08103784 + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810371E + ldr r1, _08103788 + movs r2, #2 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_0810371E: + ldrb r0, [r7] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _08103788 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + movs r5, #0 + strh r0, [r6, #0x20] + ldrb r0, [r7] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r4, #4] + adds r0, r0, r2 + strh r0, [r6, #0x22] + ldrb r1, [r4] + adds r0, r6, #0 + bl sub_08007EC0 + strh r5, [r6, #0x32] + strh r5, [r6, #0x34] + ldrh r0, [r6, #0x20] + lsls r0, r0, #4 + strh r0, [r6, #0x36] + ldrh r0, [r6, #0x22] + lsls r0, r0, #4 + strh r0, [r6, #0x38] + movs r1, #2 + ldrsh r0, [r4, r1] + lsls r0, r0, #4 + movs r1, #5 + bl __divsi3 + strh r0, [r6, #0x3a] + movs r2, #4 + ldrsh r0, [r4, r2] + lsls r0, r0, #7 + movs r1, #5 + bl __divsi3 + strh r0, [r6, #0x3c] + ldr r0, _0810378C + str r0, [r6, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08103784: .4byte gUnknown_20380D6 +_08103788: .4byte gUnknown_20380BE +_0810378C: .4byte sub_08103790 + thumb_func_end sub_08103700 + + thumb_func_start sub_08103790 +sub_08103790: @ 0x08103790 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + ldrh r1, [r4, #0x3c] + ldrh r2, [r4, #0x38] + adds r1, r1, r2 + strh r1, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r4, #0x22] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #5 + ble _081037EE + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _081037EE + 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_0806EFD4 + strh r0, [r4, #0x24] + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0x12 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081037EE + movs r0, #1 + strh r0, [r4, #0x34] +_081037EE: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x30 + bne _08103802 + adds r0, r4, #0 + bl sub_080A6014 +_08103802: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08103790 + + thumb_func_start sub_08103808 +sub_08103808: @ 0x08103808 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08103828 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _0810382C + ldrb r0, [r5, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r5, #3] + movs r6, #0x10 + b _0810382E + .align 2, 0 +_08103828: .4byte gUnknown_20380BE +_0810382C: + ldr r6, _08103868 +_0810382E: + ldr r4, _0810386C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #8 + strh r0, [r5, #0x22] + movs r0, #8 + strh r0, [r5, #0x2e] + ldr r0, _08103870 + str r0, [r5, #0x1c] + ldr r1, _08103874 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08103868: .4byte 0x0000FFF0 +_0810386C: .4byte gUnknown_20380D6 +_08103870: .4byte sub_080A5D78 +_08103874: .4byte sub_080A34C4 + thumb_func_end sub_08103808 + + thumb_func_start sub_08103878 +sub_08103878: @ 0x08103878 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldrh r0, [r4, #0x22] + adds r0, #8 + strh r0, [r4, #0x22] + ldr r5, _081038F0 + ldrb r1, [r5, #2] + adds r0, r4, #0 + bl sub_08007EC0 + ldr r2, _081038F4 + movs r0, #4 + ldrsh r1, [r5, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081038B8 + lsls r2, r0, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] +_081038B8: + movs r1, #0 + ldrsh r0, [r5, r1] + movs r2, #0x20 + cmp r0, #0 + bne _081038C4 + ldr r2, _081038F8 +_081038C4: + movs r0, #0x28 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x20] + strh r1, [r4, #0x30] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r0, 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_080A671C + ldrh r0, [r5, #6] + strh r0, [r4, #0x38] + ldr r0, _081038FC + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081038F0: .4byte gUnknown_20380BE +_081038F4: .4byte gUnknown_856EC04 +_081038F8: .4byte 0x0000FFE0 +_081038FC: .4byte sub_08103900 + thumb_func_end sub_08103878 + + thumb_func_start sub_08103900 +sub_08103900: @ 0x08103900 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08103950 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldrh r2, [r4, #0x24] + movs r3, #0x24 + ldrsh r0, [r4, r3] + cmp r0, #0 + bge _0810392C + lsls r0, r1, #0x10 + rsbs r0, r0, #0 + lsrs r1, r0, #0x10 +_0810392C: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r2 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFB8 + ldrh r3, [r4, #0x26] + adds r0, r0, r3 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #8 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _08103956 +_08103950: + adds r0, r4, #0 + bl sub_080A34C4 +_08103956: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08103900 + + thumb_func_start sub_0810395C +sub_0810395C: @ 0x0810395C + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810397C + adds r0, r5, #0 + movs r1, #5 + bl sub_080A7EE4 + adds r0, #8 + b _08103986 +_0810397C: + adds r0, r5, #0 + movs r1, #4 + bl sub_080A7EE4 + subs r0, #8 +_08103986: + strh r0, [r6, #0x20] + adds r0, r5, #0 + movs r1, #3 + bl sub_080A5534 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A7EE4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081039A8 + adds r0, #3 +_081039A8: + asrs r0, r0, #2 + subs r0, r4, r0 + strh r0, [r6, #0x22] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0810395C + + thumb_func_start sub_081039B4 +sub_081039B4: @ 0x081039B4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _081039C8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081039D0 + ldr r0, _081039CC + b _081039D2 + .align 2, 0 +_081039C8: .4byte gUnknown_20380BE +_081039CC: .4byte gUnknown_20380D6 +_081039D0: + ldr r0, _08103A10 +_081039D2: + ldrb r4, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0810395C + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + ldr r0, _08103A14 + ldrh r0, [r0, #2] + strh r0, [r5, #0x2e] + adds r0, r1, #2 + strh r0, [r5, #0x30] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r1, _08103A18 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _08103A1C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08103A10: .4byte gUnknown_20380D7 +_08103A14: .4byte gUnknown_20380BE +_08103A18: .4byte sub_08103A20 +_08103A1C: .4byte sub_080A60A0 + thumb_func_end sub_081039B4 + + thumb_func_start sub_08103A20 +sub_08103A20: @ 0x08103A20 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08103A48 + ldr r1, _08103A50 + adds r0, r4, #0 + bl sub_080A5B9C + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _08103A54 + str r0, [r4, #0x1c] +_08103A48: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103A50: .4byte sub_080A34C4 +_08103A54: .4byte sub_080A60A0 + thumb_func_end sub_08103A20 + + thumb_func_start sub_08103A58 +sub_08103A58: @ 0x08103A58 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08103A6C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08103A74 + ldr r0, _08103A70 + b _08103A76 + .align 2, 0 +_08103A6C: .4byte gUnknown_20380BE +_08103A70: .4byte gUnknown_20380D6 +_08103A74: + ldr r0, _08103A94 +_08103A76: + ldrb r0, [r0] + adds r1, r4, #0 + bl sub_0810395C + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r1, _08103A98 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08103A9C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103A94: .4byte gUnknown_20380D7 +_08103A98: .4byte sub_08103AA0 +_08103A9C: .4byte sub_080A6084 + thumb_func_end sub_08103A58 + + thumb_func_start sub_08103AA0 +sub_08103AA0: @ 0x08103AA0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08103AC6 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldr r1, _08103ACC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08103AD0 + str r0, [r4, #0x1c] +_08103AC6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103ACC: .4byte sub_080A6014 +_08103AD0: .4byte sub_080A6084 + thumb_func_end sub_08103AA0 + + thumb_func_start sub_08103AD4 +sub_08103AD4: @ 0x08103AD4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _08103AE8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08103AF0 + ldr r0, _08103AEC + b _08103AF2 + .align 2, 0 +_08103AE8: .4byte gUnknown_20380BE +_08103AEC: .4byte gUnknown_20380D6 +_08103AF0: + ldr r0, _08103B44 +_08103AF2: + ldrb r5, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A7EE4 + strh r0, [r4, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bgt _08103B1A + movs r0, #0xa + strh r0, [r4, #0x22] +_08103B1A: + movs r0, #1 + 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, #4 + strh r0, [r4, #0x34] + strh r6, [r4, #0x36] + ldr r1, _08103B48 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08103B4C + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08103B44: .4byte gUnknown_20380D7 +_08103B48: .4byte sub_08103B50 +_08103B4C: .4byte sub_080A6084 + thumb_func_end sub_08103AD4 + + thumb_func_start sub_08103B50 +sub_08103B50: @ 0x08103B50 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x36] + adds r0, #1 + strh r0, [r1, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _08103B66 + ldr r0, _08103B6C + str r0, [r1, #0x1c] +_08103B66: + pop {r0} + bx r0 + .align 2, 0 +_08103B6C: .4byte sub_08103B70 + thumb_func_end sub_08103B50 + + thumb_func_start sub_08103B70 +sub_08103B70: @ 0x08103B70 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + adds r1, r0, #4 + strh r1, [r2, #0x30] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xfe + ble _08103BA2 + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _08103B9C + strh r0, [r2, #0x24] + ldr r0, _08103B98 + str r0, [r2, #0x1c] + b _08103BD8 + .align 2, 0 +_08103B98: .4byte sub_08103AA0 +_08103B9C: + movs r0, #0xff + ands r1, r0 + strh r1, [r2, #0x30] +_08103BA2: + movs r1, #0x30 + ldrsh r0, [r2, r1] + cmp r0, #0x4f + ble _08103BB2 + ldrh r0, [r2, #0x34] + adds r1, r2, #0 + adds r1, #0x43 + strb r0, [r1] +_08103BB2: + movs r3, #0x30 + ldrsh r0, [r2, r3] + cmp r0, #0x9f + ble _08103BC2 + ldrh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x43 + strb r0, [r1] +_08103BC2: + ldr r1, _08103BDC + movs r3, #0x30 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + asrs r1, r0, #1 + adds r0, r0, r1 + strh r0, [r2, #0x24] +_08103BD8: + pop {r0} + bx r0 + .align 2, 0 +_08103BDC: .4byte gUnknown_82FA8CC + thumb_func_end sub_08103B70 + + thumb_func_start sub_08103BE0 +sub_08103BE0: @ 0x08103BE0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08103BF4 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08103BFC + ldr r0, _08103BF8 + b _08103BFE + .align 2, 0 +_08103BF4: .4byte gUnknown_20380BE +_08103BF8: .4byte gUnknown_20380D6 +_08103BFC: + ldr r0, _08103C20 +_08103BFE: + ldrb r4, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0810395C + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08103C24 + adds r0, r5, #0 + movs r1, #0 + bl sub_08007EC0 + movs r0, #2 + b _08103C2E + .align 2, 0 +_08103C20: .4byte gUnknown_20380D7 +_08103C24: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 + movs r0, #3 +_08103C2E: + strh r0, [r5, #0x2e] + ldr r0, _08103C3C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08103C3C: .4byte sub_08103C40 + thumb_func_end sub_08103BE0 + + thumb_func_start sub_08103C40 +sub_08103C40: @ 0x08103C40 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + ble _08103C6E + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r1, _08103C74 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08103C78 + str r0, [r4, #0x1c] +_08103C6E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103C74: .4byte sub_08103C7C +_08103C78: .4byte sub_080A60A0 + thumb_func_end sub_08103C40 + + thumb_func_start sub_08103C7C +sub_08103C7C: @ 0x08103C7C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _08103C94 + adds r0, r1, #0 + bl sub_080A34C4 +_08103C94: + pop {r0} + bx r0 + thumb_func_end sub_08103C7C + + thumb_func_start sub_08103C98 +sub_08103C98: @ 0x08103C98 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r5, _08103CDC + movs r0, #0 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl sub_080A612C + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r5, #4] + strh r0, [r4, #0x30] + ldrh r0, [r5, #8] + strh r0, [r4, #0x32] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x34] + ldrh r0, [r5, #6] + strh r0, [r4, #0x36] + ldr r1, _08103CE0 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, _08103CE4 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08103CDC: .4byte gUnknown_20380BE +_08103CE0: .4byte sub_080A6014 +_08103CE4: .4byte sub_080A5D18 + thumb_func_end sub_08103C98 + + thumb_func_start sub_08103CE8 +sub_08103CE8: @ 0x08103CE8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08103CFC + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08103D04 + ldr r0, _08103D00 + b _08103D06 + .align 2, 0 +_08103CFC: .4byte gUnknown_20380BE +_08103D00: .4byte gUnknown_20380D6 +_08103D04: + ldr r0, _08103D20 +_08103D06: + ldrb r0, [r0] + adds r1, r4, #0 + bl sub_0810395C + movs r0, #0 + strh r0, [r4, #0x2e] + strh r0, [r4, #0x30] + ldr r0, _08103D24 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103D20: .4byte gUnknown_20380D7 +_08103D24: .4byte sub_08103D28 + thumb_func_end sub_08103CE8 + + thumb_func_start sub_08103D28 +sub_08103D28: @ 0x08103D28 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _08103D5A + cmp r0, #1 + bgt _08103D3E + cmp r0, #0 + beq _08103D44 + b _08103D88 +_08103D3E: + cmp r0, #2 + beq _08103D74 + b _08103D88 +_08103D44: + ldrh r0, [r1, #0x26] + subs r0, #3 + strh r0, [r1, #0x26] + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _08103D88 + b _08103D6C +_08103D5A: + ldrh r0, [r1, #0x26] + adds r0, #3 + strh r0, [r1, #0x26] + ldrh r0, [r1, #0x30] + subs r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08103D88 +_08103D6C: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + b _08103D88 +_08103D74: + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _08103D88 + adds r0, r1, #0 + bl sub_080A34C4 +_08103D88: + pop {r0} + bx r0 + thumb_func_end sub_08103D28 + + thumb_func_start sub_08103D8C +sub_08103D8C: @ 0x08103D8C + push {r4, lr} + adds r4, r0, #0 + ldr r3, _08103DD8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r4, #0x30] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x30] + movs r0, #0x2e + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08103DCA + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x24] + adds r0, r4, #0 + bl sub_080A6014 +_08103DCA: + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103DD8: .4byte gUnknown_20205AC + thumb_func_end sub_08103D8C + + thumb_func_start sub_08103DDC +sub_08103DDC: @ 0x08103DDC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _08103E24 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r1, _08103E28 + ldr r0, _08103E2C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r6, [r0] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08103E34 + ldr r0, _08103E30 + ldrh r1, [r5, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r5, #0x20] + adds r1, r0, #0 + b _08103E3E + .align 2, 0 +_08103E24: .4byte gUnknown_20380D6 +_08103E28: .4byte gUnknown_2023E88 +_08103E2C: .4byte gUnknown_20380D7 +_08103E30: .4byte gUnknown_20380BE +_08103E34: + ldr r1, _08103E68 + ldrh r0, [r1] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + strh r0, [r5, #0x20] +_08103E3E: + ldrh r0, [r1, #2] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + ldrh r0, [r1, #4] + strh r0, [r5, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r5, #0x30] + strh r6, [r5, #0x32] + ldr r0, _08103E6C + str r0, [r5, #0x1c] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08103E68: .4byte gUnknown_20380BE +_08103E6C: .4byte sub_08103D8C + thumb_func_end sub_08103DDC + + thumb_func_start sub_08103E70 +sub_08103E70: @ 0x08103E70 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _08103E9C + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x38] + ldr r0, _08103EA0 + str r0, [r4, #0x1c] + ldr r1, _08103EA4 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103E9C: .4byte gUnknown_20380BE +_08103EA0: .4byte sub_080A5D78 +_08103EA4: .4byte sub_08103EA8 + thumb_func_end sub_08103E70 + + thumb_func_start sub_08103EA8 +sub_08103EA8: @ 0x08103EA8 + 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, _08103EC8 + str r1, [r0, #0x1c] + ldr r1, _08103ECC + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08103EC8: .4byte sub_080A67B4 +_08103ECC: .4byte sub_08103ED0 + thumb_func_end sub_08103EA8 + + thumb_func_start sub_08103ED0 +sub_08103ED0: @ 0x08103ED0 + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x38] + movs r3, #0x38 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _08103EE6 + adds r0, r1, #0 + bl sub_080A34C4 + b _08103EEA +_08103EE6: + subs r0, r2, #1 + strh r0, [r1, #0x38] +_08103EEA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08103ED0 + + thumb_func_start sub_08103EF0 +sub_08103EF0: @ 0x08103EF0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08103F1C + ldr r0, _08103F20 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A6B38 + ldr r1, _08103F24 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08103F28 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08103F1C: .4byte gUnknown_2023E88 +_08103F20: .4byte gUnknown_20380D6 +_08103F24: .4byte gUnknown_3005B60 +_08103F28: .4byte sub_08103F2C + thumb_func_end sub_08103EF0 + + thumb_func_start sub_08103F2C +sub_08103F2C: @ 0x08103F2C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08103F5C + ldr r0, _08103F60 + ldrb r0, [r0] + adds r1, r0, r1 + ldrb r4, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08103F68 + ldr r1, _08103F64 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r6, r2, #0 + b _08103F76 + .align 2, 0 +_08103F5C: .4byte gUnknown_2023E88 +_08103F60: .4byte gUnknown_20380D6 +_08103F64: .4byte gUnknown_3005B60 +_08103F68: + ldr r2, _08103FA8 + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r3, [r0, #8] + adds r6, r1, #0 +_08103F76: + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080A6A7C + ldr r1, _08103FA8 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08103FB0 + ldrh r0, [r1, #8] + adds r0, #0xb0 + strh r0, [r1, #8] + ldr r1, _08103FAC + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + adds r1, #1 + b _08103FDA + .align 2, 0 +_08103FA8: .4byte gUnknown_3005B60 +_08103FAC: .4byte gUnknown_20205AC +_08103FB0: + cmp r0, #1 + bne _08103FC6 + ldrh r0, [r1, #0xe] + adds r0, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + bne _08104020 + movs r0, #2 + b _0810401E +_08103FC6: + ldrh r0, [r1, #8] + subs r0, #0xb0 + strh r0, [r1, #8] + ldr r1, _08104014 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + subs r1, #1 +_08103FDA: + strh r1, [r0, #0x26] + adds r0, r4, #0 + bl sub_080A6C68 + ldr r0, _08104018 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #8 + ldrsh r2, [r1, r3] + movs r0, #0xf2 + lsls r0, r0, #4 + cmp r2, r0 + beq _08103FFA + cmp r2, #0 + bne _08104020 +_08103FFA: + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #2 + bne _0810401C + adds r0, r4, #0 + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 + b _08104020 + .align 2, 0 +_08104014: .4byte gUnknown_20205AC +_08104018: .4byte gUnknown_3005B60 +_0810401C: + adds r0, r2, #1 +_0810401E: + strh r0, [r1, #0xa] +_08104020: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08103F2C + + thumb_func_start sub_08104028 +sub_08104028: @ 0x08104028 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _0810404C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08104054 + ldr r0, _08104050 + ldrh r1, [r4, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r4, #0x20] + adds r5, r0, #0 + b _08104060 + .align 2, 0 +_0810404C: .4byte gUnknown_20380D6 +_08104050: .4byte gUnknown_20380BE +_08104054: + ldr r1, _08104094 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + adds r5, r1, #0 +_08104060: + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _08104098 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810409C + adds r3, r4, #0 + adds r3, #0x3f + ldrb r0, [r3] + movs r1, #1 + adds r2, r0, #0 + orrs r2, r1 + strb r2, [r3] + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _081040B0 + movs r0, #2 + orrs r2, r0 + strb r2, [r3] + b _081040B0 + .align 2, 0 +_08104094: .4byte gUnknown_20380BE +_08104098: .4byte gUnknown_20380D6 +_0810409C: + movs r2, #4 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _081040B0 + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_081040B0: + ldr r0, _081040C4 + str r0, [r4, #0x1c] + ldr r1, _081040C8 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081040C4: .4byte sub_080A60A0 +_081040C8: .4byte sub_080A34C4 + thumb_func_end sub_08104028 + + thumb_func_start sub_081040CC +sub_081040CC: @ 0x081040CC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r0, _081040E8 + str r0, [r4, #0x1c] + ldr r1, _081040EC + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081040E8: .4byte sub_080A6084 +_081040EC: .4byte sub_081040F0 + thumb_func_end sub_081040CC + + thumb_func_start sub_081040F0 +sub_081040F0: @ 0x081040F0 + push {lr} + movs r1, #6 + 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, _08104110 + str r1, [r0, #0x1c] + ldr r1, _08104114 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08104110: .4byte sub_080A67B4 +_08104114: .4byte sub_080A34C4 + thumb_func_end sub_081040F0 + + thumb_func_start sub_08104118 +sub_08104118: @ 0x08104118 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810413C + ldr r1, _08104138 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + b _0810415E + .align 2, 0 +_08104138: .4byte gUnknown_20380BE +_0810413C: + ldr r0, _08104204 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810415E + ldr r1, _08104208 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + ldrh r0, [r1, #6] + rsbs r0, r0, #0 + strh r0, [r1, #6] +_0810415E: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + ldr r4, _0810420C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r6, _08104208 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r6, #6] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r0, #0 + ldrh r1, [r5, #0x20] + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r5, #0x22] + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xf0 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081041D0 + ldr r2, _08104210 + adds r0, r4, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081041D0: + movs r3, #0x80 + lsls r3, r3, #1 + str r4, [sp] + adds r0, r5, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + ldrh r0, [r6, #8] + strh r0, [r5, #0x2e] + mov r0, r8 + strh r0, [r5, #0x32] + strh r7, [r5, #0x36] + ldr r0, _08104214 + str r0, [r5, #0x1c] + ldr r1, _08104218 + adds r0, r5, #0 + bl sub_080A5B9C + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104204: .4byte gUnknown_20380D6 +_08104208: .4byte gUnknown_20380BE +_0810420C: .4byte gUnknown_20380D7 +_08104210: .4byte 0xFFFFA000 +_08104214: .4byte sub_080A67B4 +_08104218: .4byte sub_080A34C4 + thumb_func_end sub_08104118 + + thumb_func_start sub_0810421C +sub_0810421C: @ 0x0810421C + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + subs r1, r0, #1 + strh r1, [r3, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08104246 + ldr r2, _0810424C + movs r0, #0x3c + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0xa] + subs r1, #1 + strh r1, [r0, #0xa] + adds r0, r3, #0 + bl sub_08006E00 +_08104246: + pop {r0} + bx r0 + .align 2, 0 +_0810424C: .4byte gUnknown_3005B60 + thumb_func_end sub_0810421C + + thumb_func_start sub_08104250 +sub_08104250: @ 0x08104250 + push {r4, lr} + adds r2, r0, #0 + movs r0, #0x3c + ldrsh r1, [r2, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08104280 + adds r4, r0, r1 + movs r3, #0x2e + ldrsh r1, [r2, r3] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _08104284 + ldrh r0, [r2, #0x34] + ldrh r1, [r2, #0x38] + adds r0, r0, r1 + strh r0, [r2, #0x38] + ldrh r0, [r2, #0x36] + ldrh r3, [r2, #0x3a] + adds r0, r0, r3 + b _08104292 + .align 2, 0 +_08104280: .4byte gUnknown_3005B60 +_08104284: + ldrh r0, [r2, #0x38] + ldrh r1, [r2, #0x34] + subs r0, r0, r1 + strh r0, [r2, #0x38] + ldrh r0, [r2, #0x3a] + ldrh r1, [r2, #0x36] + subs r0, r0, r1 +_08104292: + 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, r0, r1 + strh r0, [r2, #0x32] + ldrh r1, [r4, #0x16] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081042B6 + lsls r0, r3, #0x10 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _081042BA +_081042B6: + lsls r0, r3, #0x10 + lsrs r0, r0, #0x18 +_081042BA: + strh r0, [r2, #0x24] + ldrh r1, [r4, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081042CE + ldrh r0, [r2, #0x32] + lsrs r0, r0, #8 + rsbs r0, r0, #0 + b _081042D2 +_081042CE: + ldrh r0, [r2, #0x32] + lsrs r0, r0, #8 +_081042D2: + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x2e] + subs r1, r0, #1 + strh r1, [r2, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081042E8 + movs r0, #0x1e + strh r0, [r2, #0x2e] + ldr r0, _081042F0 + str r0, [r2, #0x1c] +_081042E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081042F0: .4byte sub_0810421C + thumb_func_end sub_08104250 + + thumb_func_start sub_081042F4 +sub_081042F4: @ 0x081042F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + movs r0, #0x3c + ldrsh r1, [r7, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08104338 + adds r6, r0, r1 + ldrh r2, [r6, #0x16] + movs r1, #2 + rsbs r1, r1, #0 + 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, r1, r0 + strh r1, [r7, #0x32] + ldrh r1, [r6, #0x16] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810433C + lsls r0, r2, #0x10 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _08104340 + .align 2, 0 +_08104338: .4byte gUnknown_3005B60 +_0810433C: + lsls r0, r2, #0x10 + lsrs r0, r0, #0x18 +_08104340: + strh r0, [r7, #0x24] + ldrh r1, [r6, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08104354 + ldrh r0, [r7, #0x32] + lsrs r0, r0, #8 + rsbs r0, r0, #0 + b _08104358 +_08104354: + ldrh r0, [r7, #0x32] + lsrs r0, r0, #8 +_08104358: + strh r0, [r7, #0x26] + ldrh r0, [r7, #0x2e] + subs r1, r0, #1 + strh r1, [r7, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08104424 + movs r4, #0 + movs r0, #8 + strh r0, [r7, #0x2e] + movs r0, #4 + strh r0, [r6, #0x12] + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08151600 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + 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, 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, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + blt _081043A2 + subs r0, r3, r2 + b _081043A4 +_081043A2: + subs r0, r2, r3 +_081043A4: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x10 + 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 _081043BC + subs r0, r3, r2 + b _081043BE +_081043BC: + subs r0, r2, r3 +_081043BE: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + 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, #0x10 + asrs r0, r0, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_08151510 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r6, #0xe0 + lsls r6, r6, #1 + adds r0, r6, #0 + bl sub_08151600 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08151510 + strh r0, [r7, #0x34] + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_08151510 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r6, #0 + bl sub_08151600 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08151510 + strh r0, [r7, #0x36] + ldr r0, _08104430 + str r0, [r7, #0x1c] +_08104424: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104430: .4byte sub_08104250 + thumb_func_end sub_081042F4 + + thumb_func_start sub_08104434 +sub_08104434: @ 0x08104434 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08104458 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08104452 + adds r0, r2, #0 + bl sub_080A34E4 +_08104452: + pop {r0} + bx r0 + .align 2, 0 +_08104458: .4byte gUnknown_3005B60 + thumb_func_end sub_08104434 + + thumb_func_start sub_0810445C +sub_0810445C: @ 0x0810445C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _081044B0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #8] + subs r1, r0, #1 + strh r1, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08104530 + ldr r0, _081044B4 + movs r2, #0x1a + ldrsh r1, [r5, r2] + movs r3, #0x1c + ldrsh r2, [r5, r3] + ldrb r3, [r5, #0xc] + ldrb r4, [r5, #0xa] + subs r3, r3, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r0, r0, #4 + add r0, ip + lsls r0, r0, #2 + ldr r1, _081044B8 + adds r6, r0, r1 + movs r1, #0x10 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _081044BC + cmp r0, #2 + beq _081044D2 + b _081044E0 + .align 2, 0 +_081044B0: .4byte gUnknown_3005B60 +_081044B4: .4byte gUnknown_856EF94 +_081044B8: .4byte gUnknown_20205AC +_081044BC: + ldrb r2, [r6, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #0x18 + orrs r1, r0 + lsls r1, r1, #1 + subs r0, #0x57 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #3] + b _081044E0 +_081044D2: + ldrb r0, [r6, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r6, #3] +_081044E0: + ldr r3, _08104538 + lsls r2, r7, #2 + adds r2, r2, r7 + lsls r2, r2, #3 + adds r4, r2, r3 + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0x14] + subs r0, r0, r1 + strh r0, [r6, #0x2e] + strh r7, [r6, #0x3c] + movs r1, #0xa + ldrsh r0, [r4, r1] + adds r0, #0xd + lsls r0, r0, #1 + adds r0, r0, r2 + adds r3, #8 + adds r0, r0, r3 + mov r2, ip + strh r2, [r0] + ldrh r0, [r4, #0xe] + strh r0, [r4, #8] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0x3f + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x9a + bl sub_080A307C + movs r3, #0xa + ldrsh r0, [r4, r3] + cmp r0, #2 + ble _08104530 + ldr r0, _0810453C + str r0, [r4] +_08104530: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104538: .4byte gUnknown_3005B60 +_0810453C: .4byte sub_08104434 + thumb_func_end sub_0810445C + + thumb_func_start sub_08104540 +sub_08104540: @ 0x08104540 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + mov sb, r0 + movs r5, #0 + mov r0, sp + mov r1, sb + strh r1, [r0] + mov r4, sp + adds r4, #2 + strh r1, [r4] + bl sub_080A46B8 + lsls r0, r0, #0x18 + mov sl, r4 + cmp r0, #0 + beq _081045AC + ldr r1, _0810459C + lsls r2, r7, #2 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #0x10] + ldr r3, _081045A0 + ldrh r0, [r3] + rsbs r0, r0, #0 + strh r0, [r3] + ldrh r1, [r3, #4] + movs r0, #1 + ands r0, r1 + mov r8, r2 + cmp r0, #0 + beq _081045A4 + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strh r0, [r3, #4] + b _08104606 + .align 2, 0 +_0810459C: .4byte gUnknown_3005B60 +_081045A0: .4byte gUnknown_20380BE +_081045A4: + movs r0, #1 + orrs r0, r1 + strh r0, [r3, #4] + b _08104606 +_081045AC: + ldr r1, _081045F0 + ldr r0, _081045F4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + lsls r2, r7, #2 + mov r8, r2 + cmp r0, #0 + bne _08104606 + ldr r1, _081045F8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r3, [r0, #0x10] + ldr r2, _081045FC + ldrh r0, [r2] + rsbs r0, r0, #0 + strh r0, [r2] + ldrh r0, [r2, #2] + rsbs r0, r0, #0 + strh r0, [r2, #2] + ldrh r1, [r2, #4] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08104600 + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + b _08104604 + .align 2, 0 +_081045F0: .4byte gUnknown_2023D1A +_081045F4: .4byte gUnknown_20380D7 +_081045F8: .4byte gUnknown_3005B60 +_081045FC: .4byte gUnknown_20380BE +_08104600: + movs r0, #1 + orrs r0, r1 +_08104604: + strh r0, [r2, #4] +_08104606: + ldr r5, _08104660 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + ldr r1, _08104664 + mov r3, r8 + adds r4, r3, r7 + lsls r4, r4, #3 + adds r4, r4, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1a] + adds r6, r0, #0 + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1c] + mov sb, r0 + ldr r0, _08104668 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08104670 + ldr r4, _0810466C + ldrb r1, [r4] + movs r0, #2 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08104670 + ldrb r0, [r4] + movs r1, #0 + mov r2, sp + mov r3, sl + bl sub_080A81EC + b _08104692 + .align 2, 0 +_08104660: .4byte gUnknown_20380D6 +_08104664: .4byte gUnknown_3005B60 +_08104668: .4byte gUnknown_2022C90 +_0810466C: .4byte gUnknown_20380D7 +_08104670: + mov r5, sp + ldr r4, _081046CC + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sl + strh r0, [r1] +_08104692: + mov r4, sp + ldr r0, _081046D0 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + mov r2, sp + ldr r3, _081046D4 + ldrh r0, [r3] + ldrh r2, [r2] + adds r0, r0, r2 + strh r0, [r1, #0x1e] + strh r0, [r4] + ldrh r0, [r3, #2] + mov r3, sl + ldrh r3, [r3] + adds r0, r0, r3 + strh r0, [r1, #0x20] + mov r1, sl + strh r0, [r1] + mov r0, sp + ldrh r2, [r0] + movs r3, #0 + ldrsh r0, [r0, r3] + adds r1, r6, #0 + cmp r0, r1 + blt _081046D8 + subs r0, r2, r1 + b _081046DA + .align 2, 0 +_081046CC: .4byte gUnknown_20380D7 +_081046D0: .4byte gUnknown_3005B60 +_081046D4: .4byte gUnknown_20380BE +_081046D8: + subs r0, r1, r2 +_081046DA: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r0, #0x10 + asrs r4, r4, #0x10 + ldr r5, _08104750 + ldrh r1, [r5, #4] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_08151600 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08151510 + ldr r2, _08104754 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r6, r1, r2 + strh r0, [r6, #0x12] + movs r1, #0x12 + ldrsh r0, [r6, r1] + movs r1, #0x80 + bl sub_08151510 + strh r0, [r6, #0x14] + ldrh r0, [r5, #4] + strh r0, [r6, #0x16] + mov r2, sl + ldrh r1, [r2] + movs r3, #0 + ldrsh r0, [r2, r3] + mov r4, sb + cmp r0, r4 + blt _08104758 + subs r4, r1, r4 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r1, #0x12 + ldrsh r0, [r6, r1] + bl sub_08151600 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08151510 + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r0 + strh r1, [r6, #0x18] + b _08104778 + .align 2, 0 +_08104750: .4byte gUnknown_20380BE +_08104754: .4byte gUnknown_3005B60 +_08104758: + subs r4, r4, r1 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r2, #0x12 + ldrsh r0, [r6, r2] + bl sub_08151600 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08151510 + movs r1, #1 + orrs r0, r1 + strh r0, [r6, #0x18] +_08104778: + ldr r1, _081047B8 + mov r3, r8 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + ldr r4, _081047BC + ldrh r0, [r4, #6] + strh r0, [r5, #0xe] + ldrh r1, [r4, #8] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081047C8 + movs r0, #0x80 + eors r0, r1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _081047F0 + ldr r0, _081047C0 + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081047C4 + adds r1, r2, #0 + ldrh r4, [r4, #8] + adds r1, r1, r4 + adds r0, r0, r1 + b _08104800 + .align 2, 0 +_081047B8: .4byte gUnknown_3005B60 +_081047BC: .4byte gUnknown_20380BE +_081047C0: .4byte gUnknown_20380D7 +_081047C4: .4byte 0x0000FFC0 +_081047C8: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _081047F0 + ldr r0, _081047E8 + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081047EC + adds r1, r3, #0 + ldrh r4, [r4, #8] + adds r1, r1, r4 + adds r0, r0, r1 + b _08104800 + .align 2, 0 +_081047E8: .4byte gUnknown_20380D7 +_081047EC: .4byte 0x0000FFC0 +_081047F0: + ldr r0, _0810482C + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #8] + subs r0, r0, r1 +_08104800: + strh r0, [r5, #0xc] + ldr r0, _08104830 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #2 + bgt _08104818 + movs r0, #3 + strh r0, [r1, #0xc] +_08104818: + ldr r0, _08104834 + str r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810482C: .4byte gUnknown_20380D7 +_08104830: .4byte gUnknown_3005B60 +_08104834: .4byte sub_0810445C + thumb_func_end sub_08104540 + + thumb_func_start sub_08104838 +sub_08104838: @ 0x08104838 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r0, _08104860 + ldrh r0, [r0, #2] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldr r0, _08104864 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08104860: .4byte gUnknown_856F084 +_08104864: .4byte sub_08104868 + thumb_func_end sub_08104838 + + thumb_func_start sub_08104868 +sub_08104868: @ 0x08104868 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _081048CC + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r5, [r4, #0x2e] + ldr r1, _081048D4 + adds r0, r5, #0 + adds r0, #8 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r7, [r0] + adds r6, r1, #0 + adds r1, r5, #0 + adds r1, #9 + lsls r0, r5, #1 + adds r0, r0, r6 + adds r2, r0, #0 + adds r2, #0x10 + movs r3, #7 + lsls r1, r1, #1 + adds r1, r1, r6 +_081048A0: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bge _081048A0 + adds r0, r5, #0 + adds r0, #0xf + lsls r0, r0, #1 + adds r0, r0, r6 + strh r7, [r0] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x18 + bne _081048CC + adds r0, r4, #0 + bl sub_080A34C4 +_081048CC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081048D4: .4byte gUnknown_20377B4 + thumb_func_end sub_08104868 + + thumb_func_start sub_081048D8 +sub_081048D8: @ 0x081048D8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r4, _08104978 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810497C + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _08104980 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810491C + ldrh r0, [r4, #4] + rsbs r0, r0, #0 + strh r0, [r4, #4] +_0810491C: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4, #4] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldrh r1, [r5, #0x20] + lsrs r6, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r5, #0x22] + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #1 + str r0, [sp] + adds r0, r5, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + ldrh r0, [r4, #8] + strh r0, [r5, #0x2e] + strh r6, [r5, #0x32] + strh r7, [r5, #0x36] + ldr r0, _08104984 + str r0, [r5, #0x1c] + ldr r1, _08104988 + adds r0, r5, #0 + bl sub_080A5B9C + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104978: .4byte gUnknown_20380D7 +_0810497C: .4byte gUnknown_20380BE +_08104980: .4byte gUnknown_20380D6 +_08104984: .4byte sub_080A68C8 +_08104988: .4byte sub_080A34C4 + thumb_func_end sub_081048D8 + + thumb_func_start sub_0810498C +sub_0810498C: @ 0x0810498C + ldr r1, _0810499C + strh r1, [r0, #0x32] + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + ldr r1, _081049A0 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_0810499C: .4byte 0x0000FFF0 +_081049A0: .4byte sub_081049A4 + thumb_func_end sub_0810498C + + thumb_func_start sub_081049A4 +sub_081049A4: @ 0x081049A4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #0x80 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldr r0, _08104A10 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081049C8 + ldrh r0, [r4, #0x24] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] +_081049C8: + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #5 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7e + ble _08104A08 + movs r0, #0 + strh r0, [r4, #0x30] + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _08104A08 + adds r0, r4, #0 + bl sub_080A34C4 +_08104A08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08104A10: .4byte gUnknown_20380D6 + thumb_func_end sub_081049A4 + + thumb_func_start sub_08104A14 +sub_08104A14: @ 0x08104A14 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + movs r0, #0x14 + strh r0, [r4, #0x2e] + ldr r5, _08104A60 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _08104A64 + 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, _08104A68 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08104A60: .4byte gUnknown_20380D7 +_08104A64: .4byte sub_080A67B4 +_08104A68: .4byte sub_08104A6C + thumb_func_end sub_08104A14 + + thumb_func_start sub_08104A6C +sub_08104A6C: @ 0x08104A6C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xa6 + bl sub_080A307C + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r1, [r4, #0x26] + strh r1, [r4, #0x24] + movs r2, #0 + movs r1, #7 + adds r0, r4, #0 + adds r0, #0x3c +_08104AA0: + strh r2, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _08104AA0 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + ands r0, r1 + ldr r2, _08104AE8 + adds r1, r2, #0 + subs r1, r1, r0 + strh r1, [r4, #0x3a] + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa0 + bl __umodsi3 + adds r0, #0xa0 + strh r0, [r4, #0x3c] + ldr r0, _08104AEC + 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 +_08104AE8: .4byte 0x0000FFF4 +_08104AEC: .4byte sub_08104AF0 + thumb_func_end sub_08104A6C + + thumb_func_start sub_08104AF0 +sub_08104AF0: @ 0x08104AF0 + 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, r0, #0x10 + asrs r2, r0, #0x18 + strh r2, [r4, #0x24] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08104B0E + rsbs r0, r2, #0 + strh r0, [r4, #0x24] +_08104B0E: + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #8 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7e + ble _08104B4E + movs r0, #0 + strh r0, [r4, #0x30] + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _08104B4E + adds r0, r4, #0 + bl sub_080A34C4 +_08104B4E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08104AF0 + + thumb_func_start sub_08104B54 +sub_08104B54: @ 0x08104B54 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r0, _08104BA4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08104B72 + ldrh r0, [r4, #0x22] + adds r0, #0x10 + strh r0, [r4, #0x22] +_08104B72: + ldr r1, _08104BA8 + ldrh r0, [r1, #8] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x32] + ldrh r0, [r1, #0xc] + strh r0, [r4, #0x34] + ldrh r0, [r1, #6] + strh r0, [r4, #0x36] + ldr r0, _08104BAC + str r0, [r4, #0x1c] + ldr r1, _08104BB0 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08104BA4: .4byte gUnknown_20380D6 +_08104BA8: .4byte gUnknown_20380BE +_08104BAC: .4byte sub_080A5BB4 +_08104BB0: .4byte sub_080A34C4 + thumb_func_end sub_08104B54 + + thumb_func_start sub_08104BB4 +sub_08104BB4: @ 0x08104BB4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r7, #0x20 + ldr r4, _08104C30 + movs r0, #0x10 + mov r8, r0 + ldr r6, _08104C34 + ldr r0, _08104C38 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08104BE0 + adds r7, r4, #0 + movs r4, #0x20 + mov r8, r6 + movs r6, #0x10 + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_08104BE0: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + strh r0, [r5, #0x20] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + movs r0, #6 + strh r0, [r5, #0x2e] + ldr r4, _08104C3C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r0, r8 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x36] + ldr r0, _08104C40 + str r0, [r5, #0x1c] + ldr r1, _08104C44 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104C30: .4byte 0x0000FFE0 +_08104C34: .4byte 0x0000FFF0 +_08104C38: .4byte gUnknown_20380BE +_08104C3C: .4byte gUnknown_20380D7 +_08104C40: .4byte sub_080A67B4 +_08104C44: .4byte sub_08104C48 + thumb_func_end sub_08104BB4 + + thumb_func_start sub_08104C48 +sub_08104C48: @ 0x08104C48 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08104C5E + adds r0, r2, #0 + bl sub_080A34C4 +_08104C5E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08104C48 + + thumb_func_start sub_08104C64 +sub_08104C64: @ 0x08104C64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + movs r0, #0x20 + mov r8, r0 + ldr r4, _08104CF8 + movs r2, #0x10 + mov sb, r2 + ldr r6, _08104CFC + ldr r7, _08104D00 + ldrh r1, [r7] + movs r2, #0 + ldrsh r0, [r7, r2] + cmp r0, #0 + beq _08104C98 + mov r8, r4 + movs r4, #0x20 + mov sb, r6 + movs r6, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 +_08104C98: + mov r0, r8 + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r5, #0x20] + adds r1, r1, r2 + strh r1, [r5, #0x20] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + movs r0, #6 + strh r0, [r5, #0x2e] + strh r1, [r5, #0x30] + ldr r4, _08104D04 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r0, sb + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + ldrh r0, [r7] + strh r0, [r5, #0x38] + ldrh r0, [r5, #0x2e] + strh r0, [r5, #0x3a] + ldr r0, _08104D08 + str r0, [r5, #0x1c] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08104CF8: .4byte 0x0000FFE0 +_08104CFC: .4byte 0x0000FFF0 +_08104D00: .4byte gUnknown_20380BE +_08104D04: .4byte gUnknown_20380D7 +_08104D08: .4byte sub_08104D0C + thumb_func_end sub_08104C64 + + thumb_func_start sub_08104D0C +sub_08104D0C: @ 0x08104D0C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08104D70 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08104D70 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EF4 + 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, r0, r1 + movs r2, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + movs r0, #2 + strh r0, [r4, #0x24] + ldr r0, _08104D78 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + movs r1, #1 + 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, _08104D7C + str r0, [r4, #0x1c] +_08104D70: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08104D78: .4byte 0x0000FFFE +_08104D7C: .4byte sub_08104D80 + thumb_func_end sub_08104D0C + + thumb_func_start sub_08104D80 +sub_08104D80: @ 0x08104D80 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08104D98 + ldrh r0, [r4, #0x24] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x26] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08104D98: + ldrh r0, [r4, #0x34] + movs r1, #1 + eors r0, r1 + movs r1, #0 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _08104DDA + 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 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x38] + movs r1, #1 + eors r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _08104DE0 + str r0, [r4, #0x1c] +_08104DDA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08104DE0: .4byte sub_08104DE4 + thumb_func_end sub_08104D80 + + thumb_func_start sub_08104DE4 +sub_08104DE4: @ 0x08104DE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08104DF8 + adds r0, r4, #0 + bl sub_080A34C4 +_08104DF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08104DE4 + + thumb_func_start sub_08104E00 +sub_08104E00: @ 0x08104E00 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6B38 + adds r0, r4, #0 + movs r1, #0xd0 + movs r2, #0xd0 + movs r3, #0 + bl sub_080A6A7C + ldr r1, _08104E58 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + movs r1, #0 + bl sub_080A6DD4 + ldr r1, _08104E5C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x50 + strh r1, [r0, #8] + ldr r1, _08104E60 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08104E58: .4byte gUnknown_20205AC +_08104E5C: .4byte gUnknown_3005B60 +_08104E60: .4byte sub_08104E64 + thumb_func_end sub_08104E00 + + thumb_func_start sub_08104E64 +sub_08104E64: @ 0x08104E64 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08104EBC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + subs r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08104EB4 + movs r0, #1 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_080A6C0C + ldr r1, _08104EC0 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + movs r1, #1 + bl sub_080A6DD4 + adds r0, r5, #0 + bl sub_080A34E4 +_08104EB4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08104EBC: .4byte gUnknown_3005B60 +_08104EC0: .4byte gUnknown_20205AC + thumb_func_end sub_08104E64 + + thumb_func_start sub_08104EC4 +sub_08104EC4: @ 0x08104EC4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08104F10 + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #8] + movs r1, #0 + bl sub_080A6B38 + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x10] + strh r5, [r4, #0x12] + strh r5, [r4, #0x14] + ldr r0, _08104F14 + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x16] + ldr r0, _08104F18 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08104F10: .4byte gUnknown_3005B60 +_08104F14: .4byte gUnknown_20380D6 +_08104F18: .4byte sub_08104F1C + thumb_func_end sub_08104EC4 + + thumb_func_start sub_08104F1C +sub_08104F1C: @ 0x08104F1C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08104F40 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _08104F36 + b _08105046 +_08104F36: + lsls r0, r0, #2 + ldr r1, _08104F44 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08104F40: .4byte gUnknown_3005B60 +_08104F44: .4byte _08104F48 +_08104F48: @ jump table + .4byte _08104F60 @ case 0 + .4byte _08104FA8 @ case 1 + .4byte _08104FDE @ case 2 + .4byte _08104FE4 @ case 3 + .4byte _08104FF4 @ case 4 + .4byte _08105028 @ case 5 +_08104F60: + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08104F70 + cmp r0, #3 + beq _08104F70 + cmp r0, #6 + bne _08104F78 +_08104F70: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08105050 +_08104F78: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x10] + adds r0, #0x28 + strh r0, [r4, #0x10] + ldrb r0, [r4, #8] + movs r1, #0x10 + ldrsh r2, [r4, r1] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrb r0, [r4, #8] + bl sub_080A7734 + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0x20 + bne _08105046 + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + b _08105020 +_08104FA8: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08105046 + movs r2, #0x12 + ldrsh r1, [r4, r2] + cmp r1, #3 + bne _08104FBE + strh r0, [r4, #0xc] + strh r1, [r4, #0xa] + b _08105046 +_08104FBE: + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + movs r2, #0x80 + lsls r2, r2, #1 + strh r2, [r4, #0x10] + ldrb r0, [r4, #8] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrb r0, [r4, #8] + bl sub_080A7734 + movs r0, #2 + strh r0, [r4, #0xa] + b _08105046 +_08104FDE: + movs r0, #0 + strh r0, [r4, #0xa] + b _08105046 +_08104FE4: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + ble _08105046 + b _0810501C +_08104FF4: + ldrh r0, [r4, #0xc] + adds r0, #2 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x10] + subs r0, #0x50 + strh r0, [r4, #0x10] + ldrb r0, [r4, #8] + movs r1, #0x10 + ldrsh r2, [r4, r1] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrb r0, [r4, #8] + bl sub_080A7734 + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0x20 + bne _08105046 +_0810501C: + movs r0, #0 + strh r0, [r4, #0xc] +_08105020: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _08105046 +_08105028: + ldrb r0, [r4, #8] + bl sub_080A6C0C + ldr r2, _0810504C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x26] + adds r0, r5, #0 + bl sub_080A34E4 +_08105046: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810504C: .4byte gUnknown_20205AC + thumb_func_end sub_08104F1C + + thumb_func_start sub_08105050 +sub_08105050: @ 0x08105050 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r0, #0 + bl sub_080A72B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + blt _0810512A + bl sub_080080C8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xff + bne _08105094 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _08105090 + adds r0, r0, r1 + bl sub_080A7324 + b _0810512A + .align 2, 0 +_08105090: .4byte gUnknown_20205AC +_08105094: + ldr r5, _08105138 + lsls r3, r4, #4 + adds r3, r3, r4 + lsls r3, r3, #2 + adds r4, r3, r5 + ldrb r1, [r4, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + 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, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #3] + ldrb r0, [r7, #0x16] + ldrb r1, [r7, #0xe] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + ldrh r0, [r7, #0xe] + adds r0, #1 + strh r0, [r7, #0xe] + ldrh r0, [r7, #0x14] + adds r0, #1 + strh r0, [r7, #0x14] + movs r0, #0x10 + strh r0, [r4, #0x2e] + mov r0, sb + strh r0, [r4, #0x30] + movs r0, #6 + strh r0, [r4, #0x32] + adds r5, #0x1c + adds r3, r3, r5 + ldr r0, _0810513C + str r0, [r3] + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x10 + ldrsh r2, [r7, r1] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrb r0, [r4, #1] + movs r3, #4 + rsbs r3, r3, #0 + ands r3, r0 + movs r0, #1 + orrs r3, r0 + strb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 +_0810512A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08105138: .4byte gUnknown_20205AC +_0810513C: .4byte sub_08105140 + thumb_func_end sub_08105050 + + thumb_func_start sub_08105140 +sub_08105140: @ 0x08105140 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0810517E + ldr r3, _08105184 + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_080A7324 +_0810517E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105184: .4byte gUnknown_3005B60 + thumb_func_end sub_08105140 + + thumb_func_start sub_08105188 +sub_08105188: @ 0x08105188 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081051AC + adds r4, r0, r1 + ldr r5, _081051B0 + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _081051B4 + adds r0, r2, #0 + bl sub_080A34E4 + b _081051DA + .align 2, 0 +_081051AC: .4byte gUnknown_3005B60 +_081051B0: .4byte gUnknown_20380BE +_081051B4: + ldrb r0, [r5] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + strh r1, [r4, #8] + strh r2, [r4, #0xa] + ldrh r0, [r5, #2] + strh r0, [r4, #0xc] + strh r2, [r4, #0xe] + strh r2, [r4, #0x10] + ldr r2, _081051E0 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _081051E4 + str r0, [r4] +_081051DA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081051E0: .4byte gUnknown_856F1CC +_081051E4: .4byte sub_081051E8 + thumb_func_end sub_08105188 + + thumb_func_start sub_081051E8 +sub_081051E8: @ 0x081051E8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0810520C + adds r4, r0, r1 + movs r0, #0xa + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _08105250 + cmp r5, #1 + bgt _08105210 + cmp r5, #0 + beq _0810521A + b _081052F8 + .align 2, 0 +_0810520C: .4byte gUnknown_3005B60 +_08105210: + cmp r5, #2 + beq _08105284 + cmp r5, #3 + beq _081052B4 + b _081052F8 +_0810521A: + adds r0, r4, #0 + bl sub_080A75FC + ldrh r2, [r4, #0x10] + adds r2, #3 + strh r2, [r4, #0x10] + ldr r3, _0810524C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + adds r1, r1, r2 + strh r1, [r0, #0x26] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _081052F8 + strh r5, [r4, #0xe] + b _081052AC + .align 2, 0 +_0810524C: .4byte gUnknown_20205AC +_08105250: + adds r0, r4, #0 + bl sub_080A75FC + ldr r2, _08105280 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x10] + ldrh r2, [r0, #0x26] + adds r1, r1, r2 + strh r1, [r0, #0x26] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _081052F8 + movs r0, #0 + strh r0, [r4, #0xe] + b _081052AC + .align 2, 0 +_08105280: .4byte gUnknown_20205AC +_08105284: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081052AC + ldr r2, _081052A8 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #2 + strh r1, [r0, #0x26] + ldrh r0, [r4, #0x10] + subs r0, #2 + strh r0, [r4, #0x10] + b _081052F8 + .align 2, 0 +_081052A8: .4byte gUnknown_20205AC +_081052AC: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _081052F8 +_081052B4: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081052F8 + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081052EC + ldr r2, _081052E8 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 + b _081052F8 + .align 2, 0 +_081052E8: .4byte gUnknown_20205AC +_081052EC: + ldrb r1, [r4, #8] + ldr r2, _08105300 + adds r0, r4, #0 + bl sub_080A75C4 + strh r5, [r4, #0xa] +_081052F8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08105300: .4byte gUnknown_856F1CC + thumb_func_end sub_081051E8 + + thumb_func_start sub_08105304 +sub_08105304: @ 0x08105304 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08105334 + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08105338 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _0810533C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105334: .4byte gUnknown_3005B60 +_08105338: .4byte gUnknown_856F1EC +_0810533C: .4byte sub_08105340 + thumb_func_end sub_08105304 + + thumb_func_start sub_08105340 +sub_08105340: @ 0x08105340 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08105368 + adds r0, r0, r1 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08105360 + adds r0, r4, #0 + bl sub_080A34E4 +_08105360: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105368: .4byte gUnknown_3005B60 + thumb_func_end sub_08105340 + + thumb_func_start sub_0810536C +sub_0810536C: @ 0x0810536C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810539C + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081053A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + strh r0, [r4, #0x20] + movs r0, #0x40 + b _081053BA + .align 2, 0 +_0810539C: .4byte gUnknown_20380D6 +_081053A0: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x20 + strh r0, [r4, #0x20] + ldr r0, _081053EC +_081053BA: + strh r0, [r4, #0x30] + ldr r0, _081053F0 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + 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, _081053F4 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _081053F8 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081053EC: .4byte 0x0000FFC0 +_081053F0: .4byte gUnknown_20380D6 +_081053F4: .4byte sub_080A34C4 +_081053F8: .4byte sub_080A5E34 + thumb_func_end sub_0810536C + + thumb_func_start sub_081053FC +sub_081053FC: @ 0x081053FC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08105410 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08105418 + ldr r0, _08105414 + b _0810541A + .align 2, 0 +_08105410: .4byte gUnknown_20380BE +_08105414: .4byte gUnknown_20380D6 +_08105418: + ldr r0, _08105478 +_0810541A: + ldrb r5, [r0] + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08105434 + ldr r1, _0810547C + movs r2, #2 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_08105434: + adds r0, r5, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810547C + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r6, #0x20] + adds r0, r5, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #4] + adds r0, r0, r4 + strh r0, [r6, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bgt _08105466 + movs r0, #8 + strh r0, [r6, #0x22] +_08105466: + ldr r1, _08105480 + adds r0, r6, #0 + bl sub_080A5B9C + ldr r0, _08105484 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08105478: .4byte gUnknown_20380D7 +_0810547C: .4byte gUnknown_20380BE +_08105480: .4byte sub_080A6014 +_08105484: .4byte sub_080A6084 + thumb_func_end sub_081053FC + + thumb_func_start sub_08105488 +sub_08105488: @ 0x08105488 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081054BC + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + strh r1, [r4, #8] + strh r0, [r4, #0xa] + ldr r2, _081054C0 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _081054C4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081054BC: .4byte gUnknown_3005B60 +_081054C0: .4byte gUnknown_856F288 +_081054C4: .4byte sub_081054C8 + thumb_func_end sub_08105488 + + thumb_func_start sub_081054C8 +sub_081054C8: @ 0x081054C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081054F0 + adds r0, r0, r1 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081054E8 + adds r0, r4, #0 + bl sub_080A34E4 +_081054E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081054F0: .4byte gUnknown_3005B60 + thumb_func_end sub_081054C8 + + thumb_func_start sub_081054F4 +sub_081054F4: @ 0x081054F4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08105568 + adds r4, r1, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + strh r0, [r4, #8] + strh r2, [r4, #0xa] + movs r0, #4 + strh r0, [r4, #0xc] + movs r0, #7 + strh r0, [r4, #0xe] + movs r0, #3 + strh r0, [r4, #0x10] + ldr r3, _0810556C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x20] + strh r0, [r4, #0x12] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x14] + strh r2, [r4, #0x16] + strh r2, [r4, #0x18] + movs r0, #2 + strh r0, [r4, #0x1a] + ldr r0, _08105570 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810555E + movs r1, #0xc + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0xc] +_0810555E: + ldr r0, _08105574 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105568: .4byte gUnknown_3005B60 +_0810556C: .4byte gUnknown_20205AC +_08105570: .4byte gUnknown_20380D6 +_08105574: .4byte sub_08105578 + thumb_func_end sub_081054F4 + + thumb_func_start sub_08105578 +sub_08105578: @ 0x08105578 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081055C0 + adds r3, r0, r1 + ldrh r0, [r3, #0x16] + adds r0, #1 + strh r0, [r3, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _081055DE + movs r0, #0 + strh r0, [r3, #0x16] + ldrh r0, [r3, #0x18] + adds r0, #1 + strh r0, [r3, #0x18] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081055C8 + ldr r2, _081055C4 + movs r0, #8 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x1a] + ldrh r2, [r0, #0x22] + adds r1, r1, r2 + b _081055DC + .align 2, 0 +_081055C0: .4byte gUnknown_3005B60 +_081055C4: .4byte gUnknown_20205AC +_081055C8: + ldr r2, _081055F0 + movs r5, #8 + ldrsh r1, [r3, r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + ldrh r2, [r3, #0x1a] + subs r1, r1, r2 +_081055DC: + strh r1, [r0, #0x22] +_081055DE: + movs r1, #0xa + ldrsh r0, [r3, r1] + cmp r0, #1 + beq _0810562C + cmp r0, #1 + bgt _081055F4 + cmp r0, #0 + beq _081055FA + b _081056BC + .align 2, 0 +_081055F0: .4byte gUnknown_20205AC +_081055F4: + cmp r0, #2 + beq _0810565C + b _081056BC +_081055FA: + ldr r2, _08105628 + movs r5, #8 + ldrsh r1, [r3, r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0xc] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 + strh r1, [r0, #0x20] + ldrh r0, [r3, #0xe] + subs r0, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081056BC + movs r0, #0xe + strh r0, [r3, #0xe] + movs r0, #1 + strh r0, [r3, #0xa] + b _081056BC + .align 2, 0 +_08105628: .4byte gUnknown_20205AC +_0810562C: + ldr r2, _08105658 + movs r5, #8 + ldrsh r1, [r3, r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + ldrh r2, [r3, #0xc] + subs r1, r1, r2 + strh r1, [r0, #0x20] + ldrh r0, [r3, #0xe] + subs r0, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081056BC + movs r0, #7 + strh r0, [r3, #0xe] + movs r0, #2 + strh r0, [r3, #0xa] + b _081056BC + .align 2, 0 +_08105658: .4byte gUnknown_20205AC +_0810565C: + ldr r2, _08105694 + movs r0, #8 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0xc] + ldrh r5, [r0, #0x20] + adds r1, r1, r5 + strh r1, [r0, #0x20] + ldrh r0, [r3, #0xe] + subs r0, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _081056BC + ldrh r0, [r3, #0x10] + subs r0, #1 + strh r0, [r3, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08105698 + movs r0, #7 + strh r0, [r3, #0xe] + strh r1, [r3, #0xa] + b _081056BC + .align 2, 0 +_08105694: .4byte gUnknown_20205AC +_08105698: + ldrh r1, [r3, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081056B6 + movs r0, #8 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + ldrh r2, [r3, #0x1a] + subs r1, r1, r2 + strh r1, [r0, #0x22] +_081056B6: + adds r0, r4, #0 + bl sub_080A34E4 +_081056BC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08105578 + + thumb_func_start sub_081056C4 +sub_081056C4: @ 0x081056C4 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08105714 + adds r5, r1, r0 + ldr r4, _08105718 + ldrb r0, [r4] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + movs r1, #0 + strh r0, [r5, #8] + movs r0, #4 + 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_080A7EE4 + strh r0, [r5, #0x26] + ldrb r0, [r4] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08105724 + ldr r0, _0810571C + ldrh r0, [r0] + strh r0, [r5, #0x14] + ldr r0, _08105720 + b _0810572C + .align 2, 0 +_08105714: .4byte gUnknown_3005B60 +_08105718: .4byte gUnknown_20380D7 +_0810571C: .4byte gUnknown_2022ACC +_08105720: .4byte 0x04000014 +_08105724: + ldr r0, _08105790 + ldrh r0, [r0] + strh r0, [r5, #0x14] + ldr r0, _08105794 +_0810572C: + str r0, [sp] + ldrh r0, [r5, #8] + adds r1, r0, #0 + subs r1, #0x40 + lsls r2, r1, #0x10 + lsls r0, r0, #0x10 + cmp r2, r0 + bgt _0810576A + ldr r4, _08105798 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r4, r0 +_08105744: + asrs r3, r2, #0x10 + cmp r3, #0 + blt _0810575C + lsls r1, r3, #1 + adds r2, r1, r4 + ldrh r0, [r5, #0x14] + adds r0, #0xf0 + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r5, #0x14] + adds r0, #0xf0 + strh r0, [r1] +_0810575C: + adds r0, r3, #1 + lsls r2, r0, #0x10 + asrs r1, r2, #0x10 + movs r3, #8 + ldrsh r0, [r5, r3] + cmp r1, r0 + ble _08105744 +_0810576A: + ldr r0, _0810579C + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _081057A0 + str r0, [r5] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08105790: .4byte gUnknown_2022AD0 +_08105794: .4byte 0x04000018 +_08105798: .4byte gUnknown_20388C8 +_0810579C: .4byte 0xA2600001 +_081057A0: .4byte sub_081057A4 + thumb_func_end sub_081056C4 + + thumb_func_start sub_081057A4 +sub_081057A4: @ 0x081057A4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081057C4 + adds r3, r0, r1 + movs r1, #0x10 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _081057C8 + cmp r0, #1 + beq _081057DE + b _0810585E + .align 2, 0 +_081057C4: .4byte gUnknown_3005B60 +_081057C8: + ldrh r0, [r3, #0x12] + adds r0, #1 + strh r0, [r3, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _0810585E + ldrh r0, [r3, #0x10] + adds r0, #1 + strh r0, [r3, #0x10] + b _0810585E +_081057DE: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0810585E + movs r0, #0 + strh r0, [r3, #0xa] + ldrh r1, [r3, #0xe] + movs r0, #3 + ands r0, r1 + strh r0, [r3, #0xc] + ldrh r0, [r3, #8] + subs r0, r0, r1 + strh r0, [r3, #0x12] + movs r2, #0xc + ldrsh r1, [r3, r2] + cmp r1, #1 + beq _08105814 + cmp r1, #1 + ble _0810581C + cmp r1, #2 + beq _08105818 + cmp r1, #3 + beq _08105818 + b _0810581C +_08105814: + subs r0, #2 + b _0810581A +_08105818: + adds r0, #1 +_0810581A: + strh r0, [r3, #0x12] +_0810581C: + movs r1, #0x12 + ldrsh r0, [r3, r1] + cmp r0, #0 + blt _08105840 + ldr r2, _08105864 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r3, #0x14] + strh r1, [r0] + movs r1, #0x12 + ldrsh r0, [r3, r1] + lsls r0, r0, #1 + movs r1, #0xf0 + lsls r1, r1, #3 + adds r2, r2, r1 + adds r0, r0, r2 + ldrh r1, [r3, #0x14] + strh r1, [r0] +_08105840: + ldrh r0, [r3, #0xe] + adds r0, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x26 + ldrsh r1, [r3, r2] + cmp r0, r1 + blt _0810585E + ldr r1, _08105868 + movs r0, #3 + strb r0, [r1, #0x15] + adds r0, r4, #0 + bl sub_080A34E4 +_0810585E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105864: .4byte gUnknown_20388C8 +_08105868: .4byte gUnknown_20397C8 + thumb_func_end sub_081057A4 + + thumb_func_start sub_0810586C +sub_0810586C: @ 0x0810586C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _081058C0 + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x10 + movs r5, #0 + strh r0, [r4, #0x20] + ldrb r0, [r6] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + 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_080A7EE4 + adds r0, #2 + strh r0, [r4, #0x38] + movs r0, #0x3f + bl sub_080A4A40 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x3a] + ldr r0, _081058C4 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081058C0: .4byte gUnknown_20380D7 +_081058C4: .4byte sub_081058C8 + thumb_func_end sub_0810586C + + thumb_func_start sub_081058C8 +sub_081058C8: @ 0x081058C8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0810592C + cmp r1, #1 + bgt _081058DE + cmp r1, #0 + beq _081058E4 + b _08105A0C +_081058DE: + cmp r1, #2 + beq _081059BE + b _08105A0C +_081058E4: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810590E + strh r1, [r4, #0x32] + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810590E: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08105A0C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + b _081059B6 +_0810592C: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _08105972 + ldrh r2, [r4, #0x32] + movs r3, #0x32 + ldrsh r1, [r4, r3] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _08105972 + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x22] + subs r0, #1 + strh r0, [r4, #0x22] + adds r0, r2, #1 + strh r0, [r4, #0x32] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08105972 + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xcd + bl sub_080A307C +_08105972: + ldrh r0, [r4, #0x34] + ldrh r2, [r4, #0x36] + adds r1, r0, r2 + strh r1, [r4, #0x36] + lsls r0, r1, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0x1f + ble _08105986 + movs r0, #0x40 + b _08105994 +_08105986: + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r2, r0 + bgt _081059A0 + movs r2, #0x40 + rsbs r2, r2, #0 + adds r0, r2, #0 +_08105994: + subs r0, r0, r1 + strh r0, [r4, #0x36] + movs r3, #0x34 + ldrsh r0, [r4, r3] + rsbs r0, r0, #0 + strh r0, [r4, #0x34] +_081059A0: + 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 _08105A0C + strh r2, [r4, #0x30] + strh r2, [r4, #0x32] +_081059B6: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08105A0C +_081059BE: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081059EA + movs r0, #0 + strh r0, [r4, #0x32] + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081059EA: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08105A0C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080A34C4 +_08105A0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081058C8 + + thumb_func_start sub_08105A14 +sub_08105A14: @ 0x08105A14 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + movs r5, #0 + mov r0, sp + strh r5, [r0] + mov r1, sp + adds r1, #2 + strh r5, [r1] + ldr r0, _08105A38 + movs r3, #4 + ldrsh r2, [r0, r3] + adds r7, r1, #0 + adds r1, r0, #0 + cmp r2, #0 + bne _08105A40 + ldr r0, _08105A3C + b _08105A42 + .align 2, 0 +_08105A38: .4byte gUnknown_20380BE +_08105A3C: .4byte gUnknown_20380D6 +_08105A40: + ldr r0, _08105A7C +_08105A42: + ldrb r5, [r0] + ldrb r1, [r1, #6] + movs r0, #1 + adds r4, r0, #0 + eors r4, r1 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105ABA + movs r1, #2 + adds r0, r5, #0 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105ABA + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, sp + adds r3, r7, #0 + bl sub_080A81EC + cmp r4, #0 + bne _08105A80 + adds r0, r5, #0 + movs r1, #0 + b _08105A84 + .align 2, 0 +_08105A7C: .4byte gUnknown_20380D7 +_08105A80: + adds r0, r5, #0 + movs r1, #2 +_08105A84: + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105AB0 + ldr r2, _08105AAC + mov r0, sp + ldrh r1, [r0] + subs r1, r1, r4 + ldrh r0, [r2] + subs r1, r1, r0 + subs r0, r0, r1 + strh r0, [r2] + b _08105ABA + .align 2, 0 +_08105AAC: .4byte gUnknown_20380BE +_08105AB0: + ldr r1, _08105ACC + mov r0, sp + ldrh r0, [r0] + subs r0, r0, r4 + strh r0, [r1] +_08105ABA: + ldr r1, _08105AD0 + str r1, [r6, #0x1c] + adds r0, r6, #0 + bl _call_via_r1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08105ACC: .4byte gUnknown_20380BE +_08105AD0: .4byte sub_080A7090 + thumb_func_end sub_08105A14 + + thumb_func_start sub_08105AD4 +sub_08105AD4: @ 0x08105AD4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105AEE + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_080A34C4 +_08105AEE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08105AD4 + + thumb_func_start sub_08105AF4 +sub_08105AF4: @ 0x08105AF4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + movs r6, #0 + mov r0, sp + strh r6, [r0] + mov r1, sp + adds r1, #2 + strh r6, [r1] + ldr r0, _08105B20 + movs r2, #0xa + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _08105B2C + ldr r0, _08105B24 + ldrb r7, [r0] + ldr r0, _08105B28 + b _08105B32 + .align 2, 0 +_08105B20: .4byte gUnknown_20380BE +_08105B24: .4byte gUnknown_20380D6 +_08105B28: .4byte gUnknown_20380D7 +_08105B2C: + ldr r0, _08105B4C + ldrb r7, [r0] + ldr r0, _08105B50 +_08105B32: + ldrb r0, [r0] + mov r8, r0 + ldr r0, _08105B54 + movs r3, #0xc + ldrsh r0, [r0, r3] + cmp r0, #0 + bne _08105B58 + movs r0, #0 + mov sl, r0 + movs r1, #1 + str r1, [sp, #4] + b _08105B60 + .align 2, 0 +_08105B4C: .4byte gUnknown_20380D7 +_08105B50: .4byte gUnknown_20380D6 +_08105B54: .4byte gUnknown_20380BE +_08105B58: + movs r2, #2 + mov sl, r2 + movs r3, #3 + str r3, [sp, #4] +_08105B60: + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105BBC + adds r0, r7, #0 + mov r1, sl + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r1, _08105BA0 + lsrs r0, r0, #0x18 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r0, #2 + mov r4, r8 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105BAC + ldr r2, _08105BA4 + ldr r0, _08105BA8 + adds r0, r4, r0 + b _08105C3A + .align 2, 0 +_08105BA0: .4byte gUnknown_20380BE +_08105BA4: .4byte gUnknown_20205AC +_08105BA8: .4byte gUnknown_2023E88 +_08105BAC: + ldr r2, _08105BB4 + ldr r0, _08105BB8 + add r0, r8 + b _08105C3A + .align 2, 0 +_08105BB4: .4byte gUnknown_20205AC +_08105BB8: .4byte gUnknown_2023E88 +_08105BBC: + adds r0, r7, #0 + mov r1, sl + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08105C24 + ldrh r1, [r1] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08105C34 + movs r0, #2 + adds r4, r7, #0 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105C34 + ldr r3, _08105C28 + ldr r2, _08105C2C + adds r0, r7, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r6, r0, r3 + adds r2, r4, r2 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r3 + movs r0, #0x20 + ldrsh r1, [r6, r0] + movs r3, #0x20 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _08105C30 + adds r0, r2, #0 + adds r0, #0x43 + ldrb r0, [r0] + adds r0, #1 + b _08105C4A + .align 2, 0 +_08105C24: .4byte gUnknown_20380BE +_08105C28: .4byte gUnknown_20205AC +_08105C2C: .4byte gUnknown_2023E88 +_08105C30: + adds r0, r6, #0 + b _08105C44 +_08105C34: + ldr r2, _08105C90 + ldr r0, _08105C94 + adds r0, r7, r0 +_08105C3A: + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 +_08105C44: + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 +_08105C4A: + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] + adds r0, r7, #0 + ldr r1, [sp, #4] + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _08105C98 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08105C9C + movs r1, #2 + mov r0, r8 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105C9C + ldrb r1, [r4, #0xc] + mov r0, r8 + mov r2, sp + mov r3, sp + adds r3, #2 + bl sub_080A81EC + b _08105CBC + .align 2, 0 +_08105C90: .4byte gUnknown_20205AC +_08105C94: .4byte gUnknown_2023E88 +_08105C98: .4byte gUnknown_20380BE +_08105C9C: + mov r4, sp + mov r0, r8 + mov r1, sl + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + mov r0, r8 + ldr r1, [sp, #4] + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + strh r0, [r2, #2] +_08105CBC: + mov r0, r8 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08105CE0 + mov r3, sp + mov r2, sp + ldr r1, _08105CDC + ldrh r0, [r1, #6] + ldrh r2, [r2] + adds r0, r0, r2 + strh r0, [r3] + adds r2, r1, #0 + b _08105CEE + .align 2, 0 +_08105CDC: .4byte gUnknown_20380BE +_08105CE0: + mov r3, sp + mov r0, sp + ldr r2, _08105D30 + ldrh r0, [r0] + ldrh r1, [r2, #6] + subs r0, r0, r1 + strh r0, [r3] +_08105CEE: + ldrh r1, [r2, #8] + mov r3, sp + ldrh r3, [r3, #2] + adds r1, r1, r3 + mov r0, sp + strh r1, [r0, #2] + mov r3, sb + 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_080A671C + ldr r1, _08105D34 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08105D30: .4byte gUnknown_20380BE +_08105D34: .4byte sub_08105AD4 + thumb_func_end sub_08105AF4 + + thumb_func_start sub_08105D38 +sub_08105D38: @ 0x08105D38 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08105D78 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08105D5E + lsls r0, r0, #0x14 + ldr r1, _08105D7C + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ldr r1, _08105D80 + ldrb r2, [r1, #0xa] + ldrh r3, [r1, #8] + movs r1, #0xf + bl sub_0806F410 +_08105D5E: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldr r1, _08105D84 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105D78: .4byte 0x000027DB +_08105D7C: .4byte 0x01010000 +_08105D80: .4byte gUnknown_20380BE +_08105D84: .4byte sub_080A7090 + thumb_func_end sub_08105D38 + + thumb_func_start sub_08105D88 +sub_08105D88: @ 0x08105D88 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r0, _08105DBC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #0xa0 + cmp r0, #0 + beq _08105DA4 + ldr r1, _08105DC0 +_08105DA4: + movs r0, #0xe0 + lsls r0, r0, #2 + strh r0, [r4, #0x2e] + strh r1, [r4, #0x30] + ldr r0, _08105DC4 + ldrh r0, [r0, #4] + strh r0, [r4, #0x3c] + ldr r0, _08105DC8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105DBC: .4byte gUnknown_20380D6 +_08105DC0: .4byte 0x0000FF60 +_08105DC4: .4byte gUnknown_20380BE +_08105DC8: .4byte sub_08105DCC + thumb_func_end sub_08105D88 + + thumb_func_start sub_08105DCC +sub_08105DCC: @ 0x08105DCC + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x2e] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + subs r1, r1, r0 + movs r5, #0 + strh r1, [r4, #0x26] + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + subs r2, #0x20 + strh r2, [r4, #0x2e] + ldr r0, _08105E38 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #0xa0 + cmp r0, #0 + beq _08105DFC + ldr r1, _08105E3C +_08105DFC: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x26] + movs r2, #0x26 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08105E30 + ldrh r2, [r4, #0x22] + adds r0, r1, r2 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x26] + strh r5, [r4, #0x24] + strh r5, [r4, #0x2e] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldr r0, _08105E40 + str r0, [r4, #0x1c] +_08105E30: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08105E38: .4byte gUnknown_20380D6 +_08105E3C: .4byte 0x0000FF60 +_08105E40: .4byte sub_08105E44 + thumb_func_end sub_08105DCC + + thumb_func_start sub_08105E44 +sub_08105E44: @ 0x08105E44 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r1, r0, #1 + strh r1, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _08105E62 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007F70 + ldr r0, _08105E68 + str r0, [r4, #0x1c] +_08105E62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105E68: .4byte sub_08105E6C + thumb_func_end sub_08105E44 + + thumb_func_start sub_08105E6C +sub_08105E6C: @ 0x08105E6C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08105ED2 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + movs r0, #0 + strh r0, [r4, #0x2e] + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08105EB8 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x10 + ldr r3, _08105EAC + adds r0, r3, #0 + ands r1, r0 + ldr r0, _08105EB0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + ldr r0, _08105EB4 + b _08105ED0 + .align 2, 0 +_08105EAC: .4byte 0x000003FF +_08105EB0: .4byte 0xFFFFFC00 +_08105EB4: .4byte sub_08105EE4 +_08105EB8: + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x20 + ldr r3, _08105ED8 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _08105EDC + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + ldr r0, _08105EE0 +_08105ED0: + str r0, [r4, #0x1c] +_08105ED2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105ED8: .4byte 0x000003FF +_08105EDC: .4byte 0xFFFFFC00 +_08105EE0: .4byte sub_08105F6C + thumb_func_end sub_08105E6C + + thumb_func_start sub_08105EE4 +sub_08105EE4: @ 0x08105EE4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x26] + subs r0, #2 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bne _08105F1A + movs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #0 + strh r0, [r4, #0x30] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r4, #0x2e] + movs r0, #0x52 + bl sub_08001144 + ldr r0, _08105F20 + str r0, [r4, #0x1c] +_08105F1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105F20: .4byte sub_08105F24 + thumb_func_end sub_08105EE4 + + thumb_func_start sub_08105F24 +sub_08105F24: @ 0x08105F24 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08105F62 + ldrh r1, [r4, #0x2e] + subs r1, #1 + strh r1, [r4, #0x2e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08105F62 + ldr r0, _08105F68 + str r0, [r4, #0x1c] +_08105F62: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105F68: .4byte sub_08105F6C + thumb_func_end sub_08105F24 + + thumb_func_start sub_08105F6C +sub_08105F6C: @ 0x08105F6C + push {lr} + adds r3, r0, #0 + ldr r0, _08105F94 + ldrh r1, [r0, #0xe] + ldr r0, _08105F98 + cmp r1, r0 + bne _08105FA4 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x3c + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08105FA0 + ldr r0, _08105F9C + b _08105FA2 + .align 2, 0 +_08105F94: .4byte gUnknown_20380BE +_08105F98: .4byte 0x0000FFFF +_08105F9C: .4byte sub_08105FAC +_08105FA0: + ldr r0, _08105FA8 +_08105FA2: + str r0, [r3, #0x1c] +_08105FA4: + pop {r0} + bx r0 + .align 2, 0 +_08105FA8: .4byte sub_080A34C4 + thumb_func_end sub_08105F6C + + thumb_func_start sub_08105FAC +sub_08105FAC: @ 0x08105FAC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08105FAC + + thumb_func_start sub_08105FCC +sub_08105FCC: @ 0x08105FCC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08105FFC + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r4, #8] + ldr r2, _08106000 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _08106004 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08105FFC: .4byte gUnknown_3005B60 +_08106000: .4byte gUnknown_856F494 +_08106004: .4byte sub_08106008 + thumb_func_end sub_08105FCC + + thumb_func_start sub_08106008 +sub_08106008: @ 0x08106008 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08106058 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _08106052 + ldr r2, _0810605C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #0 + bl sub_080A34E4 +_08106052: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106058: .4byte gUnknown_3005B60 +_0810605C: .4byte gUnknown_20205AC + thumb_func_end sub_08106008 + + thumb_func_start sub_08106060 +sub_08106060: @ 0x08106060 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08106094 + adds r4, r1, r0 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + movs r0, #3 + strh r0, [r4, #0x20] + ldr r0, _08106098 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081060A0 + ldr r0, _0810609C + strh r0, [r4, #0x22] + movs r0, #8 + b _081060A6 + .align 2, 0 +_08106094: .4byte gUnknown_3005B60 +_08106098: .4byte gUnknown_20380D7 +_0810609C: .4byte 0x0000FFFF +_081060A0: + movs r0, #1 + strh r0, [r4, #0x22] + ldr r0, _081060C0 +_081060A6: + strh r0, [r4, #0x24] + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _081060C4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081060C0: .4byte 0x0000FFF8 +_081060C4: .4byte sub_081060C8 + thumb_func_end sub_08106060 + + thumb_func_start sub_081060C8 +sub_081060C8: @ 0x081060C8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081060EC + adds r3, r0, r1 + movs r0, #8 + ldrsh r4, [r3, r0] + cmp r4, #1 + beq _0810611C + cmp r4, #1 + bgt _081060F0 + cmp r4, #0 + beq _081060FA + b _081061E2 + .align 2, 0 +_081060EC: .4byte gUnknown_3005B60 +_081060F0: + cmp r4, #2 + beq _08106198 + cmp r4, #3 + beq _081061B2 + b _081061E2 +_081060FA: + ldr r2, _08106118 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x24] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + strh r4, [r3, #0xa] + strh r4, [r3, #0xc] + strh r4, [r3, #0xe] + b _081061AA + .align 2, 0 +_08106118: .4byte gUnknown_20205AC +_0810611C: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081061E2 + movs r0, #0 + strh r0, [r3, #0xa] + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + ands r0, r4 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08106154 + ldr r2, _08106150 + movs r4, #0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + adds r1, #6 + b _08106166 + .align 2, 0 +_08106150: .4byte gUnknown_20205AC +_08106154: + ldr r2, _08106194 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + subs r1, #6 +_08106166: + strh r1, [r0, #0x24] + ldrh r0, [r3, #0xe] + adds r0, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _081061E2 + ldrh r1, [r3, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081061AA + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x24] + subs r0, #6 + strh r0, [r1, #0x24] + b _081061AA + .align 2, 0 +_08106194: .4byte gUnknown_20205AC +_08106198: + ldrh r0, [r3, #0x20] + subs r0, #1 + strh r0, [r3, #0x20] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081061AA + movs r0, #0 + strh r0, [r3, #8] + b _081061E2 +_081061AA: + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + b _081061E2 +_081061B2: + ldr r2, _081061E8 + movs r4, #0x26 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x22] + ldrh r4, [r0, #0x24] + adds r1, r1, r4 + strh r1, [r0, #0x24] + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081061E2 + adds r0, r5, #0 + bl sub_080A34E4 +_081061E2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081061E8: .4byte gUnknown_20205AC + thumb_func_end sub_081060C8 + + thumb_func_start sub_081061EC +sub_081061EC: @ 0x081061EC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08106228 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + movs r0, #1 + strh r0, [r4, #0x10] + movs r0, #0xe + strh r0, [r4, #0x22] + movs r0, #2 + strh r0, [r4, #0x24] + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _0810622C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08106228: .4byte gUnknown_3005B60 +_0810622C: .4byte sub_08106230 + thumb_func_end sub_081061EC + + thumb_func_start sub_08106230 +sub_08106230: @ 0x08106230 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08106284 + adds r4, r0, r1 + movs r0, #8 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _081062F6 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x10 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _081062F6 + strh r2, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810628C + ldr r3, _08106288 + movs r6, #0x26 + ldrsh r1, [r4, r6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _081062A2 + .align 2, 0 +_08106284: .4byte gUnknown_3005B60 +_08106288: .4byte gUnknown_20205AC +_0810628C: + ldr r3, _081062D4 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_081062A2: + strb r1, [r0] + ldrh r0, [r4, #0xe] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x22 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _081062F6 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x24 + ldrsh r1, [r4, r6] + cmp r0, r1 + bge _081062D8 + strh r2, [r4, #0xa] + strh r2, [r4, #0xc] + strh r2, [r4, #0xe] + b _081062F6 + .align 2, 0 +_081062D4: .4byte gUnknown_20205AC +_081062D8: + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + adds r0, r5, #0 + bl sub_080A34E4 +_081062F6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08106230 + + thumb_func_start sub_081062FC +sub_081062FC: @ 0x081062FC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0810634C + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + movs r1, #4 + 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, _08106350 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _08106354 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810634C: .4byte gUnknown_3005B60 +_08106350: .4byte gUnknown_20380D6 +_08106354: .4byte sub_08106358 + thumb_func_end sub_081062FC + + thumb_func_start sub_08106358 +sub_08106358: @ 0x08106358 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0810637C + adds r4, r0, r1 + movs r0, #0x18 + ldrsh r2, [r4, r0] + cmp r2, #1 + beq _081063C4 + cmp r2, #1 + bgt _08106380 + cmp r2, #0 + beq _08106386 + b _081063E0 + .align 2, 0 +_0810637C: .4byte gUnknown_3005B60 +_08106380: + cmp r2, #2 + beq _081063DC + b _081063E0 +_08106386: + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081063E0 + strh r2, [r4, #0x10] + ldrh r0, [r4, #0x12] + adds r0, #1 + movs r1, #1 + ands r0, r1 + strh r0, [r4, #0x12] + ldrh r0, [r4, #0x14] + adds r0, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _081063E0 + movs r1, #0x16 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081063BE + strh r2, [r4, #0x14] + movs r0, #1 + strh r0, [r4, #0x18] + b _081063E0 +_081063BE: + movs r0, #2 + strh r0, [r4, #0x18] + b _081063E0 +_081063C4: + movs r1, #0 + strh r1, [r4, #0x12] + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _081063E0 + strh r2, [r4, #0x16] + strh r1, [r4, #0x18] + b _081063E0 +_081063DC: + movs r0, #1 + strh r0, [r4, #0x12] +_081063E0: + movs r2, #8 + ldrsh r5, [r4, r2] + cmp r5, #0 + beq _081063EE + cmp r5, #1 + beq _08106484 + b _08106492 +_081063EE: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08106492 + strh r5, [r4, #0xa] + ldr r0, _08106478 + movs r3, #0x24 + ldrsh r1, [r4, r3] + movs r3, #0x26 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _08106492 + ldr r0, _0810647C + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + strh r6, [r1, #0x2e] + movs r0, #0xd + strh r0, [r1, #0x30] + ldr r2, _08106480 + movs r3, #0xc + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0x24] + movs r3, #0xc + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + adds r2, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0x26] + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _08106492 + strh r5, [r4, #0xc] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _08106492 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08106492 + .align 2, 0 +_08106478: .4byte gUnknown_856F4C0 +_0810647C: .4byte gUnknown_20205AC +_08106480: .4byte gUnknown_856F4D8 +_08106484: + movs r1, #0x22 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08106492 + adds r0, r6, #0 + bl sub_080A34E4 +_08106492: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08106358 + + thumb_func_start sub_08106498 +sub_08106498: @ 0x08106498 + push {r4, lr} + adds r3, r0, #0 + ldr r4, _08106500 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + movs r2, #1 + ldrb r1, [r0, #0x12] + ands r1, r2 + lsls r1, r1, #2 + mov r0, ip + ldrb r2, [r0] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081064FA + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r1, r1, #1 + movs r0, #0x2e + ldrsh r2, [r3, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #8 + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r3, #0 + bl sub_08006E00 +_081064FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08106500: .4byte gUnknown_3005B60 + thumb_func_end sub_08106498 + + thumb_func_start sub_08106504 +sub_08106504: @ 0x08106504 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081065A0 + bl sub_0800851C + mov r1, sp + strb r0, [r1] + movs r4, #1 + ldr r0, _081065A4 + adds r5, r0, #0 +_0810651C: + subs r0, r5, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080084EC + mov r2, sp + adds r1, r2, r4 + strb r0, [r1] + adds r4, #1 + cmp r4, #2 + ble _0810651C + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + adds r1, r0, #0 + ldr r0, _081065A8 + ldr r0, [r0] + movs r2, #0xbe + lsls r2, r2, #1 + adds r0, r0, r2 + str r1, [r0] + ldr r0, _081065AC + bl sub_08034370 + movs r4, #0 +_08106550: + ldr r5, _081065A8 + ldr r0, [r5] + movs r1, #0xbe + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r1, r4, #6 + ldr r0, [r0] + adds r0, r0, r1 + mov r2, sp + adds r1, r2, r4 + ldrb r1, [r1] + lsls r1, r1, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + adds r4, #1 + cmp r4, #2 + ble _08106550 + ldr r0, [r5] + movs r4, #0xbe + lsls r4, r4, #1 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] + adds r0, r6, #0 + bl sub_080A34E4 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081065A0: .4byte 0x000027DE +_081065A4: .4byte 0x00002710 +_081065A8: .4byte gUnknown_2024178 +_081065AC: .4byte gUnknown_8C226B4 + thumb_func_end sub_08106504 + + thumb_func_start sub_081065B0 +sub_081065B0: @ 0x081065B0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _081065D4 + movs r4, #2 +_081065BA: + ldrh r0, [r5] + bl sub_08008564 + adds r5, #2 + subs r4, #1 + cmp r4, #0 + bge _081065BA + adds r0, r6, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081065D4: .4byte gUnknown_856F534 + thumb_func_end sub_081065B0 + + thumb_func_start sub_081065D8 +sub_081065D8: @ 0x081065D8 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + movs r0, #1 + ands r3, r0 + rsbs r0, r3, #0 + orrs r0, r3 + asrs r0, r0, #0x1f + movs r3, #0x20 + ands r0, r3 + ldrh r4, [r5, #4] + lsls r3, r4, #0x16 + lsrs r3, r3, #0x16 + lsrs r1, r1, #0x16 + adds r0, r0, r1 + adds r3, r3, r0 + ldr r1, _0810662C + adds r0, r1, #0 + ands r3, r0 + ldr r0, _08106630 + ands r0, r4 + orrs r0, r3 + strh r0, [r5, #4] + ldr r0, _08106634 + lsrs r2, r2, #0x19 + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r0, [r2] + bl sub_0800851C + lsls r0, r0, #4 + ldrb r2, [r5, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810662C: .4byte 0x000003FF +_08106630: .4byte 0xFFFFFC00 +_08106634: .4byte gUnknown_856F534 + thumb_func_end sub_081065D8 + + thumb_func_start sub_08106638 +sub_08106638: @ 0x08106638 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0 + bl sub_080A6294 + ldr r6, _081066A0 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08106658 + ldr r1, _081066A4 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_08106658: + ldr r4, _081066A4 + ldrh r0, [r4, #8] + strh r0, [r5, #0x2e] + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r5, #0x36] + ldr r0, _081066A8 + str r0, [r5, #0x1c] + ldr r1, _081066AC + adds r0, r5, #0 + bl sub_080A5B9C + ldrb r1, [r4, #0xa] + ldrb r2, [r4, #0xc] + adds r0, r5, #0 + bl sub_081065D8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081066A0: .4byte gUnknown_20380D6 +_081066A4: .4byte gUnknown_20380BE +_081066A8: .4byte sub_080A67B4 +_081066AC: .4byte sub_080A34C4 + thumb_func_end sub_08106638 + + thumb_func_start sub_081066B0 +sub_081066B0: @ 0x081066B0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _081066CA + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 +_081066CA: + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r2, [r4, #0x32] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #7 + 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 _081066FA + adds r0, r4, #0 + bl sub_080A34C4 +_081066FA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081066B0 + + thumb_func_start sub_08106700 +sub_08106700: @ 0x08106700 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + movs r6, #0xf0 + cmp r0, #0 + beq _08106714 + movs r6, #0x98 +_08106714: + movs r5, #0 + ldr r1, _08106768 + strh r6, [r1] + ldr r4, _0810676C + movs r0, #0xa0 + strh r0, [r4] + ldrh r1, [r1] + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x44 + bl sub_08001144 + ldr r1, _08106770 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08106774 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc8 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0x10 + bl sub_08001144 + ldr r1, _08106778 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + strh r6, [r0, #0xa] + ldr r1, _0810677C + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08106768: .4byte gUnknown_2022AD8 +_0810676C: .4byte gUnknown_2022ADA +_08106770: .4byte 0x00003F1F +_08106774: .4byte 0x00003F3F +_08106778: .4byte gUnknown_3005B60 +_0810677C: .4byte sub_08106780 + thumb_func_end sub_08106700 + + thumb_func_start sub_08106780 +sub_08106780: @ 0x08106780 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081067B4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r3, r1, r2 + ldrh r0, [r3, #8] + adds r4, r0, #0 + adds r4, #0xd + strh r4, [r3, #8] + ldrh r0, [r3, #0xa] + adds r2, r0, #0 + subs r2, #0xd + strh r2, [r3, #0xa] + lsls r1, r4, #0x10 + lsls r0, r2, #0x10 + cmp r1, r0 + blt _081067C0 + ldr r0, _081067B8 + movs r1, #0 + strh r1, [r0] + ldr r0, _081067BC + str r0, [r3] + b _081067C8 + .align 2, 0 +_081067B4: .4byte gUnknown_3005B60 +_081067B8: .4byte gUnknown_2022AD8 +_081067BC: .4byte sub_081067D4 +_081067C0: + ldr r1, _081067D0 + lsls r0, r4, #8 + orrs r2, r0 + strh r2, [r1] +_081067C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081067D0: .4byte gUnknown_2022AD8 + thumb_func_end sub_08106780 + + thumb_func_start sub_081067D4 +sub_081067D4: @ 0x081067D4 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _08106820 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0x1c] + adds r0, #1 + movs r4, #0 + strh r0, [r1, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _08106828 + movs r0, #0x88 + strh r0, [r1, #0x1e] + movs r0, #0x50 + movs r1, #0x88 + bl sub_08001144 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + ldr r2, _08106824 + movs r1, #0x10 + bl sub_080A22E8 + b _0810685C + .align 2, 0 +_08106820: .4byte gUnknown_3005B60 +_08106824: .4byte 0x00007FFF +_08106828: + cmp r0, #4 + ble _0810685C + ldr r0, _08106864 + strh r4, [r0] + ldr r0, _08106868 + strh r4, [r0] + ldr r4, _0810686C + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34E4 +_0810685C: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106864: .4byte gUnknown_2022AD8 +_08106868: .4byte gUnknown_2022ADA +_0810686C: .4byte 0x00003F3F + thumb_func_end sub_081067D4 + + thumb_func_start sub_08106870 +sub_08106870: @ 0x08106870 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _081068C0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _081068CC + movs r0, #1 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _081068C4 + adds r0, r5, #0 + bl sub_080A75C4 + ldr r1, _081068C8 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #4 + strh r1, [r0, #0x24] + b _081068F4 + .align 2, 0 +_081068C0: .4byte gUnknown_3005B60 +_081068C4: .4byte gUnknown_856F56C +_081068C8: .4byte gUnknown_20205AC +_081068CC: + ldr r1, _081068FC + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrh r0, [r4, #0x24] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + adds r0, r5, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081068F4 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 +_081068F4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081068FC: .4byte gUnknown_20205AC + thumb_func_end sub_08106870 + + thumb_func_start sub_08106900 +sub_08106900: @ 0x08106900 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08106950 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0810695C + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08106954 + adds r0, r5, #0 + bl sub_080A75C4 + ldr r1, _08106958 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #4 + strh r1, [r0, #0x24] + b _08106984 + .align 2, 0 +_08106950: .4byte gUnknown_3005B60 +_08106954: .4byte gUnknown_856F56C +_08106958: .4byte gUnknown_20205AC +_0810695C: + ldr r1, _0810698C + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrh r0, [r4, #0x24] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + adds r0, r5, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08106984 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + adds r0, r6, #0 + bl sub_080A34E4 +_08106984: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810698C: .4byte gUnknown_20205AC + thumb_func_end sub_08106900 + + thumb_func_start sub_08106990 +sub_08106990: @ 0x08106990 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + movs r0, #0x5f + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldr r5, _081069D4 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + ldr r0, _081069D8 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081069D4: .4byte gUnknown_20380D7 +_081069D8: .4byte sub_081069DC + thumb_func_end sub_08106990 + + thumb_func_start sub_081069DC +sub_081069DC: @ 0x081069DC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08106A06 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xe + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _08106A0C +_08106A06: + adds r0, r4, #0 + bl sub_080A34C4 +_08106A0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081069DC + + thumb_func_start sub_08106A14 +sub_08106A14: @ 0x08106A14 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x2e] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08106A38 + ldr r1, _08106A34 + ldrh r0, [r1] + strh r0, [r4, #0x30] + ldrh r0, [r1, #2] + strh r0, [r4, #0x32] + adds r0, r2, #1 + strh r0, [r4, #0x2e] + b _08106A94 + .align 2, 0 +_08106A34: .4byte gUnknown_20380BE +_08106A38: + ldrh r0, [r4, #0x30] + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + cmp r0, #0x64 + ble _08106A86 + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08106A86: + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0x78 + ble _08106A94 + adds r0, r4, #0 + bl sub_080A34C4 +_08106A94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08106A14 + + thumb_func_start sub_08106A9C +sub_08106A9C: @ 0x08106A9C + push {lr} + ldr r2, _08106AC0 + ldrh r1, [r2] + strh r1, [r0, #0x20] + movs r1, #0xa0 + strh r1, [r0, #0x22] + ldrh r1, [r2, #4] + strh r1, [r0, #0x2e] + ldrh r1, [r2, #2] + strh r1, [r0, #0x30] + ldr r1, _08106AC4 + str r1, [r0, #0x1c] + ldr r1, _08106AC8 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08106AC0: .4byte gUnknown_20380BE +_08106AC4: .4byte sub_080A5D78 +_08106AC8: .4byte sub_08106ACC + thumb_func_end sub_08106A9C + + thumb_func_start sub_08106ACC +sub_08106ACC: @ 0x08106ACC + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x34] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + cmp r5, #0x48 + bgt _08106B32 + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + cmp r5, #0x40 + bgt _08106B32 + adds r0, r4, #0 + bl sub_080A34C4 +_08106B32: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08106ACC + + thumb_func_start sub_08106B38 +sub_08106B38: @ 0x08106B38 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08106BD8 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #3 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08106B7A + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_08106B7A: + ldr r0, _08106BDC + movs r1, #0 + strh r1, [r0] + ldr r4, _08106BE0 + strh r1, [r4] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08106BE4 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r1, _08106BE8 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + ldr r0, _08106BEC + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r1, _08106BF0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08106BF4 + str r1, [r0] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106BD8: .4byte 0x00003F42 +_08106BDC: .4byte gUnknown_2022ACC +_08106BE0: .4byte gUnknown_2022ACE +_08106BE4: .4byte gUnknown_8C23384 +_08106BE8: .4byte gUnknown_8C23E1C +_08106BEC: .4byte gUnknown_8C23DF4 +_08106BF0: .4byte gUnknown_3005B60 +_08106BF4: .4byte sub_08106BF8 + thumb_func_end sub_08106B38 + + thumb_func_start sub_08106BF8 +sub_08106BF8: @ 0x08106BF8 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08106C20 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x20 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bls _08106C16 + b _08106D40 +_08106C16: + lsls r0, r0, #2 + ldr r1, _08106C24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08106C20: .4byte gUnknown_3005B60 +_08106C24: .4byte _08106C28 +_08106C28: @ jump table + .4byte _08106C3C @ case 0 + .4byte _08106C80 @ case 1 + .4byte _08106CA2 @ case 2 + .4byte _08106CE6 @ case 3 + .4byte _08106D0C @ case 4 +_08106C3C: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08106D40 + strh r5, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + adds r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08106D40 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x1e] + b _08106D40 +_08106C80: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x8d + bne _08106D40 + movs r0, #0x10 + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + b _08106D40 +_08106CA2: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08106D40 + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + subs r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _08106D40 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r1, [r4, #0x1e] + b _08106D40 +_08106CE6: + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + ldr r1, _08106D08 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + b _08106D40 + .align 2, 0 +_08106D08: .4byte gUnknown_3005B60 +_08106D0C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08106D20 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_08106D20: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + adds r0, r4, #0 + bl sub_080A34E4 +_08106D40: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08106BF8 + + thumb_func_start sub_08106D48 +sub_08106D48: @ 0x08106D48 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08106DB8 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08106D8A + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_08106D8A: + ldr r0, _08106DBC + movs r1, #0 + strh r1, [r0] + ldr r4, _08106DC0 + strh r1, [r4] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + mov r0, sp + bl sub_080A63F8 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08106DC8 + ldr r1, _08106DC4 + b _08106DDA + .align 2, 0 +_08106DB8: .4byte 0x00003F42 +_08106DBC: .4byte gUnknown_2022ACC +_08106DC0: .4byte gUnknown_2022ACE +_08106DC4: .4byte gUnknown_8D93914 +_08106DC8: + ldr r0, _08106DE4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08106DEC + ldr r1, _08106DE8 +_08106DDA: + mov r0, sp + movs r2, #0 + bl sub_080A6628 + b _08106DF6 + .align 2, 0 +_08106DE4: .4byte gUnknown_20380D7 +_08106DE8: .4byte gUnknown_8D9354C +_08106DEC: + ldr r1, _08106E28 + mov r0, sp + movs r2, #0 + bl sub_080A6628 +_08106DF6: + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08106E2C + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _08106E30 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r1, _08106E34 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08106E38 + str r1, [r0] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106E28: .4byte gUnknown_8D93730 +_08106E2C: .4byte gUnknown_8C24A9C +_08106E30: .4byte gUnknown_8C24A74 +_08106E34: .4byte gUnknown_3005B60 +_08106E38: .4byte sub_08106E3C + thumb_func_end sub_08106D48 + + thumb_func_start sub_08106E3C +sub_08106E3C: @ 0x08106E3C + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08106E64 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x20 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bls _08106E5A + b _08106F80 +_08106E5A: + lsls r0, r0, #2 + ldr r1, _08106E68 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08106E64: .4byte gUnknown_3005B60 +_08106E68: .4byte _08106E6C +_08106E6C: @ jump table + .4byte _08106E80 @ case 0 + .4byte _08106EC4 @ case 1 + .4byte _08106EE6 @ case 2 + .4byte _08106F2A @ case 3 + .4byte _08106F4C @ case 4 +_08106E80: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _08106F80 + strh r5, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + adds r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0xe + bne _08106F80 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x1e] + b _08106F80 +_08106EC4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _08106F80 + movs r0, #0xe + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + b _08106F80 +_08106EE6: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _08106F80 + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + subs r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _08106F80 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r1, [r4, #0x1e] + b _08106F80 +_08106F2A: + mov r0, sp + bl sub_080A63F8 + movs r0, #1 + bl sub_080A6530 + movs r0, #2 + bl sub_080A6530 + ldr r0, _08106F88 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] +_08106F4C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08106F60 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_08106F60: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + adds r0, r4, #0 + bl sub_080A34E4 +_08106F80: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106F88: .4byte gUnknown_3005B60 + thumb_func_end sub_08106E3C + + thumb_func_start sub_08106F8C +sub_08106F8C: @ 0x08106F8C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08106FE0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + 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, _08106FE4 + ldrh r0, [r1] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + strh r0, [r4, #0x30] + ldrb r0, [r5] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x3c] + ldr r1, _08106FE8 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08106FE0: .4byte gUnknown_20380D6 +_08106FE4: .4byte gUnknown_20380BE +_08106FE8: .4byte sub_08106FEC + thumb_func_end sub_08106F8C + + thumb_func_start sub_08106FEC +sub_08106FEC: @ 0x08106FEC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7f + bhi _08107002 + ldrh r0, [r4, #0x3c] + adds r0, #1 + b _08107006 +_08107002: + ldrh r0, [r4, #0x3c] + subs r0, #1 +_08107006: + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r2, #0x30 + ldrsh r0, [r4, r2] + ldrh r1, [r4, #0x34] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #9 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + movs r3, #0x38 + ldrsh r2, [r4, r3] + cmp r2, #0 + beq _08107078 + cmp r2, #1 + bne _081070A8 + ldr r1, _08107070 + adds r0, r1, #0 + ldrh r2, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldr r3, _08107074 + adds r0, r3, #0 + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _081070A8 + movs r0, #2 + strh r0, [r4, #0x38] + b _081070B8 + .align 2, 0 +_08107070: .4byte 0xFFFFFC00 +_08107074: .4byte 0xFFFFFF00 +_08107078: + movs r3, #0x80 + lsls r3, r3, #3 + adds r0, r3, #0 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _081070A8 + strh r2, [r4, #0x36] + movs r0, #1 + strh r0, [r4, #0x38] +_081070A8: + ldr r0, _081070C0 + ldrh r1, [r0, #0xe] + ldr r0, _081070C4 + cmp r1, r0 + bne _081070B8 + adds r0, r4, #0 + bl sub_080A34C4 +_081070B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081070C0: .4byte gUnknown_20380BE +_081070C4: .4byte 0x0000FFFF + thumb_func_end sub_08106FEC + + thumb_func_start sub_081070C8 +sub_081070C8: @ 0x081070C8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08107110 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r4, _08107114 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl sub_0806EFB8 + strh r0, [r5, #0x2e] + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #7 + bl sub_0806EFD4 + strh r0, [r5, #0x30] + ldr r0, _08107118 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08107110: .4byte gUnknown_20380D6 +_08107114: .4byte gUnknown_20380BE +_08107118: .4byte sub_0810711C + thumb_func_end sub_081070C8 + + thumb_func_start sub_0810711C +sub_0810711C: @ 0x0810711C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x30] + ldrh r3, [r2, #0x26] + adds r0, r0, r3 + strh r0, [r2, #0x26] + movs r1, #0x20 + ldrsh r0, [r2, r1] + movs r3, #0x24 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + adds r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #1 + cmp r0, r1 + bhi _0810715A + movs r0, #0x22 + ldrsh r1, [r2, r0] + movs r3, #0x26 + ldrsh r0, [r2, r3] + adds r1, r1, r0 + cmp r1, #0xa0 + bgt _0810715A + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _08107160 +_0810715A: + adds r0, r2, #0 + bl sub_080A34C4 +_08107160: + pop {r0} + bx r0 + thumb_func_end sub_0810711C + + thumb_func_start sub_08107164 +sub_08107164: @ 0x08107164 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x30] + ldrh r3, [r2, #0x26] + adds r0, r0, r3 + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x34] + adds r1, r0, #1 + strh r1, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08107190 + adds r0, r2, #0 + bl sub_080A34C4 +_08107190: + pop {r0} + bx r0 + thumb_func_end sub_08107164 + + thumb_func_start sub_08107194 +sub_08107194: @ 0x08107194 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081071E0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r4, _081071E4 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl sub_0806EFB8 + strh r0, [r5, #0x2e] + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #7 + bl sub_0806EFD4 + strh r0, [r5, #0x30] + ldrh r0, [r4, #2] + strh r0, [r5, #0x32] + ldr r0, _081071E8 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081071E0: .4byte gUnknown_20380D6 +_081071E4: .4byte gUnknown_20380BE +_081071E8: .4byte sub_08107164 + thumb_func_end sub_08107194 + + thumb_func_start sub_081071EC +sub_081071EC: @ 0x081071EC + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08107202 + adds r0, r2, #0 + bl sub_080A34C4 +_08107202: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081071EC + + thumb_func_start sub_08107208 +sub_08107208: @ 0x08107208 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0810721C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810721C: .4byte sub_081071EC + thumb_func_end sub_08107208 + + thumb_func_start sub_08107220 +sub_08107220: @ 0x08107220 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810723E + ldr r0, _081072B0 + ldrh r1, [r0] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + strh r1, [r4, #0x20] + ldrh r0, [r0, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_0810723E: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r2, #0x2e + ldrsh r1, [r4, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r5, r0, #1 + movs r0, #0xff + ands r5, r0 + adds r0, r5, #0 + movs r1, #0x50 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x4f + bgt _08107282 + adds r0, r5, #0 + movs r1, #0x50 + bl sub_0806EFD4 + movs r2, #0x2e + ldrsh r1, [r4, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + asrs r1, r1, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + adds r1, r1, r0 + strh r1, [r4, #0x26] +_08107282: + movs r0, #0x2e + ldrsh r2, [r4, r0] + cmp r2, #0x5a + ble _081072A0 + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 + strh r0, [r4, #0x24] +_081072A0: + cmp r2, #0x64 + ble _081072AA + adds r0, r4, #0 + bl sub_080A34C4 +_081072AA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081072B0: .4byte gUnknown_20380BE + thumb_func_end sub_08107220 + + thumb_func_start sub_081072B4 +sub_081072B4: @ 0x081072B4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r1, #5 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0x14 + ble _0810730A + adds r1, r0, #0 + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810730A: + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0x1e + ble _08107318 + adds r0, r4, #0 + bl sub_080A34C4 +_08107318: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081072B4 + + thumb_func_start sub_08107320 +sub_08107320: @ 0x08107320 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x2e] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08107344 + ldr r1, _08107340 + ldrh r0, [r1] + strh r0, [r4, #0x30] + ldrh r0, [r1, #2] + strh r0, [r4, #0x32] + adds r0, r2, #1 + strh r0, [r4, #0x2e] + b _08107398 + .align 2, 0 +_08107340: .4byte gUnknown_20380BE +_08107344: + ldrh r0, [r4, #0x30] + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + movs r5, #0 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x26] + ldrh r0, [r4, #0x34] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + cmp r0, #0x46 + ble _08107398 + ldr r0, _081073A0 + str r0, [r4, #0x1c] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, 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_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xb4 + bl __umodsi3 + strh r0, [r4, #0x34] +_08107398: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081073A0: .4byte sub_081072B4 + thumb_func_end sub_08107320 + + thumb_func_start sub_081073A4 +sub_081073A4: @ 0x081073A4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081073DE + ldr r1, _081074A0 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 + ldr r0, _081074A4 + ldrb r0, [r0] + bl sub_080A7BAC + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + movs r0, #1 + strh r0, [r4, #0x32] +_081073DE: + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x2e] + adds r0, 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 _081073F4 + adds r0, #0xff +_081073F4: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08107406 + movs r0, #0 + strh r0, [r4, #0x30] +_08107406: + movs r0, #0x30 + ldrsh r2, [r4, r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _08107414 + adds r0, #3 +_08107414: + asrs r0, r0, #2 + movs r1, #0x1e + subs r1, r1, r0 + adds r0, r2, #0 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r0, #0x30 + ldrsh r2, [r4, r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _08107430 + adds r0, #7 +_08107430: + asrs r0, r0, #3 + movs r1, #0xa + subs r1, r1, r0 + adds r0, r2, #0 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x80 + ble _08107454 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08107454 + ldr r0, _081074A8 + strh r0, [r4, #0x32] +_08107454: + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08107468 + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0 + bge _08107468 + movs r0, #1 + strh r0, [r4, #0x32] +_08107468: + ldrh r0, [r4, #0x34] + adds r1, r0, #1 + strh r1, [r4, #0x34] + subs r0, #9 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x46 + bls _081074AC + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _081074BA + .align 2, 0 +_081074A0: .4byte gUnknown_20380BE +_081074A4: .4byte gUnknown_20380D7 +_081074A8: .4byte 0x0000FFFF +_081074AC: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081074BA: + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0x5a + ble _081074C8 + adds r0, r4, #0 + bl sub_080A34C4 +_081074C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081073A4 + + thumb_func_start sub_081074D0 +sub_081074D0: @ 0x081074D0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08107504 + ldr r1, _08107500 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrb r1, [r1, #4] + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08107518 + .align 2, 0 +_08107500: .4byte gUnknown_20380BE +_08107504: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08107518 + adds r0, r4, #0 + bl sub_080A34C4 +_08107518: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081074D0 + + thumb_func_start sub_08107520 +sub_08107520: @ 0x08107520 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _08107538 + movs r2, #4 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0810753C + adds r0, r5, #0 + bl sub_080A34C4 + b _081075A0 + .align 2, 0 +_08107538: .4byte gUnknown_20380BE +_0810753C: + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0810754C + ldr r4, _08107548 + b _0810754E + .align 2, 0 +_08107548: .4byte gUnknown_20380D6 +_0810754C: + ldr r4, _0810757C +_0810754E: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r0, _08107580 + movs r2, #2 + ldrsh r1, [r0, r2] + adds r2, r0, #0 + cmp r1, #0 + bne _08107584 + ldrh r0, [r5, #0x20] + adds r0, #0x20 + b _08107588 + .align 2, 0 +_0810757C: .4byte gUnknown_20380D7 +_08107580: .4byte gUnknown_20380BE +_08107584: + ldrh r0, [r5, #0x20] + subs r0, #0x20 +_08107588: + strh r0, [r5, #0x20] + ldrh r0, [r2, #4] + strh r0, [r5, #0x2e] + ldrh r1, [r2, #2] + strh r1, [r5, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _081075A8 + str r0, [r5, #0x1c] +_081075A0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081075A8: .4byte sub_081075AC + thumb_func_end sub_08107520 + + thumb_func_start sub_081075AC +sub_081075AC: @ 0x081075AC + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081075DC + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081075D6 + ldrh r1, [r2, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 + b _081075DC +_081075D6: + adds r0, r2, #0 + bl sub_080A34C4 +_081075DC: + pop {r0} + bx r0 + thumb_func_end sub_081075AC + + thumb_func_start sub_081075E0 +sub_081075E0: @ 0x081075E0 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08107614 + ldrb r0, [r0] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _08107618 + adds r4, r4, r0 + ldr r2, _0810761C + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _08107620 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08107614: .4byte gUnknown_20380BE +_08107618: .4byte gUnknown_3005B60 +_0810761C: .4byte gUnknown_856F77C +_08107620: .4byte sub_08107624 + thumb_func_end sub_081075E0 + + thumb_func_start sub_08107624 +sub_08107624: @ 0x08107624 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0810764C + adds r0, r0, r1 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08107644 + adds r0, r4, #0 + bl sub_080A34E4 +_08107644: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810764C: .4byte gUnknown_3005B60 + thumb_func_end sub_08107624 + + thumb_func_start sub_08107650 +sub_08107650: @ 0x08107650 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _08107664 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810766C + ldr r0, _08107668 + b _0810766E + .align 2, 0 +_08107664: .4byte gUnknown_20380BE +_08107668: .4byte gUnknown_20380D6 +_0810766C: + ldr r0, _08107704 +_0810766E: + ldrb r6, [r0] + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08107688 + ldr r1, _08107708 + movs r2, #2 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_08107688: + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r7, _08107708 + lsrs r0, r0, #0x18 + ldrh r3, [r7, #2] + adds r0, r0, r3 + movs r4, #0 + strh r0, [r5, #0x20] + adds r0, r6, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r7, #4] + adds r0, r0, r1 + strh r0, [r5, #0x22] + strh r4, [r5, #0x2e] + ldrh r1, [r5, #0x20] + lsls r1, r1, #3 + strh r1, [r5, #0x30] + lsls r0, r0, #3 + strh r0, [r5, #0x32] + movs r2, #2 + ldrsh r0, [r7, r2] + lsls r0, r0, #3 + cmp r0, #0 + bge _081076C8 + adds r0, #7 +_081076C8: + asrs r0, r0, #3 + strh r0, [r5, #0x34] + movs r3, #4 + ldrsh r0, [r7, r3] + lsls r0, r0, #3 + cmp r0, #0 + bge _081076D8 + adds r0, #7 +_081076D8: + asrs r0, r0, #3 + strh r0, [r5, #0x36] + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + movs r3, #6 + ldrsh r0, [r7, r3] + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r3, _0810770C + adds r0, r3, #0 + ands r1, r0 + ldr r0, _08107710 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + ldr r0, _08107714 + str r0, [r5, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08107704: .4byte gUnknown_20380D7 +_08107708: .4byte gUnknown_20380BE +_0810770C: .4byte 0x000003FF +_08107710: .4byte 0xFFFFFC00 +_08107714: .4byte sub_08107718 + thumb_func_end sub_08107650 + + thumb_func_start sub_08107718 +sub_08107718: @ 0x08107718 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x34] + ldrh r1, [r2, #0x30] + adds r0, r0, r1 + strh r0, [r2, #0x30] + ldrh r1, [r2, #0x36] + ldrh r3, [r2, #0x32] + adds r1, r1, r3 + strh r1, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x13 + strh r1, [r2, #0x22] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _0810774C + adds r0, r2, #0 + bl sub_080A34C4 +_0810774C: + pop {r0} + bx r0 + thumb_func_end sub_08107718 + + thumb_func_start sub_08107750 +sub_08107750: @ 0x08107750 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08107772 + ldr r0, _081077AC + ldrh r1, [r0] + movs r0, #0x78 + subs r0, r0, r1 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08107772: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x30 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08107790 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + movs r1, #0 + bl sub_080A6DD4 +_08107790: + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x30 + ldrsh r0, [r4, r2] + adds r0, #0x50 + cmp r1, r0 + bne _081077A4 + adds r0, r4, #0 + bl sub_080A34C4 +_081077A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081077AC: .4byte gUnknown_20380BE + thumb_func_end sub_08107750 + + thumb_func_start sub_081077B0 +sub_081077B0: @ 0x081077B0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _081077DE + movs r5, #0x78 + strh r5, [r6, #0x20] + ldr r4, _08107860 + movs r2, #0 + ldrsh r0, [r4, r2] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + subs r0, #0xf + strh r0, [r6, #0x22] + ldrb r1, [r4, #2] + adds r0, r6, #0 + bl sub_08007EC0 + strh r5, [r6, #0x38] + ldrh r0, [r4, #4] + strh r0, [r6, #0x34] +_081077DE: + ldrh r0, [r6, #0x2e] + adds r0, #1 + movs r5, #0 + strh r0, [r6, #0x2e] + movs r1, #0x2e + ldrsh r0, [r6, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r6, #0x30] + movs r2, #0x2e + ldrsh r0, [r6, r2] + lsls r4, r0, #1 + adds r4, r4, r0 + ldrh r0, [r6, #0x34] + adds r4, 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_0806EFD4 + strh r0, [r6, #0x24] + adds r0, r4, #0 + movs r1, #0xa + bl sub_0806EFB8 + adds r4, r0, #0 + movs r1, #0x3a + ldrsh r0, [r6, r1] + movs r1, #4 + bl sub_0806EFD4 + ldrh r2, [r6, #0x30] + adds r4, r4, r2 + adds r0, r0, r4 + strh r0, [r6, #0x26] + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r2, #0x38 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _0810785A + ldr r0, _08107864 + str r0, [r6, #0x1c] + strh r5, [r6, #0x2e] + adds r0, r6, #0 + bl sub_080A6230 + movs r0, #5 + strh r0, [r6, #0x32] + strh r5, [r6, #0x36] + strh r5, [r6, #0x34] + adds r0, r6, #0 + movs r1, #1 + bl sub_08007F70 +_0810785A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08107860: .4byte gUnknown_20380BE +_08107864: .4byte sub_08107868 + thumb_func_end sub_081077B0 + + thumb_func_start sub_08107868 +sub_08107868: @ 0x08107868 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + ble _08107882 + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, _08107888 + str r0, [r1, #0x1c] +_08107882: + pop {r0} + bx r0 + .align 2, 0 +_08107888: .4byte sub_0810788C + thumb_func_end sub_08107868 + + thumb_func_start sub_0810788C +sub_0810788C: @ 0x0810788C + 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, #1 + strh r1, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x30 + ble _081078B6 + lsls r0, r1, #0x10 + cmp r0, #0 + ble _081078B6 + ldrh r0, [r4, #0x36] + subs r1, r0, #5 + strh r1, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x36] +_081078B6: + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _081078E8 + movs r2, #0x32 + ldrsh r1, [r4, r2] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + bl sub_080A34C4 +_081078E8: + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #4 + bne _081078F6 + adds r0, r4, #0 + bl sub_080A34C4 +_081078F6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810788C + + thumb_func_start sub_081078FC +sub_081078FC: @ 0x081078FC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08107940 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08107948 + ldr r4, _08107944 + ldrb r1, [r4] + movs r0, #2 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107948 + ldrb r0, [r4] + adds r2, r5, #0 + adds r2, #0x20 + adds r3, r5, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC + ldrh r0, [r5, #0x22] + adds r0, #0x28 + strh r0, [r5, #0x22] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007F70 + b _08107968 + .align 2, 0 +_08107940: .4byte gUnknown_2022C90 +_08107944: .4byte gUnknown_20380D6 +_08107948: + ldr r4, _08107988 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x28 + strh r0, [r5, #0x22] +_08107968: + 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, _0810798C + str r0, [r5, #0x1c] + ldr r1, _08107990 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08107988: .4byte gUnknown_20380D6 +_0810798C: .4byte sub_080A67B4 +_08107990: .4byte sub_080A34C4 + thumb_func_end sub_081078FC + + thumb_func_start sub_08107994 +sub_08107994: @ 0x08107994 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081079B0 + ldr r1, _081079B4 + ldr r1, [r1] + ldrb r2, [r1, #0x10] + movs r1, #1 + ands r1, r2 + strh r1, [r3, #0xe] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_081079B0: .4byte gUnknown_20380BE +_081079B4: .4byte gUnknown_20380A0 + thumb_func_end sub_08107994 + + thumb_func_start sub_081079B8 +sub_081079B8: @ 0x081079B8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081079D0 + ldr r1, _081079D4 + ldr r1, [r1] + ldrb r1, [r1, #0x10] + strh r1, [r2, #0xe] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_081079D0: .4byte gUnknown_20380BE +_081079D4: .4byte gUnknown_20380A0 + thumb_func_end sub_081079B8 + + thumb_func_start sub_081079D8 +sub_081079D8: @ 0x081079D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _08107A60 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08107A00 + ldr r1, _08107A64 + ldrh r0, [r1] + strh r0, [r5, #0xa] + ldrh r0, [r1, #2] + strh r0, [r5, #0xc] + ldrh r0, [r1, #4] + strh r0, [r5, #0xe] +_08107A00: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r2, #8 + ldrsh r0, [r5, r2] + movs r2, #0xc + ldrsh r1, [r5, r2] + bl __modsi3 + cmp r0, #1 + bne _08107A48 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf0 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x50 + bl __umodsi3 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _08107A68 + adds r1, r4, #0 + movs r3, #4 + bl sub_08006B0C +_08107A48: + movs r0, #8 + ldrsh r1, [r5, r0] + movs r2, #0xe + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _08107A5A + adds r0, r6, #0 + bl sub_080A34E4 +_08107A5A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08107A60: .4byte gUnknown_3005B60 +_08107A64: .4byte gUnknown_20380BE +_08107A68: .4byte gUnknown_8570C04 + thumb_func_end sub_081079D8 + + thumb_func_start sub_08107A6C +sub_08107A6C: @ 0x08107A6C + ldr r1, _08107A74 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08107A74: .4byte sub_08107A78 + thumb_func_end sub_08107A6C + + thumb_func_start sub_08107A78 +sub_08107A78: @ 0x08107A78 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + bgt _08107A96 + ldrh r0, [r2, #0x24] + adds r0, #1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x26] + adds r0, #4 + strh r0, [r2, #0x26] +_08107A96: + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08107AAA + adds r0, r2, #0 + bl sub_08006E00 +_08107AAA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08107A78 + + thumb_func_start sub_08107AB0 +sub_08107AB0: @ 0x08107AB0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r5, _08107AD8 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107AE0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08107ADC + ldrh r1, [r4] + subs r0, r0, r1 + b _08107AF2 + .align 2, 0 +_08107AD8: .4byte gUnknown_20380D6 +_08107ADC: .4byte gUnknown_20380BE +_08107AE0: + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _08107BB8 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 +_08107AF2: + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #2] + adds r0, 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, _08107BBC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107B28 + ldr r1, _08107BB8 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_08107B28: + ldr r5, _08107BB8 + ldrh r0, [r5, #0xc] + strh r0, [r6, #0x2e] + ldrh r0, [r6, #0x20] + strh r0, [r6, #0x30] + ldr r4, _08107BC0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x32] + ldrh r0, [r6, #0x22] + strh r0, [r6, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x36] + adds r0, r6, #0 + bl sub_080A671C + ldr r0, _08107BC4 + bl sub_0806F0C4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + strh r4, [r6, #0x38] + ldrb r0, [r5, #8] + movs r2, #4 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + ldrh r1, [r6, #0x20] + subs r1, r1, r0 + strh r1, [r6, #0x20] + ldrb r0, [r5, #8] + movs r2, #6 + ldrsh r1, [r5, r2] + bl sub_0806EFD4 + ldrh r1, [r6, #0x22] + subs r1, r1, r0 + strh r1, [r6, #0x22] + ldr r0, _08107BC8 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r5, #4] + strh r0, [r1, #0x2e] + ldrh r0, [r5, #6] + strh r0, [r1, #0x30] + ldrh r0, [r5, #0xa] + strh r0, [r1, #0x32] + ldrb r0, [r5, #8] + lsls r0, r0, #8 + strh r0, [r1, #0x34] + ldrh r0, [r5, #0xc] + strh r0, [r1, #0x36] + ldr r1, _08107BCC + str r1, [r6, #0x1c] + adds r0, r6, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08107BB8: .4byte gUnknown_20380BE +_08107BBC: .4byte gUnknown_20380D6 +_08107BC0: .4byte gUnknown_20380D7 +_08107BC4: .4byte sub_08007140 +_08107BC8: .4byte gUnknown_20205AC +_08107BCC: .4byte sub_08107BD0 + thumb_func_end sub_08107AB0 + + thumb_func_start sub_08107BD0 +sub_08107BD0: @ 0x08107BD0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + ldrh r1, [r5, #0x38] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08107C38 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r7, r0, r2 + ldrh r4, [r7, #0x36] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrh r0, [r7, #0x34] + mov r8, r0 + movs r0, #1 + strh r0, [r5, #0x2e] + adds r0, r5, #0 + bl sub_080A6804 + mov r1, r8 + lsrs r6, r1, #8 + movs r0, #0x2e + ldrsh r1, [r7, r0] + adds r0, r6, #0 + bl sub_0806EFB8 + ldrh r1, [r5, #0x24] + adds r0, r0, r1 + strh r0, [r5, #0x24] + movs r0, #0x30 + ldrsh r1, [r7, r0] + adds r0, r6, #0 + bl sub_0806EFD4 + ldrh r1, [r5, #0x26] + adds r0, r0, r1 + strh r0, [r5, #0x26] + ldrh r0, [r7, #0x32] + mov r1, r8 + adds r1, r1, r0 + strh r1, [r7, #0x34] + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + cmp r4, #0 + beq _08107C3C + strh r4, [r7, #0x36] + b _08107C46 + .align 2, 0 +_08107C38: .4byte gUnknown_20205AC +_08107C3C: + ldr r0, _08107C54 + str r0, [r5, #0x1c] + adds r0, r7, #0 + bl sub_08006E00 +_08107C46: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08107C54: .4byte sub_08107C58 + thumb_func_end sub_08107BD0 + + thumb_func_start sub_08107C58 +sub_08107C58: @ 0x08107C58 + push {lr} + adds r3, r0, #0 + adds r3, #0x2c + ldrb r2, [r3] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3] + ldr r1, _08107C78 + str r1, [r0, #0x1c] + ldr r1, _08107C7C + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08107C78: .4byte sub_080A60A0 +_08107C7C: .4byte sub_08107C80 + thumb_func_end sub_08107C58 + + thumb_func_start sub_08107C80 +sub_08107C80: @ 0x08107C80 + push {lr} + movs r1, #0xa + strh r1, [r0, #0x2e] + ldr r1, _08107C94 + str r1, [r0, #0x1c] + ldr r1, _08107C98 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_08107C94: .4byte sub_080A5D78 +_08107C98: .4byte sub_080A6014 + thumb_func_end sub_08107C80 + + thumb_func_start sub_08107C9C +sub_08107C9C: @ 0x08107C9C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _08107CC4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107CCC + ldr r1, _08107CC8 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r7, r1, #0 + b _08107CD2 + .align 2, 0 +_08107CC4: .4byte gUnknown_20380D6 +_08107CC8: .4byte gUnknown_20380BE +_08107CCC: + ldr r0, _08107D28 + ldrh r6, [r0, #4] + adds r7, r0, #0 +_08107CD2: + ldrh r0, [r7, #8] + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldr r4, _08107D2C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r7, [r7, #6] + adds r0, r0, r7 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + ldr r0, _08107D30 + 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, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08107D28: .4byte gUnknown_20380BE +_08107D2C: .4byte gUnknown_20380D7 +_08107D30: .4byte sub_08107D34 + thumb_func_end sub_08107C9C + + thumb_func_start sub_08107D34 +sub_08107D34: @ 0x08107D34 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08107D70 + ldrh r1, [r0, #0xe] + ldr r0, _08107D74 + cmp r1, r0 + bne _08107D56 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + adds r2, r4, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] +_08107D56: + adds r0, r4, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107D68 + adds r0, r4, #0 + bl sub_080A34C4 +_08107D68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08107D70: .4byte gUnknown_20380BE +_08107D74: .4byte 0x0000FFFF + thumb_func_end sub_08107D34 + + thumb_func_start sub_08107D78 +sub_08107D78: @ 0x08107D78 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08107DAC + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldr r0, _08107DB0 + ldrh r0, [r0] + strh r0, [r4, #8] + ldr r0, _08107DB4 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r4, #0xc] + ldr r0, _08107DB8 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08107DAC: .4byte gUnknown_3005B60 +_08107DB0: .4byte gUnknown_20380BE +_08107DB4: .4byte 0x0000279C +_08107DB8: .4byte sub_08107DBC + thumb_func_end sub_08107D78 + + thumb_func_start sub_08107DBC +sub_08107DBC: @ 0x08107DBC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08107E34 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2, #0x1c] + adds r0, #1 + strh r0, [r2, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov ip, r1 + cmp r0, #3 + bne _08107E0E + movs r0, #0 + strh r0, [r2, #0x1c] + ldrh r0, [r2, #0xc] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _08107E38 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r6, [r0] + adds r7, r1, #0 + adds r3, r0, #2 + movs r1, #6 + adds r2, r0, #0 +_08107DF8: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _08107DF8 + adds r0, r5, #7 + lsls r0, r0, #1 + adds r0, r0, r7 + strh r6, [r0] +_08107E0E: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, ip + ldrh r1, [r0, #0x1e] + adds r1, #1 + strh r1, [r0, #0x1e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #8 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _08107E2E + adds r0, r4, #0 + bl sub_080A34E4 +_08107E2E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08107E34: .4byte gUnknown_3005B60 +_08107E38: .4byte gUnknown_20377B4 + thumb_func_end sub_08107DBC + + thumb_func_start sub_08107E3C +sub_08107E3C: @ 0x08107E3C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + movs r0, #0x1e + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldr r4, _08107EA4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0xd2 + lsls r0, r0, #8 + bl __divsi3 + strh r0, [r5, #0x38] + ldr r0, _08107EA8 + ldrh r2, [r0, #6] + strh r2, [r5, #0x3c] + ldrh r1, [r0, #0xe] + movs r3, #0xe + ldrsh r0, [r0, r3] + cmp r0, #0x7f + ble _08107EAC + adds r0, r1, #0 + subs r0, #0x7f + lsls r0, r0, #8 + strh r0, [r5, #0x3a] + rsbs r0, r2, #0 + strh r0, [r5, #0x3c] + b _08107EB0 + .align 2, 0 +_08107EA4: .4byte gUnknown_20380D7 +_08107EA8: .4byte gUnknown_20380BE +_08107EAC: + lsls r0, r1, #8 + strh r0, [r5, #0x3a] +_08107EB0: + ldr r1, _08107EC0 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08107EC0: .4byte sub_08107EC4 + thumb_func_end sub_08107E3C + + thumb_func_start sub_08107EC4 +sub_08107EC4: @ 0x08107EC4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08107ED8 + adds r0, r4, #0 + bl sub_080A34C4 +_08107ED8: + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + movs r2, #0x3a + ldrsh r0, [r4, r2] + movs r2, #0x38 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + asrs r0, r0, #8 + cmp r0, #0x7f + ble _08107F08 + movs r0, #0 + strh r0, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + rsbs r0, r0, #0 + strh r0, [r4, #0x3c] + b _08107F10 +_08107F08: + ldrh r0, [r4, #0x38] + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r4, #0x3a] +_08107F10: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08107EC4 + + thumb_func_start sub_08107F18 +sub_08107F18: @ 0x08107F18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08107F38 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r3, _08107F3C + ldrh r0, [r3] + movs r2, #0 + strh r0, [r1, #8] + strh r2, [r3, #0xe] + ldr r0, _08107F40 + str r0, [r1] + bx lr + .align 2, 0 +_08107F38: .4byte gUnknown_3005B60 +_08107F3C: .4byte gUnknown_20380BE +_08107F40: .4byte sub_08107F44 + thumb_func_end sub_08107F18 + + thumb_func_start sub_08107F44 +sub_08107F44: @ 0x08107F44 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08107F78 + ldrh r0, [r2, #0xe] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r2, #0xe] + ldr r1, _08107F7C + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + subs r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _08107F72 + adds r0, r3, #0 + bl sub_080A34E4 +_08107F72: + pop {r0} + bx r0 + .align 2, 0 +_08107F78: .4byte gUnknown_20380BE +_08107F7C: .4byte gUnknown_3005B60 + thumb_func_end sub_08107F44 + + thumb_func_start sub_08107F80 +sub_08107F80: @ 0x08107F80 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r7, _08107FCC + ldrb r0, [r7] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r7] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r6, _08107FD0 + strh r6, [r4, #0x26] + ldrb r0, [r7] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08107FDA + ldrb r0, [r7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08107FD4 + movs r0, #0xa + strh r0, [r4, #0x24] + b _08107FDC + .align 2, 0 +_08107FCC: .4byte gUnknown_20380D6 +_08107FD0: .4byte 0x0000FFF6 +_08107FD4: + strh r6, [r4, #0x24] + subs r0, r5, #2 + b _08107FDE +_08107FDA: + strh r6, [r4, #0x24] +_08107FDC: + adds r0, r5, #2 +_08107FDE: + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + ldr r0, _08107FF0 + str r0, [r4, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08107FF0: .4byte sub_08107FF4 + thumb_func_end sub_08107F80 + + thumb_func_start sub_08107FF4 +sub_08107FF4: @ 0x08107FF4 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810800A + adds r0, r2, #0 + bl sub_080A34C4 +_0810800A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08107FF4 + + thumb_func_start sub_08108010 +sub_08108010: @ 0x08108010 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r5, _081080D0 + ldrb r0, [r5] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _081080D4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _0810805A + ldr r4, _081080D8 + movs r1, #0 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4] + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08108052 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810805A +_08108052: + movs r1, #0 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4] +_0810805A: + ldr r5, _081080D8 + movs r1, #0xa + ldrsh r0, [r5, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0 + cmp r0, #0 + bne _0810806E + movs r1, #1 +_0810806E: + ldrb r0, [r5, #0xa] + movs r7, #1 + cmp r0, #0 + bne _08108078 + movs r7, #3 +_08108078: + adds r0, r6, #0 + bl sub_080A6294 + ldr r0, _081080D0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08108092 + ldrh r0, [r5, #4] + rsbs r0, r0, #0 + strh r0, [r5, #4] +_08108092: + ldrh r0, [r5, #8] + strh r0, [r6, #0x2e] + ldr r4, _081080D4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r4] + adds r1, r7, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5, #6] + adds r0, r0, r5 + strh r0, [r6, #0x36] + ldr r0, _081080DC + str r0, [r6, #0x1c] + ldr r1, _081080E0 + adds r0, r6, #0 + bl sub_080A5B9C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081080D0: .4byte gUnknown_20380D6 +_081080D4: .4byte gUnknown_20380D7 +_081080D8: .4byte gUnknown_20380BE +_081080DC: .4byte sub_080A67B4 +_081080E0: .4byte sub_080A34C4 + thumb_func_end sub_08108010 + + thumb_func_start sub_081080E4 +sub_081080E4: @ 0x081080E4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r0, _08108114 + ldrh r1, [r0, #8] + strh r1, [r4, #0x2e] + ldrh r0, [r0, #4] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + adds r1, r1, r0 + strh r1, [r4, #0x36] + ldr r0, _08108118 + str r0, [r4, #0x1c] + ldr r1, _0810811C + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108114: .4byte gUnknown_20380BE +_08108118: .4byte sub_080A67B4 +_0810811C: .4byte sub_080A34C4 + thumb_func_end sub_081080E4 + + thumb_func_start sub_08108120 +sub_08108120: @ 0x08108120 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08108138 + movs r1, #6 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0810813C + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + b _08108144 + .align 2, 0 +_08108138: .4byte gUnknown_20380BE +_0810813C: + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6294 +_08108144: + ldr r0, _08108154 + ldrh r0, [r0, #4] + strh r0, [r4, #0x3c] + ldr r0, _08108158 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108154: .4byte gUnknown_20380BE +_08108158: .4byte sub_0810815C + thumb_func_end sub_08108120 + + thumb_func_start sub_0810815C +sub_0810815C: @ 0x0810815C + 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, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #0x30 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3c] + subs r0, #1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810819C + adds r0, r4, #0 + bl sub_080A34C4 +_0810819C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810815C + + thumb_func_start sub_081081A4 +sub_081081A4: @ 0x081081A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r1, _08108214 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #1 + bl sub_0811887C + mov r0, sp + bl sub_080A63F8 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08108230 + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C + ldr r0, _08108218 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08108220 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0810821C + bl sub_080A6610 + b _0810823A + .align 2, 0 +_08108214: .4byte 0x00003F42 +_08108218: .4byte gUnknown_20380D6 +_0810821C: .4byte gUnknown_8D95DB4 +_08108220: + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0810822C + bl sub_080A6610 + b _0810823A + .align 2, 0 +_0810822C: .4byte gUnknown_8D96084 +_08108230: + ldr r1, _08108264 + mov r0, sp + movs r2, #1 + bl sub_080A6628 +_0810823A: + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08108268 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _0810826C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08108274 + ldr r0, _08108270 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + b _08108282 + .align 2, 0 +_08108264: .4byte gUnknown_8D96358 +_08108268: .4byte gUnknown_8D94A6C +_0810826C: .4byte gUnknown_20380BE +_08108270: .4byte gUnknown_8D95D8C +_08108274: + ldr r0, _081082EC + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC +_08108282: + ldr r0, _081082F0 + ldr r4, _081082F4 + mov r2, sl + lsls r5, r2, #2 + adds r1, r5, r2 + lsls r1, r1, #3 + adds r6, r1, r4 + ldrb r1, [r6, #7] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #0 + mov sb, r0 + mov r1, r8 + strh r1, [r6, #0x26] + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r7, r0, r4 + mov r0, sb + strh r0, [r7, #8] + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r7, #0xa] + strh r0, [r7, #0xc] + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _08108304 + ldr r1, _081082F8 + adds r0, r1, #0 + ldr r2, _081082FC + strh r0, [r2] + adds r1, #0x20 + adds r0, r1, #0 + ldr r2, _08108300 + strh r0, [r2] + movs r0, #2 + strh r0, [r6, #8] + movs r0, #1 + strh r0, [r6, #0xa] + mov r0, sb + strh r0, [r7, #0xe] + b _0810835E + .align 2, 0 +_081082EC: .4byte gUnknown_8D8FB50 +_081082F0: .4byte sub_081085A8 +_081082F4: .4byte gUnknown_3005B60 +_081082F8: .4byte 0x0000FFB0 +_081082FC: .4byte gUnknown_2022ACC +_08108300: .4byte gUnknown_2022ACE +_08108304: + ldr r0, _08108334 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _08108348 + ldr r2, _08108338 + adds r0, r2, #0 + ldr r2, _0810833C + strh r0, [r2] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + ldr r2, _08108340 + strh r0, [r2] + movs r0, #2 + strh r0, [r6, #8] + ldr r0, _08108344 + strh r0, [r6, #0xa] + strh r1, [r7, #0xe] + b _0810835E + .align 2, 0 +_08108334: .4byte gUnknown_20380D6 +_08108338: .4byte 0x0000FF20 +_0810833C: .4byte gUnknown_2022ACC +_08108340: .4byte gUnknown_2022ACE +_08108344: .4byte 0x0000FFFF +_08108348: + ldr r0, _08108390 + strh r4, [r0] + ldr r1, _08108394 + adds r0, r1, #0 + ldr r2, _08108398 + strh r0, [r2] + ldr r0, _0810839C + strh r0, [r6, #8] + movs r0, #1 + strh r0, [r6, #0xa] + strh r4, [r7, #0xe] +_0810835E: + ldr r0, _08108390 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r2, _08108398 + ldrh r1, [r2] + movs r0, #0x16 + bl sub_08001144 + ldr r1, _081083A0 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r2, #0xe + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _081083A4 + movs r0, #0x30 + strh r0, [r1, #0x10] + movs r0, #0x70 + b _081083A8 + .align 2, 0 +_08108390: .4byte gUnknown_2022ACC +_08108394: .4byte 0x0000FFD0 +_08108398: .4byte gUnknown_2022ACE +_0810839C: .4byte 0x0000FFFE +_081083A0: .4byte gUnknown_3005B60 +_081083A4: + movs r0, #0 + strh r0, [r1, #0x10] +_081083A8: + strh r0, [r1, #0x12] + ldr r1, _081083CC + mov r2, sl + adds r0, r5, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #0x14] + ldr r1, _081083D0 + str r1, [r0] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081083CC: .4byte gUnknown_3005B60 +_081083D0: .4byte sub_081083D4 + thumb_func_end sub_081081A4 + + thumb_func_start sub_081083D4 +sub_081083D4: @ 0x081083D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08108500 + ldr r2, _08108504 + ldr r0, _08108508 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #8] + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + ldrh r0, [r4, #0xa] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + mov r0, sp + bl sub_080A63F8 + ldrh r0, [r4, #0xa] + ldrh r3, [r4, #0xc] + adds r0, r0, r3 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08108468 + ldr r1, _0810850C + mov r0, sp + ldrb r0, [r0, #8] + lsls r0, r0, #4 + adds r0, #7 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r6, [r0] + movs r2, #6 + adds r7, r1, #0 + adds r3, r7, #0 + mov r4, sp +_0810842E: + ldrb r0, [r4, #8] + lsls r0, r0, #4 + adds r1, r2, #1 + adds r0, r0, r1 + lsls r1, r0, #1 + adds r1, r1, r3 + subs r0, #1 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0810842E + mov r0, sp + ldrb r0, [r0, #8] + lsls r0, r0, #4 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r7 + strh r6, [r0] + ldr r1, _08108508 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0x12] +_08108468: + ldr r1, _08108508 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r0, [r3, #0x14] + adds r0, #1 + strh r0, [r3, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r4, r1, #0 + adds r6, r2, #0 + cmp r0, #1 + ble _081084D6 + movs r0, #0 + strh r0, [r3, #0x14] + ldrh r0, [r3, #0xe] + adds r2, r0, #1 + strh r2, [r3, #0xe] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + bgt _081084B2 + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r1, #0xa] + ldrh r0, [r3, #0x10] + adds r0, #1 + strh r0, [r3, #0x10] +_081084B2: + movs r1, #0xe + ldrsh r0, [r3, r1] + cmp r0, #0x36 + ble _081084D6 + ldrh r2, [r3, #0x10] + subs r2, #1 + strh r2, [r3, #0x10] + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + movs r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r1, #0xa] +_081084D6: + adds r0, r6, r5 + lsls r0, r0, #3 + adds r2, r0, r4 + movs r3, #0x26 + ldrsh r1, [r2, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrh r0, [r0, #0xa] + movs r3, #0x1f + ands r3, r0 + cmp r3, #0 + bne _081084F8 + strh r3, [r2, #8] + ldr r0, _08108510 + str r0, [r2] +_081084F8: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08108500: .4byte gUnknown_2022ACC +_08108504: .4byte gUnknown_2022ACE +_08108508: .4byte gUnknown_3005B60 +_0810850C: .4byte gUnknown_20377B4 +_08108510: .4byte sub_08108514 + thumb_func_end sub_081083D4 + + thumb_func_start sub_08108514 +sub_08108514: @ 0x08108514 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r7, _0810854C + ldr r0, _08108550 + mov r8, r0 + ldr r6, _08108554 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r6 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08108558 + movs r0, #1 + bl sub_080A6530 + movs r0, #2 + bl sub_080A6530 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0810859A + .align 2, 0 +_0810854C: .4byte gUnknown_2022ACC +_08108550: .4byte gUnknown_2022ACE +_08108554: .4byte gUnknown_3005B60 +_08108558: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810856C + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_0810856C: + movs r0, #0 + strh r0, [r7] + mov r1, r8 + strh r0, [r1] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r6 + ldr r1, _081085A4 + strh r1, [r0, #0x26] + adds r0, r5, #0 + bl sub_080A34E4 +_0810859A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081085A4: .4byte 0x0000FFFF + thumb_func_end sub_08108514 + + thumb_func_start sub_081085A8 +sub_081085A8: @ 0x081085A8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _081085D0 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _081085C4 + b _081086FC +_081085C4: + cmp r0, #1 + bgt _081085D4 + cmp r0, #0 + beq _081085DC + b _08108872 + .align 2, 0 +_081085D0: .4byte gUnknown_3005B60 +_081085D4: + cmp r0, #2 + bne _081085DA + b _081087C8 +_081085DA: + b _08108872 +_081085DC: + movs r3, #0 + movs r2, #0x10 + ldrsh r0, [r4, r2] + ldr r1, _081086AC + mov ip, r1 + cmp r3, r0 + bge _0810861A + mov r7, ip + movs r5, #0xf0 + lsls r5, r5, #3 + add r5, ip + ldr r6, _081086B0 +_081085F4: + lsls r2, r3, #0x10 + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r3, r1, r7 + adds r1, 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, #1 + lsls r2, r2, #0x10 + lsrs r3, r2, #0x10 + asrs r2, r2, #0x10 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _081085F4 +_0810861A: + ldrh r3, [r4, #0x10] + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _08108654 + ldr r5, _081086AC + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 + ldr r7, _081086B0 +_08108632: + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r3, r1, r5 + adds r1, 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, #1 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _08108632 +_08108654: + ldrh r3, [r4, #0x12] + lsls r2, r3, #0x10 + asrs r0, r2, #0x10 + cmp r0, #0x9f + bgt _0810868A + ldr r5, _081086AC + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 + ldr r7, _081086B0 +_08108668: + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r3, r1, r5 + adds r1, 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, #1 + lsls r2, r2, #0x10 + lsrs r3, r2, #0x10 + lsls r2, r3, #0x10 + asrs r0, r2, #0x10 + cmp r0, #0x9f + ble _08108668 +_0810868A: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081086B4 + lsls r0, r3, #0x10 + asrs r0, r0, #0xf + mov r3, ip + adds r2, r0, r3 + movs r1, #0xf0 + lsls r1, r1, #3 + add r1, ip + adds r0, r0, r1 + ldrh r1, [r4, #0xa] + strh r1, [r0] + ldrh r0, [r4, #0xa] + b _081086CA + .align 2, 0 +_081086AC: .4byte gUnknown_20388C8 +_081086B0: .4byte 0x0000FFFF +_081086B4: + lsls r0, r3, #0x10 + asrs r0, r0, #0xf + mov r1, ip + adds r2, r0, r1 + movs r1, #0xf0 + lsls r1, r1, #3 + add r1, ip + adds r0, r0, r1 + ldrh r1, [r4, #0xc] + strh r1, [r0] + ldrh r0, [r4, #0xc] +_081086CA: + strh r0, [r2] + ldr r0, _081086F4 + str r0, [sp] + ldr r0, _081086F8 + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08108872 + .align 2, 0 +_081086F4: .4byte 0x04000052 +_081086F8: .4byte 0xA2600001 +_081086FC: + movs r2, #0xe + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _08108714 + ldrh r0, [r4, #0x10] + subs r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08108728 + strh r1, [r4, #0x10] + b _08108722 +_08108714: + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6f + ble _08108728 +_08108722: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08108728: + movs r3, #0 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _0810875C + ldr r6, _081087C0 + ldr r5, _081087C4 +_08108736: + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + lsls r3, r1, #1 + ldrb r2, [r5, #0x14] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #7 + adds r3, r3, r0 + adds r3, r3, r6 + ldrh r0, [r4, #0xc] + strh r0, [r3] + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _08108736 +_0810875C: + ldrh r3, [r4, #0x10] + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _08108790 + ldr r6, _081087C0 + ldr r5, _081087C4 +_0810876E: + asrs r3, r2, #0x10 + lsls r2, r3, #1 + ldrb r1, [r5, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r6 + ldrh r0, [r4, #0xa] + strh r0, [r2] + adds r3, #1 + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _0810876E +_08108790: + ldrh r3, [r4, #0x12] + lsls r1, r3, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + bgt _08108872 + ldr r6, _081087C0 + ldr r5, _081087C4 +_0810879E: + asrs r3, r1, #0x10 + lsls r2, r3, #1 + ldrb r1, [r5, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r6 + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r3, #1 + lsls r1, r3, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + ble _0810879E + b _08108872 + .align 2, 0 +_081087C0: .4byte gUnknown_20388C8 +_081087C4: .4byte gUnknown_20397C8 +_081087C8: + movs r3, #0 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _081087FC + ldr r6, _0810887C + ldr r5, _08108880 +_081087D6: + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + lsls r3, r1, #1 + ldrb r2, [r5, #0x14] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #7 + adds r3, r3, r0 + adds r3, r3, r6 + ldrh r0, [r4, #0xc] + strh r0, [r3] + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _081087D6 +_081087FC: + ldrh r3, [r4, #0x10] + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _08108830 + ldr r6, _0810887C + ldr r5, _08108880 +_0810880E: + asrs r3, r2, #0x10 + lsls r2, r3, #1 + ldrb r1, [r5, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r6 + ldrh r0, [r4, #0xa] + strh r0, [r2] + adds r3, #1 + lsls r2, r3, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _0810880E +_08108830: + ldrh r3, [r4, #0x12] + lsls r1, r3, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + bgt _0810885C + ldr r6, _0810887C + ldr r5, _08108880 +_0810883E: + asrs r3, r1, #0x10 + lsls r2, r3, #1 + ldrb r1, [r5, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r6 + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r3, #1 + lsls r1, r3, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + ble _0810883E +_0810885C: + movs r0, #0x26 + ldrsh r1, [r4, r0] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08108872 + bl sub_080B9710 + adds r0, r7, #0 + bl sub_080A8964 +_08108872: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810887C: .4byte gUnknown_20388C8 +_08108880: .4byte gUnknown_20397C8 + thumb_func_end sub_081085A8 + + thumb_func_start sub_08108884 +sub_08108884: @ 0x08108884 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #8 + ldr r3, _081088D8 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _081088DC + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + bl sub_0806F0A4 + movs r5, #0xff + ands r5, r0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r6, r0, #0 + orrs r5, r6 + bl sub_0806F0A4 + ldr r1, _081088E0 + ands r1, r0 + adds r0, r1, #0 + cmp r0, #0xff + ble _081088CA + subs r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_081088CA: + strh r5, [r4, #0x30] + strh r1, [r4, #0x32] + ldr r0, _081088E4 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081088D8: .4byte 0x000003FF +_081088DC: .4byte 0xFFFFFC00 +_081088E0: .4byte 0x000001FF +_081088E4: .4byte sub_081088E8 + thumb_func_end sub_08108884 + + thumb_func_start sub_081088E8 +sub_081088E8: @ 0x081088E8 + 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, r1, r4 + strh r1, [r2, #0x36] + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0810890C + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _08108910 +_0810890C: + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 +_08108910: + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _0810892E + adds r0, r2, #0 + bl sub_080A34C4 +_0810892E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081088E8 + + thumb_func_start sub_08108934 +sub_08108934: @ 0x08108934 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08108984 + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r2, _08108988 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x12] + bl sub_08108BD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080A6B38 + ldr r0, _0810898C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108984: .4byte gUnknown_3005B60 +_08108988: .4byte gUnknown_20205AC +_0810898C: .4byte sub_08108990 + thumb_func_end sub_08108934 + + thumb_func_start sub_08108990 +sub_08108990: @ 0x08108990 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081089B8 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #7 + bls _081089AC + b _08108BCA +_081089AC: + lsls r0, r0, #2 + ldr r1, _081089BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081089B8: .4byte gUnknown_3005B60 +_081089BC: .4byte _081089C0 +_081089C0: @ jump table + .4byte _081089E0 @ case 0 + .4byte _08108A06 @ case 1 + .4byte _08108A98 @ case 2 + .4byte _08108ACE @ case 3 + .4byte _08108AE2 @ case 4 + .4byte _08108AF0 @ case 5 + .4byte _08108B70 @ case 6 + .4byte _08108BBC @ case 7 +_081089E0: + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0x80 + lsls r3, r3, #1 + movs r0, #0xe0 + str r0, [sp] + movs r0, #0x80 + lsls r0, r0, #2 + str r0, [sp, #4] + movs r0, #0x20 + str r0, [sp, #8] + adds r0, r4, #0 + adds r2, r3, #0 + bl sub_080A7924 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08108A06: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08108A62 + movs r0, #0 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08108A50 + ldr r2, _08108A4C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strh r1, [r0, #0x24] + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #1 + strh r1, [r0, #0x22] + b _08108A62 + .align 2, 0 +_08108A4C: .4byte gUnknown_20205AC +_08108A50: + ldr r2, _08108A90 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08108A94 + strh r1, [r0, #0x24] +_08108A62: + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _08108A72 + b _08108BCA +_08108A72: + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7734 + ldr r2, _08108A90 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x24] + strh r5, [r4, #0xe] + b _08108BAC + .align 2, 0 +_08108A90: .4byte gUnknown_20205AC +_08108A94: .4byte 0x0000FFFD +_08108A98: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bgt _08108AA8 + b _08108BCA +_08108AA8: + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0x80 + lsls r3, r3, #2 + movs r0, #0xc0 + lsls r0, r0, #1 + str r0, [sp] + movs r0, #0xe0 + str r0, [sp, #4] + movs r0, #8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r2, #0xe0 + bl sub_080A7924 + movs r0, #0 + strh r0, [r4, #0xe] + b _08108BAE +_08108ACE: + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08108BCA + strh r0, [r4, #0xe] + strh r0, [r4, #0x10] + b _08108BAE +_08108AE2: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08108C58 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08108AF0: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08108BCA + movs r0, #0 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08108B28 + ldr r2, _08108B24 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #2 + b _08108B3A + .align 2, 0 +_08108B24: .4byte gUnknown_20205AC +_08108B28: + ldr r2, _08108B6C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #2 +_08108B3A: + strh r1, [r0, #0x26] + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0xa + bne _08108BCA + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0xc0 + lsls r2, r2, #1 + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r3, #0xe0 + bl sub_080A7924 + movs r0, #0 + strh r0, [r4, #0xe] + strh r0, [r4, #0x10] + b _08108BAE + .align 2, 0 +_08108B6C: .4byte gUnknown_20205AC +_08108B70: + ldr r6, _08108BB8 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r0, #0x22] + subs r1, #1 + strh r1, [r0, #0x22] + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08108BCA + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x22] +_08108BAC: + strh r5, [r4, #0x10] +_08108BAE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08108BCA + .align 2, 0 +_08108BB8: .4byte gUnknown_20205AC +_08108BBC: + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08108BCA + adds r0, r2, #0 + bl sub_080A34E4 +_08108BCA: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08108990 + + thumb_func_start sub_08108BD4 +sub_08108BD4: @ 0x08108BD4 + push {r4, r5, lr} + ldr r4, _08108BF8 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08108C08 + ldr r1, _08108BFC + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08108C00 + b _08108C18 + .align 2, 0 +_08108BF8: .4byte gUnknown_20380D6 +_08108BFC: .4byte gUnknown_2023D12 +_08108C00: .4byte gUnknown_2024190 +_08108C04: + adds r0, r2, #0 + b _08108C4A +_08108C08: + ldr r1, _08108C50 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08108C54 +_08108C18: + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsrs r4, r4, #0x12 + movs r2, #0 +_08108C36: + adds r1, r2, #1 + adds r0, r4, #0 + muls r0, r1, r0 + cmp r3, r0 + blt _08108C04 + lsls r0, r1, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _08108C36 + movs r0, #3 +_08108C4A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08108C50: .4byte gUnknown_2023D12 +_08108C54: .4byte gUnknown_20243E8 + thumb_func_end sub_08108BD4 + + thumb_func_start sub_08108C58 +sub_08108C58: @ 0x08108C58 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + ldr r4, _08108D60 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0xac + ldrb r0, [r4] + bl sub_080A7BAC + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + ldrh r1, [r7, #0xa] + movs r0, #4 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r0, #0 + bgt _08108CA8 + movs r1, #1 +_08108CA8: + movs r0, #0 + str r0, [sp, #4] + lsls r0, r1, #0x10 + mov sl, r8 + mov sb, r6 + mov r1, sl + lsls r1, r1, #4 + str r1, [sp, #0xc] + mov r1, sb + lsls r1, r1, #4 + str r1, [sp, #0x10] + asrs r0, r0, #0x10 + mov r8, r0 +_08108CC2: + ldr r0, _08108D64 + mov r1, sl + mov r2, sb + ldr r3, [sp, #8] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r6, r5, #0x10 + cmp r2, #0x40 + beq _08108D2A + ldr r1, _08108D68 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r1 + mov r0, sp + ldrh r0, [r0, #4] + 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, #0x10 + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0806EFD4 + strh r0, [r5, #0x36] + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0806EFB8 + strh r0, [r5, #0x38] + mov r1, sp + ldrh r1, [r1] + strh r1, [r5, #0x3a] + movs r0, #2 + strh r0, [r5, #0x3c] + ldrh r1, [r7, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08108D24 + adds r0, r5, #0 + bl sub_08108D6C +_08108D24: + ldrh r0, [r7, #0xc] + adds r0, #1 + strh r0, [r7, #0xc] +_08108D2A: + mov r1, r8 + lsls r0, r1, #1 + asrs r1, r6, #0x10 + adds r1, r1, r0 + lsls r1, r1, #0x10 + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r5, r0, #0x10 + ldr r1, [sp, #4] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + add r0, r8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + str r1, [sp, #4] + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _08108CC2 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08108D60: .4byte gUnknown_20380D6 +_08108D64: .4byte gUnknown_8570E4C +_08108D68: .4byte gUnknown_20205AC + thumb_func_end sub_08108C58 + + thumb_func_start sub_08108D6C +sub_08108D6C: @ 0x08108D6C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08108D7E + cmp r0, #1 + beq _08108DB4 + b _08108E0E +_08108D7E: + movs r2, #0x30 + ldrsh r0, [r4, r2] + movs r1, #6 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r0 + ldrh r0, [r4, #0x36] + adds r1, r1, r0 + strh r1, [r4, #0x36] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r0 + ldrh r2, [r4, #0x38] + adds r1, r1, r2 + strh r1, [r4, #0x38] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_08108DB4: + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x38] + ldrh r2, [r4, #0x34] + adds r1, r1, r2 + strh r1, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r4, #0x20] + lsls r1, r1, #0x10 + asrs r2, r1, #0x14 + strh r2, [r4, #0x22] + adds r0, #8 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _08108DEA + adds r1, r2, #0 + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _08108DEA + cmp r1, #0x78 + ble _08108E0E +_08108DEA: + ldr r3, _08108E14 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_08108E0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108E14: .4byte gUnknown_3005B60 + thumb_func_end sub_08108D6C + + thumb_func_start sub_08108E18 +sub_08108E18: @ 0x08108E18 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08108E48 + adds r4, r1, r0 + bl sub_08108BD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + ldr r0, _08108E4C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08108E50 + movs r0, #0x88 + strh r0, [r4, #0x10] + movs r0, #0x28 + b _08108E56 + .align 2, 0 +_08108E48: .4byte gUnknown_3005B60 +_08108E4C: .4byte gUnknown_20380D6 +_08108E50: + movs r0, #0x10 + strh r0, [r4, #0x10] + movs r0, #0x50 +_08108E56: + 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, r0, r1 + adds r0, #5 + strh r0, [r4, #0x20] + ldr r0, _08108E78 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08108E78: .4byte sub_08108E7C + thumb_func_end sub_08108E18 + + thumb_func_start sub_08108E7C +sub_08108E7C: @ 0x08108E7C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r7, _08108EA0 + adds r4, r0, r7 + movs r0, #8 + ldrsh r2, [r4, r0] + cmp r2, #0 + beq _08108EA4 + cmp r2, #1 + beq _08108F54 + b _08108F62 + .align 2, 0 +_08108EA0: .4byte gUnknown_3005B60 +_08108EA4: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _08108EBA + strh r2, [r4, #0xc] + adds r0, r4, #0 + bl sub_08108F6C +_08108EBA: + movs r1, #0x1c + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08108F34 + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08108F34 + ldr r5, _08108F48 + movs r1, #1 + mov r8, r1 + mov r2, r8 + strh r2, [r5] + strh r0, [r5, #2] + movs r0, #0xc + strh r0, [r5, #4] + ldr r6, _08108F4C + adds r0, r6, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08108F04 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r7 + ldr r1, [r0] + adds r0, r2, #0 + bl _call_via_r1 + ldr r1, _08108F50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08108F04: + movs r0, #3 + strh r0, [r5] + adds r0, r6, #0 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08108F30 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r7 + ldr r1, [r0] + adds r0, r2, #0 + bl _call_via_r1 + ldr r1, _08108F50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08108F30: + mov r0, r8 + strh r0, [r4, #0x22] +_08108F34: + movs r2, #0x1e + ldrsh r1, [r4, r2] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _08108F62 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08108F62 + .align 2, 0 +_08108F48: .4byte gUnknown_20380BE +_08108F4C: .4byte sub_08115B2C +_08108F50: .4byte gUnknown_203809E +_08108F54: + movs r2, #0x1a + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08108F62 + adds r0, r1, #0 + bl sub_080A34E4 +_08108F62: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08108E7C + + thumb_func_start sub_08108F6C +sub_08108F6C: @ 0x08108F6C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r1, _08108FF8 + movs r2, #0x18 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, #3 + asrs r0, r0, #4 + ldrh r2, [r4, #0x14] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _08108FFC + movs r2, #0x16 + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08108FC6 + ldr r3, _08109000 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _08109004 + str r2, [r1] + adds r0, r0, r3 + strh r5, [r0, #0x38] + strh r6, [r0, #0x3a] + movs r1, #9 + strh r1, [r0, #0x3c] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] +_08108FC6: + ldrh r0, [r4, #0x1e] + adds r0, #1 + 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, _08109008 + muls r0, r1, r0 + ldr r1, _0810900C + adds r0, r0, r1 + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r4, #0x10] + adds r1, r1, r0 + strh r1, [r4, #0x16] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08108FF8: .4byte gUnknown_82FA8CC +_08108FFC: .4byte gUnknown_8570E4C +_08109000: .4byte gUnknown_20205AC +_08109004: .4byte sub_08109010 +_08109008: .4byte 0x41C64E6D +_0810900C: .4byte 0x00003039 + thumb_func_end sub_08108F6C + + thumb_func_start sub_08109010 +sub_08109010: @ 0x08109010 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _081090A6 + ldrh r0, [r5, #0x22] + adds r0, #8 + strh r0, [r5, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x38 + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _081090A6 + ldr r2, _081090AC + movs r3, #0x3a + ldrsh r1, [r5, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x1c] + ldr r0, _081090B0 + movs r2, #0x20 + ldrsh r1, [r5, r2] + movs r3, #0x22 + ldrsh r2, [r5, r3] + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x30] + cmp r0, #0x40 + beq _081090A0 + movs r0, #0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081090B4 + adds r0, r0, r4 + movs r1, #3 + bl sub_08007F70 + movs r2, #0x30 + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r5, #0x3a] + strh r1, [r0, #0x3a] + movs r3, #0x30 + ldrsh r1, [r5, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r5, #0x3c] + strh r1, [r0, #0x3c] + movs r0, #0x30 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _081090B8 + str r1, [r0] +_081090A0: + adds r0, r5, #0 + bl sub_08006E00 +_081090A6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081090AC: .4byte gUnknown_3005B60 +_081090B0: .4byte gUnknown_8572F6C +_081090B4: .4byte gUnknown_20205AC +_081090B8: .4byte sub_081090BC + thumb_func_end sub_08109010 + + thumb_func_start sub_081090BC +sub_081090BC: @ 0x081090BC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08109128 + movs r0, #0 + strh r0, [r4, #0x30] + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _08109128 + ldr r3, _08109130 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 +_08109128: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109130: .4byte gUnknown_3005B60 + thumb_func_end sub_081090BC + + thumb_func_start sub_08109134 +sub_08109134: @ 0x08109134 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081091B8 + adds r5, r1, r0 + ldr r4, _081091BC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + strh r0, [r5, #0xe] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x10] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _08109178 + movs r1, #1 +_08109178: + strh r1, [r5, #0x16] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810918C + movs r1, #0x16 + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 + strh r0, [r5, #0x16] +_0810918C: + movs r2, #0x16 + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + ldrh r1, [r5, #0xe] + adds r0, r0, r1 + strh r0, [r5, #0x12] + movs r2, #0x16 + ldrsh r1, [r5, r2] + lsls r1, r1, #3 + ldrh r0, [r5, #0x10] + subs r0, r0, r1 + strh r0, [r5, #0x14] + ldr r0, _081091C0 + strh r0, [r5, #0x1a] + strh r6, [r5, #0xa] + strh r6, [r5, #8] + ldr r0, _081091C4 + str r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081091B8: .4byte gUnknown_3005B60 +_081091BC: .4byte gUnknown_20380D6 +_081091C0: .4byte 0x0000FFE0 +_081091C4: .4byte sub_081091C8 + thumb_func_end sub_08109134 + + thumb_func_start sub_081091C8 +sub_081091C8: @ 0x081091C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081091EC + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #6 + bls _081091E2 + b _08109302 +_081091E2: + lsls r0, r0, #2 + ldr r1, _081091F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081091EC: .4byte gUnknown_3005B60 +_081091F0: .4byte _081091F4 +_081091F4: @ jump table + .4byte _08109210 @ case 0 + .4byte _08109220 @ case 1 + .4byte _0810923A @ case 2 + .4byte _0810927C @ case 3 + .4byte _0810929E @ case 4 + .4byte _081092CC @ case 5 + .4byte _081092F2 @ case 6 +_08109210: + adds r0, r4, #0 + bl sub_08109310 + movs r1, #0x1c + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08109308 + b _081092FA +_08109220: + adds r0, r4, #0 + bl sub_08109310 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08109308 + movs r0, #0 + strh r0, [r4, #0xa] + b _081092FA +_0810923A: + adds r0, r4, #0 + bl sub_08109310 + movs r1, #0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldrh r0, [r4, #0x12] + adds r1, r1, r0 + movs r2, #0 + strh r1, [r4, #0x12] + adds r1, #0x10 + lsls r1, r1, #0x10 + movs r0, #0x88 + lsls r0, r0, #0x11 + cmp r1, r0 + bls _08109308 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _08109278 + movs r0, #1 + strh r0, [r4, #0x22] + movs r0, #6 + strh r0, [r4, #8] + strh r2, [r4, #0xa] + b _08109308 +_08109278: + strh r2, [r4, #0xa] + b _081092FA +_0810927C: + adds r0, r4, #0 + bl sub_08109310 + movs r0, #0x16 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + ldrh r0, [r4, #0x14] + subs r0, r0, r1 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _08109308 + b _081092FA +_0810929E: + adds r0, r4, #0 + bl sub_08109310 + movs r1, #0x16 + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldrh r0, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0x12] + adds r0, #0x10 + lsls r0, r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _08109308 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + movs r0, #0 + strh r0, [r4, #0xa] + b _081092FA +_081092CC: + adds r0, r4, #0 + bl sub_08109310 + movs r0, #0x16 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + ldrh r0, [r4, #0x14] + subs r0, r0, r1 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _08109308 + movs r0, #2 + strh r0, [r4, #8] + b _08109308 +_081092F2: + movs r1, #0x18 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08109308 +_081092FA: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08109308 +_08109302: + adds r0, r2, #0 + bl sub_080A34E4 +_08109308: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081091C8 + + thumb_func_start sub_08109310 +sub_08109310: @ 0x08109310 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810936A + movs r0, #0 + strh r0, [r6, #0xc] + ldr r0, _08109370 + movs r2, #0xe + ldrsh r1, [r6, r2] + movs r3, #0x10 + ldrsh r2, [r6, r3] + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0810936A + ldr r5, _08109374 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, 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_080A619C + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _08109378 + str r0, [r4] + ldrh r0, [r6, #0x18] + adds r0, #1 + strh r0, [r6, #0x18] +_0810936A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08109370: .4byte gUnknown_8570E4C +_08109374: .4byte gUnknown_20205AC +_08109378: .4byte sub_0810937C + thumb_func_end sub_08109310 + + thumb_func_start sub_0810937C +sub_0810937C: @ 0x0810937C + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081093D6 + ldrh r0, [r6, #0x24] + ldrh r1, [r6, #0x20] + adds r0, r0, r1 + strh r0, [r6, #0x20] + ldrh r0, [r6, #0x26] + ldrh r1, [r6, #0x22] + adds r0, r0, r1 + strh r0, [r6, #0x22] + movs r0, #6 + strh r0, [r6, #0x2e] + bl sub_0806F0A4 + movs r4, #0x1f + adds r1, r4, #0 + ands r1, r0 + ldr r5, _081093DC + adds r1, r1, r5 + ldrh r0, [r6, #0x20] + adds r1, r1, r0 + strh r1, [r6, #0x32] + bl sub_0806F0A4 + ands r4, r0 + adds r4, r4, r5 + ldrh r1, [r6, #0x22] + adds r4, r4, r1 + strh r4, [r6, #0x36] + bl sub_0806F0A4 + movs r1, #7 + ands r1, r0 + mvns r1, r1 + strh r1, [r6, #0x38] + adds r0, r6, #0 + bl sub_080A619C + ldr r0, _081093E0 + str r0, [r6, #0x1c] +_081093D6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081093DC: .4byte 0x0000FFF0 +_081093E0: .4byte sub_081093E4 + thumb_func_end sub_0810937C + + thumb_func_start sub_081093E4 +sub_081093E4: @ 0x081093E4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08109420 + movs r4, #0 + ldr r6, _08109428 +_081093F6: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r6 + ldr r1, [r2] + ldr r0, _0810942C + cmp r1, r0 + bne _08109416 + movs r0, #1 + strh r0, [r2, #0x1c] + ldrh r0, [r2, #0x18] + subs r0, #1 + strh r0, [r2, #0x18] + adds r0, r5, #0 + bl sub_08006E00 +_08109416: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xf + bls _081093F6 +_08109420: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08109428: .4byte gUnknown_3005B60 +_0810942C: .4byte sub_081091C8 + thumb_func_end sub_081093E4 + + thumb_func_start sub_08109430 +sub_08109430: @ 0x08109430 + ldr r2, _08109450 + ldrh r1, [r2] + strh r1, [r0, #0x20] + ldrh r1, [r2, #2] + strh r1, [r0, #0x22] + ldrh r1, [r2, #4] + strh r1, [r0, #0x2e] + ldrh r1, [r2, #6] + strh r1, [r0, #0x30] + ldrh r1, [r2, #8] + strh r1, [r0, #0x32] + ldrh r1, [r2, #0xa] + strh r1, [r0, #0x34] + ldr r1, _08109454 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08109450: .4byte gUnknown_20380BE +_08109454: .4byte sub_08109458 + thumb_func_end sub_08109430 + + thumb_func_start sub_08109458 +sub_08109458: @ 0x08109458 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x2e] + subs r0, 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, 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_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0810949C + adds r0, r4, #0 + bl sub_080A34C4 +_0810949C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08109458 + + thumb_func_start sub_081094A4 +sub_081094A4: @ 0x081094A4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r1, [r4, #0x32] + ldrh r2, [r4, #0x36] + adds r1, r1, r2 + strh r1, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x17 + strh r0, [r4, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x17 + strh r1, [r4, #0x26] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081094DC + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 +_081094DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081094A4 + + thumb_func_start sub_081094E4 +sub_081094E4: @ 0x081094E4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r5, _08109520 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x30] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldr r1, _08109524 + ldrh r0, [r1, #4] + strh r0, [r4, #0x34] + ldrh r0, [r1, #6] + strh r0, [r4, #0x36] + ldr r0, _08109528 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08109520: .4byte gUnknown_20380D7 +_08109524: .4byte gUnknown_20380BE +_08109528: .4byte sub_0810952C + thumb_func_end sub_081094E4 + + thumb_func_start sub_0810952C +sub_0810952C: @ 0x0810952C + push {r4, r5, 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, r0 + movs r2, #0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + muls r0, r5, r0 + movs r2, #0x34 + ldrsh r1, [r4, r2] + bl __divsi3 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08109584 + movs r0, #0 + strh r0, [r4, #0x38] + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_081095A4 +_08109584: + movs r0, #0x34 + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08109596 + adds r0, r4, #0 + bl sub_080A34C4 +_08109596: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810952C + + thumb_func_start sub_081095A4 +sub_081095A4: @ 0x081095A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r4, r1, #0 + adds r5, r2, #0 + movs r2, #0x2e + ldrsh r1, [r0, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + lsls r1, r1, #0xf + lsrs r1, r1, #0x10 + str r1, [sp] + ldrh r1, [r0, #0x24] + ldrh r3, [r0, #0x20] + adds r1, r1, r3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + ldrh r1, [r0, #0x26] + ldrh r0, [r0, #0x22] + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r0, r5, r0 + subs r0, #5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + bl sub_0806F0A4 + rsbs r4, r4, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r4, r4, r0 + subs r4, #5 + lsls r4, r4, #0x10 + lsrs r7, r4, #0x10 + movs r6, #0 + mov r0, r8 + lsls r0, r0, #0x10 + mov r8, r0 + mov r1, sl + lsls r1, r1, #0x10 + str r1, [sp, #0xc] + ldr r2, [sp] + lsls r2, r2, #0x10 + str r2, [sp, #0x10] + asrs r1, r1, #0x10 + lsls r0, r7, #0x10 + asrs r5, r0, #0x10 + str r0, [sp, #0x14] + rsbs r3, r5, #0 + str r3, [sp, #4] + asrs r0, r2, #0x10 + adds r1, r1, r0 + lsls r1, r1, #0x10 + mov sl, r1 +_08109632: + ldr r0, _08109674 + mov r2, r8 + asrs r1, r2, #0x10 + mov r3, sl + asrs r2, r3, #0x10 + movs r3, #0x82 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08109678 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r1 + movs r0, #0x14 + strh r0, [r4, #0x2e] + mov r0, sb + strh r0, [r4, #0x30] + ldr r0, _0810967C + ldrb r0, [r0] + bl sub_080A7BAC + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + cmp r5, #0 + bge _08109680 + mov r1, sp + ldrh r1, [r1, #4] + strh r1, [r4, #0x32] + b _08109682 + .align 2, 0 +_08109674: .4byte gUnknown_8570EF4 +_08109678: .4byte gUnknown_20205AC +_0810967C: .4byte gUnknown_20380D6 +_08109680: + strh r7, [r4, #0x32] +_08109682: + lsls r0, r6, #0x10 + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r0, r2 + lsrs r6, r0, #0x10 + cmp r0, #0 + ble _08109632 + movs r6, #0 + ldr r3, [sp, #0xc] + asrs r1, r3, #0x10 + ldr r0, [sp, #0x14] + asrs r5, r0, #0x10 + rsbs r2, r5, #0 + str r2, [sp, #8] + ldr r3, [sp, #0x10] + asrs r0, r3, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + mov sl, r1 +_081096A8: + ldr r0, _081096EC + mov r2, r8 + asrs r1, r2, #0x10 + mov r3, sl + asrs r2, r3, #0x10 + movs r3, #0x82 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _081096F0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r1 + movs r0, #0x14 + strh r0, [r4, #0x2e] + mov r0, sb + strh r0, [r4, #0x30] + ldr r0, _081096F4 + ldrb r0, [r0] + bl sub_080A7BAC + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + cmp r5, #0 + ble _081096F8 + mov r1, sp + ldrh r1, [r1, #8] + strh r1, [r4, #0x32] + b _081096FA + .align 2, 0 +_081096EC: .4byte gUnknown_8570EF4 +_081096F0: .4byte gUnknown_20205AC +_081096F4: .4byte gUnknown_20380D6 +_081096F8: + strh r7, [r4, #0x32] +_081096FA: + lsls r0, r6, #0x10 + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r0, r2 + lsrs r6, r0, #0x10 + cmp r0, #0 + ble _081096A8 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081095A4 + + thumb_func_start sub_08109718 +sub_08109718: @ 0x08109718 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810974C + ldrh r0, [r0] + strh r0, [r4, #0x2e] + movs r0, #0x3c + strh r0, [r4, #0x30] + movs r0, #9 + strh r0, [r4, #0x32] + movs r0, #0x1e + strh r0, [r4, #0x34] + movs r0, #0xfe + lsls r0, r0, #8 + strh r0, [r4, #0x36] + ldr r1, _08109750 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, _08109754 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810974C: .4byte gUnknown_20380BE +_08109750: .4byte sub_080A34C4 +_08109754: .4byte sub_080A5C14 + thumb_func_end sub_08109718 + + thumb_func_start sub_08109758 +sub_08109758: @ 0x08109758 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08109790 + movs r0, #0 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl sub_080A612C + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r5, #8] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #4] + strh r0, [r4, #0x30] + ldrh r0, [r5, #6] + strh r0, [r4, #0x32] + ldr r0, _08109794 + str r0, [r4, #0x1c] + ldr r1, _08109798 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08109790: .4byte gUnknown_20380BE +_08109794: .4byte sub_080A5E34 +_08109798: .4byte sub_080A34C4 + thumb_func_end sub_08109758 + + thumb_func_start sub_0810979C +sub_0810979C: @ 0x0810979C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _081097D0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081097D8 + ldr r2, _081097D4 + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r2, #8] + rsbs r0, r0, #0 + strh r0, [r4, #0x32] + adds r1, r2, #0 + b _081097EE + .align 2, 0 +_081097D0: .4byte gUnknown_20380D6 +_081097D4: .4byte gUnknown_20380BE +_081097D8: + ldr r1, _08109804 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #8] + strh r0, [r4, #0x32] +_081097EE: + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #6] + strh r0, [r4, #0x36] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x34] + ldr r0, _08109808 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109804: .4byte gUnknown_20380BE +_08109808: .4byte sub_08109878 + thumb_func_end sub_0810979C + + thumb_func_start sub_0810980C +sub_0810980C: @ 0x0810980C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08109838 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08109840 + ldr r2, _0810983C + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r2, #8] + strh r0, [r4, #0x32] + adds r1, r2, #0 + b _08109858 + .align 2, 0 +_08109838: .4byte gUnknown_20380D6 +_0810983C: .4byte gUnknown_20380BE +_08109840: + ldr r1, _08109870 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #8] + rsbs r0, r0, #0 + strh r0, [r4, #0x32] +_08109858: + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #6] + strh r0, [r4, #0x36] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x34] + ldr r0, _08109874 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109870: .4byte gUnknown_20380BE +_08109874: .4byte sub_08109878 + thumb_func_end sub_0810980C + + thumb_func_start sub_08109878 +sub_08109878: @ 0x08109878 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _0810989E + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x34] + ldrh r3, [r2, #0x26] + adds r0, r0, r3 + strh r0, [r2, #0x26] +_0810989E: + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r3, #0x30 + ldrsh r0, [r2, r3] + cmp r1, r0 + bne _081098B0 + adds r0, r2, #0 + bl sub_080A6014 +_081098B0: + pop {r0} + bx r0 + thumb_func_end sub_08109878 + + thumb_func_start sub_081098B4 +sub_081098B4: @ 0x081098B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r0, _081098D8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081098E0 + ldr r0, _081098DC + ldrh r1, [r4, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r4, #0x20] + b _081098F2 + .align 2, 0 +_081098D8: .4byte gUnknown_20380D6 +_081098DC: .4byte gUnknown_20380BE +_081098E0: + ldr r0, _08109920 + ldrh r1, [r0] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + strh r1, [r4, #0x20] + adds r2, r4, #0 + adds r2, #0x43 + movs r1, #8 + strb r1, [r2] +_081098F2: + adds r2, r0, #0 + ldrh r0, [r2, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x22] + ldrh r0, [r2, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r2, #6] + strh r0, [r4, #0x30] + ldrh r0, [r2, #8] + 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, _08109924 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109920: .4byte gUnknown_20380BE +_08109924: .4byte sub_08109928 + thumb_func_end sub_081098B4 + + thumb_func_start sub_08109928 +sub_08109928: @ 0x08109928 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081099B0 + movs r2, #0x38 + ldrsh r1, [r4, r2] + ldr r0, _08109994 + cmp r1, r0 + ble _08109946 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #1 + strb r0, [r1] +_08109946: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r2, [r4, #0x30] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r2, [r4, #0x30] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFD4 + 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, r0, r2 + strh r0, [r4, #0x38] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _0810999C + ldr r2, _08109998 + b _081099A4 + .align 2, 0 +_08109994: .4byte 0x00002710 +_08109998: .4byte 0xFFFFFF00 +_0810999C: + cmp r0, #0 + bge _081099A8 + movs r2, #0x80 + lsls r2, r2, #1 +_081099A4: + adds r0, r1, r2 + strh r0, [r4, #0x2e] +_081099A8: + ldrh r0, [r4, #0x34] + subs r0, #1 + strh r0, [r4, #0x34] + b _081099B6 +_081099B0: + adds r0, r4, #0 + bl sub_080A6014 +_081099B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08109928 + + thumb_func_start sub_081099BC +sub_081099BC: @ 0x081099BC + 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, _081099E0 + str r1, [r0, #0x1c] + ldr r1, _081099E4 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_081099E0: .4byte sub_080A67B4 +_081099E4: .4byte sub_080A34C4 + thumb_func_end sub_081099BC + + thumb_func_start sub_081099E8 +sub_081099E8: @ 0x081099E8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r5, _08109A40 + ldrb r0, [r5] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _08109A44 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _08109A2E + movs r0, #2 + bl sub_080A631C + ldrb r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + beq _08109A26 + movs r0, #3 + bl sub_080A631C + ldrb r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _08109A2E +_08109A26: + ldr r1, _08109A48 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_08109A2E: + ldr r1, _08109A4C + str r1, [r6, #0x1c] + adds r0, r6, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08109A40: .4byte gUnknown_20380D6 +_08109A44: .4byte gUnknown_20380D7 +_08109A48: .4byte gUnknown_20380BE +_08109A4C: .4byte sub_080A7200 + thumb_func_end sub_081099E8 + + thumb_func_start sub_08109A50 +sub_08109A50: @ 0x08109A50 + ldr r2, _08109A64 + ldrh r1, [r2] + rsbs r1, r1, #0 + strh r1, [r2] + ldrh r1, [r2, #4] + rsbs r1, r1, #0 + strh r1, [r2, #4] + ldr r1, _08109A68 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_08109A64: .4byte gUnknown_20380BE +_08109A68: .4byte sub_080A7200 + thumb_func_end sub_08109A50 + + thumb_func_start sub_08109A6C +sub_08109A6C: @ 0x08109A6C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _08109A8C + ldrh r0, [r0, #4] + movs r1, #0 + strh r0, [r4, #0x3c] + strh r1, [r4, #0x2e] + ldr r0, _08109A90 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109A8C: .4byte gUnknown_20380BE +_08109A90: .4byte sub_08109A94 + thumb_func_end sub_08109A6C + + thumb_func_start sub_08109A94 +sub_08109A94: @ 0x08109A94 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08109B88 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x12 + bne _08109ADE + movs r0, #0x19 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldr r4, _08109AE4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + ldr r0, _08109AE8 + str r0, [r5, #0x1c] +_08109ADE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08109AE4: .4byte gUnknown_20380D7 +_08109AE8: .4byte sub_08109AEC + thumb_func_end sub_08109A94 + + thumb_func_start sub_08109AEC +sub_08109AEC: @ 0x08109AEC + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08109B34 + movs r4, #0 + strh r4, [r6, #0x2e] + ldr r5, _08109B2C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x22] + strh r4, [r6, #0x26] + strh r4, [r6, #0x24] + ldr r1, _08109B30 + str r1, [r6, #0x1c] + adds r0, r6, #0 + bl _call_via_r1 + b _08109B5E + .align 2, 0 +_08109B2C: .4byte gUnknown_20380D7 +_08109B30: .4byte sub_08109B64 +_08109B34: + movs r1, #0x3c + ldrsh r0, [r6, r1] + movs r1, #0x1c + bl sub_0806EFB8 + ldrh r1, [r6, #0x24] + adds r0, r0, r1 + strh r0, [r6, #0x24] + movs r1, #0x3c + ldrsh r0, [r6, r1] + movs r1, #0x1c + bl sub_0806EFD4 + ldrh r1, [r6, #0x26] + adds r0, r0, r1 + strh r0, [r6, #0x26] + ldrh r0, [r6, #0x3c] + adds r0, #0x14 + movs r1, #0xff + ands r0, r1 + strh r0, [r6, #0x3c] +_08109B5E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08109AEC + + thumb_func_start sub_08109B64 +sub_08109B64: @ 0x08109B64 + push {r4, lr} + adds r4, r0, #0 + bl sub_08109B88 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _08109B80 + adds r0, r4, #0 + bl sub_080A34C4 +_08109B80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08109B64 + + thumb_func_start sub_08109B88 +sub_08109B88: @ 0x08109B88 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x1c + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x1c + bl sub_0806EFD4 + 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_08109B88 + + thumb_func_start sub_08109BB4 +sub_08109BB4: @ 0x08109BB4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08109BE8 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x32] + ldr r1, _08109BEC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08109BF0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109BE8: .4byte gUnknown_20380BE +_08109BEC: .4byte sub_080A34C4 +_08109BF0: .4byte sub_080A5E04 + thumb_func_end sub_08109BB4 + + thumb_func_start sub_08109BF4 +sub_08109BF4: @ 0x08109BF4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _08109C28 + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #6] + strh r0, [r4, #0x2e] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08109C2C + str r0, [r4, #0x1c] + ldr r1, _08109C30 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08109C28: .4byte gUnknown_20380BE +_08109C2C: .4byte sub_080A5D78 +_08109C30: .4byte sub_08109C34 + thumb_func_end sub_08109BF4 + + thumb_func_start sub_08109C34 +sub_08109C34: @ 0x08109C34 + push {lr} + adds r3, r0, #0 + adds r3, #0x3e + ldrb r2, [r3] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3] + ldrh r1, [r0, #0x30] + movs r2, #0 + strh r1, [r0, #0x2e] + strh r2, [r0, #0x30] + ldr r1, _08109C58 + str r1, [r0, #0x1c] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08109C58: .4byte sub_08109C5C + thumb_func_end sub_08109C34 + + thumb_func_start sub_08109C5C +sub_08109C5C: @ 0x08109C5C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFD4 + 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, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08109CA8 + adds r0, r4, #0 + bl sub_080A34C4 +_08109CA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08109C5C + + thumb_func_start sub_08109CB0 +sub_08109CB0: @ 0x08109CB0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08109D10 + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x26] + strh r5, [r4, #8] + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + ldr r2, _08109D14 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x10] + ldr r0, _08109D18 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + strh r5, [r4, #0x14] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080A6B38 + ldr r0, _08109D1C + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08109D10: .4byte gUnknown_3005B60 +_08109D14: .4byte gUnknown_20205AC +_08109D18: .4byte gUnknown_20380D6 +_08109D1C: .4byte sub_08109D20 + thumb_func_end sub_08109CB0 + + thumb_func_start sub_08109D20 +sub_08109D20: @ 0x08109D20 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08109D48 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #6 + bls _08109D3C + b _08109FFA +_08109D3C: + lsls r0, r0, #2 + ldr r1, _08109D4C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08109D48: .4byte gUnknown_3005B60 +_08109D4C: .4byte _08109D50 +_08109D50: @ jump table + .4byte _08109D6C @ case 0 + .4byte _08109D92 @ case 1 + .4byte _08109E44 @ case 2 + .4byte _08109EA4 @ case 3 + .4byte _08109EC2 @ case 4 + .4byte _08109F98 @ case 5 + .4byte _08109FEC @ case 6 +_08109D6C: + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0x80 + lsls r3, r3, #1 + movs r0, #0xe0 + str r0, [sp] + movs r0, #0x80 + lsls r0, r0, #2 + str r0, [sp, #4] + movs r0, #0x20 + str r0, [sp, #8] + adds r0, r4, #0 + adds r2, r3, #0 + bl sub_080A7924 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08109D92: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08109DDA + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08109DC8 + ldr r2, _08109DC4 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + b _08109DD8 + .align 2, 0 +_08109DC4: .4byte gUnknown_20205AC +_08109DC8: + ldr r2, _08109E3C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08109E40 +_08109DD8: + strh r1, [r0, #0x24] +_08109DDA: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08109E08 + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08109E08 + movs r0, #0 + strh r0, [r4, #0xe] + ldr r2, _08109E3C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #1 + strh r1, [r0, #0x22] +_08109E08: + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _08109E18 + b _08109FFA +_08109E18: + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7734 + ldr r2, _08109E3C + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x24] + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + b _08109FE0 + .align 2, 0 +_08109E3C: .4byte gUnknown_20205AC +_08109E40: .4byte 0x0000FFFD +_08109E44: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bgt _08109E54 + b _08109FFA +_08109E54: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08109E7E + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0x80 + lsls r3, r3, #2 + movs r0, #0xc0 + lsls r0, r0, #1 + str r0, [sp] + movs r0, #0xf0 + str r0, [sp, #4] + movs r0, #6 + str r0, [sp, #8] + adds r0, r4, #0 + movs r2, #0xe0 + bl sub_080A7924 + b _08109E9E +_08109E7E: + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r3, #0x80 + lsls r3, r3, #2 + movs r0, #0xc0 + lsls r0, r0, #1 + str r0, [sp] + movs r0, #0xc0 + str r0, [sp, #4] + movs r0, #6 + str r0, [sp, #8] + adds r0, r4, #0 + movs r2, #0xe0 + bl sub_080A7924 +_08109E9E: + movs r0, #0 + strh r0, [r4, #0xa] + b _08109FE0 +_08109EA4: + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08109EB2 + b _08109FFA +_08109EB2: + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r5, #0 + movs r2, #6 + bl sub_0810A004 + b _08109FE0 +_08109EC2: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08109F10 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08109EFC + ldr r2, _08109EF8 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #3 + b _08109F0E + .align 2, 0 +_08109EF8: .4byte gUnknown_20205AC +_08109EFC: + ldr r2, _08109F48 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #3 +_08109F0E: + strh r1, [r0, #0x26] +_08109F10: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x18 + ble _08109FFA + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08109F4C + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0xc0 + lsls r2, r2, #1 + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r3, #0xf0 + bl sub_080A7924 + b _08109F6A + .align 2, 0 +_08109F48: .4byte gUnknown_20205AC +_08109F4C: + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0xc0 + lsls r2, r2, #1 + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r3, #0xc0 + bl sub_080A7924 +_08109F6A: + ldrh r1, [r4, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08109F88 + ldr r2, _08109F94 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #3 + strh r1, [r0, #0x26] +_08109F88: + movs r0, #0 + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + b _08109FE0 + .align 2, 0 +_08109F94: .4byte gUnknown_20205AC +_08109F98: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08109FB4 + ldr r2, _08109FE8 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #1 + strh r1, [r0, #0x22] +_08109FB4: + adds r0, r4, #0 + bl sub_080A7990 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08109FFA + ldr r2, _08109FE8 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x10] + strh r1, [r0, #0x22] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + strh r5, [r4, #0xc] +_08109FE0: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08109FFA + .align 2, 0 +_08109FE8: .4byte gUnknown_20205AC +_08109FEC: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08109FFA + adds r0, r5, #0 + bl sub_080A34E4 +_08109FFA: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08109D20 + + thumb_func_start sub_0810A004 +sub_0810A004: @ 0x0810A004 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + adds r0, r4, #0 + bl sub_0810A180 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r1, _0810A054 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r4, [r0, #0x20] + ldr r0, _0810A058 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810A05C + adds r0, r4, #0 + subs r0, #0xc + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + b _0810A066 + .align 2, 0 +_0810A054: .4byte gUnknown_20205AC +_0810A058: .4byte gUnknown_20380D6 +_0810A05C: + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0xff +_0810A066: + movs r6, #0 + movs r5, #0 + lsls r4, r4, #0x10 + str r4, [sp, #8] + mov r1, sb + lsls r1, r1, #0x10 + str r1, [sp, #4] + ldr r2, _0810A120 + mov sb, r2 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + str r0, [sp] + mov r3, r8 + lsls r3, r3, #1 + mov sl, r3 +_0810A084: + ldr r0, _0810A124 + ldr r2, [sp, #8] + asrs r1, r2, #0x10 + ldr r3, [sp, #4] + asrs r2, r3, #0x10 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0810A106 + ldr r1, _0810A128 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + lsls r0, r5, #2 + adds r0, #0x40 + adds r1, r1, r0 + ldr r3, _0810A12C + adds r0, r3, #0 + ands r1, r0 + ldr r3, _0810A130 + adds r0, r3, #0 + ands r2, r0 + orrs r2, r1 + strh r2, [r4, #4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #4 + bls _0810A0CE + movs r5, #0 +_0810A0CE: + lsls r2, r6, #2 + mov r1, sb + adds r0, r2, r1 + ldrh r0, [r0] + ldr r3, [sp] + adds r1, r0, #0 + muls r1, r3, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _0810A134 + adds r2, r2, r0 + movs r3, #0 + ldrsh r2, [r2, r3] + adds r0, r4, #0 + bl sub_0810A1D4 + strh r7, [r4, #0x3a] + mov r0, r8 + strh r0, [r4, #0x3c] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + add r0, sl + ldr r1, _0810A138 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] +_0810A106: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #6 + bls _0810A084 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810A120: .4byte gUnknown_85711B0 +_0810A124: .4byte gUnknown_8571198 +_0810A128: .4byte gUnknown_20205AC +_0810A12C: .4byte 0x000003FF +_0810A130: .4byte 0xFFFFFC00 +_0810A134: .4byte gUnknown_85711B2 +_0810A138: .4byte gUnknown_3005B68 + thumb_func_end sub_0810A004 + + thumb_func_start sub_0810A13C +sub_0810A13C: @ 0x0810A13C + push {r4, lr} + adds r4, r0, #0 + bl sub_0810A1F0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810A176 + ldr r3, _0810A17C + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0810A176: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810A17C: .4byte gUnknown_3005B60 + thumb_func_end sub_0810A13C + + thumb_func_start sub_0810A180 +sub_0810A180: @ 0x0810A180 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0810A1B8 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r1, #0x26] + ldrh r0, [r1, #0x22] + adds r2, r2, r0 + adds r1, #0x29 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0810A1BC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810A1C0 + lsls r0, r4, #0x10 + movs r1, #0x94 + lsls r1, r1, #0xf + b _0810A1C6 + .align 2, 0 +_0810A1B8: .4byte gUnknown_20205AC +_0810A1BC: .4byte gUnknown_20380D6 +_0810A1C0: + lsls r0, r4, #0x10 + movs r1, #0xb0 + lsls r1, r1, #0xe +_0810A1C6: + adds r0, r0, r1 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0810A180 + + thumb_func_start sub_0810A1D4 +sub_0810A1D4: @ 0x0810A1D4 + movs r3, #0 + strh r3, [r0, #0x2e] + strh r3, [r0, #0x30] + ldrh r3, [r0, #0x20] + lsls r3, r3, #3 + strh r3, [r0, #0x32] + ldrh r3, [r0, #0x22] + lsls r3, r3, #3 + strh r3, [r0, #0x34] + lsls r1, r1, #3 + strh r1, [r0, #0x36] + lsls r2, r2, #3 + strh r2, [r0, #0x38] + bx lr + thumb_func_end sub_0810A1D4 + + thumb_func_start sub_0810A1F0 +sub_0810A1F0: @ 0x0810A1F0 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0810A21A + movs r0, #0 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x30] + adds r1, r0, #0 + muls r1, r0, r1 + adds r0, r1, #0 + ldrh r3, [r2, #0x34] + adds r0, r0, r3 + strh r0, [r2, #0x34] +_0810A21A: + ldrh r0, [r2, #0x36] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r2, #0x20] + ldrh r1, [r2, #0x38] + ldrh r3, [r2, #0x34] + adds r1, r1, r3 + strh r1, [r2, #0x34] + lsls r1, r1, #0x10 + asrs r3, r1, #0x13 + strh r3, [r2, #0x22] + adds r0, #8 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0810A250 + adds r1, r3, #0 + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _0810A250 + cmp r1, #0x78 + ble _0810A25C +_0810A250: + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0810A25C: + pop {r0} + bx r0 + thumb_func_end sub_0810A1F0 + + thumb_func_start sub_0810A260 +sub_0810A260: @ 0x0810A260 + push {r4, r5, lr} + ldr r3, _0810A2A4 + ldrh r1, [r3] + movs r2, #0 + strh r1, [r0, #0x20] + ldrh r1, [r3, #2] + strh r1, [r0, #0x22] + strh r2, [r0, #0x2e] + strh r2, [r0, #0x30] + strh r2, [r0, #0x32] + ldrh r1, [r3, #4] + strh r1, [r0, #0x3a] + ldrh r1, [r3, #6] + strh r1, [r0, #0x3c] + ldrh r4, [r0, #4] + lsls r2, r4, #0x16 + lsrs r2, r2, #0x16 + movs r5, #8 + ldrsh r1, [r3, r5] + lsls r1, r1, #4 + adds r2, r2, r1 + ldr r3, _0810A2A8 + adds r1, r3, #0 + ands r2, r1 + ldr r1, _0810A2AC + ands r1, r4 + orrs r1, r2 + strh r1, [r0, #4] + ldr r1, _0810A2B0 + str r1, [r0, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810A2A4: .4byte gUnknown_20380BE +_0810A2A8: .4byte 0x000003FF +_0810A2AC: .4byte 0xFFFFFC00 +_0810A2B0: .4byte sub_0810A2B4 + thumb_func_end sub_0810A260 + + thumb_func_start sub_0810A2B4 +sub_0810A2B4: @ 0x0810A2B4 + push {r4, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _0810A2E6 + cmp r0, #1 + bgt _0810A2CA + cmp r0, #0 + beq _0810A2D0 + b _0810A344 +_0810A2CA: + cmp r0, #2 + beq _0810A304 + b _0810A344 +_0810A2D0: + ldrh r1, [r2, #0x3a] + movs r3, #0x3a + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _0810A2E0 + subs r0, r1, #1 + strh r0, [r2, #0x3a] + b _0810A344 +_0810A2E0: + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] +_0810A2E6: + ldrh r0, [r2, #0x22] + adds r0, #8 + strh r0, [r2, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r2, #0x3c] + movs r4, #0x3c + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _0810A344 + strh r3, [r2, #0x22] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + b _0810A344 +_0810A304: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810A330 + movs r0, #0 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x32] + adds r0, #1 + strh r0, [r2, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810A32C + ldr r0, _0810A328 + b _0810A32E + .align 2, 0 +_0810A328: .4byte 0x0000FFFD +_0810A32C: + movs r0, #3 +_0810A32E: + strh r0, [r2, #0x26] +_0810A330: + ldrh r0, [r2, #0x34] + adds r0, #1 + strh r0, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _0810A344 + adds r0, r2, #0 + bl sub_080A34C4 +_0810A344: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810A2B4 + + thumb_func_start sub_0810A34C +sub_0810A34C: @ 0x0810A34C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0810A3C0 + cmp r0, #1 + bgt _0810A362 + cmp r0, #0 + beq _0810A368 + b _0810A48E +_0810A362: + cmp r0, #2 + beq _0810A41E + b _0810A48E +_0810A368: + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6294 + ldr r4, _0810A390 + ldrb r1, [r4, #4] + adds r0, r5, #0 + bl sub_08007EC0 + ldrh r0, [r4, #4] + strh r0, [r5, #0x3c] + ldr r0, _0810A394 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810A398 + movs r0, #4 + b _0810A39A + .align 2, 0 +_0810A390: .4byte gUnknown_20380BE +_0810A394: .4byte gUnknown_20380D6 +_0810A398: + ldr r0, _0810A3B8 +_0810A39A: + strh r0, [r5, #0x36] + ldr r0, _0810A3BC + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810A416 + .align 2, 0 +_0810A3B8: .4byte 0x0000FFFC +_0810A3BC: .4byte gUnknown_20380D7 +_0810A3C0: + ldrh r0, [r5, #0x30] + adds r0, #0xc0 + strh r0, [r5, #0x30] + ldr r0, _0810A3E0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810A3E4 + ldrh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _0810A3EA + .align 2, 0 +_0810A3E0: .4byte gUnknown_20380D6 +_0810A3E4: + ldrh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 +_0810A3EA: + strh r0, [r5, #0x26] + movs r2, #0x32 + ldrsh r0, [r5, r2] + movs r2, #0x36 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x32] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0810A48E + movs r0, #0 + strh r0, [r5, #0x34] +_0810A416: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0810A48E +_0810A41E: + movs r1, #0x32 + ldrsh r0, [r5, r1] + movs r2, #0x36 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + adds r2, r0, #0 + movs r3, #0 + strh r2, [r5, #0x24] + ldrh r0, [r5, #0x32] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _0810A48E + ldrh r0, [r5, #0x20] + adds r1, r2, r0 + strh r1, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r3, [r5, #0x26] + strh r3, [r5, #0x24] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x2e] + strh r1, [r5, #0x30] + ldr r4, _0810A494 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A689C + ldr r0, _0810A498 + str r0, [r5, #0x1c] +_0810A48E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810A494: .4byte gUnknown_20380D7 +_0810A498: .4byte sub_0810A49C + thumb_func_end sub_0810A34C + + thumb_func_start sub_0810A49C +sub_0810A49C: @ 0x0810A49C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810A4F4 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldrh r2, [r4, #0x38] + adds r0, r2, #4 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x38] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0 + beq _0810A4D2 + cmp r2, #0xc4 + ble _0810A4FA +_0810A4D2: + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0810A4FA + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810A4FA + ldr r0, _0810A4F0 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x90 + bl sub_080A307C + b _0810A4FA + .align 2, 0 +_0810A4F0: .4byte gUnknown_20380E0 +_0810A4F4: + adds r0, r4, #0 + bl sub_080A34C4 +_0810A4FA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810A49C + + thumb_func_start sub_0810A500 +sub_0810A500: @ 0x0810A500 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0810A518 + ldr r0, _0810A584 + ldrh r0, [r0] + strh r0, [r4, #0x30] + adds r0, r1, #1 + strh r0, [r4, #0x2e] +_0810A518: + movs r0, #0xc0 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r4, #0x34] + adds r1, 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, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x36] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #7 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810A5B4 + ldrh r0, [r4, #0x30] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x83 + bls _0810A58C + ldr r0, _0810A588 + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + b _0810A5D0 + .align 2, 0 +_0810A584: .4byte gUnknown_20380BE +_0810A588: .4byte gUnknown_20380D7 +_0810A58C: + ldr r0, _0810A5B0 + ldrb r0, [r0] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #5] + b _0810A5D0 + .align 2, 0 +_0810A5B0: .4byte gUnknown_20380D7 +_0810A5B4: + ldrh r0, [r4, #0x30] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x83 + bls _0810A5C8 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1d + b _0810A5CE +_0810A5C8: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x1f +_0810A5CE: + strb r0, [r1] +_0810A5D0: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _0810A5F8 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810A5F8: + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x1e + bne _0810A606 + adds r0, r4, #0 + bl sub_080A34C4 +_0810A606: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810A500 + + thumb_func_start sub_0810A60C +sub_0810A60C: @ 0x0810A60C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0810A66C + adds r4, r1, r0 + ldr r0, _0810A670 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _0810A632 + movs r1, #1 +_0810A632: + strh r1, [r4, #0x20] + ldr r0, _0810A674 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + strh r0, [r4, #0x22] + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r0, #3 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _0810A678 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810A66C: .4byte gUnknown_3005B60 +_0810A670: .4byte gUnknown_20380D6 +_0810A674: .4byte gUnknown_20380D7 +_0810A678: .4byte sub_0810A67C + thumb_func_end sub_0810A60C + + thumb_func_start sub_0810A67C +sub_0810A67C: @ 0x0810A67C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0810A6A0 + adds r2, r0, r1 + movs r0, #8 + ldrsh r3, [r2, r0] + cmp r3, #1 + beq _0810A744 + cmp r3, #1 + bgt _0810A6A4 + cmp r3, #0 + beq _0810A6B2 + b _0810A8A4 + .align 2, 0 +_0810A6A0: .4byte gUnknown_3005B60 +_0810A6A4: + cmp r3, #2 + bne _0810A6AA + b _0810A7CC +_0810A6AA: + cmp r3, #3 + bne _0810A6B0 + b _0810A860 +_0810A6B0: + b _0810A8A4 +_0810A6B2: + movs r1, #0x20 + ldrsh r0, [r2, r1] + lsls r0, r0, #1 + ldrh r5, [r2, #0x1c] + adds r0, r0, r5 + strh r0, [r2, #0x1c] + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810A6E4 + strh r3, [r2, #0xa] + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810A6E0 + movs r0, #2 + b _0810A6E2 +_0810A6E0: + ldr r0, _0810A73C +_0810A6E2: + strh r0, [r2, #0x1e] +_0810A6E4: + movs r1, #0 + strh r1, [r2, #0xe] + movs r7, #0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _0810A726 + ldr r4, _0810A740 + adds r3, r2, #0 + adds r3, #8 +_0810A6F6: + movs r1, #0xe + ldrsh r0, [r2, r1] + adds r0, #0xe + lsls r0, r0, #1 + adds r0, r3, r0 + movs r5, #0 + ldrsh r0, [r0, r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r2, #0x1e] + ldrh r7, [r2, #0x1c] + adds r0, r0, r7 + strh r0, [r1, #0x24] + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _0810A6F6 +_0810A726: + ldrh r0, [r2, #0x1a] + adds r0, #1 + strh r0, [r2, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + beq _0810A736 + b _0810A8A4 +_0810A736: + movs r0, #0 + strh r0, [r2, #0x1a] + b _0810A850 + .align 2, 0 +_0810A73C: .4byte 0x0000FFFE +_0810A740: .4byte gUnknown_20205AC +_0810A744: + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0810A76C + movs r0, #0 + strh r0, [r2, #0xa] + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + ands r0, r3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0810A768 + movs r0, #2 + b _0810A76A +_0810A768: + ldr r0, _0810A7C4 +_0810A76A: + strh r0, [r2, #0x1e] +_0810A76C: + movs r1, #0 + strh r1, [r2, #0xe] + movs r7, #0x22 + ldrsh r0, [r2, r7] + cmp r1, r0 + bge _0810A7AE + ldr r4, _0810A7C8 + adds r3, r2, #0 + adds r3, #8 +_0810A77E: + movs r1, #0xe + ldrsh r0, [r2, r1] + adds r0, #0xe + lsls r0, r0, #1 + adds r0, r3, r0 + movs r5, #0 + ldrsh r0, [r0, r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r2, #0x1e] + ldrh r7, [r2, #0x1c] + adds r0, r0, r7 + strh r0, [r1, #0x24] + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x22 + ldrsh r1, [r2, r5] + cmp r0, r1 + blt _0810A77E +_0810A7AE: + ldrh r0, [r2, #0x1a] + adds r0, #1 + strh r0, [r2, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x60 + bne _0810A8A4 + movs r0, #0 + strh r0, [r2, #0x1a] + b _0810A850 + .align 2, 0 +_0810A7C4: .4byte 0x0000FFFE +_0810A7C8: .4byte gUnknown_20205AC +_0810A7CC: + movs r7, #0x20 + ldrsh r1, [r2, r7] + lsls r1, r1, #1 + ldrh r0, [r2, #0x1c] + subs r0, r0, r1 + strh r0, [r2, #0x1c] + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810A800 + movs r0, #0 + strh r0, [r2, #0xa] + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810A7FC + strh r3, [r2, #0x1e] + b _0810A800 +_0810A7FC: + ldr r0, _0810A858 + strh r0, [r2, #0x1e] +_0810A800: + movs r1, #0 + strh r1, [r2, #0xe] + movs r3, #0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _0810A842 + ldr r4, _0810A85C + adds r3, r2, #0 + adds r3, #8 +_0810A812: + movs r5, #0xe + ldrsh r0, [r2, r5] + adds r0, #0xe + lsls r0, r0, #1 + adds r0, r3, r0 + movs r7, #0 + ldrsh r0, [r0, r7] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r2, #0x1e] + ldrh r5, [r2, #0x1c] + adds r0, r0, r5 + strh r0, [r1, #0x24] + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r7, #0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _0810A812 +_0810A842: + ldrh r0, [r2, #0x1a] + adds r0, #1 + strh r0, [r2, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bne _0810A8A4 +_0810A850: + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _0810A8A4 + .align 2, 0 +_0810A858: .4byte 0x0000FFFE +_0810A85C: .4byte gUnknown_20205AC +_0810A860: + movs r1, #0 + strh r1, [r2, #0xe] + movs r3, #0x22 + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _0810A89E + ldr r6, _0810A8AC + adds r3, r2, #0 + adds r3, #8 + movs r5, #0 +_0810A874: + movs r7, #0xe + ldrsh r0, [r2, r7] + adds r0, #0xe + lsls r0, r0, #1 + adds r0, r3, r0 + movs r7, #0 + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r5, [r0, #0x24] + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r7, #0x22 + ldrsh r1, [r2, r7] + cmp r0, r1 + blt _0810A874 +_0810A89E: + adds r0, r4, #0 + bl sub_080A34E4 +_0810A8A4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810A8AC: .4byte gUnknown_20205AC + thumb_func_end sub_0810A67C + + thumb_func_start sub_0810A8B0 +sub_0810A8B0: @ 0x0810A8B0 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #8] + lsls r0, r0, #4 + ldr r1, _0810A8E0 + ldrb r2, [r1] + ldrh r3, [r1, #2] + movs r1, #0x10 + bl sub_0806F410 + adds r0, r4, #0 + bl sub_080A34E4 + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810A8E0: .4byte gUnknown_20380BE + thumb_func_end sub_0810A8B0 + + thumb_func_start sub_0810A8E4 +sub_0810A8E4: @ 0x0810A8E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0810A93C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #8 + ldrsh r0, [r2, r3] + mov sb, r1 + ldr r4, _0810A940 + mov r8, r4 + cmp r0, #0 + bne _0810A91A + ldrh r0, [r4] + strh r0, [r2, #0xa] + ldrh r0, [r4, #2] + strh r0, [r2, #0xc] + ldrh r0, [r4, #4] + strh r0, [r2, #0xe] + ldrh r0, [r4, #6] + strh r0, [r2, #0x10] +_0810A91A: + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + ldr r1, _0810A944 + ldr r0, _0810A948 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r6, [r0] + movs r5, #0x10 + ldrsh r0, [r2, r5] + cmp r0, #0 + bne _0810A950 + ldr r4, _0810A94C + movs r1, #8 + ldrsh r0, [r2, r1] + b _0810A956 + .align 2, 0 +_0810A93C: .4byte gUnknown_3005B60 +_0810A940: .4byte gUnknown_20380BE +_0810A944: .4byte gUnknown_2023E88 +_0810A948: .4byte gUnknown_20380D7 +_0810A94C: .4byte gUnknown_8571268 +_0810A950: + ldr r4, _0810A99C + movs r3, #8 + ldrsh r0, [r2, r3] +_0810A956: + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r4 + ldrb r5, [r0] + lsls r0, r7, #2 + adds r1, r0, r7 + lsls r1, r1, #3 + add r1, sb + movs r4, #0xe + ldrsh r1, [r1, r4] + mov ip, r0 + cmp r1, #1 + bne _0810A9A4 + ldr r2, _0810A9A0 + lsls r3, r6, #4 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + mov sl, r0 + mov r0, r8 + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + muls r0, r1, r0 + cmp r0, #0 + bge _0810A994 + rsbs r0, r0, #0 +_0810A994: + mov r5, sl + strh r0, [r5, #0x26] + b _0810A9BE + .align 2, 0 +_0810A99C: .4byte gUnknown_8571278 +_0810A9A0: .4byte gUnknown_20205AC +_0810A9A4: + ldr r3, _0810A9F4 + lsls r4, r6, #4 + adds r2, r4, r6 + lsls r2, r2, #2 + adds r2, r2, r3 + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + mov r5, r8 + ldrh r1, [r5, #2] + muls r0, r1, r0 + strh r0, [r2, #0x24] + adds r2, r3, #0 + adds r3, r4, #0 +_0810A9BE: + mov r1, ip + adds r0, r1, r7 + lsls r0, r0, #3 + add r0, sb + movs r4, #8 + ldrsh r1, [r0, r4] + movs r5, #0xa + ldrsh r0, [r0, r5] + cmp r1, r0 + bne _0810A9E4 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x24] + strh r1, [r0, #0x26] + adds r0, r7, #0 + bl sub_080A34E4 +_0810A9E4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810A9F4: .4byte gUnknown_20205AC + thumb_func_end sub_0810A8E4 + + thumb_func_start sub_0810A9F8 +sub_0810A9F8: @ 0x0810A9F8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810AA18 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810AA20 + ldr r0, _0810AA1C + ldrh r1, [r4, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r4, #0x20] + b _0810AA2C + .align 2, 0 +_0810AA18: .4byte gUnknown_20380D6 +_0810AA1C: .4byte gUnknown_20380BE +_0810AA20: + ldr r1, _0810AA40 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + adds r0, r1, #0 +_0810AA2C: + ldrh r0, [r0, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _0810AA44 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810AA40: .4byte gUnknown_20380BE +_0810AA44: .4byte sub_0810AA48 + thumb_func_end sub_0810A9F8 + + thumb_func_start sub_0810AA48 +sub_0810AA48: @ 0x0810AA48 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0810AA5E + adds r0, r2, #0 + bl sub_080A34C4 +_0810AA5E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810AA48 + + thumb_func_start sub_0810AA64 +sub_0810AA64: @ 0x0810AA64 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810AA84 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810AA8C + ldr r0, _0810AA88 + ldrh r1, [r4, #0x20] + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r4, #0x20] + b _0810AA96 + .align 2, 0 +_0810AA84: .4byte gUnknown_20380D6 +_0810AA88: .4byte gUnknown_20380BE +_0810AA8C: + ldr r0, _0810AAA0 + ldrh r0, [r0] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] +_0810AA96: + ldr r0, _0810AAA4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810AAA0: .4byte gUnknown_20380BE +_0810AAA4: .4byte sub_0810AAA8 + thumb_func_end sub_0810AA64 + + thumb_func_start sub_0810AAA8 +sub_0810AAA8: @ 0x0810AAA8 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810AABE + adds r0, r2, #0 + bl sub_080A6014 +_0810AABE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810AAA8 + + thumb_func_start sub_0810AAC4 +sub_0810AAC4: @ 0x0810AAC4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810AB08 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r0, _0810AB0C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810AB14 + ldr r2, _0810AB10 + ldrh r0, [r5, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x22] + ldrh r1, [r2, #2] + subs r0, r0, r1 + strh r0, [r5, #0x22] + b _0810AB28 + .align 2, 0 +_0810AB08: .4byte gUnknown_20380D7 +_0810AB0C: .4byte gUnknown_20380D6 +_0810AB10: .4byte gUnknown_20380BE +_0810AB14: + ldr r0, _0810AB4C + ldrh r1, [r0] + ldrh r2, [r5, #0x20] + adds r1, r1, r2 + strh r1, [r5, #0x20] + ldrh r1, [r0, #2] + ldrh r2, [r5, #0x22] + adds r1, r1, r2 + strh r1, [r5, #0x22] + adds r2, r0, #0 +_0810AB28: + movs r0, #0 + strh r0, [r5, #0x2e] + ldrh r0, [r2, #4] + strh r0, [r5, #0x30] + ldrh r0, [r2, #6] + strh r0, [r5, #0x32] + ldrh r0, [r2, #8] + strh r0, [r5, #0x34] + ldr r1, _0810AB50 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810AB54 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810AB4C: .4byte gUnknown_20380BE +_0810AB50: .4byte sub_080A6014 +_0810AB54: .4byte sub_080A5BB4 + thumb_func_end sub_0810AAC4 + + thumb_func_start sub_0810AB58 +sub_0810AB58: @ 0x0810AB58 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _0810AB70 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _0810ABD0 + cmp r0, #1 + bgt _0810AB74 + cmp r0, #0 + beq _0810AB7E + b _0810ABD0 + .align 2, 0 +_0810AB70: .4byte gUnknown_20380BE +_0810AB74: + cmp r0, #2 + beq _0810AB88 + cmp r0, #3 + beq _0810ABAC + b _0810ABD0 +_0810AB7E: + ldr r0, _0810AB84 + b _0810ABD2 + .align 2, 0 +_0810AB84: .4byte gUnknown_20380D6 +_0810AB88: + ldr r4, _0810ABA0 + ldrb r0, [r4] + movs r6, #2 + eors r0, r6 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810ABA4 + ldrb r4, [r4] + b _0810ABD4 + .align 2, 0 +_0810ABA0: .4byte gUnknown_20380D6 +_0810ABA4: + ldrb r0, [r4] + adds r4, r6, #0 + eors r4, r0 + b _0810ABD4 +_0810ABAC: + ldr r0, _0810ABC8 + ldrb r0, [r0] + movs r4, #2 + eors r0, r4 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810ABD0 + ldr r0, _0810ABCC + ldrb r0, [r0] + eors r4, r0 + b _0810ABD4 + .align 2, 0 +_0810ABC8: .4byte gUnknown_20380D6 +_0810ABCC: .4byte gUnknown_20380D7 +_0810ABD0: + ldr r0, _0810ABF4 +_0810ABD2: + ldrb r4, [r0] +_0810ABD4: + ldr r0, _0810ABF8 + movs r2, #0xa + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0810ABFC + adds r0, r4, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + adds r0, r4, #0 + movs r1, #1 + b _0810AC0E + .align 2, 0 +_0810ABF4: .4byte gUnknown_20380D7 +_0810ABF8: .4byte gUnknown_20380BE +_0810ABFC: + adds r0, r4, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + adds r0, r4, #0 + movs r1, #3 +_0810AC0E: + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r7, _0810ACAC + ldr r6, _0810ACB0 + movs r1, #0 + ldrsh r0, [r6, r1] + lsls r0, r0, #1 + adds r0, r0, r7 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r2, #2 + ldrsh r0, [r6, r2] + muls r0, r1, r0 + asrs r0, r0, #8 + strh r0, [r5, #0x24] + movs r1, #0 + ldrsh r0, [r6, r1] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r7 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r2, #2 + ldrsh r0, [r6, r2] + muls r0, r1, r0 + asrs r0, r0, #8 + strh r0, [r5, #0x26] + ldrh r1, [r6, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810AC72 + adds r0, r4, #0 + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r5, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #5] +_0810AC72: + ldrb r2, [r5, #3] + lsls r2, r2, #0x1a + lsrs r2, r2, #0x1b + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + ldr r3, _0810ACB4 + lsls r2, r2, #3 + adds r2, r2, r3 + adds r1, #0x40 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r1, [r1] + strh r1, [r2, #6] + strh r1, [r2] + strh r0, [r2, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r2, #4] + ldrh r0, [r6, #6] + strh r0, [r5, #0x2e] + ldr r0, _0810ACB8 + str r0, [r5, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810ACAC: .4byte gUnknown_82FA8CC +_0810ACB0: .4byte gUnknown_20380BE +_0810ACB4: .4byte gUnknown_2021B3C +_0810ACB8: .4byte sub_0810EB18 + thumb_func_end sub_0810AB58 + + thumb_func_start sub_0810ACBC +sub_0810ACBC: @ 0x0810ACBC + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r5, _0810AD30 + ldrh r0, [r5, #6] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldr r6, _0810AD34 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + ldrh r0, [r5, #4] + strh r0, [r4, #0x38] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x3a] + ldrh r0, [r5, #8] + strh r0, [r4, #0x3c] + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + movs r3, #0xc + ldrsh r0, [r5, r3] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r3, _0810AD38 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0810AD3C + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + ldr r1, _0810AD40 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810AD30: .4byte gUnknown_20380BE +_0810AD34: .4byte gUnknown_20380D7 +_0810AD38: .4byte 0x000003FF +_0810AD3C: .4byte 0xFFFFFC00 +_0810AD40: .4byte sub_0810AD44 + thumb_func_end sub_0810ACBC + + thumb_func_start sub_0810AD44 +sub_0810AD44: @ 0x0810AD44 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810ADAE + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + ldrh r2, [r4, #0x3c] + adds r0, r0, r2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0810ADB4 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _0810ADB4 +_0810ADAE: + adds r0, r4, #0 + bl sub_080A34C4 +_0810ADB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810AD44 + + thumb_func_start sub_0810ADBC +sub_0810ADBC: @ 0x0810ADBC + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x38] + subs r0, #1 + strh r0, [r3, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810ADF4 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x36] + strh r0, [r3, #0x38] +_0810ADF4: + ldrh r0, [r3, #0x34] + subs r1, r0, #1 + strh r1, [r3, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0810AE06 + adds r0, r3, #0 + bl sub_080A34C4 +_0810AE06: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810ADBC + + thumb_func_start sub_0810AE0C +sub_0810AE0C: @ 0x0810AE0C + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810AE28 + ldr r0, _0810AE6C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810AE30 +_0810AE28: + ldr r1, _0810AE70 + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_0810AE30: + ldr r5, _0810AE6C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810AE70 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x22] + ldrh r0, [r4] + strh r0, [r6, #0x34] + ldrh r0, [r4, #6] + strh r0, [r6, #0x36] + strh r0, [r6, #0x38] + ldr r0, _0810AE74 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810AE6C: .4byte gUnknown_20380D7 +_0810AE70: .4byte gUnknown_20380BE +_0810AE74: .4byte sub_0810ADBC + thumb_func_end sub_0810AE0C + + thumb_func_start sub_0810AE78 +sub_0810AE78: @ 0x0810AE78 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r1, _0810AE94 + ldrh r0, [r1, #6] + strh r0, [r5, #0x2e] + movs r2, #0xe + ldrsh r0, [r1, r2] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0810AE9C + ldr r0, _0810AE98 + b _0810AE9E + .align 2, 0 +_0810AE94: .4byte gUnknown_20380BE +_0810AE98: .4byte gUnknown_20380D7 +_0810AE9C: + ldr r0, _0810AF24 +_0810AE9E: + ldrb r6, [r0] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810AEB6 + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810AEBE +_0810AEB6: + ldr r1, _0810AF28 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_0810AEBE: + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810AF28 + lsrs r0, r0, #0x18 + ldrh r3, [r4] + adds r0, r0, r3 + strh r0, [r5, #0x20] + adds r0, r6, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldrh r1, [r4, #0xe] + ldr r0, _0810AF2C + ands r0, r1 + strh r0, [r5, #0x36] + ldrh r0, [r4, #4] + strh r0, [r5, #0x38] + ldrh r0, [r4, #0xa] + strh r0, [r5, #0x3a] + ldrh r0, [r4, #8] + strh r0, [r5, #0x3c] + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + movs r3, #0xc + ldrsh r0, [r4, r3] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r3, _0810AF30 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0810AF34 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + ldr r1, _0810AF38 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810AF24: .4byte gUnknown_20380D6 +_0810AF28: .4byte gUnknown_20380BE +_0810AF2C: .4byte 0x00007FFF +_0810AF30: .4byte 0x000003FF +_0810AF34: .4byte 0xFFFFFC00 +_0810AF38: .4byte sub_0810AF3C + thumb_func_end sub_0810AE78 + + thumb_func_start sub_0810AF3C +sub_0810AF3C: @ 0x0810AF3C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + adds r0, 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 _0810AF92 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810AF92: + ldrh r0, [r4, #0x2e] + subs r1, r0, #1 + strh r1, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0810AFA4 + adds r0, r4, #0 + bl sub_080A34C4 +_0810AFA4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810AF3C + + thumb_func_start sub_0810AFAC +sub_0810AFAC: @ 0x0810AFAC + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6248 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + ldr r3, _0810AFE8 + movs r5, #6 + ldrsh r0, [r3, r5] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r5, _0810AFEC + adds r0, r5, #0 + ands r1, r0 + ldr r0, _0810AFF0 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + movs r1, #6 + ldrsh r0, [r3, r1] + cmp r0, #1 + bne _0810AFF4 + ldrb r0, [r4, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + b _0810B002 + .align 2, 0 +_0810AFE8: .4byte gUnknown_20380BE +_0810AFEC: .4byte 0x000003FF +_0810AFF0: .4byte 0xFFFFFC00 +_0810AFF4: + cmp r0, #2 + bne _0810B006 + ldrb r0, [r4, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x20 +_0810B002: + orrs r1, r0 + strb r1, [r4, #3] +_0810B006: + ldr r0, _0810B020 + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + ldr r0, _0810B024 + str r0, [r4, #0x1c] + ldr r1, _0810B028 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810B020: .4byte gUnknown_20380BE +_0810B024: .4byte sub_080A5D78 +_0810B028: .4byte sub_080A34C4 + thumb_func_end sub_0810AFAC + + thumb_func_start sub_0810B02C +sub_0810B02C: @ 0x0810B02C + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0810B074 + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + ldr r1, _0810B078 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r1 + lsls r0, r0, #0x18 + ldr r5, _0810B07C + lsrs r0, r0, #0x18 + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r4, #8] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r5, #4] + strh r0, [r4, #0xc] + ldr r0, _0810B080 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810B074: .4byte gUnknown_20380D7 +_0810B078: .4byte gUnknown_3005B60 +_0810B07C: .4byte gUnknown_20380BE +_0810B080: .4byte sub_0810B084 + thumb_func_end sub_0810B02C + + thumb_func_start sub_0810B084 +sub_0810B084: @ 0x0810B084 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r5, #0 + movs r7, #0 + ldr r1, _0810B0C4 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r2, [r0, #0xc] + str r2, [sp] + ldrh r4, [r0, #8] + ldrh r6, [r0, #0xa] + movs r3, #0xc + ldrsh r0, [r0, r3] + mov sl, r1 + cmp r0, #0 + bne _0810B0C8 + movs r0, #0 + mov r8, r0 + movs r2, #1 + movs r1, #0x10 + mov ip, r1 + b _0810B0D2 + .align 2, 0 +_0810B0C4: .4byte gUnknown_3005B60 +_0810B0C8: + movs r2, #0x10 + mov ip, r2 + movs r3, #8 + mov r8, r3 + movs r2, #4 +_0810B0D2: + mov r0, sb + lsls r1, r0, #2 + adds r0, r1, r0 + lsls r0, r0, #3 + add r0, sl + movs r3, #0x1c + ldrsh r0, [r0, r3] + mov sl, r1 + cmp r0, #0xa + bhi _0810B1C8 + lsls r0, r0, #2 + ldr r1, _0810B0F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810B0F0: .4byte _0810B0F4 +_0810B0F4: @ jump table + .4byte _0810B120 @ case 0 + .4byte _0810B1C8 @ case 1 + .4byte _0810B134 @ case 2 + .4byte _0810B1C8 @ case 3 + .4byte _0810B154 @ case 4 + .4byte _0810B1C8 @ case 5 + .4byte _0810B16A @ case 6 + .4byte _0810B1C8 @ case 7 + .4byte _0810B18C @ case 8 + .4byte _0810B1C8 @ case 9 + .4byte _0810B1C0 @ case 10 +_0810B120: + ldr r0, _0810B130 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + lsls r2, r6, #0x10 + asrs r2, r2, #0x10 + mov r4, ip + lsls r3, r4, #0x10 + b _0810B1A2 + .align 2, 0 +_0810B130: .4byte gUnknown_857140C +_0810B134: + mov r0, ip + lsls r3, r0, #0x11 + mov r1, r8 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0810B150 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + lsls r2, r6, #0x10 + asrs r2, r2, #0x10 + b _0810B1A2 + .align 2, 0 +_0810B150: .4byte gUnknown_857140C +_0810B154: + mov r3, ip + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + b _0810B196 +_0810B16A: + mov r0, ip + lsls r3, r0, #0x12 + lsls r0, r2, #1 + adds r0, r0, r2 + add r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0810B188 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + lsls r2, r6, #0x10 + asrs r2, r2, #0x10 + b _0810B1A2 + .align 2, 0 +_0810B188: .4byte gUnknown_857140C +_0810B18C: + mov r1, ip + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r3, r0, #2 + adds r3, r3, r0 +_0810B196: + ldr r0, _0810B1BC + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + lsls r2, r6, #0x10 + asrs r2, r2, #0x10 + lsls r3, r3, #0x10 +_0810B1A2: + asrs r3, r3, #0x10 + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _0810B1C8 + .align 2, 0 +_0810B1BC: .4byte gUnknown_857140C +_0810B1C0: + mov r0, sb + bl sub_080A34E4 + b _0810B20C +_0810B1C8: + cmp r7, #0 + beq _0810B1FC + ldr r4, _0810B21C + lsls r3, r5, #4 + adds r3, r3, r5 + lsls r3, r3, #2 + adds r0, r3, r4 + ldrh r5, [r0, #4] + lsls r2, r5, #0x16 + lsrs r2, r2, #0x16 + add r2, r8 + ldr r6, _0810B220 + adds r1, r6, #0 + ands r2, r1 + ldr r1, _0810B224 + ands r1, r5 + orrs r1, r2 + strh r1, [r0, #4] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, #0x2e] + adds r4, #0x1c + adds r3, r3, r4 + ldr r1, [r3] + bl _call_via_r1 +_0810B1FC: + ldr r0, _0810B228 + mov r1, sl + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1c] + adds r0, #1 + strh r0, [r1, #0x1c] +_0810B20C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810B21C: .4byte gUnknown_20205AC +_0810B220: .4byte 0x000003FF +_0810B224: .4byte 0xFFFFFC00 +_0810B228: .4byte gUnknown_3005B60 + thumb_func_end sub_0810B084 + + thumb_func_start sub_0810B22C +sub_0810B22C: @ 0x0810B22C + push {lr} + adds r3, r0, #0 + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _0810B24E + ldrb r1, [r3, #1] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #1] + ldrb r0, [r3, #3] + ands r2, r0 + strb r2, [r3, #3] + b _0810B262 +_0810B24E: + ldrb r2, [r3, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #1] + ldrb r0, [r3, #3] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r3, #3] +_0810B262: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bne _0810B276 + adds r0, r3, #0 + bl sub_08006E00 +_0810B276: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810B22C + + thumb_func_start sub_0810B27C +sub_0810B27C: @ 0x0810B27C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _0810B2E4 + ldrh r1, [r0] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + strh r1, [r4, #0x20] + ldrh r0, [r0, #2] + ldrh r3, [r4, #0x22] + adds r0, r0, r3 + strh r0, [r4, #0x22] + ldr r0, _0810B2E8 + adds r1, #0x20 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r7, #0x22 + ldrsh r2, [r4, r7] + adds r3, r4, #0 + adds r3, #0x43 + ldrb r3, [r3] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0810B2EC + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r6, r2, r3 + ldrh r5, [r6, #4] + lsls r1, r5, #0x16 + lsrs r1, r1, #0x16 + adds r1, #8 + ldr r7, _0810B2F0 + adds r0, r7, #0 + ands r1, r0 + ldr r0, _0810B2F4 + ands r0, r5 + orrs r0, r1 + strh r0, [r6, #4] + ldr r1, _0810B2F8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r3, #0x1c + adds r2, r2, r3 + ldr r0, _0810B2FC + str r0, [r2] + str r0, [r4, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810B2E4: .4byte gUnknown_20380BE +_0810B2E8: .4byte gUnknown_8571424 +_0810B2EC: .4byte gUnknown_20205AC +_0810B2F0: .4byte 0x000003FF +_0810B2F4: .4byte 0xFFFFFC00 +_0810B2F8: .4byte gUnknown_203809E +_0810B2FC: .4byte sub_0810B300 + thumb_func_end sub_0810B27C + + thumb_func_start sub_0810B300 +sub_0810B300: @ 0x0810B300 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _0810B334 + movs r0, #0 + strh r0, [r3, #0x2e] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] +_0810B334: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _0810B348 + adds r0, r3, #0 + bl sub_080A34C4 +_0810B348: + pop {r0} + bx r0 + thumb_func_end sub_0810B300 + + thumb_func_start sub_0810B34C +sub_0810B34C: @ 0x0810B34C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0810B36C + adds r5, r1, r0 + ldr r0, _0810B370 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810B378 + ldr r4, _0810B374 + b _0810B37A + .align 2, 0 +_0810B36C: .4byte gUnknown_3005B60 +_0810B370: .4byte gUnknown_20380BE +_0810B374: .4byte gUnknown_20380D6 +_0810B378: + ldr r4, _0810B3BC +_0810B37A: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x24] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x26] + ldr r2, _0810B3C0 + ldrh r0, [r2, #2] + 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, #6] + strh r0, [r5, #0x1e] + strh r1, [r5, #0x20] + ldrh r0, [r2, #4] + strh r0, [r5, #0x22] + ldr r0, _0810B3C4 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810B3BC: .4byte gUnknown_20380D7 +_0810B3C0: .4byte gUnknown_20380BE +_0810B3C4: .4byte sub_0810B3C8 + thumb_func_end sub_0810B34C + + thumb_func_start sub_0810B3C8 +sub_0810B3C8: @ 0x0810B3C8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r2, r6, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0810B4B0 + adds r5, r0, r1 + movs r1, #0x14 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0810B4C8 + ldrh r0, [r5, #0x20] + adds r0, #1 + movs r7, #0 + strh r0, [r5, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x22 + ldrsh r1, [r5, r2] + cmp r0, r1 + ble _0810B4D6 + strh r7, [r5, #0x20] + ldr r0, _0810B4B4 + movs r3, #0x24 + ldrsh r1, [r5, r3] + movs r3, #0x26 + ldrsh r2, [r5, r3] + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0810B4D6 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0810B4B8 + adds r4, r4, r0 + ldr r1, _0810B4BC + movs r2, #0x1a + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsb r3, [r0, r3] + ldrh r0, [r4, #0x20] + adds r3, r3, r0 + strh r3, [r4, #0x20] + movs r2, #0x1a + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + adds r1, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + ldrh r0, [r4, #0x22] + adds r2, r2, r0 + strh r2, [r4, #0x22] + movs r1, #0x18 + ldrsh r0, [r5, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + movs r0, #0x28 + subs r0, 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_080A671C + ldr r1, _0810B4C0 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810B4C4 + str r0, [r4, #0x1c] + ldrh r0, [r5, #0x1a] + adds r0, #1 + strh r0, [r5, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _0810B480 + strh r7, [r5, #0x1a] +_0810B480: + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x1e + ldrsh r1, [r5, r2] + cmp r0, r1 + blt _0810B4A2 + strh r7, [r5, #0x1c] + ldrh r1, [r5, #0x18] + movs r3, #0x18 + ldrsh r0, [r5, r3] + cmp r0, #5 + bgt _0810B4A2 + adds r0, r1, #1 + strh r0, [r5, #0x18] +_0810B4A2: + ldrh r0, [r5, #0x16] + adds r0, #1 + strh r0, [r5, #0x16] + ldrh r0, [r5, #0x14] + subs r0, #1 + strh r0, [r5, #0x14] + b _0810B4D6 + .align 2, 0 +_0810B4B0: .4byte gUnknown_3005B60 +_0810B4B4: .4byte gUnknown_857148C +_0810B4B8: .4byte gUnknown_20205AC +_0810B4BC: .4byte gUnknown_857143C +_0810B4C0: .4byte sub_0810B510 +_0810B4C4: .4byte sub_080A60A0 +_0810B4C8: + movs r1, #0x16 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810B4D6 + adds r0, r2, #0 + bl sub_080A34E4 +_0810B4D6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0810B3C8 + + thumb_func_start sub_0810B4DC +sub_0810B4DC: @ 0x0810B4DC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810B504 + ldr r2, _0810B50C + movs r0, #0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x16] + subs r1, #1 + strh r1, [r0, #0x16] + adds r0, r4, #0 + bl sub_08006E00 +_0810B504: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B50C: .4byte gUnknown_3005B60 + thumb_func_end sub_0810B4DC + + thumb_func_start sub_0810B510 +sub_0810B510: @ 0x0810B510 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0810B524 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B524: .4byte sub_0810B4DC + thumb_func_end sub_0810B510 + + thumb_func_start sub_0810B528 +sub_0810B528: @ 0x0810B528 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810B53C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810B544 + ldr r4, _0810B540 + b _0810B546 + .align 2, 0 +_0810B53C: .4byte gUnknown_20380BE +_0810B540: .4byte gUnknown_20380D6 +_0810B544: + ldr r4, _0810B574 +_0810B546: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r1, _0810B578 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810B57C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810B574: .4byte gUnknown_20380D7 +_0810B578: .4byte sub_080A6014 +_0810B57C: .4byte sub_080A6084 + thumb_func_end sub_0810B528 + + thumb_func_start sub_0810B580 +sub_0810B580: @ 0x0810B580 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810B594 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810B59C + ldr r4, _0810B598 + b _0810B59E + .align 2, 0 +_0810B594: .4byte gUnknown_20380BE +_0810B598: .4byte gUnknown_20380D6 +_0810B59C: + ldr r4, _0810B5D8 +_0810B59E: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r1, _0810B5DC + ldrh r0, [r1, #2] + strh r0, [r5, #0x24] + ldrh r0, [r1, #4] + strh r0, [r5, #0x26] + ldr r1, _0810B5E0 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810B5E4 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810B5D8: .4byte gUnknown_20380D7 +_0810B5DC: .4byte gUnknown_20380BE +_0810B5E0: .4byte sub_080A34C4 +_0810B5E4: .4byte sub_080A60A0 + thumb_func_end sub_0810B580 + + thumb_func_start sub_0810B5E8 +sub_0810B5E8: @ 0x0810B5E8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #1 + bl sub_08007F70 + ldr r4, _0810B640 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x3a] + movs r0, #0x10 + strh r0, [r5, #0x3c] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810B636 + movs r1, #0x3c + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 + strh r0, [r5, #0x3c] +_0810B636: + ldr r0, _0810B644 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810B640: .4byte gUnknown_20380D6 +_0810B644: .4byte sub_0810B648 + thumb_func_end sub_0810B5E8 + + thumb_func_start sub_0810B648 +sub_0810B648: @ 0x0810B648 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810B65A + cmp r0, #1 + beq _0810B670 + b _0810B6A0 +_0810B65A: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _0810B6A0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810B6A0 +_0810B670: + ldrh r2, [r4, #0x3c] + ldrh r1, [r4, #0x20] + adds r0, r2, r1 + strh r0, [r4, #0x20] + ldr r3, _0810B6A8 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x24] + adds r2, r2, r1 + strh r2, [r0, #0x24] + ldrh r0, [r4, #0x20] + adds r0, #0x50 + lsls r0, r0, #0x10 + movs r1, #0xc8 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _0810B6A0 + adds r0, r4, #0 + bl sub_080A6014 +_0810B6A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810B6A8: .4byte gUnknown_20205AC + thumb_func_end sub_0810B648 + + thumb_func_start sub_0810B6AC +sub_0810B6AC: @ 0x0810B6AC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _0810B6D0 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0810B740 + cmp r0, #1 + bgt _0810B6D4 + cmp r0, #0 + beq _0810B6E0 + b _0810B810 + .align 2, 0 +_0810B6D0: .4byte gUnknown_3005B60 +_0810B6D4: + cmp r0, #2 + beq _0810B79C + cmp r0, #3 + bne _0810B6DE + b _0810B7F0 +_0810B6DE: + b _0810B810 +_0810B6E0: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + strh r0, [r5, #0x26] + ldr r4, _0810B714 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x24] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810B71C + ldr r0, _0810B718 + strh r0, [r5, #0x24] + movs r0, #2 + b _0810B722 + .align 2, 0 +_0810B714: .4byte gUnknown_20380D6 +_0810B718: .4byte 0x0000FFE0 +_0810B71C: + movs r0, #0x20 + strh r0, [r5, #0x24] + ldr r0, _0810B738 +_0810B722: + strh r0, [r5, #0x22] + ldr r2, _0810B73C + movs r0, #0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r5, #0x24] + strh r1, [r0, #0x24] + b _0810B7E2 + .align 2, 0 +_0810B738: .4byte 0x0000FFFE +_0810B73C: .4byte gUnknown_20205AC +_0810B740: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810B810 + movs r0, #0 + strh r0, [r5, #0xa] + ldr r4, _0810B798 + movs r1, #0x26 + ldrsh r0, [r5, r1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + adds r2, #0x3e + ldrb r3, [r2] + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r5, #0x24] + movs r2, #0x24 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0810B7E2 + 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, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x24] + b _0810B810 + .align 2, 0 +_0810B798: .4byte gUnknown_20205AC +_0810B79C: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810B810 + movs r0, #0 + strh r0, [r5, #0xa] + ldr r1, _0810B7EC + movs r2, #0x26 + ldrsh r0, [r5, r2] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + adds r2, #0x3e + ldrb r3, [r2] + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + bne _0810B810 +_0810B7E2: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _0810B810 + .align 2, 0 +_0810B7EC: .4byte gUnknown_20205AC +_0810B7F0: + ldr r2, _0810B818 + movs r0, #0x26 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + adds r0, r3, #0 + bl sub_080A34E4 +_0810B810: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810B818: .4byte gUnknown_20205AC + thumb_func_end sub_0810B6AC + + thumb_func_start sub_0810B81C +sub_0810B81C: @ 0x0810B81C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0810B840 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _0810B836 + b _0810B95C +_0810B836: + cmp r0, #1 + bgt _0810B844 + cmp r0, #0 + beq _0810B84C + b _0810B99E + .align 2, 0 +_0810B840: .4byte gUnknown_3005B60 +_0810B844: + cmp r0, #2 + bne _0810B84A + b _0810B990 +_0810B84A: + b _0810B99E +_0810B84C: + ldr r4, _0810B88C + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _0810B862 + movs r1, #1 +_0810B862: + movs r6, #0 + strh r1, [r5, #0xa] + ldr r0, _0810B890 + movs r1, #0 + ldrsh r2, [r0, r1] + adds r3, r0, #0 + cmp r2, #0 + beq _0810B898 + cmp r2, #4 + beq _0810B8C0 + ldrh r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810B8F8 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0xe] + ldr r0, _0810B894 + b _0810B900 + .align 2, 0 +_0810B88C: .4byte gUnknown_20380D6 +_0810B890: .4byte gUnknown_20380BE +_0810B894: .4byte 0x0000FFF0 +_0810B898: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xe] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + movs r2, #0xa + ldrsh r0, [r5, r2] + lsls r0, r0, #7 + adds r0, #0x78 + strh r0, [r5, #0x10] + b _0810B936 +_0810B8C0: + movs r0, #0xa + ldrsh r1, [r5, r0] + lsls r1, r1, #7 + movs r0, #0x78 + subs r0, r0, r1 + strh r0, [r5, #0xe] + ldr r4, _0810B8F4 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0xa + ldrsh r1, [r5, r2] + lsls r1, r1, #5 + subs r0, r0, r1 + strh r0, [r5, #0x10] + b _0810B936 + .align 2, 0 +_0810B8F4: .4byte gUnknown_20380D7 +_0810B8F8: + ldr r0, _0810B91C + strh r0, [r5, #0xe] + movs r0, #0x80 + lsls r0, r0, #1 +_0810B900: + strh r0, [r5, #0x10] + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _0810B920 + movs r2, #0 + ldrsh r0, [r3, r2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + movs r0, #0x50 + subs r0, r0, r1 + strh r0, [r5, #0x12] + b _0810B936 + .align 2, 0 +_0810B91C: .4byte 0x0000FFF0 +_0810B920: + movs r0, #0 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, 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] +_0810B936: + movs r2, #0xe + ldrsh r1, [r5, r2] + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _0810B94C + movs r1, #0 + movs r0, #1 + strh r0, [r5, #0xa] + strh r1, [r5, #0x14] + b _0810B988 +_0810B94C: + ldr r0, _0810B958 + strh r0, [r5, #0xa] + movs r0, #3 + strh r0, [r5, #0x14] + b _0810B988 + .align 2, 0 +_0810B958: .4byte 0x0000FFFF +_0810B95C: + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0810B99E + movs r0, #0 + strh r0, [r5, #0xc] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0810B9A4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810B988 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0810B9A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810B99E +_0810B988: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _0810B99E +_0810B990: + movs r1, #0x16 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810B99E + adds r0, r4, #0 + bl sub_080A34E4 +_0810B99E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0810B81C + + thumb_func_start sub_0810B9A4 +sub_0810B9A4: @ 0x0810B9A4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _0810BA30 + movs r2, #0xe + ldrsh r1, [r4, r2] + movs r3, #0x12 + ldrsh r2, [r4, r3] + movs r3, #0x23 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0810B9DA + ldr r1, _0810BA34 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r5, [r0, #0x3a] + movs r1, #7 + strh r1, [r0, #0x3c] + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] +_0810B9DA: + ldrh r1, [r4, #0xa] + ldrh r5, [r4, #0x14] + adds r0, r1, r5 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0810B9EC + movs r0, #3 + strh r0, [r4, #0x14] +_0810B9EC: + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #3 + ble _0810B9F8 + movs r0, #0 + strh r0, [r4, #0x14] +_0810B9F8: + movs r3, #0xa + ldrsh r0, [r4, r3] + lsls r0, r0, #4 + ldrh r5, [r4, #0xe] + adds r2, r0, r5 + strh r2, [r4, #0xe] + lsls r0, r1, #0x10 + asrs r3, r0, #0x10 + cmp r3, #1 + bne _0810BA18 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x10 + ldrsh r1, [r4, r5] + cmp r0, r1 + bge _0810BA2C +_0810BA18: + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + bne _0810BA38 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x10 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _0810BA38 +_0810BA2C: + movs r0, #1 + b _0810BA3A + .align 2, 0 +_0810BA30: .4byte gUnknown_85715E4 +_0810BA34: .4byte gUnknown_20205AC +_0810BA38: + movs r0, #0 +_0810BA3A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0810B9A4 + + thumb_func_start sub_0810BA40 +sub_0810BA40: @ 0x0810BA40 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _0810BA80 + ldr r3, _0810BA88 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 +_0810BA80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BA88: .4byte gUnknown_3005B60 + thumb_func_end sub_0810BA40 + + thumb_func_start sub_0810BA8C +sub_0810BA8C: @ 0x0810BA8C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0810BA9E + cmp r0, #1 + beq _0810BAD0 + b _0810BAE4 +_0810BA9E: + ldr r4, _0810BACC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + adds r0, r5, #0 + movs r1, #2 + bl sub_08007F70 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0810BAE4 + .align 2, 0 +_0810BACC: .4byte gUnknown_20380D6 +_0810BAD0: + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810BAE4 + adds r0, r5, #0 + bl sub_080A6014 +_0810BAE4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810BA8C + + thumb_func_start sub_0810BAEC +sub_0810BAEC: @ 0x0810BAEC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0810BB10 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #4 + bls _0810BB06 + b _0810BC78 +_0810BB06: + lsls r0, r0, #2 + ldr r1, _0810BB14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810BB10: .4byte gUnknown_3005B60 +_0810BB14: .4byte _0810BB18 +_0810BB18: @ jump table + .4byte _0810BB2C @ case 0 + .4byte _0810BBBC @ case 1 + .4byte _0810BBF8 @ case 2 + .4byte _0810BC54 @ case 3 + .4byte _0810BC64 @ case 4 +_0810BB2C: + ldr r4, _0810BBB0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x16] + movs r0, #4 + strh r0, [r5, #0x18] + ldr r0, _0810BBB4 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1c] + movs r2, #0x1c + ldrsh r0, [r5, r2] + movs r2, #0x14 + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r1, #5 + bl __divsi3 + strh r0, [r5, #0x1a] + movs r0, #7 + strh r0, [r5, #0x10] + ldr r0, _0810BBB8 + strh r0, [r5, #0x12] + movs r0, #0xc + strh r0, [r5, #0x1e] + subs r0, #0x4c + bl sub_080A4A40 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0x20] + movs r0, #0x3f + bl sub_080A4A40 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + 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, r0, r1 + movs r1, #3 + bl __divsi3 + strh r0, [r5, #0x26] + ldrh r0, [r5, #8] + adds r0, #1 + b _0810BC76 + .align 2, 0 +_0810BBB0: .4byte gUnknown_20380D6 +_0810BBB4: .4byte gUnknown_20380D7 +_0810BBB8: .4byte 0x0000FFFF +_0810BBBC: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0810BBEC + movs r0, #0 + strh r0, [r5, #0xa] + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0810BC80 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810BBEC + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #5 + bne _0810BBE6 + movs r0, #3 + b _0810BBEA +_0810BBE6: + ldrh r0, [r5, #8] + adds r0, #1 +_0810BBEA: + strh r0, [r5, #8] +_0810BBEC: + ldrh r1, [r5, #0x1e] + movs r2, #0x1e + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0810BC78 + b _0810BC6E +_0810BBF8: + ldrh r1, [r5, #0x1e] + movs r2, #0x1e + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0810BC06 + subs r0, r1, #1 + strh r0, [r5, #0x1e] +_0810BC06: + ldrh r0, [r5, #0xa] + adds r0, #1 + movs r3, #0 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0810BC78 + strh r3, [r5, #0xa] + ldrh r1, [r5, #0xc] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0810BC32 + movs r0, #4 + strh r0, [r5, #0x16] + movs r0, #0x44 + strh r0, [r5, #0x18] + strh r3, [r5, #0x10] + strh r2, [r5, #0x12] + b _0810BC42 +_0810BC32: + movs r0, #0x44 + strh r0, [r5, #0x16] + movs r0, #4 + strh r0, [r5, #0x18] + movs r0, #7 + strh r0, [r5, #0x10] + ldr r0, _0810BC50 + strh r0, [r5, #0x12] +_0810BC42: + movs r1, #0x1e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0810BC74 + movs r0, #4 + b _0810BC76 + .align 2, 0 +_0810BC50: .4byte 0x0000FFFF +_0810BC54: + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810BC78 + adds r0, r2, #0 + bl sub_080A34E4 + b _0810BC78 +_0810BC64: + ldrh r1, [r5, #0x1e] + movs r2, #0x1e + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0810BC74 +_0810BC6E: + subs r0, r1, #1 + strh r0, [r5, #0x1e] + b _0810BC78 +_0810BC74: + movs r0, #1 +_0810BC76: + strh r0, [r5, #8] +_0810BC78: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810BAEC + + thumb_func_start sub_0810BC80 +sub_0810BC80: @ 0x0810BC80 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _0810BD48 + movs r2, #0x14 + ldrsh r1, [r4, r2] + movs r3, #0x16 + ldrsh r2, [r4, r3] + movs r3, #0x23 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0810BCEC + ldr r1, _0810BD4C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrh r2, [r3, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + ldrh r6, [r4, #0x10] + adds r1, r1, r6 + ldr r6, _0810BD50 + adds r0, r6, #0 + ands r1, r0 + ldr r0, _0810BD54 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0x10] + adds r0, r0, r1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0810BCD4 + movs r0, #7 + strh r0, [r4, #0x10] +_0810BCD4: + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #7 + ble _0810BCE0 + movs r0, #0 + strh r0, [r4, #0x10] +_0810BCE0: + strh r5, [r3, #0x3a] + movs r0, #3 + strh r0, [r3, #0x3c] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] +_0810BCEC: + movs r3, #0x10 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0810BD0E + movs r5, #0x12 + ldrsh r0, [r4, r5] + cmp r0, #0 + ble _0810BD0E + ldrh r1, [r4, #0x26] + ldrh r6, [r4, #0x24] + adds r1, r1, r6 + strh r1, [r4, #0x24] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x76 + bl sub_080A307C +_0810BD0E: + movs r0, #0x12 + ldrsh r3, [r4, r0] + ldrh r2, [r4, #0x16] + cmp r3, #0 + bge _0810BD24 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x18 + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _0810BD34 +_0810BD24: + cmp r3, #0 + ble _0810BD58 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x18 + ldrsh r1, [r4, r6] + cmp r0, r1 + blt _0810BD58 +_0810BD34: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x1a] + ldrh r1, [r4, #0x14] + adds r0, r0, r1 + strh r0, [r4, #0x14] + movs r0, #1 + b _0810BD64 + .align 2, 0 +_0810BD48: .4byte gUnknown_8571614 +_0810BD4C: .4byte gUnknown_20205AC +_0810BD50: .4byte 0x000003FF +_0810BD54: .4byte 0xFFFFFC00 +_0810BD58: + movs r3, #0x12 + ldrsh r0, [r4, r3] + lsls r0, r0, #3 + adds r0, r2, r0 + strh r0, [r4, #0x16] + movs r0, #0 +_0810BD64: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0810BC80 + + thumb_func_start sub_0810BD6C +sub_0810BD6C: @ 0x0810BD6C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _0810BDA2 + ldr r3, _0810BDA8 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0810BDA2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BDA8: .4byte gUnknown_3005B60 + thumb_func_end sub_0810BD6C + + thumb_func_start sub_0810BDAC +sub_0810BDAC: @ 0x0810BDAC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0810BDD0 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0810BE28 + cmp r0, #1 + bgt _0810BDD4 + cmp r0, #0 + beq _0810BDDA + b _0810BE5E + .align 2, 0 +_0810BDD0: .4byte gUnknown_3005B60 +_0810BDD4: + cmp r0, #2 + beq _0810BE50 + b _0810BE5E +_0810BDDA: + ldr r0, _0810BE24 + ldrb r0, [r0] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + strh r0, [r5, #0x26] + strh r0, [r5, #0x24] + cmp r0, #0x10 + ble _0810BE04 + adds r2, r0, #0 +_0810BDF4: + adds r1, r2, #0 + subs r1, #0x20 + adds r2, r1, #0 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bgt _0810BDF4 + strh r1, [r5, #0x24] +_0810BE04: + ldr r4, _0810BE24 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #2 + strh r0, [r5, #0x20] + b _0810BE48 + .align 2, 0 +_0810BE24: .4byte gUnknown_20380D7 +_0810BE28: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810BE5E + movs r0, #0 + strh r0, [r5, #0xa] + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0810BE64 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810BE5E +_0810BE48: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _0810BE5E +_0810BE50: + movs r1, #0x1c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810BE5E + adds r0, r2, #0 + bl sub_080A34E4 +_0810BE5E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0810BDAC + + thumb_func_start sub_0810BE64 +sub_0810BE64: @ 0x0810BE64 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _0810BEC0 + movs r2, #0x22 + ldrsh r1, [r4, r2] + movs r3, #0x24 + ldrsh r2, [r4, r3] + ldrh r3, [r4, #0x20] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0810BEA8 + ldr r3, _0810BEC4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r1, r0, r1 + ldr r2, _0810BEC8 + str r2, [r1] + adds r0, r0, r3 + strh r5, [r0, #0x3a] + movs r1, #0xa + strh r1, [r0, #0x3c] + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] +_0810BEA8: + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r3, #0x26 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _0810BECC + adds r0, r2, #0 + adds r0, #0x20 + strh r0, [r4, #0x24] + movs r0, #0 + b _0810BECE + .align 2, 0 +_0810BEC0: .4byte gUnknown_85712A4 +_0810BEC4: .4byte gUnknown_20205AC +_0810BEC8: .4byte sub_0810BED4 +_0810BECC: + movs r0, #1 +_0810BECE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0810BE64 + + thumb_func_start sub_0810BED4 +sub_0810BED4: @ 0x0810BED4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0810BF08 + ldr r3, _0810BF10 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0810BF08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810BF10: .4byte gUnknown_3005B60 + thumb_func_end sub_0810BED4 + + thumb_func_start sub_0810BF14 +sub_0810BF14: @ 0x0810BF14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #7 + ldr r3, _0810C01C + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0810C020 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + ldr r4, _0810C024 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _0810C028 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r4] + movs r1, #3 + str r3, [sp] + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0810C02C + ldrh r0, [r1, #8] + strh r0, [r5, #0x2e] + ldrh r0, [r1] + ldr r3, [sp] + adds r0, r0, r3 + strh r0, [r5, #0x30] + ldrh r0, [r1, #4] + mov r4, sb + adds r0, r4, r0 + strh r0, [r5, #0x32] + ldrh r0, [r1, #2] + adds r0, r0, r6 + strh r0, [r5, #0x34] + ldrh r0, [r1, #6] + mov r7, r8 + adds r0, r7, r0 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A5DB4 + adds r4, #0x20 + movs r0, #0x98 + lsls r0, r0, #1 + mov ip, r0 + ldr r3, [sp] + cmp r4, ip + bhi _0810BFEE + adds r0, r7, #0 + adds r0, #0x20 + ldrh r1, [r5, #0x30] + ldrh r2, [r5, #0x32] + cmp r0, #0xe0 + bhi _0810BFEE + adds r4, r1, #0 + mov sl, ip +_0810BFBA: + mov r7, sb + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r4 + lsls r1, r1, #0x10 + mov r7, r8 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsrs r0, r1, #0x10 + mov sb, r0 + movs r7, #0x80 + lsls r7, r7, #0xe + adds r1, r1, r7 + lsrs r1, r1, #0x10 + cmp r1, sl + bhi _0810BFEE + mov r1, r8 + lsls r0, r1, #0x10 + adds r0, r0, r7 + lsrs r0, r0, #0x10 + cmp r0, #0xe0 + bls _0810BFBA +_0810BFEE: + ldrh r0, [r5, #0x30] + rsbs r7, r0, #0 + strh r7, [r5, #0x30] + ldrh r0, [r5, #0x32] + rsbs r4, r0, #0 + strh r4, [r5, #0x32] + lsls r0, r3, #0x10 + movs r1, #0x80 + lsls r1, r1, #0xe + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r2, #0x98 + lsls r2, r2, #1 + mov ip, r2 + ldr r1, _0810C02C + mov sl, r1 + cmp r0, ip + bhi _0810C05A + lsls r1, r6, #0x10 + movs r2, #0x80 + lsls r2, r2, #0xe + adds r0, r1, r2 + b _0810C052 + .align 2, 0 +_0810C01C: .4byte 0x000003FF +_0810C020: .4byte 0xFFFFFC00 +_0810C024: .4byte gUnknown_20380D7 +_0810C028: .4byte gUnknown_20380D6 +_0810C02C: .4byte gUnknown_20380BE +_0810C030: + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r7 + lsls r1, r1, #0x10 + asrs r0, r2, #0x10 + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsrs r3, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0xe + adds r1, r1, r0 + lsrs r1, r1, #0x10 + cmp r1, ip + bhi _0810C05A + lsls r1, r6, #0x10 + adds r0, r1, r0 +_0810C052: + lsrs r0, r0, #0x10 + adds r2, r1, #0 + cmp r0, #0xe0 + bls _0810C030 +_0810C05A: + strh r3, [r5, #0x20] + strh r6, [r5, #0x22] + mov r1, sl + ldrh r0, [r1, #8] + strh r0, [r5, #0x2e] + strh r3, [r5, #0x30] + mov r2, sb + strh r2, [r5, #0x32] + strh r6, [r5, #0x34] + mov r3, r8 + strh r3, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A5DB4 + mov r7, sl + ldrh r0, [r7, #0xa] + strh r0, [r5, #0x34] + ldrh r0, [r7, #0xc] + strh r0, [r5, #0x36] + ldr r0, _0810C094 + str r0, [r5, #0x1c] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C094: .4byte sub_0810C098 + thumb_func_end sub_0810BF14 + + thumb_func_start sub_0810C098 +sub_0810C098: @ 0x0810C098 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810C0F0 + ldrh r1, [r4, #0x30] + ldrh r2, [r4, #0x38] + adds r1, r1, r2 + strh r1, [r4, #0x38] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x3a] + adds r0, 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_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r2, #0x34 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x36] + ldrh r2, [r4, #0x3c] + adds r0, r0, r2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x3c] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + b _0810C0F6 +_0810C0F0: + adds r0, r4, #0 + bl sub_080A34C4 +_0810C0F6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810C098 + + thumb_func_start sub_0810C0FC +sub_0810C0FC: @ 0x0810C0FC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810C130 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + movs r0, #0x3c + strh r0, [r4, #0x30] + movs r0, #9 + strh r0, [r4, #0x32] + movs r0, #0x1e + strh r0, [r4, #0x34] + movs r0, #0xfe + lsls r0, r0, #8 + strh r0, [r4, #0x36] + ldr r1, _0810C134 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, _0810C138 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810C130: .4byte gUnknown_20380BE +_0810C134: .4byte sub_080A34C4 +_0810C138: .4byte sub_080A5C14 + thumb_func_end sub_0810C0FC + + thumb_func_start sub_0810C13C +sub_0810C13C: @ 0x0810C13C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0810C170 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldr r0, _0810C174 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C17C + ldr r0, _0810C178 + ldrh r1, [r4, #0x32] + ldrh r0, [r0, #4] + subs r1, r1, r0 + strh r1, [r4, #0x32] + b _0810C186 + .align 2, 0 +_0810C170: .4byte gUnknown_20380D7 +_0810C174: .4byte gUnknown_20380D6 +_0810C178: .4byte gUnknown_20380BE +_0810C17C: + ldr r0, _0810C1B4 + ldrh r0, [r0, #4] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_0810C186: + ldr r0, _0810C1B8 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r1, _0810C1B4 + lsrs r0, r0, #0x18 + ldrh r2, [r1, #6] + adds r0, r0, r2 + strh r0, [r4, #0x36] + ldrh r0, [r1, #8] + strh r0, [r4, #0x2e] + ldr r1, _0810C1BC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810C1C0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810C1B4: .4byte gUnknown_20380BE +_0810C1B8: .4byte gUnknown_20380D7 +_0810C1BC: .4byte sub_080A34C4 +_0810C1C0: .4byte sub_080A67B4 + thumb_func_end sub_0810C13C + + thumb_func_start sub_0810C1C4 +sub_0810C1C4: @ 0x0810C1C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810C1DC + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810C1E0 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + b _0810C216 + .align 2, 0 +_0810C1DC: .4byte gUnknown_20380BE +_0810C1E0: + ldr r0, _0810C228 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #1 + bl sub_080A81EC + ldr r0, _0810C22C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C206 + ldrh r0, [r5] + rsbs r0, r0, #0 + strh r0, [r5] +_0810C206: + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_0810C216: + ldr r1, _0810C230 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810C234 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810C228: .4byte gUnknown_20380D7 +_0810C22C: .4byte gUnknown_20380D6 +_0810C230: .4byte sub_0810C238 +_0810C234: .4byte sub_080A6084 + thumb_func_end sub_0810C1C4 + + thumb_func_start sub_0810C238 +sub_0810C238: @ 0x0810C238 + push {lr} + adds r3, r0, #0 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _0810C26E + adds r0, r3, #0 + bl sub_080A6014 +_0810C26E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810C238 + + thumb_func_start sub_0810C274 +sub_0810C274: @ 0x0810C274 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r6, _0810C2BC + ldrh r0, [r6, #8] + 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 _0810C2C4 + ldr r4, _0810C2C0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #6] + adds r0, r0, r6 + strh r0, [r5, #0x36] + b _0810C2D6 + .align 2, 0 +_0810C2BC: .4byte gUnknown_20380BE +_0810C2C0: .4byte gUnknown_20380D7 +_0810C2C4: + ldr r0, _0810C2F0 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x32 + adds r3, r5, #0 + adds r3, #0x36 + movs r1, #1 + bl sub_080A81EC +_0810C2D6: + ldr r0, _0810C2F4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C2FC + ldr r0, _0810C2F8 + ldrh r1, [r5, #0x32] + ldrh r0, [r0, #4] + subs r1, r1, r0 + strh r1, [r5, #0x32] + b _0810C306 + .align 2, 0 +_0810C2F0: .4byte gUnknown_20380D7 +_0810C2F4: .4byte gUnknown_20380D6 +_0810C2F8: .4byte gUnknown_20380BE +_0810C2FC: + ldr r0, _0810C3A4 + ldrh r0, [r0, #4] + ldrh r2, [r5, #0x32] + adds r0, r0, r2 + strh r0, [r5, #0x32] +_0810C306: + adds r7, r5, #0 + adds r7, #0x2e + adds r2, r7, #0 + mov r1, sp + movs r4, #7 +_0810C310: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _0810C310 + adds r0, r5, #0 + bl sub_080A6A28 + ldrh r0, [r5, #0x30] + movs r1, #1 + eors r0, r1 + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x32] + eors r0, r1 + strh r0, [r5, #0x32] +_0810C332: + movs r0, #1 + strh r0, [r5, #0x2e] + adds r0, r5, #0 + bl sub_080A69B0 + movs r0, #0x20 + ldrsh r1, [r5, r0] + movs r2, #0x24 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + adds r1, #0x10 + movs r0, #0x88 + lsls r0, r0, #1 + cmp r1, r0 + bhi _0810C366 + movs r0, #0x22 + ldrsh r1, [r5, r0] + movs r2, #0x26 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + cmp r1, #0xa0 + bgt _0810C366 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0810C332 +_0810C366: + ldrh r0, [r5, #0x24] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + ldr r6, _0810C3A8 + ldr r1, _0810C3AC + mov r3, sp + adds r2, r7, #0 + movs r4, #7 +_0810C386: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r4, #1 + cmp r4, #0 + bge _0810C386 + str r6, [r5, #0x1c] + adds r0, r5, #0 + bl sub_080A5B9C + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C3A4: .4byte gUnknown_20380BE +_0810C3A8: .4byte sub_080A6A54 +_0810C3AC: .4byte sub_0810C3B0 + thumb_func_end sub_0810C274 + + thumb_func_start sub_0810C3B0 +sub_0810C3B0: @ 0x0810C3B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + movs r5, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r5, [r4, #0x26] + strh r5, [r4, #0x24] + movs r0, #0x80 + strh r0, [r4, #0x2e] + ldr r0, _0810C40C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _0810C410 + cmp r0, #0 + beq _0810C3E0 + movs r1, #0x14 +_0810C3E0: + movs r2, #0x2e + ldrsh r0, [r4, r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x34] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0xf + bl sub_0806EFD4 + strh r0, [r4, #0x36] + strh r5, [r4, #0x38] + ldr r1, _0810C414 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810C40C: .4byte gUnknown_20380D6 +_0810C410: .4byte 0x0000FFEC +_0810C414: .4byte sub_0810C418 + thumb_func_end sub_0810C3B0 + + thumb_func_start sub_0810C418 +sub_0810C418: @ 0x0810C418 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810C46C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _0810C470 + cmp r0, #0 + beq _0810C42E + movs r1, #0x14 +_0810C42E: + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0x1f + bgt _0810C474 + movs r2, #0x2e + ldrsh r0, [r4, r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + ldrh r1, [r4, #0x34] + subs r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0xf + bl sub_0806EFD4 + ldrh r1, [r4, #0x36] + subs r0, 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, #1 + strh r0, [r4, #0x38] + b _0810C492 + .align 2, 0 +_0810C46C: .4byte gUnknown_20380D6 +_0810C470: .4byte 0x0000FFEC +_0810C474: + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r1, [r4, #0x26] + strh r1, [r4, #0x24] + strh r1, [r4, #0x36] + strh r1, [r4, #0x34] + ldr r0, _0810C498 + str r0, [r4, #0x1c] +_0810C492: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810C498: .4byte sub_0810C49C + thumb_func_end sub_0810C418 + + thumb_func_start sub_0810C49C +sub_0810C49C: @ 0x0810C49C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A69B0 + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + adds r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #1 + cmp r0, r1 + bhi _0810C4D8 + movs r1, #0x22 + ldrsh r0, [r4, r1] + movs r2, #0x26 + ldrsh r1, [r4, r2] + adds r1, r0, r1 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bgt _0810C4D8 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0810C4DE +_0810C4D8: + adds r0, r4, #0 + bl sub_080A34C4 +_0810C4DE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810C49C + + thumb_func_start sub_0810C4E4 +sub_0810C4E4: @ 0x0810C4E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + adds r5, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _0810C528 + ldrh r0, [r1, #8] + 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 _0810C530 + ldr r4, _0810C52C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + b _0810C542 + .align 2, 0 +_0810C528: .4byte gUnknown_20380BE +_0810C52C: .4byte gUnknown_20380D7 +_0810C530: + ldr r0, _0810C560 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x32 + adds r3, r5, #0 + adds r3, #0x36 + movs r1, #1 + bl sub_080A81EC +_0810C542: + ldr r0, _0810C564 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C56C + ldr r0, _0810C568 + ldrh r1, [r5, #0x32] + ldrh r2, [r0, #4] + subs r1, r1, r2 + strh r1, [r5, #0x32] + adds r1, r0, #0 + b _0810C576 + .align 2, 0 +_0810C560: .4byte gUnknown_20380D7 +_0810C564: .4byte gUnknown_20380D6 +_0810C568: .4byte gUnknown_20380BE +_0810C56C: + ldr r1, _0810C620 + ldrh r0, [r1, #4] + ldrh r2, [r5, #0x32] + adds r0, r0, r2 + strh r0, [r5, #0x32] +_0810C576: + ldrh r0, [r1, #6] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A6A28 + adds r7, r5, #0 + adds r7, #0x2e + adds r2, r7, #0 + mov r1, sp + movs r4, #7 +_0810C58E: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _0810C58E + ldrh r0, [r5, #0x30] + movs r1, #1 + eors r0, r1 + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x32] + eors r0, r1 + strh r0, [r5, #0x32] +_0810C5AA: + movs r0, #1 + strh r0, [r5, #0x2e] + adds r0, r5, #0 + bl sub_080A69B0 + movs r2, #0x20 + ldrsh r1, [r5, r2] + movs r2, #0x24 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + adds r1, #0x10 + movs r0, #0x88 + lsls r0, r0, #1 + cmp r1, r0 + bhi _0810C5DE + movs r0, #0x22 + ldrsh r1, [r5, r0] + movs r2, #0x26 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + cmp r1, #0xa0 + bgt _0810C5DE + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0810C5AA +_0810C5DE: + ldrh r0, [r5, #0x24] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + ldr r1, _0810C620 + ldr r6, _0810C624 + mov r3, sp + adds r2, r7, #0 + movs r4, #7 +_0810C5FE: + ldrh r0, [r3] + strh r0, [r2] + adds r3, #2 + adds r2, #2 + subs r4, #1 + cmp r4, #0 + bge _0810C5FE + 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, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810C620: .4byte gUnknown_20380BE +_0810C624: .4byte sub_0810C628 + thumb_func_end sub_0810C4E4 + + thumb_func_start sub_0810C628 +sub_0810C628: @ 0x0810C628 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A69B0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810C63C + movs r0, #1 + strh r0, [r4, #0x2e] +_0810C63C: + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + ldrh r2, [r4, #0x3c] + adds r0, r0, r2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x3c] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _0810C692 + movs r2, #0x20 + ldrsh r0, [r4, r2] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + adds r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #1 + cmp r0, r1 + bhi _0810C68C + movs r0, #0x22 + ldrsh r1, [r4, r0] + movs r2, #0x26 + ldrsh r0, [r4, r2] + adds r1, r1, r0 + cmp r1, #0xa0 + bgt _0810C68C + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0810C692 +_0810C68C: + adds r0, r4, #0 + bl sub_080A34C4 +_0810C692: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810C628 + + thumb_func_start sub_0810C698 +sub_0810C698: @ 0x0810C698 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810C704 + ldr r5, _0810C6B8 + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810C6BC + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6248 + b _0810C6F2 + .align 2, 0 +_0810C6B8: .4byte gUnknown_20380BE +_0810C6BC: + ldr r0, _0810C6FC + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC + ldr r0, _0810C700 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C6E2 + ldrh r0, [r5] + rsbs r0, r0, #0 + strh r0, [r5] +_0810C6E2: + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_0810C6F2: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810C718 + .align 2, 0 +_0810C6FC: .4byte gUnknown_20380D7 +_0810C700: .4byte gUnknown_20380D6 +_0810C704: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0810C718 + adds r0, r4, #0 + bl sub_080A34C4 +_0810C718: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810C698 + + thumb_func_start sub_0810C720 +sub_0810C720: @ 0x0810C720 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0810C740 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0810C790 + movs r1, #0xa + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0810C744 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6294 + b _0810C782 + .align 2, 0 +_0810C740: .4byte gUnknown_20380BE +_0810C744: + ldr r4, _0810C76C + ldrb r0, [r4] + adds r2, r5, #0 + adds r2, #0x20 + adds r3, r5, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C770 + ldrh r0, [r5, #0x20] + ldrh r1, [r6] + subs r0, r0, r1 + b _0810C776 + .align 2, 0 +_0810C76C: .4byte gUnknown_20380D6 +_0810C770: + ldrh r0, [r6] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 +_0810C776: + strh r0, [r5, #0x20] + ldr r0, _0810C788 + ldrh r0, [r0, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] +_0810C782: + ldr r0, _0810C78C + b _0810C7E0 + .align 2, 0 +_0810C788: .4byte gUnknown_20380BE +_0810C78C: .4byte gUnknown_20380D6 +_0810C790: + movs r1, #0xa + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0810C7A2 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6248 + b _0810C7DE +_0810C7A2: + ldr r4, _0810C7C8 + ldrb r0, [r4] + adds r2, r5, #0 + adds r2, #0x20 + adds r3, r5, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810C7CC + ldrh r0, [r5, #0x20] + ldrh r1, [r6] + subs r0, r0, r1 + b _0810C7D2 + .align 2, 0 +_0810C7C8: .4byte gUnknown_20380D7 +_0810C7CC: + ldrh r0, [r6] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 +_0810C7D2: + strh r0, [r5, #0x20] + ldr r0, _0810C7FC + ldrh r0, [r0, #2] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] +_0810C7DE: + ldr r0, _0810C800 +_0810C7E0: + ldrb r0, [r0] + strh r0, [r5, #0x3c] + ldr r0, _0810C7FC + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0810C7F8 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810C804 +_0810C7F8: + movs r0, #0x20 + b _0810C806 + .align 2, 0 +_0810C7FC: .4byte gUnknown_20380BE +_0810C800: .4byte gUnknown_20380D7 +_0810C804: + movs r0, #0x40 +_0810C806: + strh r0, [r5, #0x3a] + ldr r0, _0810C84C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810C81C + ldrh r0, [r5, #0x22] + adds r0, #8 + strh r0, [r5, #0x22] +_0810C81C: + ldr r1, _0810C850 + ldrh r0, [r1, #6] + 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, #4] + adds r0, r0, r1 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + movs r0, #0x40 + strh r0, [r5, #0x38] + ldr r1, _0810C854 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810C84C: .4byte gUnknown_20380D7 +_0810C850: .4byte gUnknown_20380BE +_0810C854: .4byte sub_0810C858 + thumb_func_end sub_0810C720 + + thumb_func_start sub_0810C858 +sub_0810C858: @ 0x0810C858 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810C8E2 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r2, #0x38 + ldrsh r0, [r4, r2] + movs r1, #6 + rsbs r1, r1, #0 + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7f + bhi _0810C8B4 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + b _0810C8D6 +_0810C8B4: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #5] +_0810C8D6: + ldrh r0, [r4, #0x38] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + b _0810C8E8 +_0810C8E2: + adds r0, r4, #0 + bl sub_080A34C4 +_0810C8E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810C858 + + thumb_func_start sub_0810C8F0 +sub_0810C8F0: @ 0x0810C8F0 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0810C994 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810C932 + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_0810C932: + ldr r0, _0810C998 + movs r1, #0 + strh r1, [r0] + ldr r4, _0810C99C + strh r1, [r4] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0810C9A0 + movs r2, #0x80 + lsls r2, r2, #4 + mov r3, sp + ldrh r3, [r3, #0xa] + bl sub_0800195C + ldr r1, _0810C9A4 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + ldr r0, _0810C9A8 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0810C9AC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0810C9B0 + str r1, [r0] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810C994: .4byte 0x00003F42 +_0810C998: .4byte gUnknown_2022ACC +_0810C99C: .4byte gUnknown_2022ACE +_0810C9A0: .4byte gUnknown_852776C +_0810C9A4: .4byte gUnknown_8D93294 +_0810C9A8: .4byte gUnknown_8526F0C +_0810C9AC: .4byte gUnknown_3005B60 +_0810C9B0: .4byte sub_0810C9B4 + thumb_func_end sub_0810C8F0 + + thumb_func_start sub_0810C9B4 +sub_0810C9B4: @ 0x0810C9B4 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0810C9E8 + ldr r2, _0810C9EC + adds r0, r2, #0 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldr r1, _0810C9F0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x20 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bls _0810C9DE + b _0810CB2A +_0810C9DE: + lsls r0, r0, #2 + ldr r1, _0810C9F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810C9E8: .4byte gUnknown_2022ACC +_0810C9EC: .4byte 0x0000FFFF +_0810C9F0: .4byte gUnknown_3005B60 +_0810C9F4: .4byte _0810C9F8 +_0810C9F8: @ jump table + .4byte _0810CA0C @ case 0 + .4byte _0810CA64 @ case 1 + .4byte _0810CA86 @ case 2 + .4byte _0810CACA @ case 3 + .4byte _0810CAEC @ case 4 +_0810CA0C: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + beq _0810CA26 + b _0810CB2A +_0810CA26: + strh r5, [r4, #0x1c] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + ldr r1, _0810CA60 + movs r2, #0x1a + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r1, [r0] + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #9 + bne _0810CB2A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x1e] + b _0810CB2A + .align 2, 0 +_0810CA60: .4byte gUnknown_8571840 +_0810CA64: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x51 + bne _0810CB2A + movs r0, #9 + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + b _0810CB2A +_0810CA86: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0810CB2A + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + subs r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _0810CB2A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r1, [r4, #0x1e] + b _0810CB2A +_0810CACA: + mov r0, sp + bl sub_080A63F8 + movs r0, #1 + bl sub_080A6530 + movs r0, #2 + bl sub_080A6530 + ldr r0, _0810CB34 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] +_0810CAEC: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810CB00 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_0810CB00: + ldr r0, _0810CB38 + movs r1, #0 + strh r1, [r0] + ldr r0, _0810CB3C + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + adds r0, r4, #0 + bl sub_080A34E4 +_0810CB2A: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810CB34: .4byte gUnknown_3005B60 +_0810CB38: .4byte gUnknown_2022ACC +_0810CB3C: .4byte gUnknown_2022ACE + thumb_func_end sub_0810C9B4 + + thumb_func_start sub_0810CB40 +sub_0810CB40: @ 0x0810CB40 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810CB6C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r0, _0810CB70 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810CB6C: .4byte gUnknown_20380D6 +_0810CB70: .4byte sub_080A70E8 + thumb_func_end sub_0810CB40 + + thumb_func_start sub_0810CB74 +sub_0810CB74: @ 0x0810CB74 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0810CC1C + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810CBB6 + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_0810CBB6: + ldr r0, _0810CC20 + movs r1, #0 + strh r1, [r0] + ldr r4, _0810CC24 + strh r1, [r4] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0810CC28 + movs r2, #0x80 + lsls r2, r2, #4 + mov r3, sp + ldrh r3, [r3, #0xa] + bl sub_0800195C + ldr r1, _0810CC2C + mov r0, sp + movs r2, #0 + bl sub_080A6628 + ldr r0, _0810CC30 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _0810CC34 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0810CC38 + strh r1, [r0, #0x26] + ldr r1, _0810CC3C + str r1, [r0] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810CC1C: .4byte 0x00003F42 +_0810CC20: .4byte gUnknown_2022ACC +_0810CC24: .4byte gUnknown_2022ACE +_0810CC28: .4byte gUnknown_852776C +_0810CC2C: .4byte gUnknown_8D93294 +_0810CC30: .4byte gUnknown_8526F0C +_0810CC34: .4byte gUnknown_3005B60 +_0810CC38: .4byte 0x0000FFFF +_0810CC3C: .4byte sub_0810CC40 + thumb_func_end sub_0810CB74 + + thumb_func_start sub_0810CC40 +sub_0810CC40: @ 0x0810CC40 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _0810CC70 + ldr r3, _0810CC74 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r0, [r1, #0x26] + ldrh r5, [r2] + adds r0, r0, r5 + strh r0, [r2] + movs r2, #0x20 + ldrsh r0, [r1, r2] + cmp r0, #4 + bls _0810CC66 + b _0810CD9A +_0810CC66: + lsls r0, r0, #2 + ldr r1, _0810CC78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0810CC70: .4byte gUnknown_2022ACC +_0810CC74: .4byte gUnknown_3005B60 +_0810CC78: .4byte _0810CC7C +_0810CC7C: @ jump table + .4byte _0810CC90 @ case 0 + .4byte _0810CCD4 @ case 1 + .4byte _0810CCF6 @ case 2 + .4byte _0810CD3A @ case 3 + .4byte _0810CD5C @ case 4 +_0810CC90: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r3 + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + ldr r1, _0810CCD0 + movs r5, #0x1a + ldrsh r0, [r4, r5] + adds r0, r0, r1 + ldrb r1, [r0] + strh r1, [r4, #0x1e] + movs r0, #0x11 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #5 + bne _0810CD9A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + movs r0, #0 + strh r0, [r4, #0x1e] + b _0810CD9A + .align 2, 0 +_0810CCD0: .4byte gUnknown_857186C +_0810CCD4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r3 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x51 + bne _0810CD9A + movs r0, #5 + strh r0, [r1, #0x1e] + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + b _0810CD9A +_0810CCF6: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r3 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0810CD9A + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + subs r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _0810CD9A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r1, [r4, #0x1e] + b _0810CD9A +_0810CD3A: + mov r0, sp + bl sub_080A63F8 + movs r0, #1 + bl sub_080A6530 + movs r0, #2 + bl sub_080A6530 + ldr r0, _0810CDA4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] +_0810CD5C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810CD70 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_0810CD70: + ldr r0, _0810CDA8 + movs r1, #0 + strh r1, [r0] + ldr r0, _0810CDAC + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + adds r0, r4, #0 + bl sub_080A34E4 +_0810CD9A: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810CDA4: .4byte gUnknown_3005B60 +_0810CDA8: .4byte gUnknown_2022ACC +_0810CDAC: .4byte gUnknown_2022ACE + thumb_func_end sub_0810CC40 + + thumb_func_start sub_0810CDB0 +sub_0810CDB0: @ 0x0810CDB0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r6, _0810CE98 + ldrh r0, [r6] + strh r0, [r5, #0x2e] + ldr r0, _0810CE9C + mov r8, r0 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + ldr r7, _0810CEA0 + ldrb r0, [r7] + movs r1, #2 + bl sub_080A5534 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bhs _0810CDE4 + movs r0, #0x80 + lsls r0, r0, #8 + strh r0, [r5, #0x3c] +_0810CDE4: + ldr r3, _0810CEA4 + ldrb r0, [r7] + adds r0, r0, r3 + ldrb r1, [r0] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0810CE44 + ldrh r0, [r6, #2] + rsbs r0, r0, #0 + strh r0, [r6, #2] + ldrh r0, [r6, #6] + rsbs r0, r0, #0 + strh r0, [r6, #6] + movs r1, #0x3c + ldrsh r0, [r5, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0810CE40 + mov r1, r8 + ldrb r0, [r1] + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0810CE40 + movs r0, #1 + bl sub_080A5B08 + ldr r2, _0810CEA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #1 + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] +_0810CE40: + movs r0, #1 + strh r0, [r5, #0x3a] +_0810CE44: + ldr r4, _0810CE9C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r6, _0810CE98 + movs r1, #0xe + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0810CEAC + ldrh r0, [r6, #2] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + strh r0, [r5, #0x30] + ldr r4, _0810CEA0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #6] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r6, #4] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + b _0810CED4 + .align 2, 0 +_0810CE98: .4byte gUnknown_20380BE +_0810CE9C: .4byte gUnknown_20380D6 +_0810CEA0: .4byte gUnknown_20380D7 +_0810CEA4: .4byte gUnknown_2023D1A +_0810CEA8: .4byte gUnknown_20205AC +_0810CEAC: + ldrh r0, [r6, #2] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + strh r0, [r5, #0x30] + ldr r4, _0810CF1C + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #6] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r6, #4] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #1 +_0810CED4: + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #8] + adds r0, r0, r6 + strh r0, [r5, #0x36] + ldrb r0, [r4] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + ldrh r1, [r5, #0x3c] + orrs r0, r1 + strh r0, [r5, #0x3c] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810CF08 + movs r0, #1 + strh r0, [r5, #0x3a] + adds r1, r5, #0 + adds r1, #0x43 + movs r0, #0x80 + strb r0, [r1] +_0810CF08: + adds r0, r5, #0 + bl sub_080A671C + ldr r0, _0810CF20 + str r0, [r5, #0x1c] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810CF1C: .4byte gUnknown_20380D7 +_0810CF20: .4byte sub_0810CF24 + thumb_func_end sub_0810CDB0 + + thumb_func_start sub_0810CF24 +sub_0810CF24: @ 0x0810CF24 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + movs r5, #0xff + movs r1, #0xff + ands r1, r0 + cmp r1, #1 + beq _0810D00C + cmp r1, #1 + bgt _0810CF3E + cmp r1, #0 + beq _0810CF46 + b _0810D15C +_0810CF3E: + cmp r1, #2 + bne _0810CF44 + b _0810D120 +_0810CF44: + b _0810D15C +_0810CF46: + adds r0, r4, #0 + bl sub_080A6804 + ldr r1, _0810CF70 + movs r2, #0x38 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + asrs r0, r0, #4 + ldrh r2, [r4, #0x24] + adds r0, r0, r2 + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810CF74 + ldrh r0, [r4, #0x38] + subs r0, #8 + b _0810CF78 + .align 2, 0 +_0810CF70: .4byte gUnknown_82FA8CC +_0810CF74: + ldrh r0, [r4, #0x38] + adds r0, #8 +_0810CF78: + ands r0, r5 + strh r0, [r4, #0x38] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _0810CF86 + b _0810D15C +_0810CF86: + movs r5, #0x50 + strh r5, [r4, #0x2e] + ldr r6, _0810CFD4 + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x26] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + strh r0, [r4, #0x34] + adds r0, #0x1d + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810CFDC + ldr r1, _0810CFD8 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810CFDC + movs r0, #0xcc + strh r0, [r4, #0x38] + b _0810CFDE + .align 2, 0 +_0810CFD4: .4byte gUnknown_20380D7 +_0810CFD8: .4byte gUnknown_2023D1A +_0810CFDC: + strh r5, [r4, #0x38] +_0810CFDE: + movs r0, #0 + strh r0, [r4, #0x26] + ldr r1, _0810D008 + movs r2, #0x38 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + asrs r0, r0, #3 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + adds r0, #2 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A671C + b _0810D15C + .align 2, 0 +_0810D008: .4byte gUnknown_82FA8CC +_0810D00C: + adds r0, r4, #0 + bl sub_080A6804 + ldr r1, _0810D068 + movs r2, #0x38 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + asrs r0, r0, #3 + ldrh r2, [r4, #0x24] + adds r0, r0, r2 + strh r0, [r4, #0x24] + movs r2, #0x38 + ldrsh r0, [r4, r2] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + rsbs r0, r0, #0 + asrs r0, r0, #8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810D08A + ldrh r1, [r4, #0x38] + adds r0, r1, #0 + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r3, r1, #0 + cmp r0, #0x7f + bhi _0810D06C + ldrh r1, [r4, #0x3c] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + b _0810D074 + .align 2, 0 +_0810D068: .4byte gUnknown_82FA8CC +_0810D06C: + ldrh r1, [r4, #0x3c] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + adds r1, #1 +_0810D074: + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + adds r0, r3, #4 + b _0810D0AA +_0810D08A: + ldrh r0, [r4, #0x38] + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7f + bhi _0810D09E + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x80 + b _0810D0A4 +_0810D09E: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x8c +_0810D0A4: + strb r0, [r1] + ldrh r0, [r4, #0x38] + subs r0, #4 +_0810D0AA: + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bgt _0810D15C + movs r5, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r0, [r4, #0x34] + adds r0, #4 + strh r0, [r4, #0x36] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810D104 + ldr r1, _0810D0FC + ldr r0, _0810D100 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810D104 + movs r0, #0x80 + lsls r0, r0, #1 + b _0810D106 + .align 2, 0 +_0810D0FC: .4byte gUnknown_2023D1A +_0810D100: .4byte gUnknown_20380D7 +_0810D104: + ldr r0, _0810D11C +_0810D106: + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x3c] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x3c] + strh r1, [r4, #0x26] + strh r1, [r4, #0x24] + adds r0, r4, #0 + bl sub_080A689C + b _0810D15C + .align 2, 0 +_0810D11C: .4byte 0x0000FFF0 +_0810D120: + adds r0, r4, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D15C + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810D14E + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] +_0810D14E: + adds r0, r4, #0 + bl sub_08006E00 + ldr r1, _0810D164 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0810D15C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810D164: .4byte gUnknown_203809E + thumb_func_end sub_0810CF24 + + thumb_func_start sub_0810D168 +sub_0810D168: @ 0x0810D168 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0810D17C + adds r1, r1, r0 + ldr r0, _0810D180 + str r0, [r1] + bx lr + .align 2, 0 +_0810D17C: .4byte gUnknown_3005B60 +_0810D180: .4byte sub_0810D184 + thumb_func_end sub_0810D168 + + thumb_func_start sub_0810D184 +sub_0810D184: @ 0x0810D184 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0810D1A8 + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _0810D1C8 + cmp r5, #1 + bgt _0810D1AC + cmp r5, #0 + beq _0810D1B2 + b _0810D22C + .align 2, 0 +_0810D1A8: .4byte gUnknown_3005B60 +_0810D1AC: + cmp r5, #2 + beq _0810D21E + b _0810D22C +_0810D1B2: + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0810D22C + strh r5, [r4, #0x10] + strh r5, [r4, #0x12] + strh r5, [r4, #0xc] + b _0810D204 +_0810D1C8: + ldrh r1, [r4, #0x12] + movs r3, #0x12 + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0810D218 + ldrb r0, [r4, #0xe] + ldrb r1, [r4, #0xc] + movs r3, #1 + bl sub_0810D234 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D1E8 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] +_0810D1E8: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _0810D214 + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _0810D20C +_0810D204: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0810D22C +_0810D20C: + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + b _0810D22C +_0810D214: + strh r5, [r4, #0x12] + b _0810D22C +_0810D218: + subs r0, r1, #1 + strh r0, [r4, #0x12] + b _0810D22C +_0810D21E: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810D22C + adds r0, r2, #0 + bl sub_080A34E4 +_0810D22C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810D184 + + thumb_func_start sub_0810D234 +sub_0810D234: @ 0x0810D234 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + movs r1, #0 + str r1, [sp, #4] + ldr r1, _0810D2AC + lsrs r0, r0, #0x16 + adds r4, r0, r1 + ldrb r0, [r4, #3] + lsls r0, r0, #0x18 + asrs r0, r0, #0x1c + mov r8, r0 + cmp r0, #2 + beq _0810D320 + ldrh r0, [r4, #2] + lsls r0, r0, #0x14 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D320 + movs r0, #1 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r5, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r1, r8 + cmp r1, #0 + beq _0810D2B0 + cmp r1, #1 + beq _0810D2E6 + b _0810D332 + .align 2, 0 +_0810D2AC: .4byte gUnknown_8571898 +_0810D2B0: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl __divsi3 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl __divsi3 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r0 + b _0810D31A +_0810D2E6: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl __divsi3 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl __divsi3 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r0 +_0810D31A: + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + b _0810D332 +_0810D320: + ldrh r0, [r4] + lsls r0, r0, #0x16 + asrs r0, r0, #6 + lsrs r7, r0, #0x10 + ldr r0, [r4] + lsls r0, r0, #0xc + asrs r0, r0, #0x16 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0810D332: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r0, #8 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r0 + ldr r0, _0810D38C + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #8 + rsbs r2, r2, #0 + movs r3, #0x12 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _0810D394 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r0, _0810D390 + adds r4, r4, r0 + adds r0, r4, #0 + mov r1, sb + bl sub_08007F70 + mov r0, sp + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + strh r7, [r4, #0x34] + strh r6, [r4, #0x36] + mov r1, sb + strh r1, [r4, #0x38] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x3a] + mov r1, sl + strh r1, [r4, #0x3c] + movs r0, #1 + b _0810D396 + .align 2, 0 +_0810D38C: .4byte gUnknown_8571910 +_0810D390: .4byte gUnknown_20205AC +_0810D394: + movs r0, #0 +_0810D396: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0810D234 + + thumb_func_start sub_0810D3A8 +sub_0810D3A8: @ 0x0810D3A8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x20] + adds r0, #4 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + adds r2, r1, #0 + adds r2, #8 + strh r2, [r4, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0810D3D2 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _0810D482 +_0810D3D2: + movs r3, #0x2e + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _0810D454 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810D454 + ldr r0, _0810D448 + 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_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + cmp r0, #0x40 + beq _0810D436 + ldr r2, _0810D44C + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0810D450 + str r1, [r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x3a] + strh r1, [r0, #0x3a] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x3c] + strh r1, [r0, #0x3c] +_0810D436: + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 + b _0810D482 + .align 2, 0 +_0810D448: .4byte gUnknown_857174C +_0810D44C: .4byte gUnknown_20205AC +_0810D450: .4byte sub_0810D48C +_0810D454: + ldr r3, _0810D488 + movs r2, #0x3c + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 +_0810D482: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D488: .4byte gUnknown_3005B60 + thumb_func_end sub_0810D3A8 + + thumb_func_start sub_0810D48C +sub_0810D48C: @ 0x0810D48C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + bne _0810D4CC + ldr r3, _0810D4D4 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 +_0810D4CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D4D4: .4byte gUnknown_3005B60 + thumb_func_end sub_0810D48C + + thumb_func_start sub_0810D4D8 +sub_0810D4D8: @ 0x0810D4D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _0810D558 + ldr r0, [r0] + ldrb r1, [r0, #0x11] + lsrs r0, r1, #4 + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + subs r0, r0, r1 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bls _0810D4F6 + movs r1, #4 +_0810D4F6: + adds r0, r5, #0 + bl sub_08007F70 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + ldr r6, _0810D55C + ldrh r0, [r6, #8] + strh r0, [r5, #0x2e] + ldr r0, _0810D560 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D51E + ldrh r0, [r6, #4] + rsbs r0, r0, #0 + strh r0, [r6, #4] +_0810D51E: + ldr r4, _0810D564 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #6] + adds r0, r0, r1 + strh r0, [r5, #0x36] + ldrh r0, [r6, #0xa] + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + ldr r0, _0810D568 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810D558: .4byte gUnknown_20380A0 +_0810D55C: .4byte gUnknown_20380BE +_0810D560: .4byte gUnknown_20380D6 +_0810D564: .4byte gUnknown_20380D7 +_0810D568: .4byte sub_0810D56C + thumb_func_end sub_0810D4D8 + + thumb_func_start sub_0810D56C +sub_0810D56C: @ 0x0810D56C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D58E + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0810D594 + str r0, [r4, #0x1c] + ldr r1, _0810D598 + adds r0, r4, #0 + bl sub_080A5B9C +_0810D58E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D594: .4byte sub_080A60A0 +_0810D598: .4byte sub_080A34C4 + thumb_func_end sub_0810D56C + + thumb_func_start sub_0810D59C +sub_0810D59C: @ 0x0810D59C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #8 + ldr r3, _0810D5F0 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0810D5F4 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + bl sub_0806F0A4 + movs r5, #0xff + ands r5, r0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r6, r0, #0 + orrs r5, r6 + bl sub_0806F0A4 + ldr r1, _0810D5F8 + ands r1, r0 + adds r0, r1, #0 + cmp r0, #0xff + ble _0810D5E2 + subs r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_0810D5E2: + strh r5, [r4, #0x30] + strh r1, [r4, #0x32] + ldr r0, _0810D5FC + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810D5F0: .4byte 0x000003FF +_0810D5F4: .4byte 0xFFFFFC00 +_0810D5F8: .4byte 0x000001FF +_0810D5FC: .4byte sub_0810D600 + thumb_func_end sub_0810D59C + + thumb_func_start sub_0810D600 +sub_0810D600: @ 0x0810D600 + 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, r1, r4 + strh r1, [r2, #0x36] + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0810D624 + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _0810D628 +_0810D624: + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 +_0810D628: + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _0810D646 + adds r0, r2, #0 + bl sub_080A34C4 +_0810D646: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810D600 + + thumb_func_start sub_0810D64C +sub_0810D64C: @ 0x0810D64C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0810D674 + ldrb r3, [r1] + lsls r3, r3, #1 + adds r3, r3, r1 + ldr r1, _0810D678 + ldr r1, [r1] + ldrb r1, [r1, #0x11] + lsrs r2, r1, #4 + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + subs r2, r2, r1 + subs r2, #1 + strh r2, [r3] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_0810D674: .4byte gUnknown_20380BE +_0810D678: .4byte gUnknown_20380A0 + thumb_func_end sub_0810D64C + + thumb_func_start sub_0810D67C +sub_0810D67C: @ 0x0810D67C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810D6AC + movs r0, #0 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl sub_080A612C + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + movs r0, #0xf + strh r0, [r4, #0x2e] + ldr r0, _0810D6B0 + str r0, [r4, #0x1c] + ldr r1, _0810D6B4 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810D6AC: .4byte gUnknown_20380BE +_0810D6B0: .4byte sub_080A5D78 +_0810D6B4: .4byte sub_080A34C4 + thumb_func_end sub_0810D67C + + thumb_func_start sub_0810D6B8 +sub_0810D6B8: @ 0x0810D6B8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810D6FC + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _0810D6E0 + ldr r0, _0810D700 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D6E0 + ldrh r0, [r4, #2] + rsbs r0, r0, #0 + strh r0, [r4, #2] + ldrh r0, [r4, #6] + rsbs r0, r0, #0 + strh r0, [r4, #6] +_0810D6E0: + ldr r4, _0810D6FC + ldrb r1, [r4, #0xc] + adds r0, r5, #0 + bl sub_08007EC0 + movs r0, #0 + strh r0, [r4, #0xc] + adds r0, r5, #0 + bl sub_080A7200 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810D6FC: .4byte gUnknown_20380BE +_0810D700: .4byte gUnknown_20380D6 + thumb_func_end sub_0810D6B8 + + thumb_func_start sub_0810D704 +sub_0810D704: @ 0x0810D704 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810D720 + ldr r0, _0810D72C + ldrh r1, [r0, #2] + rsbs r1, r1, #0 + strh r1, [r0, #2] + ldrh r1, [r0, #6] + rsbs r1, r1, #0 + strh r1, [r0, #6] +_0810D720: + adds r0, r4, #0 + bl sub_0810D6B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D72C: .4byte gUnknown_20380BE + thumb_func_end sub_0810D704 + + thumb_func_start sub_0810D730 +sub_0810D730: @ 0x0810D730 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810D750 + ldrb r1, [r4, #8] + bl sub_08007EC0 + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810D754 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + b _0810D75C + .align 2, 0 +_0810D750: .4byte gUnknown_20380BE +_0810D754: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6248 +_0810D75C: + ldr r0, _0810D774 + ldrh r0, [r0, #4] + strh r0, [r5, #0x2e] + ldr r0, _0810D778 + str r0, [r5, #0x1c] + ldr r1, _0810D77C + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810D774: .4byte gUnknown_20380BE +_0810D778: .4byte sub_080A5D78 +_0810D77C: .4byte sub_080A34C4 + thumb_func_end sub_0810D730 + + thumb_func_start sub_0810D780 +sub_0810D780: @ 0x0810D780 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldr r0, _0810D79C + movs r2, #0 + ldrsh r1, [r0, r2] + mov sb, r0 + cmp r1, #0 + bne _0810D7A4 + ldr r0, _0810D7A0 + b _0810D7A6 + .align 2, 0 +_0810D79C: .4byte gUnknown_20380BE +_0810D7A0: .4byte gUnknown_20380D6 +_0810D7A4: + ldr r0, _0810D8EC +_0810D7A6: + ldrb r0, [r0] + mov r8, r0 + mov r4, sb + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + bge _0810D7C4 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + strh r0, [r4, #4] +_0810D7C4: + ldrb r1, [r4, #4] + adds r0, r5, #0 + bl sub_08007EC0 + mov r0, r8 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + mov r0, r8 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + mov r0, r8 + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + lsls r1, r1, #0xf + lsrs r6, r1, #0x10 + mov r0, r8 + movs r1, #0 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0810D80E + adds r0, #3 +_0810D80E: + lsls r4, r0, #0xe + lsrs r4, r4, #0x10 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0806F0A4 + movs r7, #1 + adds r1, r7, #0 + ands r1, r0 + cmp r1, #0 + beq _0810D850 + lsls r0, r6, #0x10 + rsbs r0, r0, #0 + lsrs r6, r0, #0x10 +_0810D850: + bl sub_0806F0A4 + adds r1, r7, #0 + ands r1, r0 + cmp r1, #0 + beq _0810D862 + lsls r0, r4, #0x10 + rsbs r0, r0, #0 + lsrs r4, r0, #0x10 +_0810D862: + ldr r0, _0810D8F0 + add r0, r8 + ldrb r1, [r0] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _0810D878 + lsls r0, r4, #0x10 + ldr r1, _0810D8F4 + adds r0, r0, r1 + lsrs r4, r0, #0x10 +_0810D878: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + strh r0, [r5, #0x20] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r5, #0x22] + adds r0, r0, r3 + strh r0, [r5, #0x22] + mov r1, sb + ldrh r0, [r1, #2] + strh r0, [r5, #0x2e] + ldr r0, _0810D8F8 + 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, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x3c] + cmp r0, #0x40 + beq _0810D8DC + movs r0, #0x3c + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0810D8FC + adds r0, r0, r4 + movs r1, #0 + bl sub_08007F70 + movs r2, #0x3c + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0810D900 + str r1, [r0] +_0810D8DC: + ldr r0, _0810D904 + str r0, [r5, #0x1c] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810D8EC: .4byte gUnknown_20380D7 +_0810D8F0: .4byte gUnknown_2023D1A +_0810D8F4: .4byte 0xFFF00000 +_0810D8F8: .4byte gUnknown_8572F3C +_0810D8FC: .4byte gUnknown_20205AC +_0810D900: .4byte sub_08007140 +_0810D904: .4byte sub_0810D908 + thumb_func_end sub_0810D780 + + thumb_func_start sub_0810D908 +sub_0810D908: @ 0x0810D908 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0810D950 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0x40 + beq _0810D944 + ldr r4, _0810D94C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + movs r0, #0x3c + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 +_0810D944: + adds r0, r5, #0 + bl sub_080A34C4 + b _0810D954 + .align 2, 0 +_0810D94C: .4byte gUnknown_20205AC +_0810D950: + subs r0, r1, #1 + strh r0, [r5, #0x2e] +_0810D954: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810D908 + + thumb_func_start sub_0810D95C +sub_0810D95C: @ 0x0810D95C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + movs r0, #0x1e + strh r0, [r4, #0x2e] + ldr r0, _0810D97C + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810D980 + ldrh r0, [r4, #0x20] + subs r0, #0x14 + strh r0, [r4, #0x32] + b _0810D992 + .align 2, 0 +_0810D97C: .4byte gUnknown_20380BE +_0810D980: + ldrh r0, [r4, #0x20] + adds r0, #0x14 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0810D992: + ldrh r0, [r4, #0x22] + subs r0, #0x14 + strh r0, [r4, #0x36] + ldr r0, _0810D9AC + str r0, [r4, #0x1c] + ldr r1, _0810D9B0 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810D9AC: .4byte sub_080A67B4 +_0810D9B0: .4byte sub_0810D9B4 + thumb_func_end sub_0810D95C + + thumb_func_start sub_0810D9B4 +sub_0810D9B4: @ 0x0810D9B4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x38] + adds r0, #1 + movs r6, #0 + strh r0, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + bne _0810D9F4 + 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, #8 + strh r0, [r5, #0x2e] + adds r2, r2, r4 + strh r2, [r5, #0x20] + adds r1, r1, r3 + strh r1, [r5, #0x22] + strh r6, [r5, #0x26] + strh r6, [r5, #0x24] + ldr r0, _0810D9FC + str r0, [r5, #0x1c] + ldr r1, _0810DA00 + adds r0, r5, #0 + bl sub_080A5B9C +_0810D9F4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810D9FC: .4byte sub_080A67B4 +_0810DA00: .4byte sub_080A34C4 + thumb_func_end sub_0810D9B4 + + thumb_func_start sub_0810DA04 +sub_0810DA04: @ 0x0810DA04 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _0810DA80 + ldrb r1, [r0] + movs r0, #2 + ldr r2, _0810DA84 + eors r0, r1 + ldrb r1, [r2] + cmp r0, r1 + bne _0810DA30 + ldrb r0, [r2] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0810DA30 + ldr r1, _0810DA88 + movs r2, #0 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1] +_0810DA30: + adds r0, r6, #0 + movs r1, #1 + bl sub_080A6248 + ldr r0, _0810DA80 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810DA4E + ldr r1, _0810DA88 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_0810DA4E: + ldr r4, _0810DA88 + ldrh r0, [r4, #6] + movs r5, #0 + strh r0, [r6, #0x2e] + ldrh r0, [r6, #0x20] + strh r0, [r6, #0x30] + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrh r0, [r6, #0x22] + strh r0, [r6, #0x34] + strh r0, [r6, #0x36] + adds r0, r6, #0 + bl sub_080A671C + ldrh r0, [r4, #0xa] + strh r0, [r6, #0x38] + ldrh r0, [r4, #8] + strh r0, [r6, #0x3a] + strh r5, [r6, #0x3c] + ldr r0, _0810DA8C + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810DA80: .4byte gUnknown_20380D6 +_0810DA84: .4byte gUnknown_20380D7 +_0810DA88: .4byte gUnknown_20380BE +_0810DA8C: .4byte sub_0810DA90 + thumb_func_end sub_0810DA04 + + thumb_func_start sub_0810DA90 +sub_0810DA90: @ 0x0810DA90 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810DABC + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + ldrh r2, [r4, #0x3c] + adds r0, r0, r2 + strh r0, [r4, #0x3c] + b _0810DAC2 +_0810DABC: + adds r0, r4, #0 + bl sub_080A34C4 +_0810DAC2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810DA90 + + thumb_func_start sub_0810DAC8 +sub_0810DAC8: @ 0x0810DAC8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r5, _0810DAF4 + ldrb r1, [r5, #4] + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r5, #6] + strh r0, [r4, #0x2e] + ldr r0, _0810DAF8 + str r0, [r4, #0x1c] + ldr r1, _0810DAFC + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DAF4: .4byte gUnknown_20380BE +_0810DAF8: .4byte sub_080A5D78 +_0810DAFC: .4byte sub_0810DB00 + thumb_func_end sub_0810DAC8 + + thumb_func_start sub_0810DB00 +sub_0810DB00: @ 0x0810DB00 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_08007F70 + 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, _0810DB2C + str r0, [r4, #0x1c] + ldr r1, _0810DB30 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DB2C: .4byte sub_080A5D78 +_0810DB30: .4byte sub_080A34C4 + thumb_func_end sub_0810DB00 + + thumb_func_start sub_0810DB34 +sub_0810DB34: @ 0x0810DB34 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r0, _0810DB50 + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + ldr r0, _0810DB54 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DB50: .4byte gUnknown_20380BE +_0810DB54: .4byte sub_0810DB58 + thumb_func_end sub_0810DB34 + + thumb_func_start sub_0810DB58 +sub_0810DB58: @ 0x0810DB58 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + subs r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810DB9C + movs r0, #6 + strh r0, [r5, #0x2e] + ldr r4, _0810DBA4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _0810DBA8 + str r0, [r5, #0x1c] + ldr r1, _0810DBAC + adds r0, r5, #0 + bl sub_080A5B9C +_0810DB9C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DBA4: .4byte gUnknown_20380D7 +_0810DBA8: .4byte sub_080A67B4 +_0810DBAC: .4byte sub_0810DBB0 + thumb_func_end sub_0810DB58 + + thumb_func_start sub_0810DBB0 +sub_0810DBB0: @ 0x0810DBB0 + push {lr} + movs r1, #0xf + strh r1, [r0, #0x2e] + ldr r1, _0810DBC4 + str r1, [r0, #0x1c] + ldr r1, _0810DBC8 + bl sub_080A5B9C + pop {r0} + bx r0 + .align 2, 0 +_0810DBC4: .4byte sub_080A5D78 +_0810DBC8: .4byte sub_080A34C4 + thumb_func_end sub_0810DBB0 + + thumb_func_start sub_0810DBCC +sub_0810DBCC: @ 0x0810DBCC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810DBF8 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + ldr r1, _0810DBF4 + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #6] + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810DC54 + .align 2, 0 +_0810DBF4: .4byte gUnknown_20380BE +_0810DBF8: + ldrh r0, [r4, #0x30] + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x34] + cmp r0, #0x64 + ble _0810DC46 + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0810DC46: + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0x78 + ble _0810DC54 + adds r0, r4, #0 + bl sub_080A34C4 +_0810DC54: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810DBCC + + thumb_func_start sub_0810DC5C +sub_0810DC5C: @ 0x0810DC5C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810DC70 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810DC78 + ldr r4, _0810DC74 + b _0810DC7A + .align 2, 0 +_0810DC70: .4byte gUnknown_20380BE +_0810DC74: .4byte gUnknown_20380D6 +_0810DC78: + ldr r4, _0810DCC0 +_0810DC7A: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r1, _0810DCC4 + ldrh r0, [r1, #2] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + movs r2, #0 + strh r0, [r5, #0x20] + ldrh r0, [r1, #4] + ldrh r3, [r5, #0x22] + adds r0, r0, r3 + strh r0, [r5, #0x22] + strh r2, [r5, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r5, #0x30] + ldrh r0, [r1, #8] + strh r0, [r5, #0x32] + strh r2, [r5, #0x34] + ldr r0, _0810DCC8 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DCC0: .4byte gUnknown_20380D7 +_0810DCC4: .4byte gUnknown_20380BE +_0810DCC8: .4byte sub_0810DCCC + thumb_func_end sub_0810DC5C + + thumb_func_start sub_0810DCCC +sub_0810DCCC: @ 0x0810DCCC + push {lr} + adds r1, r0, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + cmp r2, #0 + beq _0810DCDE + cmp r2, #1 + beq _0810DD02 + b _0810DD3C +_0810DCDE: + ldrh r0, [r1, #0x30] + subs r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0810DD3C + movs r2, #0x32 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0810DCFA + adds r0, r1, #0 + bl sub_080A34C4 + b _0810DD3C +_0810DCFA: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + b _0810DD3C +_0810DD02: + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0810DD2A + movs r0, #0 + strh r0, [r1, #0x30] + ldrh r0, [r1, #0x34] + adds r0, #1 + strh r0, [r1, #0x34] + ands r0, r2 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0810DD26 + movs r0, #2 + b _0810DD28 +_0810DD26: + ldr r0, _0810DD40 +_0810DD28: + strh r0, [r1, #0x24] +_0810DD2A: + ldrh r0, [r1, #0x32] + subs r0, #1 + strh r0, [r1, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0810DD3C + adds r0, r1, #0 + bl sub_080A34C4 +_0810DD3C: + pop {r0} + bx r0 + .align 2, 0 +_0810DD40: .4byte 0x0000FFFE + thumb_func_end sub_0810DCCC + + thumb_func_start sub_0810DD44 +sub_0810DD44: @ 0x0810DD44 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0810DD68 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0810DD70 + ldr r4, _0810DD6C + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r6, #4] + adds r0, r0, r2 + b _0810DD82 + .align 2, 0 +_0810DD68: .4byte gUnknown_20380BE +_0810DD6C: .4byte gUnknown_20380D6 +_0810DD70: + ldr r4, _0810DDCC + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + adds r0, r0, r1 +_0810DD82: + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #6] + adds r0, r0, r6 + strh r0, [r5, #0x22] + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + ldr r3, _0810DDD0 + movs r4, #2 + ldrsh r0, [r3, r4] + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r4, _0810DDD4 + adds r0, r4, #0 + ands r1, r0 + ldr r0, _0810DDD8 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + movs r1, #0 + movs r0, #0 + strh r0, [r5, #0x2e] + movs r2, #2 + ldrsh r0, [r3, r2] + cmp r0, #1 + beq _0810DDF0 + cmp r0, #1 + bgt _0810DDDC + cmp r0, #0 + beq _0810DDE6 + b _0810DE16 + .align 2, 0 +_0810DDCC: .4byte gUnknown_20380D7 +_0810DDD0: .4byte gUnknown_20380BE +_0810DDD4: .4byte 0x000003FF +_0810DDD8: .4byte 0xFFFFFC00 +_0810DDDC: + cmp r0, #2 + beq _0810DE00 + cmp r0, #3 + beq _0810DE10 + b _0810DE16 +_0810DDE6: + ldr r0, _0810DDEC + b _0810DE10 + .align 2, 0 +_0810DDEC: .4byte 0x0000FFFD +_0810DDF0: + movs r0, #3 + strh r0, [r5, #0x3a] + ldr r0, _0810DDFC + strh r0, [r5, #0x3c] + b _0810DE1E + .align 2, 0 +_0810DDFC: .4byte 0x0000FFFD +_0810DE00: + ldr r0, _0810DE0C + strh r0, [r5, #0x3a] + movs r0, #3 + strh r0, [r5, #0x3c] + b _0810DE1E + .align 2, 0 +_0810DE0C: .4byte 0x0000FFFD +_0810DE10: + strh r0, [r5, #0x3a] + strh r0, [r5, #0x3c] + b _0810DE1E +_0810DE16: + adds r0, r5, #0 + bl sub_080A34C4 + b _0810DE22 +_0810DE1E: + ldr r0, _0810DE28 + str r0, [r5, #0x1c] +_0810DE22: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810DE28: .4byte sub_0810DE2C + thumb_func_end sub_0810DD44 + + thumb_func_start sub_0810DE2C +sub_0810DE2C: @ 0x0810DE2C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x3a] + ldrh r2, [r1, #0x20] + adds r0, r0, r2 + strh r0, [r1, #0x20] + ldrh r0, [r1, #0x3c] + ldrh r2, [r1, #0x22] + adds r0, r0, r2 + strh r0, [r1, #0x22] + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _0810DE54 + adds r0, r1, #0 + bl sub_080A34C4 +_0810DE54: + pop {r0} + bx r0 + thumb_func_end sub_0810DE2C + + thumb_func_start sub_0810DE58 +sub_0810DE58: @ 0x0810DE58 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810DEA4 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810DEB4 + ldr r4, _0810DEA8 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r0, _0810DEAC + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + ldr r0, _0810DEB0 + b _0810DED0 + .align 2, 0 +_0810DEA4: .4byte gUnknown_20380BE +_0810DEA8: .4byte gUnknown_2023EAF +_0810DEAC: .4byte gUnknown_20380D6 +_0810DEB0: .4byte gUnknown_20380D7 +_0810DEB4: + ldr r0, _0810DEEC + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + ldr r0, _0810DEF0 +_0810DED0: + ldrb r0, [r0] + strh r0, [r5, #0x3c] + movs r0, #0 + strh r0, [r5, #0x2e] + movs r0, #0xc + strh r0, [r5, #0x30] + movs r0, #8 + strh r0, [r5, #0x32] + ldr r0, _0810DEF4 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DEEC: .4byte gUnknown_20380D7 +_0810DEF0: .4byte gUnknown_20380D6 +_0810DEF4: .4byte sub_0810DEF8 + thumb_func_end sub_0810DE58 + + thumb_func_start sub_0810DEF8 +sub_0810DEF8: @ 0x0810DEF8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb4 + bne _0810DF54 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A671C + ldr r1, _0810DF5C + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0810DF60 + str r0, [r4, #0x1c] +_0810DF54: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810DF5C: .4byte sub_080A6014 +_0810DF60: .4byte sub_080A6860 + thumb_func_end sub_0810DEF8 + + thumb_func_start sub_0810DF64 +sub_0810DF64: @ 0x0810DF64 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810DFB0 + ldrh r0, [r4] + strh r0, [r5, #0x20] + movs r2, #0x78 + strh r2, [r5, #0x22] + ldrh r0, [r4, #6] + strh r0, [r5, #0x2e] + adds r0, r5, #0 + adds r0, #0x36 + adds r1, r5, #0 + adds r1, #0x38 + lsls r2, r2, #8 + bl sub_080A7910 + ldrh r0, [r4, #2] + strh r0, [r5, #0x3a] + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + movs r3, #4 + ldrsh r0, [r4, r3] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r3, _0810DFB4 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0810DFB8 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + ldr r0, _0810DFBC + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810DFB0: .4byte gUnknown_20380BE +_0810DFB4: .4byte 0x000003FF +_0810DFB8: .4byte 0xFFFFFC00 +_0810DFBC: .4byte sub_0810DFC0 + thumb_func_end sub_0810DF64 + + thumb_func_start sub_0810DFC0 +sub_0810DFC0: @ 0x0810DFC0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + movs r1, #0x2e + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _0810E012 + movs r2, #0x36 + ldrsh r0, [r7, r2] + movs r2, #0x38 + ldrsh r1, [r7, r2] + bl sub_080A7918 + adds r4, r0, #0 + movs r1, #0x3a + ldrsh r0, [r7, r1] + subs r4, r4, r0 + adds r0, r7, #0 + adds r0, #0x36 + adds r1, r7, #0 + adds r1, #0x38 + adds r2, r4, #0 + bl sub_080A7910 + asrs r4, r4, #8 + strh r4, [r7, #0x22] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #8 + rsbs r0, r0, #0 + cmp r4, r0 + bge _0810E00A + adds r0, r7, #0 + bl sub_080A34C4 + b _0810E068 +_0810E00A: + ldrh r0, [r7, #0x2e] + subs r0, #1 + strh r0, [r7, #0x2e] + b _0810E068 +_0810E012: + ldr r4, _0810E074 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r2, _0810E078 + mov r8, r2 + ldrb r0, [r2] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, r8 + ldrb r0, [r1] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + subs r4, r4, r6 + strh r4, [r7, #0x2e] + lsrs r0, r0, #0x18 + subs r0, r0, r5 + strh r0, [r7, #0x30] + ldrh r0, [r7, #0x20] + lsls r0, r0, #4 + strh r0, [r7, #0x32] + ldrh r0, [r7, #0x22] + lsls r0, r0, #4 + strh r0, [r7, #0x34] + ldr r0, _0810E07C + str r0, [r7, #0x1c] +_0810E068: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E074: .4byte gUnknown_20380D6 +_0810E078: .4byte gUnknown_20380D7 +_0810E07C: .4byte sub_0810E080 + thumb_func_end sub_0810DFC0 + + thumb_func_start sub_0810E080 +sub_0810E080: @ 0x0810E080 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r1, [r2, #0x30] + ldrh r3, [r2, #0x34] + adds r1, r1, r3 + strh r1, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r3, r1, #0x14 + strh r3, [r2, #0x22] + adds r0, #8 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0810E0BA + adds r1, r3, #0 + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _0810E0BA + cmp r1, #0x78 + ble _0810E0C0 +_0810E0BA: + adds r0, r2, #0 + bl sub_080A34C4 +_0810E0C0: + pop {r0} + bx r0 + thumb_func_end sub_0810E080 + + thumb_func_start sub_0810E0C4 +sub_0810E0C4: @ 0x0810E0C4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810E0F8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810E108 + ldr r4, _0810E0FC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r0, _0810E100 + ldrb r4, [r0] + ldr r0, _0810E104 + b _0810E10E + .align 2, 0 +_0810E0F8: .4byte gUnknown_20380BE +_0810E0FC: .4byte gUnknown_2023EAF +_0810E100: .4byte gUnknown_20380D7 +_0810E104: .4byte gUnknown_20380D6 +_0810E108: + ldr r0, _0810E140 + ldrb r4, [r0] + ldr r0, _0810E144 +_0810E10E: + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E148 + ldrb r2, [r5, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #8 + orrs r1, r0 + lsls r1, r1, #1 + subs r0, #0x47 + b _0810E162 + .align 2, 0 +_0810E140: .4byte gUnknown_20380D6 +_0810E144: .4byte gUnknown_20380D7 +_0810E148: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810E168 + ldrb r2, [r5, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #0x18 + orrs r1, r0 + lsls r1, r1, #1 + subs r0, #0x57 +_0810E162: + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #3] +_0810E168: + movs r0, #0x10 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + adds r0, r4, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + adds r0, r4, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + ldr r1, _0810E1A8 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810E1AC + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E1A8: .4byte sub_080A34C4 +_0810E1AC: .4byte sub_080A6860 + thumb_func_end sub_0810E0C4 + + thumb_func_start sub_0810E1B0 +sub_0810E1B0: @ 0x0810E1B0 + 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 _0810E1C6 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E1C6: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E1B0 + + thumb_func_start sub_0810E1D4 +sub_0810E1D4: @ 0x0810E1D4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0810E250 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r1, _0810E254 + ldrh r0, [r1, #6] + strh r0, [r5, #0x30] + ldrh r0, [r1] + strh r0, [r5, #0x32] + ldrh r0, [r1, #2] + strh r0, [r5, #0x34] + ldrh r0, [r1, #4] + strh r0, [r5, #0x36] + ldr r0, _0810E258 + ldrb r6, [r0] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810E21E + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0810E21E: + movs r0, #1 + ands r6, r0 + cmp r6, #0 + beq _0810E232 + ldrh r0, [r5, #0x32] + rsbs r0, r0, #0 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] +_0810E232: + ldrh r1, [r5, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + ldrh r0, [r5, #0x32] + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x34] + strh r0, [r5, #0x26] + ldr r0, _0810E25C + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E250: .4byte gUnknown_20380D7 +_0810E254: .4byte gUnknown_20380BE +_0810E258: .4byte gUnknown_20380D2 +_0810E25C: .4byte sub_0810E1B0 + thumb_func_end sub_0810E1D4 + + thumb_func_start sub_0810E260 +sub_0810E260: @ 0x0810E260 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810E278 + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810E27C + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + b _0810E284 + .align 2, 0 +_0810E278: .4byte gUnknown_20380BE +_0810E27C: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6248 +_0810E284: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E298 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + b _0810E2AE +_0810E298: + ldr r0, _0810E2C0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E2AE + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 +_0810E2AE: + ldr r0, _0810E2C4 + str r0, [r4, #0x1c] + ldr r1, _0810E2C8 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E2C0: .4byte gUnknown_20380D6 +_0810E2C4: .4byte sub_080A60A0 +_0810E2C8: .4byte sub_080A34C4 + thumb_func_end sub_0810E260 + + thumb_func_start sub_0810E2CC +sub_0810E2CC: @ 0x0810E2CC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810E306 + 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, #2 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _0810E306 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E306: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810E2CC + + thumb_func_start sub_0810E30C +sub_0810E30C: @ 0x0810E30C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0810E33C + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0810E344 + cmp r0, #1 + bgt _0810E35E + cmp r0, #0 + bne _0810E35E + movs r0, #0 + bl sub_080A6674 + ldr r0, _0810E340 + ldrh r0, [r0] + strh r0, [r4, #0x18] + b _0810E356 + .align 2, 0 +_0810E33C: .4byte gUnknown_3005B60 +_0810E340: .4byte gUnknown_20380BE +_0810E344: + ldrh r0, [r4, #0x18] + subs r0, #1 + strh r0, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810E36A +_0810E356: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0810E36A +_0810E35E: + movs r2, #0xa0 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r1, [r4, #0x1a] + adds r0, r0, r1 + strh r0, [r4, #0x1a] +_0810E36A: + movs r2, #0xb0 + lsls r2, r2, #4 + adds r0, r2, #0 + ldrh r1, [r4, #0x1c] + adds r0, r0, r1 + strh r0, [r4, #0x1c] + ldr r0, _0810E398 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810E3A0 + ldr r1, _0810E39C + ldrh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r7, r1, #0 + b _0810E3B0 + .align 2, 0 +_0810E398: .4byte gUnknown_20380D7 +_0810E39C: .4byte gUnknown_2022AD4 +_0810E3A0: + ldr r2, _0810E3F0 + ldrh r1, [r4, #0x1a] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2] + subs r0, r0, r1 + strh r0, [r2] + adds r7, r2, #0 +_0810E3B0: + ldr r3, _0810E3F4 + ldrh r2, [r4, #0x1c] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r3] + adds r0, 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, _0810E3F8 + movs r2, #0xe + ldrsh r1, [r0, r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0810E3E8 + strh r5, [r7] + strh r5, [r3] + movs r0, #1 + bl sub_080A6674 + adds r0, r6, #0 + bl sub_080A34E4 +_0810E3E8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E3F0: .4byte gUnknown_2022AD4 +_0810E3F4: .4byte gUnknown_2022AD6 +_0810E3F8: .4byte gUnknown_20380BE + thumb_func_end sub_0810E30C + + thumb_func_start sub_0810E3FC +sub_0810E3FC: @ 0x0810E3FC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810E450 + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810E412 + adds r0, r5, #0 + movs r1, #2 + bl sub_08007EC0 +_0810E412: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + ldrh r0, [r4, #4] + strh r0, [r5, #0x2e] + ldr r4, _0810E454 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _0810E458 + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + ldr r0, _0810E45C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E450: .4byte gUnknown_20380BE +_0810E454: .4byte gUnknown_20380D7 +_0810E458: .4byte 0x0000FFE2 +_0810E45C: .4byte sub_0810E460 + thumb_func_end sub_0810E3FC + + thumb_func_start sub_0810E460 +sub_0810E460: @ 0x0810E460 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E474 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E474: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E460 + + thumb_func_start sub_0810E47C +sub_0810E47C: @ 0x0810E47C + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r5, _0810E4F0 + movs r1, #6 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810E494 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 +_0810E494: + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0810E4F4 + ldrb r0, [r0] + mov r6, sp + adds r6, #2 + movs r1, #1 + mov r2, sp + adds r3, r6, #0 + bl sub_080A81EC + ldr r0, _0810E4F8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E4C2 + ldrh r0, [r5, #8] + rsbs r0, r0, #0 + strh r0, [r5, #8] +_0810E4C2: + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + mov r1, sp + ldrh r0, [r5, #8] + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r5, #0xa] + ldrh r6, [r6] + adds r0, r0, r6 + strh r0, [r4, #0x36] + ldr r0, _0810E4FC + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _0810E500 + str r0, [r4, #0x1c] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E4F0: .4byte gUnknown_20380BE +_0810E4F4: .4byte gUnknown_20380D7 +_0810E4F8: .4byte gUnknown_20380D6 +_0810E4FC: .4byte 0x0000FFE2 +_0810E500: .4byte sub_0810E504 + thumb_func_end sub_0810E47C + + thumb_func_start sub_0810E504 +sub_0810E504: @ 0x0810E504 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E518 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E518: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E504 + + thumb_func_start sub_0810E520 +sub_0810E520: @ 0x0810E520 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810E56C + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A66DC + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r2, #4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, #0x38] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #4 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r4, #0x3a] + ldr r0, _0810E570 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E56C: .4byte gUnknown_20380BE +_0810E570: .4byte sub_0810E574 + thumb_func_end sub_0810E520 + + thumb_func_start sub_0810E574 +sub_0810E574: @ 0x0810E574 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A5E34 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x38] + subs r0, r0, r1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + ldrh r1, [r4, #0x3a] + subs r0, r0, r1 + strh r0, [r4, #0x32] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810E59A + adds r0, r4, #0 + bl sub_080A34C4 +_0810E59A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810E574 + + thumb_func_start sub_0810E5A0 +sub_0810E5A0: @ 0x0810E5A0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0810E600 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #1 + bl sub_080A81EC + ldr r0, _0810E604 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E5CC + ldr r1, _0810E608 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_0810E5CC: + ldr r0, _0810E608 + ldrh r2, [r0] + ldrh r1, [r4, #0x20] + adds r2, r2, r1 + strh r2, [r4, #0x20] + ldrh r1, [r0, #2] + ldrh r3, [r4, #0x22] + adds r1, r1, r3 + strh r1, [r4, #0x22] + ldrh r3, [r0, #8] + strh r3, [r4, #0x2e] + ldrh r0, [r0, #4] + adds r2, r2, r0 + strh r2, [r4, #0x32] + adds r1, r1, r3 + strh r1, [r4, #0x36] + ldr r0, _0810E60C + str r0, [r4, #0x1c] + ldr r1, _0810E610 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E600: .4byte gUnknown_20380D7 +_0810E604: .4byte gUnknown_20380D6 +_0810E608: .4byte gUnknown_20380BE +_0810E60C: .4byte sub_080A67B4 +_0810E610: .4byte sub_080A34C4 + thumb_func_end sub_0810E5A0 + + thumb_func_start sub_0810E614 +sub_0810E614: @ 0x0810E614 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0810E62C + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810E630 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 + b _0810E666 + .align 2, 0 +_0810E62C: .4byte gUnknown_20380BE +_0810E630: + ldr r0, _0810E670 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #1 + bl sub_080A81EC + ldr r0, _0810E674 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E656 + ldrh r0, [r5] + rsbs r0, r0, #0 + strh r0, [r5] +_0810E656: + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_0810E666: + ldr r0, _0810E678 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E670: .4byte gUnknown_20380D7 +_0810E674: .4byte gUnknown_20380D6 +_0810E678: .4byte sub_0810E67C + thumb_func_end sub_0810E614 + + thumb_func_start sub_0810E67C +sub_0810E67C: @ 0x0810E67C + 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, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #0x30 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810E6B8 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E6B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E67C + + thumb_func_start sub_0810E6C0 +sub_0810E6C0: @ 0x0810E6C0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6248 + ldrh r0, [r4, #0x22] + adds r0, #0x14 + strh r0, [r4, #0x22] + movs r0, #0xbf + strh r0, [r4, #0x30] + ldr r1, _0810E6E4 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E6E4: .4byte sub_0810E6E8 + thumb_func_end sub_0810E6C0 + + thumb_func_start sub_0810E6E8 +sub_0810E6E8: @ 0x0810E6E8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x47 + bne _0810E722 + adds r0, r4, #0 + bl sub_080A34C4 +_0810E722: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810E6E8 + + thumb_func_start sub_0810E728 +sub_0810E728: @ 0x0810E728 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0810E758 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldr r1, _0810E75C + ldrh r0, [r1, #2] + strh r0, [r4, #8] + ldrh r0, [r1] + strh r0, [r4, #0xa] + ldr r0, _0810E760 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xc] + ldr r0, _0810E764 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E758: .4byte gUnknown_3005B60 +_0810E75C: .4byte gUnknown_20380BE +_0810E760: .4byte 0x00002719 +_0810E764: .4byte sub_0810E768 + thumb_func_end sub_0810E728 + + thumb_func_start sub_0810E768 +sub_0810E768: @ 0x0810E768 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _0810E7E8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r0, [r3, #0x1c] + adds r1, r0, #1 + strh r1, [r3, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0xa + ldrsh r1, [r3, r4] + adds r7, r2, #0 + cmp r0, r1 + bne _0810E7C6 + movs r0, #0 + strh r0, [r3, #0x1c] + ldrb r0, [r3, #0xc] + ldr r2, _0810E7EC + lsls r0, r0, #4 + movs r3, #0x84 + lsls r3, r3, #1 + adds r1, r0, r3 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r6, [r1] + movs r4, #7 + mov ip, r0 + ldr r0, _0810E7F0 + add r0, ip + lsls r0, r0, #1 + adds r3, r0, r2 +_0810E7AE: + ldrh r0, [r3] + strh r0, [r1] + subs r3, #2 + subs r1, #2 + subs r4, #1 + cmp r4, #0 + bgt _0810E7AE + ldr r0, _0810E7F4 + add r0, ip + lsls r0, r0, #1 + adds r0, r0, r2 + strh r6, [r0] +_0810E7C6: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrh r1, [r0, #8] + subs r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _0810E7E0 + adds r0, r5, #0 + bl sub_080A34E4 +_0810E7E0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810E7E8: .4byte gUnknown_3005B60 +_0810E7EC: .4byte gUnknown_20377B4 +_0810E7F0: .4byte 0x00000107 +_0810E7F4: .4byte 0x00000101 + thumb_func_end sub_0810E768 + + thumb_func_start sub_0810E7F8 +sub_0810E7F8: @ 0x0810E7F8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0810E864 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E818 + ldr r1, _0810E868 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_0810E818: + ldr r4, _0810E868 + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldrh r0, [r6, #0x20] + strh r0, [r6, #0x30] + ldr r5, _0810E86C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrh r0, [r6, #0x22] + strh r0, [r6, #0x34] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r6, #0x36] + adds r0, r6, #0 + bl sub_080A671C + ldr r0, _0810E870 + str r0, [r6, #0x1c] + ldr r1, _0810E874 + adds r0, r6, #0 + bl sub_080A5B9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810E864: .4byte gUnknown_20380D6 +_0810E868: .4byte gUnknown_20380BE +_0810E86C: .4byte gUnknown_20380D7 +_0810E870: .4byte sub_080A6084 +_0810E874: .4byte sub_0810E878 + thumb_func_end sub_0810E7F8 + + thumb_func_start sub_0810E878 +sub_0810E878: @ 0x0810E878 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E88C + adds r0, r4, #0 + bl sub_080A34C4 +_0810E88C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E878 + + thumb_func_start sub_0810E894 +sub_0810E894: @ 0x0810E894 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810E930 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E8C0 + ldr r1, _0810E934 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + ldrh r0, [r1, #6] + rsbs r0, r0, #0 + strh r0, [r1, #6] +_0810E8C0: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810E8D8 + ldr r0, _0810E934 + ldrh r1, [r0, #2] + rsbs r1, r1, #0 + strh r1, [r0, #2] + ldrh r1, [r0, #6] + rsbs r1, r1, #0 + strh r1, [r0, #6] +_0810E8D8: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r2, _0810E934 + ldrh r1, [r2] + ldrh r3, [r5, #0x20] + adds r1, r1, r3 + strh r1, [r5, #0x20] + lsrs r0, r0, #0x18 + ldrh r1, [r2, #2] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldrh r0, [r2, #8] + strh r0, [r5, #0x2e] + movs r3, #0xc + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _0810E93C + ldr r4, _0810E938 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + b _0810E94E + .align 2, 0 +_0810E930: .4byte gUnknown_20380D6 +_0810E934: .4byte gUnknown_20380BE +_0810E938: .4byte gUnknown_20380D7 +_0810E93C: + ldr r0, _0810E97C + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x32 + adds r3, r5, #0 + adds r3, #0x36 + movs r1, #1 + bl sub_080A81EC +_0810E94E: + ldr r4, _0810E980 + ldrh r0, [r4, #4] + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r4, #6] + ldrh r3, [r5, #0x36] + adds r0, r0, r3 + strh r0, [r5, #0x36] + ldr r0, _0810E984 + str r0, [r5, #0x1c] + ldr r1, _0810E988 + adds r0, r5, #0 + bl sub_080A5B9C + ldrb r1, [r4, #0xa] + adds r0, r5, #0 + bl sub_08007EF4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810E97C: .4byte gUnknown_20380D7 +_0810E980: .4byte gUnknown_20380BE +_0810E984: .4byte sub_080A67B4 +_0810E988: .4byte sub_080A34C4 + thumb_func_end sub_0810E894 + + thumb_func_start sub_0810E98C +sub_0810E98C: @ 0x0810E98C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _0810E9C8 + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldr r0, _0810E9CC + str r0, [r4, #0x1c] + movs r0, #0 + bl sub_080A5B08 + ldr r2, _0810E9D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810E9C8: .4byte gUnknown_20380BE +_0810E9CC: .4byte sub_0810E9D4 +_0810E9D0: .4byte gUnknown_20205AC + thumb_func_end sub_0810E98C + + thumb_func_start sub_0810E9D4 +sub_0810E9D4: @ 0x0810E9D4 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + ble _0810E9E8 + subs r0, r1, #1 + strh r0, [r2, #0x2e] + b _0810E9FA +_0810E9E8: + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x26] + subs r1, r1, r0 + strh r1, [r2, #0x26] +_0810E9FA: + movs r3, #0x22 + ldrsh r0, [r2, r3] + movs r3, #0x26 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0810EA12 + adds r0, r2, #0 + bl sub_080A34C4 +_0810EA12: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810E9D4 + + thumb_func_start sub_0810EA18 +sub_0810EA18: @ 0x0810EA18 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810EA40 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810EA48 + movs r0, #0x88 + lsls r0, r0, #1 + strh r0, [r5, #0x20] + ldr r0, _0810EA44 + strh r0, [r5, #0x22] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007F70 + b _0810EA4E + .align 2, 0 +_0810EA40: .4byte gUnknown_20380D6 +_0810EA44: .4byte 0x0000FFE0 +_0810EA48: + ldr r0, _0810EA8C + strh r0, [r5, #0x20] + strh r0, [r5, #0x22] +_0810EA4E: + ldr r0, _0810EA90 + ldrh r0, [r0] + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldr r4, _0810EA94 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A671C + ldr r0, _0810EA98 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810EA8C: .4byte 0x0000FFE0 +_0810EA90: .4byte gUnknown_20380BE +_0810EA94: .4byte gUnknown_20380D7 +_0810EA98: .4byte sub_0810EA9C + thumb_func_end sub_0810EA18 + + thumb_func_start sub_0810EA9C +sub_0810EA9C: @ 0x0810EA9C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A6804 + ldrh r1, [r4, #0x34] + lsrs r0, r1, #8 + cmp r0, #0xc8 + bls _0810EAC4 + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + movs r0, #0 + strh r0, [r4, #0x24] + movs r0, #0xff + ands r0, r1 + strh r0, [r4, #0x34] +_0810EAC4: + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + adds r0, #0x20 + movs r1, #0x98 + lsls r1, r1, #1 + cmp r0, r1 + bhi _0810EAE6 + movs r1, #0x22 + ldrsh r0, [r4, r1] + movs r2, #0x26 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + cmp r0, #0xa0 + ble _0810EB0C +_0810EAE6: + movs r0, #0 + bl sub_080A5B08 + ldr r2, _0810EB14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A34C4 +_0810EB0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810EB14: .4byte gUnknown_20205AC + thumb_func_end sub_0810EA9C + + thumb_func_start sub_0810EB18 +sub_0810EB18: @ 0x0810EB18 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + subs r1, r0, #1 + strh r1, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0810EB58 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0810EB4A + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] +_0810EB4A: + adds r0, r4, #0 + bl sub_08006E00 + ldr r1, _0810EB60 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0810EB58: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810EB60: .4byte gUnknown_203809E + thumb_func_end sub_0810EB18 + + thumb_func_start sub_0810EB64 +sub_0810EB64: @ 0x0810EB64 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r5, r7, #0 + adds r5, #0x2e + ldr r0, _0810EB84 + ldrh r1, [r0, #0xe] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810EB8C + ldr r0, _0810EB88 + b _0810EB8E + .align 2, 0 +_0810EB84: .4byte gUnknown_20380BE +_0810EB88: .4byte gUnknown_20380D6 +_0810EB8C: + ldr r0, _0810EC38 +_0810EB8E: + ldrb r6, [r0] + adds r0, r6, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810EBA4 + ldr r1, _0810EC3C + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_0810EBA4: + adds r0, r6, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810EC3C + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r7, #0x20] + adds r0, r6, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldrh r1, [r4, #2] + lsrs r0, r0, #0x18 + adds r1, r0, r1 + strh r1, [r7, #0x22] + lsls r1, r1, #8 + strh r1, [r5, #8] + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + lsls r0, r0, #1 + ldrh r2, [r5, #0xe] + movs r1, #1 + ands r1, r2 + orrs r1, r0 + strh r1, [r5, #0xe] + ldrb r0, [r5] + movs r2, #4 + mov r8, r2 + mov r1, r8 + orrs r0, r1 + strb r0, [r5] + ldrh r0, [r4, #4] + ldrb r1, [r4, #4] + strh r1, [r5, #2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + ldrh r0, [r4, #6] + strh r0, [r5, #4] + ldrh r0, [r4, #8] + strh r0, [r5, #6] + ldrh r0, [r4, #0xa] + strh r0, [r5, #0xc] + subs r1, #0x40 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x7f + bhi _0810EC9A + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810EC40 + adds r0, r6, #0 + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #2 + ldrb r2, [r7, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #5] + b _0810EC58 + .align 2, 0 +_0810EC38: .4byte gUnknown_20380D7 +_0810EC3C: .4byte gUnknown_20380BE +_0810EC40: + adds r0, r6, #0 + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #5] +_0810EC58: + ldrb r1, [r5, #0xe] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + strb r0, [r5, #0xe] + movs r2, #4 + ldrsh r0, [r5, r2] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0810ECFA + adds r3, r7, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r7, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + b _0810ECF2 +_0810EC9A: + adds r0, r6, #0 + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, #5] + ldrb r0, [r5, #0xe] + movs r4, #1 + orrs r0, r4 + strb r0, [r5, #0xe] + movs r1, #4 + ldrsh r0, [r5, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0810ECFA + adds r3, r7, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r1, r2, #0x1f + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + ands r1, r4 + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r7, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + mov r2, r8 + orrs r0, r2 +_0810ECF2: + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] +_0810ECFA: + ldrh r1, [r5, #2] + lsrs r1, r1, #6 + lsls r1, r1, #4 + ldrb r2, [r5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldr r3, _0810ED64 + ldrh r0, [r5, #2] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + ldrb r0, [r5, #0xc] + muls r0, r1, r0 + asrs r0, r0, #8 + strh r0, [r7, #0x24] + ldrb r2, [r7, #3] + lsls r2, r2, #0x1a + lsrs r2, r2, #0x1b + movs r1, #0x24 + ldrsh r0, [r7, r1] + rsbs r0, r0, #0 + asrs r0, r0, #1 + ldrb r5, [r5, #0xa] + adds r0, r0, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r3 + ldrh r4, [r1] + ldr r1, _0810ED68 + lsls r2, r2, #3 + adds r2, r2, r1 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r2, #6] + strh r0, [r2] + strh r4, [r2, #2] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r2, #4] + ldr r0, _0810ED6C + str r0, [r7, #0x1c] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810ED64: .4byte gUnknown_82FA8CC +_0810ED68: .4byte gUnknown_2021B3C +_0810ED6C: .4byte sub_0810ED70 + thumb_func_end sub_0810EB64 + + thumb_func_start sub_0810ED70 +sub_0810ED70: @ 0x0810ED70 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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, #1 + movs r0, #1 + mov sb, r0 + ands r0, r2 + cmp r0, #0 + beq _0810EDAA + ldrb r0, [r4, #1] + adds r1, r0, #0 + adds r1, #0xff + strb r1, [r4, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810ED9E + b _0810F286 +_0810ED9E: + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4] + strb r6, [r4, #1] + b _0810F286 +_0810EDAA: + ldrh r0, [r4, #2] + lsrs r1, r0, #6 + mov ip, r0 + cmp r1, #1 + bne _0810EDB6 + b _0810EEDA +_0810EDB6: + cmp r1, #1 + bgt _0810EDC0 + cmp r1, #0 + beq _0810EDCE + b _0810F1CC +_0810EDC0: + cmp r1, #2 + bne _0810EDC6 + b _0810EFCE +_0810EDC6: + cmp r1, #3 + bne _0810EDCC + b _0810F0C2 +_0810EDCC: + b _0810F1CC +_0810EDCE: + lsls r1, r2, #0x18 + lsrs r0, r1, #0x1c + cmp r0, #1 + bne _0810EDE2 + movs r0, #8 + orrs r0, r2 + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, #1] + b _0810EED0 +_0810EDE2: + lsrs r0, r1, #0x1c + cmp r0, #3 + bne _0810EE04 + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1f + movs r1, #1 + eors r0, r1 + ands r0, r7 + lsls r0, r0, #1 + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + strb r1, [r4] + strb r6, [r4, #1] + b _0810EED0 +_0810EE04: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0810EED0 + adds r3, r5, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r1, r2, #0x1f + lsrs r1, r1, #0x1f + movs r6, #1 + eors r1, r6 + ands r1, r7 + movs r0, #2 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r5, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810EEC2 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810EE92 + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810EE78 + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810EEB0 +_0810EE78: + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810EEB0 +_0810EE92: + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810EEA6 + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #0xc + b _0810EEAE +_0810EEA6: + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #0xc +_0810EEAE: + strb r0, [r1] +_0810EEB0: + ldrb r2, [r4, #0xe] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0xe] +_0810EEC2: + ldrb r1, [r4] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, #2] + mov ip, r1 +_0810EED0: + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + strb r0, [r4] + b _0810F1CC +_0810EEDA: + lsls r1, r2, #0x18 + lsrs r0, r1, #0x1c + cmp r0, #0 + bne _0810EEE8 + movs r0, #8 + orrs r0, r2 + b _0810EEF0 +_0810EEE8: + lsrs r0, r1, #0x1c + cmp r0, #2 + bne _0810EEF8 + adds r0, r2, #0 +_0810EEF0: + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, #1] + b _0810EFC4 +_0810EEF8: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0810EFC4 + adds r3, r5, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r1, r2, #0x1f + lsrs r1, r1, #0x1f + movs r6, #1 + eors r1, r6 + ands r1, r7 + movs r0, #2 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r5, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810EFB6 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810EF86 + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810EF6C + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810EFA4 +_0810EF6C: + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810EFA4 +_0810EF86: + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810EF9A + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #0xc + b _0810EFA2 +_0810EF9A: + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #0xc +_0810EFA2: + strb r0, [r1] +_0810EFA4: + ldrb r2, [r4, #0xe] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0xe] +_0810EFB6: + ldrb r1, [r4] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, #2] + mov ip, r1 +_0810EFC4: + ldrb r0, [r4] + movs r1, #0xf + ands r1, r0 + movs r0, #0x10 + b _0810F1C8 +_0810EFCE: + lsls r1, r2, #0x18 + lsrs r0, r1, #0x1c + cmp r0, #3 + bne _0810EFDC + movs r0, #8 + orrs r0, r2 + b _0810EFE4 +_0810EFDC: + lsrs r0, r1, #0x1c + cmp r0, #1 + bne _0810EFEC + adds r0, r2, #0 +_0810EFE4: + orrs r0, r7 + strb r0, [r4] + strb r6, [r4, #1] + b _0810F0B8 +_0810EFEC: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0810F0B8 + adds r3, r5, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r1, r2, #0x1f + lsrs r1, r1, #0x1f + movs r6, #1 + eors r1, r6 + ands r1, r7 + movs r0, #2 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r5, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810F0AA + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810F07A + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810F060 + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810F098 +_0810F060: + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810F098 +_0810F07A: + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810F08E + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #0xc + b _0810F096 +_0810F08E: + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #0xc +_0810F096: + strb r0, [r1] +_0810F098: + ldrb r2, [r4, #0xe] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0xe] +_0810F0AA: + ldrb r1, [r4] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, #2] + mov ip, r1 +_0810F0B8: + ldrb r0, [r4] + movs r1, #0xf + ands r1, r0 + movs r0, #0x20 + b _0810F1C8 +_0810F0C2: + lsls r1, r2, #0x18 + lsrs r0, r1, #0x1c + cmp r0, #2 + bne _0810F0D2 + movs r0, #8 + orrs r0, r2 + strb r0, [r4] + b _0810F1C0 +_0810F0D2: + lsrs r0, r1, #0x1c + cmp r0, #0 + bne _0810F0F4 + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1f + movs r1, #1 + eors r0, r1 + ands r0, r7 + lsls r0, r0, #1 + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + orrs r1, r7 + strb r1, [r4] + strb r6, [r4, #1] + b _0810F1C0 +_0810F0F4: + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0810F1C0 + adds r3, r5, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r1, r2, #0x1f + lsrs r1, r1, #0x1f + movs r6, #1 + eors r1, r6 + ands r1, r7 + movs r0, #2 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + adds r1, r5, #0 + adds r1, #0x2a + strb r0, [r1] + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810F1B2 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810F182 + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810F168 + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810F1A0 +_0810F168: + ldrb r2, [r5, #5] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + b _0810F1A0 +_0810F182: + ldrb r1, [r4, #0xe] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _0810F196 + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #0xc + b _0810F19E +_0810F196: + adds r1, r5, #0 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #0xc +_0810F19E: + strb r0, [r1] +_0810F1A0: + ldrb r2, [r4, #0xe] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + eors r0, r6 + ands r0, r7 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0xe] +_0810F1B2: + ldrb r1, [r4] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrh r1, [r4, #2] + mov ip, r1 +_0810F1C0: + ldrb r0, [r4] + movs r1, #0xf + ands r1, r0 + movs r0, #0x30 +_0810F1C8: + orrs r1, r0 + strb r1, [r4] +_0810F1CC: + ldrb r1, [r4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1f + adds r0, r4, #0 + adds r0, #0xc + adds r0, r0, r1 + ldrb r1, [r0] + ldr r3, _0810F254 + mov r2, ip + lsls r0, r2, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r0, [r0, r2] + muls r0, r1, r0 + asrs r0, r0, #8 + strh r0, [r5, #0x24] + ldrb r2, [r5, #3] + lsls r2, r2, #0x1a + lsrs r2, r2, #0x1b + movs r1, #0x24 + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 + asrs r0, r0, #1 + ldrb r1, [r4, #0xa] + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r3 + ldrh r6, [r1] + ldr r1, _0810F258 + lsls r2, r2, #3 + adds r2, r2, r1 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r2, #6] + strh r0, [r2] + strh r6, [r2, #2] + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r2, #4] + ldrh r0, [r4, #6] + ldrh r2, [r4, #8] + adds r0, r0, r2 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + movs r1, #4 + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0810F25C + ldrh r0, [r4, #4] + subs r1, #1 + ands r1, r0 + ldrh r0, [r4, #2] + subs r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #2] + b _0810F26C + .align 2, 0 +_0810F254: .4byte gUnknown_82FA8CC +_0810F258: .4byte gUnknown_2021B3C +_0810F25C: + ldrh r0, [r4, #4] + ldr r1, _0810F294 + ands r1, r0 + ldrh r2, [r4, #2] + adds r1, r1, r2 + movs r0, #0xff + ands r1, r0 + strh r1, [r4, #2] +_0810F26C: + movs r0, #0x22 + ldrsh r1, [r5, r0] + movs r2, #0x26 + ldrsh r0, [r5, r2] + adds r1, r1, r0 + ldrh r0, [r4, #0xe] + lsrs r0, r0, #1 + cmp r1, r0 + blt _0810F286 + movs r0, #0 + strh r0, [r5, #0x2e] + ldr r0, _0810F298 + str r0, [r5, #0x1c] +_0810F286: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810F294: .4byte 0x00007FFF +_0810F298: .4byte sub_0810EB18 + thumb_func_end sub_0810ED70 + + thumb_func_start sub_0810F29C +sub_0810F29C: @ 0x0810F29C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0810F2E4 + ldrb r0, [r0] + bl sub_080A7BF0 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + ldr r5, _0810F2E8 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r0, _0810F2EC + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F2E4: .4byte gUnknown_20380D7 +_0810F2E8: .4byte gUnknown_20380D6 +_0810F2EC: .4byte sub_080A70E8 + thumb_func_end sub_0810F29C + + thumb_func_start sub_0810F2F0 +sub_0810F2F0: @ 0x0810F2F0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0810F308 + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810F30C + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6294 + b _0810F314 + .align 2, 0 +_0810F308: .4byte gUnknown_20380BE +_0810F30C: + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6248 +_0810F314: + ldr r4, _0810F37C + movs r2, #4 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0810F32C + ldr r0, _0810F380 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810F342 +_0810F32C: + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _0810F348 + ldr r0, _0810F384 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810F348 +_0810F342: + ldrh r0, [r5, #0x20] + adds r0, #8 + strh r0, [r5, #0x20] +_0810F348: + ldr r4, _0810F37C + ldrb r1, [r4, #8] + adds r0, r5, #0 + bl sub_08007EF4 + ldrh r0, [r5, #0x20] + subs r0, #0x20 + strh r0, [r5, #0x20] + ldr r0, _0810F388 + strh r0, [r5, #0x30] + ldrh r1, [r4, #8] + movs r0, #0xc + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 + ldrh r2, [r5, #0x24] + adds r0, r0, r2 + strh r0, [r5, #0x24] + strh r1, [r5, #0x2e] + ldrh r0, [r4, #6] + strh r0, [r5, #0x3c] + ldr r0, _0810F38C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F37C: .4byte gUnknown_20380BE +_0810F380: .4byte gUnknown_20380D6 +_0810F384: .4byte gUnknown_20380D7 +_0810F388: .4byte 0x00000CCC +_0810F38C: .4byte sub_0810F390 + thumb_func_end sub_0810F2F0 + + thumb_func_start sub_0810F390 +sub_0810F390: @ 0x0810F390 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _0810F3BA + strh r1, [r4, #0x2e] + strh r1, [r4, #0x24] + adds r0, r4, #0 + bl sub_08007EC0 +_0810F3BA: + ldrh r0, [r4, #0x3c] + subs r0, #1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810F3D2 + adds r0, r4, #0 + bl sub_080A34C4 +_0810F3D2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810F390 + + thumb_func_start sub_0810F3D8 +sub_0810F3D8: @ 0x0810F3D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _0810F470 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r7, r0, r1 + ldrh r0, [r7, #8] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0810F452 + ldr r1, _0810F474 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r1, #8 + ldrsh r0, [r7, r1] + movs r5, #0xd + rsbs r5, r5, #0 + adds r1, r5, #0 + bl sub_0806EFB8 + ldr r4, _0810F478 + strh r0, [r4] + movs r1, #8 + ldrsh r0, [r7, r1] + adds r1, r5, #0 + bl sub_0806EFD4 + strh r0, [r4, #2] + movs r0, #1 + strh r0, [r4, #4] + movs r0, #3 + strh r0, [r4, #6] + ldr r0, _0810F47C + mov r8, r0 + ldr r5, _0810F480 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, r8 + adds r1, r4, #0 + movs r3, #3 + bl sub_08006D6C +_0810F452: + ldrh r0, [r7, #8] + adds r0, #8 + strh r0, [r7, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _0810F466 + adds r0, r6, #0 + bl sub_080A34E4 +_0810F466: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810F470: .4byte gUnknown_3005B60 +_0810F474: .4byte gUnknown_203809E +_0810F478: .4byte gUnknown_20380BE +_0810F47C: .4byte gUnknown_8572FCC +_0810F480: .4byte gUnknown_20380D7 + thumb_func_end sub_0810F3D8 + + thumb_func_start sub_0810F484 +sub_0810F484: @ 0x0810F484 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810F496 + cmp r0, #1 + beq _0810F4C8 + b _0810F4DC +_0810F496: + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6294 + movs r0, #0 + bl sub_080A5B08 + ldr r2, _0810F4C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810F4DC + .align 2, 0 +_0810F4C4: .4byte gUnknown_20205AC +_0810F4C8: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0810F4DC + adds r0, r4, #0 + bl sub_080A34C4 +_0810F4DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810F484 + + thumb_func_start sub_0810F4E4 +sub_0810F4E4: @ 0x0810F4E4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0810F51C + cmp r0, #1 + bgt _0810F4FA + cmp r0, #0 + beq _0810F500 + b _0810F56E +_0810F4FA: + cmp r0, #2 + beq _0810F530 + b _0810F56E +_0810F500: + ldr r0, _0810F518 + ldrb r0, [r0] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + rsbs r0, r0, #0 + subs r0, #0x20 + strh r0, [r4, #0x26] + b _0810F528 + .align 2, 0 +_0810F518: .4byte gUnknown_20380D7 +_0810F51C: + ldrh r0, [r4, #0x26] + adds r0, #0xa + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0810F56E +_0810F528: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810F56E +_0810F530: + 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, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0810F56E + movs r0, #0 + bl sub_080A5B08 + ldr r2, _0810F574 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A34C4 +_0810F56E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810F574: .4byte gUnknown_20205AC + thumb_func_end sub_0810F4E4 + + thumb_func_start sub_0810F578 +sub_0810F578: @ 0x0810F578 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _0810F5B4 + ldrh r0, [r1, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r4, #0x30] + ldr r0, _0810F5B8 + str r0, [r4, #0x1c] + movs r0, #0 + bl sub_080A5B08 + ldr r2, _0810F5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810F5B4: .4byte gUnknown_20380BE +_0810F5B8: .4byte sub_0810F5C0 +_0810F5BC: .4byte gUnknown_20205AC + thumb_func_end sub_0810F578 + + thumb_func_start sub_0810F5C0 +sub_0810F5C0: @ 0x0810F5C0 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + ble _0810F5D4 + subs r0, r1, #1 + strh r0, [r2, #0x2e] + b _0810F618 +_0810F5D4: + movs r1, #0x22 + ldrsh r0, [r2, r1] + movs r3, #0x26 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + ble _0810F5FA + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x26] + subs r1, r1, r0 + strh r1, [r2, #0x26] + b _0810F618 +_0810F5FA: + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x34] + adds r1, r0, #1 + strh r1, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _0810F618 + ldr r0, _0810F61C + str r0, [r2, #0x1c] +_0810F618: + pop {r0} + bx r0 + .align 2, 0 +_0810F61C: .4byte sub_0810F620 + thumb_func_end sub_0810F5C0 + + thumb_func_start sub_0810F620 +sub_0810F620: @ 0x0810F620 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x26] + adds r0, r0, r1 + strh r0, [r2, #0x26] + movs r3, #0x22 + ldrsh r0, [r2, r3] + movs r3, #0x26 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + ble _0810F650 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_0810F650: + movs r1, #0x26 + ldrsh r0, [r2, r1] + cmp r0, #0 + ble _0810F65E + adds r0, r2, #0 + bl sub_080A34C4 +_0810F65E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810F620 + + thumb_func_start sub_0810F664 +sub_0810F664: @ 0x0810F664 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0810F678 + cmp r0, #1 + beq _0810F6D0 + b _0810F73C +_0810F678: + ldr r0, _0810F688 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0810F690 + ldr r4, _0810F68C + b _0810F692 + .align 2, 0 +_0810F688: .4byte gUnknown_20380BE +_0810F68C: .4byte gUnknown_20380D6 +_0810F690: + ldr r4, _0810F6CC +_0810F692: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + movs r0, #0 + movs r3, #0x80 + lsls r3, r3, #2 + strh r3, [r5, #0x30] + movs r2, #0x80 + lsls r2, r2, #1 + str r0, [sp] + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6CA8 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0810F73C + .align 2, 0 +_0810F6CC: .4byte gUnknown_20380D7 +_0810F6D0: + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0xb + bgt _0810F6DE + ldrh r0, [r5, #0x30] + subs r0, #0x28 + b _0810F6E2 +_0810F6DE: + ldrh r0, [r5, #0x30] + adds r0, #0x28 +_0810F6E2: + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x32] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x32] + movs r2, #0x80 + lsls r2, r2, #1 + movs r0, #0x30 + ldrsh r3, [r5, r0] + str r1, [sp] + adds r0, r5, #0 + bl sub_080A6CA8 + ldrb r1, [r5, #3] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1b + movs r0, #0xf4 + lsls r0, r0, #6 + ldr r2, _0810F744 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #6 + ldrsh r1, [r1, r2] + bl __divsi3 + adds r1, r0, #1 + cmp r1, #0x80 + ble _0810F71C + movs r1, #0x80 +_0810F71C: + movs r0, #0x40 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r1, r0, #1 + strh r1, [r5, #0x26] + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0x18 + bne _0810F73C + adds r0, r5, #0 + bl sub_080A6D64 + adds r0, r5, #0 + bl sub_080A34C4 +_0810F73C: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F744: .4byte gUnknown_2021B3C + thumb_func_end sub_0810F664 + + thumb_func_start sub_0810F748 +sub_0810F748: @ 0x0810F748 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F0A4 + ldr r4, _0810F76C + ands r4, r0 + bl sub_0806F0A4 + movs r1, #0x7f + ands r1, r0 + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0810F770 + movs r2, #0xb8 + lsls r2, r2, #2 + adds r0, r4, r2 + b _0810F778 + .align 2, 0 +_0810F76C: .4byte 0x000001FF +_0810F770: + movs r2, #0xb8 + lsls r2, r2, #2 + adds r0, r2, #0 + subs r0, r0, r4 +_0810F778: + strh r0, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0810F78C + movs r2, #0xe0 + lsls r2, r2, #2 + adds r0, r2, #0 + adds r0, r1, r0 + b _0810F794 +_0810F78C: + movs r2, #0xe0 + lsls r2, r2, #2 + adds r0, r2, #0 + subs r0, r0, r1 +_0810F794: + strh r0, [r5, #0x30] + ldr r2, _0810F7BC + ldrh r0, [r2] + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0810F7B0 + ldrb r0, [r5, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r5, #3] +_0810F7B0: + movs r1, #2 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _0810F7C4 + ldr r4, _0810F7C0 + b _0810F7C6 + .align 2, 0 +_0810F7BC: .4byte gUnknown_20380BE +_0810F7C0: .4byte gUnknown_20380D6 +_0810F7C4: + ldr r4, _0810F7F0 +_0810F7C6: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + strh r0, [r5, #0x22] + ldr r0, _0810F7F4 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810F7F0: .4byte gUnknown_20380D7 +_0810F7F4: .4byte sub_0810F7F8 + thumb_func_end sub_0810F748 + + thumb_func_start sub_0810F7F8 +sub_0810F7F8: @ 0x0810F7F8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810F810 + ldrh r3, [r4, #0x2e] + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + b _0810F81A +_0810F810: + ldrh r3, [r4, #0x2e] + lsls r1, r3, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 +_0810F81A: + strh r0, [r4, #0x24] + ldrh r2, [r4, #0x30] + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x26] + subs r0, r0, r1 + strh r0, [r4, #0x26] + strh r3, [r4, #0x2e] + adds r0, r2, #0 + subs r0, #0x20 + strh r0, [r4, #0x30] + lsls r0, r3, #0x10 + cmp r0, #0 + bge _0810F83A + movs r0, #0 + strh r0, [r4, #0x2e] +_0810F83A: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _0810F84E + adds r0, r4, #0 + bl sub_080A34C4 +_0810F84E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0810F7F8 + + thumb_func_start sub_0810F854 +sub_0810F854: @ 0x0810F854 + movs r1, #0 + strh r1, [r0, #0x3a] + movs r1, #0x40 + strh r1, [r0, #0x3c] + ldr r1, _0810F864 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_0810F864: .4byte sub_0810F868 + thumb_func_end sub_0810F854 + + thumb_func_start sub_0810F868 +sub_0810F868: @ 0x0810F868 + push {lr} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + cmp r1, #0 + beq _0810F87A + cmp r1, #1 + beq _0810F8C8 + b _0810F8CE +_0810F87A: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0810F8CE + strh r1, [r3, #0x30] + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + ldrb r2, [r1] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _0810F8CE + ldrb r1, [r1] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0810F8CE + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + b _0810F8CE +_0810F8C8: + adds r0, r3, #0 + bl sub_080A34C4 +_0810F8CE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810F868 + + thumb_func_start sub_0810F8D4 +sub_0810F8D4: @ 0x0810F8D4 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + mov r8, r0 + ldrh r4, [r0, #0x20] + ldrh r5, [r0, #0x22] + ldr r6, _0810F988 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x20] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r2, r8 + strh r6, [r2, #0x22] + ldrh r0, [r2, #0x20] + mov sb, r0 + mov r1, sb + lsls r0, r1, #4 + strh r0, [r2, #0x36] + lsls r0, r6, #4 + strh r0, [r2, #0x38] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r1, #0x20 + ldrsh r0, [r2, r1] + subs r0, r4, r0 + lsls r0, r0, #4 + movs r1, #0xc + bl __divsi3 + mov r2, r8 + strh r0, [r2, #0x3a] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + movs r1, #0x22 + ldrsh r0, [r2, r1] + subs r0, r5, r0 + lsls r0, r0, #4 + movs r1, #0xc + bl __divsi3 + mov r2, r8 + strh r0, [r2, #0x3c] + mov r0, sb + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + subs r5, r5, r6 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #1 + str r0, [sp] + mov r0, r8 + movs r1, #1 + adds r2, r3, #0 + bl sub_080A6CA8 + ldr r0, _0810F98C + mov r2, r8 + str r0, [r2, #0x1c] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810F988: .4byte gUnknown_20380D6 +_0810F98C: .4byte sub_0810F990 + thumb_func_end sub_0810F8D4 + + thumb_func_start sub_0810F990 +sub_0810F990: @ 0x0810F990 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x3a] + ldrh r1, [r2, #0x36] + adds r0, r0, r1 + strh r0, [r2, #0x36] + ldrh r1, [r2, #0x3c] + ldrh r3, [r2, #0x38] + adds r1, r1, r3 + strh r1, [r2, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r3, r1, #0x14 + strh r3, [r2, #0x22] + adds r0, #0x2d + lsls r0, r0, #0x10 + movs r1, #0xa5 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0810F9CA + adds r1, r3, #0 + cmp r1, #0x9d + bgt _0810F9CA + movs r0, #0x2d + rsbs r0, r0, #0 + cmp r1, r0 + bge _0810F9D0 +_0810F9CA: + adds r0, r2, #0 + bl sub_080A6014 +_0810F9D0: + pop {r0} + bx r0 + thumb_func_end sub_0810F990 + + thumb_func_start sub_0810F9D4 +sub_0810F9D4: @ 0x0810F9D4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0810FA04 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810FA0C + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0810FA08 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + b _0810FA2A + .align 2, 0 +_0810FA04: .4byte gUnknown_20380BE +_0810FA08: .4byte gUnknown_20205AC +_0810FA0C: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0810FA38 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 +_0810FA2A: + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810FA38: .4byte gUnknown_20205AC + thumb_func_end sub_0810F9D4 + + thumb_func_start sub_0810FA3C +sub_0810FA3C: @ 0x0810FA3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0810FAFC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FA62 + mov r0, r8 + cmp r0, #0 + beq _0810FA7E +_0810FA62: + ldrb r1, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r5, #5] + adds r1, r5, #0 + adds r1, #0x43 + movs r0, #0xc8 + strb r0, [r1] + mov r1, r8 + cmp r1, #0 + bne _0810FB08 +_0810FA7E: + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, r4, #0 + adds r0, r4, #0 + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r6, r1, #0x1f + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FAB4 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_080A3C54 +_0810FAB4: + movs r0, #2 + adds r4, r0, #0 + eors r4, r7 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FAD4 + movs r0, #1 + eors r6, r0 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_080A3C54 +_0810FAD4: + mov r0, r8 + cmp r0, #0 + bne _0810FB08 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FB08 + ldr r0, _0810FAFC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810FB00 + movs r0, #0x48 + strh r0, [r5, #0x20] + movs r0, #0x50 + b _0810FB42 + .align 2, 0 +_0810FAFC: .4byte gUnknown_20380D6 +_0810FB00: + movs r0, #0xb0 + strh r0, [r5, #0x20] + movs r0, #0x28 + b _0810FB42 +_0810FB08: + ldr r6, _0810FB70 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FB1E + ldr r1, _0810FB74 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_0810FB1E: + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0810FB74 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #2] + adds r0, r0, r4 +_0810FB42: + strh r0, [r5, #0x22] + ldr r0, _0810FB74 + ldrh r0, [r0, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r5, #0x2e] + mov r0, r8 + cmp r0, #0 + beq _0810FB7C + ldrh r0, [r5, #0x22] + adds r0, #9 + strh r0, [r5, #0x22] + ldr r1, _0810FB78 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + b _0810FB80 + .align 2, 0 +_0810FB70: .4byte gUnknown_20380D6 +_0810FB74: .4byte gUnknown_20380BE +_0810FB78: .4byte sub_0810FC18 +_0810FB7C: + ldr r0, _0810FB8C + str r0, [r5, #0x1c] +_0810FB80: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810FB8C: .4byte sub_0810FB90 + thumb_func_end sub_0810FA3C + + thumb_func_start sub_0810FB90 +sub_0810FB90: @ 0x0810FB90 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0810FBAC + movs r0, #1 + strh r0, [r5, #0x3c] + b _0810FC06 +_0810FBAC: + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FBD2 + ldr r2, _0810FC0C + ldr r0, _0810FC10 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0810FBD2: + movs r0, #2 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FBFC + ldr r2, _0810FC0C + ldr r0, _0810FC10 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0810FBFC: + ldr r1, _0810FC14 + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 +_0810FC06: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810FC0C: .4byte gUnknown_20205AC +_0810FC10: .4byte gUnknown_2023E88 +_0810FC14: .4byte sub_0810FC18 + thumb_func_end sub_0810FB90 + + thumb_func_start sub_0810FC18 +sub_0810FC18: @ 0x0810FC18 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r1, [r4, #0x34] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0xd + bne _0810FC44 + ldr r0, _0810FC40 + str r0, [r4, #0x1c] + b _0810FC48 + .align 2, 0 +_0810FC40: .4byte sub_0810FC50 +_0810FC44: + adds r0, r1, #1 + strh r0, [r4, #0x34] +_0810FC48: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810FC18 + + thumb_func_start sub_0810FC50 +sub_0810FC50: @ 0x0810FC50 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _0810FCAE + movs r0, #0 + strh r0, [r3, #0x30] + ldrh r4, [r3, #0x2e] + ldr r1, _0810FCB4 + adds r0, r4, #0 + adds r0, #8 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r7, [r0] + movs r5, #8 + adds r6, r1, #0 + adds r1, r4, #7 + lsls r0, r4, #1 + adds r0, r0, r6 + adds r2, r0, #0 + adds r2, #0x10 + lsls r1, r1, #1 + adds r1, r1, r6 +_0810FC86: + ldrh r0, [r1] + strh r0, [r2] + subs r1, #2 + subs r2, #2 + subs r5, #1 + cmp r5, #0 + bgt _0810FC86 + adds r0, r4, #1 + lsls r0, r0, #1 + adds r0, r0, r6 + strh r7, [r0] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bne _0810FCAE + ldr r0, _0810FCB8 + str r0, [r3, #0x1c] +_0810FCAE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810FCB4: .4byte gUnknown_20377B4 +_0810FCB8: .4byte sub_0810FCBC + thumb_func_end sub_0810FC50 + + thumb_func_start sub_0810FCBC +sub_0810FCBC: @ 0x0810FCBC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x34] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r5, #0x34] + subs r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0810FD62 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810FD52 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FD24 + ldr r2, _0810FD68 + ldr r0, _0810FD6C + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_0810FD24: + movs r0, #2 + adds r4, r0, #0 + eors r4, r6 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FD52 + ldr r2, _0810FD68 + ldr r0, _0810FD6C + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_0810FD52: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0810FD70 + str r0, [r5, #0x1c] +_0810FD62: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810FD68: .4byte gUnknown_20205AC +_0810FD6C: .4byte gUnknown_2023E88 +_0810FD70: .4byte sub_0810FD74 + thumb_func_end sub_0810FCBC + + thumb_func_start sub_0810FD74 +sub_0810FD74: @ 0x0810FD74 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810FDCC + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r5, r1, #0x1f + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FDB2 + adds r0, r5, #0 + bl sub_080A4044 +_0810FDB2: + movs r0, #2 + eors r4, r0 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FDCC + movs r0, #1 + eors r5, r0 + adds r0, r5, #0 + bl sub_080A4044 +_0810FDCC: + ldr r0, _0810FDD8 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0810FDD8: .4byte sub_080A34C4 + thumb_func_end sub_0810FD74 + + thumb_func_start sub_0810FDDC +sub_0810FDDC: @ 0x0810FDDC + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0810FE68 + ldr r5, _0810FE28 + movs r1, #6 + ldrsh r0, [r5, r1] + movs r6, #0 + cmp r0, #0 + bne _0810FDF6 + movs r6, #1 +_0810FDF6: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810FE3E + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FE3E + ldr r0, _0810FE2C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0810FE30 + ldrh r0, [r5] + movs r1, #0x48 + subs r1, r1, r0 + strh r1, [r4, #0x20] + ldrh r0, [r5, #2] + adds r0, #0x50 + strh r0, [r4, #0x22] + b _0810FE60 + .align 2, 0 +_0810FE28: .4byte gUnknown_20380BE +_0810FE2C: .4byte gUnknown_20380D6 +_0810FE30: + ldrh r0, [r5] + adds r0, #0xb0 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + adds r0, #0x28 + strh r0, [r4, #0x22] + b _0810FE60 +_0810FE3E: + ldr r0, _0810FE54 + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0810FE58 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A6294 + b _0810FE60 + .align 2, 0 +_0810FE54: .4byte gUnknown_20380BE +_0810FE58: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A6248 +_0810FE60: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0810FE7C +_0810FE68: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + beq _0810FE7C + adds r0, r4, #0 + bl sub_080A6014 +_0810FE7C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810FDDC + + thumb_func_start sub_0810FE84 +sub_0810FE84: @ 0x0810FE84 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0810FECC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0810FED4 + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r5, #0x20] + subs r0, #0x28 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x22] + adds r0, #0xa + strh r0, [r5, #0x22] + ldr r0, _0810FED0 + b _0810FEE2 + .align 2, 0 +_0810FECC: .4byte gUnknown_20380D6 +_0810FED0: .4byte 0x0000FFFF +_0810FED4: + ldrh r0, [r5, #0x20] + adds r0, #0x28 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x22] + subs r0, #0xa + strh r0, [r5, #0x22] + movs r0, #1 +_0810FEE2: + strh r0, [r5, #0x30] + ldr r1, _0810FEF8 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810FEFC + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0810FEF8: .4byte sub_080A34C4 +_0810FEFC: .4byte sub_080A60A0 + thumb_func_end sub_0810FE84 + + thumb_func_start sub_0810FF00 +sub_0810FF00: @ 0x0810FF00 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, _0810FF84 + ldrb r0, [r6] + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + lsls r1, r1, #0xf + lsrs r4, r1, #0x10 + ldrb r0, [r6] + movs r1, #0 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0810FF46 + lsls r0, r4, #0x10 + rsbs r0, r0, #0 + lsrs r4, r0, #0x10 +_0810FF46: + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + strh r0, [r5, #0x20] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r7 + strh r0, [r5, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bgt _0810FF72 + movs r0, #0x10 + strh r0, [r5, #0x22] +_0810FF72: + ldr r1, _0810FF88 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0810FF8C + str r0, [r5, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0810FF84: .4byte gUnknown_20380D6 +_0810FF88: .4byte sub_0810FF90 +_0810FF8C: .4byte sub_080A60A0 + thumb_func_end sub_0810FF00 + + thumb_func_start sub_0810FF90 +sub_0810FF90: @ 0x0810FF90 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, _0810FFBC + str r0, [r4, #0x10] + movs r0, #0 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_08008140 + ldr r0, _0810FFC0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0810FFBC: .4byte gUnknown_8572324 +_0810FFC0: .4byte sub_0810FFC4 + thumb_func_end sub_0810FF90 + + thumb_func_start sub_0810FFC4 +sub_0810FFC4: @ 0x0810FFC4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0810FFD6 + cmp r0, #1 + beq _08110004 + b _0811001C +_0810FFD6: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0811001C + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + movs r0, #0x12 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0811001C +_08110004: + ldrh r0, [r4, #0x30] + subs r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0811001C + adds r0, r4, #0 + bl sub_080A34C4 +_0811001C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0810FFC4 + + thumb_func_start sub_08110024 +sub_08110024: @ 0x08110024 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08110054 + adds r4, r4, r0 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r4, #8] + ldr r2, _08110058 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _0811005C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110054: .4byte gUnknown_3005B60 +_08110058: .4byte gUnknown_8572340 +_0811005C: .4byte sub_08110060 + thumb_func_end sub_08110024 + + thumb_func_start sub_08110060 +sub_08110060: @ 0x08110060 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08110088 + adds r0, r0, r1 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08110080 + adds r0, r4, #0 + bl sub_080A34E4 +_08110080: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110088: .4byte gUnknown_3005B60 + thumb_func_end sub_08110060 + + thumb_func_start sub_0811008C +sub_0811008C: @ 0x0811008C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081100D8 + adds r4, r1, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + strh r0, [r4, #8] + strh r1, [r4, #0xa] + strh r1, [r4, #0xc] + ldr r0, _081100DC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #8 + cmp r0, #0 + beq _081100C0 + movs r1, #4 +_081100C0: + strh r1, [r4, #0xe] + ldrb r1, [r4, #8] + ldr r2, _081100E0 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _081100E4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081100D8: .4byte gUnknown_3005B60 +_081100DC: .4byte gUnknown_20380D6 +_081100E0: .4byte gUnknown_8572360 +_081100E4: .4byte sub_081100E8 + thumb_func_end sub_0811008C + + thumb_func_start sub_081100E8 +sub_081100E8: @ 0x081100E8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08110108 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0811010C + cmp r0, #1 + beq _08110128 + b _08110186 + .align 2, 0 +_08110108: .4byte gUnknown_3005B60 +_0811010C: + adds r0, r4, #0 + bl sub_080A75FC + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _08110186 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _08110186 +_08110128: + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08110150 + ldr r2, _0811014C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #8 + strh r1, [r0, #0x26] + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + b _08110186 + .align 2, 0 +_0811014C: .4byte gUnknown_20205AC +_08110150: + ldr r3, _0811018C + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0x88 + lsls r1, r1, #1 + strh r1, [r0, #0x20] + ldrb r0, [r4, #8] + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 +_08110186: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811018C: .4byte gUnknown_20205AC + thumb_func_end sub_081100E8 + + thumb_func_start sub_08110190 +sub_08110190: @ 0x08110190 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08110218 + adds r5, r1, r0 + movs r1, #0 + movs r0, #0x10 + strh r0, [r5, #0xe] + strh r1, [r5, #0x10] + ldr r4, _0811021C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x24] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, #0 + cmp r0, r6 + bhs _081101FA + adds r1, r6, #0 +_081101FA: + strh r1, [r5, #0x20] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldr r0, _08110220 + str r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08110218: .4byte gUnknown_3005B60 +_0811021C: .4byte gUnknown_20380D6 +_08110220: .4byte sub_08110224 + thumb_func_end sub_08110190 + + thumb_func_start sub_08110224 +sub_08110224: @ 0x08110224 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08110248 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _08110324 + cmp r1, #1 + bgt _0811024C + cmp r1, #0 + beq _0811025A + b _081103AA + .align 2, 0 +_08110248: .4byte gUnknown_3005B60 +_0811024C: + cmp r1, #2 + bne _08110252 + b _08110386 +_08110252: + cmp r1, #3 + bne _08110258 + b _08110394 +_08110258: + b _081103AA +_0811025A: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + bgt _0811026A + b _081103AA +_0811026A: + strh r1, [r4, #0xa] + ldr r0, _081102A8 + movs r2, #0x22 + ldrsh r1, [r4, r2] + movs r3, #0x24 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0xc + ldrsh r1, [r4, r0] + adds r1, #8 + lsls r1, r1, #1 + adds r0, r4, #0 + adds r0, #8 + adds r0, r0, r1 + strh r2, [r0] + cmp r2, #0x40 + beq _0811030E + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _081102C8 + cmp r0, #1 + bgt _081102AC + cmp r0, #0 + beq _081102B6 + b _0811030E + .align 2, 0 +_081102A8: .4byte gUnknown_8572378 +_081102AC: + cmp r0, #2 + beq _081102E0 + cmp r0, #3 + beq _081102F8 + b _0811030E +_081102B6: + ldr r0, _081102C4 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r4, #0x20] + b _08110306 + .align 2, 0 +_081102C4: .4byte gUnknown_20205AC +_081102C8: + ldr r0, _081102DC + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r4, #0x20] + rsbs r0, r0, #0 + strh r0, [r1, #0x24] + ldrh r0, [r4, #0x20] + b _0811030C + .align 2, 0 +_081102DC: .4byte gUnknown_20205AC +_081102E0: + ldr r1, _081102F4 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r4, #0x20] + strh r1, [r0, #0x24] + ldrh r1, [r4, #0x20] + strh r1, [r0, #0x26] + b _0811030E + .align 2, 0 +_081102F4: .4byte gUnknown_20205AC +_081102F8: + ldr r0, _08110320 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r4, #0x20] + rsbs r0, r0, #0 +_08110306: + strh r0, [r1, #0x24] + ldrh r0, [r4, #0x20] + rsbs r0, r0, #0 +_0811030C: + strh r0, [r1, #0x26] +_0811030E: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _081103AA + b _08110386 + .align 2, 0 +_08110320: .4byte gUnknown_20205AC +_08110324: + ldrh r0, [r4, #0xa] + ands r1, r0 + cmp r1, #0 + beq _08110334 + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + b _0811033A +_08110334: + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] +_0811033A: + ldrh r1, [r4, #0x10] + lsls r1, r1, #8 + ldrh r0, [r4, #0xe] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + bne _081103AA + movs r5, #8 + adds r6, r4, #0 + adds r6, #8 +_08110360: + lsls r0, r5, #1 + adds r1, r6, r0 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0x40 + beq _0811037C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08110390 + adds r0, r0, r1 + bl sub_08006E00 +_0811037C: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xc + bls _08110360 +_08110386: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081103AA + .align 2, 0 +_08110390: .4byte gUnknown_20205AC +_08110394: + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34E4 +_081103AA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08110224 + + thumb_func_start sub_081103B0 +sub_081103B0: @ 0x081103B0 + 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 _081103DA + ldrh r0, [r4, #0x30] + movs r1, #1 + ands r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081103DA: + movs r0, #0x30 + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _081103EC + adds r0, r4, #0 + bl sub_080A34C4 +_081103EC: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081103B0 + + thumb_func_start sub_081103F8 +sub_081103F8: @ 0x081103F8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _08110434 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08110424 + ldr r4, _08110438 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] +_08110424: + ldrh r0, [r6, #2] + strh r0, [r5, #0x2e] + ldr r0, _0811043C + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08110434: .4byte gUnknown_20380BE +_08110438: .4byte gUnknown_20380D6 +_0811043C: .4byte sub_081103B0 + thumb_func_end sub_081103F8 + + thumb_func_start sub_08110440 +sub_08110440: @ 0x08110440 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0811049C + adds r5, r1, r0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081104E4 + ldr r0, _081104A0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _081104B0 + ldr r0, _081104A4 + strh r0, [r5, #0x1c] + ldr r4, _081104A8 + ldrb r0, [r4] + movs r1, #5 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r5, #0x1e] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r5, #0x20] + ldr r4, _081104AC + ldrb r0, [r4] + movs r1, #5 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r5, #0x22] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + b _0811056E + .align 2, 0 +_0811049C: .4byte gUnknown_3005B60 +_081104A0: .4byte gUnknown_20380BE +_081104A4: .4byte 0x0000FFF6 +_081104A8: .4byte gUnknown_20380D7 +_081104AC: .4byte gUnknown_20380D6 +_081104B0: + movs r0, #0xa + strh r0, [r5, #0x1c] + ldr r4, _081104DC + ldrb r0, [r4] + movs r1, #4 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r5, #0x1e] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r5, #0x20] + ldr r4, _081104E0 + ldrb r0, [r4] + movs r1, #4 + bl sub_080A7EE4 + adds r0, #8 + b _08110562 + .align 2, 0 +_081104DC: .4byte gUnknown_20380D6 +_081104E0: .4byte gUnknown_20380D7 +_081104E4: + ldr r0, _08110528 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _08110538 + ldr r0, _0811052C + strh r0, [r5, #0x1c] + ldr r4, _08110530 + ldrb r0, [r4] + movs r1, #4 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r5, #0x1e] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r5, #0x20] + ldr r4, _08110534 + ldrb r0, [r4] + movs r1, #4 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r5, #0x22] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + b _0811056E + .align 2, 0 +_08110528: .4byte gUnknown_20380BE +_0811052C: .4byte 0x0000FFF6 +_08110530: .4byte gUnknown_20380D7 +_08110534: .4byte gUnknown_20380D6 +_08110538: + movs r0, #0xa + strh r0, [r5, #0x1c] + ldr r4, _08110580 + ldrb r0, [r4] + movs r1, #5 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r5, #0x1e] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r5, #0x20] + ldr r4, _08110584 + ldrb r0, [r4] + movs r1, #5 + bl sub_080A7EE4 + subs r0, #8 +_08110562: + strh r0, [r5, #0x22] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A7EE4 + subs r0, #8 +_0811056E: + strh r0, [r5, #0x24] + movs r0, #6 + strh r0, [r5, #0xa] + ldr r0, _08110588 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08110580: .4byte gUnknown_20380D6 +_08110584: .4byte gUnknown_20380D7 +_08110588: .4byte sub_0811058C + thumb_func_end sub_08110440 + + thumb_func_start sub_0811058C +sub_0811058C: @ 0x0811058C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081105AC + adds r5, r0, r1 + movs r0, #8 + ldrsh r1, [r5, r0] + cmp r1, #0 + beq _081105B0 + cmp r1, #1 + beq _08110624 + b _08110638 + .align 2, 0 +_081105AC: .4byte gUnknown_3005B60 +_081105B0: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + ble _08110638 + strh r1, [r5, #0xa] + ldr r0, _0811061C + movs r2, #0x1e + ldrsh r1, [r5, r2] + movs r3, #0x20 + ldrsh r2, [r5, r3] + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08110604 + ldr r0, _08110620 + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + adds r4, 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_080A619C + ldrb r0, [r5, #0xc] + movs r1, #3 + ands r1, r0 + adds r0, r4, #0 + bl sub_08007F70 +_08110604: + ldrh r0, [r5, #0xc] + adds r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _08110638 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _08110638 + .align 2, 0 +_0811061C: .4byte gUnknown_8572448 +_08110620: .4byte gUnknown_20205AC +_08110624: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x11 + ble _08110638 + adds r0, r2, #0 + bl sub_080A34E4 +_08110638: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811058C + + thumb_func_start sub_08110640 +sub_08110640: @ 0x08110640 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811065E + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 +_0811065E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08110640 + + thumb_func_start sub_08110664 +sub_08110664: @ 0x08110664 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0811069C + adds r4, r1, r0 + ldr r0, _081106A0 + ldrb r0, [r0] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r1, #0 + subs r0, #0x20 + strh r0, [r4, #0x24] + ldr r0, _081106A4 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #1 + beq _081106BA + cmp r0, #1 + bgt _081106A8 + cmp r0, #0 + beq _081106AE + b _081106D6 + .align 2, 0 +_0811069C: .4byte gUnknown_3005B60 +_081106A0: .4byte gUnknown_20380D7 +_081106A4: .4byte gUnknown_20380BE +_081106A8: + cmp r0, #2 + beq _081106C6 + b _081106D6 +_081106AE: + movs r0, #2 + strh r0, [r4, #0x1e] + movs r0, #5 + strh r0, [r4, #0x20] + movs r0, #0x40 + b _081106CE +_081106BA: + movs r0, #2 + strh r0, [r4, #0x1e] + movs r0, #5 + strh r0, [r4, #0x20] + movs r0, #0xc0 + b _081106CE +_081106C6: + movs r0, #4 + strh r0, [r4, #0x1e] + strh r0, [r4, #0x20] + movs r0, #0 +_081106CE: + strh r0, [r4, #0x22] + adds r0, r1, #0 + adds r0, #0x20 + strh r0, [r4, #0x26] +_081106D6: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _081106E2 + movs r0, #0 + strh r0, [r4, #0x24] +_081106E2: + ldr r0, _081106FC + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08110708 + ldr r0, _08110700 + ldrh r0, [r0] + strh r0, [r4, #0x1c] + ldr r0, _08110704 + b _08110710 + .align 2, 0 +_081106FC: .4byte gUnknown_20380D7 +_08110700: .4byte gUnknown_2022ACC +_08110704: .4byte 0x04000014 +_08110708: + ldr r0, _08110770 + ldrh r0, [r0] + strh r0, [r4, #0x1c] + ldr r0, _08110774 +_08110710: + str r0, [sp] + ldrh r1, [r4, #0x24] + lsls r3, r1, #0x10 + asrs r1, r3, #0x10 + movs r2, #0x24 + ldrsh r0, [r4, r2] + adds r0, #0x40 + cmp r1, r0 + bgt _0811074A + ldr r5, _08110778 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 +_0811072A: + asrs r3, r3, #0x10 + lsls r1, r3, #1 + adds r2, r1, r5 + ldrh r0, [r4, #0x1c] + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r4, #0x1c] + strh r0, [r1] + adds r3, #1 + lsls r3, r3, #0x10 + asrs r1, r3, #0x10 + movs r2, #0x24 + ldrsh r0, [r4, r2] + adds r0, #0x40 + cmp r1, r0 + ble _0811072A +_0811074A: + ldr r0, _0811077C + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _08110780 + str r0, [r4] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08110770: .4byte gUnknown_2022AD0 +_08110774: .4byte 0x04000018 +_08110778: .4byte gUnknown_20388C8 +_0811077C: .4byte 0xA2600001 +_08110780: .4byte sub_08110784 + thumb_func_end sub_08110664 + + thumb_func_start sub_08110784 +sub_08110784: @ 0x08110784 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081107AC + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0811085E + cmp r0, #1 + bgt _081107B0 + cmp r0, #0 + beq _081107B6 + b _08110876 + .align 2, 0 +_081107AC: .4byte gUnknown_3005B60 +_081107B0: + cmp r0, #2 + beq _08110870 + b _08110876 +_081107B6: + 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 _0811084E + ldr r0, _08110800 + mov sb, r0 + movs r7, #3 + ldr r1, _08110804 + mov ip, r1 + movs r2, #0xf0 + lsls r2, r2, #3 + add r2, ip + mov r8, r2 +_081107D8: + lsls r2, r3, #0x10 + asrs r0, r2, #0xf + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + movs r3, #0x20 + ldrsh r1, [r5, r3] + asrs r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r3, r0, #0x10 + adds r6, r2, #0 + cmp r3, #0 + ble _08110808 + ldrh r1, [r5, #0xa] + adds r0, r7, #0 + ands r0, r1 + adds r0, r3, r0 + b _08110814 + .align 2, 0 +_08110800: .4byte gUnknown_82FA8CC +_08110804: .4byte gUnknown_20388C8 +_08110808: + cmp r3, #0 + bge _08110818 + ldrh r1, [r5, #0xa] + adds r0, r7, #0 + ands r0, r1 + subs r0, r3, r0 +_08110814: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_08110818: + lsls r2, r4, #0x10 + asrs r2, r2, #0x10 + lsls r3, r2, #1 + mov r0, ip + adds r4, r3, r0 + ldrh r0, [r5, #0x1c] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r1, r0 + strh r0, [r4] + add r3, r8 + ldrh r0, [r5, #0x1c] + adds r1, r1, r0 + strh r1, [r3] + asrs r0, r6, #0x10 + ldrh r1, [r5, #0x1e] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r2, #1 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + asrs r2, r2, #0x10 + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r2, r0 + ble _081107D8 +_0811084E: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x17 + ble _08110876 + b _08110864 +_0811085E: + ldr r1, _0811086C + movs r0, #3 + strb r0, [r1, #0x15] +_08110864: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _08110876 + .align 2, 0 +_0811086C: .4byte gUnknown_20397C8 +_08110870: + adds r0, r2, #0 + bl sub_080A34E4 +_08110876: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08110784 + + thumb_func_start sub_08110884 +sub_08110884: @ 0x08110884 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081108B8 + adds r7, r0, r1 + bl sub_080080C8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov sl, r5 + adds r6, r5, #0 + cmp r6, #0xff + bne _081108BC + adds r0, r4, #0 + bl sub_080A34E4 + b _08110966 + .align 2, 0 +_081108B8: .4byte gUnknown_3005B60 +_081108BC: + ldr r1, _081108E0 + ldrb r0, [r1] + bl sub_080A72B0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + mov sb, r1 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081108E4 + adds r0, r5, #0 + bl sub_08008100 + mov r0, r8 + bl sub_080A34E4 + b _08110966 + .align 2, 0 +_081108E0: .4byte gUnknown_20380BE +_081108E4: + ldr r2, _08110974 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r2, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, _08110978 + str r1, [r0] + adds r4, r4, r2 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #0x1f + ands r6, r0 + lsls r2, r6, #1 + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #3] + 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, #1 + strb r0, [r1] + mov r1, sb + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 + ldr r1, _0811097C + ldrb r0, [r1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x22] + mov r0, sl + strh r0, [r7, #0x24] + mov r1, sb + strh r1, [r7, #0x26] + ldr r0, _08110980 + str r0, [r7] +_08110966: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08110974: .4byte gUnknown_20205AC +_08110978: .4byte sub_08007140 +_0811097C: .4byte gUnknown_20380BE +_08110980: .4byte sub_08110984 + thumb_func_end sub_08110884 + + thumb_func_start sub_08110984 +sub_08110984: @ 0x08110984 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081109A8 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08110A08 + cmp r0, #1 + bgt _081109AC + cmp r0, #0 + beq _081109B6 + b _08110A88 + .align 2, 0 +_081109A8: .4byte gUnknown_3005B60 +_081109AC: + cmp r0, #2 + beq _08110A58 + cmp r0, #3 + beq _08110A78 + b _08110A88 +_081109B6: + ldrh r0, [r4, #0xa] + adds r0, #4 + strh r0, [r4, #0xa] + ldr r1, _08110A04 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xc + ldrsh r2, [r4, r1] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A7788 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0x30 + bne _08110A88 + b _08110A6A + .align 2, 0 +_08110A04: .4byte gUnknown_82FA8CC +_08110A08: + ldrh r0, [r4, #0xa] + subs r0, #4 + strh r0, [r4, #0xa] + ldr r1, _08110A54 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xc + ldrsh r2, [r4, r1] + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A7788 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08110A88 + b _08110A6A + .align 2, 0 +_08110A54: .4byte gUnknown_82FA8CC +_08110A58: + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08110A74 + adds r0, r0, r1 + bl sub_080A7324 +_08110A6A: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08110A88 + .align 2, 0 +_08110A74: .4byte gUnknown_20205AC +_08110A78: + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08008100 + adds r0, r5, #0 + bl sub_080A34E4 +_08110A88: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08110984 + + thumb_func_start sub_08110A90 +sub_08110A90: @ 0x08110A90 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08110B08 + cmp r0, #1 + bgt _08110AA6 + cmp r0, #0 + beq _08110AB0 + b _08110BB0 +_08110AA6: + cmp r0, #2 + beq _08110B3A + cmp r0, #3 + beq _08110B9A + b _08110BB0 +_08110AB0: + ldr r4, _08110B04 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110ADE + ldrh r0, [r5, #0x22] + adds r0, #0xc + strh r0, [r5, #0x22] +_08110ADE: + movs r0, #8 + strh r0, [r5, #0x30] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r0, [r5, #0x30] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + b _08110B32 + .align 2, 0 +_08110B04: .4byte gUnknown_20380D6 +_08110B08: + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08110BB0 + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xcb + bl sub_080A307C + adds r0, r5, #0 + movs r1, #1 + bl sub_08007FD0 +_08110B32: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _08110BB0 +_08110B3A: + ldrh r0, [r5, #0x32] + adds r1, r0, #1 + strh r1, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08110B7E + movs r0, #0 + strh r0, [r5, #0x32] + ldrh r1, [r5, #0x30] + subs r1, #1 + strh r1, [r5, #0x30] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08110B7E + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08110B7E: + movs r0, #0xe0 + lsls r0, r0, #2 + adds r2, r0, #0 + ldrh r1, [r5, #0x34] + adds r2, r2, r1 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r5, #0x26] + subs r0, r0, r1 + strh r0, [r5, #0x26] + movs r0, #0xff + ands r2, r0 + strh r2, [r5, #0x34] + b _08110BB0 +_08110B9A: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34C4 +_08110BB0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08110A90 + + thumb_func_start sub_08110BB8 +sub_08110BB8: @ 0x08110BB8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110BE4 + adds r0, r6, #0 + movs r1, #2 + bl sub_08007F70 + ldr r0, _08110BE0 + ldrh r1, [r0, #4] + rsbs r1, r1, #0 + strh r1, [r0, #4] + ldrh r1, [r0] + rsbs r1, r1, #0 + strh r1, [r0] + b _08110C14 + .align 2, 0 +_08110BE0: .4byte gUnknown_20380BE +_08110BE4: + ldr r0, _08110C78 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08110C14 + adds r0, r6, #0 + movs r1, #1 + bl sub_08007F70 + ldr r1, _08110C7C + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + ldrh r0, [r1, #6] + rsbs r0, r0, #0 + strh r0, [r1, #6] + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_08110C14: + ldr r5, _08110C78 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5974 + lsls r0, r0, #0x18 + ldr r4, _08110C7C + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r6, #0x22] + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r6, #0x36] + ldr r0, _08110C80 + str r0, [r6, #0x1c] + ldr r1, _08110C84 + adds r0, r6, #0 + bl sub_080A5B9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08110C78: .4byte gUnknown_20380D7 +_08110C7C: .4byte gUnknown_20380BE +_08110C80: .4byte sub_080A67B4 +_08110C84: .4byte sub_080A34C4 + thumb_func_end sub_08110BB8 + + thumb_func_start sub_08110C88 +sub_08110C88: @ 0x08110C88 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110CAC + ldr r1, _08110CA8 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] + adds r0, r6, #0 + movs r1, #2 + bl sub_08007F70 + b _08110CC8 + .align 2, 0 +_08110CA8: .4byte gUnknown_20380BE +_08110CAC: + ldr r0, _08110D24 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08110CC8 + ldr r0, _08110D28 + ldrh r1, [r0, #2] + rsbs r1, r1, #0 + strh r1, [r0, #2] + ldrh r1, [r0] + rsbs r1, r1, #0 + strh r1, [r0] +_08110CC8: + ldr r5, _08110D24 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5974 + lsls r0, r0, #0x18 + ldr r4, _08110D28 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r6, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r6, #0x22] + ldrh r0, [r4, #4] + strh r0, [r6, #0x2e] + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x36] + ldr r0, _08110D2C + str r0, [r6, #0x1c] + ldr r1, _08110D30 + adds r0, r6, #0 + bl sub_080A5B9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08110D24: .4byte gUnknown_20380D7 +_08110D28: .4byte gUnknown_20380BE +_08110D2C: .4byte sub_080A67B4 +_08110D30: .4byte sub_080A34C4 + thumb_func_end sub_08110C88 + + thumb_func_start sub_08110D34 +sub_08110D34: @ 0x08110D34 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110D50 + ldr r0, _08110D90 + movs r2, #4 + ldrsh r1, [r0, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + asrs r1, r1, #1 + strh r1, [r0, #4] +_08110D50: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + ldr r1, _08110D90 + ldrh r0, [r1, #4] + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x22] + strh r0, [r5, #0x34] + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08110D98 + ldr r4, _08110D94 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + b _08110DAA + .align 2, 0 +_08110D90: .4byte gUnknown_20380BE +_08110D94: .4byte gUnknown_20380D7 +_08110D98: + ldr r0, _08110DC0 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x32 + adds r3, r5, #0 + adds r3, #0x36 + movs r1, #1 + bl sub_080A81EC +_08110DAA: + adds r0, r5, #0 + bl sub_080A689C + ldr r0, _08110DC4 + ldrh r0, [r0, #6] + strh r0, [r5, #0x38] + ldr r0, _08110DC8 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08110DC0: .4byte gUnknown_20380D7 +_08110DC4: .4byte gUnknown_20380BE +_08110DC8: .4byte sub_08110DCC + thumb_func_end sub_08110D34 + + thumb_func_start sub_08110DCC +sub_08110DCC: @ 0x08110DCC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110DE2 + adds r0, r4, #0 + bl sub_080A34C4 + b _08110DFE +_08110DE2: + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3a] + adds r0, #0xd + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x3a] +_08110DFE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08110DCC + + thumb_func_start sub_08110E04 +sub_08110E04: @ 0x08110E04 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08110E34 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x20 + adds r3, r4, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC + ldr r0, _08110E38 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110E40 + ldr r0, _08110E3C + ldrh r1, [r4, #0x20] + ldrh r2, [r0] + subs r1, r1, r2 + strh r1, [r4, #0x20] + b _08110E4C + .align 2, 0 +_08110E34: .4byte gUnknown_20380D7 +_08110E38: .4byte gUnknown_20380D6 +_08110E3C: .4byte gUnknown_20380BE +_08110E40: + ldr r1, _08110E74 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + adds r0, r1, #0 +_08110E4C: + ldrh r0, [r0, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _08110E78 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08110E68 + ldrh r0, [r4, #0x22] + adds r0, #8 + strh r0, [r4, #0x22] +_08110E68: + ldr r0, _08110E7C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110E74: .4byte gUnknown_20380BE +_08110E78: .4byte gUnknown_20380D7 +_08110E7C: .4byte sub_08110E80 + thumb_func_end sub_08110E04 + + thumb_func_start sub_08110E80 +sub_08110E80: @ 0x08110E80 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _08110EB4 + movs r0, #0 + strh r0, [r3, #0x2e] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] +_08110EB4: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _08110EC8 + adds r0, r3, #0 + bl sub_080A34C4 +_08110EC8: + pop {r0} + bx r0 + thumb_func_end sub_08110E80 + + thumb_func_start sub_08110ECC +sub_08110ECC: @ 0x08110ECC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + movs r0, #0x10 + strh r0, [r4, #0x2e] + ldr r0, _08110EF0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110EF0: .4byte sub_08110EF4 + thumb_func_end sub_08110ECC + + thumb_func_start sub_08110EF4 +sub_08110EF4: @ 0x08110EF4 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x13 + bgt _08110F08 + adds r0, r1, #1 + strh r0, [r4, #0x32] + b _08110F46 +_08110F08: + ldrh r1, [r4, #0x30] + adds r0, r1, #1 + strh r0, [r4, #0x30] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08110F46 + ldrh r1, [r4, #0x2e] + subs r1, #1 + strh r1, [r4, #0x2e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08110F46 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08110F4C + str r0, [r4, #0x1c] +_08110F46: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08110F4C: .4byte sub_08110F50 + thumb_func_end sub_08110EF4 + + thumb_func_start sub_08110F50 +sub_08110F50: @ 0x08110F50 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08110F50 + + thumb_func_start sub_08110F70 +sub_08110F70: @ 0x08110F70 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110F90 + ldr r1, _08110F8C + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + b _08110FB2 + .align 2, 0 +_08110F8C: .4byte gUnknown_20380BE +_08110F90: + ldr r0, _0811108C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110FB2 + ldr r1, _08111090 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] + ldrh r0, [r1, #6] + rsbs r0, r0, #0 + strh r0, [r1, #6] +_08110FB2: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08111002 + ldr r0, _0811108C + ldrb r0, [r0] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r5, _08111094 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _08111002 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08110FF0 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08111002 +_08110FF0: + ldr r0, _08111090 + movs r2, #4 + ldrsh r1, [r0, r2] + rsbs r1, r1, #0 + strh r1, [r0, #4] + movs r2, #0 + ldrsh r1, [r0, r2] + rsbs r1, r1, #0 + strh r1, [r0] +_08111002: + adds r0, r7, #0 + movs r1, #1 + bl sub_080A6294 + ldr r5, _08111094 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + ldr r6, _08111090 + lsrs r4, r4, #0x18 + ldrh r0, [r6, #4] + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r6, #6] + adds r1, r1, r2 + lsls r1, r1, #0x10 + ldrh r2, [r7, #0x20] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r7, #0x22] + lsrs r5, r1, #0x10 + asrs r1, r1, #0x10 + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #1 + str r0, [sp] + adds r0, r7, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + ldrh r0, [r6, #8] + strh r0, [r7, #0x2e] + strh r4, [r7, #0x32] + strh r5, [r7, #0x36] + ldr r0, _08111098 + str r0, [r7, #0x1c] + ldr r1, _0811109C + adds r0, r7, #0 + bl sub_080A5B9C + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811108C: .4byte gUnknown_20380D6 +_08111090: .4byte gUnknown_20380BE +_08111094: .4byte gUnknown_20380D7 +_08111098: .4byte sub_080A67B4 +_0811109C: .4byte sub_080A34C4 + thumb_func_end sub_08110F70 + + thumb_func_start sub_081110A0 +sub_081110A0: @ 0x081110A0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0811110C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081110C0 + ldr r1, _08111110 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_081110C0: + ldr r4, _08111110 + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldr r5, _08111114 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r6, #0x36] + ldrh r0, [r4, #0xa] + strh r0, [r6, #0x38] + adds r0, r6, #0 + bl sub_080A619C + ldr r0, _08111118 + str r0, [r6, #0x1c] + adds r2, r6, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811110C: .4byte gUnknown_20380D6 +_08111110: .4byte gUnknown_20380BE +_08111114: .4byte gUnknown_20380D7 +_08111118: .4byte sub_0811111C + thumb_func_end sub_081110A0 + + thumb_func_start sub_0811111C +sub_0811111C: @ 0x0811111C + push {r4, r5, r6, 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, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08111148 + adds r0, r4, #0 + bl sub_080A34C4 + b _081111D8 +_08111148: + movs r0, #0x2e + adds r0, r0, r4 + mov r8, r0 + ldrh r7, [r4, #0x20] + ldrh r5, [r4, #0x24] + ldrh r1, [r4, #0x22] + mov ip, r1 + ldrh r6, [r4, #0x26] + mov r2, r8 + add r1, sp, #4 + movs r3, #7 +_0811115E: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0811115E + adds r0, r7, r5 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r2, ip + adds r0, r2, r6 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081111D8 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r1, r1, r2 + lsls r2, r6, #0x10 + asrs r2, r2, #0x10 + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r3, #0x80 + lsls r3, r3, #1 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + add r2, sp, #4 + mov r1, r8 + movs r3, #7 +_081111CA: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _081111CA +_081111D8: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0811111C + + thumb_func_start sub_081111E4 +sub_081111E4: @ 0x081111E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _081111F8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08111200 + ldr r4, _081111FC + b _08111202 + .align 2, 0 +_081111F8: .4byte gUnknown_20380BE +_081111FC: .4byte gUnknown_20380D6 +_08111200: + ldr r4, _08111234 +_08111202: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x12 + strh r0, [r5, #0x22] + ldr r1, _08111238 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0811123C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08111234: .4byte gUnknown_20380D7 +_08111238: .4byte sub_080A6014 +_0811123C: .4byte sub_080A6084 + thumb_func_end sub_081111E4 + + thumb_func_start sub_08111240 +sub_08111240: @ 0x08111240 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _081112AC + movs r1, #6 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _08111260 + ldr r0, _081112B0 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x20 + adds r3, r5, #0 + adds r3, #0x22 + movs r1, #0 + bl sub_080A81EC +_08111260: + ldrh r0, [r6] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r4, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x22] + adds r0, #0xe + strh r0, [r5, #0x22] + ldrb r1, [r6, #2] + adds r0, r5, #0 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_08007358 + strh r4, [r5, #0x2e] + strh r4, [r5, #0x30] + movs r0, #4 + strh r0, [r5, #0x32] + movs r0, #0x10 + strh r0, [r5, #0x34] + ldr r0, _081112B4 + strh r0, [r5, #0x36] + ldrh r0, [r6, #4] + strh r0, [r5, #0x38] + ldr r1, _081112B8 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r1, _081112BC + str r1, [r5, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081112AC: .4byte gUnknown_20380BE +_081112B0: .4byte gUnknown_20380D7 +_081112B4: .4byte 0x0000FFBA +_081112B8: .4byte sub_081112C0 +_081112BC: .4byte sub_080A5D18 + thumb_func_end sub_08111240 + + thumb_func_start sub_081112C0 +sub_081112C0: @ 0x081112C0 + 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, #4 + strh r0, [r4, #0x32] + movs r0, #0x20 + strh r0, [r4, #0x34] + ldr r0, _081112F8 + strh r0, [r4, #0x36] + ldr r1, _081112FC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, _08111300 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081112F8: .4byte 0x0000FFE8 +_081112FC: .4byte sub_080A6014 +_08111300: .4byte sub_080A5D18 + thumb_func_end sub_081112C0 + + thumb_func_start sub_08111304 +sub_08111304: @ 0x08111304 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0811132C + ldrb r1, [r4, #0xa] + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_08007358 + ldr r0, _08111330 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08111334 + ldrh r0, [r5, #0x20] + ldrh r1, [r4] + subs r0, r0, r1 + b _0811133A + .align 2, 0 +_0811132C: .4byte gUnknown_20380BE +_08111330: .4byte gUnknown_20380D6 +_08111334: + ldrh r0, [r4] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 +_0811133A: + strh r0, [r5, #0x20] + ldr r3, _0811137C + ldrh r2, [r3, #2] + ldrh r0, [r5, #0x22] + adds r2, r2, r0 + movs r4, #0 + strh r2, [r5, #0x22] + ldrh r0, [r3, #8] + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x20] + strh r0, [r5, #0x30] + ldrh r1, [r3, #4] + adds r0, r0, r1 + strh r0, [r5, #0x32] + strh r2, [r5, #0x34] + ldrh r0, [r3, #6] + adds r2, r2, r0 + strh r2, [r5, #0x36] + adds r0, r5, #0 + bl sub_080A66DC + strh r4, [r5, #0x34] + strh r4, [r5, #0x36] + ldr r0, _08111380 + str r0, [r5, #0x1c] + ldr r1, _08111384 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811137C: .4byte gUnknown_20380BE +_08111380: .4byte sub_080A5E34 +_08111384: .4byte sub_080A6014 + thumb_func_end sub_08111304 + + thumb_func_start sub_08111388 +sub_08111388: @ 0x08111388 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081113A0 + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081113A4 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + b _081113AC + .align 2, 0 +_081113A0: .4byte gUnknown_20380BE +_081113A4: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6248 +_081113AC: + ldr r1, _081113C8 + ldrh r0, [r1, #6] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #4] + strh r0, [r4, #0x30] + ldrh r0, [r1, #8] + strh r0, [r4, #0x32] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x34] + ldr r0, _081113CC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081113C8: .4byte gUnknown_20380BE +_081113CC: .4byte sub_081113D0 + thumb_func_end sub_08111388 + + thumb_func_start sub_081113D0 +sub_081113D0: @ 0x081113D0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r2, #0x38 + ldrsh r0, [r4, r2] + movs r2, #0x34 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + ldrh r1, [r4, #0x38] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08111416 + adds r0, r4, #0 + bl sub_080A34C4 +_08111416: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081113D0 + + thumb_func_start sub_0811141C +sub_0811141C: @ 0x0811141C + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r1, _081114D8 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08111460 + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_08111460: + ldr r0, _081114DC + strh r5, [r0] + ldr r4, _081114E0 + strh r5, [r4] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x16 + bl sub_08001144 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _081114E4 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r1, _081114E8 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + ldr r0, _081114EC + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _081114F0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _081114BE + ldr r0, _081114F4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081114BE + movs r5, #1 +_081114BE: + ldr r0, _081114F8 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r5, [r1, #8] + ldr r0, _081114FC + str r0, [r1] + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081114D8: .4byte 0x00003F42 +_081114DC: .4byte gUnknown_2022ACC +_081114E0: .4byte gUnknown_2022ACE +_081114E4: .4byte gUnknown_8D8D570 +_081114E8: .4byte gUnknown_8D8D3F4 +_081114EC: .4byte gUnknown_8D8DA9C +_081114F0: .4byte gUnknown_20380BE +_081114F4: .4byte gUnknown_20380D6 +_081114F8: .4byte gUnknown_3005B60 +_081114FC: .4byte sub_08111500 + thumb_func_end sub_0811141C + + thumb_func_start sub_08111500 +sub_08111500: @ 0x08111500 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08111528 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #0 + bne _08111534 + ldr r1, _0811152C + ldr r3, _08111530 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + b _0811153A + .align 2, 0 +_08111528: .4byte gUnknown_3005B60 +_0811152C: .4byte gUnknown_2022ACC +_08111530: .4byte 0x0000FFFA +_08111534: + ldr r1, _08111568 + ldrh r0, [r1] + adds r0, #6 +_0811153A: + strh r0, [r1] + ldr r1, _0811156C + ldr r3, _08111570 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r3, #0x20 + ldrsh r0, [r0, r3] + adds r4, r1, #0 + cmp r0, #4 + bls _0811155C + b _0811168A +_0811155C: + lsls r0, r0, #2 + ldr r1, _08111574 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08111568: .4byte gUnknown_2022ACC +_0811156C: .4byte gUnknown_2022ACE +_08111570: .4byte 0x0000FFFF +_08111574: .4byte _08111578 +_08111578: @ jump table + .4byte _0811158C @ case 0 + .4byte _081115CE @ case 1 + .4byte _081115E8 @ case 2 + .4byte _0811162A @ case 3 + .4byte _0811164C @ case 4 +_0811158C: + adds r0, r4, r5 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0811168A + strh r5, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + adds r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #7 + bne _0811168A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x1e] + b _0811168A +_081115CE: + adds r0, r4, r5 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x65 + bne _0811168A + movs r0, #7 + strh r0, [r1, #0x1e] + b _08111640 +_081115E8: + adds r0, r4, r5 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0811168A + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + subs r1, #1 + strh r1, [r4, #0x1e] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _0811168A + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + strh r1, [r4, #0x1e] + b _0811168A +_0811162A: + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + ldr r0, _08111648 + adds r1, r4, r5 + lsls r1, r1, #3 + adds r1, r1, r0 +_08111640: + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + b _0811168A + .align 2, 0 +_08111648: .4byte gUnknown_3005B60 +_0811164C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08111660 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_08111660: + ldr r0, _08111694 + movs r1, #0 + strh r1, [r0] + ldr r0, _08111698 + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + adds r0, r5, #0 + bl sub_080A34E4 +_0811168A: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08111694: .4byte gUnknown_2022ACC +_08111698: .4byte gUnknown_2022ACE + thumb_func_end sub_08111500 + + thumb_func_start sub_0811169C +sub_0811169C: @ 0x0811169C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08111718 + ldr r4, _081116E0 + movs r2, #6 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081116E8 + ldr r0, _081116E4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081116E8 + movs r0, #0x98 + lsls r0, r0, #1 + strh r0, [r5, #0x20] + ldrh r0, [r4, #2] + rsbs r0, r0, #0 + strh r0, [r4, #2] + movs r0, #1 + strh r0, [r5, #0x38] + ldrb r1, [r5, #3] + subs r0, #0x40 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5, #3] + b _081116EC + .align 2, 0 +_081116E0: .4byte gUnknown_20380BE +_081116E4: .4byte gUnknown_20380D6 +_081116E8: + ldr r0, _0811170C + strh r0, [r5, #0x20] +_081116EC: + ldr r4, _08111710 + ldrh r0, [r4] + strh r0, [r5, #0x22] + ldr r1, _08111714 + adds r0, r5, #0 + bl sub_0800858C + ldrh r0, [r4, #2] + strh r0, [r5, #0x30] + ldrh r0, [r4, #4] + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _08111774 + .align 2, 0 +_0811170C: .4byte 0x0000FFC0 +_08111710: .4byte gUnknown_20380BE +_08111714: .4byte gUnknown_85727A4 +_08111718: + ldrh r1, [r5, #0x30] + ldrh r3, [r5, #0x34] + adds r1, r1, r3 + ldrh r2, [r5, #0x32] + ldrh r0, [r5, #0x36] + adds r2, r2, r0 + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + ldrh r3, [r5, #0x24] + adds r0, r0, r3 + strh r0, [r5, #0x24] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r3, [r5, #0x26] + adds r0, 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 _0811175E + movs r2, #0x20 + ldrsh r0, [r5, r2] + movs r3, #0x24 + ldrsh r1, [r5, r3] + adds r0, r0, r1 + movs r1, #0x88 + lsls r1, r1, #1 + cmp r0, r1 + ble _08111774 + b _08111770 +_0811175E: + movs r1, #0x20 + ldrsh r0, [r5, r1] + movs r2, #0x24 + ldrsh r1, [r5, r2] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08111774 +_08111770: + ldr r0, _0811177C + str r0, [r5, #0x1c] +_08111774: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811177C: .4byte sub_080A34C4 + thumb_func_end sub_0811169C + + thumb_func_start sub_08111780 +sub_08111780: @ 0x08111780 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _081117B8 + ldrb r1, [r5, #8] + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + ldrh r0, [r5, #6] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x32] + ldrh r0, [r5, #4] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x36] + ldr r0, _081117BC + str r0, [r4, #0x1c] + ldr r1, _081117C0 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081117B8: .4byte gUnknown_20380BE +_081117BC: .4byte sub_080A67B4 +_081117C0: .4byte sub_080A34C4 + thumb_func_end sub_08111780 + + thumb_func_start sub_081117C4 +sub_081117C4: @ 0x081117C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08111844 + adds r6, r1, r0 + ldr r5, _08111848 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r1, #0xc0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r7, r0, #0x10 + ldr r4, _0811184C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r2, #0xc0 + lsls r2, r2, #0xd + adds r0, r0, r2 + lsrs r0, r0, #0x10 + mov r8, r0 + ldrb r1, [r5] + movs r0, #2 + eors r0, r1 + ldrb r4, [r4] + cmp r0, r4 + bne _08111834 + mov r8, r7 +_08111834: + bl sub_08111BAC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _08111850 + movs r0, #0x20 + b _08111856 + .align 2, 0 +_08111844: .4byte gUnknown_3005B60 +_08111848: .4byte gUnknown_20380D6 +_0811184C: .4byte gUnknown_20380D7 +_08111850: + lsls r1, r5, #3 + movs r0, #0x30 + subs r0, r0, r1 +_08111856: + strh r0, [r6, #0x18] + movs r4, #0 + strh r4, [r6, #8] + strh r4, [r6, #0x1e] + strh r4, [r6, #0x1a] + movs r0, #1 + strh r0, [r6, #0x20] + movs r1, #0x18 + ldrsh r0, [r6, r1] + cmp r0, #0 + bge _0811186E + adds r0, #7 +_0811186E: + asrs r0, r0, #3 + subs r0, #1 + strh r0, [r6, #0x1c] + mov r2, sb + lsls r0, r2, #3 + strh r0, [r6, #0xc] + lsls r0, r7, #3 + strh r0, [r6, #0xe] + mov r1, sl + subs r0, r1, r2 + lsls r0, r0, #3 + movs r2, #0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, #0x10] + mov r1, r8 + subs r0, r1, r7 + lsls r0, 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 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #8 + lsrs r4, r4, #0x10 + movs r0, #0x3f + bl sub_080A4A40 + lsls r0, r0, #0x18 + strh r4, [r6, #0x22] + asrs r0, r0, #0x18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + subs r0, r0, r4 + movs r2, #0x18 + ldrsh r1, [r6, r2] + bl __divsi3 + strh r0, [r6, #0x24] + strh r5, [r6, #0xa] + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x26] + ldr r0, _081118F0 + str r0, [r6] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081118F0: .4byte sub_081118F4 + thumb_func_end sub_081117C4 + + thumb_func_start sub_081118F4 +sub_081118F4: @ 0x081118F4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08111918 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _0811190E + b _08111A5C +_0811190E: + lsls r0, r0, #2 + ldr r1, _0811191C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08111918: .4byte gUnknown_3005B60 +_0811191C: .4byte _08111920 +_08111920: @ jump table + .4byte _08111934 @ case 0 + .4byte _08111998 @ case 1 + .4byte _081119A0 @ case 2 + .4byte _081119FC @ case 3 + .4byte _08111A4E @ case 4 +_08111934: + ldrh r2, [r4, #0x14] + ldrh r0, [r4, #0x10] + subs r2, r2, r0 + strh r2, [r4, #0x14] + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0x16] + ldr r3, _08111994 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x13 + strh r2, [r0, #0x24] + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r4, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r1, #0x26] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08111984 + movs r0, #0x14 + strh r0, [r4, #0x1e] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08111984: + ldrh r1, [r4, #0x22] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xa2 + bl sub_080A307C + b _08111A5C + .align 2, 0 +_08111994: .4byte gUnknown_20205AC +_08111998: + ldrh r0, [r4, #0x1e] + subs r0, #1 + strh r0, [r4, #0x1e] + b _08111A40 +_081119A0: + ldrh r0, [r4, #0x1a] + subs r0, #1 + strh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _081119C0 + ldrh r0, [r4, #0x10] + ldrh r2, [r4, #0x14] + adds r0, r0, r2 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0x16] + adds r0, r0, r1 + strh r0, [r4, #0x16] + b _081119CA +_081119C0: + strh r0, [r4, #0x14] + strh r0, [r4, #0x16] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081119CA: + ldr r2, _081119F8 + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r1, #0x24] + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r4, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r1, #0x26] + b _08111A5C + .align 2, 0 +_081119F8: .4byte gUnknown_20205AC +_081119FC: + ldrh r0, [r4, #0x10] + ldrh r2, [r4, #0xc] + adds r0, r0, r2 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x12] + ldrh r1, [r4, #0xe] + adds r0, r0, r1 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x1c + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _08111A3A + movs r0, #0 + strh r0, [r4, #0x1a] + adds r0, r4, #0 + bl sub_08111A64 + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x22] + adds r1, r1, r0 + strh r1, [r4, #0x22] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xaf + bl sub_080A307C +_08111A3A: + ldrh r0, [r4, #0x18] + subs r0, #1 + strh r0, [r4, #0x18] +_08111A40: + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08111A5C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08111A5C +_08111A4E: + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08111A5C + adds r0, r2, #0 + bl sub_080A34E4 +_08111A5C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081118F4 + + thumb_func_start sub_08111A64 +sub_08111A64: @ 0x08111A64 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0xa] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bhi _08111B54 + lsls r0, r0, #2 + ldr r1, _08111A80 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08111A80: .4byte _08111A84 +_08111A84: @ jump table + .4byte _08111A98 @ case 0 + .4byte _08111AA4 @ case 1 + .4byte _08111AA4 @ case 2 + .4byte _08111AB0 @ case 3 + .4byte _08111ABC @ case 4 +_08111A98: + ldr r3, _08111AA0 + movs r5, #0 + b _08111AC0 + .align 2, 0 +_08111AA0: .4byte gUnknown_857280C +_08111AA4: + ldr r3, _08111AAC + movs r5, #0x50 + b _08111AC0 + .align 2, 0 +_08111AAC: .4byte gUnknown_8572824 +_08111AB0: + ldr r3, _08111AB8 + movs r5, #0x40 + b _08111AC0 + .align 2, 0 +_08111AB8: .4byte gUnknown_8572824 +_08111ABC: + ldr r3, _08111B5C + movs r5, #0x30 +_08111AC0: + ldrh r1, [r4, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x13 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r4, #0xe] + lsls r2, r2, #0x10 + asrs r2, r2, #0x13 + lsls r2, r2, #0x10 + movs r6, #0x20 + ldrsh r0, [r4, r6] + lsls r0, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + asrs r1, r1, #0x10 + lsrs r7, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r3, #0 + movs r3, #0x23 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _08111B4C + ldr r1, _08111B60 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x12 + strh r1, [r0, #0x2e] + movs r2, #0x20 + ldrsh r1, [r4, r2] + lsls r2, r1, #2 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r6, r2 + movs r6, #0xa + ldrsh r3, [r4, r6] + lsls r1, r3, #1 + adds r1, r1, r3 + adds r2, r2, r1 + strh r2, [r0, #0x32] + strh r7, [r0, #0x36] + movs r1, #0xa + ldrsh r2, [r4, r1] + lsls r2, r2, #1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r1, r3, #0 + subs r1, r1, r2 + strh r1, [r0, #0x38] + ldrh r3, [r0, #4] + lsls r2, r3, #0x16 + lsrs r2, r2, #0x16 + adds r2, r2, r5 + ldr r5, _08111B64 + adds r1, r5, #0 + ands r2, r1 + ldr r1, _08111B68 + ands r1, r3 + orrs r1, r2 + strh r1, [r0, #4] + bl sub_080A619C + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] +_08111B4C: + movs r6, #0x20 + ldrsh r0, [r4, r6] + rsbs r0, r0, #0 + strh r0, [r4, #0x20] +_08111B54: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08111B5C: .4byte gUnknown_8572824 +_08111B60: .4byte gUnknown_20205AC +_08111B64: .4byte 0x000003FF +_08111B68: .4byte 0xFFFFFC00 + thumb_func_end sub_08111A64 + + thumb_func_start sub_08111B6C +sub_08111B6C: @ 0x08111B6C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08111B9E + ldr r0, _08111BA4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _08111B98 + ldr r0, _08111BA8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1e] + subs r0, #1 + strh r0, [r1, #0x1e] +_08111B98: + adds r0, r4, #0 + bl sub_08006E00 +_08111B9E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111BA4: .4byte sub_081118F4 +_08111BA8: .4byte gUnknown_3005B60 + thumb_func_end sub_08111B6C + + thumb_func_start sub_08111BAC +sub_08111BAC: @ 0x08111BAC + push {lr} + ldr r0, _08111BD4 + ldr r0, [r0] + ldrb r1, [r0, #0x11] + lsrs r0, r1, #4 + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08111BCE + movs r1, #1 +_08111BCE: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_08111BD4: .4byte gUnknown_20380A0 + thumb_func_end sub_08111BAC + + thumb_func_start sub_08111BD8 +sub_08111BD8: @ 0x08111BD8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08111C10 + ldrb r1, [r5, #8] + bl sub_08007EC0 + ldrh r0, [r5] + strh r0, [r4, #0x24] + ldrh r0, [r5, #2] + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x34] + ldrh r1, [r5, #4] + subs r0, r0, r1 + strh r0, [r4, #0x34] + movs r0, #3 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #6] + strh r0, [r4, #0x30] + ldr r0, _08111C14 + str r0, [r4, #0x1c] + adds r4, #0x3e + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08111C10: .4byte gUnknown_20380BE +_08111C14: .4byte sub_08111C18 + thumb_func_end sub_08111BD8 + + thumb_func_start sub_08111C18 +sub_08111C18: @ 0x08111C18 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r3] + ldrh r1, [r2, #0x34] + movs r3, #0x34 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _08111C50 + ldrh r3, [r2, #0x32] + adds r0, r1, r3 + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x2e] + adds r1, r1, r0 + strh r1, [r2, #0x34] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r1, r1, #0x10 + cmp r1, #0 + ble _08111C62 + movs r0, #0 + strh r0, [r2, #0x34] + b _08111C62 +_08111C50: + ldrh r0, [r2, #0x30] + subs r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08111C62 + adds r0, r2, #0 + bl sub_080A34C4 +_08111C62: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08111C18 + + thumb_func_start sub_08111C68 +sub_08111C68: @ 0x08111C68 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08111C90 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08111C84 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_08111C84: + adds r0, r4, #0 + bl sub_080A70E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111C90: .4byte gUnknown_20380D6 + thumb_func_end sub_08111C68 + + thumb_func_start sub_08111C94 +sub_08111C94: @ 0x08111C94 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08111CE0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08111CE4 + ldrh r3, [r2] + ldrh r5, [r4, #0x20] + adds r1, r3, r5 + strh r1, [r4, #0x20] + ldrh r1, [r2, #2] + adds r0, r0, r1 + strh r0, [r4, #0x22] + strh r3, [r4, #0x30] + strh r1, [r4, #0x32] + ldrh r0, [r2, #4] + strh r0, [r4, #0x38] + ldrb r1, [r2, #6] + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _08111CE8 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08111CE0: .4byte gUnknown_20380D7 +_08111CE4: .4byte gUnknown_20380BE +_08111CE8: .4byte sub_08111CEC + thumb_func_end sub_08111C94 + + thumb_func_start sub_08111CEC +sub_08111CEC: @ 0x08111CEC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #8 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x36] + adds r0, r0, r2 + strh r0, [r4, #0x36] + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r1, #0x28 + bl __divsi3 + ldrh r1, [r4, #0x24] + adds r1, r1, r0 + strh r1, [r4, #0x24] + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x26] + subs r1, r1, r0 + strh r1, [r4, #0x26] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x8c + ble _08111D36 + adds r0, r4, #0 + bl sub_080A34C4 +_08111D36: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08111CEC + + thumb_func_start sub_08111D3C +sub_08111D3C: @ 0x08111D3C + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08111D74 + ldr r0, [r2] + cmp r0, #0x20 + bgt _08111D50 + ldr r1, _08111D78 + movs r0, #0 + strh r0, [r1, #0xe] +_08111D50: + ldr r2, [r2] + adds r0, r2, #0 + subs r0, #0x21 + cmp r0, #0x20 + bhi _08111D60 + ldr r1, _08111D78 + movs r0, #1 + strh r0, [r1, #0xe] +_08111D60: + cmp r2, #0x41 + ble _08111D6A + ldr r1, _08111D78 + movs r0, #2 + strh r0, [r1, #0xe] +_08111D6A: + adds r0, r3, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08111D74: .4byte gUnknown_20380A4 +_08111D78: .4byte gUnknown_20380BE + thumb_func_end sub_08111D3C + + thumb_func_start sub_08111D7C +sub_08111D7C: @ 0x08111D7C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08111DD8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08111D9E + movs r0, #0 + bl sub_080A6674 + movs r0, #0xc8 + strh r0, [r5, #0xa] +_08111D9E: + ldr r4, _08111DDC + movs r1, #0xa + ldrsh r0, [r5, r1] + movs r1, #0xa + bl __divsi3 + ldrh r1, [r4] + adds r1, r1, r0 + strh r1, [r4] + ldrh r0, [r5, #0xa] + subs r0, #3 + strh r0, [r5, #0xa] + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0x78 + bne _08111DCA + movs r0, #1 + bl sub_080A6674 + adds r0, r6, #0 + bl sub_080A34E4 +_08111DCA: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08111DD8: .4byte gUnknown_3005B60 +_08111DDC: .4byte gUnknown_2022AD6 + thumb_func_end sub_08111D7C + + thumb_func_start sub_08111DE0 +sub_08111DE0: @ 0x08111DE0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _08111E4C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08111E0C + movs r0, #0 + bl sub_080A6674 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r0, _08111E50 + ldrh r0, [r0] + strh r0, [r4, #0xc] +_08111E0C: + ldrh r0, [r4, #0xa] + adds r0, #0x50 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0xa] + ldr r6, _08111E50 + movs r2, #0xa + ldrsh r1, [r4, r2] + movs r0, #4 + bl sub_0806EFD4 + ldrh r4, [r4, #0xc] + adds r0, r0, r4 + strh r0, [r6] + ldr r0, _08111E54 + movs r2, #0xe + ldrsh r1, [r0, r2] + ldr r0, _08111E58 + cmp r1, r0 + bne _08111E44 + movs r0, #0 + strh r0, [r6] + movs r0, #1 + bl sub_080A6674 + adds r0, r5, #0 + bl sub_080A34E4 +_08111E44: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08111E4C: .4byte gUnknown_3005B60 +_08111E50: .4byte gUnknown_2022AD6 +_08111E54: .4byte gUnknown_20380BE +_08111E58: .4byte 0x00000FFF + thumb_func_end sub_08111DE0 + + thumb_func_start sub_08111E5C +sub_08111E5C: @ 0x08111E5C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _08111EB8 + ldrh r0, [r0, #4] + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x20] + strh r0, [r4, #0x30] + ldr r5, _08111EBC + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + strh r0, [r4, #0x34] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080A689C + ldr r0, _08111EC0 + str r0, [r4, #0x1c] + movs r0, #0x10 + strh r0, [r4, #0x3a] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r4, #0x3a] + movs r0, #0x52 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08111EB8: .4byte gUnknown_20380BE +_08111EBC: .4byte gUnknown_20380D7 +_08111EC0: .4byte sub_08111EC4 + thumb_func_end sub_08111E5C + + thumb_func_start sub_08111EC4 +sub_08111EC4: @ 0x08111EC4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08111FB4 + adds r0, r4, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08111EE4 + ldr r0, _08111EE0 + str r0, [r4, #0x1c] + b _08111F2E + .align 2, 0 +_08111EE0: .4byte sub_08111F38 +_08111EE4: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xf + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r2, [r4, #0x38] + adds r0, r2, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x38] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0 + beq _08111F1C + cmp r2, #0xc4 + ble _08111F2E +_08111F1C: + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08111F2E + ldr r0, _08111F34 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0xc4 + bl sub_080A307C +_08111F2E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08111F34: .4byte gUnknown_20380E0 + thumb_func_end sub_08111EC4 + + thumb_func_start sub_08111F38 +sub_08111F38: @ 0x08111F38 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A6804 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl sub_0806EFB8 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0xf + bl sub_0806EFD4 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r2, [r4, #0x38] + adds r0, r2, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x38] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0 + beq _08111F7E + cmp r2, #0xc4 + ble _08111F8A +_08111F7E: + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08111F8A + movs r0, #0xc4 + bl sub_080A306C +_08111F8A: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08111FA8 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08111FA4 + str r0, [r4, #0x1c] + b _08111FAE + .align 2, 0 +_08111FA4: .4byte sub_080A60BC +_08111FA8: + adds r0, r4, #0 + bl sub_08111FB4 +_08111FAE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08111F38 + + thumb_func_start sub_08111FB4 +sub_08111FB4: @ 0x08111FB4 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x3a] + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0xff + ble _08111FD8 + adds r0, r2, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + ldr r1, _08111FD4 + cmp r0, r1 + bne _0811203E + movs r0, #0 + b _0811203C + .align 2, 0 +_08111FD4: .4byte 0x010D0000 +_08111FD8: + ldrh r1, [r4, #0x3c] + adds r3, r1, #1 + strh r3, [r4, #0x3c] + movs r0, #0xff + ands r0, r1 + cmp r0, #0 + bne _0811203E + ldr r1, _08111FFC + ands r1, r3 + strh r1, [r4, #0x3c] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08112000 + adds r0, r2, #1 + b _08112002 + .align 2, 0 +_08111FFC: .4byte 0xFFFFFF00 +_08112000: + subs r0, r2, #1 +_08112002: + strh r0, [r4, #0x3a] + ldrh r0, [r4, #0x3a] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08112024 + cmp r0, #0x10 + bne _08112030 +_08112024: + ldrh r0, [r4, #0x3c] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + eors r0, r1 + strh r0, [r4, #0x3c] +_08112030: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0811203E + movs r0, #0x80 + lsls r0, r0, #1 +_0811203C: + strh r0, [r4, #0x3a] +_0811203E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08111FB4 + + thumb_func_start sub_08112044 +sub_08112044: @ 0x08112044 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r1, _08112060 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08112060: .4byte sub_08112064 + thumb_func_end sub_08112044 + + thumb_func_start sub_08112064 +sub_08112064: @ 0x08112064 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + subs r0, #0x41 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x82 + bhi _08112098 + ldrb r0, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + b _081120A2 +_08112098: + ldrb r0, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 +_081120A2: + orrs r1, r0 + strb r1, [r4, #5] + 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, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3d + bne _081120D4 + adds r0, r4, #0 + bl sub_080A34C4 +_081120D4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08112064 + + thumb_func_start sub_081120DC +sub_081120DC: @ 0x081120DC + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6B38 + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0 + bl sub_080A6A7C + ldr r1, _08112154 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r1, _08112158 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0x80 + strh r1, [r0, #8] + ldr r1, _0811215C + ldrh r1, [r1] + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + movs r1, #0x10 + strh r1, [r0, #0xe] + ldr r1, _08112160 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08112154: .4byte gUnknown_20205AC +_08112158: .4byte gUnknown_3005B60 +_0811215C: .4byte gUnknown_20380BE +_08112160: .4byte sub_08112164 + thumb_func_end sub_081120DC + + thumb_func_start sub_08112164 +sub_08112164: @ 0x08112164 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081121B4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _081121AC + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0xc] + adds r1, #1 + strh r1, [r4, #0xc] + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #9 + bne _081121AC + ldr r0, _081121B8 + str r0, [r4] +_081121AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081121B4: .4byte gUnknown_3005B60 +_081121B8: .4byte sub_081121BC + thumb_func_end sub_08112164 + + thumb_func_start sub_081121BC +sub_081121BC: @ 0x081121BC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _081121E0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _081121E4 + subs r0, r1, #1 + strh r0, [r4, #0xa] + b _08112228 + .align 2, 0 +_081121E0: .4byte gUnknown_3005B60 +_081121E4: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrh r0, [r4, #8] + adds r0, #8 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + bgt _0811220C + movs r0, #8 + ldrsh r2, [r4, r0] + adds r0, r1, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_080A6A7C + b _08112228 +_0811220C: + adds r0, r1, #0 + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 +_08112228: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081121BC + + thumb_func_start sub_08112230 +sub_08112230: @ 0x08112230 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r4, r0, #0 + ldrh r5, [r4, #0x20] + ldrh r6, [r4, #0x22] + ldr r0, _081122CC + mov r8, r0 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + mov sb, r1 + strh r0, [r4, #0x20] + mov r1, r8 + ldrb r0, [r1] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + mov r1, sb + strh r1, [r4, #0x2e] + ldr r2, _081122D0 + ldrh r1, [r2] + strh r1, [r4, #0x30] + ldrh r1, [r2, #2] + strh r1, [r4, #0x32] + ldrh r1, [r2, #4] + strh r1, [r4, #0x34] + ldrh r1, [r4, #0x20] + lsls r1, r1, #4 + strh r1, [r4, #0x36] + lsls r0, r0, #4 + strh r0, [r4, #0x38] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + movs r1, #0x20 + ldrsh r0, [r4, r1] + subs r5, r5, r0 + lsls r5, r5, #4 + movs r0, #0 + ldrsh r1, [r2, r0] + lsls r1, r1, #1 + adds r0, r5, #0 + str r2, [sp] + bl __divsi3 + strh r0, [r4, #0x3a] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + movs r1, #0x22 + ldrsh r0, [r4, r1] + subs r6, r6, r0 + lsls r6, r6, #4 + ldr r2, [sp] + movs r0, #0 + ldrsh r1, [r2, r0] + lsls r1, r1, #1 + adds r0, r6, #0 + bl __divsi3 + strh r0, [r4, #0x3c] + ldr r0, _081122D4 + str r0, [r4, #0x1c] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081122CC: .4byte gUnknown_20380D6 +_081122D0: .4byte gUnknown_20380BE +_081122D4: .4byte sub_081122D8 + thumb_func_end sub_08112230 + + thumb_func_start sub_081122D8 +sub_081122D8: @ 0x081122D8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08112322 + cmp r0, #1 + bgt _081122EE + cmp r0, #0 + beq _081122F8 + b _081123E6 +_081122EE: + cmp r0, #2 + beq _0811238C + cmp r0, #3 + beq _081123E0 + b _081123E6 +_081122F8: + ldrh r0, [r5, #0x3a] + ldrh r2, [r5, #0x36] + adds r0, r0, r2 + strh r0, [r5, #0x36] + ldrh r1, [r5, #0x3c] + ldrh r2, [r5, #0x38] + adds r1, r1, r2 + strh r1, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r5, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r5, #0x22] + ldrh r0, [r5, #0x30] + subs r0, #1 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081123E6 + b _081123D2 +_08112322: + ldrh r0, [r5, #0x32] + subs r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081123E6 + ldr r4, _08112388 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x30] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x20] + lsls r0, r0, #4 + strh r0, [r5, #0x36] + ldrh r0, [r5, #0x22] + lsls r0, r0, #4 + strh r0, [r5, #0x38] + movs r1, #0x30 + ldrsh r0, [r5, r1] + movs r2, #0x20 + ldrsh r1, [r5, r2] + subs r0, r0, r1 + lsls r0, 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, r0, r1 + lsls r0, r0, #4 + movs r2, #0x34 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r5, #0x3c] + b _081123D2 + .align 2, 0 +_08112388: .4byte gUnknown_20380D7 +_0811238C: + ldrh r0, [r5, #0x3a] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] + ldrh r1, [r5, #0x3c] + ldrh r2, [r5, #0x38] + adds r1, r1, r2 + strh r1, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r5, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r5, #0x22] + ldrh r0, [r5, #0x34] + subs r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081123E6 + ldr r4, _081123DC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] +_081123D2: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _081123E6 + .align 2, 0 +_081123DC: .4byte gUnknown_20380D7 +_081123E0: + adds r0, r5, #0 + bl sub_080A6014 +_081123E6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081122D8 + + thumb_func_start sub_081123EC +sub_081123EC: @ 0x081123EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r0, _08112400 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08112400: .4byte sub_08112404 + thumb_func_end sub_081123EC + + thumb_func_start sub_08112404 +sub_08112404: @ 0x08112404 + push {r4, r5, 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 _0811249A + adds r1, r3, #0 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #4 + ands r0, r2 + adds r4, r1, #0 + cmp r0, #0 + bne _0811242E + movs r0, #4 + orrs r0, r2 + strb r0, [r4] +_0811242E: + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _0811243E + cmp r0, #1 + beq _08112448 + movs r6, #1 + b _08112452 +_0811243E: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #2 + bne _08112452 + b _08112456 +_08112448: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #4 + bne _08112452 + movs r5, #1 +_08112452: + cmp r5, #0 + beq _08112488 +_08112456: + ldrb r2, [r4] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r0, [r3, #0x32] + adds r0, #1 + movs r1, #0 + strh r0, [r3, #0x32] + strh r1, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0811249A + strh r1, [r3, #0x32] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + b _0811249A +_08112488: + cmp r6, #0 + beq _08112494 + adds r0, r3, #0 + bl sub_080A34C4 + b _0811249A +_08112494: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] +_0811249A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08112404 + + thumb_func_start sub_081124A0 +sub_081124A0: @ 0x081124A0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081124CC + adds r5, r0, r1 + movs r0, #1 + bl sub_080A72B0 + movs r6, #0 + movs r1, #0 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081124D0 + adds r0, r4, #0 + bl sub_080A34E4 + b _081125AC + .align 2, 0 +_081124CC: .4byte gUnknown_3005B60 +_081124D0: + strh r1, [r5, #0xa] + movs r0, #0xf + strh r0, [r5, #0xc] + movs r0, #2 + strh r0, [r5, #0xe] + strh r1, [r5, #0x10] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r5, #0xe] + lsls r1, r1, #8 + ldrh r0, [r5, #0xc] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r4, _08112538 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x50 + strh r1, [r0, #0x2e] + ldr r0, _0811253C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08112544 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08112540 + strh r1, [r0, #0x30] + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x70 + b _08112562 + .align 2, 0 +_08112538: .4byte gUnknown_20205AC +_0811253C: .4byte gUnknown_20380D7 +_08112540: .4byte 0x0000FF70 +_08112544: + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x90 + strh r1, [r0, #0x30] + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081125B4 +_08112562: + strh r1, [r0, #0x32] + ldr r4, _081125B8 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r2, #0 + strh r2, [r0, #0x34] + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x36] + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081125BC + bl sub_080A5B9C + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _081125C0 + str r1, [r0] + ldr r0, _081125C4 + str r0, [r5] +_081125AC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081125B4: .4byte 0x0000FF90 +_081125B8: .4byte gUnknown_20205AC +_081125BC: .4byte sub_08007140 +_081125C0: .4byte sub_080A5E34 +_081125C4: .4byte sub_081125C8 + thumb_func_end sub_081124A0 + + thumb_func_start sub_081125C8 +sub_081125C8: @ 0x081125C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081125EC + adds r4, r0, r1 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0811266C + cmp r0, #1 + bgt _081125F0 + cmp r0, #0 + beq _081125F6 + b _08112698 + .align 2, 0 +_081125EC: .4byte gUnknown_3005B60 +_081125F0: + cmp r0, #2 + beq _08112692 + b _08112698 +_081125F6: + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + movs r0, #3 + ands r0, r1 + strh r0, [r4, #0x12] + cmp r0, #1 + bne _08112614 + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08112614 + subs r0, r1, #1 + strh r0, [r4, #0xc] +_08112614: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #3 + bne _0811262A + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _0811262A + adds r0, r1, #1 + strh r0, [r4, #0xe] +_0811262A: + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0xc] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r4, #0xc] + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r1, r0 + bne _08112698 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x50 + ble _08112698 + movs r2, #8 + ldrsh r1, [r4, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08112668 + adds r0, r0, r1 + bl sub_080A7324 + movs r0, #1 + strh r0, [r4, #0x10] + b _08112698 + .align 2, 0 +_08112668: .4byte gUnknown_20205AC +_0811266C: + ldrh r0, [r4, #0x14] + adds r0, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08112698 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + b _08112698 +_08112692: + adds r0, r2, #0 + bl sub_080A34E4 +_08112698: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081125C8 + + thumb_func_start sub_081126A0 +sub_081126A0: @ 0x081126A0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _081126C0 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #0x26] + ldr r2, _081126C4 + str r2, [r1] + bl _call_via_r2 + thumb_func_end sub_081126A0 + + thumb_func_start sub_081126BC +sub_081126BC: @ 0x081126BC + pop {r0} + bx r0 + .align 2, 0 +_081126C0: .4byte gUnknown_3005B60 +_081126C4: .4byte sub_081126C8 + thumb_func_end sub_081126BC + + thumb_func_start sub_081126C8 +sub_081126C8: @ 0x081126C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08112700 + adds r5, r0, r1 + ldr r0, _08112704 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r0, #4 + bls _081126F4 + b _08112916 +_081126F4: + lsls r0, r0, #2 + ldr r1, _08112708 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08112700: .4byte gUnknown_3005B60 +_08112704: .4byte gUnknown_20380D7 +_08112708: .4byte _0811270C +_0811270C: @ jump table + .4byte _08112720 @ case 0 + .4byte _08112820 @ case 1 + .4byte _08112864 @ case 2 + .4byte _081128CC @ case 3 + .4byte _081128F8 @ case 4 +_08112720: + ldr r7, _08112758 + adds r0, r7, #0 + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + mov r8, r2 + strh r0, [r5, #0x24] + cmp r0, #0xff + beq _0811274E + cmp r0, #0xf + beq _0811274E + movs r0, #1 + bl sub_080A72B0 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0811275C + adds r0, r7, #0 + bl sub_08008564 +_0811274E: + adds r0, r4, #0 + bl sub_080A34E4 + b _0811291C + .align 2, 0 +_08112758: .4byte 0x00002771 +_0811275C: + ldr r4, _08112808 + movs r1, #8 + ldrsh r0, [r5, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r2, [r5, #0x24] + lsls r2, r2, #4 + ldrb r3, [r1, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] + movs r2, #8 + ldrsh r0, [r5, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #8 + ldrsh r0, [r5, r1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldr r0, _0811280C + ldr r1, [r0] + ldr r0, _08112810 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r1, r1, #0x1f + adds r2, #0x3e + lsrs r1, r1, #0x1f + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + 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, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + movs r0, #0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + lsls r0, r0, #4 + strh r0, [r5, #0x10] + cmp r6, #1 + bne _08112814 + movs r1, #0x80 + lsls r1, r1, #2 + b _08112818 + .align 2, 0 +_08112808: .4byte gUnknown_20205AC +_0811280C: .4byte gUnknown_2024174 +_08112810: .4byte gUnknown_20380D7 +_08112814: + movs r1, #0x80 + lsls r1, r1, #3 +_08112818: + movs r0, #0 + bl sub_08001220 + b _08112916 +_08112820: + movs r1, #0x24 + ldrsh r0, [r5, r1] + adds r0, #0x10 + lsls r0, r0, #4 + strh r0, [r5, #0x24] + movs r2, #0x10 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _08112854 + adds r0, r0, r1 + movs r2, #0x24 + ldrsh r1, [r5, r2] + lsls r1, r1, #1 + ldr r2, _08112858 + adds r1, r1, r2 + ldr r2, _0811285C + bl CpuSet + ldrh r0, [r5, #0x10] + ldr r3, _08112860 + movs r1, #0x10 + movs r2, #0xa + bl sub_0806F410 + b _08112916 + .align 2, 0 +_08112854: .4byte gUnknown_20373B4 +_08112858: .4byte gUnknown_20377B4 +_0811285C: .4byte 0x04000008 +_08112860: .4byte 0x00003C0D +_08112864: + ldr r2, _081128A0 + movs r0, #0x22 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + ldrh r0, [r0, #0x22] + adds r1, r1, r0 + subs r1, #0x20 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + cmp r1, #0 + bge _08112884 + movs r2, #0 +_08112884: + cmp r6, #1 + bne _081128A4 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, r2, #0 + adds r1, #0x40 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + str r2, [sp] + movs r2, #4 + str r2, [sp, #4] + str r6, [sp, #8] + b _081128BC + .align 2, 0 +_081128A0: .4byte gUnknown_20205AC +_081128A4: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, r2, #0 + adds r1, #0x40 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0 + str r2, [sp] + movs r2, #8 + str r2, [sp, #4] + movs r2, #1 + str r2, [sp, #8] +_081128BC: + movs r2, #2 + movs r3, #6 + bl sub_080B9ADC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1c] + b _08112916 +_081128CC: + cmp r6, #1 + bne _081128E0 + ldr r1, _081128DC + movs r0, #0x50 + bl sub_08001144 + b _081128E8 + .align 2, 0 +_081128DC: .4byte 0x00003F42 +_081128E0: + ldr r1, _081128F4 + movs r0, #0x50 + bl sub_08001144 +_081128E8: + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + b _08112916 + .align 2, 0 +_081128F4: .4byte 0x00003F44 +_081128F8: + cmp r6, #1 + bne _08112908 + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + bl sub_08001200 + b _08112912 +_08112908: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 +_08112912: + ldr r0, _08112928 + str r0, [r5] +_08112916: + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] +_0811291C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08112928: .4byte sub_0811292C + thumb_func_end sub_081126C8 + + thumb_func_start sub_0811292C +sub_0811292C: @ 0x0811292C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081129B4 + adds r4, r0, r1 + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + strh r0, [r4, #0x12] + cmp r0, #0 + bne _08112964 + ldr r1, _081129B8 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x12 + bl __divsi3 + strh r0, [r4, #0xc] +_08112964: + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #1 + bne _08112986 + ldr r1, _081129B8 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x12 + bl __divsi3 + movs r1, #0x10 + subs r1, r1, r0 + strh r1, [r4, #0xe] +_08112986: + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0xc] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0x80 + bne _081129AE + movs r0, #0 + strh r0, [r4, #0x26] + ldr r1, _081129BC + str r1, [r4] + adds r0, r5, #0 + bl _call_via_r1 +_081129AE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081129B4: .4byte gUnknown_3005B60 +_081129B8: .4byte gUnknown_82FA8CC +_081129BC: .4byte sub_081129C0 + thumb_func_end sub_0811292C + + thumb_func_start sub_081129C0 +sub_081129C0: @ 0x081129C0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081129F0 + adds r4, r0, r1 + ldr r0, _081129F4 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08112A2C + cmp r0, #1 + bgt _081129F8 + cmp r0, #0 + beq _081129FE + b _08112AA8 + .align 2, 0 +_081129F0: .4byte gUnknown_3005B60 +_081129F4: .4byte gUnknown_20380D7 +_081129F8: + cmp r0, #2 + beq _08112A40 + b _08112AA8 +_081129FE: + ldr r1, _08112A1C + movs r0, #3 + strb r0, [r1, #0x15] + movs r0, #1 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x24] + cmp r6, #1 + bne _08112A20 + movs r1, #0x80 + lsls r1, r1, #2 + b _08112A24 + .align 2, 0 +_08112A1C: .4byte gUnknown_20397C8 +_08112A20: + movs r1, #0x80 + lsls r1, r1, #3 +_08112A24: + movs r0, #0 + bl sub_08001220 + b _08112AA8 +_08112A2C: + ldrh r0, [r4, #0x10] + ldr r3, _08112A3C + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + b _08112AA8 + .align 2, 0 +_08112A3C: .4byte 0x00003C0D +_08112A40: + ldr r3, _08112A90 + movs r0, #0x24 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + bl sub_080A7324 + ldr r0, _08112A94 + bl sub_08008564 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + cmp r6, #1 + bne _08112A98 + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + bl sub_08001200 + b _08112AA2 + .align 2, 0 +_08112A90: .4byte gUnknown_20205AC +_08112A94: .4byte 0x00002771 +_08112A98: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 +_08112AA2: + adds r0, r5, #0 + bl sub_080A34E4 +_08112AA8: + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081129C0 + + thumb_func_start sub_08112AB4 +sub_08112AB4: @ 0x08112AB4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r0, _08112AF0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08112AFC + ldr r4, _08112AF4 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r2, #0xe0 + lsls r2, r2, #0xd + adds r0, r0, r2 + lsrs r5, r0, #0x10 + ldr r4, _08112AF8 + b _08112B20 + .align 2, 0 +_08112AF0: .4byte gUnknown_20380BE +_08112AF4: .4byte gUnknown_20380D6 +_08112AF8: .4byte gUnknown_20380D7 +_08112AFC: + ldr r4, _08112BC4 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r2, #0xe0 + lsls r2, r2, #0xd + adds r0, r0, r2 + lsrs r5, r0, #0x10 + ldr r4, _08112BC8 +_08112B20: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + movs r1, #0xe0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r0, r0, #0x10 + mov sb, r0 + mov r8, r5 + mov r2, sb + subs r4, r2, r5 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r6, #4 + strh r0, [r7, #0x2e] + lsls r0, r5, #4 + strh r0, [r7, #0x30] + mov r1, sl + subs r0, r1, r6 + lsls r0, r0, #4 + ldr r5, _08112BCC + movs r2, #2 + ldrsh r1, [r5, r2] + bl __divsi3 + strh r0, [r7, #0x32] + lsls r4, r4, #0x10 + asrs r4, r4, #0xc + movs r0, #2 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl __divsi3 + strh r0, [r7, #0x34] + ldrh r0, [r5, #2] + strh r0, [r7, #0x36] + mov r1, sl + strh r1, [r7, #0x38] + mov r2, sb + strh r2, [r7, #0x3a] + movs r1, #0x36 + ldrsh r0, [r7, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r7, #0x3c] + ldrb r1, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r7, #5] + strh r6, [r7, #0x20] + mov r2, r8 + strh r2, [r7, #0x22] + ldr r0, _08112BD0 + str r0, [r7, #0x1c] + adds r2, r7, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08112BC4: .4byte gUnknown_20380D7 +_08112BC8: .4byte gUnknown_20380D6 +_08112BCC: .4byte gUnknown_20380BE +_08112BD0: .4byte sub_08112BD4 + thumb_func_end sub_08112AB4 + + thumb_func_start sub_08112BD4 +sub_08112BD4: @ 0x08112BD4 + push {r4, lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x36] + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _08112C0C + ldrh r0, [r2, #0x32] + ldrh r4, [r2, #0x2e] + adds r0, r0, r4 + strh r0, [r2, #0x2e] + ldrh r1, [r2, #0x34] + ldrh r4, [r2, #0x30] + adds r1, r1, r4 + strh r1, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r2, #0x22] + subs r0, r3, #1 + strh r0, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _08112C0C + strh r0, [r2, #0x2e] +_08112C0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08112BD4 + + thumb_func_start sub_08112C14 +sub_08112C14: @ 0x08112C14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08112D64 + adds r1, r1, r0 + str r1, [sp] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + 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, _08112D68 + ldrh r0, [r2] + strh r0, [r1, #0x1c] + ldr r4, _08112D6C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08112C84 + b _08112D80 +_08112C84: + movs r4, #0 +_08112C86: + lsls r1, r4, #0x10 + asrs r3, r1, #0x10 + ldr r0, _08112D6C + ldrb r2, [r0] + str r1, [sp, #0x10] + cmp r3, r2 + beq _08112D52 + movs r0, #2 + eors r2, r0 + cmp r3, r2 + beq _08112D52 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08112D52 + ldr r6, [sp, #4] + ldr r3, [sp, #8] + lsls r0, r3, #0x10 + asrs r7, r0, #0x10 + ldr r0, _08112D70 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x37 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0x40 + beq _08112D52 + adds r0, r4, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + adds r0, r4, #0 + movs r1, #3 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + mov r0, r8 + lsls r5, r0, #4 + add r5, r8 + lsls r5, r5, #2 + ldr r1, _08112D74 + adds r4, r5, r1 + lsls r0, r6, #4 + strh r0, [r4, #0x2e] + lsls r0, r7, #4 + strh r0, [r4, #0x30] + mov r2, sl + subs r0, r2, r6 + lsls r0, r0, #4 + ldr r3, _08112D68 + movs r2, #2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, #0x32] + mov r3, sb + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r7 + lsls r0, r0, #4 + ldr r2, _08112D68 + movs r3, #2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, #0x34] + ldr r1, _08112D68 + ldrh r0, [r1, #2] + strh r0, [r4, #0x36] + mov r2, sl + strh r2, [r4, #0x38] + mov r3, sb + strh r3, [r4, #0x3a] + ldr r0, _08112D78 + adds r5, r5, r0 + ldr r0, _08112D7C + str r0, [r5] + ldr r2, [sp] + movs r3, #0x20 + ldrsh r1, [r2, r3] + adds r1, #0xd + lsls r1, r1, #1 + adds r0, r2, #0 + adds r0, #8 + adds r0, r0, r1 + mov r1, r8 + strh r1, [r0] + ldrh r0, [r2, #0x20] + adds r0, #1 + strh r0, [r2, #0x20] +_08112D52: + ldr r2, [sp, #0x10] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r2, r3 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _08112C86 + b _08112E04 + .align 2, 0 +_08112D64: .4byte gUnknown_3005B60 +_08112D68: .4byte gUnknown_20380BE +_08112D6C: .4byte gUnknown_20380D6 +_08112D70: .4byte gUnknown_857299C +_08112D74: .4byte gUnknown_20205AC +_08112D78: .4byte gUnknown_20205C8 +_08112D7C: .4byte sub_08112BD4 +_08112D80: + ldr r0, _08112E1C + ldr r7, [sp, #4] + ldr r2, [sp, #8] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + str r1, [sp, #0xc] + adds r1, r7, #0 + ldr r2, [sp, #0xc] + movs r3, #0x37 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0x40 + beq _08112E04 + movs r3, #0x30 + mov sl, r3 + movs r0, #0x28 + mov sb, r0 + ldr r6, _08112E20 + mov r1, r8 + lsls r5, r1, #4 + add r5, r8 + lsls r5, 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, r0, #4 + ldr r3, _08112E24 + movs r2, #2 + ldrsh r1, [r3, r2] + bl __divsi3 + strh r0, [r4, #0x32] + mov r3, sb + ldr r1, [sp, #0xc] + subs r0, r3, r1 + lsls r0, r0, #4 + ldr r2, _08112E24 + movs r3, #2 + ldrsh r1, [r2, r3] + bl __divsi3 + strh r0, [r4, #0x34] + ldr r1, _08112E24 + ldrh r0, [r1, #2] + strh r0, [r4, #0x36] + mov r2, sl + strh r2, [r4, #0x38] + mov r3, sb + strh r3, [r4, #0x3a] + adds r6, #0x1c + adds r5, r5, r6 + ldr r0, _08112E28 + str r0, [r5] + mov r1, r8 + ldr r0, [sp] + strh r1, [r0, #0x22] + movs r0, #1 + ldr r2, [sp] + strh r0, [r2, #0x20] +_08112E04: + ldr r0, _08112E2C + ldr r3, [sp] + str r0, [r3] + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08112E1C: .4byte gUnknown_857299C +_08112E20: .4byte gUnknown_20205AC +_08112E24: .4byte gUnknown_20380BE +_08112E28: .4byte sub_08112BD4 +_08112E2C: .4byte sub_08112E30 + thumb_func_end sub_08112C14 + + thumb_func_start sub_08112E30 +sub_08112E30: @ 0x08112E30 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08112E54 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _08112EE6 + cmp r1, #1 + bgt _08112E58 + cmp r1, #0 + beq _08112E66 + b _08112FA2 + .align 2, 0 +_08112E54: .4byte gUnknown_3005B60 +_08112E58: + cmp r1, #2 + bne _08112E5E + b _08112F78 +_08112E5E: + cmp r1, #3 + bne _08112E64 + b _08112F8C +_08112E64: + b _08112FA2 +_08112E66: + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08112ECC + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08112ECC + strh r1, [r4, #0x12] + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08112E9C + ldrh r1, [r4, #0x18] + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08112EAA + adds r0, r1, #1 + strh r0, [r4, #0x18] + b _08112EAA +_08112E9C: + ldrh r1, [r4, #0x1a] + movs r2, #0x1a + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08112EAA + subs r0, r1, #1 + strh r0, [r4, #0x1a] +_08112EAA: + ldrh r1, [r4, #0x1a] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x16 + ldrsh r0, [r4, r1] + cmp r0, #0x17 + ble _08112ECC + movs r0, #0 + strh r0, [r4, #0x16] + movs r0, #1 + strh r0, [r4, #0x14] +_08112ECC: + ldrh r1, [r4, #0x1c] + movs r2, #0x1c + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08112EDC + subs r0, r1, #1 + strh r0, [r4, #0x1c] + b _08112FA2 +_08112EDC: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08112FA2 + b _08112F84 +_08112EE6: + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08112FA2 + movs r0, #0 + strh r0, [r4, #0x12] + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] + ands r0, r1 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08112F16 + ldrh r1, [r4, #0x18] + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08112F24 + subs r0, r1, #1 + strh r0, [r4, #0x18] + b _08112F24 +_08112F16: + ldrh r1, [r4, #0x1a] + movs r2, #0x1a + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08112F24 + adds r0, r1, #1 + strh r0, [r4, #0x1a] +_08112F24: + ldrh r1, [r4, #0x1a] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r4, #0x18] + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r1, r0 + bne _08112FA2 + movs r5, #0 + b _08112F68 +_08112F44: + adds r1, r5, #0 + adds r1, #0xd + lsls r1, r1, #1 + adds r0, r4, #0 + adds r0, #8 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08112F74 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08112F68: + movs r1, #0x20 + ldrsh r0, [r4, r1] + cmp r5, r0 + blt _08112F44 + b _08112F84 + .align 2, 0 +_08112F74: .4byte gUnknown_20205AC +_08112F78: + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08112FA2 +_08112F84: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08112FA2 +_08112F8C: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34E4 +_08112FA2: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08112E30 + + thumb_func_start sub_08112FA8 +sub_08112FA8: @ 0x08112FA8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08112FF4 + movs r1, #0 + strh r1, [r0] + ldr r0, _08112FF8 + strh r1, [r0] + ldr r1, _08112FFC + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08113000 + movs r0, #0x4a + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xc8 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0x10 + bl sub_08001144 + ldr r0, _08113004 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08112FF0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08113008 +_08112FF0: + movs r6, #0x28 + b _0811300A + .align 2, 0 +_08112FF4: .4byte gUnknown_2022AD8 +_08112FF8: .4byte gUnknown_2022ADA +_08112FFC: .4byte 0x00003F3F +_08113000: .4byte 0x00003F1F +_08113004: .4byte gUnknown_20380D6 +_08113008: + movs r6, #0xc8 +_0811300A: + ldr r1, _08113048 + lsls r3, r6, #0x10 + asrs r2, r3, #0x10 + lsls r0, r2, #8 + orrs r0, r2 + strh r0, [r1] + ldr r1, _0811304C + movs r5, #0x28 + ldr r0, _08113050 + strh r0, [r1] + lsrs r3, r3, #0x10 + movs r1, #0xf0 + subs r1, r1, r2 + movs r4, #0x48 + ldr r2, _08113054 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, 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, _08113058 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08113048: .4byte gUnknown_2022AD8 +_0811304C: .4byte gUnknown_2022ADA +_08113050: .4byte 0x00002828 +_08113054: .4byte gUnknown_3005B60 +_08113058: .4byte sub_0811305C + thumb_func_end sub_08112FA8 + + thumb_func_start sub_0811305C +sub_0811305C: @ 0x0811305C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0811317C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r1, [r4, #8] + adds r0, r1, #1 + strh r0, [r4, #8] + ldrh r5, [r4, #0xa] + ldrh r7, [r4, #0xc] + ldrh r0, [r4, #0xe] + mov sl, r0 + ldrh r2, [r4, #0x10] + str r2, [sp, #0xc] + ldrh r0, [r4, #0x12] + ldrh r2, [r4, #0x14] + mov r8, r2 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + cmp r6, #0xf + ble _08113098 + b _08113188 +_08113098: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + str r0, [sp, #0x10] + str r1, [sp, #0x14] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + ldr r2, _08113180 + ldr r3, _08113184 + 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, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + ldr r2, _08113180 + ldr r3, _08113184 + 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, r0, #0x10 + lsrs r7, r0, #0x10 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + adds r5, r1, #0 + adds r4, r0, #0 + mov r2, sl + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + ldr r2, _08113180 + ldr r3, _08113184 + 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, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r1, [sp, #0xc] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + bl __floatsidf + ldr r2, _08113180 + ldr r3, _08113184 + 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, r0, #0x10 + lsrs r5, r0, #0x10 + b _081131B6 + .align 2, 0 +_0811317C: .4byte gUnknown_3005B60 +_08113180: .4byte 0x3FB00000 +_08113184: .4byte 0x00000000 +_08113188: + movs r2, #0 + mov sb, r2 + movs r7, #0xf0 + movs r6, #0 + movs r5, #0x70 + str r6, [sp] + str r6, [sp, #4] + str r6, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r3, #0 + bl sub_080A6E74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r6, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081131D8 + str r0, [r4] +_081131B6: + ldr r1, _081131DC + mov r2, sb + lsls r0, r2, #8 + orrs r7, r0 + strh r7, [r1] + ldr r1, _081131E0 + lsls r0, r6, #8 + orrs r5, r0 + strh r5, [r1] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081131D8: .4byte sub_081131E4 +_081131DC: .4byte gUnknown_2022AD8 +_081131E0: .4byte gUnknown_2022ADA + thumb_func_end sub_0811305C + + thumb_func_start sub_081131E4 +sub_081131E4: @ 0x081131E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08113230 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0811322A + ldr r0, _08113234 + strh r1, [r0] + ldr r0, _08113238 + strh r1, [r0] + ldr r4, _0811323C + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34E4 +_0811322A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08113230: .4byte gUnknown_2037C74 +_08113234: .4byte gUnknown_2022AD8 +_08113238: .4byte gUnknown_2022ADA +_0811323C: .4byte 0x00003F3F + thumb_func_end sub_081131E4 + + thumb_func_start sub_08113240 +sub_08113240: @ 0x08113240 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0811326C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08113274 + movs r2, #0x18 + ldr r3, _08113270 + ldrb r0, [r4, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r4, #3] + b _08113278 + .align 2, 0 +_0811326C: .4byte gUnknown_20380D6 +_08113270: .4byte 0x0000FFFE +_08113274: + ldr r2, _08113294 + movs r3, #2 +_08113278: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + strh r3, [r4, #0x30] + movs r0, #0x3c + strh r0, [r4, #0x2e] + ldr r0, _08113298 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08113294: .4byte 0x0000FFE8 +_08113298: .4byte sub_0811329C + thumb_func_end sub_08113240 + + thumb_func_start sub_0811329C +sub_0811329C: @ 0x0811329C + push {r4, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x2e] + movs r2, #0x2e + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _081132AE + subs r0, r1, #1 + b _08113312 +_081132AE: + ldrh r0, [r3, #0x30] + ldrh r4, [r3, #0x24] + adds r1, r0, r4 + strh r1, [r3, #0x24] + adds r0, r1, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xe + bls _08113314 + ldrh r0, [r3, #0x20] + adds r0, r0, r1 + strh r0, [r3, #0x20] + movs r0, #0 + strh r0, [r3, #0x24] + ldrh r2, [r3, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #8 + ldr r4, _08113300 + adds r0, r4, #0 + ands r1, r0 + ldr r0, _08113304 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _08113310 + movs r0, #0x1e + strh r0, [r3, #0x2e] + ldr r0, _08113308 + str r0, [r3, #0x1c] + ldr r1, _0811330C + adds r0, r3, #0 + bl sub_080A5B9C + b _08113314 + .align 2, 0 +_08113300: .4byte 0x000003FF +_08113304: .4byte 0xFFFFFC00 +_08113308: .4byte sub_080A5D78 +_0811330C: .4byte sub_0811331C +_08113310: + movs r0, #0x28 +_08113312: + strh r0, [r3, #0x2e] +_08113314: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811329C + + thumb_func_start sub_0811331C +sub_0811331C: @ 0x0811331C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08113346 + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + strh r5, [r4, #0x30] + strh r5, [r4, #0x32] + b _0811338A +_08113346: + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #1 + bgt _08113356 + adds r0, r1, #1 + strh r0, [r4, #0x30] + b _0811338A +_08113356: + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + movs r1, #0x10 + subs r1, r1, r0 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _0811338A + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08113390 + str r0, [r4, #0x1c] +_0811338A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08113390: .4byte sub_08113394 + thumb_func_end sub_0811331C + + thumb_func_start sub_08113394 +sub_08113394: @ 0x08113394 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + ldr r0, _081133C0 + movs r1, #0 + strh r1, [r0] + ldr r0, _081133C4 + strh r1, [r0] + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081133C0: .4byte gUnknown_2022AD8 +_081133C4: .4byte gUnknown_2022ADA + thumb_func_end sub_08113394 + + thumb_func_start sub_081133C8 +sub_081133C8: @ 0x081133C8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r1, #0xc + bl sub_0806EFB8 + strh r0, [r5, #0x24] + ldr r0, _08113430 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081133EC + ldrh r0, [r5, #0x24] + rsbs r0, r0, #0 + strh r0, [r5, #0x24] +_081133EC: + ldrh r0, [r5, #0x2e] + adds r0, #6 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x2e] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r5, #0x30] + adds r0, r0, r1 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _08113438 + ldr r0, _08113434 + strh r0, [r5, #0x3a] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r5, #0x3a] + movs r0, #0x52 + bl sub_08001144 + b _08113490 + .align 2, 0 +_08113430: .4byte gUnknown_20380D6 +_08113434: .4byte 0x0000050B +_08113438: + cmp r0, #0x1e + ble _08113490 + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrh r1, [r5, #0x3a] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + movs r6, #0xff + ands r6, r1 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r7, r0, #0x10 + cmp r7, #0x10 + bls _0811345C + movs r7, #0x10 +_0811345C: + subs r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r0, #0 + bge _08113468 + movs r6, #0 +_08113468: + lsls r4, r7, #8 + orrs r4, r6 + lsls r1, r4, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + strh r4, [r5, #0x3a] + cmp r7, #0x10 + bne _08113490 + cmp r6, #0 + bne _08113490 + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08113498 + str r0, [r5, #0x1c] +_08113490: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08113498: .4byte sub_0811349C + thumb_func_end sub_081133C8 + + thumb_func_start sub_0811349C +sub_0811349C: @ 0x0811349C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811349C + + thumb_func_start sub_081134BC +sub_081134BC: @ 0x081134BC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08113554 + adds r4, r4, r0 + movs r6, #0 + strh r6, [r4, #8] + movs r0, #0x10 + mov r8, r0 + mov r0, r8 + strh r0, [r4, #0xa] + ldr r5, _08113558 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1a] + ldrb r0, [r5] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1c] + ldrb r0, [r5] + movs r1, #1 + bl sub_080A7EE4 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + adds r1, #8 + strh r1, [r4, #0x1e] + strh r6, [r4, #0x16] + ldrb r0, [r5] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + ldrb r0, [r5] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #2 + strh r0, [r4, #0x14] + strh r6, [r4, #0xe] + mov r0, r8 + strh r0, [r4, #0x10] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + strh r6, [r4, #0x18] + ldr r0, _0811355C + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08113554: .4byte gUnknown_3005B60 +_08113558: .4byte gUnknown_20380D6 +_0811355C: .4byte sub_08113560 + thumb_func_end sub_081134BC + + thumb_func_start sub_08113560 +sub_08113560: @ 0x08113560 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08113584 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _0811357A + b _081136E6 +_0811357A: + lsls r0, r0, #2 + ldr r1, _08113588 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08113584: .4byte gUnknown_3005B60 +_08113588: .4byte _0811358C +_0811358C: @ jump table + .4byte _081135A4 @ case 0 + .4byte _08113614 @ case 1 + .4byte _08113656 @ case 2 + .4byte _0811366A @ case 3 + .4byte _081136C0 @ case 4 + .4byte _081136D0 @ case 5 +_081135A4: + movs r6, #0 +_081135A6: + movs r2, #0x1a + ldrsh r1, [r4, r2] + movs r0, #0x1c + ldrsh r2, [r4, r0] + ldrb r3, [r4, #0x14] + ldr r0, _08113608 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _081135FA + ldr r1, _0811360C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r1 + strh r7, [r5, #0x2e] + ldr r0, _08113610 + ldrb r0, [r0] + bl sub_080A62F8 + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081135DC + movs r1, #1 +_081135DC: + strh r1, [r5, #0x30] + movs r0, #0x2a + muls r0, r6, r0 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r4, #0x1e] + strh r0, [r5, #0x34] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #1 + strh r0, [r5, #0x38] + ldrh r0, [r4, #0x16] + adds r0, #1 + strh r0, [r4, #0x16] +_081135FA: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _081135A6 + b _081136C8 + .align 2, 0 +_08113608: .4byte gUnknown_8572A14 +_0811360C: .4byte gUnknown_20205AC +_08113610: .4byte gUnknown_20380D6 +_08113614: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08113632 + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0xd + bgt _08113640 + adds r0, r1, #1 + strh r0, [r4, #0xe] + b _08113640 +_08113632: + ldrh r1, [r4, #0x10] + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #4 + ble _08113640 + subs r0, r1, #1 + strh r0, [r4, #0x10] +_08113640: + movs r1, #0xe + ldrsh r0, [r4, r1] + ldrh r2, [r4, #0xe] + ldrh r1, [r4, #0x10] + cmp r0, #0xe + bne _081136B0 + cmp r1, #4 + bne _081136B0 + movs r0, #0 + strh r0, [r4, #0xa] + b _081136AA +_08113656: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + ble _081136E6 + movs r0, #0 + strh r0, [r4, #0xa] + b _081136C8 +_0811366A: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08113688 + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08113696 + subs r0, r1, #1 + strh r0, [r4, #0xe] + b _08113696 +_08113688: + ldrh r1, [r4, #0x10] + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08113696 + adds r0, r1, #1 + strh r0, [r4, #0x10] +_08113696: + movs r1, #0xe + ldrsh r0, [r4, r1] + ldrh r2, [r4, #0xe] + ldrh r1, [r4, #0x10] + cmp r0, #0 + bne _081136B0 + cmp r1, #0x10 + bne _081136B0 + movs r0, #1 + strh r0, [r4, #0x18] +_081136AA: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081136B0: + lsls r1, r1, #8 + orrs r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + b _081136E6 +_081136C0: + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _081136E6 +_081136C8: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081136E6 +_081136D0: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r7, #0 + bl sub_080A34E4 +_081136E6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08113560 + + thumb_func_start sub_081136EC +sub_081136EC: @ 0x081136EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081136FE + ldrh r0, [r4, #0x32] + adds r0, #2 + b _08113702 +_081136FE: + ldrh r0, [r4, #0x32] + subs r0, #2 +_08113702: + 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_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + subs r0, #0x41 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x7e + bhi _08113744 + ldr r2, _08113740 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x12] + adds r1, #1 + movs r0, #3 + ands r1, r0 + b _08113758 + .align 2, 0 +_08113740: .4byte gUnknown_3005B60 +_08113744: + ldr r2, _081137AC + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #3 + ldrb r1, [r0, #0x12] + ands r1, r2 +_08113758: + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + movs r1, #0x38 + ldrsh r0, [r4, r1] + lsls r0, r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + movs r1, #7 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldr r2, _081137AC + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + movs r2, #0x18 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _081137A6 + ldrh r0, [r1, #0x16] + subs r0, #1 + strh r0, [r1, #0x16] + adds r0, r4, #0 + bl sub_08006E00 +_081137A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081137AC: .4byte gUnknown_3005B60 + thumb_func_end sub_081136EC + + thumb_func_start sub_081137B0 +sub_081137B0: @ 0x081137B0 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + ldr r2, _081137F4 + ldr r1, _081137F8 + ldrb r1, [r1] + adds r1, 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, _081137FC + ldrh r1, [r2] + strh r1, [r0, #0x32] + ldrh r1, [r2, #2] + strh r1, [r0, #0x34] + ldr r1, _08113800 + str r1, [r0, #0x1c] + ldr r2, _08113804 + movs r3, #0x38 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_081137F4: .4byte gUnknown_2023E88 +_081137F8: .4byte gUnknown_20380D6 +_081137FC: .4byte gUnknown_20380BE +_08113800: .4byte sub_08113808 +_08113804: .4byte gUnknown_20205AC + thumb_func_end sub_081137B0 + + thumb_func_start sub_08113808 +sub_08113808: @ 0x08113808 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x34] + movs r1, #0x34 + ldrsh r3, [r5, r1] + cmp r3, #0 + beq _08113870 + subs r0, #1 + strh r0, [r5, #0x34] + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r2, #0x30 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + ldr r4, _08113868 + movs r1, #0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strh r0, [r1, #0x24] + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r2, #0x30 + ldrsh r1, [r5, r2] + bl sub_0806EFD4 + movs r1, #0x38 + ldrsh r2, [r5, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, 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, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _081138A4 + ldr r2, _0811386C + adds r0, r1, r2 + strh r0, [r5, #0x2e] + b _081138A4 + .align 2, 0 +_08113868: .4byte gUnknown_20205AC +_0811386C: .4byte 0xFFFFFF00 +_08113870: + ldr r2, _081138AC + movs r0, #0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + movs r0, #0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] + movs r0, #0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + subs r1, #8 + strh r1, [r0, #0x22] + ldr r0, _081138B0 + str r0, [r5, #0x1c] +_081138A4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081138AC: .4byte gUnknown_20205AC +_081138B0: .4byte sub_080A6014 + thumb_func_end sub_08113808 + + thumb_func_start sub_081138B4 +sub_081138B4: @ 0x081138B4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081138FC + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08113904 + ldr r2, _08113900 + ldrh r0, [r5, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r5, #0x20] + ldrh r0, [r2, #6] + rsbs r0, r0, #0 + strh r0, [r2, #6] + ldrh r0, [r2, #8] + rsbs r0, r0, #0 + strh r0, [r2, #8] + adds r1, r2, #0 + b _0811390E + .align 2, 0 +_081138FC: .4byte gUnknown_20380D6 +_08113900: .4byte gUnknown_20380BE +_08113904: + ldr r1, _08113944 + ldrh r0, [r1] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + strh r0, [r5, #0x20] +_0811390E: + ldrh r0, [r1, #2] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + ldrh r0, [r1, #4] + strh r0, [r5, #0x2e] + ldrh r0, [r1, #6] + strh r0, [r5, #0x30] + ldrh r0, [r1, #8] + strh r0, [r5, #0x34] + ldrh r0, [r1, #0xa] + strh r0, [r5, #0x38] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08113948 + adds r0, r5, #0 + bl sub_080A5B9C + ldr r0, _0811394C + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08113944: .4byte gUnknown_20380BE +_08113948: .4byte sub_080A6014 +_0811394C: .4byte sub_080A5FA4 + thumb_func_end sub_081138B4 + + thumb_func_start sub_08113950 +sub_08113950: @ 0x08113950 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A6100 + ldr r4, _081139A8 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _081139AC + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081139B4 + ldr r2, _081139B0 + ldrh r0, [r5, #0x20] + ldrh r1, [r2, #2] + subs r0, r0, r1 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x22] + adds r1, r1, r0 + strh r1, [r5, #0x22] + ldrh r0, [r5, #0x32] + ldrh r1, [r2, #4] + subs r0, r0, r1 + strh r0, [r5, #0x32] + ldrh r0, [r2, #6] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] + b _081139DE + .align 2, 0 +_081139A8: .4byte gUnknown_20380D7 +_081139AC: .4byte gUnknown_20380D6 +_081139B0: .4byte gUnknown_20380BE +_081139B4: + ldr r1, _081139F8 + ldrh r0, [r1] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + strh r0, [r5, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + ldrh r0, [r1, #4] + ldrh r2, [r5, #0x32] + adds r0, r0, r2 + strh r0, [r5, #0x32] + ldrh r0, [r1, #6] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_081139DE: + ldr r0, _081139F8 + ldrh r0, [r0, #8] + strh r0, [r5, #0x2e] + ldr r0, _081139FC + str r0, [r5, #0x1c] + ldr r1, _08113A00 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081139F8: .4byte gUnknown_20380BE +_081139FC: .4byte sub_080A67B4 +_08113A00: .4byte sub_080A6014 + thumb_func_end sub_08113950 + + thumb_func_start sub_08113A04 +sub_08113A04: @ 0x08113A04 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08113A18 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08113A20 + ldr r4, _08113A1C + b _08113A22 + .align 2, 0 +_08113A18: .4byte gUnknown_20380BE +_08113A1C: .4byte gUnknown_20380D6 +_08113A20: + ldr r4, _08113A64 +_08113A22: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r4, _08113A68 + movs r0, #2 + ldrsh r1, [r4, r0] + adds r0, r5, #0 + bl sub_080A612C + ldrh r0, [r4, #4] + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldr r0, _08113A6C + str r0, [r5, #0x1c] + ldr r1, _08113A70 + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08113A64: .4byte gUnknown_20380D7 +_08113A68: .4byte gUnknown_20380BE +_08113A6C: .4byte sub_080A60A0 +_08113A70: .4byte sub_080A6014 + thumb_func_end sub_08113A04 + + thumb_func_start sub_08113A74 +sub_08113A74: @ 0x08113A74 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08113A9C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08113A8E + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_08113A8E: + adds r0, r4, #0 + bl sub_08113950 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08113A9C: .4byte gUnknown_20380D6 + thumb_func_end sub_08113A74 + + thumb_func_start sub_08113AA0 +sub_08113AA0: @ 0x08113AA0 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r4, _08113AF4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r6, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x22] + strh r5, [r6, #0x36] + movs r0, #1 + strh r0, [r6, #0x38] + ldr r0, _08113AF8 + ldrh r0, [r0] + strh r0, [r6, #0x3a] + ldr r4, _08113AFC + ldrb r0, [r4] + movs r1, #0 + bl sub_080A7EE4 + lsls r7, r0, #0x10 + lsrs r5, r7, #0x10 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A7EE4 + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r5, r0 + bls _08113B00 + lsrs r0, r7, #0x11 + b _08113B02 + .align 2, 0 +_08113AF4: .4byte gUnknown_20380D6 +_08113AF8: .4byte gUnknown_20380BE +_08113AFC: .4byte gUnknown_2023EAF +_08113B00: + lsrs r0, r1, #0x11 +_08113B02: + strh r0, [r6, #0x3c] + movs r1, #0x3a + ldrsh r0, [r6, r1] + movs r2, #0x3c + ldrsh r1, [r6, r2] + bl sub_0806EFD4 + strh r0, [r6, #0x24] + movs r1, #0x3a + ldrsh r0, [r6, r1] + movs r2, #0x3c + ldrsh r1, [r6, r2] + bl sub_0806EFB8 + strh r0, [r6, #0x26] + ldr r0, _08113B2C + str r0, [r6, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08113B2C: .4byte sub_08113B30 + thumb_func_end sub_08113AA0 + + thumb_func_start sub_08113B30 +sub_08113B30: @ 0x08113B30 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _08113B42 + cmp r5, #1 + beq _08113BAE + b _08113C32 +_08113B42: + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x38] + subs r0, 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_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _08113B94 + strh r5, [r4, #0x36] + ldrh r1, [r4, #0x38] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08113B94 + adds r0, r1, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _08113B94 + movs r0, #0x10 + strh r0, [r4, #0x38] +_08113B94: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _08113C32 + movs r0, #0 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08113C32 +_08113BAE: + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x38] + subs r0, 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 _08113BD6 + adds r0, r1, #0 + adds r0, #8 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x95 + ble _08113BD6 + movs r0, #0x96 + strh r0, [r4, #0x3c] +_08113BD6: + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _08113C1E + movs r0, #0 + strh r0, [r4, #0x36] + ldrh r1, [r4, #0x38] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _08113C1E + adds r0, r1, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _08113C1E + movs r0, #0x10 + strh r0, [r4, #0x38] +_08113C1E: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _08113C32 + adds r0, r4, #0 + bl sub_080A34C4 +_08113C32: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08113B30 + + thumb_func_start sub_08113C38 +sub_08113C38: @ 0x08113C38 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08113C64 + adds r4, r1, r0 + ldr r0, _08113C68 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08113C74 + ldr r0, _08113C6C + str r0, [sp] + ldr r0, _08113C70 + b _08113C7A + .align 2, 0 +_08113C64: .4byte gUnknown_3005B60 +_08113C68: .4byte gUnknown_20380D6 +_08113C6C: .4byte 0x04000014 +_08113C70: .4byte gUnknown_2022ACC +_08113C74: + ldr r0, _08113CF0 + str r0, [sp] + ldr r0, _08113CF4 +_08113C7A: + ldrh r0, [r0] + strh r0, [r4, #0xc] + ldr r0, _08113CF8 + str r0, [sp, #4] + mov r1, sp + movs r5, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r5, [r0, #9] + ldr r0, _08113CFC + ldrb r0, [r0] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + subs r1, #0x20 + strh r1, [r4, #0xe] + adds r0, #0x20 + strh r0, [r4, #0x10] + cmp r1, #0 + bge _08113CAA + strh r5, [r4, #0xe] +_08113CAA: + ldrh r3, [r4, #0xe] + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bgt _08113CD8 + ldr r5, _08113D00 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 +_08113CBC: + lsls r1, r3, #1 + adds r2, r1, r5 + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r4, #0xc] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _08113CBC +_08113CD8: + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _08113D04 + str r0, [r4] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08113CF0: .4byte 0x04000018 +_08113CF4: .4byte gUnknown_2022AD0 +_08113CF8: .4byte 0xA2600001 +_08113CFC: .4byte gUnknown_20380D6 +_08113D00: .4byte gUnknown_20388C8 +_08113D04: .4byte sub_08113D08 + thumb_func_end sub_08113C38 + + thumb_func_start sub_08113D08 +sub_08113D08: @ 0x08113D08 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _08113D2C + adds r2, r0, r1 + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #4 + bhi _08113DBE + lsls r0, r0, #2 + ldr r1, _08113D30 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08113D2C: .4byte gUnknown_3005B60 +_08113D30: .4byte _08113D34 +_08113D34: @ jump table + .4byte _08113D48 @ case 0 + .4byte _08113D6A @ case 1 + .4byte _08113D7A @ case 2 + .4byte _08113DA6 @ case 3 + .4byte _08113DB8 @ case 4 +_08113D48: + ldrh r0, [r2, #0x16] + adds r0, #1 + strh r0, [r2, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08113D9E + movs r0, #0 + strh r0, [r2, #0x16] + ldrh r0, [r2, #0x14] + adds r0, #1 + strh r0, [r2, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _08113D9E + b _08113D98 +_08113D6A: + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _08113D9E + b _08113D98 +_08113D7A: + ldrh r0, [r2, #0x16] + adds r0, #1 + strh r0, [r2, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08113D9E + movs r0, #0 + strh r0, [r2, #0x16] + ldrh r0, [r2, #0x14] + subs r0, #1 + strh r0, [r2, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08113D9E +_08113D98: + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_08113D9E: + adds r0, r2, #0 + bl sub_08113DC4 + b _08113DBE +_08113DA6: + ldr r1, _08113DB4 + movs r0, #3 + strb r0, [r1, #0x15] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _08113DBE + .align 2, 0 +_08113DB4: .4byte gUnknown_20397C8 +_08113DB8: + adds r0, r3, #0 + bl sub_080A34E4 +_08113DBE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08113D08 + + thumb_func_start sub_08113DC4 +sub_08113DC4: @ 0x08113DC4 + push {r4, r5, r6, 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 _08113E1A + ldr r7, _08113E30 + mov ip, r7 + ldr r0, _08113E34 + mov r8, r0 + ldr r6, _08113E38 +_08113DE2: + lsls r2, r4, #1 + ldrb r1, [r6, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + add r2, ip + lsls r0, r3, #1 + add r0, r8 + movs r7, #0 + ldrsh r1, [r0, r7] + movs r7, #0x14 + ldrsh r0, [r5, r7] + muls r0, r1, r0 + asrs r0, r0, #7 + ldrh r1, [r5, #0xc] + adds r0, r0, r1 + strh r0, [r2] + adds r3, #8 + movs r0, #0xff + ands r3, r0 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r7, #0x10 + ldrsh r0, [r5, r7] + cmp r4, r0 + ble _08113DE2 +_08113E1A: + ldrh r0, [r5, #0x12] + adds r0, #9 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x12] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08113E30: .4byte gUnknown_20388C8 +_08113E34: .4byte gUnknown_82FA8CC +_08113E38: .4byte gUnknown_20397C8 + thumb_func_end sub_08113DC4 + + thumb_func_start sub_08113E3C +sub_08113E3C: @ 0x08113E3C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + ldr r5, _08113EDC + movs r0, #4 + ldrsh r1, [r5, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + movs r1, #5 + bl __divsi3 + adds r6, r0, #0 + ldr r1, _08113EE0 + mov r8, r1 + ldrb r0, [r1] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + mov r2, r8 + ldrb r0, [r2] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r3, [r5, #8] + adds r0, r0, r3 + strh r0, [r4, #0x22] + movs r1, #2 + ldrsh r0, [r5, r1] + movs r2, #4 + ldrsh r1, [r5, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x30] + movs r3, #2 + ldrsh r0, [r5, r3] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r1, r6, #0 + bl sub_0806EFB8 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x30] + ldrh r2, [r5] + adds r3, r2, #0 + muls r3, r1, r3 + adds r1, r3, #0 + ldrh r3, [r4, #0x20] + adds r1, r1, r3 + strh r1, [r4, #0x20] + adds r1, r2, #0 + muls r1, r0, r1 + adds r0, r1, #0 + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrh r0, [r5, #6] + strh r0, [r4, #0x34] + ldr r0, _08113EE4 + str r0, [r4, #0x1c] + adds r4, #0x2e + ldr r2, _08113EE8 + movs r1, #6 +_08113EC4: + ldrh r0, [r4] + strh r0, [r2] + adds r4, #2 + adds r2, #2 + subs r1, #1 + cmp r1, #0 + bge _08113EC4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08113EDC: .4byte gUnknown_20380BE +_08113EE0: .4byte gUnknown_20380D6 +_08113EE4: .4byte sub_08113EEC +_08113EE8: .4byte gUnknown_2039DCC + thumb_func_end sub_08113E3C + + thumb_func_start sub_08113EEC +sub_08113EEC: @ 0x08113EEC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x32] + ldrh r2, [r4, #0x38] + adds r0, 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, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08113F30 + adds r0, r4, #0 + bl sub_080A34C4 +_08113F30: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08113EEC + + thumb_func_start sub_08113F38 +sub_08113F38: @ 0x08113F38 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08113F74 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08113F78 + ldrh r1, [r1] + strh r1, [r0, #8] + ldr r1, _08113F7C + ldrb r4, [r1] + movs r1, #0x10 + strh r1, [r0, #0xa] + movs r0, #0x52 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08113F84 + ldr r1, _08113F80 + movs r0, #0x50 + bl sub_08001144 + b _08113F8C + .align 2, 0 +_08113F74: .4byte gUnknown_3005B60 +_08113F78: .4byte gUnknown_20380BE +_08113F7C: .4byte gUnknown_20380D6 +_08113F80: .4byte 0x00003F42 +_08113F84: + ldr r1, _08113FA0 + movs r0, #0x50 + bl sub_08001144 +_08113F8C: + ldr r0, _08113FA4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08113FA8 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08113FA0: .4byte 0x00003F44 +_08113FA4: .4byte gUnknown_3005B60 +_08113FA8: .4byte sub_08113FAC + thumb_func_end sub_08113F38 + + thumb_func_start sub_08113FAC +sub_08113FAC: @ 0x08113FAC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08114018 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r0, [r6, #0xa] + lsrs r4, r0, #8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xc + ldrsh r0, [r6, r2] + ldrb r2, [r6, #8] + cmp r0, r2 + bne _08114028 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #8 + orrs r1, r0 + movs r5, #0 + strh r1, [r6, #0xa] + ldrh r1, [r6, #0xa] + movs r0, #0x52 + bl sub_08001144 + strh r5, [r6, #0xc] + cmp r4, #0x10 + bne _0811402E + ldr r2, _0811401C + ldr r1, _08114020 + ldr r0, _08114024 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r7, #0 + bl sub_080A34E4 + b _0811402E + .align 2, 0 +_08114018: .4byte gUnknown_3005B60 +_0811401C: .4byte gUnknown_20205AC +_08114020: .4byte gUnknown_2023E88 +_08114024: .4byte gUnknown_20380D6 +_08114028: + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] +_0811402E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08113FAC + + thumb_func_start sub_08114034 +sub_08114034: @ 0x08114034 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08114060 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r1 + ldr r0, _08114064 + ldrh r0, [r0] + strh r0, [r2, #8] + movs r1, #0x80 + lsls r1, r1, #5 + strh r1, [r2, #0xa] + ldr r0, _08114068 + str r0, [r2] + movs r0, #0x52 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08114060: .4byte gUnknown_3005B60 +_08114064: .4byte gUnknown_20380BE +_08114068: .4byte sub_0811406C + thumb_func_end sub_08114034 + + thumb_func_start sub_0811406C +sub_0811406C: @ 0x0811406C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _081140C8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r0, [r6, #0xa] + lsrs r4, r0, #8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xc + ldrsh r0, [r6, r2] + ldrb r2, [r6, #8] + cmp r0, r2 + bne _081140CC + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #8 + orrs r1, r0 + movs r5, #0 + strh r1, [r6, #0xa] + ldrh r1, [r6, #0xa] + movs r0, #0x52 + bl sub_08001144 + strh r5, [r6, #0xc] + cmp r4, #0 + bne _081140D2 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r7, #0 + bl sub_080A34E4 + b _081140D2 + .align 2, 0 +_081140C8: .4byte gUnknown_3005B60 +_081140CC: + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] +_081140D2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0811406C + + thumb_func_start sub_081140D8 +sub_081140D8: @ 0x081140D8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _08114104 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0811410C + ldr r1, _08114108 + movs r0, #0x50 + bl sub_08001144 + b _08114114 + .align 2, 0 +_08114104: .4byte gUnknown_20380D6 +_08114108: .4byte 0x00003F42 +_0811410C: + ldr r1, _08114120 + movs r0, #0x50 + bl sub_08001144 +_08114114: + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08114120: .4byte 0x00003F44 + thumb_func_end sub_081140D8 + + thumb_func_start sub_08114124 +sub_08114124: @ 0x08114124 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _08114190 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x30] + ldr r5, _08114194 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x34] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + movs r0, #0x7e + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_080A66DC + ldrh r0, [r4, #0x30] + rsbs r0, r0, #0 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x32] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldr r0, _08114198 + strh r0, [r4, #0x3a] + ldr r1, _0811419C + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08114190: .4byte gUnknown_20380D7 +_08114194: .4byte gUnknown_20380D6 +_08114198: .4byte 0x0000FFD8 +_0811419C: .4byte sub_081141A0 + thumb_func_end sub_08114124 + + thumb_func_start sub_081141A0 +sub_081141A0: @ 0x081141A0 + push {r4, r5, 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, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + movs r6, #0x3c + ldrsh r0, [r4, r6] + cmp r0, #0 + bne _081141E2 + adds r0, r2, r5 + strh r0, [r4, #0x34] + adds r1, r1, r3 + strh r1, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r4, #0x26] + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] +_081141E2: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r6, [r4, #0x26] + adds r0, r0, r6 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #3 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x38] + cmp r0, #0x7f + ble _08114212 + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x3a] + adds r0, #0x14 + strh r0, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] +_08114212: + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08114224 + adds r0, r4, #0 + bl sub_080A34C4 +_08114224: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081141A0 + + thumb_func_start sub_0811422C +sub_0811422C: @ 0x0811422C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08114260 + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrb r1, [r5, #4] + adds r0, r4, #0 + bl sub_08007F70 + ldrh r0, [r5, #6] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #8] + strh r0, [r4, #0x30] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x32] + ldr r0, _08114264 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08114260: .4byte gUnknown_20380BE +_08114264: .4byte sub_08114268 + thumb_func_end sub_0811422C + + thumb_func_start sub_08114268 +sub_08114268: @ 0x08114268 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x36] + adds r0, r0, r1 + strh r0, [r2, #0x36] + ldrh r1, [r2, #0x30] + ldrh r3, [r2, #0x38] + adds r1, r1, r3 + strh r1, [r2, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r2, #0x26] + ldrh r0, [r2, #0x34] + adds r0, #1 + strh r0, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + bne _0811429E + ldr r0, _081142A4 + str r0, [r2, #0x1c] +_0811429E: + pop {r0} + bx r0 + .align 2, 0 +_081142A4: .4byte sub_081142A8 + thumb_func_end sub_08114268 + + thumb_func_start sub_081142A8 +sub_081142A8: @ 0x081142A8 + push {lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x36] + ldrh r0, [r3, #0x2e] + subs r1, r1, r0 + strh r1, [r3, #0x36] + ldrh r0, [r3, #0x38] + ldrh r2, [r3, #0x30] + subs r0, r0, r2 + strh r0, [r3, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r3, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r3, #0x26] + ldrh r0, [r3, #0x34] + subs r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081142DA + adds r0, r3, #0 + bl sub_080A6014 +_081142DA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081142A8 + + thumb_func_start sub_081142E0 +sub_081142E0: @ 0x081142E0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _081142F4 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r3, r0, #0 + cmp r1, #0 + bne _081142FC + ldr r0, _081142F8 + b _081142FE + .align 2, 0 +_081142F4: .4byte gUnknown_20380BE +_081142F8: .4byte gUnknown_20380D6 +_081142FC: + ldr r0, _0811432C +_081142FE: + ldrb r5, [r0] + movs r6, #0x14 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #4 + ldr r7, _08114330 + adds r0, r7, #0 + ands r1, r0 + ldr r0, _08114334 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + movs r1, #2 + ldrsh r0, [r3, r1] + cmp r0, #1 + beq _0811435C + cmp r0, #1 + bgt _08114338 + cmp r0, #0 + beq _08114342 + b _081143B0 + .align 2, 0 +_0811432C: .4byte gUnknown_20380D7 +_08114330: .4byte 0x000003FF +_08114334: .4byte 0xFFFFFC00 +_08114338: + cmp r0, #2 + beq _08114376 + cmp r0, #3 + beq _0811438E + b _081143B0 +_08114342: + adds r0, r5, #0 + movs r1, #5 + bl sub_080A7EE4 + subs r0, #8 + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r4, #0x22] + b _081143B0 +_0811435C: + adds r0, r5, #0 + movs r1, #5 + bl sub_080A7EE4 + subs r0, #0xe + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A7EE4 + adds r0, #0x10 + strh r0, [r4, #0x22] + b _081143B0 +_08114376: + adds r0, r5, #0 + movs r1, #4 + bl sub_080A7EE4 + adds r0, #8 + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A7EE4 + adds r0, #8 + b _081143A4 +_0811438E: + adds r0, r5, #0 + movs r1, #4 + bl sub_080A7EE4 + adds r0, #0xe + strh r0, [r4, #0x20] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A7EE4 + adds r0, #0x10 +_081143A4: + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + movs r6, #0xec +_081143B0: + movs r0, #0x20 + strh r0, [r4, #0x2e] + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x22] + adds r0, #0xc + strh r0, [r4, #0x36] + ldr r0, _081143D8 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _081143DC + str r0, [r4, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081143D8: .4byte 0x0000FFF4 +_081143DC: .4byte sub_081143E0 + thumb_func_end sub_081142E0 + + thumb_func_start sub_081143E0 +sub_081143E0: @ 0x081143E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081143F4 + adds r0, r4, #0 + bl sub_080A6014 +_081143F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081143E0 + + thumb_func_start sub_081143FC +sub_081143FC: @ 0x081143FC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08114460 + adds r5, r1, r0 + ldr r4, _08114464 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x1f + movs r6, #0 + strh r0, [r5, #0x16] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + subs r0, #7 + strh r0, [r5, #0x14] + ldrh r1, [r5, #0x16] + strh r1, [r5, #0x12] + strh r0, [r5, #0x10] + subs r1, r1, r0 + lsls r1, r1, #8 + strh r1, [r5, #0x22] + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + subs r1, #0x20 + strh r1, [r5, #0x24] + adds r0, #0x20 + strh r0, [r5, #0x26] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811446C + ldr r0, _08114468 + b _0811446E + .align 2, 0 +_08114460: .4byte gUnknown_3005B60 +_08114464: .4byte gUnknown_20380D6 +_08114468: .4byte 0x0000FFF4 +_0811446C: + ldr r0, _081144B8 +_0811446E: + strh r0, [r5, #0x18] + ldr r0, _081144BC + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xe] + cmp r0, #1 + bne _081144D0 + add r4, sp, #0xc + adds r0, r4, #0 + bl sub_080A63F8 + ldr r0, _081144C0 + ldrh r0, [r0] + strh r0, [r5, #0x1c] + ldr r1, _081144C4 + movs r0, #0x50 + bl sub_08001144 + ldrb r1, [r4, #8] + lsls r1, r1, #4 + movs r0, #0 + movs r2, #0x20 + bl sub_080A1238 + ldr r0, _081144C8 + str r0, [sp] + movs r7, #2 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114500 + ldr r1, _081144CC + b _081144FA + .align 2, 0 +_081144B8: .4byte 0x0000FFC0 +_081144BC: .4byte gUnknown_20380D6 +_081144C0: .4byte gUnknown_2022ACE +_081144C4: .4byte 0x00003F42 +_081144C8: .4byte 0x04000016 +_081144CC: .4byte gUnknown_2022AD0 +_081144D0: + ldr r0, _08114588 + ldrh r0, [r0] + strh r0, [r5, #0x1c] + ldr r1, _0811458C + movs r0, #0x50 + bl sub_08001144 + movs r0, #0 + movs r1, #0x90 + movs r2, #0x20 + bl sub_080A1238 + ldr r0, _08114590 + str r0, [sp] + movs r7, #4 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114500 + ldr r1, _08114594 +_081144FA: + ldrh r0, [r1] + adds r0, #0xf0 + strh r0, [r1] +_08114500: + ldr r0, _08114598 + str r0, [sp, #4] + mov r2, sp + movs r1, #0 + movs r0, #1 + strb r0, [r2, #8] + mov r0, sp + strb r1, [r0, #9] + strh r1, [r5, #0x1e] + movs r0, #0x10 + strh r0, [r5, #0x20] + strh r1, [r5, #8] + strh r1, [r5, #0xa] + strh r1, [r5, #0xc] + movs r0, #3 + bl sub_08114BC4 + movs r3, #0 + ldr r4, _0811459C + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r4, r0 +_0811452C: + lsls r1, r3, #1 + adds r2, r1, r4 + ldrh r0, [r5, #0x1c] + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r5, #0x1c] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x6f + bls _0811452C + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + movs r0, #0x3f + eors r7, r0 + movs r1, #0xfc + lsls r1, r1, #6 + adds r0, r1, #0 + orrs r7, r0 + movs r0, #0x4a + adds r1, r7, #0 + bl sub_08001144 + ldr r1, _081145A0 + movs r0, #0x48 + bl sub_08001144 + ldr r2, _081145A4 + ldrh r0, [r5, #0x24] + lsls r0, r0, #8 + ldrh r1, [r5, #0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _081145A8 + movs r0, #0xa0 + strh r0, [r1] + ldr r0, _081145AC + str r0, [r5] + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114588: .4byte gUnknown_2022AD2 +_0811458C: .4byte 0x00003F44 +_08114590: .4byte 0x0400001A +_08114594: .4byte gUnknown_2022ACC +_08114598: .4byte 0xA2600001 +_0811459C: .4byte gUnknown_20388C8 +_081145A0: .4byte 0x00003F3F +_081145A4: .4byte gUnknown_2022AD8 +_081145A8: .4byte gUnknown_2022ADA +_081145AC: .4byte sub_081145B0 + thumb_func_end sub_081143FC + + thumb_func_start sub_081145B0 +sub_081145B0: @ 0x081145B0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081145D4 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _081145CA + b _081146C2 +_081145CA: + lsls r0, r0, #2 + ldr r1, _081145D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081145D4: .4byte gUnknown_3005B60 +_081145D8: .4byte _081145DC +_081145DC: @ jump table + .4byte _081145F0 @ case 0 + .4byte _08114652 @ case 1 + .4byte _0811466C @ case 2 + .4byte _081146A8 @ case 3 + .4byte _081146BC @ case 4 +_081145F0: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081146C2 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08114620 + ldrh r1, [r4, #0x1e] + movs r2, #0x1e + ldrsh r0, [r4, r2] + cmp r0, #0xc + beq _0811462E + adds r0, r1, #1 + strh r0, [r4, #0x1e] + b _0811462E +_08114620: + ldrh r1, [r4, #0x20] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #8 + beq _0811462E + subs r0, r1, #1 + strh r0, [r4, #0x20] +_0811462E: + ldrh r1, [r4, #0x20] + lsls r1, r1, #8 + ldrh r0, [r4, #0x1e] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0xc + bne _081146C2 + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #8 + bne _081146C2 + b _081146AE +_08114652: + ldrh r0, [r4, #0x10] + subs r0, #8 + strh r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08114A94 + movs r0, #0x10 + ldrsh r1, [r4, r0] + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _081146C2 + b _081146AE +_0811466C: + ldrh r0, [r4, #0x10] + subs r0, #8 + strh r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08114A94 + ldrh r1, [r4, #0x24] + adds r1, #4 + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x26] + subs r2, r0, #4 + strh r2, [r4, #0x26] + lsls r1, r1, #0x10 + lsls r0, r2, #0x10 + cmp r1, r0 + blt _0811468E + strh r2, [r4, #0x24] +_0811468E: + ldr r3, _081146A4 + ldrh r2, [r4, #0x24] + lsls r0, r2, #8 + ldrh r1, [r4, #0x26] + orrs r0, r1 + strh r0, [r3] + lsls r2, r2, #0x10 + lsls r1, r1, #0x10 + cmp r2, r1 + bne _081146C2 + b _081146AE + .align 2, 0 +_081146A4: .4byte gUnknown_2022AD8 +_081146A8: + ldr r1, _081146B8 + movs r0, #3 + strb r0, [r1, #0x15] +_081146AE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081146C2 + .align 2, 0 +_081146B8: .4byte gUnknown_20397C8 +_081146BC: + adds r0, r2, #0 + bl sub_080A34E4 +_081146C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081145B0 + + thumb_func_start sub_081146C8 +sub_081146C8: @ 0x081146C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081146F0 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #4 + bls _081146E4 + b _081148F6 +_081146E4: + lsls r0, r0, #2 + ldr r1, _081146F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081146F0: .4byte gUnknown_3005B60 +_081146F4: .4byte _081146F8 +_081146F8: @ jump table + .4byte _0811470C @ case 0 + .4byte _08114790 @ case 1 + .4byte _081147D4 @ case 2 + .4byte _08114840 @ case 3 + .4byte _081148A8 @ case 4 +_0811470C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08114748 + ldr r0, _0811473C + movs r1, #0 + strh r1, [r0] + ldr r0, _08114740 + strh r1, [r0] + ldr r4, _08114744 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + adds r0, r6, #0 + bl sub_080A34E4 + b _081148F6 + .align 2, 0 +_0811473C: .4byte gUnknown_2022AD8 +_08114740: .4byte gUnknown_2022ADA +_08114744: .4byte 0x00003F3F +_08114748: + ldr r0, _08114768 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xe] + cmp r0, #1 + bne _08114774 + ldr r1, _0811476C + movs r0, #0x50 + bl sub_08001144 + ldr r1, _08114770 + b _0811477E + .align 2, 0 +_08114768: .4byte gUnknown_20380D7 +_0811476C: .4byte 0x00003F42 +_08114770: .4byte gUnknown_2022AD0 +_08114774: + ldr r1, _08114788 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0811478C +_0811477E: + ldrh r0, [r1] + adds r0, #0xf0 + strh r0, [r1] + b _08114894 + .align 2, 0 +_08114788: .4byte 0x00003F44 +_0811478C: .4byte gUnknown_2022ACC +_08114790: + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _081147B8 + mov r0, sp + bl sub_080A63F8 + ldr r0, _081147B4 + ldrh r0, [r0] + strh r0, [r5, #0x1c] + mov r0, sp + ldrb r1, [r0, #8] + lsls r1, r1, #4 + movs r0, #0 + movs r2, #0x20 + bl sub_080A1238 + b _081147C8 + .align 2, 0 +_081147B4: .4byte gUnknown_2022ACE +_081147B8: + ldr r0, _081147D0 + ldrh r0, [r0] + strh r0, [r5, #0x1c] + movs r0, #0 + movs r1, #0x90 + movs r2, #0x20 + bl sub_080A1238 +_081147C8: + movs r0, #3 + bl sub_08114BC4 + b _08114894 + .align 2, 0 +_081147D0: .4byte gUnknown_2022AD2 +_081147D4: + ldr r4, _08114820 + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x1f + movs r6, #0 + strh r0, [r5, #0x16] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + subs r0, #7 + strh r0, [r5, #0x14] + ldrh r1, [r5, #0x16] + subs r1, r1, r0 + lsls r1, r1, #8 + strh r1, [r5, #0x22] + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r1, r0, #4 + strh r1, [r5, #0x24] + adds r0, #4 + strh r0, [r5, #0x26] + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114828 + ldr r0, _08114824 + b _0811482A + .align 2, 0 +_08114820: .4byte gUnknown_20380D7 +_08114824: .4byte 0x0000FFF4 +_08114828: + ldr r0, _0811483C +_0811482A: + 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, #8 + strh r0, [r5, #0x20] + b _08114894 + .align 2, 0 +_0811483C: .4byte 0x0000FFC0 +_08114840: + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _08114850 + ldr r0, _0811484C + b _08114852 + .align 2, 0 +_0811484C: .4byte 0x04000016 +_08114850: + ldr r0, _0811489C +_08114852: + str r0, [sp, #0x10] + movs r3, #0 + add r4, sp, #0x10 + ldr r6, _081148A0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r7, r6, r0 +_08114860: + lsls r1, r3, #1 + adds r2, r1, r6 + ldrh r0, [r5, #0x1c] + adds r0, #0x9f + subs r0, r0, r3 + strh r0, [r2] + adds r1, r1, r7 + ldrh r0, [r5, #0x1c] + adds r0, #0x9f + subs r0, r0, r3 + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x6f + bls _08114860 + ldr r1, _081148A4 + str r1, [r4, #4] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #8] + strb r2, [r4, #9] + ldr r0, [sp, #0x10] + ldr r2, [r4, #8] + bl sub_080B9790 +_08114894: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _081148F6 + .align 2, 0 +_0811489C: .4byte 0x0400001A +_081148A0: .4byte gUnknown_20388C8 +_081148A4: .4byte 0xA2600001 +_081148A8: + movs r1, #0xe + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _081148C0 + ldr r1, _081148BC + movs r0, #0x4a + bl sub_08001144 + b _081148C8 + .align 2, 0 +_081148BC: .4byte 0x00003F3D +_081148C0: + ldr r1, _08114900 + movs r0, #0x4a + bl sub_08001144 +_081148C8: + ldr r1, _08114904 + movs r0, #0x48 + bl sub_08001144 + ldr r2, _08114908 + ldrh r0, [r5, #0x24] + lsls r0, r0, #8 + ldrh r1, [r5, #0x26] + orrs r0, r1 + strh r0, [r2] + ldr r1, _0811490C + movs r0, #0xa0 + strh r0, [r1] + movs r0, #0 + strh r0, [r5, #8] + strh r0, [r5, #0xa] + strh r0, [r5, #0xc] + ldr r1, _08114910 + movs r0, #0x52 + bl sub_08001144 + ldr r0, _08114914 + str r0, [r5] +_081148F6: + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114900: .4byte 0x00003F3B +_08114904: .4byte 0x00003F3F +_08114908: .4byte gUnknown_2022AD8 +_0811490C: .4byte gUnknown_2022ADA +_08114910: .4byte 0x0000080C +_08114914: .4byte sub_08114918 + thumb_func_end sub_081146C8 + + thumb_func_start sub_08114918 +sub_08114918: @ 0x08114918 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0811493C + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _08114932 + b _08114A82 +_08114932: + lsls r0, r0, #2 + ldr r1, _08114940 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811493C: .4byte gUnknown_3005B60 +_08114940: .4byte _08114944 +_08114944: @ jump table + .4byte _08114958 @ case 0 + .4byte _08114984 @ case 1 + .4byte _081149EC @ case 2 + .4byte _08114A4E @ case 3 + .4byte _08114A60 @ case 4 +_08114958: + ldrh r0, [r4, #0x12] + adds r0, #8 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0x16] + movs r3, #0x16 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _0811496E + strh r2, [r4, #0x12] +_0811496E: + adds r0, r4, #0 + bl sub_08114A94 + movs r0, #0x12 + ldrsh r1, [r4, r0] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _08114982 + b _08114A82 +_08114982: + b _08114A54 +_08114984: + movs r3, #0x26 + ldrsh r0, [r4, r3] + movs r2, #0x24 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + cmp r0, #0x3f + bgt _081149A0 + ldrh r0, [r4, #0x24] + subs r0, #4 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x26] + adds r0, #4 + strh r0, [r4, #0x26] + b _081149A4 +_081149A0: + movs r0, #1 + strh r0, [r4, #0xa] +_081149A4: + ldr r2, _081149E8 + ldrh r0, [r4, #0x24] + lsls r0, r0, #8 + ldrh r1, [r4, #0x26] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, #0x10] + adds r0, #8 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0x14] + movs r3, #0x14 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _081149C6 + strh r2, [r4, #0x10] +_081149C6: + adds r0, r4, #0 + bl sub_08114A94 + movs r0, #0x10 + ldrsh r1, [r4, r0] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08114A82 + movs r3, #0xa + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08114A82 + movs r0, #0 + strh r0, [r4, #0xa] + b _08114A54 + .align 2, 0 +_081149E8: .4byte gUnknown_2022AD8 +_081149EC: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08114A82 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08114A1C + ldrh r1, [r4, #0x1e] + movs r2, #0x1e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08114A2A + subs r0, r1, #1 + strh r0, [r4, #0x1e] + b _08114A2A +_08114A1C: + ldrh r1, [r4, #0x20] + movs r3, #0x20 + ldrsh r0, [r4, r3] + cmp r0, #0xf + bgt _08114A2A + adds r0, r1, #1 + strh r0, [r4, #0x20] +_08114A2A: + ldrh r1, [r4, #0x20] + lsls r1, r1, #8 + ldrh r0, [r4, #0x1e] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08114A82 + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x10 + bne _08114A82 + b _08114A54 +_08114A4E: + ldr r1, _08114A5C + movs r0, #3 + strb r0, [r1, #0x15] +_08114A54: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08114A82 + .align 2, 0 +_08114A5C: .4byte gUnknown_20397C8 +_08114A60: + ldr r0, _08114A88 + movs r1, #0 + strh r1, [r0] + ldr r0, _08114A8C + strh r1, [r0] + ldr r4, _08114A90 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A34E4 +_08114A82: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08114A88: .4byte gUnknown_2022AD8 +_08114A8C: .4byte gUnknown_2022ADA +_08114A90: .4byte 0x00003F3F + thumb_func_end sub_08114918 + + thumb_func_start sub_08114A94 +sub_08114A94: @ 0x08114A94 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldrh r0, [r6, #0x12] + ldrh r4, [r6, #0x10] + subs r0, r0, r4 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + beq _08114B88 + 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, #0x10 + movs r4, #0 + cmp r0, #0 + ble _08114AF4 + ldr r0, _08114B80 + mov ip, r0 + ldr r7, _08114B84 +_08114AC8: + lsls r2, r4, #0x10 + asrs r2, r2, #0x10 + lsls r3, r2, #1 + ldrb r1, [r7, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r3, r3, r0 + add r3, ip + adds r1, r2, #0 + subs r1, #0x9f + ldrh r0, [r6, #0x1c] + subs r0, r0, r1 + strh r0, [r3] + adds r2, #1 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + asrs r2, r2, #0x10 + movs r1, #0x10 + ldrsh r0, [r6, r1] + cmp r2, r0 + blt _08114AC8 +_08114AF4: + ldrh r4, [r6, #0x10] + lsls r3, r4, #0x10 + asrs r1, r3, #0x10 + movs r2, #0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + bgt _08114B3E + ldr r0, _08114B80 + mov ip, r0 + ldr r7, _08114B84 +_08114B08: + asrs r4, r3, #0x10 + cmp r4, #0 + blt _08114B2A + asrs r1, r5, #8 + subs r1, r1, r4 + lsls r3, r4, #1 + ldrb r2, [r7, #0x14] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #7 + adds r3, r3, r0 + add r3, ip + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r6, #0x1c] + adds r1, r1, r2 + strh r1, [r3] +_08114B2A: + add r5, r8 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r3, r4, #0x10 + asrs r1, r3, #0x10 + movs r2, #0x12 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _08114B08 +_08114B3E: + movs r3, #0x1c + ldrsh r0, [r6, r3] + adds r0, #0x9f + lsls r2, r4, #0x10 + asrs r1, r2, #0x10 + subs r5, r0, r1 + movs r3, #0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + bge _08114BB6 + ldr r7, _08114B80 + ldr r4, _08114B84 +_08114B56: + asrs r3, r2, #0x10 + cmp r3, #0 + blt _08114B6E + lsls r2, r3, #1 + ldrb r1, [r4, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r7 + strh r5, [r2] + subs r5, #1 +_08114B6E: + adds r0, r3, #1 + lsls r2, r0, #0x10 + asrs r1, r2, #0x10 + movs r3, #0x16 + ldrsh r0, [r6, r3] + cmp r1, r0 + blt _08114B56 + b _08114BB6 + .align 2, 0 +_08114B80: .4byte gUnknown_20388C8 +_08114B84: .4byte gUnknown_20397C8 +_08114B88: + movs r1, #0x1c + ldrsh r0, [r6, r1] + adds r5, r0, #0 + adds r5, #0x9f + movs r4, #0 + ldr r3, _08114BC0 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r6, r3, r2 +_08114B9A: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + lsls r2, r0, #1 + adds r1, r2, r3 + strh r5, [r1] + adds r2, r2, r6 + strh r5, [r2] + subs r5, #1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6f + ble _08114B9A +_08114BB6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114BC0: .4byte gUnknown_20388C8 + thumb_func_end sub_08114A94 + + thumb_func_start sub_08114BC4 +sub_08114BC4: @ 0x08114BC4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0 + ldr r7, _08114C0C + movs r1, #3 + ands r0, r1 + lsls r5, r0, #2 + movs r0, #0xd + rsbs r0, r0, #0 + adds r6, r0, #0 +_08114BDA: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08114BFA + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r0, [r1, #5] + ands r0, r6 + orrs r0, r5 + strb r0, [r1, #5] +_08114BFA: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _08114BDA + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114C0C: .4byte gUnknown_20205AC + thumb_func_end sub_08114BC4 + + thumb_func_start sub_08114C10 +sub_08114C10: @ 0x08114C10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r6, _08114CB4 + ldrb r0, [r6] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + ldrb r0, [r6] + adds r1, r4, #0 + movs r2, #1 + bl sub_080A3C54 + ldr r0, _08114CB8 + mov sb, r0 + ldr r0, _08114CBC + mov r8, r0 + ldrb r0, [r6] + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + adds r1, #0x3e + ldrb r2, [r1] + movs r7, #5 + rsbs r7, r7, #0 + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r6] + movs r5, #2 + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08114C9E + ldrb r0, [r6] + eors r0, r5 + movs r1, #1 + eors r4, r1 + adds r1, r4, #0 + movs r2, #1 + bl sub_080A3C54 + ldrb r0, [r6] + eors r0, r5 + add r0, r8 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r7, #0 + ands r1, r2 + strb r1, [r0] +_08114C9E: + mov r0, sl + bl sub_080A34E4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114CB4: .4byte gUnknown_20380D6 +_08114CB8: .4byte gUnknown_20205AC +_08114CBC: .4byte gUnknown_2023E88 + thumb_func_end sub_08114C10 + + thumb_func_start sub_08114CC0 +sub_08114CC0: @ 0x08114CC0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _08114D08 + ldrb r0, [r4] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r5, r1, #0x1f + adds r0, r5, #0 + bl sub_080A4044 + ldrb r1, [r4] + movs r0, #2 + eors r0, r1 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08114CFC + movs r0, #1 + eors r5, r0 + adds r0, r5, #0 + bl sub_080A4044 +_08114CFC: + adds r0, r6, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08114D08: .4byte gUnknown_20380D6 + thumb_func_end sub_08114CC0 + + thumb_func_start sub_08114D0C +sub_08114D0C: @ 0x08114D0C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08114D3C + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrb r1, [r1, #4] + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _08114D40 + str r0, [r4, #0x1c] + ldr r1, _08114D44 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08114D3C: .4byte gUnknown_20380BE +_08114D40: .4byte sub_080A60A0 +_08114D44: .4byte sub_080A34C4 + thumb_func_end sub_08114D0C + + thumb_func_start sub_08114D48 +sub_08114D48: @ 0x08114D48 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + ldr r0, _08114E3C + strh r6, [r0] + ldr r0, _08114E40 + strh r6, [r0] + ldr r1, _08114E44 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08114E48 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r1, _08114E4C + movs r0, #0x50 + bl sub_08001144 + ldr r1, _08114E50 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114DAC + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_08114DAC: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08114E26 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114E26 + ldr r4, _08114E54 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08114DDC + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08114E26 +_08114DDC: + ldrb r0, [r4] + movs r5, #2 + eors r0, r5 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08114E26 + ldr r3, _08114E58 + ldr r1, _08114E5C + ldrb r0, [r4] + eors r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + movs r6, #1 +_08114E26: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08114E64 + ldr r0, _08114E60 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r5, [r0] + b _08114EAC + .align 2, 0 +_08114E3C: .4byte gUnknown_2022AD8 +_08114E40: .4byte gUnknown_2022ADA +_08114E44: .4byte 0x00003F3F +_08114E48: .4byte 0x00003F3D +_08114E4C: .4byte 0x00003F42 +_08114E50: .4byte 0x00000C08 +_08114E54: .4byte gUnknown_20380D6 +_08114E58: .4byte gUnknown_20205AC +_08114E5C: .4byte gUnknown_2023E88 +_08114E60: .4byte gUnknown_2039BD4 +_08114E64: + ldr r4, _08114E84 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08114E90 + ldr r1, _08114E88 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08114E8C + b _08114EA0 + .align 2, 0 +_08114E84: .4byte gUnknown_20380D6 +_08114E88: .4byte gUnknown_2023D12 +_08114E8C: .4byte gUnknown_20243E8 +_08114E90: + ldr r1, _08114F30 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08114F34 +_08114EA0: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08114EAC: + movs r0, #0 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08114F38 + ldrb r0, [r0] + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A8290 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08114F3C + bl sub_080A6610 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08114F40 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _08114F44 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r2, _08114F48 + ldr r0, _08114F4C + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + rsbs r0, r0, #0 + adds r0, #0x60 + strh r0, [r2] + ldr r2, _08114F50 + ldrh r0, [r1, #0x22] + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r2] + ldrb r0, [r1, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + adds r1, r0, #0 + ldr r2, _08114F54 + movs r3, #2 + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _08114F58 + adds r0, r1, #0 + movs r1, #0 + bl sub_080A6DD4 + b _08114F64 + .align 2, 0 +_08114F30: .4byte gUnknown_2023D12 +_08114F34: .4byte gUnknown_2024190 +_08114F38: .4byte gUnknown_20380D6 +_08114F3C: .4byte gUnknown_8C1D258 +_08114F40: .4byte gUnknown_8C1D0F4 +_08114F44: .4byte gUnknown_8C1D230 +_08114F48: .4byte gUnknown_2022ACC +_08114F4C: .4byte gUnknown_20205AC +_08114F50: .4byte gUnknown_2022ACE +_08114F54: .4byte gUnknown_20380BE +_08114F58: + lsls r0, r1, #4 + ldrh r3, [r2, #4] + movs r1, #0x10 + movs r2, #0xb + bl sub_0806F410 +_08114F64: + ldr r1, _08114F8C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + ldr r2, _08114F90 + ldrh r1, [r2] + strh r1, [r0, #0xa] + ldrh r1, [r2, #2] + strh r1, [r0, #0xc] + ldrh r1, [r2, #4] + strh r1, [r0, #0xe] + strh r6, [r0, #0x14] + ldr r1, _08114F94 + str r1, [r0] + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08114F8C: .4byte gUnknown_3005B60 +_08114F90: .4byte gUnknown_20380BE +_08114F94: .4byte sub_08114F98 + thumb_func_end sub_08114D48 + + thumb_func_start sub_08114F98 +sub_08114F98: @ 0x08114F98 + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _08115060 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x1c] + adds r0, #4 + movs r5, #0 + strh r0, [r4, #0x1c] + ldr r2, _08115064 + ldrh r3, [r2] + subs r1, r3, #4 + strh r1, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x80 + beq _08114FC6 + b _081150D6 +_08114FC6: + strh r5, [r4, #0x1c] + adds r0, r3, #0 + adds r0, #0x7c + strh r0, [r2] + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _08115074 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08115068 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + adds r1, r0, #0 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08115008 + adds r0, r1, #0 + movs r1, #1 + bl sub_080A6DD4 +_08115008: + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _081150D6 + ldr r2, _0811506C + ldr r0, _08115070 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + b _081150D6 + .align 2, 0 +_08115060: .4byte gUnknown_3005B60 +_08115064: .4byte gUnknown_2022ACC +_08115068: .4byte gUnknown_20205AC +_0811506C: .4byte gUnknown_2023E88 +_08115070: .4byte gUnknown_20380D6 +_08115074: + cmp r0, #3 + bne _081150D6 + ldr r0, _081150E0 + strh r5, [r0] + ldr r0, _081150E4 + strh r5, [r0] + ldr r4, _081150E8 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081150A6 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_081150A6: + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r6, #0 + bl sub_080A34E4 +_081150D6: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081150E0: .4byte gUnknown_2022AD8 +_081150E4: .4byte gUnknown_2022ADA +_081150E8: .4byte 0x00003F3F + thumb_func_end sub_08114F98 + + thumb_func_start sub_081150EC +sub_081150EC: @ 0x081150EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _0811510C + movs r2, #0 + ldrsh r1, [r0, r2] + adds r2, r0, #0 + cmp r1, #7 + bhi _08115150 + lsls r0, r1, #2 + ldr r1, _08115110 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811510C: .4byte gUnknown_20380BE +_08115110: .4byte _08115114 +_08115114: @ jump table + .4byte _08115134 @ case 0 + .4byte _08115134 @ case 1 + .4byte _08115134 @ case 2 + .4byte _08115134 @ case 3 + .4byte _08115140 @ case 4 + .4byte _08115144 @ case 5 + .4byte _08115148 @ case 6 + .4byte _0811514C @ case 7 +_08115134: + ldrb r0, [r2] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + b _08115152 +_08115140: + movs r4, #0 + b _08115158 +_08115144: + movs r4, #2 + b _08115158 +_08115148: + movs r4, #1 + b _08115158 +_0811514C: + movs r4, #3 + b _08115158 +_08115150: + movs r2, #0xff +_08115152: + movs r0, #0 + cmp r0, #0 + beq _0811517E +_08115158: + adds r0, r4, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811517C + ldr r0, _08115178 + adds r0, r4, r0 + ldrb r2, [r0] + b _0811517E + .align 2, 0 +_08115178: .4byte gUnknown_2023E88 +_0811517C: + movs r2, #0xff +_0811517E: + cmp r2, #0xff + beq _0811519A + ldr r1, _081151A8 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r0, #0x10 + ldr r1, _081151AC + ldrb r1, [r1, #2] + bl sub_080A6DD4 +_0811519A: + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081151A8: .4byte gUnknown_20205AC +_081151AC: .4byte gUnknown_20380BE + thumb_func_end sub_081150EC + + thumb_func_start sub_081151B0 +sub_081151B0: @ 0x081151B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _081151DC + ldrb r0, [r2] + cmp r0, #1 + bhi _081151C4 + ldr r1, _081151E0 + movs r0, #0 + strh r0, [r1, #0xe] +_081151C4: + ldrb r0, [r2] + cmp r0, #2 + bne _081151D0 + ldr r1, _081151E0 + movs r0, #1 + strh r0, [r1, #0xe] +_081151D0: + adds r0, r3, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_081151DC: .4byte gUnknown_20380D2 +_081151E0: .4byte gUnknown_20380BE + thumb_func_end sub_081151B0 + + thumb_func_start sub_081151E4 +sub_081151E4: @ 0x081151E4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0811523C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + movs r0, #0x14 + strh r0, [r4, #0x2e] + ldr r5, _08115240 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x36] + ldr r0, _08115244 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _08115248 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811523C: .4byte gUnknown_20380D6 +_08115240: .4byte gUnknown_20380D7 +_08115244: .4byte 0x0000FFD8 +_08115248: .4byte sub_0811524C + thumb_func_end sub_081151E4 + + thumb_func_start sub_0811524C +sub_0811524C: @ 0x0811524C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081152A0 + ldrh r0, [r5, #0x24] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + movs r0, #0x14 + strh r0, [r5, #0x2e] + ldr r4, _081152A8 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + movs r0, #0x28 + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + ldr r0, _081152AC + str r0, [r5, #0x1c] +_081152A0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081152A8: .4byte gUnknown_20380D6 +_081152AC: .4byte sub_081152B0 + thumb_func_end sub_0811524C + + thumb_func_start sub_081152B0 +sub_081152B0: @ 0x081152B0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081152C4 + adds r0, r4, #0 + bl sub_080A34C4 +_081152C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081152B0 + + thumb_func_start sub_081152CC +sub_081152CC: @ 0x081152CC + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6248 + ldr r0, _0811532C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081152EC + ldr r1, _08115330 + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_081152EC: + ldr r4, _08115330 + ldrh r0, [r4, #8] + strh r0, [r6, #0x2e] + ldr r5, _08115334 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r6, #0x32] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r6, #0x36] + ldr r0, _08115338 + str r0, [r6, #0x1c] + ldr r1, _0811533C + adds r0, r6, #0 + bl sub_080A5B9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811532C: .4byte gUnknown_20380D6 +_08115330: .4byte gUnknown_20380BE +_08115334: .4byte gUnknown_20380D7 +_08115338: .4byte sub_080A67B4 +_0811533C: .4byte sub_080A34C4 + thumb_func_end sub_081152CC + + thumb_func_start sub_08115340 +sub_08115340: @ 0x08115340 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r4, _081153C0 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5974 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_0806F0A4 + movs r4, #0x1f + adds r5, r4, #0 + ands r5, r0 + bl sub_0806F0A4 + ands r4, r0 + adds r1, r5, #0 + cmp r1, #0x10 + ble _08115388 + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08115388: + lsls r0, r4, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0x10 + ble _08115398 + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08115398: + ldr r0, _081153C4 + ldrh r0, [r0, #4] + 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, _081153C8 + str r0, [r6, #0x1c] + ldr r1, _081153CC + adds r0, r6, #0 + bl sub_080A5B9C + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081153C0: .4byte gUnknown_20380D7 +_081153C4: .4byte gUnknown_20380BE +_081153C8: .4byte sub_080A67B4 +_081153CC: .4byte sub_080A6014 + thumb_func_end sub_08115340 + + thumb_func_start sub_081153D0 +sub_081153D0: @ 0x081153D0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #1 + ldr r3, _08115430 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _08115434 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + ldr r6, _08115438 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08115444 + ldr r4, _0811543C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r6, #2] + adds r0, r0, r2 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r3, [r6, #4] + adds r0, r0, r3 + strh r0, [r5, #0x22] + movs r1, #2 + ldrsh r0, [r6, r1] + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + ble _0811542A + movs r1, #1 +_0811542A: + strh r1, [r5, #0x2e] + ldr r0, _08115440 + b _08115452 + .align 2, 0 +_08115430: .4byte 0x000003FF +_08115434: .4byte 0xFFFFFC00 +_08115438: .4byte gUnknown_20380BE +_0811543C: .4byte gUnknown_20380D6 +_08115440: .4byte sub_08115460 +_08115444: + ldrh r0, [r6, #2] + strh r0, [r5, #0x20] + ldrh r0, [r6, #4] + strh r0, [r5, #0x22] + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + ldr r0, _0811545C +_08115452: + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811545C: .4byte sub_0811549C + thumb_func_end sub_081153D0 + + thumb_func_start sub_08115460 +sub_08115460: @ 0x08115460 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0811547E + movs r0, #0 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r2, #0x20] +_0811547E: + ldrh r0, [r2, #0x22] + subs r0, #4 + strh r0, [r2, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08115496 + adds r0, r2, #0 + bl sub_080A34C4 +_08115496: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08115460 + + thumb_func_start sub_0811549C +sub_0811549C: @ 0x0811549C + push {lr} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + cmp r1, #0 + beq _081154AE + cmp r1, #1 + beq _081154C4 + b _08115506 +_081154AE: + ldrh r0, [r3, #0x26] + adds r0, #4 + strh r0, [r3, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _08115506 + strh r1, [r3, #0x26] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + b _08115506 +_081154C4: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08115506 + movs r0, #0 + strh r0, [r3, #0x30] + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + ldrb r2, [r1] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08115506 + adds r0, r3, #0 + bl sub_080A34C4 +_08115506: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811549C + + thumb_func_start sub_0811550C +sub_0811550C: @ 0x0811550C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0811552C + adds r1, r0, r1 + ldr r0, _08115530 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + bne _08115538 + ldr r0, _08115534 + b _0811553A + .align 2, 0 +_0811552C: .4byte gUnknown_3005B60 +_08115530: .4byte gUnknown_20380BE +_08115534: .4byte sub_0811554C +_08115538: + ldr r0, _08115548 +_0811553A: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08115548: .4byte sub_08115704 + thumb_func_end sub_0811550C + + thumb_func_start sub_0811554C +sub_0811554C: @ 0x0811554C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08115570 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _08115566 + b _081156FA +_08115566: + lsls r0, r0, #2 + ldr r1, _08115574 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08115570: .4byte gUnknown_3005B60 +_08115574: .4byte _08115578 +_08115578: @ jump table + .4byte _0811558C @ case 0 + .4byte _08115614 @ case 1 + .4byte _08115624 @ case 2 + .4byte _081156C8 @ case 3 + .4byte _081156DC @ case 4 +_0811558C: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1c] + ldr r0, _081155B4 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1e] + cmp r0, #1 + bne _081155C0 + ldr r0, _081155B8 + ldrh r0, [r0] + strh r0, [r4, #0x20] + ldr r0, _081155BC + b _081155C8 + .align 2, 0 +_081155B4: .4byte gUnknown_20380D6 +_081155B8: .4byte gUnknown_2022ACC +_081155BC: .4byte gUnknown_2022ACE +_081155C0: + ldr r0, _08115604 + ldrh r0, [r0] + strh r0, [r4, #0x20] + ldr r0, _08115608 +_081155C8: + ldrh r0, [r0] + strh r0, [r4, #0x22] + ldr r0, _0811560C + ldrb r0, [r0] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + subs r1, #0x20 + strh r1, [r4, #0x24] + adds r0, #0x20 + strh r0, [r4, #0x26] + cmp r1, #0 + bge _081155EA + movs r0, #0 + strh r0, [r4, #0x24] +_081155EA: + ldr r2, _08115610 + movs r3, #0x1c + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _081156CE + .align 2, 0 +_08115604: .4byte gUnknown_2022AD0 +_08115608: .4byte gUnknown_2022AD2 +_0811560C: .4byte gUnknown_20380D6 +_08115610: .4byte gUnknown_20205AC +_08115614: + ldrb r0, [r4, #0x1e] + movs r2, #0x24 + ldrsh r1, [r4, r2] + movs r3, #0x26 + ldrsh r2, [r4, r3] + bl sub_08115930 + b _081156CE +_08115624: + ldrh r0, [r4, #0xc] + adds r0, #6 + movs r1, #0x7f + ands r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _08115646 + movs r0, #0 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] +_08115646: + ldr r1, _08115668 + movs r2, #0xc + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ldrh r3, [r4, #0xe] + adds r2, r0, r3 + strh r2, [r4, #0x12] + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08115670 + ldr r1, _0811566C + b _08115672 + .align 2, 0 +_08115668: .4byte gUnknown_82FA8CC +_0811566C: .4byte gUnknown_2022ACE +_08115670: + ldr r1, _08115694 +_08115672: + ldrh r0, [r4, #0x22] + subs r0, r0, r2 + strh r0, [r1] + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0x3f + ble _081156FA + ldrh r0, [r4, #0x24] + movs r1, #0x78 + subs r2, r1, r0 + strh r2, [r4, #0x12] + movs r3, #0x1e + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _0811569C + ldr r1, _08115698 + b _0811569E + .align 2, 0 +_08115694: .4byte gUnknown_2022AD2 +_08115698: .4byte gUnknown_2022ACE +_0811569C: + ldr r1, _081156C0 +_0811569E: + ldrh r0, [r4, #0x22] + subs r0, r0, r2 + strh r0, [r1] + ldr r2, _081156C4 + movs r1, #0x1c + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r1, #0x20] + movs r3, #0x88 + lsls r3, r3, #1 + adds r0, r3, #0 + subs r0, r0, r2 + strh r0, [r1, #0x24] + b _081156CE + .align 2, 0 +_081156C0: .4byte gUnknown_2022AD2 +_081156C4: .4byte gUnknown_20205AC +_081156C8: + ldr r1, _081156D8 + movs r0, #3 + strb r0, [r1, #0x15] +_081156CE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081156FA + .align 2, 0 +_081156D8: .4byte gUnknown_20397C8 +_081156DC: + adds r0, r2, #0 + bl sub_080A34E4 + ldr r2, _08115700 + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_081156FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08115700: .4byte gUnknown_20205AC + thumb_func_end sub_0811554C + + thumb_func_start sub_08115704 +sub_08115704: @ 0x08115704 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08115744 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #4 + orrs r0, r2 + strb r0, [r3] + movs r4, #0 + strh r4, [r1, #0x24] + strh r4, [r1, #0x26] + ldr r0, _08115748 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08115750 + ldr r0, _0811574C + b _08115752 + .align 2, 0 +_08115744: .4byte gUnknown_20205AC +_08115748: .4byte gUnknown_20380D6 +_0811574C: .4byte gUnknown_2022ACE +_08115750: + ldr r0, _08115760 +_08115752: + strh r4, [r0] + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08115760: .4byte gUnknown_2022AD2 + thumb_func_end sub_08115704 + + thumb_func_start sub_08115764 +sub_08115764: @ 0x08115764 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08115784 + adds r1, r0, r1 + ldr r0, _08115788 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + bne _08115790 + ldr r0, _0811578C + b _08115792 + .align 2, 0 +_08115784: .4byte gUnknown_3005B60 +_08115788: .4byte gUnknown_20380BE +_0811578C: .4byte sub_081157A4 +_08115790: + ldr r0, _081157A0 +_08115792: + str r0, [r1] + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_081157A0: .4byte sub_08115828 + thumb_func_end sub_08115764 + + thumb_func_start sub_081157A4 +sub_081157A4: @ 0x081157A4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081157C4 + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _081157C8 + cmp r5, #1 + beq _0811581C + b _08115822 + .align 2, 0 +_081157C4: .4byte gUnknown_3005B60 +_081157C8: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1c] + ldr r3, _08115818 + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r5, [r0, #0x24] + movs r1, #0x1c + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r2, [r1, #0x22] + movs r0, #0xa0 + subs r0, r0, r2 + strh r0, [r1, #0x26] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08115822 + .align 2, 0 +_08115818: .4byte gUnknown_20205AC +_0811581C: + adds r0, r2, #0 + bl sub_080A34E4 +_08115822: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081157A4 + + thumb_func_start sub_08115828 +sub_08115828: @ 0x08115828 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0811584C + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + bhi _0811592A + lsls r0, r0, #2 + ldr r1, _08115850 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811584C: .4byte gUnknown_3005B60 +_08115850: .4byte _08115854 +_08115854: @ jump table + .4byte _08115868 @ case 0 + .4byte _081158BC @ case 1 + .4byte _081158CA @ case 2 + .4byte _081158E4 @ case 3 + .4byte _08115924 @ case 4 +_08115868: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1c] + ldr r0, _0811588C + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1e] + cmp r0, #1 + bne _08115894 + ldr r0, _08115890 + b _08115896 + .align 2, 0 +_0811588C: .4byte gUnknown_20380D6 +_08115890: .4byte gUnknown_2022ACC +_08115894: + ldr r0, _081158B4 +_08115896: + ldrh r0, [r0] + strh r0, [r4, #0x20] + ldr r0, _081158B8 + ldrb r0, [r0] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + subs r1, #0x20 + strh r1, [r4, #0x24] + adds r0, #0x20 + strh r0, [r4, #0x26] + b _08115912 + .align 2, 0 +_081158B4: .4byte gUnknown_2022AD0 +_081158B8: .4byte gUnknown_20380D6 +_081158BC: + ldrb r0, [r4, #0x1e] + movs r1, #0x26 + ldrsh r2, [r4, r1] + movs r1, #0 + bl sub_08115930 + b _08115912 +_081158CA: + ldr r2, _081158E0 + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x60 + strh r1, [r0, #0x26] + b _08115912 + .align 2, 0 +_081158E0: .4byte gUnknown_20205AC +_081158E4: + ldr r2, _0811591C + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #8 + strh r1, [r0, #0x26] + movs r0, #0x1c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x26 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0811592A + ldr r1, _08115920 + movs r0, #3 + strb r0, [r1, #0x15] +_08115912: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0811592A + .align 2, 0 +_0811591C: .4byte gUnknown_20205AC +_08115920: .4byte gUnknown_20397C8 +_08115924: + adds r0, r2, #0 + bl sub_080A34E4 +_0811592A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08115828 + + thumb_func_start sub_08115930 +sub_08115930: @ 0x08115930 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + cmp r0, #1 + bne _08115954 + ldr r0, _0811594C + ldrh r3, [r0] + ldr r0, _08115950 + b _0811595A + .align 2, 0 +_0811594C: .4byte gUnknown_2022ACC +_08115950: .4byte 0x04000014 +_08115954: + ldr r0, _081159E0 + ldrh r3, [r0] + ldr r0, _081159E4 +_0811595A: + str r0, [sp] + lsls r0, r1, #0x10 + cmp r0, #0 + bge _08115964 + movs r1, #0 +_08115964: + lsls r2, r1, #0x10 + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + cmp r2, r0 + bge _08115990 + ldr r5, _081159E8 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 +_08115976: + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r0, r1, r5 + strh r3, [r0] + adds r1, r1, r6 + strh r3, [r1] + adds r2, #1 + lsls r2, r2, #0x10 + lsrs r1, r2, #0x10 + lsls r2, r1, #0x10 + asrs r0, r2, #0x10 + cmp r0, r4 + blt _08115976 +_08115990: + lsls r1, r1, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + bgt _081159BE + ldr r4, _081159E8 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + adds r3, r0, #0 + adds r3, #0xf0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r5, r4, r0 +_081159A8: + asrs r2, r1, #0x10 + lsls r1, r2, #1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r1, r5 + strh r3, [r1] + adds r2, #1 + lsls r1, r2, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0x9f + ble _081159A8 +_081159BE: + ldr r0, _081159EC + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081159E0: .4byte gUnknown_2022AD0 +_081159E4: .4byte 0x04000018 +_081159E8: .4byte gUnknown_20388C8 +_081159EC: .4byte 0xA2600001 + thumb_func_end sub_08115930 + + thumb_func_start sub_081159F0 +sub_081159F0: @ 0x081159F0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _08115A04 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r7, r0, #0 + cmp r1, #0 + bne _08115A0C + ldr r0, _08115A08 + b _08115A0E + .align 2, 0 +_08115A04: .4byte gUnknown_20380BE +_08115A08: .4byte gUnknown_20380D6 +_08115A0C: + ldr r0, _08115A70 +_08115A0E: + ldrb r4, [r0] + movs r6, #0x18 + adds r1, r7, #0 + movs r2, #2 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _08115A2A + rsbs r0, r6, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r2, #4 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_08115A2A: + adds r0, r4, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x20] + adds r0, r4, #0 + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x1e + strh r0, [r5, #0x22] + ldrh r1, [r7, #0xa] + strh r1, [r5, #0x2e] + ldrh r1, [r7, #4] + ldrh r2, [r5, #0x20] + adds r1, r1, r2 + strh r1, [r5, #0x32] + ldrh r1, [r7, #6] + adds r0, r0, r1 + strh r0, [r5, #0x36] + ldrh r0, [r7, #8] + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + ldr r0, _08115A74 + str r0, [r5, #0x1c] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08115A70: .4byte gUnknown_20380D7 +_08115A74: .4byte sub_08115A78 + thumb_func_end sub_081159F0 + + thumb_func_start sub_08115A78 +sub_08115A78: @ 0x08115A78 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08115A8C + adds r0, r4, #0 + bl sub_080A34C4 +_08115A8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08115A78 + + thumb_func_start sub_08115A94 +sub_08115A94: @ 0x08115A94 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08115AA8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08115AB0 + ldr r0, _08115AAC + b _08115AB2 + .align 2, 0 +_08115AA8: .4byte gUnknown_20380BE +_08115AAC: .4byte gUnknown_20380D6 +_08115AB0: + ldr r0, _08115B10 +_08115AB2: + ldrb r5, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08115B14 + adds r0, r0, r2 + ldr r4, _08115B18 + movs r3, #2 + ldrsh r1, [r4, r3] + lsls r1, r1, #5 + adds r0, r0, r1 + strh r0, [r6, #0x20] + adds r0, r5, #0 + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + strh r0, [r6, #0x22] + ldrh r2, [r6, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + movs r3, #2 + ldrsh r0, [r4, r3] + lsls r0, r0, #3 + adds r1, r1, r0 + ldr r3, _08115B1C + adds r0, r3, #0 + ands r1, r0 + ldr r0, _08115B20 + ands r0, r2 + orrs r0, r1 + strh r0, [r6, #4] + ldr r1, _08115B24 + adds r0, r6, #0 + bl sub_080A5B9C + ldrh r0, [r4, #4] + strh r0, [r6, #0x2e] + ldr r0, _08115B28 + str r0, [r6, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08115B10: .4byte gUnknown_20380D7 +_08115B14: .4byte 0x0000FFF0 +_08115B18: .4byte gUnknown_20380BE +_08115B1C: .4byte 0x000003FF +_08115B20: .4byte 0xFFFFFC00 +_08115B24: .4byte sub_080A34C4 +_08115B28: .4byte sub_080A5D78 + thumb_func_end sub_08115A94 + + thumb_func_start sub_08115B2C +sub_08115B2C: @ 0x08115B2C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08115B50 + adds r4, r0, r1 + ldr r0, _08115B54 + ldrh r2, [r0, #2] + movs r3, #2 + ldrsh r1, [r0, r3] + adds r6, r0, #0 + cmp r1, #0 + beq _08115B58 + adds r0, r2, #3 + b _08115B64 + .align 2, 0 +_08115B50: .4byte gUnknown_3005B60 +_08115B54: .4byte gUnknown_20380BE +_08115B58: + ldr r0, _08115B84 + ldrh r0, [r0] + movs r1, #0xa + bl __udivsi3 + adds r0, #3 +_08115B64: + strh r0, [r4, #0x26] + strh r0, [r4, #0x24] + adds r1, r6, #0 + ldrh r0, [r1, #4] + strh r0, [r4, #0xe] + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #4 + beq _08115B90 + cmp r0, #5 + bne _08115BD0 + ldr r0, _08115B88 + ldrh r0, [r0] + strh r0, [r4, #0x22] + ldr r0, _08115B8C + b _08115BEE + .align 2, 0 +_08115B84: .4byte gUnknown_20380A8 +_08115B88: .4byte gUnknown_2022AD4 +_08115B8C: .4byte sub_08115BFC +_08115B90: + movs r0, #0 + strh r0, [r4, #0x22] + movs r5, #0 +_08115B96: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08115BC0 + movs r3, #0x22 + ldrsh r0, [r4, r3] + adds r0, #9 + lsls r0, r0, #1 + adds r1, r4, #0 + adds r1, #8 + adds r1, r1, r0 + ldr r0, _08115BCC + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r1] + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] +_08115BC0: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _08115B96 + b _08115BEC + .align 2, 0 +_08115BCC: .4byte gUnknown_2023E88 +_08115BD0: + ldrb r0, [r6] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x1a] + cmp r0, #0xff + bne _08115BE8 + adds r0, r5, #0 + bl sub_080A34E4 + b _08115BF0 +_08115BE8: + movs r0, #1 + strh r0, [r4, #0x22] +_08115BEC: + ldr r0, _08115BF8 +_08115BEE: + str r0, [r4] +_08115BF0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08115BF8: .4byte sub_08115CF4 + thumb_func_end sub_08115B2C + + thumb_func_start sub_08115BFC +sub_08115BFC: @ 0x08115BFC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08115C20 + adds r3, r0, r1 + movs r0, #8 + ldrsh r1, [r3, r0] + cmp r1, #1 + beq _08115C80 + cmp r1, #1 + bgt _08115C24 + cmp r1, #0 + beq _08115C2A + b _08115CEC + .align 2, 0 +_08115C20: .4byte gUnknown_3005B60 +_08115C24: + cmp r1, #2 + beq _08115CE0 + b _08115CEC +_08115C2A: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08115CEC + strh r1, [r3, #0xa] + ldrh r1, [r3, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08115C54 + ldr r1, _08115C50 + ldrh r0, [r3, #0x26] + ldrh r2, [r3, #0x22] + adds r0, r0, r2 + strh r0, [r1] + b _08115C5E + .align 2, 0 +_08115C50: .4byte gUnknown_2022AD4 +_08115C54: + ldr r0, _08115C7C + ldrh r1, [r3, #0x22] + ldrh r2, [r3, #0x26] + subs r1, r1, r2 + strh r1, [r0] +_08115C5E: + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xe + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _08115CEC + movs r0, #0 + strh r0, [r3, #0xc] + ldrh r0, [r3, #0x24] + subs r0, #1 + strh r0, [r3, #0x24] + b _08115CD4 + .align 2, 0 +_08115C7C: .4byte gUnknown_2022AD4 +_08115C80: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08115CEC + movs r0, #0 + strh r0, [r3, #0xa] + ldrh r0, [r3, #0xc] + ands r1, r0 + cmp r1, #0 + bne _08115CAC + ldr r1, _08115CA8 + ldrh r0, [r3, #0x24] + ldrh r2, [r3, #0x22] + adds r0, r0, r2 + strh r0, [r1] + b _08115CB6 + .align 2, 0 +_08115CA8: .4byte gUnknown_2022AD4 +_08115CAC: + ldr r0, _08115CDC + ldrh r1, [r3, #0x22] + ldrh r2, [r3, #0x24] + subs r1, r1, r2 + strh r1, [r0] +_08115CB6: + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08115CEC + movs r0, #0 + strh r0, [r3, #0xc] + ldrh r0, [r3, #0x24] + subs r0, #1 + strh r0, [r3, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08115CEC +_08115CD4: + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + b _08115CEC + .align 2, 0 +_08115CDC: .4byte gUnknown_2022AD4 +_08115CE0: + ldr r1, _08115CF0 + ldrh r0, [r3, #0x22] + strh r0, [r1] + adds r0, r2, #0 + bl sub_080A34E4 +_08115CEC: + pop {r0} + bx r0 + .align 2, 0 +_08115CF0: .4byte gUnknown_2022AD4 + thumb_func_end sub_08115BFC + + thumb_func_start sub_08115CF4 +sub_08115CF4: @ 0x08115CF4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _08115D18 + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _08115D54 + cmp r5, #1 + bgt _08115D1C + cmp r5, #0 + beq _08115D22 + b _08115DCE + .align 2, 0 +_08115D18: .4byte gUnknown_3005B60 +_08115D1C: + cmp r5, #2 + beq _08115D90 + b _08115DCE +_08115D22: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08115DCE + strh r5, [r4, #0xa] + adds r0, r4, #0 + bl sub_08115DD8 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xe + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08115DCE + strh r5, [r4, #0xc] + ldrh r0, [r4, #0x24] + subs r0, #1 + strh r0, [r4, #0x24] + b _08115D88 +_08115D54: + ldrh r0, [r4, #0xa] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08115DCE + strh r5, [r4, #0xa] + adds r0, r4, #0 + bl sub_08115DD8 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _08115DCE + strh r5, [r4, #0xc] + ldrh r0, [r4, #0x24] + subs r0, #1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08115DCE +_08115D88: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08115DCE +_08115D90: + movs r2, #0 + movs r7, #0x22 + ldrsh r0, [r4, r7] + cmp r2, r0 + bge _08115DC8 + ldr r0, _08115DD4 + mov ip, r0 + adds r5, r4, #0 + adds r5, #8 + movs r6, #0 +_08115DA4: + adds r0, r2, #0 + adds r0, #9 + lsls r0, r0, #1 + adds r0, r5, r0 + movs r7, #0 + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + strh r6, [r0, #0x24] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0x22 + ldrsh r0, [r4, r1] + cmp r2, r0 + blt _08115DA4 +_08115DC8: + adds r0, r3, #0 + bl sub_080A34E4 +_08115DCE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08115DD4: .4byte gUnknown_20205AC + thumb_func_end sub_08115CF4 + + thumb_func_start sub_08115DD8 +sub_08115DD8: @ 0x08115DD8 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0xc] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _08115E00 + movs r0, #0x24 + ldrsh r1, [r3, r0] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + ldrh r2, [r3, #0x24] + adds r0, r4, #0 + ands r0, r2 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + b _08115E10 +_08115E00: + movs r1, #0x24 + ldrsh r0, [r3, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08115E10: + movs r2, #0 + movs r7, #0x22 + ldrsh r0, [r3, r7] + cmp r2, r0 + bge _08115E44 + ldr r6, _08115E4C + adds r5, r3, #0 + adds r5, #8 +_08115E20: + adds r0, r2, #0 + adds r0, #9 + lsls r0, r0, #1 + adds r0, r5, r0 + movs r7, #0 + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r4, [r0, #0x24] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0x22 + ldrsh r0, [r3, r1] + cmp r2, r0 + blt _08115E20 +_08115E44: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08115E4C: .4byte gUnknown_20205AC + thumb_func_end sub_08115DD8 + + thumb_func_start sub_08115E50 +sub_08115E50: @ 0x08115E50 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _08115E70 + movs r2, #0 + ldr r0, _08115E74 + ldrh r0, [r0] + cmp r0, #0x63 + bls _08115E64 + movs r2, #1 +_08115E64: + strh r2, [r3, #0x1e] + adds r0, r1, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08115E70: .4byte gUnknown_20380BE +_08115E74: .4byte gUnknown_20380A8 + thumb_func_end sub_08115E50 + + thumb_func_start sub_08115E78 +sub_08115E78: @ 0x08115E78 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08115E90 + ldrh r1, [r2] + movs r0, #1 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _08115E98 + ldr r0, _08115E94 + b _08115E9A + .align 2, 0 +_08115E90: .4byte gUnknown_20380BE +_08115E94: .4byte gUnknown_20380D7 +_08115E98: + ldr r0, _08115F08 +_08115E9A: + ldrb r0, [r0] + adds r5, r0, #0 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #1 + ble _08115EAA + movs r0, #2 + eors r5, r0 +_08115EAA: + ldr r0, _08115F0C + ldrb r1, [r6, #2] + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _08115F10 + adds r4, r4, r0 + adds r0, r5, #0 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x20 + subs r1, r1, r0 + ldr r2, _08115F14 + adds r0, r2, #0 + ands r1, r0 + strh r1, [r4, #0xa] + adds r0, r5, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x40 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + strh r1, [r4, #0xc] + ldr r2, _08115F18 + ldrh r0, [r4, #0xa] + strh r0, [r2] + ldr r0, _08115F1C + strh r1, [r0] + ldrh r0, [r6, #4] + strh r0, [r4, #0xe] + adds r0, r7, #0 + bl sub_080A34E4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08115F08: .4byte gUnknown_20380D6 +_08115F0C: .4byte sub_08115F20 +_08115F10: .4byte gUnknown_3005B60 +_08115F14: .4byte 0x000001FF +_08115F18: .4byte gUnknown_2022AD4 +_08115F1C: .4byte gUnknown_2022AD6 + thumb_func_end sub_08115E78 + + thumb_func_start sub_08115F20 +sub_08115F20: @ 0x08115F20 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + ldr r1, _08115F50 + adds r2, r0, r1 + ldr r0, _08115F54 + movs r4, #0xe + ldrsh r1, [r0, r4] + movs r4, #0xe + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _08115F60 + ldr r0, _08115F58 + movs r1, #0 + strh r1, [r0] + ldr r0, _08115F5C + strh r1, [r0] + adds r0, r3, #0 + bl sub_080A8964 + b _08115F6C + .align 2, 0 +_08115F50: .4byte gUnknown_3005B60 +_08115F54: .4byte gUnknown_20380BE +_08115F58: .4byte gUnknown_2022AD4 +_08115F5C: .4byte gUnknown_2022AD6 +_08115F60: + ldr r1, _08115F74 + ldrh r0, [r2, #0xa] + strh r0, [r1] + ldr r1, _08115F78 + ldrh r0, [r2, #0xc] + strh r0, [r1] +_08115F6C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08115F74: .4byte gUnknown_2022AD4 +_08115F78: .4byte gUnknown_2022AD6 + thumb_func_end sub_08115F20 + + thumb_func_start sub_08115F7C +sub_08115F7C: @ 0x08115F7C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08115FB4 + ldrh r0, [r5] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r5, #4] + strh r0, [r4, #0x2e] + ldr r0, _08115FB8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08115FBC + ldrh r0, [r5, #6] + rsbs r0, r0, #0 + strh r0, [r4, #0x30] + movs r0, #1 + strh r0, [r4, #0x36] + b _08115FCA + .align 2, 0 +_08115FB4: .4byte gUnknown_20380BE +_08115FB8: .4byte gUnknown_20380D6 +_08115FBC: + ldrh r0, [r5, #6] + strh r0, [r4, #0x30] + strh r1, [r4, #0x36] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 +_08115FCA: + ldr r0, _08115FE0 + ldrh r0, [r0, #8] + strh r0, [r4, #0x34] + ldr r1, _08115FE4 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08115FE0: .4byte gUnknown_20380BE +_08115FE4: .4byte sub_08115FE8 + thumb_func_end sub_08115F7C + + thumb_func_start sub_08115FE8 +sub_08115FE8: @ 0x08115FE8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r1, #0x1e + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r1, #0xa + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + cmp r0, #0x7f + bhi _0811601A + ldrb r0, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #5] + b _08116022 +_0811601A: + ldrb r0, [r4, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r4, #5] +_08116022: + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x34 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08116046 + adds r0, r4, #0 + bl sub_080A34C4 +_08116046: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08115FE8 + + thumb_func_start sub_0811604C +sub_0811604C: @ 0x0811604C + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r4, _08116084 + movs r1, #0 + ldrsh r0, [r4, r1] + bl sub_0811608C + movs r1, #2 + ldrsb r1, [r4, r1] + ldrb r2, [r4, #4] + ldrb r3, [r4, #6] + ldrh r4, [r4, #8] + str r4, [sp] + bl sub_080A139C + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08116088 + str r0, [r5, #0x1c] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116084: .4byte gUnknown_20380BE +_08116088: .4byte sub_081160D4 + thumb_func_end sub_0811604C + + thumb_func_start sub_0811608C +sub_0811608C: @ 0x0811608C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #1 + mov r8, r0 + mov r1, r8 + ands r1, r4 + mov r8, r1 + lsls r0, r0, #0x10 + asrs r1, r0, #0x11 + ands r1, r4 + asrs r2, r0, #0x12 + ands r2, r4 + asrs r3, r0, #0x13 + ands r3, r4 + asrs r6, r0, #0x14 + ands r6, r4 + asrs r5, r0, #0x15 + ands r5, r4 + asrs r0, r0, #0x16 + ands r0, r4 + str r6, [sp] + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, r8 + bl sub_080A6E74 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0811608C + + thumb_func_start sub_081160D4 +sub_081160D4: @ 0x081160D4 + push {lr} + adds r2, r0, #0 + ldr r0, _081160F0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081160EA + adds r0, r2, #0 + bl sub_080A34C4 +_081160EA: + pop {r0} + bx r0 + .align 2, 0 +_081160F0: .4byte gUnknown_2037C74 + thumb_func_end sub_081160D4 + + thumb_func_start sub_081160F4 +sub_081160F4: @ 0x081160F4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08116140 + ldrh r0, [r4, #2] + strh r0, [r5, #0x2e] + strh r0, [r5, #0x30] + ldrh r0, [r4, #4] + strh r0, [r5, #0x32] + ldrh r0, [r4, #6] + strh r0, [r5, #0x34] + ldrh r0, [r4, #8] + 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_0811608C + ldrb r1, [r4, #8] + ldrh r2, [r4, #6] + bl sub_080A22E8 + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08116144 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116140: .4byte gUnknown_20380BE +_08116144: .4byte sub_08116148 + thumb_func_end sub_081160F4 + + thumb_func_start sub_08116148 +sub_08116148: @ 0x08116148 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _0811615C + subs r0, r1, #1 + strh r0, [r4, #0x2e] + b _081161CC +_0811615C: + ldr r0, _08116178 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081161CC + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08116180 + ldr r0, _0811617C + str r0, [r4, #0x1c] + b _081161CC + .align 2, 0 +_08116178: .4byte gUnknown_2037C74 +_0811617C: .4byte sub_081161D4 +_08116180: + movs r2, #0x3c + ldrsh r0, [r4, r2] + bl sub_0811608C + adds r3, r0, #0 + ldrh r1, [r4, #0x30] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081161A6 + ldrh r1, [r4, #0x36] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x34] + adds r0, r3, #0 + bl sub_080A22E8 + b _081161B4 +_081161A6: + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x38] + adds r0, r3, #0 + bl sub_080A22E8 +_081161B4: + ldrh r0, [r4, #0x30] + movs r2, #0x80 + lsls r2, 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, #1 + strh r0, [r4, #0x32] +_081161CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08116148 + + thumb_func_start sub_081161D4 +sub_081161D4: @ 0x081161D4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08116200 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081161FA + movs r1, #0x3c + ldrsh r0, [r4, r1] + bl sub_0811608C + movs r1, #0 + movs r2, #0 + bl sub_080A22E8 + adds r0, r4, #0 + bl sub_080A34C4 +_081161FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08116200: .4byte gUnknown_2037C74 + thumb_func_end sub_081161D4 + + thumb_func_start sub_08116204 +sub_08116204: @ 0x08116204 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08116248 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + movs r2, #0 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + strh r2, [r4, #0x2e] + movs r0, #0xa + strh r0, [r4, #0x30] + movs r0, #8 + strh r0, [r4, #0x32] + movs r0, #0x28 + strh r0, [r4, #0x34] + movs r0, #0x70 + strh r0, [r4, #0x36] + strh r2, [r4, #0x38] + ldr r1, _0811624C + adds r0, r4, #0 + bl sub_080A5B9C + ldr r1, _08116250 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08116248: .4byte gUnknown_20380BE +_0811624C: .4byte sub_080A6014 +_08116250: .4byte sub_080A5C14 + thumb_func_end sub_08116204 + + thumb_func_start sub_08116254 +sub_08116254: @ 0x08116254 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08116298 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldr r3, _0811629C + ldrh r1, [r3] + movs r5, #0 + strh r1, [r4, #8] + ldrh r1, [r3, #2] + strh r1, [r4, #0xa] + ldrh r1, [r3, #4] + strh r1, [r4, #0xc] + ldrh r1, [r3, #6] + strh r1, [r4, #0xe] + ldrh r2, [r3, #8] + strh r2, [r4, #0x10] + ldrh r1, [r3, #0xa] + strh r1, [r4, #0x12] + strh r5, [r4, #0x18] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0 + bl sub_081162A4 + ldr r0, _081162A0 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116298: .4byte gUnknown_3005B60 +_0811629C: .4byte gUnknown_20380BE +_081162A0: .4byte sub_081162F4 + thumb_func_end sub_08116254 + + thumb_func_start sub_081162A4 +sub_081162A4: @ 0x081162A4 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r1, _081162F0 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + bl sub_0811608C + movs r1, #0xa + ldrsb r1, [r4, r1] + ldrh r2, [r4, #0x12] + str r2, [sp] + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080A139C + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x18] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x18] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081162F0: .4byte gUnknown_3005B60 + thumb_func_end sub_081162A4 + + thumb_func_start sub_081162F4 +sub_081162F4: @ 0x081162F4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, r3, #0 + ldr r0, _0811632C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08116356 + ldr r1, _08116330 + lsls r2, r3, #2 + adds r0, r2, r3 + lsls r0, 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 _08116350 + movs r1, #0x18 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08116334 + ldrb r1, [r3, #0xe] + ldrb r2, [r3, #0x10] + b _08116338 + .align 2, 0 +_0811632C: .4byte gUnknown_2037C74 +_08116330: .4byte gUnknown_3005B60 +_08116334: + ldrb r1, [r3, #0x10] + ldrb r2, [r3, #0xe] +_08116338: + adds r0, r5, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r3, #0xc + ldrsh r0, [r0, r3] + cmp r0, #1 + bne _08116348 + movs r2, #0 +_08116348: + adds r0, r4, #0 + bl sub_081162A4 + b _08116356 +_08116350: + adds r0, r4, #0 + bl sub_080A34E4 +_08116356: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081162F4 + + thumb_func_start sub_0811635C +sub_0811635C: @ 0x0811635C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r3, _08116400 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + ldr r2, _08116404 + ldrh r1, [r2] + strh r1, [r0, #8] + ldrh r1, [r2, #2] + strh r1, [r0, #0xa] + ldrh r1, [r2, #4] + strh r1, [r0, #0xc] + ldrh r1, [r2, #6] + strh r1, [r0, #0xe] + ldrh r1, [r2, #8] + strh r1, [r0, #0x10] + ldrh r1, [r2, #0xa] + strh r1, [r0, #0x12] + strh r5, [r0, #0x18] + movs r4, #0 + ldr r0, _08116408 + ldrb r1, [r0] + mov sb, r3 + mov r8, r2 + cmp r5, r1 + bge _081163C4 + ldr r0, _0811640C + ldrb r3, [r0] + ldr r7, _08116410 + movs r0, #1 + mov ip, r0 + adds r2, r1, #0 +_081163AA: + cmp r4, r3 + beq _081163BE + ldrb r1, [r7] + cmp r4, r1 + beq _081163BE + adds r1, r4, #0 + adds r1, #0x10 + mov r0, ip + lsls r0, r1 + orrs r5, r0 +_081163BE: + adds r4, #1 + cmp r4, r2 + blt _081163AA +_081163C4: + mov r2, r8 + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _081163D2 + movs r0, #0xe + orrs r5, r0 +_081163D2: + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + add r4, sb + lsrs r0, r5, #0x10 + 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_08116418 + ldr r0, _08116414 + str r0, [r4] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08116400: .4byte gUnknown_3005B60 +_08116404: .4byte gUnknown_20380BE +_08116408: .4byte gUnknown_2023D10 +_0811640C: .4byte gUnknown_20380D6 +_08116410: .4byte gUnknown_20380D7 +_08116414: .4byte sub_08116468 + thumb_func_end sub_0811635C + + thumb_func_start sub_08116418 +sub_08116418: @ 0x08116418 + push {r4, r5, lr} + sub sp, #4 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _08116464 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r0, [r4, #0x1a] + lsls r0, r0, #0x10 + 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_080A139C + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x18] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x18] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116464: .4byte gUnknown_3005B60 + thumb_func_end sub_08116418 + + thumb_func_start sub_08116468 +sub_08116468: @ 0x08116468 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, r3, #0 + ldr r0, _081164A0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081164CA + ldr r1, _081164A4 + lsls r2, r3, #2 + adds r0, r2, r3 + lsls r0, 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 _081164C4 + movs r1, #0x18 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _081164A8 + ldrb r1, [r3, #0xe] + ldrb r2, [r3, #0x10] + b _081164AC + .align 2, 0 +_081164A0: .4byte gUnknown_2037C74 +_081164A4: .4byte gUnknown_3005B60 +_081164A8: + ldrb r1, [r3, #0x10] + ldrb r2, [r3, #0xe] +_081164AC: + adds r0, r5, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r3, #0xc + ldrsh r0, [r0, r3] + cmp r0, #1 + bne _081164BC + movs r2, #0 +_081164BC: + adds r0, r4, #0 + bl sub_08116418 + b _081164CA +_081164C4: + adds r0, r4, #0 + bl sub_080A34E4 +_081164CA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08116468 + + thumb_func_start sub_081164D0 +sub_081164D0: @ 0x081164D0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08116514 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldr r3, _08116518 + ldrh r1, [r3] + movs r5, #0 + strh r1, [r4, #8] + ldrh r1, [r3, #2] + strh r1, [r4, #0xa] + ldrh r1, [r3, #4] + strh r1, [r4, #0xc] + ldrh r1, [r3, #6] + strh r1, [r4, #0xe] + ldrh r2, [r3, #8] + strh r2, [r4, #0x10] + ldrh r1, [r3, #0xa] + strh r1, [r4, #0x12] + strh r5, [r4, #0x18] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0 + bl sub_08116520 + ldr r0, _0811651C + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116514: .4byte gUnknown_3005B60 +_08116518: .4byte gUnknown_20380BE +_0811651C: .4byte sub_0811657C + thumb_func_end sub_081164D0 + + thumb_func_start sub_08116520 +sub_08116520: @ 0x08116520 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r1, _08116578 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r0, [r4, #8] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r2, #1 + 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_080A139C + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x18] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x18] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08116578: .4byte gUnknown_3005B60 + thumb_func_end sub_08116520 + + thumb_func_start sub_0811657C +sub_0811657C: @ 0x0811657C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r4, r3, #0 + ldr r0, _081165B4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081165DE + ldr r1, _081165B8 + lsls r2, r3, #2 + adds r0, r2, r3 + lsls r0, 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 _081165D8 + movs r1, #0x18 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _081165BC + ldrb r1, [r3, #0xe] + ldrb r2, [r3, #0x10] + b _081165C0 + .align 2, 0 +_081165B4: .4byte gUnknown_2037C74 +_081165B8: .4byte gUnknown_3005B60 +_081165BC: + ldrb r1, [r3, #0x10] + ldrb r2, [r3, #0xe] +_081165C0: + adds r0, r5, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r3, #0xc + ldrsh r0, [r0, r3] + cmp r0, #1 + bne _081165D0 + movs r2, #0 +_081165D0: + adds r0, r4, #0 + bl sub_08116520 + b _081165DE +_081165D8: + adds r0, r4, #0 + bl sub_080A34E4 +_081165DE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0811657C + + thumb_func_start sub_081165E4 +sub_081165E4: @ 0x081165E4 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08116644 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldr r5, _08116648 + ldrh r0, [r5, #2] + strh r0, [r4, #8] + ldrh r0, [r5, #2] + strh r0, [r4, #0xa] + ldrh r0, [r5, #4] + strh r0, [r4, #0xc] + ldrh r0, [r5, #6] + strh r0, [r4, #0xe] + ldrh r0, [r5, #8] + 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_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r1, #1 + lsls r1, r0 + ldrb r3, [r5, #8] + ldrh r0, [r5, #6] + str r0, [sp] + adds r0, r1, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A139C + ldr r0, _0811664C + str r0, [r4] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116644: .4byte gUnknown_3005B60 +_08116648: .4byte gUnknown_20380BE +_0811664C: .4byte sub_08116650 + thumb_func_end sub_081165E4 + + thumb_func_start sub_08116650 +sub_08116650: @ 0x08116650 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08116674 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #8] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08116678 + subs r0, r1, #1 + strh r0, [r4, #8] + b _081166FC + .align 2, 0 +_08116674: .4byte gUnknown_3005B60 +_08116678: + ldr r0, _08116694 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081166FC + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0811669C + ldr r0, _08116698 + str r0, [r4] + b _081166FC + .align 2, 0 +_08116694: .4byte gUnknown_2037C74 +_08116698: .4byte sub_08116708 +_0811669C: + ldrh r0, [r4, #0x16] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r2, #1 + lsls r2, r0 + ldrh r1, [r4, #0xa] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081166CA + ldrb r3, [r4, #0x10] + ldrh r0, [r4, #0xe] + str r0, [sp] + adds r0, r2, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A139C + b _081166DA +_081166CA: + ldrb r3, [r4, #0x14] + ldrh r0, [r4, #0x12] + str r0, [sp] + adds r0, r2, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A139C +_081166DA: + ldr r0, _08116704 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xa] + movs r3, #0x80 + lsls r3, r3, #1 + adds r2, r3, #0 + eors r0, r2 + strh r0, [r1, #0xa] + movs r2, #0xff + ands r0, r2 + strh r0, [r1, #8] + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] +_081166FC: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116704: .4byte gUnknown_3005B60 + thumb_func_end sub_08116650 + + thumb_func_start sub_08116708 +sub_08116708: @ 0x08116708 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08116758 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0811674E + ldr r1, _0811675C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x16] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r1, #1 + lsls r1, r0 + str r5, [sp] + adds r0, r1, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A139C + adds r0, r4, #0 + bl sub_080A34E4 +_0811674E: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116758: .4byte gUnknown_2037C74 +_0811675C: .4byte gUnknown_3005B60 + thumb_func_end sub_08116708 + + thumb_func_start sub_08116760 +sub_08116760: @ 0x08116760 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r2, #0 + ldr r0, _081167D8 + ldrb r6, [r0] + ldr r0, _081167DC + ldrb r7, [r0] + ldr r4, _081167E0 + ldrh r1, [r4] + movs r5, #0x80 + lsls r5, r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0811679A + str r2, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r3, #0 + bl sub_080A6E74 + adds r2, r0, #0 +_0811679A: + ldrh r1, [r4, #2] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081167AC + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r6 + orrs r2, r0 +_081167AC: + ldrh r1, [r4, #4] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081167BE + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r7 + orrs r2, r0 +_081167BE: + adds r0, r2, #0 + bl sub_080A1AE0 + mov r0, r8 + bl sub_080A34E4 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081167D8: .4byte gUnknown_20380D6 +_081167DC: .4byte gUnknown_20380D7 +_081167E0: .4byte gUnknown_20380BE + thumb_func_end sub_08116760 + + thumb_func_start sub_081167E4 +sub_081167E4: @ 0x081167E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r1, _081168D8 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08116826 + ldr r1, _081168DC + ldrh r0, [r1] + strh r0, [r4, #0xc] + ldrh r0, [r1, #2] + strh r0, [r4, #0xe] + ldrh r0, [r1, #4] + strh r0, [r4, #0x10] + ldrh r0, [r1, #6] + strh r0, [r4, #0xa] + ldrh r0, [r1, #8] + strh r0, [r4, #0x12] + ldrh r0, [r1, #0xa] + strh r0, [r4, #0x14] + ldrh r0, [r1, #0xc] + strh r0, [r4, #0x16] +_08116826: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r0, _081168E0 + ldrb r0, [r0] + mov sb, r0 + ldr r0, _081168E4 + ldrb r0, [r0] + mov sl, r0 + ldrh r1, [r4, #0xc] + movs r7, #0x80 + lsls r7, r7, #1 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _08116848 + ldr r5, _081168E8 +_08116848: + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08116878 + ldr r2, _081168EC + ldr r0, _081168F0 + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x14 + adds r0, r0, r2 + ldr r0, [r0] + ldrh r0, [r0, #2] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r6, #0 + lsls r1, r0 + lsls r1, r1, #0x10 + orrs r5, r1 +_08116878: + ldrh r1, [r4, #0xe] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0811688C + adds r0, r6, #0 + mov r2, sb + lsls r0, r2 + lsls r0, r0, #0x10 + orrs r5, r0 +_0811688C: + ldrh r1, [r4, #0x10] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _081168A0 + adds r0, r6, #0 + mov r1, sl + lsls r0, r1 + lsls r0, r0, #0x10 + orrs r5, r0 +_081168A0: + 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_080A1B28 + movs r2, #8 + ldrsh r1, [r4, r2] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _081168CA + adds r0, r5, #0 + bl sub_080A1BFC + mov r0, r8 + bl sub_080A34E4 +_081168CA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081168D8: .4byte gUnknown_3005B60 +_081168DC: .4byte gUnknown_20380BE +_081168E0: .4byte gUnknown_20380D6 +_081168E4: .4byte gUnknown_20380D7 +_081168E8: .4byte 0x0000FFFF +_081168EC: .4byte gUnknown_20205AC +_081168F0: .4byte gUnknown_3005AD0 + thumb_func_end sub_081167E4 + + thumb_func_start sub_081168F4 +sub_081168F4: @ 0x081168F4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08116928 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + ldrh r0, [r1, #4] + strh r0, [r4, #0x34] + movs r2, #6 + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _0811693C + cmp r0, #1 + bgt _0811692C + cmp r0, #0 + beq _08116932 + b _08116954 + .align 2, 0 +_08116928: .4byte gUnknown_20380BE +_0811692C: + cmp r0, #2 + beq _08116944 + b _08116954 +_08116932: + ldr r1, _08116938 + b _08116946 + .align 2, 0 +_08116938: .4byte gUnknown_2022AD4 +_0811693C: + ldr r1, _08116940 + b _08116946 + .align 2, 0 +_08116940: .4byte gUnknown_2022AD6 +_08116944: + ldr r1, _08116950 +_08116946: + adds r0, r4, #0 + bl sub_080A5B9C + b _0811695C + .align 2, 0 +_08116950: .4byte gUnknown_2021B38 +_08116954: + ldr r1, _0811698C + adds r0, r4, #0 + bl sub_080A5B9C +_0811695C: + movs r0, #0x3a + ldrsh r1, [r4, r0] + movs r2, #0x3c + ldrsh r0, [r4, r2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrh r0, [r1] + strh r0, [r4, #0x36] + ldr r0, _08116990 + ldrh r0, [r0, #6] + strh r0, [r4, #0x38] + subs r0, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08116980 + bl sub_08116A44 +_08116980: + ldr r0, _08116994 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811698C: .4byte gUnknown_2021B3A +_08116990: .4byte gUnknown_20380BE +_08116994: .4byte sub_08116998 + thumb_func_end sub_081168F4 + + thumb_func_start sub_08116998 +sub_08116998: @ 0x08116998 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x34] + movs r2, #0x34 + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _081169DA + subs r0, r1, #1 + strh r0, [r3, #0x34] + ldrh r1, [r3, #0x30] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _081169BA + subs r0, r1, #1 + strh r0, [r3, #0x30] + b _08116A32 +_081169BA: + ldrh r0, [r3, #0x32] + strh r0, [r3, #0x30] + movs r0, #0x3a + ldrsh r1, [r3, r0] + movs r2, #0x3c + ldrsh r0, [r3, r2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrh r0, [r3, #0x2e] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r3, #0x2e] + rsbs r0, r0, #0 + strh r0, [r3, #0x2e] + b _08116A32 +_081169DA: + movs r0, #0x3a + ldrsh r1, [r3, r0] + movs r2, #0x3c + ldrsh r0, [r3, r2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrh r0, [r3, #0x36] + strh r0, [r1] + ldrh r0, [r3, #0x38] + subs r0, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08116A2C + movs r4, #0 + ldr r5, _08116A38 + ldrb r0, [r5] + cmp r4, r0 + bhs _08116A2C + ldr r2, _08116A3C + mov ip, r2 + ldr r6, _08116A40 + movs r7, #3 + rsbs r7, r7, #0 +_08116A0A: + adds r0, r4, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrb r0, [r5] + cmp r4, r0 + blo _08116A0A +_08116A2C: + adds r0, r3, #0 + bl sub_080A34C4 +_08116A32: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08116A38: .4byte gUnknown_2023D10 +_08116A3C: .4byte gUnknown_20205AC +_08116A40: .4byte gUnknown_2023E88 + thumb_func_end sub_08116998 + + thumb_func_start sub_08116A44 +sub_08116A44: @ 0x08116A44 + push {r4, r5, r6, lr} + ldr r6, _08116AB8 + ldr r4, _08116ABC + ldr r5, _08116AC0 + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #3 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r3, _08116AC4 + ldrb r0, [r3] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + ldr r0, _08116AC8 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #2 + bne _08116ACC + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r3] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + b _08116AE8 + .align 2, 0 +_08116AB8: .4byte gUnknown_20205AC +_08116ABC: .4byte gUnknown_2023E88 +_08116AC0: .4byte gUnknown_20380D6 +_08116AC4: .4byte gUnknown_20380D7 +_08116AC8: .4byte gUnknown_20380BE +_08116ACC: + cmp r0, #0 + bne _08116AD4 + ldrb r0, [r5] + b _08116AD6 +_08116AD4: + ldrb r0, [r3] +_08116AD6: + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #2 +_08116AE8: + orrs r1, r2 + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08116A44 + + thumb_func_start sub_08116AF4 +sub_08116AF4: @ 0x08116AF4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08116B34 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r1 + ldr r3, _08116B38 + ldrh r1, [r3] + strh r1, [r2, #8] + ldrh r1, [r3, #2] + strh r1, [r2, #0xa] + ldrh r1, [r3, #4] + strh r1, [r2, #0xc] + ldrh r1, [r3, #6] + strh r1, [r2, #0xe] + ldrh r1, [r3, #6] + strh r1, [r2, #0x18] + ldr r4, _08116B3C + ldrh r1, [r3] + strh r1, [r4] + ldr r4, _08116B40 + ldrh r1, [r3, #2] + strh r1, [r4] + ldr r1, _08116B44 + str r1, [r2] + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08116B34: .4byte gUnknown_3005B60 +_08116B38: .4byte gUnknown_20380BE +_08116B3C: .4byte gUnknown_2022AD4 +_08116B40: .4byte gUnknown_2022AD6 +_08116B44: .4byte sub_08116B48 + thumb_func_end sub_08116AF4 + + thumb_func_start sub_08116B48 +sub_08116B48: @ 0x08116B48 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08116B78 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r2, [r3, #0xe] + movs r4, #0xe + ldrsh r0, [r3, r4] + mov ip, r1 + cmp r0, #0 + bne _08116BCE + ldr r0, _08116B7C + ldrh r2, [r0] + movs r7, #8 + ldrsh r1, [r3, r7] + adds r6, r0, #0 + cmp r2, r1 + bne _08116B80 + ldrh r0, [r3, #8] + rsbs r0, r0, #0 + b _08116B82 + .align 2, 0 +_08116B78: .4byte gUnknown_3005B60 +_08116B7C: .4byte gUnknown_2022AD4 +_08116B80: + ldrh r0, [r3, #8] +_08116B82: + strh r0, [r6] + ldr r2, _08116BA0 + ldrh r3, [r2] + lsls r1, r5, #2 + adds r0, r1, r5 + lsls r0, r0, #3 + mov r7, ip + adds r4, r0, r7 + movs r7, #0xa + ldrsh r0, [r4, r7] + cmn r3, r0 + bne _08116BA4 + movs r0, #0 + b _08116BA8 + .align 2, 0 +_08116BA0: .4byte gUnknown_2022AD6 +_08116BA4: + ldrh r0, [r4, #0xa] + rsbs r0, r0, #0 +_08116BA8: + strh r0, [r2] + adds r0, r1, r5 + lsls r0, r0, #3 + add r0, ip + ldrh r1, [r0, #0x18] + strh r1, [r0, #0xe] + ldrh r1, [r0, #0xc] + subs r1, #1 + strh r1, [r0, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + bne _08116BD2 + strh r1, [r6] + strh r1, [r2] + adds r0, r5, #0 + bl sub_080A34E4 + b _08116BD2 +_08116BCE: + subs r0, r2, #1 + strh r0, [r3, #0xe] +_08116BD2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08116B48 + + thumb_func_start sub_08116BD8 +sub_08116BD8: @ 0x08116BD8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08116BF8 + ldrb r1, [r4, #6] + bl sub_08007F70 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08116BFC + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + b _08116C04 + .align 2, 0 +_08116BF8: .4byte gUnknown_20380BE +_08116BFC: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6248 +_08116C04: + ldr r0, _08116C18 + str r0, [r5, #0x1c] + ldr r1, _08116C1C + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116C18: .4byte sub_080A6084 +_08116C1C: .4byte sub_080A34C4 + thumb_func_end sub_08116BD8 + + thumb_func_start sub_08116C20 +sub_08116C20: @ 0x08116C20 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08116C40 + ldrb r1, [r4, #6] + bl sub_08007F70 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08116C44 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + b _08116C4C + .align 2, 0 +_08116C40: .4byte gUnknown_20380BE +_08116C44: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6248 +_08116C4C: + ldr r0, _08116C64 + ldrh r0, [r0, #8] + strh r0, [r5, #0x2e] + ldr r0, _08116C68 + str r0, [r5, #0x1c] + ldr r1, _08116C6C + adds r0, r5, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116C64: .4byte gUnknown_20380BE +_08116C68: .4byte sub_080A6084 +_08116C6C: .4byte sub_0810EB18 + thumb_func_end sub_08116C20 + + thumb_func_start sub_08116C70 +sub_08116C70: @ 0x08116C70 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08116CA0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08116C94 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08116C94 + ldr r1, _08116CA4 + ldrh r0, [r1, #2] + rsbs r0, r0, #0 + strh r0, [r1, #2] +_08116C94: + adds r0, r4, #0 + bl sub_08116BD8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08116CA0: .4byte gUnknown_20380D6 +_08116CA4: .4byte gUnknown_20380BE + thumb_func_end sub_08116C70 + + thumb_func_start sub_08116CA8 +sub_08116CA8: @ 0x08116CA8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08116CE0 + movs r0, #2 + ldrsh r1, [r5, r0] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08116CC4 + bl sub_0806F0A4 + movs r1, #3 + ands r1, r0 + strh r1, [r5, #2] +_08116CC4: + ldrb r1, [r5, #2] + adds r0, r4, #0 + bl sub_08007F70 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08116CE4 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + b _08116CEC + .align 2, 0 +_08116CE0: .4byte gUnknown_20380BE +_08116CE4: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6248 +_08116CEC: + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x30 + bl __umodsi3 + ldr r1, _08116D30 + adds r0, r0, r1 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x18 + bl __umodsi3 + ldr r1, _08116D34 + adds r0, r0, r1 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldr r1, _08116D38 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08116D3C + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116D30: .4byte 0x0000FFE8 +_08116D34: .4byte 0x0000FFF4 +_08116D38: .4byte sub_080A6014 +_08116D3C: .4byte sub_080A6084 + thumb_func_end sub_08116CA8 + + thumb_func_start sub_08116D40 +sub_08116D40: @ 0x08116D40 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08116DA0 + ldrb r0, [r5] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08116DA4 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + ldrh r0, [r0, #0x20] + adds r1, r1, r0 + strh r1, [r4, #0x20] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + ldrh r0, [r0, #0x22] + adds r1, r1, r0 + strh r1, [r4, #0x22] + ldrh r0, [r5, #2] + strh r0, [r4, #0x24] + ldrh r0, [r5, #4] + strh r0, [r4, #0x26] + ldrb r1, [r5, #6] + adds r0, r4, #0 + bl sub_08007F70 + ldr r1, _08116DA8 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08116DAC + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116DA0: .4byte gUnknown_20380BE +_08116DA4: .4byte gUnknown_20205AC +_08116DA8: .4byte sub_080A6014 +_08116DAC: .4byte sub_080A6084 + thumb_func_end sub_08116D40 + + thumb_func_start sub_08116DB0 +sub_08116DB0: @ 0x08116DB0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08116DC8 + movs r1, #4 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08116DCC + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6294 + b _08116DD4 + .align 2, 0 +_08116DC8: .4byte gUnknown_20380BE +_08116DCC: + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6248 +_08116DD4: + ldr r0, _08116DEC + ldrh r0, [r0, #6] + strh r0, [r4, #0x2e] + ldr r1, _08116DF0 + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _08116DF4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08116DEC: .4byte gUnknown_20380BE +_08116DF0: .4byte sub_080A34C4 +_08116DF4: .4byte sub_080A5D78 + thumb_func_end sub_08116DB0 + + thumb_func_start sub_08116DF8 +sub_08116DF8: @ 0x08116DF8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08116E18 + ldrb r1, [r4, #6] + bl sub_08007F70 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08116E1C + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6294 + b _08116E24 + .align 2, 0 +_08116E18: .4byte gUnknown_20380BE +_08116E1C: + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6248 +_08116E24: + ldr r0, _08116E30 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08116E30: .4byte sub_08116E34 + thumb_func_end sub_08116DF8 + + thumb_func_start sub_08116E34 +sub_08116E34: @ 0x08116E34 + push {lr} + adds r3, r0, #0 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x2e] + adds r1, r0, #1 + strh r1, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _08116E6A + adds r0, r3, #0 + bl sub_080A34C4 +_08116E6A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08116E34 + + thumb_func_start sub_08116E70 +sub_08116E70: @ 0x08116E70 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _08116EB0 + movs r1, #0 + ldrsh r0, [r4, r1] + bl sub_0811608C + adds r6, r0, #0 + ldrh r3, [r4] + lsls r3, r3, #0x10 + asrs r0, r3, #0x17 + movs r4, #1 + ands r0, r4 + asrs r1, r3, #0x18 + ands r1, r4 + asrs r2, r3, #0x19 + ands r2, r4 + asrs r3, r3, #0x1a + ands r3, r4 + bl sub_080A6F8C + orrs r6, r0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_081170C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08116EB0: .4byte gUnknown_20380BE + thumb_func_end sub_08116E70 + + thumb_func_start sub_08116EB4 +sub_08116EB4: @ 0x08116EB4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r1, sp + movs r0, #0xff + strb r0, [r1, #1] + movs r0, #1 + bl sub_0811608C + adds r5, r0, #0 + ldr r0, _08116EE0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #7 + bhi _08116F5E + lsls r0, r0, #2 + ldr r1, _08116EE4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116EE0: .4byte gUnknown_20380BE +_08116EE4: .4byte _08116EE8 +_08116EE8: @ jump table + .4byte _08116F0A @ case 0 + .4byte _08116F16 @ case 1 + .4byte _08116F08 @ case 2 + .4byte _08116F14 @ case 3 + .4byte _08116F24 @ case 4 + .4byte _08116F3C @ case 5 + .4byte _08116F44 @ case 6 + .4byte _08116F50 @ case 7 +_08116F08: + movs r5, #0 +_08116F0A: + mov r0, sp + ldr r1, _08116F10 + b _08116F1A + .align 2, 0 +_08116F10: .4byte gUnknown_20380D6 +_08116F14: + movs r5, #0 +_08116F16: + mov r0, sp + ldr r1, _08116F20 +_08116F1A: + ldrb r1, [r1] + strb r1, [r0] + b _08116F5E + .align 2, 0 +_08116F20: .4byte gUnknown_20380D7 +_08116F24: + mov r1, sp + ldr r0, _08116F34 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08116F38 + ldrb r0, [r0] + strb r0, [r1, #1] + b _08116F5E + .align 2, 0 +_08116F34: .4byte gUnknown_20380D6 +_08116F38: .4byte gUnknown_20380D7 +_08116F3C: + mov r1, sp + movs r0, #0xff + strb r0, [r1] + b _08116F5E +_08116F44: + movs r5, #0 + mov r2, sp + ldr r0, _08116F4C + b _08116F56 + .align 2, 0 +_08116F4C: .4byte gUnknown_20380D6 +_08116F50: + movs r5, #0 + mov r2, sp + ldr r0, _08116FA8 +_08116F56: + ldrb r0, [r0] + movs r1, #2 + eors r0, r1 + strb r0, [r2] +_08116F5E: + movs r4, #0 + mov r6, sp +_08116F62: + ldrb r0, [r6] + cmp r4, r0 + beq _08116F8C + ldrb r0, [r6, #1] + cmp r4, r0 + beq _08116F8C + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08116F8C + adds r0, r4, #0 + bl sub_080A7074 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r0 + orrs r5, r1 +_08116F8C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08116F62 + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_081170C4 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08116FA8: .4byte gUnknown_20380D7 + thumb_func_end sub_08116EB4 + + thumb_func_start sub_08116FAC +sub_08116FAC: @ 0x08116FAC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08116FD0 + movs r1, #0 + ldrsh r0, [r0, r1] + bl sub_0811608C + adds r2, r0, #0 + ldr r0, _08116FD4 + ldrb r0, [r0] + cmp r0, #9 + bhi _08117082 + lsls r0, r0, #2 + ldr r1, _08116FD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116FD0: .4byte gUnknown_20380BE +_08116FD4: .4byte gUnknown_2022C94 +_08116FD8: .4byte _08116FDC +_08116FDC: @ jump table + .4byte _08117004 @ case 0 + .4byte _08117014 @ case 1 + .4byte _08117020 @ case 2 + .4byte _08117030 @ case 3 + .4byte _0811703C @ case 4 + .4byte _0811704C @ case 5 + .4byte _0811705C @ case 6 + .4byte _0811706C @ case 7 + .4byte _0811707C @ case 8 + .4byte _0811707C @ case 9 +_08117004: + ldr r1, _0811700C + ldr r0, _08117010 + b _08117080 + .align 2, 0 +_0811700C: .4byte gUnknown_20380BE +_08117010: .4byte 0x00000B0C +_08117014: + ldr r1, _0811701C + movs r0, #0x9e + lsls r0, r0, #4 + b _08117080 + .align 2, 0 +_0811701C: .4byte gUnknown_20380BE +_08117020: + ldr r1, _08117028 + ldr r0, _0811702C + b _08117080 + .align 2, 0 +_08117028: .4byte gUnknown_20380BE +_0811702C: .4byte 0x00002F1E +_08117030: + ldr r1, _08117038 + movs r0, #0x90 + lsls r0, r0, #7 + b _08117080 + .align 2, 0 +_08117038: .4byte gUnknown_20380BE +_0811703C: + ldr r1, _08117044 + ldr r0, _08117048 + b _08117080 + .align 2, 0 +_08117044: .4byte gUnknown_20380BE +_08117048: .4byte 0x00007ECB +_0811704C: + ldr r1, _08117054 + ldr r0, _08117058 + b _08117080 + .align 2, 0 +_08117054: .4byte gUnknown_20380BE +_08117058: .4byte 0x00007ECB +_0811705C: + ldr r1, _08117064 + ldr r0, _08117068 + b _08117080 + .align 2, 0 +_08117064: .4byte gUnknown_20380BE +_08117068: .4byte 0x00002A16 +_0811706C: + ldr r1, _08117074 + ldr r0, _08117078 + b _08117080 + .align 2, 0 +_08117074: .4byte gUnknown_20380BE +_08117078: .4byte 0x00000D2E +_0811707C: + ldr r1, _08117090 + ldr r0, _08117094 +_08117080: + strh r0, [r1, #8] +_08117082: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_081170C4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117090: .4byte gUnknown_20380BE +_08117094: .4byte 0x00007FFF + thumb_func_end sub_08116FAC + + thumb_func_start sub_08117098 +sub_08117098: @ 0x08117098 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081170C0 + ldrh r0, [r0] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r1, #1 + lsls r1, r0 + adds r0, r4, #0 + bl sub_081170C4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081170C0: .4byte gUnknown_20380BE + thumb_func_end sub_08117098 + + thumb_func_start sub_081170C4 +sub_081170C4: @ 0x081170C4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081170FC + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + strh r1, [r2, #8] + lsrs r1, r1, #0x10 + strh r1, [r2, #0xa] + ldr r3, _08117100 + ldrh r1, [r3, #2] + strh r1, [r2, #0xc] + ldrh r1, [r3, #4] + strh r1, [r2, #0xe] + ldrh r1, [r3, #6] + strh r1, [r2, #0x10] + ldrh r1, [r3, #8] + strh r1, [r2, #0x12] + ldrh r1, [r3, #4] + strh r1, [r2, #0x1c] + ldr r1, _08117104 + str r1, [r2] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_081170FC: .4byte gUnknown_3005B60 +_08117100: .4byte gUnknown_20380BE +_08117104: .4byte sub_08117108 + thumb_func_end sub_081170C4 + + thumb_func_start sub_08117108 +sub_08117108: @ 0x08117108 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + ldr r2, _08117188 + lsls r5, r7, #2 + adds r0, r5, r7 + lsls r0, 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 sb, r2 + cmp r1, r0 + bne _0811719E + strh r6, [r3, #0x1a] + movs r0, #8 + ldrsh r4, [r3, r0] + movs r1, #0xa + ldrsh r0, [r3, r1] + lsls r0, r0, #0x10 + orrs r4, r0 + mov r8, r5 + cmp r4, #0 + beq _0811716A + adds r5, r3, #0 +_08117148: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0811715C + ldrb r2, [r5, #0x1c] + ldrh r3, [r5, #0x12] + adds r0, r6, #0 + movs r1, #0x10 + bl sub_0806F410 +_0811715C: + adds r0, r6, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsrs r4, r4, #1 + cmp r4, #0 + bne _08117148 +_0811716A: + mov r4, r8 + adds r0, r4, r7 + lsls r0, r0, #3 + mov r1, sb + 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 _0811718C + adds r0, #1 + strh r0, [r2, #0x1c] + b _081171A4 + .align 2, 0 +_08117188: .4byte gUnknown_3005B60 +_0811718C: + cmp r3, r1 + ble _08117196 + subs r0, #1 + strh r0, [r2, #0x1c] + b _081171A4 +_08117196: + adds r0, r7, #0 + bl sub_080A34E4 + b _081171A4 +_0811719E: + mov r0, r8 + adds r0, #1 + strh r0, [r3, #0x1a] +_081171A4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08117108 + + thumb_func_start sub_081171B0 +sub_081171B0: @ 0x081171B0 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _081171E4 + ldrb r0, [r4] + ldrb r1, [r4, #2] + ldrb r2, [r4, #4] + ldrb r3, [r4, #6] + ldrb r4, [r4, #8] + str r4, [sp] + bl sub_080A2078 + ldr r1, _081171E8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081171EC + str r1, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081171E4: .4byte gUnknown_20380BE +_081171E8: .4byte gUnknown_3005B60 +_081171EC: .4byte sub_081171F0 + thumb_func_end sub_081171B0 + + thumb_func_start sub_081171F0 +sub_081171F0: @ 0x081171F0 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0811720C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08117208 + adds r0, r2, #0 + bl sub_080A34E4 +_08117208: + pop {r0} + bx r0 + .align 2, 0 +_0811720C: .4byte gUnknown_2037C74 + thumb_func_end sub_081171F0 + + thumb_func_start sub_08117210 +sub_08117210: @ 0x08117210 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0811723C + adds r1, r1, r0 + ldr r2, _08117240 + ldrh r0, [r2] + movs r3, #0 + strh r0, [r1, #8] + strh r3, [r1, #0xa] + ldrh r0, [r2, #2] + strh r0, [r1, #0xc] + ldrh r0, [r2, #4] + strh r0, [r1, #0xe] + ldrh r0, [r2, #6] + strh r0, [r1, #0x10] + strh r3, [r1, #0x12] + ldr r0, _08117244 + str r0, [r1] + bx lr + .align 2, 0 +_0811723C: .4byte gUnknown_3005B60 +_08117240: .4byte gUnknown_20380BE +_08117244: .4byte sub_08117248 + thumb_func_end sub_08117210 + + thumb_func_start sub_08117248 +sub_08117248: @ 0x08117248 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r2, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08117274 + adds r4, r0, r1 + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0811730C + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08117278 + subs r0, r1, #1 + strh r0, [r4, #0xa] + b _0811731A + .align 2, 0 +_08117274: .4byte gUnknown_3005B60 +_08117278: + ldrb r0, [r4, #8] + bl sub_080A72B0 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _081172F6 + ldr r6, _08117304 + movs r1, #0x14 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r3, r1, r6 + movs r2, #8 + ldrsh r0, [r4, r2] + movs r2, #2 + cmp r0, #0 + beq _081172A0 + movs r2, #1 +_081172A0: + lsls r2, r2, #2 + ldrb r1, [r3, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #5] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r4, #0xe] + strh r1, [r0, #0x2e] + movs r2, #0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r5, [r0, #0x30] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #5 + strh r1, [r0, #0x32] + movs r2, #0x14 + ldrsh r1, [r4, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08117308 + str r1, [r0] + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] +_081172F6: + ldrh r0, [r4, #0x10] + subs r0, #1 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0xc] + strh r0, [r4, #0xa] + b _0811731A + .align 2, 0 +_08117304: .4byte gUnknown_20205AC +_08117308: .4byte sub_08117320 +_0811730C: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0811731A + adds r0, r2, #0 + bl sub_080A34E4 +_0811731A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08117248 + + thumb_func_start sub_08117320 +sub_08117320: @ 0x08117320 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08117334 + subs r0, r1, #1 + strh r0, [r4, #0x2e] + b _08117358 +_08117334: + ldr r3, _08117360 + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_080A7324 +_08117358: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117360: .4byte gUnknown_3005B60 + thumb_func_end sub_08117320 + + thumb_func_start sub_08117364 +sub_08117364: @ 0x08117364 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r7, #0 + ldr r0, _0811748C + strh r7, [r0] + ldr r0, _08117490 + strh r7, [r0] + ldr r1, _08117494 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08117498 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r1, _0811749C + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081174A0 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0xa + bl sub_080011D0 + add r4, sp, #0x10 + strh r0, [r4] + ldrb r1, [r4] + movs r0, #4 + rsbs r0, r0, #0 + 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_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081173F2 + ldrb r1, [r4] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r4] + movs r0, #0xa + bl sub_08001144 +_081173F2: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08117476 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08117476 + ldr r5, _081174A4 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _08117422 + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08117476 +_08117422: + ldrb r0, [r5] + movs r6, #2 + eors r0, r6 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08117476 + ldr r3, _081174A8 + ldr r1, _081174AC + ldrb r0, [r5] + eors r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldrb r1, [r4] + mov r0, r8 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r4] + movs r0, #0xa + bl sub_08001144 + movs r7, #1 +_08117476: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081174B4 + ldr r0, _081174B0 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r5, [r0] + b _081174FC + .align 2, 0 +_0811748C: .4byte gUnknown_2022AD8 +_08117490: .4byte gUnknown_2022ADA +_08117494: .4byte 0x00003F3F +_08117498: .4byte 0x00003F3D +_0811749C: .4byte 0x00003F42 +_081174A0: .4byte 0x00000C08 +_081174A4: .4byte gUnknown_20380D6 +_081174A8: .4byte gUnknown_20205AC +_081174AC: .4byte gUnknown_2023E88 +_081174B0: .4byte gUnknown_2039BD4 +_081174B4: + ldr r4, _081174D4 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081174E0 + ldr r1, _081174D8 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081174DC + b _081174F0 + .align 2, 0 +_081174D4: .4byte gUnknown_20380D6 +_081174D8: .4byte gUnknown_2023D12 +_081174DC: .4byte gUnknown_20243E8 +_081174E0: + ldr r1, _08117588 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0811758C +_081174F0: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081174FC: + movs r0, #0 + bl sub_080A5B08 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08117590 + ldrb r0, [r0] + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A8290 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sp + bl sub_080A63F8 + ldr r1, _08117594 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08117598 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _0811759C + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + adds r1, #1 + movs r2, #2 + bl sub_080A1200 + ldr r2, _081175A0 + ldr r0, _081175A4 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x20] + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r2] + ldr r2, _081175A8 + ldrh r0, [r1, #0x22] + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r2] + ldr r1, _081175AC + mov r2, sb + lsls r0, r2, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + strh r7, [r0, #0x14] + ldr r1, _081175B0 + str r1, [r0] + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08117588: .4byte gUnknown_2023D12 +_0811758C: .4byte gUnknown_2024190 +_08117590: .4byte gUnknown_20380D6 +_08117594: .4byte gUnknown_8C20728 +_08117598: .4byte gUnknown_8C2070C +_0811759C: .4byte gUnknown_8572FFC +_081175A0: .4byte gUnknown_2022ACC +_081175A4: .4byte gUnknown_20205AC +_081175A8: .4byte gUnknown_2022ACE +_081175AC: .4byte gUnknown_3005B60 +_081175B0: .4byte sub_081175B4 + thumb_func_end sub_08117364 + + thumb_func_start sub_081175B4 +sub_081175B4: @ 0x081175B4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r1, _081176E4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #0x1c] + adds r0, #4 + movs r1, #0 + mov r8, r1 + strh r0, [r5, #0x1c] + ldr r7, _081176E8 + ldrh r2, [r7] + subs r1, r2, #4 + strh r1, [r7] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _081176D6 + mov r0, r8 + strh r0, [r5, #0x1c] + adds r0, r2, #0 + adds r0, #0x3c + strh r0, [r7] + ldrh r0, [r5, #0x1e] + adds r0, #1 + strh r0, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _081176D6 + movs r0, #0 + bl sub_080A4044 + ldr r0, _081176EC + mov r1, r8 + strh r1, [r0] + ldr r0, _081176F0 + strh r1, [r0] + ldr r4, _081176F4 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08117646 + movs r0, #0xa + bl sub_080011D0 + add r1, sp, #0x10 + strh r0, [r1] + ldrb r2, [r1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrh r1, [r1] + movs r0, #0xa + bl sub_08001144 +_08117646: + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080A5B08 + ldr r4, _081176F8 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + movs r1, #0x14 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _081176CC + ldr r2, _081176FC + ldr r0, _08117700 + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] +_081176CC: + mov r2, r8 + strh r2, [r7] + adds r0, r6, #0 + bl sub_080A34E4 +_081176D6: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081176E4: .4byte gUnknown_3005B60 +_081176E8: .4byte gUnknown_2022ACE +_081176EC: .4byte gUnknown_2022AD8 +_081176F0: .4byte gUnknown_2022ADA +_081176F4: .4byte 0x00003F3F +_081176F8: .4byte gUnknown_20205AC +_081176FC: .4byte gUnknown_2023E88 +_08117700: .4byte gUnknown_20380D6 + thumb_func_end sub_081175B4 + + thumb_func_start sub_08117704 +sub_08117704: @ 0x08117704 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08117744 + movs r0, #0x18 + bl sub_08000BDC + str r0, [r4] + movs r2, #0 + ldr r3, _08117748 +_08117718: + ldr r1, [r4] + lsls r0, r2, #1 + adds r1, #4 + adds r1, r1, r0 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _08117718 + ldr r0, _0811774C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08117750 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08117744: .4byte gUnknown_2039DDC +_08117748: .4byte gUnknown_20380BE +_0811774C: .4byte gUnknown_3005B60 +_08117750: .4byte sub_08117754 + thumb_func_end sub_08117704 + + thumb_func_start sub_08117754 +sub_08117754: @ 0x08117754 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0811776C + ldr r1, [r0] + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08117774 + ldr r0, _08117770 + b _08117776 + .align 2, 0 +_0811776C: .4byte gUnknown_2039DDC +_08117770: .4byte gUnknown_20380D6 +_08117774: + ldr r0, _081178A0 +_08117776: + ldrb r0, [r0] + strb r0, [r1] + ldr r4, _081178A4 + ldr r2, [r4] + ldrb r0, [r2] + movs r1, #2 + eors r0, r1 + strb r0, [r2, #1] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081177A6 + ldr r1, [r4] + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _081177AC + ldrb r0, [r1, #1] + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081177AC +_081177A6: + ldr r1, [r4] + movs r0, #0 + strh r0, [r1, #0xa] +_081177AC: + ldr r0, _081178A8 + movs r1, #0 + strh r1, [r0] + ldr r0, _081178AC + strh r1, [r0] + ldr r1, _081178B0 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _081178B4 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r1, _081178B8 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811780A + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_0811780A: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08117886 + ldr r4, _081178A4 + ldr r1, [r4] + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08117886 + ldrb r0, [r1] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + beq _0811783C + ldr r0, [r4] + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08117886 +_0811783C: + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_080A3BD8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _08117886 + ldr r3, _081178BC + ldr r1, _081178C0 + ldr r0, [r4] + ldrb r0, [r0, #1] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + subs r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + ldr r0, [r4] + strb r5, [r0, #2] +_08117886: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081178C8 + ldr r0, _081178A4 + ldr r1, [r0] + ldr r0, _081178C4 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + b _08117914 + .align 2, 0 +_081178A0: .4byte gUnknown_20380D7 +_081178A4: .4byte gUnknown_2039DDC +_081178A8: .4byte gUnknown_2022AD8 +_081178AC: .4byte gUnknown_2022ADA +_081178B0: .4byte 0x00003F3F +_081178B4: .4byte 0x00003F3D +_081178B8: .4byte 0x00003F42 +_081178BC: .4byte gUnknown_20205AC +_081178C0: .4byte gUnknown_2023E88 +_081178C4: .4byte gUnknown_2039BD4 +_081178C8: + ldr r4, _081178EC + ldr r0, [r4] + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081178F8 + ldr r1, _081178F0 + ldr r0, [r4] + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081178F4 + b _0811790A + .align 2, 0 +_081178EC: .4byte gUnknown_2039DDC +_081178F0: .4byte gUnknown_2023D12 +_081178F4: .4byte gUnknown_20243E8 +_081178F8: + ldr r1, _0811792C + ldr r0, [r4] + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08117930 +_0811790A: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + ldr r1, [r4] +_08117914: + strh r0, [r1, #0x14] + ldr r0, _08117934 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08117938 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811792C: .4byte gUnknown_2023D12 +_08117930: .4byte gUnknown_2024190 +_08117934: .4byte gUnknown_3005B60 +_08117938: .4byte sub_0811793C + thumb_func_end sub_08117754 + + thumb_func_start sub_0811793C +sub_0811793C: @ 0x0811793C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0 + mov r8, r0 + ldr r6, _0811799C + ldr r4, _081179A0 + ldr r2, [r4] + ldrb r0, [r2] + adds r1, r0, r6 + ldrb r1, [r1] + ldrh r2, [r2, #0x14] + bl sub_080A8290 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, [r4] + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0811797E + ldrb r0, [r2, #1] + adds r1, r0, r6 + ldrb r1, [r1] + ldrh r2, [r2, #0x14] + bl sub_080A8290 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_0811797E: + mov r0, sp + bl sub_080A63F8 + ldr r0, [r4] + movs r4, #4 + ldrsh r0, [r0, r4] + cmp r0, #0 + bne _081179A8 + ldr r1, _081179A4 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + b _081179B2 + .align 2, 0 +_0811799C: .4byte gUnknown_2023E88 +_081179A0: .4byte gUnknown_2039DDC +_081179A4: .4byte gUnknown_8C2D9D4 +_081179A8: + ldr r1, _081179D8 + mov r0, sp + movs r2, #0 + bl sub_080A6628 +_081179B2: + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _081179DC + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _081179E0 + ldr r0, [r0] + movs r1, #6 + ldrsh r0, [r0, r1] + cmp r0, #6 + bhi _08117A48 + lsls r0, r0, #2 + ldr r1, _081179E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081179D8: .4byte gUnknown_8C2DAF0 +_081179DC: .4byte gUnknown_8C2D7C4 +_081179E0: .4byte gUnknown_2039DDC +_081179E4: .4byte _081179E8 +_081179E8: @ jump table + .4byte _08117A04 @ case 0 + .4byte _08117A0C @ case 1 + .4byte _08117A14 @ case 2 + .4byte _08117A1C @ case 3 + .4byte _08117A24 @ case 4 + .4byte _08117A2C @ case 5 + .4byte _08117A34 @ case 6 +_08117A04: + ldr r0, _08117A08 + b _08117A36 + .align 2, 0 +_08117A08: .4byte gUnknown_8C2DC2C +_08117A0C: + ldr r0, _08117A10 + b _08117A36 + .align 2, 0 +_08117A10: .4byte gUnknown_8C2DC0C +_08117A14: + ldr r0, _08117A18 + b _08117A36 + .align 2, 0 +_08117A18: .4byte gUnknown_8C2DC4C +_08117A1C: + ldr r0, _08117A20 + b _08117A36 + .align 2, 0 +_08117A20: .4byte gUnknown_8C2DC6C +_08117A24: + ldr r0, _08117A28 + b _08117A36 + .align 2, 0 +_08117A28: .4byte gUnknown_8C2DCAC +_08117A2C: + ldr r0, _08117A30 + b _08117A36 + .align 2, 0 +_08117A30: .4byte gUnknown_8C2DCCC +_08117A34: + ldr r0, _08117A44 +_08117A36: + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + b _08117A56 + .align 2, 0 +_08117A44: .4byte gUnknown_8C2DCEC +_08117A48: + ldr r0, _08117A80 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC +_08117A56: + ldr r3, _08117A84 + movs r2, #0 + strh r2, [r3] + ldr r0, _08117A88 + strh r2, [r0] + ldr r1, _08117A8C + ldr r0, [r1] + movs r4, #4 + ldrsh r0, [r0, r4] + adds r4, r1, #0 + cmp r0, #1 + bne _08117A98 + movs r0, #0x40 + strh r0, [r3] + ldr r2, _08117A90 + lsls r3, r5, #2 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _08117A94 + b _08117AA4 + .align 2, 0 +_08117A80: .4byte gUnknown_8C2DC8C +_08117A84: .4byte gUnknown_2022ACC +_08117A88: .4byte gUnknown_2022ACE +_08117A8C: .4byte gUnknown_2039DDC +_08117A90: .4byte gUnknown_3005B60 +_08117A94: .4byte 0x0000FFFD +_08117A98: + ldr r2, _08117AC0 + lsls r3, r5, #2 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #3 +_08117AA4: + strh r1, [r0, #0xa] + ldr r0, [r4] + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08117AC4 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xa + strh r1, [r0, #0x10] + movs r1, #0x14 + b _08117AD0 + .align 2, 0 +_08117AC0: .4byte gUnknown_3005B60 +_08117AC4: + adds r0, r3, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xd + strh r1, [r0, #0x10] + movs r1, #0x1e +_08117AD0: + strh r1, [r0, #0x12] + adds r1, r3, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r7, [r1, #8] + ldr r3, [r4] + ldrh r0, [r3, #0xa] + strh r0, [r1, #0xc] + mov r4, r8 + strh r4, [r1, #0xe] + ldrb r0, [r3, #2] + strh r0, [r1, #0x14] + ldr r2, _08117B14 + ldrb r0, [r3, #1] + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1, #0x16] + ldr r0, _08117B18 + str r0, [r1] + movs r1, #4 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08117B1C + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4B40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xef + bl sub_080A307C + b _08117B30 + .align 2, 0 +_08117B14: .4byte gUnknown_2023E88 +_08117B18: .4byte sub_08117B3C +_08117B1C: + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4B40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xf5 + bl sub_080A307C +_08117B30: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0811793C + + thumb_func_start sub_08117B3C +sub_08117B3C: @ 0x08117B3C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _08117B68 + ldr r1, _08117B6C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #0xa] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + movs r0, #0x26 + ldrsh r2, [r5, r0] + cmp r2, #1 + beq _08117BB2 + cmp r2, #1 + bgt _08117B70 + cmp r2, #0 + beq _08117B7A + b _08117CC8 + .align 2, 0 +_08117B68: .4byte gUnknown_2022ACE +_08117B6C: .4byte gUnknown_3005B60 +_08117B70: + cmp r2, #2 + beq _08117BC8 + cmp r2, #3 + beq _08117C06 + b _08117CC8 +_08117B7A: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08117B88 + b _08117CC8 +_08117B88: + strh r2, [r5, #0x1e] + ldrh r1, [r5, #0x20] + adds r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x20 + ldrsh r1, [r5, r2] + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + beq _08117BB0 + b _08117CC8 +_08117BB0: + b _08117BFE +_08117BB2: + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r5, r2] + cmp r0, r1 + beq _08117BC6 + b _08117CC8 +_08117BC6: + b _08117BFE +_08117BC8: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08117CC8 + movs r0, #0 + strh r0, [r5, #0x1e] + ldrh r1, [r5, #0x20] + subs r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x20 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08117CC8 + movs r0, #0 + bl sub_080A4044 +_08117BFE: + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] + b _08117CC8 +_08117C06: + ldr r0, _08117CD0 + movs r1, #0 + strh r1, [r0] + ldr r0, _08117CD4 + strh r1, [r0] + ldr r4, _08117CD8 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08117C36 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_08117C36: + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #8 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08117CDC + adds r0, r0, r4 + bl sub_08006E00 + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08117C8A + movs r2, #0xe + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 +_08117C8A: + movs r1, #0x14 + ldrsh r0, [r5, r1] + cmp r0, #1 + bne _08117CB6 + movs r2, #0x16 + ldrsh r0, [r5, r2] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrb r3, [r2, #5] + lsls r1, r3, #0x1c + lsrs r1, r1, #0x1e + adds r1, #1 + movs r0, #3 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] +_08117CB6: + ldr r4, _08117CE0 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + adds r0, r6, #0 + bl sub_080A34E4 +_08117CC8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08117CD0: .4byte gUnknown_2022AD8 +_08117CD4: .4byte gUnknown_2022ADA +_08117CD8: .4byte 0x00003F3F +_08117CDC: .4byte gUnknown_20205AC +_08117CE0: .4byte gUnknown_2039DDC + thumb_func_end sub_08117B3C + + thumb_func_start sub_08117CE4 +sub_08117CE4: @ 0x08117CE4 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + movs r1, #1 + movs r2, #1 + movs r3, #1 + bl sub_080A6F8C + adds r6, r0, #0 + movs r1, #0 + bl sub_08117E14 + ldr r0, _08117D44 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + lsrs r0, r6, #0x10 + movs r5, #0 + strh r0, [r4, #0x24] + str r5, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + adds r6, r0, #0 + ldr r1, _08117D48 + ands r6, r1 + adds r0, r6, #0 + bl sub_08117E14 + strh r6, [r4, #0x26] + strh r5, [r4, #8] + strh r5, [r4, #0xa] + ldr r0, _08117D4C + str r0, [r4] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08117D44: .4byte gUnknown_3005B60 +_08117D48: .4byte 0x0000FFFF +_08117D4C: .4byte sub_08117D50 + thumb_func_end sub_08117CE4 + + thumb_func_start sub_08117D50 +sub_08117D50: @ 0x08117D50 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08117D74 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _08117D94 + cmp r1, #1 + bgt _08117D78 + cmp r1, #0 + beq _08117D7E + b _08117E0E + .align 2, 0 +_08117D74: .4byte gUnknown_3005B60 +_08117D78: + cmp r1, #2 + beq _08117E08 + b _08117E0E +_08117D7E: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + ble _08117E0E + strh r1, [r4, #0xa] + movs r0, #0x10 + strh r0, [r4, #0xc] + b _08117DFC +_08117D94: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08117E0E + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + movs r5, #0 + movs r6, #1 +_08117DB0: + movs r1, #0x26 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, #0 + beq _08117DCA + lsls r0, r5, #0x14 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #0xc] + movs r1, #0x10 + ldr r3, _08117E04 + bl sub_0806F410 +_08117DCA: + movs r1, #0x24 + ldrsh r0, [r4, r1] + asrs r0, r5 + ands r0, r6 + cmp r0, #0 + beq _08117DEA + lsls r0, r5, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #0xc] + movs r1, #0x10 + movs r3, #0 + bl sub_0806F410 +_08117DEA: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xf + bls _08117DB0 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08117E0E +_08117DFC: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08117E0E + .align 2, 0 +_08117E04: .4byte 0x0000FFFF +_08117E08: + adds r0, r2, #0 + bl sub_080A34E4 +_08117E0E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08117D50 + + thumb_func_start sub_08117E14 +sub_08117E14: @ 0x08117E14 + push {r4, r5, r6, lr} + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + movs r2, #0 +_08117E1E: + movs r0, #1 + ands r0, r3 + lsrs r4, r3, #1 + adds r5, r2, #1 + cmp r0, #0 + beq _08117E4A + lsls r0, r2, #0x14 + lsrs r2, r0, #0x10 + adds r0, r2, #0 + adds r0, #0x10 + cmp r2, r0 + bge _08117E4A + ldr r1, _08117E5C + adds r3, r0, #0 +_08117E3A: + lsls r0, r2, #1 + adds r0, r0, r1 + strh r6, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + blt _08117E3A +_08117E4A: + adds r3, r4, #0 + lsls r0, r5, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x1f + bls _08117E1E + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08117E5C: .4byte gUnknown_20377B4 + thumb_func_end sub_08117E14 + + thumb_func_start sub_08117E60 +sub_08117E60: @ 0x08117E60 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + movs r2, #0 + ldr r0, _08117EA8 + ldrb r3, [r0] + movs r5, #1 +_08117E70: + cmp r3, r2 + beq _08117E7E + adds r1, r2, #0 + adds r1, #0x10 + adds r0, r5, #0 + lsls r0, r1 + orrs r4, r0 +_08117E7E: + adds r2, #1 + cmp r2, #3 + bls _08117E70 + movs r2, #5 + ldr r0, _08117EAC + adds r1, r0, #0 + adds r1, #8 +_08117E8C: + ldrh r0, [r1] + strh r0, [r1, #2] + subs r1, #2 + subs r2, #1 + cmp r2, #0 + bne _08117E8C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081170C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08117EA8: .4byte gUnknown_20380D6 +_08117EAC: .4byte gUnknown_20380BE + thumb_func_end sub_08117E60 + + thumb_func_start sub_08117EB0 +sub_08117EB0: @ 0x08117EB0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + bl sub_080A6674 + ldr r0, _08117F18 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08117F1C + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08117EEC + ldr r0, _08117F20 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08117EEC + ldrh r0, [r4] + rsbs r0, r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + rsbs r0, r0, #0 + strh r0, [r4, #2] +_08117EEC: + ldr r0, _08117F24 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r2, _08117F1C + ldrh r0, [r2] + strh r0, [r1, #0xa] + ldrh r0, [r2, #2] + strh r0, [r1, #0xc] + ldrh r0, [r2, #6] + strh r0, [r1, #0xe] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + adds r0, r6, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08117F18: .4byte sub_08117F28 +_08117F1C: .4byte gUnknown_20380BE +_08117F20: .4byte gUnknown_20380D6 +_08117F24: .4byte gUnknown_3005B60 + thumb_func_end sub_08117EB0 + + thumb_func_start sub_08117F28 +sub_08117F28: @ 0x08117F28 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08117F94 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r3, [r1, #0xa] + ldrh r0, [r1, #0x1c] + adds r3, r3, r0 + movs r4, #0 + mov ip, r4 + strh r3, [r1, #0x1c] + ldrh r2, [r1, #0xc] + ldrh r7, [r1, #0x1e] + adds r2, r2, r7 + strh r2, [r1, #0x1e] + ldr r6, _08117F98 + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 + ldrh r4, [r6] + adds r0, r0, r4 + strh r0, [r6] + ldr r4, _08117F9C + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r7, [r4] + adds r0, r0, r7 + strh r0, [r4] + movs r0, #0xff + ands r3, r0 + strh r3, [r1, #0x1c] + ands r2, r0 + strh r2, [r1, #0x1e] + ldr r0, _08117FA0 + movs r3, #0xe + ldrsh r2, [r0, r3] + movs r7, #0xe + ldrsh r0, [r1, r7] + cmp r2, r0 + bne _08117F8E + mov r0, ip + strh r0, [r6] + strh r0, [r4] + movs r0, #1 + bl sub_080A6674 + adds r0, r5, #0 + bl sub_080A8964 +_08117F8E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08117F94: .4byte gUnknown_3005B60 +_08117F98: .4byte gUnknown_2022AD4 +_08117F9C: .4byte gUnknown_2022AD6 +_08117FA0: .4byte gUnknown_20380BE + thumb_func_end sub_08117F28 + + thumb_func_start sub_08117FA4 +sub_08117FA4: @ 0x08117FA4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08117FC8 + ldrb r0, [r0] + bl sub_080A62F8 + ldr r1, _08117FCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117FC8: .4byte gUnknown_20380D6 +_08117FCC: .4byte gUnknown_20380BE + thumb_func_end sub_08117FA4 + + thumb_func_start sub_08117FD0 +sub_08117FD0: @ 0x08117FD0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08117FF4 + ldrb r0, [r0] + bl sub_080A62F8 + ldr r1, _08117FF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117FF4: .4byte gUnknown_20380D7 +_08117FF8: .4byte gUnknown_20380BE + thumb_func_end sub_08117FD0 + + thumb_func_start sub_08117FFC +sub_08117FFC: @ 0x08117FFC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r5, _08118028 + movs r4, #0 + ldr r0, _0811802C + ldrb r2, [r0] + movs r0, #2 + ldr r1, _08118030 + eors r0, r2 + ldrb r1, [r1] + cmp r0, r1 + bne _08118018 + movs r4, #1 +_08118018: + strh r4, [r5, #0xe] + adds r0, r3, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08118028: .4byte gUnknown_20380BE +_0811802C: .4byte gUnknown_20380D6 +_08118030: .4byte gUnknown_20380D7 + thumb_func_end sub_08117FFC + + thumb_func_start sub_08118034 +sub_08118034: @ 0x08118034 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r6, _08118094 +_0811803E: + ldr r0, _08118098 + ldrb r0, [r0] + cmp r4, r0 + beq _0811807C + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811807C + ldr r0, _0811809C + adds r0, r4, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + ldr r1, _081180A0 + adds r2, #0x3e + movs r0, #1 + ldrb r3, [r1] + ands r3, r0 + lsls r3, r3, #2 + ldrb r0, [r2] + movs r7, #5 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] +_0811807C: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _0811803E + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08118094: .4byte gUnknown_20205AC +_08118098: .4byte gUnknown_20380D6 +_0811809C: .4byte gUnknown_2023E88 +_081180A0: .4byte gUnknown_20380BE + thumb_func_end sub_08118034 + + thumb_func_start sub_081180A4 +sub_081180A4: @ 0x081180A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x48] + ldr r5, [sp, #0x4c] + ldr r6, [sp, #0x50] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x14] + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x18] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp, #0x1c] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov sl, r6 + movs r0, #0 + str r0, [sp, #0x20] + movs r0, #2 + adds r6, r7, #0 + eors r6, r0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08118106 + mov r1, r8 + cmp r1, #0 + beq _0811810A + adds r0, r6, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811810A +_08118106: + movs r2, #0 + mov r8, r2 +_0811810A: + ldr r0, _0811819C + movs r1, #0 + strh r1, [r0] + ldr r0, _081181A0 + strh r1, [r0] + ldr r1, _081181A4 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _081181A8 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r1, _081181AC + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0xa + bl sub_080011D0 + add r4, sp, #0x10 + strh r0, [r4] + ldrb r1, [r4] + movs r0, #4 + rsbs r0, r0, #0 + 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_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08118180 + ldrb r0, [r4] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4] +_08118180: + ldrh r1, [r4] + movs r0, #0xa + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081181B4 + ldr r0, _081181B0 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r4, [r0] + b _081181F2 + .align 2, 0 +_0811819C: .4byte gUnknown_2022AD8 +_081181A0: .4byte gUnknown_2022ADA +_081181A4: .4byte 0x00003F3F +_081181A8: .4byte 0x00003F3D +_081181AC: .4byte 0x00003F42 +_081181B0: .4byte gUnknown_2039BD4 +_081181B4: + adds r0, r7, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081181D8 + ldr r1, _081181D0 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081181D4 + b _081181E6 + .align 2, 0 +_081181D0: .4byte gUnknown_2023D12 +_081181D4: .4byte gUnknown_20243E8 +_081181D8: + ldr r1, _08118294 + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08118298 +_081181E6: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081181F2: + ldr r5, _0811829C + adds r0, r7, r5 + ldrb r1, [r0] + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_080A8290 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r0, r8 + cmp r0, #0 + beq _0811821C + adds r0, r6, r5 + ldrb r1, [r0] + adds r0, r6, #0 + adds r2, r4, #0 + bl sub_080A8290 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] +_0811821C: + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldr r1, [sp, #0x58] + movs r2, #0 + bl sub_080A6628 + mov r0, sp + ldrb r0, [r0, #9] + mov r1, sp + ldrh r2, [r1, #0xa] + ldr r1, [sp, #0x54] + bl sub_080A6588 + mov r0, sp + ldrb r1, [r0, #8] + lsls r1, r1, #4 + ldr r0, [sp, #0x5c] + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _081182A0 + movs r1, #0 + strh r1, [r0] + ldr r0, _081182A4 + strh r1, [r0] + ldr r1, _081182A8 + mov r2, sb + lsls r0, r2, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, 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, sl + strh r1, [r0, #0x12] + mov r2, sp + ldrh r2, [r2, #0x1c] + strh r2, [r0, #0x14] + strh r7, [r0, #8] + mov r1, r8 + strh r1, [r0, #0xc] + mov r2, sp + ldrh r2, [r2, #0x20] + strh r2, [r0, #0xe] + ldr r1, _081182AC + str r1, [r0] + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08118294: .4byte gUnknown_2023D12 +_08118298: .4byte gUnknown_2024190 +_0811829C: .4byte gUnknown_2023E88 +_081182A0: .4byte gUnknown_2022ACC +_081182A4: .4byte gUnknown_2022ACE +_081182A8: .4byte gUnknown_3005B60 +_081182AC: .4byte sub_081182B0 + thumb_func_end sub_081180A4 + + thumb_func_start sub_081182B0 +sub_081182B0: @ 0x081182B0 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _081182EC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r0, #0xa + ldrsh r2, [r3, r0] + adds r5, r1, #0 + cmp r2, #0 + bge _081182CE + rsbs r2, r2, #0 +_081182CE: + ldrh r0, [r3, #0x22] + adds r4, r0, r2 + strh r4, [r3, #0x22] + movs r1, #0xa + ldrsh r0, [r3, r1] + cmp r0, #0 + bge _081182F4 + ldr r2, _081182F0 + lsls r1, r4, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2] + subs r0, r0, r1 + strh r0, [r2] + b _08118300 + .align 2, 0 +_081182EC: .4byte gUnknown_3005B60 +_081182F0: .4byte gUnknown_2022ACE +_081182F4: + ldr r1, _08118324 + lsls r0, r4, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] +_08118300: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, 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, #1 + beq _0811836A + cmp r0, #1 + bgt _08118328 + cmp r0, #0 + beq _0811832E + b _0811845C + .align 2, 0 +_08118324: .4byte gUnknown_2022ACE +_08118328: + cmp r0, #2 + beq _08118384 + b _0811845C +_0811832E: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x14 + ldrsh r1, [r5, r3] + cmp r0, r1 + bge _08118342 + b _0811845C +_08118342: + strh r2, [r5, #0x1e] + ldrh r1, [r5, #0x20] + adds r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x20 + ldrsh r1, [r5, r0] + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0811845C + b _0811837C +_0811836A: + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x12 + ldrsh r1, [r5, r3] + cmp r0, r1 + bne _0811845C +_0811837C: + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] + b _0811845C +_08118384: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x14 + ldrsh r1, [r5, r3] + cmp r0, r1 + blt _0811845C + strh r2, [r5, #0x1e] + ldrh r1, [r5, #0x20] + subs r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x20 + ldrsh r4, [r5, r0] + cmp r4, #0 + bne _0811845C + movs r0, #0 + bl sub_080A4044 + ldr r0, _08118464 + strh r4, [r0] + ldr r0, _08118468 + strh r4, [r0] + ldr r4, _0811846C + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08118402 + movs r0, #0xa + bl sub_080011D0 + mov r1, sp + strh r0, [r1] + mov r2, sp + ldrb r1, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + mov r0, sp + ldrh r1, [r0] + movs r0, #0xa + bl sub_08001144 +_08118402: + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r3, #8 + ldrsh r1, [r5, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08118470 + adds r0, r0, r4 + bl sub_08006E00 + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08118456 + movs r2, #0xe + ldrsh r1, [r5, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 +_08118456: + adds r0, r6, #0 + bl sub_080A34E4 +_0811845C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08118464: .4byte gUnknown_2022AD8 +_08118468: .4byte gUnknown_2022ADA +_0811846C: .4byte 0x00003F3F +_08118470: .4byte gUnknown_20205AC + thumb_func_end sub_081182B0 + + thumb_func_start sub_08118474 +sub_08118474: @ 0x08118474 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0811848C + ldr r1, _08118490 + ldrb r1, [r1] + strh r1, [r2] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_0811848C: .4byte gUnknown_20380BE +_08118490: .4byte gUnknown_2022C94 + thumb_func_end sub_08118474 + + thumb_func_start sub_08118494 +sub_08118494: @ 0x08118494 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + ldr r1, _081184BC + ldr r1, [r1] + movs r2, #0xbe + lsls r2, r2, #1 + adds r1, r1, r2 + str r0, [r1] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081184BC: .4byte gUnknown_2024178 + thumb_func_end sub_08118494 + + thumb_func_start sub_081184C0 +sub_081184C0: @ 0x081184C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _081184EC + ldr r0, [r6] + movs r5, #0xbe + lsls r5, r5, #1 + adds r0, r0, r5 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r0, r0, r5 + movs r1, #0 + str r1, [r0] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081184EC: .4byte gUnknown_2024178 + thumb_func_end sub_081184C0 + + thumb_func_start sub_081184F0 +sub_081184F0: @ 0x081184F0 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08118530 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08118534 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0811854C + movs r2, #1 +_08118522: + lsrs r1, r1, #1 + adds r4, #1 + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _08118522 + b _0811854C + .align 2, 0 +_08118530: .4byte gUnknown_20380BE +_08118534: + cmp r0, #1 + bne _08118540 + ldr r0, _0811853C + b _08118546 + .align 2, 0 +_0811853C: .4byte gUnknown_20380D6 +_08118540: + cmp r0, #2 + bne _0811854C + ldr r0, _0811857C +_08118546: + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x10 +_0811854C: + ldr r0, _08118580 + ldr r1, [r0] + ldr r0, _08118584 + movs r2, #2 + ldrsh r0, [r0, r2] + movs r2, #0xbe + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r1, [r1] + lsls r0, r0, #5 + adds r0, r0, r1 + lsls r1, r4, #5 + ldr r2, _08118588 + adds r1, r1, r2 + movs r2, #0x20 + bl memcpy + adds r0, r5, #0 + bl sub_080A34E4 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811857C: .4byte gUnknown_20380D7 +_08118580: .4byte gUnknown_2024178 +_08118584: .4byte gUnknown_20380BE +_08118588: .4byte gUnknown_20373B4 + thumb_func_end sub_081184F0 + + thumb_func_start sub_0811858C +sub_0811858C: @ 0x0811858C + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _081185CC + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081185D0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081185E8 + movs r2, #1 +_081185BE: + lsrs r1, r1, #1 + adds r4, #1 + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _081185BE + b _081185E8 + .align 2, 0 +_081185CC: .4byte gUnknown_20380BE +_081185D0: + cmp r0, #1 + bne _081185DC + ldr r0, _081185D8 + b _081185E2 + .align 2, 0 +_081185D8: .4byte gUnknown_20380D6 +_081185DC: + cmp r0, #2 + bne _081185E8 + ldr r0, _08118618 +_081185E2: + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x10 +_081185E8: + lsls r0, r4, #5 + ldr r1, _0811861C + adds r0, r0, r1 + ldr r1, _08118620 + ldr r2, [r1] + ldr r1, _08118624 + movs r3, #2 + ldrsh r1, [r1, r3] + movs r3, #0xbe + lsls r3, r3, #1 + adds r2, r2, r3 + ldr r2, [r2] + lsls r1, r1, #5 + adds r1, r1, r2 + movs r2, #0x20 + bl memcpy + adds r0, r5, #0 + bl sub_080A34E4 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08118618: .4byte gUnknown_20380D7 +_0811861C: .4byte gUnknown_20373B4 +_08118620: .4byte gUnknown_2024178 +_08118624: .4byte gUnknown_20380BE + thumb_func_end sub_0811858C + + thumb_func_start sub_08118628 +sub_08118628: @ 0x08118628 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r0, _08118668 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0811866C + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08118684 + movs r2, #1 +_0811865A: + lsrs r1, r1, #1 + adds r4, #1 + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + beq _0811865A + b _08118684 + .align 2, 0 +_08118668: .4byte gUnknown_20380BE +_0811866C: + cmp r0, #1 + bne _08118678 + ldr r0, _08118674 + b _0811867E + .align 2, 0 +_08118674: .4byte gUnknown_20380D6 +_08118678: + cmp r0, #2 + bne _08118684 + ldr r0, _081186A4 +_0811867E: + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x10 +_08118684: + lsls r1, r4, #5 + ldr r0, _081186A8 + adds r0, r1, r0 + ldr r2, _081186AC + adds r1, r1, r2 + movs r2, #0x20 + bl memcpy + adds r0, r5, #0 + bl sub_080A34E4 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081186A4: .4byte gUnknown_20380D7 +_081186A8: .4byte gUnknown_20373B4 +_081186AC: .4byte gUnknown_20377B4 + thumb_func_end sub_08118628 + + thumb_func_start sub_081186B0 +sub_081186B0: @ 0x081186B0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _081186D0 + ldr r1, _081186CC + movs r0, #1 + strh r0, [r1, #0xe] + b _081186D4 + .align 2, 0 +_081186CC: .4byte gUnknown_20380BE +_081186D0: + ldr r0, _081186E0 + strh r1, [r0, #0xe] +_081186D4: + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081186E0: .4byte gUnknown_20380BE + thumb_func_end sub_081186B0 + + thumb_func_start sub_081186E4 +sub_081186E4: @ 0x081186E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08118704 + ldr r1, _08118708 + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _0811870C + ldr r1, _08118710 + ldrb r1, [r1] + strb r1, [r2] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08118704: .4byte gUnknown_20380D6 +_08118708: .4byte gUnknown_2023EB0 +_0811870C: .4byte gUnknown_20380D7 +_08118710: .4byte gUnknown_2023EB2 + thumb_func_end sub_081186E4 + + thumb_func_start sub_08118714 +sub_08118714: @ 0x08118714 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0811873C + ldrb r0, [r0] + bl sub_080A62F8 + adds r4, r0, #0 + ldr r0, _08118740 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + bne _08118748 + ldr r1, _08118744 + movs r0, #1 + b _0811874C + .align 2, 0 +_0811873C: .4byte gUnknown_20380D6 +_08118740: .4byte gUnknown_20380D7 +_08118744: .4byte gUnknown_20380BE +_08118748: + ldr r1, _0811875C + movs r0, #0 +_0811874C: + strh r0, [r1, #0xe] + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811875C: .4byte gUnknown_20380BE + thumb_func_end sub_08118714 + + thumb_func_start sub_08118760 +sub_08118760: @ 0x08118760 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08118778 + ldr r1, _0811877C + ldrb r1, [r1] + strb r1, [r2] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08118778: .4byte gUnknown_20380D7 +_0811877C: .4byte gUnknown_2023EB0 + thumb_func_end sub_08118760 + + thumb_func_start sub_08118780 +sub_08118780: @ 0x08118780 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081187A0 + ldr r1, _081187A4 + ldrb r1, [r1] + strb r1, [r2] + ldr r2, _081187A8 + ldr r1, _081187AC + ldrb r1, [r1] + strb r1, [r2] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_081187A0: .4byte gUnknown_20380D6 +_081187A4: .4byte gUnknown_2023EAF +_081187A8: .4byte gUnknown_20380D7 +_081187AC: .4byte gUnknown_2023EB2 + thumb_func_end sub_08118780 + + thumb_func_start sub_081187B0 +sub_081187B0: @ 0x081187B0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081187C8 + adds r0, r4, #0 + bl sub_080A34E4 + b _08118804 +_081187C8: + ldr r0, _0811880C + lsls r3, r4, #2 + adds r3, r3, r4 + lsls r3, r3, #3 + adds r3, r3, r0 + ldr r0, _08118810 + ldr r4, [r0] + ldr r2, _08118814 + ldrb r0, [r2] + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + strh r0, [r3, #8] + ldrb r1, [r2] + ldr r0, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + ldr r0, _08118818 + str r0, [r3] + ldr r1, _0811881C + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_08118804: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811880C: .4byte gUnknown_3005B60 +_08118810: .4byte gUnknown_2024174 +_08118814: .4byte gUnknown_20380D6 +_08118818: .4byte sub_08118820 +_0811881C: .4byte gUnknown_203809E + thumb_func_end sub_081187B0 + + thumb_func_start sub_08118820 +sub_08118820: @ 0x08118820 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811886C + movs r2, #0xe + ldrsh r1, [r0, r2] + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + bne _08118864 + ldr r0, _08118870 + ldr r1, [r0] + ldr r0, _08118874 + ldrb r3, [r0] + ldr r0, [r1] + lsls r3, r3, #2 + adds r3, r3, r0 + ldr r1, _08118878 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #8] + movs r1, #1 + ands r1, r0 + ldrb r2, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + bl sub_080A8964 +_08118864: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811886C: .4byte gUnknown_20380BE +_08118870: .4byte gUnknown_2024174 +_08118874: .4byte gUnknown_20380D6 +_08118878: .4byte gUnknown_3005B60 + thumb_func_end sub_08118820 + + thumb_func_start sub_0811887C +sub_0811887C: @ 0x0811887C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + cmp r6, #3 + bls _08118890 + b _08118982 +_08118890: + ldr r0, _081188AC + adds r0, r6, r0 + ldrb r0, [r0] + bl sub_080011D0 + ldr r1, _081188B0 + strh r0, [r1] + cmp r5, #6 + bhi _08118974 + lsls r0, r5, #2 + ldr r1, _081188B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081188AC: .4byte gUnknown_8572FFE +_081188B0: .4byte gUnknown_2039DE0 +_081188B4: .4byte _081188B8 +_081188B8: @ jump table + .4byte _081188D4 @ case 0 + .4byte _081188E8 @ case 1 + .4byte _08118900 @ case 2 + .4byte _08118918 @ case 3 + .4byte _08118930 @ case 4 + .4byte _0811894C @ case 5 + .4byte _08118960 @ case 6 +_081188D4: + ldr r2, _081188E4 + lsls r3, r4, #6 + ldrb r1, [r2, #1] + movs r0, #0x3f + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #1] + b _08118974 + .align 2, 0 +_081188E4: .4byte gUnknown_2039DE0 +_081188E8: + ldr r3, _081188FC + movs r0, #1 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + b _0811896E + .align 2, 0 +_081188FC: .4byte gUnknown_2039DE0 +_08118900: + ldr r3, _08118914 + movs r0, #1 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3] + movs r0, #0x41 + rsbs r0, r0, #0 + b _0811893E + .align 2, 0 +_08118914: .4byte gUnknown_2039DE0 +_08118918: + ldr r3, _0811892C + movs r0, #3 + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #0xd + rsbs r0, r0, #0 + b _0811893E + .align 2, 0 +_0811892C: .4byte gUnknown_2039DE0 +_08118930: + ldr r3, _08118948 + movs r0, #3 + adds r1, r4, #0 + ands r1, r0 + ldrb r2, [r3] + movs r0, #4 + rsbs r0, r0, #0 +_0811893E: + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08118974 + .align 2, 0 +_08118948: .4byte gUnknown_2039DE0 +_0811894C: + ldr r2, _0811895C + lsls r3, r4, #7 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + b _08118974 + .align 2, 0 +_0811895C: .4byte gUnknown_2039DE0 +_08118960: + ldr r3, _08118988 + movs r0, #0x1f + adds r1, r4, #0 + ands r1, r0 + ldrb r2, [r3, #1] + movs r0, #0x20 + rsbs r0, r0, #0 +_0811896E: + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #1] +_08118974: + ldr r0, _0811898C + adds r0, r6, r0 + ldrb r0, [r0] + ldr r1, _08118988 + ldrh r1, [r1] + bl sub_08001144 +_08118982: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08118988: .4byte gUnknown_2039DE0 +_0811898C: .4byte gUnknown_8572FFE + thumb_func_end sub_0811887C + + thumb_func_start sub_08118990 +sub_08118990: @ 0x08118990 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r2, #3 + bhi _08118A18 + ldr r0, _081189BC + adds r0, r2, r0 + ldrb r0, [r0] + bl sub_080011D0 + mov r1, sp + strh r0, [r1] + cmp r4, #6 + bhi _08118A18 + lsls r0, r4, #2 + ldr r1, _081189C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081189BC: .4byte gUnknown_8573002 +_081189C0: .4byte _081189C4 +_081189C4: @ jump table + .4byte _081189E0 @ case 0 + .4byte _081189E8 @ case 1 + .4byte _081189F0 @ case 2 + .4byte _081189F8 @ case 3 + .4byte _08118A00 @ case 4 + .4byte _08118A08 @ case 5 + .4byte _08118A10 @ case 6 +_081189E0: + ldr r0, [sp] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x1e + b _08118A1A +_081189E8: + ldr r0, [sp] + lsls r0, r0, #0x12 + lsrs r0, r0, #0x1f + b _08118A1A +_081189F0: + ldr r0, [sp] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + b _08118A1A +_081189F8: + ldr r0, [sp] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + b _08118A1A +_08118A00: + ldr r0, [sp] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + b _08118A1A +_08118A08: + ldr r0, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1f + b _08118A1A +_08118A10: + ldr r0, [sp] + lsls r0, r0, #0x13 + lsrs r0, r0, #0x1b + b _08118A1A +_08118A18: + movs r0, #0 +_08118A1A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08118990 + + thumb_func_start sub_08118A24 +sub_08118A24: @ 0x08118A24 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _08118A48 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08118A58 + ldr r0, _08118A4C + ldrh r1, [r0] + ldr r0, _08118A50 + cmp r1, r0 + beq _08118A58 + ldr r0, _08118A54 + b _08118AA8 + .align 2, 0 +_08118A48: .4byte gUnknown_2022C90 +_08118A4C: .4byte gUnknown_203886E +_08118A50: .4byte 0x00000C03 +_08118A54: .4byte sub_081195B8 +_08118A58: + ldr r2, [r2] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _08118A6C + ldr r0, _08118A68 + b _08118AA8 + .align 2, 0 +_08118A68: .4byte sub_08119310 +_08118A6C: + ldr r0, _08118A78 + ands r0, r2 + cmp r0, #0 + beq _08118A80 + ldr r0, _08118A7C + b _08118AA8 + .align 2, 0 +_08118A78: .4byte 0x003F0100 +_08118A7C: .4byte sub_08119094 +_08118A80: + movs r0, #0x80 + lsls r0, r0, #5 + ands r2, r0 + cmp r2, #0 + beq _08118AA0 + ldr r0, _08118A98 + ldrb r0, [r0] + cmp r0, #2 + beq _08118AA0 + movs r4, #3 + ldr r0, _08118A9C + b _08118AA8 + .align 2, 0 +_08118A98: .4byte gUnknown_829BDA4 +_08118A9C: .4byte sub_08118D88 +_08118AA0: + ldr r1, _08118AD4 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] +_08118AA8: + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08118AD8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] + 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 +_08118AD4: .4byte gUnknown_8573008 +_08118AD8: .4byte gUnknown_3005B60 + thumb_func_end sub_08118A24 + + thumb_func_start sub_08118ADC +sub_08118ADC: @ 0x08118ADC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldr r0, _08118B28 + movs r1, #0 + strh r1, [r0] + ldr r0, _08118B2C + strh r1, [r0] + ldr r0, _08118B30 + strh r1, [r0] + ldr r0, _08118B34 + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r4, _08118B38 + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08118B28: .4byte gUnknown_2022ACC +_08118B2C: .4byte gUnknown_2022ACE +_08118B30: .4byte gUnknown_2022AD0 +_08118B34: .4byte gUnknown_2022AD2 +_08118B38: .4byte 0x00003F3F + thumb_func_end sub_08118ADC + + thumb_func_start sub_08118B3C +sub_08118B3C: @ 0x08118B3C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08118B74 + ldrh r0, [r1] + adds r0, #6 + strh r0, [r1] + ldr r1, _08118B78 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, #4 + bls _08118B68 + b _08118D7A +_08118B68: + lsls r0, r0, #2 + ldr r1, _08118B7C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08118B74: .4byte gUnknown_2022ACC +_08118B78: .4byte gUnknown_3005B60 +_08118B7C: .4byte _08118B80 +_08118B80: @ jump table + .4byte _08118B94 @ case 0 + .4byte _08118BC4 @ case 1 + .4byte _08118BEC @ case 2 + .4byte _08118C34 @ case 3 + .4byte _08118D74 @ case 4 +_08118B94: + ldr r0, _08118BAC + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08118BB0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + movs r1, #0x10 + b _08118BBA + .align 2, 0 +_08118BAC: .4byte gUnknown_2022C90 +_08118BB0: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + movs r1, #1 +_08118BBA: + strh r1, [r0, #0xc] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _08118D7A +_08118BC4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + mov r3, r8 + adds r1, r0, r3 + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08118BDC + b _08118D7A +_08118BDC: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + b _08118D7A +_08118BEC: + ldr r1, _08118C28 + ldrh r0, [r1] + subs r0, #0xff + strh r0, [r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #6 + cmp r0, r1 + beq _08118C04 + b _08118D7A +_08118C04: + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + add r1, r8 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xf0 + strh r0, [r1, #0xc] + movs r0, #0x20 + strh r0, [r1, #0xe] + ldr r2, _08118C2C + ldrh r1, [r2] + ldr r0, _08118C30 + ands r0, r1 + strh r0, [r2] + b _08118D7A + .align 2, 0 +_08118C28: .4byte gUnknown_2022ADA +_08118C2C: .4byte gUnknown_20240A0 +_08118C30: .4byte 0x0000FFFE +_08118C34: + lsls r0, r4, #2 + adds r1, r0, r4 + lsls r1, r1, #3 + mov r5, r8 + adds r2, r1, r5 + ldrh r3, [r2, #0xe] + movs r5, #0xe + ldrsh r1, [r2, r5] + mov ip, r0 + cmp r1, #0 + beq _08118C50 + subs r0, r3, #1 + strh r0, [r2, #0xe] + b _08118C7E +_08118C50: + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _08118C70 + ldr r2, _08118C68 + ldrh r1, [r2] + ldr r0, _08118C6C + cmp r1, r0 + beq _08118C7E + subs r0, r1, #2 + b _08118C7C + .align 2, 0 +_08118C68: .4byte gUnknown_2022ACE +_08118C6C: .4byte 0x0000FFB0 +_08118C70: + ldr r2, _08118D50 + ldrh r1, [r2] + ldr r0, _08118D54 + cmp r1, r0 + beq _08118C7E + subs r0, r1, #1 +_08118C7C: + strh r0, [r2] +_08118C7E: + ldr r2, _08118D58 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08118C92 + ldr r3, _08118D5C + adds r0, r1, r3 + strh r0, [r2] +_08118C92: + mov r5, ip + adds r0, r5, r4 + lsls r0, r0, #3 + mov r2, r8 + adds r1, r0, r2 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08118CAA + subs r0, r2, #2 + strh r0, [r1, #0xc] +_08118CAA: + movs r3, #0 + ldr r5, _08118D60 + mov sb, r5 + ldr r7, _08118D64 + mov r6, sb + adds r5, r1, #0 +_08118CB6: + lsls r2, r3, #1 + ldrb r1, [r6, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r7 + ldrh r0, [r5, #0xc] + strh r0, [r2] + adds r3, #1 + cmp r3, #0x4f + ble _08118CB6 + cmp r3, #0x9f + bgt _08118CFA + ldr r7, _08118D64 + ldr r6, _08118D60 + ldr r1, _08118D68 + mov r2, ip + adds r0, r2, r4 + lsls r0, r0, #3 + adds r5, r0, r1 +_08118CE0: + lsls r2, r3, #1 + ldrb r1, [r6, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r7 + ldrh r0, [r5, #0xc] + rsbs r0, r0, #0 + strh r0, [r2] + adds r3, #1 + cmp r3, #0x9f + ble _08118CE0 +_08118CFA: + mov r3, ip + adds r0, r3, r4 + lsls r0, r0, #3 + mov r5, r8 + adds r1, r0, r5 + movs r0, #0xc + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08118D7A + movs r0, #3 + mov r3, sb + strb r0, [r3, #0x15] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + str r2, [sp] + ldr r1, _08118D6C + ldr r2, _08118D70 + mov r0, sp + bl CpuSet + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r1, #0x9c + lsls r1, r1, #8 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xbc + lsls r1, r1, #7 + movs r0, #0xc + bl sub_08001144 + b _08118D7A + .align 2, 0 +_08118D50: .4byte gUnknown_2022ACE +_08118D54: .4byte 0x0000FFC8 +_08118D58: .4byte gUnknown_2022ADA +_08118D5C: .4byte 0xFFFFFC04 +_08118D60: .4byte gUnknown_20397C8 +_08118D64: .4byte gUnknown_20388C8 +_08118D68: .4byte gUnknown_3005B60 +_08118D6C: .4byte 0x0600E000 +_08118D70: .4byte 0x05000200 +_08118D74: + adds r0, r4, #0 + bl sub_08118ADC +_08118D7A: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08118B3C + + thumb_func_start sub_08118D88 +sub_08118D88: @ 0x08118D88 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08118DB4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0xa + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #3 + beq _08118DC8 + cmp r0, #3 + bgt _08118DB8 + cmp r0, #2 + beq _08118DBC + b _08118DD0 + .align 2, 0 +_08118DB4: .4byte gUnknown_3005B60 +_08118DB8: + cmp r0, #4 + bne _08118DD0 +_08118DBC: + ldr r1, _08118DC4 + ldrh r0, [r1] + adds r0, #8 + b _08118DCE + .align 2, 0 +_08118DC4: .4byte gUnknown_2022ACC +_08118DC8: + ldr r1, _08118E0C + ldrh r0, [r1] + adds r0, #6 +_08118DCE: + strh r0, [r1] +_08118DD0: + lsls r0, r5, #2 + adds r1, r0, r5 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r3, #0xa + ldrsh r1, [r4, r3] + adds r6, r0, #0 + cmp r1, #4 + bne _08118E34 + ldr r7, _08118E10 + ldrh r0, [r4, #0x14] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08118DF6 + ldr r1, _08118E14 + adds r0, r0, r1 +_08118DF6: + asrs r0, r0, #9 + subs r0, #8 + strh r0, [r7] + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0xb3 + bgt _08118E18 + adds r0, r1, #4 + b _08118E1A + .align 2, 0 +_08118E0C: .4byte gUnknown_2022ACC +_08118E10: .4byte gUnknown_2022ACE +_08118E14: .4byte 0x000001FF +_08118E18: + adds r0, r1, #6 +_08118E1A: + strh r0, [r4, #0x14] + ldr r2, _08118E50 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r3, r0, r2 + movs r0, #0x14 + ldrsh r1, [r3, r0] + movs r0, #0xb4 + lsls r0, r0, #1 + cmp r1, r0 + bne _08118E34 + movs r0, #0 + strh r0, [r3, #0x14] +_08118E34: + adds r0, r6, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #4 + bls _08118E44 + b _0811906A +_08118E44: + lsls r0, r0, #2 + ldr r1, _08118E54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08118E50: .4byte gUnknown_3005B60 +_08118E54: .4byte _08118E58 +_08118E58: @ jump table + .4byte _08118E6C @ case 0 + .4byte _08118E9C @ case 1 + .4byte _08118EC8 @ case 2 + .4byte _08118F18 @ case 3 + .4byte _08119064 @ case 4 +_08118E6C: + ldr r1, _08118E88 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #0x10 + strh r3, [r2, #0x10] + ldr r0, _08118E8C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08118E90 + strh r3, [r2, #0xc] + b _08118E94 + .align 2, 0 +_08118E88: .4byte gUnknown_3005B60 +_08118E8C: .4byte gUnknown_2022C90 +_08118E90: + movs r0, #1 + strh r0, [r2, #0xc] +_08118E94: + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _0811906A +_08118E9C: + ldr r0, _08118EC4 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08118EB2 + b _0811906A +_08118EB2: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + b _0811906A + .align 2, 0 +_08118EC4: .4byte gUnknown_3005B60 +_08118EC8: + ldr r1, _08118F08 + ldrh r0, [r1] + subs r0, #0xff + strh r0, [r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #6 + cmp r0, r1 + beq _08118EE0 + b _0811906A +_08118EE0: + ldr r0, _08118F0C + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xf0 + strh r0, [r1, #0xc] + movs r0, #0x20 + strh r0, [r1, #0xe] + movs r0, #1 + strh r0, [r1, #0x12] + ldr r2, _08118F10 + ldrh r1, [r2] + ldr r0, _08118F14 + ands r0, r1 + strh r0, [r2] + b _0811906A + .align 2, 0 +_08118F08: .4byte gUnknown_2022ADA +_08118F0C: .4byte gUnknown_3005B60 +_08118F10: .4byte gUnknown_20240A0 +_08118F14: .4byte 0x0000FFFE +_08118F18: + ldr r0, _08118F50 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xe] + movs r3, #0xe + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08118F58 + subs r0, r2, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08118F78 + ldr r1, _08118F54 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0xf + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + b _08118F78 + .align 2, 0 +_08118F50: .4byte gUnknown_3005B60 +_08118F54: .4byte 0x00001842 +_08118F58: + ldrh r2, [r1, #0x10] + movs r0, #0x1f + ands r0, r2 + cmp r0, #0 + beq _08118F78 + ldrh r0, [r1, #0x12] + subs r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08118F78 + adds r0, r2, #0 + adds r0, #0xff + strh r0, [r1, #0x10] + movs r0, #4 + strh r0, [r1, #0x12] +_08118F78: + ldr r2, _08119048 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08118F8C + ldr r3, _0811904C + adds r0, r1, r3 + strh r0, [r2] +_08118F8C: + ldr r0, _08119050 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08118FA2 + subs r0, r2, #2 + strh r0, [r1, #0xc] +_08118FA2: + movs r3, #0 + ldr r0, _08119054 + mov r8, r0 + ldr r2, _08119058 + mov ip, r2 + mov r7, r8 + adds r4, r1, #0 +_08118FB0: + lsls r2, r3, #1 + ldrb r1, [r7, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + add r2, ip + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r3, #1 + cmp r3, #0x4f + ble _08118FB0 + cmp r3, #0x9f + bgt _08118FF4 + ldr r0, _08119058 + mov ip, r0 + ldr r7, _08119054 + ldr r1, _08119050 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r4, r0, r1 +_08118FDA: + lsls r2, r3, #1 + ldrb r1, [r7, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + add r2, ip + ldrh r0, [r4, #0xc] + rsbs r0, r0, #0 + strh r0, [r2] + adds r3, #1 + cmp r3, #0x9f + ble _08118FDA +_08118FF4: + ldr r1, _08119050 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r3, #0xc + ldrsh r2, [r1, r3] + cmp r2, #0 + bne _0811906A + movs r0, #3 + mov r3, r8 + strb r0, [r3, #0x15] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + str r2, [sp] + ldr r1, _0811905C + ldr r2, _08119060 + mov r0, sp + bl CpuSet + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r1, #0x9c + lsls r1, r1, #8 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xbc + lsls r1, r1, #7 + movs r0, #0xc + bl sub_08001144 + b _0811906A + .align 2, 0 +_08119048: .4byte gUnknown_2022ADA +_0811904C: .4byte 0xFFFFFC04 +_08119050: .4byte gUnknown_3005B60 +_08119054: .4byte gUnknown_20397C8 +_08119058: .4byte gUnknown_20388C8 +_0811905C: .4byte 0x0600E000 +_08119060: .4byte 0x05000200 +_08119064: + adds r0, r5, #0 + bl sub_08118ADC +_0811906A: + ldr r0, _08119090 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #4 + beq _08119082 + ldrh r1, [r1, #0x10] + movs r0, #0x52 + bl sub_08001144 +_08119082: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08119090: .4byte gUnknown_3005B60 + thumb_func_end sub_08118D88 + + thumb_func_start sub_08119094 +sub_08119094: @ 0x08119094 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081190C8 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] + ldr r1, _081190CC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r4, r1, #0 + cmp r0, #4 + bls _081190BE + b _081192E6 +_081190BE: + lsls r0, r0, #2 + ldr r1, _081190D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081190C8: .4byte gUnknown_2022ACC +_081190CC: .4byte gUnknown_3005B60 +_081190D0: .4byte _081190D4 +_081190D4: @ jump table + .4byte _081190E8 @ case 0 + .4byte _08119140 @ case 1 + .4byte _0811916C @ case 2 + .4byte _081191BC @ case 3 + .4byte _081192E0 @ case 4 +_081190E8: + ldr r1, _08119120 + movs r0, #0x50 + bl sub_08001144 + ldr r4, _08119124 + movs r0, #0x52 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _08119128 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + strh r4, [r2, #0x10] + ldr r0, _0811912C + ldr r0, [r0] + ldr r1, _08119130 + ands r0, r1 + cmp r0, #0 + beq _08119134 + movs r0, #0x10 + b _08119136 + .align 2, 0 +_08119120: .4byte 0x00001842 +_08119124: .4byte 0x00000808 +_08119128: .4byte gUnknown_3005B60 +_0811912C: .4byte gUnknown_2022C90 +_08119130: .4byte gUnknown_2000002 +_08119134: + movs r0, #1 +_08119136: + strh r0, [r2, #0xc] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _081192E6 +_08119140: + ldr r0, _08119168 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08119158 + b _081192E6 +_08119158: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + b _081192E6 + .align 2, 0 +_08119168: .4byte gUnknown_3005B60 +_0811916C: + ldr r1, _081191AC + ldrh r0, [r1] + subs r0, #0xff + strh r0, [r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #6 + cmp r0, r1 + beq _08119184 + b _081192E6 +_08119184: + ldr r0, _081191B0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xf0 + strh r0, [r1, #0xc] + movs r0, #0x20 + strh r0, [r1, #0xe] + movs r0, #1 + strh r0, [r1, #0x12] + ldr r2, _081191B4 + ldrh r1, [r2] + ldr r0, _081191B8 + ands r0, r1 + strh r0, [r2] + b _081192E6 + .align 2, 0 +_081191AC: .4byte gUnknown_2022ADA +_081191B0: .4byte gUnknown_3005B60 +_081191B4: .4byte gUnknown_20240A0 +_081191B8: .4byte 0x0000FFFE +_081191BC: + lsls r0, r5, #2 + adds r1, r0, r5 + lsls r1, r1, #3 + adds r2, r1, r4 + ldrh r3, [r2, #0xe] + movs r6, #0xe + ldrsh r1, [r2, r6] + mov ip, r0 + cmp r1, #0 + beq _081191D6 + subs r0, r3, #1 + strh r0, [r2, #0xe] + b _081191F6 +_081191D6: + ldrh r1, [r2, #0x10] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _081191F6 + ldrh r0, [r2, #0x12] + subs r0, #1 + strh r0, [r2, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081191F6 + adds r0, r1, #0 + adds r0, #0xff + strh r0, [r2, #0x10] + movs r0, #6 + strh r0, [r2, #0x12] +_081191F6: + ldr r2, _081192C4 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0811920A + ldr r3, _081192C8 + adds r0, r1, r3 + strh r0, [r2] +_0811920A: + mov r6, ip + adds r0, r6, r5 + lsls r0, r0, #3 + adds r1, r0, r4 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08119220 + subs r0, r2, #2 + strh r0, [r1, #0xc] +_08119220: + movs r3, #0 + ldr r6, _081192CC + mov r8, r6 + ldr r7, _081192D0 + adds r4, r1, #0 +_0811922A: + lsls r2, r3, #1 + ldrb r1, [r6, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r7 + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r3, #1 + cmp r3, #0x4f + ble _0811922A + cmp r3, #0x9f + bgt _0811926E + ldr r7, _081192D0 + ldr r6, _081192CC + ldr r1, _081192D4 + mov r2, ip + adds r0, r2, r5 + lsls r0, r0, #3 + adds r4, r0, r1 +_08119254: + lsls r2, r3, #1 + ldrb r1, [r6, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + adds r2, r2, r7 + ldrh r0, [r4, #0xc] + rsbs r0, r0, #0 + strh r0, [r2] + adds r3, #1 + cmp r3, #0x9f + ble _08119254 +_0811926E: + ldr r1, _081192D4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r3, #0xc + ldrsh r2, [r1, r3] + cmp r2, #0 + bne _081192E6 + movs r0, #3 + mov r6, r8 + strb r0, [r6, #0x15] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + str r2, [sp] + ldr r1, _081192D8 + ldr r2, _081192DC + mov r0, sp + bl CpuSet + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r1, #0x9c + lsls r1, r1, #8 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xbc + lsls r1, r1, #7 + movs r0, #0xc + bl sub_08001144 + b _081192E6 + .align 2, 0 +_081192C4: .4byte gUnknown_2022ADA +_081192C8: .4byte 0xFFFFFC04 +_081192CC: .4byte gUnknown_20397C8 +_081192D0: .4byte gUnknown_20388C8 +_081192D4: .4byte gUnknown_3005B60 +_081192D8: .4byte 0x0600E000 +_081192DC: .4byte 0x05000200 +_081192E0: + adds r0, r5, #0 + bl sub_08118ADC +_081192E6: + ldr r0, _0811930C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #4 + beq _08119300 + ldrh r1, [r1, #0x10] + movs r0, #0x52 + bl sub_08001144 +_08119300: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811930C: .4byte gUnknown_3005B60 + thumb_func_end sub_08119094 + + thumb_func_start sub_08119310 +sub_08119310: @ 0x08119310 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0811935C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r7, r0, r1 + movs r1, #8 + ldrsh r0, [r7, r1] + cmp r0, #1 + ble _08119386 + movs r2, #0x10 + ldrsh r0, [r7, r2] + cmp r0, #0 + bne _08119386 + ldr r2, _08119360 + ldrh r1, [r2] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + bne _0811934E + cmp r1, #0x4f + bhi _08119368 +_0811934E: + adds r0, r1, #3 + strh r0, [r2] + ldr r1, _08119364 + ldrh r0, [r1] + subs r0, #3 + strh r0, [r1] + b _08119386 + .align 2, 0 +_0811935C: .4byte gUnknown_3005B60 +_08119360: .4byte gUnknown_2022ACC +_08119364: .4byte gUnknown_2022AD0 +_08119368: + str r5, [sp] + ldr r1, _081193A8 + ldr r4, _081193AC + mov r0, sp + adds r2, r4, #0 + bl CpuSet + str r5, [sp, #4] + add r0, sp, #4 + ldr r1, _081193B0 + adds r2, r4, #0 + bl CpuSet + movs r0, #1 + strh r0, [r7, #0x10] +_08119386: + ldr r0, _081193B4 + lsls r2, r6, #2 + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #8 + ldrsh r1, [r1, r3] + mov sb, r0 + adds r5, r2, #0 + cmp r1, #4 + bls _0811939E + b _081195AA +_0811939E: + lsls r0, r1, #2 + ldr r1, _081193B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081193A8: .4byte 0x0600E000 +_081193AC: .4byte 0x05000200 +_081193B0: .4byte 0x0600F000 +_081193B4: .4byte gUnknown_3005B60 +_081193B8: .4byte _081193BC +_081193BC: @ jump table + .4byte _081193D0 @ case 0 + .4byte _081193E2 @ case 1 + .4byte _08119488 @ case 2 + .4byte _081194CC @ case 3 + .4byte _081195A4 @ case 4 +_081193D0: + adds r0, r5, r6 + lsls r0, r0, #3 + add r0, sb + movs r1, #0x20 + strh r1, [r0, #0xc] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _081195AA +_081193E2: + adds r0, r5, r6 + lsls r0, r0, #3 + mov r2, sb + adds r1, r0, r2 + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081193F8 + b _081195AA +_081193F8: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + ldr r4, _08119478 + ldr r5, _0811947C + ldr r0, [r5] + adds r0, #0x7d + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r3, [r1, #1] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + movs r3, #8 + mov sb, r3 + mov r3, sb + orrs r0, r3 + strb r0, [r1, #1] + ldr r3, [r5] + adds r0, r3, #0 + adds r0, #0x7d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + movs r1, #0x1c + adds r1, r1, r4 + mov r8, r1 + add r0, r8 + ldr r6, _08119480 + str r6, [r0] + adds r3, #0x7e + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + ands r2, r1 + mov r3, sb + orrs r2, r3 + strb r2, [r0, #1] + ldr r0, [r5] + adds r0, #0x7e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + str r6, [r0] + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + ldr r1, _08119484 + movs r0, #0x4a + bl sub_08001144 + b _081195AA + .align 2, 0 +_08119478: .4byte gUnknown_20205AC +_0811947C: .4byte gUnknown_2024140 +_08119480: .4byte sub_08038828 +_08119484: .4byte 0x00003F06 +_08119488: + ldr r1, _081194C0 + ldrh r0, [r1] + subs r0, #0xff + strh r0, [r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #6 + cmp r0, r1 + beq _081194A0 + b _081195AA +_081194A0: + adds r1, r5, r6 + lsls r1, r1, #3 + add r1, sb + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xf0 + strh r0, [r1, #0xc] + movs r0, #0x20 + strh r0, [r1, #0xe] + ldr r2, _081194C4 + ldrh r1, [r2] + ldr r0, _081194C8 + ands r0, r1 + strh r0, [r2] + b _081195AA + .align 2, 0 +_081194C0: .4byte gUnknown_2022ADA +_081194C4: .4byte gUnknown_20240A0 +_081194C8: .4byte 0x0000FFFE +_081194CC: + ldr r2, _08119590 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081194E0 + ldr r3, _08119594 + adds r0, r1, r3 + strh r0, [r2] +_081194E0: + adds r0, r5, r6 + lsls r0, r0, #3 + mov r2, sb + adds r1, r0, r2 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _081194F6 + subs r0, r2, #2 + strh r0, [r1, #0xc] +_081194F6: + movs r3, #0 + ldr r0, _08119598 + mov ip, r0 + ldr r2, _0811959C + mov r8, r2 + mov r7, ip + adds r4, r1, #0 +_08119504: + lsls r2, r3, #1 + ldrb r1, [r7, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + add r2, r8 + ldrh r0, [r4, #0xc] + strh r0, [r2] + adds r3, #1 + cmp r3, #0x4f + ble _08119504 + cmp r3, #0x9f + bgt _08119548 + ldr r0, _0811959C + mov r8, r0 + ldr r7, _08119598 + ldr r1, _081195A0 + adds r0, r5, r6 + lsls r0, r0, #3 + adds r4, r0, r1 +_0811952E: + lsls r2, r3, #1 + ldrb r1, [r7, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + add r2, r8 + ldrh r0, [r4, #0xc] + rsbs r0, r0, #0 + strh r0, [r2] + adds r3, #1 + cmp r3, #0x9f + ble _0811952E +_08119548: + adds r0, r5, r6 + lsls r0, r0, #3 + mov r2, sb + adds r1, r0, r2 + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _081195AA + movs r0, #3 + mov r2, ip + strb r0, [r2, #0x15] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r1, #0x9c + lsls r1, r1, #8 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xbc + lsls r1, r1, #7 + movs r0, #0xc + bl sub_08001144 + b _081195AA + .align 2, 0 +_08119590: .4byte gUnknown_2022ADA +_08119594: .4byte 0xFFFFFC04 +_08119598: .4byte gUnknown_20397C8 +_0811959C: .4byte gUnknown_20388C8 +_081195A0: .4byte gUnknown_3005B60 +_081195A4: + adds r0, r6, #0 + bl sub_08118ADC +_081195AA: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08119310 + + thumb_func_start sub_081195B8 +sub_081195B8: @ 0x081195B8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _081195E0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r6, r1, #0 + cmp r0, #5 + bls _081195D6 + b _08119802 +_081195D6: + lsls r0, r0, #2 + ldr r1, _081195E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081195E0: .4byte gUnknown_3005B60 +_081195E4: .4byte _081195E8 +_081195E8: @ jump table + .4byte _08119600 @ case 0 + .4byte _0811960E @ case 1 + .4byte _0811969C @ case 2 + .4byte _081196F8 @ case 3 + .4byte _08119750 @ case 4 + .4byte _081197FC @ case 5 +_08119600: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r1, #1 + strh r1, [r0, #0xc] + b _081197D4 +_0811960E: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r6 + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08119624 + b _08119802 +_08119624: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + ldr r1, _0811967C + movs r0, #0xa + bl sub_08001144 + ldr r1, _08119680 + movs r0, #0xc + bl sub_08001144 + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + ldr r2, _08119684 + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r1, #0xf8 + lsls r1, r1, #6 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08119688 + movs r0, #0x4a + bl sub_08001144 + ldr r1, _0811968C + ldr r2, _08119690 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _08119694 + movs r0, #0xf0 + strh r0, [r1] + ldr r1, _08119698 + subs r2, #0xc0 + adds r0, r2, #0 + strh r0, [r1] + b _08119802 + .align 2, 0 +_0811967C: .4byte 0x00005C0A +_08119680: .4byte 0x00005E0A +_08119684: .4byte 0x0000F040 +_08119688: .4byte 0x00003F3F +_0811968C: .4byte gUnknown_2022ACA +_08119690: .4byte 0x0000FFD0 +_08119694: .4byte gUnknown_2022ACC +_08119698: .4byte gUnknown_2022AD0 +_0811969C: + ldr r2, _081196EC + ldrh r3, [r2] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + adds r1, r3, r0 + strh r1, [r2] + movs r5, #0xff + lsls r5, r5, #8 + ands r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + beq _081196BE + adds r0, r3, #0 + adds r0, #0xff + strh r0, [r2] +_081196BE: + ldrh r0, [r2] + adds r1, r5, #0 + ands r1, r0 + movs r0, #0x80 + lsls r0, r0, #6 + cmp r1, r0 + beq _081196CE + b _08119802 +_081196CE: + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r6 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xf0 + strh r0, [r1, #0xc] + ldr r2, _081196F0 + ldrh r1, [r2] + ldr r0, _081196F4 + ands r0, r1 + strh r0, [r2] + b _08119802 + .align 2, 0 +_081196EC: .4byte gUnknown_2022ADA +_081196F0: .4byte gUnknown_20240A0 +_081196F4: .4byte 0x0000FFFE +_081196F8: + ldr r3, _08119744 + ldrh r2, [r3] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r2 + movs r1, #0x98 + lsls r1, r1, #7 + cmp r0, r1 + beq _08119712 + movs r1, #0xff + lsls r1, r1, #2 + adds r0, r2, r1 + strh r0, [r3] +_08119712: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r3, r0, r6 + ldrh r1, [r3, #0xc] + movs r2, #0xc + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _08119728 + subs r0, r1, #2 + strh r0, [r3, #0xc] +_08119728: + ldr r1, _08119748 + ldrh r0, [r3, #0xc] + strh r0, [r1] + ldr r2, _0811974C + rsbs r1, r0, #0 + strh r1, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08119802 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + b _08119802 + .align 2, 0 +_08119744: .4byte gUnknown_2022ADA +_08119748: .4byte gUnknown_2022ACC +_0811974C: .4byte gUnknown_2022AD0 +_08119750: + ldr r1, _081197DC + ldrh r0, [r1] + adds r3, r0, #2 + strh r3, [r1] + ldr r1, _081197E0 + ldrh r0, [r1] + adds r0, #2 + strh r0, [r1] + ldr r5, _081197E4 + ldrh r2, [r5] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r2 + movs r1, #0xa0 + lsls r1, r1, #7 + cmp r0, r1 + beq _08119778 + adds r0, r2, #0 + adds r0, #0xff + strh r0, [r5] +_08119778: + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _08119802 + str r0, [sp] + ldr r1, _081197E8 + ldr r2, _081197EC + mov r0, sp + bl CpuSet + movs r0, #0 + bl sub_080011D0 + ldr r1, _081197F0 + ands r1, r0 + movs r0, #0 + bl sub_08001144 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r1, #0x9c + lsls r1, r1, #8 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xbc + lsls r1, r1, #7 + movs r0, #0xc + bl sub_08001144 + ldr r1, _081197F4 + movs r0, #3 + strb r0, [r1, #0x15] + ldr r1, _081197F8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 +_081197D4: + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _08119802 + .align 2, 0 +_081197DC: .4byte gUnknown_2022ACA +_081197E0: .4byte gUnknown_2022AD2 +_081197E4: .4byte gUnknown_2022ADA +_081197E8: .4byte 0x0600E000 +_081197EC: .4byte 0x05000800 +_081197F0: .4byte 0x0000BFFF +_081197F4: .4byte gUnknown_20397C8 +_081197F8: .4byte gUnknown_3005B60 +_081197FC: + adds r0, r4, #0 + bl sub_08118ADC +_08119802: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081195B8 + + thumb_func_start sub_0811980C +sub_0811980C: @ 0x0811980C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + adds r6, r2, #0 + adds r4, r3, #0 + ldr r0, [sp, #0x24] + ldr r7, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov sb, r2 + ldr r5, [sp, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081198DC + ldr r2, [r1] + lsls r4, r4, #2 + adds r2, #4 + adds r2, r2, r4 + ldr r1, _081198E0 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #0xb + ldr r0, [r2] + adds r0, r0, r1 + movs r2, #0x80 + lsls r2, r2, #3 + adds r1, r7, #0 + bl CpuSet + ldr r1, [sp] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r7, #0 + adds r3, r5, #0 + bl sub_0800195C + adds r0, r6, #0 + adds r0, #8 + cmp r6, r0 + bge _081198B8 + mov ip, r0 + mov r2, r8 + lsls r7, r2, #1 +_0811988A: + mov r1, r8 + adds r2, r1, #0 + adds r2, #8 + adds r4, r6, #1 + cmp r1, r2 + bge _081198B2 + mov r0, sl + lsls r3, r0, #0xc + lsls r0, r6, #6 + add r0, sb + adds r6, r7, r0 + subs r1, r2, r1 +_081198A2: + adds r0, r5, #0 + orrs r0, r3 + strh r0, [r6] + adds r5, #1 + adds r6, #2 + subs r1, #1 + cmp r1, #0 + bne _081198A2 +_081198B2: + adds r6, r4, #0 + cmp r6, ip + blt _0811988A +_081198B8: + ldr r1, [sp] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #4 + mov r1, sb + movs r3, #0 + bl sub_08001A14 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081198DC: .4byte gUnknown_2024178 +_081198E0: .4byte gUnknown_2024188 + thumb_func_end sub_0811980C + + thumb_func_start sub_081198E4 +sub_081198E4: @ 0x081198E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + ldr r5, [sp, #0x28] + mov r8, r5 + ldr r5, [sp, #0x2c] + ldr r6, [sp, #0x30] + mov sb, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsls r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + mov r7, r8 + lsls r7, r7, #0x10 + lsrs r6, r7, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sb + lsls r0, r0, #0x18 + mov sb, r0 + ldr r4, _081199A8 + ldr r0, _081199AC + ldr r0, [r0] + lsrs r2, r2, #0x16 + adds r0, #4 + adds r0, r0, r2 + lsrs r3, r3, #0xd + ldr r0, [r0] + adds r0, r0, r3 + str r0, [r4] + movs r0, #0xc0 + lsls r0, r0, #0x13 + adds r6, r6, r0 + str r6, [r4, #4] + ldr r0, _081199B0 + str r0, [r4, #8] + ldr r0, [r4, #8] + adds r2, r7, #0 + lsrs r2, r2, #0x15 + mov r6, sb + lsrs r6, r6, #0xf + subs r4, r2, r6 + lsrs r0, r1, #0x18 + adds r1, r0, #0 + adds r1, #8 + cmp r0, r1 + bge _08119998 + mov sb, r1 + mov r7, ip + lsls r7, r7, #1 + mov r8, r7 + lsls r5, r5, #0xb + str r5, [sp] +_08119960: + mov r2, ip + adds r3, r2, #0 + adds r3, #8 + adds r5, r0, #1 + cmp r2, r3 + bge _08119992 + mov r1, sl + lsls r6, r1, #0xc + lsls r0, r0, #6 + movs r7, #0xc0 + lsls r7, r7, #0x13 + adds r0, r0, r7 + ldr r1, [sp] + adds r0, r1, r0 + mov r7, r8 + adds r1, r7, r0 + subs r2, r3, r2 +_08119982: + adds r0, r4, #0 + orrs r0, r6 + strh r0, [r1] + adds r4, #1 + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bne _08119982 +_08119992: + adds r0, r5, #0 + cmp r0, sb + blt _08119960 +_08119998: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081199A8: .4byte 0x040000D4 +_081199AC: .4byte gUnknown_2024178 +_081199B0: .4byte 0x80000400 + thumb_func_end sub_081198E4 + + thumb_func_start sub_081199B4 +sub_081199B4: @ 0x081199B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r0, _081199D8 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081199DC + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_081199EC + b _081199E4 + .align 2, 0 +_081199D8: .4byte gUnknown_2037230 +_081199DC: + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_08119C18 +_081199E4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081199B4 + + thumb_func_start sub_081199EC +sub_081199EC: @ 0x081199EC + push {r4, lr} + sub sp, #4 + mov r1, sp + strb r0, [r1] + ldr r4, _08119A18 + mov r0, sp + bl sub_08119A1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + mov r1, sp + ldrb r1, [r1] + ldr r2, [r0] + adds r0, r1, #0 + bl _call_via_r2 + add sp, #4 + thumb_func_end sub_081199EC + + thumb_func_start sub_08119A10 +sub_08119A10: @ 0x08119A10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08119A18: .4byte gUnknown_8573030 + thumb_func_end sub_08119A10 + + thumb_func_start sub_08119A1C +sub_08119A1C: @ 0x08119A1C + push {r4, lr} + adds r4, r0, #0 + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + ldrb r1, [r4] + cmp r1, #0 + bne _08119A44 + strb r0, [r4] + ldr r2, _08119A40 + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _08119A58 + strb r1, [r2, #2] + movs r0, #0 + b _08119A6C + .align 2, 0 +_08119A40: .4byte gUnknown_2037230 +_08119A44: + ldr r2, _08119A60 + cmp r1, r3 + beq _08119A68 + ldrb r0, [r2, #2] + cmp r0, #2 + beq _08119A68 + ldrb r0, [r2, #0xb] + cmp r0, #0 + beq _08119A64 + strb r3, [r4] +_08119A58: + movs r0, #2 + strb r0, [r2, #2] + movs r0, #3 + b _08119A6C + .align 2, 0 +_08119A60: .4byte gUnknown_2037230 +_08119A64: + movs r0, #1 + b _08119A6A +_08119A68: + movs r0, #2 +_08119A6A: + strb r0, [r2, #2] +_08119A6C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08119A1C + + thumb_func_start sub_08119A74 +sub_08119A74: @ 0x08119A74 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B174 + bl sub_0811A978 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08119A74 + + thumb_func_start sub_08119A88 +sub_08119A88: @ 0x08119A88 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08119AB8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08119ABC + adds r4, r0, r1 + ldrb r1, [r4, #0x1e] + adds r0, r5, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08119AC0 + adds r0, r5, #0 + bl sub_0808B18C + bl sub_0811A978 + b _08119ACA + .align 2, 0 +_08119AB8: .4byte gUnknown_2037230 +_08119ABC: .4byte gUnknown_2036FF0 +_08119AC0: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bl sub_08119A74 +_08119ACA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08119A88 + + thumb_func_start sub_08119AD0 +sub_08119AD0: @ 0x08119AD0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + ldr r6, _08119B04 + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08119B08 + adds r4, r0, r1 + ldrb r1, [r4, #0x1e] + adds r0, r5, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08119B16 + ldrb r0, [r6, #0xb] + cmp r0, #0 + beq _08119B0C + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08119B94 + b _08119B8A + .align 2, 0 +_08119B04: .4byte gUnknown_2037230 +_08119B08: .4byte gUnknown_2036FF0 +_08119B0C: + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_08119A74 + b _08119B8A +_08119B16: + adds r0, r5, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _08119B66 + cmp r4, #6 + bne _08119B38 + adds r0, r5, #0 + bl sub_0808B1A4 + b _08119B8A +_08119B38: + bl sub_0811A978 + cmp r4, #4 + bne _08119B54 + adds r0, r5, #0 + bl sub_0808AC88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08119B54 + adds r0, r5, #0 + bl sub_0808B120 + b _08119B8A +_08119B54: + subs r0, r4, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08119B8A + adds r0, r7, #0 + bl sub_0808B0FC + b _08119B8A +_08119B66: + ldr r1, _08119B90 + ldrb r0, [r6, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r7, #0 + bl _call_via_r1 + ldrb r2, [r6, #0xa] + lsls r0, r2, #0x18 + lsrs r1, r0, #0x18 + lsrs r0, r0, #0x19 + adds r0, r2, r0 + strb r0, [r6, #0xb] + cmp r1, #1 + bhi _08119B8A + adds r0, r2, #1 + strb r0, [r6, #0xa] +_08119B8A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08119B90: .4byte gUnknown_8573040 + thumb_func_end sub_08119AD0 + + thumb_func_start sub_08119B94 +sub_08119B94: @ 0x08119B94 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + ldr r6, _08119BCC + ldrb r0, [r6, #0xb] + cmp r0, #0 + beq _08119BAA + subs r0, #1 + strb r0, [r6, #0xb] + strb r0, [r6, #0xa] +_08119BAA: + adds r0, r5, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _08119BFE + cmp r4, #6 + bne _08119BD0 + adds r0, r5, #0 + bl sub_0808B1A4 + b _08119C0E + .align 2, 0 +_08119BCC: .4byte gUnknown_2037230 +_08119BD0: + bl sub_0811A978 + cmp r4, #4 + bne _08119BEC + adds r0, r5, #0 + bl sub_0808AC88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08119BEC + adds r0, r5, #0 + bl sub_0808B120 + b _08119C0E +_08119BEC: + subs r0, r4, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08119C0E + adds r0, r7, #0 + bl sub_0808B0FC + b _08119C0E +_08119BFE: + ldr r0, _08119C14 + ldrb r1, [r6, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r7, #0 + bl _call_via_r1 +_08119C0E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08119C14: .4byte gUnknown_8573040 + thumb_func_end sub_08119B94 + + thumb_func_start sub_08119C18 +sub_08119C18: @ 0x08119C18 + push {r4, lr} + sub sp, #4 + mov r3, sp + strb r0, [r3] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _08119C4C + mov r0, sp + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r4 + mov r1, sp + ldrb r1, [r1] + ldr r2, [r0] + adds r0, r1, #0 + bl _call_via_r2 + add sp, #4 + thumb_func_end sub_08119C18 + + thumb_func_start sub_08119C44 +sub_08119C44: @ 0x08119C44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08119C4C: .4byte gUnknown_857304C + thumb_func_end sub_08119C44 + + thumb_func_start sub_08119C50 +sub_08119C50: @ 0x08119C50 + push {r4, lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _08119C74 + ldr r3, _08119C78 + ldrb r3, [r3, #8] + lsls r3, r3, #2 + adds r3, r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08119C74: .4byte gUnknown_8573080 +_08119C78: .4byte gUnknown_2037230 + thumb_func_end sub_08119C50 + + thumb_func_start sub_08119C7C +sub_08119C7C: @ 0x08119C7C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08119CB0 + movs r0, #0 + strb r0, [r2, #0xa] + ldrb r1, [r4] + cmp r1, #0 + bne _08119CBC + movs r0, #2 + ands r0, r6 + cmp r0, #0 + beq _08119CB4 + strb r3, [r4] + strb r1, [r2, #2] + movs r0, #2 + strb r0, [r2, #8] + movs r0, #3 + b _08119D10 + .align 2, 0 +_08119CB0: .4byte gUnknown_2037230 +_08119CB4: + strb r3, [r4] + strb r1, [r2, #2] + movs r0, #0 + b _08119D10 +_08119CBC: + cmp r1, r3 + bne _08119CE2 + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _08119CDA + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _08119CDA + adds r0, #1 + strb r0, [r2, #0xb] + movs r0, #4 + strb r0, [r2, #8] + movs r0, #0xb + b _08119D10 +_08119CDA: + ldrb r0, [r4] + ldr r2, _08119D08 + cmp r0, r3 + beq _08119D0C +_08119CE2: + ldr r0, _08119D08 + ldrb r1, [r0, #2] + adds r2, r0, #0 + cmp r1, #2 + beq _08119D0C + movs r1, #0 + movs r0, #1 + strb r0, [r2, #8] + ldrb r0, [r4] + strb r0, [r2, #9] + strb r1, [r2, #2] + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08119D10 + .align 2, 0 +_08119D08: .4byte gUnknown_2037230 +_08119D0C: + movs r0, #2 + strb r0, [r2, #2] +_08119D10: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08119C7C + + thumb_func_start sub_08119D18 +sub_08119D18: @ 0x08119D18 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _08119D40 + ldrb r0, [r4, #9] + strb r0, [r5] + ldrb r0, [r4, #0xa] + adds r0, #1 + strb r0, [r4, #0xa] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bls _08119D44 + movs r0, #1 + strb r0, [r4, #2] + movs r0, #0 + strb r0, [r4, #8] + bl sub_0811A978 + movs r0, #1 + b _08119D8A + .align 2, 0 +_08119D40: .4byte gUnknown_2037230 +_08119D44: + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_0811A580 + ldrb r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _08119D86 + bl sub_0811A978 + movs r0, #1 + strb r0, [r4, #0xb] + adds r0, r6, #0 + bl sub_08093170 + ldrb r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _08119D7A + movs r0, #6 + strb r0, [r4, #8] + movs r0, #9 + b _08119D8A +_08119D7A: + movs r0, #2 + strb r0, [r4, #2] + movs r0, #5 + strb r0, [r4, #8] + movs r0, #8 + b _08119D8A +_08119D86: + strb r6, [r5] + movs r0, #0 +_08119D8A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08119D18 + + thumb_func_start sub_08119D90 +sub_08119D90: @ 0x08119D90 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + lsls r4, r2, #0x10 + lsrs r4, r4, #0x10 + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _08119DDC + ldrb r1, [r5, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08119DE0 + adds r1, r0, r1 + movs r0, #0 + strb r0, [r5, #2] + movs r0, #2 + ands r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #0 + bne _08119DE4 + strb r4, [r5, #0xa] + ldrb r0, [r1, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08119DEA + strb r6, [r7] + strb r0, [r5, #8] + bl sub_0811A978 + movs r0, #4 + b _08119E28 + .align 2, 0 +_08119DDC: .4byte gUnknown_2037230 +_08119DE0: .4byte gUnknown_2036FF0 +_08119DE4: + ldrb r0, [r5, #0xa] + adds r0, #1 + strb r0, [r5, #0xa] +_08119DEA: + ldr r1, _08119E00 + ldrb r0, [r1, #0xa] + cmp r0, #0x27 + bls _08119E04 + strb r6, [r7] + movs r0, #3 + strb r0, [r1, #8] + bl sub_0811A978 + movs r0, #6 + b _08119E28 + .align 2, 0 +_08119E00: .4byte gUnknown_2037230 +_08119E04: + ldrb r0, [r7] + cmp r0, r6 + bne _08119E1A + movs r0, #2 + strb r0, [r1, #2] + movs r0, #4 + strb r0, [r1, #8] + bl sub_0811A978 + movs r0, #0xa + b _08119E28 +_08119E1A: + cmp r0, #0 + beq _08119E24 + movs r0, #1 + strb r0, [r1, #2] + b _08119E26 +_08119E24: + strb r6, [r7] +_08119E26: + movs r0, #5 +_08119E28: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08119D90 + + thumb_func_start sub_08119E30 +sub_08119E30: @ 0x08119E30 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r2, r5, #0 + ldr r4, _08119E90 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08119E94 + adds r7, r0, r1 + movs r0, #2 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _08119EA2 + bl sub_0811A978 + ldrb r0, [r7, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08119E98 + movs r0, #2 + strb r0, [r4, #8] + adds r0, r6, #0 + mov r1, sb + mov r2, r8 + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08119EC6 + .align 2, 0 +_08119E90: .4byte gUnknown_2037230 +_08119E94: .4byte gUnknown_2036FF0 +_08119E98: + strb r5, [r6] + strb r0, [r4, #2] + strb r0, [r4, #8] + movs r0, #4 + b _08119EC6 +_08119EA2: + ldrb r0, [r6] + cmp r0, #0 + bne _08119EAC + strb r5, [r6] + b _08119EB8 +_08119EAC: + cmp r0, r2 + beq _08119EBE + ldrb r0, [r4, #2] + cmp r0, #2 + beq _08119EBE + movs r0, #1 +_08119EB8: + strb r0, [r4, #2] + movs r0, #6 + b _08119EC6 +_08119EBE: + ldr r1, _08119ED4 + movs r0, #2 + strb r0, [r1, #2] + movs r0, #7 +_08119EC6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08119ED4: .4byte gUnknown_2037230 + thumb_func_end sub_08119E30 + + thumb_func_start sub_08119ED8 +sub_08119ED8: @ 0x08119ED8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r2, r5, #0 + ldr r4, _08119F34 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08119F38 + adds r7, r0, r1 + movs r0, #2 + mov sb, r0 + movs r0, #2 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _08119F70 + bl sub_0811A978 + ldrb r0, [r7, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08119F5C + strb r1, [r4, #8] + ldrb r0, [r6] + cmp r0, #0 + bne _08119F3C + strb r5, [r6] + b _08119F46 + .align 2, 0 +_08119F34: .4byte gUnknown_2037230 +_08119F38: .4byte gUnknown_2036FF0 +_08119F3C: + cmp r0, r5 + beq _08119F4C + ldrb r0, [r4, #2] + cmp r0, #2 + beq _08119F4C +_08119F46: + strb r1, [r4, #2] + movs r0, #4 + b _08119FA0 +_08119F4C: + ldr r1, _08119F58 + movs r0, #2 + strb r0, [r1, #2] + movs r0, #0xc + b _08119FA0 + .align 2, 0 +_08119F58: .4byte gUnknown_2037230 +_08119F5C: + mov r0, sb + strb r0, [r4, #8] + adds r0, r6, #0 + mov r1, sl + mov r2, r8 + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08119FA0 +_08119F70: + ldrb r0, [r6] + cmp r0, #0 + bne _08119F86 + strb r5, [r6] + mov r1, sb + strb r1, [r4, #8] + strb r0, [r4, #2] + bl sub_0811A978 + movs r0, #5 + b _08119FA0 +_08119F86: + cmp r2, r0 + beq _08119F98 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _08119F98 + movs r0, #0 + strb r0, [r4, #2] + movs r0, #5 + b _08119FA0 +_08119F98: + ldr r1, _08119FB0 + movs r0, #2 + strb r0, [r1, #2] + movs r0, #0xa +_08119FA0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08119FB0: .4byte gUnknown_2037230 + thumb_func_end sub_08119ED8 + + thumb_func_start sub_08119FB4 +sub_08119FB4: @ 0x08119FB4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r6, _0811A008 + ldrb r1, [r6, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A00C + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #1] + ldrb r1, [r0, #0x18] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + bl sub_0808E930 + movs r0, #0 + strb r0, [r6, #8] + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0811A008: .4byte gUnknown_2037230 +_0811A00C: .4byte gUnknown_2036FF0 + thumb_func_end sub_08119FB4 + + thumb_func_start sub_0811A010 +sub_0811A010: @ 0x0811A010 + push {r4, lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _0811A030 + movs r3, #0 + strb r3, [r4, #8] + bl sub_08119C50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811A030: .4byte gUnknown_2037230 + thumb_func_end sub_0811A010 + + thumb_func_start sub_0811A034 +sub_0811A034: @ 0x0811A034 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B174 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811A034 + + thumb_func_start sub_0811A044 +sub_0811A044: @ 0x0811A044 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A078 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A07C + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A06A + ldrb r0, [r5, #0x18] + lsrs r4, r0, #4 +_0811A06A: + adds r0, r4, #0 + bl sub_0808B174 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A078: .4byte gUnknown_2037230 +_0811A07C: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A044 + + thumb_func_start sub_0811A080 +sub_0811A080: @ 0x0811A080 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + ldr r0, _0811A0B0 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A0B4 + adds r4, r0, r1 + ldrb r1, [r4, #0x1e] + adds r0, r5, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A0B8 + ldrb r0, [r4, #0x18] + lsrs r0, r0, #4 + bl sub_0811A034 + b _0811A10A + .align 2, 0 +_0811A0B0: .4byte gUnknown_2037230 +_0811A0B4: .4byte gUnknown_2036FF0 +_0811A0B8: + adds r0, r5, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0811A104 + cmp r4, #6 + bne _0811A0DA + adds r0, r5, #0 + bl sub_0808B1A4 + b _0811A10A +_0811A0DA: + cmp r4, #4 + bne _0811A0F2 + adds r0, r5, #0 + bl sub_0808AC88 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A0F2 + adds r0, r5, #0 + bl sub_0808B120 + b _0811A10A +_0811A0F2: + subs r0, r4, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0811A10A + adds r0, r6, #0 + bl sub_0808B0FC + b _0811A10A +_0811A104: + adds r0, r6, #0 + bl sub_0808B0B4 +_0811A10A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0811A080 + + thumb_func_start sub_0811A110 +sub_0811A110: @ 0x0811A110 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A144 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A148 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A136 + ldrb r0, [r5, #0x18] + lsrs r4, r0, #4 +_0811A136: + adds r0, r4, #0 + bl sub_0808B224 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A144: .4byte gUnknown_2037230 +_0811A148: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A110 + + thumb_func_start sub_0811A14C +sub_0811A14C: @ 0x0811A14C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A180 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A184 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A172 + ldrb r0, [r5, #0x18] + lsrs r4, r0, #4 +_0811A172: + adds r0, r4, #0 + bl sub_0808B23C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A180: .4byte gUnknown_2037230 +_0811A184: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A14C + + thumb_func_start sub_0811A188 +sub_0811A188: @ 0x0811A188 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A1BC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A1C0 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A1AE + ldrb r0, [r5, #0x18] + lsrs r4, r0, #4 +_0811A1AE: + adds r0, r4, #0 + bl sub_0808B20C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A1BC: .4byte gUnknown_2037230 +_0811A1C0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A188 + + thumb_func_start sub_0811A1C4 +sub_0811A1C4: @ 0x0811A1C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A1F8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A1FC + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A1EA + ldrb r0, [r5, #0x18] + lsrs r4, r0, #4 +_0811A1EA: + adds r0, r4, #0 + bl sub_0808B254 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A1F8: .4byte gUnknown_2037230 +_0811A1FC: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A1C4 + + thumb_func_start sub_0811A200 +sub_0811A200: @ 0x0811A200 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0811A22C + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A230 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A234 + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + bl sub_0811A1C4 + b _0811A26E + .align 2, 0 +_0811A22C: .4byte gUnknown_2037230 +_0811A230: .4byte gUnknown_2036FF0 +_0811A234: + adds r0, r4, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0811A268 + cmp r1, #9 + beq _0811A268 + cmp r1, #6 + bne _0811A252 + adds r0, r4, #0 + bl sub_0808B29C + b _0811A26E +_0811A252: + subs r0, r1, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0811A26E + cmp r1, #0xb + bhi _0811A268 + adds r0, r4, #0 + bl sub_0811A1C4 + b _0811A26E +_0811A268: + adds r0, r4, #0 + bl sub_0808B278 +_0811A26E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0811A200 + + thumb_func_start sub_0811A274 +sub_0811A274: @ 0x0811A274 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0 + beq _0811A2A8 + cmp r0, #7 + beq _0811A2D4 + cmp r0, #9 + bls _0811A2A0 + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0811A814 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A2A8 +_0811A2A0: + adds r0, r5, #0 + bl sub_0811A044 + b _0811A2D4 +_0811A2A8: + ldr r0, _0811A2DC + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0811A2E0 + adds r4, r4, r0 + movs r0, #0x22 + bl sub_080A306C + ldrb r0, [r4, #1] + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #1] + adds r0, r5, #0 + bl sub_08092E84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0808B048 +_0811A2D4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811A2DC: .4byte gUnknown_2037230 +_0811A2E0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A274 + + thumb_func_start sub_0811A2E4 +sub_0811A2E4: @ 0x0811A2E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808B2C0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811A2E4 + + thumb_func_start sub_0811A2F4 +sub_0811A2F4: @ 0x0811A2F4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r7, _0811A324 + ldrb r1, [r7, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A328 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A32C + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + bl sub_0808B20C + b _0811A37C + .align 2, 0 +_0811A324: .4byte gUnknown_2037230 +_0811A328: .4byte gUnknown_2036FF0 +_0811A32C: + adds r0, r4, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0811A372 + cmp r1, #6 + bne _0811A34E + adds r0, r4, #0 + bl sub_0808B29C + b _0811A37C +_0811A34E: + cmp r1, #9 + beq _0811A362 + cmp r1, #4 + bhi _0811A37C + ldrb r0, [r5, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A36A +_0811A362: + adds r0, r4, #0 + bl sub_0808B20C + b _0811A37C +_0811A36A: + adds r0, r4, #0 + bl sub_0808B2E4 + b _0811A37C +_0811A372: + adds r0, r6, #0 + bl sub_0808B320 + movs r0, #2 + strb r0, [r7, #2] +_0811A37C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811A2F4 + + thumb_func_start sub_0811A384 +sub_0811A384: @ 0x0811A384 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r7, _0811A3B4 + ldrb r1, [r7, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A3B8 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A3BC + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + bl sub_0808B224 + b _0811A40C + .align 2, 0 +_0811A3B4: .4byte gUnknown_2037230 +_0811A3B8: .4byte gUnknown_2036FF0 +_0811A3BC: + adds r0, r4, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0811A402 + cmp r1, #6 + bne _0811A3DE + adds r0, r4, #0 + bl sub_0808B29C + b _0811A40C +_0811A3DE: + cmp r1, #9 + beq _0811A3F2 + cmp r1, #4 + bhi _0811A40C + ldrb r0, [r5, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A3FA +_0811A3F2: + adds r0, r4, #0 + bl sub_0808B20C + b _0811A40C +_0811A3FA: + adds r0, r4, #0 + bl sub_0808B2E4 + b _0811A40C +_0811A402: + adds r0, r6, #0 + bl sub_0808B308 + movs r0, #2 + strb r0, [r7, #2] +_0811A40C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811A384 + + thumb_func_start sub_0811A414 +sub_0811A414: @ 0x0811A414 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r0, _0811A444 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811A448 + adds r5, r0, r1 + ldrb r1, [r5, #0x1e] + adds r0, r4, #0 + bl sub_0811A7C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A44C + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + bl sub_0808B23C + b _0811A486 + .align 2, 0 +_0811A444: .4byte gUnknown_2037230 +_0811A448: .4byte gUnknown_2036FF0 +_0811A44C: + adds r0, r4, #0 + bl sub_0811A688 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0811A480 + cmp r1, #6 + bne _0811A46E + adds r0, r4, #0 + bl sub_0808B1A4 + b _0811A486 +_0811A46E: + subs r0, r1, #5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0811A486 + adds r0, r4, #0 + bl sub_0808B23C + b _0811A486 +_0811A480: + adds r0, r6, #0 + bl sub_0808B338 +_0811A486: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0811A414 + + thumb_func_start sub_0811A48C +sub_0811A48C: @ 0x0811A48C + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + ldr r0, _0811A4B0 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811A4AA + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0811A4B4 +_0811A4AA: + pop {r0} + bx r0 + .align 2, 0 +_0811A4B0: .4byte gUnknown_2037230 + thumb_func_end sub_0811A48C + + thumb_func_start sub_0811A4B4 +sub_0811A4B4: @ 0x0811A4B4 + push {r4, r5, lr} + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r0, r5, #0 + bl sub_0811A648 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r4, _0811A4DC + ldr r0, [r4, #0xc] + movs r1, #0xf + ands r0, r1 + cmp r2, r0 + bne _0811A4E0 + ldrb r0, [r4, #0x14] + cmp r0, #0xfe + bhi _0811A4EA + adds r0, #1 + strb r0, [r4, #0x14] + b _0811A4EA + .align 2, 0 +_0811A4DC: .4byte gUnknown_2037230 +_0811A4E0: + adds r0, r2, #0 + bl sub_0811A5D0 + movs r0, #0 + strb r0, [r4, #0xb] +_0811A4EA: + movs r0, #0xf + adds r2, r5, #0 + ands r2, r0 + ldr r4, _0811A508 + ldr r0, [r4, #0x10] + movs r1, #0xf + ands r0, r1 + cmp r2, r0 + bne _0811A50C + ldrb r0, [r4, #0x1c] + cmp r0, #0xfe + bhi _0811A516 + adds r0, #1 + strb r0, [r4, #0x1c] + b _0811A516 + .align 2, 0 +_0811A508: .4byte gUnknown_2037230 +_0811A50C: + adds r0, r2, #0 + bl sub_0811A60C + movs r0, #0 + strb r0, [r4, #0xb] +_0811A516: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0811A4B4 + + thumb_func_start sub_0811A51C +sub_0811A51C: @ 0x0811A51C + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + movs r2, #0 + ldrb r0, [r3] + cmp r0, #0 + beq _0811A546 + ldr r5, _0811A560 +_0811A52C: + adds r0, r2, r5 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _0811A55C + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0811A52C +_0811A546: + movs r2, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _0811A576 + ldr r3, _0811A564 +_0811A550: + adds r0, r2, r3 + adds r1, r4, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _0811A568 +_0811A55C: + movs r0, #0 + b _0811A578 + .align 2, 0 +_0811A560: .4byte gUnknown_2037244 +_0811A564: .4byte gUnknown_203724C +_0811A568: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0811A550 +_0811A576: + movs r0, #1 +_0811A578: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A51C + + thumb_func_start sub_0811A580 +sub_0811A580: @ 0x0811A580 + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 +_0811A586: + ldr r0, _0811A5B8 + adds r4, r5, r0 + ldr r0, _0811A5BC + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x10] + ldr r0, [r4, #8] + ands r1, r0 + ldr r0, [r4, #0xc] + ands r2, r0 + ldr r0, [r4] + cmp r1, r0 + bne _0811A5C0 + ldr r0, [r4, #4] + cmp r2, r0 + bne _0811A5C0 + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl sub_0811A51C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A5C0 + ldrb r0, [r4, #0x18] + b _0811A5CA + .align 2, 0 +_0811A5B8: .4byte gUnknown_85730A4 +_0811A5BC: .4byte gUnknown_2037230 +_0811A5C0: + adds r5, #0x1c + adds r6, #1 + cmp r6, #3 + bls _0811A586 + movs r0, #0 +_0811A5CA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0811A580 + + thumb_func_start sub_0811A5D0 +sub_0811A5D0: @ 0x0811A5D0 + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _0811A608 + ldr r2, [r3, #0xc] + lsls r2, r2, #4 + movs r1, #0xf0 + lsls r1, r1, #0x14 + ands r1, r0 + lsrs r1, r1, #0x18 + orrs r2, r1 + str r2, [r3, #0xc] + movs r1, #7 + adds r4, r3, #0 + adds r3, #0x14 +_0811A5EC: + adds r2, r1, r3 + subs r1, #1 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + bne _0811A5EC + movs r0, #1 + strb r0, [r4, #0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811A608: .4byte gUnknown_2037230 + thumb_func_end sub_0811A5D0 + + thumb_func_start sub_0811A60C +sub_0811A60C: @ 0x0811A60C + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _0811A644 + ldr r2, [r3, #0x10] + lsls r2, r2, #4 + movs r1, #0xf0 + lsls r1, r1, #0x14 + ands r1, r0 + lsrs r1, r1, #0x18 + orrs r2, r1 + str r2, [r3, #0x10] + movs r1, #7 + adds r4, r3, #0 + adds r3, #0x1c +_0811A628: + adds r2, r1, r3 + subs r1, #1 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + bne _0811A628 + movs r0, #1 + strb r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811A644: .4byte gUnknown_2037230 + thumb_func_end sub_0811A60C + + thumb_func_start sub_0811A648 +sub_0811A648: @ 0x0811A648 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r1, #0 + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0811A65C + movs r0, #2 + b _0811A682 +_0811A65C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0811A668 + movs r0, #1 + b _0811A682 +_0811A668: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0811A674 + movs r0, #3 + b _0811A682 +_0811A674: + movs r0, #0x10 + ands r2, r0 + cmp r2, #0 + bne _0811A680 + movs r0, #0 + b _0811A682 +_0811A680: + movs r0, #4 +_0811A682: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A648 + + thumb_func_start sub_0811A688 +sub_0811A688: @ 0x0811A688 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0811A6EC + ldrb r0, [r0, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0811A6F0 + adds r4, r4, r0 + ldrh r1, [r4, #0x10] + add r0, sp, #4 + strh r1, [r0] + ldrh r0, [r4, #0x12] + mov r5, sp + adds r5, #6 + strh r0, [r5] + adds r0, r6, #0 + add r1, sp, #4 + adds r2, r5, #0 + bl sub_080928AC + add r0, sp, #4 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r1, sp, #4 + 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_0811A6F4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0811A6EC: .4byte gUnknown_2037230 +_0811A6F0: .4byte gUnknown_2036FF0 + thumb_func_end sub_0811A688 + + thumb_func_start sub_0811A6F4 +sub_0811A6F4: @ 0x0811A6F4 + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r5, r4, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + str r5, [sp] + bl sub_0808A9F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bhi _0811A734 + cmp r4, #0 + bne _0811A730 + adds r0, r5, #0 + bl sub_0811A768 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A72C + movs r4, #2 +_0811A72C: + cmp r4, #0 + beq _0811A734 +_0811A730: + bl sub_0811A7A0 +_0811A734: + adds r0, r4, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A6F4 + + thumb_func_start sub_0811A740 +sub_0811A740: @ 0x0811A740 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811A768 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A758 + ldr r0, _0811A75C + ldrb r0, [r0, #0x17] + cmp r0, #8 + bne _0811A760 +_0811A758: + movs r0, #1 + b _0811A762 + .align 2, 0 +_0811A75C: .4byte gUnknown_2036FB8 +_0811A760: + movs r0, #0 +_0811A762: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A740 + + thumb_func_start sub_0811A768 +sub_0811A768: @ 0x0811A768 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08089334 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A792 + adds r0, r4, #0 + bl sub_080890B4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A796 + bl sub_0808B5D8 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _0811A796 +_0811A792: + movs r0, #1 + b _0811A798 +_0811A796: + movs r0, #0 +_0811A798: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A768 + + thumb_func_start sub_0811A7A0 +sub_0811A7A0: @ 0x0811A7A0 + push {lr} + ldr r0, _0811A7BC + ldrb r0, [r0] + cmp r0, #0 + beq _0811A7B6 + ldr r1, _0811A7C0 + ldrb r0, [r1] + cmp r0, #0x63 + bhi _0811A7B6 + adds r0, #1 + strb r0, [r1] +_0811A7B6: + pop {r0} + bx r0 + .align 2, 0 +_0811A7BC: .4byte gUnknown_203A820 +_0811A7C0: .4byte gUnknown_203A821 + thumb_func_end sub_0811A7A0 + + thumb_func_start sub_0811A7C4 +sub_0811A7C4: @ 0x0811A7C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r5, r4, #0 + movs r1, #0xfd + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0811A7EE + adds r0, r4, #0 + bl sub_080892CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A806 + adds r0, r4, #0 + bl sub_080892F4 + b _0811A800 +_0811A7EE: + adds r0, r5, #0 + bl sub_080892E0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A806 + adds r0, r5, #0 + bl sub_08089308 +_0811A800: + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A80A +_0811A806: + movs r0, #0 + b _0811A80C +_0811A80A: + movs r0, #1 +_0811A80C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A7C4 + + thumb_func_start sub_0811A814 +sub_0811A814: @ 0x0811A814 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + lsls r1, r1, #0x18 + movs r3, #0xff + lsls r3, r3, #0x18 + adds r1, r1, r3 + lsrs r1, r1, #0x18 + cmp r1, #1 + bhi _0811A834 + cmp r0, #0xa + beq _0811A83C + cmp r0, #0xc + bne _0811A840 + b _0811A83C +_0811A834: + cmp r2, #0xb + beq _0811A83C + cmp r2, #0xd + bne _0811A840 +_0811A83C: + movs r0, #0 + b _0811A842 +_0811A840: + movs r0, #1 +_0811A842: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A814 + + thumb_func_start sub_0811A848 +sub_0811A848: @ 0x0811A848 + push {r4, lr} + sub sp, #4 + ldr r0, _0811A884 + ldrb r1, [r0] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + bne _0811A888 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811A768 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811A888 + movs r0, #0 + b _0811A88A + .align 2, 0 +_0811A884: .4byte gUnknown_2037230 +_0811A888: + movs r0, #1 +_0811A88A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A848 + + thumb_func_start sub_0811A894 +sub_0811A894: @ 0x0811A894 + push {lr} + movs r0, #4 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A8C8 + ldr r2, _0811A8C0 + ldr r0, _0811A8C4 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x1e] + bl sub_080892B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811A8C8 + movs r0, #0 + b _0811A8CA + .align 2, 0 +_0811A8C0: .4byte gUnknown_2036FF0 +_0811A8C4: .4byte gUnknown_2037230 +_0811A8C8: + movs r0, #1 +_0811A8CA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811A894 + + thumb_func_start sub_0811A8D0 +sub_0811A8D0: @ 0x0811A8D0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0811A8F8 + movs r0, #0 + strb r0, [r1] + ldr r0, _0811A8FC + ldrb r1, [r0] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + beq _0811A900 + movs r0, #1 + bl sub_0808AD30 + bl sub_08085168 + bl sub_080850EC + b _0811A914 + .align 2, 0 +_0811A8F8: .4byte gUnknown_2036FE8 +_0811A8FC: .4byte gUnknown_2037230 +_0811A900: + adds r0, r2, #0 + bl sub_0808AD30 + ldr r4, _0811A91C + adds r0, r4, #0 + bl sub_0808515C + adds r0, r4, #0 + bl sub_0808522C +_0811A914: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811A91C: .4byte 0x00000193 + thumb_func_end sub_0811A8D0 + + thumb_func_start sub_0811A920 +sub_0811A920: @ 0x0811A920 + push {lr} + ldr r2, _0811A95C + movs r3, #0 + strb r3, [r2, #8] + strb r3, [r2, #9] + strb r3, [r2, #0xa] + strb r3, [r2, #0xb] + str r0, [r2, #0xc] + str r1, [r2, #0x10] + movs r1, #0 + adds r2, #0x14 +_0811A936: + adds r0, r1, r2 + strb r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _0811A936 + movs r1, #0 + ldr r3, _0811A960 + movs r2, #0 +_0811A94A: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _0811A94A + pop {r0} + bx r0 + .align 2, 0 +_0811A95C: .4byte gUnknown_2037230 +_0811A960: .4byte gUnknown_203724C + thumb_func_end sub_0811A920 + + thumb_func_start sub_0811A964 +sub_0811A964: @ 0x0811A964 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0811A974 + strb r0, [r2, #0xa] + lsrs r1, r0, #1 + adds r0, r0, r1 + strb r0, [r2, #0xb] + bx lr + .align 2, 0 +_0811A974: .4byte gUnknown_2037230 + thumb_func_end sub_0811A964 + + thumb_func_start sub_0811A978 +sub_0811A978: @ 0x0811A978 + ldr r1, _0811A984 + movs r0, #0 + strb r0, [r1, #0xa] + strb r0, [r1, #0xb] + bx lr + .align 2, 0 +_0811A984: .4byte gUnknown_2037230 + thumb_func_end sub_0811A978 + + thumb_func_start sub_0811A988 +sub_0811A988: @ 0x0811A988 + push {lr} + sub sp, #8 + ldr r1, _0811A9B0 + mov r0, sp + movs r2, #6 + bl memcpy + ldr r2, _0811A9B4 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0811A9B8 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + add r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + b _0811A9D2 + .align 2, 0 +_0811A9B0: .4byte gUnknown_857309C +_0811A9B4: .4byte gUnknown_2037230 +_0811A9B8: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811A9C4 + movs r0, #3 + b _0811A9D2 +_0811A9C4: + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _0811A9D0 + movs r0, #1 + b _0811A9D2 +_0811A9D0: + movs r0, #2 +_0811A9D2: + add sp, #8 + pop {r1} + bx r1 + thumb_func_end sub_0811A988 + + thumb_func_start sub_0811A9D8 +sub_0811A9D8: @ 0x0811A9D8 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _0811AA28 + ldrb r1, [r5] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811AA20 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B410 + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080892B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811AA20 + movs r0, #2 + strb r0, [r5, #8] + bl sub_0808B5BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808BB18 +_0811AA20: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811AA28: .4byte gUnknown_2037230 + thumb_func_end sub_0811A9D8 + + thumb_func_start sub_0811AA2C +sub_0811AA2C: @ 0x0811AA2C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0811AA50 + ldrb r1, [r0, #0x1a] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811AA4C + adds r0, r2, #0 + bl sub_0811A768 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0811AA54 +_0811AA4C: + movs r0, #1 + b _0811AA56 + .align 2, 0 +_0811AA50: .4byte gUnknown_2036FB8 +_0811AA54: + movs r0, #0 +_0811AA56: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811AA2C + + thumb_func_start sub_0811AA5C +sub_0811AA5C: @ 0x0811AA5C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + mov r8, r1 + mov sb, r2 + adds r5, r3, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_080A8818 + ldr r0, _0811AABC + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0811AAC0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0xa] + strh r5, [r0, #0x16] + adds r0, r4, #0 + movs r1, #2 + mov r2, r8 + bl sub_080A8B44 + adds r0, r4, #0 + movs r1, #4 + mov r2, sb + bl sub_080A8B44 + ldr r0, _0811AAC4 + bl sub_08000540 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811AABC: .4byte sub_0811AB10 +_0811AAC0: .4byte gUnknown_3005B60 +_0811AAC4: .4byte sub_0811AAC8 + thumb_func_end sub_0811AA5C + + thumb_func_start sub_0811AAC8 +sub_0811AAC8: @ 0x0811AAC8 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811AAC8 + + thumb_func_start sub_0811AAE0 +sub_0811AAE0: @ 0x0811AAE0 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811AAE0 + + thumb_func_start sub_0811AAF4 +sub_0811AAF4: @ 0x0811AAF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0811AB0C + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + str r1, [r2] + movs r0, #0 + strh r0, [r2, #8] + bx lr + .align 2, 0 +_0811AB0C: .4byte gUnknown_3005B60 + thumb_func_end sub_0811AAF4 + + thumb_func_start sub_0811AB10 +sub_0811AB10: @ 0x0811AB10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080856F4 + cmp r0, #0 + bne _0811AB2C +_0811AB1E: + adds r0, r4, #0 + bl sub_0811AC78 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811AB1E + b _0811AB3A +_0811AB2C: + adds r0, r4, #0 + bl sub_0811AC78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0811AB42 +_0811AB3A: + ldr r1, _0811AB48 + adds r0, r4, #0 + bl sub_0811AAF4 +_0811AB42: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811AB48: .4byte sub_0811AB4C + thumb_func_end sub_0811AB10 + + thumb_func_start sub_0811AB4C +sub_0811AB4C: @ 0x0811AB4C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0811AB74 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #5 + bls _0811AB68 + b _0811AC6C +_0811AB68: + lsls r0, r0, #2 + ldr r1, _0811AB78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811AB74: .4byte gUnknown_3005B68 +_0811AB78: .4byte _0811AB7C +_0811AB7C: @ jump table + .4byte _0811AB94 @ case 0 + .4byte _0811ABC0 @ case 1 + .4byte _0811AC1C @ case 2 + .4byte _0811AC24 @ case 3 + .4byte _0811AC3C @ case 4 + .4byte _0811AC5C @ case 5 +_0811AB94: + ldr r0, _0811ABBC + bl sub_080006F0 + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + adds r1, r4, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #5 + b _0811AC6A + .align 2, 0 +_0811ABBC: .4byte sub_0811AAE0 +_0811ABC0: + bl sub_0811B2EC + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + adds r0, r4, #0 + bl sub_0811B0DC + cmp r0, #0 + beq _0811ABEE + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #2 + rsbs r1, r1, #0 + movs r2, #0 + str r2, [sp] + movs r3, #0x10 + bl sub_080A139C + movs r0, #3 + strh r0, [r5] + strh r4, [r5, #0xc] + b _0811AC6C +_0811ABEE: + cmp r4, #0x18 + bne _0811AC06 + movs r1, #1 + rsbs r1, r1, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #4 + b _0811AC6A +_0811AC06: + cmp r6, #0 + beq _0811AC6C + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_0811CA18 + ldrh r0, [r5] + adds r0, #1 + b _0811AC6A +_0811AC1C: + bl sub_0811CA30 + lsls r0, r0, #0x18 + b _0811AC64 +_0811AC24: + ldr r0, _0811AC38 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0811AC6C + ldrh r0, [r5, #0xc] + bl sub_0811B0F4 + b _0811AC6C + .align 2, 0 +_0811AC38: .4byte gUnknown_2037C74 +_0811AC3C: + ldr r0, _0811AC58 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0811AC6C + adds r0, r2, #0 + movs r1, #4 + bl sub_080A8B7C + bl sub_0811AD20 + b _0811AC6C + .align 2, 0 +_0811AC58: .4byte gUnknown_2037C74 +_0811AC5C: + ldr r0, _0811AC74 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 +_0811AC64: + cmp r0, #0 + bne _0811AC6C + movs r0, #1 +_0811AC6A: + strh r0, [r5] +_0811AC6C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811AC74: .4byte gUnknown_2037C74 + thumb_func_end sub_0811AB4C + + thumb_func_start sub_0811AC78 +sub_0811AC78: @ 0x0811AC78 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0811AC9C + adds r6, r0, r1 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #4 + bhi _0811AD0C + lsls r0, r0, #2 + ldr r1, _0811ACA0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811AC9C: .4byte gUnknown_3005B68 +_0811ACA0: .4byte _0811ACA4 +_0811ACA4: @ jump table + .4byte _0811ACB8 @ case 0 + .4byte _0811ACCC @ case 1 + .4byte _0811ACD2 @ case 2 + .4byte _0811ACE8 @ case 3 + .4byte _0811AD00 @ case 4 +_0811ACB8: + movs r0, #0 + bl sub_080006F0 + bl sub_0800668C + bl sub_08008424 + bl sub_080A133C + b _0811AD10 +_0811ACCC: + bl sub_0811F7E8 + b _0811ACEC +_0811ACD2: + ldrb r4, [r6, #2] + adds r0, r5, #0 + movs r1, #2 + bl sub_080A8B7C + adds r1, r0, #0 + ldrb r2, [r6, #0xe] + adds r0, r4, #0 + bl sub_0811B1AC + b _0811ACEC +_0811ACE8: + bl sub_0811C850 +_0811ACEC: + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811AD10 + adds r0, r5, #0 + movs r1, #4 + bl sub_080A8B7C + bl sub_0811AD20 + b _0811AD10 +_0811AD00: + bl sub_0811C868 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811AD10 + b _0811AD16 +_0811AD0C: + movs r0, #0 + b _0811AD18 +_0811AD10: + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] +_0811AD16: + movs r0, #1 +_0811AD18: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811AC78 + + thumb_func_start sub_0811AD20 +sub_0811AD20: @ 0x0811AD20 + push {r4, lr} + adds r4, r0, #0 + bl sub_0811C9FC + bl sub_0811B2D0 + bl sub_0811F814 + bl sub_080034D4 + adds r0, r4, #0 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811AD20 + + thumb_func_start sub_0811AD40 +sub_0811AD40: @ 0x0811AD40 + push {r4, r5, lr} + movs r5, #3 + ldr r0, _0811AD58 + ldrh r0, [r0] + cmp r0, #0x14 + bls _0811AD4E + b _0811B024 +_0811AD4E: + lsls r0, r0, #2 + ldr r1, _0811AD5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811AD58: .4byte gUnknown_2037280 +_0811AD5C: .4byte _0811AD60 +_0811AD60: @ jump table + .4byte _0811ADB4 @ case 0 + .4byte _0811ADC8 @ case 1 + .4byte _0811ADDC @ case 2 + .4byte _0811ADF0 @ case 3 + .4byte _0811AE04 @ case 4 + .4byte _0811AE54 @ case 5 + .4byte _0811AE28 @ case 6 + .4byte _0811AE80 @ case 7 + .4byte _0811AEB4 @ case 8 + .4byte _0811AED8 @ case 9 + .4byte _0811AF04 @ case 10 + .4byte _0811AF24 @ case 11 + .4byte _0811AF58 @ case 12 + .4byte _0811AF7C @ case 13 + .4byte _0811AF8C @ case 14 + .4byte _0811AFC0 @ case 15 + .4byte _0811B024 @ case 16 + .4byte _0811AFD4 @ case 17 + .4byte _0811AFE8 @ case 18 + .4byte _0811AFFC @ case 19 + .4byte _0811B00C @ case 20 +_0811ADB4: + ldr r0, _0811ADC0 + ldr r0, [r0] + ldr r1, _0811ADC4 + adds r4, r0, r1 + b _0811B012 + .align 2, 0 +_0811ADC0: .4byte gUnknown_3005AEC +_0811ADC4: .4byte 0x00002BB0 +_0811ADC8: + ldr r0, _0811ADD4 + ldr r0, [r0] + ldr r2, _0811ADD8 + adds r4, r0, r2 + b _0811B012 + .align 2, 0 +_0811ADD4: .4byte gUnknown_3005AEC +_0811ADD8: .4byte 0x00002BBC +_0811ADDC: + ldr r0, _0811ADE8 + ldr r0, [r0] + ldr r3, _0811ADEC + adds r4, r0, r3 + b _0811B012 + .align 2, 0 +_0811ADE8: .4byte gUnknown_3005AEC +_0811ADEC: .4byte 0x00002BC8 +_0811ADF0: + ldr r0, _0811ADFC + ldr r0, [r0] + ldr r1, _0811AE00 + adds r4, r0, r1 + b _0811B012 + .align 2, 0 +_0811ADFC: .4byte gUnknown_3005AEC +_0811AE00: .4byte 0x00002BD4 +_0811AE04: + ldr r2, _0811AE1C + ldr r0, _0811AE20 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0811AE24 + adds r0, r0, r3 + ldr r1, [r2] + adds r4, r1, r0 + b _0811B012 + .align 2, 0 +_0811AE1C: .4byte gUnknown_3005AEC +_0811AE20: .4byte gUnknown_2037282 +_0811AE24: .4byte 0x00002BE0 +_0811AE28: + ldr r0, _0811AE48 + ldr r0, [r0] + ldr r2, _0811AE4C + adds r1, r0, r2 + ldr r3, _0811AE50 + adds r2, r0, r3 + movs r3, #5 +_0811AE36: + ldrh r0, [r2] + strh r0, [r2, #0xc] + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bge _0811AE36 + adds r4, r1, #0 + b _0811B012 + .align 2, 0 +_0811AE48: .4byte gUnknown_3005AEC +_0811AE4C: .4byte 0x00002E36 +_0811AE50: .4byte 0x00002E2A +_0811AE54: + ldr r2, _0811AE70 + ldr r0, _0811AE74 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _0811AE78 + adds r4, r0, r1 + ldr r0, _0811AE7C + ldrb r5, [r0] + b _0811B012 + .align 2, 0 +_0811AE70: .4byte gUnknown_3005AEC +_0811AE74: .4byte gUnknown_2037282 +_0811AE78: .4byte 0x000027D0 +_0811AE7C: .4byte gUnknown_2037284 +_0811AE80: + ldr r2, _0811AEA4 + ldr r0, _0811AEA8 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0811AEAC + adds r0, r0, r3 + ldr r1, [r2] + adds r1, r1, r0 + ldr r0, _0811AEB0 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, #0x1c + adds r4, r1, r0 + movs r5, #1 + b _0811B012 + .align 2, 0 +_0811AEA4: .4byte gUnknown_3005AEC +_0811AEA8: .4byte gUnknown_2037282 +_0811AEAC: .4byte 0x000027CC +_0811AEB0: .4byte gUnknown_2037284 +_0811AEB4: + ldr r2, _0811AECC + ldr r0, _0811AED0 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _0811AED4 + adds r4, r0, r1 + movs r5, #0 + b _0811B012 + .align 2, 0 +_0811AECC: .4byte gUnknown_3005AEC +_0811AED0: .4byte gUnknown_2037282 +_0811AED4: .4byte 0x000027CE +_0811AED8: + ldr r4, _0811AEF4 + ldr r1, _0811AEF8 + ldr r0, [r1] + ldr r2, _0811AEFC + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4] + ldr r0, [r1] + ldr r3, _0811AF00 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r4, #2] + b _0811B012 + .align 2, 0 +_0811AEF4: .4byte gUnknown_2021C68 +_0811AEF8: .4byte gUnknown_3005AEC +_0811AEFC: .4byte 0x00002E6C +_0811AF00: .4byte 0x00002E6E +_0811AF04: + ldr r0, _0811AF18 + ldr r0, [r0] + ldr r1, _0811AF1C + adds r4, r0, r1 + ldr r2, _0811AF20 + adds r0, r2, #0 + strh r0, [r4] + movs r5, #1 + b _0811B012 + .align 2, 0 +_0811AF18: .4byte gUnknown_3005AEC +_0811AF1C: .4byte 0x00002BAA +_0811AF20: .4byte 0x0000FFFF +_0811AF24: + ldr r2, _0811AF48 + ldr r0, _0811AF4C + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0811AF50 + adds r0, r0, r3 + ldr r1, [r2] + adds r1, r1, r0 + ldr r0, _0811AF54 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, #4 + adds r4, r1, r0 + movs r5, #0 + b _0811B012 + .align 2, 0 +_0811AF48: .4byte gUnknown_3005AEC +_0811AF4C: .4byte gUnknown_2037282 +_0811AF50: .4byte 0x000027CC +_0811AF54: .4byte gUnknown_2037284 +_0811AF58: + ldr r2, _0811AF70 + ldr r0, _0811AF74 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, [r2] + adds r0, r0, r1 + ldr r1, _0811AF78 + adds r4, r0, r1 + movs r5, #1 + b _0811B012 + .align 2, 0 +_0811AF70: .4byte gUnknown_3005AEC +_0811AF74: .4byte gUnknown_2037282 +_0811AF78: .4byte 0x000027E4 +_0811AF7C: + ldr r4, _0811AF88 + adds r0, r4, #0 + movs r1, #2 + bl sub_0811FDE0 + b _0811B012 + .align 2, 0 +_0811AF88: .4byte gUnknown_2021C68 +_0811AF8C: + ldr r2, _0811AFB0 + ldr r0, _0811AFB4 + ldrh r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _0811AFB8 + adds r0, r0, r3 + ldr r1, [r2] + adds r1, r1, r0 + adds r4, r1, #0 + adds r4, #0x14 + ldr r2, _0811AFBC + adds r0, r2, #0 + strh r0, [r1, #0x14] + movs r5, #2 + b _0811B012 + .align 2, 0 +_0811AFB0: .4byte gUnknown_3005AEC +_0811AFB4: .4byte gUnknown_2037282 +_0811AFB8: .4byte 0x000027CC +_0811AFBC: .4byte 0x0000FFFF +_0811AFC0: + ldr r0, _0811AFCC + ldr r0, [r0] + ldr r3, _0811AFD0 + adds r4, r0, r3 + b _0811B012 + .align 2, 0 +_0811AFCC: .4byte gUnknown_3005AEC +_0811AFD0: .4byte 0x00003B6E +_0811AFD4: + ldr r0, _0811AFE0 + ldr r0, [r0] + ldr r1, _0811AFE4 + adds r4, r0, r1 + b _0811B012 + .align 2, 0 +_0811AFE0: .4byte gUnknown_3005AEC +_0811AFE4: .4byte 0x00003B5A +_0811AFE8: + ldr r0, _0811AFF4 + ldr r0, [r0] + ldr r2, _0811AFF8 + adds r4, r0, r2 + b _0811B012 + .align 2, 0 +_0811AFF4: .4byte gUnknown_3005AEC +_0811AFF8: .4byte 0x00003B6C +_0811AFFC: + ldr r0, _0811B008 + ldr r0, [r0] + movs r3, #0x82 + lsls r3, r3, #1 + adds r4, r0, r3 + b _0811B012 + .align 2, 0 +_0811B008: .4byte gUnknown_3005AF0 +_0811B00C: + bl sub_0801AB30 + adds r4, r0, #0 +_0811B012: + bl sub_0808569C + ldr r0, _0811B02C + ldrb r0, [r0] + ldr r2, _0811B030 + adds r1, r4, #0 + adds r3, r5, #0 + bl sub_0811AA5C +_0811B024: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811B02C: .4byte gUnknown_2037280 +_0811B030: .4byte sub_08085B18 + thumb_func_end sub_0811AD40 + + thumb_func_start sub_0811B034 +sub_0811B034: @ 0x0811B034 + push {lr} + bl sub_080A12E4 + ldr r0, _0811B050 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0811B054 + cmp r0, #1 + beq _0811B05E + b _0811B090 + .align 2, 0 +_0811B050: .4byte gUnknown_3002360 +_0811B054: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + b _0811B090 +_0811B05E: + ldr r0, _0811B080 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0811B09E + ldr r0, _0811B084 + ldr r0, [r0] + ldr r1, _0811B088 + adds r0, r0, r1 + ldr r1, _0811B08C + strh r1, [r0, #0x16] + bl sub_0808569C + bl sub_0811B140 + b _0811B09E + .align 2, 0 +_0811B080: .4byte gUnknown_2037C74 +_0811B084: .4byte gUnknown_3005AEC +_0811B088: .4byte 0x00003B58 +_0811B08C: .4byte 0x0000FFFF +_0811B090: + ldr r1, _0811B0A4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0811B09E: + pop {r0} + bx r0 + .align 2, 0 +_0811B0A4: .4byte gUnknown_3002360 + thumb_func_end sub_0811B034 + + thumb_func_start sub_0811B0A8 +sub_0811B0A8: @ 0x0811B0A8 + push {lr} + ldr r0, _0811B0B4 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0811B0B4: .4byte sub_0811B034 + thumb_func_end sub_0811B0A8 + + thumb_func_start sub_0811B0B8 +sub_0811B0B8: @ 0x0811B0B8 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0 + ldr r1, _0811B0D8 +_0811B0C2: + ldrh r3, [r1] + cmp r2, r3 + beq _0811B0D4 + adds r1, #8 + adds r0, #1 + cmp r0, #3 + bls _0811B0C2 + movs r0, #1 + rsbs r0, r0, #0 +_0811B0D4: + pop {r1} + bx r1 + .align 2, 0 +_0811B0D8: .4byte gUnknown_8573114 + thumb_func_end sub_0811B0B8 + + thumb_func_start sub_0811B0DC +sub_0811B0DC: @ 0x0811B0DC + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0811B0B8 + adds r1, r0, #0 + mvns r1, r1 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r1} + bx r1 + thumb_func_end sub_0811B0DC + + thumb_func_start sub_0811B0F4 +sub_0811B0F4: @ 0x0811B0F4 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0811B0B8 + adds r4, r0, #0 + bl sub_080A8818 + ldr r0, _0811B118 + lsls r4, r4, #3 + adds r0, #4 + adds r4, r4, r0 + ldr r0, [r4] + bl sub_0811AD20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811B118: .4byte gUnknown_8573114 + thumb_func_end sub_0811B0F4 + + thumb_func_start sub_0811B11C +sub_0811B11C: @ 0x0811B11C + push {lr} + ldr r0, _0811B134 + ldr r1, [r0] + ldr r0, _0811B138 + adds r1, r1, r0 + ldr r2, _0811B13C + movs r0, #0xf + movs r3, #3 + bl sub_0811AA5C + pop {r0} + bx r0 + .align 2, 0 +_0811B134: .4byte gUnknown_3005AEC +_0811B138: .4byte 0x00003B6E +_0811B13C: .4byte sub_08085B18 + thumb_func_end sub_0811B11C + + thumb_func_start sub_0811B140 +sub_0811B140: @ 0x0811B140 + push {lr} + ldr r0, _0811B158 + ldr r1, [r0] + ldr r0, _0811B15C + adds r1, r1, r0 + ldr r2, _0811B160 + movs r0, #0x10 + movs r3, #3 + bl sub_0811AA5C + pop {r0} + bx r0 + .align 2, 0 +_0811B158: .4byte gUnknown_3005AEC +_0811B15C: .4byte 0x00003B5A +_0811B160: .4byte sub_08085B18 + thumb_func_end sub_0811B140 + + thumb_func_start sub_0811B164 +sub_0811B164: @ 0x0811B164 + push {lr} + ldr r0, _0811B17C + ldr r1, [r0] + ldr r0, _0811B180 + adds r1, r1, r0 + ldr r2, _0811B184 + movs r0, #0x12 + movs r3, #3 + bl sub_0811AA5C + pop {r0} + bx r0 + .align 2, 0 +_0811B17C: .4byte gUnknown_3005AEC +_0811B180: .4byte 0x00003B6C +_0811B184: .4byte sub_08085B18 + thumb_func_end sub_0811B164 + + thumb_func_start sub_0811B188 +sub_0811B188: @ 0x0811B188 + push {lr} + ldr r0, _0811B1A0 + ldr r1, [r0] + ldr r0, _0811B1A4 + adds r1, r1, r0 + ldr r2, _0811B1A8 + movs r0, #0x11 + movs r3, #3 + bl sub_0811AA5C + pop {r0} + bx r0 + .align 2, 0 +_0811B1A0: .4byte gUnknown_3005AEC +_0811B1A4: .4byte 0x00003B5A +_0811B1A8: .4byte sub_08085B18 + thumb_func_end sub_0811B188 + + thumb_func_start sub_0811B1AC +sub_0811B1AC: @ 0x0811B1AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r4, _0811B1D0 + movs r0, #0x50 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _0811B1D4 + movs r0, #0 + b _0811B2BE + .align 2, 0 +_0811B1D0: .4byte gUnknown_2039DE4 +_0811B1D4: + movs r7, #0 + strb r5, [r0] + ldr r0, [r4] + mov r1, r8 + str r1, [r0, #0x38] + strb r7, [r0, #5] + ldr r0, [r4] + strb r7, [r0, #6] + ldr r0, [r4] + strb r7, [r0, #9] + ldr r0, [r4] + strb r6, [r0, #0x12] + ldr r0, [r4] + strb r7, [r0, #0x13] + adds r0, r5, #0 + bl sub_0811C4CC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r5, #0x10 + bne _0811B216 + ldr r0, [r4] + adds r0, #0x14 + bl sub_0811C5F4 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x14 + str r1, [r0, #0x34] + movs r1, #7 + strb r1, [r0, #4] + lsls r0, r6, #1 + b _0811B22E +_0811B216: + ldr r0, [r4] + strb r7, [r0, #4] + ldr r3, [r4] + ldr r1, _0811B26C + lsls r2, r6, #1 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r3, #0x34] + adds r0, r2, #0 +_0811B22E: + ldr r3, _0811B270 + ldr r2, [r3] + ldr r1, _0811B26C + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #1] + strb r1, [r2, #2] + ldr r1, [r3] + ldrb r0, [r0, #2] + strb r0, [r1, #3] + ldr r0, [r3] + ldrb r2, [r0, #2] + ldrb r1, [r0, #3] + adds r4, r2, #0 + muls r4, r1, r4 + adds r1, r4, #0 + strb r1, [r0, #7] + ldr r0, [r3] + strb r6, [r0, #1] + mov r0, r8 + cmp r0, #0 + beq _0811B274 + ldr r0, [r3] + adds r1, r0, #0 + adds r1, #0x3c + ldrb r2, [r0, #7] + mov r0, r8 + bl CpuSet + b _0811B2A4 + .align 2, 0 +_0811B26C: .4byte gUnknown_8573134 +_0811B270: .4byte gUnknown_2039DE4 +_0811B274: + movs r4, #0 + ldr r0, [r3] + ldrb r0, [r0, #7] + cmp r4, r0 + bge _0811B29C + adds r6, r3, #0 + ldr r1, _0811B2C8 + adds r5, r1, #0 +_0811B284: + ldr r2, [r6] + lsls r0, r4, #1 + adds r1, r2, #0 + adds r1, #0x3c + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r5 + strh r0, [r1] + adds r4, #1 + ldrb r2, [r2, #7] + cmp r4, r2 + blt _0811B284 +_0811B29C: + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0x3c + str r0, [r1, #0x38] +_0811B2A4: + bl sub_0811F908 + ldr r1, _0811B2CC + ldr r4, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + movs r1, #3 + bl __divsi3 + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #1 +_0811B2BE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811B2C8: .4byte 0x0000FFFF +_0811B2CC: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811B1AC + + thumb_func_start sub_0811B2D0 +sub_0811B2D0: @ 0x0811B2D0 + push {r4, lr} + ldr r4, _0811B2E8 + ldr r0, [r4] + cmp r0, #0 + beq _0811B2E2 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0811B2E2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811B2E8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811B2D0 + + thumb_func_start sub_0811B2EC +sub_0811B2EC: @ 0x0811B2EC + push {lr} + ldr r0, _0811B304 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0xa + bhi _0811B37E + lsls r0, r0, #2 + ldr r1, _0811B308 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811B304: .4byte gUnknown_2039DE4 +_0811B308: .4byte _0811B30C +_0811B30C: @ jump table + .4byte _0811B338 @ case 0 + .4byte _0811B33E @ case 1 + .4byte _0811B344 @ case 2 + .4byte _0811B34A @ case 3 + .4byte _0811B350 @ case 4 + .4byte _0811B356 @ case 5 + .4byte _0811B35C @ case 6 + .4byte _0811B362 @ case 7 + .4byte _0811B368 @ case 8 + .4byte _0811B36E @ case 9 + .4byte _0811B374 @ case 10 +_0811B338: + bl sub_0811B384 + b _0811B378 +_0811B33E: + bl sub_0811B4D4 + b _0811B378 +_0811B344: + bl sub_0811B614 + b _0811B378 +_0811B34A: + bl sub_0811B6D0 + b _0811B378 +_0811B350: + bl sub_0811B75C + b _0811B378 +_0811B356: + bl sub_0811B810 + b _0811B378 +_0811B35C: + bl sub_0811B7BC + b _0811B378 +_0811B362: + bl sub_0811B85C + b _0811B378 +_0811B368: + bl sub_0811B88C + b _0811B378 +_0811B36E: + bl sub_0811B8B8 + b _0811B378 +_0811B374: + bl sub_0811B8C8 +_0811B378: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0811B380 +_0811B37E: + movs r0, #0 +_0811B380: + pop {r1} + bx r1 + thumb_func_end sub_0811B2EC + + thumb_func_start sub_0811B384 +sub_0811B384: @ 0x0811B384 + push {r4, r5, r6, r7, lr} + ldr r0, _0811B3B0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0811B3D4 + bl sub_0811C79C + ldr r1, _0811B3B4 + ldr r3, [r1] + movs r2, #0 + movs r0, #2 + strb r0, [r3, #4] + ldr r0, [r1] + strb r2, [r0, #0xa] + ldr r0, [r1] + strb r2, [r0, #0xb] + ldr r0, [r1] + strb r2, [r0, #0xc] + movs r0, #9 + b _0811B4CE + .align 2, 0 +_0811B3B0: .4byte gUnknown_3002360 +_0811B3B4: .4byte gUnknown_2039DE4 +_0811B3B8: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0811B484 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0811B474 + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0811B464 + movs r0, #0 + b _0811B4CE +_0811B3D4: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0811B494 + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0811B49A + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0811B3B8 + ldr r2, _0811B45C + ldr r1, [r2] + ldrb r0, [r1, #6] + subs r0, #1 +_0811B3F4: + strb r0, [r1, #6] +_0811B3F6: + adds r7, r2, #0 + adds r4, r7, #0 + ldr r2, [r4] + movs r0, #6 + ldrsb r0, [r2, r0] + ldr r6, _0811B460 + cmp r0, #0 + bge _0811B414 + ldrb r0, [r2, #1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r6 + ldrb r0, [r1, #2] + strb r0, [r2, #6] +_0811B414: + ldr r3, [r4] + movs r2, #6 + ldrsb r2, [r3, r2] + adds r5, r6, #0 + ldrb r1, [r3, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #2] + cmp r2, r0 + ble _0811B430 + movs r0, #0 + strb r0, [r3, #6] +_0811B430: + ldr r3, [r4] + movs r2, #6 + ldrsb r2, [r3, r2] + ldrb r1, [r3, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r5 + ldrb r0, [r1, #2] + cmp r2, r0 + bne _0811B4A4 + movs r0, #5 + ldrsb r0, [r3, r0] + cmp r0, #2 + ble _0811B452 + movs r0, #2 + strb r0, [r3, #5] +_0811B452: + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #4] + movs r0, #3 + b _0811B4CE + .align 2, 0 +_0811B45C: .4byte gUnknown_2039DE4 +_0811B460: .4byte gUnknown_8573134 +_0811B464: + ldr r2, _0811B470 + ldr r1, [r2] + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + b _0811B3F6 + .align 2, 0 +_0811B470: .4byte gUnknown_2039DE4 +_0811B474: + ldr r2, _0811B480 + ldr r1, [r2] + ldrb r0, [r1, #6] + adds r0, #1 + b _0811B3F4 + .align 2, 0 +_0811B480: .4byte gUnknown_2039DE4 +_0811B484: + ldr r2, _0811B490 + ldr r1, [r2] + ldrb r0, [r1, #5] + subs r0, #1 + strb r0, [r1, #5] + b _0811B3F6 + .align 2, 0 +_0811B490: .4byte gUnknown_2039DE4 +_0811B494: + bl sub_0811B920 + b _0811B49E +_0811B49A: + bl sub_0811B984 +_0811B49E: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0811B4CE +_0811B4A4: + movs r0, #5 + ldrsb r0, [r3, r0] + cmp r0, #0 + bge _0811B4B2 + ldrb r0, [r1, #1] + subs r0, #1 + strb r0, [r3, #5] +_0811B4B2: + ldr r3, [r7] + movs r2, #5 + ldrsb r2, [r3, r2] + ldrb r1, [r3, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r0, [r0, #1] + cmp r2, r0 + blt _0811B4CC + movs r0, #0 + strb r0, [r3, #5] +_0811B4CC: + movs r0, #2 +_0811B4CE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0811B384 + + thumb_func_start sub_0811B4D4 +sub_0811B4D4: @ 0x0811B4D4 + push {r4, r5, r6, lr} + ldr r2, _0811B4F4 + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0811B542 + ldr r0, _0811B4F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + beq _0811B536 + b _0811B51C + .align 2, 0 +_0811B4F4: .4byte gUnknown_3002360 +_0811B4F8: .4byte gUnknown_2039DE4 +_0811B4FC: + movs r0, #0x20 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + bne _0811B5D8 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _0811B5C8 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _0811B5B8 + movs r0, #0 + b _0811B60E +_0811B51C: + cmp r0, #1 + bgt _0811B526 + cmp r0, #0 + beq _0811B530 + b _0811B542 +_0811B526: + cmp r0, #2 + beq _0811B5EE + cmp r0, #3 + beq _0811B53C + b _0811B542 +_0811B530: + bl sub_0811B954 + b _0811B5F2 +_0811B536: + bl sub_0811B920 + b _0811B5F2 +_0811B53C: + bl sub_0811BA34 + b _0811B5F2 +_0811B542: + ldrh r2, [r2, #0x2e] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _0811B5E8 + movs r0, #8 + ands r0, r2 + cmp r0, #0 + bne _0811B5EE + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0811B4FC + ldr r2, _0811B5B0 + ldr r1, [r2] + ldrb r0, [r1, #6] + subs r0, #1 + strb r0, [r1, #6] +_0811B566: + adds r6, r2, #0 +_0811B568: + adds r5, r6, #0 + ldr r4, [r5] + movs r3, #6 + ldrsb r3, [r4, r3] + ldr r2, _0811B5B4 + ldrb r1, [r4, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrb r0, [r1, #2] + cmp r3, r0 + bne _0811B5F8 + bl sub_0811C240 + movs r2, #3 + cmp r0, #0 + beq _0811B58E + movs r2, #4 +_0811B58E: + ldr r1, [r5] + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _0811B59C + subs r0, r2, #1 + strb r0, [r1, #5] +_0811B59C: + ldr r1, [r5] + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, r2 + blt _0811B5AA + movs r0, #0 + strb r0, [r1, #5] +_0811B5AA: + movs r0, #3 + b _0811B60E + .align 2, 0 +_0811B5B0: .4byte gUnknown_2039DE4 +_0811B5B4: .4byte gUnknown_8573134 +_0811B5B8: + ldr r2, _0811B5C4 + ldr r1, [r2] + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + b _0811B566 + .align 2, 0 +_0811B5C4: .4byte gUnknown_2039DE4 +_0811B5C8: + ldr r1, _0811B5D4 + ldr r0, [r1] + strb r3, [r0, #6] + adds r6, r1, #0 + b _0811B568 + .align 2, 0 +_0811B5D4: .4byte gUnknown_2039DE4 +_0811B5D8: + ldr r2, _0811B5E4 + ldr r1, [r2] + ldrb r0, [r1, #5] + subs r0, #1 + strb r0, [r1, #5] + b _0811B566 + .align 2, 0 +_0811B5E4: .4byte gUnknown_2039DE4 +_0811B5E8: + bl sub_0811B920 + b _0811B5F2 +_0811B5EE: + bl sub_0811B984 +_0811B5F2: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0811B60E +_0811B5F8: + movs r0, #5 + ldrsb r0, [r4, r0] + ldrb r1, [r1, #1] + cmp r0, r1 + blt _0811B606 + subs r0, r1, #1 + strb r0, [r4, #5] +_0811B606: + ldr r1, [r6] + movs r0, #0 + strb r0, [r1, #4] + movs r0, #2 +_0811B60E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0811B4D4 + + thumb_func_start sub_0811B614 +sub_0811B614: @ 0x0811B614 + push {lr} + ldr r1, _0811B62C + ldrh r2, [r1, #0x2e] + movs r0, #2 + ands r0, r2 + adds r3, r1, #0 + cmp r0, #0 + beq _0811B630 + bl sub_0811BAFC + b _0811B6C6 + .align 2, 0 +_0811B62C: .4byte gUnknown_3002360 +_0811B630: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0811B67E + ldr r0, _0811B650 + ldr r2, [r0] + movs r1, #0xa + ldrsb r1, [r2, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811B654 + bl sub_0811BA80 + b _0811B6C6 + .align 2, 0 +_0811B650: .4byte gUnknown_2039DE4 +_0811B654: + movs r0, #0xb + ldrsb r0, [r2, r0] + cmp r0, #1 + beq _0811B672 + cmp r0, #1 + bgt _0811B666 + cmp r0, #0 + beq _0811B66C + b _0811B67E +_0811B666: + cmp r0, #2 + beq _0811B678 + b _0811B67E +_0811B66C: + bl sub_0811BB0C + b _0811B6C6 +_0811B672: + bl sub_0811BB38 + b _0811B6C6 +_0811B678: + bl sub_0811BAFC + b _0811B6C6 +_0811B67E: + ldrh r1, [r3, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811B68E + bl sub_0811BB0C + b _0811B6C6 +_0811B68E: + ldrh r1, [r3, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0811B69C + movs r0, #2 + b _0811B6C2 +_0811B69C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0811B6A8 + movs r0, #3 + b _0811B6C2 +_0811B6A8: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0811B6B4 + movs r0, #1 + b _0811B6C2 +_0811B6B4: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0811B6C0 + movs r0, #0 + b _0811B6CA +_0811B6C0: + movs r0, #0 +_0811B6C2: + bl sub_0811BCF8 +_0811B6C6: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0811B6CA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B614 + + thumb_func_start sub_0811B6D0 +sub_0811B6D0: @ 0x0811B6D0 + push {lr} + ldr r2, _0811B6EC + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0811B6F4 + ldr r0, _0811B6F0 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1, #4] + movs r0, #0xe + b _0811B756 + .align 2, 0 +_0811B6EC: .4byte gUnknown_3002360 +_0811B6F0: .4byte gUnknown_2039DE4 +_0811B6F4: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0811B702 + bl sub_0811BB64 + b _0811B752 +_0811B702: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0811B70E + movs r0, #4 + b _0811B74E +_0811B70E: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0811B71A + movs r0, #5 + b _0811B74E +_0811B71A: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0811B728 + movs r0, #2 + b _0811B74E +_0811B728: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0811B734 + movs r0, #3 + b _0811B74E +_0811B734: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0811B740 + movs r0, #1 + b _0811B74E +_0811B740: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0811B74C + movs r0, #0 + b _0811B756 +_0811B74C: + movs r0, #0 +_0811B74E: + bl sub_0811BF64 +_0811B752: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0811B756: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B6D0 + + thumb_func_start sub_0811B75C +sub_0811B75C: @ 0x0811B75C + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0811B790 + cmp r1, #0 + bgt _0811B778 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811B77C + b _0811B7B4 +_0811B778: + cmp r1, #1 + bne _0811B7B4 +_0811B77C: + bl sub_0811BA74 + ldr r1, _0811B78C + ldr r1, [r1] + strb r0, [r1, #4] + movs r0, #7 + b _0811B7B6 + .align 2, 0 +_0811B78C: .4byte gUnknown_2039DE4 +_0811B790: + ldr r0, _0811B7AC + strh r1, [r0] + ldr r0, _0811B7B0 + ldr r0, [r0] + ldrb r0, [r0] + subs r0, #0x11 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0811B7A8 + bl sub_0811BBB4 +_0811B7A8: + movs r0, #0x18 + b _0811B7B6 + .align 2, 0 +_0811B7AC: .4byte gUnknown_2037290 +_0811B7B0: .4byte gUnknown_2039DE4 +_0811B7B4: + movs r0, #0 +_0811B7B6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B75C + + thumb_func_start sub_0811B7BC +sub_0811B7BC: @ 0x0811B7BC + push {r4, lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0811B7F0 + cmp r1, #0 + bgt _0811B7D8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811B7DC + b _0811B808 +_0811B7D8: + cmp r1, #1 + bne _0811B808 +_0811B7DC: + bl sub_0811BA74 + ldr r1, _0811B7EC + ldr r1, [r1] + strb r0, [r1, #4] + movs r0, #7 + b _0811B80A + .align 2, 0 +_0811B7EC: .4byte gUnknown_2039DE4 +_0811B7F0: + bl sub_0811C68C + ldr r4, _0811B804 + bl sub_0811BCBC + strh r0, [r4] + bl sub_0811BBB4 + movs r0, #0x18 + b _0811B80A + .align 2, 0 +_0811B804: .4byte gUnknown_2037290 +_0811B808: + movs r0, #0 +_0811B80A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811B7BC + + thumb_func_start sub_0811B810 +sub_0811B810: @ 0x0811B810 + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0811B840 + cmp r1, #0 + bgt _0811B82C + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811B830 + b _0811B854 +_0811B82C: + cmp r1, #1 + bne _0811B854 +_0811B830: + ldr r0, _0811B83C + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #4] + movs r0, #7 + b _0811B856 + .align 2, 0 +_0811B83C: .4byte gUnknown_2039DE4 +_0811B840: + bl sub_0811BBE8 + ldr r0, _0811B850 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #4] + movs r0, #8 + b _0811B856 + .align 2, 0 +_0811B850: .4byte gUnknown_2039DE4 +_0811B854: + movs r0, #0 +_0811B856: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B810 + + thumb_func_start sub_0811B85C +sub_0811B85C: @ 0x0811B85C + push {lr} + ldr r0, _0811B870 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0811B874 + movs r0, #0x1a + b _0811B888 + .align 2, 0 +_0811B870: .4byte gUnknown_3002360 +_0811B874: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0811B880 + movs r0, #0 + b _0811B888 +_0811B880: + bl sub_0811B920 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0811B888: + pop {r1} + bx r1 + thumb_func_end sub_0811B85C + + thumb_func_start sub_0811B88C +sub_0811B88C: @ 0x0811B88C + push {lr} + ldr r0, _0811B8A0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0811B8A4 + movs r0, #0 + b _0811B8B0 + .align 2, 0 +_0811B8A0: .4byte gUnknown_3002360 +_0811B8A4: + bl sub_0811BA74 + ldr r1, _0811B8B4 + ldr r1, [r1] + strb r0, [r1, #4] + movs r0, #7 +_0811B8B0: + pop {r1} + bx r1 + .align 2, 0 +_0811B8B4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811B88C + + thumb_func_start sub_0811B8B8 +sub_0811B8B8: @ 0x0811B8B8 + ldr r0, _0811B8C4 + ldr r1, [r0] + movs r0, #0xa + strb r0, [r1, #4] + movs r0, #6 + bx lr + .align 2, 0 +_0811B8C4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811B8B8 + + thumb_func_start sub_0811B8C8 +sub_0811B8C8: @ 0x0811B8C8 + push {r4, lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0811B904 + cmp r1, #0 + bgt _0811B8E4 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811B8E8 + b _0811B918 +_0811B8E4: + cmp r1, #1 + bne _0811B918 +_0811B8E8: + bl sub_0811BC24 + ldr r2, _0811B900 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #8] + ldr r1, [r2] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x1f + b _0811B91A + .align 2, 0 +_0811B900: .4byte gUnknown_2039DE4 +_0811B904: + ldr r4, _0811B914 + bl sub_0811BCBC + strh r0, [r4] + bl sub_0811BBB4 + movs r0, #0x18 + b _0811B91A + .align 2, 0 +_0811B914: .4byte gUnknown_2037290 +_0811B918: + movs r0, #0 +_0811B91A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811B8C8 + + thumb_func_start sub_0811B920 +sub_0811B920: @ 0x0811B920 + push {lr} + ldr r1, _0811B940 + ldr r2, [r1] + ldrb r0, [r2] + cmp r0, #0x13 + beq _0811B930 + cmp r0, #0xb + bne _0811B944 +_0811B930: + ldrb r0, [r2, #4] + strb r0, [r2, #8] + ldr r1, [r1] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x22 + b _0811B950 + .align 2, 0 +_0811B940: .4byte gUnknown_2039DE4 +_0811B944: + ldrb r0, [r2, #4] + strb r0, [r2, #8] + ldr r1, [r1] + movs r0, #4 + strb r0, [r1, #4] + movs r0, #5 +_0811B950: + pop {r1} + bx r1 + thumb_func_end sub_0811B920 + + thumb_func_start sub_0811B954 +sub_0811B954: @ 0x0811B954 + push {lr} + ldr r2, _0811B974 + ldr r0, [r2] + ldrb r1, [r0, #4] + strb r1, [r0, #8] + ldr r1, [r2] + ldrb r0, [r1] + cmp r0, #6 + bne _0811B978 + ldrb r0, [r1, #4] + strb r0, [r1, #8] + ldr r1, [r2] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x20 + b _0811B97E + .align 2, 0 +_0811B974: .4byte gUnknown_2039DE4 +_0811B978: + movs r0, #5 + strb r0, [r1, #4] + movs r0, #4 +_0811B97E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B954 + + thumb_func_start sub_0811B984 +sub_0811B984: @ 0x0811B984 + push {r4, lr} + ldr r4, _0811B9A8 + ldr r1, [r4] + ldrb r0, [r1, #4] + strb r0, [r1, #8] + ldr r1, [r4] + ldrb r0, [r1] + cmp r0, #0x11 + bne _0811B9AC + bl sub_0811C568 + cmp r0, #0 + bne _0811B9CA + bl sub_0811C5B4 + cmp r0, #0 + bne _0811B9B8 + b _0811BA26 + .align 2, 0 +_0811B9A8: .4byte gUnknown_2039DE4 +_0811B9AC: + cmp r0, #0x12 + bne _0811B9D4 + bl sub_0811C5B4 + cmp r0, #0 + beq _0811B9C2 +_0811B9B8: + ldr r1, [r4] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x1e + b _0811BA2C +_0811B9C2: + bl sub_0811C568 + cmp r0, #0 + beq _0811BA26 +_0811B9CA: + ldr r1, [r4] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x1d + b _0811BA2C +_0811B9D4: + cmp r0, #9 + beq _0811B9DC + cmp r0, #0xd + bne _0811B9EE +_0811B9DC: + bl sub_0811C530 + cmp r0, #0 + bne _0811BA26 + ldr r1, [r4] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x21 + b _0811BA2C +_0811B9EE: + cmp r0, #0x13 + beq _0811B9F6 + cmp r0, #0xb + bne _0811BA08 +_0811B9F6: + bl sub_0811C4F8 + cmp r0, #0 + beq _0811BA26 + ldr r1, [r4] + movs r0, #8 + strb r0, [r1, #4] + movs r0, #0x22 + b _0811BA2C +_0811BA08: + cmp r0, #0x14 + beq _0811BA28 + bl sub_0811C4F8 + cmp r0, #1 + beq _0811BA1C + bl sub_0811BCBC + cmp r0, #0 + bne _0811BA26 +_0811BA1C: + ldr r1, [r4] + movs r0, #4 + strb r0, [r1, #4] + movs r0, #5 + b _0811BA2C +_0811BA26: + ldr r1, [r4] +_0811BA28: + movs r0, #6 + strb r0, [r1, #4] +_0811BA2C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811B984 + + thumb_func_start sub_0811BA34 +sub_0811BA34: @ 0x0811BA34 + push {lr} + ldr r2, _0811BA50 + ldr r1, [r2] + ldrb r0, [r1, #4] + strb r0, [r1, #8] + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #0x11 + beq _0811BA5E + cmp r0, #0x11 + bgt _0811BA54 + cmp r0, #0xf + beq _0811BA5A + b _0811BA6E + .align 2, 0 +_0811BA50: .4byte gUnknown_2039DE4 +_0811BA54: + cmp r0, #0x12 + beq _0811BA66 + b _0811BA6E +_0811BA5A: + movs r0, #0x19 + b _0811BA70 +_0811BA5E: + bl sub_0811BBB4 + movs r0, #0x1c + b _0811BA70 +_0811BA66: + bl sub_0811BBB4 + movs r0, #0x1b + b _0811BA70 +_0811BA6E: + movs r0, #0 +_0811BA70: + pop {r1} + bx r1 + thumb_func_end sub_0811BA34 + + thumb_func_start sub_0811BA74 +sub_0811BA74: @ 0x0811BA74 + ldr r0, _0811BA7C + ldr r0, [r0] + ldrb r0, [r0, #8] + bx lr + .align 2, 0 +_0811BA7C: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BA74 + + thumb_func_start sub_0811BA80 +sub_0811BA80: @ 0x0811BA80 + push {r4, r5, r6, lr} + ldr r0, _0811BAA8 + ldr r0, [r0] + ldrb r0, [r0, #9] + cmp r0, #0 + bne _0811BAAC + bl sub_0811C0B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811F914 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_0811FAA0 + b _0811BABC + .align 2, 0 +_0811BAA8: .4byte gUnknown_2039DE4 +_0811BAAC: + bl sub_0811C0D8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + bl sub_0811FAA0 +_0811BABC: + bl sub_0811FB08 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0811BAF4 + ldr r4, _0811BAF0 + ldr r5, [r4] + subs r0, #1 + movs r6, #3 + movs r1, #3 + bl __divsi3 + movs r1, #0 + strb r0, [r5, #0xf] + ldr r0, [r4] + strb r1, [r0, #0xe] + ldr r0, [r4] + strb r1, [r0, #0x10] + ldr r0, [r4] + strb r1, [r0, #0x11] + ldr r0, [r4] + strb r6, [r0, #4] + movs r0, #0xb + b _0811BAF6 + .align 2, 0 +_0811BAF0: .4byte gUnknown_2039DE4 +_0811BAF4: + movs r0, #0 +_0811BAF6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0811BA80 + + thumb_func_start sub_0811BAFC +sub_0811BAFC: @ 0x0811BAFC + ldr r0, _0811BB08 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #4] + movs r0, #0xa + bx lr + .align 2, 0 +_0811BB08: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BAFC + + thumb_func_start sub_0811BB0C +sub_0811BB0C: @ 0x0811BB0C + push {lr} + ldr r1, _0811BB2C + 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, #9] + cmp r0, #0 + bne _0811BB30 + movs r0, #1 + strb r0, [r1, #9] + b _0811BB32 + .align 2, 0 +_0811BB2C: .4byte gUnknown_2039DE4 +_0811BB30: + strb r2, [r1, #9] +_0811BB32: + movs r0, #0x17 + pop {r1} + bx r1 + thumb_func_end sub_0811BB0C + + thumb_func_start sub_0811BB38 +sub_0811BB38: @ 0x0811BB38 + push {lr} + ldr r0, _0811BB50 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #6 + beq _0811BB58 + ldr r0, _0811BB54 + bl sub_0811BC58 + movs r0, #1 + b _0811BB60 + .align 2, 0 +_0811BB50: .4byte gUnknown_2039DE4 +_0811BB54: .4byte 0x0000FFFF +_0811BB58: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0 +_0811BB60: + pop {r1} + bx r1 + thumb_func_end sub_0811BB38 + + thumb_func_start sub_0811BB64 +sub_0811BB64: @ 0x0811BB64 + push {r4, r5, lr} + bl sub_0811C140 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0811FAD0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0811C820 + adds r5, r0, #0 + cmp r5, #0 + beq _0811BB8C + movs r0, #0x20 + bl sub_080A306C + movs r0, #0 + b _0811BBAC +_0811BB8C: + adds r0, r4, #0 + bl sub_0811BC58 + ldr r0, _0811BBA4 + ldr r1, [r0] + ldrb r0, [r1] + cmp r0, #6 + bne _0811BBA8 + movs r0, #9 + strb r0, [r1, #4] + movs r0, #0xd + b _0811BBAC + .align 2, 0 +_0811BBA4: .4byte gUnknown_2039DE4 +_0811BBA8: + strb r5, [r1, #4] + movs r0, #0xc +_0811BBAC: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811BB64 + + thumb_func_start sub_0811BBB4 +sub_0811BBB4: @ 0x0811BBB4 + push {r4, r5, lr} + movs r4, #0 + ldr r3, _0811BBE4 + ldr r0, [r3] + ldrb r0, [r0, #7] + cmp r4, r0 + bge _0811BBDE + adds r5, r3, #0 +_0811BBC4: + ldr r3, [r5] + ldr r1, [r3, #0x38] + lsls r2, r4, #1 + adds r1, r2, r1 + adds r0, r3, #0 + adds r0, #0x3c + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + adds r4, #1 + ldrb r3, [r3, #7] + cmp r4, r3 + blt _0811BBC4 +_0811BBDE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BBE4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BBB4 + + thumb_func_start sub_0811BBE8 +sub_0811BBE8: @ 0x0811BBE8 + push {r4, r5, lr} + movs r3, #0 + ldr r2, _0811BC1C + ldr r0, [r2] + ldrb r0, [r0, #7] + cmp r3, r0 + bge _0811BC14 + adds r5, r2, #0 + ldr r0, _0811BC20 + adds r4, r0, #0 +_0811BBFC: + ldr r2, [r5] + lsls r0, r3, #1 + adds r1, r2, #0 + adds r1, #0x3c + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r4 + strh r0, [r1] + adds r3, #1 + ldrb r2, [r2, #7] + cmp r3, r2 + blt _0811BBFC +_0811BC14: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BC1C: .4byte gUnknown_2039DE4 +_0811BC20: .4byte 0x0000FFFF + thumb_func_end sub_0811BBE8 + + thumb_func_start sub_0811BC24 +sub_0811BC24: @ 0x0811BC24 + push {r4, r5, lr} + movs r4, #0 + ldr r3, _0811BC54 + ldr r0, [r3] + ldrb r0, [r0, #7] + cmp r4, r0 + bge _0811BC4E + adds r5, r3, #0 +_0811BC34: + ldr r3, [r5] + lsls r1, r4, #1 + adds r2, r3, #0 + adds r2, #0x3c + adds r2, r2, r1 + ldr r0, [r3, #0x38] + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r2] + adds r4, #1 + ldrb r3, [r3, #7] + cmp r4, r3 + blt _0811BC34 +_0811BC4E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BC54: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BC24 + + thumb_func_start sub_0811BC58 +sub_0811BC58: @ 0x0811BC58 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0811C098 + lsls r0, r0, #0x10 + ldr r1, _0811BC78 + ldr r1, [r1] + lsrs r0, r0, #0xf + adds r1, #0x3c + adds r1, r1, r0 + strh r4, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811BC78: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BC58 + + thumb_func_start sub_0811BC7C +sub_0811BC7C: @ 0x0811BC7C + push {r4, r5, lr} + movs r2, #0 + ldr r0, _0811BCA4 + ldr r0, [r0] + ldrb r1, [r0, #7] + cmp r2, r1 + bhs _0811BCB2 + adds r5, r1, #0 + adds r4, r0, #0 + adds r4, #0x3c + ldr r3, [r0, #0x38] +_0811BC92: + lsls r0, r2, #1 + adds r1, r4, r0 + adds r0, r0, r3 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + beq _0811BCA8 + movs r0, #1 + b _0811BCB4 + .align 2, 0 +_0811BCA4: .4byte gUnknown_2039DE4 +_0811BCA8: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r5 + blo _0811BC92 +_0811BCB2: + movs r0, #0 +_0811BCB4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811BC7C + + thumb_func_start sub_0811BCBC +sub_0811BCBC: @ 0x0811BCBC + push {lr} + ldr r0, _0811BCE4 + ldr r0, [r0] + ldrb r0, [r0] + subs r0, #0x11 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0811BCEC + bl sub_0811C568 + cmp r0, #0 + bne _0811BCDE + bl sub_0811C5B4 + cmp r0, #0 + beq _0811BCE8 +_0811BCDE: + movs r0, #0 + b _0811BCF4 + .align 2, 0 +_0811BCE4: .4byte gUnknown_2039DE4 +_0811BCE8: + movs r0, #1 + b _0811BCF4 +_0811BCEC: + bl sub_0811BC7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0811BCF4: + pop {r1} + bx r1 + thumb_func_end sub_0811BCBC + + thumb_func_start sub_0811BCF8 +sub_0811BCF8: @ 0x0811BCF8 + push {lr} + adds r2, r0, #0 + ldr r0, _0811BD1C + ldr r3, [r0] + movs r1, #0xa + ldrsb r1, [r3, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811BD28 + ldrb r0, [r3, #9] + cmp r0, #0 + bne _0811BD20 + adds r0, r2, #0 + bl sub_0811BD38 + b _0811BD2E + .align 2, 0 +_0811BD1C: .4byte gUnknown_2039DE4 +_0811BD20: + adds r0, r2, #0 + bl sub_0811BE04 + b _0811BD2E +_0811BD28: + adds r0, r2, #0 + bl sub_0811BE94 +_0811BD2E: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811BCF8 + + thumb_func_start sub_0811BD38 +sub_0811BD38: @ 0x0811BD38 + push {r4, lr} + cmp r0, #1 + beq _0811BDAE + cmp r0, #1 + blo _0811BDCE + cmp r0, #2 + beq _0811BD4C + cmp r0, #3 + beq _0811BD74 + b _0811BDFA +_0811BD4C: + ldr r0, _0811BD68 + ldr r1, [r0] + movs r0, #0xb + ldrsb r0, [r1, r0] + ldrb r3, [r1, #0xc] + cmn r0, r3 + beq _0811BDFA + ldrb r2, [r1, #0xb] + cmp r0, #0 + beq _0811BD6C + subs r0, r2, #1 + strb r0, [r1, #0xb] +_0811BD64: + movs r0, #0xf + b _0811BDFC + .align 2, 0 +_0811BD68: .4byte gUnknown_2039DE4 +_0811BD6C: + subs r0, r3, #1 + strb r0, [r1, #0xc] + movs r0, #0x11 + b _0811BDFC +_0811BD74: + ldr r0, _0811BD9C + ldr r2, [r0] + movs r1, #0xb + ldrsb r1, [r2, r1] + ldrb r3, [r2, #0xc] + adds r1, r1, r3 + ldrb r0, [r2, #0xd] + subs r0, #1 + cmp r1, r0 + bge _0811BDFA + ldrb r1, [r2, #0xb] + movs r0, #0xb + ldrsb r0, [r2, r0] + cmp r0, #2 + bgt _0811BDA0 + adds r0, r1, #1 + strb r0, [r2, #0xb] + movs r4, #0xf + b _0811BDA6 + .align 2, 0 +_0811BD9C: .4byte gUnknown_2039DE4 +_0811BDA0: + adds r0, r3, #1 + strb r0, [r2, #0xc] + movs r4, #0x10 +_0811BDA6: + bl sub_0811C17C + adds r0, r4, #0 + b _0811BDFC +_0811BDAE: + ldr r0, _0811BDC4 + ldr r1, [r0] + ldrb r2, [r1, #0xa] + movs r0, #0xa + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0811BDC8 + subs r0, r2, #1 + strb r0, [r1, #0xa] + b _0811BD64 + .align 2, 0 +_0811BDC4: .4byte gUnknown_2039DE4 +_0811BDC8: + bl sub_0811BF14 + b _0811BD64 +_0811BDCE: + ldr r0, _0811BDF0 + ldr r1, [r0] + ldrb r2, [r1, #0xa] + movs r0, #0xa + ldrsb r0, [r1, r0] + cmp r0, #1 + bgt _0811BDF4 + adds r0, r2, #1 + strb r0, [r1, #0xa] + bl sub_0811C1CC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811BD64 + bl sub_0811BF14 + b _0811BD64 + .align 2, 0 +_0811BDF0: .4byte gUnknown_2039DE4 +_0811BDF4: + bl sub_0811BF14 + b _0811BD64 +_0811BDFA: + movs r0, #0 +_0811BDFC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811BD38 + + thumb_func_start sub_0811BE04 +sub_0811BE04: @ 0x0811BE04 + push {lr} + cmp r0, #1 + beq _0811BE70 + cmp r0, #1 + blo _0811BE54 + cmp r0, #2 + beq _0811BE1A + cmp r0, #3 + beq _0811BE3A + movs r0, #0 + b _0811BE8C +_0811BE1A: + ldr r0, _0811BE2C + ldr r1, [r0] + ldrb r2, [r1, #0xb] + movs r0, #0xb + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _0811BE30 + subs r0, r2, #1 + b _0811BE32 + .align 2, 0 +_0811BE2C: .4byte gUnknown_2039DE4 +_0811BE30: + movs r0, #3 +_0811BE32: + strb r0, [r1, #0xb] + bl sub_0811C17C + b _0811BE8A +_0811BE3A: + ldr r0, _0811BE4C + ldr r1, [r0] + ldrb r2, [r1, #0xb] + movs r0, #0xb + ldrsb r0, [r1, r0] + cmp r0, #2 + bgt _0811BE50 + adds r0, r2, #1 + b _0811BE32 + .align 2, 0 +_0811BE4C: .4byte gUnknown_2039DE4 +_0811BE50: + movs r0, #0 + b _0811BE32 +_0811BE54: + ldr r0, _0811BE6C + ldr r1, [r0] + ldrb r0, [r1, #0xa] + adds r0, #1 + strb r0, [r1, #0xa] + bl sub_0811C1CC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811BE8A + b _0811BE86 + .align 2, 0 +_0811BE6C: .4byte gUnknown_2039DE4 +_0811BE70: + ldr r2, _0811BE90 + ldr r1, [r2] + ldrb r0, [r1, #0xa] + subs r0, #1 + strb r0, [r1, #0xa] + ldr r0, [r2] + ldrb r0, [r0, #0xa] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _0811BE8A +_0811BE86: + bl sub_0811BF14 +_0811BE8A: + movs r0, #0xf +_0811BE8C: + pop {r1} + bx r1 + .align 2, 0 +_0811BE90: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BE04 + + thumb_func_start sub_0811BE94 +sub_0811BE94: @ 0x0811BE94 + push {lr} + adds r2, r0, #0 + cmp r2, #1 + beq _0811BEE4 + cmp r2, #1 + blo _0811BEF8 + cmp r2, #2 + beq _0811BEAC + cmp r2, #3 + beq _0811BEC8 + movs r0, #0 + b _0811BF0A +_0811BEAC: + ldr r0, _0811BEC0 + ldr r1, [r0] + ldrb r3, [r1, #0xb] + movs r0, #0xb + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0811BEC4 + subs r0, r3, #1 + b _0811BF06 + .align 2, 0 +_0811BEC0: .4byte gUnknown_2039DE4 +_0811BEC4: + strb r2, [r1, #0xb] + b _0811BF08 +_0811BEC8: + ldr r0, _0811BEDC + ldr r1, [r0] + ldrb r2, [r1, #0xb] + movs r0, #0xb + ldrsb r0, [r1, r0] + cmp r0, #1 + bgt _0811BEE0 + adds r0, r2, #1 + b _0811BF06 + .align 2, 0 +_0811BEDC: .4byte gUnknown_2039DE4 +_0811BEE0: + movs r0, #0 + b _0811BF06 +_0811BEE4: + ldr r0, _0811BEF4 + ldr r1, [r0] + ldrb r0, [r1, #0xb] + adds r0, #1 + strb r0, [r1, #0xb] + bl sub_0811BF38 + b _0811BF08 + .align 2, 0 +_0811BEF4: .4byte gUnknown_2039DE4 +_0811BEF8: + ldr r2, _0811BF10 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #0xa] + ldr r1, [r2] + ldrb r0, [r1, #0xb] + adds r0, #1 +_0811BF06: + strb r0, [r1, #0xb] +_0811BF08: + movs r0, #0xf +_0811BF0A: + pop {r1} + bx r1 + .align 2, 0 +_0811BF10: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BE94 + + thumb_func_start sub_0811BF14 +sub_0811BF14: @ 0x0811BF14 + push {lr} + ldr r2, _0811BF34 + 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 _0811BF2E + subs r0, r1, #1 + strb r0, [r2, #0xb] +_0811BF2E: + pop {r0} + bx r0 + .align 2, 0 +_0811BF34: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811BF14 + + thumb_func_start sub_0811BF38 +sub_0811BF38: @ 0x0811BF38 + push {r4, lr} + ldr r4, _0811BF50 + ldr r1, [r4] + ldrb r0, [r1, #9] + cmp r0, #0 + bne _0811BF54 + movs r0, #2 + strb r0, [r1, #0xa] + bl sub_0811C17C + b _0811BF5E + .align 2, 0 +_0811BF50: .4byte gUnknown_2039DE4 +_0811BF54: + ldrb r0, [r1, #0xb] + bl sub_0811C160 + ldr r1, [r4] + strb r0, [r1, #0xa] +_0811BF5E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811BF38 + + thumb_func_start sub_0811BF64 +sub_0811BF64: @ 0x0811BF64 + push {r4, lr} + cmp r0, #5 + bls _0811BF6C + b _0811C090 +_0811BF6C: + lsls r0, r0, #2 + ldr r1, _0811BF78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811BF78: .4byte _0811BF7C +_0811BF7C: @ jump table + .4byte _0811C018 @ case 0 + .4byte _0811BFF6 @ case 1 + .4byte _0811BF94 @ case 2 + .4byte _0811BFC0 @ case 3 + .4byte _0811C040 @ case 4 + .4byte _0811C060 @ case 5 +_0811BF94: + ldr r0, _0811BFB4 + ldr r1, [r0] + movs r0, #0x11 + ldrsb r0, [r1, r0] + ldrb r3, [r1, #0xe] + adds r0, r0, r3 + cmp r0, #0 + bgt _0811BFA6 + b _0811C090 +_0811BFA6: + ldrb r2, [r1, #0x11] + movs r0, #0x11 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _0811BFB8 + subs r0, r2, #1 + b _0811BFDE + .align 2, 0 +_0811BFB4: .4byte gUnknown_2039DE4 +_0811BFB8: + subs r0, r3, #1 + strb r0, [r1, #0xe] + movs r4, #0x13 + b _0811BFEE +_0811BFC0: + ldr r0, _0811BFE4 + ldr r1, [r0] + movs r0, #0x11 + ldrsb r0, [r1, r0] + ldrb r3, [r1, #0xe] + adds r0, r0, r3 + ldrb r2, [r1, #0xf] + cmp r0, r2 + bge _0811C090 + ldrb r2, [r1, #0x11] + movs r0, #0x11 + ldrsb r0, [r1, r0] + cmp r0, #2 + bgt _0811BFE8 + adds r0, r2, #1 +_0811BFDE: + strb r0, [r1, #0x11] + movs r4, #0x12 + b _0811BFEE + .align 2, 0 +_0811BFE4: .4byte gUnknown_2039DE4 +_0811BFE8: + adds r0, r3, #1 + strb r0, [r1, #0xe] + movs r4, #0x14 +_0811BFEE: + bl sub_0811C1A4 + adds r0, r4, #0 + b _0811C092 +_0811BFF6: + ldr r0, _0811C008 + ldr r1, [r0] + ldrb r2, [r1, #0x10] + movs r0, #0x10 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _0811C00C + subs r0, r2, #1 + b _0811C00E + .align 2, 0 +_0811C008: .4byte gUnknown_2039DE4 +_0811C00C: + movs r0, #2 +_0811C00E: + strb r0, [r1, #0x10] + bl sub_0811C1A4 +_0811C014: + movs r0, #0x12 + b _0811C092 +_0811C018: + ldr r4, _0811C03C + ldr r1, [r4] + ldrb r2, [r1, #0x10] + movs r0, #0x10 + ldrsb r0, [r1, r0] + cmp r0, #1 + bgt _0811C036 + adds r0, r2, #1 + strb r0, [r1, #0x10] + bl sub_0811C220 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811C014 + ldr r1, [r4] +_0811C036: + movs r0, #0 + strb r0, [r1, #0x10] + b _0811C014 + .align 2, 0 +_0811C03C: .4byte gUnknown_2039DE4 +_0811C040: + ldr r0, _0811C054 + ldr r2, [r0] + ldrb r0, [r2, #0xe] + adds r1, r0, #0 + cmp r1, #0 + beq _0811C090 + cmp r1, #3 + bls _0811C058 + subs r0, #4 + b _0811C05A + .align 2, 0 +_0811C054: .4byte gUnknown_2039DE4 +_0811C058: + movs r0, #0 +_0811C05A: + strb r0, [r2, #0xe] + movs r0, #0x15 + b _0811C092 +_0811C060: + ldr r3, _0811C08C + ldr r1, [r3] + ldrb r2, [r1, #0xe] + ldrb r0, [r1, #0xf] + subs r0, #4 + cmp r2, r0 + bgt _0811C090 + adds r0, r2, #4 + strb r0, [r1, #0xe] + ldr r2, [r3] + ldrb r1, [r2, #0xe] + ldrb r3, [r2, #0xf] + subs r0, r3, #3 + cmp r1, r0 + ble _0811C084 + adds r0, r3, #0 + adds r0, #0xfd + strb r0, [r2, #0xe] +_0811C084: + bl sub_0811C1A4 + movs r0, #0x16 + b _0811C092 + .align 2, 0 +_0811C08C: .4byte gUnknown_2039DE4 +_0811C090: + movs r0, #0 +_0811C092: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811BF64 + + thumb_func_start sub_0811C098 +sub_0811C098: @ 0x0811C098 + ldr r0, _0811C0B4 + ldr r0, [r0] + movs r2, #6 + ldrsb r2, [r0, r2] + ldrb r1, [r0, #2] + muls r1, r2, r1 + ldrb r0, [r0, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0811C0B4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C098 + + thumb_func_start sub_0811C0B8 +sub_0811C0B8: @ 0x0811C0B8 + ldr r0, _0811C0D4 + ldr r2, [r0] + movs r0, #0xb + ldrsb r0, [r2, r0] + ldrb r1, [r2, #0xc] + adds r0, r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + movs r0, #0xa + ldrsb r0, [r2, r0] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0811C0D4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C0B8 + + thumb_func_start sub_0811C0D8 +sub_0811C0D8: @ 0x0811C0D8 + push {lr} + ldr r0, _0811C0F8 + ldr r2, [r0] + movs r0, #0xa + ldrsb r0, [r2, r0] + cmp r0, #4 + bgt _0811C0FC + movs r0, #0xb + ldrsb r0, [r2, r0] + lsls r1, r0, #2 + adds r1, r1, r0 + adds r1, #1 + movs r0, #0xa + ldrsb r0, [r2, r0] + adds r0, r0, r1 + b _0811C130 + .align 2, 0 +_0811C0F8: .4byte gUnknown_2039DE4 +_0811C0FC: + cmp r0, #9 + bgt _0811C11E + movs r0, #0xb + ldrsb r0, [r2, r0] + cmp r0, #2 + bgt _0811C116 + lsls r1, r0, #2 + adds r1, r1, r0 + movs r0, #0xa + ldrsb r0, [r2, r0] + adds r0, r0, r1 + adds r0, #0x10 + b _0811C130 +_0811C116: + movs r0, #0xa + ldrsb r0, [r2, r0] + adds r0, #0x22 + b _0811C130 +_0811C11E: + cmp r0, #0xc + bgt _0811C13A + movs r0, #0xb + ldrsb r0, [r2, r0] + cmp r0, #0 + bne _0811C136 + movs r0, #0xa + ldrsb r0, [r2, r0] + adds r0, #0x1a +_0811C130: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0811C13C +_0811C136: + movs r0, #0 + b _0811C13C +_0811C13A: + movs r0, #0x2c +_0811C13C: + pop {r1} + bx r1 + thumb_func_end sub_0811C0D8 + + thumb_func_start sub_0811C140 +sub_0811C140: @ 0x0811C140 + ldr r0, _0811C15C + ldr r2, [r0] + movs r0, #0x11 + ldrsb r0, [r2, r0] + ldrb r1, [r2, #0xe] + adds r0, r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + movs r0, #0x10 + ldrsb r0, [r2, r0] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_0811C15C: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C140 + + thumb_func_start sub_0811C160 +sub_0811C160: @ 0x0811C160 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0811C172 + cmp r0, #1 + beq _0811C176 + movs r0, #9 + b _0811C178 +_0811C172: + movs r0, #0xd + b _0811C178 +_0811C176: + movs r0, #0xa +_0811C178: + pop {r1} + bx r1 + thumb_func_end sub_0811C160 + + thumb_func_start sub_0811C17C +sub_0811C17C: @ 0x0811C17C + push {lr} + b _0811C192 +_0811C180: + ldr r0, _0811C1A0 + ldr r1, [r0] + ldrb r2, [r1, #0xa] + movs r0, #0xa + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0811C19C + subs r0, r2, #1 + strb r0, [r1, #0xa] +_0811C192: + bl sub_0811C1CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C180 +_0811C19C: + pop {r0} + bx r0 + .align 2, 0 +_0811C1A0: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C17C + + thumb_func_start sub_0811C1A4 +sub_0811C1A4: @ 0x0811C1A4 + push {lr} + b _0811C1BA +_0811C1A8: + ldr r0, _0811C1C8 + ldr r1, [r0] + ldrb r2, [r1, #0x10] + movs r0, #0x10 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0811C1C4 + subs r0, r2, #1 + strb r0, [r1, #0x10] +_0811C1BA: + bl sub_0811C220 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C1A8 +_0811C1C4: + pop {r0} + bx r0 + .align 2, 0 +_0811C1C8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C1A4 + + thumb_func_start sub_0811C1CC +sub_0811C1CC: @ 0x0811C1CC + push {r4, lr} + ldr r4, _0811C1F8 + ldr r1, [r4] + ldrb r0, [r1, #9] + cmp r0, #0 + bne _0811C1FC + bl sub_0811C0B8 + adds r4, r0, #0 + bl sub_0811F908 + movs r1, #0 + lsls r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _0811C1F2 + movs r1, #1 +_0811C1F2: + adds r0, r1, #0 + b _0811C218 + .align 2, 0 +_0811C1F8: .4byte gUnknown_2039DE4 +_0811C1FC: + ldrb r0, [r1, #0xb] + bl sub_0811C160 + movs r2, #0 + ldr r1, [r4] + ldrb r1, [r1, #0xa] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + ble _0811C216 + movs r2, #1 +_0811C216: + adds r0, r2, #0 +_0811C218: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C1CC + + thumb_func_start sub_0811C220 +sub_0811C220: @ 0x0811C220 + push {r4, lr} + bl sub_0811C140 + adds r4, r0, #0 + bl sub_0811FB08 + movs r1, #0 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + cmp r4, r0 + blo _0811C238 + movs r1, #1 +_0811C238: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811C220 + + thumb_func_start sub_0811C240 +sub_0811C240: @ 0x0811C240 + ldr r2, _0811C258 + ldr r0, _0811C25C + ldr r0, [r0] + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #3] + lsrs r0, r0, #7 + bx lr + .align 2, 0 +_0811C258: .4byte gUnknown_8573134 +_0811C25C: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C240 + + thumb_func_start sub_0811C260 +sub_0811C260: @ 0x0811C260 + ldr r0, _0811C268 + ldr r0, [r0] + ldrb r0, [r0] + bx lr + .align 2, 0 +_0811C268: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C260 + + thumb_func_start sub_0811C26C +sub_0811C26C: @ 0x0811C26C + ldr r2, _0811C284 + ldr r0, _0811C288 + ldr r0, [r0] + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #3] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + bx lr + .align 2, 0 +_0811C284: .4byte gUnknown_8573134 +_0811C288: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C26C + + thumb_func_start sub_0811C28C +sub_0811C28C: @ 0x0811C28C + ldr r0, _0811C294 + ldr r0, [r0] + ldr r0, [r0, #0x34] + bx lr + .align 2, 0 +_0811C294: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C28C + + thumb_func_start sub_0811C298 +sub_0811C298: @ 0x0811C298 + ldr r0, _0811C2A0 + ldr r0, [r0] + adds r0, #0x3c + bx lr + .align 2, 0 +_0811C2A0: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C298 + + thumb_func_start sub_0811C2A4 +sub_0811C2A4: @ 0x0811C2A4 + ldr r0, _0811C2AC + ldr r0, [r0] + ldrb r0, [r0, #3] + bx lr + .align 2, 0 +_0811C2AC: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C2A4 + + thumb_func_start sub_0811C2B0 +sub_0811C2B0: @ 0x0811C2B0 + ldr r0, _0811C2B8 + ldr r0, [r0] + ldrb r0, [r0, #2] + bx lr + .align 2, 0 +_0811C2B8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C2B0 + + thumb_func_start sub_0811C2BC +sub_0811C2BC: @ 0x0811C2BC + ldr r0, _0811C2C4 + ldr r0, [r0] + ldrb r0, [r0, #5] + bx lr + .align 2, 0 +_0811C2C4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C2BC + + thumb_func_start sub_0811C2C8 +sub_0811C2C8: @ 0x0811C2C8 + ldr r0, _0811C2D0 + ldr r0, [r0] + ldrb r0, [r0, #6] + bx lr + .align 2, 0 +_0811C2D0: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C2C8 + + thumb_func_start sub_0811C2D4 +sub_0811C2D4: @ 0x0811C2D4 + push {r4, r5, lr} + ldr r4, _0811C304 + ldr r2, _0811C308 + ldr r5, [r2] + ldrb r3, [r5, #1] + lsls r2, r3, #1 + adds r2, r2, r3 + lsls r2, r2, #3 + adds r3, r4, #0 + adds r3, #8 + adds r2, r2, r3 + ldr r2, [r2] + str r2, [r0] + ldrb r2, [r5, #1] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, #0xc + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C304: .4byte gUnknown_8573134 +_0811C308: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C2D4 + + thumb_func_start sub_0811C30C +sub_0811C30C: @ 0x0811C30C + push {r4, r5, lr} + ldr r4, _0811C33C + ldr r2, _0811C340 + ldr r5, [r2] + ldrb r3, [r5, #1] + lsls r2, r3, #1 + adds r2, r2, r3 + lsls r2, r2, #3 + adds r3, r4, #0 + adds r3, #0x10 + adds r2, r2, r3 + ldr r2, [r2] + str r2, [r0] + ldrb r2, [r5, #1] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, #0x14 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C33C: .4byte gUnknown_8573134 +_0811C340: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C30C + + thumb_func_start sub_0811C344 +sub_0811C344: @ 0x0811C344 + push {lr} + adds r2, r0, #0 + ldr r0, _0811C358 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #4 + bne _0811C360 + ldr r0, _0811C35C + b _0811C37E + .align 2, 0 +_0811C358: .4byte gUnknown_2039DE4 +_0811C35C: .4byte gUnknown_85CBA71 +_0811C360: + cmp r0, #4 + blt _0811C37C + cmp r0, #0x10 + bgt _0811C37C + cmp r0, #0xf + blt _0811C37C + ldr r0, _0811C374 + str r0, [r2] + ldr r0, _0811C378 + b _0811C382 + .align 2, 0 +_0811C374: .4byte gUnknown_85CBCAB +_0811C378: .4byte gUnknown_85CBCB7 +_0811C37C: + ldr r0, _0811C388 +_0811C37E: + str r0, [r2] + movs r0, #0 +_0811C382: + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0811C388: .4byte gUnknown_85CBA63 + thumb_func_end sub_0811C344 + + thumb_func_start sub_0811C38C +sub_0811C38C: @ 0x0811C38C + ldr r2, _0811C398 + str r2, [r0] + ldr r0, _0811C39C + str r0, [r1] + bx lr + .align 2, 0 +_0811C398: .4byte gUnknown_85CBAA7 +_0811C39C: .4byte gUnknown_85CBAB6 + thumb_func_end sub_0811C38C + + thumb_func_start sub_0811C3A0 +sub_0811C3A0: @ 0x0811C3A0 + ldr r2, _0811C3B0 + ldr r3, [r2] + ldrb r2, [r3, #0xa] + strb r2, [r0] + ldrb r0, [r3, #0xb] + strb r0, [r1] + bx lr + .align 2, 0 +_0811C3B0: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3A0 + + thumb_func_start sub_0811C3B4 +sub_0811C3B4: @ 0x0811C3B4 + ldr r0, _0811C3BC + ldr r0, [r0] + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_0811C3BC: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3B4 + + thumb_func_start sub_0811C3C0 +sub_0811C3C0: @ 0x0811C3C0 + ldr r0, _0811C3C8 + ldr r0, [r0] + ldrb r0, [r0, #0xc] + bx lr + .align 2, 0 +_0811C3C8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3C0 + + thumb_func_start sub_0811C3CC +sub_0811C3CC: @ 0x0811C3CC + ldr r2, _0811C3DC + ldr r3, [r2] + ldrb r2, [r3, #0x10] + strb r2, [r0] + ldrb r0, [r3, #0x11] + strb r0, [r1] + bx lr + .align 2, 0 +_0811C3DC: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3CC + + thumb_func_start sub_0811C3E0 +sub_0811C3E0: @ 0x0811C3E0 + ldr r0, _0811C3E8 + ldr r0, [r0] + ldrb r0, [r0, #0xe] + bx lr + .align 2, 0 +_0811C3E8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3E0 + + thumb_func_start sub_0811C3EC +sub_0811C3EC: @ 0x0811C3EC + ldr r0, _0811C3F4 + ldr r0, [r0] + ldrb r0, [r0, #0xf] + bx lr + .align 2, 0 +_0811C3F4: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C3EC + + thumb_func_start sub_0811C3F8 +sub_0811C3F8: @ 0x0811C3F8 + movs r0, #0 + bx lr + thumb_func_end sub_0811C3F8 + + thumb_func_start sub_0811C3FC +sub_0811C3FC: @ 0x0811C3FC + push {lr} + ldr r0, _0811C410 + ldr r1, [r0] + ldrb r0, [r1, #4] + cmp r0, #2 + beq _0811C414 + cmp r0, #3 + beq _0811C41E + b _0811C428 + .align 2, 0 +_0811C410: .4byte gUnknown_2039DE4 +_0811C414: + ldrb r0, [r1, #9] + cmp r0, #0 + bne _0811C428 + ldrb r0, [r1, #0xc] + b _0811C420 +_0811C41E: + ldrb r0, [r1, #0xe] +_0811C420: + cmp r0, #0 + beq _0811C428 + movs r0, #1 + b _0811C42A +_0811C428: + movs r0, #0 +_0811C42A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C3FC + + thumb_func_start sub_0811C430 +sub_0811C430: @ 0x0811C430 + push {lr} + ldr r0, _0811C444 + ldr r2, [r0] + ldrb r0, [r2, #4] + cmp r0, #2 + beq _0811C448 + cmp r0, #3 + beq _0811C45E + b _0811C46C + .align 2, 0 +_0811C444: .4byte gUnknown_2039DE4 +_0811C448: + ldrb r0, [r2, #9] + cmp r0, #0 + bne _0811C46C + ldrb r1, [r2, #0xc] + adds r1, #4 + ldrb r0, [r2, #0xd] + subs r0, #1 + cmp r1, r0 + bgt _0811C46C + movs r0, #1 + b _0811C46E +_0811C45E: + ldrb r0, [r2, #0xe] + adds r0, #4 + ldrb r2, [r2, #0xf] + cmp r0, r2 + bgt _0811C46C + movs r0, #1 + b _0811C46E +_0811C46C: + movs r0, #0 +_0811C46E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C430 + + thumb_func_start sub_0811C474 +sub_0811C474: @ 0x0811C474 + push {lr} + bl sub_0811C240 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C474 + + thumb_func_start sub_0811C480 +sub_0811C480: @ 0x0811C480 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + movs r2, #0 + cmp r2, r3 + bhs _0811C4B6 + ldr r0, _0811C4A8 + ldr r0, [r0] + adds r4, r0, #0 + adds r4, #0x3c +_0811C496: + lsls r0, r2, #1 + adds r1, r0, r5 + adds r0, r4, r0 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + beq _0811C4AC + movs r0, #1 + b _0811C4B8 + .align 2, 0 +_0811C4A8: .4byte gUnknown_2039DE4 +_0811C4AC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r3 + blo _0811C496 +_0811C4B6: + movs r0, #0 +_0811C4B8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C480 + + thumb_func_start sub_0811C4C0 +sub_0811C4C0: @ 0x0811C4C0 + ldr r0, _0811C4C8 + ldr r0, [r0] + ldrb r0, [r0, #0x12] + bx lr + .align 2, 0 +_0811C4C8: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C4C0 + + thumb_func_start sub_0811C4CC +sub_0811C4CC: @ 0x0811C4CC + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0 + ldr r2, _0811C4E4 +_0811C4D6: + ldrb r0, [r2] + cmp r0, r3 + bne _0811C4E8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + b _0811C4F2 + .align 2, 0 +_0811C4E4: .4byte gUnknown_8573134 +_0811C4E8: + adds r2, #0x18 + adds r1, #1 + cmp r1, #0x14 + bls _0811C4D6 + movs r0, #0 +_0811C4F2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C4CC + + thumb_func_start sub_0811C4F8 +sub_0811C4F8: @ 0x0811C4F8 + push {r4, lr} + movs r2, #0 + ldr r0, _0811C518 + ldr r0, [r0] + ldrb r1, [r0, #7] + cmp r2, r1 + bge _0811C528 + ldr r4, _0811C51C + adds r3, r1, #0 + adds r1, r0, #0 + adds r1, #0x3c +_0811C50E: + ldrh r0, [r1] + cmp r0, r4 + beq _0811C520 + movs r0, #0 + b _0811C52A + .align 2, 0 +_0811C518: .4byte gUnknown_2039DE4 +_0811C51C: .4byte 0x0000FFFF +_0811C520: + adds r1, #2 + adds r2, #1 + cmp r2, r3 + blt _0811C50E +_0811C528: + movs r0, #1 +_0811C52A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811C4F8 + + thumb_func_start sub_0811C530 +sub_0811C530: @ 0x0811C530 + push {r4, lr} + movs r2, #0 + ldr r0, _0811C550 + ldr r0, [r0] + ldrb r1, [r0, #7] + cmp r2, r1 + bge _0811C560 + ldr r4, _0811C554 + adds r3, r1, #0 + adds r1, r0, #0 + adds r1, #0x3c +_0811C546: + ldrh r0, [r1] + cmp r0, r4 + bne _0811C558 + movs r0, #0 + b _0811C562 + .align 2, 0 +_0811C550: .4byte gUnknown_2039DE4 +_0811C554: .4byte 0x0000FFFF +_0811C558: + adds r1, #2 + adds r2, #1 + cmp r2, r3 + blt _0811C546 +_0811C560: + movs r0, #1 +_0811C562: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811C530 + + thumb_func_start sub_0811C568 +sub_0811C568: @ 0x0811C568 + push {r4, lr} + ldr r0, _0811C57C + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0x11 + bne _0811C584 + bl sub_0811C4F8 + b _0811C5A0 + .align 2, 0 +_0811C57C: .4byte gUnknown_2039DE4 +_0811C580: + movs r0, #0 + b _0811C5A0 +_0811C584: + ldr r0, _0811C5A8 + ldr r0, [r0] + movs r2, #0 + ldr r3, _0811C5AC + ldr r4, _0811C5B0 + adds r1, r0, r4 +_0811C590: + ldrh r0, [r1] + cmp r0, r3 + bne _0811C580 + adds r1, #2 + adds r2, #1 + cmp r2, #8 + ble _0811C590 + movs r0, #1 +_0811C5A0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811C5A8: .4byte gUnknown_3005AEC +_0811C5AC: .4byte 0x0000FFFF +_0811C5B0: .4byte 0x00003B5A + thumb_func_end sub_0811C568 + + thumb_func_start sub_0811C5B4 +sub_0811C5B4: @ 0x0811C5B4 + push {lr} + ldr r0, _0811C5C8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0x12 + bne _0811C5CC + bl sub_0811C4F8 + b _0811C5E2 + .align 2, 0 +_0811C5C8: .4byte gUnknown_2039DE4 +_0811C5CC: + ldr r0, _0811C5E8 + ldr r0, [r0] + ldr r1, _0811C5EC + adds r0, r0, r1 + movs r2, #0 + ldrh r1, [r0, #0x14] + ldr r0, _0811C5F0 + cmp r1, r0 + bne _0811C5E0 + movs r2, #1 +_0811C5E0: + adds r0, r2, #0 +_0811C5E2: + pop {r1} + bx r1 + .align 2, 0 +_0811C5E8: .4byte gUnknown_3005AEC +_0811C5EC: .4byte 0x00003B58 +_0811C5F0: .4byte 0x0000FFFF + thumb_func_end sub_0811C5B4 + + thumb_func_start sub_0811C5F4 +sub_0811C5F4: @ 0x0811C5F4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0811C61C + ldr r4, [r0] + bl sub_081AF8C8 + ldr r0, _0811C620 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0811C624 + movs r0, #0 + adds r1, r4, #0 + bl sub_081AF8E4 + b _0811C62C + .align 2, 0 +_0811C61C: .4byte gUnknown_3005AEC +_0811C620: .4byte 0x00003B70 +_0811C624: + ldr r1, _0811C63C + movs r0, #0 + bl sub_081AF8E4 +_0811C62C: + ldr r1, _0811C640 + adds r0, r5, #0 + bl sub_081AF900 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C63C: .4byte gUnknown_85CBC85 +_0811C640: .4byte gUnknown_85CBC7B + thumb_func_end sub_0811C5F4 + + thumb_func_start sub_0811C644 +sub_0811C644: @ 0x0811C644 + push {r4, r5, lr} + ldr r0, _0811C654 + ldr r0, [r0] + adds r4, r0, #0 + adds r4, #0x3c + ldr r2, _0811C658 + movs r5, #0 + b _0811C676 + .align 2, 0 +_0811C654: .4byte gUnknown_2039DE4 +_0811C658: .4byte gUnknown_2021C54 +_0811C65C: + ldrh r1, [r4] + adds r0, r2, #0 + movs r2, #0 + bl sub_0811F990 + adds r2, r0, #0 + movs r0, #0 + strb r0, [r2] + adds r2, #1 + adds r4, #2 + adds r5, #1 + ldr r0, _0811C688 + ldr r0, [r0] +_0811C676: + ldrb r0, [r0, #7] + cmp r5, r0 + blt _0811C65C + subs r2, #1 + movs r0, #0xff + strb r0, [r2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C688: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C644 + + thumb_func_start sub_0811C68C +sub_0811C68C: @ 0x0811C68C + push {r4, r5, lr} + ldr r5, _0811C6A4 + ldr r0, [r5] + ldrb r0, [r0] + cmp r0, #9 + beq _0811C6F4 + cmp r0, #9 + bgt _0811C6A8 + cmp r0, #0 + beq _0811C6B2 + b _0811C718 + .align 2, 0 +_0811C6A4: .4byte gUnknown_2039DE4 +_0811C6A8: + cmp r0, #0xd + beq _0811C710 + cmp r0, #0x14 + beq _0811C6C0 + b _0811C718 +_0811C6B2: + ldr r0, _0811C6BC + bl sub_0809D018 + b _0811C718 + .align 2, 0 +_0811C6BC: .4byte 0x00000865 +_0811C6C0: + bl sub_0811C724 + cmp r0, #0 + beq _0811C6D4 + ldr r1, _0811C6D0 + movs r0, #1 + b _0811C716 + .align 2, 0 +_0811C6D0: .4byte gUnknown_2037280 +_0811C6D4: + bl sub_0811C744 + adds r1, r0, #0 + cmp r1, #0 + beq _0811C6E8 + ldr r1, _0811C6E4 + movs r0, #2 + b _0811C716 + .align 2, 0 +_0811C6E4: .4byte gUnknown_2037280 +_0811C6E8: + ldr r0, _0811C6F0 + strh r1, [r0] + b _0811C718 + .align 2, 0 +_0811C6F0: .4byte gUnknown_2037280 +_0811C6F4: + bl sub_0811C644 + ldr r4, _0811C70C + ldr r0, [r5] + adds r0, #0x3c + bl sub_081226E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + b _0811C718 + .align 2, 0 +_0811C70C: .4byte gUnknown_2037280 +_0811C710: + bl sub_0811C764 + ldr r1, _0811C720 +_0811C716: + strh r0, [r1] +_0811C718: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811C720: .4byte gUnknown_2037280 + thumb_func_end sub_0811C68C + + thumb_func_start sub_0811C724 +sub_0811C724: @ 0x0811C724 + push {lr} + ldr r0, _0811C740 + movs r1, #4 + bl sub_0811C480 + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C738 + movs r1, #1 +_0811C738: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0811C740: .4byte gUnknown_857332C + thumb_func_end sub_0811C724 + + thumb_func_start sub_0811C744 +sub_0811C744: @ 0x0811C744 + push {lr} + ldr r0, _0811C760 + movs r1, #4 + bl sub_0811C480 + movs r1, #0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C758 + movs r1, #1 +_0811C758: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0811C760: .4byte gUnknown_8573334 + thumb_func_end sub_0811C744 + + thumb_func_start sub_0811C764 +sub_0811C764: @ 0x0811C764 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0x80 + lsls r5, r5, #9 +_0811C76C: + lsls r0, r4, #2 + ldr r1, _0811C784 + adds r0, r0, r1 + movs r1, #2 + bl sub_0811C480 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C788 + lsrs r0, r5, #0x10 + b _0811C796 + .align 2, 0 +_0811C784: .4byte gUnknown_857333C +_0811C788: + movs r0, #0x80 + lsls r0, r0, #9 + adds r5, r5, r0 + adds r4, #1 + cmp r4, #4 + ble _0811C76C + movs r0, #0 +_0811C796: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0811C764 + + thumb_func_start sub_0811C79C +sub_0811C79C: @ 0x0811C79C + push {r4, r5, r6, lr} + ldr r6, _0811C81C + ldr r1, [r6] + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0811C814 + movs r0, #0 + strb r0, [r1, #0x13] + ldr r4, [r6] + bl sub_0811C098 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r4, #0x3c + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_0811F25C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bhi _0811C814 + ldr r0, [r6] + movs r1, #6 + ldrsb r1, [r0, r1] + ldrb r0, [r0, #2] + adds r5, r1, #0 + muls r5, r0, r5 + movs r4, #0 + cmp r4, r0 + bge _0811C80C +_0811C7E0: + ldr r2, [r6] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r4, r0 + beq _0811C800 + lsls r1, r5, #1 + adds r0, r2, #0 + adds r0, #0x3c + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0811F25C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bls _0811C814 +_0811C800: + adds r5, #1 + adds r4, #1 + ldr r0, [r6] + ldrb r0, [r0, #2] + cmp r4, r0 + blt _0811C7E0 +_0811C80C: + ldr r0, _0811C81C + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #0x13] +_0811C814: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811C81C: .4byte gUnknown_2039DE4 + thumb_func_end sub_0811C79C + + thumb_func_start sub_0811C820 +sub_0811C820: @ 0x0811C820 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _0811C844 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _0811C848 + adds r0, r1, #0 + bl sub_0811F25C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bls _0811C848 + movs r0, #1 + b _0811C84A + .align 2, 0 +_0811C844: .4byte gUnknown_2039DE4 +_0811C848: + movs r0, #0 +_0811C84A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C820 + + thumb_func_start sub_0811C850 +sub_0811C850: @ 0x0811C850 + push {lr} + bl sub_0811D748 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811C860 + movs r0, #1 + b _0811C862 +_0811C860: + movs r0, #0 +_0811C862: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811C850 + + thumb_func_start sub_0811C868 +sub_0811C868: @ 0x0811C868 + push {r4, lr} + sub sp, #8 + ldr r0, _0811C884 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #5 + bls _0811C878 + b _0811C9E0 +_0811C878: + lsls r0, r0, #2 + ldr r1, _0811C888 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811C884: .4byte gUnknown_2039DE8 +_0811C888: .4byte _0811C88C +_0811C88C: @ jump table + .4byte _0811C8A4 @ case 0 + .4byte _0811C908 @ case 1 + .4byte _0811C950 @ case 2 + .4byte _0811C96C @ case 3 + .4byte _0811C97E @ case 4 + .4byte _0811C994 @ case 5 +_0811C8A4: + movs r0, #0 + bl sub_080017D4 + ldr r1, _0811C8F4 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _0811C8F8 + ldr r1, [r4] + ldr r0, _0811C8FC + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + ldr r1, [r4] + movs r0, #0xbf + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r0, _0811C900 + bl sub_08003090 + bl sub_08004480 + bl sub_0811D814 + bl sub_0811D7B4 + movs r0, #0 + str r0, [sp, #4] + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _0811C904 + add r0, sp, #4 + bl CpuFastSet + b _0811C9E4 + .align 2, 0 +_0811C8F4: .4byte gUnknown_857437C +_0811C8F8: .4byte gUnknown_2039DE8 +_0811C8FC: .4byte 0x00000AFC +_0811C900: .4byte gUnknown_857438C +_0811C904: .4byte 0x01000100 +_0811C908: + ldr r1, _0811C944 + movs r0, #0 + str r0, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0811C948 + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + bl sub_0811DE14 + ldr r0, _0811C94C + ldr r0, [r0] + movs r1, #0xbf + lsls r1, r1, #2 + adds r0, r0, r1 + bl sub_0811DCAC + bl sub_0811DB10 + movs r0, #3 + bl sub_08002248 + b _0811C9E4 + .align 2, 0 +_0811C944: .4byte gUnknown_8573E84 +_0811C948: .4byte gUnknown_85740E4 +_0811C94C: .4byte gUnknown_2039DE8 +_0811C950: + ldr r1, _0811C968 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + movs r0, #1 + bl sub_08002248 + b _0811C9E4 + .align 2, 0 +_0811C968: .4byte gUnknown_857427C +_0811C96C: + bl sub_0811D87C + bl sub_0811D990 + bl sub_0811DBA8 + bl sub_0811DE8C + b _0811C9E4 +_0811C97E: + bl sub_0811E6A4 + bl sub_0811C260 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0811C9E4 + bl sub_0811E6D8 + b _0811C9E4 +_0811C994: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811C9EE + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_0811E670 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3b + bl sub_08001144 + movs r0, #3 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0 + bl sub_08001B48 + bl sub_0811ED20 + bl sub_0811EE6C + bl sub_0811EF74 + b _0811C9E4 +_0811C9E0: + movs r0, #0 + b _0811C9F0 +_0811C9E4: + ldr r0, _0811C9F8 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811C9EE: + movs r0, #1 +_0811C9F0: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811C9F8: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811C868 + + thumb_func_start sub_0811C9FC +sub_0811C9FC: @ 0x0811C9FC + push {r4, lr} + ldr r4, _0811CA14 + ldr r0, [r4] + cmp r0, #0 + beq _0811CA0E + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0811CA0E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811CA14: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811C9FC + + thumb_func_start sub_0811CA18 +sub_0811CA18: @ 0x0811CA18 + push {lr} + ldr r1, _0811CA2C + ldr r1, [r1] + movs r2, #0 + strh r0, [r1, #4] + strh r2, [r1] + bl sub_0811CA30 + pop {r0} + bx r0 + .align 2, 0 +_0811CA2C: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811CA18 + + thumb_func_start sub_0811CA30 +sub_0811CA30: @ 0x0811CA30 + push {lr} + ldr r0, _0811CA48 + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #0x22 + bls _0811CA3E + b _0811CB8E +_0811CA3E: + lsls r0, r0, #2 + ldr r1, _0811CA4C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CA48: .4byte gUnknown_2039DE8 +_0811CA4C: .4byte _0811CA50 +_0811CA50: @ jump table + .4byte _0811CB8E @ case 0 + .4byte _0811CADC @ case 1 + .4byte _0811CAE2 @ case 2 + .4byte _0811CAE8 @ case 3 + .4byte _0811CAEE @ case 4 + .4byte _0811CAF4 @ case 5 + .4byte _0811CAFA @ case 6 + .4byte _0811CB00 @ case 7 + .4byte _0811CB06 @ case 8 + .4byte _0811CB0C @ case 9 + .4byte _0811CB12 @ case 10 + .4byte _0811CB18 @ case 11 + .4byte _0811CB1E @ case 12 + .4byte _0811CB24 @ case 13 + .4byte _0811CB2A @ case 14 + .4byte _0811CB30 @ case 15 + .4byte _0811CB36 @ case 16 + .4byte _0811CB3C @ case 17 + .4byte _0811CB42 @ case 18 + .4byte _0811CB48 @ case 19 + .4byte _0811CB4E @ case 20 + .4byte _0811CB54 @ case 21 + .4byte _0811CB5A @ case 22 + .4byte _0811CB60 @ case 23 + .4byte _0811CB8E @ case 24 + .4byte _0811CB8E @ case 25 + .4byte _0811CB8E @ case 26 + .4byte _0811CB8E @ case 27 + .4byte _0811CB8E @ case 28 + .4byte _0811CB66 @ case 29 + .4byte _0811CB6C @ case 30 + .4byte _0811CB72 @ case 31 + .4byte _0811CB78 @ case 32 + .4byte _0811CB7E @ case 33 + .4byte _0811CB84 @ case 34 +_0811CADC: + bl sub_0811CB94 + b _0811CB88 +_0811CAE2: + bl sub_0811CBCC + b _0811CB88 +_0811CAE8: + bl sub_0811CC88 + b _0811CB88 +_0811CAEE: + bl sub_0811CD40 + b _0811CB88 +_0811CAF4: + bl sub_0811CCB8 + b _0811CB88 +_0811CAFA: + bl sub_0811CCFC + b _0811CB88 +_0811CB00: + bl sub_0811CD84 + b _0811CB88 +_0811CB06: + bl sub_0811CDCC + b _0811CB88 +_0811CB0C: + bl sub_0811CE08 + b _0811CB88 +_0811CB12: + bl sub_0811CED4 + b _0811CB88 +_0811CB18: + bl sub_0811D0E4 + b _0811CB88 +_0811CB1E: + bl sub_0811D1A4 + b _0811CB88 +_0811CB24: + bl sub_0811D250 + b _0811CB88 +_0811CB2A: + bl sub_0811D310 + b _0811CB88 +_0811CB30: + bl sub_0811D034 + b _0811CB88 +_0811CB36: + bl sub_0811D040 + b _0811CB88 +_0811CB3C: + bl sub_0811D088 + b _0811CB88 +_0811CB42: + bl sub_0811D3CC + b _0811CB88 +_0811CB48: + bl sub_0811D44C + b _0811CB88 +_0811CB4E: + bl sub_0811D3D8 + b _0811CB88 +_0811CB54: + bl sub_0811D544 + b _0811CB88 +_0811CB5A: + bl sub_0811D4BC + b _0811CB88 +_0811CB60: + bl sub_0811CF74 + b _0811CB88 +_0811CB66: + bl sub_0811D5C8 + b _0811CB88 +_0811CB6C: + bl sub_0811D608 + b _0811CB88 +_0811CB72: + bl sub_0811D648 + b _0811CB88 +_0811CB78: + bl sub_0811D688 + b _0811CB88 +_0811CB7E: + bl sub_0811D6C8 + b _0811CB88 +_0811CB84: + bl sub_0811D708 +_0811CB88: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CB90 +_0811CB8E: + movs r0, #0 +_0811CB90: + pop {r1} + bx r1 + thumb_func_end sub_0811CA30 + + thumb_func_start sub_0811CB94 +sub_0811CB94: @ 0x0811CB94 + push {r4, lr} + ldr r4, _0811CBA8 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CBAC + cmp r0, #1 + beq _0811CBBA + b _0811CBC4 + .align 2, 0 +_0811CBA8: .4byte gUnknown_2039DE8 +_0811CBAC: + bl sub_0811DBA8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CBC4 +_0811CBBA: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CBC6 +_0811CBC4: + movs r0, #1 +_0811CBC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CB94 + + thumb_func_start sub_0811CBCC +sub_0811CBCC: @ 0x0811CBCC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + bl sub_0811C298 + adds r5, r0, #0 + bl sub_0811C26C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + bl sub_0811C2BC + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_0811C2C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + bl sub_0811C2B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + lsls r0, r0, #1 + adds r5, r5, r0 + ldr r1, _0811CC3C + mov r2, sl + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0xb + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + movs r6, #0 + cmp r6, r7 + bhs _0811CC56 + ldr r2, _0811CC40 + mov r8, r2 +_0811CC2A: + ldrh r0, [r5] + cmp r0, r8 + beq _0811CC44 + bl sub_0811F25C + adds r1, r4, #2 + adds r0, r0, r1 + b _0811CC46 + .align 2, 0 +_0811CC3C: .4byte gUnknown_8574358 +_0811CC40: .4byte 0x0000FFFF +_0811CC44: + adds r0, r4, #7 +_0811CC46: + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, #2 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r7 + blo _0811CC2A +_0811CC56: + ldr r1, _0811CC84 + mov r2, sl + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + lsrs r1, r1, #5 + mov r2, sb + lsls r0, r2, #1 + adds r1, r1, r0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_0811E76C + movs r0, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811CC84: .4byte gUnknown_8574358 + thumb_func_end sub_0811CBCC + + thumb_func_start sub_0811CC88 +sub_0811CC88: @ 0x0811CC88 + push {r4, lr} + ldr r4, _0811CCB0 + bl sub_0811C2BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0811CCB4 + ldr r1, [r1] + ldrb r1, [r1, #0xa] + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0xa + bl sub_0811E76C + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811CCB0: .4byte gUnknown_85743B4 +_0811CCB4: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811CC88 + + thumb_func_start sub_0811CCB8 +sub_0811CCB8: @ 0x0811CCB8 + push {r4, lr} + ldr r4, _0811CCCC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CCD0 + cmp r0, #1 + beq _0811CCEA + b _0811CCF4 + .align 2, 0 +_0811CCCC: .4byte gUnknown_2039DE8 +_0811CCD0: + bl sub_0811E7A0 + movs r0, #2 + bl sub_0811D9D8 + movs r0, #1 + bl sub_0811DAE4 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CCF4 +_0811CCEA: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CCF6 +_0811CCF4: + movs r0, #1 +_0811CCF6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CCB8 + + thumb_func_start sub_0811CCFC +sub_0811CCFC: @ 0x0811CCFC + push {r4, lr} + ldr r4, _0811CD10 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CD14 + cmp r0, #1 + beq _0811CD2E + b _0811CD38 + .align 2, 0 +_0811CD10: .4byte gUnknown_2039DE8 +_0811CD14: + bl sub_0811E7A0 + movs r0, #3 + bl sub_0811D9D8 + movs r0, #0 + bl sub_0811DAE4 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CD38 +_0811CD2E: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CD3A +_0811CD38: + movs r0, #1 +_0811CD3A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CCFC + + thumb_func_start sub_0811CD40 +sub_0811CD40: @ 0x0811CD40 + push {r4, lr} + ldr r4, _0811CD54 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CD58 + cmp r0, #1 + beq _0811CD72 + b _0811CD7C + .align 2, 0 +_0811CD54: .4byte gUnknown_2039DE8 +_0811CD58: + bl sub_0811E7A0 + movs r0, #1 + bl sub_0811D9D8 + movs r0, #1 + bl sub_0811DAE4 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CD7C +_0811CD72: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CD7E +_0811CD7C: + movs r0, #1 +_0811CD7E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CD40 + + thumb_func_start sub_0811CD84 +sub_0811CD84: @ 0x0811CD84 + push {r4, lr} + ldr r4, _0811CD98 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CD9C + cmp r0, #1 + beq _0811CDBA + b _0811CDC4 + .align 2, 0 +_0811CD98: .4byte gUnknown_2039DE8 +_0811CD9C: + bl sub_0811E7C0 + movs r0, #0 + bl sub_0811D9D8 + bl sub_0811DBA8 + movs r0, #0 + bl sub_08001B48 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CDC4 +_0811CDBA: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811CDC6 +_0811CDC4: + movs r0, #1 +_0811CDC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CD84 + + thumb_func_start sub_0811CDCC +sub_0811CDCC: @ 0x0811CDCC + push {r4, lr} + ldr r4, _0811CDE0 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811CDE4 + cmp r0, #1 + beq _0811CDFA + movs r0, #1 + b _0811CE02 + .align 2, 0 +_0811CDE0: .4byte gUnknown_2039DE8 +_0811CDE4: + bl sub_0811E7C0 + movs r0, #0 + bl sub_0811D9D8 + bl sub_0811DBA8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811CDFA: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0811CE02: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811CDCC + + thumb_func_start sub_0811CE08 +sub_0811CE08: @ 0x0811CE08 + push {lr} + ldr r0, _0811CE20 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #4 + bhi _0811CEC2 + lsls r0, r0, #2 + ldr r1, _0811CE24 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CE20: .4byte gUnknown_2039DE8 +_0811CE24: .4byte _0811CE28 +_0811CE28: @ jump table + .4byte _0811CE3C @ case 0 + .4byte _0811CE58 @ case 1 + .4byte _0811CE6A @ case 2 + .4byte _0811CE80 @ case 3 + .4byte _0811CEA0 @ case 4 +_0811CE3C: + bl sub_0811E7A0 + movs r0, #0 + bl sub_08001B5C + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_0811E670 + bl sub_0811DEDC + b _0811CE8E +_0811CE58: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CECC + movs r0, #0 + bl sub_0811E1E0 + b _0811CE8E +_0811CE6A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CECC + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CECC + b _0811CE8E +_0811CE80: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CECC + bl sub_0811EAF8 +_0811CE8E: + ldr r0, _0811CE9C + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CECC + .align 2, 0 +_0811CE9C: .4byte gUnknown_2039DE8 +_0811CEA0: + bl sub_0811EB64 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CECC + bl sub_0811E7D8 + movs r0, #0 + bl sub_0811EE2C + bl sub_0811ED98 + ldr r0, _0811CEC8 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811CEC2: + movs r0, #0 + b _0811CECE + .align 2, 0 +_0811CEC8: .4byte gUnknown_2039DE8 +_0811CECC: + movs r0, #1 +_0811CECE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811CE08 + + thumb_func_start sub_0811CED4 +sub_0811CED4: @ 0x0811CED4 + push {lr} + ldr r0, _0811CEEC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #4 + bhi _0811CF6C + lsls r0, r0, #2 + ldr r1, _0811CEF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CEEC: .4byte gUnknown_2039DE8 +_0811CEF0: .4byte _0811CEF4 +_0811CEF4: @ jump table + .4byte _0811CF08 @ case 0 + .4byte _0811CF16 @ case 1 + .4byte _0811CF32 @ case 2 + .4byte _0811CF44 @ case 3 + .4byte _0811CF68 @ case 4 +_0811CF08: + bl sub_0811E814 + bl sub_0811EBF8 + bl sub_0811EDFC + b _0811CF58 +_0811CF16: + bl sub_0811EC1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0811CF6C + movs r0, #1 + bl sub_0811E1E0 + ldr r0, _0811CF40 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811CF32: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CF6C + b _0811CF58 + .align 2, 0 +_0811CF40: .4byte gUnknown_2039DE8 +_0811CF44: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811CF6C + bl sub_0811E7C0 + movs r0, #0 + bl sub_08001B48 +_0811CF58: + ldr r0, _0811CF64 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811CF6C + .align 2, 0 +_0811CF64: .4byte gUnknown_2039DE8 +_0811CF68: + movs r0, #0 + b _0811CF6E +_0811CF6C: + movs r0, #1 +_0811CF6E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811CED4 + + thumb_func_start sub_0811CF74 +sub_0811CF74: @ 0x0811CF74 + push {lr} + ldr r0, _0811CF8C + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #4 + bhi _0811D02C + lsls r0, r0, #2 + ldr r1, _0811CF90 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811CF8C: .4byte gUnknown_2039DE8 +_0811CF90: .4byte _0811CF94 +_0811CF94: @ jump table + .4byte _0811CFA8 @ case 0 + .4byte _0811CFBC @ case 1 + .4byte _0811CFD6 @ case 2 + .4byte _0811CFFC @ case 3 + .4byte _0811D022 @ case 4 +_0811CFA8: + bl sub_0811E814 + bl sub_0811EDFC + bl sub_0811ECA8 + movs r0, #5 + bl sub_0811E1E0 + b _0811CFEA +_0811CFBC: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D02C + bl sub_0811ED04 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D02C + bl sub_0811DEDC + b _0811CFEA +_0811CFD6: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D02C + movs r0, #6 + bl sub_0811E1E0 + bl sub_0811ECC4 +_0811CFEA: + ldr r0, _0811CFF8 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D02C + .align 2, 0 +_0811CFF8: .4byte gUnknown_2039DE8 +_0811CFFC: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D02C + bl sub_0811ED04 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D02C + bl sub_0811ED98 + bl sub_0811E7D8 + ldr r0, _0811D028 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D022: + movs r0, #0 + b _0811D02E + .align 2, 0 +_0811D028: .4byte gUnknown_2039DE8 +_0811D02C: + movs r0, #1 +_0811D02E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811CF74 + + thumb_func_start sub_0811D034 +sub_0811D034: @ 0x0811D034 + push {lr} + bl sub_0811E838 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0811D034 + + thumb_func_start sub_0811D040 +sub_0811D040: @ 0x0811D040 + push {r4, lr} + ldr r4, _0811D054 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D058 + cmp r0, #1 + beq _0811D068 + b _0811D07E + .align 2, 0 +_0811D054: .4byte gUnknown_2039DE8 +_0811D058: + movs r0, #1 + movs r1, #4 + bl sub_0811E5C0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D068: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D07E + bl sub_0811E838 + bl sub_0811ED98 + movs r0, #0 + b _0811D080 +_0811D07E: + movs r0, #1 +_0811D080: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D040 + + thumb_func_start sub_0811D088 +sub_0811D088: @ 0x0811D088 + push {r4, lr} + ldr r4, _0811D0A0 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #1 + beq _0811D0BC + cmp r0, #1 + bgt _0811D0A4 + cmp r0, #0 + beq _0811D0AA + b _0811D0DC + .align 2, 0 +_0811D0A0: .4byte gUnknown_2039DE8 +_0811D0A4: + cmp r0, #2 + beq _0811D0D4 + b _0811D0DC +_0811D0AA: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #4 + bl sub_0811E5C0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D0BC: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D0DC + bl sub_0811ED98 + ldr r0, _0811D0D8 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D0D4: + movs r0, #0 + b _0811D0DE + .align 2, 0 +_0811D0D8: .4byte gUnknown_2039DE8 +_0811D0DC: + movs r0, #1 +_0811D0DE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811D088 + + thumb_func_start sub_0811D0E4 +sub_0811D0E4: @ 0x0811D0E4 + push {lr} + ldr r0, _0811D0FC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #5 + bhi _0811D19C + lsls r0, r0, #2 + ldr r1, _0811D100 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D0FC: .4byte gUnknown_2039DE8 +_0811D100: .4byte _0811D104 +_0811D104: @ jump table + .4byte _0811D11C @ case 0 + .4byte _0811D12A @ case 1 + .4byte _0811D13A @ case 2 + .4byte _0811D14C @ case 3 + .4byte _0811D16C @ case 4 + .4byte _0811D192 @ case 5 +_0811D11C: + bl sub_0811E814 + bl sub_0811EBF8 + bl sub_0811EDFC + b _0811D15C +_0811D12A: + bl sub_0811EC1C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D19C + bl sub_0811E1C8 + b _0811D15C +_0811D13A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D19C + movs r0, #2 + bl sub_0811E1E0 + b _0811D15C +_0811D14C: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D19C + movs r0, #2 + bl sub_0811DEA0 +_0811D15C: + ldr r0, _0811D168 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D19C + .align 2, 0 +_0811D168: .4byte gUnknown_2039DE8 +_0811D16C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D19C + bl sub_0811E9D0 + movs r0, #1 + bl sub_0811EE2C + bl sub_0811ED98 + bl sub_0811EEE0 + ldr r0, _0811D198 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D192: + movs r0, #0 + b _0811D19E + .align 2, 0 +_0811D198: .4byte gUnknown_2039DE8 +_0811D19C: + movs r0, #1 +_0811D19E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D0E4 + + thumb_func_start sub_0811D1A4 +sub_0811D1A4: @ 0x0811D1A4 + push {lr} + ldr r0, _0811D1BC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #5 + bhi _0811D248 + lsls r0, r0, #2 + ldr r1, _0811D1C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D1BC: .4byte gUnknown_2039DE8 +_0811D1C0: .4byte _0811D1C4 +_0811D1C4: @ jump table + .4byte _0811D1DC @ case 0 + .4byte _0811D1E2 @ case 1 + .4byte _0811D1F4 @ case 2 + .4byte _0811D206 @ case 3 + .4byte _0811D228 @ case 4 + .4byte _0811D240 @ case 5 +_0811D1DC: + bl sub_0811DBA8 + b _0811D216 +_0811D1E2: + bl sub_0811EACC + bl sub_0811EDFC + bl sub_0811EF44 + bl sub_0811E1C8 + b _0811D216 +_0811D1F4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D248 + movs r0, #3 + bl sub_0811E1E0 + b _0811D216 +_0811D206: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D248 + movs r0, #0 + bl sub_08001B48 +_0811D216: + ldr r0, _0811D224 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D248 + .align 2, 0 +_0811D224: .4byte gUnknown_2039DE8 +_0811D228: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D248 + bl sub_0811E7C0 + ldr r0, _0811D244 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D240: + movs r0, #0 + b _0811D24A + .align 2, 0 +_0811D244: .4byte gUnknown_2039DE8 +_0811D248: + movs r0, #1 +_0811D24A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D1A4 + + thumb_func_start sub_0811D250 +sub_0811D250: @ 0x0811D250 + push {lr} + ldr r0, _0811D268 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #6 + bhi _0811D308 + lsls r0, r0, #2 + ldr r1, _0811D26C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D268: .4byte gUnknown_2039DE8 +_0811D26C: .4byte _0811D270 +_0811D270: @ jump table + .4byte _0811D28C @ case 0 + .4byte _0811D292 @ case 1 + .4byte _0811D2A4 @ case 2 + .4byte _0811D2B6 @ case 3 + .4byte _0811D2C8 @ case 4 + .4byte _0811D2E8 @ case 5 + .4byte _0811D300 @ case 6 +_0811D28C: + bl sub_0811DBA8 + b _0811D2D8 +_0811D292: + bl sub_0811EACC + bl sub_0811EDFC + bl sub_0811EF44 + bl sub_0811E1C8 + b _0811D2D8 +_0811D2A4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D308 + movs r0, #3 + bl sub_0811E1E0 + b _0811D2D8 +_0811D2B6: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D308 + movs r0, #3 + bl sub_0811D9D8 + b _0811D2D8 +_0811D2C8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D308 + movs r0, #0 + bl sub_08001B48 +_0811D2D8: + ldr r0, _0811D2E4 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D308 + .align 2, 0 +_0811D2E4: .4byte gUnknown_2039DE8 +_0811D2E8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D308 + bl sub_0811E7C0 + ldr r0, _0811D304 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D300: + movs r0, #0 + b _0811D30A + .align 2, 0 +_0811D304: .4byte gUnknown_2039DE8 +_0811D308: + movs r0, #1 +_0811D30A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D250 + + thumb_func_start sub_0811D310 +sub_0811D310: @ 0x0811D310 + push {lr} + ldr r0, _0811D328 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #4 + bhi _0811D3C4 + lsls r0, r0, #2 + ldr r1, _0811D32C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D328: .4byte gUnknown_2039DE8 +_0811D32C: .4byte _0811D330 +_0811D330: @ jump table + .4byte _0811D344 @ case 0 + .4byte _0811D356 @ case 1 + .4byte _0811D368 @ case 2 + .4byte _0811D378 @ case 3 + .4byte _0811D398 @ case 4 +_0811D344: + bl sub_0811EACC + bl sub_0811EDFC + bl sub_0811EF44 + bl sub_0811E1C8 + b _0811D386 +_0811D356: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D3C4 + movs r0, #4 + bl sub_0811E1E0 + b _0811D386 +_0811D368: + bl sub_0811E2B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D3C4 + bl sub_0811DEDC + b _0811D386 +_0811D378: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D3C4 + bl sub_0811EAF8 +_0811D386: + ldr r0, _0811D394 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D3C4 + .align 2, 0 +_0811D394: .4byte gUnknown_2039DE8 +_0811D398: + bl sub_0811EB64 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D3C4 + bl sub_0811E7D8 + movs r0, #0 + bl sub_0811EE2C + bl sub_0811ED98 + ldr r0, _0811D3C0 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0 + b _0811D3C6 + .align 2, 0 +_0811D3C0: .4byte gUnknown_2039DE8 +_0811D3C4: + movs r0, #1 +_0811D3C6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D310 + + thumb_func_start sub_0811D3CC +sub_0811D3CC: @ 0x0811D3CC + push {lr} + bl sub_0811EA54 + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_0811D3CC + + thumb_func_start sub_0811D3D8 +sub_0811D3D8: @ 0x0811D3D8 + push {r4, lr} + ldr r4, _0811D3F0 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #1 + beq _0811D404 + cmp r0, #1 + bgt _0811D3F4 + cmp r0, #0 + beq _0811D3FE + b _0811D442 + .align 2, 0 +_0811D3F0: .4byte gUnknown_2039DE8 +_0811D3F4: + cmp r0, #2 + beq _0811D420 + cmp r0, #3 + beq _0811D43E + b _0811D442 +_0811D3FE: + bl sub_0811DFBC + b _0811D416 +_0811D404: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D442 + movs r0, #1 + movs r1, #4 + bl sub_0811E5C0 +_0811D416: + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D442 +_0811D420: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D442 + bl sub_0811EA54 + bl sub_0811ED98 + bl sub_0811EEE0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D43E: + movs r0, #0 + b _0811D444 +_0811D442: + movs r0, #1 +_0811D444: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D3D8 + + thumb_func_start sub_0811D44C +sub_0811D44C: @ 0x0811D44C + push {r4, lr} + ldr r4, _0811D464 + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #1 + beq _0811D478 + cmp r0, #1 + bgt _0811D468 + cmp r0, #0 + beq _0811D472 + b _0811D4B4 + .align 2, 0 +_0811D464: .4byte gUnknown_2039DE8 +_0811D468: + cmp r0, #2 + beq _0811D496 + cmp r0, #3 + beq _0811D4B0 + b _0811D4B4 +_0811D472: + bl sub_0811DFE0 + b _0811D48C +_0811D478: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D4B4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #4 + bl sub_0811E5C0 +_0811D48C: + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D4B4 +_0811D496: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D4B4 + bl sub_0811ED98 + bl sub_0811EEE0 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D4B0: + movs r0, #0 + b _0811D4B6 +_0811D4B4: + movs r0, #1 +_0811D4B6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811D44C + + thumb_func_start sub_0811D4BC +sub_0811D4BC: @ 0x0811D4BC + push {r4, r5, lr} + ldr r5, _0811D4D4 + ldr r0, [r5] + ldrh r0, [r0] + cmp r0, #1 + beq _0811D4E8 + cmp r0, #1 + bgt _0811D4D8 + cmp r0, #0 + beq _0811D4E2 + b _0811D53A + .align 2, 0 +_0811D4D4: .4byte gUnknown_2039DE8 +_0811D4D8: + cmp r0, #2 + beq _0811D518 + cmp r0, #3 + beq _0811D536 + b _0811D53A +_0811D4E2: + bl sub_0811E004 + b _0811D50E +_0811D4E8: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D53A + bl sub_0811C3E0 + adds r4, r0, #0 + bl sub_0811E65C + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #8 + bl sub_0811E5C0 +_0811D50E: + ldr r1, [r5] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D53A +_0811D518: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D53A + bl sub_0811EA54 + bl sub_0811ED98 + bl sub_0811EEE0 + ldr r1, [r5] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D536: + movs r0, #0 + b _0811D53C +_0811D53A: + movs r0, #1 +_0811D53C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D4BC + + thumb_func_start sub_0811D544 +sub_0811D544: @ 0x0811D544 + push {r4, r5, lr} + ldr r5, _0811D55C + ldr r0, [r5] + ldrh r0, [r0] + cmp r0, #1 + beq _0811D570 + cmp r0, #1 + bgt _0811D560 + cmp r0, #0 + beq _0811D56A + b _0811D5BE + .align 2, 0 +_0811D55C: .4byte gUnknown_2039DE8 +_0811D560: + cmp r0, #2 + beq _0811D5A0 + cmp r0, #3 + beq _0811D5BA + b _0811D5BE +_0811D56A: + bl sub_0811E048 + b _0811D596 +_0811D570: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D5BE + bl sub_0811C3E0 + adds r4, r0, #0 + bl sub_0811E65C + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #8 + bl sub_0811E5C0 +_0811D596: + ldr r1, [r5] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D5BE +_0811D5A0: + bl sub_0811E624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811D5BE + bl sub_0811ED98 + bl sub_0811EEE0 + ldr r1, [r5] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0811D5BA: + movs r0, #0 + b _0811D5C0 +_0811D5BE: + movs r0, #1 +_0811D5C0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D544 + + thumb_func_start sub_0811D5C8 +sub_0811D5C8: @ 0x0811D5C8 + push {r4, lr} + ldr r4, _0811D5DC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D5E0 + cmp r0, #1 + beq _0811D5F4 + b _0811D5FE + .align 2, 0 +_0811D5DC: .4byte gUnknown_2039DE8 +_0811D5E0: + bl sub_0811E7A0 + movs r0, #4 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D5FE +_0811D5F4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D600 +_0811D5FE: + movs r0, #1 +_0811D600: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D5C8 + + thumb_func_start sub_0811D608 +sub_0811D608: @ 0x0811D608 + push {r4, lr} + ldr r4, _0811D61C + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D620 + cmp r0, #1 + beq _0811D634 + b _0811D63E + .align 2, 0 +_0811D61C: .4byte gUnknown_2039DE8 +_0811D620: + bl sub_0811E7A0 + movs r0, #5 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D63E +_0811D634: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D640 +_0811D63E: + movs r0, #1 +_0811D640: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D608 + + thumb_func_start sub_0811D648 +sub_0811D648: @ 0x0811D648 + push {r4, lr} + ldr r4, _0811D65C + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D660 + cmp r0, #1 + beq _0811D674 + b _0811D67E + .align 2, 0 +_0811D65C: .4byte gUnknown_2039DE8 +_0811D660: + bl sub_0811E7A0 + movs r0, #6 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D67E +_0811D674: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D680 +_0811D67E: + movs r0, #1 +_0811D680: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D648 + + thumb_func_start sub_0811D688 +sub_0811D688: @ 0x0811D688 + push {r4, lr} + ldr r4, _0811D69C + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D6A0 + cmp r0, #1 + beq _0811D6B4 + b _0811D6BE + .align 2, 0 +_0811D69C: .4byte gUnknown_2039DE8 +_0811D6A0: + bl sub_0811E7A0 + movs r0, #7 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D6BE +_0811D6B4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D6C0 +_0811D6BE: + movs r0, #1 +_0811D6C0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D688 + + thumb_func_start sub_0811D6C8 +sub_0811D6C8: @ 0x0811D6C8 + push {r4, lr} + ldr r4, _0811D6DC + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D6E0 + cmp r0, #1 + beq _0811D6F4 + b _0811D6FE + .align 2, 0 +_0811D6DC: .4byte gUnknown_2039DE8 +_0811D6E0: + bl sub_0811E7A0 + movs r0, #8 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D6FE +_0811D6F4: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D700 +_0811D6FE: + movs r0, #1 +_0811D700: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D6C8 + + thumb_func_start sub_0811D708 +sub_0811D708: @ 0x0811D708 + push {r4, lr} + ldr r4, _0811D71C + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _0811D720 + cmp r0, #1 + beq _0811D734 + b _0811D73E + .align 2, 0 +_0811D71C: .4byte gUnknown_2039DE8 +_0811D720: + bl sub_0811E7A0 + movs r0, #9 + bl sub_0811D9D8 + ldr r1, [r4] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _0811D73E +_0811D734: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811D740 +_0811D73E: + movs r0, #1 +_0811D740: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811D708 + + thumb_func_start sub_0811D748 +sub_0811D748: @ 0x0811D748 + push {r4, lr} + ldr r4, _0811D7A4 + ldr r0, _0811D7A8 + bl sub_08000BC8 + adds r2, r0, #0 + str r2, [r4] + cmp r2, #0 + beq _0811D7AC + movs r1, #0 + strh r1, [r2] + movs r3, #0xb6 + lsls r3, r3, #2 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + adds r3, #4 + adds r0, r2, r3 + str r1, [r0] + bl sub_0811C474 + ldr r1, [r4] + strb r0, [r1, #0xa] + movs r0, #1 + b _0811D7AE + .align 2, 0 +_0811D7A4: .4byte gUnknown_2039DE8 +_0811D7A8: .4byte 0x000012FC +_0811D7AC: + movs r0, #0 +_0811D7AE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811D748 + + thumb_func_start sub_0811D7B4 +sub_0811D7B4: @ 0x0811D7B4 + push {lr} + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + thumb_func_end sub_0811D7B4 + + thumb_func_start sub_0811D814 +sub_0811D814: @ 0x0811D814 + push {r4, lr} + bl sub_080A133C + ldr r0, _0811D868 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0811D86C + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0811D870 + movs r1, #0x40 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0811D874 + movs r1, #0xa0 + movs r2, #8 + bl sub_080A1200 + ldr r4, _0811D878 + adds r0, r4, #0 + movs r1, #0xb0 + movs r2, #0xc + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xc + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0x30 + movs r2, #0xc + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811D868: .4byte gUnknown_8573E64 +_0811D86C: .4byte gUnknown_857423C +_0811D870: .4byte gUnknown_857425C +_0811D874: .4byte gUnknown_8574344 +_0811D878: .4byte gUnknown_857434C + thumb_func_end sub_0811D814 + + thumb_func_start sub_0811D87C +sub_0811D87C: @ 0x0811D87C + push {r4, r5, lr} + sub sp, #0x14 + bl sub_0811C28C + adds r5, r0, #0 + cmp r5, #0 + beq _0811D8D8 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0x10 + subs r4, r4, r0 + lsrs r0, r4, #0x1f + adds r4, r4, r0 + asrs r4, r4, #1 + lsls r4, r4, #0x13 + lsrs r4, r4, #0x10 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + str r1, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + movs r0, #3 + str r0, [sp, #0x10] + movs r0, #0 + movs r1, #1 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0811D920 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 +_0811D8D8: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0811D87C + + thumb_func_start sub_0811D8E0 +sub_0811D8E0: @ 0x0811D8E0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r2, #0 + ldr r2, [sp, #0x1c] + ldr r4, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r2, r2, #0x18 + lsrs r0, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + cmp r1, #1 + bne _0811D908 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0811D908: + str r0, [sp] + str r4, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0811D8E0 + + thumb_func_start sub_0811D920 +sub_0811D920: @ 0x0811D920 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov sb, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r1, #1 + bne _0811D966 + adds r0, r3, #2 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0811D966: + add r0, sp, #0xc + strb r5, [r0] + strb r6, [r0, #1] + strb r2, [r0, #2] + str r0, [sp] + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, sb + str r0, [sp, #8] + mov r0, ip + adds r2, r7, #0 + bl sub_08199AFC + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0811D920 + + thumb_func_start sub_0811D990 +sub_0811D990: @ 0x0811D990 + push {lr} + sub sp, #0xc + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #1 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #1 + movs r1, #1 + movs r2, #0xe + bl sub_080981E0 + movs r0, #0 + bl sub_0811D9D8 + movs r0, #1 + bl sub_0800365C + movs r0, #0 + bl sub_08002248 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_0811D990 + + thumb_func_start sub_0811D9D8 +sub_0811D9D8: @ 0x0811D9D8 + push {lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #0 + str r0, [sp, #0x10] + str r0, [sp, #0xc] + cmp r1, #9 + bhi _0811DA90 + lsls r0, r1, #2 + ldr r1, _0811D9F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811D9F4: .4byte _0811D9F8 +_0811D9F8: @ jump table + .4byte _0811DA20 @ case 0 + .4byte _0811DA3E @ case 1 + .4byte _0811DA2A @ case 2 + .4byte _0811DA34 @ case 3 + .4byte _0811DA48 @ case 4 + .4byte _0811DA54 @ case 5 + .4byte _0811DA60 @ case 6 + .4byte _0811DA70 @ case 7 + .4byte _0811DA7C @ case 8 + .4byte _0811DA88 @ case 9 +_0811DA20: + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0811C2D4 + b _0811DA90 +_0811DA2A: + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0811C344 + b _0811DA90 +_0811DA34: + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0811C30C + b _0811DA90 +_0811DA3E: + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0811C38C + b _0811DA90 +_0811DA48: + ldr r0, _0811DA50 + str r0, [sp, #0xc] + b _0811DA90 + .align 2, 0 +_0811DA50: .4byte gUnknown_85CBCD0 +_0811DA54: + ldr r0, _0811DA5C + str r0, [sp, #0xc] + b _0811DA90 + .align 2, 0 +_0811DA5C: .4byte gUnknown_85CBCE0 +_0811DA60: + ldr r0, _0811DA68 + str r0, [sp, #0xc] + ldr r0, _0811DA6C + b _0811DA8E + .align 2, 0 +_0811DA68: .4byte gUnknown_85CBB1B +_0811DA6C: .4byte gUnknown_85CBB2F +_0811DA70: + ldr r0, _0811DA78 + str r0, [sp, #0xc] + b _0811DA90 + .align 2, 0 +_0811DA78: .4byte gUnknown_85CBCEF +_0811DA7C: + ldr r0, _0811DA84 + str r0, [sp, #0xc] + b _0811DA90 + .align 2, 0 +_0811DA84: .4byte gUnknown_85CBB4E +_0811DA88: + ldr r0, _0811DADC + str r0, [sp, #0xc] + ldr r0, _0811DAE0 +_0811DA8E: + str r0, [sp, #0x10] +_0811DA90: + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, [sp, #0xc] + cmp r2, #0 + beq _0811DAB2 + movs r1, #0 + str r1, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0811D8E0 +_0811DAB2: + ldr r2, [sp, #0x10] + cmp r2, #0 + beq _0811DACE + movs r0, #0x10 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0811D8E0 +_0811DACE: + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0x14 + pop {r0} + bx r0 + .align 2, 0 +_0811DADC: .4byte gUnknown_85CBC62 +_0811DAE0: .4byte gUnknown_85CBC6D + thumb_func_end sub_0811D9D8 + + thumb_func_start sub_0811DAE4 +sub_0811DAE4: @ 0x0811DAE4 + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0811DB0C + movs r1, #1 + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + str r0, [sp, #8] + adds r0, r2, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0811DB0C: .4byte gUnknown_85743AC + thumb_func_end sub_0811DAE4 + + thumb_func_start sub_0811DB10 +sub_0811DB10: @ 0x0811DB10 + push {r4, r5, r6, lr} + sub sp, #8 + bl sub_0811C26C + lsls r0, r0, #0x18 + ldr r6, _0811DB8C + ldr r4, [sp] + ands r4, r6 + movs r1, #3 + orrs r4, r1 + str r4, [sp] + ldr r1, _0811DB90 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r3, [r0] + lsls r1, r3, #0x1b + lsrs r1, r1, #0x13 + ldr r5, _0811DB94 + adds r2, r5, #0 + ands r2, r4 + orrs r2, r1 + lsrs r3, r3, #5 + lsls r3, r3, #0x10 + ldr r1, _0811DB98 + ands r2, r1 + orrs r2, r3 + str r2, [sp] + ldrb r3, [r0, #1] + lsls r3, r3, #0x18 + ldr r1, _0811DB9C + ands r1, r2 + orrs r1, r3 + str r1, [sp] + ldrb r1, [r0, #2] + ldr r0, [sp, #4] + ands r0, r6 + orrs r0, r1 + ands r0, r5 + movs r1, #0xb0 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _0811DBA0 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08003250 + ldr r1, _0811DBA4 + ldr r1, [r1] + strh r0, [r1, #2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811DB8C: .4byte 0xFFFFFF00 +_0811DB90: .4byte gUnknown_8574358 +_0811DB94: .4byte 0xFFFF00FF +_0811DB98: .4byte 0xFF00FFFF +_0811DB9C: .4byte 0x00FFFFFF +_0811DBA0: .4byte 0x0000FFFF +_0811DBA4: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811DB10 + + thumb_func_start sub_0811DBA8 +sub_0811DBA8: @ 0x0811DBA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + bl sub_0811C298 + adds r6, r0, #0 + bl sub_0811C2B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_0811C2A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r4, _0811DBE0 + ldr r0, [r4] + ldrb r0, [r0, #2] + movs r1, #0x11 + bl sub_08003B18 + movs r5, #0 + b _0811DC86 + .align 2, 0 +_0811DBE0: .4byte gUnknown_2039DE8 +_0811DBE4: + ldr r1, _0811DC20 + ldr r0, [r1] + adds r0, #0xb + movs r1, #0 + movs r2, #0xc0 + bl sub_08008DE8 + ldr r1, _0811DC20 + ldr r0, [r1] + adds r2, r0, #0 + adds r2, #0xd + movs r4, #0 + lsls r7, r5, #0x1c + adds r5, #1 + mov sb, r5 + cmp r4, r8 + bge _0811DC64 + ldr r0, _0811DC24 + mov sl, r0 +_0811DC0A: + ldrh r0, [r6] + cmp r0, sl + beq _0811DC28 + adds r1, r0, #0 + adds r0, r2, #0 + bl sub_0811F180 + adds r2, r0, #0 + adds r5, r6, #2 + adds r4, #1 + b _0811DC58 + .align 2, 0 +_0811DC20: .4byte gUnknown_2039DE8 +_0811DC24: .4byte 0x0000FFFF +_0811DC28: + adds r0, r2, #0 + movs r1, #0 + movs r2, #4 + bl sub_08008ED8 + adds r2, r0, #0 + adds r5, r6, #2 + adds r4, #1 + movs r3, #0xf9 + movs r1, #9 + movs r0, #4 +_0811DC3E: + strb r3, [r2] + adds r2, #1 + strb r1, [r2] + adds r2, #1 + subs r0, #1 + cmp r0, #0 + bge _0811DC3E + adds r0, r2, #0 + movs r1, #0 + movs r2, #2 + bl sub_08008ED8 + adds r2, r0, #0 +_0811DC58: + movs r0, #0 + strb r0, [r2] + adds r2, #2 + adds r6, r5, #0 + cmp r4, r8 + blt _0811DC0A +_0811DC64: + movs r0, #0xff + strb r0, [r2] + ldr r1, _0811DCA8 + ldr r2, [r1] + ldrb r0, [r2, #2] + adds r2, #0xb + lsrs r1, r7, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0811D8E0 + mov r5, sb +_0811DC86: + ldr r0, [sp, #0xc] + cmp r5, r0 + blt _0811DBE4 + ldr r0, _0811DCA8 + ldr r0, [r0] + ldrb r0, [r0, #2] + movs r1, #3 + bl sub_08003528 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811DCA8: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811DBA8 + + thumb_func_start sub_0811DCAC +sub_0811DCAC: @ 0x0811DCAC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + bl sub_0811C26C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0 + str r0, [sp] + ldr r2, _0811DDEC + mov r0, sp + mov r1, r8 + bl CpuFastSet + ldr r0, _0811DDF0 + mov r1, sb + lsls r3, r1, #2 + adds r3, r3, r0 + ldrb r0, [r3] + lsls r2, r0, #0x18 + lsrs r1, r2, #0x1d + subs r6, r1, #1 + lsls r0, r0, #0x1b + lsrs r4, r0, #0x1b + subs r5, r4, #1 + adds r0, r4, #0 + ldrb r1, [r3, #1] + adds r7, r0, r1 + lsrs r2, r2, #0x1d + ldrb r3, [r3, #2] + adds r3, r2, r3 + lsls r0, r6, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + add r0, r8 + ldr r2, _0811DDF4 + adds r1, r2, #0 + strh r1, [r0] + adds r5, r4, #0 + cmp r5, r7 + bge _0811DD22 + ldr r4, _0811DDF8 + adds r2, r4, #0 + lsls r1, r5, #1 + lsls r0, r6, #6 + add r0, r8 + adds r1, r1, r0 + subs r5, r7, r5 +_0811DD16: + strh r2, [r1] + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bne _0811DD16 + adds r5, r7, #0 +_0811DD22: + lsls r0, r6, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + add r0, r8 + ldr r2, _0811DDFC + adds r1, r2, #0 + strh r1, [r0] + adds r6, #1 + ldr r4, _0811DDF0 + mov sl, r4 + mov r0, sb + lsls r0, r0, #2 + mov sb, r0 + cmp r6, r3 + bge _0811DD94 + add r0, sl + ldrb r0, [r0] + lsls r0, r0, #0x1b + mov ip, r0 +_0811DD48: + mov r1, ip + lsrs r0, r1, #0x1b + subs r5, r0, #1 + lsls r1, r6, #5 + adds r1, r1, r5 + lsls r1, r1, #1 + add r1, r8 + ldr r4, _0811DE00 + adds r2, r4, #0 + strh r2, [r1] + adds r5, r0, #0 + adds r4, r6, #1 + cmp r5, r7 + bge _0811DD80 + movs r0, #0x80 + lsls r0, r0, #5 + adds r2, r0, #0 + lsls r1, r5, #1 + lsls r0, r6, #6 + add r0, r8 + adds r1, r1, r0 + subs r5, r7, r5 +_0811DD74: + strh r2, [r1] + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bne _0811DD74 + adds r5, r7, #0 +_0811DD80: + lsls r0, r6, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + add r0, r8 + ldr r2, _0811DE04 + adds r1, r2, #0 + strh r1, [r0] + adds r6, r4, #0 + cmp r6, r3 + blt _0811DD48 +_0811DD94: + mov r0, sb + add r0, sl + ldrb r2, [r0] + lsls r2, r2, #0x1b + lsrs r2, r2, #0x1b + subs r5, r2, #1 + lsls r3, r6, #5 + adds r0, r3, r5 + lsls r0, r0, #1 + add r0, r8 + ldr r4, _0811DE08 + adds r1, r4, #0 + strh r1, [r0] + adds r5, r2, #0 + cmp r5, r7 + bge _0811DDCE + ldr r0, _0811DE0C + adds r2, r0, #0 + lsls r1, r5, #1 + lsls r0, r6, #6 + add r0, r8 + adds r0, r1, r0 + subs r5, r7, r5 +_0811DDC2: + strh r2, [r0] + adds r0, #2 + subs r5, #1 + cmp r5, #0 + bne _0811DDC2 + adds r5, r7, #0 +_0811DDCE: + adds r0, r3, r5 + lsls r0, r0, #1 + add r0, r8 + ldr r2, _0811DE10 + adds r1, r2, #0 + strh r1, [r0] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811DDEC: .4byte 0x01000200 +_0811DDF0: .4byte gUnknown_8574358 +_0811DDF4: .4byte 0x00001001 +_0811DDF8: .4byte 0x00001002 +_0811DDFC: .4byte 0x00001003 +_0811DE00: .4byte 0x00001005 +_0811DE04: .4byte 0x00001007 +_0811DE08: .4byte 0x00001009 +_0811DE0C: .4byte 0x0000100A +_0811DE10: .4byte 0x0000100B + thumb_func_end sub_0811DCAC + + thumb_func_start sub_0811DE14 +sub_0811DE14: @ 0x0811DE14 + push {r4, lr} + sub sp, #8 + movs r0, #3 + bl sub_08002194 + adds r4, r0, #0 + bl sub_0811C26C + lsls r0, r0, #0x18 + ldr r1, _0811DE3C + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0, #3] + cmp r1, #2 + beq _0811DE46 + cmp r1, #2 + bgt _0811DE40 + cmp r1, #1 + beq _0811DE54 + b _0811DE84 + .align 2, 0 +_0811DE3C: .4byte gUnknown_8574358 +_0811DE40: + cmp r1, #3 + beq _0811DE70 + b _0811DE84 +_0811DE46: + movs r0, #0xa8 + lsls r0, r0, #3 + adds r4, r4, r0 + movs r0, #0x20 + str r0, [sp] + str r1, [sp, #4] + b _0811DE62 +_0811DE54: + movs r0, #0xc0 + lsls r0, r0, #3 + adds r4, r4, r0 + movs r0, #0x20 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] +_0811DE62: + movs r0, #3 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0xa + bl sub_080022B0 + b _0811DE84 +_0811DE70: + movs r0, #0x20 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + movs r0, #3 + adds r1, r4, #0 + movs r2, #0 + movs r3, #9 + bl sub_080022B0 +_0811DE84: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811DE14 + + thumb_func_start sub_0811DE8C +sub_0811DE8C: @ 0x0811DE8C + push {lr} + movs r0, #2 + bl sub_0800365C + movs r0, #2 + bl sub_08002248 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811DE8C + + thumb_func_start sub_0811DEA0 +sub_0811DEA0: @ 0x0811DEA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0811E598 + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + cmp r4, #1 + beq _0811DEC4 + cmp r4, #1 + blo _0811DEBE + cmp r4, #2 + beq _0811DECA + b _0811DECE +_0811DEBE: + bl sub_0811DEFC + b _0811DECE +_0811DEC4: + bl sub_0811DF70 + b _0811DECE +_0811DECA: + bl sub_0811DFAC +_0811DECE: + movs r0, #2 + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811DEA0 + + thumb_func_start sub_0811DEDC +sub_0811DEDC: @ 0x0811DEDC + push {lr} + bl sub_0811C3B4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811DEF0 + movs r0, #0 + bl sub_0811DEA0 + b _0811DEF6 +_0811DEF0: + movs r0, #1 + bl sub_0811DEA0 +_0811DEF6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811DEDC + + thumb_func_start sub_0811DEFC +sub_0811DEFC: @ 0x0811DEFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + movs r6, #0 + movs r0, #0x60 + mov r8, r0 +_0811DF0A: + movs r5, #0 + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0x80 + lsls r4, r4, #0x14 +_0811DF16: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + adds r6, #1 + bl sub_0811F914 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x16 + beq _0811DF54 + bl sub_0811F980 + adds r2, r0, #0 + lsrs r3, r4, #0x18 + str r7, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + bl sub_0811D8E0 + movs r0, #0xe0 + lsls r0, r0, #0x16 + adds r4, r4, r0 + adds r5, #1 + cmp r5, #2 + ble _0811DF16 + movs r1, #0x10 + add r8, r1 + b _0811DF0A +_0811DF54: + bl sub_0811C3C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0811E5C0 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811DEFC + + thumb_func_start sub_0811DF70 +sub_0811DF70: @ 0x0811DF70 + push {r4, r5, r6, lr} + sub sp, #0xc + movs r5, #0 + movs r4, #0xc0 + lsls r4, r4, #0x17 + ldr r6, _0811DFA8 +_0811DF7C: + ldm r6!, {r2} + lsrs r0, r4, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #8 + bl sub_0811D8E0 + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r4, r4, r0 + adds r5, #1 + cmp r5, #3 + bls _0811DF7C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811DFA8: .4byte gUnknown_85743BC + thumb_func_end sub_0811DF70 + + thumb_func_start sub_0811DFAC +sub_0811DFAC: @ 0x0811DFAC + push {lr} + movs r0, #0 + movs r1, #4 + bl sub_0811E07C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811DFAC + + thumb_func_start sub_0811DFBC +sub_0811DFBC: @ 0x0811DFBC + push {r4, lr} + bl sub_0811C3E0 + adds r4, r0, #0 + adds r4, #3 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_0811E164 + adds r0, r4, #0 + movs r1, #1 + bl sub_0811E07C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811DFBC + + thumb_func_start sub_0811DFE0 +sub_0811DFE0: @ 0x0811DFE0 + push {r4, lr} + bl sub_0811C3E0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_0811E164 + adds r0, r4, #0 + movs r1, #1 + bl sub_0811E07C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811DFE0 + + thumb_func_start sub_0811E004 +sub_0811E004: @ 0x0811E004 + push {r4, r5, lr} + bl sub_0811C3E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + adds r0, r5, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0811C3EC + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bls _0811E026 + adds r4, r0, #0 +_0811E026: + cmp r5, r4 + bhs _0811E040 + subs r4, r4, r5 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0811E164 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0811E07C +_0811E040: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811E004 + + thumb_func_start sub_0811E048 +sub_0811E048: @ 0x0811E048 + push {r4, r5, lr} + bl sub_0811C3E0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0811E65C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bhs _0811E074 + subs r4, r0, r5 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0811E164 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0811E07C +_0811E074: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811E048 + + thumb_func_start sub_0811E07C +sub_0811E07C: @ 0x0811E07C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x14] + lsls r1, r0, #1 + adds r7, r1, r0 + lsls r0, r0, #4 + adds r1, r0, #0 + adds r1, #0x60 + movs r0, #0xff + ands r1, r0 + movs r0, #0 + b _0811E144 +_0811E0A4: + movs r2, #0x10 + adds r2, r2, r1 + mov sl, r2 + adds r0, #1 + str r0, [sp, #0x18] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x15 + mov r8, r0 + movs r2, #2 + mov sb, r2 +_0811E0BC: + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + adds r7, #1 + bl sub_0811FAD0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0811E104 + cmp r4, r0 + beq _0811E12E + ldr r5, _0811E108 + ldr r0, [r5] + adds r0, #0xcc + adds r1, r4, #0 + movs r2, #0 + bl sub_0811F990 + adds r0, r4, #0 + bl sub_0811C820 + adds r1, r0, #0 + cmp r1, #0 + bne _0811E10C + ldr r2, [r5] + adds r2, #0xcc + mov r0, r8 + lsrs r3, r0, #0x18 + str r6, [sp] + movs r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #2 + movs r1, #1 + bl sub_0811D8E0 + b _0811E12E + .align 2, 0 +_0811E104: .4byte 0x0000FFFF +_0811E108: .4byte gUnknown_2039DE8 +_0811E10C: + ldr r2, [r5] + adds r2, #0xcc + mov r0, r8 + lsrs r3, r0, #0x18 + str r6, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #5 + str r0, [sp, #0xc] + movs r0, #3 + str r0, [sp, #0x10] + movs r0, #2 + movs r1, #1 + bl sub_0811D920 +_0811E12E: + movs r2, #0x90 + lsls r2, r2, #0x17 + add r8, r2 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r2, sb + cmp r2, #0 + bge _0811E0BC + mov r1, sl + ldr r0, [sp, #0x18] +_0811E144: + ldr r2, [sp, #0x14] + cmp r0, r2 + blt _0811E0A4 + movs r0, #2 + movs r1, #2 + bl sub_08003528 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811E07C + + thumb_func_start sub_0811E164 +sub_0811E164: @ 0x0811E164 + push {r4, r5, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r0, r0, #0x14 + adds r3, r0, #0 + adds r3, #0x60 + movs r0, #0xff + ands r3, r0 + lsrs r0, r1, #0x14 + adds r1, r3, r0 + cmp r1, #0xff + ble _0811E190 + ldr r0, _0811E18C + adds r4, r1, r0 + movs r0, #0x80 + lsls r0, r0, #1 + subs r0, r0, r3 + b _0811E192 + .align 2, 0 +_0811E18C: .4byte 0xFFFFFF00 +_0811E190: + movs r4, #0 +_0811E192: + movs r5, #0xe0 + str r5, [sp] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + movs r0, #2 + movs r1, #0x11 + movs r2, #0 + bl sub_08003A34 + cmp r4, #0 + beq _0811E1BE + str r5, [sp] + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + movs r0, #2 + movs r1, #0x11 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 +_0811E1BE: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811E164 + + thumb_func_start sub_0811E1C8 +sub_0811E1C8: @ 0x0811E1C8 + push {lr} + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #2 + movs r1, #2 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811E1C8 + + thumb_func_start sub_0811E1E0 +sub_0811E1E0: @ 0x0811E1E0 + push {lr} + ldr r1, _0811E1F4 + cmp r0, #6 + bhi _0811E29A + lsls r0, r0, #2 + ldr r1, _0811E1F8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811E1F4: .4byte gUnknown_2039DE8 +_0811E1F8: .4byte _0811E1FC +_0811E1FC: @ jump table + .4byte _0811E218 @ case 0 + .4byte _0811E22C @ case 1 + .4byte _0811E23C @ case 2 + .4byte _0811E250 @ case 3 + .4byte _0811E264 @ case 4 + .4byte _0811E278 @ case 5 + .4byte _0811E28C @ case 6 +_0811E218: + ldr r1, _0811E228 + ldr r2, [r1] + movs r0, #0 + strb r0, [r2, #6] + ldr r2, [r1] + movs r0, #0xa + b _0811E298 + .align 2, 0 +_0811E228: .4byte gUnknown_2039DE8 +_0811E22C: + ldr r1, _0811E238 + ldr r2, [r1] + movs r3, #0 + movs r0, #9 + b _0811E258 + .align 2, 0 +_0811E238: .4byte gUnknown_2039DE8 +_0811E23C: + ldr r1, _0811E24C + ldr r2, [r1] + movs r0, #0xb + strb r0, [r2, #6] + ldr r2, [r1] + movs r0, #0x11 + b _0811E298 + .align 2, 0 +_0811E24C: .4byte gUnknown_2039DE8 +_0811E250: + ldr r1, _0811E260 + ldr r2, [r1] + movs r3, #0 + movs r0, #0x11 +_0811E258: + strb r0, [r2, #6] + ldr r0, [r1] + strb r3, [r0, #7] + b _0811E29A + .align 2, 0 +_0811E260: .4byte gUnknown_2039DE8 +_0811E264: + ldr r1, _0811E274 + ldr r2, [r1] + movs r0, #0x11 + strb r0, [r2, #6] + ldr r2, [r1] + movs r0, #0xa + b _0811E298 + .align 2, 0 +_0811E274: .4byte gUnknown_2039DE8 +_0811E278: + ldr r1, _0811E288 + ldr r2, [r1] + movs r0, #0x12 + strb r0, [r2, #6] + ldr r2, [r1] + movs r0, #0x16 + b _0811E298 + .align 2, 0 +_0811E288: .4byte gUnknown_2039DE8 +_0811E28C: + ldr r1, _0811E2B4 + ldr r2, [r1] + movs r0, #0x16 + strb r0, [r2, #6] + ldr r2, [r1] + movs r0, #0x12 +_0811E298: + strb r0, [r2, #7] +_0811E29A: + ldr r1, [r1] + ldrb r0, [r1, #6] + movs r3, #1 + rsbs r3, r3, #0 + adds r2, r3, #0 + ldrb r3, [r1, #7] + cmp r0, r3 + bhs _0811E2AC + movs r2, #1 +_0811E2AC: + strb r2, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_0811E2B4: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E1E0 + + thumb_func_start sub_0811E2B8 +sub_0811E2B8: @ 0x0811E2B8 + push {r4, lr} + ldr r4, _0811E2E4 + ldr r1, [r4] + ldrb r2, [r1, #6] + ldrb r0, [r1, #7] + cmp r2, r0 + beq _0811E2E8 + ldrb r0, [r1, #8] + adds r0, r2, r0 + strb r0, [r1, #6] + ldr r0, [r4] + ldrb r0, [r0, #6] + bl sub_0811E2F0 + ldr r0, [r4] + ldrb r1, [r0, #6] + ldrb r0, [r0, #7] + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + b _0811E2EA + .align 2, 0 +_0811E2E4: .4byte gUnknown_2039DE8 +_0811E2E8: + movs r0, #0 +_0811E2EA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811E2B8 + + thumb_func_start sub_0811E2F0 +sub_0811E2F0: @ 0x0811E2F0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x1e + str r0, [sp] + movs r0, #0xa + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0xa + bl sub_080025E0 + cmp r4, #0x16 + bls _0811E312 + b _0811E42E +_0811E312: + lsls r0, r4, #2 + ldr r1, _0811E31C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811E31C: .4byte _0811E320 +_0811E320: @ jump table + .4byte _0811E42E @ case 0 + .4byte _0811E37C @ case 1 + .4byte _0811E384 @ case 2 + .4byte _0811E38C @ case 3 + .4byte _0811E394 @ case 4 + .4byte _0811E39C @ case 5 + .4byte _0811E3A4 @ case 6 + .4byte _0811E414 @ case 7 + .4byte _0811E406 @ case 8 + .4byte _0811E3F8 @ case 9 + .4byte _0811E3EA @ case 10 + .4byte _0811E3B2 @ case 11 + .4byte _0811E3BA @ case 12 + .4byte _0811E3C2 @ case 13 + .4byte _0811E3CA @ case 14 + .4byte _0811E3D2 @ case 15 + .4byte _0811E3DA @ case 16 + .4byte _0811E3E2 @ case 17 + .4byte _0811E3EA @ case 18 + .4byte _0811E3F8 @ case 19 + .4byte _0811E406 @ case 20 + .4byte _0811E414 @ case 21 + .4byte _0811E422 @ case 22 +_0811E37C: + movs r0, #0xb + movs r1, #0xe + movs r2, #3 + b _0811E3AA +_0811E384: + movs r0, #9 + movs r1, #0xe + movs r2, #7 + b _0811E3AA +_0811E38C: + movs r0, #7 + movs r1, #0xe + movs r2, #0xb + b _0811E3AA +_0811E394: + movs r0, #5 + movs r1, #0xe + movs r2, #0xf + b _0811E3AA +_0811E39C: + movs r0, #3 + movs r1, #0xe + movs r2, #0x13 + b _0811E3AA +_0811E3A4: + movs r0, #1 + movs r1, #0xe + movs r2, #0x17 +_0811E3AA: + movs r3, #2 + bl sub_0811E43C + b _0811E42E +_0811E3B2: + movs r0, #1 + movs r1, #0xa + movs r2, #0x18 + b _0811E3F0 +_0811E3BA: + movs r0, #1 + movs r1, #0xa + movs r2, #0x19 + b _0811E3F0 +_0811E3C2: + movs r0, #1 + movs r1, #0xa + movs r2, #0x1a + b _0811E3F0 +_0811E3CA: + movs r0, #1 + movs r1, #0xa + movs r2, #0x1b + b _0811E3F0 +_0811E3D2: + movs r0, #1 + movs r1, #0xa + movs r2, #0x1c + b _0811E3F0 +_0811E3DA: + movs r0, #1 + movs r1, #0xa + movs r2, #0x1d + b _0811E3F0 +_0811E3E2: + movs r0, #0 + movs r1, #0xa + movs r2, #0x1e + b _0811E3F0 +_0811E3EA: + movs r0, #1 + movs r1, #0xa + movs r2, #0x17 +_0811E3F0: + movs r3, #0xa + bl sub_0811E43C + b _0811E42E +_0811E3F8: + movs r0, #1 + movs r1, #0xb + movs r2, #0x17 + movs r3, #8 + bl sub_0811E43C + b _0811E42E +_0811E406: + movs r0, #1 + movs r1, #0xc + movs r2, #0x17 + movs r3, #6 + bl sub_0811E43C + b _0811E42E +_0811E414: + movs r0, #1 + movs r1, #0xd + movs r2, #0x17 + movs r3, #4 + bl sub_0811E43C + b _0811E42E +_0811E422: + movs r0, #1 + movs r1, #0xe + movs r2, #0x17 + movs r3, #2 + bl sub_0811E43C +_0811E42E: + movs r0, #1 + bl sub_08002248 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811E2F0 + + thumb_func_start sub_0811E43C +sub_0811E43C: @ 0x0811E43C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov ip, r0 + adds r7, r1, #0 + mov sb, r2 + mov sl, r3 + ldr r0, _0811E574 + ldr r0, [r0] + movs r1, #0xbf + lsls r1, r1, #2 + adds r6, r0, r1 + mov r0, ip + add r0, sb + subs r5, r0, #1 + adds r0, r7, r3 + subs r0, #1 + mov r8, r0 + mov r2, ip + adds r3, r7, #0 + lsls r0, r3, #5 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldr r4, _0811E578 + adds r1, r4, #0 + strh r1, [r0] + adds r2, #1 + cmp r2, r5 + bge _0811E498 + ldr r0, _0811E57C + adds r4, r0, #0 + lsls r1, r2, #1 + lsls r0, r3, #6 + adds r0, r0, r6 + adds r1, r1, r0 + subs r2, r5, r2 +_0811E48C: + strh r4, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bne _0811E48C + adds r2, r5, #0 +_0811E498: + lsls r0, r3, #5 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldr r2, _0811E580 + adds r1, r2, #0 + strh r1, [r0] + adds r3, #1 + mov r4, ip + adds r4, #1 + adds r0, r7, #1 + str r0, [sp, #4] + mov r1, sb + subs r1, #2 + str r1, [sp] + movs r2, #2 + rsbs r2, r2, #0 + add sl, r2 + cmp r3, r8 + bge _0811E508 + lsls r7, r4, #1 + mov sb, r7 +_0811E4C4: + lsls r0, r3, #5 + add r0, ip + lsls r0, r0, #1 + adds r0, r0, r6 + ldr r2, _0811E584 + adds r1, r2, #0 + strh r1, [r0] + adds r2, r4, #0 + adds r7, r3, #1 + cmp r4, r5 + bge _0811E4F4 + movs r0, #0x80 + lsls r0, r0, #7 + adds r1, r0, #0 + lsls r0, r3, #6 + adds r0, r0, r6 + add r0, sb + subs r2, r5, r4 +_0811E4E8: + strh r1, [r0] + adds r0, #2 + subs r2, #1 + cmp r2, #0 + bne _0811E4E8 + adds r2, r5, #0 +_0811E4F4: + lsls r0, r3, #5 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldr r2, _0811E588 + adds r1, r2, #0 + strh r1, [r0] + adds r3, r7, #0 + cmp r3, r8 + blt _0811E4C4 +_0811E508: + lsls r0, r3, #5 + mov r7, ip + adds r1, r0, r7 + lsls r1, r1, #1 + adds r1, r1, r6 + ldr r7, _0811E58C + adds r2, r7, #0 + strh r2, [r1] + adds r2, r4, #0 + mov ip, r0 + cmp r4, r5 + bge _0811E53A + ldr r0, _0811E590 + adds r7, r0, #0 + lsls r1, r4, #1 + lsls r0, r3, #6 + adds r0, r0, r6 + adds r0, r1, r0 + subs r2, r5, r4 +_0811E52E: + strh r7, [r0] + adds r0, #2 + subs r2, #1 + cmp r2, #0 + bne _0811E52E + adds r2, r5, #0 +_0811E53A: + mov r1, ip + adds r0, r1, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldr r2, _0811E594 + adds r1, r2, #0 + strh r1, [r0] + lsls r0, r4, #0x1b + lsrs r0, r0, #0x18 + ldr r3, [sp, #4] + lsls r1, r3, #0x1b + lsrs r1, r1, #0x18 + ldr r4, [sp] + lsls r2, r4, #0x1b + lsrs r2, r2, #0x18 + mov r7, sl + lsls r3, r7, #0x1b + lsrs r3, r3, #0x18 + bl sub_0811E670 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E574: .4byte gUnknown_2039DE8 +_0811E578: .4byte 0x00004001 +_0811E57C: .4byte 0x00004002 +_0811E580: .4byte 0x00004003 +_0811E584: .4byte 0x00004005 +_0811E588: .4byte 0x00004007 +_0811E58C: .4byte 0x00004009 +_0811E590: .4byte 0x0000400A +_0811E594: .4byte 0x0000400B + thumb_func_end sub_0811E43C + + thumb_func_start sub_0811E598 +sub_0811E598: @ 0x0811E598 + push {lr} + movs r1, #0x80 + lsls r1, r1, #4 + movs r0, #2 + movs r2, #0 + bl sub_08001E94 + ldr r0, _0811E5B8 + ldr r0, [r0] + ldr r1, _0811E5BC + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0811E5B8: .4byte gUnknown_2039DE8 +_0811E5BC: .4byte 0x000002CE + thumb_func_end sub_0811E598 + + thumb_func_start sub_0811E5C0 +sub_0811E5C0: @ 0x0811E5C0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r0, #2 + bl sub_08001FD0 + adds r2, r0, #0 + ldr r0, _0811E60C + ldr r3, [r0] + ldr r0, _0811E610 + adds r1, r3, r0 + ldrh r0, [r1] + adds r0, r0, r4 + strh r0, [r1] + lsls r4, r4, #0x14 + asrs r4, r4, #0x10 + lsls r0, r4, #8 + adds r2, r2, r0 + cmp r5, #0 + beq _0811E614 + movs r1, #0xb4 + lsls r1, r1, #2 + adds r0, r3, r1 + str r2, [r0] + movs r0, #0xb5 + lsls r0, r0, #2 + adds r1, r3, r0 + lsls r0, r5, #8 + str r0, [r1] + cmp r4, #0 + bge _0811E61E + rsbs r0, r0, #0 + str r0, [r1] + b _0811E61E + .align 2, 0 +_0811E60C: .4byte gUnknown_2039DE8 +_0811E610: .4byte 0x000002CE +_0811E614: + movs r0, #2 + adds r1, r2, #0 + movs r2, #0 + bl sub_08001E94 +_0811E61E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0811E5C0 + + thumb_func_start sub_0811E624 +sub_0811E624: @ 0x0811E624 + push {lr} + movs r0, #2 + bl sub_08001FD0 + ldr r1, _0811E650 + ldr r2, [r1] + movs r3, #0xb4 + lsls r3, r3, #2 + adds r1, r2, r3 + ldr r1, [r1] + cmp r0, r1 + beq _0811E654 + movs r1, #0xb5 + lsls r1, r1, #2 + adds r0, r2, r1 + ldr r1, [r0] + movs r0, #2 + movs r2, #1 + bl sub_08001E94 + movs r0, #1 + b _0811E656 + .align 2, 0 +_0811E650: .4byte gUnknown_2039DE8 +_0811E654: + movs r0, #0 +_0811E656: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811E624 + + thumb_func_start sub_0811E65C +sub_0811E65C: @ 0x0811E65C + ldr r0, _0811E668 + ldr r0, [r0] + ldr r1, _0811E66C + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_0811E668: .4byte gUnknown_2039DE8 +_0811E66C: .4byte 0x000002CE + thumb_func_end sub_0811E65C + + thumb_func_start sub_0811E670 +sub_0811E670: @ 0x0811E670 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r0, #8 + adds r0, r0, r2 + orrs r4, r0 + lsls r5, r1, #8 + adds r1, r1, r3 + orrs r5, r1 + movs r0, #0x40 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x44 + adds r1, r5, #0 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0811E670 + + thumb_func_start sub_0811E6A4 +sub_0811E6A4: @ 0x0811E6A4 + push {r4, r5, lr} + ldr r0, _0811E6CC + bl sub_08008254 + ldr r0, _0811E6D0 + bl sub_080084A8 + movs r5, #0 + ldr r4, _0811E6D4 +_0811E6B6: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #3 + bls _0811E6B6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811E6CC: .4byte gUnknown_85743CC +_0811E6D0: .4byte gUnknown_85743EC +_0811E6D4: .4byte gUnknown_8574414 + thumb_func_end sub_0811E6A4 + + thumb_func_start sub_0811E6D8 +sub_0811E6D8: @ 0x0811E6D8 + push {lr} + bl sub_0811C26C + lsls r0, r0, #0x18 + ldr r1, _0811E724 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r2, [r0] + lsls r1, r2, #0x1b + lsrs r1, r1, #8 + lsrs r2, r2, #5 + adds r2, #1 + ldr r0, _0811E728 + movs r3, #0xc0 + lsls r3, r3, #0xc + adds r1, r1, r3 + asrs r1, r1, #0x10 + lsls r2, r2, #3 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0811E72C + ldr r2, [r1] + movs r1, #0xb6 + lsls r1, r1, #2 + adds r2, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0811E730 + adds r1, r1, r0 + str r1, [r2] + movs r0, #1 + strh r0, [r1, #0x30] + pop {r0} + bx r0 + .align 2, 0 +_0811E724: .4byte gUnknown_8574358 +_0811E728: .4byte gUnknown_857443C +_0811E72C: .4byte gUnknown_2039DE8 +_0811E730: .4byte gUnknown_20205AC + thumb_func_end sub_0811E6D8 + + thumb_func_start sub_0811E734 +sub_0811E734: @ 0x0811E734 + push {lr} + adds r1, r0, #0 + movs r2, #0x30 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0811E762 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0811E762 + movs r0, #0 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x24] + adds r0, #1 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0811E762 + ldr r0, _0811E768 + strh r0, [r1, #0x24] +_0811E762: + pop {r0} + bx r0 + .align 2, 0 +_0811E768: .4byte 0x0000FFFA + thumb_func_end sub_0811E734 + + thumb_func_start sub_0811E76C +sub_0811E76C: @ 0x0811E76C + push {r4, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _0811E79C + ldr r2, [r2] + movs r3, #0xb6 + lsls r3, r3, #2 + adds r2, r2, r3 + ldr r3, [r2] + lsrs r0, r0, #0x15 + adds r0, #4 + movs r4, #0 + strh r0, [r3, #0x20] + ldr r0, [r2] + lsrs r1, r1, #0x15 + adds r1, #8 + 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 +_0811E79C: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E76C + + thumb_func_start sub_0811E7A0 +sub_0811E7A0: @ 0x0811E7A0 + ldr r0, _0811E7BC + ldr r1, [r0] + movs r0, #0xb6 + lsls r0, r0, #2 + adds r1, 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 +_0811E7BC: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E7A0 + + thumb_func_start sub_0811E7C0 +sub_0811E7C0: @ 0x0811E7C0 + ldr r0, _0811E7D4 + ldr r0, [r0] + movs r1, #0xb6 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #0x30] + bx lr + .align 2, 0 +_0811E7D4: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E7C0 + + thumb_func_start sub_0811E7D8 +sub_0811E7D8: @ 0x0811E7D8 + push {lr} + ldr r0, _0811E808 + movs r1, #0 + movs r2, #0 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0811E80C + ldr r2, [r1] + movs r1, #0xb7 + lsls r1, r1, #2 + adds r2, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0811E810 + adds r1, r1, r0 + str r1, [r2] + bl sub_0811E838 + pop {r0} + bx r0 + .align 2, 0 +_0811E808: .4byte gUnknown_857448C +_0811E80C: .4byte gUnknown_2039DE8 +_0811E810: .4byte gUnknown_20205AC + thumb_func_end sub_0811E7D8 + + thumb_func_start sub_0811E814 +sub_0811E814: @ 0x0811E814 + push {r4, r5, lr} + ldr r5, _0811E834 + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08006E00 + ldr r0, [r5] + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811E834: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E814 + + thumb_func_start sub_0811E838 +sub_0811E838: @ 0x0811E838 + push {r4, lr} + sub sp, #4 + ldr r0, _0811E874 + ldr r0, [r0] + movs r1, #0xb7 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _0811E888 + mov r4, sp + adds r4, #1 + mov r0, sp + adds r1, r4, #0 + bl sub_0811C3A0 + bl sub_0811C3B4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811E878 + mov r0, sp + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r4, r1] + bl sub_0811E890 + b _0811E888 + .align 2, 0 +_0811E874: .4byte gUnknown_2039DE8 +_0811E878: + mov r0, sp + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r4, r1] + bl sub_0811E904 +_0811E888: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0811E838 + + thumb_func_start sub_0811E890 +sub_0811E890: @ 0x0811E890 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r0, r0, #0x18 + asrs r6, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + beq _0811E8D4 + ldr r5, _0811E8D0 + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0 + bl sub_08007EC0 + ldr r1, [r5] + adds r1, r1, r4 + ldr r2, [r1] + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #3 + adds r0, #0x28 + strh r0, [r2, #0x20] + ldr r1, [r1] + lsls r0, r7, #0x18 + asrs r0, r0, #0x14 + adds r0, #0x60 + b _0811E8F8 + .align 2, 0 +_0811E8D0: .4byte gUnknown_2039DE8 +_0811E8D4: + ldr r5, _0811E900 + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, [r0] + movs r1, #0xd8 + strh r1, [r2, #0x20] + ldr r1, [r0] + lsls r0, r7, #0x18 + asrs r0, r0, #0x14 + adds r0, #0x70 +_0811E8F8: + strh r0, [r1, #0x22] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E900: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E890 + + thumb_func_start sub_0811E904 +sub_0811E904: @ 0x0811E904 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsrs r1, r0, #0x18 + mov r8, r1 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0811E99C + lsls r7, r6, #0x18 + cmp r1, #0xa + bne _0811E950 + asrs r0, r7, #0x18 + cmp r0, #1 + bne _0811E950 + ldr r5, _0811E94C + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, [r0] + movs r1, #0x7c + strh r1, [r2, #0x20] + ldr r1, [r0] + movs r0, #0x70 + b _0811E9C0 + .align 2, 0 +_0811E94C: .4byte gUnknown_2039DE8 +_0811E950: + ldr r5, _0811E998 + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 + ldr r0, [r5] + adds r6, r0, r4 + ldr r5, [r6] + mov r0, r8 + lsls r4, r0, #0x18 + asrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #5 + bl __divsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r4, r0 + lsls r0, r0, #3 + adds r0, #0x14 + strh r0, [r5, #0x20] + ldr r1, [r6] + asrs r0, r7, #0x14 + adds r0, #0x60 + strh r0, [r1, #0x22] + cmp r4, #0xc + ble _0811E9C2 + ldr r1, [r6] + ldrh r0, [r1, #0x20] + adds r0, #8 + strh r0, [r1, #0x20] + b _0811E9C2 + .align 2, 0 +_0811E998: .4byte gUnknown_2039DE8 +_0811E99C: + ldr r5, _0811E9CC + ldr r0, [r5] + movs r4, #0xb7 + lsls r4, r4, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + ldr r0, [r5] + adds r0, r0, r4 + ldr r2, [r0] + movs r1, #0xd8 + strh r1, [r2, #0x20] + ldr r1, [r0] + lsls r0, r6, #0x18 + asrs r0, r0, #0x14 + adds r0, #0x70 +_0811E9C0: + strh r0, [r1, #0x22] +_0811E9C2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811E9CC: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811E904 + + thumb_func_start sub_0811E9D0 +sub_0811E9D0: @ 0x0811E9D0 + push {lr} + ldr r0, _0811EA14 + movs r1, #0 + movs r2, #0 + movs r3, #4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0811EA18 + ldr r2, [r1] + movs r1, #0xb8 + lsls r1, r1, #2 + adds r2, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0811EA1C + adds r1, r1, r0 + str r1, [r2] + ldr r0, _0811EA20 + str r0, [r1, #0x1c] + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #5] + bl sub_0811EA54 + pop {r0} + bx r0 + .align 2, 0 +_0811EA14: .4byte gUnknown_857443C +_0811EA18: .4byte gUnknown_2039DE8 +_0811EA1C: .4byte gUnknown_20205AC +_0811EA20: .4byte sub_0811EA24 + thumb_func_end sub_0811E9D0 + + thumb_func_start sub_0811EA24 +sub_0811EA24: @ 0x0811EA24 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0811EA4A + movs r0, #0 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x24] + adds r0, #1 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0811EA4A + ldr r0, _0811EA50 + strh r0, [r1, #0x24] +_0811EA4A: + pop {r0} + bx r0 + .align 2, 0 +_0811EA50: .4byte 0x0000FFFA + thumb_func_end sub_0811EA24 + + thumb_func_start sub_0811EA54 +sub_0811EA54: @ 0x0811EA54 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #1 + mov r0, sp + adds r1, r4, #0 + bl sub_0811C3CC + mov r0, sp + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r1, r1, #0x19 + movs r2, #0xb0 + lsls r2, r2, #0x14 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + bl sub_0811EA90 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811EA54 + + thumb_func_start sub_0811EA90 +sub_0811EA90: @ 0x0811EA90 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _0811EAC8 + ldr r0, [r0] + movs r1, #0xb8 + lsls r1, r1, #2 + adds r3, r0, r1 + ldr r1, [r3] + cmp r1, #0 + beq _0811EAC2 + lsls r0, r2, #3 + adds r0, #4 + movs r2, #0 + strh r0, [r1, #0x20] + ldr r1, [r3] + adds r0, r4, #1 + lsls r0, r0, #3 + strh r0, [r1, #0x22] + ldr r0, [r3] + strh r2, [r0, #0x24] + ldr r0, [r3] + strh r2, [r0, #0x2e] +_0811EAC2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811EAC8: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EA90 + + thumb_func_start sub_0811EACC +sub_0811EACC: @ 0x0811EACC + push {r4, lr} + ldr r4, _0811EAF4 + ldr r0, [r4] + movs r1, #0xb8 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _0811EAEE + bl sub_08006E00 + ldr r0, [r4] + movs r1, #0xb8 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] +_0811EAEE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811EAF4: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EACC + + thumb_func_start sub_0811EAF8 +sub_0811EAF8: @ 0x0811EAF8 + push {r4, r5, r6, lr} + ldr r0, _0811EB50 + movs r1, #0xd0 + movs r2, #0x80 + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0811EB54 + ldr r2, [r5] + movs r1, #0xb9 + lsls r1, r1, #2 + adds r2, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r4, _0811EB58 + adds r1, r1, r4 + str r1, [r2] + movs r6, #0 + ldr r0, _0811EB5C + strh r0, [r1, #0x24] + ldr r0, _0811EB60 + movs r1, #0xd0 + movs r2, #0x50 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r5] + movs r1, #0xba + lsls r1, r1, #2 + adds r3, r2, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + str r1, [r3] + strb r6, [r2, #9] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811EB50: .4byte gUnknown_8574514 +_0811EB54: .4byte gUnknown_2039DE8 +_0811EB58: .4byte gUnknown_20205AC +_0811EB5C: .4byte 0x0000FFC0 +_0811EB60: .4byte gUnknown_85744F4 + thumb_func_end sub_0811EAF8 + + thumb_func_start sub_0811EB64 +sub_0811EB64: @ 0x0811EB64 + push {r4, lr} + ldr r4, _0811EB78 + ldr r2, [r4] + ldrb r3, [r2, #9] + cmp r3, #0 + beq _0811EB7C + cmp r3, #1 + beq _0811EBD4 + movs r0, #0 + b _0811EBF2 + .align 2, 0 +_0811EB78: .4byte gUnknown_2039DE8 +_0811EB7C: + movs r0, #0xb9 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r1, [r2] + ldrh r0, [r1, #0x24] + adds r0, #8 + strh r0, [r1, #0x24] + ldr r2, [r2] + movs r1, #0x24 + ldrsh r0, [r2, r1] + cmp r0, #0 + blt _0811EBF0 + strh r3, [r2, #0x24] + bl sub_0811C3B4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811EBB2 + ldr r0, [r4] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + b _0811EBC2 +_0811EBB2: + ldr r0, [r4] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 +_0811EBC2: + ldr r0, _0811EBD0 + ldr r1, [r0] + ldrb r0, [r1, #9] + adds r0, #1 + strb r0, [r1, #9] + b _0811EBF0 + .align 2, 0 +_0811EBD0: .4byte gUnknown_2039DE8 +_0811EBD4: + movs r1, #0xba + lsls r1, 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 _0811EBF0 + movs r0, #2 + strb r0, [r2, #9] + movs r0, #0 + b _0811EBF2 +_0811EBF0: + movs r0, #1 +_0811EBF2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811EB64 + + thumb_func_start sub_0811EBF8 +sub_0811EBF8: @ 0x0811EBF8 + push {lr} + ldr r2, _0811EC18 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #9] + ldr r0, [r2] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #3 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_0811EC18: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EBF8 + + thumb_func_start sub_0811EC1C +sub_0811EC1C: @ 0x0811EC1C + push {r4, r5, r6, lr} + ldr r5, _0811EC30 + ldr r3, [r5] + ldrb r0, [r3, #9] + cmp r0, #0 + beq _0811EC34 + cmp r0, #1 + beq _0811EC4E + movs r0, #0 + b _0811ECA0 + .align 2, 0 +_0811EC30: .4byte gUnknown_2039DE8 +_0811EC34: + movs r1, #0xba + lsls r1, 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 _0811EC9E + movs r0, #1 + strb r0, [r3, #9] + b _0811EC9E +_0811EC4E: + movs r0, #0xb9 + lsls r0, r0, #2 + adds r2, r3, r0 + ldr r1, [r2] + ldrh r0, [r1, #0x24] + subs r0, #8 + movs r6, #0 + strh r0, [r1, #0x24] + ldr r0, [r2] + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _0811EC9E + movs r4, #0xba + lsls r4, r4, #2 + adds r0, r3, r4 + ldr r0, [r0] + bl sub_08006E00 + ldr r0, [r5] + movs r1, #0xb9 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08006E00 + ldr r1, [r5] + adds r4, r1, r4 + str r6, [r4] + movs r2, #0xb9 + lsls r2, r2, #2 + adds r0, r1, r2 + str r6, [r0] + ldrb r0, [r1, #9] + adds r0, #1 + strb r0, [r1, #9] + movs r0, #0 + b _0811ECA0 +_0811EC9E: + movs r0, #1 +_0811ECA0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811EC1C + + thumb_func_start sub_0811ECA8 +sub_0811ECA8: @ 0x0811ECA8 + push {lr} + ldr r0, _0811ECC0 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #4 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_0811ECC0: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811ECA8 + + thumb_func_start sub_0811ECC4 +sub_0811ECC4: @ 0x0811ECC4 + push {lr} + bl sub_0811C3B4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811ECE8 + ldr r0, _0811ECE4 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #1 + bl sub_08007EC0 + b _0811ECFA + .align 2, 0 +_0811ECE4: .4byte gUnknown_2039DE8 +_0811ECE8: + ldr r0, _0811ED00 + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #2 + bl sub_08007EC0 +_0811ECFA: + pop {r0} + bx r0 + .align 2, 0 +_0811ED00: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811ECC4 + + thumb_func_start sub_0811ED04 +sub_0811ED04: @ 0x0811ED04 + ldr r0, _0811ED1C + ldr r0, [r0] + movs r1, #0xba + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + lsrs r1, r1, #4 + movs r0, #1 + bics r0, r1 + bx lr + .align 2, 0 +_0811ED1C: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811ED04 + + thumb_func_start sub_0811ED20 +sub_0811ED20: @ 0x0811ED20 + push {r4, lr} + ldr r4, _0811ED8C + adds r0, r4, #0 + movs r1, #0x60 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0811ED4E + ldr r0, _0811ED90 + ldr r2, [r0] + movs r0, #0xbb + lsls r0, r0, #2 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811ED94 + adds r0, r0, r1 + str r0, [r2] +_0811ED4E: + adds r0, r4, #0 + movs r1, #0x60 + movs r2, #0x9c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0811ED82 + ldr r0, _0811ED90 + ldr r2, [r0] + movs r0, #0xbc + lsls r0, r0, #2 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811ED94 + adds r0, r0, r1 + str r0, [r2] + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_0811ED82: + bl sub_0811EDFC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811ED8C: .4byte gUnknown_857456C +_0811ED90: .4byte gUnknown_2039DE8 +_0811ED94: .4byte gUnknown_20205AC + thumb_func_end sub_0811ED20 + + thumb_func_start sub_0811ED98 +sub_0811ED98: @ 0x0811ED98 + push {r4, r5, r6, lr} + bl sub_0811C3FC + ldr r6, _0811EDF8 + ldr r1, [r6] + movs r2, #0xbb + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 + cmp r0, #0 + bne _0811EDB2 + movs r2, #1 +_0811EDB2: + adds r3, r1, #0 + adds r3, #0x3e + movs r4, #1 + lsls r2, r2, #2 + ldrb r1, [r3] + movs r5, #5 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + bl sub_0811C430 + ldr r1, [r6] + movs r2, #0xbc + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 + cmp r0, #0 + bne _0811EDDE + movs r2, #1 +_0811EDDE: + adds r3, r1, #0 + adds r3, #0x3e + adds r1, r4, #0 + ands r1, r2 + lsls r1, r1, #2 + ldrb r2, [r3] + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811EDF8: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811ED98 + + thumb_func_start sub_0811EDFC +sub_0811EDFC: @ 0x0811EDFC + ldr r3, _0811EE28 + ldr r0, [r3] + movs r1, #0xbb + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + movs r1, #0xbc + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0811EE28: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EDFC + + thumb_func_start sub_0811EE2C +sub_0811EE2C: @ 0x0811EE2C + push {lr} + cmp r0, #0 + bne _0811EE48 + ldr r0, _0811EE44 + ldr r2, [r0] + movs r1, #0xbb + lsls r1, r1, #2 + adds r0, r2, r1 + ldr r0, [r0] + movs r1, #0x60 + b _0811EE56 + .align 2, 0 +_0811EE44: .4byte gUnknown_2039DE8 +_0811EE48: + ldr r0, _0811EE68 + ldr r2, [r0] + movs r1, #0xbb + lsls r1, r1, #2 + adds r0, r2, r1 + ldr r0, [r0] + movs r1, #0x78 +_0811EE56: + strh r1, [r0, #0x20] + movs r3, #0xbc + lsls r3, r3, #2 + adds r0, r2, r3 + ldr r0, [r0] + strh r1, [r0, #0x20] + pop {r0} + bx r0 + .align 2, 0 +_0811EE68: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EE2C + + thumb_func_start sub_0811EE6C +sub_0811EE6C: @ 0x0811EE6C + push {r4, lr} + ldr r4, _0811EED4 + adds r0, r4, #0 + movs r1, #0xdc + movs r2, #0x54 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0811EE9A + ldr r0, _0811EED8 + ldr r2, [r0] + movs r0, #0xbd + lsls r0, r0, #2 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811EEDC + adds r0, r0, r1 + str r0, [r2] +_0811EE9A: + adds r0, r4, #0 + movs r1, #0xdc + movs r2, #0x9c + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0811EECA + ldr r0, _0811EED8 + ldr r2, [r0] + movs r0, #0xbe + lsls r0, r0, #2 + adds r2, r2, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0811EEDC + adds r0, r0, r1 + str r0, [r2] + movs r1, #1 + bl sub_08007EC0 +_0811EECA: + bl sub_0811EF44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811EED4: .4byte gUnknown_8574554 +_0811EED8: .4byte gUnknown_2039DE8 +_0811EEDC: .4byte gUnknown_20205AC + thumb_func_end sub_0811EE6C + + thumb_func_start sub_0811EEE0 +sub_0811EEE0: @ 0x0811EEE0 + push {r4, r5, r6, lr} + bl sub_0811C3FC + ldr r6, _0811EF40 + ldr r1, [r6] + movs r2, #0xbd + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 + cmp r0, #0 + bne _0811EEFA + movs r2, #1 +_0811EEFA: + adds r3, r1, #0 + adds r3, #0x3e + movs r4, #1 + lsls r2, r2, #2 + ldrb r1, [r3] + movs r5, #5 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + bl sub_0811C430 + ldr r1, [r6] + movs r2, #0xbe + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0 + cmp r0, #0 + bne _0811EF26 + movs r2, #1 +_0811EF26: + adds r3, r1, #0 + adds r3, #0x3e + adds r1, r4, #0 + ands r1, r2 + lsls r1, r1, #2 + ldrb r2, [r3] + adds r0, r5, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0811EF40: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EEE0 + + thumb_func_start sub_0811EF44 +sub_0811EF44: @ 0x0811EF44 + ldr r3, _0811EF70 + ldr r0, [r3] + movs r1, #0xbd + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + movs r1, #0xbe + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0811EF70: .4byte gUnknown_2039DE8 + thumb_func_end sub_0811EF44 + + thumb_func_start sub_0811EF74 +sub_0811EF74: @ 0x0811EF74 + push {r4, r5, r6, r7, lr} + sub sp, #4 + bl sub_0811C4C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0811EF98 + cmp r0, #1 + bgt _0811EF8E + cmp r0, #0 + beq _0811EF94 + b _0811F02E +_0811EF8E: + cmp r0, #2 + beq _0811EF9C + b _0811F02E +_0811EF94: + movs r4, #0x43 + b _0811EF9E +_0811EF98: + movs r4, #0x44 + b _0811EF9E +_0811EF9C: + movs r4, #7 +_0811EF9E: + bl sub_0811C26C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _0811EFB0 + cmp r0, #5 + beq _0811EFB6 + b _0811F02E +_0811EFB0: + movs r5, #0x4c + movs r3, #0x28 + b _0811EFBA +_0811EFB6: + movs r5, #0x30 + movs r3, #0x30 +_0811EFBA: + adds r0, r4, #0 + ldr r7, _0811F038 + adds r2, r5, #0 + adds r4, r3, #0 + movs r6, #0 + str r6, [sp] + adds r1, r7, #0 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0811EFEE + ldr r1, _0811F03C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #5] + movs r1, #2 + bl sub_08007EC0 +_0811EFEE: + ldr r0, _0811F040 + ldr r0, [r0] + ldrb r0, [r0, #8] + movs r1, #0x69 + cmp r0, #0 + bne _0811EFFC + movs r1, #0x64 +_0811EFFC: + adds r2, r5, #0 + subs r2, #0x18 + str r6, [sp] + adds r0, r1, #0 + adds r1, r7, #0 + adds r3, r4, #0 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0811F02E + ldr r1, _0811F03C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #5] + movs r1, #3 + bl sub_08007EC0 +_0811F02E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F038: .4byte sub_08007140 +_0811F03C: .4byte gUnknown_20205AC +_0811F040: .4byte gUnknown_3005AF0 + thumb_func_end sub_0811EF74 + + thumb_func_start sub_0811F044 +sub_0811F044: @ 0x0811F044 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0x14 + beq _0811F06A + cmp r0, #0x14 + bgt _0811F064 + cmp r0, #0x11 + blt _0811F082 + ldr r0, _0811F060 + bl sub_0809D068 + b _0811F07C + .align 2, 0 +_0811F060: .4byte 0x00000864 +_0811F064: + cmp r1, #0x15 + beq _0811F078 + b _0811F082 +_0811F06A: + ldr r0, _0811F074 + bl sub_0809D068 + b _0811F07C + .align 2, 0 +_0811F074: .4byte 0x00000866 +_0811F078: + bl sub_0811F5D8 +_0811F07C: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811F084 +_0811F082: + movs r0, #1 +_0811F084: + pop {r1} + bx r1 + thumb_func_end sub_0811F044 + + thumb_func_start sub_0811F088 +sub_0811F088: @ 0x0811F088 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r0, #0 + bne _0811F0A0 + movs r0, #0 + bl sub_080BFD4C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0811F0B6 +_0811F0A0: + bl sub_0811F044 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811F0AE + movs r0, #0 + b _0811F0B6 +_0811F0AE: + ldr r0, _0811F0BC + lsls r1, r4, #3 + adds r1, r1, r0 + ldrh r0, [r1, #6] +_0811F0B6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811F0BC: .4byte gUnknown_8578D14 + thumb_func_end sub_0811F088 + + thumb_func_start sub_0811F0C0 +sub_0811F0C0: @ 0x0811F0C0 + push {r4, r5, lr} + lsls r2, r0, #0x10 + lsrs r1, r2, #0x10 + ldr r0, _0811F0EC + cmp r1, r0 + beq _0811F120 + lsrs r3, r2, #0x19 + ldr r5, _0811F0F0 + ands r5, r1 + cmp r3, #0x15 + bhi _0811F124 + ldr r0, _0811F0F4 + lsls r2, r3, #3 + adds r1, r2, r0 + ldrh r4, [r1, #4] + cmp r3, #0x13 + bgt _0811F0F8 + cmp r3, #0x12 + bge _0811F0FC + cmp r3, #0 + beq _0811F0FC + b _0811F11C + .align 2, 0 +_0811F0EC: .4byte 0x0000FFFF +_0811F0F0: .4byte 0x000001FF +_0811F0F4: .4byte gUnknown_8578D14 +_0811F0F8: + cmp r3, #0x15 + bne _0811F11C +_0811F0FC: + adds r0, r2, r0 + ldr r2, [r0] + movs r1, #0 + cmp r1, r4 + bhs _0811F124 +_0811F106: + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + beq _0811F120 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r4 + blo _0811F106 + b _0811F124 +_0811F11C: + cmp r5, r4 + bhs _0811F124 +_0811F120: + movs r0, #0 + b _0811F126 +_0811F124: + movs r0, #1 +_0811F126: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0811F0C0 + + thumb_func_start sub_0811F12C +sub_0811F12C: @ 0x0811F12C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + cmp r0, #0x13 + bgt _0811F144 + cmp r0, #0x12 + bge _0811F158 + cmp r0, #0 + beq _0811F148 + b _0811F164 +_0811F144: + cmp r0, #0x15 + bne _0811F164 +_0811F148: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + ldr r1, _0811F154 + adds r0, r0, r1 + b _0811F176 + .align 2, 0 +_0811F154: .4byte gUnknown_82EA31C +_0811F158: + lsls r0, r2, #3 + ldr r1, _0811F160 + adds r0, r0, r1 + b _0811F176 + .align 2, 0 +_0811F160: .4byte gUnknown_82EACC4 +_0811F164: + ldr r1, _0811F17C + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] +_0811F176: + pop {r1} + bx r1 + .align 2, 0 +_0811F17C: .4byte gUnknown_8578D14 + thumb_func_end sub_0811F12C + + thumb_func_start sub_0811F180 +sub_0811F180: @ 0x0811F180 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r6, r1, #0x10 + lsrs r0, r6, #0x10 + adds r4, r0, #0 + bl sub_0811F0C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F19C + ldr r1, _0811F198 + b _0811F1AE + .align 2, 0 +_0811F198: .4byte gUnknown_8579F30 +_0811F19C: + ldr r0, _0811F1B8 + cmp r4, r0 + beq _0811F1C0 + ldr r1, _0811F1BC + ands r1, r4 + lsrs r0, r6, #0x19 + bl sub_0811F12C + adds r1, r0, #0 +_0811F1AE: + adds r0, r5, #0 + bl sub_080088B8 + b _0811F1C6 + .align 2, 0 +_0811F1B8: .4byte 0x0000FFFF +_0811F1BC: .4byte 0x000001FF +_0811F1C0: + movs r0, #0xff + strb r0, [r5] + adds r0, r5, #0 +_0811F1C6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0811F180 + + thumb_func_start sub_0811F1CC +sub_0811F1CC: @ 0x0811F1CC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sb, r3 + ldr r0, _0811F254 + adds r2, r2, r0 + lsrs r7, r2, #0x10 + movs r0, #0 + cmp r0, sb + bhs _0811F23C +_0811F1EE: + movs r6, #0 + adds r0, #1 + mov r8, r0 + cmp r6, r7 + bhs _0811F220 + ldr r2, _0811F258 +_0811F1FA: + ldrh r1, [r5] + adds r0, r4, #0 + str r2, [sp] + bl sub_0811F180 + adds r4, r0, #0 + ldrh r0, [r5] + ldr r2, [sp] + cmp r0, r2 + beq _0811F214 + movs r0, #0 + strb r0, [r4] + adds r4, #1 +_0811F214: + adds r5, #2 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r7 + blo _0811F1FA +_0811F220: + ldrh r1, [r5] + adds r5, #2 + adds r0, r4, #0 + bl sub_0811F180 + adds r4, r0, #0 + movs r0, #0xfe + strb r0, [r4] + adds r4, #1 + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, sb + blo _0811F1EE +_0811F23C: + subs r4, #1 + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811F254: .4byte 0xFFFF0000 +_0811F258: .4byte 0x0000FFFF + thumb_func_end sub_0811F1CC + + thumb_func_start sub_0811F25C +sub_0811F25C: @ 0x0811F25C + push {r4, r5, lr} + lsls r5, r0, #0x10 + lsrs r0, r5, #0x10 + adds r4, r0, #0 + ldr r0, _0811F270 + cmp r4, r0 + bne _0811F274 + movs r0, #0 + b _0811F29A + .align 2, 0 +_0811F270: .4byte 0x0000FFFF +_0811F274: + adds r0, r4, #0 + bl sub_0811F0C0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811F290 + ldr r1, _0811F28C + ands r1, r4 + lsrs r0, r5, #0x19 + bl sub_0811F12C + b _0811F292 + .align 2, 0 +_0811F28C: .4byte 0x000001FF +_0811F290: + ldr r0, _0811F2A0 +_0811F292: + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0811F29A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0811F2A0: .4byte gUnknown_8579F30 + thumb_func_end sub_0811F25C + + thumb_func_start sub_0811F2A4 +sub_0811F2A4: @ 0x0811F2A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sl, r3 + movs r7, #0 + cmp r7, r8 + bhs _0811F306 + subs r0, r1, #1 + lsls r0, r0, #0x10 + mov sb, r0 +_0811F2CE: + mov r0, sb + lsrs r4, r0, #0x10 + movs r5, #0 + cmp r5, r1 + bhs _0811F2F4 +_0811F2D8: + ldrh r0, [r6] + adds r6, #2 + str r1, [sp] + bl sub_0811F25C + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, [sp] + cmp r5, r1 + blo _0811F2D8 +_0811F2F4: + cmp r4, sl + bls _0811F2FC + movs r0, #1 + b _0811F308 +_0811F2FC: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, r8 + blo _0811F2CE +_0811F306: + movs r0, #0 +_0811F308: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0811F2A4 + + thumb_func_start sub_0811F318 +sub_0811F318: @ 0x0811F318 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0806F050 + ldr r2, _0811F368 + lsls r1, r4, #3 + adds r1, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1, #4] + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r4, #0 + beq _0811F346 + cmp r4, #0x15 + beq _0811F346 + cmp r4, #0x12 + beq _0811F346 + cmp r4, #0x13 + bne _0811F354 +_0811F346: + ldr r1, _0811F368 + lsls r0, r4, #3 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r2, [r0] +_0811F354: + movs r0, #0x7f + ands r0, r4 + lsls r0, r0, #9 + ldr r1, _0811F36C + ands r2, r1 + orrs r0, r2 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811F368: .4byte gUnknown_8578D14 +_0811F36C: .4byte 0x000001FF + thumb_func_end sub_0811F318 + + thumb_func_start sub_0811F370 +sub_0811F370: @ 0x0811F370 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r0, #0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811F044 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811F390 + ldr r0, _0811F38C + b _0811F3A4 + .align 2, 0 +_0811F38C: .4byte 0x0000FFFF +_0811F390: + cmp r4, #0 + beq _0811F39C + adds r0, r4, #0 + bl sub_0811F318 + b _0811F3A0 +_0811F39C: + bl sub_0811F5E8 +_0811F3A0: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0811F3A4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811F370 + + thumb_func_start sub_0811F3AC +sub_0811F3AC: @ 0x0811F3AC + push {r4, r5, lr} + ldr r0, _0811F3C0 + ldrh r0, [r0] + cmp r0, #1 + beq _0811F3E4 + cmp r0, #1 + bgt _0811F3C4 + cmp r0, #0 + beq _0811F3CE + b _0811F438 + .align 2, 0 +_0811F3C0: .4byte gUnknown_2037280 +_0811F3C4: + cmp r0, #2 + beq _0811F40C + cmp r0, #3 + beq _0811F41C + b _0811F438 +_0811F3CE: + ldr r0, _0811F3DC + ldr r0, [r0] + ldr r1, _0811F3E0 + adds r5, r0, r1 + movs r2, #2 + b _0811F426 + .align 2, 0 +_0811F3DC: .4byte gUnknown_3005AEC +_0811F3E0: .4byte 0x00002BB0 +_0811F3E4: + ldr r0, _0811F404 + ldr r0, [r0] + ldr r1, _0811F408 + adds r5, r0, r1 + adds r0, r5, #0 + movs r1, #3 + movs r2, #2 + movs r3, #0x12 + bl sub_0811F2A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F424 + movs r2, #2 + movs r3, #3 + b _0811F428 + .align 2, 0 +_0811F404: .4byte gUnknown_3005AEC +_0811F408: .4byte 0x00002BBC +_0811F40C: + ldr r0, _0811F414 + ldr r0, [r0] + ldr r1, _0811F418 + b _0811F422 + .align 2, 0 +_0811F414: .4byte gUnknown_3005AEC +_0811F418: .4byte 0x00002BC8 +_0811F41C: + ldr r0, _0811F440 + ldr r0, [r0] + ldr r1, _0811F444 +_0811F422: + adds r5, r0, r1 +_0811F424: + movs r2, #3 +_0811F426: + movs r3, #2 +_0811F428: + ldr r4, _0811F448 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0811F1CC + adds r0, r4, #0 + bl sub_08097C00 +_0811F438: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811F440: .4byte gUnknown_3005AEC +_0811F444: .4byte 0x00002BD4 +_0811F448: .4byte gUnknown_2021C7C + thumb_func_end sub_0811F3AC + + thumb_func_start sub_0811F44C +sub_0811F44C: @ 0x0811F44C + push {lr} + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + movs r0, #0xc + cmp r1, #0 + beq _0811F45E + movs r0, #0xd +_0811F45E: + bl sub_0811F370 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _0811F474 + bl sub_0811F180 + pop {r0} + bx r0 + .align 2, 0 +_0811F474: .4byte gUnknown_2021C54 + thumb_func_end sub_0811F44C + + thumb_func_start sub_0811F478 +sub_0811F478: @ 0x0811F478 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x1b + movs r1, #0xe0 + lsls r1, r1, #0x13 + ands r1, r0 + lsrs r1, r1, #0x18 + ldr r0, _0811F498 + ldr r0, [r0] + ldr r3, _0811F49C + adds r0, r0, r3 + adds r0, r0, r2 + ldrb r0, [r0] + asrs r0, r1 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0811F498: .4byte gUnknown_3005AEC +_0811F49C: .4byte 0x00002E20 + thumb_func_end sub_0811F478 + + thumb_func_start sub_0811F4A0 +sub_0811F4A0: @ 0x0811F4A0 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x20 + bhi _0811F4C4 + lsrs r3, r0, #0x1b + movs r2, #7 + ands r2, r1 + ldr r0, _0811F4C8 + ldr r1, [r0] + ldr r0, _0811F4CC + adds r1, r1, r0 + adds r1, r1, r3 + movs r0, #1 + lsls r0, r2 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] +_0811F4C4: + pop {r0} + bx r0 + .align 2, 0 +_0811F4C8: .4byte gUnknown_3005AEC +_0811F4CC: .4byte 0x00002E20 + thumb_func_end sub_0811F4A0 + + thumb_func_start sub_0811F4D0 +sub_0811F4D0: @ 0x0811F4D0 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0 +_0811F4D6: + adds r0, r4, #0 + bl sub_0811F478 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F4E8 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0811F4E8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x20 + bls _0811F4D6 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811F4D0 + + thumb_func_start sub_0811F4FC +sub_0811F4FC: @ 0x0811F4FC + push {r4, r5, r6, lr} + bl sub_0811F4D0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x21 + bne _0811F528 + b _0811F562 +_0811F50C: + adds r0, r5, #0 + bl sub_0811F4A0 + ldr r0, _0811F524 + ands r4, r0 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r1, #0 + orrs r4, r0 + adds r0, r4, #0 + b _0811F564 + .align 2, 0 +_0811F524: .4byte 0x000001FF +_0811F528: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x21 + subs r1, r1, r4 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r4, #0 +_0811F53E: + lsls r0, r4, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_0811F478 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811F558 + cmp r6, #0 + beq _0811F50C + subs r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0811F558: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x20 + bls _0811F53E +_0811F562: + ldr r0, _0811F56C +_0811F564: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0811F56C: .4byte 0x0000FFFF + thumb_func_end sub_0811F4FC + + thumb_func_start sub_0811F570 +sub_0811F570: @ 0x0811F570 + push {r4, r5, lr} + bl sub_0811F4D0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0811F594 + b _0811F5CA +_0811F580: + ldr r0, _0811F590 + ands r4, r0 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r1, #0 + orrs r4, r0 + adds r0, r4, #0 + b _0811F5CC + .align 2, 0 +_0811F590: .4byte 0x000001FF +_0811F594: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0 +_0811F5A8: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811F478 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F5C0 + cmp r5, #0 + beq _0811F580 + subs r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0811F5C0: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x20 + bls _0811F5A8 +_0811F5CA: + ldr r0, _0811F5D4 +_0811F5CC: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0811F5D4: .4byte 0x0000FFFF + thumb_func_end sub_0811F570 + + thumb_func_start sub_0811F5D8 +sub_0811F5D8: @ 0x0811F5D8 + push {lr} + bl sub_0809CD04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811F5D8 + + thumb_func_start sub_0811F5E8 +sub_0811F5E8: @ 0x0811F5E8 + push {r4, r5, r6, r7, lr} + movs r0, #0 + bl sub_0811F088 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _0811F608 + b _0811F652 +_0811F5FA: + ldrh r1, [r5] + ldr r0, _0811F604 + ands r0, r1 + b _0811F654 + .align 2, 0 +_0811F604: .4byte 0x000001FF +_0811F608: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0811F65C + ldr r5, [r0] + ldrh r7, [r0, #4] + movs r6, #0 + cmp r6, r7 + bhs _0811F652 +_0811F626: + ldrh r0, [r5] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F646 + cmp r4, #0 + beq _0811F5FA + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0811F646: + adds r5, #2 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, r7 + blo _0811F626 +_0811F652: + ldr r0, _0811F660 +_0811F654: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811F65C: .4byte gUnknown_8578D14 +_0811F660: .4byte 0x0000FFFF + thumb_func_end sub_0811F5E8 + + thumb_func_start sub_0811F664 +sub_0811F664: @ 0x0811F664 + push {r4, r5, r6, r7, lr} + ldr r4, _0811F770 + ldr r1, [r4] + ldr r0, _0811F774 + adds r2, r1, r0 + ldr r0, _0811F778 + strh r0, [r2] + ldr r5, _0811F77C + adds r2, r1, r5 + ldr r0, _0811F780 + strh r0, [r2] + ldr r0, _0811F784 + adds r2, r1, r0 + ldr r0, _0811F788 + strh r0, [r2] + adds r5, #4 + adds r2, r1, r5 + ldr r0, _0811F78C + strh r0, [r2] + ldr r0, _0811F790 + adds r2, r1, r0 + ldr r0, _0811F794 + strh r0, [r2] + adds r5, #8 + adds r2, r1, r5 + ldr r0, _0811F798 + strh r0, [r2] + movs r0, #0xaf + lsls r0, r0, #6 + adds r2, r1, r0 + ldr r0, _0811F79C + strh r0, [r2] + adds r5, #4 + adds r2, r1, r5 + ldr r0, _0811F7A0 + strh r0, [r2] + ldr r0, _0811F7A4 + adds r2, r1, r0 + ldr r0, _0811F7A8 + strh r0, [r2] + ldr r2, _0811F7AC + adds r0, r1, r2 + ldr r3, _0811F7B0 + strh r3, [r0] + adds r5, #6 + adds r2, r1, r5 + ldr r0, _0811F7B4 + strh r0, [r2] + ldr r2, _0811F7B8 + adds r0, r1, r2 + strh r3, [r0] + adds r5, #4 + adds r2, r1, r5 + ldr r0, _0811F7BC + strh r0, [r2] + ldr r2, _0811F7C0 + adds r0, r1, r2 + ldr r2, _0811F7C4 + strh r2, [r0] + adds r5, #4 + adds r0, r1, r5 + strh r2, [r0] + ldr r2, _0811F7C8 + adds r0, r1, r2 + strh r3, [r0] + adds r5, #4 + adds r2, r1, r5 + ldr r0, _0811F7CC + strh r0, [r2] + ldr r2, _0811F7D0 + adds r0, r1, r2 + adds r3, #5 + strh r3, [r0] + adds r5, #4 + adds r2, r1, r5 + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r2] + ldr r0, _0811F7D4 + adds r2, r1, r0 + movs r0, #0xc6 + lsls r0, r0, #3 + strh r0, [r2] + adds r5, #4 + adds r2, r1, r5 + ldr r0, _0811F7D8 + strh r0, [r2] + ldr r0, _0811F7DC + adds r1, r1, r0 + strh r3, [r1] + movs r3, #0 + adds r7, r4, #0 + ldr r6, _0811F7E0 + movs r2, #1 + rsbs r2, r2, #0 + adds r5, r2, #0 +_0811F724: + movs r2, #0 + lsls r0, r3, #3 + adds r0, r0, r3 + lsls r4, r0, #2 +_0811F72C: + ldr r1, [r7] + lsls r0, r2, #1 + adds r0, r0, r4 + adds r1, r1, r6 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r5 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #8 + bls _0811F72C + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0xf + bls _0811F724 + movs r3, #0 + ldr r4, _0811F770 + ldr r2, _0811F7E4 + movs r1, #0 +_0811F758: + ldr r0, [r4] + adds r0, r0, r2 + adds r0, r0, r3 + strb r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x3f + bls _0811F758 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0811F770: .4byte gUnknown_3005AEC +_0811F774: .4byte 0x00002BB0 +_0811F778: .4byte 0x0000020E +_0811F77C: .4byte 0x00002BB2 +_0811F780: .4byte 0x00001228 +_0811F784: .4byte 0x00002BB4 +_0811F788: .4byte 0x0000020B +_0811F78C: .4byte 0x0000101F +_0811F790: .4byte 0x00002BBC +_0811F794: .4byte 0x00000603 +_0811F798: .4byte 0x00001405 +_0811F79C: .4byte 0x00000C02 +_0811F7A0: .4byte 0x00000E0E +_0811F7A4: .4byte 0x00002BC4 +_0811F7A8: .4byte 0x00000803 +_0811F7AC: .4byte 0x00002BC6 +_0811F7B0: .4byte 0x00000C01 +_0811F7B4: .4byte 0x0000123C +_0811F7B8: .4byte 0x00002BCA +_0811F7BC: .4byte 0x0000FFFF +_0811F7C0: .4byte 0x00002BCE +_0811F7C4: .4byte 0x00000607 +_0811F7C8: .4byte 0x00002BD2 +_0811F7CC: .4byte 0x0000121B +_0811F7D0: .4byte 0x00002BD6 +_0811F7D4: .4byte 0x00002BDA +_0811F7D8: .4byte 0x0000121F +_0811F7DC: .4byte 0x00002BDE +_0811F7E0: .4byte 0x00002BE0 +_0811F7E4: .4byte 0x00002E20 + thumb_func_end sub_0811F664 + + thumb_func_start sub_0811F7E8 +sub_0811F7E8: @ 0x0811F7E8 + push {r4, lr} + ldr r4, _0811F804 + ldr r0, _0811F808 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + beq _0811F80C + bl sub_0811F830 + bl sub_0811F9C8 + movs r0, #1 + b _0811F80E + .align 2, 0 +_0811F804: .4byte gUnknown_2039DEC +_0811F808: .4byte 0x00002CE8 +_0811F80C: + movs r0, #0 +_0811F80E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811F7E8 + + thumb_func_start sub_0811F814 +sub_0811F814: @ 0x0811F814 + push {r4, lr} + ldr r4, _0811F82C + ldr r0, [r4] + cmp r0, #0 + beq _0811F826 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0811F826: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811F82C: .4byte gUnknown_2039DEC + thumb_func_end sub_0811F814 + + thumb_func_start sub_0811F830 +sub_0811F830: @ 0x0811F830 + push {r4, r5, lr} + ldr r4, _0811F8FC + ldr r0, [r4] + movs r5, #0 + strh r5, [r0] + movs r0, #0 + bl sub_080BFD4C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0811F858 + ldr r0, [r4] + ldrh r1, [r0] + adds r2, r1, #1 + strh r2, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0xf + adds r0, #2 + adds r0, r0, r1 + strh r5, [r0] +_0811F858: + movs r3, #1 +_0811F85A: + ldr r0, [r4] + ldrh r2, [r0] + adds r1, r2, #1 + strh r1, [r0] + lsls r2, r2, #0x10 + lsrs r2, r2, #0xf + adds r0, #2 + adds r0, r0, r2 + strh r3, [r0] + adds r3, #1 + cmp r3, #0x10 + ble _0811F85A + ldr r0, _0811F900 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F8B4 + ldr r0, _0811F8FC + ldr r2, [r0] + ldrh r0, [r2] + adds r1, r0, #1 + strh r1, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r3, r2, #2 + adds r0, r3, r0 + movs r1, #0x11 + strh r1, [r0] + ldrh r0, [r2] + adds r1, r0, #1 + strh r1, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r3, r0 + movs r1, #0x12 + strh r1, [r0] + ldrh r0, [r2] + adds r1, r0, #1 + strh r1, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r3, r3, r0 + movs r0, #0x13 + strh r0, [r3] +_0811F8B4: + ldr r0, _0811F904 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811F8D6 + ldr r0, _0811F8FC + ldr r0, [r0] + ldrh r1, [r0] + adds r2, r1, #1 + strh r2, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0xf + adds r0, #2 + adds r0, r0, r1 + movs r1, #0x14 + strh r1, [r0] +_0811F8D6: + bl sub_0809CD04 + cmp r0, #0 + beq _0811F8F4 + ldr r0, _0811F8FC + ldr r0, [r0] + ldrh r1, [r0] + adds r2, r1, #1 + strh r2, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0xf + adds r0, #2 + adds r0, r0, r1 + movs r1, #0x15 + strh r1, [r0] +_0811F8F4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0811F8FC: .4byte gUnknown_2039DEC +_0811F900: .4byte 0x00000864 +_0811F904: .4byte 0x00000866 + thumb_func_end sub_0811F830 + + thumb_func_start sub_0811F908 +sub_0811F908: @ 0x0811F908 + ldr r0, _0811F910 + ldr r0, [r0] + ldrb r0, [r0] + bx lr + .align 2, 0 +_0811F910: .4byte gUnknown_2039DEC + thumb_func_end sub_0811F908 + + thumb_func_start sub_0811F914 +sub_0811F914: @ 0x0811F914 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0811F930 + ldr r1, [r0] + ldrh r0, [r1] + cmp r2, r0 + bhs _0811F934 + lsls r0, r2, #1 + adds r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + b _0811F936 + .align 2, 0 +_0811F930: .4byte gUnknown_2039DEC +_0811F934: + movs r0, #0x16 +_0811F936: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811F914 + + thumb_func_start sub_0811F93C +sub_0811F93C: @ 0x0811F93C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + ldr r0, _0811F97C + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl sub_080088B8 + adds r1, r0, #0 + subs r4, r1, r4 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + cmp r0, r5 + bhs _0811F970 + movs r2, #0 +_0811F962: + strb r2, [r1] + adds r1, #1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + blo _0811F962 +_0811F970: + movs r0, #0xff + strb r0, [r1] + adds r0, r1, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0811F97C: .4byte gUnknown_8579ED8 + thumb_func_end sub_0811F93C + + thumb_func_start sub_0811F980 +sub_0811F980: @ 0x0811F980 + lsls r0, r0, #0x18 + ldr r1, _0811F98C + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0811F98C: .4byte gUnknown_8579ED8 + thumb_func_end sub_0811F980 + + thumb_func_start sub_0811F990 +sub_0811F990: @ 0x0811F990 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + bl sub_0811F180 + adds r1, r0, #0 + subs r4, r1, r4 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + cmp r0, r5 + bhs _0811F9BC + movs r2, #0 +_0811F9AE: + strb r2, [r1] + adds r1, #1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + blo _0811F9AE +_0811F9BC: + movs r0, #0xff + strb r0, [r1] + adds r0, r1, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0811F990 + + thumb_func_start sub_0811F9C8 +sub_0811F9C8: @ 0x0811F9C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + movs r3, #0 +_0811F9D6: + ldr r2, _0811FA18 + lsls r1, r3, #3 + adds r0, r2, #4 + adds r0, r1, r0 + ldr r0, [r0] + str r0, [sp] + adds r1, r1, r2 + ldr r7, [r1] + ldr r0, _0811FA1C + ldr r1, [r0] + lsls r2, r3, #1 + adds r1, #0x2e + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1] + mov sl, r0 + movs r1, #0 + str r2, [sp, #4] + adds r0, r3, #1 + str r0, [sp, #8] + ldr r2, [sp] + cmp r1, r2 + bge _0811FA88 +_0811FA04: + ldrh r0, [r7] + ldr r2, _0811FA20 + cmp r0, r2 + bne _0811FA54 + adds r7, #2 + ldrh r4, [r7] + adds r7, #2 + adds r0, r1, #1 + adds r1, r0, r4 + b _0811FA56 + .align 2, 0 +_0811FA18: .4byte gUnknown_8579D04 +_0811FA1C: .4byte gUnknown_2039DEC +_0811FA20: .4byte 0x0000FFFF +_0811FA24: + ldr r0, _0811FA50 + ldr r2, [r0] + mov r0, sl + lsls r1, r0, #1 + lsls r0, r3, #4 + subs r0, r0, r3 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r0, r2, #0 + adds r0, #0x88 + adds r0, r0, r1 + ldrh r1, [r5] + strh r1, [r0] + movs r0, #1 + add sl, r0 + adds r2, #0x2e + ldr r0, [sp, #4] + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _0811FA7E + .align 2, 0 +_0811FA50: .4byte gUnknown_2039DEC +_0811FA54: + movs r4, #1 +_0811FA56: + movs r6, #0 + adds r1, #1 + mov sb, r1 + lsls r2, r4, #1 + mov r8, r2 + cmp r6, r4 + bge _0811FA7E + adds r5, r7, #0 +_0811FA66: + ldrh r0, [r5] + str r3, [sp, #0xc] + bl sub_0811FDB4 + lsls r0, r0, #0x18 + ldr r3, [sp, #0xc] + cmp r0, #0 + bne _0811FA24 + adds r5, #2 + adds r6, #1 + cmp r6, r4 + blt _0811FA66 +_0811FA7E: + add r7, r8 + mov r1, sb + ldr r0, [sp] + cmp r1, r0 + blt _0811FA04 +_0811FA88: + ldr r3, [sp, #8] + cmp r3, #0x2c + ble _0811F9D6 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0811F9C8 + + thumb_func_start sub_0811FAA0 +sub_0811FAA0: @ 0x0811FAA0 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r0, #0 + bne _0811FAB2 + adds r0, r1, #0 + bl sub_0811FB1C + b _0811FAB8 +_0811FAB2: + adds r0, r1, #0 + bl sub_0811FC10 +_0811FAB8: + ldr r1, _0811FAC8 + ldr r1, [r1] + ldr r2, _0811FACC + adds r1, r1, r2 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0811FAC8: .4byte gUnknown_2039DEC +_0811FACC: .4byte 0x00002CE4 + thumb_func_end sub_0811FAA0 + + thumb_func_start sub_0811FAD0 +sub_0811FAD0: @ 0x0811FAD0 + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0811FAF0 + ldr r1, [r0] + ldr r3, _0811FAF4 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r2, r0 + bhs _0811FAFC + lsls r0, r2, #1 + ldr r2, _0811FAF8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + b _0811FAFE + .align 2, 0 +_0811FAF0: .4byte gUnknown_2039DEC +_0811FAF4: .4byte 0x00002CE4 +_0811FAF8: .4byte 0x00002AE4 +_0811FAFC: + ldr r0, _0811FB04 +_0811FAFE: + pop {r1} + bx r1 + .align 2, 0 +_0811FB04: .4byte 0x0000FFFF + thumb_func_end sub_0811FAD0 + + thumb_func_start sub_0811FB08 +sub_0811FB08: @ 0x0811FB08 + ldr r0, _0811FB14 + ldr r0, [r0] + ldr r1, _0811FB18 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_0811FB14: .4byte gUnknown_2039DEC +_0811FB18: .4byte 0x00002CE4 + thumb_func_end sub_0811FB08 + + thumb_func_start sub_0811FB1C +sub_0811FB1C: @ 0x0811FB1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _0811FB94 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r3, [r0, #4] + mov r8, r3 + cmp r2, #0 + beq _0811FB44 + cmp r2, #0x15 + beq _0811FB44 + cmp r2, #0x12 + beq _0811FB44 + cmp r2, #0x13 + bne _0811FBA4 +_0811FB44: + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r1, [r0] + movs r7, #0 + movs r5, #0 + cmp r5, r8 + bhs _0811FBF0 + movs r0, #0x7f + ands r0, r2 + lsls r0, r0, #9 + mov sb, r0 + adds r4, r1, #0 + lsls r6, r2, #0x18 +_0811FB5E: + ldrh r0, [r4] + lsrs r1, r6, #0x18 + bl sub_0811FCB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811FB88 + ldr r0, _0811FB98 + ldr r2, [r0] + lsls r0, r5, #1 + ldr r1, _0811FB9C + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r4] + ldr r3, _0811FBA0 + adds r1, r3, #0 + ands r0, r1 + mov r1, sb + orrs r0, r1 + strh r0, [r2] + adds r5, #1 +_0811FB88: + adds r4, #2 + adds r7, #1 + cmp r7, r8 + blo _0811FB5E + b _0811FBF0 + .align 2, 0 +_0811FB94: .4byte gUnknown_8578D14 +_0811FB98: .4byte gUnknown_2039DEC +_0811FB9C: .4byte 0x00002AE4 +_0811FBA0: .4byte 0x000001FF +_0811FBA4: + ldr r1, [r0] + movs r7, #0 + movs r5, #0 + cmp r5, r8 + bhs _0811FBF0 + movs r0, #0x7f + ands r0, r2 + lsls r0, r0, #9 + mov sl, r0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + mov sb, r2 +_0811FBBC: + ldrh r4, [r6, #4] + adds r0, r4, #0 + mov r2, sb + lsrs r1, r2, #0x18 + bl sub_0811FCB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811FBE8 + ldr r0, _0811FC04 + ldr r1, [r0] + lsls r0, r5, #1 + ldr r3, _0811FC08 + adds r1, r1, r3 + adds r1, r1, r0 + ldr r2, _0811FC0C + adds r0, r2, #0 + ands r4, r0 + mov r3, sl + orrs r4, r3 + strh r4, [r1] + adds r5, #1 +_0811FBE8: + adds r6, #0xc + adds r7, #1 + cmp r7, r8 + blo _0811FBBC +_0811FBF0: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811FC04: .4byte gUnknown_2039DEC +_0811FC08: .4byte 0x00002AE4 +_0811FC0C: .4byte 0x000001FF + thumb_func_end sub_0811FB1C + + thumb_func_start sub_0811FC10 +sub_0811FC10: @ 0x0811FC10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r4, #0 + movs r6, #0 + ldr r3, _0811FC78 + ldr r0, [r3] + lsls r5, r1, #1 + adds r0, #0x2e + adds r0, r0, r5 + ldrh r0, [r0] + cmp r6, r0 + bhs _0811FC6C + mov r8, r3 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r7, r0, #4 + ldr r0, _0811FC7C + mov ip, r0 +_0811FC3A: + mov r0, r8 + ldr r3, [r0] + adds r1, r6, #0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #1 + mov r0, ip + adds r2, r3, r0 + adds r2, r2, r1 + lsls r1, r4, #1 + adds r1, r1, r7 + adds r0, r3, #0 + adds r0, #0x88 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r3, #0x2e + adds r3, r3, r5 + ldrh r3, [r3] + cmp r4, r3 + blo _0811FC3A +_0811FC6C: + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0811FC78: .4byte gUnknown_2039DEC +_0811FC7C: .4byte 0x00002AE4 + thumb_func_end sub_0811FC10 + + thumb_func_start sub_0811FC80 +sub_0811FC80: @ 0x0811FC80 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r2, #0 + ldr r0, _0811FCA4 + ldr r0, [r0] + ldrh r1, [r0] + cmp r2, r1 + bge _0811FCB0 + adds r4, r3, #0 + adds r3, r1, #0 + adds r1, r0, #2 +_0811FC98: + ldrh r0, [r1] + cmp r0, r4 + bne _0811FCA8 + movs r0, #1 + b _0811FCB2 + .align 2, 0 +_0811FCA4: .4byte gUnknown_2039DEC +_0811FCA8: + adds r1, #2 + adds r2, #1 + cmp r2, r3 + blt _0811FC98 +_0811FCB0: + movs r0, #0 +_0811FCB2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0811FC80 + + thumb_func_start sub_0811FCB8 +sub_0811FCB8: @ 0x0811FCB8 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + cmp r2, #0x15 + bhi _0811FD6E + lsls r0, r2, #2 + ldr r1, _0811FCD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811FCD0: .4byte _0811FCD4 +_0811FCD4: @ jump table + .4byte _0811FD2C @ case 0 + .4byte _0811FD6E @ case 1 + .4byte _0811FD6E @ case 2 + .4byte _0811FD6E @ case 3 + .4byte _0811FD6E @ case 4 + .4byte _0811FD6E @ case 5 + .4byte _0811FD6E @ case 6 + .4byte _0811FD6E @ case 7 + .4byte _0811FD6E @ case 8 + .4byte _0811FD6E @ case 9 + .4byte _0811FD6E @ case 10 + .4byte _0811FD6E @ case 11 + .4byte _0811FD6E @ case 12 + .4byte _0811FD6E @ case 13 + .4byte _0811FD6E @ case 14 + .4byte _0811FD6E @ case 15 + .4byte _0811FD6E @ case 16 + .4byte _0811FD6E @ case 17 + .4byte _0811FD5C @ case 18 + .4byte _0811FD5C @ case 19 + .4byte _0811FD60 @ case 20 + .4byte _0811FD42 @ case 21 +_0811FD2C: + adds r0, r4, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFBBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811FD80 +_0811FD42: + adds r0, r4, #0 + bl sub_0811FD8C + cmp r0, #0 + beq _0811FD5C + adds r0, r4, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080BFBBC +_0811FD5C: + movs r0, #1 + b _0811FD80 +_0811FD60: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0811F478 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811FD80 +_0811FD6E: + ldr r1, _0811FD88 + lsls r0, r2, #3 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #8] +_0811FD80: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811FD88: .4byte gUnknown_8578D14 + thumb_func_end sub_0811FCB8 + + thumb_func_start sub_0811FD8C +sub_0811FD8C: @ 0x0811FD8C + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r1, _0811FDA0 +_0811FD96: + ldrh r0, [r1] + cmp r0, r3 + bne _0811FDA4 + movs r0, #1 + b _0811FDAE + .align 2, 0 +_0811FDA0: .4byte gUnknown_8579F34 +_0811FDA4: + adds r1, #2 + adds r2, #1 + cmp r2, #0 + beq _0811FD96 + movs r0, #0 +_0811FDAE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0811FD8C + + thumb_func_start sub_0811FDB4 +sub_0811FDB4: @ 0x0811FDB4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x19 + lsls r0, r0, #7 + lsrs r4, r0, #0x17 + adds r0, r5, #0 + bl sub_0811FC80 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0811FDD8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0811FCB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0811FDDA +_0811FDD8: + movs r0, #0 +_0811FDDA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0811FDB4 + + thumb_func_start sub_0811FDE0 +sub_0811FDE0: @ 0x0811FDE0 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _0811FE08 + adds r1, r1, r0 + lsrs r0, r1, #0x10 + ldr r1, _0811FE0C + cmp r0, r1 + beq _0811FE02 + adds r3, r1, #0 +_0811FDF4: + strh r3, [r2] + adds r2, #2 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r1 + bne _0811FDF4 +_0811FE02: + pop {r0} + bx r0 + .align 2, 0 +_0811FE08: .4byte 0xFFFF0000 +_0811FE0C: .4byte 0x0000FFFF + thumb_func_end sub_0811FDE0 + + thumb_func_start sub_0811FE10 +sub_0811FE10: @ 0x0811FE10 + push {lr} + bl sub_0801AB30 + ldr r1, _0811FE28 + adds r2, r1, #0 + adds r1, r0, #6 +_0811FE1C: + strh r2, [r1] + subs r1, #2 + cmp r1, r0 + bge _0811FE1C + pop {r0} + bx r0 + .align 2, 0 +_0811FE28: .4byte 0x0000FFFF + thumb_func_end sub_0811FE10 + + thumb_func_start sub_0811FE2C +sub_0811FE2C: @ 0x0811FE2C + ldr r1, _0811FE34 + str r0, [r1] + bx lr + .align 2, 0 +_0811FE34: .4byte gUnknown_2039DF0 + thumb_func_end sub_0811FE2C + + thumb_func_start sub_0811FE38 +sub_0811FE38: @ 0x0811FE38 + push {lr} + sub sp, #4 + ldr r0, _0811FE70 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #3 + bl sub_080980E0 + ldr r3, _0811FE74 + ldr r2, [r3] + ldr r1, [r0] + str r1, [r2, #0x2c] + ldr r0, [r0, #4] + str r0, [r2, #0x30] + ldr r0, _0811FE78 + adds r2, r2, r0 + movs r1, #0 + strb r1, [r2] + mov r0, sp + strh r1, [r0] + ldr r1, [r3] + adds r1, #0x34 + ldr r2, _0811FE7C + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0811FE70: .4byte gUnknown_3005AF0 +_0811FE74: .4byte gUnknown_2039DF0 +_0811FE78: .4byte 0x000010B4 +_0811FE7C: .4byte 0x01000800 + thumb_func_end sub_0811FE38 + + thumb_func_start sub_0811FE80 +sub_0811FE80: @ 0x0811FE80 + push {r4, r5, r6, r7, lr} + ldr r0, _0811FEA0 + ldr r1, [r0] + ldr r2, _0811FEA4 + adds r0, r1, r2 + ldrb r2, [r0] + lsls r0, r2, #8 + adds r0, #0x34 + adds r5, r1, r0 + cmp r2, #0xd + beq _0811FF50 + cmp r2, #0xd + bgt _0811FEA8 + cmp r2, #0 + beq _0811FEAE + b _0811FEF8 + .align 2, 0 +_0811FEA0: .4byte gUnknown_2039DF0 +_0811FEA4: .4byte 0x000010B4 +_0811FEA8: + cmp r2, #0xe + beq _0811FF9C + b _0811FEF8 +_0811FEAE: + ldr r0, [r1, #0x2c] + adds r1, r5, #0 + movs r2, #8 + bl CpuFastSet + movs r4, #0 + adds r7, r5, #0 + adds r7, #0xe0 +_0811FEBE: + ldr r6, _0811FEF0 + ldr r0, [r6] + ldr r0, [r0, #0x2c] + adds r0, #0x20 + adds r4, #1 + lsls r1, r4, #5 + adds r1, r5, r1 + movs r2, #8 + bl CpuFastSet + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #5 + bls _0811FEBE + ldr r0, [r6] + ldr r0, [r0, #0x2c] + adds r0, #0x40 + adds r1, r7, #0 + movs r2, #8 + bl CpuFastSet + ldr r1, [r6] + ldr r0, _0811FEF4 + adds r1, r1, r0 + b _0811FF3E + .align 2, 0 +_0811FEF0: .4byte gUnknown_2039DF0 +_0811FEF4: .4byte 0x000010B4 +_0811FEF8: + ldr r0, _0811FF48 + ldr r0, [r0] + ldr r0, [r0, #0x2c] + adds r0, #0x60 + adds r1, r5, #0 + movs r2, #8 + bl CpuFastSet + movs r4, #0 + adds r7, r5, #0 + adds r7, #0xe0 +_0811FF0E: + ldr r6, _0811FF48 + ldr r0, [r6] + ldr r0, [r0, #0x2c] + adds r0, #0x80 + adds r4, #1 + lsls r1, r4, #5 + adds r1, r5, r1 + movs r2, #8 + bl CpuFastSet + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #5 + bls _0811FF0E + ldr r0, [r6] + ldr r0, [r0, #0x2c] + adds r0, #0xa0 + adds r1, r7, #0 + movs r2, #8 + bl CpuFastSet + ldr r1, [r6] + ldr r2, _0811FF4C + adds r1, r1, r2 +_0811FF3E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0811FFA8 + .align 2, 0 +_0811FF48: .4byte gUnknown_2039DF0 +_0811FF4C: .4byte 0x000010B4 +_0811FF50: + ldr r0, [r1, #0x2c] + adds r0, #0xc0 + adds r1, r5, #0 + movs r2, #8 + bl CpuFastSet + movs r4, #0 + adds r7, r5, #0 + adds r7, #0xe0 +_0811FF62: + ldr r6, _0811FFA0 + ldr r0, [r6] + ldr r0, [r0, #0x2c] + adds r0, #0xe0 + adds r4, #1 + lsls r1, r4, #5 + adds r1, r5, r1 + movs r2, #8 + bl CpuFastSet + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #5 + bls _0811FF62 + ldr r0, [r6] + ldr r0, [r0, #0x2c] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #8 + bl CpuFastSet + ldr r1, [r6] + ldr r2, _0811FFA4 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0811FF9C: + movs r0, #0 + b _0811FFAA + .align 2, 0 +_0811FFA0: .4byte gUnknown_2039DF0 +_0811FFA4: .4byte 0x000010B4 +_0811FFA8: + movs r0, #1 +_0811FFAA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0811FE80 + + thumb_func_start sub_0811FFB0 +sub_0811FFB0: @ 0x0811FFB0 + push {lr} + bl sub_0811FE38 +_0811FFB6: + bl sub_0811FE80 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0811FFB6 + pop {r0} + bx r0 + thumb_func_end sub_0811FFB0 + + thumb_func_start sub_0811FFC4 +sub_0811FFC4: @ 0x0811FFC4 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + ldr r2, _08120014 + ldr r3, [r2] + movs r1, #0 + strb r1, [r3, #5] + ldr r1, [r2] + strb r0, [r1, #4] + movs r3, #0 + adds r7, r2, #0 + adds r4, r7, #0 + movs r2, #1 +_0811FFE2: + ldr r0, [r4] + adds r1, r0, #6 + adds r1, r1, r3 + ldrb r0, [r0, #4] + asrs r0, r3 + ands r0, r2 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _0811FFE2 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + ldr r3, [r7] + ldrh r2, [r3] + ldrh r3, [r3, #2] + bl sub_081201A0 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08120014: .4byte gUnknown_2039DF0 + thumb_func_end sub_0811FFC4 + + thumb_func_start sub_08120018 +sub_08120018: @ 0x08120018 + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r4, _081200C0 +_0812001E: + ldr r0, [r4] + ldrh r0, [r0] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008280 + ldr r0, [r4] + ldrh r0, [r0, #2] + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008564 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _0812001E + movs r5, #0 + ldr r6, _081200C0 +_08120048: + ldr r0, [r6] + lsls r4, r5, #2 + adds r0, #0xc + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _081200BA + bl sub_08006E00 + ldr r0, [r6] + adds r0, #0xc + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _08120048 + movs r5, #0 + ldr r6, _081200C0 +_08120072: + ldr r0, [r6] + lsls r4, r5, #2 + adds r0, #0x14 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, #0 + beq _081200BA + bl sub_08006E00 + ldr r0, [r6] + adds r0, #0x14 + adds r0, r0, r4 + movs r7, #0 + str r7, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _08120072 + ldr r4, _081200C0 + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _081200AA + bl sub_08006E00 + ldr r0, [r4] + str r7, [r0, #0x24] +_081200AA: + ldr r0, [r4] + ldr r0, [r0, #0x28] + cmp r0, #0 + beq _081200BA + bl sub_08006E00 + ldr r0, [r4] + str r7, [r0, #0x28] +_081200BA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081200C0: .4byte gUnknown_2039DF0 + thumb_func_end sub_08120018 + + thumb_func_start sub_081200C4 +sub_081200C4: @ 0x081200C4 + push {r4, r5, lr} + ldr r0, _081200F4 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _081200FC + movs r0, #5 + bl sub_080A306C + ldr r2, _081200F8 + ldr r1, [r2] + ldrb r0, [r1, #5] + subs r0, #1 + strb r0, [r1, #5] + lsls r0, r0, #0x18 + cmp r0, #0 + bge _08120184 + ldr r1, [r2] + movs r0, #5 + strb r0, [r1, #5] + b _08120184 + .align 2, 0 +_081200F4: .4byte gUnknown_3002360 +_081200F8: .4byte gUnknown_2039DF0 +_081200FC: + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0812012C + movs r0, #5 + bl sub_080A306C + ldr r2, _08120128 + ldr r1, [r2] + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #5 + ble _08120184 + ldr r0, [r2] + strb r5, [r0, #5] + b _08120184 + .align 2, 0 +_08120128: .4byte gUnknown_2039DF0 +_0812012C: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08120188 + movs r0, #5 + bl sub_080A306C + ldr r2, _0812015C + ldr r0, [r2] + movs r1, #5 + ldrsb r1, [r0, r1] + cmp r1, #4 + beq _08120160 + cmp r1, #5 + beq _08120196 + adds r0, #6 + adds r1, r0, r1 + movs r2, #0 + ldrb r0, [r1] + cmp r0, #0 + bne _08120182 + movs r2, #1 + b _08120182 + .align 2, 0 +_0812015C: .4byte gUnknown_2039DF0 +_08120160: + strb r4, [r0, #4] + movs r3, #0 + adds r4, r2, #0 +_08120166: + ldr r2, [r4] + adds r0, r2, #6 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r3 + ldrb r1, [r2, #4] + orrs r0, r1 + strb r0, [r2, #4] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _08120166 + b _08120196 +_08120182: + strb r2, [r1] +_08120184: + movs r0, #1 + b _08120198 +_08120188: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08120184 + movs r0, #5 + bl sub_080A306C +_08120196: + movs r0, #0 +_08120198: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081200C4 + + thumb_func_start sub_081201A0 +sub_081201A0: @ 0x081201A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x50 + mov r8, r0 + mov sb, r1 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r4, _08120398 + ldr r0, [r4] + adds r0, #0x34 + str r0, [sp, #0x18] + add r1, sp, #0x1c + movs r7, #0 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + mov r0, sp + adds r0, #0x1e + strh r5, [r0] + add r1, sp, #0x20 + ldr r0, _0812039C + str r0, [sp, #0x20] + movs r0, #0xc8 + lsls r0, r0, #2 + strh r0, [r1, #4] + adds r0, r5, #1 + strh r0, [r1, #6] + add r0, sp, #0x28 + movs r1, #0 + movs r2, #8 + bl memset + add r2, sp, #0x18 + mov sl, r2 + mov r0, sp + mov r1, sl + 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, _081203A0 + str r0, [sp, #0x38] + adds r0, r6, #1 + strh r0, [r1, #4] + add r0, sp, #0x40 + movs r1, #0 + movs r2, #8 + bl memset + add r4, sp, #0x30 + mov r0, sl + adds r1, r4, #0 + movs r2, #0x18 + bl memcpy + strh r5, [r4] + strh r6, [r4, #2] + ldr r0, _081203A4 + str r0, [r4, #4] + ldr r0, _081203A8 + str r0, [r4, #8] + str r7, [r4, #0xc] + ldr r0, _081203AC + str r0, [r4, #0x10] + ldr r0, _081203B0 + str r0, [r4, #0x14] + mov r0, sp + bl sub_08008254 + mov r0, sl + bl sub_080084A8 + movs r5, #0 + mov r3, r8 + lsls r3, r3, #0x10 + mov r8, r3 + movs r0, #0x80 + lsls r0, r0, #0xe + add r0, r8 + mov sl, r0 + mov r1, r8 + str r1, [sp, #0x48] + mov r2, sb + lsls r2, r2, #0x10 + mov sb, r2 + movs r7, #0x80 + lsls r7, r7, #0xe + add r7, sb + mov r3, sb + str r3, [sp, #0x4c] +_08120278: + adds r0, r4, #0 + mov r2, sl + asrs r1, r2, #0x10 + asrs r2, r7, #0x10 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + bne _08120290 + b _0812041C +_08120290: + ldr r6, _08120398 + ldr r2, [r6] + lsls r0, r5, #2 + adds r2, #0xc + adds r2, r2, r0 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, _081203B4 + adds r0, r0, r1 + str r0, [r2] + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _08120278 + ldr r0, [r6] + ldr r1, [r0, #0x10] + ldr r3, [sp, #0x4c] + asrs r0, r3, #0x10 + adds r0, #0x60 + strh r0, [r1, #0x22] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + ldr r0, _081203B8 + str r0, [r4, #8] + ldr r0, _081203BC + str r0, [r4, #0x14] + ldr r0, _081203C0 + str r0, [r4, #4] + movs r5, #0 + ldr r0, [sp, #0x48] + movs r1, #0x80 + lsls r1, r1, #0xe + adds r0, r0, r1 + mov sb, r0 +_081202E8: + lsls r2, r5, #4 + adds r2, #0x10 + ldr r3, [sp, #0x4c] + asrs r3, r3, #0x10 + mov r8, r3 + add r2, r8 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + mov r3, sb + asrs r1, r3, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + bne _0812030E + b _0812042C +_0812030E: + ldr r6, _08120398 + ldr r1, [r6] + lsls r0, r5, #2 + adds r1, #0x14 + adds r1, r1, r0 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r7, _081203B4 + adds r0, r0, r7 + str r0, [r1] + strh r5, [r0, #0x2e] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _081202E8 + ldr r0, _081203C4 + str r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _081203C8 + ldr r0, [r6] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r7 + str r1, [r0, #0x28] + ldrb r3, [r1, #1] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1, #1] + ldr r0, [r6] + ldr r1, [r0, #0x28] + ldrb r0, [r1, #3] + ands r2, r0 + movs r0, #0x80 + orrs r2, r0 + strb r2, [r1, #3] + ldr r0, [r6] + ldr r0, [r0, #0x28] + movs r1, #9 + bl sub_08007EC0 + ldr r1, [r6] + ldr r2, [r1, #0x28] + ldr r3, [sp, #0x48] + asrs r0, r3, #0x10 + 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, #1 + movs r2, #2 + movs r3, #0 + bl sub_08006F70 + b _081203CE + .align 2, 0 +_08120398: .4byte gUnknown_2039DF0 +_0812039C: .4byte gUnknown_8579F58 +_081203A0: .4byte gUnknown_8579F38 +_081203A4: .4byte gUnknown_857AAA0 +_081203A8: .4byte gUnknown_857AB38 +_081203AC: .4byte gUnknown_82BF310 +_081203B0: .4byte sub_0812045C +_081203B4: .4byte gUnknown_20205AC +_081203B8: .4byte gUnknown_857AB00 +_081203BC: .4byte sub_08120460 +_081203C0: .4byte gUnknown_857AAA8 +_081203C4: .4byte sub_08007140 +_081203C8: + ldr r1, [r6] + movs r0, #0 + str r0, [r1, #0x28] +_081203CE: + ldr r0, _08120410 + str r0, [r4, #0x14] + ldr r0, [sp, #0x48] + movs r2, #0xc0 + lsls r2, r2, #0xc + adds r1, r0, r2 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _08120440 + ldr r0, _08120414 + ldr r2, [r0] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r0, _08120418 + adds r1, r1, r0 + str r1, [r2, #0x24] + ldr r3, [sp, #0x4c] + asrs r0, r3, #0x10 + adds r0, #0x10 + strh r0, [r1, #0x2e] + ldr r0, [r2, #0x24] + movs r1, #8 + bl sub_08007EC0 + b _08120448 + .align 2, 0 +_08120410: .4byte sub_0812049C +_08120414: .4byte gUnknown_2039DF0 +_08120418: .4byte gUnknown_20205AC +_0812041C: + ldr r0, _08120428 + ldr r0, [r0] + lsls r1, r5, #2 + adds r0, #0xc + b _08120434 + .align 2, 0 +_08120428: .4byte gUnknown_2039DF0 +_0812042C: + ldr r0, _0812043C + ldr r0, [r0] + lsls r1, r5, #2 + adds r0, #0x14 +_08120434: + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + b _08120448 + .align 2, 0 +_0812043C: .4byte gUnknown_2039DF0 +_08120440: + ldr r0, _08120458 + ldr r1, [r0] + movs r0, #0 + str r0, [r1, #0x24] +_08120448: + add sp, #0x50 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08120458: .4byte gUnknown_2039DF0 + thumb_func_end sub_081201A0 + + thumb_func_start sub_0812045C +sub_0812045C: @ 0x0812045C + bx lr + .align 2, 0 + thumb_func_end sub_0812045C + + thumb_func_start sub_08120460 +sub_08120460: @ 0x08120460 + push {lr} + adds r2, r0, #0 + ldr r0, _08120488 + ldr r0, [r0] + movs r3, #0x2e + ldrsh r1, [r2, r3] + adds r0, #6 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0812048C + lsls r1, r1, #1 + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 + b _08120496 + .align 2, 0 +_08120488: .4byte gUnknown_2039DF0 +_0812048C: + lsls r1, r1, #0x19 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 +_08120496: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120460 + + thumb_func_start sub_0812049C +sub_0812049C: @ 0x0812049C + ldr r1, _081204B0 + ldr r1, [r1] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #4 + ldrh r2, [r0, #0x2e] + adds r1, r1, r2 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_081204B0: .4byte gUnknown_2039DF0 + thumb_func_end sub_0812049C + + thumb_func_start sub_081204B4 +sub_081204B4: @ 0x081204B4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r2, #0 + bne _081204C4 + ldr r2, _081204D0 +_081204C4: + movs r3, #0x10 + bl sub_081204F4 + pop {r1} + bx r1 + .align 2, 0 +_081204D0: .4byte gUnknown_857A278 + thumb_func_end sub_081204B4 + + thumb_func_start sub_081204D4 +sub_081204D4: @ 0x081204D4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r2, #0 + bne _081204E4 + ldr r2, _081204F0 +_081204E4: + movs r3, #1 + bl sub_081204F4 + pop {r1} + bx r1 + .align 2, 0 +_081204F0: .4byte gUnknown_857A278 + thumb_func_end sub_081204D4 + + thumb_func_start sub_081204F4 +sub_081204F4: @ 0x081204F4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x28 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _08120570 + str r4, [sp, #0x18] + movs r4, #0x80 + add r5, sp, #0x18 + lsrs r6, r0, #0x10 + orrs r0, r4 + str r0, [r5, #4] + str r2, [sp, #0x20] + ldr r0, _08120574 + mov r8, r0 + add r4, sp, #0x20 + ldr r0, [r4, #4] + mov r2, r8 + ands r0, r2 + orrs r0, r1 + str r0, [r4, #4] + mov r0, sp + movs r2, #0 + strh r6, [r0] + strh r1, [r0, #2] + ldr r0, _08120578 + str r0, [sp, #4] + ldr r0, _0812057C + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, _08120580 + str r0, [sp, #0x10] + ldr r0, _08120584 + str r0, [sp, #0x14] + lsls r3, r3, #0x17 + lsrs r3, r3, #0x10 + ldr r0, [r5, #4] + mov r1, r8 + ands r0, r1 + orrs r0, r3 + str r0, [r5, #4] + adds r0, r5, #0 + bl sub_08008210 + adds r0, r4, #0 + bl sub_0800845C + mov r0, sp + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + bne _08120588 + movs r0, #0 + b _08120592 + .align 2, 0 +_08120570: .4byte gUnknown_857A298 +_08120574: .4byte 0xFFFF0000 +_08120578: .4byte gUnknown_857AB40 +_0812057C: .4byte gUnknown_857ABC8 +_08120580: .4byte gUnknown_82BF310 +_08120584: .4byte sub_0812045C +_08120588: + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081205A0 + adds r0, r0, r1 +_08120592: + add sp, #0x28 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081205A0: .4byte gUnknown_20205AC + thumb_func_end sub_081204F4 + + thumb_func_start sub_081205A4 +sub_081205A4: @ 0x081205A4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x11 + ldr r2, _081205BC + adds r0, r0, r2 + movs r2, #0x80 + movs r3, #0x10 + bl sub_08000EF8 + pop {r0} + bx r0 + .align 2, 0 +_081205BC: .4byte gUnknown_857A298 + thumb_func_end sub_081205A4 + + thumb_func_start sub_081205C0 +sub_081205C0: @ 0x081205C0 + push {r4, lr} + ldr r0, _08120600 + ldr r2, [r0] + ldr r1, _08120604 + adds r0, r2, r1 + movs r1, #0 + strb r1, [r0] + ldr r3, _08120608 + adds r0, r2, r3 + strb r1, [r0] + ldr r0, _0812060C + ldrb r1, [r0] + adds r3, #1 + adds r0, r2, r3 + strb r1, [r0] + movs r3, #0 + ldr r0, _08120610 + adds r2, r2, r0 + ldr r4, _08120614 +_081205E6: + lsls r0, r3, #1 + adds r1, r2, r0 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #5 + bls _081205E6 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120600: .4byte gUnknown_3005AEC +_08120604: .4byte 0x00002E28 +_08120608: .4byte 0x00002E51 +_0812060C: .4byte gUnknown_829BDA5 +_08120610: .4byte 0x00002E2A +_08120614: .4byte gUnknown_857AC08 + thumb_func_end sub_081205C0 + + thumb_func_start sub_08120618 +sub_08120618: @ 0x08120618 + ldr r0, _08120630 + ldr r1, [r0] + ldr r0, _08120634 + adds r1, r1, r0 + movs r2, #0 + movs r0, #1 + strb r0, [r1] + strb r2, [r1, #1] + ldr r0, _08120638 + ldrb r0, [r0] + strb r0, [r1, #2] + bx lr + .align 2, 0 +_08120630: .4byte gUnknown_3005AEC +_08120634: .4byte 0x00002E28 +_08120638: .4byte gUnknown_829BDA5 + thumb_func_end sub_08120618 + + thumb_func_start sub_0812063C +sub_0812063C: @ 0x0812063C + push {lr} + bl sub_08120F54 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812063C + + thumb_func_start sub_08120648 +sub_08120648: @ 0x08120648 + ldr r0, _08120664 + ldr r1, [r0] + ldr r0, _08120668 + adds r2, r1, r0 + movs r3, #0 + movs r0, #4 + strb r0, [r2] + strb r3, [r2, #1] + ldr r0, _0812066C + ldrb r0, [r0] + ldr r2, _08120670 + adds r1, r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_08120664: .4byte gUnknown_3005AEC +_08120668: .4byte 0x00002E28 +_0812066C: .4byte gUnknown_829BDA5 +_08120670: .4byte 0x00002E48 + thumb_func_end sub_08120648 + + thumb_func_start sub_08120674 +sub_08120674: @ 0x08120674 + push {lr} + bl sub_08133A2C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120674 + + thumb_func_start sub_08120680 +sub_08120680: @ 0x08120680 + push {lr} + ldr r0, _081206A8 + ldr r0, [r0] + ldrb r1, [r0, #0xb] + lsls r1, r1, #8 + ldrb r0, [r0, #0xa] + orrs r0, r1 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + cmp r0, #4 + bhi _081206E0 + lsls r0, r0, #2 + ldr r1, _081206AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081206A8: .4byte gUnknown_3005AF0 +_081206AC: .4byte _081206B0 +_081206B0: @ jump table + .4byte _081206C4 @ case 0 + .4byte _081206CA @ case 1 + .4byte _081206D0 @ case 2 + .4byte _081206D6 @ case 3 + .4byte _081206DC @ case 4 +_081206C4: + bl sub_081205C0 + b _081206E0 +_081206CA: + bl sub_08120618 + b _081206E0 +_081206D0: + bl sub_08120674 + b _081206E0 +_081206D6: + bl sub_0812063C + b _081206E0 +_081206DC: + bl sub_08120648 +_081206E0: + bl sub_08120E18 + pop {r0} + bx r0 + thumb_func_end sub_08120680 + + thumb_func_start sub_081206E8 +sub_081206E8: @ 0x081206E8 + ldr r0, _081206F4 + ldr r0, [r0] + ldr r1, _081206F8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081206F4: .4byte gUnknown_3005AEC +_081206F8: .4byte 0x00002E28 + thumb_func_end sub_081206E8 + + thumb_func_start sub_081206FC +sub_081206FC: @ 0x081206FC + push {r4, lr} + ldr r4, _08120710 + bl sub_081206E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120710: .4byte gUnknown_2037290 + thumb_func_end sub_081206FC + + thumb_func_start sub_08120714 +sub_08120714: @ 0x08120714 + ldr r1, _08120724 + ldr r0, _08120728 + ldr r0, [r0] + ldr r2, _0812072C + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_08120724: .4byte gUnknown_2037290 +_08120728: .4byte gUnknown_3005AEC +_0812072C: .4byte 0x00002E51 + thumb_func_end sub_08120714 + + thumb_func_start sub_08120730 +sub_08120730: @ 0x08120730 + push {r4, r5, r6, lr} + ldr r0, _0812078C + ldr r4, [r0] + ldr r0, _08120790 + adds r6, r4, r0 + ldr r1, _08120794 + adds r0, r4, r1 + ldr r5, _08120798 + ldr r1, [r5] + bl sub_080088B8 + movs r2, #0 + ldr r0, _0812079C + adds r4, r4, r0 +_0812074C: + adds r1, r4, r2 + ldr r0, [r5] + adds r0, #0xa + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #3 + bls _0812074C + movs r2, #0 + adds r5, r6, #0 + adds r5, #0x29 + adds r3, r6, #2 + adds r4, r6, #0 + adds r4, #0xe +_0812076E: + lsls r0, r2, #1 + adds r1, r3, r0 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #5 + bls _0812076E + movs r0, #1 + strb r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812078C: .4byte gUnknown_3005AEC +_08120790: .4byte 0x00002E28 +_08120794: .4byte 0x00002E42 +_08120798: .4byte gUnknown_3005AF0 +_0812079C: .4byte 0x00002E4D + thumb_func_end sub_08120730 + + thumb_func_start sub_081207A0 +sub_081207A0: @ 0x081207A0 + push {r4, r5, lr} + ldr r0, _0812080C + ldr r1, [r0] + ldr r0, _08120810 + ldrh r0, [r0] + ldr r2, _08120814 + adds r4, r1, r2 + cmp r0, #0 + bne _081207B6 + ldr r0, _08120818 + adds r4, r1, r0 +_081207B6: + ldr r2, _0812081C + movs r5, #0 +_081207BA: + ldrh r1, [r4] + adds r4, #2 + adds r0, r2, #0 + bl sub_0811F180 + adds r2, r0, #0 + movs r0, #0 + strb r0, [r2] + adds r2, #1 + ldrh r1, [r4] + adds r4, #2 + adds r0, r2, #0 + bl sub_0811F180 + adds r2, r0, #0 + movs r0, #0xfe + strb r0, [r2] + adds r2, #1 + ldrh r1, [r4] + adds r4, #2 + adds r0, r2, #0 + bl sub_0811F180 + adds r2, r0, #0 + cmp r5, #0 + bne _081207FA + movs r0, #0xfc + strb r0, [r2] + adds r2, #1 + movs r0, #0xf + strb r0, [r2] + adds r2, #1 +_081207FA: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #1 + bls _081207BA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812080C: .4byte gUnknown_3005AEC +_08120810: .4byte gUnknown_2037280 +_08120814: .4byte 0x00002E36 +_08120818: .4byte 0x00002E2A +_0812081C: .4byte gUnknown_2021C7C + thumb_func_end sub_081207A0 + + thumb_func_start sub_08120820 +sub_08120820: @ 0x08120820 + push {lr} + ldr r0, _08120834 + ldrb r0, [r0] + bl sub_08120BA0 + bl sub_080988B8 + pop {r0} + bx r0 + .align 2, 0 +_08120834: .4byte gUnknown_2037280 + thumb_func_end sub_08120820 + + thumb_func_start sub_08120838 +sub_08120838: @ 0x08120838 + ldr r1, _08120848 + ldr r0, _0812084C + ldr r0, [r0] + ldr r2, _08120850 + adds r0, r0, r2 + ldrb r0, [r0, #1] + strh r0, [r1] + bx lr + .align 2, 0 +_08120848: .4byte gUnknown_2037290 +_0812084C: .4byte gUnknown_3005AEC +_08120850: .4byte 0x00002E28 + thumb_func_end sub_08120838 + + thumb_func_start sub_08120854 +sub_08120854: @ 0x08120854 + ldr r0, _08120864 + ldr r0, [r0] + ldr r1, _08120868 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_08120864: .4byte gUnknown_3005AEC +_08120868: .4byte 0x00002E28 + thumb_func_end sub_08120854 + + thumb_func_start sub_0812086C +sub_0812086C: @ 0x0812086C + push {lr} + bl sub_0811F4FC + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08120884 + cmp r1, r0 + bne _0812088C + ldr r1, _08120888 + movs r0, #0 + b _08120896 + .align 2, 0 +_08120884: .4byte 0x0000FFFF +_08120888: .4byte gUnknown_2037290 +_0812088C: + ldr r0, _0812089C + bl sub_0811F180 + ldr r1, _081208A0 + movs r0, #1 +_08120896: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0812089C: .4byte gUnknown_2021C40 +_081208A0: .4byte gUnknown_2037290 + thumb_func_end sub_0812086C + + thumb_func_start sub_081208A4 +sub_081208A4: @ 0x081208A4 + push {lr} + ldr r0, _081208C0 + ldr r0, [r0] + ldr r1, _081208C4 + adds r2, r0, r1 + ldrb r0, [r2, #1] + cmp r0, #0xa + bne _081208CC + ldr r1, _081208C8 + movs r0, #0 + strh r0, [r1] + strb r0, [r2, #1] + b _081208D2 + .align 2, 0 +_081208C0: .4byte gUnknown_3005AEC +_081208C4: .4byte 0x00002E28 +_081208C8: .4byte gUnknown_2037290 +_081208CC: + ldr r1, _081208D8 + movs r0, #1 + strh r0, [r1] +_081208D2: + pop {r0} + bx r0 + .align 2, 0 +_081208D8: .4byte gUnknown_2037290 + thumb_func_end sub_081208A4 + + thumb_func_start sub_081208DC +sub_081208DC: @ 0x081208DC + push {r4, r5, r6, lr} + ldr r0, _08120940 + ldr r4, [r0] + ldr r0, _08120944 + adds r5, r4, r0 + ldrb r0, [r5, #1] + cmp r0, #0 + bne _081208F0 + bl sub_081209BC +_081208F0: + ldrb r0, [r5, #1] + lsls r0, r0, #1 + ldr r1, _08120948 + adds r6, r4, r1 + adds r0, r6, r0 + ldrh r1, [r0] + ldr r0, _0812094C + cmp r1, r0 + beq _08120960 + bl sub_0806F050 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #7 + ands r4, r0 + ldr r0, _08120950 + ldrb r1, [r5, #1] + lsls r1, r1, #1 + adds r1, r6, r1 + ldrh r1, [r1] + bl sub_0811F180 + adds r2, r0, #0 + ldr r1, _08120954 + bl sub_080088B8 + adds r2, r0, #0 + ldr r0, _08120958 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r1, [r4] + adds r0, r2, #0 + bl sub_080088B8 + adds r2, r0, #0 + ldr r1, _0812095C + bl sub_080088B8 + b _08120982 + .align 2, 0 +_08120940: .4byte gUnknown_3005AEC +_08120944: .4byte 0x00002E28 +_08120948: .4byte 0x00002E2C +_0812094C: .4byte 0x0000FFFF +_08120950: .4byte gUnknown_2021C7C +_08120954: .4byte gUnknown_825941C +_08120958: .4byte gUnknown_857AC14 +_0812095C: .4byte gUnknown_825941F +_08120960: + ldr r0, _0812099C + ldr r3, _081209A0 + ldrb r2, [r5, #2] + adds r1, r2, #1 + strb r1, [r5, #2] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r6, #0xb9 + lsls r6, r6, #6 + adds r1, r4, r6 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 +_08120982: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081209A4 + movs r0, #0xa + b _081209A8 + .align 2, 0 +_0812099C: .4byte gUnknown_2021C7C +_081209A0: .4byte gUnknown_857AC34 +_081209A4: + ldrb r0, [r5, #1] + adds r0, #1 +_081209A8: + strb r0, [r5, #1] + ldr r1, _081209B8 + movs r0, #1 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081209B8: .4byte gUnknown_2037290 + thumb_func_end sub_081208DC + + thumb_func_start sub_081209BC +sub_081209BC: @ 0x081209BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r0, _08120A8C + ldr r4, [r0] + ldr r0, _08120A90 + adds r0, r4, r0 + str r0, [sp, #0x18] + ldr r1, _08120A94 + mov r0, sp + movs r2, #0x18 + bl memcpy + movs r5, #0 + movs r1, #2 + add r1, sp + mov r8, r1 + movs r2, #0xb9 + lsls r2, r2, #6 + adds r3, r4, r2 + adds r1, r3, #0 +_081209EC: + adds r0, r3, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #7 + bls _081209EC + movs r5, #0 + ldr r3, [sp, #0x18] + adds r3, #4 + mov sb, r3 + adds r6, r1, #0 +_08120A04: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r5, #1 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r6, r5 + ldrb r7, [r2] + adds r1, r6, r1 + ldrb r0, [r1] + strb r0, [r2] + strb r7, [r1] + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + cmp r5, #7 + bls _08120A04 + movs r0, #0 + mov sl, r0 + movs r5, #0 +_08120A32: + lsls r4, r5, #2 + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl sub_0811F088 + add r4, r8 + strh r0, [r4] + add r0, sl + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _08120A32 + movs r0, #0 + ldr r2, [sp, #0x18] + strb r0, [r2, #2] + movs r7, #0 + movs r5, #0 +_08120A5E: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #2 + bhi _08120A9C + cmp r7, #7 + bhi _08120A9C + lsls r0, r5, #1 + add r0, sb + ldr r1, _08120A98 + strh r1, [r0] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r4, r5, #1 + b _08120AEE + .align 2, 0 +_08120A8C: .4byte gUnknown_3005AEC +_08120A90: .4byte 0x00002E28 +_08120A94: .4byte gUnknown_857AC54 +_08120A98: .4byte 0x0000FFFF +_08120A9C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + adds r4, r5, #1 + lsls r6, r5, #1 + cmp r5, #5 + bhi _08120AD8 + mov r3, r8 + ldrh r0, [r3] + b _08120ACE +_08120ABE: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r5, #5 + bhi _08120AD8 + lsls r0, r1, #2 + adds r0, r3, r0 + ldrh r0, [r0] +_08120ACE: + subs r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r0, #0 + bgt _08120ABE +_08120AD8: + cmp r1, #6 + bne _08120ADE + movs r1, #0 +_08120ADE: + lsls r0, r1, #2 + add r0, sp + ldrh r0, [r0] + bl sub_0811F370 + mov r2, sb + adds r1, r2, r6 + strh r0, [r1] +_08120AEE: + lsls r0, r4, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #9 + bls _08120A5E + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081209BC + + thumb_func_start sub_08120B08 +sub_08120B08: @ 0x08120B08 + ldr r0, _08120B18 + ldr r0, [r0] + ldr r1, _08120B1C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_08120B18: .4byte gUnknown_3005AEC +_08120B1C: .4byte 0x00002E51 + thumb_func_end sub_08120B08 + + thumb_func_start sub_08120B20 +sub_08120B20: @ 0x08120B20 + ldr r0, _08120B30 + ldr r0, [r0] + ldr r1, _08120B34 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_08120B30: .4byte gUnknown_3005AEC +_08120B34: .4byte 0x00002E28 + thumb_func_end sub_08120B20 + + thumb_func_start sub_08120B38 +sub_08120B38: @ 0x08120B38 + push {lr} + bl sub_08133A94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120B38 + + thumb_func_start sub_08120B44 +sub_08120B44: @ 0x08120B44 + push {lr} + bl sub_08120F9C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120B44 + + thumb_func_start sub_08120B50 +sub_08120B50: @ 0x08120B50 + push {lr} + bl sub_081206E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _08120B96 + lsls r0, r0, #2 + ldr r1, _08120B68 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08120B68: .4byte _08120B6C +_08120B6C: @ jump table + .4byte _08120B80 @ case 0 + .4byte _08120B86 @ case 1 + .4byte _08120B92 @ case 2 + .4byte _08120B8C @ case 3 + .4byte _08120B96 @ case 4 +_08120B80: + bl sub_08120B08 + b _08120B96 +_08120B86: + bl sub_08120B20 + b _08120B96 +_08120B8C: + bl sub_08120B44 + b _08120B96 +_08120B92: + bl sub_08120B38 +_08120B96: + bl sub_08120E18 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120B50 + + thumb_func_start sub_08120BA0 +sub_08120BA0: @ 0x08120BA0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08120BC8 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08120BCC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0x12] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08120BC8: .4byte sub_08120C2C +_08120BCC: .4byte gUnknown_3005B60 + thumb_func_end sub_08120BA0 + + thumb_func_start sub_08120BD0 +sub_08120BD0: @ 0x08120BD0 + ldr r1, _08120BD8 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08120BD8: .4byte gUnknown_3003024 + thumb_func_end sub_08120BD0 + + thumb_func_start sub_08120BDC +sub_08120BDC: @ 0x08120BDC + ldr r1, _08120BE4 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_08120BE4: .4byte gUnknown_3003024 + thumb_func_end sub_08120BDC + + thumb_func_start sub_08120BE8 +sub_08120BE8: @ 0x08120BE8 + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + movs r0, #2 + str r0, [sp] + movs r4, #1 + str r4, [sp, #4] + ldr r0, _08120C24 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + ldr r0, _08120C28 + strb r4, [r0] + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08120C24: .4byte sub_08120BDC +_08120C28: .4byte gUnknown_3003024 + thumb_func_end sub_08120BE8 + + thumb_func_start sub_08120C2C +sub_08120C2C: @ 0x08120C2C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08120C50 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _08120C46 + b _08120E0C +_08120C46: + lsls r0, r0, #2 + ldr r1, _08120C54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08120C50: .4byte gUnknown_3005B60 +_08120C54: .4byte _08120C58 +_08120C58: @ jump table + .4byte _08120C70 @ case 0 + .4byte _08120C94 @ case 1 + .4byte _08120CA4 @ case 2 + .4byte _08120D4E @ case 3 + .4byte _08120DFC @ case 4 + .4byte _08120D3E @ case 5 +_08120C70: + bl sub_081207A0 + ldr r0, _08120C90 + bl sub_08120BE8 + movs r0, #0 + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + strh r0, [r4, #0x10] + movs r0, #4 + bl sub_080A2AB0 + movs r0, #1 + b _08120E0A + .align 2, 0 +_08120C90: .4byte gUnknown_2021C7C +_08120C94: + bl sub_080A2AC8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08120CA0 + b _08120E0C +_08120CA0: + movs r0, #2 + b _08120E0A +_08120CA4: + ldr r0, _08120CC4 + ldr r0, [r0] + ldr r2, _08120CC8 + adds r5, r0, r2 + movs r0, #0xe + ldrsh r1, [r4, r0] + ldr r0, _08120CCC + adds r1, r1, r0 + movs r3, #0 + ldrb r0, [r1] + ldrh r2, [r4, #0x12] + ldr r7, _08120CD0 + adds r6, r4, #0 + adds r6, #8 + b _08120CDE + .align 2, 0 +_08120CC4: .4byte gUnknown_3005AEC +_08120CC8: .4byte 0x00002E28 +_08120CCC: .4byte gUnknown_2021C7C +_08120CD0: .4byte gUnknown_2039DF4 +_08120CD4: + adds r1, #1 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrb r0, [r1] +_08120CDE: + cmp r0, #0 + beq _08120CEE + cmp r0, #0xfe + beq _08120CEE + cmp r0, #0xfc + beq _08120CEE + cmp r0, #0xff + bne _08120CD4 +_08120CEE: + cmp r2, #0 + bne _08120CFC + movs r2, #0x10 + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + adds r0, r5, #2 + b _08120D06 +_08120CFC: + movs r0, #0x10 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + adds r0, r5, #0 + adds r0, #0xe +_08120D06: + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #3 + ands r1, r0 + lsrs r0, r0, #3 + movs r2, #1 + ands r0, r2 + adds r1, r1, r0 + strh r1, [r7] + ldrh r2, [r7] + adds r0, r6, #0 + adds r1, r3, #0 + bl sub_0817C69C + ldrh r0, [r4, #0x10] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x10] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08120D36 + movs r0, #3 + b _08120D38 +_08120D36: + movs r0, #5 +_08120D38: + strh r0, [r4, #8] + strh r1, [r4, #0xa] + b _08120E0C +_08120D3E: + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08120E08 + subs r0, r1, #1 + strh r0, [r4, #0xc] + b _08120E0C +_08120D4E: + ldr r1, _08120D70 + movs r2, #0xe + ldrsh r0, [r4, r2] + adds r1, r0, r1 + ldrb r5, [r1] + cmp r5, #0xff + bne _08120D74 + movs r0, #6 + bl sub_080A2AF0 + bl sub_080988C4 + adds r0, r6, #0 + bl sub_080A8964 + b _08120E0C + .align 2, 0 +_08120D70: .4byte gUnknown_2021C7C +_08120D74: + cmp r5, #0 + bne _08120D8A + bl sub_08120BD0 + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + movs r0, #2 + strh r0, [r4, #8] + strh r5, [r4, #0xc] + b _08120E0C +_08120D8A: + cmp r5, #0xfe + bne _08120D9E + ldrh r0, [r4, #0xe] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0xe] + movs r0, #2 + strh r0, [r4, #8] + strh r1, [r4, #0xc] + b _08120E0C +_08120D9E: + cmp r5, #0xfc + bne _08120DB2 + ldrh r0, [r4, #0xe] + adds r0, #2 + strh r0, [r4, #0xe] + movs r0, #2 + strh r0, [r4, #8] + movs r0, #8 + strh r0, [r4, #0xc] + b _08120E0C +_08120DB2: + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #1 + beq _08120DD0 + cmp r0, #1 + bgt _08120DC4 + cmp r0, #0 + beq _08120DCA + b _08120E0C +_08120DC4: + cmp r0, #2 + beq _08120DE2 + b _08120E0C +_08120DCA: + bl sub_08120BD0 + b _08120DDA +_08120DD0: + adds r0, r4, #0 + adds r0, #8 + ldrb r1, [r1] + bl sub_0817C6B0 +_08120DDA: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _08120E0C +_08120DE2: + adds r0, r4, #0 + adds r0, #8 + bl sub_0817C704 + ldrh r0, [r4, #0xe] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0xe] + strh r1, [r4, #0xa] + movs r0, #0x10 + strh r0, [r4, #0xc] + movs r0, #4 + b _08120E0A +_08120DFC: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08120E0C +_08120E08: + movs r0, #3 +_08120E0A: + strh r0, [r4, #8] +_08120E0C: + bl sub_08196E18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120C2C + + thumb_func_start sub_08120E18 +sub_08120E18: @ 0x08120E18 + push {lr} + ldr r0, _08120E28 + movs r1, #0x45 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_08120E28: .4byte 0x00004010 + thumb_func_end sub_08120E18 + + thumb_func_start sub_08120E2C +sub_08120E2C: @ 0x08120E2C + push {r4, r5, r6, lr} + ldrb r1, [r0] + cmp r1, #2 + beq _08120E3A + cmp r1, #3 + beq _08120E64 + b _08120E86 +_08120E3A: + adds r6, r0, #0 + movs r5, #0 +_08120E3E: + movs r0, #0xb + muls r0, r5, r0 + adds r0, #5 + adds r4, r6, r0 + adds r0, r4, #0 + bl sub_08008F14 + cmp r0, #0 + beq _08120E58 + adds r0, r4, #0 + ldr r1, _08120E60 + bl sub_080088B8 +_08120E58: + adds r5, #1 + cmp r5, #3 + ble _08120E3E + b _08120E86 + .align 2, 0 +_08120E60: .4byte gUnknown_85CCEC5 +_08120E64: + adds r4, r0, #0 + adds r4, #8 + movs r5, #3 +_08120E6A: + adds r0, r4, #0 + bl sub_08008F14 + cmp r0, #0 + beq _08120E7E + adds r0, r4, #0 + ldr r1, _08120E8C + movs r2, #7 + bl sub_080088F0 +_08120E7E: + adds r4, #7 + subs r5, #1 + cmp r5, #0 + bge _08120E6A +_08120E86: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08120E8C: .4byte gUnknown_85CCEC5 + thumb_func_end sub_08120E2C + + thumb_func_start sub_08120E90 +sub_08120E90: @ 0x08120E90 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + mov r8, r1 + adds r7, r2, #0 + ldrb r0, [r5] + cmp r0, #4 + bhi _08120F48 + lsls r0, r0, #2 + ldr r1, _08120EAC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08120EAC: .4byte _08120EB0 +_08120EB0: @ jump table + .4byte _08120F16 @ case 0 + .4byte _08120F26 @ case 1 + .4byte _08120EC4 @ case 2 + .4byte _08120EEE @ case 3 + .4byte _08120F34 @ case 4 +_08120EC4: + adds r6, r5, #0 + movs r5, #0 + adds r4, r6, #0 + adds r4, #0x32 +_08120ECC: + movs r0, #0xb + muls r0, r5, r0 + adds r0, #5 + adds r0, r6, r0 + bl sub_08008F14 + cmp r0, #0 + beq _08120EE2 + mov r0, r8 + strb r0, [r4] + b _08120EE4 +_08120EE2: + strb r7, [r4] +_08120EE4: + adds r4, #1 + adds r5, #1 + cmp r5, #3 + ble _08120ECC + b _08120F48 +_08120EEE: + adds r4, r5, #0 + adds r4, #0x34 + adds r6, r5, #0 + adds r6, #8 + movs r5, #3 +_08120EF8: + adds r0, r6, #0 + bl sub_08008F14 + cmp r0, #0 + beq _08120F08 + mov r1, r8 + strb r1, [r4] + b _08120F0A +_08120F08: + strb r7, [r4] +_08120F0A: + adds r4, #1 + adds r6, #7 + subs r5, #1 + cmp r5, #0 + bge _08120EF8 + b _08120F48 +_08120F16: + cmp r3, #1 + bne _08120F20 + adds r0, r5, #0 + adds r0, #0x2a + b _08120F3C +_08120F20: + adds r0, r5, #0 + adds r0, #0x2a + b _08120F46 +_08120F26: + cmp r3, #1 + bne _08120F30 + mov r0, r8 + strb r0, [r5, #2] + b _08120F48 +_08120F30: + strb r7, [r5, #2] + b _08120F48 +_08120F34: + cmp r3, #1 + bne _08120F42 + adds r0, r5, #0 + adds r0, #0x20 +_08120F3C: + mov r1, r8 + strb r1, [r0] + b _08120F48 +_08120F42: + adds r0, r5, #0 + adds r0, #0x20 +_08120F46: + strb r7, [r0] +_08120F48: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08120E90 + + thumb_func_start sub_08120F54 +sub_08120F54: @ 0x08120F54 + push {r4, r5, lr} + ldr r2, _08120F90 + ldr r0, _08120F94 + ldr r0, [r0] + ldr r1, _08120F98 + adds r0, r0, r1 + str r0, [r2] + movs r3, #0 + movs r1, #3 + strb r1, [r0] + ldr r0, [r2] + strb r3, [r0, #1] + movs r5, #0 + movs r4, #0xff +_08120F70: + ldr r0, [r2] + adds r0, #4 + adds r0, r0, r3 + strb r5, [r0] + ldr r1, [r2] + adds r1, #8 + adds r1, r1, r3 + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r3, #1 + cmp r3, #3 + ble _08120F70 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08120F90: .4byte gUnknown_2039DF8 +_08120F94: .4byte gUnknown_3005AEC +_08120F98: .4byte 0x00002E28 + thumb_func_end sub_08120F54 + + thumb_func_start sub_08120F9C +sub_08120F9C: @ 0x08120F9C + ldr r3, _08120FB4 + ldr r0, _08120FB8 + ldr r0, [r0] + ldr r1, _08120FBC + adds r0, r0, r1 + str r0, [r3] + movs r2, #0 + movs r1, #3 + strb r1, [r0] + ldr r0, [r3] + strb r2, [r0, #1] + bx lr + .align 2, 0 +_08120FB4: .4byte gUnknown_2039DF8 +_08120FB8: .4byte gUnknown_3005AEC +_08120FBC: .4byte 0x00002E28 + thumb_func_end sub_08120F9C + + thumb_func_start sub_08120FC0 +sub_08120FC0: @ 0x08120FC0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x32 + bne _08120FCC + movs r0, #0 +_08120FCC: + bl sub_08084180 + pop {r1} + bx r1 + thumb_func_end sub_08120FC0 + + thumb_func_start sub_08120FD4 +sub_08120FD4: @ 0x08120FD4 + push {lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _08120FE8 +_08120FDC: + ldrb r0, [r1] + cmp r0, r3 + bne _08120FEC + adds r0, r1, #0 + b _08120FF6 + .align 2, 0 +_08120FE8: .4byte gUnknown_857AC6C +_08120FEC: + adds r1, #0x10 + adds r2, #1 + cmp r2, #0x23 + ble _08120FDC + ldr r0, _08120FFC +_08120FF6: + pop {r1} + bx r1 + .align 2, 0 +_08120FFC: .4byte gUnknown_857AE9C + thumb_func_end sub_08120FD4 + + thumb_func_start sub_08121000 +sub_08121000: @ 0x08121000 + push {lr} + bl sub_08120FD4 + ldr r0, [r0, #4] + pop {r1} + bx r1 + thumb_func_end sub_08121000 + + thumb_func_start sub_0812100C +sub_0812100C: @ 0x0812100C + push {lr} + bl sub_08120FD4 + ldr r0, [r0, #0xc] + pop {r1} + bx r1 + thumb_func_end sub_0812100C + + thumb_func_start sub_08121018 +sub_08121018: @ 0x08121018 + push {lr} + bl sub_08120FD4 + ldr r0, [r0, #8] + pop {r1} + bx r1 + thumb_func_end sub_08121018 + + thumb_func_start sub_08121024 +sub_08121024: @ 0x08121024 + push {lr} + movs r1, #0 + ldr r2, _08121050 + ldr r0, [r2] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08121048 +_08121032: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bhi _08121048 + ldr r0, [r2] + adds r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08121032 +_08121048: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_08121050: .4byte gUnknown_2039DF8 + thumb_func_end sub_08121024 + + thumb_func_start sub_08121054 +sub_08121054: @ 0x08121054 + ldr r1, _08121074 + lsls r0, r0, #2 + adds r0, #0x24 + ldr r2, [r1] + adds r2, r2, r0 + ldrb r0, [r2] + ldrb r1, [r2, #1] + lsls r1, r1, #8 + orrs r0, r1 + ldrb r1, [r2, #2] + lsls r1, r1, #0x10 + orrs r0, r1 + ldrb r1, [r2, #3] + lsls r1, r1, #0x18 + orrs r0, r1 + bx lr + .align 2, 0 +_08121074: .4byte gUnknown_2039DF8 + thumb_func_end sub_08121054 + + thumb_func_start sub_08121078 +sub_08121078: @ 0x08121078 + ldr r2, _08121094 + lsls r0, r0, #2 + adds r0, #0x24 + ldr r2, [r2] + adds r2, r2, r0 + strb r1, [r2] + lsrs r0, r1, #8 + strb r0, [r2, #1] + lsrs r0, r1, #0x10 + strb r0, [r2, #2] + lsrs r1, r1, #0x18 + strb r1, [r2, #3] + bx lr + .align 2, 0 +_08121094: .4byte gUnknown_2039DF8 + thumb_func_end sub_08121078 + + thumb_func_start sub_08121098 +sub_08121098: @ 0x08121098 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _081210BC + ldr r0, [r0] + adds r0, #4 + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08120FC0 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08121054 + cmp r4, r0 + bhi _081210C0 + movs r0, #0 + b _081210C2 + .align 2, 0 +_081210BC: .4byte gUnknown_2039DF8 +_081210C0: + movs r0, #1 +_081210C2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08121098 + + thumb_func_start sub_081210C8 +sub_081210C8: @ 0x081210C8 + push {r4, r5, lr} + adds r5, r1, #0 + ldr r2, _081210F4 + lsls r1, r0, #3 + subs r1, r1, r0 + adds r1, #8 + ldr r4, [r2] + adds r4, r4, r1 + adds r0, r5, #0 + movs r1, #0xff + movs r2, #8 + bl memset + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #7 + bl memcpy + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081210F4: .4byte gUnknown_2039DF8 + thumb_func_end sub_081210C8 + + thumb_func_start sub_081210F8 +sub_081210F8: @ 0x081210F8 + push {r4, r5, lr} + adds r5, r1, #0 + ldr r2, _08121124 + lsls r1, r0, #3 + subs r1, r1, r0 + adds r1, #8 + ldr r4, [r2] + adds r4, r4, r1 + adds r0, r4, #0 + movs r1, #0xff + movs r2, #7 + bl memset + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #7 + bl memcpy + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08121124: .4byte gUnknown_2039DF8 + thumb_func_end sub_081210F8 + + thumb_func_start sub_08121128 +sub_08121128: @ 0x08121128 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + mov r8, r0 + adds r6, r1, #0 + ldr r0, _0812119C + mov sb, r0 + ldr r0, [r0] + adds r0, #4 + add r0, r8 + strb r6, [r0] + ldr r0, _081211A0 + ldr r1, [r0] + mov r0, r8 + bl sub_081210F8 + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08120FC0 + adds r1, r0, #0 + mov r0, r8 + bl sub_08121078 + ldr r5, _081211A4 + adds r0, r4, #0 + bl sub_08120FC0 + adds r1, r0, #0 + adds r0, r5, #0 + movs r2, #0 + movs r3, #0xa + bl sub_080089D8 + ldr r4, _081211A8 + adds r0, r6, #0 + bl sub_08121018 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + mov r1, sb + ldr r0, [r1] + adds r0, #0x34 + add r0, r8 + ldr r1, _081211AC + ldrb r1, [r1] + strb r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812119C: .4byte gUnknown_2039DF8 +_081211A0: .4byte gUnknown_3005AF0 +_081211A4: .4byte gUnknown_2021C40 +_081211A8: .4byte gUnknown_2021C54 +_081211AC: .4byte gUnknown_829BDA5 + thumb_func_end sub_08121128 + + thumb_func_start sub_081211B0 +sub_081211B0: @ 0x081211B0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + movs r5, #0 + cmp r5, r6 + bge _081211C6 +_081211BC: + adds r0, r7, r5 + strb r5, [r0] + adds r5, #1 + cmp r5, r6 + blt _081211BC +_081211C6: + cmp r6, #0 + ble _081211FC + adds r5, r6, #0 +_081211CC: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + adds r4, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + adds r4, r7, r4 + ldrb r2, [r4] + adds r0, r7, r0 + ldrb r1, [r0] + strb r1, [r4] + strb r2, [r0] + subs r5, #1 + cmp r5, #0 + bne _081211CC +_081211FC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081211B0 + + thumb_func_start sub_08121204 +sub_08121204: @ 0x08121204 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r7, sp + mov r8, sp + ldr r0, _0812128C + ldr r0, [r0] + lsls r0, r0, #3 + lsrs r0, r0, #3 + adds r0, #3 + lsrs r0, r0, #2 + lsls r0, r0, #2 + mov r1, sp + subs r1, r1, r0 + mov sp, r1 + mov sb, sp + mov r0, sp + movs r1, #0x24 + bl sub_081211B0 + movs r5, #0 +_08121230: + ldr r1, _08121290 + mov r2, sb + adds r0, r2, r5 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r4, [r0] + ldrb r6, [r0, #1] + movs r1, #0 + ldr r2, _08121294 + ldr r0, [r2] + ldrb r0, [r0, #4] + cmp r0, r4 + beq _0812125E +_0812124C: + adds r1, #1 + cmp r1, #3 + bgt _0812125E + ldr r0, [r2] + adds r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, r4 + bne _0812124C +_0812125E: + cmp r1, #4 + bne _081212AE + adds r0, r4, #0 + bl sub_08120FC0 + cmp r0, r6 + blo _081212AE + ldr r0, _08121294 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #1] + bl sub_08121024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0812129C + ldr r0, _08121298 + ldrb r0, [r0] + adds r1, r4, #0 + bl sub_08121128 + b _081212AA + .align 2, 0 +_0812128C: .4byte gUnknown_857AEAC +_08121290: .4byte gUnknown_857AC6C +_08121294: .4byte gUnknown_2039DF8 +_08121298: .4byte gUnknown_3001178 +_0812129C: + bl sub_08121024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_08121128 +_081212AA: + movs r0, #1 + b _081212B6 +_081212AE: + adds r5, #1 + cmp r5, #0x23 + ble _08121230 + movs r0, #0 +_081212B6: + mov sp, r8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08121204 + + thumb_func_start sub_081212C4 +sub_081212C4: @ 0x081212C4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08121310 + ldr r0, [r0] + adds r0, #4 + adds r0, r0, r5 + ldrb r6, [r0] + ldr r4, _08121314 + adds r0, r5, #0 + bl sub_08121054 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #0xa + bl sub_080089D8 + ldr r4, _08121318 + adds r0, r6, #0 + bl sub_08121018 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _0812131C + adds r0, r5, #0 + bl sub_081210C8 + adds r0, r6, #0 + bl sub_0812100C + bl sub_08097B74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08121310: .4byte gUnknown_2039DF8 +_08121314: .4byte gUnknown_2021C40 +_08121318: .4byte gUnknown_2021C54 +_0812131C: .4byte gUnknown_2021C68 + thumb_func_end sub_081212C4 + + thumb_func_start sub_08121320 +sub_08121320: @ 0x08121320 + push {r4, r5, lr} + sub sp, #0xc + bl sub_08121024 + adds r3, r0, #0 + lsls r3, r3, #0x19 + movs r0, #0x80 + lsls r0, r0, #0x12 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #0 + movs r1, #0 + movs r2, #0x17 + bl sub_080E1F10 + ldr r1, _081213E0 + strb r0, [r1] + ldrb r0, [r1] + movs r1, #0 + bl sub_08197638 + movs r5, #0 + ldr r0, _081213E4 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08121392 + movs r4, #0x80 + lsls r4, r4, #0x12 +_0812135A: + bl sub_08121000 + adds r2, r0, #0 + ldr r0, _081213E0 + ldrb r0, [r0] + lsrs r1, r4, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0xa + bl sub_0800449C + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r4, r4, r0 + adds r5, #1 + cmp r5, #3 + bgt _08121392 + ldr r0, _081213E4 + ldr r0, [r0] + adds r0, #4 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _0812135A +_08121392: + ldr r4, _081213E0 + ldrb r0, [r4] + ldr r2, _081213E8 + lsls r1, r5, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r1, #1 + movs r3, #0xa + bl sub_0800449C + bl sub_08121024 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + str r0, [sp] + str r5, [sp, #4] + adds r0, r1, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984F0 + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081213E0: .4byte gUnknown_2039DFC +_081213E4: .4byte gUnknown_2039DF8 +_081213E8: .4byte gUnknown_85CB1B9 + thumb_func_end sub_08121320 + + thumb_func_start sub_081213EC +sub_081213EC: @ 0x081213EC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0812140C + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _08121410 + cmp r5, #1 + beq _0812141C + b _08121466 + .align 2, 0 +_0812140C: .4byte gUnknown_3005B60 +_08121410: + bl sub_08121320 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08121466 +_0812141C: + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08121466 + adds r0, #1 + cmp r4, r0 + beq _0812143E + bl sub_08121024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0812144C +_0812143E: + ldr r1, _08121448 + movs r0, #0 + strh r0, [r1] + b _08121454 + .align 2, 0 +_08121448: .4byte gUnknown_2037290 +_0812144C: + ldr r0, _0812146C + strh r5, [r0] + ldr r0, _08121470 + strb r4, [r0] +_08121454: + ldr r0, _08121474 + ldrb r0, [r0] + bl sub_080E1F6C + adds r0, r6, #0 + bl sub_080A8964 + bl sub_080988C4 +_08121466: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812146C: .4byte gUnknown_2037290 +_08121470: .4byte gUnknown_3001178 +_08121474: .4byte gUnknown_2039DFC + thumb_func_end sub_081213EC + + thumb_func_start sub_08121478 +sub_08121478: @ 0x08121478 + push {lr} + ldr r0, _08121488 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08121488: .4byte sub_081213EC + thumb_func_end sub_08121478 + + thumb_func_start sub_0812148C +sub_0812148C: @ 0x0812148C + push {lr} + ldr r0, _0812149C + ldrb r0, [r0] + bl sub_081212C4 + pop {r0} + bx r0 + .align 2, 0 +_0812149C: .4byte gUnknown_3001178 + thumb_func_end sub_0812148C + + thumb_func_start sub_081214A0 +sub_081214A0: @ 0x081214A0 + push {lr} + ldr r1, _081214BC + ldr r0, _081214C0 + ldr r0, [r0] + ldr r2, _081214C4 + adds r0, r0, r2 + str r0, [r1] + bl sub_08121024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081214BC: .4byte gUnknown_2039DF8 +_081214C0: .4byte gUnknown_3005AEC +_081214C4: .4byte 0x00002E28 + thumb_func_end sub_081214A0 + + thumb_func_start sub_081214C8 +sub_081214C8: @ 0x081214C8 + push {r4, r5, lr} + ldr r2, _081214F0 + ldr r0, _081214F4 + ldr r1, [r0] + ldr r3, _081214F8 + adds r0, r1, r3 + str r0, [r2] + ldr r5, _081214FC + ldrb r0, [r5] + ldr r2, _08121500 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r4, [r1] + bl sub_08121098 + cmp r0, #1 + beq _08121504 + movs r0, #0 + b _0812150E + .align 2, 0 +_081214F0: .4byte gUnknown_2039DF8 +_081214F4: .4byte gUnknown_3005AEC +_081214F8: .4byte 0x00002E28 +_081214FC: .4byte gUnknown_3001178 +_08121500: .4byte 0x00002E2C +_08121504: + ldrb r0, [r5] + adds r1, r4, #0 + bl sub_08121128 + movs r0, #1 +_0812150E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081214C8 + + thumb_func_start sub_08121514 +sub_08121514: @ 0x08121514 + push {lr} + ldr r1, _0812152C + ldr r0, _08121530 + ldr r0, [r0] + ldr r2, _08121534 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08121538 + movs r0, #1 + b _0812153A + .align 2, 0 +_0812152C: .4byte gUnknown_2039DF8 +_08121530: .4byte gUnknown_3005AEC +_08121534: .4byte 0x00002E28 +_08121538: + movs r0, #0 +_0812153A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08121514 + + thumb_func_start sub_08121540 +sub_08121540: @ 0x08121540 + push {lr} + ldr r1, _0812155C + ldr r0, _08121560 + ldr r0, [r0] + ldr r2, _08121564 + adds r0, r0, r2 + str r0, [r1] + bl sub_08121204 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0812155C: .4byte gUnknown_2039DF8 +_08121560: .4byte gUnknown_3005AEC +_08121564: .4byte 0x00002E28 + thumb_func_end sub_08121540 + + thumb_func_start sub_08121568 +sub_08121568: @ 0x08121568 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r4, _081215B4 + ldr r0, _081215B8 + bl sub_08000BDC + str r0, [r4] + adds r0, #0xdd + movs r3, #0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0xde + strb r3, [r0] + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0xe0 + ldr r0, _081215BC + str r0, [r1] + adds r1, #4 + ldr r0, _081215C0 + str r0, [r1] + ldrh r1, [r5, #0x20] + adds r0, r1, #0 + subs r0, #0x79 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb + bhi _081215C4 + subs r1, #0x79 + adds r0, r2, #0 + adds r0, #0xda + strb r1, [r0] + b _081215CC + .align 2, 0 +_081215B4: .4byte gUnknown_2039E00 +_081215B8: .4byte 0x000020EC +_081215BC: .4byte sub_0811F180 +_081215C0: .4byte sub_0811F1CC +_081215C4: + adds r0, r2, #0 + adds r0, #0xda + strb r3, [r0] + movs r6, #0 +_081215CC: + ldr r0, _081215EC + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xde + ldrb r1, [r1] + cmp r1, #0 + beq _081215DE + cmp r1, #1 + beq _081215F4 +_081215DE: + adds r2, r0, #0 + adds r2, #0xe8 + adds r0, #0xda + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r1, _081215F0 + b _08121600 + .align 2, 0 +_081215EC: .4byte gUnknown_2039E00 +_081215F0: .4byte gUnknown_857AFE0 +_081215F4: + adds r2, r0, #0 + adds r2, #0xe8 + adds r0, #0xda + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r1, _08121638 +_08121600: + adds r0, r0, r1 + str r0, [r2] + ldrh r0, [r5, #0x1e] + mov r1, sp + bl sub_080D3E6C + lsls r0, r0, #0x10 + ldr r1, _0812163C + adds r0, r0, r1 + movs r1, #0xcd + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _08121654 + ldr r0, _08121640 + ldr r1, [r0] + adds r2, r1, #0 + adds r2, #0xda + ldrb r2, [r2] + adds r3, r0, #0 + cmp r2, #6 + beq _08121644 + cmp r2, #9 + beq _0812164C + adds r1, #0xdb + movs r0, #0 + strb r0, [r1] + b _08121660 + .align 2, 0 +_08121638: .4byte gUnknown_857B054 +_0812163C: .4byte 0xFFFF0000 +_08121640: .4byte gUnknown_2039E00 +_08121644: + adds r1, #0xdb + movs r0, #1 + strb r0, [r1] + b _08121660 +_0812164C: + adds r1, #0xdb + movs r0, #2 + strb r0, [r1] + b _08121660 +_08121654: + ldr r0, _08121680 + ldr r1, [r0] + adds r1, #0xdb + movs r2, #0 + strb r2, [r1] + adds r3, r0, #0 +_08121660: + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0xd4 + str r5, [r0] + subs r0, #8 + str r7, [r0] + adds r0, #0xc + strb r6, [r0] + ldr r0, _08121684 + bl sub_08000540 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08121680: .4byte gUnknown_2039E00 +_08121684: .4byte sub_08121A60 + thumb_func_end sub_08121568 + + thumb_func_start sub_08121688 +sub_08121688: @ 0x08121688 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r0, _081216A8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x12 + bls _0812169C + b _08121A52 +_0812169C: + lsls r0, r0, #2 + ldr r1, _081216AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081216A8: .4byte gUnknown_3002360 +_081216AC: .4byte _081216B0 +_081216B0: @ jump table + .4byte _081216FC @ case 0 + .4byte _0812170A @ case 1 + .4byte _08121724 @ case 2 + .4byte _0812172A @ case 3 + .4byte _08121730 @ case 4 + .4byte _08121736 @ case 5 + .4byte _08121790 @ case 6 + .4byte _081217C8 @ case 7 + .4byte _081217D8 @ case 8 + .4byte _08121808 @ case 9 + .4byte _08121816 @ case 10 + .4byte _08121864 @ case 11 + .4byte _08121878 @ case 12 + .4byte _08121938 @ case 13 + .4byte _08121950 @ case 14 + .4byte _0812196C @ case 15 + .4byte _08121976 @ case 16 + .4byte _08121990 @ case 17 + .4byte _081219F4 @ case 18 +_081216FC: + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + movs r0, #0 + b _08121788 +_0812170A: + add r1, sp, #8 + movs r0, #0 + strh r0, [r1] + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _08121720 + add r0, sp, #8 + bl CpuSet + b _08121A44 + .align 2, 0 +_08121720: .4byte 0x01000200 +_08121724: + bl sub_080A133C + b _08121A44 +_0812172A: + bl sub_080A8818 + b _08121A44 +_08121730: + bl sub_0800668C + b _08121A44 +_08121736: + bl sub_08008424 + bl sub_081996B8 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 +_08121788: + movs r1, #0 + bl sub_08001144 + b _08121A44 +_08121790: + movs r0, #0 + bl sub_080017D4 + ldr r1, _081217BC + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r4, _081217C0 + ldr r1, [r4] + adds r1, #0xec + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081217C4 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + b _08121A44 + .align 2, 0 +_081217BC: .4byte gUnknown_857AEB4 +_081217C0: .4byte gUnknown_2039E00 +_081217C4: .4byte 0x000010EC +_081217C8: + ldr r0, _081217D4 + bl sub_08003090 + bl sub_08004480 + b _08121A44 + .align 2, 0 +_081217D4: .4byte gUnknown_857AEC0 +_081217D8: + ldr r2, _08121800 + ldr r0, _08121804 + ldr r0, [r0] + adds r0, #0xda + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _08121A44 + .align 2, 0 +_08121800: .4byte gUnknown_857AEE4 +_08121804: .4byte gUnknown_2039E00 +_08121808: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08121814 + b _08121A44 +_08121814: + b _08121A52 +_08121816: + movs r5, #0x1e + str r5, [sp] + movs r4, #0x14 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r5, [sp] + str r4, [sp, #4] + movs r0, #2 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + ldr r2, _0812185C + ldr r0, _08121860 + ldr r0, [r0] + adds r0, #0xda + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #8 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + b _08121A44 + .align 2, 0 +_0812185C: .4byte gUnknown_857AEE4 +_08121860: .4byte gUnknown_2039E00 +_08121864: + movs r0, #0 + bl sub_08002248 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + b _08121A44 +_08121878: + bl sub_080985EC + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r6, _08121920 + ldr r4, _08121924 + ldr r0, _08121928 + ldr r3, [r0] + adds r3, #0xda + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x10] + movs r2, #0xfa + lsls r2, r2, #1 + adds r0, r6, r2 + strh r1, [r0] + ldr r5, _0812192C + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x10] + adds r2, r5, r2 + strh r0, [r2] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x12] + movs r2, #0xfb + lsls r2, r2, #1 + adds r0, r6, r2 + strh r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x12] + adds r2, r5, r2 + strh r0, [r2] + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08121930 + ldr r0, _08121934 + ldr r2, [r0] + ldrb r0, [r2, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r6, #0x14] + ldrb r0, [r2, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #0x14] + ldrb r0, [r2, #8] + lsls r0, r0, #2 + adds r1, #2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r6, #0x16] + ldrb r0, [r2, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5, #0x16] + b _08121A44 + .align 2, 0 +_08121920: .4byte gUnknown_20373B4 +_08121924: .4byte gUnknown_857AEE4 +_08121928: .4byte gUnknown_2039E00 +_0812192C: .4byte gUnknown_20377B4 +_08121930: .4byte gUnknown_857AEDC +_08121934: .4byte gUnknown_3005AF0 +_08121938: + ldr r0, _0812194C + ldr r0, [r0] + adds r0, #0xd8 + ldrb r0, [r0] + cmp r0, #0 + bne _08121946 + b _08121A44 +_08121946: + bl sub_08121A8C + b _08121A44 + .align 2, 0 +_0812194C: .4byte gUnknown_2039E00 +_08121950: + ldr r0, _08121968 + ldr r0, [r0] + adds r0, #0xd8 + ldrb r0, [r0] + cmp r0, #0 + beq _08121A44 + bl sub_08121B64 + bl sub_08004630 + b _08121A44 + .align 2, 0 +_08121968: .4byte gUnknown_2039E00 +_0812196C: + bl sub_08086EFC + cmp r0, #1 + bne _08121A44 + b _08121A52 +_08121976: + ldr r0, _08121988 + bl sub_080006F0 + ldr r2, _0812198C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + b _08121A44 + .align 2, 0 +_08121988: .4byte sub_08121C60 +_0812198C: .4byte gUnknown_2037C74 +_08121990: + ldr r5, _081219B4 + ldr r0, [r5] + adds r0, #0xd4 + ldr r0, [r0] + ldrh r0, [r0, #0x1e] + bl sub_080D2724 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [r5] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #1 + beq _081219B8 + cmp r0, #2 + beq _081219D0 + b _08121A44 + .align 2, 0 +_081219B4: .4byte gUnknown_2039E00 +_081219B8: + adds r0, r4, #0 + bl sub_080D2808 + ldr r1, _081219CC + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + movs r2, #0x60 + b _081219E2 + .align 2, 0 +_081219CC: .4byte sub_08007140 +_081219D0: + adds r0, r4, #0 + bl sub_080D2808 + ldr r1, _081219F0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + movs r2, #0x28 +_081219E2: + movs r3, #0x80 + bl sub_080D2618 + ldr r1, [r5] + adds r1, #0xdc + strb r0, [r1] + b _08121A44 + .align 2, 0 +_081219F0: .4byte sub_08007140 +_081219F4: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _08121A38 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r0, _08121A3C + ldr r0, [r0] + adds r0, #0xd0 + ldr r1, _08121A40 + str r1, [r0] + movs r0, #1 + b _08121A54 + .align 2, 0 +_08121A38: .4byte gUnknown_2037C74 +_08121A3C: .4byte gUnknown_2039E00 +_08121A40: .4byte sub_08121CA0 +_08121A44: + ldr r1, _08121A5C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08121A52: + movs r0, #0 +_08121A54: + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08121A5C: .4byte gUnknown_3002360 + thumb_func_end sub_08121688 + + thumb_func_start sub_08121A60 +sub_08121A60: @ 0x08121A60 + push {lr} +_08121A62: + bl sub_08121688 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08121A7C + ldr r0, _08121A78 + bl sub_08000540 + b _08121A88 + .align 2, 0 +_08121A78: .4byte sub_08121C74 +_08121A7C: + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08121A62 +_08121A88: + pop {r0} + bx r0 + thumb_func_end sub_08121A60 + + thumb_func_start sub_08121A8C +sub_08121A8C: @ 0x08121A8C + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _08121B44 + mov r0, sp + movs r2, #4 + bl memcpy + movs r6, #0 + movs r5, #0 + ldr r2, _08121B48 + ldr r0, [r2] + adds r0, #0xe8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r5, r0 + bhs _08121AFA + adds r7, r2, #0 +_08121AAE: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r2, [r7] + adds r0, r2, r0 + adds r1, r2, #0 + adds r1, #0xd4 + lsls r3, r6, #1 + ldr r1, [r1] + adds r1, r1, r3 + adds r2, #0xe8 + ldr r2, [r2] + ldr r2, [r2, #4] + lsls r4, r5, #2 + adds r2, r4, r2 + ldr r2, [r2] + lsls r2, r2, #0x1e + lsrs r2, r2, #0x1e + movs r3, #1 + bl sub_0811F1CC + ldr r0, [r7] + adds r0, #0xe8 + ldr r1, [r0] + ldr r0, [r1, #4] + adds r4, r4, r0 + ldr r0, [r4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r0, r6, r0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r1, [r1] + cmp r5, r1 + blo _08121AAE +_08121AFA: + ldr r4, _08121B48 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xc0 + adds r1, #0xd4 + ldr r1, [r1] + adds r1, #0x12 + bl sub_080088B8 + adds r2, r0, #0 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xde + ldrb r0, [r0] + cmp r0, #0 + bne _08121B4C + adds r0, r2, #0 + mov r1, sp + bl sub_080088B8 + ldr r0, [r4] + adds r0, #0xc0 + bl sub_0800893C + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0xe8 + ldr r1, [r1] + ldrb r1, [r1, #1] + lsrs r1, r1, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xd + subs r0, #0x60 + subs r1, r1, r0 + adds r2, #0xd9 + strb r1, [r2] + b _08121B5A + .align 2, 0 +_08121B44: .4byte gUnknown_857B0B4 +_08121B48: .4byte gUnknown_2039E00 +_08121B4C: + adds r0, r1, #0 + adds r0, #0xe8 + ldr r0, [r0] + ldrb r0, [r0, #1] + lsrs r0, r0, #4 + adds r1, #0xd9 + strb r0, [r1] +_08121B5A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08121A8C + + thumb_func_start sub_08121B64 +sub_08121B64: @ 0x08121B64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + movs r7, #0 + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r6, #0 + ldr r0, _08121C58 + mov sb, r0 + ldr r0, [r0] + adds r0, #0xe8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r6, r0 + bhs _08121C10 + mov r8, sb +_08121BA0: + mov r0, r8 + ldr r1, [r0] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r1, r0 + ldrb r0, [r5] + cmp r0, #0xff + beq _08121BFC + cmp r0, #0 + beq _08121BFC + adds r0, r1, #0 + adds r0, #0xe8 + ldr r1, [r0] + ldr r0, [r1, #4] + lsls r4, r6, #2 + adds r0, r4, r0 + ldr r2, [r0] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x1a + ldrb r0, [r1, #3] + adds r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #2] + adds r3, r7, r3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _08121C5C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + bl sub_08199AFC + mov r1, r8 + ldr r0, [r1] + adds r0, #0xe8 + ldr r0, [r0] + ldr r0, [r0, #4] + adds r4, r4, r0 + ldrb r0, [r4, #1] + adds r0, r7, r0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_08121BFC: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r1, sb + ldr r0, [r1] + adds r0, #0xe8 + ldr r0, [r0] + ldrb r0, [r0] + cmp r6, r0 + blo _08121BA0 +_08121C10: + ldr r0, _08121C58 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xd9 + ldrb r2, [r0] + adds r0, #0xf + ldr r0, [r0] + ldrb r3, [r0, #1] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1c + ldr r0, _08121C5C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r1, #0 + adds r0, #0xc0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + bl sub_08199AFC + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08121C58: .4byte gUnknown_2039E00 +_08121C5C: .4byte gUnknown_857AED8 + thumb_func_end sub_08121B64 + + thumb_func_start sub_08121C60 +sub_08121C60: @ 0x08121C60 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08121C60 + + thumb_func_start sub_08121C74 +sub_08121C74: @ 0x08121C74 + push {r4, lr} + ldr r4, _08121C9C + ldr r0, [r4] + adds r0, #0xdb + ldrb r0, [r0] + cmp r0, #0 + beq _08121C8A + bl sub_080066D8 + bl sub_08006724 +_08121C8A: + ldr r0, [r4] + adds r0, #0xd0 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_08121C74 + + thumb_func_start sub_08121C94 +sub_08121C94: @ 0x08121C94 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08121C9C: .4byte gUnknown_2039E00 + thumb_func_end sub_08121C94 + + thumb_func_start sub_08121CA0 +sub_08121CA0: @ 0x08121CA0 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08121CB6 + ldr r0, _08121CBC + ldr r0, [r0] + adds r0, #0xd0 + ldr r1, _08121CC0 + str r1, [r0] +_08121CB6: + pop {r0} + bx r0 + .align 2, 0 +_08121CBC: .4byte gUnknown_2039E00 +_08121CC0: .4byte sub_08121CC4 + thumb_func_end sub_08121CA0 + + thumb_func_start sub_08121CC4 +sub_08121CC4: @ 0x08121CC4 + push {lr} + sub sp, #4 + ldr r0, _08121CF4 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08121CEE + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08121CF8 + ldr r0, [r0] + adds r0, #0xd0 + ldr r1, _08121CFC + str r1, [r0] +_08121CEE: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08121CF4: .4byte gUnknown_3002360 +_08121CF8: .4byte gUnknown_2039E00 +_08121CFC: .4byte sub_08121D00 + thumb_func_end sub_08121CC4 + + thumb_func_start sub_08121D00 +sub_08121D00: @ 0x08121D00 + push {r4, lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08121D7E + ldr r4, _08121D84 + ldr r0, [r4] + adds r0, #0xcc + ldr r0, [r0] + bl sub_08000540 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xdb + ldrb r1, [r1] + cmp r1, #2 + bgt _08121D4E + cmp r1, #1 + blt _08121D4E + adds r0, #0xd4 + ldr r0, [r0] + ldrh r0, [r0, #0x1e] + bl sub_080D2724 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D2890 + ldr r0, [r4] + adds r0, #0xdc + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08121D88 + adds r0, r0, r1 + bl sub_080D2798 +_08121D4E: + ldr r4, _08121D84 + ldr r0, [r4] + ldr r2, _08121D8C + movs r1, #0 + bl memset + bl sub_080A133C + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #0 + bl sub_080017D4 + bl sub_080034D4 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08121D7E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08121D84: .4byte gUnknown_2039E00 +_08121D88: .4byte gUnknown_20205AC +_08121D8C: .4byte 0x000020EC + thumb_func_end sub_08121D00 + + thumb_func_start sub_08121D90 +sub_08121D90: @ 0x08121D90 + push {r4, lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + mov r1, sp + movs r0, #0 + strh r0, [r1] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _08121DF4 + mov r0, sp + bl CpuSet + movs r4, #0 + str r4, [sp, #4] + add r0, sp, #4 + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _08121DF8 + bl CpuSet + add r0, sp, #8 + strh r4, [r0] + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _08121DFC + bl CpuSet + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08121DF4: .4byte 0x0100C000 +_08121DF8: .4byte 0x05000100 +_08121DFC: .4byte 0x01000200 + thumb_func_end sub_08121D90 + + thumb_func_start sub_08121E00 +sub_08121E00: @ 0x08121E00 + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08121E00 + + thumb_func_start sub_08121E58 +sub_08121E58: @ 0x08121E58 + push {lr} + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08121E58 + + thumb_func_start sub_08121E6C +sub_08121E6C: @ 0x08121E6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r4, [sp, #0x28] + ldr r5, [sp, #0x2c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r6, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08121EF8 + strb r6, [r0] + adds r0, r6, #0 + movs r1, #1 + bl sub_08197924 + ldr r4, _08121EFC + ldr r0, [sp, #0x30] + cmp r0, r4 + beq _08121EB0 + adds r0, r4, #0 + ldr r1, [sp, #0x30] + bl sub_08008BCC +_08121EB0: + ldr r2, _08121F00 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + adds r0, r6, #0 + adds r1, r7, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08196E2C + ldr r1, _08121F04 + ldr r0, [sp, #0x34] + str r0, [r1] + ldr r1, _08121F08 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08121F0C + str r1, [r0] + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08121EF8: .4byte gUnknown_2039E0C +_08121EFC: .4byte gUnknown_2021C7C +_08121F00: .4byte gUnknown_30030B4 +_08121F04: .4byte gUnknown_300117C +_08121F08: .4byte gUnknown_3005B60 +_08121F0C: .4byte sub_08121F2C + thumb_func_end sub_08121E6C + + thumb_func_start sub_08121F10 +sub_08121F10: @ 0x08121F10 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08004630 + adds r0, r4, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08121F10 + + thumb_func_start sub_08121F2C +sub_08121F2C: @ 0x08121F2C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08121F50 + ldrb r0, [r0] + bl sub_08121F10 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08121F4A + ldr r0, _08121F54 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_08121F4A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08121F50: .4byte gUnknown_2039E0C +_08121F54: .4byte gUnknown_300117C + thumb_func_end sub_08121F2C + + thumb_func_start sub_08121F58 +sub_08121F58: @ 0x08121F58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08121F78 + ldr r2, [r1, #4] + ldr r1, [r1] + str r1, [r3] + str r2, [r3, #4] + ldr r2, _08121F7C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _08121F80 + str r0, [r1] + bx lr + .align 2, 0 +_08121F78: .4byte gUnknown_2039E04 +_08121F7C: .4byte gUnknown_3005B60 +_08121F80: .4byte sub_08121FE8 + thumb_func_end sub_08121F58 + + thumb_func_start sub_08121F84 +sub_08121F84: @ 0x08121F84 + push {r4, r5, r6, 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, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + bl sub_08198C08 + ldr r2, _08121FDC + ldr r0, [r7] + ldr r1, [r7, #4] + str r0, [r2] + str r1, [r2, #4] + ldr r1, _08121FE0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08121FE4 + str r1, [r0] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08121FDC: .4byte gUnknown_2039E04 +_08121FE0: .4byte gUnknown_3005B60 +_08121FE4: .4byte sub_08121FE8 + thumb_func_end sub_08121F84 + + thumb_func_start sub_08121FE8 +sub_08121FE8: @ 0x08121FE8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _0812200E + cmp r1, #0 + bgt _08122008 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08122024 + b _08122034 +_08122008: + cmp r1, #1 + beq _08122024 + b _08122034 +_0812200E: + movs r0, #5 + bl sub_080A306C + ldr r0, _08122020 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _08122034 + .align 2, 0 +_08122020: .4byte gUnknown_2039E04 +_08122024: + movs r0, #5 + bl sub_080A306C + ldr r0, _0812203C + ldr r1, [r0, #4] + adds r0, r4, #0 + bl _call_via_r1 +_08122034: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812203C: .4byte gUnknown_2039E04 + thumb_func_end sub_08121FE8 + + thumb_func_start sub_08122040 +sub_08122040: @ 0x08122040 + push {r4, r5, r6, lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r5, r1, #0 + ldrh r4, [r2] + adds r6, r4, #0 + ldr r0, _08122074 + ldrh r0, [r0, #0x30] + movs r3, #0xf0 + ands r3, r0 + cmp r3, #0x40 + bne _08122078 + adds r0, r4, #1 + strh r0, [r2] + movs r3, #0 + ldrsh r0, [r2, r3] + cmp r0, r1 + ble _0812206A + movs r0, #1 + strh r0, [r2] +_0812206A: + movs r0, #0 + ldrsh r1, [r2, r0] +_0812206E: + lsls r0, r4, #0x10 + b _081220C2 + .align 2, 0 +_08122074: .4byte gUnknown_3002360 +_08122078: + cmp r3, #0x80 + bne _0812208E + subs r0, r4, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08122088 + strh r1, [r2] +_08122088: + movs r3, #0 + ldrsh r1, [r2, r3] + b _0812206E +_0812208E: + cmp r3, #0x10 + bne _081220A8 + adds r0, r4, #0 + adds r0, #0xa + strh r0, [r2] + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, r5 + ble _081220A2 + strh r5, [r2] +_081220A2: + movs r3, #0 + ldrsh r1, [r2, r3] + b _0812206E +_081220A8: + cmp r3, #0x20 + bne _081220D2 + adds r0, r4, #0 + subs r0, #0xa + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _081220BC + movs r0, #1 + strh r0, [r2] +_081220BC: + movs r0, #0 + ldrsh r1, [r2, r0] + lsls r0, r6, #0x10 +_081220C2: + asrs r0, r0, #0x10 + cmp r1, r0 + beq _081220D2 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + b _081220D4 +_081220D2: + movs r0, #0 +_081220D4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122040 + + thumb_func_start sub_081220DC +sub_081220DC: @ 0x081220DC + push {lr} + ldr r0, _081220FC + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _08122112 + ldr r0, _08122100 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08122104 + movs r0, #1 + b _08122114 + .align 2, 0 +_081220FC: .4byte gUnknown_3005AF0 +_08122100: .4byte gUnknown_3002360 +_08122104: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08122112 + movs r0, #2 + b _08122114 +_08122112: + movs r0, #0 +_08122114: + pop {r1} + bx r1 + thumb_func_end sub_081220DC + + thumb_func_start sub_08122118 +sub_08122118: @ 0x08122118 + push {lr} + ldr r0, _08122138 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _0812214E + ldr r0, _0812213C + ldrh r1, [r0, #0x30] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08122140 + movs r0, #1 + b _08122150 + .align 2, 0 +_08122138: .4byte gUnknown_3005AF0 +_0812213C: .4byte gUnknown_3002360 +_08122140: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812214E + movs r0, #2 + b _08122150 +_0812214E: + movs r0, #0 +_08122150: + pop {r1} + bx r1 + thumb_func_end sub_08122118 + + thumb_func_start sub_08122154 +sub_08122154: @ 0x08122154 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _08122180 + ldr r0, _08122178 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _0812217C + cmp r1, r0 + beq _08122172 + bl sub_08017AC0 + cmp r0, #1 + bne _08122180 +_08122172: + movs r0, #0 + b _08122182 + .align 2, 0 +_08122178: .4byte gUnknown_3005AEC +_0812217C: .4byte 0x00001919 +_08122180: + movs r0, #1 +_08122182: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122154 + + thumb_func_start sub_08122188 +sub_08122188: @ 0x08122188 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_080856F4 + cmp r0, #1 + beq _0812219E + bl sub_08017AC0 + cmp r0, #1 + bne _081221B0 +_0812219E: + adds r0, r4, #0 + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081221B0 + movs r0, #0 + b _081221B2 +_081221B0: + movs r0, #1 +_081221B2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08122188 + + thumb_func_start sub_081221B8 +sub_081221B8: @ 0x081221B8 + push {lr} + bl sub_080856F4 + cmp r0, #1 + beq _081221CA + ldr r0, _081221D0 + ldrb r0, [r0] + cmp r0, #1 + bne _081221D4 +_081221CA: + movs r0, #1 + b _081221D6 + .align 2, 0 +_081221D0: .4byte gUnknown_30031C4 +_081221D4: + movs r0, #0 +_081221D6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081221B8 + + thumb_func_start sub_081221DC +sub_081221DC: @ 0x081221DC + push {lr} + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081221F2 + bl sub_08086EFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081221F4 +_081221F2: + movs r0, #0 +_081221F4: + pop {r1} + bx r1 + thumb_func_end sub_081221DC + + thumb_func_start sub_081221F8 +sub_081221F8: @ 0x081221F8 + push {lr} + bl sub_081221DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0812220E + bl sub_0800AFD8 + cmp r0, #1 + bne _08122212 +_0812220E: + movs r0, #1 + b _08122214 +_08122212: + movs r0, #0 +_08122214: + pop {r1} + bx r1 + thumb_func_end sub_081221F8 + + thumb_func_start sub_08122218 +sub_08122218: @ 0x08122218 + push {r4, r5, r6, lr} + adds r6, r2, #0 + ldr r2, [sp, #0x10] + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r4, r0, #0 + movs r0, #0 + strb r0, [r3] + movs r2, #0 + lsrs r1, r1, #0x18 + cmp r2, r1 + bhs _0812224C +_08122232: + lsls r0, r2, #2 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + beq _08122242 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] +_08122242: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r1 + blo _08122232 +_0812224C: + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + bls _0812225E + strb r5, [r6] + b _08122260 +_0812225E: + strb r1, [r6] +_08122260: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08122218 + + thumb_func_start sub_08122268 +sub_08122268: @ 0x08122268 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrh r0, [r4] + cmp r0, #0 + beq _08122286 + adds r0, r0, r2 + cmp r0, r3 + ble _08122286 + subs r0, r3, r2 + strh r0, [r4] +_08122286: + ldrh r0, [r4] + ldrh r1, [r5] + adds r0, r0, r1 + cmp r0, r3 + blt _0812229C + cmp r3, #0 + bne _08122298 + strh r3, [r5] + b _0812229C +_08122298: + subs r0, r3, #1 + strh r0, [r5] +_0812229C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08122268 + + thumb_func_start sub_081222A4 +sub_081222A4: @ 0x081222A4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, [sp, #0x14] + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r2, r0, #0x18 + lsrs r0, r2, #0x18 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081222FC + lsrs r2, r2, #0x19 + ldrh r0, [r4] + cmp r0, r2 + blo _0812232E + movs r1, #0 + subs r0, r0, r2 + cmp r1, r0 + bge _0812232E + ldrh r0, [r5] + adds r0, r0, r7 + cmp r0, r6 + beq _0812232E +_081222D8: + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrh r0, [r4] + subs r0, r0, r2 + cmp r1, r0 + bge _0812232E + ldrh r0, [r5] + adds r0, r0, r7 + cmp r0, r6 + bne _081222D8 + b _0812232E +_081222FC: + ldrh r3, [r4] + lsrs r2, r2, #0x19 + adds r0, r2, #1 + cmp r3, r0 + blt _0812232E + movs r1, #0 + subs r0, r3, r2 + b _08122322 +_0812230C: + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldrh r0, [r4] + subs r0, r0, r2 +_08122322: + cmp r1, r0 + bgt _0812232E + ldrh r0, [r5] + adds r0, r0, r7 + cmp r0, r6 + bne _0812230C +_0812232E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081222A4 + + thumb_func_start sub_08122334 +sub_08122334: @ 0x08122334 + push {lr} + ldr r0, _08122348 + bl sub_08034388 + ldr r0, _0812234C + bl sub_080343E4 + pop {r0} + bx r0 + .align 2, 0 +_08122348: .4byte gUnknown_857B0E4 +_0812234C: .4byte gUnknown_857B0EC + thumb_func_end sub_08122334 + + thumb_func_start sub_08122350 +sub_08122350: @ 0x08122350 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r5, #0 + cmp r5, r6 + bhs _081223A8 + ldr r7, _081223B4 +_08122364: + lsls r1, r5, #4 + ldr r0, _081223B8 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + mov r1, r8 + adds r4, r1, r5 + strb r0, [r4] + cmp r5, #0 + beq _0812238A + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #1 + bl sub_08007EC0 +_0812238A: + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _08122364 +_081223A8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081223B4: .4byte gUnknown_20205AC +_081223B8: .4byte gUnknown_857B0F4 + thumb_func_end sub_08122350 + + thumb_func_start sub_081223BC +sub_081223BC: @ 0x081223BC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _08122402 + ldr r7, _081223E4 +_081223CC: + subs r0, r5, #1 + cmp r4, r0 + bne _081223E8 + adds r0, r6, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + bl sub_08007338 + b _081223F8 + .align 2, 0 +_081223E4: .4byte gUnknown_20205AC +_081223E8: + adds r0, r6, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + bl sub_08006E00 +_081223F8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _081223CC +_08122402: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081223BC + + thumb_func_start sub_08122408 +sub_08122408: @ 0x08122408 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r0, r2, #0x18 + movs r3, #0 + cmp r3, r4 + bhs _0812244A + ldr r1, _08122450 + mov ip, r1 + movs r1, #1 + ands r0, r1 + lsls r5, r0, #2 + movs r7, #5 + rsbs r7, r7, #0 +_08122428: + adds r0, r6, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r5 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + blo _08122428 +_0812244A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08122450: .4byte gUnknown_20205AC + thumb_func_end sub_08122408 + + thumb_func_start sub_08122454 +sub_08122454: @ 0x08122454 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sb, r3 + movs r0, #0x80 + ands r0, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #0x7f + ands r4, r0 + movs r3, #0 + cmp r3, r4 + bhs _081224D4 + ldr r5, _081224A8 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + subs r0, #8 + mov ip, r0 +_0812248A: + subs r0, r4, #1 + cmp r3, r0 + bne _081224AC + mov r0, r8 + cmp r0, #0 + beq _081224AC + adds r2, r6, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, ip + strh r1, [r0, #0x24] + b _081224BA + .align 2, 0 +_081224A8: .4byte gUnknown_20205AC +_081224AC: + adds r2, r6, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r7, [r0, #0x24] +_081224BA: + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, sb + adds r1, #1 + strh r1, [r0, #0x22] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + blo _0812248A +_081224D4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08122454 + + thumb_func_start sub_081224E0 +sub_081224E0: @ 0x081224E0 + push {r4, r5, r6, r7, lr} + movs r6, #0 + ldr r5, _08122514 +_081224E6: + movs r0, #0xa + bl sub_0811F318 + ldr r1, [r5] + lsls r4, r6, #3 + adds r1, r1, r4 + ldr r2, _08122518 + adds r1, r1, r2 + strh r0, [r1] + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08122520 + movs r0, #0xc + bl sub_0811F318 + ldr r1, [r5] + adds r1, r1, r4 + ldr r7, _0812251C + adds r1, r1, r7 + b _0812252E + .align 2, 0 +_08122514: .4byte gUnknown_3005AEC +_08122518: .4byte 0x00002E6C +_0812251C: .4byte 0x00002E6E +_08122520: + movs r0, #0xd + bl sub_0811F318 + ldr r1, [r5] + adds r1, r1, r4 + ldr r2, _0812257C + adds r1, r1, r2 +_0812252E: + strh r0, [r1] + bl sub_0806F050 + ldr r3, [r5] + adds r3, r3, r4 + movs r2, #1 + ands r2, r0 + ldr r7, _08122580 + adds r3, r3, r7 + lsls r2, r2, #6 + ldrb r0, [r3] + movs r7, #0x41 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldr r0, _08122584 + adds r1, r4, r0 + ldr r0, [r5] + adds r0, r0, r1 + bl sub_08122B34 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #4 + bls _081224E6 + ldr r0, _08122588 + ldr r0, [r0] + ldr r1, _08122584 + adds r0, r0, r1 + movs r1, #5 + movs r2, #0 + bl sub_08122810 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812257C: .4byte 0x00002E6E +_08122580: .4byte 0x00002E69 +_08122584: .4byte 0x00002E68 +_08122588: .4byte gUnknown_3005AEC + thumb_func_end sub_081224E0 + + thumb_func_start sub_0812258C +sub_0812258C: @ 0x0812258C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _081225A2 + b _081226CA +_081225A2: + lsls r0, r1, #2 + adds r0, r0, r1 + str r0, [sp] + movs r0, #0 + mov sl, r0 + movs r1, #0x7f + mov sb, r1 + movs r2, #0x80 + rsbs r2, r2, #0 + mov r8, r2 +_081225B6: + ldr r2, [sp] + mov r3, sl + lsls r0, r3, #3 + ldr r4, _081225FC + adds r0, r0, r4 + ldr r3, _08122600 + ldr r1, [r3] + adds r5, r1, r0 + ldrb r6, [r5, #1] + movs r0, #0x40 + ands r0, r6 + cmp r0, #0 + bne _08122614 + ldrb r4, [r5] + lsls r3, r4, #0x19 + lsrs r1, r3, #0x19 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + blo _08122604 + adds r0, r1, #0 + subs r0, r0, r2 + mov r1, sb + ands r0, r1 + mov r1, r8 + ands r1, r4 + orrs r1, r0 + strb r1, [r5] + movs r0, #0x7f + ands r1, r0 + cmp r1, #0 + bne _081226AA + movs r0, #0x40 + orrs r0, r6 + b _081226A8 + .align 2, 0 +_081225FC: .4byte 0x00002E68 +_08122600: .4byte gUnknown_3005AEC +_08122604: + lsrs r0, r3, #0x19 + subs r2, r2, r0 + mov r0, r8 + ands r0, r4 + strb r0, [r5] + movs r0, #0x40 + orrs r0, r6 + strb r0, [r5, #1] +_08122614: + ldrb r7, [r5] + lsls r0, r7, #0x19 + lsrs r0, r0, #0x19 + adds r4, r0, r2 + ldrh r0, [r5] + lsls r6, r0, #0x12 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + lsrs r1, r6, #0x19 + cmp r0, r1 + bls _08122684 + adds r0, r4, #0 + bl __umodsi3 + adds r3, r0, #0 + lsrs r1, r6, #0x19 + adds r0, r4, #0 + str r3, [sp, #4] + bl __udivsi3 + adds r4, r0, #0 + movs r0, #1 + eors r4, r0 + ands r4, r0 + lsls r2, r4, #6 + ldrb r0, [r5, #1] + movs r4, #0x41 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #1] + movs r1, #0x40 + ands r0, r1 + ldr r3, [sp, #4] + cmp r0, #0 + beq _0812266E + adds r1, r3, #0 + mov r0, sb + ands r1, r0 + mov r0, r8 + ands r0, r7 + orrs r0, r1 + strb r0, [r5] + b _081226AA +_0812266E: + ldrh r0, [r5] + lsls r0, r0, #0x12 + lsrs r0, r0, #0x19 + subs r0, r0, r3 + mov r1, sb + ands r0, r1 + mov r1, r8 + ands r1, r7 + orrs r1, r0 + strb r1, [r5] + b _081226AA +_08122684: + mov r2, sb + ands r4, r2 + mov r0, r8 + ands r0, r7 + orrs r0, r4 + strb r0, [r5] + lsls r0, r0, #0x19 + ldrh r1, [r5] + lsls r1, r1, #0x12 + lsrs r0, r0, #0x19 + lsrs r1, r1, #0x19 + cmp r0, r1 + bne _081226AA + ldrb r0, [r5, #1] + movs r3, #0x41 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 +_081226A8: + strb r0, [r5, #1] +_081226AA: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + cmp r0, #4 + bhi _081226BA + b _081225B6 +_081226BA: + ldr r4, _081226DC + ldr r0, [r4] + ldr r1, _081226E0 + adds r0, r0, r1 + movs r1, #5 + movs r2, #0 + bl sub_08122810 +_081226CA: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081226DC: .4byte gUnknown_3005AEC +_081226E0: .4byte 0x00002E68 + thumb_func_end sub_0812258C + + thumb_func_start sub_081226E4 +sub_081226E4: @ 0x081226E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + movs r0, #0 + movs r1, #0 + str r0, [sp] + str r1, [sp, #4] + mov r0, r8 + bl sub_08122BBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122704 + b _081227FE +_08122704: + ldr r4, _08122740 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08122750 + adds r0, r4, #0 + bl sub_0809D018 + ldr r0, _08122744 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08122750 + ldr r0, _08122748 + ldr r1, [r0] + mov r0, r8 + ldrh r2, [r0] + ldr r3, _0812274C + adds r0, r1, r3 + strh r2, [r0] + mov r2, r8 + ldrh r0, [r2, #2] + adds r3, #2 + adds r1, r1, r3 + strh r0, [r1] + movs r0, #1 + b _08122800 + .align 2, 0 +_08122740: .4byte 0x00000893 +_08122744: .4byte 0x00000894 +_08122748: .4byte gUnknown_3005AEC +_0812274C: .4byte 0x00002E6C +_08122750: + mov r0, r8 + ldrh r1, [r0, #2] + lsls r1, r1, #0x10 + ldrh r0, [r0] + orrs r0, r1 + str r0, [sp, #4] + movs r1, #0x80 + lsls r1, r1, #7 + ldr r0, [sp] + orrs r0, r1 + str r0, [sp] + mov r0, sp + bl sub_08122B34 + movs r5, #0 +_0812276E: + ldr r6, _081227D8 + lsls r4, r5, #3 + ldr r1, _081227DC + adds r0, r4, r1 + ldr r1, [r6] + adds r1, r1, r0 + mov r0, sp + movs r2, #0 + bl sub_08122A64 + lsls r0, r0, #0x18 + adds r7, r4, #0 + cmp r0, #0 + beq _081227E0 + movs r2, #4 + mov ip, r6 + cmp r2, r5 + bls _081227B2 + ldr r4, _081227DC +_08122794: + ldr r0, [r6] + lsls r3, r2, #3 + adds r0, r0, r4 + adds r3, r0, r3 + subs r2, #1 + lsls r1, r2, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r3] + str r1, [r3, #4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r2, r5 + bhi _08122794 +_081227B2: + mov r3, ip + ldr r2, [r3] + ldr r0, _081227DC + adds r2, r2, r0 + adds r2, r2, r7 + ldr r0, [sp] + ldr r1, [sp, #4] + str r0, [r2] + str r1, [r2, #4] + cmp r5, #4 + bne _081227CE + mov r0, r8 + bl sub_080EE780 +_081227CE: + movs r0, #0 + cmp r5, #0 + bne _08122800 + movs r0, #1 + b _08122800 + .align 2, 0 +_081227D8: .4byte gUnknown_3005AEC +_081227DC: .4byte 0x00002E68 +_081227E0: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #4 + bls _0812276E + ldr r2, [r6] + ldr r1, _0812280C + adds r2, r2, r1 + ldr r0, [sp] + ldr r1, [sp, #4] + str r0, [r2] + str r1, [r2, #4] + mov r0, r8 + bl sub_080EE780 +_081227FE: + movs r0, #0 +_08122800: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812280C: .4byte 0x00002E88 + thumb_func_end sub_081226E4 + + thumb_func_start sub_08122810 +sub_08122810: @ 0x08122810 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + movs r2, #0 + cmp r2, r7 + bhs _08122878 +_0812282C: + adds r1, r2, #1 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + mov r8, r1 + cmp r5, r7 + bhs _0812286E + lsls r0, r2, #3 + mov r1, sb + adds r6, r1, r0 +_0812283E: + lsls r0, r5, #3 + mov r1, sb + adds r4, r1, r0 + adds r0, r4, #0 + adds r1, r6, #0 + mov r2, sl + bl sub_08122A64 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122864 + ldr r2, [r4] + ldr r3, [r4, #4] + ldr r0, [r6] + ldr r1, [r6, #4] + str r0, [r4] + str r1, [r4, #4] + str r2, [r6] + str r3, [r6, #4] +_08122864: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r7 + blo _0812283E +_0812286E: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r7 + blo _0812282C +_08122878: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08122810 + + thumb_func_start sub_08122888 +sub_08122888: @ 0x08122888 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + adds r6, r1, #0 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + bl sub_08000BC8 + mov sl, r0 + cmp r0, #0 + beq _0812298C + adds r0, r4, #0 + bl sub_08000BC8 + adds r7, r0, #0 + cmp r7, #0 + bne _081228BC + mov r0, sl + bl sub_08000BF0 + b _0812298C +_081228BC: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r5, #0 + cmp r5, sb + bhs _081228EA +_081228CC: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + add r0, sl + adds r1, r5, #0 + muls r1, r6, r1 + add r1, r8 + movs r2, #0x28 + bl memcpy + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, sb + blo _081228CC +_081228EA: + mov r4, sl + mov r8, r7 + movs r3, #0 + movs r5, #0 + cmp r5, sb + bhs _08122952 +_081228F6: + movs r6, #0 +_081228F8: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r3, #0 + str r3, [sp] + bl sub_08122C28 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r3, [sp] + cmp r0, #0 + bge _08122924 + ldr r0, [r4] + ldr r1, [r4, #4] + mov r2, r8 + adds r2, #8 + mov r8, r2 + subs r2, #8 + stm r2!, {r0, r1} + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + b _0812293C +_08122924: + lsls r0, r0, #3 + adds r2, r7, r0 + ldrb r1, [r2] + lsls r1, r1, #0x19 + ldrb r0, [r4] + lsls r0, r0, #0x19 + cmp r1, r0 + bhs _0812293C + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r2] + str r1, [r2, #4] +_0812293C: + adds r4, #8 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #4 + bls _081228F8 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, sb + blo _081228F6 +_08122952: + adds r0, r7, #0 + adds r1, r3, #0 + movs r2, #2 + bl sub_08122810 + adds r4, r7, #0 + ldr r0, _0812299C + ldr r0, [r0] + ldr r1, _081229A0 + adds r1, r1, r0 + mov r8, r1 + movs r5, #0 +_0812296A: + ldm r4!, {r0, r1} + mov r2, r8 + adds r2, #8 + mov r8, r2 + subs r2, #8 + stm r2!, {r0, r1} + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #4 + bls _0812296A + mov r0, sl + bl sub_08000BF0 + adds r0, r7, #0 + bl sub_08000BF0 +_0812298C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812299C: .4byte gUnknown_3005AEC +_081229A0: .4byte 0x00002E68 + thumb_func_end sub_08122888 + + thumb_func_start sub_081229A4 +sub_081229A4: @ 0x081229A4 + push {lr} + ldr r2, _081229C4 + ldr r0, _081229C8 + ldrh r1, [r0] + lsls r1, r1, #3 + ldr r0, [r2] + adds r1, r1, r0 + ldr r0, _081229CC + ldr r2, _081229D0 + adds r1, r1, r2 + movs r2, #2 + movs r3, #1 + bl sub_0811F1CC + pop {r0} + bx r0 + .align 2, 0 +_081229C4: .4byte gUnknown_3005AEC +_081229C8: .4byte gUnknown_2037280 +_081229CC: .4byte gUnknown_2021C40 +_081229D0: .4byte 0x00002E6C + thumb_func_end sub_081229A4 + + thumb_func_start sub_081229D4 +sub_081229D4: @ 0x081229D4 + push {r4, lr} + movs r4, #0 + ldr r0, _08122A24 + ldr r3, [r0] + ldr r1, _08122A28 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x19 + ldr r2, _08122A2C + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + subs r1, r1, r0 + cmp r1, #1 + bgt _08122A18 + ldr r1, _08122A30 + adds r0, r3, r1 + ldrb r1, [r0] + movs r2, #0x40 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08122A18 + ldr r1, _08122A34 + adds r0, r3, r1 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + lsrs r4, r0, #0x1f +_08122A18: + ldr r0, _08122A38 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122A24: .4byte gUnknown_3005AEC +_08122A28: .4byte 0x00002E68 +_08122A2C: .4byte 0x00002E70 +_08122A30: .4byte 0x00002E69 +_08122A34: .4byte 0x00002E71 +_08122A38: .4byte gUnknown_2037290 + thumb_func_end sub_081229D4 + + thumb_func_start sub_08122A3C +sub_08122A3C: @ 0x08122A3C + ldr r2, _08122A58 + ldr r0, _08122A5C + ldr r0, [r0] + ldr r3, _08122A60 + adds r1, r0, r3 + adds r3, #2 + adds r0, r0, r3 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_08122A58: .4byte gUnknown_2037290 +_08122A5C: .4byte gUnknown_3005AEC +_08122A60: .4byte 0x00002E6C + thumb_func_end sub_08122A3C + + thumb_func_start sub_08122A64 +sub_08122A64: @ 0x08122A64 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r2, #0 + cmp r2, #1 + beq _08122AAA + cmp r2, #1 + bgt _08122A7E + cmp r2, #0 + beq _08122A84 + b _08122B26 +_08122A7E: + cmp r0, #2 + beq _08122AD6 + b _08122B26 +_08122A84: + ldrb r0, [r3] + lsls r1, r0, #0x19 + ldrb r0, [r5] + lsls r0, r0, #0x19 + cmp r1, r0 + bhi _08122B22 + cmp r1, r0 + blo _08122AD2 + ldrh r0, [r3] + lsls r3, r0, #0x12 + ldrh r0, [r5] + lsls r2, r0, #0x12 + lsrs r1, r3, #0x19 + lsrs r0, r2, #0x19 + cmp r1, r0 + bhi _08122B22 + lsrs r1, r3, #0x19 + lsrs r0, r2, #0x19 + b _08122ACE +_08122AAA: + ldrh r0, [r3] + lsls r4, r0, #0x12 + ldrh r0, [r5] + lsls r2, r0, #0x12 + lsrs r1, r4, #0x19 + lsrs r0, r2, #0x19 + cmp r1, r0 + bhi _08122B22 + lsrs r1, r4, #0x19 + lsrs r0, r2, #0x19 + cmp r1, r0 + blo _08122AD2 + ldrb r0, [r3] + lsls r1, r0, #0x19 + ldrb r0, [r5] + lsls r0, r0, #0x19 + cmp r1, r0 + bhi _08122B22 +_08122ACE: + cmp r1, r0 + bhs _08122B26 +_08122AD2: + movs r0, #0 + b _08122B2E +_08122AD6: + ldrb r0, [r3] + lsls r1, r0, #0x19 + ldrb r0, [r5] + lsls r0, r0, #0x19 + cmp r1, r0 + bhi _08122B22 + cmp r1, r0 + blo _08122AD2 + ldrh r0, [r3] + lsls r4, r0, #0x12 + ldrh r0, [r5] + lsls r2, r0, #0x12 + lsrs r1, r4, #0x19 + lsrs r0, r2, #0x19 + cmp r1, r0 + bhi _08122B22 + lsrs r1, r4, #0x19 + lsrs r0, r2, #0x19 + cmp r1, r0 + blo _08122AD2 + ldrh r1, [r3, #2] + ldrh r0, [r5, #2] + cmp r1, r0 + bhi _08122B22 + cmp r1, r0 + blo _08122AD2 + ldrh r1, [r3, #4] + ldrh r0, [r5, #4] + cmp r1, r0 + bhi _08122B22 + cmp r1, r0 + blo _08122AD2 + ldrh r1, [r3, #6] + ldrh r0, [r5, #6] + cmp r1, r0 + bhi _08122B22 + cmp r1, r0 + blo _08122AD2 +_08122B22: + movs r0, #1 + b _08122B2E +_08122B26: + bl sub_0806F050 + movs r1, #1 + ands r0, r1 +_08122B2E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08122A64 + + thumb_func_start sub_08122B34 +sub_08122B34: @ 0x08122B34 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x62 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x32 + bls _08122B76 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x62 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x50 + bls _08122B76 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x62 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08122B76: + adds r1, r4, #0 + adds r1, #0x1e + movs r0, #0x7f + ands r1, r0 + lsls r1, r1, #7 + ldrh r2, [r5] + ldr r0, _08122BB8 + ands r0, r2 + orrs r0, r1 + strh r0, [r5] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #1 + bl __modsi3 + adds r0, #0x1e + movs r1, #0x7f + ands r0, r1 + ldrb r2, [r5] + movs r1, #0x80 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + bl sub_0806F050 + strh r0, [r5, #2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08122BB8: .4byte 0xFFFFC07F + thumb_func_end sub_08122B34 + + thumb_func_start sub_08122BBC +sub_08122BBC: @ 0x08122BBC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r6, _08122BE0 +_08122BC4: + lsls r1, r4, #3 + ldr r0, [r6] + adds r1, r1, r0 + ldr r0, _08122BE4 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08122BFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122BE8 + movs r0, #1 + b _08122BF4 + .align 2, 0 +_08122BE0: .4byte gUnknown_3005AEC +_08122BE4: .4byte 0x00002E6C +_08122BE8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08122BC4 + movs r0, #0 +_08122BF4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122BBC + + thumb_func_start sub_08122BFC +sub_08122BFC: @ 0x08122BFC + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + movs r4, #0 +_08122C04: + ldrh r1, [r3] + ldrh r0, [r2] + adds r2, #2 + adds r3, #2 + cmp r1, r0 + beq _08122C14 + movs r0, #0 + b _08122C20 +_08122C14: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + bls _08122C04 + movs r0, #1 +_08122C20: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122BFC + + thumb_func_start sub_08122C28 +sub_08122C28: @ 0x08122C28 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + movs r4, #0 + cmp r4, r6 + bge _08122C5E +_08122C38: + adds r1, r5, #4 + adds r0, r7, #4 + bl sub_08122BFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122C4C + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + b _08122C62 +_08122C4C: + adds r5, #8 + lsls r0, r4, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + blt _08122C38 +_08122C5E: + movs r0, #1 + rsbs r0, r0, #0 +_08122C62: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08122C28 + + thumb_func_start sub_08122C68 +sub_08122C68: @ 0x08122C68 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r3, #0 + ldr r2, _08122C8C +_08122C76: + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _08122C90 + movs r0, #1 + ldrsb r0, [r2, r0] + cmp r0, r1 + bne _08122C90 + adds r0, r3, #1 + b _08122C9A + .align 2, 0 +_08122C8C: .4byte gUnknown_857B10C +_08122C90: + adds r2, #8 + adds r3, #1 + cmp r3, #0x15 + bls _08122C76 + movs r0, #0 +_08122C9A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08122C68 + + thumb_func_start sub_08122CA0 +sub_08122CA0: @ 0x08122CA0 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08122C68 + cmp r0, #0 + beq _08122CC0 + lsls r0, r0, #3 + ldr r1, _08122CBC + adds r0, r0, r1 + b _08122CC2 + .align 2, 0 +_08122CBC: .4byte gUnknown_857B104 +_08122CC0: + movs r0, #0 +_08122CC2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122CA0 + + thumb_func_start sub_08122CC8 +sub_08122CC8: @ 0x08122CC8 + push {lr} + cmp r0, #0 + beq _08122CE0 + cmp r0, #0x16 + bhi _08122CE0 + lsls r0, r0, #3 + ldr r1, _08122CDC + adds r0, r0, r1 + b _08122CE2 + .align 2, 0 +_08122CDC: .4byte gUnknown_857B104 +_08122CE0: + movs r0, #0 +_08122CE2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08122CC8 + + thumb_func_start sub_08122CE8 +sub_08122CE8: @ 0x08122CE8 + push {lr} + lsls r2, r1, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0 + bl sub_08122D04 +_08122CF4: + bl sub_08122DBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08122CF4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08122CE8 + + thumb_func_start sub_08122D04 +sub_08122D04: @ 0x08122D04 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08122D2C + str r0, [r3] + movs r1, #0x79 + adds r1, r1, r0 + mov ip, r1 + movs r1, #0 + mov r5, ip + strb r1, [r5] + adds r0, #0x78 + strb r2, [r0] + ldr r1, [r3] + cmp r2, #1 + bne _08122D34 + ldr r0, _08122D30 + b _08122D36 + .align 2, 0 +_08122D2C: .4byte gUnknown_2039E10 +_08122D30: .4byte sub_08123260 +_08122D34: + ldr r0, _08122D6C +_08122D36: + str r0, [r1, #0x18] + cmp r4, #0 + beq _08122D70 + ldr r1, [r3] + ldr r0, [r4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r1, #0x80 + strb r0, [r1] + ldr r1, [r3] + ldr r0, [r4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + adds r1, #0x81 + strb r0, [r1] + ldr r1, [r3] + ldr r0, [r4] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + adds r1, #0x82 + strb r0, [r1] + ldr r0, [r3] + adds r0, #0x83 + movs r1, #1 + strb r1, [r0] + b _08122D8C + .align 2, 0 +_08122D6C: .4byte sub_081230D0 +_08122D70: + ldr r0, [r3] + adds r0, #0x80 + movs r1, #2 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x81 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x82 + movs r1, #0x1c + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x83 + strb r4, [r0] +_08122D8C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08122D04 + + thumb_func_start sub_08122D94 +sub_08122D94: @ 0x08122D94 + push {r4, lr} + ldr r4, _08122DB8 + str r0, [r4] + bl sub_081238B8 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x54 + ldrh r1, [r0] + adds r0, #0x20 + strh r1, [r0] + subs r0, #0x1e + ldrh r1, [r0] + adds r0, #0x20 + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08122DB8: .4byte gUnknown_2039E10 + thumb_func_end sub_08122D94 + + thumb_func_start sub_08122DBC +sub_08122DBC: @ 0x08122DBC + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _08122DD8 + ldr r0, [r0] + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #7 + bls _08122DCE + b _08123018 +_08122DCE: + lsls r0, r0, #2 + ldr r1, _08122DDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08122DD8: .4byte gUnknown_2039E10 +_08122DDC: .4byte _08122DE0 +_08122DE0: @ jump table + .4byte _08122E00 @ case 0 + .4byte _08122E38 @ case 1 + .4byte _08122E84 @ case 2 + .4byte _08122EA0 @ case 3 + .4byte _08122EBC @ case 4 + .4byte _08122ED8 @ case 5 + .4byte _08122F1C @ case 6 + .4byte _08122F98 @ case 7 +_08122E00: + ldr r0, _08122E1C + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _08122E24 + adds r0, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + ldr r1, _08122E20 + movs r2, #0 + str r2, [sp] + b _08122E5E + .align 2, 0 +_08122E1C: .4byte gUnknown_2039E10 +_08122E20: .4byte gUnknown_857B34C +_08122E24: + ldr r0, _08122E30 + ldr r1, _08122E34 + bl LZ77UnCompVram + b _08123020 + .align 2, 0 +_08122E30: .4byte gUnknown_857B34C +_08122E34: .4byte 0x06008000 +_08122E38: + ldr r4, _08122E68 + ldr r0, [r4] + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _08122E70 + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122E50 + b _08123020 +_08122E50: + ldr r0, [r4] + adds r0, #0x80 + ldrb r0, [r0] + ldr r1, _08122E6C + movs r2, #1 + str r2, [sp] + movs r2, #0 +_08122E5E: + movs r3, #0 + bl sub_08199728 + b _08123020 + .align 2, 0 +_08122E68: .4byte gUnknown_2039E10 +_08122E6C: .4byte gUnknown_857C0B0 +_08122E70: + ldr r0, _08122E7C + ldr r1, _08122E80 + bl LZ77UnCompVram + b _08123020 + .align 2, 0 +_08122E7C: .4byte gUnknown_857C0B0 +_08122E80: .4byte 0x0600E000 +_08122E84: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08122E90 + b _08123020 +_08122E90: + ldr r0, _08122E9C + movs r1, #0x70 + movs r2, #0x60 + bl sub_080A1200 + b _08123020 + .align 2, 0 +_08122E9C: .4byte gUnknown_857B30C +_08122EA0: + ldr r0, _08122EB4 + ldr r1, _08122EB8 + ldr r1, [r1] + movs r2, #0xc2 + lsls r2, r2, #1 + adds r1, r1, r2 + bl LZ77UnCompWram + b _08123020 + .align 2, 0 +_08122EB4: .4byte gUnknown_857B1DC +_08122EB8: .4byte gUnknown_2039E10 +_08122EBC: + ldr r0, _08122ED0 + ldr r1, _08122ED4 + ldr r1, [r1] + movs r5, #0xa1 + lsls r5, r5, #2 + adds r1, r1, r5 + bl LZ77UnCompWram + b _08123020 + .align 2, 0 +_08122ED0: .4byte gUnknown_857B220 +_08122ED4: .4byte gUnknown_2039E10 +_08122ED8: + bl sub_081238B8 + ldr r4, _08122F18 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x54 + ldrh r1, [r0] + adds r0, #0x20 + strh r1, [r0] + subs r0, #0x1e + ldrh r0, [r0] + adds r1, r2, #0 + adds r1, #0x76 + strh r0, [r1] + ldrh r0, [r2] + bl sub_08123EC0 + ldr r1, [r4] + strh r0, [r1] + ldrh r0, [r1] + bl sub_08123D64 + ldr r1, [r4] + strb r0, [r1, #2] + ldr r1, [r4] + adds r0, r1, #4 + ldrh r1, [r1] + movs r2, #0xa + bl sub_08124578 + b _08123020 + .align 2, 0 +_08122F18: .4byte gUnknown_2039E10 +_08122F1C: + ldr r0, _08122F44 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0x78 + ldrb r1, [r0] + cmp r1, #0 + bne _08122F48 + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081236D0 + b _08123020 + .align 2, 0 +_08122F44: .4byte gUnknown_2039E10 +_08122F48: + adds r1, r4, #0 + adds r1, #0x54 + ldrh r0, [r1] + lsls r0, r0, #3 + subs r0, #0x34 + adds r2, r4, #0 + adds r2, #0x5c + movs r3, #0 + strh r0, [r2] + movs r0, #0x56 + adds r0, r0, r4 + mov ip, r0 + ldrh r0, [r0] + lsls r0, r0, #3 + subs r0, #0x44 + adds r5, r4, #0 + adds r5, #0x5e + strh r0, [r5] + ldrh r1, [r1] + adds r0, r4, #0 + adds r0, #0x64 + strh r1, [r0] + mov r0, ip + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x66 + strh r1, [r0] + movs r1, #0 + ldrsh r0, [r2, r1] + movs r2, #0 + ldrsh r1, [r5, r2] + movs r2, #0x80 + str r2, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + movs r2, #0x38 + movs r3, #0x48 + bl sub_081236D0 + b _08123020 +_08122F98: + bl sub_08123FBC + bl sub_081237C0 + ldr r4, _0812301C + ldr r0, [r4] + movs r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x20] + adds r0, #0x7a + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x7e + strb r1, [r0] + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _0812300E + adds r0, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + movs r1, #3 + movs r2, #2 + bl sub_08001B70 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + adds r1, #0x81 + ldrb r2, [r1] + movs r1, #1 + bl sub_08001B70 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + adds r1, #0x82 + ldrb r2, [r1] + movs r1, #2 + bl sub_08001B70 + ldr r0, [r4] + adds r0, #0x80 + ldrb r0, [r0] + movs r1, #6 + movs r2, #1 + bl sub_08001B70 + ldr r0, [r4] + adds r0, #0x80 + ldrb r0, [r0] + movs r1, #4 + movs r2, #1 + bl sub_08001B70 +_0812300E: + ldr r1, [r4] + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08123018: + movs r0, #0 + b _0812302E + .align 2, 0 +_0812301C: .4byte gUnknown_2039E10 +_08123020: + ldr r0, _08123038 + ldr r1, [r0] + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #1 +_0812302E: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08123038: .4byte gUnknown_2039E10 + thumb_func_end sub_08122DBC + + thumb_func_start sub_0812303C +sub_0812303C: @ 0x0812303C + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #0xe0 + lsls r0, r0, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A22E8 + ldr r0, _08123060 + ldr r1, _08123064 + movs r2, #0x30 + bl CpuSet + pop {r0} + bx r0 + .align 2, 0 +_08123060: .4byte gUnknown_2037894 +_08123064: .4byte gUnknown_2037494 + thumb_func_end sub_0812303C + + thumb_func_start sub_08123068 +sub_08123068: @ 0x08123068 + push {r4, lr} + ldr r4, _081230B4 + ldr r0, [r4] + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _0812308C + bl sub_08006E00 + ldr r0, [r4] + adds r0, #0x58 + ldrh r0, [r0] + bl sub_08008280 + ldr r0, [r4] + adds r0, #0x5a + ldrh r0, [r0] + bl sub_08008564 +_0812308C: + ldr r0, [r4] + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _081230AC + bl sub_08006E00 + ldr r0, [r4] + adds r0, #0x70 + ldrh r0, [r0] + bl sub_08008280 + ldr r0, [r4] + adds r0, #0x72 + ldrh r0, [r0] + bl sub_08008564 +_081230AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081230B4: .4byte gUnknown_2039E10 + thumb_func_end sub_08123068 + + thumb_func_start sub_081230B8 +sub_081230B8: @ 0x081230B8 + push {lr} + ldr r0, _081230CC + ldr r0, [r0] + ldr r0, [r0, #0x18] + bl _call_via_r0 + thumb_func_end sub_081230B8 + + thumb_func_start sub_081230C4 +sub_081230C4: @ 0x081230C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081230CC: .4byte gUnknown_2039E10 + thumb_func_end sub_081230C4 + + thumb_func_start sub_081230D0 +sub_081230D0: @ 0x081230D0 + push {r4, lr} + movs r4, #0 + ldr r2, _0812316C + ldr r0, [r2] + adds r0, #0x7b + strb r4, [r0] + ldr r0, [r2] + adds r0, #0x7c + strb r4, [r0] + ldr r3, _08123170 + ldrh r1, [r3, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08123102 + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x56 + ldrh r0, [r0] + cmp r0, #2 + bls _08123102 + adds r1, #0x7c + movs r0, #0xff + strb r0, [r1] + movs r4, #1 +_08123102: + ldrh r1, [r3, #0x2c] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08123120 + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x56 + ldrh r0, [r0] + cmp r0, #0xf + bhi _08123120 + adds r1, #0x7c + movs r0, #1 + strb r0, [r1] + movs r4, #1 +_08123120: + ldrh r1, [r3, #0x2c] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812313E + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x54 + ldrh r0, [r0] + cmp r0, #1 + bls _0812313E + adds r1, #0x7b + movs r0, #0xff + strb r0, [r1] + movs r4, #1 +_0812313E: + ldrh r1, [r3, #0x2c] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0812315C + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0x54 + ldrh r0, [r0] + cmp r0, #0x1b + bhi _0812315C + adds r1, #0x7b + movs r0, #1 + strb r0, [r1] + movs r4, #1 +_0812315C: + ldrh r3, [r3, #0x2e] + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _08123174 + movs r4, #4 + b _0812317E + .align 2, 0 +_0812316C: .4byte gUnknown_2039E10 +_08123170: .4byte gUnknown_3002360 +_08123174: + movs r0, #2 + ands r0, r3 + cmp r0, #0 + beq _0812317E + movs r4, #5 +_0812317E: + cmp r4, #1 + bne _08123190 + ldr r0, [r2] + adds r0, #0x7a + movs r1, #4 + strb r1, [r0] + ldr r1, [r2] + ldr r0, _08123198 + str r0, [r1, #0x18] +_08123190: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08123198: .4byte sub_0812319C + thumb_func_end sub_081230D0 + + thumb_func_start sub_0812319C +sub_0812319C: @ 0x0812319C + push {r4, r5, lr} + ldr r5, _081231B4 + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x7a + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _081231B8 + movs r0, #2 + b _08123254 + .align 2, 0 +_081231B4: .4byte gUnknown_2039E10 +_081231B8: + adds r0, r1, #0 + adds r0, #0x7b + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _081231CE + adds r1, #0x54 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_081231CE: + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x7b + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _081231E6 + adds r1, #0x54 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_081231E6: + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _081231FE + adds r1, #0x56 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_081231FE: + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _08123216 + adds r1, #0x56 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_08123216: + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x54 + ldrh r0, [r0] + adds r1, #0x56 + ldrh r1, [r1] + bl sub_08123878 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_08123D64 + ldr r1, [r5] + strb r0, [r1, #2] + ldr r1, [r5] + ldrh r0, [r1] + cmp r4, r0 + beq _08123248 + strh r4, [r1] + adds r0, r1, #4 + ldrh r1, [r1] + movs r2, #0xa + bl sub_08124578 +_08123248: + bl sub_08123FBC + ldr r1, [r5] + ldr r0, _0812325C + str r0, [r1, #0x18] + movs r0, #3 +_08123254: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0812325C: .4byte sub_081230D0 + thumb_func_end sub_0812319C + + thumb_func_start sub_08123260 +sub_08123260: @ 0x08123260 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r3, _08123330 + ldr r0, [r3] + mov ip, r0 + adds r0, #0x6a + strh r4, [r0] + mov r5, ip + adds r5, #0x68 + strh r4, [r5] + ldr r2, _08123334 + ldrh r1, [r2, #0x2c] + movs r0, #0x40 + ands r0, r1 + adds r6, r3, #0 + adds r3, r2, #0 + cmp r0, #0 + beq _0812329A + mov r0, ip + adds r0, #0x5e + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0x34 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0812329A + ldr r0, _08123338 + strh r0, [r5] + movs r4, #1 +_0812329A: + ldrh r1, [r3, #0x2c] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081232BA + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x5e + movs r5, #0 + ldrsh r0, [r0, r5] + cmp r0, #0x3b + bgt _081232BA + adds r1, #0x68 + movs r0, #1 + strh r0, [r1] + movs r4, #1 +_081232BA: + ldrh r1, [r3, #0x2c] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081232E0 + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x5c + movs r5, #0 + ldrsh r1, [r0, r5] + movs r0, #0x2c + rsbs r0, r0, #0 + cmp r1, r0 + ble _081232E0 + adds r1, r2, #0 + adds r1, #0x6a + ldr r0, _08123338 + strh r0, [r1] + movs r4, #1 +_081232E0: + ldrh r1, [r3, #0x2c] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08123300 + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x5c + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0xab + bgt _08123300 + adds r1, #0x6a + movs r0, #1 + strh r0, [r1] + movs r4, #1 +_08123300: + ldrh r2, [r3, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0812330C + movs r4, #4 +_0812330C: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _08123316 + movs r4, #5 +_08123316: + cmp r4, #1 + bne _08123326 + ldr r0, [r6] + ldr r1, _0812333C + str r1, [r0, #0x18] + adds r0, #0x6c + movs r1, #0 + strh r1, [r0] +_08123326: + adds r0, r4, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08123330: .4byte gUnknown_2039E10 +_08123334: .4byte gUnknown_3002360 +_08123338: .4byte 0x0000FFFF +_0812333C: .4byte sub_08123340 + thumb_func_end sub_08123260 + + thumb_func_start sub_08123340 +sub_08123340: @ 0x08123340 + push {r4, r5, lr} + ldr r5, _08123414 + ldr r2, [r5] + adds r3, r2, #0 + adds r3, #0x5e + adds r0, r2, #0 + adds r0, #0x68 + ldrh r0, [r0] + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + adds r1, r2, #0 + adds r1, #0x5c + adds r0, r2, #0 + adds r0, #0x6a + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + movs r4, #0 + ldrsh r0, [r1, r4] + movs r2, #0 + ldrsh r1, [r3, r2] + bl sub_08123798 + ldr r2, [r5] + adds r1, r2, #0 + adds r1, #0x6c + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bne _0812341C + adds r0, r2, #0 + adds r0, #0x5c + movs r3, #0 + ldrsh r1, [r0, r3] + adds r0, r1, #0 + adds r0, #0x2c + cmp r0, #0 + bge _08123398 + adds r0, #7 +_08123398: + asrs r0, r0, #3 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r2, #0 + adds r0, #0x5e + movs r4, #0 + ldrsh r1, [r0, r4] + adds r0, r1, #0 + adds r0, #0x34 + cmp r0, #0 + bge _081233B2 + adds r0, #7 +_081233B2: + asrs r0, r0, #3 + adds r0, #2 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r4, r2, #0 + adds r4, #0x64 + adds r0, r2, #0 + adds r0, #0x66 + ldrh r2, [r4] + cmp r3, r2 + bne _081233CE + ldrh r2, [r0] + cmp r1, r2 + beq _081233FE +_081233CE: + strh r3, [r4] + strh r1, [r0] + adds r0, r3, #0 + bl sub_08123878 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_08123D64 + ldr r1, [r5] + strb r0, [r1, #2] + ldr r1, [r5] + ldrh r3, [r1] + cmp r4, r3 + beq _081233FA + strh r4, [r1] + adds r0, r1, #4 + ldrh r1, [r1] + movs r2, #0xa + bl sub_08124578 +_081233FA: + bl sub_08123FBC +_081233FE: + ldr r0, _08123414 + ldr r2, [r0] + adds r1, r2, #0 + adds r1, #0x6c + movs r0, #0 + strh r0, [r1] + ldr r0, _08123418 + str r0, [r2, #0x18] + movs r0, #3 + b _0812341E + .align 2, 0 +_08123414: .4byte gUnknown_2039E10 +_08123418: .4byte sub_08123260 +_0812341C: + movs r0, #2 +_0812341E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08123340 + + thumb_func_start sub_08123424 +sub_08123424: @ 0x08123424 + push {r4, r5, r6, lr} + ldr r1, _081234A0 + ldr r2, [r1] + adds r0, r2, #0 + adds r0, #0x78 + ldrb r3, [r0] + adds r5, r1, #0 + cmp r3, #0 + bne _081234A8 + subs r0, #0x1a + strh r3, [r0] + subs r0, #2 + strh r3, [r0] + str r3, [r2, #0x40] + str r3, [r2, #0x3c] + adds r4, r2, #0 + adds r4, #0x54 + ldrh r0, [r4] + lsls r0, r0, #3 + subs r0, #0x34 + adds r1, r2, #0 + adds r1, #0x60 + strh r0, [r1] + movs r0, #0x56 + adds r0, r0, r2 + mov ip, r0 + ldrh r0, [r0] + lsls r0, r0, #3 + subs r0, #0x44 + adds r3, r2, #0 + adds r3, #0x62 + strh r0, [r3] + movs r6, #0 + ldrsh r0, [r1, r6] + lsls r0, r0, #8 + cmp r0, #0 + bge _08123470 + adds r0, #0xf +_08123470: + asrs r0, r0, #4 + str r0, [r2, #0x44] + movs r1, #0 + ldrsh r0, [r3, r1] + lsls r0, r0, #8 + cmp r0, #0 + bge _08123480 + adds r0, #0xf +_08123480: + asrs r0, r0, #4 + str r0, [r2, #0x48] + ldrh r1, [r4] + adds r0, r2, #0 + adds r0, #0x64 + strh r1, [r0] + mov r3, ip + ldrh r0, [r3] + adds r1, r2, #0 + adds r1, #0x66 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r2, #0x4c] + ldr r0, _081234A4 + b _08123506 + .align 2, 0 +_081234A0: .4byte gUnknown_2039E10 +_081234A4: .4byte 0xFFFFF800 +_081234A8: + adds r0, r2, #0 + adds r0, #0x5c + movs r6, #0 + ldrsh r0, [r0, r6] + lsls r0, r0, #8 + str r0, [r2, #0x3c] + adds r0, r2, #0 + adds r0, #0x5e + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r0, r0, #8 + str r0, [r2, #0x40] + adds r0, r2, #0 + adds r0, #0x60 + movs r1, #0 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + ldr r0, [r2, #0x3c] + cmp r0, #0 + bge _081234D4 + adds r0, #0xf +_081234D4: + asrs r0, r0, #4 + rsbs r0, r0, #0 + str r0, [r2, #0x44] + ldr r0, [r2, #0x40] + cmp r0, #0 + bge _081234E2 + adds r0, #0xf +_081234E2: + asrs r0, r0, #4 + rsbs r0, r0, #0 + str r0, [r2, #0x48] + adds r0, r2, #0 + adds r0, #0x64 + ldrh r1, [r0] + subs r0, #0x10 + strh r1, [r0] + adds r0, #0x12 + ldrh r0, [r0] + adds r1, r2, #0 + adds r1, #0x56 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r2, #0x4c] + movs r0, #0x80 + lsls r0, r0, #4 +_08123506: + str r0, [r2, #0x50] + ldr r0, [r5] + adds r0, #0x6e + movs r1, #0 + strh r1, [r0] + bl sub_08124244 + bl sub_081243BC + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08123424 + + thumb_func_start sub_08123520 +sub_08123520: @ 0x08123520 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r0, _08123538 + ldr r3, [r0] + adds r2, r3, #0 + adds r2, #0x6e + ldrh r1, [r2] + adds r5, r0, #0 + cmp r1, #0xf + bls _0812353C + movs r0, #0 + b _081236C4 + .align 2, 0 +_08123538: .4byte gUnknown_2039E10 +_0812353C: + adds r0, r1, #1 + movs r1, #0 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x10 + bne _081235B0 + str r1, [r3, #0x44] + str r1, [r3, #0x48] + adds r0, r3, #0 + adds r0, #0x60 + ldrh r1, [r0] + subs r0, #4 + strh r1, [r0] + adds r0, #6 + ldrh r0, [r0] + adds r1, r3, #0 + adds r1, #0x5e + strh r0, [r1] + adds r1, #0x1a + ldrb r0, [r1] + movs r2, #0x80 + lsls r2, r2, #9 + cmp r0, #0 + bne _08123572 + movs r2, #0x80 + lsls r2, r2, #8 +_08123572: + str r2, [r3, #0x4c] + movs r2, #0 + ldrb r0, [r1] + cmp r0, #0 + bne _0812357E + movs r2, #1 +_0812357E: + strb r2, [r1] + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x78 + ldrb r0, [r0] + ldr r2, _081235A8 + cmp r0, #0 + bne _08123590 + ldr r2, _081235AC +_08123590: + str r2, [r1, #0x18] + adds r0, r1, #0 + adds r0, #0x58 + ldrh r0, [r0] + adds r1, #0x5a + ldrh r1, [r1] + bl sub_081240E0 + bl sub_081243E8 + movs r4, #0 + b _08123692 + .align 2, 0 +_081235A8: .4byte sub_08123260 +_081235AC: .4byte sub_081230D0 +_081235B0: + ldr r2, [r3, #0x3c] + ldr r0, [r3, #0x44] + adds r2, r2, r0 + str r2, [r3, #0x3c] + ldr r0, [r3, #0x40] + ldr r1, [r3, #0x48] + adds r0, r0, r1 + str r0, [r3, #0x40] + asrs r2, r2, #8 + adds r4, r3, #0 + adds r4, #0x5c + strh r2, [r4] + ldr r0, [r3, #0x40] + asrs r0, r0, #8 + adds r1, r3, #0 + adds r1, #0x5e + strh r0, [r1] + ldr r0, [r3, #0x4c] + ldr r1, [r3, #0x50] + adds r0, r0, r1 + str r0, [r3, #0x4c] + ldr r2, [r3, #0x44] + cmp r2, #0 + bge _081235F0 + adds r0, r3, #0 + adds r0, #0x60 + movs r6, #0 + ldrsh r1, [r4, r6] + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r1, r0 + blt _08123604 +_081235F0: + cmp r2, #0 + ble _08123614 + adds r0, r3, #0 + adds r0, #0x60 + movs r2, #0 + ldrsh r1, [r4, r2] + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r1, r0 + ble _08123614 +_08123604: + ldr r3, [r5] + adds r0, r3, #0 + adds r0, #0x60 + ldrh r2, [r0] + subs r0, #4 + movs r1, #0 + strh r2, [r0] + str r1, [r3, #0x44] +_08123614: + ldr r2, [r5] + ldr r4, [r2, #0x48] + cmp r4, #0 + bge _08123630 + adds r0, r2, #0 + adds r0, #0x5e + adds r3, r2, #0 + adds r3, #0x62 + movs r6, #0 + ldrsh r1, [r0, r6] + movs r6, #0 + ldrsh r0, [r3, r6] + cmp r1, r0 + blt _08123648 +_08123630: + cmp r4, #0 + ble _0812365A + adds r1, r2, #0 + adds r1, #0x5e + adds r0, r2, #0 + adds r0, #0x62 + movs r2, #0 + ldrsh r1, [r1, r2] + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r1, r0 + ble _0812365A +_08123648: + ldr r2, [r5] + adds r0, r2, #0 + adds r0, #0x62 + ldrh r1, [r0] + adds r3, r2, #0 + adds r3, #0x5e + movs r0, #0 + strh r1, [r3] + str r0, [r2, #0x48] +_0812365A: + ldr r0, _08123678 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x78 + ldrb r3, [r0] + cmp r3, #0 + bne _08123680 + ldr r1, [r2, #0x4c] + ldr r0, _0812367C + cmp r1, r0 + bgt _08123690 + adds r0, #1 + str r0, [r2, #0x4c] + str r3, [r2, #0x50] + b _08123690 + .align 2, 0 +_08123678: .4byte gUnknown_2039E10 +_0812367C: .4byte 0x00007FFF +_08123680: + ldr r0, [r2, #0x4c] + movs r1, #0x80 + lsls r1, r1, #9 + cmp r0, r1 + ble _08123690 + str r1, [r2, #0x4c] + movs r0, #0 + str r0, [r2, #0x50] +_08123690: + movs r4, #1 +_08123692: + ldr r0, _081236CC + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x5c + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r3, #0 + adds r1, #0x5e + movs r2, #0 + ldrsh r1, [r1, r2] + ldr r2, [r3, #0x4c] + lsls r2, r2, #8 + lsrs r2, r2, #0x10 + str r2, [sp] + ldr r2, [r3, #0x4c] + lsls r2, r2, #8 + lsrs r2, r2, #0x10 + str r2, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + movs r2, #0x38 + movs r3, #0x48 + bl sub_081236D0 + adds r0, r4, #0 +_081236C4: + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081236CC: .4byte gUnknown_2039E10 + thumb_func_end sub_08123520 + + thumb_func_start sub_081236D0 +sub_081236D0: @ 0x081236D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + ldr r7, [sp, #0x28] + ldr r5, [sp, #0x2c] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r8, r4 + lsls r7, r7, #0x10 + adds r4, r7, #0 + lsrs r4, r4, #0x10 + mov sb, r4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _08123790 + ldr r6, [r4] + ldr r7, _08123794 + mov ip, r7 + adds r4, r5, #0 + adds r4, #0x40 + lsls r4, r4, #1 + add r4, ip + movs r7, #0 + ldrsh r4, [r4, r7] + str r4, [sp] + mov r7, r8 + muls r7, r4, r7 + adds r4, r7, #0 + asrs r4, r4, #8 + mov sl, r4 + str r4, [r6, #0x2c] + lsls r5, r5, #1 + add r5, ip + movs r7, #0 + ldrsh r5, [r5, r7] + rsbs r4, r5, #0 + mov r7, r8 + muls r7, r4, r7 + adds r4, r7, #0 + asrs r4, r4, #8 + mov ip, r4 + str r4, [r6, #0x30] + mov r7, sb + muls r7, r5, r7 + adds r5, r7, #0 + asrs r5, r5, #8 + str r5, [r6, #0x34] + ldr r7, [sp] + mov r4, sb + muls r4, r7, r4 + asrs r4, r4, #8 + mov r8, r4 + str r4, [r6, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r4, r2, #8 + adds r0, r0, r4 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + adds r4, r3, #0 + muls r4, r5, r4 + mov r5, sl + muls r5, r2, r5 + adds r4, r4, r5 + subs r0, r0, r4 + str r0, [r6, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #8 + lsls r0, r3, #8 + adds r1, r1, r0 + mov r0, r8 + muls r0, r3, r0 + mov r3, ip + muls r3, r2, r3 + adds r2, r3, #0 + adds r0, r0, r2 + subs r1, r1, r0 + str r1, [r6, #0x28] + adds r6, #0x7d + movs r0, #1 + strb r0, [r6] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08123790: .4byte gUnknown_2039E10 +_08123794: .4byte gUnknown_82FA8CC + thumb_func_end sub_081236D0 + + thumb_func_start sub_08123798 +sub_08123798: @ 0x08123798 + ldr r2, _081237BC + ldr r2, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + movs r3, #0xe0 + lsls r3, r3, #5 + adds r0, r0, r3 + str r0, [r2, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #8 + movs r0, #0x90 + lsls r0, r0, #6 + adds r1, r1, r0 + str r1, [r2, #0x28] + adds r2, #0x7d + movs r0, #1 + strb r0, [r2] + bx lr + .align 2, 0 +_081237BC: .4byte gUnknown_2039E10 + thumb_func_end sub_08123798 + + thumb_func_start sub_081237C0 +sub_081237C0: @ 0x081237C0 + push {r4, lr} + ldr r4, _0812382C + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + beq _08123826 + ldrh r1, [r1, #0x2c] + movs r0, #0x20 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x34] + movs r0, #0x22 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x30] + movs r0, #0x24 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x38] + movs r0, #0x26 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x24] + movs r0, #0x28 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x26] + movs r0, #0x2a + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x28] + movs r0, #0x2c + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x2a] + movs r0, #0x2e + bl sub_08001144 + ldr r0, [r4] + adds r0, #0x7d + movs r1, #0 + strb r1, [r0] +_08123826: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812382C: .4byte gUnknown_2039E10 + thumb_func_end sub_081237C0 + + thumb_func_start sub_08123830 +sub_08123830: @ 0x08123830 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r5, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x38 + movs r3, #0x48 + bl sub_081236D0 + bl sub_081237C0 + ldr r0, _08123874 + ldr r2, [r0] + ldr r1, [r2, #0x20] + cmp r1, #0 + beq _0812386C + rsbs r0, r4, #0 + strh r0, [r1, #0x24] + ldr r1, [r2, #0x20] + rsbs r0, r5, #0 + strh r0, [r1, #0x26] +_0812386C: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08123874: .4byte gUnknown_2039E10 + thumb_func_end sub_08123830 + + thumb_func_start sub_08123878 +sub_08123878: @ 0x08123878 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + ldr r0, _08123898 + adds r1, r1, r0 + lsrs r2, r1, #0x10 + cmp r2, #0xe + bhi _08123892 + cmp r3, #0 + beq _08123892 + cmp r3, #0x1c + bls _0812389C +_08123892: + movs r0, #0xd5 + b _081238B0 + .align 2, 0 +_08123898: .4byte 0xFFFE0000 +_0812389C: + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r1, _081238B4 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r3, r0 + adds r0, r0, r1 + ldrb r0, [r0] +_081238B0: + pop {r1} + bx r1 + .align 2, 0 +_081238B4: .4byte gUnknown_857C53C + thumb_func_end sub_08123878 + + thumb_func_start sub_081238B8 +sub_081238B8: @ 0x081238B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r0, _081238E4 + ldr r2, [r0] + movs r1, #4 + ldrsb r1, [r2, r1] + adds r3, r0, #0 + cmp r1, #0x19 + bne _081238E8 + ldrb r0, [r2, #5] + subs r0, #0x29 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _081238E8 + bl sub_08123C0C + b _08123BF8 + .align 2, 0 +_081238E4: .4byte gUnknown_3005AEC +_081238E8: + ldr r1, [r3] + movs r0, #4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080854DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + cmp r0, #8 + bhi _08123934 + lsls r0, r0, #2 + ldr r1, _0812390C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812390C: .4byte _08123910 +_08123910: @ jump table + .4byte _08123934 @ case 0 + .4byte _08123934 @ case 1 + .4byte _08123934 @ case 2 + .4byte _08123978 @ case 3 + .4byte _08123934 @ case 4 + .4byte _08123934 @ case 5 + .4byte _08123978 @ case 6 + .4byte _08123A34 @ case 7 + .4byte _081239F0 @ case 8 +_08123934: + ldr r4, _0812396C + ldr r0, [r4] + ldr r3, _08123970 + ldrb r1, [r3, #0x14] + movs r2, #0 + strh r1, [r0] + adds r0, #0x7f + strb r2, [r0] + ldr r0, [r3] + ldrh r2, [r0] + ldrh r0, [r0, #4] + mov sb, r0 + ldr r0, _08123974 + ldr r0, [r0] + ldrh r6, [r0] + ldrh r3, [r0, #2] + ldr r1, [r4] + ldrh r0, [r1] + cmp r0, #0x45 + beq _08123962 + cmp r0, #0xcc + beq _08123962 + b _08123ACA +_08123962: + adds r1, #0x7f + movs r0, #1 + strb r0, [r1] + b _08123ACA + .align 2, 0 +_0812396C: .4byte gUnknown_2039E10 +_08123970: .4byte gUnknown_2036FB8 +_08123974: .4byte gUnknown_3005AEC +_08123978: + ldr r2, _081239C8 + ldrb r1, [r2, #0x1a] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081239D4 + ldr r4, _081239CC + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, #0x25 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r5, r0, #0 + ldr r0, _081239D0 + ldr r0, [r0] + ldrb r1, [r5, #0x14] + strh r1, [r0] + adds r0, #0x7f + movs r1, #1 + strb r1, [r0] + ldr r0, [r5] + ldrh r2, [r0] + ldrh r0, [r0, #4] + mov sb, r0 + ldr r0, [r4] + ldrh r6, [r0, #0x28] + ldrh r3, [r0, #0x2a] + b _08123ACA + .align 2, 0 +_081239C8: .4byte gUnknown_2036FB8 +_081239CC: .4byte gUnknown_3005AEC +_081239D0: .4byte gUnknown_2039E10 +_081239D4: + ldr r0, _081239EC + ldr r0, [r0] + ldrb r1, [r2, #0x14] + strh r1, [r0] + adds r0, #0x7f + movs r1, #1 + strb r1, [r0] + movs r2, #1 + mov sb, r2 + movs r6, #1 + movs r3, #1 + b _08123ACA + .align 2, 0 +_081239EC: .4byte gUnknown_2039E10 +_081239F0: + ldr r4, _08123A2C + ldr r1, [r4] + movs r0, #0x14 + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x15] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r5, r0, #0 + ldr r0, _08123A30 + ldr r0, [r0] + ldrb r1, [r5, #0x14] + strh r1, [r0] + adds r0, #0x7f + movs r1, #1 + strb r1, [r0] + ldr r0, [r5] + ldrh r2, [r0] + ldrh r0, [r0, #4] + mov sb, r0 + ldr r0, [r4] + ldrh r6, [r0, #0x18] + ldrh r3, [r0, #0x1a] + b _08123ACA + .align 2, 0 +_08123A2C: .4byte gUnknown_3005AEC +_08123A30: .4byte gUnknown_2039E10 +_08123A34: + ldr r4, _08123A64 + ldr r0, [r4] + ldr r1, _08123A68 + ldrb r1, [r1, #0x14] + strh r1, [r0] + cmp r1, #0x57 + beq _08123A70 + ldr r0, _08123A6C + ldr r0, [r0] + adds r7, r0, #0 + adds r7, #0x24 + movs r0, #0 + ldrsb r0, [r7, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ldrsb r1, [r7, r1] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r5, r0, #0 + b _08123A96 + .align 2, 0 +_08123A64: .4byte gUnknown_2039E10 +_08123A68: .4byte gUnknown_2036FB8 +_08123A6C: .4byte gUnknown_3005AEC +_08123A70: + ldr r0, _08123AB0 + ldr r0, [r0] + adds r7, r0, #0 + adds r7, #0x14 + ldrb r0, [r0, #0x14] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ldrsb r1, [r7, r1] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r5, r0, #0 + ldr r1, [r4] + ldrb r0, [r5, #0x14] + strh r0, [r1] +_08123A96: + ldr r4, _08123AB4 + ldr r0, [r4] + ldrb r0, [r0] + bl sub_08123F80 + adds r1, r0, #0 + cmp r1, #0 + beq _08123AB8 + ldr r0, [r4] + adds r0, #0x7f + movs r1, #1 + b _08123ABC + .align 2, 0 +_08123AB0: .4byte gUnknown_3005AEC +_08123AB4: .4byte gUnknown_2039E10 +_08123AB8: + ldr r0, [r4] + adds r0, #0x7f +_08123ABC: + strb r1, [r0] + ldr r0, [r5] + ldrh r2, [r0] + ldrh r0, [r0, #4] + mov sb, r0 + ldrh r6, [r7, #4] + ldrh r3, [r7, #6] +_08123ACA: + str r6, [sp] + ldr r5, _08123B50 + ldr r4, _08123B54 + ldr r0, [r4] + mov sl, r0 + ldrh r7, [r0] + lsls r0, r7, #3 + adds r0, r0, r5 + str r0, [sp, #4] + ldrb r0, [r0, #2] + mov r8, r0 + adds r0, r2, #0 + mov r1, r8 + str r3, [sp, #8] + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r3, [sp, #8] + cmp r1, #0 + bne _08123AF6 + movs r1, #1 +_08123AF6: + adds r0, r6, #0 + str r3, [sp, #8] + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r3, [sp, #8] + cmp r6, r8 + blo _08123B10 + mov r0, r8 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_08123B10: + ldr r2, [sp, #4] + ldrb r4, [r2, #3] + mov r0, sb + adds r1, r4, #0 + str r3, [sp, #8] + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r3, [sp, #8] + cmp r1, #0 + bne _08123B2A + movs r1, #1 +_08123B2A: + adds r0, r3, #0 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blo _08123B3E + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_08123B3E: + cmp r7, #0x29 + beq _08123B6A + cmp r7, #0x29 + bgt _08123B58 + cmp r7, #0x1d + beq _08123B62 + cmp r7, #0x24 + beq _08123BA0 + b _08123BD2 + .align 2, 0 +_08123B50: .4byte gUnknown_857CD6C +_08123B54: .4byte gUnknown_2039E10 +_08123B58: + cmp r7, #0x33 + beq _08123B6A + cmp r7, #0xcc + beq _08123BC4 + b _08123BD2 +_08123B62: + cmp r3, #0 + beq _08123BD2 + movs r6, #0 + b _08123BD2 +_08123B6A: + movs r6, #0 + ldr r0, _08123B9C + ldr r1, [r0] + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0x20 + ble _08123B7A + movs r6, #1 +_08123B7A: + cmp r0, #0x33 + ble _08123B84 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_08123B84: + movs r3, #0 + movs r2, #2 + ldrsh r0, [r1, r2] + cmp r0, #0x25 + ble _08123B90 + movs r3, #1 +_08123B90: + cmp r0, #0x38 + ble _08123BD2 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + b _08123BD2 + .align 2, 0 +_08123B9C: .4byte gUnknown_3005AEC +_08123BA0: + movs r6, #0 + ldr r0, [sp] + cmp r0, #0xe + bls _08123BAA + movs r6, #1 +_08123BAA: + ldr r2, [sp] + cmp r2, #0x1c + bls _08123BB6 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_08123BB6: + ldr r0, [sp] + cmp r0, #0x36 + bls _08123BD2 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _08123BD2 +_08123BC4: + mov r0, sl + adds r0, #0x54 + mov r1, sl + adds r1, #0x56 + bl sub_08123F3C + b _08123BF8 +_08123BD2: + ldr r0, _08123C08 + ldr r2, [r0] + ldrh r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0] + adds r0, r6, r0 + adds r0, #1 + adds r1, r2, #0 + adds r1, #0x54 + strh r0, [r1] + ldrh r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #1] + adds r0, r3, r0 + adds r0, #2 + adds r2, #0x56 + strh r0, [r2] +_08123BF8: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08123C08: .4byte gUnknown_2039E10 + thumb_func_end sub_081238B8 + + thumb_func_start sub_08123C0C +sub_08123C0C: @ 0x08123C0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r7, #0 + movs r0, #0 + mov r8, r0 + mov r4, sp + adds r4, #1 + mov r5, sp + adds r5, #2 + add r6, sp, #4 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0813806C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r5 + cmp r0, #4 + bhi _08123CA0 + lsls r0, r0, #2 + ldr r1, _08123C48 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08123C48: .4byte _08123C4C +_08123C4C: @ jump table + .4byte _08123CA0 @ case 0 + .4byte _08123C60 @ case 1 + .4byte _08123C70 @ case 2 + .4byte _08123C80 @ case 3 + .4byte _08123C90 @ case 4 +_08123C60: + ldr r2, _08123C6C + ldr r1, [r2] + movs r0, #8 + strh r0, [r1] + b _08123D1C + .align 2, 0 +_08123C6C: .4byte gUnknown_2039E10 +_08123C70: + ldr r2, _08123C7C + ldr r1, [r2] + movs r0, #0xc + strh r0, [r1] + b _08123D1C + .align 2, 0 +_08123C7C: .4byte gUnknown_2039E10 +_08123C80: + ldr r2, _08123C8C + ldr r1, [r2] + movs r0, #0x27 + strh r0, [r1] + b _08123D1C + .align 2, 0 +_08123C8C: .4byte gUnknown_2039E10 +_08123C90: + ldr r2, _08123C9C + ldr r1, [r2] + movs r0, #0x2e + strh r0, [r1] + b _08123D1C + .align 2, 0 +_08123C9C: .4byte gUnknown_2039E10 +_08123CA0: + mov r0, sp + ldrb r0, [r0] + ldrb r1, [r4] + bl sub_080843F8 + ldr r1, _08123D5C + mov sb, r1 + ldr r2, [r1] + ldrb r1, [r0, #0x14] + strh r1, [r2] + ldr r6, [r0] + ldr r1, _08123D60 + ldrh r0, [r2] + lsls r0, r0, #3 + adds r5, r0, r1 + ldrb r4, [r5, #2] + ldr r0, [r6] + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08123CD2 + movs r1, #1 +_08123CD2: + mov r2, sl + movs r3, #0 + ldrsh r0, [r2, r3] + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r8, r4 + blo _08123CEE + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_08123CEE: + ldrb r4, [r5, #3] + ldr r0, [r6, #4] + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _08123D02 + movs r1, #1 +_08123D02: + mov r2, sp + movs r3, #4 + ldrsh r0, [r2, r3] + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r2, sb + cmp r7, r4 + blo _08123D1C + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_08123D1C: + ldr r0, [r2] + adds r0, #0x7f + movs r1, #0 + strb r1, [r0] + ldr r2, [r2] + ldr r3, _08123D60 + ldrh r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0] + add r0, r8 + adds r0, #1 + adds r1, r2, #0 + adds r1, #0x54 + strh r0, [r1] + ldrh r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0, #1] + adds r0, r7, r0 + adds r0, #2 + adds r2, #0x56 + strh r0, [r2] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08123D5C: .4byte gUnknown_2039E10 +_08123D60: .4byte gUnknown_857CD6C + thumb_func_end sub_08123C0C + + thumb_func_start sub_08123D64 +sub_08123D64: @ 0x08123D64 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, #0 + cmp r0, #9 + beq _08123E24 + cmp r0, #9 + bgt _08123DA6 + cmp r0, #4 + beq _08123DFC + cmp r0, #4 + bgt _08123D94 + cmp r0, #1 + beq _08123DE4 + cmp r0, #1 + bgt _08123D8A + cmp r0, #0 + beq _08123DDC + b _08123EA0 +_08123D8A: + cmp r0, #2 + beq _08123DEA + cmp r0, #3 + beq _08123DF4 + b _08123EA0 +_08123D94: + cmp r0, #6 + beq _08123E0C + cmp r0, #6 + blt _08123E04 + cmp r0, #7 + beq _08123E14 + cmp r0, #8 + beq _08123E1C + b _08123EA0 +_08123DA6: + cmp r0, #0xe + beq _08123E4C + cmp r0, #0xe + bgt _08123DC0 + cmp r0, #0xb + beq _08123E34 + cmp r0, #0xb + blt _08123E2C + cmp r0, #0xc + beq _08123E3C + cmp r0, #0xd + beq _08123E44 + b _08123EA0 +_08123DC0: + cmp r0, #0x3a + beq _08123E6C + cmp r0, #0x3a + bgt _08123DCE + cmp r0, #0xf + beq _08123E54 + b _08123EA0 +_08123DCE: + cmp r1, #0x49 + beq _08123E88 + cmp r1, #0xd5 + beq _08123DD8 + b _08123EA0 +_08123DD8: + movs r0, #0 + b _08123EA2 +_08123DDC: + ldr r0, _08123DE0 + b _08123E56 + .align 2, 0 +_08123DE0: .4byte 0x0000086F +_08123DE4: + movs r0, #0x87 + lsls r0, r0, #4 + b _08123E56 +_08123DEA: + ldr r0, _08123DF0 + b _08123E56 + .align 2, 0 +_08123DF0: .4byte 0x00000871 +_08123DF4: + ldr r0, _08123DF8 + b _08123E56 + .align 2, 0 +_08123DF8: .4byte 0x00000872 +_08123DFC: + ldr r0, _08123E00 + b _08123E56 + .align 2, 0 +_08123E00: .4byte 0x00000873 +_08123E04: + ldr r0, _08123E08 + b _08123E56 + .align 2, 0 +_08123E08: .4byte 0x00000874 +_08123E0C: + ldr r0, _08123E10 + b _08123E56 + .align 2, 0 +_08123E10: .4byte 0x00000875 +_08123E14: + ldr r0, _08123E18 + b _08123E56 + .align 2, 0 +_08123E18: .4byte 0x00000876 +_08123E1C: + ldr r0, _08123E20 + b _08123E56 + .align 2, 0 +_08123E20: .4byte 0x00000877 +_08123E24: + ldr r0, _08123E28 + b _08123E56 + .align 2, 0 +_08123E28: .4byte 0x00000878 +_08123E2C: + ldr r0, _08123E30 + b _08123E56 + .align 2, 0 +_08123E30: .4byte 0x00000879 +_08123E34: + ldr r0, _08123E38 + b _08123E56 + .align 2, 0 +_08123E38: .4byte 0x0000087A +_08123E3C: + ldr r0, _08123E40 + b _08123E56 + .align 2, 0 +_08123E40: .4byte 0x0000087B +_08123E44: + ldr r0, _08123E48 + b _08123E56 + .align 2, 0 +_08123E48: .4byte 0x0000087C +_08123E4C: + ldr r0, _08123E50 + b _08123E56 + .align 2, 0 +_08123E50: .4byte 0x0000087D +_08123E54: + ldr r0, _08123E68 +_08123E56: + bl sub_0809D068 + lsls r0, r0, #0x18 + movs r1, #3 + cmp r0, #0 + beq _08123E64 + movs r1, #2 +_08123E64: + adds r0, r1, #0 + b _08123EA2 + .align 2, 0 +_08123E68: .4byte 0x0000087E +_08123E6C: + ldr r0, _08123E84 + bl sub_0809D068 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r0, r0, #0x1f + movs r1, #4 + ands r0, r1 + b _08123EA2 + .align 2, 0 +_08123E84: .4byte 0x000008A8 +_08123E88: + ldr r0, _08123E9C + bl sub_0809D068 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + b _08123EA2 + .align 2, 0 +_08123E9C: .4byte 0x000008A9 +_08123EA0: + movs r0, #1 +_08123EA2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08123D64 + + thumb_func_start sub_08123EA8 +sub_08123EA8: @ 0x08123EA8 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08123878 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08123EA8 + + thumb_func_start sub_08123EC0 +sub_08123EC0: @ 0x08123EC0 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r1, _08123EDC +_08123ECA: + ldrh r0, [r1] + cmp r0, r3 + bne _08123EE0 + bl sub_08123F10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08123F0C + .align 2, 0 +_08123EDC: .4byte gUnknown_857D474 +_08123EE0: + adds r1, #2 + adds r2, #1 + cmp r2, #2 + bls _08123ECA + ldr r1, _08123EFC + ldrh r0, [r1] + cmp r0, #0xd5 + beq _08123F0A + adds r2, r1, #0 +_08123EF2: + ldrh r0, [r2] + cmp r0, r3 + bne _08123F00 + ldrh r0, [r1, #2] + b _08123F0C + .align 2, 0 +_08123EFC: .4byte gUnknown_857D414 +_08123F00: + adds r1, #4 + adds r2, #4 + ldrh r0, [r1] + cmp r0, #0xd5 + bne _08123EF2 +_08123F0A: + adds r0, r3, #0 +_08123F0C: + pop {r1} + bx r1 + thumb_func_end sub_08123EC0 + + thumb_func_start sub_08123F10 +sub_08123F10: @ 0x08123F10 + push {lr} + ldr r0, _08123F34 + bl sub_0809CF6C + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _08123F24 + movs r1, #0 +_08123F24: + ldr r0, _08123F38 + lsls r1, r1, #0x10 + asrs r1, r1, #0xf + adds r1, r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_08123F34: .4byte 0x00004037 +_08123F38: .4byte gUnknown_857D47A + thumb_func_end sub_08123F10 + + thumb_func_start sub_08123F3C +sub_08123F3C: @ 0x08123F3C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08123F74 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _08123F78 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + cmp r0, #7 + bls _08123F58 + movs r1, #9 +_08123F58: + subs r1, #9 + lsls r1, r1, #0x10 + ldr r0, _08123F7C + lsrs r1, r1, #0xe + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r4] + ldrh r0, [r1, #2] + adds r0, #2 + strh r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08123F74: .4byte 0x00004037 +_08123F78: .4byte 0xFFF70000 +_08123F7C: .4byte gUnknown_857D49C + thumb_func_end sub_08123F3C + + thumb_func_start sub_08123F80 +sub_08123F80: @ 0x08123F80 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _08123F98 +_08123F8A: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08123F9C + movs r0, #1 + b _08123FA4 + .align 2, 0 +_08123F98: .4byte gUnknown_857D4BC +_08123F9C: + adds r1, #1 + cmp r1, #0 + beq _08123F8A + movs r0, #0 +_08123FA4: + pop {r1} + bx r1 + thumb_func_end sub_08123F80 + + thumb_func_start sub_08123FA8 +sub_08123FA8: @ 0x08123FA8 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08123EC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08123FA8 + + thumb_func_start sub_08123FBC +sub_08123FBC: @ 0x08123FBC + push {r4, r5, r6, lr} + ldr r0, _08123FD0 + ldr r1, [r0] + ldrh r0, [r1] + cmp r0, #0xd5 + bne _08123FD4 + movs r0, #0 + strb r0, [r1, #3] + b _0812403A + .align 2, 0 +_08123FD0: .4byte gUnknown_2039E10 +_08123FD4: + adds r0, r1, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0 + bne _08123FE4 + adds r0, r1, #0 + adds r0, #0x54 + b _08123FE8 +_08123FE4: + adds r0, r1, #0 + adds r0, #0x64 +_08123FE8: + ldrh r4, [r0] + adds r0, #2 + ldrh r5, [r0] + movs r6, #0 + b _08124014 +_08123FF2: + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08123878 + ldr r1, _08124030 + ldr r1, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + bne _08124014 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_08124014: + cmp r4, #1 + bhi _08123FF2 + adds r0, r5, #0 + bl sub_08124044 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08124034 + subs r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0x1d + b _08124014 + .align 2, 0 +_08124030: .4byte gUnknown_2039E10 +_08124034: + ldr r0, _08124040 + ldr r0, [r0] + strb r6, [r0, #3] +_0812403A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08124040: .4byte gUnknown_2039E10 + thumb_func_end sub_08123FBC + + thumb_func_start sub_08124044 +sub_08124044: @ 0x08124044 + push {r4, r5, lr} + lsls r0, r0, #0x10 + ldr r1, _08124058 + adds r0, r0, r1 + lsrs r5, r0, #0x10 + ldr r0, _0812405C + cmp r5, r0 + bne _08124064 + b _08124086 + .align 2, 0 +_08124058: .4byte 0xFFFF0000 +_0812405C: .4byte 0x0000FFFF +_08124060: + movs r0, #1 + b _08124088 +_08124064: + movs r4, #1 +_08124066: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08123878 + ldr r1, _08124090 + ldr r1, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1] + cmp r0, r1 + beq _08124060 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1c + bls _08124066 +_08124086: + movs r0, #0 +_08124088: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08124090: .4byte gUnknown_2039E10 + thumb_func_end sub_08124044 + + thumb_func_start sub_08124094 +sub_08124094: @ 0x08124094 + push {r4, lr} + adds r2, r0, #0 + ldr r0, _081240D8 + ldr r1, [r0] + adds r3, r1, #0 + adds r3, #0x7a + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _081240D2 + adds r0, r1, #0 + adds r0, #0x7b + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + ldrh r4, [r2, #0x20] + adds r0, r0, r4 + strh r0, [r2, #0x20] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + ldrh r1, [r2, #0x22] + adds r0, r0, r1 + strh r0, [r2, #0x22] + ldrb r0, [r3] + subs r0, #1 + strb r0, [r3] +_081240D2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081240D8: .4byte gUnknown_2039E10 + thumb_func_end sub_08124094 + + thumb_func_start sub_081240DC +sub_081240DC: @ 0x081240DC + bx lr + .align 2, 0 + thumb_func_end sub_081240DC + + thumb_func_start sub_081240E0 +sub_081240E0: @ 0x081240E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x28 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + ldr r1, _08124150 + ldr r2, [r1, #4] + ldr r1, [r1] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + mov r2, sp + ldr r1, _08124154 + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + lsrs r3, r0, #0x10 + add r2, sp, #0x18 + ldrh r1, [r2, #4] + orrs r1, r0 + str r1, [r2, #4] + mov r0, sp + strh r3, [r0] + ldr r0, _08124158 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0x58 + strh r3, [r0] + ldr r5, _0812415C + add r1, sp, #0x20 + ldr r0, [r1, #4] + ands r0, r5 + orrs r0, r6 + str r0, [r1, #4] + mov r0, sp + strh r6, [r0, #2] + adds r3, r4, #0 + adds r0, r3, #0 + adds r0, #0x5a + strh r6, [r0] + adds r0, #0x1e + ldrb r0, [r0] + adds r7, r1, #0 + cmp r0, #0 + bne _08124164 + movs r1, #0xc2 + lsls r1, r1, #1 + adds r0, r3, r1 + str r0, [sp, #0x18] + ldr r0, [r2, #4] + ands r0, r5 + subs r1, #0x84 + orrs r0, r1 + str r0, [r2, #4] + ldr r0, _08124160 + b _0812417A + .align 2, 0 +_08124150: .4byte gUnknown_857D4F0 +_08124154: .4byte gUnknown_857D4F8 +_08124158: .4byte gUnknown_2039E10 +_0812415C: .4byte 0xFFFF0000 +_08124160: .4byte sub_08124094 +_08124164: + movs r3, #0xa1 + lsls r3, r3, #2 + adds r0, r4, r3 + str r0, [sp, #0x18] + ldr r0, [r2, #4] + ands r0, r5 + movs r1, #0xc0 + lsls r1, r1, #3 + orrs r0, r1 + str r0, [r2, #4] + ldr r0, _081241DC +_0812417A: + str r0, [sp, #0x14] + adds r0, r2, #0 + bl sub_08008210 + adds r0, r7, #0 + bl sub_0800845C + mov r0, sp + movs r1, #0x38 + movs r2, #0x48 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08124234 + ldr r4, _081241E0 + ldr r2, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081241E4 + adds r3, r0, r1 + str r3, [r2, #0x1c] + adds r2, #0x78 + ldrb r0, [r2] + cmp r0, #1 + bne _081241E8 + ldrb r1, [r3, #3] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #3] + ldr r2, [r4] + ldr r1, [r2, #0x1c] + ldrh r0, [r1, #0x20] + subs r0, #8 + strh r0, [r1, #0x20] + ldr r1, [r2, #0x1c] + ldrh r0, [r1, #0x22] + subs r0, #8 + strh r0, [r1, #0x22] + ldr r0, [r2, #0x1c] + movs r1, #1 + bl sub_08007EC0 + b _08124210 + .align 2, 0 +_081241DC: .4byte sub_081240DC +_081241E0: .4byte gUnknown_2039E10 +_081241E4: .4byte gUnknown_20205AC +_081241E8: + ldrb r1, [r3, #3] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r3, #3] + ldr r1, [r4] + ldr r2, [r1, #0x1c] + adds r0, r1, #0 + adds r0, #0x54 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r2, #0x20] + ldr r2, [r1, #0x1c] + adds r1, #0x56 + ldrh r0, [r1] + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r2, #0x22] +_08124210: + ldr r4, _0812423C + ldr r0, [r4] + ldr r1, [r0, #0x1c] + movs r0, #2 + strh r0, [r1, #0x30] + adds r0, r6, #0 + bl sub_0800851C + ldr r1, [r4] + ldr r2, [r1, #0x1c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + ldr r4, _08124240 + adds r0, r0, r4 + strh r0, [r2, #0x32] + ldr r1, [r1, #0x1c] + movs r0, #1 + strh r0, [r1, #0x34] +_08124234: + add sp, #0x28 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812423C: .4byte gUnknown_2039E10 +_08124240: .4byte 0x00000101 + thumb_func_end sub_081240E0 + + thumb_func_start sub_08124244 +sub_08124244: @ 0x08124244 + push {r4, lr} + ldr r4, _08124270 + ldr r0, [r4] + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _08124268 + bl sub_08006E00 + ldr r0, [r4] + adds r0, #0x58 + ldrh r0, [r0] + bl sub_08008280 + ldr r0, [r4] + adds r0, #0x5a + ldrh r0, [r0] + bl sub_08008564 +_08124268: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124270: .4byte gUnknown_2039E10 + thumb_func_end sub_08124244 + + thumb_func_start sub_08124274 +sub_08124274: @ 0x08124274 + ldr r0, _08124280 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + movs r0, #1 + strh r0, [r1, #0x34] + bx lr + .align 2, 0 +_08124280: .4byte gUnknown_2039E10 + thumb_func_end sub_08124274 + + thumb_func_start sub_08124284 +sub_08124284: @ 0x08124284 + ldr r0, _08124290 + ldr r0, [r0] + ldr r1, [r0, #0x1c] + movs r0, #0 + strh r0, [r1, #0x34] + bx lr + .align 2, 0 +_08124290: .4byte gUnknown_2039E10 + thumb_func_end sub_08124284 + + thumb_func_start sub_08124294 +sub_08124294: @ 0x08124294 + push {r4, r5, r6, lr} + sub sp, #0x28 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, _081242EC + str r2, [sp, #0x18] + movs r2, #0x80 + add r6, sp, #0x18 + lsrs r3, r0, #0x10 + orrs r0, r2 + str r0, [r6, #4] + ldr r0, _081242F0 + str r0, [sp, #0x20] + ldr r2, _081242F4 + add r4, sp, #0x20 + ldr r0, [r4, #4] + ands r0, r2 + orrs r0, r1 + str r0, [r4, #4] + mov r0, sp + movs r5, #0 + strh r3, [r0] + strh r1, [r0, #2] + ldr r0, _081242F8 + str r0, [sp, #4] + ldr r0, _081242FC + str r0, [sp, #8] + str r5, [sp, #0xc] + ldr r0, _08124300 + str r0, [sp, #0x10] + ldr r0, _08124304 + str r0, [sp, #0x14] + ldr r0, _08124308 + ldrb r0, [r0, #0x14] + bl sub_08124674 + cmp r0, #0 + beq _08124310 + ldr r0, _0812430C + ldr r0, [r0] + str r5, [r0, #0x20] + b _081243B0 + .align 2, 0 +_081242EC: .4byte gUnknown_857C41C +_081242F0: .4byte gUnknown_857C3FC +_081242F4: .4byte 0xFFFF0000 +_081242F8: .4byte gUnknown_857D510 +_081242FC: .4byte gUnknown_857D520 +_08124300: .4byte gUnknown_82BF310 +_08124304: .4byte sub_08007140 +_08124308: .4byte gUnknown_2036FB8 +_0812430C: .4byte gUnknown_2039E10 +_08124310: + ldr r0, _08124378 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #1 + bne _08124322 + ldr r0, _0812437C + str r0, [sp, #0x18] + ldr r0, _08124380 + str r0, [sp, #0x20] +_08124322: + adds r0, r6, #0 + bl sub_08008210 + adds r0, r4, #0 + bl sub_0800845C + mov r0, sp + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08124384 + ldr r2, [r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08124388 + adds r1, r1, r0 + str r1, [r2, #0x20] + adds r0, r2, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0 + bne _08124390 + adds r0, r2, #0 + adds r0, #0x74 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r1, #0x20] + ldr r1, [r2, #0x20] + adds r0, r2, #0 + adds r0, #0x76 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r1, #0x22] + ldr r1, [r2, #0x20] + ldr r0, _0812438C + b _081243AE + .align 2, 0 +_08124378: .4byte gUnknown_3005AF0 +_0812437C: .4byte gUnknown_857C4BC +_08124380: .4byte gUnknown_857C49C +_08124384: .4byte gUnknown_2039E10 +_08124388: .4byte gUnknown_20205AC +_0812438C: .4byte sub_081244F8 +_08124390: + adds r0, r2, #0 + adds r0, #0x74 + ldrh r0, [r0] + lsls r0, r0, #4 + subs r0, #0x30 + strh r0, [r1, #0x20] + ldr r1, [r2, #0x20] + adds r0, r2, #0 + adds r0, #0x76 + ldrh r0, [r0] + lsls r0, r0, #4 + subs r0, #0x42 + strh r0, [r1, #0x22] + ldr r1, [r2, #0x20] + ldr r0, _081243B8 +_081243AE: + str r0, [r1, #0x1c] +_081243B0: + add sp, #0x28 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081243B8: .4byte sub_08124468 + thumb_func_end sub_08124294 + + thumb_func_start sub_081243BC +sub_081243BC: @ 0x081243BC + push {lr} + ldr r3, _081243E0 + ldr r0, [r3] + ldr r2, [r0, #0x20] + cmp r2, #0 + beq _081243DA + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldr r1, [r0, #0x20] + ldr r0, _081243E4 + str r0, [r1, #0x1c] +_081243DA: + pop {r0} + bx r0 + .align 2, 0 +_081243E0: .4byte gUnknown_2039E10 +_081243E4: .4byte sub_08007140 + thumb_func_end sub_081243BC + + thumb_func_start sub_081243E8 +sub_081243E8: @ 0x081243E8 + push {lr} + ldr r0, _08124420 + ldr r3, [r0] + ldr r1, [r3, #0x20] + cmp r1, #0 + beq _0812445E + adds r0, r3, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #1 + bne _08124428 + adds r0, r3, #0 + adds r0, #0x74 + ldrh r0, [r0] + lsls r0, r0, #4 + subs r0, #0x30 + strh r0, [r1, #0x20] + ldr r1, [r3, #0x20] + adds r0, r3, #0 + adds r0, #0x76 + ldrh r0, [r0] + lsls r0, r0, #4 + subs r0, #0x42 + strh r0, [r1, #0x22] + ldr r1, [r3, #0x20] + ldr r0, _08124424 + b _08124450 + .align 2, 0 +_08124420: .4byte gUnknown_2039E10 +_08124424: .4byte sub_08124468 +_08124428: + adds r0, r3, #0 + adds r0, #0x74 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r0, #4 + movs r2, #0 + strh r0, [r1, #0x20] + ldr r1, [r3, #0x20] + adds r0, r3, #0 + adds r0, #0x76 + ldrh r0, [r0] + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r1, #0x22] + ldr r0, [r3, #0x20] + strh r2, [r0, #0x24] + ldr r0, [r3, #0x20] + strh r2, [r0, #0x26] + ldr r1, [r3, #0x20] + ldr r0, _08124464 +_08124450: + str r0, [r1, #0x1c] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0812445E: + pop {r0} + bx r0 + .align 2, 0 +_08124464: .4byte sub_081244F8 + thumb_func_end sub_081243E8 + + thumb_func_start sub_08124468 +sub_08124468: @ 0x08124468 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _081244CC + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x5c + movs r4, #0 + ldrsh r2, [r0, r4] + lsls r2, r2, #1 + rsbs r2, r2, #0 + strh r2, [r3, #0x24] + adds r1, #0x5e + movs r4, #0 + ldrsh r0, [r1, r4] + lsls r0, r0, #1 + rsbs r0, r0, #0 + strh r0, [r3, #0x26] + ldrh r1, [r3, #0x22] + adds r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + strh r0, [r3, #0x2e] + ldrh r1, [r3, #0x20] + adds r1, r1, r2 + adds r2, r3, #0 + adds r2, #0x28 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r2, r2, r1 + strh r2, [r3, #0x30] + adds r0, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb0 + bhi _081244C8 + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + movs r0, #8 + rsbs r0, r0, #0 + cmp r2, r0 + blt _081244C8 + cmp r2, #0xf8 + ble _081244D0 +_081244C8: + movs r0, #0 + b _081244D2 + .align 2, 0 +_081244CC: .4byte gUnknown_2039E10 +_081244D0: + movs r0, #1 +_081244D2: + strh r0, [r3, #0x32] + movs r1, #0x32 + ldrsh r0, [r3, r1] + cmp r0, #1 + bne _081244E4 + adds r0, r3, #0 + bl sub_08124504 + b _081244F0 +_081244E4: + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_081244F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08124468 + + thumb_func_start sub_081244F8 +sub_081244F8: @ 0x081244F8 + push {lr} + bl sub_08124504 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081244F8 + + thumb_func_start sub_08124504 +sub_08124504: @ 0x08124504 + push {lr} + adds r2, r0, #0 + ldr r0, _08124544 + ldr r0, [r0] + adds r0, #0x7e + ldrb r0, [r0] + cmp r0, #0 + beq _08124548 + ldrh r0, [r2, #0x3c] + adds r0, #1 + strh r0, [r2, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08124554 + movs r0, #0 + strh r0, [r2, #0x3c] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08124554 + .align 2, 0 +_08124544: .4byte gUnknown_2039E10 +_08124548: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08124554: + pop {r0} + bx r0 + thumb_func_end sub_08124504 + + thumb_func_start sub_08124558 +sub_08124558: @ 0x08124558 + push {lr} + ldr r0, _08124574 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + beq _0812456E + adds r1, #0x7e + movs r0, #1 + strb r0, [r1] +_0812456E: + pop {r0} + bx r0 + .align 2, 0 +_08124574: .4byte gUnknown_2039E10 + thumb_func_end sub_08124558 + + thumb_func_start sub_08124578 +sub_08124578: @ 0x08124578 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + cmp r1, #0x56 + bne _08124590 + bl sub_080EA46C + adds r1, r0, #0 + b _081245BE +_08124590: + cmp r1, #0xd4 + bhi _081245AC + ldr r0, _081245A8 + lsls r1, r1, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl sub_080088B8 + adds r1, r0, #0 + b _081245BE + .align 2, 0 +_081245A8: .4byte gUnknown_857CD6C +_081245AC: + cmp r4, #0 + bne _081245B2 + movs r4, #0x12 +_081245B2: + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_08008DE8 + b _081245E2 +_081245BE: + cmp r4, #0 + beq _081245E0 + subs r0, r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + bhs _081245DC + movs r2, #0 +_081245CE: + strb r2, [r1] + adds r1, #1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + blo _081245CE +_081245DC: + movs r0, #0xff + strb r0, [r1] +_081245E0: + adds r0, r1, #0 +_081245E2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08124578 + + thumb_func_start sub_081245E8 +sub_081245E8: @ 0x081245E8 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x56 + beq _08124604 + cmp r1, #0x57 + bne _08124610 + ldr r1, _08124600 + bl sub_080088B8 + b _08124616 + .align 2, 0 +_08124600: .4byte gUnknown_85CBEBA +_08124604: + ldr r1, _0812460C + bl sub_080088B8 + b _08124616 + .align 2, 0 +_0812460C: .4byte gUnknown_85CBEC1 +_08124610: + movs r2, #0 + bl sub_08124578 +_08124616: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081245E8 + + thumb_func_start sub_0812461C +sub_0812461C: @ 0x0812461C + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x42 + beq _0812462C + bl sub_081245E8 + b _08124632 +_0812462C: + ldr r1, _08124638 + bl sub_080088B8 +_08124632: + pop {r1} + bx r1 + .align 2, 0 +_08124638: .4byte gUnknown_85CBEC7 + thumb_func_end sub_0812461C + + thumb_func_start sub_0812463C +sub_0812463C: @ 0x0812463C + push {r4, r5, lr} + ldr r5, [sp, #0xc] + lsls r0, r0, #0x10 + ldr r4, _08124660 + lsrs r0, r0, #0xd + adds r0, r0, r4 + ldrb r4, [r0] + strh r4, [r1] + ldrb r1, [r0, #1] + strh r1, [r2] + ldrb r1, [r0, #2] + strh r1, [r3] + ldrb r0, [r0, #3] + strh r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08124660: .4byte gUnknown_857CD6C + thumb_func_end sub_0812463C + + thumb_func_start sub_08124664 +sub_08124664: @ 0x08124664 + ldr r0, _08124670 + ldr r0, [r0] + adds r0, #0x78 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08124670: .4byte gUnknown_2039E10 + thumb_func_end sub_08124664 + + thumb_func_start sub_08124674 +sub_08124674: @ 0x08124674 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _0812468C +_0812467E: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bne _08124690 + movs r0, #1 + b _08124698 + .align 2, 0 +_0812468C: .4byte gUnknown_857D524 +_08124690: + adds r1, #1 + cmp r1, #2 + bls _0812467E + movs r0, #0 +_08124698: + pop {r1} + bx r1 + thumb_func_end sub_08124674 + + thumb_func_start sub_0812469C +sub_0812469C: @ 0x0812469C + push {r4, lr} + sub sp, #0xc + ldr r0, _081246BC + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xa + bls _081246B0 + b _081248B6 +_081246B0: + lsls r0, r0, #2 + ldr r1, _081246C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081246BC: .4byte gUnknown_3002360 +_081246C0: .4byte _081246C4 +_081246C4: @ jump table + .4byte _081246F0 @ case 0 + .4byte _08124772 @ case 1 + .4byte _08124788 @ case 2 + .4byte _08124798 @ case 3 + .4byte _081247A8 @ case 4 + .4byte _081247F0 @ case 5 + .4byte _08124804 @ case 6 + .4byte _08124818 @ case 7 + .4byte _08124858 @ case 8 + .4byte _0812485E @ case 9 + .4byte _08124878 @ case 10 +_081246F0: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + ldr r4, _08124754 + ldr r0, _08124758 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _08124760 + ldr r0, _0812475C + bl sub_08000540 + b _081248B6 + .align 2, 0 +_08124754: .4byte gUnknown_2039E14 +_08124758: .4byte 0x00000A74 +_0812475C: .4byte sub_08085AFC +_08124760: + bl sub_080A133C + bl sub_0800668C + bl sub_080082F8 + bl sub_08008424 + b _081248A8 +_08124772: + movs r0, #0 + bl sub_080017D4 + ldr r1, _08124784 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + b _081248A8 + .align 2, 0 +_08124784: .4byte gUnknown_857D7D4 +_08124788: + ldr r0, _08124794 + bl sub_08003090 + bl sub_08004480 + b _081248A8 + .align 2, 0 +_08124794: .4byte gUnknown_857D7E0 +_08124798: + movs r0, #0 + movs r1, #0x51 + movs r2, #0xd0 + bl sub_080981B4 + bl sub_08199640 + b _081248A8 +_081247A8: + ldr r4, _081247E4 + ldr r0, [r4] + adds r0, #8 + movs r1, #0 + bl sub_08122CE8 + movs r0, #0 + movs r1, #0 + bl sub_081240E0 + movs r0, #1 + movs r1, #1 + bl sub_08124294 + ldr r0, [r4] + ldrh r1, [r0, #8] + strh r1, [r0, #6] + ldr r1, _081247E8 + adds r0, r0, r1 + movs r1, #0 + movs r2, #0xa + bl sub_08008DE8 + ldr r1, _081247EC + movs r0, #1 + str r0, [r1] + bl sub_08124910 + b _081248A8 + .align 2, 0 +_081247E4: .4byte gUnknown_2039E14 +_081247E8: .4byte 0x00000A4C +_081247EC: .4byte gUnknown_3001180 +_081247F0: + ldr r0, _081247FC + ldr r1, _08124800 + bl LZ77UnCompVram + b _081248A8 + .align 2, 0 +_081247FC: .4byte gUnknown_857D548 +_08124800: .4byte 0x0600C000 +_08124804: + ldr r0, _08124810 + ldr r1, _08124814 + bl LZ77UnCompVram + b _081248A8 + .align 2, 0 +_08124810: .4byte gUnknown_857D580 +_08124814: .4byte 0x0600F000 +_08124818: + ldr r0, _08124850 + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #2 + bl sub_0800365C + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r2, _08124854 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + b _081248A8 + .align 2, 0 +_08124850: .4byte gUnknown_857D528 +_08124854: .4byte gUnknown_85C9398 +_08124858: + bl sub_08124A58 + b _081248A8 +_0812485E: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _08124874 + bl sub_080006F0 + b _081248A8 + .align 2, 0 +_08124874: .4byte sub_081248CC +_08124878: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r0, _081248C0 + bl sub_08124900 + ldr r0, _081248C4 + bl sub_08000540 +_081248A8: + ldr r1, _081248C8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081248B6: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081248C0: .4byte sub_08124CFC +_081248C4: .4byte sub_081248E0 +_081248C8: .4byte gUnknown_3002360 + thumb_func_end sub_0812469C + + thumb_func_start sub_081248CC +sub_081248CC: @ 0x081248CC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081248CC + + thumb_func_start sub_081248E0 +sub_081248E0: @ 0x081248E0 + push {lr} + ldr r0, _081248FC + ldr r0, [r0] + ldr r0, [r0] + bl _call_via_r0 + bl sub_080066D8 + thumb_func_end sub_081248E0 + + thumb_func_start sub_081248F0 +sub_081248F0: @ 0x081248F0 + bl sub_08006724 + bl sub_08199668 + pop {r0} + bx r0 + .align 2, 0 +_081248FC: .4byte gUnknown_2039E14 + thumb_func_end sub_081248F0 + + thumb_func_start sub_08124900 +sub_08124900: @ 0x08124900 + ldr r1, _0812490C + ldr r1, [r1] + str r0, [r1] + movs r0, #0 + strh r0, [r1, #4] + bx lr + .align 2, 0 +_0812490C: .4byte gUnknown_2039E14 + thumb_func_end sub_08124900 + + thumb_func_start sub_08124910 +sub_08124910: @ 0x08124910 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r2, _081249B4 + ldr r0, [r2] + ldrb r0, [r0, #0xa] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _08124A14 + movs r7, #0 + movs r3, #0 + ldr r0, _081249B8 + mov ip, r0 + adds r5, r2, #0 + movs r6, #0 +_08124930: + ldr r0, [r5] + lsls r1, r3, #3 + mov r2, ip + adds r4, r1, r2 + ldrh r0, [r0, #8] + ldrh r1, [r4, #4] + cmp r0, r1 + bne _081249C0 + ldrh r0, [r4, #6] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081249CA + ldr r0, [r5] + ldrb r0, [r0, #0xb] + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0800893C + movs r7, #1 + movs r0, #0 + movs r1, #0 + bl sub_08198134 + movs r0, #1 + movs r1, #0 + movs r2, #0x51 + movs r3, #0xd + bl sub_08197F44 + ldr r2, [r5] + adds r2, #0xc + movs r0, #2 + str r0, [sp] + str r6, [sp, #4] + str r6, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r5] + ldrb r0, [r0, #0xb] + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0x12 + str r0, [sp] + str r6, [sp, #4] + str r6, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + ldr r0, _081249BC + str r7, [r0] + b _081249CA + .align 2, 0 +_081249B4: .4byte gUnknown_2039E14 +_081249B8: .4byte gUnknown_857D7CC +_081249BC: .4byte gUnknown_3001180 +_081249C0: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0 + beq _08124930 +_081249CA: + cmp r7, #0 + bne _08124A4A + ldr r4, _08124A0C + ldr r0, [r4] + cmp r0, #1 + bne _081249EA + movs r0, #1 + movs r1, #0 + bl sub_08198134 + movs r0, #0 + movs r1, #0 + movs r2, #0x51 + movs r3, #0xd + bl sub_08197F44 +_081249EA: + ldr r0, _08124A10 + ldr r2, [r0] + adds r2, #0xc + movs r0, #2 + str r0, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + str r7, [r4] + b _08124A4A + .align 2, 0 +_08124A0C: .4byte gUnknown_3001180 +_08124A10: .4byte gUnknown_2039E14 +_08124A14: + ldr r4, _08124A54 + ldr r0, [r4] + cmp r0, #1 + bne _08124A30 + movs r0, #1 + movs r1, #0 + bl sub_08198134 + movs r0, #0 + movs r1, #0 + movs r2, #0x51 + movs r3, #0xd + bl sub_08197F44 +_08124A30: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08199654 + movs r0, #0 + str r0, [r4] +_08124A4A: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08124A54: .4byte gUnknown_3001180 + thumb_func_end sub_08124910 + + thumb_func_start sub_08124A58 +sub_08124A58: @ 0x08124A58 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _08124AA4 + ldr r5, _08124AA8 + ldr r1, [r5] + ldr r4, _08124AAC + adds r1, r1, r4 + bl LZ77UnCompWram + ldr r0, [r5] + adds r0, r0, r4 + str r0, [sp] + ldr r1, _08124AB0 + ldr r0, [sp, #4] + ands r0, r1 + movs r1, #0xe0 + lsls r1, r1, #1 + orrs r0, r1 + ldr r1, _08124AB4 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xa + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + ldr r0, _08124AB8 + bl sub_0800845C + bl sub_08124ABC + bl sub_08124BCC + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08124AA4: .4byte gUnknown_857D658 +_08124AA8: .4byte gUnknown_2039E14 +_08124AAC: .4byte 0x0000088C +_08124AB0: .4byte 0xFFFF0000 +_08124AB4: .4byte 0x0000FFFF +_08124AB8: .4byte gUnknown_857D800 + thumb_func_end sub_08124A58 + + thumb_func_start sub_08124ABC +sub_08124ABC: @ 0x08124ABC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + ldr r0, _08124B1C + str r0, [sp, #0xc] + movs r1, #0 + mov sb, r1 + mov r2, sp + adds r2, #6 + str r2, [sp, #0x14] + mov r3, sp + adds r3, #0xa + str r3, [sp, #0x18] + mov r0, sp + adds r0, #8 + str r0, [sp, #0x10] + add r1, sp, #4 + mov sl, r1 +_08124AE6: + ldr r2, [sp, #0x18] + str r2, [sp] + mov r0, sb + add r1, sp, #4 + mov r2, sp + adds r2, #6 + ldr r3, [sp, #0x10] + bl sub_0812463C + mov r3, sl + ldrh r0, [r3] + adds r0, #1 + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r3] + mov r1, sp + ldrh r0, [r1, #6] + adds r0, #2 + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r1, #6] + ldr r2, [sp, #0x10] + ldrh r0, [r2] + cmp r0, #2 + bne _08124B20 + movs r7, #1 + b _08124B2C + .align 2, 0 +_08124B1C: .4byte 0x0000086F +_08124B20: + ldr r3, [sp, #0x18] + ldrh r0, [r3] + movs r7, #0 + cmp r0, #2 + bne _08124B2C + movs r7, #2 +_08124B2C: + mov r0, sl + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r3, [sp, #0x14] + movs r0, #0 + ldrsh r2, [r3, r0] + ldr r0, _08124B78 + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _08124BA0 + ldr r1, _08124B7C + mov r8, r1 + lsls r4, r5, #4 + adds r0, r4, r5 + lsls r6, r0, #2 + adds r2, r6, r1 + lsls r3, r7, #6 + ldrb r1, [r2, #1] + movs r0, #0x3f + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #1] + ldr r0, [sp, #0xc] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08124B84 + mov r0, r8 + adds r0, #0x1c + adds r0, r6, r0 + ldr r1, _08124B80 + str r1, [r0] + b _08124B8A + .align 2, 0 +_08124B78: .4byte gUnknown_857D86C +_08124B7C: .4byte gUnknown_20205AC +_08124B80: .4byte sub_08124CA4 +_08124B84: + adds r0, r7, #3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 +_08124B8A: + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r0, _08124BC8 + adds r4, r4, r0 + lsls r1, r7, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + mov r2, sb + strh r2, [r4, #0x2e] +_08124BA0: + ldr r0, [sp, #0xc] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r0, #0xf + bls _08124AE6 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08124BC8: .4byte gUnknown_20205AC + thumb_func_end sub_08124ABC + + thumb_func_start sub_08124BCC +sub_08124BCC: @ 0x08124BCC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r0, #0 + mov r8, r0 + ldr r6, _08124C94 + ldrh r0, [r6, #2] + cmp r0, #0xd5 + beq _08124C84 + mov r5, sp + adds r5, #6 + add r7, sp, #4 + ldr r1, _08124C98 + mov sb, r1 + movs r0, #0x1c + add r0, sb + mov sl, r0 +_08124BF4: + mov r1, r8 + lsls r4, r1, #2 + adds r0, r4, r6 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08124C6C + adds r0, r6, #2 + adds r0, r4, r0 + ldrh r6, [r0] + mov r0, sp + adds r0, #0xa + str r0, [sp] + adds r0, r6, #0 + add r1, sp, #4 + adds r2, r5, #0 + add r3, sp, #8 + bl sub_0812463C + ldrh r0, [r7] + adds r0, #1 + lsls r0, r0, #3 + strh r0, [r7] + ldrh r0, [r5] + adds r0, #2 + lsls r0, r0, #3 + strh r0, [r5] + movs r0, #0 + ldrsh r1, [r7, r0] + movs r0, #0 + ldrsh r2, [r5, r0] + ldr r0, _08124C9C + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08124C6C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + mov r1, sb + adds r4, r2, r1 + ldrb r1, [r4, #3] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #3] + add r2, sl + ldr r0, _08124CA0 + str r0, [r2] + adds r0, r4, #0 + movs r1, #6 + bl sub_08007EC0 + strh r6, [r4, #0x2e] +_08124C6C: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r6, _08124C94 + lsls r0, r0, #2 + adds r1, r6, #2 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xd5 + bne _08124BF4 +_08124C84: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08124C94: .4byte gUnknown_857D808 +_08124C98: .4byte gUnknown_20205AC +_08124C9C: .4byte gUnknown_857D86C +_08124CA0: .4byte sub_08124CA4 + thumb_func_end sub_08124BCC + + thumb_func_start sub_08124CA4 +sub_08124CA4: @ 0x08124CA4 + push {lr} + adds r2, r0, #0 + ldr r0, _08124CE4 + ldr r0, [r0] + ldrh r1, [r0, #8] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r1, r0 + bne _08124CE8 + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08124CF6 + movs r0, #0 + strh r0, [r2, #0x30] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08124CF6 + .align 2, 0 +_08124CE4: .4byte gUnknown_2039E14 +_08124CE8: + movs r0, #0x10 + strh r0, [r2, #0x30] + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #0x15 + ands r0, r1 + strb r0, [r2] +_08124CF6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08124CA4 + + thumb_func_start sub_08124CFC +sub_08124CFC: @ 0x08124CFC + push {r4, lr} + sub sp, #4 + ldr r4, _08124D10 + ldr r0, [r4] + ldrh r1, [r0, #4] + cmp r1, #0 + beq _08124D14 + cmp r1, #1 + beq _08124D2E + b _08124D3E + .align 2, 0 +_08124D10: .4byte gUnknown_2039E14 +_08124D14: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, [r4] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _08124D3E +_08124D2E: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08124D3E + ldr r0, _08124D48 + bl sub_08124900 +_08124D3E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124D48: .4byte sub_08124D4C + thumb_func_end sub_08124CFC + + thumb_func_start sub_08124D4C +sub_08124D4C: @ 0x08124D4C + push {r4, lr} + ldr r0, _08124D70 + ldr r0, [r0] + ldrh r0, [r0, #4] + cmp r0, #0 + bne _08124DE0 + bl sub_081230B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bhi _08124DE0 + lsls r0, r0, #2 + ldr r1, _08124D74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08124D70: .4byte gUnknown_2039E14 +_08124D74: .4byte _08124D78 +_08124D78: @ jump table + .4byte _08124DE0 @ case 0 + .4byte _08124DE0 @ case 1 + .4byte _08124DE0 @ case 2 + .4byte _08124D90 @ case 3 + .4byte _08124D96 @ case 4 + .4byte _08124DC8 @ case 5 +_08124D90: + bl sub_08124910 + b _08124DE0 +_08124D96: + ldr r4, _08124DBC + ldr r0, [r4] + ldrb r0, [r0, #0xa] + cmp r0, #2 + beq _08124DA4 + cmp r0, #4 + bne _08124DE0 +_08124DA4: + movs r0, #5 + bl m4aSongNumStart + ldr r0, [r4] + ldr r1, _08124DC0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + ldr r0, _08124DC4 + bl sub_08124900 + b _08124DE0 + .align 2, 0 +_08124DBC: .4byte gUnknown_2039E14 +_08124DC0: .4byte 0x00000A72 +_08124DC4: .4byte sub_08124DF4 +_08124DC8: + movs r0, #5 + bl m4aSongNumStart + ldr r0, _08124DE8 + ldr r0, [r0] + ldr r1, _08124DEC + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, _08124DF0 + bl sub_08124900 +_08124DE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124DE8: .4byte gUnknown_2039E14 +_08124DEC: .4byte 0x00000A72 +_08124DF0: .4byte sub_08124DF4 + thumb_func_end sub_08124D4C + + thumb_func_start sub_08124DF4 +sub_08124DF4: @ 0x08124DF4 + push {r4, lr} + sub sp, #4 + ldr r4, _08124E08 + ldr r0, [r4] + ldrh r1, [r0, #4] + cmp r1, #0 + beq _08124E0C + cmp r1, #1 + beq _08124E26 + b _08124F02 + .align 2, 0 +_08124E08: .4byte gUnknown_2039E14 +_08124E0C: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + ldrh r0, [r1, #4] + adds r0, #1 + strh r0, [r1, #4] + b _08124F02 +_08124E26: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08124F02 + bl sub_08123068 + ldr r1, [r4] + ldr r2, _08124E50 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _08124EE8 + ldrh r0, [r1, #8] + cmp r0, #0xf + beq _08124E80 + cmp r0, #0xf + bgt _08124E54 + cmp r0, #0 + beq _08124E6C + b _08124EA4 + .align 2, 0 +_08124E50: .4byte 0x00000A72 +_08124E54: + cmp r0, #0x3a + beq _08124E64 + cmp r0, #0x49 + bne _08124EA4 + movs r0, #0x15 + bl sub_08084634 + b _08124EE2 +_08124E64: + movs r0, #0x16 + bl sub_08084634 + b _08124EE2 +_08124E6C: + ldr r0, _08124E7C + ldr r0, [r0] + ldrb r0, [r0, #8] + movs r1, #0xd + cmp r0, #0 + bne _08124E98 + movs r1, #0xc + b _08124E98 + .align 2, 0 +_08124E7C: .4byte gUnknown_3005AF0 +_08124E80: + ldr r0, _08124EA0 + bl sub_0809D068 + lsls r0, r0, #0x18 + movs r1, #0xb + cmp r0, #0 + beq _08124E98 + ldr r0, [r4] + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _08124E98 + movs r1, #0x14 +_08124E98: + adds r0, r1, #0 + bl sub_08084634 + b _08124EE2 + .align 2, 0 +_08124EA0: .4byte 0x000008B4 +_08124EA4: + ldr r3, _08124EC0 + ldr r0, _08124EC4 + ldr r0, [r0] + ldrh r1, [r0, #8] + lsls r0, r1, #1 + adds r2, r0, r1 + adds r0, r3, #2 + adds r1, r2, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _08124EC8 + bl sub_08084634 + b _08124EE2 + .align 2, 0 +_08124EC0: .4byte gUnknown_857D72C +_08124EC4: .4byte gUnknown_2039E14 +_08124EC8: + adds r0, r2, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + bl sub_08084590 +_08124EE2: + bl sub_080B6134 + b _08124EEE +_08124EE8: + ldr r0, _08124F0C + bl sub_08000540 +_08124EEE: + ldr r4, _08124F10 + ldr r0, [r4] + cmp r0, #0 + beq _08124EFE + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08124EFE: + bl sub_080034D4 +_08124F02: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08124F0C: .4byte sub_081B5548 +_08124F10: .4byte gUnknown_2039E14 + thumb_func_end sub_08124DF4 + + thumb_func_start sub_08124F14 +sub_08124F14: @ 0x08124F14 + push {lr} + ldr r2, _08124F5C + ldr r1, [r0, #4] + str r1, [r2] + ldr r2, _08124F60 + ldrb r1, [r0, #0x1f] + strb r1, [r2] + ldr r2, _08124F64 + ldrb r1, [r0, #0x19] + strb r1, [r2] + ldr r2, _08124F68 + ldrb r1, [r0, #0x1a] + strb r1, [r2] + ldr r2, _08124F6C + ldrb r1, [r0, #0x1b] + strb r1, [r2] + ldr r2, _08124F70 + ldrb r1, [r0, #0x1c] + strb r1, [r2] + ldr r2, _08124F74 + ldrb r1, [r0, #0x1d] + strb r1, [r2] + ldr r2, _08124F78 + ldrb r1, [r0, #0x1e] + strb r1, [r2] + ldrb r0, [r0] + subs r0, #2 + cmp r0, #0x22 + bls _08124F50 + b _0812509C +_08124F50: + lsls r0, r0, #2 + ldr r1, _08124F7C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08124F5C: .4byte gUnknown_3005EA4 +_08124F60: .4byte gUnknown_3005EB8 +_08124F64: .4byte gUnknown_3005EA0 +_08124F68: .4byte gUnknown_3005EB4 +_08124F6C: .4byte gUnknown_3005EB0 +_08124F70: .4byte gUnknown_3005EA8 +_08124F74: .4byte gUnknown_3005EBC +_08124F78: .4byte gUnknown_3005EAC +_08124F7C: .4byte _08124F80 +_08124F80: @ jump table + .4byte _0812500C @ case 0 + .4byte _0812509C @ case 1 + .4byte _0812509C @ case 2 + .4byte _0812509C @ case 3 + .4byte _0812506C @ case 4 + .4byte _0812509C @ case 5 + .4byte _08125012 @ case 6 + .4byte _08125018 @ case 7 + .4byte _0812502C @ case 8 + .4byte _0812503E @ case 9 + .4byte _0812509C @ case 10 + .4byte _08125054 @ case 11 + .4byte _0812509C @ case 12 + .4byte _0812509C @ case 13 + .4byte _0812509C @ case 14 + .4byte _0812509C @ case 15 + .4byte _0812509C @ case 16 + .4byte _0812509C @ case 17 + .4byte _0812509C @ case 18 + .4byte _0812509C @ case 19 + .4byte _0812509C @ case 20 + .4byte _0812509C @ case 21 + .4byte _0812509C @ case 22 + .4byte _0812509C @ case 23 + .4byte _0812509C @ case 24 + .4byte _0812509C @ case 25 + .4byte _0812509C @ case 26 + .4byte _0812509C @ case 27 + .4byte _0812505A @ case 28 + .4byte _08125038 @ case 29 + .4byte _08125060 @ case 30 + .4byte _08125066 @ case 31 + .4byte _0812509C @ case 32 + .4byte _0812509C @ case 33 + .4byte _08125078 @ case 34 +_0812500C: + bl sub_08125218 + b _0812509C +_08125012: + bl sub_081252D0 + b _0812509C +_08125018: + bl sub_081254C8 + ldr r0, _08125028 + ldrb r0, [r0] + bl sub_0812538C + b _0812509C + .align 2, 0 +_08125028: .4byte gUnknown_3005EB8 +_0812502C: + bl sub_081254C8 + bl sub_08125618 + bl sub_08125430 +_08125038: + bl sub_08125618 + b _0812509C +_0812503E: + bl sub_081254C8 + bl sub_081257E0 + bl sub_081257E0 + bl sub_08125888 + bl sub_08125430 + b _0812509C +_08125054: + bl sub_081256B0 + b _0812509C +_0812505A: + bl sub_081254C8 + b _0812509C +_08125060: + bl sub_081257E0 + b _0812509C +_08125066: + bl sub_08125888 + b _0812509C +_0812506C: + bl sub_08125238 + movs r0, #3 + bl sub_081250A0 + b _0812509C +_08125078: + bl sub_081254C8 + bl sub_081257E0 + bl sub_08125888 + bl sub_08125430 + bl sub_081252D0 + bl sub_081252D0 + movs r0, #2 + bl sub_081250A0 + movs r0, #4 + bl sub_08125158 +_0812509C: + pop {r0} + bx r0 + thumb_func_end sub_08124F14 + + thumb_func_start sub_081250A0 +sub_081250A0: @ 0x081250A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r2, #0 + ldr r0, _08125140 + mov r8, r0 + ldrb r0, [r0] + cmp r2, r0 + bhs _08125132 + ldr r1, _08125144 + mov ip, r1 + ldr r3, _08125148 + mov sl, r3 + ldr r0, _0812514C + mov sb, r0 +_081250C6: + ldr r1, _08125150 + ldrb r0, [r1] + adds r0, r0, r2 + mov r3, sl + ldrb r1, [r3] + muls r0, r1, r0 + lsls r0, r0, #1 + ldr r3, _08125154 + ldr r1, [r3] + adds r1, r1, r0 + mov r3, sb + ldrb r0, [r3] + lsls r0, r0, #1 + adds r3, r1, r0 + movs r4, #0 + adds r5, r2, #1 + mov r0, ip + ldrb r0, [r0] + cmp r4, r0 + bhs _08125126 + movs r6, #0x80 + lsls r6, r6, #8 +_081250F2: + ldrh r1, [r3] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08125116 + movs r0, #0x1f + ands r0, r1 + adds r0, r0, r7 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _0812510C + movs r2, #0x1f +_0812510C: + lsls r0, r2, #0xa + lsls r1, r2, #5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_08125116: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r3, #2 + mov r1, ip + ldrb r1, [r1] + cmp r4, r1 + blo _081250F2 +_08125126: + lsls r0, r5, #0x18 + lsrs r2, r0, #0x18 + mov r3, r8 + ldrb r3, [r3] + cmp r2, r3 + blo _081250C6 +_08125132: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125140: .4byte gUnknown_3005EA8 +_08125144: .4byte gUnknown_3005EB0 +_08125148: .4byte gUnknown_3005EBC +_0812514C: .4byte gUnknown_3005EA0 +_08125150: .4byte gUnknown_3005EB4 +_08125154: .4byte gUnknown_3005EA4 + thumb_func_end sub_081250A0 + + thumb_func_start sub_08125158 +sub_08125158: @ 0x08125158 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r2, #0 + ldr r0, _08125200 + ldrb r0, [r0] + cmp r2, r0 + bhs _081251F0 + ldr r1, _08125204 + mov sl, r1 +_08125176: + ldr r3, _08125208 + ldrb r0, [r3] + adds r0, r0, r2 + ldr r3, _0812520C + ldrb r1, [r3] + muls r0, r1, r0 + lsls r0, r0, #1 + ldr r3, _08125210 + ldr r1, [r3] + adds r1, r1, r0 + ldr r3, _08125214 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r3, r1, r0 + movs r5, #0 + adds r7, r2, #1 + mov r0, sl + ldrb r0, [r0] + cmp r5, r0 + bhs _081251E4 + movs r1, #0x80 + lsls r1, r1, #8 + mov sb, r1 + movs r0, #0x1f + mov ip, r0 + mov r1, r8 + subs r6, r0, r1 +_081251AC: + ldrh r1, [r3] + mov r0, sb + ands r0, r1 + cmp r0, #0 + bne _081251D4 + movs r4, #0x1f + mov r2, ip + ands r2, r1 + cmp r2, r6 + ble _081251CA + mov r1, r8 + lsrs r0, r1, #1 + subs r0, r4, r0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_081251CA: + lsls r0, r2, #0xa + lsls r1, r2, #5 + orrs r0, r1 + orrs r0, r2 + strh r0, [r3] +_081251D4: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r3, #2 + mov r0, sl + ldrb r0, [r0] + cmp r5, r0 + blo _081251AC +_081251E4: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08125200 + ldrb r1, [r1] + cmp r2, r1 + blo _08125176 +_081251F0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125200: .4byte gUnknown_3005EA8 +_08125204: .4byte gUnknown_3005EB0 +_08125208: .4byte gUnknown_3005EB4 +_0812520C: .4byte gUnknown_3005EBC +_08125210: .4byte gUnknown_3005EA4 +_08125214: .4byte gUnknown_3005EA0 + thumb_func_end sub_08125158 + + thumb_func_start sub_08125218 +sub_08125218: @ 0x08125218 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08125234 +_0812521E: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0812593C + adds r4, #1 + cmp r4, r5 + bls _0812521E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08125234: .4byte 0x00000C7F + thumb_func_end sub_08125218 + + thumb_func_start sub_08125238 +sub_08125238: @ 0x08125238 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _081252B8 + ldrb r0, [r0] + cmp r2, r0 + bhs _081252AA + ldr r0, _081252BC + mov r8, r0 + ldr r3, _081252C0 +_08125250: + ldr r0, _081252C4 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _081252C8 + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r4, r8 + ldr r1, [r4] + adds r1, r1, r0 + ldr r0, _081252CC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + adds r6, r2, #1 + ldrb r0, [r3] + cmp r5, r0 + bhs _0812529E + movs r0, #0x80 + lsls r0, r0, #8 + adds r7, r0, #0 +_0812527C: + ldrh r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _08125290 + adds r0, r4, #0 + str r3, [sp] + bl sub_08125B10 + strh r0, [r4] + ldr r3, [sp] +_08125290: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldrb r0, [r3] + cmp r5, r0 + blo _0812527C +_0812529E: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081252B8 + ldrb r0, [r0] + cmp r2, r0 + blo _08125250 +_081252AA: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081252B8: .4byte gUnknown_3005EA8 +_081252BC: .4byte gUnknown_3005EA4 +_081252C0: .4byte gUnknown_3005EB0 +_081252C4: .4byte gUnknown_3005EB4 +_081252C8: .4byte gUnknown_3005EBC +_081252CC: .4byte gUnknown_3005EA0 + thumb_func_end sub_08125238 + + thumb_func_start sub_081252D0 +sub_081252D0: @ 0x081252D0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r2, #0 + ldr r0, _08125374 + ldrb r0, [r0] + cmp r2, r0 + bhs _08125366 + ldr r0, _08125378 + mov r8, r0 + ldr r3, _0812537C +_081252E8: + ldr r0, _08125380 + ldrb r1, [r0] + ldrb r0, [r3] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r4, r8 + ldr r1, [r4] + adds r1, r1, r0 + ldr r0, _08125384 + ldrb r0, [r0] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, #1 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, _08125388 + ldrb r0, [r0] + subs r0, #1 + adds r7, r2, #1 + cmp r5, r0 + bge _0812535A + ldr r6, _0812537C +_0812531E: + ldrh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #8 + adds r1, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08125344 + ldrb r2, [r6] + lsls r2, r2, #1 + adds r2, r4, r2 + mov r0, sp + adds r1, r4, #0 + str r3, [sp, #4] + bl sub_08125E00 + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r3, [sp, #4] +_08125344: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, _08125388 + ldrb r0, [r0] + subs r0, #1 + cmp r5, r0 + blt _0812531E +_0812535A: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08125374 + ldrb r0, [r0] + cmp r2, r0 + blo _081252E8 +_08125366: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125374: .4byte gUnknown_3005EB0 +_08125378: .4byte gUnknown_3005EA4 +_0812537C: .4byte gUnknown_3005EBC +_08125380: .4byte gUnknown_3005EB4 +_08125384: .4byte gUnknown_3005EA0 +_08125388: .4byte gUnknown_3005EA8 + thumb_func_end sub_081252D0 + + thumb_func_start sub_0812538C +sub_0812538C: @ 0x0812538C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r2, #0 + ldr r0, _08125418 + ldrb r0, [r0] + cmp r2, r0 + bhs _08125408 + ldr r0, _0812541C + mov sb, r0 + ldr r3, _08125420 +_081253AC: + ldr r0, _08125424 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _08125428 + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r4, sb + ldr r1, [r4] + adds r1, r1, r0 + ldr r0, _0812542C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + adds r6, r2, #1 + ldrb r0, [r3] + cmp r5, r0 + bhs _081253FC + movs r0, #0x80 + lsls r0, r0, #8 + adds r7, r0, #0 +_081253D8: + ldrh r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _081253EE + adds r0, r4, #0 + mov r1, r8 + str r3, [sp] + bl sub_08125B44 + strh r0, [r4] + ldr r3, [sp] +_081253EE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldrb r0, [r3] + cmp r5, r0 + blo _081253D8 +_081253FC: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08125418 + ldrb r0, [r0] + cmp r2, r0 + blo _081253AC +_08125408: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125418: .4byte gUnknown_3005EA8 +_0812541C: .4byte gUnknown_3005EA4 +_08125420: .4byte gUnknown_3005EB0 +_08125424: .4byte gUnknown_3005EB4 +_08125428: .4byte gUnknown_3005EBC +_0812542C: .4byte gUnknown_3005EA0 + thumb_func_end sub_0812538C + + thumb_func_start sub_08125430 +sub_08125430: @ 0x08125430 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _081254B0 + ldrb r0, [r0] + cmp r2, r0 + bhs _081254A2 + ldr r0, _081254B4 + mov r8, r0 + ldr r3, _081254B8 +_08125448: + ldr r0, _081254BC + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _081254C0 + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r4, r8 + ldr r1, [r4] + adds r1, r1, r0 + ldr r0, _081254C4 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + adds r6, r2, #1 + ldrb r0, [r3] + cmp r5, r0 + bhs _08125496 + movs r0, #0x80 + lsls r0, r0, #8 + adds r7, r0, #0 +_08125474: + ldrh r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _08125488 + adds r0, r4, #0 + str r3, [sp] + bl sub_08125C50 + strh r0, [r4] + ldr r3, [sp] +_08125488: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldrb r0, [r3] + cmp r5, r0 + blo _08125474 +_08125496: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081254B0 + ldrb r0, [r0] + cmp r2, r0 + blo _08125448 +_081254A2: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081254B0: .4byte gUnknown_3005EA8 +_081254B4: .4byte gUnknown_3005EA4 +_081254B8: .4byte gUnknown_3005EB0 +_081254BC: .4byte gUnknown_3005EB4 +_081254C0: .4byte gUnknown_3005EBC +_081254C4: .4byte gUnknown_3005EA0 + thumb_func_end sub_08125430 + + thumb_func_start sub_081254C8 +sub_081254C8: @ 0x081254C8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r7, #0 + ldr r0, _08125600 + ldrb r0, [r0] + cmp r7, r0 + bhs _08125554 + ldr r0, _08125604 + mov r8, r0 +_081254DE: + ldr r0, _08125608 + ldrb r1, [r0] + adds r1, r1, r7 + ldr r0, _0812560C + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r0 + ldr r0, _08125610 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r5, r1, r0 + adds r4, r5, #2 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08125C80 + strh r0, [r5] + movs r6, #1 + adds r5, r4, #0 + ldr r0, _08125614 + ldrb r0, [r0] + subs r0, #1 + adds r7, #1 + cmp r6, r0 + bge _0812553E +_08125516: + adds r4, r5, #2 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08125C80 + strh r0, [r5] + subs r1, r5, #2 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r5, r4, #0 + ldr r0, _08125614 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + blt _08125516 +_0812553E: + subs r1, r5, #2 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + lsls r0, r7, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08125600 + ldrb r0, [r0] + cmp r7, r0 + blo _081254DE +_08125554: + movs r6, #0 + ldr r0, _08125614 + ldrb r0, [r0] + cmp r6, r0 + bhs _081255F4 + ldr r3, _08125604 + mov sb, r3 + ldr r0, _0812560C + mov r8, r0 +_08125566: + ldr r0, _08125608 + ldrb r0, [r0] + mov r2, r8 + ldrb r1, [r2] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, sb + ldr r2, [r3] + adds r2, r2, r0 + ldr r0, _08125610 + ldrb r0, [r0] + adds r0, r0, r6 + lsls r0, r0, #1 + adds r5, r2, r0 + lsls r1, r1, #1 + adds r1, r5, r1 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + movs r7, #1 + mov r1, r8 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r5, r5, r0 + ldr r0, _08125600 + ldrb r0, [r0] + subs r0, #1 + adds r6, #1 + cmp r7, r0 + bge _081255D8 + ldr r4, _0812560C +_081255A6: + ldrb r1, [r4] + lsls r1, r1, #1 + adds r1, r5, r1 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + ldrb r1, [r4] + lsls r1, r1, #1 + subs r1, r5, r1 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r5, r5, r0 + ldr r0, _08125600 + ldrb r0, [r0] + subs r0, #1 + cmp r7, r0 + blt _081255A6 +_081255D8: + mov r2, r8 + ldrb r1, [r2] + lsls r1, r1, #1 + subs r1, r5, r1 + adds r0, r5, #0 + bl sub_08125C80 + strh r0, [r5] + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08125614 + ldrb r0, [r0] + cmp r6, r0 + blo _08125566 +_081255F4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125600: .4byte gUnknown_3005EA8 +_08125604: .4byte gUnknown_3005EA4 +_08125608: .4byte gUnknown_3005EB4 +_0812560C: .4byte gUnknown_3005EBC +_08125610: .4byte gUnknown_3005EA0 +_08125614: .4byte gUnknown_3005EB0 + thumb_func_end sub_081254C8 + + thumb_func_start sub_08125618 +sub_08125618: @ 0x08125618 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _08125698 + ldrb r0, [r0] + cmp r2, r0 + bhs _0812568A + ldr r0, _0812569C + mov r8, r0 + ldr r3, _081256A0 +_08125630: + ldr r0, _081256A4 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _081256A8 + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r4, r8 + ldr r1, [r4] + adds r1, r1, r0 + ldr r0, _081256AC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + adds r6, r2, #1 + ldrb r0, [r3] + cmp r5, r0 + bhs _0812567E + movs r0, #0x80 + lsls r0, r0, #8 + adds r7, r0, #0 +_0812565C: + ldrh r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _08125670 + adds r0, r4, #0 + str r3, [sp] + bl sub_08125CB0 + strh r0, [r4] + ldr r3, [sp] +_08125670: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldrb r0, [r3] + cmp r5, r0 + blo _0812565C +_0812567E: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08125698 + ldrb r0, [r0] + cmp r2, r0 + blo _08125630 +_0812568A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125698: .4byte gUnknown_3005EA8 +_0812569C: .4byte gUnknown_3005EA4 +_081256A0: .4byte gUnknown_3005EB0 +_081256A4: .4byte gUnknown_3005EB4 +_081256A8: .4byte gUnknown_3005EBC +_081256AC: .4byte gUnknown_3005EA0 + thumb_func_end sub_08125618 + + thumb_func_start sub_081256B0 +sub_081256B0: @ 0x081256B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _081257DC + ldr r4, [r0] + movs r6, #0 + movs r0, #0x80 + lsls r0, r0, #8 + adds r5, r0, #0 +_081256C8: + movs r7, #0 +_081256CA: + ldrh r0, [r4] + ands r0, r5 + cmp r0, #0 + bne _081256DA + adds r0, r4, #0 + bl sub_08125CB0 + strh r0, [r4] +_081256DA: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r4, #2 + cmp r7, #0x3f + bls _081256CA + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x3f + bls _081256C8 + movs r7, #0 + ldr r1, _081257DC + mov sl, r1 + mov r3, sp + movs r2, #0x80 + lsls r2, r2, #8 + mov sb, r2 +_081256FE: + lsls r0, r7, #1 + mov r2, sl + ldr r1, [r2] + adds r4, r1, r0 + ldrh r1, [r4] + strh r1, [r3] + mov r1, sb + strh r1, [r4] + movs r6, #1 + adds r4, #0x80 + adds r5, r0, #0 +_08125714: + ldrh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #8 + ands r0, r2 + cmp r0, #0 + bne _08125734 + adds r2, r4, #0 + adds r2, #0x80 + mov r0, sp + adds r1, r4, #0 + str r3, [sp, #4] + bl sub_08125F20 + strh r0, [r4] + ldr r3, [sp, #4] + strh r0, [r3] +_08125734: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, #0x80 + cmp r6, #0x3e + bls _08125714 + mov r0, sb + strh r0, [r4] + mov r1, sl + ldr r0, [r1] + adds r4, r0, r5 + ldrh r0, [r4] + strh r0, [r3] + mov r2, sb + strh r2, [r4] + movs r6, #1 + adds r4, #0x80 + movs r0, #0x80 + lsls r0, r0, #8 + mov r8, r0 +_0812575C: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x80 + cmp r0, #0 + bne _0812577C + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + str r3, [sp, #4] + bl sub_08125F20 + strh r0, [r4] + ldr r3, [sp, #4] + strh r0, [r3] +_0812577C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, r5, #0 + cmp r6, #0x3e + bls _0812575C + mov r2, sb + strh r2, [r4] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0x3f + bls _081256FE + ldr r0, _081257DC + ldr r4, [r0] + movs r6, #0 + movs r0, #0x80 + lsls r0, r0, #8 + mov r8, r0 +_081257A2: + movs r7, #0 + adds r5, r6, #1 +_081257A6: + ldrh r0, [r4] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _081257B8 + adds r0, r4, #0 + bl sub_08125CB0 + strh r0, [r4] +_081257B8: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r4, #2 + cmp r7, #0x3f + bls _081257A6 + lsls r0, r5, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x3f + bls _081257A2 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081257DC: .4byte gUnknown_3005EA4 + thumb_func_end sub_081256B0 + + thumb_func_start sub_081257E0 +sub_081257E0: @ 0x081257E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _08125870 + ldrb r0, [r0] + cmp r2, r0 + bhs _08125862 + ldr r0, _08125874 + mov r8, r0 +_081257F6: + ldr r0, _08125878 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _0812587C + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08125880 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, #1 + adds r4, #2 + ldr r0, _08125884 + ldrb r0, [r0] + subs r0, #1 + adds r6, r2, #1 + cmp r5, r0 + bge _08125856 + movs r0, #0x80 + lsls r0, r0, #8 + adds r7, r0, #0 +_0812582E: + ldrh r0, [r4] + ands r0, r7 + cmp r0, #0 + bne _08125844 + mov r0, sp + adds r1, r4, #0 + bl sub_08125CDC + strh r0, [r4] + mov r1, sp + strh r0, [r1] +_08125844: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldr r0, _08125884 + ldrb r0, [r0] + subs r0, #1 + cmp r5, r0 + blt _0812582E +_08125856: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08125870 + ldrb r0, [r0] + cmp r2, r0 + blo _081257F6 +_08125862: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125870: .4byte gUnknown_3005EA8 +_08125874: .4byte gUnknown_3005EA4 +_08125878: .4byte gUnknown_3005EB4 +_0812587C: .4byte gUnknown_3005EBC +_08125880: .4byte gUnknown_3005EA0 +_08125884: .4byte gUnknown_3005EB0 + thumb_func_end sub_081257E0 + + thumb_func_start sub_08125888 +sub_08125888: @ 0x08125888 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r2, #0 + ldr r0, _08125924 + ldrb r0, [r0] + cmp r2, r0 + bhs _08125916 + ldr r0, _08125928 + mov r8, r0 + ldr r7, _0812592C +_081258A0: + ldr r0, _08125930 + ldrb r1, [r0] + ldrb r0, [r7] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08125934 + ldrb r0, [r0] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r4, r1, r0 + ldrh r1, [r4] + mov r0, sp + strh r1, [r0] + movs r5, #1 + ldrb r0, [r7] + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, _08125938 + ldrb r0, [r0] + subs r0, #1 + adds r6, r2, #1 + cmp r5, r0 + bge _0812590A + movs r0, #0x80 + lsls r0, r0, #8 + adds r2, r0, #0 +_081258DA: + ldrh r0, [r4] + ands r0, r2 + cmp r0, #0 + bne _081258F4 + mov r0, sp + adds r1, r4, #0 + str r2, [sp, #4] + bl sub_08125CDC + strh r0, [r4] + mov r1, sp + strh r0, [r1] + ldr r2, [sp, #4] +_081258F4: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r7] + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, _08125938 + ldrb r0, [r0] + subs r0, #1 + cmp r5, r0 + blt _081258DA +_0812590A: + lsls r0, r6, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08125924 + ldrb r0, [r0] + cmp r2, r0 + blo _081258A0 +_08125916: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08125924: .4byte gUnknown_3005EB0 +_08125928: .4byte gUnknown_3005EA4 +_0812592C: .4byte gUnknown_3005EBC +_08125930: .4byte gUnknown_3005EB4 +_08125934: .4byte gUnknown_3005EA0 +_08125938: .4byte gUnknown_3005EA8 + thumb_func_end sub_08125888 + + thumb_func_start sub_0812593C +sub_0812593C: @ 0x0812593C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + mov r2, sp + ldr r3, _081259A8 + lsls r1, r0, #1 + add r1, sl + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r2, #1] + mov r5, sp + adds r0, r3, #2 + adds r1, r1, r0 + ldrb r4, [r1] + lsls r2, r4, #0x18 + lsrs r1, r2, #0x1b + movs r0, #7 + ands r1, r0 + strh r1, [r5, #2] + lsrs r2, r2, #0x19 + mov sb, r2 + movs r0, #3 + ands r2, r0 + mov sb, r2 + movs r5, #1 + ands r5, r4 + movs r4, #1 + mov r8, r4 + cmp r8, r1 + bhs _081259EE + mov r3, sp +_0812598E: + cmp r5, #0 + bne _081259AC + mov r0, r8 + lsls r2, r0, #2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + mov r4, r8 + subs r0, r0, r4 + strb r0, [r1] + ldrb r0, [r3, #1] + add r0, r8 + b _081259BE + .align 2, 0 +_081259A8: .4byte gUnknown_857D884 +_081259AC: + mov r0, r8 + lsls r2, r0, #2 + mov r4, sp + adds r1, r4, r2 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r1] + ldrb r0, [r3, #1] + subs r0, #1 +_081259BE: + strb r0, [r1, #1] + add r2, sp + ldrb r0, [r2] + cmp r0, #0x3f + bhi _081259CE + ldrb r0, [r2, #1] + cmp r0, #0x3f + bls _081259D6 +_081259CE: + mov r0, r8 + subs r0, #1 + strh r0, [r3, #2] + b _081259EE +_081259D6: + ldrh r0, [r3, #2] + mov r1, r8 + subs r0, r0, r1 + strh r0, [r2, #2] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r0, [r3, #2] + cmp r8, r0 + blo _0812598E +_081259EE: + movs r2, #0 + mov r8, r2 + mov r0, sp + ldrh r0, [r0, #2] + cmp r8, r0 + blo _081259FC + b _08125AFE +_081259FC: + movs r3, #0x1f +_081259FE: + ldr r1, _08125A5C + mov r4, r8 + lsls r0, r4, #2 + mov r2, sp + adds r6, r2, r0 + ldrb r0, [r6, #1] + lsls r0, r0, #7 + ldr r1, [r1] + adds r1, r1, r0 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r2, r1, r0 + ldrh r1, [r2] + movs r4, #0x80 + lsls r4, r4, #8 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _08125AEA + movs r7, #0x1f + ands r7, r1 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x15 + ands r5, r3 + lsrs r4, r0, #0x1a + ands r4, r3 + mov r0, sb + cmp r0, #0 + blt _08125AE0 + cmp r0, #1 + ble _08125A60 + cmp r0, #3 + bgt _08125AE0 + ldrh r0, [r6, #2] + adds r1, r7, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + adds r1, r5, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r7, #0x1f + bls _08125AD4 + movs r7, #0x1f + b _08125AD4 + .align 2, 0 +_08125A5C: .4byte gUnknown_3005EA4 +_08125A60: + mov r1, sl + lsls r0, r1, #1 + add r0, sl + ldr r1, _08125A94 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsrs r0, r0, #3 + movs r1, #7 + ands r0, r1 + movs r1, #3 + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + cmp r0, #1 + beq _08125AB0 + cmp r0, #1 + bgt _08125A98 + cmp r0, #0 + beq _08125A9E + b _08125AE0 + .align 2, 0 +_08125A94: .4byte gUnknown_857D884 +_08125A98: + cmp r0, #2 + beq _08125AC2 + b _08125AE0 +_08125A9E: + ldrh r0, [r6, #2] + cmp r7, r0 + blo _08125AAC + subs r0, r7, r0 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + b _08125AE0 +_08125AAC: + movs r7, #0 + b _08125AE0 +_08125AB0: + ldrh r0, [r6, #2] + cmp r5, r0 + blo _08125ABE + subs r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _08125AE0 +_08125ABE: + movs r5, #0 + b _08125AE0 +_08125AC2: + ldrh r0, [r6, #2] + cmp r4, r0 + blo _08125AD0 + subs r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _08125AE0 +_08125AD0: + movs r4, #0 + b _08125AE0 +_08125AD4: + cmp r5, #0x1f + bls _08125ADA + movs r5, #0x1f +_08125ADA: + cmp r4, #0x1f + bls _08125AE0 + movs r4, #0x1f +_08125AE0: + lsls r0, r4, #0xa + lsls r1, r5, #5 + orrs r0, r1 + orrs r7, r0 + strh r7, [r2] +_08125AEA: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r0, sp + ldrh r0, [r0, #2] + cmp r8, r0 + bhs _08125AFE + b _081259FE +_08125AFE: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812593C + + thumb_func_start sub_08125B10 +sub_08125B10: @ 0x08125B10 + ldrh r2, [r0] + movs r0, #0x1f + adds r1, r2, #0 + ands r1, r0 + asrs r3, r2, #5 + ands r3, r0 + asrs r2, r2, #0xa + ands r2, r0 + movs r0, #0x4c + muls r1, r0, r1 + movs r0, #0x97 + muls r0, r3, r0 + adds r1, r1, r0 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r1, r1, r0 + asrs r1, r1, #8 + lsls r0, r1, #0xa + lsls r2, r1, #5 + orrs r0, r2 + orrs r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + thumb_func_end sub_08125B10 + + thumb_func_start sub_08125B44 +sub_08125B44: @ 0x08125B44 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldrh r0, [r0] + movs r2, #0x1f + movs r1, #0x1f + ands r1, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x15 + ands r3, r2 + lsrs r0, r0, #0x1a + ands r0, r2 + cmp r1, #0x10 + bhi _08125B74 + cmp r3, #0x10 + bhi _08125B74 + cmp r0, #0x10 + bhi _08125B74 + adds r0, r4, #0 + bl sub_08125B80 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08125B76 +_08125B74: + ldr r0, _08125B7C +_08125B76: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08125B7C: .4byte 0x00007FFF + thumb_func_end sub_08125B44 + + thumb_func_start sub_08125B80 +sub_08125B80: @ 0x08125B80 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + mov r8, r0 + movs r6, #0 + movs r7, #0 + adds r0, r4, #0 + movs r1, #6 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bhi _08125C38 + lsls r0, r0, #2 + ldr r1, _08125BC4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08125BC4: .4byte _08125BC8 +_08125BC8: @ jump table + .4byte _08125BE0 @ case 0 + .4byte _08125BF0 @ case 1 + .4byte _08125C00 @ case 2 + .4byte _08125C0E @ case 3 + .4byte _08125C1C @ case 4 + .4byte _08125C2A @ case 5 +_08125BE0: + movs r0, #0x15 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r7, r6, #0 + movs r1, #0 + mov r8, r1 + b _08125C38 +_08125BF0: + movs r7, #0 + movs r0, #0x15 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + mov r6, r8 + b _08125C38 +_08125C00: + movs r0, #0x15 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r6, #0 + mov r8, r7 + b _08125C38 +_08125C0E: + movs r7, #0 + movs r6, #0 + movs r0, #0x17 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08125C36 +_08125C1C: + movs r0, #0x17 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r6, #0 + mov r8, r6 + b _08125C38 +_08125C2A: + movs r7, #0 + movs r0, #0x17 + subs r0, r0, r5 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0 +_08125C36: + mov r8, r0 +_08125C38: + lsls r0, r7, #0xa + lsls r1, r6, #5 + orrs r0, r1 + mov r1, r8 + orrs r1, r0 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08125B80 + + thumb_func_start sub_08125C50 +sub_08125C50: @ 0x08125C50 + push {lr} + ldrh r0, [r0] + movs r2, #0x1f + movs r1, #0x1f + ands r1, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x15 + ands r3, r2 + lsrs r0, r0, #0x1a + ands r0, r2 + cmp r1, #0x10 + bhi _08125C74 + cmp r3, #0x10 + bhi _08125C74 + cmp r0, #0x10 + bhi _08125C74 + movs r0, #0 + b _08125C76 +_08125C74: + ldr r0, _08125C7C +_08125C76: + pop {r1} + bx r1 + .align 2, 0 +_08125C7C: .4byte 0x00007FFF + thumb_func_end sub_08125C50 + + thumb_func_start sub_08125C80 +sub_08125C80: @ 0x08125C80 + push {r4, lr} + adds r4, r0, #0 + ldrh r3, [r4] + cmp r3, #0 + beq _08125CA8 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08125C9A + adds r0, r2, #0 + b _08125CAA +_08125C9A: + ldrh r1, [r1] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08125CA8 + ldrh r0, [r4] + b _08125CAA +_08125CA8: + movs r0, #0 +_08125CAA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08125C80 + + thumb_func_start sub_08125CB0 +sub_08125CB0: @ 0x08125CB0 + push {r4, lr} + ldrh r1, [r0] + movs r0, #0x1f + movs r3, #0x1f + ands r3, r1 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x15 + lsrs r1, r1, #0x1a + subs r3, r0, r3 + adds r4, r0, #0 + bics r4, r2 + adds r2, r4, #0 + bics r0, r1 + lsls r0, r0, #0xa + lsls r2, r2, #5 + orrs r0, r2 + orrs r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08125CB0 + + thumb_func_start sub_08125CDC +sub_08125CDC: @ 0x08125CDC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + adds r7, r1, #0 + ldrh r4, [r0] + ldrh r5, [r7] + lsls r6, r4, #0x10 + lsls r0, r5, #0x10 + mov ip, r0 + cmp r4, r5 + beq _08125D4E + mov r2, sp + movs r3, #0x1f + movs r1, #0x1f + adds r0, r1, #0 + ands r0, r4 + strh r0, [r2] + lsrs r0, r6, #0x15 + ands r0, r3 + strh r0, [r2, #2] + lsrs r0, r6, #0x1a + ands r0, r3 + strh r0, [r2, #4] + mov r0, sp + ands r1, r5 + strh r1, [r0, #6] + mov r1, sp + mov r2, ip + lsrs r0, r2, #0x15 + ands r0, r3 + strh r0, [r1, #8] + lsrs r0, r2, #0x1a + ands r0, r3 + strh r0, [r1, #0xa] + mov r0, sp + ldrh r0, [r0] + cmp r0, #0x19 + bls _08125D36 + mov r0, sp + ldrh r0, [r0, #2] + cmp r0, #0x19 + bls _08125D36 + mov r0, sp + ldrh r0, [r0, #4] + cmp r0, #0x19 + bhi _08125D4E +_08125D36: + mov r0, sp + ldrh r0, [r0, #6] + cmp r0, #0x19 + bls _08125D52 + mov r0, sp + ldrh r0, [r0, #8] + cmp r0, #0x19 + bls _08125D52 + mov r0, sp + ldrh r0, [r0, #0xa] + cmp r0, #0x19 + bls _08125D52 +_08125D4E: + ldrh r0, [r7] + b _08125DF8 +_08125D52: + movs r4, #0 + add r6, sp, #0xc + mov r7, sp + adds r7, #6 + adds r5, r6, #0 +_08125D5C: + 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 _08125D72 + adds r1, r5, r2 + subs r0, r3, r0 + b _08125D76 +_08125D72: + adds r1, r5, r2 + subs r0, r0, r3 +_08125D76: + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _08125D5C + adds r1, r6, #0 + ldrh r0, [r1, #2] + ldrh r3, [r1] + cmp r3, r0 + blo _08125D9C + ldrh r2, [r1, #4] + cmp r3, r2 + blo _08125D96 + adds r2, r3, #0 + b _08125DB0 +_08125D96: + cmp r0, r2 + bhs _08125DA2 + b _08125DAA +_08125D9C: + ldrh r2, [r1, #4] + cmp r0, r2 + blo _08125DA6 +_08125DA2: + ldrh r2, [r1, #2] + b _08125DB0 +_08125DA6: + cmp r2, r3 + blo _08125DAE +_08125DAA: + ldrh r2, [r1, #4] + b _08125DB0 +_08125DAE: + ldrh r2, [r6] +_08125DB0: + mov r0, sp + ldrh r1, [r0, #6] + lsrs r0, r2, #1 + movs r6, #0x1f + subs r6, r6, r0 + adds r0, r1, #0 + muls r0, r6, r0 + movs r1, #0x1f + bl __divsi3 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, sp + ldrh r0, [r0, #8] + muls r0, r6, r0 + movs r1, #0x1f + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sp + ldrh r0, [r0, #0xa] + muls r0, r6, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #6 + lsls r4, r4, #5 + orrs r0, r4 + orrs r5, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r5, #0 +_08125DF8: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08125CDC + + thumb_func_start sub_08125E00 +sub_08125E00: @ 0x08125E00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r3, r0, #0 + mov sl, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, sl + ldrh r0, [r0] + cmp r1, r0 + bne _08125E28 + ldrh r0, [r2] + cmp r0, r1 + bne _08125E28 + mov r1, sl + ldrh r0, [r1] + b _08125F10 +_08125E28: + mov r2, sl + ldrh r0, [r2] + movs r1, #0x1f + mov sb, r1 + movs r4, #0x1f + adds r5, r4, #0 + ands r5, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + mov r1, sb + ands r1, r2 + mov r8, r1 + lsrs r0, r0, #0x1a + mov r2, sb + ands r2, r0 + str r2, [sp, #4] + ldrh r2, [r3] + adds r0, r4, #0 + ands r0, r2 + lsls r2, r2, #0x10 + lsrs r1, r2, #0x15 + mov r3, sb + ands r1, r3 + adds r0, r0, r1 + lsrs r2, r2, #0x1a + ands r2, r3 + adds r0, r0, r2 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, #4] + adds r0, r0, r2 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x15 + mov r2, sb + ands r0, r2 + adds r4, r4, r0 + lsrs r1, r1, #0x1a + ands r1, r2 + adds r4, r4, r1 + adds r0, r4, #0 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r7, r6 + bne _08125EAA + cmp r1, r6 + bne _08125EAA + mov r3, sl + ldrh r0, [r3] + b _08125F10 +_08125EAA: + cmp r7, r6 + bls _08125EB2 + subs r0, r7, r6 + b _08125EB4 +_08125EB2: + subs r0, r6, r7 +_08125EB4: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r1, r6 + bls _08125EC0 + subs r0, r1, r6 + b _08125EC2 +_08125EC0: + subs r0, r6, r1 +_08125EC2: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + blo _08125ECC + adds r0, r2, #0 +_08125ECC: + lsrs r0, r0, #1 + movs r4, #0x1f + subs r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, r8 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r1, [sp, #4] + adds r0, r1, #0 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #6 + mov r2, r8 + lsls r1, r2, #5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 +_08125F10: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08125E00 + + thumb_func_start sub_08125F20 +sub_08125F20: @ 0x08125F20 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r3, r0, #0 + mov sl, r1 + str r2, [sp] + ldrh r1, [r3] + mov r0, sl + ldrh r0, [r0] + cmp r1, r0 + bne _08125F48 + ldrh r0, [r2] + cmp r0, r1 + bne _08125F48 + mov r1, sl + ldrh r0, [r1] + b _0812602E +_08125F48: + mov r2, sl + ldrh r0, [r2] + movs r1, #0x1f + mov sb, r1 + movs r4, #0x1f + adds r5, r4, #0 + ands r5, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + mov r1, sb + ands r1, r2 + mov r8, r1 + lsrs r0, r0, #0x1a + mov r2, sb + ands r2, r0 + str r2, [sp, #4] + ldrh r2, [r3] + adds r0, r4, #0 + ands r0, r2 + lsls r2, r2, #0x10 + lsrs r1, r2, #0x15 + mov r3, sb + ands r1, r3 + adds r0, r0, r1 + lsrs r2, r2, #0x1a + ands r2, r3 + adds r0, r0, r2 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r1, r8 + adds r0, r5, r1 + ldr r2, [sp, #4] + adds r0, r0, r2 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r3, [sp] + ldrh r1, [r3] + ands r4, r1 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x15 + mov r2, sb + ands r0, r2 + adds r4, r4, r0 + lsrs r1, r1, #0x1a + ands r1, r2 + adds r4, r4, r1 + adds r0, r4, #0 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r7, r6 + bne _08125FCA + cmp r1, r6 + bne _08125FCA + mov r3, sl + ldrh r0, [r3] + b _0812602E +_08125FCA: + cmp r7, r6 + bls _08125FD2 + subs r0, r7, r6 + b _08125FD4 +_08125FD2: + subs r0, r6, r7 +_08125FD4: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r1, r6 + bls _08125FE0 + subs r0, r1, r6 + b _08125FE2 +_08125FE0: + subs r0, r6, r1 +_08125FE2: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + blo _08125FEC + adds r0, r2, #0 +_08125FEC: + movs r4, #0x1f + subs r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, r8 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r1, [sp, #4] + adds r0, r1, #0 + muls r0, r4, r0 + movs r1, #0x1f + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #6 + mov r2, r8 + lsls r1, r2, #5 + orrs r0, r1 + orrs r5, r0 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 +_0812602E: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08125F20 + + thumb_func_start sub_08126040 +sub_08126040: @ 0x08126040 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldrb r1, [r0, #0x1d] + lsrs r5, r1, #3 + ldrb r1, [r0, #0x1e] + lsrs r1, r1, #3 + str r1, [sp, #8] + ldr r1, [r0, #4] + str r1, [sp] + ldr r2, [r0, #0x10] + str r2, [sp, #4] + ldrh r0, [r0, #0x16] + cmp r0, #2 + bne _081260F0 + movs r1, #0 + ldr r0, [sp, #8] + cmp r1, r0 + blo _0812606E + b _0812617C +_0812606E: + movs r0, #0 + adds r2, r1, #1 + mov sl, r2 + cmp r0, r5 + bhs _081260E2 + adds r2, r1, #0 + muls r2, r5, r2 + mov sb, r2 + lsls r1, r1, #3 + mov r8, r1 +_08126082: + movs r4, #0 + lsls r6, r0, #4 + adds r7, r0, #1 + add r0, sb + lsls r0, r0, #6 + ldr r1, [sp, #4] + adds r1, r1, r0 + mov ip, r1 +_08126092: + lsls r0, r4, #3 + mov r2, ip + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, r0, #3 + muls r0, r5, r0 + lsls r0, r0, #1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r0, [r2, #2] + lsls r0, r0, #8 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r2, #6] + lsls r0, r0, #8 + ldrh r1, [r2, #4] + orrs r0, r1 + strh r0, [r3, #2] + ldrh r0, [r2, #0xa] + lsls r0, r0, #8 + ldrh r1, [r2, #8] + orrs r0, r1 + strh r0, [r3, #4] + ldrh r0, [r2, #0xe] + lsls r0, r0, #8 + ldrh r1, [r2, #0xc] + orrs r0, r1 + strh r0, [r3, #6] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #7 + bls _08126092 + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + blo _08126082 +_081260E2: + mov r1, sl + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + ldr r2, [sp, #8] + cmp r1, r2 + blo _0812606E + b _0812617C +_081260F0: + movs r1, #0 + ldr r0, [sp, #8] + cmp r1, r0 + bhs _0812617C +_081260F8: + movs r0, #0 + adds r2, r1, #1 + mov sl, r2 + cmp r0, r5 + bhs _08126170 + adds r2, r1, #0 + muls r2, r5, r2 + mov sb, r2 + lsls r1, r1, #3 + mov r8, r1 +_0812610C: + movs r4, #0 + lsls r6, r0, #4 + adds r7, r0, #1 + add r0, sb + lsls r0, r0, #5 + ldr r1, [sp, #4] + adds r1, r1, r0 + mov ip, r1 +_0812611C: + lsls r0, r4, #2 + mov r2, ip + adds r3, r2, r0 + mov r1, r8 + adds r0, r1, r4 + lsls r0, r0, #3 + muls r0, r5, r0 + lsls r0, r0, #1 + ldr r2, [sp] + adds r0, r2, r0 + adds r2, r0, r6 + ldrh r1, [r2, #2] + lsls r1, r1, #4 + ldrh r0, [r2] + orrs r1, r0 + ldrh r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrh r0, [r2, #6] + lsls r0, r0, #0xc + orrs r1, r0 + strh r1, [r3] + ldrh r1, [r2, #0xa] + lsls r1, r1, #4 + ldrh r0, [r2, #8] + orrs r1, r0 + ldrh r0, [r2, #0xc] + lsls r0, r0, #8 + orrs r1, r0 + ldrh r0, [r2, #0xe] + lsls r0, r0, #0xc + orrs r1, r0 + strh r1, [r3, #2] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #7 + bls _0812611C + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + blo _0812610C +_08126170: + mov r1, sl + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + ldr r2, [sp, #8] + cmp r1, r2 + blo _081260F8 +_0812617C: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08126040 + + thumb_func_start sub_0812618C +sub_0812618C: @ 0x0812618C + push {lr} + ldr r2, _081261DC + ldrb r1, [r0, #0x18] + lsls r1, r1, #4 + strh r1, [r2] + ldr r3, _081261E0 + ldrh r2, [r2] + lsls r2, r2, #1 + ldr r1, [r0, #8] + adds r1, r1, r2 + str r1, [r3] + ldr r2, _081261E4 + ldr r1, [r0, #4] + str r1, [r2] + ldr r2, _081261E8 + ldrb r1, [r0, #0x19] + strb r1, [r2] + ldr r2, _081261EC + ldrb r1, [r0, #0x1a] + strb r1, [r2] + ldr r2, _081261F0 + ldrb r1, [r0, #0x1b] + strb r1, [r2] + ldr r2, _081261F4 + ldrb r1, [r0, #0x1c] + strb r1, [r2] + ldr r2, _081261F8 + ldrb r1, [r0, #0x1d] + strb r1, [r2] + ldr r2, _081261FC + ldrb r1, [r0, #0x1e] + strb r1, [r2] + ldrh r0, [r0, #0x14] + cmp r0, #5 + bhi _08126252 + lsls r0, r0, #2 + ldr r1, _08126200 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081261DC: .4byte gUnknown_3005EC4 +_081261E0: .4byte gUnknown_3005EC0 +_081261E4: .4byte gUnknown_3005EA4 +_081261E8: .4byte gUnknown_3005EA0 +_081261EC: .4byte gUnknown_3005EB4 +_081261F0: .4byte gUnknown_3005EB0 +_081261F4: .4byte gUnknown_3005EA8 +_081261F8: .4byte gUnknown_3005EBC +_081261FC: .4byte gUnknown_3005EAC +_08126200: .4byte _08126204 +_08126204: @ jump table + .4byte _0812621C @ case 0 + .4byte _08126224 @ case 1 + .4byte _0812622C @ case 2 + .4byte _08126236 @ case 3 + .4byte _08126240 @ case 4 + .4byte _0812624A @ case 5 +_0812621C: + movs r0, #0 + bl sub_0812638C + b _08126252 +_08126224: + movs r0, #1 + bl sub_0812638C + b _08126252 +_0812622C: + bl sub_08126258 + bl sub_081266FC + b _08126252 +_08126236: + bl sub_08126358 + bl sub_0812664C + b _08126252 +_08126240: + bl sub_0812631C + bl sub_0812659C + b _08126252 +_0812624A: + bl sub_08126300 + bl sub_081264E4 +_08126252: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812618C + + thumb_func_start sub_08126258 +sub_08126258: @ 0x08126258 + ldr r2, _081262C0 + ldr r1, [r2] + movs r0, #0 + strh r0, [r1] + ldr r0, [r2] + ldr r2, _081262C4 + adds r1, r2, #0 + strh r1, [r0, #2] + ldr r2, _081262C8 + adds r1, r2, #0 + strh r1, [r0, #4] + ldr r2, _081262CC + adds r1, r2, #0 + strh r1, [r0, #6] + ldr r2, _081262D0 + adds r1, r2, #0 + strh r1, [r0, #8] + ldr r2, _081262D4 + adds r1, r2, #0 + strh r1, [r0, #0xa] + ldr r2, _081262D8 + adds r1, r2, #0 + strh r1, [r0, #0xc] + ldr r2, _081262DC + adds r1, r2, #0 + strh r1, [r0, #0xe] + ldr r2, _081262E0 + adds r1, r2, #0 + strh r1, [r0, #0x10] + ldr r2, _081262E4 + adds r1, r2, #0 + strh r1, [r0, #0x12] + ldr r2, _081262E8 + adds r1, r2, #0 + strh r1, [r0, #0x14] + ldr r2, _081262EC + adds r1, r2, #0 + strh r1, [r0, #0x16] + ldr r2, _081262F0 + adds r1, r2, #0 + strh r1, [r0, #0x18] + ldr r2, _081262F4 + adds r1, r2, #0 + strh r1, [r0, #0x1a] + ldr r2, _081262F8 + adds r1, r2, #0 + strh r1, [r0, #0x1c] + ldr r2, _081262FC + adds r1, r2, #0 + strh r1, [r0, #0x1e] + bx lr + .align 2, 0 +_081262C0: .4byte gUnknown_3005EC0 +_081262C4: .4byte 0x000018C6 +_081262C8: .4byte 0x000077BD +_081262CC: .4byte 0x00002D6B +_081262D0: .4byte 0x000018DD +_081262D4: .4byte 0x00001BA6 +_081262D8: .4byte 0x000074C6 +_081262DC: .4byte 0x00001BBD +_081262E0: .4byte 0x000074DD +_081262E4: .4byte 0x000077A6 +_081262E8: .4byte 0x0000197D +_081262EC: .4byte 0x00001BAB +_081262F0: .4byte 0x00007566 +_081262F4: .4byte 0x00002CDD +_081262F8: .4byte 0x00002FA6 +_081262FC: .4byte 0x000074CB + thumb_func_end sub_08126258 + + thumb_func_start sub_08126300 +sub_08126300: @ 0x08126300 + ldr r2, _08126314 + ldr r0, [r2] + movs r1, #0 + strh r1, [r0] + ldr r2, [r2] + strh r1, [r2, #2] + ldr r1, _08126318 + adds r0, r1, #0 + strh r0, [r2, #4] + bx lr + .align 2, 0 +_08126314: .4byte gUnknown_3005EC0 +_08126318: .4byte 0x00007FFF + thumb_func_end sub_08126300 + + thumb_func_start sub_0812631C +sub_0812631C: @ 0x0812631C + push {r4, r5, lr} + ldr r1, _08126354 + ldr r0, [r1] + movs r2, #0 + strh r2, [r0] + ldr r0, [r1] + strh r2, [r0, #2] + movs r4, #0 + adds r5, r1, #0 +_0812632E: + ldr r0, [r5] + lsls r2, r4, #1 + adds r2, r2, r0 + adds r0, r4, #2 + lsls r3, r0, #1 + lsls r1, r0, #0xb + lsls r0, r0, #6 + orrs r1, r0 + orrs r1, r3 + strh r1, [r2, #4] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xd + bls _0812632E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126354: .4byte gUnknown_3005EC0 + thumb_func_end sub_0812631C + + thumb_func_start sub_08126358 +sub_08126358: @ 0x08126358 + push {r4, lr} + ldr r2, _08126388 + ldr r1, [r2] + movs r0, #0 + strh r0, [r1] + movs r3, #0 + adds r4, r2, #0 +_08126366: + ldr r0, [r4] + lsls r2, r3, #1 + adds r2, r2, r0 + lsls r0, r3, #0xa + lsls r1, r3, #5 + orrs r0, r1 + orrs r0, r3 + strh r0, [r2, #2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x1f + bls _08126366 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126388: .4byte gUnknown_3005EC0 + thumb_func_end sub_08126358 + + thumb_func_start sub_0812638C +sub_0812638C: @ 0x0812638C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + movs r1, #0xdf + mov sb, r1 + cmp r0, #0 + bne _081263A4 + movs r2, #0xff + mov sb, r2 +_081263A4: + movs r6, #0 + ldr r3, _08126428 + mov ip, r3 + mov r0, sb + lsls r4, r0, #1 + ldr r5, _0812642C + cmp r6, sb + bhs _081263C8 + movs r2, #0 +_081263B6: + ldr r0, [r3] + lsls r1, r6, #1 + adds r1, r1, r0 + strh r2, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, sb + blo _081263B6 +_081263C8: + mov r1, ip + ldr r0, [r1] + adds r0, r4, r0 + ldr r2, _08126430 + adds r1, r2, #0 + strh r1, [r0] + movs r3, #0 + ldrb r5, [r5] + cmp r3, r5 + bhs _081264CC +_081263DC: + ldr r2, _08126434 + ldr r0, _08126438 + ldrb r1, [r0] + adds r1, r1, r3 + ldr r0, _0812643C + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + ldr r1, [r2] + adds r1, r1, r0 + ldr r0, _08126440 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r6, #0 + ldr r0, _08126444 + adds r2, r0, #0 + adds r3, #1 + mov sl, r3 + ldrb r3, [r2] + cmp r6, r3 + bhs _081264BE + ldr r0, _08126448 + mov r8, r0 +_0812640C: + ldrh r0, [r4] + movs r3, #0x80 + lsls r3, r3, #8 + adds r1, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0812644C + mov r1, r8 + ldrh r0, [r1] + strh r0, [r4] + adds r6, #1 + adds r7, r4, #2 + b _081264B2 + .align 2, 0 +_08126428: .4byte gUnknown_3005EC0 +_0812642C: .4byte gUnknown_3005EA8 +_08126430: .4byte 0x00003DEF +_08126434: .4byte gUnknown_3005EA4 +_08126438: .4byte gUnknown_3005EB4 +_0812643C: .4byte gUnknown_3005EBC +_08126440: .4byte gUnknown_3005EA0 +_08126444: .4byte gUnknown_3005EB0 +_08126448: .4byte gUnknown_3005EC4 +_0812644C: + adds r0, r4, #0 + bl sub_081267AC + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #1 + adds r6, #1 + adds r7, r4, #2 + cmp r3, sb + bhs _081264A8 + ldr r0, _08126478 + ldr r2, [r0] + ldrh r1, [r2, #2] + mov ip, r0 + cmp r1, #0 + bne _0812647C + strh r5, [r2, #2] + mov r2, r8 + ldrh r0, [r2] + adds r0, #1 + b _081264A6 + .align 2, 0 +_08126478: .4byte gUnknown_3005EC0 +_0812647C: + mov r2, ip + ldr r1, [r2] + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r5 + beq _081264A0 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, sb + bhs _081264A8 + lsls r0, r3, #1 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + bne _0812647C + strh r5, [r1] +_081264A0: + mov r1, r8 + ldrh r0, [r1] + adds r0, r0, r3 +_081264A6: + strh r0, [r4] +_081264A8: + ldr r2, _081264DC + cmp r3, sb + bne _081264B2 + mov r3, sb + strh r3, [r4] +_081264B2: + lsls r0, r6, #0x18 + lsrs r6, r0, #0x18 + adds r4, r7, #0 + ldrb r0, [r2] + cmp r6, r0 + blo _0812640C +_081264BE: + mov r1, sl + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _081264E0 + ldrb r0, [r0] + cmp r3, r0 + blo _081263DC +_081264CC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081264DC: .4byte gUnknown_3005EB0 +_081264E0: .4byte gUnknown_3005EA8 + thumb_func_end sub_0812638C + + thumb_func_start sub_081264E4 +sub_081264E4: @ 0x081264E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r2, #0 + ldr r0, _08126538 + ldrb r0, [r0] + cmp r2, r0 + bhs _08126588 + ldr r0, _0812653C + mov r8, r0 +_081264F8: + ldr r0, _08126540 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _08126544 + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08126548 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r6, #0 + ldr r0, _0812654C + adds r3, r0, #0 + adds r7, r2, #1 + ldrb r0, [r3] + cmp r6, r0 + bhs _0812657C + ldr r5, _08126550 +_08126524: + ldrh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #8 + adds r1, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08126554 + ldrh r0, [r5] + strh r0, [r4] + b _0812656E + .align 2, 0 +_08126538: .4byte gUnknown_3005EA8 +_0812653C: .4byte gUnknown_3005EA4 +_08126540: .4byte gUnknown_3005EB4 +_08126544: .4byte gUnknown_3005EBC +_08126548: .4byte gUnknown_3005EA0 +_0812654C: .4byte gUnknown_3005EB0 +_08126550: .4byte gUnknown_3005EC4 +_08126554: + adds r0, r4, #0 + bl sub_08125C50 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08126566 + ldrh r0, [r5] + adds r0, #1 + b _0812656A +_08126566: + ldrh r0, [r5] + adds r0, #2 +_0812656A: + strh r0, [r4] + ldr r3, _08126594 +_0812656E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, #2 + ldrb r0, [r3] + cmp r6, r0 + blo _08126524 +_0812657C: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08126598 + ldrb r0, [r0] + cmp r2, r0 + blo _081264F8 +_08126588: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08126594: .4byte gUnknown_3005EB0 +_08126598: .4byte gUnknown_3005EA8 + thumb_func_end sub_081264E4 + + thumb_func_start sub_0812659C +sub_0812659C: @ 0x0812659C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _081265F0 + ldrb r0, [r0] + cmp r2, r0 + bhs _08126638 + ldr r0, _081265F4 + mov r8, r0 +_081265B2: + ldr r0, _081265F8 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _081265FC + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08126600 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + ldr r0, _08126604 + adds r7, r2, #1 + ldrb r0, [r0] + cmp r5, r0 + bhs _0812662C + ldr r6, _08126608 + movs r0, #0x80 + lsls r0, r0, #8 + adds r2, r0, #0 +_081265E2: + ldrh r0, [r4] + ands r0, r2 + cmp r0, #0 + beq _0812660C + ldrh r0, [r6] + strh r0, [r4] + b _0812661C + .align 2, 0 +_081265F0: .4byte gUnknown_3005EA8 +_081265F4: .4byte gUnknown_3005EA4 +_081265F8: .4byte gUnknown_3005EB4 +_081265FC: .4byte gUnknown_3005EBC +_08126600: .4byte gUnknown_3005EA0 +_08126604: .4byte gUnknown_3005EB0 +_08126608: .4byte gUnknown_3005EC4 +_0812660C: + adds r0, r4, #0 + str r2, [sp] + bl sub_081268F0 + ldrh r1, [r6] + adds r0, r0, r1 + strh r0, [r4] + ldr r2, [sp] +_0812661C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldr r0, _08126644 + ldrb r0, [r0] + cmp r5, r0 + blo _081265E2 +_0812662C: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08126648 + ldrb r0, [r0] + cmp r2, r0 + blo _081265B2 +_08126638: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08126644: .4byte gUnknown_3005EB0 +_08126648: .4byte gUnknown_3005EA8 + thumb_func_end sub_0812659C + + thumb_func_start sub_0812664C +sub_0812664C: @ 0x0812664C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _081266A0 + ldrb r0, [r0] + cmp r2, r0 + bhs _081266E8 + ldr r0, _081266A4 + mov r8, r0 +_08126662: + ldr r0, _081266A8 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _081266AC + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _081266B0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + ldr r0, _081266B4 + adds r7, r2, #1 + ldrb r0, [r0] + cmp r5, r0 + bhs _081266DC + ldr r6, _081266B8 + movs r0, #0x80 + lsls r0, r0, #8 + adds r2, r0, #0 +_08126692: + ldrh r0, [r4] + ands r0, r2 + cmp r0, #0 + beq _081266BC + ldrh r0, [r6] + strh r0, [r4] + b _081266CC + .align 2, 0 +_081266A0: .4byte gUnknown_3005EA8 +_081266A4: .4byte gUnknown_3005EA4 +_081266A8: .4byte gUnknown_3005EB4 +_081266AC: .4byte gUnknown_3005EBC +_081266B0: .4byte gUnknown_3005EA0 +_081266B4: .4byte gUnknown_3005EB0 +_081266B8: .4byte gUnknown_3005EC4 +_081266BC: + adds r0, r4, #0 + str r2, [sp] + bl sub_08126924 + ldrh r1, [r6] + adds r0, r0, r1 + strh r0, [r4] + ldr r2, [sp] +_081266CC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldr r0, _081266F4 + ldrb r0, [r0] + cmp r5, r0 + blo _08126692 +_081266DC: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081266F8 + ldrb r0, [r0] + cmp r2, r0 + blo _08126662 +_081266E8: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081266F4: .4byte gUnknown_3005EB0 +_081266F8: .4byte gUnknown_3005EA8 + thumb_func_end sub_0812664C + + thumb_func_start sub_081266FC +sub_081266FC: @ 0x081266FC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r2, #0 + ldr r0, _08126750 + ldrb r0, [r0] + cmp r2, r0 + bhs _08126798 + ldr r0, _08126754 + mov r8, r0 +_08126712: + ldr r0, _08126758 + ldrb r1, [r0] + adds r1, r1, r2 + ldr r0, _0812675C + ldrb r0, [r0] + muls r0, r1, r0 + lsls r0, r0, #1 + mov r3, r8 + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08126760 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r4, r1, r0 + movs r5, #0 + ldr r0, _08126764 + adds r7, r2, #1 + ldrb r0, [r0] + cmp r5, r0 + bhs _0812678C + ldr r6, _08126768 + movs r0, #0x80 + lsls r0, r0, #8 + adds r2, r0, #0 +_08126742: + ldrh r0, [r4] + ands r0, r2 + cmp r0, #0 + beq _0812676C + ldrh r0, [r6] + strh r0, [r4] + b _0812677C + .align 2, 0 +_08126750: .4byte gUnknown_3005EA8 +_08126754: .4byte gUnknown_3005EA4 +_08126758: .4byte gUnknown_3005EB4 +_0812675C: .4byte gUnknown_3005EBC +_08126760: .4byte gUnknown_3005EA0 +_08126764: .4byte gUnknown_3005EB0 +_08126768: .4byte gUnknown_3005EC4 +_0812676C: + adds r0, r4, #0 + str r2, [sp] + bl sub_08126820 + ldrh r1, [r6] + adds r0, r0, r1 + strh r0, [r4] + ldr r2, [sp] +_0812677C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r4, #2 + ldr r0, _081267A4 + ldrb r0, [r0] + cmp r5, r0 + blo _08126742 +_0812678C: + lsls r0, r7, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081267A8 + ldrb r0, [r0] + cmp r2, r0 + blo _08126712 +_08126798: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081267A4: .4byte gUnknown_3005EB0 +_081267A8: .4byte gUnknown_3005EA8 + thumb_func_end sub_081266FC + + thumb_func_start sub_081267AC +sub_081267AC: @ 0x081267AC + push {r4, lr} + ldrh r0, [r0] + movs r1, #0x1f + movs r4, #0x1f + ands r4, r0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x15 + ands r3, r1 + lsrs r2, r0, #0x1a + ands r2, r1 + movs r1, #3 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _081267D0 + movs r0, #0x1c + ands r0, r4 + adds r4, r0, #4 +_081267D0: + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _081267DE + movs r0, #0x1c + ands r0, r3 + adds r3, r0, #4 +_081267DE: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081267EC + movs r0, #0x1c + ands r0, r2 + adds r2, r0, #4 +_081267EC: + cmp r4, #5 + bhi _081267F2 + movs r4, #6 +_081267F2: + cmp r4, #0x1e + bls _081267F8 + movs r4, #0x1e +_081267F8: + cmp r3, #5 + bhi _081267FE + movs r3, #6 +_081267FE: + cmp r3, #0x1e + bls _08126804 + movs r3, #0x1e +_08126804: + cmp r2, #5 + bhi _0812680A + movs r2, #6 +_0812680A: + cmp r2, #0x1e + bls _08126810 + movs r2, #0x1e +_08126810: + lsls r0, r2, #0xa + lsls r1, r3, #5 + orrs r0, r1 + orrs r4, r0 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081267AC + + thumb_func_start sub_08126820 +sub_08126820: @ 0x08126820 + push {lr} + ldrh r0, [r0] + movs r1, #0x1f + movs r3, #0x1f + ands r3, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + ands r2, r1 + lsrs r0, r0, #0x1a + ands r0, r1 + cmp r3, #0xb + bhi _08126844 + cmp r2, #0xa + bhi _08126844 + cmp r0, #0xa + bhi _08126844 + movs r0, #1 + b _081268EA +_08126844: + cmp r3, #0x13 + bls _08126868 + cmp r2, #0x13 + bls _08126850 + cmp r0, #0x13 + bhi _08126874 +_08126850: + cmp r3, #0x13 + bls _08126868 + cmp r2, #0x13 + bls _0812685E + cmp r0, #0xe + bhi _08126874 + b _081268AC +_0812685E: + cmp r0, #0x13 + bls _08126868 + cmp r2, #0xe + bhi _08126874 + b _08126888 +_08126868: + cmp r2, #0x13 + bls _08126878 + cmp r0, #0x13 + bls _08126878 + cmp r3, #0xe + bls _081268D0 +_08126874: + movs r0, #2 + b _081268EA +_08126878: + cmp r3, #0x13 + bls _0812689C + cmp r2, #0xb + bls _08126890 + cmp r0, #0xb + bls _0812688C + cmp r2, r0 + bhs _081268AC +_08126888: + movs r0, #8 + b _081268EA +_0812688C: + movs r0, #0xa + b _081268EA +_08126890: + cmp r0, #0xb + bls _08126898 + movs r0, #0xd + b _081268EA +_08126898: + movs r0, #4 + b _081268EA +_0812689C: + cmp r2, #0x13 + bls _081268C0 + cmp r3, #0xb + bls _081268B4 + cmp r0, #0xb + bls _081268B0 + cmp r3, r0 + blo _081268D0 +_081268AC: + movs r0, #7 + b _081268EA +_081268B0: + movs r0, #0xb + b _081268EA +_081268B4: + cmp r0, #0xb + bls _081268BC + movs r0, #0xe + b _081268EA +_081268BC: + movs r0, #5 + b _081268EA +_081268C0: + cmp r0, #0x13 + bls _081268E8 + cmp r3, #0xb + bls _081268D4 + cmp r2, #0xb + bls _081268DC + cmp r3, r2 + bhs _08126888 +_081268D0: + movs r0, #9 + b _081268EA +_081268D4: + cmp r2, #0xb + bls _081268DC + movs r0, #0xc + b _081268EA +_081268DC: + cmp r0, #0xb + bls _081268E4 + movs r0, #0xf + b _081268EA +_081268E4: + movs r0, #6 + b _081268EA +_081268E8: + movs r0, #3 +_081268EA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08126820 + + thumb_func_start sub_081268F0 +sub_081268F0: @ 0x081268F0 + push {lr} + ldrh r1, [r0] + movs r3, #0x1f + movs r0, #0x1f + ands r0, r1 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x15 + ands r2, r3 + lsrs r1, r1, #0x1a + ands r1, r3 + adds r0, r0, r2 + adds r0, r0, r1 + movs r1, #3 + bl __divsi3 + movs r1, #0x1e + ands r0, r1 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0812691C + lsrs r0, r0, #0x11 + b _0812691E +_0812691C: + movs r0, #1 +_0812691E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081268F0 + + thumb_func_start sub_08126924 +sub_08126924: @ 0x08126924 + push {lr} + ldrh r1, [r0] + movs r3, #0x1f + movs r0, #0x1f + ands r0, r1 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x15 + ands r2, r3 + lsrs r1, r1, #0x1a + ands r1, r3 + adds r0, r0, r2 + adds r0, r0, r1 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08126924 + + thumb_func_start sub_08126950 +sub_08126950: @ 0x08126950 + push {lr} + ldr r3, _08126998 + ldrb r0, [r3] + cmp r0, #7 + bhi _08126966 + ldr r2, _0812699C + ldr r1, _081269A0 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] +_08126966: + ldr r2, _081269A4 + ldrb r0, [r2, #9] + cmp r0, #0 + bne _0812697E + ldr r0, _081269A8 + ldr r0, [r0] + ldr r3, _081269AC + adds r1, r0, r3 + str r1, [r2] + ldr r1, _081269B0 + adds r0, r0, r1 + str r0, [r2, #4] +_0812697E: + ldrb r0, [r2, #9] + cmp r0, #1 + bne _08126994 + ldr r0, _081269A8 + ldr r0, [r0] + ldr r3, _081269B4 + adds r1, r0, r3 + str r1, [r2] + ldr r1, _081269B8 + adds r0, r0, r1 + str r0, [r2, #4] +_08126994: + pop {r0} + bx r0 + .align 2, 0 +_08126998: .4byte gUnknown_2039E3F +_0812699C: .4byte gUnknown_2039E18 +_081269A0: .4byte gUnknown_203B90C +_081269A4: .4byte gUnknown_2039E48 +_081269A8: .4byte gUnknown_3005AEC +_081269AC: .4byte 0x00001AAE +_081269B0: .4byte 0x00001ABE +_081269B4: .4byte 0x0000271C +_081269B8: .4byte 0x00002728 + thumb_func_end sub_08126950 + + thumb_func_start sub_081269BC +sub_081269BC: @ 0x081269BC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081269F0 + adds r4, r0, r4 + lsls r0, r0, #3 + ldr r1, _081269F4 + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r2, #0x85 + lsls r2, r2, #2 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + movs r0, #0 + bl sub_08199654 + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081269F0: .4byte gUnknown_2039E54 +_081269F4: .4byte gUnknown_8581A74 + thumb_func_end sub_081269BC + + thumb_func_start sub_081269F8 +sub_081269F8: @ 0x081269F8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08126A24 + adds r4, r4, r0 + ldrb r0, [r4] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126A24: .4byte gUnknown_2039E54 + thumb_func_end sub_081269F8 + + thumb_func_start sub_08126A28 +sub_08126A28: @ 0x08126A28 + push {r4, r5, r6, lr} + sub sp, #0xc + movs r0, #0 + bl sub_081269BC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r6, #0x10 + str r6, [sp] + movs r5, #4 + str r5, [sp, #4] + ldr r0, _08126A7C + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #2 + bl sub_08198850 + str r6, [sp] + str r5, [sp, #4] + ldr r0, _08126A80 + ldrb r0, [r0] + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08126A7C: .4byte gUnknown_8581A2C +_08126A80: .4byte gUnknown_2039E1C + thumb_func_end sub_08126A28 + + thumb_func_start sub_08126A84 +sub_08126A84: @ 0x08126A84 + push {lr} + ldr r1, _08126A9C + movs r0, #0 + strb r0, [r1] + bl sub_080987DC + bl sub_08126A28 + bl sub_08126BD0 + pop {r0} + bx r0 + .align 2, 0 +_08126A9C: .4byte gUnknown_2039E1C + thumb_func_end sub_08126A84 + + thumb_func_start sub_08126AA0 +sub_08126AA0: @ 0x08126AA0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08126A84 + ldr r2, _08126ADC + ldr r0, _08126AE0 + ldr r0, [r0] + ldr r3, _08126AE4 + adds r1, r0, r3 + str r1, [r2] + ldr r1, _08126AE8 + adds r0, r0, r1 + str r0, [r2, #4] + movs r1, #0 + movs r0, #0x10 + strb r0, [r2, #8] + strb r1, [r2, #9] + ldr r1, _08126AEC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08126AF0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126ADC: .4byte gUnknown_2039E48 +_08126AE0: .4byte gUnknown_3005AEC +_08126AE4: .4byte 0x00001AAE +_08126AE8: .4byte 0x00001ABE +_08126AEC: .4byte gUnknown_3005B60 +_08126AF0: .4byte sub_08126B48 + thumb_func_end sub_08126AA0 + + thumb_func_start sub_08126AF4 +sub_08126AF4: @ 0x08126AF4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08126A84 + ldr r2, _08126B30 + ldr r0, _08126B34 + ldr r0, [r0] + ldr r3, _08126B38 + adds r1, r0, r3 + str r1, [r2] + ldr r1, _08126B3C + adds r0, r0, r1 + str r0, [r2, #4] + movs r0, #0xc + strb r0, [r2, #8] + movs r0, #1 + strb r0, [r2, #9] + ldr r1, _08126B40 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08126B44 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126B30: .4byte gUnknown_2039E48 +_08126B34: .4byte gUnknown_3005AEC +_08126B38: .4byte 0x0000271C +_08126B3C: .4byte 0x00002728 +_08126B40: .4byte gUnknown_3005B60 +_08126B44: .4byte sub_08126B48 + thumb_func_end sub_08126AF4 + + thumb_func_start sub_08126B48 +sub_08126B48: @ 0x08126B48 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08126B94 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08126BC8 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08126BA0 + adds r0, #1 + cmp r1, r0 + beq _08126BBC + movs r0, #5 + bl sub_080A306C + ldr r1, _08126B98 + ldr r0, _08126B9C + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + b _08126BC8 + .align 2, 0 +_08126B94: .4byte gUnknown_2037C74 +_08126B98: .4byte gUnknown_8581A2C +_08126B9C: .4byte gUnknown_2039E1C +_08126BA0: + bl sub_08198670 + ldr r1, _08126BB8 + strb r0, [r1] + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _08126BC8 + bl sub_08126BD0 + b _08126BC8 + .align 2, 0 +_08126BB8: .4byte gUnknown_2039E1C +_08126BBC: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_08126D34 +_08126BC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08126B48 + + thumb_func_start sub_08126BD0 +sub_08126BD0: @ 0x08126BD0 + push {lr} + sub sp, #0x10 + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r1, _08126C08 + ldr r0, _08126C0C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_08126C08: .4byte gUnknown_8581A4C +_08126C0C: .4byte gUnknown_2039E1C + thumb_func_end sub_08126BD0 + + thumb_func_start sub_08126C10 +sub_08126C10: @ 0x08126C10 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08161A24 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08126C44 + ldr r4, _08126C38 + ldr r1, _08126C3C + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08126C40 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _08126C5E + .align 2, 0 +_08126C38: .4byte gUnknown_2021C7C +_08126C3C: .4byte gUnknown_85CA70B +_08126C40: .4byte sub_08126D6C +_08126C44: + ldr r1, _08126C64 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0 + strh r1, [r0, #0x1e] + ldr r0, _08126C68 + strb r2, [r0] + adds r0, r5, #0 + bl sub_08126D94 +_08126C5E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126C64: .4byte gUnknown_3005B60 +_08126C68: .4byte gUnknown_2039E3F + thumb_func_end sub_08126C10 + + thumb_func_start sub_08126C6C +sub_08126C6C: @ 0x08126C6C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_0812999C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08126CA0 + ldr r4, _08126C94 + ldr r1, _08126C98 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08126C9C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _08126CC8 + .align 2, 0 +_08126C94: .4byte gUnknown_2021C7C +_08126C98: .4byte gUnknown_85CA87A +_08126C9C: .4byte sub_08126D6C +_08126CA0: + movs r0, #0 + bl sub_081269F8 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _08126CD0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _08126CD4 + str r1, [r0] +_08126CC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126CD0: .4byte gUnknown_3005B60 +_08126CD4: .4byte sub_08129AAC + thumb_func_end sub_08126C6C + + thumb_func_start sub_08126CD8 +sub_08126CD8: @ 0x08126CD8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08161A24 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08126D0C + ldr r4, _08126D00 + ldr r1, _08126D04 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08126D08 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _08126D26 + .align 2, 0 +_08126D00: .4byte gUnknown_2021C7C +_08126D04: .4byte gUnknown_85CA70B +_08126D08: .4byte sub_08126D6C +_08126D0C: + ldr r1, _08126D2C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #1 + strh r1, [r0, #0x1e] + ldr r0, _08126D30 + strb r2, [r0] + adds r0, r5, #0 + bl sub_08126D94 +_08126D26: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126D2C: .4byte gUnknown_3005B60 +_08126D30: .4byte gUnknown_2039E3F + thumb_func_end sub_08126CD8 + + thumb_func_start sub_08126D34 +sub_08126D34: @ 0x08126D34 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + bl sub_081269F8 + ldr r0, _08126D58 + ldrb r0, [r0, #9] + cmp r0, #0 + bne _08126D60 + ldr r0, _08126D5C + bl sub_08098880 + adds r0, r4, #0 + bl sub_080A8964 + b _08126D66 + .align 2, 0 +_08126D58: .4byte gUnknown_2039E48 +_08126D5C: .4byte gUnknown_821D3D7 +_08126D60: + adds r0, r4, #0 + bl sub_0816AE78 +_08126D66: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08126D34 + + thumb_func_start sub_08126D6C +sub_08126D6C: @ 0x08126D6C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08126BD0 + ldr r1, _08126D8C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08126D90 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126D8C: .4byte gUnknown_3005B60 +_08126D90: .4byte sub_08126B48 + thumb_func_end sub_08126D6C + + thumb_func_start sub_08126D94 +sub_08126D94: @ 0x08126D94 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08126DC0 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + movs r0, #0 + bl sub_081269F8 + adds r0, r4, #0 + bl sub_08126DC4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08126DC0: .4byte gUnknown_8581A94 + thumb_func_end sub_08126D94 + + thumb_func_start sub_08126DC4 +sub_08126DC4: @ 0x08126DC4 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081269BC + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r4, #0 + bl sub_08126E78 + movs r0, #0x10 + str r0, [sp] + movs r0, #9 + str r0, [sp, #4] + ldr r0, _08126E10 + ldrb r0, [r0] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + ldr r1, _08126E14 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08126E18 + str r1, [r0] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126E10: .4byte gUnknown_2039E3F +_08126E14: .4byte gUnknown_3005B60 +_08126E18: .4byte sub_08127040 + thumb_func_end sub_08126DC4 + + thumb_func_start sub_08126E1C +sub_08126E1C: @ 0x08126E1C + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08126E68 + ldrb r0, [r5, #1] + movs r1, #0x11 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_08126E78 + ldrb r0, [r5, #1] + movs r1, #0x10 + str r1, [sp] + movs r1, #9 + str r1, [sp, #4] + ldr r1, _08126E6C + ldrb r1, [r1] + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + ldr r1, _08126E70 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08126E74 + str r1, [r0] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08126E68: .4byte gUnknown_2039E54 +_08126E6C: .4byte gUnknown_2039E3F +_08126E70: .4byte gUnknown_3005B60 +_08126E74: .4byte sub_08127040 + thumb_func_end sub_08126E1C + + thumb_func_start sub_08126E78 +sub_08126E78: @ 0x08126E78 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08126EC8 + adds r1, r1, r0 + ldr r0, _08126ECC + ldrb r5, [r0, #1] + ldr r0, _08126ED0 + ldrb r0, [r0, #9] + movs r7, #0 + cmp r0, #1 + bne _08126EA2 + movs r2, #0x16 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08126EA2 + movs r7, #1 +_08126EA2: + movs r4, #0 + movs r6, #0xff +_08126EA6: + cmp r7, #1 + bne _08126ED4 + cmp r4, #6 + beq _08126ED4 + cmp r4, #7 + beq _08126ED4 + lsls r3, r4, #0x1c + lsrs r3, r3, #0x18 + str r7, [sp] + str r6, [sp, #4] + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #8 + bl sub_08126F20 + b _08126EE8 + .align 2, 0 +_08126EC8: .4byte gUnknown_3005B68 +_08126ECC: .4byte gUnknown_2039E54 +_08126ED0: .4byte gUnknown_2039E48 +_08126ED4: + lsls r3, r4, #0x1c + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + str r6, [sp, #4] + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #8 + bl sub_08126F20 +_08126EE8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _08126EA6 + ldr r2, _08126F1C + lsls r0, r4, #4 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08126F1C: .4byte gUnknown_85C93C4 + thumb_func_end sub_08126E78 + + thumb_func_start sub_08126F20 +sub_08126F20: @ 0x08126F20 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r4, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + mov sl, r2 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r2, _08126FF4 + mov r8, r2 + mov r0, r8 + bl sub_08127010 + ldr r0, _08126FF8 + mov sb, r0 + mov r1, r8 + bl sub_080088B8 + ldr r1, _08126FFC + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, [r0] + mov r0, sb + bl sub_080088D8 + adds r5, #2 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp] + mov r2, sl + str r2, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + mov r2, sb + adds r3, r6, #0 + bl sub_0800449C + ldr r2, _08127000 + mov r8, r2 + adds r0, r4, #0 + bl sub_081619E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _08127004 + ldr r1, _08127008 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r1, [r4, #4] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r1, _0812700C + mov r0, sb + bl sub_08008BCC + adds r6, #0x30 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r5, [sp] + mov r0, sl + str r0, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + mov r2, sb + adds r3, r6, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08126FF4: .4byte gUnknown_2021C68 +_08126FF8: .4byte gUnknown_2021C7C +_08126FFC: .4byte gUnknown_8581A0C +_08127000: .4byte gUnknown_2021C40 +_08127004: .4byte gUnknown_2021C54 +_08127008: .4byte gUnknown_203B90C +_0812700C: .4byte gUnknown_85CA6A4 + thumb_func_end sub_08126F20 + + thumb_func_start sub_08127010 +sub_08127010: @ 0x08127010 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0812702C + bl sub_080088B8 + cmp r4, #1 + bne _08127030 + movs r0, #4 + strb r0, [r5, #2] + movs r0, #5 + b _08127036 + .align 2, 0 +_0812702C: .4byte gUnknown_85CA6C6 +_08127030: + movs r0, #2 + strb r0, [r5, #2] + movs r0, #3 +_08127036: + strb r0, [r5, #5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127010 + + thumb_func_start sub_08127040 +sub_08127040: @ 0x08127040 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08127070 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08127096 + bl sub_0819867C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08127078 + cmp r1, r0 + bgt _08127074 + subs r0, #1 + cmp r1, r0 + beq _08127096 + b _08127086 + .align 2, 0 +_08127070: .4byte gUnknown_2037C74 +_08127074: + cmp r1, #8 + bne _08127086 +_08127078: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_08127154 + b _08127096 +_08127086: + movs r0, #5 + bl sub_080A306C + ldr r0, _0812709C + strb r4, [r0] + adds r0, r5, #0 + bl sub_081270A0 +_08127096: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812709C: .4byte gUnknown_2039E3F + thumb_func_end sub_08127040 + + thumb_func_start sub_081270A0 +sub_081270A0: @ 0x081270A0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081270EC + ldrb r0, [r4] + bl sub_081619E4 + ldr r1, _081270F0 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812710C + ldrb r0, [r4] + bl sub_0816194C + ldr r2, _081270F4 + ldr r1, _081270F8 + ldrb r0, [r4] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + adds r0, r5, #0 + bl sub_08127964 + ldr r0, _081270FC + movs r1, #0 + strh r1, [r0] + ldr r0, _08127100 + strh r1, [r0] + ldr r1, _08127104 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08127108 + str r1, [r0] + b _08127126 + .align 2, 0 +_081270EC: .4byte gUnknown_2039E3F +_081270F0: .4byte gUnknown_2039E1D +_081270F4: .4byte gUnknown_2039E18 +_081270F8: .4byte gUnknown_203B90C +_081270FC: .4byte gUnknown_2039E3C +_08127100: .4byte gUnknown_2039E3A +_08127104: .4byte gUnknown_3005B60 +_08127108: .4byte sub_081275CC +_0812710C: + movs r0, #1 + bl sub_081269F8 + ldr r4, _0812712C + ldr r1, _08127130 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08127134 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_08127126: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812712C: .4byte gUnknown_2021C7C +_08127130: .4byte gUnknown_85CA70B +_08127134: .4byte sub_08127138 + thumb_func_end sub_081270A0 + + thumb_func_start sub_08127138 +sub_08127138: @ 0x08127138 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_08126DC4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08127138 + + thumb_func_start sub_08127154 +sub_08127154: @ 0x08127154 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08127174 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x1e + ldrsh r0, [r0, r1] + cmp r0, #2 + beq _08127178 + adds r0, r2, #0 + bl sub_08127184 + b _0812717E + .align 2, 0 +_08127174: .4byte gUnknown_3005B60 +_08127178: + adds r0, r2, #0 + bl sub_08127220 +_0812717E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127154 + + thumb_func_start sub_08127184 +sub_08127184: @ 0x08127184 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081269F8 + bl sub_08126A28 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + bl sub_08126BD0 + ldr r1, _081271B8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081271BC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081271B8: .4byte gUnknown_3005B60 +_081271BC: .4byte sub_08126B48 + thumb_func_end sub_08127184 + + thumb_func_start sub_081271C0 +sub_081271C0: @ 0x081271C0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081271FC + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + ldr r1, _08127200 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #2 + strh r1, [r0, #0x1e] + ldr r0, _08127204 + strb r2, [r0] + adds r0, r4, #0 + bl sub_08126DC4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081271FC: .4byte gUnknown_8581A94 +_08127200: .4byte gUnknown_3005B60 +_08127204: .4byte gUnknown_2039E3F + thumb_func_end sub_081271C0 + + thumb_func_start sub_08127208 +sub_08127208: @ 0x08127208 + push {lr} + lsls r1, r1, #0x18 + ldr r2, _0812721C + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_0812721C: .4byte gUnknown_8581A0C + thumb_func_end sub_08127208 + + thumb_func_start sub_08127220 +sub_08127220: @ 0x08127220 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081269F8 + adds r0, r4, #0 + bl sub_08133DD8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127220 + + thumb_func_start sub_0812723C +sub_0812723C: @ 0x0812723C + push {lr} + ldr r3, _08127264 + ldr r2, [r3] + ldr r0, _08127268 + ldrb r0, [r0] + adds r0, #1 + movs r1, #0xf6 + lsls r1, r1, #2 + adds r2, r2, r1 + strb r0, [r2] + ldr r0, [r3] + adds r1, r0, r1 + ldrb r1, [r1] + cmp r1, #8 + bls _08127270 + ldr r2, _0812726C + adds r1, r0, r2 + movs r0, #8 + strb r0, [r1] + b _08127276 + .align 2, 0 +_08127264: .4byte gUnknown_2039E58 +_08127268: .4byte gUnknown_2039E1D +_0812726C: .4byte 0x000003D9 +_08127270: + ldr r2, _0812727C + adds r0, r0, r2 + strb r1, [r0] +_08127276: + pop {r0} + bx r0 + .align 2, 0 +_0812727C: .4byte 0x000003D9 + thumb_func_end sub_0812723C + + thumb_func_start sub_08127280 +sub_08127280: @ 0x08127280 + push {r4, lr} + ldr r0, _081272A0 + ldr r1, _081272A4 + ldr r2, _081272A8 + ldr r3, [r2] + ldr r4, _081272AC + adds r2, r3, r4 + ldrb r2, [r2] + subs r4, #1 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08122268 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081272A0: .4byte gUnknown_2039E3C +_081272A4: .4byte gUnknown_2039E3A +_081272A8: .4byte gUnknown_2039E58 +_081272AC: .4byte 0x000003D9 + thumb_func_end sub_08127280 + + thumb_func_start sub_081272B0 +sub_081272B0: @ 0x081272B0 + push {r4, lr} + sub sp, #4 + ldr r0, _081272D8 + ldr r1, _081272DC + ldr r2, _081272E0 + ldr r3, [r2] + ldr r4, _081272E4 + adds r2, r3, r4 + ldrb r2, [r2] + subs r4, #1 + adds r3, r3, r4 + ldrb r3, [r3] + movs r4, #8 + str r4, [sp] + bl sub_081222A4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081272D8: .4byte gUnknown_2039E3C +_081272DC: .4byte gUnknown_2039E3A +_081272E0: .4byte gUnknown_2039E58 +_081272E4: .4byte 0x000003D9 + thumb_func_end sub_081272B0 + + thumb_func_start sub_081272E8 +sub_081272E8: @ 0x081272E8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08127320 + adds r1, r1, r0 + ldr r0, _08127324 + ldrb r0, [r0] + subs r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08127330 + ldr r0, _08127328 + ldrb r0, [r0, #9] + cmp r0, #1 + bne _08127330 + movs r2, #0x16 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08127330 + ldr r0, _0812732C + movs r1, #1 + bl sub_08127010 + b _08127338 + .align 2, 0 +_08127320: .4byte gUnknown_3005B68 +_08127324: .4byte gUnknown_2039E3F +_08127328: .4byte gUnknown_2039E48 +_0812732C: .4byte gUnknown_2021C40 +_08127330: + ldr r0, _081273E4 + movs r1, #0 + bl sub_08127010 +_08127338: + movs r6, #0 + ldr r1, _081273E8 + ldr r0, [r1] + movs r3, #0xf6 + lsls r3, r3, #2 + adds r0, r0, r3 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + bge _0812738A + adds r5, r1, #0 +_0812734E: + lsls r4, r6, #4 + movs r0, #0xa4 + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _081273EC + ldr r1, [r1] + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_08127404 + ldr r1, [r5] + lsls r2, r6, #3 + adds r0, r1, r2 + adds r4, r1, r4 + str r4, [r0] + adds r0, r1, #4 + adds r0, r0, r2 + str r6, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r2, #0xf6 + lsls r2, r2, #2 + adds r1, r1, r2 + ldrb r0, [r1] + subs r0, #1 + cmp r6, r0 + blt _0812734E +_0812738A: + ldr r5, _081273E8 + lsls r4, r6, #4 + movs r3, #0xa4 + lsls r3, r3, #1 + adds r4, r4, r3 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _081273F0 + bl sub_080088B8 + ldr r0, [r5] + lsls r2, r6, #3 + adds r1, r0, r2 + adds r4, r0, r4 + str r4, [r1] + adds r0, #4 + adds r0, r0, r2 + movs r1, #2 + rsbs r1, r1, #0 + str r1, [r0] + ldr r2, _081273F4 + adds r1, r2, #0 + ldr r0, _081273F8 + ldm r0!, {r3, r4, r6} + stm r1!, {r3, r4, r6} + ldm r0!, {r3, r4, r6} + stm r1!, {r3, r4, r6} + ldr r0, _081273FC + ldrb r0, [r0, #1] + strb r0, [r2, #0x10] + ldr r0, [r5] + movs r4, #0xf6 + lsls r4, r4, #2 + adds r1, r0, r4 + ldrb r1, [r1] + strh r1, [r2, #0xc] + str r0, [r2] + ldr r6, _08127400 + adds r0, r0, r6 + ldrb r0, [r0] + strh r0, [r2, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081273E4: .4byte gUnknown_2021C40 +_081273E8: .4byte gUnknown_2039E58 +_081273EC: .4byte gUnknown_2039E18 +_081273F0: .4byte gUnknown_85C93C4 +_081273F4: .4byte gUnknown_3006050 +_081273F8: .4byte gUnknown_8581AB4 +_081273FC: .4byte gUnknown_2039E54 +_08127400: .4byte 0x000003D9 + thumb_func_end sub_081272E8 + + thumb_func_start sub_08127404 +sub_08127404: @ 0x08127404 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x10 + lsrs r4, r4, #0x10 + ldr r1, _08127428 + bl sub_080088B8 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r0, _0812742C + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080088D8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08127428: .4byte gUnknown_2021C40 +_0812742C: .4byte gUnknown_8580CD1 + thumb_func_end sub_08127404 + + thumb_func_start sub_08127430 +sub_08127430: @ 0x08127430 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _08127442 + movs r0, #5 + bl sub_080A306C +_08127442: + adds r0, r4, #0 + bl sub_081276F0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127430 + + thumb_func_start sub_08127450 +sub_08127450: @ 0x08127450 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r8, r6 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r7, r5, #0 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081274A6 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0812776C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0812748C + adds r3, r5, #2 + adds r0, r6, #0 + movs r1, #0x18 + movs r2, #0x5c + bl sub_08199F90 + b _081274A6 +_0812748C: + adds r0, r4, #0 + bl sub_08127798 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081274A6 + adds r3, r7, #2 + mov r0, r8 + movs r1, #0x19 + movs r2, #0x5c + bl sub_08199F90 +_081274A6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08127450 + + thumb_func_start sub_081274B0 +sub_081274B0: @ 0x081274B0 + push {r4, lr} + sub sp, #0x10 + ldr r4, _081274F8 + ldr r1, [r4] + ldr r2, _081274FC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _081274F0 + subs r2, #2 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + subs r0, r0, r1 + str r0, [sp] + movs r0, #0x6e + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _08127500 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0x3c + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + ldr r1, [r4] + ldr r2, _081274FC + adds r1, r1, r2 + strb r0, [r1] +_081274F0: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081274F8: .4byte gUnknown_2039E58 +_081274FC: .4byte 0x000003DA +_08127500: .4byte gUnknown_2039E3C + thumb_func_end sub_081274B0 + + thumb_func_start sub_08127504 +sub_08127504: @ 0x08127504 + push {r4, lr} + ldr r4, _08127528 + ldr r0, [r4] + ldr r2, _0812752C + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _08127522 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _0812752C + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_08127522: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127528: .4byte gUnknown_2039E58 +_0812752C: .4byte 0x000003DA + thumb_func_end sub_08127504 + + thumb_func_start sub_08127530 +sub_08127530: @ 0x08127530 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081269BC + adds r0, r4, #0 + bl sub_0812754C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127530 + + thumb_func_start sub_0812754C +sub_0812754C: @ 0x0812754C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + ldr r0, _081275B0 + adds r5, r5, r0 + movs r0, #3 + bl sub_081269BC + ldr r0, _081275B4 + ldrb r0, [r0] + bl sub_081276C4 + ldr r6, _081275B8 + movs r0, #0xf7 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r6] + ldr r1, _081275BC + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + bl sub_0812723C + bl sub_08127280 + bl sub_081272B0 + adds r0, r4, #0 + bl sub_081272E8 + ldr r0, _081275C0 + ldr r1, _081275C4 + ldrh r1, [r1] + ldr r2, _081275C8 + ldrh r2, [r2] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x1a] + bl sub_081274B0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081275B0: .4byte gUnknown_3005B68 +_081275B4: .4byte gUnknown_2039E3F +_081275B8: .4byte gUnknown_2039E58 +_081275BC: .4byte 0x000003DA +_081275C0: .4byte gUnknown_3006050 +_081275C4: .4byte gUnknown_2039E3C +_081275C8: .4byte gUnknown_2039E3A + thumb_func_end sub_0812754C + + thumb_func_start sub_081275CC +sub_081275CC: @ 0x081275CC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0812754C + ldr r1, _081275F0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081275F4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081275F0: .4byte gUnknown_3005B60 +_081275F4: .4byte sub_081275F8 + thumb_func_end sub_081275CC + + thumb_func_start sub_081275F8 +sub_081275F8: @ 0x081275F8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08127640 + adds r5, r0, r1 + ldr r0, _08127644 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081276AC + ldrb r0, [r5, #0x1a] + bl sub_081AE2DC + adds r4, r0, #0 + ldrb r0, [r5, #0x1a] + ldr r7, _08127648 + ldr r1, _0812764C + mov r8, r1 + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08127650 + adds r0, #1 + cmp r4, r0 + bne _08127670 + b _081276AC + .align 2, 0 +_08127640: .4byte gUnknown_3005B68 +_08127644: .4byte gUnknown_2037C74 +_08127648: .4byte gUnknown_2039E3C +_0812764C: .4byte gUnknown_2039E3A +_08127650: + movs r0, #5 + bl sub_080A306C + ldr r0, _0812766C + movs r2, #0x16 + ldrsh r1, [r5, r2] + lsls r1, r1, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r6, #0 + bl _call_via_r1 + b _081276AC + .align 2, 0 +_0812766C: .4byte gUnknown_8581A5C +_08127670: + movs r0, #5 + bl sub_080A306C + ldr r0, _081276B8 + strb r4, [r0] + bl sub_08127504 + ldrb r0, [r5, #0x1a] + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE3A0 + movs r0, #1 + bl sub_081269F8 + bl sub_08127758 + ldr r0, _081276BC + ldr r0, [r0] + bl sub_08000BF0 + ldr r1, _081276C0 + movs r2, #0x16 + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 +_081276AC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081276B8: .4byte gUnknown_2039E3E +_081276BC: .4byte gUnknown_2039E58 +_081276C0: .4byte gUnknown_8581A5C + thumb_func_end sub_081275F8 + + thumb_func_start sub_081276C4 +sub_081276C4: @ 0x081276C4 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + bl sub_081269BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08126F20 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081276C4 + + thumb_func_start sub_081276F0 +sub_081276F0: @ 0x081276F0 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r0, _08127710 + ldrb r5, [r0, #3] + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _08127714 + ldrb r0, [r0] + cmp r4, r0 + blo _0812771C + ldr r2, _08127718 + b _08127732 + .align 2, 0 +_08127710: .4byte gUnknown_2039E54 +_08127714: .4byte gUnknown_2039E1D +_08127718: .4byte gUnknown_85C9423 +_0812771C: + ldr r2, _08127750 + ldr r0, _08127754 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x14 + adds r0, r0, r2 + ldr r2, [r0] +_08127732: + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08127750: .4byte gUnknown_8580CD0 +_08127754: .4byte gUnknown_2039E18 + thumb_func_end sub_081276F0 + + thumb_func_start sub_08127758 +sub_08127758: @ 0x08127758 + push {lr} + movs r0, #3 + bl sub_081269F8 + movs r0, #2 + bl sub_081269F8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127758 + + thumb_func_start sub_0812776C +sub_0812776C: @ 0x0812776C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _08127784 +_08127776: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08127788 + movs r0, #1 + b _08127794 + .align 2, 0 +_08127784: .4byte gUnknown_2039E1E +_08127788: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _08127776 + movs r0, #0 +_08127794: + pop {r1} + bx r1 + thumb_func_end sub_0812776C + + thumb_func_start sub_08127798 +sub_08127798: @ 0x08127798 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _081277B0 +_081277A2: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081277B4 + movs r0, #1 + b _081277C0 + .align 2, 0 +_081277B0: .4byte gUnknown_2039E2E +_081277B4: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xb + bls _081277A2 + movs r0, #0 +_081277C0: + pop {r1} + bx r1 + thumb_func_end sub_08127798 + + thumb_func_start sub_081277C4 +sub_081277C4: @ 0x081277C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r5, #0 + ldr r0, _08127864 + movs r1, #0 + movs r2, #0x10 + bl memset + ldr r0, _08127868 + movs r1, #0 + movs r2, #0xc + bl memset + movs r6, #0 + ldr r0, _0812786C + mov sl, r0 + ldr r1, _08127870 + mov sb, r1 + ldr r3, _08127874 + mov r8, r3 +_081277F2: + mov r1, sl + ldr r0, [r1] + add r0, sb + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _08127892 + movs r2, #0 + mov r3, r8 + ldrb r0, [r3] + lsls r0, r0, #3 + ldr r1, _08127878 + adds r0, r0, r1 + ldrb r0, [r0, #4] + cmp r2, r0 + bhs _08127892 + ldr r7, _08127864 + adds r3, r1, #0 + mov ip, r3 +_08127818: + ldr r0, _0812787C + ldr r1, [r0] + adds r1, r1, r2 + mov r3, sl + ldr r0, [r3] + add r0, sb + adds r0, r0, r6 + ldrb r1, [r1] + adds r4, r2, #1 + ldrb r0, [r0] + cmp r1, r0 + bne _08127880 + movs r1, #0 + cmp r1, r5 + bhs _08127852 + ldrb r0, [r7] + cmp r0, r4 + beq _08127852 + ldr r3, _08127864 + adds r2, r4, #0 +_08127840: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r5 + bhs _08127852 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08127840 +_08127852: + cmp r1, r5 + bne _08127880 + adds r0, r5, r7 + strb r4, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _08127892 + .align 2, 0 +_08127864: .4byte gUnknown_2039E1E +_08127868: .4byte gUnknown_2039E2E +_0812786C: .4byte gUnknown_3005AEC +_08127870: .4byte 0x00001AAE +_08127874: .4byte gUnknown_2039E3F +_08127878: .4byte gUnknown_203B90C +_0812787C: .4byte gUnknown_2039E18 +_08127880: + lsls r0, r4, #0x10 + lsrs r2, r0, #0x10 + mov r1, r8 + ldrb r0, [r1] + lsls r0, r0, #3 + add r0, ip + ldrb r0, [r0, #4] + cmp r2, r0 + blo _08127818 +_08127892: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0xf + bls _081277F2 + movs r5, #0 + movs r6, #0 + ldr r3, _081278BC + mov r8, r3 +_081278A4: + ldr r0, _081278C0 + ldr r0, [r0] + ldr r1, _081278C4 + adds r0, r0, r1 + adds r0, r0, r6 + ldrb r0, [r0] + adds r7, r6, #1 + cmp r0, #0 + beq _0812794A + movs r2, #0 + b _0812793C + .align 2, 0 +_081278BC: .4byte gUnknown_203B90C +_081278C0: .4byte gUnknown_3005AEC +_081278C4: .4byte 0x0000271C +_081278C8: + ldr r0, _08127928 + ldr r1, [r0] + adds r1, r1, r2 + ldr r0, _0812792C + ldr r0, [r0] + ldr r3, _08127930 + adds r0, r0, r3 + adds r0, r0, r6 + ldrb r1, [r1] + adds r4, r2, #1 + ldrb r0, [r0] + cmp r1, r0 + bne _08127938 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0812776C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08127938 + movs r1, #0 + cmp r1, r5 + bhs _08127916 + ldr r2, _08127934 + ldrb r0, [r2] + cmp r0, r4 + beq _08127916 + adds r3, r2, #0 + adds r2, r4, #0 +_08127904: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r5 + bhs _08127916 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08127904 +_08127916: + cmp r1, r5 + bne _08127938 + ldr r0, _08127934 + adds r0, r5, r0 + strb r4, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _0812794A + .align 2, 0 +_08127928: .4byte gUnknown_2039E18 +_0812792C: .4byte gUnknown_3005AEC +_08127930: .4byte 0x0000271C +_08127934: .4byte gUnknown_2039E2E +_08127938: + lsls r0, r4, #0x10 + lsrs r2, r0, #0x10 +_0812793C: + ldr r0, _08127960 + ldrb r0, [r0] + lsls r0, r0, #3 + add r0, r8 + ldrb r0, [r0, #4] + cmp r2, r0 + blo _081278C8 +_0812794A: + lsls r0, r7, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0xb + bls _081278A4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08127960: .4byte gUnknown_2039E3F + thumb_func_end sub_081277C4 + + thumb_func_start sub_08127964 +sub_08127964: @ 0x08127964 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081277C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127964 + + thumb_func_start sub_08127974 +sub_08127974: @ 0x08127974 + push {r4, lr} + movs r2, #0 + ldr r0, _081279A0 + ldrh r0, [r0] + ldr r1, _081279A4 + ldrh r1, [r1] + adds r0, r0, r1 + adds r1, r0, #1 + ldr r4, _081279A8 + ldr r3, _081279AC +_08127988: + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, r1 + beq _0812799C + cmp r2, #0xb + bhi _081279B0 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, r1 + bne _081279B0 +_0812799C: + movs r0, #0 + b _081279BC + .align 2, 0 +_081279A0: .4byte gUnknown_2039E3C +_081279A4: .4byte gUnknown_2039E3A +_081279A8: .4byte gUnknown_2039E1E +_081279AC: .4byte gUnknown_2039E2E +_081279B0: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _08127988 + movs r0, #1 +_081279BC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08127974 + + thumb_func_start sub_081279C4 +sub_081279C4: @ 0x081279C4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081269BC + adds r0, r4, #0 + bl sub_081275CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081279C4 + + thumb_func_start sub_081279E0 +sub_081279E0: @ 0x081279E0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + ldr r1, _08127A04 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08127A08 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127A04: .4byte gUnknown_3005B60 +_08127A08: .4byte sub_081279C4 + thumb_func_end sub_081279E0 + + thumb_func_start sub_08127A0C +sub_08127A0C: @ 0x08127A0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08127A38 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08127A32 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + movs r0, #1 + bl sub_081269BC + adds r0, r4, #0 + bl sub_081275CC +_08127A32: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127A38: .4byte gUnknown_3002360 + thumb_func_end sub_08127A0C + + thumb_func_start sub_08127A3C +sub_08127A3C: @ 0x08127A3C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _08127A74 + adds r4, r4, r0 + bl sub_08127504 + bl sub_08127758 + ldrb r0, [r4, #0x1a] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldr r0, _08127A78 + ldr r0, [r0] + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_08126E1C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08127A74: .4byte gUnknown_3005B68 +_08127A78: .4byte gUnknown_2039E58 + thumb_func_end sub_08127A3C + + thumb_func_start sub_08127A7C +sub_08127A7C: @ 0x08127A7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08127AAC + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r4, r2, r3 + ldr r0, _08127AB0 + ldr r1, [r0] + ldrh r0, [r1] + strh r0, [r4, #0xe] + ldrh r0, [r1, #2] + strh r0, [r4, #0x10] + adds r3, #8 + adds r2, r2, r3 + adds r1, r2, #2 + adds r0, r2, #0 + bl sub_0808B410 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08127AAC: .4byte gUnknown_3005B60 +_08127AB0: .4byte gUnknown_3005AEC + thumb_func_end sub_08127A7C + + thumb_func_start sub_08127AB4 +sub_08127AB4: @ 0x08127AB4 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_08089598 + ldr r0, _08127AFC + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, #5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + ldr r3, _08127B00 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r3 + movs r3, #0xe + ldrsb r3, [r4, r3] + ldrb r4, [r4, #0x10] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp] + bl sub_08084554 + bl sub_08084540 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08127AFC: .4byte gUnknown_3005AEC +_08127B00: .4byte gUnknown_3005B60 + thumb_func_end sub_08127AB4 + + thumb_func_start sub_08127B04 +sub_08127B04: @ 0x08127B04 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _08127B24 + cmp r2, #0x22 + beq _08127B2C + cmp r2, #0x26 + bne _08127B36 + ldr r0, _08127B28 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x10 + b _08127B36 + .align 2, 0 +_08127B24: .4byte 0x0000FFFF +_08127B28: .4byte gUnknown_85821C8 +_08127B2C: + ldr r0, _08127B3C + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x10 +_08127B36: + pop {r1} + bx r1 + .align 2, 0 +_08127B3C: .4byte gUnknown_85821D0 + thumb_func_end sub_08127B04 + + thumb_func_start sub_08127B40 +sub_08127B40: @ 0x08127B40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + ldr r4, [sp, #0x58] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #8] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0xc] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp, #0x10] + movs r2, #0 + lsls r0, r3, #0x10 + cmp r2, r3 + blo _08127B76 + b _08127CF4 +_08127B76: + ldr r1, [sp, #8] + str r1, [sp, #0x2c] + str r0, [sp, #0x34] +_08127B7C: + ldr r3, [sp, #4] + ldr r4, [sp, #0xc] + subs r1, r3, r4 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r0, #1 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x18] + movs r0, #0 + str r0, [sp, #0x14] + adds r1, r2, #1 + str r1, [sp, #0x30] + ldr r3, [sp, #0x2c] + cmp r0, r3 + blo _08127BA0 + b _08127CE4 +_08127BA0: + ldr r0, _08127C10 + ldr r4, [sp, #0x10] + lsls r1, r4, #3 + subs r1, r1, r4 + str r1, [sp, #0x1c] + lsls r1, r1, #2 + adds r3, r1, r0 + str r3, [sp, #0x28] + ldr r4, _08127C14 + adds r1, r1, r4 + str r1, [sp, #0x20] + ldr r1, [sp, #8] + adds r0, r2, #0 + muls r0, r1, r0 + str r0, [sp, #0x24] +_08127BBE: + ldr r2, [sp] + ldr r3, [sp, #0x14] + adds r0, r2, r3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r4, [sp, #0x24] + adds r1, r4, r3 + ldr r2, [sp, #0x20] + ldr r0, [r2] + lsls r1, r1, #1 + adds r1, r1, r0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + lsls r4, r0, #0x10 + lsls r0, r4, #8 + lsrs r0, r0, #0x18 + bl sub_08088C3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08127C06 + ldr r1, [sp, #0x28] + ldrb r0, [r1, #0xc] + cmp r0, #1 + beq _08127C18 + lsrs r0, r4, #0x1c + cmp r0, #0 + beq _08127C18 +_08127C06: + movs r2, #0xc0 + lsls r2, r2, #4 + mov sl, r2 + b _08127C1C + .align 2, 0 +_08127C10: .4byte gUnknown_8580CD0 +_08127C14: .4byte gUnknown_8580CE8 +_08127C18: + movs r3, #0 + mov sl, r3 +_08127C1C: + ldr r4, [sp, #0x28] + ldrb r0, [r4, #0xc] + lsls r5, r5, #0x10 + mov r8, r5 + ldr r1, [sp, #0x18] + lsls r1, r1, #0x10 + mov sb, r1 + cmp r0, #3 + beq _08127C48 + asrs r0, r5, #0x10 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r7, #1 + cmp r0, #1 + beq _08127C4A +_08127C48: + movs r7, #0 +_08127C4A: + ldr r0, _08127C9C + ldr r2, [sp, #0x1c] + lsls r4, r2, #2 + adds r0, r4, r0 + ldrb r0, [r0] + ldr r3, [sp, #0x24] + ldr r1, [sp, #0x14] + adds r5, r3, r1 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_08127B04 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08127CA0 + cmp r6, r0 + beq _08127CA8 + mov r2, r8 + asrs r0, r2, #0x10 + mov r3, sb + asrs r1, r3, #0x10 + ldr r3, _08127CA4 + adds r2, r4, r3 + ldr r2, [r2] + lsls r3, r5, #1 + adds r3, r3, r2 + movs r4, #0x80 + lsls r4, r4, #2 + adds r2, r4, #0 + orrs r7, r2 + ldrh r3, [r3] + adds r2, r7, r3 + mov r3, sl + orrs r3, r2 + orrs r3, r6 + lsls r2, r3, #0x10 + lsrs r2, r2, #0x10 + bl sub_08087C9C + b _08127CD2 + .align 2, 0 +_08127C9C: .4byte gUnknown_8580CD0 +_08127CA0: .4byte 0x0000FFFF +_08127CA4: .4byte gUnknown_8580CE8 +_08127CA8: + mov r1, r8 + asrs r0, r1, #0x10 + mov r2, sb + asrs r1, r2, #0x10 + ldr r3, _08127D04 + adds r2, r4, r3 + ldr r2, [r2] + lsls r3, r5, #1 + adds r3, r3, r2 + movs r4, #0x80 + lsls r4, r4, #2 + adds r2, r4, #0 + orrs r7, r2 + ldrh r3, [r3] + adds r2, r7, r3 + mov r3, sl + orrs r3, r2 + lsls r2, r3, #0x10 + lsrs r2, r2, #0x10 + bl sub_08087C54 +_08127CD2: + ldr r0, [sp, #0x14] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x14] + ldr r4, [sp, #0x2c] + cmp r0, r4 + bhs _08127CE4 + b _08127BBE +_08127CE4: + ldr r1, [sp, #0x30] + lsls r0, r1, #0x10 + lsrs r2, r0, #0x10 + ldr r3, [sp, #0x34] + lsrs r0, r3, #0x10 + cmp r2, r0 + bhs _08127CF4 + b _08127B7C +_08127CF4: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08127D04: .4byte gUnknown_8580CE8 + thumb_func_end sub_08127B40 + + thumb_func_start sub_08127D08 +sub_08127D08: @ 0x08127D08 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r1, _08127D34 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xd] + cmp r0, #9 + bhi _08127DE4 + lsls r0, r0, #2 + ldr r1, _08127D38 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08127D34: .4byte gUnknown_8580CD0 +_08127D38: .4byte _08127D3C +_08127D3C: @ jump table + .4byte _08127D64 @ case 0 + .4byte _08127D6E @ case 1 + .4byte _08127D78 @ case 2 + .4byte _08127D88 @ case 3 + .4byte _08127D92 @ case 4 + .4byte _08127D9C @ case 5 + .4byte _08127DAC @ case 6 + .4byte _08127DB6 @ case 7 + .4byte _08127DC6 @ case 8 + .4byte _08127DD6 @ case 9 +_08127D64: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #1 + b _08127D80 +_08127D6E: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #2 + b _08127D80 +_08127D78: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #3 +_08127D80: + movs r3, #1 + bl sub_08127B40 + b _08127DE4 +_08127D88: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #4 + b _08127DA4 +_08127D92: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #2 + b _08127DA4 +_08127D9C: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #1 +_08127DA4: + movs r3, #2 + bl sub_08127B40 + b _08127DE4 +_08127DAC: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #1 + b _08127DCE +_08127DB6: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #2 + movs r3, #4 + bl sub_08127B40 + b _08127DE4 +_08127DC6: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #3 +_08127DCE: + movs r3, #3 + bl sub_08127B40 + b _08127DE4 +_08127DD6: + str r2, [sp] + adds r0, r3, #0 + adds r1, r4, #0 + movs r2, #3 + movs r3, #2 + bl sub_08127B40 +_08127DE4: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08127D08 + + thumb_func_start sub_08127DEC +sub_08127DEC: @ 0x08127DEC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r6, #0 + ldr r7, _08127ECC + ldr r0, _08127ED0 + mov r8, r0 + ldr r1, _08127ED4 + mov sl, r1 + ldr r2, _08127ED8 + mov sb, r2 +_08127E08: + adds r5, r6, #0 + adds r5, #0xae + adds r4, r5, #0 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08127EF0 + adds r0, r4, #0 + bl sub_0809D040 + movs r2, #0 + ldr r0, [r7, #4] + ldrb r4, [r0] + cmp r2, r4 + bhs _08127E56 + ldr r0, [r0, #4] + ldrh r0, [r0, #0x14] + cmp r0, r5 + beq _08127E56 + ldr r0, _08127ECC + ldr r3, [r0, #4] + ldrb r6, [r3] + adds r4, r5, #0 +_08127E3C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r6 + bhs _08127E56 + ldr r0, [r3, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + cmp r0, r4 + bne _08127E3C +_08127E56: + ldr r0, [r7, #4] + ldr r1, [r0, #4] + lsls r4, r2, #1 + adds r4, r4, r2 + lsls r4, r4, #3 + adds r1, r4, r1 + ldr r5, _08127EDC + adds r0, r5, #0 + ldrb r1, [r1, #1] + adds r0, r0, r1 + ldr r1, _08127EE0 + ldr r1, [r1] + ldr r1, [r1, #0x18] + ldrh r1, [r1] + bl sub_0809CF88 + ldr r0, [r7, #4] + ldr r0, [r0, #4] + adds r4, r4, r0 + ldrb r0, [r4] + mov r6, r8 + strh r0, [r6] + ldr r1, _08127EE4 + ldrh r1, [r1] + mov r2, sl + strh r1, [r2] + ldr r1, _08127EE8 + ldrh r1, [r1] + ldr r4, _08127EEC + strh r1, [r4] + mov r5, sb + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808D61C + ldrb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + mov r6, sl + movs r4, #0 + ldrsh r3, [r6, r4] + ldr r5, _08127EEC + movs r6, #0 + ldrsh r4, [r5, r6] + str r4, [sp] + bl sub_0808E518 + mov r1, r8 + ldrb r0, [r1] + mov r4, sb + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808EBC4 + b _08127EFA + .align 2, 0 +_08127ECC: .4byte gUnknown_2036FB8 +_08127ED0: .4byte gUnknown_2037282 +_08127ED4: .4byte gUnknown_2037284 +_08127ED8: .4byte gUnknown_3005AEC +_08127EDC: .4byte 0x00003F20 +_08127EE0: .4byte gUnknown_2039E5C +_08127EE4: .4byte gUnknown_203A700 +_08127EE8: .4byte gUnknown_203A702 +_08127EEC: .4byte gUnknown_2037286 +_08127EF0: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xd + bls _08127E08 +_08127EFA: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08127DEC + + thumb_func_start sub_08127F0C +sub_08127F0C: @ 0x08127F0C + push {lr} + movs r1, #0 + ldr r0, _08127F28 + ldrb r2, [r0, #8] + cmp r1, r2 + bhs _08127F36 + ldr r3, [r0] +_08127F1A: + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08127F2C + movs r0, #1 + b _08127F38 + .align 2, 0 +_08127F28: .4byte gUnknown_2039E48 +_08127F2C: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + blo _08127F1A +_08127F36: + movs r0, #0 +_08127F38: + pop {r1} + bx r1 + thumb_func_end sub_08127F0C + + thumb_func_start sub_08127F3C +sub_08127F3C: @ 0x08127F3C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08127F6C + ldrb r0, [r0, #9] + cmp r0, #1 + bne _08127F80 + ldr r0, _08127F70 + ldrb r0, [r0] + cmp r0, #6 + beq _08127F80 + cmp r0, #7 + beq _08127F80 + ldr r4, _08127F74 + ldr r1, _08127F78 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08127F7C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _08128020 + .align 2, 0 +_08127F6C: .4byte gUnknown_2039E48 +_08127F70: .4byte gUnknown_2039E3F +_08127F74: .4byte gUnknown_2021C7C +_08127F78: .4byte gUnknown_85CA7D9 +_08127F7C: .4byte sub_08127A0C +_08127F80: + bl sub_08127974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0812800C + bl sub_08127F0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08127FBC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _08127FB4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _08127FB8 + str r1, [r0] + b _08128020 + .align 2, 0 +_08127FB4: .4byte gUnknown_3005B60 +_08127FB8: .4byte sub_08128034 +_08127FBC: + ldr r0, _08127FDC + ldr r4, _08127FE0 + ldrb r1, [r4, #8] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldrb r0, [r4, #9] + cmp r0, #0 + bne _08127FEC + ldr r0, _08127FE4 + ldr r1, _08127FE8 + bl sub_08008BCC + b _08127FF4 + .align 2, 0 +_08127FDC: .4byte gUnknown_2021C40 +_08127FE0: .4byte gUnknown_2039E48 +_08127FE4: .4byte gUnknown_2021C7C +_08127FE8: .4byte gUnknown_85CA776 +_08127FEC: + ldr r0, _08128000 + ldr r1, _08128004 + bl sub_08008BCC +_08127FF4: + ldr r1, _08128000 + ldr r2, _08128008 + adds r0, r5, #0 + bl sub_081976D0 + b _08128020 + .align 2, 0 +_08128000: .4byte gUnknown_2021C7C +_08128004: .4byte gUnknown_85CA799 +_08128008: .4byte sub_08127A0C +_0812800C: + ldr r4, _08128028 + ldr r1, _0812802C + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08128030 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_08128020: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08128028: .4byte gUnknown_2021C7C +_0812802C: .4byte gUnknown_85CA768 +_08128030: .4byte sub_08127A0C + thumb_func_end sub_08127F3C + + thumb_func_start sub_08128034 +sub_08128034: @ 0x08128034 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08128058 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r7, r0, r1 + movs r1, #0xc + ldrsh r0, [r7, r1] + cmp r0, #1 + beq _08128080 + cmp r0, #1 + bgt _0812805C + cmp r0, #0 + beq _08128062 + b _081280E6 + .align 2, 0 +_08128058: .4byte gUnknown_3005B60 +_0812805C: + cmp r0, #2 + beq _081280D0 + b _081280E6 +_08128062: + ldr r0, _0812807C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081280E6 + adds r0, r6, #0 + bl sub_08127A7C + movs r0, #1 + strh r0, [r7, #0xc] + b _081280E6 + .align 2, 0 +_0812807C: .4byte gUnknown_2037C74 +_08128080: + ldr r4, _081280C0 + ldrb r0, [r4, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #8] + ldr r5, _081280C4 + ldr r0, _081280C8 + ldrb r1, [r0] + ldr r0, _081280CC + ldr r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_081280EC + adds r0, r6, #0 + bl sub_08128240 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0812817C + bl sub_080AE99C + ldrb r1, [r4, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #8] + movs r0, #2 + strh r0, [r7, #0xc] + b _081280E6 + .align 2, 0 +_081280C0: .4byte gUnknown_2037C74 +_081280C4: .4byte gUnknown_2039E5C +_081280C8: .4byte gUnknown_2039E3E +_081280CC: .4byte gUnknown_2039E18 +_081280D0: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081280E6 + movs r0, #0 + strh r0, [r7, #0x20] + adds r0, r6, #0 + bl sub_08128FB8 +_081280E6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08128034 + + thumb_func_start sub_081280EC +sub_081280EC: @ 0x081280EC + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _08128168 + ldr r4, _0812816C + ldr r5, _08128170 + ldr r2, [r5, #4] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x2e] + strb r0, [r3] + adds r0, r6, #0 + bl sub_08129314 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r5, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [r5, #4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, _08128174 + str r1, [r0] + adds r2, r2, r4 + ldr r3, _08128178 + ldr r0, [r6] + ldrb r0, [r0, #0xd] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + strh r0, [r2, #0x20] + ldr r0, [r5, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, [r6] + ldrb r0, [r0, #0xd] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #3] + strh r0, [r1, #0x22] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08128168: .4byte gUnknown_203A704 +_0812816C: .4byte gUnknown_20205AC +_08128170: .4byte gUnknown_3005B30 +_08128174: .4byte sub_081292B0 +_08128178: .4byte gUnknown_8582134 + thumb_func_end sub_081280EC + + thumb_func_start sub_0812817C +sub_0812817C: @ 0x0812817C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081281D0 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + ldrb r2, [r2, #0x12] + ldr r3, _081281D4 + ldr r0, [r1] + ldrb r4, [r0, #0xd] + lsls r1, r4, #2 + adds r1, r1, r3 + lsls r0, r2, #4 + ldrb r1, [r1, #2] + adds r0, r0, r1 + subs r2, #1 + lsls r2, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r4, #2 + beq _081281B6 + cmp r4, #8 + beq _081281B6 + cmp r4, #9 + bne _081281BE +_081281B6: + adds r0, r2, #0 + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_081281BE: + ldr r0, _081281D8 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _081281E0 + ldr r1, _081281DC + str r0, [sp] + movs r0, #0xc1 + b _081281E8 + .align 2, 0 +_081281D0: .4byte gUnknown_3005B60 +_081281D4: .4byte gUnknown_8582134 +_081281D8: .4byte gUnknown_3005AF0 +_081281DC: .4byte sub_08007140 +_081281E0: + ldr r1, _0812822C + movs r0, #0 + str r0, [sp] + movs r0, #0xc2 +_081281E8: + movs r3, #0x48 + bl sub_0808D6D8 + ldr r1, _08128230 + strb r0, [r1] + ldr r3, _08128234 + ldr r0, _08128230 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + ldr r4, _08128238 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + bl sub_08006E00 + ldr r0, _0812823C + ldr r0, [r0, #4] + strb r0, [r4] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812822C: .4byte sub_08007140 +_08128230: .4byte gUnknown_203A705 +_08128234: .4byte gUnknown_20205AC +_08128238: .4byte gUnknown_203A704 +_0812823C: .4byte gUnknown_3005B30 + thumb_func_end sub_0812817C + + thumb_func_start sub_08128240 +sub_08128240: @ 0x08128240 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08128270 + ldr r0, _08128274 + ldrb r1, [r0] + ldr r0, _08128278 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0xd] + cmp r0, #9 + bls _08128264 + b _0812838A +_08128264: + lsls r0, r0, #2 + ldr r1, _0812827C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128270: .4byte gUnknown_8580CD0 +_08128274: .4byte gUnknown_2039E3E +_08128278: .4byte gUnknown_2039E18 +_0812827C: .4byte _08128280 +_08128280: @ jump table + .4byte _081282A8 @ case 0 + .4byte _081282BC @ case 1 + .4byte _081282D4 @ case 2 + .4byte _081282EC @ case 3 + .4byte _08128300 @ case 4 + .4byte _08128314 @ case 5 + .4byte _08128328 @ case 6 + .4byte _08128348 @ case 7 + .4byte _08128360 @ case 8 + .4byte _08128378 @ case 9 +_081282A8: + ldr r0, _081282B8 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + b _0812836C + .align 2, 0 +_081282B8: .4byte gUnknown_3005B60 +_081282BC: + ldr r1, _081282D0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #0x12] + movs r1, #1 + b _08128388 + .align 2, 0 +_081282D0: .4byte gUnknown_3005B60 +_081282D4: + ldr r1, _081282E8 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #3 + strh r1, [r0, #0x12] + movs r1, #1 + b _08128388 + .align 2, 0 +_081282E8: .4byte gUnknown_3005B60 +_081282EC: + ldr r1, _081282FC + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #4 + b _08128384 + .align 2, 0 +_081282FC: .4byte gUnknown_3005B60 +_08128300: + ldr r0, _08128310 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #2 + b _0812836C + .align 2, 0 +_08128310: .4byte gUnknown_3005B60 +_08128314: + ldr r1, _08128324 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + b _08128384 + .align 2, 0 +_08128324: .4byte gUnknown_3005B60 +_08128328: + ldr r0, _08128344 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x12] + movs r0, #3 + strh r0, [r1, #0x14] + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + b _0812838A + .align 2, 0 +_08128344: .4byte gUnknown_3005B60 +_08128348: + ldr r1, _0812835C + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #0x12] + movs r1, #4 + b _08128388 + .align 2, 0 +_0812835C: .4byte gUnknown_3005B60 +_08128360: + ldr r0, _08128374 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #3 +_0812836C: + strh r0, [r1, #0x12] + strh r0, [r1, #0x14] + b _0812838A + .align 2, 0 +_08128374: .4byte gUnknown_3005B60 +_08128378: + ldr r1, _08128390 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #3 +_08128384: + strh r1, [r0, #0x12] + movs r1, #2 +_08128388: + strh r1, [r0, #0x14] +_0812838A: + pop {r0} + bx r0 + .align 2, 0 +_08128390: .4byte gUnknown_3005B60 + thumb_func_end sub_08128240 + + thumb_func_start sub_08128394 +sub_08128394: @ 0x08128394 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081283DC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + ldr r3, _081283E0 + ldr r0, _081283E4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #1 + strh r2, [r0, #0x3c] + ldr r0, _081283E8 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x3c] + bl sub_08128DC0 + adds r0, r4, #0 + bl sub_08128928 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081283DC: .4byte gUnknown_3005B60 +_081283E0: .4byte gUnknown_20205AC +_081283E4: .4byte gUnknown_203A704 +_081283E8: .4byte gUnknown_203A705 + thumb_func_end sub_08128394 + + thumb_func_start sub_081283EC +sub_081283EC: @ 0x081283EC + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08128440 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + ldr r3, _08128444 + ldr r0, _08128448 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #1 + strh r2, [r0, #0x3c] + ldr r0, _0812844C + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x3c] + bl sub_08128DC0 + ldr r5, _08128450 + ldr r1, _08128454 + adds r0, r5, #0 + bl sub_08008BCC + ldr r2, _08128458 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081976D0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08128440: .4byte gUnknown_3005B60 +_08128444: .4byte gUnknown_20205AC +_08128448: .4byte gUnknown_203A704 +_0812844C: .4byte gUnknown_203A705 +_08128450: .4byte gUnknown_2021C7C +_08128454: .4byte gUnknown_85CA75C +_08128458: .4byte sub_08128B60 + thumb_func_end sub_081283EC + + thumb_func_start sub_0812845C +sub_0812845C: @ 0x0812845C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + bl sub_08088C28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08128476 + cmp r4, #0 + beq _0812847A +_08128476: + movs r0, #0 + b _0812847C +_0812847A: + movs r0, #1 +_0812847C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812845C + + thumb_func_start sub_08128484 +sub_08128484: @ 0x08128484 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, _081284C0 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + movs r3, #0xe + ldrsh r0, [r2, r3] + adds r0, #7 + cmp r1, r0 + bne _081284C4 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + movs r3, #0x10 + ldrsh r0, [r2, r3] + adds r0, #7 + cmp r1, r0 + bne _081284C4 + cmp r5, #0 + beq _081284C4 + movs r0, #0 + b _081284C6 + .align 2, 0 +_081284C0: .4byte gUnknown_3005B60 +_081284C4: + movs r0, #1 +_081284C6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08128484 + + thumb_func_start sub_081284CC +sub_081284CC: @ 0x081284CC + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088C28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0812850C + ldrb r0, [r5] + cmp r0, #0x21 + bne _081284FA + adds r0, r4, #0 + bl sub_08088CDC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08128508 +_081284FA: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088C78 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812850C +_08128508: + movs r0, #1 + b _0812850E +_0812850C: + movs r0, #0 +_0812850E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081284CC + + thumb_func_start sub_08128514 +sub_08128514: @ 0x08128514 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + str r1, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r1, _08128550 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r2, [r0, #0x14] + str r2, [sp, #4] + ldrb r0, [r0, #0x12] + str r0, [sp, #8] + ldr r3, [sp] + ldrb r0, [r3, #0xc] + adds r2, r1, #0 + cmp r0, #4 + bls _08128546 + b _08128914 +_08128546: + lsls r0, r0, #2 + ldr r1, _08128554 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08128550: .4byte gUnknown_3005B60 +_08128554: .4byte _08128558 +_08128558: @ jump table + .4byte _0812856C @ case 0 + .4byte _0812856C @ case 1 + .4byte _08128658 @ case 2 + .4byte _0812880C @ case 3 + .4byte _08128890 @ case 4 +_0812856C: + movs r6, #0 + ldr r0, [sp, #4] + cmp r6, r0 + blo _08128576 + b _08128914 +_08128576: + mov r1, sl + lsls r1, r1, #2 + str r1, [sp, #0x1c] +_0812857C: + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + ldr r3, _08128654 + adds r0, r0, r3 + ldrh r0, [r0, #0xa] + subs r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r7, #0 + adds r6, #1 + str r6, [sp, #0x14] + ldr r0, [sp, #8] + cmp r7, r0 + bhs _08128646 + mov r1, sb + lsls r1, r1, #0x10 + str r1, [sp, #0xc] + asrs r1, r1, #0x10 + mov sb, r1 +_081285A8: + ldr r0, [sp, #0x1c] + add r0, sl + lsls r0, r0, #3 + ldr r2, _08128654 + adds r0, r0, r2 + ldrh r0, [r0, #8] + adds r0, r0, r7 + lsls r0, r0, #0x10 + mov r8, r0 + asrs r6, r0, #0x10 + adds r0, r6, #0 + mov r1, sb + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, [sp, #4] + ldr r1, [sp, #0x14] + subs r0, r3, r1 + ldr r2, [sp, #8] + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r7 + ldr r3, [sp] + ldr r0, [r3, #0x18] + lsls r1, r1, #1 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + movs r3, #0xf0 + lsls r3, r3, #8 + adds r1, r3, #0 + adds r5, r1, #0 + ands r5, r0 + adds r0, r4, #0 + ldr r1, [sp] + bl sub_081284CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812860A + b _081288E4 +_0812860A: + mov r0, sl + adds r1, r6, #0 + mov r2, sb + adds r3, r5, #0 + bl sub_08128484 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812861E + b _081288E4 +_0812861E: + mov r1, r8 + lsrs r0, r1, #0x10 + ldr r2, [sp, #0xc] + lsrs r1, r2, #0x10 + movs r2, #0 + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0812863A + cmp r4, #0x10 + beq _0812863A + b _081288E4 +_0812863A: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, [sp, #8] + cmp r7, r3 + blo _081285A8 +_08128646: + ldr r1, [sp, #0x14] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + ldr r2, [sp, #4] + cmp r6, r2 + blo _0812857C + b _08128914 + .align 2, 0 +_08128654: .4byte gUnknown_3005B60 +_08128658: + movs r6, #0 + mov r3, sl + lsls r3, r3, #2 + str r3, [sp, #0x1c] + ldr r0, [sp, #4] + subs r0, #1 + str r0, [sp, #0x18] + cmp r6, r0 + bge _08128744 + adds r0, r3, #0 + add r0, sl + lsls r0, r0, #3 + str r0, [sp, #0x10] +_08128672: + ldr r1, [sp, #0x10] + adds r0, r1, r2 + ldrh r0, [r0, #0xa] + subs r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r7, #0 + adds r6, #1 + str r6, [sp, #0x14] + ldr r3, [sp, #8] + cmp r7, r3 + bhs _08128738 + lsls r0, r0, #0x10 + str r0, [sp, #0x20] +_08128690: + ldr r1, [sp, #0x10] + adds r0, r1, r2 + ldrh r0, [r0, #8] + adds r0, r0, r7 + lsls r0, r0, #0x10 + mov r8, r0 + asrs r6, r0, #0x10 + mov r2, sb + lsls r1, r2, #0x10 + adds r0, r6, #0 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, [sp, #4] + ldr r1, [sp, #0x14] + subs r0, r3, r1 + ldr r2, [sp, #8] + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r7 + ldr r3, [sp] + ldr r0, [r3, #0x18] + lsls r1, r1, #1 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + movs r3, #0xf0 + lsls r3, r3, #8 + adds r1, r3, #0 + adds r5, r1, #0 + ands r5, r0 + adds r0, r4, #0 + bl sub_08088C78 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081286FC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0812845C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081286FC + b _081288E4 +_081286FC: + mov r0, sl + adds r1, r6, #0 + ldr r3, [sp, #0x20] + asrs r2, r3, #0x10 + adds r3, r5, #0 + bl sub_08128484 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08128712 + b _081288E4 +_08128712: + mov r1, r8 + lsrs r0, r1, #0x10 + ldr r2, [sp, #0x20] + lsrs r1, r2, #0x10 + movs r2, #0 + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _0812872A + b _081288E4 +_0812872A: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08128808 + ldr r3, [sp, #8] + cmp r7, r3 + blo _08128690 +_08128738: + ldr r1, [sp, #0x14] + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + ldr r3, [sp, #0x18] + cmp r6, r3 + blt _08128672 +_08128744: + ldr r0, [sp, #0x1c] + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0xa] + ldr r1, [sp, #4] + subs r0, r0, r1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r7, #0 + ldr r3, [sp, #8] + cmp r7, r3 + blo _08128764 + b _08128914 +_08128764: + lsls r0, r0, #0x10 + str r0, [sp, #0x20] +_08128768: + ldr r0, [sp, #0x1c] + add r0, sl + lsls r0, r0, #3 + ldr r1, _08128808 + adds r0, r0, r1 + ldrh r0, [r0, #8] + adds r0, r0, r7 + lsls r0, r0, #0x10 + mov r8, r0 + asrs r6, r0, #0x10 + mov r2, sb + lsls r1, r2, #0x10 + adds r0, r6, #0 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, [sp] + ldr r0, [r3, #0x18] + lsls r1, r7, #1 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08087CD4 + movs r3, #0xf0 + lsls r3, r3, #8 + adds r1, r3, #0 + adds r5, r1, #0 + ands r5, r0 + adds r0, r4, #0 + bl sub_08088C78 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081287CA + adds r0, r4, #0 + bl sub_08088C8C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081287CA + b _081288E4 +_081287CA: + mov r0, sl + adds r1, r6, #0 + ldr r3, [sp, #0x20] + asrs r2, r3, #0x10 + adds r3, r5, #0 + bl sub_08128484 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081287E0 + b _081288E4 +_081287E0: + mov r1, r8 + lsrs r0, r1, #0x10 + ldr r2, [sp, #0x20] + lsrs r1, r2, #0x10 + movs r2, #0 + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _081287FA + cmp r4, #0x10 + bne _081288E4 +_081287FA: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, [sp, #8] + cmp r7, r3 + blo _08128768 + b _08128914 + .align 2, 0 +_08128808: .4byte gUnknown_3005B60 +_0812880C: + movs r6, #0 + ldr r0, [sp, #4] + cmp r6, r0 + blo _08128816 + b _08128914 +_08128816: + mov r1, sl + lsls r0, r1, #2 + add r0, sl + lsls r1, r0, #3 + ldr r2, _0812888C + adds r0, r1, r2 + ldrh r0, [r0, #0xa] + subs r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r7, #0 + ldr r3, [sp, #8] + cmp r7, r3 + bhs _0812887C + adds r0, r2, #0 + adds r1, r1, r0 + mov r8, r1 + mov r1, sb + lsls r0, r1, #0x10 + asrs r5, r0, #0x10 +_08128840: + mov r2, r8 + ldrh r0, [r2, #8] + adds r0, r0, r7 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08088C8C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081288E4 + adds r0, r4, #0 + adds r1, r5, #1 + bl sub_08087B88 + movs r1, #0xa3 + lsls r1, r1, #2 + cmp r0, r1 + beq _081288E4 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, [sp, #8] + cmp r7, r3 + blo _08128840 +_0812887C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [sp, #4] + cmp r6, r0 + blo _08128816 + b _08128914 + .align 2, 0 +_0812888C: .4byte gUnknown_3005B60 +_08128890: + mov r3, sl + lsls r1, r3, #2 + adds r0, r1, r3 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0xa] + mov sb, r0 + movs r7, #0 + str r1, [sp, #0x1c] + ldr r0, [sp, #8] + cmp r7, r0 + bhs _08128914 + adds r6, r2, #0 + mov r1, sb + lsls r1, r1, #0x10 + str r1, [sp, #0x20] +_081288B0: + ldr r0, [sp, #0x1c] + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r6 + ldrh r0, [r0, #8] + adds r0, r0, r7 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + mov r2, sb + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, [sp] + ldrb r0, [r3, #0xd] + cmp r0, #5 + bne _081288E8 +_081288D8: + adds r0, r4, #0 + bl sub_08088CC8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081288F4 +_081288E4: + movs r0, #0 + b _08128916 +_081288E8: + adds r0, r4, #0 + bl sub_08088CB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081288D8 +_081288F4: + adds r0, r5, #0 + ldr r2, [sp, #0x20] + lsrs r1, r2, #0x10 + movs r2, #0 + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bne _081288E4 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, [sp, #8] + cmp r7, r3 + blo _081288B0 +_08128914: + movs r0, #1 +_08128916: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08128514 + + thumb_func_start sub_08128928 +sub_08128928: @ 0x08128928 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08128968 + ldrb r1, [r0] + ldr r0, _0812896C + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08128970 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08128514 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08128980 + ldr r4, _08128974 + ldr r1, _08128978 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _0812897C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _0812899A + .align 2, 0 +_08128968: .4byte gUnknown_2039E3E +_0812896C: .4byte gUnknown_2039E18 +_08128970: .4byte gUnknown_8580CD0 +_08128974: .4byte gUnknown_2021C7C +_08128978: .4byte gUnknown_85CA745 +_0812897C: .4byte sub_081289AC +_08128980: + movs r0, #0x20 + bl sub_080A306C + ldr r4, _081289A0 + ldr r1, _081289A4 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _081289A8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_0812899A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081289A0: .4byte gUnknown_2021C7C +_081289A4: .4byte gUnknown_85CA750 +_081289A8: .4byte sub_08129000 + thumb_func_end sub_08128928 + + thumb_func_start sub_081289AC +sub_081289AC: @ 0x081289AC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _081289C8 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081289C8: .4byte gUnknown_85821A8 + thumb_func_end sub_081289AC + + thumb_func_start sub_081289CC +sub_081289CC: @ 0x081289CC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_08128A8C + ldr r2, _08128A14 + ldr r0, _08128A18 + ldrb r1, [r0] + ldr r0, _08128A1C + ldr r0, [r0] + adds r0, r0, r1 + ldrb r3, [r0] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0xc] + cmp r0, #4 + beq _08128A24 + ldr r0, _08128A20 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + ldrh r1, [r1, #0xa] + adds r2, r3, #0 + bl sub_08127D08 + b _08128A44 + .align 2, 0 +_08128A14: .4byte gUnknown_8580CD0 +_08128A18: .4byte gUnknown_2039E3E +_08128A1C: .4byte gUnknown_2039E18 +_08128A20: .4byte gUnknown_3005B60 +_08128A24: + ldr r2, _08128A70 + ldr r0, _08128A74 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + subs r0, #7 + strh r0, [r2] + ldr r2, _08128A78 + ldrh r0, [r1, #0xa] + subs r0, #7 + strh r0, [r2] + ldr r0, _08128A7C + bl sub_08098880 +_08128A44: + ldr r2, _08128A80 + ldr r0, _08128A84 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #2 + strh r1, [r0, #0x22] + ldr r0, _08128A88 + ldrb r0, [r0, #0x14] + cmp r0, #0x56 + bne _08128A64 + bl sub_080EEC24 +_08128A64: + adds r0, r4, #0 + bl sub_08128B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128A70: .4byte gUnknown_203A700 +_08128A74: .4byte gUnknown_3005B60 +_08128A78: .4byte gUnknown_203A702 +_08128A7C: .4byte gUnknown_8245DCE +_08128A80: .4byte gUnknown_20205AC +_08128A84: .4byte gUnknown_203A704 +_08128A88: .4byte gUnknown_2036FB8 + thumb_func_end sub_081289CC + + thumb_func_start sub_08128A8C +sub_08128A8C: @ 0x08128A8C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r3, #0 + ldr r0, _08128AC8 + ldrb r1, [r0, #8] + adds r5, r0, #0 + cmp r3, r1 + bhs _08128AB2 + ldr r4, [r5] +_08128AA0: + adds r2, r4, r3 + ldrb r0, [r2] + cmp r0, #0 + beq _08128AD0 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + blo _08128AA0 +_08128AB2: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _08128B1C + movs r3, #0 + ldr r0, _08128ACC + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _08128B08 + b _08128B28 + .align 2, 0 +_08128AC8: .4byte gUnknown_2039E48 +_08128ACC: .4byte gUnknown_2039E1E +_08128AD0: + ldr r0, _08128AFC + ldrb r1, [r0] + ldr r0, _08128B00 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r2, [r5, #4] + adds r2, r2, r3 + ldr r0, _08128B04 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r0, [r1, #8] + subs r0, #7 + lsls r0, r0, #4 + ldrb r1, [r1, #0xa] + subs r1, #7 + adds r0, r0, r1 + strb r0, [r2] + b _08128AB2 + .align 2, 0 +_08128AFC: .4byte gUnknown_2039E3E +_08128B00: .4byte gUnknown_2039E18 +_08128B04: .4byte gUnknown_3005B60 +_08128B08: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0xf + bhi _08128B56 + adds r1, r3, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _08128B08 + b _08128B4E +_08128B1C: + movs r3, #0 + ldr r0, _08128B34 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _08128B3C +_08128B28: + ldr r0, _08128B38 + ldrb r0, [r0] + adds r0, #1 + strb r0, [r2] + b _08128B56 + .align 2, 0 +_08128B34: .4byte gUnknown_2039E2E +_08128B38: .4byte gUnknown_2039E3E +_08128B3C: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0xb + bhi _08128B56 + adds r1, r3, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _08128B3C +_08128B4E: + ldr r0, _08128B5C + ldrb r0, [r0] + adds r0, #1 + strb r0, [r1] +_08128B56: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08128B5C: .4byte gUnknown_2039E3E + thumb_func_end sub_08128A8C + + thumb_func_start sub_08128B60 +sub_08128B60: @ 0x08128B60 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _08128B7C + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128B7C: .4byte gUnknown_85821B0 + thumb_func_end sub_08128B60 + + thumb_func_start sub_08128B80 +sub_08128B80: @ 0x08128B80 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_08128B9C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08128B80 + + thumb_func_start sub_08128B9C +sub_08128B9C: @ 0x08128B9C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _08128BC4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _08128BC8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128BC4: .4byte gUnknown_3005B60 +_08128BC8: .4byte sub_08128BCC + thumb_func_end sub_08128B9C + + thumb_func_start sub_08128BCC +sub_08128BCC: @ 0x08128BCC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08128BEC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08128BF0 + cmp r0, #1 + beq _08128C10 + b _08128C2C + .align 2, 0 +_08128BEC: .4byte gUnknown_3005B60 +_08128BF0: + bl sub_080987DC + ldr r0, _08128C0C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08128C2C + adds r0, r4, #0 + bl sub_08127AB4 + movs r0, #1 + strh r0, [r5, #0xc] + b _08128C2C + .align 2, 0 +_08128C0C: .4byte gUnknown_2037C74 +_08128C10: + bl sub_0812A3D4 + ldr r0, _08128C34 + bl sub_08008564 + ldr r1, _08128C38 + ldr r0, _08128C3C + str r0, [r1] + ldr r0, _08128C40 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_08128C2C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08128C34: .4byte 0x00000BE5 +_08128C38: .4byte gUnknown_3005B0C +_08128C3C: .4byte sub_08128CB4 +_08128C40: .4byte sub_08085A30 + thumb_func_end sub_08128BCC + + thumb_func_start sub_08128C44 +sub_08128C44: @ 0x08128C44 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r5, r1, #3 + ldr r6, _08128C68 + adds r4, r5, r6 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08128C7C + cmp r0, #1 + bgt _08128C6C + cmp r0, #0 + beq _08128C76 + b _08128CAA + .align 2, 0 +_08128C68: .4byte gUnknown_3005B68 +_08128C6C: + cmp r0, #2 + beq _08128C88 + cmp r0, #3 + beq _08128C94 + b _08128CAA +_08128C76: + bl sub_080EA218 + b _08128C8C +_08128C7C: + ldr r0, _08128C84 + bl sub_08098880 + b _08128C8C + .align 2, 0 +_08128C84: .4byte gUnknown_8245DBB +_08128C88: + bl sub_080987DC +_08128C8C: + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + b _08128CAA +_08128C94: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08128CAA + adds r0, r6, #0 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _08128CB0 + str r1, [r0] +_08128CAA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08128CB0: .4byte sub_081275F8 + thumb_func_end sub_08128C44 + + thumb_func_start sub_08128CB4 +sub_08128CB4: @ 0x08128CB4 + push {r4, lr} + bl sub_080987DC + bl sub_080AE99C + ldr r0, _08128CE8 + movs r1, #8 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08127530 + ldr r1, _08128CEC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128CE8: .4byte sub_08128C44 +_08128CEC: .4byte gUnknown_3005B60 + thumb_func_end sub_08128CB4 + + thumb_func_start sub_08128CF0 +sub_08128CF0: @ 0x08128CF0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08128D20 + adds r2, r1, r0 + ldr r0, _08128D24 + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #1 + bne _08128D28 + movs r1, #2 + ldrsh r0, [r2, r1] + movs r4, #0xc + ldrsh r1, [r2, r4] + subs r0, r0, r1 + subs r0, #6 + cmp r0, #0 + bge _08128D28 + ldrh r0, [r2, #2] + adds r0, #1 + b _08128D42 + .align 2, 0 +_08128D20: .4byte gUnknown_3005B68 +_08128D24: .4byte gUnknown_203A706 +_08128D28: + ldrb r0, [r3] + cmp r0, #2 + bne _08128D4C + movs r0, #2 + ldrsh r1, [r2, r0] + subs r1, #7 + ldr r0, _08128D48 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r1, r0 + blt _08128D4C + ldrh r0, [r2, #2] + subs r0, #1 +_08128D42: + strh r0, [r2, #2] + movs r0, #0 + b _08128D8E + .align 2, 0 +_08128D48: .4byte gUnknown_2036FB8 +_08128D4C: + ldrb r0, [r3] + cmp r0, #3 + bne _08128D62 + movs r1, #0 + ldrsh r0, [r2, r1] + subs r0, #7 + cmp r0, #0 + bge _08128D62 + ldrh r0, [r2] + adds r0, #1 + b _08128D82 +_08128D62: + ldrb r0, [r3] + cmp r0, #4 + bne _08128D8C + movs r3, #0 + ldrsh r1, [r2, r3] + movs r4, #0xa + ldrsh r0, [r2, r4] + adds r1, r1, r0 + subs r1, #8 + ldr r0, _08128D88 + ldr r0, [r0] + ldr r0, [r0] + cmp r1, r0 + blt _08128D8C + ldrh r0, [r2] + subs r0, #1 +_08128D82: + strh r0, [r2] + movs r0, #0 + b _08128D8E + .align 2, 0 +_08128D88: .4byte gUnknown_2036FB8 +_08128D8C: + movs r0, #1 +_08128D8E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08128CF0 + + thumb_func_start sub_08128D94 +sub_08128D94: @ 0x08128D94 + push {lr} + ldr r0, _08128DB4 + ldrh r0, [r0, #0x2c] + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x40 + beq _08128DB8 + cmp r1, #0x80 + beq _08128DB8 + cmp r1, #0x20 + beq _08128DB8 + cmp r1, #0x10 + beq _08128DB8 + movs r0, #0 + b _08128DBA + .align 2, 0 +_08128DB4: .4byte gUnknown_3002360 +_08128DB8: + movs r0, #1 +_08128DBA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08128D94 + + thumb_func_start sub_08128DC0 +sub_08128DC0: @ 0x08128DC0 + push {r4, lr} + ldr r1, _08128DEC + movs r0, #0 + strb r0, [r1] + ldr r4, _08128DF0 + ldr r3, _08128DF4 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r2, #0 + strh r2, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x34] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128DEC: .4byte gUnknown_203A706 +_08128DF0: .4byte gUnknown_20205AC +_08128DF4: .4byte gUnknown_203A704 + thumb_func_end sub_08128DC0 + + thumb_func_start sub_08128DF8 +sub_08128DF8: @ 0x08128DF8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + mov r8, r2 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08128E38 + adds r4, r0, r1 + ldr r5, _08128E3C + ldr r3, _08128E40 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x36 + ldrsh r6, [r0, r1] + cmp r6, #0 + beq _08128E26 + b _08128F46 +_08128E26: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08128E48 + ldr r0, _08128E44 + movs r3, #0x18 + ldrsh r1, [r4, r3] + lsls r1, r1, #3 + b _08128E56 + .align 2, 0 +_08128E38: .4byte gUnknown_3005B68 +_08128E3C: .4byte gUnknown_20205AC +_08128E40: .4byte gUnknown_203A704 +_08128E44: .4byte gUnknown_85821B8 +_08128E48: + cmp r0, #2 + bne _08128E68 + ldr r0, _08128E64 + movs r3, #0x18 + ldrsh r1, [r4, r3] + lsls r1, r1, #3 + adds r0, #4 +_08128E56: + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08128F9A + .align 2, 0 +_08128E64: .4byte gUnknown_85821B8 +_08128E68: + ldr r2, _08128FA4 + ldrh r1, [r2, #0x2c] + movs r7, #0xf0 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x40 + bne _08128E9C + ldr r1, _08128FA8 + movs r0, #1 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08128FAC + strh r1, [r0, #0x34] + ldrh r0, [r4, #2] + subs r0, #1 + strh r0, [r4, #2] +_08128E9C: + ldrh r1, [r2, #0x2c] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x80 + bne _08128ECC + ldr r1, _08128FA8 + movs r0, #2 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #2 + strh r1, [r0, #0x34] + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] +_08128ECC: + ldrh r1, [r2, #0x2c] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x20 + bne _08128EFC + ldr r1, _08128FA8 + movs r0, #3 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08128FAC + strh r1, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x34] + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] +_08128EFC: + ldrh r1, [r2, #0x2c] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x10 + bne _08128F2C + ldr r1, _08128FA8 + movs r0, #4 + strb r0, [r1] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #2 + strh r1, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x34] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_08128F2C: + bl sub_08128D94 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08128F42 + mov r0, r8 + bl sub_08128CF0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08128F46 +_08128F42: + bl sub_08128DC0 +_08128F46: + ldr r0, _08128FA8 + ldrb r0, [r0] + cmp r0, #0 + beq _08128F74 + ldr r3, _08128FB0 + ldr r2, _08128FB4 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x36] + adds r1, #1 + strh r1, [r0, #0x36] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r2, [r1, #0x36] + movs r0, #7 + ands r0, r2 + strh r0, [r1, #0x36] +_08128F74: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08128F9A + ldr r3, _08128FA4 + ldrh r1, [r3, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08128F8C + strh r2, [r4, #0x14] +_08128F8C: + ldrh r1, [r3, #0x2e] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08128F9A + strh r2, [r4, #0x14] +_08128F9A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08128FA4: .4byte gUnknown_3002360 +_08128FA8: .4byte gUnknown_203A706 +_08128FAC: .4byte 0x0000FFFE +_08128FB0: .4byte gUnknown_20205AC +_08128FB4: .4byte gUnknown_203A704 + thumb_func_end sub_08128DF8 + + thumb_func_start sub_08128FB8 +sub_08128FB8: @ 0x08128FB8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r2, _08128FF0 + ldr r0, _08128FF4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0 + strh r2, [r0, #0x3c] + ldr r1, _08128FF8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0x1c] + ldr r1, _08128FFC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08128FF0: .4byte gUnknown_20205AC +_08128FF4: .4byte gUnknown_203A704 +_08128FF8: .4byte gUnknown_3005B60 +_08128FFC: .4byte sub_08128DF8 + thumb_func_end sub_08128FB8 + + thumb_func_start sub_08129000 +sub_08129000: @ 0x08129000 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08129024 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0812901A + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08129020 +_0812901A: + adds r0, r2, #0 + bl sub_08128FB8 +_08129020: + pop {r0} + bx r0 + .align 2, 0 +_08129024: .4byte gUnknown_3002360 + thumb_func_end sub_08129000 + + thumb_func_start sub_08129028 +sub_08129028: @ 0x08129028 + push {lr} + sub sp, #4 + adds r1, r0, #0 + mov r2, sp + movs r0, #0 + strh r0, [r2] + ldr r2, _08129044 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08129044: .4byte 0x01000452 + thumb_func_end sub_08129028 + + thumb_func_start sub_08129048 +sub_08129048: @ 0x08129048 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _08129064 + ldr r0, [r0] + lsrs r1, r1, #0xb + ldr r0, [r0, #8] + adds r0, r0, r1 + adds r1, r2, #0 + movs r2, #8 + bl CpuFastSet + pop {r0} + bx r0 + .align 2, 0 +_08129064: .4byte gUnknown_83B8094 + thumb_func_end sub_08129048 + + thumb_func_start sub_08129068 +sub_08129068: @ 0x08129068 + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + adds r7, r0, #0 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + lsrs r4, r1, #0x1a + adds r5, r4, #0 + cmp r2, #0 + beq _0812907E + ldr r0, _081290A0 + ands r2, r0 +_0812907E: + ldr r0, _081290A4 + ldr r0, [r0] + lsls r1, r2, #5 + ldr r0, [r0, #4] + adds r0, r0, r1 + mov r1, sp + movs r2, #8 + bl CpuFastSet + cmp r4, #1 + beq _081290BE + cmp r4, #1 + bgt _081290A8 + cmp r4, #0 + beq _081290B2 + b _0812917A + .align 2, 0 +_081290A0: .4byte 0x000003FF +_081290A4: .4byte gUnknown_83B8094 +_081290A8: + cmp r5, #2 + beq _0812911E + cmp r5, #3 + beq _08129156 + b _0812917A +_081290B2: + mov r0, sp + adds r1, r7, #0 + movs r2, #8 + bl CpuFastSet + b _0812917A +_081290BE: + movs r5, #0 + movs r6, #0xf +_081290C2: + lsls r4, r5, #2 + adds r4, r4, r7 + adds r5, #1 + lsls r3, r5, #2 + subs r0, r3, #1 + add r0, sp + ldrb r2, [r0] + lsrs r1, r2, #4 + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r4] + subs r0, r3, #2 + add r0, sp + ldrb r2, [r0] + lsrs r1, r2, #4 + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r4, #1] + subs r0, r3, #3 + add r0, sp + ldrb r2, [r0] + lsrs r1, r2, #4 + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r4, #2] + subs r3, #4 + mov r1, sp + adds r0, r1, r3 + ldrb r2, [r0] + lsrs r1, r2, #4 + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r4, #3] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + cmp r5, #7 + bls _081290C2 + b _0812917A +_0812911E: + movs r5, #0 + movs r3, #7 +_08129122: + lsls r2, r5, #2 + adds r2, r2, r7 + subs r1, r3, r5 + lsls r1, r1, #2 + mov r4, sp + adds r0, r4, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r1, #1 + add r0, sp + ldrb r0, [r0] + strb r0, [r2, #1] + adds r0, r1, #2 + add r0, sp + ldrb r0, [r0] + strb r0, [r2, #2] + adds r1, #3 + adds r0, r4, r1 + ldrb r0, [r0] + strb r0, [r2, #3] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #7 + bls _08129122 + b _0812917A +_08129156: + movs r5, #0 + movs r4, #0x1f + movs r6, #0xf +_0812915C: + adds r3, r7, r5 + subs r0, r4, r5 + add r0, sp + ldrb r2, [r0] + lsrs r1, r2, #4 + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r3] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x1f + bls _0812915C +_0812917A: + add sp, #0x20 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08129068 + + thumb_func_start sub_08129184 +sub_08129184: @ 0x08129184 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 +_0812918A: + lsls r0, r4, #5 + adds r0, #0x84 + adds r0, r5, r0 + lsls r2, r4, #1 + adds r1, r5, #4 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_08129068 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x3f + bls _0812918A + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08129184 + + thumb_func_start sub_081291AC +sub_081291AC: @ 0x081291AC + lsls r0, r0, #0x10 + ldr r1, _081291C0 + ldr r1, [r1] + ldr r1, [r1, #0xc] + lsrs r0, r0, #0xf + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _081291C4 + ands r0, r1 + bx lr + .align 2, 0 +_081291C0: .4byte gUnknown_83B8098 +_081291C4: .4byte 0x00000FFF + thumb_func_end sub_081291AC + + thumb_func_start sub_081291C8 +sub_081291C8: @ 0x081291C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + ldr r0, [r0] + ldrb r0, [r0, #0xd] + movs r6, #0 + ldr r1, _08129238 + lsls r5, r0, #4 + adds r0, r5, r1 + ldrb r0, [r0, #0xc] + cmp r6, r0 + bhs _0812922C + adds r7, r1, #0 +_081291E4: + mov r4, r8 + ldm r4!, {r1} + adds r0, r7, #4 + adds r0, r5, r0 + ldr r0, [r0] + adds r0, r0, r6 + ldrb r0, [r0] + ldr r1, [r1, #0x18] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r1, r5, r1 + ldr r1, [r1] + adds r1, r1, r6 + lsls r0, r0, #3 + ldrb r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081291AC + adds r2, r5, r7 + ldr r1, [r2] + adds r1, r1, r6 + ldrb r1, [r1] + lsls r1, r1, #1 + adds r4, r4, r1 + strh r0, [r4] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r2, [r2, #0xc] + cmp r6, r2 + blo _081291E4 +_0812922C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08129238: .4byte gUnknown_8582094 + thumb_func_end sub_081291C8 + + thumb_func_start sub_0812923C +sub_0812923C: @ 0x0812923C + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r3, _081292A0 + movs r1, #0 + strb r1, [r3] + ldrb r2, [r3, #1] + subs r1, #4 + ands r1, r2 + movs r5, #0xd + rsbs r5, r5, #0 + ands r1, r5 + movs r2, #0x11 + rsbs r2, r2, #0 + ands r1, r2 + subs r2, #0x10 + ands r1, r2 + strb r1, [r3, #1] + ldr r1, _081292A4 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrb r1, [r0] + movs r4, #0x3f + lsls r1, r1, #6 + strb r1, [r3, #1] + ldrh r2, [r3, #2] + ldr r1, _081292A8 + ands r1, r2 + strh r1, [r3, #2] + ldrb r2, [r3, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3, #3] + ldrb r0, [r0, #1] + lsls r0, r0, #6 + ands r4, r1 + orrs r4, r0 + strb r4, [r3, #3] + ldrh r1, [r3, #4] + ldr r0, _081292AC + ands r0, r1 + strh r0, [r3, #4] + ldrb r0, [r3, #5] + ands r5, r0 + movs r0, #0xf + ands r5, r0 + strb r5, [r3, #5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081292A0: .4byte gUnknown_203A708 +_081292A4: .4byte gUnknown_8582134 +_081292A8: .4byte 0xFFFFFE00 +_081292AC: .4byte 0xFFFFFC00 + thumb_func_end sub_0812923C + + thumb_func_start sub_081292B0 +sub_081292B0: @ 0x081292B0 + movs r1, #0 + strh r1, [r0, #0x32] + strh r1, [r0, #0x34] + strh r1, [r0, #0x36] + strh r1, [r0, #0x38] + strh r1, [r0, #0x3a] + strh r1, [r0, #0x3c] + ldr r1, _081292C4 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_081292C4: .4byte sub_081292C8 + thumb_func_end sub_081292B0 + + thumb_func_start sub_081292C8 +sub_081292C8: @ 0x081292C8 + push {lr} + adds r2, r0, #0 + movs r1, #0x3c + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08129302 + movs r1, #0x3a + ldrsh r0, [r2, r1] + cmp r0, #0xe + bgt _081292EA + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + b _081292F4 +_081292EA: + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 +_081292F4: + strb r0, [r3] + ldrh r0, [r2, #0x3a] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strh r0, [r2, #0x3a] + b _0812930E +_08129302: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0812930E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081292C8 + + thumb_func_start sub_08129314 +sub_08129314: @ 0x08129314 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_08129028 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _08129380 + adds r1, r0, r1 + str r1, [r5] + ldrb r0, [r1, #0xc] + cmp r0, #4 + beq _08129398 + ldr r0, _08129384 + bl sub_08008564 + adds r0, r5, #0 + bl sub_081291C8 + ldr r0, [r5] + ldrb r0, [r0, #0xd] + bl sub_0812923C + adds r0, r5, #0 + bl sub_08129184 + ldr r1, _08129388 + adds r0, r5, r1 + ldr r1, _0812938C + ldr r2, [r1] + ldr r1, [r5] + ldr r1, [r1, #0x18] + ldrh r1, [r1] + ldr r2, [r2, #0xc] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrh r1, [r1, #0xe] + lsrs r1, r1, #0xc + bl sub_08129048 + ldr r0, _08129390 + bl sub_0800845C + ldr r0, _08129394 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + b _081293AA + .align 2, 0 +_08129380: .4byte gUnknown_8580CD0 +_08129384: .4byte 0x00000BE5 +_08129388: .4byte 0x00000884 +_0812938C: .4byte gUnknown_83B8098 +_08129390: .4byte gUnknown_85821A0 +_08129394: .4byte gUnknown_8582170 +_08129398: + ldr r0, [r1, #0x18] + ldrh r0, [r0] + ldr r1, _081293B8 + movs r2, #1 + str r2, [sp] + movs r2, #0 + movs r3, #0 + bl sub_0808D6D8 +_081293AA: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081293B8: .4byte sub_08007140 + thumb_func_end sub_08129314 + + thumb_func_start sub_081293BC +sub_081293BC: @ 0x081293BC + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + bl sub_081AFABC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08129474 + adds r0, r5, #0 + movs r1, #0 + bl sub_08129480 + ldr r4, _08129460 + ldr r1, [r4] + bl sub_08034370 + ldr r0, [r4] + ldr r4, _08129464 + ldr r1, [r4] + bl sub_081AFB1C + ldr r0, [r4] + str r0, [sp] + ldr r4, _08129468 + ldr r0, [sp, #4] + ands r0, r4 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + lsls r2, r7, #0x10 + ldr r1, _0812946C + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + adds r0, r5, #0 + movs r1, #1 + bl sub_08129480 + str r0, [sp, #8] + add r0, sp, #8 + ldr r1, [r0, #4] + ands r1, r4 + orrs r1, r6 + str r1, [r0, #4] + bl sub_080343E4 + movs r0, #0x18 + bl sub_08000BC8 + adds r5, r0, #0 + adds r1, r5, #0 + ldr r0, _08129470 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + strh r7, [r5] + strh r6, [r5, #2] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AFAFC + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + b _08129476 + .align 2, 0 +_08129460: .4byte gUnknown_203CB88 +_08129464: .4byte gUnknown_203CB8C +_08129468: .4byte 0xFFFF0000 +_0812946C: .4byte 0x0000FFFF +_08129470: .4byte gUnknown_85E08AC +_08129474: + movs r0, #0x40 +_08129476: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081293BC + + thumb_func_start sub_08129480 +sub_08129480: @ 0x08129480 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r3, #0x78 + bls _08129490 + movs r3, #0 +_08129490: + ldr r2, _081294A0 + lsls r0, r0, #2 + lsls r1, r3, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081294A0: .4byte gUnknown_8581ACC + thumb_func_end sub_08129480 + + thumb_func_start sub_081294A4 +sub_081294A4: @ 0x081294A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r4, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _08129570 + adds r0, r6, #0 + bl sub_08129028 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _08129574 + adds r1, r0, r1 + str r1, [r6] + ldrb r0, [r1, #0xc] + cmp r0, #4 + beq _0812958C + adds r0, r6, #0 + bl sub_081291C8 + ldr r0, [r6] + ldrb r0, [r0, #0xd] + bl sub_0812923C + adds r0, r6, #0 + bl sub_08129184 + ldr r0, _08129578 + adds r5, r6, r0 + ldr r0, _0812957C + ldr r1, [r0] + ldr r0, [r6] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + ldr r1, [r1, #0xc] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r1, [r0, #0xe] + lsrs r1, r1, #0xc + adds r0, r5, #0 + bl sub_08129048 + adds r0, r6, #0 + adds r0, #0x84 + str r0, [sp, #4] + ldr r1, _08129580 + ldr r0, [r6] + ldrb r0, [r0, #0xd] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x15 + ldr r4, _08129584 + mov r2, r8 + lsls r1, r2, #0x10 + lsrs r0, r0, #0x10 + orrs r0, r1 + str r0, [sp, #8] + add r0, sp, #4 + bl sub_08008210 + str r5, [sp, #0xc] + add r0, sp, #0xc + ldr r1, [r0, #4] + ands r1, r4 + orrs r1, r7 + str r1, [r0, #4] + bl sub_0800845C + movs r0, #0x18 + bl sub_08000BC8 + adds r4, r0, #0 + adds r1, r4, #0 + ldr r0, _08129588 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + mov r3, r8 + strh r3, [r4] + strh r7, [r4, #2] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + bl sub_08000BF0 + b _081295A2 + .align 2, 0 +_08129570: .4byte gUnknown_2039E5C +_08129574: .4byte gUnknown_8580CD0 +_08129578: .4byte 0x00000884 +_0812957C: .4byte gUnknown_83B8098 +_08129580: .4byte gUnknown_85821D8 +_08129584: .4byte 0xFFFF0000 +_08129588: .4byte gUnknown_8582188 +_0812958C: + ldr r0, [r1, #0x18] + ldrh r0, [r0] + ldr r1, _081295B0 + movs r2, #1 + str r2, [sp] + movs r2, #0 + movs r3, #0 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081295A2: + adds r0, r5, #0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081295B0: .4byte sub_08007140 + thumb_func_end sub_081294A4 + + thumb_func_start sub_081295B4 +sub_081295B4: @ 0x081295B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov ip, r6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + mov sb, r8 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + mov sl, r7 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r3, r4, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r2, r5, #0 + cmp r6, #0x78 + bls _0812961C + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_081293BC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + beq _0812967E + ldr r2, _08129618 + lsls r3, r4, #4 + adds r1, r3, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + mov r5, r8 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, #4 + strh r0, [r1, #0x24] + lsls r0, r7, #0x10 + b _0812969A + .align 2, 0 +_08129618: .4byte gUnknown_20205AC +_0812961C: + ldr r0, _08129660 + lsls r1, r6, #3 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + bne _0812966C + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_081294A4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + beq _0812967E + ldr r1, _08129664 + lsls r2, r4, #4 + adds r0, r2, r4 + lsls r0, r0, #2 + adds r5, r0, r1 + mov r0, r8 + strh r0, [r5, #0x24] + adds r0, r6, #0 + subs r0, #0x2a + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08129668 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + subs r0, #4 + strh r0, [r5, #0x26] + b _081296A4 + .align 2, 0 +_08129660: .4byte gUnknown_8581ACC +_08129664: .4byte gUnknown_20205AC +_08129668: + strh r7, [r5, #0x26] + b _081296A4 +_0812966C: + adds r0, r3, #0 + adds r1, r2, #0 + mov r2, ip + bl sub_081293BC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + bne _08129682 +_0812967E: + movs r0, #0x40 + b _081296C0 +_08129682: + ldr r2, _081296D0 + lsls r3, r4, #4 + adds r1, r3, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + mov r5, sb + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, #4 + strh r0, [r1, #0x24] + mov r5, sl + lsls r0, r5, #0x10 +_0812969A: + asrs r0, r0, #0x10 + adds r0, #4 + strh r0, [r1, #0x26] + adds r1, r2, #0 + adds r2, r3, #0 +_081296A4: + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r1 + movs r0, #3 + ldr r1, [sp] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + adds r0, r4, #0 +_081296C0: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081296D0: .4byte gUnknown_20205AC + thumb_func_end sub_081295B4 + + thumb_func_start sub_081296D4 +sub_081296D4: @ 0x081296D4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081296EC + ldr r1, [r3] + adds r1, r1, r0 + movs r2, #0 + strb r2, [r1] + ldr r1, [r3, #4] + adds r1, r1, r0 + strb r2, [r1] + bx lr + .align 2, 0 +_081296EC: .4byte gUnknown_2039E48 + thumb_func_end sub_081296D4 + + thumb_func_start sub_081296F0 +sub_081296F0: @ 0x081296F0 + push {r4, r5, r6, lr} + ldr r6, _08129710 + movs r0, #0 + strh r0, [r6] + ldr r2, _08129714 + strh r0, [r2] + ldr r4, _08129718 + ldr r1, _0812971C + ldrh r0, [r4] + ldrb r1, [r1] + cmp r0, r1 + bne _0812972C + movs r0, #1 + strh r0, [r2] + b _08129782 + .align 2, 0 +_08129710: .4byte gUnknown_2037282 +_08129714: .4byte gUnknown_2037290 +_08129718: .4byte gUnknown_2037280 +_0812971C: .4byte gUnknown_203A790 +_08129720: + ldr r1, _08129728 + ldrb r0, [r2] + strh r0, [r1] + b _08129782 + .align 2, 0 +_08129728: .4byte gUnknown_2037284 +_0812972C: + ldr r3, _08129788 + ldr r2, _0812978C + ldr r1, _08129790 + ldrh r0, [r4] + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r1, [r4] + ldr r0, [r2] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #0xc] + cmp r0, #4 + bne _08129782 + ldrh r0, [r4, #4] + strh r0, [r6] + ldrb r0, [r4] + bl sub_081296D4 + movs r1, #0 + ldr r0, _08129794 + ldr r0, [r0, #4] + ldrb r2, [r0] + cmp r1, r2 + bhs _08129782 + ldr r5, [r0, #4] + ldrh r4, [r6] + adds r3, r2, #0 +_0812976A: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r2, r0, r5 + ldrh r0, [r2, #0x14] + cmp r0, r4 + beq _08129720 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r3 + blo _0812976A +_08129782: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08129788: .4byte gUnknown_8580CD0 +_0812978C: .4byte gUnknown_2039E48 +_08129790: .4byte gUnknown_203A710 +_08129794: .4byte gUnknown_2036FB8 + thumb_func_end sub_081296F0 + + thumb_func_start sub_08129798 +sub_08129798: @ 0x08129798 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r0, _081297C4 + ldr r0, [r0, #4] + ldrb r1, [r0] + cmp r2, r1 + bhs _081297DC + adds r3, r0, #0 + ldr r5, [r3, #4] + ldr r0, _081297C8 + ldrh r4, [r0] + ldr r6, _081297CC +_081297B0: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r5 + ldrh r0, [r1, #0x14] + cmp r0, r4 + bne _081297D0 + ldrb r0, [r1] + strh r0, [r6] + b _081297DC + .align 2, 0 +_081297C4: .4byte gUnknown_2036FB8 +_081297C8: .4byte gUnknown_2037280 +_081297CC: .4byte gUnknown_2037282 +_081297D0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r3] + cmp r2, r0 + blo _081297B0 +_081297DC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08129798 + + thumb_func_start sub_081297E4 +sub_081297E4: @ 0x081297E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r6, #0 + b _081298AE +_081297F4: + ldr r3, _081298C8 + lsls r5, r6, #3 + adds r4, r5, r3 + ldrb r2, [r4] + ldr r1, _081298CC + ldr r0, [r1] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r7, _081298D0 + adds r0, r0, r7 + ldrb r1, [r0, #0xc] + ldr r7, _081298CC + ldr r0, [r7, #4] + adds r0, r0, r2 + ldrb r0, [r0] + lsrs r2, r0, #4 + mov r8, r2 + movs r7, #0xf + adds r2, r7, #0 + ands r2, r0 + str r2, [sp] + adds r7, r5, #0 + adds r6, #1 + str r6, [sp, #4] + cmp r1, #4 + beq _081298A8 + movs r6, #0 + ldrb r4, [r4, #2] + cmp r6, r4 + bhs _0812989E +_08129836: + movs r4, #0 + adds r0, r5, r3 + adds r3, r6, #1 + mov sl, r3 + ldrb r0, [r0, #1] + cmp r4, r0 + bhs _0812988C + ldr r5, _081298C8 + adds r5, r5, r7 + mov sb, r5 + subs r0, r6, #7 + str r0, [sp, #8] +_0812984E: + adds r0, r4, #7 + add r0, r8 + ldr r1, _081298D4 + ldr r3, [r1] + ldr r1, [sp] + subs r2, r1, r6 + ldr r1, [r3] + muls r2, r1, r2 + mov r5, r8 + adds r1, r5, r4 + adds r1, r1, r2 + ldr r2, [r3, #0xc] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + movs r3, #0xc0 + lsls r3, r3, #6 + adds r2, r3, #0 + orrs r2, r1 + ldr r5, [sp] + ldr r3, [sp, #8] + subs r1, r5, r3 + bl sub_08087C9C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r5, sb + ldrb r5, [r5, #1] + cmp r4, r5 + blo _0812984E +_0812988C: + mov r1, sl + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _081298C8 + adds r5, r7, #0 + adds r0, r7, r3 + ldrb r0, [r0, #2] + cmp r6, r0 + blo _08129836 +_0812989E: + ldr r2, _081298C8 + adds r0, r7, r2 + ldrb r0, [r0] + bl sub_081296D4 +_081298A8: + ldr r3, [sp, #4] + lsls r0, r3, #0x18 + lsrs r6, r0, #0x18 +_081298AE: + ldr r0, _081298D8 + ldrb r0, [r0] + cmp r6, r0 + blo _081297F4 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081298C8: .4byte gUnknown_203A710 +_081298CC: .4byte gUnknown_2039E48 +_081298D0: .4byte gUnknown_8580CD0 +_081298D4: .4byte gUnknown_2036FB8 +_081298D8: .4byte gUnknown_203A790 + thumb_func_end sub_081297E4 + + thumb_func_start sub_081298DC +sub_081298DC: @ 0x081298DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08129900 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08129918 + cmp r0, #1 + bgt _08129904 + cmp r0, #0 + beq _0812990E + b _08129984 + .align 2, 0 +_08129900: .4byte gUnknown_3005B60 +_08129904: + cmp r0, #2 + beq _08129944 + cmp r0, #3 + beq _08129958 + b _08129984 +_0812990E: + bl sub_081297E4 + movs r0, #1 + strh r0, [r4, #0xc] + b _08129984 +_08129918: + ldr r0, _0812993C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08129984 + bl sub_08089598 + ldr r0, _08129940 + bl sub_08098880 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + movs r0, #2 + strh r0, [r4, #0xc] + b _08129984 + .align 2, 0 +_0812993C: .4byte gUnknown_2037C74 +_08129940: .4byte gUnknown_8245DDD +_08129944: + bl sub_080987DC + adds r0, r5, #0 + bl sub_081277C4 + bl sub_080AE99C + movs r0, #3 + strh r0, [r4, #0xc] + b _08129984 +_08129958: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08129984 + ldr r4, _0812998C + ldr r1, _08129990 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08129994 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + ldr r0, _08129998 + ldrb r0, [r0, #0x14] + cmp r0, #0x56 + bne _08129984 + bl sub_080EEC24 +_08129984: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812998C: .4byte gUnknown_2021C7C +_08129990: .4byte gUnknown_85CA867 +_08129994: .4byte sub_08129D54 +_08129998: .4byte gUnknown_2036FB8 + thumb_func_end sub_081298DC + + thumb_func_start sub_0812999C +sub_0812999C: @ 0x0812999C + push {lr} + movs r1, #0 + ldr r0, _081299B8 + ldrb r2, [r0, #8] + cmp r1, r2 + bhs _081299C6 + ldr r3, [r0] +_081299AA: + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081299BC + movs r0, #1 + b _081299C8 + .align 2, 0 +_081299B8: .4byte gUnknown_2039E48 +_081299BC: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + blo _081299AA +_081299C6: + movs r0, #0 +_081299C8: + pop {r1} + bx r1 + thumb_func_end sub_0812999C + + thumb_func_start sub_081299CC +sub_081299CC: @ 0x081299CC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + bl sub_0808B59C + ldr r3, _08129A14 + ldr r2, _08129A18 + ldr r4, _08129A1C + ldr r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x2e] + strb r0, [r3] + bl sub_0812A3A8 + ldr r0, _08129A20 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r4, #4] + ldr r0, _08129A24 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _08129A2C + ldr r1, _08129A28 + str r0, [sp] + movs r0, #0xc1 + b _08129A34 + .align 2, 0 +_08129A14: .4byte gUnknown_203A704 +_08129A18: .4byte gUnknown_20205AC +_08129A1C: .4byte gUnknown_3005B30 +_08129A20: .4byte gUnknown_85822E8 +_08129A24: .4byte gUnknown_3005AF0 +_08129A28: .4byte sub_08007140 +_08129A2C: + ldr r1, _08129A98 + movs r0, #0 + str r0, [sp] + movs r0, #0xc2 +_08129A34: + movs r2, #0x88 + movs r3, #0x48 + bl sub_0808D6D8 + ldr r1, _08129A9C + strb r0, [r1] + ldr r6, _08129AA0 + ldr r0, _08129A9C + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r2, [r1, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + movs r2, #4 + mov r8, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #5] + ldr r5, _08129AA4 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r0, _08129AA8 + ldr r0, [r0, #4] + strb r0, [r5] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #5] + ands r4, r1 + mov r1, r8 + orrs r4, r1 + strb r4, [r0, #5] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08129A98: .4byte sub_08007140 +_08129A9C: .4byte gUnknown_203A705 +_08129AA0: .4byte gUnknown_20205AC +_08129AA4: .4byte gUnknown_203A704 +_08129AA8: .4byte gUnknown_3005B30 + thumb_func_end sub_081299CC + + thumb_func_start sub_08129AAC +sub_08129AAC: @ 0x08129AAC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08129AD0 + adds r4, r0, r1 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08129AFC + cmp r0, #1 + bgt _08129AD4 + cmp r0, #0 + beq _08129ADA + b _08129B1E + .align 2, 0 +_08129AD0: .4byte gUnknown_3005B68 +_08129AD4: + cmp r0, #2 + beq _08129B0A + b _08129B1E +_08129ADA: + ldr r0, _08129AF8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08129B1E + adds r0, r5, #0 + bl sub_08127A7C + movs r0, #1 + strh r0, [r4, #4] + strh r0, [r4, #0xc] + strh r0, [r4, #0xa] + b _08129B1E + .align 2, 0 +_08129AF8: .4byte gUnknown_2037C74 +_08129AFC: + bl sub_081299CC + bl sub_080AE99C + movs r0, #2 + strh r0, [r4, #4] + b _08129B1E +_08129B0A: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08129B1E + strh r0, [r4, #0x18] + adds r0, r5, #0 + bl sub_08129B24 +_08129B1E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08129AAC + + thumb_func_start sub_08129B24 +sub_08129B24: @ 0x08129B24 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r4, _08129BA4 + ldr r3, _08129BA8 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r6, #0 + strh r6, [r0, #0x3c] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08129BAC + str r1, [r0] + ldr r2, _08129BB0 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x88 + strh r1, [r0, #0x20] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x48 + strh r1, [r0, #0x22] + ldr r1, _08129BB4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0x1c] + ldr r1, _08129BB8 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08129BA4: .4byte gUnknown_20205AC +_08129BA8: .4byte gUnknown_203A704 +_08129BAC: .4byte sub_0812A378 +_08129BB0: .4byte gUnknown_203A705 +_08129BB4: .4byte gUnknown_3005B60 +_08129BB8: .4byte sub_08128DF8 + thumb_func_end sub_08129B24 + + thumb_func_start sub_08129BBC +sub_08129BBC: @ 0x08129BBC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08129BE4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + bl sub_08128DC0 + adds r0, r4, #0 + bl sub_08129C64 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08129BE4: .4byte gUnknown_3005B60 + thumb_func_end sub_08129BBC + + thumb_func_start sub_08129BE8 +sub_08129BE8: @ 0x08129BE8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08129C48 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x1c] + bl sub_08128DC0 + ldr r3, _08129C4C + ldr r5, _08129C50 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r1, _08129C54 + str r1, [r0] + ldr r5, _08129C58 + ldr r1, _08129C5C + adds r0, r5, #0 + bl sub_08008BCC + ldr r2, _08129C60 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081976D0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08129C48: .4byte gUnknown_3005B60 +_08129C4C: .4byte gUnknown_20205AC +_08129C50: .4byte gUnknown_203A704 +_08129C54: .4byte sub_08007140 +_08129C58: .4byte gUnknown_2021C7C +_08129C5C: .4byte gUnknown_85CA835 +_08129C60: .4byte sub_0812A1FC + thumb_func_end sub_08129BE8 + + thumb_func_start sub_08129C64 +sub_08129C64: @ 0x08129C64 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_0812A0F4 + ldr r0, _08129C88 + ldrb r0, [r0] + cmp r0, #0 + beq _08129C98 + ldr r4, _08129C8C + ldr r1, _08129C90 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08129C94 + b _08129D04 + .align 2, 0 +_08129C88: .4byte gUnknown_203A790 +_08129C8C: .4byte gUnknown_2021C7C +_08129C90: .4byte gUnknown_85CA852 +_08129C94: .4byte sub_0812A1AC +_08129C98: + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + ldr r0, _08129D10 + adds r1, r1, r0 + movs r2, #0 + ldrsh r0, [r1, r2] + movs r2, #2 + ldrsh r1, [r1, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08088BEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08129CCE + adds r0, r4, #0 + bl sub_08088D68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08129D2C +_08129CCE: + ldr r3, _08129D14 + ldr r4, _08129D18 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r1, _08129D1C + str r1, [r0] + ldr r4, _08129D20 + ldr r1, _08129D24 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08129D28 +_08129D04: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _08129D40 + .align 2, 0 +_08129D10: .4byte gUnknown_3005B68 +_08129D14: .4byte gUnknown_20205AC +_08129D18: .4byte gUnknown_203A704 +_08129D1C: .4byte sub_08007140 +_08129D20: .4byte gUnknown_2021C7C +_08129D24: .4byte gUnknown_85CA835 +_08129D28: .4byte sub_0812A1FC +_08129D2C: + ldr r4, _08129D48 + ldr r1, _08129D4C + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _08129D50 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_08129D40: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08129D48: .4byte gUnknown_2021C7C +_08129D4C: .4byte gUnknown_85CA842 +_08129D50: .4byte sub_08129D54 + thumb_func_end sub_08129C64 + + thumb_func_start sub_08129D54 +sub_08129D54: @ 0x08129D54 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08129D78 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08129D6E + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08129D74 +_08129D6E: + adds r0, r2, #0 + bl sub_08129B24 +_08129D74: + pop {r0} + bx r0 + .align 2, 0 +_08129D78: .4byte gUnknown_3002360 + thumb_func_end sub_08129D54 + + thumb_func_start sub_08129D7C +sub_08129D7C: @ 0x08129D7C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08129D9C + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #0xd] + cmp r1, #0 + bne _08129DA0 + movs r0, #1 + strb r0, [r3, #1] + b _08129DFE + .align 2, 0 +_08129D9C: .4byte gUnknown_8580CD0 +_08129DA0: + cmp r1, #1 + bne _08129DAC + movs r0, #2 + strb r0, [r3, #1] + strb r1, [r3, #2] + b _08129E00 +_08129DAC: + cmp r1, #2 + bne _08129DB8 + movs r0, #3 + strb r0, [r3, #1] + movs r0, #1 + b _08129DFE +_08129DB8: + cmp r1, #3 + bne _08129DC0 + movs r0, #4 + b _08129DFA +_08129DC0: + cmp r1, #4 + bne _08129DCA + movs r0, #2 + strb r0, [r3, #1] + b _08129DFE +_08129DCA: + cmp r1, #5 + bne _08129DD2 + movs r0, #1 + b _08129DFA +_08129DD2: + cmp r1, #6 + bne _08129DDE + movs r0, #1 + strb r0, [r3, #1] + movs r0, #3 + b _08129DFE +_08129DDE: + cmp r1, #7 + bne _08129DEA + movs r0, #2 + strb r0, [r3, #1] + movs r0, #4 + b _08129DFE +_08129DEA: + cmp r1, #8 + bne _08129DF4 + movs r0, #3 + strb r0, [r3, #1] + b _08129DFE +_08129DF4: + cmp r1, #9 + bne _08129E00 + movs r0, #3 +_08129DFA: + strb r0, [r3, #1] + movs r0, #2 +_08129DFE: + strb r0, [r3, #2] +_08129E00: + pop {r0} + bx r0 + thumb_func_end sub_08129D7C + + thumb_func_start sub_08129E04 +sub_08129E04: @ 0x08129E04 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r5, _08129E5C + ldr r6, _08129E60 + ldrb r3, [r6] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r5 + adds r2, #0x3e + ldrb r3, [r2] + movs r4, #4 + orrs r3, r4 + strb r3, [r2] + ldrb r3, [r6] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r3, r5, #0 + adds r3, #0x1c + adds r2, r2, r3 + ldr r3, _08129E64 + str r3, [r2] + ldr r4, _08129E68 + ldrb r3, [r4] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r5 + lsrs r0, r0, #0x14 + adds r0, #0x88 + strh r0, [r2, #0x20] + ldrb r2, [r4] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + lsrs r1, r1, #0x14 + adds r1, #0x48 + strh r1, [r0, #0x22] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08129E5C: .4byte gUnknown_20205AC +_08129E60: .4byte gUnknown_203A704 +_08129E64: .4byte sub_08007140 +_08129E68: .4byte gUnknown_203A705 + thumb_func_end sub_08129E04 + + thumb_func_start sub_08129E6C +sub_08129E6C: @ 0x08129E6C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _08129F00 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + adds r2, r2, r3 + ldrb r0, [r2, #8] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r2, #0xa] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r2, _08129F04 + ldr r0, [r2, #4] + adds r0, r0, r1 + ldrb r0, [r0] + lsrs r5, r0, #4 + movs r6, #0xf + ands r6, r0 + mov r0, sb + ldrb r4, [r0, #2] + ldr r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x29 + bne _08129ECC + adds r0, r5, #7 + adds r1, r6, #7 + bl sub_08087B88 + movs r1, #0xa3 + lsls r1, r1, #2 + cmp r0, r1 + bne _08129ECC + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08129ECC: + cmp r7, r5 + blo _08129F08 + mov r0, sb + ldrb r2, [r0, #1] + adds r0, r5, r2 + cmp r7, r0 + bge _08129F08 + subs r0, r6, r4 + cmp r8, r0 + ble _08129F08 + cmp r8, r6 + bhi _08129F08 + subs r0, r7, r5 + adds r0, #1 + subs r0, r2, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, r8 + subs r1, r6, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08129E04 + movs r0, #1 + b _08129F0A + .align 2, 0 +_08129F00: .4byte gUnknown_3005B60 +_08129F04: .4byte gUnknown_2039E48 +_08129F08: + movs r0, #0 +_08129F0A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08129E6C + + thumb_func_start sub_08129F18 +sub_08129F18: @ 0x08129F18 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _08129F8C + ldr r3, _08129F90 + ldr r0, _08129F94 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r1, [r0] + ldr r0, [r2, #4] + adds r0, r0, r1 + ldrb r0, [r0] + lsrs r1, r0, #4 + mov r8, r1 + movs r6, #0xf + ands r6, r0 + movs r4, #0 + ldr r7, _08129F98 + mov sb, r3 +_08129F42: + ldr r1, [r7] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r5, r0, #3 + adds r1, r1, r5 + ldr r2, _08129F9C + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, r8 + bne _08129FA8 + ldr r2, _08129FA0 + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, r6 + bne _08129FA8 + ldr r2, _08129FA4 + adds r0, r1, r2 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08129FA8 + ldr r0, _08129F94 + ldrb r1, [r0] + lsls r1, r1, #3 + add r1, sb + ldr r0, [r7] + adds r0, r0, r5 + ldr r2, _08129FA4 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1, #4] + b _08129FB2 + .align 2, 0 +_08129F8C: .4byte gUnknown_2039E48 +_08129F90: .4byte gUnknown_203A710 +_08129F94: .4byte gUnknown_203A790 +_08129F98: .4byte gUnknown_3005AEC +_08129F9C: .4byte 0x00000C74 +_08129FA0: .4byte 0x00000C76 +_08129FA4: .4byte 0x00000C84 +_08129FA8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x3f + bls _08129F42 +_08129FB2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08129F18 + + thumb_func_start sub_08129FC0 +sub_08129FC0: @ 0x08129FC0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r6, #0 + ldr r0, _0812A020 + ldrb r1, [r0, #8] + cmp r6, r1 + bhs _0812A03E + ldr r1, _0812A024 + mov r8, r1 +_08129FD8: + ldr r0, [r0] + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0 + beq _0812A030 + adds r1, r0, #0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0xc] + cmp r0, #4 + bne _0812A030 + ldr r5, _0812A028 + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_08129D7C + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + adds r0, r7, #0 + adds r2, r5, #0 + bl sub_08129E6C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _0812A030 + strb r6, [r5] + bl sub_08129F18 + ldr r0, _0812A02C + strb r4, [r0] + movs r0, #1 + b _0812A040 + .align 2, 0 +_0812A020: .4byte gUnknown_2039E48 +_0812A024: .4byte gUnknown_8580CD0 +_0812A028: .4byte gUnknown_203A710 +_0812A02C: .4byte gUnknown_203A790 +_0812A030: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0812A04C + ldrb r1, [r0, #8] + cmp r6, r1 + blo _08129FD8 +_0812A03E: + movs r0, #0 +_0812A040: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812A04C: .4byte gUnknown_2039E48 + thumb_func_end sub_08129FC0 + + thumb_func_start sub_0812A050 +sub_0812A050: @ 0x0812A050 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r5, #0 + ldr r1, _0812A0E4 + ldrb r0, [r1, #8] + cmp r5, r0 + bhs _0812A0D4 + ldr r6, _0812A0E8 +_0812A07C: + ldr r0, [r1] + adds r0, r0, r5 + ldrb r2, [r0] + ldr r0, [r1, #4] + adds r0, r0, r5 + ldrb r0, [r0] + lsrs r4, r0, #4 + movs r3, #0xf + ands r3, r0 + cmp r2, #0 + beq _0812A0C6 + ldr r0, _0812A0EC + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0xc] + cmp r0, #4 + bne _0812A0C6 + cmp sl, r4 + bhi _0812A0C6 + cmp sb, r3 + bhi _0812A0C6 + cmp r8, r4 + blo _0812A0C6 + cmp r7, r3 + blo _0812A0C6 + ldr r0, _0812A0F0 + ldrb r1, [r6] + lsls r1, r1, #3 + adds r1, r1, r0 + strb r5, [r1] + bl sub_08129F18 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_0812A0C6: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0812A0E4 + ldrb r0, [r1, #8] + cmp r5, r0 + blo _0812A07C +_0812A0D4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A0E4: .4byte gUnknown_2039E48 +_0812A0E8: .4byte gUnknown_203A790 +_0812A0EC: .4byte gUnknown_8580CD0 +_0812A0F0: .4byte gUnknown_203A710 + thumb_func_end sub_0812A050 + + thumb_func_start sub_0812A0F4 +sub_0812A0F4: @ 0x0812A0F4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _0812A14C + movs r0, #0 + strb r0, [r4] + adds r0, r6, #0 + bl sub_08129FC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0812A198 + movs r5, #0 + ldr r0, _0812A150 + ldrb r1, [r0, #8] + cmp r5, r1 + bhs _0812A166 + adds r7, r4, #0 +_0812A11A: + ldr r0, [r0] + adds r0, r0, r5 + ldrb r1, [r0] + cmp r1, #0 + beq _0812A158 + ldr r4, _0812A154 + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_08129D7C + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08129E6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0812A158 + strb r5, [r4] + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + b _0812A166 + .align 2, 0 +_0812A14C: .4byte gUnknown_203A790 +_0812A150: .4byte gUnknown_2039E48 +_0812A154: .4byte gUnknown_203A710 +_0812A158: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0812A1A0 + ldrb r1, [r0, #8] + cmp r5, r1 + blo _0812A11A +_0812A166: + ldr r0, _0812A1A4 + ldrb r0, [r0] + cmp r0, #0 + beq _0812A198 + ldr r0, _0812A1A0 + ldr r2, _0812A1A8 + ldrb r1, [r2] + ldr r0, [r0, #4] + adds r0, r0, r1 + ldrb r1, [r0] + lsrs r0, r1, #4 + movs r3, #0xf + ands r3, r1 + ldrb r1, [r2, #2] + subs r1, r3, r1 + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r2, #1] + adds r2, r2, r0 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_0812A050 +_0812A198: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A1A0: .4byte gUnknown_2039E48 +_0812A1A4: .4byte gUnknown_203A790 +_0812A1A8: .4byte gUnknown_203A710 + thumb_func_end sub_0812A0F4 + + thumb_func_start sub_0812A1AC +sub_0812A1AC: @ 0x0812A1AC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _0812A1C8 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A1C8: .4byte gUnknown_858222C + thumb_func_end sub_0812A1AC + + thumb_func_start sub_0812A1CC +sub_0812A1CC: @ 0x0812A1CC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _0812A1F4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _0812A1F8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A1F4: .4byte gUnknown_3005B60 +_0812A1F8: .4byte sub_081298DC + thumb_func_end sub_0812A1CC + + thumb_func_start sub_0812A1FC +sub_0812A1FC: @ 0x0812A1FC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _0812A218 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A218: .4byte gUnknown_8582234 + thumb_func_end sub_0812A1FC + + thumb_func_start sub_0812A21C +sub_0812A21C: @ 0x0812A21C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_0812A238 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812A21C + + thumb_func_start sub_0812A238 +sub_0812A238: @ 0x0812A238 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _0812A260 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + ldr r1, _0812A264 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A260: .4byte gUnknown_3005B60 +_0812A264: .4byte sub_0812A268 + thumb_func_end sub_0812A238 + + thumb_func_start sub_0812A268 +sub_0812A268: @ 0x0812A268 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0812A288 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #0xc + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0812A28C + cmp r0, #1 + beq _0812A2A8 + b _0812A2BE + .align 2, 0 +_0812A288: .4byte gUnknown_3005B60 +_0812A28C: + ldr r0, _0812A2A4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812A2BE + adds r0, r4, #0 + bl sub_08127AB4 + movs r0, #1 + strh r0, [r5, #0xc] + b _0812A2BE + .align 2, 0 +_0812A2A4: .4byte gUnknown_2037C74 +_0812A2A8: + bl sub_0812A3D4 + ldr r0, _0812A2C4 + ldr r1, _0812A2C8 + str r1, [r0] + ldr r0, _0812A2CC + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_0812A2BE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812A2C4: .4byte gUnknown_3005B0C +_0812A2C8: .4byte sub_0812A340 +_0812A2CC: .4byte sub_08085A30 + thumb_func_end sub_0812A268 + + thumb_func_start sub_0812A2D0 +sub_0812A2D0: @ 0x0812A2D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r5, r1, #3 + ldr r6, _0812A2F4 + adds r4, r5, r6 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0812A308 + cmp r0, #1 + bgt _0812A2F8 + cmp r0, #0 + beq _0812A302 + b _0812A336 + .align 2, 0 +_0812A2F4: .4byte gUnknown_3005B68 +_0812A2F8: + cmp r0, #2 + beq _0812A314 + cmp r0, #3 + beq _0812A320 + b _0812A336 +_0812A302: + bl sub_080EA218 + b _0812A318 +_0812A308: + ldr r0, _0812A310 + bl sub_08098880 + b _0812A318 + .align 2, 0 +_0812A310: .4byte gUnknown_8245DBB +_0812A314: + bl sub_080987DC +_0812A318: + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + b _0812A336 +_0812A320: + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0812A336 + adds r0, r6, #0 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _0812A33C + str r1, [r0] +_0812A336: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812A33C: .4byte sub_08126B48 + thumb_func_end sub_0812A2D0 + + thumb_func_start sub_0812A340 +sub_0812A340: @ 0x0812A340 + push {lr} + bl sub_080AE99C + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + bl sub_08126A84 + ldr r0, _0812A370 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812A374 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0xc] + pop {r0} + bx r0 + .align 2, 0 +_0812A370: .4byte sub_0812A2D0 +_0812A374: .4byte gUnknown_3005B60 + thumb_func_end sub_0812A340 + + thumb_func_start sub_0812A378 +sub_0812A378: @ 0x0812A378 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strh r0, [r2, #0x2e] + cmp r0, #0xf + ble _0812A398 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _0812A3A4 +_0812A398: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0812A3A4: + pop {r0} + bx r0 + thumb_func_end sub_0812A378 + + thumb_func_start sub_0812A3A8 +sub_0812A3A8: @ 0x0812A3A8 + push {lr} + ldr r0, _0812A3BC + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0812A3C4 + ldr r0, _0812A3C0 + bl sub_0800845C + b _0812A3CA + .align 2, 0 +_0812A3BC: .4byte gUnknown_3005AF0 +_0812A3C0: .4byte gUnknown_85822BC +_0812A3C4: + ldr r0, _0812A3D0 + bl sub_0800845C +_0812A3CA: + pop {r0} + bx r0 + .align 2, 0 +_0812A3D0: .4byte gUnknown_85822C4 + thumb_func_end sub_0812A3A8 + + thumb_func_start sub_0812A3D4 +sub_0812A3D4: @ 0x0812A3D4 + push {lr} + movs r0, #8 + bl sub_08008564 + pop {r0} + bx r0 + thumb_func_end sub_0812A3D4 + + thumb_func_start sub_0812A3E0 +sub_0812A3E0: @ 0x0812A3E0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08127974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0812A440 + ldr r0, _0812A424 + ldr r1, _0812A428 + ldrb r2, [r1] + ldr r1, _0812A42C + ldr r1, [r1] + adds r1, r1, r2 + ldrb r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _0812A430 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _0812A434 + ldr r1, _0812A438 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _0812A43C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 + b _0812A454 + .align 2, 0 +_0812A424: .4byte gUnknown_2021C40 +_0812A428: .4byte gUnknown_2039E3E +_0812A42C: .4byte gUnknown_2039E18 +_0812A430: .4byte gUnknown_8580CD1 +_0812A434: .4byte gUnknown_2021C7C +_0812A438: .4byte gUnknown_85CA812 +_0812A43C: .4byte sub_0812A468 +_0812A440: + ldr r4, _0812A45C + ldr r1, _0812A460 + adds r0, r4, #0 + bl sub_08008BCC + ldr r2, _0812A464 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081976D0 +_0812A454: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812A45C: .4byte gUnknown_2021C7C +_0812A460: .4byte gUnknown_85CA7F2 +_0812A464: .4byte sub_08127A0C + thumb_func_end sub_0812A3E0 + + thumb_func_start sub_0812A468 +sub_0812A468: @ 0x0812A468 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _0812A484 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A484: .4byte gUnknown_8582300 + thumb_func_end sub_0812A468 + + thumb_func_start sub_0812A488 +sub_0812A488: @ 0x0812A488 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0812A4D0 + ldrb r1, [r0] + ldr r0, _0812A4D4 + ldr r0, [r0] + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r5, _0812A4D8 + ldrb r0, [r5] + bl sub_081619E4 + ldr r1, _0812A4DC + strb r0, [r1] + ldrb r0, [r5] + bl sub_0816194C + adds r0, r4, #0 + bl sub_081277C4 + ldr r5, _0812A4E0 + ldr r1, _0812A4E4 + adds r0, r5, #0 + bl sub_08008BCC + ldr r2, _0812A4E8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081976D0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812A4D0: .4byte gUnknown_2039E3E +_0812A4D4: .4byte gUnknown_2039E18 +_0812A4D8: .4byte gUnknown_2039E3F +_0812A4DC: .4byte gUnknown_2039E1D +_0812A4E0: .4byte gUnknown_2021C7C +_0812A4E4: .4byte gUnknown_85CA829 +_0812A4E8: .4byte sub_08127A0C + thumb_func_end sub_0812A488 + + thumb_func_start sub_0812A4EC +sub_0812A4EC: @ 0x0812A4EC + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0812A50C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _0812A510 + cmp r1, #1 + beq _0812A528 + b _0812A540 + .align 2, 0 +_0812A50C: .4byte gUnknown_3005B60 +_0812A510: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0812A540 +_0812A528: + ldr r0, _0812A548 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812A540 + ldr r0, _0812A54C + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_0812A540: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812A548: .4byte gUnknown_2037C74 +_0812A54C: .4byte sub_0812A598 + thumb_func_end sub_0812A4EC + + thumb_func_start sub_0812A550 +sub_0812A550: @ 0x0812A550 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0812A58C + movs r0, #0x68 + bl sub_08000BDC + str r0, [r5] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0812A6E4 + ldr r0, _0812A590 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812A594 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812A58C: .4byte gUnknown_203A800 +_0812A590: .4byte sub_0812A4EC +_0812A594: .4byte gUnknown_3005B60 + thumb_func_end sub_0812A550 + + thumb_func_start sub_0812A598 +sub_0812A598: @ 0x0812A598 + push {lr} + sub sp, #4 + ldr r0, _0812A5B4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xb + bhi _0812A676 + lsls r0, r0, #2 + ldr r1, _0812A5B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812A5B4: .4byte gUnknown_3002360 +_0812A5B8: .4byte _0812A5BC +_0812A5BC: @ jump table + .4byte _0812A5EC @ case 0 + .4byte _0812A5F6 @ case 1 + .4byte _0812A5FC @ case 2 + .4byte _0812A606 @ case 3 + .4byte _0812A60C @ case 4 + .4byte _0812A612 @ case 5 + .4byte _0812A618 @ case 6 + .4byte _0812A61E @ case 7 + .4byte _0812A648 @ case 8 + .4byte _0812A64E @ case 9 + .4byte _0812A654 @ case 10 + .4byte _0812A670 @ case 11 +_0812A5EC: + bl sub_0812A760 + bl sub_0812A8D4 + b _0812A65C +_0812A5F6: + bl sub_0812A7CC + b _0812A65C +_0812A5FC: + bl sub_0812A820 + bl sub_0812A844 + b _0812A65C +_0812A606: + bl sub_0812A9BC + b _0812A65C +_0812A60C: + bl sub_0812A9DC + b _0812A65C +_0812A612: + bl sub_0812AA58 + b _0812A65C +_0812A618: + bl sub_0812A7AC + b _0812A65C +_0812A61E: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + b _0812A65C +_0812A648: + bl sub_0812FBFC + b _0812A65C +_0812A64E: + bl sub_0812FB4C + b _0812A65C +_0812A654: + bl sub_0812AA88 + bl sub_0812AAA0 +_0812A65C: + ldr r1, _0812A66C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0812A676 + .align 2, 0 +_0812A66C: .4byte gUnknown_3002360 +_0812A670: + ldr r0, _0812A67C + bl sub_08000540 +_0812A676: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0812A67C: .4byte sub_0812A680 + thumb_func_end sub_0812A598 + + thumb_func_start sub_0812A680 +sub_0812A680: @ 0x0812A680 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812A680 + + thumb_func_start sub_0812A698 +sub_0812A698: @ 0x0812A698 + push {r4, lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + ldr r4, _0812A6E0 + ldr r0, [r4] + adds r0, #0x58 + ldrh r1, [r0] + movs r0, #0x40 + bl sub_08001144 + ldr r0, [r4] + adds r0, #0x5a + ldrh r1, [r0] + movs r0, #0x44 + bl sub_08001144 + ldr r0, [r4] + adds r0, #0x5c + ldrh r1, [r0] + movs r0, #0x48 + bl sub_08001144 + ldr r0, [r4] + adds r0, #0x5e + ldrh r1, [r0] + movs r0, #0x4a + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812A6E0: .4byte gUnknown_203A800 + thumb_func_end sub_0812A698 + + thumb_func_start sub_0812A6E4 +sub_0812A6E4: @ 0x0812A6E4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0812A718 + movs r1, #0xff + bl sub_080A8878 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812A71C + adds r0, r0, r1 + strh r4, [r0, #8] + adds r0, #0xa + adds r1, r5, #0 + bl sub_0806F100 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812A718: .4byte sub_0812A75C +_0812A71C: .4byte gUnknown_3005B60 + thumb_func_end sub_0812A6E4 + + thumb_func_start sub_0812A720 +sub_0812A720: @ 0x0812A720 + push {lr} + ldr r0, _0812A750 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + ldr r0, _0812A754 + adds r2, r2, r0 + ldr r3, _0812A758 + ldr r1, [r3] + ldrh r0, [r2, #8] + strb r0, [r1, #1] + adds r2, #0xa + ldr r1, [r3] + adds r1, #0x64 + adds r0, r2, #0 + bl sub_0806F108 + pop {r0} + bx r0 + .align 2, 0 +_0812A750: .4byte sub_0812A75C +_0812A754: .4byte gUnknown_3005B60 +_0812A758: .4byte gUnknown_203A800 + thumb_func_end sub_0812A720 + + thumb_func_start sub_0812A75C +sub_0812A75C: @ 0x0812A75C + bx lr + .align 2, 0 + thumb_func_end sub_0812A75C + + thumb_func_start sub_0812A760 +sub_0812A760: @ 0x0812A760 + push {lr} + sub sp, #4 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + str r0, [sp] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0812A7A0 + mov r0, sp + bl CpuSet + movs r0, #0 + bl sub_080017D4 + ldr r1, _0812A7A4 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _0812A7A8 + bl sub_08003090 + bl sub_08004480 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0812A7A0: .4byte 0x05006000 +_0812A7A4: .4byte gUnknown_85843A8 +_0812A7A8: .4byte gUnknown_85843B8 + thumb_func_end sub_0812A760 + + thumb_func_start sub_0812A7AC +sub_0812A7AC: @ 0x0812A7AC + push {lr} + ldr r0, _0812A7C8 + bl sub_080006F0 + movs r0, #1 + bl sub_08001274 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_0812A7C8: .4byte sub_0812A698 + thumb_func_end sub_0812A7AC + + thumb_func_start sub_0812A7CC +sub_0812A7CC: @ 0x0812A7CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0x80 + lsls r3, r3, #9 + mov r4, sp + movs r6, #0 + ldr r1, _0812A818 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0812A81C + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0812A7EA: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r5 + subs r3, r3, r5 + cmp r3, r5 + bhi _0812A7EA + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A818: .4byte 0x040000D4 +_0812A81C: .4byte 0x81000800 + thumb_func_end sub_0812A7CC + + thumb_func_start sub_0812A820 +sub_0812A820: @ 0x0812A820 + sub sp, #4 + movs r2, #0xe0 + lsls r2, r2, #0x13 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r0, _0812A83C + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0812A840 + str r1, [r0, #8] + ldr r0, [r0, #8] + add sp, #4 + bx lr + .align 2, 0 +_0812A83C: .4byte 0x040000D4 +_0812A840: .4byte 0x81000200 + thumb_func_end sub_0812A820 + + thumb_func_start sub_0812A844 +sub_0812A844: @ 0x0812A844 + push {lr} + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3f + bl sub_08001144 + ldr r1, _0812A8CC + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0812A8D0 + movs r0, #0x52 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_0812A8CC: .4byte 0x00001048 +_0812A8D0: .4byte 0x00000809 + thumb_func_end sub_0812A844 + + thumb_func_start sub_0812A8D4 +sub_0812A8D4: @ 0x0812A8D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0812A720 + ldr r5, _0812A9B4 + ldr r0, [r5] + movs r4, #0 + strb r4, [r0] + ldr r0, [r5] + strb r4, [r0, #2] + bl sub_0806F050 + ldr r2, [r5] + movs r1, #1 + ands r1, r0 + strb r1, [r2, #3] + ldr r0, [r5] + strb r4, [r0, #4] + ldr r0, [r5] + movs r1, #0 + strh r4, [r0, #8] + strb r1, [r0, #0xa] + ldr r0, [r5] + strb r1, [r0, #0xb] + bl sub_08145CF0 + ldr r2, [r5] + strh r0, [r2, #0xc] + strh r4, [r2, #0xe] + strh r4, [r2, #0x10] + strh r4, [r2, #0x12] + strh r4, [r2, #0x18] + movs r0, #8 + strh r0, [r2, #0x1a] + adds r1, r2, #0 + adds r1, #0x58 + movs r0, #0xf0 + strh r0, [r1] + adds r1, #2 + movs r0, #0xa0 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x5c + movs r1, #0x3f + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + bl sub_080A27CC + ldr r1, [r5] + adds r1, #0x60 + strh r0, [r1] + movs r7, #0 + ldr r0, _0812A9B8 + mov r8, r0 +_0812A944: + ldr r0, _0812A9B4 + ldr r4, [r0] + lsls r6, r7, #1 + adds r0, r4, #0 + adds r0, #0x22 + adds r0, r0, r6 + movs r1, #0 + strh r1, [r0] + adds r5, r4, #0 + adds r5, #0x28 + adds r5, r5, r6 + ldrb r0, [r4, #3] + lsls r0, r0, #1 + lsls r1, r7, #2 + adds r0, r0, r1 + add r0, r8 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x15 + bl __modsi3 + strh r0, [r5] + adds r4, #0x1c + adds r4, r4, r6 + movs r2, #0 + ldrsh r0, [r5, r2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + movs r2, #0xfc + lsls r2, r2, #1 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4] + movs r1, #0 + ldrsh r0, [r4, r1] + adds r1, r2, #0 + bl __modsi3 + strh r0, [r4] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bls _0812A944 + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080EE990 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812A9B4: .4byte gUnknown_203A800 +_0812A9B8: .4byte gUnknown_8584638 + thumb_func_end sub_0812A8D4 + + thumb_func_start sub_0812A9BC +sub_0812A9BC: @ 0x0812A9BC + push {lr} + bl sub_080A133C + bl sub_0800668C + ldr r1, _0812A9D8 + movs r0, #0x80 + strb r0, [r1] + bl sub_08008424 + bl sub_080A8818 + pop {r0} + bx r0 + .align 2, 0 +_0812A9D8: .4byte gUnknown_2021AB4 + thumb_func_end sub_0812A9BC + + thumb_func_start sub_0812A9DC +sub_0812A9DC: @ 0x0812A9DC + push {r4, r5, lr} + ldr r4, _0812AA30 + movs r0, #8 + bl sub_08000BC8 + str r0, [r4] + ldr r4, _0812AA34 + movs r0, #0xe + bl sub_08000BDC + str r0, [r4] + ldr r5, _0812AA38 + movs r0, #8 + bl sub_08000BDC + str r0, [r5] + ldr r1, [r4] + ldr r2, _0812AA3C + adds r0, r2, #0 + strh r0, [r1] + ldr r1, [r4] + ldr r2, _0812AA40 + adds r0, r2, #0 + strh r0, [r1, #2] + ldr r2, _0812AA44 + adds r0, r2, #0 + strh r0, [r1, #4] + ldr r2, _0812AA48 + adds r0, r2, #0 + strh r0, [r1, #6] + ldr r2, _0812AA4C + adds r0, r2, #0 + strh r0, [r1, #8] + ldr r2, _0812AA50 + adds r0, r2, #0 + strh r0, [r1, #0xa] + ldr r2, _0812AA54 + adds r0, r2, #0 + strh r0, [r1, #0xc] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812AA30: .4byte gUnknown_203A798 +_0812AA34: .4byte gUnknown_203A79C +_0812AA38: .4byte gUnknown_203A7A8 +_0812AA3C: .4byte 0x00002051 +_0812AA40: .4byte 0x00002851 +_0812AA44: .4byte 0x00002061 +_0812AA48: .4byte 0x00002861 +_0812AA4C: .4byte 0x000020BE +_0812AA50: .4byte 0x000028BE +_0812AA54: .4byte 0x000020BF + thumb_func_end sub_0812A9DC + + thumb_func_start sub_0812AA58 +sub_0812AA58: @ 0x0812AA58 + push {lr} + bl sub_0812F918 + bl sub_0812F968 + bl sub_0812F7F4 + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xf0 + bl sub_08098104 + movs r1, #0x85 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #0 + bl sub_0800365C + pop {r0} + bx r0 + thumb_func_end sub_0812AA58 + + thumb_func_start sub_0812AA88 +sub_0812AA88: @ 0x0812AA88 + push {lr} + bl sub_0812E0F4 + bl sub_0812E1D8 + bl sub_0812CF04 + bl sub_0812E310 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812AA88 + + thumb_func_start sub_0812AAA0 +sub_0812AAA0: @ 0x0812AAA0 + push {lr} + bl sub_0812D198 + bl sub_0812BE6C + bl sub_0812DEA4 + bl sub_0812AAB8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812AAA0 + + thumb_func_start sub_0812AAB8 +sub_0812AAB8: @ 0x0812AAB8 + push {r4, lr} + ldr r4, _0812AAD4 + adds r0, r4, #0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812AAD4: .4byte sub_0812AAD8 + thumb_func_end sub_0812AAB8 + + thumb_func_start sub_0812AAD8 +sub_0812AAD8: @ 0x0812AAD8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _0812AB08 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r4, r1, #3 + ldr r5, _0812AB0C +_0812AAE8: + ldr r0, _0812AB10 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + adds r0, r4, r5 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812AAE8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812AB08: .4byte gUnknown_85843D4 +_0812AB0C: .4byte gUnknown_3005B60 +_0812AB10: .4byte gUnknown_203A800 + thumb_func_end sub_0812AAD8 + + thumb_func_start sub_0812AB14 +sub_0812AB14: @ 0x0812AB14 + push {r4, lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r4, _0812AB44 + ldr r0, [r4] + ldrb r0, [r0, #2] + bl sub_0812D3C4 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812AB44: .4byte gUnknown_203A800 + thumb_func_end sub_0812AB14 + + thumb_func_start sub_0812AB48 +sub_0812AB48: @ 0x0812AB48 + push {lr} + ldr r0, _0812AB68 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812AB60 + ldr r0, _0812AB6C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0812AB60: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812AB68: .4byte gUnknown_2037C74 +_0812AB6C: .4byte gUnknown_203A800 + thumb_func_end sub_0812AB48 + + thumb_func_start sub_0812AB70 +sub_0812AB70: @ 0x0812AB70 + push {lr} + ldr r3, _0812AB9C + ldr r1, [r3] + movs r0, #0 + strh r0, [r1, #0xe] + strh r0, [r1, #0x12] + strh r0, [r1, #0x18] + ldrb r2, [r1, #4] + movs r0, #0xc0 + ands r0, r2 + strb r0, [r1, #4] + ldr r1, [r3] + movs r0, #4 + strb r0, [r1] + ldr r3, [r3] + movs r1, #0xc + ldrsh r0, [r3, r1] + cmp r0, #0 + bgt _0812ABA0 + movs r0, #0x19 + strb r0, [r3] + b _0812ABB0 + .align 2, 0 +_0812AB9C: .4byte gUnknown_203A800 +_0812ABA0: + ldrb r0, [r3, #0xa] + cmp r0, #0 + beq _0812ABB0 + movs r0, #3 + strb r0, [r3] + movs r0, #4 + bl sub_0812DEF4 +_0812ABB0: + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812AB70 + + thumb_func_start sub_0812ABB8 +sub_0812ABB8: @ 0x0812ABB8 + push {lr} + bl sub_0812E064 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812ABCC + ldr r0, _0812ABD4 + ldr r1, [r0] + movs r0, #4 + strb r0, [r1] +_0812ABCC: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812ABD4: .4byte gUnknown_203A800 + thumb_func_end sub_0812ABB8 + + thumb_func_start sub_0812ABD8 +sub_0812ABD8: @ 0x0812ABD8 + push {lr} + movs r0, #0 + bl sub_0812DEF4 + ldr r2, _0812AC00 + ldr r1, [r2] + movs r0, #5 + strb r0, [r1] + ldr r2, [r2] + movs r0, #0xc + ldrsh r1, [r2, r0] + ldr r0, _0812AC04 + cmp r1, r0 + ble _0812ABF8 + movs r0, #0x17 + strb r0, [r2] +_0812ABF8: + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0812AC00: .4byte gUnknown_203A800 +_0812AC04: .4byte 0x0000270E + thumb_func_end sub_0812ABD8 + + thumb_func_start sub_0812AC08 +sub_0812AC08: @ 0x0812AC08 + push {r4, r5, lr} + ldr r0, _0812AC24 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0812AC2C + movs r0, #0 + bl sub_0812DC90 + ldr r0, _0812AC28 + ldr r1, [r0] + movs r0, #8 + b _0812ACF2 + .align 2, 0 +_0812AC24: .4byte gUnknown_3002360 +_0812AC28: .4byte gUnknown_203A800 +_0812AC2C: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AC92 + ldr r0, _0812AC88 + ldr r2, [r0] + movs r1, #0xc + ldrsh r0, [r2, r1] + subs r0, #3 + movs r3, #0x12 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + cmp r0, #0 + blt _0812AC8C + ldrh r4, [r2, #0x12] + adds r0, r1, #0 + cmp r0, #2 + bgt _0812AC6A +_0812AC52: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0812CE8C + lsls r0, r4, #0x10 + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r0, r2 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0812AC52 +_0812AC6A: + ldr r0, _0812AC88 + ldr r1, [r0] + ldrh r0, [r1, #0xc] + subs r0, #3 + ldrh r3, [r1, #0x12] + adds r0, r0, r3 + strh r0, [r1, #0xc] + movs r0, #3 + strh r0, [r1, #0x12] + movs r0, #9 + strb r0, [r1] + movs r0, #0x5f + bl sub_080A306C + b _0812ACF4 + .align 2, 0 +_0812AC88: .4byte gUnknown_203A800 +_0812AC8C: + movs r0, #6 + strb r0, [r2] + b _0812ACF4 +_0812AC92: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812ACC2 + ldr r4, _0812ACFC + ldr r0, [r4] + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0812ACC2 + movs r0, #0x5f + bl sub_080A306C + ldr r0, [r4] + ldrb r0, [r0, #0x12] + bl sub_0812CE8C + ldr r1, [r4] + ldrh r0, [r1, #0xc] + subs r0, #1 + strh r0, [r1, #0xc] + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] +_0812ACC2: + ldr r0, _0812ACFC + ldr r3, [r0] + movs r1, #0x12 + ldrsh r2, [r3, r1] + ldr r4, _0812AD00 + adds r5, r0, #0 + cmp r2, #2 + bgt _0812ACE0 + cmp r2, #0 + beq _0812ACE4 + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812ACE4 +_0812ACE0: + movs r0, #9 + strb r0, [r3] +_0812ACE4: + ldrh r1, [r4, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0812ACF4 + ldr r1, [r5] + movs r0, #0x15 +_0812ACF2: + strb r0, [r1] +_0812ACF4: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0812ACFC: .4byte gUnknown_203A800 +_0812AD00: .4byte gUnknown_3002360 + thumb_func_end sub_0812AC08 + + thumb_func_start sub_0812AD04 +sub_0812AD04: @ 0x0812AD04 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0812AD3C + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _0812AD40 + ldr r1, [r0] + movs r0, #7 + strb r0, [r1] + movs r0, #0 + add sp, #0xc + pop {r1} + bx r1 + .align 2, 0 +_0812AD3C: .4byte gUnknown_8588641 +_0812AD40: .4byte gUnknown_203A800 + thumb_func_end sub_0812AD04 + + thumb_func_start sub_0812AD44 +sub_0812AD44: @ 0x0812AD44 + push {lr} + ldr r0, _0812AD68 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0812AD62 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r0, _0812AD6C + ldr r1, [r0] + movs r0, #5 + strb r0, [r1] +_0812AD62: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812AD68: .4byte gUnknown_3002360 +_0812AD6C: .4byte gUnknown_203A800 + thumb_func_end sub_0812AD44 + + thumb_func_start sub_0812AD70 +sub_0812AD70: @ 0x0812AD70 + push {lr} + bl sub_0812DCC4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812AD84 + ldr r0, _0812AD8C + ldr r1, [r0] + movs r0, #5 + strb r0, [r1] +_0812AD84: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812AD8C: .4byte gUnknown_203A800 + thumb_func_end sub_0812AD70 + + thumb_func_start sub_0812AD90 +sub_0812AD90: @ 0x0812AD90 + push {r4, lr} + adds r4, r0, #0 + bl sub_0812B4FC + bl sub_0812DFEC + movs r0, #0 + bl sub_0812BEB4 + movs r0, #1 + bl sub_0812BEB4 + movs r0, #2 + bl sub_0812BEB4 + bl sub_080EF784 + movs r0, #0 + strh r0, [r4, #8] + ldr r4, _0812ADD0 + ldr r0, [r4] + ldrb r1, [r0, #4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812ADD4 + bl sub_0812D4BC + ldr r1, [r4] + movs r0, #0xa + b _0812ADDE + .align 2, 0 +_0812ADD0: .4byte gUnknown_203A800 +_0812ADD4: + movs r0, #1 + bl sub_0812DEF4 + ldr r1, [r4] + movs r0, #0xb +_0812ADDE: + strb r0, [r1] + ldr r4, _0812AE00 + ldr r0, [r4] + movs r1, #8 + strh r1, [r0, #0x1a] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _0812ADF6 + bl sub_0812B79C + ldr r1, [r4] + strh r0, [r1, #0x1a] +_0812ADF6: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812AE00: .4byte gUnknown_203A800 + thumb_func_end sub_0812AD90 + + thumb_func_start sub_0812AE04 +sub_0812AE04: @ 0x0812AE04 + push {lr} + bl sub_0812D4DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812AE28 + movs r0, #1 + bl sub_0812DEF4 + ldr r3, _0812AE30 + ldr r2, [r3] + ldrb r1, [r2, #4] + movs r0, #0xdf + ands r0, r1 + strb r0, [r2, #4] + ldr r1, [r3] + movs r0, #0xb + strb r0, [r1] +_0812AE28: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812AE30: .4byte gUnknown_203A800 + thumb_func_end sub_0812AE04 + + thumb_func_start sub_0812AE34 +sub_0812AE34: @ 0x0812AE34 + push {lr} + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x1d + ble _0812AE50 + bl sub_0812B56C + ldr r0, _0812AE58 + ldr r1, [r0] + movs r0, #0xc + strb r0, [r1] +_0812AE50: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812AE58: .4byte gUnknown_203A800 + thumb_func_end sub_0812AE34 + + thumb_func_start sub_0812AE5C +sub_0812AE5C: @ 0x0812AE5C + push {r4, lr} + ldr r0, _0812AE90 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AE88 + movs r0, #0x18 + bl sub_080A306C + ldr r4, _0812AE94 + ldr r0, [r4] + ldrb r0, [r0, #0x18] + bl sub_0812BEEC + ldr r0, [r4] + ldrb r0, [r0, #0x18] + bl sub_0812CD50 + ldr r1, [r4] + movs r0, #0xd + strb r0, [r1] +_0812AE88: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812AE90: .4byte gUnknown_3002360 +_0812AE94: .4byte gUnknown_203A800 + thumb_func_end sub_0812AE5C + + thumb_func_start sub_0812AE98 +sub_0812AE98: @ 0x0812AE98 + push {r4, lr} + ldr r4, _0812AEC8 + ldr r0, [r4] + ldrb r0, [r0, #0x18] + bl sub_0812BF14 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812AECC + ldr r1, [r4] + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] + movs r0, #0xc + strb r0, [r1] + ldr r1, [r4] + movs r2, #0x18 + ldrsh r0, [r1, r2] + cmp r0, #2 + ble _0812AEC4 + movs r0, #0xe + strb r0, [r1] +_0812AEC4: + movs r0, #1 + b _0812AECE + .align 2, 0 +_0812AEC8: .4byte gUnknown_203A800 +_0812AECC: + movs r0, #0 +_0812AECE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812AE98 + + thumb_func_start sub_0812AED4 +sub_0812AED4: @ 0x0812AED4 + push {r4, lr} + ldr r4, _0812AF40 + ldr r2, [r4] + ldrb r1, [r2, #4] + movs r0, #0xc0 + ands r0, r1 + strb r0, [r2, #4] + bl sub_0812B838 + ldr r1, [r4] + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0812AEFA + subs r0, #1 + strb r0, [r1, #0xa] + ldr r1, [r4] + ldrb r0, [r1, #0xb] + adds r0, #1 + strb r0, [r1, #0xb] +_0812AEFA: + ldr r1, [r4] + ldrh r0, [r1, #8] + cmp r0, #0 + beq _0812AFDC + movs r0, #0xf + strb r0, [r1] + bl sub_0812BACC + bl sub_0812D0C0 + ldr r2, [r4] + ldrh r0, [r2, #0x10] + ldrh r1, [r2, #0xe] + subs r0, r0, r1 + strh r0, [r2, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0812AF22 + movs r0, #0 + strh r0, [r2, #0x10] +_0812AF22: + ldr r0, [r4] + ldrh r1, [r0, #8] + movs r0, #0xc0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AF48 + ldr r0, _0812AF44 + bl sub_080A29AC + movs r0, #6 + bl sub_0812DEF4 + b _0812AF72 + .align 2, 0 +_0812AF40: .4byte gUnknown_203A800 +_0812AF44: .4byte 0x00000185 +_0812AF48: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0812AF64 + ldr r0, _0812AF60 + bl sub_080A29AC + movs r0, #5 + bl sub_0812DEF4 + b _0812AF72 + .align 2, 0 +_0812AF60: .4byte 0x00000185 +_0812AF64: + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_080A29AC + movs r0, #2 + bl sub_0812DEF4 +_0812AF72: + ldr r2, _0812AFD8 + ldr r3, [r2] + ldrh r1, [r3, #8] + movs r0, #0xe0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AFB6 + ldrb r1, [r3, #4] + movs r0, #0x3f + ands r0, r1 + movs r4, #0 + strb r0, [r3, #4] + ldr r3, [r2] + ldrh r1, [r3, #8] + movs r0, #0xc0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AFB6 + strb r4, [r3, #0xa] + ldr r0, [r2] + strb r4, [r0, #0xb] + ldr r0, [r2] + strb r4, [r0, #3] + ldr r3, [r2] + ldrh r1, [r3, #8] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812AFB6 + movs r0, #1 + strb r0, [r3, #3] +_0812AFB6: + ldr r3, [r2] + ldrh r1, [r3, #8] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812AFFE + ldrb r0, [r3, #2] + cmp r0, #0xf + bhi _0812AFFE + adds r0, #1 + strb r0, [r3, #2] + ldr r0, [r2] + ldrb r0, [r0, #2] + bl sub_0812D1B8 + b _0812AFFE + .align 2, 0 +_0812AFD8: .4byte gUnknown_203A800 +_0812AFDC: + movs r0, #3 + bl sub_0812DEF4 + ldr r1, [r4] + movs r0, #0x14 + strb r0, [r1] + ldr r1, [r4] + ldrh r0, [r1, #0x12] + ldrh r2, [r1, #0x10] + adds r0, r0, r2 + strh r0, [r1, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, _0812B008 + cmp r0, r2 + ble _0812AFFE + strh r2, [r1, #0x10] +_0812AFFE: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812B008: .4byte 0x0000270F + thumb_func_end sub_0812AED4 + + thumb_func_start sub_0812B00C +sub_0812B00C: @ 0x0812B00C + push {lr} + bl sub_0812BAEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812B020 + ldr r0, _0812B028 + ldr r1, [r0] + movs r0, #0x10 + strb r0, [r1] +_0812B020: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B028: .4byte gUnknown_203A800 + thumb_func_end sub_0812B00C + + thumb_func_start sub_0812B02C +sub_0812B02C: @ 0x0812B02C + push {r4, lr} + bl sub_0812D0F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812B098 + ldr r4, _0812B0A0 + ldr r1, [r4] + movs r0, #0x13 + strb r0, [r1] + ldr r0, [r4] + ldrh r1, [r0, #8] + movs r0, #0xc0 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812B054 + movs r0, #0x1c + bl sub_0808414C +_0812B054: + ldr r2, [r4] + ldrh r1, [r2, #8] + movs r3, #4 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0812B06A + movs r0, #0 + strh r0, [r2, #0x18] + movs r0, #9 + strb r0, [r2] +_0812B06A: + ldr r2, [r4] + ldrh r1, [r2, #8] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812B07A + movs r0, #0x11 + strb r0, [r2] +_0812B07A: + ldr r1, [r4] + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0812B098 + ldrh r1, [r1, #8] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0812B098 + movs r0, #4 + bl sub_0812DEF4 + ldr r1, [r4] + movs r0, #0x12 + strb r0, [r1] +_0812B098: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812B0A0: .4byte gUnknown_203A800 + thumb_func_end sub_0812B02C + + thumb_func_start sub_0812B0A4 +sub_0812B0A4: @ 0x0812B0A4 + push {r4, lr} + bl sub_0812D21C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812B0DC + ldr r4, _0812B0E4 + ldr r1, [r4] + movs r0, #0x13 + strb r0, [r1] + ldr r2, [r4] + ldrh r1, [r2, #8] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0812B0DC + movs r0, #9 + strb r0, [r2] + ldr r0, [r4] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _0812B0DC + movs r0, #4 + bl sub_0812DEF4 + ldr r1, [r4] + movs r0, #0x12 + strb r0, [r1] +_0812B0DC: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812B0E4: .4byte gUnknown_203A800 + thumb_func_end sub_0812B0A4 + + thumb_func_start sub_0812B0E8 +sub_0812B0E8: @ 0x0812B0E8 + push {lr} + bl sub_0812E064 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812B10C + ldr r2, _0812B114 + ldr r1, [r2] + movs r0, #0x13 + strb r0, [r1] + ldr r2, [r2] + ldrh r1, [r2, #8] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0812B10C + movs r0, #9 + strb r0, [r2] +_0812B10C: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B114: .4byte gUnknown_203A800 + thumb_func_end sub_0812B0E8 + + thumb_func_start sub_0812B118 +sub_0812B118: @ 0x0812B118 + push {lr} + movs r0, #0 + bl sub_0812CEC8 + movs r0, #1 + bl sub_0812CEC8 + movs r0, #2 + bl sub_0812CEC8 + ldr r0, _0812B13C + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B13C: .4byte gUnknown_203A800 + thumb_func_end sub_0812B118 + + thumb_func_start sub_0812B140 +sub_0812B140: @ 0x0812B140 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + ble _0812B15E + movs r0, #0 + strh r0, [r1, #0xa] + ldr r0, _0812B164 + ldr r1, [r0] + movs r0, #0x13 + strb r0, [r1] +_0812B15E: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B164: .4byte gUnknown_203A800 + thumb_func_end sub_0812B140 + + thumb_func_start sub_0812B168 +sub_0812B168: @ 0x0812B168 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0812B1B8 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r2, #0x85 + lsls r2, r2, #2 + movs r3, #0xca + lsls r3, r3, #1 + movs r0, #0xe + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #0x15 + movs r1, #7 + bl sub_080320C4 + ldr r0, _0812B1BC + ldr r1, [r0] + movs r0, #0x16 + strb r0, [r1] + movs r0, #0 + add sp, #0xc + pop {r1} + bx r1 + .align 2, 0 +_0812B1B8: .4byte gUnknown_8588606 +_0812B1BC: .4byte gUnknown_203A800 + thumb_func_end sub_0812B168 + + thumb_func_start sub_0812B1C0 +sub_0812B1C0: @ 0x0812B1C0 + push {lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bne _0812B1FC + movs r0, #0 + movs r1, #1 + bl sub_08197028 + movs r0, #0 + bl sub_0812CEC8 + movs r0, #1 + bl sub_0812CEC8 + movs r0, #2 + bl sub_0812CEC8 + ldr r0, _0812B1F8 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + movs r0, #0x1b + b _0812B216 + .align 2, 0 +_0812B1F8: .4byte gUnknown_203A800 +_0812B1FC: + cmp r1, #1 + beq _0812B208 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0812B218 +_0812B208: + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r0, _0812B220 + ldr r1, [r0] + movs r0, #5 +_0812B216: + strb r0, [r1] +_0812B218: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B220: .4byte gUnknown_203A800 + thumb_func_end sub_0812B1C0 + + thumb_func_start sub_0812B224 +sub_0812B224: @ 0x0812B224 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0812B25C + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _0812B260 + ldr r1, [r0] + movs r0, #0x18 + strb r0, [r1] + movs r0, #0 + add sp, #0xc + pop {r1} + bx r1 + .align 2, 0 +_0812B25C: .4byte gUnknown_8588612 +_0812B260: .4byte gUnknown_203A800 + thumb_func_end sub_0812B224 + + thumb_func_start sub_0812B264 +sub_0812B264: @ 0x0812B264 + push {lr} + ldr r0, _0812B288 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0812B282 + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r0, _0812B28C + ldr r1, [r0] + movs r0, #5 + strb r0, [r1] +_0812B282: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B288: .4byte gUnknown_3002360 +_0812B28C: .4byte gUnknown_203A800 + thumb_func_end sub_0812B264 + + thumb_func_start sub_0812B290 +sub_0812B290: @ 0x0812B290 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0812B2C8 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _0812B2CC + ldr r1, [r0] + movs r0, #0x1a + strb r0, [r1] + movs r0, #0 + add sp, #0xc + pop {r1} + bx r1 + .align 2, 0 +_0812B2C8: .4byte gUnknown_8588627 +_0812B2CC: .4byte gUnknown_203A800 + thumb_func_end sub_0812B290 + + thumb_func_start sub_0812B2D0 +sub_0812B2D0: @ 0x0812B2D0 + push {lr} + ldr r0, _0812B2F4 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0812B2EE + movs r0, #0 + movs r1, #1 + bl sub_08197028 + ldr r0, _0812B2F8 + ldr r1, [r0] + movs r0, #0x1b + strb r0, [r1] +_0812B2EE: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812B2F4: .4byte gUnknown_3002360 +_0812B2F8: .4byte gUnknown_203A800 + thumb_func_end sub_0812B2D0 + + thumb_func_start sub_0812B2FC +sub_0812B2FC: @ 0x0812B2FC + push {r4, lr} + sub sp, #4 + ldr r4, _0812B338 + ldr r0, [r4] + ldrh r0, [r0, #0xc] + bl sub_08145D18 + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080EE898 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812B338: .4byte gUnknown_203A800 + thumb_func_end sub_0812B2FC + + thumb_func_start sub_0812B33C +sub_0812B33C: @ 0x0812B33C + push {r4, r5, r6, lr} + ldr r0, _0812B488 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _0812B350 + b _0812B480 +_0812B350: + ldr r6, _0812B48C + ldr r0, [r6] + ldr r0, [r0, #0x64] + bl sub_08000540 + ldr r4, _0812B490 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B494 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B498 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B49C + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4A0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4A4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4A8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4AC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4B0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4B4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4B8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4BC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4C0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4C4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4C8 + ldr r0, [r4] + cmp r0, #0 + beq _0812B3F4 + bl sub_08000BF0 + str r5, [r4] +_0812B3F4: + ldr r4, _0812B4CC + ldr r0, [r4] + cmp r0, #0 + beq _0812B402 + bl sub_08000BF0 + str r5, [r4] +_0812B402: + ldr r4, _0812B4D0 + ldr r0, [r4] + cmp r0, #0 + beq _0812B410 + bl sub_08000BF0 + str r5, [r4] +_0812B410: + ldr r4, _0812B4D4 + ldr r0, [r4] + cmp r0, #0 + beq _0812B41E + bl sub_08000BF0 + str r5, [r4] +_0812B41E: + ldr r4, _0812B4D8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4DC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4E0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4E4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4E8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4EC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4F0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4F4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0812B4F8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, [r6] + bl sub_08000BF0 + str r5, [r6] +_0812B480: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0812B488: .4byte gUnknown_2037C74 +_0812B48C: .4byte gUnknown_203A800 +_0812B490: .4byte gUnknown_203A7C0 +_0812B494: .4byte gUnknown_203A7C4 +_0812B498: .4byte gUnknown_203A7C8 +_0812B49C: .4byte gUnknown_203A7CC +_0812B4A0: .4byte gUnknown_203A7D0 +_0812B4A4: .4byte gUnknown_203A7D4 +_0812B4A8: .4byte gUnknown_203A7D8 +_0812B4AC: .4byte gUnknown_203A7DC +_0812B4B0: .4byte gUnknown_203A7E0 +_0812B4B4: .4byte gUnknown_203A7E4 +_0812B4B8: .4byte gUnknown_203A7E8 +_0812B4BC: .4byte gUnknown_203A7EC +_0812B4C0: .4byte gUnknown_203A7F0 +_0812B4C4: .4byte gUnknown_203A7F4 +_0812B4C8: .4byte gUnknown_203A7B0 +_0812B4CC: .4byte gUnknown_203A7B4 +_0812B4D0: .4byte gUnknown_203A7B8 +_0812B4D4: .4byte gUnknown_203A7BC +_0812B4D8: .4byte gUnknown_203A794 +_0812B4DC: .4byte gUnknown_203A798 +_0812B4E0: .4byte gUnknown_203A79C +_0812B4E4: .4byte gUnknown_203A7A0 +_0812B4E8: .4byte gUnknown_203A7A4 +_0812B4EC: .4byte gUnknown_203A7A8 +_0812B4F0: .4byte gUnknown_203A7AC +_0812B4F4: .4byte gUnknown_203A7F8 +_0812B4F8: .4byte gUnknown_203A7FC + thumb_func_end sub_0812B33C + + thumb_func_start sub_0812B4FC +sub_0812B4FC: @ 0x0812B4FC + push {r4, lr} + ldr r4, _0812B560 + ldr r1, [r4] + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0812B55A + ldrb r1, [r1, #4] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _0812B55A + bl sub_0812B5C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812B53C + bl sub_0812B5FC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + beq _0812B53C + ldr r2, [r4] + ldr r1, _0812B564 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2, #4] + orrs r0, r1 + strb r0, [r2, #4] + cmp r3, #1 + bne _0812B55A +_0812B53C: + bl sub_0812B644 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #5 + beq _0812B55A + ldr r0, _0812B560 + ldr r2, [r0] + ldr r1, _0812B568 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2, #4] + orrs r0, r1 + strb r0, [r2, #4] +_0812B55A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812B560: .4byte gUnknown_203A800 +_0812B564: .4byte gUnknown_8584782 +_0812B568: .4byte gUnknown_8584788 + thumb_func_end sub_0812B4FC + + thumb_func_start sub_0812B56C +sub_0812B56C: @ 0x0812B56C + push {lr} + ldr r2, _0812B588 + ldr r1, [r2] + movs r0, #0 + strb r0, [r1, #6] + ldr r2, [r2] + ldrb r0, [r2, #4] + cmp r0, #0 + beq _0812B582 + movs r0, #1 + strb r0, [r2, #6] +_0812B582: + pop {r0} + bx r0 + .align 2, 0 +_0812B588: .4byte gUnknown_203A800 + thumb_func_end sub_0812B56C + + thumb_func_start sub_0812B58C +sub_0812B58C: @ 0x0812B58C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0 + movs r3, #1 + ldr r4, _0812B5A8 +_0812B598: + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _0812B5AC + adds r0, r2, r4 + ldrb r0, [r0] + b _0812B5BA + .align 2, 0 +_0812B5A8: .4byte gUnknown_858477A +_0812B5AC: + lsrs r1, r1, #1 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0812B598 + movs r0, #0 +_0812B5BA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812B58C + + thumb_func_start sub_0812B5C0 +sub_0812B5C0: @ 0x0812B5C0 + push {r4, lr} + bl sub_0806F050 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0812B5EC + ldr r1, _0812B5F0 + ldr r1, [r1] + movs r3, #0x12 + ldrsh r2, [r1, r3] + ldrb r3, [r1, #1] + lsls r1, r3, #1 + adds r1, r1, r3 + subs r1, #1 + adds r2, r2, r1 + adds r2, r2, r4 + ldrb r1, [r2] + cmp r1, r0 + bhi _0812B5F4 + movs r0, #0 + b _0812B5F6 + .align 2, 0 +_0812B5EC: .4byte gUnknown_8584644 +_0812B5F0: .4byte gUnknown_203A800 +_0812B5F4: + movs r0, #1 +_0812B5F6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812B5C0 + + thumb_func_start sub_0812B5FC +sub_0812B5FC: @ 0x0812B5FC + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _0812B63C +_0812B602: + bl sub_0806F050 + movs r2, #0xff + ldr r1, _0812B640 + ldr r3, [r1] + lsls r1, r5, #0x10 + asrs r4, r1, #0x10 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #1 + ldrb r3, [r3, #1] + adds r1, r1, r3 + adds r1, r1, r6 + ldrb r1, [r1] + ands r2, r0 + cmp r1, r2 + bgt _0812B630 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _0812B602 +_0812B630: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0812B63C: .4byte gUnknown_8584656 +_0812B640: .4byte gUnknown_203A800 + thumb_func_end sub_0812B5FC + + thumb_func_start sub_0812B644 +sub_0812B644: @ 0x0812B644 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + ldr r0, _0812B688 + mov r8, r0 + movs r7, #0x80 + lsls r7, r7, #0x11 +_0812B654: + bl sub_0806F050 + movs r5, #0xff + ands r5, r0 + ldr r0, _0812B68C + ldr r4, [r0] + lsls r2, r6, #0x10 + asrs r1, r2, #0x10 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldrb r3, [r4, #1] + adds r0, r0, r3 + add r0, r8 + ldrb r3, [r0] + cmp r1, #0 + bne _0812B690 + ldrb r0, [r4, #3] + cmp r0, #1 + bne _0812B690 + adds r3, #0xa + asrs r0, r7, #0x10 + cmp r3, r0 + ble _0812B6AE + adds r3, r0, #0 + b _0812B6AE + .align 2, 0 +_0812B688: .4byte gUnknown_8584668 +_0812B68C: .4byte gUnknown_203A800 +_0812B690: + asrs r0, r2, #0x10 + cmp r0, #4 + bne _0812B6AE + ldr r0, _0812B6D4 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #1 + bne _0812B6AE + lsls r0, r3, #0x10 + ldr r1, _0812B6D8 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + cmp r0, #0 + bge _0812B6AE + movs r3, #0 +_0812B6AE: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, r5 + bgt _0812B6C4 + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r2, r3 + lsrs r6, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812B654 +_0812B6C4: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812B6D4: .4byte gUnknown_203A800 +_0812B6D8: .4byte 0xFFF60000 + thumb_func_end sub_0812B644 + + thumb_func_start sub_0812B6DC +sub_0812B6DC: @ 0x0812B6DC + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _0812B6F0 + ldr r2, [r0] + ldrb r0, [r2, #3] + cmp r0, #0 + beq _0812B6F8 + ldr r0, _0812B6F4 + b _0812B6FA + .align 2, 0 +_0812B6F0: .4byte gUnknown_203A800 +_0812B6F4: .4byte gUnknown_85846EC +_0812B6F8: + ldr r0, _0812B70C +_0812B6FA: + lsls r1, r3, #4 + adds r1, r1, r3 + ldrb r2, [r2, #2] + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0812B70C: .4byte gUnknown_8584686 + thumb_func_end sub_0812B6DC + + thumb_func_start sub_0812B710 +sub_0812B710: @ 0x0812B710 + push {r4, r5, r6, lr} + ldr r0, _0812B734 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #5] + bl sub_0806F050 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + bl sub_0812B6DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _0812B764 + movs r6, #5 + b _0812B73E + .align 2, 0 +_0812B734: .4byte gUnknown_203A800 +_0812B738: + subs r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0812B73E: + lsls r0, r6, #0x10 + asrs r5, r0, #0x10 + cmp r5, #0 + ble _0812B75E + bl sub_0806F050 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_0812B6DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bhs _0812B738 +_0812B75E: + ldr r0, _0812B76C + ldr r0, [r0] + strb r6, [r0, #5] +_0812B764: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812B76C: .4byte gUnknown_203A800 + thumb_func_end sub_0812B710 + + thumb_func_start sub_0812B770 +sub_0812B770: @ 0x0812B770 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + movs r1, #0xff + ands r1, r0 + ldr r0, _0812B790 + lsls r4, r4, #1 + adds r4, r4, r0 + ldrh r4, [r4] + cmp r1, r4 + blo _0812B794 + movs r0, #0 + b _0812B796 + .align 2, 0 +_0812B790: .4byte gUnknown_8584752 +_0812B794: + movs r0, #1 +_0812B796: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812B770 + + thumb_func_start sub_0812B79C +sub_0812B79C: @ 0x0812B79C + push {r4, r5, lr} + movs r4, #0 + ldr r0, _0812B7B4 + ldr r0, [r0] + movs r2, #0x10 + ldrsh r1, [r0, r2] + ldr r0, _0812B7B8 + cmp r1, r0 + ble _0812B7BC + movs r4, #4 + b _0812B7D2 + .align 2, 0 +_0812B7B4: .4byte gUnknown_203A800 +_0812B7B8: .4byte 0x0000012B +_0812B7BC: + cmp r1, #0xf9 + ble _0812B7C4 + movs r4, #3 + b _0812B7D2 +_0812B7C4: + cmp r1, #0xc7 + ble _0812B7CC + movs r4, #2 + b _0812B7D2 +_0812B7CC: + cmp r1, #0x95 + ble _0812B7D2 + movs r4, #1 +_0812B7D2: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r5, _0812B7F4 + lsls r4, r4, #2 + adds r0, r4, r5 + ldrb r0, [r0] + cmp r1, r0 + bhs _0812B7F8 + movs r0, #4 + b _0812B832 + .align 2, 0 +_0812B7F4: .4byte gUnknown_858475C +_0812B7F8: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + adds r2, r5, #2 + adds r2, r4, r2 + ldr r3, _0812B828 + ldr r1, _0812B82C + ldr r1, [r1] + ldrb r1, [r1, #0xb] + lsls r1, r1, #1 + adds r1, r1, r3 + ldrb r1, [r1] + ldrb r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x18 + cmp r0, r1 + blo _0812B830 + movs r0, #8 + b _0812B832 + .align 2, 0 +_0812B828: .4byte gUnknown_8584770 +_0812B82C: .4byte gUnknown_203A800 +_0812B830: + movs r0, #2 +_0812B832: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0812B79C + + thumb_func_start sub_0812B838 +sub_0812B838: @ 0x0812B838 + push {r4, lr} + ldr r4, _0812B868 + ldr r1, [r4] + movs r0, #0 + strh r0, [r1, #8] + bl sub_0812B86C + ldr r0, [r4] + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #1 + ble _0812B854 + bl sub_0812B8E0 +_0812B854: + ldr r0, [r4] + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #2 + ble _0812B862 + bl sub_0812B9B0 +_0812B862: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812B868: .4byte gUnknown_203A800 + thumb_func_end sub_0812B838 + + thumb_func_start sub_0812B86C +sub_0812B86C: @ 0x0812B86C + push {r4, r5, lr} + movs r0, #0 + movs r1, #2 + bl sub_0812BC54 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #1 + movs r1, #2 + bl sub_0812BC54 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + movs r1, #2 + bl sub_0812BC54 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0812BA7C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + beq _0812B8CC + ldr r0, _0812B8D4 + ldr r2, [r0] + ldr r0, _0812B8D8 + lsls r1, r1, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldrh r3, [r2, #0xe] + adds r0, r0, r3 + strh r0, [r2, #0xe] + ldr r0, _0812B8DC + adds r1, r1, r0 + ldrh r0, [r2, #8] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2, #8] + movs r0, #0 + bl sub_0812CF44 +_0812B8CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B8D4: .4byte gUnknown_203A800 +_0812B8D8: .4byte gUnknown_85847AC +_0812B8DC: .4byte gUnknown_858479A + thumb_func_end sub_0812B86C + + thumb_func_start sub_0812B8E0 +sub_0812B8E0: @ 0x0812B8E0 + push {r4, r5, lr} + movs r0, #0 + movs r1, #1 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + movs r1, #1 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0812BA7C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + beq _0812B940 + cmp r1, #0 + bne _0812B91C + movs r1, #1 +_0812B91C: + ldr r0, _0812B9A4 + ldr r2, [r0] + ldr r0, _0812B9A8 + lsls r1, r1, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldrh r3, [r2, #0xe] + adds r0, r0, r3 + strh r0, [r2, #0xe] + ldr r0, _0812B9AC + adds r1, r1, r0 + ldrh r0, [r2, #8] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2, #8] + movs r0, #1 + bl sub_0812CF44 +_0812B940: + movs r0, #0 + movs r1, #3 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #1 + movs r1, #3 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + movs r1, #3 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0812BA7C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + beq _0812B99E + cmp r1, #0 + bne _0812B97A + movs r1, #1 +_0812B97A: + ldr r0, _0812B9A4 + ldr r2, [r0] + ldr r0, _0812B9A8 + lsls r1, r1, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldrh r3, [r2, #0xe] + adds r0, r0, r3 + strh r0, [r2, #0xe] + ldr r0, _0812B9AC + adds r1, r1, r0 + ldrh r0, [r2, #8] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2, #8] + movs r0, #2 + bl sub_0812CF44 +_0812B99E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812B9A4: .4byte gUnknown_203A800 +_0812B9A8: .4byte gUnknown_85847AC +_0812B9AC: .4byte gUnknown_858479A + thumb_func_end sub_0812B8E0 + + thumb_func_start sub_0812B9B0 +sub_0812B9B0: @ 0x0812B9B0 + push {r4, r5, lr} + movs r0, #0 + movs r1, #1 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #1 + movs r1, #2 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + movs r1, #3 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0812BA7C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + beq _0812BA0E + cmp r1, #0 + beq _0812BA08 + ldr r0, _0812BA70 + ldr r2, [r0] + ldr r0, _0812BA74 + lsls r1, r1, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldrh r3, [r2, #0xe] + adds r0, r0, r3 + strh r0, [r2, #0xe] + ldr r0, _0812BA78 + adds r1, r1, r0 + ldrh r0, [r2, #8] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2, #8] +_0812BA08: + movs r0, #3 + bl sub_0812CF44 +_0812BA0E: + movs r0, #0 + movs r1, #3 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #1 + movs r1, #2 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + movs r1, #1 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0812BA7C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + beq _0812BA6A + cmp r1, #0 + beq _0812BA64 + ldr r0, _0812BA70 + ldr r2, [r0] + ldr r0, _0812BA74 + lsls r1, r1, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldrh r3, [r2, #0xe] + adds r0, r0, r3 + strh r0, [r2, #0xe] + ldr r0, _0812BA78 + adds r1, r1, r0 + ldrh r0, [r2, #8] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2, #8] +_0812BA64: + movs r0, #4 + bl sub_0812CF44 +_0812BA6A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812BA70: .4byte gUnknown_203A800 +_0812BA74: .4byte gUnknown_85847AC +_0812BA78: .4byte gUnknown_858479A + thumb_func_end sub_0812B9B0 + + thumb_func_start sub_0812BA7C +sub_0812BA7C: @ 0x0812BA7C + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r3, r1 + bne _0812BAA0 + cmp r3, r2 + bne _0812BAA0 + ldr r0, _0812BA9C + adds r0, r3, r0 + ldrb r0, [r0] + b _0812BAC6 + .align 2, 0 +_0812BA9C: .4byte gUnknown_8584792 +_0812BAA0: + cmp r3, #0 + bne _0812BAAC + cmp r1, #0 + bne _0812BAAC + cmp r2, #1 + beq _0812BAB8 +_0812BAAC: + cmp r3, #1 + bne _0812BABC + cmp r1, #1 + bne _0812BABC + cmp r2, #0 + bne _0812BABC +_0812BAB8: + movs r0, #6 + b _0812BAC6 +_0812BABC: + cmp r3, #4 + beq _0812BAC4 + movs r0, #9 + b _0812BAC6 +_0812BAC4: + movs r0, #0 +_0812BAC6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812BA7C + + thumb_func_start sub_0812BACC +sub_0812BACC: @ 0x0812BACC + push {r4, lr} + ldr r4, _0812BAE8 + adds r0, r4, #0 + movs r1, #4 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812BAE8: .4byte sub_0812BB0C + thumb_func_end sub_0812BACC + + thumb_func_start sub_0812BAEC +sub_0812BAEC: @ 0x0812BAEC + push {lr} + ldr r0, _0812BB00 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0812BB04 + movs r0, #0 + b _0812BB06 + .align 2, 0 +_0812BB00: .4byte sub_0812BB0C +_0812BB04: + movs r0, #1 +_0812BB06: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812BAEC + + thumb_func_start sub_0812BB0C +sub_0812BB0C: @ 0x0812BB0C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0812BB3C + ldr r2, _0812BB40 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0812BB1E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812BB1E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812BB3C: .4byte gUnknown_8584448 +_0812BB40: .4byte gUnknown_3005B60 + thumb_func_end sub_0812BB0C + + thumb_func_start sub_0812BB44 +sub_0812BB44: @ 0x0812BB44 + push {r4, lr} + adds r4, r0, #0 + bl sub_0812CF7C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812BB70 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r0, _0812BB6C + ldr r0, [r0] + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0812BB70 + movs r0, #2 + strh r0, [r4, #8] + movs r0, #1 + b _0812BB72 + .align 2, 0 +_0812BB6C: .4byte gUnknown_203A800 +_0812BB70: + movs r0, #0 +_0812BB72: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812BB44 + + thumb_func_start sub_0812BB78 +sub_0812BB78: @ 0x0812BB78 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0812BBCC + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812BB9E + movs r0, #0x15 + bl sub_080A306C +_0812BB9E: + ldr r0, _0812BC20 + ldr r2, [r0] + ldrh r0, [r2, #0xe] + subs r0, #1 + strh r0, [r2, #0xe] + ldrh r3, [r2, #0xc] + movs r0, #0xc + ldrsh r1, [r2, r0] + ldr r0, _0812BC24 + cmp r1, r0 + bgt _0812BBB8 + adds r0, r3, #1 + strh r0, [r2, #0xc] +_0812BBB8: + movs r0, #8 + strh r0, [r4, #0xa] + ldr r0, _0812BC28 + ldrh r1, [r0, #0x2c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812BBCC + movs r0, #4 + strh r0, [r4, #0xa] +_0812BBCC: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812BC06 + ldr r0, _0812BC28 + ldrh r1, [r0, #0x2e] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0812BC06 + movs r0, #0x15 + bl sub_080A306C + ldr r1, _0812BC20 + ldr r2, [r1] + ldrh r0, [r2, #0xe] + ldrh r3, [r2, #0xc] + adds r0, r0, r3 + strh r0, [r2, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r3, _0812BC2C + cmp r0, r3 + ble _0812BC00 + strh r3, [r2, #0xc] +_0812BC00: + ldr r1, [r1] + movs r0, #0 + strh r0, [r1, #0xe] +_0812BC06: + ldr r0, _0812BC20 + ldr r0, [r0] + movs r1, #0xe + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0812BC18 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0812BC18: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BC20: .4byte gUnknown_203A800 +_0812BC24: .4byte 0x0000270E +_0812BC28: .4byte gUnknown_3002360 +_0812BC2C: .4byte 0x0000270F + thumb_func_end sub_0812BB78 + + thumb_func_start sub_0812BC30 +sub_0812BC30: @ 0x0812BC30 + push {lr} + bl sub_0812CFC8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812BC4A + ldr r0, _0812BC50 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0812BC4A: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812BC50: .4byte sub_0812BB0C + thumb_func_end sub_0812BC30 + + thumb_func_start sub_0812BC54 +sub_0812BC54: @ 0x0812BC54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r0, _0812BCA0 + ldr r0, [r0] + lsls r2, r4, #1 + adds r0, #0x28 + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r1 + movs r1, #0x15 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0812BC86 + adds r0, #0x15 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_0812BC86: + ldr r2, _0812BCA4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812BCA0: .4byte gUnknown_203A800 +_0812BCA4: .4byte gUnknown_85845F2 + thumb_func_end sub_0812BC54 + + thumb_func_start sub_0812BCA8 +sub_0812BCA8: @ 0x0812BCA8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r6, #0 + ldr r0, _0812BCF0 + ldr r0, [r0] + lsls r1, r4, #1 + adds r0, #0x1c + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0812BCD2 + ldr r6, _0812BCF4 +_0812BCD2: + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0812BCF0: .4byte gUnknown_203A800 +_0812BCF4: .4byte 0x0000FFFF + thumb_func_end sub_0812BCA8 + + thumb_func_start sub_0812BCF8 +sub_0812BCF8: @ 0x0812BCF8 + push {lr} + ldr r1, _0812BD30 + ldr r1, [r1] + movs r2, #0x16 + ldrsh r1, [r1, r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + adds r0, r1, #0 + movs r1, #6 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0812BD20 + adds r0, #6 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 +_0812BD20: + ldr r0, _0812BD34 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r1, r1, r0 + ldrb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0812BD30: .4byte gUnknown_203A800 +_0812BD34: .4byte gUnknown_8584631 + thumb_func_end sub_0812BCF8 + + thumb_func_start sub_0812BD38 +sub_0812BD38: @ 0x0812BD38 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + ldr r0, _0812BD7C + ldr r6, [r0] + lsrs r5, r5, #0x17 + adds r4, r6, #0 + adds r4, #0x1c + adds r4, r4, r5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r0, [r4] + adds r1, r1, r0 + strh r1, [r4] + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #0xfc + lsls r1, r1, #1 + bl __modsi3 + strh r0, [r4] + adds r6, #0x28 + adds r6, r6, r5 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #0x18 + bl __divsi3 + movs r1, #0x15 + subs r1, r1, r0 + strh r1, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812BD7C: .4byte gUnknown_203A800 + thumb_func_end sub_0812BD38 + + thumb_func_start sub_0812BD80 +sub_0812BD80: @ 0x0812BD80 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r7, _0812BDE0 + ldr r0, [r7] + lsls r6, r5, #1 + adds r0, #0x1c + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r0, #0x10 + asrs r1, r2, #0x10 + cmp r1, #0 + beq _0812BDD4 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bge _0812BDB6 + lsrs r4, r2, #0x10 +_0812BDB6: + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0812BD38 + ldr r0, [r7] + adds r0, #0x1c + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0812BDD4: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812BDE0: .4byte gUnknown_203A800 + thumb_func_end sub_0812BD80 + + thumb_func_start sub_0812BDE4 +sub_0812BDE4: @ 0x0812BDE4 + push {r4, lr} + ldr r1, _0812BE18 + ldr r4, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r4, #0x14] + adds r0, r0, r1 + strh r0, [r4, #0x14] + movs r1, #0x14 + ldrsh r0, [r4, r1] + movs r1, #0x78 + bl __modsi3 + strh r0, [r4, #0x14] + movs r1, #0x14 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl __divsi3 + movs r1, #6 + subs r1, r1, r0 + strh r1, [r4, #0x16] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812BE18: .4byte gUnknown_203A800 + thumb_func_end sub_0812BDE4 + + thumb_func_start sub_0812BE1C +sub_0812BE1C: @ 0x0812BE1C + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r5, _0812BE68 + ldr r0, [r5] + movs r1, #0x14 + ldrsh r0, [r0, r1] + movs r1, #0x14 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r0, #0x10 + asrs r1, r2, #0x10 + cmp r1, #0 + beq _0812BE5E + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bge _0812BE46 + lsrs r4, r2, #0x10 +_0812BE46: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + bl sub_0812BDE4 + ldr r0, [r5] + movs r1, #0x14 + ldrsh r0, [r0, r1] + movs r1, #0x14 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_0812BE5E: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0812BE68: .4byte gUnknown_203A800 + thumb_func_end sub_0812BE1C + + thumb_func_start sub_0812BE6C +sub_0812BE6C: @ 0x0812BE6C + push {r4, r5, r6, lr} + movs r4, #0 + ldr r5, _0812BEA8 + ldr r6, _0812BEAC +_0812BE74: + adds r0, r5, #0 + movs r1, #2 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r6 + strh r4, [r1, #0x26] + ldr r1, _0812BEB0 + ldr r1, [r1] + adds r1, #0x3a + adds r1, r1, r4 + strb r0, [r1] + bl _call_via_r5 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0812BE74 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812BEA8: .4byte sub_0812BF3C +_0812BEAC: .4byte gUnknown_3005B60 +_0812BEB0: .4byte gUnknown_203A800 + thumb_func_end sub_0812BE6C + + thumb_func_start sub_0812BEB4 +sub_0812BEB4: @ 0x0812BEB4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0812BEE4 + ldr r1, _0812BEE8 + ldr r2, [r1] + adds r2, #0x3a + adds r2, r2, r0 + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r3, #1 + strh r3, [r0, #8] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r3, [r0, #0x24] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812BEE4: .4byte gUnknown_3005B60 +_0812BEE8: .4byte gUnknown_203A800 + thumb_func_end sub_0812BEB4 + + thumb_func_start sub_0812BEEC +sub_0812BEEC: @ 0x0812BEEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812BF0C + ldr r1, _0812BF10 + ldr r1, [r1] + adds r1, #0x3a + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #8] + bx lr + .align 2, 0 +_0812BF0C: .4byte gUnknown_3005B60 +_0812BF10: .4byte gUnknown_203A800 + thumb_func_end sub_0812BEEC + + thumb_func_start sub_0812BF14 +sub_0812BF14: @ 0x0812BF14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812BF34 + ldr r1, _0812BF38 + ldr r1, [r1] + adds r1, #0x3a + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_0812BF34: .4byte gUnknown_3005B60 +_0812BF38: .4byte gUnknown_203A800 + thumb_func_end sub_0812BF14 + + thumb_func_start sub_0812BF3C +sub_0812BF3C: @ 0x0812BF3C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0812BF6C + ldr r2, _0812BF70 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0812BF4E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812BF4E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812BF6C: .4byte gUnknown_8584454 +_0812BF70: .4byte gUnknown_3005B60 + thumb_func_end sub_0812BF3C + + thumb_func_start sub_0812BF74 +sub_0812BF74: @ 0x0812BF74 + movs r0, #0 + bx lr + thumb_func_end sub_0812BF74 + + thumb_func_start sub_0812BF78 +sub_0812BF78: @ 0x0812BF78 + push {lr} + ldrh r0, [r0, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0812BF94 + ldr r1, [r1] + movs r2, #0x1a + ldrsh r1, [r1, r2] + bl sub_0812BD38 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0812BF94: .4byte gUnknown_203A800 + thumb_func_end sub_0812BF78 + + thumb_func_start sub_0812BF98 +sub_0812BF98: @ 0x0812BF98 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #8] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #8] + ldr r0, _0812C020 + ldr r3, [r0] + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + adds r0, r3, #0 + adds r0, #0x34 + adds r0, r0, r1 + strh r2, [r0] + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + adds r0, r3, #0 + adds r0, #0x2e + adds r0, r0, r1 + strh r2, [r0] + ldrb r0, [r3, #0xa] + cmp r0, #0 + bne _0812C004 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _0812BFEC + ldrb r0, [r3, #6] + cmp r0, #0 + beq _0812BFEC + ldr r1, _0812C024 + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C004 +_0812BFEC: + ldr r0, _0812C020 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #6] + ldr r1, _0812C028 + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_0812C004: + ldr r0, _0812C020 + ldr r1, [r0] + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r1, #0x2e + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r4, #0xa] + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812C020: .4byte gUnknown_203A800 +_0812C024: .4byte gUnknown_8584468 +_0812C028: .4byte gUnknown_8584474 + thumb_func_end sub_0812BF98 + + thumb_func_start sub_0812C02C +sub_0812C02C: @ 0x0812C02C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r1, _0812C070 + mov r0, sp + movs r2, #0xa + bl memcpy + ldr r7, _0812C074 + ldr r5, [r7] + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r6, r0, #1 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r0, r6 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r0, #0 + beq _0812C078 + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0x1a + ldrsh r1, [r5, r6] + bl sub_0812BD80 + b _0812C0B0 + .align 2, 0 +_0812C070: .4byte gUnknown_8584480 +_0812C074: .4byte gUnknown_203A800 +_0812C078: + adds r0, r5, #0 + adds r0, #0x2e + adds r1, r0, r6 + ldrh r3, [r1] + movs r6, #0 + ldrsh r0, [r1, r6] + cmp r0, #0 + beq _0812C0B4 + subs r0, r3, #1 + strh r0, [r1] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x1a + ldrsh r1, [r5, r2] + bl sub_0812BD38 + ldr r1, [r7] + movs r6, #0x26 + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + adds r1, #0x1c + adds r1, r1, r0 + movs r2, #0 + ldrsh r0, [r1, r2] + movs r1, #0x18 + bl __modsi3 +_0812C0B0: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_0812C0B4: + cmp r2, #0 + bne _0812C0E2 + ldr r0, _0812C0EC + ldr r1, [r0] + movs r6, #0x26 + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + adds r1, #0x2e + adds r1, r1, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + cmp r1, #0 + bne _0812C0E2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0xa] + strh r1, [r4, #0xc] +_0812C0E2: + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812C0EC: .4byte gUnknown_203A800 + thumb_func_end sub_0812C02C + + thumb_func_start sub_0812C0F0 +sub_0812C0F0: @ 0x0812C0F0 + push {r4, lr} + adds r2, r0, #0 + ldr r4, _0812C144 + ldr r1, [r4] + movs r3, #0x26 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r1, #0x22 + adds r1, r1, r0 + ldrh r0, [r2, #0xa] + strh r0, [r1] + ldrh r0, [r2, #0xa] + rsbs r3, r0, #0 + strh r3, [r2, #0xa] + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0812C120 + lsls r0, r3, #0x10 + asrs r0, r0, #0x11 + strh r0, [r2, #0xa] +_0812C120: + movs r0, #0xa + ldrsh r3, [r2, r0] + cmp r3, #0 + bne _0812C13A + strh r3, [r2, #8] + strh r3, [r2, #0x24] + ldr r1, [r4] + movs r4, #0x26 + ldrsh r0, [r2, r4] + lsls r0, r0, #1 + adds r1, #0x22 + adds r1, r1, r0 + strh r3, [r1] +_0812C13A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812C144: .4byte gUnknown_203A800 + thumb_func_end sub_0812C0F0 + + thumb_func_start sub_0812C148 +sub_0812C148: @ 0x0812C148 + push {r4, r5, lr} + ldr r4, _0812C18C + ldr r0, [r4] + ldrb r0, [r0, #4] + bl sub_0812B58C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r5, r3, #0 + ldr r4, [r4] + ldrb r1, [r4, #4] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _0812C16A + movs r5, #0 + movs r3, #1 +_0812C16A: + ldr r1, _0812C190 + movs r2, #0x12 + ldrsh r0, [r4, r2] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + adds r0, r5, #0 + adds r1, r3, #0 + bl _call_via_r2 + thumb_func_end sub_0812C148 + + thumb_func_start sub_0812C180 +sub_0812C180: @ 0x0812C180 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0812C18C: .4byte gUnknown_203A800 +_0812C190: .4byte gUnknown_858448C + thumb_func_end sub_0812C180 + + thumb_func_start sub_0812C194 +sub_0812C194: @ 0x0812C194 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r0, #0 + adds r1, r3, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, r4 + beq _0812C1BC + cmp r0, r5 + bne _0812C1CC +_0812C1BC: + ldr r0, _0812C1C8 + ldr r0, [r0] + strb r1, [r0, #7] + movs r0, #1 + b _0812C1CE + .align 2, 0 +_0812C1C8: .4byte gUnknown_203A800 +_0812C1CC: + movs r0, #0 +_0812C1CE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0812C194 + + thumb_func_start sub_0812C1D4 +sub_0812C1D4: @ 0x0812C1D4 + push {r4, lr} + movs r1, #1 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + subs r1, r1, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _0812C21C + movs r1, #2 + subs r1, r1, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _0812C21C + movs r1, #3 + subs r1, r1, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _0812C220 +_0812C21C: + movs r0, #1 + b _0812C222 +_0812C220: + movs r0, #0 +_0812C222: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0812C1D4 + + thumb_func_start sub_0812C228 +sub_0812C228: @ 0x0812C228 + push {lr} + ldr r0, _0812C23C + ldr r0, [r0] + ldrb r1, [r0, #4] + movs r0, #0xc2 + ands r0, r1 + cmp r0, #0 + bne _0812C240 + movs r0, #0 + b _0812C242 + .align 2, 0 +_0812C23C: .4byte gUnknown_203A800 +_0812C240: + movs r0, #1 +_0812C242: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812C228 + + thumb_func_start sub_0812C248 +sub_0812C248: @ 0x0812C248 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r5, #0 + movs r0, #2 + mov r8, r0 +_0812C25C: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + mov r1, r8 + subs r0, r1, r4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0812C194 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C288 + ldr r0, _0812C284 + ldr r1, [r0] + movs r0, #2 + strh r0, [r1, #0x34] + strh r5, [r1, #0x2e] + movs r0, #1 + b _0812C296 + .align 2, 0 +_0812C284: .4byte gUnknown_203A800 +_0812C288: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C25C + movs r0, #0 +_0812C296: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0812C248 + + thumb_func_start sub_0812C2A0 +sub_0812C2A0: @ 0x0812C2A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + bl sub_0812C228 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0812C2CE + movs r0, #0 + bl sub_0812C1D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C304 +_0812C2CE: + movs r7, #1 + movs r6, #0 +_0812C2D2: + lsls r0, r7, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + mov r1, sb + mov r2, r8 + bl sub_0812C194 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C2F8 + ldr r0, _0812C2F4 + ldr r0, [r0] + strh r7, [r0, #0x34] + strh r6, [r0, #0x2e] + movs r0, #1 + b _0812C3A0 + .align 2, 0 +_0812C2F4: .4byte gUnknown_203A800 +_0812C2F8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0812C2D2 +_0812C304: + movs r7, #1 + adds r6, r5, #0 + ldr r0, _0812C358 + mov sl, r0 +_0812C30C: + lsls r5, r7, #0x10 + cmp r6, #0 + bne _0812C31E + asrs r0, r5, #0x10 + bl sub_0812C1D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C390 +_0812C31E: + movs r0, #1 + asrs r4, r5, #0x10 + subs r0, r0, r4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, sb + mov r2, r8 + bl sub_0812C194 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C390 + cmp r4, #1 + bne _0812C35C + cmp r6, #0 + bne _0812C34A + movs r0, #3 + bl sub_0812C1D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C35C +_0812C34A: + mov r0, sl + ldr r1, [r0] + movs r0, #3 + strh r0, [r1, #0x34] + strh r0, [r1, #0x2e] + movs r0, #1 + b _0812C3A0 + .align 2, 0 +_0812C358: .4byte gUnknown_203A800 +_0812C35C: + asrs r0, r5, #0x10 + cmp r0, #3 + bgt _0812C384 + adds r4, r0, #1 + cmp r6, #0 + bne _0812C376 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + bl sub_0812C1D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C384 +_0812C376: + mov r0, sl + ldr r1, [r0] + movs r0, #2 + strh r0, [r1, #0x34] + strh r4, [r1, #0x2e] + movs r0, #1 + b _0812C3A0 +_0812C384: + mov r0, sl + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #0x34] + strh r7, [r1, #0x2e] + b _0812C3A0 +_0812C390: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r5, r1 + lsrs r7, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C30C + movs r0, #0 +_0812C3A0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812C2A0 + + thumb_func_start sub_0812C3B0 +sub_0812C3B0: @ 0x0812C3B0 + push {lr} + ldr r1, _0812C3D0 + ldr r0, _0812C3D4 + ldr r0, [r0] + movs r2, #0x12 + ldrsh r0, [r0, r2] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_0812C3B0 + + thumb_func_start sub_0812C3C8 +sub_0812C3C8: @ 0x0812C3C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0812C3D0: .4byte gUnknown_8584498 +_0812C3D4: .4byte gUnknown_203A800 + thumb_func_end sub_0812C3C8 + + thumb_func_start sub_0812C3D8 +sub_0812C3D8: @ 0x0812C3D8 + push {r4, r5, r6, r7, lr} + ldr r0, _0812C40C + ldr r0, [r0] + movs r5, #0 + ldrh r7, [r0, #0x34] + movs r1, #0x34 + ldrsh r6, [r0, r1] +_0812C3E6: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r6, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldr r1, _0812C40C + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r1, #7] + cmp r0, r2 + bne _0812C410 + strh r7, [r1, #0x36] + strh r5, [r1, #0x30] + movs r0, #1 + b _0812C41E + .align 2, 0 +_0812C40C: .4byte gUnknown_203A800 +_0812C410: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C3E6 + movs r0, #0 +_0812C41E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0812C3D8 + + thumb_func_start sub_0812C424 +sub_0812C424: @ 0x0812C424 + push {r4, r5, r6, lr} + bl sub_0812C3D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C486 + ldr r0, _0812C478 + ldr r1, [r0] + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #2 + beq _0812C482 + movs r2, #0x30 + ldrsh r0, [r1, r2] + cmp r0, #1 + ble _0812C482 + cmp r0, #4 + beq _0812C482 + movs r5, #0 + movs r6, #2 +_0812C44C: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r6, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldr r1, _0812C478 + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r1, #7] + cmp r0, r2 + beq _0812C47C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C44C + b _0812C482 + .align 2, 0 +_0812C478: .4byte gUnknown_203A800 +_0812C47C: + movs r0, #2 + strh r0, [r1, #0x36] + strh r5, [r1, #0x30] +_0812C482: + movs r0, #1 + b _0812C4C2 +_0812C486: + ldr r0, _0812C4C8 + ldr r0, [r0] + movs r1, #0x34 + ldrsh r0, [r0, r1] + cmp r0, #2 + beq _0812C4C0 + movs r5, #0 + movs r6, #2 +_0812C496: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r6, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldr r1, _0812C4C8 + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r1, #7] + cmp r0, r2 + beq _0812C47C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C496 +_0812C4C0: + movs r0, #0 +_0812C4C2: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0812C4C8: .4byte gUnknown_203A800 + thumb_func_end sub_0812C424 + + thumb_func_start sub_0812C4CC +sub_0812C4CC: @ 0x0812C4CC + push {r4, lr} + ldr r2, _0812C508 + ldr r0, [r2] + ldrb r3, [r0, #7] + adds r4, r3, #0 + ldrb r1, [r0, #4] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0812C4E8 + movs r3, #0 + cmp r4, #0 + bne _0812C4E8 + movs r3, #1 +_0812C4E8: + ldr r1, _0812C50C + ldr r0, [r2] + movs r2, #0x12 + ldrsh r0, [r0, r2] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r3, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812C508: .4byte gUnknown_203A800 +_0812C50C: .4byte gUnknown_85844A4 + thumb_func_end sub_0812C4CC + + thumb_func_start sub_0812C510 +sub_0812C510: @ 0x0812C510 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0812C550 + ldr r0, [r0] + movs r5, #0 + ldrh r1, [r0, #0x36] + mov r8, r1 + movs r1, #0x36 + ldrsh r6, [r0, r1] +_0812C528: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r6, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r7 + bne _0812C554 + ldr r0, _0812C550 + ldr r0, [r0] + mov r1, r8 + strh r1, [r0, #0x38] + strh r5, [r0, #0x32] + movs r0, #1 + b _0812C562 + .align 2, 0 +_0812C550: .4byte gUnknown_203A800 +_0812C554: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C528 + movs r0, #0 +_0812C562: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0812C510 + + thumb_func_start sub_0812C56C +sub_0812C56C: @ 0x0812C56C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0812C594 + ldr r0, [r0] + movs r2, #0x34 + ldrsh r1, [r0, r2] + movs r2, #0x36 + ldrsh r0, [r0, r2] + cmp r1, r0 + bne _0812C5AC + adds r0, r6, #0 + bl sub_0812C510 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0812C5E2 + .align 2, 0 +_0812C594: .4byte gUnknown_203A800 +_0812C598: + ldr r0, _0812C5A8 + ldr r0, [r0] + strh r5, [r0, #0x32] + mov r1, r8 + strh r1, [r0, #0x38] + movs r0, #1 + b _0812C5E2 + .align 2, 0 +_0812C5A8: .4byte gUnknown_203A800 +_0812C5AC: + movs r2, #1 + mov r8, r2 + cmp r1, #1 + bne _0812C5B8 + movs r0, #3 + mov r8, r0 +_0812C5B8: + movs r5, #0 + mov r7, r8 +_0812C5BC: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r7, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r6 + beq _0812C598 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C5BC + movs r0, #0 +_0812C5E2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0812C56C + + thumb_func_start sub_0812C5EC +sub_0812C5EC: @ 0x0812C5EC + push {r4, r5, lr} + movs r5, #0 + b _0812C5F8 +_0812C5F2: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0812C5F8: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0812C1D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812C5F2 + ldr r0, _0812C614 + ldr r0, [r0] + strh r5, [r0, #0x2e] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812C614: .4byte gUnknown_203A800 + thumb_func_end sub_0812C5EC + + thumb_func_start sub_0812C618 +sub_0812C618: @ 0x0812C618 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1] + cmp r0, #0 + bne _0812C626 + movs r0, #1 + b _0812C630 +_0812C626: + cmp r0, #1 + beq _0812C62E + movs r0, #0 + b _0812C634 +_0812C62E: + movs r0, #0 +_0812C630: + strb r0, [r1] + movs r0, #1 +_0812C634: + pop {r1} + bx r1 + thumb_func_end sub_0812C618 + + thumb_func_start sub_0812C638 +sub_0812C638: @ 0x0812C638 + push {lr} + ldr r1, _0812C654 + ldr r0, _0812C658 + ldr r0, [r0] + movs r2, #0x12 + ldrsh r0, [r0, r2] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_0812C638 + + thumb_func_start sub_0812C650 +sub_0812C650: @ 0x0812C650 + pop {r0} + bx r0 + .align 2, 0 +_0812C654: .4byte gUnknown_85844B0 +_0812C658: .4byte gUnknown_203A800 + thumb_func_end sub_0812C650 + + thumb_func_start sub_0812C65C +sub_0812C65C: @ 0x0812C65C + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r0, _0812C6C4 + ldr r2, [r0] + movs r1, #0x34 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0812C6D4 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812C6D4 + ldrh r0, [r2, #0x2e] + movs r1, #2 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + mov r1, sp + strb r0, [r1] + mov r0, sp + bl sub_0812C618 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C6D4 + movs r5, #0 + mov r6, sp + movs r7, #2 +_0812C69C: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r7, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldrb r1, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0812C6C8 + ldr r0, _0812C6C4 + ldr r1, [r0] + movs r0, #2 + strh r0, [r1, #0x36] + strh r5, [r1, #0x30] + b _0812C6D4 + .align 2, 0 +_0812C6C4: .4byte gUnknown_203A800 +_0812C6C8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C69C +_0812C6D4: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0812C65C + + thumb_func_start sub_0812C6DC +sub_0812C6DC: @ 0x0812C6DC + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r4, _0812C744 + ldr r2, [r4] + ldrh r3, [r2, #0x34] + movs r1, #0x34 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0812C754 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812C754 + ldrh r1, [r2, #0x2e] + subs r1, r3, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + mov r1, sp + strb r0, [r1] + mov r0, sp + bl sub_0812C618 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C754 + movs r5, #0 + mov r7, sp + adds r6, r4, #0 +_0812C71C: + ldr r0, [r6] + ldrh r1, [r0, #0x34] + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r1, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldrb r1, [r7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0812C748 + ldr r0, [r6] + ldrh r1, [r0, #0x34] + strh r1, [r0, #0x36] + strh r5, [r0, #0x30] + b _0812C754 + .align 2, 0 +_0812C744: .4byte gUnknown_203A800 +_0812C748: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C71C +_0812C754: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0812C6DC + + thumb_func_start sub_0812C75C +sub_0812C75C: @ 0x0812C75C + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r6, _0812C784 + ldr r2, [r6] + ldrh r4, [r2, #0x34] + movs r0, #0x34 + ldrsh r3, [r2, r0] + cmp r3, #0 + beq _0812C85A + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812C85A + cmp r3, #2 + bne _0812C7A6 + bl sub_0812C6DC + b _0812C85A + .align 2, 0 +_0812C784: .4byte gUnknown_203A800 +_0812C788: + ldr r0, _0812C794 + ldr r0, [r0] + movs r1, #0 + strh r5, [r0, #0x36] + strh r1, [r0, #0x30] + b _0812C85A + .align 2, 0 +_0812C794: .4byte gUnknown_203A800 +_0812C798: + movs r0, #2 + strh r0, [r1, #0x36] + adds r0, r4, #1 + strh r0, [r1, #0x30] + b _0812C85A +_0812C7A2: + movs r0, #3 + b _0812C834 +_0812C7A6: + ldrh r1, [r2, #0x2e] + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + mov r1, sp + strb r0, [r1] + mov r0, sp + bl sub_0812C618 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812C85A + movs r5, #2 + ldr r0, [r6] + movs r1, #0x34 + ldrsh r0, [r0, r1] + cmp r0, #3 + bne _0812C7D2 + movs r5, #3 +_0812C7D2: + movs r6, #0 + mov r7, sp +_0812C7D6: + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + movs r0, #1 + adds r1, r4, #0 + bl sub_0812BCA8 + ldrb r1, [r7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + beq _0812C788 + lsls r1, r6, #0x10 + movs r2, #0x80 + lsls r2, r2, #9 + adds r1, r1, r2 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsrs r6, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #1 + ble _0812C7D6 + movs r5, #1 + mov r7, sp + ldr r6, _0812C83C +_0812C808: + ldr r0, [r6] + ldrh r1, [r0, #0x34] + lsls r0, r5, #0x10 + asrs r4, r0, #0x10 + subs r1, r1, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + ldrb r1, [r7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0812C84E + ldr r1, [r6] + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _0812C840 + cmp r4, #2 + ble _0812C798 +_0812C834: + strh r0, [r1, #0x36] + strh r5, [r1, #0x30] + b _0812C85A + .align 2, 0 +_0812C83C: .4byte gUnknown_203A800 +_0812C840: + cmp r4, #2 + ble _0812C7A2 + movs r0, #2 + strh r0, [r1, #0x36] + subs r0, r4, #1 + strh r0, [r1, #0x30] + b _0812C85A +_0812C84E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C808 +_0812C85A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812C75C + + thumb_func_start sub_0812C864 +sub_0812C864: @ 0x0812C864 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r0, #0 + bne _0812C878 + cmp r1, #1 + beq _0812C880 +_0812C878: + cmp r0, #1 + bne _0812C884 + cmp r2, #0 + bne _0812C884 +_0812C880: + movs r0, #1 + b _0812C886 +_0812C884: + movs r0, #0 +_0812C886: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812C864 + + thumb_func_start sub_0812C88C +sub_0812C88C: @ 0x0812C88C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r0, #0 + bne _0812C8A6 + cmp r1, #1 + bne _0812C8A6 + cmp r2, #0 + beq _0812C8B2 +_0812C8A6: + cmp r0, #1 + bne _0812C8B6 + cmp r1, #0 + bne _0812C8B6 + cmp r2, #1 + bne _0812C8B6 +_0812C8B2: + movs r0, #1 + b _0812C8B8 +_0812C8B6: + movs r0, #0 +_0812C8B8: + pop {r1} + bx r1 + thumb_func_end sub_0812C88C + + thumb_func_start sub_0812C8BC +sub_0812C8BC: @ 0x0812C8BC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r0, #0 + bne _0812C8D6 + cmp r1, #1 + bne _0812C8D6 + cmp r2, #0 + beq _0812C902 +_0812C8D6: + cmp r0, #1 + bne _0812C8E2 + cmp r1, #0 + bne _0812C8E2 + cmp r2, #1 + beq _0812C902 +_0812C8E2: + cmp r0, #0 + bne _0812C8EE + cmp r1, #0 + bne _0812C8EE + cmp r2, #1 + beq _0812C902 +_0812C8EE: + cmp r0, #1 + bne _0812C8FA + cmp r1, #1 + bne _0812C8FA + cmp r2, #0 + beq _0812C902 +_0812C8FA: + cmp r0, r1 + bne _0812C906 + cmp r0, r2 + bne _0812C906 +_0812C902: + movs r0, #0 + b _0812C908 +_0812C906: + movs r0, #1 +_0812C908: + pop {r1} + bx r1 + thumb_func_end sub_0812C8BC + + thumb_func_start sub_0812C90C +sub_0812C90C: @ 0x0812C90C + push {lr} + ldr r1, _0812C928 + ldr r0, _0812C92C + ldr r0, [r0] + movs r2, #0x12 + ldrsh r0, [r0, r2] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_0812C90C + + thumb_func_start sub_0812C924 +sub_0812C924: @ 0x0812C924 + pop {r0} + bx r0 + .align 2, 0 +_0812C928: .4byte gUnknown_85844BC +_0812C92C: .4byte gUnknown_203A800 + thumb_func_end sub_0812C924 + + thumb_func_start sub_0812C930 +sub_0812C930: @ 0x0812C930 + push {r4, r5, r6, r7, lr} + movs r6, #0 + ldr r7, _0812C96C + ldr r0, [r7] + ldrh r1, [r0, #0x2e] + movs r4, #2 + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r7] + ldrh r0, [r0, #0x30] + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #1 + adds r1, r4, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r5, r1 + bne _0812C9A4 + movs r4, #2 + b _0812C97A + .align 2, 0 +_0812C96C: .4byte gUnknown_203A800 +_0812C970: + lsls r0, r6, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r6, r0, #0x10 +_0812C97A: + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _0812C970 + cmp r5, #0 + bne _0812C99A + cmp r0, #1 + beq _0812C970 +_0812C99A: + cmp r5, #1 + bne _0812CA06 + cmp r0, #0 + beq _0812C970 + b _0812CA06 +_0812C9A4: + adds r0, r5, #0 + bl sub_0812C864 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CA06 + ldr r0, [r7] + ldrb r1, [r0, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812C9E2 + movs r7, #2 +_0812C9BE: + lsls r0, r6, #0x10 + asrs r4, r0, #0x10 + subs r1, r7, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _0812CA06 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812C9BE +_0812C9E2: + movs r6, #0 + movs r7, #2 + b _0812C9EE +_0812C9E8: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0812C9EE: + lsls r0, r6, #0x10 + asrs r4, r0, #0x10 + subs r1, r7, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _0812C9E8 +_0812CA06: + ldr r0, _0812CA14 + ldr r0, [r0] + strh r6, [r0, #0x32] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CA14: .4byte gUnknown_203A800 + thumb_func_end sub_0812C930 + + thumb_func_start sub_0812CA18 +sub_0812CA18: @ 0x0812CA18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r4, _0812CA84 + ldr r2, [r4] + movs r5, #0x36 + ldrsh r1, [r2, r5] + cmp r1, #0 + beq _0812CAB4 + ldrh r3, [r2, #0x34] + movs r5, #0x34 + ldrsh r0, [r2, r5] + cmp r0, r1 + bne _0812CAB4 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812CAB4 + ldrh r1, [r2, #0x2e] + subs r1, r3, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [r4] + ldrh r1, [r0, #0x36] + ldrh r0, [r0, #0x30] + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0812C864 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CAB4 + movs r5, #0 + b _0812CA8E + .align 2, 0 +_0812CA84: .4byte gUnknown_203A800 +_0812CA88: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0812CA8E: + lsls r6, r5, #0x10 + asrs r5, r6, #0x10 + cmp r5, #4 + bgt _0812CAB4 + ldr r0, _0812CB48 + ldr r0, [r0] + ldrh r1, [r0, #0x36] + subs r1, r1, r5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r7, r4 + bne _0812CA88 + lsrs r6, r6, #0x10 + str r6, [sp] +_0812CAB4: + ldr r0, _0812CB48 + mov sb, r0 +_0812CAB8: + movs r5, #1 + movs r1, #0 + mov r8, r1 + ldr r2, [sp] + lsls r2, r2, #0x10 + mov sl, r2 +_0812CAC4: + mov r1, sb + ldr r0, [r1] + ldrh r1, [r0, #0x2e] + lsls r5, r5, #0x10 + asrs r4, r5, #0x10 + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r2, sb + ldr r0, [r2] + ldrh r1, [r0, #0x30] + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r1, sl + asrs r0, r1, #0x10 + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #2 + adds r1, r4, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0812C8BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812CB4C + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0812C88C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CB38 + mov r2, sb + ldr r0, [r2] + ldrb r1, [r0, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812CB4C +_0812CB38: + mov r5, r8 + lsls r0, r5, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + mov r8, r0 + b _0812CB5A + .align 2, 0 +_0812CB48: .4byte gUnknown_203A800 +_0812CB4C: + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r5, r2 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0812CAC4 +_0812CB5A: + mov r5, r8 + cmp r5, #0 + beq _0812CB70 + ldr r1, [sp] + lsls r0, r1, #0x10 + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + str r0, [sp] + b _0812CAB8 +_0812CB70: + ldr r0, _0812CB8C + ldr r0, [r0] + mov r5, sp + ldrh r5, [r5] + strh r5, [r0, #0x32] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CB8C: .4byte gUnknown_203A800 + thumb_func_end sub_0812CA18 + + thumb_func_start sub_0812CB90 +sub_0812CB90: @ 0x0812CB90 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0812CA18 + ldr r4, _0812CC34 + ldr r2, [r4] + movs r0, #0x36 + ldrsh r1, [r2, r0] + cmp r1, #0 + beq _0812CC44 + ldrh r3, [r2, #0x34] + movs r5, #0x34 + ldrsh r0, [r2, r5] + cmp r0, r1 + beq _0812CC44 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0812CC44 + ldrh r1, [r2, #0x2e] + subs r1, r3, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [r4] + ldrh r1, [r0, #0x36] + ldrh r0, [r0, #0x30] + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0812C864 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CC44 + movs r1, #1 + ldr r0, [r4] + movs r2, #0x34 + ldrsh r0, [r0, r2] + cmp r0, #1 + bne _0812CBFE + movs r1, #3 +_0812CBFE: + movs r3, #0 + lsls r1, r1, #0x10 + mov r8, r1 + adds r7, r4, #0 +_0812CC06: + ldr r0, [r7] + ldrh r2, [r0, #0x32] + lsls r0, r3, #0x10 + asrs r5, r0, #0x10 + adds r2, r5, r2 + mov r0, r8 + asrs r1, r0, #0x10 + subs r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r6, r4 + bne _0812CC38 + ldr r1, [r7] + ldrh r0, [r1, #0x32] + adds r0, r5, r0 + strh r0, [r1, #0x32] + b _0812CC44 + .align 2, 0 +_0812CC34: .4byte gUnknown_203A800 +_0812CC38: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0812CC06 +_0812CC44: + ldr r7, _0812CCC0 +_0812CC46: + ldr r0, [r7] + ldrh r0, [r0, #0x2e] + movs r1, #1 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [r7] + ldrh r0, [r0, #0x30] + movs r1, #2 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r7] + ldrh r0, [r0, #0x32] + movs r1, #3 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0812C8BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812CCC4 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0812C88C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CCB4 + ldr r0, [r7] + ldrb r1, [r0, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812CCC4 +_0812CCB4: + ldr r1, [r7] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + b _0812CC46 + .align 2, 0 +_0812CCC0: .4byte gUnknown_203A800 +_0812CCC4: + ldr r7, _0812CD40 +_0812CCC6: + ldr r0, [r7] + ldrh r0, [r0, #0x2e] + movs r1, #3 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [r7] + ldrh r0, [r0, #0x30] + movs r1, #2 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #1 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r7] + ldrh r0, [r0, #0x32] + movs r1, #1 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #2 + bl sub_0812BCA8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0812C8BC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812CD44 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0812C88C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812CD34 + ldr r0, [r7] + ldrb r1, [r0, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812CD44 +_0812CD34: + ldr r1, [r7] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + b _0812CCC6 + .align 2, 0 +_0812CD40: .4byte gUnknown_203A800 +_0812CD44: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812CB90 + + thumb_func_start sub_0812CD50 +sub_0812CD50: @ 0x0812CD50 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0812CD7C + adds r0, r5, #0 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812CD80 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0x26] + bl _call_via_r5 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812CD7C: .4byte sub_0812CD84 +_0812CD80: .4byte gUnknown_3005B60 + thumb_func_end sub_0812CD50 + + thumb_func_start sub_0812CD84 +sub_0812CD84: @ 0x0812CD84 + push {r4, lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _0812CDAC + ldr r2, _0812CDB0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r4, #8 + ldrsh r2, [r0, r4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {r4} + thumb_func_end sub_0812CD84 + + thumb_func_start sub_0812CDA8 +sub_0812CDA8: @ 0x0812CDA8 + pop {r0} + bx r0 + .align 2, 0 +_0812CDAC: .4byte gUnknown_85844C8 +_0812CDB0: .4byte gUnknown_3005B60 + thumb_func_end sub_0812CDA8 + + thumb_func_start sub_0812CDB4 +sub_0812CDB4: @ 0x0812CDB4 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _0812CDE4 + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x73 + str r1, [sp] + movs r1, #0x62 + movs r2, #0x63 + movs r3, #0x72 + bl sub_0812FA9C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812CDE4: .4byte gUnknown_85844D4 + thumb_func_end sub_0812CDB4 + + thumb_func_start sub_0812CDE8 +sub_0812CDE8: @ 0x0812CDE8 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _0812CE00 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0812CE00: + pop {r0} + bx r0 + thumb_func_end sub_0812CDE8 + + thumb_func_start sub_0812CE04 +sub_0812CE04: @ 0x0812CE04 + push {r4, lr} + sub sp, #4 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0812CE38 + movs r2, #0x26 + ldrsh r0, [r0, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x53 + str r1, [sp] + movs r1, #0x42 + movs r2, #0x43 + movs r3, #0x52 + bl sub_0812FA9C + adds r0, r4, #0 + bl sub_080A8964 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812CE38: .4byte gUnknown_85844D4 + thumb_func_end sub_0812CE04 + + thumb_func_start sub_0812CE3C +sub_0812CE3C: @ 0x0812CE3C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812CE5C + lsls r1, r0, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r1, _0812CE60 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + movs r2, #2 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_0812CE5C: .4byte gUnknown_858550C +_0812CE60: .4byte gUnknown_8585534 + thumb_func_end sub_0812CE3C + + thumb_func_start sub_0812CE64 +sub_0812CE64: @ 0x0812CE64 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812CE84 + lsls r1, r0, #2 + adds r1, r1, r2 + ldr r2, [r1] + ldr r1, _0812CE88 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + movs r2, #2 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_0812CE84: .4byte gUnknown_8585520 +_0812CE88: .4byte gUnknown_8585534 + thumb_func_end sub_0812CE64 + + thumb_func_start sub_0812CE8C +sub_0812CE8C: @ 0x0812CE8C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r4, #0 + ldr r0, _0812CEC0 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r4, r0 + bhs _0812CEB8 + ldr r7, _0812CEC4 + adds r6, r0, #0 + lsls r5, r1, #1 +_0812CEA4: + adds r0, r4, r5 + adds r0, r0, r7 + ldrb r0, [r0] + bl sub_0812CE3C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _0812CEA4 +_0812CEB8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CEC0: .4byte gUnknown_858553F +_0812CEC4: .4byte gUnknown_8585539 + thumb_func_end sub_0812CE8C + + thumb_func_start sub_0812CEC8 +sub_0812CEC8: @ 0x0812CEC8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r4, #0 + ldr r0, _0812CEFC + adds r0, r1, r0 + ldrb r0, [r0] + cmp r4, r0 + bhs _0812CEF4 + ldr r7, _0812CF00 + adds r6, r0, #0 + lsls r5, r1, #1 +_0812CEE0: + adds r0, r4, r5 + adds r0, r0, r7 + ldrb r0, [r0] + bl sub_0812CE64 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _0812CEE0 +_0812CEF4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812CEFC: .4byte gUnknown_858553F +_0812CF00: .4byte gUnknown_8585539 + thumb_func_end sub_0812CEC8 + + thumb_func_start sub_0812CF04 +sub_0812CF04: @ 0x0812CF04 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _0812CF38 +_0812CF0A: + ldr r0, _0812CF3C + bl sub_08006BCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + strh r4, [r1, #0x2e] + ldr r1, _0812CF40 + ldr r1, [r1] + adds r1, #0x44 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _0812CF0A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812CF38: .4byte gUnknown_20205AC +_0812CF3C: .4byte sub_0812D034 +_0812CF40: .4byte gUnknown_203A800 + thumb_func_end sub_0812CF04 + + thumb_func_start sub_0812CF44 +sub_0812CF44: @ 0x0812CF44 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0812CF74 + ldr r1, [r1] + adds r1, #0x44 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812CF78 + adds r0, r0, r1 + movs r2, #0 + movs r1, #1 + strh r1, [r0, #0x30] + movs r1, #4 + strh r1, [r0, #0x32] + strh r2, [r0, #0x34] + strh r2, [r0, #0x36] + movs r1, #2 + strh r1, [r0, #0x38] + strh r2, [r0, #0x3c] + bx lr + .align 2, 0 +_0812CF74: .4byte gUnknown_203A800 +_0812CF78: .4byte gUnknown_20205AC + thumb_func_end sub_0812CF44 + + thumb_func_start sub_0812CF7C +sub_0812CF7C: @ 0x0812CF7C + push {r4, r5, lr} + movs r2, #0 + ldr r0, _0812CFAC + ldr r0, [r0] + adds r3, r0, #0 + adds r3, #0x44 + ldr r4, _0812CFB0 +_0812CF8A: + adds r0, r3, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + movs r5, #0x30 + ldrsh r0, [r1, r5] + cmp r0, #0 + beq _0812CFB4 + movs r5, #0x32 + ldrsh r0, [r1, r5] + cmp r0, #0 + beq _0812CFB4 + movs r0, #0 + b _0812CFC0 + .align 2, 0 +_0812CFAC: .4byte gUnknown_203A800 +_0812CFB0: .4byte gUnknown_20205AC +_0812CFB4: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _0812CF8A + movs r0, #1 +_0812CFC0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812CF7C + + thumb_func_start sub_0812CFC8 +sub_0812CFC8: @ 0x0812CFC8 + push {r4, lr} + movs r4, #0 +_0812CFCC: + ldr r0, _0812CFE4 + ldr r0, [r0] + adds r0, #0x44 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0812CFFC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812CFE8 + movs r0, #0 + b _0812CFF4 + .align 2, 0 +_0812CFE4: .4byte gUnknown_203A800 +_0812CFE8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _0812CFCC + movs r0, #1 +_0812CFF4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812CFC8 + + thumb_func_start sub_0812CFFC +sub_0812CFFC: @ 0x0812CFFC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0812D018 + adds r1, r1, r0 + movs r2, #0x30 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0812D01C + movs r0, #1 + b _0812D02E + .align 2, 0 +_0812D018: .4byte gUnknown_20205AC +_0812D01C: + ldrh r2, [r1, #0x3c] + movs r3, #0x3c + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _0812D02A + movs r0, #0 + strh r0, [r1, #0x30] +_0812D02A: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 +_0812D02E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812CFFC + + thumb_func_start sub_0812D034 +sub_0812D034: @ 0x0812D034 + push {r4, r5, r6, r7, lr} + adds r2, r0, #0 + movs r1, #0x30 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0812D0B6 + ldrh r0, [r2, #0x34] + subs r0, #1 + strh r0, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0812D09E + movs r0, #0 + strh r0, [r2, #0x3c] + movs r6, #1 + strh r6, [r2, #0x34] + ldrh r1, [r2, #0x38] + ldrh r3, [r2, #0x36] + adds r0, r1, r3 + strh r0, [r2, #0x36] + movs r4, #4 + ldrh r5, [r2, #0x32] + movs r7, #0x32 + ldrsh r3, [r2, r7] + cmp r3, #0 + beq _0812D070 + movs r4, #8 +_0812D070: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bgt _0812D088 + strh r6, [r2, #0x3c] + rsbs r0, r1, #0 + strh r0, [r2, #0x38] + cmp r3, #0 + beq _0812D09E + subs r0, r5, #1 + strh r0, [r2, #0x32] + b _0812D090 +_0812D088: + cmp r0, r4 + blt _0812D090 + rsbs r0, r1, #0 + strh r0, [r2, #0x38] +_0812D090: + movs r1, #0x32 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0812D09E + ldrh r0, [r2, #0x34] + lsls r0, r0, #1 + strh r0, [r2, #0x34] +_0812D09E: + ldr r1, _0812D0BC + movs r3, #0x2e + ldrsh r0, [r2, r3] + adds r0, r0, r1 + ldrb r0, [r0] + ldrh r3, [r2, #0x36] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r1, r3, #0 + adds r2, r3, #0 + bl sub_080B5880 +_0812D0B6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D0BC: .4byte gUnknown_8585534 + thumb_func_end sub_0812D034 + + thumb_func_start sub_0812D0C0 +sub_0812D0C0: @ 0x0812D0C0 + push {r4, lr} + ldr r4, _0812D0E8 + adds r0, r4, #0 + movs r1, #6 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812D0EC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #1 + strh r2, [r1, #0xe] + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D0E8: .4byte sub_0812D138 +_0812D0EC: .4byte gUnknown_3005B60 + thumb_func_end sub_0812D0C0 + + thumb_func_start sub_0812D0F0 +sub_0812D0F0: @ 0x0812D0F0 + push {lr} + ldr r0, _0812D114 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0812D118 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0812D11C + movs r0, #0 + b _0812D130 + .align 2, 0 +_0812D114: .4byte sub_0812D138 +_0812D118: .4byte gUnknown_3005B60 +_0812D11C: + adds r0, r2, #0 + bl sub_080A8964 + ldr r0, _0812D134 + ldr r0, [r0] + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #1 +_0812D130: + pop {r1} + bx r1 + .align 2, 0 +_0812D134: .4byte gUnknown_85855B0 + thumb_func_end sub_0812D0F0 + + thumb_func_start sub_0812D138 +sub_0812D138: @ 0x0812D138 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0812D190 + adds r2, r1, r0 + ldrh r0, [r2, #0xa] + subs r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0812D176 + movs r0, #4 + strh r0, [r2, #0xa] + ldrh r1, [r2, #0xe] + ldrh r3, [r2, #0xc] + adds r0, r1, r3 + strh r0, [r2, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _0812D172 + cmp r0, #2 + bne _0812D176 +_0812D172: + rsbs r0, r1, #0 + strh r0, [r2, #0xe] +_0812D176: + ldr r0, _0812D194 + movs r3, #0xc + ldrsh r1, [r2, r3] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + movs r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_0812D190: .4byte gUnknown_3005B60 +_0812D194: .4byte gUnknown_85855A4 + thumb_func_end sub_0812D138 + + thumb_func_start sub_0812D198 +sub_0812D198: @ 0x0812D198 + push {lr} + ldr r0, _0812D1B0 + movs r1, #8 + bl sub_080A8878 + ldr r1, _0812D1B4 + ldr r1, [r1] + adds r1, #0x3e + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0812D1B0: .4byte sub_0812D240 +_0812D1B4: .4byte gUnknown_203A800 + thumb_func_end sub_0812D198 + + thumb_func_start sub_0812D1B8 +sub_0812D1B8: @ 0x0812D1B8 + push {r4, lr} + ldr r0, _0812D1E4 + ldr r0, [r0] + adds r0, #0x3e + ldrb r0, [r0] + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0812D1E8 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0812D3A4 + movs r1, #1 + strh r1, [r4, #8] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + strh r1, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D1E4: .4byte gUnknown_203A800 +_0812D1E8: .4byte gUnknown_3005B60 + thumb_func_end sub_0812D1B8 + + thumb_func_start sub_0812D1EC +sub_0812D1EC: @ 0x0812D1EC + push {r4, lr} + ldr r0, _0812D214 + ldr r0, [r0] + adds r0, #0x3e + ldrb r0, [r0] + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0812D218 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0812D3A4 + movs r0, #3 + strh r0, [r4, #8] + movs r0, #1 + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D214: .4byte gUnknown_203A800 +_0812D218: .4byte gUnknown_3005B60 + thumb_func_end sub_0812D1EC + + thumb_func_start sub_0812D21C +sub_0812D21C: @ 0x0812D21C + ldr r2, _0812D238 + ldr r0, _0812D23C + ldr r0, [r0] + adds r0, #0x3e + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_0812D238: .4byte gUnknown_3005B60 +_0812D23C: .4byte gUnknown_203A800 + thumb_func_end sub_0812D21C + + thumb_func_start sub_0812D240 +sub_0812D240: @ 0x0812D240 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _0812D268 + ldr r2, _0812D26C + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0812D268: .4byte gUnknown_85844DC +_0812D26C: .4byte gUnknown_3005B60 + thumb_func_end sub_0812D240 + + thumb_func_start sub_0812D270 +sub_0812D270: @ 0x0812D270 + bx lr + .align 2, 0 + thumb_func_end sub_0812D270 + + thumb_func_start sub_0812D274 +sub_0812D274: @ 0x0812D274 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0xa] + lsls r0, r0, #0x13 + movs r1, #0xa0 + lsls r1, r1, #0xd + adds r0, r0, r1 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl sub_0812EF10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xc] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812D274 + + thumb_func_start sub_0812D29C +sub_0812D29C: @ 0x0812D29C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0812D2D0 + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x3c + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0812D30C + ldrh r1, [r4, #0xa] + adds r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #0 + movs r2, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #1 + bne _0812D2D4 + movs r3, #1 + movs r2, #1 + b _0812D2DC + .align 2, 0 +_0812D2D0: .4byte gUnknown_20205AC +_0812D2D4: + cmp r1, #0x10 + bne _0812D2DC + movs r3, #2 + movs r2, #2 +_0812D2DC: + ldr r0, _0812D314 + ldr r0, [r0] + lsls r1, r2, #1 + adds r1, r1, r0 + ldr r2, _0812D318 + lsls r0, r3, #2 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + lsls r3, r5, #0x10 + movs r0, #0x80 + lsls r0, r0, #0xf + adds r3, r3, r0 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + ldrb r0, [r4, #0xc] + bl sub_0812EF7C + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x26] +_0812D30C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812D314: .4byte gUnknown_203A798 +_0812D318: .4byte gUnknown_85844EC + thumb_func_end sub_0812D29C + + thumb_func_start sub_0812D31C +sub_0812D31C: @ 0x0812D31C + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0xa] + adds r0, r1, #2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #0 + movs r2, #3 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #1 + bne _0812D33A + movs r3, #1 + movs r2, #1 + b _0812D342 +_0812D33A: + cmp r1, #0x10 + bne _0812D342 + movs r3, #2 + movs r2, #2 +_0812D342: + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0812D376 + ldr r0, _0812D39C + ldr r0, [r0] + lsls r1, r2, #1 + adds r1, r1, r0 + ldr r0, _0812D3A0 + lsls r2, r3, #2 + adds r0, #2 + adds r2, r2, r0 + ldrh r0, [r2] + strh r0, [r1] + lsls r3, r5, #0x10 + movs r0, #0x80 + lsls r0, r0, #0xf + adds r3, r3, r0 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] +_0812D376: + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0812D388 + movs r0, #0 + strh r0, [r4, #0xc] +_0812D388: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0812D394 + strh r0, [r4, #8] + strh r0, [r4, #0x26] +_0812D394: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812D39C: .4byte gUnknown_203A798 +_0812D3A0: .4byte gUnknown_85844EC + thumb_func_end sub_0812D31C + + thumb_func_start sub_0812D3A4 +sub_0812D3A4: @ 0x0812D3A4 + push {lr} + movs r1, #2 + adds r2, r0, #0 + adds r2, #8 + movs r3, #0 +_0812D3AE: + lsls r0, r1, #1 + adds r0, r2, r0 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _0812D3AE + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812D3A4 + + thumb_func_start sub_0812D3C4 +sub_0812D3C4: @ 0x0812D3C4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #3 + movs r5, #0 + cmp r5, r6 + bge _0812D42E + ldr r7, _0812D3E8 +_0812D3D4: + movs r3, #0 + movs r1, #0 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _0812D3EC + movs r3, #1 + movs r1, #1 + b _0812D3F4 + .align 2, 0 +_0812D3E8: .4byte gUnknown_85844EC +_0812D3EC: + cmp r0, #0xf + bne _0812D3F4 + movs r3, #2 + movs r1, #2 +_0812D3F4: + ldr r0, _0812D448 + ldr r0, [r0] + lsls r1, r1, #1 + adds r1, r1, r0 + lsls r0, r3, #2 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + lsls r3, r4, #0x10 + asrs r4, r3, #0x10 + movs r0, #0x80 + lsls r0, r0, #0xf + adds r3, r3, r0 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + lsls r0, r5, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + blt _0812D3D4 +_0812D42E: + lsls r2, r5, #0x10 + asrs r0, r2, #0x10 + cmp r0, #0xf + bgt _0812D494 + ldr r7, _0812D44C +_0812D438: + movs r3, #0 + movs r1, #3 + asrs r0, r2, #0x10 + cmp r0, #0 + bne _0812D450 + movs r3, #1 + movs r1, #1 + b _0812D458 + .align 2, 0 +_0812D448: .4byte gUnknown_203A798 +_0812D44C: .4byte gUnknown_85844EE +_0812D450: + cmp r0, #0xf + bne _0812D458 + movs r3, #2 + movs r1, #2 +_0812D458: + ldr r0, _0812D4B0 + ldr r0, [r0] + lsls r1, r1, #1 + adds r1, r1, r0 + lsls r0, r3, #2 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + lsls r3, r4, #0x10 + asrs r4, r3, #0x10 + movs r0, #0x80 + lsls r0, r0, #0xf + adds r3, r3, r0 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + lsls r0, r5, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r5, r0, #0x10 + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r5, #0x10 + asrs r0, r2, #0x10 + cmp r0, #0xf + ble _0812D438 +_0812D494: + ldr r2, _0812D4B4 + ldr r0, _0812D4B8 + ldr r0, [r0] + adds r0, #0x3e + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r6, [r0, #0xa] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D4B0: .4byte gUnknown_203A798 +_0812D4B4: .4byte gUnknown_3005B60 +_0812D4B8: .4byte gUnknown_203A800 + thumb_func_end sub_0812D3C4 + + thumb_func_start sub_0812D4BC +sub_0812D4BC: @ 0x0812D4BC + push {r4, lr} + ldr r4, _0812D4D8 + adds r0, r4, #0 + movs r1, #7 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D4D8: .4byte sub_0812D4FC + thumb_func_end sub_0812D4BC + + thumb_func_start sub_0812D4DC +sub_0812D4DC: @ 0x0812D4DC + push {lr} + ldr r0, _0812D4F0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0812D4F4 + movs r0, #0 + b _0812D4F6 + .align 2, 0 +_0812D4F0: .4byte sub_0812D4FC +_0812D4F4: + movs r0, #1 +_0812D4F6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812D4DC + + thumb_func_start sub_0812D4FC +sub_0812D4FC: @ 0x0812D4FC + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _0812D524 + ldr r2, _0812D528 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0812D524: .4byte gUnknown_85844F8 +_0812D528: .4byte gUnknown_3005B60 + thumb_func_end sub_0812D4FC + + thumb_func_start sub_0812D52C +sub_0812D52C: @ 0x0812D52C + push {lr} + ldr r3, _0812D598 + ldr r1, [r3] + movs r2, #0 + strb r2, [r1, #0xa] + ldr r1, [r3] + strh r2, [r1, #0x14] + strh r2, [r1, #0x16] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + strh r2, [r0, #0xa] + movs r1, #0x1e + strh r1, [r0, #0xc] + movs r1, #0xa0 + lsls r1, r1, #3 + strh r1, [r0, #0x10] + ldr r0, _0812D59C + strh r2, [r0] + ldr r0, _0812D5A0 + strh r2, [r0] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_0812DC18 + bl sub_0812E484 + bl sub_0812E34C + bl sub_0812E660 + bl sub_0812E71C + bl sub_0812E7DC + bl sub_0812B710 + bl sub_080A27F8 + movs r0, #0xc4 + lsls r0, r0, #1 + bl sub_080A27D8 + pop {r0} + bx r0 + .align 2, 0 +_0812D598: .4byte gUnknown_203A800 +_0812D59C: .4byte gUnknown_2021B38 +_0812D5A0: .4byte gUnknown_2021B3A + thumb_func_end sub_0812D52C + + thumb_func_start sub_0812D5A4 +sub_0812D5A4: @ 0x0812D5A4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0812D614 + ldrh r0, [r1] + subs r0, #8 + strh r0, [r1] + ldrh r1, [r4, #0xa] + adds r1, #8 + strh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + adds r0, #0xf0 + movs r2, #0xff + ands r0, r2 + lsrs r5, r0, #3 + ldr r0, _0812D618 + ands r1, r0 + movs r0, #0x14 + bl sub_08001144 + adds r2, r5, #0 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r2, r0 + beq _0812D5F2 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0x12 + bgt _0812D5F2 + strh r5, [r4, #0xc] + ldrh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + strh r0, [r4, #0xe] + movs r0, #0xe + ldrsh r1, [r4, r0] + adds r0, r2, #0 + bl sub_0812DC18 +_0812D5F2: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xc7 + ble _0812D604 + ldrh r0, [r4, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #8] + strh r1, [r4, #0xe] +_0812D604: + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812D614: .4byte gUnknown_2021B38 +_0812D618: .4byte 0x000001FF + thumb_func_end sub_0812D5A4 + + thumb_func_start sub_0812D61C +sub_0812D61C: @ 0x0812D61C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3b + ble _0812D646 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + bl sub_0812E944 + bl sub_0812EAC0 +_0812D646: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812D61C + + thumb_func_start sub_0812D64C +sub_0812D64C: @ 0x0812D64C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r7, r0, #0 + ldr r1, _0812D6E8 + mov r0, sp + movs r2, #4 + bl memcpy + add r0, sp, #4 + mov r8, r0 + ldr r1, _0812D6EC + movs r2, #8 + bl memcpy + add r6, sp, #0xc + ldr r1, _0812D6F0 + adds r0, r6, #0 + movs r2, #8 + bl memcpy + ldrh r0, [r7, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldrh r0, [r7, #0x10] + subs r0, #4 + strh r0, [r7, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + movs r5, #4 + subs r5, r5, r0 + lsls r4, r5, #1 + add r8, r4 + mov r1, r8 + movs r2, #0 + ldrsh r0, [r1, r2] + bl sub_0812EA54 + adds r6, r6, r4 + movs r1, #0 + ldrsh r0, [r6, r1] + bl sub_0812EBBC + ldr r0, _0812D6F4 + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812D6F8 + adds r0, r0, r1 + mov r2, sp + adds r1, r2, r5 + ldrb r1, [r1] + bl sub_08007ED8 + movs r1, #0x10 + ldrsh r0, [r7, r1] + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bgt _0812D6DC + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] + strh r1, [r7, #0x10] + movs r0, #0 + strh r0, [r7, #0x12] +_0812D6DC: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812D6E8: .4byte gUnknown_8584544 +_0812D6EC: .4byte gUnknown_8584548 +_0812D6F0: .4byte gUnknown_8584550 +_0812D6F4: .4byte gUnknown_203A800 +_0812D6F8: .4byte gUnknown_20205AC + thumb_func_end sub_0812D64C + + thumb_func_start sub_0812D6FC +sub_0812D6FC: @ 0x0812D6FC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x4f + ble _0812D740 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0x12] + movs r0, #2 + bl sub_0812EBBC + ldr r0, _0812D748 + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812D74C + adds r0, r0, r1 + movs r1, #3 + bl sub_08007ED8 +_0812D740: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812D748: .4byte gUnknown_203A800 +_0812D74C: .4byte gUnknown_20205AC + thumb_func_end sub_0812D6FC + + thumb_func_start sub_0812D750 +sub_0812D750: @ 0x0812D750 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldrb r0, [r4, #0x10] + adds r0, #0x80 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x4f + ble _0812D77C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0x12] +_0812D77C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812D750 + + thumb_func_start sub_0812D784 +sub_0812D784: @ 0x0812D784 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldrb r0, [r4, #0x10] + adds r0, #0x40 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + ble _0812D7EC + movs r0, #0 + strh r0, [r4, #0x12] + ldr r0, _0812D7C4 + ldr r1, [r0] + ldrb r0, [r1, #5] + cmp r0, #0 + beq _0812D7C8 + ldrb r1, [r1, #0xa] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bgt _0812D7E6 + ldrh r0, [r4, #8] + adds r0, #1 + b _0812D7E4 + .align 2, 0 +_0812D7C4: .4byte gUnknown_203A800 +_0812D7C8: + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #3 + ble _0812D7D6 + ldrh r0, [r4, #8] + adds r0, #1 + b _0812D7E4 +_0812D7D6: + ldrh r0, [r4, #0x14] + bl sub_0812B770 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812D7E6 + movs r0, #0xe +_0812D7E4: + strh r0, [r4, #8] +_0812D7E6: + ldrh r0, [r4, #0x14] + adds r0, #1 + strh r0, [r4, #0x14] +_0812D7EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812D784 + + thumb_func_start sub_0812D7F4 +sub_0812D7F4: @ 0x0812D7F4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _0812D81C + ldr r0, [r6] + movs r1, #0x14 + ldrsh r0, [r0, r1] + movs r1, #0x14 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r0, #0 + beq _0812D820 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BE1C + b _0812D848 + .align 2, 0 +_0812D81C: .4byte gUnknown_203A800 +_0812D820: + movs r0, #1 + bl sub_0812BCF8 + ldr r1, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1, #5] + cmp r0, r1 + beq _0812D852 + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_0812BDE4 + ldr r0, [r6] + movs r1, #0x14 + ldrsh r0, [r0, r1] + movs r1, #0x14 + bl __modsi3 +_0812D848: + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r0, [r4, #0x10] + adds r0, #0x40 + strh r0, [r4, #0x10] +_0812D852: + lsls r0, r5, #0x10 + asrs r5, r0, #0x10 + cmp r5, #0 + bne _0812D876 + movs r0, #1 + bl sub_0812BCF8 + ldr r1, _0812D87C + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1, #5] + cmp r0, r1 + bne _0812D876 + strh r5, [r4, #0x10] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0812D876: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812D87C: .4byte gUnknown_203A800 + thumb_func_end sub_0812D7F4 + + thumb_func_start sub_0812D880 +sub_0812D880: @ 0x0812D880 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + adds r0, #1 + movs r6, #0 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3b + ble _0812D924 + bl sub_080A27F8 + bl sub_0812EA8C + bl sub_0812EBDC + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r5, _0812D8D4 + ldr r1, [r5] + ldrb r0, [r1, #5] + cmp r0, #0 + bne _0812D8E0 + movs r0, #0xa0 + strh r0, [r4, #0x10] + adds r0, r1, #0 + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812D8D8 + adds r0, r0, r1 + movs r1, #5 + bl sub_08007ED8 + ldr r0, _0812D8DC + bl sub_080A29AC + b _0812D924 + .align 2, 0 +_0812D8D4: .4byte gUnknown_203A800 +_0812D8D8: .4byte gUnknown_20205AC +_0812D8DC: .4byte 0x00000187 +_0812D8E0: + movs r0, #0xc0 + strh r0, [r4, #0x10] + adds r0, r1, #0 + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0812D92C + adds r0, r0, r4 + movs r1, #4 + bl sub_08007ED8 + ldr r0, [r5] + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2b + strb r6, [r0] + ldr r0, [r5] + ldrb r0, [r0, #2] + cmp r0, #0 + beq _0812D91C + bl sub_0812D1EC + ldr r0, [r5] + strb r6, [r0, #2] +_0812D91C: + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_080A29AC +_0812D924: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812D92C: .4byte gUnknown_20205AC + thumb_func_end sub_0812D880 + + thumb_func_start sub_0812D930 +sub_0812D930: @ 0x0812D930 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x10] + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0812D948 + subs r0, r1, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0812D958 +_0812D948: + bl sub_0812D21C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0812D958 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0812D958: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812D930 + + thumb_func_start sub_0812D960 +sub_0812D960: @ 0x0812D960 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0812D9A0 + ldrh r0, [r1] + subs r0, #8 + strh r0, [r1] + ldrh r1, [r4, #0xa] + adds r1, #8 + strh r1, [r4, #0xa] + ldrh r0, [r4, #0xe] + adds r0, #8 + strh r0, [r4, #0xe] + movs r2, #0xa + ldrsh r0, [r4, r2] + subs r0, #8 + movs r2, #0xff + ands r0, r2 + lsrs r5, r0, #3 + ldr r0, _0812D9A4 + ands r1, r0 + movs r0, #0x14 + bl sub_08001144 + ldrh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + cmp r0, #0x19 + bgt _0812D9A8 + adds r0, r5, #0 + bl sub_0812DC60 + b _0812D9AE + .align 2, 0 +_0812D9A0: .4byte gUnknown_2021B38 +_0812D9A4: .4byte 0x000001FF +_0812D9A8: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0812D9AE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0812D960 + + thumb_func_start sub_0812D9B4 +sub_0812D9B4: @ 0x0812D9B4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0812DA08 + ldr r0, [r4] + movs r6, #0 + strb r6, [r0, #0xb] + ldr r1, [r4] + ldrb r0, [r1, #5] + strb r0, [r1, #0xa] + ldr r0, _0812DA0C + strh r6, [r0] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldr r1, [r4] + movs r0, #8 + strh r0, [r1, #0x1a] + bl sub_0812E3F8 + bl sub_0812E83C + bl sub_0812E8D4 + ldr r0, [r4] + adds r0, #0x60 + ldrh r0, [r0] + bl sub_080A27D8 + ldr r0, [r4] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _0812DA14 + ldr r0, _0812DA10 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _0812DA2A + .align 2, 0 +_0812DA08: .4byte gUnknown_203A800 +_0812DA0C: .4byte gUnknown_2021B38 +_0812DA10: .4byte sub_0812D4FC +_0812DA14: + movs r0, #4 + bl sub_0812DEF4 + bl sub_0812B79C + strh r0, [r5, #0xa] + strh r6, [r5, #0xc] + strh r6, [r5, #0xe] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_0812DA2A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0812D9B4 + + thumb_func_start sub_0812DA30 +sub_0812DA30: @ 0x0812DA30 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0812DA4C + ldr r5, [r0] + movs r0, #0x1a + ldrsh r1, [r5, r0] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0812DA50 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0812DA76 + .align 2, 0 +_0812DA4C: .4byte gUnknown_203A800 +_0812DA50: + movs r1, #0x1c + ldrsh r0, [r5, r1] + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0812DA76 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0812DA76 + ldrh r0, [r5, #0x1a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r5, #0x1a] +_0812DA76: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0812DA30 + + thumb_func_start sub_0812DA7C +sub_0812DA7C: @ 0x0812DA7C + push {lr} + bl sub_0812E064 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812DA96 + ldr r0, _0812DA9C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0812DA96: + pop {r0} + bx r0 + .align 2, 0 +_0812DA9C: .4byte sub_0812D4FC + thumb_func_end sub_0812DA7C + + thumb_func_start sub_0812DAA0 +sub_0812DAA0: @ 0x0812DAA0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0812E83C + bl sub_0812EA8C + bl sub_0812EBDC + bl sub_0812EC30 + ldr r5, _0812DB08 + ldr r3, _0812DB0C + ldr r0, [r3] + adds r0, #0x4e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #5 + bl sub_08007ED8 + ldrh r0, [r4, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #8] + movs r0, #4 + strh r0, [r4, #0x10] + strh r1, [r4, #0x12] + bl sub_080A27F8 + ldr r0, _0812DB10 + bl sub_080A29AC + movs r0, #0xb2 + bl sub_080A306C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812DB08: .4byte gUnknown_20205AC +_0812DB0C: .4byte gUnknown_203A800 +_0812DB10: .4byte 0x00000187 + thumb_func_end sub_0812DAA0 + + thumb_func_start sub_0812DB14 +sub_0812DB14: @ 0x0812DB14 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0812DB90 + ldrh r0, [r4, #0x10] + strh r0, [r1] + ldrh r1, [r4, #0x10] + movs r0, #0x16 + bl sub_08001144 + ldrh r1, [r4, #0x12] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0812DB36 + ldrh r0, [r4, #0x10] + rsbs r0, r0, #0 + strh r0, [r4, #0x10] +_0812DB36: + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0812DB4C + ldrh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r4, #0x10] +_0812DB4C: + movs r0, #0x10 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0812DB8A + bl sub_0812EC80 + bl sub_0812ECA4 + bl sub_0812E5B8 + bl sub_0812EDD0 + ldr r2, _0812DB94 + ldr r0, _0812DB98 + ldr r0, [r0] + adds r0, #0x4e + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + strh r5, [r4, #0x12] +_0812DB8A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812DB90: .4byte gUnknown_2021B3A +_0812DB94: .4byte gUnknown_20205AC +_0812DB98: .4byte gUnknown_203A800 + thumb_func_end sub_0812DB14 + + thumb_func_start sub_0812DB9C +sub_0812DB9C: @ 0x0812DB9C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0812DBC8 + movs r0, #0 + strh r0, [r1] + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + bl sub_0812EEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0812DBC2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + bl sub_0812EEDC +_0812DBC2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DBC8: .4byte gUnknown_2021B3A + thumb_func_end sub_0812DB9C + + thumb_func_start sub_0812DBCC +sub_0812DBCC: @ 0x0812DBCC + push {lr} + ldr r1, _0812DC0C + movs r0, #0 + strh r0, [r1] + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldr r0, _0812DC10 + ldr r0, [r0] + adds r0, #0x60 + ldrh r0, [r0] + bl sub_080A27D8 + bl sub_0812E3F8 + bl sub_0812E908 + bl sub_0812E8D4 + bl sub_0812ED9C + ldr r0, _0812DC14 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 +_0812DC0C: .4byte gUnknown_2021B38 +_0812DC10: .4byte gUnknown_203A800 +_0812DC14: .4byte sub_0812D4FC + thumb_func_end sub_0812DBCC + + thumb_func_start sub_0812DC18 +sub_0812DC18: @ 0x0812DC18 + push {r4, r5, r6, lr} + movs r2, #4 + lsls r1, r1, #0x10 + asrs r6, r1, #0x10 + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 +_0812DC24: + lsls r4, r2, #0x10 + asrs r4, r4, #0x10 + subs r0, r4, #4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r6, r1 + lsls r1, r1, #1 + ldr r0, _0812DC5C + adds r1, r1, r0 + lsls r3, r4, #5 + adds r3, r5, r3 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #1 + movs r2, #2 + bl sub_08001A14 + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r2, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #0xe + ble _0812DC24 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812DC5C: .4byte gUnknown_8587F9C + thumb_func_end sub_0812DC18 + + thumb_func_start sub_0812DC60 +sub_0812DC60: @ 0x0812DC60 + push {r4, r5, lr} + movs r4, #4 + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 +_0812DC68: + lsls r3, r4, #5 + adds r3, r5, r3 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #1 + ldr r1, _0812DC8C + movs r2, #2 + bl sub_08001A14 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xe + bls _0812DC68 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812DC8C: .4byte gUnknown_8588604 + thumb_func_end sub_0812DC60 + + thumb_func_start sub_0812DC90 +sub_0812DC90: @ 0x0812DC90 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0812DCBC + adds r0, r5, #0 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812DCC0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + bl _call_via_r5 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812DCBC: .4byte sub_0812DCE4 +_0812DCC0: .4byte gUnknown_3005B60 + thumb_func_end sub_0812DC90 + + thumb_func_start sub_0812DCC4 +sub_0812DCC4: @ 0x0812DCC4 + push {lr} + ldr r0, _0812DCD8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0812DCDC + movs r0, #0 + b _0812DCDE + .align 2, 0 +_0812DCD8: .4byte sub_0812DCE4 +_0812DCDC: + movs r0, #1 +_0812DCDE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812DCC4 + + thumb_func_start sub_0812DCE4 +sub_0812DCE4: @ 0x0812DCE4 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _0812DD0C + ldr r2, _0812DD10 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0812DD0C: .4byte gUnknown_8584558 +_0812DD10: .4byte gUnknown_3005B60 + thumb_func_end sub_0812DCE4 + + thumb_func_start sub_0812DD14 +sub_0812DD14: @ 0x0812DD14 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812DD14 + + thumb_func_start sub_0812DD38 +sub_0812DD38: @ 0x0812DD38 + push {lr} + adds r2, r0, #0 + ldr r0, _0812DD54 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0812DD4E + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_0812DD4E: + pop {r0} + bx r0 + .align 2, 0 +_0812DD54: .4byte gUnknown_2037C74 + thumb_func_end sub_0812DD38 + + thumb_func_start sub_0812DD58 +sub_0812DD58: @ 0x0812DD58 + push {r4, lr} + adds r4, r0, #0 + bl sub_0812DFEC + bl sub_0812FB18 + ldr r0, _0812DD84 + bl sub_08003250 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DD84: .4byte gUnknown_85843C8 + thumb_func_end sub_0812DD58 + + thumb_func_start sub_0812DD88 +sub_0812DD88: @ 0x0812DD88 + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + ldr r0, _0812DDCC + str r0, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r0, _0812DDD0 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + movs r0, #1 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812DDCC: .4byte gUnknown_85843D0 +_0812DDD0: .4byte gUnknown_8588651 + thumb_func_end sub_0812DD88 + + thumb_func_start sub_0812DDD4 +sub_0812DDD4: @ 0x0812DDD4 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _0812DE20 + ldrh r1, [r0, #0x2e] + movs r0, #6 + ands r0, r1 + cmp r0, #0 + beq _0812DE18 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + bl sub_08003774 + movs r0, #1 + movs r1, #1 + bl sub_08003528 + movs r0, #1 + bl sub_08003444 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0812DE18: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DE20: .4byte gUnknown_3002360 + thumb_func_end sub_0812DDD4 + + thumb_func_start sub_0812DE24 +sub_0812DE24: @ 0x0812DE24 + push {r4, lr} + adds r4, r0, #0 + bl sub_0812F978 + movs r0, #3 + bl sub_08001B48 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812DE24 + + thumb_func_start sub_0812DE40 +sub_0812DE40: @ 0x0812DE40 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_0812DEF4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812DE40 + + thumb_func_start sub_0812DE58 +sub_0812DE58: @ 0x0812DE58 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _0812DE88 + ldr r0, [r0] + ldrb r0, [r0, #2] + bl sub_0812D3C4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812DE88: .4byte gUnknown_203A800 + thumb_func_end sub_0812DE58 + + thumb_func_start sub_0812DE8C +sub_0812DE8C: @ 0x0812DE8C + push {lr} + ldr r0, _0812DEA0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 +_0812DEA0: .4byte sub_0812DCE4 + thumb_func_end sub_0812DE8C + + thumb_func_start sub_0812DEA4 +sub_0812DEA4: @ 0x0812DEA4 + push {lr} + ldr r0, _0812DEE4 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0812DEE8 + ldr r0, [r0] + adds r0, #0x3d + strb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812DEEC + adds r0, r0, r1 + ldr r1, _0812DEF0 + strh r1, [r0, #0xa] + movs r1, #4 + adds r2, r0, #0 + adds r2, #8 + movs r3, #0x40 +_0812DED0: + lsls r0, r1, #1 + adds r0, r2, r0 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _0812DED0 + pop {r0} + bx r0 + .align 2, 0 +_0812DEE4: .4byte sub_0812E0C0 +_0812DEE8: .4byte gUnknown_203A800 +_0812DEEC: .4byte gUnknown_3005B60 +_0812DEF0: .4byte 0x0000FFFF + thumb_func_end sub_0812DEA4 + + thumb_func_start sub_0812DEF4 +sub_0812DEF4: @ 0x0812DEF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0812DFEC + ldr r0, _0812DF6C + ldr r0, [r0] + adds r0, #0x3d + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812DF70 + adds r7, r0, r1 + strh r4, [r7, #0xa] + movs r6, #0 + ldr r1, _0812DF74 + lsls r5, r4, #2 + adds r0, r5, r1 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0xff + beq _0812DF62 + mov r8, r1 +_0812DF2A: + mov r0, r8 + adds r4, r5, r0 + ldr r0, [r4] + lsls r2, r6, #2 + adds r2, r2, r0 + ldrb r0, [r2] + ldrb r1, [r2, #1] + movs r3, #2 + ldrsh r2, [r2, r3] + bl sub_0812EFA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r6, #4 + lsls r2, r2, #1 + adds r1, r7, #0 + adds r1, #8 + adds r1, r1, r2 + strh r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, [r4] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0812DF2A +_0812DF62: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812DF6C: .4byte gUnknown_203A800 +_0812DF70: .4byte gUnknown_3005B60 +_0812DF74: .4byte gUnknown_8584988 + thumb_func_end sub_0812DEF4 + + thumb_func_start sub_0812DF78 +sub_0812DF78: @ 0x0812DF78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r8, r1 + ldr r4, [sp, #0x1c] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0812DFCC + ldr r0, [r0] + adds r0, #0x3d + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812DFD0 + adds r0, r0, r1 + mov ip, r0 + movs r5, #4 + lsls r4, r4, #0x10 + asrs r6, r4, #0x10 + lsls r2, r2, #0x10 + lsls r3, r3, #0x10 +_0812DFA6: + lsls r0, r5, #1 + mov r1, ip + adds r1, #8 + adds r4, r1, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bne _0812DFD4 + str r6, [sp] + adds r0, r7, #0 + mov r1, r8 + asrs r2, r2, #0x10 + asrs r3, r3, #0x10 + bl sub_0812EFEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + b _0812DFDE + .align 2, 0 +_0812DFCC: .4byte gUnknown_203A800 +_0812DFD0: .4byte gUnknown_3005B60 +_0812DFD4: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _0812DFA6 +_0812DFDE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812DF78 + + thumb_func_start sub_0812DFEC +sub_0812DFEC: @ 0x0812DFEC + push {r4, r5, r6, lr} + ldr r0, _0812E050 + ldr r0, [r0] + adds r0, #0x3d + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812E054 + adds r4, r0, r1 + ldrh r1, [r4, #0xa] + ldr r0, _0812E058 + cmp r1, r0 + beq _0812E018 + ldr r0, _0812E05C + movs r2, #0xa + ldrsh r1, [r4, r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_0812E018: + movs r5, #4 + adds r6, r4, #0 + adds r6, #8 +_0812E01E: + lsls r0, r5, #1 + adds r4, r6, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + beq _0812E03E + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E060 + adds r0, r0, r1 + bl sub_08006E00 + movs r0, #0x40 + strh r0, [r4] +_0812E03E: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _0812E01E + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812E050: .4byte gUnknown_203A800 +_0812E054: .4byte gUnknown_3005B60 +_0812E058: .4byte 0x0000FFFF +_0812E05C: .4byte gUnknown_85849A4 +_0812E060: .4byte gUnknown_20205AC + thumb_func_end sub_0812DFEC + + thumb_func_start sub_0812E064 +sub_0812E064: @ 0x0812E064 + push {r4, r5, lr} + ldr r0, _0812E0A0 + ldr r0, [r0] + adds r0, #0x3d + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0812E0A4 + adds r0, r0, r1 + movs r2, #4 + adds r3, r0, #0 + adds r3, #8 + ldr r4, _0812E0A8 +_0812E080: + lsls r0, r2, #1 + adds r1, r3, r0 + movs r5, #0 + ldrsh r0, [r1, r5] + cmp r0, #0x40 + beq _0812E0AC + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r5, #0x3c + ldrsh r0, [r1, r5] + cmp r0, #0 + beq _0812E0AC + movs r0, #0 + b _0812E0B8 + .align 2, 0 +_0812E0A0: .4byte gUnknown_203A800 +_0812E0A4: .4byte gUnknown_3005B60 +_0812E0A8: .4byte gUnknown_20205AC +_0812E0AC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _0812E080 + movs r0, #1 +_0812E0B8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0812E064 + + thumb_func_start sub_0812E0C0 +sub_0812E0C0: @ 0x0812E0C0 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _0812E0E8 + ldr r2, _0812E0EC + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0812E0E8: .4byte gUnknown_8584594 +_0812E0EC: .4byte gUnknown_3005B60 + thumb_func_end sub_0812E0C0 + + thumb_func_start sub_0812E0F0 +sub_0812E0F0: @ 0x0812E0F0 + bx lr + .align 2, 0 + thumb_func_end sub_0812E0F0 + + thumb_func_start sub_0812E0F4 +sub_0812E0F4: @ 0x0812E0F4 + push {r4, r5, r6, r7, lr} + movs r6, #0 + movs r0, #0x30 +_0812E0FA: + movs r4, #0 + lsls r5, r0, #0x10 + lsls r7, r6, #0x10 +_0812E100: + ldr r0, _0812E158 + asrs r1, r5, #0x10 + movs r2, #0 + movs r3, #0xe + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0812E15C + adds r1, r1, r0 + ldrb r0, [r1, #5] + movs r2, #0xc + orrs r0, r2 + strb r0, [r1, #5] + strh r6, [r1, #0x2e] + strh r4, [r1, #0x30] + ldr r0, _0812E160 + strh r0, [r1, #0x34] + lsls r0, r4, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xd + adds r0, r0, r1 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x77 + ble _0812E100 + movs r2, #0x80 + lsls r2, r2, #9 + adds r1, r7, r2 + movs r2, #0xa0 + lsls r2, r2, #0xe + adds r0, r5, r2 + lsrs r0, r0, #0x10 + lsrs r6, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #2 + ble _0812E0FA + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812E158: .4byte gUnknown_8584C64 +_0812E15C: .4byte gUnknown_20205AC +_0812E160: .4byte 0x0000FFFF + thumb_func_end sub_0812E0F4 + + thumb_func_start sub_0812E164 +sub_0812E164: @ 0x0812E164 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0812E1D4 + ldr r4, [r0] + movs r1, #0x2e + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + adds r1, r4, #0 + adds r1, #0x1c + adds r1, r1, r0 + ldrh r0, [r5, #0x30] + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r5, #0x32] + movs r2, #0x32 + ldrsh r0, [r5, r2] + movs r1, #0x78 + bl __modsi3 + strh r0, [r5, #0x32] + movs r2, #0x2e + ldrsh r1, [r5, r2] + lsls r1, r1, #1 + adds r4, #0x22 + adds r4, r4, r1 + ldrh r1, [r4] + adds r1, #0x1c + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldrh r4, [r5, #0x2e] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0x32 + ldrsh r0, [r5, r1] + movs r1, #0x18 + bl __divsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0812BC54 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08008338 + adds r1, r5, #0 + adds r1, #0x40 + strh r0, [r1] + adds r0, r5, #0 + bl sub_0800803C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812E1D4: .4byte gUnknown_203A800 + thumb_func_end sub_0812E164 + + thumb_func_start sub_0812E1D8 +sub_0812E1D8: @ 0x0812E1D8 + push {r4, r5, r6, lr} + movs r4, #0xcb + movs r5, #1 + ldr r6, _0812E23C +_0812E1E0: + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0x17 + movs r2, #0 + adds r3, r5, #0 + bl sub_0812E240 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #0x11 + subs r4, #7 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + ble _0812E1E0 + movs r4, #0xeb + movs r5, #1 + ldr r6, _0812E23C +_0812E20E: + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0x17 + movs r2, #1 + adds r3, r5, #0 + bl sub_0812E240 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #0x11 + subs r4, #7 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r6 + ble _0812E20E + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812E23C: .4byte 0x0000270F + thumb_func_end sub_0812E1D8 + + thumb_func_start sub_0812E240 +sub_0812E240: @ 0x0812E240 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + adds r4, r3, #0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0812E2AC + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #0xd + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0812E2B0 + adds r2, r2, r0 + ldrb r1, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2, #5] + mov r0, r8 + strh r0, [r2, #0x2e] + strh r4, [r2, #0x30] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #1 + strh r0, [r2, #0x32] + ldr r0, _0812E2B4 + strh r0, [r2, #0x34] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812E2AC: .4byte gUnknown_8584C7C +_0812E2B0: .4byte gUnknown_20205AC +_0812E2B4: .4byte 0x0000FFFF + thumb_func_end sub_0812E240 + + thumb_func_start sub_0812E2B8 +sub_0812E2B8: @ 0x0812E2B8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0812E30C + ldr r1, [r0] + ldrh r2, [r1, #0xc] + movs r3, #0x2e + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0812E2CC + ldrh r2, [r1, #0xe] +_0812E2CC: + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, r2 + beq _0812E306 + strh r2, [r4, #0x34] + ldrh r1, [r4, #0x32] + adds r0, r2, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r1, [r4, #0x30] + adds r0, r2, #0 + bl __udivsi3 + lsls r0, r0, #0x10 + movs r3, #0xe0 + lsls r3, r3, #0xb + adds r0, r0, r3 + lsrs r2, r0, #0x10 + adds r0, r2, #0 + bl sub_08008338 + adds r1, r4, #0 + adds r1, #0x40 + strh r0, [r1] + adds r0, r4, #0 + bl sub_0800803C +_0812E306: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E30C: .4byte gUnknown_203A800 + thumb_func_end sub_0812E2B8 + + thumb_func_start sub_0812E310 +sub_0812E310: @ 0x0812E310 + push {lr} + ldr r0, _0812E340 + movs r1, #0x58 + movs r2, #0x48 + movs r3, #0xf + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0812E344 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + ldr r1, _0812E348 + bl sub_0800858C + pop {r0} + bx r0 + .align 2, 0 +_0812E340: .4byte gUnknown_8584C94 +_0812E344: .4byte gUnknown_20205AC +_0812E348: .4byte gUnknown_8584F44 + thumb_func_end sub_0812E310 + + thumb_func_start sub_0812E34C +sub_0812E34C: @ 0x0812E34C + push {r4, r5, lr} + sub sp, #0x18 + ldr r4, _0812E3E4 + ldr r0, [r4] + cmp r0, #0 + bne _0812E360 + movs r0, #0x28 + bl sub_08000BDC + str r0, [r4] +_0812E360: + ldr r2, [r4] + ldr r0, _0812E3E8 + ldr r1, [r0] + str r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + strh r3, [r2, #4] + adds r0, r1, r3 + str r0, [r2, #8] + strh r3, [r2, #0xc] + movs r4, #0x80 + lsls r4, r4, #5 + adds r0, r1, r4 + str r0, [r2, #0x10] + strh r3, [r2, #0x14] + movs r5, #0xc0 + lsls r5, r5, #5 + adds r0, r1, r5 + str r0, [r2, #0x18] + strh r3, [r2, #0x1c] + movs r0, #0x80 + lsls r0, r0, #6 + adds r1, r1, r0 + str r1, [r2, #0x20] + strh r3, [r2, #0x24] + mov r1, sp + ldr r0, _0812E3EC + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + str r2, [sp, #0xc] + movs r1, #0x8c + lsls r1, r1, #1 + mov r0, sp + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0812E3F0 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r3, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + movs r3, #4 + orrs r1, r3 + strb r1, [r2, #5] + adds r2, #0x3e + ldrb r1, [r2] + movs r3, #2 + orrs r1, r3 + strb r1, [r2] + ldr r1, _0812E3F4 + ldr r1, [r1] + adds r1, #0x3f + strb r0, [r1] + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812E3E4: .4byte gUnknown_203A7B0 +_0812E3E8: .4byte gUnknown_203A7A4 +_0812E3EC: .4byte gUnknown_8584CAC +_0812E3F0: .4byte gUnknown_20205AC +_0812E3F4: .4byte gUnknown_203A800 + thumb_func_end sub_0812E34C + + thumb_func_start sub_0812E3F8 +sub_0812E3F8: @ 0x0812E3F8 + push {r4, lr} + ldr r0, _0812E428 + ldr r0, [r0] + adds r0, #0x3f + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E42C + adds r0, r0, r1 + bl sub_08006E00 + ldr r4, _0812E430 + ldr r0, [r4] + cmp r0, #0 + beq _0812E420 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0812E420: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E428: .4byte gUnknown_203A800 +_0812E42C: .4byte gUnknown_20205AC +_0812E430: .4byte gUnknown_203A7B0 + thumb_func_end sub_0812E3F8 + + thumb_func_start sub_0812E434 +sub_0812E434: @ 0x0812E434 + push {lr} + adds r2, r0, #0 + movs r0, #0 + strh r0, [r2, #0x24] + strh r0, [r2, #0x26] + adds r0, r2, #0 + adds r0, #0x2a + ldrb r0, [r0] + cmp r0, #4 + bne _0812E47A + movs r0, #8 + strh r0, [r2, #0x24] + strh r0, [r2, #0x26] + adds r0, r2, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + beq _0812E468 + adds r0, r2, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _0812E476 + b _0812E47A +_0812E468: + adds r0, r2, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _0812E47A +_0812E476: + ldr r0, _0812E480 + strh r0, [r2, #0x26] +_0812E47A: + pop {r0} + bx r0 + .align 2, 0 +_0812E480: .4byte 0x0000FFF8 + thumb_func_end sub_0812E434 + + thumb_func_start sub_0812E484 +sub_0812E484: @ 0x0812E484 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + ldr r4, _0812E594 + ldr r0, [r4] + cmp r0, #0 + bne _0812E4A0 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] +_0812E4A0: + ldr r2, [r4] + ldr r0, _0812E598 + mov sl, r0 + ldr r0, [r0] + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r0, r1 + str r0, [r2] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r2, #4] + mov r1, sp + ldr r0, _0812E59C + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r7} + stm r1!, {r3, r4, r7} + str r2, [sp, #0xc] + mov r0, sp + movs r1, #0xb8 + lsls r1, r1, #1 + movs r2, #0x34 + movs r3, #7 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r5, _0812E5A0 + mov sb, r5 + adds r2, r0, r5 + ldrb r1, [r2, #5] + movs r7, #0xd + rsbs r7, r7, #0 + mov r8, r7 + mov r0, r8 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + adds r1, r2, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r6, #2 + orrs r0, r6 + strb r0, [r1] + ldr r1, _0812E5A4 + adds r0, r2, #0 + bl sub_0800858C + ldr r5, _0812E5A8 + ldr r0, [r5] + adds r0, #0x49 + strb r4, [r0] + ldr r4, _0812E5AC + ldr r0, [r4] + cmp r0, #0 + bne _0812E520 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] +_0812E520: + ldr r2, [r4] + mov r3, sl + ldr r0, [r3] + movs r4, #0xac + lsls r4, r4, #6 + adds r0, r0, r4 + str r0, [r2] + movs r0, #0xa0 + lsls r0, r0, #3 + strh r0, [r2, #4] + mov r1, sp + ldr r0, _0812E5B0 + ldm r0!, {r3, r4, r7} + stm r1!, {r3, r4, r7} + ldm r0!, {r3, r4, r7} + stm r1!, {r3, r4, r7} + str r2, [sp, #0xc] + mov r0, sp + movs r1, #0xb8 + lsls r1, r1, #1 + movs r2, #0x54 + movs r3, #7 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + mov r7, sb + adds r2, r0, r7 + ldrb r1, [r2, #5] + mov r0, r8 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] + adds r1, r2, #0 + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + ldr r1, _0812E5B4 + adds r0, r2, #0 + bl sub_0800858C + ldr r0, [r5] + adds r0, #0x4a + strb r4, [r0] + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812E594: .4byte gUnknown_203A7B4 +_0812E598: .4byte gUnknown_203A7A4 +_0812E59C: .4byte gUnknown_8584CC4 +_0812E5A0: .4byte gUnknown_20205AC +_0812E5A4: .4byte gUnknown_8584F64 +_0812E5A8: .4byte gUnknown_203A800 +_0812E5AC: .4byte gUnknown_203A7B8 +_0812E5B0: .4byte gUnknown_8584CDC +_0812E5B4: .4byte gUnknown_8584F78 + thumb_func_end sub_0812E484 + + thumb_func_start sub_0812E5B8 +sub_0812E5B8: @ 0x0812E5B8 + push {r4, r5, lr} + sub sp, #0x18 + ldr r4, _0812E644 + ldr r0, [r4] + cmp r0, #0 + bne _0812E5CC + movs r0, #8 + bl sub_08000BDC + str r0, [r4] +_0812E5CC: + ldr r2, [r4] + ldr r0, _0812E648 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r0, r1 + str r0, [r2] + movs r0, #0xc0 + lsls r0, r0, #3 + strh r0, [r2, #4] + mov r1, sp + ldr r0, _0812E64C + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + str r2, [sp, #0xc] + ldr r0, _0812E650 + ldrh r0, [r0] + movs r1, #0xa8 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r0, sp + movs r2, #0x50 + movs r3, #7 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0812E654 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + ldr r1, _0812E658 + bl sub_0800858C + ldr r0, _0812E65C + ldr r0, [r0] + adds r0, #0x42 + strb r4, [r0] + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812E644: .4byte gUnknown_203A7BC +_0812E648: .4byte gUnknown_203A7A4 +_0812E64C: .4byte gUnknown_8584CF4 +_0812E650: .4byte gUnknown_2021B38 +_0812E654: .4byte gUnknown_20205AC +_0812E658: .4byte gUnknown_8584F94 +_0812E65C: .4byte gUnknown_203A800 + thumb_func_end sub_0812E5B8 + + thumb_func_start sub_0812E660 +sub_0812E660: @ 0x0812E660 + push {r4, r5, r6, lr} + movs r4, #0 + movs r5, #0 +_0812E666: + ldr r0, _0812E6C8 + movs r1, #0xb8 + lsls r1, r1, #1 + movs r2, #0 + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r1, _0812E6CC + adds r3, r3, r1 + ldrb r2, [r3, #5] + movs r6, #0xd + rsbs r6, r6, #0 + adds r1, r6, #0 + ands r2, r1 + movs r1, #4 + orrs r2, r1 + strb r2, [r3, #5] + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + ldrb r1, [r1] + movs r2, #2 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + strh r5, [r3, #0x3c] + ldr r1, _0812E6D0 + ldr r1, [r1] + adds r1, #0x4b + adds r1, r1, r4 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r5, #0x10 + movs r6, #0xa0 + lsls r6, r6, #0xd + adds r0, r0, r6 + lsrs r5, r0, #0x10 + cmp r4, #2 + bls _0812E666 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812E6C8: .4byte gUnknown_8584D0C +_0812E6CC: .4byte gUnknown_20205AC +_0812E6D0: .4byte gUnknown_203A800 + thumb_func_end sub_0812E660 + + thumb_func_start sub_0812E6D4 +sub_0812E6D4: @ 0x0812E6D4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0812E718 + ldr r1, [r0] + ldrh r0, [r4, #0x3c] + ldrh r1, [r1, #0x14] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x28 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r0, #0 + adds r1, #0x3b + strh r1, [r4, #0x22] + movs r1, #0x14 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_0812BCF8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007ED8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E718: .4byte gUnknown_203A800 + thumb_func_end sub_0812E6D4 + + thumb_func_start sub_0812E71C +sub_0812E71C: @ 0x0812E71C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r1, #0xb8 + lsls r1, r1, #1 + ldr r0, _0812E7CC + movs r2, #0x64 + movs r3, #9 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r7, _0812E7D0 + adds r2, r0, r7 + adds r1, r2, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r3, #2 + mov sl, r3 + mov r3, sl + orrs r0, r3 + strb r0, [r1] + ldrb r1, [r2, #5] + movs r5, #0xd + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + movs r1, #4 + mov r8, r1 + mov r3, r8 + orrs r0, r3 + strb r0, [r2, #5] + ldr r0, _0812E7D4 + mov sb, r0 + adds r0, r2, #0 + mov r1, sb + bl sub_0800858C + ldr r6, _0812E7D8 + ldr r0, [r6] + adds r0, #0x4e + strb r4, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + ldr r0, _0812E7CC + movs r2, #0x68 + movs r3, #4 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r2, r0, r7 + adds r1, r2, #0 + adds r1, #0x3e + ldrb r0, [r1] + mov r3, sl + orrs r0, r3 + strb r0, [r1] + ldrb r0, [r2, #5] + ands r5, r0 + mov r0, r8 + orrs r5, r0 + strb r5, [r2, #5] + adds r0, r2, #0 + mov r1, sb + bl sub_0800858C + ldr r0, [r6] + adds r0, #0x4f + strb r4, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812E7CC: .4byte gUnknown_8584D24 +_0812E7D0: .4byte gUnknown_20205AC +_0812E7D4: .4byte gUnknown_8584FAC +_0812E7D8: .4byte gUnknown_203A800 + thumb_func_end sub_0812E71C + + thumb_func_start sub_0812E7DC +sub_0812E7DC: @ 0x0812E7DC + push {r4, lr} + ldr r0, _0812E82C + movs r1, #0xb8 + lsls r1, r1, #1 + movs r2, #0x4c + movs r3, #0xb + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0812E830 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + ldr r1, _0812E834 + bl sub_0800858C + ldr r0, _0812E838 + ldr r0, [r0] + adds r0, #0x40 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E82C: .4byte gUnknown_8584D3C +_0812E830: .4byte gUnknown_20205AC +_0812E834: .4byte gUnknown_8584FC0 +_0812E838: .4byte gUnknown_203A800 + thumb_func_end sub_0812E7DC + + thumb_func_start sub_0812E83C +sub_0812E83C: @ 0x0812E83C + push {r4, lr} + ldr r0, _0812E8C4 + ldr r0, [r0] + adds r0, #0x40 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E8C8 + adds r0, r0, r1 + bl sub_08006E00 + movs r4, #0 +_0812E856: + ldr r0, _0812E8C4 + ldr r0, [r0] + adds r0, #0x49 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E8C8 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0812E856 + ldr r4, _0812E8CC + ldr r0, [r4] + cmp r0, #0 + beq _0812E888 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0812E888: + ldr r4, _0812E8D0 + ldr r0, [r4] + cmp r0, #0 + beq _0812E898 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0812E898: + movs r4, #0 +_0812E89A: + ldr r0, _0812E8C4 + ldr r0, [r0] + adds r0, #0x4b + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E8C8 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0812E89A + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E8C4: .4byte gUnknown_203A800 +_0812E8C8: .4byte gUnknown_20205AC +_0812E8CC: .4byte gUnknown_203A7B4 +_0812E8D0: .4byte gUnknown_203A7B8 + thumb_func_end sub_0812E83C + + thumb_func_start sub_0812E8D4 +sub_0812E8D4: @ 0x0812E8D4 + push {r4, lr} + movs r4, #0 +_0812E8D8: + ldr r0, _0812E900 + ldr r0, [r0] + adds r0, #0x4e + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E904 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0812E8D8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E900: .4byte gUnknown_203A800 +_0812E904: .4byte gUnknown_20205AC + thumb_func_end sub_0812E8D4 + + thumb_func_start sub_0812E908 +sub_0812E908: @ 0x0812E908 + push {r4, lr} + ldr r0, _0812E938 + ldr r0, [r0] + adds r0, #0x42 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812E93C + adds r0, r0, r1 + bl sub_08006E00 + ldr r4, _0812E940 + ldr r0, [r4] + cmp r0, #0 + beq _0812E930 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0812E930: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812E938: .4byte gUnknown_203A800 +_0812E93C: .4byte gUnknown_20205AC +_0812E940: .4byte gUnknown_203A7BC + thumb_func_end sub_0812E908 + + thumb_func_start sub_0812E944 +sub_0812E944: @ 0x0812E944 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + ldr r0, _0812E9E8 + mov sl, r0 + movs r1, #0x98 + movs r2, #0x20 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _0812E9EC + mov sb, r2 + adds r3, r1, r2 + ldrb r2, [r3, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r1, r2 + movs r2, #4 + mov r8, r2 + mov r2, r8 + orrs r1, r2 + strb r1, [r3, #5] + adds r5, r3, #0 + adds r5, #0x3f + ldrb r1, [r5] + movs r2, #1 + orrs r1, r2 + strb r1, [r5] + ldr r6, _0812E9F0 + ldr r1, [r6] + adds r1, #0x50 + strb r0, [r1] + movs r0, #8 + strh r0, [r3, #0x2e] + ldr r0, _0812E9F4 + strh r0, [r3, #0x30] + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r3, #0x32] + movs r5, #0x20 + strh r5, [r3, #0x3c] + mov r0, sl + movs r1, #0xb8 + movs r2, #0x20 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + mov r2, sb + adds r3, r1, r2 + ldrb r1, [r3, #5] + ands r4, r1 + mov r1, r8 + orrs r4, r1 + strb r4, [r3, #5] + ldr r1, [r6] + adds r1, #0x51 + strb r0, [r1] + movs r0, #1 + strh r0, [r3, #0x30] + subs r0, #2 + strh r0, [r3, #0x32] + strh r5, [r3, #0x3c] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812E9E8: .4byte gUnknown_8584D54 +_0812E9EC: .4byte gUnknown_20205AC +_0812E9F0: .4byte gUnknown_203A800 +_0812E9F4: .4byte 0x0000FFFF + thumb_func_end sub_0812E944 + + thumb_func_start sub_0812E9F8 +sub_0812E9F8: @ 0x0812E9F8 + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + movs r1, #0x2e + ldrsh r4, [r2, r1] + cmp r4, #0 + beq _0812EA1C + subs r0, #1 + movs r1, #0 + strh r0, [r2, #0x2e] + strh r1, [r2, #0x24] + strh r1, [r2, #0x26] + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + b _0812EA4E +_0812EA1C: + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x26] + adds r0, r0, r1 + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x34] + adds r0, #1 + strh r0, [r2, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0812EA4E + ldrh r0, [r2, #0x3c] + strh r0, [r2, #0x2e] + strh r4, [r2, #0x34] +_0812EA4E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812E9F8 + + thumb_func_start sub_0812EA54 +sub_0812EA54: @ 0x0812EA54 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0812EA84 + ldr r1, _0812EA88 + ldr r3, [r1] + adds r1, r3, #0 + adds r1, #0x50 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strh r0, [r1, #0x3c] + adds r3, #0x51 + ldrb r2, [r3] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + strh r0, [r1, #0x3c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EA84: .4byte gUnknown_20205AC +_0812EA88: .4byte gUnknown_203A800 + thumb_func_end sub_0812EA54 + + thumb_func_start sub_0812EA8C +sub_0812EA8C: @ 0x0812EA8C + push {r4, lr} + movs r4, #0 +_0812EA90: + ldr r0, _0812EAB8 + ldr r0, [r0] + adds r0, #0x50 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812EABC + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0812EA90 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EAB8: .4byte gUnknown_203A800 +_0812EABC: .4byte gUnknown_20205AC + thumb_func_end sub_0812EA8C + + thumb_func_start sub_0812EAC0 +sub_0812EAC0: @ 0x0812EAC0 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + ldr r0, _0812EB4C + mov r8, r0 + movs r1, #0x48 + movs r2, #0x50 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0812EB50 + mov sb, r1 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + ldrb r3, [r2, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r1, r3 + movs r6, #4 + orrs r1, r6 + strb r1, [r2, #5] + movs r3, #0 + movs r1, #1 + strh r1, [r2, #0x2e] + strh r3, [r2, #0x38] + movs r1, #0x10 + strh r1, [r2, #0x3a] + movs r1, #8 + strh r1, [r2, #0x3c] + ldr r5, _0812EB54 + ldr r1, [r5] + adds r1, #0x52 + strb r0, [r1] + mov r0, r8 + movs r1, #0x68 + movs r2, #0x50 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + ldrb r2, [r1, #5] + ands r4, r2 + orrs r4, r6 + strb r4, [r1, #5] + adds r1, #0x3f + ldrb r2, [r1] + movs r3, #1 + orrs r2, r3 + strb r2, [r1] + ldr r1, [r5] + adds r1, #0x53 + strb r0, [r1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812EB4C: .4byte gUnknown_8584D6C +_0812EB50: .4byte gUnknown_20205AC +_0812EB54: .4byte gUnknown_203A800 + thumb_func_end sub_0812EAC0 + + thumb_func_start sub_0812EB58 +sub_0812EB58: @ 0x0812EB58 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _0812EBB4 + mov r0, sp + movs r2, #2 + bl memcpy + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0812EBAA + ldrh r0, [r4, #0x3a] + subs r0, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0812EBAA + movs r0, #7 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r2, _0812EBB8 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + movs r2, #0x38 + ldrsh r1, [r4, r2] + add r1, sp + ldrb r3, [r1] + adds r1, r3, #0 + adds r2, r3, #0 + bl sub_080B57F4 + ldrh r0, [r4, #0x38] + adds r0, #1 + movs r1, #1 + ands r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x3c] + strh r0, [r4, #0x3a] +_0812EBAA: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EBB4: .4byte gUnknown_8584598 +_0812EBB8: .4byte 0x01030000 + thumb_func_end sub_0812EB58 + + thumb_func_start sub_0812EBBC +sub_0812EBBC: @ 0x0812EBBC + ldr r3, _0812EBD4 + ldr r1, _0812EBD8 + ldr r1, [r1] + adds r1, #0x52 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + strh r0, [r1, #0x3c] + bx lr + .align 2, 0 +_0812EBD4: .4byte gUnknown_20205AC +_0812EBD8: .4byte gUnknown_203A800 + thumb_func_end sub_0812EBBC + + thumb_func_start sub_0812EBDC +sub_0812EBDC: @ 0x0812EBDC + push {r4, lr} + movs r0, #7 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #4 + ldr r1, _0812EC24 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080B57F4 + movs r4, #0 +_0812EBFA: + ldr r0, _0812EC28 + ldr r0, [r0] + adds r0, #0x52 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812EC2C + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0812EBFA + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EC24: .4byte 0x01030000 +_0812EC28: .4byte gUnknown_203A800 +_0812EC2C: .4byte gUnknown_20205AC + thumb_func_end sub_0812EBDC + + thumb_func_start sub_0812EC30 +sub_0812EC30: @ 0x0812EC30 + push {lr} + ldr r0, _0812EC68 + movs r1, #0xa8 + movs r2, #0x50 + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0812EC6C + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r3, [r1, #5] + movs r2, #0xd + rsbs r2, r2, #0 + ands r2, r3 + movs r3, #4 + orrs r2, r3 + strb r2, [r1, #5] + ldr r1, _0812EC70 + ldr r1, [r1] + adds r1, #0x41 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0812EC68: .4byte gUnknown_8584D84 +_0812EC6C: .4byte gUnknown_20205AC +_0812EC70: .4byte gUnknown_203A800 + thumb_func_end sub_0812EC30 + + thumb_func_start sub_0812EC74 +sub_0812EC74: @ 0x0812EC74 + ldr r1, _0812EC7C + ldrh r1, [r1] + strh r1, [r0, #0x26] + bx lr + .align 2, 0 +_0812EC7C: .4byte gUnknown_2021B3A + thumb_func_end sub_0812EC74 + + thumb_func_start sub_0812EC80 +sub_0812EC80: @ 0x0812EC80 + push {lr} + ldr r0, _0812EC9C + ldr r0, [r0] + adds r0, #0x41 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812ECA0 + adds r0, r0, r1 + bl sub_08006E00 + pop {r0} + bx r0 + .align 2, 0 +_0812EC9C: .4byte gUnknown_203A800 +_0812ECA0: .4byte gUnknown_20205AC + thumb_func_end sub_0812EC80 + + thumb_func_start sub_0812ECA4 +sub_0812ECA4: @ 0x0812ECA4 + push {r4, r5, lr} + sub sp, #8 + ldr r1, _0812ED1C + mov r0, sp + movs r2, #8 + bl memcpy + movs r4, #0 +_0812ECB4: + ldr r0, _0812ED20 + ldrh r0, [r0] + movs r1, #0x50 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _0812ED24 + movs r2, #0x44 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r1, _0812ED28 + adds r3, r3, r1 + ldrb r2, [r3, #5] + movs r5, #0xd + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r2, r1 + movs r1, #4 + orrs r2, r1 + strb r2, [r3, #5] + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + ldrb r1, [r1] + movs r2, #2 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + lsls r1, r4, #1 + add r1, sp + ldrh r1, [r1] + strh r1, [r3, #0x2e] + ldr r1, _0812ED2C + ldr r1, [r1] + adds r1, #0x54 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0812ECB4 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812ED1C: .4byte gUnknown_858459A +_0812ED20: .4byte gUnknown_2021B38 +_0812ED24: .4byte gUnknown_8584D9C +_0812ED28: .4byte gUnknown_20205AC +_0812ED2C: .4byte gUnknown_203A800 + thumb_func_end sub_0812ECA4 + + thumb_func_start sub_0812ED30 +sub_0812ED30: @ 0x0812ED30 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + subs r0, #2 + movs r4, #0 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x2e] + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r1, #0x14 + bl sub_0806EFD4 + strh r0, [r5, #0x24] + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r1, #6 + bl sub_0806EFB8 + strh r0, [r5, #0x26] + adds r1, r5, #0 + adds r1, #0x43 + strb r4, [r1] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0x7f + ble _0812ED6A + movs r0, #2 + strb r0, [r1] +_0812ED6A: + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _0812ED94 + adds r3, r5, #0 + adds r3, #0x3f + ldrb r2, [r3] + lsls r0, r2, #0x1f + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #0 + strh r0, [r5, #0x30] +_0812ED94: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812ED30 + + thumb_func_start sub_0812ED9C +sub_0812ED9C: @ 0x0812ED9C + push {r4, lr} + movs r4, #0 +_0812EDA0: + ldr r0, _0812EDC8 + ldr r0, [r0] + adds r0, #0x54 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0812EDCC + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0812EDA0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EDC8: .4byte gUnknown_203A800 +_0812EDCC: .4byte gUnknown_20205AC + thumb_func_end sub_0812ED9C + + thumb_func_start sub_0812EDD0 +sub_0812EDD0: @ 0x0812EDD0 + push {r4, lr} + ldr r0, _0812EE18 + movs r1, #0xa8 + movs r2, #0x3c + movs r3, #8 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0812EE1C + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + ldrb r1, [r0, #1] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #1] + bl sub_08008140 + ldr r0, _0812EE20 + ldr r0, [r0] + adds r0, #0x43 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EE18: .4byte gUnknown_8584DB4 +_0812EE1C: .4byte gUnknown_20205AC +_0812EE20: .4byte gUnknown_203A800 + thumb_func_end sub_0812EDD0 + + thumb_func_start sub_0812EE24 +sub_0812EE24: @ 0x0812EE24 + push {lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x2e] + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _0812EE46 + adds r0, r3, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812EEA0 + adds r0, r2, #1 + strh r0, [r3, #0x2e] + b _0812EEA0 +_0812EE46: + cmp r0, #1 + bne _0812EE82 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x17 + ble _0812EEA0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + movs r0, #0 + strh r0, [r3, #0x32] + b _0812EEA0 +_0812EE82: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _0812EEA0 + movs r0, #1 + strh r0, [r3, #0x3c] +_0812EEA0: + ldrh r0, [r3, #0x30] + movs r1, #0xff + ands r1, r0 + adds r1, #0x10 + strh r1, [r3, #0x30] + lsrs r1, r1, #8 + ldrh r0, [r3, #0x26] + subs r0, r0, r1 + strh r0, [r3, #0x26] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812EE24 + + thumb_func_start sub_0812EEB8 +sub_0812EEB8: @ 0x0812EEB8 + ldr r2, _0812EED4 + ldr r0, _0812EED8 + ldr r0, [r0] + adds r0, #0x43 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_0812EED4: .4byte gUnknown_20205AC +_0812EED8: .4byte gUnknown_203A800 + thumb_func_end sub_0812EEB8 + + thumb_func_start sub_0812EEDC +sub_0812EEDC: @ 0x0812EEDC + push {r4, lr} + ldr r0, _0812EF08 + ldr r0, [r0] + adds r0, #0x43 + ldrb r0, [r0] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0812EF0C + adds r4, r4, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EF08: .4byte gUnknown_203A800 +_0812EF0C: .4byte gUnknown_20205AC + thumb_func_end sub_0812EEDC + + thumb_func_start sub_0812EF10 +sub_0812EF10: @ 0x0812EF10 + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0812EF5C + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r1, r3, #0 + movs r3, #0xc + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _0812EF60 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #5] + ldrb r1, [r0, #1] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #1] + bl sub_08008140 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0812EF5C: .4byte gUnknown_8584F1C +_0812EF60: .4byte gUnknown_20205AC + thumb_func_end sub_0812EF10 + + thumb_func_start sub_0812EF64 +sub_0812EF64: @ 0x0812EF64 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0812EF78 + movs r0, #1 + strh r0, [r2, #0x3c] +_0812EF78: + pop {r0} + bx r0 + thumb_func_end sub_0812EF64 + + thumb_func_start sub_0812EF7C +sub_0812EF7C: @ 0x0812EF7C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _0812EFA4 + adds r4, r4, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812EFA4: .4byte gUnknown_20205AC + thumb_func_end sub_0812EF7C + + thumb_func_start sub_0812EFA8 +sub_0812EFA8: @ 0x0812EFA8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _0812EFE4 + lsrs r1, r1, #0x16 + adds r3, r1, r3 + ldr r5, [r3] + ldr r3, _0812EFE8 + adds r4, r1, r3 + movs r6, #0 + ldrsh r4, [r4, r6] + adds r3, #2 + adds r1, r1, r3 + movs r6, #0 + ldrsh r3, [r1, r6] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + str r2, [sp] + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0812EFEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0812EFE4: .4byte gUnknown_858484C +_0812EFE8: .4byte gUnknown_85847BE + thumb_func_end sub_0812EFA8 + + thumb_func_start sub_0812EFEC +sub_0812EFEC: @ 0x0812EFEC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + adds r4, r0, #0 + mov r8, r1 + adds r1, r2, #0 + adds r2, r3, #0 + ldr r5, [sp, #0x34] + lsls r4, r4, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov sb, r5 + ldr r0, _0812F078 + lsrs r4, r4, #0x16 + adds r0, r4, r0 + mov r3, sp + ldr r0, [r0] + ldm r0!, {r5, r6, r7} + stm r3!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r3!, {r5, r6, r7} + ldr r0, _0812F07C + adds r0, r4, r0 + ldr r0, [r0] + str r0, [sp, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, sp + movs r3, #0x10 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r0, #0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _0812F080 + adds r2, r0, r1 + ldrb r0, [r2, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r2, #5] + mov r0, r8 + str r0, [r2, #0x1c] + mov r5, sb + strh r5, [r2, #0x3a] + movs r0, #1 + strh r0, [r2, #0x3c] + ldr r0, _0812F084 + adds r4, r4, r0 + ldr r1, [r4] + cmp r1, #0 + beq _0812F066 + adds r0, r2, #0 + bl sub_0800858C +_0812F066: + adds r0, r7, #0 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0812F078: .4byte gUnknown_85851E8 +_0812F07C: .4byte gUnknown_3001188 +_0812F080: .4byte gUnknown_20205AC +_0812F084: .4byte gUnknown_8585250 + thumb_func_end sub_0812EFEC + + thumb_func_start sub_0812F088 +sub_0812F088: @ 0x0812F088 + movs r1, #0 + strh r1, [r0, #0x3c] + bx lr + .align 2, 0 + thumb_func_end sub_0812F088 + + thumb_func_start sub_0812F090 +sub_0812F090: @ 0x0812F090 + push {r4, r5, lr} + sub sp, #0x10 + adds r4, r0, #0 + ldr r1, _0812F10C + mov r0, sp + movs r2, #8 + bl memcpy + add r5, sp, #8 + ldr r1, _0812F110 + adds r0, r5, #0 + movs r2, #8 + bl memcpy + ldrh r0, [r4, #0x30] + adds r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _0812F0D6 + adds r3, r4, #0 + adds r3, #0x42 + ldrb r2, [r3] + lsls r0, r2, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + eors r1, r0 + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #0 + strh r0, [r4, #0x30] +_0812F0D6: + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x42 + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + beq _0812F102 + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + adds r0, r5, r0 + ldrh r0, [r0] + strh r0, [r4, #0x26] +_0812F102: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812F10C: .4byte gUnknown_85845A2 +_0812F110: .4byte gUnknown_85845AA + thumb_func_end sub_0812F090 + + thumb_func_start sub_0812F114 +sub_0812F114: @ 0x0812F114 + push {lr} + adds r3, r0, #0 + adds r3, #0x3f + ldrb r1, [r3] + movs r2, #1 + orrs r1, r2 + strb r1, [r3] + bl sub_0812F090 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F114 + + thumb_func_start sub_0812F12C +sub_0812F12C: @ 0x0812F12C + push {lr} + adds r3, r0, #0 + adds r3, #0x3f + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + bl sub_0812F090 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F12C + + thumb_func_start sub_0812F144 +sub_0812F144: @ 0x0812F144 + push {lr} + adds r3, r0, #0 + adds r3, #0x3f + ldrb r1, [r3] + movs r2, #1 + orrs r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + bl sub_0812F090 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F144 + + thumb_func_start sub_0812F160 +sub_0812F160: @ 0x0812F160 + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _0812F194 + cmp r0, #1 + bgt _0812F176 + cmp r0, #0 + beq _0812F180 + b _0812F1C4 +_0812F176: + cmp r0, #2 + beq _0812F1A4 + cmp r0, #3 + beq _0812F1C0 + b _0812F1C4 +_0812F180: + ldrh r0, [r2, #0x20] + adds r0, #4 + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xcf + ble _0812F1C4 + movs r0, #0xd0 + strh r0, [r2, #0x20] + b _0812F1B2 +_0812F194: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5a + ble _0812F1C4 + b _0812F1B2 +_0812F1A4: + ldrh r0, [r2, #0x20] + adds r0, #4 + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + ldr r1, _0812F1BC + cmp r0, r1 + ble _0812F1C4 +_0812F1B2: + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + b _0812F1C4 + .align 2, 0 +_0812F1BC: .4byte 0x010F0000 +_0812F1C0: + movs r0, #0 + strh r0, [r2, #0x3c] +_0812F1C4: + pop {r0} + bx r0 + thumb_func_end sub_0812F160 + + thumb_func_start sub_0812F1C8 +sub_0812F1C8: @ 0x0812F1C8 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _0812F1FC + cmp r0, #1 + bgt _0812F1DE + cmp r0, #0 + beq _0812F1E8 + b _0812F226 +_0812F1DE: + cmp r0, #2 + beq _0812F20C + cmp r0, #3 + beq _0812F222 + b _0812F226 +_0812F1E8: + ldrh r0, [r1, #0x20] + subs r0, #4 + strh r0, [r1, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd0 + bgt _0812F226 + movs r0, #0xd0 + strh r0, [r1, #0x20] + b _0812F21A +_0812F1FC: + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5a + ble _0812F226 + b _0812F21A +_0812F20C: + ldrh r0, [r1, #0x20] + subs r0, #4 + strh r0, [r1, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x90 + bgt _0812F226 +_0812F21A: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + b _0812F226 +_0812F222: + movs r0, #0 + strh r0, [r1, #0x3c] +_0812F226: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F1C8 + + thumb_func_start sub_0812F22C +sub_0812F22C: @ 0x0812F22C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #5 + bhi _0812F2D6 + lsls r0, r0, #2 + ldr r1, _0812F244 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812F244: .4byte _0812F248 +_0812F248: @ jump table + .4byte _0812F260 @ case 0 + .4byte _0812F278 @ case 1 + .4byte _0812F298 @ case 2 + .4byte _0812F2AC @ case 3 + .4byte _0812F2BC @ case 4 + .4byte _0812F2D2 @ case 5 +_0812F260: + ldr r0, _0812F294 + ldr r0, [r0] + ldrb r1, [r0, #0xa] + subs r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0812F278: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0812F2D6 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0 + strh r0, [r4, #0x30] + b _0812F2D6 + .align 2, 0 +_0812F294: .4byte gUnknown_203A800 +_0812F298: + ldrh r0, [r4, #0x20] + adds r0, #4 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xcf + ble _0812F2D6 + movs r0, #0xd0 + strh r0, [r4, #0x20] + b _0812F2CA +_0812F2AC: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5a + ble _0812F2D6 + b _0812F2CA +_0812F2BC: + ldrh r0, [r4, #0x20] + adds r0, #4 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf7 + ble _0812F2D6 +_0812F2CA: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0812F2D6 +_0812F2D2: + movs r0, #0 + strh r0, [r4, #0x3c] +_0812F2D6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0812F22C + + thumb_func_start sub_0812F2DC +sub_0812F2DC: @ 0x0812F2DC + push {lr} + adds r3, r0, #0 + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #1 + beq _0812F30A + cmp r0, #1 + bgt _0812F2F2 + cmp r0, #0 + beq _0812F2F8 + b _0812F378 +_0812F2F2: + cmp r0, #2 + beq _0812F328 + b _0812F378 +_0812F2F8: + adds r2, r3, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] +_0812F30A: + ldrh r0, [r3, #0x22] + adds r0, #8 + strh r0, [r3, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6f + ble _0812F378 + movs r0, #0x70 + strh r0, [r3, #0x22] + movs r0, #0x10 + strh r0, [r3, #0x30] + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + b _0812F378 +_0812F328: + movs r0, #0x32 + ldrsh r2, [r3, r0] + cmp r2, #0 + bne _0812F36E + ldrh r0, [r3, #0x22] + ldrh r1, [r3, #0x30] + subs r0, r0, r1 + strh r0, [r3, #0x22] + rsbs r1, r1, #0 + strh r1, [r3, #0x30] + ldrh r0, [r3, #0x34] + adds r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0812F36E + lsls r0, r1, #0x10 + asrs r0, r0, #0x12 + strh r0, [r3, #0x30] + strh r2, [r3, #0x34] + adds r1, r0, #0 + cmp r1, #0 + bne _0812F36E + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + strh r1, [r3, #0x3c] + adds r2, r3, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0812F36E: + ldrh r0, [r3, #0x32] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strh r0, [r3, #0x32] +_0812F378: + pop {r0} + bx r0 + thumb_func_end sub_0812F2DC + + thumb_func_start sub_0812F37C +sub_0812F37C: @ 0x0812F37C + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0812F38E + cmp r0, #1 + beq _0812F3A4 + b _0812F3C0 +_0812F38E: + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0812F3C0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + b _0812F3C0 +_0812F3A4: + ldrh r0, [r1, #0x22] + adds r0, #2 + strh r0, [r1, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2f + ble _0812F3C0 + movs r0, #0x30 + strh r0, [r1, #0x22] + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + movs r0, #0 + strh r0, [r1, #0x3c] +_0812F3C0: + pop {r0} + bx r0 + thumb_func_end sub_0812F37C + + thumb_func_start sub_0812F3C4 +sub_0812F3C4: @ 0x0812F3C4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0812F3D6 + cmp r0, #1 + beq _0812F426 + b _0812F478 +_0812F3D6: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + ble _0812F478 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #5 + strh r0, [r4, #0x30] + ldrb r0, [r4, #1] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r4, #0x30] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 + b _0812F478 +_0812F426: + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x30] + subs r0, r0, r1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0812F43C + movs r0, #0 + strh r0, [r4, #0x30] +_0812F43C: + ldrh r0, [r4, #0x30] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 + ldrh r1, [r4, #0x32] + movs r0, #0xff + ands r0, r1 + adds r0, #0x80 + strh r0, [r4, #0x32] + movs r0, #0x30 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _0812F478 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + strh r1, [r4, #0x3c] + ldrb r1, [r4, #1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 +_0812F478: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F3C4 + + thumb_func_start sub_0812F480 +sub_0812F480: @ 0x0812F480 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #2 + bgt _0812F4D0 + ldr r1, _0812F4CC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r0, #6 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0812F50C + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + movs r0, #0 + strh r0, [r5, #0x32] + b _0812F50C + .align 2, 0 +_0812F4CC: .4byte gUnknown_8585614 +_0812F4D0: + ldr r1, _0812F520 + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r0, #6 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r5, #0x32] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x18 + ble _0812F50C + strh r1, [r5, #0x30] + strh r1, [r5, #0x32] +_0812F50C: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007ED8 + movs r0, #0 + strh r0, [r5, #0x3c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812F520: .4byte gUnknown_8585614 + thumb_func_end sub_0812F480 + + thumb_func_start sub_0812F524 +sub_0812F524: @ 0x0812F524 + push {r4, r5, r6, lr} + sub sp, #0x30 + adds r4, r0, #0 + ldr r1, _0812F560 + mov r0, sp + movs r2, #0x10 + bl memcpy + add r6, sp, #0x10 + ldr r1, _0812F564 + adds r0, r6, #0 + movs r2, #0x10 + bl memcpy + add r5, sp, #0x20 + ldr r1, _0812F568 + adds r0, r5, #0 + movs r2, #0x10 + bl memcpy + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0812F59C + cmp r0, #1 + bgt _0812F56C + cmp r0, #0 + beq _0812F572 + b _0812F5E8 + .align 2, 0 +_0812F560: .4byte gUnknown_85845B2 +_0812F564: .4byte gUnknown_85845C2 +_0812F568: .4byte gUnknown_85845D2 +_0812F56C: + cmp r0, #2 + beq _0812F5B0 + b _0812F5E8 +_0812F572: + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + adds r0, r6, r0 + ldrh r0, [r0] + strh r0, [r4, #0x26] + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r5, r0 + ldrh r0, [r0] + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0812F59C: + ldrh r0, [r4, #0x30] + subs r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0812F5E8 + b _0812F5E2 +_0812F5B0: + ldrh r0, [r4, #0x24] + movs r2, #0x24 + ldrsh r1, [r4, r2] + cmp r1, #0 + ble _0812F5BE + subs r0, #4 + b _0812F5C4 +_0812F5BE: + cmp r1, #0 + bge _0812F5C6 + adds r0, #4 +_0812F5C4: + strh r0, [r4, #0x24] +_0812F5C6: + ldrh r0, [r4, #0x26] + movs r2, #0x26 + ldrsh r1, [r4, r2] + cmp r1, #0 + ble _0812F5D4 + subs r0, #4 + b _0812F5DA +_0812F5D4: + cmp r1, #0 + bge _0812F5DC + adds r0, #4 +_0812F5DA: + strh r0, [r4, #0x26] +_0812F5DC: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _0812F5E8 +_0812F5E2: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0812F5E8: + add sp, #0x30 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0812F524 + + thumb_func_start sub_0812F5F0 +sub_0812F5F0: @ 0x0812F5F0 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + ldr r1, _0812F654 + mov r0, sp + movs r2, #0x10 + bl memcpy + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0812F612 + adds r0, r1, #1 + strh r0, [r4, #0x2e] + movs r0, #0xc + strh r0, [r4, #0x30] +_0812F612: + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0812F64C + subs r0, r1, #1 + strh r0, [r4, #0x30] +_0812F64C: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812F654: .4byte gUnknown_85845E2 + thumb_func_end sub_0812F5F0 + + thumb_func_start sub_0812F658 +sub_0812F658: @ 0x0812F658 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0812F6A4 + cmp r0, #1 + bgt _0812F670 + cmp r0, #0 + beq _0812F67A + b _0812F77C +_0812F670: + cmp r0, #2 + beq _0812F6F0 + cmp r0, #3 + beq _0812F72C + b _0812F77C +_0812F67A: + ldr r0, _0812F6E8 + ldr r2, [r0] + adds r1, r2, #0 + adds r1, #0x5c + movs r0, #0x2f + strh r0, [r1] + adds r1, #2 + movs r0, #0x3f + strh r0, [r1] + subs r1, #4 + ldr r0, _0812F6EC + strh r0, [r1] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_0812F6A4: + ldrh r0, [r5, #0x30] + adds r2, r0, #2 + strh r2, [r5, #0x30] + adds r0, #0xb2 + strh r0, [r5, #0x32] + movs r1, #0xf0 + subs r1, r1, r2 + strh r1, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd0 + ble _0812F6C0 + movs r0, #0xd0 + strh r0, [r5, #0x32] +_0812F6C0: + movs r1, #0x34 + ldrsh r0, [r5, r1] + cmp r0, #0xcf + bgt _0812F6CC + movs r0, #0xd0 + strh r0, [r5, #0x34] +_0812F6CC: + ldr r0, _0812F6E8 + ldr r2, [r0] + ldrh r0, [r5, #0x32] + lsls r0, r0, #8 + ldrh r1, [r5, #0x34] + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x58 + strh r0, [r1] + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0x33 + ble _0812F77C + b _0812F76E + .align 2, 0 +_0812F6E8: .4byte gUnknown_203A800 +_0812F6EC: .4byte 0x00002088 +_0812F6F0: + ldr r6, _0812F784 + ldr r0, [r6] + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0812F77C + ldr r1, _0812F788 + movs r4, #0 + str r4, [sp] + movs r0, #5 + movs r2, #0xd0 + movs r3, #0x74 + bl sub_0812DF78 + ldr r2, [r6] + adds r1, r2, #0 + adds r1, #0x58 + ldr r0, _0812F78C + strh r0, [r1] + adds r1, #2 + movs r0, #0xd1 + lsls r0, r0, #7 + strh r0, [r1] + adds r1, #2 + movs r0, #0x2f + strh r0, [r1] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + strh r4, [r5, #0x30] +_0812F72C: + ldrh r0, [r5, #0x30] + adds r2, r0, #2 + strh r2, [r5, #0x30] + adds r0, #0xc2 + strh r0, [r5, #0x32] + movs r1, #0xe0 + subs r1, r1, r2 + strh r1, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd0 + ble _0812F748 + movs r0, #0xd0 + strh r0, [r5, #0x32] +_0812F748: + movs r1, #0x34 + ldrsh r0, [r5, r1] + cmp r0, #0xcf + bgt _0812F754 + movs r0, #0xd0 + strh r0, [r5, #0x34] +_0812F754: + ldr r0, _0812F784 + ldr r2, [r0] + ldrh r0, [r5, #0x32] + lsls r0, r0, #8 + ldrh r1, [r5, #0x34] + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x58 + strh r0, [r1] + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0xf + ble _0812F77C +_0812F76E: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + adds r1, r2, #0 + adds r1, #0x5c + movs r0, #0x3f + strh r0, [r1] +_0812F77C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812F784: .4byte gUnknown_203A800 +_0812F788: .4byte sub_08007140 +_0812F78C: .4byte 0x0000C0E0 + thumb_func_end sub_0812F658 + + thumb_func_start sub_0812F790 +sub_0812F790: @ 0x0812F790 + bx lr + .align 2, 0 + thumb_func_end sub_0812F790 + + thumb_func_start sub_0812F794 +sub_0812F794: @ 0x0812F794 + push {lr} + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F794 + + thumb_func_start sub_0812F7A4 +sub_0812F7A4: @ 0x0812F7A4 + push {r4, lr} + ldr r0, _0812F7CC + ldr r4, [r0] + movs r0, #6 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812F7CC: .4byte gUnknown_8585624 + thumb_func_end sub_0812F7A4 + + thumb_func_start sub_0812F7D0 +sub_0812F7D0: @ 0x0812F7D0 + ldr r0, _0812F7F0 + ldr r2, [r0] + adds r1, r2, #0 + adds r1, #0x58 + movs r0, #0xf0 + strh r0, [r1] + adds r1, #2 + movs r0, #0xa0 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x5c + movs r1, #0x3f + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + bx lr + .align 2, 0 +_0812F7F0: .4byte gUnknown_203A800 + thumb_func_end sub_0812F7D0 + + thumb_func_start sub_0812F7F4 +sub_0812F7F4: @ 0x0812F7F4 + push {r4, r5, r6, lr} + bl sub_0812F8B0 + ldr r4, _0812F894 + movs r0, #0xc8 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r1, r0, #0 + str r1, [r4] + ldr r0, _0812F898 + bl sub_08034370 + ldr r4, _0812F89C + movs r0, #0xd8 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r1, r0, #0 + str r1, [r4] + ldr r0, _0812F8A0 + bl sub_08034370 + ldr r4, _0812F8A4 + movs r0, #0xb0 + bl sub_08000BDC + str r0, [r4] + movs r3, #0 + ldr r5, _0812F8A8 + adds r6, r4, #0 +_0812F832: + ldr r2, [r4] + lsls r1, r3, #3 + adds r2, r1, r2 + adds r1, r1, r5 + ldr r0, [r1] + str r0, [r2] + ldrh r0, [r1, #4] + strh r0, [r2, #4] + ldrh r0, [r1, #6] + strh r0, [r2, #6] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x15 + bls _0812F832 + ldr r3, [r6] + adds r2, r3, #0 + adds r2, #0x88 + ldr r0, _0812F894 + ldr r1, [r0] + movs r4, #0xa0 + lsls r4, r4, #4 + adds r0, r1, r4 + str r0, [r2] + adds r2, #8 + movs r4, #0xa0 + lsls r4, r4, #5 + adds r0, r1, r4 + str r0, [r2] + adds r2, #8 + movs r4, #0xb0 + lsls r4, r4, #5 + adds r0, r1, r4 + str r0, [r2] + adds r0, r3, #0 + adds r0, #0xa0 + movs r2, #0xc8 + lsls r2, r2, #5 + adds r1, r1, r2 + str r1, [r0] + adds r0, r3, #0 + bl sub_08008254 + ldr r0, _0812F8AC + bl sub_080084A8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812F894: .4byte gUnknown_203A7A0 +_0812F898: .4byte gUnknown_8585690 +_0812F89C: .4byte gUnknown_203A7A4 +_0812F8A0: .4byte gUnknown_8585DF8 +_0812F8A4: .4byte gUnknown_203A7FC +_0812F8A8: .4byte gUnknown_85852B8 +_0812F8AC: .4byte gUnknown_8585648 + thumb_func_end sub_0812F7F4 + + thumb_func_start sub_0812F8B0 +sub_0812F8B0: @ 0x0812F8B0 + push {r4, r5, r6, lr} + ldr r5, _0812F90C + movs r0, #8 + bl sub_08000BDC + str r0, [r5] + ldr r4, _0812F910 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + str r0, [r4] + adds r3, r0, #0 + movs r1, #0 + adds r6, r4, #0 + ldr r0, _0812F914 + ldr r4, [r0] +_0812F8D2: + movs r2, #0 + adds r1, #1 +_0812F8D6: + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r3] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, #1 + cmp r2, #0x1f + bls _0812F8D6 + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x3f + bls _0812F8D2 + ldr r0, [r5] + ldr r1, [r6] + str r1, [r0] + movs r1, #0x80 + lsls r1, r1, #4 + strh r1, [r0, #4] + movs r1, #0x11 + strh r1, [r0, #6] + bl sub_08008210 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812F90C: .4byte gUnknown_203A7F8 +_0812F910: .4byte gUnknown_203A7AC +_0812F914: .4byte gUnknown_8585368 + thumb_func_end sub_0812F8B0 + + thumb_func_start sub_0812F918 +sub_0812F918: @ 0x0812F918 + push {r4, lr} + ldr r4, _0812F958 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r1, r0, #0 + str r1, [r4] + ldr r0, _0812F95C + bl sub_08034370 + ldr r1, [r4] + movs r2, #0xe9 + lsls r2, r2, #5 + movs r0, #2 + movs r3, #0 + bl sub_0800195C + ldr r0, _0812F960 + movs r1, #0 + movs r2, #0xa0 + bl sub_080A1200 + ldr r0, _0812F964 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812F958: .4byte gUnknown_203A794 +_0812F95C: .4byte gUnknown_8586F4C +_0812F960: .4byte gUnknown_858544C +_0812F964: .4byte gUnknown_8585628 + thumb_func_end sub_0812F918 + + thumb_func_start sub_0812F968 +sub_0812F968: @ 0x0812F968 + push {lr} + bl sub_0812F978 + bl sub_0812F9A4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812F968 + + thumb_func_start sub_0812F978 +sub_0812F978: @ 0x0812F978 + push {r4, lr} + movs r4, #0 +_0812F97C: + lsls r1, r4, #4 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r0, _0812F9A0 + adds r1, r1, r0 + lsls r3, r4, #5 + movs r0, #2 + movs r2, #0x3c + bl sub_08001A14 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _0812F97C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812F9A0: .4byte gUnknown_8587AEC + thumb_func_end sub_0812F978 + + thumb_func_start sub_0812F9A4 +sub_0812F9A4: @ 0x0812F9A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r1, #4 + ldr r0, _0812FA98 + mov r8, r0 +_0812F9B2: + movs r0, #0 + lsls r1, r1, #0x10 + mov sb, r1 +_0812F9B8: + mov r2, r8 + ldr r1, [r2] + mov r2, sb + asrs r6, r2, #0x10 + lsls r4, r0, #0x10 + asrs r4, r4, #0x10 + adds r5, r6, r4 + adds r3, r5, #0 + adds r3, #0xa0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + mov r0, r8 + ldr r1, [r0] + adds r1, #2 + movs r2, #0xd0 + lsls r2, r2, #1 + adds r3, r5, r2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + mov r0, r8 + ldr r1, [r0] + adds r1, #4 + adds r3, r5, #0 + adds r3, #0xc0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + mov r2, r8 + ldr r1, [r2] + adds r1, #6 + movs r0, #0xc0 + lsls r0, r0, #1 + adds r7, r0, #0 + adds r3, r5, r7 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #3 + ble _0812F9B8 + mov r2, r8 + ldr r1, [r2] + adds r1, #8 + adds r3, r6, #0 + adds r3, #0xc0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + mov r0, r8 + ldr r1, [r0] + adds r1, #0xa + adds r3, r6, r7 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + movs r0, #7 +_0812FA56: + mov r2, r8 + ldr r1, [r2] + adds r1, #0xc + lsls r4, r0, #0x10 + asrs r4, r4, #0x10 + lsls r3, r4, #5 + mov r0, sb + asrs r5, r0, #0x10 + adds r3, r5, r3 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #3 + movs r2, #2 + bl sub_08001A14 + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #0xb + ble _0812FA56 + adds r0, r5, #5 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x11 + ble _0812F9B2 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FA98: .4byte gUnknown_203A79C + thumb_func_end sub_0812F9A4 + + thumb_func_start sub_0812FA9C +sub_0812FA9C: @ 0x0812FA9C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, [sp, #0x10] + ldr r6, _0812FB0C + ldr r0, [r6] + strh r1, [r0] + ldr r1, [r6] + strh r2, [r1, #2] + strh r3, [r1, #4] + strh r5, [r1, #6] + lsls r4, r4, #0x10 + asrs r5, r4, #0x10 + movs r0, #0xf0 + lsls r0, r0, #0x11 + adds r4, r4, r0 + lsrs r4, r4, #0x10 + movs r0, #2 + movs r2, #2 + adds r3, r4, #0 + bl sub_08001A14 + ldr r1, [r6] + adds r1, #2 + ldr r0, _0812FB10 + adds r3, r5, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + ldr r1, [r6] + adds r1, #4 + movs r0, #0x80 + lsls r0, r0, #2 + adds r3, r5, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #2 + movs r2, #2 + bl sub_08001A14 + ldr r1, [r6] + adds r1, #6 + ldr r0, _0812FB14 + adds r5, r5, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r0, #2 + movs r2, #2 + adds r3, r5, #0 + bl sub_08001A14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FB0C: .4byte gUnknown_203A7A8 +_0812FB10: .4byte 0x000001E1 +_0812FB14: .4byte 0x00000201 + thumb_func_end sub_0812FA9C + + thumb_func_start sub_0812FB18 +sub_0812FB18: @ 0x0812FB18 + push {r4, lr} + movs r4, #0 +_0812FB1C: + lsls r1, r4, #4 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r0, _0812FB48 + adds r1, r1, r0 + lsls r3, r4, #5 + movs r0, #2 + movs r2, #0x3c + bl sub_08001A14 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _0812FB1C + movs r0, #3 + bl sub_08001B5C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0812FB48: .4byte gUnknown_8588154 + thumb_func_end sub_0812FB18 + + thumb_func_start sub_0812FB4C +sub_0812FB4C: @ 0x0812FB4C + ldr r1, _0812FBC0 + ldr r0, _0812FBC4 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0812FBC8 + ldr r0, [r0] + str r0, [r1, #4] + ldr r0, _0812FBCC + ldr r0, [r0] + str r0, [r1, #8] + ldr r0, _0812FBD0 + ldr r0, [r0] + str r0, [r1, #0xc] + ldr r0, _0812FBD4 + ldr r0, [r0] + str r0, [r1, #0x10] + ldr r0, _0812FBD8 + ldr r0, [r0] + str r0, [r1, #0x14] + ldr r0, _0812FBDC + ldr r0, [r0] + str r0, [r1, #0x18] + ldr r0, _0812FBE0 + ldr r0, [r0] + str r0, [r1, #0x1c] + ldr r0, _0812FBE4 + ldr r0, [r0] + str r0, [r1, #0x20] + ldr r0, _0812FBE8 + ldr r0, [r0] + str r0, [r1, #0x24] + ldr r0, _0812FBEC + ldr r0, [r0] + str r0, [r1, #0x28] + str r0, [r1, #0x2c] + str r0, [r1, #0x30] + str r0, [r1, #0x34] + ldr r0, _0812FBF0 + ldr r0, [r0] + str r0, [r1, #0x38] + str r0, [r1, #0x3c] + str r0, [r1, #0x40] + str r0, [r1, #0x44] + str r0, [r1, #0x48] + ldr r0, _0812FBF4 + ldr r0, [r0] + str r0, [r1, #0x4c] + str r0, [r1, #0x50] + str r0, [r1, #0x54] + ldr r0, _0812FBF8 + ldr r0, [r0] + str r0, [r1, #0x58] + str r0, [r1, #0x5c] + str r0, [r1, #0x60] + movs r0, #0 + str r0, [r1, #0x64] + bx lr + .align 2, 0 +_0812FBC0: .4byte gUnknown_3001188 +_0812FBC4: .4byte gUnknown_203A7C0 +_0812FBC8: .4byte gUnknown_203A7C4 +_0812FBCC: .4byte gUnknown_203A7C8 +_0812FBD0: .4byte gUnknown_203A7D0 +_0812FBD4: .4byte gUnknown_203A7D4 +_0812FBD8: .4byte gUnknown_203A7E4 +_0812FBDC: .4byte gUnknown_203A7E8 +_0812FBE0: .4byte gUnknown_203A7EC +_0812FBE4: .4byte gUnknown_203A7F0 +_0812FBE8: .4byte gUnknown_203A7F4 +_0812FBEC: .4byte gUnknown_203A7CC +_0812FBF0: .4byte gUnknown_203A7D8 +_0812FBF4: .4byte gUnknown_203A7DC +_0812FBF8: .4byte gUnknown_203A7E0 + thumb_func_end sub_0812FB4C + + thumb_func_start sub_0812FBFC +sub_0812FBFC: @ 0x0812FBFC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _0812FDA4 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r6, _0812FDA8 + ldr r1, [r6] + str r1, [r0] + movs r5, #0xc0 + lsls r5, r5, #3 + strh r5, [r0, #4] + ldr r4, _0812FDAC + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + adds r1, r1, r5 + str r1, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + mov r8, r1 + mov r2, r8 + strh r2, [r0, #4] + ldr r4, _0812FDB0 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r1, r3 + str r1, [r0] + mov r4, r8 + strh r4, [r0, #4] + ldr r4, _0812FDB4 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r2, #0xa0 + lsls r2, r2, #4 + adds r1, r1, r2 + str r1, [r0] + mov r3, r8 + strh r3, [r0, #4] + ldr r4, _0812FDB8 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r4, #0xc0 + lsls r4, r4, #4 + adds r1, r1, r4 + str r1, [r0] + movs r5, #0xc0 + lsls r5, r5, #2 + strh r5, [r0, #4] + ldr r4, _0812FDBC + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + str r1, [r0] + movs r1, #0x80 + lsls r1, r1, #3 + strh r1, [r0, #4] + ldr r4, _0812FDC0 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r3, #0xa0 + lsls r3, r3, #5 + adds r1, r1, r3 + str r1, [r0] + mov r4, r8 + strh r4, [r0, #4] + ldr r4, _0812FDC4 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r2, #0xb0 + lsls r2, r2, #5 + adds r1, r1, r2 + str r1, [r0] + strh r5, [r0, #4] + ldr r4, _0812FDC8 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r3, #0xc8 + lsls r3, r3, #5 + adds r1, r1, r3 + str r1, [r0] + strh r5, [r0, #4] + ldr r4, _0812FDCC + movs r0, #0x10 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r4, #0xe0 + lsls r4, r4, #5 + adds r2, r1, r4 + str r2, [r0] + mov r2, r8 + strh r2, [r0, #4] + movs r3, #0xf0 + lsls r3, r3, #5 + adds r1, r1, r3 + str r1, [r0, #8] + strh r2, [r0, #0xc] + ldr r4, _0812FDD0 + movs r0, #8 + bl sub_08000BDC + str r0, [r4] + ldr r1, [r6] + movs r4, #0x80 + lsls r4, r4, #6 + adds r1, r1, r4 + str r1, [r0] + movs r1, #0xa0 + lsls r1, r1, #2 + strh r1, [r0, #4] + ldr r4, _0812FDD4 + movs r0, #0x28 + bl sub_08000BDC + str r0, [r4] + ldr r2, [r6] + movs r3, #0x8a + lsls r3, r3, #6 + adds r1, r2, r3 + str r1, [r0] + movs r3, #0x80 + strh r3, [r0, #4] + movs r4, #0x8c + lsls r4, r4, #6 + adds r1, r2, r4 + str r1, [r0, #8] + strh r3, [r0, #0xc] + adds r4, #0x80 + adds r1, r2, r4 + str r1, [r0, #0x10] + strh r3, [r0, #0x14] + adds r4, #0x80 + adds r1, r2, r4 + str r1, [r0, #0x18] + strh r3, [r0, #0x1c] + movs r1, #0x92 + lsls r1, r1, #6 + adds r2, r2, r1 + str r2, [r0, #0x20] + strh r3, [r0, #0x24] + ldr r4, _0812FDD8 + movs r0, #0x10 + bl sub_08000BDC + str r0, [r4] + ldr r2, [r6] + movs r3, #0x98 + lsls r3, r3, #6 + adds r1, r2, r3 + str r1, [r0] + movs r1, #0x90 + lsls r1, r1, #3 + strh r1, [r0, #4] + movs r4, #0xaa + lsls r4, r4, #6 + adds r2, r2, r4 + str r2, [r0, #8] + strh r1, [r0, #0xc] + ldr r4, _0812FDDC + movs r0, #0x10 + bl sub_08000BDC + str r0, [r4] + ldr r2, [r6] + movs r3, #0xbc + lsls r3, r3, #6 + adds r1, r2, r3 + str r1, [r0] + movs r1, #0xc0 + lsls r1, r1, #1 + strh r1, [r0, #4] + movs r4, #0xc2 + lsls r4, r4, #6 + adds r2, r2, r4 + str r2, [r0, #8] + strh r1, [r0, #0xc] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0812FDA4: .4byte gUnknown_203A7C0 +_0812FDA8: .4byte gUnknown_203A7A0 +_0812FDAC: .4byte gUnknown_203A7C4 +_0812FDB0: .4byte gUnknown_203A7C8 +_0812FDB4: .4byte gUnknown_203A7CC +_0812FDB8: .4byte gUnknown_203A7D0 +_0812FDBC: .4byte gUnknown_203A7D4 +_0812FDC0: .4byte gUnknown_203A7D8 +_0812FDC4: .4byte gUnknown_203A7DC +_0812FDC8: .4byte gUnknown_203A7E0 +_0812FDCC: .4byte gUnknown_203A7E4 +_0812FDD0: .4byte gUnknown_203A7E8 +_0812FDD4: .4byte gUnknown_203A7EC +_0812FDD8: .4byte gUnknown_203A7F0 +_0812FDDC: .4byte gUnknown_203A7F4 + thumb_func_end sub_0812FBFC + + thumb_func_start sub_0812FDE0 +sub_0812FDE0: @ 0x0812FDE0 + push {r4, r5, r6, r7, lr} + ldr r3, _0812FE10 + ldr r4, _0812FE14 + ldr r1, _0812FE18 + ldr r2, [r1] + subs r0, #1 + lsls r1, r0, #5 + adds r2, r2, r1 + ldr r1, _0812FE1C + ldr r5, _0812FE20 + adds r2, r2, r5 + ldm r2!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r2!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r2!, {r6, r7} + stm r1!, {r6, r7} + strb r0, [r3] + movs r0, #0 + strb r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FE10: .4byte gUnknown_2039BFD +_0812FE14: .4byte gUnknown_2039BFC +_0812FE18: .4byte gUnknown_3005AEC +_0812FE1C: .4byte gUnknown_2039BDC +_0812FE20: .4byte 0x00002E90 + thumb_func_end sub_0812FDE0 + + thumb_func_start sub_0812FE24 +sub_0812FE24: @ 0x0812FE24 + push {lr} + bl sub_0812FE90 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812FE24 + + thumb_func_start sub_0812FE30 +sub_0812FE30: @ 0x0812FE30 + push {lr} + bl sub_08130000 + bl sub_08004630 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0812FE30 + + thumb_func_start sub_0812FE44 +sub_0812FE44: @ 0x0812FE44 + push {r4, r5, lr} + ldr r0, _0812FE80 + ldr r0, [r0, #8] + bl sub_08000540 + ldr r4, _0812FE84 + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + ldr r4, _0812FE88 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, _0812FE8C + ldrb r0, [r0] + bl sub_08003444 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + bl sub_0805ECB0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0812FE80: .4byte gUnknown_3002360 +_0812FE84: .4byte gUnknown_3005F04 +_0812FE88: .4byte gUnknown_3005ED0 +_0812FE8C: .4byte gUnknown_30011F7 + thumb_func_end sub_0812FE44 + + thumb_func_start sub_0812FE90 +sub_0812FE90: @ 0x0812FE90 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _0812FEB0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #4 + bls _0812FEA6 + b _0812FFD8 +_0812FEA6: + lsls r0, r0, #2 + ldr r1, _0812FEB4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0812FEB0: .4byte gUnknown_3002360 +_0812FEB4: .4byte _0812FEB8 +_0812FEB8: @ jump table + .4byte _0812FECC @ case 0 + .4byte _0812FF00 @ case 1 + .4byte _0812FF4C @ case 2 + .4byte _0812FF62 @ case 3 + .4byte _0812FF8C @ case 4 +_0812FECC: + bl sub_080B9710 + movs r0, #0 + bl sub_080006F0 + bl sub_0805EBD8 + ldr r1, _0812FEF4 + ldr r0, _0812FEF8 + str r0, [r1] + movs r0, #1 + bl sub_08130290 + bl sub_08130244 + ldr r1, _0812FEFC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0812FF76 + .align 2, 0 +_0812FEF4: .4byte gUnknown_3005F00 +_0812FEF8: .4byte gUnknown_2039BDC +_0812FEFC: .4byte gUnknown_3002360 +_0812FF00: + bl sub_080A133C + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0xc0 + lsls r3, r3, #9 + movs r5, #0 + ldr r1, _0812FF44 + movs r4, #0x80 + lsls r4, r4, #5 + ldr r6, _0812FF48 + movs r7, #0x85 + lsls r7, r7, #0x18 +_0812FF1A: + str r5, [sp] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r6, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r4 + subs r3, r3, r4 + cmp r3, r4 + bhi _0812FF1A + str r5, [sp] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #2 + orrs r0, r7 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_0800668C + b _0812FF6E + .align 2, 0 +_0812FF44: .4byte 0x040000D4 +_0812FF48: .4byte 0x85000400 +_0812FF4C: + ldrh r0, [r4, #0x20] + bl sub_0806F07C + bl sub_080005BC + bl sub_081300D0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r4, r0 + b _0812FF76 +_0812FF62: + ldr r0, _0812FF80 + ldrb r0, [r0] + ldr r1, _0812FF84 + ldrb r1, [r1] + bl sub_081308DC +_0812FF6E: + ldr r1, _0812FF88 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_0812FF76: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0812FFD8 + .align 2, 0 +_0812FF80: .4byte gUnknown_2039BFD +_0812FF84: .4byte gUnknown_2039BFC +_0812FF88: .4byte gUnknown_3002360 +_0812FF8C: + ldr r0, _0812FFE0 + ldrb r0, [r0] + ldr r1, _0812FFE4 + ldrb r1, [r1] + bl sub_08130144 + ldr r0, _0812FFE8 + movs r1, #0 + movs r2, #2 + bl sub_080A1200 + movs r1, #0xa0 + lsls r1, r1, #0x13 + movs r4, #0 + str r4, [sp] + ldr r0, _0812FFEC + mov r2, sp + str r2, [r0] + str r1, [r0, #4] + ldr r1, _0812FFF0 + str r1, [r0, #8] + ldr r0, [r0, #8] + movs r0, #2 + bl sub_080A1C58 + ldr r0, _0812FFF4 + bl sub_080006F0 + ldr r0, _0812FFF8 + strb r4, [r0] + movs r1, #0x9a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0812FFFC + bl sub_08000540 +_0812FFD8: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0812FFE0: .4byte gUnknown_2039BFD +_0812FFE4: .4byte gUnknown_2039BFC +_0812FFE8: .4byte gUnknown_858F648 +_0812FFEC: .4byte 0x040000D4 +_0812FFF0: .4byte 0x85000100 +_0812FFF4: .4byte sub_08130328 +_0812FFF8: .4byte gUnknown_30011F0 +_0812FFFC: .4byte sub_0812FE30 + thumb_func_end sub_0812FE90 + + thumb_func_start sub_08130000 +sub_08130000: @ 0x08130000 + push {lr} + sub sp, #4 + ldr r3, _08130018 + ldrb r1, [r3] + cmp r1, #1 + beq _08130054 + cmp r1, #1 + bgt _0813001C + cmp r1, #0 + beq _08130022 + b _081300BA + .align 2, 0 +_08130018: .4byte gUnknown_30011F0 +_0813001C: + cmp r1, #2 + beq _08130094 + b _081300BA +_08130022: + ldr r0, _08130048 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08130032 + movs r0, #1 + strb r0, [r3] +_08130032: + ldr r0, _0813004C + ldrb r0, [r0] + cmp r0, #0 + beq _081300BA + ldr r1, _08130050 + ldrh r0, [r1] + cmp r0, #0 + beq _081300BA + subs r0, #1 + b _081300B8 + .align 2, 0 +_08130048: .4byte gUnknown_2037C74 +_0813004C: .4byte gUnknown_30011F6 +_08130050: .4byte gUnknown_30011F4 +_08130054: + ldr r0, _08130088 + ldrh r2, [r0, #0x2e] + ands r1, r2 + cmp r1, #0 + bne _08130066 + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _08130078 +_08130066: + movs r0, #2 + strb r0, [r3] + subs r0, #3 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_08130078: + ldr r0, _0813008C + ldrb r0, [r0] + cmp r0, #0 + beq _081300BA + ldr r1, _08130090 + movs r0, #0 + b _081300B8 + .align 2, 0 +_08130088: .4byte gUnknown_3002360 +_0813008C: .4byte gUnknown_30011F6 +_08130090: .4byte gUnknown_30011F4 +_08130094: + ldr r0, _081300C0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081300A6 + ldr r0, _081300C4 + bl sub_08000540 +_081300A6: + ldr r0, _081300C8 + ldrb r0, [r0] + cmp r0, #0 + beq _081300BA + ldr r1, _081300CC + ldrh r0, [r1] + cmp r0, #0x1d + bhi _081300BA + adds r0, #1 +_081300B8: + strh r0, [r1] +_081300BA: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081300C0: .4byte gUnknown_2037C74 +_081300C4: .4byte sub_0812FE44 +_081300C8: .4byte gUnknown_30011F6 +_081300CC: .4byte gUnknown_30011F4 + thumb_func_end sub_08130000 + + thumb_func_start sub_081300D0 +sub_081300D0: @ 0x081300D0 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _08130138 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #1 + bl sub_0800212C + ldr r4, _0813013C + ldr r0, _08130140 + bl sub_08003250 + strb r0, [r4] + bl sub_08004480 + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_08001B48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08130138: .4byte gUnknown_858F5F8 +_0813013C: .4byte gUnknown_30011F7 +_08130140: .4byte gUnknown_858F5FC + thumb_func_end sub_081300D0 + + thumb_func_start sub_08130144 +sub_08130144: @ 0x08130144 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _0813022A + ldr r6, _081301C8 + ldr r1, [r6] + ldrb r5, [r1, #0xa] + cmp r0, #7 + bhi _081301F4 + ldr r4, _081301CC + ldr r1, _081301D0 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _081301D4 + adds r0, r4, #0 + bl sub_080088D8 + ldr r1, _081301D8 + adds r0, r4, #0 + bl sub_080088D8 + ldr r1, _081301DC + ldr r0, [r6] + ldrb r0, [r0, #0x1e] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088D8 + ldr r0, _081301E0 + ldr r1, [r6] + adds r1, #0x16 + bl sub_080088B8 + ldr r0, _081301E4 + ldr r1, [r6] + adds r1, #0xb + bl sub_080088B8 + ldr r4, _081301E8 + ldr r1, _081301EC + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _081301F0 + ldrb r0, [r0] + movs r1, #1 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #8 + bl sub_0800449C + b _08130224 + .align 2, 0 +_081301C8: .4byte gUnknown_3005F00 +_081301CC: .4byte gUnknown_2021C40 +_081301D0: .4byte gUnknown_858F5D0 +_081301D4: .4byte gUnknown_824C200 +_081301D8: .4byte gUnknown_85C941F +_081301DC: .4byte gUnknown_858F5E4 +_081301E0: .4byte gUnknown_2021C54 +_081301E4: .4byte gUnknown_2021C68 +_081301E8: .4byte gUnknown_2021C7C +_081301EC: .4byte gUnknown_824C1F5 +_081301F0: .4byte gUnknown_30011F7 +_081301F4: + ldr r0, _08130234 + adds r1, #0xb + bl sub_080088B8 + ldr r4, _08130238 + ldr r1, _0813023C + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08130240 + ldrb r0, [r0] + movs r1, #1 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C +_08130224: + movs r0, #1 + bl sub_08002248 +_0813022A: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08130234: .4byte gUnknown_2021C40 +_08130238: .4byte gUnknown_2021C7C +_0813023C: .4byte gUnknown_858F604 +_08130240: .4byte gUnknown_30011F7 + thumb_func_end sub_08130144 + + thumb_func_start sub_08130244 +sub_08130244: @ 0x08130244 + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r2, _08130284 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + ldr r1, _08130288 + movs r0, #8 + bl sub_08001144 + ldr r1, _0813028C + movs r0, #0xa + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08130284: .4byte 0x04000200 +_08130288: .4byte 0x00000C42 +_0813028C: .4byte 0x00000A45 + thumb_func_end sub_08130244 + + thumb_func_start sub_08130290 +sub_08130290: @ 0x08130290 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081302B4 + ldr r0, _081302A8 + strb r1, [r0] + ldr r0, _081302AC + strh r1, [r0] + ldr r0, _081302B0 + strh r1, [r0] + b _081302C6 + .align 2, 0 +_081302A8: .4byte gUnknown_30011F6 +_081302AC: .4byte gUnknown_30011F2 +_081302B0: .4byte gUnknown_30011F4 +_081302B4: + ldr r1, _081302CC + movs r0, #1 + strb r0, [r1] + ldr r1, _081302D0 + movs r0, #0xf + strh r0, [r1] + ldr r1, _081302D4 + movs r0, #0x1e + strh r0, [r1] +_081302C6: + pop {r0} + bx r0 + .align 2, 0 +_081302CC: .4byte gUnknown_30011F6 +_081302D0: .4byte gUnknown_30011F2 +_081302D4: .4byte gUnknown_30011F4 + thumb_func_end sub_08130290 + + thumb_func_start sub_081302D8 +sub_081302D8: @ 0x081302D8 + push {lr} + ldr r0, _081302EC + ldrb r0, [r0] + cmp r0, #0 + bne _081302F0 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + b _08130318 + .align 2, 0 +_081302EC: .4byte gUnknown_30011F6 +_081302F0: + ldr r1, _0813031C + movs r0, #0xa + bl sub_08001144 + ldr r1, _08130320 + ldr r0, _08130324 + ldrh r0, [r0] + lsrs r0, r0, #1 + strh r0, [r1] + lsls r1, r0, #0xc + lsls r2, r0, #8 + orrs r1, r2 + lsls r2, r0, #4 + orrs r1, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 +_08130318: + pop {r0} + bx r0 + .align 2, 0 +_0813031C: .4byte 0x00000A45 +_08130320: .4byte gUnknown_30011F2 +_08130324: .4byte gUnknown_30011F4 + thumb_func_end sub_081302D8 + + thumb_func_start sub_08130328 +sub_08130328: @ 0x08130328 + push {lr} + bl sub_081302D8 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08130328 + + thumb_func_start sub_08130340 +sub_08130340: @ 0x08130340 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _0813038C + ldr r0, [r6] + ldr r1, [r0, #4] + ldr r2, [r0] + adds r0, r5, #0 + bl sub_0806E1CC + ldr r7, _08130390 + ldr r1, [r7] + bl sub_0803437C + cmp r4, #0 + bne _081303A0 + lsls r0, r5, #3 + ldr r1, _08130394 + adds r0, r0, r1 + ldr r4, _08130398 + ldr r1, [r4] + ldr r1, [r1, #8] + ldr r2, [r6] + ldr r3, [r2] + adds r2, r5, #0 + bl sub_080349A8 + ldr r0, [r4] + ldr r0, [r0, #8] + ldr r1, [r7] + ldr r2, _0813039C + ldr r2, [r2] + bl sub_081303D8 + b _081303C4 + .align 2, 0 +_0813038C: .4byte gUnknown_3005F00 +_08130390: .4byte gUnknown_3005F04 +_08130394: .4byte gUnknown_82DDA1C +_08130398: .4byte gUnknown_2024178 +_0813039C: .4byte gUnknown_3005ED0 +_081303A0: + lsls r0, r5, #3 + ldr r1, _081303CC + adds r0, r0, r1 + ldr r4, _081303D0 + ldr r1, [r4] + ldr r1, [r1, #4] + ldr r2, [r6] + ldr r3, [r2] + adds r2, r5, #0 + bl sub_080349A8 + ldr r0, [r4] + ldr r0, [r0, #4] + ldr r1, [r7] + ldr r2, _081303D4 + ldr r2, [r2] + bl sub_081303D8 +_081303C4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081303CC: .4byte gUnknown_82D6148 +_081303D0: .4byte gUnknown_2024178 +_081303D4: .4byte gUnknown_3005ED0 + thumb_func_end sub_08130340 + + thumb_func_start sub_081303D8 +sub_081303D8: @ 0x081303D8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov sl, r0 + mov sb, r1 + str r2, [sp] + movs r0, #0 +_081303EC: + movs r3, #0 + adds r1, r0, #1 + str r1, [sp, #4] + lsls r0, r0, #3 + str r0, [sp, #8] +_081303F6: + movs r1, #0 + adds r2, r3, #1 + mov r8, r2 + ldr r7, [sp, #8] + adds r0, r7, r3 + lsls r0, r0, #5 + mov ip, r0 + lsls r4, r3, #3 +_08130406: + movs r3, #0 + lsls r0, r1, #2 + adds r6, r1, #1 + mov r2, ip + adds r5, r2, r0 + ldr r7, [sp, #8] + adds r0, r7, r1 + lsls r0, r0, #7 + ldr r1, [sp] + adds r2, r0, r1 +_0813041A: + lsrs r0, r3, #1 + adds r0, r5, r0 + add r0, sl + ldrb r1, [r0] + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _0813042E + lsrs r1, r1, #4 + b _08130432 +_0813042E: + movs r0, #0xf + ands r1, r0 +_08130432: + cmp r1, #0 + bne _08130444 + adds r0, r4, r3 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r7, #0x80 + lsls r7, r7, #8 + adds r1, r7, #0 + b _08130450 +_08130444: + adds r0, r4, r3 + lsls r0, r0, #1 + adds r0, r0, r2 + lsls r1, r1, #1 + add r1, sb + ldrh r1, [r1] +_08130450: + strh r1, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #7 + bls _0813041A + lsls r0, r6, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #7 + bls _08130406 + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #7 + bls _081303F6 + ldr r2, [sp, #4] + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #7 + bls _081303EC + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081303D8 + + thumb_func_start sub_08130488 +sub_08130488: @ 0x08130488 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081304C4 + movs r2, #0x80 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A1200 + cmp r4, #1 + beq _081304A6 + b _081305FC +_081304A6: + ldr r0, _081304C8 + ldr r0, [r0] + ldrb r0, [r0, #0xa] + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _08130564 + lsls r0, r0, #2 + ldr r1, _081304CC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081304C4: .4byte gUnknown_85886AC +_081304C8: .4byte gUnknown_3005F00 +_081304CC: .4byte _081304D0 +_081304D0: @ jump table + .4byte _081304E4 @ case 0 + .4byte _081304FC @ case 1 + .4byte _08130514 @ case 2 + .4byte _0813052C @ case 3 + .4byte _08130550 @ case 4 +_081304E4: + ldr r0, _081304F4 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _081304F8 + b _08130538 + .align 2, 0 +_081304F4: .4byte gUnknown_85888AC +_081304F8: .4byte gUnknown_858D784 +_081304FC: + ldr r0, _0813050C + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130510 + b _08130538 + .align 2, 0 +_0813050C: .4byte gUnknown_8589930 +_08130510: .4byte gUnknown_858DC90 +_08130514: + ldr r0, _08130524 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130528 + b _08130538 + .align 2, 0 +_08130524: .4byte gUnknown_858A560 +_08130528: .4byte gUnknown_858E19C +_0813052C: + ldr r0, _08130544 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130548 +_08130538: + ldr r1, _0813054C + ldr r1, [r1] + bl RLUnCompWram + b _08130564 + .align 2, 0 +_08130544: .4byte gUnknown_858B098 +_08130548: .4byte gUnknown_858E6A8 +_0813054C: .4byte gUnknown_3005ED0 +_08130550: + ldr r0, _081305E0 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _081305E4 + ldr r1, _081305E8 + ldr r1, [r1] + bl RLUnCompWram +_08130564: + movs r1, #0 + ldr r5, _081305EC + ldr r0, _081305F0 + adds r4, r0, #0 +_0813056C: + movs r3, #0 + lsls r2, r1, #5 +_08130570: + adds r0, r2, r3 + lsls r0, r0, #1 + adds r0, r0, r5 + strh r4, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x1f + bls _08130570 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x13 + bls _0813056C + movs r1, #0 + ldr r0, _081305F4 + mov ip, r0 + ldr r7, _081305E8 +_08130594: + movs r3, #0 + adds r6, r1, #1 + lsls r5, r1, #5 + lsls r4, r1, #6 +_0813059C: + adds r2, r5, r3 + lsls r2, r2, #1 + add r2, ip + ldr r0, [r7] + adds r0, r4, r0 + lsls r1, r3, #1 + adds r0, r0, r1 + adds r0, #0x8c + ldrh r0, [r0] + strh r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x11 + bls _0813059C + lsls r0, r6, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _08130594 + movs r3, #0 + ldr r4, _081305F8 + ldr r2, _081305E8 +_081305C8: + lsls r1, r3, #1 + adds r1, r1, r4 + ldr r0, [r2] + adds r0, #0x8e + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _081305C8 + b _081306CE + .align 2, 0 +_081305E0: .4byte gUnknown_858C050 +_081305E4: .4byte gUnknown_858EBB4 +_081305E8: .4byte gUnknown_3005ED0 +_081305EC: .4byte 0x06006000 +_081305F0: .4byte 0x00001015 +_081305F4: .4byte 0x0600608C +_081305F8: .4byte 0x0600608E +_081305FC: + cmp r5, #7 + bhi _08130618 + ldr r0, _08130610 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130614 + b _081306A8 + .align 2, 0 +_08130610: .4byte gUnknown_858D180 +_08130614: .4byte gUnknown_858F0C0 +_08130618: + ldr r0, _08130638 + ldr r0, [r0] + ldrb r0, [r0, #0xa] + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _081306CE + lsls r0, r0, #2 + ldr r1, _0813063C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08130638: .4byte gUnknown_3005F00 +_0813063C: .4byte _08130640 +_08130640: @ jump table + .4byte _08130654 @ case 0 + .4byte _0813066C @ case 1 + .4byte _08130684 @ case 2 + .4byte _0813069C @ case 3 + .4byte _081306BC @ case 4 +_08130654: + ldr r0, _08130664 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130668 + b _081306A8 + .align 2, 0 +_08130664: .4byte gUnknown_85888AC +_08130668: .4byte gUnknown_858D784 +_0813066C: + ldr r0, _0813067C + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130680 + b _081306A8 + .align 2, 0 +_0813067C: .4byte gUnknown_8589930 +_08130680: .4byte gUnknown_858DC90 +_08130684: + ldr r0, _08130694 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _08130698 + b _081306A8 + .align 2, 0 +_08130694: .4byte gUnknown_858A560 +_08130698: .4byte gUnknown_858E19C +_0813069C: + ldr r0, _081306B0 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _081306B4 +_081306A8: + ldr r1, _081306B8 + bl RLUnCompVram + b _081306CE + .align 2, 0 +_081306B0: .4byte gUnknown_858B098 +_081306B4: .4byte gUnknown_858E6A8 +_081306B8: .4byte 0x06006000 +_081306BC: + ldr r0, _081306D4 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl RLUnCompVram + ldr r0, _081306D8 + ldr r1, _081306DC + bl RLUnCompVram +_081306CE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081306D4: .4byte gUnknown_858C050 +_081306D8: .4byte gUnknown_858EBB4 +_081306DC: .4byte 0x06006000 + thumb_func_end sub_08130488 + + thumb_func_start sub_081306E0 +sub_081306E0: @ 0x081306E0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08130714 + ldr r1, _08130718 + ldr r2, [r1, #4] + ldr r1, [r1] + str r1, [r3, #0x38] + str r2, [r3, #0x3c] + ldrh r2, [r3, #0x3c] + ldr r1, _0813071C + ands r1, r2 + strh r1, [r3, #0x3c] + ldrh r1, [r3, #0x3a] + ldr r0, _08130720 + ands r0, r1 + movs r1, #0x58 + orrs r0, r1 + strh r0, [r3, #0x3a] + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #0x18 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08130714: .4byte gUnknown_3002360 +_08130718: .4byte gUnknown_858F640 +_0813071C: .4byte 0xFFFFFC00 +_08130720: .4byte 0xFFFFFE00 + thumb_func_end sub_081306E0 + + thumb_func_start sub_08130724 +sub_08130724: @ 0x08130724 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bhi _0813073C + ldr r0, _08130738 + ldr r0, [r0] + ldrb r0, [r0, #0xa] + b _0813074C + .align 2, 0 +_08130738: .4byte gUnknown_3005F00 +_0813073C: + ldr r0, _0813075C + ldr r0, [r0] + ldrb r0, [r0, #0xa] + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0813074C: + cmp r0, #4 + bhi _0813078A + lsls r0, r0, #2 + ldr r1, _08130760 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813075C: .4byte gUnknown_3005F00 +_08130760: .4byte _08130764 +_08130764: @ jump table + .4byte _08130778 @ case 0 + .4byte _0813077C @ case 1 + .4byte _08130780 @ case 2 + .4byte _08130784 @ case 3 + .4byte _08130788 @ case 4 +_08130778: + movs r0, #9 + b _0813078A +_0813077C: + movs r0, #0xd + b _0813078A +_08130780: + movs r0, #2 + b _0813078A +_08130784: + movs r0, #0x24 + b _0813078A +_08130788: + movs r0, #6 +_0813078A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08130724 + + thumb_func_start sub_08130790 +sub_08130790: @ 0x08130790 + push {r4, lr} + ldr r4, _081307B0 + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + ldr r4, _081307B4 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081307B0: .4byte gUnknown_3005F04 +_081307B4: .4byte gUnknown_3005ED0 + thumb_func_end sub_08130790 + + thumb_func_start sub_081307B8 +sub_081307B8: @ 0x081307B8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _081307F8 + ldr r0, _081307FC + ldr r0, [r0] + str r0, [r1, #4] + ldr r0, _08130800 + ldr r0, [r0] + str r0, [r1, #8] + movs r2, #0 + strb r2, [r1, #0x18] + ldr r0, _08130804 + ldr r0, [r0] + ldrb r0, [r0] + strb r0, [r1, #0x1f] + strb r2, [r1, #0x19] + strb r2, [r1, #0x1a] + movs r0, #0x40 + strb r0, [r1, #0x1b] + strb r0, [r1, #0x1c] + strb r0, [r1, #0x1d] + strb r0, [r1, #0x1e] + subs r0, r3, #2 + adds r4, r1, #0 + cmp r0, #0x22 + bhi _0813089C + lsls r0, r0, #2 + ldr r1, _08130808 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081307F8: .4byte gUnknown_3005EE0 +_081307FC: .4byte gUnknown_3005ED0 +_08130800: .4byte gUnknown_3005F04 +_08130804: .4byte gUnknown_3005F00 +_08130808: .4byte _0813080C +_0813080C: @ jump table + .4byte _0813089C @ case 0 + .4byte _0813089C @ case 1 + .4byte _0813089C @ case 2 + .4byte _0813089C @ case 3 + .4byte _08130898 @ case 4 + .4byte _0813089C @ case 5 + .4byte _0813089C @ case 6 + .4byte _0813089C @ case 7 + .4byte _0813089C @ case 8 + .4byte _0813089C @ case 9 + .4byte _0813089C @ case 10 + .4byte _0813089C @ case 11 + .4byte _0813089C @ case 12 + .4byte _0813089C @ case 13 + .4byte _0813089C @ case 14 + .4byte _0813089C @ case 15 + .4byte _0813089C @ case 16 + .4byte _0813089C @ case 17 + .4byte _0813089C @ case 18 + .4byte _0813089C @ case 19 + .4byte _0813089C @ case 20 + .4byte _0813089C @ case 21 + .4byte _0813089C @ case 22 + .4byte _0813089C @ case 23 + .4byte _0813089C @ case 24 + .4byte _0813089C @ case 25 + .4byte _0813089C @ case 26 + .4byte _0813089C @ case 27 + .4byte _0813089C @ case 28 + .4byte _0813089C @ case 29 + .4byte _0813089C @ case 30 + .4byte _0813089C @ case 31 + .4byte _0813089C @ case 32 + .4byte _0813089C @ case 33 + .4byte _08130898 @ case 34 +_08130898: + movs r0, #3 + b _0813089E +_0813089C: + movs r0, #1 +_0813089E: + strh r0, [r4, #0x14] + movs r0, #2 + strh r0, [r4, #0x16] + strb r3, [r4] + ldr r0, _081308D4 + str r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08124F14 + adds r0, r4, #0 + bl sub_0812618C + adds r0, r4, #0 + bl sub_08126040 + ldr r0, _081308D8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x80 + lsls r2, r2, #2 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081308D4: .4byte 0x06010000 +_081308D8: .4byte gUnknown_3005F04 + thumb_func_end sub_081307B8 + + thumb_func_start sub_081308DC +sub_081308DC: @ 0x081308DC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_08130790 + ldr r0, _0813091C + ldr r0, [r0] + ldrh r0, [r0, #8] + movs r1, #0 + bl sub_08130340 + adds r0, r4, #0 + bl sub_08130724 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081307B8 + adds r0, r4, #0 + bl sub_081306E0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08130488 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813091C: .4byte gUnknown_3005F00 + thumb_func_end sub_081308DC + + thumb_func_start sub_08130920 +sub_08130920: @ 0x08130920 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08130990 + ldr r0, [r1] + ldr r3, [r0, #0x18] + movs r4, #0 + mov ip, r1 + ldr r2, _08130994 + movs r1, #0 +_08130934: + adds r0, r3, r4 + strb r1, [r0] + adds r4, #1 + cmp r4, #0x53 + bls _08130934 + ldr r0, [r2] + ldr r1, _08130998 + ands r0, r1 + cmp r0, #8 + bne _08130982 + movs r4, #0 + ldr r6, _0813099C + ldr r5, _081309A0 +_0813094E: + lsls r1, r4, #1 + ldrh r0, [r6] + lsls r0, r0, #5 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r3, [r1] + cmp r3, #0 + beq _0813097C + mov r0, ip + ldr r2, [r0] + ldr r1, [r2, #0x18] + adds r0, r1, #0 + adds r0, #0x50 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #0x48 + adds r1, r1, r0 + strh r3, [r1] + ldr r1, [r2, #0x18] + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0813097C: + adds r4, #1 + cmp r4, #3 + ble _0813094E +_08130982: + adds r0, r7, #0 + bl sub_081309A4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08130990: .4byte gUnknown_202414C +_08130994: .4byte gUnknown_2022C90 +_08130998: .4byte 0x0A7F098A +_0813099C: .4byte gUnknown_203886A +_081309A0: .4byte gUnknown_82E3846 + thumb_func_end sub_08130920 + + thumb_func_start sub_081309A4 +sub_081309A4: @ 0x081309A4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081309DC + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r4, #0 + ldr r6, _081309E0 + movs r3, #0 +_081309B6: + adds r0, r1, r4 + strb r3, [r0] + adds r4, #1 + cmp r4, #0x1b + bls _081309B6 + movs r4, #0 + ldr r3, _081309DC + movs r5, #1 +_081309C6: + adds r1, r2, #0 + ands r1, r5 + cmp r1, #0 + beq _081309E4 + ldr r0, [r3] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r0, r0, r4 + movs r1, #0x64 + b _081309EC + .align 2, 0 +_081309DC: .4byte gUnknown_202414C +_081309E0: .4byte gUnknown_2023D08 +_081309E4: + ldr r0, [r3] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r0, r0, r4 +_081309EC: + strb r1, [r0] + lsrs r2, r2, #1 + adds r4, #1 + cmp r4, #3 + ble _081309C6 + ldrb r0, [r6] + movs r1, #0 + movs r2, #0xff + bl sub_0803FB0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + ldr r5, _08130A98 +_08130A08: + ldr r7, _08130A9C + lsls r0, r4, #2 + adds r0, r0, r7 + ldr r0, [r0] + ands r0, r6 + cmp r0, #0 + beq _08130A22 + ldr r0, [r5] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r0, r0, r4 + movs r1, #0 + strb r1, [r0] +_08130A22: + bl sub_0806F050 + ldr r1, [r5] + ldr r2, [r1, #0x14] + adds r2, #0x18 + adds r2, r2, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + movs r1, #0x64 + subs r1, r1, r0 + strb r1, [r2] + adds r4, #1 + cmp r4, #3 + ble _08130A08 + ldr r0, _08130A98 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + adds r0, #0x20 + movs r1, #0 + strb r1, [r0] + ldr r0, _08130AA0 + ldr r6, _08130AA4 + ldrb r2, [r6] + strb r2, [r0] + ldr r0, _08130AA8 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08130AB4 + ldr r5, _08130AAC + bl sub_0806F050 + adds r4, r0, #0 + ldrb r0, [r6] + bl sub_080A62F8 + movs r3, #2 + adds r1, r3, #0 + ands r1, r4 + movs r2, #1 + eors r0, r2 + adds r1, r1, r0 + strb r1, [r5] + ldr r0, _08130AB0 + ldrb r1, [r0] + ldrb r2, [r5] + lsls r0, r2, #2 + adds r0, r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08130ABC + eors r2, r3 + strb r2, [r5] + b _08130ABC + .align 2, 0 +_08130A98: .4byte gUnknown_202414C +_08130A9C: .4byte gUnknown_82FACB4 +_08130AA0: .4byte gUnknown_203A808 +_08130AA4: .4byte gUnknown_2023D08 +_08130AA8: .4byte gUnknown_2022C90 +_08130AAC: .4byte gUnknown_2023EB0 +_08130AB0: .4byte gUnknown_2023EB4 +_08130AB4: + ldr r0, _08130AD0 + movs r1, #1 + eors r1, r2 + strb r1, [r0] +_08130ABC: + ldr r0, _08130AD4 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08130AD8 + bl sub_08186190 + b _08130B3A + .align 2, 0 +_08130AD0: .4byte gUnknown_2023EB0 +_08130AD4: .4byte gUnknown_2022C90 +_08130AD8: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08130AF4 + ldr r0, _08130AF0 + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0x80 + lsls r0, r0, #0x17 + str r0, [r1, #0xc] + b _08130BBA + .align 2, 0 +_08130AF0: .4byte gUnknown_202414C +_08130AF4: + movs r0, #0x80 + lsls r0, r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08130B10 + ldr r0, _08130B0C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0x80 + lsls r0, r0, #0x16 + str r0, [r1, #0xc] + b _08130BBA + .align 2, 0 +_08130B0C: .4byte gUnknown_202414C +_08130B10: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08130B2C + ldr r0, _08130B28 + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0x80 + lsls r0, r0, #0x18 + str r0, [r1, #0xc] + b _08130BBA + .align 2, 0 +_08130B28: .4byte gUnknown_202414C +_08130B2C: + movs r0, #0x80 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _08130B48 + bl sub_081A6D4C +_08130B3A: + ldr r1, _08130B44 + ldr r1, [r1] + ldr r1, [r1, #0x14] + str r0, [r1, #0xc] + b _08130BBA + .align 2, 0 +_08130B44: .4byte gUnknown_202414C +_08130B48: + ldr r0, _08130B5C + ands r0, r1 + cmp r0, #0 + beq _08130B64 + ldr r0, _08130B60 + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #7 + str r0, [r1, #0xc] + b _08130BBA + .align 2, 0 +_08130B5C: .4byte 0x0C3F0900 +_08130B60: .4byte gUnknown_202414C +_08130B64: + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08130BA4 + ldr r0, _08130B94 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08130B98 + ldr r0, _08130B9C + ldrh r1, [r0] + lsls r1, r1, #5 + adds r2, #0x14 + adds r1, r1, r2 + ldr r0, _08130BA0 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r2 + ldr r1, [r1] + ldr r0, [r0] + orrs r1, r0 + str r1, [r3, #0xc] + b _08130BBA + .align 2, 0 +_08130B94: .4byte gUnknown_202414C +_08130B98: .4byte gUnknown_82E383C +_08130B9C: .4byte gUnknown_203886A +_08130BA0: .4byte gUnknown_203886C +_08130BA4: + ldr r0, _08130BDC + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _08130BE0 + ldr r0, _08130BE4 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r1, #0x14 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2, #0xc] +_08130BBA: + ldr r0, _08130BE8 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08130BD4 + ldr r0, _08130BDC + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r0, [r2, #0xc] + movs r1, #0x80 + orrs r0, r1 + str r0, [r2, #0xc] +_08130BD4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08130BDC: .4byte gUnknown_202414C +_08130BE0: .4byte gUnknown_82E383C +_08130BE4: .4byte gUnknown_203886A +_08130BE8: .4byte gUnknown_2022C90 + thumb_func_end sub_081309A4 + + thumb_func_start sub_08130BEC +sub_08130BEC: @ 0x08130BEC + push {lr} + ldr r0, _08130C00 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08130C04 + bl sub_08130D28 + b _08130C08 + .align 2, 0 +_08130C00: .4byte gUnknown_2022C90 +_08130C04: + bl sub_08130C10 +_08130C08: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_08130BEC + + thumb_func_start sub_08130C10 +sub_08130C10: @ 0x08130C10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + bl sub_081310A8 + ldr r1, _08130C78 + ldr r0, [r1] + ldr r0, [r0, #0x14] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _08130C60 + adds r4, r1, #0 + movs r5, #0 +_08130C2C: + ldr r0, [r4] + ldr r2, [r0, #0x14] + ldr r0, [r2, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08130C40 + strb r5, [r2] + bl sub_08130F7C +_08130C40: + ldr r0, [r4] + ldr r1, [r0, #0x14] + ldr r0, [r1, #0xc] + lsrs r0, r0, #1 + str r0, [r1, #0xc] + ldrb r0, [r1, #0x11] + adds r0, #1 + strb r0, [r1, #0x11] + ldr r0, [r4] + ldr r0, [r0, #0x14] + strb r5, [r0, #1] + ldr r0, [r4] + ldr r0, [r0, #0x14] + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _08130C2C +_08130C60: + ldr r1, _08130C78 + ldr r0, [r1] + ldr r3, [r0, #0x14] + ldrb r2, [r3, #0x10] + movs r0, #2 + ands r0, r2 + mov ip, r1 + cmp r0, #0 + beq _08130C7C + movs r0, #4 + b _08130D14 + .align 2, 0 +_08130C78: .4byte gUnknown_202414C +_08130C7C: + movs r0, #4 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08130C8C + movs r0, #5 + b _08130D14 +_08130C8C: + movs r6, #1 + mov r1, sp + ldrb r0, [r3, #4] + strb r0, [r1] + add r0, sp, #4 + strb r2, [r0] + movs r3, #1 + mov r8, r0 + ldr r1, _08130D20 + ldr r0, _08130D24 + ldrb r2, [r0] + mov r5, sp + mov r7, r8 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r1, r0 + adds r4, r1, #0 + adds r4, #0xe +_08130CB0: + ldrh r0, [r4] + cmp r0, #0 + beq _08130CFA + ldrb r1, [r5] + mov r2, ip + ldr r0, [r2] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r2, r0, r3 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _08130CDE + mov r0, sp + adds r1, r0, r6 + ldrb r0, [r2] + strb r0, [r1] + adds r1, r6, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r1, r7, r1 + strb r3, [r1] +_08130CDE: + ldrb r1, [r5] + mov r2, ip + ldr r0, [r2] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r2, r0, r3 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bge _08130CFA + movs r6, #1 + ldrb r0, [r2] + strb r0, [r5] + strb r3, [r7] +_08130CFA: + adds r4, #2 + adds r3, #1 + cmp r3, #3 + ble _08130CB0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + add r0, r8 + ldrb r0, [r0] +_08130D14: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08130D20: .4byte gUnknown_2023D28 +_08130D24: .4byte gUnknown_203A808 + thumb_func_end sub_08130C10 + + thumb_func_start sub_08130D28 +sub_08130D28: @ 0x08130D28 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + movs r0, #0 + mov r8, r0 + mov r1, sp + adds r1, #0xc + str r1, [sp, #0x1c] + mov r2, sp + adds r2, #8 + str r2, [sp, #0x18] + str r1, [sp, #0x20] + mov sl, sp +_08130D48: + ldr r0, _08130D70 + ldrb r0, [r0] + cmp r8, r0 + beq _08130D62 + movs r0, #0x58 + mov r7, r8 + muls r7, r0, r7 + adds r0, r7, #0 + ldr r1, _08130D74 + adds r0, r0, r1 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08130D7C +_08130D62: + movs r0, #0xff + ldr r2, [sp, #0x20] + strb r0, [r2] + ldr r0, _08130D78 + mov r7, sl + strh r0, [r7] + b _08130EE2 + .align 2, 0 +_08130D70: .4byte gUnknown_203A808 +_08130D74: .4byte gUnknown_2023D28 +_08130D78: .4byte 0x0000FFFF +_08130D7C: + ldr r0, _08130D9C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _08130DA4 + ldr r0, _08130DA0 + ldr r0, [r0] + adds r0, #0x92 + ldrb r0, [r0] + lsrs r0, r0, #4 + bl sub_081309A4 + b _08130DAA + .align 2, 0 +_08130D9C: .4byte gUnknown_2022C90 +_08130DA0: .4byte gUnknown_2024140 +_08130DA4: + movs r0, #0xf + bl sub_081309A4 +_08130DAA: + ldr r0, _08130E24 + mov r1, r8 + strb r1, [r0] + movs r1, #1 + mov r2, r8 + ands r2, r1 + ldr r0, _08130E28 + ldrb r0, [r0] + ands r1, r0 + cmp r2, r1 + beq _08130DC4 + bl sub_081310A8 +_08130DC4: + ldr r2, _08130E2C + ldr r0, [r2] + ldr r0, [r0, #0x14] + movs r1, #0 + strb r1, [r0, #0x11] + ldr r0, [r2] + ldr r0, [r0, #0x14] + strb r1, [r0, #1] + ldr r0, [r2] + ldr r0, [r0, #0x14] + ldr r4, [r0, #0xc] + mov sb, r2 + cmp r4, #0 + beq _08130E0C + mov r5, sb + movs r6, #0 +_08130DE4: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08130DF6 + ldr r0, [r5] + ldr r0, [r0, #0x14] + strb r6, [r0] + bl sub_08130F7C +_08130DF6: + asrs r4, r4, #1 + ldr r0, [r5] + ldr r1, [r0, #0x14] + ldrb r0, [r1, #0x11] + adds r0, #1 + strb r0, [r1, #0x11] + ldr r0, [r5] + ldr r0, [r0, #0x14] + strb r6, [r0, #1] + cmp r4, #0 + bne _08130DE4 +_08130E0C: + mov r2, sb + ldr r0, [r2] + ldr r3, [r0, #0x14] + ldrb r1, [r3, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08130E30 + movs r0, #4 + ldr r7, [sp, #0x20] + strb r0, [r7] + b _08130EE2 + .align 2, 0 +_08130E24: .4byte gUnknown_2023EB0 +_08130E28: .4byte gUnknown_203A808 +_08130E2C: .4byte gUnknown_202414C +_08130E30: + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08130E44 + movs r0, #5 + ldr r1, [sp, #0x20] + strb r0, [r1] + b _08130EE2 +_08130E44: + add r1, sp, #0x10 + ldrb r0, [r3, #4] + strb r0, [r1] + add r0, sp, #0x14 + strb r2, [r0] + movs r5, #1 + movs r3, #1 + adds r6, r1, #0 + ldr r0, _08130F6C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + ldr r2, _08130F70 + adds r0, r0, r2 + adds r4, r0, #2 + add r7, sp, #0x14 +_08130E64: + ldrh r0, [r4] + cmp r0, #0 + beq _08130EA6 + ldrb r1, [r6] + mov r2, sb + ldr r0, [r2] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r2, r0, r3 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _08130E8A + adds r0, r6, r5 + ldrb r1, [r2] + strb r1, [r0] + adds r0, r7, r5 + strb r3, [r0] + adds r5, #1 +_08130E8A: + ldrb r1, [r6] + mov r2, sb + ldr r0, [r2] + ldr r0, [r0, #0x14] + adds r0, #4 + adds r2, r0, r3 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bge _08130EA6 + ldrb r0, [r2] + strb r0, [r6] + strb r3, [r7] + movs r5, #1 +_08130EA6: + adds r4, #2 + adds r3, #1 + cmp r3, #3 + ble _08130E64 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + add r0, sp + adds r0, #0x14 + ldrb r0, [r0] + ldr r7, [sp, #0x20] + strb r0, [r7] + ldrb r2, [r6] + mov r0, sl + strh r2, [r0] + ldr r0, _08130F6C + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 + cmp r8, r0 + bne _08130EE2 + cmp r2, #0x63 + bgt _08130EE2 + ldr r0, _08130F74 + mov r1, sl + strh r0, [r1] +_08130EE2: + ldr r2, [sp, #0x20] + adds r2, #1 + str r2, [sp, #0x20] + movs r7, #2 + add sl, r7 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #3 + bgt _08130EF8 + b _08130D48 +_08130EF8: + mov r0, sp + ldrh r5, [r0] + movs r0, #0 + ldr r2, [sp, #0x18] + strb r0, [r2] + movs r4, #1 + mov r8, r4 + ldr r6, _08130F78 + ldr r3, [sp, #0x18] + mov r1, sp + adds r1, #2 +_08130F0E: + lsls r0, r5, #0x10 + asrs r2, r0, #0x10 + movs r7, #0 + ldrsh r0, [r1, r7] + cmp r2, r0 + bne _08130F22 + adds r0, r3, r4 + mov r7, r8 + strb r7, [r0] + adds r4, #1 +_08130F22: + movs r7, #0 + ldrsh r0, [r1, r7] + cmp r2, r0 + bge _08130F32 + ldrh r5, [r1] + mov r0, r8 + strb r0, [r3] + movs r4, #1 +_08130F32: + adds r1, #2 + movs r2, #1 + add r8, r2 + mov r7, r8 + cmp r7, #3 + ble _08130F0E + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + ldr r1, [sp, #0x18] + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r6] + ldrb r0, [r6] + ldr r2, [sp, #0x1c] + adds r0, r2, r0 + ldrb r0, [r0] + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08130F6C: .4byte gUnknown_203A808 +_08130F70: .4byte gUnknown_2023D34 +_08130F74: .4byte 0x0000FFFF +_08130F78: .4byte gUnknown_2023EB0 + thumb_func_end sub_08130D28 + + thumb_func_start sub_08130F7C +sub_08130F7C: @ 0x08130F7C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r7, _08130FF4 + ldr r0, [r7] + ldr r0, [r0, #0x14] + ldrb r0, [r0] + adds r6, r7, #0 + cmp r0, #2 + bne _08130F94 + b _0813109A +_08130F94: + mov sb, r7 + ldr r0, _08130FF8 + mov r8, r0 +_08130F9A: + mov r1, sb + ldr r0, [r1] + ldr r2, [r0, #0x14] + ldrb r0, [r2] + cmp r0, #1 + beq _08131008 + cmp r0, #1 + bgt _0813108E + cmp r0, #0 + bne _0813108E + ldr r1, _08130FFC + ldrb r0, [r2, #0x11] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + mov r1, r8 + str r0, [r1] + ldr r5, _08131000 + ldrb r4, [r2, #1] + ldr r0, _08131004 + ldrb r1, [r0] + movs r0, #0x58 + adds r3, r1, #0 + muls r3, r0, r3 + adds r0, r4, r3 + adds r1, r5, #0 + adds r1, #0x24 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08130FE4 + lsls r0, r4, #1 + adds r0, r0, r3 + adds r1, r5, #0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] +_08130FE4: + strh r0, [r2, #2] + ldr r0, [r6] + ldr r1, [r0, #0x14] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0813108E + .align 2, 0 +_08130FF4: .4byte gUnknown_202414C +_08130FF8: .4byte gUnknown_203A804 +_08130FFC: .4byte gUnknown_828A480 +_08131000: .4byte gUnknown_2023D28 +_08131004: .4byte gUnknown_203A808 +_08131008: + ldrh r1, [r2, #2] + cmp r1, #0 + beq _08131028 + ldr r1, _08131024 + mov r2, r8 + ldr r0, [r2] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _0813103E + .align 2, 0 +_08131024: .4byte gUnknown_858F64C +_08131028: + adds r0, r2, #4 + ldrb r2, [r2, #1] + adds r0, r0, r2 + strb r1, [r0] + mov r1, sb + ldr r0, [r1] + ldr r2, [r0, #0x14] + ldrb r1, [r2, #0x10] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #0x10] +_0813103E: + ldr r2, _08131074 + ldr r0, [r2] + ldr r3, [r0, #0x14] + ldrb r1, [r3, #0x10] + movs r0, #1 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0813108E + ldrb r0, [r3, #1] + adds r0, #1 + strb r0, [r3, #1] + ldr r0, [r6] + ldr r2, [r0, #0x14] + ldrb r0, [r2, #1] + cmp r0, #3 + bhi _08131078 + ldrb r1, [r2, #0x10] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08131078 + strb r0, [r2] + b _08131082 + .align 2, 0 +_08131074: .4byte gUnknown_202414C +_08131078: + ldr r0, [r6] + ldr r1, [r0, #0x14] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08131082: + ldr r0, [r6] + ldr r2, [r0, #0x14] + ldrb r1, [r2, #0x10] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2, #0x10] +_0813108E: + ldr r0, [r7] + ldr r0, [r0, #0x14] + ldrb r0, [r0] + cmp r0, #2 + beq _0813109A + b _08130F9A +_0813109A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08130F7C + + thumb_func_start sub_081310A8 +sub_081310A8: @ 0x081310A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r7, #0 + ldr r4, _081310F4 + ldr r0, [r4] + ldr r2, [r0, #0x18] + ldr r3, _081310F8 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r2, r2, r0 + ldr r5, _081310FC + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r0, [r2] + mov r8, r4 + mov ip, r3 + ldrh r1, [r1] + cmp r0, r1 + beq _08131118 + adds r6, r5, #0 + movs r5, #0 +_081310D4: + mov r1, r8 + ldr r0, [r1] + ldr r4, [r0, #0x18] + mov r0, ip + ldrb r1, [r0] + lsls r3, r1, #4 + adds r0, r5, r3 + adds r2, r4, r0 + ldrh r0, [r2] + cmp r0, #0 + bne _08131100 + lsls r0, r1, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strh r0, [r2] + b _08131118 + .align 2, 0 +_081310F4: .4byte gUnknown_202414C +_081310F8: .4byte gUnknown_2023EB0 +_081310FC: .4byte gUnknown_2023EEC +_08131100: + adds r5, #2 + adds r7, #1 + cmp r7, #3 + bgt _08131118 + adds r0, r5, r3 + adds r0, r4, r0 + lsls r1, r1, #1 + adds r1, r1, r6 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bne _081310D4 +_08131118: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081310A8 + + thumb_func_start sub_08131124 +sub_08131124: @ 0x08131124 + push {r4, lr} + lsls r0, r0, #0x18 + ldr r4, _08131148 + movs r3, #0 + lsrs r1, r0, #0x14 + movs r2, #3 +_08131130: + ldr r0, [r4] + ldr r0, [r0, #0x18] + adds r0, r0, r1 + strh r3, [r0] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _08131130 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131148: .4byte gUnknown_202414C + thumb_func_end sub_08131124 + + thumb_func_start sub_0813114C +sub_0813114C: @ 0x0813114C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08131160 + ldr r2, [r2] + ldr r2, [r2, #0x18] + adds r2, #0x40 + adds r2, r2, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08131160: .4byte gUnknown_202414C + thumb_func_end sub_0813114C + + thumb_func_start sub_08131164 +sub_08131164: @ 0x08131164 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08131178 + ldr r1, [r1] + ldr r1, [r1, #0x18] + adds r1, #0x40 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08131178: .4byte gUnknown_202414C + thumb_func_end sub_08131164 + + thumb_func_start sub_0813117C +sub_0813117C: @ 0x0813117C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08131190 + ldr r2, [r2] + ldr r2, [r2, #0x18] + adds r2, #0x44 + adds r2, r2, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_08131190: .4byte gUnknown_202414C + thumb_func_end sub_0813117C + + thumb_func_start sub_08131194 +sub_08131194: @ 0x08131194 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081311A8 + ldr r1, [r1] + ldr r1, [r1, #0x18] + adds r1, #0x44 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_081311A8: .4byte gUnknown_202414C + thumb_func_end sub_08131194 + + thumb_func_start sub_081311AC +sub_081311AC: @ 0x081311AC + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xff + lsls r1, r1, #0x10 + ldr r3, _081311E0 + ldr r2, [r3] + ands r1, r0 + lsrs r1, r1, #0x10 + ldrb r0, [r2, #1] + cmp r1, r0 + bhs _081311E4 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081311E8 + .align 2, 0 +_081311E0: .4byte gUnknown_203A804 +_081311E4: + adds r0, r2, #6 + str r0, [r3] +_081311E8: + pop {r0} + bx r0 + thumb_func_end sub_081311AC + + thumb_func_start sub_081311EC +sub_081311EC: @ 0x081311EC + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xff + lsls r1, r1, #0x10 + ldr r3, _08131220 + ldr r2, [r3] + ands r1, r0 + lsrs r1, r1, #0x10 + ldrb r0, [r2, #1] + cmp r1, r0 + bls _08131224 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131228 + .align 2, 0 +_08131220: .4byte gUnknown_203A804 +_08131224: + adds r0, r2, #6 + str r0, [r3] +_08131228: + pop {r0} + bx r0 + thumb_func_end sub_081311EC + + thumb_func_start sub_0813122C +sub_0813122C: @ 0x0813122C + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xff + lsls r1, r1, #0x10 + ldr r3, _08131260 + ldr r2, [r3] + ands r1, r0 + lsrs r1, r1, #0x10 + ldrb r0, [r2, #1] + cmp r1, r0 + bne _08131264 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131268 + .align 2, 0 +_08131260: .4byte gUnknown_203A804 +_08131264: + adds r0, r2, #6 + str r0, [r3] +_08131268: + pop {r0} + bx r0 + thumb_func_end sub_0813122C + + thumb_func_start sub_0813126C +sub_0813126C: @ 0x0813126C + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xff + lsls r1, r1, #0x10 + ldr r3, _081312A0 + ldr r2, [r3] + ands r1, r0 + lsrs r1, r1, #0x10 + ldrb r0, [r2, #1] + cmp r1, r0 + beq _081312A4 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081312A8 + .align 2, 0 +_081312A0: .4byte gUnknown_203A804 +_081312A4: + adds r0, r2, #6 + str r0, [r3] +_081312A8: + pop {r0} + bx r0 + thumb_func_end sub_0813126C + + thumb_func_start sub_081312AC +sub_081312AC: @ 0x081312AC + push {r4, lr} + ldr r2, _081312E8 + ldr r0, [r2] + ldr r0, [r0, #0x14] + adds r1, r0, #4 + ldrb r0, [r0, #1] + adds r1, r1, r0 + ldr r3, _081312EC + ldr r0, [r3] + ldrb r0, [r0, #1] + ldrb r4, [r1] + adds r0, r0, r4 + strb r0, [r1] + ldr r0, [r2] + ldr r1, [r0, #0x14] + adds r0, r1, #4 + ldrb r1, [r1, #1] + adds r1, r0, r1 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _081312DC + movs r0, #0 + strb r0, [r1] +_081312DC: + ldr r0, [r3] + adds r0, #2 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081312E8: .4byte gUnknown_202414C +_081312EC: .4byte gUnknown_203A804 + thumb_func_end sub_081312AC + + thumb_func_start sub_081312F0 +sub_081312F0: @ 0x081312F0 + push {r4, lr} + ldr r0, _08131304 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _0813130C + ldr r0, _08131308 + b _0813130E + .align 2, 0 +_08131304: .4byte gUnknown_203A804 +_08131308: .4byte gUnknown_203A808 +_0813130C: + ldr r0, _08131344 +_0813130E: + ldrb r1, [r0] + ldr r2, _08131348 + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r2, [r1, #0x28] + movs r0, #0x64 + muls r0, r2, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, #2] + cmp r0, r1 + bhs _0813134C + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131350 + .align 2, 0 +_08131344: .4byte gUnknown_2023EB0 +_08131348: .4byte gUnknown_2023D28 +_0813134C: + adds r0, r2, #7 + str r0, [r4] +_08131350: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081312F0 + + thumb_func_start sub_08131358 +sub_08131358: @ 0x08131358 + push {r4, lr} + ldr r0, _0813136C + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08131374 + ldr r0, _08131370 + b _08131376 + .align 2, 0 +_0813136C: .4byte gUnknown_203A804 +_08131370: .4byte gUnknown_203A808 +_08131374: + ldr r0, _081313AC +_08131376: + ldrb r1, [r0] + ldr r2, _081313B0 + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r2, [r1, #0x28] + movs r0, #0x64 + muls r0, r2, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, #2] + cmp r0, r1 + bls _081313B4 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081313B8 + .align 2, 0 +_081313AC: .4byte gUnknown_2023EB0 +_081313B0: .4byte gUnknown_2023D28 +_081313B4: + adds r0, r2, #7 + str r0, [r4] +_081313B8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131358 + + thumb_func_start sub_081313C0 +sub_081313C0: @ 0x081313C0 + push {r4, lr} + ldr r0, _081313D4 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _081313DC + ldr r0, _081313D8 + b _081313DE + .align 2, 0 +_081313D4: .4byte gUnknown_203A804 +_081313D8: .4byte gUnknown_203A808 +_081313DC: + ldr r0, _08131414 +_081313DE: + ldrb r1, [r0] + ldr r2, _08131418 + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r2, [r1, #0x28] + movs r0, #0x64 + muls r0, r2, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, #2] + cmp r0, r1 + bne _0813141C + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131420 + .align 2, 0 +_08131414: .4byte gUnknown_2023EB0 +_08131418: .4byte gUnknown_2023D28 +_0813141C: + adds r0, r2, #7 + str r0, [r4] +_08131420: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081313C0 + + thumb_func_start sub_08131428 +sub_08131428: @ 0x08131428 + push {r4, lr} + ldr r0, _0813143C + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08131444 + ldr r0, _08131440 + b _08131446 + .align 2, 0 +_0813143C: .4byte gUnknown_203A804 +_08131440: .4byte gUnknown_203A808 +_08131444: + ldr r0, _0813147C +_08131446: + ldrb r1, [r0] + ldr r2, _08131480 + movs r0, #0x58 + muls r1, r0, r1 + adds r1, r1, r2 + ldrh r2, [r1, #0x28] + movs r0, #0x64 + muls r0, r2, r0 + ldrh r1, [r1, #0x2c] + bl __divsi3 + ldr r2, [r4] + ldrb r1, [r2, #2] + cmp r0, r1 + beq _08131484 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131488 + .align 2, 0 +_0813147C: .4byte gUnknown_2023EB0 +_08131480: .4byte gUnknown_2023D28 +_08131484: + adds r0, r2, #7 + str r0, [r4] +_08131488: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131428 + + thumb_func_start sub_08131490 +sub_08131490: @ 0x08131490 + push {r4, r5, lr} + ldr r0, _081314A4 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _081314AC + ldr r0, _081314A8 + b _081314AE + .align 2, 0 +_081314A4: .4byte gUnknown_203A804 +_081314A8: .4byte gUnknown_203A808 +_081314AC: + ldr r0, _081314F0 +_081314AE: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r1, _081314F4 + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, #0 + beq _081314F8 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _081314FE + .align 2, 0 +_081314F0: .4byte gUnknown_2023EB0 +_081314F4: .4byte gUnknown_2023D28 +_081314F8: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_081314FE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08131490 + + thumb_func_start sub_08131504 +sub_08131504: @ 0x08131504 + push {r4, r5, lr} + ldr r0, _08131518 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _08131520 + ldr r0, _0813151C + b _08131522 + .align 2, 0 +_08131518: .4byte gUnknown_203A804 +_0813151C: .4byte gUnknown_203A808 +_08131520: + ldr r0, _08131564 +_08131522: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r1, _08131568 + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x4c + adds r0, r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, #0 + bne _0813156C + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _08131572 + .align 2, 0 +_08131564: .4byte gUnknown_2023EB0 +_08131568: .4byte gUnknown_2023D28 +_0813156C: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_08131572: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08131504 + + thumb_func_start sub_08131578 +sub_08131578: @ 0x08131578 + push {r4, r5, lr} + ldr r0, _0813158C + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _08131594 + ldr r0, _08131590 + b _08131596 + .align 2, 0 +_0813158C: .4byte gUnknown_203A804 +_08131590: .4byte gUnknown_203A808 +_08131594: + ldr r0, _081315D8 +_08131596: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r1, _081315DC + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, #0 + beq _081315E0 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _081315E6 + .align 2, 0 +_081315D8: .4byte gUnknown_2023EB0 +_081315DC: .4byte gUnknown_2023D28 +_081315E0: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_081315E6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08131578 + + thumb_func_start sub_081315EC +sub_081315EC: @ 0x081315EC + push {r4, r5, lr} + ldr r0, _08131600 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _08131608 + ldr r0, _08131604 + b _0813160A + .align 2, 0 +_08131600: .4byte gUnknown_203A804 +_08131604: .4byte gUnknown_203A808 +_08131608: + ldr r0, _0813164C +_0813160A: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r2, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r2, r0 + ldr r1, _08131650 + movs r0, #0x58 + muls r0, r4, r0 + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, #0 + bne _08131654 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _0813165A + .align 2, 0 +_0813164C: .4byte gUnknown_2023EB0 +_08131650: .4byte gUnknown_2023D28 +_08131654: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_0813165A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081315EC + + thumb_func_start sub_08131660 +sub_08131660: @ 0x08131660 + push {r4, r5, lr} + ldr r0, _08131674 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _0813167C + ldr r0, _08131678 + b _0813167E + .align 2, 0 +_08131674: .4byte gUnknown_203A804 +_08131678: .4byte gUnknown_203A808 +_0813167C: + ldr r0, _081316BC +_0813167E: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r2, _081316C0 + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _081316C4 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _081316CA + .align 2, 0 +_081316BC: .4byte gUnknown_2023EB0 +_081316C0: .4byte gUnknown_2023F50 +_081316C4: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_081316CA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08131660 + + thumb_func_start sub_081316D0 +sub_081316D0: @ 0x081316D0 + push {r4, r5, lr} + ldr r0, _081316E4 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _081316EC + ldr r0, _081316E8 + b _081316EE + .align 2, 0 +_081316E4: .4byte gUnknown_203A804 +_081316E8: .4byte gUnknown_203A808 +_081316EC: + ldr r0, _0813172C +_081316EE: + ldrb r4, [r0] + ldr r3, [r5] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r2, _08131730 + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + bne _08131734 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _0813173A + .align 2, 0 +_0813172C: .4byte gUnknown_2023EB0 +_08131730: .4byte gUnknown_2023F50 +_08131734: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r5] +_0813173A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081316D0 + + thumb_func_start sub_08131740 +sub_08131740: @ 0x08131740 + push {r4, lr} + ldr r0, _08131750 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _08131758 + ldr r0, _08131754 + b _0813175A + .align 2, 0 +_08131750: .4byte gUnknown_203A804 +_08131754: .4byte gUnknown_203A808 +_08131758: + ldr r0, _081317A4 +_0813175A: + ldrb r0, [r0] + bl sub_080A630C + movs r2, #1 + ands r2, r0 + ldr r4, _081317A8 + ldr r3, [r4] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _081317AC + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r0, [r2] + ands r0, r1 + cmp r0, #0 + beq _081317B0 + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081317B6 + .align 2, 0 +_081317A4: .4byte gUnknown_2023EB0 +_081317A8: .4byte gUnknown_203A804 +_081317AC: .4byte gUnknown_2023F32 +_081317B0: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r4] +_081317B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08131740 + + thumb_func_start sub_081317BC +sub_081317BC: @ 0x081317BC + push {r4, lr} + ldr r0, _081317CC + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _081317D4 + ldr r0, _081317D0 + b _081317D6 + .align 2, 0 +_081317CC: .4byte gUnknown_203A804 +_081317D0: .4byte gUnknown_203A808 +_081317D4: + ldr r0, _08131820 +_081317D6: + ldrb r0, [r0] + bl sub_080A630C + movs r2, #1 + ands r2, r0 + ldr r4, _08131824 + ldr r3, [r4] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _08131828 + lsls r2, r2, #1 + adds r2, r2, r0 + ldrh r0, [r2] + ands r0, r1 + cmp r0, #0 + bne _0813182C + ldrb r1, [r3, #6] + ldrb r0, [r3, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131832 + .align 2, 0 +_08131820: .4byte gUnknown_2023EB0 +_08131824: .4byte gUnknown_203A804 +_08131828: .4byte gUnknown_2023F32 +_0813182C: + adds r0, r3, #0 + adds r0, #0xa + str r0, [r4] +_08131832: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081317BC + + thumb_func_start sub_08131838 +sub_08131838: @ 0x08131838 + push {lr} + ldr r0, _08131864 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r3, _08131868 + ldr r2, [r3] + ldr r0, [r0, #8] + ldrb r1, [r2, #1] + cmp r0, r1 + bhs _0813186C + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131870 + .align 2, 0 +_08131864: .4byte gUnknown_202414C +_08131868: .4byte gUnknown_203A804 +_0813186C: + adds r0, r2, #6 + str r0, [r3] +_08131870: + pop {r0} + bx r0 + thumb_func_end sub_08131838 + + thumb_func_start sub_08131874 +sub_08131874: @ 0x08131874 + push {lr} + ldr r0, _081318A0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r3, _081318A4 + ldr r2, [r3] + ldr r0, [r0, #8] + ldrb r1, [r2, #1] + cmp r0, r1 + bls _081318A8 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081318AC + .align 2, 0 +_081318A0: .4byte gUnknown_202414C +_081318A4: .4byte gUnknown_203A804 +_081318A8: + adds r0, r2, #6 + str r0, [r3] +_081318AC: + pop {r0} + bx r0 + thumb_func_end sub_08131874 + + thumb_func_start sub_081318B0 +sub_081318B0: @ 0x081318B0 + push {lr} + ldr r0, _081318DC + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r3, _081318E0 + ldr r2, [r3] + ldr r0, [r0, #8] + ldrb r1, [r2, #1] + cmp r0, r1 + bne _081318E4 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081318E8 + .align 2, 0 +_081318DC: .4byte gUnknown_202414C +_081318E0: .4byte gUnknown_203A804 +_081318E4: + adds r0, r2, #6 + str r0, [r3] +_081318E8: + pop {r0} + bx r0 + thumb_func_end sub_081318B0 + + thumb_func_start sub_081318EC +sub_081318EC: @ 0x081318EC + push {lr} + ldr r0, _08131918 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r3, _0813191C + ldr r2, [r3] + ldr r0, [r0, #8] + ldrb r1, [r2, #1] + cmp r0, r1 + beq _08131920 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131924 + .align 2, 0 +_08131918: .4byte gUnknown_202414C +_0813191C: .4byte gUnknown_203A804 +_08131920: + adds r0, r2, #6 + str r0, [r3] +_08131924: + pop {r0} + bx r0 + thumb_func_end sub_081318EC + + thumb_func_start sub_08131928 +sub_08131928: @ 0x08131928 + push {lr} + ldr r3, _08131968 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _0813196C + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + ldrb r1, [r1] + cmp r0, r1 + bhs _08131970 + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131976 + .align 2, 0 +_08131968: .4byte gUnknown_203A804 +_0813196C: .4byte gUnknown_202414C +_08131970: + adds r0, r2, #0 + adds r0, #9 + str r0, [r3] +_08131976: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131928 + + thumb_func_start sub_0813197C +sub_0813197C: @ 0x0813197C + push {lr} + ldr r3, _081319BC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _081319C0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + ldrb r1, [r1] + cmp r0, r1 + bls _081319C4 + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081319CA + .align 2, 0 +_081319BC: .4byte gUnknown_203A804 +_081319C0: .4byte gUnknown_202414C +_081319C4: + adds r0, r2, #0 + adds r0, #9 + str r0, [r3] +_081319CA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813197C + + thumb_func_start sub_081319D0 +sub_081319D0: @ 0x081319D0 + push {lr} + ldr r3, _08131A10 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _08131A14 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + ldrb r1, [r1] + cmp r0, r1 + bne _08131A18 + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131A1E + .align 2, 0 +_08131A10: .4byte gUnknown_203A804 +_08131A14: .4byte gUnknown_202414C +_08131A18: + adds r0, r2, #0 + adds r0, #9 + str r0, [r3] +_08131A1E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081319D0 + + thumb_func_start sub_08131A24 +sub_08131A24: @ 0x08131A24 + push {lr} + ldr r3, _08131A64 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + ldr r0, _08131A68 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + ldrb r1, [r1] + cmp r0, r1 + beq _08131A6C + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131A72 + .align 2, 0 +_08131A64: .4byte gUnknown_203A804 +_08131A68: .4byte gUnknown_202414C +_08131A6C: + adds r0, r2, #0 + adds r0, #9 + str r0, [r3] +_08131A72: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131A24 + + thumb_func_start sub_08131A78 +sub_08131A78: @ 0x08131A78 + push {lr} + ldr r3, _08131AAC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r0, _08131AB0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + cmp r0, r1 + bne _08131AB4 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131AB8 + .align 2, 0 +_08131AAC: .4byte gUnknown_203A804 +_08131AB0: .4byte gUnknown_202414C +_08131AB4: + adds r0, r2, #7 + str r0, [r3] +_08131AB8: + pop {r0} + bx r0 + thumb_func_end sub_08131A78 + + thumb_func_start sub_08131ABC +sub_08131ABC: @ 0x08131ABC + push {lr} + ldr r3, _08131AF0 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r0, _08131AF4 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + cmp r0, r1 + beq _08131AF8 + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08131AFC + .align 2, 0 +_08131AF0: .4byte gUnknown_203A804 +_08131AF4: .4byte gUnknown_202414C +_08131AF8: + adds r0, r2, #7 + str r0, [r3] +_08131AFC: + pop {r0} + bx r0 + thumb_func_end sub_08131ABC + + thumb_func_start sub_08131B00 +sub_08131B00: @ 0x08131B00 + push {r4, lr} + ldr r2, _08131B4C + ldr r1, [r2] + ldrb r3, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r3, r0 + ldrb r0, [r3] + cmp r0, #0xff + beq _08131B5C + ldr r0, _08131B50 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r1, [r0, #8] + adds r4, r2, #0 +_08131B2A: + ldrb r0, [r3] + cmp r1, r0 + bne _08131B54 + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131B62 + .align 2, 0 +_08131B4C: .4byte gUnknown_203A804 +_08131B50: .4byte gUnknown_202414C +_08131B54: + adds r3, #1 + ldrb r0, [r3] + cmp r0, #0xff + bne _08131B2A +_08131B5C: + ldr r0, [r2] + adds r0, #9 + str r0, [r2] +_08131B62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08131B00 + + thumb_func_start sub_08131B68 +sub_08131B68: @ 0x08131B68 + push {r4, lr} + ldr r2, _08131BA4 + ldr r1, [r2] + ldrb r3, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r3, r0 + ldrb r0, [r3] + adds r4, r2, #0 + cmp r0, #0xff + beq _08131BB4 + ldr r0, _08131BA8 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r2, [r0, #8] + adds r1, r4, #0 +_08131B94: + ldrb r0, [r3] + cmp r2, r0 + bne _08131BAC + ldr r0, [r1] + adds r0, #9 + str r0, [r1] + b _08131BCC + .align 2, 0 +_08131BA4: .4byte gUnknown_203A804 +_08131BA8: .4byte gUnknown_202414C +_08131BAC: + adds r3, #1 + ldrb r0, [r3] + cmp r0, #0xff + bne _08131B94 +_08131BB4: + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] +_08131BCC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131B68 + + thumb_func_start sub_08131BD4 +sub_08131BD4: @ 0x08131BD4 + push {r4, r5, lr} + ldr r2, _08131C20 + ldr r1, [r2] + ldrb r3, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r3, r0 + ldrh r0, [r3] + ldr r5, _08131C24 + cmp r0, r5 + beq _08131C34 + ldr r0, _08131C28 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r1, [r0, #8] + adds r4, r2, #0 +_08131C00: + ldrh r0, [r3] + cmp r1, r0 + bne _08131C2C + ldr r2, [r4] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08131C3A + .align 2, 0 +_08131C20: .4byte gUnknown_203A804 +_08131C24: .4byte 0x0000FFFF +_08131C28: .4byte gUnknown_202414C +_08131C2C: + adds r3, #2 + ldrh r0, [r3] + cmp r0, r5 + bne _08131C00 +_08131C34: + ldr r0, [r2] + adds r0, #9 + str r0, [r2] +_08131C3A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08131BD4 + + thumb_func_start sub_08131C40 +sub_08131C40: @ 0x08131C40 + push {r4, r5, lr} + ldr r2, _08131C7C + ldr r1, [r2] + ldrb r3, [r1, #1] + ldrb r0, [r1, #2] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #3] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x18 + orrs r3, r0 + ldrh r0, [r3] + ldr r4, _08131C80 + adds r5, r2, #0 + cmp r0, r4 + beq _08131C90 + ldr r0, _08131C84 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r2, [r0, #8] + adds r1, r5, #0 +_08131C6E: + ldrh r0, [r3] + cmp r2, r0 + bne _08131C88 + ldr r0, [r1] + adds r0, #9 + str r0, [r1] + b _08131CA8 + .align 2, 0 +_08131C7C: .4byte gUnknown_203A804 +_08131C80: .4byte 0x0000FFFF +_08131C84: .4byte gUnknown_202414C +_08131C88: + adds r3, #2 + ldrh r0, [r3] + cmp r0, r4 + bne _08131C6E +_08131C90: + ldr r2, [r5] + ldrb r1, [r2, #5] + ldrb r0, [r2, #6] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] +_08131CA8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131C40 + + thumb_func_start sub_08131CB0 +sub_08131CB0: @ 0x08131CB0 + push {r4, r5, lr} + movs r3, #0 + ldr r4, _08131CF0 + ldr r1, _08131CF4 + ldr r0, _08131CF8 + ldrb r2, [r0] + ldr r5, _08131CFC + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r2, r0, r1 +_08131CC6: + ldrh r0, [r2] + cmp r0, #0 + beq _08131CDA + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08131CE2 +_08131CDA: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _08131CC6 +_08131CE2: + cmp r3, #4 + bne _08131D00 + ldr r0, [r4] + adds r0, #5 + str r0, [r4] + b _08131D18 + .align 2, 0 +_08131CF0: .4byte gUnknown_203A804 +_08131CF4: .4byte gUnknown_2023D28 +_08131CF8: .4byte gUnknown_203A808 +_08131CFC: .4byte gUnknown_82ED220 +_08131D00: + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] +_08131D18: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131CB0 + + thumb_func_start sub_08131D20 +sub_08131D20: @ 0x08131D20 + push {r4, r5, lr} + movs r3, #0 + ldr r4, _08131D60 + ldr r1, _08131D64 + ldr r0, _08131D68 + ldrb r2, [r0] + ldr r5, _08131D6C + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r2, r0, r1 +_08131D36: + ldrh r0, [r2] + cmp r0, #0 + beq _08131D4A + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08131D52 +_08131D4A: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _08131D36 +_08131D52: + cmp r3, #4 + beq _08131D70 + ldr r0, [r4] + adds r0, #5 + str r0, [r4] + b _08131D88 + .align 2, 0 +_08131D60: .4byte gUnknown_203A804 +_08131D64: .4byte gUnknown_2023D28 +_08131D68: .4byte gUnknown_203A808 +_08131D6C: .4byte gUnknown_82ED220 +_08131D70: + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] +_08131D88: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08131D20 + + thumb_func_start sub_08131D90 +sub_08131D90: @ 0x08131D90 + ldr r0, _08131DA8 + ldr r0, [r0] + ldr r1, [r0, #0x14] + ldr r0, _08131DAC + ldrb r0, [r0, #0x13] + str r0, [r1, #8] + ldr r1, _08131DB0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08131DA8: .4byte gUnknown_202414C +_08131DAC: .4byte gUnknown_3005A70 +_08131DB0: .4byte gUnknown_203A804 + thumb_func_end sub_08131D90 + + thumb_func_start sub_08131DB4 +sub_08131DB4: @ 0x08131DB4 + push {r4, lr} + ldr r1, _08131DCC + ldr r0, [r1] + ldrb r0, [r0, #1] + adds r4, r1, #0 + cmp r0, #4 + bhi _08131E8E + lsls r0, r0, #2 + ldr r1, _08131DD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08131DCC: .4byte gUnknown_203A804 +_08131DD0: .4byte _08131DD4 +_08131DD4: @ jump table + .4byte _08131E0C @ case 0 + .4byte _08131DE8 @ case 1 + .4byte _08131E54 @ case 2 + .4byte _08131E30 @ case 3 + .4byte _08131E78 @ case 4 +_08131DE8: + ldr r0, _08131E00 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131E04 + ldr r0, _08131E08 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x21 + ldrb r0, [r0] + b _08131E8C + .align 2, 0 +_08131E00: .4byte gUnknown_202414C +_08131E04: .4byte gUnknown_2023D28 +_08131E08: .4byte gUnknown_203A808 +_08131E0C: + ldr r0, _08131E24 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131E28 + ldr r0, _08131E2C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x21 + ldrb r0, [r0] + b _08131E8C + .align 2, 0 +_08131E24: .4byte gUnknown_202414C +_08131E28: .4byte gUnknown_2023D28 +_08131E2C: .4byte gUnknown_2023EB0 +_08131E30: + ldr r0, _08131E48 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131E4C + ldr r0, _08131E50 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x22 + ldrb r0, [r0] + b _08131E8C + .align 2, 0 +_08131E48: .4byte gUnknown_202414C +_08131E4C: .4byte gUnknown_2023D28 +_08131E50: .4byte gUnknown_203A808 +_08131E54: + ldr r0, _08131E6C + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131E70 + ldr r0, _08131E74 + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x22 + ldrb r0, [r0] + b _08131E8C + .align 2, 0 +_08131E6C: .4byte gUnknown_202414C +_08131E70: .4byte gUnknown_2023D28 +_08131E74: .4byte gUnknown_2023EB0 +_08131E78: + ldr r0, _08131E9C + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131EA0 + ldrh r1, [r3, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] +_08131E8C: + str r0, [r3, #8] +_08131E8E: + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131E9C: .4byte gUnknown_202414C +_08131EA0: .4byte gUnknown_82ED220 + thumb_func_end sub_08131DB4 + + thumb_func_start sub_08131EA4 +sub_08131EA4: @ 0x08131EA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08131EB8 + ldr r0, _08131EB4 + ldrb r0, [r0] + b _08131EE0 + .align 2, 0 +_08131EB4: .4byte gUnknown_203A808 +_08131EB8: + cmp r0, #1 + ble _08131EC4 + cmp r0, #2 + beq _08131ED8 + cmp r0, #3 + beq _08131ED0 +_08131EC4: + ldr r0, _08131ECC + ldrb r0, [r0] + b _08131EE0 + .align 2, 0 +_08131ECC: .4byte gUnknown_2023EB0 +_08131ED0: + ldr r0, _08131ED4 + b _08131EDA + .align 2, 0 +_08131ED4: .4byte gUnknown_203A808 +_08131ED8: + ldr r0, _08131EE4 +_08131EDA: + ldrb r1, [r0] + movs r0, #2 + eors r0, r1 +_08131EE0: + pop {r1} + bx r1 + .align 2, 0 +_08131EE4: .4byte gUnknown_2023EB0 + thumb_func_end sub_08131EA4 + + thumb_func_start sub_08131EE8 +sub_08131EE8: @ 0x08131EE8 + push {r4, lr} + ldr r4, _08131F24 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_08131EA4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08131F28 + movs r1, #0x58 + muls r0, r1, r0 + adds r3, r0, r2 + adds r1, r3, #0 + adds r1, #0x21 + ldr r0, [r4] + ldrb r1, [r1] + ldrb r2, [r0, #2] + cmp r1, r2 + beq _08131F18 + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, r2 + bne _08131F30 +_08131F18: + ldr r0, _08131F2C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #1 + b _08131F38 + .align 2, 0 +_08131F24: .4byte gUnknown_203A804 +_08131F28: .4byte gUnknown_2023D28 +_08131F2C: .4byte gUnknown_202414C +_08131F30: + ldr r0, _08131F48 + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0 +_08131F38: + str r0, [r1, #8] + ldr r1, _08131F4C + ldr r0, [r1] + adds r0, #3 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08131F48: .4byte gUnknown_202414C +_08131F4C: .4byte gUnknown_203A804 + thumb_func_end sub_08131EE8 + + thumb_func_start sub_08131F50 +sub_08131F50: @ 0x08131F50 + ldr r0, _08131F70 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08131F74 + ldrh r1, [r3, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + str r0, [r3, #8] + ldr r1, _08131F78 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08131F70: .4byte gUnknown_202414C +_08131F74: .4byte gUnknown_82ED220 +_08131F78: .4byte gUnknown_203A804 + thumb_func_end sub_08131F50 + + thumb_func_start sub_08131F7C +sub_08131F7C: @ 0x08131F7C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + movs r3, #0 + ldr r0, _081320BC + ldrh r1, [r0] + ldr r5, _081320C0 + ldr r6, _081320C4 + ldr r2, _081320C8 + cmp r1, r5 + beq _08131FBA + ldr r0, [r2] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r4, [r0] + ldr r1, _081320BC +_08131FAA: + ldrh r0, [r1] + cmp r4, r0 + beq _08131FBA + adds r1, #2 + adds r3, #1 + ldrh r0, [r1] + cmp r0, r5 + bne _08131FAA +_08131FBA: + ldr r0, [r2] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #1] + cmp r0, #1 + bhi _08131FD0 + b _0813215A +_08131FD0: + lsls r0, r3, #1 + ldr r1, _081320BC + adds r0, r0, r1 + ldrh r3, [r0] + ldr r0, _081320C0 + cmp r3, r0 + beq _08131FE0 + b _0813215A +_08131FE0: + ldr r0, _081320CC + movs r1, #0 + strh r1, [r0] + ldr r0, _081320D0 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _081320D4 + movs r2, #1 + strb r2, [r0, #0xe] + ldr r0, _081320D8 + strb r1, [r0] + ldr r0, _081320DC + strb r2, [r0] + movs r6, #0 + mov sb, r3 + ldr r2, _081320BC + ldrh r2, [r2] + str r2, [sp, #0x10] +_08132004: + movs r3, #0 + ldr r5, _081320E0 + lsls r4, r6, #1 + ldr r7, _081320E4 + lsls r0, r6, #2 + mov r8, r0 + adds r1, r6, #1 + mov sl, r1 + ldr r2, [sp, #0x10] + cmp r2, sb + beq _08132048 + ldr r2, _081320C4 + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r4, r0 + adds r1, r5, #0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0] + ldr r1, _081320BC +_08132038: + ldrh r0, [r1] + cmp r2, r0 + beq _08132048 + adds r1, #2 + adds r3, #1 + ldrh r0, [r1] + cmp r0, sb + bne _08132038 +_08132048: + ldrb r1, [r7] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r4, r0 + adds r1, r5, #0 + adds r1, #0xc + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _081320F4 + lsls r0, r3, #1 + ldr r2, _081320BC + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, sb + bne _081320F4 + ldr r0, _081320C4 + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #1] + cmp r0, #1 + bls _081320F4 + ldr r5, _081320E8 + strh r2, [r5] + ldrb r0, [r7] + ldr r4, _081320EC + ldrb r1, [r4] + bl sub_08046ABC + ldrh r0, [r5] + ldrb r1, [r7] + ldrb r2, [r4] + bl sub_08047224 + mov r4, sp + add r4, r8 + ldr r2, _081320F0 + ldr r0, _081320C8 + ldr r0, [r0] + ldr r0, [r0, #0x14] + adds r0, #0x18 + adds r0, r0, r6 + ldrb r1, [r0] + ldr r0, [r2] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _081320FC + movs r0, #1 + str r0, [r4] + b _081320FC + .align 2, 0 +_081320BC: .4byte gUnknown_858F7D8 +_081320C0: .4byte 0x0000FFFF +_081320C4: .4byte gUnknown_82ED220 +_081320C8: .4byte gUnknown_202414C +_081320CC: .4byte gUnknown_20240A4 +_081320D0: .4byte gUnknown_2024140 +_081320D4: .4byte gUnknown_2024118 +_081320D8: .4byte gUnknown_2023F20 +_081320DC: .4byte gUnknown_2023EB5 +_081320E0: .4byte gUnknown_2023D28 +_081320E4: .4byte gUnknown_203A808 +_081320E8: .4byte gUnknown_2023E8E +_081320EC: .4byte gUnknown_2023EB0 +_081320F0: .4byte gUnknown_2023E94 +_081320F4: + mov r1, sp + add r1, r8 + movs r0, #0 + str r0, [r1] +_081320FC: + mov r6, sl + cmp r6, #3 + bgt _08132104 + b _08132004 +_08132104: + movs r6, #0 + ldr r2, _08132148 + ldr r0, [r2] + ldr r0, [r0, #0x14] + ldrb r0, [r0, #1] + lsls r0, r0, #2 + add r0, sp + ldr r1, [sp] + ldr r0, [r0] + ldr r5, _0813214C + cmp r1, r0 + bgt _0813213A + adds r4, r2, #0 + mov r3, sp +_08132120: + adds r3, #4 + adds r6, #1 + cmp r6, #3 + bgt _0813213A + ldr r0, [r4] + ldr r0, [r0, #0x14] + ldrb r0, [r0, #1] + lsls r0, r0, #2 + add r0, sp + ldr r1, [r3] + ldr r0, [r0] + cmp r1, r0 + ble _08132120 +_0813213A: + cmp r6, #4 + bne _08132150 + ldr r0, [r2] + ldr r1, [r0, #0x14] + movs r0, #2 + str r0, [r1, #8] + b _08132164 + .align 2, 0 +_08132148: .4byte gUnknown_202414C +_0813214C: .4byte gUnknown_203A804 +_08132150: + ldr r0, [r2] + ldr r1, [r0, #0x14] + movs r0, #1 + str r0, [r1, #8] + b _08132164 +_0813215A: + ldr r0, [r2] + ldr r1, [r0, #0x14] + movs r0, #0 + str r0, [r1, #8] + ldr r5, _0813217C +_08132164: + ldr r0, [r5] + adds r0, #1 + str r0, [r5] + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813217C: .4byte gUnknown_203A804 + thumb_func_end sub_08131F7C + + thumb_func_start sub_08132180 +sub_08132180: @ 0x08132180 + push {lr} + ldr r0, _0813219C + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r3, r0, #0 + cmp r1, #1 + bne _081321AC + ldr r0, _081321A0 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _081321A4 + ldr r0, _081321A8 + b _081321B6 + .align 2, 0 +_0813219C: .4byte gUnknown_203A804 +_081321A0: .4byte gUnknown_202414C +_081321A4: .4byte gUnknown_2023EEC +_081321A8: .4byte gUnknown_203A808 +_081321AC: + ldr r0, _081321CC + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _081321D0 + ldr r0, _081321D4 +_081321B6: + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + str r0, [r2, #8] + ldr r0, [r3] + adds r0, #2 + str r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_081321CC: .4byte gUnknown_202414C +_081321D0: .4byte gUnknown_2023EEC +_081321D4: .4byte gUnknown_2023EB0 + thumb_func_end sub_08132180 + + thumb_func_start sub_081321D8 +sub_081321D8: @ 0x081321D8 + push {lr} + ldr r3, _08132204 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldr r0, _08132208 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + cmp r1, r0 + bne _0813220C + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132210 + .align 2, 0 +_08132204: .4byte gUnknown_203A804 +_08132208: .4byte gUnknown_202414C +_0813220C: + adds r0, r2, #6 + str r0, [r3] +_08132210: + pop {r0} + bx r0 + thumb_func_end sub_081321D8 + + thumb_func_start sub_08132214 +sub_08132214: @ 0x08132214 + push {lr} + ldr r3, _08132240 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldr r0, _08132244 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldr r0, [r0, #8] + cmp r1, r0 + beq _08132248 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0813224C + .align 2, 0 +_08132240: .4byte gUnknown_203A804 +_08132244: .4byte gUnknown_202414C +_08132248: + adds r0, r2, #6 + str r0, [r3] +_0813224C: + pop {r0} + bx r0 + thumb_func_end sub_08132214 + + thumb_func_start sub_08132250 +sub_08132250: @ 0x08132250 + push {lr} + ldr r0, _08132288 + ldrb r0, [r0] + ldr r1, _0813228C + ldrb r1, [r1] + movs r2, #1 + bl sub_0803CB54 + ldr r3, _08132290 + ldr r2, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r2, #1] + cmp r0, r1 + bne _08132294 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132298 + .align 2, 0 +_08132288: .4byte gUnknown_203A808 +_0813228C: .4byte gUnknown_2023EB0 +_08132290: .4byte gUnknown_203A804 +_08132294: + adds r0, r2, #6 + str r0, [r3] +_08132298: + pop {r0} + bx r0 + thumb_func_end sub_08132250 + + thumb_func_start sub_0813229C +sub_0813229C: @ 0x0813229C + push {lr} + ldr r0, _081322D4 + ldrb r0, [r0] + ldr r1, _081322D8 + ldrb r1, [r1] + movs r2, #1 + bl sub_0803CB54 + ldr r3, _081322DC + ldr r2, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r2, #1] + cmp r0, r1 + beq _081322E0 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081322E4 + .align 2, 0 +_081322D4: .4byte gUnknown_203A808 +_081322D8: .4byte gUnknown_2023EB0 +_081322DC: .4byte gUnknown_203A804 +_081322E0: + adds r0, r2, #6 + str r0, [r3] +_081322E4: + pop {r0} + bx r0 + thumb_func_end sub_0813229C + + thumb_func_start sub_081322E8 +sub_081322E8: @ 0x081322E8 + bx lr + .align 2, 0 + thumb_func_end sub_081322E8 + + thumb_func_start sub_081322EC +sub_081322EC: @ 0x081322EC + bx lr + .align 2, 0 + thumb_func_end sub_081322EC + + thumb_func_start sub_081322F0 +sub_081322F0: @ 0x081322F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08132310 + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0 + str r0, [r1, #8] + ldr r0, _08132314 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _0813231C + ldr r0, _08132318 + b _0813231E + .align 2, 0 +_08132310: .4byte gUnknown_202414C +_08132314: .4byte gUnknown_203A804 +_08132318: .4byte gUnknown_203A808 +_0813231C: + ldr r0, _08132364 +_0813231E: + ldrb r5, [r0] + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _08132368 + mov r8, r1 + cmp r0, #0 + bne _08132334 + ldr r0, _0813236C + mov r8, r0 +_08132334: + ldr r0, _08132370 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08132378 + ldr r4, _08132374 + lsls r0, r5, #1 + adds r0, r0, r4 + ldrb r7, [r0] + adds r0, r5, #0 + bl sub_080A630C + movs r1, #2 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrb r6, [r0] + b _08132382 + .align 2, 0 +_08132364: .4byte gUnknown_2023EB0 +_08132368: .4byte gUnknown_20243E8 +_0813236C: .4byte gUnknown_2024190 +_08132370: .4byte gUnknown_2022C90 +_08132374: .4byte gUnknown_2023D12 +_08132378: + ldr r1, _081323E0 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrb r6, [r0] + adds r7, r6, #0 +_08132382: + movs r5, #0 +_08132384: + cmp r5, r7 + beq _081323C8 + cmp r5, r6 + beq _081323C8 + movs r0, #0x64 + muls r0, r5, r0 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081323C8 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + cmp r0, #0 + beq _081323C8 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _081323C8 + ldr r0, _081323E4 + ldr r0, [r0] + ldr r1, [r0, #0x14] + ldr r0, [r1, #8] + adds r0, #1 + str r0, [r1, #8] +_081323C8: + adds r5, #1 + cmp r5, #5 + ble _08132384 + ldr r1, _081323E8 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081323E0: .4byte gUnknown_2023D12 +_081323E4: .4byte gUnknown_202414C +_081323E8: .4byte gUnknown_203A804 + thumb_func_end sub_081322F0 + + thumb_func_start sub_081323EC +sub_081323EC: @ 0x081323EC + ldr r0, _08132400 + ldr r0, [r0] + ldr r1, [r0, #0x14] + ldrh r0, [r1, #2] + str r0, [r1, #8] + ldr r1, _08132404 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08132400: .4byte gUnknown_202414C +_08132404: .4byte gUnknown_203A804 + thumb_func_end sub_081323EC + + thumb_func_start sub_08132408 +sub_08132408: @ 0x08132408 + ldr r0, _08132428 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _0813242C + ldrh r1, [r3, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + str r0, [r3, #8] + ldr r1, _08132430 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08132428: .4byte gUnknown_202414C +_0813242C: .4byte gUnknown_82ED220 +_08132430: .4byte gUnknown_203A804 + thumb_func_end sub_08132408 + + thumb_func_start sub_08132434 +sub_08132434: @ 0x08132434 + push {r4, r5, r6, r7, lr} + ldr r0, _08132448 + ldr r1, [r0] + ldrb r1, [r1, #1] + mov ip, r0 + cmp r1, #1 + bne _08132450 + ldr r0, _0813244C + b _08132452 + .align 2, 0 +_08132448: .4byte gUnknown_203A804 +_0813244C: .4byte gUnknown_203A808 +_08132450: + ldr r0, _08132474 +_08132452: + ldrb r3, [r0] + ldr r0, _08132478 + ldrb r0, [r0] + cmp r0, r3 + beq _08132524 + ldr r7, _0813247C + ldr r5, [r7] + ldr r0, [r5, #0x18] + adds r0, #0x40 + adds r2, r0, r3 + ldrb r0, [r2] + adds r6, r7, #0 + cmp r0, #0 + beq _08132480 + ldr r1, [r5, #0x14] + str r0, [r1, #8] + b _08132538 + .align 2, 0 +_08132474: .4byte gUnknown_2023EB0 +_08132478: .4byte gUnknown_2023D08 +_0813247C: .4byte gUnknown_202414C +_08132480: + ldr r1, _081324B0 + movs r0, #0x58 + muls r0, r3, r0 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x17 + beq _0813249C + cmp r0, #0x2a + beq _0813249C + cmp r0, #0x47 + bne _081324B4 +_0813249C: + ldr r0, [r6] + ldr r1, [r0, #0x14] + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r2 + adds r0, #0x20 + ldrb r0, [r0] + str r0, [r1, #8] + b _08132538 + .align 2, 0 +_081324B0: .4byte gUnknown_2023D28 +_081324B4: + ldr r6, _081324F0 + ldrh r0, [r4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r6 + ldrb r0, [r2, #0x16] + cmp r0, #0 + beq _0813251C + ldrb r0, [r2, #0x17] + cmp r0, #0 + beq _08132514 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _081324F8 + ldr r0, [r7] + ldr r2, [r0, #0x14] + ldrh r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #0x16] + str r0, [r2, #8] + ldr r0, _081324F4 + mov ip, r0 + b _08132538 + .align 2, 0 +_081324F0: .4byte gUnknown_82F0D54 +_081324F4: .4byte gUnknown_203A804 +_081324F8: + ldr r0, [r7] + ldr r2, [r0, #0x14] + ldrh r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #0x17] + str r0, [r2, #8] + ldr r1, _08132510 + mov ip, r1 + b _08132538 + .align 2, 0 +_08132510: .4byte gUnknown_203A804 +_08132514: + ldr r1, [r5, #0x14] + ldrb r0, [r2, #0x16] + str r0, [r1, #8] + b _08132538 +_0813251C: + ldr r1, [r5, #0x14] + ldrb r0, [r2, #0x17] + str r0, [r1, #8] + b _08132538 +_08132524: + ldr r0, _08132548 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _0813254C + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r0, [r0] + str r0, [r2, #8] +_08132538: + mov r1, ip + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08132548: .4byte gUnknown_202414C +_0813254C: .4byte gUnknown_2023D28 + thumb_func_end sub_08132434 + + thumb_func_start sub_08132550 +sub_08132550: @ 0x08132550 + push {r4, r5, r6, lr} + ldr r4, _08132588 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_08131EA4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r4] + ldrb r3, [r0, #2] + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0813256E + cmp r0, #2 + bne _081325F0 +_0813256E: + ldr r0, _0813258C + ldr r4, [r0] + ldr r1, [r4, #0x18] + adds r1, #0x40 + adds r2, r1, r5 + ldrb r1, [r2] + adds r6, r0, #0 + cmp r1, #0 + beq _08132590 + adds r3, r1, #0 + ldr r0, [r4, #0x14] + str r3, [r0, #8] + b _081325FE + .align 2, 0 +_08132588: .4byte gUnknown_203A804 +_0813258C: .4byte gUnknown_202414C +_08132590: + ldr r1, _081325B8 + movs r0, #0x58 + muls r0, r5, r0 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x17 + beq _081325AA + cmp r0, #0x2a + beq _081325AA + cmp r0, #0x47 + bne _081325BC +_081325AA: + movs r0, #0x58 + muls r0, r5, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r3, [r0] + b _081325FE + .align 2, 0 +_081325B8: .4byte gUnknown_2023D28 +_081325BC: + ldr r2, _081325E4 + ldrh r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r4, [r1, #0x16] + cmp r4, #0 + beq _081325EC + ldrb r2, [r1, #0x17] + cmp r2, #0 + beq _081325E8 + adds r0, r3, #0 + cmp r4, r0 + beq _08132602 + cmp r2, r0 + beq _08132602 + adds r3, r4, #0 + b _081325FE + .align 2, 0 +_081325E4: .4byte gUnknown_82F0D54 +_081325E8: + ldrb r3, [r1, #0x16] + b _081325FE +_081325EC: + ldrb r3, [r1, #0x17] + b _081325FE +_081325F0: + ldr r1, _08132610 + movs r0, #0x58 + muls r0, r5, r0 + adds r0, r0, r1 + adds r0, #0x20 + ldrb r3, [r0] + ldr r6, _08132614 +_081325FE: + cmp r3, #0 + bne _0813261C +_08132602: + ldr r0, [r6] + ldr r1, [r0, #0x14] + movs r0, #2 + str r0, [r1, #8] + ldr r2, _08132618 + b _0813263C + .align 2, 0 +_08132610: .4byte gUnknown_2023D28 +_08132614: .4byte gUnknown_202414C +_08132618: .4byte gUnknown_203A804 +_0813261C: + ldr r0, _08132630 + ldr r1, [r0] + adds r2, r0, #0 + ldrb r1, [r1, #2] + cmp r3, r1 + bne _08132634 + ldr r0, [r6] + ldr r1, [r0, #0x14] + movs r0, #1 + b _0813263A + .align 2, 0 +_08132630: .4byte gUnknown_203A804 +_08132634: + ldr r0, [r6] + ldr r1, [r0, #0x14] + movs r0, #0 +_0813263A: + str r0, [r1, #8] +_0813263C: + ldr r0, [r2] + adds r0, #3 + str r0, [r2] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08132550 + + thumb_func_start sub_08132648 +sub_08132648: @ 0x08132648 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08132704 + movs r1, #0 + strh r1, [r0] + ldr r0, _08132708 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _0813270C + movs r3, #0 + movs r2, #1 + strb r2, [r0, #0xe] + ldr r0, _08132710 + strb r1, [r0] + ldr r0, _08132714 + strb r2, [r0] + ldr r0, _08132718 + ldr r0, [r0] + ldr r0, [r0, #0x14] + str r3, [r0, #8] + movs r5, #0 + ldr r4, _0813271C + ldr r7, _08132720 + ldr r0, _08132724 + mov r8, r0 + ldr r6, _08132728 +_0813267E: + movs r0, #0x28 + str r0, [r4] + lsls r1, r5, #1 + ldrb r2, [r6] + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r1, r0 + add r1, r8 + ldrh r0, [r1] + strh r0, [r7] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081326EC + ldrh r0, [r7] + ldrb r1, [r6] + ldr r2, _0813272C + ldrb r2, [r2] + bl sub_08047224 + ldr r0, [r4] + cmp r0, #0x78 + bne _081326AE + movs r0, #0x50 + str r0, [r4] +_081326AE: + ldr r0, [r4] + cmp r0, #0xf0 + bne _081326B8 + movs r0, #0xa0 + str r0, [r4] +_081326B8: + ldr r0, [r4] + cmp r0, #0x1e + bne _081326C2 + movs r0, #0x14 + str r0, [r4] +_081326C2: + ldr r0, [r4] + cmp r0, #0xf + bne _081326CC + movs r0, #0xa + str r0, [r4] +_081326CC: + ldr r0, _08132710 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081326DC + movs r0, #0 + str r0, [r4] +_081326DC: + ldr r0, _08132718 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r0, [r2, #8] + ldr r1, [r4] + cmp r0, r1 + bhs _081326EC + str r1, [r2, #8] +_081326EC: + adds r5, #1 + cmp r5, #3 + ble _0813267E + ldr r1, _08132730 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08132704: .4byte gUnknown_20240A4 +_08132708: .4byte gUnknown_2024140 +_0813270C: .4byte gUnknown_2024118 +_08132710: .4byte gUnknown_2023F20 +_08132714: .4byte gUnknown_2023EB5 +_08132718: .4byte gUnknown_202414C +_0813271C: .4byte gUnknown_2023E94 +_08132720: .4byte gUnknown_2023E8E +_08132724: .4byte gUnknown_2023D34 +_08132728: .4byte gUnknown_203A808 +_0813272C: .4byte gUnknown_2023EB0 +_08132730: .4byte gUnknown_203A804 + thumb_func_end sub_08132648 + + thumb_func_start sub_08132734 +sub_08132734: @ 0x08132734 + push {r4, r5, lr} + ldr r0, _081327CC + movs r1, #0 + strh r1, [r0] + ldr r0, _081327D0 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _081327D4 + movs r2, #1 + strb r2, [r0, #0xe] + ldr r5, _081327D8 + strb r1, [r5] + ldr r0, _081327DC + strb r2, [r0] + ldr r4, _081327E0 + movs r0, #0x28 + str r0, [r4] + ldr r1, _081327E4 + ldr r0, _081327E8 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + strh r0, [r1] + ldrh r0, [r1] + ldr r1, _081327EC + ldrb r1, [r1] + ldr r2, _081327F0 + ldrb r2, [r2] + bl sub_08047224 + ldr r0, [r4] + cmp r0, #0x78 + bne _0813277A + movs r0, #0x50 + str r0, [r4] +_0813277A: + ldr r0, [r4] + cmp r0, #0xf0 + bne _08132784 + movs r0, #0xa0 + str r0, [r4] +_08132784: + ldr r0, [r4] + cmp r0, #0x1e + bne _0813278E + movs r0, #0x14 + str r0, [r4] +_0813278E: + ldr r0, [r4] + cmp r0, #0xf + bne _08132798 + movs r0, #0xa + str r0, [r4] +_08132798: + ldrb r1, [r5] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081327A6 + movs r0, #0 + str r0, [r4] +_081327A6: + ldrb r0, [r4] + ldr r3, _081327F4 + ldr r2, [r3] + ldrb r1, [r2, #1] + cmp r0, r1 + bne _081327F8 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081327FC + .align 2, 0 +_081327CC: .4byte gUnknown_20240A4 +_081327D0: .4byte gUnknown_2024140 +_081327D4: .4byte gUnknown_2024118 +_081327D8: .4byte gUnknown_2023F20 +_081327DC: .4byte gUnknown_2023EB5 +_081327E0: .4byte gUnknown_2023E94 +_081327E4: .4byte gUnknown_2023E8E +_081327E8: .4byte gUnknown_202414C +_081327EC: .4byte gUnknown_203A808 +_081327F0: .4byte gUnknown_2023EB0 +_081327F4: .4byte gUnknown_203A804 +_081327F8: + adds r0, r2, #6 + str r0, [r3] +_081327FC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08132734 + + thumb_func_start sub_08132804 +sub_08132804: @ 0x08132804 + bx lr + .align 2, 0 + thumb_func_end sub_08132804 + + thumb_func_start sub_08132808 +sub_08132808: @ 0x08132808 + bx lr + .align 2, 0 + thumb_func_end sub_08132808 + + thumb_func_start sub_0813280C +sub_0813280C: @ 0x0813280C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08132824 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _0813284C + ldr r0, _08132828 + b _0813284E + .align 2, 0 +_08132824: .4byte gUnknown_203A804 +_08132828: .4byte gUnknown_203A808 +_0813282C: + ldr r3, _08132848 + ldr r2, [r3] + ldrb r1, [r2, #6] + ldrb r0, [r2, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081328CE + .align 2, 0 +_08132848: .4byte gUnknown_203A804 +_0813284C: + ldr r0, _081328DC +_0813284E: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _081328E0 + mov sb, r1 + cmp r0, #0 + bne _08132862 + ldr r0, _081328E4 + mov sb, r0 +_08132862: + ldr r0, _081328E8 + ldr r1, [r0] + ldrb r7, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + orrs r7, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + orrs r7, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + orrs r7, r0 + movs r1, #0 + mov r8, r1 + movs r0, #0xce + lsls r0, r0, #1 + mov sl, r0 +_08132884: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + add r4, sb + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + cmp r5, #0 + beq _081328BC + cmp r5, sl + beq _081328BC + cmp r6, #0 + beq _081328BC + cmp r0, r7 + beq _0813282C +_081328BC: + movs r1, #1 + add r8, r1 + mov r0, r8 + cmp r0, #5 + ble _08132884 + ldr r1, _081328E8 + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] +_081328CE: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081328DC: .4byte gUnknown_2023EB0 +_081328E0: .4byte gUnknown_20243E8 +_081328E4: .4byte gUnknown_2024190 +_081328E8: .4byte gUnknown_203A804 + thumb_func_end sub_0813280C + + thumb_func_start sub_081328EC +sub_081328EC: @ 0x081328EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08132904 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _0813290C + ldr r0, _08132908 + b _0813290E + .align 2, 0 +_08132904: .4byte gUnknown_203A804 +_08132908: .4byte gUnknown_203A808 +_0813290C: + ldr r0, _081329B8 +_0813290E: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r1, _081329BC + mov sl, r1 + cmp r0, #0 + bne _08132922 + ldr r0, _081329C0 + mov sl, r0 +_08132922: + ldr r2, _081329C4 + ldr r1, [r2] + ldrb r7, [r1, #2] + ldrb r0, [r1, #3] + lsls r0, r0, #8 + orrs r7, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x10 + orrs r7, r0 + ldrb r0, [r1, #5] + lsls r0, r0, #0x18 + orrs r7, r0 + movs r1, #0 + mov r8, r1 + mov sb, r2 +_08132940: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + add r4, sl + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + cmp r5, #0 + beq _08132984 + movs r1, #0xce + lsls r1, r1, #1 + cmp r5, r1 + beq _08132984 + cmp r6, #0 + beq _08132984 + cmp r0, r7 + bne _08132984 + mov r1, sb + ldr r0, [r1] + adds r0, #0xa + str r0, [r1] +_08132984: + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #5 + ble _08132940 + ldr r3, _081329C4 + ldr r2, [r3] + ldrb r1, [r2, #6] + ldrb r0, [r2, #7] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #8] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #9] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081329B8: .4byte gUnknown_2023EB0 +_081329BC: .4byte gUnknown_20243E8 +_081329C0: .4byte gUnknown_2024190 +_081329C4: .4byte gUnknown_203A804 + thumb_func_end sub_081328EC + + thumb_func_start sub_081329C8 +sub_081329C8: @ 0x081329C8 + push {lr} + ldr r2, _08132A28 + ldrh r1, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _081329E0 + ldr r0, _08132A2C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #1 + str r0, [r1, #8] +_081329E0: + ldrh r1, [r2] + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _081329F4 + ldr r0, _08132A2C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #2 + str r0, [r1, #8] +_081329F4: + ldrh r1, [r2] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _08132A08 + ldr r0, _08132A2C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #0 + str r0, [r1, #8] +_08132A08: + ldrh r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08132A1C + ldr r0, _08132A2C + ldr r0, [r0] + ldr r1, [r0, #0x14] + movs r0, #3 + str r0, [r1, #8] +_08132A1C: + ldr r1, _08132A30 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08132A28: .4byte gUnknown_2024070 +_08132A2C: .4byte gUnknown_202414C +_08132A30: .4byte gUnknown_203A804 + thumb_func_end sub_081329C8 + + thumb_func_start sub_08132A34 +sub_08132A34: @ 0x08132A34 + push {lr} + ldr r2, _08132A6C + ldr r0, _08132A70 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r3, _08132A74 + ldr r2, [r3] + ldrb r0, [r0] + ldrb r1, [r2, #1] + cmp r0, r1 + bne _08132A78 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132A7C + .align 2, 0 +_08132A6C: .4byte gUnknown_82ED220 +_08132A70: .4byte gUnknown_202414C +_08132A74: .4byte gUnknown_203A804 +_08132A78: + adds r0, r2, #6 + str r0, [r3] +_08132A7C: + pop {r0} + bx r0 + thumb_func_end sub_08132A34 + + thumb_func_start sub_08132A80 +sub_08132A80: @ 0x08132A80 + push {lr} + ldr r2, _08132AB8 + ldr r0, _08132ABC + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r3, _08132AC0 + ldr r2, [r3] + ldrb r0, [r0] + ldrb r1, [r2, #1] + cmp r0, r1 + beq _08132AC4 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132AC8 + .align 2, 0 +_08132AB8: .4byte gUnknown_82ED220 +_08132ABC: .4byte gUnknown_202414C +_08132AC0: .4byte gUnknown_203A804 +_08132AC4: + adds r0, r2, #6 + str r0, [r3] +_08132AC8: + pop {r0} + bx r0 + thumb_func_end sub_08132A80 + + thumb_func_start sub_08132ACC +sub_08132ACC: @ 0x08132ACC + push {r4, lr} + ldr r0, _08132AE0 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08132AE8 + ldr r0, _08132AE4 + b _08132AEA + .align 2, 0 +_08132AE0: .4byte gUnknown_203A804 +_08132AE4: .4byte gUnknown_203A808 +_08132AE8: + ldr r0, _08132B20 +_08132AEA: + ldrb r3, [r0] + ldr r1, _08132B24 + ldr r2, [r4] + movs r0, #0x58 + muls r0, r3, r0 + ldrb r3, [r2, #2] + adds r0, r0, r3 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r2, #3] + cmp r0, r1 + bge _08132B28 + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08132B2E + .align 2, 0 +_08132B20: .4byte gUnknown_2023EB0 +_08132B24: .4byte gUnknown_2023D28 +_08132B28: + adds r0, r2, #0 + adds r0, #8 + str r0, [r4] +_08132B2E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08132ACC + + thumb_func_start sub_08132B34 +sub_08132B34: @ 0x08132B34 + push {r4, lr} + ldr r0, _08132B48 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08132B50 + ldr r0, _08132B4C + b _08132B52 + .align 2, 0 +_08132B48: .4byte gUnknown_203A804 +_08132B4C: .4byte gUnknown_203A808 +_08132B50: + ldr r0, _08132B88 +_08132B52: + ldrb r3, [r0] + ldr r1, _08132B8C + ldr r2, [r4] + movs r0, #0x58 + muls r0, r3, r0 + ldrb r3, [r2, #2] + adds r0, r0, r3 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r2, #3] + cmp r0, r1 + ble _08132B90 + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08132B96 + .align 2, 0 +_08132B88: .4byte gUnknown_2023EB0 +_08132B8C: .4byte gUnknown_2023D28 +_08132B90: + adds r0, r2, #0 + adds r0, #8 + str r0, [r4] +_08132B96: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08132B34 + + thumb_func_start sub_08132B9C +sub_08132B9C: @ 0x08132B9C + push {r4, lr} + ldr r0, _08132BB0 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08132BB8 + ldr r0, _08132BB4 + b _08132BBA + .align 2, 0 +_08132BB0: .4byte gUnknown_203A804 +_08132BB4: .4byte gUnknown_203A808 +_08132BB8: + ldr r0, _08132BF0 +_08132BBA: + ldrb r3, [r0] + ldr r1, _08132BF4 + ldr r2, [r4] + movs r0, #0x58 + muls r0, r3, r0 + ldrb r3, [r2, #2] + adds r0, r0, r3 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r2, #3] + cmp r0, r1 + bne _08132BF8 + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08132BFE + .align 2, 0 +_08132BF0: .4byte gUnknown_2023EB0 +_08132BF4: .4byte gUnknown_2023D28 +_08132BF8: + adds r0, r2, #0 + adds r0, #8 + str r0, [r4] +_08132BFE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08132B9C + + thumb_func_start sub_08132C04 +sub_08132C04: @ 0x08132C04 + push {r4, lr} + ldr r0, _08132C18 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08132C20 + ldr r0, _08132C1C + b _08132C22 + .align 2, 0 +_08132C18: .4byte gUnknown_203A804 +_08132C1C: .4byte gUnknown_203A808 +_08132C20: + ldr r0, _08132C58 +_08132C22: + ldrb r3, [r0] + ldr r1, _08132C5C + ldr r2, [r4] + movs r0, #0x58 + muls r0, r3, r0 + ldrb r3, [r2, #2] + adds r0, r0, r3 + adds r1, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r2, #3] + cmp r0, r1 + beq _08132C60 + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08132C66 + .align 2, 0 +_08132C58: .4byte gUnknown_2023EB0 +_08132C5C: .4byte gUnknown_2023D28 +_08132C60: + adds r0, r2, #0 + adds r0, #8 + str r0, [r4] +_08132C66: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08132C04 + + thumb_func_start sub_08132C6C +sub_08132C6C: @ 0x08132C6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r2, _08132D1C + ldr r0, _08132D20 + mov r8, r0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #1 + bls _08132D50 + ldr r0, _08132D24 + movs r1, #0 + strh r1, [r0] + ldr r0, _08132D28 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _08132D2C + movs r7, #1 + strb r7, [r0, #0xe] + ldr r0, _08132D30 + strb r1, [r0] + ldr r0, _08132D34 + strb r7, [r0] + ldr r5, _08132D38 + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + strh r0, [r5] + ldr r4, _08132D3C + ldrb r0, [r4] + ldr r6, _08132D40 + ldrb r1, [r6] + bl sub_08046ABC + ldrh r0, [r5] + ldrb r1, [r4] + ldrb r2, [r6] + bl sub_08047224 + ldr r4, _08132D44 + mov r1, r8 + ldr r0, [r1] + ldr r1, [r0, #0x14] + adds r0, r1, #0 + adds r0, #0x18 + ldrb r1, [r1, #1] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, [r4] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + cmp r0, #0 + bne _08132CEC + str r7, [r4] +_08132CEC: + ldr r2, _08132D48 + ldrb r1, [r6] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + ldrh r1, [r0, #0x28] + ldr r0, [r4] + cmp r1, r0 + bgt _08132D50 + ldr r3, _08132D4C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132D58 + .align 2, 0 +_08132D1C: .4byte gUnknown_82ED220 +_08132D20: .4byte gUnknown_202414C +_08132D24: .4byte gUnknown_20240A4 +_08132D28: .4byte gUnknown_2024140 +_08132D2C: .4byte gUnknown_2024118 +_08132D30: .4byte gUnknown_2023F20 +_08132D34: .4byte gUnknown_2023EB5 +_08132D38: .4byte gUnknown_2023E8E +_08132D3C: .4byte gUnknown_203A808 +_08132D40: .4byte gUnknown_2023EB0 +_08132D44: .4byte gUnknown_2023E94 +_08132D48: .4byte gUnknown_2023D28 +_08132D4C: .4byte gUnknown_203A804 +_08132D50: + ldr r1, _08132D64 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08132D58: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08132D64: .4byte gUnknown_203A804 + thumb_func_end sub_08132C6C + + thumb_func_start sub_08132D68 +sub_08132D68: @ 0x08132D68 + push {r4, r5, r6, r7, lr} + ldr r2, _08132E04 + ldr r7, _08132E08 + ldr r0, [r7] + ldr r0, [r0, #0x14] + ldrh r1, [r0, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + cmp r0, #1 + bls _08132E38 + ldr r0, _08132E0C + movs r1, #0 + strh r1, [r0] + ldr r0, _08132E10 + ldr r0, [r0] + strb r1, [r0, #0x13] + ldr r0, _08132E14 + movs r2, #1 + strb r2, [r0, #0xe] + ldr r0, _08132E18 + strb r1, [r0] + ldr r0, _08132E1C + strb r2, [r0] + ldr r6, _08132E20 + ldr r0, [r7] + ldr r0, [r0, #0x14] + ldrh r0, [r0, #2] + strh r0, [r6] + ldr r4, _08132E24 + ldrb r0, [r4] + ldr r5, _08132E28 + ldrb r1, [r5] + bl sub_08046ABC + ldrh r0, [r6] + ldrb r1, [r4] + ldrb r2, [r5] + bl sub_08047224 + ldr r4, _08132E2C + ldr r0, [r7] + ldr r1, [r0, #0x14] + adds r0, r1, #0 + adds r0, #0x18 + ldrb r1, [r1, #1] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, [r4] + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + str r0, [r4] + ldr r3, _08132E30 + ldrb r2, [r5] + movs r1, #0x58 + muls r1, r2, r1 + adds r1, r1, r3 + ldrh r1, [r1, #0x28] + cmp r1, r0 + ble _08132E38 + ldr r3, _08132E34 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08132E40 + .align 2, 0 +_08132E04: .4byte gUnknown_82ED220 +_08132E08: .4byte gUnknown_202414C +_08132E0C: .4byte gUnknown_20240A4 +_08132E10: .4byte gUnknown_2024140 +_08132E14: .4byte gUnknown_2024118 +_08132E18: .4byte gUnknown_2023F20 +_08132E1C: .4byte gUnknown_2023EB5 +_08132E20: .4byte gUnknown_2023E8E +_08132E24: .4byte gUnknown_203A808 +_08132E28: .4byte gUnknown_2023EB0 +_08132E2C: .4byte gUnknown_2023E94 +_08132E30: .4byte gUnknown_2023D28 +_08132E34: .4byte gUnknown_203A804 +_08132E38: + ldr r1, _08132E48 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08132E40: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08132E48: .4byte gUnknown_203A804 + thumb_func_end sub_08132D68 + + thumb_func_start sub_08132E4C +sub_08132E4C: @ 0x08132E4C + push {r4, r5, r6, r7, lr} + ldr r0, _08132E68 + ldr r5, [r0] + adds r7, r5, #2 + ldrb r1, [r5, #1] + adds r6, r0, #0 + cmp r1, #1 + beq _08132E76 + cmp r1, #1 + bgt _08132E6C + cmp r1, #0 + beq _08132F10 + b _08132F74 + .align 2, 0 +_08132E68: .4byte gUnknown_203A804 +_08132E6C: + cmp r1, #2 + beq _08132F10 + cmp r1, #3 + beq _08132EB8 + b _08132F74 +_08132E76: + movs r4, #0 + ldr r3, _08132EB0 + ldr r2, _08132EB4 + ldrb r1, [r2] + movs r0, #0x58 + muls r0, r1, r0 + adds r3, #0xc + adds r0, r0, r3 + ldrh r0, [r0] + ldrh r5, [r5, #2] + cmp r0, r5 + beq _08132EA8 + movs r5, #0x58 +_08132E90: + adds r4, #1 + cmp r4, #3 + bgt _08132EA8 + lsls r1, r4, #1 + ldrb r0, [r2] + muls r0, r5, r0 + adds r1, r1, r0 + adds r1, r1, r3 + ldrh r0, [r1] + ldrh r1, [r7] + cmp r0, r1 + bne _08132E90 +_08132EA8: + cmp r4, #4 + beq _08132F4C + b _08132F5C + .align 2, 0 +_08132EB0: .4byte gUnknown_2023D28 +_08132EB4: .4byte gUnknown_203A808 +_08132EB8: + ldr r3, _08132ED4 + ldr r2, _08132ED8 + ldrb r1, [r2] + movs r0, #2 + eors r0, r1 + movs r1, #0x58 + muls r1, r0, r1 + adds r0, r1, r3 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _08132EDC + adds r0, r5, #0 + b _08132F4E + .align 2, 0 +_08132ED4: .4byte gUnknown_2023D28 +_08132ED8: .4byte gUnknown_203A808 +_08132EDC: + movs r4, #0 + adds r3, #0xc + adds r0, r1, r3 + ldrh r0, [r0] + ldrh r5, [r5, #2] + cmp r0, r5 + beq _08132EA8 + mov ip, r3 + adds r5, r2, #0 + movs r3, #2 +_08132EF0: + adds r4, #1 + cmp r4, #3 + bgt _08132EA8 + lsls r1, r4, #1 + ldrb r0, [r5] + adds r2, r3, #0 + eors r2, r0 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, r1, r0 + add r1, ip + ldrh r0, [r1] + ldrh r1, [r7] + cmp r0, r1 + bne _08132EF0 + b _08132EA8 +_08132F10: + movs r4, #0 + ldr r3, _08132F54 + ldr r0, [r3] + ldr r1, [r0, #0x18] + ldr r2, _08132F58 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r1, [r7] + cmp r0, r1 + beq _08132F48 + adds r7, r3, #0 + adds r5, r2, #0 + adds r3, r1, #0 +_08132F2E: + adds r4, #1 + cmp r4, #3 + bgt _08132F48 + ldr r0, [r7] + ldr r2, [r0, #0x18] + lsls r1, r4, #1 + ldrb r0, [r5] + lsls r0, r0, #4 + adds r1, r1, r0 + adds r2, r2, r1 + ldrh r0, [r2] + cmp r0, r3 + bne _08132F2E +_08132F48: + cmp r4, #4 + bne _08132F5C +_08132F4C: + ldr r0, [r6] +_08132F4E: + adds r0, #8 + str r0, [r6] + b _08132F74 + .align 2, 0 +_08132F54: .4byte gUnknown_202414C +_08132F58: .4byte gUnknown_2023EB0 +_08132F5C: + ldr r2, [r6] + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r6] +_08132F74: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08132E4C + + thumb_func_start sub_08132F7C +sub_08132F7C: @ 0x08132F7C + push {r4, r5, r6, r7, lr} + ldr r1, _08132F98 + ldr r0, [r1] + adds r6, r0, #2 + ldrb r0, [r0, #1] + adds r5, r1, #0 + cmp r0, #1 + beq _08132FA4 + cmp r0, #1 + bgt _08132F9C + cmp r0, #0 + beq _08132FE8 + b _0813304C + .align 2, 0 +_08132F98: .4byte gUnknown_203A804 +_08132F9C: + cmp r0, #2 + beq _08132FE8 + cmp r0, #3 + bne _0813304C +_08132FA4: + movs r3, #0 + ldr r2, _08132FE0 + ldr r4, _08132FE4 + ldrb r1, [r4] + movs r0, #0x58 + muls r0, r1, r0 + adds r2, #0xc + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r1, [r6] + cmp r0, r1 + beq _08132FDA + adds r7, r4, #0 + movs r6, #0x58 + adds r4, r2, #0 + adds r2, r1, #0 +_08132FC4: + adds r3, #1 + cmp r3, #3 + bgt _08132FDA + lsls r1, r3, #1 + ldrb r0, [r7] + muls r0, r6, r0 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r0, [r1] + cmp r0, r2 + bne _08132FC4 +_08132FDA: + cmp r3, #4 + bne _08133024 + b _08133034 + .align 2, 0 +_08132FE0: .4byte gUnknown_2023D28 +_08132FE4: .4byte gUnknown_203A808 +_08132FE8: + movs r3, #0 + ldr r4, _0813302C + ldr r0, [r4] + ldr r1, [r0, #0x18] + ldr r2, _08133030 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r1, [r6] + cmp r0, r1 + beq _08133020 + adds r7, r4, #0 + adds r6, r2, #0 + adds r4, r1, #0 +_08133006: + adds r3, #1 + cmp r3, #3 + bgt _08133020 + ldr r0, [r7] + ldr r2, [r0, #0x18] + lsls r1, r3, #1 + ldrb r0, [r6] + lsls r0, r0, #4 + adds r1, r1, r0 + adds r2, r2, r1 + ldrh r0, [r2] + cmp r0, r4 + bne _08133006 +_08133020: + cmp r3, #4 + beq _08133034 +_08133024: + ldr r0, [r5] + adds r0, #8 + str r0, [r5] + b _0813304C + .align 2, 0 +_0813302C: .4byte gUnknown_202414C +_08133030: .4byte gUnknown_2023EB0 +_08133034: + ldr r2, [r5] + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] +_0813304C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08132F7C + + thumb_func_start sub_08133054 +sub_08133054: @ 0x08133054 + push {r4, r5, r6, r7, lr} + ldr r1, _0813306C + ldr r0, [r1] + ldrb r0, [r0, #1] + adds r5, r1, #0 + cmp r0, #1 + beq _08133078 + cmp r0, #1 + bgt _08133070 + cmp r0, #0 + beq _081330C4 + b _08133144 + .align 2, 0 +_0813306C: .4byte gUnknown_203A804 +_08133070: + cmp r0, #2 + beq _081330C4 + cmp r0, #3 + bne _08133144 +_08133078: + movs r3, #0 + ldr r1, _081330B4 + ldr r0, _081330B8 + ldrb r2, [r0] + ldr r6, _081330BC + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r2, r0, r1 + ldr r4, _081330C0 +_0813308C: + ldrh r0, [r2] + cmp r0, #0 + beq _081330A6 + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r4] + ldrb r0, [r0] + ldrb r1, [r1, #2] + cmp r0, r1 + beq _081330AE +_081330A6: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _0813308C +_081330AE: + cmp r3, #4 + beq _08133110 + b _0813312C + .align 2, 0 +_081330B4: .4byte gUnknown_2023D28 +_081330B8: .4byte gUnknown_203A808 +_081330BC: .4byte gUnknown_82ED220 +_081330C0: .4byte gUnknown_203A804 +_081330C4: + movs r3, #0 + ldr r1, _08133118 + ldr r0, _0813311C + ldrb r2, [r0] + ldr r0, _08133120 + mov ip, r0 + ldr r7, _08133124 + ldr r6, _08133128 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r4, r0, r1 +_081330DC: + lsls r2, r3, #1 + ldrh r0, [r4] + cmp r0, #0 + beq _08133104 + ldr r0, [r7] + ldr r1, [r0, #0x18] + ldrb r0, [r6] + lsls r0, r0, #4 + adds r0, r2, r0 + adds r1, r1, r0 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldr r1, [r5] + ldrb r0, [r0] + ldrb r1, [r1, #2] + cmp r0, r1 + beq _0813310C +_08133104: + adds r4, #2 + adds r3, #1 + cmp r3, #3 + ble _081330DC +_0813310C: + cmp r3, #4 + bne _0813312C +_08133110: + ldr r0, [r5] + adds r0, #7 + str r0, [r5] + b _08133144 + .align 2, 0 +_08133118: .4byte gUnknown_2023D28 +_0813311C: .4byte gUnknown_203A808 +_08133120: .4byte gUnknown_82ED220 +_08133124: .4byte gUnknown_202414C +_08133128: .4byte gUnknown_2023EB0 +_0813312C: + ldr r2, [r5] + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] +_08133144: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08133054 + + thumb_func_start sub_0813314C +sub_0813314C: @ 0x0813314C + push {r4, r5, r6, lr} + ldr r1, _08133164 + ldr r0, [r1] + ldrb r0, [r0, #1] + adds r4, r1, #0 + cmp r0, #1 + beq _08133170 + cmp r0, #1 + bgt _08133168 + cmp r0, #0 + beq _081331BC + b _08133228 + .align 2, 0 +_08133164: .4byte gUnknown_203A804 +_08133168: + cmp r0, #2 + beq _081331BC + cmp r0, #3 + bne _08133228 +_08133170: + movs r3, #0 + ldr r1, _081331AC + ldr r0, _081331B0 + ldrb r2, [r0] + ldr r6, _081331B4 + movs r0, #0x58 + muls r0, r2, r0 + adds r1, #0xc + adds r2, r0, r1 + ldr r5, _081331B8 +_08133184: + ldrh r0, [r2] + cmp r0, #0 + beq _0813319E + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r5] + ldrb r0, [r0] + ldrb r1, [r1, #2] + cmp r0, r1 + beq _081331A6 +_0813319E: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _08133184 +_081331A6: + cmp r3, #4 + bne _081331F6 + b _08133210 + .align 2, 0 +_081331AC: .4byte gUnknown_2023D28 +_081331B0: .4byte gUnknown_203A808 +_081331B4: .4byte gUnknown_82ED220 +_081331B8: .4byte gUnknown_203A804 +_081331BC: + movs r3, #0 + ldr r0, _08133200 + ldr r0, [r0] + ldr r1, [r0, #0x18] + ldr r0, _08133204 + ldrb r0, [r0] + ldr r6, _08133208 + lsls r0, r0, #4 + adds r2, r0, r1 + ldr r5, _0813320C +_081331D0: + ldrh r0, [r2] + cmp r0, #0 + beq _081331EA + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r5] + ldrb r0, [r0] + ldrb r1, [r1, #2] + cmp r0, r1 + beq _081331F2 +_081331EA: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _081331D0 +_081331F2: + cmp r3, #4 + beq _08133210 +_081331F6: + ldr r0, [r4] + adds r0, #7 + str r0, [r4] + b _08133228 + .align 2, 0 +_08133200: .4byte gUnknown_202414C +_08133204: .4byte gUnknown_2023EB0 +_08133208: .4byte gUnknown_82ED220 +_0813320C: .4byte gUnknown_203A804 +_08133210: + ldr r2, [r4] + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] +_08133228: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813314C + + thumb_func_start sub_08133230 +sub_08133230: @ 0x08133230 + push {r4, r5, lr} + ldr r0, _08133244 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r5, r0, #0 + cmp r1, #1 + bne _0813324C + ldr r0, _08133248 + b _0813324E + .align 2, 0 +_08133244: .4byte gUnknown_203A804 +_08133248: .4byte gUnknown_203A808 +_0813324C: + ldr r0, _0813326C +_0813324E: + ldrb r3, [r0] + adds r4, r5, #0 + ldr r2, [r4] + ldrb r0, [r2, #2] + cmp r0, #0 + bne _08133274 + ldr r0, _08133270 + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #4] + cmp r0, #0 + beq _08133278 + b _0813328E + .align 2, 0 +_0813326C: .4byte gUnknown_2023EB0 +_08133270: .4byte gUnknown_2023F60 +_08133274: + cmp r0, #1 + beq _0813327E +_08133278: + adds r0, r2, #7 + str r0, [r4] + b _081332B0 +_0813327E: + ldr r0, _081332A8 + lsls r1, r3, #3 + subs r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + cmp r0, #0 + beq _081332AC +_0813328E: + ldrb r1, [r2, #3] + ldrb r0, [r2, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081332B0 + .align 2, 0 +_081332A8: .4byte gUnknown_2023F60 +_081332AC: + adds r0, r2, #7 + str r0, [r5] +_081332B0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08133230 + + thumb_func_start sub_081332B8 +sub_081332B8: @ 0x081332B8 + push {r4, lr} + ldr r4, _081332CC + ldr r3, [r4] + ldrb r0, [r3, #1] + cmp r0, #0 + beq _081332D0 + cmp r0, #1 + beq _081332FC + b _0813333C + .align 2, 0 +_081332CC: .4byte gUnknown_203A804 +_081332D0: + ldr r2, _081332F0 + ldr r0, _081332F4 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081332F8 + ldr r1, [r1] + ldr r1, [r1, #0x14] + ldrh r0, [r0, #4] + ldrh r1, [r1, #2] + cmp r0, r1 + beq _08133318 + b _0813333C + .align 2, 0 +_081332F0: .4byte gUnknown_2023F60 +_081332F4: .4byte gUnknown_2023D08 +_081332F8: .4byte gUnknown_202414C +_081332FC: + ldr r2, _08133330 + ldr r0, _08133334 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08133338 + ldr r1, [r1] + ldr r1, [r1, #0x14] + ldrh r0, [r0, #6] + ldrh r1, [r1, #2] + cmp r0, r1 + bne _0813333C +_08133318: + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08133340 + .align 2, 0 +_08133330: .4byte gUnknown_2023F60 +_08133334: .4byte gUnknown_2023D08 +_08133338: .4byte gUnknown_202414C +_0813333C: + adds r0, r3, #6 + str r0, [r4] +_08133340: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081332B8 + + thumb_func_start sub_08133348 +sub_08133348: @ 0x08133348 + ldr r0, _08133358 + 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 +_08133358: .4byte gUnknown_202414C + thumb_func_end sub_08133348 + + thumb_func_start sub_0813335C +sub_0813335C: @ 0x0813335C + push {r4, lr} + ldr r0, _081333A0 + ldr r0, [r0] + adds r0, #0x7b + ldrb r0, [r0] + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r4 + bhs _081333A8 + ldr r3, _081333A4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081333B0 + .align 2, 0 +_081333A0: .4byte gUnknown_2024140 +_081333A4: .4byte gUnknown_203A804 +_081333A8: + ldr r1, _081333B8 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_081333B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081333B8: .4byte gUnknown_203A804 + thumb_func_end sub_0813335C + + thumb_func_start sub_081333BC +sub_081333BC: @ 0x081333BC + ldr r0, _081333CC + 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 +_081333CC: .4byte gUnknown_202414C + thumb_func_end sub_081333BC + + thumb_func_start sub_081333D0 +sub_081333D0: @ 0x081333D0 + push {r4, lr} + ldr r0, _081333E0 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _081333E8 + ldr r0, _081333E4 + b _081333EA + .align 2, 0 +_081333E0: .4byte gUnknown_203A804 +_081333E4: .4byte gUnknown_203A808 +_081333E8: + ldr r0, _08133408 +_081333EA: + ldrb r2, [r0] + ldr r0, _0813340C + ldrb r0, [r0] + cmp r0, r2 + beq _08133414 + ldr r4, _08133410 + ldr r0, [r4] + ldr r0, [r0, #0x18] + adds r0, #0x44 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_080D6CF8 + ldr r1, [r4] + b _08133426 + .align 2, 0 +_08133408: .4byte gUnknown_2023EB0 +_0813340C: .4byte gUnknown_2023D08 +_08133410: .4byte gUnknown_202414C +_08133414: + ldr r1, _0813343C + movs r0, #0x58 + muls r0, r2, r0 + adds r0, r0, r1 + ldrh r0, [r0, #0x2e] + bl sub_080D6CF8 + ldr r1, _08133440 + ldr r1, [r1] +_08133426: + ldr r1, [r1, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1, #8] + ldr r1, _08133444 + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813343C: .4byte gUnknown_2023D28 +_08133440: .4byte gUnknown_202414C +_08133444: .4byte gUnknown_203A804 + thumb_func_end sub_081333D0 + + thumb_func_start sub_08133448 +sub_08133448: @ 0x08133448 + push {r4, lr} + ldr r0, _08133474 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_08131EA4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r0, #1 + ldr r1, _08133478 + ldrb r2, [r1] + adds r1, r3, #0 + ands r1, r0 + ands r0, r2 + cmp r1, r0 + bne _08133480 + ldr r1, _0813347C + movs r0, #0x58 + muls r0, r3, r0 + adds r0, r0, r1 + ldrh r3, [r0, #0x2e] + b _0813348C + .align 2, 0 +_08133474: .4byte gUnknown_203A804 +_08133478: .4byte gUnknown_203A808 +_0813347C: .4byte gUnknown_2023D28 +_08133480: + ldr r0, _081334B4 + ldr r0, [r0] + ldr r0, [r0, #0x18] + adds r0, #0x44 + adds r0, r0, r3 + ldrb r3, [r0] +_0813348C: + ldr r4, _081334B8 + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + orrs r0, r1 + cmp r0, r3 + bne _081334BC + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081334C2 + .align 2, 0 +_081334B4: .4byte gUnknown_202414C +_081334B8: .4byte gUnknown_203A804 +_081334BC: + adds r0, r2, #0 + adds r0, #8 + str r0, [r4] +_081334C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08133448 + + thumb_func_start sub_081334C8 +sub_081334C8: @ 0x081334C8 + push {lr} + ldr r0, _081334D8 + ldr r0, [r0] + ldrb r0, [r0, #1] + cmp r0, #1 + bne _081334E0 + ldr r0, _081334DC + b _081334E2 + .align 2, 0 +_081334D8: .4byte gUnknown_203A804 +_081334DC: .4byte gUnknown_203A808 +_081334E0: + ldr r0, _08133510 +_081334E2: + ldrb r1, [r0] + ldr r2, _08133514 + movs r0, #0x58 + muls r1, r0, r1 + adds r0, r1, r2 + ldrh r0, [r0] + adds r2, #0x48 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08069B60 + ldr r1, _08133518 + ldr r1, [r1] + ldr r1, [r1, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1, #8] + ldr r1, _0813351C + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08133510: .4byte gUnknown_2023EB0 +_08133514: .4byte gUnknown_2023D28 +_08133518: .4byte gUnknown_202414C +_0813351C: .4byte gUnknown_203A804 + thumb_func_end sub_081334C8 + + thumb_func_start sub_08133520 +sub_08133520: @ 0x08133520 + push {r4, lr} + ldr r0, _08133534 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _0813353C + ldr r0, _08133538 + b _0813353E + .align 2, 0 +_08133534: .4byte gUnknown_203A804 +_08133538: .4byte gUnknown_203A808 +_0813353C: + ldr r0, _08133560 +_0813353E: + ldrb r3, [r0] + ldr r0, _08133564 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _08133568 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] + str r0, [r2, #8] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08133560: .4byte gUnknown_2023EB0 +_08133564: .4byte gUnknown_202414C +_08133568: .4byte gUnknown_2023F60 + thumb_func_end sub_08133520 + + thumb_func_start sub_0813356C +sub_0813356C: @ 0x0813356C + push {r4, lr} + ldr r0, _08133580 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _08133588 + ldr r0, _08133584 + b _0813358A + .align 2, 0 +_08133580: .4byte gUnknown_203A804 +_08133584: .4byte gUnknown_203A808 +_08133588: + ldr r0, _081335AC +_0813358A: + ldrb r3, [r0] + ldr r0, _081335B0 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _081335B4 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #9] + str r0, [r2, #8] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081335AC: .4byte gUnknown_2023EB0 +_081335B0: .4byte gUnknown_202414C +_081335B4: .4byte gUnknown_2023F60 + thumb_func_end sub_0813356C + + thumb_func_start sub_081335B8 +sub_081335B8: @ 0x081335B8 + ldr r0, _081335D4 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r0, _081335D8 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + str r0, [r2, #8] + ldr r1, _081335DC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_081335D4: .4byte gUnknown_202414C +_081335D8: .4byte gUnknown_2022C90 +_081335DC: .4byte gUnknown_203A804 + thumb_func_end sub_081335B8 + + thumb_func_start sub_081335E0 +sub_081335E0: @ 0x081335E0 + push {r4, lr} + ldr r0, _081335F4 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _081335FC + ldr r0, _081335F8 + b _081335FE + .align 2, 0 +_081335F4: .4byte gUnknown_203A804 +_081335F8: .4byte gUnknown_203A808 +_081335FC: + ldr r0, _08133620 +_081335FE: + ldrb r3, [r0] + ldr r0, _08133624 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r0, _08133628 + ldr r1, [r0] + lsls r0, r3, #1 + adds r0, r0, r1 + adds r0, #0xb8 + ldrb r0, [r0] + str r0, [r2, #8] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08133620: .4byte gUnknown_2023EB0 +_08133624: .4byte gUnknown_202414C +_08133628: .4byte gUnknown_2024140 + thumb_func_end sub_081335E0 + + thumb_func_start sub_0813362C +sub_0813362C: @ 0x0813362C + ldr r0, _0813364C + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _08133650 + ldr r1, [r3, #8] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + str r0, [r3, #8] + ldr r1, _08133654 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_0813364C: .4byte gUnknown_202414C +_08133650: .4byte gUnknown_82ED220 +_08133654: .4byte gUnknown_203A804 + thumb_func_end sub_0813362C + + thumb_func_start sub_08133658 +sub_08133658: @ 0x08133658 + ldr r0, _08133678 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _0813367C + ldr r1, [r3, #8] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + str r0, [r3, #8] + ldr r1, _08133680 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08133678: .4byte gUnknown_202414C +_0813367C: .4byte gUnknown_82ED220 +_08133680: .4byte gUnknown_203A804 + thumb_func_end sub_08133658 + + thumb_func_start sub_08133684 +sub_08133684: @ 0x08133684 + ldr r0, _081336A4 + ldr r0, [r0] + ldr r3, [r0, #0x14] + ldr r2, _081336A8 + ldr r1, [r3, #8] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + str r0, [r3, #8] + ldr r1, _081336AC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_081336A4: .4byte gUnknown_202414C +_081336A8: .4byte gUnknown_82ED220 +_081336AC: .4byte gUnknown_203A804 + thumb_func_end sub_08133684 + + thumb_func_start sub_081336B0 +sub_081336B0: @ 0x081336B0 + push {r4, lr} + ldr r0, _081336C4 + ldr r1, [r0] + ldrb r1, [r1, #1] + adds r4, r0, #0 + cmp r1, #1 + bne _081336CC + ldr r0, _081336C8 + b _081336CE + .align 2, 0 +_081336C4: .4byte gUnknown_203A804 +_081336C8: .4byte gUnknown_203A808 +_081336CC: + ldr r0, _081336F0 +_081336CE: + ldrb r3, [r0] + ldr r0, _081336F4 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldr r1, _081336F8 + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #8] + str r0, [r2, #8] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081336F0: .4byte gUnknown_2023EB0 +_081336F4: .4byte gUnknown_202414C +_081336F8: .4byte gUnknown_2023F60 + thumb_func_end sub_081336B0 + + thumb_func_start sub_081336FC +sub_081336FC: @ 0x081336FC + bx lr + .align 2, 0 + thumb_func_end sub_081336FC + + thumb_func_start sub_08133700 +sub_08133700: @ 0x08133700 + bx lr + .align 2, 0 + thumb_func_end sub_08133700 + + thumb_func_start sub_08133704 +sub_08133704: @ 0x08133704 + bx lr + .align 2, 0 + thumb_func_end sub_08133704 + + thumb_func_start sub_08133708 +sub_08133708: @ 0x08133708 + bx lr + .align 2, 0 + thumb_func_end sub_08133708 + + thumb_func_start sub_0813370C +sub_0813370C: @ 0x0813370C + bx lr + .align 2, 0 + thumb_func_end sub_0813370C + + thumb_func_start sub_08133710 +sub_08133710: @ 0x08133710 + bx lr + .align 2, 0 + thumb_func_end sub_08133710 + + thumb_func_start sub_08133714 +sub_08133714: @ 0x08133714 + push {r4, lr} + ldr r4, _08133740 + ldr r0, [r4] + adds r0, #5 + bl sub_081339A0 + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08133740: .4byte gUnknown_203A804 + thumb_func_end sub_08133714 + + thumb_func_start sub_08133744 +sub_08133744: @ 0x08133744 + ldr r3, _08133760 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_08133760: .4byte gUnknown_203A804 + thumb_func_end sub_08133744 + + thumb_func_start sub_08133764 +sub_08133764: @ 0x08133764 + push {lr} + bl sub_081339EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813377E + ldr r0, _08133784 + ldr r0, [r0] + ldr r2, [r0, #0x14] + ldrb r1, [r2, #0x10] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #0x10] +_0813377E: + pop {r0} + bx r0 + .align 2, 0 +_08133784: .4byte gUnknown_202414C + thumb_func_end sub_08133764 + + thumb_func_start sub_08133788 +sub_08133788: @ 0x08133788 + push {r4, r5, lr} + ldr r5, _081337A0 + ldr r4, [r5] + ldrb r0, [r4, #1] + cmp r0, #1 + beq _081337DC + cmp r0, #1 + bgt _081337A4 + cmp r0, #0 + beq _081337AA + b _08133858 + .align 2, 0 +_081337A0: .4byte gUnknown_203A804 +_081337A4: + cmp r0, #2 + beq _0813380C + b _08133858 +_081337AA: + ldr r3, _081337D0 + ldr r0, _081337D4 + ldrb r0, [r0] + movs r2, #0x58 + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r3 + adds r1, #0x2a + ldr r0, _081337D8 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bhi _0813382E + b _08133854 + .align 2, 0 +_081337D0: .4byte gUnknown_2023D28 +_081337D4: .4byte gUnknown_203A808 +_081337D8: .4byte gUnknown_2023EB0 +_081337DC: + ldr r3, _08133800 + ldr r0, _08133804 + ldrb r0, [r0] + movs r2, #0x58 + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r3 + adds r1, #0x2a + ldr r0, _08133808 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + blo _0813382E + b _08133854 + .align 2, 0 +_08133800: .4byte gUnknown_2023D28 +_08133804: .4byte gUnknown_203A808 +_08133808: .4byte gUnknown_2023EB0 +_0813380C: + ldr r3, _08133848 + ldr r0, _0813384C + ldrb r0, [r0] + movs r2, #0x58 + adds r1, r0, #0 + muls r1, r2, r1 + adds r1, r1, r3 + adds r1, #0x2a + ldr r0, _08133850 + ldrb r0, [r0] + muls r0, r2, r0 + adds r0, r0, r3 + adds r0, #0x2a + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _08133854 +_0813382E: + ldrb r1, [r4, #2] + ldrb r0, [r4, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r4, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r4, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r5] + b _08133858 + .align 2, 0 +_08133848: .4byte gUnknown_2023D28 +_0813384C: .4byte gUnknown_203A808 +_08133850: .4byte gUnknown_2023EB0 +_08133854: + adds r0, r4, #6 + str r0, [r5] +_08133858: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08133788 + + thumb_func_start sub_08133860 +sub_08133860: @ 0x08133860 + push {lr} + ldr r2, _08133894 + ldr r0, _08133898 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x1c + cmp r0, #0 + beq _081338A0 + ldr r3, _0813389C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081338A8 + .align 2, 0 +_08133894: .4byte gUnknown_2023F60 +_08133898: .4byte gUnknown_2023EB0 +_0813389C: .4byte gUnknown_203A804 +_081338A0: + ldr r1, _081338AC + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_081338A8: + pop {r0} + bx r0 + .align 2, 0 +_081338AC: .4byte gUnknown_203A804 + thumb_func_end sub_08133860 + + thumb_func_start sub_081338B0 +sub_081338B0: @ 0x081338B0 + push {lr} + ldr r2, _081338E4 + ldr r0, _081338E8 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x1c + cmp r0, #0 + bne _081338F0 + ldr r3, _081338EC + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081338F8 + .align 2, 0 +_081338E4: .4byte gUnknown_2023F60 +_081338E8: .4byte gUnknown_2023EB0 +_081338EC: .4byte gUnknown_203A804 +_081338F0: + ldr r1, _081338FC + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_081338F8: + pop {r0} + bx r0 + .align 2, 0 +_081338FC: .4byte gUnknown_203A804 + thumb_func_end sub_081338B0 + + thumb_func_start sub_08133900 +sub_08133900: @ 0x08133900 + push {lr} + ldr r0, _08133934 + ldrb r3, [r0] + movs r0, #1 + ldr r1, _08133938 + ldrb r2, [r1] + adds r1, r0, #0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _08133940 + ldr r3, _0813393C + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08133948 + .align 2, 0 +_08133934: .4byte gUnknown_203A808 +_08133938: .4byte gUnknown_2023EB0 +_0813393C: .4byte gUnknown_203A804 +_08133940: + ldr r1, _0813394C + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_08133948: + pop {r0} + bx r0 + .align 2, 0 +_0813394C: .4byte gUnknown_203A804 + thumb_func_end sub_08133900 + + thumb_func_start sub_08133950 +sub_08133950: @ 0x08133950 + push {r4, lr} + ldr r4, _0813398C + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_08131EA4 + lsls r0, r0, #0x18 + ldr r1, _08133990 + ldr r1, [r1] + ldr r1, [r1, #4] + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, [r1] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08133994 + ldr r2, [r4] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _0813399A + .align 2, 0 +_0813398C: .4byte gUnknown_203A804 +_08133990: .4byte gUnknown_202414C +_08133994: + ldr r0, [r4] + adds r0, #6 + str r0, [r4] +_0813399A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08133950 + + thumb_func_start sub_081339A0 +sub_081339A0: @ 0x081339A0 + push {r4, lr} + ldr r1, _081339C0 + ldr r1, [r1] + ldr r3, [r1, #0x1c] + adds r4, r3, #0 + adds r4, #0x20 + ldrb r1, [r4] + adds r2, r1, #1 + strb r2, [r4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x16 + adds r3, r3, r1 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081339C0: .4byte gUnknown_202414C + thumb_func_end sub_081339A0 + + thumb_func_start sub_081339C4 +sub_081339C4: @ 0x081339C4 + ldr r0, _081339E4 + ldr r0, [r0] + ldr r2, [r0, #0x1c] + adds r3, r2, #0 + adds r3, #0x20 + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r2, r2, r0 + ldr r0, _081339E8 + ldr r0, [r0] + str r0, [r2] + bx lr + .align 2, 0 +_081339E4: .4byte gUnknown_202414C +_081339E8: .4byte gUnknown_203A804 + thumb_func_end sub_081339C4 + + thumb_func_start sub_081339EC +sub_081339EC: @ 0x081339EC + push {lr} + ldr r3, _08133A04 + ldr r0, [r3] + ldr r0, [r0, #0x1c] + adds r1, r0, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, #0 + bne _08133A08 + movs r0, #0 + b _08133A22 + .align 2, 0 +_08133A04: .4byte gUnknown_202414C +_08133A08: + subs r0, #1 + strb r0, [r1] + ldr r2, _08133A28 + ldr r0, [r3] + ldr r1, [r0, #0x1c] + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + movs r0, #1 +_08133A22: + pop {r1} + bx r1 + .align 2, 0 +_08133A28: .4byte gUnknown_203A804 + thumb_func_end sub_081339EC + + thumb_func_start sub_08133A2C +sub_08133A2C: @ 0x08133A2C + push {r4, r5, r6, lr} + ldr r0, _08133A80 + ldr r1, [r0] + ldr r0, _08133A84 + adds r5, r1, r0 + movs r2, #0 + movs r0, #2 + strb r0, [r5] + ldr r0, _08133A88 + adds r1, r1, r0 + strb r2, [r1] + movs r4, #0 + ldr r6, _08133A8C +_08133A46: + movs r0, #0xb + muls r0, r4, r0 + adds r0, #5 + adds r0, r5, r0 + lsls r1, r4, #2 + adds r1, r1, r6 + ldr r1, [r1] + bl sub_080088B8 + adds r1, r5, #1 + adds r1, r1, r4 + ldr r0, _08133A90 + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x32 + adds r0, r0, r4 + movs r1, #1 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08133A46 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133A80: .4byte gUnknown_3005AEC +_08133A84: .4byte 0x00002E28 +_08133A88: .4byte 0x00002E59 +_08133A8C: .4byte gUnknown_858F7F4 +_08133A90: .4byte gUnknown_858F804 + thumb_func_end sub_08133A2C + + thumb_func_start sub_08133A94 +sub_08133A94: @ 0x08133A94 + ldr r0, _08133AA4 + ldr r0, [r0] + ldr r1, _08133AA8 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_08133AA4: .4byte gUnknown_3005AEC +_08133AA8: .4byte 0x00002E59 + thumb_func_end sub_08133A94 + + thumb_func_start sub_08133AAC +sub_08133AAC: @ 0x08133AAC + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08133B0C + adds r5, r1, r0 + ldr r0, _08133B10 + ldr r0, [r0] + ldr r1, _08133B14 + adds r6, r0, r1 + ldr r0, _08133B18 + bl sub_08003250 + strh r0, [r5, #6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x85 + lsls r2, r2, #2 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + movs r4, #0 +_08133AE0: + adds r0, r6, #1 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0x78 + bls _08133B20 + ldrb r0, [r5, #6] + lsls r1, r4, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + ldr r2, _08133B1C + movs r3, #8 + bl sub_0800449C + b _08133B48 + .align 2, 0 +_08133B0C: .4byte gUnknown_3005B68 +_08133B10: .4byte gUnknown_3005AEC +_08133B14: .4byte 0x00002E28 +_08133B18: .4byte gUnknown_858F808 +_08133B1C: .4byte gUnknown_85C93F9 +_08133B20: + ldrb r0, [r5, #6] + ldrb r1, [r1] + lsls r2, r1, #3 + subs r2, r2, r1 + lsls r2, r2, #2 + ldr r1, _08133B94 + adds r2, r2, r1 + lsls r1, r4, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C +_08133B48: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08133AE0 + ldrb r0, [r5, #6] + ldr r2, _08133B98 + lsls r1, r4, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5, #6] + movs r1, #0x10 + str r1, [sp] + movs r1, #5 + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133B94: .4byte gUnknown_8580CD1 +_08133B98: .4byte gUnknown_85C93C8 + thumb_func_end sub_08133AAC + + thumb_func_start sub_08133B9C +sub_08133B9C: @ 0x08133B9C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08133BC0 + adds r4, r0, r1 + cmp r2, #0x78 + bls _08133BCC + ldr r1, _08133BC4 + ldr r2, _08133BC8 + adds r0, r2, #0 + strh r0, [r1] + b _08133BD0 + .align 2, 0 +_08133BC0: .4byte gUnknown_3005B68 +_08133BC4: .4byte gUnknown_2037280 +_08133BC8: .4byte 0x0000FFFF +_08133BCC: + ldr r0, _08133BFC + strh r2, [r0] +_08133BD0: + ldrb r0, [r4, #6] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4, #6] + bl sub_08003774 + ldrb r0, [r4, #6] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08133BFC: .4byte gUnknown_2037280 + thumb_func_end sub_08133B9C + + thumb_func_start sub_08133C00 +sub_08133C00: @ 0x08133C00 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08133C2C + ldr r0, [r0] + ldr r1, _08133C30 + adds r5, r0, r1 + bl sub_0819867C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08133C38 + cmp r1, r0 + bgt _08133C34 + subs r0, #1 + cmp r1, r0 + beq _08133C70 + b _08133C48 + .align 2, 0 +_08133C2C: .4byte gUnknown_3005AEC +_08133C30: .4byte 0x00002E28 +_08133C34: + cmp r1, #4 + bne _08133C48 +_08133C38: + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + movs r1, #0 + bl sub_08133B9C + b _08133C70 +_08133C48: + movs r0, #5 + bl sub_080A306C + ldr r0, _08133C78 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + strh r4, [r0] + ldr r0, _08133C7C + movs r1, #0xb + muls r1, r4, r1 + adds r1, #5 + adds r1, r5, r1 + bl sub_080088B8 + adds r0, r5, #1 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_08133B9C +_08133C70: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133C78: .4byte gUnknown_2037282 +_08133C7C: .4byte gUnknown_2021C40 + thumb_func_end sub_08133C00 + + thumb_func_start sub_08133C80 +sub_08133C80: @ 0x08133C80 + ldr r0, _08133C90 + ldr r0, [r0] + ldr r1, _08133C94 + ldr r2, _08133C98 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_08133C90: .4byte gUnknown_3005AEC +_08133C94: .4byte gUnknown_2037290 +_08133C98: .4byte 0x00002E59 + thumb_func_end sub_08133C80 + + thumb_func_start sub_08133C9C +sub_08133C9C: @ 0x08133C9C + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08133CB4 +_08133CA2: + adds r0, r4, #0 + bl sub_081619E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08133CB8 + movs r0, #0 + strh r0, [r5] + b _08133CC8 + .align 2, 0 +_08133CB4: .4byte gUnknown_2037290 +_08133CB8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _08133CA2 + ldr r1, _08133CD0 + movs r0, #1 + strh r0, [r1] +_08133CC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08133CD0: .4byte gUnknown_2037290 + thumb_func_end sub_08133C9C + + thumb_func_start sub_08133CD4 +sub_08133CD4: @ 0x08133CD4 + push {r4, r5, r6, lr} + ldr r6, _08133D2C + movs r0, #0 + strh r0, [r6] + ldr r4, _08133D30 + ldr r5, _08133D34 + ldrh r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r4 + ldr r0, _08133D38 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r2, #0xe] + ldrb r0, [r0, #0xe] + cmp r1, r0 + beq _08133D26 + adds r0, r1, #0 + bl sub_081617D4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08133D26 + ldr r0, _08133D3C + ldrh r2, [r5] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #0xe] + bl sub_08127208 + movs r0, #1 + strh r0, [r6] +_08133D26: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133D2C: .4byte gUnknown_2037290 +_08133D30: .4byte gUnknown_8580CD0 +_08133D34: .4byte gUnknown_2037280 +_08133D38: .4byte gUnknown_2037284 +_08133D3C: .4byte gUnknown_2021C54 + thumb_func_end sub_08133CD4 + + thumb_func_start sub_08133D40 +sub_08133D40: @ 0x08133D40 + push {lr} + ldr r0, _08133D50 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08133D50: .4byte sub_081271C0 + thumb_func_end sub_08133D40 + + thumb_func_start sub_08133D54 +sub_08133D54: @ 0x08133D54 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_08127974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08133DB8 + ldr r5, _08133D9C + ldr r0, _08133DA0 + ldrb r1, [r0] + ldr r0, _08133DA4 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r5] + ldr r0, _08133DA8 + ldr r1, _08133DAC + ldrh r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r4, _08133DB0 + adds r1, r1, r4 + bl sub_080088B8 + ldr r0, _08133DB4 + ldrh r2, [r5] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + bl sub_080088B8 + b _08133DC0 + .align 2, 0 +_08133D9C: .4byte gUnknown_2037284 +_08133DA0: .4byte gUnknown_2039E3E +_08133DA4: .4byte gUnknown_2039E18 +_08133DA8: .4byte gUnknown_2021C68 +_08133DAC: .4byte gUnknown_2037280 +_08133DB0: .4byte gUnknown_8580CD1 +_08133DB4: .4byte gUnknown_2021C54 +_08133DB8: + ldr r1, _08133DD0 + ldr r2, _08133DD4 + adds r0, r2, #0 + strh r0, [r1] +_08133DC0: + adds r0, r6, #0 + bl sub_080A8964 + bl sub_080988C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133DD0: .4byte gUnknown_2037284 +_08133DD4: .4byte 0x0000FFFF + thumb_func_end sub_08133D54 + + thumb_func_start sub_08133DD8 +sub_08133DD8: @ 0x08133DD8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08133DF0 + movs r1, #0 + strh r1, [r2] + bl sub_080A8964 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 +_08133DF0: .4byte gUnknown_2037284 + thumb_func_end sub_08133DD8 + + thumb_func_start sub_08133DF4 +sub_08133DF4: @ 0x08133DF4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _08133E54 + ldr r6, [r0] + ldr r0, _08133E58 + adds r5, r6, r0 + ldr r1, _08133E5C + mov r8, r1 + ldrb r0, [r1] + bl sub_081618EC + ldr r0, _08133E60 + ldrb r0, [r0] + bl sub_08161868 + ldr r4, _08133E64 + ldrh r1, [r4] + movs r0, #0xb + muls r0, r1, r0 + adds r0, #5 + adds r5, r5, r0 + ldr r0, _08133E68 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + ldr r2, _08133E6C + adds r0, r6, r2 + ldrh r1, [r4] + adds r0, r0, r1 + mov r2, r8 + ldrh r1, [r2] + strb r1, [r0] + ldr r1, _08133E70 + adds r0, r6, r1 + ldrh r4, [r4] + adds r0, r0, r4 + movs r1, #1 + strb r1, [r0] + ldr r2, _08133E74 + adds r6, r6, r2 + strb r1, [r6] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08133E54: .4byte gUnknown_3005AEC +_08133E58: .4byte 0x00002E28 +_08133E5C: .4byte gUnknown_2037284 +_08133E60: .4byte gUnknown_2037280 +_08133E64: .4byte gUnknown_2037282 +_08133E68: .4byte gUnknown_3005AF0 +_08133E6C: .4byte 0x00002E29 +_08133E70: .4byte 0x00002E5A +_08133E74: .4byte 0x00002E59 + thumb_func_end sub_08133DF4 + + thumb_func_start sub_08133E78 +sub_08133E78: @ 0x08133E78 + push {lr} + ldr r0, _08133E90 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08133AAC + pop {r0} + bx r0 + .align 2, 0 +_08133E90: .4byte sub_08133C00 + thumb_func_end sub_08133E78 + + thumb_func_start sub_08133E94 +sub_08133E94: @ 0x08133E94 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #3 + bls _08133EA0 + movs r1, #0 +_08133EA0: + ldr r0, _08133EAC + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_08133EAC: .4byte gUnknown_8590C08 + thumb_func_end sub_08133E94 + + thumb_func_start sub_08133EB0 +sub_08133EB0: @ 0x08133EB0 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08133EB0 + + thumb_func_start sub_08133EC4 +sub_08133EC4: @ 0x08133EC4 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0xc + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + add r1, sp, #4 + movs r0, #0 + strh r0, [r1] + ldr r2, _08134138 + str r1, [r2] + movs r1, #0xc0 + lsls r1, r1, #0x13 + str r1, [r2, #4] + ldr r0, _0813413C + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + mov sb, r0 + str r0, [sp, #8] + add r0, sp, #8 + str r0, [r2] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r2, #4] + ldr r0, _08134140 + str r0, [r2, #8] + ldr r0, [r2, #8] + add r0, sp, #4 + mov r3, sb + strh r3, [r0] + str r0, [r2] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r2, #4] + ldr r0, _08134144 + str r0, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _08134148 + bl LZ77UnCompVram + ldr r0, _0813414C + ldr r1, _08134150 + bl LZ77UnCompVram + ldr r0, _08134154 + ldr r1, _08134158 + bl LZ77UnCompVram + movs r0, #0 + bl sub_080017D4 + ldr r1, _0813415C + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r0, _08134160 + bl sub_08003090 + bl sub_08004480 + movs r1, #0xa6 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xd0 + bl sub_080981B4 + bl sub_08199640 + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_08008424 + bl sub_0818CCF8 + bl sub_080985EC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08134164 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _08134168 + bl sub_08034388 + ldr r0, _0813416C + bl sub_08034388 + ldr r0, _08134170 + bl sub_080084A8 + movs r0, #1 + rsbs r0, r0, #0 + mov r1, sb + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _08134174 + bl sub_080006F0 + ldr r0, _08134178 + bl sub_08000540 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x1f + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0xfe + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #7 + bl sub_08001144 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r0, _0813417C + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08134180 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #1 + mov sl, r3 + mov r1, sl + strh r1, [r0, #8] + ldr r0, _08134184 + movs r1, #0x78 + movs r2, #0x38 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08134188 + mov r8, r3 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + strh r4, [r1, #0x2e] + ldr r6, _0813418C + ldr r5, _08134190 + ldrb r1, [r5] + ldrb r2, [r5, #1] + adds r0, r6, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + strh r4, [r1, #0x2e] + mov r0, sb + strh r0, [r1, #0x30] + ldrb r1, [r5, #2] + ldrb r2, [r5, #3] + adds r0, r6, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + strh r4, [r1, #0x2e] + mov r3, sl + strh r3, [r1, #0x30] + ldrb r1, [r5, #4] + ldrb r2, [r5, #5] + adds r0, r6, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + strh r4, [r1, #0x2e] + movs r0, #2 + strh r0, [r1, #0x30] + ldr r1, _08134194 + movs r0, #0xff + strh r0, [r1] + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08134138: .4byte 0x040000D4 +_0813413C: .4byte 0x8100C000 +_08134140: .4byte 0x85000100 +_08134144: .4byte 0x81000200 +_08134148: .4byte gUnknown_858FC14 +_0813414C: .4byte gUnknown_858F890 +_08134150: .4byte 0x06003000 +_08134154: .4byte gUnknown_858FA1C +_08134158: .4byte 0x06003800 +_0813415C: .4byte gUnknown_8590C10 +_08134160: .4byte gUnknown_8590BDC +_08134164: .4byte gUnknown_858F810 +_08134168: .4byte gUnknown_8590CE8 +_0813416C: .4byte gUnknown_8590CF8 +_08134170: .4byte gUnknown_8590D08 +_08134174: .4byte sub_08133EB0 +_08134178: .4byte sub_08134198 +_0813417C: .4byte sub_081341B4 +_08134180: .4byte gUnknown_3005B60 +_08134184: .4byte gUnknown_8590D20 +_08134188: .4byte gUnknown_20205AC +_0813418C: .4byte gUnknown_8590D38 +_08134190: .4byte gUnknown_8590BFC +_08134194: .4byte gUnknown_30011F8 + thumb_func_end sub_08133EC4 + + thumb_func_start sub_08134198 +sub_08134198: @ 0x08134198 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08134198 + + thumb_func_start sub_081341B4 +sub_081341B4: @ 0x081341B4 + push {r4, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08134208 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r0, [r4, #8] + bl sub_08134480 + movs r2, #0xa6 + lsls r2, r2, #2 + movs r0, #0 + movs r1, #0 + movs r3, #0xd + bl sub_08197F44 + ldr r2, _0813420C + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + ldr r0, _08134210 + str r0, [r4] + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134208: .4byte gUnknown_3005B60 +_0813420C: .4byte gUnknown_85C9363 +_08134210: .4byte sub_08134214 + thumb_func_end sub_081341B4 + + thumb_func_start sub_08134214 +sub_08134214: @ 0x08134214 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08134290 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r6, r0, r2 + ldrh r7, [r6, #8] + ldrb r4, [r6, #8] + ldr r1, _08134294 + ldrh r3, [r1, #0x2e] + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _081342B0 + bl sub_0813464C + ldr r0, _08134298 + ldr r1, _0813429C + lsls r2, r4, #1 + adds r3, r2, r1 + ldrb r5, [r3] + adds r1, #1 + adds r2, r2, r1 + ldrb r4, [r2] + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0xc] + ldrh r0, [r6, #8] + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_081346D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081342A0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r4, #0 + adds r2, #0x10 + adds r2, r1, r2 + ldr r3, _081342A4 + str r3, [r2] + adds r4, #0x1c + adds r1, r1, r4 + ldr r2, _081342A8 + str r2, [r1] + strh r0, [r6, #0xa] + ldr r0, _081342AC + str r0, [r6] + b _081342EC + .align 2, 0 +_08134290: .4byte gUnknown_3005B60 +_08134294: .4byte gUnknown_3002360 +_08134298: .4byte gUnknown_8590D50 +_0813429C: .4byte gUnknown_8590BFC +_081342A0: .4byte gUnknown_20205AC +_081342A4: .4byte gUnknown_8590CE0 +_081342A8: .4byte sub_081347BC +_081342AC: .4byte sub_081342F8 +_081342B0: + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _081342CC + cmp r4, #0 + beq _081342CC + subs r0, r7, #1 + strh r0, [r6, #8] + ldr r0, _081342C8 + str r0, [r6] + b _081342EC + .align 2, 0 +_081342C8: .4byte sub_08134688 +_081342CC: + ldrh r1, [r1, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081342EC + cmp r4, #1 + bhi _081342EC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + ldr r1, _081342F4 + str r1, [r0] +_081342EC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081342F4: .4byte sub_08134688 + thumb_func_end sub_08134214 + + thumb_func_start sub_081342F8 +sub_081342F8: @ 0x081342F8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0813433C + ldr r2, _08134340 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + movs r0, #0xc + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r3 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _08134336 + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0x78 + bne _08134336 + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x40 + bne _08134336 + ldr r0, _08134344 + str r0, [r2] +_08134336: + pop {r0} + bx r0 + .align 2, 0 +_0813433C: .4byte gUnknown_20205AC +_08134340: .4byte gUnknown_3005B60 +_08134344: .4byte sub_08134348 + thumb_func_end sub_081342F8 + + thumb_func_start sub_08134348 +sub_08134348: @ 0x08134348 + push {r4, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081343A8 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r0, [r4, #8] + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_080A2B3C + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _081343AC + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + ldr r0, _081343B0 + movs r2, #0xa6 + lsls r2, r2, #2 + movs r1, #1 + movs r3, #0xd + bl sub_08198D44 + ldr r0, _081343B4 + str r0, [r4] + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081343A8: .4byte gUnknown_3005B60 +_081343AC: .4byte gUnknown_85C9386 +_081343B0: .4byte gUnknown_8590BEC +_081343B4: .4byte sub_081343B8 + thumb_func_end sub_08134348 + + thumb_func_start sub_081343B8 +sub_081343B8: @ 0x081343B8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081343DE + cmp r1, #0 + bgt _081343D8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08134408 + b _08134452 +_081343D8: + cmp r1, #1 + beq _08134408 + b _08134452 +_081343DE: + ldr r2, _081343FC + ldr r1, _08134400 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + strh r0, [r2] + bl sub_0818CCF8 + ldr r0, _08134404 + ldr r0, [r0, #8] + bl sub_08000540 + b _08134452 + .align 2, 0 +_081343FC: .4byte gUnknown_2037290 +_08134400: .4byte gUnknown_3005B60 +_08134404: .4byte gUnknown_3002360 +_08134408: + movs r0, #5 + bl sub_080A306C + ldr r0, _08134458 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrb r4, [r5, #0xa] + ldr r6, _0813445C + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_0818D54C + ldrb r0, [r5, #0xc] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r6 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_08006E00 + ldr r0, _08134460 + str r0, [r5] +_08134452: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08134458: .4byte gUnknown_3005B60 +_0813445C: .4byte gUnknown_20205AC +_08134460: .4byte sub_08134464 + thumb_func_end sub_081343B8 + + thumb_func_start sub_08134464 +sub_08134464: @ 0x08134464 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08134478 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0813447C + str r0, [r1] + bx lr + .align 2, 0 +_08134478: .4byte gUnknown_3005B60 +_0813447C: .4byte sub_081341B4 + thumb_func_end sub_08134464 + + thumb_func_start sub_08134480 +sub_08134480: @ 0x08134480 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r7, #0 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080BFB68 + adds r2, r0, #0 + movs r3, #0 + movs r5, #0 + ldrb r0, [r2] + add r1, sp, #0x18 + mov sl, r1 + mov r1, sp + adds r1, #0x24 + str r1, [sp, #0x2c] + cmp r0, #0 + beq _081344E2 +_081344BE: + mov r1, sp + adds r1, r1, r5 + adds r1, #0xc + adds r0, r2, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _081344E2 + cmp r3, #4 + bls _081344BE +_081344E2: + movs r3, #0 + ldr r2, _0813462C + mov r8, r2 + lsls r4, r7, #1 + ldr r0, _08134630 + mov sb, r0 + lsls r6, r6, #1 + mov ip, r6 + ldr r2, _08134634 +_081344F4: + mov r1, sp + adds r1, r1, r5 + adds r1, #0xc + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r3, #4 + bls _081344F4 + mov r1, sp + adds r1, r1, r5 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + movs r3, #0 + movs r5, #0 + adds r0, r4, r7 + lsls r0, r0, #1 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0xff + beq _08134558 + mov r6, r8 + mov r8, sl +_0813452E: + mov r1, r8 + adds r2, r1, r5 + adds r1, r4, r7 + lsls r1, r1, #1 + adds r0, r3, r1 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r1, r3, r1 + adds r1, r1, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _08134558 + cmp r3, #9 + bls _0813452E +_08134558: + mov r2, sl + adds r1, r2, r5 + movs r0, #0xff + strb r0, [r1] + mov r2, sb + ldr r0, [r2] + ldr r1, [r2, #4] + str r0, [sp, #0x24] + str r1, [sp, #0x28] + ldr r0, _08134638 + add r0, ip + mov sb, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + ldr r1, _0813463C + ldr r2, [sp, #0x24] + ands r2, r1 + orrs r2, r0 + str r2, [sp, #0x24] + ldr r1, _08134638 + adds r1, #1 + mov r8, r1 + add r8, ip + mov r0, r8 + ldrb r1, [r0] + lsls r1, r1, #0x10 + ldr r0, _08134640 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + bl sub_08003250 + ldr r4, _08134644 + strh r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + ldr r6, _08134648 + str r6, [sp] + movs r5, #0 + str r5, [sp, #4] + add r1, sp, #0xc + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + ldrb r0, [r4] + str r6, [sp] + str r5, [sp, #4] + mov r2, sl + str r2, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #0x12 + bl sub_08199AFC + ldrb r0, [r4] + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #0x1b + movs r2, #0xfc + lsls r2, r2, #0x18 + adds r0, r0, r2 + adds r1, #9 + lsls r1, r1, #3 + adds r1, #4 + lsls r1, r1, #0x18 + mov r2, r8 + ldrb r4, [r2] + lsls r5, r4, #0x1b + lsrs r5, r5, #0x18 + adds r4, #4 + lsls r4, r4, #0x1b + lsrs r4, r4, #0x18 + lsrs r1, r1, #8 + orrs r1, r0 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + lsls r5, r5, #8 + orrs r5, r4 + movs r0, #0x44 + adds r1, r5, #0 + bl sub_08001144 + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813462C: .4byte gUnknown_82EA31C +_08134630: .4byte gUnknown_8590BF4 +_08134634: .4byte gUnknown_85C9393 +_08134638: .4byte gUnknown_8590C02 +_0813463C: .4byte 0xFFFF00FF +_08134640: .4byte 0xFF00FFFF +_08134644: .4byte gUnknown_30011F8 +_08134648: .4byte gUnknown_8590C1C + thumb_func_end sub_08134480 + + thumb_func_start sub_0813464C +sub_0813464C: @ 0x0813464C + push {r4, lr} + ldr r4, _08134684 + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strh r0, [r4] + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134684: .4byte gUnknown_30011F8 + thumb_func_end sub_0813464C + + thumb_func_start sub_08134688 +sub_08134688: @ 0x08134688 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0813464C + ldr r1, _081346A8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081346AC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081346A8: .4byte gUnknown_3005B60 +_081346AC: .4byte sub_081346B0 + thumb_func_end sub_08134688 + + thumb_func_start sub_081346B0 +sub_081346B0: @ 0x081346B0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081346D0 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r0, [r4, #8] + bl sub_08134480 + ldr r0, _081346D4 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081346D0: .4byte gUnknown_3005B60 +_081346D4: .4byte sub_08134214 + thumb_func_end sub_081346B0 + + thumb_func_start sub_081346D8 +sub_081346D8: @ 0x081346D8 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r1, [sp] + str r2, [sp, #4] + movs r1, #0xe + str r1, [sp, #8] + ldr r1, _0813471C + str r1, [sp, #0xc] + movs r1, #8 + movs r2, #0 + movs r3, #1 + bl sub_0818D110 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08134720 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r3, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r2, #5] + add sp, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_0813471C: .4byte 0x0000FFFF +_08134720: .4byte gUnknown_20205AC + thumb_func_end sub_081346D8 + + thumb_func_start sub_08134724 +sub_08134724: @ 0x08134724 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0813477C + ldr r3, _08134780 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #8 + ldrsh r0, [r0, r1] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x20] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #8 + ldrsh r0, [r0, r1] + lsls r0, r0, #1 + adds r2, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x22] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813477C: .4byte gUnknown_8590C38 +_08134780: .4byte gUnknown_3005B60 + thumb_func_end sub_08134724 + + thumb_func_start sub_08134784 +sub_08134784: @ 0x08134784 + push {lr} + adds r3, r0, #0 + ldr r2, _081347AC + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r1, [r0, r2] + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r1, r0 + bne _081347B0 + adds r0, r3, #0 + movs r1, #1 + bl sub_08007ED8 + b _081347B8 + .align 2, 0 +_081347AC: .4byte gUnknown_3005B60 +_081347B0: + adds r0, r3, #0 + movs r1, #0 + bl sub_08007ED8 +_081347B8: + pop {r0} + bx r0 + thumb_func_end sub_08134784 + + thumb_func_start sub_081347BC +sub_081347BC: @ 0x081347BC + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x20] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0x78 + ble _081347CE + subs r0, r2, #4 + strh r0, [r1, #0x20] +_081347CE: + ldrh r2, [r1, #0x20] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0x77 + bgt _081347DC + adds r0, r2, #4 + strh r0, [r1, #0x20] +_081347DC: + ldrh r2, [r1, #0x22] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x40 + ble _081347EA + subs r0, r2, #2 + strh r0, [r1, #0x22] +_081347EA: + ldrh r2, [r1, #0x22] + movs r3, #0x22 + ldrsh r0, [r1, r3] + cmp r0, #0x3f + bgt _081347F8 + adds r0, r2, #2 + strh r0, [r1, #0x22] +_081347F8: + pop {r0} + bx r0 + thumb_func_end sub_081347BC + + thumb_func_start sub_081347FC +sub_081347FC: @ 0x081347FC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081347FC + + thumb_func_start sub_08134810 +sub_08134810: @ 0x08134810 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #4 + mov r8, r0 + mov r2, sp + movs r6, #0 + ldr r1, _08134930 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _08134934 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_081348B4: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _081348B4 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _08134930 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _08134938 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0813493C + ldrh r0, [r0] + cmp r0, #0 + bne _08134944 + ldr r0, _08134940 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + b _0813494E + .align 2, 0 +_08134930: .4byte 0x040000D4 +_08134934: .4byte 0x81000800 +_08134938: .4byte gUnknown_859130C +_0813493C: .4byte gUnknown_2037280 +_08134940: .4byte gUnknown_8590D68 +_08134944: + ldr r0, _081349BC + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 +_0813494E: + bl sub_080985EC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081349C0 + movs r1, #0xc0 + movs r2, #8 + bl sub_080A1200 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081349C4 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r0, _081349C8 + bl sub_08003090 + bl sub_08004480 + movs r1, #0x93 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xd0 + bl sub_080981B4 + bl sub_08199640 + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_08008424 + ldr r0, _081349CC + bl sub_08034388 + ldr r0, _081349D0 + bl sub_080084A8 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081349BC: .4byte gUnknown_8590D88 +_081349C0: .4byte gUnknown_8591C20 +_081349C4: .4byte gUnknown_8591C48 +_081349C8: .4byte gUnknown_8591C28 +_081349CC: .4byte gUnknown_8591C54 +_081349D0: .4byte gUnknown_8591C64 + thumb_func_end sub_08134810 + + thumb_func_start sub_081349D4 +sub_081349D4: @ 0x081349D4 + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _08134A34 + bl sub_080006F0 + ldr r0, _08134A38 + bl sub_08000540 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08134A34: .4byte sub_081347FC +_08134A38: .4byte sub_08134CE8 + thumb_func_end sub_081349D4 + + thumb_func_start sub_08134A3C +sub_08134A3C: @ 0x08134A3C + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0xc + bl sub_08134810 + ldr r0, _08134B64 + ldr r1, _08134B68 + bl LZ77UnCompVram + ldr r0, _08134B6C + movs r1, #0 + bl sub_080A8878 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r1, _08134B70 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + mov r8, r1 + movs r1, #0xa + strh r1, [r0, #0xc] + mov r2, r8 + strh r2, [r0, #0xe] + strh r2, [r0, #0x10] + strh r2, [r0, #0x12] + strh r2, [r0, #0x14] + strh r2, [r0, #8] + movs r1, #0x96 + lsls r1, r1, #1 + strh r1, [r0, #0xa] + ldr r0, _08134B74 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08134B78 + mov sb, r1 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + strh r6, [r1, #0x2e] + ldrb r2, [r1, #1] + movs r5, #4 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + movs r2, #1 + mov sl, r2 + mov r2, sl + orrs r0, r2 + strb r0, [r1, #1] + ldrb r2, [r1, #3] + movs r4, #0x3f + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #3] + ldr r0, _08134B7C + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + strh r6, [r1, #0x2e] + ldrb r0, [r1, #1] + ands r5, r0 + mov r0, sl + orrs r5, r0 + strb r5, [r1, #1] + ldrb r0, [r1, #3] + ands r4, r0 + movs r0, #2 + orrs r4, r0 + strb r4, [r1, #3] + ldr r0, _08134B80 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + strh r6, [r1, #0x2e] + movs r0, #0x2d + strh r0, [r1, #0x30] + ldr r0, _08134B84 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + strh r6, [r1, #0x2e] + movs r0, #0x5a + strh r0, [r1, #0x30] + bl sub_081349D4 + ldr r2, _08134B88 + movs r0, #2 + str r0, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_08199654 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08134B64: .4byte gUnknown_8590DA8 +_08134B68: .4byte 0x06003800 +_08134B6C: .4byte sub_08134D04 +_08134B70: .4byte gUnknown_3005B60 +_08134B74: .4byte gUnknown_8591C9C +_08134B78: .4byte gUnknown_20205AC +_08134B7C: .4byte gUnknown_8591CB4 +_08134B80: .4byte gUnknown_8591CEC +_08134B84: .4byte gUnknown_8591D04 +_08134B88: .4byte gUnknown_8591C15 + thumb_func_end sub_08134A3C + + thumb_func_start sub_08134B8C +sub_08134B8C: @ 0x08134B8C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + bl sub_08134810 + ldr r0, _08134BD4 + ldr r1, _08134BD8 + bl LZ77UnCompVram + ldr r0, _08134BDC + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r7, #0 + bl sub_08135184 + ldr r1, _08134BE0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08134BE4 + movs r2, #0x2d + mov sl, r2 + movs r0, #0x5a + str r0, [sp, #0xc] + b _08134BEC + .align 2, 0 +_08134BD4: .4byte gUnknown_8591074 +_08134BD8: .4byte 0x06003800 +_08134BDC: .4byte sub_08134F64 +_08134BE0: .4byte gUnknown_3005B60 +_08134BE4: + movs r1, #0x5a + mov sl, r1 + movs r2, #0x87 + str r2, [sp, #0xc] +_08134BEC: + ldr r0, _08134CD0 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r6, _08134CD4 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r0, #0 + mov sb, r0 + strh r7, [r1, #0x2e] + ldrb r2, [r1, #1] + movs r5, #4 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r2 + movs r2, #1 + mov r8, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #1] + ldrb r2, [r1, #3] + movs r4, #0x3f + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #3] + ldr r0, _08134CD8 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + strh r7, [r1, #0x2e] + ldrb r0, [r1, #1] + ands r5, r0 + mov r0, r8 + orrs r5, r0 + strb r5, [r1, #1] + ldrb r0, [r1, #3] + ands r4, r0 + movs r0, #2 + orrs r4, r0 + strb r4, [r1, #3] + ldr r0, _08134CDC + movs r1, #0x78 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + strh r7, [r1, #0x2e] + mov r2, sl + strh r2, [r1, #0x30] + ldr r0, _08134CE0 + movs r1, #0x78 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + strh r7, [r1, #0x2e] + mov r0, sp + ldrh r0, [r0, #0xc] + strh r0, [r1, #0x30] + bl sub_081349D4 + ldr r2, _08134CE4 + movs r0, #2 + str r0, [sp] + mov r1, sb + str r1, [sp, #4] + str r1, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_08199654 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08134CD0: .4byte gUnknown_8591C9C +_08134CD4: .4byte gUnknown_20205AC +_08134CD8: .4byte gUnknown_8591CB4 +_08134CDC: .4byte gUnknown_8591CEC +_08134CE0: .4byte gUnknown_8591D04 +_08134CE4: .4byte gUnknown_8591C1A + thumb_func_end sub_08134B8C + + thumb_func_start sub_08134CE8 +sub_08134CE8: @ 0x08134CE8 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08134CE8 + + thumb_func_start sub_08134D04 +sub_08134D04: @ 0x08134D04 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08134D28 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08134D24 + ldr r0, _08134D2C + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08134D30 + str r0, [r1] +_08134D24: + pop {r0} + bx r0 + .align 2, 0 +_08134D28: .4byte gUnknown_2037C74 +_08134D2C: .4byte gUnknown_3005B60 +_08134D30: .4byte sub_08134D34 + thumb_func_end sub_08134D04 + + thumb_func_start sub_08134D34 +sub_08134D34: @ 0x08134D34 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08134D64 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + movs r1, #6 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08134D68 + ldrh r0, [r5, #8] + ldrb r1, [r5, #0x10] + ldrb r2, [r5, #0x14] + bl sub_08135050 + strh r0, [r5, #8] + b _08134E0A + .align 2, 0 +_08134D64: .4byte gUnknown_3005B60 +_08134D68: + movs r2, #0xe + ldrsh r1, [r5, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + strh r0, [r5, #8] + movs r3, #0xc + ldrsh r0, [r5, r3] + movs r1, #0xc + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #1 + movs r1, #0xe + ldrsh r0, [r5, r1] + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r4, r4, r1 + strh r4, [r5, #0xa] + ldr r2, _08134DB4 + ldrh r0, [r2, #0x2e] + movs r3, #1 + adds r1, r3, #0 + ands r1, r0 + cmp r1, #0 + beq _08134DBC + ldr r0, _08134DB8 + str r0, [r5] + b _08134E0A + .align 2, 0 +_08134DB4: .4byte gUnknown_3002360 +_08134DB8: .4byte sub_08134E10 +_08134DBC: + strh r1, [r5, #0x10] + ldrh r1, [r2, #0x2c] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08134DCA + strh r3, [r5, #0x10] +_08134DCA: + ldrh r1, [r2, #0x2c] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08134DD8 + movs r0, #2 + strh r0, [r5, #0x10] +_08134DD8: + ldrh r1, [r5, #0x10] + movs r2, #0x10 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _08134E08 + ldrh r2, [r5, #0x14] + movs r3, #0x14 + ldrsh r0, [r5, r3] + cmp r0, #0xfe + bgt _08134DF0 + adds r0, r2, #1 + strh r0, [r5, #0x14] +_08134DF0: + ldrh r0, [r5, #8] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r5, #0x14] + bl sub_08135050 + strh r0, [r5, #8] + ldrb r1, [r5, #0x10] + adds r0, r6, #0 + bl sub_081350A0 + b _08134E0A +_08134E08: + strh r0, [r5, #0x14] +_08134E0A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08134D34 + + thumb_func_start sub_08134E10 +sub_08134E10: @ 0x08134E10 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r5, #0x93 + lsls r5, r5, #2 + movs r0, #0 + movs r1, #0 + adds r2, r5, #0 + movs r3, #0xd + bl sub_08197F44 + ldr r2, _08134E74 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + ldr r0, _08134E78 + str r5, [sp] + movs r1, #0xd + str r1, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + ldr r1, _08134E7C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08134E80 + str r1, [r0] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08134E74: .4byte gUnknown_8591C04 +_08134E78: .4byte gUnknown_8591C40 +_08134E7C: .4byte gUnknown_3005B60 +_08134E80: .4byte sub_08134E84 + thumb_func_end sub_08134E10 + + thumb_func_start sub_08134E84 +sub_08134E84: @ 0x08134E84 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08134EAA + cmp r1, #0 + bgt _08134EA4 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08134EC8 + b _08134EEA +_08134EA4: + cmp r1, #1 + beq _08134EC8 + b _08134EEA +_08134EAA: + movs r0, #5 + bl sub_080A306C + ldr r0, _08134EC0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08134EC4 + b _08134EE8 + .align 2, 0 +_08134EC0: .4byte gUnknown_3005B60 +_08134EC4: .4byte sub_08134EF8 +_08134EC8: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #0 + bl sub_08198134 + movs r0, #0 + bl sub_08003774 + ldr r0, _08134EF0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08134EF4 +_08134EE8: + str r0, [r1] +_08134EEA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134EF0: .4byte gUnknown_3005B60 +_08134EF4: .4byte sub_08134D34 + thumb_func_end sub_08134E84 + + thumb_func_start sub_08134EF8 +sub_08134EF8: @ 0x08134EF8 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08134F34 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + movs r2, #0xe + ldrsh r1, [r4, r2] + bl sub_0802F218 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08134F38 + str r0, [r4] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134F34: .4byte gUnknown_3005B60 +_08134F38: .4byte sub_08134F3C + thumb_func_end sub_08134EF8 + + thumb_func_start sub_08134F3C +sub_08134F3C: @ 0x08134F3C + push {lr} + ldr r0, _08134F5C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08134F56 + bl sub_080034D4 + ldr r0, _08134F60 + ldr r0, [r0, #8] + bl sub_08000540 +_08134F56: + pop {r0} + bx r0 + .align 2, 0 +_08134F5C: .4byte gUnknown_2037C74 +_08134F60: .4byte gUnknown_3002360 + thumb_func_end sub_08134F3C + + thumb_func_start sub_08134F64 +sub_08134F64: @ 0x08134F64 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08134F88 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08134F84 + ldr r0, _08134F8C + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08134F90 + str r0, [r1] +_08134F84: + pop {r0} + bx r0 + .align 2, 0 +_08134F88: .4byte gUnknown_2037C74 +_08134F8C: .4byte gUnknown_3005B60 +_08134F90: .4byte sub_08134F94 + thumb_func_end sub_08134F64 + + thumb_func_start sub_08134F94 +sub_08134F94: @ 0x08134F94 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_08135184 + ldr r0, _08134FC0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08134FBA + ldr r0, _08134FC4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08134FC8 + str r0, [r1] +_08134FBA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134FC0: .4byte gUnknown_3002360 +_08134FC4: .4byte gUnknown_3005B60 +_08134FC8: .4byte sub_08134FCC + thumb_func_end sub_08134F94 + + thumb_func_start sub_08134FCC +sub_08134FCC: @ 0x08134FCC + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08134FFC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08135000 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08134FFC: .4byte gUnknown_3005B60 +_08135000: .4byte sub_08135004 + thumb_func_end sub_08134FCC + + thumb_func_start sub_08135004 +sub_08135004: @ 0x08135004 + push {lr} + ldr r0, _08135020 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813501A + ldr r0, _08135024 + ldr r0, [r0, #8] + bl sub_08000540 +_0813501A: + pop {r0} + bx r0 + .align 2, 0 +_08135020: .4byte gUnknown_2037C74 +_08135024: .4byte gUnknown_3002360 + thumb_func_end sub_08135004 + + thumb_func_start sub_08135028 +sub_08135028: @ 0x08135028 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r0, #0 + cmp r0, #0x3c + bls _08135038 + movs r0, #6 + b _0813504A +_08135038: + cmp r0, #0x1e + bls _08135040 + movs r0, #3 + b _0813504A +_08135040: + cmp r1, #0xa + bhi _08135048 + movs r0, #1 + b _0813504A +_08135048: + movs r0, #2 +_0813504A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08135028 + + thumb_func_start sub_08135050 +sub_08135050: @ 0x08135050 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r2, #0 + bl sub_08135028 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r5, #1 + beq _08135072 + cmp r5, #2 + beq _08135084 + b _08135098 +_08135072: + cmp r4, #0 + beq _0813507A + subs r0, r4, r1 + b _08135090 +_0813507A: + movs r2, #0xb4 + lsls r2, r2, #1 + adds r0, r2, #0 + subs r0, r0, r1 + b _08135090 +_08135084: + movs r0, #0xb4 + lsls r0, r0, #1 + subs r0, r0, r1 + cmp r4, r0 + bge _08135096 + adds r0, r4, r1 +_08135090: + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _08135098 +_08135096: + movs r4, #0 +_08135098: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08135050 + + thumb_func_start sub_081350A0 +sub_081350A0: @ 0x081350A0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + cmp r4, #1 + beq _081350B4 + cmp r4, #2 + beq _081350F4 + b _08135132 +_081350B4: + ldr r0, _081350D0 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xe] + movs r5, #0xe + ldrsh r0, [r1, r5] + cmp r0, #0 + ble _081350D4 + subs r0, r2, #1 + strh r0, [r1, #0xe] + b _08135132 + .align 2, 0 +_081350D0: .4byte gUnknown_3005B60 +_081350D4: + movs r0, #0x3b + strh r0, [r1, #0xe] + ldrh r2, [r1, #0xc] + movs r6, #0xc + ldrsh r0, [r1, r6] + cmp r0, #0 + ble _081350E6 + subs r0, r2, #1 + b _081350E8 +_081350E6: + movs r0, #0x17 +_081350E8: + strh r0, [r1, #0xc] + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0813513C + b _08135132 +_081350F4: + ldr r0, _08135110 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xe] + movs r5, #0xe + ldrsh r0, [r1, r5] + cmp r0, #0x3a + bgt _08135114 + adds r0, r2, #1 + strh r0, [r1, #0xe] + b _08135132 + .align 2, 0 +_08135110: .4byte gUnknown_3005B60 +_08135114: + movs r5, #0 + strh r5, [r1, #0xe] + ldrh r2, [r1, #0xc] + movs r6, #0xc + ldrsh r0, [r1, r6] + cmp r0, #0x16 + bgt _08135128 + adds r0, r2, #1 + strh r0, [r1, #0xc] + b _0813512A +_08135128: + strh r5, [r1, #0xc] +_0813512A: + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0813513C +_08135132: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081350A0 + + thumb_func_start sub_0813513C +sub_0813513C: @ 0x0813513C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldr r2, _0813515C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #0xc] + cmp r3, #1 + beq _08135160 + cmp r3, #2 + beq _08135172 + b _0813517E + .align 2, 0 +_0813515C: .4byte gUnknown_3005B60 +_08135160: + cmp r0, #0xb + beq _0813516A + cmp r0, #0x17 + beq _0813516E + b _0813517E +_0813516A: + movs r0, #0 + b _0813517C +_0813516E: + strh r3, [r1, #0x12] + b _0813517E +_08135172: + cmp r0, #0 + beq _0813517C + cmp r0, #0xc + bne _0813517E + movs r0, #1 +_0813517C: + strh r0, [r1, #0x12] +_0813517E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813513C + + thumb_func_start sub_08135184 +sub_08135184: @ 0x08135184 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0802F1EC + ldr r1, _081351EC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r6, r0, r1 + ldr r5, _081351F0 + movs r0, #2 + ldrsb r0, [r5, r0] + strh r0, [r6, #0xc] + movs r0, #3 + ldrsb r0, [r5, r0] + strh r0, [r6, #0xe] + movs r0, #0xe + ldrsh r1, [r6, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + strh r0, [r6, #8] + movs r1, #0xc + ldrsh r0, [r6, r1] + movs r1, #0xc + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #1 + movs r1, #0xe + ldrsh r0, [r6, r1] + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r4, r4, r1 + strh r4, [r6, #0xa] + movs r0, #2 + ldrsb r0, [r5, r0] + cmp r0, #0xb + bgt _081351F4 + movs r0, #0 + b _081351F6 + .align 2, 0 +_081351EC: .4byte gUnknown_3005B60 +_081351F0: .4byte gUnknown_3005A50 +_081351F4: + movs r0, #1 +_081351F6: + strh r0, [r6, #0x12] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08135184 + + thumb_func_start sub_08135200 +sub_08135200: @ 0x08135200 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r2, _08135290 + movs r0, #0x2e + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r4, [r0, #8] + adds r7, r4, #0 + adds r0, r4, #0 + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08135228 + adds r0, #0xf +_08135228: + lsls r0, r0, #0xc + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0813523C + adds r0, #0xf +_0813523C: + lsls r1, r0, #0xc + lsrs r1, r1, #0x10 + lsls r3, r5, #0x10 + lsrs r2, r3, #0x10 + rsbs r3, r3, #0 + lsrs r3, r3, #0x10 + str r1, [sp] + movs r0, #0 + bl sub_08006F3C + ldr r1, _08135294 + lsls r2, r7, #1 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r1, #1 + adds r2, r2, r1 + movs r0, #0 + ldrsb r0, [r2, r0] + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r3, #0x80 + bls _08135278 + movs r1, #0xff + lsls r1, r1, #8 + adds r0, r1, #0 + orrs r3, r0 +_08135278: + cmp r2, #0x80 + bls _08135284 + movs r1, #0xff + lsls r1, r1, #8 + adds r0, r1, #0 + orrs r2, r0 +_08135284: + strh r3, [r6, #0x24] + strh r2, [r6, #0x26] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08135290: .4byte gUnknown_3005B60 +_08135294: .4byte gUnknown_8591D1C + thumb_func_end sub_08135200 + + thumb_func_start sub_08135298 +sub_08135298: @ 0x08135298 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r2, _08135328 + movs r0, #0x2e + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r4, [r0, #0xa] + adds r7, r4, #0 + adds r0, r4, #0 + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081352C0 + adds r0, #0xf +_081352C0: + lsls r0, r0, #0xc + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081352D4 + adds r0, #0xf +_081352D4: + lsls r1, r0, #0xc + lsrs r1, r1, #0x10 + lsls r3, r5, #0x10 + lsrs r2, r3, #0x10 + rsbs r3, r3, #0 + lsrs r3, r3, #0x10 + str r1, [sp] + movs r0, #1 + bl sub_08006F3C + ldr r1, _0813532C + lsls r2, r7, #1 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r1, #1 + adds r2, r2, r1 + movs r0, #0 + ldrsb r0, [r2, r0] + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r3, #0x80 + bls _08135310 + movs r1, #0xff + lsls r1, r1, #8 + adds r0, r1, #0 + orrs r3, r0 +_08135310: + cmp r2, #0x80 + bls _0813531C + movs r1, #0xff + lsls r1, r1, #8 + adds r0, r1, #0 + orrs r2, r0 +_0813531C: + strh r3, [r6, #0x24] + strh r2, [r6, #0x26] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08135328: .4byte gUnknown_3005B60 +_0813532C: .4byte gUnknown_8591D1C + thumb_func_end sub_08135298 + + thumb_func_start sub_08135330 +sub_08135330: @ 0x08135330 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0813536C + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08135370 + ldrh r1, [r4, #0x30] + adds r0, r1, #0 + subs r0, #0x3c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _0813535C + adds r0, r1, #5 + strh r0, [r4, #0x30] +_0813535C: + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x3b + bgt _08135390 + adds r0, r1, #1 + b _0813538E + .align 2, 0 +_0813536C: .4byte gUnknown_3005B60 +_08135370: + ldrh r1, [r4, #0x30] + adds r0, r1, #0 + subs r0, #0x2e + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _08135382 + subs r0, r1, #5 + strh r0, [r4, #0x30] +_08135382: + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x4b + ble _08135390 + subs r0, r1, #1 +_0813538E: + strh r0, [r4, #0x30] +_08135390: + ldrh r0, [r4, #0x30] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r0, r1, #1 + cmp r0, #0 + bge _081353A8 + ldr r1, _081353D0 + adds r0, r0, r1 +_081353A8: + asrs r0, r0, #0xc + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r0, r1, #1 + cmp r0, #0 + bge _081353C4 + ldr r2, _081353D0 + adds r0, r0, r2 +_081353C4: + asrs r0, r0, #0xc + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081353D0: .4byte 0x00000FFF + thumb_func_end sub_08135330 + + thumb_func_start sub_081353D4 +sub_081353D4: @ 0x081353D4 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08135410 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x12 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08135414 + ldrh r1, [r4, #0x30] + adds r0, r1, #0 + subs r0, #0x69 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _08135400 + adds r0, r1, #5 + strh r0, [r4, #0x30] +_08135400: + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x68 + bgt _08135434 + adds r0, r1, #1 + b _08135432 + .align 2, 0 +_08135410: .4byte gUnknown_3005B60 +_08135414: + ldrh r1, [r4, #0x30] + adds r0, r1, #0 + subs r0, #0x5b + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1d + bhi _08135426 + subs r0, r1, #5 + strh r0, [r4, #0x30] +_08135426: + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0x78 + ble _08135434 + subs r0, r1, #1 +_08135432: + strh r0, [r4, #0x30] +_08135434: + ldrh r0, [r4, #0x30] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r0, r1, #1 + cmp r0, #0 + bge _0813544C + ldr r1, _08135474 + adds r0, r0, r1 +_0813544C: + asrs r0, r0, #0xc + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r0, r1, #1 + cmp r0, #0 + bge _08135468 + ldr r2, _08135474 + adds r0, r0, r2 +_08135468: + asrs r0, r0, #0xc + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135474: .4byte 0x00000FFF + thumb_func_end sub_081353D4 + + thumb_func_start sub_08135478 +sub_08135478: @ 0x08135478 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r4, _081354B8 + adds r1, r4, #2 + adds r0, r4, #0 + bl sub_0808B3CC + bl sub_0808B5D8 + strb r0, [r4, #4] + ldrh r0, [r4] + ldrh r1, [r4, #2] + ldrb r2, [r4, #4] + bl sub_0808E5E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081354BC + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r2 + ldrb r0, [r2, #5] + cmp r0, r5 + bne _081354C4 + ldr r1, _081354C0 + ldrb r0, [r2, #8] + strh r0, [r1] + movs r0, #1 + b _081354C6 + .align 2, 0 +_081354B8: .4byte gUnknown_203A80C +_081354BC: .4byte gUnknown_2036FF0 +_081354C0: .4byte gUnknown_2037292 +_081354C4: + movs r0, #0 +_081354C6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08135478 + + thumb_func_start sub_081354CC +sub_081354CC: @ 0x081354CC + push {lr} + ldr r0, _081354E8 + adds r1, r0, #2 + bl sub_0808B3CC + ldr r0, _081354EC + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081354E8: .4byte gUnknown_203A80C +_081354EC: .4byte sub_081354F0 + thumb_func_end sub_081354CC + + thumb_func_start sub_081354F0 +sub_081354F0: @ 0x081354F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_080987DC + ldr r1, _08135544 + movs r0, #1 + strb r0, [r1, #6] + ldrb r1, [r1, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08135548 + adds r4, r0, r1 + adds r0, r4, #0 + bl sub_08092AFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08135526 + adds r0, r4, #0 + bl sub_08092BF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08135572 +_08135526: + ldr r0, _0813554C + ldrb r0, [r0, #0x17] + cmp r0, #5 + bne _08135558 + movs r0, #0x3b + bl sub_080B5270 + ldr r0, _08135550 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08135554 + b _08135570 + .align 2, 0 +_08135544: .4byte gUnknown_2037230 +_08135548: .4byte gUnknown_2036FF0 +_0813554C: .4byte gUnknown_2036FB8 +_08135550: .4byte gUnknown_3005B60 +_08135554: .4byte sub_081355CC +_08135558: + bl sub_0808BA78 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_08092B30 + ldr r0, _08135578 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0813557C +_08135570: + str r0, [r1] +_08135572: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08135578: .4byte gUnknown_3005B60 +_0813557C: .4byte sub_08135580 + thumb_func_end sub_081354F0 + + thumb_func_start sub_08135580 +sub_08135580: @ 0x08135580 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081355BC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081355C0 + adds r0, r0, r1 + bl sub_08092BE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081355B4 + movs r0, #0x3b + bl sub_080B5270 + ldr r0, _081355C4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081355C8 + str r0, [r1] +_081355B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081355BC: .4byte gUnknown_2037230 +_081355C0: .4byte gUnknown_2036FF0 +_081355C4: .4byte gUnknown_3005B60 +_081355C8: .4byte sub_081355CC + thumb_func_end sub_08135580 + + thumb_func_start sub_081355CC +sub_081355CC: @ 0x081355CC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #6 + bl sub_080B5598 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08135650 + bl sub_0808B59C + ldr r6, _08135658 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r6, #4] + cmp r0, #1 + bne _081355F2 + str r4, [r6, #8] +_081355F2: + ldr r1, [r6, #4] + cmp r1, #2 + bne _081355FC + movs r0, #1 + str r0, [r6, #8] +_081355FC: + cmp r1, #3 + bne _08135604 + movs r0, #2 + str r0, [r6, #8] +_08135604: + cmp r1, #4 + bne _0813560C + movs r0, #3 + str r0, [r6, #8] +_0813560C: + ldr r5, _0813565C + ldrb r0, [r5, #5] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _08135660 + adds r4, r4, r0 + bl sub_0808B8D0 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0808DD68 + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08135664 + adds r0, r0, r1 + ldrb r1, [r6, #8] + bl sub_08007EC0 + movs r0, #6 + bl sub_080B5568 + ldr r1, _08135668 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0813566C + str r1, [r0] +_08135650: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08135658: .4byte gUnknown_20388A8 +_0813565C: .4byte gUnknown_2037230 +_08135660: .4byte gUnknown_2036FF0 +_08135664: .4byte gUnknown_20205AC +_08135668: .4byte gUnknown_3005B60 +_0813566C: .4byte sub_08135670 + thumb_func_end sub_081355CC + + thumb_func_start sub_08135670 +sub_08135670: @ 0x08135670 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081356A0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + lsls r1, r1, #0x10 + ldrh r0, [r0, #0x1a] + orrs r1, r0 + bl _call_via_r1 + ldr r1, _081356A4 + movs r0, #0 + strb r0, [r1, #6] + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081356A0: .4byte gUnknown_3005B60 +_081356A4: .4byte gUnknown_2037230 + thumb_func_end sub_08135670 + + thumb_func_start sub_081356A8 +sub_081356A8: @ 0x081356A8 + push {r4, lr} + bl sub_08179694 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081356E0 + ldr r4, _081356CC + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r1, _081356D0 + ldr r0, _081356D4 + str r0, [r1] + ldr r1, _081356D8 + ldr r0, _081356DC + b _081356FC + .align 2, 0 +_081356CC: .4byte gUnknown_2037290 +_081356D0: .4byte gUnknown_3005B10 +_081356D4: .4byte sub_081B53D8 +_081356D8: .4byte gUnknown_203CBB8 +_081356DC: .4byte sub_081796EC +_081356E0: + movs r0, #0x56 + bl sub_08135478 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081356F2 + movs r0, #0 + b _08135700 +_081356F2: + ldr r1, _08135708 + ldr r0, _0813570C + str r0, [r1] + ldr r1, _08135710 + ldr r0, _08135714 +_081356FC: + str r0, [r1] + movs r0, #1 +_08135700: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08135708: .4byte gUnknown_3005B10 +_0813570C: .4byte sub_081B53D8 +_08135710: .4byte gUnknown_203CBB8 +_08135714: .4byte sub_08135718 + thumb_func_end sub_081356A8 + + thumb_func_start sub_08135718 +sub_08135718: @ 0x08135718 + push {lr} + bl sub_081B1024 + ldr r1, _08135730 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _08135734 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_08135730: .4byte gUnknown_20388A8 +_08135734: .4byte gUnknown_82566C6 + thumb_func_end sub_08135718 + + thumb_func_start sub_08135738 +sub_08135738: @ 0x08135738 + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08135760 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _08135764 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0x13 + bl sub_0808414C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08135760: .4byte gUnknown_3005B60 +_08135764: .4byte sub_08135768 + thumb_func_end sub_08135738 + + thumb_func_start sub_08135768 +sub_08135768: @ 0x08135768 + push {lr} + movs r0, #0x83 + bl sub_080A306C + movs r0, #0x25 + bl sub_080B5568 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08135768 + + thumb_func_start sub_08135780 +sub_08135780: @ 0x08135780 + push {lr} + bl sub_080FEB64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08135792 + movs r0, #0 + b _081357A0 +_08135792: + ldr r1, _081357A4 + ldr r0, _081357A8 + str r0, [r1] + ldr r1, _081357AC + ldr r0, _081357B0 + str r0, [r1] + movs r0, #1 +_081357A0: + pop {r1} + bx r1 + .align 2, 0 +_081357A4: .4byte gUnknown_3005B10 +_081357A8: .4byte sub_081B53D8 +_081357AC: .4byte gUnknown_203CBB8 +_081357B0: .4byte sub_081357B4 + thumb_func_end sub_08135780 + + thumb_func_start sub_081357B4 +sub_081357B4: @ 0x081357B4 + push {lr} + bl sub_0808406C + movs r0, #0x26 + bl sub_080B5270 + bl sub_081B1024 + ldr r1, _081357D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081357D0: .4byte gUnknown_20388A8 + thumb_func_end sub_081357B4 + + thumb_func_start sub_081357D4 +sub_081357D4: @ 0x081357D4 + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08135808 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _0813580C + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + bl sub_081794A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08135800 + movs r0, #1 + bl sub_0808AD30 +_08135800: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08135808: .4byte gUnknown_3005B60 +_0813580C: .4byte sub_08135810 + thumb_func_end sub_081357D4 + + thumb_func_start sub_08135810 +sub_08135810: @ 0x08135810 + push {r4, lr} + movs r0, #0x26 + bl sub_080B5568 + bl sub_081794A0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0813582A + bl sub_081794F4 + b _08135842 +_0813582A: + ldr r0, _08135848 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813584C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] +_08135842: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135848: .4byte sub_080FEB0C +_0813584C: .4byte gUnknown_3005B60 + thumb_func_end sub_08135810 + + thumb_func_start sub_08135850 +sub_08135850: @ 0x08135850 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _081358A0 + movs r0, #0xd4 + lsls r0, r0, #4 + bl sub_08000BC8 + str r0, [r5] + ldr r2, _081358A4 + adds r0, r0, r2 + movs r3, #0 + strb r4, [r0] + ldr r0, [r5] + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r0, r4 + str r3, [r1] + ldr r1, _081358A8 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r5] + ldr r4, _081358AC + adds r0, r0, r4 + strb r3, [r0] + ldr r0, _081358B0 + str r6, [r0] + ldr r5, [r5] + adds r2, r5, r2 + ldrb r2, [r2] + cmp r2, #2 + beq _081358D8 + cmp r2, #2 + bgt _081358B4 + cmp r2, #1 + beq _081358BA + b _08135910 + .align 2, 0 +_081358A0: .4byte gUnknown_203A81C +_081358A4: .4byte 0x00000809 +_081358A8: .4byte 0x00000D34 +_081358AC: .4byte 0x00000D35 +_081358B0: .4byte gUnknown_203A814 +_081358B4: + cmp r2, #3 + beq _081358F4 + b _08135910 +_081358BA: + ldr r0, _081358CC + adds r1, r5, r0 + ldr r0, _081358D0 + str r0, [r1] + ldr r4, _081358D4 + adds r1, r5, r4 + movs r0, #2 + b _08135922 + .align 2, 0 +_081358CC: .4byte 0x00000804 +_081358D0: .4byte gUnknown_85920E7 +_081358D4: .4byte 0x00000808 +_081358D8: + ldr r1, _081358E8 + adds r0, r5, r1 + ldr r1, _081358EC + str r1, [r0] + ldr r4, _081358F0 + adds r0, r5, r4 + strb r2, [r0] + b _08135924 + .align 2, 0 +_081358E8: .4byte 0x00000804 +_081358EC: .4byte gUnknown_85920E9 +_081358F0: .4byte 0x00000808 +_081358F4: + ldr r0, _08135904 + adds r1, r5, r0 + ldr r0, _08135908 + str r0, [r1] + ldr r4, _0813590C + adds r1, r5, r4 + movs r0, #2 + b _08135922 + .align 2, 0 +_08135904: .4byte 0x00000804 +_08135908: .4byte gUnknown_85920EB +_0813590C: .4byte 0x00000808 +_08135910: + ldr r0, _08135930 + ldr r1, [r0] + ldr r0, _08135934 + adds r2, r1, r0 + ldr r0, _08135938 + str r0, [r2] + ldr r4, _0813593C + adds r1, r1, r4 + movs r0, #3 +_08135922: + strb r0, [r1] +_08135924: + ldr r0, _08135940 + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08135930: .4byte gUnknown_203A81C +_08135934: .4byte 0x00000804 +_08135938: .4byte gUnknown_85920E4 +_0813593C: .4byte 0x00000808 +_08135940: .4byte sub_0813599C + thumb_func_end sub_08135850 + + thumb_func_start sub_08135944 +sub_08135944: @ 0x08135944 + push {lr} + ldr r1, _08135954 + movs r0, #1 + bl sub_08135850 + pop {r0} + bx r0 + .align 2, 0 +_08135954: .4byte sub_0805996C + thumb_func_end sub_08135944 + + thumb_func_start sub_08135958 +sub_08135958: @ 0x08135958 + push {lr} + ldr r1, _08135968 + movs r0, #2 + bl sub_08135850 + pop {r0} + bx r0 + .align 2, 0 +_08135968: .4byte sub_08085A30 + thumb_func_end sub_08135958 + + thumb_func_start sub_0813596C +sub_0813596C: @ 0x0813596C + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813596C + + thumb_func_start sub_08135988 +sub_08135988: @ 0x08135988 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08135988 + + thumb_func_start sub_0813599C +sub_0813599C: @ 0x0813599C + push {lr} +_0813599E: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081359C2 + bl sub_081359C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081359C2 + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813599E +_081359C2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813599C + + thumb_func_start sub_081359C8 +sub_081359C8: @ 0x081359C8 + push {r4, lr} + sub sp, #4 + ldr r0, _081359E8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x12 + bls _081359DC + b _08135C08 +_081359DC: + lsls r0, r0, #2 + ldr r1, _081359EC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081359E8: .4byte gUnknown_3002360 +_081359EC: .4byte _081359F0 +_081359F0: @ jump table + .4byte _08135A3C @ case 0 + .4byte _08135A46 @ case 1 + .4byte _08135A58 @ case 2 + .4byte _08135A5E @ case 3 + .4byte _08135A80 @ case 4 + .4byte _08135A86 @ case 5 + .4byte _08135AA4 @ case 6 + .4byte _08135AC0 @ case 7 + .4byte _08135ADC @ case 8 + .4byte _08135AEA @ case 9 + .4byte _08135B14 @ case 10 + .4byte _08135B2C @ case 11 + .4byte _08135B4C @ case 12 + .4byte _08135B52 @ case 13 + .4byte _08135B64 @ case 14 + .4byte _08135B6A @ case 15 + .4byte _08135BB4 @ case 16 + .4byte _08135BBA @ case 17 + .4byte _08135BD4 @ case 18 +_08135A3C: + bl sub_08121E58 + bl sub_08199640 + b _08135BEE +_08135A46: + bl sub_080B9710 + ldr r1, _08135A54 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135A54: .4byte gUnknown_3002360 +_08135A58: + bl sub_08008424 + b _08135BEE +_08135A5E: + bl sub_080A133C + ldr r2, _08135A78 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r1, _08135A7C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135A78: .4byte gUnknown_2037C74 +_08135A7C: .4byte gUnknown_3002360 +_08135A80: + bl sub_0800668C + b _08135BEE +_08135A86: + ldr r0, _08135A9C + ldr r0, [r0] + ldr r1, _08135AA0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _08135A96 + b _08135BEE +_08135A96: + bl sub_080A8818 + b _08135BEE + .align 2, 0 +_08135A9C: .4byte gUnknown_203A81C +_08135AA0: .4byte 0x00000809 +_08135AA4: + bl sub_08135C2C + ldr r0, _08135AB8 + ldr r0, [r0] + ldr r1, _08135ABC + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _08135BEE + .align 2, 0 +_08135AB8: .4byte gUnknown_203A81C +_08135ABC: .4byte 0x00000D36 +_08135AC0: + bl sub_08135C88 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08135ACC + b _08135C20 +_08135ACC: + ldr r1, _08135AD8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135AD8: .4byte gUnknown_3002360 +_08135ADC: + bl sub_0813629C + bl sub_08136320 + bl sub_08136384 + b _08135BEE +_08135AEA: + movs r0, #0x38 + movs r1, #0x40 + movs r2, #0 + bl sub_08136484 + ldr r1, _08135B08 + ldr r1, [r1] + ldr r2, _08135B0C + adds r1, r1, r2 + strb r0, [r1] + ldr r1, _08135B10 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135B08: .4byte gUnknown_203A81C +_08135B0C: .4byte 0x00000D2C +_08135B10: .4byte gUnknown_3002360 +_08135B14: + ldr r0, _08135B24 + ldr r0, [r0] + ldr r1, _08135B28 + adds r0, r0, r1 + movs r1, #7 + bl sub_08122350 + b _08135BEE + .align 2, 0 +_08135B24: .4byte gUnknown_203A81C +_08135B28: .4byte 0x00000D2D +_08135B2C: + ldr r0, _08135B40 + ldrh r0, [r0, #4] + ldr r1, _08135B44 + bl sub_08136150 + ldr r1, _08135B48 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135B40: .4byte gUnknown_203A814 +_08135B44: .4byte 0x00001005 +_08135B48: .4byte gUnknown_3002360 +_08135B4C: + bl sub_08135D74 + b _08135BEE +_08135B52: + bl sub_08135E60 + ldr r1, _08135B60 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135B60: .4byte gUnknown_3002360 +_08135B64: + bl sub_081363FC + b _08135BEE +_08135B6A: + ldr r0, _08135BA0 + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08135BA4 + ldr r2, _08135BA8 + ldrh r1, [r2, #6] + ldrh r2, [r2, #4] + bl sub_081AE25C + ldr r2, _08135BAC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #8] + ldr r1, _08135BB0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135BA0: .4byte sub_08136608 +_08135BA4: .4byte gUnknown_3006050 +_08135BA8: .4byte gUnknown_203A814 +_08135BAC: .4byte gUnknown_3005B60 +_08135BB0: .4byte gUnknown_3002360 +_08135BB4: + bl sub_08135DF8 + b _08135BEE +_08135BBA: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r1, _08135BD0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _08135BF6 + .align 2, 0 +_08135BD0: .4byte gUnknown_3002360 +_08135BD4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _08135C00 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] +_08135BEE: + ldr r1, _08135C04 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_08135BF6: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08135C20 + .align 2, 0 +_08135C00: .4byte gUnknown_2037C74 +_08135C04: .4byte gUnknown_3002360 +_08135C08: + ldr r0, _08135C18 + bl sub_080006F0 + ldr r0, _08135C1C + bl sub_08000540 + movs r0, #1 + b _08135C22 + .align 2, 0 +_08135C18: .4byte sub_08135988 +_08135C1C: .4byte sub_0813596C +_08135C20: + movs r0, #0 +_08135C22: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081359C8 + + thumb_func_start sub_08135C2C +sub_08135C2C: @ 0x08135C2C + push {lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08135C80 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r0, _08135C84 + ldr r1, [r0] + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #2 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08135C80: .4byte gUnknown_859206C +_08135C84: .4byte gUnknown_203A81C + thumb_func_end sub_08135C2C + + thumb_func_start sub_08135C88 +sub_08135C88: @ 0x08135C88 + push {r4, lr} + sub sp, #4 + ldr r0, _08135CA8 + ldr r0, [r0] + ldr r1, _08135CAC + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #5 + bhi _08135D68 + lsls r0, r0, #2 + ldr r1, _08135CB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08135CA8: .4byte gUnknown_203A81C +_08135CAC: .4byte 0x00000D36 +_08135CB0: .4byte _08135CB4 +_08135CB4: @ jump table + .4byte _08135CCC @ case 0 + .4byte _08135CE8 @ case 1 + .4byte _08135D0C @ case 2 + .4byte _08135D1C @ case 3 + .4byte _08135D28 @ case 4 + .4byte _08135D4C @ case 5 +_08135CCC: + bl sub_081996B8 + ldr r1, _08135CE4 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _08135D2E + .align 2, 0 +_08135CE4: .4byte gUnknown_8D9B4B4 +_08135CE8: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08135D68 + ldr r0, _08135D04 + ldr r4, _08135D08 + ldr r1, [r4] + bl sub_08034370 + ldr r1, [r4] + b _08135D32 + .align 2, 0 +_08135D04: .4byte gUnknown_8D9BA14 +_08135D08: .4byte gUnknown_203A81C +_08135D0C: + ldr r0, _08135D18 + movs r1, #0 + movs r2, #0xc0 + bl sub_080A11BC + b _08135D2E + .align 2, 0 +_08135D18: .4byte gUnknown_8D9B6BC +_08135D1C: + ldr r0, _08135D24 + bl sub_08034388 + b _08135D2E + .align 2, 0 +_08135D24: .4byte gUnknown_8592140 +_08135D28: + ldr r0, _08135D40 + bl sub_080343E4 +_08135D2E: + ldr r0, _08135D44 + ldr r1, [r0] +_08135D32: + ldr r0, _08135D48 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _08135D68 + .align 2, 0 +_08135D40: .4byte gUnknown_8592148 +_08135D44: .4byte gUnknown_203A81C +_08135D48: .4byte 0x00000D36 +_08135D4C: + bl sub_08122334 + ldr r0, _08135D60 + ldr r0, [r0] + ldr r1, _08135D64 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + movs r0, #1 + b _08135D6A + .align 2, 0 +_08135D60: .4byte gUnknown_203A81C +_08135D64: .4byte 0x00000D36 +_08135D68: + movs r0, #0 +_08135D6A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08135C88 + + thumb_func_start sub_08135D74 +sub_08135D74: @ 0x08135D74 + push {r4, lr} + ldr r0, _08135DC4 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0xa + movs r2, #0xd0 + bl sub_08098104 + ldr r0, _08135DC8 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r4, #0 +_08135DA0: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xa + bls _08135DA0 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135DC4: .4byte gUnknown_8592194 +_08135DC8: .4byte gUnknown_85D7B04 + thumb_func_end sub_08135D74 + + thumb_func_start sub_08135DCC +sub_08135DCC: @ 0x08135DCC + push {lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + str r3, [sp] + str r3, [sp, #4] + ldr r2, _08135DF4 + str r2, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199B84 + add sp, #0x14 + pop {r0} + bx r0 + .align 2, 0 +_08135DF4: .4byte gUnknown_8592168 + thumb_func_end sub_08135DCC + + thumb_func_start sub_08135DF8 +sub_08135DF8: @ 0x08135DF8 + push {r4, lr} + ldr r0, _08135E48 + bl sub_080D6C8C + adds r1, r0, #0 + movs r0, #0 + bl sub_08135DCC + ldr r1, _08135E4C + movs r0, #2 + bl sub_08135DCC + ldr r1, _08135E50 + movs r0, #3 + bl sub_08135DCC + ldr r1, _08135E54 + movs r0, #4 + bl sub_08135DCC + ldr r1, _08135E58 + movs r0, #5 + bl sub_08135DCC + ldr r1, _08135E5C + movs r0, #6 + bl sub_08135DCC + movs r4, #0 +_08135E32: + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _08135E32 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135E48: .4byte 0x00000111 +_08135E4C: .4byte gUnknown_85C983E +_08135E50: .4byte gUnknown_85C9842 +_08135E54: .4byte gUnknown_85C9846 +_08135E58: .4byte gUnknown_85C984A +_08135E5C: .4byte gUnknown_85C984E + thumb_func_end sub_08135DF8 + + thumb_func_start sub_08135E60 +sub_08135E60: @ 0x08135E60 + push {r4, r5, r6, r7, lr} + movs r6, #0 + ldr r1, _08135F10 + ldr r0, [r1] + ldr r2, _08135F14 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + bge _08135EB4 + adds r5, r1, #0 +_08135E76: + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r3, _08135F18 + adds r4, r4, r3 + ldr r0, [r5] + adds r0, r0, r4 + adds r1, r6, #0 + bl sub_08135F30 + ldr r1, [r5] + lsls r2, r6, #3 + ldr r7, _08135F1C + adds r0, r1, r7 + adds r0, r0, r2 + adds r4, r1, r4 + str r4, [r0] + movs r3, #0x81 + lsls r3, r3, #4 + adds r0, r1, r3 + adds r0, r0, r2 + str r6, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r4, _08135F14 + adds r1, r1, r4 + ldrb r0, [r1] + subs r0, #1 + cmp r6, r0 + blt _08135E76 +_08135EB4: + ldr r5, _08135F10 + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r7, _08135F18 + adds r4, r4, r7 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _08135F20 + bl sub_080088B8 + ldr r1, [r5] + lsls r2, r6, #3 + ldr r3, _08135F1C + adds r0, r1, r3 + adds r0, r0, r2 + adds r4, r1, r4 + str r4, [r0] + movs r0, #0x81 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r2 + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r1] + ldr r2, _08135F24 + adds r1, r2, #0 + ldr r0, _08135F28 + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldr r1, [r5] + ldr r4, _08135F14 + adds r0, r1, r4 + ldrb r0, [r0] + strh r0, [r2, #0xc] + adds r3, r1, r3 + str r3, [r2] + ldr r6, _08135F2C + adds r1, r1, r6 + ldrb r0, [r1] + strh r0, [r2, #0xe] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08135F10: .4byte gUnknown_203A81C +_08135F14: .4byte 0x0000080A +_08135F18: .4byte 0x00000954 +_08135F1C: .4byte 0x0000080C +_08135F20: .4byte gUnknown_85C985C +_08135F24: .4byte gUnknown_3006050 +_08135F28: .4byte gUnknown_85921FC +_08135F2C: .4byte 0x0000080B + thumb_func_end sub_08135E60 + + thumb_func_start sub_08135F30 +sub_08135F30: @ 0x08135F30 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r5, r0, #0 + lsls r4, r1, #0x10 + lsrs r4, r4, #0x10 + movs r1, #0 + movs r2, #0x18 + bl memset + ldr r1, _08135FA0 + ldr r0, _08135FA4 + mov sb, r0 + ldr r0, [r0] + lsls r4, r4, #3 + adds r0, r0, r4 + ldr r6, _08135FA8 + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + movs r1, #0 + strb r1, [r0] + ldr r1, _08135FAC + mov r8, r1 + adds r4, r4, r6 + mov r2, sb + ldr r0, [r2] + adds r0, r0, r4 + bl sub_08136F14 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r5, #9 + ldr r1, _08135FB0 + adds r0, r5, #0 + bl sub_08008BCC + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08135FA0: .4byte gUnknown_8592078 +_08135FA4: .4byte gUnknown_3005AEC +_08135FA8: .4byte 0x00000848 +_08135FAC: .4byte gUnknown_2021C40 +_08135FB0: .4byte gUnknown_85C9864 + thumb_func_end sub_08135F30 + + thumb_func_start sub_08135FB4 +sub_08135FB4: @ 0x08135FB4 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _08135FE0 + movs r0, #5 + bl sub_080A306C + ldr r2, _08135FFC + ldr r0, _08136000 + ldr r0, [r0] + ldr r1, _08136004 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08136008 + str r1, [r0] +_08135FE0: + ldr r0, _08136000 + ldr r0, [r0] + ldr r1, _0813600C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08135FF4 + adds r0, r4, #0 + bl sub_08136010 +_08135FF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08135FFC: .4byte gUnknown_20205AC +_08136000: .4byte gUnknown_203A81C +_08136004: .4byte 0x00000D2C +_08136008: .4byte sub_081364B0 +_0813600C: .4byte 0x00000D35 + thumb_func_end sub_08135FB4 + + thumb_func_start sub_08136010 +sub_08136010: @ 0x08136010 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #7 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081360E0 + ldr r1, _08136068 + lsls r0, r4, #3 + ldr r2, _0813606C + adds r0, r0, r2 + ldr r1, [r1] + adds r1, r1, r0 + mov r8, r1 + add r1, sp, #8 + movs r0, #0x17 + strh r0, [r1] + movs r0, #0x18 + strh r0, [r1, #2] + movs r5, #0 + adds r6, r1, #0 +_08136046: + adds r4, r5, #1 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_0813700C + lsls r0, r0, #0x10 + adds r7, r4, #0 + cmp r0, #0 + ble _08136070 + lsls r1, r5, #0xc + adds r0, r1, #0 + adds r0, #0x17 + strh r0, [r6] + adds r1, #0x18 + strh r1, [r6, #2] + b _08136076 + .align 2, 0 +_08136068: .4byte gUnknown_3005AEC +_0813606C: .4byte 0x00000848 +_08136070: + movs r0, #0xf + strh r0, [r6] + strh r0, [r6, #2] +_08136076: + adds r0, r5, #0 + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #1 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #3 + bl __umodsi3 + adds r3, r0, #0 + lsls r3, r3, #0x19 + movs r0, #0xd0 + lsls r0, r0, #0x14 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + add r1, sp, #8 + adds r2, r4, #0 + bl sub_080022B0 + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _08136046 + ldr r4, _081360DC + mov r0, r8 + bl sub_08136F4C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + movs r0, #7 + adds r1, r4, #0 + bl sub_08135DCC + b _08136138 + .align 2, 0 +_081360DC: .4byte gUnknown_2021C40 +_081360E0: + add r0, sp, #8 + movs r1, #0xf + strh r1, [r0] + strh r1, [r0, #2] + movs r5, #0 +_081360EA: + adds r0, r5, #0 + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #1 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #3 + bl __umodsi3 + adds r3, r0, #0 + lsls r3, r3, #0x19 + movs r2, #0xd0 + lsls r2, r2, #0x14 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + add r1, sp, #8 + adds r2, r4, #0 + bl sub_080022B0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _081360EA + movs r0, #7 + movs r1, #2 + bl sub_08003528 +_08136138: + movs r0, #0 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08136010 + + thumb_func_start sub_08136150 +sub_08136150: @ 0x08136150 + push {lr} + sub sp, #8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r3, r3, #0xf + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0xe + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r2, #0xf + bl sub_080025E0 + movs r0, #2 + bl sub_08199654 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08136150 + + thumb_func_start sub_08136180 +sub_08136180: @ 0x08136180 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r2, #0 +_0813618A: + adds r1, r2, #1 + lsls r0, r1, #0x10 + lsrs r6, r0, #0x10 + mov ip, r1 + cmp r6, #0x27 + bhi _081361D2 + ldr r0, _081361E8 + mov sb, r0 + lsls r7, r2, #3 + ldr r1, _081361EC + mov r8, r1 +_081361A0: + mov r0, sb + ldr r2, [r0] + adds r0, r2, r7 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0 + bne _081361C8 + ldr r1, _081361EC + adds r2, r2, r1 + adds r3, r2, r7 + ldr r4, [r3] + ldr r5, [r3, #4] + lsls r0, r6, #3 + adds r2, r2, r0 + ldr r0, [r2] + ldr r1, [r2, #4] + str r0, [r3] + str r1, [r3, #4] + str r4, [r2] + str r5, [r2, #4] +_081361C8: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x27 + bls _081361A0 +_081361D2: + mov r1, ip + lsls r0, r1, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x26 + bls _0813618A + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081361E8: .4byte gUnknown_3005AEC +_081361EC: .4byte 0x00000848 + thumb_func_end sub_08136180 + + thumb_func_start sub_081361F0 +sub_081361F0: @ 0x081361F0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _08136244 + ldr r0, [r0] + ldr r1, _08136248 + adds r6, r0, r1 + cmp r4, r5 + beq _08136286 + movs r0, #8 + bl sub_08000BC8 + adds r7, r0, #0 + lsls r0, r4, #3 + adds r0, r0, r6 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r7] + str r1, [r7, #4] + cmp r5, r4 + bls _0813624C + subs r5, #1 + lsls r3, r4, #0x10 + lsls r0, r5, #0x10 + asrs r1, r0, #0x10 + cmp r3, r0 + bge _08136274 + adds r4, r1, #0 +_08136228: + asrs r3, r3, #0x10 + lsls r2, r3, #3 + adds r2, r2, r6 + ldr r0, [r2, #8] + ldr r1, [r2, #0xc] + str r0, [r2] + str r1, [r2, #4] + adds r3, #1 + lsls r3, r3, #0x10 + asrs r0, r3, #0x10 + cmp r0, r4 + blt _08136228 + b _08136274 + .align 2, 0 +_08136244: .4byte gUnknown_3005AEC +_08136248: .4byte 0x00000848 +_0813624C: + lsls r3, r4, #0x10 + lsls r0, r5, #0x10 + asrs r1, r0, #0x10 + cmp r3, r0 + ble _08136274 + adds r4, r1, #0 +_08136258: + asrs r3, r3, #0x10 + lsls r2, r3, #3 + adds r2, r2, r6 + adds r0, r2, #0 + subs r0, #8 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + subs r3, #1 + lsls r3, r3, #0x10 + asrs r0, r3, #0x10 + cmp r0, r4 + bgt _08136258 +_08136274: + lsls r2, r5, #3 + adds r2, r2, r6 + ldr r0, [r7] + ldr r1, [r7, #4] + str r0, [r2] + str r1, [r2, #4] + adds r0, r7, #0 + bl sub_08000BF0 +_08136286: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081361F0 + + thumb_func_start sub_0813628C +sub_0813628C: @ 0x0813628C + ldr r1, _08136298 + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + bx lr + .align 2, 0 +_08136298: .4byte gUnknown_203A814 + thumb_func_end sub_0813628C + + thumb_func_start sub_0813629C +sub_0813629C: @ 0x0813629C + push {r4, r5, lr} + bl sub_08136180 + ldr r0, _081362FC + ldr r0, [r0] + ldr r1, _08136300 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + movs r2, #0 + ldr r5, _08136304 + ldr r4, _08136308 +_081362B4: + ldr r0, [r5] + lsls r1, r2, #3 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + ldr r3, _081362FC + cmp r0, #0 + beq _081362D0 + ldr r1, [r3] + ldr r0, _08136300 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081362D0: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x27 + bls _081362B4 + ldr r0, [r3] + ldr r2, _08136300 + adds r0, r0, r2 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, [r3] + adds r2, r0, r2 + ldrb r2, [r2] + cmp r2, #9 + bls _08136310 + ldr r2, _0813630C + adds r1, r0, r2 + movs r0, #9 + strb r0, [r1] + b _08136316 + .align 2, 0 +_081362FC: .4byte gUnknown_203A81C +_08136300: .4byte 0x0000080A +_08136304: .4byte gUnknown_3005AEC +_08136308: .4byte 0x00000848 +_0813630C: .4byte 0x0000080B +_08136310: + ldr r1, _0813631C + adds r0, r0, r1 + strb r2, [r0] +_08136316: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813631C: .4byte 0x0000080B + thumb_func_end sub_0813629C + + thumb_func_start sub_08136320 +sub_08136320: @ 0x08136320 + push {r4, r5, lr} + ldr r0, _08136368 + ldrh r1, [r0, #6] + adds r3, r0, #0 + ldr r4, _0813636C + cmp r1, #0 + beq _08136348 + ldrh r0, [r3, #6] + ldr r1, [r4] + ldr r5, _08136370 + adds r2, r1, r5 + ldrb r2, [r2] + adds r0, r0, r2 + subs r5, #1 + adds r1, r1, r5 + ldrb r1, [r1] + cmp r0, r1 + ble _08136348 + subs r0, r1, r2 + strh r0, [r3, #6] +_08136348: + adds r2, r3, #0 + ldrh r1, [r2, #6] + ldrh r0, [r2, #4] + adds r1, r1, r0 + ldr r0, [r4] + ldr r4, _08136374 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r1, r0 + blt _0813637C + adds r1, r0, #0 + cmp r1, #0 + bne _08136378 + strh r1, [r2, #4] + b _0813637C + .align 2, 0 +_08136368: .4byte gUnknown_203A814 +_0813636C: .4byte gUnknown_203A81C +_08136370: .4byte 0x0000080B +_08136374: .4byte 0x0000080A +_08136378: + subs r0, #1 + strh r0, [r3, #4] +_0813637C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08136320 + + thumb_func_start sub_08136384 +sub_08136384: @ 0x08136384 + push {r4, r5, r6, r7, lr} + ldr r0, _081363EC + ldrh r1, [r0, #4] + adds r5, r0, #0 + cmp r1, #4 + bls _081363E4 + movs r4, #0 + ldrh r0, [r5, #4] + subs r0, #4 + cmp r4, r0 + bge _081363E4 + ldrh r2, [r5, #6] + ldr r6, _081363F0 + ldr r0, [r6] + ldr r3, _081363F4 + adds r1, r0, r3 + ldrb r1, [r1] + adds r2, r2, r1 + ldr r7, _081363F8 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r2, r0 + beq _081363E4 + adds r3, r5, #0 +_081363B4: + ldrh r0, [r3, #4] + subs r0, #1 + strh r0, [r3, #4] + ldrh r0, [r3, #6] + adds r0, #1 + strh r0, [r3, #6] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrh r0, [r3, #4] + subs r0, #4 + cmp r4, r0 + bge _081363E4 + ldrh r2, [r5, #6] + ldr r1, [r6] + ldr r7, _081363F4 + adds r0, r1, r7 + ldrb r0, [r0] + adds r2, r2, r0 + ldr r0, _081363F8 + adds r1, r1, r0 + ldrb r1, [r1] + cmp r2, r1 + bne _081363B4 +_081363E4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081363EC: .4byte gUnknown_203A814 +_081363F0: .4byte gUnknown_203A81C +_081363F4: .4byte 0x0000080B +_081363F8: .4byte 0x0000080A + thumb_func_end sub_08136384 + + thumb_func_start sub_081363FC +sub_081363FC: @ 0x081363FC + push {r4, lr} + sub sp, #0x10 + ldr r4, _08136444 + ldr r1, [r4] + ldr r2, _08136448 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _0813643C + ldr r2, _0813644C + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + subs r0, r0, r1 + str r0, [sp] + ldr r0, _08136450 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _08136454 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xb0 + movs r2, #8 + movs r3, #0x98 + bl sub_081AF178 + ldr r1, [r4] + ldr r2, _08136448 + adds r1, r1, r2 + strb r0, [r1] +_0813643C: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08136444: .4byte gUnknown_203A81C +_08136448: .4byte 0x00000D34 +_0813644C: .4byte 0x0000080A +_08136450: .4byte 0x00000456 +_08136454: .4byte gUnknown_203A81A + thumb_func_end sub_081363FC + + thumb_func_start sub_08136458 +sub_08136458: @ 0x08136458 + push {r4, lr} + ldr r4, _0813647C + ldr r0, [r4] + ldr r2, _08136480 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _08136476 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _08136480 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_08136476: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813647C: .4byte gUnknown_203A81C +_08136480: .4byte 0x00000D34 + thumb_func_end sub_08136458 + + thumb_func_start sub_08136484 +sub_08136484: @ 0x08136484 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _081364AC + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081364AC: .4byte gUnknown_8592150 + thumb_func_end sub_08136484 + + thumb_func_start sub_081364B0 +sub_081364B0: @ 0x081364B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + ble _081364C0 + movs r0, #0 + strh r0, [r4, #0x2e] +_081364C0: + movs r0, #0x2e + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _081364CE + cmp r5, #1 + beq _081364F4 + b _08136520 +_081364CE: + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, _081364F0 + str r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08008140 + movs r0, #1 + strh r0, [r4, #0x2e] + strh r5, [r4, #0x30] + b _08136520 + .align 2, 0 +_081364F0: .4byte gUnknown_859213C +_081364F4: + ldrh r0, [r4, #0x30] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _08136520 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] + strh r2, [r4, #0x2e] + strh r2, [r4, #0x30] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, _08136528 + str r0, [r4, #0x1c] +_08136520: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08136528: .4byte sub_08007140 + thumb_func_end sub_081364B0 + + thumb_func_start sub_0813652C +sub_0813652C: @ 0x0813652C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0813655C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08136560 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813655C: .4byte gUnknown_3005B60 +_08136560: .4byte sub_08136564 + thumb_func_end sub_0813652C + + thumb_func_start sub_08136564 +sub_08136564: @ 0x08136564 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081365C8 + adds r2, r0, r1 + ldr r0, _081365CC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081365FE + ldr r6, _081365D0 + ldr r0, [r6] + ldr r1, _081365D4 + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0813659A + ldr r1, _081365D8 + ldr r0, _081365DC + str r0, [r1] +_0813659A: + ldrb r0, [r2] + ldr r4, _081365E0 + subs r2, r4, #2 + adds r1, r4, #0 + bl sub_081AE3A0 + bl sub_08136458 + bl sub_0800668C + bl sub_08008424 + ldr r0, [r6] + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _081365E4 + bl sub_08000540 + b _081365EC + .align 2, 0 +_081365C8: .4byte gUnknown_3005B68 +_081365CC: .4byte gUnknown_2037C74 +_081365D0: .4byte gUnknown_203A81C +_081365D4: .4byte 0x00000809 +_081365D8: .4byte gUnknown_3005B0C +_081365DC: .4byte sub_080AEA64 +_081365E0: .4byte gUnknown_203A81A +_081365E4: + subs r0, r4, #6 + ldr r0, [r0] + bl sub_08000540 +_081365EC: + bl sub_080034D4 + ldr r0, _08136604 + ldr r0, [r0] + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_080A8964 +_081365FE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08136604: .4byte gUnknown_203A81C + thumb_func_end sub_08136564 + + thumb_func_start sub_08136608 +sub_08136608: @ 0x08136608 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + mov r8, r0 + ldr r0, _081366A4 + mov sl, r0 + mov r6, r8 + add r6, sl + ldr r0, _081366A8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08136634 + b _08136748 +_08136634: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08136642 + b _08136748 +_08136642: + ldr r0, _081366AC + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r0, #0 + beq _081366C8 + ldrb r0, [r6] + ldr r4, _081366B0 + subs r2, r4, #2 + adds r1, r4, #0 + bl sub_081AE538 + subs r4, #6 + ldrh r1, [r4, #6] + ldrh r0, [r4, #4] + adds r1, r1, r0 + ldr r5, _081366B4 + ldr r0, [r5] + ldr r2, _081366B8 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08136748 + movs r0, #5 + bl sub_080A306C + ldrh r0, [r4, #4] + ldr r1, _081366BC + bl sub_08136150 + ldrh r0, [r4, #4] + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r6, #4] + ldr r0, [r5] + ldr r1, _081366C0 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + mov r0, sl + subs r0, #8 + add r0, r8 + ldr r1, _081366C4 + str r1, [r0] + b _08136748 + .align 2, 0 +_081366A4: .4byte gUnknown_3005B68 +_081366A8: .4byte gUnknown_2037C74 +_081366AC: .4byte gUnknown_3002360 +_081366B0: .4byte gUnknown_203A81A +_081366B4: .4byte gUnknown_203A81C +_081366B8: .4byte 0x0000080A +_081366BC: .4byte 0x00002005 +_081366C0: .4byte 0x00000D35 +_081366C4: .4byte sub_0813675C +_081366C8: + ldr r5, _08136708 + ldrh r2, [r5, #4] + mov r8, r2 + ldrb r0, [r6] + bl sub_081AE2DC + adds r4, r0, #0 + ldrb r0, [r6] + adds r1, r5, #6 + adds r2, r5, #4 + bl sub_081AE538 + ldrh r0, [r5, #4] + cmp r8, r0 + beq _081366F6 + mov r0, r8 + movs r1, #5 + bl sub_08136150 + ldrh r0, [r5, #4] + ldr r1, _0813670C + bl sub_08136150 +_081366F6: + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08136710 + adds r0, #1 + cmp r4, r0 + bne _08136738 + b _08136748 + .align 2, 0 +_08136708: .4byte gUnknown_203A814 +_0813670C: .4byte 0x00001005 +_08136710: + movs r0, #5 + bl sub_080A306C + ldr r0, _0813672C + ldr r2, _08136730 + adds r1, r2, #0 + strh r1, [r0] + ldr r0, _08136734 + mov r1, sb + strh r1, [r0] + adds r0, r7, #0 + bl sub_0813652C + b _08136748 + .align 2, 0 +_0813672C: .4byte gUnknown_2037290 +_08136730: .4byte 0x0000FFFF +_08136734: .4byte gUnknown_203CB48 +_08136738: + movs r0, #5 + bl sub_080A306C + ldr r0, _08136758 + strh r4, [r0] + adds r0, r7, #0 + bl sub_08136978 +_08136748: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08136758: .4byte gUnknown_203CB48 + thumb_func_end sub_08136608 + + thumb_func_start sub_0813675C +sub_0813675C: @ 0x0813675C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081367A0 + adds r7, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08136782 + b _08136888 +_08136782: + ldr r0, _081367A4 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081367AC + movs r0, #5 + bl sub_080A306C + ldrb r0, [r7] + ldr r1, _081367A8 + subs r2, r1, #2 + bl sub_081AE538 + b _08136862 + .align 2, 0 +_081367A0: .4byte gUnknown_3005B68 +_081367A4: .4byte gUnknown_3002360 +_081367A8: .4byte gUnknown_203A81A +_081367AC: + ldr r6, _081367F0 + ldrh r4, [r6, #6] + ldrh r5, [r6, #4] + ldrb r0, [r7] + bl sub_081AE2DC + mov sb, r0 + ldrb r0, [r7] + adds r1, r6, #6 + adds r2, r6, #4 + bl sub_081AE538 + ldrh r0, [r6, #6] + cmp r4, r0 + bne _081367D0 + ldrh r6, [r6, #4] + cmp r5, r6 + beq _0813680A +_081367D0: + movs r4, #0 +_081367D2: + ldr r0, _081367F0 + ldrh r0, [r0, #6] + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r1, #4 + ldrsh r0, [r7, r1] + cmp r5, r0 + bne _081367F8 + adds r0, r4, #0 + ldr r1, _081367F4 + bl sub_08136150 + b _08136800 + .align 2, 0 +_081367F0: .4byte gUnknown_203A814 +_081367F4: .4byte 0x00002005 +_081367F8: + adds r0, r4, #0 + movs r1, #5 + bl sub_08136150 +_08136800: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #8 + bls _081367D2 +_0813680A: + ldr r5, _08136844 + ldr r0, [r5] + ldr r4, _08136848 + adds r0, r0, r4 + movs r1, #7 + movs r2, #0 + bl sub_08122408 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _0813684C + ldrh r3, [r1, #4] + lsls r3, r3, #4 + adds r3, #8 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r1, #7 + movs r2, #0x80 + bl sub_08122454 + movs r0, #2 + rsbs r0, r0, #0 + cmp sb, r0 + beq _08136850 + adds r0, #1 + cmp sb, r0 + bne _0813687A + b _08136888 + .align 2, 0 +_08136844: .4byte gUnknown_203A81C +_08136848: .4byte 0x00000D2D +_0813684C: .4byte gUnknown_203A814 +_08136850: + movs r0, #5 + bl sub_080A306C + ldr r0, _0813686C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08136870 +_08136862: + mov r0, r8 + movs r1, #0 + bl sub_08136894 + b _08136888 + .align 2, 0 +_0813686C: .4byte gUnknown_3002360 +_08136870: + mov r0, r8 + movs r1, #1 + bl sub_08136894 + b _08136888 +_0813687A: + movs r0, #5 + bl sub_080A306C + mov r0, r8 + movs r1, #0 + bl sub_08136894 +_08136888: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0813675C + + thumb_func_start sub_08136894 +sub_08136894: @ 0x08136894 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08136954 + adds r6, r0, r1 + ldr r2, _08136958 + ldrh r0, [r2, #4] + ldrh r1, [r2, #6] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0813695C + ldr r0, [r0] + ldr r1, _08136960 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldrb r0, [r6] + adds r1, r2, #6 + adds r2, #4 + bl sub_081AE3A0 + cmp r4, #0 + bne _081368EA + movs r0, #4 + ldrsh r1, [r6, r0] + cmp r1, r5 + beq _081368FA + subs r0, r5, #1 + cmp r1, r0 + beq _081368EA + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_081361F0 + bl sub_08135E60 +_081368EA: + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, r5 + bge _081368FA + ldr r1, _08136958 + ldrh r0, [r1, #4] + subs r0, #1 + strh r0, [r1, #4] +_081368FA: + ldr r0, _08136964 + ldr r2, _08136958 + ldrh r1, [r2, #6] + ldrh r2, [r2, #4] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6] + movs r0, #0 + bl sub_08199654 + ldr r0, _0813695C + ldr r0, [r0] + ldr r1, _08136968 + adds r0, r0, r1 + movs r1, #7 + movs r2, #1 + bl sub_08122408 + movs r4, #0 + lsls r5, r7, #2 +_08136926: + adds r0, r4, #0 + movs r1, #5 + bl sub_08136150 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #8 + bls _08136926 + ldr r0, _08136958 + ldrh r0, [r0, #4] + ldr r1, _0813696C + bl sub_08136150 + ldr r1, _08136970 + adds r0, r5, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08136974 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08136954: .4byte gUnknown_3005B68 +_08136958: .4byte gUnknown_203A814 +_0813695C: .4byte gUnknown_203A81C +_08136960: .4byte 0x00000D35 +_08136964: .4byte gUnknown_3006050 +_08136968: .4byte 0x00000D2D +_0813696C: .4byte 0x00001005 +_08136970: .4byte gUnknown_3005B60 +_08136974: .4byte sub_08136608 + thumb_func_end sub_08136894 + + thumb_func_start sub_08136978 +sub_08136978: @ 0x08136978 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + ldr r1, _081369A4 + adds r7, r0, r1 + ldr r0, _081369A8 + ldr r0, [r0] + ldr r1, _081369AC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081369B0 + movs r0, #8 + b _081369B2 + .align 2, 0 +_081369A4: .4byte gUnknown_3005B68 +_081369A8: .4byte gUnknown_203A81C +_081369AC: .4byte 0x00000808 +_081369B0: + movs r0, #9 +_081369B2: + strh r0, [r7, #2] + bl sub_08136458 + ldrb r0, [r7, #2] + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + ldrb r0, [r7, #2] + movs r2, #0 + mov r8, r2 + str r2, [sp] + movs r6, #0x10 + str r6, [sp, #4] + ldr r5, _08136A38 + ldr r2, [r5] + ldr r4, _08136A3C + adds r1, r2, r4 + ldrb r1, [r1] + str r1, [sp, #8] + ldr r1, _08136A40 + str r1, [sp, #0xc] + ldr r1, _08136A44 + adds r2, r2, r1 + ldr r1, [r2] + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_081989B4 + ldrb r0, [r7, #2] + str r6, [sp] + ldr r1, [r5] + adds r1, r1, r4 + ldrb r1, [r1] + str r1, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + ldrb r0, [r7, #2] + bl sub_0800365C + movs r0, #1 + bl sub_08199654 + ldr r1, _08136A48 + mov r2, sb + lsls r0, r2, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08136A4C + str r1, [r0] + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08136A38: .4byte gUnknown_203A81C +_08136A3C: .4byte 0x00000808 +_08136A40: .4byte gUnknown_85920B4 +_08136A44: .4byte 0x00000804 +_08136A48: .4byte gUnknown_3005B60 +_08136A4C: .4byte sub_08136A50 + thumb_func_end sub_08136978 + + thumb_func_start sub_08136A50 +sub_08136A50: @ 0x08136A50 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08136AAC + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08136AAC + adds r0, #1 + cmp r4, r0 + bne _08136A88 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_08136E58 + b _08136AAC +_08136A88: + movs r0, #5 + bl sub_080A306C + ldr r1, _08136AB4 + ldr r0, _08136AB8 + ldr r0, [r0] + ldr r2, _08136ABC + adds r0, r0, r2 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 +_08136AAC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08136AB4: .4byte gUnknown_85920B4 +_08136AB8: .4byte gUnknown_203A81C +_08136ABC: .4byte 0x00000804 + thumb_func_end sub_08136A50 + + thumb_func_start sub_08136AC0 +sub_08136AC0: @ 0x08136AC0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08136ADC + ldr r1, [r1] + movs r2, #0x80 + lsls r2, r2, #4 + adds r1, r1, r2 + ldr r2, _08136AE0 + str r2, [r1] + bl sub_0813652C + pop {r0} + bx r0 + .align 2, 0 +_08136ADC: .4byte gUnknown_203A81C +_08136AE0: .4byte sub_08136AE4 + thumb_func_end sub_08136AC0 + + thumb_func_start sub_08136AE4 +sub_08136AE4: @ 0x08136AE4 + push {lr} + ldr r2, _08136B00 + ldr r0, _08136B04 + ldrh r1, [r0] + lsls r1, r1, #3 + ldr r0, _08136B08 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + ldr r1, _08136B0C + bl sub_08166010 + pop {r0} + bx r0 + .align 2, 0 +_08136B00: .4byte gUnknown_3005AEC +_08136B04: .4byte gUnknown_203CB48 +_08136B08: .4byte 0x00000848 +_08136B0C: .4byte sub_08136B10 + thumb_func_end sub_08136AE4 + + thumb_func_start sub_08136B10 +sub_08136B10: @ 0x08136B10 + push {lr} + ldr r0, _08136B20 + ldr r1, [r0] + movs r0, #0 + bl sub_08135850 + pop {r0} + bx r0 + .align 2, 0 +_08136B20: .4byte gUnknown_203A814 + thumb_func_end sub_08136B10 + + thumb_func_start sub_08136B24 +sub_08136B24: @ 0x08136B24 + push {r4, r5, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08136B94 + adds r0, r0, r1 + ldrb r0, [r0, #2] + movs r1, #0 + bl sub_08198134 + ldr r0, _08136B98 + ldr r3, _08136B9C + ldr r1, _08136BA0 + ldr r2, [r1] + ldr r1, _08136BA4 + ldrh r1, [r1] + lsls r1, r1, #3 + adds r2, r2, r1 + ldr r1, _08136BA8 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 + ldr r5, _08136BAC + ldr r1, _08136BB0 + adds r0, r5, #0 + bl sub_08008BCC + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r5, [sp, #8] + ldr r0, _08136BB4 + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xa + movs r2, #0xa + movs r3, #0xd + bl sub_08121E6C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08136B94: .4byte gUnknown_3005B68 +_08136B98: .4byte gUnknown_2021C40 +_08136B9C: .4byte gUnknown_8592078 +_08136BA0: .4byte gUnknown_3005AEC +_08136BA4: .4byte gUnknown_203CB48 +_08136BA8: .4byte 0x00000848 +_08136BAC: .4byte gUnknown_2021C7C +_08136BB0: .4byte gUnknown_85C9869 +_08136BB4: .4byte sub_08136BB8 + thumb_func_end sub_08136B24 + + thumb_func_start sub_08136BB8 +sub_08136BB8: @ 0x08136BB8 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08136BE0 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0xe + str r2, [sp, #8] + ldr r2, _08136BE4 + str r2, [sp, #0xc] + movs r2, #1 + movs r3, #0 + bl sub_08121F84 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_08136BE0: .4byte gUnknown_85921F4 +_08136BE4: .4byte gUnknown_85920F0 + thumb_func_end sub_08136BB8 + + thumb_func_start sub_08136BE8 +sub_08136BE8: @ 0x08136BE8 + push {r4, r5, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08136C24 + ldr r1, _08136C28 + adds r0, r5, #0 + bl sub_08008BCC + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r5, [sp, #8] + ldr r0, _08136C2C + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0xa + movs r2, #0xa + movs r3, #0xd + bl sub_08121E6C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08136C24: .4byte gUnknown_2021C7C +_08136C28: .4byte gUnknown_85C987B +_08136C2C: .4byte sub_08136C30 + thumb_func_end sub_08136BE8 + + thumb_func_start sub_08136C30 +sub_08136C30: @ 0x08136C30 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08136CAC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08136CA6 + ldr r0, _08136CB0 + ldrb r0, [r0] + bl sub_08136FD8 + movs r0, #5 + bl sub_080A306C + ldr r5, _08136CB4 + subs r6, r5, #2 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + ldr r0, _08136CB8 + adds r4, r4, r0 + ldrb r0, [r4] + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_081AE3A0 + ldrh r0, [r6] + movs r1, #5 + bl sub_08136150 + bl sub_0813629C + bl sub_08136320 + bl sub_08135E60 + ldr r0, _08136CBC + ldrh r1, [r5] + ldrh r2, [r6] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldrh r0, [r6] + ldr r1, _08136CC0 + bl sub_08136150 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + adds r0, r7, #0 + bl sub_08136CC4 +_08136CA6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08136CAC: .4byte gUnknown_3002360 +_08136CB0: .4byte gUnknown_203CB48 +_08136CB4: .4byte gUnknown_203A81A +_08136CB8: .4byte gUnknown_3005B68 +_08136CBC: .4byte gUnknown_3006050 +_08136CC0: .4byte 0x00001005 + thumb_func_end sub_08136C30 + + thumb_func_start sub_08136CC4 +sub_08136CC4: @ 0x08136CC4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xa + movs r1, #0 + bl sub_08197EBC + movs r0, #1 + bl sub_08199654 + bl sub_081363FC + ldr r1, _08136CF4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08136CF8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08136CF4: .4byte gUnknown_3005B60 +_08136CF8: .4byte sub_08136608 + thumb_func_end sub_08136CC4 + + thumb_func_start sub_08136CFC +sub_08136CFC: @ 0x08136CFC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _08136D68 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08136D6C + ldr r7, _08136D70 + ldrh r2, [r7] + lsls r2, r2, #3 + ldr r6, _08136D74 + adds r2, r2, r6 + ldr r1, [r5] + adds r1, r1, r2 + bl sub_08137054 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _08136D78 + ldr r3, _08136D7C + ldr r2, [r5] + ldrh r1, [r7] + lsls r1, r1, #3 + adds r2, r2, r1 + adds r2, r2, r6 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 + ldrb r0, [r7] + bl sub_08136FD8 + ldr r1, [r5] + ldrh r0, [r7] + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r6 + ldrb r0, [r1] + lsls r0, r0, #8 + strh r0, [r7] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #0 + bne _08136D80 + adds r0, #1 + b _08136D8A + .align 2, 0 +_08136D68: .4byte gUnknown_20243E8 +_08136D6C: .4byte gUnknown_3005AEC +_08136D70: .4byte gUnknown_203CB48 +_08136D74: .4byte 0x00000848 +_08136D78: .4byte gUnknown_2022C0C +_08136D7C: .4byte gUnknown_8592078 +_08136D80: + cmp r4, #0 + ble _08136D88 + adds r0, #2 + b _08136D8A +_08136D88: + adds r0, #3 +_08136D8A: + strh r0, [r7] + mov r0, r8 + bl sub_0813652C + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08136CFC + + thumb_func_start sub_08136D9C +sub_08136D9C: @ 0x08136D9C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08136DE8 + ldrb r0, [r5] + bl sub_080FCC58 + ldr r0, _08136DEC + ldr r3, _08136DF0 + ldr r1, _08136DF4 + ldr r2, [r1] + ldrh r1, [r5] + lsls r1, r1, #3 + adds r2, r2, r1 + ldr r1, _08136DF8 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl sub_080088B8 + ldr r1, _08136DFC + ldrh r0, [r5] + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08136FD8 + movs r0, #0 + strh r0, [r5] + adds r0, r4, #0 + bl sub_0813652C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08136DE8: .4byte gUnknown_203CB48 +_08136DEC: .4byte gUnknown_2021C40 +_08136DF0: .4byte gUnknown_8592078 +_08136DF4: .4byte gUnknown_3005AEC +_08136DF8: .4byte 0x00000848 +_08136DFC: .4byte gUnknown_2037290 + thumb_func_end sub_08136D9C + + thumb_func_start sub_08136E00 +sub_08136E00: @ 0x08136E00 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _08136E44 + ldr r0, _08136E48 + ldr r5, _08136E4C + ldrh r1, [r5] + lsls r1, r1, #3 + ldr r2, _08136E50 + adds r1, r1, r2 + ldr r0, [r0] + adds r0, r0, r1 + bl sub_0818E360 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6] + ldr r1, _08136E54 + ldrh r0, [r5] + strh r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08136FD8 + movs r0, #0 + strh r0, [r5] + adds r0, r4, #0 + bl sub_0813652C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08136E44: .4byte gUnknown_2037280 +_08136E48: .4byte gUnknown_3005AEC +_08136E4C: .4byte gUnknown_203CB48 +_08136E50: .4byte 0x00000848 +_08136E54: .4byte gUnknown_2037290 + thumb_func_end sub_08136E00 + + thumb_func_start sub_08136E58 +sub_08136E58: @ 0x08136E58 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _08136E88 + adds r0, r4, r5 + ldrb r0, [r0, #2] + movs r1, #0 + bl sub_08198134 + movs r0, #1 + bl sub_08199654 + bl sub_081363FC + subs r5, #8 + adds r4, r4, r5 + ldr r0, _08136E8C + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08136E88: .4byte gUnknown_3005B68 +_08136E8C: .4byte sub_08136608 + thumb_func_end sub_08136E58 + + thumb_func_start sub_08136E90 +sub_08136E90: @ 0x08136E90 + push {r4, lr} + lsls r0, r0, #0x18 + ldr r3, _08136EE8 + ldr r1, [r3] + lsrs r0, r0, #0x15 + adds r1, r1, r0 + ldr r2, _08136EEC + adds r1, r1, r2 + movs r2, #0 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + ldr r4, _08136EF0 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + adds r4, #1 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + adds r4, #1 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + adds r4, #1 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + adds r4, #1 + adds r1, r1, r4 + strb r2, [r1] + ldr r1, [r3] + adds r1, r1, r0 + ldr r0, _08136EF4 + adds r1, r1, r0 + strb r2, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08136EE8: .4byte gUnknown_3005AEC +_08136EEC: .4byte 0x00000848 +_08136EF0: .4byte 0x00000849 +_08136EF4: .4byte 0x0000084E + thumb_func_end sub_08136E90 + + thumb_func_start sub_08136EF8 +sub_08136EF8: @ 0x08136EF8 + push {r4, lr} + movs r4, #0 +_08136EFC: + adds r0, r4, #0 + bl sub_08136E90 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x27 + bls _08136EFC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08136EF8 + + thumb_func_start sub_08136F14 +sub_08136F14: @ 0x08136F14 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + bl sub_0813700C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #1 +_08136F24: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0813700C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + bhs _08136F3C + adds r5, r0, #0 +_08136F3C: + adds r1, r4, #0 + cmp r1, #4 + bls _08136F24 + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08136F14 + + thumb_func_start sub_08136F4C +sub_08136F4C: @ 0x08136F4C + push {lr} + movs r1, #6 + bl sub_0813700C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bls _08136F5E + movs r0, #0x63 +_08136F5E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08136F4C + + thumb_func_start sub_08136F64 +sub_08136F64: @ 0x08136F64 + push {lr} + movs r1, #0 + ldr r0, _08136F80 + ldr r2, [r0] + ldr r3, _08136F84 +_08136F6E: + lsls r0, r1, #3 + adds r0, r2, r0 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _08136F88 + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + b _08136F96 + .align 2, 0 +_08136F80: .4byte gUnknown_3005AEC +_08136F84: .4byte 0x00000848 +_08136F88: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x27 + bls _08136F6E + movs r0, #1 + rsbs r0, r0, #0 +_08136F96: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08136F64 + + thumb_func_start sub_08136F9C +sub_08136F9C: @ 0x08136F9C + push {r4, lr} + adds r4, r0, #0 + bl sub_08136F64 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08136FD0 + ldr r0, _08136FC8 + ldr r2, [r0] + lsls r0, r1, #3 + ldr r1, _08136FCC + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r2] + str r1, [r2, #4] + movs r0, #1 + b _08136FD2 + .align 2, 0 +_08136FC8: .4byte gUnknown_3005AEC +_08136FCC: .4byte 0x00000848 +_08136FD0: + movs r0, #0 +_08136FD2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08136F9C + + thumb_func_start sub_08136FD8 +sub_08136FD8: @ 0x08136FD8 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08136FFC + ldr r0, [r0] + lsls r1, r2, #3 + adds r0, r0, r1 + ldr r1, _08137000 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08137004 + adds r0, r2, #0 + bl sub_08136E90 + movs r0, #1 + b _08137006 + .align 2, 0 +_08136FFC: .4byte gUnknown_3005AEC +_08137000: .4byte 0x00000848 +_08137004: + movs r0, #0 +_08137006: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08136FD8 + + thumb_func_start sub_0813700C +sub_0813700C: @ 0x0813700C + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r1, #0 + cmp r1, #0 + bne _0813701C + ldrb r0, [r0] + b _0813704E +_0813701C: + cmp r1, #1 + bne _08137024 + ldrb r0, [r0, #1] + b _0813704E +_08137024: + cmp r1, #2 + bne _0813702C + ldrb r0, [r0, #2] + b _0813704E +_0813702C: + cmp r1, #3 + bne _08137034 + ldrb r0, [r0, #3] + b _0813704E +_08137034: + cmp r1, #4 + bne _0813703C + ldrb r0, [r0, #4] + b _0813704E +_0813703C: + cmp r1, #5 + bne _08137044 + ldrb r0, [r0, #5] + b _0813704E +_08137044: + cmp r2, #6 + beq _0813704C + movs r0, #0 + b _0813704E +_0813704C: + ldrb r0, [r0, #6] +_0813704E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813700C + + thumb_func_start sub_08137054 +sub_08137054: @ 0x08137054 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + movs r4, #0 + ldr r1, _081370B0 + mov sb, r1 + lsls r1, r0, #2 + adds r7, r1, r0 +_0813706E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + adds r1, r5, #0 + bl sub_0813700C + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + ble _0813709A + adds r0, r7, r4 + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r1, r0, r1 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_0813709A: + adds r4, r5, #0 + cmp r4, #4 + bls _0813706E + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081370B0: .4byte gUnknown_8591FEC + thumb_func_end sub_08137054 + + thumb_func_start sub_081370B4 +sub_081370B4: @ 0x081370B4 + push {r4, lr} + adds r4, r1, #0 + movs r1, #0 + bl sub_0813700C + lsls r0, r0, #0x18 + ldr r1, _081370D4 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081370D4: .4byte gUnknown_8592078 + thumb_func_end sub_081370B4 + + thumb_func_start sub_081370D8 +sub_081370D8: @ 0x081370D8 + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r7, _08137108 +_081370E4: + lsls r1, r4, #3 + ldr r0, _0813710C + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08137054 + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08137110 + adds r0, r4, #1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_080088B8 + movs r0, #1 + b _0813711C + .align 2, 0 +_08137108: .4byte gUnknown_8592078 +_0813710C: .4byte gUnknown_859216C +_08137110: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _081370E4 + movs r0, #0 +_0813711C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081370D8 + + thumb_func_start sub_08137124 +sub_08137124: @ 0x08137124 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r7, #0 + movs r6, #0 +_0813712C: + adds r1, r7, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0813700C + adds r4, r0, #0 + adds r1, r6, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0813700C + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsls r1, r6, #0x10 + cmp r4, r0 + bge _08137152 + lsrs r7, r1, #0x10 +_08137152: + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r1, r2 + lsrs r6, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _0813712C + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08137124 + + thumb_func_start sub_0813716C +sub_0813716C: @ 0x0813716C + push {r4, lr} + bl sub_08179788 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081371A4 + ldr r4, _08137190 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r1, _08137194 + ldr r0, _08137198 + str r0, [r1] + ldr r1, _0813719C + ldr r0, _081371A0 + b _081371C2 + .align 2, 0 +_08137190: .4byte gUnknown_2037290 +_08137194: .4byte gUnknown_3005B10 +_08137198: .4byte sub_081B53D8 +_0813719C: .4byte gUnknown_203CBB8 +_081371A0: .4byte sub_081797D0 +_081371A4: + ldr r0, _081371C8 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _081371E0 + ldr r0, _081371CC + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081371E0 + ldr r1, _081371D0 + ldr r0, _081371D4 + str r0, [r1] + ldr r1, _081371D8 + ldr r0, _081371DC +_081371C2: + str r0, [r1] + movs r0, #1 + b _081371E2 + .align 2, 0 +_081371C8: .4byte gUnknown_2036FB8 +_081371CC: .4byte 0x00000888 +_081371D0: .4byte gUnknown_3005B10 +_081371D4: .4byte sub_081B53D8 +_081371D8: .4byte gUnknown_203CBB8 +_081371DC: .4byte sub_081371E8 +_081371E0: + movs r0, #0 +_081371E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0813716C + + thumb_func_start sub_081371E8 +sub_081371E8: @ 0x081371E8 + push {r4, lr} + bl sub_081354CC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081B1024 + ldr r1, _08137218 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r1, _0813721C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, _08137220 + lsrs r1, r2, #0x10 + strh r1, [r0, #0x18] + strh r2, [r0, #0x1a] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08137218: .4byte gUnknown_20388A8 +_0813721C: .4byte gUnknown_3005B60 +_08137220: .4byte sub_08137224 + thumb_func_end sub_081371E8 + + thumb_func_start sub_08137224 +sub_08137224: @ 0x08137224 + push {lr} + movs r0, #0xcf + bl sub_080A306C + ldr r0, _0813723C + bl sub_0809D018 + ldr r0, _08137240 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_0813723C: .4byte 0x00000888 +_08137240: .4byte gUnknown_8257EE2 + thumb_func_end sub_08137224 + + thumb_func_start sub_08137244 +sub_08137244: @ 0x08137244 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08137244 + + thumb_func_start sub_0813725C +sub_0813725C: @ 0x0813725C + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813725C + + thumb_func_start sub_08137270 +sub_08137270: @ 0x08137270 + push {r4, lr} + sub sp, #8 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _0813734C + mov r0, sp + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08137350 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r4, #0 + str r4, [sp, #4] + add r0, sp, #4 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08137354 + str r0, [r1, #8] + ldr r0, [r1, #8] + mov r0, sp + strh r4, [r0] + str r0, [r1] + ldr r0, _08137358 + str r0, [r1, #4] + ldr r0, _0813735C + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080A133C + bl sub_080A8818 + bl sub_0800668C + ldr r3, _08137360 + ldrh r2, [r3] + strh r4, [r3] + ldr r4, _08137364 + ldrh r0, [r4] + movs r1, #1 + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + ldr r0, _08137368 + bl sub_080006F0 + ldr r0, _0813736C + bl sub_08000540 + bl sub_08137374 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08137342 + ldr r0, _08137370 + ldr r0, [r0, #8] + bl sub_08000540 +_08137342: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813734C: .4byte 0x040000D4 +_08137350: .4byte 0x8100C000 +_08137354: .4byte 0x85000100 +_08137358: .4byte 0x05000002 +_0813735C: .4byte 0x810001FF +_08137360: .4byte 0x04000208 +_08137364: .4byte 0x04000200 +_08137368: .4byte sub_0813725C +_0813736C: .4byte sub_08137244 +_08137370: .4byte gUnknown_3002360 + thumb_func_end sub_08137270 + + thumb_func_start sub_08137374 +sub_08137374: @ 0x08137374 + push {r4, r5, r6, r7, lr} + bl sub_08085524 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_0808550C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + ldr r4, _081373B4 + ldrb r0, [r4] + cmp r0, #0 + beq _081373C8 + adds r7, r4, #0 + adds r0, r4, #4 + mov ip, r0 +_08137396: + lsls r2, r3, #3 + adds r1, r2, r7 + ldrb r0, [r1] + cmp r0, r6 + bne _081373B8 + ldrb r0, [r1, #1] + cmp r0, r5 + bne _081373B8 + mov r1, ip + adds r0, r2, r1 + ldr r0, [r0] + bl _call_via_r0 + movs r0, #1 + b _081373CA + .align 2, 0 +_081373B4: .4byte gUnknown_8592214 +_081373B8: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _08137396 +_081373C8: + movs r0, #0 +_081373CA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08137374 + + thumb_func_start sub_081373D0 +sub_081373D0: @ 0x081373D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r0, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + ldr r1, _081373FC + ldrb r0, [r1] + cmp r0, #0 + beq _08137410 + adds r6, r1, #0 +_081373E6: + lsls r0, r3, #3 + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, r5 + bne _08137400 + ldrb r0, [r2, #1] + cmp r0, r4 + bne _08137400 + ldrb r0, [r2, #2] + b _08137412 + .align 2, 0 +_081373FC: .4byte gUnknown_8592214 +_08137400: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081373E6 +_08137410: + movs r0, #0 +_08137412: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081373D0 + + thumb_func_start sub_08137418 +sub_08137418: @ 0x08137418 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r0, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + ldr r1, _08137444 + ldrb r0, [r1] + cmp r0, #0 + beq _08137458 + adds r6, r1, #0 +_0813742E: + lsls r0, r3, #3 + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, r5 + bne _08137448 + ldrb r0, [r2, #1] + cmp r0, r4 + bne _08137448 + ldrb r0, [r2, #3] + b _0813745A + .align 2, 0 +_08137444: .4byte gUnknown_8592214 +_08137448: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0813742E +_08137458: + movs r0, #0 +_0813745A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08137418 + + thumb_func_start sub_08137460 +sub_08137460: @ 0x08137460 + push {lr} + ldr r0, _08137470 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08137470: .4byte sub_08137474 + thumb_func_end sub_08137460 + + thumb_func_start sub_08137474 +sub_08137474: @ 0x08137474 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08137488 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0813748C + str r0, [r1] + bx lr + .align 2, 0 +_08137488: .4byte gUnknown_3005B60 +_0813748C: .4byte sub_08137490 + thumb_func_end sub_08137474 + + thumb_func_start sub_08137490 +sub_08137490: @ 0x08137490 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r0, _0813750C + ldr r1, _08137510 + bl LZ77UnCompVram + ldr r0, _08137514 + ldr r1, _08137518 + bl LZ77UnCompVram + ldr r0, _0813751C + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08137520 + movs r1, #0xe0 + movs r2, #0x10 + bl sub_080A1200 + ldr r1, _08137524 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _08137528 + movs r0, #8 + bl sub_08001144 + movs r1, #0x8a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r1, _0813752C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08137530 + str r1, [r0] + movs r2, #0 + movs r1, #0x10 + strh r1, [r0, #8] + strh r2, [r0, #0xa] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813750C: .4byte gUnknown_85924DC +_08137510: .4byte 0x0600C000 +_08137514: .4byte gUnknown_85922FC +_08137518: .4byte 0x0600F800 +_0813751C: .4byte gUnknown_859229C +_08137520: .4byte gUnknown_85922EC +_08137524: .4byte 0x00003E41 +_08137528: .4byte 0x00001F0C +_0813752C: .4byte gUnknown_3005B60 +_08137530: .4byte sub_08137534 + thumb_func_end sub_08137490 + + thumb_func_start sub_08137534 +sub_08137534: @ 0x08137534 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08137564 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrh r4, [r5, #0xa] + movs r0, #0x80 + lsls r0, r0, #5 + adds r1, r4, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + cmp r4, #0x10 + bhi _08137568 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + b _08137570 + .align 2, 0 +_08137564: .4byte gUnknown_3005B60 +_08137568: + movs r0, #0 + strh r0, [r5, #0xc] + ldr r0, _08137578 + str r0, [r5] +_08137570: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08137578: .4byte sub_0813757C + thumb_func_end sub_08137534 + + thumb_func_start sub_0813757C +sub_0813757C: @ 0x0813757C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081375B8 + movs r0, #0x52 + bl sub_08001144 + ldr r1, _081375BC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0xc] + cmp r1, #7 + bhi _081375C4 + adds r0, r1, #1 + strh r0, [r4, #0xc] + lsls r1, r1, #1 + ldr r0, _081375C0 + adds r0, r1, r0 + movs r2, #0x10 + subs r2, r2, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r1, #0xe0 + bl sub_080A1200 + b _081375D6 + .align 2, 0 +_081375B8: .4byte 0x00001010 +_081375BC: .4byte gUnknown_3005B60 +_081375C0: .4byte gUnknown_85922EC +_081375C4: + ldr r0, _081375DC + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081375E0 + str r0, [r4] + movs r0, #8 + strh r0, [r4, #0xc] +_081375D6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081375DC: .4byte gUnknown_859229C +_081375E0: .4byte sub_081375E4 + thumb_func_end sub_0813757C + + thumb_func_start sub_081375E4 +sub_081375E4: @ 0x081375E4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08137604 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0xc] + movs r3, #0xc + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08137608 + subs r0, r2, #1 + strh r0, [r1, #0xc] + b _08137610 + .align 2, 0 +_08137604: .4byte gUnknown_3005B60 +_08137608: + ldr r0, _08137614 + ldr r0, [r0, #8] + bl sub_08000540 +_08137610: + pop {r0} + bx r0 + .align 2, 0 +_08137614: .4byte gUnknown_3002360 + thumb_func_end sub_081375E4 + + thumb_func_start sub_08137618 +sub_08137618: @ 0x08137618 + push {lr} + ldr r0, _08137628 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08137628: .4byte sub_0813762C + thumb_func_end sub_08137618 + + thumb_func_start sub_0813762C +sub_0813762C: @ 0x0813762C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08137640 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _08137644 + str r0, [r1] + bx lr + .align 2, 0 +_08137640: .4byte gUnknown_3005B60 +_08137644: .4byte sub_08137648 + thumb_func_end sub_0813762C + + thumb_func_start sub_08137648 +sub_08137648: @ 0x08137648 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + ldr r0, _081376C4 + ldr r1, _081376C8 + bl LZ77UnCompVram + ldr r0, _081376CC + ldr r1, _081376D0 + bl LZ77UnCompVram + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _081376D4 + movs r0, #8 + bl sub_08001144 + movs r1, #0x8a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _081376D8 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081376DC + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _081376E0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081376E4 + str r1, [r0] + movs r2, #0 + movs r1, #0x10 + strh r1, [r0, #8] + strh r2, [r0, #0xa] + strh r2, [r0, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081376C4: .4byte gUnknown_85924DC +_081376C8: .4byte 0x0600C000 +_081376CC: .4byte gUnknown_85922FC +_081376D0: .4byte 0x0600F800 +_081376D4: .4byte 0x00001F0C +_081376D8: .4byte gUnknown_859229C +_081376DC: .4byte gUnknown_85922BC +_081376E0: .4byte gUnknown_3005B60 +_081376E4: .4byte sub_081376E8 + thumb_func_end sub_08137648 + + thumb_func_start sub_081376E8 +sub_081376E8: @ 0x081376E8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813771C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r1, [r4, #0xc] + cmp r1, #0xf + bhi _08137724 + adds r2, r1, #1 + adds r0, r2, #1 + strh r0, [r4, #0xc] + movs r0, #0xf + subs r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08137720 + adds r0, r0, r1 + lsls r2, r2, #0x11 + lsrs r2, r2, #0x10 + movs r1, #0xe0 + bl sub_080A1200 + b _08137738 + .align 2, 0 +_0813771C: .4byte gUnknown_3005B60 +_08137720: .4byte gUnknown_85922DC +_08137724: + ldr r1, _08137740 + movs r0, #0x52 + bl sub_08001144 + ldr r1, _08137744 + movs r0, #0x50 + bl sub_08001144 + ldr r0, _08137748 + str r0, [r4] +_08137738: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08137740: .4byte 0x00001010 +_08137744: .4byte 0x00003E41 +_08137748: .4byte sub_0813774C + thumb_func_end sub_081376E8 + + thumb_func_start sub_0813774C +sub_0813774C: @ 0x0813774C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08137780 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrh r0, [r5, #0xa] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + cmp r4, #0 + beq _08137784 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + b _08137796 + .align 2, 0 +_08137780: .4byte gUnknown_3005B60 +_08137784: + ldr r0, _0813779C + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081377A0 + ldr r0, [r0, #8] + bl sub_08000540 +_08137796: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813779C: .4byte gUnknown_85922BC +_081377A0: .4byte gUnknown_3002360 + thumb_func_end sub_0813774C + + thumb_func_start sub_081377A4 +sub_081377A4: @ 0x081377A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x1c + bl sub_080F9A10 + ldr r4, _081377C8 + adds r0, r4, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _081377D0 + ldr r0, _081377CC + strb r1, [r0] + b _081377DC + .align 2, 0 +_081377C8: .4byte 0x00000864 +_081377CC: .4byte gUnknown_203B9B0 +_081377D0: + ldr r1, _08137814 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0809D018 +_081377DC: + movs r0, #1 + bl sub_08084180 + cmp r0, #0 + bne _081377FE + ldr r0, _08137818 + ldr r2, [r0] + ldrh r1, [r2, #0xe] + lsls r1, r1, #0x10 + ldrb r0, [r2, #0x10] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #0x11] + orrs r1, r0 + movs r0, #1 + bl sub_080841B8 +_081377FE: + bl sub_08076750 + ldr r0, _08137818 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0813781C + movs r0, #1 + bl sub_080848D4 + b _08137822 + .align 2, 0 +_08137814: .4byte gUnknown_203B9B0 +_08137818: .4byte gUnknown_3005AF0 +_0813781C: + movs r0, #2 + bl sub_080848D4 +_08137822: + movs r7, #0 + movs r6, #0 + add r0, sp, #0x18 + mov r8, r0 + mov r5, sp +_0813782C: + movs r0, #0x64 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _081378E0 + adds r4, r1, r0 + movs r0, #0 + strb r6, [r5] + strb r0, [r5, #1] + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _0813787A + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _0813787A + adds r0, r4, #0 + movs r1, #0x43 + bl sub_0806A058 + cmp r0, #0 + bne _0813787A + movs r0, #1 + mov r1, r8 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x43 + add r2, sp, #0x18 + bl sub_0806A774 + adds r0, r4, #0 + bl sub_080EF0BC + strb r0, [r5, #1] + movs r7, #1 +_0813787A: + adds r5, #4 + adds r6, #1 + cmp r6, #5 + ble _0813782C + cmp r7, #1 + bne _081378CA + movs r0, #0x2a + bl sub_0808414C + ldr r0, _081378E4 + bl sub_0809D018 + mov r3, sp + add r2, sp, #4 + movs r6, #4 +_08137898: + ldrb r1, [r3, #1] + ldrb r0, [r2, #1] + cmp r0, r1 + bls _081378A8 + ldr r1, [sp] + ldr r0, [r2] + str r0, [sp] + str r1, [r2] +_081378A8: + adds r2, #4 + subs r6, #1 + cmp r6, #0 + bge _08137898 + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #4 + bls _081378CA + mov r0, sp + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081378E0 + adds r0, r0, r1 + movs r1, #0x43 + bl sub_080EEFFC +_081378CA: + ldr r0, _081378E8 + bl sub_08000540 + movs r0, #0 + add sp, #0x1c + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081378E0: .4byte gUnknown_2024190 +_081378E4: .4byte 0x0000089B +_081378E8: .4byte sub_08173478 + thumb_func_end sub_081377A4 + + thumb_func_start sub_081378EC +sub_081378EC: @ 0x081378EC + push {lr} + ldr r0, _081378FC + bl sub_08000540 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081378FC: .4byte sub_080858C0 + thumb_func_end sub_081378EC + + thumb_func_start sub_08137900 +sub_08137900: @ 0x08137900 + push {r4, lr} + ldr r0, _08137924 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _08137928 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + orrs r4, r0 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08137924: .4byte 0x00004024 +_08137928: .4byte 0x00004025 + thumb_func_end sub_08137900 + + thumb_func_start sub_0813792C +sub_0813792C: @ 0x0813792C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0813794C + lsrs r1, r4, #0x10 + bl sub_0809CF88 + ldr r0, _08137950 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r1, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813794C: .4byte 0x00004024 +_08137950: .4byte 0x00004025 + thumb_func_end sub_0813792C + + thumb_func_start sub_08137954 +sub_08137954: @ 0x08137954 + push {r4, lr} + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + orrs r4, r0 + adds r0, r4, #0 + bl sub_0813792C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08137954 + + thumb_func_start sub_08137974 +sub_08137974: @ 0x08137974 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_08137900 + adds r1, r0, #0 + cmp r4, #0 + beq _08137998 + ldr r3, _081379A4 + ldr r2, _081379A8 +_08137988: + adds r0, r1, #0 + muls r0, r3, r0 + adds r1, r0, r2 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + bne _08137988 +_08137998: + adds r0, r1, #0 + bl sub_0813792C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081379A4: .4byte 0x41C64E6D +_081379A8: .4byte 0x00003039 + thumb_func_end sub_08137974 + + thumb_func_start sub_081379AC +sub_081379AC: @ 0x081379AC + push {r4, r5, r6, lr} + bl sub_08137900 + lsrs r6, r0, #0x10 + movs r5, #0 +_081379B6: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081379E0 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081379E8 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + ldr r1, _081379E4 + ands r1, r0 + cmp r1, r6 + bne _081379E8 + movs r0, #1 + b _081379F0 + .align 2, 0 +_081379E0: .4byte gUnknown_2024190 +_081379E4: .4byte 0x0000FFFF +_081379E8: + adds r5, #1 + cmp r5, #5 + ble _081379B6 + movs r0, #0 +_081379F0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081379AC + + thumb_func_start sub_081379F8 +sub_081379F8: @ 0x081379F8 + push {lr} + bl sub_08085524 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08085538 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08137A3E + bl sub_0802F1EC + ldr r1, _08137A2C + ldr r0, _08137A30 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08137A38 + ldr r0, _08137A34 + bl sub_0809D018 + b _08137A3E + .align 2, 0 +_08137A2C: .4byte gUnknown_8592590 +_08137A30: .4byte gUnknown_3005A50 +_08137A34: .4byte 0x0000089A +_08137A38: + ldr r0, _08137A44 + bl sub_0809D040 +_08137A3E: + pop {r0} + bx r0 + .align 2, 0 +_08137A44: .4byte 0x0000089A + thumb_func_end sub_081379F8 + + thumb_func_start sub_08137A48 +sub_08137A48: @ 0x08137A48 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080ABCB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08137A62 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_08137A62: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08137A48 + + thumb_func_start sub_08137A68 +sub_08137A68: @ 0x08137A68 + push {lr} + ldr r0, _08137A78 + movs r1, #0x50 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08137A78: .4byte sub_08137A48 + thumb_func_end sub_08137A68 + + thumb_func_start sub_08137A7C +sub_08137A7C: @ 0x08137A7C + push {lr} + ldr r0, _08137A8C + bl sub_0809CF20 + movs r1, #0 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08137A8C: .4byte 0x00004049 + thumb_func_end sub_08137A7C + + thumb_func_start sub_08137A90 +sub_08137A90: @ 0x08137A90 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _08137AB8 + bl sub_0809CF20 + adds r5, r0, #0 + ldrh r0, [r5] + adds r4, r4, r0 + strh r4, [r5] + ldrh r0, [r5] + movs r1, #7 + bl __umodsi3 + strh r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08137AB8: .4byte 0x00004049 + thumb_func_end sub_08137A90 + + thumb_func_start sub_08137ABC +sub_08137ABC: @ 0x08137ABC + push {lr} + ldr r0, _08137AD8 + ldrh r0, [r0] + cmp r0, #0 + bne _08137AE0 + movs r0, #0 + bl sub_080BFD9C + ldr r1, _08137ADC + strh r0, [r1] + movs r0, #1 + bl sub_080BFD9C + b _08137AF0 + .align 2, 0 +_08137AD8: .4byte gUnknown_2037280 +_08137ADC: .4byte gUnknown_2037282 +_08137AE0: + movs r0, #0 + bl sub_080BFD4C + ldr r1, _08137B00 + strh r0, [r1] + movs r0, #1 + bl sub_080BFD4C +_08137AF0: + ldr r1, _08137B04 + strh r0, [r1] + bl sub_0809CD04 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08137B00: .4byte gUnknown_2037282 +_08137B04: .4byte gUnknown_2037284 + thumb_func_end sub_08137ABC + + thumb_func_start sub_08137B08 +sub_08137B08: @ 0x08137B08 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #9 + bhi _08137B14 + b _08137C6C +_08137B14: + cmp r0, #0x13 + bhi _08137B20 + ldr r0, _08137B1C + b _08137C76 + .align 2, 0 +_08137B1C: .4byte gUnknown_8262E81 +_08137B20: + cmp r0, #0x1d + bhi _08137B2C + ldr r0, _08137B28 + b _08137C76 + .align 2, 0 +_08137B28: .4byte gUnknown_8262EA6 +_08137B2C: + cmp r0, #0x27 + bhi _08137B38 + ldr r0, _08137B34 + b _08137C76 + .align 2, 0 +_08137B34: .4byte gUnknown_8262ECF +_08137B38: + cmp r0, #0x31 + bhi _08137B44 + ldr r0, _08137B40 + b _08137C76 + .align 2, 0 +_08137B40: .4byte gUnknown_8262EF5 +_08137B44: + cmp r0, #0x3b + bhi _08137B50 + ldr r0, _08137B4C + b _08137C76 + .align 2, 0 +_08137B4C: .4byte gUnknown_8262F18 +_08137B50: + cmp r0, #0x45 + bhi _08137B5C + ldr r0, _08137B58 + b _08137C76 + .align 2, 0 +_08137B58: .4byte gUnknown_8262F3F +_08137B5C: + cmp r0, #0x4f + bhi _08137B68 + ldr r0, _08137B64 + b _08137C76 + .align 2, 0 +_08137B64: .4byte gUnknown_8262F61 +_08137B68: + cmp r0, #0x59 + bhi _08137B74 + ldr r0, _08137B70 + b _08137C76 + .align 2, 0 +_08137B70: .4byte gUnknown_8262F8A +_08137B74: + cmp r0, #0x63 + bhi _08137B80 + ldr r0, _08137B7C + b _08137C76 + .align 2, 0 +_08137B7C: .4byte gUnknown_8262FAD +_08137B80: + cmp r0, #0x6d + bhi _08137B8C + ldr r0, _08137B88 + b _08137C76 + .align 2, 0 +_08137B88: .4byte gUnknown_8262FE1 +_08137B8C: + cmp r0, #0x77 + bhi _08137B98 + ldr r0, _08137B94 + b _08137C76 + .align 2, 0 +_08137B94: .4byte gUnknown_826300C +_08137B98: + cmp r0, #0x81 + bhi _08137BA4 + ldr r0, _08137BA0 + b _08137C76 + .align 2, 0 +_08137BA0: .4byte gUnknown_8263032 +_08137BA4: + cmp r0, #0x8b + bhi _08137BB0 + ldr r0, _08137BAC + b _08137C76 + .align 2, 0 +_08137BAC: .4byte gUnknown_8263050 +_08137BB0: + cmp r0, #0x95 + bhi _08137BBC + ldr r0, _08137BB8 + b _08137C76 + .align 2, 0 +_08137BB8: .4byte gUnknown_8263072 +_08137BBC: + cmp r0, #0x9f + bhi _08137BC8 + ldr r0, _08137BC4 + b _08137C76 + .align 2, 0 +_08137BC4: .4byte gUnknown_8263095 +_08137BC8: + cmp r0, #0xa9 + bhi _08137BD4 + ldr r0, _08137BD0 + b _08137C76 + .align 2, 0 +_08137BD0: .4byte gUnknown_82630C7 +_08137BD4: + cmp r0, #0xb3 + bhi _08137BE0 + ldr r0, _08137BDC + b _08137C76 + .align 2, 0 +_08137BDC: .4byte gUnknown_82630F0 +_08137BE0: + cmp r0, #0xbd + bhi _08137BEC + ldr r0, _08137BE8 + b _08137C76 + .align 2, 0 +_08137BE8: .4byte gUnknown_826310C +_08137BEC: + cmp r0, #0xc7 + bls _08137C5A + cmp r0, #0xc8 + bne _08137C28 + ldr r0, _08137C24 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08137C5A + movs r0, #0xcd + lsls r0, r0, #1 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08137C5A + b _08137C74 + .align 2, 0 +_08137C24: .4byte 0x00000199 +_08137C28: + cmp r0, #0xc9 + bne _08137C68 + ldr r0, _08137C60 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08137C74 + movs r0, #0xcd + lsls r0, r0, #1 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08137C74 +_08137C5A: + ldr r0, _08137C64 + b _08137C76 + .align 2, 0 +_08137C60: .4byte 0x00000199 +_08137C64: .4byte gUnknown_826312D +_08137C68: + cmp r0, #0xca + beq _08137C74 +_08137C6C: + ldr r0, _08137C70 + b _08137C76 + .align 2, 0 +_08137C70: .4byte gUnknown_8262E5F +_08137C74: + ldr r0, _08137C7C +_08137C76: + pop {r1} + bx r1 + .align 2, 0 +_08137C7C: .4byte gUnknown_826314F + thumb_func_end sub_08137B08 + + thumb_func_start sub_08137C80 +sub_08137C80: @ 0x08137C80 + push {lr} + ldr r0, _08137C94 + ldrh r0, [r0] + bl sub_08137B08 + bl sub_08097B74 + pop {r0} + bx r0 + .align 2, 0 +_08137C94: .4byte gUnknown_2037280 + thumb_func_end sub_08137C80 + + thumb_func_start sub_08137C98 +sub_08137C98: @ 0x08137C98 + push {lr} + ldr r0, _08137CA8 + bl sub_08000540 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_08137CA8: .4byte sub_08173F78 + thumb_func_end sub_08137C98 + + thumb_func_start sub_08137CAC +sub_08137CAC: @ 0x08137CAC + push {lr} + ldr r0, _08137CC0 + bl sub_08000540 + ldr r1, _08137CC4 + ldr r0, _08137CC8 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08137CC0: .4byte sub_08085A30 +_08137CC4: .4byte gUnknown_3005B0C +_08137CC8: .4byte sub_08137CCC + thumb_func_end sub_08137CAC + + thumb_func_start sub_08137CCC +sub_08137CCC: @ 0x08137CCC + push {lr} + sub sp, #4 + bl sub_080987DC + bl sub_080850EC + bl sub_080E1850 + bl sub_080E1A0C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _08137D00 + movs r1, #0xa + bl sub_080A8878 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08137D00: .4byte sub_08137D04 + thumb_func_end sub_08137CCC + + thumb_func_start sub_08137D04 +sub_08137D04: @ 0x08137D04 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08137D20 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08137D1C + adds r0, r2, #0 + bl sub_080A8964 +_08137D1C: + pop {r0} + bx r0 + .align 2, 0 +_08137D20: .4byte gUnknown_2037C74 + thumb_func_end sub_08137D04 + + thumb_func_start sub_08137D24 +sub_08137D24: @ 0x08137D24 + push {lr} + ldr r0, _08137D34 + bl sub_08000540 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_08137D34: .4byte sub_08177714 + thumb_func_end sub_08137D24 + + thumb_func_start sub_08137D38 +sub_08137D38: @ 0x08137D38 + push {lr} + ldr r0, _08137D50 + ldr r1, _08137D54 + str r1, [r0, #8] + ldr r0, _08137D58 + bl sub_08000540 + bl sub_080987DC + pop {r0} + bx r0 + .align 2, 0 +_08137D50: .4byte gUnknown_3002360 +_08137D54: .4byte sub_08085A30 +_08137D58: .4byte sub_08134B8C + thumb_func_end sub_08137D38 + + thumb_func_start sub_08137D5C +sub_08137D5C: @ 0x08137D5C + ldr r0, _08137D70 + movs r1, #0 + strb r1, [r0] + ldr r0, _08137D74 + strb r1, [r0] + ldr r1, _08137D78 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_08137D70: .4byte gUnknown_203A820 +_08137D74: .4byte gUnknown_203A821 +_08137D78: .4byte gUnknown_203A824 + thumb_func_end sub_08137D5C + + thumb_func_start sub_08137D7C +sub_08137D7C: @ 0x08137D7C + ldr r1, _08137D94 + movs r0, #1 + strb r0, [r1] + ldr r1, _08137D98 + movs r0, #0 + strb r0, [r1] + ldr r1, _08137D9C + ldr r0, _08137DA0 + ldr r0, [r0, #0x20] + str r0, [r1] + bx lr + .align 2, 0 +_08137D94: .4byte gUnknown_203A820 +_08137D98: .4byte gUnknown_203A821 +_08137D9C: .4byte gUnknown_203A824 +_08137DA0: .4byte gUnknown_3002360 + thumb_func_end sub_08137D7C + + thumb_func_start sub_08137DA4 +sub_08137DA4: @ 0x08137DA4 + push {lr} + movs r0, #4 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08137DB6 + movs r0, #1 + b _08137DC8 +_08137DB6: + movs r0, #2 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08137DC6 + movs r0, #0 + b _08137DC8 +_08137DC6: + movs r0, #2 +_08137DC8: + pop {r1} + bx r1 + thumb_func_end sub_08137DA4 + + thumb_func_start sub_08137DCC +sub_08137DCC: @ 0x08137DCC + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + cmp r6, #0x63 + bhi _08137DF8 + ldr r4, _08137DF0 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r1, _08137DF4 + adds r0, r4, #0 + bl sub_080088D8 + b _08137E00 + .align 2, 0 +_08137DF0: .4byte gUnknown_2021C40 +_08137DF4: .4byte gUnknown_85CB025 +_08137DF8: + ldr r0, _08137E4C + ldr r1, _08137E50 + bl sub_080088B8 +_08137E00: + ldr r0, _08137E54 + cmp r7, r0 + bhi _08137E60 + ldr r4, _08137E58 + adds r0, r7, #0 + movs r1, #0x3c + bl __udivsi3 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + movs r0, #0xb8 + strb r0, [r4, #2] + adds r5, r4, #3 + adds r0, r7, #0 + movs r1, #0x3c + bl __umodsi3 + movs r1, #0x64 + muls r0, r1, r0 + movs r1, #0x3c + bl __udivsi3 + adds r1, r0, #0 + adds r0, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r1, _08137E5C + adds r0, r4, #0 + bl sub_080088D8 + b _08137E68 + .align 2, 0 +_08137E4C: .4byte gUnknown_2021C40 +_08137E50: .4byte gUnknown_85CB00E +_08137E54: .4byte 0x00000E0F +_08137E58: .4byte gUnknown_2021C54 +_08137E5C: .4byte gUnknown_85CB021 +_08137E60: + ldr r0, _08137E74 + ldr r1, _08137E78 + bl sub_080088B8 +_08137E68: + movs r4, #0 + cmp r6, #0 + bne _08137E7C + movs r4, #5 + b _08137E9A + .align 2, 0 +_08137E74: .4byte gUnknown_2021C54 +_08137E78: .4byte gUnknown_85CB018 +_08137E7C: + cmp r6, #3 + bhi _08137E84 + movs r4, #4 + b _08137E9A +_08137E84: + cmp r6, #9 + bhi _08137E8C + movs r4, #3 + b _08137E9A +_08137E8C: + cmp r6, #0x13 + bhi _08137E94 + movs r4, #2 + b _08137E9A +_08137E94: + cmp r6, #0x63 + bhi _08137E9A + movs r4, #1 +_08137E9A: + adds r0, r7, #0 + movs r1, #0x3c + bl __udivsi3 + cmp r0, #0xa + bhi _08137EAA + adds r0, r4, #5 + b _08137EC8 +_08137EAA: + cmp r0, #0xf + bhi _08137EB2 + adds r0, r4, #4 + b _08137EC8 +_08137EB2: + cmp r0, #0x14 + bhi _08137EBA + adds r0, r4, #3 + b _08137EC8 +_08137EBA: + cmp r0, #0x28 + bhi _08137EC2 + adds r0, r4, #2 + b _08137EC8 +_08137EC2: + cmp r0, #0x3b + bhi _08137ECC + adds r0, r4, #1 +_08137EC8: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08137ECC: + ldr r0, _08137ED8 + strh r4, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08137ED8: .4byte gUnknown_2037290 + thumb_func_end sub_08137DCC + + thumb_func_start sub_08137EDC +sub_08137EDC: @ 0x08137EDC + push {r4, r5, lr} + ldr r0, _08137F00 + ldr r1, _08137F04 + ldr r4, [r0, #0x20] + ldr r0, [r1] + subs r4, r4, r0 + ldr r5, _08137F08 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_08137DCC + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_08137F0C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08137F00: .4byte gUnknown_3002360 +_08137F04: .4byte gUnknown_203A824 +_08137F08: .4byte gUnknown_203A821 + thumb_func_end sub_08137EDC + + thumb_func_start sub_08137F0C +sub_08137F0C: @ 0x08137F0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r6, _08137F60 + adds r0, r6, #0 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r7, _08137F64 + adds r0, r7, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + adds r4, r4, r0 + cmp r4, r5 + bhi _08137F3C + cmp r4, #0 + bne _08137F56 +_08137F3C: + lsls r1, r5, #0x10 + lsrs r1, r1, #0x10 + adds r0, r6, #0 + bl sub_0809CF88 + lsrs r1, r5, #0x10 + adds r0, r7, #0 + bl sub_0809CF88 + ldr r0, _08137F68 + mov r1, r8 + bl sub_0809CF88 +_08137F56: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08137F60: .4byte 0x00004028 +_08137F64: .4byte 0x00004029 +_08137F68: .4byte 0x00004027 + thumb_func_end sub_08137F0C + + thumb_func_start sub_08137F6C +sub_08137F6C: @ 0x08137F6C + push {r4, lr} + ldr r0, _08137FA0 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _08137FA4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + adds r4, r4, r0 + cmp r4, #0 + beq _08137FAC + ldr r0, _08137FA8 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08137DCC + movs r0, #1 + b _08137FAE + .align 2, 0 +_08137FA0: .4byte 0x00004028 +_08137FA4: .4byte 0x00004029 +_08137FA8: .4byte 0x00004027 +_08137FAC: + movs r0, #0 +_08137FAE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08137F6C + + thumb_func_start sub_08137FB4 +sub_08137FB4: @ 0x08137FB4 + push {r4, lr} + ldr r0, _08137FF4 + ldrh r1, [r0] + ldr r0, _08137FF8 + cmp r1, r0 + beq _08137FEC + ldr r4, _08137FFC + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + beq _08137FDE + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bne _08137FEC +_08137FDE: + adds r0, r4, #0 + movs r1, #0 + bl sub_0809CF88 + movs r0, #0 + bl sub_0808515C +_08137FEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08137FF4: .4byte gUnknown_2031F7C +_08137FF8: .4byte 0x00000C1D +_08137FFC: .4byte 0x000040A9 + thumb_func_end sub_08137FB4 + + thumb_func_start sub_08138000 +sub_08138000: @ 0x08138000 + push {lr} + ldr r0, _08138018 + bl sub_0809D018 + ldr r0, _0813801C + bl sub_0809CF20 + movs r1, #0 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08138018: .4byte 0x0000088D +_0813801C: .4byte 0x0000404A + thumb_func_end sub_08138000 + + thumb_func_start sub_08138020 +sub_08138020: @ 0x08138020 + push {lr} + ldr r0, _0813802C + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0813802C: .4byte 0x0000088D + thumb_func_end sub_08138020 + + thumb_func_start sub_08138030 +sub_08138030: @ 0x08138030 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0813805C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08138056 + ldr r0, _08138060 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, r4, r1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xcc + bhi _08138064 +_08138056: + movs r0, #0 + b _08138066 + .align 2, 0 +_0813805C: .4byte 0x0000088D +_08138060: .4byte 0x0000404A +_08138064: + movs r0, #1 +_08138066: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08138030 + + thumb_func_start sub_0813806C +sub_0813806C: @ 0x0813806C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + ldr r0, _0813809C + bl sub_0809CF20 + adds r4, r0, #0 + ldr r0, _081380A0 + bl sub_0809CF20 + ldrh r0, [r0] + subs r0, #1 + cmp r0, #9 + bhi _08138132 + lsls r0, r0, #2 + ldr r1, _081380A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813809C: .4byte 0x0000404A +_081380A0: .4byte 0x000040B4 +_081380A4: .4byte _081380A8 +_081380A8: @ jump table + .4byte _081380D0 @ case 0 + .4byte _081380E0 @ case 1 + .4byte _081380D4 @ case 2 + .4byte _081380D8 @ case 3 + .4byte _081380D8 @ case 4 + .4byte _081380DC @ case 5 + .4byte _08138108 @ case 6 + .4byte _081380D0 @ case 7 + .4byte _081380D4 @ case 8 + .4byte _081380DC @ case 9 +_081380D0: + movs r0, #1 + b _0813813E +_081380D4: + movs r0, #4 + b _0813813E +_081380D8: + movs r0, #2 + b _0813813E +_081380DC: + movs r0, #3 + b _0813813E +_081380E0: + ldrh r0, [r4] + cmp r0, #0x3b + bhi _081380F0 + movs r0, #0x31 + strb r0, [r5] + ldrh r0, [r4] + adds r0, #0x13 + b _08138130 +_081380F0: + cmp r0, #0x8b + bhi _081380FE + movs r0, #0x30 + strb r0, [r5] + ldrh r0, [r4] + subs r0, #0x3c + b _08138130 +_081380FE: + movs r0, #0x2f + strb r0, [r5] + ldrh r0, [r4] + subs r0, #0x8c + b _08138130 +_08138108: + ldrh r0, [r4] + cmp r0, #0x41 + bhi _08138118 + movs r0, #0x2f + strb r0, [r5] + ldrh r1, [r4] + movs r0, #0x41 + b _0813812E +_08138118: + cmp r0, #0x91 + bhi _08138126 + movs r0, #0x30 + strb r0, [r5] + ldrh r1, [r4] + movs r0, #0x91 + b _0813812E +_08138126: + movs r0, #0x31 + strb r0, [r5] + ldrh r1, [r4] + movs r0, #0xe0 +_0813812E: + subs r0, r0, r1 +_08138130: + strh r0, [r6] +_08138132: + movs r0, #0 + mov r1, r8 + strb r0, [r1] + movs r0, #0x14 + strh r0, [r7] + movs r0, #0 +_0813813E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0813806C + + thumb_func_start sub_08138148 +sub_08138148: @ 0x08138148 + push {lr} + movs r0, #0x88 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813817A + ldr r0, _08138180 + ldrb r0, [r0, #0x17] + cmp r0, #1 + blt _0813817A + cmp r0, #3 + ble _08138166 + cmp r0, #6 + bne _0813817A +_08138166: + ldr r0, _08138184 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xf9 + bhi _08138188 +_0813817A: + movs r0, #0 + b _0813818A + .align 2, 0 +_08138180: .4byte gUnknown_2036FB8 +_08138184: .4byte 0x000040F2 +_08138188: + movs r0, #1 +_0813818A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08138148 + + thumb_func_start sub_08138190 +sub_08138190: @ 0x08138190 + push {lr} + movs r0, #0x8a + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081381C2 + ldr r0, _081381C8 + ldrb r0, [r0, #0x17] + cmp r0, #1 + blt _081381C2 + cmp r0, #3 + ble _081381AE + cmp r0, #6 + bne _081381C2 +_081381AE: + ldr r0, _081381CC + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #9 + bhi _081381D0 +_081381C2: + movs r0, #0 + b _081381D2 + .align 2, 0 +_081381C8: .4byte gUnknown_2036FB8 +_081381CC: .4byte 0x000040F3 +_081381D0: + movs r0, #1 +_081381D2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08138190 + + thumb_func_start sub_081381D8 +sub_081381D8: @ 0x081381D8 + push {lr} + movs r0, #0x72 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813820A + ldr r0, _08138210 + ldrb r0, [r0, #0x17] + cmp r0, #1 + blt _0813820A + cmp r0, #3 + ble _081381F6 + cmp r0, #6 + bne _0813820A +_081381F6: + ldr r0, _08138214 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #9 + bhi _08138218 +_0813820A: + movs r0, #0 + b _0813821A + .align 2, 0 +_08138210: .4byte gUnknown_2036FB8 +_08138214: .4byte 0x000040F5 +_08138218: + movs r0, #1 +_0813821A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081381D8 + + thumb_func_start sub_08138220 +sub_08138220: @ 0x08138220 + push {lr} + movs r0, #0x80 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08138252 + ldr r0, _08138258 + ldrb r0, [r0, #0x17] + cmp r0, #1 + blt _08138252 + cmp r0, #3 + ble _0813823E + cmp r0, #6 + bne _08138252 +_0813823E: + ldr r0, _0813825C + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xf9 + bhi _08138260 +_08138252: + movs r0, #0 + b _08138262 + .align 2, 0 +_08138258: .4byte gUnknown_2036FB8 +_0813825C: .4byte 0x000040F4 +_08138260: + movs r0, #1 +_08138262: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08138220 + + thumb_func_start sub_08138268 +sub_08138268: @ 0x08138268 + push {lr} + movs r0, #0x75 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813829A + ldr r0, _081382A0 + ldrb r0, [r0, #0x17] + cmp r0, #1 + blt _0813829A + cmp r0, #3 + ble _08138286 + cmp r0, #6 + bne _0813829A +_08138286: + ldr r0, _081382A4 + bl sub_0809CF20 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0xf9 + bhi _081382A8 +_0813829A: + movs r0, #0 + b _081382AA + .align 2, 0 +_081382A0: .4byte gUnknown_2036FB8 +_081382A4: .4byte 0x000040F6 +_081382A8: + movs r0, #1 +_081382AA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08138268 + + thumb_func_start sub_081382B0 +sub_081382B0: @ 0x081382B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _081382FA + ldr r0, _08138308 + mov r8, r0 +_081382D2: + cmp r7, r4 + beq _081382F0 + lsls r0, r6, #2 + add r0, r8 + ldr r0, [r0] + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + ldr r2, _0813830C + adds r1, r1, r2 + bl sub_080088B8 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_081382F0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _081382D2 +_081382FA: + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08138308: .4byte gUnknown_8568BF0 +_0813830C: .4byte gUnknown_20226A8 + thumb_func_end sub_081382B0 + + thumb_func_start sub_08138310 +sub_08138310: @ 0x08138310 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + movs r7, #0 + movs r0, #0 + mov sb, r0 + mov r8, r0 + ldr r1, _0813835C + add r0, sp, #8 + movs r2, #4 + bl memcpy + add r4, sp, #0xc + ldr r1, _08138360 + adds r0, r4, #0 + movs r2, #8 + bl memcpy + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #2 + beq _08138380 + cmp r0, #2 + bgt _08138364 + cmp r0, #1 + beq _081383AC + b _081383C0 + .align 2, 0 +_0813835C: .4byte gUnknown_85925A8 +_08138360: .4byte gUnknown_85925AC +_08138364: + cmp r1, #3 + beq _0813836E + cmp r1, #4 + beq _08138394 + b _081383C0 +_0813836E: + movs r7, #2 + ldr r0, _0813837C + ldr r1, [r0] + ldrh r0, [r1] + subs r0, #1 + b _0813839C + .align 2, 0 +_0813837C: .4byte gUnknown_3005AEC +_08138380: + movs r7, #1 + ldr r0, _08138390 + ldr r0, [r0] + ldrh r1, [r0] + mov sb, r1 + ldrh r0, [r0, #2] + subs r0, #1 + b _081383BA + .align 2, 0 +_08138390: .4byte gUnknown_3005AEC +_08138394: + ldr r0, _081383A8 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 +_0813839C: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldrh r1, [r1, #2] + mov r8, r1 + b _081383C0 + .align 2, 0 +_081383A8: .4byte gUnknown_3005AEC +_081383AC: + movs r7, #3 + ldr r0, _081383C4 + ldr r0, [r0] + ldrh r3, [r0] + mov sb, r3 + ldrh r0, [r0, #2] + adds r0, #1 +_081383BA: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 +_081383C0: + movs r6, #0 + b _08138480 + .align 2, 0 +_081383C4: .4byte gUnknown_3005AEC +_081383C8: + cmp sl, r6 + beq _0813847A + ldr r0, _081383E8 + lsls r2, r6, #3 + subs r1, r2, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r3, [r1] + adds r4, r0, #0 + cmp r3, #1 + blt _081383FC + cmp r3, #2 + ble _081383EC + cmp r3, #3 + beq _081383F8 + b _081383FC + .align 2, 0 +_081383E8: .4byte gUnknown_20226A0 +_081383EC: + ldrb r0, [r1, #0x13] + movs r5, #0xec + cmp r0, #0 + bne _0813840C + movs r5, #0xeb + b _0813840C +_081383F8: + ldrb r0, [r1, #0x13] + b _08138404 +_081383FC: + subs r0, r2, r6 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #0x13] +_08138404: + movs r5, #0x69 + cmp r0, #0 + bne _0813840C + movs r5, #0x64 +_0813840C: + mov r0, sp + adds r0, r0, r7 + adds r0, #8 + ldrb r1, [r0] + movs r4, #0xf0 + subs r4, r4, r6 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r7, #1 + mov r0, sp + adds r0, r0, r2 + adds r0, #0xc + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov r3, sb + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + mov ip, r3 + add r0, ip + adds r3, r0, #7 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + mov ip, r3 + mov r0, sp + adds r0, #0xd + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + mov r3, r8 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r2 + adds r0, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r5, #0 + adds r2, r4, #0 + mov r3, ip + bl sub_0808D5B4 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0813849C + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #4 + bne _0813847A + movs r7, #0 +_0813847A: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_08138480: + ldr r0, _08138498 + ldrh r0, [r0] + cmp r6, r0 + blo _081383C8 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08138498: .4byte gUnknown_2037280 + thumb_func_end sub_08138310 + + thumb_func_start sub_0813849C +sub_0813849C: @ 0x0813849C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r2, r2, r1 + lsrs r5, r2, #0x18 + lsrs r4, r0, #0x18 + movs r2, #0xa8 + lsls r2, r2, #0x15 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081384C4 + cmp r4, #0x64 + beq _081384C4 + cmp r4, #0x69 + bne _08138556 +_081384C4: + ldr r0, _0813850C + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + adds r0, r3, #0 + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x10 + beq _08138556 + ldr r1, _08138510 + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08138514 + adds r1, r1, r0 + lsls r3, r5, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + cmp r4, #0x69 + beq _08138548 + cmp r4, #0x69 + bgt _08138518 + cmp r4, #0x64 + beq _08138534 + b _08138556 + .align 2, 0 +_0813850C: .4byte gUnknown_3005AEC +_08138510: .4byte gUnknown_2036FF0 +_08138514: .4byte gUnknown_20205AC +_08138518: + cmp r4, #0xeb + beq _08138522 + cmp r4, #0xec + beq _0813852C + b _08138556 +_08138522: + ldr r0, _08138528 + b _08138536 + .align 2, 0 +_08138528: .4byte gUnknown_8471E6C +_0813852C: + ldr r0, _08138530 + b _08138536 + .align 2, 0 +_08138530: .4byte gUnknown_847D90C +_08138534: + ldr r0, _08138544 +_08138536: + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r3, r2 + movs r2, #0x20 + bl sub_080A1200 + b _08138556 + .align 2, 0 +_08138544: .4byte gUnknown_8470C4C +_08138548: + ldr r0, _0813855C + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r3, r2 + movs r2, #0x20 + bl sub_080A1200 +_08138556: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813855C: .4byte gUnknown_847C6CC + thumb_func_end sub_0813849C + + thumb_func_start sub_08138560 +sub_08138560: @ 0x08138560 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08138580 +_08138566: + ldr r0, _08138584 + ldrh r0, [r0] + cmp r4, r0 + bne _0813858C + lsls r1, r4, #2 + adds r1, r1, r5 + ldrb r0, [r1] + ldrb r1, [r1, #1] + ldr r2, _08138588 + bl sub_08087C54 + b _0813859A + .align 2, 0 +_08138580: .4byte gUnknown_85925B4 +_08138584: .4byte gUnknown_2037280 +_08138588: .4byte 0x00000206 +_0813858C: + lsls r1, r4, #2 + adds r1, r1, r5 + ldrb r0, [r1] + ldrb r1, [r1, #1] + ldr r2, _081385AC + bl sub_08087C54 +_0813859A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08138566 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081385AC: .4byte 0x00000205 + thumb_func_end sub_08138560 + + thumb_func_start sub_081385B0 +sub_081385B0: @ 0x081385B0 + push {r4, r5, r6, lr} + movs r5, #0xc +_081385B4: + movs r4, #7 + adds r6, r5, #1 +_081385B8: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + ldr r1, _081385D4 + adds r0, r0, r1 + cmp r0, #0x37 + bls _081385CA + b _081387A4 +_081385CA: + lsls r0, r0, #2 + ldr r1, _081385D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081385D4: .4byte 0xFFFFFDE6 +_081385D8: .4byte _081385DC +_081385DC: @ jump table + .4byte _08138762 @ case 0 + .4byte _081387A4 @ case 1 + .4byte _081387A4 @ case 2 + .4byte _081387A4 @ case 3 + .4byte _081387A4 @ case 4 + .4byte _081387A4 @ case 5 + .4byte _081386BC @ case 6 + .4byte _081386C2 @ case 7 + .4byte _081386FC @ case 8 + .4byte _08138704 @ case 9 + .4byte _081387A4 @ case 10 + .4byte _081387A4 @ case 11 + .4byte _081387A4 @ case 12 + .4byte _081387A4 @ case 13 + .4byte _081386CC @ case 14 + .4byte _081386D2 @ case 15 + .4byte _0813870C @ case 16 + .4byte _08138714 @ case 17 + .4byte _081387A4 @ case 18 + .4byte _081387A4 @ case 19 + .4byte _081387A4 @ case 20 + .4byte _081387A4 @ case 21 + .4byte _081386DC @ case 22 + .4byte _081386E2 @ case 23 + .4byte _0813871C @ case 24 + .4byte _08138724 @ case 25 + .4byte _081387A4 @ case 26 + .4byte _081387A4 @ case 27 + .4byte _081387A4 @ case 28 + .4byte _081387A4 @ case 29 + .4byte _081386EC @ case 30 + .4byte _081386F4 @ case 31 + .4byte _0813872C @ case 32 + .4byte _08138734 @ case 33 + .4byte _081387A4 @ case 34 + .4byte _081387A4 @ case 35 + .4byte _081387A4 @ case 36 + .4byte _081387A4 @ case 37 + .4byte _0813873C @ case 38 + .4byte _0813874C @ case 39 + .4byte _0813875C @ case 40 + .4byte _08138784 @ case 41 + .4byte _081387A4 @ case 42 + .4byte _081387A4 @ case 43 + .4byte _081387A4 @ case 44 + .4byte _081387A4 @ case 45 + .4byte _08138744 @ case 46 + .4byte _08138754 @ case 47 + .4byte _081387A4 @ case 48 + .4byte _081387A4 @ case 49 + .4byte _081387A4 @ case 50 + .4byte _081387A4 @ case 51 + .4byte _081387A4 @ case 52 + .4byte _081387A4 @ case 53 + .4byte _0813879A @ case 54 + .4byte _0813878C @ case 55 +_081386BC: + movs r2, #0x8c + lsls r2, r2, #2 + b _08138790 +_081386C2: + ldr r2, _081386C8 + b _08138790 + .align 2, 0 +_081386C8: .4byte 0x00000231 +_081386CC: + movs r2, #0x8e + lsls r2, r2, #2 + b _08138790 +_081386D2: + ldr r2, _081386D8 + b _08138790 + .align 2, 0 +_081386D8: .4byte 0x00000239 +_081386DC: + movs r2, #0x88 + lsls r2, r2, #2 + b _08138790 +_081386E2: + ldr r2, _081386E8 + b _08138790 + .align 2, 0 +_081386E8: .4byte 0x00000221 +_081386EC: + ldr r2, _081386F0 + b _08138790 + .align 2, 0 +_081386F0: .4byte 0x00000E28 +_081386F4: + ldr r2, _081386F8 + b _08138790 + .align 2, 0 +_081386F8: .4byte 0x00000E29 +_081386FC: + ldr r2, _08138700 + b _08138790 + .align 2, 0 +_08138700: .4byte 0x00000232 +_08138704: + ldr r2, _08138708 + b _08138790 + .align 2, 0 +_08138708: .4byte 0x00000233 +_0813870C: + ldr r2, _08138710 + b _08138790 + .align 2, 0 +_08138710: .4byte 0x0000023A +_08138714: + ldr r2, _08138718 + b _08138790 + .align 2, 0 +_08138718: .4byte 0x0000023B +_0813871C: + ldr r2, _08138720 + b _08138790 + .align 2, 0 +_08138720: .4byte 0x00000222 +_08138724: + ldr r2, _08138728 + b _08138790 + .align 2, 0 +_08138728: .4byte 0x00000223 +_0813872C: + ldr r2, _08138730 + b _08138790 + .align 2, 0 +_08138730: .4byte 0x00000E2A +_08138734: + ldr r2, _08138738 + b _08138790 + .align 2, 0 +_08138738: .4byte 0x00000E2B +_0813873C: + ldr r2, _08138740 + b _08138790 + .align 2, 0 +_08138740: .4byte 0x00000E42 +_08138744: + ldr r2, _08138748 + b _08138790 + .align 2, 0 +_08138748: .4byte 0x0000021A +_0813874C: + ldr r2, _08138750 + b _08138790 + .align 2, 0 +_08138750: .4byte 0x00000E43 +_08138754: + ldr r2, _08138758 + b _08138790 + .align 2, 0 +_08138758: .4byte 0x0000021A +_0813875C: + movs r2, #0xe4 + lsls r2, r2, #4 + b _08138790 +_08138762: + subs r1, r5, #1 + adds r0, r4, #0 + bl sub_08087B88 + movs r1, #0x90 + lsls r1, r1, #2 + cmp r0, r1 + bne _0813877C + ldr r2, _08138778 + b _08138790 + .align 2, 0 +_08138778: .4byte 0x00000E48 +_0813877C: + ldr r2, _08138780 + b _08138790 + .align 2, 0 +_08138780: .4byte 0x00000E49 +_08138784: + ldr r2, _08138788 + b _08138790 + .align 2, 0 +_08138788: .4byte 0x00000E41 +_0813878C: + movs r2, #0xe5 + lsls r2, r2, #4 +_08138790: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _081387A4 +_0813879A: + ldr r2, _081387BC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 +_081387A4: + adds r4, #1 + cmp r4, #0xf + bgt _081387AC + b _081385B8 +_081387AC: + adds r5, r6, #0 + cmp r5, #0x17 + bgt _081387B4 + b _081385B4 +_081387B4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081387BC: .4byte 0x00000251 + thumb_func_end sub_081385B0 + + thumb_func_start sub_081387C0 +sub_081387C0: @ 0x081387C0 + push {r4, r5, r6, lr} + ldr r4, _081387FC + movs r5, #3 +_081387C6: + ldrb r0, [r4] + ldrb r1, [r4, #1] + ldr r2, _08138800 + bl sub_08087C54 + adds r4, #4 + subs r5, #1 + cmp r5, #0 + bge _081387C6 + movs r5, #0xc +_081387DA: + movs r4, #7 + adds r6, r5, #1 +_081387DE: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087B88 + ldr r1, _08138804 + adds r0, r0, r1 + cmp r0, #0x30 + bls _081387F0 + b _0813893A +_081387F0: + lsls r0, r0, #2 + ldr r1, _08138808 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081387FC: .4byte gUnknown_85925B4 +_08138800: .4byte 0x00000206 +_08138804: .4byte 0xFFFFFDE0 +_08138808: .4byte _0813880C +_0813880C: @ jump table + .4byte _081388D0 @ case 0 + .4byte _081388D6 @ case 1 + .4byte _081388F0 @ case 2 + .4byte _081388F8 @ case 3 + .4byte _0813893A @ case 4 + .4byte _0813893A @ case 5 + .4byte _0813893A @ case 6 + .4byte _0813893A @ case 7 + .4byte _081388E0 @ case 8 + .4byte _081388E6 @ case 9 + .4byte _08138900 @ case 10 + .4byte _08138908 @ case 11 + .4byte _0813893A @ case 12 + .4byte _0813893A @ case 13 + .4byte _0813893A @ case 14 + .4byte _0813893A @ case 15 + .4byte _0813893A @ case 16 + .4byte _0813893A @ case 17 + .4byte _0813893A @ case 18 + .4byte _0813893A @ case 19 + .4byte _0813893A @ case 20 + .4byte _0813893A @ case 21 + .4byte _0813893A @ case 22 + .4byte _0813893A @ case 23 + .4byte _0813893A @ case 24 + .4byte _0813893A @ case 25 + .4byte _0813893A @ case 26 + .4byte _0813893A @ case 27 + .4byte _0813893A @ case 28 + .4byte _0813893A @ case 29 + .4byte _0813893A @ case 30 + .4byte _0813893A @ case 31 + .4byte _08138910 @ case 32 + .4byte _08138918 @ case 33 + .4byte _0813893A @ case 34 + .4byte _0813893A @ case 35 + .4byte _0813893A @ case 36 + .4byte _0813893A @ case 37 + .4byte _0813893A @ case 38 + .4byte _0813893A @ case 39 + .4byte _08138920 @ case 40 + .4byte _08138920 @ case 41 + .4byte _0813893A @ case 42 + .4byte _0813893A @ case 43 + .4byte _0813893A @ case 44 + .4byte _0813893A @ case 45 + .4byte _0813893A @ case 46 + .4byte _0813893A @ case 47 + .4byte _08138930 @ case 48 +_081388D0: + movs r2, #0x8c + lsls r2, r2, #2 + b _08138922 +_081388D6: + ldr r2, _081388DC + b _08138922 + .align 2, 0 +_081388DC: .4byte 0x00000231 +_081388E0: + movs r2, #0x8e + lsls r2, r2, #2 + b _08138922 +_081388E6: + ldr r2, _081388EC + b _08138922 + .align 2, 0 +_081388EC: .4byte 0x00000239 +_081388F0: + ldr r2, _081388F4 + b _08138922 + .align 2, 0 +_081388F4: .4byte 0x00000232 +_081388F8: + ldr r2, _081388FC + b _08138922 + .align 2, 0 +_081388FC: .4byte 0x00000233 +_08138900: + ldr r2, _08138904 + b _08138922 + .align 2, 0 +_08138904: .4byte 0x0000023A +_08138908: + ldr r2, _0813890C + b _08138922 + .align 2, 0 +_0813890C: .4byte 0x0000023B +_08138910: + ldr r2, _08138914 + b _08138922 + .align 2, 0 +_08138914: .4byte 0x00000E42 +_08138918: + ldr r2, _0813891C + b _08138922 + .align 2, 0 +_0813891C: .4byte 0x00000E43 +_08138920: + ldr r2, _0813892C +_08138922: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 + b _0813893A + .align 2, 0 +_0813892C: .4byte 0x0000021A +_08138930: + ldr r2, _08138950 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08087C54 +_0813893A: + adds r4, #1 + cmp r4, #0xf + bgt _08138942 + b _081387DE +_08138942: + adds r5, r6, #0 + cmp r5, #0x17 + bgt _0813894A + b _081387DA +_0813894A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08138950: .4byte 0x00000251 + thumb_func_end sub_081387C0 + + thumb_func_start sub_08138954 +sub_08138954: @ 0x08138954 + push {lr} + ldr r0, _08138974 + movs r1, #0 + strb r1, [r0] + ldr r0, _08138978 + strb r1, [r0] + movs r0, #0x2c + bl sub_080A306C + ldr r0, _0813897C + movs r1, #8 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08138974: .4byte gUnknown_203A828 +_08138978: .4byte gUnknown_203A829 +_0813897C: .4byte sub_08138980 + thumb_func_end sub_08138954 + + thumb_func_start sub_08138980 +sub_08138980: @ 0x08138980 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081389C8 + ldr r5, _081389CC + ldrb r1, [r5] + adds r0, r1, r0 + ldr r4, _081389D0 + ldrb r2, [r4] + ldrb r0, [r0] + cmp r0, r2 + bne _081389DC + ldr r0, _081389D4 + ldrb r0, [r0] + ldr r2, _081389D8 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_081389E8 + movs r0, #0 + strb r0, [r4] + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bne _081389E0 + adds r0, r6, #0 + bl sub_080A8964 + bl sub_080988C4 + b _081389E0 + .align 2, 0 +_081389C8: .4byte gUnknown_85925C4 +_081389CC: .4byte gUnknown_203A829 +_081389D0: .4byte gUnknown_203A828 +_081389D4: .4byte gUnknown_2037280 +_081389D8: .4byte gUnknown_85925CA +_081389DC: + adds r0, r2, #1 + strb r0, [r4] +_081389E0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08138980 + + thumb_func_start sub_081389E8 +sub_081389E8: @ 0x081389E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + movs r7, #0 + subs r0, #1 + cmp r0, #7 + bhi _08138AB0 + lsls r0, r0, #2 + ldr r1, _08138A0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08138A0C: .4byte _08138A10 +_08138A10: @ jump table + .4byte _08138A30 @ case 0 + .4byte _08138A42 @ case 1 + .4byte _08138A54 @ case 2 + .4byte _08138A66 @ case 3 + .4byte _08138A74 @ case 4 + .4byte _08138A8A @ case 5 + .4byte _08138A96 @ case 6 + .4byte _08138AA4 @ case 7 +_08138A30: + movs r7, #2 + mov r1, sp + movs r0, #1 + strh r0, [r1] + movs r0, #7 + strh r0, [r1, #2] + add r1, sp, #8 + movs r0, #0x68 + b _08138A84 +_08138A42: + movs r7, #2 + mov r1, sp + movs r0, #1 + strh r0, [r1] + movs r0, #7 + strh r0, [r1, #2] + add r1, sp, #8 + movs r0, #0x4e + b _08138A84 +_08138A54: + movs r7, #2 + mov r1, sp + movs r0, #1 + strh r0, [r1] + movs r0, #7 + strh r0, [r1, #2] + add r1, sp, #8 + movs r0, #0x5b + b _08138A84 +_08138A66: + movs r7, #1 + mov r1, sp + movs r0, #7 + strh r0, [r1] + add r1, sp, #8 + movs r0, #0x27 + b _08138AAE +_08138A74: + movs r7, #2 + mov r1, sp + movs r0, #1 + strh r0, [r1] + movs r0, #7 + strh r0, [r1, #2] + add r1, sp, #8 + movs r0, #0x34 +_08138A84: + strh r0, [r1] + strh r0, [r1, #2] + b _08138AB0 +_08138A8A: + movs r7, #1 + mov r0, sp + strh r7, [r0] + add r1, sp, #8 + movs r0, #0x41 + b _08138AAE +_08138A96: + movs r7, #1 + mov r1, sp + movs r0, #7 + strh r0, [r1] + add r1, sp, #8 + movs r0, #0xd + b _08138AAE +_08138AA4: + movs r7, #1 + mov r0, sp + strh r7, [r0] + add r1, sp, #8 + movs r0, #0x1a +_08138AAE: + strh r0, [r1] +_08138AB0: + movs r6, #0 + cmp r6, r7 + bhs _08138B02 + movs r1, #0xc0 + lsls r1, r1, #4 + adds r0, r1, #0 + adds r1, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + mov sb, r1 + adds r1, r2, #0 + adds r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + mov r8, r1 +_08138ACE: + lsls r1, r6, #1 + mov r3, sp + adds r5, r3, r1 + ldrh r0, [r5] + adds r0, #7 + add r4, sp, #8 + adds r4, r4, r1 + ldrh r1, [r4] + adds r1, #7 + mov r3, sb + lsrs r2, r3, #0x10 + bl sub_08087C54 + ldrh r0, [r5] + adds r0, #7 + ldrh r1, [r4] + adds r1, #8 + mov r3, r8 + lsrs r2, r3, #0x10 + bl sub_08087C54 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, r7 + blo _08138ACE +_08138B02: + bl sub_08089598 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081389E8 + + thumb_func_start sub_08138B14 +sub_08138B14: @ 0x08138B14 + push {lr} + ldr r0, _08138B28 + ldrb r0, [r0] + ldr r1, _08138B2C + ldrh r1, [r1, #8] + bl sub_081389E8 + pop {r0} + bx r0 + .align 2, 0 +_08138B28: .4byte gUnknown_2037280 +_08138B2C: .4byte gUnknown_85925CA + thumb_func_end sub_08138B14 + + thumb_func_start sub_08138B30 +sub_08138B30: @ 0x08138B30 + push {lr} + ldr r0, _08138B3C + bl sub_08097B74 + pop {r0} + bx r0 + .align 2, 0 +_08138B3C: .4byte gUnknown_2021C7C + thumb_func_end sub_08138B30 + + thumb_func_start sub_08138B40 +sub_08138B40: @ 0x08138B40 + ldr r1, _08138B54 + ldr r0, _08138B58 + ldr r2, [r0] + ldrh r0, [r2] + strh r0, [r1] + ldr r1, _08138B5C + ldrh r0, [r2, #2] + strh r0, [r1] + bx lr + .align 2, 0 +_08138B54: .4byte gUnknown_2037280 +_08138B58: .4byte gUnknown_3005AEC +_08138B5C: .4byte gUnknown_2037282 + thumb_func_end sub_08138B40 + + thumb_func_start sub_08138B60 +sub_08138B60: @ 0x08138B60 + push {lr} + ldr r0, _08138B7C + ldr r0, [r0] + ldrb r1, [r0, #0xb] + lsls r1, r1, #8 + ldrb r0, [r0, #0xa] + orrs r0, r1 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08138B7C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08138B60 + + thumb_func_start sub_08138B80 +sub_08138B80: @ 0x08138B80 + push {lr} + ldr r0, _08138B98 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _08138BA4 + ldr r0, _08138B9C + ldr r1, _08138BA0 + bl sub_080088B8 + b _08138BAC + .align 2, 0 +_08138B98: .4byte gUnknown_3005AF0 +_08138B9C: .4byte gUnknown_2021C40 +_08138BA0: .4byte gUnknown_85CB02A +_08138BA4: + ldr r0, _08138BB0 + ldr r1, _08138BB4 + bl sub_080088B8 +_08138BAC: + pop {r0} + bx r0 + .align 2, 0 +_08138BB0: .4byte gUnknown_2021C40 +_08138BB4: .4byte gUnknown_85CB031 + thumb_func_end sub_08138B80 + + thumb_func_start sub_08138BB8 +sub_08138BB8: @ 0x08138BB8 + push {lr} + ldr r0, _08138BD0 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _08138BDC + ldr r0, _08138BD4 + ldr r1, _08138BD8 + bl sub_080088B8 + b _08138BE4 + .align 2, 0 +_08138BD0: .4byte gUnknown_3005AF0 +_08138BD4: .4byte gUnknown_2021C40 +_08138BD8: .4byte gUnknown_85CB03C +_08138BDC: + ldr r0, _08138BE8 + ldr r1, _08138BEC + bl sub_080088B8 +_08138BE4: + pop {r0} + bx r0 + .align 2, 0 +_08138BE8: .4byte gUnknown_2021C40 +_08138BEC: .4byte gUnknown_85CB038 + thumb_func_end sub_08138BB8 + + thumb_func_start sub_08138BF0 +sub_08138BF0: @ 0x08138BF0 + ldr r0, _08138BF8 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08138BF8: .4byte gUnknown_2023FDE + thumb_func_end sub_08138BF0 + + thumb_func_start sub_08138BFC +sub_08138BFC: @ 0x08138BFC + push {lr} + sub sp, #4 + ldr r0, _08138C1C + ldrh r0, [r0] + cmp r0, #0 + beq _08138C20 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #4 + str r0, [sp] + movs r0, #0x13 + movs r1, #0 + movs r3, #6 + bl sub_08084554 + b _08138C32 + .align 2, 0 +_08138C1C: .4byte gUnknown_2037280 +_08138C20: + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #4 + str r0, [sp] + movs r0, #0x13 + movs r1, #1 + movs r3, #6 + bl sub_08084554 +_08138C32: + add sp, #4 + pop {r0} + bx r0 + thumb_func_end sub_08138BFC + + thumb_func_start sub_08138C38 +sub_08138C38: @ 0x08138C38 + push {lr} + ldr r0, _08138C48 + ldrh r0, [r0] + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_08138C48: .4byte gUnknown_2037280 + thumb_func_end sub_08138C38 + + thumb_func_start sub_08138C4C +sub_08138C4C: @ 0x08138C4C + push {lr} + ldr r0, _08138C6C + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #7 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08138C70 + cmp r0, r1 + bls _08138C66 + adds r0, r1, #0 +_08138C66: + pop {r1} + bx r1 + .align 2, 0 +_08138C6C: .4byte gUnknown_3005A50 +_08138C70: .4byte 0x0000270F + thumb_func_end sub_08138C4C + + thumb_func_start sub_08138C74 +sub_08138C74: @ 0x08138C74 + push {r4, lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _08138C98 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0xff + bne _08138C9C + movs r0, #6 + b _08138CEE + .align 2, 0 +_08138C98: .4byte gUnknown_2024190 +_08138C9C: + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0xc7 + bls _08138CAC + movs r0, #5 + b _08138CEE +_08138CAC: + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0x95 + bls _08138CBC + movs r0, #4 + b _08138CEE +_08138CBC: + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0x63 + bls _08138CCC + movs r0, #3 + b _08138CEE +_08138CCC: + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0x31 + bls _08138CDC + movs r0, #2 + b _08138CEE +_08138CDC: + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + cmp r0, #0 + bne _08138CEC + movs r0, #0 + b _08138CEE +_08138CEC: + movs r0, #1 +_08138CEE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08138C74 + + thumb_func_start sub_08138CF4 +sub_08138CF4: @ 0x08138CF4 + push {lr} + ldr r0, _08138D00 + bl sub_0816FF84 + pop {r0} + bx r0 + .align 2, 0 +_08138D00: .4byte sub_08085B34 + thumb_func_end sub_08138CF4 + + thumb_func_start sub_08138D04 +sub_08138D04: @ 0x08138D04 + push {lr} + ldr r0, _08138D10 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08138D10: .4byte sub_08138CF4 + thumb_func_end sub_08138D04 + + thumb_func_start sub_08138D14 +sub_08138D14: @ 0x08138D14 + push {r4, lr} + ldr r4, _08138D50 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08138D48 + adds r0, r4, #0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08138D54 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + strh r0, [r1, #0xa] + strh r2, [r1, #0xc] + strh r2, [r1, #0xe] + strh r2, [r1, #0x10] +_08138D48: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08138D50: .4byte sub_08138D58 +_08138D54: .4byte gUnknown_3005B60 + thumb_func_end sub_08138D14 + + thumb_func_start sub_08138D58 +sub_08138D58: @ 0x08138D58 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08138D7C + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08138D76 + adds r0, r1, #0 + bl sub_08138D80 +_08138D76: + pop {r0} + bx r0 + .align 2, 0 +_08138D7C: .4byte gUnknown_3005B60 + thumb_func_end sub_08138D58 + + thumb_func_start sub_08138D80 +sub_08138D80: @ 0x08138D80 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r6, #0 + movs r5, #0 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #6 + bne _08138DEC + strh r5, [r4, #0xe] + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #3 + beq _08138DB4 + cmp r0, #3 + bgt _08138DAA + cmp r0, #2 + beq _08138DB0 + b _08138DBC +_08138DAA: + cmp r1, #4 + beq _08138DB8 + b _08138DBC +_08138DB0: + movs r6, #0 + b _08138DBA +_08138DB4: + movs r6, #0xff + b _08138DBA +_08138DB8: + movs r6, #1 +_08138DBA: + movs r5, #0xff +_08138DBC: + movs r1, #0x10 + ldrsh r0, [r4, r1] + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r2, r5, #0x18 + asrs r2, r2, #0x18 + bl sub_08138DF8 + bl sub_08089598 + ldrh r0, [r4, #0x10] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _08138DEC + ldrb r0, [r4, #0xa] + bl sub_080A8964 +_08138DEC: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08138D80 + + thumb_func_start sub_08138DF8 +sub_08138DF8: @ 0x08138DF8 + push {r4, r5, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r3, #0 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08138E34 + ldr r0, _08138E18 + ldrh r0, [r0] + cmp r0, #0 + bne _08138E1C + movs r3, #4 + b _08138E56 + .align 2, 0 +_08138E18: .4byte gUnknown_2037280 +_08138E1C: + cmp r0, #1 + bne _08138E28 + ldr r3, _08138E24 + b _08138E56 + .align 2, 0 +_08138E24: .4byte 0x0000025A +_08138E28: + cmp r0, #2 + bne _08138E56 + ldr r3, _08138E30 + b _08138E56 + .align 2, 0 +_08138E30: .4byte 0x00000259 +_08138E34: + ldr r0, _08138E40 + ldrh r0, [r0] + cmp r0, #0 + bne _08138E44 + movs r3, #5 + b _08138E56 + .align 2, 0 +_08138E40: .4byte gUnknown_2037280 +_08138E44: + cmp r0, #1 + bne _08138E50 + ldr r3, _08138E4C + b _08138E56 + .align 2, 0 +_08138E4C: .4byte 0x0000027F +_08138E50: + cmp r0, #2 + bne _08138E56 + ldr r3, _08138E88 +_08138E56: + ldr r0, _08138E8C + ldr r2, [r0] + movs r5, #0 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + adds r0, #7 + movs r5, #2 + ldrsh r1, [r2, r5] + lsls r2, r4, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + adds r1, #7 + movs r4, #0xc0 + lsls r4, r4, #4 + adds r2, r4, #0 + orrs r3, r2 + adds r2, r3, #0 + bl sub_08087C54 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08138E88: .4byte 0x0000027E +_08138E8C: .4byte gUnknown_3005AEC + thumb_func_end sub_08138DF8 + + thumb_func_start sub_08138E90 +sub_08138E90: @ 0x08138E90 + push {lr} + bl sub_08138E9C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08138E90 + + thumb_func_start sub_08138E9C +sub_08138E9C: @ 0x08138E9C + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 + movs r4, #0 + bl sub_0808B59C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #3 + beq _08138EC6 + cmp r0, #3 + bgt _08138EBC + cmp r0, #2 + beq _08138EC2 + b _08138ECE +_08138EBC: + cmp r1, #4 + beq _08138ECA + b _08138ECE +_08138EC2: + movs r6, #0 + b _08138ECC +_08138EC6: + movs r6, #0xff + b _08138ECC +_08138ECA: + movs r6, #1 +_08138ECC: + movs r5, #0xff +_08138ECE: + ldr r0, _08138EDC + ldrh r0, [r0] + cmp r0, #0 + bne _08138EE0 + movs r4, #4 + b _08138EF2 + .align 2, 0 +_08138EDC: .4byte gUnknown_2037280 +_08138EE0: + cmp r0, #1 + bne _08138EEC + ldr r4, _08138EE8 + b _08138EF2 + .align 2, 0 +_08138EE8: .4byte 0x0000025A +_08138EEC: + cmp r0, #2 + bne _08138EF2 + ldr r4, _08138F28 +_08138EF2: + ldr r0, _08138F2C + ldr r2, [r0] + movs r1, #0 + ldrsh r0, [r2, r1] + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + adds r0, #7 + movs r3, #2 + ldrsh r1, [r2, r3] + lsls r2, r5, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + adds r1, #7 + movs r3, #0xc0 + lsls r3, r3, #4 + adds r2, r3, #0 + orrs r4, r2 + adds r2, r4, #0 + bl sub_08087C54 + bl sub_08089598 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08138F28: .4byte 0x00000259 +_08138F2C: .4byte gUnknown_3005AEC + thumb_func_end sub_08138E9C + + thumb_func_start sub_08138F30 +sub_08138F30: @ 0x08138F30 + push {r4, lr} + ldr r4, _08138F6C + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08138F64 + adds r0, r4, #0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08138F70 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + strh r0, [r1, #0xa] + strh r2, [r1, #0xc] + strh r2, [r1, #0xe] + strh r2, [r1, #0x10] +_08138F64: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08138F6C: .4byte sub_08138F74 +_08138F70: .4byte gUnknown_3005B60 + thumb_func_end sub_08138F30 + + thumb_func_start sub_08138F74 +sub_08138F74: @ 0x08138F74 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08138F98 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08138F92 + adds r0, r1, #0 + bl sub_08138F9C +_08138F92: + pop {r0} + bx r0 + .align 2, 0 +_08138F98: .4byte gUnknown_3005B60 + thumb_func_end sub_08138F74 + + thumb_func_start sub_08138F9C +sub_08138F9C: @ 0x08138F9C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #6 + bne _0813900A + movs r0, #0 + strh r0, [r4, #0xe] + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08138FD4 + ldr r2, _08138FCC + movs r0, #0x12 + movs r1, #8 + bl sub_08087C54 + ldr r2, _08138FD0 + movs r0, #0x12 + movs r1, #9 + bl sub_08087C54 + b _08138FEA + .align 2, 0 +_08138FCC: .4byte 0x00000E9D +_08138FD0: .4byte 0x00000EA5 +_08138FD4: + ldr r2, _08139018 + movs r0, #0x12 + movs r1, #8 + bl sub_08087C54 + movs r2, #0xe6 + lsls r2, r2, #4 + movs r0, #0x12 + movs r1, #9 + bl sub_08087C54 +_08138FEA: + bl sub_08089598 + ldrh r0, [r4, #0x10] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0813900A + ldrb r0, [r4, #0xa] + bl sub_080A8964 +_0813900A: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139018: .4byte 0x00000E58 + thumb_func_end sub_08138F9C + + thumb_func_start sub_0813901C +sub_0813901C: @ 0x0813901C + push {lr} + ldr r2, _0813903C + movs r0, #0x12 + movs r1, #8 + bl sub_08087C54 + ldr r2, _08139040 + movs r0, #0x12 + movs r1, #9 + bl sub_08087C54 + bl sub_08089598 + pop {r0} + bx r0 + .align 2, 0 +_0813903C: .4byte 0x00000E9D +_08139040: .4byte 0x00000EA5 + thumb_func_end sub_0813901C + + thumb_func_start sub_08139044 +sub_08139044: @ 0x08139044 + push {lr} + ldr r1, _08139054 + ldr r0, _08139058 + strh r0, [r1] + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_08139054: .4byte gUnknown_2037280 +_08139058: .4byte 0x000001F5 + thumb_func_end sub_08139044 + + thumb_func_start sub_0813905C +sub_0813905C: @ 0x0813905C + push {lr} + ldr r1, _0813906C + ldr r0, _08139070 + strh r0, [r1] + bl sub_0809D040 + pop {r0} + bx r0 + .align 2, 0 +_0813906C: .4byte gUnknown_2037280 +_08139070: .4byte 0x000001F5 + thumb_func_end sub_0813905C + + thumb_func_start sub_08139074 +sub_08139074: @ 0x08139074 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08139094 + adds r0, r0, r1 + movs r1, #0x16 + bl sub_0806A058 + cmp r0, #0xc7 + bls _08139098 + movs r0, #1 + b _0813909A + .align 2, 0 +_08139094: .4byte gUnknown_2024190 +_08139098: + movs r0, #0 +_0813909A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139074 + + thumb_func_start sub_081390A0 +sub_081390A0: @ 0x081390A0 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _081390C0 + adds r0, r0, r1 + movs r1, #0x17 + bl sub_0806A058 + cmp r0, #0xc7 + bls _081390C4 + movs r0, #1 + b _081390C6 + .align 2, 0 +_081390C0: .4byte gUnknown_2024190 +_081390C4: + movs r0, #0 +_081390C6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081390A0 + + thumb_func_start sub_081390CC +sub_081390CC: @ 0x081390CC + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _081390EC + adds r0, r0, r1 + movs r1, #0x18 + bl sub_0806A058 + cmp r0, #0xc7 + bls _081390F0 + movs r0, #1 + b _081390F2 + .align 2, 0 +_081390EC: .4byte gUnknown_2024190 +_081390F0: + movs r0, #0 +_081390F2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081390CC + + thumb_func_start sub_081390F8 +sub_081390F8: @ 0x081390F8 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08139118 + adds r0, r0, r1 + movs r1, #0x21 + bl sub_0806A058 + cmp r0, #0xc7 + bls _0813911C + movs r0, #1 + b _0813911E + .align 2, 0 +_08139118: .4byte gUnknown_2024190 +_0813911C: + movs r0, #0 +_0813911E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081390F8 + + thumb_func_start sub_08139124 +sub_08139124: @ 0x08139124 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08139144 + adds r0, r0, r1 + movs r1, #0x2f + bl sub_0806A058 + cmp r0, #0xc7 + bls _08139148 + movs r0, #1 + b _0813914A + .align 2, 0 +_08139144: .4byte gUnknown_2024190 +_08139148: + movs r0, #0 +_0813914A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139124 + + thumb_func_start sub_08139150 +sub_08139150: @ 0x08139150 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _081391A0 +_08139156: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081391A4 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _081391AC + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081391AC + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #6] + cmp r0, #0xc + beq _08139198 + ldrb r0, [r1, #7] + cmp r0, #0xc + bne _081391AC +_08139198: + ldr r1, _081391A8 + movs r0, #1 + b _081391BA + .align 2, 0 +_081391A0: .4byte gUnknown_82F0D54 +_081391A4: .4byte gUnknown_2024190 +_081391A8: .4byte gUnknown_2037290 +_081391AC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08139156 + ldr r1, _081391C4 + movs r0, #0 +_081391BA: + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081391C4: .4byte gUnknown_2037290 + thumb_func_end sub_08139150 + + thumb_func_start sub_081391C8 +sub_081391C8: @ 0x081391C8 + push {lr} + sub sp, #8 + ldr r0, _08139214 + ldr r0, [r0] + ldrh r3, [r0] + adds r3, #7 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldrh r0, [r0, #2] + adds r0, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #7 + movs r1, #8 + movs r2, #0x7f + bl sub_0808D5B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08139218 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #1] + movs r2, #0x20 + orrs r0, r2 + strb r0, [r1, #1] + ldrb r0, [r1, #4] + bl sub_0808E818 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08139214: .4byte gUnknown_3005AEC +_08139218: .4byte gUnknown_2036FF0 + thumb_func_end sub_081391C8 + + thumb_func_start sub_0813921C +sub_0813921C: @ 0x0813921C + push {lr} + bl sub_0808B640 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0808E818 + ldr r0, _0813923C + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #0x7f + bl sub_0808D234 + pop {r0} + bx r0 + .align 2, 0 +_0813923C: .4byte gUnknown_3005AEC + thumb_func_end sub_0813921C + + thumb_func_start sub_08139240 +sub_08139240: @ 0x08139240 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08139268 + adds r0, r0, r1 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0813926C + bl sub_081370D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08139268: .4byte gUnknown_2024190 +_0813926C: .4byte gUnknown_2021C40 + thumb_func_end sub_08139240 + + thumb_func_start sub_08139270 +sub_08139270: @ 0x08139270 + push {r4, lr} + ldr r4, _08139290 + ldr r0, _08139294 + bl sub_0809CF6C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_08124578 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139290: .4byte gUnknown_2021C40 +_08139294: .4byte 0x00004026 + thumb_func_end sub_08139270 + + thumb_func_start sub_08139298 +sub_08139298: @ 0x08139298 + push {lr} + movs r0, #0x20 + bl sub_08084180 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08139298 + + thumb_func_start sub_081392A8 +sub_081392A8: @ 0x081392A8 + push {lr} + ldr r0, _081392B4 + bl sub_08165100 + pop {r0} + bx r0 + .align 2, 0 +_081392B4: .4byte gUnknown_2021C40 + thumb_func_end sub_081392A8 + + thumb_func_start sub_081392B8 +sub_081392B8: @ 0x081392B8 + push {r4, r5, lr} + ldr r0, _081392EC + ldr r2, [r0] + ldr r1, _081392F0 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x19 + ldr r0, _081392F4 + adds r2, r2, r0 + lsrs r1, r1, #0x19 + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _081392F8 + ldr r0, _081392FC + ldrh r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + adds r5, r1, r0 + movs r0, #2 + bl sub_080EFB3C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08139304 + ldr r4, _08139300 + b _08139306 + .align 2, 0 +_081392EC: .4byte gUnknown_3005AEC +_081392F0: .4byte 0x00002E68 +_081392F4: .4byte 0x00002E6A +_081392F8: .4byte gUnknown_85925D4 +_081392FC: .4byte gUnknown_2037280 +_08139300: .4byte gUnknown_85925E0 +_08139304: + ldr r4, _08139318 +_08139306: + adds r0, r5, #0 + movs r1, #0xc + bl __umodsi3 + adds r0, r0, r4 + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08139318: .4byte gUnknown_85925EC + thumb_func_end sub_081392B8 + + thumb_func_start sub_0813931C +sub_0813931C: @ 0x0813931C + push {lr} + ldr r1, _08139334 + ldr r0, _08139338 + strh r0, [r1] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813933C + movs r0, #1 + b _0813933E + .align 2, 0 +_08139334: .4byte gUnknown_2037280 +_08139338: .4byte 0x00000213 +_0813933C: + movs r0, #0 +_0813933E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813931C + + thumb_func_start sub_08139344 +sub_08139344: @ 0x08139344 + push {lr} + ldr r1, _0813935C + movs r0, #0x85 + lsls r0, r0, #2 + strh r0, [r1] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08139360 + movs r0, #1 + b _08139362 + .align 2, 0 +_0813935C: .4byte gUnknown_2037280 +_08139360: + movs r0, #0 +_08139362: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139344 + + thumb_func_start sub_08139368 +sub_08139368: @ 0x08139368 + push {lr} + ldr r1, _08139380 + ldr r0, _08139384 + strh r0, [r1] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08139388 + movs r0, #1 + b _0813938A + .align 2, 0 +_08139380: .4byte gUnknown_2037280 +_08139384: .4byte 0x00000215 +_08139388: + movs r0, #0 +_0813938A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139368 + + thumb_func_start sub_08139390 +sub_08139390: @ 0x08139390 + push {lr} + ldr r1, _081393A8 + ldr r0, _081393AC + strh r0, [r1] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081393B0 + movs r0, #1 + b _081393B2 + .align 2, 0 +_081393A8: .4byte gUnknown_2037280 +_081393AC: .4byte 0x00000216 +_081393B0: + movs r0, #0 +_081393B2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139390 + + thumb_func_start sub_081393B8 +sub_081393B8: @ 0x081393B8 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _081393DC + adds r0, r0, r1 + movs r1, #0x47 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081393DC: .4byte gUnknown_2024190 + thumb_func_end sub_081393B8 + + thumb_func_start sub_081393E0 +sub_081393E0: @ 0x081393E0 + push {r4, lr} + sub sp, #4 + movs r0, #0x2a + bl sub_0808414C + ldr r0, _08139430 + bl sub_0809D018 + movs r1, #1 + mov r0, sp + strb r1, [r0] + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _08139434 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x47 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + bl sub_080EF0BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08139426 + adds r0, r4, #0 + movs r1, #0x47 + bl sub_080EEFFC +_08139426: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139430: .4byte 0x0000089B +_08139434: .4byte gUnknown_2024190 + thumb_func_end sub_081393E0 + + thumb_func_start sub_08139438 +sub_08139438: @ 0x08139438 + push {lr} + bl sub_081396F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0813945C + adds r0, r0, r1 + bl sub_0806D720 + lsls r0, r0, #0x10 + ldr r1, _08139460 + cmp r0, r1 + bhi _08139464 + movs r0, #0 + b _08139466 + .align 2, 0 +_0813945C: .4byte gUnknown_2024190 +_08139460: .4byte 0x01FD0000 +_08139464: + movs r0, #1 +_08139466: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139438 + + thumb_func_start sub_0813946C +sub_0813946C: @ 0x0813946C + push {lr} + movs r0, #0xc7 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081394C4 + ldr r0, _0813949C + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0x83 + lsls r0, r0, #3 + cmp r1, r0 + bne _081394C4 + subs r0, #0x75 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081394A4 + ldr r0, _081394A0 + movs r1, #4 + b _081394B6 + .align 2, 0 +_0813949C: .4byte gUnknown_3005AEC +_081394A0: .4byte 0x0000409A +_081394A4: + movs r0, #0xe9 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081394C4 + ldr r0, _081394C0 + movs r1, #5 +_081394B6: + bl sub_0809CF88 + movs r0, #1 + b _081394C6 + .align 2, 0 +_081394C0: .4byte 0x0000409A +_081394C4: + movs r0, #0 +_081394C6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813946C + + thumb_func_start sub_081394CC +sub_081394CC: @ 0x081394CC + push {lr} + ldr r0, _081394D8 + bl sub_0809D018 + pop {r0} + bx r0 + .align 2, 0 +_081394D8: .4byte 0x000008BF + thumb_func_end sub_081394CC + + thumb_func_start sub_081394DC +sub_081394DC: @ 0x081394DC + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _08139544 + movs r1, #0x90 + lsls r1, r1, #1 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + str r4, [sp, #0xc] + adds r0, r5, #0 + movs r2, #7 + movs r3, #0x20 + bl sub_08067730 + movs r1, #1 + add r0, sp, #0x10 + strh r1, [r0] + adds r0, r5, #0 + movs r1, #0x2e + add r2, sp, #0x10 + bl sub_0806A774 + add r1, sp, #0x10 + movs r0, #0x21 + strh r0, [r1] + adds r0, r5, #0 + movs r1, #0xd + add r2, sp, #0x10 + bl sub_0806A774 + add r0, sp, #0x10 + strh r4, [r0] + adds r0, r5, #0 + movs r1, #0xe + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r5, #0 + movs r1, #0xf + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r5, #0 + movs r1, #0x10 + add r2, sp, #0x10 + bl sub_0806A774 + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08139544: .4byte gUnknown_2024190 + thumb_func_end sub_081394DC + + thumb_func_start sub_08139548 +sub_08139548: @ 0x08139548 + push {r4, r5, r6, lr} + ldr r0, _08139584 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _08139596 +_0813956A: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08139588 + adds r0, r0, r1 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + cmp r0, r6 + bne _0813958C + movs r0, #1 + b _08139598 + .align 2, 0 +_08139584: .4byte 0x00004023 +_08139588: .4byte gUnknown_2024190 +_0813958C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _0813956A +_08139596: + movs r0, #0 +_08139598: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139548 + + thumb_func_start sub_081395A0 +sub_081395A0: @ 0x081395A0 + push {lr} + bl sub_080D1AB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081395A0 + + thumb_func_start sub_081395B0 +sub_081395B0: @ 0x081395B0 + push {lr} + ldr r0, _081395C4 + movs r1, #0x3f + bl sub_0806D810 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081395C8 + movs r0, #1 + b _081395CA + .align 2, 0 +_081395C4: .4byte gUnknown_2024190 +_081395C8: + movs r0, #0 +_081395CA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081395B0 + + thumb_func_start sub_081395D0 +sub_081395D0: @ 0x081395D0 + push {lr} + ldr r0, _08139614 + movs r1, #9 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08139618 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0813961C + ldrh r0, [r0] + movs r2, #0 + strh r0, [r1, #8] + strh r2, [r1, #0xa] + ldr r0, _08139620 + ldrh r0, [r0] + strh r0, [r1, #0xc] + ldr r0, _08139624 + ldrh r0, [r0] + strh r0, [r1, #0xe] + ldr r0, _08139628 + ldrh r0, [r0] + strh r0, [r1, #0x10] + movs r0, #0 + bl sub_08089C24 + movs r0, #0xd6 + bl sub_080A306C + pop {r0} + bx r0 + .align 2, 0 +_08139614: .4byte sub_0813962C +_08139618: .4byte gUnknown_3005B60 +_0813961C: .4byte gUnknown_2037282 +_08139620: .4byte gUnknown_2037284 +_08139624: .4byte gUnknown_2037286 +_08139628: .4byte gUnknown_2037280 + thumb_func_end sub_081395D0 + + thumb_func_start sub_0813962C +sub_0813962C: @ 0x0813962C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0813968C + adds r4, r0, r1 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r1, #2 + ldrsh r0, [r4, r1] + movs r2, #6 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, #0 + bne _08139684 + strh r0, [r4, #2] + ldrh r0, [r4, #4] + subs r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4] + rsbs r0, r0, #0 + strh r0, [r4] + ldrh r0, [r4, #8] + rsbs r0, r0, #0 + strh r0, [r4, #8] + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #8 + ldrsh r1, [r4, r2] + bl sub_08089C30 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08139684 + adds r0, r5, #0 + bl sub_08139690 + bl sub_08089C48 +_08139684: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813968C: .4byte gUnknown_3005B68 + thumb_func_end sub_0813962C + + thumb_func_start sub_08139690 +sub_08139690: @ 0x08139690 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08139690 + + thumb_func_start sub_081396A4 +sub_081396A4: @ 0x081396A4 + push {lr} + movs r0, #0x95 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081396A4 + + thumb_func_start sub_081396B8 +sub_081396B8: @ 0x081396B8 + push {lr} + bl sub_08085524 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08085538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081396D4 + movs r0, #0x14 + bl sub_080AE678 +_081396D4: + pop {r0} + bx r0 + thumb_func_end sub_081396B8 + + thumb_func_start sub_081396D8 +sub_081396D8: @ 0x081396D8 + push {lr} + bl sub_08085524 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08085538 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081396F4 + movs r0, #0x15 + bl sub_080AE678 +_081396F4: + pop {r0} + bx r0 + thumb_func_end sub_081396D8 + + thumb_func_start sub_081396F8 +sub_081396F8: @ 0x081396F8 + push {r4, r5, r6, lr} + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + cmp r5, r6 + bhs _08139746 +_08139708: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08139738 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _0813973C + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0813973C + adds r0, r5, #0 + b _08139748 + .align 2, 0 +_08139738: .4byte gUnknown_2024190 +_0813973C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _08139708 +_08139746: + movs r0, #0 +_08139748: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081396F8 + + thumb_func_start sub_08139750 +sub_08139750: @ 0x08139750 + push {lr} + ldr r0, _08139770 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08139774 + adds r0, r0, r1 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_08139770: .4byte gUnknown_2037280 +_08139774: .4byte gUnknown_2024190 + thumb_func_end sub_08139750 + + thumb_func_start sub_08139778 +sub_08139778: @ 0x08139778 + bx lr + .align 2, 0 + thumb_func_end sub_08139778 + + thumb_func_start sub_0813977C +sub_0813977C: @ 0x0813977C + push {r4, lr} + ldr r0, _0813979C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r3, r0, #0 + ldr r2, _081397A0 + movs r1, #0 + ldrsh r0, [r2, r1] + subs r0, r0, r3 + cmp r0, #6 + ble _081397A4 + movs r0, #0 + b _081397BC + .align 2, 0 +_0813979C: .4byte 0x000040C2 +_081397A0: .4byte gUnknown_3005A50 +_081397A4: + ldrh r1, [r2] + movs r4, #0 + ldrsh r0, [r2, r4] + cmp r0, #0 + blt _081397BA + subs r1, r1, r3 + movs r0, #7 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _081397BC +_081397BA: + movs r0, #8 +_081397BC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813977C + + thumb_func_start sub_081397C4 +sub_081397C4: @ 0x081397C4 + push {r4, lr} + ldr r0, _081397D8 + ldr r4, _081397DC + ldrh r1, [r4] + bl sub_0809CF88 + ldrh r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081397D8: .4byte 0x000040C2 +_081397DC: .4byte gUnknown_3005A50 + thumb_func_end sub_081397C4 + + thumb_func_start sub_081397E0 +sub_081397E0: @ 0x081397E0 + push {r4, lr} + ldr r0, _0813980C + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08139810 + adds r0, r0, r1 + ldr r4, _08139814 + movs r1, #7 + adds r2, r4, #0 + bl sub_0806A058 + ldr r0, _08139818 + ldr r0, [r0] + adds r1, r4, #0 + bl sub_0800895C + cmp r0, #0 + beq _0813981C + movs r0, #1 + b _0813981E + .align 2, 0 +_0813980C: .4byte gUnknown_2037280 +_08139810: .4byte gUnknown_2024190 +_08139814: .4byte gUnknown_2021C40 +_08139818: .4byte gUnknown_3005AF0 +_0813981C: + movs r0, #0 +_0813981E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081397E0 + + thumb_func_start sub_08139824 +sub_08139824: @ 0x08139824 + push {r4, r5, lr} + ldr r2, _08139838 + ldrh r1, [r2] + ldr r0, _0813983C + cmp r1, r0 + bls _08139840 + movs r0, #0 + bl sub_080EFE44 + b _081398C2 + .align 2, 0 +_08139838: .4byte gUnknown_2037290 +_0813983C: .4byte 0x0000270F +_08139840: + ldr r0, _08139850 + cmp r1, r0 + bls _08139858 + ldr r4, _08139854 + movs r0, #0xa1 + strb r0, [r4] + adds r4, #1 + b _0813987C + .align 2, 0 +_08139850: .4byte 0x000003E7 +_08139854: .4byte gUnknown_2021C40 +_08139858: + cmp r1, #0x63 + bls _0813986C + ldr r4, _08139868 + movs r0, #0xa1 + strb r0, [r4] + strb r0, [r4, #1] + adds r4, #2 + b _0813987C + .align 2, 0 +_08139868: .4byte gUnknown_2021C40 +_0813986C: + cmp r1, #9 + bls _0813989C + ldr r4, _08139898 + movs r0, #0xa1 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + adds r4, #3 +_0813987C: + ldrh r5, [r2] + adds r0, r5, #0 + bl sub_080EFE74 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_080089D8 + b _081398C2 + .align 2, 0 +_08139898: .4byte gUnknown_2021C40 +_0813989C: + ldr r4, _081398C8 + movs r0, #0xa1 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + adds r4, #4 + ldrh r5, [r2] + adds r0, r5, #0 + bl sub_080EFE74 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_080089D8 +_081398C2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081398C8: .4byte gUnknown_2021C40 + thumb_func_end sub_08139824 + + thumb_func_start sub_081398CC +sub_081398CC: @ 0x081398CC + push {lr} + ldr r0, _081398E0 + ldrh r0, [r0] + cmp r0, #4 + bhi _08139918 + lsls r0, r0, #2 + ldr r1, _081398E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081398E0: .4byte gUnknown_2037290 +_081398E4: .4byte _081398E8 +_081398E8: @ jump table + .4byte _081398FC @ case 0 + .4byte _08139900 @ case 1 + .4byte _08139904 @ case 2 + .4byte _08139908 @ case 3 + .4byte _0813990C @ case 4 +_081398FC: + movs r0, #3 + b _0813990E +_08139900: + movs r0, #4 + b _0813990E +_08139904: + movs r0, #0 + b _0813990E +_08139908: + movs r0, #1 + b _0813990E +_0813990C: + movs r0, #2 +_0813990E: + bl sub_0801B354 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08139926 +_08139918: + ldr r0, _0813992C + ldr r1, _08139930 + ldr r2, _08139934 + movs r3, #1 + bl AGBAssert + movs r0, #0 +_08139926: + pop {r1} + bx r1 + .align 2, 0 +_0813992C: .4byte gUnknown_85925F8 +_08139930: .4byte 0x00000B14 +_08139934: .4byte gUnknown_8592604 + thumb_func_end sub_081398CC + + thumb_func_start sub_08139938 +sub_08139938: @ 0x08139938 + push {r4, lr} + ldr r1, _08139950 + ldr r2, _08139954 + adds r0, r2, #0 + ldrh r2, [r1] + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x39 + bls _08139958 + movs r0, #0 + b _08139972 + .align 2, 0 +_08139950: .4byte gUnknown_2037280 +_08139954: .4byte 0xFFFFFEDF +_08139958: + ldr r4, _08139978 + ldrh r0, [r1] + bl sub_081B69B4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xd + ldr r0, _0813997C + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #1 +_08139972: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08139978: .4byte gUnknown_2021C54 +_0813997C: .4byte gUnknown_82EACC4 + thumb_func_end sub_08139938 + + thumb_func_start sub_08139980 +sub_08139980: @ 0x08139980 + push {r4, r5, lr} + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _081399B6 +_08139990: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081399A8 + adds r0, r0, r1 + movs r1, #4 + bl sub_0806A058 + cmp r0, #1 + bne _081399AC + movs r0, #1 + b _081399B8 + .align 2, 0 +_081399A8: .4byte gUnknown_2024190 +_081399AC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08139990 +_081399B6: + movs r0, #0 +_081399B8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139980 + + thumb_func_start sub_081399C0 +sub_081399C0: @ 0x081399C0 + push {lr} + ldr r0, _081399E0 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _081399E4 + cmp r1, r0 + bne _081399EC + ldr r0, _081399E8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bne _081399EC + movs r0, #1 + b _081399EE + .align 2, 0 +_081399E0: .4byte gUnknown_3005AEC +_081399E4: .4byte 0x00000F1A +_081399E8: .4byte 0x000040CE +_081399EC: + movs r0, #0 +_081399EE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081399C0 + + thumb_func_start sub_081399F4 +sub_081399F4: @ 0x081399F4 + push {lr} + movs r0, #0 + bl sub_08089C24 + movs r0, #8 + movs r1, #0 + bl sub_08089C30 + pop {r0} + bx r0 + thumb_func_end sub_081399F4 + + thumb_func_start sub_08139A08 +sub_08139A08: @ 0x08139A08 + push {lr} + ldr r0, _08139A24 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + subs r0, #0x10 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #5 + bhi _08139A58 + lsls r0, r0, #2 + ldr r1, _08139A28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08139A24: .4byte gUnknown_3005AEC +_08139A28: .4byte _08139A2C +_08139A2C: @ jump table + .4byte _08139A58 @ case 0 + .4byte _08139A44 @ case 1 + .4byte _08139A48 @ case 2 + .4byte _08139A4C @ case 3 + .4byte _08139A50 @ case 4 + .4byte _08139A54 @ case 5 +_08139A44: + movs r1, #5 + b _08139A5A +_08139A48: + movs r1, #6 + b _08139A5A +_08139A4C: + movs r1, #7 + b _08139A5A +_08139A50: + movs r1, #8 + b _08139A5A +_08139A54: + movs r1, #0xf + b _08139A5A +_08139A58: + movs r1, #4 +_08139A5A: + ldr r0, _08139A64 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_08139A64: .4byte 0x00004043 + thumb_func_end sub_08139A08 + + thumb_func_start sub_08139A68 +sub_08139A68: @ 0x08139A68 + push {r4, lr} + ldr r2, _08139A98 + movs r0, #0 + strh r0, [r2] + ldr r1, _08139A9C + strh r0, [r1] + ldr r0, _08139AA0 + ldr r3, [r0] + movs r0, #0x14 + ldrsb r0, [r3, r0] + adds r4, r1, #0 + cmp r0, #0xd + bne _08139AE2 + ldrb r0, [r3, #0x15] + subs r0, #0x10 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + bhi _08139AE2 + lsls r0, r0, #2 + ldr r1, _08139AA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08139A98: .4byte gUnknown_203A82C +_08139A9C: .4byte gUnknown_203A82E +_08139AA0: .4byte gUnknown_3005AEC +_08139AA4: .4byte _08139AA8 +_08139AA8: @ jump table + .4byte _08139ADA @ case 0 + .4byte _08139AD2 @ case 1 + .4byte _08139ACA @ case 2 + .4byte _08139AC2 @ case 3 + .4byte _08139ABC @ case 4 +_08139ABC: + movs r0, #0 + strh r0, [r2] + b _08139AE0 +_08139AC2: + movs r0, #0 + strh r0, [r2] + movs r0, #1 + b _08139AE0 +_08139ACA: + movs r0, #0 + strh r0, [r2] + movs r0, #2 + b _08139AE0 +_08139AD2: + movs r0, #0 + strh r0, [r2] + movs r0, #3 + b _08139AE0 +_08139ADA: + movs r0, #0 + strh r0, [r2] + movs r0, #4 +_08139AE0: + strh r0, [r4] +_08139AE2: + ldrh r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139A68 + + thumb_func_start sub_08139AEC +sub_08139AEC: @ 0x08139AEC + push {r4, r5, r6, lr} + ldr r0, _08139B24 + movs r1, #9 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08139B28 + adds r4, r1, r0 + movs r3, #0 + strh r3, [r4, #2] + strh r3, [r4, #4] + movs r6, #1 + strh r6, [r4, #8] + ldr r0, _08139B2C + ldr r1, _08139B30 + ldrh r2, [r0] + ldrh r0, [r1] + cmp r2, r0 + bls _08139B34 + subs r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + strh r6, [r4, #0xc] + b _08139B3C + .align 2, 0 +_08139B24: .4byte sub_08139B68 +_08139B28: .4byte gUnknown_3005B68 +_08139B2C: .4byte gUnknown_2037282 +_08139B30: .4byte gUnknown_2037284 +_08139B34: + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + strh r3, [r4, #0xc] +_08139B3C: + cmp r5, #8 + bls _08139B42 + movs r5, #8 +_08139B42: + ldr r0, _08139B64 + adds r0, r5, r0 + ldrb r0, [r0] + strh r0, [r4, #0xa] + movs r0, #0 + bl sub_08089C24 + ldrb r1, [r4, #0xc] + adds r0, r5, #0 + bl sub_08139C68 + movs r0, #0x59 + bl sub_080A306C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08139B64: .4byte gUnknown_8592674 + thumb_func_end sub_08139AEC + + thumb_func_start sub_08139B68 +sub_08139B68: @ 0x08139B68 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08139BD0 + adds r4, r0, r1 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r1, #2 + ldrsh r0, [r4, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _08139BC8 + strh r0, [r4, #2] + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4, #8] + rsbs r0, r0, #0 + strh r0, [r4, #8] + movs r2, #8 + ldrsh r1, [r4, r2] + movs r0, #0 + bl sub_08089C30 + movs r0, #4 + ldrsh r1, [r4, r0] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08139BC8 + movs r0, #0x49 + bl sub_080A306C + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 + bl sub_08089C48 +_08139BC8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08139BD0: .4byte gUnknown_3005B68 + thumb_func_end sub_08139B68 + + thumb_func_start sub_08139BD4 +sub_08139BD4: @ 0x08139BD4 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r4, _08139C38 + ldr r0, _08139C3C + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08197638 + ldrb r0, [r4] + ldr r2, _08139C40 + movs r1, #2 + str r1, [sp] + movs r6, #0xff + str r6, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r4] + ldr r2, _08139C44 + ldr r1, _08139C48 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + movs r1, #0x10 + str r1, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r3, #0x13 + bl sub_0800449C + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08139C38: .4byte gUnknown_203A82A +_08139C3C: .4byte gUnknown_8592608 +_08139C40: .4byte gUnknown_85CB0BF +_08139C44: .4byte gUnknown_8592610 +_08139C48: .4byte gUnknown_2037282 + thumb_func_end sub_08139BD4 + + thumb_func_start sub_08139C4C +sub_08139C4C: @ 0x08139C4C + push {r4, lr} + ldr r4, _08139C64 + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08139C64: .4byte gUnknown_203A82A + thumb_func_end sub_08139C4C + + thumb_func_start sub_08139C68 +sub_08139C68: @ 0x08139C68 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r4, _08139CB0 + adds r0, r4, #0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08139CA8 + adds r0, r4, #0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08139CB4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + strh r5, [r1, #0xc] + ldr r0, _08139CB8 + adds r0, r6, r0 + ldrb r0, [r0] + strh r0, [r1, #0xe] +_08139CA8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08139CB0: .4byte sub_08139CBC +_08139CB4: .4byte gUnknown_3005B60 +_08139CB8: .4byte gUnknown_859267D + thumb_func_end sub_08139C68 + + thumb_func_start sub_08139CBC +sub_08139CBC: @ 0x08139CBC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r0, r0, #2 + ldr r1, [sp] + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08139D44 + adds r6, r0, r1 + movs r2, #2 + ldrsh r0, [r6, r2] + cmp r0, #6 + bne _08139DB8 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08139D4C + movs r1, #0 + ldr r2, _08139D48 + mov sl, r2 +_08139CF6: + movs r5, #0 + adds r7, r1, #7 + lsls r0, r1, #1 + adds r2, r1, #1 + mov r8, r2 + adds r0, r0, r1 + lsls r0, r0, #1 + mov sb, r0 +_08139D06: + adds r4, r5, #0 + adds r4, #8 + movs r1, #0 + ldrsh r0, [r6, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + add r0, sb + add r0, sl + ldrh r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #4 + adds r2, r1, #0 + orrs r2, r0 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08087C54 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _08139D06 + mov r2, r8 + lsls r0, r2, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bls _08139CF6 + b _08139D9E + .align 2, 0 +_08139D44: .4byte gUnknown_3005B68 +_08139D48: .4byte gUnknown_8592650 +_08139D4C: + movs r1, #0 + ldr r0, _08139DD0 + mov sl, r0 +_08139D52: + movs r5, #0 + adds r7, r1, #7 + lsls r0, r1, #1 + adds r2, r1, #1 + mov r8, r2 + adds r0, r0, r1 + lsls r0, r0, #1 + mov sb, r0 +_08139D62: + adds r4, r5, #0 + adds r4, #8 + movs r1, #0 + ldrsh r0, [r6, r1] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + add r0, sb + add r0, sl + ldrh r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #4 + adds r2, r1, #0 + orrs r2, r0 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08087C54 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _08139D62 + mov r2, r8 + lsls r0, r2, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bls _08139D52 +_08139D9E: + bl sub_08089598 + movs r0, #0 + strh r0, [r6, #2] + movs r0, #0 + ldrsh r1, [r6, r0] + movs r2, #6 + ldrsh r0, [r6, r2] + cmp r1, r0 + bne _08139DB8 + ldr r0, [sp] + bl sub_080A8964 +_08139DB8: + ldrh r0, [r6, #2] + adds r0, #1 + strh r0, [r6, #2] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08139DD0: .4byte gUnknown_8592662 + thumb_func_end sub_08139CBC + + thumb_func_start sub_08139DD4 +sub_08139DD4: @ 0x08139DD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r6, _08139E7C + ldrh r0, [r6] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _08139E80 + adds r0, r0, r4 + movs r1, #0x27 + bl sub_0806A058 + str r0, [sp] + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x28 + bl sub_0806A058 + str r0, [sp, #4] + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x29 + bl sub_0806A058 + str r0, [sp, #8] + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x2a + bl sub_0806A058 + str r0, [sp, #0xc] + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x2b + bl sub_0806A058 + str r0, [sp, #0x10] + ldrh r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x2c + bl sub_0806A058 + str r0, [sp, #0x14] + ldr r1, _08139E84 + movs r0, #0 + strh r0, [r1] + movs r4, #0 + adds r2, r1, #0 +_08139E3C: + lsls r0, r4, #2 + add r0, sp + ldr r1, [r0] + ldrh r0, [r2] + adds r0, r0, r1 + strh r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08139E3C + ldr r2, _08139E88 + movs r0, #0 + strh r0, [r2] + ldr r1, _08139E8C + ldr r0, [sp] + strh r0, [r1] + movs r4, #1 + adds r6, r2, #0 + adds r7, r1, #0 +_08139E64: + ldrh r0, [r6] + lsls r0, r0, #2 + mov r2, sp + adds r1, r2, r0 + lsls r0, r4, #2 + adds r5, r2, r0 + ldr r1, [r1] + ldr r0, [r5] + cmp r1, r0 + bhs _08139E90 + strh r4, [r6] + b _08139EA8 + .align 2, 0 +_08139E7C: .4byte gUnknown_2037280 +_08139E80: .4byte gUnknown_2024190 +_08139E84: .4byte gUnknown_2037282 +_08139E88: .4byte gUnknown_2037284 +_08139E8C: .4byte gUnknown_2037286 +_08139E90: + cmp r1, r0 + bne _08139EAA + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08139EAA + strh r4, [r6] + ldr r0, [r5] +_08139EA8: + strh r0, [r7] +_08139EAA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08139E64 + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08139DD4 + + thumb_func_start sub_08139EBC +sub_08139EBC: @ 0x08139EBC + push {r4, lr} + ldr r0, _08139EEC + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #8 + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, _08139EF0 + ldrh r0, [r2] + ldr r1, _08139EF4 + cmp r0, r1 + beq _08139F02 + adds r4, r1, #0 + adds r1, r2, #0 +_08139EE0: + ldrh r0, [r2] + cmp r0, r3 + bne _08139EF8 + movs r0, #1 + b _08139F04 + .align 2, 0 +_08139EEC: .4byte gUnknown_2031F7C +_08139EF0: .4byte gUnknown_8592686 +_08139EF4: .4byte 0x0000FFFF +_08139EF8: + adds r1, #2 + adds r2, #2 + ldrh r0, [r1] + cmp r0, r4 + bne _08139EE0 +_08139F02: + movs r0, #0 +_08139F04: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139EBC + + thumb_func_start sub_08139F0C +sub_08139F0C: @ 0x08139F0C + push {lr} + ldr r0, _08139F20 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _08139F24 + cmp r1, r0 + beq _08139F28 + movs r0, #1 + b _08139F2A + .align 2, 0 +_08139F20: .4byte gUnknown_3005AEC +_08139F24: .4byte 0x00003C1A +_08139F28: + movs r0, #0 +_08139F2A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08139F0C + + thumb_func_start sub_08139F30 +sub_08139F30: @ 0x08139F30 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _08139F58 + bl sub_0809CF20 + adds r5, r0, #0 + ldrh r0, [r5] + adds r4, r4, r0 + strh r4, [r5] + ldrh r0, [r5] + movs r1, #0xa + bl __umodsi3 + strh r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08139F58: .4byte 0x0000402F + thumb_func_end sub_08139F30 + + thumb_func_start sub_08139F5C +sub_08139F5C: @ 0x08139F5C + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r0, _08139F7C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #9 + bls _08139F70 + b _0813A076 +_08139F70: + lsls r0, r6, #2 + ldr r1, _08139F80 + adds r1, r0, r1 + ldr r1, [r1] + adds r2, r0, #0 + mov pc, r1 + .align 2, 0 +_08139F7C: .4byte 0x0000402F +_08139F80: .4byte _08139F84 +_08139F84: @ jump table + .4byte _08139FAC @ case 0 + .4byte _08139FAC @ case 1 + .4byte _08139FAC @ case 2 + .4byte _08139FAC @ case 3 + .4byte _08139FD0 @ case 4 + .4byte _08139FF0 @ case 5 + .4byte _0813A008 @ case 6 + .4byte _0813A020 @ case 7 + .4byte _0813A038 @ case 8 + .4byte _0813A050 @ case 9 +_08139FAC: + ldr r0, _08139FC8 + ldr r0, [r0] + movs r3, #0xce + lsls r3, r3, #4 + adds r1, r0, r3 + adds r3, r1, r2 + ldr r1, _08139FCC + adds r0, r0, r1 + adds r1, r0, r2 + ldrh r0, [r3] + ldrh r2, [r1] + cmp r0, r2 + bhs _0813A064 + b _0813A074 + .align 2, 0 +_08139FC8: .4byte gUnknown_3005AF0 +_08139FCC: .4byte 0x00000CE2 +_08139FD0: + ldr r0, _08139FE8 + ldr r0, [r0] + ldr r3, _08139FEC + adds r2, r0, r3 + adds r3, #2 +_08139FDA: + adds r1, r0, r3 + ldrh r0, [r2] + ldrh r3, [r1] + cmp r0, r3 + bhs _0813A064 + b _0813A074 + .align 2, 0 +_08139FE8: .4byte gUnknown_3005AF0 +_08139FEC: .4byte 0x00000D0C +_08139FF0: + ldr r0, _08139FFC + ldr r0, [r0] + ldr r1, _0813A000 + adds r2, r0, r1 + ldr r3, _0813A004 + b _08139FDA + .align 2, 0 +_08139FFC: .4byte gUnknown_3005AF0 +_0813A000: .4byte 0x00000DE2 +_0813A004: .4byte 0x00000DE4 +_0813A008: + ldr r0, _0813A014 + ldr r0, [r0] + ldr r1, _0813A018 + adds r2, r0, r1 + ldr r3, _0813A01C + b _08139FDA + .align 2, 0 +_0813A014: .4byte gUnknown_3005AF0 +_0813A018: .4byte 0x00000DC8 +_0813A01C: .4byte 0x00000DCA +_0813A020: + ldr r0, _0813A02C + ldr r0, [r0] + ldr r1, _0813A030 + adds r2, r0, r1 + ldr r3, _0813A034 + b _08139FDA + .align 2, 0 +_0813A02C: .4byte gUnknown_3005AF0 +_0813A030: .4byte 0x00000DDA +_0813A034: .4byte 0x00000DDC +_0813A038: + ldr r0, _0813A044 + ldr r0, [r0] + ldr r1, _0813A048 + adds r2, r0, r1 + ldr r3, _0813A04C + b _08139FDA + .align 2, 0 +_0813A044: .4byte gUnknown_3005AF0 +_0813A048: .4byte 0x00000E04 +_0813A04C: .4byte 0x00000E06 +_0813A050: + ldr r0, _0813A068 + ldr r0, [r0] + ldr r1, _0813A06C + adds r2, r0, r1 + ldr r3, _0813A070 + adds r1, r0, r3 + ldrh r0, [r2] + ldrh r3, [r1] + cmp r0, r3 + blo _0813A074 +_0813A064: + adds r4, r0, #0 + b _0813A076 + .align 2, 0 +_0813A068: .4byte gUnknown_3005AF0 +_0813A06C: .4byte 0x00000E1A +_0813A070: .4byte 0x00000E1C +_0813A074: + ldrh r4, [r1] +_0813A076: + movs r2, #0 + ldr r5, _0813A0B4 + lsls r0, r6, #1 + adds r1, r0, r5 + ldrb r1, [r1] + adds r3, r0, #0 + ldr r7, _0813A0B8 + cmp r1, r4 + bhs _0813A09E + adds r1, r3, #0 +_0813A08A: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #1 + bhi _0813A09E + adds r0, r2, r1 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, r4 + blo _0813A08A +_0813A09E: + adds r0, r3, r6 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r0, [r0] + bl sub_08097B74 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A0B4: .4byte gUnknown_8592724 +_0813A0B8: .4byte gUnknown_85926AC + thumb_func_end sub_08139F5C + + thumb_func_start sub_0813A0BC +sub_0813A0BC: @ 0x0813A0BC + push {r4, r5, r6, r7, lr} + ldr r0, _0813A0F8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0813A0FC + ldr r0, [r0] + ldr r1, _0813A100 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + cmp r5, #2 + bne _0813A114 + movs r0, #0xa9 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813A114 + ldr r1, _0813A104 + movs r0, #5 + strh r0, [r1] + ldr r1, _0813A108 + movs r0, #4 + strh r0, [r1] + b _0813A14C + .align 2, 0 +_0813A0F8: .4byte 0x000040CE +_0813A0FC: .4byte gUnknown_3005AF0 +_0813A100: .4byte 0x00000CA9 +_0813A104: .4byte gUnknown_2037282 +_0813A108: .4byte gUnknown_2037284 +_0813A10C: + movs r0, #4 + strh r0, [r6] + adds r0, r3, #5 + b _0813A14A +_0813A114: + movs r3, #0 + ldr r6, _0813A154 + ldr r7, _0813A158 + lsls r1, r4, #1 + lsls r2, r5, #2 + ldr r4, _0813A15C + ldr r0, _0813A160 + ldr r0, [r0] + adds r1, r1, r2 + movs r2, #0xce + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r1, [r0] +_0813A130: + lsls r0, r3, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, r1 + bhi _0813A10C + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #8 + bls _0813A130 + movs r0, #4 + strh r0, [r6] + movs r0, #0xc +_0813A14A: + strh r0, [r7] +_0813A14C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A154: .4byte gUnknown_2037282 +_0813A158: .4byte gUnknown_2037284 +_0813A15C: .4byte gUnknown_8592738 +_0813A160: .4byte gUnknown_3005AF0 + thumb_func_end sub_0813A0BC + + thumb_func_start sub_0813A164 +sub_0813A164: @ 0x0813A164 + push {r4, lr} + ldr r0, _0813A194 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0813A198 + adds r3, r0, r1 + ldr r1, _0813A19C + ldrh r0, [r1] + strh r0, [r3, #0x1e] + ldrh r0, [r1] + cmp r0, #0xc + bls _0813A18A + b _0813A302 +_0813A18A: + lsls r0, r0, #2 + ldr r1, _0813A1A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813A194: .4byte sub_0813A318 +_0813A198: .4byte gUnknown_3005B60 +_0813A19C: .4byte gUnknown_2037280 +_0813A1A0: .4byte _0813A1A4 +_0813A1A4: @ jump table + .4byte _0813A1D8 @ case 0 + .4byte _0813A1E6 @ case 1 + .4byte _0813A1FE @ case 2 + .4byte _0813A212 @ case 3 + .4byte _0813A22C @ case 4 + .4byte _0813A244 @ case 5 + .4byte _0813A25E @ case 6 + .4byte _0813A278 @ case 7 + .4byte _0813A296 @ case 8 + .4byte _0813A2B0 @ case 9 + .4byte _0813A2B0 @ case 10 + .4byte _0813A2CA @ case 11 + .4byte _0813A2E4 @ case 12 +_0813A1D8: + movs r1, #0 + movs r0, #1 + strh r0, [r3, #8] + strh r0, [r3, #0xa] + strh r0, [r3, #0xc] + strh r0, [r3, #0xe] + b _0813A2F8 +_0813A1E6: + movs r1, #0 + movs r0, #5 + strh r0, [r3, #8] + movs r0, #8 + strh r0, [r3, #0xa] + movs r0, #1 + strh r0, [r3, #0xc] + strh r0, [r3, #0xe] + movs r0, #9 + strh r0, [r3, #0x10] + movs r0, #0xa + b _0813A2FA +_0813A1FE: + movs r2, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r1, #0xc + strh r1, [r3, #0xa] + movs r0, #1 + strh r0, [r3, #0xc] + strh r0, [r3, #0xe] + movs r0, #7 + b _0813A28C +_0813A212: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #0xb + strh r0, [r3, #0xa] + movs r0, #0xe + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xf + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A22C: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + strh r0, [r3, #0xa] + movs r0, #0xe + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xf + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A244: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #7 + strh r0, [r3, #0xa] + movs r0, #0xe + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xf + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A25E: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #0xa + strh r0, [r3, #0xa] + movs r0, #0xe + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xf + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A278: + movs r2, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r1, #0xc + strh r1, [r3, #0xa] + movs r0, #0xf + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xe +_0813A28C: + strh r0, [r3, #0x10] + strh r1, [r3, #0x12] + strh r2, [r3, #0x14] + strh r4, [r3, #0x26] + b _0813A30E +_0813A296: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #0xa + strh r0, [r3, #0xa] + movs r0, #0x11 + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xb + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A2B0: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #0xb + strh r0, [r3, #0xa] + movs r0, #0xf + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xe + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A2CA: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #7 + strh r0, [r3, #0xa] + movs r0, #0x13 + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xa + strh r0, [r3, #0x10] + movs r0, #0xc + b _0813A2FA +_0813A2E4: + movs r1, #0 + movs r0, #6 + strh r0, [r3, #8] + movs r0, #7 + strh r0, [r3, #0xa] + movs r0, #0x11 + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #0xe] + movs r0, #0xc +_0813A2F8: + strh r0, [r3, #0x10] +_0813A2FA: + strh r0, [r3, #0x12] + strh r1, [r3, #0x14] + strh r4, [r3, #0x26] + b _0813A30E +_0813A302: + ldr r1, _0813A314 + movs r0, #0x7f + strh r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_0813A30E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A314: .4byte gUnknown_2037290 + thumb_func_end sub_0813A164 + + thumb_func_start sub_0813A318 +sub_0813A318: @ 0x0813A318 + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0813A410 + adds r5, r0, r1 + bl sub_080987DC + ldr r1, _0813A414 + movs r0, #0 + strh r0, [r1] + ldr r1, _0813A418 + movs r0, #0x40 + strb r0, [r1] + ldrh r0, [r5, #0x1e] + movs r1, #0 + bl sub_0813AAAC + ldrb r0, [r5, #0x1e] + movs r1, #0 + bl sub_0813AD2C + ldrb r2, [r5, #0xc] + ldrb r3, [r5, #0xe] + ldrb r0, [r5, #0x10] + str r0, [sp] + ldrb r0, [r5, #0x12] + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x5c + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + bl sub_08198B60 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x18 + bl sub_08003250 + movs r4, #0 + strh r0, [r5, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197638 + ldr r6, _0813A41C + movs r1, #0xa + ldrsh r0, [r5, r1] + lsls r0, r0, #3 + bl sub_08000BDC + str r0, [r6] + ldr r0, _0813A420 + strh r4, [r0] + bl sub_0813A434 + movs r3, #0 + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r3, r0 + bge _0813A3CE + mov ip, r6 + ldr r6, _0813A424 + ldr r4, _0813A428 +_0813A3A8: + mov r1, ip + ldr r0, [r1] + lsls r2, r3, #3 + adds r2, r2, r0 + lsls r1, r3, #2 + ldrh r0, [r4] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r1, r1, r6 + ldr r0, [r1] + str r0, [r2] + str r3, [r2, #4] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0xa + ldrsh r0, [r5, r1] + cmp r3, r0 + blt _0813A3A8 +_0813A3CE: + ldr r4, _0813A42C + ldrh r0, [r5, #0xa] + strh r0, [r4, #0xc] + ldrh r0, [r5, #8] + strh r0, [r4, #0xe] + ldrh r0, [r5, #0x22] + strb r0, [r4, #0x10] + adds r0, r7, #0 + bl sub_0813A69C + ldrh r1, [r5, #0x16] + ldrh r2, [r5, #0x18] + adds r0, r4, #0 + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x24] + movs r0, #0 + bl sub_08199654 + ldr r1, _0813A410 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0813A430 + str r1, [r0] + add sp, #0x20 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813A410: .4byte gUnknown_3005B60 +_0813A414: .4byte gUnknown_203A834 +_0813A418: .4byte gUnknown_203A838 +_0813A41C: .4byte gUnknown_203A830 +_0813A420: .4byte gUnknown_203A836 +_0813A424: .4byte gUnknown_859274C +_0813A428: .4byte gUnknown_2037280 +_0813A42C: .4byte gUnknown_3005F10 +_0813A430: .4byte sub_0813A4F4 + thumb_func_end sub_0813A318 + + thumb_func_start sub_0813A434 +sub_0813A434: @ 0x0813A434 + ldr r1, _0813A468 + ldr r0, _0813A46C + ldr r0, [r0] + str r0, [r1] + ldr r0, _0813A470 + str r0, [r1, #4] + movs r0, #0 + str r0, [r1, #8] + movs r2, #0 + movs r0, #1 + strh r0, [r1, #0xc] + strh r0, [r1, #0xe] + strb r2, [r1, #0x10] + strb r2, [r1, #0x11] + movs r0, #8 + strb r0, [r1, #0x12] + strb r2, [r1, #0x13] + movs r0, #0x20 + strb r0, [r1, #0x14] + movs r0, #0x31 + strb r0, [r1, #0x15] + movs r0, #0 + strb r0, [r1, #0x16] + movs r0, #1 + strb r0, [r1, #0x17] + bx lr + .align 2, 0 +_0813A468: .4byte gUnknown_3005F10 +_0813A46C: .4byte gUnknown_203A830 +_0813A470: .4byte sub_0813A474 + thumb_func_end sub_0813A434 + + thumb_func_start sub_0813A474 +sub_0813A474: @ 0x0813A474 + push {r4, r5, lr} + sub sp, #4 + movs r0, #5 + bl sub_080A306C + ldr r0, _0813A4E4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0813A4DC + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0813A4E8 + adds r4, r4, r0 + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #0 + bl sub_081AE538 + ldr r1, _0813A4EC + mov r0, sp + ldrh r0, [r0] + strh r0, [r1] + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + bl sub_081AE510 + ldrh r0, [r4, #0x1e] + ldr r5, _0813A4F0 + ldrh r1, [r5] + bl sub_0813AC90 + ldrh r0, [r4, #0x1e] + mov r1, sp + ldrh r1, [r1] + bl sub_0813AAAC + ldrb r0, [r4, #0x1e] + mov r1, sp + ldrh r1, [r1] + bl sub_0813AD6C + mov r0, sp + ldrh r0, [r0] + strh r0, [r5] +_0813A4DC: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813A4E4: .4byte sub_0813A4F4 +_0813A4E8: .4byte gUnknown_3005B60 +_0813A4EC: .4byte gUnknown_203A834 +_0813A4F0: .4byte gUnknown_203A836 + thumb_func_end sub_0813A474 + + thumb_func_start sub_0813A4F4 +sub_0813A4F4: @ 0x0813A4F4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0813A520 + adds r6, r0, r1 + ldrh r0, [r6, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AE2DC + adds r4, r0, #0 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0813A524 + adds r0, #1 + cmp r4, r0 + bne _0813A538 + b _0813A56E + .align 2, 0 +_0813A520: .4byte gUnknown_3005B60 +_0813A524: + ldr r1, _0813A534 + movs r0, #0x7f + strh r0, [r1] + movs r0, #5 + bl sub_080A306C + b _0813A554 + .align 2, 0 +_0813A534: .4byte gUnknown_2037290 +_0813A538: + ldr r0, _0813A55C + strh r4, [r0] + movs r0, #5 + bl sub_080A306C + movs r1, #0x14 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0813A554 + movs r1, #0xa + ldrsh r0, [r6, r1] + subs r0, #1 + cmp r4, r0 + bne _0813A560 +_0813A554: + adds r0, r5, #0 + bl sub_0813A578 + b _0813A56E + .align 2, 0 +_0813A55C: .4byte gUnknown_2037290 +_0813A560: + adds r0, r5, #0 + bl sub_0813A740 + ldr r0, _0813A574 + str r0, [r6] + bl sub_080988C4 +_0813A56E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813A574: .4byte sub_0813A608 + thumb_func_end sub_0813A4F4 + + thumb_func_start sub_0813A578 +sub_0813A578: @ 0x0813A578 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0813A600 + adds r4, r4, r0 + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + bl sub_081AE510 + ldrh r0, [r4, #0x1e] + mov r1, sp + ldrh r1, [r1] + bl sub_0813AC90 + adds r0, r5, #0 + bl sub_0813A740 + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldr r0, _0813A604 + ldr r0, [r0] + bl sub_08000BF0 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08198134 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_08003528 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813A600: .4byte gUnknown_3005B60 +_0813A604: .4byte gUnknown_203A830 + thumb_func_end sub_0813A578 + + thumb_func_start sub_0813A608 +sub_0813A608: @ 0x0813A608 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813A630 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0x14 + ldrsh r0, [r1, r2] + cmp r0, #1 + beq _0813A62C + cmp r0, #2 + bne _0813A62C + movs r0, #1 + strh r0, [r1, #0x14] + ldr r0, _0813A634 + str r0, [r1] +_0813A62C: + pop {r0} + bx r0 + .align 2, 0 +_0813A630: .4byte gUnknown_3005B60 +_0813A634: .4byte sub_0813A66C + thumb_func_end sub_0813A608 + + thumb_func_start sub_0813A638 +sub_0813A638: @ 0x0813A638 + push {lr} + ldr r0, _0813A650 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _0813A654 + bl sub_080988C4 + b _0813A664 + .align 2, 0 +_0813A650: .4byte sub_0813A608 +_0813A654: + ldr r0, _0813A668 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + strh r0, [r1, #0x14] +_0813A664: + pop {r0} + bx r0 + .align 2, 0 +_0813A668: .4byte gUnknown_3005B60 + thumb_func_end sub_0813A638 + + thumb_func_start sub_0813A66C +sub_0813A66C: @ 0x0813A66C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_080987DC + adds r0, r4, #0 + bl sub_0813A69C + ldr r1, _0813A694 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0813A698 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A694: .4byte gUnknown_3005B60 +_0813A698: .4byte sub_0813A4F4 + thumb_func_end sub_0813A66C + + thumb_func_start sub_0813A69C +sub_0813A69C: @ 0x0813A69C + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0813A734 + adds r4, r1, r0 + mov r1, sp + ldr r0, _0813A738 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldr r0, [r0] + str r0, [r1] + movs r0, #8 + ldrsh r1, [r4, r0] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _0813A72C + mov r2, sp + movs r3, #0x10 + ldrsh r1, [r4, r3] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + lsls r1, r1, #3 + adds r1, #0xc + movs r5, #0xc + ldrsh r0, [r4, r5] + subs r0, #1 + lsls r0, r0, #3 + adds r1, r1, r0 + movs r3, #0 + strb r1, [r2, #1] + mov r1, sp + movs r0, #8 + strb r0, [r1, #2] + movs r0, #0x10 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + lsls r1, r1, #3 + adds r1, #0xc + movs r5, #0xc + ldrsh r0, [r4, r5] + subs r0, #1 + lsls r0, r0, #3 + adds r1, r1, r0 + strb r1, [r2, #4] + mov r1, sp + movs r2, #0x12 + ldrsh r0, [r4, r2] + lsls r0, r0, #3 + adds r0, #0xa + strb r0, [r1, #5] + mov r0, sp + strh r3, [r0, #6] + mov r2, sp + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #8] + subs r0, r0, r1 + strh r0, [r2, #8] + ldr r1, _0813A73C + mov r0, sp + bl sub_081AF058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] +_0813A72C: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813A734: .4byte gUnknown_3005B60 +_0813A738: .4byte gUnknown_8592A8C +_0813A73C: .4byte gUnknown_203A834 + thumb_func_end sub_0813A69C + + thumb_func_start sub_0813A740 +sub_0813A740: @ 0x0813A740 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0813A76C + adds r2, r1, r0 + movs r0, #8 + ldrsh r1, [r2, r0] + movs r3, #0xa + ldrsh r0, [r2, r3] + cmp r1, r0 + beq _0813A766 + ldrh r0, [r2, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AF2F8 +_0813A766: + pop {r0} + bx r0 + .align 2, 0 +_0813A76C: .4byte gUnknown_3005B60 + thumb_func_end sub_0813A740 + + thumb_func_start sub_0813A770 +sub_0813A770: @ 0x0813A770 + bx lr + .align 2, 0 + thumb_func_end sub_0813A770 + + thumb_func_start sub_0813A774 +sub_0813A774: @ 0x0813A774 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r6, _0813A79C + ldr r0, _0813A7A0 + adds r5, r0, #0 +_0813A77E: + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #0x13] + cmp r0, #0 + bne _0813A7A4 + subs r0, r5, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_0809CF88 + b _0813A7B0 + .align 2, 0 +_0813A79C: .4byte gUnknown_20226A0 +_0813A7A0: .4byte 0x0000401F +_0813A7A4: + subs r0, r5, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x69 + bl sub_0809CF88 +_0813A7B0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0813A77E + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0813A774 + + thumb_func_start sub_0813A7C0 +sub_0813A7C0: @ 0x0813A7C0 + push {lr} + ldr r1, _0813A7F0 + ldrh r0, [r1] + cmp r0, #5 + bls _0813A7CE + movs r0, #0 + strh r0, [r1] +_0813A7CE: + ldrh r1, [r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0813A7F4 + adds r0, r0, r1 + bl sub_0806CB34 + lsls r0, r0, #0x18 + ldr r1, _0813A7F8 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + pop {r0} + bx r0 + .align 2, 0 +_0813A7F0: .4byte gUnknown_2037280 +_0813A7F4: .4byte gUnknown_2024190 +_0813A7F8: .4byte gUnknown_8592A9C + thumb_func_end sub_0813A7C0 + + thumb_func_start sub_0813A7FC +sub_0813A7FC: @ 0x0813A7FC + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0813A824 + bl sub_0809CF20 + adds r5, r0, #0 + ldrh r0, [r5] + adds r4, r4, r0 + strh r4, [r5] + ldrh r0, [r5] + movs r1, #0xc + bl __umodsi3 + strh r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813A824: .4byte 0x00004030 + thumb_func_end sub_0813A7FC + + thumb_func_start sub_0813A828 +sub_0813A828: @ 0x0813A828 + push {r4, lr} + ldr r0, _0813A850 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r1, _0813A854 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + ldr r0, _0813A858 + adds r1, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A850: .4byte 0x00004030 +_0813A854: .4byte gUnknown_8592B00 +_0813A858: .4byte 0x00004031 + thumb_func_end sub_0813A828 + + thumb_func_start sub_0813A85C +sub_0813A85C: @ 0x0813A85C + push {r4, lr} + ldr r4, _0813A878 + ldr r0, _0813A87C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08097B74 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A878: .4byte gUnknown_8592B30 +_0813A87C: .4byte 0x00004031 + thumb_func_end sub_0813A85C + + thumb_func_start sub_0813A880 +sub_0813A880: @ 0x0813A880 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0813A8DC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _0813A8E0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0813A8E4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r4, _0813A8E8 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0813A8F8 + ldr r1, _0813A8EC + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r5, #8 + adds r0, r0, r7 + cmp r1, r0 + bne _0813A8F8 + mov r0, r8 + cmp r0, #0 + beq _0813A8F0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0809CF88 + b _0813A8F8 + .align 2, 0 +_0813A8DC: .4byte 0x000040CE +_0813A8E0: .4byte 0x00004031 +_0813A8E4: .4byte 0x000040CF +_0813A8E8: .4byte 0x00004033 +_0813A8EC: .4byte gUnknown_8592B60 +_0813A8F0: + adds r0, r4, #0 + movs r1, #3 + bl sub_0809CF88 +_0813A8F8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813A880 + + thumb_func_start sub_0813A904 +sub_0813A904: @ 0x0813A904 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + ldr r5, _0813A974 + ldr r0, _0813A978 + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08197638 + ldrb r0, [r5] + ldr r2, _0813A97C + movs r4, #0 + str r4, [sp] + movs r1, #0xff + mov r8, r1 + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x38 + bl sub_0800449C + ldr r6, _0813A980 + ldr r0, _0813A984 + ldr r0, [r0] + ldr r1, _0813A988 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r6, #0 + movs r2, #2 + movs r3, #4 + bl sub_080089D8 + ldrb r0, [r5] + str r4, [sp] + mov r1, r8 + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x18 + bl sub_0800449C + ldrb r0, [r5] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813A974: .4byte gUnknown_203A839 +_0813A978: .4byte gUnknown_8592B78 +_0813A97C: .4byte gUnknown_85CB0C8 +_0813A980: .4byte gUnknown_2021C40 +_0813A984: .4byte gUnknown_3005AF0 +_0813A988: .4byte 0x00000EB8 + thumb_func_end sub_0813A904 + + thumb_func_start sub_0813A98C +sub_0813A98C: @ 0x0813A98C + push {r4, lr} + sub sp, #0xc + ldr r4, _0813A9C4 + ldr r0, _0813A9C8 + ldr r0, [r0] + ldr r1, _0813A9CC + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #2 + movs r3, #4 + bl sub_080089D8 + ldr r0, _0813A9D0 + ldrb r0, [r0] + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0x18 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A9C4: .4byte gUnknown_2021C40 +_0813A9C8: .4byte gUnknown_3005AF0 +_0813A9CC: .4byte 0x00000EB8 +_0813A9D0: .4byte gUnknown_203A839 + thumb_func_end sub_0813A98C + + thumb_func_start sub_0813A9D4 +sub_0813A9D4: @ 0x0813A9D4 + push {r4, lr} + ldr r4, _0813A9EC + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813A9EC: .4byte gUnknown_203A839 + thumb_func_end sub_0813A9D4 + + thumb_func_start sub_0813A9F0 +sub_0813A9F0: @ 0x0813A9F0 + push {lr} + ldr r0, _0813AA08 + ldr r0, [r0] + ldr r2, _0813AA0C + adds r1, r0, r2 + ldr r0, _0813AA10 + ldrh r2, [r1] + ldrh r0, [r0] + cmp r2, r0 + bhs _0813AA14 + movs r0, #0 + b _0813AA16 + .align 2, 0 +_0813AA08: .4byte gUnknown_3005AF0 +_0813AA0C: .4byte 0x00000EB8 +_0813AA10: .4byte gUnknown_2037280 +_0813AA14: + subs r0, r2, r0 +_0813AA16: + strh r0, [r1] + pop {r0} + bx r0 + thumb_func_end sub_0813A9F0 + + thumb_func_start sub_0813AA1C +sub_0813AA1C: @ 0x0813AA1C + push {lr} + ldr r0, _0813AA38 + ldr r0, [r0] + ldr r1, _0813AA3C + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _0813AA40 + ldrh r0, [r0] + adds r1, r1, r0 + ldr r0, _0813AA44 + cmp r1, r0 + ble _0813AA48 + strh r0, [r2] + b _0813AA4A + .align 2, 0 +_0813AA38: .4byte gUnknown_3005AF0 +_0813AA3C: .4byte 0x00000EB8 +_0813AA40: .4byte gUnknown_2037280 +_0813AA44: .4byte 0x0000270F +_0813AA48: + strh r1, [r2] +_0813AA4A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813AA1C + + thumb_func_start sub_0813AA50 +sub_0813AA50: @ 0x0813AA50 + ldr r0, _0813AA5C + ldr r0, [r0] + ldr r1, _0813AA60 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_0813AA5C: .4byte gUnknown_3005AF0 +_0813AA60: .4byte 0x00000EB8 + thumb_func_end sub_0813AA50 + + thumb_func_start sub_0813AA64 +sub_0813AA64: @ 0x0813AA64 + push {r4, lr} + ldr r4, _0813AA88 + ldr r0, _0813AA8C + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08197638 + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813AA88: .4byte gUnknown_203A83A +_0813AA8C: .4byte gUnknown_8592B80 + thumb_func_end sub_0813AA64 + + thumb_func_start sub_0813AA90 +sub_0813AA90: @ 0x0813AA90 + push {r4, lr} + ldr r4, _0813AAA8 + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813AAA8: .4byte gUnknown_203A83A + thumb_func_end sub_0813AA90 + + thumb_func_start sub_0813AAAC +sub_0813AAAC: @ 0x0813AAAC + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsrs r4, r0, #0x10 + ldr r1, _0813AAE8 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _0813AAC4 + b _0813AC0E +_0813AAC4: + movs r0, #0xb0 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 + cmp r4, #4 + beq _0813AB34 + cmp r4, #4 + bgt _0813AAEC + cmp r4, #3 + beq _0813AAF6 + b _0813AC0E + .align 2, 0 +_0813AAE8: .4byte 0xFFFD0000 +_0813AAEC: + cmp r4, #5 + beq _0813ABA8 + cmp r4, #6 + beq _0813ABE0 + b _0813AC0E +_0813AAF6: + ldr r1, _0813AB28 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + ldr r1, _0813AB2C + lsls r0, r5, #1 + adds r1, r0, r1 + ldrh r5, [r1] + ldr r0, _0813AB30 + cmp r5, r0 + beq _0813AB64 + b _0813AB78 + .align 2, 0 +_0813AB28: .4byte gUnknown_8592BCC +_0813AB2C: .4byte gUnknown_8592B88 +_0813AB30: .4byte 0x0000FFFF +_0813AB34: + ldr r1, _0813AB6C + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + ldr r1, _0813AB70 + lsls r0, r5, #1 + adds r1, r0, r1 + ldrh r5, [r1] + ldr r0, _0813AB74 + cmp r5, r0 + bne _0813AB78 +_0813AB64: + ldrh r0, [r1] + bl sub_0813AC20 + b _0813AC0E + .align 2, 0 +_0813AB6C: .4byte gUnknown_8592BF8 +_0813AB70: .4byte gUnknown_8592B9E +_0813AB74: .4byte 0x0000FFFF +_0813AB78: + ldr r4, _0813ABA0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp] + str r4, [sp, #4] + movs r1, #0x21 + movs r2, #0x58 + movs r3, #0 + bl sub_081295B4 + ldr r1, _0813ABA4 + strb r0, [r1] + b _0813AC0E + .align 2, 0 +_0813ABA0: .4byte 0x0000157C +_0813ABA4: .4byte gUnknown_203A838 +_0813ABA8: + ldr r1, _0813ABD8 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + ldr r1, _0813ABDC + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0813AC20 + b _0813AC0E + .align 2, 0 +_0813ABD8: .4byte gUnknown_8592C10 +_0813ABDC: .4byte gUnknown_8592BAA +_0813ABE0: + ldr r1, _0813AC18 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + ldr r1, _0813AC1C + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0813AC20 +_0813AC0E: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813AC18: .4byte gUnknown_8592C2C +_0813AC1C: .4byte gUnknown_8592BB8 + thumb_func_end sub_0813AAAC + + thumb_func_start sub_0813AC20 +sub_0813AC20: @ 0x0813AC20 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r4, _0813AC84 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081AFB48 + ldr r4, _0813AC88 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0813AC7E + ldr r3, _0813AC8C + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0x24 + strh r1, [r0, #0x20] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0x5c + strh r1, [r0, #0x22] +_0813AC7E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813AC84: .4byte 0x0000157C +_0813AC88: .4byte gUnknown_203A838 +_0813AC8C: .4byte gUnknown_20205AC + thumb_func_end sub_0813AC20 + + thumb_func_start sub_0813AC90 +sub_0813AC90: @ 0x0813AC90 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _0813ACC0 + ldrb r0, [r2] + cmp r0, #0x40 + beq _0813ACBC + cmp r1, #6 + bgt _0813ACB6 + cmp r1, #3 + blt _0813ACB6 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0813ACC4 + adds r0, r0, r1 + bl sub_08007338 +_0813ACB6: + ldr r1, _0813ACC0 + movs r0, #0x40 + strb r0, [r1] +_0813ACBC: + pop {r0} + bx r0 + .align 2, 0 +_0813ACC0: .4byte gUnknown_203A838 +_0813ACC4: .4byte gUnknown_20205AC + thumb_func_end sub_0813AC90 + + thumb_func_start sub_0813ACC8 +sub_0813ACC8: @ 0x0813ACC8 + push {lr} + ldr r0, _0813ACEC + ldrh r0, [r0] + cmp r0, #0 + beq _0813AD00 + ldr r0, _0813ACF0 + ldr r2, _0813ACF4 + ldr r1, _0813ACF8 + ldrh r1, [r1] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + lsls r1, r1, #3 + ldr r2, _0813ACFC + adds r1, r1, r2 + bl sub_080088B8 + b _0813AD18 + .align 2, 0 +_0813ACEC: .4byte gUnknown_2037282 +_0813ACF0: .4byte gUnknown_2021C40 +_0813ACF4: .4byte gUnknown_8592C68 +_0813ACF8: .4byte gUnknown_2037280 +_0813ACFC: .4byte gUnknown_82EACC4 +_0813AD00: + ldr r0, _0813AD1C + ldr r2, _0813AD20 + ldr r1, _0813AD24 + ldrh r1, [r1] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + lsls r1, r1, #3 + ldr r2, _0813AD28 + adds r1, r1, r2 + bl sub_080088B8 +_0813AD18: + pop {r0} + bx r0 + .align 2, 0 +_0813AD1C: .4byte gUnknown_2021C40 +_0813AD20: .4byte gUnknown_8592C54 +_0813AD24: .4byte gUnknown_2037280 +_0813AD28: .4byte gUnknown_82EACC4 + thumb_func_end sub_0813ACC8 + + thumb_func_start sub_0813AD2C +sub_0813AD2C: @ 0x0813AD2C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsrs r6, r0, #0x18 + movs r1, #0xf7 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0813AD5C + ldr r4, _0813AD64 + ldr r0, _0813AD68 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08197638 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0813AD6C +_0813AD5C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813AD64: .4byte gUnknown_203A82A +_0813AD68: .4byte gUnknown_8592C7C + thumb_func_end sub_0813AD2C + + thumb_func_start sub_0813AD6C +sub_0813AD6C: @ 0x0813AD6C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + adds r7, r5, #0 + lsrs r6, r0, #0x18 + movs r1, #0xf7 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0813ADE4 + ldr r4, _0813ADC0 + ldrb r0, [r4] + movs r1, #0x50 + str r1, [sp] + movs r1, #0x30 + str r1, [sp, #4] + movs r1, #0x11 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 + cmp r6, #0xa + bne _0813ADC8 + ldrb r0, [r4] + ldr r2, _0813ADC4 + lsls r1, r5, #2 + adds r1, r1, r2 + ldr r2, [r1] + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + b _0813ADE4 + .align 2, 0 +_0813ADC0: .4byte gUnknown_203A82A +_0813ADC4: .4byte gUnknown_8592CB0 +_0813ADC8: + ldrb r0, [r4] + ldr r2, _0813ADEC + lsls r1, r7, #2 + adds r1, r1, r2 + ldr r2, [r1] + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C +_0813ADE4: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813ADEC: .4byte gUnknown_8592C84 + thumb_func_end sub_0813AD6C + + thumb_func_start sub_0813ADF0 +sub_0813ADF0: @ 0x0813ADF0 + push {r4, lr} + ldr r4, _0813AE08 + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813AE08: .4byte gUnknown_203A82A + thumb_func_end sub_0813ADF0 + + thumb_func_start sub_0813AE0C +sub_0813AE0C: @ 0x0813AE0C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + ldr r0, _0813AED8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + beq _0813AEC8 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _0813AEDC + adds r6, r0, r1 + ldrh r0, [r6, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r4, sp + adds r4, #0x16 + add r1, sp, #0x14 + adds r2, r4, #0 + bl sub_081AE538 + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197638 + movs r5, #0 + mov sb, r4 + ldr r0, _0813AEE0 + mov r8, r0 + movs r4, #0 +_0813AE56: + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add r1, sp, #0x14 + ldrh r2, [r1] + adds r2, r2, r5 + lsls r2, r2, #2 + ldr r1, _0813AEE4 + ldrh r1, [r1] + lsls r1, r1, #6 + adds r2, r2, r1 + add r2, r8 + ldr r2, [r2] + lsls r1, r5, #0x1c + lsrs r1, r1, #0x18 + str r1, [sp] + movs r7, #0xff + str r7, [sp, #4] + str r4, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + movs r1, #1 + movs r3, #0xa + bl sub_08199C0C + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0813AE56 + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813AEE8 + mov r3, sb + ldrh r1, [r3] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x18 + str r1, [sp] + str r7, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + ldrh r0, [r6, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_08003528 +_0813AEC8: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813AED8: .4byte sub_0813A608 +_0813AEDC: .4byte gUnknown_3005B60 +_0813AEE0: .4byte gUnknown_859274C +_0813AEE4: .4byte gUnknown_2037280 +_0813AEE8: .4byte gUnknown_85C9299 + thumb_func_end sub_0813AE0C + + thumb_func_start sub_0813AEEC +sub_0813AEEC: @ 0x0813AEEC + push {r4, lr} + movs r1, #0 + ldr r0, _0813AF30 + strh r1, [r0] + ldr r0, _0813AF34 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0813AF38 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r4, #0 + beq _0813AF50 + movs r2, #0 + lsls r1, r1, #1 + ldr r3, _0813AF3C + ldr r0, _0813AF40 + adds r0, r1, r0 + ldrh r1, [r0] +_0813AF1A: + lsls r0, r2, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r1 + beq _0813AF44 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1d + bls _0813AF1A + b _0813AF70 + .align 2, 0 +_0813AF30: .4byte gUnknown_2037282 +_0813AF34: .4byte 0x0000400E +_0813AF38: .4byte 0x0000400D +_0813AF3C: .4byte gUnknown_85E08C4 +_0813AF40: .4byte gUnknown_8592C68 +_0813AF44: + ldr r0, _0813AF4C + strh r2, [r0] + b _0813AF70 + .align 2, 0 +_0813AF4C: .4byte gUnknown_2037282 +_0813AF50: + movs r2, #0 + lsls r1, r1, #1 + ldr r3, _0813AF78 + ldr r0, _0813AF7C + adds r0, r1, r0 + ldrh r1, [r0] +_0813AF5C: + lsls r0, r2, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r1 + beq _0813AF44 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1d + bls _0813AF5C +_0813AF70: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813AF78: .4byte gUnknown_85E08C4 +_0813AF7C: .4byte gUnknown_8592C54 + thumb_func_end sub_0813AEEC + + thumb_func_start sub_0813AF80 +sub_0813AF80: @ 0x0813AF80 + push {r4, r5, lr} + ldr r0, _0813AFF4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xff + beq _0813AFEE + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0813AFF8 + adds r4, r4, r0 + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldr r0, _0813AFFC + ldr r0, [r0] + bl sub_08000BF0 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_08198134 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003774 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_08003528 + ldrh r0, [r4, #0x22] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08003444 + adds r0, r5, #0 + bl sub_080A8964 +_0813AFEE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813AFF4: .4byte sub_0813A608 +_0813AFF8: .4byte gUnknown_3005B60 +_0813AFFC: .4byte gUnknown_203A830 + thumb_func_end sub_0813AF80 + + thumb_func_start sub_0813B000 +sub_0813B000: @ 0x0813B000 + push {lr} + ldr r0, _0813B010 + movs r1, #8 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_0813B010: .4byte sub_0813B014 + thumb_func_end sub_0813B000 + + thumb_func_start sub_0813B014 +sub_0813B014: @ 0x0813B014 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0813B034 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813B03C + ldr r1, _0813B038 + movs r0, #3 + b _0813B0A2 + .align 2, 0 +_0813B034: .4byte 0x000008D4 +_0813B038: .4byte gUnknown_2037290 +_0813B03C: + ldr r0, _0813B084 + mov r8, r0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r4, _0813B088 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0 + bl sub_0809CF88 + cmp r5, #0 + beq _0813B094 + ldr r0, _0813B08C + subs r1, r5, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, r6 + bhs _0813B094 + movs r0, #0 + bl sub_0813B0EC + mov r0, r8 + movs r1, #0 + bl sub_0809CF88 + ldr r1, _0813B090 + movs r0, #0 + strh r0, [r1] + b _0813B0A8 + .align 2, 0 +_0813B084: .4byte 0x00004035 +_0813B088: .4byte 0x00004034 +_0813B08C: .4byte gUnknown_8592E52 +_0813B090: .4byte gUnknown_2037290 +_0813B094: + cmp r5, #0xa + bne _0813B0B8 + ldr r0, _0813B0B0 + bl sub_0809D018 + ldr r1, _0813B0B4 + movs r0, #2 +_0813B0A2: + strh r0, [r1] + bl sub_080988C4 +_0813B0A8: + adds r0, r7, #0 + bl sub_080A8964 + b _0813B0DA + .align 2, 0 +_0813B0B0: .4byte 0x000008D4 +_0813B0B4: .4byte gUnknown_2037290 +_0813B0B8: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_0813B0EC + ldr r0, _0813B0E4 + adds r1, r5, #0 + bl sub_0809CF88 + ldr r1, _0813B0E8 + movs r0, #1 + strh r0, [r1] + adds r0, r7, #0 + bl sub_080A8964 +_0813B0DA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813B0E4: .4byte 0x00004035 +_0813B0E8: .4byte gUnknown_2037290 + thumb_func_end sub_0813B014 + + thumb_func_start sub_0813B0EC +sub_0813B0EC: @ 0x0813B0EC + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #5 + ldr r1, _0813B120 + adds r0, r0, r1 + movs r1, #0xd0 + lsls r1, r1, #1 + movs r2, #8 + bl sub_080A1200 + ldr r0, _0813B124 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #1 + mov r3, sp + bl sub_0808CEB8 + cmp r4, #0 + bne _0813B128 + movs r0, #0xc4 + bl sub_080A306C + b _0813B130 + .align 2, 0 +_0813B120: .4byte gUnknown_8592CDC +_0813B124: .4byte gUnknown_3005AEC +_0813B128: + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_080A306C +_0813B130: + ldr r0, _0813B164 + movs r1, #8 + bl sub_080A8878 + ldr r3, _0813B168 + movs r0, #1 + str r0, [r3] + movs r0, #0x3a + str r0, [r3, #4] + movs r0, #0x1a + str r0, [r3, #8] + ldr r0, _0813B16C + lsls r2, r4, #1 + adds r1, r2, r0 + ldrb r1, [r1] + str r1, [r3, #0xc] + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + str r0, [r3, #0x10] + adds r5, r2, #0 + cmp r4, #0 + bne _0813B170 + movs r0, #0x3c + b _0813B172 + .align 2, 0 +_0813B164: .4byte sub_0813B198 +_0813B168: .4byte gUnknown_20388A8 +_0813B16C: .4byte gUnknown_8592E3C +_0813B170: + movs r0, #5 +_0813B172: + str r0, [r3, #0x14] + movs r0, #0x42 + bl sub_080B5270 + ldr r0, _0813B194 + adds r1, r5, r0 + ldrb r1, [r1] + adds r0, #1 + adds r0, r5, r0 + ldrb r2, [r0] + movs r0, #1 + bl sub_08084298 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813B194: .4byte gUnknown_8592E3C + thumb_func_end sub_0813B0EC + + thumb_func_start sub_0813B198 +sub_0813B198: @ 0x0813B198 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x42 + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813B1B4 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_0813B1B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813B198 + + thumb_func_start sub_0813B1BC +sub_0813B1BC: @ 0x0813B1BC + push {r4, lr} + ldr r4, _0813B1EC + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _0813B1F0 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _0813B1F4 + cmp r1, r0 + bne _0813B200 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x63 + bls _0813B1F8 + adds r0, r4, #0 + movs r1, #0 + bl sub_0809CF88 + b _0813B200 + .align 2, 0 +_0813B1EC: .4byte 0x00004034 +_0813B1F0: .4byte gUnknown_3005AEC +_0813B1F4: .4byte 0x00003A1A +_0813B1F8: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0809CF88 +_0813B200: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813B1BC + + thumb_func_start sub_0813B208 +sub_0813B208: @ 0x0813B208 + push {lr} + ldr r0, _0813B234 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x13 + ldr r1, _0813B238 + adds r0, r0, r1 + movs r1, #0xd0 + lsls r1, r1, #1 + movs r2, #8 + bl sub_080A1200 + movs r0, #0x80 + lsls r0, r0, #0x13 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + pop {r0} + bx r0 + .align 2, 0 +_0813B234: .4byte 0x00004035 +_0813B238: .4byte gUnknown_8592CDC + thumb_func_end sub_0813B208 + + thumb_func_start sub_0813B23C +sub_0813B23C: @ 0x0813B23C + ldr r1, _0813B244 + strb r0, [r1] + bx lr + .align 2, 0 +_0813B244: .4byte gUnknown_203A83B + thumb_func_end sub_0813B23C + + thumb_func_start sub_0813B248 +sub_0813B248: @ 0x0813B248 + ldr r0, _0813B250 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0813B250: .4byte gUnknown_203A83B + thumb_func_end sub_0813B248 + + thumb_func_start sub_0813B254 +sub_0813B254: @ 0x0813B254 + push {r4, r5, lr} + ldr r5, _0813B288 + adds r0, r5, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813B290 + bl sub_080D15AC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0813B28C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + beq _0813B290 + adds r0, r5, #0 + bl sub_0809D018 + movs r0, #1 + b _0813B292 + .align 2, 0 +_0813B288: .4byte 0x000008D7 +_0813B28C: .4byte 0x00004036 +_0813B290: + movs r0, #0 +_0813B292: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0813B254 + + thumb_func_start sub_0813B298 +sub_0813B298: @ 0x0813B298 + push {r4, r5, r6, r7, lr} + ldr r0, _0813B2F0 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0813B23C + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0813B2B0: + movs r5, #0 + lsls r6, r4, #0x18 + lsls r7, r4, #0x10 +_0813B2B6: + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r6, #0x18 + bl sub_080D1934 + movs r1, #0xb + movs r2, #0 + bl sub_0806A1B4 + cmp r0, #0 + bne _0813B2F8 + bl sub_0813B248 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + beq _0813B2DE + ldr r0, _0813B2F4 + bl sub_0809D040 +_0813B2DE: + ldr r0, _0813B2F0 + lsrs r1, r7, #0x10 + bl sub_0809CF88 + bl sub_0813B254 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0813B314 + .align 2, 0 +_0813B2F0: .4byte 0x00004036 +_0813B2F4: .4byte 0x000008D7 +_0813B2F8: + adds r5, #1 + cmp r5, #0x1d + ble _0813B2B6 + adds r4, #1 + cmp r4, #0xe + bne _0813B306 + movs r4, #0 +_0813B306: + bl sub_080D15AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0813B2B0 + movs r0, #0 +_0813B314: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813B298 + + thumb_func_start sub_0813B31C +sub_0813B31C: @ 0x0813B31C + push {r4, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0813B35C + movs r1, #0 + bl sub_0809CF88 + movs r0, #0xdf + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813B378 + ldr r0, _0813B360 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813B368 + ldr r0, _0813B364 + movs r1, #7 + ands r4, r1 + adds r1, r4, #0 + adds r1, #9 + bl sub_0809CF88 + b _0813B3A2 + .align 2, 0 +_0813B35C: .4byte 0x00004038 +_0813B360: .4byte 0x000001BF +_0813B364: .4byte 0x00004037 +_0813B368: + movs r0, #1 + ands r4, r0 + cmp r4, #0 + bne _0813B38C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0813B378: + ldr r0, _0813B388 + movs r1, #7 + ands r4, r1 + adds r1, r4, #1 + bl sub_0809CF88 + b _0813B3A2 + .align 2, 0 +_0813B388: .4byte 0x00004037 +_0813B38C: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0813B3A8 + movs r1, #7 + ands r4, r1 + adds r1, r4, #0 + adds r1, #9 + bl sub_0809CF88 +_0813B3A2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813B3A8: .4byte 0x00004037 + thumb_func_end sub_0813B31C + + thumb_func_start sub_0813B3AC +sub_0813B3AC: @ 0x0813B3AC + push {r4, lr} + ldr r0, _0813B3D4 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0813B3D8 + ldr r2, _0813B3DC + subs r1, r4, #1 + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #0 + bl sub_08124578 + cmp r4, #8 + bls _0813B3E0 + movs r0, #1 + b _0813B3E2 + .align 2, 0 +_0813B3D4: .4byte 0x00004037 +_0813B3D8: .4byte gUnknown_2021C40 +_0813B3DC: .4byte gUnknown_8592E5C +_0813B3E0: + movs r0, #0 +_0813B3E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0813B3AC + + thumb_func_start sub_0813B3E8 +sub_0813B3E8: @ 0x0813B3E8 + push {r4, r5, r6, lr} + ldr r5, _0813B438 + adds r0, r5, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0813B43C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _0813B4B4 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0813B440 + cmp r4, r0 + bls _0813B4AC + adds r0, r5, #0 + movs r1, #0 + bl sub_0809CF88 + ldr r0, _0813B444 + ldr r1, [r0] + movs r0, #4 + ldrsb r0, [r1, r0] + cmp r0, #0x18 + bne _0813B44C + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #0x69 + bgt _0813B44C + cmp r0, #0x65 + blt _0813B44C + ldr r0, _0813B448 + movs r1, #1 + b _0813B4B0 + .align 2, 0 +_0813B438: .4byte 0x00004038 +_0813B43C: .4byte 0x00004037 +_0813B440: .4byte 0x000003E7 +_0813B444: .4byte gUnknown_3005AEC +_0813B448: .4byte 0x00004039 +_0813B44C: + ldr r0, _0813B474 + ldr r2, [r0] + movs r1, #4 + ldrsb r1, [r2, r1] + adds r3, r0, #0 + cmp r1, #0 + bne _0813B47C + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r0, #0x34 + beq _0813B46E + cmp r0, #0x34 + blt _0813B47C + cmp r0, #0x38 + bgt _0813B47C + cmp r0, #0x36 + blt _0813B47C +_0813B46E: + ldr r0, _0813B478 + movs r1, #1 + b _0813B4B0 + .align 2, 0 +_0813B474: .4byte gUnknown_3005AEC +_0813B478: .4byte 0x00004039 +_0813B47C: + ldr r3, [r3] + movs r2, #5 + ldrsb r2, [r3, r2] + ldr r1, _0813B49C + subs r0, r6, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bne _0813B4A0 + movs r0, #4 + ldrsb r0, [r3, r0] + cmp r0, #0 + bne _0813B4A0 + movs r0, #1 + b _0813B4B6 + .align 2, 0 +_0813B49C: .4byte gUnknown_8592E6C +_0813B4A0: + ldr r0, _0813B4A8 + movs r1, #0 + b _0813B4B0 + .align 2, 0 +_0813B4A8: .4byte 0x00004037 +_0813B4AC: + adds r0, r5, #0 + adds r1, r4, #0 +_0813B4B0: + bl sub_0809CF88 +_0813B4B4: + movs r0, #0 +_0813B4B6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0813B3E8 + + thumb_func_start sub_0813B4BC +sub_0813B4BC: @ 0x0813B4BC + push {lr} + movs r0, #2 + bl sub_080AAA00 + pop {r0} + bx r0 + thumb_func_end sub_0813B4BC + + thumb_func_start sub_0813B4C8 +sub_0813B4C8: @ 0x0813B4C8 + push {r4, r5, r6, r7, lr} + movs r3, #0 + ldr r0, _0813B4FC + ldr r4, [r0] + movs r6, #4 + ldrsb r6, [r4, r6] + ldr r5, _0813B500 + adds r0, r5, #2 + mov ip, r0 + adds r7, r5, #1 +_0813B4DC: + lsls r0, r3, #1 + adds r2, r0, r3 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r6, r0 + bne _0813B504 + movs r1, #5 + ldrsb r1, [r4, r1] + adds r0, r2, r7 + ldrb r0, [r0] + cmp r1, r0 + bne _0813B504 + mov r1, ip + adds r0, r2, r1 + ldrb r0, [r0] + b _0813B510 + .align 2, 0 +_0813B4FC: .4byte gUnknown_3005AEC +_0813B500: .4byte gUnknown_8592E7C +_0813B504: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xb + bls _0813B4DC + movs r0, #1 +_0813B510: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813B4C8 + + thumb_func_start sub_0813B518 +sub_0813B518: @ 0x0813B518 + push {lr} + ldr r0, _0813B540 + ldrh r0, [r0] + bl sub_081D0CE8 + cmp r0, #0 + blt _0813B544 + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813B544 + movs r0, #1 + b _0813B546 + .align 2, 0 +_0813B540: .4byte gUnknown_2037280 +_0813B544: + movs r0, #0 +_0813B546: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813B518 + + thumb_func_start sub_0813B54C +sub_0813B54C: @ 0x0813B54C + push {lr} + ldr r0, _0813B560 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813B564 + movs r0, #1 + b _0813B566 + .align 2, 0 +_0813B560: .4byte 0x0000403F +_0813B564: + movs r0, #0 +_0813B566: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813B54C + + thumb_func_start sub_0813B56C +sub_0813B56C: @ 0x0813B56C + push {lr} + ldr r2, _0813B590 + ldr r1, _0813B594 + ldr r0, [r1] + str r0, [r2] + movs r0, #0 + str r0, [r1] + ldr r0, _0813B598 + ldrb r0, [r0] + cmp r0, #0 + bne _0813B58A + ldr r0, _0813B59C + movs r1, #5 + bl sub_080A8878 +_0813B58A: + pop {r0} + bx r0 + .align 2, 0 +_0813B590: .4byte gUnknown_203A83C +_0813B594: .4byte gUnknown_2022C90 +_0813B598: .4byte gUnknown_30031C4 +_0813B59C: .4byte sub_080B3250 + thumb_func_end sub_0813B56C + + thumb_func_start sub_0813B5A0 +sub_0813B5A0: @ 0x0813B5A0 + push {lr} + ldr r0, _0813B5B0 + movs r1, #5 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_0813B5B0: .4byte sub_0813B5B4 + thumb_func_end sub_0813B5A0 + + thumb_func_start sub_0813B5B4 +sub_0813B5B4: @ 0x0813B5B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0813B5D8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #9 + bls _0813B5CE + b _0813B7FE +_0813B5CE: + lsls r0, r0, #2 + ldr r1, _0813B5DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813B5D8: .4byte gUnknown_3005B60 +_0813B5DC: .4byte _0813B5E0 +_0813B5E0: @ jump table + .4byte _0813B608 @ case 0 + .4byte _0813B61C @ case 1 + .4byte _0813B64C @ case 2 + .4byte _0813B6EC @ case 3 + .4byte _0813B71C @ case 4 + .4byte _0813B760 @ case 5 + .4byte _0813B79C @ case 6 + .4byte _0813B7AA @ case 7 + .4byte _0813B7BC @ case 8 + .4byte _0813B7E0 @ case 9 +_0813B608: + ldr r0, _0813B618 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813B616 + b _0813B7FE +_0813B616: + b _0813B7C8 + .align 2, 0 +_0813B618: .4byte sub_080B3250 +_0813B61C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813B62A + b _0813B7FE +_0813B62A: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813B636 + b _0813B7C8 +_0813B636: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0813B648 + movs r2, #2 + bl sub_0800A070 + b _0813B740 + .align 2, 0 +_0813B648: .4byte gUnknown_2037280 +_0813B64C: + bl sub_0800A114 + movs r1, #2 + ands r1, r0 + cmp r1, #0 + bne _0813B65A + b _0813B7FE +_0813B65A: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813B666 + b _0813B7C8 +_0813B666: + ldr r5, _0813B690 + ldr r0, _0813B694 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r5] + movs r0, #1 + bl sub_0800A1B0 + ldr r0, _0813B698 + ldrh r0, [r0] + cmp r0, #1 + bne _0813B6A0 + ldrh r1, [r5] + cmp r1, #1 + bne _0813B6A0 + ldr r0, _0813B69C + strh r1, [r0] + b _0813B7C8 + .align 2, 0 +_0813B690: .4byte gUnknown_2037282 +_0813B694: .4byte gUnknown_202207C +_0813B698: .4byte gUnknown_2037280 +_0813B69C: .4byte gUnknown_2037290 +_0813B6A0: + ldr r0, _0813B6B8 + ldrh r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _0813B6C4 + ldr r0, _0813B6BC + ldrh r0, [r0] + cmp r0, #1 + bne _0813B6C4 + ldr r1, _0813B6C0 + movs r0, #2 + b _0813B6E4 + .align 2, 0 +_0813B6B8: .4byte gUnknown_2037280 +_0813B6BC: .4byte gUnknown_2037282 +_0813B6C0: .4byte gUnknown_2037290 +_0813B6C4: + ldrh r0, [r2] + cmp r0, #1 + bne _0813B6E0 + ldr r0, _0813B6D8 + ldrh r0, [r0] + cmp r0, #0 + bne _0813B6E0 + ldr r1, _0813B6DC + movs r0, #3 + b _0813B6E4 + .align 2, 0 +_0813B6D8: .4byte gUnknown_2037282 +_0813B6DC: .4byte gUnknown_2037290 +_0813B6E0: + ldr r1, _0813B6E8 + movs r0, #0 +_0813B6E4: + strh r0, [r1] + b _0813B7C8 + .align 2, 0 +_0813B6E8: .4byte gUnknown_2037290 +_0813B6EC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813B6FA + b _0813B7FE +_0813B6FA: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813B7C8 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0813B718 + movs r2, #2 + bl sub_0800A070 + b _0813B740 + .align 2, 0 +_0813B718: .4byte gUnknown_2037290 +_0813B71C: + bl sub_0800A114 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0813B7FE + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813B7C8 + ldr r1, _0813B754 + ldr r0, _0813B758 + ldrh r0, [r0] + strh r0, [r1] + movs r0, #0 + bl sub_0800A1B0 +_0813B740: + ldr r1, _0813B75C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _0813B7FE + .align 2, 0 +_0813B754: .4byte gUnknown_2037290 +_0813B758: .4byte gUnknown_202207C +_0813B75C: .4byte gUnknown_3005B60 +_0813B760: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813B784 + ldr r0, _0813B77C + ldrh r0, [r0] + cmp r0, #2 + bne _0813B7C8 + ldr r0, _0813B780 + bl sub_08097C00 + b _0813B7C8 + .align 2, 0 +_0813B77C: .4byte gUnknown_2037290 +_0813B780: .4byte gUnknown_8226D61 +_0813B784: + ldr r0, _0813B794 + ldrh r0, [r0] + cmp r0, #3 + bne _0813B7C8 + ldr r0, _0813B798 + bl sub_08097C00 + b _0813B7C8 + .align 2, 0 +_0813B794: .4byte gUnknown_2037290 +_0813B798: .4byte gUnknown_8226D61 +_0813B79C: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813B7FE + b _0813B7C8 +_0813B7AA: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813B7FE + bl sub_0800A8D4 + b _0813B7C8 +_0813B7BC: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0813B7FE +_0813B7C8: + ldr r0, _0813B7DC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0813B7FE + .align 2, 0 +_0813B7DC: .4byte gUnknown_3005B60 +_0813B7E0: + ldr r0, _0813B804 + ldrb r0, [r0] + cmp r0, #0 + bne _0813B7EC + bl sub_0800A7F8 +_0813B7EC: + ldr r0, _0813B808 + ldr r1, _0813B80C + ldr r1, [r1] + str r1, [r0] + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_0813B7FE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813B804: .4byte gUnknown_300319C +_0813B808: .4byte gUnknown_2022C90 +_0813B80C: .4byte gUnknown_203A83C + thumb_func_end sub_0813B5B4 + + thumb_func_start sub_0813B810 +sub_0813B810: @ 0x0813B810 + push {lr} + ldr r0, _0813B828 + ldrh r0, [r0] + cmp r0, #0 + bne _0813B830 + ldr r2, _0813B82C + movs r0, #0 + movs r1, #1 + bl sub_081D605C + b _0813B83A + .align 2, 0 +_0813B828: .4byte gUnknown_2037280 +_0813B82C: .4byte sub_08085B34 +_0813B830: + ldr r2, _0813B840 + movs r0, #1 + movs r1, #0 + bl sub_081D605C +_0813B83A: + pop {r0} + bx r0 + .align 2, 0 +_0813B840: .4byte sub_08085B34 + thumb_func_end sub_0813B810 + + thumb_func_start sub_0813B844 +sub_0813B844: @ 0x0813B844 + push {lr} + ldr r0, _0813B858 + movs r1, #8 + bl sub_080A8878 + movs r0, #0x9d + bl sub_080A306C + pop {r0} + bx r0 + .align 2, 0 +_0813B858: .4byte sub_0813B85C + thumb_func_end sub_0813B844 + + thumb_func_start sub_0813B85C +sub_0813B85C: @ 0x0813B85C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0813B8AC + adds r4, r0, r1 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r0, #2 + ldrsh r1, [r4, r0] + ldr r0, _0813B8B0 + ldrh r0, [r0] + cmp r1, r0 + bne _0813B890 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #0 + strh r0, [r4, #2] + movs r0, #0x9d + bl sub_080A306C +_0813B890: + movs r0, #0 + ldrsh r1, [r4, r0] + ldr r0, _0813B8B4 + ldrh r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _0813B8A4 + adds r0, r5, #0 + bl sub_080A8964 +_0813B8A4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813B8AC: .4byte gUnknown_3005B68 +_0813B8B0: .4byte gUnknown_2037282 +_0813B8B4: .4byte gUnknown_2037280 + thumb_func_end sub_0813B85C + + thumb_func_start sub_0813B8B8 +sub_0813B8B8: @ 0x0813B8B8 + push {lr} + ldr r0, _0813B8E0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813B8E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + movs r0, #4 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + strh r2, [r1, #0xe] + pop {r0} + bx r0 + .align 2, 0 +_0813B8E0: .4byte sub_0813B8E8 +_0813B8E4: .4byte gUnknown_3005B60 + thumb_func_end sub_0813B8B8 + + thumb_func_start sub_0813B8E8 +sub_0813B8E8: @ 0x0813B8E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + ldr r1, _0813B994 + adds r5, r0, r1 + movs r0, #6 + ldrsh r1, [r5, r0] + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + movs r1, #6 + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + adds r0, r0, r5 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0813B986 + movs r6, #0 +_0813B922: + movs r4, #0 + lsls r3, r6, #3 + mov sl, r3 + adds r7, r6, #1 + mov r8, r7 +_0813B92C: + ldr r0, _0813B998 + ldr r1, [r0] + movs r2, #0 + ldrsh r0, [r1, r2] + adds r0, r0, r4 + adds r0, #6 + movs r3, #2 + ldrsh r1, [r1, r3] + adds r1, r1, r6 + adds r1, #4 + ldr r7, _0813B99C + adds r2, r4, r7 + add r2, sl + movs r7, #6 + ldrsh r3, [r5, r7] + lsls r3, r3, #5 + adds r2, r2, r3 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + bl sub_08087C54 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0813B92C + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _0813B922 + bl sub_08089598 + ldrh r0, [r5, #6] + adds r0, #1 + strh r0, [r5, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _0813B986 + mov r0, sb + bl sub_080A8964 + bl sub_080988C4 +_0813B986: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813B994: .4byte gUnknown_3005B68 +_0813B998: .4byte gUnknown_3005AEC +_0813B99C: .4byte 0x00000201 + thumb_func_end sub_0813B8E8 + + thumb_func_start sub_0813B9A0 +sub_0813B9A0: @ 0x0813B9A0 + push {r4, r5, lr} + ldr r5, _0813B9D0 + ldr r0, _0813B9D4 + ldrh r0, [r0] + movs r1, #7 + bl __udivsi3 + strh r0, [r5] + ldrh r4, [r5] + adds r0, r4, #0 + movs r1, #0x14 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + subs r4, r4, r1 + strh r4, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813B9D0: .4byte gUnknown_2037290 +_0813B9D4: .4byte gUnknown_2037280 + thumb_func_end sub_0813B9A0 + + thumb_func_start sub_0813B9D8 +sub_0813B9D8: @ 0x0813B9D8 + push {lr} + ldr r0, _0813B9F4 + ldr r0, [r0] + ldrh r1, [r0, #0x1c] + movs r0, #0xb0 + lsls r0, r0, #4 + cmp r1, r0 + bne _0813B9EE + movs r0, #3 + bl sub_08084684 +_0813B9EE: + pop {r0} + bx r0 + .align 2, 0 +_0813B9F4: .4byte gUnknown_3005AEC + thumb_func_end sub_0813B9D8 + + thumb_func_start sub_0813B9F8 +sub_0813B9F8: @ 0x0813B9F8 + push {r4, lr} + ldr r0, _0813BA28 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + lsls r1, r1, #8 + ldrb r0, [r0, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, _0813BA2C + ldrh r0, [r2] + ldr r1, _0813BA30 + cmp r0, r1 + beq _0813BA3E + adds r4, r1, #0 + adds r1, r2, #0 +_0813BA1E: + ldrh r0, [r2] + cmp r0, r3 + bne _0813BA34 + movs r0, #1 + b _0813BA40 + .align 2, 0 +_0813BA28: .4byte gUnknown_3005AEC +_0813BA2C: .4byte gUnknown_8592EA0 +_0813BA30: .4byte 0x0000FFFF +_0813BA34: + adds r1, #2 + adds r2, #2 + ldrh r0, [r1] + cmp r0, r4 + bne _0813BA1E +_0813BA3E: + movs r0, #0 +_0813BA40: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813B9F8 + + thumb_func_start sub_0813BA48 +sub_0813BA48: @ 0x0813BA48 + ldr r0, _0813BA60 + ldr r0, [r0] + ldr r2, _0813BA64 + adds r1, r0, r2 + movs r2, #0 + strh r2, [r1] + movs r1, #0xa1 + lsls r1, r1, #5 + adds r0, r0, r1 + strh r2, [r0] + bx lr + .align 2, 0 +_0813BA60: .4byte gUnknown_3005AEC +_0813BA64: .4byte 0x0000141E + thumb_func_end sub_0813BA48 + + thumb_func_start sub_0813BA68 +sub_0813BA68: @ 0x0813BA68 + push {lr} + bl sub_0813BF68 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813BA8A + bl sub_0813BD20 + ldr r0, _0813BA90 + ldr r1, [r0] + ldr r0, _0813BA94 + ldr r0, [r0] + ldrh r0, [r0, #0xe] + movs r2, #0xa1 + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] +_0813BA8A: + pop {r0} + bx r0 + .align 2, 0 +_0813BA90: .4byte gUnknown_3005AEC +_0813BA94: .4byte gUnknown_3005AF0 + thumb_func_end sub_0813BA68 + + thumb_func_start sub_0813BA98 +sub_0813BA98: @ 0x0813BA98 + push {r4, lr} + ldr r4, _0813BAF4 + ldr r0, [r4] + ldr r1, _0813BAF8 + adds r0, r0, r1 + ldrh r0, [r0] + lsrs r0, r0, #7 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0813BAEE + bl sub_0813BF84 + bl sub_0813BDBC + ldr r1, [r4] + ldr r0, _0813BAFC + ldr r0, [r0] + ldrh r0, [r0, #0xe] + movs r2, #0xa1 + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] + ldr r0, _0813BB00 + bl sub_0809D040 + ldr r0, _0813BB04 + bl sub_0809D040 + ldr r0, _0813BB08 + bl sub_0809D040 + movs r0, #0xc6 + lsls r0, r0, #2 + bl sub_0809D040 + ldr r0, _0813BB0C + bl sub_0809D040 + ldr r0, _0813BB10 + movs r1, #1 + bl sub_0809CF88 +_0813BAEE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813BAF4: .4byte gUnknown_3005AEC +_0813BAF8: .4byte 0x0000141E +_0813BAFC: .4byte gUnknown_3005AF0 +_0813BB00: .4byte 0x00000315 +_0813BB04: .4byte 0x00000316 +_0813BB08: .4byte 0x00000317 +_0813BB0C: .4byte 0x000002DA +_0813BB10: .4byte 0x00004095 + thumb_func_end sub_0813BA98 + + thumb_func_start sub_0813BB14 +sub_0813BB14: @ 0x0813BB14 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0813BB60 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bne _0813BB90 + ldr r4, _0813BB64 + ldr r0, [r4] + ldr r5, _0813BB68 + adds r3, r0, r5 + ldrh r2, [r3] + movs r1, #0x7f + ands r1, r2 + ldr r0, _0813BB6C + adds r0, r6, r0 + ldrb r0, [r0] + adds r1, r1, r0 + cmp r1, #0x13 + ble _0813BB8C + bl sub_0813BCE0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bhi _0813BB74 + bl sub_0813BBAC + ldr r0, [r4] + adds r0, r0, r5 + ldrh r2, [r0] + ldr r1, _0813BB70 + ands r1, r2 + strh r1, [r0] + b _0813BB90 + .align 2, 0 +_0813BB60: .4byte 0x00004095 +_0813BB64: .4byte gUnknown_3005AEC +_0813BB68: .4byte 0x0000141E +_0813BB6C: .4byte gUnknown_8592ECC +_0813BB70: .4byte 0x0000FF80 +_0813BB74: + ldr r2, [r4] + adds r2, r2, r5 + ldrh r1, [r2] + ldr r0, _0813BB88 + ands r0, r1 + movs r1, #0x14 + orrs r0, r1 + strh r0, [r2] + b _0813BB90 + .align 2, 0 +_0813BB88: .4byte 0x0000FF80 +_0813BB8C: + adds r0, r2, r0 + strh r0, [r3] +_0813BB90: + ldr r0, _0813BBA4 + ldr r0, [r0] + ldr r1, _0813BBA8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0813BBA4: .4byte gUnknown_3005AEC +_0813BBA8: .4byte 0x0000141E + thumb_func_end sub_0813BB14 + + thumb_func_start sub_0813BBAC +sub_0813BBAC: @ 0x0813BBAC + push {r4, r5, r6, r7, lr} + sub sp, #8 + movs r3, #0 + movs r5, #0 + ldr r7, _0813BBF4 + ldr r2, _0813BBF8 + movs r6, #1 +_0813BBBA: + ldr r0, [r7] + adds r0, r0, r2 + ldrh r1, [r0] + ldr r0, _0813BBFC + adds r0, r5, r0 + ldrb r4, [r0] + asrs r1, r4 + ands r1, r6 + cmp r1, #0 + bne _0813BC00 + adds r3, r5, #0 + str r2, [sp] + str r3, [sp, #4] + bl sub_0806F050 + adds r1, r6, #0 + ands r1, r0 + ldr r2, [sp] + ldr r3, [sp, #4] + cmp r1, #0 + beq _0813BC00 + ldr r0, [r7] + adds r0, r0, r2 + adds r1, r6, #0 + lsls r1, r4 + ldrh r2, [r0] + orrs r1, r2 + strh r1, [r0] + b _0813BC22 + .align 2, 0 +_0813BBF4: .4byte gUnknown_3005AEC +_0813BBF8: .4byte 0x0000141E +_0813BBFC: .4byte gUnknown_8592ED0 +_0813BC00: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #7 + bls _0813BBBA + ldr r0, _0813BC2C + ldr r2, [r0] + ldr r0, _0813BC30 + adds r2, r2, r0 + ldr r1, _0813BC34 + adds r1, r3, r1 + movs r0, #1 + ldrb r1, [r1] + lsls r0, r1 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r2] +_0813BC22: + adds r0, r3, #0 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0813BC2C: .4byte gUnknown_3005AEC +_0813BC30: .4byte 0x0000141E +_0813BC34: .4byte gUnknown_8592ED0 + thumb_func_end sub_0813BBAC + + thumb_func_start sub_0813BC38 +sub_0813BC38: @ 0x0813BC38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sl, r0 + bl sub_0813BCE0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0813BC66 + movs r0, #0 + b _0813BCC6 +_0813BC56: + mov r1, r8 + ldr r0, [r1] + add r0, sb + lsls r4, r6 + ldrh r1, [r0] + eors r4, r1 + strh r4, [r0] + b _0813BCC4 +_0813BC66: + movs r5, #0 + ldr r2, _0813BCD4 + mov r8, r2 + ldr r0, _0813BCD8 + mov sb, r0 + movs r4, #1 +_0813BC72: + mov r1, r8 + ldr r0, [r1] + add r0, sb + ldrh r1, [r0] + ldr r7, _0813BCDC + adds r0, r5, r7 + ldrb r6, [r0] + asrs r1, r6 + ands r1, r4 + cmp r1, #0 + beq _0813BC96 + mov sl, r5 + bl sub_0806F050 + adds r1, r4, #0 + ands r1, r0 + cmp r1, #0 + bne _0813BC56 +_0813BC96: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #7 + bls _0813BC72 + ldr r0, _0813BCD4 + ldr r0, [r0] + ldr r2, _0813BCD8 + adds r4, r0, r2 + ldrh r1, [r4] + mov r2, sl + adds r0, r2, r7 + ldrb r2, [r0] + adds r0, r1, #0 + asrs r0, r2 + movs r3, #1 + ands r0, r3 + cmp r0, #0 + beq _0813BCC4 + adds r0, r3, #0 + lsls r0, r2 + eors r1, r0 + strh r1, [r4] +_0813BCC4: + mov r0, sl +_0813BCC6: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0813BCD4: .4byte gUnknown_3005AEC +_0813BCD8: .4byte 0x0000141E +_0813BCDC: .4byte gUnknown_8592ED8 + thumb_func_end sub_0813BC38 + + thumb_func_start sub_0813BCE0 +sub_0813BCE0: @ 0x0813BCE0 + push {r4, r5, lr} + movs r3, #0 + movs r2, #0 + ldr r0, _0813BD18 + ldr r0, [r0] + ldr r1, _0813BD1C + adds r0, r0, r1 + ldrh r4, [r0] + movs r5, #1 +_0813BCF2: + adds r1, r2, #0 + adds r1, #8 + adds r0, r4, #0 + asrs r0, r1 + ands r0, r5 + cmp r0, #0 + beq _0813BD06 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0813BD06: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _0813BCF2 + adds r0, r3, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0813BD18: .4byte gUnknown_3005AEC +_0813BD1C: .4byte 0x0000141E + thumb_func_end sub_0813BCE0 + + thumb_func_start sub_0813BD20 +sub_0813BD20: @ 0x0813BD20 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r2, _0813BD34 + ldr r0, [r2] + ldrh r1, [r0, #0xe] + ldr r0, _0813BD38 + cmp r1, r0 + bhi _0813BD90 + adds r6, r2, #0 + b _0813BD6A + .align 2, 0 +_0813BD34: .4byte gUnknown_3005AF0 +_0813BD38: .4byte 0x000003E6 +_0813BD3C: + ldr r0, [r6] + ldrh r1, [r0, #0xe] + ldr r4, _0813BD88 + ldr r0, [r4] + movs r2, #0xa1 + lsls r2, r2, #5 + adds r0, r0, r2 + ldrh r0, [r0] + subs r1, r1, r0 + cmp r1, #0xb + ble _0813BD90 + bl sub_0813BC38 + ldr r0, [r4] + movs r1, #0xa1 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #0xc + strh r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0813BD6A: + bl sub_0813BCE0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bhi _0813BD8C + ldr r0, _0813BD88 + ldr r1, [r0] + ldr r0, [r6] + ldrh r0, [r0, #0xe] + movs r2, #0xa1 + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] + b _0813BD90 + .align 2, 0 +_0813BD88: .4byte gUnknown_3005AEC +_0813BD8C: + cmp r5, #8 + bne _0813BD3C +_0813BD90: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813BD20 + + thumb_func_start sub_0813BD98 +sub_0813BD98: @ 0x0813BD98 + ldr r0, _0813BDB0 + ldr r0, [r0] + ldr r1, _0813BDB4 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _0813BDB8 + ldrh r1, [r1] + asrs r0, r1 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0813BDB0: .4byte gUnknown_3005AEC +_0813BDB4: .4byte 0x0000141E +_0813BDB8: .4byte gUnknown_2037280 + thumb_func_end sub_0813BD98 + + thumb_func_start sub_0813BDBC +sub_0813BDBC: @ 0x0813BDBC + ldr r0, _0813BDE4 + ldr r2, [r0] + ldr r0, _0813BDE8 + adds r2, r2, r0 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + orrs r0, r1 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + orrs r0, r1 + movs r3, #0x80 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_0813BDE4: .4byte gUnknown_3005AEC +_0813BDE8: .4byte 0x0000141E + thumb_func_end sub_0813BDBC + + thumb_func_start sub_0813BDEC +sub_0813BDEC: @ 0x0813BDEC + push {lr} + movs r3, #0 + movs r2, #0 + ldr r0, _0813BE08 + ldrh r0, [r0] + subs r0, #8 + cmp r0, #7 + bhi _0813BE4C + lsls r0, r0, #2 + ldr r1, _0813BE0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813BE08: .4byte gUnknown_2037280 +_0813BE0C: .4byte _0813BE10 +_0813BE10: @ jump table + .4byte _0813BE4C @ case 0 + .4byte _0813BE4C @ case 1 + .4byte _0813BE30 @ case 2 + .4byte _0813BE36 @ case 3 + .4byte _0813BE3C @ case 4 + .4byte _0813BE42 @ case 5 + .4byte _0813BE48 @ case 6 + .4byte _0813BE4C @ case 7 +_0813BE30: + movs r3, #0 + movs r2, #3 + b _0813BE4C +_0813BE36: + movs r3, #0 + movs r2, #1 + b _0813BE4C +_0813BE3C: + movs r3, #1 + movs r2, #0 + b _0813BE4C +_0813BE42: + movs r3, #0 + movs r2, #4 + b _0813BE4C +_0813BE48: + movs r3, #1 + movs r2, #5 +_0813BE4C: + ldr r0, _0813BE60 + ldr r0, [r0] + ldr r1, _0813BE64 + adds r0, r0, r1 + adds r1, r3, #0 + bl sub_0813BE68 + pop {r0} + bx r0 + .align 2, 0 +_0813BE60: .4byte gUnknown_3005AEC +_0813BE64: .4byte 0x00003150 + thumb_func_end sub_0813BDEC + + thumb_func_start sub_0813BE68 +sub_0813BE68: @ 0x0813BE68 + push {r4, lr} + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsrs r1, r1, #0x14 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0xff + bne _0813BF1C + cmp r2, #5 + bhi _0813BF08 + lsls r0, r2, #2 + ldr r1, _0813BE88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813BE88: .4byte _0813BE8C +_0813BE8C: @ jump table + .4byte _0813BF08 @ case 0 + .4byte _0813BEA4 @ case 1 + .4byte _0813BEB8 @ case 2 + .4byte _0813BECC @ case 3 + .4byte _0813BEE0 @ case 4 + .4byte _0813BEF4 @ case 5 +_0813BEA4: + ldr r0, _0813BEB0 + ldr r1, _0813BEB4 + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BEB0: .4byte gUnknown_2021C40 +_0813BEB4: .4byte gUnknown_85CA9E8 +_0813BEB8: + ldr r0, _0813BEC4 + ldr r1, _0813BEC8 + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BEC4: .4byte gUnknown_2021C40 +_0813BEC8: .4byte gUnknown_85CA9EC +_0813BECC: + ldr r0, _0813BED8 + ldr r1, _0813BEDC + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BED8: .4byte gUnknown_2021C40 +_0813BEDC: .4byte gUnknown_85CA9F0 +_0813BEE0: + ldr r0, _0813BEEC + ldr r1, _0813BEF0 + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BEEC: .4byte gUnknown_2021C40 +_0813BEF0: .4byte gUnknown_85CA9F3 +_0813BEF4: + ldr r0, _0813BF00 + ldr r1, _0813BF04 + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BF00: .4byte gUnknown_2021C40 +_0813BF04: .4byte gUnknown_85CA9F7 +_0813BF08: + ldr r0, _0813BF14 + ldr r1, _0813BF18 + bl sub_080088B8 + b _0813BF2A + .align 2, 0 +_0813BF14: .4byte gUnknown_2021C40 +_0813BF18: .4byte gUnknown_85CA9E4 +_0813BF1C: + ldr r4, _0813BF30 + adds r0, r4, #0 + movs r2, #7 + bl sub_080088F0 + movs r0, #0xff + strb r0, [r4, #7] +_0813BF2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813BF30: .4byte gUnknown_2021C40 + thumb_func_end sub_0813BE68 + + thumb_func_start sub_0813BF34 +sub_0813BF34: @ 0x0813BF34 + push {lr} + ldr r0, _0813BF58 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + bne _0813BF64 + bl sub_0813BA68 + ldr r0, _0813BF5C + ldrb r0, [r0] + cmp r0, #1 + bne _0813BF60 + bl sub_0813BBAC + b _0813BF64 + .align 2, 0 +_0813BF58: .4byte 0x00004095 +_0813BF5C: .4byte gUnknown_2023FDE +_0813BF60: + bl sub_0813BC38 +_0813BF64: + pop {r0} + bx r0 + thumb_func_end sub_0813BF34 + + thumb_func_start sub_0813BF68 +sub_0813BF68: @ 0x0813BF68 + ldr r0, _0813BF7C + ldr r0, [r0] + ldr r1, _0813BF80 + adds r0, r0, r1 + ldrh r0, [r0] + lsrs r0, r0, #7 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0813BF7C: .4byte gUnknown_3005AEC +_0813BF80: .4byte 0x0000141E + thumb_func_end sub_0813BF68 + + thumb_func_start sub_0813BF84 +sub_0813BF84: @ 0x0813BF84 + ldr r0, _0813BF98 + ldr r1, [r0] + ldr r0, _0813BF9C + adds r1, r1, r0 + ldrh r2, [r1] + movs r0, #0x80 + orrs r0, r2 + strh r0, [r1] + bx lr + .align 2, 0 +_0813BF98: .4byte gUnknown_3005AEC +_0813BF9C: .4byte 0x0000141E + thumb_func_end sub_0813BF84 + + thumb_func_start sub_0813BFA0 +sub_0813BFA0: @ 0x0813BFA0 + push {lr} + ldr r0, _0813BFB4 + ldrb r0, [r0] + bl sub_0813BB14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0813BFB4: .4byte gUnknown_2037280 + thumb_func_end sub_0813BFA0 + + thumb_func_start sub_0813BFB8 +sub_0813BFB8: @ 0x0813BFB8 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r2, _0813BFE4 + mov r0, sp + adds r1, r4, #0 + bl CpuSet + movs r0, #0xff + strb r0, [r4] + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813BFE4: .4byte 0x01000008 + thumb_func_end sub_0813BFB8 + + thumb_func_start sub_0813BFE8 +sub_0813BFE8: @ 0x0813BFE8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #4 +_0813BFEE: + adds r0, r4, #0 + bl sub_0813BFB8 + adds r4, #0x10 + subs r5, #1 + cmp r5, #0 + bge _0813BFEE + movs r0, #0x17 + movs r1, #0 + bl sub_080841B8 + movs r0, #0x18 + movs r1, #0 + bl sub_080841B8 + movs r0, #0x19 + movs r1, #0 + bl sub_080841B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813BFE8 + + thumb_func_start sub_0813C01C +sub_0813C01C: @ 0x0813C01C + adds r1, r0, #0 + ldrh r0, [r1, #0xa] + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + ldrh r1, [r1, #0xe] + adds r0, r0, r1 + bx lr + .align 2, 0 + thumb_func_end sub_0813C01C + + thumb_func_start sub_0813C02C +sub_0813C02C: @ 0x0813C02C + push {r4, r5, r6, r7, lr} + adds r7, r1, #0 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + movs r5, #0 + adds r4, r0, #0 +_0813C038: + adds r0, r4, #0 + adds r1, r7, #0 + movs r2, #7 + bl sub_08008980 + cmp r0, #0 + bne _0813C050 + ldrh r0, [r4, #8] + cmp r0, r6 + bne _0813C050 + adds r0, r5, #0 + b _0813C05A +_0813C050: + adds r4, #0x10 + adds r5, #1 + cmp r5, #4 + ble _0813C038 + movs r0, #5 +_0813C05A: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0813C02C + + thumb_func_start sub_0813C060 +sub_0813C060: @ 0x0813C060 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov r8, r0 + movs r0, #4 +_0813C06E: + subs r2, r0, #1 + mov sb, r2 + cmp r2, #0 + blt _0813C0C8 + lsls r0, r0, #4 + mov r1, r8 + adds r6, r1, r0 + lsls r0, r2, #4 + adds r5, r0, r1 +_0813C080: + adds r0, r6, #0 + str r2, [sp, #0x10] + bl sub_0813C01C + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_0813C01C + ldr r2, [sp, #0x10] + cmp r4, r0 + ble _0813C0BA + 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] +_0813C0BA: + subs r5, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + mov r1, sb + cmp r1, #0 + bge _0813C080 +_0813C0C8: + adds r0, r2, #0 + cmp r0, #0 + bgt _0813C06E + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0813C060 + + thumb_func_start sub_0813C0DC +sub_0813C0DC: @ 0x0813C0DC + push {lr} + adds r2, r0, #0 + cmp r1, #2 + beq _0813C10C + cmp r1, #2 + bgt _0813C0EE + cmp r1, #1 + beq _0813C0F4 + b _0813C136 +_0813C0EE: + cmp r1, #3 + beq _0813C124 + b _0813C136 +_0813C0F4: + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0813C108 + cmp r0, r1 + bls _0813C136 + strh r1, [r2, #0xa] + b _0813C136 + .align 2, 0 +_0813C108: .4byte 0x0000270F +_0813C10C: + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0813C120 + cmp r0, r1 + bls _0813C136 + strh r1, [r2, #0xc] + b _0813C136 + .align 2, 0 +_0813C120: .4byte 0x0000270F +_0813C124: + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0813C13C + cmp r0, r1 + bls _0813C136 + strh r1, [r2, #0xe] +_0813C136: + pop {r0} + bx r0 + .align 2, 0 +_0813C13C: .4byte 0x0000270F + thumb_func_end sub_0813C0DC + + thumb_func_start sub_0813C140 +sub_0813C140: @ 0x0813C140 + push {r4, lr} + cmp r0, #2 + beq _0813C15A + cmp r0, #2 + bgt _0813C150 + cmp r0, #1 + beq _0813C156 + b _0813C172 +_0813C150: + cmp r0, #3 + beq _0813C15E + b _0813C172 +_0813C156: + movs r4, #0x17 + b _0813C160 +_0813C15A: + movs r4, #0x18 + b _0813C160 +_0813C15E: + movs r4, #0x19 +_0813C160: + adds r0, r4, #0 + bl sub_08084180 + ldr r1, _0813C178 + cmp r0, r1 + bhi _0813C172 + adds r0, r4, #0 + bl sub_0808414C +_0813C172: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C178: .4byte 0x0000270E + thumb_func_end sub_0813C140 + + thumb_func_start sub_0813C17C +sub_0813C17C: @ 0x0813C17C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + mov r8, r1 + mov sl, r3 + ldr r0, [sp, #0x20] + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, sl + bl sub_0813C140 + adds r0, r6, #0 + bl sub_0813C060 + adds r0, r6, #0 + mov r1, r8 + adds r2, r7, #0 + bl sub_0813C02C + adds r5, r0, #0 + cmp r5, #5 + bne _0813C1E0 + movs r5, #4 + adds r4, r6, #0 + adds r4, #0x40 + adds r0, r4, #0 + bl sub_0813BFB8 + adds r0, r4, #0 + mov r1, r8 + movs r2, #7 + bl sub_080088F0 + strh r7, [r4, #8] + adds r2, r6, #0 + adds r2, #0x54 + ldr r1, _0813C200 + mov r3, sb + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x1a] + strb r0, [r2] +_0813C1E0: + lsls r0, r5, #4 + adds r0, r6, r0 + mov r1, sl + bl sub_0813C0DC + adds r0, r6, #0 + bl sub_0813C060 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C200: .4byte gUnknown_20226A0 + thumb_func_end sub_0813C17C + + thumb_func_start sub_0813C204 +sub_0813C204: @ 0x0813C204 + push {lr} + ldr r0, _0813C218 + ldr r0, [r0] + ldr r1, _0813C21C + adds r0, r0, r1 + bl sub_0813BFE8 + pop {r0} + bx r0 + .align 2, 0 +_0813C218: .4byte gUnknown_3005AEC +_0813C21C: .4byte 0x00003150 + thumb_func_end sub_0813C204 + + thumb_func_start sub_0813C220 +sub_0813C220: @ 0x0813C220 + push {lr} + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _0813C240 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0813C244 + cmp r0, r2 + bls _0813C23C + strh r2, [r1] +_0813C23C: + pop {r0} + bx r0 + .align 2, 0 +_0813C240: .4byte gUnknown_203980C +_0813C244: .4byte 0x0000270F + thumb_func_end sub_0813C220 + + thumb_func_start sub_0813C248 +sub_0813C248: @ 0x0813C248 + push {lr} + movs r1, #0x64 + muls r1, r0, r1 + ldr r0, _0813C268 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0813C26C + cmp r0, r2 + bls _0813C264 + strh r2, [r1] +_0813C264: + pop {r0} + bx r0 + .align 2, 0 +_0813C268: .4byte gUnknown_203980E +_0813C26C: .4byte 0x0000270F + thumb_func_end sub_0813C248 + + thumb_func_start sub_0813C270 +sub_0813C270: @ 0x0813C270 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0813C284 + ldrb r0, [r0] + cmp r0, #1 + beq _0813C288 + cmp r0, #2 + beq _0813C296 + b _0813C2A4 + .align 2, 0 +_0813C284: .4byte gUnknown_2023FDE +_0813C288: + eors r0, r4 + bl sub_0813C220 + adds r0, r4, #0 + bl sub_0813C248 + b _0813C2A4 +_0813C296: + movs r0, #1 + eors r0, r4 + bl sub_0813C248 + adds r0, r4, #0 + bl sub_0813C220 +_0813C2A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C270 + + thumb_func_start sub_0813C2AC +sub_0813C2AC: @ 0x0813C2AC + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_08017AC0 + cmp r0, #1 + beq _0813C2E6 + adds r0, r4, #0 + bl sub_0813C270 + ldr r0, _0813C2F0 + ldr r0, [r0] + ldr r1, _0813C2F4 + adds r0, r0, r1 + movs r1, #0x64 + adds r3, r4, #0 + muls r3, r1, r3 + ldr r2, _0813C2F8 + adds r1, r3, r2 + subs r2, #0x30 + adds r3, r3, r2 + ldrh r2, [r3, #0xe] + ldr r3, _0813C2FC + ldrb r3, [r3] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + bl sub_0813C17C +_0813C2E6: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C2F0: .4byte gUnknown_3005AEC +_0813C2F4: .4byte 0x00003150 +_0813C2F8: .4byte gUnknown_2039828 +_0813C2FC: .4byte gUnknown_2023FDE + thumb_func_end sub_0813C2AC + + thumb_func_start sub_0813C300 +sub_0813C300: @ 0x0813C300 + push {r4, lr} + sub sp, #0xc + ldr r4, _0813C36C + movs r0, #0x17 + bl sub_08084180 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _0813C370 + movs r0, #0x18 + bl sub_08084180 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _0813C374 + movs r0, #0x19 + bl sub_08084180 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _0813C378 + ldr r1, _0813C37C + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _0813C380 + ldrb r0, [r0] + movs r1, #0x12 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C36C: .4byte gUnknown_2021C40 +_0813C370: .4byte gUnknown_2021C54 +_0813C374: .4byte gUnknown_2021C68 +_0813C378: .4byte gUnknown_2021C7C +_0813C37C: .4byte gUnknown_85937EF +_0813C380: .4byte gUnknown_203A840 + thumb_func_end sub_0813C300 + + thumb_func_start sub_0813C384 +sub_0813C384: @ 0x0813C384 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldrh r0, [r6, #0xa] + cmp r0, #0 + bne _0813C408 + ldr r7, [r6, #0xc] + cmp r7, #0 + bne _0813C408 + ldr r0, _0813C3FC + mov r8, r0 + ldrb r0, [r0] + ldr r2, _0813C400 + lsls r4, r4, #3 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + mov r1, r8 + ldrb r0, [r1] + ldr r5, _0813C404 + str r4, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x50 + bl sub_0800449C + mov r1, r8 + ldrb r0, [r1] + str r4, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x78 + bl sub_0800449C + mov r1, r8 + ldrb r0, [r1] + str r4, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0xa8 + bl sub_0800449C + b _0813C49A + .align 2, 0 +_0813C3FC: .4byte gUnknown_203A840 +_0813C400: .4byte gUnknown_8593811 +_0813C404: .4byte gUnknown_8593817 +_0813C408: + ldr r0, _0813C4A8 + movs r1, #8 + bl sub_08008E68 + ldr r0, _0813C4A8 + adds r1, r6, #0 + movs r2, #7 + bl sub_080088F0 + ldr r0, _0813C4AC + mov r8, r0 + ldrb r0, [r0] + lsls r4, r4, #3 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r5, #0 + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _0813C4A8 + movs r3, #8 + bl sub_0800449C + ldrh r1, [r6, #0xa] + ldr r0, _0813C4A8 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + mov r1, r8 + ldrb r0, [r1] + str r4, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _0813C4A8 + movs r3, #0x50 + bl sub_0800449C + ldrh r1, [r6, #0xc] + ldr r0, _0813C4A8 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + mov r1, r8 + ldrb r0, [r1] + str r4, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _0813C4A8 + movs r3, #0x78 + bl sub_0800449C + ldrh r1, [r6, #0xe] + ldr r0, _0813C4A8 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + mov r1, r8 + ldrb r0, [r1] + str r4, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _0813C4A8 + movs r3, #0xa8 + bl sub_0800449C +_0813C49A: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C4A8: .4byte gUnknown_2021C40 +_0813C4AC: .4byte gUnknown_203A840 + thumb_func_end sub_0813C384 + + thumb_func_start sub_0813C4B0 +sub_0813C4B0: @ 0x0813C4B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r6, _0813C560 + ldr r0, _0813C564 + bl sub_08003250 + strb r0, [r6] + ldrb r0, [r6] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r6] + movs r1, #0x11 + bl sub_08003B18 + ldr r5, _0813C568 + ldr r1, _0813C56C + adds r0, r5, #0 + bl sub_08008BCC + ldrb r0, [r6] + movs r1, #2 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x30 + bl sub_0800449C + ldr r0, _0813C570 + mov r8, r0 + ldr r0, [r0] + ldr r1, _0813C574 + mov sb, r1 + add r0, sb + bl sub_0813C300 + ldr r1, _0813C578 + adds r0, r5, #0 + bl sub_08008BCC + ldrb r0, [r6] + movs r1, #0x2a + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x50 + bl sub_0800449C + mov r7, r8 + movs r6, #0xe0 + lsls r6, r6, #0x13 + mov r5, sb + movs r4, #4 +_0813C52A: + ldr r0, [r7] + adds r0, r0, r5 + lsrs r1, r6, #0x18 + bl sub_0813C384 + movs r0, #0x80 + lsls r0, r0, #0x12 + adds r6, r6, r0 + adds r5, #0x10 + subs r4, #1 + cmp r4, #0 + bge _0813C52A + ldr r4, _0813C560 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C560: .4byte gUnknown_203A840 +_0813C564: .4byte gUnknown_85937D8 +_0813C568: .4byte gUnknown_2021C7C +_0813C56C: .4byte gUnknown_85937E0 +_0813C570: .4byte gUnknown_3005AEC +_0813C574: .4byte 0x00003150 +_0813C578: .4byte gUnknown_8593801 + thumb_func_end sub_0813C4B0 + + thumb_func_start sub_0813C57C +sub_0813C57C: @ 0x0813C57C + push {r4, lr} + ldr r4, _0813C594 + ldrb r0, [r4] + movs r1, #0 + bl sub_08197060 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C594: .4byte gUnknown_203A840 + thumb_func_end sub_0813C57C + + thumb_func_start sub_0813C598 +sub_0813C598: @ 0x0813C598 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0813C5BC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813C5B8 + ldr r0, _0813C5C0 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0813C5C4 + str r0, [r1] +_0813C5B8: + pop {r0} + bx r0 + .align 2, 0 +_0813C5BC: .4byte gUnknown_2037C74 +_0813C5C0: .4byte gUnknown_3005B60 +_0813C5C4: .4byte sub_0813C5C8 + thumb_func_end sub_0813C598 + + thumb_func_start sub_0813C5C8 +sub_0813C5C8: @ 0x0813C5C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0813C5FC + adds r4, r1, r0 + ldr r0, _0813C600 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0813C5EC + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0813C5F6 +_0813C5EC: + movs r0, #5 + bl sub_080A306C + ldr r0, _0813C604 + str r0, [r4] +_0813C5F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C5FC: .4byte gUnknown_3005B60 +_0813C600: .4byte gUnknown_3002360 +_0813C604: .4byte sub_0813C608 + thumb_func_end sub_0813C5C8 + + thumb_func_start sub_0813C608 +sub_0813C608: @ 0x0813C608 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0813C638 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0813C63C + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C638: .4byte gUnknown_3005B60 +_0813C63C: .4byte sub_0813C640 + thumb_func_end sub_0813C608 + + thumb_func_start sub_0813C640 +sub_0813C640: @ 0x0813C640 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0813C678 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813C670 + ldr r0, _0813C67C + bl sub_08000540 + ldr r0, _0813C680 + ldr r0, [r0] + bl sub_08000BF0 + movs r0, #0 + bl sub_0813C684 + bl sub_080034D4 + adds r0, r4, #0 + bl sub_080A8964 +_0813C670: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C678: .4byte gUnknown_2037C74 +_0813C67C: .4byte sub_08085B34 +_0813C680: .4byte gUnknown_203A844 + thumb_func_end sub_0813C640 + + thumb_func_start sub_0813C684 +sub_0813C684: @ 0x0813C684 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_08003774 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C684 + + thumb_func_start sub_0813C6B0 +sub_0813C6B0: @ 0x0813C6B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #4 + mov r8, r0 + mov r2, sp + movs r6, #0 + ldr r1, _0813C7E0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0813C7E4 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0813C6D6: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _0813C6D6 + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _0813C7E0 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813C7E0: .4byte 0x040000D4 +_0813C7E4: .4byte 0x81000800 + thumb_func_end sub_0813C6B0 + + thumb_func_start sub_0813C7E8 +sub_0813C7E8: @ 0x0813C7E8 + push {lr} + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_08008424 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C7E8 + + thumb_func_start sub_0813C804 +sub_0813C804: @ 0x0813C804 + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C804 + + thumb_func_start sub_0813C85C +sub_0813C85C: @ 0x0813C85C + push {lr} + movs r1, #0x94 + lsls r1, r1, #4 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + thumb_func_end sub_0813C85C + + thumb_func_start sub_0813C86C +sub_0813C86C: @ 0x0813C86C + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0813C8A8 + adds r0, r4, #0 + movs r2, #0xc0 + movs r3, #0 + bl sub_0800195C + ldr r1, _0813C8AC + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080022B0 + ldr r0, _0813C8B0 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813C8A8: .4byte gUnknown_8592EE0 +_0813C8AC: .4byte gUnknown_8592FC0 +_0813C8B0: .4byte gUnknown_8592FA0 + thumb_func_end sub_0813C86C + + thumb_func_start sub_0813C8B4 +sub_0813C8B4: @ 0x0813C8B4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C8B4 + + thumb_func_start sub_0813C8C8 +sub_0813C8C8: @ 0x0813C8C8 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813C8C8 + + thumb_func_start sub_0813C8E0 +sub_0813C8E0: @ 0x0813C8E0 + push {lr} + movs r0, #0 + bl sub_080006F0 + ldr r0, _0813C8F4 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0813C8F4: .4byte sub_0813C8F8 + thumb_func_end sub_0813C8E0 + + thumb_func_start sub_0813C8F8 +sub_0813C8F8: @ 0x0813C8F8 + push {r4, lr} + sub sp, #4 + ldr r0, _0813C918 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #7 + bls _0813C90C + b _0813CA18 +_0813C90C: + lsls r0, r0, #2 + ldr r1, _0813C91C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813C918: .4byte gUnknown_3002360 +_0813C91C: .4byte _0813C920 +_0813C920: @ jump table + .4byte _0813C940 @ case 0 + .4byte _0813C94C @ case 1 + .4byte _0813C952 @ case 2 + .4byte _0813C984 @ case 3 + .4byte _0813C99A @ case 4 + .4byte _0813C9BA @ case 5 + .4byte _0813C9CC @ case 6 + .4byte _0813C9F0 @ case 7 +_0813C940: + movs r0, #0 + bl sub_080006F0 + bl sub_0813C6B0 + b _0813C9DC +_0813C94C: + bl sub_0813C7E8 + b _0813C9DC +_0813C952: + ldr r4, _0813C97C + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BDC + str r0, [r4] + movs r0, #0 + bl sub_080017D4 + ldr r1, _0813C980 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + ldr r1, [r4] + movs r0, #3 + bl sub_0800212C + bl sub_0813C804 + b _0813C9DC + .align 2, 0 +_0813C97C: .4byte gUnknown_203A844 +_0813C980: .4byte gUnknown_85937C0 +_0813C984: + movs r0, #3 + bl sub_0813C86C + movs r0, #0 + bl sub_080985A0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + b _0813C9DC +_0813C99A: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813CA18 + movs r0, #0 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #3 + bl sub_08002248 + b _0813C9DC +_0813C9BA: + ldr r0, _0813C9C8 + bl sub_08003090 + bl sub_08004480 + b _0813C9DC + .align 2, 0 +_0813C9C8: .4byte gUnknown_85937C8 +_0813C9CC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_0813C9DC: + ldr r1, _0813C9EC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0813CA18 + .align 2, 0 +_0813C9EC: .4byte gUnknown_3002360 +_0813C9F0: + bl sub_0813C85C + ldr r0, _0813CA20 + bl sub_080006F0 + bl sub_081D53CC + ldr r0, _0813CA24 + movs r1, #8 + bl sub_080A8878 + ldr r0, _0813CA28 + bl sub_08000540 + ldr r0, _0813CA2C + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_0813CA18: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813CA20: .4byte sub_0813C8B4 +_0813CA24: .4byte sub_0813C598 +_0813CA28: .4byte sub_0813C8C8 +_0813CA2C: .4byte gUnknown_3002360 + thumb_func_end sub_0813C8F8 + + thumb_func_start sub_0813CA30 +sub_0813CA30: @ 0x0813CA30 + ldr r0, _0813CA40 + ldr r0, [r0] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_0813CA40: .4byte gUnknown_203A848 + thumb_func_end sub_0813CA30 + + thumb_func_start sub_0813CA44 +sub_0813CA44: @ 0x0813CA44 + push {lr} + sub sp, #4 + ldr r0, _0813CA64 + ldr r0, [r0] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #4 + bhi _0813CAFC + lsls r0, r0, #2 + ldr r1, _0813CA68 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813CA64: .4byte gUnknown_203A848 +_0813CA68: .4byte _0813CA6C +_0813CA6C: @ jump table + .4byte _0813CA80 @ case 0 + .4byte _0813CA90 @ case 1 + .4byte _0813CA96 @ case 2 + .4byte _0813CAC8 @ case 3 + .4byte _0813CAEC @ case 4 +_0813CA80: + ldr r0, _0813CA8C + ldr r0, [r0] + ldrh r0, [r0, #0xe] + bl sub_0813CB1C + b _0813CB00 + .align 2, 0 +_0813CA8C: .4byte gUnknown_203A848 +_0813CA90: + bl sub_0813CEE8 + b _0813CB00 +_0813CA96: + ldr r1, _0813CAC0 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _0813CAC4 + ldr r1, [r0] + movs r0, #0x8b + lsls r0, r0, #1 + adds r1, r1, r0 + movs r2, #0xa0 + lsls r2, r2, #3 + movs r0, #2 + movs r3, #0 + bl sub_08001A14 + b _0813CB00 + .align 2, 0 +_0813CAC0: .4byte gUnknown_859383C +_0813CAC4: .4byte gUnknown_203A848 +_0813CAC8: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813CB10 + ldr r0, _0813CAE0 + ldr r1, _0813CAE4 + ldr r2, _0813CAE8 + bl CpuSet + b _0813CB00 + .align 2, 0 +_0813CAE0: .4byte gUnknown_859381C +_0813CAE4: .4byte gUnknown_20374F4 +_0813CAE8: .4byte 0x04000008 +_0813CAEC: + ldr r1, _0813CAF8 + movs r0, #2 + movs r2, #0 + bl sub_08001E94 + b _0813CB00 + .align 2, 0 +_0813CAF8: .4byte 0xFFFFF800 +_0813CAFC: + movs r0, #0 + b _0813CB12 +_0813CB00: + ldr r0, _0813CB18 + ldr r1, [r0] + movs r0, #0x8a + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_0813CB10: + movs r0, #1 +_0813CB12: + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_0813CB18: .4byte gUnknown_203A848 + thumb_func_end sub_0813CA44 + + thumb_func_start sub_0813CB1C +sub_0813CB1C: @ 0x0813CB1C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r5, _0813CBC4 + ldr r0, [r5] + ldr r1, _0813CBC8 + adds r0, r0, r1 + movs r4, #0 + strh r4, [r0] + ldr r0, _0813CBCC + bl sub_0809CF6C + ldr r1, [r5] + ldr r2, _0813CBD0 + adds r1, r1, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bls _0813CB4C + strh r4, [r1] +_0813CB4C: + ldr r0, _0813CBD4 + ldr r0, [r0] + ldr r3, _0813CBD8 + adds r0, r0, r3 + ldrh r1, [r0, #8] + cmp r7, r1 + bne _0813CB5C + b _0813CC94 +_0813CB5C: + ldr r1, [r5] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r1, r2 + strh r4, [r0] + movs r3, #0x89 + lsls r3, r3, #1 + adds r0, r1, r3 + strh r4, [r0] + movs r6, #0 + ldr r1, _0813CBDC +_0813CB72: + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r7 + bne _0813CB7E + b _0813CCD4 +_0813CB7E: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _0813CB72 + movs r6, #0 + ldr r4, _0813CBE0 + ldrh r0, [r4] + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _0813CC20 + mov r8, r4 + adds r5, r4, #4 + mov sb, r1 +_0813CB9C: + lsls r0, r6, #1 + adds r1, r0, r6 + lsls r2, r1, #1 + mov r3, r8 + adds r1, r2, r3 + adds r3, r0, #0 + ldrh r1, [r1] + cmp r7, r1 + bne _0813CC0A + adds r0, r4, #2 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, #0x18 + beq _0813CBF6 + cmp r0, #0x18 + bgt _0813CBE4 + cmp r0, #0 + beq _0813CBEA + b _0813CC0A + .align 2, 0 +_0813CBC4: .4byte gUnknown_203A848 +_0813CBC8: .4byte 0x000006E2 +_0813CBCC: .4byte 0x0000403E +_0813CBD0: .4byte 0x000006E4 +_0813CBD4: .4byte gUnknown_3005AEC +_0813CBD8: .4byte 0x000031DC +_0813CBDC: .4byte gUnknown_8593970 +_0813CBE0: .4byte gUnknown_8593978 +_0813CBE4: + cmp r0, #0x1a + beq _0813CBF6 + b _0813CC0A +_0813CBEA: + adds r0, r2, r5 + ldrh r1, [r0] + movs r0, #0 + bl sub_0813CCE0 + b _0813CC0A +_0813CBF6: + adds r1, r3, r6 + lsls r1, r1, #1 + mov r0, r8 + adds r0, #2 + adds r0, r1, r0 + ldrh r0, [r0] + adds r1, r1, r5 + ldrh r1, [r1] + bl sub_0813CD40 +_0813CC0A: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r4, _0813CC50 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, sb + bne _0813CB9C +_0813CC20: + movs r6, #0 + ldr r1, _0813CC54 + ldrb r0, [r1] + cmp r0, #0xff + beq _0813CCD4 +_0813CC2A: + lsls r4, r6, #2 + adds r0, r4, r6 + lsls r0, r0, #2 + adds r5, r0, r1 + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_0813CE24 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813CC78 + ldrb r0, [r5] + cmp r0, #0x18 + beq _0813CC68 + cmp r0, #0x18 + bgt _0813CC58 + cmp r0, #0 + beq _0813CC5E + b _0813CC78 + .align 2, 0 +_0813CC50: .4byte gUnknown_8593978 +_0813CC54: .4byte gUnknown_852D9F4 +_0813CC58: + cmp r0, #0x1a + beq _0813CC68 + b _0813CC78 +_0813CC5E: + ldrb r1, [r5, #1] + movs r0, #0 + bl sub_0813CCE0 + b _0813CC78 +_0813CC68: + ldr r0, _0813CC90 + adds r1, r4, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_0813CD40 +_0813CC78: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r1, _0813CC90 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0813CC2A + b _0813CCD4 + .align 2, 0 +_0813CC90: .4byte gUnknown_852D9F4 +_0813CC94: + ldr r2, [r5] + movs r3, #0x89 + lsls r3, r3, #1 + adds r1, r2, r3 + strh r4, [r1] + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _0813CCCC + adds r0, r2, #0 + adds r0, #0x10 + adds r1, r2, #0 + adds r1, #0x11 + bl sub_08161E78 + ldr r1, [r5] + ldrb r0, [r1, #0x10] + ldrb r1, [r1, #0x11] + bl sub_080843F8 + ldr r1, [r5] + ldrb r0, [r0, #0x14] + strh r0, [r1, #0x12] + movs r0, #0x88 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1] + b _0813CCD4 +_0813CCCC: + movs r3, #0x88 + lsls r3, r3, #1 + adds r0, r2, r3 + strh r1, [r0] +_0813CCD4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0813CB1C + + thumb_func_start sub_0813CCE0 +sub_0813CCE0: @ 0x0813CCE0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + ldr r4, _0813CD3C + ldr r2, [r4] + movs r0, #0x88 + lsls r0, r0, #1 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0x3f + bhi _0813CD34 + lsls r0, r0, #2 + adds r0, r2, r0 + strb r5, [r0, #0x10] + ldr r1, [r4] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + strb r3, [r1, #0x11] + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + bl sub_08123FA8 + ldr r2, [r4] + movs r1, #0x88 + lsls r1, r1, #1 + adds r3, r2, r1 + ldrh r1, [r3] + lsls r1, r1, #2 + adds r2, r2, r1 + strh r0, [r2, #0x12] + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] +_0813CD34: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813CD3C: .4byte gUnknown_203A848 + thumb_func_end sub_0813CCE0 + + thumb_func_start sub_0813CD40 +sub_0813CD40: @ 0x0813CD40 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _0813CE04 + ldr r0, [r0] + movs r3, #0x89 + lsls r3, r3, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, #0x1f + bhi _0813CDFE + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_0813CE10 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xd4 + bhi _0813CDFE + movs r3, #0 + ldr r0, _0813CE08 +_0813CD72: + ldrh r4, [r0] + cmp r5, r4 + beq _0813CDFE + adds r0, #2 + adds r3, #1 + cmp r3, #2 + bls _0813CD72 + ldr r1, _0813CE0C + ldrh r0, [r1] + cmp r0, #0xd5 + beq _0813CDAE + adds r4, r1, #0 + adds r7, r4, #0 + movs r6, #0 +_0813CD8E: + ldrh r0, [r4] + cmp r5, r0 + bne _0813CDA4 + adds r0, r7, #2 + adds r0, r6, r0 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813CDFE +_0813CDA4: + adds r4, #4 + adds r6, #4 + ldrh r0, [r4] + cmp r0, #0xd5 + bne _0813CD8E +_0813CDAE: + movs r3, #0 + ldr r0, _0813CE04 + ldr r2, [r0] + movs r4, #0x89 + lsls r4, r4, #1 + adds r1, r2, r4 + ldrh r4, [r1] + adds r1, r0, #0 + cmp r3, r4 + bge _0813CDDE + movs r6, #0xc4 + lsls r6, r6, #3 + adds r0, r2, r6 + ldrh r0, [r0] + cmp r0, r5 + beq _0813CDDE + adds r2, r2, r6 +_0813CDD0: + adds r2, #2 + adds r3, #1 + cmp r3, r4 + bge _0813CDDE + ldrh r0, [r2] + cmp r0, r5 + bne _0813CDD0 +_0813CDDE: + ldr r1, [r1] + movs r0, #0x89 + lsls r0, r0, #1 + adds r2, r1, r0 + ldrh r4, [r2] + cmp r3, r4 + bne _0813CDFE + lsls r0, r3, #1 + movs r6, #0xc4 + lsls r6, r6, #3 + adds r1, r1, r6 + adds r1, r1, r0 + strh r5, [r1] + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] +_0813CDFE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813CE04: .4byte gUnknown_203A848 +_0813CE08: .4byte gUnknown_8593972 +_0813CE0C: .4byte gUnknown_8593984 + thumb_func_end sub_0813CD40 + + thumb_func_start sub_0813CE10 +sub_0813CE10: @ 0x0813CE10 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + pop {r1} + bx r1 + thumb_func_end sub_0813CE10 + + thumb_func_start sub_0813CE24 +sub_0813CE24: @ 0x0813CE24 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl sub_0813CE10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xd2 + bne _0813CE58 + ldr r0, _0813CE9C + ldr r2, [r0] + ldr r0, _0813CEA0 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrh r1, [r1] + ldr r0, _0813CEA4 + adds r2, r2, r0 + ldrh r0, [r2] + adds r0, #1 + cmp r1, r0 + bne _0813CE98 +_0813CE58: + ldr r0, [r4, #4] + adds r1, r5, #0 + movs r2, #0xc + bl sub_0813CEB0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813CEA8 + ldr r0, [r4, #8] + adds r1, r5, #0 + movs r2, #5 + bl sub_0813CEB0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813CEA8 + ldr r0, [r4, #0x10] + adds r1, r5, #0 + movs r2, #0xc + bl sub_0813CEB0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813CEA8 + ldr r0, [r4, #0xc] + adds r1, r5, #0 + movs r2, #5 + bl sub_0813CEB0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813CEA8 +_0813CE98: + movs r0, #0 + b _0813CEAA + .align 2, 0 +_0813CE9C: .4byte gUnknown_203A848 +_0813CEA0: .4byte 0x000006E2 +_0813CEA4: .4byte 0x000006E4 +_0813CEA8: + movs r0, #1 +_0813CEAA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0813CE24 + + thumb_func_start sub_0813CEB0 +sub_0813CEB0: @ 0x0813CEB0 + push {r4, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r0, #0 + beq _0813CEDE + movs r3, #0 + cmp r3, r2 + bhs _0813CEDE + ldr r1, [r0, #4] +_0813CEC6: + lsls r0, r3, #2 + adds r0, r0, r1 + ldrh r0, [r0, #2] + cmp r0, r4 + bne _0813CED4 + movs r0, #1 + b _0813CEE0 +_0813CED4: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r2 + blo _0813CEC6 +_0813CEDE: + movs r0, #0 +_0813CEE0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0813CEB0 + + thumb_func_start sub_0813CEE8 +sub_0813CEE8: @ 0x0813CEE8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + movs r7, #0 + ldr r0, _0813D0F4 + mov sb, r0 + mov r5, sb + movs r4, #0x8b + lsls r4, r4, #1 + movs r3, #0 + ldr r2, _0813D0F8 +_0813CF04: + ldr r0, [r5] + lsls r1, r7, #1 + adds r0, r0, r4 + adds r0, r0, r1 + strh r3, [r0] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, r2 + bls _0813CF04 + movs r7, #0 + mov r1, sb + ldr r0, [r1] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r7, r0 + bhs _0813CF92 + mov r3, sb +_0813CF2C: + movs r5, #0 + movs r6, #0 + adds r0, r7, #1 + mov r8, r0 + lsls r7, r7, #2 + mov sl, r7 +_0813CF38: + movs r4, #0 +_0813CF3A: + adds r0, r4, #0 + adds r1, r6, #0 + str r3, [sp] + bl sub_08123EA8 + ldr r3, [sp] + ldr r2, [r3] + mov r7, sl + adds r1, r2, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r1, #0x12] + cmp r0, r1 + bne _0813CF64 + lsls r0, r5, #1 + movs r7, #0x8b + lsls r7, r7, #1 + adds r1, r2, r7 + adds r1, r1, r0 + ldr r0, _0813D0FC + strh r0, [r1] +_0813CF64: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1f + bls _0813CF3A + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x13 + bls _0813CF38 + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r3] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r7, r0 + blo _0813CF2C +_0813CF92: + movs r5, #0 + movs r6, #0 + ldr r7, _0813D0F4 + mov ip, r7 + movs r7, #0x8b + lsls r7, r7, #1 + ldr r3, _0813D0FC +_0813CFA0: + movs r4, #0 + adds r0, r6, #1 + mov sl, r0 +_0813CFA6: + mov r1, ip + ldr r0, [r1] + lsls r1, r5, #1 + adds r2, r0, r7 + adds r1, r2, r1 + ldrh r0, [r1] + adds r1, r5, #1 + mov r8, r1 + cmp r0, r3 + bne _0813D0B2 + cmp r4, #0 + beq _0813CFD0 + subs r0, r5, #1 + lsls r0, r0, #1 + adds r1, r2, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813CFD0 + movs r0, #2 + orrs r0, r2 + strh r0, [r1] +_0813CFD0: + adds r2, r5, #1 + mov r8, r2 + cmp r4, #0x1f + beq _0813CFEE + mov r1, ip + ldr r0, [r1] + lsls r1, r2, #1 + adds r0, r0, r7 + adds r2, r0, r1 + ldrh r1, [r2] + cmp r1, r3 + beq _0813CFEE + movs r0, #1 + orrs r0, r1 + strh r0, [r2] +_0813CFEE: + cmp r6, #0 + beq _0813D00C + mov r2, ip + ldr r1, [r2] + adds r0, r5, #0 + subs r0, #0x20 + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D00C + movs r0, #8 + orrs r0, r2 + strh r0, [r1] +_0813D00C: + cmp r6, #0x13 + beq _0813D02A + mov r0, ip + ldr r1, [r0] + adds r0, r5, #0 + adds r0, #0x20 + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D02A + movs r0, #4 + orrs r0, r2 + strh r0, [r1] +_0813D02A: + cmp r4, #0 + beq _0813D04C + cmp r6, #0 + beq _0813D04C + mov r2, ip + ldr r1, [r2] + adds r0, r5, #0 + subs r0, #0x21 + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D04C + movs r0, #0x10 + orrs r0, r2 + strh r0, [r1] +_0813D04C: + cmp r4, #0x1f + beq _0813D06E + cmp r6, #0 + beq _0813D06E + mov r0, ip + ldr r1, [r0] + adds r0, r5, #0 + subs r0, #0x1f + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D06E + movs r0, #0x40 + orrs r0, r2 + strh r0, [r1] +_0813D06E: + cmp r4, #0 + beq _0813D090 + cmp r6, #0x13 + beq _0813D090 + mov r2, ip + ldr r1, [r2] + adds r0, r5, #0 + adds r0, #0x1f + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D090 + movs r0, #0x20 + orrs r0, r2 + strh r0, [r1] +_0813D090: + cmp r4, #0x1f + beq _0813D0B2 + cmp r6, #0x13 + beq _0813D0B2 + mov r0, ip + ldr r1, [r0] + adds r0, r5, #0 + adds r0, #0x21 + lsls r0, r0, #1 + adds r1, r1, r7 + adds r1, r1, r0 + ldrh r2, [r1] + cmp r2, r3 + beq _0813D0B2 + movs r0, #0x80 + orrs r0, r2 + strh r0, [r1] +_0813D0B2: + mov r1, r8 + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x1f + bhi _0813D0C4 + b _0813CFA6 +_0813D0C4: + mov r2, sl + lsls r0, r2, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x13 + bhi _0813D0D0 + b _0813CFA0 +_0813D0D0: + movs r7, #0 +_0813D0D2: + mov r1, sb + ldr r0, [r1] + lsls r1, r7, #1 + movs r6, #0x8b + lsls r6, r6, #1 + adds r0, r0, r6 + adds r3, r0, r1 + ldrh r4, [r3] + adds r2, r4, #0 + ldr r0, _0813D0FC + adds r5, r1, #0 + cmp r2, r0 + bne _0813D104 + ldr r0, _0813D100 + strh r0, [r3] + b _0813D2A8 + .align 2, 0 +_0813D0F4: .4byte gUnknown_203A848 +_0813D0F8: .4byte 0x0000027F +_0813D0FC: .4byte 0x0000FFFF +_0813D100: .4byte 0x0000A010 +_0813D104: + cmp r2, #0 + bne _0813D10A + b _0813D2A8 +_0813D10A: + movs r2, #0xa0 + lsls r2, r2, #8 + adds r0, r2, #0 + adds r1, r0, #0 + orrs r1, r4 + strh r1, [r3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0813D124 + ldr r0, _0813D198 + ands r1, r0 + strh r1, [r3] +_0813D124: + mov r1, sb + ldr r0, [r1] + adds r0, r0, r6 + adds r2, r0, r5 + ldrh r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0813D13C + ldr r0, _0813D19C + ands r0, r1 + strh r0, [r2] +_0813D13C: + mov r2, sb + ldr r0, [r2] + adds r0, r0, r6 + adds r2, r0, r5 + ldrh r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0813D154 + ldr r0, _0813D1A0 + ands r0, r1 + strh r0, [r2] +_0813D154: + mov r1, sb + ldr r0, [r1] + adds r0, r0, r6 + adds r2, r0, r5 + ldrh r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0813D16C + ldr r0, _0813D1A4 + ands r0, r1 + strh r0, [r2] +_0813D16C: + mov r2, sb + ldr r0, [r2] + adds r0, r0, r6 + adds r4, r0, r5 + ldrh r0, [r4] + movs r1, #0xf + ands r1, r0 + adds r3, r1, #0 + movs r2, #0xf0 + ands r2, r0 + cmp r2, #0 + bne _0813D186 + b _0813D2A8 +_0813D186: + strh r1, [r4] + cmp r3, #0xa + bls _0813D18E + b _0813D2A8 +_0813D18E: + lsls r0, r3, #2 + ldr r1, _0813D1A8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813D198: .4byte 0x0000FFCF +_0813D19C: .4byte 0x0000FF3F +_0813D1A0: .4byte 0x0000FFAF +_0813D1A4: .4byte 0x0000FF5F +_0813D1A8: .4byte _0813D1AC +_0813D1AC: @ jump table + .4byte _0813D1D8 @ case 0 + .4byte _0813D208 @ case 1 + .4byte _0813D1F0 @ case 2 + .4byte _0813D2A8 @ case 3 + .4byte _0813D254 @ case 4 + .4byte _0813D284 @ case 5 + .4byte _0813D284 @ case 6 + .4byte _0813D2A8 @ case 7 + .4byte _0813D224 @ case 8 + .4byte _0813D296 @ case 9 + .4byte _0813D296 @ case 10 +_0813D1D8: + cmp r2, #0 + beq _0813D2A8 + mov r1, sb + ldr r0, [r1] + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #0x10 + lsrs r2, r2, #4 + b _0813D21E +_0813D1F0: + cmp r2, #0 + beq _0813D2A8 + mov r1, sb + ldr r0, [r1] + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #0x1e + lsrs r2, r2, #4 + b _0813D21E +_0813D208: + cmp r2, #0 + beq _0813D2A8 + mov r1, sb + ldr r0, [r1] + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #0x20 + lsrs r2, r2, #6 +_0813D21E: + adds r1, r1, r2 + strh r1, [r0] + b _0813D2A8 +_0813D224: + cmp r2, #0 + beq _0813D2A8 + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r3, r0, #0x1f + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _0813D240 + movs r0, #2 + orrs r3, r0 +_0813D240: + mov r2, sb + ldr r1, [r2] + movs r0, #0x8b + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1] + adds r0, #0x20 + adds r0, r0, r3 + b _0813D2A6 +_0813D254: + cmp r2, #0 + beq _0813D2A8 + movs r0, #0x40 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r3, r0, #0x1f + movs r0, #0x10 + ands r2, r0 + cmp r2, #0 + beq _0813D270 + movs r0, #2 + orrs r3, r0 +_0813D270: + mov r2, sb + ldr r1, [r2] + movs r0, #0x8b + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1] + adds r0, #0x21 + adds r0, r0, r3 + b _0813D2A6 +_0813D284: + mov r2, sb + ldr r1, [r2] + movs r0, #0x8b + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1] + adds r0, #0x27 + b _0813D2A6 +_0813D296: + mov r2, sb + ldr r1, [r2] + movs r0, #0x8b + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1] + adds r0, #0x25 +_0813D2A6: + strh r0, [r1] +_0813D2A8: + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _0813D2C8 + cmp r7, r0 + bhi _0813D2B6 + b _0813D0D2 +_0813D2B6: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D2C8: .4byte 0x0000027F + thumb_func_end sub_0813CEE8 + + thumb_func_start sub_0813D2CC +sub_0813D2CC: @ 0x0813D2CC + push {lr} + ldr r1, _0813D2F8 + ldr r2, [r1] + movs r3, #0x89 + lsls r3, r3, #1 + adds r0, r2, r3 + ldrh r0, [r0] + adds r3, r1, #0 + cmp r0, #0 + beq _0813D300 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _0813D300 + ldr r0, _0813D2FC + adds r1, r2, r0 + movs r0, #1 + strb r0, [r1] + b _0813D30A + .align 2, 0 +_0813D2F8: .4byte gUnknown_203A848 +_0813D2FC: .4byte 0x0000061E +_0813D300: + ldr r0, [r3] + ldr r1, _0813D34C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_0813D30A: + ldr r1, [r3] + ldr r2, _0813D350 + adds r0, r1, r2 + movs r2, #0 + strh r2, [r0] + movs r3, #0xc3 + lsls r3, r3, #3 + adds r0, r1, r3 + strh r2, [r0] + adds r3, #2 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _0813D354 + adds r2, r1, r0 + movs r0, #0x40 + strh r0, [r2] + ldr r2, _0813D358 + adds r1, r1, r2 + movs r0, #1 + strb r0, [r1] + ldr r1, _0813D35C + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + bl sub_0813D360 + pop {r0} + bx r0 + .align 2, 0 +_0813D34C: .4byte 0x0000061E +_0813D350: .4byte 0x00000616 +_0813D354: .4byte 0x0000061C +_0813D358: .4byte 0x0000061F +_0813D35C: .4byte 0x00003F44 + thumb_func_end sub_0813D2CC + + thumb_func_start sub_0813D360 +sub_0813D360: @ 0x0813D360 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0813D39C + ldr r2, [r0] + ldr r3, _0813D3A0 + adds r1, r2, r3 + ldrb r1, [r1] + adds r7, r0, #0 + cmp r1, #0 + bne _0813D42E + ldr r0, _0813D3A4 + adds r1, r2, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _0813D428 + movs r1, #0xc3 + lsls r1, r1, #3 + adds r0, r2, r1 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0813D3A8 + subs r3, #4 + adds r0, r2, r3 + b _0813D3AC + .align 2, 0 +_0813D39C: .4byte gUnknown_203A848 +_0813D3A0: .4byte 0x0000061E +_0813D3A4: .4byte 0x00000616 +_0813D3A8: + ldr r1, _0813D414 + adds r0, r2, r1 +_0813D3AC: + ldrh r1, [r0] + adds r1, #4 + movs r2, #0x7f + ands r1, r2 + strh r1, [r0] + ldr r3, _0813D418 + ldr r1, [r7] + ldr r2, _0813D41C + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r2, [r0] + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + lsls r2, r2, #0x10 + ldr r0, _0813D414 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + lsls r1, r1, #0x18 + orrs r1, r2 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldr r1, [r7] + ldr r2, _0813D420 + adds r0, r1, r2 + movs r3, #0 + strh r3, [r0] + movs r0, #0xc3 + lsls r0, r0, #3 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0x40 + bne _0813D4CA + strh r3, [r2] + movs r2, #0x89 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _0813D4CA + ldr r3, _0813D424 + adds r1, r1, r3 + movs r0, #1 + b _0813D4C8 + .align 2, 0 +_0813D414: .4byte 0x0000061C +_0813D418: .4byte gUnknown_82FA8CC +_0813D41C: .4byte 0x0000061A +_0813D420: .4byte 0x00000616 +_0813D424: .4byte 0x0000061E +_0813D428: + subs r0, #1 + strh r0, [r1] + b _0813D4CA +_0813D42E: + ldr r0, _0813D4D4 + adds r1, r2, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc + bls _0813D4CA + movs r0, #0 + strh r0, [r1] + ldr r3, _0813D4D8 + adds r1, r2, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r4, #0 + ldr r0, [r7] + movs r6, #0x89 + lsls r6, r6, #1 + adds r0, r0, r6 + ldrh r0, [r0] + cmp r4, r0 + bhs _0813D4A4 + adds r5, r7, #0 + movs r0, #1 + mov ip, r0 + movs r1, #5 + rsbs r1, r1, #0 + mov r8, r1 +_0813D46A: + ldr r1, [r5] + lsls r2, r4, #2 + movs r3, #0xcc + lsls r3, r3, #3 + adds r0, r1, r3 + adds r0, r0, r2 + ldr r3, [r0] + ldr r0, _0813D4D8 + adds r1, r1, r0 + ldrb r0, [r1] + movs r1, #1 + adds r3, #0x3e + ands r1, r0 + mov r2, ip + ands r1, r2 + lsls r1, r1, #2 + ldrb r2, [r3] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [r5] + adds r0, r0, r6 + ldrh r0, [r0] + cmp r4, r0 + blo _0813D46A +_0813D4A4: + ldr r0, [r7] + ldr r3, _0813D4D8 + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, #4 + bls _0813D4CA + movs r0, #1 + strb r0, [r1] + ldr r1, [r7] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _0813D4CA + subs r3, #1 + adds r1, r1, r3 + movs r0, #0 +_0813D4C8: + strb r0, [r1] +_0813D4CA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D4D4: .4byte 0x00000616 +_0813D4D8: .4byte 0x0000061F + thumb_func_end sub_0813D360 + + thumb_func_start sub_0813D4DC +sub_0813D4DC: @ 0x0813D4DC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r5, _0813D520 + ldr r0, _0813D524 + bl sub_08000BDC + str r0, [r5] + movs r1, #0 + movs r5, #0 + strh r4, [r0, #0xe] + movs r2, #0xdd + lsls r2, r2, #3 + adds r0, r0, r2 + str r6, [r0] + strb r1, [r6] + ldr r0, _0813D528 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813D52C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813D520: .4byte gUnknown_203A848 +_0813D524: .4byte 0x000015BC +_0813D528: .4byte sub_0813D530 +_0813D52C: .4byte gUnknown_3005B60 + thumb_func_end sub_0813D4DC + + thumb_func_start sub_0813D530 +sub_0813D530: @ 0x0813D530 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0813D558 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #0xb + bls _0813D54E + b _0813D688 +_0813D54E: + lsls r0, r0, #2 + ldr r1, _0813D55C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813D558: .4byte gUnknown_3005B60 +_0813D55C: .4byte _0813D560 +_0813D560: @ jump table + .4byte _0813D590 @ case 0 + .4byte _0813D5AC @ case 1 + .4byte _0813D5D8 @ case 2 + .4byte _0813D5EA @ case 3 + .4byte _0813D5F0 @ case 4 + .4byte _0813D5FC @ case 5 + .4byte _0813D624 @ case 6 + .4byte _0813D62A @ case 7 + .4byte _0813D630 @ case 8 + .4byte _0813D636 @ case 9 + .4byte _0813D648 @ case 10 + .4byte _0813D670 @ case 11 +_0813D590: + bl sub_0800668C + bl sub_08008424 + movs r0, #3 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #0 + bl sub_08001B5C + b _0813D688 +_0813D5AC: + movs r0, #3 + movs r1, #1 + movs r2, #3 + bl sub_08001B70 + ldr r0, _0813D5D0 + bl sub_081C4578 + ldr r0, _0813D5D4 + ldr r0, [r0] + movs r1, #0xf7 + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #0 + movs r2, #0xa + bl sub_08008DE8 + b _0813D688 + .align 2, 0 +_0813D5D0: .4byte gUnknown_85939A0 +_0813D5D4: .4byte gUnknown_203A848 +_0813D5D8: + bl sub_081C4698 + cmp r0, #1 + beq _0813D698 + movs r0, #8 + rsbs r0, r0, #0 + bl sub_081C46D8 + b _0813D688 +_0813D5EA: + bl sub_0813CA30 + b _0813D688 +_0813D5F0: + bl sub_0813CA44 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813D698 + b _0813D688 +_0813D5FC: + ldr r0, _0813D61C + ldr r0, [r0] + ldr r2, _0813D620 + adds r0, r0, r2 + bl sub_08122D94 + movs r0, #1 + movs r1, #1 + bl sub_08124294 + movs r1, #8 + rsbs r1, r1, #0 + movs r0, #0 + bl sub_08123830 + b _0813D688 + .align 2, 0 +_0813D61C: .4byte gUnknown_203A848 +_0813D620: .4byte 0x000006EC +_0813D624: + bl sub_0813D7D4 + b _0813D688 +_0813D62A: + bl sub_0813D9AC + b _0813D688 +_0813D630: + bl sub_0813D9EC + b _0813D688 +_0813D636: + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0813D688 +_0813D648: + ldr r1, _0813D66C + movs r0, #0x50 + bl sub_08001144 + bl sub_0813D2CC + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + b _0813D688 + .align 2, 0 +_0813D66C: .4byte 0x00003F41 +_0813D670: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0813D684 + str r1, [r0] + movs r1, #0 + strh r1, [r0, #8] + b _0813D698 + .align 2, 0 +_0813D684: .4byte sub_0813D6A4 +_0813D688: + ldr r0, _0813D6A0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0813D698: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D6A0: .4byte gUnknown_3005B60 + thumb_func_end sub_0813D530 + + thumb_func_start sub_0813D6A4 +sub_0813D6A4: @ 0x0813D6A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0813D360 + ldr r1, _0813D6CC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r0, #8 + ldrsh r1, [r6, r0] + cmp r1, #1 + beq _0813D6FC + cmp r1, #1 + bgt _0813D6D0 + cmp r1, #0 + beq _0813D6E6 + b _0813D6D8 + .align 2, 0 +_0813D6CC: .4byte gUnknown_3005B60 +_0813D6D0: + cmp r1, #2 + beq _0813D744 + cmp r1, #3 + beq _0813D756 +_0813D6D8: + ldr r0, _0813D6F4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #8] +_0813D6E6: + ldr r0, _0813D6F8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813D7AC + b _0813D79C + .align 2, 0 +_0813D6F4: .4byte gUnknown_3005B60 +_0813D6F8: .4byte gUnknown_2037C74 +_0813D6FC: + ldr r0, _0813D714 + ldrh r2, [r0, #0x2e] + movs r3, #2 + adds r0, r3, #0 + ands r0, r2 + cmp r0, #0 + beq _0813D718 + strh r1, [r6, #0xa] + movs r0, #3 + bl sub_080A306C + b _0813D79C + .align 2, 0 +_0813D714: .4byte gUnknown_3002360 +_0813D718: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _0813D734 + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0813D7AC + ldr r0, _0813D740 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #1 + bne _0813D7AC +_0813D734: + strh r3, [r6, #0xa] + movs r0, #0x6d + bl sub_080A306C + b _0813D79C + .align 2, 0 +_0813D740: .4byte gUnknown_3005AF0 +_0813D744: + movs r0, #0x15 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0813D79C +_0813D756: + ldr r0, _0813D794 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _0813D7AC + bl sub_0813D928 + ldr r4, _0813D798 + ldr r0, [r4] + movs r1, #0xdd + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, [r0] + ldrh r0, [r6, #0xa] + strb r0, [r1] + bl sub_0813D7B8 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_081C46BC + ldr r0, [r4] + bl sub_08000BF0 + str r7, [r4] + b _0813D7AC + .align 2, 0 +_0813D794: .4byte gUnknown_2037C74 +_0813D798: .4byte gUnknown_203A848 +_0813D79C: + ldr r0, _0813D7B4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0813D7AC: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D7B4: .4byte gUnknown_3005B60 + thumb_func_end sub_0813D6A4 + + thumb_func_start sub_0813D7B8 +sub_0813D7B8: @ 0x0813D7B8 + push {lr} + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #3 + movs r1, #4 + movs r2, #0 + bl sub_08001B70 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813D7B8 + + thumb_func_start sub_0813D7D4 +sub_0813D7D4: @ 0x0813D7D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0813D8FC + bl sub_08008210 + ldr r0, _0813D900 + bl sub_0800845C + ldr r0, _0813D904 + movs r1, #0 + strh r1, [r0] + ldr r2, _0813D908 + strh r1, [r2] + ldr r1, _0813D90C + ldr r0, [r1] + movs r3, #0x89 + lsls r3, r3, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _0813D8DC + ldr r5, _0813D910 + mov sl, r1 + adds r7, r2, #0 + ldr r0, _0813D914 + mov sb, r0 + ldr r6, _0813D918 + ldr r1, _0813D91C + mov r8, r1 +_0813D814: + mov r2, sl + ldr r1, [r2] + movs r3, #0 + ldrsh r0, [r7, r3] + lsls r0, r0, #1 + movs r2, #0xc4 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r5] + movs r3, #0 + ldrsh r0, [r5, r3] + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r1, [r0] + adds r1, #1 + lsls r1, r1, #3 + adds r1, #4 + mov r0, sb + strh r1, [r0] + movs r2, #0 + ldrsh r0, [r5, r2] + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r2, [r0, #1] + lsls r2, r2, #3 + adds r2, #0x1c + mov r3, r8 + strh r2, [r3] + movs r3, #0 + ldrsh r0, [r5, r3] + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r0, [r0, #2] + subs r0, #1 + lsls r0, r0, #2 + adds r1, r1, r0 + mov r0, sb + strh r1, [r0] + movs r1, #0 + ldrsh r0, [r5, r1] + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r0, [r0, #3] + subs r0, #1 + lsls r0, r0, #2 + adds r2, r2, r0 + mov r3, r8 + strh r2, [r3] + mov r0, sb + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #0 + ldrsh r2, [r3, r0] + ldr r0, _0813D920 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0813D8C2 + ldr r0, _0813D924 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + mov r1, sl + ldr r3, [r1] + ldr r4, _0813D904 + ldrh r1, [r4] + adds r0, r1, #1 + strh r0, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0xe + movs r0, #0xcc + lsls r0, r0, #3 + adds r3, r3, r0 + adds r3, r3, r1 + str r2, [r3] +_0813D8C2: + ldrh r0, [r7] + adds r0, #1 + strh r0, [r7] + movs r2, #0 + ldrsh r1, [r7, r2] + mov r3, sl + ldr r0, [r3] + movs r2, #0x89 + lsls r2, r2, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r1, r0 + blt _0813D814 +_0813D8DC: + ldr r0, _0813D90C + ldr r0, [r0] + ldr r1, _0813D904 + ldrh r1, [r1] + movs r3, #0xdc + lsls r3, r3, #3 + adds r0, r0, r3 + strh r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D8FC: .4byte gUnknown_85939A4 +_0813D900: .4byte gUnknown_85939AC +_0813D904: .4byte gUnknown_3001204 +_0813D908: .4byte gUnknown_3001200 +_0813D90C: .4byte gUnknown_203A848 +_0813D910: .4byte gUnknown_3001202 +_0813D914: .4byte gUnknown_30011FC +_0813D918: .4byte gUnknown_857CD6C +_0813D91C: .4byte gUnknown_30011FE +_0813D920: .4byte gUnknown_85939BC +_0813D924: .4byte gUnknown_20205AC + thumb_func_end sub_0813D7D4 + + thumb_func_start sub_0813D928 +sub_0813D928: @ 0x0813D928 + push {r4, r5, lr} + movs r0, #2 + bl sub_08008280 + movs r0, #2 + bl sub_08008564 + movs r4, #0 + ldr r1, _0813D9A8 + ldr r0, [r1] + movs r2, #0xdc + lsls r2, r2, #3 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r4, r0 + bhs _0813D970 + adds r5, r1, #0 +_0813D94A: + ldr r0, [r5] + lsls r1, r4, #2 + movs r2, #0xcc + lsls r2, r2, #3 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [r5] + movs r1, #0xdc + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + blo _0813D94A +_0813D970: + movs r0, #3 + bl sub_08008280 + movs r0, #3 + bl sub_08008564 + movs r4, #0 +_0813D97E: + ldr r0, _0813D9A8 + ldr r0, [r0] + lsls r1, r4, #2 + movs r2, #0xfb + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + beq _0813D996 + bl sub_08006E00 +_0813D996: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #2 + bls _0813D97E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0813D9A8: .4byte gUnknown_203A848 + thumb_func_end sub_0813D928 + + thumb_func_start sub_0813D9AC +sub_0813D9AC: @ 0x0813D9AC + push {lr} + sub sp, #8 + ldr r0, _0813D9D8 + ldr r1, [r0] + ldr r0, _0813D9DC + adds r1, r1, r0 + str r1, [sp] + ldr r0, _0813D9E0 + str r0, [sp, #4] + ldr r0, _0813D9E4 + bl LZ77UnCompWram + mov r0, sp + bl sub_08008210 + ldr r0, _0813D9E8 + bl sub_0800845C + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_0813D9D8: .4byte gUnknown_203A848 +_0813D9DC: .4byte 0x00000FBC +_0813D9E0: .4byte 0x00030600 +_0813D9E4: .4byte gUnknown_8593ABC +_0813D9E8: .4byte gUnknown_8593A74 + thumb_func_end sub_0813D9AC + + thumb_func_start sub_0813D9EC +sub_0813D9EC: @ 0x0813D9EC + push {r4, r5, r6, lr} + ldr r1, _0813DA20 + ldr r0, [r1] + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, #0 + beq _0813DA24 + movs r4, #0 + adds r5, r1, #0 + movs r3, #0xfb + lsls r3, r3, #4 + movs r2, #0 +_0813DA08: + ldr r0, [r5] + lsls r1, r4, #2 + adds r0, r0, r3 + adds r0, r0, r1 + str r2, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #2 + bls _0813DA08 + b _0813DAA8 + .align 2, 0 +_0813DA20: .4byte gUnknown_203A848 +_0813DA24: + movs r4, #0 + ldr r5, _0813DA78 +_0813DA28: + lsls r1, r4, #0x15 + movs r6, #0xa0 + lsls r6, r6, #0x10 + adds r1, r1, r6 + asrs r1, r1, #0x10 + ldr r0, _0813DA7C + movs r2, #0x8c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0813DA8C + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r5 + ldrh r2, [r3, #4] + lsls r0, r2, #0x16 + lsrs r0, r0, #0x16 + lsls r1, r4, #4 + adds r0, r0, r1 + ldr r6, _0813DA80 + adds r1, r6, #0 + ands r0, r1 + ldr r6, _0813DA84 + adds r1, r6, #0 + ands r2, r1 + orrs r2, r0 + strh r2, [r3, #4] + ldr r0, _0813DA88 + ldr r0, [r0] + lsls r1, r4, #2 + movs r2, #0xfb + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, r0, r1 + str r3, [r0] + b _0813DA9E + .align 2, 0 +_0813DA78: .4byte gUnknown_20205AC +_0813DA7C: .4byte gUnknown_8593A84 +_0813DA80: .4byte 0x000003FF +_0813DA84: .4byte 0xFFFFFC00 +_0813DA88: .4byte gUnknown_203A848 +_0813DA8C: + ldr r0, _0813DAB0 + ldr r1, [r0] + lsls r0, r4, #2 + movs r6, #0xfb + lsls r6, r6, #4 + adds r1, r1, r6 + adds r1, r1, r0 + movs r0, #0 + str r0, [r1] +_0813DA9E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #2 + bls _0813DA28 +_0813DAA8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813DAB0: .4byte gUnknown_203A848 + thumb_func_end sub_0813D9EC + + thumb_func_start sub_0813DAB4 +sub_0813DAB4: @ 0x0813DAB4 + push {lr} + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813DAB4 + + thumb_func_start sub_0813DAC4 +sub_0813DAC4: @ 0x0813DAC4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r7, #0 + ldr r1, _0813DAE8 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0813DAEC + cmp r0, #1 + beq _0813DB04 + b _0813DB34 + .align 2, 0 +_0813DAE8: .4byte gUnknown_3005B60 +_0813DAEC: + movs r0, #1 + rsbs r0, r0, #0 + str r7, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _0813DB34 +_0813DB04: + ldr r0, _0813DB3C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813DB34 + movs r0, #0x1c + ldrsh r1, [r6, r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0813DB40 + adds r7, r1, r0 + ldrh r4, [r6, #0xc] + ldrb r5, [r6, #0xe] + ldrb r6, [r6, #0x1c] + adds r0, r2, #0 + bl sub_080A8964 + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_0813DB90 +_0813DB34: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813DB3C: .4byte gUnknown_2037C74 +_0813DB40: .4byte gUnknown_2024190 + thumb_func_end sub_0813DAC4 + + thumb_func_start sub_0813DB44 +sub_0813DB44: @ 0x0813DB44 + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0813DB84 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0813DB88 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + strh r4, [r1, #0xc] + strh r5, [r1, #0xe] + strh r6, [r1, #0x1c] + ldr r0, _0813DB8C + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813DB84: .4byte sub_0813DAC4 +_0813DB88: .4byte gUnknown_3005B60 +_0813DB8C: .4byte sub_0813DAB4 + thumb_func_end sub_0813DB44 + + thumb_func_start sub_0813DB90 +sub_0813DB90: @ 0x0813DB90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + adds r4, r0, #0 + mov sb, r1 + mov r0, sb + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x18] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x1c] + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r1, #0 + str r1, [sp, #0x14] + add r0, sp, #0x14 + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0813DE14 + bl CpuSet + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + bl sub_080A133C + ldr r0, _0813DE18 + movs r2, #0 + strh r2, [r0] + ldr r0, _0813DE1C + strh r2, [r0] + ldr r0, _0813DE20 + strh r2, [r0] + ldr r0, _0813DE24 + strh r2, [r0] + ldr r0, _0813DE28 + strh r2, [r0] + ldr r0, _0813DE2C + strh r2, [r0] + ldr r1, _0813DE30 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0813DE34 + movs r1, #0 + strh r1, [r0] + ldr r1, _0813DE38 + movs r0, #9 + strb r0, [r1] + bl sub_08035528 + bl sub_080358F8 + bl sub_0800668C + bl sub_080B9710 + bl sub_080A8818 + bl sub_08008424 + ldr r0, _0813DE3C + movs r2, #4 + strb r2, [r0] + movs r0, #0x64 + bl sub_08000BDC + ldr r1, _0813DE40 + str r0, [r1] + bl sub_0805EBD8 + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0813DE44 + mov r1, sp + bl sub_08008828 + ldr r0, _0813DE48 + mov r2, sb + lsls r1, r2, #1 + add r1, sb + lsls r1, r1, #1 + ldr r2, _0813DE4C + adds r1, r1, r2 + bl sub_080088B8 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + str r0, [sp, #0x20] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + mov sl, r0 + lsls r0, r5, #3 + ldr r1, _0813DE50 + adds r0, r0, r1 + ldr r2, _0813DE54 + ldr r1, [r2] + ldr r1, [r1, #8] + adds r2, r5, #0 + bl sub_08034860 + adds r0, r5, #0 + ldr r1, [sp, #0x20] + mov r2, sl + bl sub_0806E258 + ldr r0, [r0] + movs r1, #0x88 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + adds r0, r5, #0 + movs r1, #1 + bl sub_08069BA8 + ldr r0, _0813DE58 + mov r8, r0 + ldr r1, _0813DE5C + str r1, [r0, #0x10] + movs r1, #0x78 + movs r2, #0x40 + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _0813DE40 + ldr r2, [r1] + lsls r1, r0, #0x18 + lsrs r3, r1, #0x18 + strb r0, [r2] + ldr r7, _0813DE60 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r6, r7, #0 + adds r6, #0x1c + adds r0, r1, r6 + ldr r2, _0813DE64 + str r2, [r0] + adds r1, r1, r7 + ldrb r2, [r1, #5] + movs r4, #0xf + adds r0, r4, #0 + ands r0, r2 + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1, #5] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + mov r1, sb + lsls r0, r1, #3 + ldr r2, _0813DE50 + adds r0, r0, r2 + ldr r2, _0813DE54 + ldr r1, [r2] + ldr r1, [r1, #0x10] + mov r2, sb + bl sub_08034860 + mov r0, sb + ldr r1, [sp, #0x20] + mov r2, sl + bl sub_0806E258 + ldr r0, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + mov r0, sb + movs r1, #3 + bl sub_08069BA8 + ldr r0, _0813DE5C + mov r1, r8 + str r0, [r1, #0x10] + mov r0, r8 + movs r1, #0x78 + movs r2, #0x40 + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _0813DE40 + ldr r2, [r1] + lsls r1, r0, #0x18 + lsrs r3, r1, #0x18 + strb r0, [r2, #1] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r6, r1, r6 + ldr r2, _0813DE64 + str r2, [r6] + adds r1, r1, r7 + ldrb r0, [r1, #5] + ands r4, r0 + movs r0, #0x20 + orrs r4, r0 + strb r4, [r1, #5] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_0817BD38 + ldr r0, _0813DE68 + movs r1, #0 + bl sub_080A8878 + ldr r1, _0813DE40 + ldr r2, [r1] + lsls r1, r0, #0x18 + lsrs r3, r1, #0x18 + strb r0, [r2, #2] + ldr r1, _0813DE6C + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0, #8] + strh r5, [r0, #0xa] + mov r1, sb + strh r1, [r0, #0xc] + mov r2, sp + ldrh r2, [r2, #0x18] + strh r2, [r0, #0xe] + movs r1, #1 + strh r1, [r0, #0x10] + movs r1, #0 + strh r1, [r0, #0x1a] + mov r2, sp + ldrh r2, [r2, #0x1c] + strh r2, [r0, #0x1c] + ldr r1, _0813DE40 + ldr r0, [r1] + ldr r1, _0813DE70 + adds r0, #4 + movs r2, #0x60 + bl memcpy + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0813DE74 + bl sub_080006FC + ldr r0, _0813DE78 + bl sub_080006F0 + bl m4aMPlayAllStop + ldr r0, _0813DE7C + bl sub_08000540 + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813DE14: .4byte 0x05006000 +_0813DE18: .4byte gUnknown_2022AC8 +_0813DE1C: .4byte gUnknown_2022ACA +_0813DE20: .4byte gUnknown_2022ACC +_0813DE24: .4byte gUnknown_2022ACE +_0813DE28: .4byte gUnknown_2022AD0 +_0813DE2C: .4byte gUnknown_2022AD2 +_0813DE30: .4byte gUnknown_2022AD4 +_0813DE34: .4byte gUnknown_2022AD6 +_0813DE38: .4byte gUnknown_2022C94 +_0813DE3C: .4byte gUnknown_30030BC +_0813DE40: .4byte gUnknown_203A84C +_0813DE44: .4byte gUnknown_2021C40 +_0813DE48: .4byte gUnknown_2021C54 +_0813DE4C: .4byte gUnknown_82EA31C +_0813DE50: .4byte gUnknown_82DDA1C +_0813DE54: .4byte gUnknown_2024178 +_0813DE58: .4byte gUnknown_2024640 +_0813DE5C: .4byte gUnknown_82BF310 +_0813DE60: .4byte gUnknown_20205AC +_0813DE64: .4byte sub_080394FC +_0813DE68: .4byte sub_0813E638 +_0813DE6C: .4byte gUnknown_3005B60 +_0813DE70: .4byte gUnknown_20373F4 +_0813DE74: .4byte sub_0813FDA0 +_0813DE78: .4byte sub_0813FDA4 +_0813DE7C: .4byte sub_0813E4A8 + thumb_func_end sub_0813DB90 + + thumb_func_start sub_0813DE80 +sub_0813DE80: @ 0x0813DE80 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + ldr r2, _0813E018 + ldr r0, _0813E01C + mov r8, r0 + ldr r0, [r0] + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x1c + ldrsh r2, [r0, r1] + movs r1, #0x64 + adds r4, r2, #0 + muls r4, r1, r4 + ldr r1, _0813E020 + adds r4, r4, r1 + ldrh r5, [r0, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + mov sb, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r6, r0, #0 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r4, #0 + str r4, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0813E024 + add r0, sp, #4 + bl CpuSet + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + bl sub_080A133C + ldr r0, _0813E028 + strh r4, [r0] + ldr r0, _0813E02C + strh r4, [r0] + ldr r0, _0813E030 + strh r4, [r0] + ldr r0, _0813E034 + strh r4, [r0] + ldr r0, _0813E038 + strh r4, [r0] + ldr r0, _0813E03C + strh r4, [r0] + ldr r1, _0813E040 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0813E044 + strh r4, [r0] + ldr r1, _0813E048 + movs r0, #9 + strb r0, [r1] + bl sub_08035528 + bl sub_080358F8 + bl sub_0800668C + bl sub_08008424 + ldr r1, _0813E04C + movs r0, #4 + strb r0, [r1] + lsls r0, r5, #3 + ldr r1, _0813E050 + adds r0, r0, r1 + ldr r1, _0813E054 + ldr r1, [r1] + ldr r1, [r1, #0x10] + adds r2, r5, #0 + bl sub_08034860 + adds r0, r5, #0 + mov r1, sb + adds r2, r6, #0 + bl sub_0806E258 + ldr r0, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + adds r0, r5, #0 + movs r1, #3 + bl sub_08069BA8 + ldr r0, _0813E058 + ldr r1, _0813E05C + str r1, [r0, #0x10] + movs r1, #0x78 + movs r2, #0x40 + movs r3, #0x1e + bl sub_08006B0C + mov r2, r8 + ldr r1, [r2] + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + strb r0, [r1, #1] + ldr r3, _0813E060 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _0813E064 + str r2, [r0] + adds r1, r1, r3 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + movs r2, #0x20 + orrs r0, r2 + strb r0, [r1, #5] + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0813E068 + bl sub_080006FC + ldr r0, _0813E06C + bl sub_080006F0 + ldr r0, _0813E070 + bl sub_08000540 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E018: .4byte gUnknown_3005B60 +_0813E01C: .4byte gUnknown_203A84C +_0813E020: .4byte gUnknown_2024190 +_0813E024: .4byte 0x05006000 +_0813E028: .4byte gUnknown_2022AC8 +_0813E02C: .4byte gUnknown_2022ACA +_0813E030: .4byte gUnknown_2022ACC +_0813E034: .4byte gUnknown_2022ACE +_0813E038: .4byte gUnknown_2022AD0 +_0813E03C: .4byte gUnknown_2022AD2 +_0813E040: .4byte gUnknown_2022AD4 +_0813E044: .4byte gUnknown_2022AD6 +_0813E048: .4byte gUnknown_2022C94 +_0813E04C: .4byte gUnknown_30030BC +_0813E050: .4byte gUnknown_82DDA1C +_0813E054: .4byte gUnknown_2024178 +_0813E058: .4byte gUnknown_2024640 +_0813E05C: .4byte gUnknown_82BF310 +_0813E060: .4byte gUnknown_20205AC +_0813E064: .4byte sub_080394FC +_0813E068: .4byte sub_0813FDA0 +_0813E06C: .4byte sub_0813FDA4 +_0813E070: .4byte sub_0813E4A8 + thumb_func_end sub_0813DE80 + + thumb_func_start sub_0813E074 +sub_0813E074: @ 0x0813E074 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r2, _0813E0B0 + ldr r0, _0813E0B4 + ldr r0, [r0] + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x1c + ldrsh r2, [r0, r1] + movs r1, #0x64 + muls r2, r1, r2 + ldr r1, _0813E0B8 + adds r4, r2, r1 + ldrh r6, [r0, #0xc] + ldr r0, _0813E0BC + movs r3, #0x87 + lsls r3, r3, #3 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #7 + bls _0813E0A6 + b _0813E2CC +_0813E0A6: + lsls r0, r0, #2 + ldr r1, _0813E0C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813E0B0: .4byte gUnknown_3005B60 +_0813E0B4: .4byte gUnknown_203A84C +_0813E0B8: .4byte gUnknown_2024190 +_0813E0BC: .4byte gUnknown_3002360 +_0813E0C0: .4byte _0813E0C4 +_0813E0C4: @ jump table + .4byte _0813E0E4 @ case 0 + .4byte _0813E154 @ case 1 + .4byte _0813E17C @ case 2 + .4byte _0813E182 @ case 3 + .4byte _0813E1AC @ case 4 + .4byte _0813E1F4 @ case 5 + .4byte _0813E264 @ case 6 + .4byte _0813E29C @ case 7 +_0813E0E4: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + bl sub_0800668C + bl sub_08008424 + ldr r1, _0813E130 + movs r0, #4 + strb r0, [r1] + ldr r0, _0813E134 + movs r1, #0 + strh r1, [r0] + ldr r0, _0813E138 + strh r1, [r0] + ldr r0, _0813E13C + strh r1, [r0] + ldr r0, _0813E140 + strh r1, [r0] + ldr r0, _0813E144 + strh r1, [r0] + ldr r0, _0813E148 + strh r1, [r0] + ldr r2, _0813E14C + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r2] + ldr r0, _0813E150 + strh r1, [r0] + b _0813E284 + .align 2, 0 +_0813E130: .4byte gUnknown_30030BC +_0813E134: .4byte gUnknown_2022AC8 +_0813E138: .4byte gUnknown_2022ACA +_0813E13C: .4byte gUnknown_2022ACC +_0813E140: .4byte gUnknown_2022ACE +_0813E144: .4byte gUnknown_2022AD0 +_0813E148: .4byte gUnknown_2022AD2 +_0813E14C: .4byte gUnknown_2022AD4 +_0813E150: .4byte gUnknown_2022AD6 +_0813E154: + bl sub_080A133C + ldr r0, _0813E170 + bl sub_080006FC + ldr r0, _0813E174 + bl sub_080006F0 + ldr r1, _0813E178 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _0813E28C + .align 2, 0 +_0813E170: .4byte sub_0813FDA0 +_0813E174: .4byte sub_0813FE2C +_0813E178: .4byte gUnknown_3002360 +_0813E17C: + bl sub_0807EBD4 + b _0813E284 +_0813E182: + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + movs r0, #1 + bl sub_08002248 + ldr r1, _0813E1A8 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _0813E28C + .align 2, 0 +_0813E1A8: .4byte gUnknown_3002360 +_0813E1AC: + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + adds r5, r0, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r0, r6, #3 + ldr r1, _0813E1EC + adds r0, r0, r1 + ldr r1, _0813E1F0 + ldr r1, [r1] + ldr r1, [r1, #0x10] + adds r2, r6, #0 + bl sub_08034860 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0806E258 + ldr r0, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + b _0813E284 + .align 2, 0 +_0813E1EC: .4byte gUnknown_82DDA1C +_0813E1F0: .4byte gUnknown_2024178 +_0813E1F4: + adds r0, r6, #0 + movs r1, #1 + bl sub_08069BA8 + ldr r0, _0813E24C + ldr r1, _0813E250 + str r1, [r0, #0x10] + movs r1, #0x78 + movs r2, #0x40 + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _0813E254 + ldr r1, [r1] + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + strb r0, [r1, #1] + ldr r3, _0813E258 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _0813E25C + str r2, [r0] + adds r1, r1, r3 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + movs r2, #0x20 + orrs r0, r2 + strb r0, [r1, #5] + ldr r1, _0813E260 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_0807ABB0 + b _0813E2CC + .align 2, 0 +_0813E24C: .4byte gUnknown_2024640 +_0813E250: .4byte gUnknown_82BF310 +_0813E254: .4byte gUnknown_203A84C +_0813E258: .4byte gUnknown_20205AC +_0813E25C: .4byte sub_080394FC +_0813E260: .4byte gUnknown_3002360 +_0813E264: + ldr r0, _0813E294 + ldrb r0, [r0] + cmp r0, #0 + beq _0813E278 + bl sub_0800DBB4 + movs r0, #0 + movs r1, #0 + bl sub_0800DA80 +_0813E278: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 +_0813E284: + ldr r1, _0813E298 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_0813E28C: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0813E2CC + .align 2, 0 +_0813E294: .4byte gUnknown_300319C +_0813E298: .4byte gUnknown_3002360 +_0813E29C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + bl sub_0807AB9C + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + ldr r0, _0813E2D4 + bl sub_08000540 + movs r1, #0x9a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 +_0813E2CC: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813E2D4: .4byte sub_0813E4C4 + thumb_func_end sub_0813E074 + + thumb_func_start sub_0813E2D8 +sub_0813E2D8: @ 0x0813E2D8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _0813E448 + mov r1, sp + bl sub_08008828 + ldr r0, _0813E44C + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #1 + ldr r2, _0813E450 + adds r1, r1, r2 + bl sub_080088B8 + ldr r1, _0813E454 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r7, r0, #0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + mov sl, r0 + ldr r1, _0813E458 + mov sb, r1 + movs r0, #0x64 + bl sub_08000BDC + mov r2, sb + str r0, [r2] + movs r4, #0 + strb r6, [r0] + lsls r0, r5, #3 + ldr r1, _0813E45C + adds r0, r0, r1 + ldr r1, _0813E460 + ldr r1, [r1] + ldr r1, [r1, #8] + adds r2, r5, #0 + bl sub_08034860 + adds r0, r5, #0 + mov r1, sl + adds r2, r7, #0 + bl sub_0806E258 + ldr r0, [r0] + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + adds r0, r5, #0 + movs r1, #1 + bl sub_08069BA8 + ldr r0, _0813E464 + ldr r1, _0813E468 + str r1, [r0, #0x10] + movs r1, #0x78 + movs r2, #0x40 + movs r3, #0x1e + bl sub_08006B0C + mov r1, sb + ldr r2, [r1] + lsls r1, r0, #0x18 + lsrs r6, r1, #0x18 + strb r0, [r2, #1] + ldr r3, _0813E46C + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _0813E470 + str r2, [r0] + adds r1, r1, r3 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + movs r2, #0x20 + orrs r0, r2 + strb r0, [r1, #5] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_0817BD38 + ldr r0, _0813E474 + movs r1, #0 + bl sub_080A8878 + mov r1, sb + ldr r2, [r1] + lsls r1, r0, #0x18 + lsrs r6, r1, #0x18 + strb r0, [r2, #2] + ldr r1, _0813E478 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + mov r2, r8 + strh r2, [r0, #0xa] + strh r5, [r0, #0xc] + movs r1, #1 + strh r1, [r0, #0x10] + strh r4, [r0, #0x1a] + mov r1, sp + ldrh r1, [r1, #0x14] + strh r1, [r0, #0x1c] + ldr r0, _0813E47C + strh r4, [r0] + ldr r0, _0813E480 + strh r4, [r0] + ldr r0, _0813E484 + strh r4, [r0] + ldr r0, _0813E488 + strh r4, [r0] + ldr r0, _0813E48C + strh r4, [r0] + ldr r0, _0813E490 + strh r4, [r0] + ldr r1, _0813E494 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0813E498 + strh r4, [r0] + ldr r2, _0813E49C + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0813E4A0 + bl sub_080006F0 + ldr r0, _0813E4A4 + bl sub_08000540 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E448: .4byte gUnknown_2021C40 +_0813E44C: .4byte gUnknown_2021C54 +_0813E450: .4byte gUnknown_82EA31C +_0813E454: .4byte gUnknown_2021C3C +_0813E458: .4byte gUnknown_203A84C +_0813E45C: .4byte gUnknown_82DDA1C +_0813E460: .4byte gUnknown_2024178 +_0813E464: .4byte gUnknown_2024640 +_0813E468: .4byte gUnknown_82BF310 +_0813E46C: .4byte gUnknown_20205AC +_0813E470: .4byte sub_080394FC +_0813E474: .4byte sub_0813F280 +_0813E478: .4byte gUnknown_3005B60 +_0813E47C: .4byte gUnknown_2022AC8 +_0813E480: .4byte gUnknown_2022ACA +_0813E484: .4byte gUnknown_2022ACC +_0813E488: .4byte gUnknown_2022ACE +_0813E48C: .4byte gUnknown_2022AD0 +_0813E490: .4byte gUnknown_2022AD2 +_0813E494: .4byte gUnknown_2022AD4 +_0813E498: .4byte gUnknown_2022AD6 +_0813E49C: .4byte gUnknown_30030B4 +_0813E4A0: .4byte sub_0813FE2C +_0813E4A4: .4byte sub_0813E4C4 + thumb_func_end sub_0813E2D8 + + thumb_func_start sub_0813E4A8 +sub_0813E4A8: @ 0x0813E4A8 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813E4A8 + + thumb_func_start sub_0813E4C4 +sub_0813E4C4: @ 0x0813E4C4 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0813E4C4 + + thumb_func_start sub_0813E4E0 +sub_0813E4E0: @ 0x0813E4E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r0, #0 + str r0, [sp] + ldr r0, _0813E628 + mov sl, r0 + mov r2, sb + lsls r2, r2, #2 + str r2, [sp, #4] + adds r0, r2, #0 + add r0, sb + lsls r7, r0, #3 + adds r0, r7, #0 + add r0, sl + mov r8, r0 + ldrh r0, [r0] + cmp r0, #0xd + beq _0813E514 + b _0813E616 +_0813E514: + ldr r6, _0813E62C + ldrb r0, [r6] + cmp r0, #5 + bhi _0813E616 + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0813E630 + adds r0, r0, r4 + movs r2, #0x64 + bl sub_0806AED0 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + mov r1, sl + adds r2, r1, r7 + adds r2, #0xc + movs r1, #0xb + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + mov r2, r8 + ldrh r1, [r2, #0xc] + lsls r2, r1, #1 + adds r2, r2, r1 + lsls r2, r2, #1 + ldr r1, _0813E634 + adds r2, r2, r1 + movs r1, #2 + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #8 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r6] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xa + mov r2, sp + bl sub_0806A774 + movs r4, #0x32 + ldr r0, [sp, #4] + mov r8, r0 + adds r5, r6, #0 +_0813E588: + ldrb r1, [r5] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0813E630 + adds r0, r0, r1 + adds r1, r4, #0 + mov r2, sp + bl sub_0806A774 + adds r4, #1 + cmp r4, #0x36 + ble _0813E588 + movs r4, #0x43 + ldr r7, _0813E62C +_0813E5A4: + ldrb r0, [r7] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0813E630 + adds r0, r0, r5 + adds r1, r4, #0 + mov r2, sp + bl sub_0806A774 + adds r4, #1 + cmp r4, #0x4f + ble _0813E5A4 + ldr r4, _0813E62C + ldrb r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + movs r0, #0xff + str r0, [sp] + ldrb r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x40 + mov r2, sp + bl sub_0806A774 + ldrb r0, [r4] + muls r0, r6, r0 + adds r0, r0, r5 + bl sub_0806884C + bl sub_0806B004 + ldr r0, _0813E628 + mov r4, r8 + add r4, sb + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #2 + bl sub_080BFBBC + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl sub_080BFBBC +_0813E616: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E628: .4byte gUnknown_82F5CA4 +_0813E62C: .4byte gUnknown_202418D +_0813E630: .4byte gUnknown_2024190 +_0813E634: .4byte gUnknown_82EA31C + thumb_func_end sub_0813E4E0 + + thumb_func_start sub_0813E638 +sub_0813E638: @ 0x0813E638 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _0813E6A8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r3, r0, r2 + movs r0, #0x1c + ldrsh r1, [r3, r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0813E6AC + adds r1, r1, r0 + mov sb, r1 + ldr r0, _0813E6B0 + ldrh r1, [r0, #0x2c] + adds r5, r2, #0 + adds r6, r0, #0 + cmp r1, #2 + bne _0813E6B8 + movs r1, #8 + ldrsh r0, [r3, r1] + cmp r0, #8 + bne _0813E6B8 + ldr r4, _0813E6B4 + ldrb r0, [r4, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813E6B8 + ldrh r1, [r3, #0xe] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0813E6B8 + movs r0, #0x11 + strh r0, [r3, #8] + ldrb r1, [r4, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r2, [r0, #0x18] + bl sub_081401FC + bl _0813F26C + .align 2, 0 +_0813E6A8: .4byte gUnknown_3005B60 +_0813E6AC: .4byte gUnknown_2024190 +_0813E6B0: .4byte gUnknown_3002360 +_0813E6B4: .4byte gUnknown_2023FD6 +_0813E6B8: + lsls r1, r7, #2 + adds r0, r1, r7 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #8 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, #0x16 + bls _0813E6CE + bl _0813F26C +_0813E6CE: + lsls r0, r0, #2 + ldr r1, _0813E6D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813E6D8: .4byte _0813E6DC +_0813E6DC: @ jump table + .4byte _0813E738 @ case 0 + .4byte _0813E79C @ case 1 + .4byte _0813E7DC @ case 2 + .4byte _0813E808 @ case 3 + .4byte _0813E838 @ case 4 + .4byte _0813E878 @ case 5 + .4byte _0813E8B0 @ case 6 + .4byte _0813E8F0 @ case 7 + .4byte _0813E928 @ case 8 + .4byte _0813E96C @ case 9 + .4byte _0813E988 @ case 10 + .4byte _0813E9B4 @ case 11 + .4byte _0813E9E0 @ case 12 + .4byte _0813EA2C @ case 13 + .4byte _0813EA58 @ case 14 + .4byte _0813EAE4 @ case 15 + .4byte _0813EB90 @ case 16 + .4byte _0813EBFC @ case 17 + .4byte _0813EC3C @ case 18 + .4byte _0813EC70 @ case 19 + .4byte _0813ECD8 @ case 20 + .4byte _0813ED34 @ case 21 + .4byte _0813ED70 @ case 22 +_0813E738: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _0813E790 + ldr r0, _0813E794 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, _0813E798 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + bl _0813F26C + .align 2, 0 +_0813E790: .4byte gUnknown_20205AC +_0813E794: .4byte gUnknown_203A84C +_0813E798: .4byte gUnknown_3005B60 +_0813E79C: + ldr r0, _0813E7CC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813E7AC + bl _0813F26C +_0813E7AC: + ldr r4, _0813E7D0 + ldr r1, _0813E7D4 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813E7D8 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813E7CC: .4byte gUnknown_2037C74 +_0813E7D0: .4byte gUnknown_2021C7C +_0813E7D4: .4byte gUnknown_85ABAFC +_0813E7D8: .4byte gUnknown_3005B60 +_0813E7DC: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813E7EC + bl _0813F26C +_0813E7EC: + ldr r0, _0813E800 + ldr r0, [r0] + ldrb r0, [r0] + ldr r1, _0813E804 + mov r3, r8 + adds r4, r3, r7 + lsls r4, r4, #3 + adds r4, r4, r1 + b _0813EC58 + .align 2, 0 +_0813E800: .4byte gUnknown_203A84C +_0813E804: .4byte gUnknown_3005B60 +_0813E808: + ldr r0, _0813E830 + ldr r0, [r0] + ldrb r0, [r0] + bl sub_081402D0 + cmp r0, #0 + bne _0813E81A + bl _0813F26C +_0813E81A: + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A306C + ldr r0, _0813E834 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813E830: .4byte gUnknown_203A84C +_0813E834: .4byte gUnknown_3005B60 +_0813E838: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0813E848 + bl _0813F26C +_0813E848: + ldr r0, _0813E870 + bl sub_080A27D8 + ldr r0, _0813E874 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + str r4, [sp] + movs r0, #0x1c + movs r1, #4 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + bl _0813F26C + .align 2, 0 +_0813E870: .4byte 0x00000179 +_0813E874: .4byte gUnknown_3005B60 +_0813E878: + ldr r0, _0813E8A4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813E888 + bl _0813F26C +_0813E888: + movs r0, #0 + bl sub_081400C8 + movs r0, #0x11 + bl sub_0817BD54 + ldr r1, _0813E8A8 + strb r0, [r1, #2] + ldr r0, _0813E8AC + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813E8A4: .4byte gUnknown_2037C74 +_0813E8A8: .4byte gUnknown_2023FD6 +_0813E8AC: .4byte gUnknown_3005B60 +_0813E8B0: + ldr r4, _0813E8E8 + ldrb r0, [r4, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813E8C6 + bl _0813F26C +_0813E8C6: + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + ldr r0, _0813E8EC + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #3] + bl sub_0817BE74 + strb r0, [r4, #2] + bl _0813F26C + .align 2, 0 +_0813E8E8: .4byte gUnknown_2023FD6 +_0813E8EC: .4byte gUnknown_203A84C +_0813E8F0: + ldr r4, _0813E920 + ldrb r0, [r4, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813E906 + bl _0813F26C +_0813E906: + ldr r0, _0813E924 + ldr r1, [r0] + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_0817C260 + strb r0, [r4, #2] + mov r0, r8 + adds r1, r0, r7 + lsls r1, r1, #3 + adds r1, r1, r5 + b _0813ED1A + .align 2, 0 +_0813E920: .4byte gUnknown_2023FD6 +_0813E924: .4byte gUnknown_203A84C +_0813E928: + ldr r2, _0813E964 + ldr r1, [r2] + ldrb r0, [r1, #3] + subs r0, #1 + strb r0, [r1, #3] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813E93C + bl _0813F26C +_0813E93C: + ldr r1, [r2] + movs r0, #3 + strb r0, [r1, #3] + ldr r0, _0813E968 + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813E958 + bl _0813F26C +_0813E958: + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r5 + b _0813ED1A + .align 2, 0 +_0813E964: .4byte gUnknown_203A84C +_0813E968: .4byte gUnknown_2023FD6 +_0813E96C: + bl sub_0817BF28 + ldr r1, _0813E980 + strb r0, [r1, #2] + ldr r0, _0813E984 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813E980: .4byte gUnknown_2023FD6 +_0813E984: .4byte gUnknown_3005B60 +_0813E988: + ldr r6, _0813E9B0 + ldrb r0, [r6, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813E99E + bl _0813F26C +_0813E99E: + mov r0, r8 + adds r4, r0, r7 + lsls r4, r4, #3 + adds r4, r4, r5 + ldrh r0, [r4, #0xc] + bl sub_0817C004 + strb r0, [r6, #2] + b _0813EC5E + .align 2, 0 +_0813E9B0: .4byte gUnknown_2023FD6 +_0813E9B4: + ldr r0, _0813E9DC + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813E9CA + bl _0813F26C +_0813E9CA: + movs r0, #0x21 + bl sub_080A306C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r5 + b _0813ED1A + .align 2, 0 +_0813E9DC: .4byte gUnknown_2023FD6 +_0813E9E0: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813E9EE + bl _0813F26C +_0813E9EE: + bl m4aMPlayAllStop + ldr r0, _0813EA20 + ldr r1, _0813EA24 + ldr r1, [r1] + adds r1, #4 + movs r2, #0x60 + bl memcpy + bl sub_0814023C + movs r0, #0 + str r0, [sp] + movs r0, #0x1c + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0813EA28 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813EA20: .4byte gUnknown_20373F4 +_0813EA24: .4byte gUnknown_203A84C +_0813EA28: .4byte gUnknown_3005B60 +_0813EA2C: + ldr r0, _0813EA50 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813EA3C + bl _0813F26C +_0813EA3C: + ldr r0, _0813EA54 + ldr r0, [r0] + ldrb r0, [r0, #1] + mov r1, r8 + adds r4, r1, r7 + lsls r4, r4, #3 + adds r4, r4, r5 + ldrh r1, [r4, #0xc] + b _0813EC5A + .align 2, 0 +_0813EA50: .4byte gUnknown_2037C74 +_0813EA54: .4byte gUnknown_203A84C +_0813EA58: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813EA66 + bl _0813F26C +_0813EA66: + ldr r4, _0813EAD4 + ldr r1, _0813EAD8 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813EADC + bl sub_080A3040 + ldr r2, _0813EAE0 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + adds r2, r2, r1 + adds r2, #0xc + mov r0, sb + movs r1, #0xb + bl sub_0806A774 + mov r0, sb + bl sub_0806884C + ldrh r1, [r4, #0xa] + ldrh r2, [r4, #0xc] + mov r0, sb + bl sub_0806D23C + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #2 + bl sub_080BFBBC + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl sub_080BFBBC + movs r0, #0xe + bl sub_0808414C + b _0813F26C + .align 2, 0 +_0813EAD4: .4byte gUnknown_2021C7C +_0813EAD8: .4byte gUnknown_85ABB0F +_0813EADC: .4byte 0x00000173 +_0813EAE0: .4byte gUnknown_3005B60 +_0813EAE4: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813EAF2 + b _0813F26C +_0813EAF2: + ldr r1, _0813EB50 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r1, [r4, #0x10] + mov r0, sb + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + beq _0813EB70 + movs r3, #0x1a + ldrsh r5, [r4, r3] + cmp r5, #0 + bne _0813EB70 + ldrh r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0813EB26 + bl sub_080A27F8 + bl sub_080850EC +_0813EB26: + ldrh r0, [r4, #0xe] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r4, #0xe] + strh r5, [r4, #0x10] + strh r5, [r4, #0x14] + mov r0, sb + movs r1, #2 + add r2, sp, #4 + bl sub_0806A058 + ldr r0, _0813EB54 + add r1, sp, #4 + bl sub_08008828 + ldr r0, _0813EB58 + cmp r6, r0 + bne _0813EB5C + movs r0, #0x16 + strh r0, [r4, #8] + b _0813F26C + .align 2, 0 +_0813EB50: .4byte gUnknown_3005B60 +_0813EB54: .4byte gUnknown_2022C0C +_0813EB58: .4byte 0x0000FFFF +_0813EB5C: + ldr r0, _0813EB6C + cmp r6, r0 + bne _0813EB64 + b _0813F26C +_0813EB64: + movs r0, #0x14 + strh r0, [r4, #8] + b _0813F26C + .align 2, 0 +_0813EB6C: .4byte 0x0000FFFE +_0813EB70: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0813EB8C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813ED1A + .align 2, 0 +_0813EB8C: .4byte gUnknown_3005B60 +_0813EB90: + ldr r0, _0813EBF0 + ldrb r1, [r0, #7] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0813EBA4 + b _0813F26C +_0813EBA4: + mov r3, r8 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r4, r0, r5 + ldrh r1, [r4, #0xe] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0813EBBE + bl sub_080A27F8 + bl sub_080850EC +_0813EBBE: + movs r1, #0x1a + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0813EBCE + ldrh r0, [r4, #0xa] + mov r1, sb + bl sub_0813E4E0 +_0813EBCE: + adds r0, r7, #0 + bl sub_080A8964 + bl sub_0805ECB0 + ldr r4, _0813EBF4 + ldr r0, [r4] + bl sub_08000BF0 + str r6, [r4] + bl sub_080034D4 + ldr r0, _0813EBF8 + ldr r0, [r0] + bl sub_08000540 + b _0813F26C + .align 2, 0 +_0813EBF0: .4byte gUnknown_2037C74 +_0813EBF4: .4byte gUnknown_203A84C +_0813EBF8: .4byte gUnknown_3005F28 +_0813EBFC: + ldr r0, _0813EC30 + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813EC10 + b _0813F26C +_0813EC10: + bl m4aMPlayAllStop + ldr r0, _0813EC34 + ldr r1, _0813EC38 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r5 + b _0813ED1A + .align 2, 0 +_0813EC30: .4byte gUnknown_2023FD6 +_0813EC34: .4byte 0x0006001C +_0813EC38: .4byte 0x00007FFF +_0813EC3C: + ldr r0, _0813EC68 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813EC4A + b _0813F26C +_0813EC4A: + ldr r0, _0813EC6C + ldr r0, [r0] + ldrb r0, [r0] + mov r3, r8 + adds r4, r3, r7 + lsls r4, r4, #3 + adds r4, r4, r5 +_0813EC58: + ldrh r1, [r4, #0xa] +_0813EC5A: + bl sub_081402A8 +_0813EC5E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0813F26C + .align 2, 0 +_0813EC68: .4byte gUnknown_2037C74 +_0813EC6C: .4byte gUnknown_203A84C +_0813EC70: + ldr r0, _0813EC9C + ldr r0, [r0] + ldrb r0, [r0] + bl sub_081402D0 + cmp r0, #0 + bne _0813EC80 + b _0813F26C +_0813EC80: + ldr r0, _0813ECA0 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #0x1a + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _0813ECAC + ldr r0, _0813ECA4 + ldr r1, _0813ECA8 + bl sub_08008BCC + b _0813ECB4 + .align 2, 0 +_0813EC9C: .4byte gUnknown_203A84C +_0813ECA0: .4byte gUnknown_3005B60 +_0813ECA4: .4byte gUnknown_2021C7C +_0813ECA8: .4byte gUnknown_85ABB3E +_0813ECAC: + ldr r0, _0813ECCC + ldr r1, _0813ECD0 + bl sub_08008BCC +_0813ECB4: + ldr r0, _0813ECCC + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0813ECD4 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #0x1a] + b _0813F236 + .align 2, 0 +_0813ECCC: .4byte gUnknown_2021C7C +_0813ECD0: .4byte gUnknown_85ABB28 +_0813ECD4: .4byte gUnknown_3005B60 +_0813ECD8: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813ECE6 + b _0813F26C +_0813ECE6: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813ECF2 + b _0813F26C +_0813ECF2: + bl sub_0804F180 + ldr r0, _0813ED24 + bl sub_080A29AC + ldr r0, _0813ED28 + ldr r0, [r0, #0xc] + bl sub_0814E7A0 + ldr r0, _0813ED2C + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813ED30 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x40 + strh r0, [r1, #0x10] +_0813ED1A: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0813F26C + .align 2, 0 +_0813ED24: .4byte 0x0000016F +_0813ED28: .4byte gUnknown_85AB3DC +_0813ED2C: .4byte gUnknown_2022AE0 +_0813ED30: .4byte gUnknown_3005B60 +_0813ED34: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813ED42 + b _0813F26C +_0813ED42: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813ED4E + b _0813F26C +_0813ED4E: + ldr r0, _0813ED6C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x10] + subs r0, #1 + strh r0, [r1, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813ED66 + b _0813F26C +_0813ED66: + movs r0, #0xf + strh r0, [r1, #8] + b _0813F26C + .align 2, 0 +_0813ED6C: .4byte gUnknown_3005B60 +_0813ED70: + mov r3, r8 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x14 + ldrsh r0, [r0, r1] + cmp r0, #0xc + bls _0813ED82 + b _0813F26C +_0813ED82: + lsls r0, r0, #2 + ldr r1, _0813ED8C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813ED8C: .4byte _0813ED90 +_0813ED90: @ jump table + .4byte _0813EDC4 @ case 0 + .4byte _0813EE10 @ case 1 + .4byte _0813EE58 @ case 2 + .4byte _0813EE96 @ case 3 + .4byte _0813EEFC @ case 4 + .4byte _0813EFF8 @ case 5 + .4byte _0813F050 @ case 6 + .4byte _0813F124 @ case 7 + .4byte _0813F158 @ case 8 + .4byte _0813F1A0 @ case 9 + .4byte _0813F1E8 @ case 10 + .4byte _0813F21C @ case 11 + .4byte _0813F248 @ case 12 +_0813EDC4: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813EDD2 + b _0813F26C +_0813EDD2: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813EDDE + b _0813F26C +_0813EDDE: + bl sub_0804F180 + ldr r0, _0813EE04 + ldr r0, [r0, #0x10] + bl sub_0814E7A0 + ldr r0, _0813EE08 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813EE0C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813F26A + .align 2, 0 +_0813EE04: .4byte gUnknown_85AB3DC +_0813EE08: .4byte gUnknown_2022AE0 +_0813EE0C: .4byte gUnknown_3005B60 +_0813EE10: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813EE1E + b _0813F26C +_0813EE1E: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813EE2A + b _0813F26C +_0813EE2A: + ldr r0, _0813EE4C + ldr r0, [r0, #0x14] + bl sub_0814E7A0 + ldr r0, _0813EE50 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813EE54 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813F26A + .align 2, 0 +_0813EE4C: .4byte gUnknown_85AB3DC +_0813EE50: .4byte gUnknown_2022AE0 +_0813EE54: .4byte gUnknown_3005B60 +_0813EE58: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813EE96 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813EE96 + ldr r0, _0813EEE8 + ldr r0, [r0, #0x18] + bl sub_0814E7A0 + ldr r0, _0813EEEC + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813EEF0 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #5 + strh r0, [r1, #0x16] + movs r0, #0xa + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x14] + adds r0, #1 + strh r0, [r1, #0x14] +_0813EE96: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813EEA4 + b _0813F26C +_0813EEA4: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0813EEB2 + b _0813F26C +_0813EEB2: + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + ldr r0, _0813EEF4 + movs r1, #0xc + bl sub_0814FA04 + ldr r0, _0813EEF0 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + movs r2, #0 + strh r0, [r1, #0x14] + ldr r0, _0813EEF8 + strb r2, [r0, #1] + movs r0, #0 + bl sub_08056784 + b _0813F26C + .align 2, 0 +_0813EEE8: .4byte gUnknown_85AB3DC +_0813EEEC: .4byte gUnknown_2022AE0 +_0813EEF0: .4byte gUnknown_3005B60 +_0813EEF4: .4byte gUnknown_85ABBC9 +_0813EEF8: .4byte gUnknown_2023FD6 +_0813EEFC: + ldr r0, _0813EF88 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0813EF24 + ldr r4, _0813EF8C + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0813EF24 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #0 + strb r0, [r4, #1] + bl sub_08056784 +_0813EF24: + ldr r0, _0813EF88 + ldrh r1, [r0, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813EF4C + ldr r4, _0813EF8C + ldrb r0, [r4, #1] + cmp r0, #0 + bne _0813EF4C + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #1] + bl sub_080567BC + movs r0, #1 + strb r0, [r4, #1] + bl sub_08056784 +_0813EF4C: + ldr r0, _0813EF88 + ldrh r1, [r0, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0813EFBA + str r2, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + movs r0, #5 + bl sub_080A306C + ldr r0, _0813EF8C + ldrb r2, [r0, #1] + cmp r2, #0 + beq _0813EF94 + ldr r0, _0813EF90 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x18] + strh r0, [r1, #0x14] + b _0813EFBA + .align 2, 0 +_0813EF88: .4byte gUnknown_3002360 +_0813EF8C: .4byte gUnknown_2023FD6 +_0813EF90: .4byte gUnknown_3005B60 +_0813EF94: + ldr r0, _0813EFF0 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x16] + strh r0, [r1, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0813EFBA + movs r0, #1 + rsbs r0, r0, #0 + str r2, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0813EFBA: + ldr r0, _0813EFF4 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0813EFC8 + b _0813F26C +_0813EFC8: + movs r0, #1 + str r0, [sp] + movs r0, #0x18 + movs r1, #8 + movs r2, #0x1d + movs r3, #0xd + bl sub_0805664C + movs r0, #5 + bl sub_080A306C + ldr r1, _0813EFF0 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + strh r1, [r0, #0x14] + b _0813F26C + .align 2, 0 +_0813EFF0: .4byte gUnknown_3005B60 +_0813EFF4: .4byte gUnknown_3002360 +_0813EFF8: + ldr r0, _0813F038 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813F006 + b _0813F26C +_0813F006: + bl sub_080034D4 + ldr r0, _0813F03C + ldr r1, _0813F040 + mov r3, r8 + adds r5, r3, r7 + lsls r5, r5, #3 + adds r5, r5, r1 + ldrb r1, [r5, #0x1c] + ldr r2, _0813F044 + ldrb r2, [r2] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _0813F048 + ldr r4, _0813F04C + ldrh r4, [r4] + str r4, [sp] + bl sub_081BF3CC + ldrh r0, [r5, #0x14] + adds r0, #1 + strh r0, [r5, #0x14] + b _0813F26C + .align 2, 0 +_0813F038: .4byte gUnknown_2037C74 +_0813F03C: .4byte gUnknown_2024190 +_0813F040: .4byte gUnknown_3005B60 +_0813F044: .4byte gUnknown_202418D +_0813F048: .4byte sub_0813DE80 +_0813F04C: .4byte gUnknown_2024186 +_0813F050: + ldr r0, _0813F084 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813F05E + b _0813F26C +_0813F05E: + ldr r1, [r6, #4] + ldr r0, _0813F088 + cmp r1, r0 + beq _0813F068 + b _0813F26C +_0813F068: + bl sub_081C14C8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #4 + bne _0813F090 + ldr r0, _0813F08C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xa + b _0813F26A + .align 2, 0 +_0813F084: .4byte gUnknown_2037C74 +_0813F088: .4byte sub_0813E4A8 +_0813F08C: .4byte gUnknown_3005B60 +_0813F090: + adds r1, r6, #0 + adds r1, #0xd + mov r0, sb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0806E290 + cmp r0, #0 + beq _0813F0DC + ldr r0, _0813F0CC + ldr r3, _0813F0D0 + adds r0, r0, r3 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r0, _0813F0D4 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0813F0D8 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xc + strh r1, [r0, #0x14] + b _0813F26C + .align 2, 0 +_0813F0CC: .4byte gUnknown_85AB3DC +_0813F0D0: .4byte 0x000004CC +_0813F0D4: .4byte gUnknown_2022AE0 +_0813F0D8: .4byte gUnknown_3005B60 +_0813F0DC: + ldr r1, _0813F118 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + strb r4, [r1, #2] + lsrs r0, r4, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + adds r1, r4, #0 + bl sub_0806B46C + ldr r0, _0813F11C + ldrh r1, [r0] + mov r0, sb + adds r2, r4, #0 + bl sub_08068D34 + ldr r0, _0813F120 + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813F26A + .align 2, 0 +_0813F118: .4byte gUnknown_2022C1C +_0813F11C: .4byte gUnknown_2024186 +_0813F120: .4byte gUnknown_3005B60 +_0813F124: + ldr r0, _0813F14C + movs r1, #0xcf + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r0, _0813F150 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813F154 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813F26A + .align 2, 0 +_0813F14C: .4byte gUnknown_85AB3DC +_0813F150: .4byte gUnknown_2022AE0 +_0813F154: .4byte gUnknown_3005B60 +_0813F158: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F166 + b _0813F26C +_0813F166: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813F172 + b _0813F26C +_0813F172: + ldr r0, _0813F194 + ldr r0, [r0, #0x1c] + bl sub_0814E7A0 + ldr r0, _0813F198 + movs r1, #0 + bl sub_0814FA04 + ldr r0, _0813F19C + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813F26A + .align 2, 0 +_0813F194: .4byte gUnknown_85AB3DC +_0813F198: .4byte gUnknown_2022AE0 +_0813F19C: .4byte gUnknown_3005B60 +_0813F1A0: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813F26C + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F26C + ldr r0, _0813F1DC + movs r1, #0xd0 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r0, _0813F1E0 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0813F1E4 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x14 + strh r1, [r0, #8] + b _0813F26C + .align 2, 0 +_0813F1DC: .4byte gUnknown_85AB3DC +_0813F1E0: .4byte gUnknown_2022AE0 +_0813F1E4: .4byte gUnknown_3005B60 +_0813F1E8: + ldr r0, _0813F210 + ldr r0, [r0, #0x20] + bl sub_0814E7A0 + ldr r0, _0813F214 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0813F218 + mov r3, r8 + adds r0, r3, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0xb + strh r1, [r0, #0x16] + strh r2, [r0, #0x18] + movs r1, #3 + strh r1, [r0, #0x14] + b _0813F26C + .align 2, 0 +_0813F210: .4byte gUnknown_85AB3DC +_0813F214: .4byte gUnknown_2022AE0 +_0813F218: .4byte gUnknown_3005B60 +_0813F21C: + ldr r0, _0813F23C + ldr r0, [r0, #0x24] + bl sub_0814E7A0 + ldr r0, _0813F240 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0813F244 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 +_0813F236: + movs r1, #0xf + strh r1, [r0, #8] + b _0813F26C + .align 2, 0 +_0813F23C: .4byte gUnknown_85AB3DC +_0813F240: .4byte gUnknown_2022AE0 +_0813F244: .4byte gUnknown_3005B60 +_0813F248: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813F26C + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F26C + ldr r0, _0813F27C + mov r3, r8 + adds r1, r3, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #5 +_0813F26A: + strh r0, [r1, #0x14] +_0813F26C: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813F27C: .4byte gUnknown_3005B60 + thumb_func_end sub_0813E638 + + thumb_func_start sub_0813F280 +sub_0813F280: @ 0x0813F280 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, _0813F2C0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #0x1c + ldrsh r2, [r0, r1] + movs r1, #0x64 + muls r2, r1, r2 + ldr r1, _0813F2C4 + adds r2, r2, r1 + mov sb, r2 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r5, r3, #0 + cmp r0, #0x14 + bls _0813F2B4 + bl _0813FD8C +_0813F2B4: + lsls r0, r0, #2 + ldr r1, _0813F2C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813F2C0: .4byte gUnknown_3005B60 +_0813F2C4: .4byte gUnknown_2024190 +_0813F2C8: .4byte _0813F2CC +_0813F2CC: @ jump table + .4byte _0813F320 @ case 0 + .4byte _0813F34C @ case 1 + .4byte _0813F374 @ case 2 + .4byte _0813F3A4 @ case 3 + .4byte _0813F3DC @ case 4 + .4byte _0813F448 @ case 5 + .4byte _0813F488 @ case 6 + .4byte _0813F4B8 @ case 7 + .4byte _0813F4F4 @ case 8 + .4byte _0813F510 @ case 9 + .4byte _0813F53C @ case 10 + .4byte _0813F560 @ case 11 + .4byte _0813F5A0 @ case 12 + .4byte _0813F62C @ case 13 + .4byte _0813F6E0 @ case 14 + .4byte _0813F724 @ case 15 + .4byte _0813F78C @ case 16 + .4byte _0813F7C0 @ case 17 + .4byte _0813F804 @ case 18 + .4byte _0813F860 @ case 19 + .4byte _0813F8A0 @ case 20 +_0813F320: + ldr r4, _0813F340 + ldr r1, _0813F344 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813F348 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + b _0813F770 + .align 2, 0 +_0813F340: .4byte gUnknown_2021C7C +_0813F344: .4byte gUnknown_85ABAFC +_0813F348: .4byte gUnknown_3005B60 +_0813F34C: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F35C + bl _0813FD8C +_0813F35C: + ldr r0, _0813F370 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0xa] + movs r1, #0 + bl sub_080A2B3C + b _0813F7AE + .align 2, 0 +_0813F370: .4byte gUnknown_3005B60 +_0813F374: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F382 + bl _0813FD8C +_0813F382: + ldr r0, _0813F39C + bl m4aSongNumStop + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A306C + ldr r1, _0813F3A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + b _0813F770 + .align 2, 0 +_0813F39C: .4byte 0x00000179 +_0813F3A0: .4byte gUnknown_3005B60 +_0813F3A4: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _0813F3B4 + bl _0813FD8C +_0813F3B4: + ldr r0, _0813F3D4 + bl sub_080A3040 + ldr r1, _0813F3D8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + str r5, [sp] + movs r0, #0x1c + movs r1, #4 + b _0813FA90 + .align 2, 0 +_0813F3D4: .4byte 0x00000179 +_0813F3D8: .4byte gUnknown_3005B60 +_0813F3DC: + ldr r0, _0813F430 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813F3EC + bl _0813FD8C +_0813F3EC: + movs r0, #1 + bl sub_081400C8 + ldr r2, _0813F434 + ldr r0, _0813F438 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + adds r6, r0, #0 + adds r6, #0x10 + adds r0, r6, #0 + bl sub_0817BD54 + ldr r1, _0813F43C + strb r0, [r1, #2] + ldr r1, _0813F440 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + ldr r1, _0813F444 + movs r0, #0xe + bl sub_08001144 + bl _0813FD8C + .align 2, 0 +_0813F430: .4byte gUnknown_2037C74 +_0813F434: .4byte gUnknown_20205AC +_0813F438: .4byte gUnknown_203A84C +_0813F43C: .4byte gUnknown_2023FD6 +_0813F440: .4byte gUnknown_3005B60 +_0813F444: .4byte 0x00000603 +_0813F448: + ldr r4, _0813F480 + ldrb r0, [r4, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813F45E + bl _0813FD8C +_0813F45E: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + ldr r0, _0813F484 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #3] + bl sub_0817BE74 + strb r0, [r4, #2] + bl _0813FD8C + .align 2, 0 +_0813F480: .4byte gUnknown_2023FD6 +_0813F484: .4byte gUnknown_203A84C +_0813F488: + ldr r4, _0813F4B0 + ldrb r0, [r4, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813F49E + bl _0813FD8C +_0813F49E: + ldr r0, _0813F4B4 + ldr r1, [r0] + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_0817C260 + strb r0, [r4, #2] + b _0813F768 + .align 2, 0 +_0813F4B0: .4byte gUnknown_2023FD6 +_0813F4B4: .4byte gUnknown_203A84C +_0813F4B8: + ldr r2, _0813F4EC + ldr r1, [r2] + ldrb r0, [r1, #3] + subs r0, #1 + strb r0, [r1, #3] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813F4CC + bl _0813FD8C +_0813F4CC: + ldr r1, [r2] + movs r0, #3 + strb r0, [r1, #3] + ldr r0, _0813F4F0 + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813F4E8 + bl _0813FD8C +_0813F4E8: + b _0813F768 + .align 2, 0 +_0813F4EC: .4byte gUnknown_203A84C +_0813F4F0: .4byte gUnknown_2023FD6 +_0813F4F4: + bl sub_0817BF28 + ldr r1, _0813F508 + strb r0, [r1, #2] + ldr r1, _0813F50C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + b _0813F770 + .align 2, 0 +_0813F508: .4byte gUnknown_2023FD6 +_0813F50C: .4byte gUnknown_3005B60 +_0813F510: + ldr r6, _0813F538 + ldrb r0, [r6, #2] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0813F526 + bl _0813FD8C +_0813F526: + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r5 + ldrh r0, [r4, #0xc] + bl sub_0817C140 + strb r0, [r6, #2] + b _0813F7AE + .align 2, 0 +_0813F538: .4byte gUnknown_2023FD6 +_0813F53C: + ldr r0, _0813F55C + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813F552 + bl _0813FD8C +_0813F552: + movs r0, #0x21 + bl sub_080A306C + b _0813F768 + .align 2, 0 +_0813F55C: .4byte gUnknown_2023FD6 +_0813F560: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F56E + bl _0813FD8C +_0813F56E: + ldr r5, _0813F594 + ldr r0, [r5] + ldrb r0, [r0, #1] + ldr r1, _0813F598 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r1, [r4, #0xc] + bl sub_081402A8 + ldr r0, _0813F59C + ldr r1, [r5] + adds r1, #4 + movs r2, #0x60 + bl memcpy + b _0813F7AE + .align 2, 0 +_0813F594: .4byte gUnknown_203A84C +_0813F598: .4byte gUnknown_3005B60 +_0813F59C: .4byte gUnknown_20373F4 +_0813F5A0: + bl sub_080A2F40 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F5AE + bl _0813FD8C +_0813F5AE: + ldr r4, _0813F61C + ldr r1, _0813F620 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813F624 + bl sub_080A29AC + ldr r2, _0813F628 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + adds r2, r2, r1 + adds r2, #0xc + mov r0, sb + movs r1, #0xb + bl sub_0806A774 + mov r0, sb + bl sub_0806884C + ldrh r1, [r4, #0xa] + ldrh r2, [r4, #0xc] + mov r0, sb + bl sub_0806D23C + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #2 + bl sub_080BFBBC + ldrh r0, [r4, #0xc] + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl sub_080BFBBC + movs r0, #0xe + bl sub_0808414C + b _0813FD8C + .align 2, 0 +_0813F61C: .4byte gUnknown_2021C7C +_0813F620: .4byte gUnknown_85ABB0F +_0813F624: .4byte 0x00000173 +_0813F628: .4byte gUnknown_3005B60 +_0813F62C: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F63A + b _0813FD8C +_0813F63A: + bl sub_080A29E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813F648 + b _0813FD8C +_0813F648: + ldr r1, _0813F698 + lsls r4, r7, #2 + adds r0, r4, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrb r1, [r5, #0x10] + mov r0, sb + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r8, r4 + cmp r6, #0 + beq _0813F6B8 + movs r0, #0x1a + ldrsh r2, [r5, r0] + cmp r2, #0 + bne _0813F6B8 + ldrh r1, [r5, #0xe] + movs r0, #0x80 + orrs r0, r1 + strh r0, [r5, #0xe] + strh r2, [r5, #0x10] + strh r2, [r5, #0x14] + mov r0, sb + movs r1, #2 + add r2, sp, #0xc + bl sub_0806A058 + ldr r0, _0813F69C + add r1, sp, #0xc + bl sub_08008828 + ldr r0, _0813F6A0 + cmp r6, r0 + bne _0813F6A4 + movs r0, #0x14 + strh r0, [r5, #8] + b _0813FD8C + .align 2, 0 +_0813F698: .4byte gUnknown_3005B60 +_0813F69C: .4byte gUnknown_2022C0C +_0813F6A0: .4byte 0x0000FFFF +_0813F6A4: + ldr r0, _0813F6B4 + cmp r6, r0 + bne _0813F6AC + b _0813FD8C +_0813F6AC: + movs r0, #0x12 + strh r0, [r5, #8] + b _0813FD8C + .align 2, 0 +_0813F6B4: .4byte 0x0000FFFE +_0813F6B8: + ldr r0, _0813F6D4 + bl sub_080A3040 + ldr r1, _0813F6D8 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813F6DC + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0813F848 + .align 2, 0 +_0813F6D4: .4byte 0x00000179 +_0813F6D8: .4byte gUnknown_8595430 +_0813F6DC: .4byte gUnknown_3005B60 +_0813F6E0: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _0813F6F0 + b _0813FD8C +_0813F6F0: + adds r0, r7, #0 + bl sub_080A8964 + ldr r4, _0813F718 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r2, _0813F71C + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0813F720 + ldr r0, [r0] + bl sub_08000540 + b _0813FD8C + .align 2, 0 +_0813F718: .4byte gUnknown_203A84C +_0813F71C: .4byte gUnknown_30030B4 +_0813F720: .4byte gUnknown_3005F28 +_0813F724: + ldr r0, _0813F778 + ldrb r1, [r0, #2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0813F738 + b _0813FD8C +_0813F738: + bl m4aMPlayAllStop + ldr r2, _0813F77C + ldr r0, _0813F780 + ldr r0, [r0] + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + ldr r1, _0813F784 + orrs r0, r1 + ldr r1, _0813F788 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_0813F768: + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r5 +_0813F770: + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _0813FD8C + .align 2, 0 +_0813F778: .4byte gUnknown_2023FD6 +_0813F77C: .4byte gUnknown_20205AC +_0813F780: .4byte gUnknown_203A84C +_0813F784: .4byte 0x0004001C +_0813F788: .4byte 0x00007FFF +_0813F78C: + ldr r0, _0813F7B8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813F79A + b _0813FD8C +_0813F79A: + ldr r0, _0813F7BC + ldr r0, [r0] + ldrb r0, [r0] + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r5 + ldrh r1, [r4, #0xa] + bl sub_081402A8 +_0813F7AE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0813FD8C + .align 2, 0 +_0813F7B8: .4byte gUnknown_2037C74 +_0813F7BC: .4byte gUnknown_203A84C +_0813F7C0: + ldr r0, _0813F7F4 + ldr r0, [r0] + ldrb r0, [r0] + bl sub_081402D0 + cmp r0, #0 + bne _0813F7D0 + b _0813FD8C +_0813F7D0: + ldr r4, _0813F7F8 + ldr r1, _0813F7FC + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813F800 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #0x1a] + b _0813FD54 + .align 2, 0 +_0813F7F4: .4byte gUnknown_203A84C +_0813F7F8: .4byte gUnknown_2021C7C +_0813F7FC: .4byte gUnknown_85ABB3E +_0813F800: .4byte gUnknown_3005B60 +_0813F804: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F812 + b _0813FD8C +_0813F812: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813F81E + b _0813FD8C +_0813F81E: + bl sub_0804F180 + ldr r0, _0813F850 + bl sub_080A29AC + ldr r0, _0813F854 + ldr r0, [r0, #0xc] + bl sub_0814E7A0 + ldr r1, _0813F858 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813F85C + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x40 + strh r0, [r1, #0x10] +_0813F848: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0813FD8C + .align 2, 0 +_0813F850: .4byte 0x0000016F +_0813F854: .4byte gUnknown_85AB3DC +_0813F858: .4byte gUnknown_2022AE0 +_0813F85C: .4byte gUnknown_3005B60 +_0813F860: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F86E + b _0813FD8C +_0813F86E: + bl sub_080A29E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0813F87C + b _0813FD8C +_0813F87C: + ldr r0, _0813F89C + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x10] + subs r0, #1 + strh r0, [r1, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F894 + b _0813FD8C +_0813F894: + movs r0, #0xd + strh r0, [r1, #8] + b _0813FD8C + .align 2, 0 +_0813F89C: .4byte gUnknown_3005B60 +_0813F8A0: + lsls r1, r7, #2 + adds r0, r1, r7 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0x14 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, #0xb + bls _0813F8B4 + b _0813FD8C +_0813F8B4: + lsls r0, r0, #2 + ldr r1, _0813F8C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813F8C0: .4byte _0813F8C4 +_0813F8C4: @ jump table + .4byte _0813F8F4 @ case 0 + .4byte _0813F940 @ case 1 + .4byte _0813F988 @ case 2 + .4byte _0813F9C8 @ case 3 + .4byte _0813FA34 @ case 4 + .4byte _0813FAEC @ case 5 + .4byte _0813FB70 @ case 6 + .4byte _0813FC6C @ case 7 + .4byte _0813FCB4 @ case 8 + .4byte _0813FD00 @ case 9 + .4byte _0813FD38 @ case 10 + .4byte _0813FD68 @ case 11 +_0813F8F4: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F902 + b _0813FD8C +_0813F902: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813F90E + b _0813FD8C +_0813F90E: + bl sub_0804F180 + ldr r0, _0813F934 + ldr r0, [r0, #0x10] + bl sub_0814E7A0 + ldr r1, _0813F938 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813F93C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813FD8A + .align 2, 0 +_0813F934: .4byte gUnknown_85AB3DC +_0813F938: .4byte gUnknown_2022AE0 +_0813F93C: .4byte gUnknown_3005B60 +_0813F940: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F94E + b _0813FD8C +_0813F94E: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813F95A + b _0813FD8C +_0813F95A: + ldr r0, _0813F97C + ldr r0, [r0, #0x14] + bl sub_0814E7A0 + ldr r1, _0813F980 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813F984 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813FD8A + .align 2, 0 +_0813F97C: .4byte gUnknown_85AB3DC +_0813F980: .4byte gUnknown_2022AE0 +_0813F984: .4byte gUnknown_3005B60 +_0813F988: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813F9C8 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813F9C8 + ldr r0, _0813FA20 + ldr r0, [r0, #0x18] + bl sub_0814E7A0 + ldr r1, _0813FA24 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813FA28 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #5 + strh r0, [r1, #0x16] + movs r0, #9 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x14] + adds r0, #1 + strh r0, [r1, #0x14] +_0813F9C8: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813F9D6 + b _0813FD8C +_0813F9D6: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0813F9E4 + b _0813FD8C +_0813F9E4: + movs r0, #0 + movs r1, #0xa8 + movs r2, #0xe0 + bl sub_080981B4 + ldr r0, _0813FA2C + movs r1, #0xa8 + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + ldr r3, _0813FA30 + strb r4, [r3, #1] + ldr r0, _0813FA28 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + movs r2, #0 + strh r0, [r1, #0x14] + strb r2, [r3, #1] + b _0813FD8C + .align 2, 0 +_0813FA20: .4byte gUnknown_85AB3DC +_0813FA24: .4byte gUnknown_2022AE0 +_0813FA28: .4byte gUnknown_3005B60 +_0813FA2C: .4byte gUnknown_830D28C +_0813FA30: .4byte gUnknown_2023FD6 +_0813FA34: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r6, r0, #0x18 + cmp r6, #0 + beq _0813FA54 + cmp r6, #0 + bgt _0813FA4E + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + beq _0813FAAC + b _0813FD8C +_0813FA4E: + cmp r6, #1 + beq _0813FAAC + b _0813FD8C +_0813FA54: + ldr r0, _0813FA9C + strb r6, [r0, #1] + ldr r0, _0813FAA0 + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r1, _0813FAA4 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FAA8 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x16] + strh r1, [r0, #0x14] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #5 + beq _0813FA88 + b _0813FD8C +_0813FA88: + movs r0, #1 + rsbs r0, r0, #0 + str r6, [sp] + movs r1, #0 +_0813FA90: + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0813FD8C + .align 2, 0 +_0813FA9C: .4byte gUnknown_2023FD6 +_0813FAA0: .4byte gUnknown_85AB3DC +_0813FAA4: .4byte gUnknown_2022AE0 +_0813FAA8: .4byte gUnknown_3005B60 +_0813FAAC: + ldr r1, _0813FADC + movs r0, #1 + strb r0, [r1, #1] + ldr r0, _0813FAE0 + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r1, _0813FAE4 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FAE8 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + strh r1, [r0, #0x14] + b _0813FD8C + .align 2, 0 +_0813FADC: .4byte gUnknown_2023FD6 +_0813FAE0: .4byte gUnknown_85AB3DC +_0813FAE4: .4byte gUnknown_2022AE0 +_0813FAE8: .4byte gUnknown_3005B60 +_0813FAEC: + ldr r0, _0813FB54 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813FAFA + b _0813FD8C +_0813FAFA: + ldr r0, _0813FB58 + ldrb r0, [r0] + cmp r0, #0 + beq _0813FB06 + bl sub_0800DB50 +_0813FB06: + movs r0, #3 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #1 + bl sub_08002194 + bl sub_08000BF0 + movs r0, #0 + bl sub_08002194 + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _0813FB5C + ldr r1, _0813FB60 + mov r2, r8 + adds r5, r2, r7 + lsls r5, r5, #3 + adds r5, r5, r1 + ldrb r1, [r5, #0x1c] + ldr r2, _0813FB64 + ldrb r2, [r2] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _0813FB68 + ldr r4, _0813FB6C + ldrh r4, [r4] + str r4, [sp] + bl sub_081BF3CC + ldrh r0, [r5, #0x14] + adds r0, #1 + strh r0, [r5, #0x14] + b _0813FD8C + .align 2, 0 +_0813FB54: .4byte gUnknown_2037C74 +_0813FB58: .4byte gUnknown_300319C +_0813FB5C: .4byte gUnknown_2024190 +_0813FB60: .4byte gUnknown_3005B60 +_0813FB64: .4byte gUnknown_202418D +_0813FB68: .4byte sub_0813E074 +_0813FB6C: .4byte gUnknown_2024186 +_0813FB70: + ldr r0, _0813FBA4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0813FB7E + b _0813FD8C +_0813FB7E: + ldr r0, _0813FBA8 + ldr r1, [r0, #4] + ldr r0, _0813FBAC + cmp r1, r0 + beq _0813FB8A + b _0813FD8C +_0813FB8A: + bl sub_081C14C8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #4 + bne _0813FBB4 + ldr r0, _0813FBB0 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #9 + b _0813FD8A + .align 2, 0 +_0813FBA4: .4byte gUnknown_2037C74 +_0813FBA8: .4byte gUnknown_3002360 +_0813FBAC: .4byte sub_0813E4C4 +_0813FBB0: .4byte gUnknown_3005B60 +_0813FBB4: + adds r1, r6, #0 + adds r1, #0xd + mov r0, sb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + bl sub_0806E290 + cmp r0, #0 + beq _0813FC04 + ldr r0, _0813FBF4 + ldr r1, _0813FBF8 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r1, _0813FBFC + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FC00 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xb + strh r1, [r0, #0x14] + b _0813FD8C + .align 2, 0 +_0813FBF4: .4byte gUnknown_85AB3DC +_0813FBF8: .4byte 0x000004CC +_0813FBFC: .4byte gUnknown_2022AE0 +_0813FC00: .4byte gUnknown_3005B60 +_0813FC04: + ldr r1, _0813FC58 + movs r0, #0xfd + strb r0, [r1] + movs r0, #2 + strb r0, [r1, #1] + strb r4, [r1, #2] + lsrs r0, r4, #8 + strb r0, [r1, #3] + movs r0, #0xff + strb r0, [r1, #4] + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + adds r1, r4, #0 + bl sub_0806B46C + ldr r0, _0813FC5C + ldrh r1, [r0] + mov r0, sb + adds r2, r4, #0 + bl sub_08068D34 + ldr r0, _0813FC60 + movs r1, #0xcf + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r1, _0813FC64 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813FC68 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813FD8A + .align 2, 0 +_0813FC58: .4byte gUnknown_2022C1C +_0813FC5C: .4byte gUnknown_2024186 +_0813FC60: .4byte gUnknown_85AB3DC +_0813FC64: .4byte gUnknown_2022AE0 +_0813FC68: .4byte gUnknown_3005B60 +_0813FC6C: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0813FC7A + b _0813FD8C +_0813FC7A: + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0813FC86 + b _0813FD8C +_0813FC86: + ldr r0, _0813FCA8 + ldr r0, [r0, #0x1c] + bl sub_0814E7A0 + ldr r1, _0813FCAC + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r0, _0813FCB0 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x14] + adds r0, #1 + b _0813FD8A + .align 2, 0 +_0813FCA8: .4byte gUnknown_85AB3DC +_0813FCAC: .4byte gUnknown_2022AE0 +_0813FCB0: .4byte gUnknown_3005B60 +_0813FCB4: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813FD8C + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813FD8C + ldr r0, _0813FCF4 + movs r1, #0xd0 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0814E7A0 + ldr r1, _0813FCF8 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FCFC + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x12 + strh r1, [r0, #8] + b _0813FD8C + .align 2, 0 +_0813FCF4: .4byte gUnknown_85AB3DC +_0813FCF8: .4byte gUnknown_2022AE0 +_0813FCFC: .4byte gUnknown_3005B60 +_0813FD00: + ldr r0, _0813FD2C + ldr r0, [r0, #0x20] + bl sub_0814E7A0 + ldr r1, _0813FD30 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FD34 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0xa + strh r1, [r0, #0x16] + strh r2, [r0, #0x18] + movs r1, #3 + strh r1, [r0, #0x14] + b _0813FD8C + .align 2, 0 +_0813FD2C: .4byte gUnknown_85AB3DC +_0813FD30: .4byte gUnknown_2022AE0 +_0813FD34: .4byte gUnknown_3005B60 +_0813FD38: + ldr r0, _0813FD5C + ldr r0, [r0, #0x24] + bl sub_0814E7A0 + ldr r1, _0813FD60 + movs r0, #0 + movs r2, #1 + bl sub_0807EBE0 + ldr r1, _0813FD64 + mov r2, r8 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r0, r0, r1 +_0813FD54: + movs r1, #0xd + strh r1, [r0, #8] + b _0813FD8C + .align 2, 0 +_0813FD5C: .4byte gUnknown_85AB3DC +_0813FD60: .4byte gUnknown_2022AE0 +_0813FD64: .4byte gUnknown_3005B60 +_0813FD68: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0813FD8C + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0813FD8C + ldr r0, _0813FD9C + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #5 +_0813FD8A: + strh r0, [r1, #0x14] +_0813FD8C: + add sp, #0x20 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0813FD9C: .4byte gUnknown_3005B60 + thumb_func_end sub_0813F280 + + thumb_func_start sub_0813FDA0 +sub_0813FDA0: @ 0x0813FDA0 + bx lr + .align 2, 0 + thumb_func_end sub_0813FDA0 + + thumb_func_start sub_0813FDA4 +sub_0813FDA4: @ 0x0813FDA4 + push {lr} + ldr r0, _0813FE0C + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _0813FE10 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _0813FE14 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _0813FE18 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _0813FE1C + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _0813FE20 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, _0813FE24 + ldrh r1, [r0] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _0813FE28 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_0813FE0C: .4byte gUnknown_2022AC8 +_0813FE10: .4byte gUnknown_2022ACA +_0813FE14: .4byte gUnknown_2022ACC +_0813FE18: .4byte gUnknown_2022ACE +_0813FE1C: .4byte gUnknown_2022AD0 +_0813FE20: .4byte gUnknown_2022AD2 +_0813FE24: .4byte gUnknown_2022AD4 +_0813FE28: .4byte gUnknown_2022AD6 + thumb_func_end sub_0813FDA4 + + thumb_func_start sub_0813FE2C +sub_0813FE2C: @ 0x0813FE2C + push {lr} + ldr r0, _0813FE94 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _0813FE98 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _0813FE9C + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _0813FEA0 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _0813FEA4 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _0813FEA8 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + ldr r0, _0813FEAC + ldrh r1, [r0] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _0813FEB0 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_0813FE94: .4byte gUnknown_2022AC8 +_0813FE98: .4byte gUnknown_2022ACA +_0813FE9C: .4byte gUnknown_2022ACC +_0813FEA0: .4byte gUnknown_2022ACE +_0813FEA4: .4byte gUnknown_2022AD0 +_0813FEA8: .4byte gUnknown_2022AD2 +_0813FEAC: .4byte gUnknown_2022AD4 +_0813FEB0: .4byte gUnknown_2022AD6 + thumb_func_end sub_0813FE2C + + thumb_func_start sub_0813FEB4 +sub_0813FEB4: @ 0x0813FEB4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0813FF34 + adds r4, r0, r1 + movs r0, #0xc + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0813FF62 + ldrh r0, [r4, #0xa] + adds r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0813FF62 + ldrh r1, [r4] + adds r0, r1, #1 + strh r0, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, _0813FF38 + movs r2, #4 + ldrsh r0, [r4, r2] + lsls r2, r0, #2 + adds r0, r3, #3 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r1, r0 + ble _0813FF54 + adds r0, r3, #1 + adds r0, r2, r0 + ldrb r0, [r0] + movs r2, #2 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _0813FF3C + ldrh r0, [r4, #6] + adds r0, #1 + strh r0, [r4, #6] + movs r0, #6 + ldrsh r2, [r4, r0] + movs r1, #4 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r1, r3, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + bne _0813FF26 + strh r5, [r4, #6] + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] +_0813FF26: + movs r2, #4 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0] + b _0813FF52 + .align 2, 0 +_0813FF34: .4byte gUnknown_3005B68 +_0813FF38: .4byte gUnknown_8595475 +_0813FF3C: + ldr r0, _0813FF68 + lsls r1, r1, #5 + ldr r0, [r0] + adds r0, r0, r1 + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1200 + strh r5, [r4] + ldrh r0, [r4, #2] + adds r0, #1 +_0813FF52: + strh r0, [r4, #2] +_0813FF54: + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #4 + bne _0813FF62 + adds r0, r6, #0 + bl sub_080A8964 +_0813FF62: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0813FF68: .4byte gUnknown_203A850 + thumb_func_end sub_0813FEB4 + + thumb_func_start sub_0813FF6C +sub_0813FF6C: @ 0x0813FF6C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0813FF90 + movs r1, #7 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r4, #0 + bne _0813FF98 + ldr r1, _0813FF94 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0xc] + b _0813FFA6 + .align 2, 0 +_0813FF90: .4byte sub_0813FFB0 +_0813FF94: .4byte gUnknown_3005B60 +_0813FF98: + ldr r0, _0813FFAC + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0xc] +_0813FFA6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813FFAC: .4byte gUnknown_3005B60 + thumb_func_end sub_0813FF6C + + thumb_func_start sub_0813FFB0 +sub_0813FFB0: @ 0x0813FFB0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0813FFDC + mov r8, r0 + ldr r1, _0813FFE0 + mov sb, r1 + ldr r1, _0813FFE4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0xc + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0813FFF0 + ldr r7, _0813FFE8 + ldr r6, _0813FFEC + b _0813FFF4 + .align 2, 0 +_0813FFDC: .4byte gUnknown_2022ACC +_0813FFE0: .4byte gUnknown_2022ACE +_0813FFE4: .4byte gUnknown_3005B60 +_0813FFE8: .4byte gUnknown_2022AD0 +_0813FFEC: .4byte gUnknown_2022AD2 +_0813FFF0: + ldr r7, _0814007C + ldr r6, _08140080 +_0813FFF4: + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r0, [r4, #8] + adds r0, #5 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #8] + adds r0, #0x80 + ands r0, r1 + strh r0, [r4, #0xa] + movs r1, #8 + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFD4 + adds r0, #8 + mov r2, r8 + strh r0, [r2] + movs r1, #8 + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFB8 + adds r0, #0x10 + mov r2, sb + strh r0, [r2] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFD4 + adds r0, #8 + strh r0, [r7] + movs r2, #0xa + ldrsh r0, [r4, r2] + movs r1, #4 + bl sub_0806EFB8 + adds r0, #0x10 + strh r0, [r6] + ldr r0, _08140084 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0814006E + adds r0, r5, #0 + bl sub_080A8964 + mov r0, r8 + strh r4, [r0] + mov r1, sb + strh r4, [r1] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r7] + strh r4, [r6] +_0814006E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814007C: .4byte gUnknown_2022AD4 +_08140080: .4byte gUnknown_2022AD6 +_08140084: .4byte sub_0813FEB4 + thumb_func_end sub_0813FFB0 + + thumb_func_start sub_08140088 +sub_08140088: @ 0x08140088 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r1, #0 + ldr r5, _081400C0 + ldr r7, _081400C4 +_08140092: + lsls r0, r1, #4 + adds r4, r1, #1 + adds r2, r0, r7 + lsls r0, r1, #5 + adds r1, r0, r6 + movs r3, #0xf +_0814009E: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strh r0, [r1] + adds r2, #1 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0814009E + adds r1, r4, #0 + cmp r1, #0x31 + ble _08140092 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081400C0: .4byte gUnknown_85953F0 +_081400C4: .4byte gUnknown_8595485 + thumb_func_end sub_08140088 + + thumb_func_start sub_081400C8 +sub_081400C8: @ 0x081400C8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081400EC + movs r0, #0xc8 + lsls r0, r0, #3 + bl sub_08000BDC + str r0, [r4] + bl sub_08140088 + cmp r5, #0 + bne _081400F0 + movs r6, #1 + movs r4, #2 + b _081400F4 + .align 2, 0 +_081400EC: .4byte gUnknown_203A850 +_081400F0: + movs r6, #1 + movs r4, #3 +_081400F4: + ldr r0, _08140174 + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08140178 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0814017C + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r1, _08140180 + adds r0, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + adds r0, r4, #0 + bl sub_08002248 + cmp r5, #0 + bne _0814018C + ldr r1, _08140184 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _08140188 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xba + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + adds r0, r6, #0 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + adds r0, r4, #0 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + b _081401A6 + .align 2, 0 +_08140174: .4byte gUnknown_8594D50 +_08140178: .4byte gUnknown_8593CA0 +_0814017C: .4byte gUnknown_8594398 +_08140180: .4byte gUnknown_859487C +_08140184: .4byte 0x00000442 +_08140188: .4byte 0x00000808 +_0814018C: + ldr r1, _081401BC + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081401C0 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xda + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 +_081401A6: + ldr r0, _081401C4 + movs r1, #5 + bl sub_080A8878 + adds r0, r5, #0 + bl sub_0813FF6C + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081401BC: .4byte 0x00000842 +_081401C0: .4byte 0x00000808 +_081401C4: .4byte sub_0813FEB4 + thumb_func_end sub_081400C8 + + thumb_func_start sub_081401C8 +sub_081401C8: @ 0x081401C8 + push {lr} + ldr r0, _081401F4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _081401E6 + ldr r0, _081401F8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x14] +_081401E6: + movs r0, #0 + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1238 + pop {r0} + bx r0 + .align 2, 0 +_081401F4: .4byte sub_0813FEB4 +_081401F8: .4byte gUnknown_3005B60 + thumb_func_end sub_081401C8 + + thumb_func_start sub_081401FC +sub_081401FC: @ 0x081401FC + push {lr} + ldr r0, _08140234 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08140210 + bl sub_080A8964 +_08140210: + ldr r0, _08140238 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08140222 + bl sub_080A8964 +_08140222: + movs r0, #0 + movs r1, #0xa0 + movs r2, #0x20 + bl sub_080A1238 + bl sub_0814023C + pop {r0} + bx r0 + .align 2, 0 +_08140234: .4byte sub_0813FEB4 +_08140238: .4byte sub_0813FFB0 + thumb_func_end sub_081401FC + + thumb_func_start sub_0814023C +sub_0814023C: @ 0x0814023C + push {lr} + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + ldr r0, _08140298 + movs r1, #0 + strh r1, [r0] + ldr r0, _0814029C + strh r1, [r0] + ldr r0, _081402A0 + strh r1, [r0] + movs r0, #1 + movs r1, #5 + bl sub_08038E94 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + movs r1, #7 + bl sub_08001B70 + movs r0, #2 + movs r1, #5 + bl sub_08038E94 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #2 + movs r1, #7 + bl sub_08001B70 + movs r1, #0xca + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _081402A4 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_08140298: .4byte gUnknown_2022ACC +_0814029C: .4byte gUnknown_2022ACE +_081402A0: .4byte gUnknown_2022AD0 +_081402A4: .4byte gUnknown_203A850 + thumb_func_end sub_0814023C + + thumb_func_start sub_081402A8 +sub_081402A8: @ 0x081402A8 + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _081402CC + adds r0, r0, r2 + movs r2, #0 + movs r3, #0 + bl sub_0806E7CC + pop {r0} + bx r0 + .align 2, 0 +_081402CC: .4byte gUnknown_20205AC + thumb_func_end sub_081402A8 + + thumb_func_start sub_081402D0 +sub_081402D0: @ 0x081402D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081402F0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, #0x1c + adds r1, r1, r2 + ldr r1, [r1] + ldr r0, _081402F4 + cmp r1, r0 + beq _081402F8 + movs r0, #0 + b _081402FA + .align 2, 0 +_081402F0: .4byte gUnknown_20205AC +_081402F4: .4byte sub_08007140 +_081402F8: + movs r0, #1 +_081402FA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081402D0 + + thumb_func_start sub_08140300 +sub_08140300: @ 0x08140300 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + ldr r0, _08140328 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xb8 + ldrb r0, [r1] + cmp r0, #0 + beq _08140322 + adds r0, r1, #0 + bl sub_081519B8 +_08140322: + pop {r0} + bx r0 + .align 2, 0 +_08140328: .4byte gUnknown_203A854 + thumb_func_end sub_08140300 + + thumb_func_start sub_0814032C +sub_0814032C: @ 0x0814032C + push {r4, lr} + sub sp, #4 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_081428DC + ldr r4, _081403A0 + ldr r0, [r4] + ldrh r0, [r0, #0x26] + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x14 + bl sub_08001144 + ldr r1, [r4] + ldrb r0, [r1, #1] + cmp r0, #0 + beq _08140368 + ldrh r1, [r1, #0x34] + movs r0, #0x52 + bl sub_08001144 +_08140368: + ldr r2, [r4] + movs r3, #0x2a + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _08140388 + ldr r1, _081403A4 + ldr r3, _081403A8 + adds r0, r2, r3 + str r0, [r1] + ldr r0, _081403AC + str r0, [r1, #4] + ldr r0, _081403B0 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0 + strh r0, [r2, #0x2a] +_08140388: + ldr r0, [r4] + movs r2, #0x28 + ldrsh r1, [r0, r2] + cmp r1, #1 + beq _081403B4 + cmp r1, #1 + ble _0814043C + cmp r1, #2 + beq _081403EC + cmp r1, #0xff + beq _08140410 + b _0814043C + .align 2, 0 +_081403A0: .4byte gUnknown_203A854 +_081403A4: .4byte 0x040000D4 +_081403A8: .4byte 0x0000133C +_081403AC: .4byte 0x060021C0 +_081403B0: .4byte 0x800001A0 +_081403B4: + movs r0, #0 + movs r1, #1 + movs r2, #0 + bl sub_08001B70 + movs r0, #0 + bl sub_08001B48 + ldr r1, _081403E0 + ldr r2, [r4] + movs r3, #0xcf + lsls r3, r3, #2 + adds r0, r2, r3 + str r0, [r1] + ldr r0, _081403E4 + str r0, [r1, #4] + ldr r0, _081403E8 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #2 + strh r0, [r2, #0x28] + b _0814043C + .align 2, 0 +_081403E0: .4byte 0x040000D4 +_081403E4: .4byte 0x0600F9C0 +_081403E8: .4byte 0x800001A0 +_081403EC: + ldr r1, _08140404 + movs r2, #0xcf + lsls r2, r2, #2 + adds r0, r0, r2 + str r0, [r1] + ldr r0, _08140408 + str r0, [r1, #4] + ldr r0, _0814040C + str r0, [r1, #8] + ldr r0, [r1, #8] + b _0814043C + .align 2, 0 +_08140404: .4byte 0x040000D4 +_08140408: .4byte 0x0600F9C0 +_0814040C: .4byte 0x800001A0 +_08140410: + movs r0, #0 + movs r1, #1 + movs r2, #2 + bl sub_08001B70 + movs r0, #0 + bl sub_08001B48 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08140444 + mov r3, sp + str r3, [r1] + ldr r0, _08140448 + str r0, [r1, #4] + ldr r0, _0814044C + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r1, [r4] + movs r0, #0 + strh r0, [r1, #0x28] +_0814043C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140444: .4byte 0x040000D4 +_08140448: .4byte 0x0600F9C0 +_0814044C: .4byte 0x810001A0 + thumb_func_end sub_0814032C + + thumb_func_start sub_08140450 +sub_08140450: @ 0x08140450 + push {r4, r5, lr} + sub sp, #4 + movs r5, #0 + str r5, [sp] + ldr r4, _081404C0 + movs r0, #0xe6 + lsls r0, r0, #6 + bl sub_08000BDC + str r0, [r4] + movs r0, #0 + bl sub_080017D4 + ldr r1, _081404C4 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r1, [r4] + movs r0, #0xbe + lsls r0, r0, #1 + adds r1, r1, r0 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r2, _081404C8 + adds r1, r1, r2 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081404CC + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r0, _081404D0 + bl sub_08003090 + bl sub_08196DF4 + ldr r0, _081404D4 + strb r5, [r0] + ldr r0, _081404D8 + mov r1, sp + bl sub_08199858 + ldr r1, [r4] + ldr r2, _081404DC + adds r1, r1, r2 + str r0, [r1] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081404C0: .4byte gUnknown_203A854 +_081404C4: .4byte gUnknown_8595CEC +_081404C8: .4byte 0x0000117C +_081404CC: .4byte 0x0000317C +_081404D0: .4byte gUnknown_8595CF8 +_081404D4: .4byte gUnknown_203A858 +_081404D8: .4byte gUnknown_85959A8 +_081404DC: .4byte 0x0000397C + thumb_func_end sub_08140450 + + thumb_func_start sub_081404E0 +sub_081404E0: @ 0x081404E0 + push {r4, r5, lr} + ldr r5, _08140530 + ldr r0, [r5] + ldr r4, _08140534 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + adds r0, r0, r4 + movs r4, #0 + str r4, [r0] + bl sub_080034D4 + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #2 + bl sub_08002160 + movs r0, #0 + bl sub_080017D4 + ldr r0, [r5] + movs r2, #0xe6 + lsls r2, r2, #6 + movs r1, #0 + bl memset + ldr r0, [r5] + bl sub_08000BF0 + str r4, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08140530: .4byte gUnknown_203A854 +_08140534: .4byte 0x0000397C + thumb_func_end sub_081404E0 + + thumb_func_start sub_08140538 +sub_08140538: @ 0x08140538 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r1, _081405CC + mov r0, sp + movs r2, #6 + bl memcpy + ldr r5, _081405D0 + ldr r3, [r5] + ldr r4, _081405D4 + ldrb r0, [r4] + movs r1, #1 + ands r1, r0 + ldrb r2, [r3, #4] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #4] + ldrh r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08140572 + ldr r0, [r5] + ldrb r1, [r0, #4] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #4] +_08140572: + ldr r1, [r5] + ldr r2, _081405D8 + ldrb r0, [r1, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r2 + ldrb r0, [r0, #3] + adds r1, #0x22 + strb r0, [r1] + ldr r1, [r5] + ldrb r0, [r1, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r2 + ldrb r0, [r0, #4] + adds r1, #0x23 + strb r0, [r1] + ldr r2, [r5] + ldr r3, _081405DC + ldrb r1, [r2, #4] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + lsrs r1, r1, #7 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r2, #0x19] + ldr r2, [r5] + ldrb r1, [r2, #0x1a] + movs r0, #0xf + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r0, [r5] + ldrb r0, [r0, #0x19] + cmp r0, #1 + bne _081405E8 + ldr r4, _081405E0 + ldr r3, _081405E4 + mov r0, sp + ldrh r2, [r0] + b _081405F0 + .align 2, 0 +_081405CC: .4byte gUnknown_8595FCC +_081405D0: .4byte gUnknown_203A854 +_081405D4: .4byte gUnknown_2037280 +_081405D8: .4byte gUnknown_8595EF4 +_081405DC: .4byte gUnknown_8595EF0 +_081405E0: .4byte gUnknown_20373B4 +_081405E4: .4byte gUnknown_20377B4 +_081405E8: + ldr r4, _0814065C + ldr r3, _08140660 + mov r0, sp + ldrh r2, [r0, #2] +_081405F0: + adds r0, r3, #0 + adds r0, #0xa2 + strh r2, [r0] + ldr r1, _08140664 + adds r0, r1, #0 + ands r0, r2 + strh r0, [r3] + ands r0, r1 + adds r2, r4, #0 + adds r2, #0xa2 + strh r0, [r2] + ands r0, r1 + strh r0, [r4] + ldr r0, _08140668 + ldr r0, [r0] + adds r0, #0xb8 + bl sub_08151654 + movs r4, #0 +_08140616: + ldr r5, _08140668 + ldr r0, [r5] + adds r0, #0xb8 + lsls r2, r4, #3 + ldr r1, _0814066C + adds r2, r2, r1 + adds r1, r4, #0 + bl sub_08151668 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xc + bls _08140616 + movs r4, #0 +_08140634: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08140670 + adds r0, r0, r1 + movs r1, #0x41 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0x98 + lsls r0, r0, #1 + cmp r1, r0 + beq _08140674 + adds r0, #2 + cmp r1, r0 + bne _0814067E + ldr r0, [r5] + ldrb r1, [r0, #2] + movs r2, #1 + b _0814067A + .align 2, 0 +_0814065C: .4byte gUnknown_20373B4 +_08140660: .4byte gUnknown_20377B4 +_08140664: .4byte 0x0000FFFF +_08140668: .4byte gUnknown_203A854 +_0814066C: .4byte gUnknown_8595F34 +_08140670: .4byte gUnknown_2024190 +_08140674: + ldr r0, [r5] + ldrb r1, [r0, #2] + movs r2, #2 +_0814067A: + orrs r1, r2 + strb r1, [r0, #2] +_0814067E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08140634 + bl sub_0802F1EC + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08140538 + + thumb_func_start sub_08140694 +sub_08140694: @ 0x08140694 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _081406B4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #8 + bls _081406A8 + b _081408C0 +_081406A8: + lsls r0, r0, #2 + ldr r1, _081406B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081406B4: .4byte gUnknown_3002360 +_081406B8: .4byte _081406BC +_081406BC: @ jump table + .4byte _081406E0 @ case 0 + .4byte _081406F8 @ case 1 + .4byte _08140718 @ case 2 + .4byte _0814072A @ case 3 + .4byte _08140764 @ case 4 + .4byte _08140788 @ case 5 + .4byte _081407A8 @ case 6 + .4byte _08140818 @ case 7 + .4byte _08140842 @ case 8 +_081406E0: + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_08121E58 + bl sub_08121D90 + bl sub_08121E00 + b _081408C0 +_081406F8: + bl sub_08140450 + bl sub_08004480 + movs r1, #0x90 + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _08140714 + movs r0, #0x52 + bl sub_08001144 + b _081408C0 + .align 2, 0 +_08140714: .4byte 0x0000060A +_08140718: + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_081996B8 + b _081408C0 +_0814072A: + ldr r0, _08140758 + movs r2, #0xe0 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A1200 + ldr r1, _0814075C + movs r4, #0 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _08140760 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _081408C0 + .align 2, 0 +_08140758: .4byte gUnknown_85957A8 +_0814075C: .4byte gUnknown_8DBC590 +_08140760: .4byte gUnknown_8DBCCBC +_08140764: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08140770 + b _081408CE +_08140770: + bl sub_08140538 + ldr r1, _08140784 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + b _081408C0 + .align 2, 0 +_08140784: .4byte gUnknown_8595B4C +_08140788: + movs r0, #0 + bl sub_08142CD8 + bl sub_08143A94 + bl sub_081439E8 + bl sub_081433E0 + bl sub_08142D9C + bl sub_08143048 + bl sub_081432B0 + b _081408C0 +_081407A8: + bl sub_080066D8 + bl sub_08006724 + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081435E0 + movs r0, #6 + bl sub_081437F8 + movs r0, #0 + bl sub_0814379C + movs r0, #0 + bl sub_081425C4 + ldr r4, _08140808 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _0814080C + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldr r1, _08140810 + movs r2, #0x3c + rsbs r2, r2, #0 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _08140814 + strh r5, [r0] + b _081408C0 + .align 2, 0 +_08140808: .4byte gUnknown_203A858 +_0814080C: .4byte gUnknown_8262D3F +_08140810: .4byte gUnknown_2021B38 +_08140814: .4byte gUnknown_2021B3A +_08140818: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + b _081408C0 +_08140842: + movs r0, #1 + bl sub_08001274 + ldr r0, _081408A8 + bl sub_080006F0 + movs r0, #1 + str r0, [sp] + movs r0, #0xff + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A2078 + ldr r0, _081408AC + movs r1, #0 + bl sub_080A8878 + ldr r5, _081408B0 + ldr r1, [r5] + adds r1, #0xa4 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081408B4 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r0, #6 + strh r0, [r4, #0x14] + bl sub_08145CF0 + strh r0, [r4, #0x22] + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080EE9A4 + ldr r0, _081408B8 + movs r1, #1 + bl sub_080A8878 + ldr r1, [r5] + adds r1, #0xa5 + strb r0, [r1] + ldr r0, _081408BC + bl sub_08000540 + b _081408CE + .align 2, 0 +_081408A8: .4byte sub_0814032C +_081408AC: .4byte sub_08140970 +_081408B0: .4byte gUnknown_203A854 +_081408B4: .4byte gUnknown_3005B60 +_081408B8: .4byte sub_081408DC +_081408BC: .4byte sub_08140300 +_081408C0: + ldr r1, _081408D8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081408CE: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081408D8: .4byte gUnknown_3002360 + thumb_func_end sub_08140694 + + thumb_func_start sub_081408DC +sub_081408DC: @ 0x081408DC + push {r4, r5, r6, lr} + ldr r3, _0814096C + ldr r0, [r3] + adds r0, #0x21 + ldrb r2, [r0] + adds r1, r2, #1 + strb r1, [r0] + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0x23 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r6, r3, #0 + ldrb r0, [r0] + cmp r2, r0 + bne _08140922 + adds r1, #0x21 + movs r0, #0 + strb r0, [r1] + ldr r2, [r6] + adds r3, r2, #0 + adds r3, #0x22 + ldrb r1, [r3] + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08140922 + ldrb r1, [r3] + movs r3, #0xb4 + lsls r3, r3, #1 + adds r0, r3, #0 + subs r0, r0, r1 + strh r0, [r2, #0x24] +_08140922: + adds r4, r6, #0 + ldr r0, [r4] + ldrh r0, [r0, #0x24] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [r4] + ldrh r0, [r0, #0x24] + bl sub_0806F038 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08140946 + adds r0, #0xf +_08140946: + lsls r0, r0, #0xc + lsrs r5, r0, #0x10 + ldr r3, [r6] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08140956 + adds r0, #0xf +_08140956: + asrs r0, r0, #4 + strh r0, [r3, #0x32] + strh r0, [r3, #0x2c] + strh r5, [r3, #0x2e] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r3, #0x30] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814096C: .4byte gUnknown_203A854 + thumb_func_end sub_081408DC + + thumb_func_start sub_08140970 +sub_08140970: @ 0x08140970 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081409C6 + movs r1, #0x90 + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081409CC + movs r0, #0x52 + bl sub_08001144 + ldr r1, _081409D0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0x14] + adds r0, r4, #0 + bl sub_081420BC + bl sub_08142138 + bl sub_08143B0C + movs r0, #0 + bl sub_081425C4 + movs r0, #6 + bl sub_081437F8 + ldr r1, _081409D4 + ldr r2, _081409D8 + adds r0, r4, #0 + movs r3, #3 + bl sub_08142044 +_081409C6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081409CC: .4byte 0x00000808 +_081409D0: .4byte gUnknown_3005B60 +_081409D4: .4byte sub_08140A30 +_081409D8: .4byte 0x0000FFFF + thumb_func_end sub_08140970 + + thumb_func_start sub_081409DC +sub_081409DC: @ 0x081409DC + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r5, _08140A24 + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + ldr r2, _08140A28 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r5] + movs r1, #3 + bl sub_08003528 + ldr r1, _08140A2C + adds r0, r4, #0 + bl sub_08121F58 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08140A24: .4byte gUnknown_203A858 +_08140A28: .4byte gUnknown_8262DA3 +_08140A2C: .4byte gUnknown_8595FC4 + thumb_func_end sub_081409DC + + thumb_func_start sub_08140A30 +sub_08140A30: @ 0x08140A30 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197060 + ldr r1, _08140A54 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08140A58 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140A54: .4byte gUnknown_3005B60 +_08140A58: .4byte sub_08140C98 + thumb_func_end sub_08140A30 + + thumb_func_start sub_08140A5C +sub_08140A5C: @ 0x08140A5C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08140A7C + ldr r0, [r0] + adds r0, #0xa5 + ldrb r0, [r0] + bl sub_080A8964 + adds r0, r4, #0 + bl sub_08141EAC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140A7C: .4byte gUnknown_203A854 + thumb_func_end sub_08140A5C + + thumb_func_start sub_08140A80 +sub_08140A80: @ 0x08140A80 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08140A92 + b _08140BB0 +_08140A92: + lsls r0, r4, #2 + ldr r1, _08140A9C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08140A9C: .4byte _08140AA0 +_08140AA0: @ jump table + .4byte _08140AE0 @ case 0 + .4byte _08140B04 @ case 1 + .4byte _08140B04 @ case 2 + .4byte _08140B04 @ case 3 + .4byte _08140B04 @ case 4 + .4byte _08140B58 @ case 5 + .4byte _08140BB0 @ case 6 + .4byte _08140BB0 @ case 7 + .4byte _08140BB0 @ case 8 + .4byte _08140BB0 @ case 9 + .4byte _08140B58 @ case 10 + .4byte _08140BB0 @ case 11 + .4byte _08140BB0 @ case 12 + .4byte _08140BB0 @ case 13 + .4byte _08140BB0 @ case 14 + .4byte _08140B58 @ case 15 +_08140AE0: + ldr r0, _08140B00 + ldr r0, [r0] + movs r1, #0xbe + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0x10 + str r1, [sp] + movs r1, #0xd + str r1, [sp, #4] + movs r1, #0 + movs r2, #0xe + movs r3, #7 + bl sub_08151FE4 + b _08140C16 + .align 2, 0 +_08140B00: .4byte gUnknown_203A854 +_08140B04: + lsls r0, r4, #1 + adds r0, r0, r4 + adds r0, #0xe + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r5, _08140B4C + ldr r0, [r5] + movs r4, #0xbe + lsls r4, r4, #1 + adds r0, r0, r4 + movs r1, #0x10 + str r1, [sp] + movs r6, #0xd + str r6, [sp, #4] + movs r1, #0 + movs r2, #0xe + movs r3, #7 + bl sub_08151FE4 + ldr r0, [r5] + adds r4, r0, r4 + ldr r1, _08140B50 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08140B54 + adds r1, r1, r0 + movs r0, #3 + str r0, [sp] + str r6, [sp, #4] + adds r0, r4, #0 + mov r2, r8 + movs r3, #7 + bl sub_08152034 + b _08140C16 + .align 2, 0 +_08140B4C: .4byte gUnknown_203A854 +_08140B50: .4byte 0x0000397C +_08140B54: .4byte 0x00000232 +_08140B58: + subs r0, r4, #1 + movs r1, #5 + bl __divsi3 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0xa + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r5, _08140BA8 + ldr r0, [r5] + movs r4, #0xbe + lsls r4, r4, #1 + adds r0, r0, r4 + movs r6, #0x10 + str r6, [sp] + movs r1, #0xd + str r1, [sp, #4] + movs r1, #0 + movs r2, #0xe + movs r3, #7 + bl sub_08151FE4 + ldr r0, [r5] + adds r4, r0, r4 + ldr r1, _08140BAC + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0xa0 + lsls r0, r0, #2 + adds r1, r1, r0 + str r6, [sp] + movs r0, #3 + str r0, [sp, #4] + adds r0, r4, #0 + movs r2, #0xe + adds r3, r7, #0 + bl sub_08152034 + b _08140C16 + .align 2, 0 +_08140BA8: .4byte gUnknown_203A854 +_08140BAC: .4byte 0x0000397C +_08140BB0: + adds r0, r4, #0 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0xe + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + subs r0, r4, #1 + movs r1, #5 + bl __divsi3 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #7 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r5, _08140C24 + ldr r0, [r5] + movs r4, #0xbe + lsls r4, r4, #1 + adds r0, r0, r4 + movs r1, #0x10 + str r1, [sp] + movs r1, #0xd + str r1, [sp, #4] + movs r1, #0 + movs r2, #0xe + movs r3, #7 + bl sub_08151FE4 + ldr r0, [r5] + adds r4, r0, r4 + ldr r1, _08140C28 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x88 + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #3 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + mov r2, r8 + adds r3, r7, #0 + bl sub_08152034 +_08140C16: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08140C24: .4byte gUnknown_203A854 +_08140C28: .4byte 0x0000397C + thumb_func_end sub_08140A80 + + thumb_func_start sub_08140C2C +sub_08140C2C: @ 0x08140C2C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08140C50 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r0, [r4, #0x10] + bl sub_0814379C + ldrb r0, [r4, #0x10] + bl sub_08140A80 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08140C50: .4byte gUnknown_3005B60 + thumb_func_end sub_08140C2C + + thumb_func_start sub_08140C54 +sub_08140C54: @ 0x08140C54 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08140C8C + ldr r2, [r5] + movs r6, #0 + movs r1, #1 + strh r1, [r2, #0x28] + ldr r1, _08140C90 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrb r0, [r4, #0x10] + bl sub_08140A80 + ldr r0, [r5] + adds r0, #0x23 + movs r1, #2 + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x21 + strb r6, [r0] + ldr r0, _08140C94 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08140C8C: .4byte gUnknown_203A854 +_08140C90: .4byte gUnknown_3005B60 +_08140C94: .4byte sub_08141108 + thumb_func_end sub_08140C54 + + thumb_func_start sub_08140C98 +sub_08140C98: @ 0x08140C98 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08140CEC + ldr r0, [r1] + ldr r2, [r0, #8] + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _08140CF8 + movs r3, #0xb + ldr r5, _08140CF0 + adds r0, r5, #0 + adds r0, #0xe4 + ldr r0, [r0] + ands r2, r0 + ldr r0, _08140CF4 + mov ip, r0 + lsls r7, r6, #2 + cmp r2, #0 + beq _08140D36 + adds r4, r1, #0 + adds r5, #8 +_08140CC6: + lsls r0, r3, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0xd + bgt _08140D36 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r1, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08140CC6 + b _08140D36 + .align 2, 0 +_08140CEC: .4byte gUnknown_203A854 +_08140CF0: .4byte gUnknown_8595D00 +_08140CF4: .4byte gUnknown_3005B60 +_08140CF8: + movs r3, #6 + ldr r5, _08140D64 + adds r0, r5, #0 + adds r0, #0x80 + ldr r0, [r0] + ands r2, r0 + ldr r0, _08140D68 + mov ip, r0 + lsls r7, r6, #2 + cmp r2, #0 + beq _08140D36 + adds r4, r1, #0 + adds r5, #8 +_08140D12: + lsls r0, r3, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + lsrs r3, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #9 + bgt _08140D36 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r1, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08140D12 +_08140D36: + adds r4, r7, r6 + lsls r4, r4, #3 + add r4, ip + movs r5, #0 + strh r3, [r4, #0x10] + adds r0, r6, #0 + bl sub_081420BC + ldrb r0, [r4, #0x10] + bl sub_081425C4 + ldrb r0, [r4, #0x10] + bl sub_0814379C + ldrb r0, [r4, #0x10] + bl sub_0814234C + strh r5, [r4, #0xa] + ldr r0, _08140D6C + str r0, [r4] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08140D64: .4byte gUnknown_8595D00 +_08140D68: .4byte gUnknown_3005B60 +_08140D6C: .4byte sub_08140C54 + thumb_func_end sub_08140C98 + + thumb_func_start sub_08140D70 +sub_08140D70: @ 0x08140D70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + movs r6, #0 + movs r7, #0 + ldr r1, _08140DB8 + mov r0, sp + movs r2, #4 + bl memcpy + ldrb r0, [r4] + mov r8, r0 + cmp r5, #0 + blt _08140DE4 + cmp r5, #1 + bgt _08140DBC + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #5 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r2, #0xf0 + lsls r2, r2, #0x14 + adds r1, r0, r2 + lsrs r7, r1, #0x18 + cmp r0, #0 + bne _08140DE4 + movs r6, #5 + b _08140DE4 + .align 2, 0 +_08140DB8: .4byte gUnknown_8595FD2 +_08140DBC: + cmp r5, #3 + bgt _08140DE4 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #5 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x13 + adds r0, r1, r2 + lsrs r7, r0, #0x18 + cmp r1, #0 + bne _08140DE4 + movs r6, #1 +_08140DE4: + mov r1, sp + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4] + adds r0, r0, r2 + strh r0, [r4] + lsls r1, r6, #0x18 + asrs r3, r1, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r7, #0x18 + cmp r0, r3 + bge _08140E06 + asrs r0, r2, #0x18 + strh r0, [r4] +_08140E06: + movs r0, #0 + ldrsh r1, [r4, r0] + asrs r0, r2, #0x18 + cmp r1, r0 + ble _08140E12 + strh r3, [r4] +_08140E12: + mov r1, r8 + lsls r0, r1, #0x18 + movs r2, #0 + ldrsh r1, [r4, r2] + asrs r0, r0, #0x18 + cmp r1, r0 + bne _08140E24 + movs r0, #0 + b _08140E26 +_08140E24: + movs r0, #1 +_08140E26: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08140D70 + + thumb_func_start sub_08140E34 +sub_08140E34: @ 0x08140E34 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + mov sb, r0 + movs r5, #0 + ldr r4, _08141010 + ldrh r1, [r4, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08140E70 + movs r5, #1 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08141014 + adds r0, r0, r1 + adds r0, #8 + movs r1, #0 + bl sub_08140D70 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08140E70 + b _08141002 +_08140E70: + ldrh r1, [r4, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08140E96 + movs r5, #1 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08141014 + adds r0, r0, r1 + adds r0, #8 + movs r1, #1 + bl sub_08140D70 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08140E96 + b _08141002 +_08140E96: + ldrh r1, [r4, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08140EBC + movs r5, #1 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08141014 + adds r0, r0, r1 + adds r0, #8 + movs r1, #2 + bl sub_08140D70 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08140EBC + b _08141002 +_08140EBC: + ldrh r1, [r4, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08140EE2 + movs r5, #1 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _08141014 + adds r0, r0, r1 + adds r0, #8 + movs r1, #3 + bl sub_08140D70 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08140EE2 + b _08141002 +_08140EE2: + cmp r5, #0 + bne _08140EE8 + b _08141002 +_08140EE8: + ldr r0, _08141018 + lsls r6, r7, #2 + adds r4, r6, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r0, [r4, #0x10] + bl sub_081425C4 + adds r0, r7, #0 + bl sub_08140C2C + mov r1, sb + strh r1, [r4, #0xa] + movs r0, #5 + bl sub_080A306C + ldr r5, _0814101C + ldr r0, [r5] + adds r0, #0xb8 + ldr r1, _08141020 + bl sub_08151A78 + ldr r5, [r5] + movs r2, #0xb8 + lsls r2, r2, #1 + adds r3, r5, r2 + ldrb r2, [r3] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + movs r0, #0xb2 + lsls r0, r0, #1 + adds r3, r5, r0 + ldrb r2, [r3] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + movs r0, #0xac + lsls r0, r0, #1 + adds r2, r5, r0 + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + ldrb r0, [r4, #0x10] + bl sub_0814234C + movs r4, #0 + mov sb, r6 + ldr r1, _08141024 + mov ip, r1 + movs r2, #8 + add r2, ip + mov sl, r2 +_08140F54: + ldr r0, _0814101C + ldr r5, [r0] + adds r0, r4, #0 + adds r0, #0x29 + adds r6, r5, #0 + adds r6, #0x3c + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, ip + adds r3, r0, r1 + adds r2, r3, #0 + adds r2, #0x40 + add r0, sl + ldr r0, [r0] + ldr r0, [r0] + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _08141028 + mov r8, r2 + mov r0, r8 + ands r1, r0 + ldrh r2, [r3, #4] + ldr r0, _0814102C + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _08140F54 + ldr r0, _08141018 + mov r2, sb + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r3, [r1, #0x10] + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bhi _08141002 + ldr r2, _08141030 + movs r0, #0x10 + ldrsh r1, [r1, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #8 + adds r0, r0, r2 + ldr r1, [r5, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08141002 + subs r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, #0x29 + adds r0, r6, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08141024 + adds r3, r0, r1 + adds r2, r3, #0 + adds r2, #0x40 + adds r1, #8 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + ldrh r1, [r0, #4] + ldrh r2, [r2] + adds r1, r1, r2 + mov r2, r8 + ands r1, r2 + ldrh r2, [r3, #4] + ldr r0, _0814102C + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] +_08141002: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08141010: .4byte gUnknown_3002360 +_08141014: .4byte gUnknown_3005B68 +_08141018: .4byte gUnknown_3005B60 +_0814101C: .4byte gUnknown_203A854 +_08141020: .4byte 0x0000FFFF +_08141024: .4byte gUnknown_20205AC +_08141028: .4byte 0x000003FF +_0814102C: .4byte 0xFFFFFC00 +_08141030: .4byte gUnknown_8595D00 + thumb_func_end sub_08140E34 + + thumb_func_start sub_08141034 +sub_08141034: @ 0x08141034 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080EF7A8 + ldr r0, _08141054 + ldr r1, [r0] + movs r0, #0xff + strh r0, [r1, #0x28] + ldrb r2, [r1, #0x19] + cmp r2, #1 + bne _08141058 + adds r0, r1, #0 + adds r0, #0x23 + strb r2, [r0] + b _0814105E + .align 2, 0 +_08141054: .4byte gUnknown_203A854 +_08141058: + adds r1, #0x23 + movs r0, #0 + strb r0, [r1] +_0814105E: + ldr r0, _08141080 + ldr r0, [r0] + adds r0, #0x21 + movs r1, #0 + strb r1, [r0] + ldr r1, _08141084 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x20 + strh r1, [r0, #0xa] + ldr r1, _08141088 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08141080: .4byte gUnknown_203A854 +_08141084: .4byte gUnknown_3005B60 +_08141088: .4byte sub_081411C4 + thumb_func_end sub_08141034 + + thumb_func_start sub_0814108C +sub_0814108C: @ 0x0814108C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081410FC + ldr r2, [r4] + ldrb r1, [r2, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r2, #0x1b + adds r2, r2, r1 + ldr r3, _08141100 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r3 + ldrh r0, [r5, #0x10] + strb r0, [r2] + ldr r1, [r4] + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, #0x1b + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_08142820 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xc] + ldr r1, [r4] + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, #0x1b + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0814379C + ldr r0, [r4] + ldrb r1, [r0, #0x19] + ldrh r0, [r5, #0x22] + subs r0, r0, r1 + strh r0, [r5, #0x22] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081410EC + movs r0, #0 + strh r0, [r5, #0x22] +_081410EC: + ldrh r0, [r5, #0x22] + bl sub_081435E0 + ldr r0, _08141104 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081410FC: .4byte gUnknown_203A854 +_08141100: .4byte gUnknown_3005B60 +_08141104: .4byte sub_08141034 + thumb_func_end sub_0814108C + + thumb_func_start sub_08141108 +sub_08141108: @ 0x08141108 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_08140E34 + ldr r1, _08141130 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x1e + beq _0814113E + cmp r0, #0x1e + bgt _08141134 + cmp r0, #0 + beq _0814113A + b _08141152 + .align 2, 0 +_08141130: .4byte gUnknown_3005B60 +_08141134: + cmp r0, #0x3b + beq _0814114C + b _08141152 +_0814113A: + ldrb r0, [r4, #0x10] + b _08141140 +_0814113E: + movs r0, #0 +_08141140: + bl sub_08140A80 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _08141162 +_0814114C: + movs r0, #0 + strh r0, [r4, #0xa] + b _08141162 +_08141152: + ldr r0, _081411A0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_08141162: + ldr r0, _081411A4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081411BA + ldr r0, _081411A8 + ldr r3, [r0] + ldr r2, _081411AC + ldr r1, _081411A0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #0x10 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #8 + adds r0, r0, r2 + ldr r1, [r3, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _081411B0 + movs r0, #0x16 + bl sub_080A306C + b _081411BA + .align 2, 0 +_081411A0: .4byte gUnknown_3005B60 +_081411A4: .4byte gUnknown_3002360 +_081411A8: .4byte gUnknown_203A854 +_081411AC: .4byte gUnknown_8595D00 +_081411B0: + movs r0, #0x5f + bl m4aSongNumStart + ldr r0, _081411C0 + str r0, [r4] +_081411BA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081411C0: .4byte sub_0814108C + thumb_func_end sub_08141108 + + thumb_func_start sub_081411C4 +sub_081411C4: @ 0x081411C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0814121C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0xa] + subs r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08141230 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _081411F0 + ldr r1, _08141220 + ldrh r0, [r1] + adds r0, #2 + strh r0, [r1] +_081411F0: + ldr r0, _08141224 + ldr r1, [r0] + ldrh r0, [r1, #0x26] + adds r0, #4 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x68 + bne _08141248 + ldr r2, _08141228 + adds r0, r1, #0 + adds r0, #0x55 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0814122C + str r1, [r0] + b _08141248 + .align 2, 0 +_0814121C: .4byte gUnknown_3005B60 +_08141220: .4byte gUnknown_2021B38 +_08141224: .4byte gUnknown_203A854 +_08141228: .4byte gUnknown_20205AC +_0814122C: .4byte sub_08007140 +_08141230: + movs r0, #1 + movs r1, #0xff + bl sub_08142F3C + movs r0, #1 + movs r1, #0xff + bl sub_08143104 + ldr r0, _08141250 + str r0, [r4] + movs r0, #0 + strh r0, [r4, #0xa] +_08141248: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08141250: .4byte sub_0814140C + thumb_func_end sub_081411C4 + + thumb_func_start sub_08141254 +sub_08141254: @ 0x08141254 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _08141270 + ldr r3, [r0] + ldrb r2, [r3, #2] + adds r5, r0, #0 + cmp r2, #2 + bgt _08141274 + cmp r2, #1 + bge _0814127A + b _08141348 + .align 2, 0 +_08141270: .4byte gUnknown_203A854 +_08141274: + cmp r2, #3 + beq _081412DC + b _08141348 +_0814127A: + ldr r0, _081412A4 + ldrb r0, [r0, #2] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bhi _081412AC + cmp r4, #0xb + bls _08141294 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814135E +_08141294: + ldr r0, _081412A8 + ldrb r1, [r3, #4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x19 + adds r1, r1, r0 + ldrb r0, [r1, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_081412A4: .4byte gUnknown_3005A50 +_081412A8: .4byte gUnknown_8595EF4 +_081412AC: + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081412C8 + ldr r0, _081412C4 + ldrb r1, [r3, #4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x19 + adds r1, r1, r0 + ldrb r0, [r1, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_081412C4: .4byte gUnknown_8595EF4 +_081412C8: + ldr r0, _081412D8 + ldrb r1, [r3, #4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x19 + adds r1, r1, r0 + ldrb r0, [r1, #2] + b _08141402 + .align 2, 0 +_081412D8: .4byte gUnknown_8595EF4 +_081412DC: + ldr r0, _08141308 + ldrb r0, [r0, #2] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bhi _08141310 + cmp r4, #5 + bls _081412F6 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814135E +_081412F6: + ldr r0, _0814130C + ldrb r1, [r3, #4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x19 + adds r1, r1, r0 + ldrb r0, [r1, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_08141308: .4byte gUnknown_3005A50 +_0814130C: .4byte gUnknown_8595EF4 +_08141310: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08141330 + cmp r4, #6 + bls _08141330 + ldr r0, _0814132C + ldrb r1, [r3, #4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x19 + adds r1, r1, r0 + ldrb r0, [r1, #2] + lsrs r0, r0, #2 + b _08141402 + .align 2, 0 +_0814132C: .4byte gUnknown_8595EF4 +_08141330: + ldr r1, _08141344 + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_08141344: .4byte gUnknown_8595EF4 +_08141348: + ldr r0, _08141364 + ldrb r0, [r0, #2] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bhi _08141380 + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08141368 +_0814135E: + movs r0, #1 + b _08141402 + .align 2, 0 +_08141364: .4byte gUnknown_3005A50 +_08141368: + ldr r1, _0814137C + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_0814137C: .4byte gUnknown_8595EF4 +_08141380: + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081413B8 + cmp r4, #0xc + bls _081413A4 + ldr r1, _081413A0 + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsrs r0, r0, #1 + b _08141402 + .align 2, 0 +_081413A0: .4byte gUnknown_8595EF4 +_081413A4: + ldr r1, _081413B4 + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #2] + b _08141402 + .align 2, 0 +_081413B4: .4byte gUnknown_8595EF4 +_081413B8: + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081413F0 + cmp r4, #0xc + bls _081413DC + ldr r1, _081413D8 + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #2] + b _08141402 + .align 2, 0 +_081413D8: .4byte gUnknown_8595EF4 +_081413DC: + ldr r1, _081413EC + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #1] + b _08141402 + .align 2, 0 +_081413EC: .4byte gUnknown_8595EF4 +_081413F0: + ldr r1, _08141408 + ldr r0, [r5] + ldrb r0, [r0, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x18 +_08141402: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08141408: .4byte gUnknown_8595EF4 + thumb_func_end sub_08141254 + + thumb_func_start sub_0814140C +sub_0814140C: @ 0x0814140C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + movs r4, #0 + ldr r1, _08141498 + mov r0, sp + movs r2, #8 + bl memcpy + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r7, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r3, _0814149C + ldr r0, [r3] + ldr r2, _081414A0 + mov r5, sl + lsls r1, r5, #2 + add r1, sl + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0x14] + adds r0, #0x7c + strb r2, [r0] + ldr r0, [r3] + adds r2, r0, #0 + adds r2, #0x7f + strb r4, [r2] + subs r2, #1 + strb r4, [r2] + adds r0, #0x7d + strb r4, [r0] + ldrh r0, [r1, #0x18] + adds r1, r7, #0 + bl sub_08141254 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r1, r4, #0x18 + adds r0, r7, #0 + bl __modsi3 + lsrs r4, r4, #0x19 + subs r0, r0, r4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081414A4 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r5, #1 + cmp r0, #0xc + bgt _08141490 + movs r5, #0 +_08141490: + cmp r6, #0x4f + bhi _081414A8 + lsls r0, r5, #0x19 + b _081414B2 + .align 2, 0 +_08141498: .4byte gUnknown_8595FD6 +_0814149C: .4byte gUnknown_203A854 +_081414A0: .4byte gUnknown_3005B60 +_081414A4: .4byte gUnknown_3005A50 +_081414A8: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + movs r0, #1 + subs r0, r0, r1 + lsls r0, r0, #0x19 +_081414B2: + lsrs r5, r0, #0x18 + ldr r0, _081415F8 + ldr r6, [r0] + ldrb r0, [r6, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + ldr r1, _081415FC + adds r0, r0, r1 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + ldrh r0, [r0, #0x1a] + adds r4, r4, r0 + adds r0, r6, #0 + adds r0, #0x80 + strh r4, [r0] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _081414E4 + ldr r1, _08141600 + bl __addsf3 +_081414E4: + ldr r1, _08141604 + bl __divsf3 + bl __fixunssfsi + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r0, r4, #1 + adds r0, r0, r4 + movs r2, #0x82 + adds r2, r2, r6 + mov r8, r2 + strh r0, [r2] + adds r0, r6, #0 + adds r0, #0x84 + strh r4, [r0] + adds r0, #2 + strh r4, [r0] + movs r0, #0x88 + adds r0, r0, r6 + mov sb, r0 + movs r0, #1 + ands r0, r7 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sp + movs r1, #0 + ldrsh r4, [r0, r1] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _08141530 + ldr r1, _08141600 + bl __addsf3 +_08141530: + mov r2, sb + str r0, [r2] + adds r7, r6, #0 + adds r7, #0x8c + ldrb r0, [r6, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + ldr r5, _081415FC + adds r0, r0, r5 + movs r1, #0x18 + ldrsh r4, [r0, r1] + adds r0, r4, #0 + bl __floatsisf + adds r5, r0, #0 + cmp r4, #0 + bge _0814155A + ldr r1, _08141600 + bl __addsf3 + adds r5, r0, #0 +_0814155A: + str r5, [r7] + adds r7, r6, #0 + adds r7, #0x90 + ldr r1, _08141608 + adds r0, r5, #0 + bl __mulsf3 + adds r1, r5, #0 + bl __subsf3 + adds r5, r0, #0 + mov r2, r8 + movs r0, #0 + ldrsh r4, [r2, r0] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _0814158A + ldr r1, _08141600 + bl __addsf3 + adds r2, r0, #0 +_0814158A: + adds r0, r5, #0 + adds r1, r2, #0 + bl __divsf3 + str r0, [r7] + adds r1, r6, #0 + adds r1, #0x94 + ldr r0, _0814160C + str r0, [r1] + adds r1, #8 + ldr r0, _08141610 + str r0, [r1] + adds r5, r6, #0 + adds r5, #0x98 + mov r1, r8 + movs r2, #0 + ldrsh r4, [r1, r2] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _081415C0 + ldr r1, _08141600 + bl __addsf3 + adds r2, r0, #0 +_081415C0: + ldr r0, _08141614 + adds r1, r2, #0 + bl __divsf3 + bl __negsf2 + str r0, [r5] + adds r1, r6, #0 + adds r1, #0xa0 + ldr r0, _08141618 + str r0, [r1] + ldr r1, _0814161C + mov r5, sl + lsls r0, r5, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08141620 + str r1, [r0] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081415F8: .4byte gUnknown_203A854 +_081415FC: .4byte gUnknown_8595EF4 +_08141600: .4byte 0x47800000 +_08141604: .4byte 0x40A00000 +_08141608: .4byte 0x3F000000 +_0814160C: .4byte 0x42880000 +_08141610: .4byte 0x00000000 +_08141614: .4byte 0x41000000 +_08141618: .4byte 0x42100000 +_0814161C: .4byte gUnknown_3005B60 +_08141620: .4byte sub_08141624 + thumb_func_end sub_0814140C + + thumb_func_start sub_08141624 +sub_08141624: @ 0x08141624 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08141688 + ldr r3, [r4] + ldrb r1, [r3, #3] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r3, #3] + ldr r3, [r4] + adds r2, r3, #0 + adds r2, #0x7c + adds r1, r3, #0 + adds r1, #0x3c + ldrb r2, [r2] + adds r1, r1, r2 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _0814168C + adds r1, r1, r2 + str r1, [r3, #0x38] + ldr r2, _08141690 + str r2, [r1, #0x1c] + ldr r1, _08141694 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + ldrh r1, [r4, #0x14] + adds r1, #1 + strh r1, [r4, #0x14] + ldrh r0, [r4, #0x18] + adds r0, #1 + strh r0, [r4, #0x18] + movs r0, #6 + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081437F8 + movs r0, #0x5c + bl m4aSongNumStart + ldr r0, _08141698 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08141688: .4byte gUnknown_203A854 +_0814168C: .4byte gUnknown_20205AC +_08141690: .4byte sub_08144778 +_08141694: .4byte gUnknown_3005B60 +_08141698: .4byte sub_0814169C + thumb_func_end sub_08141624 + + thumb_func_start sub_0814169C +sub_0814169C: @ 0x0814169C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _081416D8 + ldr r3, [r6] + adds r0, r3, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + beq _0814178E + ldrb r1, [r3, #3] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081416DC + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814178E + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #3] + ldr r2, [r6] + ldrb r1, [r2, #3] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + b _0814178E + .align 2, 0 +_081416D8: .4byte gUnknown_203A854 +_081416DC: + ldr r2, _08141750 + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r0, r0, #3 + adds r5, r0, r2 + movs r2, #0xa + ldrsh r0, [r5, r2] + adds r7, r1, #0 + cmp r0, #0 + bne _08141728 + adds r0, r3, #0 + adds r0, #0x7e + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08142198 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [r6] + ldrb r1, [r2, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r2, #0x1b + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_081422B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + cmp r0, #1 + bne _08141728 + ldr r0, [r6] + adds r0, #0xb8 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_08151A24 +_08141728: + ldr r0, _08141750 + adds r1, r7, r4 + lsls r1, r1, #3 + adds r4, r1, r0 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x3c + bgt _08141758 + ldr r0, _08141754 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08141748 + movs r0, #0x3c + strh r0, [r4, #0xa] +_08141748: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _0814178E + .align 2, 0 +_08141750: .4byte gUnknown_3005B60 +_08141754: .4byte gUnknown_3002360 +_08141758: + ldr r0, _08141794 + ldr r1, [r0] + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, #0x1b + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_081425C4 + ldrh r1, [r4, #0x20] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08142F3C + ldrb r1, [r4, #0x14] + subs r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08143104 + movs r0, #0x20 + strh r0, [r4, #0xa] + ldr r0, _08141798 + str r0, [r4] +_0814178E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08141794: .4byte gUnknown_203A854 +_08141798: .4byte sub_0814179C + thumb_func_end sub_0814169C + + thumb_func_start sub_0814179C +sub_0814179C: @ 0x0814179C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081417F4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + subs r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08141808 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _081417C8 + ldr r1, _081417F8 + ldrh r0, [r1] + subs r0, #2 + strh r0, [r1] +_081417C8: + ldr r0, _081417FC + ldr r1, [r0] + ldrh r0, [r1, #0x26] + subs r0, #4 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x68 + bne _08141830 + ldr r2, _08141800 + adds r0, r1, #0 + adds r0, #0x55 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08141804 + str r1, [r0] + b _08141830 + .align 2, 0 +_081417F4: .4byte gUnknown_3005B60 +_081417F8: .4byte gUnknown_2021B38 +_081417FC: .4byte gUnknown_203A854 +_08141800: .4byte gUnknown_20205AC +_08141804: .4byte sub_081439D8 +_08141808: + ldrh r0, [r4, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0814321C + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _0814181E + movs r0, #0x79 + b _08141820 +_0814181E: + movs r0, #0x3d +_08141820: + strh r0, [r4, #0xa] + ldr r0, _08141838 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0814183C + str r0, [r1] +_08141830: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08141838: .4byte gUnknown_3005B60 +_0814183C: .4byte sub_08141840 + thumb_func_end sub_0814179C + + thumb_func_start sub_08141840 +sub_08141840: @ 0x08141840 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08141890 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + subs r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081418B0 + movs r0, #0xa + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _0814186A + adds r0, #0xf +_0814186A: + asrs r0, r0, #4 + lsls r0, r0, #4 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _08141894 + cmp r0, #8 + bne _081418BC + movs r0, #0 + movs r1, #0xff + bl sub_08142F3C + movs r0, #0 + movs r1, #0xff + bl sub_08143104 + b _081418BC + .align 2, 0 +_08141890: .4byte gUnknown_3005B60 +_08141894: + ldrh r1, [r4, #0x20] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08142F3C + ldrb r1, [r4, #0x14] + subs r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08143104 + b _081418BC +_081418B0: + ldr r1, _081418C4 + adds r0, r2, #0 + movs r2, #0x1e + movs r3, #0 + bl sub_08142044 +_081418BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081418C4: .4byte sub_08141964 + thumb_func_end sub_08141840 + + thumb_func_start sub_081418C8 +sub_081418C8: @ 0x081418C8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08141920 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0814192C + cmp r0, #0 + blt _0814192C + cmp r0, #2 + bgt _0814192C + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08141950 + movs r0, #0x1d + bl sub_08084180 + ldrh r1, [r4, #0x1e] + adds r1, #1 + strh r1, [r4, #0x1e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bhs _08141910 + movs r0, #0x1e + ldrsh r1, [r4, r0] + movs r0, #0x1d + bl sub_080841B8 +_08141910: + ldr r1, _08141924 + ldr r2, _08141928 + adds r0, r5, #0 + movs r3, #3 + bl sub_08142044 + b _08141950 + .align 2, 0 +_08141920: .4byte gUnknown_3005B60 +_08141924: .4byte sub_08141AE0 +_08141928: .4byte 0x0000FFFF +_0814192C: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08141950 + ldr r1, _08141958 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #0x1e] + ldr r1, _0814195C + ldr r2, _08141960 + adds r0, r5, #0 + movs r3, #3 + bl sub_08142044 +_08141950: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08141958: .4byte gUnknown_3005B60 +_0814195C: .4byte sub_08141B88 +_08141960: .4byte 0x0000FFFF + thumb_func_end sub_081418C8 + + thumb_func_start sub_08141964 +sub_08141964: @ 0x08141964 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081419A4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x12 + ldrsh r1, [r0, r2] + cmp r1, #0 + beq _081419F0 + cmp r1, #0 + blt _081419F0 + cmp r1, #2 + bgt _081419F0 + movs r1, #0xc + ldrsh r0, [r0, r1] + cmp r0, #0xc + bne _081419B4 + ldr r0, _081419A8 + bl sub_080A29AC + ldr r4, _081419AC + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _081419B0 + b _081419CA + .align 2, 0 +_081419A4: .4byte gUnknown_3005B60 +_081419A8: .4byte 0x00000185 +_081419AC: .4byte gUnknown_203A858 +_081419B0: .4byte gUnknown_8262D6C +_081419B4: + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_080A29AC + ldr r4, _081419E8 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _081419EC +_081419CA: + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + b _08141A20 + .align 2, 0 +_081419E8: .4byte gUnknown_203A858 +_081419EC: .4byte gUnknown_8262D66 +_081419F0: + movs r0, #0x20 + bl m4aSongNumStart + ldr r4, _08141A3C + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _08141A40 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 +_08141A20: + ldr r1, _08141A44 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xa] + ldr r1, _08141A48 + str r1, [r0] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08141A3C: .4byte gUnknown_203A858 +_08141A40: .4byte gUnknown_8262D74 +_08141A44: .4byte gUnknown_3005B60 +_08141A48: .4byte sub_081418C8 + thumb_func_end sub_08141964 + + thumb_func_start sub_08141A4C +sub_08141A4C: @ 0x08141A4C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08141A70 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #0x16 + ldrsh r5, [r4, r0] + cmp r5, #0 + beq _08141A74 + cmp r5, #3 + beq _08141AA4 + ldrh r0, [r4, #0x16] + adds r0, #1 + b _08141AAC + .align 2, 0 +_08141A70: .4byte gUnknown_3005B60 +_08141A74: + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] + movs r0, #0x15 + bl m4aSongNumStart + ldrh r0, [r4, #0x22] + bl sub_081435E0 + movs r2, #0x22 + ldrsh r1, [r4, r2] + ldr r0, _08141A94 + cmp r1, r0 + ble _08141A98 + strh r5, [r4, #0xa] + b _08141AAE + .align 2, 0 +_08141A94: .4byte 0x0000270E +_08141A98: + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0x16] + adds r0, #1 + b _08141AAC +_08141AA4: + movs r0, #0x15 + bl m4aSongNumStop + movs r0, #0 +_08141AAC: + strh r0, [r4, #0x16] +_08141AAE: + ldr r0, _08141AD4 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08141ACC + ldr r1, _08141AD8 + ldr r2, _08141ADC + adds r0, r6, #0 + movs r3, #3 + bl sub_08142044 +_08141ACC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08141AD4: .4byte gUnknown_3005B60 +_08141AD8: .4byte sub_08141B88 +_08141ADC: .4byte 0x0000FFFF + thumb_func_end sub_08141A4C + + thumb_func_start sub_08141AE0 +sub_08141AE0: @ 0x08141AE0 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08141B6C + ldr r1, _08141B70 + mov sb, r1 + ldr r1, [r1] + ldrb r2, [r1, #0x19] + ldr r1, _08141B74 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r1, #0xc + ldrsh r0, [r4, r1] + adds r1, r2, #0 + muls r1, r0, r1 + adds r0, r3, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r2, _08141B78 + mov r8, r2 + ldr r1, _08141B7C + mov r0, r8 + bl sub_08008BCC + ldr r5, _08141B80 + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + movs r1, #1 + mov r2, r8 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r5] + movs r1, #3 + bl sub_08003528 + mov r1, sb + ldr r0, [r1] + ldrb r1, [r0, #0x19] + movs r2, #0xc + ldrsh r0, [r4, r2] + muls r0, r1, r0 + strh r0, [r4, #0xa] + strh r6, [r4, #0x16] + ldr r0, _08141B84 + str r0, [r4] + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08141B6C: .4byte gUnknown_2021C40 +_08141B70: .4byte gUnknown_203A854 +_08141B74: .4byte gUnknown_3005B60 +_08141B78: .4byte gUnknown_2021C7C +_08141B7C: .4byte gUnknown_8262D79 +_08141B80: .4byte gUnknown_203A858 +_08141B84: .4byte sub_08141A4C + thumb_func_end sub_08141AE0 + + thumb_func_start sub_08141B88 +sub_08141B88: @ 0x08141B88 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _08141C08 + ldr r0, [r5] + adds r0, #0xb8 + ldr r1, _08141C0C + bl sub_08151A78 + ldr r6, [r5] + movs r0, #0xb8 + lsls r0, r0, #1 + adds r3, r6, r0 + ldrb r2, [r3] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + movs r0, #0xb2 + lsls r0, r0, #1 + adds r3, r6, r0 + ldrb r2, [r3] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + movs r0, #0xac + lsls r0, r0, #1 + adds r2, r6, r0 + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + ldr r6, _08141C10 + ldr r2, [r5] + ldr r5, _08141C14 + ldr r0, _08141C18 + lsls r3, r4, #2 + adds r3, r3, r4 + lsls r3, r3, #3 + adds r3, r3, r0 + movs r0, #0x20 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0] + adds r2, r2, r0 + adds r2, #0x43 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, _08141C1C + str r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08141C08: .4byte gUnknown_203A854 +_08141C0C: .4byte 0x0000FFFF +_08141C10: .4byte gUnknown_20205AC +_08141C14: .4byte gUnknown_8595D00 +_08141C18: .4byte gUnknown_3005B60 +_08141C1C: .4byte sub_08141C20 + thumb_func_end sub_08141B88 + + thumb_func_start sub_08141C20 +sub_08141C20: @ 0x08141C20 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r1, _08141D00 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + strh r5, [r0, #0x10] + ldr r4, _08141D04 + ldr r1, [r4] + ldrb r0, [r1, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, #0x1b + adds r1, r1, r0 + strb r2, [r1] + movs r0, #0 + bl sub_081425C4 + ldr r3, _08141D08 + ldr r0, [r4] + adds r0, #0x6c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r7, r3, #0 + movs r0, #8 + adds r0, r0, r7 + mov ip, r0 + ldr r1, _08141D0C + mov r8, r1 +_08141C78: + ldr r0, _08141D04 + ldr r4, [r0] + adds r0, r4, r5 + adds r0, #0x65 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r7 + adds r2, r3, #0 + adds r2, #0x40 + add r0, ip + ldr r0, [r0] + ldr r0, [r0] + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _08141D10 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08141C78 + ldr r0, _08141D00 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r2, r1, r0 + movs r1, #0x22 + ldrsh r0, [r2, r1] + ldrb r4, [r4, #0x19] + cmp r0, r4 + blt _08141D84 + movs r1, #0x14 + ldrsh r0, [r2, r1] + cmp r0, #6 + bne _08141D20 + ldr r4, _08141D14 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _08141D18 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldr r1, _08141D1C + b _08141D56 + .align 2, 0 +_08141D00: .4byte gUnknown_3005B60 +_08141D04: .4byte gUnknown_203A854 +_08141D08: .4byte gUnknown_20205AC +_08141D0C: .4byte 0xFFFFFC00 +_08141D10: .4byte 0x000003FF +_08141D14: .4byte gUnknown_203A858 +_08141D18: .4byte gUnknown_8262DB0 +_08141D1C: .4byte sub_08141DD4 +_08141D20: + movs r0, #0x22 + ldrsh r1, [r2, r0] + ldr r0, _08141D64 + cmp r1, r0 + bne _08141D78 + ldr r4, _08141D68 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _08141D6C + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldr r1, _08141D70 +_08141D56: + ldr r2, _08141D74 + adds r0, r6, #0 + movs r3, #3 + bl sub_08142044 + b _08141DBA + .align 2, 0 +_08141D64: .4byte 0x0000270F +_08141D68: .4byte gUnknown_203A858 +_08141D6C: .4byte gUnknown_8262DD5 +_08141D70: .4byte sub_081409DC +_08141D74: .4byte 0x0000FFFF +_08141D78: + ldr r0, _08141D80 + str r0, [r2] + b _08141DBA + .align 2, 0 +_08141D80: .4byte sub_081409DC +_08141D84: + ldr r4, _08141DC8 + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _08141DCC + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldr r1, _08141DD0 + adds r0, r6, #0 + movs r2, #0x3c + movs r3, #3 + bl sub_08142044 +_08141DBA: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08141DC8: .4byte gUnknown_203A858 +_08141DCC: .4byte gUnknown_8262D96 +_08141DD0: .4byte sub_08140A5C + thumb_func_end sub_08141C20 + + thumb_func_start sub_08141DD4 +sub_08141DD4: @ 0x08141DD4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r1, _08141E7C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0x14] + adds r0, r5, #0 + bl sub_081420BC + bl sub_08142138 + bl sub_08143B0C + movs r0, #0 + bl sub_081425C4 + movs r0, #6 + bl sub_081437F8 + ldr r7, _08141E80 + ldr r3, _08141E84 + movs r6, #5 + rsbs r6, r6, #0 +_08141E0C: + ldr r0, [r3] + adds r0, r0, r4 + adds r0, #0x43 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xb + bls _08141E0C + ldr r1, _08141E7C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r0, #0x22 + ldrsh r1, [r2, r0] + ldr r0, _08141E88 + cmp r1, r0 + bne _08141E9C + ldr r4, _08141E8C + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + ldr r2, _08141E90 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldr r1, _08141E94 + ldr r2, _08141E98 + adds r0, r5, #0 + movs r3, #3 + bl sub_08142044 + b _08141EA0 + .align 2, 0 +_08141E7C: .4byte gUnknown_3005B60 +_08141E80: .4byte gUnknown_20205AC +_08141E84: .4byte gUnknown_203A854 +_08141E88: .4byte 0x0000270F +_08141E8C: .4byte gUnknown_203A858 +_08141E90: .4byte gUnknown_8262DD5 +_08141E94: .4byte sub_081409DC +_08141E98: .4byte 0x0000FFFF +_08141E9C: + ldr r0, _08141EA8 + str r0, [r2] +_08141EA0: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08141EA8: .4byte sub_081409DC + thumb_func_end sub_08141DD4 + + thumb_func_start sub_08141EAC +sub_08141EAC: @ 0x08141EAC + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08141EF0 + ldr r0, [r4] + adds r0, #0xb8 + ldr r1, _08141EF4 + bl sub_08151A78 + ldr r0, [r4] + adds r0, #0xb8 + bl sub_08151654 + ldr r1, _08141EF8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x22] + bl sub_08145D18 + bl sub_08145CF0 + ldr r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x19] + cmp r0, r1 + bhs _08141F00 + ldr r1, _08141EFC + movs r0, #1 + b _08141F04 + .align 2, 0 +_08141EF0: .4byte gUnknown_203A854 +_08141EF4: .4byte 0x0000FFFF +_08141EF8: .4byte gUnknown_3005B60 +_08141EFC: .4byte gUnknown_2037280 +_08141F00: + ldr r1, _08141F38 + movs r0, #0 +_08141F04: + strh r0, [r1] + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080EE898 + movs r0, #0 + str r0, [sp] + movs r0, #0xff + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A2078 + ldr r1, _08141F3C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08141F40 + str r1, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08141F38: .4byte gUnknown_2037280 +_08141F3C: .4byte gUnknown_3005B60 +_08141F40: .4byte sub_08141F44 + thumb_func_end sub_08141EAC + + thumb_func_start sub_08141F44 +sub_08141F44: @ 0x08141F44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08141FA6 + movs r0, #0 + bl sub_080006F0 + ldr r1, _08141FAC + ldr r0, _08141FB0 + strh r4, [r0] + strh r4, [r1] + bl sub_08121D90 + bl sub_08121E00 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + bl sub_08008424 + bl sub_080A133C + bl sub_0800668C + bl sub_081404E0 + ldr r1, _08141FB4 + ldr r0, _08141FB8 + str r0, [r1] + ldr r0, _08141FBC + bl sub_08000540 + adds r0, r5, #0 + bl sub_080A8964 +_08141FA6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08141FAC: .4byte gUnknown_2021B38 +_08141FB0: .4byte gUnknown_2021B3A +_08141FB4: .4byte gUnknown_3005B0C +_08141FB8: .4byte sub_080AEA64 +_08141FBC: .4byte sub_08085A30 + thumb_func_end sub_08141F44 + + thumb_func_start sub_08141FC0 +sub_08141FC0: @ 0x08141FC0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08142034 + ldr r3, [r1] + adds r0, r3, #0 + adds r0, #0xa8 + ldrh r0, [r0] + adds r5, r1, #0 + cmp r0, #0 + beq _08141FE6 + ldr r0, _08142038 + adds r2, r3, #0 + adds r2, #0xaa + ldrh r1, [r0, #0x2e] + ldrh r0, [r2] + ands r0, r1 + cmp r0, #0 + beq _0814201A +_08141FE6: + ldr r1, _0814203C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0xac + ldr r1, [r1] + str r1, [r0] + adds r0, r3, #0 + adds r0, #0xaa + ldrh r0, [r0] + cmp r0, #0 + beq _08142008 + movs r0, #5 + bl sub_080A306C +_08142008: + ldr r2, [r5] + adds r0, r2, #0 + adds r0, #0xac + movs r1, #0 + str r1, [r0] + subs r0, #2 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] +_0814201A: + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0xa8 + ldrh r2, [r1] + ldr r0, _08142040 + cmp r2, r0 + beq _0814202C + subs r0, r2, #1 + strh r0, [r1] +_0814202C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08142034: .4byte gUnknown_203A854 +_08142038: .4byte gUnknown_3002360 +_0814203C: .4byte gUnknown_3005B60 +_08142040: .4byte 0x0000FFFF + thumb_func_end sub_08141FC0 + + thumb_func_start sub_08142044 +sub_08142044: @ 0x08142044 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + ldr r2, _08142094 + ldr r0, [r2] + mov ip, r0 + mov r3, ip + adds r3, #0xb4 + ldr r1, _08142098 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r3] + adds r3, r1, #0 + cmp r5, #0 + bne _08142074 + adds r5, r0, #0 +_08142074: + mov r0, ip + adds r0, #0xac + str r5, [r0] + subs r0, #4 + strh r4, [r0] + ldr r0, _0814209C + cmp r4, r0 + bne _081420A0 + cmp r7, #0 + bne _081420A0 + mov r1, ip + adds r1, #0xaa + ldrh r0, [r1] + orrs r4, r0 + strh r4, [r1] + b _081420A6 + .align 2, 0 +_08142094: .4byte gUnknown_203A854 +_08142098: .4byte gUnknown_3005B60 +_0814209C: .4byte 0x0000FFFF +_081420A0: + ldr r0, [r2] + adds r0, #0xaa + strh r7, [r0] +_081420A6: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + ldr r1, _081420B8 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081420B8: .4byte sub_08141FC0 + thumb_func_end sub_08142044 + + thumb_func_start sub_081420BC +sub_081420BC: @ 0x081420BC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r3, _08142130 + ldr r0, [r3] + strb r4, [r0] + ldr r2, [r3] + ldrb r1, [r2, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #3] + ldr r2, [r3] + ldrb r1, [r2, #3] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + ldr r2, [r3] + ldrb r1, [r2, #3] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + ldr r2, [r3] + ldrb r1, [r2, #3] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + ldr r6, _08142134 + adds r2, r3, #0 + movs r1, #0 +_081420FE: + ldr r0, [r2] + adds r0, #0x1b + adds r0, r0, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081420FE + ldr r2, [r3] + ldrb r1, [r2, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x1a] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r1, #0 + strh r1, [r0, #0xa] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08142130: .4byte gUnknown_203A854 +_08142134: .4byte gUnknown_3005B60 + thumb_func_end sub_081420BC + + thumb_func_start sub_08142138 +sub_08142138: @ 0x08142138 + push {lr} + ldr r2, _08142194 + ldr r1, [r2] + movs r0, #0 + str r0, [r1, #8] + movs r1, #0 + movs r3, #0 +_08142146: + ldr r0, [r2] + adds r0, #0xc + adds r0, r0, r1 + strb r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #5 + bls _08142146 + movs r1, #0 + ldr r3, _08142194 + movs r2, #0 +_0814215E: + ldr r0, [r3] + adds r0, #0x12 + adds r0, r0, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _0814215E + movs r1, #0 + ldr r3, _08142194 + movs r2, #0 +_08142176: + ldr r0, [r3] + adds r0, #0x16 + adds r0, r0, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bls _08142176 + movs r0, #1 + movs r1, #0xff + bl sub_08143104 + pop {r0} + bx r0 + .align 2, 0 +_08142194: .4byte gUnknown_203A854 + thumb_func_end sub_08142138 + + thumb_func_start sub_08142198 +sub_08142198: @ 0x08142198 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + mov r1, sp + ldr r0, _081421CC + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldr r0, [r0] + str r0, [r1] + add r2, sp, #0x10 + adds r1, r2, #0 + ldr r0, _081421D0 + ldm r0!, {r3, r6, r7} + stm r1!, {r3, r6, r7} + mov r8, r2 + cmp r5, #0xb + bls _081421D4 + movs r0, #0 + b _08142290 + .align 2, 0 +_081421CC: .4byte gUnknown_8595FE0 +_081421D0: .4byte gUnknown_8595FF0 +_081421D4: + ldr r6, _081422A0 + ldr r3, [r6] + ldr r1, _081422A4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r7, #0x14 + ldrsh r1, [r0, r7] + adds r3, r3, r1 + ldr r4, _081422A8 + lsls r5, r5, #3 + adds r2, r5, r4 + ldrb r1, [r2, #2] + strb r1, [r3, #0xb] + ldrb r1, [r2, #2] + strh r1, [r0, #0x20] + ldr r2, [r6] + adds r0, r4, #4 + adds r0, r5, r0 + ldr r1, [r2, #8] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2, #8] + movs r3, #0 + mov sb, r4 + mov ip, r5 + adds r5, r0, #0 +_0814220C: + lsls r0, r3, #2 + mov r1, sp + adds r4, r1, r0 + ldr r0, [r4] + ands r0, r5 + cmp r0, #0 + beq _08142226 + ldr r1, [r6] + adds r1, #0x12 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_08142226: + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x12 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #2 + bls _0814223C + ldr r0, [r2, #8] + ldr r1, [r4] + orrs r0, r1 + str r0, [r2, #8] +_0814223C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0814220C + movs r6, #0 + ldr r0, _081422AC + add r0, ip + ldr r7, [r0] + ldr r4, _081422A0 + mov r5, r8 +_08142252: + lsls r0, r6, #2 + adds r2, r5, r0 + ldr r0, [r2] + ands r0, r7 + cmp r0, #0 + beq _0814226A + ldr r1, [r4] + adds r1, #0x16 + adds r1, r1, r6 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0814226A: + ldr r3, [r4] + adds r0, r3, #0 + adds r0, #0x16 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #3 + bls _08142280 + ldr r0, [r3, #8] + ldr r1, [r2] + orrs r0, r1 + str r0, [r3, #8] +_08142280: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _08142252 + mov r0, ip + add r0, sb + ldrb r0, [r0, #2] +_08142290: + add sp, #0x1c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081422A0: .4byte gUnknown_203A854 +_081422A4: .4byte gUnknown_3005B60 +_081422A8: .4byte gUnknown_8595E90 +_081422AC: .4byte gUnknown_8595E94 + thumb_func_end sub_08142198 + + thumb_func_start sub_081422B0 +sub_081422B0: @ 0x081422B0 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + lsrs r3, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #0x12 + bhi _08142344 + cmp r2, #0xf + bhi _08142340 + lsls r0, r2, #2 + ldr r1, _081422D4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081422D4: .4byte _081422D8 +_081422D8: @ jump table + .4byte _08142318 @ case 0 + .4byte _0814231C @ case 1 + .4byte _0814231C @ case 2 + .4byte _0814231C @ case 3 + .4byte _0814231C @ case 4 + .4byte _08142330 @ case 5 + .4byte _08142340 @ case 6 + .4byte _08142340 @ case 7 + .4byte _08142340 @ case 8 + .4byte _08142340 @ case 9 + .4byte _08142330 @ case 10 + .4byte _08142340 @ case 11 + .4byte _08142340 @ case 12 + .4byte _08142340 @ case 13 + .4byte _08142340 @ case 14 + .4byte _08142330 @ case 15 +_08142318: + movs r0, #3 + b _08142346 +_0814231C: + adds r0, r2, #5 + cmp r3, r0 + beq _0814233C + adds r0, #5 + cmp r3, r0 + beq _0814233C + adds r0, #5 + cmp r3, r0 + bne _08142344 + b _0814233C +_08142330: + adds r0, r2, #1 + cmp r3, r0 + blt _08142344 + adds r0, r2, #4 + cmp r3, r0 + bgt _08142344 +_0814233C: + movs r0, #1 + b _08142346 +_08142340: + cmp r3, r2 + beq _0814233C +_08142344: + movs r0, #0 +_08142346: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081422B0 + + thumb_func_start sub_0814234C +sub_0814234C: @ 0x0814234C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + str r0, [sp, #0x18] + cmp r7, #0xa + beq _08142372 + cmp r7, #0xa + bgt _0814236E + cmp r7, #5 + beq _08142372 + b _081423D4 +_0814236E: + cmp r7, #0xf + bne _081423D4 +_08142372: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r2, r7, #5 + ldr r1, _081423C8 + mov ip, r1 + cmp r4, r2 + bge _081423B0 + ldr r0, [r1] + ldr r3, _081423CC + ldr r5, [r0, #8] + adds r6, r3, #0 + adds r6, #8 +_0814238C: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r1, r0, #2 + adds r0, r1, r6 + ldr r0, [r0] + ands r0, r5 + cmp r0, #0 + bne _081423A6 + adds r0, r1, r3 + ldrh r0, [r0, #0x10] + ldr r1, [sp, #0x18] + orrs r1, r0 + str r1, [sp, #0x18] +_081423A6: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r2 + blt _0814238C +_081423B0: + mov r2, ip + ldr r0, [r2] + adds r0, #0xb8 + ldr r1, _081423D0 + ldr r3, [sp, #0x18] + ands r3, r1 + str r3, [sp, #0x18] + adds r1, r3, #0 + bl sub_08151A24 + b _081425AA + .align 2, 0 +_081423C8: .4byte gUnknown_203A854 +_081423CC: .4byte gUnknown_8595D00 +_081423D0: .4byte 0x0000DFFF +_081423D4: + mov r0, sp + ldr r1, _08142424 + ldm r1!, {r2, r4, r5} + stm r0!, {r2, r4, r5} + ldm r1!, {r3, r4, r5} + stm r0!, {r3, r4, r5} + subs r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + mov sb, r1 + cmp r0, #3 + bhi _081423F2 + movs r2, #3 + mov sb, r2 +_081423F2: + adds r0, r7, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + ldr r3, _08142428 + adds r0, r0, r3 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r7, #0 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _08142458 + cmp r0, #2 + bgt _08142430 + cmp r0, #1 + beq _08142444 + ldr r4, _0814242C + mov ip, r4 + b _0814249C + .align 2, 0 +_08142424: .4byte gUnknown_8595F9C +_08142428: .4byte 0xFFFF0000 +_0814242C: .4byte gUnknown_203A854 +_08142430: + cmp r0, #3 + beq _0814246C + cmp r0, #4 + beq _08142480 + ldr r5, _08142440 + mov ip, r5 + b _0814249C + .align 2, 0 +_08142440: .4byte gUnknown_203A854 +_08142444: + ldr r3, _08142450 + ldr r2, _08142454 + ldr r0, [r2] + adds r0, #0x43 + b _08142488 + .align 2, 0 +_08142450: .4byte gUnknown_20205AC +_08142454: .4byte gUnknown_203A854 +_08142458: + ldr r3, _08142464 + ldr r2, _08142468 + ldr r0, [r2] + adds r0, #0x44 + b _08142488 + .align 2, 0 +_08142464: .4byte gUnknown_20205AC +_08142468: .4byte gUnknown_203A854 +_0814246C: + ldr r3, _08142478 + ldr r2, _0814247C + ldr r0, [r2] + adds r0, #0x45 + b _08142488 + .align 2, 0 +_08142478: .4byte gUnknown_20205AC +_0814247C: .4byte gUnknown_203A854 +_08142480: + ldr r3, _081424EC + ldr r2, _081424F0 + ldr r0, [r2] + adds r0, #0x46 +_08142488: + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + mov r8, r0 + mov ip, r2 +_0814249C: + mov r0, sb + cmp r0, #1 + bne _081424F8 + mov r1, ip + ldr r4, [r1] + ldr r1, _081424F4 + lsls r2, r7, #2 + adds r0, r2, r7 + lsls r0, r0, #2 + adds r1, #8 + adds r0, r0, r1 + ldr r1, [r4, #8] + ldr r0, [r0] + ands r1, r0 + str r2, [sp, #0x1c] + cmp r1, #0 + bne _081425AA + adds r0, r7, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r1, r0, #1 + lsls r1, r1, #3 + mov r3, sp + adds r2, r3, r1 + ldrh r1, [r2, #2] + add r1, r8 + strh r1, [r2, #2] + adds r1, r4, #0 + adds r1, #0xb8 + lsls r0, r0, #3 + subs r0, #8 + adds r2, r3, r0 + adds r0, r1, #0 + movs r1, #0xd + bl sub_08151668 + b _0814258C + .align 2, 0 +_081424EC: .4byte gUnknown_20205AC +_081424F0: .4byte gUnknown_203A854 +_081424F4: .4byte gUnknown_8595D00 +_081424F8: + movs r4, #0 + lsls r5, r7, #2 + str r5, [sp, #0x1c] + ldr r0, _081425BC + mov sl, r0 +_08142502: + lsls r0, r4, #2 + adds r0, r0, r4 + adds r0, r7, r0 + adds r0, #5 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r1, ip + ldr r5, [r1] + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r6, r0, #2 + mov r0, sl + adds r0, #8 + adds r0, r6, r0 + ldr r1, [r5, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08142578 + adds r0, r3, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r1, r0, #1 + lsls r1, r1, #3 + mov r3, sp + adds r2, r3, r1 + ldrh r1, [r2, #2] + add r1, r8 + strh r1, [r2, #2] + adds r3, r5, #0 + adds r3, #0xb8 + adds r1, r4, #0 + adds r1, #0xd + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r0, #3 + subs r0, #8 + mov r5, sp + adds r2, r5, r0 + adds r0, r3, #0 + bl sub_08151668 + mov r0, sb + cmp r0, #3 + bne _0814256A + mov r1, sl + adds r0, r6, r1 + ldrh r0, [r0, #0x10] + str r0, [sp, #0x18] +_0814256A: + mov r0, sb + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r2, _081425C0 + mov ip, r2 +_08142578: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _08142502 + mov r3, sb + cmp r3, #2 + beq _0814258C + movs r4, #0 + str r4, [sp, #0x18] +_0814258C: + ldr r0, _081425C0 + ldr r0, [r0] + adds r0, #0xb8 + ldr r2, _081425BC + ldr r5, [sp, #0x1c] + adds r1, r5, r7 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #0x10] + ldr r2, [sp, #0x18] + orrs r2, r1 + str r2, [sp, #0x18] + adds r1, r2, #0 + bl sub_08151A24 +_081425AA: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081425BC: .4byte gUnknown_8595D00 +_081425C0: .4byte gUnknown_203A854 + thumb_func_end sub_0814234C + + thumb_func_start sub_081425C4 +sub_081425C4: @ 0x081425C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08142610 + ldr r1, [r4] + movs r0, #1 + strh r0, [r1, #0x2a] + movs r0, #0 + movs r1, #0 + bl sub_08142F3C + ldr r1, [r4] + ldr r2, _08142614 + adds r0, r1, r2 + ldr r2, _08142618 + adds r1, r1, r2 + ldr r1, [r1] + movs r2, #0x10 + str r2, [sp] + movs r2, #0xd + str r2, [sp, #4] + movs r2, #0xe + movs r3, #7 + bl sub_08152034 + cmp r5, #0xf + bhi _081426C4 + lsls r0, r5, #2 + ldr r1, _0814261C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08142610: .4byte gUnknown_203A854 +_08142614: .4byte 0x0000117C +_08142618: .4byte 0x0000397C +_0814261C: .4byte _08142620 +_08142620: @ jump table + .4byte _08142800 @ case 0 + .4byte _08142660 @ case 1 + .4byte _08142660 @ case 2 + .4byte _08142660 @ case 3 + .4byte _08142660 @ case 4 + .4byte _08142694 @ case 5 + .4byte _081426C4 @ case 6 + .4byte _081426C4 @ case 7 + .4byte _081426C4 @ case 8 + .4byte _081426C4 @ case 9 + .4byte _08142694 @ case 10 + .4byte _081426C4 @ case 11 + .4byte _081426C4 @ case 12 + .4byte _081426C4 @ case 13 + .4byte _081426C4 @ case 14 + .4byte _08142694 @ case 15 +_08142660: + movs r0, #4 + str r0, [sp, #0x18] + add r1, sp, #8 + movs r0, #0 + strb r0, [r1] + adds r0, r1, #0 + ldrb r0, [r0] + cmp r0, #3 + bhi _081426CC + add r4, sp, #0x10 + adds r3, r1, #0 +_08142676: + ldrb r2, [r3] + adds r2, r2, r4 + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r5, r0 + strb r0, [r2] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldrb r0, [r3] + ldr r1, [sp, #0x18] + cmp r0, r1 + blo _08142676 + b _081426CC +_08142694: + movs r2, #5 + str r2, [sp, #0x18] + add r1, sp, #8 + movs r0, #0 + strb r0, [r1] + adds r0, r1, #0 + ldrb r0, [r0] + cmp r0, #4 + bhi _081426CC + add r3, sp, #0x10 + adds r2, r1, #0 +_081426AA: + ldrb r1, [r2] + adds r1, r1, r3 + ldrb r0, [r2] + adds r0, r5, r0 + strb r0, [r1] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldrb r0, [r2] + ldr r1, [sp, #0x18] + cmp r0, r1 + blo _081426AA + b _081426CC +_081426C4: + movs r2, #1 + str r2, [sp, #0x18] + add r0, sp, #0x10 + strb r5, [r0] +_081426CC: + add r1, sp, #8 + movs r0, #0 + strb r0, [r1] + adds r0, r1, #0 + ldrb r0, [r0] + ldr r1, [sp, #0x18] + cmp r0, r1 + blo _081426DE + b _08142800 +_081426DE: + mov r2, sp + adds r2, #0xe + str r2, [sp, #0x1c] + add r0, sp, #0x10 + mov sl, r0 + add r1, sp, #8 + mov sb, r1 + subs r2, #4 + str r2, [sp, #0x20] +_081426F0: + mov r1, sb + ldrb r0, [r1] + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _08142810 + adds r0, r0, r2 + ldrb r0, [r0, #6] + ldr r1, [sp, #0x1c] + strb r0, [r1] + mov r2, sb + ldrb r0, [r2] + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08142810 + adds r0, r0, r1 + ldrb r0, [r0, #3] + ldr r2, [sp, #0x20] + strh r0, [r2] + mov r7, sp + adds r7, #9 + movs r0, #0 + strb r0, [r7] + ldrb r0, [r7] + cmp r0, #2 + bhi _081427EE + add r6, sp, #0xc + mov r8, r2 + ldr r0, [sp, #0x1c] + mov ip, r0 + ldr r1, _08142814 + str r1, [sp, #0x28] +_0814273A: + mov r2, sb + ldrb r0, [r2] + add r0, sl + ldrb r0, [r0] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08142810 + adds r1, r1, r0 + str r7, [sp, #0x24] + ldrb r0, [r7] + ldrb r1, [r1, #4] + adds r0, r0, r1 + lsls r0, r0, #5 + strh r0, [r6] + ldr r1, [sp, #0x28] + ldr r4, [r1] + mov r2, r8 + ldrh r0, [r2] + ldrh r2, [r6] + adds r2, r2, r0 + lsls r2, r2, #1 + ldr r0, _08142818 + adds r5, r4, r0 + adds r2, r5, r2 + mov r1, ip + ldrb r0, [r1] + ldrb r1, [r7] + adds r1, r1, r0 + ldr r0, _0814281C + adds r4, r4, r0 + ldr r3, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r1, #0xd0 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + mov r2, r8 + ldrh r0, [r2] + ldrh r2, [r6] + adds r2, r2, r0 + adds r2, #1 + lsls r2, r2, #1 + adds r2, r5, r2 + mov r1, ip + ldrb r0, [r1] + ldrb r1, [r7] + adds r1, r1, r0 + ldr r3, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r1, #0xd1 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + mov r2, r8 + ldrh r1, [r2] + ldrh r0, [r6] + adds r0, r0, r1 + adds r0, #2 + lsls r0, r0, #1 + adds r5, r5, r0 + mov r1, ip + ldrb r0, [r1] + ldrb r1, [r7] + adds r1, r1, r0 + ldr r2, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r2, #0xd2 + lsls r2, r2, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r5] + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + ldr r1, [sp, #0x24] + ldrb r0, [r1] + cmp r0, #2 + bls _0814273A +_081427EE: + mov r2, sb + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldrb r0, [r2] + ldr r1, [sp, #0x18] + cmp r0, r1 + bhs _08142800 + b _081426F0 +_08142800: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08142810: .4byte gUnknown_8595D00 +_08142814: .4byte gUnknown_203A854 +_08142818: .4byte 0x0000117C +_0814281C: .4byte 0x0000397C + thumb_func_end sub_081425C4 + + thumb_func_start sub_08142820 +sub_08142820: @ 0x08142820 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08142858 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #0x13 + bls _08142838 + movs r4, #0 +_08142838: + ldr r3, _0814285C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r2, r0, #2 + adds r0, r2, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #4 + beq _0814288C + cmp r0, #4 + bgt _08142860 + cmp r0, #3 + beq _08142866 + b _081428D0 + .align 2, 0 +_08142858: .4byte gUnknown_8595FFC +_0814285C: .4byte gUnknown_8595D00 +_08142860: + cmp r0, #0xc + beq _081428B0 + b _081428D0 +_08142866: + adds r0, r4, #0 + movs r1, #5 + bl __udivsi3 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08142888 + ldr r0, [r0] + adds r0, #0x16 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #3 + bhi _081428D0 + ldrb r0, [r1] + adds r0, #1 + b _081428A4 + .align 2, 0 +_08142888: .4byte gUnknown_203A854 +_0814288C: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081428AC + ldr r0, [r0] + adds r0, #0x12 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #2 + bhi _081428D0 + ldrb r0, [r1] + adds r0, #2 +_081428A4: + add r0, sp + ldrb r0, [r0] + b _081428D2 + .align 2, 0 +_081428AC: .4byte gUnknown_203A854 +_081428B0: + ldr r0, _081428CC + ldr r1, [r0] + adds r0, r3, #0 + adds r0, #8 + adds r0, r2, r0 + ldr r1, [r1, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _081428D0 + mov r0, sp + ldrb r0, [r0, #4] + b _081428D2 + .align 2, 0 +_081428CC: .4byte gUnknown_203A854 +_081428D0: + movs r0, #0 +_081428D2: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08142820 + + thumb_func_start sub_081428DC +sub_081428DC: @ 0x081428DC + push {r4, r5, r6, lr} + ldr r4, _0814297C + ldr r0, [r4] + ldrh r1, [r0, #0x2c] + movs r0, #0x20 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x2e] + movs r0, #0x22 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x30] + movs r0, #0x24 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #0x32] + movs r0, #0x26 + bl sub_08001144 + ldr r3, [r4] + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldr r0, _08142980 + movs r4, #0 + ldrsh r2, [r0, r4] + adds r2, #0x50 + adds r0, r1, #0 + muls r0, r2, r0 + movs r4, #0xe8 + lsls r4, r4, #7 + subs r4, r4, r0 + movs r6, #0x2c + ldrsh r5, [r3, r6] + ldr r0, _08142984 + movs r6, #0 + ldrsh r1, [r0, r6] + adds r1, #0x74 + adds r0, r5, #0 + muls r0, r1, r0 + subs r4, r4, r0 + movs r5, #0x32 + ldrsh r0, [r3, r5] + muls r0, r2, r0 + movs r5, #0xa8 + lsls r5, r5, #7 + subs r5, r5, r0 + movs r6, #0x30 + ldrsh r0, [r3, r6] + muls r0, r1, r0 + subs r5, r5, r0 + lsls r1, r4, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x28 + bl sub_08001144 + ldr r6, _08142988 + ands r4, r6 + lsrs r4, r4, #0x10 + movs r0, #0x2a + adds r1, r4, #0 + bl sub_08001144 + lsls r1, r5, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x2c + bl sub_08001144 + ands r5, r6 + lsrs r5, r5, #0x10 + movs r0, #0x2e + adds r1, r5, #0 + bl sub_08001144 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814297C: .4byte gUnknown_203A854 +_08142980: .4byte gUnknown_2021B3A +_08142984: .4byte gUnknown_2021B38 +_08142988: .4byte 0x0FFF0000 + thumb_func_end sub_081428DC + + thumb_func_start sub_0814298C +sub_0814298C: @ 0x0814298C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _081429A8 + adds r0, r4, #0 + bl sub_08121F58 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081429A8: .4byte gUnknown_8595FBC + thumb_func_end sub_0814298C + + thumb_func_start sub_081429AC +sub_081429AC: @ 0x081429AC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081429D8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081429D0 + movs r0, #0 + bl sub_080006F0 + ldr r0, _081429DC + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_081429D0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081429D8: .4byte gUnknown_2037C74 +_081429DC: .4byte sub_08140694 + thumb_func_end sub_081429AC + + thumb_func_start sub_081429E0 +sub_081429E0: @ 0x081429E0 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #1 + bl sub_08197060 + bl sub_08145CD4 + bl sub_080034D4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r2, _08142A38 + ldrb r1, [r2, #8] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1a + ldrb r3, [r2, #4] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #4] + bl sub_080A12E4 + ldr r1, _08142A3C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08142A40 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142A38: .4byte gUnknown_2037C74 +_08142A3C: .4byte gUnknown_3005B60 +_08142A40: .4byte sub_081429AC + thumb_func_end sub_081429E0 + + thumb_func_start sub_08142A44 +sub_08142A44: @ 0x08142A44 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + bl sub_08197060 + bl sub_08145CD4 + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08142A44 + + thumb_func_start sub_08142A68 +sub_08142A68: @ 0x08142A68 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08142AAC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + ldr r0, _08142AB0 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08142AA6 + ldr r1, _08142AB4 + movs r0, #1 + strh r0, [r1] + bl sub_08145CD4 + movs r0, #0 + movs r1, #1 + bl sub_08197060 + bl sub_080987E8 + adds r0, r4, #0 + bl sub_080A8964 +_08142AA6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142AAC: .4byte gUnknown_3005B60 +_08142AB0: .4byte gUnknown_3002360 +_08142AB4: .4byte gUnknown_2037280 + thumb_func_end sub_08142A68 + + thumb_func_start sub_08142AB8 +sub_08142AB8: @ 0x08142AB8 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08142B30 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08142B28 + ldr r2, _08142B34 + ldr r0, _08142B38 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + lsrs r1, r1, #7 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + ldr r0, _08142B3C + movs r2, #2 + movs r3, #1 + bl sub_080089D8 + ldr r4, _08142B40 + ldr r1, _08142B44 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #0 + bl sub_08196FF0 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, _08142B48 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08142B4C + str r1, [r0] +_08142B28: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08142B30: .4byte gUnknown_3002360 +_08142B34: .4byte gUnknown_8595EF0 +_08142B38: .4byte gUnknown_2037280 +_08142B3C: .4byte gUnknown_2021C40 +_08142B40: .4byte gUnknown_2021C7C +_08142B44: .4byte gUnknown_8262CF3 +_08142B48: .4byte gUnknown_3005B60 +_08142B4C: .4byte sub_0814298C + thumb_func_end sub_08142AB8 + + thumb_func_start sub_08142B50 +sub_08142B50: @ 0x08142B50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08142BD8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r1, #0x22 + ldrsh r0, [r6, r1] + bl sub_08145C20 + ldr r2, _08142BDC + ldr r7, _08142BE0 + ldrh r1, [r7] + movs r0, #1 + mov r8, r0 + ands r0, r1 + lsrs r1, r1, #7 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r4, [r0] + ldr r0, _08142BE4 + adds r1, r4, #0 + movs r2, #2 + movs r3, #1 + bl sub_080089D8 + movs r1, #0x22 + ldrsh r0, [r6, r1] + cmp r0, r4 + blt _08142C40 + ldrh r1, [r7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08142BF0 + mov r0, r8 + ands r0, r1 + cmp r0, #0 + beq _08142BF0 + movs r0, #0 + movs r1, #0 + bl sub_08196FF0 + ldr r2, _08142BE8 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _08142BEC + str r0, [r6] + b _08142C7A + .align 2, 0 +_08142BD8: .4byte gUnknown_3005B60 +_08142BDC: .4byte gUnknown_8595EF0 +_08142BE0: .4byte gUnknown_2037280 +_08142BE4: .4byte gUnknown_2021C40 +_08142BE8: .4byte gUnknown_8262D23 +_08142BEC: .4byte sub_08142AB8 +_08142BF0: + ldr r4, _08142C30 + ldr r1, _08142C34 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #0 + bl sub_08196FF0 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, _08142C38 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08142C3C + str r1, [r0] + b _08142C7A + .align 2, 0 +_08142C30: .4byte gUnknown_2021C7C +_08142C34: .4byte gUnknown_8262CF3 +_08142C38: .4byte gUnknown_3005B60 +_08142C3C: .4byte sub_0814298C +_08142C40: + ldr r5, _08142C88 + ldr r1, _08142C8C + adds r0, r5, #0 + bl sub_08008BCC + movs r0, #0 + movs r1, #0 + bl sub_08196FF0 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _08142C90 + str r0, [r6] + strh r4, [r6, #0x22] + strh r4, [r6, #8] +_08142C7A: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08142C88: .4byte gUnknown_2021C7C +_08142C8C: .4byte gUnknown_8262D18 +_08142C90: .4byte sub_08142A68 + thumb_func_end sub_08142B50 + + thumb_func_start sub_08142C94 +sub_08142C94: @ 0x08142C94 + push {r4, lr} + bl sub_080987DC + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + movs r2, #1 + bl sub_08145C6C + ldr r0, _08142CD0 + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08145CF0 + ldr r2, _08142CD4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r0, [r1, #0x22] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142CD0: .4byte sub_08142B50 +_08142CD4: .4byte gUnknown_3005B60 + thumb_func_end sub_08142C94 + + thumb_func_start sub_08142CD8 +sub_08142CD8: @ 0x08142CD8 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08142D10 + bl sub_08008424 + ldr r0, _08142D00 + bl sub_080084A8 + ldr r0, _08142D04 + bl sub_08034388 + ldr r0, _08142D08 + bl sub_08034388 + ldr r0, _08142D0C + bl sub_08034388 + b _08142D26 + .align 2, 0 +_08142D00: .4byte gUnknown_8596F38 +_08142D04: .4byte gUnknown_8597418 +_08142D08: .4byte gUnknown_859752C +_08142D0C: .4byte gUnknown_85975F4 +_08142D10: + movs r0, #0xe + bl sub_08008280 + movs r0, #0xd + bl sub_08008280 + movs r0, #0xc + bl sub_08008280 + bl sub_08008424 +_08142D26: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08142CD8 + + thumb_func_start sub_08142D2C +sub_08142D2C: @ 0x08142D2C + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, [r0, #4] + ldrb r3, [r1] + movs r1, #0x74 + movs r2, #0x50 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r0, _08142D90 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r6] + strh r0, [r1, #0x2e] + strh r4, [r1, #0x30] + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #2 + orrs r0, r2 + strb r0, [r3] + adds r1, #0x2c + ldrb r0, [r1] + movs r2, #0x40 + orrs r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1] + ldrh r2, [r6] + adds r0, r2, #0 + adds r0, #0x1e + strh r0, [r6] + lsls r0, r0, #0x10 + ldr r1, _08142D94 + cmp r0, r1 + bls _08142D88 + ldr r1, _08142D98 + adds r0, r2, r1 + strh r0, [r6] +_08142D88: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08142D90: .4byte gUnknown_20205AC +_08142D94: .4byte 0x01670000 +_08142D98: .4byte 0xFFFFFEB6 + thumb_func_end sub_08142D2C + + thumb_func_start sub_08142D9C +sub_08142D9C: @ 0x08142D9C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r4, _08142EE8 + ldr r0, [r4] + ldr r5, _08142EEC + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + mov r6, sp + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + ldrh r0, [r4, #4] + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + ldr r4, _08142EF0 + ldr r0, [r4] + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r0, [r4, #4] + strh r0, [r6, #4] + ldrh r0, [r4, #6] + strh r0, [r6, #6] + mov r0, sp + bl sub_08008210 + movs r6, #0 + ldr r0, _08142EF4 + mov r8, r0 +_08142DE4: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #0x1b + lsrs r4, r0, #0x18 + movs r5, #0 + lsls r7, r6, #2 +_08142DF0: + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #3 + ldr r0, _08142EF8 + adds r0, r1, r0 + adds r1, #0x94 + adds r2, r4, #0 + adds r2, #0x5c + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _08142EFC + ldr r1, [r1] + adds r2, r5, #0 + adds r2, #0x1d + adds r2, r7, r2 + adds r1, #0x3c + adds r1, r1, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #0 + adds r0, #0x18 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x47 + bls _08142E3A + movs r4, #0 +_08142E3A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08142DF0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _08142DE4 + movs r6, #0 + ldr r4, _08142EF4 +_08142E52: + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #3 + ldr r0, _08142F00 + adds r0, r1, r0 + adds r1, #0x94 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x46 + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _08142EFC + ldr r1, [r1] + adds r1, r1, r6 + adds r1, #0x65 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _08142E52 + movs r6, #0 + ldr r4, _08142EF4 +_08142E98: + lsls r2, r6, #1 + adds r2, r2, r6 + lsls r2, r2, #3 + ldr r0, _08142F04 + adds r0, r2, r0 + adds r2, #0x5c + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r1, #0x7e + movs r3, #0x1e + bl sub_08006B0C + ldr r1, _08142EFC + ldr r1, [r1] + adds r1, r1, r6 + adds r1, #0x69 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _08142E98 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08142EE8: .4byte gUnknown_859703C +_08142EEC: .4byte gUnknown_201C000 +_08142EF0: .4byte gUnknown_8597044 +_08142EF4: .4byte gUnknown_20205AC +_08142EF8: .4byte gUnknown_8597164 +_08142EFC: .4byte gUnknown_203A854 +_08142F00: .4byte gUnknown_85970BC +_08142F04: .4byte gUnknown_859711C + thumb_func_end sub_08142D9C + + thumb_func_start sub_08142F08 +sub_08142F08: @ 0x08142F08 + push {r4, lr} + movs r4, #0 +_08142F0C: + ldr r0, _08142F34 + ldr r0, [r0] + adds r0, r0, r4 + adds r0, #0x59 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08142F38 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xb + bls _08142F0C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08142F34: .4byte gUnknown_203A854 +_08142F38: .4byte gUnknown_20205AC + thumb_func_end sub_08142F08 + + thumb_func_start sub_08142F3C +sub_08142F3C: @ 0x08142F3C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov ip, r1 + cmp r0, #0 + beq _08142F8C + cmp r0, #1 + bne _08143032 + movs r4, #0 + ldr r5, _08142F84 + ldr r3, _08142F88 + movs r2, #4 +_08142F5E: + ldr r0, [r3] + adds r0, r0, r4 + adds r0, #0x59 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x12 + bls _08142F5E + b _08143032 + .align 2, 0 +_08142F84: .4byte gUnknown_20205AC +_08142F88: .4byte gUnknown_203A854 +_08142F8C: + movs r4, #0 + ldr r0, _08142FD4 + mov sb, r0 + ldr r7, _08142FD8 + adds r1, r7, #4 + mov r8, r1 + ldr r5, _08142FDC + movs r6, #5 + rsbs r6, r6, #0 +_08142F9E: + mov r0, sb + ldr r2, [r0] + lsls r3, r4, #3 + mov r1, r8 + adds r0, r3, r1 + ldr r1, [r2, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08142FE0 + adds r0, r3, r7 + ldrb r0, [r0, #2] + cmp r0, ip + beq _08142FE0 + adds r0, r2, r4 + adds r0, #0x59 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _08142FF8 + .align 2, 0 +_08142FD4: .4byte gUnknown_203A854 +_08142FD8: .4byte gUnknown_8595E90 +_08142FDC: .4byte gUnknown_20205AC +_08142FE0: + adds r0, r2, r4 + adds r0, #0x59 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] +_08142FF8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xb + bls _08142F9E + cmp r4, #0x12 + bhi _08143032 + ldr r6, _08143040 + ldr r3, _08143044 + movs r5, #5 + rsbs r5, r5, #0 +_0814300E: + ldr r0, [r3] + adds r0, r0, r4 + adds r0, #0x59 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r5, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x12 + bls _0814300E +_08143032: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08143040: .4byte gUnknown_20205AC +_08143044: .4byte gUnknown_203A854 + thumb_func_end sub_08142F3C + + thumb_func_start sub_08143048 +sub_08143048: @ 0x08143048 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r5, #0 + ldr r6, _081430F4 + ldr r4, _081430F8 + movs r0, #4 + mov r8, r0 +_08143058: + ldr r0, _081430FC + movs r1, #0x74 + movs r2, #0x14 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r6] + adds r3, r5, #0 + adds r3, #0x31 + adds r1, #0x3c + adds r1, r1, r3 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + mov r2, r8 + orrs r1, r2 + strb r1, [r0] + ldr r2, [r6] + adds r2, #0x3c + adds r2, r2, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08143100 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + movs r7, #0xd + rsbs r7, r7, #0 + adds r2, r7, #0 + ands r1, r2 + mov r2, r8 + orrs r1, r2 + strb r1, [r0, #5] + ldr r0, [r6] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #8 + bl sub_08007EC0 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08143058 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081430F4: .4byte gUnknown_203A854 +_081430F8: .4byte gUnknown_20205AC +_081430FC: .4byte gUnknown_85974DC +_08143100: .4byte sub_081439D8 + thumb_func_end sub_08143048 + + thumb_func_start sub_08143104 +sub_08143104: @ 0x08143104 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r6, #0 + cmp r0, #0 + beq _08143150 + ldr r4, _08143148 + ldr r3, _0814314C + movs r2, #4 +_08143122: + ldr r0, [r3] + adds r0, r0, r6 + adds r0, #0x6d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #5 + bls _08143122 + b _0814320E + .align 2, 0 +_08143148: .4byte gUnknown_20205AC +_0814314C: .4byte gUnknown_203A854 +_08143150: + ldr r0, _08143190 + mov r8, r0 + ldr r7, _08143194 + ldr r0, _08143198 + mov ip, r0 + movs r0, #5 + rsbs r0, r0, #0 + mov sl, r0 +_08143160: + mov r0, r8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xc + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _08143174 + cmp r6, sb + bne _0814319C +_08143174: + adds r0, r1, r6 + adds r0, #0x6d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _08143204 + .align 2, 0 +_08143190: .4byte gUnknown_203A854 +_08143194: .4byte gUnknown_20205AC +_08143198: .4byte gUnknown_8595D00 +_0814319C: + adds r5, r6, #0 + adds r5, #0x31 + adds r0, r1, #0 + adds r0, #0x3c + adds r0, r0, r5 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x3e + ldrb r2, [r1] + mov r0, sl + ands r0, r2 + strb r0, [r1] + mov r0, r8 + ldr r3, [r0] + adds r4, r3, #0 + adds r4, #0x3c + adds r4, r4, r5 + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r7 + adds r3, #0xc + adds r3, r3, r6 + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #3] + adds r0, #1 + lsls r0, r0, #3 + adds r0, #4 + strh r0, [r2, #0x20] + ldrb r0, [r4] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r7 + ldrb r1, [r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrb r0, [r0, #4] + adds r0, #1 + lsls r0, r0, #3 + adds r0, #3 + strh r0, [r2, #0x22] +_08143204: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #5 + bls _08143160 +_0814320E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08143104 + + thumb_func_start sub_0814321C +sub_0814321C: @ 0x0814321C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0814324C + ldr r2, _08143244 + ldr r0, _08143248 + ldr r0, [r0] + adds r0, #0x6c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _0814329C + .align 2, 0 +_08143244: .4byte gUnknown_20205AC +_08143248: .4byte gUnknown_203A854 +_0814324C: + ldr r4, _081432A4 + ldr r3, _081432A8 + ldr r0, [r3] + adds r0, #0x6c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r3, [r3] + adds r3, #0x6c + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, _081432AC + lsls r2, r5, #2 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r0, [r2, #3] + adds r0, #2 + lsls r0, r0, #3 + strh r0, [r1, #0x20] + ldrb r0, [r3] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r2, #4] + adds r0, #2 + lsls r0, r0, #3 + strh r0, [r1, #0x22] +_0814329C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081432A4: .4byte gUnknown_20205AC +_081432A8: .4byte gUnknown_203A854 +_081432AC: .4byte gUnknown_8595D00 + thumb_func_end sub_0814321C + + thumb_func_start sub_081432B0 +sub_081432B0: @ 0x081432B0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r4, _08143338 + ldr r0, [r4] + ldr r5, _0814333C + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp, #4] + add r0, sp, #4 + ldrh r2, [r4, #6] + lsls r2, r2, #0x10 + ldrh r1, [r4, #4] + orrs r1, r2 + str r1, [r0, #4] + bl sub_08008210 + movs r1, #0xf + mov r0, sp + strh r1, [r0] + movs r0, #0 + ldr r7, _08143340 +_081432DC: + movs r4, #0 + adds r6, r0, #1 + lsls r5, r0, #2 +_081432E2: + adds r1, r5, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08143344 + adds r0, r0, r1 + movs r1, #0x28 + mov r2, sp + bl sub_08142D2C + ldr r1, _08143348 + ldr r1, [r1] + adds r2, r4, #7 + adds r2, r5, r2 + adds r1, #0x3c + adds r1, r1, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + adds r1, #0x2c + ldrb r0, [r1] + movs r2, #0x40 + orrs r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081432E2 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _081432DC + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08143338: .4byte gUnknown_8596FD0 +_0814333C: .4byte gUnknown_201C000 +_08143340: .4byte gUnknown_20205AC +_08143344: .4byte gUnknown_85971C4 +_08143348: .4byte gUnknown_203A854 + thumb_func_end sub_081432B0 + + thumb_func_start sub_0814334C +sub_0814334C: @ 0x0814334C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _081433D0 + ldr r1, [r0] + ldrh r0, [r6, #0x2e] + ldrh r1, [r1, #0x24] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r1, r0, #0x10 + ldr r0, _081433D4 + cmp r1, r0 + ble _0814336E + ldr r2, _081433D8 + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0814336E: + adds r0, r4, #0 + bl sub_0806EFF4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r4, #0 + bl sub_0806F038 + lsls r2, r5, #0x10 + asrs r2, r2, #0x10 + movs r3, #0x30 + ldrsh r1, [r6, r3] + muls r1, r2, r1 + asrs r1, r1, #0xc + strh r1, [r6, #0x24] + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + rsbs r1, r4, #0 + movs r3, #0x30 + ldrsh r0, [r6, r3] + muls r0, r1, r0 + asrs r0, r0, #0xc + strh r0, [r6, #0x26] + ldrb r0, [r6, #3] + lsls r0, r0, #0x1a + lsrs r3, r0, #0x1b + cmp r2, #0 + bge _081433A8 + adds r2, #0xf +_081433A8: + lsls r0, r2, #0xc + lsrs r5, r0, #0x10 + ldr r1, _081433DC + lsls r0, r3, #3 + adds r1, r0, r1 + adds r0, r4, #0 + cmp r0, #0 + bge _081433BA + adds r0, #0xf +_081433BA: + asrs r0, r0, #4 + strh r0, [r1, #6] + strh r0, [r1] + strh r5, [r1, #2] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r1, #4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081433D0: .4byte gUnknown_203A854 +_081433D4: .4byte 0x00000167 +_081433D8: .4byte 0xFFFFFE98 +_081433DC: .4byte gUnknown_2021B3C + thumb_func_end sub_0814334C + + thumb_func_start sub_081433E0 +sub_081433E0: @ 0x081433E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r5, #0 + ldr r7, _081435B4 + mov r6, sp +_081433EE: + ldr r0, _081435B8 + lsls r4, r5, #3 + adds r4, r4, r0 + ldr r0, [r4] + adds r1, r7, #0 + bl LZ77UnCompWram + str r7, [sp] + ldrh r2, [r4, #4] + ldr r0, _081435BC + ldr r1, [r6, #4] + ands r1, r0 + orrs r1, r2 + str r1, [r6, #4] + ldrh r2, [r4, #6] + lsls r2, r2, #0x10 + ldr r0, _081435C0 + ands r0, r1 + orrs r0, r2 + str r0, [r6, #4] + mov r0, sp + bl sub_08008210 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _081433EE + ldr r0, _081435C4 + movs r1, #0xd0 + movs r2, #0x10 + movs r3, #4 + bl sub_08006B0C + ldr r3, _081435C8 + ldr r1, [r3] + adds r1, #0x50 + strb r0, [r1] + ldr r4, _081435CC + ldr r0, [r3] + adds r0, #0x50 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + movs r5, #0 + adds r7, r3, #0 +_08143458: + lsls r1, r5, #0x13 + movs r0, #0xc4 + lsls r0, r0, #0x10 + adds r1, r1, r0 + asrs r1, r1, #0x10 + ldr r0, _081435D0 + movs r2, #0x18 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + adds r3, r5, #0 + adds r3, #0x15 + adds r1, #0x3c + adds r1, r1, r3 + strb r0, [r1] + ldr r0, [r7] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r1, [r0] + movs r6, #0x40 + orrs r1, r6 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08143458 + ldr r0, _081435D4 + movs r1, #0x78 + movs r2, #0x44 + movs r3, #4 + bl sub_08006B0C + ldr r2, _081435C8 + ldr r1, [r2] + adds r1, #0x55 + strb r0, [r1] + ldr r3, _081435CC + ldr r0, [r2] + adds r0, #0x55 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x2c + ldrb r1, [r0] + orrs r1, r6 + strb r1, [r0] + movs r5, #0 + adds r4, r2, #0 + adds r7, r3, #0 +_081434E8: + lsls r1, r5, #0x14 + movs r2, #0xc0 + lsls r2, r2, #0x10 + adds r1, r1, r2 + asrs r1, r1, #0x10 + ldr r0, _081435D8 + movs r2, #0x24 + movs r3, #4 + bl sub_08006B0C + ldr r1, [r4] + adds r2, r5, #0 + adds r2, #0x1a + adds r1, #0x3c + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x3c + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #4 + mov r8, r3 + mov r3, r8 + orrs r1, r3 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x3c + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x2c + ldrb r1, [r0] + movs r6, #0x40 + orrs r1, r6 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _081434E8 + ldr r0, _081435DC + movs r1, #0x98 + movs r2, #0x60 + movs r3, #9 + bl sub_08006B0C + ldr r3, _081435C8 + ldr r1, [r3] + adds r1, #0x6c + strb r0, [r1] + ldr r4, _081435CC + ldr r0, [r3] + adds r0, #0x6c + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [r3] + adds r0, #0x6c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r1, [r0] + orrs r1, r6 + strb r1, [r0] + ldr r0, [r3] + adds r0, #0x6c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081435B4: .4byte gUnknown_201C000 +_081435B8: .4byte gUnknown_8597304 +_081435BC: .4byte 0xFFFF0000 +_081435C0: .4byte 0x0000FFFF +_081435C4: .4byte gUnknown_8597398 +_081435C8: .4byte gUnknown_203A854 +_081435CC: .4byte gUnknown_20205AC +_081435D0: .4byte gUnknown_85973B0 +_081435D4: .4byte gUnknown_85973C8 +_081435D8: .4byte gUnknown_85973E0 +_081435DC: .4byte gUnknown_85973F8 + thumb_func_end sub_081433E0 + + thumb_func_start sub_081435E0 +sub_081435E0: @ 0x081435E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r0, #0xfa + lsls r0, r0, #2 + mov r8, r0 + movs r4, #0 + movs r6, #0 + ldr r1, _081436CC + mov sb, r1 + ldr r0, _081436D0 + mov sl, r0 +_08143600: + adds r0, r7, #0 + mov r1, r8 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081436D0 + ldr r0, [r1] + adds r3, r6, #0 + adds r3, #0x15 + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081436CC + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + cmp r5, #0 + bne _0814363A + cmp r4, #0 + bne _0814363A + cmp r6, #3 + bne _08143698 +_0814363A: + mov r4, sl + ldr r0, [r4] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r1, [r0] + movs r4, #5 + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r1, r2 + strb r1, [r0] + mov r1, sl + ldr r0, [r1] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r4, sb + adds r3, r0, r4 + adds r4, r3, #0 + adds r4, #0x40 + ldr r1, _081436D4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r5, #2 + adds r0, r0, r1 + ldrh r2, [r0] + ldrh r4, [r4] + adds r2, r2, r4 + ldr r4, _081436D8 + adds r0, r4, #0 + ands r2, r0 + ldrh r0, [r3, #4] + ldr r4, _081436DC + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strh r0, [r3, #4] + movs r4, #1 +_08143698: + adds r0, r7, #0 + mov r1, r8 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + mov r0, r8 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _08143600 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081436CC: .4byte gUnknown_20205AC +_081436D0: .4byte gUnknown_203A854 +_081436D4: .4byte gUnknown_20205B4 +_081436D8: .4byte 0x000003FF +_081436DC: .4byte 0xFFFFFC00 + thumb_func_end sub_081435E0 + + thumb_func_start sub_081436E0 +sub_081436E0: @ 0x081436E0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08143718 + mov r0, sp + movs r2, #5 + bl memcpy + cmp r4, #0x13 + bls _081436F8 + movs r4, #0 +_081436F8: + ldr r3, _0814371C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r2, r0, #2 + adds r0, r2, r3 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #4 + beq _0814374C + cmp r0, #4 + bgt _08143720 + cmp r0, #3 + beq _08143726 + b _08143790 + .align 2, 0 +_08143718: .4byte gUnknown_85976B8 +_0814371C: .4byte gUnknown_8595D00 +_08143720: + cmp r0, #0xc + beq _08143770 + b _08143790 +_08143726: + adds r0, r4, #0 + movs r1, #5 + bl __udivsi3 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08143748 + ldr r0, [r0] + adds r0, #0x16 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #3 + bhi _08143790 + ldrb r0, [r1] + adds r0, #1 + b _08143764 + .align 2, 0 +_08143748: .4byte gUnknown_203A854 +_0814374C: + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0814376C + ldr r0, [r0] + adds r0, #0x12 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #2 + bhi _08143790 + ldrb r0, [r1] + adds r0, #2 +_08143764: + add r0, sp + ldrb r0, [r0] + b _08143792 + .align 2, 0 +_0814376C: .4byte gUnknown_203A854 +_08143770: + ldr r0, _0814378C + ldr r1, [r0] + adds r0, r3, #0 + adds r0, #8 + adds r0, r2, r0 + ldr r1, [r1, #8] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08143790 + mov r0, sp + ldrb r0, [r0, #4] + b _08143792 + .align 2, 0 +_0814378C: .4byte gUnknown_203A854 +_08143790: + movs r0, #0 +_08143792: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081436E0 + + thumb_func_start sub_0814379C +sub_0814379C: @ 0x0814379C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081437E8 + ldr r1, [r1] + adds r1, #0x55 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _081437EC + adds r4, r1, r2 + bl sub_081436E0 + adds r3, r4, #0 + adds r3, #0x2b + strb r0, [r3] + adds r2, r4, #0 + adds r2, #0x40 + ldr r1, [r4, #8] + ldrb r0, [r3] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _081437F0 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r4, #4] + ldr r0, _081437F4 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081437E8: .4byte gUnknown_203A854 +_081437EC: .4byte gUnknown_20205AC +_081437F0: .4byte 0x000003FF +_081437F4: .4byte 0xFFFFFC00 + thumb_func_end sub_0814379C + + thumb_func_start sub_081437F8 +sub_081437F8: @ 0x081437F8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r6, #0 + ldr r1, _08143824 + ldr r0, [r1] + ldrb r0, [r0, #0x19] + adds r5, r1, #0 + cmp r0, #1 + bne _08143812 + movs r6, #2 +_08143812: + cmp r2, #6 + bls _08143818 + b _08143974 +_08143818: + lsls r0, r2, #2 + ldr r1, _08143828 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08143824: .4byte gUnknown_203A854 +_08143828: .4byte _0814382C +_0814382C: @ jump table + .4byte _08143974 @ case 0 + .4byte _08143930 @ case 1 + .4byte _08143908 @ case 2 + .4byte _081438FC @ case 3 + .4byte _081438D4 @ case 4 + .4byte _081438C8 @ case 5 + .4byte _08143848 @ case 6 +_08143848: + movs r4, #0 + ldr r5, _081438B8 + ldr r6, _081438BC + movs r0, #5 + rsbs r0, r0, #0 + mov ip, r0 + adds r7, r5, #0 + adds r7, #8 + ldr r2, _081438C0 + mov r8, r2 +_0814385C: + ldr r0, [r6] + adds r3, r4, #0 + adds r3, #0x1a + adds r0, #0x3c + adds r0, r0, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r2, [r1] + mov r0, ip + ands r0, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r5 + adds r2, r3, #0 + adds r2, #0x40 + adds r0, r0, r7 + ldr r0, [r0] + ldr r0, [r0] + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _081438C4 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0814385C + b _081439C0 + .align 2, 0 +_081438B8: .4byte gUnknown_20205AC +_081438BC: .4byte gUnknown_203A854 +_081438C0: .4byte 0xFFFFFC00 +_081438C4: .4byte 0x000003FF +_081438C8: + ldr r2, _081438D0 + ldr r0, [r5] + adds r0, #0x58 + b _08143936 + .align 2, 0 +_081438D0: .4byte gUnknown_20205AC +_081438D4: + ldr r2, _081438F8 + ldr r0, [r5] + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r2 + adds r4, r3, #0 + adds r4, #0x40 + adds r2, #8 + adds r0, r0, r2 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrh r1, [r0, #8] + b _08143952 + .align 2, 0 +_081438F8: .4byte gUnknown_20205AC +_081438FC: + ldr r2, _08143904 + ldr r0, [r5] + adds r0, #0x57 + b _08143936 + .align 2, 0 +_08143904: .4byte gUnknown_20205AC +_08143908: + ldr r2, _0814392C + ldr r0, [r5] + adds r0, #0x57 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r2 + adds r4, r3, #0 + adds r4, #0x40 + adds r2, #8 + adds r0, r0, r2 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrh r1, [r0, #8] + b _08143952 + .align 2, 0 +_0814392C: .4byte gUnknown_20205AC +_08143930: + ldr r2, _08143968 + ldr r0, [r5] + adds r0, #0x56 +_08143936: + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r2 + adds r4, r3, #0 + adds r4, #0x40 + adds r2, #8 + adds r0, r0, r2 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, #2 + adds r0, r0, r1 + ldrh r1, [r0, #4] +_08143952: + ldrh r4, [r4] + adds r1, r1, r4 + ldr r2, _0814396C + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + ldr r0, _08143970 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + b _081439C0 + .align 2, 0 +_08143968: .4byte gUnknown_20205AC +_0814396C: .4byte 0x000003FF +_08143970: .4byte 0xFFFFFC00 +_08143974: + movs r4, #0 + lsls r7, r6, #2 + ldr r6, _081439CC + movs r0, #8 + adds r0, r0, r6 + mov ip, r0 + ldr r2, _081439D0 + mov r8, r2 +_08143984: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, #0x56 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r0, r6 + adds r2, r3, #0 + adds r2, #0x40 + add r0, ip + ldr r0, [r0] + ldr r0, [r0] + adds r0, r7, r0 + ldrh r1, [r0, #8] + ldrh r2, [r2] + adds r1, r1, r2 + ldr r2, _081439D4 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _08143984 +_081439C0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081439CC: .4byte gUnknown_20205AC +_081439D0: .4byte 0xFFFFFC00 +_081439D4: .4byte 0x000003FF + thumb_func_end sub_081437F8 + + thumb_func_start sub_081439D8 +sub_081439D8: @ 0x081439D8 + ldr r1, _081439E4 + ldr r1, [r1] + ldrh r1, [r1, #0x26] + strh r1, [r0, #0x24] + bx lr + .align 2, 0 +_081439E4: .4byte gUnknown_203A854 + thumb_func_end sub_081439D8 + + thumb_func_start sub_081439E8 +sub_081439E8: @ 0x081439E8 + push {r4, r5, lr} + sub sp, #8 + ldr r4, _08143A54 + ldr r0, [r4] + ldr r5, _08143A58 + adds r1, r5, #0 + bl LZ77UnCompWram + str r5, [sp] + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + ldrh r0, [r4, #4] + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + ldr r0, _08143A5C + movs r1, #0x74 + movs r2, #0x50 + movs r3, #0x51 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08143A60 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, _08143A64 + ldr r0, [r0] + ldrh r0, [r0, #0x24] + movs r2, #0 + strh r0, [r1, #0x2e] + strh r2, [r1, #0x30] + adds r3, r1, #0 + adds r3, #0x2c + ldrb r0, [r3] + movs r2, #0x40 + orrs r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r3] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08143A54: .4byte gUnknown_85974FC +_08143A58: .4byte gUnknown_201C000 +_08143A5C: .4byte gUnknown_8597504 +_08143A60: .4byte gUnknown_20205AC +_08143A64: .4byte gUnknown_203A854 + thumb_func_end sub_081439E8 + + thumb_func_start sub_08143A68 +sub_08143A68: @ 0x08143A68 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + ldr r1, _08143A8C + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08143A90 + ldr r2, [r1] + ldrh r1, [r2, #0x2c] + strh r1, [r0, #6] + ldrh r1, [r2, #0x2c] + strh r1, [r0] + ldrh r1, [r2, #0x2e] + strh r1, [r0, #2] + ldrh r1, [r2, #0x30] + strh r1, [r0, #4] + bx lr + .align 2, 0 +_08143A8C: .4byte gUnknown_2021B3C +_08143A90: .4byte gUnknown_203A854 + thumb_func_end sub_08143A68 + + thumb_func_start sub_08143A94 +sub_08143A94: @ 0x08143A94 + push {r4, r5, r6, lr} + movs r4, #0 + ldr r5, _08143B00 + ldr r6, _08143B04 +_08143A9C: + movs r3, #0x39 + subs r3, r3, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _08143B08 + movs r1, #0x74 + movs r2, #0x50 + bl sub_08006B0C + ldr r1, [r5] + adds r1, #0x3c + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x3c + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0x40 + beq _08143AF0 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x3c + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] +_08143AF0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _08143A9C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08143B00: .4byte gUnknown_203A854 +_08143B04: .4byte gUnknown_20205AC +_08143B08: .4byte gUnknown_85974DC + thumb_func_end sub_08143A94 + + thumb_func_start sub_08143B0C +sub_08143B0C: @ 0x08143B0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08143B88 + ldr r0, [r0] + adds r0, #0x3c + ldrb r5, [r0] + movs r6, #0 + ldr r7, _08143B8C + movs r0, #0x1c + adds r0, r0, r7 + mov sl, r0 + movs r1, #0x2e + adds r1, r1, r7 + mov sb, r1 + mov r8, r6 +_08143B30: + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r0, r4, r7 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + mov r1, sl + adds r2, r4, r1 + ldr r1, _08143B90 + str r1, [r2] + movs r1, #0 + bl sub_08007EC0 + movs r1, #0 + adds r2, r5, #1 + adds r3, r6, #1 +_08143B58: + lsls r0, r1, #1 + adds r0, r0, r4 + add r0, sb + mov r5, r8 + strh r5, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _08143B58 + lsls r0, r2, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r3, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #5 + bls _08143B30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08143B88: .4byte gUnknown_203A854 +_08143B8C: .4byte gUnknown_20205AC +_08143B90: .4byte sub_08007140 + thumb_func_end sub_08143B0C + + thumb_func_start sub_08143B94 +sub_08143B94: @ 0x08143B94 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r0, _08143BC4 + ldr r0, [r0] + ldrh r4, [r0, #0x24] + movs r2, #0x24 + ldrsh r1, [r0, r2] + ldrh r2, [r3, #0x34] + movs r5, #0x34 + ldrsh r0, [r3, r5] + cmp r1, r0 + ble _08143BD0 + movs r1, #0xb4 + lsls r1, r1, #1 + adds r0, r2, r1 + subs r2, r0, r4 + strh r2, [r3, #0x3a] + lsls r1, r2, #0x10 + ldr r0, _08143BC8 + cmp r1, r0 + ble _08143BD4 + ldr r5, _08143BCC + adds r0, r2, r5 + b _08143BD2 + .align 2, 0 +_08143BC4: .4byte gUnknown_203A854 +_08143BC8: .4byte 0x01670000 +_08143BCC: .4byte 0xFFFFFE98 +_08143BD0: + subs r0, r2, r4 +_08143BD2: + strh r0, [r3, #0x3a] +_08143BD4: + movs r1, #0x3a + ldrsh r0, [r3, r1] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08143B94 + + thumb_func_start sub_08143BE0 +sub_08143BE0: @ 0x08143BE0 + push {r4, r5, lr} + bl sub_08143B94 + ldr r5, _08143C0C + ldr r4, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl __floatsisf + ldr r1, _08143C10 + bl __divsf3 + bl __fixunssfsi + adds r4, #0x7e + strb r0, [r4] + ldr r0, [r5] + adds r0, #0x7e + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08143C0C: .4byte gUnknown_203A854 +_08143C10: .4byte 0x41F00000 + thumb_func_end sub_08143BE0 + + thumb_func_start sub_08143C14 +sub_08143C14: @ 0x08143C14 + push {r4, lr} + adds r4, r0, #0 + bl sub_08143B94 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x1e + bl __modsi3 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0xe + bne _08143C34 + movs r0, #0 + strh r0, [r4, #0x32] + b _08143C4A +_08143C34: + cmp r1, #0xd + bgt _08143C3C + movs r0, #0xe + b _08143C3E +_08143C3C: + movs r0, #0x2b +_08143C3E: + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 +_08143C4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08143C14 + + thumb_func_start sub_08143C50 +sub_08143C50: @ 0x08143C50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldr r5, _08143C98 + ldr r6, [r5] + adds r4, r6, #0 + adds r4, #0x8c + adds r1, r6, #0 + adds r1, #0x90 + ldr r0, [r4] + ldr r1, [r1] + bl __addsf3 + adds r1, r0, #0 + str r1, [r4] + subs r4, #4 + ldr r0, [r4] + bl __addsf3 + adds r6, r0, #0 + str r6, [r4] + ldr r0, _08143C9C + mov r8, r0 + adds r0, r6, #0 + mov r1, r8 + bl __gesf2 + cmp r0, #0 + blt _08143CA0 + adds r0, r6, #0 + mov r1, r8 + bl __subsf3 + b _08143CB4 + .align 2, 0 +_08143C98: .4byte gUnknown_203A854 +_08143C9C: .4byte 0x43B40000 +_08143CA0: + ldr r1, _08143D4C + adds r0, r6, #0 + bl __ltsf2 + cmp r0, #0 + bge _08143CB6 + adds r0, r6, #0 + mov r1, r8 + bl __addsf3 +_08143CB4: + str r0, [r4] +_08143CB6: + ldr r5, [r5] + adds r0, r5, #0 + adds r0, #0x88 + ldr r0, [r0] + bl __fixsfsi + strh r0, [r7, #0x34] + adds r4, r5, #0 + adds r4, #0x98 + adds r1, r5, #0 + adds r1, #0x9c + ldr r0, [r4] + ldr r1, [r1] + bl __addsf3 + adds r1, r0, #0 + str r1, [r4] + subs r4, #4 + ldr r0, [r4] + bl __addsf3 + str r0, [r4] + bl __fixsfsi + strh r0, [r7, #0x36] + ldrh r0, [r7, #0x34] + bl sub_0806EFF4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r0, [r7, #0x34] + bl sub_0806F038 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r2, #0x36 + ldrsh r1, [r7, r2] + muls r1, r4, r1 + asrs r1, r1, #0xc + strh r1, [r7, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + movs r2, #0x36 + ldrsh r1, [r7, r2] + muls r0, r1, r0 + asrs r0, r0, #0xc + strh r0, [r7, #0x26] + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08143D40 + ldr r0, _08143D50 + ldr r4, _08143D54 + ldrh r2, [r7, #0x24] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r4, #0 + bl m4aMPlayPanpotControl + ldr r0, _08143D58 + ldrh r2, [r7, #0x24] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r4, #0 + bl m4aMPlayPanpotControl +_08143D40: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08143D4C: .4byte 0x00000000 +_08143D50: .4byte gUnknown_3007510 +_08143D54: .4byte 0x0000FFFF +_08143D58: .4byte gUnknown_3007550 + thumb_func_end sub_08143C50 + + thumb_func_start sub_08143D5C +sub_08143D5C: @ 0x08143D5C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08143DB8 + ldr r1, [r0] + ldrh r0, [r5, #0x3a] + ldrh r1, [r1, #0x24] + adds r2, r0, r1 + strh r2, [r5, #0x34] + lsls r1, r2, #0x10 + ldr r0, _08143DBC + cmp r1, r0 + ble _08143D7A + ldr r1, _08143DC0 + adds r0, r2, r1 + strh r0, [r5, #0x34] +_08143D7A: + ldrh r0, [r5, #0x34] + bl sub_0806EFF4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r0, [r5, #0x34] + bl sub_0806F038 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r2, #0x36 + ldrsh r1, [r5, r2] + muls r1, r4, r1 + asrs r1, r1, #0xc + strh r1, [r5, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + movs r2, #0x36 + ldrsh r1, [r5, r2] + muls r0, r1, r0 + ldr r1, _08143DC4 + asrs r0, r0, #0xc + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r5, #0x26] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08143DB8: .4byte gUnknown_203A854 +_08143DBC: .4byte 0x01670000 +_08143DC0: .4byte 0xFFFFFE98 +_08143DC4: .4byte gUnknown_2021B3A + thumb_func_end sub_08143D5C + + thumb_func_start sub_08143DC8 +sub_08143DC8: @ 0x08143DC8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_08143C50 + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x36] + adds r0, #0x84 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xd4 + bls _08143DEE + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + b _08143DFA +_08143DEE: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 +_08143DFA: + strb r0, [r2] + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0x1d + ble _08143EC4 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08143E38 + ldr r7, _08143E30 + ldr r6, [r7] + adds r4, r6, #0 + adds r4, #0x94 + adds r0, r6, #0 + adds r0, #0xa0 + ldr r0, [r0] + ldr r1, _08143E34 + bl __subsf3 + adds r1, r0, #0 + ldr r0, [r4] + bl __lesf2 + cmp r0, #0 + bgt _08143EC4 + b _08143E58 + .align 2, 0 +_08143E30: .4byte gUnknown_203A854 +_08143E34: .4byte 0x40000000 +_08143E38: + ldr r7, _08143ECC + ldr r6, [r7] + adds r4, r6, #0 + adds r4, #0x94 + adds r0, r6, #0 + adds r0, #0xa0 + ldr r0, [r0] + ldr r1, _08143ED0 + bl __subsf3 + adds r1, r0, #0 + ldr r0, [r4] + bl __gesf2 + cmp r0, #0 + blt _08143EC4 +_08143E58: + adds r1, r6, #0 + adds r1, #0x7d + movs r0, #0xff + strb r0, [r1] + ldr r2, [r7] + ldrb r1, [r2, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #3] + adds r0, r5, #0 + adds r0, #0x2b + ldrb r1, [r0] + adds r1, #3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_08143BE0 + movs r0, #0x1e + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_08143B94 + movs r1, #0x3a + ldrsh r0, [r5, r1] + movs r1, #0x1e + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0xf + strh r1, [r5, #0x3a] + ldr r0, _08143ED4 + str r0, [r5, #0x1c] + movs r0, #0x47 + bl m4aSongNumStartOrChange + ldr r3, [r7] + adds r2, r3, #0 + adds r2, #0x9c + adds r1, r3, #0 + adds r1, #0x98 + ldr r0, _08143ED8 + str r0, [r1] + str r0, [r2] + subs r1, #0xc + ldr r0, _08143EDC + str r0, [r1] +_08143EC4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08143ECC: .4byte gUnknown_203A854 +_08143ED0: .4byte 0x40000000 +_08143ED4: .4byte sub_08143D5C +_08143ED8: .4byte 0x00000000 +_08143EDC: .4byte 0xBF800000 + thumb_func_end sub_08143DC8 + + thumb_func_start sub_08143EE0 +sub_08143EE0: @ 0x08143EE0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + bl sub_08143C50 + movs r1, #0x34 + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _08143EFE + cmp r0, #0xb4 + beq _08143F68 + b _0814404C +_08143EFE: + movs r1, #0x2e + ldrsh r0, [r7, r1] + cmp r0, #1 + bne _08143F08 + b _0814404C +_08143F08: + movs r1, #0x3c + ldrsh r0, [r7, r1] + bl __floatsisf + mov sb, r0 + ldr r0, _08143F60 + mov sl, r0 + ldr r1, _08143F64 + mov r8, r1 + ldr r0, [r1] + ldrb r4, [r0, #4] + lsls r4, r4, #0x1e + lsrs r0, r4, #0x19 + add r0, sl + ldrb r0, [r0, #1] + bl __floatsisf + adds r1, r0, #0 + mov r0, sb + bl __mulsf3 + adds r6, r0, #0 + lsrs r0, r4, #0x19 + add r0, sl + ldrb r0, [r0, #2] + subs r0, #1 + bl __floatsisf + adds r1, r0, #0 + adds r0, r6, #0 + bl __addsf3 + adds r5, r0, #0 + lsrs r4, r4, #0x19 + add r4, sl + ldrh r0, [r4, #0xc] + bl __floatsisf + adds r1, r0, #0 + mov r0, sb + bl __divsf3 + b _08143FC8 + .align 2, 0 +_08143F60: .4byte gUnknown_8595EF4 +_08143F64: .4byte gUnknown_203A854 +_08143F68: + movs r1, #0x2e + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _0814404C + movs r1, #0x3c + ldrsh r0, [r7, r1] + bl __floatsisf + mov sb, r0 + ldr r0, _0814405C + mov sl, r0 + ldr r1, _08144060 + mov r8, r1 + ldr r0, [r1] + ldrb r4, [r0, #4] + lsls r4, r4, #0x1e + lsrs r0, r4, #0x19 + add r0, sl + ldrb r0, [r0, #1] + bl __floatsisf + adds r1, r0, #0 + mov r0, sb + bl __mulsf3 + adds r6, r0, #0 + lsrs r0, r4, #0x19 + add r0, sl + ldrb r0, [r0, #2] + subs r0, #1 + bl __floatsisf + adds r1, r0, #0 + adds r0, r6, #0 + bl __addsf3 + adds r5, r0, #0 + lsrs r4, r4, #0x19 + add r4, sl + ldrh r0, [r4, #0xc] + bl __floatsisf + adds r1, r0, #0 + mov r0, sb + bl __divsf3 + bl __negsf2 +_08143FC8: + adds r2, r0, #0 + mov r0, r8 + ldr r6, [r0] + adds r1, r6, #0 + adds r1, #0xa0 + adds r0, r6, #0 + adds r0, #0x94 + ldr r0, [r0] + str r0, [r1] + adds r0, r6, #0 + adds r0, #0x98 + str r2, [r0] + movs r0, #0x9c + adds r0, r0, r6 + mov r8, r0 + adds r0, r2, #0 + adds r1, r2, #0 + bl __addsf3 + adds r1, r5, #0 + bl __divsf3 + adds r4, r0, #0 + adds r0, r5, #0 + adds r1, r5, #0 + bl __mulsf3 + adds r1, r0, #0 + ldr r0, _08144064 + bl __divsf3 + adds r1, r0, #0 + adds r0, r4, #0 + bl __addsf3 + bl __negsf2 + mov r1, r8 + str r0, [r1] + adds r1, r6, #0 + adds r1, #0x8c + ldr r0, _08144068 + str r0, [r1] + adds r2, r7, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r7, #0 + adds r0, #0x2a + movs r2, #0 + strb r2, [r0] + adds r3, r7, #0 + adds r3, #0x3f + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r3] + ldr r0, _0814406C + str r0, [r7, #0x1c] + strh r2, [r7, #0x32] +_0814404C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814405C: .4byte gUnknown_8595EF4 +_08144060: .4byte gUnknown_203A854 +_08144064: .4byte 0x40000000 +_08144068: .4byte 0x00000000 +_0814406C: .4byte sub_08143DC8 + thumb_func_end sub_08143EE0 + + thumb_func_start sub_08144070 +sub_08144070: @ 0x08144070 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + bl __floatsisf + adds r4, r0, #0 + ldr r1, _08144110 + bl __mulsf3 + adds r1, r4, #0 + bl __mulsf3 + bl __fixsfsi + adds r1, r0, #0 + subs r1, #0x2d + strh r1, [r5, #0x26] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + ble _0814410A + lsls r0, r1, #0x10 + cmp r0, #0 + blt _0814410A + ldr r4, _08144114 + ldr r0, [r4] + adds r0, #0x7d + movs r1, #0xff + strb r1, [r0] + ldr r2, [r4] + ldrb r1, [r2, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #3] + adds r0, r5, #0 + adds r0, #0x2b + ldrb r1, [r0] + adds r1, #3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_08143BE0 + movs r0, #0x1e + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_08143B94 + movs r1, #0x3a + ldrsh r0, [r5, r1] + movs r1, #0x1e + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0xf + strh r1, [r5, #0x3a] + ldr r0, _08144118 + str r0, [r5, #0x1c] + movs r0, #0x47 + bl m4aSongNumStartOrChange + ldr r2, [r4] + ldrb r0, [r2, #3] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #3] +_0814410A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08144110: .4byte 0x3D4CCCCD +_08144114: .4byte gUnknown_203A854 +_08144118: .4byte sub_08143D5C + thumb_func_end sub_08144070 + + thumb_func_start sub_0814411C +sub_0814411C: @ 0x0814411C + push {r4, lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x32] + adds r1, r0, #1 + strh r1, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2c + bgt _08144164 + ldrh r4, [r3, #0x26] + subs r0, r4, #1 + strh r0, [r3, #0x26] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x2d + bne _081441EA + ldr r2, _0814415C + ldr r0, _08144160 + ldr r0, [r0] + adds r0, #0x73 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _081441EA + strh r4, [r3, #0x26] + b _081441EA + .align 2, 0 +_0814415C: .4byte gUnknown_20205AC +_08144160: .4byte gUnknown_203A854 +_08144164: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x3c + ldrsh r1, [r3, r2] + cmp r0, r1 + bge _081441B0 + ldr r2, _081441A0 + ldr r0, _081441A4 + ldr r0, [r0] + adds r0, #0x73 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x2c + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bne _081441EA + adds r0, r1, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _081441A8 + ldrh r0, [r3, #0x26] + adds r0, #1 + strh r0, [r3, #0x26] + b _081441EA + .align 2, 0 +_081441A0: .4byte gUnknown_20205AC +_081441A4: .4byte gUnknown_203A854 +_081441A8: + ldrh r0, [r3, #0x26] + subs r0, #1 + strh r0, [r3, #0x26] + b _081441EA +_081441B0: + adds r2, r3, #0 + adds r2, #0x2c + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x2a + movs r2, #0 + movs r0, #1 + strb r0, [r1] + movs r0, #0x3f + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + strh r2, [r3, #0x32] + ldr r0, _081441F0 + str r0, [r3, #0x1c] + movs r0, #0x3d + bl m4aSongNumStart +_081441EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081441F0: .4byte sub_08144070 + thumb_func_end sub_0814411C + + thumb_func_start sub_081441F4 +sub_081441F4: @ 0x081441F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08143C50 + movs r0, #0x34 + ldrsh r1, [r4, r0] + cmp r1, #0x5a + beq _0814420E + movs r0, #0x87 + lsls r0, r0, #1 + cmp r1, r0 + beq _08144218 + b _08144228 +_0814420E: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08144228 + b _08144220 +_08144218: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08144228 +_08144220: + ldr r0, _08144230 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x32] +_08144228: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144230: .4byte sub_0814411C + thumb_func_end sub_081441F4 + + thumb_func_start sub_08144234 +sub_08144234: @ 0x08144234 + push {r4, lr} + adds r4, r0, #0 + bl sub_08143C50 + ldr r0, _08144258 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + cmp r0, #0 + beq _0814424E + cmp r0, #1 + beq _08144260 +_0814424E: + adds r0, r4, #0 + bl sub_081447A8 + ldr r0, _0814425C + b _08144268 + .align 2, 0 +_08144258: .4byte gUnknown_203A854 +_0814425C: .4byte sub_08143EE0 +_08144260: + adds r0, r4, #0 + bl sub_08144984 + ldr r0, _08144270 +_08144268: + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144270: .4byte sub_081441F4 + thumb_func_end sub_08144234 + + thumb_func_start sub_08144274 +sub_08144274: @ 0x08144274 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08143C50 + ldrh r0, [r5, #0x32] + subs r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bne _0814429A + ldr r0, _08144304 + ldr r4, [r0] + adds r4, #0x98 + ldr r0, [r4] + ldr r1, _08144308 + bl __mulsf3 + str r0, [r4] +_0814429A: + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08144328 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08144310 + ldr r2, _08144304 + ldr r0, [r2] + adds r0, #0x7d + movs r1, #0xff + strb r1, [r0] + ldr r2, [r2] + ldrb r1, [r2, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #3] + adds r0, r5, #0 + adds r0, #0x2b + ldrb r1, [r0] + adds r1, #3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_08143BE0 + movs r0, #0x1e + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_08143B94 + movs r1, #0x3a + ldrsh r0, [r5, r1] + movs r1, #0x1e + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0xf + strh r1, [r5, #0x3a] + ldr r0, _0814430C + str r0, [r5, #0x1c] + movs r0, #0x47 + bl m4aSongNumStartOrChange + b _08144328 + .align 2, 0 +_08144304: .4byte gUnknown_203A854 +_08144308: .4byte 0xBF800000 +_0814430C: .4byte sub_08143D5C +_08144310: + adds r0, r5, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + movs r0, #0x38 + bl m4aSongNumStart + adds r0, r5, #0 + bl sub_08144AF0 +_08144328: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08144274 + + thumb_func_start sub_08144330 +sub_08144330: @ 0x08144330 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_08143C50 + movs r0, #0 + strh r0, [r6, #0x32] + adds r0, r6, #0 + bl sub_08143BE0 + ldr r1, _081443BC + ldr r4, _081443C0 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x7e + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, [r2, #8] + ands r0, r1 + cmp r0, #0 + bne _081443C8 + adds r1, r2, #0 + adds r1, #0x7d + movs r0, #0xff + strb r0, [r1] + ldr r2, [r4] + ldrb r1, [r2, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #3] + adds r0, r6, #0 + adds r0, #0x2b + ldrb r1, [r0] + adds r1, #3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08007EC0 + adds r0, r6, #0 + bl sub_08143BE0 + movs r0, #0x1e + strh r0, [r6, #0x36] + adds r0, r6, #0 + bl sub_08143B94 + movs r1, #0x3a + ldrsh r0, [r6, r1] + movs r1, #0x1e + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0xf + strh r1, [r6, #0x3a] + ldr r0, _081443C4 + str r0, [r6, #0x1c] + movs r0, #0x47 + bl m4aSongNumStartOrChange + b _081444C4 + .align 2, 0 +_081443BC: .4byte gUnknown_8595E90 +_081443C0: .4byte gUnknown_203A854 +_081443C4: .4byte sub_08143D5C +_081443C8: + movs r0, #0x38 + bl m4aSongNumStart + bl sub_0806F050 + movs r1, #1 + mov r8, r1 + ands r1, r0 + mov r8, r1 + cmp r1, #0 + beq _0814440C + ldr r4, [r4] + adds r1, r4, #0 + adds r1, #0x8c + ldr r0, _08144404 + str r0, [r1] + adds r0, r4, #0 + adds r0, #0x7e + ldrb r0, [r0] + adds r0, #1 + movs r1, #0xc + bl __modsi3 + lsls r1, r0, #0x18 + lsrs r2, r1, #0x18 + adds r1, r4, #0 + adds r1, #0x7f + strb r0, [r1] + ldr r5, _08144408 + b _08144444 + .align 2, 0 +_08144404: .4byte 0x00000000 +_08144408: .4byte gUnknown_8595EF4 +_0814440C: + ldr r7, [r4] + adds r4, r7, #0 + adds r4, #0x8c + ldr r5, _0814446C + ldrb r0, [r7, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r1, #0 + bl __addsf3 + str r0, [r4] + adds r0, r7, #0 + adds r0, #0x7e + ldrb r4, [r0] + adds r0, r4, #0 + adds r0, #0xb + movs r1, #0xc + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r7, #0 + adds r0, #0x7f + strb r4, [r0] +_08144444: + ldr r0, _08144470 + lsls r1, r2, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r2, _08144474 + ldr r3, [r2] + ldr r1, [r1] + ldr r0, [r3, #8] + ands r1, r0 + cmp r1, #0 + beq _08144478 + movs r0, #1 + strh r0, [r6, #0x2e] + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r5 + ldrb r0, [r0, #2] + strh r0, [r6, #0x32] + b _081444B4 + .align 2, 0 +_0814446C: .4byte gUnknown_8595EF4 +_08144470: .4byte gUnknown_8595E90 +_08144474: .4byte gUnknown_203A854 +_08144478: + strh r1, [r6, #0x2e] + ldrb r1, [r3, #4] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08144490 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r5 + ldrb r0, [r0, #1] + strh r0, [r6, #0x32] + b _081444B4 +_08144490: + lsls r0, r1, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r5 + ldrb r0, [r0, #2] + strh r0, [r6, #0x32] + mov r0, r8 + cmp r0, #0 + beq _081444AC + adds r1, r3, #0 + adds r1, #0x8c + ldr r0, _081444A8 + b _081444B2 + .align 2, 0 +_081444A8: .4byte 0x3F000000 +_081444AC: + adds r1, r3, #0 + adds r1, #0x8c + ldr r0, _081444D0 +_081444B2: + str r0, [r1] +_081444B4: + ldr r0, [r2] + adds r0, #0x98 + ldr r1, _081444D4 + str r1, [r0] + ldr r0, _081444D8 + str r0, [r6, #0x1c] + movs r0, #5 + strh r0, [r6, #0x30] +_081444C4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081444D0: .4byte 0xBFC00000 +_081444D4: .4byte 0x3DAE147B +_081444D8: .4byte sub_08144274 + thumb_func_end sub_08144330 + + thumb_func_start sub_081444DC +sub_081444DC: @ 0x081444DC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + bl sub_08143C50 + ldr r4, _08144570 + ldr r0, [r4] + adds r0, #0x8c + ldr r0, [r0] + ldr r1, _08144574 + bl __gtsf2 + cmp r0, #0 + bgt _081445C6 + adds r0, r6, #0 + bl sub_08143BE0 + adds r0, r6, #0 + bl sub_08143C14 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08144588 + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x90 + ldr r0, _08144578 + str r0, [r1] + movs r0, #0x8c + adds r0, r0, r2 + mov r8, r0 + ldr r1, _0814457C + mov sb, r1 + ldrb r0, [r2, #4] + lsls r7, r0, #0x1e + lsrs r0, r7, #0x19 + add r0, sb + movs r4, #3 + ldrsb r4, [r0, r4] + adds r0, r4, #0 + bl __floatsisf + adds r5, r0, #0 + cmp r4, #0 + bge _08144542 + ldr r1, _08144580 + bl __addsf3 + adds r5, r0, #0 +_08144542: + lsrs r0, r7, #0x19 + add r0, sb + ldrb r0, [r0, #4] + adds r0, #1 + bl __floatsisf + adds r1, r0, #0 + adds r0, r5, #0 + bl __divsf3 + adds r1, r0, #0 + mov r2, r8 + ldr r0, [r2] + bl __subsf3 + mov r1, r8 + str r0, [r1] + movs r0, #4 + strh r0, [r6, #0x30] + ldr r0, _08144584 + str r0, [r6, #0x1c] + b _081445C6 + .align 2, 0 +_08144570: .4byte gUnknown_203A854 +_08144574: .4byte 0x3F000000 +_08144578: .4byte 0x00000000 +_0814457C: .4byte gUnknown_8595EF4 +_08144580: .4byte 0x43800000 +_08144584: .4byte sub_08144330 +_08144588: + ldr r4, [r4] + adds r7, r4, #0 + adds r7, #0x90 + ldr r0, [r7] + ldr r6, _081445D4 + adds r1, r6, #0 + bl __nesf2 + cmp r0, #0 + beq _081445C6 + adds r5, r4, #0 + adds r5, #0x8c + ldr r0, [r5] + adds r1, r6, #0 + bl __ltsf2 + cmp r0, #0 + bge _081445C6 + str r6, [r7] + str r6, [r5] + adds r4, #0x98 + ldr r0, [r4] + bl __extendsfdf2 + ldr r2, _081445D8 + ldr r3, _081445DC + bl __divdf3 + bl __truncdfsf2 + str r0, [r4] +_081445C6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081445D4: .4byte 0x00000000 +_081445D8: .4byte 0x3FF33333 +_081445DC: .4byte 0x33333333 + thumb_func_end sub_081444DC + + thumb_func_start sub_081445E0 +sub_081445E0: @ 0x081445E0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_08143C50 + ldr r0, _08144690 + ldr r5, [r0] + adds r0, r5, #0 + adds r0, #0x94 + ldr r0, [r0] + ldr r1, _08144694 + bl __gtsf2 + cmp r0, #0 + bgt _08144684 + movs r0, #0x98 + adds r0, r0, r5 + mov r8, r0 + adds r7, r5, #0 + adds r7, #0x86 + movs r1, #0 + ldrsh r4, [r7, r1] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _08144622 + ldr r1, _08144698 + bl __addsf3 + adds r2, r0, #0 +_08144622: + ldr r0, _0814469C + adds r1, r2, #0 + bl __divsf3 + bl __negsf2 + mov r1, r8 + str r0, [r1] + movs r0, #0x90 + adds r0, r0, r5 + mov r8, r0 + adds r5, #0x8c + movs r1, #0 + ldrsh r4, [r7, r1] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _08144652 + ldr r1, _08144698 + bl __addsf3 + adds r2, r0, #0 +_08144652: + ldr r0, [r5] + adds r1, r2, #0 + bl __divsf3 + bl __negsf2 + mov r1, r8 + str r0, [r1] + adds r1, r6, #0 + adds r1, #0x2a + movs r0, #2 + strb r0, [r1] + adds r2, r6, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #3 + strh r0, [r6, #0x30] + ldr r0, _081446A0 + str r0, [r6, #0x1c] +_08144684: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08144690: .4byte gUnknown_203A854 +_08144694: .4byte 0x42200000 +_08144698: .4byte 0x47800000 +_0814469C: .4byte 0x40800000 +_081446A0: .4byte sub_081444DC + thumb_func_end sub_081445E0 + + thumb_func_start sub_081446A4 +sub_081446A4: @ 0x081446A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_08143C50 + ldr r4, _08144760 + ldr r0, [r4] + adds r0, #0x94 + ldr r0, [r0] + ldr r1, _08144764 + bl __gtsf2 + cmp r0, #0 + bgt _08144756 + movs r0, #0x5d + bl m4aSongNumStartOrChange + ldr r5, [r4] + movs r0, #0x98 + adds r0, r0, r5 + mov r8, r0 + adds r7, r5, #0 + adds r7, #0x84 + movs r1, #0 + ldrsh r4, [r7, r1] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _081446EC + ldr r1, _08144768 + bl __addsf3 + adds r2, r0, #0 +_081446EC: + ldr r0, _0814476C + adds r1, r2, #0 + bl __divsf3 + bl __negsf2 + mov r1, r8 + str r0, [r1] + movs r0, #0x90 + adds r0, r0, r5 + mov r8, r0 + adds r0, r5, #0 + adds r0, #0x8c + ldr r1, [r0] + ldr r0, _08144770 + bl __subsf3 + adds r5, r0, #0 + movs r1, #0 + ldrsh r4, [r7, r1] + adds r0, r4, #0 + bl __floatsisf + adds r2, r0, #0 + cmp r4, #0 + bge _08144728 + ldr r1, _08144768 + bl __addsf3 + adds r2, r0, #0 +_08144728: + adds r0, r5, #0 + adds r1, r2, #0 + bl __divsf3 + mov r1, r8 + str r0, [r1] + adds r1, r6, #0 + adds r1, #0x2a + movs r0, #1 + strb r0, [r1] + adds r2, r6, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #2 + strh r0, [r6, #0x30] + ldr r0, _08144774 + str r0, [r6, #0x1c] +_08144756: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08144760: .4byte gUnknown_203A854 +_08144764: .4byte 0x42700000 +_08144768: .4byte 0x47800000 +_0814476C: .4byte 0x41A00000 +_08144770: .4byte 0x3F800000 +_08144774: .4byte sub_081445E0 + thumb_func_end sub_081446A4 + + thumb_func_start sub_08144778 +sub_08144778: @ 0x08144778 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strh r0, [r4, #0x30] + strh r1, [r4, #0x32] + adds r0, r4, #0 + bl sub_08143C50 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _081447A4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081447A4: .4byte sub_081446A4 + thumb_func_end sub_08144778 + + thumb_func_start sub_081447A8 +sub_081447A8: @ 0x081447A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov r8, r0 + ldr r1, _08144968 + mov r0, sp + movs r2, #8 + bl memcpy + mov r1, r8 + ldrh r0, [r1, #0x3c] + subs r0, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r5, _0814496C + ldr r0, _08144970 + movs r2, #0xc + rsbs r2, r2, #0 + movs r1, #0x24 + movs r3, #0x32 + bl sub_08006B0C + ldr r1, [r5] + adds r1, #0x73 + strb r0, [r1] + ldr r4, _08144974 + mov r3, r8 + movs r0, #0x2e + ldrsh r2, [r3, r0] + lsls r2, r2, #2 + mov r1, sp + adds r0, r1, r2 + movs r3, #0 + ldrsh r1, [r0, r3] + mov r0, sp + adds r0, #2 + adds r0, r0, r2 + movs r3, #0 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x3b + bl sub_08006B0C + ldr r1, [r5] + adds r1, #0x74 + strb r0, [r1] + adds r4, #0x18 + adds r0, r4, #0 + movs r1, #0x24 + movs r2, #0x8c + movs r3, #0x33 + bl sub_08006B0C + ldr r1, [r5] + adds r1, #0x75 + strb r0, [r1] + ldr r3, _08144978 + ldr r0, [r5] + adds r0, #0x75 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #1] + movs r7, #0 + adds r6, r3, #0 + ldr r0, _0814497C + mov ip, r0 + mov sl, r5 +_08144848: + ldr r0, [r5] + adds r3, r7, #0 + adds r3, #0x37 + adds r0, #0x3c + adds r0, r0, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x3c + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + ldr r4, [r5] + adds r2, r4, #0 + adds r2, #0x3c + adds r2, r2, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r1, r4, #0 + adds r1, #0x73 + ldrb r1, [r1] + strh r1, [r0, #0x36] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r1, r4, #0 + adds r1, #0x74 + ldrb r1, [r1] + strh r1, [r0, #0x38] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r1, r4, #0 + adds r1, #0x75 + ldrb r1, [r1] + strh r1, [r0, #0x3a] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sb + strh r1, [r0, #0x32] + ldrb r0, [r2] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r6 + mov r0, r8 + movs r1, #0x3c + ldrsh r3, [r0, r1] + ldrb r1, [r4, #4] + lsls r1, r1, #0x1e + lsrs r0, r1, #0x19 + add r0, ip + ldrb r0, [r0, #1] + muls r3, r0, r3 + lsrs r1, r1, #0x19 + add r1, ip + ldrb r0, [r1, #2] + ldr r1, _08144980 + adds r0, r0, r1 + adds r3, r3, r0 + strh r3, [r2, #0x34] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08144978 + cmp r7, #2 + bls _08144848 + mov r3, sl + ldr r0, [r3] + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + mov r1, r8 + str r1, [r0, #0x38] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08144968: .4byte gUnknown_85976BE +_0814496C: .4byte gUnknown_203A854 +_08144970: .4byte gUnknown_85975AC +_08144974: .4byte gUnknown_8597670 +_08144978: .4byte gUnknown_20205AC +_0814497C: .4byte gUnknown_8595EF4 +_08144980: .4byte 0x0000FFFF + thumb_func_end sub_081447A8 + + thumb_func_start sub_08144984 +sub_08144984: @ 0x08144984 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r7, r0, #0 + movs r0, #0 + mov r8, r0 + ldr r1, _08144AD8 + mov r0, sp + movs r2, #8 + bl memcpy + ldrh r0, [r7, #0x3c] + subs r0, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r0, _08144ADC + movs r1, #0x2e + ldrsh r2, [r7, r1] + lsls r2, r2, #2 + mov r3, sp + adds r1, r3, r2 + movs r3, #0 + ldrsh r1, [r1, r3] + mov r4, sp + adds r4, #2 + adds r2, r4, r2 + movs r3, #0 + ldrsh r2, [r2, r3] + movs r3, #0x32 + bl sub_08006B0C + ldr r5, _08144AE0 + ldr r1, [r5] + adds r1, #0x73 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x73 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _08144AE4 + adds r0, r0, r6 + ldrh r1, [r7, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + ldr r0, _08144AE8 + movs r1, #0x2e + ldrsh r2, [r7, r1] + lsls r2, r2, #2 + mov r3, sp + adds r1, r3, r2 + movs r3, #0 + ldrsh r1, [r1, r3] + adds r4, r4, r2 + movs r3, #0 + ldrsh r2, [r4, r3] + movs r3, #0x33 + bl sub_08006B0C + ldr r1, [r5] + adds r1, #0x74 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + mov r0, sb + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + ldr r3, _08144AEC + ldr r0, [r5] + ldrb r1, [r0, #4] + lsls r1, r1, #0x1e + lsrs r0, r1, #0x19 + adds r0, r0, r3 + ldrb r0, [r0, #1] + muls r2, r0, r2 + lsrs r1, r1, #0x19 + adds r1, r1, r3 + ldrh r0, [r1, #0x10] + adds r0, #0x2d + adds r2, r2, r0 + strh r2, [r7, #0x3c] +_08144A5E: + ldr r0, _08144AE0 + ldr r4, [r0] + mov r1, r8 + adds r2, r4, r1 + adds r2, #0x73 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r1, r4, #0 + adds r1, #0x73 + ldrb r1, [r1] + strh r1, [r0, #0x36] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r3, r4, #0 + adds r3, #0x74 + ldrb r1, [r3] + strh r1, [r0, #0x38] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r3] + strh r1, [r0, #0x3a] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r3, sb + strh r3, [r0, #0x32] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r7, #0x3c] + subs r0, #0x2d + strh r0, [r1, #0x34] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #1 + bls _08144A5E + str r7, [r4, #0x38] + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08144AD8: .4byte gUnknown_85976C6 +_08144ADC: .4byte gUnknown_85975C4 +_08144AE0: .4byte gUnknown_203A854 +_08144AE4: .4byte gUnknown_20205AC +_08144AE8: .4byte gUnknown_85976A0 +_08144AEC: .4byte gUnknown_8595EF4 + thumb_func_end sub_08144984 + + thumb_func_start sub_08144AF0 +sub_08144AF0: @ 0x08144AF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r7, r0, #0 + movs r0, #0 + mov sb, r0 + movs r1, #5 + mov r8, r1 + str r0, [sp, #0xc] + mov r0, sp + movs r1, #0 + movs r2, #0xa + bl memset + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r3, _08144BDC + ldr r0, [r3] + adds r0, #0x7d + movs r5, #1 + strb r5, [r0] + ldr r2, [r3] + ldrb r0, [r2, #3] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2, #3] + ldr r2, [r3] + ldrb r1, [r2, #3] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + ldr r0, [r3] + adds r0, #0x7e + movs r1, #0xff + strb r1, [r0] + ldr r6, [r3] + adds r4, r6, #0 + adds r4, #0x88 + movs r1, #0x34 + ldrsh r0, [r7, r1] + bl __floatsisf + str r0, [r4] + adds r1, r6, #0 + adds r1, #0x98 + ldr r0, _08144BE0 + str r0, [r1] + adds r2, r6, #0 + adds r2, #0x8c + ldr r1, _08144BE4 + ldrb r0, [r6, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r1, #0x1c + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldrb r0, [r6, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0x21 + ldrb r0, [r6, #3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + subs r5, r5, r0 + lsls r0, r5, #4 + subs r0, r0, r5 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r5, sb + movs r0, #0x34 + ldrsh r2, [r7, r0] +_08144B96: + cmp r1, r2 + bge _08144BA2 + adds r0, r1, #0 + adds r0, #0x5a + cmp r2, r0 + ble _08144C04 +_08144BA2: + cmp r5, #3 + beq _08144BE8 + adds r0, r1, #0 + adds r0, #0x5a + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _08144B96 +_08144BB8: + ldr r0, _08144BDC + ldr r0, [r0] + ldrb r1, [r0, #3] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + beq _08144C30 + movs r1, #0x2e + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _08144C24 + movs r0, #0x98 + lsls r0, r0, #1 + movs r1, #0x3f + rsbs r1, r1, #0 + bl sub_080A2B3C + b _08144C3C + .align 2, 0 +_08144BDC: .4byte gUnknown_203A854 +_08144BE0: .4byte 0x00000000 +_08144BE4: .4byte gUnknown_8595EF4 +_08144BE8: + movs r0, #1 + strh r0, [r7, #0x2e] + ldr r0, _08144C00 + ldr r2, [r0] + ldrb r1, [r2, #3] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #3] + b _08144BB8 + .align 2, 0 +_08144C00: .4byte gUnknown_203A854 +_08144C04: + lsrs r0, r5, #1 + strh r0, [r7, #0x2e] + ldr r0, _08144C20 + ldr r3, [r0] + movs r1, #1 + ands r1, r5 + ldrb r2, [r3, #3] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #3] + b _08144BB8 + .align 2, 0 +_08144C20: .4byte gUnknown_203A854 +_08144C24: + movs r0, #0x98 + lsls r0, r0, #1 + movs r1, #0x3f + bl sub_080A2B3C + b _08144C3C +_08144C30: + movs r0, #0x99 + lsls r0, r0, #1 + movs r1, #0x3f + rsbs r1, r1, #0 + bl sub_080A2B3C +_08144C3C: + movs r0, #2 + mov sl, r0 + ldr r4, _08144C70 + ldr r5, [r4] + adds r0, r5, #0 + adds r0, #0x7f + ldrb r0, [r0] + adds r0, #2 + movs r1, #0xc + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r1, [r5, #3] + movs r0, #0x1f + ands r0, r1 + cmp r0, #1 + bne _08144C74 + ldrb r1, [r5, #4] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08144C74 + mov r0, r8 + adds r0, #6 + b _08144C78 + .align 2, 0 +_08144C70: .4byte gUnknown_203A854 +_08144C74: + mov r0, r8 + add r0, sl +_08144C78: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r5, sl + cmp r5, r8 + bhs _08144CE4 + ldr r1, _08144D0C + mov sl, r1 +_08144C88: + ldr r3, [r4] + lsls r0, r6, #3 + ldr r1, _08144D10 + adds r0, r0, r1 + ldr r1, [r3, #8] + ldr r2, [r0] + ands r1, r2 + cmp r1, #0 + bne _08144CCE + mov r0, sb + adds r1, r0, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + add r0, sp + strb r5, [r0] + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _08144CCE + ldrb r1, [r3, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r0, r3, #0 + adds r0, #0x1b + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldr r0, [r0] + ands r2, r0 + cmp r2, #0 + beq _08144CCE + str r5, [sp, #0xc] +_08144CCE: + adds r0, r6, #1 + movs r1, #0xc + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r8 + blo _08144C88 +_08144CE4: + ldr r0, [r4] + ldrb r1, [r0, #3] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + adds r1, #1 + ldrb r0, [r0, #2] + ands r1, r0 + cmp r1, #0 + beq _08144D14 + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _08144D14 + movs r0, #0xff + ldr r1, [sp, #0x10] + ands r0, r1 + cmp r0, #0xbf + bhi _08144D14 + mov r0, sp + ldrh r0, [r0, #0xc] + b _08144D20 + .align 2, 0 +_08144D0C: .4byte gUnknown_8595D0C +_08144D10: .4byte gUnknown_8595E94 +_08144D14: + ldr r0, [sp, #0x10] + mov r1, sb + bl __modsi3 + add r0, sp + ldrb r0, [r0] +_08144D20: + strh r0, [r7, #0x3c] + ldr r1, _08144D38 + str r1, [r7, #0x1c] + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08144D38: .4byte sub_08144234 + thumb_func_end sub_08144AF0 + + thumb_func_start sub_08144D3C +sub_08144D3C: @ 0x08144D3C + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x30] + adds r1, r0, #1 + strh r1, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x34 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08144D8C + ldrh r0, [r2, #0x20] + subs r0, #2 + strh r0, [r2, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08144D8C + ldr r4, _08144D94 + ldr r3, [r4] + ldrb r1, [r3, #3] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08144D78 + movs r0, #0x40 + orrs r0, r1 + strb r0, [r3, #3] +_08144D78: + adds r0, r2, #0 + bl sub_08006E00 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #1] + ldr r1, [r4] + ldr r0, _08144D98 + ldrh r0, [r0] + strh r0, [r1, #0x34] +_08144D8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144D94: .4byte gUnknown_203A854 +_08144D98: .4byte gUnknown_85976CE + thumb_func_end sub_08144D3C + + thumb_func_start sub_08144D9C +sub_08144D9C: @ 0x08144D9C + push {r4, lr} + sub sp, #0x18 + adds r4, r0, #0 + ldr r1, _08144E18 + mov r0, sp + movs r2, #0x18 + bl memcpy + ldrh r0, [r4, #0x30] + adds r2, r0, #1 + strh r2, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x34 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _08144E20 + movs r0, #1 + ands r2, r0 + cmp r2, #0 + beq _08144DFA + ldr r3, _08144E1C + movs r0, #0x3c + ldrsh r2, [r4, r0] + lsls r2, r2, #1 + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #3 + adds r2, r2, r0 + mov r1, sp + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r3] + movs r3, #0x3c + ldrsh r2, [r4, r3] + adds r1, r2, #1 + adds r0, r1, #0 + cmp r1, #0 + bge _08144DF2 + adds r0, r2, #4 +_08144DF2: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + strh r0, [r4, #0x3c] +_08144DFA: + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08144E4A + .align 2, 0 +_08144E18: .4byte gUnknown_85976E2 +_08144E1C: .4byte gUnknown_2021B3A +_08144E20: + ldr r1, _08144E54 + movs r0, #0 + strh r0, [r1] + ldr r2, _08144E58 + ldr r0, _08144E5C + ldr r0, [r0] + adds r0, #0x73 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x2c + ldrb r2, [r0] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08006E00 +_08144E4A: + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08144E54: .4byte gUnknown_2021B3A +_08144E58: .4byte gUnknown_20205AC +_08144E5C: .4byte gUnknown_203A854 + thumb_func_end sub_08144D9C + + thumb_func_start sub_08144E60 +sub_08144E60: @ 0x08144E60 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + movs r1, #0x30 + ldrsh r0, [r5, r1] + bl __floatsisf + adds r4, r0, #0 + ldr r1, _08144F10 + bl __mulsf3 + adds r1, r4, #0 + bl __mulsf3 + bl __fixsfsi + strh r0, [r5, #0x26] + ldr r0, _08144F14 + ldr r3, [r0] + ldr r2, _08144F18 + ldrb r0, [r3, #1] + subs r0, #1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3, #0x34] + ldrb r0, [r3, #1] + cmp r0, #0x12 + bhi _08144EA8 + adds r0, #1 + strb r0, [r3, #1] +_08144EA8: + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0x3c + ble _08144F0A + movs r0, #0 + strh r0, [r5, #0x30] + ldr r3, _08144F1C + str r3, [r5, #0x1c] + ldr r2, _08144F20 + movs r0, #0x3a + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r2, #0 + adds r4, #0x1c + adds r0, r0, r4 + str r3, [r0] + movs r0, #0x3a + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08144F24 + strh r1, [r0, #0x30] + movs r0, #0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #0x38 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08144F28 + str r1, [r0] + movs r0, #0xd6 + bl m4aSongNumStart +_08144F0A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08144F10: .4byte 0x3D1FBE77 +_08144F14: .4byte gUnknown_203A854 +_08144F18: .4byte gUnknown_85976CE +_08144F1C: .4byte sub_08144D3C +_08144F20: .4byte gUnknown_20205AC +_08144F24: .4byte 0x0000FFFE +_08144F28: .4byte sub_08144D9C + thumb_func_end sub_08144E60 + + thumb_func_start sub_08144F2C +sub_08144F2C: @ 0x08144F2C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08144FB0 + ldr r0, _08144F58 + ldr r3, [r0] + ldr r1, [r3, #0x38] + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08144F60 + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _08144F5C + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #8] + b _08144F72 + .align 2, 0 +_08144F58: .4byte gUnknown_203A854 +_08144F5C: .4byte gUnknown_8595EF4 +_08144F60: + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _08144FA4 + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #8] + adds r0, #0xb4 +_08144F72: + cmp r2, r0 + bne _08145048 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + movs r0, #0x2b + bl m4aSongNumStart + ldr r2, _08144FA8 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #1] + ldr r1, [r2] + ldr r0, _08144FAC + ldrh r0, [r0] + strh r0, [r1, #0x34] + b _08145048 + .align 2, 0 +_08144FA4: .4byte gUnknown_8595EF4 +_08144FA8: .4byte gUnknown_203A854 +_08144FAC: .4byte gUnknown_85976CE +_08144FB0: + ldr r5, _08144FF0 + ldr r3, [r5] + ldr r2, _08144FF4 + ldrb r0, [r3, #1] + subs r0, #1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3, #0x34] + ldrb r0, [r3, #1] + cmp r0, #0x12 + bhi _08144FD2 + adds r0, #1 + strb r0, [r3, #1] +_08144FD2: + ldr r3, [r5] + ldr r1, [r3, #0x38] + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08144FFC + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _08144FF8 + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #0xa] + b _0814500E + .align 2, 0 +_08144FF0: .4byte gUnknown_203A854 +_08144FF4: .4byte gUnknown_85976CE +_08144FF8: .4byte gUnknown_8595EF4 +_08144FFC: + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _08145050 + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #0xa] + adds r0, #0xb4 +_0814500E: + cmp r2, r0 + bne _08145048 + ldr r2, _08145054 + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08145058 + str r1, [r0] + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, _0814505C + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3c] +_08145048: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08145050: .4byte gUnknown_8595EF4 +_08145054: .4byte gUnknown_20205AC +_08145058: .4byte sub_08144E60 +_0814505C: .4byte sub_08007140 + thumb_func_end sub_08144F2C + + thumb_func_start sub_08145060 +sub_08145060: @ 0x08145060 + adds r0, #0x3e + ldrb r3, [r0] + lsls r1, r3, #0x1d + lsrs r1, r1, #0x1f + movs r2, #1 + eors r2, r1 + lsls r2, r2, #2 + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_08145060 + + thumb_func_start sub_0814507C +sub_0814507C: @ 0x0814507C + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x22] + movs r0, #0x22 + ldrsh r1, [r4, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08145094 + subs r0, r2, #1 + strh r0, [r4, #0x22] + b _081450E8 +_08145094: + ldr r0, _081450F0 + str r0, [r4, #0x1c] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + subs r2, #0x12 + ldrb r0, [r2] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x5e + bl m4aSongNumStop + adds r0, r4, #0 + bl sub_08006E00 + ldr r5, _081450F4 + ldr r4, _081450F8 + ldr r0, [r4] + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, [r4] + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 +_081450E8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081450F0: .4byte sub_08007140 +_081450F4: .4byte gUnknown_20205AC +_081450F8: .4byte gUnknown_203A854 + thumb_func_end sub_0814507C + + thumb_func_start sub_081450FC +sub_081450FC: @ 0x081450FC + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + blt _08145126 + subs r1, #1 + strh r1, [r4, #0x30] + ldrh r0, [r4, #0x22] + subs r0, #1 + strh r0, [r4, #0x22] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _08145192 + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _08145192 + b _0814514C +_08145126: + ldrh r1, [r4, #0x34] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0 + blt _0814515C + subs r0, r1, #1 + strh r0, [r4, #0x34] + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _08145192 + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _08145154 +_0814514C: + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + b _08145192 +_08145154: + ldrh r0, [r4, #0x26] + subs r0, #1 + strh r0, [r4, #0x26] + b _08145192 +_0814515C: + movs r0, #0x2b + bl m4aSongNumStart + ldr r0, _08145198 + ldr r0, [r0] + ldr r0, [r0, #0x38] + ldrh r1, [r0, #0x2e] + adds r1, #4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _0814519C + str r0, [r4, #0x1c] + ldr r2, _081451A0 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x2c + ldrb r2, [r0] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0] +_08145192: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145198: .4byte gUnknown_203A854 +_0814519C: .4byte sub_0814507C +_081451A0: .4byte gUnknown_20205AC + thumb_func_end sub_081450FC + + thumb_func_start sub_081451A4 +sub_081451A4: @ 0x081451A4 + push {r4, r5, lr} + sub sp, #0x14 + adds r4, r0, #0 + ldr r1, _08145220 + mov r0, sp + movs r2, #2 + bl memcpy + add r5, sp, #4 + ldr r1, _08145224 + adds r0, r5, #0 + movs r2, #0x10 + bl memcpy + ldrh r0, [r4, #0x30] + subs r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _08145238 + ldr r0, _08145228 + ldr r0, [r0] + ldr r0, [r0, #0x38] + movs r1, #0x2e + ldrsh r0, [r0, r1] + add r0, sp + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081452D4 + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r4, #0x74 + subs r4, r4, r0 + lsrs r0, r4, #0x1f + adds r4, r4, r0 + asrs r4, r4, #1 + rsbs r4, r4, #0 + ldr r0, _0814522C + ldr r5, _08145230 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r1, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + ldr r0, _08145234 + adds r1, r5, #0 + adds r2, r4, #0 + bl m4aMPlayPanpotControl + b _081452D4 + .align 2, 0 +_08145220: .4byte gUnknown_85976FA +_08145224: .4byte gUnknown_85976FC +_08145228: .4byte gUnknown_203A854 +_0814522C: .4byte gUnknown_3007510 +_08145230: .4byte 0x0000FFFF +_08145234: .4byte gUnknown_3007550 +_08145238: + lsls r0, r1, #0x10 + cmp r0, #0 + blt _08145288 + ldr r0, _08145284 + ldr r0, [r0] + ldr r0, [r0, #0x38] + movs r2, #0x2e + ldrsh r0, [r0, r2] + add r0, sp + movs r2, #0 + ldrsb r2, [r0, r2] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #7 + subs r0, r1, r0 + lsls r0, r0, #1 + adds r0, r5, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r0, r2, r0 + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + movs r2, #0x30 + ldrsh r0, [r4, r2] + subs r1, r1, r0 + lsls r1, r1, #1 + mov r0, sp + adds r0, #5 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + b _081452D4 + .align 2, 0 +_08145284: .4byte gUnknown_203A854 +_08145288: + movs r0, #0x5e + bl m4aSongNumStartOrChange + ldr r0, _081452A8 + ldr r0, [r0] + ldr r0, [r0, #0x38] + movs r2, #0x2e + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _081452AC + movs r0, #0x98 + lsls r0, r0, #1 + movs r1, #0x3f + bl sub_080A2B3C + b _081452B8 + .align 2, 0 +_081452A8: .4byte gUnknown_203A854 +_081452AC: + movs r0, #0x98 + lsls r0, r0, #1 + movs r1, #0x3f + rsbs r1, r1, #0 + bl sub_080A2B3C +_081452B8: + ldr r0, _081452DC + ldr r0, [r0] + ldr r0, [r0, #0x38] + ldrh r1, [r0, #0x2e] + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + movs r0, #0x2d + strh r0, [r4, #0x30] + ldr r0, _081452E0 + str r0, [r4, #0x1c] +_081452D4: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081452DC: .4byte gUnknown_203A854 +_081452E0: .4byte sub_081450FC + thumb_func_end sub_081451A4 + + thumb_func_start sub_081452E4 +sub_081452E4: @ 0x081452E4 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _08145344 + mov r0, sp + movs r2, #2 + bl memcpy + ldrh r0, [r4, #0x30] + subs r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _08145350 + ldr r0, _08145348 + ldr r0, [r0] + ldr r0, [r0, #0x38] + movs r1, #0x2e + ldrsh r0, [r0, r1] + add r0, sp + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldr r1, _0814534C + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + adds r2, #0x3e + ldrb r3, [r2] + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _08145354 + .align 2, 0 +_08145344: .4byte gUnknown_85976FA +_08145348: .4byte gUnknown_203A854 +_0814534C: .4byte gUnknown_20205AC +_08145350: + ldr r0, _0814535C + str r0, [r4, #0x1c] +_08145354: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814535C: .4byte sub_08145060 + thumb_func_end sub_081452E4 + + thumb_func_start sub_08145360 +sub_08145360: @ 0x08145360 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0814539C + ldr r3, [r0] + ldr r1, [r3, #0x38] + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _081453A8 + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _081453A0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #0x12] + adds r0, #0x5a + cmp r2, r0 + bne _0814540A + ldr r2, _081453A4 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x34 + b _081453D2 + .align 2, 0 +_0814539C: .4byte gUnknown_203A854 +_081453A0: .4byte gUnknown_8595EF4 +_081453A4: .4byte gUnknown_20205AC +_081453A8: + movs r0, #0x34 + ldrsh r2, [r1, r0] + ldr r1, _08145410 + ldrb r0, [r3, #4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldrh r0, [r0, #0x14] + movs r1, #0x87 + lsls r1, r1, #1 + adds r0, r0, r1 + cmp r2, r0 + bne _0814540A + ldr r2, _08145414 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x2e +_081453D2: + strh r3, [r0, #0x30] + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x30] + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08145418 + str r1, [r0] + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0814541C + str r1, [r0] + movs r0, #0x2b + bl m4aSongNumStart +_0814540A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145410: .4byte gUnknown_8595EF4 +_08145414: .4byte gUnknown_20205AC +_08145418: .4byte sub_081452E4 +_0814541C: .4byte sub_081451A4 + thumb_func_end sub_08145360 + + thumb_func_start sub_08145420 +sub_08145420: @ 0x08145420 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r0, #0 + mov r8, r0 + ldr r0, _08145444 + ldrb r0, [r0] + cmp r0, #1 + beq _081454C4 + cmp r0, #1 + bgt _08145448 + cmp r0, #0 + beq _0814544E + b _08145516 + .align 2, 0 +_08145444: .4byte gUnknown_3005F2C +_08145448: + cmp r0, #2 + beq _08145500 + b _08145516 +_0814544E: + ldr r5, _081454B8 + ldr r0, [r5] + cmp r0, #0 + bne _0814546A + movs r0, #0x1c + bl sub_08000BDC + str r0, [r5] + ldr r4, _081454BC + adds r0, r7, #0 + movs r1, #7 + bl sub_0800401C + str r0, [r4] +_0814546A: + ldr r1, [r5] + ldrh r0, [r6] + movs r2, #0 + strh r0, [r1, #0x14] + ldrb r0, [r6, #5] + strb r0, [r1, #0x16] + ldr r0, [r5] + strb r2, [r0, #0x1a] + ldr r0, [r5] + strb r2, [r0, #0x1b] + ldr r0, [r5] + strb r2, [r0, #0x10] + ldr r1, [r5] + movs r0, #0x1c + strb r0, [r1, #0x12] + ldr r0, [r5] + strb r2, [r0, #0x11] + ldrb r1, [r6, #4] + lsls r1, r1, #0x13 + rsbs r1, r1, #0 + asrs r1, r1, #0x10 + adds r0, r7, #0 + movs r2, #1 + bl sub_081458F0 + movs r4, #0 +_0814549E: + adds r0, r7, #0 + ldr r1, _081454C0 + movs r2, #0x20 + adds r3, r4, #0 + bl sub_08003AC0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xdf + bls _0814549E + b _081454EC + .align 2, 0 +_081454B8: .4byte gUnknown_203A85C +_081454BC: .4byte gUnknown_203A860 +_081454C0: .4byte gUnknown_85987C4 +_081454C4: + movs r4, #0 + ldr r1, _081454F8 + ldr r0, [r1] + ldrb r0, [r0, #0x16] + lsls r0, r0, #3 + cmp r8, r0 + bge _081454EC + adds r5, r1, #0 +_081454D4: + adds r0, r4, #0 + movs r1, #0 + bl sub_08145774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, [r5] + ldrb r0, [r0, #0x16] + lsls r0, r0, #3 + cmp r4, r0 + blt _081454D4 +_081454EC: + ldr r1, _081454FC + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08145516 + .align 2, 0 +_081454F8: .4byte gUnknown_203A85C +_081454FC: .4byte gUnknown_3005F2C +_08145500: + adds r0, r7, #0 + bl sub_081458E0 + ldr r0, _08145524 + ldrb r1, [r6, #3] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #1 + mov r8, r0 +_08145516: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08145524: .4byte gUnknown_85987A4 + thumb_func_end sub_08145420 + + thumb_func_start sub_08145528 +sub_08145528: @ 0x08145528 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_081458E0 + adds r0, r4, #0 + bl sub_08145714 + ldr r2, _0814556C + ldr r1, [r2] + ldrb r0, [r1, #0x1b] + cmp r0, #0 + beq _0814554A + subs r0, #1 + strb r0, [r1, #0x1b] +_0814554A: + ldr r1, [r2] + ldrb r0, [r1, #0x1a] + cmp r0, #0 + beq _08145570 + subs r0, #1 + strb r0, [r1, #0x1a] + ldr r1, [r2] + ldrb r0, [r1, #0x1a] + cmp r0, #0 + bne _08145570 + ldrh r0, [r1, #0x18] + bl sub_08145654 + bl sub_081456D8 + b _081455F6 + .align 2, 0 +_0814556C: .4byte gUnknown_203A85C +_08145570: + ldr r5, _08145580 + ldr r0, [r5] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _08145584 + bl sub_081456D8 + b _081455F6 + .align 2, 0 +_08145580: .4byte gUnknown_203A85C +_08145584: + cmp r0, #1 + bne _0814558E + bl sub_08145674 + b _081455B2 +_0814558E: + cmp r0, #8 + bls _081455B2 + bl sub_080A2FB4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081455A8 + bl sub_081456D8 + ldr r0, [r5] + strb r4, [r0, #0x10] + b _081455F6 +_081455A8: + bl sub_08145674 + ldr r1, [r5] + movs r0, #1 + strb r0, [r1, #0x10] +_081455B2: + ldr r5, _081455FC + ldr r1, [r5] + ldrb r4, [r1, #0x10] + subs r4, #1 + lsls r4, r4, #0x19 + lsrs r4, r4, #0x18 + ldrb r0, [r1, #0x16] + lsls r0, r0, #3 + ldrb r2, [r1, #0x11] + adds r0, r0, r2 + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r1, r4 + ldrb r1, [r1] + bl sub_08145774 + ldr r1, [r5] + ldrb r0, [r1, #0x16] + lsls r0, r0, #3 + ldrb r2, [r1, #0x11] + adds r0, r0, r2 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, #1 + adds r1, r1, r4 + ldrb r1, [r1] + bl sub_08145774 + ldr r1, [r5] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] +_081455F6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081455FC: .4byte gUnknown_203A85C + thumb_func_end sub_08145528 + + thumb_func_start sub_08145600 +sub_08145600: @ 0x08145600 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + ldr r0, _08145640 + ldr r0, [r0, #4] + cmp r0, #0 + bge _0814564E + ldr r6, _08145644 + ldr r1, [r6] + ldrb r0, [r1, #0x1a] + cmp r0, #0 + bne _0814564E + ldrb r0, [r1, #0x1b] + cmp r0, #0 + bne _0814564E + movs r0, #4 + strb r0, [r1, #0x1b] + bl sub_080A2FB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08145648 + bl sub_080A2F7C + ldr r1, [r6] + strh r4, [r1, #0x18] + movs r0, #2 + strb r0, [r1, #0x1a] + b _0814564E + .align 2, 0 +_08145640: .4byte gUnknown_30074D0 +_08145644: .4byte gUnknown_203A85C +_08145648: + adds r0, r5, #0 + bl sub_08145654 +_0814564E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08145600 + + thumb_func_start sub_08145654 +sub_08145654: @ 0x08145654 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + movs r2, #0x7d + movs r3, #0xa + bl sub_080A2B88 + ldr r0, _08145670 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #0x10] + pop {r0} + bx r0 + .align 2, 0 +_08145670: .4byte gUnknown_203A85C + thumb_func_end sub_08145654 + + thumb_func_start sub_08145674 +sub_08145674: @ 0x08145674 + push {r4, lr} + ldr r3, _08145684 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #1 + bgt _0814568C + ldr r0, _08145688 + b _081456A4 + .align 2, 0 +_08145684: .4byte gUnknown_3002FF0 +_08145688: .4byte gUnknown_3006470 +_0814568C: + ldr r2, _081456D0 + ldrb r1, [r2, #0xb] + movs r0, #0 + ldrsb r0, [r3, r0] + subs r0, #1 + subs r1, r1, r0 + ldr r0, [r2, #0x10] + muls r0, r1, r0 + movs r1, #0xd4 + lsls r1, r1, #2 + adds r2, r2, r1 + adds r0, r0, r2 +_081456A4: + movs r1, #0xc6 + lsls r1, r1, #3 + adds r3, r0, r1 + movs r2, #0 + ldr r4, _081456D4 +_081456AE: + ldr r1, [r4] + adds r1, r1, r2 + lsls r0, r2, #1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _081456AE + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081456D0: .4byte gUnknown_3006120 +_081456D4: .4byte gUnknown_203A85C + thumb_func_end sub_08145674 + + thumb_func_start sub_081456D8 +sub_081456D8: @ 0x081456D8 + push {r4, lr} + ldr r4, _08145710 + ldr r1, [r4] + ldrb r0, [r1, #0x16] + lsls r0, r0, #3 + ldrb r1, [r1, #0x11] + adds r0, r0, r1 + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08145774 + ldr r1, [r4] + ldrb r0, [r1, #0x16] + lsls r0, r0, #3 + ldrb r1, [r1, #0x11] + adds r0, r0, r1 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08145774 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145710: .4byte gUnknown_203A85C + thumb_func_end sub_081456D8 + + thumb_func_start sub_08145714 +sub_08145714: @ 0x08145714 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _0814576C + ldr r0, [r4] + ldrb r1, [r0, #0x11] + adds r0, r6, #0 + movs r2, #0 + bl sub_081458F0 + ldr r1, [r4] + ldrb r0, [r1, #0x11] + adds r0, #2 + strb r0, [r1, #0x11] + ldr r1, [r4] + ldrb r0, [r1, #0x11] + lsrs r0, r0, #3 + ldrb r1, [r1, #0x16] + adds r1, r0, r1 + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0 +_0814574A: + lsls r3, r4, #5 + adds r3, r5, r3 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + ldr r1, _08145770 + movs r2, #0x20 + bl sub_08003AC0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _0814574A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814576C: .4byte gUnknown_203A85C +_08145770: .4byte gUnknown_85987C4 + thumb_func_end sub_08145714 + + thumb_func_start sub_08145774 +sub_08145774: @ 0x08145774 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r7, r0, #0x18 + lsrs r4, r7, #0x18 + lsls r1, r1, #0x18 + movs r0, #0xfe + lsls r0, r0, #0x17 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r1, #0 + bl __floatsidf + ldr r3, _08145834 + ldr r2, _08145830 + bl __divdf3 + bl __fixunsdfsi + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x37 + bls _081457AA + movs r5, #0x37 +_081457AA: + str r5, [sp] + movs r6, #1 + ands r6, r4 + ldr r0, _08145838 + ldr r1, [r0] + lsrs r7, r7, #0x1b + mov r8, r7 + ldr r0, _0814583C + ldrb r1, [r1, #0x12] + cmp r5, r1 + bls _0814584C + ldr r3, _08145840 + adds r0, r6, r0 + ldrb r0, [r0] + mov sb, r0 + movs r7, #7 + ands r7, r4 +_081457CC: + lsls r1, r5, #1 + lsls r0, r7, #3 + adds r0, r0, r7 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r2, _08145844 + adds r1, r1, r2 + mov r4, r8 + lsls r0, r4, #5 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, [r3] + adds r1, r1, r2 + ldrb r0, [r1] + mov r4, sb + ands r0, r4 + strb r0, [r1] + ldr r4, [r3] + adds r4, r4, r2 + adds r0, r5, #0 + movs r1, #3 + str r3, [sp, #4] + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r1, r6, #4 + adds r0, r0, r1 + ldr r1, _08145848 + adds r0, r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r4] + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08145838 + ldr r0, [r2] + ldr r3, [sp, #4] + ldrb r0, [r0, #0x12] + cmp r5, r0 + bhi _081457CC + b _081458B6 + .align 2, 0 +_08145830: .4byte 0x40920000 +_08145834: .4byte 0x00000000 +_08145838: .4byte gUnknown_203A85C +_0814583C: .4byte gUnknown_85987E4 +_08145840: .4byte gUnknown_203A860 +_08145844: .4byte gUnknown_8598324 +_08145848: .4byte gUnknown_85987E6 +_0814584C: + lsls r3, r6, #4 + mov sl, r3 + ldr r7, _081458D0 + adds r0, r6, r0 + ldrb r0, [r0] + mov sb, r0 + movs r6, #7 + ands r6, r4 +_0814585C: + lsls r1, r5, #1 + lsls r0, r6, #3 + adds r0, r0, r6 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r4, _081458D4 + adds r1, r1, r4 + mov r2, r8 + lsls r0, r2, #5 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, [r7] + adds r1, r1, r2 + ldrb r0, [r1] + mov r3, sb + ands r0, r3 + strb r0, [r1] + ldr r4, [r7] + adds r4, r4, r2 + adds r0, r5, #0 + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #1 + movs r1, #0xf + ands r0, r1 + add r0, sl + ldr r1, _081458D8 + adds r0, r0, r1 + ldrb r1, [r4] + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081458DC + ldr r0, [r2] + ldrb r0, [r0, #0x12] + cmp r5, r0 + blo _0814585C +_081458B6: + ldr r3, _081458DC + ldr r0, [r3] + mov r4, sp + ldrb r4, [r4] + strb r4, [r0, #0x12] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081458D0: .4byte gUnknown_203A860 +_081458D4: .4byte gUnknown_8598324 +_081458D8: .4byte gUnknown_85987E6 +_081458DC: .4byte gUnknown_203A85C + thumb_func_end sub_08145774 + + thumb_func_start sub_081458E0 +sub_081458E0: @ 0x081458E0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_08003528 + pop {r0} + bx r0 + thumb_func_end sub_081458E0 + + thumb_func_start sub_081458F0 +sub_081458F0: @ 0x081458F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + cmp r2, #0 + bne _08145914 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #0x10 + asrs r1, r1, #8 + movs r2, #0 + bl sub_08001D1C +_08145914: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081458F0 + + thumb_func_start sub_0814591C +sub_0814591C: @ 0x0814591C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r0, #0 + mov r8, r0 + ldr r6, _0814593C + ldrb r0, [r6] + cmp r0, #0 + beq _08145940 + cmp r0, #1 + beq _0814597C + b _081459C4 + .align 2, 0 +_0814593C: .4byte gUnknown_3005F2C +_08145940: + ldr r5, _08145970 + ldr r0, [r5] + cmp r0, #0 + bne _08145950 + movs r0, #8 + bl sub_08000BDC + str r0, [r5] +_08145950: + ldr r1, _08145974 + adds r0, r7, #0 + movs r2, #0 + movs r3, #0 + bl sub_08003AC0 + ldr r0, _08145978 + ldrb r1, [r4, #3] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A1200 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _081459C4 + .align 2, 0 +_08145970: .4byte gUnknown_203A864 +_08145974: .4byte gUnknown_8597FEC +_08145978: .4byte gUnknown_8597FCC +_0814597C: + ldr r0, _081459D0 + bl sub_08008254 + ldr r0, _081459D4 + bl sub_080084A8 + ldr r0, _081459D8 + ldrb r1, [r4, #4] + lsls r1, r1, #0x13 + movs r2, #0xa0 + lsls r2, r2, #0xe + adds r1, r1, r2 + asrs r1, r1, #0x10 + ldrb r2, [r4, #5] + lsls r2, r2, #0x13 + movs r3, #0xe0 + lsls r3, r3, #0xe + adds r2, r2, r3 + asrs r2, r2, #0x10 + movs r3, #1 + bl sub_08006B0C + ldr r2, _081459DC + ldr r3, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r4, #0 + strh r0, [r3, #4] + movs r1, #0x20 + strb r1, [r3] + ldr r0, [r2] + strb r1, [r0, #1] + ldr r0, [r2] + strb r4, [r0, #2] + movs r0, #1 + mov r8, r0 +_081459C4: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081459D0: .4byte gUnknown_8598834 +_081459D4: .4byte gUnknown_8598844 +_081459D8: .4byte gUnknown_859881C +_081459DC: .4byte gUnknown_203A864 + thumb_func_end sub_0814591C + + thumb_func_start sub_081459E0 +sub_081459E0: @ 0x081459E0 + push {r4, r5, r6, lr} + ldr r4, _08145A2C + ldr r6, _08145A30 + ldr r0, [r6] + ldrh r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + bl sub_08008554 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008564 + ldr r0, [r6] + ldrh r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r4, _08145A34 + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + ldr r0, [r6] + bl sub_08000BF0 + str r5, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08145A2C: .4byte gUnknown_20205AC +_08145A30: .4byte gUnknown_203A864 +_08145A34: .4byte gUnknown_203A85C + thumb_func_end sub_081459E0 + + thumb_func_start sub_08145A38 +sub_08145A38: @ 0x08145A38 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + adds r7, r0, #0 + ldr r3, _08145A80 + ldr r4, _08145A84 + ldr r0, [r4] + ldrh r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #1] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #1] + ldr r2, [r4] + ldrh r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #6] + ldr r0, _08145A88 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + cmp r1, #2 + beq _08145AB4 + cmp r1, #2 + bgt _08145A8C + cmp r1, #0 + beq _08145A92 + b _08145AFA + .align 2, 0 +_08145A80: .4byte gUnknown_20205AC +_08145A84: .4byte gUnknown_203A864 +_08145A88: .4byte gUnknown_203A85C +_08145A8C: + cmp r1, #6 + beq _08145AEC + b _08145AFA +_08145A92: + movs r0, #0x20 + strb r0, [r2, #1] + ldr r1, [r4] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _08145AAE + ldrb r0, [r1, #2] + add r4, sp, #0xc + cmp r0, #1 + beq _08145AFC + subs r0, #1 + strb r0, [r1, #2] + b _08145AFC +_08145AAE: + movs r0, #5 + strb r0, [r1, #2] + b _08145AFA +_08145AB4: + movs r3, #0 + movs r2, #0 + add r4, sp, #0xc + adds r5, r0, #0 +_08145ABC: + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, r2 + ldrb r0, [r0] + cmp r1, r0 + bge _08145ACA + adds r3, r0, #0 +_08145ACA: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _08145ABC + lsls r0, r3, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xd0 + muls r0, r1, r0 + cmp r0, #0 + bge _08145AE2 + adds r0, #0xff +_08145AE2: + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_08145BF0 + b _08145AFC +_08145AEC: + ldrb r1, [r0, #0xa] + movs r0, #0xd0 + muls r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + bl sub_08145BF0 +_08145AFA: + add r4, sp, #0xc +_08145AFC: + ldr r0, _08145B2C + ldr r2, [r0] + ldrb r5, [r2] + movs r1, #0 + ldrsb r1, [r2, r1] + movs r3, #1 + ldrsb r3, [r2, r3] + adds r6, r0, #0 + cmp r1, r3 + beq _08145B4E + cmp r1, r3 + bge _08145B30 + ldrb r0, [r2, #2] + adds r0, r5, r0 + strb r0, [r2] + ldr r2, [r6] + movs r1, #0 + ldrsb r1, [r2, r1] + ldrb r3, [r2, #1] + movs r0, #1 + ldrsb r0, [r2, r0] + cmp r1, r0 + ble _08145B4E + b _08145B46 + .align 2, 0 +_08145B2C: .4byte gUnknown_203A864 +_08145B30: + ldrb r0, [r2, #2] + subs r0, r5, r0 + strb r0, [r2] + ldr r2, [r6] + movs r1, #0 + ldrsb r1, [r2, r1] + ldrb r3, [r2, #1] + movs r0, #1 + ldrsb r0, [r2, r0] + cmp r1, r0 + bge _08145B4E +_08145B46: + strb r3, [r2] + ldr r1, [r6] + movs r0, #0 + strb r0, [r1, #1] +_08145B4E: + ldr r2, _08145BE4 + ldr r0, [sp, #4] + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + ldr r1, _08145BE8 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0x11 + orrs r0, r1 + str r0, [sp, #4] + ldr r0, [r6] + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + ldr r0, [sp, #8] + ands r0, r2 + orrs r0, r1 + str r0, [sp, #8] + add r0, sp, #4 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + add r0, sp, #0xc + ldrh r1, [r0] + ldrh r2, [r4, #2] + ldrh r3, [r4, #4] + ldrh r0, [r4, #6] + str r0, [sp] + movs r0, #0 + bl sub_08006F3C + ldr r2, _08145BEC + ldr r0, [r6] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #0x7f + movs r1, #0xff + ands r0, r1 + lsls r1, r0, #1 + adds r1, r1, r2 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0 + ldrsh r1, [r1, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + cmp r0, #0 + bge _08145BC2 + adds r0, #0xff +_08145BC2: + asrs r0, r0, #8 + strh r0, [r7, #0x24] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + cmp r0, #0 + bge _08145BD6 + adds r0, #0xff +_08145BD6: + asrs r0, r0, #8 + strh r0, [r7, #0x26] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08145BE4: .4byte 0xFFFF0000 +_08145BE8: .4byte 0x0000FFFF +_08145BEC: .4byte gUnknown_82FA8CC + thumb_func_end sub_08145A38 + + thumb_func_start sub_08145BF0 +sub_08145BF0: @ 0x08145BF0 + push {lr} + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x20 + subs r2, r1, r0 + movs r0, #0xff + ands r2, r0 + adds r0, r2, #0 + subs r0, #0x21 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xbe + bhi _08145C0C + movs r2, #0xe0 +_08145C0C: + ldr r1, _08145C1C + ldr r0, [r1] + strb r2, [r0, #1] + ldr r1, [r1] + movs r0, #5 + strb r0, [r1, #2] + pop {r0} + bx r0 + .align 2, 0 +_08145C1C: .4byte gUnknown_203A864 + thumb_func_end sub_08145BF0 + + thumb_func_start sub_08145C20 +sub_08145C20: @ 0x08145C20 + push {r4, lr} + sub sp, #0xc + adds r1, r0, #0 + ldr r0, _08145C5C + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _08145C60 + ldr r1, _08145C64 + adds r0, r4, #0 + bl sub_08008BCC + ldr r0, _08145C68 + ldrb r0, [r0] + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #8 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145C5C: .4byte gUnknown_2021C40 +_08145C60: .4byte gUnknown_2021C7C +_08145C64: .4byte gUnknown_85C9443 +_08145C68: .4byte gUnknown_203A868 + thumb_func_end sub_08145C20 + + thumb_func_start sub_08145C6C +sub_08145C6C: @ 0x08145C6C + push {r4, r5, lr} + sub sp, #0x18 + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x9b + lsls r0, r0, #1 + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + adds r2, r4, #0 + bl sub_08198B34 + ldr r4, _08145CD0 + add r0, sp, #0x10 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r2, #0x85 + lsls r2, r2, #2 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + adds r0, r5, #0 + bl sub_08145C20 + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08145CD0: .4byte gUnknown_203A868 + thumb_func_end sub_08145C6C + + thumb_func_start sub_08145CD4 +sub_08145CD4: @ 0x08145CD4 + push {r4, lr} + ldr r4, _08145CEC + ldrb r0, [r4] + movs r1, #1 + bl sub_08197060 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145CEC: .4byte gUnknown_203A868 + thumb_func_end sub_08145CD4 + + thumb_func_start sub_08145CF0 +sub_08145CF0: @ 0x08145CF0 + ldr r0, _08145D0C + ldr r1, [r0] + ldr r0, _08145D10 + adds r1, r1, r0 + ldr r0, _08145D14 + ldr r0, [r0] + adds r0, #0xac + ldr r0, [r0] + ldrh r1, [r1] + eors r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bx lr + .align 2, 0 +_08145D0C: .4byte gUnknown_3005AEC +_08145D10: .4byte 0x00000494 +_08145D14: .4byte gUnknown_3005AF0 + thumb_func_end sub_08145CF0 + + thumb_func_start sub_08145D18 +sub_08145D18: @ 0x08145D18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08145D34 + ldr r2, [r1] + ldr r1, _08145D38 + ldr r1, [r1] + adds r1, #0xac + ldr r1, [r1] + eors r0, r1 + ldr r1, _08145D3C + adds r2, r2, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_08145D34: .4byte gUnknown_3005AEC +_08145D38: .4byte gUnknown_3005AF0 +_08145D3C: .4byte 0x00000494 + thumb_func_end sub_08145D18 + + thumb_func_start sub_08145D40 +sub_08145D40: @ 0x08145D40 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08145D58 + cmp r1, r0 + bls _08145D5C + movs r0, #0 + b _08145D80 + .align 2, 0 +_08145D58: .4byte 0x0000270E +_08145D5C: + adds r0, r1, r4 + cmp r1, r0 + ble _08145D6C + ldr r0, _08145D68 + b _08145D7A + .align 2, 0 +_08145D68: .4byte 0x0000270F +_08145D6C: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08145D88 + cmp r1, r0 + bls _08145D78 + adds r1, r0, #0 +_08145D78: + adds r0, r1, #0 +_08145D7A: + bl sub_08145D18 + movs r0, #1 +_08145D80: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08145D88: .4byte 0x0000270F + thumb_func_end sub_08145D40 + + thumb_func_start sub_08145D8C +sub_08145D8C: @ 0x08145D8C + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_08145CF0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + bhs _08145DA2 + movs r0, #0 + b _08145DAE +_08145DA2: + subs r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08145D18 + movs r0, #1 +_08145DAE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08145D8C + + thumb_func_start sub_08145DB4 +sub_08145DB4: @ 0x08145DB4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + bl sub_08145E08 + adds r4, r0, #0 + cmp r4, #0 + bne _08145DD0 +_08145DCC: + movs r0, #0 + b _08145E02 +_08145DD0: + ldr r6, _08145DD4 + b _08145DE6 + .align 2, 0 +_08145DD4: .4byte 0x0000FFFF +_08145DD8: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08145DDE: + adds r4, #4 + ldr r0, [r4] + cmp r0, #0 + beq _08145DCC +_08145DE6: + ldr r1, [r4] + ldrh r0, [r1, #4] + cmp r0, r6 + beq _08145DFA + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08145DDE +_08145DFA: + cmp r5, #0 + bne _08145DD8 + ldr r0, [r4] + ldr r0, [r0] +_08145E02: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08145DB4 + + thumb_func_start sub_08145E08 +sub_08145E08: @ 0x08145E08 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r2, #0 + ldr r0, _08145E4C + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #0xd5 + beq _08145E78 + adds r1, r4, #0 +_08145E20: + lsls r0, r2, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, r3 + bhi _08145E78 + cmp r0, r3 + beq _08145E3E + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xd5 + bne _08145E20 +_08145E3E: + lsls r0, r2, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xd5 + bne _08145E58 + b _08145E78 + .align 2, 0 +_08145E4C: .4byte gUnknown_8598C68 +_08145E50: + adds r0, r4, #4 + adds r0, r1, r0 + ldr r0, [r0] + b _08145E7A +_08145E58: + cmp r0, r3 + bne _08145E78 + ldr r5, _08145E80 +_08145E5E: + lsls r1, r2, #3 + adds r0, r1, r5 + ldrb r0, [r0, #1] + cmp r0, r6 + beq _08145E50 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r0, r2, #3 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, r3 + beq _08145E5E +_08145E78: + movs r0, #0 +_08145E7A: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08145E80: .4byte gUnknown_8598C68 + thumb_func_end sub_08145E08 + + thumb_func_start sub_08145E84 +sub_08145E84: @ 0x08145E84 + push {r4, lr} + movs r0, #0x57 + bl sub_08135478 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08145E98 + movs r0, #0 + b _08145EB2 +_08145E98: + ldr r4, _08145EB8 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r1, _08145EBC + ldr r0, _08145EC0 + str r0, [r1] + ldr r1, _08145EC4 + ldr r0, _08145EC8 + str r0, [r1] + movs r0, #1 +_08145EB2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08145EB8: .4byte gUnknown_2037290 +_08145EBC: .4byte gUnknown_3005B10 +_08145EC0: .4byte sub_081B53D8 +_08145EC4: .4byte gUnknown_203CBB8 +_08145EC8: .4byte sub_08145ECC + thumb_func_end sub_08145E84 + + thumb_func_start sub_08145ECC +sub_08145ECC: @ 0x08145ECC + push {lr} + bl sub_081B1024 + ldr r1, _08145EE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + ldr r0, _08145EE8 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_08145EE4: .4byte gUnknown_20388A8 +_08145EE8: .4byte gUnknown_8256797 + thumb_func_end sub_08145ECC + + thumb_func_start sub_08145EEC +sub_08145EEC: @ 0x08145EEC + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08145F20 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _08145F24 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + ldr r0, _08145F28 + ldr r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08145F2C + adds r0, r0, r1 + ldr r1, _08145F30 + bl sub_081B1814 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08145F20: .4byte gUnknown_3005B60 +_08145F24: .4byte sub_08145F34 +_08145F28: .4byte gUnknown_20388A8 +_08145F2C: .4byte gUnknown_2024190 +_08145F30: .4byte gUnknown_2021C40 + thumb_func_end sub_08145EEC + + thumb_func_start sub_08145F34 +sub_08145F34: @ 0x08145F34 + push {lr} + movs r0, #0x28 + bl sub_080B5568 + bl sub_080988C4 + pop {r0} + bx r0 + thumb_func_end sub_08145F34 + + thumb_func_start sub_08145F44 +sub_08145F44: @ 0x08145F44 + push {r4, lr} + ldr r4, _08145F54 + ldrb r0, [r4] + cmp r0, #0 + beq _08145F58 + cmp r0, #1 + beq _08145F6C + b _08145F80 + .align 2, 0 +_08145F54: .4byte gUnknown_300120B +_08145F58: + ldr r0, _08145F68 + ldrb r0, [r0] + bl sub_0814602C + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + b _08145F80 + .align 2, 0 +_08145F68: .4byte gUnknown_300120A +_08145F6C: + bl sub_08145FE0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08145F80 + movs r0, #0 + strb r0, [r4] + ldr r0, _08145F98 + bl sub_08000540 +_08145F80: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08145F98: .4byte sub_08085A30 + thumb_func_end sub_08145F44 + + thumb_func_start sub_08145F9C +sub_08145F9C: @ 0x08145F9C + push {lr} + ldr r1, _08145FAC + strb r0, [r1] + ldr r0, _08145FB0 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08145FAC: .4byte gUnknown_300120A +_08145FB0: .4byte sub_08145F44 + thumb_func_end sub_08145F9C + + thumb_func_start sub_08145FB4 +sub_08145FB4: @ 0x08145FB4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08145FC8 + ldr r1, _08145FCC + str r1, [r2, #4] + bl sub_0814602C + pop {r0} + bx r0 + .align 2, 0 +_08145FC8: .4byte gUnknown_3002360 +_08145FCC: .4byte sub_080857B8 + thumb_func_end sub_08145FB4 + + thumb_func_start sub_08145FD0 +sub_08145FD0: @ 0x08145FD0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0814602C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08145FD0 + + thumb_func_start sub_08145FE0 +sub_08145FE0: @ 0x08145FE0 + push {r4, lr} + ldr r0, _08146004 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _08146008 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x26 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0814600C + movs r0, #0 + b _08146020 + .align 2, 0 +_08146004: .4byte sub_08146068 +_08146008: .4byte gUnknown_3005B60 +_0814600C: + adds r0, r2, #0 + bl sub_080A8964 + ldr r4, _08146028 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + movs r0, #1 +_08146020: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146028: .4byte gUnknown_203A86C + thumb_func_end sub_08145FE0 + + thumb_func_start sub_0814602C +sub_0814602C: @ 0x0814602C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0814605C + movs r1, #2 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08146060 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + ldr r4, _08146064 + movs r0, #0x3c + bl sub_08000BDC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814605C: .4byte sub_08146068 +_08146060: .4byte gUnknown_3005B60 +_08146064: .4byte gUnknown_203A86C + thumb_func_end sub_0814602C + + thumb_func_start sub_08146068 +sub_08146068: @ 0x08146068 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08146098 + ldr r2, _0814609C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814607A: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814607A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08146098: .4byte gUnknown_85A8548 +_0814609C: .4byte gUnknown_3005B60 + thumb_func_end sub_08146068 + + thumb_func_start sub_081460A0 +sub_081460A0: @ 0x081460A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080ABCCC + ldr r0, _081460CC + ldr r1, _081460D0 + ldr r2, _081460D4 + bl CpuSet + ldr r1, _081460D8 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _081460DC + movs r0, #2 + strh r0, [r4, #8] + movs r0, #1 + b _081460EA + .align 2, 0 +_081460CC: .4byte gUnknown_20377B4 +_081460D0: .4byte gUnknown_20373B4 +_081460D4: .4byte 0x04000100 +_081460D8: .4byte gUnknown_85A83F8 +_081460DC: + movs r1, #4 + bl sub_080A8878 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 +_081460EA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081460A0 + + thumb_func_start sub_081460F0 +sub_081460F0: @ 0x081460F0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08146110 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08146114 + movs r0, #0 + b _0814611C + .align 2, 0 +_08146110: .4byte gUnknown_85A83F8 +_08146114: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 +_0814611C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081460F0 + + thumb_func_start sub_08146124 +sub_08146124: @ 0x08146124 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08146148 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_080A8878 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146148: .4byte gUnknown_85A84A0 + thumb_func_end sub_08146124 + + thumb_func_start sub_0814614C +sub_0814614C: @ 0x0814614C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + strh r0, [r4, #0x26] + ldr r1, _08146178 + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08146170 + movs r0, #1 + strh r0, [r4, #0x26] +_08146170: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146178: .4byte gUnknown_85A84A0 + thumb_func_end sub_0814614C + + thumb_func_start sub_0814617C +sub_0814617C: @ 0x0814617C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r1, _081461B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #8] + movs r3, #8 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _081461B4 + adds r0, r2, #1 + strh r0, [r1, #8] + movs r0, #2 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #3 + movs r3, #2 + bl sub_08149E38 + b _081461C4 + .align 2, 0 +_081461B0: .4byte gUnknown_3005B60 +_081461B4: + bl sub_08149E9C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081461C4 + adds r0, r4, #0 + bl sub_080A8964 +_081461C4: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0814617C + + thumb_func_start sub_081461CC +sub_081461CC: @ 0x081461CC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081461FC + ldr r2, _08146200 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081461DE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081461DE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081461FC: .4byte gUnknown_85A8558 +_08146200: .4byte gUnknown_3005B60 + thumb_func_end sub_081461CC + + thumb_func_start sub_08146204 +sub_08146204: @ 0x08146204 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0x40 + bl sub_08001200 + movs r0, #0xc + movs r1, #0x40 + bl sub_08001200 + movs r0, #0xe + movs r1, #0x40 + bl sub_08001200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08146204 + + thumb_func_start sub_08146238 +sub_08146238: @ 0x08146238 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0xa] + movs r1, #0xa + ldrsh r2, [r4, r1] + cmp r2, #0 + beq _0814624E + subs r0, #1 + strh r0, [r4, #0xa] + b _0814628E +_0814624E: + movs r0, #4 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08146270 + movs r1, #1 + rsbs r1, r1, #0 + str r2, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_08146270: + ldrh r1, [r4, #0xc] + movs r0, #0xf + ands r0, r1 + lsls r1, r0, #4 + orrs r1, r0 + movs r0, #0x4c + bl sub_08001144 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0xe + ble _0814628E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0814628E: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08146238 + + thumb_func_start sub_08146298 +sub_08146298: @ 0x08146298 + push {lr} + ldr r0, _081462BC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081462B4 + ldr r0, _081462C0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081462B4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081462BC: .4byte gUnknown_2037C74 +_081462C0: .4byte sub_081461CC + thumb_func_end sub_08146298 + + thumb_func_start sub_081462C4 +sub_081462C4: @ 0x081462C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081462F4 + ldr r2, _081462F8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081462D6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081462D6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081462F4: .4byte gUnknown_85A8564 +_081462F8: .4byte gUnknown_3005B60 + thumb_func_end sub_081462C4 + + thumb_func_start sub_081462FC +sub_081462FC: @ 0x081462FC + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r0, #1 + rsbs r0, r0, #0 + movs r4, #0 + str r4, [sp] + movs r1, #4 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08146358 + ldr r1, _0814635C + ldr r1, [r1] + movs r2, #0x14 + ldrsh r1, [r1, r2] + str r4, [sp] + movs r2, #0xa0 + str r2, [sp, #4] + movs r2, #0 + movs r3, #2 + bl sub_0814A058 + ldr r0, _08146360 + bl sub_080006F0 + ldr r0, _08146364 + bl sub_080006FC + movs r0, #3 + bl sub_08001274 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146358: .4byte gUnknown_2039048 +_0814635C: .4byte gUnknown_203A86C +_08146360: .4byte sub_081463E0 +_08146364: .4byte sub_08146418 + thumb_func_end sub_081462FC + + thumb_func_start sub_08146368 +sub_08146368: @ 0x08146368 + push {r4, r5, lr} + sub sp, #8 + ldr r4, _081463D0 + ldr r2, [r4] + ldrb r1, [r2] + movs r1, #0 + strb r1, [r2] + ldrh r1, [r0, #0xa] + adds r1, #4 + strh r1, [r0, #0xa] + ldrh r1, [r0, #0xc] + adds r1, #8 + strh r1, [r0, #0xc] + ldr r3, _081463D4 + 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, #4] + adds r0, r3, #0 + movs r3, #2 + bl sub_0814A058 + ldr r0, _081463D8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081463BA + ldr r0, _081463DC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081463BA: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081463D0: .4byte gUnknown_203A86C +_081463D4: .4byte gUnknown_20388C8 +_081463D8: .4byte gUnknown_2037C74 +_081463DC: .4byte sub_081462C4 + thumb_func_end sub_08146368 + + thumb_func_start sub_081463E0 +sub_081463E0: @ 0x081463E0 + push {lr} + bl sub_08149FEC + ldr r0, _08146408 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + beq _08146404 + ldr r1, _0814640C + ldr r0, _08146410 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _08146414 + str r0, [r1, #8] + ldr r0, [r1, #8] +_08146404: + pop {r0} + bx r0 + .align 2, 0 +_08146408: .4byte gUnknown_203A86C +_0814640C: .4byte 0x040000D4 +_08146410: .4byte gUnknown_20388C8 +_08146414: .4byte 0x800000A0 + thumb_func_end sub_081463E0 + + thumb_func_start sub_08146418 +sub_08146418: @ 0x08146418 + ldr r1, _08146438 + ldr r0, _0814643C + ldrh r0, [r0] + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _08146440 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + bx lr + .align 2, 0 +_08146438: .4byte gUnknown_20388C8 +_0814643C: .4byte 0x04000006 +_08146440: .4byte 0x04000014 + thumb_func_end sub_08146418 + + thumb_func_start sub_08146444 +sub_08146444: @ 0x08146444 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08146474 + ldr r2, _08146478 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08146456: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08146456 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08146474: .4byte gUnknown_85A856C +_08146478: .4byte gUnknown_3005B60 + thumb_func_end sub_08146444 + + thumb_func_start sub_0814647C +sub_0814647C: @ 0x0814647C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #4 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081464D0 + ldr r1, [r0] + ldr r0, _081464D4 + movs r2, #0x16 + ldrsh r1, [r1, r2] + movs r2, #0xa0 + lsls r2, r2, #1 + bl memset + ldr r0, _081464D8 + bl sub_080006F0 + ldr r0, _081464DC + bl sub_080006FC + movs r0, #3 + bl sub_08001274 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081464D0: .4byte gUnknown_203A86C +_081464D4: .4byte gUnknown_2039048 +_081464D8: .4byte sub_08146570 +_081464DC: .4byte sub_081465A8 + thumb_func_end sub_0814647C + + thumb_func_start sub_081464E0 +sub_081464E0: @ 0x081464E0 + push {r4, r5, r6, r7, lr} + ldr r1, _08146560 + ldr r2, [r1] + ldrb r1, [r2] + movs r1, #0 + strb r1, [r2] + ldrh r4, [r0, #0xa] + ldrh r2, [r0, #0xc] + lsls r3, r2, #0x10 + asrs r3, r3, #0x18 + movs r5, #0x84 + lsls r5, r5, #5 + adds r1, r4, r5 + strh r1, [r0, #0xa] + movs r1, #0xc0 + lsls r1, r1, #1 + adds r2, r2, r1 + strh r2, [r0, #0xc] + movs r5, #0 + lsls r7, r3, #0x10 +_08146508: + lsrs r0, r4, #8 + asrs r1, r7, #0x10 + bl sub_0806EFB8 + ldr r1, _08146564 + lsls r2, r5, #1 + adds r2, r2, r1 + ldr r6, _08146560 + ldr r1, [r6] + ldrh r1, [r1, #0x16] + adds r0, r0, r1 + strh r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x84 + lsls r1, r1, #5 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r5, #0x9f + bls _08146508 + ldr r0, _08146568 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0814654E + ldr r0, _0814656C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0814654E: + ldr r0, [r6] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08146560: .4byte gUnknown_203A86C +_08146564: .4byte gUnknown_20388C8 +_08146568: .4byte gUnknown_2037C74 +_0814656C: .4byte sub_08146444 + thumb_func_end sub_081464E0 + + thumb_func_start sub_08146570 +sub_08146570: @ 0x08146570 + push {lr} + bl sub_08149FEC + ldr r0, _08146598 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + beq _08146594 + ldr r1, _0814659C + ldr r0, _081465A0 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _081465A4 + str r0, [r1, #8] + ldr r0, [r1, #8] +_08146594: + pop {r0} + bx r0 + .align 2, 0 +_08146598: .4byte gUnknown_203A86C +_0814659C: .4byte 0x040000D4 +_081465A0: .4byte gUnknown_20388C8 +_081465A4: .4byte 0x800000A0 + thumb_func_end sub_08146570 + + thumb_func_start sub_081465A8 +sub_081465A8: @ 0x081465A8 + ldr r1, _081465C8 + ldr r0, _081465CC + ldrh r0, [r0] + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _081465D0 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + bx lr + .align 2, 0 +_081465C8: .4byte gUnknown_20388C8 +_081465CC: .4byte 0x04000006 +_081465D0: .4byte 0x04000016 + thumb_func_end sub_081465A8 + + thumb_func_start sub_081465D4 +sub_081465D4: @ 0x081465D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08146604 + ldr r2, _08146608 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081465E6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081465E6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08146604: .4byte gUnknown_85A85AC +_08146608: .4byte gUnknown_3005B60 + thumb_func_end sub_081465D4 + + thumb_func_start sub_0814660C +sub_0814660C: @ 0x0814660C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814663C + ldr r2, _08146640 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814661E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814661E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814663C: .4byte gUnknown_85A8574 +_08146640: .4byte gUnknown_3005B60 + thumb_func_end sub_0814660C + + thumb_func_start sub_08146644 +sub_08146644: @ 0x08146644 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08146674 + ldr r2, _08146678 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08146656: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08146656 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08146674: .4byte gUnknown_85A8590 +_08146678: .4byte gUnknown_3005B60 + thumb_func_end sub_08146644 + + thumb_func_start sub_0814667C +sub_0814667C: @ 0x0814667C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081466AC + ldr r2, _081466B0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814668E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814668E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081466AC: .4byte gUnknown_85A85C4 +_081466B0: .4byte gUnknown_3005B60 + thumb_func_end sub_0814667C + + thumb_func_start sub_081466B4 +sub_081466B4: @ 0x081466B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081466E4 + ldr r2, _081466E8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081466C6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081466C6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081466E4: .4byte gUnknown_85A85DC +_081466E8: .4byte gUnknown_3005B60 + thumb_func_end sub_081466B4 + + thumb_func_start sub_081466EC +sub_081466EC: @ 0x081466EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814671C + ldr r2, _08146720 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081466FE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081466FE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814671C: .4byte gUnknown_85A85F4 +_08146720: .4byte gUnknown_3005B60 + thumb_func_end sub_081466EC + + thumb_func_start sub_08146724 +sub_08146724: @ 0x08146724 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08146754 + ldr r2, _08146758 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08146736: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08146736 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08146754: .4byte gUnknown_85A860C +_08146758: .4byte gUnknown_3005B60 + thumb_func_end sub_08146724 + + thumb_func_start sub_0814675C +sub_0814675C: @ 0x0814675C + push {r4, lr} + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r1, #0 + movs r0, #0x10 + strh r0, [r4, #0xa] + strh r1, [r4, #0xc] + strh r1, [r4, #0x10] + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r4, #0x12] + ldr r0, _081467B8 + ldr r2, [r0] + movs r0, #0x3f + strh r0, [r2, #2] + strh r1, [r2, #4] + movs r0, #0xf0 + strh r0, [r2, #6] + movs r0, #0xa0 + strh r0, [r2, #8] + ldr r0, _081467BC + strh r0, [r2, #0xe] + ldrh r0, [r4, #0xa] + lsls r0, r0, #8 + ldrh r1, [r4, #0xc] + orrs r0, r1 + strh r0, [r2, #0x10] + ldr r0, _081467C0 + movs r2, #0xf0 + movs r1, #0x9f + ldr r3, _081467C4 + adds r0, r0, r3 +_081467A2: + strh r2, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _081467A2 + ldr r0, _081467C8 + bl sub_080006F0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081467B8: .4byte gUnknown_203A86C +_081467BC: .4byte 0x00003F41 +_081467C0: .4byte gUnknown_20388C8 +_081467C4: .4byte 0x000008BE +_081467C8: .4byte sub_08146FFC + thumb_func_end sub_0814675C + + thumb_func_start sub_081467CC +sub_081467CC: @ 0x081467CC + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r5, #0 + movs r0, #0x3c + strh r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0814675C + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r0, sp + strh r5, [r0] + ldr r1, [sp, #4] + ldr r2, _08146814 + bl CpuSet + ldr r0, _08146818 + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _0814681C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146814: .4byte 0x01000400 +_08146818: .4byte gUnknown_859A980 +_0814681C: .4byte gUnknown_859A960 + thumb_func_end sub_081467CC + + thumb_func_start sub_08146820 +sub_08146820: @ 0x08146820 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r5, #0 + movs r0, #0x3c + strh r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0814675C + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r0, sp + strh r5, [r0] + ldr r1, [sp, #4] + ldr r2, _08146868 + bl CpuSet + ldr r0, _0814686C + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _08146870 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146868: .4byte 0x01000400 +_0814686C: .4byte gUnknown_859AF54 +_08146870: .4byte gUnknown_859A960 + thumb_func_end sub_08146820 + + thumb_func_start sub_08146874 +sub_08146874: @ 0x08146874 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r5, #0 + movs r0, #0x3c + strh r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0814675C + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r0, sp + strh r5, [r0] + ldr r1, [sp, #4] + ldr r2, _081468B8 + bl CpuSet + ldr r0, _081468BC + ldr r1, [sp, #8] + movs r2, #0x80 + lsls r2, r2, #5 + bl CpuSet + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081468B8: .4byte 0x01000400 +_081468BC: .4byte gUnknown_859B6C4 + thumb_func_end sub_08146874 + + thumb_func_start sub_081468C0 +sub_081468C0: @ 0x081468C0 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + bl sub_0814675C + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _08146908 + mov r0, sp + bl CpuSet + ldr r0, _0814690C + ldr r1, [sp, #8] + movs r2, #0xb0 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _08146910 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146908: .4byte 0x01000400 +_0814690C: .4byte gUnknown_8598DE0 +_08146910: .4byte gUnknown_85A8984 + thumb_func_end sub_081468C0 + + thumb_func_start sub_08146914 +sub_08146914: @ 0x08146914 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + adds r7, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r5, _0814699C + movs r1, #0 + ldr r0, [sp, #8] + mov sb, r0 + ldr r6, _081469A0 + mov r8, r6 + movs r0, #0xf0 + lsls r0, r0, #8 + mov ip, r0 +_0814693A: + movs r0, #0 + lsls r3, r1, #0x10 + asrs r4, r3, #0xb +_08146940: + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + adds r1, r4, r2 + lsls r1, r1, #1 + add r1, sb + ldrh r0, [r5] + mov r6, ip + orrs r0, r6 + strh r0, [r1] + adds r2, #1 + lsls r2, r2, #0x10 + adds r5, #2 + lsrs r0, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0x1d + ble _08146940 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r3, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0814693A + movs r6, #0x10 + ldrsh r2, [r7, r6] + movs r1, #0x12 + ldrsh r0, [r7, r1] + str r0, [sp] + movs r0, #0xa0 + str r0, [sp, #4] + mov r0, r8 + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] + movs r0, #1 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0814699C: .4byte gUnknown_85A8AD0 +_081469A0: .4byte gUnknown_20388C8 + thumb_func_end sub_08146914 + + thumb_func_start sub_081469A4 +sub_081469A4: @ 0x081469A4 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _081469E4 + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _081469E8 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081469E4: .4byte gUnknown_859ACF8 +_081469E8: .4byte gUnknown_20388C8 + thumb_func_end sub_081469A4 + + thumb_func_start sub_081469EC +sub_081469EC: @ 0x081469EC + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _08146A2C + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _08146A30 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146A2C: .4byte gUnknown_859B3E0 +_08146A30: .4byte gUnknown_20388C8 + thumb_func_end sub_081469EC + + thumb_func_start sub_08146A34 +sub_08146A34: @ 0x08146A34 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _08146A80 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08146A84 + ldr r1, [sp, #8] + movs r2, #0xa0 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _08146A88 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146A80: .4byte gUnknown_859BD64 +_08146A84: .4byte gUnknown_859BDC4 +_08146A88: .4byte gUnknown_20388C8 + thumb_func_end sub_08146A34 + + thumb_func_start sub_08146A8C +sub_08146A8C: @ 0x08146A8C + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _08146AD8 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08146ADC + ldr r1, [sp, #8] + movs r2, #0xa0 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _08146AE0 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146AD8: .4byte gUnknown_859BD84 +_08146ADC: .4byte gUnknown_859C5C4 +_08146AE0: .4byte gUnknown_20388C8 + thumb_func_end sub_08146A8C + + thumb_func_start sub_08146AE4 +sub_08146AE4: @ 0x08146AE4 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _08146B30 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08146B34 + ldr r1, [sp, #8] + movs r2, #0xa0 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _08146B38 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146B30: .4byte gUnknown_859BDA4 +_08146B34: .4byte gUnknown_859CDC4 +_08146B38: .4byte gUnknown_20388C8 + thumb_func_end sub_08146AE4 + + thumb_func_start sub_08146B3C +sub_08146B3C: @ 0x08146B3C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _08146B7C + mov r0, sp + bl CpuSet + ldr r0, _08146B80 + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _08146B84 + ldr r1, [sp, #4] + bl LZ77UnCompVram + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146B7C: .4byte 0x01000400 +_08146B80: .4byte gUnknown_859D5E4 +_08146B84: .4byte gUnknown_859DC98 + thumb_func_end sub_08146B3C + + thumb_func_start sub_08146B88 +sub_08146B88: @ 0x08146B88 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r5, [r4, r0] + adds r0, r5, #0 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08146BC0 + adds r0, r5, #0 + movs r1, #0x1e + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r1, _08146BE0 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_08146BC0: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3a + ble _08146BD8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0xa] +_08146BD8: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146BE0: .4byte gUnknown_859E850 + thumb_func_end sub_08146B88 + + thumb_func_start sub_08146BE4 +sub_08146BE4: @ 0x08146BE4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r5, [r4, r0] + adds r0, r5, #0 + movs r1, #5 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08146C12 + adds r0, r5, #0 + movs r1, #5 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0xb + ldr r1, _08146C38 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_08146C12: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x44 + ble _08146C2E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0xa] + movs r0, #0x1e + strh r0, [r4, #0x18] +_08146C2E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146C38: .4byte gUnknown_859E990 + thumb_func_end sub_08146BE4 + + thumb_func_start sub_08146C3C +sub_08146C3C: @ 0x08146C3C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _08146C64 + movs r1, #0 + str r1, [sp] + movs r1, #1 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146C64: .4byte 0xFFFF8000 + thumb_func_end sub_08146C3C + + thumb_func_start sub_08146C68 +sub_08146C68: @ 0x08146C68 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08146CA8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08146C9E + ldr r1, _08146CAC + ldrh r2, [r1, #0xa] + ldr r0, _08146CB0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08146CB4 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_08146C9E: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146CA8: .4byte gUnknown_2037C74 +_08146CAC: .4byte 0x040000B0 +_08146CB0: .4byte 0x0000C5FF +_08146CB4: .4byte 0x00007FFF + thumb_func_end sub_08146C68 + + thumb_func_start sub_08146CB8 +sub_08146CB8: @ 0x08146CB8 + push {r4, r5, lr} + sub sp, #8 + adds r3, r0, #0 + ldr r2, _08146D40 + 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 _08146CDE + subs r0, r1, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08146CE8 +_08146CDE: + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + movs r0, #2 + strh r0, [r3, #0xe] +_08146CE8: + ldr r2, [r4] + ldrh r0, [r3, #0xa] + lsls r0, r0, #8 + ldrh r1, [r3, #0xc] + orrs r0, r1 + strh r0, [r2, #0x10] + movs r5, #0xc + ldrsh r0, [r3, r5] + cmp r0, #0xf + ble _08146D02 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_08146D02: + ldrh r0, [r3, #0x10] + adds r0, #8 + strh r0, [r3, #0x10] + ldr r0, _08146D44 + adds r1, r0, #0 + ldrh r5, [r3, #0x12] + adds r1, r1, r5 + strh r1, [r3, #0x12] + ldr r0, _08146D48 + movs r5, #0x10 + ldrsh r2, [r3, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146D40: .4byte gUnknown_203A86C +_08146D44: .4byte 0xFFFFFF00 +_08146D48: .4byte gUnknown_20388C8 + thumb_func_end sub_08146CB8 + + thumb_func_start sub_08146D4C +sub_08146D4C: @ 0x08146D4C + push {r4, r5, lr} + sub sp, #8 + adds r3, r0, #0 + ldr r2, _08146DD4 + 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 _08146D72 + subs r0, r1, #1 + strh r0, [r3, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08146D7C +_08146D72: + ldrh r0, [r3, #0xa] + subs r0, #1 + strh r0, [r3, #0xa] + movs r0, #2 + strh r0, [r3, #0xe] +_08146D7C: + ldr r2, [r4] + ldrh r0, [r3, #0xa] + lsls r0, r0, #8 + ldrh r1, [r3, #0xc] + orrs r0, r1 + strh r0, [r2, #0x10] + movs r5, #0xa + ldrsh r0, [r3, r5] + cmp r0, #0 + bne _08146D96 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_08146D96: + ldrh r0, [r3, #0x10] + adds r0, #8 + strh r0, [r3, #0x10] + ldr r0, _08146DD8 + adds r1, r0, #0 + ldrh r5, [r3, #0x12] + adds r1, r1, r5 + strh r1, [r3, #0x12] + ldr r0, _08146DDC + movs r5, #0x10 + ldrsh r2, [r3, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldr r1, [r4] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08146DD4: .4byte gUnknown_203A86C +_08146DD8: .4byte 0xFFFFFF00 +_08146DDC: .4byte gUnknown_20388C8 + thumb_func_end sub_08146D4C + + thumb_func_start sub_08146DE0 +sub_08146DE0: @ 0x08146DE0 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r7, _08146E44 + ldr r0, [r7] + ldrb r1, [r0] + movs r6, #0 + strb r6, [r0] + ldrh r0, [r4, #0x10] + adds r0, #8 + strh r0, [r4, #0x10] + ldr r0, _08146E48 + adds r1, r0, #0 + ldrh r3, [r4, #0x12] + adds r1, r1, r3 + strh r1, [r4, #0x12] + ldr r0, _08146E4C + movs r3, #0x10 + ldrsh r2, [r4, r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + str r1, [sp] + movs r5, #0xa0 + str r5, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bgt _08146E30 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + strh r5, [r4, #0xa] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0xc] + strh r6, [r4, #0xe] +_08146E30: + ldr r0, [r7] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08146E44: .4byte gUnknown_203A86C +_08146E48: .4byte 0xFFFFFF00 +_08146E4C: .4byte gUnknown_20388C8 + thumb_func_end sub_08146DE0 + + thumb_func_start sub_08146E50 +sub_08146E50: @ 0x08146E50 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x18] + subs r0, #1 + strh r0, [r1, #0x18] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08146E66 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_08146E66: + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_08146E50 + + thumb_func_start sub_08146E6C +sub_08146E6C: @ 0x08146E6C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _08146E94 + movs r1, #0 + str r1, [sp] + movs r1, #1 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146E94: .4byte 0x0000FFFF + thumb_func_end sub_08146E6C + + thumb_func_start sub_08146E98 +sub_08146E98: @ 0x08146E98 + push {lr} + adds r2, r0, #0 + ldr r0, _08146EB4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08146EAE + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_08146EAE: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08146EB4: .4byte gUnknown_2037C74 + thumb_func_end sub_08146E98 + + thumb_func_start sub_08146EB8 +sub_08146EB8: @ 0x08146EB8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08146F38 + 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, _08146F3C + cmp r1, r0 + bgt _08146ED8 + adds r0, r2, #0 + adds r0, #0x80 + strh r0, [r4, #0xc] +_08146ED8: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08146EF4 + ldrh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + subs r0, r1, r0 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08146EF4 + strh r3, [r4, #0xa] +_08146EF4: + ldr r0, _08146F40 + movs r1, #0xa + ldrsh r3, [r4, r1] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A0D4 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08146F50 + movs r0, #0 + bl sub_080006F0 + ldr r1, _08146F44 + ldrh r2, [r1, #0xa] + ldr r0, _08146F48 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08146F4C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _08146F70 + .align 2, 0 +_08146F38: .4byte gUnknown_203A86C +_08146F3C: .4byte 0x000003FF +_08146F40: .4byte gUnknown_20388C8 +_08146F44: .4byte 0x040000B0 +_08146F48: .4byte 0x0000C5FF +_08146F4C: .4byte 0x00007FFF +_08146F50: + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08146F64 + adds r0, r1, #1 + strh r0, [r4, #0xe] + ldr r0, _08146F78 + bl sub_080006F0 +_08146F64: + ldr r0, _08146F7C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] +_08146F70: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08146F78: .4byte sub_08147028 +_08146F7C: .4byte gUnknown_203A86C + thumb_func_end sub_08146EB8 + + thumb_func_start sub_08146F80 +sub_08146F80: @ 0x08146F80 + push {lr} + ldr r1, _08146FDC + ldrh r2, [r1, #0xa] + ldr r0, _08146FE0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08146FE4 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_08149FEC + ldr r2, _08146FE8 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #0 + beq _08146FB8 + ldr r1, _08146FEC + ldr r0, _08146FF0 + str r0, [r1] + movs r3, #0xf0 + lsls r3, r3, #3 + adds r0, r0, r3 + str r0, [r1, #4] + ldr r0, _08146FF4 + str r0, [r1, #8] + ldr r0, [r1, #8] +_08146FB8: + ldr r1, _08146FF8 + ldr r2, [r2] + ldrh r0, [r2, #2] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #4] + strh r0, [r1] + subs r1, #6 + ldrh r0, [r2, #8] + strh r0, [r1] + adds r1, #0xc + ldrh r0, [r2, #0xe] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #0x10] + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08146FDC: .4byte 0x040000B0 +_08146FE0: .4byte 0x0000C5FF +_08146FE4: .4byte 0x00007FFF +_08146FE8: .4byte gUnknown_203A86C +_08146FEC: .4byte 0x040000D4 +_08146FF0: .4byte gUnknown_20388C8 +_08146FF4: .4byte 0x800000A0 +_08146FF8: .4byte 0x04000048 + thumb_func_end sub_08146F80 + + thumb_func_start sub_08146FFC +sub_08146FFC: @ 0x08146FFC + push {lr} + bl sub_08146F80 + ldr r1, _08147018 + ldr r0, _0814701C + str r0, [r1] + ldr r0, _08147020 + str r0, [r1, #4] + ldr r0, _08147024 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08147018: .4byte 0x040000B0 +_0814701C: .4byte gUnknown_2039048 +_08147020: .4byte 0x04000010 +_08147024: .4byte 0xA2400001 + thumb_func_end sub_08146FFC + + thumb_func_start sub_08147028 +sub_08147028: @ 0x08147028 + push {lr} + bl sub_08146F80 + ldr r1, _08147044 + ldr r0, _08147048 + str r0, [r1] + ldr r0, _0814704C + str r0, [r1, #4] + ldr r0, _08147050 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08147044: .4byte 0x040000B0 +_08147048: .4byte gUnknown_2039048 +_0814704C: .4byte 0x04000040 +_08147050: .4byte 0xA2400001 + thumb_func_end sub_08147028 + + thumb_func_start sub_08147054 +sub_08147054: @ 0x08147054 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08147084 + ldr r2, _08147088 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08147066: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08147066 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08147084: .4byte gUnknown_85A862C +_08147088: .4byte gUnknown_3005B60 + thumb_func_end sub_08147054 + + thumb_func_start sub_0814708C +sub_0814708C: @ 0x0814708C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + ldr r0, _081470CC + ldr r1, [sp, #8] + movs r2, #0x20 + bl CpuSet + movs r0, #0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r2, _081470D0 + mov r0, sp + bl CpuSet + ldr r0, _081470D4 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081470CC: .4byte gUnknown_8599360 +_081470D0: .4byte 0x05000200 +_081470D4: .4byte gUnknown_85A8984 + thumb_func_end sub_0814708C + + thumb_func_start sub_081470D8 +sub_081470D8: @ 0x081470D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r7, r0, #0 + ldr r1, _08147158 + mov r0, sp + movs r2, #4 + bl memcpy + add r4, sp, #4 + ldr r1, _0814715C + adds r0, r4, #0 + movs r2, #0xa + bl memcpy + bl sub_0806F050 + movs r5, #1 + ands r5, r0 + movs r1, #0 + mov r8, r4 + ldr r6, _08147160 +_08147106: + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r0, r5, #1 + add r0, sp + movs r2, #0 + ldrsh r0, [r0, r2] + str r0, [r6] + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + lsls r0, r4, #5 + adds r0, #0x10 + str r0, [r6, #4] + str r5, [r6, #8] + lsls r0, r4, #1 + add r0, r8 + movs r1, #0 + ldrsh r0, [r0, r1] + str r0, [r6, #0xc] + movs r0, #0x2d + bl sub_080B5270 + adds r4, #1 + lsls r4, r4, #0x10 + movs r0, #1 + eors r5, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsrs r1, r4, #0x10 + asrs r4, r4, #0x10 + cmp r4, #4 + ble _08147106 + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] + movs r0, #0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147158: .4byte gUnknown_85A8638 +_0814715C: .4byte gUnknown_85A863C +_08147160: .4byte gUnknown_20388A8 + thumb_func_end sub_081470D8 + + thumb_func_start sub_08147164 +sub_08147164: @ 0x08147164 + push {lr} + movs r0, #0x2d + bl sub_080B5598 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08147184 + bl sub_0814A044 + ldr r0, _0814718C + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_08147184: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0814718C: .4byte sub_08147054 + thumb_func_end sub_08147164 + + thumb_func_start sub_08147190 +sub_08147190: @ 0x08147190 + push {r4, r5, lr} + ldr r0, _081471EC + ldr r5, _081471F0 + movs r2, #0 + ldrsh r1, [r5, r2] + movs r3, #4 + ldrsh r2, [r5, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081471F4 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r4, r4, r1 + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #5] + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, [r5, #8] + strh r0, [r4, #0x2e] + ldr r0, [r5, #0xc] + strh r0, [r4, #0x30] + ldr r0, _081471F8 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08008140 + ldrb r1, [r5, #8] + adds r0, r4, #0 + bl sub_08007F70 + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081471EC: .4byte gUnknown_85A8918 +_081471F0: .4byte gUnknown_20388A8 +_081471F4: .4byte gUnknown_20205AC +_081471F8: .4byte 0x0000FFFF + thumb_func_end sub_08147190 + + thumb_func_start sub_081471FC +sub_081471FC: @ 0x081471FC + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _0814721C + mov r0, sp + movs r2, #4 + bl memcpy + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08147220 + subs r0, r1, #1 + strh r0, [r4, #0x30] + b _081472B2 + .align 2, 0 +_0814721C: .4byte gUnknown_85A8646 +_08147220: + ldrh r0, [r4, #0x20] + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0xf0 + bhi _0814728E + asrs r0, r1, #0x13 + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x22] + lsls r1, r1, #0x10 + asrs r1, r1, #0x13 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r2, r0, #0x10 + asrs r5, r0, #0x10 + movs r3, #0x32 + ldrsh r0, [r4, r3] + cmp r5, r0 + beq _0814728E + strh r2, [r4, #0x32] + ldr r0, _081472BC + ldrh r2, [r0] + lsrs r2, r2, #8 + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #0xb + movs r0, #0xc0 + lsls r0, r0, #0x13 + adds r2, r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + subs r0, r1, #2 + lsls r0, r0, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldr r6, _081472C0 + adds r3, r6, #0 + strh r3, [r0] + subs r0, r1, #1 + lsls r0, r0, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + strh r3, [r0] + lsls r0, r1, #5 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + strh r3, [r0] + adds r1, #1 + lsls r1, r1, #5 + adds r1, r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + strh r3, [r1] +_0814728E: + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + adds r0, #0xf + lsls r0, r0, #0x10 + movs r1, #0x87 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _081472B2 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_080B5444 +_081472B2: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081472BC: .4byte 0x04000008 +_081472C0: .4byte 0x0000F001 + thumb_func_end sub_081471FC + + thumb_func_start sub_081472C4 +sub_081472C4: @ 0x081472C4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081472F4 + ldr r2, _081472F8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081472D6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081472D6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081472F4: .4byte gUnknown_85A864C +_081472F8: .4byte gUnknown_3005B60 + thumb_func_end sub_081472C4 + + thumb_func_start sub_081472FC +sub_081472FC: @ 0x081472FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _08147350 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #2] + movs r0, #0x3f + strh r0, [r1, #4] + ldr r0, _08147354 + strh r0, [r1, #6] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r3, _08147358 + ldr r2, _0814735C +_08147322: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x9f + bls _08147322 + ldr r0, _08147360 + bl sub_080006F0 + ldr r0, _08147350 + ldr r1, [r0] + movs r0, #0x78 + strh r0, [r1, #0x2c] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08147350: .4byte gUnknown_203A86C +_08147354: .4byte 0x0000F0F1 +_08147358: .4byte gUnknown_2039048 +_0814735C: .4byte 0x0000F3F4 +_08147360: .4byte sub_08147748 + thumb_func_end sub_081472FC + + thumb_func_start sub_08147364 +sub_08147364: @ 0x08147364 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r6, r0, #0 + ldr r2, _081473EC + 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, #1 + rsbs r1, r1, #0 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A26C + ldr r5, _081473F0 +_08147394: + ldr r4, _081473EC + ldr r0, [r4] + movs r7, #0x2a + ldrsh r3, [r0, r7] + lsls r3, r3, #1 + adds r3, r3, r5 + ldrh r1, [r0, #0x28] + adds r1, #1 + movs r7, #0xf0 + lsls r7, r7, #7 + adds r2, r7, #0 + orrs r1, r2 + strh r1, [r3] + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08147394 + ldr r1, [r4] + ldrh r0, [r1, #0x2c] + adds r0, #0x10 + strh r0, [r1, #0x2c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xef + ble _081473D8 + movs r0, #0 + strh r0, [r1, #0x2e] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_081473D8: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081473EC: .4byte gUnknown_203A86C +_081473F0: .4byte gUnknown_20388C8 + thumb_func_end sub_08147364 + + thumb_func_start sub_081473F4 +sub_081473F4: @ 0x081473F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov r8, r0 + add r1, sp, #0xc + movs r0, #0 + strb r0, [r1] + ldr r4, _08147478 + 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, #1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0xf0 + bl sub_0814A26C + mov sb, r4 + mov r7, sb + add r5, sp, #0xc +_08147432: + movs r1, #0x78 + ldr r3, [r7] + ldrh r0, [r3, #0x28] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r2, #0x2e + ldrsh r0, [r3, r2] + cmp r0, #0x4f + ble _0814744A + ldrh r1, [r3, #0x28] + movs r4, #0xf0 +_0814744A: + ldr r6, _0814747C + movs r0, #0x2a + ldrsh r2, [r3, r0] + lsls r2, r2, #1 + adds r2, r2, r6 + lsls r1, r1, #0x10 + asrs r1, r1, #8 + lsls r0, r4, #0x10 + asrs r4, r0, #0x10 + orrs r4, r1 + strh r4, [r2] + ldrb r0, [r5] + cmp r0, #0 + bne _08147480 + adds r0, r3, #0 + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + strb r0, [r5] + b _08147432 + .align 2, 0 +_08147478: .4byte gUnknown_203A86C +_0814747C: .4byte gUnknown_20388C8 +_08147480: + ldr r1, [r7] + ldrh r0, [r1, #0x2e] + adds r0, #8 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0x9f + ble _0814749E + movs r0, #0xf0 + strh r0, [r1, #0x2c] + mov r1, r8 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _081474C6 +_0814749E: + movs r3, #0x2a + ldrsh r0, [r1, r3] + cmp r0, r2 + bge _081474C6 + adds r3, r4, #0 + ldr r5, _081474E4 +_081474AA: + ldr r2, [r5] + ldrh r0, [r2, #0x2a] + adds r0, #1 + strh r0, [r2, #0x2a] + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + adds r0, r0, r6 + strh r3, [r0] + movs r4, #0x2a + ldrsh r1, [r2, r4] + movs r4, #0x2e + ldrsh r0, [r2, r4] + cmp r1, r0 + blt _081474AA +_081474C6: + mov r1, sb + ldr r0, [r1] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081474E4: .4byte gUnknown_203A86C + thumb_func_end sub_081473F4 + + thumb_func_start sub_081474E8 +sub_081474E8: @ 0x081474E8 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + ldr r2, _08147568 + 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, #1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A26C + ldr r5, _0814756C +_08147516: + ldr r4, _08147568 + ldr r0, [r4] + movs r1, #0x2a + ldrsh r3, [r0, r1] + lsls r3, r3, #1 + adds r3, r3, r5 + ldrh r1, [r0, #0x28] + lsls r1, r1, #8 + movs r2, #0xf0 + orrs r1, r2 + strh r1, [r3] + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08147516 + ldr r1, [r4] + ldrh r0, [r1, #0x2c] + subs r0, #0x10 + strh r0, [r1, #0x2c] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08147554 + movs r0, #0xa0 + strh r0, [r1, #0x2e] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_08147554: + ldr r0, [r4] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08147568: .4byte gUnknown_203A86C +_0814756C: .4byte gUnknown_20388C8 + thumb_func_end sub_081474E8 + + thumb_func_start sub_08147570 +sub_08147570: @ 0x08147570 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r0 + add r1, sp, #0xc + movs r0, #0 + strb r0, [r1] + ldr r4, _081475F8 + 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, #1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #0x78 + movs r2, #0x50 + movs r3, #0 + bl sub_0814A26C + ldr r7, _081475FC + mov sl, r7 + ldr r0, _081475F8 + mov r8, r0 + add r6, sp, #0xc +_081475B4: + mov r1, r8 + ldr r4, [r1] + movs r2, #0x2a + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + mov r7, sl + 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 _081475D4 + movs r2, #0x78 + adds r1, r3, #0 +_081475D4: + lsls r0, r2, #0x10 + asrs r0, r0, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + orrs r1, r0 + movs r7, #0 + strh r1, [r5] + ldrb r0, [r6] + cmp r0, #0 + bne _08147600 + adds r0, r4, #0 + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + strb r0, [r6] + b _081475B4 + .align 2, 0 +_081475F8: .4byte gUnknown_203A86C +_081475FC: .4byte gUnknown_20388C8 +_08147600: + mov r0, r8 + ldr r2, [r0] + ldrh r0, [r2, #0x2e] + subs r0, #8 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r3, r0, #0x10 + cmp r3, #0 + bgt _0814761E + strh r7, [r2, #0x2c] + mov r1, sb + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08147648 +_0814761E: + movs r4, #0x2a + ldrsh r0, [r2, r4] + cmp r0, r3 + ble _08147648 + ldr r6, _08147668 + adds r3, r1, #0 + ldr r5, _0814766C +_0814762C: + ldr r2, [r5] + ldrh r0, [r2, #0x2a] + subs r0, #1 + strh r0, [r2, #0x2a] + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + adds r0, r0, r6 + strh r3, [r0] + movs r7, #0x2a + ldrsh r1, [r2, r7] + movs r4, #0x2e + ldrsh r0, [r2, r4] + cmp r1, r0 + bgt _0814762C +_08147648: + ldr r7, _0814766C + ldr r0, [r7] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147668: .4byte gUnknown_20388C8 +_0814766C: .4byte gUnknown_203A86C + thumb_func_end sub_08147570 + + thumb_func_start sub_08147670 +sub_08147670: @ 0x08147670 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r7, r0, #0 + ldr r1, _08147700 + 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, #1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A26C + ldr r6, _08147704 +_0814769C: + movs r2, #0x78 + ldr r5, _08147700 + ldr r3, [r5] + ldrh r4, [r3, #0x28] + movs r1, #0x28 + ldrsh r0, [r3, r1] + cmp r0, #0x77 + ble _081476B0 + movs r2, #0 + movs r4, #0xf0 +_081476B0: + movs r0, #0x2a + ldrsh r1, [r3, r0] + lsls r1, r1, #1 + adds r1, r1, r6 + lsls r2, r2, #8 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + orrs r0, r2 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814769C + ldr r0, [r5] + ldrh r1, [r0, #0x2c] + adds r1, #0x10 + strh r1, [r0, #0x2c] + movs r1, #0x28 + ldrsh r0, [r0, r1] + cmp r0, #0x78 + ble _081476EA + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] +_081476EA: + ldr r0, [r5] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147700: .4byte gUnknown_203A86C +_08147704: .4byte gUnknown_20388C8 + thumb_func_end sub_08147670 + + thumb_func_start sub_08147708 +sub_08147708: @ 0x08147708 + push {lr} + ldr r1, _08147738 + ldrh r2, [r1, #0xa] + ldr r0, _0814773C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08147740 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, _08147744 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08147738: .4byte 0x040000B0 +_0814773C: .4byte 0x0000C5FF +_08147740: .4byte 0x00007FFF +_08147744: .4byte sub_081472C4 + thumb_func_end sub_08147708 + + thumb_func_start sub_08147748 +sub_08147748: @ 0x08147748 + push {r4, lr} + ldr r4, _081477B4 + ldrh r1, [r4, #0xa] + ldr r0, _081477B8 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _081477BC + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r3, _081477C0 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, #0 + beq _08147780 + ldr r1, _081477C4 + ldr r0, _081477C8 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _081477CC + str r0, [r1, #8] + ldr r0, [r1, #8] +_08147780: + ldr r2, _081477D0 + ldr r1, [r3] + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + subs r2, #4 + ldr r0, _081477C8 + movs r1, #0xf0 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r1, [r0] + strh r1, [r2] + str r0, [r4] + str r2, [r4, #4] + ldr r0, _081477D4 + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081477B4: .4byte 0x040000B0 +_081477B8: .4byte 0x0000C5FF +_081477BC: .4byte 0x00007FFF +_081477C0: .4byte gUnknown_203A86C +_081477C4: .4byte 0x040000D4 +_081477C8: .4byte gUnknown_20388C8 +_081477CC: .4byte 0x800000A0 +_081477D0: .4byte 0x04000048 +_081477D4: .4byte 0xA2400001 + thumb_func_end sub_08147748 + + thumb_func_start sub_081477D8 +sub_081477D8: @ 0x081477D8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08147808 + ldr r2, _0814780C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081477EA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081477EA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08147808: .4byte gUnknown_85A8668 +_0814780C: .4byte gUnknown_3005B60 + thumb_func_end sub_081477D8 + + thumb_func_start sub_08147810 +sub_08147810: @ 0x08147810 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r2, #0 + ldr r4, _08147858 + ldr r3, _0814785C +_08147822: + lsls r1, r2, #1 + adds r1, r1, r4 + ldr r0, [r3] + ldrh r0, [r0, #0x16] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x9f + bls _08147822 + ldr r0, _08147860 + bl sub_080006F0 + ldr r0, _08147864 + bl sub_080006FC + movs r0, #2 + bl sub_08001274 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08147858: .4byte gUnknown_2039048 +_0814785C: .4byte gUnknown_203A86C +_08147860: .4byte sub_08147948 +_08147864: .4byte sub_08147980 + thumb_func_end sub_08147810 + + thumb_func_start sub_08147868 +sub_08147868: @ 0x08147868 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r6, r0, #0 + ldr r0, _08147934 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldrh r2, [r6, #0xc] + lsls r1, r2, #0x10 + asrs r0, r1, #0x18 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r4, [r6, #0xa] + movs r0, #0xc0 + lsls r0, r0, #1 + mov r8, r0 + movs r5, #0x80 + lsls r5, r5, #3 + adds r0, r4, r5 + strh r0, [r6, #0xa] + ldr r0, _08147938 + cmp r1, r0 + bgt _081478A4 + movs r1, #0xc0 + lsls r1, r1, #1 + adds r0, r2, r1 + strh r0, [r6, #0xc] +_081478A4: + movs r5, #0 + lsls r7, r3, #0x10 +_081478A8: + lsrs r0, r4, #8 + asrs r1, r7, #0x10 + bl sub_0806EFB8 + ldr r1, _0814793C + lsls r2, r5, #1 + adds r2, r2, r1 + ldr r1, _08147934 + ldr r1, [r1] + ldrh r1, [r1, #0x16] + adds r0, r0, r1 + strh r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, r8 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r5, #0x9f + bls _081478A8 + ldrh r0, [r6, #0xe] + adds r0, #1 + strh r0, [r6, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x51 + bne _081478F8 + ldrh r0, [r6, #0x10] + adds r0, #1 + strh r0, [r6, #0x10] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #2 + rsbs r1, r1, #0 + movs r2, #0 + str r2, [sp] + movs r3, #0x10 + bl sub_080A139C +_081478F8: + movs r5, #0x10 + ldrsh r0, [r6, r5] + cmp r0, #0 + beq _0814791A + ldr r0, _08147940 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0814791A + ldr r0, _08147944 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0814791A: + ldr r0, _08147934 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147934: .4byte gUnknown_203A86C +_08147938: .4byte 0x1FFF0000 +_0814793C: .4byte gUnknown_20388C8 +_08147940: .4byte gUnknown_2037C74 +_08147944: .4byte sub_081477D8 + thumb_func_end sub_08147868 + + thumb_func_start sub_08147948 +sub_08147948: @ 0x08147948 + push {lr} + bl sub_08149FEC + ldr r0, _08147970 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + beq _0814796C + ldr r1, _08147974 + ldr r0, _08147978 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _0814797C + str r0, [r1, #8] + ldr r0, [r1, #8] +_0814796C: + pop {r0} + bx r0 + .align 2, 0 +_08147970: .4byte gUnknown_203A86C +_08147974: .4byte 0x040000D4 +_08147978: .4byte gUnknown_20388C8 +_0814797C: .4byte 0x800000A0 + thumb_func_end sub_08147948 + + thumb_func_start sub_08147980 +sub_08147980: @ 0x08147980 + ldr r1, _081479A0 + ldr r0, _081479A4 + ldrh r0, [r0] + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _081479A8 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + bx lr + .align 2, 0 +_081479A0: .4byte gUnknown_20388C8 +_081479A4: .4byte 0x04000006 +_081479A8: .4byte 0x04000016 + thumb_func_end sub_08147980 + + thumb_func_start sub_081479AC +sub_081479AC: @ 0x081479AC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081479DC + ldr r2, _081479E0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081479BE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081479BE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081479DC: .4byte gUnknown_85A8670 +_081479E0: .4byte gUnknown_3005B60 + thumb_func_end sub_081479AC + + thumb_func_start sub_081479E4 +sub_081479E4: @ 0x081479E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _08147A30 + ldr r1, [r0] + movs r2, #0 + movs r0, #0x3f + strh r0, [r1, #2] + strh r2, [r1, #4] + movs r0, #0xf0 + strh r0, [r1, #6] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r3, _08147A34 + movs r2, #0xf2 +_08147A0A: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x9f + bls _08147A0A + ldr r0, _08147A38 + bl sub_080006F0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08147A30: .4byte gUnknown_203A86C +_08147A34: .4byte gUnknown_2039048 +_08147A38: .4byte sub_08147B18 + thumb_func_end sub_081479E4 + + thumb_func_start sub_08147A3C +sub_08147A3C: @ 0x08147A3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r0, _08147AD0 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r7, _08147AD4 + ldrh r0, [r4, #0xc] + ldrb r5, [r4, #0xc] + adds r0, #0x10 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xa] + adds r0, #8 + strh r0, [r4, #0xa] + movs r6, #0 + movs r0, #1 + mov r8, r0 +_08147A64: + adds r0, r5, #0 + movs r1, #0x28 + bl sub_0806EFB8 + ldrh r1, [r4, #0xa] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r0, #0 + bge _08147A7A + movs r1, #0 +_08147A7A: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf0 + ble _08147A84 + movs r1, #0xf0 +_08147A84: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #8 + movs r2, #0xf1 + orrs r1, r2 + strh r1, [r7] + cmp r0, #0xef + bgt _08147A98 + movs r0, #0 + mov r8, r0 +_08147A98: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r5, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, #2 + cmp r6, #0x9f + bls _08147A64 + mov r1, r8 + cmp r1, #0 + beq _08147AB6 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08147AB6: + ldr r0, _08147AD0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147AD0: .4byte gUnknown_203A86C +_08147AD4: .4byte gUnknown_20388C8 + thumb_func_end sub_08147A3C + + thumb_func_start sub_08147AD8 +sub_08147AD8: @ 0x08147AD8 + push {lr} + ldr r1, _08147B08 + ldrh r2, [r1, #0xa] + ldr r0, _08147B0C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08147B10 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, _08147B14 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08147B08: .4byte 0x040000B0 +_08147B0C: .4byte 0x0000C5FF +_08147B10: .4byte 0x00007FFF +_08147B14: .4byte sub_081479AC + thumb_func_end sub_08147AD8 + + thumb_func_start sub_08147B18 +sub_08147B18: @ 0x08147B18 + push {r4, lr} + ldr r4, _08147B78 + ldrh r1, [r4, #0xa] + ldr r0, _08147B7C + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _08147B80 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r3, _08147B84 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, #0 + beq _08147B50 + ldr r1, _08147B88 + ldr r0, _08147B8C + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _08147B90 + str r0, [r1, #8] + ldr r0, [r1, #8] +_08147B50: + ldr r2, _08147B94 + ldr r1, [r3] + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + ldr r0, _08147B98 + str r0, [r4] + ldr r0, _08147B9C + str r0, [r4, #4] + ldr r0, _08147BA0 + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08147B78: .4byte 0x040000B0 +_08147B7C: .4byte 0x0000C5FF +_08147B80: .4byte 0x00007FFF +_08147B84: .4byte gUnknown_203A86C +_08147B88: .4byte 0x040000D4 +_08147B8C: .4byte gUnknown_20388C8 +_08147B90: .4byte 0x800000A0 +_08147B94: .4byte 0x04000048 +_08147B98: .4byte gUnknown_2039048 +_08147B9C: .4byte 0x04000040 +_08147BA0: .4byte 0xA2400001 + thumb_func_end sub_08147B18 + + thumb_func_start sub_08147BA4 +sub_08147BA4: @ 0x08147BA4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08147BC0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #0x26] + bl sub_08147C44 + pop {r0} + bx r0 + .align 2, 0 +_08147BC0: .4byte gUnknown_3005B60 + thumb_func_end sub_08147BA4 + + thumb_func_start sub_08147BC4 +sub_08147BC4: @ 0x08147BC4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08147BE0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #1 + strh r2, [r1, #0x26] + bl sub_08147C44 + pop {r0} + bx r0 + .align 2, 0 +_08147BE0: .4byte gUnknown_3005B60 + thumb_func_end sub_08147BC4 + + thumb_func_start sub_08147BE4 +sub_08147BE4: @ 0x08147BE4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08147C00 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #2 + strh r2, [r1, #0x26] + bl sub_08147C44 + pop {r0} + bx r0 + .align 2, 0 +_08147C00: .4byte gUnknown_3005B60 + thumb_func_end sub_08147BE4 + + thumb_func_start sub_08147C04 +sub_08147C04: @ 0x08147C04 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08147C20 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #3 + strh r2, [r1, #0x26] + bl sub_08147C44 + pop {r0} + bx r0 + .align 2, 0 +_08147C20: .4byte gUnknown_3005B60 + thumb_func_end sub_08147C04 + + thumb_func_start sub_08147C24 +sub_08147C24: @ 0x08147C24 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08147C40 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #4 + strh r2, [r1, #0x26] + bl sub_08147C44 + pop {r0} + bx r0 + .align 2, 0 +_08147C40: .4byte gUnknown_3005B60 + thumb_func_end sub_08147C24 + + thumb_func_start sub_08147C44 +sub_08147C44: @ 0x08147C44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08147C74 + ldr r2, _08147C78 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08147C56: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08147C56 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08147C74: .4byte gUnknown_85A867C +_08147C78: .4byte gUnknown_3005B60 + thumb_func_end sub_08147C44 + + thumb_func_start sub_08147C7C +sub_08147C7C: @ 0x08147C7C + push {r4, lr} + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + adds r0, r4, #0 + bl sub_081482D8 + movs r0, #0 + strh r0, [r4, #0xa] + movs r0, #1 + strh r0, [r4, #0xc] + movs r0, #0xef + strh r0, [r4, #0xe] + ldr r0, _08147CD4 + ldr r1, [r0] + movs r0, #0x3f + strh r0, [r1, #2] + movs r0, #0x3e + strh r0, [r1, #4] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r3, _08147CD8 + ldr r2, _08147CDC +_08147CB0: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x9f + bls _08147CB0 + ldr r0, _08147CE0 + bl sub_080006F0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08147CD4: .4byte gUnknown_203A86C +_08147CD8: .4byte gUnknown_2039048 +_08147CDC: .4byte 0x0000F0F1 +_08147CE0: .4byte sub_0814818C + thumb_func_end sub_08147C7C + + thumb_func_start sub_08147CE4 +sub_08147CE4: @ 0x08147CE4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + ldr r6, _08147D8C + add r1, sp, #4 + mov r0, sp + bl sub_0814A018 + ldr r0, _08147D90 + ldr r1, [sp, #4] + movs r2, #0xf0 + bl CpuSet + ldr r1, _08147D94 + mov r2, r8 + movs r3, #0x26 + ldrsh r0, [r2, r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08147D98 + ldr r0, _08147D9C + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0xfa + movs r2, #0xc + bl sub_080A1200 + movs r1, #0 + ldr r5, [sp] + movs r0, #0xf0 + lsls r0, r0, #8 + adds r7, r0, #0 +_08147D38: + movs r0, #0 + lsls r3, r1, #0x10 + asrs r4, r3, #0xb +_08147D3E: + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + adds r1, r4, r2 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r0, [r6] + orrs r0, r7 + strh r0, [r1] + adds r2, #1 + lsls r2, r2, #0x10 + adds r6, #2 + lsrs r0, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0x1f + ble _08147D3E + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r3, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _08147D38 + movs r0, #2 + bl sub_08001274 + ldr r0, _08147DA0 + bl sub_080006FC + mov r2, r8 + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + movs r0, #0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147D8C: .4byte gUnknown_85A8F80 +_08147D90: .4byte gUnknown_85995A0 +_08147D94: .4byte gUnknown_85A8A8C +_08147D98: .4byte gUnknown_85A8AA0 +_08147D9C: .4byte gUnknown_3005AF0 +_08147DA0: .4byte sub_081482A0 + thumb_func_end sub_08147CE4 + + thumb_func_start sub_08147DA4 +sub_08147DA4: @ 0x08147DA4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _08147E88 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r7, _08147E8C + ldrh r0, [r4, #0xa] + ldrb r5, [r4, #0xa] + adds r0, #0x10 + strh r0, [r4, #0xa] + movs r6, #0 +_08147DBE: + adds r0, r5, #0 + movs r1, #0x10 + bl sub_0806EFB8 + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r0, #0 + bge _08147DD4 + movs r2, #1 +_08147DD4: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf0 + ble _08147DDE + movs r2, #0xf0 +_08147DDE: + strh r2, [r7] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r7, #2 + adds r0, r5, #0 + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r6, #0x4f + bls _08147DBE + cmp r6, #0x9f + bhi _08147E36 +_08147DF8: + adds r0, r5, #0 + movs r1, #0x10 + bl sub_0806EFB8 + ldrh r1, [r4, #0xe] + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + cmp r1, #0 + bge _08147E0E + movs r2, #0 +_08147E0E: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xef + ble _08147E18 + movs r2, #0xef +_08147E18: + lsls r0, r2, #0x10 + asrs r0, r0, #8 + movs r1, #0xf0 + orrs r0, r1 + strh r0, [r7] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r7, #2 + adds r0, r5, #0 + adds r0, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r6, #0x9f + bls _08147DF8 +_08147E36: + ldrh r1, [r4, #0xc] + adds r1, #8 + strh r1, [r4, #0xc] + ldrh r0, [r4, #0xe] + subs r0, #8 + strh r0, [r4, #0xe] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xf0 + ble _08147E4E + movs r0, #0xf0 + strh r0, [r4, #0xc] +_08147E4E: + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _08147E5A + movs r0, #0 + strh r0, [r4, #0xe] +_08147E5A: + ldr r0, [r4, #0xc] + cmp r0, #0xf0 + bne _08147E66 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08147E66: + ldr r0, _08147E88 + ldr r1, [r0] + ldrh r0, [r1, #0x18] + subs r0, #8 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + adds r0, #8 + strh r0, [r1, #0x1a] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147E88: .4byte gUnknown_203A86C +_08147E8C: .4byte gUnknown_20388C8 + thumb_func_end sub_08147DA4 + + thumb_func_start sub_08147E90 +sub_08147E90: @ 0x08147E90 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08147F04 + ldr r1, [r2] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r1, _08147F08 + adds r5, r2, #0 + movs r2, #0xf0 +_08147EA4: + strh r2, [r1] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, #2 + cmp r0, #0x9f + bls _08147EA4 + ldrh r0, [r4, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #8] + strh r1, [r4, #0xa] + strh r1, [r4, #0xc] + strh r1, [r4, #0xe] + ldr r1, [r5] + ldrh r0, [r1, #0x18] + subs r0, #8 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + adds r0, #8 + strh r0, [r1, #0x1a] + movs r1, #0x22 + ldrsh r0, [r4, r1] + movs r1, #0 + bl sub_08148544 + movs r1, #0x24 + ldrsh r0, [r4, r1] + movs r1, #1 + bl sub_08148544 + movs r1, #0x22 + ldrsh r0, [r4, r1] + bl sub_0814855C + movs r0, #0x68 + bl sub_080A306C + ldr r1, [r5] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08147F04: .4byte gUnknown_203A86C +_08147F08: .4byte gUnknown_20388C8 + thumb_func_end sub_08147E90 + + thumb_func_start sub_08147F0C +sub_08147F0C: @ 0x08147F0C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08147F44 + ldr r1, [r0] + ldrh r0, [r1, #0x18] + subs r0, #8 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + adds r0, #8 + strh r0, [r1, #0x1a] + movs r1, #0x22 + ldrsh r0, [r4, r1] + bl sub_08148578 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08147F3C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r1, #0x24 + ldrsh r0, [r4, r1] + bl sub_0814855C +_08147F3C: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08147F44: .4byte gUnknown_203A86C + thumb_func_end sub_08147F0C + + thumb_func_start sub_08147F48 +sub_08147F48: @ 0x08147F48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r7, _08147FE8 + ldr r1, [r7] + ldrh r0, [r1, #0x18] + subs r0, #8 + movs r2, #0 + mov r8, r2 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + adds r0, #8 + strh r0, [r1, #0x1a] + movs r1, #0x24 + ldrsh r0, [r6, r1] + bl sub_08148578 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08147FDC + ldr r1, [r7] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + movs r0, #0 + bl sub_080006F0 + ldr r1, _08147FEC + ldrh r2, [r1, #0xa] + ldr r0, _08147FF0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08147FF4 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldr r4, _08147FF8 + movs r5, #0xa0 + lsls r5, r5, #1 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl memset + movs r2, #0xf0 + lsls r2, r2, #3 + adds r4, r4, r2 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl memset + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + mov r0, r8 + strh r0, [r6, #0xe] + strh r0, [r6, #0x10] + ldr r1, [r7] + movs r0, #0xbf + strh r0, [r1, #0xe] + ldr r0, _08147FFC + bl sub_080006F0 +_08147FDC: + movs r0, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08147FE8: .4byte gUnknown_203A86C +_08147FEC: .4byte 0x040000B0 +_08147FF0: .4byte 0x0000C5FF +_08147FF4: .4byte 0x00007FFF +_08147FF8: .4byte gUnknown_20388C8 +_08147FFC: .4byte sub_08148220 + thumb_func_end sub_08147F48 + + thumb_func_start sub_08148000 +sub_08148000: @ 0x08148000 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r2, _081480C0 + ldr r1, [r2] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + movs r6, #1 + ldr r1, [r2] + ldrh r0, [r1, #0x18] + subs r0, #8 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + adds r0, #8 + strh r0, [r1, #0x1a] + ldrh r1, [r4, #0x10] + movs r3, #0x10 + ldrsh r0, [r4, r3] + mov ip, r2 + cmp r0, #0x4f + bgt _0814802E + adds r0, r1, #2 + strh r0, [r4, #0x10] +_0814802E: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0x50 + ble _0814803A + movs r0, #0x50 + strh r0, [r4, #0x10] +_0814803A: + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + movs r1, #1 + ands r0, r1 + ldrh r3, [r4, #0x10] + cmp r0, #0 + beq _0814809C + movs r2, #0 + lsls r0, r3, #0x10 + movs r6, #0 + cmp r0, #0 + blt _0814809C + movs r7, #0x50 + ldr r5, _081480C4 +_08148058: + lsls r0, r2, #0x10 + asrs r3, r0, #0x10 + subs r1, r7, r3 + adds r0, r3, #0 + adds r0, #0x50 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0xf + adds r1, r1, r5 + ldrh r0, [r1] + cmp r0, #0xf + bhi _08148078 + movs r6, #1 + adds r0, #1 + strh r0, [r1] +_08148078: + lsls r0, r2, #0x10 + asrs r0, r0, #0xf + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, #0xf + bhi _0814808A + movs r6, #1 + adds r0, #1 + strh r0, [r1] +_0814808A: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x10 + ldrsh r1, [r4, r3] + ldrh r3, [r4, #0x10] + cmp r0, r1 + ble _08148058 +_0814809C: + cmp r3, #0x50 + bne _081480AA + cmp r6, #0 + bne _081480AA + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081480AA: + mov r1, ip + ldr r0, [r1] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081480C0: .4byte gUnknown_203A86C +_081480C4: .4byte gUnknown_20388C8 + thumb_func_end sub_08148000 + + thumb_func_start sub_081480C8 +sub_081480C8: @ 0x081480C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _081480F8 + ldr r0, [r5] + ldrb r1, [r0] + movs r6, #0 + strb r6, [r0] + movs r0, #1 + rsbs r0, r0, #0 + ldr r2, _081480FC + movs r1, #0x10 + bl sub_080A22E8 + ldr r1, [r5] + movs r0, #0xff + strh r0, [r1, #0xe] + strh r6, [r4, #0xe] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081480F8: .4byte gUnknown_203A86C +_081480FC: .4byte 0x00007FFF + thumb_func_end sub_081480C8 + + thumb_func_start sub_08148100 +sub_08148100: @ 0x08148100 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08148144 + ldr r1, [r5] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + ldr r0, _08148148 + movs r2, #0xe + ldrsh r1, [r4, r2] + movs r2, #0xa0 + lsls r2, r2, #1 + bl memset + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0xf + ble _08148130 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08148130: + ldr r0, [r5] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08148144: .4byte gUnknown_203A86C +_08148148: .4byte gUnknown_20388C8 + thumb_func_end sub_08148100 + + thumb_func_start sub_0814814C +sub_0814814C: @ 0x0814814C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08148180 + ldrh r2, [r1, #0xa] + ldr r0, _08148184 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08148188 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08148180: .4byte 0x040000B0 +_08148184: .4byte 0x0000C5FF +_08148188: .4byte 0x00007FFF + thumb_func_end sub_0814814C + + thumb_func_start sub_0814818C +sub_0814818C: @ 0x0814818C + push {r4, lr} + ldr r4, _081481F4 + ldrh r1, [r4, #0xa] + ldr r0, _081481F8 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _081481FC + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r3, _08148200 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, #0 + beq _081481C4 + ldr r1, _08148204 + ldr r0, _08148208 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _0814820C + str r0, [r1, #8] + ldr r0, [r1, #8] +_081481C4: + ldr r2, _08148210 + ldr r1, [r3] + ldrh r0, [r1, #0x1c] + strh r0, [r2] + adds r2, #0x36 + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + ldr r0, _08148214 + str r0, [r4] + ldr r0, _08148218 + str r0, [r4, #4] + ldr r0, _0814821C + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081481F4: .4byte 0x040000B0 +_081481F8: .4byte 0x0000C5FF +_081481FC: .4byte 0x00007FFF +_08148200: .4byte gUnknown_203A86C +_08148204: .4byte 0x040000D4 +_08148208: .4byte gUnknown_20388C8 +_0814820C: .4byte 0x800000A0 +_08148210: .4byte 0x04000012 +_08148214: .4byte gUnknown_2039048 +_08148218: .4byte 0x04000040 +_0814821C: .4byte 0xA2400001 + thumb_func_end sub_0814818C + + thumb_func_start sub_08148220 +sub_08148220: @ 0x08148220 + push {r4, lr} + ldr r4, _08148274 + ldrh r1, [r4, #0xa] + ldr r0, _08148278 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _0814827C + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r2, _08148280 + ldr r0, [r2] + ldrb r0, [r0] + cmp r0, #0 + beq _08148258 + ldr r1, _08148284 + ldr r0, _08148288 + str r0, [r1] + movs r3, #0xf0 + lsls r3, r3, #3 + adds r0, r0, r3 + str r0, [r1, #4] + ldr r0, _0814828C + str r0, [r1, #8] + ldr r0, [r1, #8] +_08148258: + ldr r1, _08148290 + ldr r0, [r2] + ldrh r0, [r0, #0xe] + strh r0, [r1] + ldr r0, _08148294 + str r0, [r4] + ldr r0, _08148298 + str r0, [r4, #4] + ldr r0, _0814829C + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08148274: .4byte 0x040000B0 +_08148278: .4byte 0x0000C5FF +_0814827C: .4byte 0x00007FFF +_08148280: .4byte gUnknown_203A86C +_08148284: .4byte 0x040000D4 +_08148288: .4byte gUnknown_20388C8 +_0814828C: .4byte 0x800000A0 +_08148290: .4byte 0x04000050 +_08148294: .4byte gUnknown_2039048 +_08148298: .4byte 0x04000054 +_0814829C: .4byte 0xA2400001 + thumb_func_end sub_08148220 + + thumb_func_start sub_081482A0 +sub_081482A0: @ 0x081482A0 + push {lr} + ldr r0, _081482B4 + ldrh r0, [r0] + cmp r0, #0x4f + bhi _081482C0 + ldr r1, _081482B8 + ldr r0, _081482BC + ldr r0, [r0] + ldrh r0, [r0, #0x18] + b _081482C8 + .align 2, 0 +_081482B4: .4byte 0x04000006 +_081482B8: .4byte 0x04000010 +_081482BC: .4byte gUnknown_203A86C +_081482C0: + ldr r1, _081482D0 + ldr r0, _081482D4 + ldr r0, [r0] + ldrh r0, [r0, #0x1a] +_081482C8: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081482D0: .4byte 0x04000010 +_081482D4: .4byte gUnknown_203A86C + thumb_func_end sub_081482A0 + + thumb_func_start sub_081482D8 +sub_081482D8: @ 0x081482D8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _08148420 + movs r2, #0x26 + ldrsh r1, [r4, r2] + mov r8, r1 + add r0, r8 + ldrb r0, [r0] + ldr r2, _08148424 + lsls r1, r1, #2 + mov r8, r1 + adds r1, r1, r2 + ldrh r1, [r1] + subs r1, #0x20 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r2, #2 + add r2, r8 + ldrh r2, [r2] + adds r2, #0x2a + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r5, _08148428 + str r5, [sp] + movs r3, #0 + bl sub_080B55C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r0, _0814842C + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x88 + lsls r1, r1, #1 + str r5, [sp] + movs r2, #0x6a + movs r3, #0 + bl sub_080B55C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x24] + movs r3, #0x22 + ldrsh r0, [r4, r3] + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r1, _08148430 + adds r5, r5, r1 + movs r2, #0x24 + ldrsh r0, [r4, r2] + lsls r6, r0, #4 + adds r6, r6, r0 + lsls r6, r6, #2 + adds r6, r6, r1 + ldr r0, _08148434 + str r0, [r5, #0x1c] + str r0, [r6, #0x1c] + ldrb r0, [r5, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #1] + ldrb r0, [r6, #1] + orrs r0, r1 + strb r0, [r6, #1] + bl sub_080080C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0x1f + mov sb, r3 + mov r4, sb + ands r0, r4 + lsls r0, r0, #1 + ldrb r2, [r5, #3] + movs r4, #0x3f + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #3] + bl sub_080080C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sb + ands r0, r1 + lsls r0, r0, #1 + ldrb r1, [r6, #3] + ands r4, r1 + orrs r4, r0 + strb r4, [r6, #3] + ldrb r2, [r5, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r5, #1] + ldrb r0, [r6, #1] + ands r1, r0 + orrs r1, r2 + strb r1, [r6, #1] + ldrb r0, [r5, #3] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r5, #3] + ldrb r0, [r6, #3] + orrs r0, r1 + strb r0, [r6, #3] + adds r0, r5, #0 + movs r1, #1 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + adds r0, r6, #0 + movs r1, #1 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + ldrb r0, [r5, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + ldr r2, _08148438 + mov r3, r8 + adds r1, r3, r2 + movs r4, #0 + ldrsh r1, [r1, r4] + adds r2, #2 + add r8, r2 + mov r3, r8 + movs r4, #0 + ldrsh r2, [r3, r4] + movs r3, #0 + bl sub_08008190 + ldrb r0, [r6, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + ldr r1, _0814843C + movs r2, #0x80 + lsls r2, r2, #2 + movs r3, #0 + bl sub_08008190 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08148420: .4byte gUnknown_85A86A4 +_08148424: .4byte gUnknown_85A86BE +_08148428: .4byte gUnknown_201C000 +_0814842C: .4byte gUnknown_3005AF0 +_08148430: .4byte gUnknown_20205AC +_08148434: .4byte sub_08148440 +_08148438: .4byte gUnknown_85A86AA +_0814843C: .4byte 0xFFFFFE00 + thumb_func_end sub_081482D8 + + thumb_func_start sub_08148440 +sub_08148440: @ 0x08148440 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08148464 +_08148446: + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08148446 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08148464: .4byte gUnknown_85A86D4 + thumb_func_end sub_08148440 + + thumb_func_start sub_08148468 +sub_08148468: @ 0x08148468 + movs r0, #0 + bx lr + thumb_func_end sub_08148468 + + thumb_func_start sub_0814846C +sub_0814846C: @ 0x0814846C + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r1, _081484B0 + mov r0, sp + movs r2, #4 + bl memcpy + add r4, sp, #4 + ldr r1, _081484B4 + adds r0, r4, #0 + movs r2, #4 + bl memcpy + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + movs r1, #0x3c + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r5, #0x30] + movs r1, #0x3c + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + adds r4, r4, r0 + ldrh r0, [r4] + strh r0, [r5, #0x32] + movs r0, #1 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081484B0: .4byte gUnknown_85A86F0 +_081484B4: .4byte gUnknown_85A86F4 + thumb_func_end sub_0814846C + + thumb_func_start sub_081484B8 +sub_081484B8: @ 0x081484B8 + 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 _081484D6 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x84 + bgt _081484E4 + b _081484DE +_081484D6: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x67 + ble _081484E4 +_081484DE: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] +_081484E4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081484B8 + + thumb_func_start sub_081484EC +sub_081484EC: @ 0x081484EC + 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, r0, r1 + strh r0, [r2, #0x20] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _08148512 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + rsbs r0, r3, #0 + strh r0, [r2, #0x32] + movs r0, #1 + strh r0, [r2, #0x3a] +_08148512: + movs r0, #0 + pop {r1} + bx r1 + thumb_func_end sub_081484EC + + thumb_func_start sub_08148518 +sub_08148518: @ 0x08148518 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x30] + adds r0, r0, r1 + strh r0, [r2, #0x30] + ldrh r1, [r2, #0x20] + adds r1, r1, r0 + strh r1, [r2, #0x20] + adds r1, #0x1f + lsls r1, r1, #0x10 + movs r0, #0x97 + lsls r0, r0, #0x11 + cmp r1, r0 + bls _0814853C + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] +_0814853C: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08148518 + + thumb_func_start sub_08148544 +sub_08148544: @ 0x08148544 + ldr r3, _08148558 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + strh r1, [r2, #0x3c] + bx lr + .align 2, 0 +_08148558: .4byte gUnknown_20205AC + thumb_func_end sub_08148544 + + thumb_func_start sub_0814855C +sub_0814855C: @ 0x0814855C + ldr r2, _08148574 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + bx lr + .align 2, 0 +_08148574: .4byte gUnknown_20205AC + thumb_func_end sub_0814855C + + thumb_func_start sub_08148578 +sub_08148578: @ 0x08148578 + ldr r2, _0814858C + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r2, #0x3a + ldrsh r0, [r1, r2] + bx lr + .align 2, 0 +_0814858C: .4byte gUnknown_20205AC + thumb_func_end sub_08148578 + + thumb_func_start sub_08148590 +sub_08148590: @ 0x08148590 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081485C0 + ldr r2, _081485C4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081485A2: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081485A2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081485C0: .4byte gUnknown_85A86F8 +_081485C4: .4byte gUnknown_3005B60 + thumb_func_end sub_08148590 + + thumb_func_start sub_081485C8 +sub_081485C8: @ 0x081485C8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r4, #0 + movs r3, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0xc] + movs r0, #1 + strh r0, [r5, #0xe] + ldr r2, _08148640 + ldr r1, [r2] + movs r0, #0x3f + strh r0, [r1, #2] + strh r3, [r1, #4] + movs r0, #0xa0 + strh r0, [r1, #8] + ldrb r0, [r1] + strb r4, [r1] + ldr r4, _08148644 + adds r6, r2, #0 + movs r2, #0xf0 +_081485FA: + lsls r1, r3, #1 + adds r1, r1, r4 + ldr r0, [r6] + ldrh r0, [r0, #0x14] + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0xa0 + lsls r0, r0, #1 + adds r0, r0, r4 + strh r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x9f + bls _081485FA + movs r0, #2 + bl sub_08001274 + movs r0, #4 + movs r1, #0x10 + bl sub_08001200 + ldr r0, _08148648 + bl sub_080006F0 + ldr r0, _0814864C + bl sub_080006FC + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08148640: .4byte gUnknown_203A86C +_08148644: .4byte gUnknown_2039048 +_08148648: .4byte sub_0814875C +_0814864C: .4byte sub_081487E8 + thumb_func_end sub_081485C8 + + thumb_func_start sub_08148650 +sub_08148650: @ 0x08148650 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r3, r0, #0 + ldr r2, _081486CC + ldr r1, [r2] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldrh r0, [r3, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r3, #0xa] + adds r0, r0, r1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r2 + cmp r0, #0xf0 + ble _0814867C + movs r0, #0xf0 + strh r0, [r3, #0xa] +_0814867C: + ldrh r4, [r3, #0xc] + movs r0, #0xc + ldrsh r1, [r3, r0] + ldr r0, _081486D0 + ldrh r2, [r3, #0xe] + cmp r1, r0 + bgt _0814868E + adds r0, r4, r2 + strh r0, [r3, #0xc] +_0814868E: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + bgt _0814869A + lsls r0, r2, #1 + strh r0, [r3, #0xe] +_0814869A: + movs r5, #0 + ldr r7, _081486D4 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r1, r1, r7 + mov ip, r1 + mov r6, r8 +_081486A8: + lsls r0, r5, #1 + adds r2, r0, r7 + mov r1, ip + adds r4, r0, r1 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _081486D8 + ldr r1, [r6] + ldrh r0, [r3, #0xa] + ldrh r1, [r1, #0x14] + adds r0, r0, r1 + strh r0, [r2] + ldrh r1, [r3, #0xa] + movs r0, #0xf0 + subs r0, r0, r1 + b _081486EA + .align 2, 0 +_081486CC: .4byte gUnknown_203A86C +_081486D0: .4byte 0x00000FFF +_081486D4: .4byte gUnknown_20388C8 +_081486D8: + ldr r0, [r6] + ldrh r0, [r0, #0x14] + ldrh r1, [r3, #0xa] + subs r0, r0, r1 + strh r0, [r2] + ldrh r0, [r3, #0xa] + lsls r0, r0, #8 + movs r1, #0xf1 + orrs r0, r1 +_081486EA: + strh r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x9f + bls _081486A8 + movs r1, #0xa + ldrsh r0, [r3, r1] + cmp r0, #0xef + ble _08148704 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_08148704: + mov r1, r8 + ldr r0, [r1] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08148650 + + thumb_func_start sub_0814871C +sub_0814871C: @ 0x0814871C + push {lr} + ldr r1, _0814874C + ldrh r2, [r1, #0xa] + ldr r0, _08148750 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08148754 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, _08148758 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0814874C: .4byte 0x040000B0 +_08148750: .4byte 0x0000C5FF +_08148754: .4byte 0x00007FFF +_08148758: .4byte sub_08148590 + thumb_func_end sub_0814871C + + thumb_func_start sub_0814875C +sub_0814875C: @ 0x0814875C + push {r4, lr} + ldr r4, _081487BC + ldrh r1, [r4, #0xa] + ldr r0, _081487C0 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _081487C4 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r2, _081487C8 + ldr r0, _081487CC + ldr r1, [r0] + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + ldrb r0, [r1] + cmp r0, #0 + beq _081487A6 + ldr r1, _081487D0 + ldr r0, _081487D4 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _081487D8 + str r0, [r1, #8] + ldr r0, [r1, #8] +_081487A6: + ldr r0, _081487DC + str r0, [r4] + ldr r0, _081487E0 + str r0, [r4, #4] + ldr r0, _081487E4 + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081487BC: .4byte 0x040000B0 +_081487C0: .4byte 0x0000C5FF +_081487C4: .4byte 0x00007FFF +_081487C8: .4byte 0x04000048 +_081487CC: .4byte gUnknown_203A86C +_081487D0: .4byte 0x040000D4 +_081487D4: .4byte gUnknown_20388C8 +_081487D8: .4byte 0x80000140 +_081487DC: .4byte gUnknown_2039188 +_081487E0: .4byte 0x04000040 +_081487E4: .4byte 0xA2400001 + thumb_func_end sub_0814875C + + thumb_func_start sub_081487E8 +sub_081487E8: @ 0x081487E8 + push {lr} + ldr r2, _08148814 + ldrh r0, [r2] + cmp r0, #0x9f + bhi _0814880E + ldr r1, _08148818 + ldrh r0, [r2] + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _0814881C + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] +_0814880E: + pop {r0} + bx r0 + .align 2, 0 +_08148814: .4byte 0x04000006 +_08148818: .4byte gUnknown_20388C8 +_0814881C: .4byte 0x04000014 + thumb_func_end sub_081487E8 + + thumb_func_start sub_08148820 +sub_08148820: @ 0x08148820 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08148850 + ldr r2, _08148854 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08148832: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08148832 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08148850: .4byte gUnknown_85A8704 +_08148854: .4byte gUnknown_3005B60 + thumb_func_end sub_08148820 + + thumb_func_start sub_08148858 +sub_08148858: @ 0x08148858 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _08148914 + ldr r1, [r0] + movs r2, #0 + movs r0, #0x3f + strh r0, [r1, #2] + strh r2, [r1, #4] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r4, #0 + ldr r5, _08148918 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r0, r0, r5 + mov ip, r0 + mov r8, r4 + movs r1, #0xf0 + mov sb, r1 +_0814888C: + lsls r2, r4, #1 + mov r7, ip + adds r1, r2, r7 + ldr r0, _08148914 + ldr r3, [r0] + ldrh r0, [r3, #0x14] + strh r0, [r1] + adds r1, r4, #0 + adds r1, #0xa0 + lsls r1, r1, #1 + adds r0, r1, r7 + mov r7, sb + strh r7, [r0] + adds r2, r2, r5 + ldrh r0, [r3, #0x14] + strh r0, [r2] + adds r1, r1, r5 + mov r0, sb + strh r0, [r1] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r4, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + mov r7, r8 + strh r7, [r0] + adds r1, #0xa0 + adds r0, r4, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + subs r1, #0xe0 + strh r1, [r0] + movs r7, #0xa0 + lsls r7, r7, #2 + adds r0, r4, r7 + lsls r0, r0, #1 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x9f + bls _0814888C + movs r0, #0 + strh r0, [r6, #0x10] + strh r0, [r6, #0x12] + movs r0, #7 + strh r0, [r6, #0x14] + movs r0, #2 + bl sub_08001274 + ldr r0, _0814891C + bl sub_080006F0 + ldr r0, _08148920 + bl sub_080006FC + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #1 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08148914: .4byte gUnknown_203A86C +_08148918: .4byte gUnknown_20388C8 +_0814891C: .4byte sub_0814875C +_08148920: .4byte sub_081487E8 + thumb_func_end sub_08148858 + + thumb_func_start sub_08148924 +sub_08148924: @ 0x08148924 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + mov sb, r0 + ldr r1, _081489CC + mov r0, sp + movs r2, #2 + bl memcpy + add r4, sp, #4 + ldr r1, _081489D0 + adds r0, r4, #0 + movs r2, #4 + bl memcpy + ldr r2, _081489D4 + ldr r1, [r2] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + str r0, [sp, #8] + mov sl, r0 + mov r1, sb + movs r3, #0x12 + ldrsh r0, [r1, r3] + ldr r1, [sp, #8] + cmp r1, r0 + ble _08148964 + b _08148B28 +_08148964: + movs r7, #0 + mov r2, sl + rsbs r2, r2, #0 + str r2, [sp, #0xc] + mov r3, sl + adds r3, #1 + str r3, [sp, #0x10] +_08148972: + movs r6, #0 + mov r0, sp + adds r0, r0, r7 + mov ip, r0 +_0814897A: + lsls r0, r6, #1 + add r0, sp + adds r0, #4 + movs r1, #0 + ldrsh r0, [r0, r1] + ldr r2, [sp, #0xc] + muls r0, r2, r0 + lsls r0, r0, #1 + mov r3, ip + ldrb r3, [r3] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + blt _08148A26 + cmp r0, #0x4f + bne _081489A2 + cmp r7, #1 + beq _08148A26 +_081489A2: + lsls r1, r0, #1 + ldr r0, _081489D8 + adds r4, r1, r0 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r0, r2 + adds r3, r1, r0 + ldr r0, _081489DC + adds r1, r1, r0 + ldrh r2, [r4] + cmp r2, #0xef + bls _081489E0 + movs r1, #0xf0 + strh r1, [r4] + ldr r0, [sp, #8] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + b _08148A00 + .align 2, 0 +_081489CC: .4byte gUnknown_85A8714 +_081489D0: .4byte gUnknown_85A8716 +_081489D4: .4byte gUnknown_203A86C +_081489D8: .4byte gUnknown_2038B48 +_081489DC: .4byte gUnknown_2038DC8 +_081489E0: + ldrh r0, [r3] + lsrs r0, r0, #8 + adds r0, r2, r0 + strh r0, [r4] + ldrh r0, [r1] + cmp r0, #0x7f + bhi _081489F2 + lsls r0, r0, #1 + strh r0, [r1] +_081489F2: + ldrh r2, [r3] + ldr r0, _08148AA0 + cmp r2, r0 + bhi _08148A00 + ldrh r0, [r1] + adds r0, r2, r0 + strh r0, [r3] +_08148A00: + lsls r0, r5, #0x10 + asrs r0, r0, #0xf + ldr r1, _08148AA4 + adds r2, r0, r1 + ldr r1, _08148AA8 + adds r3, r0, r1 + ldr r0, _08148AAC + ldr r1, [r0] + ldrh r0, [r4] + ldrh r1, [r1, #0x14] + adds r0, r0, r1 + strh r0, [r2] + ldrh r0, [r4] + movs r1, #0xf0 + subs r0, r1, r0 + strh r0, [r3] + mov r2, sl + cmp r2, #0 + beq _08148A30 +_08148A26: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #1 + bls _0814897A +_08148A30: + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #1 + bls _08148972 + movs r7, #0 + ldr r3, _08148AB0 + mov r8, r3 +_08148A40: + movs r6, #0 + mov r0, sp + adds r0, r0, r7 + mov ip, r0 + adds r1, r7, #1 + str r1, [sp, #0x14] +_08148A4C: + mov r2, ip + ldrb r1, [r2] + adds r1, #1 + lsls r0, r6, #1 + add r0, sp + adds r0, #4 + movs r3, #0 + ldrsh r0, [r0, r3] + ldr r2, [sp, #0xc] + muls r0, r2, r0 + lsls r0, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xa0 + bgt _08148B00 + cmp r1, #0x50 + bne _08148A76 + cmp r7, #1 + beq _08148B00 +_08148A76: + lsls r1, r1, #1 + mov r3, r8 + adds r4, r1, r3 + movs r0, #0xa0 + lsls r0, r0, #1 + add r0, r8 + adds r3, r1, r0 + ldr r0, _08148AB4 + adds r1, r1, r0 + ldrh r2, [r4] + cmp r2, #0xef + bls _08148AB8 + movs r1, #0xf0 + strh r1, [r4] + ldr r0, [sp, #8] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + b _08148AD8 + .align 2, 0 +_08148AA0: .4byte 0x00000FFF +_08148AA4: .4byte gUnknown_20388C8 +_08148AA8: .4byte gUnknown_2038A08 +_08148AAC: .4byte gUnknown_203A86C +_08148AB0: .4byte gUnknown_2038B48 +_08148AB4: .4byte gUnknown_2038DC8 +_08148AB8: + ldrh r0, [r3] + lsrs r0, r0, #8 + adds r0, r2, r0 + strh r0, [r4] + ldrh r0, [r1] + cmp r0, #0x7f + bhi _08148ACA + lsls r0, r0, #1 + strh r0, [r1] +_08148ACA: + ldrh r2, [r3] + ldr r0, _08148B84 + cmp r2, r0 + bhi _08148AD8 + ldrh r0, [r1] + adds r0, r2, r0 + strh r0, [r3] +_08148AD8: + lsls r0, r5, #0x10 + asrs r0, r0, #0xf + ldr r1, _08148B88 + adds r2, r0, r1 + ldr r1, _08148B8C + adds r3, r0, r1 + ldr r1, _08148B90 + ldr r0, [r1] + ldrh r1, [r0, #0x14] + ldrh r0, [r4] + subs r1, r1, r0 + strh r1, [r2] + ldrh r0, [r4] + lsls r0, r0, #8 + movs r1, #0xf1 + orrs r0, r1 + strh r0, [r3] + mov r2, sl + cmp r2, #0 + beq _08148B0A +_08148B00: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #1 + bls _08148A4C +_08148B0A: + ldr r3, [sp, #0x14] + lsls r0, r3, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #1 + bls _08148A40 + ldr r1, [sp, #0x10] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + mov r2, sb + movs r3, #0x12 + ldrsh r0, [r2, r3] + cmp sl, r0 + bgt _08148B28 + b _08148964 +_08148B28: + mov r1, sb + ldrh r0, [r1, #0x10] + subs r0, #1 + strh r0, [r1, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08148B3A + movs r0, #0 + strh r0, [r1, #0x10] +_08148B3A: + mov r2, sb + movs r3, #0x10 + ldrsh r0, [r2, r3] + cmp r0, #0 + bgt _08148B58 + movs r1, #0x12 + ldrsh r0, [r2, r1] + adds r0, #1 + cmp r0, #0x14 + bgt _08148B58 + ldrh r0, [r2, #0x14] + strh r0, [r2, #0x10] + ldrh r0, [r2, #0x12] + adds r0, #1 + strh r0, [r2, #0x12] +_08148B58: + ldr r2, [sp, #8] + cmp r2, #0x9f + bls _08148B66 + mov r3, sb + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_08148B66: + ldr r0, _08148B90 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08148B84: .4byte 0x00000FFF +_08148B88: .4byte gUnknown_20388C8 +_08148B8C: .4byte gUnknown_2038A08 +_08148B90: .4byte gUnknown_203A86C + thumb_func_end sub_08148924 + + thumb_func_start sub_08148B94 +sub_08148B94: @ 0x08148B94 + push {r4, r5, lr} + adds r3, r0, #0 + movs r2, #1 + ldr r5, _08148BCC + movs r1, #0 + ldr r4, _08148BD0 +_08148BA0: + lsls r0, r1, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0xf0 + beq _08148BB0 + cmp r0, r5 + beq _08148BB0 + movs r2, #0 +_08148BB0: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x9f + bls _08148BA0 + cmp r2, #1 + bne _08148BC4 + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] +_08148BC4: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08148BCC: .4byte 0x0000FF10 +_08148BD0: .4byte gUnknown_2039048 + thumb_func_end sub_08148B94 + + thumb_func_start sub_08148BD4 +sub_08148BD4: @ 0x08148BD4 + push {lr} + ldr r1, _08148C04 + ldrh r2, [r1, #0xa] + ldr r0, _08148C08 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08148C0C + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, _08148C10 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08148C04: .4byte 0x040000B0 +_08148C08: .4byte 0x0000C5FF +_08148C0C: .4byte 0x00007FFF +_08148C10: .4byte sub_08148820 + thumb_func_end sub_08148BD4 + + thumb_func_start sub_08148C14 +sub_08148C14: @ 0x08148C14 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08148C44 + ldr r2, _08148C48 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08148C26: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08148C26 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08148C44: .4byte gUnknown_85A871C +_08148C48: .4byte gUnknown_3005B60 + thumb_func_end sub_08148C14 + + thumb_func_start sub_08148C4C +sub_08148C4C: @ 0x08148C4C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08148C7C + ldr r2, _08148C80 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08148C5E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08148C5E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08148C7C: .4byte gUnknown_85A8728 +_08148C80: .4byte gUnknown_3005B60 + thumb_func_end sub_08148C4C + + thumb_func_start sub_08148C84 +sub_08148C84: @ 0x08148C84 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _08148CD8 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #2] + movs r0, #0x3f + strh r0, [r1, #4] + movs r0, #0xf0 + strh r0, [r1, #6] + movs r0, #0xa0 + strh r0, [r1, #8] + ldr r0, _08148CDC + movs r2, #0 + movs r1, #0x9f + ldr r3, _08148CE0 + adds r0, r0, r3 +_08148CAE: + strh r2, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _08148CAE + movs r4, #0 + ldr r0, _08148CE4 + bl sub_080006F0 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + strh r0, [r5, #0xa] + adds r0, #0xff + strh r0, [r5, #0xc] + strh r4, [r5, #0x16] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08148CD8: .4byte gUnknown_203A86C +_08148CDC: .4byte gUnknown_20388C8 +_08148CE0: .4byte 0x000008BE +_08148CE4: .4byte sub_08147028 + thumb_func_end sub_08148C84 + + thumb_func_start sub_08148CE8 +sub_08148CE8: @ 0x08148CE8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x16 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08148D2C + ldr r1, _08148D20 + ldrh r2, [r1, #0xa] + ldr r0, _08148D24 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08148D28 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + movs r0, #0 + bl sub_080006F0 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _08148D9E + .align 2, 0 +_08148D20: .4byte 0x040000B0 +_08148D24: .4byte 0x0000C5FF +_08148D28: .4byte 0x00007FFF +_08148D2C: + ldr r5, _08148D88 + ldr r1, [r5] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldrh r2, [r4, #0xc] + movs r0, #0xc + ldrsh r1, [r4, r0] + ldr r0, _08148D8C + cmp r1, r0 + bgt _08148D48 + adds r0, r2, #0 + adds r0, #0x80 + strh r0, [r4, #0xc] +_08148D48: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0x9f + bgt _08148D5C + ldrh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + adds r0, r1, r0 + strh r0, [r4, #0xa] +_08148D5C: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xa0 + ble _08148D68 + movs r0, #0xa0 + strh r0, [r4, #0xa] +_08148D68: + ldr r0, _08148D90 + movs r2, #0xa + ldrsh r3, [r4, r2] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A0D4 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xa0 + bne _08148D94 + movs r0, #1 + strh r0, [r4, #0x16] + bl sub_0814A044 + b _08148D9E + .align 2, 0 +_08148D88: .4byte gUnknown_203A86C +_08148D8C: .4byte 0x000003FF +_08148D90: .4byte gUnknown_20388C8 +_08148D94: + ldr r0, [r5] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] +_08148D9E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08148CE8 + + thumb_func_start sub_08148DA8 +sub_08148DA8: @ 0x08148DA8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _08148E20 + ldr r0, [r6] + ldrb r1, [r0] + movs r5, #0 + strb r5, [r0] + ldrh r1, [r4, #0x16] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08148DCA + adds r0, r1, #1 + strh r0, [r4, #0x16] + movs r0, #0x30 + strh r0, [r4, #0xa] + strh r5, [r4, #0x14] +_08148DCA: + ldr r1, _08148E24 + movs r2, #0x14 + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r4, #0xa] + adds r0, r0, r1 + strh r0, [r4, #0xa] + movs r2, #0x14 + ldrsh r1, [r4, r2] + adds r1, #1 + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + strh r1, [r4, #0x14] + ldr r0, _08148E28 + movs r1, #0xa + ldrsh r3, [r4, r1] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A0D4 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #8 + bgt _08148E0C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + strh r5, [r4, #0x16] +_08148E0C: + ldr r0, [r6] + ldrb r1, [r0] + adds r1, #1 + ldrb r2, [r0] + strb r1, [r0] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08148E20: .4byte gUnknown_203A86C +_08148E24: .4byte gUnknown_85A8730 +_08148E28: .4byte gUnknown_20388C8 + thumb_func_end sub_08148DA8 + + thumb_func_start sub_08148E2C +sub_08148E2C: @ 0x08148E2C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08148EA8 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldrh r1, [r4, #0x16] + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08148E4E + adds r0, r1, #1 + strh r0, [r4, #0x16] + movs r0, #2 + strh r0, [r4, #0x12] + strh r0, [r4, #0x14] +_08148E4E: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xa0 + ble _08148E5A + movs r0, #0xa0 + strh r0, [r4, #0xa] +_08148E5A: + ldr r0, _08148EAC + movs r2, #0xa + ldrsh r3, [r4, r2] + movs r1, #0x78 + movs r2, #0x50 + bl sub_0814A0D4 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xa0 + bne _08148E96 + ldr r1, _08148EB0 + ldrh r2, [r1, #0xa] + ldr r0, _08148EB4 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08148EB8 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_08148E96: + ldrh r2, [r4, #0x12] + ldrb r0, [r4, #0x12] + cmp r0, #0x80 + bgt _08148EBC + ldrh r1, [r4, #0x14] + adds r0, r2, #0 + adds r0, #8 + b _08148EC8 + .align 2, 0 +_08148EA8: .4byte gUnknown_203A86C +_08148EAC: .4byte gUnknown_20388C8 +_08148EB0: .4byte 0x040000B0 +_08148EB4: .4byte 0x0000C5FF +_08148EB8: .4byte 0x00007FFF +_08148EBC: + ldrh r0, [r4, #0x14] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r2, #0 + adds r0, #0x10 +_08148EC8: + strh r0, [r4, #0x12] + movs r0, #0xff + ands r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r2, #0 + bl sub_0806EFB8 + ldrh r2, [r4, #0xa] + adds r0, r0, r2 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08148EE8 + movs r0, #1 + strh r0, [r4, #0xa] +_08148EE8: + ldrh r0, [r4, #0x12] + lsls r1, r0, #0x10 + asrs r0, r1, #0x10 + cmp r0, #0xfe + ble _08148EFC + asrs r0, r1, #0x18 + strh r0, [r4, #0x12] + ldrh r0, [r4, #0x14] + adds r0, #1 + strh r0, [r4, #0x14] +_08148EFC: + ldr r0, _08148F10 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08148F10: .4byte gUnknown_203A86C + thumb_func_end sub_08148E2C + + thumb_func_start sub_08148F14 +sub_08148F14: @ 0x08148F14 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08148F44 + ldr r2, _08148F48 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08148F26: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08148F26 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08148F44: .4byte gUnknown_85A8734 +_08148F48: .4byte gUnknown_3005B60 + thumb_func_end sub_08148F14 + + thumb_func_start sub_08148F4C +sub_08148F4C: @ 0x08148F4C + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + ldr r4, _08148FF0 + ldr r1, [sp, #8] + adds r0, r4, #0 + movs r2, #0x10 + bl CpuSet + movs r0, #0xe0 + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r1, [sp, #8] + adds r1, #0x40 + adds r0, r4, #0 + movs r2, #0x10 + bl CpuSet + mov r1, sp + movs r2, #0xf0 + lsls r2, r2, #8 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _08148FF4 + mov r0, sp + bl CpuSet + ldr r0, _08148FF8 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r1, #0 + movs r4, #1 + movs r0, #1 + strh r0, [r5, #0xe] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + ldr r5, _08148FFC + strb r1, [r5] + ldr r0, _08149000 + strh r0, [r5, #2] + strb r4, [r5, #4] + movs r2, #0x9a + lsls r2, r2, #1 + strh r2, [r5, #6] + strb r1, [r5, #8] + strb r1, [r5, #0xc] + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r5, #0xe] + strb r4, [r5, #0x10] + strh r2, [r5, #0x12] + strb r1, [r5, #0x14] + strb r1, [r5, #0x18] + ldr r2, _08149004 + strh r2, [r5, #0x1a] + strb r4, [r5, #0x1c] + ldr r3, _08149008 + strh r3, [r5, #0x1e] + adds r0, r5, #0 + adds r0, #0x20 + strb r1, [r0] + adds r0, #4 + strb r1, [r0] + strh r2, [r5, #0x26] + adds r0, #4 + strb r4, [r0] + strh r3, [r5, #0x2a] + adds r0, #4 + strb r1, [r0] + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08148FF0: .4byte gUnknown_859A780 +_08148FF4: .4byte 0x01000400 +_08148FF8: .4byte gUnknown_85A8984 +_08148FFC: .4byte gUnknown_3001210 +_08149000: .4byte 0x0000FFFF +_08149004: .4byte 0x0000FFFD +_08149008: .4byte 0x00000133 + thumb_func_end sub_08148F4C + + thumb_func_start sub_0814900C +sub_0814900C: @ 0x0814900C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + mov r8, r0 + movs r7, #1 + add r1, sp, #4 + mov r0, sp + bl sub_0814A018 + movs r0, #0 +_08149022: + movs r5, #0 + adds r6, r0, #1 +_08149026: + ldr r1, _081490B8 + lsrs r0, r5, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + ldr r2, _081490BC + adds r4, r1, r2 + adds r1, r4, #0 + bl sub_08149108 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0814908A + movs r7, #0 + ldrh r2, [r4, #2] + movs r0, #1 + ands r0, r5 + cmp r0, #1 + bne _08149060 + ldr r0, _081490C0 + adds r1, r0, #0 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 +_08149060: + lsls r0, r2, #0x10 + asrs r1, r0, #0x10 + adds r0, r1, #0 + cmp r1, #0 + bge _0814906C + adds r0, #0x1f +_0814906C: + asrs r2, r0, #5 + lsls r0, r2, #5 + subs r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r2, #5 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + ldr r0, [sp] + lsls r1, r1, #1 + adds r1, r1, r0 + ldr r2, _081490C4 + adds r0, r2, #0 + strh r0, [r1] +_0814908A: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #3 + bls _08149026 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08149022 + cmp r7, #1 + bne _081490A8 + mov r1, r8 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081490A8: + movs r0, #0 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081490B8: .4byte gUnknown_85A87E8 +_081490BC: .4byte gUnknown_3001210 +_081490C0: .4byte 0x0000027D +_081490C4: .4byte 0x0000F002 + thumb_func_end sub_0814900C + + thumb_func_start sub_081490C8 +sub_081490C8: @ 0x081490C8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _081490FC + ldrh r2, [r1, #0xa] + ldr r0, _08149100 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08149104 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081490FC: .4byte 0x040000B0 +_08149100: .4byte 0x0000C5FF +_08149104: .4byte 0x00007FFF + thumb_func_end sub_081490C8 + + thumb_func_start sub_08149108 +sub_08149108: @ 0x08149108 + push {r4, lr} + adds r2, r1, #0 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r3, [r1] + ldrb r0, [r2, #4] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r4, #0 + ldrsh r1, [r0, r4] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0814918E + ldr r1, _0814914C + ldrh r0, [r3] + strh r0, [r1] + ldrh r0, [r3, #2] + strh r0, [r1] + ldrh r0, [r3, #4] + strh r0, [r1] + ldrh r0, [r3, #6] + strh r0, [r1] + movs r1, #0 + ldrsh r0, [r3, r1] + cmp r0, #2 + beq _08149160 + cmp r0, #2 + bgt _08149150 + cmp r0, #1 + beq _0814915A + b _08149172 + .align 2, 0 +_0814914C: .4byte gUnknown_3001208 +_08149150: + cmp r0, #3 + beq _08149166 + cmp r0, #4 + beq _0814916C + b _08149172 +_0814915A: + ldrh r0, [r2, #2] + adds r0, #1 + b _08149170 +_08149160: + ldrh r0, [r2, #2] + subs r0, #1 + b _08149170 +_08149166: + ldrh r0, [r2, #2] + subs r0, #0x20 + b _08149170 +_0814916C: + ldrh r0, [r2, #2] + adds r0, #0x20 +_08149170: + strh r0, [r2, #2] +_08149172: + movs r4, #2 + ldrsh r1, [r2, r4] + ldr r0, _08149194 + cmp r1, r0 + bgt _0814918E + ldrb r0, [r2, #4] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r4, #0 + ldrsh r1, [r0, r4] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08149198 +_0814918E: + movs r0, #0 + b _081491F8 + .align 2, 0 +_08149194: .4byte 0x0000027F +_08149198: + ldrb r0, [r2, #8] + cmp r0, #0 + bne _081491B4 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bne _081491B4 + movs r0, #1 + strb r0, [r2, #8] + strb r0, [r2, #4] + ldrh r0, [r2, #6] + strh r0, [r2, #2] + movs r0, #4 + strb r0, [r2] +_081491B4: + ldrb r0, [r2, #4] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r3, #2 + ldrsh r1, [r2, r3] + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r1, r0 + bne _081491F6 + ldrb r0, [r2] + adds r1, r0, #1 + strb r1, [r2] + ldrb r0, [r2, #8] + cmp r0, #1 + bne _081491E4 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _081491F6 + ldrb r0, [r2, #4] + adds r0, #1 + strb r0, [r2, #4] + movs r0, #4 + b _081491F4 +_081491E4: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _081491F6 + ldrb r0, [r2, #4] + adds r0, #1 + strb r0, [r2, #4] + movs r0, #0 +_081491F4: + strb r0, [r2] +_081491F6: + movs r0, #1 +_081491F8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08149108 + + thumb_func_start sub_08149200 +sub_08149200: @ 0x08149200 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08149230 + ldr r2, _08149234 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08149212: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08149212 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08149230: .4byte gUnknown_85A87F0 +_08149234: .4byte gUnknown_3005B60 + thumb_func_end sub_08149200 + + thumb_func_start sub_08149238 +sub_08149238: @ 0x08149238 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _0814927C + mov r0, sp + bl CpuSet + ldr r0, _08149280 + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _08149284 + ldr r1, [sp, #4] + bl LZ77UnCompVram + ldrh r0, [r4, #8] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #8] + strh r1, [r4, #0xa] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814927C: .4byte 0x01000400 +_08149280: .4byte gUnknown_859DFCC +_08149284: .4byte gUnknown_859E538 + thumb_func_end sub_08149238 + + thumb_func_start sub_08149288 +sub_08149288: @ 0x08149288 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r5, [r4, r0] + adds r0, r5, #0 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081492C0 + adds r0, r5, #0 + movs r1, #0x1e + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r1, _081492E0 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_081492C0: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3a + ble _081492D8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0xa] +_081492D8: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081492E0: .4byte gUnknown_859EB50 + thumb_func_end sub_08149288 + + thumb_func_start sub_081492E4 +sub_081492E4: @ 0x081492E4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r5, [r4, r0] + adds r0, r5, #0 + movs r1, #5 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08149312 + adds r0, r5, #0 + movs r1, #5 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0xb + ldr r1, _08149338 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_08149312: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x44 + ble _0814932E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0xa] + movs r0, #0x1e + strh r0, [r4, #0x18] +_0814932E: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08149338: .4byte gUnknown_859ED50 + thumb_func_end sub_081492E4 + + thumb_func_start sub_0814933C +sub_0814933C: @ 0x0814933C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814936C + ldr r2, _08149370 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814934E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814934E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814936C: .4byte gUnknown_85A8810 +_08149370: .4byte gUnknown_3005B60 + thumb_func_end sub_0814933C + + thumb_func_start sub_08149374 +sub_08149374: @ 0x08149374 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r1, _081493FC + movs r0, #8 + bl sub_08001144 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _08149400 + mov r0, sp + bl CpuSet + ldr r0, _08149404 + ldr r1, [sp, #8] + movs r2, #0x80 + lsls r2, r2, #5 + bl CpuSet + ldr r0, _08149408 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #0x20] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r0, _0814940C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r2, #0 + ldr r3, _08149410 + movs r6, #0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r5, r3, r0 + movs r4, #0x80 + lsls r4, r4, #1 +_081493D6: + lsls r1, r2, #1 + adds r0, r1, r3 + strh r6, [r0] + adds r1, r1, r5 + strh r4, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x9f + bls _081493D6 + ldr r0, _08149414 + bl sub_080006F0 + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081493FC: .4byte 0x00009A08 +_08149400: .4byte 0x01000400 +_08149404: .4byte gUnknown_859F150 +_08149408: .4byte gUnknown_203A86C +_0814940C: .4byte gUnknown_859EFF0 +_08149410: .4byte gUnknown_20388C8 +_08149414: .4byte sub_081495C8 + thumb_func_end sub_08149374 + + thumb_func_start sub_08149418 +sub_08149418: @ 0x08149418 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + add r1, sp, #4 + mov r0, sp + bl sub_0814A018 + ldr r0, _08149444 + ldr r1, [sp] + movs r2, #0x80 + lsls r2, r2, #4 + bl CpuSet + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149444: .4byte gUnknown_85A6690 + thumb_func_end sub_08149418 + + thumb_func_start sub_08149448 +sub_08149448: @ 0x08149448 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0xa] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08149474 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _08149460 + adds r0, #3 +_08149460: + lsls r0, r0, #0xe + lsrs r0, r0, #0x10 + adds r0, #5 + lsls r0, r0, #5 + ldr r1, _08149494 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_08149474: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _0814948C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + strh r0, [r4, #0xa] +_0814948C: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149494: .4byte gUnknown_859EF50 + thumb_func_end sub_08149448 + + thumb_func_start sub_08149498 +sub_08149498: @ 0x08149498 + push {lr} + sub sp, #4 + adds r1, r0, #0 + ldrh r0, [r1, #0xa] + adds r0, #1 + movs r2, #0 + strh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x14 + ble _081494C2 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + strh r2, [r1, #0xa] + ldr r0, _081494CC + str r2, [sp] + movs r1, #2 + movs r3, #0x10 + bl sub_080A139C +_081494C2: + movs r0, #0 + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_081494CC: .4byte 0xFFFF8000 + thumb_func_end sub_08149498 + + thumb_func_start sub_081494D0 +sub_081494D0: @ 0x081494D0 + push {lr} + adds r2, r0, #0 + ldr r0, _081494F4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081494EE + ldr r0, _081494F8 + ldr r1, [r0] + movs r0, #1 + strh r0, [r1, #0x20] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_081494EE: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081494F4: .4byte gUnknown_2037C74 +_081494F8: .4byte gUnknown_203A86C + thumb_func_end sub_081494D0 + + thumb_func_start sub_081494FC +sub_081494FC: @ 0x081494FC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08149524 + movs r1, #8 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _08149528 + movs r1, #0 + movs r2, #0 + bl sub_080A22E8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149524: .4byte 0x00007FFF +_08149528: .4byte 0xFFFF8000 + thumb_func_end sub_081494FC + + thumb_func_start sub_0814952C +sub_0814952C: @ 0x0814952C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + ldrsh r5, [r4, r0] + adds r0, r5, #0 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0814955A + adds r0, r5, #0 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r1, _081495B8 + adds r0, r0, r1 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 +_0814955A: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + ble _081495B0 + ldr r0, _081495BC + ldr r1, [r0] + movs r0, #0 + strh r0, [r1, #2] + movs r0, #0x3f + strh r0, [r1, #4] + movs r0, #0xf0 + strh r0, [r1, #6] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r5, _081495C0 + ldr r3, _081495C4 + movs r2, #0 +_08149584: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x9f + bls _08149584 + adds r0, r5, #0 + bl sub_080006F0 + ldrh r0, [r4, #8] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #8] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r4, #0xc] + strh r2, [r4, #0x16] + movs r0, #0 + bl sub_08001220 +_081495B0: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081495B8: .4byte gUnknown_859EF50 +_081495BC: .4byte gUnknown_203A86C +_081495C0: .4byte sub_08147028 +_081495C4: .4byte gUnknown_2039048 + thumb_func_end sub_0814952C + + thumb_func_start sub_081495C8 +sub_081495C8: @ 0x081495C8 + push {lr} + ldr r1, _081495F4 + ldrh r2, [r1, #0xa] + ldr r0, _081495F8 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _081495FC + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_08149FEC + ldr r0, _08149600 + ldr r0, [r0] + movs r1, #0x20 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08149608 + ldr r2, _08149604 + b _08149614 + .align 2, 0 +_081495F4: .4byte 0x040000B0 +_081495F8: .4byte 0x0000C5FF +_081495FC: .4byte 0x00007FFF +_08149600: .4byte gUnknown_203A86C +_08149604: .4byte gUnknown_20388C8 +_08149608: + ldr r2, _08149628 + cmp r0, #1 + bne _08149614 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r2, r2, r0 +_08149614: + ldr r1, _0814962C + str r2, [r1] + ldr r0, _08149630 + str r0, [r1, #4] + ldr r0, _08149634 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r0} + bx r0 + .align 2, 0 +_08149628: .4byte gUnknown_20388C8 +_0814962C: .4byte 0x040000B0 +_08149630: .4byte 0x04000012 +_08149634: .4byte 0xA2400001 + thumb_func_end sub_081495C8 + + thumb_func_start sub_08149638 +sub_08149638: @ 0x08149638 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08149668 + ldr r2, _0814966C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814964A: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814964A + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08149668: .4byte gUnknown_85A883C +_0814966C: .4byte gUnknown_3005B60 + thumb_func_end sub_08149638 + + thumb_func_start sub_08149670 +sub_08149670: @ 0x08149670 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _081496D8 + ldr r1, [r0] + movs r2, #0 + movs r0, #0xbf + strh r0, [r1, #0xe] + strh r2, [r1, #0x12] + movs r0, #0x1e + strh r0, [r1, #2] + movs r0, #0x3f + strh r0, [r1, #4] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r2, _081496DC + movs r4, #0 + movs r3, #0xf0 +_0814969C: + lsls r0, r1, #1 + adds r0, r0, r2 + strh r4, [r0] + adds r0, r1, #0 + adds r0, #0xa0 + lsls r0, r0, #1 + adds r0, r0, r2 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x9f + bls _0814969C + movs r0, #2 + bl sub_08001274 + ldr r0, _081496E0 + bl sub_080006FC + ldr r0, _081496E4 + bl sub_080006F0 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081496D8: .4byte gUnknown_203A86C +_081496DC: .4byte gUnknown_2039048 +_081496E0: .4byte sub_08149900 +_081496E4: .4byte sub_08149834 + thumb_func_end sub_08149670 + + thumb_func_start sub_081496E8 +sub_081496E8: @ 0x081496E8 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r6, r0, #0 + ldr r1, _08149750 + mov r0, sp + movs r2, #0x10 + bl memcpy + movs r5, #0 + movs r4, #0 +_081496FC: + ldr r0, _08149754 + bl sub_08006BCC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08149758 + adds r2, r1, r0 + movs r0, #0xf0 + strh r0, [r2, #0x20] + strh r4, [r2, #0x22] + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + lsls r0, r1, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r2, #0x38] + adds r1, #1 + lsls r1, r1, #0x10 + lsls r0, r4, #0x10 + movs r3, #0xa0 + lsls r3, r3, #0xd + adds r0, r0, r3 + lsrs r4, r0, #0x10 + lsrs r5, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #7 + ble _081496FC + ldrh r0, [r2, #0x3a] + adds r0, #1 + strh r0, [r2, #0x3a] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08149750: .4byte gUnknown_85A8850 +_08149754: .4byte sub_08149924 +_08149758: .4byte gUnknown_20205AC + thumb_func_end sub_081496E8 + + thumb_func_start sub_0814975C +sub_0814975C: @ 0x0814975C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08149790 + ldr r1, [r2] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + ldr r0, [r2] + movs r1, #0x20 + ldrsh r0, [r0, r1] + cmp r0, #7 + ble _08149786 + movs r0, #1 + rsbs r0, r0, #0 + ldr r2, _08149794 + movs r1, #0x10 + bl sub_080A22E8 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_08149786: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149790: .4byte gUnknown_203A86C +_08149794: .4byte 0x00007FFF + thumb_func_end sub_0814975C + + thumb_func_start sub_08149798 +sub_08149798: @ 0x08149798 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, _081497EC + ldr r0, [r4] + ldrb r1, [r0] + movs r5, #0 + strb r5, [r0] + ldr r1, _081497F0 + ldrh r2, [r1, #0xa] + ldr r0, _081497F4 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _081497F8 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + ldr r1, [r4] + movs r0, #0xf0 + strh r0, [r1, #6] + strh r5, [r1, #0x12] + movs r0, #0xff + strh r0, [r1, #0xe] + movs r0, #0x3f + strh r0, [r1, #2] + ldr r0, _081497FC + bl sub_080006F0 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081497EC: .4byte gUnknown_203A86C +_081497F0: .4byte 0x040000B0 +_081497F4: .4byte 0x0000C5FF +_081497F8: .4byte 0x00007FFF +_081497FC: .4byte sub_081498C4 + thumb_func_end sub_08149798 + + thumb_func_start sub_08149800 +sub_08149800: @ 0x08149800 + push {lr} + ldr r0, _0814982C + ldr r1, [r0] + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x10 + bls _08149826 + bl sub_0814A044 + ldr r0, _08149830 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_08149826: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0814982C: .4byte gUnknown_203A86C +_08149830: .4byte sub_08149638 + thumb_func_end sub_08149800 + + thumb_func_start sub_08149834 +sub_08149834: @ 0x08149834 + push {r4, lr} + ldr r4, _08149898 + ldrh r1, [r4, #0xa] + ldr r0, _0814989C + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _081498A0 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r2, _081498A4 + ldr r0, _081498A8 + ldr r1, [r0] + ldrh r0, [r1, #0xe] + strh r0, [r2] + subs r2, #8 + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + ldrb r0, [r1] + cmp r0, #0 + beq _08149884 + ldr r1, _081498AC + ldr r0, _081498B0 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _081498B4 + str r0, [r1, #8] + ldr r0, [r1, #8] +_08149884: + ldr r0, _081498B8 + str r0, [r4] + ldr r0, _081498BC + str r0, [r4, #4] + ldr r0, _081498C0 + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149898: .4byte 0x040000B0 +_0814989C: .4byte 0x0000C5FF +_081498A0: .4byte 0x00007FFF +_081498A4: .4byte 0x04000050 +_081498A8: .4byte gUnknown_203A86C +_081498AC: .4byte 0x040000D4 +_081498B0: .4byte gUnknown_20388C8 +_081498B4: .4byte 0x80000140 +_081498B8: .4byte gUnknown_2039188 +_081498BC: .4byte 0x04000040 +_081498C0: .4byte 0xA2400001 + thumb_func_end sub_08149834 + + thumb_func_start sub_081498C4 +sub_081498C4: @ 0x081498C4 + push {lr} + bl sub_08149FEC + ldr r1, _081498F8 + ldr r0, _081498FC + ldr r2, [r0] + ldrh r0, [r2, #0x12] + strh r0, [r1] + subs r1, #4 + ldrh r0, [r2, #0xe] + strh r0, [r1] + subs r1, #8 + ldrh r0, [r2, #2] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r2, #4] + strh r0, [r1] + subs r1, #0xa + ldrh r0, [r2, #6] + strh r0, [r1] + adds r1, #4 + ldrh r0, [r2, #8] + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081498F8: .4byte 0x04000054 +_081498FC: .4byte gUnknown_203A86C + thumb_func_end sub_081498C4 + + thumb_func_start sub_08149900 +sub_08149900: @ 0x08149900 + ldr r2, _08149918 + ldr r1, _0814991C + ldr r0, _08149920 + ldrh r0, [r0] + lsls r0, r0, #1 + movs r3, #0xf0 + lsls r3, r3, #3 + adds r1, r1, r3 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_08149918: .4byte 0x04000054 +_0814991C: .4byte gUnknown_20388C8 +_08149920: .4byte 0x04000006 + thumb_func_end sub_08149900 + + thumb_func_start sub_08149924 +sub_08149924: @ 0x08149924 + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x38] + movs r2, #0x38 + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _08149950 + subs r0, r1, #1 + strh r0, [r3, #0x38] + movs r1, #0x3a + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _08149A0C + ldr r0, _0814994C + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #1 + strb r0, [r1] + b _08149A0C + .align 2, 0 +_0814994C: .4byte gUnknown_203A86C +_08149950: + movs r2, #0x22 + ldrsh r1, [r3, r2] + lsls r1, r1, #1 + ldr r0, _08149A14 + adds r6, r1, r0 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r0, r2 + adds r5, r1, r0 + movs r4, #0 +_08149964: + lsls r1, r4, #1 + adds r2, r1, r6 + ldrh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + bls _08149964 + movs r1, #0x20 + ldrsh r0, [r3, r1] + ldrh r2, [r3, #0x20] + cmp r0, #0 + bne _0814999E + movs r0, #0x2e + ldrsh r1, [r3, r0] + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + bne _0814999E + movs r0, #1 + strh r0, [r3, #0x30] +_0814999E: + adds r1, r2, #0 + subs r1, #0x10 + strh r1, [r3, #0x20] + ldrh r0, [r3, #0x2e] + adds r0, #0x80 + strh r0, [r3, #0x2e] + lsls r1, r1, #0x10 + cmp r1, #0 + bge _081499B4 + movs r0, #0 + strh r0, [r3, #0x20] +_081499B4: + movs r1, #0x2e + ldrsh r0, [r3, r1] + movs r1, #0x80 + lsls r1, r1, #5 + cmp r0, r1 + ble _081499C2 + strh r1, [r3, #0x2e] +_081499C2: + movs r2, #0x3a + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _081499D4 + ldr r0, _08149A18 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #1 + strb r0, [r1] +_081499D4: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _08149A0C + movs r2, #0x3a + ldrsh r0, [r3, r2] + ldr r2, _08149A18 + cmp r0, #0 + beq _081499FE + ldr r0, [r2] + movs r1, #0x20 + ldrsh r0, [r0, r1] + cmp r0, #6 + ble _08149A0C + ldrh r0, [r3, #0x32] + adds r1, r0, #1 + strh r1, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _08149A0C +_081499FE: + ldr r1, [r2] + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] + adds r0, r3, #0 + bl sub_08006E00 +_08149A0C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08149A14: .4byte gUnknown_20388C8 +_08149A18: .4byte gUnknown_203A86C + thumb_func_end sub_08149924 + + thumb_func_start sub_08149A1C +sub_08149A1C: @ 0x08149A1C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08149A4C + ldr r2, _08149A50 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08149A2E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08149A2E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08149A4C: .4byte gUnknown_85A8860 +_08149A50: .4byte gUnknown_3005B60 + thumb_func_end sub_08149A1C + + thumb_func_start sub_08149A54 +sub_08149A54: @ 0x08149A54 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + ldr r0, _08149A9C + ldr r1, [sp, #8] + movs r2, #0x10 + bl CpuSet + mov r1, sp + movs r2, #0xf0 + lsls r2, r2, #8 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _08149AA0 + mov r0, sp + bl CpuSet + ldr r0, _08149AA4 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149A9C: .4byte gUnknown_859A780 +_08149AA0: .4byte 0x01000400 +_08149AA4: .4byte gUnknown_85A8984 + thumb_func_end sub_08149A54 + + thumb_func_start sub_08149AA8 +sub_08149AA8: @ 0x08149AA8 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08149AEA + mov r0, sp + bl sub_0814A000 + movs r0, #3 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + movs r1, #0xc + ldrsh r0, [r4, r1] + lsls r0, r0, #5 + ldr r1, _08149AFC + adds r0, r0, r1 + ldr r1, [sp] + movs r2, #0x10 + bl CpuSet + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0xd + ble _08149AEA + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0x10 + strh r0, [r4, #0xa] +_08149AEA: + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149AFC: .4byte gUnknown_859A780 + thumb_func_end sub_08149AA8 + + thumb_func_start sub_08149B00 +sub_08149B00: @ 0x08149B00 + push {lr} + ldrh r1, [r0, #0xa] + subs r1, #1 + strh r1, [r0, #0xa] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _08149B20 + bl sub_0814A044 + ldr r0, _08149B28 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_08149B20: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08149B28: .4byte sub_08149A1C + thumb_func_end sub_08149B00 + + thumb_func_start sub_08149B2C +sub_08149B2C: @ 0x08149B2C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08149B5C + ldr r2, _08149B60 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08149B3E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08149B3E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08149B5C: .4byte gUnknown_85A886C +_08149B60: .4byte gUnknown_3005B60 + thumb_func_end sub_08149B2C + + thumb_func_start sub_08149B64 +sub_08149B64: @ 0x08149B64 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + ldr r0, _08149BBC + ldr r1, [r0] + movs r2, #0 + movs r0, #0x3f + strh r0, [r1, #2] + strh r2, [r1, #4] + movs r0, #0xa0 + strh r0, [r1, #8] + movs r1, #0 + ldr r2, _08149BC0 + movs r3, #0xf0 + adds r4, r2, #0 +_08149B88: + lsls r0, r1, #1 + adds r0, r0, r2 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x9f + bls _08149B88 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r1, r4, r0 + adds r0, r4, #0 + movs r2, #0xa0 + bl CpuSet + ldr r0, _08149BC4 + bl sub_080006F0 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08149BBC: .4byte gUnknown_203A86C +_08149BC0: .4byte gUnknown_20388C8 +_08149BC4: .4byte sub_08149DA8 + thumb_func_end sub_08149B64 + + thumb_func_start sub_08149BC8 +sub_08149BC8: @ 0x08149BC8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + mov r8, r0 + ldr r0, _08149C3C + ldr r0, [r0] + adds r0, #0x24 + ldr r6, _08149C40 + mov r2, r8 + movs r3, #0xa + ldrsh r1, [r2, r3] + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #1 + adds r1, r4, r6 + movs r5, #0 + ldrsh r1, [r1, r5] + adds r2, r6, #2 + adds r2, r4, r2 + movs r3, #0 + ldrsh r2, [r2, r3] + adds r3, r6, #4 + adds r3, r4, r3 + movs r5, #0 + ldrsh r3, [r3, r5] + adds r5, r6, #6 + adds r4, r4, r5 + movs r5, #0 + ldrsh r4, [r4, r5] + str r4, [sp] + movs r4, #1 + str r4, [sp, #4] + str r4, [sp, #8] + bl sub_0814A26C + mov r0, r8 + movs r2, #0xa + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r6, #8 + adds r0, r0, r6 + ldrh r0, [r0] + mov r3, r8 + strh r0, [r3, #0xc] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + movs r0, #1 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08149C3C: .4byte gUnknown_203A86C +_08149C40: .4byte gUnknown_85A8880 + thumb_func_end sub_08149BC8 + + thumb_func_start sub_08149C44 +sub_08149C44: @ 0x08149C44 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldr r0, _08149C94 + ldr r1, [r0] + ldrb r0, [r1] + movs r0, #0 + strb r0, [r1] + mov r8, r0 + movs r7, #0 + ldr r0, _08149C98 + mov sb, r0 +_08149C60: + ldr r1, _08149C98 + ldr r0, _08149C94 + ldr r2, [r0] + movs r3, #0x2a + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, 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 _08149C9C + movs r1, #0x28 + ldrsh r0, [r2, r1] + cmp r3, r0 + bge _08149C88 + ldrh r3, [r2, #0x28] +_08149C88: + lsls r0, r3, #0x10 + lsls r1, r5, #0x10 + cmp r0, r1 + ble _08149CB4 + lsrs r3, r1, #0x10 + b _08149CB4 + .align 2, 0 +_08149C94: .4byte gUnknown_203A86C +_08149C98: .4byte gUnknown_20388C8 +_08149C9C: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r4, #0x28 + ldrsh r1, [r2, r4] + cmp r0, r1 + ble _08149CAA + ldrh r5, [r2, #0x28] +_08149CAA: + lsls r0, r5, #0x10 + lsls r1, r3, #0x10 + cmp r0, r1 + bgt _08149CB4 + lsrs r5, r1, #0x10 +_08149CB4: + ldr r0, _08149CD8 + ldr r4, [r0] + movs r0, #0x2a + ldrsh r2, [r4, r0] + lsls r2, r2, #1 + add r2, sb + lsls r1, r3, #0x10 + asrs r1, r1, #8 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + orrs r0, r1 + strh r0, [r2] + cmp r7, #0 + beq _08149CDC + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _08149D00 + .align 2, 0 +_08149CD8: .4byte gUnknown_203A86C +_08149CDC: + adds r0, r4, #0 + adds r0, #0x24 + movs r1, #1 + movs r2, #1 + bl sub_0814A2E8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r1, r8 + lsls r0, r1, #0x10 + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r0, r3 + lsrs r4, r0, #0x10 + mov r8, r4 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _08149C60 +_08149D00: + ldr r0, _08149D1C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08149D1C: .4byte gUnknown_203A86C + thumb_func_end sub_08149C44 + + thumb_func_start sub_08149D20 +sub_08149D20: @ 0x08149D20 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + ble _08149D6C + ldr r1, _08149D5C + ldrh r2, [r1, #0xa] + ldr r0, _08149D60 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _08149D64 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + bl sub_0814A044 + ldr r0, _08149D68 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + b _08149D84 + .align 2, 0 +_08149D5C: .4byte 0x040000B0 +_08149D60: .4byte 0x0000C5FF +_08149D64: .4byte 0x00007FFF +_08149D68: .4byte sub_08149B2C +_08149D6C: + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + ldr r1, _08149D88 + movs r3, #0xa + ldrsh r0, [r2, r3] + subs r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0xe] + movs r0, #1 +_08149D84: + pop {r1} + bx r1 + .align 2, 0 +_08149D88: .4byte gUnknown_85A88C6 + thumb_func_end sub_08149D20 + + thumb_func_start sub_08149D8C +sub_08149D8C: @ 0x08149D8C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0xe] + subs r0, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08149DA0 + movs r0, #0 + b _08149DA4 +_08149DA0: + movs r0, #1 + strh r0, [r1, #8] +_08149DA4: + pop {r1} + bx r1 + thumb_func_end sub_08149D8C + + thumb_func_start sub_08149DA8 +sub_08149DA8: @ 0x08149DA8 + push {r4, lr} + ldr r4, _08149E14 + ldrh r1, [r4, #0xa] + ldr r0, _08149E18 + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xa] + ldr r0, _08149E1C + ands r0, r1 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xa] + bl sub_08149FEC + ldr r3, _08149E20 + ldr r0, [r3] + ldrb r0, [r0] + cmp r0, #0 + beq _08149DE0 + ldr r1, _08149E24 + ldr r0, _08149E28 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _08149E2C + str r0, [r1, #8] + ldr r0, [r1, #8] +_08149DE0: + ldr r2, _08149E30 + ldr r1, [r3] + ldrh r0, [r1, #2] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #4] + strh r0, [r2] + subs r2, #6 + ldrh r0, [r1, #8] + strh r0, [r2] + subs r2, #4 + ldr r0, _08149E28 + movs r1, #0xf0 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r1, [r0] + strh r1, [r2] + str r0, [r4] + str r2, [r4, #4] + ldr r0, _08149E34 + str r0, [r4, #8] + ldr r0, [r4, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149E14: .4byte 0x040000B0 +_08149E18: .4byte 0x0000C5FF +_08149E1C: .4byte 0x00007FFF +_08149E20: .4byte gUnknown_203A86C +_08149E24: .4byte 0x040000D4 +_08149E28: .4byte gUnknown_20388C8 +_08149E2C: .4byte 0x800000A0 +_08149E30: .4byte 0x04000048 +_08149E34: .4byte 0xA2400001 + thumb_func_end sub_08149DA8 + + thumb_func_start sub_08149E38 +sub_08149E38: @ 0x08149E38 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r3, [sp, #0x18] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r0, _08149E94 + movs r1, #3 + str r3, [sp] + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08149E98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, 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, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08149E94: .4byte sub_08149EBC +_08149E98: .4byte gUnknown_3005B60 + thumb_func_end sub_08149E38 + + thumb_func_start sub_08149E9C +sub_08149E9C: @ 0x08149E9C + push {lr} + ldr r0, _08149EB0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08149EB4 + movs r0, #0 + b _08149EB6 + .align 2, 0 +_08149EB0: .4byte sub_08149EBC +_08149EB4: + movs r0, #1 +_08149EB6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08149E9C + + thumb_func_start sub_08149EBC +sub_08149EBC: @ 0x08149EBC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _08149EEC + ldr r2, _08149EF0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_08149ECE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08149ECE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08149EEC: .4byte gUnknown_85A88D4 +_08149EF0: .4byte gUnknown_3005B60 + thumb_func_end sub_08149EBC + + thumb_func_start sub_08149EF4 +sub_08149EF4: @ 0x08149EF4 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08149F0C + subs r0, r1, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08149F30 +_08149F0C: + ldrh r0, [r4, #0xa] + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0x16] + adds r0, r0, r1 + strh r0, [r4, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08149F24 + movs r0, #0x10 + strh r0, [r4, #0x16] +_08149F24: + movs r0, #1 + rsbs r0, r0, #0 + ldrb r1, [r4, #0x16] + ldr r2, _08149F4C + bl sub_080A22E8 +_08149F30: + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0xf + ble _08149F42 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #0xc] + strh r0, [r4, #0x14] +_08149F42: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08149F4C: .4byte 0x00002D6B + thumb_func_end sub_08149EF4 + + thumb_func_start sub_08149F50 +sub_08149F50: @ 0x08149F50 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08149F68 + subs r0, r1, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08149F8A +_08149F68: + ldrh r0, [r4, #0xc] + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0x16] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08149F7E + movs r0, #0 + strh r0, [r4, #0x16] +_08149F7E: + movs r0, #1 + rsbs r0, r0, #0 + ldrb r1, [r4, #0x16] + ldr r2, _08149FB0 + bl sub_080A22E8 +_08149F8A: + movs r0, #0x16 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _08149FBE + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08149FB8 + ldr r0, _08149FB4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _08149FBE + .align 2, 0 +_08149FB0: .4byte 0x00002D6B +_08149FB4: .4byte sub_08149EBC +_08149FB8: + ldrh r0, [r4, #0xa] + strh r0, [r4, #0x14] + strh r1, [r4, #8] +_08149FBE: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08149F50 + + thumb_func_start sub_08149FC8 +sub_08149FC8: @ 0x08149FC8 + push {r4, lr} + ldr r4, _08149FE8 + 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_0808956C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08149FE8: .4byte gUnknown_203A86C + thumb_func_end sub_08149FC8 + + thumb_func_start sub_08149FEC +sub_08149FEC: @ 0x08149FEC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08149FEC + + thumb_func_start sub_0814A000 +sub_0814A000: @ 0x0814A000 + ldr r1, _0814A014 + ldrh r1, [r1] + lsrs r1, r1, #2 + lsls r1, r1, #0x1e + lsrs r1, r1, #0x10 + movs r2, #0xc0 + lsls r2, r2, #0x13 + adds r1, r1, r2 + str r1, [r0] + bx lr + .align 2, 0 +_0814A014: .4byte 0x04000008 + thumb_func_end sub_0814A000 + + thumb_func_start sub_0814A018 +sub_0814A018: @ 0x0814A018 + push {r4, lr} + ldr r3, _0814A040 + ldrh r2, [r3] + lsrs r2, r2, #8 + ldrh r3, [r3] + lsrs r3, r3, #2 + lsls r2, r2, #0x1b + lsrs r2, r2, #0x10 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x10 + movs r4, #0xc0 + lsls r4, r4, #0x13 + adds r2, r2, r4 + str r2, [r0] + adds r3, r3, r4 + str r3, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814A040: .4byte 0x04000008 + thumb_func_end sub_0814A018 + + thumb_func_start sub_0814A044 +sub_0814A044: @ 0x0814A044 + push {lr} + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814A044 + + thumb_func_start sub_0814A058 +sub_0814A058: @ 0x0814A058 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + ldr r0, [sp, #0x20] + ldr r4, [sp, #0x24] + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + lsls r4, r4, #0x10 + movs r6, #0 + lsrs r5, r4, #0x10 + cmp r4, #0 + ble _0814A0C0 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + mov sb, r0 + lsls r1, r1, #0x10 + mov r8, r1 + lsls r0, r3, #0x10 + asrs r7, r0, #0x10 +_0814A090: + lsls r4, r2, #0x10 + asrs r4, r4, #0x10 + movs r0, #0xff + ands r0, r4 + mov r2, r8 + asrs r1, r2, #0x10 + bl sub_0806EFB8 + lsls r1, r6, #1 + add r1, sl + add r0, sb + strh r0, [r1] + lsls r1, r5, #0x10 + ldr r0, _0814A0D0 + adds r1, r1, r0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r4, r4, r7 + lsls r4, r4, #0x10 + lsrs r2, r4, #0x10 + lsrs r5, r1, #0x10 + cmp r1, #0 + bgt _0814A090 +_0814A0C0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814A0D0: .4byte 0xFFFF0000 + thumb_func_end sub_0814A058 + + thumb_func_start sub_0814A0D4 +sub_0814A0D4: @ 0x0814A0D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + mov sb, r0 + adds r5, r2, #0 + adds r4, r3, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r2, #0xa0 + lsls r2, r2, #1 + movs r1, #0xa + bl memset + movs r1, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp, #4] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #8] +_0814A10C: + lsls r5, r1, #0x10 + asrs r0, r5, #0x10 + mov sl, r0 + ldr r1, [sp, #4] + bl sub_0806EFB8 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sl + ldr r1, [sp, #4] + bl sub_0806EFD4 + ldr r2, [sp] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + subs r2, r1, r4 + lsls r2, r2, #0x10 + adds r1, r1, r4 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r3, [sp, #8] + subs r1, r3, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + adds r0, r3, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsrs r1, r2, #0x10 + str r5, [sp, #0x10] + cmp r2, #0 + bge _0814A158 + movs r1, #0 +_0814A158: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf0 + ble _0814A162 + movs r6, #0xf0 +_0814A162: + lsls r0, r7, #0x10 + cmp r0, #0 + bge _0814A16A + movs r7, #0 +_0814A16A: + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _0814A178 + movs r3, #0x9f + mov r8, r3 +_0814A178: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x10 + orrs r6, r0 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #0xc] + lsls r0, r0, #1 + add r0, sb + strh r6, [r0] + mov r0, r8 + lsls r4, r0, #0x10 + asrs r0, r4, #0xf + add r0, sb + strh r6, [r0] + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r1, [sp, #4] + bl sub_0806EFD4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r2, [sp, #8] + subs r1, r2, r0 + lsls r1, r1, #0x10 + adds r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsrs r3, r1, #0x10 + cmp r1, #0 + bge _0814A1BA + movs r3, #0 +_0814A1BA: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _0814A1C4 + movs r2, #0x9f +_0814A1C4: + lsls r0, r3, #0x10 + asrs r1, r0, #0x10 + adds r3, r0, #0 + lsls r5, r2, #0x10 + ldr r0, [sp, #0xc] + cmp r0, r1 + ble _0814A1E8 + adds r2, r1, #0 +_0814A1D4: + lsls r1, r7, #0x10 + ldr r0, _0814A268 + adds r1, r1, r0 + asrs r0, r1, #0xf + add r0, sb + strh r6, [r0] + lsrs r7, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, r2 + bgt _0814A1D4 +_0814A1E8: + lsls r1, r7, #0x10 + asrs r0, r3, #0x10 + cmp r1, r3 + bge _0814A206 + adds r2, r0, #0 +_0814A1F2: + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r1, r3 + asrs r1, r0, #0xf + add r1, sb + strh r6, [r1] + adds r1, r0, #0 + asrs r0, r1, #0x10 + cmp r0, r2 + blt _0814A1F2 +_0814A206: + asrs r0, r5, #0x10 + cmp r4, r5 + ble _0814A224 + adds r1, r0, #0 +_0814A20E: + ldr r2, _0814A268 + adds r0, r4, r2 + lsrs r3, r0, #0x10 + mov r8, r3 + asrs r0, r0, #0xf + add r0, sb + strh r6, [r0] + lsls r4, r3, #0x10 + asrs r0, r4, #0x10 + cmp r0, r1 + bgt _0814A20E +_0814A224: + mov r0, r8 + lsls r4, r0, #0x10 + asrs r0, r5, #0x10 + cmp r4, r5 + bge _0814A244 + adds r2, r0, #0 +_0814A230: + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r4, r1 + asrs r1, r0, #0xf + add r1, sb + strh r6, [r1] + adds r4, r0, #0 + asrs r0, r4, #0x10 + cmp r0, r2 + blt _0814A230 +_0814A244: + ldr r2, [sp, #0x10] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r2, r3 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + bgt _0814A256 + b _0814A10C +_0814A256: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814A268: .4byte 0xFFFF0000 + thumb_func_end sub_0814A0D4 + + thumb_func_start sub_0814A26C +sub_0814A26C: @ 0x0814A26C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, [sp, #0x14] + ldr r5, [sp, #0x18] + ldr r4, [sp, #0x1c] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + strh r1, [r6] + strh r2, [r6, #2] + strh r1, [r6, #4] + strh r2, [r6, #6] + strh r3, [r6, #8] + strh r7, [r6, #0xa] + strh r5, [r6, #0xc] + strh r4, [r6, #0xe] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + subs r3, r3, r1 + strh r3, [r6, #0x10] + lsls r0, r3, #0x10 + cmp r0, #0 + bge _0814A2BE + rsbs r0, r3, #0 + strh r0, [r6, #0x10] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r6, #0xc] +_0814A2BE: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + subs r1, r0, r1 + strh r1, [r6, #0x12] + lsls r0, r1, #0x10 + cmp r0, #0 + bge _0814A2DC + rsbs r0, r1, #0 + strh r0, [r6, #0x12] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r6, #0xe] +_0814A2DC: + movs r0, #0 + strh r0, [r6, #0x14] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814A26C + + thumb_func_start sub_0814A2E8 +sub_0814A2E8: @ 0x0814A2E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + ldrh r0, [r3, #0x10] + mov r8, r0 + movs r1, #0x10 + ldrsh r6, [r3, r1] + ldrh r2, [r3, #0x12] + mov ip, r2 + movs r4, #0x12 + ldrsh r5, [r3, r4] + cmp r6, r5 + ble _0814A338 + ldrh r0, [r3, #0xc] + ldrh r2, [r3, #4] + adds r1, r0, r2 + strh r1, [r3, #4] + ldrh r2, [r3, #0x14] + add r2, ip + strh r2, [r3, #0x14] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + adds r4, r0, #0 + ldrh r7, [r3, #0xe] + cmp r1, r6 + ble _0814A35E + ldrh r1, [r3, #6] + adds r0, r7, r1 + strh r0, [r3, #6] + mov r1, r8 + b _0814A35A +_0814A338: + ldrh r0, [r3, #0xe] + ldrh r2, [r3, #6] + adds r1, r0, r2 + strh r1, [r3, #6] + ldrh r2, [r3, #0x14] + add r2, r8 + strh r2, [r3, #0x14] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldrh r4, [r3, #0xc] + adds r7, r0, #0 + cmp r1, r5 + ble _0814A35E + ldrh r1, [r3, #4] + adds r0, r4, r1 + strh r0, [r3, #4] + mov r1, ip +_0814A35A: + subs r0, r2, r1 + strh r0, [r3, #0x14] +_0814A35E: + movs r5, #0 + lsls r0, r4, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + ble _0814A376 + movs r4, #4 + ldrsh r1, [r3, r4] + movs r4, #8 + ldrsh r0, [r3, r4] + ldrh r4, [r3, #8] + cmp r1, r0 + bge _0814A388 +_0814A376: + cmp r2, #0 + bge _0814A396 + movs r0, #4 + ldrsh r1, [r3, r0] + movs r2, #8 + ldrsh r0, [r3, r2] + ldrh r4, [r3, #8] + cmp r1, r0 + bgt _0814A396 +_0814A388: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sb + cmp r0, #0 + beq _0814A396 + strh r4, [r3, #4] +_0814A396: + lsls r0, r7, #0x10 + asrs r2, r0, #0x10 + cmp r2, #0 + ble _0814A3AC + movs r4, #6 + ldrsh r1, [r3, r4] + movs r4, #0xa + ldrsh r0, [r3, r4] + ldrh r4, [r3, #0xa] + cmp r1, r0 + bge _0814A3BE +_0814A3AC: + cmp r2, #0 + bge _0814A3CC + movs r0, #6 + ldrsh r1, [r3, r0] + movs r2, #0xa + ldrsh r0, [r3, r2] + ldrh r4, [r3, #0xa] + cmp r1, r0 + bgt _0814A3CC +_0814A3BE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, sl + cmp r0, #0 + beq _0814A3CC + strh r4, [r3, #6] +_0814A3CC: + cmp r5, #2 + beq _0814A3D4 + movs r0, #0 + b _0814A3D6 +_0814A3D4: + movs r0, #1 +_0814A3D6: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0814A2E8 + + thumb_func_start sub_0814A3E4 +sub_0814A3E4: @ 0x0814A3E4 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + bl sub_0814675C + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r2, _0814A428 + mov r0, sp + bl CpuSet + ldr r0, _0814A42C + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _0814A430 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814A428: .4byte 0x01000400 +_0814A42C: .4byte gUnknown_85A76B0 +_0814A430: .4byte gUnknown_85A7690 + thumb_func_end sub_0814A3E4 + + thumb_func_start sub_0814A434 +sub_0814A434: @ 0x0814A434 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _0814A474 + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _0814A478 + movs r1, #0x10 + ldrsh r2, [r4, r1] + movs r3, #0x12 + ldrsh r1, [r4, r3] + str r1, [sp] + movs r1, #0xa0 + str r1, [sp, #4] + movs r1, #0 + movs r3, #0x84 + bl sub_0814A058 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814A474: .4byte gUnknown_85A7D3C +_0814A478: .4byte gUnknown_20388C8 + thumb_func_end sub_0814A434 + + thumb_func_start sub_0814A47C +sub_0814A47C: @ 0x0814A47C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814A4AC + ldr r2, _0814A4B0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814A48E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814A48E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A4AC: .4byte gUnknown_85A9480 +_0814A4B0: .4byte gUnknown_3005B60 + thumb_func_end sub_0814A47C + + thumb_func_start sub_0814A4B4 +sub_0814A4B4: @ 0x0814A4B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814A4E4 + ldr r2, _0814A4E8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814A4C6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814A4C6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A4E4: .4byte gUnknown_85A9498 +_0814A4E8: .4byte gUnknown_3005B60 + thumb_func_end sub_0814A4B4 + + thumb_func_start sub_0814A4EC +sub_0814A4EC: @ 0x0814A4EC + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + bl sub_08149FC8 + bl sub_080B9750 + movs r1, #0xc0 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001220 + movs r5, #0 + movs r0, #0x80 + lsls r0, r0, #6 + strh r0, [r4, #0xc] + ldr r0, _0814A574 + strh r0, [r4, #0xa] + strh r5, [r4, #0x12] + movs r0, #0x10 + strh r0, [r4, #0x14] + movs r0, #0xa0 + lsls r0, r0, #4 + strh r0, [r4, #0x16] + ldr r6, _0814A578 + ldr r2, [r6] + ldr r3, _0814A57C + strh r3, [r2, #0xe] + ldrh r0, [r4, #0x14] + lsls r0, r0, #8 + ldrh r1, [r4, #0x12] + orrs r0, r1 + strh r0, [r2, #0x10] + ldr r0, _0814A580 + strh r3, [r0] + ldr r1, _0814A584 + ldrh r0, [r2, #0x10] + strh r0, [r1] + add r0, sp, #4 + add r1, sp, #8 + bl sub_0814A018 + mov r0, sp + strh r5, [r0] + ldr r1, [sp, #4] + ldr r2, _0814A588 + bl CpuSet + ldr r0, _0814A58C + ldr r1, [sp, #8] + bl LZ77UnCompVram + ldr r0, _0814A590 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, [r6] + strh r5, [r0, #0x16] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814A574: .4byte 0x00007FFF +_0814A578: .4byte gUnknown_203A86C +_0814A57C: .4byte 0x00003F41 +_0814A580: .4byte 0x04000050 +_0814A584: .4byte 0x04000052 +_0814A588: .4byte 0x01000400 +_0814A58C: .4byte gUnknown_85A76B0 +_0814A590: .4byte gUnknown_85A7690 + thumb_func_end sub_0814A4EC + + thumb_func_start sub_0814A594 +sub_0814A594: @ 0x0814A594 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + add r1, sp, #4 + mov r0, sp + bl sub_0814A018 + ldr r0, _0814A5BC + ldr r1, [sp] + bl LZ77UnCompVram + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814A5BC: .4byte gUnknown_85A7D3C + thumb_func_end sub_0814A594 + + thumb_func_start sub_0814A5C0 +sub_0814A5C0: @ 0x0814A5C0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r2, #0 + ldr r6, _0814A600 + ldr r4, _0814A604 + ldr r3, _0814A608 +_0814A5CC: + lsls r1, r2, #1 + adds r1, r1, r4 + ldr r0, [r3] + ldrh r0, [r0, #0x16] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x9f + bls _0814A5CC + adds r0, r6, #0 + bl sub_080006F0 + ldr r0, _0814A60C + bl sub_080006FC + movs r0, #2 + bl sub_08001274 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814A600: .4byte sub_0814A744 +_0814A604: .4byte gUnknown_2039048 +_0814A608: .4byte gUnknown_203A86C +_0814A60C: .4byte sub_0814A78C + thumb_func_end sub_0814A5C0 + + thumb_func_start sub_0814A610 +sub_0814A610: @ 0x0814A610 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _0814A658 + ldr r0, [r1] + ldrb r2, [r0] + movs r3, #0 + strb r3, [r0] + ldrh r2, [r4, #0xc] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldrh r6, [r4, #0xa] + movs r0, #0xc0 + lsls r0, r0, #1 + mov r8, r0 + ldrh r0, [r4, #0x16] + subs r0, r6, r0 + strh r0, [r4, #0xa] + movs r5, #0xe + ldrsh r0, [r4, r5] + adds r5, r1, #0 + cmp r0, #0x45 + ble _0814A662 + movs r1, #0xc + ldrsh r0, [r4, r1] + ldr r1, _0814A65C + adds r0, r0, r1 + cmp r0, #0 + blt _0814A660 + adds r0, r2, r1 + strh r0, [r4, #0xc] + b _0814A662 + .align 2, 0 +_0814A658: .4byte gUnknown_203A86C +_0814A65C: .4byte 0xFFFFFE80 +_0814A660: + strh r3, [r4, #0xc] +_0814A662: + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + blt _0814A6A0 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0814A6A0 + ldrh r1, [r4, #0x12] + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0xf + bgt _0814A686 + adds r0, r1, #1 + strh r0, [r4, #0x12] + b _0814A694 +_0814A686: + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _0814A694 + subs r0, r1, #1 + strh r0, [r4, #0x14] +_0814A694: + ldr r0, [r5] + ldrh r1, [r4, #0x14] + lsls r1, r1, #8 + ldrh r2, [r4, #0x12] + orrs r1, r2 + strh r1, [r0, #0x10] +_0814A6A0: + movs r5, #0 + lsls r7, r7, #0x10 +_0814A6A4: + lsrs r0, r6, #8 + asrs r1, r7, #0x10 + bl sub_0806EFB8 + ldr r1, _0814A734 + lsls r2, r5, #1 + adds r2, r2, r1 + ldr r1, _0814A738 + ldr r1, [r1] + ldrh r1, [r1, #0x16] + adds r0, r0, r1 + strh r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, r8 + adds r0, r6, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r5, #0x9f + bls _0814A6A4 + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x65 + bne _0814A6F2 + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0814A6F2: + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0814A714 + ldr r0, _0814A73C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0814A714 + ldr r0, _0814A740 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_0814A714: + ldrh r0, [r4, #0x16] + subs r0, #0x11 + strh r0, [r4, #0x16] + ldr r0, _0814A738 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + ldrb r2, [r1] + strb r0, [r1] + movs r0, #0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0814A734: .4byte gUnknown_20388C8 +_0814A738: .4byte gUnknown_203A86C +_0814A73C: .4byte gUnknown_2037C74 +_0814A740: .4byte sub_0814A4B4 + thumb_func_end sub_0814A610 + + thumb_func_start sub_0814A744 +sub_0814A744: @ 0x0814A744 + push {lr} + bl sub_08149FEC + ldr r2, _0814A778 + ldr r0, _0814A77C + ldr r1, [r0] + ldrh r0, [r1, #0xe] + strh r0, [r2] + adds r2, #2 + ldrh r0, [r1, #0x10] + strh r0, [r2] + ldrb r0, [r1] + cmp r0, #0 + beq _0814A774 + ldr r1, _0814A780 + ldr r0, _0814A784 + str r0, [r1] + movs r2, #0xf0 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r1, #4] + ldr r0, _0814A788 + str r0, [r1, #8] + ldr r0, [r1, #8] +_0814A774: + pop {r0} + bx r0 + .align 2, 0 +_0814A778: .4byte 0x04000050 +_0814A77C: .4byte gUnknown_203A86C +_0814A780: .4byte 0x040000D4 +_0814A784: .4byte gUnknown_20388C8 +_0814A788: .4byte 0x800000A0 + thumb_func_end sub_0814A744 + + thumb_func_start sub_0814A78C +sub_0814A78C: @ 0x0814A78C + ldr r1, _0814A7A4 + ldr r0, _0814A7A8 + ldrh r0, [r0] + lsls r0, r0, #1 + movs r2, #0xf0 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _0814A7AC + strh r1, [r0] + bx lr + .align 2, 0 +_0814A7A4: .4byte gUnknown_20388C8 +_0814A7A8: .4byte 0x04000006 +_0814A7AC: .4byte 0x04000012 + thumb_func_end sub_0814A78C + + thumb_func_start sub_0814A7B0 +sub_0814A7B0: @ 0x0814A7B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814A7E0 + ldr r2, _0814A7E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814A7C2: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814A7C2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A7E0: .4byte gUnknown_85A94A8 +_0814A7E4: .4byte gUnknown_3005B60 + thumb_func_end sub_0814A7B0 + + thumb_func_start sub_0814A7E8 +sub_0814A7E8: @ 0x0814A7E8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814A818 + ldr r2, _0814A81C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814A7FA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814A7FA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A818: .4byte gUnknown_85A94B8 +_0814A81C: .4byte gUnknown_3005B60 + thumb_func_end sub_0814A7E8 + + thumb_func_start sub_0814A820 +sub_0814A820: @ 0x0814A820 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0814A850 + ldr r2, _0814A854 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_0814A832: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814A832 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814A850: .4byte gUnknown_85A94CC +_0814A854: .4byte gUnknown_3005B60 + thumb_func_end sub_0814A820 + + thumb_func_start sub_0814A858 +sub_0814A858: @ 0x0814A858 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + mov r8, r0 + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0814A018 + ldr r0, _0814A8E0 + ldr r1, [sp, #0x10] + bl LZ77UnCompVram + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r6, #1 + str r6, [sp] + str r4, [sp, #4] + movs r5, #0xf + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x1d + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + bl sub_08002248 + ldr r0, _0814A8E4 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + mov r1, r8 + strh r6, [r1, #0xc] + strh r0, [r1, #0xe] + strh r0, [r1, #0x10] + movs r0, #0xa + strh r0, [r1, #0x16] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814A8E0: .4byte gUnknown_85A8048 +_0814A8E4: .4byte gUnknown_85A8028 + thumb_func_end sub_0814A858 + + thumb_func_start sub_0814A8E8 +sub_0814A8E8: @ 0x0814A8E8 + push {r4, r5, lr} + sub sp, #0x24 + adds r4, r0, #0 + ldr r1, _0814A954 + movs r2, #4 + str r2, [sp] + str r2, [sp, #4] + ldrb r0, [r4, #0xc] + str r0, [sp, #8] + ldrb r0, [r4, #0xe] + str r0, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + movs r0, #0xf + str r0, [sp, #0x18] + movs r5, #0 + str r5, [sp, #0x1c] + str r5, [sp, #0x20] + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + movs r0, #0 + bl sub_08002248 + ldrh r0, [r4, #0xc] + adds r0, #4 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bne _0814A94A + movs r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xe] + adds r0, #4 + strh r0, [r4, #0xe] + strh r5, [r4, #0x10] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _0814A94A + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0814A94A: + movs r0, #0 + add sp, #0x24 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0814A954: .4byte gUnknown_85A83D8 + thumb_func_end sub_0814A8E8 + + thumb_func_start sub_0814A958 +sub_0814A958: @ 0x0814A958 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldrh r0, [r4, #0x14] + adds r1, r0, #1 + strh r1, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x16 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _0814AA16 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0814A9BC + cmp r0, #1 + bgt _0814A98A + cmp r0, #0 + beq _0814A994 + b _0814A9EC +_0814A98A: + cmp r0, #2 + beq _0814A9D4 + cmp r0, #3 + beq _0814A9DC + b _0814A9EC +_0814A994: + movs r2, #0xfa + ldr r6, _0814A9B4 + movs r3, #0 + ldr r5, _0814A9B8 +_0814A99C: + lsls r1, r2, #1 + adds r0, r1, r6 + strh r3, [r0] + adds r1, r1, r5 + strh r3, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xfe + bls _0814A99C + b _0814AA0C + .align 2, 0 +_0814A9B4: .4byte gUnknown_20373B4 +_0814A9B8: .4byte gUnknown_20377B4 +_0814A9BC: + ldr r0, _0814A9CC + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _0814A9D0 + b _0814A9DE + .align 2, 0 +_0814A9CC: .4byte 0xFFFF7FFF +_0814A9D0: .4byte gUnknown_85A81A4 +_0814A9D4: + ldr r0, _0814A9D8 + b _0814A9DE + .align 2, 0 +_0814A9D8: .4byte gUnknown_85A82A4 +_0814A9DC: + ldr r0, _0814A9E8 +_0814A9DE: + ldr r1, [sp, #0xc] + bl LZ77UnCompVram + b _0814AA0C + .align 2, 0 +_0814A9E8: .4byte gUnknown_85A8354 +_0814A9EC: + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0814AA16 +_0814AA0C: + movs r0, #0 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] +_0814AA16: + movs r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0814A958 + + thumb_func_start sub_0814AA20 +sub_0814AA20: @ 0x0814AA20 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + mov r8, r0 + add r1, sp, #0x10 + add r0, sp, #0xc + bl sub_0814A018 + ldr r0, _0814AABC + ldr r1, [sp, #0x10] + bl LZ77UnCompVram + movs r4, #0x20 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r6, #1 + str r6, [sp] + str r4, [sp, #4] + movs r5, #0xf + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x1d + movs r3, #0 + bl sub_080026E0 + movs r0, #0 + bl sub_08002248 + ldr r4, _0814AAC0 + adds r0, r4, #0 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0xe0 + movs r1, #0x10 + movs r2, #8 + movs r3, #0 + bl sub_0806F410 + movs r1, #0 + movs r0, #0x22 + mov r2, r8 + strh r0, [r2, #0xc] + strh r1, [r2, #0xe] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + movs r0, #0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814AABC: .4byte gUnknown_85A8048 +_0814AAC0: .4byte gUnknown_85A8028 + thumb_func_end sub_0814AA20 + + thumb_func_start sub_0814AAC4 +sub_0814AAC4: @ 0x0814AAC4 + push {r4, r5, r6, lr} + sub sp, #0x24 + adds r6, r0, #0 + ldr r1, _0814AB3C + movs r2, #0xc + ldrsh r0, [r6, r2] + adds r0, r0, r1 + ldrb r5, [r0] + adds r0, r5, #0 + movs r1, #7 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #7 + bl __udivsi3 + ldr r1, _0814AB40 + movs r2, #4 + str r2, [sp] + str r2, [sp, #4] + lsls r4, r4, #2 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + movs r0, #0xf + str r0, [sp, #0x18] + movs r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + movs r0, #0 + bl sub_08002248 + ldrh r0, [r6, #0xc] + subs r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0814AB30 + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] +_0814AB30: + movs r0, #0 + add sp, #0x24 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814AB3C: .4byte gUnknown_85A94E0 +_0814AB40: .4byte gUnknown_85A83D8 + thumb_func_end sub_0814AAC4 + + thumb_func_start sub_0814AB44 +sub_0814AB44: @ 0x0814AB44 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xe0 + movs r1, #0x10 + movs r2, #3 + movs r3, #0 + bl sub_0806F410 + ldr r0, _0814AB74 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814AB74: .4byte 0xFFFF3FFF + thumb_func_end sub_0814AB44 + + thumb_func_start sub_0814AB78 +sub_0814AB78: @ 0x0814AB78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x24 + adds r7, r0, #0 + ldrh r0, [r7, #0xe] + movs r1, #1 + eors r0, r1 + movs r6, #0 + strh r0, [r7, #0xe] + cmp r0, #0 + beq _0814ABEC + ldr r0, _0814ABE4 + mov r8, r0 + movs r4, #4 + str r4, [sp] + str r4, [sp, #4] + ldr r5, _0814ABE8 + movs r1, #0xc + ldrsh r0, [r7, r1] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #7 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + movs r2, #0xc + ldrsh r0, [r7, r2] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + str r0, [sp, #0xc] + str r4, [sp, #0x10] + str r4, [sp, #0x14] + movs r0, #0xe + str r0, [sp, #0x18] + str r6, [sp, #0x1c] + str r6, [sp, #0x20] + movs r0, #0 + mov r1, r8 + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + b _0814AC38 + .align 2, 0 +_0814ABE4: .4byte gUnknown_85A83D8 +_0814ABE8: .4byte gUnknown_85A94E0 +_0814ABEC: + movs r1, #0xc + ldrsh r0, [r7, r1] + cmp r0, #0 + ble _0814AC32 + ldr r1, _0814AC5C + subs r0, #1 + adds r0, r0, r1 + ldrb r5, [r0] + adds r0, r5, #0 + movs r1, #7 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x16 + adds r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #7 + bl __udivsi3 + adds r3, r0, #0 + lsls r3, r3, #0x1a + lsrs r3, r3, #0x18 + movs r0, #4 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_080026E0 +_0814AC32: + ldrh r0, [r7, #0xc] + adds r0, #1 + strh r0, [r7, #0xc] +_0814AC38: + movs r1, #0xc + ldrsh r0, [r7, r1] + cmp r0, #0x22 + ble _0814AC46 + ldrh r0, [r7, #8] + adds r0, #1 + strh r0, [r7, #8] +_0814AC46: + movs r0, #0 + bl sub_08002248 + movs r0, #0 + add sp, #0x24 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0814AC5C: .4byte gUnknown_85A94E0 + thumb_func_end sub_0814AB78 + + thumb_func_start sub_0814AC60 +sub_0814AC60: @ 0x0814AC60 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, [r4] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0814AC60 + + thumb_func_start sub_0814ACA4 +sub_0814ACA4: @ 0x0814ACA4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0814ACEC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r6, r1, r2 + ldrh r0, [r6, #0xc] + movs r1, #1 + eors r0, r1 + strh r0, [r6, #0xc] + cmp r0, #0 + bne _0814ACE4 + ldr r5, _0814ACF0 + ldrh r1, [r5] + movs r0, #0x12 + bl sub_08001144 + ldr r4, _0814ACF4 + ldrh r1, [r4] + movs r0, #0x10 + bl sub_08001144 + ldrh r0, [r6, #8] + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r5] + ldrh r0, [r6, #0xa] + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r4] +_0814ACE4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814ACEC: .4byte gUnknown_3005B60 +_0814ACF0: .4byte gUnknown_2022AC8 +_0814ACF4: .4byte gUnknown_2022ACA + thumb_func_end sub_0814ACA4 + + thumb_func_start sub_0814ACF8 +sub_0814ACF8: @ 0x0814ACF8 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r6, r0, #0 + movs r5, #0 + add r1, sp, #0xc + add r0, sp, #8 + bl sub_0814A018 + ldr r0, _0814AD74 + ldr r1, [sp, #0xc] + bl LZ77UnCompVram + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + ldr r0, _0814AD78 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0814AD7C + strh r5, [r0] + ldr r4, _0814AD80 + strh r5, [r4] + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x10 + bl sub_08001144 + strh r5, [r6, #0xc] + ldr r0, _0814AD84 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + lsrs r1, r1, #0x10 + cmp r1, #1 + beq _0814ADA4 + cmp r1, #1 + bgt _0814AD88 + cmp r1, #0 + beq _0814AD8E + b _0814ADDC + .align 2, 0 +_0814AD74: .4byte gUnknown_85A8048 +_0814AD78: .4byte gUnknown_85A8028 +_0814AD7C: .4byte gUnknown_2022AC8 +_0814AD80: .4byte gUnknown_2022ACA +_0814AD84: .4byte sub_0814ACA4 +_0814AD88: + cmp r1, #2 + beq _0814ADC0 + b _0814ADDC +_0814AD8E: + ldr r0, _0814ADA0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + b _0814ADEE + .align 2, 0 +_0814ADA0: .4byte gUnknown_3005B60 +_0814ADA4: + ldr r1, _0814ADB8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0814ADBC + strh r1, [r0, #8] + movs r1, #1 + rsbs r1, r1, #0 + b _0814ADEC + .align 2, 0 +_0814ADB8: .4byte gUnknown_3005B60 +_0814ADBC: .4byte 0x0000FFFF +_0814ADC0: + ldr r1, _0814ADD4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + ldr r1, _0814ADD8 + b _0814ADEC + .align 2, 0 +_0814ADD4: .4byte gUnknown_3005B60 +_0814ADD8: .4byte 0x0000FFFF +_0814ADDC: + ldr r1, _0814AE00 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0814AE04 + strh r1, [r0, #8] + movs r1, #1 +_0814ADEC: + strh r1, [r0, #0xa] +_0814ADEE: + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0814AE00: .4byte gUnknown_3005B60 +_0814AE04: .4byte 0x0000FFFF + thumb_func_end sub_0814ACF8 + + thumb_func_start sub_0814AE08 +sub_0814AE08: @ 0x0814AE08 + push {r4, lr} + sub sp, #0x24 + adds r4, r0, #0 + ldr r1, _0814AE6C + movs r2, #0xc + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r3, [r0] + lsrs r2, r3, #3 + movs r0, #7 + ands r3, r0 + ldr r1, _0814AE70 + movs r0, #4 + str r0, [sp] + str r0, [sp, #4] + lsls r2, r2, #2 + adds r2, #1 + str r2, [sp, #8] + lsls r3, r3, #2 + str r3, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + movs r0, #0xf + str r0, [sp, #0x18] + movs r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + movs r2, #0 + movs r3, #0 + bl sub_080023F8 + movs r0, #0 + bl sub_08002248 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _0814AE60 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0814AE60: + movs r0, #0 + add sp, #0x24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814AE6C: .4byte gUnknown_85A9503 +_0814AE70: .4byte gUnknown_85A83D8 + thumb_func_end sub_0814AE08 + + thumb_func_start sub_0814AE74 +sub_0814AE74: @ 0x0814AE74 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0814AE94 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + strh r0, [r4, #0xc] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814AE94: .4byte 0xFFFF7FFF + thumb_func_end sub_0814AE74 + + thumb_func_start sub_0814AE98 +sub_0814AE98: @ 0x0814AE98 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + ldr r1, _0814AEF8 + movs r2, #0xc + ldrsh r0, [r4, r2] + adds r0, r0, r1 + ldrb r3, [r0] + lsrs r2, r3, #3 + movs r0, #7 + ands r3, r0 + lsls r2, r2, #2 + adds r2, #1 + lsls r3, r3, #2 + movs r0, #4 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + bl sub_080026E0 + movs r0, #0 + bl sub_08002248 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _0814AEEE + ldr r0, _0814AEFC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0814AEEE: + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0814AEF8: .4byte gUnknown_85A9503 +_0814AEFC: .4byte sub_0814ACA4 + thumb_func_end sub_0814AE98 + + thumb_func_start sub_0814AF00 +sub_0814AF00: @ 0x0814AF00 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldr r0, _0814AF64 + movs r1, #0 + strh r1, [r0] + ldr r4, _0814AF68 + strh r1, [r4] + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x10 + bl sub_08001144 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, [r5] + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0814AF64: .4byte gUnknown_2022AC8 +_0814AF68: .4byte gUnknown_2022ACA + thumb_func_end sub_0814AF00 + + thumb_func_start sub_0814AF6C +sub_0814AF6C: @ 0x0814AF6C + bx lr + .align 2, 0 + thumb_func_end sub_0814AF6C + + thumb_func_start sub_0814AF70 +sub_0814AF70: @ 0x0814AF70 + ldr r1, _0814AF80 + ldr r0, _0814AF84 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814AF88 + str r1, [r0] + bx lr + .align 2, 0 +_0814AF80: .4byte gUnknown_3005AC0 +_0814AF84: .4byte gUnknown_2023D08 +_0814AF88: .4byte sub_0814AF8C + thumb_func_end sub_0814AF70 + + thumb_func_start sub_0814AF8C +sub_0814AF8C: @ 0x0814AF8C + push {lr} + ldr r2, _0814AFC0 + ldr r1, _0814AFC4 + ldr r0, _0814AFC8 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _0814AFD8 + ldr r0, _0814AFCC + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _0814AFD4 + ldr r0, _0814AFD0 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _0814AFD8 + .align 2, 0 +_0814AFC0: .4byte gUnknown_2023D0C +_0814AFC4: .4byte gUnknown_82FACB4 +_0814AFC8: .4byte gUnknown_2023D08 +_0814AFCC: .4byte gUnknown_2022D08 +_0814AFD0: .4byte gUnknown_85A9544 +_0814AFD4: + bl sub_0814B800 +_0814AFD8: + pop {r0} + bx r0 + thumb_func_end sub_0814AF8C + + thumb_func_start sub_0814AFDC +sub_0814AFDC: @ 0x0814AFDC + push {lr} + ldr r2, _0814B004 + ldr r1, _0814B008 + ldr r0, _0814B00C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0814B010 + cmp r1, r0 + bne _0814B000 + bl sub_0814B800 +_0814B000: + pop {r0} + bx r0 + .align 2, 0 +_0814B004: .4byte gUnknown_20205AC +_0814B008: .4byte gUnknown_2023E88 +_0814B00C: .4byte gUnknown_2023D08 +_0814B010: .4byte sub_08007140 + thumb_func_end sub_0814AFDC + + thumb_func_start sub_0814B014 +sub_0814B014: @ 0x0814B014 + push {r4, r5, r6, lr} + ldr r6, _0814B06C + ldr r5, _0814B070 + ldr r4, _0814B074 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0814B078 + cmp r1, r0 + bne _0814B064 + movs r0, #0 + bl sub_0805DBFC + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + bl sub_0814B800 +_0814B064: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B06C: .4byte gUnknown_20205AC +_0814B070: .4byte gUnknown_2023E88 +_0814B074: .4byte gUnknown_2023D08 +_0814B078: .4byte sub_08007140 + thumb_func_end sub_0814B014 + + thumb_func_start sub_0814B07C +sub_0814B07C: @ 0x0814B07C + push {r4, lr} + ldr r4, _0814B0BC + ldr r1, [r4] + ldr r3, _0814B0C0 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0814B0B4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_0814B800 +_0814B0B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B0BC: .4byte gUnknown_2024174 +_0814B0C0: .4byte gUnknown_2023D08 + thumb_func_end sub_0814B07C + + thumb_func_start sub_0814B0C4 +sub_0814B0C4: @ 0x0814B0C4 + push {r4, r5, r6, lr} + movs r6, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814B0E8 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814B11C + ldr r0, _0814B108 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814B11C +_0814B0E8: + ldr r2, _0814B10C + ldr r1, _0814B110 + ldr r0, _0814B114 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0814B118 + cmp r1, r0 + bne _0814B154 + b _0814B152 + .align 2, 0 +_0814B108: .4byte gUnknown_2022C90 +_0814B10C: .4byte gUnknown_20205AC +_0814B110: .4byte gUnknown_3005AD0 +_0814B114: .4byte gUnknown_2023D08 +_0814B118: .4byte sub_08007140 +_0814B11C: + ldr r2, _0814B18C + ldr r5, _0814B190 + ldr r0, _0814B194 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r2, #0 + adds r4, #0x1c + adds r0, r0, r4 + ldr r2, [r0] + ldr r0, _0814B198 + cmp r2, r0 + bne _0814B154 + movs r0, #2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, r2 + bne _0814B154 +_0814B152: + movs r6, #1 +_0814B154: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814B160 + movs r6, #0 +_0814B160: + cmp r6, #0 + beq _0814B186 + ldr r0, _0814B19C + ldr r0, [r0] + ldr r3, _0814B194 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _0814B1A0 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814B1A4 + str r1, [r0] +_0814B186: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B18C: .4byte gUnknown_20205AC +_0814B190: .4byte gUnknown_3005AD0 +_0814B194: .4byte gUnknown_2023D08 +_0814B198: .4byte sub_08007140 +_0814B19C: .4byte gUnknown_2024174 +_0814B1A0: .4byte gUnknown_3005AC0 +_0814B1A4: .4byte sub_0814B07C + thumb_func_end sub_0814B0C4 + + thumb_func_start sub_0814B1A8 +sub_0814B1A8: @ 0x0814B1A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0814B320 + mov ip, r0 + ldr r0, [r0] + ldr r7, _0814B324 + ldrb r2, [r7] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4] + movs r5, #8 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0814B1D4 + b _0814B312 +_0814B1D4: + movs r1, #2 + mov r8, r1 + adds r1, r2, #0 + mov r0, r8 + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0814B1F6 + b _0814B312 +_0814B1F6: + ldr r1, _0814B328 + mov sl, r1 + ldr r0, _0814B32C + mov sb, r0 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r5, sl + adds r5, #0x1c + adds r0, r0, r5 + ldr r3, [r0] + ldr r0, _0814B330 + cmp r3, r0 + bne _0814B312 + ldr r0, _0814B334 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r3 + bne _0814B312 + ldrb r0, [r4, #9] + adds r0, #1 + strb r0, [r4, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0814B312 + mov r1, ip + ldr r0, [r1] + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r6, [r0, #9] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814B2B0 + ldr r0, _0814B338 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0814B2B0 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + bl sub_08006E00 + ldr r4, _0814B33C + ldrb r0, [r7] + mov r1, r8 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _0814B340 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0814B344 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + bl sub_08076320 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_0814B2B0: + ldr r1, _0814B32C + ldr r4, _0814B324 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0814B328 + adds r0, r0, r1 + bl sub_08006E00 + ldr r5, _0814B33C + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _0814B340 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0814B344 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + ldr r0, _0814B320 + ldr r0, [r0] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r1, _0814B348 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814B34C + str r1, [r0] +_0814B312: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B320: .4byte gUnknown_2024174 +_0814B324: .4byte gUnknown_2023D08 +_0814B328: .4byte gUnknown_20205AC +_0814B32C: .4byte gUnknown_3005ADC +_0814B330: .4byte sub_08007140 +_0814B334: .4byte gUnknown_2023E88 +_0814B338: .4byte gUnknown_2022C90 +_0814B33C: .4byte gUnknown_3005AD0 +_0814B340: .4byte gUnknown_2023D12 +_0814B344: .4byte gUnknown_2024190 +_0814B348: .4byte gUnknown_3005AC0 +_0814B34C: .4byte sub_0814B0C4 + thumb_func_end sub_0814B1A8 + + thumb_func_start sub_0814B350 +sub_0814B350: @ 0x0814B350 + push {lr} + ldr r2, _0814B384 + ldr r1, _0814B388 + ldr r0, _0814B38C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _0814B37E + movs r2, #0x24 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0814B37E + bl sub_0814B800 +_0814B37E: + pop {r0} + bx r0 + .align 2, 0 +_0814B384: .4byte gUnknown_20205AC +_0814B388: .4byte gUnknown_2023E88 +_0814B38C: .4byte gUnknown_2023D08 + thumb_func_end sub_0814B350 + + thumb_func_start sub_0814B390 +sub_0814B390: @ 0x0814B390 + push {r4, r5, r6, lr} + ldr r5, _0814B3D0 + ldrb r0, [r5] + ldr r6, _0814B3D4 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0814B3D8 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _0814B3F2 + .align 2, 0 +_0814B3D0: .4byte gUnknown_2023D08 +_0814B3D4: .4byte gUnknown_3005AD0 +_0814B3D8: + ldr r2, _0814B3F8 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0814B3FC + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_0814B800 +_0814B3F2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B3F8: .4byte gUnknown_2023D12 +_0814B3FC: .4byte gUnknown_2024190 + thumb_func_end sub_0814B390 + + thumb_func_start sub_0814B400 +sub_0814B400: @ 0x0814B400 + push {r4, r5, r6, lr} + ldr r6, _0814B484 + ldr r5, _0814B488 + ldr r4, _0814B48C + ldrb r2, [r4] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r3, #0x26 + ldrsh r0, [r0, r3] + adds r1, r1, r0 + cmp r1, #0xa0 + ble _0814B47C + ldr r1, _0814B490 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814B494 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0805DB50 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r1, _0814B498 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0814B800 +_0814B47C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B484: .4byte gUnknown_20205AC +_0814B488: .4byte gUnknown_2023E88 +_0814B48C: .4byte gUnknown_2023D08 +_0814B490: .4byte gUnknown_2023D12 +_0814B494: .4byte gUnknown_2024190 +_0814B498: .4byte gUnknown_3005AD0 + thumb_func_end sub_0814B400 + + thumb_func_start sub_0814B49C +sub_0814B49C: @ 0x0814B49C + push {r4, r5, r6, lr} + ldr r0, _0814B4F8 + ldr r0, [r0] + ldr r6, _0814B4FC + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0814B4F0 + ldr r5, _0814B500 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0814B504 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _0814B508 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0814B800 +_0814B4F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B4F8: .4byte gUnknown_2024174 +_0814B4FC: .4byte gUnknown_2023D08 +_0814B500: .4byte gUnknown_2023E88 +_0814B504: .4byte gUnknown_20205AC +_0814B508: .4byte gUnknown_3005AD0 + thumb_func_end sub_0814B49C + + thumb_func_start sub_0814B50C +sub_0814B50C: @ 0x0814B50C + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0814B51E + bl sub_0814B800 +_0814B51E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814B50C + + thumb_func_start sub_0814B524 +sub_0814B524: @ 0x0814B524 + push {r4, lr} + ldr r1, _0814B560 + ldr r0, _0814B564 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _0814B568 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _0814B570 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _0814B56C + strb r3, [r0] + bl sub_0814B800 + b _0814B59A + .align 2, 0 +_0814B560: .4byte gUnknown_2023E88 +_0814B564: .4byte gUnknown_2023D08 +_0814B568: .4byte gUnknown_20205AC +_0814B56C: .4byte gUnknown_202415D +_0814B570: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0814B594 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0814B594: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_0814B59A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0814B524 + + thumb_func_start sub_0814B5A0 +sub_0814B5A0: @ 0x0814B5A0 + push {r4, lr} + ldr r2, _0814B5F8 + ldr r0, _0814B5FC + ldr r4, _0814B600 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0814B604 + cmp r1, r0 + bne _0814B5F2 + adds r0, r3, #0 + bl sub_0805E024 + ldr r0, _0814B608 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0814B5E6 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 +_0814B5E6: + ldr r0, _0814B60C + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0814B610 + str r0, [r1] +_0814B5F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B5F8: .4byte gUnknown_20205AC +_0814B5FC: .4byte gUnknown_3005AD0 +_0814B600: .4byte gUnknown_2023D08 +_0814B604: .4byte sub_08007140 +_0814B608: .4byte gUnknown_2024174 +_0814B60C: .4byte gUnknown_3005AC0 +_0814B610: .4byte sub_0814B614 + thumb_func_end sub_0814B5A0 + + thumb_func_start sub_0814B614 +sub_0814B614: @ 0x0814B614 + push {lr} + ldr r0, _0814B654 + ldr r1, [r0] + ldr r0, _0814B658 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0814B650 + ldr r2, _0814B65C + ldr r0, _0814B660 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0814B664 + cmp r1, r0 + bne _0814B650 + bl sub_0814B800 +_0814B650: + pop {r0} + bx r0 + .align 2, 0 +_0814B654: .4byte gUnknown_2024174 +_0814B658: .4byte gUnknown_2023D08 +_0814B65C: .4byte gUnknown_20205AC +_0814B660: .4byte gUnknown_2023E88 +_0814B664: .4byte sub_08007140 + thumb_func_end sub_0814B614 + + thumb_func_start sub_0814B668 +sub_0814B668: @ 0x0814B668 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r3, _0814B730 + ldr r0, [r3] + ldr r7, _0814B734 + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814B724 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _0814B738 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r0, _0814B73C + movs r1, #0xa + bl sub_080A8878 + ldr r0, _0814B740 + mov r8, r0 + ldrb r1, [r7] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0814B744 + adds r0, r0, r5 + bl sub_0805E5AC + ldr r1, _0814B748 + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0814B74C + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _0814B750 + ldrb r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r1, r1, #1 + add r1, r8 + ldrh r1, [r1] + muls r1, r6, r1 + adds r1, r1, r5 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + bl sub_08076320 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldr r1, _0814B754 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814B758 + str r1, [r0] +_0814B724: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814B730: .4byte gUnknown_2024174 +_0814B734: .4byte gUnknown_2023D08 +_0814B738: .4byte 0x000027F9 +_0814B73C: .4byte sub_08058D10 +_0814B740: .4byte gUnknown_2023D12 +_0814B744: .4byte gUnknown_2024190 +_0814B748: .4byte gUnknown_2023E88 +_0814B74C: .4byte gUnknown_20205AC +_0814B750: .4byte gUnknown_3005AD0 +_0814B754: .4byte gUnknown_3005AC0 +_0814B758: .4byte sub_0814B5A0 + thumb_func_end sub_0814B668 + + thumb_func_start sub_0814B75C +sub_0814B75C: @ 0x0814B75C + push {r4, r5, r6, lr} + ldr r6, _0814B7DC + ldr r0, [r6] + ldr r4, _0814B7E0 + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _0814B78E + ldr r0, _0814B7E4 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0814B7E8 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0814B78E: + ldr r5, _0814B7EC + ldr r0, _0814B7F0 + ldrb r2, [r4] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0814B7F4 + cmp r1, r0 + bne _0814B7D4 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0814B7D4 + adds r0, r3, r5 + bl sub_08006E00 + ldr r1, _0814B7F8 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814B7FC + str r1, [r0] +_0814B7D4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814B7DC: .4byte gUnknown_2024174 +_0814B7E0: .4byte gUnknown_2023D08 +_0814B7E4: .4byte gUnknown_2023D12 +_0814B7E8: .4byte gUnknown_2024190 +_0814B7EC: .4byte gUnknown_20205AC +_0814B7F0: .4byte gUnknown_3005ADC +_0814B7F4: .4byte sub_08007140 +_0814B7F8: .4byte gUnknown_3005AC0 +_0814B7FC: .4byte sub_0814B668 + thumb_func_end sub_0814B75C + + thumb_func_start sub_0814B800 +sub_0814B800: @ 0x0814B800 + push {r4, lr} + sub sp, #4 + ldr r1, _0814B840 + ldr r4, _0814B844 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814B848 + str r1, [r0] + ldr r0, _0814B84C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0814B854 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _0814B850 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _0814B866 + .align 2, 0 +_0814B840: .4byte gUnknown_3005AC0 +_0814B844: .4byte gUnknown_2023D08 +_0814B848: .4byte sub_0814AF8C +_0814B84C: .4byte gUnknown_2022C90 +_0814B850: .4byte gUnknown_2022D08 +_0814B854: + ldr r2, _0814B870 + ldr r1, _0814B874 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_0814B866: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814B870: .4byte gUnknown_2023D0C +_0814B874: .4byte gUnknown_82FACB4 + thumb_func_end sub_0814B800 + + thumb_func_start sub_0814B878 +sub_0814B878: @ 0x0814B878 + push {lr} + ldr r0, _0814B8A0 + ldr r2, [r0] + ldr r0, _0814B8A4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0814B89A + bl sub_0814B800 +_0814B89A: + pop {r0} + bx r0 + .align 2, 0 +_0814B8A0: .4byte gUnknown_2024174 +_0814B8A4: .4byte gUnknown_2023D08 + thumb_func_end sub_0814B878 + + thumb_func_start sub_0814B8A8 +sub_0814B8A8: @ 0x0814B8A8 + push {lr} + ldr r0, _0814B8D0 + ldr r2, [r0] + ldr r0, _0814B8D4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0814B8CA + bl sub_0814B800 +_0814B8CA: + pop {r0} + bx r0 + .align 2, 0 +_0814B8D0: .4byte gUnknown_2024174 +_0814B8D4: .4byte gUnknown_2023D08 + thumb_func_end sub_0814B8A8 + + thumb_func_start sub_0814B8D8 +sub_0814B8D8: @ 0x0814B8D8 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _0814B904 + ldr r0, _0814B908 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0814B910 + ldr r0, _0814B90C + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_0814B94C + adds r6, r0, #0 + b _0814B932 + .align 2, 0 +_0814B904: .4byte gUnknown_2022D08 +_0814B908: .4byte gUnknown_2023D08 +_0814B90C: .4byte gUnknown_2023D12 +_0814B910: + ldrb r4, [r1] + movs r5, #0 +_0814B914: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0814B92A + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_0814B94C + adds r6, r6, r0 +_0814B92A: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _0814B914 +_0814B932: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_0814B800 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814B8D8 + + thumb_func_start sub_0814B94C +sub_0814B94C: @ 0x0814B94C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _0814B980 + ldr r3, _0814B984 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _0814B976 + bl _0814C0E2 +_0814B976: + lsls r0, r0, #2 + ldr r1, _0814B988 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814B980: .4byte gUnknown_2022D08 +_0814B984: .4byte gUnknown_2023D08 +_0814B988: .4byte _0814B98C +_0814B98C: @ jump table + .4byte _0814BA7C @ case 0 + .4byte _0814BCA0 @ case 1 + .4byte _0814BCB0 @ case 2 + .4byte _0814BCC0 @ case 3 + .4byte _0814BD28 @ case 4 + .4byte _0814BD28 @ case 5 + .4byte _0814BD28 @ case 6 + .4byte _0814BD28 @ case 7 + .4byte _0814BD44 @ case 8 + .4byte _0814BD80 @ case 9 + .4byte _0814BD80 @ case 10 + .4byte _0814BD80 @ case 11 + .4byte _0814BD80 @ case 12 + .4byte _0814C0E2 @ case 13 + .4byte _0814C0E2 @ case 14 + .4byte _0814C0E2 @ case 15 + .4byte _0814C0E2 @ case 16 + .4byte _0814BD9C @ case 17 + .4byte _0814BDAC @ case 18 + .4byte _0814BDDC @ case 19 + .4byte _0814BDEC @ case 20 + .4byte _0814BDFC @ case 21 + .4byte _0814BE0C @ case 22 + .4byte _0814BE1C @ case 23 + .4byte _0814BE2C @ case 24 + .4byte _0814BE3C @ case 25 + .4byte _0814BE4C @ case 26 + .4byte _0814BE5C @ case 27 + .4byte _0814BE6C @ case 28 + .4byte _0814BE7C @ case 29 + .4byte _0814BE8C @ case 30 + .4byte _0814BE9C @ case 31 + .4byte _0814BEEC @ case 32 + .4byte _0814BEFC @ case 33 + .4byte _0814BF0C @ case 34 + .4byte _0814BF1C @ case 35 + .4byte _0814BF2C @ case 36 + .4byte _0814BF3C @ case 37 + .4byte _0814BF4C @ case 38 + .4byte _0814BF5C @ case 39 + .4byte _0814BF6C @ case 40 + .4byte _0814BFA0 @ case 41 + .4byte _0814BFB0 @ case 42 + .4byte _0814BFC0 @ case 43 + .4byte _0814BFD0 @ case 44 + .4byte _0814BFE0 @ case 45 + .4byte _0814BFF0 @ case 46 + .4byte _0814C000 @ case 47 + .4byte _0814C010 @ case 48 + .4byte _0814C030 @ case 49 + .4byte _0814C040 @ case 50 + .4byte _0814C050 @ case 51 + .4byte _0814C060 @ case 52 + .4byte _0814C070 @ case 53 + .4byte _0814C080 @ case 54 + .4byte _0814C090 @ case 55 + .4byte _0814C0A0 @ case 56 + .4byte _0814C0B0 @ case 57 + .4byte _0814C0C0 @ case 58 + .4byte _0814C0D0 @ case 59 +_0814BA7C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814BC90 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_0814BAC8: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0814BAC8 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814BC90 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _0814BC94 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _0814BC98 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _0814BC9C + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_0814BC80: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _0814BC80 + b _0814C0E2 + .align 2, 0 +_0814BC90: .4byte gUnknown_2024190 +_0814BC94: .4byte 0xFFFFFC1F +_0814BC98: .4byte 0xFFF07FFF +_0814BC9C: .4byte 0xFFFFFE0F +_0814BCA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BCAC + adds r0, r0, r1 + movs r1, #0xb + b _0814C01A + .align 2, 0 +_0814BCAC: .4byte gUnknown_2024190 +_0814BCB0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BCBC + adds r0, r0, r1 + movs r1, #0xc + b _0814C01A + .align 2, 0 +_0814BCBC: .4byte gUnknown_2024190 +_0814BCC0: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0814BD24 + adds r4, r1, r0 + mov r8, sb +_0814BCD6: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _0814BCD6 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BD24 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_0814BD14: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _0814BD14 + b _0814C0E2 + .align 2, 0 +_0814BD24: .4byte gUnknown_2024190 +_0814BD28: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BD40 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _0814C01A + .align 2, 0 +_0814BD40: .4byte gUnknown_2024190 +_0814BD44: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _0814BD7C + mov r8, r2 +_0814BD50: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _0814BD50 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BD7C + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _0814C0E2 + .align 2, 0 +_0814BD7C: .4byte gUnknown_2024190 +_0814BD80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BD98 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _0814C0DA + .align 2, 0 +_0814BD98: .4byte gUnknown_2024190 +_0814BD9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BDA8 + adds r0, r0, r1 + movs r1, #1 + b _0814BDB6 + .align 2, 0 +_0814BDA8: .4byte gUnknown_2024190 +_0814BDAC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BDD8 + adds r0, r0, r1 + movs r1, #0x19 +_0814BDB6: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _0814C0E2 + .align 2, 0 +_0814BDD8: .4byte gUnknown_2024190 +_0814BDDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BDE8 + adds r0, r0, r1 + movs r1, #0x1a + b _0814C0DA + .align 2, 0 +_0814BDE8: .4byte gUnknown_2024190 +_0814BDEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BDF8 + adds r0, r0, r1 + movs r1, #0x1b + b _0814C0DA + .align 2, 0 +_0814BDF8: .4byte gUnknown_2024190 +_0814BDFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE08 + adds r0, r0, r1 + movs r1, #0x1c + b _0814C0DA + .align 2, 0 +_0814BE08: .4byte gUnknown_2024190 +_0814BE0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE18 + adds r0, r0, r1 + movs r1, #0x1d + b _0814C0DA + .align 2, 0 +_0814BE18: .4byte gUnknown_2024190 +_0814BE1C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE28 + adds r0, r0, r1 + movs r1, #0x1e + b _0814C0DA + .align 2, 0 +_0814BE28: .4byte gUnknown_2024190 +_0814BE2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE38 + adds r0, r0, r1 + movs r1, #0x1f + b _0814C0DA + .align 2, 0 +_0814BE38: .4byte gUnknown_2024190 +_0814BE3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE48 + adds r0, r0, r1 + movs r1, #0x20 + b _0814C0DA + .align 2, 0 +_0814BE48: .4byte gUnknown_2024190 +_0814BE4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE58 + adds r0, r0, r1 + movs r1, #0x22 + b _0814C0DA + .align 2, 0 +_0814BE58: .4byte gUnknown_2024190 +_0814BE5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE68 + adds r0, r0, r1 + movs r1, #0x23 + b _0814C0DA + .align 2, 0 +_0814BE68: .4byte gUnknown_2024190 +_0814BE6C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE78 + adds r0, r0, r1 + movs r1, #0x24 + b _0814C0DA + .align 2, 0 +_0814BE78: .4byte gUnknown_2024190 +_0814BE7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE88 + adds r0, r0, r1 + movs r1, #0x25 + b _0814C0DA + .align 2, 0 +_0814BE88: .4byte gUnknown_2024190 +_0814BE8C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BE98 + adds r0, r0, r1 + movs r1, #0x26 + b _0814C0DA + .align 2, 0 +_0814BE98: .4byte gUnknown_2024190 +_0814BE9C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814BEE8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _0814C0E2 + .align 2, 0 +_0814BEE8: .4byte gUnknown_2024190 +_0814BEEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BEF8 + adds r0, r0, r1 + movs r1, #0x27 + b _0814C0DA + .align 2, 0 +_0814BEF8: .4byte gUnknown_2024190 +_0814BEFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF08 + adds r0, r0, r1 + movs r1, #0x28 + b _0814C0DA + .align 2, 0 +_0814BF08: .4byte gUnknown_2024190 +_0814BF0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF18 + adds r0, r0, r1 + movs r1, #0x29 + b _0814C0DA + .align 2, 0 +_0814BF18: .4byte gUnknown_2024190 +_0814BF1C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF28 + adds r0, r0, r1 + movs r1, #0x2a + b _0814C0DA + .align 2, 0 +_0814BF28: .4byte gUnknown_2024190 +_0814BF2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF38 + adds r0, r0, r1 + movs r1, #0x2b + b _0814C0DA + .align 2, 0 +_0814BF38: .4byte gUnknown_2024190 +_0814BF3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF48 + adds r0, r0, r1 + movs r1, #0x2c + b _0814C0DA + .align 2, 0 +_0814BF48: .4byte gUnknown_2024190 +_0814BF4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF58 + adds r0, r0, r1 + movs r1, #0 + b _0814BF76 + .align 2, 0 +_0814BF58: .4byte gUnknown_2024190 +_0814BF5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF68 + adds r0, r0, r1 + movs r1, #9 + b _0814C01A + .align 2, 0 +_0814BF68: .4byte gUnknown_2024190 +_0814BF6C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BF9C + adds r0, r0, r1 + movs r1, #0x37 +_0814BF76: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _0814C0E2 + .align 2, 0 +_0814BF9C: .4byte gUnknown_2024190 +_0814BFA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFAC + adds r0, r0, r1 + movs r1, #0x38 + b _0814C0DA + .align 2, 0 +_0814BFAC: .4byte gUnknown_2024190 +_0814BFB0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFBC + adds r0, r0, r1 + movs r1, #0x39 + b _0814C01A + .align 2, 0 +_0814BFBC: .4byte gUnknown_2024190 +_0814BFC0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFCC + adds r0, r0, r1 + movs r1, #0x3a + b _0814C01A + .align 2, 0 +_0814BFCC: .4byte gUnknown_2024190 +_0814BFD0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFDC + adds r0, r0, r1 + movs r1, #0x3b + b _0814C01A + .align 2, 0 +_0814BFDC: .4byte gUnknown_2024190 +_0814BFE0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFEC + adds r0, r0, r1 + movs r1, #0x3c + b _0814C01A + .align 2, 0 +_0814BFEC: .4byte gUnknown_2024190 +_0814BFF0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814BFFC + adds r0, r0, r1 + movs r1, #0x3d + b _0814C01A + .align 2, 0 +_0814BFFC: .4byte gUnknown_2024190 +_0814C000: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C00C + adds r0, r0, r1 + movs r1, #0x3e + b _0814C01A + .align 2, 0 +_0814C00C: .4byte gUnknown_2024190 +_0814C010: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C02C + adds r0, r0, r1 + movs r1, #0x3f +_0814C01A: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _0814C0E2 + .align 2, 0 +_0814C02C: .4byte gUnknown_2024190 +_0814C030: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C03C + adds r0, r0, r1 + movs r1, #0x16 + b _0814C0DA + .align 2, 0 +_0814C03C: .4byte gUnknown_2024190 +_0814C040: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C04C + adds r0, r0, r1 + movs r1, #0x17 + b _0814C0DA + .align 2, 0 +_0814C04C: .4byte gUnknown_2024190 +_0814C050: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C05C + adds r0, r0, r1 + movs r1, #0x18 + b _0814C0DA + .align 2, 0 +_0814C05C: .4byte gUnknown_2024190 +_0814C060: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C06C + adds r0, r0, r1 + movs r1, #0x21 + b _0814C0DA + .align 2, 0 +_0814C06C: .4byte gUnknown_2024190 +_0814C070: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C07C + adds r0, r0, r1 + movs r1, #0x2f + b _0814C0DA + .align 2, 0 +_0814C07C: .4byte gUnknown_2024190 +_0814C080: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C08C + adds r0, r0, r1 + movs r1, #0x30 + b _0814C0DA + .align 2, 0 +_0814C08C: .4byte gUnknown_2024190 +_0814C090: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C09C + adds r0, r0, r1 + movs r1, #0x32 + b _0814C0DA + .align 2, 0 +_0814C09C: .4byte gUnknown_2024190 +_0814C0A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C0AC + adds r0, r0, r1 + movs r1, #0x33 + b _0814C0DA + .align 2, 0 +_0814C0AC: .4byte gUnknown_2024190 +_0814C0B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C0BC + adds r0, r0, r1 + movs r1, #0x34 + b _0814C0DA + .align 2, 0 +_0814C0BC: .4byte gUnknown_2024190 +_0814C0C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C0CC + adds r0, r0, r1 + movs r1, #0x35 + b _0814C0DA + .align 2, 0 +_0814C0CC: .4byte gUnknown_2024190 +_0814C0D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C0F4 + adds r0, r0, r1 + movs r1, #0x36 +_0814C0DA: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_0814C0E2: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0814C0F4: .4byte gUnknown_2024190 + thumb_func_end sub_0814B94C + + thumb_func_start sub_0814C0F8 +sub_0814C0F8: @ 0x0814C0F8 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814C0F8 + + thumb_func_start sub_0814C104 +sub_0814C104: @ 0x0814C104 + push {r4, r5, lr} + ldr r1, _0814C128 + ldr r0, _0814C12C + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0814C134 + ldr r0, _0814C130 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0814C15C + b _0814C152 + .align 2, 0 +_0814C128: .4byte gUnknown_2022D08 +_0814C12C: .4byte gUnknown_2023D08 +_0814C130: .4byte gUnknown_2023D12 +_0814C134: + ldrb r4, [r1] + movs r5, #0 +_0814C138: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0814C146 + adds r0, r5, #0 + bl sub_0814C15C +_0814C146: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0814C138 +_0814C152: + bl sub_0814B800 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0814C104 + + thumb_func_start sub_0814C15C +sub_0814C15C: @ 0x0814C15C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0814C194 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r2, _0814C198 + adds r3, r0, r2 + adds r6, r3, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r2, #0 + cmp r0, #0x3b + bls _0814C188 + bl _0814CB22 +_0814C188: + lsls r0, r0, #2 + ldr r1, _0814C19C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814C194: .4byte gUnknown_2023D08 +_0814C198: .4byte gUnknown_2022D0B +_0814C19C: .4byte _0814C1A0 +_0814C1A0: @ jump table + .4byte _0814C290 @ case 0 + .4byte _0814C428 @ case 1 + .4byte _0814C448 @ case 2 + .4byte _0814C468 @ case 3 + .4byte _0814C4C0 @ case 4 + .4byte _0814C4C0 @ case 5 + .4byte _0814C4C0 @ case 6 + .4byte _0814C4C0 @ case 7 + .4byte _0814C4E8 @ case 8 + .4byte _0814C54C @ case 9 + .4byte _0814C54C @ case 10 + .4byte _0814C54C @ case 11 + .4byte _0814C54C @ case 12 + .4byte _0814CB22 @ case 13 + .4byte _0814CB22 @ case 14 + .4byte _0814CB22 @ case 15 + .4byte _0814CB22 @ case 16 + .4byte _0814C57C @ case 17 + .4byte _0814C59C @ case 18 + .4byte _0814C5BC @ case 19 + .4byte _0814C5DC @ case 20 + .4byte _0814C5FC @ case 21 + .4byte _0814C61C @ case 22 + .4byte _0814C63C @ case 23 + .4byte _0814C65C @ case 24 + .4byte _0814C67C @ case 25 + .4byte _0814C69C @ case 26 + .4byte _0814C6BC @ case 27 + .4byte _0814C6DC @ case 28 + .4byte _0814C6FC @ case 29 + .4byte _0814C71C @ case 30 + .4byte _0814C73C @ case 31 + .4byte _0814C7AC @ case 32 + .4byte _0814C7CC @ case 33 + .4byte _0814C7EC @ case 34 + .4byte _0814C80C @ case 35 + .4byte _0814C82C @ case 36 + .4byte _0814C84C @ case 37 + .4byte _0814C86C @ case 38 + .4byte _0814C88C @ case 39 + .4byte _0814C8AC @ case 40 + .4byte _0814C8CC @ case 41 + .4byte _0814C8EC @ case 42 + .4byte _0814C90C @ case 43 + .4byte _0814C92C @ case 44 + .4byte _0814C94C @ case 45 + .4byte _0814C96C @ case 46 + .4byte _0814C98C @ case 47 + .4byte _0814C9AC @ case 48 + .4byte _0814C9CC @ case 49 + .4byte _0814C9EC @ case 50 + .4byte _0814CA0C @ case 51 + .4byte _0814CA2C @ case 52 + .4byte _0814CA4C @ case 53 + .4byte _0814CA6C @ case 54 + .4byte _0814CA8C @ case 55 + .4byte _0814CAAC @ case 56 + .4byte _0814CACC @ case 57 + .4byte _0814CAEC @ case 58 + .4byte _0814CB0C @ case 59 +_0814C290: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814C424 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r6, #0 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r6 + mov sl, r0 + adds r0, r6, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r6, #2 + str r0, [sp, #4] + adds r0, r6, #4 + str r0, [sp, #8] + adds r0, r6, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r7, r6, #0 + adds r7, #0x24 + adds r4, r6, #0 + adds r4, #0xc +_0814C2F6: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r7, #0 + bl sub_0806A774 + adds r7, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0814C2F6 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814C424 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r6, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C424: .4byte gUnknown_2024190 +_0814C428: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C440 + adds r0, r0, r1 + ldr r1, _0814C444 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xb + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C440: .4byte gUnknown_2024190 +_0814C444: .4byte gUnknown_2023D08 +_0814C448: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C460 + adds r0, r0, r1 + ldr r1, _0814C464 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xc + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C460: .4byte gUnknown_2024190 +_0814C464: .4byte gUnknown_2023D08 +_0814C468: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r3 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0814C4BC + adds r7, r1, r0 + adds r6, r3, #0 + adds r6, #8 + adds r4, r3, #0 +_0814C482: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0814C482 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C4BC + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C4BC: .4byte gUnknown_2024190 +_0814C4C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C4DC + adds r0, r0, r1 + ldr r3, _0814C4E0 + ldr r1, _0814C4E4 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _0814C564 + .align 2, 0 +_0814C4DC: .4byte gUnknown_2024190 +_0814C4E0: .4byte gUnknown_2022D08 +_0814C4E4: .4byte gUnknown_2023D08 +_0814C4E8: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814C544 + adds r4, r4, r0 + ldr r5, _0814C548 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C544: .4byte gUnknown_2024190 +_0814C548: .4byte gUnknown_2023D08 +_0814C54C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C570 + adds r0, r0, r1 + ldr r3, _0814C574 + ldr r1, _0814C578 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_0814C564: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C570: .4byte gUnknown_2024190 +_0814C574: .4byte gUnknown_2022D08 +_0814C578: .4byte gUnknown_2023D08 +_0814C57C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C594 + adds r0, r0, r1 + ldr r1, _0814C598 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #1 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C594: .4byte gUnknown_2024190 +_0814C598: .4byte gUnknown_2023D08 +_0814C59C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C5B4 + adds r0, r0, r1 + ldr r1, _0814C5B8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x19 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C5B4: .4byte gUnknown_2024190 +_0814C5B8: .4byte gUnknown_2023D08 +_0814C5BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C5D4 + adds r0, r0, r1 + ldr r1, _0814C5D8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1a + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C5D4: .4byte gUnknown_2024190 +_0814C5D8: .4byte gUnknown_2023D08 +_0814C5DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C5F4 + adds r0, r0, r1 + ldr r1, _0814C5F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1b + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C5F4: .4byte gUnknown_2024190 +_0814C5F8: .4byte gUnknown_2023D08 +_0814C5FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C614 + adds r0, r0, r1 + ldr r1, _0814C618 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1c + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C614: .4byte gUnknown_2024190 +_0814C618: .4byte gUnknown_2023D08 +_0814C61C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C634 + adds r0, r0, r1 + ldr r1, _0814C638 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1d + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C634: .4byte gUnknown_2024190 +_0814C638: .4byte gUnknown_2023D08 +_0814C63C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C654 + adds r0, r0, r1 + ldr r1, _0814C658 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1e + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C654: .4byte gUnknown_2024190 +_0814C658: .4byte gUnknown_2023D08 +_0814C65C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C674 + adds r0, r0, r1 + ldr r1, _0814C678 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1f + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C674: .4byte gUnknown_2024190 +_0814C678: .4byte gUnknown_2023D08 +_0814C67C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C694 + adds r0, r0, r1 + ldr r1, _0814C698 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x20 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C694: .4byte gUnknown_2024190 +_0814C698: .4byte gUnknown_2023D08 +_0814C69C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C6B4 + adds r0, r0, r1 + ldr r1, _0814C6B8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x22 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C6B4: .4byte gUnknown_2024190 +_0814C6B8: .4byte gUnknown_2023D08 +_0814C6BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C6D4 + adds r0, r0, r1 + ldr r1, _0814C6D8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x23 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C6D4: .4byte gUnknown_2024190 +_0814C6D8: .4byte gUnknown_2023D08 +_0814C6DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C6F4 + adds r0, r0, r1 + ldr r1, _0814C6F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x24 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C6F4: .4byte gUnknown_2024190 +_0814C6F8: .4byte gUnknown_2023D08 +_0814C6FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C714 + adds r0, r0, r1 + ldr r1, _0814C718 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x25 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C714: .4byte gUnknown_2024190 +_0814C718: .4byte gUnknown_2023D08 +_0814C71C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C734 + adds r0, r0, r1 + ldr r1, _0814C738 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x26 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C734: .4byte gUnknown_2024190 +_0814C738: .4byte gUnknown_2023D08 +_0814C73C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0814C7A4 + adds r4, r4, r0 + ldr r5, _0814C7A8 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _0814C85C + .align 2, 0 +_0814C7A4: .4byte gUnknown_2024190 +_0814C7A8: .4byte gUnknown_2023D08 +_0814C7AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C7C4 + adds r0, r0, r1 + ldr r1, _0814C7C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x27 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C7C4: .4byte gUnknown_2024190 +_0814C7C8: .4byte gUnknown_2023D08 +_0814C7CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C7E4 + adds r0, r0, r1 + ldr r1, _0814C7E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x28 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C7E4: .4byte gUnknown_2024190 +_0814C7E8: .4byte gUnknown_2023D08 +_0814C7EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C804 + adds r0, r0, r1 + ldr r1, _0814C808 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x29 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C804: .4byte gUnknown_2024190 +_0814C808: .4byte gUnknown_2023D08 +_0814C80C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C824 + adds r0, r0, r1 + ldr r1, _0814C828 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2a + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C824: .4byte gUnknown_2024190 +_0814C828: .4byte gUnknown_2023D08 +_0814C82C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C844 + adds r0, r0, r1 + ldr r1, _0814C848 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2b + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C844: .4byte gUnknown_2024190 +_0814C848: .4byte gUnknown_2023D08 +_0814C84C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C864 + adds r0, r0, r1 + ldr r1, _0814C868 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 +_0814C85C: + movs r1, #0x2c + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C864: .4byte gUnknown_2024190 +_0814C868: .4byte gUnknown_2023D08 +_0814C86C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C884 + adds r0, r0, r1 + ldr r1, _0814C888 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C884: .4byte gUnknown_2024190 +_0814C888: .4byte gUnknown_2023D08 +_0814C88C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C8A4 + adds r0, r0, r1 + ldr r1, _0814C8A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #9 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C8A4: .4byte gUnknown_2024190 +_0814C8A8: .4byte gUnknown_2023D08 +_0814C8AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C8C4 + adds r0, r0, r1 + ldr r1, _0814C8C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x37 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C8C4: .4byte gUnknown_2024190 +_0814C8C8: .4byte gUnknown_2023D08 +_0814C8CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C8E4 + adds r0, r0, r1 + ldr r1, _0814C8E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x38 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C8E4: .4byte gUnknown_2024190 +_0814C8E8: .4byte gUnknown_2023D08 +_0814C8EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C904 + adds r0, r0, r1 + ldr r1, _0814C908 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x39 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C904: .4byte gUnknown_2024190 +_0814C908: .4byte gUnknown_2023D08 +_0814C90C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C924 + adds r0, r0, r1 + ldr r1, _0814C928 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3a + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C924: .4byte gUnknown_2024190 +_0814C928: .4byte gUnknown_2023D08 +_0814C92C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C944 + adds r0, r0, r1 + ldr r1, _0814C948 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3b + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C944: .4byte gUnknown_2024190 +_0814C948: .4byte gUnknown_2023D08 +_0814C94C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C964 + adds r0, r0, r1 + ldr r1, _0814C968 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3c + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C964: .4byte gUnknown_2024190 +_0814C968: .4byte gUnknown_2023D08 +_0814C96C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C984 + adds r0, r0, r1 + ldr r1, _0814C988 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3d + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C984: .4byte gUnknown_2024190 +_0814C988: .4byte gUnknown_2023D08 +_0814C98C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C9A4 + adds r0, r0, r1 + ldr r1, _0814C9A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3e + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C9A4: .4byte gUnknown_2024190 +_0814C9A8: .4byte gUnknown_2023D08 +_0814C9AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C9C4 + adds r0, r0, r1 + ldr r1, _0814C9C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3f + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C9C4: .4byte gUnknown_2024190 +_0814C9C8: .4byte gUnknown_2023D08 +_0814C9CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814C9E4 + adds r0, r0, r1 + ldr r1, _0814C9E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x16 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814C9E4: .4byte gUnknown_2024190 +_0814C9E8: .4byte gUnknown_2023D08 +_0814C9EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CA04 + adds r0, r0, r1 + ldr r1, _0814CA08 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x17 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CA04: .4byte gUnknown_2024190 +_0814CA08: .4byte gUnknown_2023D08 +_0814CA0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CA24 + adds r0, r0, r1 + ldr r1, _0814CA28 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x18 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CA24: .4byte gUnknown_2024190 +_0814CA28: .4byte gUnknown_2023D08 +_0814CA2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CA44 + adds r0, r0, r1 + ldr r1, _0814CA48 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x21 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CA44: .4byte gUnknown_2024190 +_0814CA48: .4byte gUnknown_2023D08 +_0814CA4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CA64 + adds r0, r0, r1 + ldr r1, _0814CA68 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2f + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CA64: .4byte gUnknown_2024190 +_0814CA68: .4byte gUnknown_2023D08 +_0814CA6C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CA84 + adds r0, r0, r1 + ldr r1, _0814CA88 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x30 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CA84: .4byte gUnknown_2024190 +_0814CA88: .4byte gUnknown_2023D08 +_0814CA8C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CAA4 + adds r0, r0, r1 + ldr r1, _0814CAA8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x32 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CAA4: .4byte gUnknown_2024190 +_0814CAA8: .4byte gUnknown_2023D08 +_0814CAAC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CAC4 + adds r0, r0, r1 + ldr r1, _0814CAC8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x33 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CAC4: .4byte gUnknown_2024190 +_0814CAC8: .4byte gUnknown_2023D08 +_0814CACC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CAE4 + adds r0, r0, r1 + ldr r1, _0814CAE8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x34 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CAE4: .4byte gUnknown_2024190 +_0814CAE8: .4byte gUnknown_2023D08 +_0814CAEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CB04 + adds r0, r0, r1 + ldr r1, _0814CB08 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x35 + bl sub_0806A774 + b _0814CB22 + .align 2, 0 +_0814CB04: .4byte gUnknown_2024190 +_0814CB08: .4byte gUnknown_2023D08 +_0814CB0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0814CB4C + adds r0, r0, r1 + ldr r1, _0814CB50 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x36 + bl sub_0806A774 +_0814CB22: + ldr r2, _0814CB54 + ldr r0, _0814CB50 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0814CB4C + adds r0, r0, r2 + bl sub_0805E5AC + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814CB4C: .4byte gUnknown_2024190 +_0814CB50: .4byte gUnknown_2023D08 +_0814CB54: .4byte gUnknown_2023D12 + thumb_func_end sub_0814C15C + + thumb_func_start sub_0814CB58 +sub_0814CB58: @ 0x0814CB58 + push {r4, r5, r6, r7, lr} + ldr r1, _0814CBBC + ldr r7, _0814CBC0 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _0814CBC4 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _0814CBC8 + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _0814CBB0 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_0814CB8E: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _0814CB8E +_0814CBB0: + bl sub_0814B800 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814CBBC: .4byte gUnknown_2023D12 +_0814CBC0: .4byte gUnknown_2023D08 +_0814CBC4: .4byte gUnknown_2022D08 +_0814CBC8: .4byte gUnknown_2024190 + thumb_func_end sub_0814CB58 + + thumb_func_start sub_0814CBCC +sub_0814CBCC: @ 0x0814CBCC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _0814CCC0 + mov r8, r0 + ldr r6, _0814CCC4 + ldrb r1, [r6] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0814CCC8 + adds r0, r0, r4 + bl sub_0805D998 + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r0, _0814CCCC + mov r8, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0814CCD0 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _0814CCD4 + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0814CCD8 + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0814CCDC + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldr r1, _0814CCE0 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814CCE4 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814CCC0: .4byte gUnknown_2023D12 +_0814CCC4: .4byte gUnknown_2023D08 +_0814CCC8: .4byte gUnknown_2024190 +_0814CCCC: .4byte gUnknown_2024640 +_0814CCD0: .4byte gUnknown_2023E88 +_0814CCD4: .4byte gUnknown_20205AC +_0814CCD8: .4byte 0x0000FF10 +_0814CCDC: .4byte gUnknown_2024188 +_0814CCE0: .4byte gUnknown_3005AC0 +_0814CCE4: .4byte sub_0814B350 + thumb_func_end sub_0814CBCC + + thumb_func_start sub_0814CCE8 +sub_0814CCE8: @ 0x0814CCE8 + push {r4, r5, r6, lr} + ldr r5, _0814CD40 + ldrb r0, [r5] + ldr r4, _0814CD44 + lsls r1, r0, #9 + adds r6, r4, #2 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0805EBA0 + ldr r2, _0814CD48 + ldrb r0, [r5] + lsls r1, r0, #1 + adds r1, r1, r2 + lsls r0, r0, #9 + adds r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0814CD4C + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r5] + lsls r1, r0, #9 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0814CD58 + ldr r1, _0814CD50 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814CD54 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814CD40: .4byte gUnknown_2023D08 +_0814CD44: .4byte gUnknown_2022D08 +_0814CD48: .4byte gUnknown_2023D12 +_0814CD4C: .4byte gUnknown_2024190 +_0814CD50: .4byte gUnknown_3005AC0 +_0814CD54: .4byte sub_0814B75C + thumb_func_end sub_0814CCE8 + + thumb_func_start sub_0814CD58 +sub_0814CD58: @ 0x0814CD58 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _0814CEAC + lsls r2, r6, #1 + adds r2, r2, r0 + ldr r0, _0814CEB0 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814CEB4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0814CEB8 + bl sub_0806F0C4 + ldr r1, _0814CEBC + mov sb, r1 + add sb, r6 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _0814CEC0 + mov sl, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0814CEC4 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0814CEC8 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0814CECC + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0814CED0 + str r1, [r0] + movs r0, #0 + movs r1, #0xff + bl sub_08074DF0 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814CEAC: .4byte gUnknown_2023D12 +_0814CEB0: .4byte gUnknown_2022D08 +_0814CEB4: .4byte gUnknown_2024190 +_0814CEB8: .4byte sub_0805D330 +_0814CEBC: .4byte gUnknown_3005ADC +_0814CEC0: .4byte gUnknown_2024640 +_0814CEC4: .4byte gUnknown_2023E88 +_0814CEC8: .4byte gUnknown_20205AC +_0814CECC: .4byte gUnknown_2024188 +_0814CED0: .4byte sub_08007140 + thumb_func_end sub_0814CD58 + + thumb_func_start sub_0814CED4 +sub_0814CED4: @ 0x0814CED4 + push {r4, r5, r6, lr} + ldr r1, _0814CF08 + ldr r6, _0814CF0C + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _0814CF1C + ldr r0, _0814CF10 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _0814CF14 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814CF18 + str r1, [r0] + b _0814CF52 + .align 2, 0 +_0814CF08: .4byte gUnknown_2022D08 +_0814CF0C: .4byte gUnknown_2023D08 +_0814CF10: .4byte gUnknown_2024174 +_0814CF14: .4byte gUnknown_3005AC0 +_0814CF18: .4byte sub_0814CF64 +_0814CF1C: + ldr r5, _0814CF58 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0814CF5C + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _0814CF60 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0814B800 +_0814CF52: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814CF58: .4byte gUnknown_2023E88 +_0814CF5C: .4byte gUnknown_20205AC +_0814CF60: .4byte gUnknown_3005AD0 + thumb_func_end sub_0814CED4 + + thumb_func_start sub_0814CF64 +sub_0814CF64: @ 0x0814CF64 + push {r4, r5, r6, lr} + ldr r6, _0814CF84 + ldr r4, [r6] + ldr r5, _0814CF88 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _0814CF8C + cmp r0, #1 + beq _0814CFBA + b _0814CFE2 + .align 2, 0 +_0814CF84: .4byte gUnknown_2024174 +_0814CF88: .4byte gUnknown_2023D08 +_0814CF8C: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0814CFA6 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0814CFA6: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0814CFE2 +_0814CFBA: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0814CFE2 + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #1 + bl sub_0805D6E0 + ldr r1, _0814CFE8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814CFEC + str r1, [r0] +_0814CFE2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814CFE8: .4byte gUnknown_3005AC0 +_0814CFEC: .4byte sub_0814B49C + thumb_func_end sub_0814CF64 + + thumb_func_start sub_0814CFF0 +sub_0814CFF0: @ 0x0814CFF0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0814D018 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814D020 + ldr r0, _0814D01C + ldrb r0, [r0] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r7, #0x20 + cmp r1, #0 + beq _0814D022 + movs r7, #0x5a + b _0814D022 + .align 2, 0 +_0814D018: .4byte gUnknown_2022C90 +_0814D01C: .4byte gUnknown_2023D08 +_0814D020: + movs r7, #0x50 +_0814D022: + ldr r5, _0814D068 + ldrb r0, [r5] + bl sub_0806D300 + ldr r6, _0814D06C + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r4, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _0814D054 + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #5 + bne _0814D070 +_0814D054: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + adds r4, r0, #2 + b _0814D0C2 + .align 2, 0 +_0814D068: .4byte gUnknown_2023D08 +_0814D06C: .4byte gUnknown_20226A0 +_0814D070: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r1, [r1] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #2 + beq _0814D09E + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrh r0, [r1] + ands r4, r0 + cmp r4, #1 + bne _0814D0B2 +_0814D09E: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r0, [r1, #0x13] + adds r4, r0, #4 + b _0814D0C2 +_0814D0B2: + ldrb r0, [r5] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r4, [r1, #0x13] +_0814D0C2: + ldr r5, _0814D180 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_0805DBA0 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r6, _0814D184 + mov r8, r7 + ldr r0, _0814D188 + lsls r4, r4, #2 + adds r4, r4, r0 + ldrb r0, [r4] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r0, #0xa0 + lsls r0, r0, #0xf + adds r4, r4, r0 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _0814D18C + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _0814D190 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0814D194 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0814D198 + str r1, [r0] + ldr r1, _0814D19C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D1A0 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814D180: .4byte gUnknown_2023D08 +_0814D184: .4byte gUnknown_2024640 +_0814D188: .4byte gUnknown_82D95BC +_0814D18C: .4byte gUnknown_2023E88 +_0814D190: .4byte gUnknown_20205AC +_0814D194: .4byte 0x0000FFFE +_0814D198: .4byte sub_0805D3C8 +_0814D19C: .4byte gUnknown_3005AC0 +_0814D1A0: .4byte sub_0814AFDC + thumb_func_end sub_0814CFF0 + + thumb_func_start sub_0814D1A4 +sub_0814D1A4: @ 0x0814D1A4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D1A4 + + thumb_func_start sub_0814D1B0 +sub_0814D1B0: @ 0x0814D1B0 + push {r4, r5, r6, lr} + ldr r6, _0814D23C + ldr r4, _0814D240 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0814D244 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0814D248 + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0814D24C + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0814D250 + bl sub_080A5B9C + ldr r1, _0814D254 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D258 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814D23C: .4byte gUnknown_2023E88 +_0814D240: .4byte gUnknown_2023D08 +_0814D244: .4byte gUnknown_20205AC +_0814D248: .4byte 0x0000FFD8 +_0814D24C: .4byte sub_080A67B4 +_0814D250: .4byte sub_08007140 +_0814D254: .4byte gUnknown_3005AC0 +_0814D258: .4byte sub_0814B014 + thumb_func_end sub_0814D1B0 + + thumb_func_start sub_0814D25C +sub_0814D25C: @ 0x0814D25C + push {r4, r5, r6, lr} + ldr r6, _0814D2A8 + ldr r4, [r6] + ldr r5, _0814D2AC + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _0814D2B0 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0814D290 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0814D290: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _0814D326 + .align 2, 0 +_0814D2A8: .4byte gUnknown_2024174 +_0814D2AC: .4byte gUnknown_2023D08 +_0814D2B0: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0814D326 + strb r4, [r3, #4] + ldr r2, _0814D32C + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0814D330 + adds r0, r0, r2 + bl sub_0805E5AC + movs r1, #0x40 + rsbs r1, r1, #0 + movs r0, #0x10 + bl sub_080A307C + ldr r2, _0814D334 + ldr r3, _0814D338 + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x30] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #5 + strh r1, [r0, #0x32] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0814D33C + str r1, [r0] + ldr r1, _0814D340 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D344 + str r1, [r0] +_0814D326: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814D32C: .4byte gUnknown_2023D12 +_0814D330: .4byte gUnknown_2024190 +_0814D334: .4byte gUnknown_20205AC +_0814D338: .4byte gUnknown_2023E88 +_0814D33C: .4byte sub_08039844 +_0814D340: .4byte gUnknown_3005AC0 +_0814D344: .4byte sub_0814B400 + thumb_func_end sub_0814D25C + + thumb_func_start sub_0814D348 +sub_0814D348: @ 0x0814D348 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D348 + + thumb_func_start sub_0814D354 +sub_0814D354: @ 0x0814D354 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D354 + + thumb_func_start sub_0814D360 +sub_0814D360: @ 0x0814D360 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D360 + + thumb_func_start sub_0814D36C +sub_0814D36C: @ 0x0814D36C + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D36C + + thumb_func_start sub_0814D378 +sub_0814D378: @ 0x0814D378 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _0814D468 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814D38E + b _0814D4B4 +_0814D38E: + ldr r0, _0814D46C + mov ip, r0 + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, #1 + adds r0, r1, r0 + ldrb r6, [r0] + mov r0, ip + adds r0, #2 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r6, r0 + ldr r0, _0814D470 + mov r8, r0 + mov r0, ip + adds r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, r8 + strb r0, [r1] + ldr r3, _0814D474 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #4 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #5 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r3] + ldr r3, _0814D478 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #6 + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #7 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r2, r0 + mov r0, ip + adds r0, #8 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x10 + orrs r2, r0 + mov r0, ip + adds r0, #9 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x18 + orrs r2, r0 + str r2, [r3] + ldr r2, _0814D47C + ldrb r0, [r5] + lsls r0, r0, #9 + mov r1, ip + adds r1, #0xa + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r4, _0814D480 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0xc + adds r0, r1, r0 + ldrb r2, [r0] + mov r0, ip + adds r0, #0xd + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r2, r0 + strh r2, [r4] + ldr r7, _0814D484 + ldrb r1, [r5] + lsls r1, r1, #9 + mov r0, ip + adds r0, #0x10 + adds r1, r1, r0 + str r1, [r7] + ldr r2, _0814D488 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, r8 + ldrb r1, [r0] + adds r0, r6, #0 + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0814D48C + bl sub_0814B800 + b _0814D4B4 + .align 2, 0 +_0814D468: .4byte gUnknown_2023D08 +_0814D46C: .4byte gUnknown_2022D08 +_0814D470: .4byte gUnknown_20380D2 +_0814D474: .4byte gUnknown_20380A8 +_0814D478: .4byte gUnknown_20380A4 +_0814D47C: .4byte gUnknown_20380BA +_0814D480: .4byte gUnknown_20380BC +_0814D484: .4byte gUnknown_20380A0 +_0814D488: .4byte gUnknown_2024160 +_0814D48C: + ldr r0, _0814D4C0 + ldr r0, [r0] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _0814D4C4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D4C8 + str r1, [r0] + ldrh r1, [r4] + ldr r2, [r7] + adds r0, r6, #0 + bl sub_0817DFA8 +_0814D4B4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814D4C0: .4byte gUnknown_2024174 +_0814D4C4: .4byte gUnknown_3005AC0 +_0814D4C8: .4byte sub_0814D4CC + thumb_func_end sub_0814D378 + + thumb_func_start sub_0814D4CC +sub_0814D4CC: @ 0x0814D4CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _0814D518 + ldr r6, _0814D51C + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _0814D520 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _0814D564 + cmp r2, #1 + bgt _0814D524 + cmp r2, #0 + beq _0814D52E + b _0814D640 + .align 2, 0 +_0814D518: .4byte gUnknown_2022D08 +_0814D51C: .4byte gUnknown_2023D08 +_0814D520: .4byte gUnknown_2024174 +_0814D524: + cmp r2, #2 + beq _0814D58E + cmp r2, #3 + beq _0814D604 + b _0814D640 +_0814D52E: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _0814D550 + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0814D550: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0814D640 +_0814D564: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0814D640 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _0814D640 +_0814D58E: + ldr r0, _0814D5F4 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0814D5F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0814D640 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0814D5DC + mov r0, r8 + cmp r0, #1 + bhi _0814D5DC + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0814D5DC: + ldr r0, _0814D5FC + ldr r2, [r0] + ldr r0, _0814D600 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _0814D640 + .align 2, 0 +_0814D5F4: .4byte gUnknown_2038098 +_0814D5F8: .4byte gUnknown_203809D +_0814D5FC: .4byte gUnknown_2024174 +_0814D600: .4byte gUnknown_2023D08 +_0814D604: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0814D640 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_0814B800 +_0814D640: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D4CC + + thumb_func_start sub_0814D650 +sub_0814D650: @ 0x0814D650 + push {r4, r5, lr} + ldr r0, _0814D68C + movs r1, #0 + strh r1, [r0] + ldr r0, _0814D690 + strh r1, [r0] + ldr r5, _0814D694 + ldrb r4, [r5] + lsls r4, r4, #9 + ldr r0, _0814D698 + adds r4, r4, r0 + ldrh r0, [r4] + bl sub_0814E184 + ldr r0, _0814D69C + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0814D6A0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D6A4 + str r1, [r0] + ldrh r0, [r4] + bl sub_0817C808 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814D68C: .4byte gUnknown_2022AC8 +_0814D690: .4byte gUnknown_2022ACA +_0814D694: .4byte gUnknown_2023D08 +_0814D698: .4byte gUnknown_2022D0A +_0814D69C: .4byte gUnknown_2022AE0 +_0814D6A0: .4byte gUnknown_3005AC0 +_0814D6A4: .4byte sub_0814B50C + thumb_func_end sub_0814D650 + + thumb_func_start sub_0814D6A8 +sub_0814D6A8: @ 0x0814D6A8 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6A8 + + thumb_func_start sub_0814D6B4 +sub_0814D6B4: @ 0x0814D6B4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6B4 + + thumb_func_start sub_0814D6C0 +sub_0814D6C0: @ 0x0814D6C0 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6C0 + + thumb_func_start sub_0814D6CC +sub_0814D6CC: @ 0x0814D6CC + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6CC + + thumb_func_start sub_0814D6D8 +sub_0814D6D8: @ 0x0814D6D8 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6D8 + + thumb_func_start sub_0814D6E4 +sub_0814D6E4: @ 0x0814D6E4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6E4 + + thumb_func_start sub_0814D6F0 +sub_0814D6F0: @ 0x0814D6F0 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D6F0 + + thumb_func_start sub_0814D6FC +sub_0814D6FC: @ 0x0814D6FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _0814D774 + ldr r0, _0814D778 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _0814D77C + cmp r7, r0 + beq _0814D78C + ldr r6, _0814D780 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0814D784 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _0814D788 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _0814D7B6 + .align 2, 0 +_0814D774: .4byte gUnknown_2022D08 +_0814D778: .4byte gUnknown_2023D08 +_0814D77C: .4byte 0x00007FFF +_0814D780: .4byte gUnknown_2023D12 +_0814D784: .4byte gUnknown_2024190 +_0814D788: .4byte gUnknown_3005AD0 +_0814D78C: + ldr r1, _0814D7D4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814D7D8 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _0814D7DC + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C +_0814D7B6: + ldr r1, _0814D7E0 + ldr r0, _0814D7E4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D7E8 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814D7D4: .4byte gUnknown_2023D12 +_0814D7D8: .4byte gUnknown_2024190 +_0814D7DC: .4byte gUnknown_3005AD0 +_0814D7E0: .4byte gUnknown_3005AC0 +_0814D7E4: .4byte gUnknown_2023D08 +_0814D7E8: .4byte sub_0814B390 + thumb_func_end sub_0814D6FC + + thumb_func_start sub_0814D7EC +sub_0814D7EC: @ 0x0814D7EC + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D7EC + + thumb_func_start sub_0814D7F8 +sub_0814D7F8: @ 0x0814D7F8 + push {r4, lr} + ldr r4, _0814D854 + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814D84C + ldr r0, _0814D858 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0814D85C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0814D860 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _0814D864 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0814D868 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D86C + str r1, [r0] +_0814D84C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814D854: .4byte gUnknown_2023D08 +_0814D858: .4byte gUnknown_3005AD0 +_0814D85C: .4byte gUnknown_2023D12 +_0814D860: .4byte gUnknown_2024190 +_0814D864: .4byte gUnknown_2024174 +_0814D868: .4byte gUnknown_3005AC0 +_0814D86C: .4byte sub_0814B878 + thumb_func_end sub_0814D7F8 + + thumb_func_start sub_0814D870 +sub_0814D870: @ 0x0814D870 + push {r4, r5, lr} + ldr r5, _0814D8C8 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814D8C0 + ldr r4, _0814D8CC + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _0814D8D0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814D8D4 + str r1, [r0] +_0814D8C0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814D8C8: .4byte gUnknown_2023D08 +_0814D8CC: .4byte gUnknown_2022D08 +_0814D8D0: .4byte gUnknown_3005AC0 +_0814D8D4: .4byte sub_0814B878 + thumb_func_end sub_0814D870 + + thumb_func_start sub_0814D8D8 +sub_0814D8D8: @ 0x0814D8D8 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D8D8 + + thumb_func_start sub_0814D8E4 +sub_0814D8E4: @ 0x0814D8E4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D8E4 + + thumb_func_start sub_0814D8F0 +sub_0814D8F0: @ 0x0814D8F0 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D8F0 + + thumb_func_start sub_0814D8FC +sub_0814D8FC: @ 0x0814D8FC + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D8FC + + thumb_func_start sub_0814D908 +sub_0814D908: @ 0x0814D908 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D908 + + thumb_func_start sub_0814D914 +sub_0814D914: @ 0x0814D914 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D914 + + thumb_func_start sub_0814D920 +sub_0814D920: @ 0x0814D920 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D920 + + thumb_func_start sub_0814D92C +sub_0814D92C: @ 0x0814D92C + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D92C + + thumb_func_start sub_0814D938 +sub_0814D938: @ 0x0814D938 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814D938 + + thumb_func_start sub_0814D944 +sub_0814D944: @ 0x0814D944 + push {lr} + ldr r2, _0814D95C + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814D95C: .4byte gUnknown_20229C0 + thumb_func_end sub_0814D944 + + thumb_func_start sub_0814D960 +sub_0814D960: @ 0x0814D960 + push {lr} + ldr r3, _0814D98C + ldr r1, _0814D990 + ldr r0, _0814D994 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814D98C: .4byte gUnknown_20229C0 +_0814D990: .4byte gUnknown_2022D08 +_0814D994: .4byte gUnknown_2023D08 + thumb_func_end sub_0814D960 + + thumb_func_start sub_0814D998 +sub_0814D998: @ 0x0814D998 + push {lr} + ldr r2, _0814D9AC + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814D9AC: .4byte gUnknown_20229C0 + thumb_func_end sub_0814D998 + + thumb_func_start sub_0814D9B0 +sub_0814D9B0: @ 0x0814D9B0 + push {lr} + ldr r3, _0814D9D4 + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814D9D4: .4byte gUnknown_20229C0 + thumb_func_end sub_0814D9B0 + + thumb_func_start sub_0814D9D8 +sub_0814D9D8: @ 0x0814D9D8 + push {r4, lr} + ldr r3, _0814DA00 + ldr r2, _0814DA04 + ldr r4, _0814DA08 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0814DA0C + bl sub_0814B800 + b _0814DA36 + .align 2, 0 +_0814DA00: .4byte gUnknown_20205AC +_0814DA04: .4byte gUnknown_2023E88 +_0814DA08: .4byte gUnknown_2023D08 +_0814DA0C: + ldr r1, _0814DA3C + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _0814DA40 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814DA44 + str r1, [r0] +_0814DA36: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814DA3C: .4byte gUnknown_202415D +_0814DA40: .4byte gUnknown_3005AC0 +_0814DA44: .4byte sub_0814B524 + thumb_func_end sub_0814D9D8 + + thumb_func_start sub_0814DA48 +sub_0814DA48: @ 0x0814DA48 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814DA48 + + thumb_func_start sub_0814DA54 +sub_0814DA54: @ 0x0814DA54 + push {r4, lr} + ldr r4, _0814DA90 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _0814DA68 + movs r3, #0xc0 +_0814DA68: + ldr r2, _0814DA94 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_0814B800 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814DA90: .4byte gUnknown_2023D08 +_0814DA94: .4byte gUnknown_2022D08 + thumb_func_end sub_0814DA54 + + thumb_func_start sub_0814DA98 +sub_0814DA98: @ 0x0814DA98 + push {r4, r5, lr} + ldr r4, _0814DACC + ldr r5, _0814DAD0 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0814DAD4 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _0814DAE8 + .align 2, 0 +_0814DACC: .4byte gUnknown_2022D08 +_0814DAD0: .4byte gUnknown_2023D08 +_0814DAD4: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_0814DAE8: + bl sub_0814B800 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814DA98 + + thumb_func_start sub_0814DAF4 +sub_0814DAF4: @ 0x0814DAF4 + push {lr} + ldr r1, _0814DB28 + ldr r0, _0814DB2C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814DB30 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + rsbs r1, r1, #0 + movs r2, #5 + bl sub_080A2BAC + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814DB28: .4byte gUnknown_2023D12 +_0814DB2C: .4byte gUnknown_2023D08 +_0814DB30: .4byte gUnknown_2024190 + thumb_func_end sub_0814DAF4 + + thumb_func_start sub_0814DB34 +sub_0814DB34: @ 0x0814DB34 + push {lr} + ldr r1, _0814DB5C + ldr r0, _0814DB60 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _0814DB64 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814DB5C: .4byte gUnknown_2022D08 +_0814DB60: .4byte gUnknown_2023D08 +_0814DB64: .4byte gUnknown_20240A0 + thumb_func_end sub_0814DB34 + + thumb_func_start sub_0814DB68 +sub_0814DB68: @ 0x0814DB68 + push {r4, r5, r6, r7, lr} + ldr r5, _0814DC54 + ldr r6, _0814DC58 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0814DC5C + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0814DC60 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0814DC64 + str r1, [r0] + ldrb r2, [r6] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x38] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0814DC68 + bl sub_080A5B9C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0814DC6C + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r6] + bl sub_0806D300 + ldr r4, _0814DC70 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r5, #0xff + ldrb r0, [r1] + cmp r0, #4 + beq _0814DC40 + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #5 + bne _0814DC74 +_0814DC40: + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1, #0x13] + adds r0, #2 + b _0814DCC6 + .align 2, 0 +_0814DC54: .4byte gUnknown_2023E88 +_0814DC58: .4byte gUnknown_2023D08 +_0814DC5C: .4byte gUnknown_20205AC +_0814DC60: .4byte 0x0000FFD8 +_0814DC64: .4byte sub_080A67B4 +_0814DC68: .4byte sub_0805C81C +_0814DC6C: .4byte 0x0000D6F9 +_0814DC70: .4byte gUnknown_20226A0 +_0814DC74: + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #2 + beq _0814DCA2 + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1] + ands r5, r0 + cmp r5, #1 + bne _0814DCB6 +_0814DCA2: + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1, #0x13] + adds r0, #4 + b _0814DCC6 +_0814DCB6: + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1, #0x13] +_0814DCC6: + ldr r1, _0814DD60 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + lsls r4, r7, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC + ldr r2, _0814DD64 + ldr r1, _0814DD68 + ldr r5, _0814DD6C + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #5] + ldr r0, _0814DD70 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0814DD74 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r5] + strh r0, [r1, #8] + ldr r3, _0814DD78 + ldr r0, [r3] + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814DD40 + ldr r0, _0814DD7C + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _0814DD80 + str r1, [r0] +_0814DD40: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _0814DD84 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814DD88 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814DD60: .4byte gUnknown_82D961C +_0814DD64: .4byte gUnknown_20205AC +_0814DD68: .4byte gUnknown_2023E88 +_0814DD6C: .4byte gUnknown_2023D08 +_0814DD70: .4byte sub_0814DD8C +_0814DD74: .4byte gUnknown_3005B60 +_0814DD78: .4byte gUnknown_2024174 +_0814DD7C: .4byte gUnknown_2024158 +_0814DD80: .4byte sub_0807352C +_0814DD84: .4byte gUnknown_3005AC0 +_0814DD88: .4byte sub_0814AF6C + thumb_func_end sub_0814DB68 + + thumb_func_start sub_0814DD8C +sub_0814DD8C: @ 0x0814DD8C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0814DDB4 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0x17 + bgt _0814DDB8 + adds r0, r2, #1 + strh r0, [r1, #0xa] + b _0814DE74 + .align 2, 0 +_0814DDB4: .4byte gUnknown_3005B60 +_0814DDB8: + ldr r7, _0814DDF8 + ldrb r0, [r7] + mov sb, r0 + ldrh r0, [r1, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814DDD8 + ldr r0, _0814DDFC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814DE08 +_0814DDD8: + ldr r0, _0814DE00 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _0814DE04 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_0814CD58 + b _0814DE5C + .align 2, 0 +_0814DDF8: .4byte gUnknown_2023D08 +_0814DDFC: .4byte gUnknown_2022C90 +_0814DE00: .4byte gUnknown_2022D08 +_0814DE04: .4byte gUnknown_2023D12 +_0814DE08: + ldr r4, _0814DE80 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r5, _0814DE84 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_0814CD58 + ldrb r0, [r7] + movs r6, #2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r5 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0814DE88 + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r7] + movs r1, #0 + bl sub_0814CD58 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_0814DE5C: + ldr r1, _0814DE8C + ldr r2, _0814DE90 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814DE94 + str r1, [r0] + mov r3, sb + strb r3, [r2] + mov r0, r8 + bl sub_080A8964 +_0814DE74: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814DE80: .4byte gUnknown_2022D08 +_0814DE84: .4byte gUnknown_2023D12 +_0814DE88: .4byte gUnknown_2024190 +_0814DE8C: .4byte gUnknown_3005AC0 +_0814DE90: .4byte gUnknown_2023D08 +_0814DE94: .4byte sub_0814B1A8 + thumb_func_end sub_0814DD8C + + thumb_func_start sub_0814DE98 +sub_0814DE98: @ 0x0814DE98 + push {r4, r5, r6, lr} + ldr r1, _0814DEC0 + ldr r0, _0814DEC4 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0814DEC8 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814DEC8 + bl sub_0814B800 + b _0814DF3C + .align 2, 0 +_0814DEC0: .4byte gUnknown_2022D08 +_0814DEC4: .4byte gUnknown_2023D08 +_0814DEC8: + ldr r6, _0814DF44 + ldr r0, [r6] + ldr r5, _0814DF48 + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _0814DF4C + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _0814DF50 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0814DF30 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_0814DF30: + ldr r0, _0814DF54 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0814DF58 + str r0, [r1] +_0814DF3C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814DF44: .4byte gUnknown_2024174 +_0814DF48: .4byte gUnknown_2023D08 +_0814DF4C: .4byte gUnknown_2022D0C +_0814DF50: .4byte gUnknown_2024158 +_0814DF54: .4byte gUnknown_3005AC0 +_0814DF58: .4byte sub_0814DF5C + thumb_func_end sub_0814DE98 + + thumb_func_start sub_0814DF5C +sub_0814DF5C: @ 0x0814DF5C + push {r4, lr} + ldr r4, _0814DF9C + ldr r0, [r4] + ldr r3, _0814DFA0 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _0814DF94 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_0814B800 +_0814DF94: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814DF9C: .4byte gUnknown_2024174 +_0814DFA0: .4byte gUnknown_2023D08 + thumb_func_end sub_0814DF5C + + thumb_func_start sub_0814DFA4 +sub_0814DFA4: @ 0x0814DFA4 + push {lr} + ldr r0, _0814DFE0 + ldr r1, [r0] + ldr r0, _0814DFE4 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814DFD6 + ldr r2, _0814DFE8 + ldr r0, _0814DFEC + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0814DFF0 + str r1, [r0] +_0814DFD6: + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814DFE0: .4byte gUnknown_2024174 +_0814DFE4: .4byte gUnknown_2023D08 +_0814DFE8: .4byte gUnknown_3005B60 +_0814DFEC: .4byte gUnknown_2024158 +_0814DFF0: .4byte sub_0807352C + thumb_func_end sub_0814DFA4 + + thumb_func_start sub_0814DFF4 +sub_0814DFF4: @ 0x0814DFF4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814DFF4 + + thumb_func_start sub_0814E000 +sub_0814E000: @ 0x0814E000 + push {r4, lr} + ldr r4, _0814E050 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814E046 + ldr r3, _0814E054 + ldr r0, _0814E058 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _0814E05C + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_0814E046: + bl sub_0814B800 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814E050: .4byte gUnknown_2023D08 +_0814E054: .4byte gUnknown_20205AC +_0814E058: .4byte gUnknown_2023E88 +_0814E05C: .4byte gUnknown_2022D08 + thumb_func_end sub_0814E000 + + thumb_func_start sub_0814E060 +sub_0814E060: @ 0x0814E060 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _0814E0A8 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814E0C2 + ldr r4, _0814E0AC + ldrb r2, [r5] + lsls r1, r2, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r6, [r0] + adds r0, r4, #2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r4, #3 + adds r1, r1, r4 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r3, r0 + str r3, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + adds r3, r6, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814E0B0 + bl sub_0814B800 + b _0814E0BC + .align 2, 0 +_0814E0A8: .4byte gUnknown_2023D08 +_0814E0AC: .4byte gUnknown_2022D08 +_0814E0B0: + ldr r0, _0814E0CC + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0814E0D0 + str r0, [r1] +_0814E0BC: + adds r0, r6, #0 + bl sub_0817E1D8 +_0814E0C2: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0814E0CC: .4byte gUnknown_3005AC0 +_0814E0D0: .4byte sub_0814B8A8 + thumb_func_end sub_0814E060 + + thumb_func_start sub_0814E0D4 +sub_0814E0D4: @ 0x0814E0D4 + push {lr} + ldr r0, _0814E0EC + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r1, _0814E0F0 + adds r0, r0, r1 + bl sub_08185008 + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 +_0814E0EC: .4byte gUnknown_2023D08 +_0814E0F0: .4byte gUnknown_2022D0A + thumb_func_end sub_0814E0D4 + + thumb_func_start sub_0814E0F4 +sub_0814E0F4: @ 0x0814E0F4 + push {lr} + bl sub_0814B800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814E0F4 + + thumb_func_start sub_0814E100 +sub_0814E100: @ 0x0814E100 + push {r4, r5, lr} + ldr r5, _0814E164 + ldrb r0, [r5] + lsls r0, r0, #9 + ldr r4, _0814E168 + adds r0, r0, r4 + bl sub_08185008 + ldr r2, _0814E16C + ldrb r0, [r5] + lsls r0, r0, #9 + subs r1, r4, #3 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0814E170 + ldr r3, [r0] + ldrb r0, [r5] + lsls r0, r0, #9 + subs r4, #2 + adds r0, r0, r4 + ldrb r0, [r0] + ldr r1, _0814E174 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_0814B800 + ldr r1, _0814E178 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0814E17C + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814E164: .4byte gUnknown_2023D08 +_0814E168: .4byte gUnknown_2022D0C +_0814E16C: .4byte gUnknown_2023FDE +_0814E170: .4byte gUnknown_3005AF0 +_0814E174: .4byte 0x00000CA9 +_0814E178: .4byte gUnknown_3005AC0 +_0814E17C: .4byte sub_080583C0 + thumb_func_end sub_0814E100 + + thumb_func_start sub_0814E180 +sub_0814E180: @ 0x0814E180 + bx lr + .align 2, 0 + thumb_func_end sub_0814E180 + + thumb_func_start sub_0814E184 +sub_0814E184: @ 0x0814E184 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r7, #0 + ldr r4, _0814E22C + ldr r0, _0814E230 + mov ip, r0 + ldrb r1, [r0] + lsls r1, r1, #9 + ldr r0, _0814E234 + adds r1, r1, r0 + str r1, [r4] + ldr r2, _0814E238 + ldrh r0, [r1, #4] + strh r0, [r2] + ldr r2, _0814E23C + ldrb r0, [r1, #6] + strb r0, [r2] + ldr r5, _0814E240 + ldrb r0, [r1, #7] + strb r0, [r5, #0x17] + ldr r3, _0814E244 + ldr r0, [r3] + adds r0, #0x52 + ldrb r1, [r1, #8] + strb r1, [r0] + ldr r0, [r3] + adds r0, #0xb1 + ldr r1, [r4] + ldrb r1, [r1, #9] + strb r1, [r0] + ldr r1, _0814E248 + 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 r8, r5 + ldr r1, _0814E24C + mov sb, r1 + ldr r3, _0814E250 +_0814E1E2: + adds r0, r2, r3 + ldr r1, [r4] + adds r1, #0xc + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _0814E1E2 + movs r2, #0 + ldr r5, _0814E24C + ldr r3, _0814E22C + ldr r4, _0814E254 +_0814E1FC: + adds r1, r2, r5 + ldr r0, [r3] + adds r0, #0x10 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r1, r2, r4 + ldr r0, [r3] + adds r0, #0x20 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, #1 + cmp r2, #0xf + ble _0814E1FC + cmp r6, #5 + bls _0814E220 + b _0814E768 +_0814E220: + lsls r0, r6, #2 + ldr r1, _0814E258 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814E22C: .4byte gUnknown_203A874 +_0814E230: .4byte gUnknown_2023D08 +_0814E234: .4byte gUnknown_2022D0C +_0814E238: .4byte gUnknown_2023EAC +_0814E23C: .4byte gUnknown_2023EAE +_0814E240: .4byte gUnknown_2024118 +_0814E244: .4byte gUnknown_2024140 +_0814E248: .4byte gUnknown_2023EB3 +_0814E24C: .4byte gUnknown_2022C0C +_0814E250: .4byte gUnknown_203A870 +_0814E254: .4byte gUnknown_2022C1C +_0814E258: .4byte _0814E25C +_0814E25C: @ jump table + .4byte _0814E274 @ case 0 + .4byte _0814E354 @ case 1 + .4byte _0814E43C @ case 2 + .4byte _0814E4D8 @ case 3 + .4byte _0814E5A0 @ case 4 + .4byte _0814E600 @ case 5 +_0814E274: + ldr r0, _0814E2AC + ldr r2, [r0] + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0814E314 + ldr r0, _0814E2B0 + ands r0, r2 + cmp r0, #0 + beq _0814E2F0 + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _0814E308 + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0814E2BC + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r2, r0 + ldr r7, _0814E2B4 + cmp r2, #0 + bne _0814E2A8 + b _0814E788 +_0814E2A8: + ldr r7, _0814E2B8 + b _0814E788 + .align 2, 0 +_0814E2AC: .4byte gUnknown_2022C90 +_0814E2B0: .4byte gUnknown_2000002 +_0814E2B4: .4byte gUnknown_85AAE91 +_0814E2B8: .4byte gUnknown_85AC12D +_0814E2BC: + ldr r0, _0814E2CC + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r1, r0 + bne _0814E2D4 + ldr r7, _0814E2D0 + b _0814E788 + .align 2, 0 +_0814E2CC: .4byte gUnknown_203886A +_0814E2D0: .4byte gUnknown_85AAE68 +_0814E2D4: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r2, r0 + ldr r7, _0814E2E8 + cmp r2, #0 + bne _0814E2E2 + b _0814E788 +_0814E2E2: + ldr r7, _0814E2EC + b _0814E788 + .align 2, 0 +_0814E2E8: .4byte gUnknown_85AAE7F +_0814E2EC: .4byte gUnknown_85AC118 +_0814E2F0: + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r2 + cmp r0, #0 + bne _0814E308 + movs r0, #0x80 + lsls r0, r0, #8 + ands r2, r0 + ldr r7, _0814E30C + cmp r2, #0 + bne _0814E308 + b _0814E788 +_0814E308: + ldr r7, _0814E310 + b _0814E788 + .align 2, 0 +_0814E30C: .4byte gUnknown_85AAE68 +_0814E310: .4byte gUnknown_85ABDF4 +_0814E314: + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r2 + cmp r0, #0 + beq _0814E328 + ldr r7, _0814E324 + b _0814E788 + .align 2, 0 +_0814E324: .4byte gUnknown_85AAE22 +_0814E328: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0814E338 + ldr r7, _0814E334 + b _0814E788 + .align 2, 0 +_0814E334: .4byte gUnknown_85AAE4E +_0814E338: + movs r0, #0x80 + lsls r0, r0, #2 + ands r2, r0 + ldr r7, _0814E34C + cmp r2, #0 + bne _0814E346 + b _0814E788 +_0814E346: + ldr r7, _0814E350 + b _0814E788 + .align 2, 0 +_0814E34C: .4byte gUnknown_85AAE0C +_0814E350: .4byte gUnknown_85AAE36 +_0814E354: + mov r1, ip + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814E3B8 + ldr r0, _0814E37C + ldr r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814E3B0 + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0814E384 + ldr r7, _0814E380 + b _0814E788 + .align 2, 0 +_0814E37C: .4byte gUnknown_2022C90 +_0814E380: .4byte gUnknown_85ABE13 +_0814E384: + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0814E398 + ldr r7, _0814E394 + b _0814E788 + .align 2, 0 +_0814E394: .4byte gUnknown_85AAF4B +_0814E398: + movs r0, #0x40 + ands r1, r0 + ldr r7, _0814E3A8 + cmp r1, #0 + bne _0814E3A4 + b _0814E788 +_0814E3A4: + ldr r7, _0814E3AC + b _0814E788 + .align 2, 0 +_0814E3A8: .4byte gUnknown_85AAF4B +_0814E3AC: .4byte gUnknown_85AAF8E +_0814E3B0: + ldr r7, _0814E3B4 + b _0814E788 + .align 2, 0 +_0814E3B4: .4byte gUnknown_85AAF42 +_0814E3B8: + ldr r0, _0814E3DC + ldr r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0814E410 + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0814E3D8 + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0814E3E4 +_0814E3D8: + ldr r7, _0814E3E0 + b _0814E788 + .align 2, 0 +_0814E3DC: .4byte gUnknown_2022C90 +_0814E3E0: .4byte gUnknown_85ABDBB +_0814E3E4: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814E3F4 + ldr r7, _0814E3F0 + b _0814E788 + .align 2, 0 +_0814E3F0: .4byte gUnknown_85AAF06 +_0814E3F4: + ldr r0, _0814E404 + ands r1, r0 + ldr r7, _0814E408 + cmp r1, #0 + bne _0814E400 + b _0814E788 +_0814E400: + ldr r7, _0814E40C + b _0814E788 + .align 2, 0 +_0814E404: .4byte gUnknown_2000002 +_0814E408: .4byte gUnknown_85AAEBA +_0814E40C: .4byte gUnknown_85AAEF3 +_0814E410: + ldr r0, _0814E42C + ands r1, r0 + cmp r1, #0 + beq _0814E428 + ldr r0, _0814E430 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + ldr r7, _0814E434 + cmp r1, r0 + beq _0814E428 + b _0814E788 +_0814E428: + ldr r7, _0814E438 + b _0814E788 + .align 2, 0 +_0814E42C: .4byte gUnknown_2000002 +_0814E430: .4byte gUnknown_203886A +_0814E434: .4byte gUnknown_85AAEE4 +_0814E438: .4byte gUnknown_85AAEA7 +_0814E43C: + mov r1, ip + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814E494 + ldr r0, _0814E45C + ldr r0, [r0] + adds r0, #0xb1 + ldrb r2, [r0] + cmp r2, #0 + bne _0814E464 + ldr r7, _0814E460 + b _0814E788 + .align 2, 0 +_0814E45C: .4byte gUnknown_2024140 +_0814E460: .4byte gUnknown_85AAFA6 +_0814E464: + cmp r2, #1 + beq _0814E474 + ldr r0, _0814E478 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0814E480 +_0814E474: + ldr r7, _0814E47C + b _0814E788 + .align 2, 0 +_0814E478: .4byte gUnknown_2022C90 +_0814E47C: .4byte gUnknown_85AAFB4 +_0814E480: + ldr r7, _0814E48C + cmp r2, #2 + beq _0814E488 + b _0814E788 +_0814E488: + ldr r7, _0814E490 + b _0814E788 + .align 2, 0 +_0814E48C: .4byte gUnknown_85AAFC9 +_0814E490: .4byte gUnknown_85AAFBC +_0814E494: + ldr r0, _0814E4C0 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #4 + ldr r2, _0814E4C4 + cmp r1, r0 + beq _0814E4AE + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0814E4D0 +_0814E4AE: + ldr r0, [r2] + movs r1, #0x40 + ands r0, r1 + ldr r7, _0814E4C8 + cmp r0, #0 + bne _0814E4BC + b _0814E788 +_0814E4BC: + ldr r7, _0814E4CC + b _0814E788 + .align 2, 0 +_0814E4C0: .4byte gUnknown_203886A +_0814E4C4: .4byte gUnknown_2022C90 +_0814E4C8: .4byte gUnknown_85AAFEB +_0814E4CC: .4byte gUnknown_85AAFFA +_0814E4D0: + ldr r7, _0814E4D4 + b _0814E788 + .align 2, 0 +_0814E4D4: .4byte gUnknown_85AAFD8 +_0814E4D8: + mov r4, r8 + ldrb r0, [r4, #0x17] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814E530 + ldr r0, _0814E504 + ldr r0, [r0] + adds r0, #0xb1 + ldrb r2, [r0] + cmp r2, #0 + beq _0814E4FE + ldr r0, _0814E508 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0814E510 +_0814E4FE: + ldr r7, _0814E50C + b _0814E788 + .align 2, 0 +_0814E504: .4byte gUnknown_2024140 +_0814E508: .4byte gUnknown_2022C90 +_0814E50C: .4byte gUnknown_85AAF58 +_0814E510: + cmp r2, #1 + bne _0814E51C + ldr r7, _0814E518 + b _0814E788 + .align 2, 0 +_0814E518: .4byte gUnknown_85AAF61 +_0814E51C: + ldr r7, _0814E528 + cmp r2, #2 + beq _0814E524 + b _0814E788 +_0814E524: + ldr r7, _0814E52C + b _0814E788 + .align 2, 0 +_0814E528: .4byte gUnknown_85AAF76 +_0814E52C: .4byte gUnknown_85AAF6C +_0814E530: + ldr r0, _0814E54C + ldr r1, [r0] + ldr r0, _0814E550 + ands r0, r1 + cmp r0, #0 + beq _0814E584 + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0814E554 + ldrb r0, [r4, #0x17] + b _0814E592 + .align 2, 0 +_0814E54C: .4byte gUnknown_2022C90 +_0814E550: .4byte gUnknown_2000002 +_0814E554: + movs r0, #0x40 + ands r1, r0 + cmp r1, #0 + beq _0814E564 + ldr r7, _0814E560 + b _0814E788 + .align 2, 0 +_0814E560: .4byte gUnknown_85AAF33 +_0814E564: + ldr r0, _0814E578 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + ldr r7, _0814E57C + cmp r1, r0 + beq _0814E574 + b _0814E788 +_0814E574: + ldr r7, _0814E580 + b _0814E788 + .align 2, 0 +_0814E578: .4byte gUnknown_203886A +_0814E57C: .4byte gUnknown_85AAF24 +_0814E580: .4byte gUnknown_85AAED1 +_0814E584: + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0814E574 + mov r1, r8 + ldrb r0, [r1, #0x17] +_0814E592: + ldr r7, _0814E59C + cmp r0, #1 + beq _0814E59A + b _0814E788 +_0814E59A: + b _0814E574 + .align 2, 0 +_0814E59C: .4byte gUnknown_85ABDE1 +_0814E5A0: + mov r0, sb + bl sub_0814F910 + ldr r0, _0814E5CC + ldr r2, [r0] + ldrh r1, [r2] + movs r0, #0xb1 + lsls r0, r0, #1 + cmp r1, r0 + bls _0814E5DC + ldr r0, _0814E5D0 + ldr r1, _0814E5D4 + ldr r1, [r1] + adds r1, #0x8e + ldrb r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + ldr r2, _0814E5D8 + adds r1, r1, r2 + bl sub_080088B8 + b _0814E5EA + .align 2, 0 +_0814E5CC: .4byte gUnknown_203A874 +_0814E5D0: .4byte gUnknown_2022C1C +_0814E5D4: .4byte gUnknown_2024140 +_0814E5D8: .4byte gUnknown_85ABC9A +_0814E5DC: + ldr r0, _0814E5F4 + ldrh r1, [r2] + lsls r1, r1, #3 + ldr r2, _0814E5F8 + adds r1, r1, r2 + bl sub_080088B8 +_0814E5EA: + ldr r0, _0814E5F4 + bl sub_0814F968 + ldr r7, _0814E5FC + b _0814E788 + .align 2, 0 +_0814E5F4: .4byte gUnknown_2022C1C +_0814E5F8: .4byte gUnknown_82EACC4 +_0814E5FC: .4byte gUnknown_85AB034 +_0814E600: + ldr r4, _0814E640 + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0814E674 + movs r0, #0x7f + ands r0, r1 + strb r0, [r4] + mov r1, ip + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0814E62E + ldrb r1, [r4] + cmp r1, #3 + beq _0814E62E + movs r0, #3 + eors r0, r1 + strb r0, [r4] +_0814E62E: + ldr r0, _0814E640 + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0814E648 + ldr r7, _0814E644 + b _0814E788 + .align 2, 0 +_0814E640: .4byte gUnknown_2022C0C +_0814E644: .4byte gUnknown_85AA970 +_0814E648: + ldr r0, _0814E658 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814E660 + ldr r7, _0814E65C + b _0814E788 + .align 2, 0 +_0814E658: .4byte gUnknown_2022C90 +_0814E65C: .4byte gUnknown_85AAA45 +_0814E660: + ldr r0, _0814E66C + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + ldr r7, _0814E670 + b _0814E788 + .align 2, 0 +_0814E66C: .4byte gUnknown_203886A +_0814E670: .4byte gUnknown_85AAA36 +_0814E674: + mov r1, ip + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0814E690 + ldrb r1, [r4] + cmp r1, #3 + beq _0814E690 + movs r0, #3 + eors r0, r1 + strb r0, [r4] +_0814E690: + ldr r0, _0814E6B0 + ldr r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0814E6E8 + ldr r0, _0814E6B4 + ldrb r0, [r0] + cmp r0, #2 + beq _0814E6D8 + cmp r0, #2 + bgt _0814E6B8 + cmp r0, #1 + beq _0814E6BE + b _0814E788 + .align 2, 0 +_0814E6B0: .4byte gUnknown_2022C90 +_0814E6B4: .4byte gUnknown_2022C0C +_0814E6B8: + cmp r0, #3 + beq _0814E6E0 + b _0814E788 +_0814E6BE: + movs r0, #0x80 + lsls r0, r0, #0x10 + ands r1, r0 + ldr r7, _0814E6D0 + cmp r1, #0 + beq _0814E788 + ldr r7, _0814E6D4 + b _0814E788 + .align 2, 0 +_0814E6D0: .4byte gUnknown_85AA9D6 +_0814E6D4: .4byte gUnknown_85ABE2F +_0814E6D8: + ldr r7, _0814E6DC + b _0814E788 + .align 2, 0 +_0814E6DC: .4byte gUnknown_85AA9FA +_0814E6E0: + ldr r7, _0814E6E4 + b _0814E788 + .align 2, 0 +_0814E6E4: .4byte gUnknown_85AAA20 +_0814E6E8: + ldr r0, _0814E708 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r1, r0 + bne _0814E730 + ldr r0, _0814E70C + ldrb r0, [r0] + cmp r0, #2 + beq _0814E720 + cmp r0, #2 + bgt _0814E710 + cmp r0, #1 + beq _0814E716 + b _0814E788 + .align 2, 0 +_0814E708: .4byte gUnknown_203886A +_0814E70C: .4byte gUnknown_2022C0C +_0814E710: + cmp r0, #3 + beq _0814E728 + b _0814E788 +_0814E716: + ldr r7, _0814E71C + b _0814E788 + .align 2, 0 +_0814E71C: .4byte gUnknown_85AAD22 +_0814E720: + ldr r7, _0814E724 + b _0814E788 + .align 2, 0 +_0814E724: .4byte gUnknown_85AC0B1 +_0814E728: + ldr r7, _0814E72C + b _0814E788 + .align 2, 0 +_0814E72C: .4byte gUnknown_85AC0C6 +_0814E730: + ldr r0, _0814E744 + ldrb r0, [r0] + cmp r0, #2 + beq _0814E758 + cmp r0, #2 + bgt _0814E748 + cmp r0, #1 + beq _0814E74E + b _0814E788 + .align 2, 0 +_0814E744: .4byte gUnknown_2022C0C +_0814E748: + cmp r0, #3 + beq _0814E760 + b _0814E788 +_0814E74E: + ldr r7, _0814E754 + b _0814E788 + .align 2, 0 +_0814E754: .4byte gUnknown_85AA9C6 +_0814E758: + ldr r7, _0814E75C + b _0814E788 + .align 2, 0 +_0814E75C: .4byte gUnknown_85AA9EA +_0814E760: + ldr r7, _0814E764 + b _0814E788 + .align 2, 0 +_0814E764: .4byte gUnknown_85AAA0E +_0814E768: + movs r0, #0xbe + lsls r0, r0, #1 + cmp r6, r0 + bls _0814E77C + ldr r1, _0814E778 + movs r0, #0xff + strb r0, [r1] + b _0814E78E + .align 2, 0 +_0814E778: .4byte gUnknown_2022AE0 +_0814E77C: + ldr r1, _0814E79C + adds r0, r6, #0 + subs r0, #0xc + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r7, [r0] +_0814E788: + adds r0, r7, #0 + bl sub_0814E7A0 +_0814E78E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0814E79C: .4byte gUnknown_85AB3DC + thumb_func_end sub_0814E184 + + thumb_func_start sub_0814E7A0 +sub_0814E7A0: @ 0x0814E7A0 + push {lr} + ldr r1, _0814E7AC + bl sub_0814E7B0 + pop {r1} + bx r1 + .align 2, 0 +_0814E7AC: .4byte gUnknown_2022AE0 + thumb_func_end sub_0814E7A0 + + thumb_func_start sub_0814E7B0 +sub_0814E7B0: @ 0x0814E7B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov sb, r0 + mov r8, r1 + movs r6, #0 + movs r4, #0 + ldr r0, _0814E7D8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0814E7E0 + ldr r0, _0814E7DC + ldrb r7, [r0] + b _0814E7E8 + .align 2, 0 +_0814E7D8: .4byte gUnknown_2022C90 +_0814E7DC: .4byte gUnknown_203C480 +_0814E7E0: + bl sub_0800A02C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0814E7E8: + mov r0, sb + ldrb r1, [r0] + bl sub_0814F63C + thumb_func_end sub_0814E7B0 + + thumb_func_start sub_0814E7F0 +sub_0814E7F0: @ 0x0814E7F0 + cmp r1, #0xfd + beq _0814E7F8 + bl sub_0814F62C +_0814E7F8: + movs r1, #1 + add sb, r1 + mov r2, sb + ldrb r0, [r2] + cmp r0, #0x33 + bls _0814E808 + bl _0814F5DC +_0814E808: + lsls r0, r0, #2 + ldr r1, _0814E814 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814E814: .4byte _0814E818 +_0814E818: @ jump table + .4byte _0814E8E8 @ case 0 + .4byte _0814E8FC @ case 1 + .4byte _0814E922 @ case 2 + .4byte _0814E92C @ case 3 + .4byte _0814E938 @ case 4 + .4byte _0814E944 @ case 5 + .4byte _0814E978 @ case 6 + .4byte _0814E9AC @ case 7 + .4byte _0814E9E0 @ case 8 + .4byte _0814EA14 @ case 9 + .4byte _0814EA50 @ case 10 + .4byte _0814EA90 @ case 11 + .4byte _0814EAD0 @ case 12 + .4byte _0814EB10 @ case 13 + .4byte _0814EBC8 @ case 14 + .4byte _0814EC50 @ case 15 + .4byte _0814ECEC @ case 16 + .4byte _0814ED88 @ case 17 + .4byte _0814EE24 @ case 18 + .4byte _0814EEC0 @ case 19 + .4byte _0814EF5C @ case 20 + .4byte _0814EF74 @ case 21 + .4byte _0814EFB0 @ case 22 + .4byte _0814F098 @ case 23 + .4byte _0814F0A0 @ case 24 + .4byte _0814F0B0 @ case 25 + .4byte _0814F0C0 @ case 26 + .4byte _0814F0D0 @ case 27 + .4byte _0814F0F0 @ case 28 + .4byte _0814F178 @ case 29 + .4byte _0814F242 @ case 30 + .4byte _0814F254 @ case 31 + .4byte _0814F268 @ case 32 + .4byte _0814F27C @ case 33 + .4byte _0814F2A0 @ case 34 + .4byte _0814F2BC @ case 35 + .4byte _0814F2E4 @ case 36 + .4byte _0814F324 @ case 37 + .4byte _0814F354 @ case 38 + .4byte _0814F3E8 @ case 39 + .4byte _0814F434 @ case 40 + .4byte _0814F43C @ case 41 + .4byte _0814F408 @ case 42 + .4byte _0814F410 @ case 43 + .4byte _0814F460 @ case 44 + .4byte _0814F468 @ case 45 + .4byte _0814F48C @ case 46 + .4byte _0814F4D8 @ case 47 + .4byte _0814F524 @ case 48 + .4byte _0814F564 @ case 49 + .4byte _0814F5B0 @ case 50 + .4byte _0814F5D0 @ case 51 +_0814E8E8: + ldr r1, _0814E8F4 + ldrb r0, [r1] + cmp r0, #0xfd + bne _0814E91C + ldr r4, _0814E8F8 + b _0814E906 + .align 2, 0 +_0814E8F4: .4byte gUnknown_2022C0C +_0814E8F8: .4byte gUnknown_2021C40 +_0814E8FC: + ldr r1, _0814E914 + ldrb r0, [r1] + cmp r0, #0xfd + bne _0814E91C + ldr r4, _0814E918 +_0814E906: + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0814F664 + bl _0814F5DC + .align 2, 0 +_0814E914: .4byte gUnknown_2022C1C +_0814E918: .4byte gUnknown_2021C54 +_0814E91C: + adds r4, r1, #0 + bl _0814F5DC +_0814E922: + ldr r4, _0814E928 + bl _0814F5DC + .align 2, 0 +_0814E928: .4byte gUnknown_2021C40 +_0814E92C: + ldr r4, _0814E934 + bl _0814F5DC + .align 2, 0 +_0814E934: .4byte gUnknown_2021C54 +_0814E938: + ldr r4, _0814E940 + bl _0814F5DC + .align 2, 0 +_0814E940: .4byte gUnknown_2021C68 +_0814E944: + movs r0, #0 + bl sub_080A631C + ldr r1, _0814E970 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814E974 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814E970: .4byte gUnknown_2023D12 +_0814E974: .4byte gUnknown_2024190 +_0814E978: + movs r0, #1 + bl sub_080A631C + ldr r1, _0814E9A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814E9A8 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814E9A4: .4byte gUnknown_2023D12 +_0814E9A8: .4byte gUnknown_20243E8 +_0814E9AC: + movs r0, #2 + bl sub_080A631C + ldr r1, _0814E9D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814E9DC + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814E9D8: .4byte gUnknown_2023D12 +_0814E9DC: .4byte gUnknown_2024190 +_0814E9E0: + movs r0, #3 + bl sub_080A631C + ldr r1, _0814EA0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EA10 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EA0C: .4byte gUnknown_2023D12 +_0814EA10: .4byte gUnknown_20243E8 +_0814EA14: + ldr r2, _0814EA44 + ldr r1, _0814EA48 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #0x18] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EA4C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EA44: .4byte gUnknown_2023D12 +_0814EA48: .4byte gUnknown_20226A0 +_0814EA4C: .4byte gUnknown_2024190 +_0814EA50: + ldr r2, _0814EA84 + ldr r1, _0814EA88 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + movs r0, #1 + eors r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EA8C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EA84: .4byte gUnknown_2023D12 +_0814EA88: .4byte gUnknown_20226A0 +_0814EA8C: .4byte gUnknown_20243E8 +_0814EA90: + ldr r2, _0814EAC4 + ldr r1, _0814EAC8 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + movs r0, #2 + eors r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EACC + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EAC4: .4byte gUnknown_2023D12 +_0814EAC8: .4byte gUnknown_20226A0 +_0814EACC: .4byte gUnknown_2024190 +_0814EAD0: + ldr r2, _0814EB04 + ldr r1, _0814EB08 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x18] + movs r0, #3 + eors r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EB0C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EB04: .4byte gUnknown_2023D12 +_0814EB08: .4byte gUnknown_20226A0 +_0814EB0C: .4byte gUnknown_20243E8 +_0814EB10: + ldr r4, _0814EB34 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + adds r2, r4, #0 + cmp r0, #0 + beq _0814EB8C + ldr r0, _0814EB38 + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814EB3C + cmp r1, #0 + beq _0814EB4E + ldr r4, _0814EB40 + b _0814EB4E + .align 2, 0 +_0814EB34: .4byte gUnknown_2023EAF +_0814EB38: .4byte gUnknown_2022C90 +_0814EB3C: .4byte gUnknown_85AB009 +_0814EB40: .4byte gUnknown_85AB00F +_0814EB44: + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 +_0814EB4E: + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814EB44 + ldrb r0, [r2] + bl sub_080A630C + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + bl sub_080A631C + ldr r1, _0814EB84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EB88 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814EBB6 + .align 2, 0 +_0814EB84: .4byte gUnknown_2023D12 +_0814EB88: .4byte gUnknown_20243E8 +_0814EB8C: + ldrb r0, [r2] + bl sub_080A630C + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + bl sub_080A631C + ldr r1, _0814EBC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EBC4 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814EBB6: + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EBC0: .4byte gUnknown_2023D12 +_0814EBC4: .4byte gUnknown_2024190 +_0814EBC8: + ldr r4, _0814EC04 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814EC10 + ldrb r0, [r4] + bl sub_080A630C + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + bl sub_080A631C + ldr r1, _0814EC08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, #4 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EC0C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814EC3C + .align 2, 0 +_0814EC04: .4byte gUnknown_2023EAF +_0814EC08: .4byte gUnknown_2023D12 +_0814EC0C: .4byte gUnknown_2024190 +_0814EC10: + ldrb r0, [r4] + bl sub_080A630C + adds r1, r0, #0 + movs r0, #1 + ands r0, r1 + bl sub_080A631C + ldr r1, _0814EC48 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, #4 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EC4C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814EC3C: + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EC48: .4byte gUnknown_2023D12 +_0814EC4C: .4byte gUnknown_20243E8 +_0814EC50: + ldr r5, _0814ECA8 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814ECC0 + ldr r0, _0814ECAC + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814ECB0 + cmp r1, #0 + beq _0814EC6E + ldr r4, _0814ECB4 +_0814EC6E: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r3, _0814ECB8 + ldr r2, _0814ECBC + mov ip, r2 + adds r2, r5, #0 + cmp r0, #0xff + beq _0814EC90 +_0814EC7E: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814EC7E +_0814EC90: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814ECDA + .align 2, 0 +_0814ECA8: .4byte gUnknown_2023EAF +_0814ECAC: .4byte gUnknown_2022C90 +_0814ECB0: .4byte gUnknown_85AB009 +_0814ECB4: .4byte gUnknown_85AB00F +_0814ECB8: .4byte gUnknown_2023D12 +_0814ECBC: .4byte gUnknown_20243E8 +_0814ECC0: + ldr r1, _0814ECE4 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814ECE8 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814ECDA: + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814ECE4: .4byte gUnknown_2023D12 +_0814ECE8: .4byte gUnknown_2024190 +_0814ECEC: + ldr r5, _0814ED44 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814ED5C + ldr r0, _0814ED48 + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814ED4C + cmp r1, #0 + beq _0814ED0A + ldr r4, _0814ED50 +_0814ED0A: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r3, _0814ED54 + ldr r2, _0814ED58 + mov ip, r2 + adds r2, r5, #0 + cmp r0, #0xff + beq _0814ED2C +_0814ED1A: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814ED1A +_0814ED2C: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814ED76 + .align 2, 0 +_0814ED44: .4byte gUnknown_2023EB0 +_0814ED48: .4byte gUnknown_2022C90 +_0814ED4C: .4byte gUnknown_85AB009 +_0814ED50: .4byte gUnknown_85AB00F +_0814ED54: .4byte gUnknown_2023D12 +_0814ED58: .4byte gUnknown_20243E8 +_0814ED5C: + ldr r1, _0814ED80 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814ED84 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814ED76: + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814ED80: .4byte gUnknown_2023D12 +_0814ED84: .4byte gUnknown_2024190 +_0814ED88: + ldr r5, _0814EDE0 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814EDF8 + ldr r0, _0814EDE4 + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814EDE8 + cmp r1, #0 + beq _0814EDA6 + ldr r4, _0814EDEC +_0814EDA6: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r3, _0814EDF0 + ldr r2, _0814EDF4 + mov ip, r2 + adds r2, r5, #0 + cmp r0, #0xff + beq _0814EDC8 +_0814EDB6: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814EDB6 +_0814EDC8: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814EE12 + .align 2, 0 +_0814EDE0: .4byte gUnknown_2023EB2 +_0814EDE4: .4byte gUnknown_2022C90 +_0814EDE8: .4byte gUnknown_85AB009 +_0814EDEC: .4byte gUnknown_85AB00F +_0814EDF0: .4byte gUnknown_2023D12 +_0814EDF4: .4byte gUnknown_20243E8 +_0814EDF8: + ldr r1, _0814EE1C + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EE20 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814EE12: + mov r0, sp + bl sub_0800885C + bl _0814F5DA + .align 2, 0 +_0814EE1C: .4byte gUnknown_2023D12 +_0814EE20: .4byte gUnknown_2024190 +_0814EE24: + ldr r5, _0814EE7C + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814EE94 + ldr r0, _0814EE80 + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814EE84 + cmp r1, #0 + beq _0814EE42 + ldr r4, _0814EE88 +_0814EE42: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r3, _0814EE8C + ldr r2, _0814EE90 + mov ip, r2 + adds r2, r5, #0 + cmp r0, #0xff + beq _0814EE64 +_0814EE52: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814EE52 +_0814EE64: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814EEAE + .align 2, 0 +_0814EE7C: .4byte gUnknown_2023D08 +_0814EE80: .4byte gUnknown_2022C90 +_0814EE84: .4byte gUnknown_85AB009 +_0814EE88: .4byte gUnknown_85AB00F +_0814EE8C: .4byte gUnknown_2023D12 +_0814EE90: .4byte gUnknown_20243E8 +_0814EE94: + ldr r1, _0814EEB8 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EEBC + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814EEAE: + mov r0, sp + bl sub_0800885C + b _0814F5DA + .align 2, 0 +_0814EEB8: .4byte gUnknown_2023D12 +_0814EEBC: .4byte gUnknown_2024190 +_0814EEC0: + ldr r5, _0814EF18 + ldrb r0, [r5, #0x17] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814EF30 + ldr r0, _0814EF1C + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814EF20 + cmp r1, #0 + beq _0814EEDE + ldr r4, _0814EF24 +_0814EEDE: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r3, _0814EF28 + ldr r2, _0814EF2C + mov ip, r2 + adds r2, r5, #0 + cmp r0, #0xff + beq _0814EF00 +_0814EEEE: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814EEEE +_0814EF00: + ldrb r0, [r2, #0x17] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814EF4A + .align 2, 0 +_0814EF18: .4byte gUnknown_2024118 +_0814EF1C: .4byte gUnknown_2022C90 +_0814EF20: .4byte gUnknown_85AB009 +_0814EF24: .4byte gUnknown_85AB00F +_0814EF28: .4byte gUnknown_2023D12 +_0814EF2C: .4byte gUnknown_20243E8 +_0814EF30: + ldr r1, _0814EF54 + ldrb r0, [r5, #0x17] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814EF58 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814EF4A: + mov r0, sp + bl sub_0800885C + b _0814F5DA + .align 2, 0 +_0814EF54: .4byte gUnknown_2023D12 +_0814EF58: .4byte gUnknown_2024190 +_0814EF5C: + ldr r0, _0814EF70 + ldr r2, [r0] + ldrh r1, [r2] + movs r0, #0xb1 + lsls r0, r0, #1 + cmp r1, r0 + bhi _0814EF82 + ldrh r0, [r2] + b _0814EFA2 + .align 2, 0 +_0814EF70: .4byte gUnknown_203A874 +_0814EF74: + ldr r0, _0814EF94 + ldr r2, [r0] + ldrh r1, [r2, #2] + movs r0, #0xb1 + lsls r0, r0, #1 + cmp r1, r0 + bls _0814EFA0 +_0814EF82: + ldr r0, _0814EF98 + ldr r0, [r0] + adds r0, #0x8e + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + ldr r1, _0814EF9C + adds r4, r0, r1 + b _0814F5DC + .align 2, 0 +_0814EF94: .4byte gUnknown_203A874 +_0814EF98: .4byte gUnknown_2024140 +_0814EF9C: .4byte gUnknown_85ABC9A +_0814EFA0: + ldrh r0, [r2, #2] +_0814EFA2: + lsls r0, r0, #3 + ldr r1, _0814EFAC + adds r4, r0, r1 + b _0814F5DC + .align 2, 0 +_0814EFAC: .4byte gUnknown_82EACC4 +_0814EFB0: + ldr r0, _0814EFE4 + ldr r1, [r0] + ldr r0, _0814EFE8 + ands r0, r1 + cmp r0, #0 + beq _0814F086 + ldr r2, _0814EFEC + ldrh r0, [r2] + cmp r0, #0xaf + bne _0814F07C + movs r0, #0x40 + ands r1, r0 + cmp r1, #0 + bne _0814F02C + ldr r0, _0814EFF0 + adds r0, #0x25 + ldrb r0, [r0] + cmp r0, #0 + beq _0814EFF8 + ldr r2, _0814EFF4 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0814F004 + b _0814F074 + .align 2, 0 +_0814EFE4: .4byte gUnknown_2022C90 +_0814EFE8: .4byte gUnknown_2000002 +_0814EFEC: .4byte gUnknown_2023EAC +_0814EFF0: .4byte gUnknown_2024118 +_0814EFF4: .4byte gUnknown_2023EB3 +_0814EFF8: + ldr r2, _0814F020 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0814F074 +_0814F004: + ldrb r0, [r2] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0814F024 + adds r1, r1, r0 + mov r0, sp + bl sub_080088B8 + ldr r1, _0814F028 + mov r0, sp + bl sub_080088D8 + b _0814F5DA + .align 2, 0 +_0814F020: .4byte gUnknown_2023EB3 +_0814F024: .4byte gUnknown_20240A8 +_0814F028: .4byte gUnknown_85AB28D +_0814F02C: + ldr r2, _0814F060 + ldr r0, _0814F064 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0814F068 + ldrb r2, [r1] + ldrh r0, [r0, #0x18] + cmp r0, r2 + bne _0814F074 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r0, _0814F06C + adds r1, r1, r0 + mov r0, sp + bl sub_080088B8 + ldr r1, _0814F070 + mov r0, sp + bl sub_080088D8 + b _0814F5DA + .align 2, 0 +_0814F060: .4byte gUnknown_20226A0 +_0814F064: .4byte gUnknown_2024118 +_0814F068: .4byte gUnknown_2023EB3 +_0814F06C: .4byte gUnknown_20240A8 +_0814F070: .4byte gUnknown_85AB28D +_0814F074: + ldr r4, _0814F078 + b _0814F5DC + .align 2, 0 +_0814F078: .4byte gUnknown_85AB288 +_0814F07C: + ldrh r0, [r2] + mov r1, sp + bl sub_080D5EC8 + b _0814F5DA +_0814F086: + ldr r0, _0814F094 + ldrh r0, [r0] + mov r1, sp + bl sub_080D5EC8 + b _0814F5DA + .align 2, 0 +_0814F094: .4byte gUnknown_2023EAC +_0814F098: + ldr r0, _0814F09C + b _0814F0D8 + .align 2, 0 +_0814F09C: .4byte gUnknown_2023EAE +_0814F0A0: + ldr r1, _0814F0A8 + ldr r0, _0814F0AC + b _0814F0D4 + .align 2, 0 +_0814F0A8: .4byte gUnknown_203A870 +_0814F0AC: .4byte gUnknown_2023EAF +_0814F0B0: + ldr r1, _0814F0B8 + ldr r0, _0814F0BC + b _0814F0D4 + .align 2, 0 +_0814F0B8: .4byte gUnknown_203A870 +_0814F0BC: .4byte gUnknown_2023EB0 +_0814F0C0: + ldr r1, _0814F0C8 + ldr r0, _0814F0CC + ldrb r0, [r0, #0x17] + b _0814F0D6 + .align 2, 0 +_0814F0C8: .4byte gUnknown_203A870 +_0814F0CC: .4byte gUnknown_2024118 +_0814F0D0: + ldr r1, _0814F0E4 + ldr r0, _0814F0E8 +_0814F0D4: + ldrb r0, [r0] +_0814F0D6: + adds r0, r0, r1 +_0814F0D8: + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r1, _0814F0EC + adds r4, r0, r1 + b _0814F5DC + .align 2, 0 +_0814F0E4: .4byte gUnknown_203A870 +_0814F0E8: .4byte gUnknown_2023EB2 +_0814F0EC: .4byte gUnknown_82EBDC4 +_0814F0F0: + ldr r0, _0814F104 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r1 + cmp r0, #0 + beq _0814F108 + bl sub_0806B338 + b _0814F5B8 + .align 2, 0 +_0814F104: .4byte gUnknown_2022C90 +_0814F108: + ldr r3, _0814F120 + ldrh r2, [r3] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r2, r0 + bne _0814F124 + bl sub_080686F0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _0814F5BC + .align 2, 0 +_0814F120: .4byte gUnknown_203886A +_0814F124: + ldr r0, _0814F130 + cmp r2, r0 + bne _0814F134 + bl sub_081A48F8 + b _0814F5B8 + .align 2, 0 +_0814F130: .4byte 0x000003FE +_0814F134: + ldr r0, _0814F140 + ands r0, r1 + cmp r0, #0 + beq _0814F144 + ldrh r0, [r3] + b _0814F5B4 + .align 2, 0 +_0814F140: .4byte 0x003F0100 +_0814F144: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r1 + cmp r0, #0 + beq _0814F156 + ldrh r0, [r3] + bl sub_081D4B90 + b _0814F5B8 +_0814F156: + movs r0, #0x80 + lsls r0, r0, #4 + ands r1, r0 + cmp r1, #0 + beq _0814F166 + bl sub_081650E0 + b _0814F5B8 +_0814F166: + ldr r1, _0814F174 + ldrh r0, [r3] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0xb + b _0814F5BE + .align 2, 0 +_0814F174: .4byte gUnknown_82E383C +_0814F178: + ldr r0, _0814F1AC + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r1 + cmp r0, #0 + beq _0814F1B4 + movs r3, #0 + ldr r0, _0814F1B0 + ldr r2, [r0] +_0814F18C: + mov r1, sp + adds r0, r1, r3 + ldr r1, [r2] + adds r1, #2 + adds r1, r1, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, #6 + ble _0814F18C + mov r2, sp + adds r1, r2, r3 + movs r0, #0xff + strb r0, [r1] + b _0814F5DA + .align 2, 0 +_0814F1AC: .4byte gUnknown_2022C90 +_0814F1B0: .4byte gUnknown_202414C +_0814F1B4: + ldr r3, _0814F1EC + ldrh r2, [r3] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r2, r0 + bne _0814F1F4 + movs r3, #0 + ldr r2, _0814F1F0 + movs r1, #1 + adds r0, r7, #0 + eors r0, r1 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r2, #8 + adds r2, r1, r2 +_0814F1D4: + mov r5, sp + adds r1, r5, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r3, #1 + cmp r3, #6 + ble _0814F1D4 + adds r1, r5, r3 + movs r0, #0xff + strb r0, [r1] + b _0814F5DA + .align 2, 0 +_0814F1EC: .4byte gUnknown_203886A +_0814F1F0: .4byte gUnknown_20226A0 +_0814F1F4: + ldr r0, _0814F204 + cmp r2, r0 + bne _0814F208 + mov r0, sp + bl sub_081A4944 + b _0814F5DA + .align 2, 0 +_0814F204: .4byte 0x000003FE +_0814F208: + ldr r0, _0814F214 + ands r0, r1 + cmp r0, #0 + beq _0814F218 + ldrh r1, [r3] + b _0814F5D4 + .align 2, 0 +_0814F214: .4byte 0x003F0100 +_0814F218: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r0, r1 + cmp r0, #0 + beq _0814F22C + ldrh r1, [r3] + mov r0, sp + bl sub_081D4BB4 + b _0814F5DA +_0814F22C: + movs r0, #0x80 + lsls r0, r0, #4 + ands r1, r0 + cmp r1, #0 + beq _0814F23E + mov r0, sp + bl sub_08165100 + b _0814F5DA +_0814F23E: + ldrh r0, [r3] + b _0814F514 +_0814F242: + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _0814F250 + adds r4, r0, r1 + b _0814F5DC + .align 2, 0 +_0814F250: .4byte gUnknown_20226A8 +_0814F254: + ldr r4, _0814F264 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x18] + movs r0, #2 + b _0814F28A + .align 2, 0 +_0814F264: .4byte gUnknown_20226A0 +_0814F268: + ldr r4, _0814F278 + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x18] + movs r0, #1 + b _0814F28A + .align 2, 0 +_0814F278: .4byte gUnknown_20226A0 +_0814F27C: + ldr r4, _0814F29C + lsls r0, r7, #3 + subs r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x18] + movs r0, #3 +_0814F28A: + eors r0, r1 + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, #8 + adds r4, r1, r4 + b _0814F5DC + .align 2, 0 +_0814F29C: .4byte gUnknown_20226A0 +_0814F2A0: + ldr r0, _0814F2B4 + ldrb r0, [r0, #0x17] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0814F2B8 + adds r4, r1, r0 + b _0814F5DC + .align 2, 0 +_0814F2B4: .4byte gUnknown_2024118 +_0814F2B8: .4byte gUnknown_20226A8 +_0814F2BC: + ldr r0, _0814F2D0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _0814F2D8 + ldr r4, _0814F2D4 + b _0814F5DC + .align 2, 0 +_0814F2D0: .4byte gUnknown_2022C90 +_0814F2D4: .4byte gUnknown_20226A8 +_0814F2D8: + ldr r0, _0814F2E0 + ldr r4, [r0] + b _0814F5DC + .align 2, 0 +_0814F2E0: .4byte gUnknown_3005AF0 +_0814F2E4: + ldr r0, _0814F2F8 + ldr r1, [r0] + ldr r0, _0814F2FC + ands r0, r1 + cmp r0, #0 + beq _0814F304 + ldr r0, _0814F300 + ldrh r1, [r0] + movs r0, #2 + b _0814F576 + .align 2, 0 +_0814F2F8: .4byte gUnknown_2022C90 +_0814F2FC: .4byte 0x003F0100 +_0814F300: .4byte gUnknown_203886A +_0814F304: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0814F31C + ldr r0, _0814F318 + ldrh r1, [r0] + movs r0, #4 + b _0814F5A0 + .align 2, 0 +_0814F318: .4byte gUnknown_203886A +_0814F31C: + bl sub_080B1590 + adds r4, r0, #0 + b _0814F5DC +_0814F324: + ldr r0, _0814F334 + ldr r1, [r0] + ldr r0, _0814F338 + ands r0, r1 + cmp r0, #0 + beq _0814F340 + ldr r0, _0814F33C + b _0814F572 + .align 2, 0 +_0814F334: .4byte gUnknown_2022C90 +_0814F338: .4byte 0x003F0100 +_0814F33C: .4byte gUnknown_203886A +_0814F340: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + bne _0814F34C + b _0814F5DC +_0814F34C: + ldr r0, _0814F350 + b _0814F59C + .align 2, 0 +_0814F350: .4byte gUnknown_203886A +_0814F354: + ldr r0, _0814F3A8 + ldrb r0, [r0, #0x17] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814F3C0 + ldr r0, _0814F3AC + ldr r1, [r0] + movs r0, #8 + ands r1, r0 + ldr r4, _0814F3B0 + cmp r1, #0 + beq _0814F372 + ldr r4, _0814F3B4 +_0814F372: + ldrb r1, [r4] + adds r0, r1, #0 + ldr r2, _0814F3B8 + mov ip, r2 + ldr r2, _0814F3BC + cmp r0, #0xff + beq _0814F392 +_0814F380: + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814F380 +_0814F392: + ldr r0, [r2] + adds r0, #0x52 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + add r0, ip + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814F3D8 + .align 2, 0 +_0814F3A8: .4byte gUnknown_2024118 +_0814F3AC: .4byte gUnknown_2022C90 +_0814F3B0: .4byte gUnknown_85AB009 +_0814F3B4: .4byte gUnknown_85AB00F +_0814F3B8: .4byte gUnknown_20243E8 +_0814F3BC: .4byte gUnknown_2024140 +_0814F3C0: + ldr r0, _0814F3E0 + ldr r0, [r0] + adds r0, #0x52 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814F3E4 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814F3D8: + mov r0, sp + bl sub_0800885C + b _0814F5DA + .align 2, 0 +_0814F3E0: .4byte gUnknown_2024140 +_0814F3E4: .4byte gUnknown_2024190 +_0814F3E8: + ldr r0, _0814F3FC + bl sub_0809D068 + lsls r0, r0, #0x18 + ldr r4, _0814F400 + cmp r0, #0 + bne _0814F3F8 + b _0814F5DC +_0814F3F8: + ldr r4, _0814F404 + b _0814F5DC + .align 2, 0 +_0814F3FC: .4byte 0x000008AB +_0814F400: .4byte gUnknown_85AB225 +_0814F404: .4byte gUnknown_85AB22A +_0814F408: + ldr r0, _0814F40C + b _0814F412 + .align 2, 0 +_0814F40C: .4byte gUnknown_2023EAF +_0814F410: + ldr r0, _0814F428 +_0814F412: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r4, _0814F42C + cmp r0, #0 + beq _0814F422 + b _0814F5DC +_0814F422: + ldr r4, _0814F430 + b _0814F5DC + .align 2, 0 +_0814F428: .4byte gUnknown_2023EB0 +_0814F42C: .4byte gUnknown_85AB020 +_0814F430: .4byte gUnknown_85AB025 +_0814F434: + ldr r0, _0814F438 + b _0814F43E + .align 2, 0 +_0814F438: .4byte gUnknown_2023EAF +_0814F43C: + ldr r0, _0814F454 +_0814F43E: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r4, _0814F458 + cmp r0, #0 + beq _0814F44E + b _0814F5DC +_0814F44E: + ldr r4, _0814F45C + b _0814F5DC + .align 2, 0 +_0814F454: .4byte gUnknown_2023EB0 +_0814F458: .4byte gUnknown_85AB016 +_0814F45C: .4byte gUnknown_85AB01B +_0814F460: + ldr r0, _0814F464 + b _0814F46A + .align 2, 0 +_0814F464: .4byte gUnknown_2023EAF +_0814F468: + ldr r0, _0814F480 +_0814F46A: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r4, _0814F484 + cmp r0, #0 + beq _0814F47A + b _0814F5DC +_0814F47A: + ldr r4, _0814F488 + b _0814F5DC + .align 2, 0 +_0814F480: .4byte gUnknown_2023EB0 +_0814F484: .4byte gUnknown_85AB02A +_0814F488: .4byte gUnknown_85AB02F +_0814F48C: + ldr r0, _0814F49C + ldr r1, [r0] + ldr r0, _0814F4A0 + ands r0, r1 + cmp r0, #0 + beq _0814F4A8 + ldr r0, _0814F4A4 + b _0814F5B2 + .align 2, 0 +_0814F49C: .4byte gUnknown_2022C90 +_0814F4A0: .4byte 0x003F0100 +_0814F4A4: .4byte gUnknown_203886C +_0814F4A8: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0814F4C0 + ldr r0, _0814F4BC + ldrh r0, [r0] + bl sub_081D4B90 + b _0814F5B8 + .align 2, 0 +_0814F4BC: .4byte gUnknown_203886C +_0814F4C0: + ldr r1, _0814F4D0 + ldr r0, _0814F4D4 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0xb + b _0814F5BE + .align 2, 0 +_0814F4D0: .4byte gUnknown_82E383C +_0814F4D4: .4byte gUnknown_203886C +_0814F4D8: + ldr r0, _0814F4E8 + ldr r1, [r0] + ldr r0, _0814F4EC + ands r0, r1 + cmp r0, #0 + beq _0814F4F4 + ldr r0, _0814F4F0 + b _0814F5D2 + .align 2, 0 +_0814F4E8: .4byte gUnknown_2022C90 +_0814F4EC: .4byte 0x003F0100 +_0814F4F0: .4byte gUnknown_203886C +_0814F4F4: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0814F510 + ldr r0, _0814F50C + ldrh r1, [r0] + mov r0, sp + bl sub_081D4BB4 + b _0814F5DA + .align 2, 0 +_0814F50C: .4byte gUnknown_203886C +_0814F510: + ldr r0, _0814F51C + ldrh r0, [r0] +_0814F514: + lsls r0, r0, #5 + ldr r1, _0814F520 + adds r4, r0, r1 + b _0814F5DC + .align 2, 0 +_0814F51C: .4byte gUnknown_203886C +_0814F520: .4byte gUnknown_82E3840 +_0814F524: + ldr r0, _0814F538 + ldr r1, [r0] + ldr r0, _0814F53C + ands r0, r1 + cmp r0, #0 + beq _0814F544 + ldr r0, _0814F540 + ldrh r1, [r0] + movs r0, #2 + b _0814F576 + .align 2, 0 +_0814F538: .4byte gUnknown_2022C90 +_0814F53C: .4byte 0x003F0100 +_0814F540: .4byte gUnknown_203886C +_0814F544: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0814F55C + ldr r0, _0814F558 + ldrh r1, [r0] + movs r0, #4 + b _0814F5A0 + .align 2, 0 +_0814F558: .4byte gUnknown_203886C +_0814F55C: + bl sub_080B15CC + adds r4, r0, #0 + b _0814F5DC +_0814F564: + ldr r0, _0814F580 + ldr r1, [r0] + ldr r0, _0814F584 + ands r0, r1 + cmp r0, #0 + beq _0814F590 + ldr r0, _0814F588 +_0814F572: + ldrh r1, [r0] + movs r0, #1 +_0814F576: + bl sub_081A3460 + ldr r4, _0814F58C + b _0814F5DC + .align 2, 0 +_0814F580: .4byte gUnknown_2022C90 +_0814F584: .4byte 0x003F0100 +_0814F588: .4byte gUnknown_203886C +_0814F58C: .4byte gUnknown_2021C7C +_0814F590: + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _0814F5DC + ldr r0, _0814F5A8 +_0814F59C: + ldrh r1, [r0] + movs r0, #3 +_0814F5A0: + bl sub_081D4D80 + ldr r4, _0814F5AC + b _0814F5DC + .align 2, 0 +_0814F5A8: .4byte gUnknown_203886C +_0814F5AC: .4byte gUnknown_2021C7C +_0814F5B0: + ldr r0, _0814F5C8 +_0814F5B2: + ldrh r0, [r0] +_0814F5B4: + bl sub_08162ADC +_0814F5B8: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0814F5BC: + movs r1, #0xb +_0814F5BE: + muls r1, r0, r1 + ldr r0, _0814F5CC + adds r4, r1, r0 + b _0814F5DC + .align 2, 0 +_0814F5C8: .4byte gUnknown_203886E +_0814F5CC: .4byte gUnknown_82E3564 +_0814F5D0: + ldr r0, _0814F628 +_0814F5D2: + ldrh r1, [r0] +_0814F5D4: + mov r0, sp + bl sub_08162D24 +_0814F5DA: + mov r4, sp +_0814F5DC: + ldrb r1, [r4] + adds r0, r1, #0 + mov r5, sb + ldrb r2, [r5] + mov r3, sb + adds r3, #1 + cmp r0, #0xff + beq _0814F5FE +_0814F5EC: + mov r5, r8 + adds r0, r5, r6 + strb r1, [r0] + adds r6, #1 + adds r4, #1 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _0814F5EC +_0814F5FE: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x24 + beq _0814F612 + cmp r0, #0x30 + beq _0814F612 + cmp r0, #0x25 + beq _0814F612 + cmp r0, #0x31 + bne _0814F638 +_0814F612: + mov r0, r8 + adds r1, r0, r6 + movs r0, #0xfc + strb r0, [r1] + adds r6, #1 + mov r2, r8 + adds r1, r2, r6 + movs r0, #9 + strb r0, [r1] + adds r6, #1 + b _0814F638 + .align 2, 0 +_0814F628: .4byte gUnknown_203886E + thumb_func_end sub_0814E7F0 + + thumb_func_start sub_0814F62C +sub_0814F62C: @ 0x0814F62C + mov r3, r8 + adds r0, r3, r6 + strb r1, [r0] + adds r6, #1 + mov r3, sb + adds r3, #1 +_0814F638: + mov sb, r3 + ldrb r1, [r3] + thumb_func_end sub_0814F62C + + thumb_func_start sub_0814F63C +sub_0814F63C: @ 0x0814F63C + adds r0, r1, #0 + cmp r0, #0xff + beq _0814F646 + bl sub_0814E7F0 +_0814F646: + mov r5, r8 + adds r1, r5, r6 + mov r2, sb + ldrb r0, [r2] + strb r0, [r1] + adds r6, #1 + adds r0, r6, #0 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0814F63C + + thumb_func_start sub_0814F664 +sub_0814F664: @ 0x0814F664 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r7, r0, #0 + adds r6, r1, #0 + movs r5, #1 + movs r0, #0 + mov r8, r0 + movs r0, #0xff + strb r0, [r6] + ldrb r0, [r7, #1] + cmp r0, #0xff + bne _0814F682 + b _0814F902 +_0814F682: + adds r0, r7, r5 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #0xa + bls _0814F68E + b _0814F8F8 +_0814F68E: + lsls r0, r1, #2 + ldr r1, _0814F698 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F698: .4byte _0814F69C +_0814F69C: @ jump table + .4byte _0814F6C8 @ case 0 + .4byte _0814F6E4 @ case 1 + .4byte _0814F738 @ case 2 + .4byte _0814F750 @ case 3 + .4byte _0814F760 @ case 4 + .4byte _0814F7D8 @ case 5 + .4byte _0814F7EC @ case 6 + .4byte _0814F7FE @ case 7 + .4byte _0814F844 @ case 8 + .4byte _0814F858 @ case 9 + .4byte _0814F870 @ case 10 +_0814F6C8: + adds r0, r5, r7 + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldr r0, _0814F6E0 + subs r1, #0xc + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + b _0814F8D6 + .align 2, 0 +_0814F6E0: .4byte gUnknown_85AB3DC +_0814F6E4: + ldrb r0, [r4, #1] + cmp r0, #2 + beq _0814F700 + cmp r0, #2 + bgt _0814F6F4 + cmp r0, #1 + beq _0814F6FA + b _0814F722 +_0814F6F4: + cmp r0, #4 + beq _0814F708 + b _0814F722 +_0814F6FA: + ldrb r4, [r4, #3] + mov r8, r4 + b _0814F722 +_0814F700: + ldrb r1, [r4, #3] + ldrb r0, [r4, #4] + lsls r0, r0, #8 + b _0814F71E +_0814F708: + ldrb r0, [r4, #3] + mov r8, r0 + ldrb r0, [r4, #4] + lsls r0, r0, #8 + mov r1, r8 + orrs r1, r0 + ldrb r0, [r4, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r4, #6] + lsls r0, r0, #0x18 +_0814F71E: + orrs r1, r0 + mov r8, r1 +_0814F722: + adds r4, r5, r7 + ldrb r3, [r4, #2] + adds r0, r6, #0 + mov r1, r8 + movs r2, #0 + bl sub_080089D8 + adds r0, r5, #3 + ldrb r4, [r4, #1] + adds r5, r0, r4 + b _0814F8F8 +_0814F738: + adds r0, r5, r7 + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #3 + ldr r0, _0814F74C + adds r1, r1, r0 + b _0814F8D6 + .align 2, 0 +_0814F74C: .4byte gUnknown_82EACC4 +_0814F750: + adds r0, r5, r7 + ldrb r0, [r0, #1] + lsls r1, r0, #2 + adds r1, r1, r0 + ldr r0, _0814F75C + b _0814F860 + .align 2, 0 +_0814F75C: .4byte gUnknown_82EBC88 +_0814F760: + ldrb r0, [r4, #1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814F784 + ldrb r1, [r4, #2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814F780 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + b _0814F7C0 + .align 2, 0 +_0814F780: .4byte gUnknown_2024190 +_0814F784: + ldr r0, _0814F79C + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0814F7A4 + ldr r1, _0814F7A0 + adds r0, r6, #0 + bl sub_080088D8 + b _0814F7AC + .align 2, 0 +_0814F79C: .4byte gUnknown_2022C90 +_0814F7A0: .4byte gUnknown_85AB00F +_0814F7A4: + ldr r1, _0814F7D0 + adds r0, r6, #0 + bl sub_080088D8 +_0814F7AC: + adds r0, r5, r7 + ldrb r1, [r0, #2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814F7D4 + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 +_0814F7C0: + mov r0, sp + bl sub_0800885C + adds r0, r6, #0 + mov r1, sp + bl sub_080088D8 + b _0814F8F6 + .align 2, 0 +_0814F7D0: .4byte gUnknown_85AB009 +_0814F7D4: .4byte gUnknown_20243E8 +_0814F7D8: + ldr r1, _0814F7E8 + adds r0, r5, r7 + ldrb r0, [r0, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + b _0814F862 + .align 2, 0 +_0814F7E8: .4byte gUnknown_85AB08C +_0814F7EC: + adds r0, r5, r7 + ldrb r1, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r1, r0 + adds r0, r6, #0 + bl sub_0806B3DC + b _0814F8F6 +_0814F7FE: + adds r4, r5, r7 + ldrb r0, [r4, #1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0814F824 + ldrb r1, [r4, #2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814F820 + adds r0, r0, r1 + movs r1, #2 + adds r2, r6, #0 + bl sub_0806A058 + b _0814F836 + .align 2, 0 +_0814F820: .4byte gUnknown_2024190 +_0814F824: + ldrb r1, [r4, #2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0814F840 + adds r0, r0, r1 + movs r1, #2 + adds r2, r6, #0 + bl sub_0806A058 +_0814F836: + adds r0, r6, #0 + bl sub_0800885C + b _0814F8F6 + .align 2, 0 +_0814F840: .4byte gUnknown_20243E8 +_0814F844: + ldr r1, _0814F854 + adds r0, r5, r7 + ldrb r0, [r0, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + b _0814F862 + .align 2, 0 +_0814F854: .4byte gUnknown_85AB0D0 +_0814F858: + adds r0, r5, r7 + ldrb r1, [r0, #1] + lsls r1, r1, #3 + ldr r0, _0814F86C +_0814F860: + adds r1, r1, r0 +_0814F862: + adds r0, r6, #0 + bl sub_080088D8 + adds r5, #2 + b _0814F8F8 + .align 2, 0 +_0814F86C: .4byte gUnknown_82EBDC4 +_0814F870: + adds r0, r5, r7 + ldrb r2, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r2, r0 + ldr r0, _0814F8B8 + ldr r0, [r0] + ldr r1, _0814F8BC + ands r0, r1 + cmp r0, #0 + beq _0814F8EE + cmp r2, #0xaf + bne _0814F8E4 + ldr r2, _0814F8C0 + ldr r0, _0814F8C4 + adds r0, #0x25 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0814F8C8 + ldrb r2, [r1] + ldrh r0, [r0, #0x18] + cmp r0, r2 + bne _0814F8D4 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + ldr r0, _0814F8CC + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_080088B8 + ldr r1, _0814F8D0 + b _0814F8D6 + .align 2, 0 +_0814F8B8: .4byte gUnknown_2022C90 +_0814F8BC: .4byte gUnknown_2000002 +_0814F8C0: .4byte gUnknown_20226A0 +_0814F8C4: .4byte gUnknown_2024118 +_0814F8C8: .4byte gUnknown_2023EB3 +_0814F8CC: .4byte gUnknown_20240A8 +_0814F8D0: .4byte gUnknown_85AB28D +_0814F8D4: + ldr r1, _0814F8E0 +_0814F8D6: + adds r0, r6, #0 + bl sub_080088D8 + b _0814F8F6 + .align 2, 0 +_0814F8E0: .4byte gUnknown_85AB288 +_0814F8E4: + adds r0, r2, #0 + adds r1, r6, #0 + bl sub_080D5EC8 + b _0814F8F6 +_0814F8EE: + adds r0, r2, #0 + adds r1, r6, #0 + bl sub_080D5EC8 +_0814F8F6: + adds r5, #3 +_0814F8F8: + adds r0, r7, r5 + ldrb r0, [r0] + cmp r0, #0xff + beq _0814F902 + b _0814F682 +_0814F902: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0814F664 + + thumb_func_start sub_0814F910 +sub_0814F910: @ 0x0814F910 + push {r4, r5, lr} + adds r4, r0, #0 + movs r2, #0 + ldr r5, _0814F944 + ldr r3, _0814F948 +_0814F91A: + cmp r2, #4 + beq _0814F930 + ldrh r1, [r3] + cmp r1, #0 + bne _0814F926 + adds r2, #1 +_0814F926: + ldr r0, [r5] + adds r3, #2 + ldrh r0, [r0] + cmp r1, r0 + bne _0814F91A +_0814F930: + cmp r2, #0 + blt _0814F95C + cmp r2, #2 + bgt _0814F950 + ldr r1, _0814F94C + adds r0, r4, #0 + bl sub_080088B8 + b _0814F95C + .align 2, 0 +_0814F944: .4byte gUnknown_203A874 +_0814F948: .4byte gUnknown_85AC146 +_0814F94C: .4byte gUnknown_85ABC96 +_0814F950: + cmp r2, #4 + bgt _0814F95C + ldr r1, _0814F964 + adds r0, r4, #0 + bl sub_080088B8 +_0814F95C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814F964: .4byte gUnknown_85ABC98 + thumb_func_end sub_0814F910 + + thumb_func_start sub_0814F968 +sub_0814F968: @ 0x0814F968 + push {r4, r5, lr} + adds r3, r0, #0 + movs r4, #0 + b _0814F972 +_0814F970: + adds r3, #1 +_0814F972: + ldrb r0, [r3] + cmp r0, #0xff + bne _0814F970 + ldr r1, _0814F9A8 + ldr r5, _0814F9AC + movs r0, #0 + lsls r0, r0, #1 + adds r2, r0, r1 +_0814F982: + cmp r4, #4 + beq _0814F99C + ldrh r1, [r2] + cmp r1, #0 + bne _0814F98E + adds r4, #1 +_0814F98E: + ldr r0, [r5] + adds r2, #2 + ldrh r0, [r0] + cmp r1, r0 + bne _0814F982 + cmp r4, #4 + bhi _0814F9F8 +_0814F99C: + lsls r0, r4, #2 + ldr r1, _0814F9B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814F9A8: .4byte gUnknown_85AC146 +_0814F9AC: .4byte gUnknown_203A874 +_0814F9B0: .4byte _0814F9B4 +_0814F9B4: @ jump table + .4byte _0814F9C8 @ case 0 + .4byte _0814F9D0 @ case 1 + .4byte _0814F9D8 @ case 2 + .4byte _0814F9E0 @ case 3 + .4byte _0814F9F0 @ case 4 +_0814F9C8: + ldr r1, _0814F9CC + b _0814F9E2 + .align 2, 0 +_0814F9CC: .4byte gUnknown_85AB03C +_0814F9D0: + ldr r1, _0814F9D4 + b _0814F9E2 + .align 2, 0 +_0814F9D4: .4byte gUnknown_85AB044 +_0814F9D8: + ldr r1, _0814F9DC + b _0814F9E2 + .align 2, 0 +_0814F9DC: .4byte gUnknown_85AB048 +_0814F9E0: + ldr r1, _0814F9EC +_0814F9E2: + adds r0, r3, #0 + bl sub_080088B8 + b _0814F9F8 + .align 2, 0 +_0814F9EC: .4byte gUnknown_85AB04E +_0814F9F0: + ldr r1, _0814FA00 + adds r0, r3, #0 + bl sub_080088B8 +_0814F9F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FA00: .4byte gUnknown_85AB055 + thumb_func_end sub_0814F968 + + thumb_func_start sub_0814FA04 +sub_0814FA04: @ 0x0814FA04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r1, _0814FA30 + ldr r0, _0814FA34 + adds r0, #0x24 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + mov r8, r0 + movs r0, #0x80 + ands r0, r7 + cmp r0, #0 + beq _0814FA38 + movs r0, #0x7f + ands r7, r0 + b _0814FA56 + .align 2, 0 +_0814FA30: .4byte gUnknown_85AC468 +_0814FA34: .4byte gUnknown_2024118 +_0814FA38: + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + add r0, r8 + ldrb r1, [r0] + adds r0, r7, #0 + bl sub_08003B18 + adds r0, r7, #0 + bl sub_0800365C + adds r0, r7, #0 + movs r1, #3 + bl sub_08003528 +_0814FA56: + str r4, [sp] + mov r0, sp + strb r7, [r0, #4] + mov r1, sp + lsls r6, r7, #1 + adds r3, r6, r7 + lsls r3, r3, #2 + add r3, r8 + ldrb r0, [r3, #1] + strb r0, [r1, #5] + ldrb r0, [r3, #2] + strb r0, [r1, #6] + ldrb r0, [r3, #3] + strb r0, [r1, #7] + mov r0, sp + ldrb r0, [r0, #6] + strb r0, [r1, #8] + mov r0, sp + ldrb r0, [r0, #7] + strb r0, [r1, #9] + ldrb r0, [r3, #4] + strb r0, [r1, #0xa] + ldrb r0, [r3, #5] + strb r0, [r1, #0xb] + mov r4, sp + ldrb r2, [r4, #0xc] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0xc] + mov r2, sp + ldrb r0, [r3, #7] + lsls r0, r0, #4 + movs r5, #0xf + strb r0, [r2, #0xc] + ldrb r2, [r3, #8] + 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, #9] + lsls r0, r0, #4 + ands r1, r5 + orrs r1, r0 + strb r1, [r2, #0xd] + cmp r7, #0x16 + bne _0814FACC + ldr r0, _0814FAC8 + ldrb r2, [r0] + movs r1, #3 + rsbs r1, r1, #0 + ands r1, r2 + b _0814FAD4 + .align 2, 0 +_0814FAC8: .4byte gUnknown_30030B4 +_0814FACC: + ldr r0, _0814FAF0 + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 +_0814FAD4: + strb r1, [r0] + adds r3, r0, #0 + ldr r0, _0814FAF4 + ldr r1, [r0] + ldr r2, _0814FAF8 + ands r1, r2 + adds r2, r0, #0 + cmp r1, #0 + beq _0814FAFC + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + b _0814FB04 + .align 2, 0 +_0814FAF0: .4byte gUnknown_30030B4 +_0814FAF4: .4byte gUnknown_2022C90 +_0814FAF8: .4byte 0x01000002 +_0814FAFC: + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 +_0814FB04: + strb r0, [r3] + cmp r7, #0 + beq _0814FB0E + cmp r7, #0x16 + bne _0814FB58 +_0814FB0E: + ldr r1, [r2] + ldr r0, _0814FB1C + ands r0, r1 + cmp r0, #0 + beq _0814FB20 + movs r6, #1 + b _0814FB48 + .align 2, 0 +_0814FB1C: .4byte gUnknown_2000002 +_0814FB20: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + cmp r1, #0 + beq _0814FB40 + ldr r4, _0814FB3C + bl sub_08185D1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r6, [r0] + b _0814FB48 + .align 2, 0 +_0814FB3C: .4byte gUnknown_85AC470 +_0814FB40: + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0814FB48: + ldr r0, _0814FB54 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _0814FB6A + .align 2, 0 +_0814FB54: .4byte gUnknown_30030B4 +_0814FB58: + adds r0, r6, r7 + lsls r0, r0, #2 + add r0, r8 + ldrb r6, [r0, #6] + ldrb r1, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_0814FB6A: + mov r0, sp + adds r1, r6, #0 + movs r2, #0 + bl sub_08004548 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0814FA04 + + thumb_func_start sub_0814FB80 +sub_0814FB80: @ 0x0814FB80 + push {r4, r5, lr} + ldr r0, _0814FBE0 + ldrb r2, [r0] + lsls r1, r2, #9 + ldr r0, _0814FBE4 + adds r1, r1, r0 + ldr r0, _0814FBE8 + adds r2, r2, r0 + ldrb r2, [r2] + adds r0, r1, #0 + adds r0, #8 + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0xc + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_0814FBFC + lsls r0, r0, #0x18 + ldr r5, _0814FBEC + lsrs r0, r0, #0x16 + ldr r2, _0814FBF0 + adds r1, r0, r2 + ldrh r1, [r1] + adds r2, r5, #0 + adds r2, #0xb8 + strh r1, [r2] + ldr r1, _0814FBF4 + adds r0, r0, r1 + ldrh r0, [r0] + adds r5, #0xb6 + strh r0, [r5] + ldr r4, _0814FBF8 + adds r0, r2, #0 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + subs r4, #2 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0814FBE0: .4byte gUnknown_2023D08 +_0814FBE4: .4byte gUnknown_2022D0C +_0814FBE8: .4byte gUnknown_2024154 +_0814FBEC: .4byte gUnknown_20373B4 +_0814FBF0: .4byte gUnknown_8D85604 +_0814FBF4: .4byte gUnknown_8D85606 +_0814FBF8: .4byte gUnknown_203786C + thumb_func_end sub_0814FB80 + + thumb_func_start sub_0814FBFC +sub_0814FBFC: @ 0x0814FBFC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, r2 + beq _0814FC44 + cmp r0, #2 + bhi _0814FC16 + cmp r2, #1 + bhi _0814FC44 + b _0814FC1E +_0814FC16: + cmp r0, #7 + bhi _0814FC28 + cmp r2, #2 + bhi _0814FC44 +_0814FC1E: + movs r0, #2 + subs r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0814FC46 +_0814FC28: + cmp r2, #0 + bne _0814FC30 + movs r0, #2 + b _0814FC46 +_0814FC30: + lsrs r0, r1, #0x1a + cmp r2, r0 + bhi _0814FC3A + movs r0, #1 + b _0814FC46 +_0814FC3A: + lsrs r0, r1, #0x19 + cmp r3, r0 + bhi _0814FC44 + movs r0, #0 + b _0814FC46 +_0814FC44: + movs r0, #3 +_0814FC46: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0814FBFC + + thumb_func_start sub_0814FC4C +sub_0814FC4C: @ 0x0814FC4C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0814FC70 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0814FC6A + ldr r0, _0814FC74 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_0814FC6A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0814FC70: .4byte gUnknown_2037C74 +_0814FC74: .4byte sub_0814FCA4 + thumb_func_end sub_0814FC4C + + thumb_func_start sub_0814FC78 +sub_0814FC78: @ 0x0814FC78 + push {lr} + sub sp, #4 + bl sub_080987DC + ldr r0, _0814FCA0 + movs r1, #1 + bl sub_080A8878 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0814FCA0: .4byte sub_0814FC4C + thumb_func_end sub_0814FC78 + + thumb_func_start sub_0814FCA4 +sub_0814FCA4: @ 0x0814FCA4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + movs r4, #0 + str r4, [sp, #0x14] + ldr r1, _0814FCCC + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #9 + bhi _0814FCFC + lsls r0, r0, #2 + ldr r1, _0814FCD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0814FCCC: .4byte gUnknown_3002360 +_0814FCD0: .4byte _0814FCD4 +_0814FCD4: @ jump table + .4byte _0814FCFC @ case 0 + .4byte _0814FDB4 @ case 1 + .4byte _0814FE6C @ case 2 + .4byte _0814FF2C @ case 3 + .4byte _0814FF58 @ case 4 + .4byte _0814FF74 @ case 5 + .4byte _0814FFD4 @ case 6 + .4byte _0815006C @ case 7 + .4byte _0815016C @ case 8 + .4byte _081501A4 @ case 9 +_0814FCFC: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_08150B48 + bl sub_080B9710 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #0x10 + mov sb, r0 + add r2, sp, #0xc + movs r6, #0 + ldr r1, _0814FDA0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _0814FDA4 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov r8, r0 +_0814FD2A: + strh r6, [r2] + add r0, sp, #0xc + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _0814FD2A + strh r6, [r2] + add r2, sp, #0xc + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r3, r8 + orrs r0, r3 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #0x10] + ldr r2, _0814FDA0 + mov r1, sb + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + add r0, sp, #0xc + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + ldr r4, _0814FDA8 + ldr r0, _0814FDAC + bl sub_08000BDC + str r0, [r4] + ldr r1, _0814FDB0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FDA0: .4byte 0x040000D4 +_0814FDA4: .4byte 0x81000800 +_0814FDA8: .4byte gUnknown_203A878 +_0814FDAC: .4byte 0x00004110 +_0814FDB0: .4byte gUnknown_3002360 +_0814FDB4: + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + bl sub_080A133C + bl sub_081996B8 + bl sub_080AA8A0 + movs r4, #0 + ldr r0, _0814FE48 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xf0 + movs r2, #0 +_0814FDD8: + lsls r0, r4, #2 + adds r0, r1, r0 + str r2, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _0814FDD8 + bl sub_080A269C + bl sub_080A27A8 + movs r0, #0 + bl sub_080017D4 + ldr r1, _0814FE4C + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _0814FE50 + ldr r1, [r4] + adds r1, #0xfc + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r3, _0814FE54 + adds r1, r1, r3 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _0814FE58 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + ldr r2, _0814FE5C + adds r1, r1, r2 + movs r0, #3 + bl sub_0800212C + ldr r2, _0814FE60 + ldr r1, _0814FE64 + movs r0, #0 + strh r0, [r1] + strh r0, [r2] + ldr r1, _0814FE68 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FE48: .4byte gUnknown_8526DE8 +_0814FE4C: .4byte gUnknown_85AC474 +_0814FE50: .4byte gUnknown_203A878 +_0814FE54: .4byte 0x000010FC +_0814FE58: .4byte 0x000020FC +_0814FE5C: .4byte 0x000030FC +_0814FE60: .4byte gUnknown_2021B38 +_0814FE64: .4byte gUnknown_2021B3A +_0814FE68: .4byte gUnknown_3002360 +_0814FE6C: + movs r4, #0 + add r5, sp, #0x14 + ldr r6, _0814FEF4 +_0814FE72: + lsls r0, r4, #3 + adds r0, r0, r6 + bl sub_08034388 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0814FE72 + ldr r0, _0814FEF8 + bl sub_080084A8 + ldr r0, _0814FEFC + adds r1, r5, #0 + bl sub_08199858 + ldr r4, _0814FF00 + ldr r1, [r4] + ldr r2, _0814FF04 + adds r1, r1, r2 + str r0, [r1] + ldr r0, _0814FF08 + adds r1, r5, #0 + bl sub_08199858 + ldr r1, [r4] + movs r3, #0x82 + lsls r3, r3, #7 + adds r1, r1, r3 + str r0, [r1] + ldr r0, _0814FF0C + adds r1, r5, #0 + bl sub_08199858 + ldr r1, [r4] + ldr r2, _0814FF10 + adds r1, r1, r2 + str r0, [r1] + ldr r0, _0814FF14 + adds r1, r5, #0 + bl sub_08199858 + ldr r1, [r4] + ldr r3, _0814FF18 + adds r2, r1, r3 + str r0, [r2] + ldr r0, _0814FF1C + adds r1, r1, r0 + ldr r0, _0814FF20 + str r0, [r1] + ldr r1, _0814FF24 + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _0814FF28 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FEF4: .4byte gUnknown_85AC95C +_0814FEF8: .4byte gUnknown_85AC97C +_0814FEFC: .4byte gUnknown_85AC484 +_0814FF00: .4byte gUnknown_203A878 +_0814FF04: .4byte 0x000040FC +_0814FF08: .4byte gUnknown_85AC5DC +_0814FF0C: .4byte gUnknown_85AC760 +_0814FF10: .4byte 0x00004104 +_0814FF14: .4byte gUnknown_85AC938 +_0814FF18: .4byte 0x0000410C +_0814FF1C: .4byte 0x00004108 +_0814FF20: .4byte gUnknown_85AC924 +_0814FF24: .4byte gUnknown_8DBA860 +_0814FF28: .4byte gUnknown_3002360 +_0814FF2C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0814FF38 + b _08150202 +_0814FF38: + ldr r0, _0814FF50 + movs r1, #0 + movs r2, #0x80 + bl sub_080A1200 + ldr r1, _0814FF54 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FF50: .4byte gUnknown_8DBA7C0 +_0814FF54: .4byte gUnknown_3002360 +_0814FF58: + bl sub_08150D04 + bl sub_080A89D4 + ldr r1, _0814FF70 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FF70: .4byte gUnknown_3002360 +_0814FF74: + ldr r0, _0814FF8C + ldr r0, [r0] + ldrb r0, [r0, #2] + cmp r0, #7 + bne _0814FF90 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r6, r2 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FF8C: .4byte gUnknown_203A878 +_0814FF90: + ldr r0, _0814FFD0 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xf0 + ldr r0, [r1] + cmp r0, #0 + bne _0814FFA0 + b _08150202 +_0814FFA0: + movs r4, #0 + adds r3, r1, #0 + movs r5, #0xd + rsbs r5, r5, #0 +_0814FFA8: + lsls r0, r4, #2 + adds r0, r3, r0 + ldr r2, [r0] + cmp r2, #0 + beq _0814FFBA + ldrb r1, [r2, #5] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #5] +_0814FFBA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _0814FFA8 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r6, r3 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0814FFD0: .4byte gUnknown_8526DE8 +_0814FFD4: + ldr r6, _08150058 + ldr r0, [r6] + movs r1, #0x82 + lsls r1, r1, #7 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #0x20 + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + movs r0, #1 + movs r2, #0 + movs r3, #0x11 + bl sub_080023B4 + ldr r0, [r6] + ldr r2, _0815005C + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #0x1e + str r0, [sp] + movs r3, #0x14 + mov r8, r3 + str r3, [sp, #4] + str r5, [sp, #8] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080023B4 + ldr r0, [r6] + ldr r1, _08150060 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #5 + str r0, [sp] + movs r4, #2 + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080023B4 + ldr r0, [r6] + ldr r2, _08150064 + adds r0, r0, r2 + ldr r1, [r0] + str r4, [sp] + mov r3, r8 + str r3, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r2, #0 + movs r3, #2 + bl sub_080023B4 + ldr r1, _08150068 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_08150058: .4byte gUnknown_203A878 +_0815005C: .4byte 0x00004104 +_08150060: .4byte 0x00004108 +_08150064: .4byte 0x0000410C +_08150068: .4byte gUnknown_3002360 +_0815006C: + ldr r0, _0815015C + ldrb r0, [r0] + bl sub_081514A4 + ldr r1, _08150160 + mov sb, r1 + ldr r0, [r1] + ldr r2, _08150164 + mov r8, r2 + add r0, r8 + ldr r1, [r0] + adds r1, #0x90 + movs r6, #0xc + str r6, [sp] + movs r5, #3 + str r5, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #0 + movs r2, #0 + movs r3, #0xe + bl sub_080023B4 + mov r3, sb + ldr r0, [r3] + add r0, r8 + ldr r1, [r0] + adds r1, #0xd8 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0xc + movs r3, #0x11 + bl sub_080023B4 + mov r1, sb + ldr r0, [r1] + add r0, r8 + ldr r1, [r0] + movs r2, #0x90 + lsls r2, r2, #1 + adds r1, r1, r2 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x18 + movs r3, #0x14 + bl sub_080023B4 + mov r3, sb + ldr r0, [r3] + add r0, r8 + ldr r1, [r0] + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0 + movs r3, #0x11 + bl sub_080023B4 + mov r1, sb + ldr r0, [r1] + add r0, r8 + ldr r1, [r0] + adds r1, #0x48 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0 + movs r3, #0x14 + bl sub_080023B4 + mov r2, sb + ldr r0, [r2] + add r0, r8 + ldr r1, [r0] + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0xc + movs r3, #0x14 + bl sub_080023B4 + mov r3, sb + ldr r0, [r3] + add r0, r8 + ldr r1, [r0] + adds r1, #0x48 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0xc + movs r3, #0x17 + bl sub_080023B4 + mov r1, sb + ldr r0, [r1] + add r0, r8 + ldr r1, [r0] + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r2, #0x18 + movs r3, #0x17 + bl sub_080023B4 + ldr r1, _08150168 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0815015C: .4byte gUnknown_2037280 +_08150160: .4byte gUnknown_203A878 +_08150164: .4byte 0x000040FC +_08150168: .4byte gUnknown_3002360 +_0815016C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #3 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0815019C + movs r1, #1 + bl sub_080A2A5C + movs r0, #1 + bl sub_08150B48 + ldr r1, _081501A0 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + ldrb r0, [r1] + adds r0, #1 + b _08150200 + .align 2, 0 +_0815019C: .4byte 0x000001A9 +_081501A0: .4byte gUnknown_3002360 +_081501A4: + ldr r3, _081501D8 + ldrh r2, [r3] + movs r0, #0 + strh r0, [r3] + ldr r4, _081501DC + ldrh r0, [r4] + movs r1, #1 + orrs r0, r1 + strh r0, [r4] + strh r2, [r3] + ldr r0, _081501E0 + bl sub_080006F0 + ldr r0, _081501E4 + bl sub_08000540 + ldr r0, _081501E8 + movs r1, #0 + bl sub_080A8878 + ldr r0, _081501EC + ldrh r0, [r0] + cmp r0, #0 + bne _081501F4 + ldr r0, _081501F0 + b _081501F6 + .align 2, 0 +_081501D8: .4byte 0x04000208 +_081501DC: .4byte 0x04000200 +_081501E0: .4byte sub_081507DC +_081501E4: .4byte sub_08150218 +_081501E8: .4byte sub_081503C0 +_081501EC: .4byte gUnknown_2037280 +_081501F0: .4byte sub_0815052C +_081501F4: + ldr r0, _08150210 +_081501F6: + movs r1, #1 + bl sub_080A8878 + ldr r1, _08150214 + ldr r1, [r1] +_08150200: + strb r0, [r1] +_08150202: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08150210: .4byte sub_08150640 +_08150214: .4byte gUnknown_203A878 + thumb_func_end sub_0814FCA4 + + thumb_func_start sub_08150218 +sub_08150218: @ 0x08150218 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + bl sub_080A26B0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08150218 + + thumb_func_start sub_08150234 +sub_08150234: @ 0x08150234 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r4, #0 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + movs r0, #0 + bl sub_08150B48 + ldr r0, _08150394 + strh r4, [r0] + movs r0, #0 + bl sub_080AAA2C + add r0, sp, #4 + mov r8, r0 + ldr r0, _08150398 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0xf0 + movs r2, #0 +_08150274: + lsls r0, r4, #2 + adds r0, r1, r0 + str r2, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _08150274 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + movs r0, #0 + bl sub_08002160 + movs r0, #1 + bl sub_08002160 + movs r0, #2 + bl sub_08002160 + movs r0, #3 + bl sub_08002160 + movs r0, #0 + bl sub_080017D4 + ldr r6, _0815039C + ldr r0, [r6] + ldr r2, _081503A0 + adds r1, r0, r2 + movs r5, #0 + str r5, [r1] + ldr r4, _081503A4 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r4, r0, r4 + str r5, [r4] + ldr r4, _081503A8 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r4, r0, r4 + str r5, [r4] + movs r4, #0x82 + lsls r4, r4, #7 + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r4, r0, r4 + str r5, [r4] + ldr r4, _081503AC + adds r0, r0, r4 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r6] + adds r4, r0, r4 + str r5, [r4] + bl sub_08000BF0 + str r5, [r6] + movs r2, #0xc0 + lsls r2, r2, #0x13 + movs r3, #0xc0 + lsls r3, r3, #9 + mov r4, sp + movs r6, #0 + ldr r1, _081503B0 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _081503B4 + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_0815031C: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r2, r2, r5 + subs r3, r3, r5 + cmp r3, r5 + bhi _0815031C + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, #4] + lsrs r0, r3, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _081503B0 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + bl sub_08084540 + ldr r0, _081503B8 + str r4, [r0] + ldr r0, _081503BC + bl sub_08000540 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08150394: .4byte gUnknown_2021B38 +_08150398: .4byte gUnknown_8526DE8 +_0815039C: .4byte gUnknown_203A878 +_081503A0: .4byte 0x00004108 +_081503A4: .4byte 0x0000410C +_081503A8: .4byte 0x00004104 +_081503AC: .4byte 0x000040FC +_081503B0: .4byte 0x040000D4 +_081503B4: .4byte 0x81000800 +_081503B8: .4byte gUnknown_3005B0C +_081503BC: .4byte sub_08085934 + thumb_func_end sub_08150234 + + thumb_func_start sub_081503C0 +sub_081503C0: @ 0x081503C0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + ldr r5, _081503EC + ldr r3, [r5] + ldrh r0, [r3, #6] + adds r0, #1 + strh r0, [r3, #6] + ldrb r2, [r3, #1] + adds r7, r5, #0 + cmp r2, #2 + beq _081504C6 + cmp r2, #2 + bgt _081503F0 + cmp r2, #0 + beq _081503FE + cmp r2, #1 + beq _08150418 + b _0815051E + .align 2, 0 +_081503EC: .4byte gUnknown_203A878 +_081503F0: + cmp r2, #3 + bne _081503F6 + b _081504EC +_081503F6: + cmp r2, #0xff + bne _081503FC + b _08150504 +_081503FC: + b _0815051E +_081503FE: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r3, #4] + cmp r0, r1 + beq _0815040A + b _0815051E +_0815040A: + ldrb r0, [r3, #2] + bl sub_080AA994 + ldr r1, [r5] + movs r0, #1 + strb r0, [r1, #1] + b _0815051E +_08150418: + ldrb r0, [r3, #2] + cmp r0, #2 + beq _0815046C + cmp r0, #7 + beq _08150424 + b _0815051E +_08150424: + ldr r0, _08150468 + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0xf0 + ldr r0, [r2] + cmp r0, #0 + beq _0815051E + ldrb r1, [r0, #5] + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _0815051E + adds r3, r2, #0 + movs r5, #0xd + rsbs r5, r5, #0 +_08150442: + lsls r0, r4, #2 + adds r0, r3, r0 + ldr r2, [r0] + cmp r2, #0 + beq _08150454 + ldrb r1, [r2, #5] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #5] +_08150454: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _08150442 + ldr r1, [r7] + movs r0, #2 + strb r0, [r1, #1] + b _0815051E + .align 2, 0 +_08150468: .4byte gUnknown_8526DE8 +_0815046C: + ldr r0, _08150480 + ldr r2, [r0] + movs r1, #0xda + lsls r1, r1, #3 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _08150484 + strb r0, [r3, #1] + b _0815051E + .align 2, 0 +_08150480: .4byte gUnknown_8526DE8 +_08150484: + ldrh r1, [r3, #6] + ldrh r0, [r3, #4] + adds r0, #8 + cmp r1, r0 + blt _0815051E + adds r6, r2, #0 + adds r6, #0xf0 + movs r5, #1 + movs r7, #5 + rsbs r7, r7, #0 +_08150498: + lsls r0, r4, #2 + adds r0, r6, r0 + ldr r0, [r0] + cmp r0, #0 + beq _081504BA + adds r3, r0, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r1, r2, #0x1d + lsrs r1, r1, #0x1f + eors r1, r5 + ands r1, r5 + lsls r1, r1, #2 + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081504BA: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _08150498 + b _0815051E +_081504C6: + lsls r1, r0, #0x10 + ldr r0, _081504E8 + cmp r1, r0 + bne _0815051E + movs r0, #3 + strb r0, [r3, #1] + subs r0, #4 + str r4, [sp] + movs r1, #3 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #4 + bl sub_080A2B08 + b _0815051E + .align 2, 0 +_081504E8: .4byte 0x023A0000 +_081504EC: + ldr r0, _08150500 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0815051E + movs r0, #0xff + strb r0, [r3, #1] + b _0815051E + .align 2, 0 +_08150500: .4byte gUnknown_2037C74 +_08150504: + movs r0, #0 + bl sub_080006F0 + adds r0, r6, #0 + bl sub_080A8964 + ldr r0, [r5] + ldrb r0, [r0] + bl sub_080A8964 + ldr r0, _08150528 + bl sub_08000540 +_0815051E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08150528: .4byte sub_08150234 + thumb_func_end sub_081503C0 + + thumb_func_start sub_0815052C +sub_0815052C: @ 0x0815052C + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r6, _08150580 + ldr r1, [r6] + ldrb r0, [r1, #1] + cmp r0, #0xff + beq _0815060C + ldrb r0, [r1, #0x14] + subs r0, #1 + strb r0, [r1, #0x14] + ldr r1, [r6] + ldrh r0, [r1, #6] + movs r3, #1 + ands r0, r3 + cmp r0, #0 + bne _08150552 + ldrb r0, [r1, #0x15] + subs r0, #1 + strb r0, [r1, #0x15] +_08150552: + ldr r2, [r6] + ldrh r0, [r2, #6] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0815056C + ldrb r0, [r2, #0xc] + subs r0, #1 + strb r0, [r2, #0xc] + ldr r1, [r6] + ldrb r0, [r1, #0xd] + subs r0, #1 + strb r0, [r1, #0xd] +_0815056C: + ldr r0, [r6] + ldrb r1, [r0, #0x14] + cmp r1, #0x20 + beq _081505B8 + cmp r1, #0x20 + bgt _08150584 + cmp r1, #0x10 + beq _081505D0 + b _0815060C + .align 2, 0 +_08150580: .4byte gUnknown_203A878 +_08150584: + cmp r1, #0x28 + beq _081505A6 + cmp r1, #0xaf + bne _0815060C + movs r0, #2 + str r0, [sp] + movs r0, #0xa + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0x16 + bl sub_080026E0 + b _0815060C +_081505A6: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #3 + b _081505C8 +_081505B8: + str r3, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #2 +_081505C8: + movs r3, #0 + bl sub_080026E0 + b _0815060C +_081505D0: + ldr r1, _08150634 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #5 + str r0, [sp] + movs r4, #2 + str r4, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_080023B4 + ldr r0, [r6] + ldr r1, _08150638 + adds r0, r0, r1 + ldr r1, [r0] + str r4, [sp] + movs r0, #0x1e + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r2, #0 + movs r3, #2 + bl sub_080023B4 + ldr r1, [r6] + movs r0, #0x40 + strb r0, [r1, #0x15] +_0815060C: + bl sub_08151138 + ldr r3, _0815063C + movs r0, #0 + ldrsh r2, [r3, r0] + adds r1, r2, #1 + adds r0, r1, #0 + cmp r1, #0 + bge _08150622 + adds r0, r2, #0 + adds r0, #0x80 +_08150622: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + strh r0, [r3] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08150634: .4byte 0x00004108 +_08150638: .4byte 0x0000410C +_0815063C: .4byte gUnknown_2021B38 + thumb_func_end sub_0815052C + + thumb_func_start sub_08150640 +sub_08150640: @ 0x08150640 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _08150694 + ldr r1, [r7] + ldrb r0, [r1, #1] + cmp r0, #0xff + bne _08150650 + b _08150792 +_08150650: + ldrb r0, [r1, #0x14] + adds r0, #1 + strb r0, [r1, #0x14] + ldr r1, [r7] + ldrh r0, [r1, #6] + movs r6, #1 + ands r0, r6 + cmp r0, #0 + bne _08150668 + ldrb r0, [r1, #0x15] + adds r0, #1 + strb r0, [r1, #0x15] +_08150668: + ldr r2, [r7] + ldrh r0, [r2, #6] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08150682 + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + ldr r1, [r7] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] +_08150682: + ldr r0, [r7] + ldrb r1, [r0, #0x14] + cmp r1, #0x20 + beq _081506F6 + cmp r1, #0x20 + bgt _08150698 + cmp r1, #0x10 + beq _081506C4 + b _08150792 + .align 2, 0 +_08150694: .4byte gUnknown_203A878 +_08150698: + cmp r1, #0x28 + beq _08150760 + cmp r1, #0xb0 + bne _08150792 + ldr r1, _081506C0 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #2 + str r0, [sp] + movs r0, #0x1e + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #3 + movs r2, #0 + movs r3, #2 + bl sub_080023B4 + b _08150792 + .align 2, 0 +_081506C0: .4byte 0x0000410C +_081506C4: + movs r0, #3 + str r0, [sp] + movs r4, #2 + str r4, [sp, #4] + movs r5, #0x11 + str r5, [sp, #8] + movs r1, #0 + movs r2, #2 + movs r3, #0 + bl sub_080026E0 + str r4, [sp] + movs r0, #0xa + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #0x16 + bl sub_080026E0 + ldr r1, [r7] + movs r0, #0xc0 + strb r0, [r1, #0x15] + b _08150792 +_081506F6: + ldr r5, _0815075C + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #4] + str r6, [sp] + str r6, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #3 + movs r2, #2 + movs r3, #0 + bl sub_080026E0 + ldr r0, [r7] + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #6] + str r6, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r2, #3 + movs r3, #0 + bl sub_080026E0 + ldr r0, [r7] + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #0xe] + str r6, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r2, #2 + movs r3, #1 + bl sub_080026E0 + ldr r0, [r7] + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #0x10] + str r6, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r2, #3 + movs r3, #1 + bl sub_080026E0 + b _08150792 + .align 2, 0 +_0815075C: .4byte 0x00004108 +_08150760: + ldr r5, _081507AC + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #8] + str r6, [sp] + str r6, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #3 + movs r2, #4 + movs r3, #0 + bl sub_080026E0 + ldr r0, [r7] + adds r0, r0, r5 + ldr r0, [r0] + ldrh r1, [r0, #0x12] + str r6, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + movs r2, #4 + movs r3, #1 + bl sub_080026E0 +_08150792: + bl sub_08151194 + ldr r0, _081507B0 + ldr r1, [r0] + ldrh r0, [r1, #6] + ldrh r1, [r1, #4] + cmp r0, r1 + bhs _081507B8 + ldr r4, _081507B4 + movs r1, #0 + ldrsh r0, [r4, r1] + b _081507C2 + .align 2, 0 +_081507AC: .4byte 0x00004108 +_081507B0: .4byte gUnknown_203A878 +_081507B4: .4byte gUnknown_2021B38 +_081507B8: + ldr r0, _081507D4 + ldr r4, [r0] + ldr r0, _081507D8 + adds r4, r4, r0 + ldrh r0, [r4] +_081507C2: + adds r0, #0xf7 + movs r1, #0xf8 + bl __modsi3 + strh r0, [r4] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081507D4: .4byte gUnknown_8526DE8 +_081507D8: .4byte 0x000006FC + thumb_func_end sub_08150640 + + thumb_func_start sub_081507DC +sub_081507DC: @ 0x081507DC + push {r4, lr} + movs r0, #0 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + ldr r4, _0815083C + ldr r0, [r4] + ldrb r1, [r0, #0x14] + movs r0, #0x1c + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0x15] + movs r0, #0x1e + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0xc] + movs r0, #0x14 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0xd] + movs r0, #0x16 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #8] + movs r0, #0x10 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #9] + movs r0, #0x12 + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815083C: .4byte gUnknown_203A878 + thumb_func_end sub_081507DC + + thumb_func_start sub_08150840 +sub_08150840: @ 0x08150840 + bx lr + .align 2, 0 + thumb_func_end sub_08150840 + + thumb_func_start sub_08150844 +sub_08150844: @ 0x08150844 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _081508AC + ldr r6, [r0] + ldrb r0, [r6, #1] + cmp r0, #0xff + beq _08150910 + ldr r0, _081508B0 + ldrh r0, [r0] + cmp r0, #0 + bne _081508C0 + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _0815086E + ldr r1, _081508B4 + bl __addsf3 +_0815086E: + ldr r1, _081508B8 + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x2e] + subs r1, r1, r0 + strh r1, [r5, #0x20] + movs r1, #6 + ldrsh r4, [r6, r1] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _08150896 + ldr r1, _081508B4 + bl __addsf3 +_08150896: + ldr r1, _081508BC + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x30] + subs r1, r1, r0 + strh r1, [r5, #0x22] + b _08150910 + .align 2, 0 +_081508AC: .4byte gUnknown_203A878 +_081508B0: .4byte gUnknown_2037280 +_081508B4: .4byte 0x47800000 +_081508B8: .4byte 0x3E0F5C29 +_081508BC: .4byte 0x3D89374C +_081508C0: + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _081508D4 + ldr r1, _08150918 + bl __addsf3 +_081508D4: + ldr r1, _0815091C + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x20] + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _081508FC + ldr r1, _08150918 + bl __addsf3 +_081508FC: + ldr r1, _08150920 + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x30] + adds r0, r0, r1 + strh r0, [r5, #0x22] +_08150910: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08150918: .4byte 0x47800000 +_0815091C: .4byte 0x3E0F5C29 +_08150920: .4byte 0x3D89374C + thumb_func_end sub_08150844 + + thumb_func_start sub_08150924 +sub_08150924: @ 0x08150924 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08150990 + ldr r6, [r0] + ldrb r0, [r6, #1] + cmp r0, #0xff + bne _08150934 + b _08150A3C +_08150934: + ldr r0, _08150994 + ldrh r0, [r0] + cmp r0, #0 + bne _081509A4 + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _08150950 + ldr r1, _08150998 + bl __addsf3 +_08150950: + ldr r1, _0815099C + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x2e] + subs r1, r1, r0 + strh r1, [r5, #0x20] + movs r1, #6 + ldrsh r4, [r6, r1] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _08150978 + ldr r1, _08150998 + bl __addsf3 +_08150978: + ldr r1, _081509A0 + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x30] + subs r1, r1, r0 + strh r1, [r5, #0x22] + b _081509F4 + .align 2, 0 +_08150990: .4byte gUnknown_203A878 +_08150994: .4byte gUnknown_2037280 +_08150998: .4byte 0x47800000 +_0815099C: .4byte 0x3E0F5C29 +_081509A0: .4byte 0x3D89374C +_081509A4: + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _081509B8 + ldr r1, _08150A18 + bl __addsf3 +_081509B8: + ldr r1, _08150A1C + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x20] + movs r0, #6 + ldrsh r4, [r6, r0] + adds r0, r4, #0 + bl __floatsisf + cmp r4, #0 + bge _081509E0 + ldr r1, _08150A18 + bl __addsf3 +_081509E0: + ldr r1, _08150A20 + bl __mulsf3 + bl __fixunssfsi + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x30] + adds r0, r0, r1 + strh r0, [r5, #0x22] +_081509F4: + movs r0, #0x32 + ldrsh r2, [r5, r0] + cmp r2, #0 + bne _08150A24 + movs r0, #0x11 + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x34] + adds r1, r0, #1 + strh r1, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _08150A3C + strh r2, [r5, #0x34] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + b _08150A3C + .align 2, 0 +_08150A18: .4byte 0x47800000 +_08150A1C: .4byte 0x3E0F5C29 +_08150A20: .4byte 0x3D89374C +_08150A24: + movs r2, #0 + movs r0, #0x10 + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x34] + adds r1, r0, #1 + strh r1, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _08150A3C + strh r2, [r5, #0x34] + strh r2, [r5, #0x32] +_08150A3C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08150924 + + thumb_func_start sub_08150A44 +sub_08150A44: @ 0x08150A44 + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08150A74 + adds r0, r2, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #1 + ldrh r3, [r2, #0x20] + adds r0, r0, r3 + strh r0, [r2, #0x20] + ldrh r1, [r2, #0x22] + adds r1, #0x10 + adds r0, r2, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + strh r0, [r2, #0x22] +_08150A74: + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08150ACA + movs r0, #0x30 + ldrsh r1, [r2, r0] + cmp r1, #0 + beq _08150A94 + cmp r1, #1 + beq _08150A9E + b _08150ABC +_08150A94: + ldrh r0, [r2, #0x20] + adds r0, #1 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x2e] + b _08150AAE +_08150A9E: + ldrh r0, [r2, #0x2e] + ands r0, r1 + cmp r0, #0 + beq _08150ABC + ldrh r0, [r2, #0x20] + adds r0, #1 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x20] +_08150AAE: + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08150ABC + ldrh r0, [r2, #0x22] + adds r0, #1 + strh r0, [r2, #0x22] +_08150ABC: + movs r1, #0x22 + ldrsh r0, [r2, r1] + cmp r0, #0xa0 + ble _08150ACA + adds r0, r2, #0 + bl sub_08006E00 +_08150ACA: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08150A44 + + thumb_func_start sub_08150AD0 +sub_08150AD0: @ 0x08150AD0 + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08150AEE + ldrh r1, [r2, #0x22] + adds r1, #0x10 + adds r0, r2, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + strh r0, [r2, #0x22] +_08150AEE: + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08150B44 + movs r0, #0x30 + ldrsh r1, [r2, r0] + cmp r1, #0 + beq _08150B0E + cmp r1, #1 + beq _08150B18 + b _08150B36 +_08150B0E: + ldrh r0, [r2, #0x20] + subs r0, #1 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x2e] + b _08150B28 +_08150B18: + ldrh r0, [r2, #0x2e] + ands r0, r1 + cmp r0, #0 + beq _08150B36 + ldrh r0, [r2, #0x20] + subs r0, #1 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x20] +_08150B28: + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08150B36 + ldrh r0, [r2, #0x22] + subs r0, #1 + strh r0, [r2, #0x22] +_08150B36: + movs r1, #0x22 + ldrsh r0, [r2, r1] + cmp r0, #0x4f + bgt _08150B44 + adds r0, r2, #0 + bl sub_08006E00 +_08150B44: + pop {r0} + bx r0 + thumb_func_end sub_08150AD0 + + thumb_func_start sub_08150B48 +sub_08150B48: @ 0x08150B48 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08150B56 + cmp r0, #1 + beq _08150BF8 +_08150B56: + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + b _08150CF8 +_08150BF8: + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + ldr r0, _08150C48 + ldrh r3, [r0] + cmp r3, #0 + bne _08150C50 + ldr r1, _08150C4C + ldr r2, [r1] + movs r0, #0xb0 + strb r0, [r2, #0x14] + ldr r2, [r1] + movs r0, #0x10 + strb r0, [r2, #0x15] + ldr r0, [r1] + strb r3, [r0, #0xc] + ldr r2, [r1] + movs r0, #0x50 + b _08150C68 + .align 2, 0 +_08150C48: .4byte gUnknown_2037280 +_08150C4C: .4byte gUnknown_203A878 +_08150C50: + ldr r1, _08150D00 + ldr r2, [r1] + movs r3, #0 + movs r0, #0x60 + strb r0, [r2, #0x14] + ldr r2, [r1] + movs r0, #0xe8 + strb r0, [r2, #0x15] + ldr r0, [r1] + strb r3, [r0, #0xc] + ldr r2, [r1] + movs r0, #4 +_08150C68: + strb r0, [r2, #0xd] + ldr r0, [r1] + strb r3, [r0, #9] + ldr r0, [r1] + strb r3, [r0, #9] + adds r4, r1, #0 + ldr r0, [r4] + ldrb r1, [r0, #0x14] + movs r0, #0x1c + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0x15] + movs r0, #0x1e + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0xc] + movs r0, #0x14 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #0xd] + movs r0, #0x16 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #8] + movs r0, #0x10 + bl sub_08001144 + ldr r0, [r4] + ldrb r1, [r0, #9] + movs r0, #0x12 + bl sub_08001144 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #1 + bl sub_08002248 + movs r0, #2 + bl sub_08002248 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r1, #0xfc + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 +_08150CF8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08150D00: .4byte gUnknown_203A878 + thumb_func_end sub_08150B48 + + thumb_func_start sub_08150D04 +sub_08150D04: @ 0x08150D04 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + ldr r1, _08150E18 + add r0, sp, #0xc + movs r2, #2 + bl memcpy + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + add r6, sp, #0x10 + ldr r1, _08150E1C + adds r0, r6, #0 + movs r2, #4 + bl memcpy + add r5, sp, #0x14 + ldr r1, _08150E20 + adds r0, r5, #0 + movs r2, #8 + bl memcpy + add r4, sp, #0x1c + ldr r1, _08150E24 + adds r0, r4, #0 + movs r2, #4 + bl memcpy + ldr r0, _08150E28 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + ldr r0, _08150E2C + ldrh r0, [r0] + mov r8, r6 + mov sl, r5 + cmp r0, #0 + beq _08150D62 + cmp r0, #1 + beq _08150E44 +_08150D62: + ldr r0, _08150E30 + ldr r0, [r0] + ldrb r0, [r0, #8] + add r0, sp + adds r0, #0xc + ldrb r0, [r0] + ldr r1, _08150E34 + movs r2, #0x66 + str r2, [sp] + movs r2, #0xc8 + movs r3, #0x49 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08150DAC + ldr r0, _08150E38 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #5] + movs r0, #8 + strh r0, [r1, #0x24] + movs r0, #0x10 + strh r0, [r1, #0x26] + movs r0, #0xc8 + strh r0, [r1, #0x2e] + movs r0, #0x49 + strh r0, [r1, #0x30] +_08150DAC: + ldr r4, _08150E3C + adds r0, r4, #0 + movs r1, #0xb0 + movs r2, #0x2b + movs r3, #0x67 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _08150E38 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x20 + strh r1, [r0, #0x26] + strh r1, [r0, #0x24] + movs r1, #0xb0 + strh r1, [r0, #0x2e] + movs r1, #0x2b + strh r1, [r0, #0x30] + adds r4, #0x18 + adds r0, r4, #0 + movs r1, #0xc8 + movs r2, #0x63 + movs r3, #0x65 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #8 + strh r1, [r0, #0x24] + movs r1, #4 + strh r1, [r0, #0x26] + movs r1, #0xc8 + strh r1, [r0, #0x2e] + movs r1, #0x63 + strh r1, [r0, #0x30] + ldr r2, _08150E40 + ldr r1, [r2] + movs r0, #7 + strb r0, [r1, #2] + ldr r1, [r2] + movs r0, #0xaf + lsls r0, r0, #1 + strh r0, [r1, #4] + movs r0, #2 + bl sub_080AAA2C + b _08150F16 + .align 2, 0 +_08150E18: .4byte gUnknown_85AC9EC +_08150E1C: .4byte gUnknown_85AC9EE +_08150E20: .4byte gUnknown_85AC9F2 +_08150E24: .4byte gUnknown_85AC9FA +_08150E28: .4byte gUnknown_85ACA00 +_08150E2C: .4byte gUnknown_2037280 +_08150E30: .4byte gUnknown_3005AF0 +_08150E34: .4byte sub_08150924 +_08150E38: .4byte gUnknown_20205AC +_08150E3C: .4byte gUnknown_85AC9A4 +_08150E40: .4byte gUnknown_203A878 +_08150E44: + ldr r7, _08150FE4 + ldr r0, [r7] + ldr r1, _08150FE8 + adds r0, r0, r1 + ldr r1, [r0] + adds r1, #0x48 + movs r0, #0xc + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r2, #0x18 + movs r3, #0x1a + bl sub_080023B4 + ldr r0, _08150FEC + ldr r0, [r0] + ldrb r0, [r0, #8] + add r0, sp + adds r0, #0xc + ldrb r0, [r0] + ldr r1, _08150FF0 + movs r2, #0x66 + str r2, [sp] + movs r2, #0x80 + movs r3, #0x27 + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08150EB0 + ldr r0, _08150FF4 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #5] + movs r0, #8 + strh r0, [r1, #0x24] + movs r0, #0x10 + strh r0, [r1, #0x26] + movs r0, #0x80 + strh r0, [r1, #0x2e] + movs r0, #0x27 + strh r0, [r1, #0x30] +_08150EB0: + ldr r4, _08150FF8 + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #9 + movs r3, #0x67 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _08150FF4 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x20 + strh r1, [r0, #0x26] + strh r1, [r0, #0x24] + movs r1, #0x68 + strh r1, [r0, #0x2e] + movs r1, #9 + strh r1, [r0, #0x30] + adds r4, #0x18 + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x41 + movs r3, #0x65 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #8 + strh r1, [r0, #0x24] + movs r1, #4 + strh r1, [r0, #0x26] + movs r1, #0x80 + strh r1, [r0, #0x2e] + movs r1, #0x41 + strh r1, [r0, #0x30] + ldr r1, [r7] + movs r0, #2 + strb r0, [r1, #2] + ldr r1, [r7] + ldr r0, _08150FFC + strh r0, [r1, #4] + movs r0, #7 + bl sub_080AAA2C +_08150F16: + movs r4, #0 + ldr r5, _08150FF4 +_08150F1A: + lsls r1, r4, #0x14 + movs r2, #0xc0 + lsls r2, r2, #0xf + adds r1, r1, r2 + asrs r1, r1, #0x10 + lsls r2, r4, #0x13 + ldr r3, _08151000 + adds r2, r2, r3 + asrs r2, r2, #0x10 + ldr r0, _08151004 + movs r3, #0x68 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #8 + strh r1, [r0, #0x24] + strh r1, [r0, #0x26] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #8 + bls _08150F1A + movs r0, #0x3f + mov r4, sb + ands r0, r4 + cmp r0, #0 + bne _08151050 + mov r0, sb + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add r0, r8 + ldrb r0, [r0] + ldr r5, _08151008 + ldrh r4, [r5] + lsls r4, r4, #2 + add r1, sp, #0x20 + adds r1, r4, r1 + ldr r1, [r1] + mov r3, sl + adds r2, r3, r4 + movs r3, #0 + ldrsh r2, [r2, r3] + mov r3, sp + adds r3, #0x16 + adds r3, r3, r4 + movs r4, #0 + ldrsh r3, [r3, r4] + movs r4, #0x6a + str r4, [sp] + bl sub_0808D6D8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08151050 + ldr r1, _08150FF4 + lsls r2, r6, #4 + adds r0, r2, r6 + lsls r0, r0, #2 + adds r4, r0, r1 + ldrb r1, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #5] + adds r0, r4, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r5] + mov r8, r2 + cmp r0, #0 + bne _08151012 + movs r7, #1 + mov r5, sb + ands r5, r7 + cmp r5, #0 + beq _0815100C + adds r0, r4, #0 + movs r1, #6 + b _08151020 + .align 2, 0 +_08150FE4: .4byte gUnknown_203A878 +_08150FE8: .4byte 0x000040FC +_08150FEC: .4byte gUnknown_3005AF0 +_08150FF0: .4byte sub_08150924 +_08150FF4: .4byte gUnknown_20205AC +_08150FF8: .4byte gUnknown_85AC9A4 +_08150FFC: .4byte 0x00000109 +_08151000: .4byte 0xFFF80000 +_08151004: .4byte gUnknown_85AC9D4 +_08151008: .4byte gUnknown_2037280 +_0815100C: + adds r0, r4, #0 + movs r1, #7 + b _08151032 +_08151012: + movs r7, #1 + mov r5, sb + ands r5, r7 + cmp r5, #0 + beq _0815102E + adds r0, r4, #0 + movs r1, #7 +_08151020: + bl sub_08007EC0 + strh r7, [r4, #0x30] + ldrh r0, [r4, #0x22] + adds r0, #2 + strh r0, [r4, #0x22] + b _08151038 +_0815102E: + adds r0, r4, #0 + movs r1, #6 +_08151032: + bl sub_08007EC0 + strh r5, [r4, #0x30] +_08151038: + ldr r0, _08151060 + mov r2, r8 + adds r1, r2, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #3 + mov r3, sb + ands r0, r3 + add r0, sp + adds r0, #0x1c + ldrb r0, [r0] + strh r0, [r1, #0x32] +_08151050: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08151060: .4byte gUnknown_20205AC + thumb_func_end sub_08150D04 + + thumb_func_start sub_08151064 +sub_08151064: @ 0x08151064 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r3, #0 + mov sb, r3 + ldr r2, _08151130 + ldr r0, [r2] + ldrb r1, [r0, #0x1b] + adds r1, #2 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + mov ip, r0 +_08151086: + movs r7, #0 + lsls r0, r3, #1 + adds r1, r3, #3 + adds r2, r3, #6 + adds r4, r3, #1 + str r4, [sp, #4] + adds r0, r0, r3 + lsls r0, r0, #3 + str r0, [sp] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + mov sl, r0 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + mov r8, r0 +_081510A8: + ldr r0, _08151130 + ldr r6, [r0] + lsls r3, r7, #1 + ldr r1, [sp] + adds r2, r3, r1 + adds r4, r6, #0 + adds r4, #0x22 + adds r2, r4, r2 + mov r1, ip + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + ldr r0, _08151134 + adds r5, r6, r0 + ldr r0, [r5] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r2] + mov r1, sl + adds r2, r3, r1 + adds r2, r4, r2 + str r2, [sp, #8] + ldr r0, [r5] + mov r2, sb + lsls r1, r2, #1 + adds r0, r1, r0 + ldrh r0, [r0] + ldr r2, [sp, #8] + strh r0, [r2] + add r3, r8 + adds r4, r4, r3 + ldr r0, [r5] + adds r1, r1, r0 + adds r1, #0x48 + ldrh r0, [r1] + strh r0, [r4] + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xb + bls _081510A8 + ldr r4, [sp, #4] + lsls r0, r4, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _08151086 + ldrb r0, [r6, #0x1b] + adds r0, #1 + movs r1, #3 + bl __modsi3 + strb r0, [r6, #0x1b] + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08151130: .4byte gUnknown_203A878 +_08151134: .4byte 0x000040FC + thumb_func_end sub_08151064 + + thumb_func_start sub_08151138 +sub_08151138: @ 0x08151138 + push {r4, r5, lr} + ldr r5, _08151190 + ldr r4, [r5] + ldrb r0, [r4, #0x1c] + adds r0, #1 + movs r1, #0x60 + bl __modsi3 + strb r0, [r4, #0x1c] + ldr r1, [r5] + ldrb r0, [r1, #0x1f] + ldrb r2, [r1, #0x1d] + subs r0, r0, r2 + strb r0, [r1, #8] + ldr r2, [r5] + adds r0, r2, #0 + adds r0, #0x20 + ldrb r0, [r0] + ldrb r1, [r2, #0x1e] + subs r0, r0, r1 + strb r0, [r2, #9] + ldr r1, [r5] + ldrb r0, [r1, #0x1d] + adds r0, #1 + strb r0, [r1, #0x1d] + ldr r2, [r5] + ldrb r0, [r2, #0x1d] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0815117C + ldrb r0, [r2, #0x1e] + adds r0, #1 + strb r0, [r2, #0x1e] +_0815117C: + ldr r0, [r5] + ldrb r0, [r0, #0x1d] + cmp r0, #0x10 + bls _08151188 + bl sub_081511F0 +_08151188: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08151190: .4byte gUnknown_203A878 + thumb_func_end sub_08151138 + + thumb_func_start sub_08151194 +sub_08151194: @ 0x08151194 + push {r4, r5, lr} + ldr r5, _081511EC + ldr r4, [r5] + ldrb r0, [r4, #0x1c] + adds r0, #1 + movs r1, #0x60 + bl __modsi3 + strb r0, [r4, #0x1c] + ldr r1, [r5] + ldrb r0, [r1, #0x1d] + ldrb r2, [r1, #0x1f] + adds r0, r0, r2 + strb r0, [r1, #8] + ldr r1, [r5] + adds r2, r1, #0 + adds r2, #0x20 + ldrb r0, [r1, #0x1e] + ldrb r2, [r2] + adds r0, r0, r2 + strb r0, [r1, #9] + ldr r1, [r5] + ldrb r0, [r1, #0x1d] + adds r0, #1 + strb r0, [r1, #0x1d] + ldr r2, [r5] + ldrb r0, [r2, #0x1d] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _081511D8 + ldrb r0, [r2, #0x1e] + adds r0, #1 + strb r0, [r2, #0x1e] +_081511D8: + ldr r0, [r5] + ldrb r0, [r0, #0x1d] + cmp r0, #0x10 + bls _081511E4 + bl sub_08151364 +_081511E4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081511EC: .4byte gUnknown_203A878 + thumb_func_end sub_08151194 + + thumb_func_start sub_081511F0 +sub_081511F0: @ 0x081511F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r7, #0 + ldr r3, _08151354 + ldr r0, [r3] + strb r7, [r0, #0x1e] + strb r7, [r0, #0x1d] + ldr r1, [r3] + ldrb r0, [r1, #8] + strb r0, [r1, #0x1f] + ldr r0, [r3] + ldrb r1, [r0, #9] + adds r0, #0x20 + strb r1, [r0] + ldr r4, [r3] + ldrb r1, [r4, #0x19] + adds r2, r1, #0 + adds r2, #0x1e + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r4, #0x19] + ldr r1, [r3] + ldrb r0, [r1, #0x18] + subs r0, #2 + strb r0, [r1, #0x18] + ldr r4, _08151358 + ldr r0, [r3] + ldrb r1, [r0, #0x1a] + adds r2, r1, #0 + adds r2, #0x17 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r4] + ldr r6, _0815135C + mov sb, r3 + ldr r0, _08151360 + mov r8, r0 +_0815124A: + mov r1, sb + ldr r2, [r1] + ldrb r0, [r2, #0x19] + strb r0, [r6] + ldr r0, _08151358 + ldrb r0, [r0] + adds r1, r0, r7 + adds r0, r1, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r1, r0 + mov r1, r8 + strb r0, [r1] + ldrb r1, [r2, #0x18] + lsls r1, r1, #1 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r5, r0, #3 + adds r1, r1, r5 + adds r0, r2, #0 + adds r0, #0x22 + adds r0, r0, r1 + ldrh r1, [r0] + ldrb r2, [r6] + mov r0, r8 + ldrb r3, [r0] + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0x11 + mov sl, r0 + str r0, [sp, #8] + movs r0, #0 + bl sub_080026E0 + ldrb r1, [r6] + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r6] + mov r0, sb + ldr r1, [r0] + ldrb r0, [r1, #0x18] + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r1, #0x22 + adds r1, r1, r0 + ldrh r1, [r1] + ldrb r2, [r6] + mov r0, r8 + ldrb r3, [r0] + str r4, [sp] + str r4, [sp, #4] + mov r0, sl + str r0, [sp, #8] + movs r0, #0 + bl sub_080026E0 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #8 + bls _0815124A + ldr r5, _0815135C + ldr r4, _08151354 + ldr r0, [r4] + ldrb r1, [r0, #0x19] + adds r2, r1, #0 + adds r2, #0x1e + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r5] + ldrb r2, [r5] + movs r0, #2 + str r0, [sp] + movs r6, #0x20 + str r6, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r3, #0 + bl sub_080026E0 + ldr r1, [r4] + ldrb r0, [r1, #0x18] + cmp r0, #0 + bne _08151344 + ldrb r2, [r1, #0x1a] + adds r3, r2, #0 + adds r3, #0x1d + adds r0, r3, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r3, r0 + strb r0, [r1, #0x1a] + ldr r1, [r4] + movs r0, #0xc + strb r0, [r1, #0x18] + bl sub_08151064 + ldr r0, [r4] + ldrb r1, [r0, #0x1a] + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r5] + ldrb r3, [r5] + str r6, [sp] + movs r0, #9 + str r0, [sp, #4] + mov r1, sl + str r1, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_080026E0 +_08151344: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08151354: .4byte gUnknown_203A878 +_08151358: .4byte gUnknown_203A87E +_0815135C: .4byte gUnknown_203A87C +_08151360: .4byte gUnknown_203A87D + thumb_func_end sub_081511F0 + + thumb_func_start sub_08151364 +sub_08151364: @ 0x08151364 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r7, #0 + ldr r2, _08151494 + ldr r0, [r2] + strb r7, [r0, #0x1e] + strb r7, [r0, #0x1d] + ldr r1, [r2] + ldrb r0, [r1, #8] + strb r0, [r1, #0x1f] + ldr r0, [r2] + ldrb r1, [r0, #9] + adds r0, #0x20 + strb r1, [r0] + ldr r4, [r2] + ldrb r1, [r4, #0x19] + adds r3, r1, #2 + adds r0, r3, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r3, r0 + strb r0, [r4, #0x19] + ldr r1, [r2] + ldrb r0, [r1, #0x18] + adds r0, #2 + strb r0, [r1, #0x18] + ldr r1, _08151498 + ldr r0, [r2] + ldrb r0, [r0, #0x1a] + strb r0, [r1] + ldr r6, _0815149C + mov sl, r2 + ldr r0, _081514A0 + mov sb, r0 +_081513B0: + mov r1, sl + ldr r2, [r1] + ldrb r0, [r2, #0x19] + strb r0, [r6] + ldr r0, _08151498 + ldrb r0, [r0] + adds r1, r0, r7 + adds r0, r1, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r1, r0 + mov r1, sb + strb r0, [r1] + ldrb r1, [r2, #0x18] + lsls r1, r1, #1 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r5, r0, #3 + adds r1, r1, r5 + adds r0, r2, #0 + adds r0, #0x22 + adds r0, r0, r1 + ldrh r1, [r0] + ldrb r2, [r6] + mov r0, sb + ldrb r3, [r0] + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0x11 + mov r8, r0 + str r0, [sp, #8] + movs r0, #0 + bl sub_080026E0 + ldrb r1, [r6] + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r6] + mov r0, sl + ldr r1, [r0] + ldrb r0, [r1, #0x18] + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r1, #0x22 + adds r1, r1, r0 + ldrh r1, [r1] + ldrb r2, [r6] + mov r0, sb + ldrb r3, [r0] + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + movs r0, #0 + bl sub_080026E0 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #8 + bls _081513B0 + ldr r4, _081514A0 + ldr r5, _08151494 + ldr r3, [r5] + ldrb r1, [r3, #0x1a] + adds r2, r1, #0 + adds r2, #0x17 + adds r0, r2, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r2, r0 + strb r0, [r4] + ldrb r2, [r3, #0x19] + ldrb r3, [r4] + movs r0, #2 + str r0, [sp] + movs r0, #9 + str r0, [sp, #4] + mov r1, r8 + str r1, [sp, #8] + movs r0, #0 + movs r1, #0 + bl sub_080026E0 + ldr r1, [r5] + ldrb r0, [r1, #0x18] + cmp r0, #0xa + bne _08151482 + ldrb r2, [r1, #0x1a] + adds r3, r2, #3 + adds r0, r3, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r3, r0 + strb r0, [r1, #0x1a] + ldr r1, [r5] + movs r0, #0xfe + strb r0, [r1, #0x18] + bl sub_08151064 +_08151482: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08151494: .4byte gUnknown_203A878 +_08151498: .4byte gUnknown_203A881 +_0815149C: .4byte gUnknown_203A87F +_081514A0: .4byte gUnknown_203A880 + thumb_func_end sub_08151364 + + thumb_func_start sub_081514A4 +sub_081514A4: @ 0x081514A4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081514B2 + cmp r0, #1 + beq _081514DC +_081514B2: + ldr r1, _081514D8 + ldr r2, [r1] + movs r3, #0 + movs r0, #2 + strb r0, [r2, #0x1b] + ldr r0, [r1] + strb r3, [r0, #0x19] + ldr r2, [r1] + movs r0, #0x14 + strb r0, [r2, #0x1a] + ldr r1, [r1] + movs r0, #0xc + strb r0, [r1, #0x18] + bl sub_08151064 + bl sub_081511F0 + b _081514FE + .align 2, 0 +_081514D8: .4byte gUnknown_203A878 +_081514DC: + ldr r1, _0815150C + ldr r2, [r1] + movs r0, #2 + strb r0, [r2, #0x1b] + ldr r2, [r1] + movs r0, #0x1c + strb r0, [r2, #0x19] + ldr r2, [r1] + movs r0, #0x14 + strb r0, [r2, #0x1a] + ldr r1, [r1] + movs r0, #4 + strb r0, [r1, #0x18] + bl sub_08151064 + bl sub_08151364 +_081514FE: + ldr r0, _0815150C + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #0x1c] + pop {r0} + bx r0 + .align 2, 0 +_0815150C: .4byte gUnknown_203A878 + thumb_func_end sub_081514A4 + + thumb_func_start sub_08151510 +sub_08151510: @ 0x08151510 + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + muls r0, r1, r0 + adds r1, r0, #0 + cmp r0, #0 + bge _08151524 + adds r1, #0xff +_08151524: + lsls r0, r1, #8 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08151510 + + thumb_func_start sub_0815152C +sub_0815152C: @ 0x0815152C + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + muls r3, r2, r3 + movs r1, #1 + lsls r1, r0 + adds r0, r3, #0 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_0815152C + + thumb_func_start sub_08151550 +sub_08151550: @ 0x08151550 + push {r4, r5, r6, r7, lr} + adds r2, r1, #0 + adds r4, r0, #0 + asrs r5, r0, #0x1f + asrs r3, r2, #0x1f + 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 _08151576 + movs r6, #0xff + movs r7, #0 + adds r6, r6, r4 + adcs r7, r5 +_08151576: + lsls r3, r7, #0x18 + 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, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08151550 + + thumb_func_start sub_0815158C +sub_0815158C: @ 0x0815158C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + beq _081515A8 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + b _081515AA +_081515A8: + movs r0, #0 +_081515AA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0815158C + + thumb_func_start sub_081515B0 +sub_081515B0: @ 0x081515B0 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + cmp r1, #0 + beq _081515D2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r0, r3 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + b _081515D4 +_081515D2: + movs r0, #0 +_081515D4: + pop {r1} + bx r1 + thumb_func_end sub_081515B0 + + thumb_func_start sub_081515D8 +sub_081515D8: @ 0x081515D8 + push {r4, r5, r6, lr} + adds r6, r1, #0 + cmp r6, #0 + beq _081515F8 + adds r2, r0, #0 + asrs r3, r0, #0x1f + lsrs r5, r2, #0x18 + lsls r4, r3, #8 + adds r1, r5, #0 + orrs r1, r4 + lsls r0, r2, #8 + adds r2, r6, #0 + asrs r3, r6, #0x1f + bl __divdi3 + b _081515FA +_081515F8: + movs r0, #0 +_081515FA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081515D8 + + thumb_func_start sub_08151600 +sub_08151600: @ 0x08151600 + push {lr} + adds r1, r0, #0 + movs r0, #0x80 + lsls r0, r0, #9 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08151600 + + thumb_func_start sub_08151618 +sub_08151618: @ 0x08151618 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r2, #0 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08151618 + + thumb_func_start sub_08151638 +sub_08151638: @ 0x08151638 + push {lr} + adds r2, r0, #0 + ldr r1, _08151650 + ldr r0, _0815164C + asrs r3, r2, #0x1f + bl __divdi3 + pop {r1} + bx r1 + .align 2, 0 +_0815164C: .4byte 0x00010000 +_08151650: .4byte 0x00000000 + thumb_func_end sub_08151638 + + thumb_func_start sub_08151654 +sub_08151654: @ 0x08151654 + push {lr} + movs r1, #0 + strb r1, [r0] + strh r1, [r0, #2] + adds r0, #4 + movs r2, #0xc0 + bl memset + pop {r0} + bx r0 + thumb_func_end sub_08151654 + + thumb_func_start sub_08151668 +sub_08151668: @ 0x08151668 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + cmp r6, #0xf + bhi _08151684 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r5, r3, r0 + ldrb r7, [r5, #4] + lsrs r0, r7, #7 + cmp r0, #0 + beq _08151688 +_08151684: + movs r0, #0xff + b _081516E6 +_08151688: + ldrh r0, [r2] + movs r4, #0 + strh r0, [r5, #8] + ldrh r0, [r2, #2] + strh r0, [r5, #0xa] + ldrb r0, [r2, #4] + strb r0, [r5, #0xc] + ldrb r0, [r2, #5] + strb r0, [r5, #0xd] + ldrb r0, [r2, #6] + strb r0, [r5, #0xe] + ldrb r3, [r2, #7] + lsls r0, r3, #0x1b + lsrs r0, r0, #0x1b + ldrb r2, [r5, #0xf] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + movs r0, #0x60 + ands r0, r3 + movs r2, #0x61 + rsbs r2, r2, #0 + ands r1, r2 + orrs r1, r0 + lsls r3, r3, #0x18 + asrs r3, r3, #0x1f + lsls r3, 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, #4] + strb r4, [r5, #6] + strb r4, [r5, #5] + lsls r1, r1, #0x18 + cmp r1, #0 + bge _081516E0 + movs r0, #0xff + b _081516E2 +_081516E0: + movs r0, #1 +_081516E2: + strb r0, [r5, #7] + adds r0, r6, #0 +_081516E6: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08151668 + + thumb_func_start sub_081516EC +sub_081516EC: @ 0x081516EC + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r4, r1, #0 + cmp r4, #0xf + bhi _08151718 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r1, r2, r0 + ldrb r0, [r1, #4] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08151718 + adds r0, r1, #4 + movs r1, #0 + movs r2, #0xc + bl memset + adds r0, r4, #0 + b _0815171A +_08151718: + movs r0, #0xff +_0815171A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081516EC + + thumb_func_start sub_08151720 +sub_08151720: @ 0x08151720 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + movs r0, #0 + mov ip, r0 + ldrb r1, [r5, #8] + cmp ip, r1 + blo _08151738 + b _081518D0 +_08151738: + movs r7, #0x1f + ldr r0, _08151768 + mov sl, r0 + movs r1, #0x7d + rsbs r1, r1, #0 + mov sb, r1 + movs r0, #0x1f + mov r8, r0 +_08151748: + ldrh r0, [r5, #6] + add r0, ip + lsls r0, r0, #1 + ldr r1, _0815176C + adds r3, r0, r1 + ldr r1, _08151770 + adds r6, r0, r1 + ldrb r0, [r5] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + cmp r0, #1 + beq _08151774 + cmp r0, #2 + beq _081517D2 + b _081518BE + .align 2, 0 +_08151768: .4byte 0xFFFFFC1F +_0815176C: .4byte gUnknown_20377B4 +_08151770: .4byte gUnknown_20373B4 +_08151774: + ldr r0, [r3] + lsls r2, r0, #0x1b + lsrs r0, r2, #0x1b + movs r1, #3 + ldrsb r1, [r5, r1] + adds r0, r0, r1 + cmp r0, #0x1f + bhi _08151796 + lsrs r0, r2, #0x1b + adds r0, r0, r1 + ands r0, r7 + ldrb r2, [r3] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08151796: + ldr r0, [r3] + lsls r2, r0, #0x16 + lsrs r0, r2, #0x1b + movs r1, #3 + ldrsb r1, [r5, r1] + adds r0, r0, r1 + cmp r0, #0x1f + bhi _081517BA + lsrs r0, r2, #0x1b + adds r0, r0, r1 + mov r1, r8 + ands r0, r1 + lsls r0, r0, #5 + ldrh r2, [r3] + mov r1, sl + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_081517BA: + ldr r0, [r3] + lsls r2, r0, #0x11 + lsrs r0, r2, #0x1b + movs r1, #3 + ldrsb r1, [r5, r1] + adds r0, r0, r1 + cmp r0, #0x1f + bls _081517CC + b _081518BE +_081517CC: + lsrs r0, r2, #0x1b + adds r0, r0, r1 + b _081518B0 +_081517D2: + movs r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #0 + bge _08151844 + ldr r0, [r3] + lsls r4, r0, #0x1b + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + cmp r1, r0 + blt _08151802 + lsrs r0, r4, #0x1b + adds r0, r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_08151802: + ldr r0, [r3] + lsls r4, r0, #0x16 + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + cmp r1, r0 + blt _0815182C + lsrs r0, r4, #0x1b + adds r0, r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, r0, #5 + ldrh r2, [r3] + mov r1, sl + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_0815182C: + ldr r0, [r3] + lsls r4, r0, #0x11 + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + cmp r1, r0 + blt _081518BE + b _081518AC +_08151844: + ldr r0, [r3] + lsls r4, r0, #0x1b + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + cmp r1, r0 + bgt _0815186C + lsrs r0, r4, #0x1b + adds r0, r0, r2 + ands r0, r7 + ldrb r2, [r3] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_0815186C: + ldr r0, [r3] + lsls r4, r0, #0x16 + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + cmp r1, r0 + bgt _08151896 + lsrs r0, r4, #0x1b + adds r0, r0, r2 + mov r1, r8 + ands r0, r1 + lsls r0, r0, #5 + ldrh r2, [r3] + mov r1, sl + ands r1, r2 + orrs r1, r0 + strh r1, [r3] +_08151896: + ldr r0, [r3] + lsls r4, r0, #0x11 + lsrs r1, r4, #0x1b + movs r2, #3 + ldrsb r2, [r5, r2] + adds r1, r1, r2 + ldr r0, [r6] + lsls r0, r0, #0x11 + lsrs r0, r0, #0x1b + cmp r1, r0 + bgt _081518BE +_081518AC: + lsrs r0, r4, #0x1b + adds r0, r0, r2 +_081518B0: + ands r0, r7 + lsls r0, r0, #2 + ldrb r2, [r3, #1] + mov r1, sb + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] +_081518BE: + mov r0, ip + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + ldrb r0, [r5, #8] + cmp ip, r0 + bhs _081518D0 + b _08151748 +_081518D0: + ldrb r1, [r5, #2] + adds r0, r1, #1 + strb r0, [r5, #2] + ldrb r0, [r5, #0xb] + lsls r0, r0, #0x1b + lsls r1, r1, #0x18 + asrs r0, r0, #3 + cmp r1, r0 + beq _081518E6 + movs r0, #0 + b _0815191A +_081518E6: + movs r0, #0 + strb r0, [r5, #2] + movs r0, #3 + ldrsb r0, [r5, r0] + rsbs r0, r0, #0 + strb r0, [r5, #3] + ldrb r2, [r5] + movs r1, #0x7f + movs r0, #0x7f + ands r0, r2 + cmp r0, #1 + bne _08151906 + lsls r0, r2, #0x19 + lsrs r0, r0, #0x19 + adds r0, #1 + b _0815190C +_08151906: + lsls r0, r2, #0x19 + lsrs r0, r0, #0x19 + subs r0, #1 +_0815190C: + ands r0, r1 + movs r1, #0x80 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5] + movs r0, #1 +_0815191A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08151720 + + thumb_func_start sub_08151928 +sub_08151928: @ 0x08151928 + push {r4, r5, lr} + adds r3, r0, #0 + movs r2, #0 + ldrb r0, [r3] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x19 + cmp r0, #1 + beq _0815193E + cmp r0, #2 + beq _0815196C + b _081519A6 +_0815193E: + ldrb r0, [r3, #8] + cmp r2, r0 + bhs _0815195E + ldr r4, _08151968 +_08151946: + ldrh r0, [r3, #6] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r1, [r3, #4] + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r3, #8] + cmp r2, r0 + blo _08151946 +_0815195E: + ldrb r2, [r3] + lsls r1, r2, #0x19 + lsrs r1, r1, #0x19 + adds r1, #1 + b _08151998 + .align 2, 0 +_08151968: .4byte gUnknown_20377B4 +_0815196C: + ldrb r0, [r3, #8] + cmp r2, r0 + bhs _08151990 + ldr r5, _081519B0 + ldr r4, _081519B4 +_08151976: + ldrh r0, [r3, #6] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldrb r0, [r3, #8] + cmp r2, r0 + blo _08151976 +_08151990: + ldrb r2, [r3] + lsls r1, r2, #0x19 + lsrs r1, r1, #0x19 + subs r1, #1 +_08151998: + movs r0, #0x7f + ands r1, r0 + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081519A6: + movs r0, #1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081519B0: .4byte gUnknown_20377B4 +_081519B4: .4byte gUnknown_20373B4 + thumb_func_end sub_08151928 + + thumb_func_start sub_081519B8 +sub_081519B8: @ 0x081519B8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _08151A1C +_081519C4: + ldrh r0, [r4, #2] + asrs r0, r5 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08151A12 + lsls r1, r5, #1 + adds r0, r1, r5 + lsls r3, r0, #2 + adds r2, r4, r3 + ldrb r0, [r2, #5] + subs r0, #1 + strb r0, [r2, #5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r1, #0 + cmp r0, #0xff + bne _08151A12 + ldrh r0, [r2, #8] + movs r2, #0x80 + lsls r2, r2, #8 + adds r1, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08151A00 + adds r0, r3, #4 + adds r0, r4, r0 + bl sub_08151720 + b _08151A08 +_08151A00: + adds r0, r3, #4 + adds r0, r4, r0 + bl sub_08151928 +_08151A08: + adds r0, r6, r5 + lsls r0, r0, #2 + adds r0, r4, r0 + ldrb r1, [r0, #0xd] + strb r1, [r0, #5] +_08151A12: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _081519C4 +_08151A1C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081519B8 + + thumb_func_start sub_08151A24 +sub_08151A24: @ 0x08151A24 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + movs r4, #0 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + movs r5, #1 + movs r7, #0x80 + rsbs r7, r7, #0 +_08151A3A: + adds r0, r6, #0 + asrs r0, r4 + ands r0, r5 + cmp r0, #0 + beq _08151A68 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r2, r3, r0 + ldrb r0, [r2, #4] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08151A68 + adds r0, r5, #0 + lsls r0, r4 + ldrh r1, [r3, #2] + orrs r0, r1 + strh r0, [r3, #2] + ldrb r1, [r2, #4] + adds r0, r7, #0 + ands r0, r1 + orrs r0, r5 + strb r0, [r2, #4] +_08151A68: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08151A3A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08151A24 + + thumb_func_start sub_08151A78 +sub_08151A78: @ 0x08151A78 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r5, #0 + movs r3, #1 +_08151A86: + ldrh r0, [r6, #2] + asrs r0, r5 + ands r0, r3 + cmp r0, #0 + beq _08151AEE + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r4, r6, r0 + ldrb r0, [r4, #4] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08151AEE + adds r0, r7, #0 + asrs r0, r5 + ands r0, r3 + cmp r0, #0 + beq _08151AEE + ldrh r1, [r4, #0xa] + lsls r1, r1, #1 + ldr r0, _08151AE4 + adds r0, r1, r0 + ldr r2, _08151AE8 + adds r1, r1, r2 + ldrb r2, [r4, #0xc] + lsls r2, r2, #1 + str r3, [sp] + bl memcpy + ldrb r0, [r4, #4] + movs r2, #0x80 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r4, #4] + movs r0, #0 + strb r0, [r4, #6] + strb r0, [r4, #5] + ldrb r0, [r4, #0xf] + lsls r0, r0, #0x18 + ldr r3, [sp] + cmp r0, #0 + bge _08151AEC + movs r0, #0xff + strb r0, [r4, #7] + b _08151AEE + .align 2, 0 +_08151AE4: .4byte gUnknown_20377B4 +_08151AE8: .4byte gUnknown_20373B4 +_08151AEC: + strb r3, [r4, #7] +_08151AEE: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xf + bls _08151A86 + ldr r0, _08151B04 + cmp r7, r0 + bne _08151B08 + movs r0, #0 + strb r0, [r6] + b _08151B0C + .align 2, 0 +_08151B04: .4byte 0x0000FFFF +_08151B08: + ldrh r0, [r6, #2] + bics r0, r7 +_08151B0C: + strh r0, [r6, #2] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08151A78 + + thumb_func_start sub_08151B18 +sub_08151B18: @ 0x08151B18 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + strh r4, [r5] + adds r0, r5, #4 + movs r1, #0 + movs r2, #0xc0 + bl memset +_08151B2A: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r5, r0 + strb r4, [r0, #4] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _08151B2A + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08151B18 + + thumb_func_start sub_08151B44 +sub_08151B44: @ 0x08151B44 + push {r4, r5, lr} + adds r2, r0, #0 + adds r5, r1, #0 + movs r3, #0 + movs r4, #0 + ldrb r0, [r2, #5] + lsrs r0, r0, #7 + cmp r0, #0 + bne _08151B5A + adds r4, r2, #4 + b _08151B78 +_08151B5A: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bhi _08151B78 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r1, r0, #2 + adds r0, r2, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #7 + cmp r0, #0 + bne _08151B5A + adds r0, r1, #4 + adds r4, r2, r0 +_08151B78: + cmp r4, #0 + beq _08151BA6 + ldrb r1, [r4, #1] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #0 + strb r0, [r4, #2] + strb r0, [r4, #3] + adds r1, r4, #4 + adds r0, r5, #0 + ldm r0!, {r2, r4} + stm r1!, {r2, r4} + adds r0, r3, #0 + b _08151BA8 +_08151BA6: + movs r0, #0xff +_08151BA8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08151B44 + + thumb_func_start sub_08151BB0 +sub_08151BB0: @ 0x08151BB0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #1] + movs r2, #0x40 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08151BF2 + ldrb r1, [r4, #0xb] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08151BF2 + ldrh r2, [r4, #6] + ldrb r0, [r4, #8] + adds r0, r2, r0 + cmp r2, r0 + bge _08151BF2 + ldr r5, _08151C24 + ldr r3, _08151C28 +_08151BD8: + lsls r0, r2, #1 + adds r1, r0, r5 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r4, #6] + ldrb r1, [r4, #8] + adds r0, r0, r1 + cmp r2, r0 + blt _08151BD8 +_08151BF2: + adds r0, r4, #4 + movs r1, #0 + movs r2, #8 + bl memset + ldrb r1, [r4, #1] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + subs r1, #0x10 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + movs r1, #0x7f + ands r0, r1 + strb r0, [r4, #1] + movs r0, #0 + strb r0, [r4, #3] + strb r0, [r4, #2] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08151C24: .4byte gUnknown_20377B4 +_08151C28: .4byte gUnknown_20373B4 + thumb_func_end sub_08151BB0 + + thumb_func_start sub_08151C2C +sub_08151C2C: @ 0x08151C2C + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + movs r5, #0 + cmp r2, #0 + bne _08151C50 + movs r1, #0xf + ands r1, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, #4 + adds r0, r6, r0 + bl sub_08151BB0 + b _08151C7C +_08151C50: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08151C70 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r1, r0, #2 + adds r0, r6, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #7 + cmp r0, #0 + beq _08151C70 + adds r0, r1, #4 + adds r0, r6, r0 + bl sub_08151BB0 +_08151C70: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xf + bls _08151C50 +_08151C7C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08151C2C + + thumb_func_start sub_08151C84 +sub_08151C84: @ 0x08151C84 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x18 + movs r3, #0 + cmp r2, #0 + bne _08151CB8 + movs r0, #0xf + adds r3, r0, #0 + ands r3, r4 + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r5, r1 + ldrb r2, [r1, #5] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + movs r0, #1 + lsls r0, r3 + ldrh r1, [r5] + orrs r0, r1 + strh r0, [r5] + b _08151CFC +_08151CB8: + movs r6, #1 + movs r7, #0x41 + rsbs r7, r7, #0 +_08151CBE: + adds r0, r4, #0 + ands r0, r6 + cmp r0, #0 + beq _08151CDC + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r5, r0 + ldrb r1, [r2, #5] + lsrs r0, r1, #7 + cmp r0, #0 + beq _08151CDC + lsls r0, r1, #0x19 + cmp r0, #0 + blt _08151CE2 +_08151CDC: + lsls r0, r4, #0x11 + lsrs r4, r0, #0x10 + b _08151CF2 +_08151CE2: + adds r0, r7, #0 + ands r0, r1 + strb r0, [r2, #5] + adds r0, r6, #0 + lsls r0, r3 + ldrh r1, [r5] + orrs r0, r1 + strh r0, [r5] +_08151CF2: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xf + bls _08151CBE +_08151CFC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08151C84 + + thumb_func_start sub_08151D04 +sub_08151D04: @ 0x08151D04 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + movs r0, #0 + mov ip, r0 + cmp r2, #0 + bne _08151D8C + movs r1, #0xf + ands r1, r7 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, #4 + mov r1, r8 + adds r3, r1, r0 + ldrb r1, [r3, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _08151E16 + ldrb r1, [r3, #0xb] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08151D6A + ldrh r2, [r3, #6] + ldrb r0, [r3, #8] + adds r0, r2, r0 + cmp r2, r0 + bge _08151D6A + ldr r5, _08151D84 + ldr r4, _08151D88 +_08151D50: + lsls r0, r2, #1 + adds r1, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r3, #6] + ldrb r1, [r3, #8] + adds r0, r0, r1 + cmp r2, r0 + blt _08151D50 +_08151D6A: + ldrb r0, [r3, #1] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r3, #1] + movs r1, #1 + mov r2, ip + lsls r1, r2 + mov r2, r8 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] + b _08151E16 + .align 2, 0 +_08151D84: .4byte gUnknown_20377B4 +_08151D88: .4byte gUnknown_20373B4 +_08151D8C: + movs r0, #1 + mov sb, r0 + movs r1, #0x40 + mov sl, r1 +_08151D94: + mov r2, ip + lsls r0, r2, #1 + add r0, ip + lsls r0, r0, #2 + adds r0, #4 + mov r1, r8 + adds r3, r1, r0 + adds r0, r7, #0 + mov r2, sb + ands r0, r2 + cmp r0, #0 + beq _08151DB6 + ldrb r1, [r3, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + beq _08151DC0 +_08151DB6: + lsls r0, r7, #0x11 + lsrs r7, r0, #0x10 + mov r5, ip + adds r5, #1 + b _08151E0C +_08151DC0: + ldrb r1, [r3, #0xb] + mov r0, sl + ands r0, r1 + mov r5, ip + adds r5, #1 + cmp r0, #0 + beq _08151DF6 + ldrh r2, [r3, #6] + ldrb r0, [r3, #8] + adds r0, r2, r0 + cmp r2, r0 + bge _08151DF6 + ldr r6, _08151E24 + ldr r4, _08151E28 +_08151DDC: + lsls r0, r2, #1 + adds r1, r0, r6 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r3, #6] + ldrb r1, [r3, #8] + adds r0, r0, r1 + cmp r2, r0 + blt _08151DDC +_08151DF6: + ldrb r1, [r3, #1] + mov r0, sl + orrs r0, r1 + strb r0, [r3, #1] + mov r1, sb + mov r0, ip + lsls r1, r0 + mov r2, r8 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] +_08151E0C: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #0xf + bls _08151D94 +_08151E16: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08151E24: .4byte gUnknown_20377B4 +_08151E28: .4byte gUnknown_20373B4 + thumb_func_end sub_08151D04 + + thumb_func_start sub_08151E2C +sub_08151E2C: @ 0x08151E2C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + str r0, [sp] + movs r0, #0 + mov sl, r0 + ldr r1, [sp] + ldrh r0, [r1] + cmp r0, #0 + bne _08151E48 + b _08151FD2 +_08151E48: + movs r2, #0xf + mov sb, r2 + movs r3, #0x10 + rsbs r3, r3, #0 + mov r8, r3 + movs r7, #1 +_08151E54: + mov r5, sl + lsls r0, r5, #1 + add r0, sl + lsls r0, r0, #2 + adds r0, #4 + ldr r1, [sp] + adds r4, r1, r0 + ldrb r2, [r4, #1] + movs r3, #0xc0 + ands r3, r2 + cmp r3, #0x80 + beq _08151E6E + b _08151FC2 +_08151E6E: + ldr r0, _08151EBC + ldrb r1, [r0, #7] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08151E84 + ldrb r0, [r4, #0xb] + ands r3, r0 + cmp r3, #0 + beq _08151E84 + b _08151FC2 +_08151E84: + ldrb r0, [r4, #2] + subs r0, #1 + strb r0, [r4, #2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08151E94 + b _08151FC2 +_08151E94: + ldrb r0, [r4, #9] + strb r0, [r4, #2] + ldrh r0, [r4, #6] + ldrb r1, [r4, #8] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x1c + ldrh r3, [r4, #4] + bl sub_0806F410 + ldrb r5, [r4, #0xb] + lsls r0, r5, #0x1a + asrs r0, r0, #0x1e + cmp r0, #1 + beq _08151EF2 + cmp r0, #1 + bgt _08151EC0 + cmp r0, #0 + beq _08151EC6 + b _08151FAC + .align 2, 0 +_08151EBC: .4byte gUnknown_2037C74 +_08151EC0: + cmp r0, #2 + beq _08151F6E + b _08151FAC +_08151EC6: + ldrb r2, [r4, #1] + lsls r1, r2, #0x1c + lsrs r0, r1, #0x1c + adds r0, #1 + mov r3, sb + ands r0, r3 + mov r6, r8 + adds r3, r6, #0 + ands r3, r2 + orrs r3, r0 + strb r3, [r4, #1] + lsrs r1, r1, #0x1c + lsls r0, r5, #0x1c + asrs r0, r0, #0x1c + cmp r1, r0 + bne _08151FAC + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] + ands r3, r6 + strb r3, [r4, #1] + b _08151FAC +_08151EF2: + ldrb r3, [r4, #1] + movs r0, #0x10 + ands r0, r3 + cmp r0, #0 + beq _08151F30 + lsls r0, r3, #0x1c + lsrs r0, r0, #0x1c + subs r0, #1 + mov r5, sb + ands r0, r5 + mov r2, r8 + ands r2, r3 + orrs r2, r0 + strb r2, [r4, #1] + cmp r0, #0 + bne _08151FAC + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] + lsls r0, r2, #0x1b + lsrs r0, r0, #0x1f + eors r0, r7 + ands r0, r7 + lsls r0, r0, #4 + movs r3, #0x11 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #1] + b _08151FAC +_08151F30: + lsls r0, r5, #0x1c + asrs r0, r0, #0x1c + subs r0, #1 + mov r5, sb + ands r0, r5 + lsls r2, r3, #0x1c + lsrs r1, r2, #0x1c + adds r1, #1 + ands r1, r5 + mov r5, r8 + ands r3, r5 + orrs r3, r1 + strb r3, [r4, #1] + lsrs r2, r2, #0x1c + cmp r2, r0 + bne _08151FAC + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] + lsls r0, r3, #0x1b + lsrs r0, r0, #0x1f + eors r0, r7 + ands r0, r7 + lsls r0, r0, #4 + movs r2, #0x11 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r3, r1 + orrs r3, r0 + strb r3, [r4, #1] + b _08151FAC +_08151F6E: + ldrb r2, [r4, #1] + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08151F7E + mov r0, r8 + ands r0, r2 + b _08151F8C +_08151F7E: + lsls r1, r5, #0x1c + asrs r1, r1, #0x1c + mov r3, sb + ands r1, r3 + mov r0, r8 + ands r0, r2 + orrs r0, r1 +_08151F8C: + strb r0, [r4, #1] + ldrb r2, [r4, #1] + lsls r0, r2, #0x1b + lsrs r0, r0, #0x1f + eors r0, r7 + ands r0, r7 + lsls r0, r0, #4 + movs r5, #0x11 + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #1] + ldrb r0, [r4, #3] + adds r0, #1 + strb r0, [r4, #3] +_08151FAC: + ldrb r1, [r4, #0xa] + cmp r1, #0xff + beq _08151FC2 + ldrb r0, [r4, #3] + cmp r0, r1 + bne _08151FC2 + ldrb r1, [r4] + ldr r0, [sp] + movs r2, #0 + bl sub_08151D04 +_08151FC2: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0xf + bhi _08151FD2 + b _08151E54 +_08151FD2: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08151E2C + + thumb_func_start sub_08151FE4 +sub_08151FE4: @ 0x08151FE4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, [sp, #0x14] + ldr r4, [sp, #0x18] + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #0 + lsrs r3, r3, #0x13 + adds r3, r3, r2 + lsls r3, r3, #1 + adds r6, r6, r3 + cmp r1, r4 + bhs _0815202E +_0815200C: + lsls r0, r1, #6 + adds r2, r6, r0 + movs r0, #0 + adds r3, r1, #1 + cmp r0, r5 + bhs _08152026 +_08152018: + strh r7, [r2] + adds r2, #2 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r5 + blo _08152018 +_08152026: + lsls r0, r3, #0x18 + lsrs r1, r0, #0x18 + cmp r1, r4 + blo _0815200C +_0815202E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08151FE4 + + thumb_func_start sub_08152034 +sub_08152034: @ 0x08152034 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, [sp, #0x14] + ldr r4, [sp, #0x18] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r6, r4, #0x18 + movs r4, #0 + lsrs r3, r3, #0x13 + adds r3, r3, r2 + lsls r3, r3, #1 + adds r7, r7, r3 + cmp r4, r6 + bhs _0815207E +_08152058: + lsls r0, r4, #6 + adds r2, r7, r0 + movs r3, #0 + adds r4, #1 + cmp r3, r5 + bhs _08152076 +_08152064: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r5 + blo _08152064 +_08152076: + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _08152058 +_0815207E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08152034 + + thumb_func_start sub_08152084 +sub_08152084: @ 0x08152084 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + movs r0, #0 + lsrs r4, r3, #0x18 + cmp r0, r8 + bhs _081520FE +_081520B6: + ldr r2, [sp] + movs r3, #0 + adds r6, r4, #1 + adds r0, #1 + mov ip, r0 + cmp r3, r7 + bhs _081520E8 + lsls r5, r4, #6 +_081520C6: + lsls r0, r2, #1 + adds r0, r0, r5 + add r0, sl + mov r1, sb + strh r1, [r0] + adds r1, r2, #1 + adds r0, r1, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r7 + blo _081520C6 +_081520E8: + adds r0, r6, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r6, r0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, ip + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r8 + blo _081520B6 +_081520FE: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08152084 + + thumb_func_start sub_08152110 +sub_08152110: @ 0x08152110 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sb, r4 + movs r0, #0 + adds r5, r1, #0 + lsrs r4, r3, #0x18 + cmp r0, sb + bhs _0815218A +_08152140: + ldr r2, [sp] + movs r3, #0 + adds r7, r4, #1 + adds r0, #1 + mov r8, r0 + cmp r3, ip + bhs _08152174 + lsls r6, r4, #6 +_08152150: + lsls r0, r2, #1 + adds r0, r0, r6 + add r0, sl + ldrh r1, [r5] + strh r1, [r0] + adds r5, #2 + adds r1, r2, #1 + adds r0, r1, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, ip + blo _08152150 +_08152174: + adds r0, r7, #0 + asrs r0, r0, #5 + lsls r0, r0, #5 + subs r0, r7, r0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, sb + blo _08152140 +_0815218A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08152110 + + thumb_func_start sub_0815219C +sub_0815219C: @ 0x0815219C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0 + cmp r4, #0 + beq _081521DA + cmp r4, #0x40 + bls _081521B2 + movs r4, #0x40 +_081521B2: + ldr r6, _081521E0 + movs r0, #8 + bl sub_08000BDC + str r0, [r6] + cmp r0, #0 + beq _081521DA + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #4 + bl sub_08000BDC + ldr r1, [r6] + str r0, [r1, #4] + cmp r0, #0 + bne _081521E4 + adds r0, r1, #0 + bl sub_08000BF0 + str r5, [r6] +_081521DA: + movs r0, #0 + b _08152220 + .align 2, 0 +_081521E0: .4byte gUnknown_203A884 +_081521E4: + strb r4, [r1] + cmp r5, r4 + bhs _0815221E + adds r3, r6, #0 + ldr r0, _0815222C + mov ip, r0 + movs r2, #4 + mov r8, r2 +_081521F4: + ldr r0, [r3] + ldr r2, [r0, #4] + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #4 + adds r2, r1, r2 + mov r0, ip + ldm r0!, {r6, r7} + stm r2!, {r6, r7} + ldr r0, [r3] + ldr r0, [r0, #4] + adds r1, r1, r0 + ldrb r0, [r1, #0x19] + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #0x19] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r4 + blo _081521F4 +_0815221E: + movs r0, #1 +_08152220: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0815222C: .4byte gUnknown_82BF2F8 + thumb_func_end sub_0815219C + + thumb_func_start sub_08152230 +sub_08152230: @ 0x08152230 + push {r4, r5, r6, r7, lr} + movs r3, #0 + ldr r0, _08152244 + ldr r2, [r0] + adds r5, r0, #0 + cmp r2, #0 + bne _08152248 + movs r0, #0 + b _081522A0 + .align 2, 0 +_08152244: .4byte gUnknown_203A884 +_08152248: + ldrb r2, [r2] + cmp r3, r2 + bhs _0815226E + ldr r0, _081522A8 + mov ip, r0 + ldr r4, _081522AC + adds r2, r5, #0 +_08152256: + lsls r1, r3, #3 + add r1, ip + adds r0, r4, #0 + ldm r0!, {r6, r7} + stm r1!, {r6, r7} + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, [r2] + ldrb r0, [r0] + cmp r3, r0 + blo _08152256 +_0815226E: + ldr r1, [r5] + ldrb r0, [r1] + lsls r2, r0, #1 + adds r2, r2, r0 + ldr r0, [r1, #4] + lsls r2, r2, #4 + movs r1, #0 + bl memset + ldr r0, [r5] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r5] + movs r4, #0 + str r4, [r0, #4] + movs r1, #0 + movs r2, #8 + bl memset + ldr r0, [r5] + bl sub_08000BF0 + str r4, [r5] + movs r0, #1 +_081522A0: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081522A8: .4byte gUnknown_3002598 +_081522AC: .4byte gUnknown_82BF2F8 + thumb_func_end sub_08152230 + + thumb_func_start sub_081522B0 +sub_081522B0: @ 0x081522B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + ldr r0, _081522CC + ldr r1, [r0] + adds r3, r0, #0 + cmp r1, #0 + beq _081522C8 + ldr r0, [r1, #4] + cmp r0, #0 + bne _081522D0 +_081522C8: + movs r0, #0 + b _081523AE + .align 2, 0 +_081522CC: .4byte gUnknown_203A884 +_081522D0: + ldrb r1, [r1] + cmp r6, r1 + bhs _081523AC + adds r7, r3, #0 + movs r0, #3 + mov r8, r0 +_081522DC: + ldr r0, [r7] + ldr r1, [r0, #4] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r5, r0, #4 + adds r2, r5, r1 + ldrb r1, [r2, #0x19] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + bne _0815239E + ldr r1, [r2, #0x2c] + cmp r1, #0 + beq _081522FE + adds r0, r2, #0 + bl _call_via_r1 +_081522FE: + ldr r0, [r7] + ldr r0, [r0, #4] + adds r2, r5, r0 + ldrb r1, [r2, #0x19] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08152324 + lsls r0, r6, #3 + ldr r1, _0815231C + adds r0, r0, r1 + ldr r1, _08152320 + ldm r1!, {r2, r3} + stm r0!, {r2, r3} + b _0815239C + .align 2, 0 +_0815231C: .4byte gUnknown_3002598 +_08152320: .4byte gUnknown_82BF2F8 +_08152324: + ldrb r0, [r2, #0xe] + ldrb r4, [r2, #0xa] + adds r0, r0, r4 + strb r0, [r2] + ldr r4, [r7] + ldr r3, [r4, #4] + adds r3, r5, r3 + movs r0, #8 + ldrsh r2, [r3, r0] + movs r1, #0xc + ldrsh r0, [r3, r1] + adds r2, r2, r0 + ldr r1, _081523B8 + adds r0, r1, #0 + ands r2, r0 + ldrh r0, [r3, #2] + ldr r1, _081523BC + mov ip, r1 + mov r1, ip + ands r0, r1 + orrs r0, r2 + strh r0, [r3, #2] + ldr r3, [r4, #4] + adds r3, r5, r3 + ldrb r0, [r3, #0x19] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + mov r2, r8 + ands r0, r2 + lsls r0, r0, #2 + ldrb r1, [r3, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #5] + ldr r4, [r7] + ldr r2, [r4, #4] + adds r2, r5, r2 + ldrh r3, [r2, #0x14] + ldr r1, _081523C0 + adds r0, r1, #0 + adds r1, r3, #0 + ands r1, r0 + mov ip, r1 + ldrh r0, [r2, #4] + ldr r3, _081523C4 + adds r1, r3, #0 + ands r0, r1 + mov r1, ip + orrs r0, r1 + strh r0, [r2, #4] + lsls r1, r6, #3 + ldr r2, _081523C8 + ldr r0, [r4, #4] + adds r1, r1, r2 + adds r0, r5, r0 + ldm r0!, {r2, r3} + stm r1!, {r2, r3} +_0815239C: + ldr r3, _081523CC +_0815239E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [r3] + ldrb r0, [r0] + cmp r6, r0 + blo _081522DC +_081523AC: + movs r0, #1 +_081523AE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081523B8: .4byte 0x000001FF +_081523BC: .4byte 0xFFFFFE00 +_081523C0: .4byte 0x000003FF +_081523C4: .4byte 0xFFFFFC00 +_081523C8: .4byte gUnknown_3002598 +_081523CC: .4byte gUnknown_203A884 + thumb_func_end sub_081522B0 + + thumb_func_start sub_081523D0 +sub_081523D0: @ 0x081523D0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + cmp r4, #0 + beq _0815240C + ldrh r0, [r4, #0x10] + bl sub_08008338 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _08152408 + cmp r5, r0 + beq _0815240C + strb r6, [r4, #0x18] + ldrb r0, [r4, #1] + lsrs r0, r0, #6 + ldrb r1, [r4, #3] + lsrs r1, r1, #6 + bl sub_08035450 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r5, r0 + strh r0, [r4, #0x14] + movs r0, #1 + b _0815240E + .align 2, 0 +_08152408: .4byte 0x0000FFFF +_0815240C: + movs r0, #0 +_0815240E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081523D0 + + thumb_func_start sub_08152414 +sub_08152414: @ 0x08152414 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08152444 + ldr r0, [r0] + cmp r0, #0 + beq _08152448 + ldrb r1, [r0] + cmp r2, r1 + bhs _08152448 + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #4 + adds r3, r0, r1 + ldrb r1, [r3, #0x19] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08152448 + str r4, [r3, #0x2c] + adds r0, r2, #0 + b _0815244A + .align 2, 0 +_08152444: .4byte gUnknown_203A884 +_08152448: + movs r0, #0xff +_0815244A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08152414 + + thumb_func_start sub_08152450 +sub_08152450: @ 0x08152450 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + ldr r0, _08152488 + ldr r0, [r0] + cmp r0, #0 + beq _08152484 + ldrb r1, [r0] + cmp r3, r1 + bhs _08152484 + ldr r1, [r0, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + adds r2, r0, r1 + ldrb r1, [r2, #0x19] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08152484 + cmp r4, #7 + bls _0815248C +_08152484: + movs r0, #0xff + b _08152498 + .align 2, 0 +_08152488: .4byte gUnknown_203A884 +_0815248C: + lsls r1, r4, #1 + adds r0, r2, #0 + adds r0, #0x1a + adds r0, r0, r1 + strh r5, [r0] + adds r0, r3, #0 +_08152498: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08152450 + + thumb_func_start sub_081524A0 +sub_081524A0: @ 0x081524A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r0 + ldr r0, [sp, #0x30] + ldr r4, [sp, #0x34] + ldr r5, [sp, #0x38] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0xc] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov sl, r5 + movs r5, #0 + ldr r0, _081524EC + ldr r0, [r0] + cmp r0, #0 + beq _0815253A + mov r1, sb + cmp r1, #0 + bne _0815250C + b _0815253A + .align 2, 0 +_081524EC: .4byte gUnknown_203A884 +_081524F0: + adds r5, r2, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x30 + bl memset + strb r4, [r5, #0x16] + ldrb r0, [r5, #0x19] + movs r1, #1 + orrs r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r5, #0x19] + b _08152536 +_0815250C: + movs r4, #0 + ldrb r1, [r0] + cmp r5, r1 + bhs _08152536 + ldr r6, [r0, #4] + adds r3, r1, #0 + movs r7, #1 +_0815251A: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r2, r0, r6 + ldrb r1, [r2, #0x19] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _081524F0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r3 + blo _0815251A +_08152536: + cmp r5, #0 + bne _0815253E +_0815253A: + movs r0, #0xff + b _0815259C +_0815253E: + adds r1, r5, #0 + mov r0, sb + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + mov r0, sp + ldrh r0, [r0] + strh r0, [r5, #0x10] + mov r1, r8 + strh r1, [r5, #0x12] + mov r2, sp + ldrh r2, [r2, #4] + strh r2, [r5, #8] + mov r3, sp + ldrh r3, [r3, #8] + strh r3, [r5, #0xa] + mov r0, r8 + bl sub_0800851C + lsls r0, r0, #4 + ldrb r1, [r5, #5] + movs r4, #0xf + ands r4, r1 + orrs r4, r0 + strb r4, [r5, #5] + mov r0, sl + cmp r0, #3 + bhi _08152592 + movs r1, #3 + ands r1, r0 + lsls r3, r1, #3 + ldrb r2, [r5, #0x19] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r5, #0x19] + lsls r1, r1, #2 + movs r0, #0xd + rsbs r0, r0, #0 + ands r4, r0 + orrs r4, r1 + strb r4, [r5, #5] +_08152592: + adds r0, r5, #0 + ldr r1, [sp, #0xc] + bl sub_081523D0 + ldrb r0, [r5, #0x16] +_0815259C: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081524A0 + + thumb_func_start sub_081525AC +sub_081525AC: @ 0x081525AC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _081525D4 + ldr r0, [r6] + cmp r0, #0 + beq _081525CE + ldr r1, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r4, r0, #4 + adds r2, r4, r1 + ldrb r1, [r2, #0x19] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081525D8 +_081525CE: + movs r0, #0xff + b _08152618 + .align 2, 0 +_081525D4: .4byte gUnknown_203A884 +_081525D8: + adds r0, r2, #0 + movs r1, #0 + movs r2, #0x30 + bl memset + ldr r0, [r6] + ldr r0, [r0, #4] + adds r0, r4, r0 + movs r1, #0xa0 + strb r1, [r0] + ldr r3, [r6] + ldr r2, [r3, #4] + adds r2, r4, r2 + ldrh r1, [r2, #2] + ldr r0, _08152620 + ands r0, r1 + movs r1, #0xf0 + orrs r0, r1 + strh r0, [r2, #2] + ldr r1, [r3, #4] + adds r1, r4, r1 + ldrb r0, [r1, #0x19] + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #0x19] + lsls r1, r5, #3 + ldr r0, _08152624 + adds r1, r1, r0 + ldr r0, _08152628 + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + adds r0, r5, #0 +_08152618: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08152620: .4byte 0xFFFFFE00 +_08152624: .4byte gUnknown_3002598 +_08152628: .4byte gUnknown_82BF2F8 + thumb_func_end sub_081525AC + + thumb_func_start sub_0815262C +sub_0815262C: @ 0x0815262C + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08152658 +_08152632: + ldr r1, [r5] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r5] + bl _call_via_r1 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xf + bls _08152632 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08152658: .4byte gUnknown_3007600 + thumb_func_end sub_0815262C + + thumb_func_start sub_0815265C +sub_0815265C: @ 0x0815265C + ldr r0, _0815266C + movs r1, #0 + str r1, [r0] + ldr r0, _08152670 + strh r1, [r0] + ldr r0, _08152674 + str r1, [r0] + bx lr + .align 2, 0 +_0815266C: .4byte gUnknown_3005F40 +_08152670: .4byte gUnknown_3005F30 +_08152674: .4byte gUnknown_3005F3C + thumb_func_end sub_0815265C + + thumb_func_start sub_08152678 +sub_08152678: @ 0x08152678 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + movs r4, #0 + cmp r0, #1 + beq _081526AC + cmp r0, #1 + bgt _08152692 + cmp r0, #0 + beq _08152698 + b _081526D0 +_08152692: + cmp r0, #2 + beq _081526C0 + b _081526D0 +_08152698: + ldr r2, _081526A8 + movs r1, #1 + lsls r1, r3 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + b _081526D0 + .align 2, 0 +_081526A8: .4byte gUnknown_3005F3C +_081526AC: + ldr r2, _081526BC + adds r1, r0, #0 + lsls r1, r3 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + b _081526D0 + .align 2, 0 +_081526BC: .4byte gUnknown_3005F3C +_081526C0: + ldr r0, _081526D8 + movs r1, #1 + lsls r1, r3 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _081526D0 + movs r4, #1 +_081526D0: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081526D8: .4byte gUnknown_3005F3C + thumb_func_end sub_08152678 + + thumb_func_start sub_081526DC +sub_081526DC: @ 0x081526DC + push {r4, r5, r6, r7, lr} + adds r7, r1, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _08152700 + ldr r0, _08152704 + str r0, [r1] + ldr r0, _08152708 + cmp r2, r0 + beq _0815270C + adds r0, r2, #0 + adds r1, r7, #0 + bl sub_0815277C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _0815275E + .align 2, 0 +_08152700: .4byte gUnknown_3005F44 +_08152704: .4byte gUnknown_203A888 +_08152708: .4byte 0x0000FFFF +_0815270C: + ldr r1, _08152768 + ldr r5, _0815276C + ldrh r0, [r5] + strh r0, [r1] + ldr r1, _08152770 + ldr r6, _08152774 + ldr r4, [r6] + str r4, [r1] + adds r0, #1 + strh r0, [r5] + ldrh r0, [r5] + movs r1, #0xe + bl __umodsi3 + strh r0, [r5] + adds r4, #1 + str r4, [r6] + movs r5, #1 + movs r4, #0 +_08152732: + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_0815277C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xd + bls _08152732 + ldr r0, _08152778 + ldr r0, [r0] + cmp r0, #0 + beq _0815275E + movs r5, #0xff + ldr r1, _0815276C + ldr r0, _08152768 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _08152774 + ldr r0, _08152770 + ldr r0, [r0] + str r0, [r1] +_0815275E: + adds r0, r5, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08152768: .4byte gUnknown_3005F38 +_0815276C: .4byte gUnknown_3005F30 +_08152770: .4byte gUnknown_3005F34 +_08152774: .4byte gUnknown_3005F40 +_08152778: .4byte gUnknown_3005F3C + thumb_func_end sub_081526DC + + thumb_func_start sub_0815277C +sub_0815277C: @ 0x0815277C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08152848 + ldrh r0, [r0] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r5, #0 + movs r1, #0xe + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r2, _0815284C + ldr r1, [r2] + movs r0, #1 + ands r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r6, #3 + adds r0, r0, r4 + ldr r1, [r0] + mov sl, r1 + ldrh r4, [r0, #4] + movs r3, #0 + mov sb, r2 + ldr r2, _08152850 + mov ip, r2 + mov r8, ip + movs r2, #0 + ldr r1, _08152854 +_081527CE: + mov r7, r8 + ldr r0, [r7] + adds r0, r0, r3 + strb r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + bls _081527CE + mov r0, ip + ldr r1, [r0] + ldr r2, _08152858 + adds r0, r1, r2 + strh r6, [r0] + ldr r3, _0815285C + adds r2, r1, r3 + ldr r0, _08152860 + str r0, [r2] + ldr r6, _08152864 + adds r1, r1, r6 + mov r7, sb + ldr r0, [r7] + str r0, [r1] + movs r3, #0 + lsls r5, r5, #0x18 + cmp r3, r4 + bhs _0815281C + mov r2, ip +_08152806: + ldr r1, [r2] + adds r1, r1, r3 + mov r6, sl + adds r0, r6, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r4 + blo _08152806 +_0815281C: + mov r0, sl + adds r1, r4, #0 + bl sub_081530B4 + ldr r1, _08152850 + ldr r1, [r1] + ldr r7, _08152868 + adds r2, r1, r7 + strh r0, [r2] + lsrs r0, r5, #0x18 + bl sub_081528E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08152848: .4byte gUnknown_3005F30 +_0815284C: .4byte gUnknown_3005F40 +_08152850: .4byte gUnknown_3005F44 +_08152854: .4byte 0x00000FFF +_08152858: .4byte 0x00000FF4 +_0815285C: .4byte 0x00000FF8 +_08152860: .4byte 0x08012025 +_08152864: .4byte 0x00000FFC +_08152868: .4byte 0x00000FF6 + thumb_func_end sub_0815277C + + thumb_func_start sub_0815286C +sub_0815286C: @ 0x0815286C + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _081528D0 + movs r3, #0 + movs r6, #0 + ldr r1, _081528D4 +_08152880: + adds r0, r4, r3 + strb r6, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + bls _08152880 + ldr r0, _081528D8 + adds r1, r4, r0 + ldr r0, _081528DC + str r0, [r1] + movs r3, #0 + cmp r3, r2 + bhs _081528AE +_0815289C: + adds r1, r4, r3 + adds r0, r5, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r2 + blo _0815289C +_081528AE: + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_081530B4 + ldr r2, _081528E0 + adds r1, r4, r2 + strh r0, [r1] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_081528E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081528D0: .4byte gUnknown_203A888 +_081528D4: .4byte 0x00000FFF +_081528D8: .4byte 0x00000FF8 +_081528DC: .4byte 0x08012025 +_081528E0: .4byte 0x00000FF4 + thumb_func_end sub_0815286C + + thumb_func_start sub_081528E4 +sub_081528E4: @ 0x081528E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl ProgramFlashSectorAndVerify + cmp r0, #0 + bne _08152900 + movs r0, #1 + adds r1, r4, #0 + bl sub_08152678 + movs r0, #1 + b _0815290A +_08152900: + movs r0, #0 + adds r1, r4, #0 + bl sub_08152678 + movs r0, #0xff +_0815290A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081528E4 + + thumb_func_start sub_08152910 +sub_08152910: @ 0x08152910 + push {r4, r5, r6, lr} + ldr r1, _0815294C + ldr r0, _08152950 + str r0, [r1] + ldr r1, _08152954 + ldr r5, _08152958 + ldrh r0, [r5] + strh r0, [r1] + ldr r1, _0815295C + ldr r6, _08152960 + ldr r4, [r6] + str r4, [r1] + adds r0, #1 + strh r0, [r5] + ldrh r0, [r5] + movs r1, #0xe + bl __umodsi3 + strh r0, [r5] + adds r4, #1 + str r4, [r6] + ldr r1, _08152964 + movs r0, #0 + strh r0, [r1] + ldr r1, _08152968 + movs r0, #0 + str r0, [r1] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0815294C: .4byte gUnknown_3005F44 +_08152950: .4byte gUnknown_203A888 +_08152954: .4byte gUnknown_3005F38 +_08152958: .4byte gUnknown_3005F30 +_0815295C: .4byte gUnknown_3005F34 +_08152960: .4byte gUnknown_3005F40 +_08152964: .4byte gUnknown_3005F48 +_08152968: .4byte gUnknown_3005F3C + thumb_func_end sub_08152910 + + thumb_func_start sub_0815296C +sub_0815296C: @ 0x0815296C + ldr r1, _08152990 + ldr r0, _08152994 + str r0, [r1] + ldr r1, _08152998 + ldr r0, _0815299C + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081529A0 + ldr r0, _081529A4 + ldr r0, [r0] + str r0, [r1] + ldr r1, _081529A8 + movs r0, #0 + strh r0, [r1] + ldr r1, _081529AC + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_08152990: .4byte gUnknown_3005F44 +_08152994: .4byte gUnknown_203A888 +_08152998: .4byte gUnknown_3005F38 +_0815299C: .4byte gUnknown_3005F30 +_081529A0: .4byte gUnknown_3005F34 +_081529A4: .4byte gUnknown_3005F40 +_081529A8: .4byte gUnknown_3005F48 +_081529AC: .4byte gUnknown_3005F3C + thumb_func_end sub_0815296C + + thumb_func_start sub_081529B0 +sub_081529B0: @ 0x081529B0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _081529EC + ldrh r2, [r4] + subs r0, #1 + cmp r2, r0 + bge _08152A04 + movs r5, #1 + adds r0, r2, #0 + bl sub_0815277C + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldr r0, _081529F0 + ldr r0, [r0] + cmp r0, #0 + beq _08152A06 + movs r5, #0xff + ldr r1, _081529F4 + ldr r0, _081529F8 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081529FC + ldr r0, _08152A00 + ldr r0, [r0] + str r0, [r1] + b _08152A06 + .align 2, 0 +_081529EC: .4byte gUnknown_3005F48 +_081529F0: .4byte gUnknown_3005F3C +_081529F4: .4byte gUnknown_3005F30 +_081529F8: .4byte gUnknown_3005F38 +_081529FC: .4byte gUnknown_3005F40 +_08152A00: .4byte gUnknown_3005F34 +_08152A04: + movs r5, #0xff +_08152A06: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081529B0 + + thumb_func_start sub_08152A10 +sub_08152A10: @ 0x08152A10 + push {r4, lr} + lsls r0, r0, #0x10 + movs r4, #1 + ldr r2, _08152A44 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + bl sub_08152A5C + ldr r0, _08152A48 + ldr r0, [r0] + cmp r0, #0 + beq _08152A3A + movs r4, #0xff + ldr r1, _08152A4C + ldr r0, _08152A50 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _08152A54 + ldr r0, _08152A58 + ldr r0, [r0] + str r0, [r1] +_08152A3A: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08152A44: .4byte 0xFFFF0000 +_08152A48: .4byte gUnknown_3005F3C +_08152A4C: .4byte gUnknown_3005F30 +_08152A50: .4byte gUnknown_3005F38 +_08152A54: .4byte gUnknown_3005F40 +_08152A58: .4byte gUnknown_3005F34 + thumb_func_end sub_08152A10 + + thumb_func_start sub_08152A5C +sub_08152A5C: @ 0x08152A5C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08152B28 + ldrh r0, [r0] + adds r0, r6, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r5, #0 + movs r1, #0xe + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r2, _08152B2C + ldr r1, [r2] + movs r0, #1 + ands r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r5, r0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r6, #3 + adds r0, r0, r4 + ldr r1, [r0] + mov sl, r1 + ldrh r3, [r0, #4] + movs r4, #0 + mov sb, r2 + ldr r2, _08152B30 + mov ip, r2 + mov r8, ip + movs r2, #0 + ldr r1, _08152B34 +_08152AAE: + mov r7, r8 + ldr r0, [r7] + adds r0, r0, r4 + strb r2, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r1 + bls _08152AAE + mov r0, ip + ldr r1, [r0] + ldr r2, _08152B38 + adds r0, r1, r2 + strh r6, [r0] + ldr r6, _08152B3C + adds r2, r1, r6 + ldr r0, _08152B40 + str r0, [r2] + ldr r7, _08152B44 + adds r1, r1, r7 + mov r2, sb + ldr r0, [r2] + str r0, [r1] + movs r4, #0 + lsls r6, r5, #0x18 + mov r8, r6 + cmp r4, r3 + bhs _08152AFE + mov r2, ip +_08152AE8: + ldr r1, [r2] + adds r1, r1, r4 + mov r7, sl + adds r0, r7, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r3 + blo _08152AE8 +_08152AFE: + mov r0, sl + adds r1, r3, #0 + bl sub_081530B4 + ldr r1, _08152B30 + ldr r1, [r1] + ldr r2, _08152B48 + adds r1, r1, r2 + strh r0, [r1] + ldr r0, _08152B4C + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r6, #1 + movs r4, #0 + ldr r7, _08152B50 + mov sb, r7 + ldr r7, _08152B54 + b _08152B5E + .align 2, 0 +_08152B28: .4byte gUnknown_3005F30 +_08152B2C: .4byte gUnknown_3005F40 +_08152B30: .4byte gUnknown_3005F44 +_08152B34: .4byte 0x00000FFF +_08152B38: .4byte 0x00000FF4 +_08152B3C: .4byte 0x00000FF8 +_08152B40: .4byte 0x08012025 +_08152B44: .4byte 0x00000FFC +_08152B48: .4byte 0x00000FF6 +_08152B4C: .4byte gUnknown_3007600 +_08152B50: .4byte 0x00000FF7 +_08152B54: .4byte gUnknown_30075F4 +_08152B58: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08152B5E: + cmp r4, sb + bhi _08152B7C + ldr r0, _08152B88 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r2, [r0] + ldr r3, [r7] + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08152B58 + movs r6, #0xff +_08152B7C: + cmp r6, #0xff + bne _08152B8C + mov r0, r8 + lsrs r1, r0, #0x18 + b _08152BE4 + .align 2, 0 +_08152B88: .4byte gUnknown_3005F44 +_08152B8C: + movs r6, #1 + movs r4, #0 + ldr r1, _08152B98 + mov sb, r1 + ldr r7, _08152B9C + b _08152BA6 + .align 2, 0 +_08152B98: .4byte gUnknown_30075F4 +_08152B9C: .4byte 0x00000FF9 +_08152BA0: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08152BA6: + cmp r4, #6 + bhi _08152BC8 + adds r1, r4, r7 + ldr r0, _08152BDC + ldr r0, [r0] + adds r0, r4, r0 + adds r0, r0, r7 + ldrb r2, [r0] + mov r0, sb + ldr r3, [r0] + adds r0, r5, #0 + bl _call_via_r3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08152BA0 + movs r6, #0xff +_08152BC8: + cmp r6, #0xff + beq _08152BE0 + mov r2, r8 + lsrs r1, r2, #0x18 + movs r0, #1 + bl sub_08152678 + movs r0, #1 + b _08152BEC + .align 2, 0 +_08152BDC: .4byte gUnknown_3005F44 +_08152BE0: + mov r6, r8 + lsrs r1, r6, #0x18 +_08152BE4: + movs r0, #0 + bl sub_08152678 + movs r0, #0xff +_08152BEC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08152A5C + + thumb_func_start sub_08152BFC +sub_08152BFC: @ 0x08152BFC + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + ldr r6, _08152C58 + lsrs r0, r0, #0x10 + ldrh r1, [r6] + adds r0, r0, r1 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #0xe + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r5, _08152C5C + ldr r1, [r5] + movs r0, #1 + ands r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r3, _08152C60 + ldr r1, _08152C64 + ldr r0, _08152C68 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r3, [r3] + adds r0, r4, #0 + bl _call_via_r3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08152C6C + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_08152678 + movs r0, #1 + b _08152C84 + .align 2, 0 +_08152C58: .4byte gUnknown_3005F30 +_08152C5C: .4byte gUnknown_3005F40 +_08152C60: .4byte gUnknown_30075F4 +_08152C64: .4byte 0x00000FF8 +_08152C68: .4byte gUnknown_3005F44 +_08152C6C: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08152678 + ldr r0, _08152C8C + ldrh r0, [r0] + strh r0, [r6] + ldr r0, _08152C90 + ldr r0, [r0] + str r0, [r5] + movs r0, #0xff +_08152C84: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08152C8C: .4byte gUnknown_3005F38 +_08152C90: .4byte gUnknown_3005F34 + thumb_func_end sub_08152BFC + + thumb_func_start sub_08152C94 +sub_08152C94: @ 0x08152C94 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + ldr r6, _08152CE8 + lsrs r0, r0, #0x10 + ldrh r1, [r6] + adds r0, r0, r1 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #0xe + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r5, _08152CEC + ldr r1, [r5] + movs r0, #1 + ands r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, r4, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08152CF0 + ldr r1, _08152CF4 + ldr r3, [r0] + adds r0, r4, #0 + movs r2, #0x25 + bl _call_via_r3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08152CF8 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + bl sub_08152678 + movs r0, #1 + b _08152D10 + .align 2, 0 +_08152CE8: .4byte gUnknown_3005F30 +_08152CEC: .4byte gUnknown_3005F40 +_08152CF0: .4byte gUnknown_30075F4 +_08152CF4: .4byte 0x00000FF8 +_08152CF8: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + bl sub_08152678 + ldr r0, _08152D18 + ldrh r0, [r0] + strh r0, [r6] + ldr r0, _08152D1C + ldr r0, [r0] + str r0, [r5] + movs r0, #0xff +_08152D10: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08152D18: .4byte gUnknown_3005F38 +_08152D1C: .4byte gUnknown_3005F34 + thumb_func_end sub_08152C94 + + thumb_func_start sub_08152D20 +sub_08152D20: @ 0x08152D20 + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r1, _08152D38 + ldr r0, _08152D3C + str r0, [r1] + ldr r0, _08152D40 + cmp r4, r0 + beq _08152D44 + movs r5, #0xff + b _08152D56 + .align 2, 0 +_08152D38: .4byte gUnknown_3005F44 +_08152D3C: .4byte gUnknown_203A888 +_08152D40: .4byte 0x0000FFFF +_08152D44: + adds r0, r6, #0 + bl sub_08152E18 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08152D60 +_08152D56: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08152D20 + + thumb_func_start sub_08152D60 +sub_08152D60: @ 0x08152D60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + ldr r0, _08152DFC + ldr r1, [r0] + movs r0, #1 + ands r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #0x11 + lsrs r7, r0, #0x10 + movs r5, #0 + ldr r6, _08152E00 +_08152D7C: + adds r0, r5, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r6] + bl sub_0815309C + ldr r0, [r6] + ldr r1, _08152E04 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r1, #0 + bne _08152D98 + ldr r0, _08152E08 + strh r5, [r0] +_08152D98: + ldr r0, [r6] + lsls r1, r1, #3 + mov r2, r8 + adds r4, r1, r2 + ldrh r1, [r4, #4] + bl sub_081530B4 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r2, [r6] + ldr r1, _08152E0C + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _08152E10 + adds r5, #1 + cmp r1, r0 + bne _08152DE8 + ldr r1, _08152E14 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _08152DE8 + movs r2, #0 + ldrh r0, [r4, #4] + cmp r2, r0 + bhs _08152DE8 + adds r3, r4, #0 + ldr r4, _08152E00 +_08152DD0: + ldr r1, [r3] + adds r1, r1, r2 + ldr r0, [r4] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r1, [r3, #4] + cmp r2, r1 + blo _08152DD0 +_08152DE8: + lsls r0, r5, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xd + bls _08152D7C + movs r0, #1 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08152DFC: .4byte gUnknown_3005F40 +_08152E00: .4byte gUnknown_3005F44 +_08152E04: .4byte 0x00000FF4 +_08152E08: .4byte gUnknown_3005F30 +_08152E0C: .4byte 0x00000FF8 +_08152E10: .4byte 0x08012025 +_08152E14: .4byte 0x00000FF6 + thumb_func_end sub_08152D60 + + thumb_func_start sub_08152E18 +sub_08152E18: @ 0x08152E18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r0 + movs r0, #0 + mov r8, r0 + mov sb, r0 + movs r6, #0 + movs r5, #0 + movs r4, #0 + ldr r7, _08152EA4 +_08152E34: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r7] + bl sub_0815309C + ldr r2, [r7] + ldr r1, _08152EA8 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _08152EAC + cmp r1, r0 + bne _08152E84 + movs r5, #1 + ldr r3, _08152EB0 + adds r0, r2, r3 + ldrh r0, [r0] + lsls r0, r0, #3 + add r0, sl + ldrh r1, [r0, #4] + adds r0, r2, #0 + bl sub_081530B4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, [r7] + ldr r3, _08152EB4 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08152E84 + ldr r2, _08152EB8 + adds r0, r1, r2 + ldr r0, [r0] + mov r8, r0 + subs r3, #2 + adds r1, r1, r3 + adds r0, r5, #0 + ldrh r1, [r1] + lsls r0, r1 + orrs r6, r0 +_08152E84: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xd + bls _08152E34 + cmp r5, #0 + beq _08152EC0 + ldr r0, _08152EBC + movs r1, #0xff + str r1, [sp] + cmp r6, r0 + bne _08152EC4 + movs r2, #1 + str r2, [sp] + b _08152EC4 + .align 2, 0 +_08152EA4: .4byte gUnknown_3005F44 +_08152EA8: .4byte 0x00000FF8 +_08152EAC: .4byte 0x08012025 +_08152EB0: .4byte 0x00000FF4 +_08152EB4: .4byte 0x00000FF6 +_08152EB8: .4byte 0x00000FFC +_08152EBC: .4byte 0x00003FFF +_08152EC0: + movs r3, #0 + str r3, [sp] +_08152EC4: + movs r6, #0 + movs r5, #0 + movs r4, #0 + ldr r7, _08152F3C +_08152ECC: + adds r0, r4, #0 + adds r0, #0xe + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r7] + bl sub_0815309C + ldr r2, [r7] + ldr r1, _08152F40 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, _08152F44 + cmp r1, r0 + bne _08152F20 + movs r5, #1 + ldr r3, _08152F48 + adds r0, r2, r3 + ldrh r0, [r0] + lsls r0, r0, #3 + add r0, sl + ldrh r1, [r0, #4] + adds r0, r2, #0 + bl sub_081530B4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, [r7] + ldr r3, _08152F4C + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _08152F20 + ldr r2, _08152F50 + adds r0, r1, r2 + ldr r0, [r0] + mov sb, r0 + subs r3, #2 + adds r1, r1, r3 + adds r0, r5, #0 + ldrh r1, [r1] + lsls r0, r1 + orrs r6, r0 +_08152F20: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xd + bls _08152ECC + cmp r5, #0 + beq _08152F58 + ldr r0, _08152F54 + movs r1, #0xff + cmp r6, r0 + bne _08152F5A + movs r1, #1 + b _08152F5A + .align 2, 0 +_08152F3C: .4byte gUnknown_3005F44 +_08152F40: .4byte 0x00000FF8 +_08152F44: .4byte 0x08012025 +_08152F48: .4byte 0x00000FF4 +_08152F4C: .4byte 0x00000FF6 +_08152F50: .4byte 0x00000FFC +_08152F54: .4byte 0x00003FFF +_08152F58: + movs r1, #0 +_08152F5A: + ldr r0, [sp] + cmp r0, #1 + bne _08152FCC + cmp r1, #1 + bne _08152FBC + movs r0, #1 + rsbs r0, r0, #0 + cmp r8, r0 + bne _08152F72 + mov r1, sb + cmp r1, #0 + beq _08152F7C +_08152F72: + mov r2, r8 + cmp r2, #0 + bne _08152FA0 + cmp sb, r0 + bne _08152FA0 +_08152F7C: + mov r1, r8 + adds r1, #1 + mov r0, sb + adds r0, #1 + cmp r1, r0 + bhs _08152F94 + ldr r0, _08152F90 + mov r3, sb + b _08152FB4 + .align 2, 0 +_08152F90: .4byte gUnknown_3005F40 +_08152F94: + ldr r0, _08152F9C + mov r1, r8 + str r1, [r0] + b _08152FE4 + .align 2, 0 +_08152F9C: .4byte gUnknown_3005F40 +_08152FA0: + cmp r8, sb + bhs _08152FB0 + ldr r0, _08152FAC + mov r2, sb + str r2, [r0] + b _08152FE4 + .align 2, 0 +_08152FAC: .4byte gUnknown_3005F40 +_08152FB0: + ldr r0, _08152FB8 + mov r3, r8 +_08152FB4: + str r3, [r0] + b _08152FE4 + .align 2, 0 +_08152FB8: .4byte gUnknown_3005F40 +_08152FBC: + ldr r0, _08152FC8 + mov r2, r8 + str r2, [r0] + cmp r1, #0xff + beq _08152FDC + b _08152FE4 + .align 2, 0 +_08152FC8: .4byte gUnknown_3005F40 +_08152FCC: + cmp r1, #1 + bne _08152FE8 + ldr r0, _08152FE0 + mov r3, sb + str r3, [r0] + ldr r0, [sp] + cmp r0, #0xff + bne _08152FE4 +_08152FDC: + movs r0, #0xff + b _08153014 + .align 2, 0 +_08152FE0: .4byte gUnknown_3005F40 +_08152FE4: + movs r0, #1 + b _08153014 +_08152FE8: + ldr r2, [sp] + cmp r2, #0 + bne _08153008 + cmp r1, #0 + bne _08153008 + ldr r0, _08153000 + str r1, [r0] + ldr r0, _08153004 + strh r1, [r0] + movs r0, #0 + b _08153014 + .align 2, 0 +_08153000: .4byte gUnknown_3005F40 +_08153004: .4byte gUnknown_3005F30 +_08153008: + ldr r0, _08153024 + movs r1, #0 + str r1, [r0] + ldr r0, _08153028 + strh r1, [r0] + movs r0, #2 +_08153014: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08153024: .4byte gUnknown_3005F40 +_08153028: .4byte gUnknown_3005F30 + thumb_func_end sub_08152E18 + + thumb_func_start sub_0815302C +sub_0815302C: @ 0x0815302C + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + ldr r5, _08153080 + adds r1, r5, #0 + bl sub_0815309C + ldr r1, _08153084 + adds r0, r5, r1 + ldr r1, [r0] + ldr r0, _08153088 + cmp r1, r0 + bne _08153094 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081530B4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0815308C + adds r1, r5, r2 + ldrh r1, [r1] + cmp r1, r0 + bne _08153090 + movs r2, #0 + cmp r2, r4 + bhs _0815307A +_08153068: + adds r1, r6, r2 + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r4 + blo _08153068 +_0815307A: + movs r0, #1 + b _08153096 + .align 2, 0 +_08153080: .4byte gUnknown_203A888 +_08153084: .4byte 0x00000FF8 +_08153088: .4byte 0x08012025 +_0815308C: .4byte 0x00000FF4 +_08153090: + movs r0, #2 + b _08153096 +_08153094: + movs r0, #0 +_08153096: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0815302C + + thumb_func_start sub_0815309C +sub_0815309C: @ 0x0815309C + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0x80 + lsls r3, r3, #5 + movs r1, #0 + bl ReadFlash + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_0815309C + + thumb_func_start sub_081530B4 +sub_081530B4: @ 0x081530B4 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + movs r2, #0 + movs r3, #0 + lsrs r1, r1, #0x12 + cmp r2, r1 + bhs _081530D2 +_081530C4: + ldm r4!, {r0} + adds r2, r2, r0 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + blo _081530C4 +_081530D2: + lsrs r0, r2, #0x10 + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081530B4 + + thumb_func_start sub_081530E0 +sub_081530E0: @ 0x081530E0 + push {r4, r5, lr} + ldr r3, _08153140 + ldr r0, _08153144 + ldr r2, _08153148 + ldrh r1, [r2] + ldr r0, [r0] + adds r0, r0, r1 + str r0, [r3] + ldrh r0, [r2, #2] + strh r0, [r3, #4] + ldr r5, _0815314C + adds r3, #8 + adds r2, #4 + movs r4, #3 +_081530FC: + ldrh r0, [r2] + ldr r1, [r5] + adds r1, r1, r0 + str r1, [r3] + ldrh r0, [r2, #2] + strh r0, [r3, #4] + adds r3, #8 + adds r2, #4 + subs r4, #1 + cmp r4, #0 + bge _081530FC + movs r4, #5 + ldr r1, _08153140 + ldr r5, _08153150 + ldr r0, _08153148 + adds r3, r1, #0 + adds r3, #0x28 + adds r2, r0, #0 + adds r2, #0x14 +_08153122: + ldrh r0, [r2] + ldr r1, [r5] + adds r1, r1, r0 + str r1, [r3] + ldrh r0, [r2, #2] + strh r0, [r3, #4] + adds r3, #8 + adds r2, #4 + adds r4, #1 + cmp r4, #0xd + ble _08153122 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08153140: .4byte gUnknown_3005F60 +_08153144: .4byte gUnknown_3005AF0 +_08153148: .4byte gUnknown_85ACA08 +_0815314C: .4byte gUnknown_3005AEC +_08153150: .4byte gUnknown_3005AF4 + thumb_func_end sub_081530E0 + + thumb_func_start sub_08153154 +sub_08153154: @ 0x08153154 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08153174 + ldr r6, [r1] + movs r0, #0 + str r0, [r1] + bl sub_081530E0 + cmp r4, #5 + bhi _081531FC + lsls r0, r4, #2 + ldr r1, _08153178 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08153174: .4byte gUnknown_203CC28 +_08153178: .4byte _0815317C +_0815317C: @ jump table + .4byte _081531FC @ case 0 + .4byte _08153214 @ case 1 + .4byte _08153214 @ case 2 + .4byte _081531AA @ case 3 + .4byte _08153234 @ case 4 + .4byte _08153194 @ case 5 +_08153194: + movs r4, #0x1c + ldr r5, _081531E8 +_08153198: + ldr r1, [r5] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _08153198 +_081531AA: + movs r0, #0xa + bl sub_08084180 + ldr r1, _081531EC + cmp r0, r1 + bhi _081531BC + movs r0, #0xa + bl sub_0808414C +_081531BC: + bl sub_080768B4 + ldr r0, _081531F0 + ldr r1, _081531F4 + bl sub_081526DC + ldr r4, _081531F8 + movs r5, #0xf8 + lsls r5, r5, #4 + movs r0, #0x1c + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0815286C + adds r4, r4, r5 + movs r0, #0x1d + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0815286C + b _08153256 + .align 2, 0 +_081531E8: .4byte gUnknown_3007600 +_081531EC: .4byte 0x000003E6 +_081531F0: .4byte 0x0000FFFF +_081531F4: .4byte gUnknown_3005F60 +_081531F8: .4byte gUnknown_201C000 +_081531FC: + bl sub_080768B4 + ldr r0, _0815320C + ldr r1, _08153210 + bl sub_081526DC + b _08153256 + .align 2, 0 +_0815320C: .4byte 0x0000FFFF +_08153210: .4byte gUnknown_3005F60 +_08153214: + bl sub_080768B4 + movs r4, #0 +_0815321A: + adds r0, r4, #0 + ldr r1, _08153230 + bl sub_081526DC + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _0815321A + b _08153256 + .align 2, 0 +_08153230: .4byte gUnknown_3005F60 +_08153234: + movs r4, #0x1c + ldr r5, _08153264 +_08153238: + ldr r1, [r5] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1f + bls _08153238 + bl sub_080768B4 + ldr r0, _08153268 + ldr r1, _0815326C + bl sub_081526DC +_08153256: + ldr r0, _08153270 + str r6, [r0] + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08153264: .4byte gUnknown_3007600 +_08153268: .4byte 0x0000FFFF +_0815326C: .4byte gUnknown_3005F60 +_08153270: .4byte gUnknown_203CC28 + thumb_func_end sub_08153154 + + thumb_func_start sub_08153274 +sub_08153274: @ 0x08153274 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081532A0 + ldr r4, [r0] + cmp r4, #1 + bne _08153296 + adds r0, r5, #0 + bl sub_08153154 + ldr r0, _081532A4 + ldr r0, [r0] + cmp r0, #0 + beq _081532AC + adds r0, r5, #0 + bl sub_08178E48 +_08153296: + ldr r1, _081532A8 + movs r0, #0xff + strh r0, [r1] + movs r0, #0xff + b _081532B2 + .align 2, 0 +_081532A0: .4byte gUnknown_3005AE8 +_081532A4: .4byte gUnknown_3005F3C +_081532A8: .4byte gUnknown_3005FD4 +_081532AC: + ldr r0, _081532B8 + strh r4, [r0] + movs r0, #1 +_081532B2: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081532B8: .4byte gUnknown_3005FD4 + thumb_func_end sub_08153274 + + thumb_func_start sub_081532BC +sub_081532BC: @ 0x081532BC + push {lr} + ldr r0, _081532D8 + ldr r0, [r0] + cmp r0, #1 + bne _081532E0 + bl sub_081530E0 + bl sub_080768B4 + ldr r0, _081532DC + bl sub_08152910 + movs r0, #0 + b _081532E2 + .align 2, 0 +_081532D8: .4byte gUnknown_3005AE8 +_081532DC: .4byte gUnknown_3005F60 +_081532E0: + movs r0, #1 +_081532E2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081532BC + + thumb_func_start sub_081532E8 +sub_081532E8: @ 0x081532E8 + push {r4, lr} + ldr r1, _0815330C + movs r0, #0xe + bl sub_081529B0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08153310 + ldr r0, [r0] + cmp r0, #0 + beq _08153304 + movs r0, #0 + bl sub_08178E48 +_08153304: + cmp r4, #0xff + beq _08153314 + movs r0, #0 + b _08153316 + .align 2, 0 +_0815330C: .4byte gUnknown_3005F60 +_08153310: .4byte gUnknown_3005F3C +_08153314: + movs r0, #1 +_08153316: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081532E8 + + thumb_func_start sub_0815331C +sub_0815331C: @ 0x0815331C + push {lr} + ldr r1, _0815333C + movs r0, #0xe + bl sub_08152A10 + ldr r0, _08153340 + ldr r0, [r0] + cmp r0, #0 + beq _08153334 + movs r0, #0 + bl sub_08178E48 +_08153334: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0815333C: .4byte gUnknown_3005F60 +_08153340: .4byte gUnknown_3005F3C + thumb_func_end sub_0815331C + + thumb_func_start sub_08153344 +sub_08153344: @ 0x08153344 + push {lr} + ldr r1, _08153364 + movs r0, #0xe + bl sub_08152BFC + ldr r0, _08153368 + ldr r0, [r0] + cmp r0, #0 + beq _0815335C + movs r0, #0 + bl sub_08178E48 +_0815335C: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08153364: .4byte gUnknown_3005F60 +_08153368: .4byte gUnknown_3005F3C + thumb_func_end sub_08153344 + + thumb_func_start sub_0815336C +sub_0815336C: @ 0x0815336C + push {r4, lr} + ldr r0, _0815339C + ldr r0, [r0] + cmp r0, #1 + bne _081533A8 + bl sub_081530E0 + bl sub_080768B4 + ldr r4, _081533A0 + adds r0, r4, #0 + bl sub_0815296C + ldr r0, _081533A4 + ldrh r0, [r0] + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_08152A10 + movs r0, #0 + b _081533AA + .align 2, 0 +_0815339C: .4byte gUnknown_3005AE8 +_081533A0: .4byte gUnknown_3005F60 +_081533A4: .4byte gUnknown_3005F48 +_081533A8: + movs r0, #1 +_081533AA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0815336C + + thumb_func_start sub_081533B0 +sub_081533B0: @ 0x081533B0 + push {r4, r5, r6, lr} + movs r6, #0 + ldr r0, _081533DC + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #4 + bhi _081533E4 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _081533E0 + adds r1, r4, #0 + bl sub_08152A10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08152C94 + b _081533EE + .align 2, 0 +_081533DC: .4byte gUnknown_3005F48 +_081533E0: .4byte gUnknown_3005F60 +_081533E4: + ldr r1, _08153404 + adds r0, r5, #0 + bl sub_08152C94 + movs r6, #1 +_081533EE: + ldr r0, _08153408 + ldr r0, [r0] + cmp r0, #0 + beq _081533FC + movs r0, #1 + bl sub_08178E48 +_081533FC: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08153404: .4byte gUnknown_3005F60 +_08153408: .4byte gUnknown_3005F3C + thumb_func_end sub_081533B0 + + thumb_func_start sub_0815340C +sub_0815340C: @ 0x0815340C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08153424 + ldr r0, [r0] + cmp r0, #1 + beq _0815342C + ldr r1, _08153428 + movs r0, #4 + strh r0, [r1] + movs r0, #0xff + b _0815348C + .align 2, 0 +_08153424: .4byte gUnknown_3005AE8 +_08153428: .4byte gUnknown_3005F50 +_0815342C: + bl sub_081530E0 + cmp r4, #0 + beq _08153438 + cmp r4, #3 + beq _08153464 +_08153438: + ldr r0, _08153454 + ldr r1, _08153458 + bl sub_08152D20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080768C4 + ldr r0, _0815345C + strh r4, [r0] + ldr r1, _08153460 + movs r0, #0 + str r0, [r1] + b _0815348A + .align 2, 0 +_08153454: .4byte 0x0000FFFF +_08153458: .4byte gUnknown_3005F60 +_0815345C: .4byte gUnknown_3005F50 +_08153460: .4byte gUnknown_3005F54 +_08153464: + ldr r5, _08153494 + movs r6, #0xf8 + lsls r6, r6, #4 + movs r0, #0x1c + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0815302C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _0815348A + adds r1, r5, r6 + movs r0, #0x1d + adds r2, r6, #0 + bl sub_0815302C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_0815348A: + adds r0, r4, #0 +_0815348C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08153494: .4byte gUnknown_201C000 + thumb_func_end sub_0815340C + + thumb_func_start sub_08153498 +sub_08153498: @ 0x08153498 + push {r4, r5, r6, r7, lr} + ldr r5, _081534AC + ldr r0, _081534B0 + str r0, [r5] + adds r7, r0, #0 + ldr r0, _081534B4 + ldr r4, [r0] + cmp r4, #1 + beq _081534C8 + b _08153504 + .align 2, 0 +_081534AC: .4byte gUnknown_3005F44 +_081534B0: .4byte gUnknown_203A888 +_081534B4: .4byte gUnknown_3005AE8 +_081534B8: + ldrb r1, [r7, #0xa] + ldrb r0, [r7, #0xb] + adds r1, r1, r0 + ldrb r0, [r7, #0xc] + adds r1, r1, r0 + ldrb r0, [r7, #0xd] + adds r0, r0, r1 + b _08153506 +_081534C8: + bl sub_081530E0 + ldr r0, _0815350C + bl sub_08152E18 + ldr r0, _08153510 + ldr r1, [r0] + ands r1, r4 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #0x11 + lsrs r6, r0, #0x10 + movs r4, #0 +_081534E2: + adds r0, r4, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r5] + bl sub_0815309C + ldr r0, [r5] + ldr r1, _08153514 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _081534B8 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xd + bls _081534E2 +_08153504: + movs r0, #0 +_08153506: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0815350C: .4byte gUnknown_3005F60 +_08153510: .4byte gUnknown_3005F40 +_08153514: .4byte 0x00000FF4 + thumb_func_end sub_08153498 + + thumb_func_start sub_08153518 +sub_08153518: @ 0x08153518 + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xe2 + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08153544 + ldr r4, _08153548 + movs r3, #0x80 + lsls r3, r3, #5 + adds r0, r1, #0 + movs r1, #0 + adds r2, r4, #0 + bl ReadFlash + ldr r1, [r4] + ldr r0, _0815354C + cmp r1, r0 + beq _08153550 +_08153544: + movs r0, #0xff + b _08153566 + .align 2, 0 +_08153548: .4byte gUnknown_203A888 +_0815354C: .4byte 0x0000B39D +_08153550: + movs r3, #0 + ldr r5, _0815356C + adds r2, r4, #4 +_08153556: + adds r0, r6, r3 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, r5 + ble _08153556 + movs r0, #1 +_08153566: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0815356C: .4byte 0x00000FFB + thumb_func_end sub_08153518 + + thumb_func_start sub_08153570 +sub_08153570: @ 0x08153570 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0xe2 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081535BC + ldr r7, _081535B0 + ldr r0, _081535B4 + adds r3, r7, #0 + stm r3!, {r0} + movs r2, #0 + ldr r4, _081535B8 +_08153590: + adds r0, r3, r2 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, r4 + ble _08153590 + adds r0, r6, #0 + adds r1, r7, #0 + bl ProgramFlashSectorAndVerify + cmp r0, #0 + bne _081535BC + movs r0, #1 + b _081535BE + .align 2, 0 +_081535B0: .4byte gUnknown_203A888 +_081535B4: .4byte 0x0000B39D +_081535B8: .4byte 0x00000FFB +_081535BC: + movs r0, #0xff +_081535BE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08153570 + + thumb_func_start sub_081535C4 +sub_081535C4: @ 0x081535C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081535E8 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0xb + bls _081535DE + b _081536FE +_081535DE: + lsls r0, r0, #2 + ldr r1, _081535EC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081535E8: .4byte gUnknown_3005B68 +_081535EC: .4byte _081535F0 +_081535F0: @ jump table + .4byte _08153620 @ case 0 + .4byte _08153630 @ case 1 + .4byte _0815363A @ case 2 + .4byte _08153656 @ case 3 + .4byte _08153668 @ case 4 + .4byte _0815367E @ case 5 + .4byte _08153694 @ case 6 + .4byte _0815369E @ case 7 + .4byte _081536B4 @ case 8 + .4byte _081536C8 @ case 9 + .4byte _081536D2 @ case 10 + .4byte _081536E4 @ case 11 +_08153620: + ldr r0, _0815362C + movs r1, #1 + strb r1, [r0] + movs r0, #1 + strh r0, [r4] + b _081536FE + .align 2, 0 +_0815362C: .4byte gUnknown_30027A0 +_08153630: + bl sub_0800A8D4 + movs r0, #2 + strh r0, [r4] + b _081536FE +_0815363A: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081536FE + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08153650 + bl sub_08087D28 +_08153650: + movs r0, #3 + strh r0, [r4] + b _081536FE +_08153656: + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08153662 + bl sub_08076764 +_08153662: + bl sub_081532BC + b _0815368E +_08153668: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #5 + bne _081536FE + movs r0, #0 + strh r0, [r4, #2] + strh r1, [r4] + b _081536FE +_0815367E: + bl sub_081532E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815368E + movs r0, #6 + strh r0, [r4] + b _081536FE +_0815368E: + movs r0, #4 + strh r0, [r4] + b _081536FE +_08153694: + bl sub_0815331C + movs r0, #7 + strh r0, [r4] + b _081536FE +_0815369E: + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081536AA + bl sub_08076780 +_081536AA: + bl sub_0800A8D4 + movs r0, #8 + strh r0, [r4] + b _081536FE +_081536B4: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081536FE + bl sub_08153344 + movs r0, #9 + strh r0, [r4] + b _081536FE +_081536C8: + bl sub_0800A8D4 + movs r0, #0xa + strh r0, [r4] + b _081536FE +_081536D2: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081536FE + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081536FE +_081536E4: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + ble _081536FE + ldr r1, _08153704 + movs r0, #0 + strb r0, [r1] + adds r0, r2, #0 + bl sub_080A8964 +_081536FE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08153704: .4byte gUnknown_30027A0 + thumb_func_end sub_081535C4 + + thumb_func_start sub_08153708 +sub_08153708: @ 0x08153708 + push {r4, lr} + adds r4, r3, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r3, #1 + ands r0, r3 + cmp r0, #0 + beq _08153738 + ands r1, r3 + cmp r1, #0 + beq _08153738 + movs r0, #4 + ands r2, r0 + cmp r2, #0 + beq _08153738 + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r4 + cmp r0, #0 + beq _08153738 + movs r0, #1 + b _0815373A +_08153738: + movs r0, #0 +_0815373A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08153708 + + thumb_func_start sub_08153740 +sub_08153740: @ 0x08153740 + push {lr} + ldr r0, _08153754 + ldr r1, _08153758 + bl sub_08008BCC + movs r0, #3 + bl sub_08153800 + pop {r0} + bx r0 + .align 2, 0 +_08153754: .4byte gUnknown_2021C7C +_08153758: .4byte gUnknown_85FCBDE + thumb_func_end sub_08153740 + + thumb_func_start sub_0815375C +sub_0815375C: @ 0x0815375C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08153784 + ldr r2, _08153788 + bl sub_08098640 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0809867C + 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 +_08153784: .4byte gUnknown_828D2B4 +_08153788: .4byte gUnknown_828D2F8 + thumb_func_end sub_0815375C + + thumb_func_start sub_0815378C +sub_0815378C: @ 0x0815378C + push {r4, lr} + adds r4, r0, #0 + bl sub_08098698 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081537A4 + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _081537A4 + movs r0, #1 + b _081537A6 +_081537A4: + movs r0, #0 +_081537A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0815378C + + thumb_func_start sub_081537AC +sub_081537AC: @ 0x081537AC + push {lr} + adds r1, r0, #0 + ldr r0, _081537BC + bl sub_0815375C + pop {r0} + bx r0 + .align 2, 0 +_081537BC: .4byte gUnknown_203B88C + thumb_func_end sub_081537AC + + thumb_func_start sub_081537C0 +sub_081537C0: @ 0x081537C0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081537D8 + adds r0, r4, #0 + bl sub_0815378C + ldr r1, [r4, #0x6c] + str r1, [r5] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081537D8: .4byte gUnknown_203B88C + thumb_func_end sub_081537C0 + + thumb_func_start sub_081537DC +sub_081537DC: @ 0x081537DC + push {r4, lr} + adds r1, r0, #0 + ldr r4, _081537FC + adds r0, r4, #0 + bl sub_0815375C +_081537E8: + adds r0, r4, #0 + bl sub_0815378C + cmp r0, #0 + bne _081537E8 + ldr r0, [r4, #0x6c] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081537FC: .4byte gUnknown_203B88C + thumb_func_end sub_081537DC + + thumb_func_start sub_08153800 +sub_08153800: @ 0x08153800 + ldr r1, _08153808 + str r0, [r1, #0x6c] + bx lr + .align 2, 0 +_08153808: .4byte gUnknown_203B88C + thumb_func_end sub_08153800 + + thumb_func_start sub_0815380C +sub_0815380C: @ 0x0815380C + push {lr} + movs r2, #0 + ldr r0, _0815382C + ldr r0, [r0] + ldr r1, _08153830 + adds r3, r0, r1 + movs r1, #0 +_0815381A: + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r2, r0 + adds r1, #1 + cmp r1, #0xb + bls _0815381A + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_0815382C: .4byte gUnknown_3005AEC +_08153830: .4byte 0x00003B18 + thumb_func_end sub_0815380C + + thumb_func_start sub_08153834 +sub_08153834: @ 0x08153834 + push {r4, r5, lr} + ldr r5, _0815386C + ldr r0, [r5] + ldr r1, _08153870 + adds r4, r0, r1 + bl sub_0815380C + adds r1, r0, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _08153866 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _08153866 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _08153866 + cmp r1, #0 + beq _08153866 + ldr r0, [r5] + ldr r2, _08153874 + adds r0, r0, r2 + ldr r0, [r0] + cmp r1, r0 + beq _08153878 +_08153866: + movs r0, #0 + b _0815387A + .align 2, 0 +_0815386C: .4byte gUnknown_3005AEC +_08153870: .4byte 0x00003B18 +_08153874: .4byte 0x00003B14 +_08153878: + movs r0, #1 +_0815387A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08153834 + + thumb_func_start sub_08153880 +sub_08153880: @ 0x08153880 + push {lr} + sub sp, #4 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r0, _081538A0 + ldr r1, [r0] + ldr r0, _081538A4 + adds r1, r1, r0 + ldr r2, _081538A8 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081538A0: .4byte gUnknown_3005AEC +_081538A4: .4byte 0x00003B14 +_081538A8: .4byte 0x01000008 + thumb_func_end sub_08153880 + + thumb_func_start sub_081538AC +sub_081538AC: @ 0x081538AC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r5, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r6, r2, #0 + cmp r3, #0 + beq _081538CC + cmp r1, #0 + beq _081538CC + cmp r2, #0 + bne _081538D2 +_081538CC: + bl sub_08153880 + b _081538F8 +_081538D2: + ldr r4, _08153900 + ldr r0, [r4] + ldr r1, _08153904 + adds r0, r0, r1 + strb r3, [r0] + ldr r0, [r4] + ldr r2, _08153908 + adds r0, r0, r2 + strb r5, [r0] + ldr r0, [r4] + adds r1, #2 + adds r0, r0, r1 + strh r6, [r0] + bl sub_0815380C + ldr r1, [r4] + ldr r2, _0815390C + adds r1, r1, r2 + str r0, [r1] +_081538F8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08153900: .4byte gUnknown_3005AEC +_08153904: .4byte 0x00003B18 +_08153908: .4byte 0x00003B19 +_0815390C: .4byte 0x00003B14 + thumb_func_end sub_081538AC + + thumb_func_start sub_08153910 +sub_08153910: @ 0x08153910 + push {r4, r5, r6, lr} + ldr r6, _0815392C + ldr r0, [r6] + ldr r1, _08153930 + adds r4, r0, r1 + bl sub_08153834 + cmp r0, #0 + bne _08153934 + bl sub_08153880 + movs r0, #0 + b _08153956 + .align 2, 0 +_0815392C: .4byte gUnknown_3005AEC +_08153930: .4byte 0x00003B18 +_08153934: + ldrh r5, [r4, #2] + ldrb r0, [r4, #1] + subs r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08153948 + bl sub_08153880 + b _08153954 +_08153948: + bl sub_0815380C + ldr r1, [r6] + ldr r2, _0815395C + adds r1, r1, r2 + str r0, [r1] +_08153954: + adds r0, r5, #0 +_08153956: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0815395C: .4byte 0x00003B14 + thumb_func_end sub_08153910 + + thumb_func_start sub_08153960 +sub_08153960: @ 0x08153960 + push {lr} + bl sub_08098690 + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_08153960 + + thumb_func_start sub_0815396C +sub_0815396C: @ 0x0815396C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + bl sub_080987AC + str r0, [r7, #0x68] + adds r0, r7, #0 + bl sub_08098794 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r7, #0 + bl sub_080987AC + adds r6, r0, #0 + adds r0, r7, #0 + bl sub_08098794 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + bl sub_080987AC + adds r3, r0, #0 + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_08153708 + cmp r0, #1 + bne _081539B0 + str r0, [r7, #0x70] + b _081539B4 +_081539B0: + bl sub_08153740 +_081539B4: + movs r0, #1 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0815396C + + thumb_func_start sub_081539BC +sub_081539BC: @ 0x081539BC + movs r0, #0 + bx lr + thumb_func_end sub_081539BC + + thumb_func_start sub_081539C0 +sub_081539C0: @ 0x081539C0 + ldr r1, [r0, #8] + ldrb r2, [r1] + adds r1, #1 + str r1, [r0, #8] + str r2, [r0, #0x6c] + movs r0, #0 + bx lr + .align 2, 0 + thumb_func_end sub_081539C0 + + thumb_func_start sub_081539D0 +sub_081539D0: @ 0x081539D0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r5, [r0] + adds r0, #1 + str r0, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + ldr r1, [r4, #0x68] + subs r0, r0, r1 + ldr r1, [r4, #0x64] + adds r1, r0, r1 + cmp r5, #0xff + beq _081539F4 + ldr r0, [r4, #0x6c] + cmp r5, r0 + bne _081539FA +_081539F4: + ldr r0, _08153A04 + bl sub_08008BCC +_081539FA: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08153A04: .4byte gUnknown_2021C7C + thumb_func_end sub_081539D0 + + thumb_func_start sub_08153A08 +sub_08153A08: @ 0x08153A08 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + ldr r1, [r4, #0x68] + subs r0, r0, r1 + ldr r1, [r4, #0x64] + adds r0, r0, r1 + bl sub_080988D8 + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08153A08 + + thumb_func_start sub_08153A24 +sub_08153A24: @ 0x08153A24 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + bl sub_080E0B78 + mov r8, r0 + adds r0, r7, #0 + bl sub_080987AC + adds r4, r0, #0 + ldr r0, [r7, #0x68] + subs r4, r4, r0 + ldr r0, [r7, #0x64] + adds r4, r4, r0 + ldr r0, _08153A78 + mov sb, r0 + ldr r6, _08153A7C + ldr r1, [r6] + ldr r5, _08153A80 + adds r1, r1, r5 + movs r2, #7 + bl sub_080088F0 + adds r0, r4, #0 + bl sub_080E0B30 + ldr r4, _08153A84 + ldr r1, [r6] + adds r1, r1, r5 + adds r0, r4, #0 + movs r2, #7 + bl sub_080088F0 + mov r0, r8 + cmp r0, #0 + bne _08153A90 + ldr r0, _08153A88 + ldr r1, _08153A8C + b _08153AB0 + .align 2, 0 +_08153A78: .4byte gUnknown_2021C40 +_08153A7C: .4byte gUnknown_3005AEC +_08153A80: .4byte 0x000031F8 +_08153A84: .4byte gUnknown_2021C54 +_08153A88: .4byte gUnknown_2021C7C +_08153A8C: .4byte gUnknown_85FCAF8 +_08153A90: + mov r0, sb + adds r1, r4, #0 + bl sub_0800895C + cmp r0, #0 + beq _08153AAC + ldr r0, _08153AA4 + ldr r1, _08153AA8 + b _08153AB0 + .align 2, 0 +_08153AA4: .4byte gUnknown_2021C7C +_08153AA8: .4byte gUnknown_85FCB19 +_08153AAC: + ldr r0, _08153ACC + ldr r1, _08153AD0 +_08153AB0: + bl sub_08008BCC + movs r0, #2 + str r0, [r7, #0x6c] + bl sub_080E0B78 + cmp r0, #1 + bne _08153AD8 + ldr r0, _08153AD4 + movs r1, #1 + bl sub_0809CF88 + b _08153ADC + .align 2, 0 +_08153ACC: .4byte gUnknown_2021C7C +_08153AD0: .4byte gUnknown_85FCB2C +_08153AD4: .4byte 0x0000402D +_08153AD8: + movs r0, #1 + str r0, [r7, #0x6c] +_08153ADC: + movs r0, #0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08153A24 + + thumb_func_start sub_08153AEC +sub_08153AEC: @ 0x08153AEC + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #8] + ldrb r0, [r2] + adds r2, #1 + str r2, [r4, #8] + ldrb r1, [r2] + adds r2, #1 + str r2, [r4, #8] + bl sub_080FA3A0 + ldr r0, _08153B18 + ldr r1, _08153B1C + bl sub_08008BCC + movs r0, #2 + str r0, [r4, #0x6c] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08153B18: .4byte gUnknown_2021C7C +_08153B1C: .4byte gUnknown_85FCB3D + thumb_func_end sub_08153AEC + + thumb_func_start sub_08153B20 +sub_08153B20: @ 0x08153B20 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r4, r0, #0 + ldr r0, [r4, #8] + ldrb r1, [r0] + mov sb, r1 + adds r0, #1 + str r0, [r4, #8] + ldrb r1, [r0] + mov r8, r1 + adds r1, r0, #1 + str r1, [r4, #8] + ldrb r6, [r0, #1] + adds r1, #1 + str r1, [r4, #8] + adds r0, r4, #0 + bl sub_080987AC + adds r5, r0, #0 + ldr r0, [r4, #0x68] + subs r5, r5, r0 + ldr r0, [r4, #0x64] + adds r5, r5, r0 + adds r0, r4, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, [r4, #0x68] + subs r1, r1, r0 + ldr r0, [r4, #0x64] + adds r1, r1, r0 + subs r1, r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r6, [sp] + adds r0, r5, #0 + mov r2, sb + mov r3, r8 + bl sub_08098A84 + movs r0, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08153B20 + + thumb_func_start sub_08153B88 +sub_08153B88: @ 0x08153B88 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809CCC0 + ldr r0, _08153BA4 + ldr r1, _08153BA8 + bl sub_08008BCC + movs r0, #2 + str r0, [r4, #0x6c] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08153BA4: .4byte gUnknown_2021C7C +_08153BA8: .4byte gUnknown_85FCB59 + thumb_func_end sub_08153B88 + + thumb_func_start sub_08153BAC +sub_08153BAC: @ 0x08153BAC + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #8] + ldrb r0, [r1] + adds r1, #1 + str r1, [r4, #8] + bl sub_0811F4A0 + ldr r0, _08153BD0 + ldr r1, _08153BD4 + bl sub_08008BCC + movs r0, #2 + str r0, [r4, #0x6c] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08153BD0: .4byte gUnknown_2021C7C +_08153BD4: .4byte gUnknown_85FCB70 + thumb_func_end sub_08153BAC + + thumb_func_start sub_08153BD8 +sub_08153BD8: @ 0x08153BD8 + push {r4, r5, lr} + ldr r1, [r0, #8] + ldrb r5, [r1] + adds r1, #1 + str r1, [r0, #8] + ldrb r4, [r1] + adds r1, #1 + str r1, [r0, #8] + bl sub_08098794 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081538AC + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08153BD8 + + thumb_func_start sub_08153C04 +sub_08153C04: @ 0x08153C04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x88 + adds r6, r0, #0 + bl sub_080987AC + ldr r1, [r6, #0x68] + subs r0, r0, r1 + ldr r1, [r6, #0x64] + adds r5, r0, r1 + movs r0, #0x64 + adds r0, 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_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + bne _08153C54 + ldr r0, _08153C4C + ldr r1, _08153C50 + movs r2, #0xb + bl sub_080088F0 + b _08153C5E + .align 2, 0 +_08153C4C: .4byte gUnknown_2021C40 +_08153C50: .4byte gUnknown_85C8C62 +_08153C54: + ldr r0, _08153C74 + ldr r1, _08153C78 + movs r2, #0xb + bl sub_080088F0 +_08153C5E: + ldr r0, _08153C7C + ldrb r0, [r0] + cmp r0, #6 + bne _08153C88 + ldr r0, _08153C80 + ldr r1, _08153C84 + bl sub_08008BCC + movs r0, #3 + b _08153CF2 + .align 2, 0 +_08153C74: .4byte gUnknown_2021C40 +_08153C78: .4byte gUnknown_85C8C66 +_08153C7C: .4byte gUnknown_202418D +_08153C80: .4byte gUnknown_2021C7C +_08153C84: .4byte gUnknown_85FCB90 +_08153C88: + ldr r7, _08153D04 + 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, r0, #1 + cmp r4, r0 + beq _08153CC2 + adds r0, r4, #0 + bl sub_0806CF68 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #2 + bl sub_080BFBBC + adds r0, r4, #0 + movs r1, #3 + bl sub_080BFBBC +_08153CC2: + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08153CE0 + adds r0, r7, #0 + mov r1, sp + bl sub_080D3E90 +_08153CE0: + bl sub_080CE188 + bl sub_0806B004 + ldr r0, _08153D08 + ldr r1, _08153D0C + bl sub_08008BCC + movs r0, #2 +_08153CF2: + str r0, [r6, #0x6c] + movs r0, #0 + add sp, #0x88 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08153D04: .4byte gUnknown_2024384 +_08153D08: .4byte gUnknown_2021C7C +_08153D0C: .4byte gUnknown_85FCB83 + thumb_func_end sub_08153C04 + + thumb_func_start sub_08153D10 +sub_08153D10: @ 0x08153D10 + push {r4, lr} + adds r4, r0, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, [r4, #0x68] + subs r1, r1, r0 + ldr r0, [r4, #0x64] + adds r1, r1, r0 + ldr r0, _08153D48 + ldr r0, [r0] + ldr r2, _08153D4C + adds r0, r0, r2 + movs r2, #0xbc + bl memcpy + bl sub_08165130 + ldr r0, _08153D50 + ldr r1, _08153D54 + bl sub_08008BCC + movs r0, #2 + str r0, [r4, #0x6c] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08153D48: .4byte gUnknown_3005AF0 +_08153D4C: .4byte 0x00000BEC +_08153D50: .4byte gUnknown_2021C7C +_08153D54: .4byte gUnknown_85FCBAA + thumb_func_end sub_08153D10 + + thumb_func_start sub_08153D58 +sub_08153D58: @ 0x08153D58 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809CECC + ldr r0, _08153D74 + ldr r1, _08153D78 + bl sub_08008BCC + movs r0, #2 + str r0, [r4, #0x6c] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08153D74: .4byte gUnknown_2021C7C +_08153D78: .4byte gUnknown_85CBF86 + thumb_func_end sub_08153D58 + + thumb_func_start sub_08153D7C +sub_08153D7C: @ 0x08153D7C + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080987AC + adds r5, r0, #0 + adds r0, r6, #0 + bl sub_080987AC + adds r4, r0, #0 + ldr r0, [r6, #0x68] + subs r4, r4, r0 + ldr r0, [r6, #0x64] + adds r4, r4, r0 + adds r0, r6, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, [r6, #0x68] + subs r1, r1, r0 + ldr r0, [r6, #0x64] + adds r1, r1, r0 + subs r1, r1, r4 + adds r0, r4, #0 + bl sub_0806F3F0 + cmp r5, r0 + beq _08153DBA + movs r0, #0 + str r0, [r6, #0x70] + movs r0, #1 + str r0, [r6, #0x6c] +_08153DBA: + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08153D7C + + thumb_func_start sub_08153DC4 +sub_08153DC4: @ 0x08153DC4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_080987AC + adds r5, r0, #0 + adds r0, r6, #0 + bl sub_080987AC + adds r4, r0, #0 + ldr r0, [r6, #0x68] + subs r4, r4, r0 + ldr r0, [r6, #0x64] + adds r4, r4, r0 + adds r0, r6, #0 + bl sub_080987AC + adds r1, r0, #0 + ldr r0, [r6, #0x68] + subs r1, r1, r0 + ldr r0, [r6, #0x64] + adds r1, r1, r0 + subs r1, r1, r4 + adds r0, r4, #0 + bl sub_0806F354 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r5, r0 + beq _08153E06 + movs r0, #0 + str r0, [r6, #0x70] + movs r0, #1 + str r0, [r6, #0x6c] +_08153E06: + movs r0, #1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08153DC4 + + thumb_func_start sub_08153E10 +sub_08153E10: @ 0x08153E10 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x22 + ldrsh r2, [r4, r0] + adds r0, r4, #0 + movs r3, #0x98 + bl sub_0808E8C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08153EC0 + adds r7, r1, r0 + ldr r0, _08153EC4 + str r0, [r7, #0x1c] + ldrb r1, [r7, #5] + movs r0, #0xc + orrs r1, r0 + strb r1, [r7, #5] + ldr r2, _08153EC8 + lsrs r0, r1, #4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #4 + movs r2, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #5] + movs r1, #0x3f + adds r1, r1, r7 + mov r8, r1 + ldrb r0, [r1] + movs r1, #0x40 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + ldr r0, _08153ECC + str r0, [r7, #8] + adds r0, r7, #0 + movs r1, #0 + bl sub_08007EC0 + ldr r0, _08153ED0 + str r0, [r7, #0x10] + mov r1, r8 + ldrb r0, [r1] + movs r1, #8 + 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, #8] + strh r0, [r7, #0x30] + strh r5, [r7, #0x3c] + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08153EE8 + cmp r5, #0 + bne _08153EB6 + ldrb r0, [r7, #1] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r7, #1] +_08153EB6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08153EC0: .4byte gUnknown_20205AC +_08153EC4: .4byte sub_08153FE4 +_08153EC8: .4byte gUnknown_846FA18 +_08153ECC: .4byte gUnknown_82BF304 +_08153ED0: .4byte gUnknown_82BF310 + thumb_func_end sub_08153E10 + + thumb_func_start sub_08153ED4 +sub_08153ED4: @ 0x08153ED4 + push {lr} + ldrb r0, [r0, #5] + bl sub_0808E004 + ldrh r0, [r0, #0xa] + subs r0, #2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08153ED4 + + thumb_func_start sub_08153EE8 +sub_08153EE8: @ 0x08153EE8 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, _08153F40 + mov r0, sp + movs r2, #6 + bl memcpy + movs r0, #0 + strh r0, [r4, #0x32] + ldrb r0, [r5, #5] + bl sub_0808E004 + ldrb r1, [r0, #0xc] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08153F44 + ldrb r0, [r5, #0x1f] + bl sub_08088E38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08153F2A + ldrb r0, [r5, #0x1e] + bl sub_08088E38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08153F44 +_08153F2A: + subs r0, #1 + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x32] + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + adds r0, r5, #0 + bl sub_08153FB4 + b _08153F4E + .align 2, 0 +_08153F40: .4byte gUnknown_85ACA40 +_08153F44: + ldrb r1, [r4, #5] + lsrs r1, r1, #4 + adds r0, r5, #0 + bl sub_08153F58 +_08153F4E: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08153EE8 + + thumb_func_start sub_08153F58 +sub_08153F58: @ 0x08153F58 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldrb r0, [r0, #5] + bl sub_0808E004 + adds r2, r0, #0 + ldrh r1, [r2, #4] + ldr r0, _08153F84 + cmp r1, r0 + beq _08153FAC + ldrb r0, [r2, #0xc] + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + bne _08153F88 + ldrh r0, [r2, #2] + adds r1, r4, #0 + bl sub_0808E338 + b _08153FA6 + .align 2, 0 +_08153F84: .4byte 0x000011FF +_08153F88: + cmp r1, #0xa + bne _08153F96 + ldrh r0, [r2, #2] + adds r1, r4, #0 + bl sub_0808E3A8 + b _08153FA6 +_08153F96: + adds r0, r4, #0 + bl sub_0808ECD0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0808E28C +_08153FA6: + adds r0, r4, #0 + bl sub_080AB714 +_08153FAC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08153F58 + + thumb_func_start sub_08153FB4 +sub_08153FB4: @ 0x08153FB4 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldrb r0, [r0, #5] + bl sub_0808E004 + adds r2, r0, #0 + ldrh r1, [r2, #4] + ldr r0, _08153FE0 + cmp r1, r0 + beq _08153FD8 + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0808E28C + adds r0, r4, #0 + bl sub_080AB714 +_08153FD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08153FE0: .4byte 0x000011FF + thumb_func_end sub_08153FB4 + + thumb_func_start sub_08153FE4 +sub_08153FE4: @ 0x08153FE4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0815402C + adds r7, r0, r1 + ldrb r1, [r7, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154030 + adds r5, r0, r1 + ldr r0, [r7] + ldr r1, _08154034 + ands r0, r1 + cmp r0, r1 + bne _0815401C + ldrb r1, [r7, #8] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _08154038 +_0815401C: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _08154150 + .align 2, 0 +_0815402C: .4byte gUnknown_2036FF0 +_08154030: .4byte gUnknown_20205AC +_08154034: .4byte 0x00020001 +_08154038: + ldr r1, _0815415C + ldrb r0, [r5, #5] + lsrs r0, r0, #4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #4 + ldrb r2, [r4, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + ldrb r1, [r5, #1] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #1] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r5, #3] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #3] + adds r1, r3, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #3] + ldrb r0, [r5, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + movs r2, #0x10 + orrs r0, r2 + lsls r0, r0, #1 + subs r2, #0x4f + mov sb, r2 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #3] + ldrh r1, [r5, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldrh r2, [r4, #4] + ldr r0, _08154160 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + ldr r0, [r5, #0x18] + str r0, [r4, #0x18] + adds r0, r5, #0 + adds r0, #0x42 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + adds r2, r4, #0 + adds r2, #0x42 + ands r3, r0 + ldrb r1, [r2] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + movs r0, #0x3e + adds r0, r0, r5 + mov r8, r0 + ldrb r0, [r0] + adds r6, r4, #0 + adds r6, #0x3e + movs r1, #4 + ands r1, r0 + ldrb r2, [r6] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6] + ldrh r0, [r5, #0x20] + strh r0, [r4, #0x20] + adds r0, r7, #0 + bl sub_08153ED4 + ldrh r1, [r5, #0x22] + adds r0, r0, r1 + ldrh r1, [r4, #0x32] + adds r1, 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] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + mov r2, r8 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + ldrb r1, [r6] + movs r2, #3 + rsbs r2, r2, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r6] + ldrb r0, [r7, #3] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _0815412A + movs r0, #4 + orrs r2, r0 + strb r2, [r6] +_0815412A: + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08154150 + ldrb r0, [r4, #3] + mov r2, sb + ands r2, r0 + strb r2, [r4, #3] + ldrb r0, [r5, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08154150 + movs r1, #2 + adds r0, r2, #0 + orrs r0, r1 + strb r0, [r4, #3] +_08154150: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815415C: .4byte gUnknown_846FA18 +_08154160: .4byte 0xFFFFFC00 + thumb_func_end sub_08153FE4 + + thumb_func_start sub_08154164 +sub_08154164: @ 0x08154164 + push {r4, lr} + ldr r0, _081541AC + ldr r0, [r0, #0x20] + movs r1, #0 + movs r2, #0 + movs r3, #0x52 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r0, #0x40 + beq _081541A2 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081541B0 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r3, #4 + orrs r0, r3 + strb r0, [r1, #5] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + orrs r0, r3 + strb r0, [r1] +_081541A2: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081541AC: .4byte gUnknown_84DDE4C +_081541B0: .4byte gUnknown_20205AC + thumb_func_end sub_08154164 + + thumb_func_start sub_081541B4 +sub_081541B4: @ 0x081541B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081541D0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081541D0: .4byte gUnknown_20205AC + thumb_func_end sub_081541B4 + + thumb_func_start sub_081541D4 +sub_081541D4: @ 0x081541D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r6, r3, #0x10 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _08154278 + adds r2, r0, r1 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0815421E + movs r0, #0x2e + ldrsh r1, [r2, r0] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _0815421E + movs r0, #0x30 + ldrsh r1, [r2, r0] + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + beq _0815426A +_0815421E: + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + mov r4, sp + adds r4, #2 + mov r2, sp + adds r3, r4, #0 + bl sub_080929A8 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _08154278 + adds r2, r0, r1 + mov r0, sp + ldrh r0, [r0] + adds r0, #8 + strh r0, [r2, #0x20] + ldrh r0, [r4] + adds r0, #8 + strh r0, [r2, #0x22] + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + strh r7, [r2, #0x2e] + strh r6, [r2, #0x30] + mov r1, r8 + subs r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_08007EC0 +_0815426A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08154278: .4byte gUnknown_20205AC + thumb_func_end sub_081541D4 + + thumb_func_start sub_0815427C +sub_0815427C: @ 0x0815427C + push {r4, r5, lr} + ldr r5, _08154308 + ldrb r0, [r5] + ldrb r1, [r5, #4] + ldrb r2, [r5, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815430C + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #5] + bl sub_0808E004 + adds r4, r0, #0 + ldr r2, _08154310 + ldr r1, _08154314 + ldrb r0, [r4, #0xc] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + movs r1, #0 + movs r2, #0 + movs r3, #0x94 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08154300 + ldr r0, _08154318 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + ldr r0, [r5] + strh r0, [r2, #0x2e] + ldr r0, [r5, #4] + strh r0, [r2, #0x30] + ldr r0, [r5, #8] + strh r0, [r2, #0x32] + ldrh r1, [r4, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + ldr r3, _0815431C + ldrb r0, [r4, #0xc] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r2, #0x34] +_08154300: + movs r0, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08154308: .4byte gUnknown_20388A8 +_0815430C: .4byte gUnknown_2036FF0 +_08154310: .4byte gUnknown_84DDE4C +_08154314: .4byte gUnknown_85ACA46 +_08154318: .4byte gUnknown_20205AC +_0815431C: .4byte gUnknown_85ACA4A + thumb_func_end sub_0815427C + + thumb_func_start sub_08154320 +sub_08154320: @ 0x08154320 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r5, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815434E + adds r0, r5, #0 + movs r1, #3 + bl sub_080B5444 + b _081543D4 +_0815434E: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081543DC + adds r4, r0, r1 + ldrb r0, [r4, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081543E0 + adds r1, r1, r0 + ldrb r0, [r1, #5] + movs r2, #0xc + ands r2, r0 + ldrb r3, [r5, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #5] + ldrh r0, [r1, #0x20] + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x34] + ldrh r1, [r1, #0x22] + adds r0, r0, r1 + strh r0, [r5, #0x22] + ldr r0, [r4] + ldr r1, _081543E4 + ands r0, r1 + cmp r0, r1 + bne _081543CC + ldrb r0, [r4, #0x1e] + bl sub_080887C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081543CC + ldrb r0, [r4, #0x1e] + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081543CC + ldrb r0, [r4, #0x1f] + bl sub_080888EC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081543CC + ldrb r0, [r4, #0x1e] + bl sub_08088810 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081543CC + ldrb r0, [r4, #0x1f] + bl sub_08088810 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081543D4 +_081543CC: + adds r0, r5, #0 + movs r1, #3 + bl sub_080B5444 +_081543D4: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081543DC: .4byte gUnknown_2036FF0 +_081543E0: .4byte gUnknown_20205AC +_081543E4: .4byte 0x00400001 + thumb_func_end sub_08154320 + + thumb_func_start sub_081543E8 +sub_081543E8: @ 0x081543E8 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _08154480 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, #4] + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r0, sp + adds r1, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154484 + 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_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08154474 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154488 + adds r3, r0, r1 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + movs r0, #3 + ldrb r1, [r5, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #5] + ldr r0, [r5, #8] + strh r0, [r3, #0x2e] + ldr r0, [r5] + strh r0, [r3, #0x30] + ldr r0, [r5, #4] + 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 _08154474 + adds r0, r3, #0 + movs r1, #4 + bl sub_08007EF4 +_08154474: + movs r0, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08154480: .4byte gUnknown_20388A8 +_08154484: .4byte gUnknown_84DDE4C +_08154488: .4byte gUnknown_20205AC + thumb_func_end sub_081543E8 + + thumb_func_start sub_0815448C +sub_0815448C: @ 0x0815448C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + ldrh r0, [r5, #0x38] + lsrs r4, r0, #8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r3, _08154538 + ldrb r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081544D8 + ldr r0, _0815453C + ldr r2, [r0] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r0, r4 + bne _081544BE + movs r0, #4 + ldrsb r0, [r2, r0] + cmp r0, r7 + beq _081544D8 +_081544BE: + ldr r1, [r3, #4] + ldrh r0, [r5, #0x30] + subs r0, r0, r1 + strh r0, [r5, #0x30] + ldr r1, [r3, #8] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r1, [r2, #5] + lsls r1, r1, #8 + ldrb r0, [r2, #4] + orrs r0, r1 + strh r0, [r5, #0x38] +_081544D8: + ldrh r0, [r5, #0x34] + lsrs r1, r0, #8 + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrh r0, [r5, #0x36] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r2, #0x30 + ldrsh r0, [r5, r2] + movs r2, #0x32 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r0, r8 + adds r1, r4, #0 + adds r2, r7, #0 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815452C + adds r0, r6, #0 + bl sub_08088DAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815452C + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08154540 + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08154540 +_0815452C: + adds r0, r5, #0 + movs r1, #4 + bl sub_080B5444 + b _08154584 + .align 2, 0 +_08154538: .4byte gUnknown_2036FD4 +_0815453C: .4byte gUnknown_3005AEC +_08154540: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154590 + adds r2, r0, r1 + ldr r0, [r2, #0x10] + ldr r1, [r5, #0x30] + cmp r0, r1 + beq _08154560 + ldr r0, [r2, #0x14] + cmp r0, r1 + beq _08154560 + movs r0, #1 + strh r0, [r5, #0x3c] +_08154560: + movs r6, #0 + adds r0, r5, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + bne _0815456E + movs r6, #4 +_0815456E: + adds r0, r5, #0 + movs r1, #0 + bl sub_08097344 + ldrh r1, [r5, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_08156138 +_08154584: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08154590: .4byte gUnknown_2036FF0 + thumb_func_end sub_0815448C + + thumb_func_start sub_08154594 +sub_08154594: @ 0x08154594 + push {r4, lr} + ldr r4, _081545F8 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #0xc + bl sub_08092A50 + ldr r0, _081545FC + ldr r0, [r0, #0x28] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _081545F0 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08154600 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r4, #8] + strh r0, [r2, #0x2e] + movs r0, #0xc + strh r0, [r2, #0x30] +_081545F0: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081545F8: .4byte gUnknown_20388A8 +_081545FC: .4byte gUnknown_84DDE4C +_08154600: .4byte gUnknown_20205AC + thumb_func_end sub_08154594 + + thumb_func_start sub_08154604 +sub_08154604: @ 0x08154604 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r5, #0 + ldr r0, _08154674 + mov r8, r0 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 +_08154628: + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + mov r1, r8 + adds r2, r0, r1 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _0815467C + ldr r1, [r2, #0x1c] + ldr r0, _08154678 + cmp r1, r0 + bne _0815467C + movs r1, #0x30 + ldrsh r0, [r2, r1] + cmp r3, r0 + bne _0815467C + movs r1, #0x32 + ldrsh r0, [r2, r1] + cmp r4, r0 + bne _0815467C + ldrh r1, [r2, #0x34] + lsrs r0, r1, #8 + cmp ip, r0 + bne _0815467C + movs r0, #0xff + ands r0, r1 + cmp r7, r0 + bne _0815467C + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r6, r0 + bne _0815467C + adds r0, r5, #0 + b _08154688 + .align 2, 0 +_08154674: .4byte gUnknown_20205AC +_08154678: .4byte sub_0815448C +_0815467C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x3f + bls _08154628 + movs r0, #0x40 +_08154688: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08154604 + + thumb_func_start sub_08154694 +sub_08154694: @ 0x08154694 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _08154730 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, #4] + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r0, sp + adds r1, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154734 + 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_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08154724 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154738 + adds r4, r0, r1 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #8] + bl sub_08096718 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + ldr r0, [r5, #8] + strh r0, [r4, #0x2e] + ldr r0, [r5] + strh r0, [r4, #0x30] + ldr r0, [r5, #4] + 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 _08154724 + adds r0, r4, #0 + movs r1, #6 + bl sub_08007EF4 +_08154724: + movs r0, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08154730: .4byte gUnknown_20388A8 +_08154734: .4byte gUnknown_84DDE4C +_08154738: .4byte gUnknown_20205AC + thumb_func_end sub_08154694 + + thumb_func_start sub_0815473C +sub_0815473C: @ 0x0815473C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + ldrh r0, [r5, #0x38] + lsrs r7, r0, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _081547E8 + ldrb r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08154788 + ldr r0, _081547EC + ldr r2, [r0] + movs r0, #5 + ldrsb r0, [r2, r0] + cmp r0, r7 + bne _0815476E + movs r0, #4 + ldrsb r0, [r2, r0] + cmp r0, r6 + beq _08154788 +_0815476E: + ldr r1, [r3, #4] + ldrh r0, [r5, #0x30] + subs r0, r0, r1 + strh r0, [r5, #0x30] + ldr r1, [r3, #8] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r1, [r2, #5] + lsls r1, r1, #8 + ldrb r0, [r2, #4] + orrs r0, r1 + strh r0, [r5, #0x38] +_08154788: + ldrh r0, [r5, #0x34] + lsrs r1, r0, #8 + mov r8, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r5, #0x36] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r2, #0x30 + ldrsh r0, [r5, r2] + movs r2, #0x32 + ldrsh r1, [r5, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r0, r8 + adds r1, r7, #0 + adds r2, r6, #0 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081547DC + adds r0, r4, #0 + bl sub_08088DC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081547DC + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _081547F0 + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081547F0 +_081547DC: + adds r0, r5, #0 + movs r1, #0x11 + bl sub_080B5444 + b _08154826 + .align 2, 0 +_081547E8: .4byte gUnknown_2036FD4 +_081547EC: .4byte gUnknown_3005AEC +_081547F0: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154834 + adds r2, r0, r1 + ldr r0, [r2, #0x10] + ldr r1, [r5, #0x30] + cmp r0, r1 + beq _08154810 + ldr r0, [r2, #0x14] + cmp r0, r1 + beq _08154810 + movs r0, #1 + strh r0, [r5, #0x3c] +_08154810: + adds r0, r5, #0 + movs r1, #0 + bl sub_08097344 + ldrh r1, [r5, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + movs r2, #0 + bl sub_08156138 +_08154826: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08154834: .4byte gUnknown_2036FF0 + thumb_func_end sub_0815473C + + thumb_func_start sub_08154838 +sub_08154838: @ 0x08154838 + push {r4, lr} + ldr r4, _0815489C + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _081548A0 + ldr r0, [r0, #0x40] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08154894 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _081548A4 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r4, #8] + strh r0, [r2, #0x2e] + movs r0, #0x12 + strh r0, [r2, #0x30] +_08154894: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0815489C: .4byte gUnknown_20388A8 +_081548A0: .4byte gUnknown_84DDE4C +_081548A4: .4byte gUnknown_20205AC + thumb_func_end sub_08154838 + + thumb_func_start sub_081548A8 +sub_081548A8: @ 0x081548A8 + push {r4, r5, r6, lr} + ldr r6, _0815493C + ldrb r0, [r6] + ldrb r1, [r6, #4] + ldrb r2, [r6, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08154940 + adds r5, r1, r0 + ldr r0, _08154944 + ldr r0, [r0, #0x78] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08154934 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r4, _08154948 + adds r2, r2, r4 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + movs r1, #0xc + ands r1, r0 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r6] + strh r0, [r2, #0x2e] + ldr r0, [r6, #4] + strh r0, [r2, #0x30] + ldr r0, [r6, #8] + strh r0, [r2, #0x32] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x20] + strh r0, [r2, #0x34] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x22] + strh r0, [r2, #0x36] +_08154934: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0815493C: .4byte gUnknown_20388A8 +_08154940: .4byte gUnknown_2036FF0 +_08154944: .4byte gUnknown_84DDE4C +_08154948: .4byte gUnknown_20205AC + thumb_func_end sub_081548A8 + + thumb_func_start sub_0815494C +sub_0815494C: @ 0x0815494C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815498A + ldr r5, _08154994 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _08154998 +_0815498A: + adds r0, r4, #0 + movs r1, #0x29 + bl sub_080B5444 + b _08154A2E + .align 2, 0 +_08154994: .4byte gUnknown_2036FF0 +_08154998: + ldrb r0, [r1, #5] + bl sub_0808E004 + mov r8, r0 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154A3C + 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 _081549D4 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _081549EE +_081549D4: + 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 _081549EE + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 +_081549EE: + strh r7, [r4, #0x20] + strh r5, [r4, #0x22] + mov r1, r8 + ldrh r0, [r1, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + subs r0, #8 + strh r0, [r4, #0x26] + adds r0, r6, #0 + adds r0, #0x43 + ldrb r0, [r0] + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + ldrb r0, [r6, #5] + movs r1, #0xc + ands r1, r0 + ldrb r2, [r4, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + adds r0, r6, #0 + adds r0, #0x3e + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + adds r0, r4, #0 + bl sub_08097344 +_08154A2E: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08154A3C: .4byte gUnknown_20205AC + thumb_func_end sub_0815494C + + thumb_func_start sub_08154A40 +sub_08154A40: @ 0x08154A40 + push {r4, lr} + ldr r4, _08154AA8 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154AAC + ldr r0, [r0, #0x2c] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08154A9E + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154AB0 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + movs r1, #3 + ldrb r2, [r4, #0xc] + ands r2, r1 + lsls r2, r2, #2 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #0xd + strh r1, [r0, #0x3c] + ldrb r1, [r4, #0x10] + bl sub_08007EC0 +_08154A9E: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08154AA8: .4byte gUnknown_20388A8 +_08154AAC: .4byte gUnknown_84DDE4C +_08154AB0: .4byte gUnknown_20205AC + thumb_func_end sub_08154A40 + + thumb_func_start sub_08154AB4 +sub_08154AB4: @ 0x08154AB4 + push {r4, r5, lr} + ldr r4, _08154B1C + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154B20 + ldr r0, [r0, #0x5c] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r5, r1, #0 + cmp r1, #0x40 + beq _08154B14 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154B24 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + movs r1, #3 + ldrb r2, [r4, #0xc] + ands r2, r1 + lsls r2, r2, #2 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #0x18 + strh r1, [r0, #0x3c] + ldrb r1, [r4, #0x10] + bl sub_08007EC0 +_08154B14: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08154B1C: .4byte gUnknown_20388A8 +_08154B20: .4byte gUnknown_84DDE4C +_08154B24: .4byte gUnknown_20205AC + thumb_func_end sub_08154AB4 + + thumb_func_start sub_08154B28 +sub_08154B28: @ 0x08154B28 + push {r4, r5, lr} + ldr r4, _08154B90 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154B94 + ldr r0, [r0, #0x6c] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r5, r1, #0 + cmp r1, #0x40 + beq _08154B88 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154B98 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + movs r1, #3 + ldrb r2, [r4, #0xc] + ands r2, r1 + lsls r2, r2, #2 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #0x23 + strh r1, [r0, #0x3c] + ldrb r1, [r4, #0x10] + bl sub_08007EC0 +_08154B88: + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08154B90: .4byte gUnknown_20388A8 +_08154B94: .4byte gUnknown_84DDE4C +_08154B98: .4byte gUnknown_20205AC + thumb_func_end sub_08154B28 + + thumb_func_start sub_08154B9C +sub_08154B9C: @ 0x08154B9C + push {lr} + ldr r2, _08154BB4 + movs r3, #0x2e + ldrsh r1, [r0, r3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_08154BB4: .4byte gUnknown_85ACA54 + thumb_func_end sub_08154B9C + + thumb_func_start sub_08154BB8 +sub_08154BB8: @ 0x08154BB8 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + ble _08154BCE + movs r0, #1 + strh r0, [r1, #0x2e] +_08154BCE: + adds r0, r1, #0 + movs r1, #0 + bl sub_08097344 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08154BB8 + + thumb_func_start sub_08154BDC +sub_08154BDC: @ 0x08154BDC + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + ldrb r1, [r3] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + adds r0, r4, #0 + bl sub_08097344 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x38 + ble _08154C20 + ldrh r1, [r4, #0x3c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080B5444 +_08154C20: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08154BDC + + thumb_func_start sub_08154C28 +sub_08154C28: @ 0x08154C28 + push {r4, r5, r6, lr} + ldr r6, _08154CBC + ldrb r0, [r6] + ldrb r1, [r6, #4] + ldrb r2, [r6, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08154CC0 + adds r5, r1, r0 + ldr r0, _08154CC4 + ldr r0, [r0, #0x34] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + beq _08154CB2 + ldrb r0, [r5, #5] + bl sub_0808E004 + lsls r3, r4, #4 + adds r3, r3, r4 + lsls r3, r3, #2 + ldr r4, _08154CC8 + adds r3, r3, r4 + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + ldrb r1, [r1] + movs r2, #2 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + ldrb r2, [r5, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #5] + movs r2, #0xc + ands r2, r1 + ldrb r4, [r3, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r4 + orrs r1, r2 + strb r1, [r3, #5] + ldr r1, [r6] + strh r1, [r3, #0x2e] + ldr r1, [r6, #4] + strh r1, [r3, #0x30] + ldr r1, [r6, #8] + strh r1, [r3, #0x32] + ldrh r0, [r0, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + subs r0, #4 + strh r0, [r3, #0x26] + movs r0, #0x46 + bl sub_080A306C +_08154CB2: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08154CBC: .4byte gUnknown_20388A8 +_08154CC0: .4byte gUnknown_2036FF0 +_08154CC4: .4byte gUnknown_84DDE4C +_08154CC8: .4byte gUnknown_20205AC + thumb_func_end sub_08154C28 + + thumb_func_start sub_08154CCC +sub_08154CCC: @ 0x08154CCC + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08154CFC + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08154D06 +_08154CFC: + adds r0, r4, #0 + movs r1, #0xf + bl sub_080B5444 + b _08154D46 +_08154D06: + ldr r3, _08154D50 + ldr r2, _08154D54 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x20] + strh r0, [r4, #0x20] + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #0 + bl sub_08097344 +_08154D46: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08154D50: .4byte gUnknown_20205AC +_08154D54: .4byte gUnknown_2036FF0 + thumb_func_end sub_08154CCC + + thumb_func_start sub_08154D58 +sub_08154D58: @ 0x08154D58 + push {r4, lr} + ldr r4, _08154DBC + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #0xc + bl sub_08092A50 + ldr r0, _08154DC0 + ldr r0, [r0, #0x38] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08154DB4 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08154DC4 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r4, #8] + strh r0, [r2, #0x2e] + movs r0, #0x10 + strh r0, [r2, #0x30] +_08154DB4: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08154DBC: .4byte gUnknown_20388A8 +_08154DC0: .4byte gUnknown_84DDE4C +_08154DC4: .4byte gUnknown_20205AC + thumb_func_end sub_08154D58 + + thumb_func_start sub_08154DC8 +sub_08154DC8: @ 0x08154DC8 + push {r4, lr} + ldr r4, _08154E2C + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08154E30 + ldr r0, [r0, #0x30] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08154E24 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08154E34 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r4, #8] + strh r0, [r2, #0x2e] + movs r0, #0xe + strh r0, [r2, #0x30] +_08154E24: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08154E2C: .4byte gUnknown_20388A8 +_08154E30: .4byte gUnknown_84DDE4C +_08154E34: .4byte gUnknown_20205AC + thumb_func_end sub_08154DC8 + + thumb_func_start sub_08154E38 +sub_08154E38: @ 0x08154E38 + push {r4, r5, r6, r7, lr} + ldr r7, _08154ED8 + ldrb r0, [r7] + ldrb r1, [r7, #4] + ldrb r2, [r7, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08154EDC + adds r6, r1, r0 + ldr r0, _08154EE0 + ldr r0, [r0, #0x34] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x40 + beq _08154ECE + ldrb r0, [r6, #5] + bl sub_0808E004 + adds r4, r0, #0 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r3, _08154EE4 + adds r0, r0, r3 + ldr r1, _08154EE8 + str r1, [r0, #0x1c] + adds r5, r0, #0 + adds r5, #0x3e + ldrb r1, [r5] + movs r2, #2 + orrs r1, r2 + strb r1, [r5] + ldrb r2, [r6, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r1, [r1, #5] + movs r2, #0xc + ands r2, r1 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + ldr r1, [r7] + strh r1, [r0, #0x2e] + ldr r1, [r7, #4] + strh r1, [r0, #0x30] + ldr r1, [r7, #8] + strh r1, [r0, #0x32] + ldr r1, _08154EEC + strh r1, [r0, #0x34] + movs r1, #1 + rsbs r1, r1, #0 + strh r1, [r0, #0x36] + ldrh r1, [r4, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + subs r1, #4 + strh r1, [r0, #0x26] + movs r1, #1 + bl sub_08007EC0 +_08154ECE: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08154ED8: .4byte gUnknown_20388A8 +_08154EDC: .4byte gUnknown_2036FF0 +_08154EE0: .4byte gUnknown_84DDE4C +_08154EE4: .4byte gUnknown_20205AC +_08154EE8: .4byte sub_08154EF0 +_08154EEC: .4byte 0x0000FFFF + thumb_func_end sub_08154E38 + + thumb_func_start sub_08154EF0 +sub_08154EF0: @ 0x08154EF0 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08154F2A + ldr r2, _08154F34 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r2 + ldrb r0, [r5, #2] + lsls r0, r0, #0x1c + cmp r0, #0 + blt _08154F38 +_08154F2A: + adds r0, r4, #0 + movs r1, #0x22 + bl sub_080B5444 + b _08154F82 + .align 2, 0 +_08154F34: .4byte gUnknown_2036FF0 +_08154F38: + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08154F8C + adds r0, 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_08097344 + ldr r1, [r5, #0x10] + ldr r0, [r4, #0x34] + cmp r1, r0 + beq _08154F82 + 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, #4 + ands r0, r1 + cmp r0, #0 + bne _08154F82 + movs r0, #0x46 + bl sub_080A306C +_08154F82: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08154F8C: .4byte gUnknown_20205AC + thumb_func_end sub_08154EF0 + + thumb_func_start sub_08154F90 +sub_08154F90: @ 0x08154F90 + push {r4, lr} + ldr r0, _08154FE4 + ldr r0, [r0, #0x14] + ldr r4, _08154FE8 + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08154FDC + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08154FEC + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #5 + strh r0, [r2, #0x2e] +_08154FDC: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08154FE4: .4byte gUnknown_84DDE4C +_08154FE8: .4byte gUnknown_20388A8 +_08154FEC: .4byte gUnknown_20205AC + thumb_func_end sub_08154F90 + + thumb_func_start sub_08154FF0 +sub_08154FF0: @ 0x08154FF0 + push {r4, r5, r6, lr} + ldr r6, _08155084 + ldrb r0, [r6] + ldrb r1, [r6, #4] + ldrb r2, [r6, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08155088 + adds r5, r1, r0 + ldr r0, _0815508C + ldr r0, [r0, #0x7c] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0815507C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r4, _08155090 + adds r2, r2, r4 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + movs r1, #0xc + ands r1, r0 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r6] + strh r0, [r2, #0x2e] + ldr r0, [r6, #4] + strh r0, [r2, #0x30] + ldr r0, [r6, #8] + strh r0, [r2, #0x32] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x20] + strh r0, [r2, #0x34] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x22] + strh r0, [r2, #0x36] +_0815507C: + movs r0, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08155084: .4byte gUnknown_20388A8 +_08155088: .4byte gUnknown_2036FF0 +_0815508C: .4byte gUnknown_84DDE4C +_08155090: .4byte gUnknown_20205AC + thumb_func_end sub_08154FF0 + + thumb_func_start sub_08155094 +sub_08155094: @ 0x08155094 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081550CE + ldr r5, _081550D8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1a + cmp r0, #0 + blt _081550DC +_081550CE: + adds r0, r4, #0 + movs r1, #0x2a + bl sub_080B5444 + b _08155120 + .align 2, 0 +_081550D8: .4byte gUnknown_2036FF0 +_081550DC: + ldrb r0, [r1, #5] + bl sub_0808E004 + mov r1, sp + ldrb r2, [r1] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, _08155128 + adds r1, r1, r2 + ldrh r2, [r1, #0x20] + strh r2, [r4, #0x20] + ldrh r0, [r0, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + ldrh r2, [r1, #0x22] + adds r0, r0, r2 + subs r0, #8 + strh r0, [r4, #0x22] + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08097344 +_08155120: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08155128: .4byte gUnknown_20205AC + thumb_func_end sub_08155094 + + thumb_func_start sub_0815512C +sub_0815512C: @ 0x0815512C + push {r4, lr} + ldr r4, _0815518C + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08155190 + ldr r0, [r0, #0x44] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155184 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155194 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #0x13 + strh r0, [r2, #0x2e] +_08155184: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0815518C: .4byte gUnknown_20388A8 +_08155190: .4byte gUnknown_84DDE4C +_08155194: .4byte gUnknown_20205AC + thumb_func_end sub_0815512C + + thumb_func_start sub_08155198 +sub_08155198: @ 0x08155198 + push {r4, lr} + ldr r4, _081551F8 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _081551FC + ldr r0, [r0, #0x48] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _081551F0 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155200 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #0x14 + strh r0, [r2, #0x2e] +_081551F0: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081551F8: .4byte gUnknown_20388A8 +_081551FC: .4byte gUnknown_84DDE4C +_08155200: .4byte gUnknown_20205AC + thumb_func_end sub_08155198 + + thumb_func_start sub_08155204 +sub_08155204: @ 0x08155204 + push {r4, lr} + ldr r4, _08155264 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08155268 + ldr r0, [r0, #0x4c] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0815525C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _0815526C + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #0x15 + strh r0, [r2, #0x2e] +_0815525C: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155264: .4byte gUnknown_20388A8 +_08155268: .4byte gUnknown_84DDE4C +_0815526C: .4byte gUnknown_20205AC + thumb_func_end sub_08155204 + + thumb_func_start sub_08155270 +sub_08155270: @ 0x08155270 + push {r4, lr} + ldr r4, _081552D0 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _081552D4 + ldr r0, [r0, #0x50] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _081552C8 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _081552D8 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #0x16 + strh r0, [r2, #0x2e] +_081552C8: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081552D0: .4byte gUnknown_20388A8 +_081552D4: .4byte gUnknown_84DDE4C +_081552D8: .4byte gUnknown_20205AC + thumb_func_end sub_08155270 + + thumb_func_start sub_081552DC +sub_081552DC: @ 0x081552DC + push {r4, lr} + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r4, _0815530C + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + str r1, [r4, #4] + movs r0, #0x52 + str r0, [r4, #8] + movs r0, #1 + str r0, [r4, #0xc] + str r2, [r4, #0x10] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + str r3, [r4, #0x14] + movs r0, #7 + bl sub_080B5270 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815530C: .4byte gUnknown_20388A8 + thumb_func_end sub_081552DC + + thumb_func_start sub_08155310 +sub_08155310: @ 0x08155310 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _08155390 + ldrh r1, [r5] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, #4] + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r0, sp + adds r1, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08155394 + ldr r0, [r0, #0x18] + mov r1, sp + movs r2, #0 + ldrsh r1, [r1, r2] + movs r3, #0 + ldrsh r2, [r4, r3] + ldrb r3, [r5, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155386 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155398 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r5, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r5] + strh r0, [r2, #0x30] + ldr r0, [r5, #4] + strh r0, [r2, #0x32] + ldr r0, [r5, #0x10] + strh r0, [r2, #0x34] + ldr r0, [r5, #0x14] + strh r0, [r2, #0x36] +_08155386: + movs r0, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08155390: .4byte gUnknown_20388A8 +_08155394: .4byte gUnknown_84DDE4C +_08155398: .4byte gUnknown_20205AC + thumb_func_end sub_08155310 + + thumb_func_start sub_0815539C +sub_0815539C: @ 0x0815539C + push {lr} + ldr r2, _081553B4 + movs r3, #0x2e + ldrsh r1, [r0, r3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_081553B4: .4byte gUnknown_85ACA5C + thumb_func_end sub_0815539C + + thumb_func_start sub_081553B8 +sub_081553B8: @ 0x081553B8 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + 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, #1 + strh r0, [r3, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081553E2 + movs r0, #1 + strh r0, [r3, #0x2e] +_081553E2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081553B8 + + thumb_func_start sub_081553E8 +sub_081553E8: @ 0x081553E8 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + subs r2, #0x12 + ldrb r1, [r2] + movs r0, #0x41 + rsbs r0, r0, #0 + 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_08087C54 + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_08089804 + ldr r2, _08155440 + ldr r0, _08155444 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + movs r0, #2 + strh r0, [r4, #0x2e] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08155440: .4byte gUnknown_2036FF0 +_08155444: .4byte gUnknown_2037230 + thumb_func_end sub_081553E8 + + thumb_func_start sub_08155448 +sub_08155448: @ 0x08155448 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_08097344 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08155468 + adds r0, r4, #0 + movs r1, #7 + bl sub_080B5444 +_08155468: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08155448 + + thumb_func_start sub_08155470 +sub_08155470: @ 0x08155470 + push {r4, r5, lr} + ldr r4, _081554D8 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _081554DC + ldr r0, [r0, #0x1c] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0x96 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + cmp r0, #0x40 + beq _081554CA + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081554E0 + adds r1, r1, r0 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + strb r0, [r1, #5] + ldr r0, [r4, #8] + strh r0, [r1, #0x32] + ldr r0, _081554E4 + strh r0, [r1, #0x34] + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r1, #0x3a] + strh r0, [r1, #0x3c] +_081554CA: + movs r0, #8 + bl sub_080B5568 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081554D8: .4byte gUnknown_20388A8 +_081554DC: .4byte gUnknown_84DDE4C +_081554E0: .4byte gUnknown_20205AC +_081554E4: .4byte 0x0000FFFF + thumb_func_end sub_08155470 + + thumb_func_start sub_081554E8 +sub_081554E8: @ 0x081554E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _08155510 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r0, [r2, #0x2e] + movs r3, #0x10 + rsbs r3, r3, #0 + ands r3, r0 + movs r0, #0xf0 + lsls r0, r0, #0x14 + ands r0, r1 + lsrs r0, r0, #0x18 + orrs r0, r3 + strh r0, [r2, #0x2e] + bx lr + .align 2, 0 +_08155510: .4byte gUnknown_20205AC + thumb_func_end sub_081554E8 + + thumb_func_start sub_08155514 +sub_08155514: @ 0x08155514 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r3, _0815553C + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r0, [r2, #0x2e] + movs r3, #0xf1 + rsbs r3, r3, #0 + ands r3, r0 + movs r0, #0xf0 + lsls r0, r0, #0x14 + ands r0, r1 + lsrs r0, r0, #0x14 + orrs r3, r0 + strh r3, [r2, #0x2e] + bx lr + .align 2, 0 +_0815553C: .4byte gUnknown_20205AC + thumb_func_end sub_08155514 + + thumb_func_start sub_08155540 +sub_08155540: @ 0x08155540 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r4, _0815556C + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r4 + ldrh r0, [r3, #0x2e] + ldr r4, _08155570 + ands r4, r0 + movs r0, #0xf0 + lsls r0, r0, #0x14 + ands r0, r1 + lsrs r0, r0, #0x10 + orrs r4, r0 + strh r4, [r3, #0x2e] + strh r2, [r3, #0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815556C: .4byte gUnknown_20205AC +_08155570: .4byte 0xFFFFF0FF + thumb_func_end sub_08155540 + + thumb_func_start sub_08155574 +sub_08155574: @ 0x08155574 + ldrh r1, [r0, #0x2e] + movs r0, #0xf + ands r0, r1 + bx lr + thumb_func_end sub_08155574 + + thumb_func_start sub_0815557C +sub_0815557C: @ 0x0815557C + ldrh r1, [r0, #0x2e] + movs r0, #0xf0 + ands r0, r1 + lsrs r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end sub_0815557C + + thumb_func_start sub_08155588 +sub_08155588: @ 0x08155588 + ldrh r1, [r0, #0x2e] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + lsrs r0, r0, #8 + bx lr + thumb_func_end sub_08155588 + + thumb_func_start sub_08155594 +sub_08155594: @ 0x08155594 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r4, r0, #3 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _081555E4 + adds r4, r4, r0 + ldrb r0, [r4, #4] + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _081555E8 + adds r5, r5, r0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_081555EC + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08155624 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_081556B8 + ldrb r0, [r5, #5] + movs r1, #0xc + ands r1, r0 + ldrb r2, [r6, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081555E4: .4byte gUnknown_2036FF0 +_081555E8: .4byte gUnknown_20205AC + thumb_func_end sub_08155594 + + thumb_func_start sub_081555EC +sub_081555EC: @ 0x081555EC + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, _08155620 + mov r0, sp + movs r2, #9 + bl memcpy + adds r0, r4, #0 + bl sub_0815557C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08155618 + ldrb r0, [r5, #0x18] + lsrs r0, r0, #4 + add r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08007ED8 +_08155618: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08155620: .4byte gUnknown_85ACA68 + thumb_func_end sub_081555EC + + thumb_func_start sub_08155624 +sub_08155624: @ 0x08155624 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r1, #0 + ldrh r2, [r0, #0x10] + mov r1, sp + strh r2, [r1] + ldrh r1, [r0, #0x12] + mov r0, sp + adds r0, #2 + strh r1, [r0] + movs r2, #0x26 + ldrsh r3, [r4, r2] + mov r8, r0 + cmp r3, #0 + bne _081556AC + mov r0, sp + movs r5, #0 + ldrsh r2, [r0, r5] + movs r5, #0x3a + ldrsh r0, [r4, r5] + cmp r2, r0 + bne _08155660 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x3c + ldrsh r1, [r4, r5] + cmp r0, r1 + beq _081556AC +_08155660: + strh r3, [r4, #0x38] + strh r2, [r4, #0x3a] + mov r1, r8 + movs r2, #0 + ldrsh r0, [r1, r2] + strh r0, [r4, #0x3c] + movs r5, #1 + mov r7, r8 + mov r6, sp +_08155672: + adds r0, r5, #0 + mov r1, sp + adds r2, r7, #0 + bl sub_080928AC + movs r1, #0 + ldrsh r0, [r6, r1] + movs r2, #0 + ldrsh r1, [r7, r2] + bl sub_08087AA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08155698 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + b _081556AC +_08155698: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4, #0x3a] + strh r0, [r6] + ldrh r0, [r4, #0x3c] + mov r1, r8 + strh r0, [r1] + cmp r5, #4 + bls _08155672 +_081556AC: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08155624 + + thumb_func_start sub_081556B8 +sub_081556B8: @ 0x081556B8 + push {r4, r5, lr} + sub sp, #4 + adds r5, r1, #0 + adds r4, r2, #0 + ldr r1, _0815571C + mov r0, sp + movs r2, #4 + bl memcpy + adds r0, r4, #0 + bl sub_08155574 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + cmp r2, #0 + beq _08155732 + ldrh r1, [r4, #0x36] + adds r1, #1 + strh r1, [r4, #0x36] + movs r3, #0x38 + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _081556F8 + ldrh r0, [r4, #0x34] + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] +_081556F8: + ldrh r1, [r4, #0x36] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08155708 + ldrh r0, [r4, #0x34] + rsbs r0, r0, #0 + strh r0, [r4, #0x34] +_08155708: + cmp r2, #2 + beq _08155732 + adds r0, r4, #0 + bl sub_08155588 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08155720 + ldrh r0, [r4, #0x26] + b _08155726 + .align 2, 0 +_0815571C: .4byte gUnknown_85ACA72 +_08155720: + ldrh r0, [r4, #0x26] + ldrh r3, [r4, #0x30] + adds r0, r0, r3 +_08155726: + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x20] + strh r0, [r4, #0x20] + ldrh r0, [r5, #0x22] + adds r0, #8 + strh r0, [r4, #0x22] +_08155732: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081556B8 + + thumb_func_start sub_0815573C +sub_0815573C: @ 0x0815573C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08155780 + movs r1, #0 + movs r2, #0 + movs r3, #0xff + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r1, _08155784 + adds r2, r2, r1 + ldr r1, _08155788 + str r1, [r2, #0x1c] + movs r1, #0x3e + adds r1, r1, r2 + mov ip, r1 + ldrb r1, [r1] + movs r3, #4 + orrs r1, r3 + mov r3, ip + strb r1, [r3] + strh r4, [r2, #0x2e] + movs r1, #1 + strh r1, [r2, #0x30] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155780: .4byte gUnknown_82BF314 +_08155784: .4byte gUnknown_20205AC +_08155788: .4byte sub_0815578C + thumb_func_end sub_0815573C + + thumb_func_start sub_0815578C +sub_0815578C: @ 0x0815578C + push {lr} + adds r2, r0, #0 + movs r0, #0x2e + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081557C8 + adds r3, r0, r1 + ldrh r1, [r2, #0x32] + adds r0, r1, #1 + strh r0, [r2, #0x32] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081557B4 + ldrh r0, [r2, #0x30] + ldrh r1, [r3, #0x26] + adds r0, r0, r1 + strh r0, [r3, #0x26] +_081557B4: + ldrh r1, [r2, #0x32] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _081557C4 + ldrh r0, [r2, #0x30] + rsbs r0, r0, #0 + strh r0, [r2, #0x30] +_081557C4: + pop {r0} + bx r0 + .align 2, 0 +_081557C8: .4byte gUnknown_20205AC + thumb_func_end sub_0815578C + + thumb_func_start sub_081557CC +sub_081557CC: @ 0x081557CC + push {r4, lr} + ldr r4, _08155830 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #0xc + bl sub_08092A50 + ldr r0, _08155834 + ldr r0, [r0, #0x24] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155828 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155838 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #5] + ldr r0, [r4, #8] + strh r0, [r2, #0x2e] + movs r0, #0xa + strh r0, [r2, #0x30] +_08155828: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155830: .4byte gUnknown_20388A8 +_08155834: .4byte gUnknown_84DDE4C +_08155838: .4byte gUnknown_20205AC + thumb_func_end sub_081557CC + + thumb_func_start sub_0815583C +sub_0815583C: @ 0x0815583C + push {r4, r5, r6, r7, lr} + ldr r7, _081558E8 + ldrb r0, [r7] + ldrb r1, [r7, #4] + ldrb r2, [r7, #8] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081558EC + adds r6, r1, r0 + ldr r0, _081558F0 + ldr r0, [r0, #0x74] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + beq _081558E0 + ldrb r0, [r6, #5] + bl sub_0808E004 + adds r5, r0, #0 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r4, _081558F4 + adds r0, r0, r4 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #2 + orrs r1, r2 + strb r1, [r3] + ldrb r2, [r6, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #5] + movs r2, #0xc + ands r2, r1 + ldrb r3, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #5] + ldr r1, [r7] + strh r1, [r0, #0x2e] + ldr r1, [r7, #4] + strh r1, [r0, #0x30] + ldr r1, [r7, #8] + strh r1, [r0, #0x32] + ldrb r2, [r6, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x20] + strh r1, [r0, #0x34] + ldrb r2, [r6, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x22] + strh r1, [r0, #0x36] + ldrh r1, [r5, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + subs r1, #2 + strh r1, [r0, #0x26] + movs r1, #2 + bl sub_08007EF4 +_081558E0: + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081558E8: .4byte gUnknown_20388A8 +_081558EC: .4byte gUnknown_2036FF0 +_081558F0: .4byte gUnknown_84DDE4C +_081558F4: .4byte gUnknown_20205AC + thumb_func_end sub_0815583C + + thumb_func_start sub_081558F8 +sub_081558F8: @ 0x081558F8 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r4, #0x32] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08155932 + ldr r2, _0815593C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrb r0, [r1, #2] + lsls r0, r0, #0x1b + cmp r0, #0 + blt _08155940 +_08155932: + adds r0, r4, #0 + movs r1, #0x27 + bl sub_080B5444 + b _081559B2 + .align 2, 0 +_0815593C: .4byte gUnknown_2036FF0 +_08155940: + ldr r2, _081559BC + ldrb r1, [r1, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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 _08155968 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + beq _08155982 +_08155968: + 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 _08155982 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 +_08155982: + strh r6, [r4, #0x20] + strh r5, [r4, #0x22] + ldr r3, _081559BC + ldr r2, _081559C0 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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_08097344 +_081559B2: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081559BC: .4byte gUnknown_20205AC +_081559C0: .4byte gUnknown_2036FF0 + thumb_func_end sub_081558F8 + + thumb_func_start sub_081559C4 +sub_081559C4: @ 0x081559C4 + push {r4, lr} + ldr r4, _08155A1C + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #0 + bl sub_08092A50 + ldr r0, _08155A20 + adds r0, #0x88 + ldr r0, [r0] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0x52 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155A14 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08155A24 + adds r1, r1, r0 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r1, #5] +_08155A14: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155A1C: .4byte gUnknown_20388A8 +_08155A20: .4byte gUnknown_84DDE4C +_08155A24: .4byte gUnknown_20205AC + thumb_func_end sub_081559C4 + + thumb_func_start sub_08155A28 +sub_08155A28: @ 0x08155A28 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #0x80 + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + subs r1, r1, r0 + strh r1, [r4, #0x22] + adds r0, r4, #0 + movs r1, #0 + bl sub_08097344 + ldrh r1, [r4, #0x3e] + ldr r0, _08155A64 + ands r0, r1 + cmp r0, #0 + beq _08155A5C + adds r0, r4, #0 + movs r1, #0x35 + bl sub_080B5444 +_08155A5C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08155A64: .4byte 0x00001004 + thumb_func_end sub_08155A28 + + thumb_func_start sub_08155A68 +sub_08155A68: @ 0x08155A68 + push {r4, lr} + ldr r4, _08155AD0 + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #4 + bl sub_08092A50 + ldr r0, _08155AD4 + ldr r0, [r0, #0x58] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + ldrb r3, [r4, #8] + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155AC8 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155AD8 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + ldrb r1, [r4, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + movs r1, #0xf + ands r0, r1 + movs r1, #0x50 + orrs r0, r1 + strb r0, [r2, #5] + movs r0, #0x17 + strh r0, [r2, #0x2e] +_08155AC8: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155AD0: .4byte gUnknown_20388A8 +_08155AD4: .4byte gUnknown_84DDE4C +_08155AD8: .4byte gUnknown_20205AC + thumb_func_end sub_08155A68 + + thumb_func_start sub_08155ADC +sub_08155ADC: @ 0x08155ADC + push {lr} + movs r0, #0x1c + movs r1, #0x18 + movs r2, #4 + bl sub_08155B0C + pop {r1} + bx r1 + thumb_func_end sub_08155ADC + + thumb_func_start sub_08155AEC +sub_08155AEC: @ 0x08155AEC + push {lr} + movs r0, #0x1d + movs r1, #0x19 + movs r2, #3 + bl sub_08155B0C + pop {r1} + bx r1 + thumb_func_end sub_08155AEC + + thumb_func_start sub_08155AFC +sub_08155AFC: @ 0x08155AFC + push {lr} + movs r0, #0x24 + movs r1, #0x1c + movs r2, #2 + bl sub_08155B0C + pop {r1} + bx r1 + thumb_func_end sub_08155AFC + + thumb_func_start sub_08155B0C +sub_08155B0C: @ 0x08155B0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + ldr r5, _08155B40 + ldrb r0, [r5] + ldrb r1, [r5, #4] + ldrb r2, [r5, #8] + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08155B44 + adds r0, r4, #0 + bl sub_080B5568 + movs r0, #0x40 + b _08155BB0 + .align 2, 0 +_08155B40: .4byte gUnknown_20388A8 +_08155B44: + ldr r1, _08155BBC + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B60 + mov r1, sp + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08155BAC + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _08155BC0 + adds r2, r2, r0 + movs r0, #0x3e + adds r0, r0, r2 + mov ip, r0 + ldrb r3, [r0] + lsls r1, r3, #0x1e + lsrs r1, r1, #0x1f + adds r1, #1 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #1 + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + lsls r3, r7, #4 + ldrb r1, [r2, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #5] + mov r0, r8 + strh r0, [r2, #0x30] + ldr r0, [r5] + strh r0, [r2, #0x32] + ldr r0, [r5, #4] + strh r0, [r2, #0x34] + ldr r0, [r5, #8] + strh r0, [r2, #0x36] +_08155BAC: + mov r0, sp + ldrb r0, [r0] +_08155BB0: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08155BBC: .4byte gUnknown_84DDE4C +_08155BC0: .4byte gUnknown_20205AC + thumb_func_end sub_08155B0C + + thumb_func_start sub_08155BC4 +sub_08155BC4: @ 0x08155BC4 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldrh r0, [r5, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #0x34] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrh r2, [r5, #0x36] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r3, sp + bl sub_0808CEB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08155BF4 + ldrh r1, [r5, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_080B5444 +_08155BF4: + ldr r4, _08155CAC + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #5] + bl sub_0808E004 + mov r1, sp + ldrb r2, [r1] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r1, [r1, #4] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + ldr r1, _08155CB0 + adds r2, r2, r1 + adds r1, r2, #0 + adds r1, #0x3e + ldrb r1, [r1] + movs r3, #0x3e + adds r3, r3, r5 + mov ip, r3 + movs r3, #4 + ands r3, r1 + mov r1, ip + ldrb r4, [r1] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r4 + orrs r1, r3 + mov r3, ip + strb r1, [r3] + ldrh r1, [r2, #0x20] + strh r1, [r5, #0x20] + ldrh r0, [r0, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + ldrh r1, [r2, #0x22] + adds r0, r0, r1 + subs r0, #0x10 + strh r0, [r5, #0x22] + adds r2, #0x43 + ldrb r0, [r2] + subs r0, #1 + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #1 + bne _08155C74 + adds r0, r1, #1 + strh r0, [r5, #0x2e] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_08155C74: + movs r3, #0x2e + ldrsh r0, [r5, r3] + ldrh r2, [r5, #0x2e] + cmp r0, #2 + bne _08155C90 + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08155C90 + movs r0, #1 + strh r0, [r5, #0x3c] +_08155C90: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _08155CA4 + ldrh r1, [r5, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_080B5444 +_08155CA4: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08155CAC: .4byte gUnknown_2036FF0 +_08155CB0: .4byte gUnknown_20205AC + thumb_func_end sub_08155BC4 + + thumb_func_start sub_08155CB4 +sub_08155CB4: @ 0x08155CB4 + push {lr} + adds r1, r0, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #1 + bne _08155CD2 + ldr r2, _08155CD8 + ldrb r1, [r1, #0x1a] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x2e] + adds r1, #1 + strh r1, [r0, #0x2e] +_08155CD2: + pop {r0} + bx r0 + .align 2, 0 +_08155CD8: .4byte gUnknown_20205AC + thumb_func_end sub_08155CB4 + + thumb_func_start sub_08155CDC +sub_08155CDC: @ 0x08155CDC + push {lr} + adds r2, r0, #0 + adds r2, #0x21 + ldrb r1, [r2] + cmp r1, #2 + beq _08155D12 + cmp r1, #0 + beq _08155D12 + ldrb r1, [r0, #0x1a] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08155D04 + adds r1, r0, r1 + movs r3, #0x3c + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _08155D08 + movs r0, #0 + b _08155D14 + .align 2, 0 +_08155D04: .4byte gUnknown_20205AC +_08155D08: + movs r0, #2 + strb r0, [r2] + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] +_08155D12: + movs r0, #1 +_08155D14: + pop {r1} + bx r1 + thumb_func_end sub_08155CDC + + thumb_func_start sub_08155D18 +sub_08155D18: @ 0x08155D18 + push {r4, lr} + ldr r4, _08155D80 + ldr r0, [r4] + adds r0, #7 + str r0, [r4] + ldr r0, [r4, #4] + adds r0, #7 + str r0, [r4, #4] + adds r1, r4, #4 + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _08155D84 + adds r0, #0x8c + ldr r0, [r0] + movs r2, #0 + ldrsh r1, [r4, r2] + movs r3, #4 + ldrsh r2, [r4, r3] + movs r3, #0x52 + bl sub_08006B60 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _08155D78 + ldr r0, _08155D88 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #3 + ldrb r2, [r4, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] +_08155D78: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08155D80: .4byte gUnknown_20388A8 +_08155D84: .4byte gUnknown_84DDE4C +_08155D88: .4byte gUnknown_20205AC + thumb_func_end sub_08155D18 + + thumb_func_start sub_08155D8C +sub_08155D8C: @ 0x08155D8C + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _08155DC0 + adds r0, r2, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08155DB8 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] +_08155DB8: + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _08155DD6 +_08155DC0: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x22 + ble _08155DD6 + adds r0, r2, #0 + movs r1, #0x36 + bl sub_080B5444 +_08155DD6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08155D8C + + thumb_func_start sub_08155DDC +sub_08155DDC: @ 0x08155DDC + movs r1, #0 + strh r1, [r0, #0x3a] + strh r1, [r0, #0x3c] + bx lr + thumb_func_end sub_08155DDC + + thumb_func_start sub_08155DE4 +sub_08155DE4: @ 0x08155DE4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r1, #0x3c + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08155E1A + cmp r0, #1 + bgt _08155DFC + cmp r0, #0 + beq _08155E06 + b _08155E7E +_08155DFC: + cmp r0, #2 + beq _08155E42 + cmp r0, #3 + beq _08155E56 + b _08155E7E +_08155E06: + movs r2, #0x3a + ldrsh r0, [r5, r2] + bl sub_080970AC + ldrh r1, [r5, #0x24] + adds r0, r0, r1 + strh r0, [r5, #0x24] + movs r2, #0x3a + ldrsh r0, [r5, r2] + b _08155E74 +_08155E1A: + ldrh r0, [r5, #0x3a] + movs r4, #0x47 + subs r0, r4, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080970AC + ldrh r1, [r5, #0x24] + subs r1, r1, r0 + strh r1, [r5, #0x24] + ldrh r0, [r5, #0x3a] + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + bl sub_08097098 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + b _08155E7C +_08155E42: + movs r1, #0x3a + ldrsh r0, [r5, r1] + bl sub_080970AC + ldrh r1, [r5, #0x24] + subs r1, r1, r0 + strh r1, [r5, #0x24] + movs r2, #0x3a + ldrsh r0, [r5, r2] + b _08155E74 +_08155E56: + ldrh r0, [r5, #0x3a] + movs r4, #0x47 + subs r0, r4, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080970AC + ldrh r2, [r5, #0x24] + adds r0, r0, r2 + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x3a] + subs r4, r4, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 +_08155E74: + bl sub_08097098 + ldrh r1, [r5, #0x26] + adds r0, r0, r1 +_08155E7C: + strh r0, [r5, #0x26] +_08155E7E: + ldrh r1, [r5, #0x24] + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x10 + bl sub_08001144 + ldrh r0, [r5, #0x3a] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x48 + bne _08155EA4 + strh r1, [r5, #0x3a] + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] +_08155EA4: + movs r2, #0x3c + ldrsh r0, [r5, r2] + cmp r0, #4 + bne _08155EB2 + strh r1, [r5, #0x26] + strh r1, [r5, #0x24] + movs r6, #1 +_08155EB2: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08155DE4 + + thumb_func_start sub_08155EBC +sub_08155EBC: @ 0x08155EBC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #8 + bls _08155ECA + b _08156092 +_08155ECA: + lsls r0, r0, #2 + ldr r1, _08155ED4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08155ED4: .4byte _08155ED8 +_08155ED8: @ jump table + .4byte _08155EFC @ case 0 + .4byte _08155F70 @ case 1 + .4byte _08155FA8 @ case 2 + .4byte _08155FCC @ case 3 + .4byte _08155FFC @ case 4 + .4byte _08156010 @ case 5 + .4byte _0815601C @ case 6 + .4byte _0815604A @ case 7 + .4byte _0815605C @ case 8 +_08155EFC: + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r1, #3 + bl __divsi3 + movs r1, #0x78 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x12 + bl sub_08001144 + movs r3, #0x2e + ldrsh r0, [r5, r3] + cmp r0, #0x60 + bne _08155F52 + movs r1, #0 + ldr r4, _08155F64 + mov ip, r4 + ldr r0, _08155F68 + adds r7, r0, #0 +_08155F26: + movs r2, #0xc + lsls r0, r1, #1 + adds r3, r1, #1 + lsls r6, r1, #5 + adds r0, r0, r1 + lsls r4, r0, #1 +_08155F32: + adds r0, r6, r2 + lsls r0, r0, #1 + add r0, ip + adds r1, r2, r7 + adds r1, r4, r1 + adds r1, #1 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x11 + bls _08155F32 + lsls r0, r3, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #2 + bls _08155F26 +_08155F52: + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r0, _08155F6C + cmp r1, r0 + bgt _08155F5E + b _08156092 +_08155F5E: + movs r1, #0 + movs r0, #1 + b _08156056 + .align 2, 0 +_08155F64: .4byte 0x0600F800 +_08155F68: .4byte 0x0000BFF4 +_08155F6C: .4byte 0x00000137 +_08155F70: + ldr r4, _08155FA4 + movs r3, #0x2e + ldrsh r0, [r5, r3] + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + adds r0, r0, r4 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x12 + ldrh r4, [r5, #0x36] + adds r0, r0, r4 + movs r1, #0 + strh r0, [r5, #0x22] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0xbd + bne _08156092 + movs r0, #2 + strh r0, [r5, #0x32] + strh r1, [r5, #0x38] + strh r1, [r5, #0x2e] + b _08156092 + .align 2, 0 +_08155FA4: .4byte gUnknown_82FA8CC +_08155FA8: + movs r3, #0x2e + ldrsh r0, [r5, r3] + cmp r0, #0x3c + bne _08155FBA + ldrh r0, [r5, #0x38] + adds r0, #1 + movs r1, #0 + strh r0, [r5, #0x38] + strh r1, [r5, #0x2e] +_08155FBA: + movs r4, #0x38 + ldrsh r0, [r5, r4] + cmp r0, #7 + bne _08156092 + movs r0, #0 + strh r0, [r5, #0x38] + movs r0, #3 + strh r0, [r5, #0x32] + b _08156092 +_08155FCC: + ldrh r2, [r5, #0x26] + movs r0, #0x26 + ldrsh r1, [r5, r0] + adds r3, r2, #0 + cmp r1, #0 + bne _08155FE0 + strh r1, [r5, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] +_08155FE0: + movs r4, #0x2e + ldrsh r0, [r5, r4] + cmp r0, #5 + bne _08156092 + movs r0, #0 + strh r0, [r5, #0x2e] + cmp r1, #0 + ble _08155FF6 + subs r0, r3, #1 + strh r0, [r5, #0x26] + b _08156092 +_08155FF6: + adds r0, r2, #1 + strh r0, [r5, #0x26] + b _08156092 +_08155FFC: + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0x3c + bne _08156092 + movs r1, #0 + movs r0, #5 + strh r0, [r5, #0x32] + strh r1, [r5, #0x2e] + strh r1, [r5, #0x38] + b _08156092 +_08156010: + adds r0, r5, #0 + bl sub_08155DDC + movs r1, #0 + movs r0, #6 + b _08156056 +_0815601C: + adds r0, r5, #0 + bl sub_08155DE4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08156092 + movs r1, #0 + strh r1, [r5, #0x2e] + ldrh r0, [r5, #0x38] + adds r0, #1 + strh r0, [r5, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bgt _08156042 + adds r0, r5, #0 + bl sub_08155DDC + b _08156092 +_08156042: + strh r1, [r5, #0x38] + movs r0, #7 + strh r0, [r5, #0x32] + b _08156092 +_0815604A: + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0x1e + bne _08156092 + movs r1, #0 + movs r0, #8 +_08156056: + strh r0, [r5, #0x32] + strh r1, [r5, #0x2e] + b _08156092 +_0815605C: + movs r1, #0 + ldr r6, _081560CC + movs r4, #0 +_08156062: + movs r2, #0xc + adds r3, r1, #1 + lsls r1, r1, #5 +_08156068: + adds r0, r1, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x11 + bls _08156068 + lsls r0, r3, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xe + bls _08156062 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + movs r1, #0x40 + bl sub_080B5444 +_08156092: + movs r3, #0x32 + ldrsh r0, [r5, r3] + cmp r0, #1 + bne _081560C0 + ldrh r1, [r5, #0x30] + movs r0, #7 + ands r0, r1 + adds r2, r1, #0 + cmp r0, #0 + bne _081560AE + ldrh r0, [r5, #0x34] + ldrh r4, [r5, #0x26] + adds r0, r0, r4 + strh r0, [r5, #0x26] +_081560AE: + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + bne _081560BC + ldrh r0, [r5, #0x34] + rsbs r0, r0, #0 + strh r0, [r5, #0x34] +_081560BC: + adds r0, r1, #1 + strh r0, [r5, #0x30] +_081560C0: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081560CC: .4byte 0x0600F800 + thumb_func_end sub_08155EBC + + thumb_func_start sub_081560D0 +sub_081560D0: @ 0x081560D0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081560EE + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080B5444 + b _08156104 +_081560EE: + adds r0, r4, #0 + movs r1, #0 + bl sub_08097344 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + movs r2, #0 + bl sub_0809677C +_08156104: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081560D0 + + thumb_func_start sub_0815610C +sub_0815610C: @ 0x0815610C + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0815612A + ldrh r1, [r2, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r2, #0 + bl sub_080B5444 + b _08156132 +_0815612A: + adds r0, r2, #0 + movs r1, #0 + bl sub_08097344 +_08156132: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815610C + + thumb_func_start sub_08156138 +sub_08156138: @ 0x08156138 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r0, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r6, #0 + bl sub_0809677C + movs r7, #0 +_0815614E: + lsls r0, r7, #3 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _081561E8 + adds r4, r0, r1 + ldrb r0, [r4] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081561F0 + ldrb r0, [r4, #5] + bl sub_0808E004 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081561EC + 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, r0, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0x20 + ldrsh r2, [r5, r0] + cmp r1, r2 + bge _081561F0 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, r2 + ble _081561F0 + adds r0, r5, #0 + adds r0, #0x29 + movs r3, #0 + ldrsb r3, [r0, r3] + ldrh r2, [r5, #0x22] + adds r2, 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, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r3, r0, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + cmp r2, r3 + blt _081561C8 + cmp r2, r0 + bge _081561F0 +_081561C8: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + ble _081561F0 + adds r2, r6, #0 + adds r2, #0x43 + adds r0, r5, #0 + adds r0, #0x43 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + bhi _081561F0 + adds r0, r1, #2 + strb r0, [r2] + b _081561FA + .align 2, 0 +_081561E8: .4byte gUnknown_2036FF0 +_081561EC: .4byte gUnknown_20205AC +_081561F0: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xf + bls _0815614E +_081561FA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08156138 + + thumb_func_start sub_08156200 +sub_08156200: @ 0x08156200 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _08156258 + ldr r0, [r4] + ldr r0, [r0, #0xc] + movs r1, #0 + movs r2, #0x44 + bl memset + movs r1, #0 + movs r3, #0x64 + adds r2, r4, #0 +_0815621A: + ldr r0, [r4] + ldr r0, [r0, #0xc] + adds r0, #5 + adds r0, r0, r1 + strb r3, [r0] + adds r1, #1 + cmp r1, #3 + ble _0815621A + ldr r0, [r2] + ldr r0, [r0, #0xc] + adds r0, #0x41 + movs r1, #0 + strb r5, [r0] + ldr r0, [r2] + ldr r0, [r0, #0xc] + adds r0, #0x40 + strb r1, [r0] + ldr r0, [r2] + ldr r2, [r0, #0xc] + ldr r1, _0815625C + adds r0, r2, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, #0x18 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2, #0x14] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08156258: .4byte gUnknown_2039BD4 +_0815625C: .4byte gUnknown_2039AA0 + thumb_func_end sub_08156200 + + thumb_func_start sub_08156260 +sub_08156260: @ 0x08156260 + push {r4, r5, r6, lr} + ldr r1, _081562E8 + ldr r0, [r1] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _081562A6 + adds r4, r1, #0 + movs r5, #0 +_08156272: + ldr r0, [r4] + ldr r2, [r0, #0xc] + ldr r0, [r2, #0x14] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08156286 + strb r5, [r2] + bl sub_081562EC +_08156286: + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldr r0, [r1, #0x14] + lsrs r0, r0, #1 + str r0, [r1, #0x14] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + ldr r0, [r4] + ldr r0, [r0, #0xc] + strb r5, [r0, #4] + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _08156272 +_081562A6: + movs r6, #3 +_081562A8: + bl sub_0806F050 + adds r5, r0, #0 + ands r5, r6 + ldr r4, _081562E8 + ldr r0, [r4] + ldr r1, [r0, #0xc] + adds r0, r1, #5 + adds r0, r0, r5 + ldrb r3, [r0] + movs r2, #0 + ldrb r1, [r1, #5] + cmp r3, r1 + blo _081562DA + adds r1, r4, #0 +_081562C6: + adds r2, #1 + cmp r2, #3 + bgt _081562DA + ldr r0, [r1] + ldr r0, [r0, #0xc] + adds r0, #5 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r3, r0 + bhs _081562C6 +_081562DA: + cmp r2, #4 + bne _081562A8 + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081562E8: .4byte gUnknown_2039BD4 + thumb_func_end sub_08156260 + + thumb_func_start sub_081562EC +sub_081562EC: @ 0x081562EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _08156344 + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldrb r0, [r0] + adds r4, r5, #0 + cmp r0, #2 + beq _081563DC + adds r7, r5, #0 + ldr r6, _08156348 + ldr r0, _0815634C + mov r8, r0 +_08156308: + ldr r0, [r7] + ldr r2, [r0, #0xc] + ldrb r0, [r2] + cmp r0, #1 + beq _08156362 + cmp r0, #1 + bgt _081563D2 + cmp r0, #0 + bne _081563D2 + ldr r1, _08156350 + ldrb r0, [r2, #0x10] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r6] + ldrb r1, [r2, #4] + lsls r1, r1, #1 + adds r0, r2, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + add r1, r8 + ldrh r1, [r1] + adds r0, r1, #0 + cmp r0, #0 + bne _08156354 + strh r0, [r2, #2] + b _08156356 + .align 2, 0 +_08156344: .4byte gUnknown_2039BD4 +_08156348: .4byte gUnknown_203A804 +_0815634C: .4byte gUnknown_2039ABE +_08156350: .4byte gUnknown_828C8D8 +_08156354: + strh r1, [r2, #2] +_08156356: + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081563D2 +_08156362: + ldrh r1, [r2, #2] + cmp r1, #0 + beq _08156380 + ldr r1, _0815637C + ldr r0, [r6] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _08156394 + .align 2, 0 +_0815637C: .4byte gUnknown_85ACB08 +_08156380: + adds r0, r2, #5 + ldrb r2, [r2, #4] + adds r0, r0, r2 + strb r1, [r0] + ldr r0, [r7] + ldr r2, [r0, #0xc] + ldrb r1, [r2, #9] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #9] +_08156394: + ldr r2, _081563BC + ldr r0, [r2] + ldr r3, [r0, #0xc] + ldrb r1, [r3, #9] + movs r0, #1 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _081563D2 + ldrb r0, [r3, #4] + adds r0, #1 + movs r2, #0 + strb r0, [r3, #4] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r1, #4] + cmp r0, #3 + bhi _081563C0 + strb r2, [r1] + b _081563C6 + .align 2, 0 +_081563BC: .4byte gUnknown_2039BD4 +_081563C0: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081563C6: + ldr r0, [r4] + ldr r2, [r0, #0xc] + ldrb r1, [r2, #9] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2, #9] +_081563D2: + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldrb r0, [r0] + cmp r0, #2 + bne _08156308 +_081563DC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081562EC + + thumb_func_start sub_081563E8 +sub_081563E8: @ 0x081563E8 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _081563F8 + ldr r0, [r3] + ldr r0, [r0, #8] + b _08156408 + .align 2, 0 +_081563F8: .4byte gUnknown_2039BD4 +_081563FC: + adds r1, #1 + cmp r1, #3 + bgt _0815640E + ldr r0, [r3] + ldr r0, [r0, #8] + adds r0, r0, r1 +_08156408: + ldrb r0, [r0] + cmp r0, r2 + bne _081563FC +_0815640E: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081563E8 + + thumb_func_start sub_08156418 +sub_08156418: @ 0x08156418 + push {r4, lr} + ldr r3, _08156444 + ldr r0, [r3] + ldr r0, [r0, #0xc] + adds r1, r0, #5 + ldrb r0, [r0, #4] + adds r1, r1, r0 + ldr r2, _08156448 + ldr r0, [r2] + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrb r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _0815644C + movs r4, #0xff + b _08156452 + .align 2, 0 +_08156444: .4byte gUnknown_2039BD4 +_08156448: .4byte gUnknown_203A804 +_0815644C: + cmp r0, #0 + bge _08156452 + movs r4, #0 +_08156452: + ldr r0, [r3] + ldr r1, [r0, #0xc] + adds r0, r1, #5 + ldrb r1, [r1, #4] + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r2] + adds r0, #2 + str r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156418 + + thumb_func_start sub_0815646C +sub_0815646C: @ 0x0815646C + ldr r0, _08156484 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r0, [r0] + ldrb r0, [r0, #1] + strh r0, [r1, #0x18] + ldr r1, _08156488 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08156484: .4byte gUnknown_2039BD4 +_08156488: .4byte gUnknown_203A804 + thumb_func_end sub_0815646C + + thumb_func_start sub_0815648C +sub_0815648C: @ 0x0815648C + push {lr} + bl sub_0815646C + ldr r0, _081564C0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081564C4 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _081564C8 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081564CC + .align 2, 0 +_081564C0: .4byte gUnknown_2039BD4 +_081564C4: .4byte gUnknown_203A804 +_081564C8: + adds r0, r2, #5 + str r0, [r3] +_081564CC: + pop {r0} + bx r0 + thumb_func_end sub_0815648C + + thumb_func_start sub_081564D0 +sub_081564D0: @ 0x081564D0 + push {lr} + bl sub_0815646C + ldr r0, _08156504 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156508 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _0815650C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156510 + .align 2, 0 +_08156504: .4byte gUnknown_2039BD4 +_08156508: .4byte gUnknown_203A804 +_0815650C: + adds r0, r2, #5 + str r0, [r3] +_08156510: + pop {r0} + bx r0 + thumb_func_end sub_081564D0 + + thumb_func_start sub_08156514 +sub_08156514: @ 0x08156514 + push {lr} + bl sub_0815646C + ldr r0, _08156548 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815654C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08156550 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156554 + .align 2, 0 +_08156548: .4byte gUnknown_2039BD4 +_0815654C: .4byte gUnknown_203A804 +_08156550: + adds r0, r2, #5 + str r0, [r3] +_08156554: + pop {r0} + bx r0 + thumb_func_end sub_08156514 + + thumb_func_start sub_08156558 +sub_08156558: @ 0x08156558 + push {lr} + bl sub_0815646C + ldr r0, _0815658C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156590 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156594 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156598 + .align 2, 0 +_0815658C: .4byte gUnknown_2039BD4 +_08156590: .4byte gUnknown_203A804 +_08156594: + adds r0, r2, #5 + str r0, [r3] +_08156598: + pop {r0} + bx r0 + thumb_func_end sub_08156558 + + thumb_func_start sub_0815659C +sub_0815659C: @ 0x0815659C + ldr r0, _081565B8 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r0, [r0] + ldrb r0, [r0, #0x13] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0x18] + ldr r1, _081565BC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_081565B8: .4byte gUnknown_2039BD4 +_081565BC: .4byte gUnknown_203A804 + thumb_func_end sub_0815659C + + thumb_func_start sub_081565C0 +sub_081565C0: @ 0x081565C0 + push {lr} + bl sub_0815659C + ldr r0, _081565F4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081565F8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _081565FC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156600 + .align 2, 0 +_081565F4: .4byte gUnknown_2039BD4 +_081565F8: .4byte gUnknown_203A804 +_081565FC: + adds r0, r2, #5 + str r0, [r3] +_08156600: + pop {r0} + bx r0 + thumb_func_end sub_081565C0 + + thumb_func_start sub_08156604 +sub_08156604: @ 0x08156604 + push {lr} + bl sub_0815659C + ldr r0, _08156638 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815663C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08156640 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156644 + .align 2, 0 +_08156638: .4byte gUnknown_2039BD4 +_0815663C: .4byte gUnknown_203A804 +_08156640: + adds r0, r2, #5 + str r0, [r3] +_08156644: + pop {r0} + bx r0 + thumb_func_end sub_08156604 + + thumb_func_start sub_08156648 +sub_08156648: @ 0x08156648 + push {lr} + bl sub_0815659C + ldr r0, _0815667C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156680 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08156684 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156688 + .align 2, 0 +_0815667C: .4byte gUnknown_2039BD4 +_08156680: .4byte gUnknown_203A804 +_08156684: + adds r0, r2, #5 + str r0, [r3] +_08156688: + pop {r0} + bx r0 + thumb_func_end sub_08156648 + + thumb_func_start sub_0815668C +sub_0815668C: @ 0x0815668C + push {lr} + bl sub_0815659C + ldr r0, _081566C0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081566C4 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _081566C8 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081566CC + .align 2, 0 +_081566C0: .4byte gUnknown_2039BD4 +_081566C4: .4byte gUnknown_203A804 +_081566C8: + adds r0, r2, #5 + str r0, [r3] +_081566CC: + pop {r0} + bx r0 + thumb_func_end sub_0815668C + + thumb_func_start sub_081566D0 +sub_081566D0: @ 0x081566D0 + ldr r0, _081566F0 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r0, [r0, #8] + adds r1, r2, #0 + adds r1, #0x41 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2, #0x18] + ldr r1, _081566F4 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_081566F0: .4byte gUnknown_2039BD4 +_081566F4: .4byte gUnknown_203A804 + thumb_func_end sub_081566D0 + + thumb_func_start sub_081566F8 +sub_081566F8: @ 0x081566F8 + push {lr} + bl sub_081566D0 + ldr r0, _0815672C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156730 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08156734 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156738 + .align 2, 0 +_0815672C: .4byte gUnknown_2039BD4 +_08156730: .4byte gUnknown_203A804 +_08156734: + adds r0, r2, #5 + str r0, [r3] +_08156738: + pop {r0} + bx r0 + thumb_func_end sub_081566F8 + + thumb_func_start sub_0815673C +sub_0815673C: @ 0x0815673C + push {lr} + bl sub_081566D0 + ldr r0, _08156770 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156774 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08156778 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815677C + .align 2, 0 +_08156770: .4byte gUnknown_2039BD4 +_08156774: .4byte gUnknown_203A804 +_08156778: + adds r0, r2, #5 + str r0, [r3] +_0815677C: + pop {r0} + bx r0 + thumb_func_end sub_0815673C + + thumb_func_start sub_08156780 +sub_08156780: @ 0x08156780 + push {lr} + bl sub_081566D0 + ldr r0, _081567B4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081567B8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _081567BC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081567C0 + .align 2, 0 +_081567B4: .4byte gUnknown_2039BD4 +_081567B8: .4byte gUnknown_203A804 +_081567BC: + adds r0, r2, #5 + str r0, [r3] +_081567C0: + pop {r0} + bx r0 + thumb_func_end sub_08156780 + + thumb_func_start sub_081567C4 +sub_081567C4: @ 0x081567C4 + push {lr} + bl sub_081566D0 + ldr r0, _081567F8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081567FC + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156800 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156804 + .align 2, 0 +_081567F8: .4byte gUnknown_2039BD4 +_081567FC: .4byte gUnknown_203A804 +_08156800: + adds r0, r2, #5 + str r0, [r3] +_08156804: + pop {r0} + bx r0 + thumb_func_end sub_081567C4 + + thumb_func_start sub_08156808 +sub_08156808: @ 0x08156808 + push {r4, lr} + ldr r0, _08156840 + ldr r0, [r0] + ldr r4, [r0, #0xc] + adds r1, r4, #0 + adds r1, #0x41 + ldrb r1, [r1] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0xd] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x18] + ldr r1, _08156844 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08156840: .4byte gUnknown_2039BD4 +_08156844: .4byte gUnknown_203A804 + thumb_func_end sub_08156808 + + thumb_func_start sub_08156848 +sub_08156848: @ 0x08156848 + push {lr} + bl sub_08156808 + ldr r0, _0815687C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156880 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08156884 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156888 + .align 2, 0 +_0815687C: .4byte gUnknown_2039BD4 +_08156880: .4byte gUnknown_203A804 +_08156884: + adds r0, r2, #5 + str r0, [r3] +_08156888: + pop {r0} + bx r0 + thumb_func_end sub_08156848 + + thumb_func_start sub_0815688C +sub_0815688C: @ 0x0815688C + push {lr} + bl sub_08156808 + ldr r0, _081568C0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081568C4 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _081568C8 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081568CC + .align 2, 0 +_081568C0: .4byte gUnknown_2039BD4 +_081568C4: .4byte gUnknown_203A804 +_081568C8: + adds r0, r2, #5 + str r0, [r3] +_081568CC: + pop {r0} + bx r0 + thumb_func_end sub_0815688C + + thumb_func_start sub_081568D0 +sub_081568D0: @ 0x081568D0 + push {lr} + bl sub_08156808 + ldr r0, _08156904 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156908 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _0815690C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156910 + .align 2, 0 +_08156904: .4byte gUnknown_2039BD4 +_08156908: .4byte gUnknown_203A804 +_0815690C: + adds r0, r2, #5 + str r0, [r3] +_08156910: + pop {r0} + bx r0 + thumb_func_end sub_081568D0 + + thumb_func_start sub_08156914 +sub_08156914: @ 0x08156914 + push {lr} + bl sub_08156808 + ldr r0, _08156948 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815694C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156950 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156954 + .align 2, 0 +_08156948: .4byte gUnknown_2039BD4 +_0815694C: .4byte gUnknown_203A804 +_08156950: + adds r0, r2, #5 + str r0, [r3] +_08156954: + pop {r0} + bx r0 + thumb_func_end sub_08156914 + + thumb_func_start sub_08156958 +sub_08156958: @ 0x08156958 + ldr r0, _0815697C + ldr r0, [r0] + ldr r3, [r0, #0xc] + adds r1, r3, #0 + adds r1, #0x41 + ldrb r1, [r1] + ldr r2, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #4] + strh r0, [r3, #0x18] + ldr r1, _08156980 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_0815697C: .4byte gUnknown_2039BD4 +_08156980: .4byte gUnknown_203A804 + thumb_func_end sub_08156958 + + thumb_func_start sub_08156984 +sub_08156984: @ 0x08156984 + push {r4, r5, lr} + bl sub_08156958 + ldr r0, _081569C0 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _081569C4 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bge _081569C8 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081569CC + .align 2, 0 +_081569C0: .4byte gUnknown_2039BD4 +_081569C4: .4byte gUnknown_203A804 +_081569C8: + adds r0, r3, #6 + str r0, [r4] +_081569CC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156984 + + thumb_func_start sub_081569D4 +sub_081569D4: @ 0x081569D4 + push {r4, r5, lr} + bl sub_08156958 + ldr r0, _08156A10 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156A14 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + ble _08156A18 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156A1C + .align 2, 0 +_08156A10: .4byte gUnknown_2039BD4 +_08156A14: .4byte gUnknown_203A804 +_08156A18: + adds r0, r3, #6 + str r0, [r4] +_08156A1C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081569D4 + + thumb_func_start sub_08156A24 +sub_08156A24: @ 0x08156A24 + push {r4, r5, lr} + bl sub_08156958 + ldr r0, _08156A60 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156A64 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bne _08156A68 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156A6C + .align 2, 0 +_08156A60: .4byte gUnknown_2039BD4 +_08156A64: .4byte gUnknown_203A804 +_08156A68: + adds r0, r3, #6 + str r0, [r4] +_08156A6C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156A24 + + thumb_func_start sub_08156A74 +sub_08156A74: @ 0x08156A74 + push {r4, r5, lr} + bl sub_08156958 + ldr r0, _08156AB0 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156AB4 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + beq _08156AB8 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156ABC + .align 2, 0 +_08156AB0: .4byte gUnknown_2039BD4 +_08156AB4: .4byte gUnknown_203A804 +_08156AB8: + adds r0, r3, #6 + str r0, [r4] +_08156ABC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156A74 + + thumb_func_start sub_08156AC4 +sub_08156AC4: @ 0x08156AC4 + ldr r0, _08156AE4 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r1, _08156AE8 + adds r0, r2, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x18] + ldr r1, _08156AEC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08156AE4: .4byte gUnknown_2039BD4 +_08156AE8: .4byte gUnknown_2039BA0 +_08156AEC: .4byte gUnknown_203A804 + thumb_func_end sub_08156AC4 + + thumb_func_start sub_08156AF0 +sub_08156AF0: @ 0x08156AF0 + push {r4, r5, lr} + bl sub_08156AC4 + ldr r0, _08156B2C + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156B30 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bge _08156B34 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156B38 + .align 2, 0 +_08156B2C: .4byte gUnknown_2039BD4 +_08156B30: .4byte gUnknown_203A804 +_08156B34: + adds r0, r3, #6 + str r0, [r4] +_08156B38: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156AF0 + + thumb_func_start sub_08156B40 +sub_08156B40: @ 0x08156B40 + push {r4, r5, lr} + bl sub_08156AC4 + ldr r0, _08156B7C + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156B80 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + ble _08156B84 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156B88 + .align 2, 0 +_08156B7C: .4byte gUnknown_2039BD4 +_08156B80: .4byte gUnknown_203A804 +_08156B84: + adds r0, r3, #6 + str r0, [r4] +_08156B88: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156B40 + + thumb_func_start sub_08156B90 +sub_08156B90: @ 0x08156B90 + push {r4, r5, lr} + bl sub_08156AC4 + ldr r0, _08156BCC + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156BD0 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + bne _08156BD4 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156BD8 + .align 2, 0 +_08156BCC: .4byte gUnknown_2039BD4 +_08156BD0: .4byte gUnknown_203A804 +_08156BD4: + adds r0, r3, #6 + str r0, [r4] +_08156BD8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156B90 + + thumb_func_start sub_08156BE0 +sub_08156BE0: @ 0x08156BE0 + push {r4, r5, lr} + bl sub_08156AC4 + ldr r0, _08156C1C + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08156C20 + ldr r3, [r4] + ldrb r1, [r3] + ldrb r0, [r3, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r5, #0x18 + ldrsh r0, [r2, r5] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + beq _08156C24 + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08156C28 + .align 2, 0 +_08156C1C: .4byte gUnknown_2039BD4 +_08156C20: .4byte gUnknown_203A804 +_08156C24: + adds r0, r3, #6 + str r0, [r4] +_08156C28: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156BE0 + + thumb_func_start sub_08156C30 +sub_08156C30: @ 0x08156C30 + ldr r0, _08156C48 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r0, _08156C4C + ldrh r0, [r0] + strh r0, [r1, #0x18] + ldr r1, _08156C50 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08156C48: .4byte gUnknown_2039BD4 +_08156C4C: .4byte gUnknown_2039BCC +_08156C50: .4byte gUnknown_203A804 + thumb_func_end sub_08156C30 + + thumb_func_start sub_08156C54 +sub_08156C54: @ 0x08156C54 + push {lr} + bl sub_08156C30 + ldr r0, _08156C88 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156C8C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08156C90 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156C94 + .align 2, 0 +_08156C88: .4byte gUnknown_2039BD4 +_08156C8C: .4byte gUnknown_203A804 +_08156C90: + adds r0, r2, #5 + str r0, [r3] +_08156C94: + pop {r0} + bx r0 + thumb_func_end sub_08156C54 + + thumb_func_start sub_08156C98 +sub_08156C98: @ 0x08156C98 + push {lr} + bl sub_08156C30 + ldr r0, _08156CCC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156CD0 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156CD4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156CD8 + .align 2, 0 +_08156CCC: .4byte gUnknown_2039BD4 +_08156CD0: .4byte gUnknown_203A804 +_08156CD4: + adds r0, r2, #5 + str r0, [r3] +_08156CD8: + pop {r0} + bx r0 + thumb_func_end sub_08156C98 + + thumb_func_start sub_08156CDC +sub_08156CDC: @ 0x08156CDC + push {r4, lr} + ldr r2, _08156D14 + ldr r4, _08156D18 + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldrb r1, [r0, #4] + lsls r1, r1, #1 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + bl sub_080DD154 + ldr r1, [r4] + ldr r1, [r1, #0xc] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0x18] + ldr r1, _08156D1C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08156D14: .4byte gUnknown_2039AA0 +_08156D18: .4byte gUnknown_2039BD4 +_08156D1C: .4byte gUnknown_203A804 + thumb_func_end sub_08156CDC + + thumb_func_start sub_08156D20 +sub_08156D20: @ 0x08156D20 + push {r4, lr} + bl sub_08156CDC + ldr r0, _08156D54 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r3, _08156D58 + ldr r2, [r3] + movs r4, #0x18 + ldrsh r1, [r0, r4] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bge _08156D5C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156D60 + .align 2, 0 +_08156D54: .4byte gUnknown_2039BD4 +_08156D58: .4byte gUnknown_203A804 +_08156D5C: + adds r0, r2, #5 + str r0, [r3] +_08156D60: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156D20 + + thumb_func_start sub_08156D68 +sub_08156D68: @ 0x08156D68 + push {r4, lr} + bl sub_08156CDC + ldr r0, _08156D9C + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r3, _08156DA0 + ldr r2, [r3] + movs r4, #0x18 + ldrsh r1, [r0, r4] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + ble _08156DA4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156DA8 + .align 2, 0 +_08156D9C: .4byte gUnknown_2039BD4 +_08156DA0: .4byte gUnknown_203A804 +_08156DA4: + adds r0, r2, #5 + str r0, [r3] +_08156DA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156D68 + + thumb_func_start sub_08156DB0 +sub_08156DB0: @ 0x08156DB0 + push {r4, lr} + bl sub_08156CDC + ldr r0, _08156DE4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r3, _08156DE8 + ldr r2, [r3] + movs r4, #0x18 + ldrsh r1, [r0, r4] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + bne _08156DEC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156DF0 + .align 2, 0 +_08156DE4: .4byte gUnknown_2039BD4 +_08156DE8: .4byte gUnknown_203A804 +_08156DEC: + adds r0, r2, #5 + str r0, [r3] +_08156DF0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156DB0 + + thumb_func_start sub_08156DF8 +sub_08156DF8: @ 0x08156DF8 + push {r4, lr} + bl sub_08156CDC + ldr r0, _08156E2C + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r3, _08156E30 + ldr r2, [r3] + movs r4, #0x18 + ldrsh r1, [r0, r4] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _08156E34 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156E38 + .align 2, 0 +_08156E2C: .4byte gUnknown_2039BD4 +_08156E30: .4byte gUnknown_203A804 +_08156E34: + adds r0, r2, #5 + str r0, [r3] +_08156E38: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156DF8 + + thumb_func_start sub_08156E40 +sub_08156E40: @ 0x08156E40 + ldr r2, _08156E70 + ldr r0, _08156E74 + ldr r0, [r0] + ldr r3, [r0, #0xc] + ldrb r1, [r3, #4] + lsls r1, r1, #1 + adds r0, r3, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + ldr r1, _08156E78 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r3, #0x18] + ldr r1, _08156E7C + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08156E70: .4byte gUnknown_2039AA0 +_08156E74: .4byte gUnknown_2039BD4 +_08156E78: .4byte gUnknown_8565FCC +_08156E7C: .4byte gUnknown_203A804 + thumb_func_end sub_08156E40 + + thumb_func_start sub_08156E80 +sub_08156E80: @ 0x08156E80 + push {lr} + bl sub_08156E40 + ldr r0, _08156EB4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156EB8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08156EBC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156EC0 + .align 2, 0 +_08156EB4: .4byte gUnknown_2039BD4 +_08156EB8: .4byte gUnknown_203A804 +_08156EBC: + adds r0, r2, #5 + str r0, [r3] +_08156EC0: + pop {r0} + bx r0 + thumb_func_end sub_08156E80 + + thumb_func_start sub_08156EC4 +sub_08156EC4: @ 0x08156EC4 + push {lr} + bl sub_08156E40 + ldr r0, _08156EF8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156EFC + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156F00 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156F04 + .align 2, 0 +_08156EF8: .4byte gUnknown_2039BD4 +_08156EFC: .4byte gUnknown_203A804 +_08156F00: + adds r0, r2, #5 + str r0, [r3] +_08156F04: + pop {r0} + bx r0 + thumb_func_end sub_08156EC4 + + thumb_func_start sub_08156F08 +sub_08156F08: @ 0x08156F08 + ldr r2, _08156F40 + ldr r0, _08156F44 + ldr r0, [r0] + ldr r3, [r0, #0xc] + ldrb r1, [r3, #4] + lsls r1, r1, #1 + adds r0, r3, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + ldr r2, _08156F48 + ldr r1, _08156F4C + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r3, #0x18] + ldr r1, _08156F50 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + bx lr + .align 2, 0 +_08156F40: .4byte gUnknown_2039AA0 +_08156F44: .4byte gUnknown_2039BD4 +_08156F48: .4byte gUnknown_8566AE4 +_08156F4C: .4byte gUnknown_8565FCC +_08156F50: .4byte gUnknown_203A804 + thumb_func_end sub_08156F08 + + thumb_func_start sub_08156F54 +sub_08156F54: @ 0x08156F54 + push {lr} + bl sub_08156F08 + ldr r0, _08156F88 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156F8C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08156F90 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156F94 + .align 2, 0 +_08156F88: .4byte gUnknown_2039BD4 +_08156F8C: .4byte gUnknown_203A804 +_08156F90: + adds r0, r2, #5 + str r0, [r3] +_08156F94: + pop {r0} + bx r0 + thumb_func_end sub_08156F54 + + thumb_func_start sub_08156F98 +sub_08156F98: @ 0x08156F98 + push {lr} + bl sub_08156F08 + ldr r0, _08156FCC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08156FD0 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08156FD4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08156FD8 + .align 2, 0 +_08156FCC: .4byte gUnknown_2039BD4 +_08156FD0: .4byte gUnknown_203A804 +_08156FD4: + adds r0, r2, #5 + str r0, [r3] +_08156FD8: + pop {r0} + bx r0 + thumb_func_end sub_08156F98 + + thumb_func_start sub_08156FDC +sub_08156FDC: @ 0x08156FDC + push {r4, r5, r6, r7, lr} + ldr r2, _0815703C + ldr r5, _08157040 + ldr r0, [r5] + ldr r1, [r0, #0xc] + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r1, #0x41 + ldrb r1, [r1] + lsls r1, r1, #6 + adds r0, r0, r1 + adds r2, #0x1e + adds r0, r0, r2 + ldrh r0, [r0] + ldr r3, _08157044 + ldr r4, _08157048 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r7, [r0, #1] + movs r6, #0 + ldr r0, _0815704C + mov ip, r0 + adds r1, r1, r2 +_08157010: + ldrh r0, [r1] + cmp r0, #0 + beq _08157026 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + cmp r7, r0 + blo _0815702E +_08157026: + adds r1, #2 + adds r6, #1 + cmp r6, #3 + ble _08157010 +_0815702E: + cmp r6, #4 + bne _08157050 + ldr r0, [r5] + ldr r1, [r0, #0xc] + movs r0, #1 + b _08157056 + .align 2, 0 +_0815703C: .4byte gUnknown_2039AA0 +_08157040: .4byte gUnknown_2039BD4 +_08157044: .4byte gUnknown_8566AE4 +_08157048: .4byte gUnknown_8565FCC +_0815704C: .4byte gUnknown_203A804 +_08157050: + ldr r0, [r5] + ldr r1, [r0, #0xc] + movs r0, #0 +_08157056: + strh r0, [r1, #0x18] + mov r1, ip + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08156FDC + + thumb_func_start sub_08157068 +sub_08157068: @ 0x08157068 + push {lr} + bl sub_08156FDC + ldr r0, _08157098 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _081570A0 + ldr r3, _0815709C + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081570A8 + .align 2, 0 +_08157098: .4byte gUnknown_2039BD4 +_0815709C: .4byte gUnknown_203A804 +_081570A0: + ldr r1, _081570AC + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_081570A8: + pop {r0} + bx r0 + .align 2, 0 +_081570AC: .4byte gUnknown_203A804 + thumb_func_end sub_08157068 + + thumb_func_start sub_081570B0 +sub_081570B0: @ 0x081570B0 + push {r4, r5, r6, r7, lr} + ldr r2, _08157110 + ldr r5, _08157114 + ldr r0, [r5] + ldr r1, [r0, #0xc] + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r1, #0x41 + ldrb r1, [r1] + lsls r1, r1, #6 + adds r0, r0, r1 + adds r2, #0x1e + adds r0, r0, r2 + ldrh r0, [r0] + ldr r3, _08157118 + ldr r4, _0815711C + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r7, [r0, #2] + movs r6, #0 + ldr r0, _08157120 + mov ip, r0 + adds r1, r1, r2 +_081570E4: + ldrh r0, [r1] + cmp r0, #0 + beq _081570FA + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + cmp r7, r0 + blo _08157102 +_081570FA: + adds r1, #2 + adds r6, #1 + cmp r6, #3 + ble _081570E4 +_08157102: + cmp r6, #4 + bne _08157124 + ldr r0, [r5] + ldr r1, [r0, #0xc] + movs r0, #1 + b _0815712A + .align 2, 0 +_08157110: .4byte gUnknown_2039AA0 +_08157114: .4byte gUnknown_2039BD4 +_08157118: .4byte gUnknown_8566AE4 +_0815711C: .4byte gUnknown_8565FCC +_08157120: .4byte gUnknown_203A804 +_08157124: + ldr r0, [r5] + ldr r1, [r0, #0xc] + movs r0, #0 +_0815712A: + strh r0, [r1, #0x18] + mov r1, ip + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081570B0 + + thumb_func_start sub_0815713C +sub_0815713C: @ 0x0815713C + push {lr} + bl sub_081570B0 + ldr r0, _0815716C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157174 + ldr r3, _08157170 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815717C + .align 2, 0 +_0815716C: .4byte gUnknown_2039BD4 +_08157170: .4byte gUnknown_203A804 +_08157174: + ldr r1, _08157180 + ldr r0, [r1] + adds r0, #5 + str r0, [r1] +_0815717C: + pop {r0} + bx r0 + .align 2, 0 +_08157180: .4byte gUnknown_203A804 + thumb_func_end sub_0815713C + + thumb_func_start sub_08157184 +sub_08157184: @ 0x08157184 + push {r4, lr} + ldr r2, _081571CC + ldr r0, _081571D0 + ldr r0, [r0] + ldr r4, [r0, #0xc] + ldrb r1, [r4, #4] + lsls r1, r1, #1 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + ldr r2, _081571D4 + ldr r1, _081571D8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #1] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x18] + ldr r1, _081571DC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081571CC: .4byte gUnknown_2039AA0 +_081571D0: .4byte gUnknown_2039BD4 +_081571D4: .4byte gUnknown_8566AE4 +_081571D8: .4byte gUnknown_8565FCC +_081571DC: .4byte gUnknown_203A804 + thumb_func_end sub_08157184 + + thumb_func_start sub_081571E0 +sub_081571E0: @ 0x081571E0 + push {lr} + bl sub_08157184 + ldr r0, _08157214 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157218 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _0815721C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157220 + .align 2, 0 +_08157214: .4byte gUnknown_2039BD4 +_08157218: .4byte gUnknown_203A804 +_0815721C: + adds r0, r2, #5 + str r0, [r3] +_08157220: + pop {r0} + bx r0 + thumb_func_end sub_081571E0 + + thumb_func_start sub_08157224 +sub_08157224: @ 0x08157224 + push {lr} + bl sub_08157184 + ldr r0, _08157258 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815725C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08157260 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157264 + .align 2, 0 +_08157258: .4byte gUnknown_2039BD4 +_0815725C: .4byte gUnknown_203A804 +_08157260: + adds r0, r2, #5 + str r0, [r3] +_08157264: + pop {r0} + bx r0 + thumb_func_end sub_08157224 + + thumb_func_start sub_08157268 +sub_08157268: @ 0x08157268 + push {lr} + bl sub_08157184 + ldr r0, _0815729C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081572A0 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _081572A4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081572A8 + .align 2, 0 +_0815729C: .4byte gUnknown_2039BD4 +_081572A0: .4byte gUnknown_203A804 +_081572A4: + adds r0, r2, #5 + str r0, [r3] +_081572A8: + pop {r0} + bx r0 + thumb_func_end sub_08157268 + + thumb_func_start sub_081572AC +sub_081572AC: @ 0x081572AC + push {lr} + bl sub_08157184 + ldr r0, _081572E0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081572E4 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _081572E8 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081572EC + .align 2, 0 +_081572E0: .4byte gUnknown_2039BD4 +_081572E4: .4byte gUnknown_203A804 +_081572E8: + adds r0, r2, #5 + str r0, [r3] +_081572EC: + pop {r0} + bx r0 + thumb_func_end sub_081572AC + + thumb_func_start sub_081572F0 +sub_081572F0: @ 0x081572F0 + push {r4, lr} + ldr r2, _08157338 + ldr r0, _0815733C + ldr r0, [r0] + ldr r4, [r0, #0xc] + ldrb r1, [r4, #4] + lsls r1, r1, #1 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r0, [r1] + ldr r2, _08157340 + ldr r1, _08157344 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x18] + ldr r1, _08157348 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08157338: .4byte gUnknown_2039AA0 +_0815733C: .4byte gUnknown_2039BD4 +_08157340: .4byte gUnknown_8566AE4 +_08157344: .4byte gUnknown_8565FCC +_08157348: .4byte gUnknown_203A804 + thumb_func_end sub_081572F0 + + thumb_func_start sub_0815734C +sub_0815734C: @ 0x0815734C + push {lr} + bl sub_081572F0 + ldr r0, _08157380 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157384 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08157388 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815738C + .align 2, 0 +_08157380: .4byte gUnknown_2039BD4 +_08157384: .4byte gUnknown_203A804 +_08157388: + adds r0, r2, #5 + str r0, [r3] +_0815738C: + pop {r0} + bx r0 + thumb_func_end sub_0815734C + + thumb_func_start sub_08157390 +sub_08157390: @ 0x08157390 + push {lr} + bl sub_081572F0 + ldr r0, _081573C4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081573C8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _081573CC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081573D0 + .align 2, 0 +_081573C4: .4byte gUnknown_2039BD4 +_081573C8: .4byte gUnknown_203A804 +_081573CC: + adds r0, r2, #5 + str r0, [r3] +_081573D0: + pop {r0} + bx r0 + thumb_func_end sub_08157390 + + thumb_func_start sub_081573D4 +sub_081573D4: @ 0x081573D4 + push {lr} + bl sub_081572F0 + ldr r0, _08157408 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815740C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08157410 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157414 + .align 2, 0 +_08157408: .4byte gUnknown_2039BD4 +_0815740C: .4byte gUnknown_203A804 +_08157410: + adds r0, r2, #5 + str r0, [r3] +_08157414: + pop {r0} + bx r0 + thumb_func_end sub_081573D4 + + thumb_func_start sub_08157418 +sub_08157418: @ 0x08157418 + push {lr} + bl sub_081572F0 + ldr r0, _0815744C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157450 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08157454 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157458 + .align 2, 0 +_0815744C: .4byte gUnknown_2039BD4 +_08157450: .4byte gUnknown_203A804 +_08157454: + adds r0, r2, #5 + str r0, [r3] +_08157458: + pop {r0} + bx r0 + thumb_func_end sub_08157418 + + thumb_func_start sub_0815745C +sub_0815745C: @ 0x0815745C + push {r4, r5, lr} + ldr r3, _0815748C + ldr r5, _08157490 + ldr r4, [r5] + ldr r1, [r4, #0xc] + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r1, #0x41 + ldrb r2, [r1] + lsls r1, r2, #6 + adds r0, r0, r1 + adds r3, #0x1e + adds r0, r0, r3 + ldrh r3, [r0] + ldr r1, [r4, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #8] + cmp r3, r1 + beq _08157494 + movs r1, #0 + b _0815749C + .align 2, 0 +_0815748C: .4byte gUnknown_2039AA0 +_08157490: .4byte gUnknown_2039BD4 +_08157494: + ldrb r0, [r0, #0xb] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1d + adds r1, r0, #1 +_0815749C: + ldr r0, [r5] + ldr r0, [r0, #0xc] + strh r1, [r0, #0x18] + ldr r1, _081574B0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081574B0: .4byte gUnknown_203A804 + thumb_func_end sub_0815745C + + thumb_func_start sub_081574B4 +sub_081574B4: @ 0x081574B4 + push {lr} + bl sub_0815745C + ldr r0, _081574E8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081574EC + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _081574F0 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081574F4 + .align 2, 0 +_081574E8: .4byte gUnknown_2039BD4 +_081574EC: .4byte gUnknown_203A804 +_081574F0: + adds r0, r2, #5 + str r0, [r3] +_081574F4: + pop {r0} + bx r0 + thumb_func_end sub_081574B4 + + thumb_func_start sub_081574F8 +sub_081574F8: @ 0x081574F8 + push {lr} + bl sub_0815745C + ldr r0, _0815752C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157530 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08157534 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157538 + .align 2, 0 +_0815752C: .4byte gUnknown_2039BD4 +_08157530: .4byte gUnknown_203A804 +_08157534: + adds r0, r2, #5 + str r0, [r3] +_08157538: + pop {r0} + bx r0 + thumb_func_end sub_081574F8 + + thumb_func_start sub_0815753C +sub_0815753C: @ 0x0815753C + push {lr} + bl sub_0815745C + ldr r0, _08157570 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157574 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08157578 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815757C + .align 2, 0 +_08157570: .4byte gUnknown_2039BD4 +_08157574: .4byte gUnknown_203A804 +_08157578: + adds r0, r2, #5 + str r0, [r3] +_0815757C: + pop {r0} + bx r0 + thumb_func_end sub_0815753C + + thumb_func_start sub_08157580 +sub_08157580: @ 0x08157580 + push {lr} + bl sub_0815745C + ldr r0, _081575B4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081575B8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _081575BC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081575C0 + .align 2, 0 +_081575B4: .4byte gUnknown_2039BD4 +_081575B8: .4byte gUnknown_203A804 +_081575BC: + adds r0, r2, #5 + str r0, [r3] +_081575C0: + pop {r0} + bx r0 + thumb_func_end sub_08157580 + + thumb_func_start sub_081575C4 +sub_081575C4: @ 0x081575C4 + push {r4, r5, r6, lr} + movs r3, #0 + ldr r2, _08157630 + ldr r0, _08157634 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldrb r1, [r0, #4] + lsls r1, r1, #1 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r5, [r1] + movs r4, #0 + adds r6, r2, #0 +_081575E6: + lsls r1, r4, #1 + ldr r0, _08157634 + ldr r0, [r0] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r1, r1, r6 + ldrh r0, [r1] + cmp r0, #0 + beq _0815760E + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_080E4BF0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _08157618 +_0815760E: + adds r4, #1 + cmp r4, #3 + ble _081575E6 + cmp r3, #0 + beq _0815761A +_08157618: + movs r3, #1 +_0815761A: + ldr r0, _08157634 + ldr r0, [r0] + ldr r0, [r0, #0xc] + strh r3, [r0, #0x18] + ldr r1, _08157638 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08157630: .4byte gUnknown_2039AA0 +_08157634: .4byte gUnknown_2039BD4 +_08157638: .4byte gUnknown_203A804 + thumb_func_end sub_081575C4 + + thumb_func_start sub_0815763C +sub_0815763C: @ 0x0815763C + push {lr} + bl sub_081575C4 + ldr r0, _0815766C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157674 + ldr r3, _08157670 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815767C + .align 2, 0 +_0815766C: .4byte gUnknown_2039BD4 +_08157670: .4byte gUnknown_203A804 +_08157674: + ldr r1, _08157680 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_0815767C: + pop {r0} + bx r0 + .align 2, 0 +_08157680: .4byte gUnknown_203A804 + thumb_func_end sub_0815763C + + thumb_func_start sub_08157684 +sub_08157684: @ 0x08157684 + push {lr} + bl sub_081575C4 + ldr r0, _081576B4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081576BC + ldr r3, _081576B8 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081576C4 + .align 2, 0 +_081576B4: .4byte gUnknown_2039BD4 +_081576B8: .4byte gUnknown_203A804 +_081576BC: + ldr r1, _081576C8 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_081576C4: + pop {r0} + bx r0 + .align 2, 0 +_081576C8: .4byte gUnknown_203A804 + thumb_func_end sub_08157684 + + thumb_func_start sub_081576CC +sub_081576CC: @ 0x081576CC + push {r4, r5, r6, lr} + movs r3, #0 + ldr r2, _08157738 + ldr r0, _0815773C + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldrb r1, [r0, #4] + lsls r1, r1, #1 + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r2, #0x1e + adds r1, r1, r2 + ldrh r5, [r1] + movs r4, #0 + adds r6, r2, #0 +_081576EE: + lsls r1, r4, #1 + ldr r0, _0815773C + ldr r0, [r0] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r1, r1, r6 + ldrh r0, [r1] + cmp r0, #0 + beq _08157714 + adds r1, r5, #0 + bl sub_080E4BF0 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0815771E +_08157714: + adds r4, #1 + cmp r4, #3 + ble _081576EE + cmp r3, #0 + beq _08157720 +_0815771E: + movs r3, #1 +_08157720: + ldr r0, _0815773C + ldr r0, [r0] + ldr r0, [r0, #0xc] + strh r3, [r0, #0x18] + ldr r1, _08157740 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08157738: .4byte gUnknown_2039AA0 +_0815773C: .4byte gUnknown_2039BD4 +_08157740: .4byte gUnknown_203A804 + thumb_func_end sub_081576CC + + thumb_func_start sub_08157744 +sub_08157744: @ 0x08157744 + push {lr} + bl sub_081576CC + ldr r0, _08157774 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0815777C + ldr r3, _08157778 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157784 + .align 2, 0 +_08157774: .4byte gUnknown_2039BD4 +_08157778: .4byte gUnknown_203A804 +_0815777C: + ldr r1, _08157788 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157784: + pop {r0} + bx r0 + .align 2, 0 +_08157788: .4byte gUnknown_203A804 + thumb_func_end sub_08157744 + + thumb_func_start sub_0815778C +sub_0815778C: @ 0x0815778C + push {lr} + bl sub_081576CC + ldr r0, _081577BC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081577C4 + ldr r3, _081577C0 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081577CC + .align 2, 0 +_081577BC: .4byte gUnknown_2039BD4 +_081577C0: .4byte gUnknown_203A804 +_081577C4: + ldr r1, _081577D0 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_081577CC: + pop {r0} + bx r0 + .align 2, 0 +_081577D0: .4byte gUnknown_203A804 + thumb_func_end sub_0815778C + + thumb_func_start sub_081577D4 +sub_081577D4: @ 0x081577D4 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r3, _08157828 + ldr r6, _0815782C + ldr r4, [r6] + ldr r1, [r4, #0xc] + ldrb r0, [r1, #4] + lsls r0, r0, #1 + adds r1, #0x41 + ldrb r2, [r1] + lsls r1, r2, #6 + adds r0, r0, r1 + adds r3, #0x1e + adds r0, r0, r3 + ldrh r3, [r0] + ldr r1, [r4, #4] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrh r0, [r1, #8] + cmp r0, #0 + beq _0815780C + adds r1, r3, #0 + bl sub_080E4BF0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_0815780C: + cmp r5, #0 + beq _08157812 + movs r5, #1 +_08157812: + ldr r0, [r6] + ldr r0, [r0, #0xc] + strh r5, [r0, #0x18] + ldr r1, _08157830 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08157828: .4byte gUnknown_2039AA0 +_0815782C: .4byte gUnknown_2039BD4 +_08157830: .4byte gUnknown_203A804 + thumb_func_end sub_081577D4 + + thumb_func_start sub_08157834 +sub_08157834: @ 0x08157834 + push {lr} + bl sub_081577D4 + ldr r0, _08157864 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0815786C + ldr r3, _08157868 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157874 + .align 2, 0 +_08157864: .4byte gUnknown_2039BD4 +_08157868: .4byte gUnknown_203A804 +_0815786C: + ldr r1, _08157878 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157874: + pop {r0} + bx r0 + .align 2, 0 +_08157878: .4byte gUnknown_203A804 + thumb_func_end sub_08157834 + + thumb_func_start sub_0815787C +sub_0815787C: @ 0x0815787C + push {lr} + bl sub_081577D4 + ldr r0, _081578AC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _081578B4 + ldr r3, _081578B0 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081578BC + .align 2, 0 +_081578AC: .4byte gUnknown_2039BD4 +_081578B0: .4byte gUnknown_203A804 +_081578B4: + ldr r1, _081578C0 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_081578BC: + pop {r0} + bx r0 + .align 2, 0 +_081578C0: .4byte gUnknown_203A804 + thumb_func_end sub_0815787C + + thumb_func_start sub_081578C4 +sub_081578C4: @ 0x081578C4 + push {r4, r5, lr} + ldr r4, _08157900 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08157904 + ldr r1, [r1] + ldr r5, [r1, #0xc] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0xd + ldrsb r0, [r1, r0] + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r5, #0x18] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08157900: .4byte gUnknown_203A804 +_08157904: .4byte gUnknown_2039BD4 + thumb_func_end sub_081578C4 + + thumb_func_start sub_08157908 +sub_08157908: @ 0x08157908 + push {lr} + bl sub_081578C4 + ldr r0, _0815793C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157940 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08157944 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157948 + .align 2, 0 +_0815793C: .4byte gUnknown_2039BD4 +_08157940: .4byte gUnknown_203A804 +_08157944: + adds r0, r2, #5 + str r0, [r3] +_08157948: + pop {r0} + bx r0 + thumb_func_end sub_08157908 + + thumb_func_start sub_0815794C +sub_0815794C: @ 0x0815794C + push {lr} + bl sub_081578C4 + ldr r0, _08157980 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157984 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08157988 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815798C + .align 2, 0 +_08157980: .4byte gUnknown_2039BD4 +_08157984: .4byte gUnknown_203A804 +_08157988: + adds r0, r2, #5 + str r0, [r3] +_0815798C: + pop {r0} + bx r0 + thumb_func_end sub_0815794C + + thumb_func_start sub_08157990 +sub_08157990: @ 0x08157990 + push {lr} + bl sub_081578C4 + ldr r0, _081579C4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081579C8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _081579CC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081579D0 + .align 2, 0 +_081579C4: .4byte gUnknown_2039BD4 +_081579C8: .4byte gUnknown_203A804 +_081579CC: + adds r0, r2, #5 + str r0, [r3] +_081579D0: + pop {r0} + bx r0 + thumb_func_end sub_08157990 + + thumb_func_start sub_081579D4 +sub_081579D4: @ 0x081579D4 + push {lr} + bl sub_081578C4 + ldr r0, _08157A08 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157A0C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08157A10 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157A14 + .align 2, 0 +_08157A08: .4byte gUnknown_2039BD4 +_08157A0C: .4byte gUnknown_203A804 +_08157A10: + adds r0, r2, #5 + str r0, [r3] +_08157A14: + pop {r0} + bx r0 + thumb_func_end sub_081579D4 + + thumb_func_start sub_08157A18 +sub_08157A18: @ 0x08157A18 + push {r4, r5, r6, lr} + movs r6, #0 + ldr r5, _08157A68 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_080DD94C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08157A54 + ldr r2, _08157A6C + ldr r0, _08157A70 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #8] + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r1, [r0, #2] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r6, r0, #0x1f +_08157A54: + ldr r0, _08157A70 + ldr r0, [r0] + ldr r0, [r0, #0xc] + strh r6, [r0, #0x18] + ldr r0, [r5] + adds r0, #2 + str r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08157A68: .4byte gUnknown_203A804 +_08157A6C: .4byte gUnknown_8565FCC +_08157A70: .4byte gUnknown_2039BD4 + thumb_func_end sub_08157A18 + + thumb_func_start sub_08157A74 +sub_08157A74: @ 0x08157A74 + push {lr} + bl sub_08157A18 + ldr r0, _08157AA8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157AAC + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08157AB0 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157AB4 + .align 2, 0 +_08157AA8: .4byte gUnknown_2039BD4 +_08157AAC: .4byte gUnknown_203A804 +_08157AB0: + adds r0, r2, #5 + str r0, [r3] +_08157AB4: + pop {r0} + bx r0 + thumb_func_end sub_08157A74 + + thumb_func_start sub_08157AB8 +sub_08157AB8: @ 0x08157AB8 + push {lr} + bl sub_08157A18 + ldr r0, _08157AEC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157AF0 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08157AF4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157AF8 + .align 2, 0 +_08157AEC: .4byte gUnknown_2039BD4 +_08157AF0: .4byte gUnknown_203A804 +_08157AF4: + adds r0, r2, #5 + str r0, [r3] +_08157AF8: + pop {r0} + bx r0 + thumb_func_end sub_08157AB8 + + thumb_func_start sub_08157AFC +sub_08157AFC: @ 0x08157AFC + push {lr} + bl sub_08157A18 + ldr r0, _08157B30 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157B34 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08157B38 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157B3C + .align 2, 0 +_08157B30: .4byte gUnknown_2039BD4 +_08157B34: .4byte gUnknown_203A804 +_08157B38: + adds r0, r2, #5 + str r0, [r3] +_08157B3C: + pop {r0} + bx r0 + thumb_func_end sub_08157AFC + + thumb_func_start sub_08157B40 +sub_08157B40: @ 0x08157B40 + push {lr} + bl sub_08157A18 + ldr r0, _08157B74 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08157B78 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08157B7C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157B80 + .align 2, 0 +_08157B74: .4byte gUnknown_2039BD4 +_08157B78: .4byte gUnknown_203A804 +_08157B7C: + adds r0, r2, #5 + str r0, [r3] +_08157B80: + pop {r0} + bx r0 + thumb_func_end sub_08157B40 + + thumb_func_start sub_08157B84 +sub_08157B84: @ 0x08157B84 + push {lr} + ldr r0, _08157BA8 + ldr r0, [r0] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080DB40C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08157BB0 + ldr r0, _08157BAC + ldr r0, [r0] + ldr r1, [r0, #0xc] + movs r0, #0 + b _08157BB8 + .align 2, 0 +_08157BA8: .4byte gUnknown_203A804 +_08157BAC: .4byte gUnknown_2039BD4 +_08157BB0: + ldr r0, _08157BC8 + ldr r0, [r0] + ldr r1, [r0, #0xc] + movs r0, #1 +_08157BB8: + strh r0, [r1, #0x18] + ldr r1, _08157BCC + ldr r0, [r1] + adds r0, #2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08157BC8: .4byte gUnknown_2039BD4 +_08157BCC: .4byte gUnknown_203A804 + thumb_func_end sub_08157B84 + + thumb_func_start sub_08157BD0 +sub_08157BD0: @ 0x08157BD0 + push {lr} + bl sub_08157B84 + ldr r0, _08157C00 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157C08 + ldr r3, _08157C04 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157C10 + .align 2, 0 +_08157C00: .4byte gUnknown_2039BD4 +_08157C04: .4byte gUnknown_203A804 +_08157C08: + ldr r1, _08157C14 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157C10: + pop {r0} + bx r0 + .align 2, 0 +_08157C14: .4byte gUnknown_203A804 + thumb_func_end sub_08157BD0 + + thumb_func_start sub_08157C18 +sub_08157C18: @ 0x08157C18 + push {lr} + bl sub_08157B84 + ldr r0, _08157C48 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08157C50 + ldr r3, _08157C4C + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157C58 + .align 2, 0 +_08157C48: .4byte gUnknown_2039BD4 +_08157C4C: .4byte gUnknown_203A804 +_08157C50: + ldr r1, _08157C5C + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157C58: + pop {r0} + bx r0 + .align 2, 0 +_08157C5C: .4byte gUnknown_203A804 + thumb_func_end sub_08157C18 + + thumb_func_start sub_08157C60 +sub_08157C60: @ 0x08157C60 + push {r4, lr} + ldr r4, _08157C94 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08157C98 + ldr r1, [r1] + ldr r3, [r1, #0xc] + ldr r2, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #0x15] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1f + strh r0, [r3, #0x18] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08157C94: .4byte gUnknown_203A804 +_08157C98: .4byte gUnknown_2039BD4 + thumb_func_end sub_08157C60 + + thumb_func_start sub_08157C9C +sub_08157C9C: @ 0x08157C9C + push {lr} + bl sub_08157C60 + ldr r0, _08157CCC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157CD4 + ldr r3, _08157CD0 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157CDC + .align 2, 0 +_08157CCC: .4byte gUnknown_2039BD4 +_08157CD0: .4byte gUnknown_203A804 +_08157CD4: + ldr r1, _08157CE0 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157CDC: + pop {r0} + bx r0 + .align 2, 0 +_08157CE0: .4byte gUnknown_203A804 + thumb_func_end sub_08157C9C + + thumb_func_start sub_08157CE4 +sub_08157CE4: @ 0x08157CE4 + push {lr} + bl sub_08157C60 + ldr r0, _08157D14 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08157D1C + ldr r3, _08157D18 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157D24 + .align 2, 0 +_08157D14: .4byte gUnknown_2039BD4 +_08157D18: .4byte gUnknown_203A804 +_08157D1C: + ldr r1, _08157D28 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157D24: + pop {r0} + bx r0 + .align 2, 0 +_08157D28: .4byte gUnknown_203A804 + thumb_func_end sub_08157CE4 + + thumb_func_start sub_08157D2C +sub_08157D2C: @ 0x08157D2C + push {r4, r5, lr} + ldr r4, _08157D70 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08157D74 + ldr r1, [r1] + ldr r5, [r1, #0xc] + ldr r3, [r1, #4] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r2, [r0] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r1, #4] + ldrh r0, [r0, #4] + subs r1, r1, r0 + strh r1, [r5, #0x18] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08157D70: .4byte gUnknown_203A804 +_08157D74: .4byte gUnknown_2039BD4 + thumb_func_end sub_08157D2C + + thumb_func_start sub_08157D78 +sub_08157D78: @ 0x08157D78 + push {lr} + bl sub_08157D2C + ldr r0, _08157DA8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _08157DB0 + ldr r3, _08157DAC + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157DB8 + .align 2, 0 +_08157DA8: .4byte gUnknown_2039BD4 +_08157DAC: .4byte gUnknown_203A804 +_08157DB0: + ldr r1, _08157DBC + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157DB8: + pop {r0} + bx r0 + .align 2, 0 +_08157DBC: .4byte gUnknown_203A804 + thumb_func_end sub_08157D78 + + thumb_func_start sub_08157DC0 +sub_08157DC0: @ 0x08157DC0 + push {lr} + bl sub_08157D2C + ldr r0, _08157DF0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _08157DF8 + ldr r3, _08157DF4 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157E00 + .align 2, 0 +_08157DF0: .4byte gUnknown_2039BD4 +_08157DF4: .4byte gUnknown_203A804 +_08157DF8: + ldr r1, _08157E04 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157E00: + pop {r0} + bx r0 + .align 2, 0 +_08157E04: .4byte gUnknown_203A804 + thumb_func_end sub_08157DC0 + + thumb_func_start sub_08157E08 +sub_08157E08: @ 0x08157E08 + push {lr} + bl sub_08157D2C + ldr r0, _08157E38 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08157E40 + ldr r3, _08157E3C + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157E48 + .align 2, 0 +_08157E38: .4byte gUnknown_2039BD4 +_08157E3C: .4byte gUnknown_203A804 +_08157E40: + ldr r1, _08157E4C + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157E48: + pop {r0} + bx r0 + .align 2, 0 +_08157E4C: .4byte gUnknown_203A804 + thumb_func_end sub_08157E08 + + thumb_func_start sub_08157E50 +sub_08157E50: @ 0x08157E50 + push {lr} + bl sub_08157D2C + ldr r0, _08157E80 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157E88 + ldr r3, _08157E84 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157E90 + .align 2, 0 +_08157E80: .4byte gUnknown_2039BD4 +_08157E84: .4byte gUnknown_203A804 +_08157E88: + ldr r1, _08157E94 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157E90: + pop {r0} + bx r0 + .align 2, 0 +_08157E94: .4byte gUnknown_203A804 + thumb_func_end sub_08157E50 + + thumb_func_start sub_08157E98 +sub_08157E98: @ 0x08157E98 + push {r4, lr} + ldr r4, _08157ED0 + ldr r0, [r4] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + ldr r1, _08157ED4 + ldr r1, [r1] + ldr r3, [r1, #0xc] + ldr r2, _08157ED8 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + adds r1, r3, #0 + adds r1, #0x41 + ldrb r1, [r1] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r3, #0x18] + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08157ED0: .4byte gUnknown_203A804 +_08157ED4: .4byte gUnknown_2039BD4 +_08157ED8: .4byte gUnknown_2039BA0 + thumb_func_end sub_08157E98 + + thumb_func_start sub_08157EDC +sub_08157EDC: @ 0x08157EDC + push {lr} + bl sub_08157E98 + ldr r0, _08157F0C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _08157F14 + ldr r3, _08157F10 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157F1C + .align 2, 0 +_08157F0C: .4byte gUnknown_2039BD4 +_08157F10: .4byte gUnknown_203A804 +_08157F14: + ldr r1, _08157F20 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157F1C: + pop {r0} + bx r0 + .align 2, 0 +_08157F20: .4byte gUnknown_203A804 + thumb_func_end sub_08157EDC + + thumb_func_start sub_08157F24 +sub_08157F24: @ 0x08157F24 + push {lr} + bl sub_08157E98 + ldr r0, _08157F54 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _08157F5C + ldr r3, _08157F58 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157F64 + .align 2, 0 +_08157F54: .4byte gUnknown_2039BD4 +_08157F58: .4byte gUnknown_203A804 +_08157F5C: + ldr r1, _08157F68 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157F64: + pop {r0} + bx r0 + .align 2, 0 +_08157F68: .4byte gUnknown_203A804 + thumb_func_end sub_08157F24 + + thumb_func_start sub_08157F6C +sub_08157F6C: @ 0x08157F6C + push {lr} + bl sub_08157E98 + ldr r0, _08157F9C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08157FA4 + ldr r3, _08157FA0 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157FAC + .align 2, 0 +_08157F9C: .4byte gUnknown_2039BD4 +_08157FA0: .4byte gUnknown_203A804 +_08157FA4: + ldr r1, _08157FB0 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157FAC: + pop {r0} + bx r0 + .align 2, 0 +_08157FB0: .4byte gUnknown_203A804 + thumb_func_end sub_08157F6C + + thumb_func_start sub_08157FB4 +sub_08157FB4: @ 0x08157FB4 + push {lr} + bl sub_08157E98 + ldr r0, _08157FE4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08157FEC + ldr r3, _08157FE8 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08157FF4 + .align 2, 0 +_08157FE4: .4byte gUnknown_2039BD4 +_08157FE8: .4byte gUnknown_203A804 +_08157FEC: + ldr r1, _08157FF8 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08157FF4: + pop {r0} + bx r0 + .align 2, 0 +_08157FF8: .4byte gUnknown_203A804 + thumb_func_end sub_08157FB4 + + thumb_func_start sub_08157FFC +sub_08157FFC: @ 0x08157FFC + push {r4, r5, lr} + ldr r5, _08158038 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + ldr r3, [r5] + ldrb r2, [r3, #2] + ldr r1, _0815803C + ldr r4, [r1] + ldr r1, [r4] + lsrs r0, r0, #0x17 + lsls r2, r2, #3 + adds r0, r0, r2 + adds r1, #0x1c + adds r1, r1, r0 + ldrh r0, [r1] + ldr r2, [r4, #0xc] + ldr r1, _08158040 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2, #0x18] + adds r3, #3 + str r3, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08158038: .4byte gUnknown_203A804 +_0815803C: .4byte gUnknown_2039BD4 +_08158040: .4byte gUnknown_8565FCC + thumb_func_end sub_08157FFC + + thumb_func_start sub_08158044 +sub_08158044: @ 0x08158044 + push {lr} + bl sub_08157FFC + ldr r0, _08158078 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815807C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _08158080 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158084 + .align 2, 0 +_08158078: .4byte gUnknown_2039BD4 +_0815807C: .4byte gUnknown_203A804 +_08158080: + adds r0, r2, #5 + str r0, [r3] +_08158084: + pop {r0} + bx r0 + thumb_func_end sub_08158044 + + thumb_func_start sub_08158088 +sub_08158088: @ 0x08158088 + push {lr} + bl sub_08157FFC + ldr r0, _081580BC + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081580C0 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _081580C4 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081580C8 + .align 2, 0 +_081580BC: .4byte gUnknown_2039BD4 +_081580C0: .4byte gUnknown_203A804 +_081580C4: + adds r0, r2, #5 + str r0, [r3] +_081580C8: + pop {r0} + bx r0 + thumb_func_end sub_08158088 + + thumb_func_start sub_081580CC +sub_081580CC: @ 0x081580CC + push {lr} + bl sub_08157FFC + ldr r0, _08158100 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08158104 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08158108 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815810C + .align 2, 0 +_08158100: .4byte gUnknown_2039BD4 +_08158104: .4byte gUnknown_203A804 +_08158108: + adds r0, r2, #5 + str r0, [r3] +_0815810C: + pop {r0} + bx r0 + thumb_func_end sub_081580CC + + thumb_func_start sub_08158110 +sub_08158110: @ 0x08158110 + push {lr} + bl sub_08157FFC + ldr r0, _08158144 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08158148 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _0815814C + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158150 + .align 2, 0 +_08158144: .4byte gUnknown_2039BD4 +_08158148: .4byte gUnknown_203A804 +_0815814C: + adds r0, r2, #5 + str r0, [r3] +_08158150: + pop {r0} + bx r0 + thumb_func_end sub_08158110 + + thumb_func_start sub_08158154 +sub_08158154: @ 0x08158154 + push {r4, r5, lr} + ldr r5, _08158188 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [r5] + ldrb r2, [r3, #2] + ldr r1, _0815818C + ldr r4, [r1] + ldr r1, [r4] + lsls r2, r2, #2 + adds r0, r0, r2 + adds r1, #0x44 + adds r1, r1, r0 + ldr r2, [r4, #0xc] + movs r0, #0 + ldrsb r0, [r1, r0] + strh r0, [r2, #0x18] + adds r3, #3 + str r3, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08158188: .4byte gUnknown_203A804 +_0815818C: .4byte gUnknown_2039BD4 + thumb_func_end sub_08158154 + + thumb_func_start sub_08158190 +sub_08158190: @ 0x08158190 + push {lr} + bl sub_08158154 + ldr r0, _081581C4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _081581C8 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bge _081581CC + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _081581D0 + .align 2, 0 +_081581C4: .4byte gUnknown_2039BD4 +_081581C8: .4byte gUnknown_203A804 +_081581CC: + adds r0, r2, #5 + str r0, [r3] +_081581D0: + pop {r0} + bx r0 + thumb_func_end sub_08158190 + + thumb_func_start sub_081581D4 +sub_081581D4: @ 0x081581D4 + push {lr} + bl sub_08158154 + ldr r0, _08158208 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815820C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + ble _08158210 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158214 + .align 2, 0 +_08158208: .4byte gUnknown_2039BD4 +_0815820C: .4byte gUnknown_203A804 +_08158210: + adds r0, r2, #5 + str r0, [r3] +_08158214: + pop {r0} + bx r0 + thumb_func_end sub_081581D4 + + thumb_func_start sub_08158218 +sub_08158218: @ 0x08158218 + push {lr} + bl sub_08158154 + ldr r0, _0815824C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08158250 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08158254 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158258 + .align 2, 0 +_0815824C: .4byte gUnknown_2039BD4 +_08158250: .4byte gUnknown_203A804 +_08158254: + adds r0, r2, #5 + str r0, [r3] +_08158258: + pop {r0} + bx r0 + thumb_func_end sub_08158218 + + thumb_func_start sub_0815825C +sub_0815825C: @ 0x0815825C + push {lr} + bl sub_08158154 + ldr r0, _08158290 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08158294 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08158298 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0815829C + .align 2, 0 +_08158290: .4byte gUnknown_2039BD4 +_08158294: .4byte gUnknown_203A804 +_08158298: + adds r0, r2, #5 + str r0, [r3] +_0815829C: + pop {r0} + bx r0 + thumb_func_end sub_0815825C + + thumb_func_start sub_081582A0 +sub_081582A0: @ 0x081582A0 + push {r4, r5, lr} + ldr r5, _081582E4 + ldr r0, [r5] + ldrb r0, [r0, #1] + bl sub_081563E8 + lsls r0, r0, #0x18 + ldr r3, [r5] + ldrb r2, [r3, #2] + ldr r1, _081582E8 + ldr r4, [r1] + ldr r1, [r4] + lsrs r0, r0, #0x17 + lsls r2, r2, #3 + adds r0, r0, r2 + adds r1, #0x1c + adds r1, r1, r0 + ldrh r0, [r1] + ldr r4, [r4, #0xc] + ldr r2, _081582EC + ldr r1, _081582F0 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x18] + adds r3, #3 + str r3, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081582E4: .4byte gUnknown_203A804 +_081582E8: .4byte gUnknown_2039BD4 +_081582EC: .4byte gUnknown_8566AE4 +_081582F0: .4byte gUnknown_8565FCC + thumb_func_end sub_081582A0 + + thumb_func_start sub_081582F4 +sub_081582F4: @ 0x081582F4 + push {lr} + bl sub_081582A0 + ldr r0, _08158328 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _0815832C + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + bne _08158330 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158334 + .align 2, 0 +_08158328: .4byte gUnknown_2039BD4 +_0815832C: .4byte gUnknown_203A804 +_08158330: + adds r0, r2, #5 + str r0, [r3] +_08158334: + pop {r0} + bx r0 + thumb_func_end sub_081582F4 + + thumb_func_start sub_08158338 +sub_08158338: @ 0x08158338 + push {lr} + bl sub_081582A0 + ldr r0, _0815836C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + ldr r3, _08158370 + ldr r2, [r3] + ldrb r1, [r2] + cmp r0, r1 + beq _08158374 + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158378 + .align 2, 0 +_0815836C: .4byte gUnknown_2039BD4 +_08158370: .4byte gUnknown_203A804 +_08158374: + adds r0, r2, #5 + str r0, [r3] +_08158378: + pop {r0} + bx r0 + thumb_func_end sub_08158338 + + thumb_func_start sub_0815837C +sub_0815837C: @ 0x0815837C + push {r4, lr} + ldr r0, _081583A0 + ldr r0, [r0] + ldr r3, [r0, #0xc] + ldr r4, _081583A4 + ldr r2, [r4] + ldrb r0, [r2, #1] + lsls r0, r0, #1 + adds r1, r3, #0 + adds r1, #0x1a + adds r1, r1, r0 + ldrh r0, [r3, #0x18] + strh r0, [r1] + adds r2, #2 + str r2, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081583A0: .4byte gUnknown_2039BD4 +_081583A4: .4byte gUnknown_203A804 + thumb_func_end sub_0815837C + + thumb_func_start sub_081583A8 +sub_081583A8: @ 0x081583A8 + push {r4, lr} + ldr r0, _081583D0 + ldr r0, [r0] + ldr r3, [r0, #0xc] + ldr r4, _081583D4 + ldr r2, [r4] + ldrb r0, [r2, #1] + lsls r0, r0, #1 + adds r3, #0x1a + adds r3, r3, r0 + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r3] + adds r2, #4 + str r2, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081583D0: .4byte gUnknown_2039BD4 +_081583D4: .4byte gUnknown_203A804 + thumb_func_end sub_081583A8 + + thumb_func_start sub_081583D8 +sub_081583D8: @ 0x081583D8 + push {r4, lr} + ldr r0, _08158408 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _0815840C + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r2, #0x1a + adds r2, r2, r0 + movs r1, #2 + ldrsb r1, [r3, r1] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrh r0, [r2] + adds r1, r1, r0 + strh r1, [r2] + adds r3, #4 + str r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158408: .4byte gUnknown_2039BD4 +_0815840C: .4byte gUnknown_203A804 + thumb_func_end sub_081583D8 + + thumb_func_start sub_08158410 +sub_08158410: @ 0x08158410 + push {r4, lr} + ldr r0, _0815843C + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08158440 + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + ldrh r0, [r2] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r3, #3 + str r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815843C: .4byte gUnknown_2039BD4 +_08158440: .4byte gUnknown_203A804 + thumb_func_end sub_08158410 + + thumb_func_start sub_08158444 +sub_08158444: @ 0x08158444 + push {r4, lr} + ldr r0, _08158470 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08158474 + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + ldrh r0, [r2] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r3, #3 + str r3, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158470: .4byte gUnknown_2039BD4 +_08158474: .4byte gUnknown_203A804 + thumb_func_end sub_08158444 + + thumb_func_start sub_08158478 +sub_08158478: @ 0x08158478 + push {r4, lr} + ldr r0, _081584B4 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _081584B8 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r0, #0 + ldrsh r2, [r1, r0] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + cmp r2, r1 + bge _081584BC + ldrb r1, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081584C2 + .align 2, 0 +_081584B4: .4byte gUnknown_2039BD4 +_081584B8: .4byte gUnknown_203A804 +_081584BC: + adds r0, r3, #0 + adds r0, #8 + str r0, [r4] +_081584C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08158478 + + thumb_func_start sub_081584C8 +sub_081584C8: @ 0x081584C8 + push {r4, lr} + ldr r0, _08158504 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _08158508 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r0, #0 + ldrsh r2, [r1, r0] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + cmp r2, r1 + ble _0815850C + ldrb r1, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158512 + .align 2, 0 +_08158504: .4byte gUnknown_2039BD4 +_08158508: .4byte gUnknown_203A804 +_0815850C: + adds r0, r3, #0 + adds r0, #8 + str r0, [r4] +_08158512: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081584C8 + + thumb_func_start sub_08158518 +sub_08158518: @ 0x08158518 + push {r4, lr} + ldr r0, _08158554 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _08158558 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r0, #0 + ldrsh r2, [r1, r0] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + cmp r2, r1 + bne _0815855C + ldrb r1, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158562 + .align 2, 0 +_08158554: .4byte gUnknown_2039BD4 +_08158558: .4byte gUnknown_203A804 +_0815855C: + adds r0, r3, #0 + adds r0, #8 + str r0, [r4] +_08158562: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08158518 + + thumb_func_start sub_08158568 +sub_08158568: @ 0x08158568 + push {r4, lr} + ldr r0, _081585A4 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _081585A8 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r0, #0 + ldrsh r2, [r1, r0] + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + cmp r2, r1 + beq _081585AC + ldrb r1, [r3, #4] + ldrb r0, [r3, #5] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #7] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081585B2 + .align 2, 0 +_081585A4: .4byte gUnknown_2039BD4 +_081585A8: .4byte gUnknown_203A804 +_081585AC: + adds r0, r3, #0 + adds r0, #8 + str r0, [r4] +_081585B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08158568 + + thumb_func_start sub_081585B8 +sub_081585B8: @ 0x081585B8 + push {r4, r5, lr} + ldr r0, _081585F8 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _081585FC + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r1, r0 + bge _08158600 + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158604 + .align 2, 0 +_081585F8: .4byte gUnknown_2039BD4 +_081585FC: .4byte gUnknown_203A804 +_08158600: + adds r0, r3, #7 + str r0, [r4] +_08158604: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081585B8 + + thumb_func_start sub_0815860C +sub_0815860C: @ 0x0815860C + push {r4, r5, lr} + ldr r0, _0815864C + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _08158650 + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r1, r0 + ble _08158654 + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158658 + .align 2, 0 +_0815864C: .4byte gUnknown_2039BD4 +_08158650: .4byte gUnknown_203A804 +_08158654: + adds r0, r3, #7 + str r0, [r4] +_08158658: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815860C + + thumb_func_start sub_08158660 +sub_08158660: @ 0x08158660 + push {r4, r5, lr} + ldr r0, _081586A0 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _081586A4 + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r1, r0 + bne _081586A8 + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081586AC + .align 2, 0 +_081586A0: .4byte gUnknown_2039BD4 +_081586A4: .4byte gUnknown_203A804 +_081586A8: + adds r0, r3, #7 + str r0, [r4] +_081586AC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08158660 + + thumb_func_start sub_081586B4 +sub_081586B4: @ 0x081586B4 + push {r4, r5, lr} + ldr r0, _081586F4 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r4, _081586F8 + ldr r3, [r4] + ldrb r1, [r3, #1] + lsls r1, r1, #1 + adds r2, #0x1a + adds r1, r2, r1 + ldrb r0, [r3, #2] + lsls r0, r0, #1 + adds r2, r2, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r5, #0 + ldrsh r0, [r2, r5] + cmp r1, r0 + beq _081586FC + ldrb r1, [r3, #3] + ldrb r0, [r3, #4] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #6] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158700 + .align 2, 0 +_081586F4: .4byte gUnknown_2039BD4 +_081586F8: .4byte gUnknown_203A804 +_081586FC: + adds r0, r3, #7 + str r0, [r4] +_08158700: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081586B4 + + thumb_func_start sub_08158708 +sub_08158708: @ 0x08158708 + push {r4, r5, lr} + bl sub_0806F050 + movs r2, #0xff + ands r2, r0 + ldr r0, _08158744 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _08158748 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r5, #0 + ldrsh r0, [r1, r5] + cmp r2, r0 + bge _0815874C + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _08158750 + .align 2, 0 +_08158744: .4byte gUnknown_2039BD4 +_08158748: .4byte gUnknown_203A804 +_0815874C: + adds r0, r3, #6 + str r0, [r4] +_08158750: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08158708 + + thumb_func_start sub_08158758 +sub_08158758: @ 0x08158758 + push {r4, r5, lr} + bl sub_0806F050 + movs r2, #0xff + ands r2, r0 + ldr r0, _08158794 + ldr r0, [r0] + ldr r1, [r0, #0xc] + ldr r4, _08158798 + ldr r3, [r4] + ldrb r0, [r3, #1] + lsls r0, r0, #1 + adds r1, #0x1a + adds r1, r1, r0 + movs r5, #0 + ldrsh r0, [r1, r5] + cmp r2, r0 + ble _0815879C + ldrb r1, [r3, #2] + ldrb r0, [r3, #3] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r3, #4] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r3, #5] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + b _081587A0 + .align 2, 0 +_08158794: .4byte gUnknown_2039BD4 +_08158798: .4byte gUnknown_203A804 +_0815879C: + adds r0, r3, #6 + str r0, [r4] +_081587A0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08158758 + + thumb_func_start sub_081587A8 +sub_081587A8: @ 0x081587A8 + ldr r3, _081587C4 + ldr r2, [r3] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_081587C4: .4byte gUnknown_203A804 + thumb_func_end sub_081587A8 + + thumb_func_start sub_081587C8 +sub_081587C8: @ 0x081587C8 + push {r4, lr} + ldr r4, _081587F4 + ldr r0, [r4] + adds r0, #5 + bl sub_0815881C + ldr r2, [r4] + ldrb r1, [r2, #1] + ldrb r0, [r2, #2] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #4] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081587F4: .4byte gUnknown_203A804 + thumb_func_end sub_081587C8 + + thumb_func_start sub_081587F8 +sub_081587F8: @ 0x081587F8 + push {lr} + bl sub_08158844 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158812 + ldr r0, _08158818 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldrb r1, [r2, #9] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #9] +_08158812: + pop {r0} + bx r0 + .align 2, 0 +_08158818: .4byte gUnknown_2039BD4 + thumb_func_end sub_081587F8 + + thumb_func_start sub_0815881C +sub_0815881C: @ 0x0815881C + push {r4, lr} + ldr r1, _08158840 + ldr r1, [r1] + ldr r3, [r1, #0xc] + adds r4, r3, #0 + adds r4, #0x40 + ldrb r1, [r4] + adds r2, r1, #1 + strb r2, [r4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x16 + adds r3, #0x20 + adds r3, r3, r1 + str r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08158840: .4byte gUnknown_2039BD4 + thumb_func_end sub_0815881C + + thumb_func_start sub_08158844 +sub_08158844: @ 0x08158844 + push {lr} + ldr r3, _0815885C + ldr r0, [r3] + ldr r0, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x40 + ldrb r0, [r1] + cmp r0, #0 + bne _08158860 + movs r0, #0 + b _0815887C + .align 2, 0 +_0815885C: .4byte gUnknown_2039BD4 +_08158860: + subs r0, #1 + strb r0, [r1] + ldr r2, _08158880 + ldr r0, [r3] + ldr r1, [r0, #0xc] + adds r0, r1, #0 + adds r0, #0x40 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, #0x20 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + movs r0, #1 +_0815887C: + pop {r1} + bx r1 + .align 2, 0 +_08158880: .4byte gUnknown_203A804 + thumb_func_end sub_08158844 + + thumb_func_start sub_08158884 +sub_08158884: @ 0x08158884 + push {r4, r5, r6, lr} + movs r5, #0 + movs r4, #0 + ldr r6, _081588B4 +_0815888C: + lsls r1, r4, #1 + ldr r0, _081588B8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + adds r1, r1, r6 + ldrh r0, [r1] + cmp r0, #0 + beq _081588BC + bl sub_080DD154 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _081588BC + movs r5, #1 + b _081588C2 + .align 2, 0 +_081588B4: .4byte gUnknown_2039ABE +_081588B8: .4byte gUnknown_2039BD4 +_081588BC: + adds r4, #1 + cmp r4, #3 + ble _0815888C +_081588C2: + ldr r0, _081588D8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + strh r5, [r0, #0x18] + ldr r1, _081588DC + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081588D8: .4byte gUnknown_2039BD4 +_081588DC: .4byte gUnknown_203A804 + thumb_func_end sub_08158884 + + thumb_func_start sub_081588E0 +sub_081588E0: @ 0x081588E0 + push {lr} + bl sub_08158884 + ldr r0, _08158910 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08158918 + ldr r3, _08158914 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158920 + .align 2, 0 +_08158910: .4byte gUnknown_2039BD4 +_08158914: .4byte gUnknown_203A804 +_08158918: + ldr r1, _08158924 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08158920: + pop {r0} + bx r0 + .align 2, 0 +_08158924: .4byte gUnknown_203A804 + thumb_func_end sub_081588E0 + + thumb_func_start sub_08158928 +sub_08158928: @ 0x08158928 + push {lr} + bl sub_08158884 + ldr r0, _08158958 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08158960 + ldr r3, _0815895C + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158968 + .align 2, 0 +_08158958: .4byte gUnknown_2039BD4 +_0815895C: .4byte gUnknown_203A804 +_08158960: + ldr r1, _0815896C + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08158968: + pop {r0} + bx r0 + .align 2, 0 +_0815896C: .4byte gUnknown_203A804 + thumb_func_end sub_08158928 + + thumb_func_start sub_08158970 +sub_08158970: @ 0x08158970 + push {r4, r5, r6, lr} + movs r6, #0 + ldr r3, _0815899C + ldr r0, [r3] + ldrb r5, [r0, #1] + ldrb r0, [r0, #2] + lsls r0, r0, #8 + orrs r5, r0 + movs r4, #0 + ldr r0, _081589A0 + mov ip, r0 + ldr r2, _081589A4 + ldr r0, [r2] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + mov r1, ip + adds r1, #0x1e + adds r0, r0, r1 + ldrh r0, [r0] + b _081589C4 + .align 2, 0 +_0815899C: .4byte gUnknown_203A804 +_081589A0: .4byte gUnknown_2039AA0 +_081589A4: .4byte gUnknown_2039BD4 +_081589A8: + adds r4, #1 + cmp r4, #3 + bgt _081589CA + lsls r1, r4, #1 + ldr r0, [r2] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + lsls r0, r0, #6 + adds r1, r1, r0 + mov r0, ip + adds r0, #0x1e + adds r1, r1, r0 + ldrh r0, [r1] +_081589C4: + cmp r0, r5 + bne _081589A8 + movs r6, #1 +_081589CA: + ldr r0, [r2] + ldr r0, [r0, #0xc] + strh r6, [r0, #0x18] + ldr r0, [r3] + adds r0, #3 + str r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08158970 + + thumb_func_start sub_081589DC +sub_081589DC: @ 0x081589DC + push {lr} + bl sub_08158970 + ldr r0, _08158A0C + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08158A14 + ldr r3, _08158A10 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158A1C + .align 2, 0 +_08158A0C: .4byte gUnknown_2039BD4 +_08158A10: .4byte gUnknown_203A804 +_08158A14: + ldr r1, _08158A20 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08158A1C: + pop {r0} + bx r0 + .align 2, 0 +_08158A20: .4byte gUnknown_203A804 + thumb_func_end sub_081589DC + + thumb_func_start sub_08158A24 +sub_08158A24: @ 0x08158A24 + push {lr} + bl sub_08158970 + ldr r0, _08158A54 + ldr r0, [r0] + ldr r0, [r0, #0xc] + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08158A5C + ldr r3, _08158A58 + ldr r2, [r3] + ldrb r1, [r2] + ldrb r0, [r2, #1] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #2] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #3] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _08158A64 + .align 2, 0 +_08158A54: .4byte gUnknown_2039BD4 +_08158A58: .4byte gUnknown_203A804 +_08158A5C: + ldr r1, _08158A68 + ldr r0, [r1] + adds r0, #4 + str r0, [r1] +_08158A64: + pop {r0} + bx r0 + .align 2, 0 +_08158A68: .4byte gUnknown_203A804 + thumb_func_end sub_08158A24 + + thumb_func_start sub_08158A6C +sub_08158A6C: @ 0x08158A6C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08158AC8 + lsls r6, r0, #2 + adds r6, r6, r0 + lsls r6, r6, #3 + adds r6, r6, r1 + ldr r1, _08158ACC + ldrh r0, [r1] + strh r0, [r6, #8] + ldrh r0, [r1, #2] + strh r0, [r6, #0xa] + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x3f + bl sub_080A4A40 + adds r5, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + bl sub_080A4BDC + strh r4, [r6, #0xc] + strh r5, [r6, #0xe] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r6, #0x10] + movs r0, #0xa + strh r0, [r6, #0x1c] + ldr r0, _08158AD0 + str r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08158AC8: .4byte gUnknown_3005B60 +_08158ACC: .4byte gUnknown_20380BE +_08158AD0: .4byte sub_08158AD4 + thumb_func_end sub_08158A6C + + thumb_func_start sub_08158AD4 +sub_08158AD4: @ 0x08158AD4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08158B04 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r5, [r4, #0xc] + ldrb r6, [r4, #0x10] + ldrh r0, [r4, #0x1e] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6f + bne _08158B0C + movs r0, #5 + strh r0, [r4, #0x1c] + strh r1, [r4, #0x1e] + ldr r0, _08158B08 + str r0, [r4] + b _08158B3A + .align 2, 0 +_08158B04: .4byte gUnknown_3005B60 +_08158B08: .4byte sub_08158B40 +_08158B0C: + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + bne _08158B26 + strh r1, [r4, #0x1c] + ldrh r0, [r4, #8] + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C +_08158B26: + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_080A4BB4 + strh r0, [r4, #0xc] +_08158B3A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08158AD4 + + thumb_func_start sub_08158B40 +sub_08158B40: @ 0x08158B40 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08158B90 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _08158B88 + movs r0, #0 + strh r0, [r4, #0x1c] + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + ldrh r0, [r4, #0xa] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + ldrh r0, [r4, #0x1e] + adds r0, #1 + strh r0, [r4, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _08158B88 + adds r0, r5, #0 + bl sub_080A3500 +_08158B88: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08158B90: .4byte gUnknown_3005B60 + thumb_func_end sub_08158B40 + + thumb_func_start sub_08158B94 +sub_08158B94: @ 0x08158B94 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _08158C38 + ldrh r1, [r0] + str r1, [sp] + ldrb r5, [r0, #4] + ldrb r6, [r0, #6] + ldrb r3, [r0, #8] + mov sl, r3 + ldrb r7, [r0, #0xa] + ldrb r1, [r0, #0xc] + mov sb, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + adds r0, r5, #0 + bl sub_080A4A40 + adds r5, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080A4BDC + ldr r2, _08158C3C + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + mov r6, sp + ldrh r6, [r6] + strh r6, [r1, #8] + strh r4, [r1, #0xa] + strh r5, [r1, #0xc] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0xe] + mov r0, sl + strh r0, [r1, #0x10] + strh r7, [r1, #0x12] + mov r3, sb + strh r3, [r1, #0x14] + strh r2, [r1, #0x1c] + strh r4, [r1, #0x1e] + strh r3, [r1, #0x20] + ldr r2, _08158C40 + str r2, [r1] + mov r0, r8 + bl _call_via_r2 + add sp, #4 + thumb_func_end sub_08158B94 + + thumb_func_start sub_08158C28 +sub_08158C28: @ 0x08158C28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08158C38: .4byte gUnknown_20380BE +_08158C3C: .4byte gUnknown_3005B60 +_08158C40: .4byte sub_08158C44 + thumb_func_end sub_08158C28 + + thumb_func_start sub_08158C44 +sub_08158C44: @ 0x08158C44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08158C88 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x20] + adds r1, r0, #1 + strh r1, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x14 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08158C8C + movs r0, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #8] + movs r1, #0x1e + ldrsb r1, [r4, r1] + bl sub_080A307C + ldrh r0, [r4, #0x10] + subs r0, #1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08158C8C + adds r0, r5, #0 + bl sub_080A3500 + b _08158CBE + .align 2, 0 +_08158C88: .4byte gUnknown_3005B60 +_08158C8C: + ldr r1, _08158CC4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08158CBE + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r0, [r4, #0xe] + ldrh r1, [r4, #0x1e] + adds r0, r0, r1 + strh r0, [r4, #0x1e] + movs r2, #0x1e + ldrsh r0, [r4, r2] + bl sub_080A4BB4 + strh r0, [r4, #0x1e] +_08158CBE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08158CC4: .4byte gUnknown_3005B60 + thumb_func_end sub_08158C44 + + thumb_func_start sub_08158CC8 +sub_08158CC8: @ 0x08158CC8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08158D0C + ldr r0, _08158CFC + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08158D04 + ldr r0, _08158D00 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r4, [r0] + b _08158DB2 + .align 2, 0 +_08158CFC: .4byte gUnknown_20380BE +_08158D00: .4byte gUnknown_2039BD4 +_08158D04: + adds r0, r5, #0 + bl sub_080A34E4 + b _08158DB2 +_08158D0C: + ldr r0, _08158D20 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r2, r0, #0 + cmp r1, #0 + bne _08158D28 + ldr r0, _08158D24 + ldrb r4, [r0] + b _08158D4E + .align 2, 0 +_08158D20: .4byte gUnknown_20380BE +_08158D24: .4byte gUnknown_20380D6 +_08158D28: + cmp r1, #1 + bne _08158D38 + ldr r0, _08158D34 + ldrb r4, [r0] + b _08158D4E + .align 2, 0 +_08158D34: .4byte gUnknown_20380D7 +_08158D38: + cmp r1, #2 + bne _08158D44 + ldr r0, _08158D40 + b _08158D46 + .align 2, 0 +_08158D40: .4byte gUnknown_20380D6 +_08158D44: + ldr r0, _08158D70 +_08158D46: + ldrb r1, [r0] + movs r0, #2 + adds r4, r0, #0 + eors r4, r1 +_08158D4E: + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _08158D5A + cmp r0, #3 + bne _08158D74 +_08158D5A: + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158D74 + adds r0, r5, #0 + bl sub_080A34E4 + b _08158DC8 + .align 2, 0 +_08158D70: .4byte gUnknown_20380D7 +_08158D74: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08158D98 + ldr r1, _08158D90 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08158D94 + b _08158DA6 + .align 2, 0 +_08158D90: .4byte gUnknown_2023D12 +_08158D94: .4byte gUnknown_20243E8 +_08158D98: + ldr r1, _08158DD0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08158DD4 +_08158DA6: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08158DB2: + cmp r4, #0 + beq _08158DC2 + lsls r1, r6, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #3 + bl sub_080A2BAC +_08158DC2: + adds r0, r5, #0 + bl sub_080A34E4 +_08158DC8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08158DD0: .4byte gUnknown_2023D12 +_08158DD4: .4byte gUnknown_2024190 + thumb_func_end sub_08158CC8 + + thumb_func_start sub_08158DD8 +sub_08158DD8: @ 0x08158DD8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08158E1C + ldr r0, _08158E0C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08158E14 + ldr r0, _08158E10 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r4, [r0] + b _08158EC2 + .align 2, 0 +_08158E0C: .4byte gUnknown_20380BE +_08158E10: .4byte gUnknown_2039BD4 +_08158E14: + adds r0, r6, #0 + bl sub_080A34E4 + b _08158EC2 +_08158E1C: + ldr r0, _08158E30 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r2, r0, #0 + cmp r1, #0 + bne _08158E38 + ldr r0, _08158E34 + ldrb r4, [r0] + b _08158E5E + .align 2, 0 +_08158E30: .4byte gUnknown_20380BE +_08158E34: .4byte gUnknown_20380D6 +_08158E38: + cmp r1, #1 + bne _08158E48 + ldr r0, _08158E44 + ldrb r4, [r0] + b _08158E5E + .align 2, 0 +_08158E44: .4byte gUnknown_20380D7 +_08158E48: + cmp r1, #2 + bne _08158E54 + ldr r0, _08158E50 + b _08158E56 + .align 2, 0 +_08158E50: .4byte gUnknown_20380D6 +_08158E54: + ldr r0, _08158E80 +_08158E56: + ldrb r1, [r0] + movs r0, #2 + adds r4, r0, #0 + eors r4, r1 +_08158E5E: + movs r1, #0 + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _08158E6A + cmp r0, #3 + bne _08158E84 +_08158E6A: + adds r0, r4, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158E84 + adds r0, r6, #0 + bl sub_080A34E4 + b _08158F2A + .align 2, 0 +_08158E80: .4byte gUnknown_20380D7 +_08158E84: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08158EA8 + ldr r1, _08158EA0 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08158EA4 + b _08158EB6 + .align 2, 0 +_08158EA0: .4byte gUnknown_2023D12 +_08158EA4: .4byte gUnknown_20243E8 +_08158EA8: + ldr r1, _08158EF4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08158EF8 +_08158EB6: + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08158EC2: + ldr r1, _08158EFC + lsls r2, r6, #2 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r3, _08158F00 + ldrh r1, [r3, #2] + strh r1, [r0, #8] + strh r4, [r0, #0xa] + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0xc] + adds r5, r2, #0 + cmp r4, #0 + beq _08158F24 + movs r2, #2 + ldrsh r0, [r3, r2] + cmp r0, #0xff + bne _08158F04 + adds r0, r4, #0 + movs r2, #9 + bl sub_080A2BAC + b _08158F0C + .align 2, 0 +_08158EF4: .4byte gUnknown_2023D12 +_08158EF8: .4byte gUnknown_2024190 +_08158EFC: .4byte gUnknown_3005B60 +_08158F00: .4byte gUnknown_20380BE +_08158F04: + adds r0, r4, #0 + movs r2, #7 + bl sub_080A2BAC +_08158F0C: + ldr r0, _08158F1C + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08158F20 + str r0, [r1] + b _08158F2A + .align 2, 0 +_08158F1C: .4byte gUnknown_3005B60 +_08158F20: .4byte sub_08158F30 +_08158F24: + adds r0, r6, #0 + bl sub_080A34E4 +_08158F2A: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08158DD8 + + thumb_func_start sub_08158F30 +sub_08158F30: @ 0x08158F30 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov sb, r4 + ldr r1, _08158F60 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, 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, #1 + bgt _08158F64 + adds r0, r2, #1 + strh r0, [r1, #0x1a] + b _08158FA6 + .align 2, 0 +_08158F60: .4byte gUnknown_3005B60 +_08158F64: + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0xff + bne _08158F8A + bl sub_080A2FB4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158FA6 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #0xa + bl sub_080A2BAC + adds r0, r4, #0 + bl sub_080A34E4 + b _08158FA6 +_08158F8A: + bl sub_080A2FB4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158FA6 + lsls r1, r7, #0x18 + asrs r1, r1, #0x18 + mov r0, r8 + movs r2, #8 + bl sub_080A2BAC + mov r0, sb + bl sub_080A34E4 +_08158FA6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08158F30 + + thumb_func_start sub_08158FB4 +sub_08158FB4: @ 0x08158FB4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r1, _08158FD8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0x1a] + movs r3, #0x1a + ldrsh r0, [r1, r3] + cmp r0, #1 + bgt _08158FDC + adds r0, r2, #1 + strh r0, [r1, #0x1a] + b _08158FEC + .align 2, 0 +_08158FD8: .4byte gUnknown_3005B60 +_08158FDC: + bl sub_080A2FB4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08158FEC + adds r0, r4, #0 + bl sub_080A34E4 +_08158FEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08158FB4 + + thumb_func_start sub_08158FF4 +sub_08158FF4: @ 0x08158FF4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08159028 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0815902C + ldrh r1, [r1] + strh r1, [r0, #0x1c] + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08159034 + ldr r0, _08159030 + ldr r0, [r0] + ldr r0, [r0, #0x18] + b _0815903E + .align 2, 0 +_08159028: .4byte gUnknown_3005B60 +_0815902C: .4byte gUnknown_20380BE +_08159030: .4byte gUnknown_2039BD4 +_08159034: + ldr r1, _0815905C + ldr r0, _08159060 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 +_0815903E: + ldrh r2, [r0] + ldr r0, _08159064 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r2, [r1, #0xa] + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0xc] + cmp r2, #0 + beq _0815906C + ldr r0, _08159068 + str r0, [r1] + b _08159072 + .align 2, 0 +_0815905C: .4byte gUnknown_20380D8 +_08159060: .4byte gUnknown_20380D6 +_08159064: .4byte gUnknown_3005B60 +_08159068: .4byte sub_08159078 +_0815906C: + adds r0, r4, #0 + bl sub_080A34E4 +_08159072: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08158FF4 + + thumb_func_start sub_08159078 +sub_08159078: @ 0x08159078 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _081590A8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r6, [r0, #0xa] + mov r8, r6 + ldrb r3, [r0, #0xc] + adds r5, r3, #0 + movs r7, #0x1a + ldrsh r2, [r0, r7] + mov ip, r1 + cmp r2, #5 + bhi _08159118 + lsls r0, r2, #2 + ldr r1, _081590AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081590A8: .4byte gUnknown_3005B60 +_081590AC: .4byte _081590B0 +_081590B0: @ jump table + .4byte _081590FE @ case 0 + .4byte _081590E4 @ case 1 + .4byte _081590C8 @ case 2 + .4byte _081590E4 @ case 3 + .4byte _081590E4 @ case 4 + .4byte _081590F4 @ case 5 +_081590C8: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + mov r0, r8 + movs r2, #4 + bl sub_080A2C70 + ldr r1, _081590E0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + b _081590EC + .align 2, 0 +_081590E0: .4byte gUnknown_3005B60 +_081590E4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, ip +_081590EC: + ldrh r1, [r0, #0x1a] + adds r1, #1 + strh r1, [r0, #0x1a] + b _08159140 +_081590F4: + bl sub_080A2FB4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08159140 +_081590FE: + bl sub_080A2F64 + ldr r0, _08159114 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x1a] + adds r0, #1 + strh r0, [r1, #0x1a] + b _08159140 + .align 2, 0 +_08159114: .4byte gUnknown_3005B60 +_08159118: + movs r1, #0x1c + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815912E + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + adds r0, r6, #0 + movs r2, #6 + bl sub_080A2C70 + b _0815913A +_0815912E: + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + mov r0, r8 + movs r2, #6 + bl sub_080A2BAC +_0815913A: + adds r0, r4, #0 + bl sub_080A34E4 +_08159140: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159078 + + thumb_func_start sub_0815914C +sub_0815914C: @ 0x0815914C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0815917C + ldrh r5, [r0] + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_080A30D0 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815917C: .4byte gUnknown_20380BE + thumb_func_end sub_0815914C + + thumb_func_start sub_08159180 +sub_08159180: @ 0x08159180 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081591B0 + ldrh r5, [r0] + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_080A3104 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081591B0: .4byte gUnknown_20380BE + thumb_func_end sub_08159180 + + thumb_func_start sub_081591B4 +sub_081591B4: @ 0x081591B4 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _08159238 + ldrb r5, [r0, #2] + ldrb r6, [r0, #4] + ldrh r1, [r0, #6] + mov sb, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080A4A40 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + adds r0, r5, #0 + bl sub_080A4A40 + adds r5, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080A4BDC + ldr r2, _0815923C + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r4, [r1, #0xa] + strh r5, [r1, #0xc] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r1, #0xe] + mov r0, sb + strh r0, [r1, #0x12] + strh r2, [r1, #0x1c] + strh r4, [r1, #0x1e] + ldr r2, _08159240 + str r2, [r1] + mov r0, r8 + bl _call_via_r2 + pop {r3, r4} + thumb_func_end sub_081591B4 + + thumb_func_start sub_0815922C +sub_0815922C: @ 0x0815922C + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08159238: .4byte gUnknown_20380BE +_0815923C: .4byte gUnknown_3005B60 +_08159240: .4byte sub_08159244 + thumb_func_end sub_0815922C + + thumb_func_start sub_08159244 +sub_08159244: @ 0x08159244 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _0815929C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r2, [r4, #0xe] + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x12 + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _0815927E + 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_080A4BB4 + strh r0, [r4, #0x1e] +_0815927E: + ldr r1, _081592A0 + 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 _08159296 + adds r0, r5, #0 + bl sub_080A34E4 +_08159296: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815929C: .4byte gUnknown_3005B60 +_081592A0: .4byte gUnknown_20380E0 + thumb_func_end sub_08159244 + + thumb_func_start sub_081592A4 +sub_081592A4: @ 0x081592A4 + bx lr + .align 2, 0 + thumb_func_end sub_081592A4 + + thumb_func_start sub_081592A8 +sub_081592A8: @ 0x081592A8 + ldr r1, _081592B8 + ldr r0, _081592BC + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081592C0 + str r1, [r0] + bx lr + .align 2, 0 +_081592B8: .4byte gUnknown_3005AC0 +_081592BC: .4byte gUnknown_2023D08 +_081592C0: .4byte sub_081592C4 + thumb_func_end sub_081592A8 + + thumb_func_start sub_081592C4 +sub_081592C4: @ 0x081592C4 + push {lr} + ldr r2, _081592F8 + ldr r1, _081592FC + ldr r0, _08159300 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08159310 + ldr r0, _08159304 + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _0815930C + ldr r0, _08159308 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08159310 + .align 2, 0 +_081592F8: .4byte gUnknown_2023D0C +_081592FC: .4byte gUnknown_82FACB4 +_08159300: .4byte gUnknown_2023D08 +_08159304: .4byte gUnknown_2022D08 +_08159308: .4byte gUnknown_85ACD28 +_0815930C: + bl sub_08159640 +_08159310: + pop {r0} + bx r0 + thumb_func_end sub_081592C4 + + thumb_func_start sub_08159314 +sub_08159314: @ 0x08159314 + push {r4, r5, lr} + ldr r0, _08159344 + ldrh r1, [r0, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08159382 + movs r0, #5 + bl sub_080A306C + ldr r1, _08159348 + ldr r0, _0815934C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _08159360 + cmp r0, #1 + bgt _08159350 + cmp r0, #0 + beq _0815935A + b _0815937C + .align 2, 0 +_08159344: .4byte gUnknown_3002360 +_08159348: .4byte gUnknown_2024150 +_0815934C: .4byte gUnknown_2023D08 +_08159350: + cmp r0, #2 + beq _08159366 + cmp r0, #3 + beq _08159372 + b _0815937C +_0815935A: + movs r0, #1 + movs r1, #5 + b _0815936A +_08159360: + movs r0, #1 + movs r1, #6 + b _0815936A +_08159366: + movs r0, #1 + movs r1, #7 +_0815936A: + movs r2, #0 + bl sub_08033FB0 + b _0815937C +_08159372: + movs r0, #1 + movs r1, #8 + movs r2, #0 + bl sub_08033FB0 +_0815937C: + bl sub_08159640 + b _0815948A +_08159382: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081593C0 + ldr r5, _081593B8 + ldr r4, _081593BC + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0815948A + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #1 + b _0815942E + .align 2, 0 +_081593B8: .4byte gUnknown_2024150 +_081593BC: .4byte gUnknown_2023D08 +_081593C0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081593FC + ldr r5, _081593F4 + ldr r4, _081593F8 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0815948A + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #1 + b _0815942E + .align 2, 0 +_081593F4: .4byte gUnknown_2024150 +_081593F8: .4byte gUnknown_2023D08 +_081593FC: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08159448 + ldr r5, _08159440 + ldr r4, _08159444 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0815948A + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #2 +_0815942E: + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + b _0815948A + .align 2, 0 +_08159440: .4byte gUnknown_2024150 +_08159444: .4byte gUnknown_2023D08 +_08159448: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0815948A + ldr r5, _08159490 + ldr r4, _08159494 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0815948A + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_08059910 + ldrb r1, [r4] + adds r1, r1, r5 + ldrb r0, [r1] + movs r2, #2 + eors r0, r2 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 +_0815948A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08159490: .4byte gUnknown_2024150 +_08159494: .4byte gUnknown_2023D08 + thumb_func_end sub_08159314 + + thumb_func_start sub_08159498 +sub_08159498: @ 0x08159498 + push {lr} + ldr r2, _081594C0 + ldr r1, _081594C4 + ldr r0, _081594C8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081594CC + cmp r1, r0 + bne _081594BC + bl sub_08159640 +_081594BC: + pop {r0} + bx r0 + .align 2, 0 +_081594C0: .4byte gUnknown_20205AC +_081594C4: .4byte gUnknown_2023E88 +_081594C8: .4byte gUnknown_2023D08 +_081594CC: .4byte sub_08007140 + thumb_func_end sub_08159498 + + thumb_func_start sub_081594D0 +sub_081594D0: @ 0x081594D0 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081594E2 + bl sub_08159640 +_081594E2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081594D0 + + thumb_func_start sub_081594E8 +sub_081594E8: @ 0x081594E8 + push {lr} + ldr r2, _08159510 + ldr r1, _08159514 + ldr r0, _08159518 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0815951C + cmp r1, r0 + bne _0815950C + bl sub_08159640 +_0815950C: + pop {r0} + bx r0 + .align 2, 0 +_08159510: .4byte gUnknown_20205AC +_08159514: .4byte gUnknown_3005AD0 +_08159518: .4byte gUnknown_2023D08 +_0815951C: .4byte sub_08007140 + thumb_func_end sub_081594E8 + + thumb_func_start sub_08159520 +sub_08159520: @ 0x08159520 + push {lr} + ldr r0, _08159550 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0815954A + ldr r2, _08159554 + ldr r0, _08159558 + adds r3, r2, r0 + ldrb r1, [r3] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldr r0, _0815955C + ldr r0, [r0] + str r0, [r2] + ldr r0, [r2, #8] + bl sub_08000540 +_0815954A: + pop {r0} + bx r0 + .align 2, 0 +_08159550: .4byte gUnknown_2037C74 +_08159554: .4byte gUnknown_3002360 +_08159558: .4byte 0x00000439 +_0815955C: .4byte gUnknown_3005A60 + thumb_func_end sub_08159520 + + thumb_func_start sub_08159560 +sub_08159560: @ 0x08159560 + push {lr} + ldr r0, _08159590 + ldrb r0, [r0] + cmp r0, #0 + beq _08159586 + ldr r0, _08159594 + ldr r2, [r0] + ldr r0, _08159598 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0815958A +_08159586: + bl sub_08159640 +_0815958A: + pop {r0} + bx r0 + .align 2, 0 +_08159590: .4byte gUnknown_202415D +_08159594: .4byte gUnknown_2024174 +_08159598: .4byte gUnknown_2023D08 + thumb_func_end sub_08159560 + + thumb_func_start sub_0815959C +sub_0815959C: @ 0x0815959C + push {lr} + ldr r0, _081595C4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081595C0 + ldr r1, _081595C8 + ldr r0, _081595CC + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081595D0 + str r1, [r0] + bl sub_080034D4 + bl sub_08135944 +_081595C0: + pop {r0} + bx r0 + .align 2, 0 +_081595C4: .4byte gUnknown_2037C74 +_081595C8: .4byte gUnknown_3005AC0 +_081595CC: .4byte gUnknown_2023D08 +_081595D0: .4byte sub_081595D4 + thumb_func_end sub_0815959C + + thumb_func_start sub_081595D4 +sub_081595D4: @ 0x081595D4 + push {lr} + ldr r0, _08159600 + ldr r1, [r0, #4] + ldr r0, _08159604 + cmp r1, r0 + bne _081595FA + ldr r0, _08159608 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081595FA + ldr r0, _0815960C + ldrh r1, [r0] + movs r0, #1 + bl sub_08034014 + bl sub_08159640 +_081595FA: + pop {r0} + bx r0 + .align 2, 0 +_08159600: .4byte gUnknown_3002360 +_08159604: .4byte sub_080380FC +_08159608: .4byte gUnknown_2037C74 +_0815960C: .4byte gUnknown_203CB48 + thumb_func_end sub_081595D4 + + thumb_func_start sub_08159610 +sub_08159610: @ 0x08159610 + push {lr} + ldr r0, _08159638 + ldr r2, [r0] + ldr r0, _0815963C + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08159632 + bl sub_08159640 +_08159632: + pop {r0} + bx r0 + .align 2, 0 +_08159638: .4byte gUnknown_2024174 +_0815963C: .4byte gUnknown_2023D08 + thumb_func_end sub_08159610 + + thumb_func_start sub_08159640 +sub_08159640: @ 0x08159640 + push {r4, lr} + sub sp, #4 + ldr r1, _08159680 + ldr r4, _08159684 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159688 + str r1, [r0] + ldr r0, _0815968C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08159694 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _08159690 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _081596A6 + .align 2, 0 +_08159680: .4byte gUnknown_3005AC0 +_08159684: .4byte gUnknown_2023D08 +_08159688: .4byte sub_081592C4 +_0815968C: .4byte gUnknown_2022C90 +_08159690: .4byte gUnknown_2022D08 +_08159694: + ldr r2, _081596B0 + ldr r1, _081596B4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_081596A6: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081596B0: .4byte gUnknown_2023D0C +_081596B4: .4byte gUnknown_82FACB4 + thumb_func_end sub_08159640 + + thumb_func_start sub_081596B8 +sub_081596B8: @ 0x081596B8 + push {lr} + ldr r0, _081596E0 + ldr r2, [r0] + ldr r0, _081596E4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081596DA + bl sub_08159640 +_081596DA: + pop {r0} + bx r0 + .align 2, 0 +_081596E0: .4byte gUnknown_2024174 +_081596E4: .4byte gUnknown_2023D08 + thumb_func_end sub_081596B8 + + thumb_func_start sub_081596E8 +sub_081596E8: @ 0x081596E8 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081596E8 + + thumb_func_start sub_081596F4 +sub_081596F4: @ 0x081596F4 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081596F4 + + thumb_func_start sub_08159700 +sub_08159700: @ 0x08159700 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159700 + + thumb_func_start sub_0815970C +sub_0815970C: @ 0x0815970C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815970C + + thumb_func_start sub_08159718 +sub_08159718: @ 0x08159718 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159718 + + thumb_func_start sub_08159724 +sub_08159724: @ 0x08159724 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159724 + + thumb_func_start sub_08159730 +sub_08159730: @ 0x08159730 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159730 + + thumb_func_start sub_0815973C +sub_0815973C: @ 0x0815973C + push {r4, r5, r6, lr} + ldr r4, _081597F4 + ldr r0, [r4] + ldrb r0, [r0, #8] + ldr r5, _081597F8 + ldrb r1, [r5] + bl sub_0805DBA0 + ldr r0, [r4] + ldrb r6, [r0, #8] + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_08069C6C + ldr r0, _081597FC + ldr r2, _08159800 + ldr r1, [r4] + ldrb r1, [r1, #8] + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0x50 + movs r3, #0x1e + bl sub_08006B0C + ldr r6, _08159804 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _08159808 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0815980C + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _08159810 + str r1, [r0] + ldr r1, _08159814 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159818 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081597F4: .4byte gUnknown_3005AF0 +_081597F8: .4byte gUnknown_2023D08 +_081597FC: .4byte gUnknown_2024640 +_08159800: .4byte gUnknown_82D95BC +_08159804: .4byte gUnknown_2023E88 +_08159808: .4byte gUnknown_20205AC +_0815980C: .4byte 0x0000FFFE +_08159810: .4byte sub_0805D3C8 +_08159814: .4byte gUnknown_3005AC0 +_08159818: .4byte sub_08159498 + thumb_func_end sub_0815973C + + thumb_func_start sub_0815981C +sub_0815981C: @ 0x0815981C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815981C + + thumb_func_start sub_08159828 +sub_08159828: @ 0x08159828 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159828 + + thumb_func_start sub_08159834 +sub_08159834: @ 0x08159834 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159834 + + thumb_func_start sub_08159840 +sub_08159840: @ 0x08159840 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159840 + + thumb_func_start sub_0815984C +sub_0815984C: @ 0x0815984C + push {r4, r5, lr} + ldr r0, _0815988C + ldr r0, [r0] + ldr r1, [r0, #8] + movs r0, #4 + strb r0, [r1, #8] + ldr r1, _08159890 + movs r0, #1 + strb r0, [r1] + ldr r5, _08159894 + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #4 + bl sub_0805D6E0 + ldr r1, _08159898 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0815989C + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815988C: .4byte gUnknown_2024174 +_08159890: .4byte gUnknown_202415D +_08159894: .4byte gUnknown_2023D08 +_08159898: .4byte gUnknown_3005AC0 +_0815989C: .4byte sub_08159560 + thumb_func_end sub_0815984C + + thumb_func_start sub_081598A0 +sub_081598A0: @ 0x081598A0 + push {r4, r5, lr} + ldr r1, _081598E8 + ldr r5, _081598EC + ldrb r0, [r5] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, _081598F0 + ldr r0, [r0] + ldr r0, [r0, #8] + strb r1, [r0, #8] + ldr r1, _081598F4 + movs r0, #1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #4 + bl sub_0805D6E0 + ldr r1, _081598F8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081598FC + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081598E8: .4byte gUnknown_2022D08 +_081598EC: .4byte gUnknown_2023D08 +_081598F0: .4byte gUnknown_2024174 +_081598F4: .4byte gUnknown_202415D +_081598F8: .4byte gUnknown_3005AC0 +_081598FC: .4byte sub_08159560 + thumb_func_end sub_081598A0 + + thumb_func_start sub_08159900 +sub_08159900: @ 0x08159900 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159900 + + thumb_func_start sub_0815990C +sub_0815990C: @ 0x0815990C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815990C + + thumb_func_start sub_08159918 +sub_08159918: @ 0x08159918 + push {r4, lr} + ldr r0, _08159950 + movs r1, #0 + strh r1, [r0] + ldr r0, _08159954 + strh r1, [r0] + ldr r4, _08159958 + ldrb r0, [r4] + lsls r0, r0, #9 + ldr r1, _0815995C + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0814E184 + ldr r0, _08159960 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _08159964 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159968 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159950: .4byte gUnknown_2022AC8 +_08159954: .4byte gUnknown_2022ACA +_08159958: .4byte gUnknown_2023D08 +_0815995C: .4byte gUnknown_2022D0A +_08159960: .4byte gUnknown_2022AE0 +_08159964: .4byte gUnknown_3005AC0 +_08159968: .4byte sub_081594D0 + thumb_func_end sub_08159918 + + thumb_func_start sub_0815996C +sub_0815996C: @ 0x0815996C + push {lr} + ldr r0, _08159984 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08159988 + bl sub_08159918 + b _0815998C + .align 2, 0 +_08159984: .4byte gUnknown_2023D08 +_08159988: + bl sub_08159640 +_0815998C: + pop {r0} + bx r0 + thumb_func_end sub_0815996C + + thumb_func_start sub_08159990 +sub_08159990: @ 0x08159990 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081599B6 + ldr r0, _081599BC + strh r1, [r0] + ldr r1, _081599C0 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _081599C4 + ldr r0, _081599C8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081599CC + str r1, [r0] +_081599B6: + pop {r0} + bx r0 + .align 2, 0 +_081599BC: .4byte gUnknown_2022AC8 +_081599C0: .4byte gUnknown_2022ACA +_081599C4: .4byte gUnknown_3005AC0 +_081599C8: .4byte gUnknown_2023D08 +_081599CC: .4byte sub_08159314 + thumb_func_end sub_08159990 + + thumb_func_start sub_081599D0 +sub_081599D0: @ 0x081599D0 + push {r4, lr} + ldr r1, _08159A1C + ldr r0, _08159A20 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159A24 + str r1, [r0] + ldr r0, _08159A28 + movs r1, #2 + bl sub_0814FA04 + movs r4, #0 +_081599EA: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08059910 + adds r4, #1 + cmp r4, #3 + ble _081599EA + ldr r1, _08159A2C + ldr r0, _08159A20 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + ldr r0, _08159A30 + bl sub_0814E7A0 + ldr r0, _08159A34 + movs r1, #1 + bl sub_0814FA04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159A1C: .4byte gUnknown_3005AC0 +_08159A20: .4byte gUnknown_2023D08 +_08159A24: .4byte sub_08159990 +_08159A28: .4byte gUnknown_85ABB86 +_08159A2C: .4byte gUnknown_2024150 +_08159A30: .4byte gUnknown_85ABB4D +_08159A34: .4byte gUnknown_2022AE0 + thumb_func_end sub_081599D0 + + thumb_func_start sub_08159A38 +sub_08159A38: @ 0x08159A38 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159A38 + + thumb_func_start sub_08159A44 +sub_08159A44: @ 0x08159A44 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159A44 + + thumb_func_start sub_08159A50 +sub_08159A50: @ 0x08159A50 + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08159A80 + ldr r2, _08159A84 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159A88 + str r1, [r0] + ldr r1, _08159A8C + ldrb r0, [r2] + strb r0, [r1] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08159A80: .4byte gUnknown_3005AC0 +_08159A84: .4byte gUnknown_2023D08 +_08159A88: .4byte sub_0815959C +_08159A8C: .4byte gUnknown_202415C + thumb_func_end sub_08159A50 + + thumb_func_start sub_08159A90 +sub_08159A90: @ 0x08159A90 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159A90 + + thumb_func_start sub_08159A9C +sub_08159A9C: @ 0x08159A9C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159A9C + + thumb_func_start sub_08159AA8 +sub_08159AA8: @ 0x08159AA8 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159AA8 + + thumb_func_start sub_08159AB4 +sub_08159AB4: @ 0x08159AB4 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159AB4 + + thumb_func_start sub_08159AC0 +sub_08159AC0: @ 0x08159AC0 + push {lr} + ldr r0, _08159AEC + ldr r1, _08159AF0 + ldrb r1, [r1] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08159AF4 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08159AF8 + adds r1, r1, r2 + movs r2, #0xb + bl sub_080743F0 + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 +_08159AEC: .4byte gUnknown_3005AD0 +_08159AF0: .4byte gUnknown_2023D08 +_08159AF4: .4byte gUnknown_2023D12 +_08159AF8: .4byte gUnknown_2024190 + thumb_func_end sub_08159AC0 + + thumb_func_start sub_08159AFC +sub_08159AFC: @ 0x08159AFC + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159AFC + + thumb_func_start sub_08159B08 +sub_08159B08: @ 0x08159B08 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B08 + + thumb_func_start sub_08159B14 +sub_08159B14: @ 0x08159B14 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B14 + + thumb_func_start sub_08159B20 +sub_08159B20: @ 0x08159B20 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B20 + + thumb_func_start sub_08159B2C +sub_08159B2C: @ 0x08159B2C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B2C + + thumb_func_start sub_08159B38 +sub_08159B38: @ 0x08159B38 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B38 + + thumb_func_start sub_08159B44 +sub_08159B44: @ 0x08159B44 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B44 + + thumb_func_start sub_08159B50 +sub_08159B50: @ 0x08159B50 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B50 + + thumb_func_start sub_08159B5C +sub_08159B5C: @ 0x08159B5C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B5C + + thumb_func_start sub_08159B68 +sub_08159B68: @ 0x08159B68 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B68 + + thumb_func_start sub_08159B74 +sub_08159B74: @ 0x08159B74 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B74 + + thumb_func_start sub_08159B80 +sub_08159B80: @ 0x08159B80 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B80 + + thumb_func_start sub_08159B8C +sub_08159B8C: @ 0x08159B8C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B8C + + thumb_func_start sub_08159B98 +sub_08159B98: @ 0x08159B98 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159B98 + + thumb_func_start sub_08159BA4 +sub_08159BA4: @ 0x08159BA4 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159BA4 + + thumb_func_start sub_08159BB0 +sub_08159BB0: @ 0x08159BB0 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159BB0 + + thumb_func_start sub_08159BBC +sub_08159BBC: @ 0x08159BBC + push {r4, lr} + ldr r4, _08159BF8 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _08159BD0 + movs r3, #0xc0 +_08159BD0: + ldr r2, _08159BFC + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_08159640 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159BF8: .4byte gUnknown_2023D08 +_08159BFC: .4byte gUnknown_2022D08 + thumb_func_end sub_08159BBC + + thumb_func_start sub_08159C00 +sub_08159C00: @ 0x08159C00 + push {r4, r5, lr} + ldr r4, _08159C34 + ldr r5, _08159C38 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _08159C3C + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _08159C50 + .align 2, 0 +_08159C34: .4byte gUnknown_2022D08 +_08159C38: .4byte gUnknown_2023D08 +_08159C3C: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_08159C50: + bl sub_08159640 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159C00 + + thumb_func_start sub_08159C5C +sub_08159C5C: @ 0x08159C5C + push {lr} + ldr r1, _08159C8C + ldr r0, _08159C90 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08159C94 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + bl sub_080A2B3C + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 +_08159C8C: .4byte gUnknown_2023D12 +_08159C90: .4byte gUnknown_2023D08 +_08159C94: .4byte gUnknown_2024190 + thumb_func_end sub_08159C5C + + thumb_func_start sub_08159C98 +sub_08159C98: @ 0x08159C98 + push {lr} + ldr r1, _08159CC0 + ldr r0, _08159CC4 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _08159CC8 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 +_08159CC0: .4byte gUnknown_2022D08 +_08159CC4: .4byte gUnknown_2023D08 +_08159CC8: .4byte gUnknown_20240A0 + thumb_func_end sub_08159C98 + + thumb_func_start sub_08159CCC +sub_08159CCC: @ 0x08159CCC + push {r4, r5, lr} + ldr r5, _08159D10 + ldr r4, _08159D14 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08159D18 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08159D1C + adds r1, r1, r2 + movs r2, #0xa + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + ldr r1, _08159D20 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08159D24 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08159D10: .4byte gUnknown_3005AD0 +_08159D14: .4byte gUnknown_2023D08 +_08159D18: .4byte gUnknown_2023D12 +_08159D1C: .4byte gUnknown_2024190 +_08159D20: .4byte gUnknown_3005AC0 +_08159D24: .4byte sub_081594E8 + thumb_func_end sub_08159CCC + + thumb_func_start sub_08159D28 +sub_08159D28: @ 0x08159D28 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159D28 + + thumb_func_start sub_08159D34 +sub_08159D34: @ 0x08159D34 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159D34 + + thumb_func_start sub_08159D40 +sub_08159D40: @ 0x08159D40 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159D40 + + thumb_func_start sub_08159D4C +sub_08159D4C: @ 0x08159D4C + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159D4C + + thumb_func_start sub_08159D58 +sub_08159D58: @ 0x08159D58 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _08159D90 + ldr r6, _08159D94 + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08159D98 + bl sub_08159640 + b _08159DA4 + .align 2, 0 +_08159D90: .4byte gUnknown_2022D08 +_08159D94: .4byte gUnknown_2023D08 +_08159D98: + ldr r0, _08159DAC + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08159DB0 + str r0, [r1] +_08159DA4: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08159DAC: .4byte gUnknown_3005AC0 +_08159DB0: .4byte sub_08159610 + thumb_func_end sub_08159D58 + + thumb_func_start sub_08159DB4 +sub_08159DB4: @ 0x08159DB4 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159DB4 + + thumb_func_start sub_08159DC0 +sub_08159DC0: @ 0x08159DC0 + push {lr} + bl sub_08159640 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08159DC0 + + thumb_func_start sub_08159DCC +sub_08159DCC: @ 0x08159DCC + push {r4, lr} + ldr r2, _08159E10 + ldr r1, _08159E14 + ldr r4, _08159E18 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_08159640 + ldr r0, _08159E1C + ldr r0, [r0] + movs r1, #6 + ands r0, r1 + cmp r0, #2 + bne _08159E08 + ldr r0, _08159E20 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08159E24 + str r0, [r1] +_08159E08: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08159E10: .4byte gUnknown_2023FDE +_08159E14: .4byte gUnknown_2022D08 +_08159E18: .4byte gUnknown_2023D08 +_08159E1C: .4byte gUnknown_2022C90 +_08159E20: .4byte gUnknown_3005AC0 +_08159E24: .4byte sub_08159520 + thumb_func_end sub_08159DCC + + thumb_func_start sub_08159E28 +sub_08159E28: @ 0x08159E28 + bx lr + .align 2, 0 + thumb_func_end sub_08159E28 + + thumb_func_start sub_08159E2C +sub_08159E2C: @ 0x08159E2C + ldr r1, _08159E3C + ldr r0, _08159E40 + str r0, [r1] + ldr r1, _08159E44 + ldr r0, _08159E48 + str r0, [r1] + movs r0, #1 + bx lr + .align 2, 0 +_08159E3C: .4byte gUnknown_3005B10 +_08159E40: .4byte sub_081B53D8 +_08159E44: .4byte gUnknown_203CBB8 +_08159E48: .4byte sub_08159E4C + thumb_func_end sub_08159E2C + + thumb_func_start sub_08159E4C +sub_08159E4C: @ 0x08159E4C + push {lr} + movs r0, #0x33 + bl sub_080B5270 + bl sub_081B1024 + ldr r1, _08159E64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08159E64: .4byte gUnknown_20388A8 + thumb_func_end sub_08159E4C + + thumb_func_start sub_08159E68 +sub_08159E68: @ 0x08159E68 + push {lr} + bl sub_080ABCCC + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08159E90 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _08159E94 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_08159E90: .4byte gUnknown_3005B60 +_08159E94: .4byte sub_08159E98 + thumb_func_end sub_08159E68 + + thumb_func_start sub_08159E98 +sub_08159E98: @ 0x08159E98 + push {r4, r5, lr} + sub sp, #4 + movs r0, #0xec + bl sub_080A306C + ldr r5, _08159F10 + ldr r1, _08159F14 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r5, #0 + adds r2, r4, #0 + bl CpuFastSet + ldr r0, _08159F18 + adds r1, r5, #0 + adds r2, r4, #0 + bl CpuFastSet + bl sub_0808B640 + ldr r2, _08159F1C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + mvns r0, r0 + movs r1, #0x1f + str r1, [sp] + movs r1, #4 + movs r2, #0 + movs r3, #8 + bl sub_080A139C + ldr r0, _08159F20 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08159F24 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + movs r0, #0x33 + bl sub_080B5568 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08159F10: .4byte gUnknown_20373B4 +_08159F14: .4byte gUnknown_2037C88 +_08159F18: .4byte gUnknown_20377B4 +_08159F1C: .4byte gUnknown_20205AC +_08159F20: .4byte sub_08159F28 +_08159F24: .4byte gUnknown_3005B60 + thumb_func_end sub_08159E98 + + thumb_func_start sub_08159F28 +sub_08159F28: @ 0x08159F28 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08159F78 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _08159FC4 + bl sub_081BE3C8 + movs r0, #0x40 + movs r1, #8 + movs r2, #0x1f + bl sub_080A22E8 + ldr r0, _08159F7C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r4, r1, r0 + ldrh r1, [r4, #8] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #0x40 + bne _08159FC0 + strh r6, [r4, #8] + bl sub_080B4CD0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08159F80 + adds r0, r5, #0 + bl sub_080A8964 + b _08159FC4 + .align 2, 0 +_08159F78: .4byte gUnknown_2037C74 +_08159F7C: .4byte gUnknown_3005B60 +_08159F80: + ldr r0, _08159FB8 + str r0, [r4] + bl sub_0808B640 + ldr r2, _08159FBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + adds r1, #0x10 + movs r0, #1 + lsls r0, r1 + mvns r0, r0 + movs r1, #0x1f + str r1, [sp] + movs r1, #4 + movs r2, #8 + movs r3, #0 + bl sub_080A139C + bl sub_081BE354 + b _08159FC4 + .align 2, 0 +_08159FB8: .4byte sub_08159FCC +_08159FBC: .4byte gUnknown_20205AC +_08159FC0: + adds r0, r1, #1 + strh r0, [r4, #8] +_08159FC4: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08159F28 + + thumb_func_start sub_08159FCC +sub_08159FCC: @ 0x08159FCC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0815A000 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08159FFA + ldr r0, _0815A004 + ldr r1, _0815A008 + movs r2, #0x80 + lsls r2, r2, #1 + bl CpuFastSet + bl sub_080ABCE0 + ldr r0, _0815A00C + bl sub_08098880 + adds r0, r4, #0 + bl sub_080A8964 +_08159FFA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A000: .4byte gUnknown_2037C74 +_0815A004: .4byte gUnknown_2037C88 +_0815A008: .4byte gUnknown_20373B4 +_0815A00C: .4byte gUnknown_8256A14 + thumb_func_end sub_08159FCC + + thumb_func_start sub_0815A010 +sub_0815A010: @ 0x0815A010 + push {lr} + adds r2, r0, #0 + ldr r1, _0815A034 + ldrh r0, [r1] + ldrh r3, [r2, #0x20] + adds r0, r0, r3 + strh r0, [r2, #0x20] + ldrh r0, [r1, #2] + ldrh r3, [r2, #0x22] + adds r0, r0, r3 + strh r0, [r2, #0x22] + movs r3, #6 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _0815A038 + ldrh r0, [r1, #4] + b _0815A03C + .align 2, 0 +_0815A034: .4byte gUnknown_20380BE +_0815A038: + ldrh r0, [r1, #4] + rsbs r0, r0, #0 +_0815A03C: + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + strh r0, [r2, #0x30] + ldr r0, _0815A04C + str r0, [r2, #0x1c] + pop {r0} + bx r0 + .align 2, 0 +_0815A04C: .4byte sub_0815A050 + thumb_func_end sub_0815A010 + + thumb_func_start sub_0815A050 +sub_0815A050: @ 0x0815A050 + push {lr} + adds r3, r0, #0 + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #0 + ble _0815A090 + ldrh r1, [r3, #0x32] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r3, #0x24] + ldrh r0, [r3, #0x2e] + adds r1, r1, r0 + strh r1, [r3, #0x32] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x30] + subs r0, #1 + strh r0, [r3, #0x30] + b _0815A096 +_0815A090: + adds r0, r3, #0 + bl sub_080A34C4 +_0815A096: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815A050 + + thumb_func_start sub_0815A09C +sub_0815A09C: @ 0x0815A09C + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _0815A0E8 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #8 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r4, r4, r0 + asrs r4, r4, #0x10 + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #8 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r1, r1, r0 + asrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_08074C24 + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815A0E8: .4byte gUnknown_20380D7 + thumb_func_end sub_0815A09C + + thumb_func_start sub_0815A0EC +sub_0815A0EC: @ 0x0815A0EC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x5a + strh r0, [r4, #0x2e] + ldr r0, _0815A128 + str r0, [r4, #0x1c] + movs r0, #7 + strh r0, [r4, #0x30] + ldr r1, _0815A12C + adds r0, r4, #0 + bl sub_080A5B9C + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r0, [r4, #0x30] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A128: .4byte sub_080A5D78 +_0815A12C: .4byte sub_0815A130 + thumb_func_end sub_0815A0EC + + thumb_func_start sub_0815A130 +sub_0815A130: @ 0x0815A130 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r4, #0x30] + subs r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0815A164 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815A16C + str r0, [r4, #0x1c] +_0815A164: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A16C: .4byte sub_0815A170 + thumb_func_end sub_0815A130 + + thumb_func_start sub_0815A170 +sub_0815A170: @ 0x0815A170 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0815A170 + + thumb_func_start sub_0815A190 +sub_0815A190: @ 0x0815A190 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r4, _0815A21C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r0, #0 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A6248 + ldrh r0, [r5, #0x20] + subs r0, r0, r7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r5, #0x22] + subs r1, r1, r6 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_080A6DBC + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0x17 + adds r0, r0, r1 + lsrs r4, r0, #0x10 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815A1EE + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0815A1EE: + movs r3, #0x80 + lsls r3, r3, #1 + str r4, [sp] + adds r0, r5, #0 + movs r1, #0 + adds r2, r3, #0 + bl sub_080A6CA8 + ldr r0, _0815A220 + ldrh r0, [r0, #4] + strh r0, [r5, #0x2e] + strh r7, [r5, #0x32] + strh r6, [r5, #0x36] + ldr r0, _0815A224 + str r0, [r5, #0x1c] + ldr r1, _0815A228 + adds r0, r5, #0 + bl sub_080A5B9C + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A21C: .4byte gUnknown_20380D7 +_0815A220: .4byte gUnknown_20380BE +_0815A224: .4byte sub_080A67B4 +_0815A228: .4byte sub_080A34C4 + thumb_func_end sub_0815A190 + + thumb_func_start sub_0815A22C +sub_0815A22C: @ 0x0815A22C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #4 + strh r0, [r4, #0x2e] + ldr r0, _0815A254 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A254: .4byte sub_0815A258 + thumb_func_end sub_0815A22C + + thumb_func_start sub_0815A258 +sub_0815A258: @ 0x0815A258 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815A27E + ldrh r0, [r4, #0x2e] + subs r0, #1 + b _0815A282 +_0815A27E: + ldrh r0, [r4, #0x2e] + adds r0, #1 +_0815A282: + strh r0, [r4, #0x2e] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xf + beq _0815A290 + cmp r0, #4 + bne _0815A298 +_0815A290: + ldrh r0, [r4, #0x30] + movs r1, #1 + eors r0, r1 + strh r0, [r4, #0x30] +_0815A298: + ldrh r0, [r4, #0x32] + adds r1, r0, #1 + strh r1, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x46 + ble _0815A2DC + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + movs r0, #0 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + subs r2, #0x12 + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815A2E4 + str r0, [r4, #0x1c] +_0815A2DC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A2E4: .4byte sub_0815A2E8 + thumb_func_end sub_0815A258 + + thumb_func_start sub_0815A2E8 +sub_0815A2E8: @ 0x0815A2E8 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x32] + adds r1, r0, #1 + strh r1, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + ble _0815A324 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + 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 _0815A324 + ldr r0, _0815A328 + str r0, [r3, #0x1c] +_0815A324: + pop {r0} + bx r0 + .align 2, 0 +_0815A328: .4byte sub_0815A32C + thumb_func_end sub_0815A2E8 + + thumb_func_start sub_0815A32C +sub_0815A32C: @ 0x0815A32C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #6 + bhi _0815A384 + lsls r0, r0, #2 + ldr r1, _0815A344 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815A344: .4byte _0815A348 +_0815A348: @ jump table + .4byte _0815A364 @ case 0 + .4byte _0815A364 @ case 1 + .4byte _0815A36E @ case 2 + .4byte _0815A36E @ case 3 + .4byte _0815A37C @ case 4 + .4byte _0815A37C @ case 5 + .4byte _0815A384 @ case 6 +_0815A364: + movs r1, #0 + movs r0, #1 + strh r0, [r4, #0x24] + strh r1, [r4, #0x26] + b _0815A38C +_0815A36E: + ldr r0, _0815A378 + strh r0, [r4, #0x24] + movs r0, #0 + b _0815A38A + .align 2, 0 +_0815A378: .4byte 0x0000FFFF +_0815A37C: + movs r0, #0 + strh r0, [r4, #0x24] + movs r0, #1 + b _0815A38A +_0815A384: + movs r0, #0 + strh r0, [r4, #0x24] + ldr r0, _0815A3D0 +_0815A38A: + strh r0, [r4, #0x26] +_0815A38C: + ldrh r0, [r4, #0x34] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0815A39E + strh r2, [r4, #0x34] +_0815A39E: + ldrh r0, [r4, #0x36] + adds r1, r0, #1 + strh r1, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + ble _0815A3C8 + movs r0, #0x10 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x30] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldrh r1, [r4, #0x2e] + movs r0, #0x52 + bl sub_08001144 + ldr r0, _0815A3D4 + str r0, [r4, #0x1c] +_0815A3C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A3D0: .4byte 0x0000FFFF +_0815A3D4: .4byte sub_0815A3D8 + thumb_func_end sub_0815A32C + + thumb_func_start sub_0815A3D8 +sub_0815A3D8: @ 0x0815A3D8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r4, #0x30] + adds r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815A408 + ldrh r0, [r4, #0x2e] + subs r0, #1 + movs r1, #0 + strh r0, [r4, #0x2e] + strh r1, [r4, #0x30] +_0815A408: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815A41C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0815A41C: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _0815A43A + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 +_0815A43A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0815A3D8 + + thumb_func_start sub_0815A440 +sub_0815A440: @ 0x0815A440 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815A45C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0815A460 + str r0, [r1] + ldr r1, _0815A464 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_0815A45C: .4byte gUnknown_3005B60 +_0815A460: .4byte sub_0815A468 +_0815A464: .4byte gUnknown_203809E + thumb_func_end sub_0815A440 + + thumb_func_start sub_0815A468 +sub_0815A468: @ 0x0815A468 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A665C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _0815A4F4 + lsls r5, r4, #2 + adds r1, r5, r4 + lsls r1, r1, #3 + adds r1, r1, r7 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0815A4D8 + ldr r0, _0815A4F8 + lsls r2, r6, #4 + adds r1, r2, #0 + adds r1, #0xb + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r3, [r1] + mov r8, r3 + movs r3, #0xa + mov sb, r7 + adds r7, r5, #0 + mov ip, r0 + adds r5, r2, #0 + lsls r0, r6, #5 + add r0, ip + adds r2, r0, #0 + adds r2, #0x14 +_0815A4B6: + ldrh r0, [r2] + strh r0, [r1] + subs r2, #2 + subs r1, #2 + subs r3, #1 + cmp r3, #0 + bgt _0815A4B6 + adds r0, r5, #1 + lsls r0, r0, #1 + add r0, ip + movs r1, #0 + mov r2, r8 + strh r2, [r0] + adds r0, r7, r4 + lsls r0, r0, #3 + add r0, sb + strh r1, [r0, #0x12] +_0815A4D8: + ldr r0, _0815A4FC + ldrh r1, [r0, #0xe] + ldr r0, _0815A500 + cmp r1, r0 + bne _0815A4E8 + adds r0, r4, #0 + bl sub_080A8964 +_0815A4E8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A4F4: .4byte gUnknown_3005B60 +_0815A4F8: .4byte gUnknown_20377B4 +_0815A4FC: .4byte gUnknown_20380BE +_0815A500: .4byte 0x0000FFFF + thumb_func_end sub_0815A468 + + thumb_func_start sub_0815A504 +sub_0815A504: @ 0x0815A504 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815A520 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0815A524 + str r0, [r1] + ldr r1, _0815A528 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_0815A520: .4byte gUnknown_3005B60 +_0815A524: .4byte sub_0815A52C +_0815A528: .4byte gUnknown_203809E + thumb_func_end sub_0815A504 + + thumb_func_start sub_0815A52C +sub_0815A52C: @ 0x0815A52C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_080A665C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _0815A5EC + mov r0, r8 + lsls r3, r0, #2 + adds r1, r3, r0 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0815A5CE + ldr r0, _0815A5F0 + lsls r2, r7, #4 + adds r1, r2, #0 + adds r1, #0xb + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r6, [r1] + movs r4, #0xa + mov sl, r3 + mov sb, r0 + adds r5, r2, #0 + ldr r2, _0815A5F4 + mov ip, r2 + lsls r0, r7, #5 + add r0, sb + adds r3, r0, #0 + adds r3, #0x14 +_0815A580: + ldrh r0, [r3] + strh r0, [r1] + subs r3, #2 + subs r1, #2 + subs r4, #1 + cmp r4, #0 + bgt _0815A580 + adds r0, r5, #1 + lsls r0, r0, #1 + add r0, sb + strh r6, [r0] + adds r1, r5, #0 + adds r1, #0xb + lsls r1, r1, #1 + add r1, ip + ldrh r6, [r1] + movs r4, #0xa + lsls r0, r7, #5 + add r0, ip + adds r2, r0, #0 + adds r2, #0x14 +_0815A5AA: + ldrh r0, [r2] + strh r0, [r1] + subs r2, #2 + subs r1, #2 + subs r4, #1 + cmp r4, #0 + bgt _0815A5AA + adds r0, r5, #1 + lsls r0, r0, #1 + add r0, ip + movs r1, #0 + strh r6, [r0] + mov r0, sl + add r0, r8 + lsls r0, r0, #3 + ldr r2, _0815A5EC + adds r0, r0, r2 + strh r1, [r0, #0x12] +_0815A5CE: + ldr r0, _0815A5F8 + ldrh r1, [r0, #0xe] + ldr r0, _0815A5FC + cmp r1, r0 + bne _0815A5DE + mov r0, r8 + bl sub_080A8964 +_0815A5DE: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815A5EC: .4byte gUnknown_3005B60 +_0815A5F0: .4byte gUnknown_20377B4 +_0815A5F4: .4byte gUnknown_20373B4 +_0815A5F8: .4byte gUnknown_20380BE +_0815A5FC: .4byte 0x0000FFFF + thumb_func_end sub_0815A52C + + thumb_func_start sub_0815A600 +sub_0815A600: @ 0x0815A600 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0815A664 + ldrb r0, [r0] + mov r5, sp + adds r5, #2 + movs r1, #0 + mov r2, sp + adds r3, r5, #0 + bl sub_080A81EC + ldr r0, _0815A668 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815A634 + ldr r1, _0815A66C + ldrh r0, [r1, #4] + rsbs r0, r0, #0 + strh r0, [r1, #4] +_0815A634: + ldr r1, _0815A66C + ldrh r0, [r1, #8] + strh r0, [r4, #0x2e] + mov r2, sp + ldrh r0, [r1, #4] + ldrh r2, [r2] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldrh r0, [r1, #6] + ldrh r5, [r5] + adds r0, r0, r5 + strh r0, [r4, #0x36] + ldr r0, _0815A670 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _0815A674 + str r0, [r4, #0x1c] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815A664: .4byte gUnknown_20380D7 +_0815A668: .4byte gUnknown_20380D6 +_0815A66C: .4byte gUnknown_20380BE +_0815A670: .4byte 0x0000FFCE +_0815A674: .4byte sub_0815A678 + thumb_func_end sub_0815A600 + + thumb_func_start sub_0815A678 +sub_0815A678: @ 0x0815A678 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815A69A + movs r1, #0 + movs r0, #0x1e + strh r0, [r4, #0x2e] + strh r1, [r4, #0x30] + ldr r0, _0815A6A0 + str r0, [r4, #0x1c] + ldr r1, _0815A6A4 + adds r0, r4, #0 + bl sub_080A5B9C +_0815A69A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A6A0: .4byte sub_080A5D78 +_0815A6A4: .4byte sub_0815A6A8 + thumb_func_end sub_0815A678 + + thumb_func_start sub_0815A6A8 +sub_0815A6A8: @ 0x0815A6A8 + push {lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x30] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0815A6D4 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] +_0815A6D4: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + bne _0815A6E8 + adds r0, r3, #0 + bl sub_080A34C4 +_0815A6E8: + pop {r0} + bx r0 + thumb_func_end sub_0815A6A8 + + thumb_func_start sub_0815A6EC +sub_0815A6EC: @ 0x0815A6EC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080A6100 + ldr r5, _0815A71C + movs r0, #0 + ldrsh r1, [r5, r0] + adds r0, r4, #0 + bl sub_080A612C + ldrh r0, [r5, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _0815A720 + str r0, [r4, #0x1c] + ldr r1, _0815A724 + adds r0, r4, #0 + bl sub_080A5B9C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815A71C: .4byte gUnknown_20380BE +_0815A720: .4byte sub_080A60A0 +_0815A724: .4byte sub_080A34C4 + thumb_func_end sub_0815A6EC + + thumb_func_start sub_0815A728 +sub_0815A728: @ 0x0815A728 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815A788 + adds r0, r4, #0 + bl sub_080A6100 + ldr r5, _0815A764 + movs r2, #0 + ldrsh r1, [r5, r2] + adds r0, r4, #0 + bl sub_080A612C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815A77C + ldr r0, _0815A768 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815A76C + ldrh r0, [r5, #4] + b _0815A782 + .align 2, 0 +_0815A764: .4byte gUnknown_20380BE +_0815A768: .4byte gUnknown_20380D6 +_0815A76C: + movs r1, #4 + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x30] + movs r2, #6 + ldrsh r0, [r5, r2] + rsbs r0, r0, #0 + b _0815A786 +_0815A77C: + movs r1, #4 + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 +_0815A782: + strh r0, [r4, #0x30] + ldrh r0, [r5, #6] +_0815A786: + strh r0, [r4, #0x32] +_0815A788: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r2, #0x2e + ldrsh r1, [r4, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + movs r3, #0xff + ldrh r1, [r4, #0x30] + ldrh r2, [r4, #0x34] + adds r1, r1, r2 + strh r1, [r4, #0x34] + ldrh r1, [r4, #0x32] + ldrh r2, [r4, #0x36] + adds r1, r1, r2 + strh r1, [r4, #0x36] + movs r2, #0x34 + ldrsh r1, [r4, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + asrs r1, r1, #1 + strh r1, [r4, #0x24] + ands r0, r3 + movs r1, #5 + bl sub_0806EFB8 + movs r2, #0x36 + ldrsh r1, [r4, r2] + lsrs r2, r1, #0x1f + adds r1, r1, r2 + asrs r1, r1, #1 + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf0 + bls _0815A7E0 + adds r0, r4, #0 + bl sub_080A34C4 +_0815A7E0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815A728 + + thumb_func_start sub_0815A7E8 +sub_0815A7E8: @ 0x0815A7E8 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0815A7FE + adds r0, r2, #0 + bl sub_080A34C4 +_0815A7FE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815A7E8 + + thumb_func_start sub_0815A804 +sub_0815A804: @ 0x0815A804 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0815A820 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815A828 + ldr r1, _0815A824 + movs r0, #0 + b _0815A82C + .align 2, 0 +_0815A820: .4byte gUnknown_20380D7 +_0815A824: .4byte gUnknown_20380BE +_0815A828: + ldr r1, _0815A83C + movs r0, #1 +_0815A82C: + strh r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A83C: .4byte gUnknown_20380BE + thumb_func_end sub_0815A804 + + thumb_func_start sub_0815A840 +sub_0815A840: @ 0x0815A840 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0815A854 + ldr r0, [r0] + cmp r0, #0 + ble _0815A85C + ldr r1, _0815A858 + movs r0, #0 + b _0815A860 + .align 2, 0 +_0815A854: .4byte gUnknown_20380A4 +_0815A858: .4byte gUnknown_20380BE +_0815A85C: + ldr r1, _0815A86C + movs r0, #1 +_0815A860: + strh r0, [r1, #0xe] + adds r0, r2, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_0815A86C: .4byte gUnknown_20380BE + thumb_func_end sub_0815A840 + + thumb_func_start sub_0815A870 +sub_0815A870: @ 0x0815A870 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _0815A8CC + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r0, _0815A8D0 + movs r1, #0 + strh r1, [r0] + ldr r4, _0815A8D4 + strh r1, [r4] + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x44 + bl sub_08001144 + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6248 + ldrb r1, [r5, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r5, #1] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815A8D8 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815A8CC: .4byte 0x00001F3F +_0815A8D0: .4byte gUnknown_2022AD8 +_0815A8D4: .4byte gUnknown_2022ADA +_0815A8D8: .4byte sub_0815A8DC + thumb_func_end sub_0815A870 + + thumb_func_start sub_0815A8DC +sub_0815A8DC: @ 0x0815A8DC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #5 + bhi _0815A99C + lsls r0, r0, #2 + ldr r1, _0815A8F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815A8F4: .4byte _0815A8F8 +_0815A8F8: @ jump table + .4byte _0815A910 @ case 0 + .4byte _0815A92E @ case 1 + .4byte _0815A94E @ case 2 + .4byte _0815A92E @ case 3 + .4byte _0815A96E @ case 4 + .4byte _0815A97E @ case 5 +_0815A910: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + 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 _0815A99C + b _0815A976 +_0815A92E: + ldrh r0, [r4, #0x30] + adds r0, #0x75 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x15 + bne _0815A99C + movs r0, #0 + strh r0, [r4, #0x32] + b _0815A976 +_0815A94E: + ldrh r0, [r4, #0x30] + subs r0, #0x75 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x29 + bne _0815A99C + movs r0, #0 + strh r0, [r4, #0x32] + b _0815A976 +_0815A96E: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007FD0 +_0815A976: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815A99C +_0815A97E: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0815A99C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815A9A4 + str r0, [r4, #0x1c] +_0815A99C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A9A4: .4byte sub_0815A9A8 + thumb_func_end sub_0815A8DC + + thumb_func_start sub_0815A9A8 +sub_0815A9A8: @ 0x0815A9A8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0815A9DC + movs r0, #0x4a + bl sub_08001144 + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815A9DC: .4byte 0x00003F3F + thumb_func_end sub_0815A9A8 + + thumb_func_start sub_0815A9E0 +sub_0815A9E0: @ 0x0815A9E0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0815AA54 + movs r1, #6 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815AA0C + ldr r4, _0815AA58 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] +_0815AA0C: + ldrh r0, [r6] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + movs r3, #0 + strh r0, [r5, #0x20] + ldrh r0, [r6, #2] + ldrh r4, [r5, #0x22] + adds r0, r0, r4 + strh r0, [r5, #0x22] + ldrh r2, [r5, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x10 + ldr r4, _0815AA5C + adds r0, r4, #0 + ands r1, r0 + ldr r0, _0815AA60 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, #4] + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815AA68 + ldrb r1, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5, #3] + ldr r0, _0815AA64 + strh r0, [r5, #0x24] + movs r0, #2 + b _0815AA6E + .align 2, 0 +_0815AA54: .4byte gUnknown_20380BE +_0815AA58: .4byte gUnknown_20380D6 +_0815AA5C: .4byte 0x000003FF +_0815AA60: .4byte 0xFFFFFC00 +_0815AA64: .4byte 0x0000FFF4 +_0815AA68: + movs r0, #0xc + strh r0, [r5, #0x24] + ldr r0, _0815AA8C +_0815AA6E: + strh r0, [r5, #0x30] + ldr r1, _0815AA90 + ldrh r0, [r1, #8] + strh r0, [r5, #0x2e] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmp r0, #0xff + beq _0815AA82 + ldrh r0, [r1, #4] + strh r0, [r5, #0x34] +_0815AA82: + ldr r0, _0815AA94 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815AA8C: .4byte 0x0000FFFE +_0815AA90: .4byte gUnknown_20380BE +_0815AA94: .4byte sub_0815AA98 + thumb_func_end sub_0815A9E0 + + thumb_func_start sub_0815AA98 +sub_0815AA98: @ 0x0815AA98 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x32] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815AAD6 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815AAF6 + adds r0, r2, #1 + strh r0, [r4, #0x32] + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815AAF6 + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xde + bl sub_080A30D0 + b _0815AAF6 +_0815AAD6: + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x30] + subs r0, r0, r1 + strh r0, [r4, #0x24] + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _0815AAE8 + rsbs r0, r0, #0 +_0815AAE8: + cmp r0, #0xc + bne _0815AAF6 + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + subs r0, r2, #1 + strh r0, [r4, #0x32] +_0815AAF6: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815AB04 + adds r0, r4, #0 + bl sub_080A34C4 +_0815AB04: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815AA98 + + thumb_func_start sub_0815AB0C +sub_0815AB0C: @ 0x0815AB0C + push {lr} + ldrb r2, [r0, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0, #1] + movs r1, #0xff + strh r1, [r0, #0x34] + bl sub_0815A9E0 + pop {r0} + bx r0 + thumb_func_end sub_0815AB0C + + thumb_func_start sub_0815AB28 +sub_0815AB28: @ 0x0815AB28 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815AB7C + ldr r1, _0815AB64 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _0815AB68 + ldr r2, _0815AB6C + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _0815AB70 + movs r0, #0xa0 + strh r0, [r1] + ldr r0, _0815AB74 + ldrh r1, [r0] + movs r0, #0x42 + bl sub_08001144 + ldr r0, _0815AB78 + ldrh r1, [r0] + movs r0, #0x46 + bl sub_08001144 + b _0815ABAC + .align 2, 0 +_0815AB64: .4byte 0x00001F3F +_0815AB68: .4byte gUnknown_2022ADC +_0815AB6C: .4byte 0x000098F0 +_0815AB70: .4byte gUnknown_2022ADE +_0815AB74: .4byte gUnknown_2022AD8 +_0815AB78: .4byte gUnknown_2022ADA +_0815AB7C: + ldr r1, _0815ABB8 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _0815ABBC + movs r0, #0xf0 + strh r0, [r1] + ldr r4, _0815ABC0 + ldr r1, _0815ABC4 + adds r0, r1, #0 + strh r0, [r4] + movs r0, #0x42 + movs r1, #0xf0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x46 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001200 +_0815ABAC: + adds r0, r5, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815ABB8: .4byte 0x00001F3F +_0815ABBC: .4byte gUnknown_2022ADC +_0815ABC0: .4byte gUnknown_2022ADE +_0815ABC4: .4byte 0x000078A0 + thumb_func_end sub_0815AB28 + + thumb_func_start sub_0815ABC8 +sub_0815ABC8: @ 0x0815ABC8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0815AC00 + movs r0, #0x48 + bl sub_08001144 + ldr r0, _0815AC04 + movs r1, #0 + strh r1, [r0] + ldr r0, _0815AC08 + strh r1, [r0] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815ABF4 + movs r1, #0x80 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001220 +_0815ABF4: + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815AC00: .4byte 0x00003F3F +_0815AC04: .4byte gUnknown_2022ADC +_0815AC08: .4byte gUnknown_2022ADE + thumb_func_end sub_0815ABC8 + + thumb_func_start sub_0815AC0C +sub_0815AC0C: @ 0x0815AC0C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0815AC20 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815AC28 + ldr r4, _0815AC24 + b _0815AC2A + .align 2, 0 +_0815AC20: .4byte gUnknown_20380BE +_0815AC24: .4byte gUnknown_20380D6 +_0815AC28: + ldr r4, _0815AC7C +_0815AC2A: + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #2] + adds r0, r0, r6 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + ldr r2, _0815AC80 + ldrh r0, [r2, #4] + strh r0, [r5, #0x26] + movs r3, #0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r4, [r2, #6] + movs r6, #6 + ldrsh r1, [r2, r6] + cmp r0, r1 + ble _0815AC62 + movs r3, #1 +_0815AC62: + strh r3, [r5, #0x2e] + movs r0, #0 + strh r0, [r5, #0x30] + ldrh r0, [r2, #8] + strh r0, [r5, #0x32] + ldrh r0, [r2, #0xa] + strh r0, [r5, #0x34] + strh r4, [r5, #0x36] + ldr r0, _0815AC84 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815AC7C: .4byte gUnknown_20380D7 +_0815AC80: .4byte gUnknown_20380BE +_0815AC84: .4byte sub_0815AC88 + thumb_func_end sub_0815AC0C + + thumb_func_start sub_0815AC88 +sub_0815AC88: @ 0x0815AC88 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + ldrh r1, [r2, #0x30] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r2, #0x30] + ldr r1, _0815ACD0 + movs r3, #0x30 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + 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 _0815ACD4 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + bge _0815ACE6 + adds r0, r2, #0 + bl sub_080A34C4 + b _0815ACE6 + .align 2, 0 +_0815ACD0: .4byte gUnknown_82FA8CC +_0815ACD4: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x36 + ldrsh r1, [r2, r3] + cmp r0, r1 + ble _0815ACE6 + adds r0, r2, #0 + bl sub_080A34C4 +_0815ACE6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815AC88 + + thumb_func_start sub_0815ACEC +sub_0815ACEC: @ 0x0815ACEC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0815AD0C + adds r5, r1, r0 + ldr r0, _0815AD10 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815AD18 + ldr r4, _0815AD14 + b _0815AD1A + .align 2, 0 +_0815AD0C: .4byte gUnknown_3005B60 +_0815AD10: .4byte gUnknown_20380BE +_0815AD14: .4byte gUnknown_20380D6 +_0815AD18: + ldr r4, _0815AD60 +_0815AD1A: + ldrb r0, [r4] + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldrb r0, [r4] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r6, #0 + adds r1, r0, #0 + adds r1, #0x24 + movs r2, #0 + strh r1, [r5, #8] + strh r1, [r5, #0xa] + subs r0, #0x21 + strh r0, [r5, #0xc] + cmp r0, #0 + bge _0815AD44 + strh r2, [r5, #0xc] +_0815AD44: + ldrh r0, [r5, #8] + strh r0, [r5, #0xe] + movs r0, #8 + strh r0, [r5, #0x10] + ldr r1, _0815AD64 + ldrh r0, [r1, #2] + strh r0, [r5, #0x12] + strh r2, [r5, #0x14] + strh r2, [r5, #0x16] + cmp r7, #1 + bne _0815AD6C + ldr r0, _0815AD68 + b _0815AD6E + .align 2, 0 +_0815AD60: .4byte gUnknown_20380D7 +_0815AD64: .4byte gUnknown_20380BE +_0815AD68: .4byte gUnknown_2022ACC +_0815AD6C: + ldr r0, _0815AD8C +_0815AD6E: + ldrh r2, [r0] + strh r2, [r5, #0x18] + adds r3, r2, #0 + adds r3, #0xf0 + strh r3, [r5, #0x1a] + ldrh r0, [r1, #4] + strh r0, [r5, #0x1c] + movs r4, #4 + ldrsh r0, [r1, r4] + cmp r0, #0 + bne _0815AD90 + strh r3, [r5, #0x1e] + ldrh r3, [r5, #0x18] + b _0815AD94 + .align 2, 0 +_0815AD8C: .4byte gUnknown_2022AD0 +_0815AD90: + strh r2, [r5, #0x1e] + ldrh r3, [r5, #0x1a] +_0815AD94: + movs r0, #0 + strh r0, [r5, #0x26] + ldrh r1, [r5, #0xc] + lsls r2, r1, #0x10 + asrs r1, r2, #0x10 + movs r6, #0xe + ldrsh r0, [r5, r6] + cmp r1, r0 + bgt _0815ADCA + ldr r4, _0815ADD4 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r0, r0, r4 + mov ip, r0 +_0815ADB0: + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r0, r1, r4 + strh r3, [r0] + add r1, ip + strh r3, [r1] + adds r2, #1 + lsls r2, r2, #0x10 + asrs r1, r2, #0x10 + movs r6, #0xe + ldrsh r0, [r5, r6] + cmp r1, r0 + ble _0815ADB0 +_0815ADCA: + cmp r7, #1 + bne _0815ADDC + ldr r0, _0815ADD8 + b _0815ADDE + .align 2, 0 +_0815ADD4: .4byte gUnknown_20388C8 +_0815ADD8: .4byte 0x04000014 +_0815ADDC: + ldr r0, _0815AE08 +_0815ADDE: + str r0, [sp] + ldr r0, _0815AE0C + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _0815AE10 + str r0, [r5] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815AE08: .4byte 0x04000018 +_0815AE0C: .4byte 0xA2600001 +_0815AE10: .4byte sub_0815AE14 + thumb_func_end sub_0815ACEC + + thumb_func_start sub_0815AE14 +sub_0815AE14: @ 0x0815AE14 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0815AE64 + adds r4, r0, r1 + ldrh r0, [r4, #8] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0xc] + movs r3, #0xc + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0815AE3C + strh r2, [r4, #8] +_0815AE3C: + ldrh r1, [r4, #0x10] + movs r2, #0x10 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0815AE68 + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0xc] + movs r3, #0xc + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0815AE6C + strh r2, [r4, #0xa] + movs r0, #1 + strh r0, [r4, #0x26] + b _0815AE6C + .align 2, 0 +_0815AE64: .4byte gUnknown_3005B60 +_0815AE68: + subs r0, r1, #1 + strh r0, [r4, #0x10] +_0815AE6C: + ldrh r0, [r4, #0x14] + adds r0, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815AE98 + movs r0, #0 + strh r0, [r4, #0x14] + movs r1, #0 + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0815AE8A + movs r1, #1 +_0815AE8A: + strh r1, [r4, #0x16] + cmp r1, #0 + beq _0815AE94 + ldrh r0, [r4, #0x18] + b _0815AE96 +_0815AE94: + ldrh r0, [r4, #0x1a] +_0815AE96: + strh r0, [r4, #0x20] +_0815AE98: + ldrh r1, [r4, #8] + lsls r3, r1, #0x10 + asrs r1, r3, #0x10 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _0815AECC + ldr r5, _0815AF24 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 +_0815AEAE: + asrs r3, r3, #0x10 + lsls r1, r3, #1 + adds r2, r1, r5 + ldrh r0, [r4, #0x20] + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r4, #0x20] + strh r0, [r1] + adds r3, #1 + lsls r3, r3, #0x10 + asrs r1, r3, #0x10 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0815AEAE +_0815AECC: + ldrh r1, [r4, #0xa] + lsls r3, r1, #0x10 + asrs r1, r3, #0x10 + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r1, r0 + bgt _0815AF00 + ldr r5, _0815AF24 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r6, r5, r0 +_0815AEE2: + asrs r3, r3, #0x10 + lsls r1, r3, #1 + adds r2, r1, r5 + ldrh r0, [r4, #0x1e] + strh r0, [r2] + adds r1, r1, r6 + ldrh r0, [r4, #0x1e] + strh r0, [r1] + adds r3, #1 + lsls r3, r3, #0x10 + asrs r1, r3, #0x10 + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0815AEE2 +_0815AF00: + movs r3, #0x26 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0815AF1C + movs r1, #0x1c + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815AF16 + ldr r1, _0815AF28 + movs r0, #3 + strb r0, [r1, #0x15] +_0815AF16: + adds r0, r7, #0 + bl sub_080A34E4 +_0815AF1C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815AF24: .4byte gUnknown_20388C8 +_0815AF28: .4byte gUnknown_20397C8 + thumb_func_end sub_0815AE14 + + thumb_func_start sub_0815AF2C +sub_0815AF2C: @ 0x0815AF2C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0815AF80 + adds r4, r4, r0 + movs r5, #0 + strh r5, [r4, #8] + strh r5, [r4, #0xa] + ldr r6, _0815AF84 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xc] + ldrb r0, [r6] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xe] + movs r0, #0x20 + strh r0, [r4, #0x10] + ldr r0, _0815AF88 + strh r0, [r4, #0x12] + strh r5, [r4, #0x14] + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _0815AF8C + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815AF80: .4byte gUnknown_3005B60 +_0815AF84: .4byte gUnknown_20380D6 +_0815AF88: .4byte 0x0000FFEC +_0815AF8C: .4byte sub_0815AF90 + thumb_func_end sub_0815AF2C + + thumb_func_start sub_0815AF90 +sub_0815AF90: @ 0x0815AF90 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0815AFBC + adds r6, r0, r1 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #5 + bls _0815AFB0 + b _0815B16A +_0815AFB0: + lsls r0, r0, #2 + ldr r1, _0815AFC0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815AFBC: .4byte gUnknown_3005B60 +_0815AFC0: .4byte _0815AFC4 +_0815AFC4: @ jump table + .4byte _0815AFDC @ case 0 + .4byte _0815B09C @ case 1 + .4byte _0815B0CA @ case 2 + .4byte _0815B0DE @ case 3 + .4byte _0815B0F4 @ case 4 + .4byte _0815B15C @ case 5 +_0815AFDC: + movs r0, #0xc + ldrsh r2, [r6, r0] + ldrh r1, [r6, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0815AFF2 + movs r1, #0x10 + ldrsh r0, [r6, r1] + subs r0, r2, r0 + b _0815AFF8 +_0815AFF2: + movs r1, #0x10 + ldrsh r0, [r6, r1] + adds r0, r2, r0 +_0815AFF8: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldrh r2, [r6, #0x12] + ldrh r0, [r6, #0xe] + adds r2, r2, r0 + ldr r0, _0815B08C + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldrb r4, [r6, #0xa] + movs r3, #6 + subs r3, r3, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xba + bl sub_080A307C + cmp r4, #0x40 + beq _0815B05C + ldr r5, _0815B090 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r3, r1, r5 + ldrh r0, [r6, #0xa] + movs r2, #1 + ands r2, r0 + adds r3, #0x3f + ldrb r4, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r3] + adds r5, #0x1c + adds r1, r1, r5 + ldr r0, _0815B094 + str r0, [r1] +_0815B05C: + ldrh r1, [r6, #0xa] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0815B074 + ldrh r0, [r6, #0x10] + subs r0, #6 + strh r0, [r6, #0x10] + ldrh r0, [r6, #0x12] + subs r0, #6 + strh r0, [r6, #0x12] +_0815B074: + ldrh r1, [r6, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815B098 + adds r0, r6, #0 + bl sub_080A75C4 + ldrh r0, [r6, #0xa] + adds r0, #1 + strh r0, [r6, #0xa] + strh r4, [r6, #8] + b _0815B16A + .align 2, 0 +_0815B08C: .4byte gUnknown_856ECF8 +_0815B090: .4byte gUnknown_20205AC +_0815B094: .4byte sub_08007140 +_0815B098: .4byte gUnknown_85AD0A8 +_0815B09C: + adds r0, r6, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0815B16A + movs r2, #0xa + ldrsh r1, [r6, r2] + cmp r1, #6 + bne _0815B0BC + movs r0, #8 + strh r0, [r6, #0x14] + movs r0, #3 + strh r0, [r6, #8] + b _0815B16A +_0815B0BC: + cmp r1, #2 + bgt _0815B0C2 + movs r0, #0xa +_0815B0C2: + strh r0, [r6, #0x14] + movs r0, #2 + strh r0, [r6, #8] + b _0815B16A +_0815B0CA: + ldrh r0, [r6, #0x14] + movs r2, #0x14 + ldrsh r1, [r6, r2] + cmp r1, #0 + beq _0815B0DA + subs r0, #1 + strh r0, [r6, #0x14] + b _0815B16A +_0815B0DA: + strh r1, [r6, #8] + b _0815B16A +_0815B0DE: + ldrh r1, [r6, #0x14] + movs r2, #0x14 + ldrsh r0, [r6, r2] + cmp r0, #0 + beq _0815B0EE + subs r0, r1, #1 + strh r0, [r6, #0x14] + b _0815B16A +_0815B0EE: + movs r0, #4 + strh r0, [r6, #8] + b _0815B16A +_0815B0F4: + movs r5, #0 + movs r7, #0 + ldr r3, _0815B150 + movs r0, #0x1c + adds r0, r0, r3 + mov r8, r0 +_0815B100: + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r4, r0, #2 + adds r0, r3, #0 + adds r0, #0x14 + adds r0, r4, r0 + ldr r1, [r0] + ldr r0, _0815B154 + cmp r1, r0 + bne _0815B13C + adds r0, r4, r3 + strh r2, [r0, #0x2e] + movs r1, #6 + strh r1, [r0, #0x30] + movs r1, #2 + str r2, [sp] + str r3, [sp, #4] + bl sub_08007EC0 + mov r0, r8 + adds r1, r4, r0 + ldr r0, _0815B158 + str r0, [r1] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r2, [sp] + ldr r3, [sp, #4] + cmp r7, #6 + beq _0815B146 +_0815B13C: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x3f + bls _0815B100 +_0815B146: + strh r7, [r6, #0x14] + movs r0, #5 + strh r0, [r6, #8] + b _0815B16A + .align 2, 0 +_0815B150: .4byte gUnknown_20205AC +_0815B154: .4byte gUnknown_856ECF8 +_0815B158: .4byte sub_0815B178 +_0815B15C: + movs r1, #0x14 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815B16A + adds r0, r2, #0 + bl sub_080A34E4 +_0815B16A: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815AF90 + + thumb_func_start sub_0815B178 +sub_0815B178: @ 0x0815B178 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0815B1AC + ldr r3, _0815B1B4 + movs r0, #0x30 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x2e + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0815B1AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B1B4: .4byte gUnknown_3005B60 + thumb_func_end sub_0815B178 + + thumb_func_start sub_0815B1B8 +sub_0815B1B8: @ 0x0815B1B8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815B1CC + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6294 +_0815B1CC: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x27 + bgt _0815B1FE + ldrh r0, [r5, #0x2e] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0815B1F0 + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + b _0815B1FC +_0815B1F0: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 +_0815B1FC: + strb r0, [r2] +_0815B1FE: + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0x1e + ble _0815B214 + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0815B214: + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0x3d + bne _0815B260 + ldr r1, _0815B268 + adds r0, r5, #0 + bl sub_080A5B9C + ldrh r0, [r5, #0x24] + ldrh r2, [r5, #0x20] + adds r0, r0, r2 + movs r1, #0 + strh r0, [r5, #0x20] + ldrh r0, [r5, #0x26] + ldrh r2, [r5, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x22] + strh r1, [r5, #0x24] + strh r1, [r5, #0x26] + movs r0, #0x14 + strh r0, [r5, #0x2e] + ldr r4, _0815B26C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x32] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x36] + ldr r0, _0815B270 + str r0, [r5, #0x1c] +_0815B260: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815B268: .4byte sub_080A34C4 +_0815B26C: .4byte gUnknown_20380D7 +_0815B270: .4byte sub_080A67B4 + thumb_func_end sub_0815B1B8 + + thumb_func_start sub_0815B274 +sub_0815B274: @ 0x0815B274 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0815B294 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815B298 + cmp r0, #1 + beq _0815B2B8 + b _0815B2CA + .align 2, 0 +_0815B294: .4byte gUnknown_3005B60 +_0815B298: + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815B2B4 + adds r0, r4, #0 + bl sub_080A75C4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815B2CA + .align 2, 0 +_0815B2B4: .4byte gUnknown_85AD158 +_0815B2B8: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815B2CA + adds r0, r5, #0 + bl sub_080A34E4 +_0815B2CA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815B274 + + thumb_func_start sub_0815B2D0 +sub_0815B2D0: @ 0x0815B2D0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _0815B330 + cmp r0, #1 + bgt _0815B2F0 + cmp r0, #0 + beq _0815B2FA + b _0815B3D2 +_0815B2F0: + cmp r0, #2 + beq _0815B360 + cmp r0, #3 + beq _0815B3B4 + b _0815B3D2 +_0815B2FA: + ldr r4, _0815B32C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + adds r0, r6, #0 + movs r1, #0 + bl sub_080A6B38 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x30] + strh r0, [r5, #0x32] + b _0815B3A8 + .align 2, 0 +_0815B32C: .4byte gUnknown_20380D6 +_0815B330: + 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_080A6A7C + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0815B360 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_0815B360: + 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_080A6A7C + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bne _0815B3D2 + movs r0, #0 + strh r0, [r5, #0x34] + ldr r1, _0815B3B0 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #0 + bl sub_080A6C0C +_0815B3A8: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0815B3D2 + .align 2, 0 +_0815B3B0: .4byte gUnknown_20205AC +_0815B3B4: + ldrh r0, [r5, #0x26] + subs r0, #6 + strh r0, [r5, #0x26] + movs r1, #0x22 + ldrsh r0, [r5, r1] + movs r2, #0x26 + ldrsh r1, [r5, r2] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0815B3D2 + adds r0, r5, #0 + bl sub_080A34C4 +_0815B3D2: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0815B2D0 + + thumb_func_start sub_0815B3D8 +sub_0815B3D8: @ 0x0815B3D8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0815B3F0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815B3F8 + ldr r0, _0815B3F4 + b _0815B3FC + .align 2, 0 +_0815B3F0: .4byte gUnknown_20380D6 +_0815B3F4: .4byte 0x0000FFF0 +_0815B3F8: + movs r0, #0x80 + lsls r0, r0, #1 +_0815B3FC: + strh r0, [r4, #0x20] + movs r0, #0 + strh r0, [r4, #0x22] + ldr r0, _0815B40C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B40C: .4byte sub_0815B410 + thumb_func_end sub_0815B3D8 + + thumb_func_start sub_0815B410 +sub_0815B410: @ 0x0815B410 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #0x48 + strh r0, [r4, #0x2e] + ldr r0, _0815B430 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815B434 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + b _0815B43C + .align 2, 0 +_0815B430: .4byte gUnknown_20380D6 +_0815B434: + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + rsbs r0, r0, #0 +_0815B43C: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #0x10 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r5, r0, r1 + strh r5, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815B488 + ldr r0, _0815B4A8 + ldrh r1, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r4, #0x22] + adds r2, r2, r5 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r3, r4, #0 + adds r3, #0x43 + ldrb r3, [r3] + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006D6C +_0815B488: + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + adds r0, #0x20 + movs r1, #0x98 + lsls r1, r1, #1 + cmp r0, r1 + bls _0815B4A2 + adds r0, r4, #0 + bl sub_080A34C4 +_0815B4A2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815B4A8: .4byte gUnknown_85AD1A8 + thumb_func_end sub_0815B410 + + thumb_func_start sub_0815B4AC +sub_0815B4AC: @ 0x0815B4AC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F0A4 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0815B4C6 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #4 + b _0815B4CE +_0815B4C6: + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #5 +_0815B4CE: + ldr r3, _0815B500 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0815B504 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + bl sub_0806F0A4 + movs r1, #7 + ands r0, r1 + adds r1, r0, #0 + cmp r1, #3 + ble _0815B4F0 + rsbs r0, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0815B4F0: + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x26] + ldr r0, _0815B508 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815B500: .4byte 0x000003FF +_0815B504: .4byte 0xFFFFFC00 +_0815B508: .4byte sub_0815B50C + thumb_func_end sub_0815B4AC + + thumb_func_start sub_0815B50C +sub_0815B50C: @ 0x0815B50C + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1d + bgt _0815B54E + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _0815B582 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r2, [r0] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r0, #0 + b _0815B580 +_0815B54E: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #2 + bne _0815B564 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0815B564: + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #3 + bne _0815B57C + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815B594 + strh r0, [r3, #0x30] +_0815B57C: + ldrh r0, [r3, #0x30] + adds r0, #1 +_0815B580: + strh r0, [r3, #0x30] +_0815B582: + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #0x3c + ble _0815B590 + adds r0, r3, #0 + bl sub_08006E00 +_0815B590: + pop {r0} + bx r0 + .align 2, 0 +_0815B594: .4byte 0x0000FFFF + thumb_func_end sub_0815B50C + + thumb_func_start sub_0815B598 +sub_0815B598: @ 0x0815B598 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _0815B5D0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815B5D8 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815B5D4 + adds r0, r4, #0 + bl sub_080A75C4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815B5EA + .align 2, 0 +_0815B5D0: .4byte gUnknown_3005B60 +_0815B5D4: .4byte gUnknown_85AD1C0 +_0815B5D8: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815B5EA + adds r0, r5, #0 + bl sub_080A34E4 +_0815B5EA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815B598 + + thumb_func_start sub_0815B5F0 +sub_0815B5F0: @ 0x0815B5F0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _0815B628 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815B630 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815B62C + adds r0, r4, #0 + bl sub_080A75C4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815B642 + .align 2, 0 +_0815B628: .4byte gUnknown_3005B60 +_0815B62C: .4byte gUnknown_85AD1E8 +_0815B630: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815B642 + adds r0, r5, #0 + bl sub_080A34E4 +_0815B642: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815B5F0 + + thumb_func_start sub_0815B648 +sub_0815B648: @ 0x0815B648 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815B65A + cmp r0, #1 + beq _0815B684 + b _0815B6AC +_0815B65A: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + movs r0, #0x90 + lsls r0, r0, #4 + strh r0, [r4, #0x30] + ldr r0, _0815B680 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815B6AC + .align 2, 0 +_0815B680: .4byte gUnknown_20380D6 +_0815B684: + ldrh r2, [r4, #0x30] + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x26] + subs r0, 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, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _0815B6AC + adds r0, r4, #0 + bl sub_080A34C4 +_0815B6AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815B648 + + thumb_func_start sub_0815B6B4 +sub_0815B6B4: @ 0x0815B6B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _0815B6EC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815B6F4 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815B6F0 + adds r0, r4, #0 + bl sub_080A75C4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815B706 + .align 2, 0 +_0815B6EC: .4byte gUnknown_3005B60 +_0815B6F0: .4byte gUnknown_85AD238 +_0815B6F4: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815B706 + adds r0, r5, #0 + bl sub_080A34E4 +_0815B706: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815B6B4 + + thumb_func_start sub_0815B70C +sub_0815B70C: @ 0x0815B70C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0815B73C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r3, r1, #0 + cmp r0, #4 + bls _0815B732 + b _0815BA38 +_0815B732: + lsls r0, r0, #2 + ldr r1, _0815B740 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815B73C: .4byte gUnknown_3005B60 +_0815B740: .4byte _0815B744 +_0815B744: @ jump table + .4byte _0815B758 @ case 0 + .4byte _0815B7A8 @ case 1 + .4byte _0815B7E4 @ case 2 + .4byte _0815B980 @ case 3 + .4byte _0815B9BE @ case 4 +_0815B758: + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r0, _0815B77C + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815B780 + movs r0, #1 + movs r1, #2 + movs r2, #1 + bl sub_0811887C + b _0815B78A + .align 2, 0 +_0815B77C: .4byte gUnknown_20380D6 +_0815B780: + movs r0, #2 + movs r1, #2 + movs r2, #1 + bl sub_0811887C +_0815B78A: + ldr r0, _0815B7A0 + mov r6, r8 + lsls r1, r6, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0815B7A4 + ldrh r0, [r0] + strh r0, [r1, #0x1c] + b _0815B962 + .align 2, 0 +_0815B7A0: .4byte gUnknown_3005B60 +_0815B7A4: .4byte gUnknown_20380BE +_0815B7A8: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r3 + ldrh r0, [r4, #0xc] + adds r1, r0, #1 + strh r1, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bgt _0815B7C2 + b _0815BA38 +_0815B7C2: + movs r0, #0 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + ldrh r5, [r4, #0xa] + lsls r1, r5, #4 + orrs r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 + cmp r5, #0xf + beq _0815B7E2 + b _0815BA38 +_0815B7E2: + b _0815B9B6 +_0815B7E4: + ldr r5, _0815B814 + ldrb r0, [r5] + ldr r1, _0815B818 + ldrb r1, [r1] + mov r2, r8 + lsls r4, r2, #2 + adds r2, r4, r2 + lsls r2, r2, #3 + adds r2, r2, r3 + ldrb r2, [r2, #0x1c] + bl sub_0805E064 + ldrb r1, [r5] + mov r0, sp + bl sub_080A64C4 + bl sub_080A46B8 + lsls r0, r0, #0x18 + mov sb, r4 + cmp r0, #0 + beq _0815B81C + movs r1, #0 + b _0815B826 + .align 2, 0 +_0815B814: .4byte gUnknown_20380D6 +_0815B818: .4byte gUnknown_20380D7 +_0815B81C: + ldrb r0, [r5] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_0815B826: + ldr r0, _0815B908 + ldr r2, [r0] + lsls r0, r1, #2 + adds r2, #4 + adds r2, r2, r0 + ldr r1, _0815B90C + ldr r0, _0815B910 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #0xb + ldr r0, [r2] + adds r0, r0, r1 + ldr r1, [sp] + ldr r2, _0815B914 + bl CpuSet + ldr r1, [sp] + movs r2, #0x80 + lsls r2, r2, #4 + mov r0, sp + ldrh r3, [r0, #0xa] + movs r0, #1 + bl sub_0800195C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815B958 + ldr r5, _0815B918 + ldr r0, [r5] + ldr r0, [r0, #0x18] + ldrh r0, [r0] + bl sub_080DAA0C + adds r4, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x18] + ldrh r0, [r0, #2] + bl sub_080DAA0C + lsls r4, r4, #0x18 + lsls r0, r0, #0x18 + cmp r4, r0 + beq _0815B8D8 + ldr r6, [sp, #4] + movs r5, #0 + movs r0, #7 + mov ip, r0 + movs r7, #0 +_0815B88C: + movs r4, #0 + adds r3, r7, r6 + mov r1, ip + lsls r0, r1, #1 + adds r2, r0, r6 +_0815B896: + ldrh r1, [r3] + ldrh r0, [r2] + strh r0, [r3] + strh r1, [r2] + adds r3, #2 + subs r2, #2 + adds r4, #1 + cmp r4, #3 + ble _0815B896 + movs r2, #0x20 + add ip, r2 + adds r7, #0x40 + adds r5, #1 + cmp r5, #7 + ble _0815B88C + movs r5, #0 + movs r0, #0x80 + lsls r0, r0, #3 + adds r3, r0, #0 +_0815B8BC: + adds r2, r5, #1 + lsls r0, r5, #6 + adds r1, r0, r6 + movs r4, #7 +_0815B8C4: + ldrh r0, [r1] + eors r0, r3 + strh r0, [r1] + adds r1, #2 + subs r4, #1 + cmp r4, #0 + bge _0815B8C4 + adds r5, r2, #0 + cmp r5, #7 + ble _0815B8BC +_0815B8D8: + ldr r0, _0815B918 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldrh r0, [r0, #2] + bl sub_080DAA0C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815B928 + ldr r3, _0815B91C + ldr r4, _0815B920 + ldr r2, _0815B910 + ldrb r0, [r2] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldr r1, _0815B924 + b _0815B942 + .align 2, 0 +_0815B908: .4byte gUnknown_2024178 +_0815B90C: .4byte gUnknown_2024188 +_0815B910: .4byte gUnknown_20380D6 +_0815B914: .4byte 0x04000200 +_0815B918: .4byte gUnknown_2039BD4 +_0815B91C: .4byte gUnknown_20205AC +_0815B920: .4byte gUnknown_2023E88 +_0815B924: .4byte gUnknown_82D2F50 +_0815B928: + ldr r3, _0815B96C + ldr r4, _0815B970 + ldr r2, _0815B974 + ldrb r0, [r2] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldr r1, _0815B978 +_0815B942: + str r1, [r0] + ldrb r0, [r2] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + bl sub_08007F70 +_0815B958: + ldr r0, _0815B97C + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 +_0815B962: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0815BA38 + .align 2, 0 +_0815B96C: .4byte gUnknown_20205AC +_0815B970: .4byte gUnknown_2023E88 +_0815B974: .4byte gUnknown_20380D6 +_0815B978: .4byte gUnknown_82D2F24 +_0815B97C: .4byte gUnknown_3005B60 +_0815B980: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r3 + ldrh r0, [r4, #0xc] + adds r1, r0, #1 + strh r1, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815BA38 + movs r0, #0 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + ldrh r5, [r4, #0xa] + lsls r1, r5, #4 + orrs r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x4c + bl sub_08001144 + cmp r5, #0 + bne _0815BA38 +_0815B9B6: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815BA38 +_0815B9BE: + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r0, _0815B9E4 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815B9E8 + movs r0, #1 + movs r1, #2 + movs r2, #0 + bl sub_0811887C + b _0815B9F2 + .align 2, 0 +_0815B9E4: .4byte gUnknown_20380D6 +_0815B9E8: + movs r0, #2 + movs r1, #2 + movs r2, #0 + bl sub_0811887C +_0815B9F2: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815BA32 + ldr r4, _0815BA48 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815BA32 + ldr r0, _0815BA4C + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r6, #0x1c + ldrsh r0, [r1, r6] + cmp r0, #0 + bne _0815BA32 + ldrb r0, [r4] + ldr r1, _0815BA50 + ldr r1, [r1] + ldr r2, [r1] + lsls r1, r0, #2 + adds r1, r1, r2 + ldrh r1, [r1, #2] + bl sub_0805EA70 +_0815BA32: + mov r0, r8 + bl sub_080A34E4 +_0815BA38: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815BA48: .4byte gUnknown_20380D6 +_0815BA4C: .4byte gUnknown_3005B60 +_0815BA50: .4byte gUnknown_2024174 + thumb_func_end sub_0815B70C + + thumb_func_start sub_0815BA54 +sub_0815BA54: @ 0x0815BA54 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0815BA84 + ldr r3, _0815BA88 + ldr r2, _0815BA8C + ldr r1, _0815BA90 + ldrb r1, [r1] + adds r1, r1, r2 + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + adds r1, #0x3e + ldrb r1, [r1] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + strh r1, [r4, #0xe] + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815BA84: .4byte gUnknown_20380BE +_0815BA88: .4byte gUnknown_20205AC +_0815BA8C: .4byte gUnknown_2023E88 +_0815BA90: .4byte gUnknown_20380D6 + thumb_func_end sub_0815BA54 + + thumb_func_start sub_0815BA94 +sub_0815BA94: @ 0x0815BA94 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0815BAB8 + ldrb r0, [r0] + ldr r1, _0815BABC + ldrb r1, [r1] + movs r2, #1 + bl sub_0805E064 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815BAB8: .4byte gUnknown_20380D6 +_0815BABC: .4byte gUnknown_20380D7 + thumb_func_end sub_0815BA94 + + thumb_func_start sub_0815BAC0 +sub_0815BAC0: @ 0x0815BAC0 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0815BAE8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bls _0815BADE + b _0815BD2E +_0815BADE: + lsls r0, r0, #2 + ldr r1, _0815BAEC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815BAE8: .4byte gUnknown_3005B60 +_0815BAEC: .4byte _0815BAF0 +_0815BAF0: @ jump table + .4byte _0815BB04 @ case 0 + .4byte _0815BBF4 @ case 1 + .4byte _0815BC44 @ case 2 + .4byte _0815BCAE @ case 3 + .4byte _0815BCE2 @ case 4 +_0815BB04: + ldr r1, _0815BB60 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815BB3E + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_0815BB3E: + mov r0, sp + bl sub_080A63F8 + ldr r1, _0815BB64 + mov r0, sp + movs r2, #0 + bl sub_080A6628 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815BB70 + ldr r1, _0815BB68 + ldr r3, _0815BB6C + b _0815BB98 + .align 2, 0 +_0815BB60: .4byte 0x00003F42 +_0815BB64: .4byte gUnknown_8C2A790 +_0815BB68: .4byte gUnknown_2022ACC +_0815BB6C: .4byte 0x0000FFC8 +_0815BB70: + ldr r0, _0815BB88 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815BB94 + ldr r1, _0815BB8C + ldr r2, _0815BB90 + adds r0, r2, #0 + b _0815BB9A + .align 2, 0 +_0815BB88: .4byte gUnknown_20380D6 +_0815BB8C: .4byte gUnknown_2022ACC +_0815BB90: .4byte 0x0000FF79 +_0815BB94: + ldr r1, _0815BBDC + ldr r3, _0815BBE0 +_0815BB98: + adds r0, r3, #0 +_0815BB9A: + strh r0, [r1] + ldr r1, _0815BBE4 + movs r0, #0 + strh r0, [r1] + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0815BBE8 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _0815BBEC + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _0815BBF0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0815BBDC + ldrh r0, [r0] + strh r0, [r1, #0x1c] + ldr r0, _0815BBE4 + ldrh r0, [r0] + strh r0, [r1, #0x1e] + ldrh r0, [r1, #8] + adds r0, #1 + b _0815BCCA + .align 2, 0 +_0815BBDC: .4byte gUnknown_2022ACC +_0815BBE0: .4byte 0x0000FFF6 +_0815BBE4: .4byte gUnknown_2022ACE +_0815BBE8: .4byte gUnknown_8C2A6D8 +_0815BBEC: .4byte gUnknown_8C2A778 +_0815BBF0: .4byte gUnknown_3005B60 +_0815BBF4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0x10] + adds r1, r0, #1 + strh r1, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0815BC0A + b _0815BD2E +_0815BC0A: + movs r0, #0 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _0815BC20 + movs r0, #0xc + strh r0, [r4, #0xa] +_0815BC20: + ldrh r0, [r4, #0xa] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xc + bne _0815BD2E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815BD2E +_0815BC44: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r4, r0, r2 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0815BC5C + movs r0, #0 + strh r0, [r4, #0xa] +_0815BC5C: + ldrh r0, [r4, #0xa] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0815BD2E + ldr r2, _0815BCA0 + ldr r1, _0815BCA4 + movs r3, #0xc + ldrsh r0, [r4, r3] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x1c] + adds r0, r0, r1 + strh r0, [r2] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0815BCA8 + strh r0, [r4, #8] + b _0815BD2E + .align 2, 0 +_0815BCA0: .4byte gUnknown_2022ACC +_0815BCA4: .4byte gUnknown_85AD268 +_0815BCA8: + movs r0, #3 + strh r0, [r4, #8] + b _0815BD2E +_0815BCAE: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0xe] + adds r0, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0815BD2E + movs r0, #0 + strh r0, [r1, #0xe] + movs r0, #1 +_0815BCCA: + strh r0, [r1, #8] + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xe4 + bl sub_080A307C + b _0815BD2E +_0815BCE2: + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815BD04 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_0815BD04: + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + ldr r0, _0815BD38 + movs r1, #0 + strh r1, [r0] + ldr r0, _0815BD3C + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34E4 +_0815BD2E: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815BD38: .4byte gUnknown_2022ACC +_0815BD3C: .4byte gUnknown_2022ACE + thumb_func_end sub_0815BAC0 + + thumb_func_start sub_0815BD40 +sub_0815BD40: @ 0x0815BD40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r0, #0 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + movs r1, #0xfc + lsls r1, r1, #0xe + ands r1, r0 + lsrs r5, r1, #0x10 + adds r1, r5, #0 + cmp r1, #0x1f + ble _0815BD6A + movs r0, #0x20 + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_0815BD6A: + ldr r4, _0815BE64 + ldrb r0, [r4] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r5 + strh r0, [r7, #0x20] + ldrb r0, [r4] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x20 + strh r0, [r7, #0x22] + ldr r1, _0815BE68 + ldrh r0, [r1] + strh r0, [r7, #0x30] + ldrh r0, [r1, #2] + strh r0, [r7, #0x32] + ldr r4, _0815BE6C + 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, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + bl sub_08006B0C + mov sb, r0 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r0, #0x20 + ldrsh r1, [r7, r0] + movs r0, #0x22 + ldrsh r2, [r7, r0] + ldrb r3, [r5] + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + bl sub_08006B0C + mov r8, r0 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov r0, sb + lsls r2, r0, #4 + add r2, sb + lsls r2, r2, #2 + ldr r1, _0815BE70 + mov sl, r1 + adds r5, r2, r1 + adds r0, r5, #0 + movs r1, #1 + str r2, [sp] + bl sub_08007EC0 + mov r0, r8 + lsls r6, r0, #4 + add r6, r8 + lsls r6, r6, #2 + mov r1, sl + adds r4, r6, r1 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + ldr r1, _0815BE68 + ldrh r0, [r1] + strh r0, [r5, #0x30] + ldrh r0, [r1, #2] + strh r0, [r5, #0x32] + ldrh r0, [r1] + strh r0, [r4, #0x30] + ldrh r0, [r1, #2] + strh r0, [r4, #0x32] + ldr r0, _0815BE74 + strh r0, [r5, #0x3c] + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r4, #0x3c] + adds r5, #0x3e + ldrb r0, [r5] + movs r1, #4 + orrs r0, r1 + strb r0, [r5] + adds r4, #0x3e + ldrb r0, [r4] + orrs r0, r1 + strb r0, [r4] + movs r0, #0x1c + add sl, r0 + ldr r2, [sp] + add r2, sl + ldr r0, _0815BE78 + str r0, [r2] + add r6, sl + str r0, [r6] + mov r1, sb + strh r1, [r7, #0x3a] + mov r0, r8 + strh r0, [r7, #0x3c] + ldr r0, _0815BE7C + str r0, [r7, #0x1c] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815BE64: .4byte gUnknown_20380D6 +_0815BE68: .4byte gUnknown_20380BE +_0815BE6C: .4byte gUnknown_85AD294 +_0815BE70: .4byte gUnknown_20205AC +_0815BE74: .4byte 0x0000FFFF +_0815BE78: .4byte sub_0815BF8C +_0815BE7C: .4byte sub_0815BE80 + thumb_func_end sub_0815BD40 + + thumb_func_start sub_0815BE80 +sub_0815BE80: @ 0x0815BE80 + push {lr} + adds r3, r0, #0 + ldrh r2, [r3, #0x32] + ldrh r0, [r3, #0x34] + adds r2, r2, r0 + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r3, #0x26] + subs r1, 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 _0815BECE + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0815BECE + ldr r2, _0815BF28 + movs r0, #0x3a + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrh r0, [r3, #0x36] + adds r0, #1 + strh r0, [r3, #0x36] +_0815BECE: + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #1 + bne _0815BF02 + movs r2, #0x26 + ldrsh r1, [r3, r2] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0815BF02 + ldr r2, _0815BF28 + movs r0, #0x3c + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrh r0, [r3, #0x36] + adds r0, #1 + strh r0, [r3, #0x36] +_0815BF02: + ldrh r0, [r3, #0x30] + subs r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0815BF24 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815BF2C + str r0, [r3, #0x1c] +_0815BF24: + pop {r0} + bx r0 + .align 2, 0 +_0815BF28: .4byte gUnknown_20205AC +_0815BF2C: .4byte sub_0815BF30 + thumb_func_end sub_0815BE80 + + thumb_func_start sub_0815BF30 +sub_0815BF30: @ 0x0815BF30 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _0815BF84 + movs r0, #0x3a + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r6, r5, #0 + adds r6, #0x1c + adds r0, r3, r6 + ldr r2, [r0] + ldr r0, _0815BF88 + cmp r2, r0 + bne _0815BF7C + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldr r0, [r1] + cmp r0, r2 + bne _0815BF7C + adds r0, r3, r5 + bl sub_08006E00 + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + adds r0, r4, #0 + bl sub_080A34C4 +_0815BF7C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815BF84: .4byte gUnknown_20205AC +_0815BF88: .4byte sub_08007140 + thumb_func_end sub_0815BF30 + + thumb_func_start sub_0815BF8C +sub_0815BF8C: @ 0x0815BF8C + push {lr} + adds r3, r0, #0 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0815BFD8 + ldrh r2, [r3, #0x32] + ldrh r1, [r3, #0x34] + adds r2, r2, r1 + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r3, #0x26] + subs r0, r0, r1 + strh r0, [r3, #0x26] + movs r0, #0xff + ands r2, r0 + strh r2, [r3, #0x34] + ldrh r0, [r3, #0x30] + subs r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0815BFD8 + mov r1, ip + ldrb r0, [r1] + movs r1, #4 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, _0815BFDC + str r0, [r3, #0x1c] +_0815BFD8: + pop {r0} + bx r0 + .align 2, 0 +_0815BFDC: .4byte sub_08007140 + thumb_func_end sub_0815BF8C + + thumb_func_start sub_0815BFE0 +sub_0815BFE0: @ 0x0815BFE0 + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0815C008 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r4, r1, #0 + cmp r0, #5 + bls _0815BFFE + b _0815C2D2 +_0815BFFE: + lsls r0, r0, #2 + ldr r1, _0815C00C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815C008: .4byte gUnknown_3005B60 +_0815C00C: .4byte _0815C010 +_0815C010: @ jump table + .4byte _0815C028 @ case 0 + .4byte _0815C160 @ case 1 + .4byte _0815C1E8 @ case 2 + .4byte _0815C21E @ case 3 + .4byte _0815C24C @ case 4 + .4byte _0815C286 @ case 5 +_0815C028: + ldr r1, _0815C084 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0815C088 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815C060 + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C +_0815C060: + mov r0, sp + bl sub_080A63F8 + ldr r1, _0815C08C + mov r0, sp + movs r2, #0 + bl sub_080A6628 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815C098 + ldr r1, _0815C090 + ldr r3, _0815C094 + adds r0, r3, #0 + b _0815C106 + .align 2, 0 +_0815C084: .4byte 0x00003F42 +_0815C088: .4byte 0x00000D03 +_0815C08C: .4byte gUnknown_8C2A790 +_0815C090: .4byte gUnknown_2022ACC +_0815C094: .4byte 0x0000FFC8 +_0815C098: + ldr r0, _0815C0DC + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815C0F0 + cmp r4, #1 + bne _0815C0BC + ldr r1, _0815C0E0 + ldr r2, _0815C0E4 + adds r0, r2, #0 + strh r0, [r1] +_0815C0BC: + cmp r4, #3 + bne _0815C0C8 + ldr r1, _0815C0E0 + ldr r3, _0815C0E8 + adds r0, r3, #0 + strh r0, [r1] +_0815C0C8: + cmp r4, #0 + bne _0815C0D2 + ldr r1, _0815C0E0 + movs r0, #0xe + strh r0, [r1] +_0815C0D2: + cmp r4, #2 + bne _0815C108 + ldr r1, _0815C0E0 + ldr r2, _0815C0EC + b _0815C104 + .align 2, 0 +_0815C0DC: .4byte gUnknown_20380D7 +_0815C0E0: .4byte gUnknown_2022ACC +_0815C0E4: .4byte 0x0000FF65 +_0815C0E8: .4byte 0x0000FF8D +_0815C0EC: .4byte 0x0000FFEC +_0815C0F0: + cmp r4, #1 + bne _0815C0FC + ldr r1, _0815C144 + ldr r3, _0815C148 + adds r0, r3, #0 + strh r0, [r1] +_0815C0FC: + cmp r4, #0 + bne _0815C108 + ldr r1, _0815C144 + ldr r2, _0815C14C +_0815C104: + adds r0, r2, #0 +_0815C106: + strh r0, [r1] +_0815C108: + ldr r1, _0815C150 + movs r0, #0 + strh r0, [r1] + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0815C154 + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _0815C158 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r0, _0815C15C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0815C144 + ldrh r0, [r0] + strh r0, [r1, #0x1c] + ldr r0, _0815C150 + ldrh r0, [r0] + strh r0, [r1, #0x1e] + b _0815C1E0 + .align 2, 0 +_0815C144: .4byte gUnknown_2022ACC +_0815C148: .4byte 0x0000FF79 +_0815C14C: .4byte 0x0000FFF6 +_0815C150: .4byte gUnknown_2022ACE +_0815C154: .4byte gUnknown_8C2A6D8 +_0815C158: .4byte gUnknown_8C2A778 +_0815C15C: .4byte gUnknown_3005B60 +_0815C160: + ldr r1, _0815C194 + lsls r4, r6, #2 + adds r0, r4, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r0, #0 + strh r0, [r5, #0xe] + ldr r0, _0815C198 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815C1A4 + ldr r2, _0815C19C + ldr r1, _0815C1A0 + movs r3, #0xc + ldrsh r0, [r5, r3] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r5, [r5, #0x1c] + adds r0, r0, r5 + b _0815C1B6 + .align 2, 0 +_0815C194: .4byte gUnknown_3005B60 +_0815C198: .4byte gUnknown_20380D7 +_0815C19C: .4byte gUnknown_2022ACC +_0815C1A0: .4byte gUnknown_85AD2AC +_0815C1A4: + ldr r2, _0815C1D4 + ldr r1, _0815C1D8 + movs r3, #0xc + ldrsh r0, [r5, r3] + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + ldrh r0, [r5, #0x1c] + subs r0, r0, r1 +_0815C1B6: + strh r0, [r2] + ldr r0, _0815C1DC + adds r1, r4, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + adds r0, #1 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0815C1E0 + strh r0, [r1, #8] + b _0815C2D2 + .align 2, 0 +_0815C1D4: .4byte gUnknown_2022ACC +_0815C1D8: .4byte gUnknown_85AD2AC +_0815C1DC: .4byte gUnknown_3005B60 +_0815C1E0: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0815C2D2 +_0815C1E8: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bgt _0815C202 + movs r0, #5 + strh r0, [r4, #0xa] +_0815C202: + ldrh r1, [r4, #0xa] + lsls r1, r1, #8 + movs r0, #3 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #5 + bne _0815C2D2 + b _0815C23E +_0815C21E: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrh r1, [r4, #0xe] + adds r1, #1 + strh r1, [r4, #0xe] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r2, _0815C248 + movs r3, #0xc + ldrsh r0, [r4, r3] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r1, r0 + ble _0815C2D2 +_0815C23E: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815C2D2 + .align 2, 0 +_0815C248: .4byte gUnknown_85AD2B0 +_0815C24C: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r4 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + ble _0815C266 + movs r0, #0xd + strh r0, [r4, #0xa] +_0815C266: + ldrh r1, [r4, #0xa] + lsls r1, r1, #8 + movs r0, #3 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xd + bne _0815C2D2 + movs r0, #1 + strh r0, [r4, #8] + b _0815C2D2 +_0815C286: + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + bl sub_080A6530 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815C2A8 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_0815C2A8: + movs r0, #1 + movs r1, #4 + movs r2, #1 + bl sub_0811887C + ldr r0, _0815C2DC + movs r1, #0 + strh r1, [r0] + ldr r0, _0815C2E0 + strh r1, [r0] + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + adds r0, r6, #0 + bl sub_080A34E4 +_0815C2D2: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815C2DC: .4byte gUnknown_2022ACC +_0815C2E0: .4byte gUnknown_2022ACE + thumb_func_end sub_0815BFE0 + + thumb_func_start sub_0815C2E4 +sub_0815C2E4: @ 0x0815C2E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _0815C31C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815C324 + movs r0, #0 + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815C320 + adds r0, r4, #0 + bl sub_080A75C4 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815C336 + .align 2, 0 +_0815C31C: .4byte gUnknown_3005B60 +_0815C320: .4byte gUnknown_85AD2B8 +_0815C324: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815C336 + adds r0, r5, #0 + bl sub_080A34E4 +_0815C336: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815C2E4 + + thumb_func_start sub_0815C33C +sub_0815C33C: @ 0x0815C33C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _0815C35A + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6294 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815C3AE +_0815C35A: + adds r0, #1 + strh r0, [r4, #0x2e] + cmp r1, #0x14 + ble _0815C3AE + ldrh r0, [r4, #0x30] + adds r0, #0xa0 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + adds r0, #0x80 + strh r0, [r4, #0x32] + ldr r0, _0815C388 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815C38C + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + b _0815C392 + .align 2, 0 +_0815C388: .4byte gUnknown_20380D6 +_0815C38C: + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 +_0815C392: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + ble _0815C3AE + adds r0, r4, #0 + bl sub_080A34C4 +_0815C3AE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0815C33C + + thumb_func_start sub_0815C3B4 +sub_0815C3B4: @ 0x0815C3B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0815C3D8 + adds r4, r0, r1 + ldr r5, _0815C3DC + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815C3E0 + adds r0, r2, #0 + bl sub_080A34E4 + b _0815C474 + .align 2, 0 +_0815C3D8: .4byte gUnknown_3005B60 +_0815C3DC: .4byte gUnknown_20380BE +_0815C3E0: + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _0815C3EC + movs r0, #0 + strh r0, [r5, #4] +_0815C3EC: + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #2 + ble _0815C3F8 + movs r0, #2 + strh r0, [r5, #4] +_0815C3F8: + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + movs r0, #4 + ldrsh r1, [r5, r0] + lsls r1, r1, #1 + movs r0, #8 + subs r0, r0, r1 + strh r0, [r4, #0xe] + movs r1, #4 + ldrsh r0, [r5, r1] + lsls r0, r0, #7 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r4, #0x10] + ldrh r0, [r5, #4] + adds r0, #2 + strh r0, [r4, #0x12] + ldrh r0, [r5, #2] + subs r0, #1 + strh r0, [r4, #0x14] + ldrb r0, [r5] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815C444 + ldr r0, _0815C440 + b _0815C446 + .align 2, 0 +_0815C440: .4byte gUnknown_20380D6 +_0815C444: + ldr r0, _0815C47C +_0815C446: + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815C464 + movs r1, #0x10 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x10] + movs r1, #0x12 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x12] +_0815C464: + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080A6B38 + ldr r0, _0815C480 + str r0, [r4] +_0815C474: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815C47C: .4byte gUnknown_20380D7 +_0815C480: .4byte sub_0815C484 + thumb_func_end sub_0815C3B4 + + thumb_func_start sub_0815C484 +sub_0815C484: @ 0x0815C484 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0815C4A8 + adds r4, r0, r1 + movs r0, #8 + ldrsh r6, [r4, r0] + cmp r6, #1 + beq _0815C50C + cmp r6, #1 + bgt _0815C4AC + cmp r6, #0 + beq _0815C4B8 + b _0815C5E4 + .align 2, 0 +_0815C4A8: .4byte gUnknown_3005B60 +_0815C4AC: + cmp r6, #2 + beq _0815C564 + cmp r6, #3 + bne _0815C4B6 + b _0815C5D4 +_0815C4B6: + b _0815C5E4 +_0815C4B8: + ldr r2, _0815C508 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x12] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + ldrh r0, [r4, #0xc] + ldrh r1, [r4, #0x10] + subs r0, r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0xc] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xe + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _0815C5E4 + strh r6, [r4, #0xa] + b _0815C5CC + .align 2, 0 +_0815C508: .4byte gUnknown_20205AC +_0815C50C: + ldr r2, _0815C560 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + ldrh r2, [r4, #0x12] + subs r1, r1, r2 + strh r1, [r0, #0x24] + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0xc] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0xe + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + cmp r1, r0 + blt _0815C5E4 + movs r0, #0 + strh r0, [r4, #0xa] + b _0815C5CC + .align 2, 0 +_0815C560: .4byte gUnknown_20205AC +_0815C564: + ldr r2, _0815C5C8 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x12] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + movs r5, #0 + strh r1, [r0, #0x24] + ldrh r0, [r4, #0xc] + ldrh r1, [r4, #0x10] + subs r0, r0, r1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0xc] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0xe + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _0815C5E4 + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0815C5CC + subs r0, r1, #1 + strh r0, [r4, #0x14] + strh r5, [r4, #0xa] + strh r5, [r4, #8] + b _0815C5E4 + .align 2, 0 +_0815C5C8: .4byte gUnknown_20205AC +_0815C5CC: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815C5E4 +_0815C5D4: + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + adds r0, r5, #0 + bl sub_080A34E4 +_0815C5E4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815C484 + + thumb_func_start sub_0815C5EC +sub_0815C5EC: @ 0x0815C5EC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0815C608 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0815C610 + strh r0, [r4, #0x20] + ldr r1, _0815C60C + ldrh r0, [r1] + b _0815C61A + .align 2, 0 +_0815C608: .4byte gUnknown_20380D6 +_0815C60C: .4byte gUnknown_20380BE +_0815C610: + movs r0, #0xf0 + strh r0, [r4, #0x20] + ldr r1, _0815C634 + ldrh r0, [r1] + subs r0, #0x1e +_0815C61A: + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x32] + ldrb r1, [r1, #2] + adds r0, r4, #0 + bl sub_08007EC0 + ldr r0, _0815C638 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C634: .4byte gUnknown_20380BE +_0815C638: .4byte sub_0815C63C + thumb_func_end sub_0815C5EC + + thumb_func_start sub_0815C63C +sub_0815C63C: @ 0x0815C63C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #3 + strh r0, [r4, #0x2e] + ldr r0, _0815C67C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815C680 + ldrh r1, [r4, #0x20] + adds r1, #5 + strh r1, [r4, #0x20] + ldrh r0, [r4, #0x22] + subs r0, #1 + strh r0, [r4, #0x22] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xf0 + ble _0815C66E + adds r0, r4, #0 + bl sub_080A34C4 +_0815C66E: + ldrh r1, [r4, #0x2e] + movs r0, #0xff + ands r0, r1 + movs r1, #0x10 + bl sub_0806EFB8 + b _0815C6A4 + .align 2, 0 +_0815C67C: .4byte gUnknown_20380D6 +_0815C680: + ldrh r1, [r4, #0x20] + subs r1, #5 + strh r1, [r4, #0x20] + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] + lsls r1, r1, #0x10 + cmp r1, #0 + bge _0815C698 + adds r0, r4, #0 + bl sub_080A34C4 +_0815C698: + ldrh r1, [r4, #0x2e] + movs r0, #0xff + ands r0, r1 + movs r1, #0x10 + bl sub_0806EFD4 +_0815C6A4: + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0815C63C + + thumb_func_start sub_0815C6AC +sub_0815C6AC: @ 0x0815C6AC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0815C6F4 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + 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, r0, #4 + strh r0, [r4, #0x24] + ldr r0, _0815C6F8 + ldrb r0, [r0] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + movs r1, #0 + bl sub_080A6B38 + ldr r0, _0815C6FC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C6F4: .4byte gUnknown_3005B60 +_0815C6F8: .4byte gUnknown_20380BE +_0815C6FC: .4byte sub_0815C700 + thumb_func_end sub_0815C6AC + + thumb_func_start sub_0815C700 +sub_0815C700: @ 0x0815C700 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0815C72C + adds r7, r0, r1 + movs r1, #8 + ldrsh r0, [r7, r1] + mov r8, r0 + cmp r0, #1 + beq _0815C79C + cmp r0, #1 + bgt _0815C730 + cmp r0, #0 + beq _0815C738 + b _0815C816 + .align 2, 0 +_0815C72C: .4byte gUnknown_3005B60 +_0815C730: + mov r2, r8 + cmp r2, #2 + beq _0815C804 + b _0815C816 +_0815C738: + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r7, #0xc] + adds r2, r0, r1 + strh r2, [r7, #0xc] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + ldrh r3, [r7, #0x24] + mov r8, r3 + movs r3, #0x24 + ldrsh r1, [r7, r3] + cmp r0, r1 + blt _0815C816 + mov r0, r8 + subs r5, r0, r2 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r6, r1, #0 + lsls r6, r6, #1 + adds r0, r5, #0 + adds r1, r6, #0 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r1, #1 + ands r4, r1 + cmp r4, #0 + bne _0815C790 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r2, r8 + subs r0, r2, r0 + b _0815C7EE +_0815C790: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r3, r8 + subs r0, r0, r3 + strh r0, [r7, #0xc] + b _0815C816 +_0815C79C: + ldr r1, _0815C7F4 + 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 _0815C816 + ldrh r3, [r7, #0x24] + mov sb, r3 + mov r0, sb + subs r4, r0, r1 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r6, r6, #1 + adds r0, r4, #0 + adds r1, r6, #0 + bl __divsi3 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + mov r1, r8 + ands r1, r5 + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _0815C7F8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + mov r2, sb + subs r0, r0, r2 +_0815C7EE: + strh r0, [r7, #0xc] + strh r1, [r7, #8] + b _0815C816 + .align 2, 0 +_0815C7F4: .4byte 0xFFFFFE00 +_0815C7F8: + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + mov r3, sb + subs r0, r3, r0 + strh r0, [r7, #0xc] + b _0815C816 +_0815C804: + ldrh r0, [r7, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C0C + adds r0, r4, #0 + bl sub_080A34E4 + b _0815C88C +_0815C816: + ldrh r0, [r7, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r7, #0xc] + adds r1, r2, #0 + bl sub_080A6A7C + ldrh r0, [r7, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A6C68 + ldr r2, _0815C884 + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + movs r2, #0xc + ldrsh r0, [r7, r2] + cmp r0, #0 + bge _0815C84A + adds r0, #0x3f +_0815C84A: + asrs r0, r0, #6 + rsbs r0, r0, #0 + strh r0, [r1, #0x24] + ldrh r0, [r7, #0xa] + adds r0, #1 + strh r0, [r7, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0815C88C + ldrh r1, [r7, #0x20] + movs r3, #0x20 + ldrsh r0, [r7, r3] + cmp r0, #0 + beq _0815C888 + subs r0, r1, #1 + strh r0, [r7, #0x20] + ldrh r0, [r7, #0x24] + ldrh r1, [r7, #0x22] + subs r0, r0, r1 + strh r0, [r7, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bgt _0815C88C + movs r0, #0x10 + strh r0, [r7, #0x24] + b _0815C88C + .align 2, 0 +_0815C884: .4byte gUnknown_20205AC +_0815C888: + movs r0, #2 + strh r0, [r7, #8] +_0815C88C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0815C700 + + thumb_func_start sub_0815C898 +sub_0815C898: @ 0x0815C898 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815C8F8 + ldr r6, _0815C8F0 + movs r2, #4 + ldrsh r0, [r6, r2] + cmp r0, #0 + bne _0815C8CC + ldr r4, _0815C8F4 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] +_0815C8CC: + ldrh r0, [r6] + ldrh r1, [r5, #0x20] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrh r1, [r6, #2] + ldrh r2, [r5, #0x22] + adds r0, r1, r2 + strh r0, [r5, #0x22] + movs r0, #0x80 + strh r0, [r5, #0x30] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r5, #0x32] + strh r1, [r5, #0x34] + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0815C956 + .align 2, 0 +_0815C8F0: .4byte gUnknown_20380BE +_0815C8F4: .4byte gUnknown_20380D6 +_0815C8F8: + ldrh r1, [r5, #0x30] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r5, #0x26] + adds r0, r0, r2 + strh r0, [r5, #0x26] + movs r2, #0x36 + ldrsh r0, [r5, r2] + adds r4, r1, #0 + cmp r0, #0 + bne _0815C936 + movs r0, #0x26 + ldrsh r1, [r5, r0] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmn r1, r0 + ble _0815C936 + movs r0, #1 + strh r0, [r5, #0x36] + movs r1, #0x32 + ldrsh r0, [r5, r1] + rsbs r0, r0, #0 + movs r1, #3 + bl __divsi3 + lsls r0, r0, #1 + strh r0, [r5, #0x32] +_0815C936: + 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 _0815C956 + adds r0, r5, #0 + bl sub_080A34C4 +_0815C956: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0815C898 + + thumb_func_start sub_0815C95C +sub_0815C95C: @ 0x0815C95C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r0, #0 + ldr r1, _0815C98C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _0815CA68 + ldr r0, _0815C990 + movs r3, #0 + ldrsh r1, [r0, r3] + mov r8, r0 + cmp r1, #0 + bne _0815C998 + ldr r0, _0815C994 + b _0815C99A + .align 2, 0 +_0815C98C: .4byte gUnknown_3005B60 +_0815C990: .4byte gUnknown_20380BE +_0815C994: .4byte gUnknown_20380D6 +_0815C998: + ldr r0, _0815C9D4 +_0815C99A: + ldrb r0, [r0] + strh r0, [r2, #0x1e] + mov r1, r8 + ldrb r0, [r1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0815C9D8 + lsls r4, r7, #2 + adds r0, r4, r7 + lsls r0, r0, #3 + adds r6, r0, r1 + strh r5, [r6, #0x1c] + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6B38 + mov r2, r8 + movs r3, #2 + ldrsh r0, [r2, r3] + cmp r0, #1 + beq _0815C9FC + cmp r0, #1 + bgt _0815C9DC + cmp r0, #0 + beq _0815C9E4 + lsls r2, r5, #4 + b _0815CA44 + .align 2, 0 +_0815C9D4: .4byte gUnknown_20380D7 +_0815C9D8: .4byte gUnknown_3005B60 +_0815C9DC: + cmp r0, #2 + beq _0815CA06 + lsls r2, r5, #4 + b _0815CA44 +_0815C9E4: + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r5, #0 + movs r1, #0xe0 + movs r3, #0 + bl sub_080A6A7C + adds r0, r5, #0 + bl sub_080A7734 + lsls r2, r5, #4 + b _0815CA44 +_0815C9FC: + movs r2, #0x98 + lsls r2, r2, #1 + movs r3, #0xf0 + lsls r3, r3, #4 + b _0815CA0E +_0815CA06: + movs r2, #0x98 + lsls r2, r2, #1 + movs r3, #0xf1 + lsls r3, r3, #8 +_0815CA0E: + adds r0, r5, #0 + movs r1, #0xd0 + bl sub_080A6A7C + adds r0, r5, #0 + bl sub_080A7734 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815CA34 + ldrb r0, [r6, #0x1e] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsls r2, r5, #4 + cmp r0, #0 + bne _0815CA44 +_0815CA34: + ldr r0, _0815CA60 + lsls r2, r5, #4 + adds r1, r2, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #0x10 + strh r0, [r1, #0x26] +_0815CA44: + ldr r1, _0815CA60 + adds r0, r2, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #0x24] + ldr r0, _0815CA64 + adds r1, r4, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0815CAB4 + .align 2, 0 +_0815CA60: .4byte gUnknown_20205AC +_0815CA64: .4byte gUnknown_3005B60 +_0815CA68: + ldrb r5, [r2, #0x1c] + ldrh r0, [r2, #0xc] + adds r0, #1 + movs r4, #0 + strh r0, [r2, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _0815CA8C + strh r4, [r2, #0xc] + ldr r0, _0815CAC0 + lsls r1, r5, #4 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #0x24] + rsbs r0, r0, #0 + strh r0, [r1, #0x24] +_0815CA8C: + ldrh r0, [r2, #0xa] + adds r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + bne _0815CAB4 + adds r0, r5, #0 + bl sub_080A6C0C + ldr r1, _0815CAC0 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r4, [r0, #0x24] + strh r4, [r0, #0x26] + adds r0, r7, #0 + bl sub_080A34E4 +_0815CAB4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815CAC0: .4byte gUnknown_20205AC + thumb_func_end sub_0815C95C + + thumb_func_start sub_0815CAC4 +sub_0815CAC4: @ 0x0815CAC4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xc + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, r1, r0 + ldr r3, _0815CB10 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0815CB14 + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + bl sub_0806F0A4 + ldr r5, _0815CB18 + ands r5, r0 + bl sub_0806F0A4 + movs r1, #0xff + ands r1, r0 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _0815CB1C + movs r2, #0xbc + lsls r2, r2, #3 + adds r0, r5, r2 + b _0815CB24 + .align 2, 0 +_0815CB10: .4byte 0x000003FF +_0815CB14: .4byte 0xFFFFFC00 +_0815CB18: .4byte 0x000001FF +_0815CB1C: + movs r3, #0xbc + lsls r3, r3, #3 + adds r0, r3, #0 + subs r0, r0, r5 +_0815CB24: + strh r0, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0815CB36 + movs r2, #0x90 + lsls r2, r2, #3 + adds r0, r1, r2 + b _0815CB3E +_0815CB36: + movs r3, #0x90 + lsls r3, r3, #3 + adds r0, r3, #0 + subs r0, r0, r1 +_0815CB3E: + strh r0, [r4, #0x30] + ldr r0, _0815CB50 + ldrh r0, [r0] + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815CB58 + ldr r0, _0815CB54 + b _0815CB5A + .align 2, 0 +_0815CB50: .4byte gUnknown_20380BE +_0815CB54: .4byte 0x0000FFF8 +_0815CB58: + movs r0, #0xf8 +_0815CB5A: + strh r0, [r4, #0x20] + movs r0, #0x68 + strh r0, [r4, #0x22] + ldr r0, _0815CB6C + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815CB6C: .4byte sub_0815CB70 + thumb_func_end sub_0815CAC4 + + thumb_func_start sub_0815CB70 +sub_0815CB70: @ 0x0815CB70 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815CB88 + ldrh r3, [r4, #0x2e] + lsls r0, r3, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + b _0815CB92 +_0815CB88: + ldrh r3, [r4, #0x2e] + lsls r1, r3, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 +_0815CB92: + strh r0, [r4, #0x24] + ldrh r2, [r4, #0x30] + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x26] + subs r0, 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, r0, #0x10 + cmp r0, #0 + bge _0815CBB6 + movs r0, #0 + strh r0, [r4, #0x2e] +_0815CBB6: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _0815CBCA + adds r0, r4, #0 + bl sub_080A34C4 +_0815CBCA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0815CB70 + + thumb_func_start sub_0815CBD0 +sub_0815CBD0: @ 0x0815CBD0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _0815CC34 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r0, _0815CC38 + movs r1, #0 + strh r1, [r0] + ldr r4, _0815CC3C + strh r1, [r4] + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + ldrh r1, [r4] + movs r0, #0x44 + bl sub_08001144 + ldr r0, _0815CC40 + ldrh r0, [r0, #4] + strh r0, [r5, #0x2e] + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6248 + ldrb r1, [r5, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r5, #1] + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0815CC44 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815CC34: .4byte 0x00001F3F +_0815CC38: .4byte gUnknown_2022AD8 +_0815CC3C: .4byte gUnknown_2022ADA +_0815CC40: .4byte gUnknown_20380BE +_0815CC44: .4byte sub_0815CC48 + thumb_func_end sub_0815CBD0 + + thumb_func_start sub_0815CC48 +sub_0815CC48: @ 0x0815CC48 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0815CC86 + cmp r0, #1 + bgt _0815CC5E + cmp r0, #0 + beq _0815CC68 + b _0815CCE6 +_0815CC5E: + cmp r0, #2 + beq _0815CC9C + cmp r0, #3 + beq _0815CCBE + b _0815CCE6 +_0815CC68: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + 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 _0815CCE6 + b _0815CCB6 +_0815CC86: + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815CCE6 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007FD0 + b _0815CCB6 +_0815CC9C: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0815CCE6 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0815CCB6: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + b _0815CCE6 +_0815CCBE: + ldr r1, _0815CCEC + movs r0, #0x4a + bl sub_08001144 + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_080A34C4 +_0815CCE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815CCEC: .4byte 0x00003F3F + thumb_func_end sub_0815CC48 + + thumb_func_start sub_0815CCF0 +sub_0815CCF0: @ 0x0815CCF0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0815CD2C + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x20] + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + ldr r1, _0815CD30 + ldrh r0, [r1] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + strh r0, [r4, #0x30] + ldr r1, _0815CD34 + str r1, [r4, #0x1c] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815CD2C: .4byte gUnknown_20380D6 +_0815CD30: .4byte gUnknown_20380BE +_0815CD34: .4byte sub_0815CD38 + thumb_func_end sub_0815CCF0 + + thumb_func_start sub_0815CD38 +sub_0815CD38: @ 0x0815CD38 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r2, #0x30 + ldrsh r0, [r4, r2] + ldrh r1, [r4, #0x34] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #9 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + lsls r1, r0, #0x10 + cmp r0, #0x3f + bls _0815CD72 + asrs r0, r1, #0x10 + cmp r0, #0xc3 + ble _0815CD84 +_0815CD72: + ldr r0, _0815CD80 + ldrb r0, [r0] + bl sub_080A7BAC + subs r0, #1 + b _0815CD8E + .align 2, 0 +_0815CD80: .4byte gUnknown_20380D6 +_0815CD84: + ldr r0, _0815CDD0 + ldrb r0, [r0] + bl sub_080A7BAC + adds r0, #1 +_0815CD8E: + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + movs r3, #0x38 + ldrsh r2, [r4, r3] + cmp r2, #0 + bne _0815CDD4 + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r1, #0 + ldrh r3, [r4, #0x32] + adds r0, r0, r3 + strh r0, [r4, #0x32] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r3, [r4, #0x34] + adds r0, r0, r3 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bne _0815CE04 + strh r2, [r4, #0x36] + movs r0, #1 + strh r0, [r4, #0x38] + b _0815CE04 + .align 2, 0 +_0815CDD0: .4byte gUnknown_20380D6 +_0815CDD4: + cmp r2, #1 + bne _0815CE04 + ldr r1, _0815CE0C + adds r0, r1, #0 + ldrh r2, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldr r3, _0815CE10 + adds r0, r3, #0 + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _0815CE04 + adds r0, r4, #0 + bl sub_080A34C4 +_0815CE04: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815CE0C: .4byte 0xFFFFFC00 +_0815CE10: .4byte 0xFFFFFF00 + thumb_func_end sub_0815CD38 + + thumb_func_start sub_0815CE14 +sub_0815CE14: @ 0x0815CE14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + movs r0, #0 + bl sub_080A5B08 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815CE54 + movs r0, #1 + str r0, [sp, #0x1c] + ldr r0, _0815CE50 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldr r1, [r0, #0x10] + mov sb, r1 + ldr r2, [r0, #0xc] + mov r8, r2 + ldrh r6, [r0, #2] + movs r3, #0x14 + b _0815CF94 + .align 2, 0 +_0815CE50: .4byte gUnknown_2039BD4 +_0815CE54: + ldr r0, _0815CEC4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815CF00 + movs r0, #0 + str r0, [sp, #0x1c] + ldr r6, _0815CEC8 + ldr r4, _0815CECC + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r7, _0815CED0 + adds r0, r0, r7 + movs r1, #0 + bl sub_0806A058 + mov sb, r0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r7 + movs r1, #1 + bl sub_0806A058 + mov r8, r0 + ldr r0, _0815CED4 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _0815CEF8 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815CED8 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r7 + b _0815CEE6 + .align 2, 0 +_0815CEC4: .4byte gUnknown_20380D6 +_0815CEC8: .4byte gUnknown_2023D12 +_0815CECC: .4byte gUnknown_20380D7 +_0815CED0: .4byte gUnknown_2024190 +_0815CED4: .4byte gUnknown_2024174 +_0815CED8: + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + ldr r1, _0815CEF4 + adds r0, r0, r1 +_0815CEE6: + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _0815CEFA + .align 2, 0 +_0815CEF4: .4byte gUnknown_20243E8 +_0815CEF8: + ldrh r6, [r1, #2] +_0815CEFA: + movs r1, #0x14 + mov sl, r1 + b _0815CF96 +_0815CF00: + movs r2, #1 + str r2, [sp, #0x1c] + ldr r6, _0815CF64 + ldr r4, _0815CF68 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r7, _0815CF6C + adds r0, r0, r7 + movs r1, #0 + bl sub_0806A058 + mov sb, r0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r7 + movs r1, #1 + bl sub_0806A058 + mov r8, r0 + ldr r0, _0815CF70 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _0815CF90 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815CF78 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + ldr r1, _0815CF74 + adds r0, r0, r1 + b _0815CF84 + .align 2, 0 +_0815CF64: .4byte gUnknown_2023D12 +_0815CF68: .4byte gUnknown_20380D7 +_0815CF6C: .4byte gUnknown_20243E8 +_0815CF70: .4byte gUnknown_2024174 +_0815CF74: .4byte gUnknown_2024190 +_0815CF78: + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r7 +_0815CF84: + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _0815CF92 +_0815CF90: + ldrh r6, [r1, #2] +_0815CF92: + ldr r3, _0815D080 +_0815CF94: + mov sl, r3 +_0815CF96: + ldr r0, _0815D084 + ldrb r0, [r0] + bl sub_080A7BF0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _0815D084 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + mov r2, sl + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + adds r4, r4, r1 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #5 + str r0, [sp, #4] + mov r3, sb + str r3, [sp, #8] + mov r0, r8 + str r0, [sp, #0xc] + ldr r0, _0815D088 + ldrb r0, [r0] + str r0, [sp, #0x10] + movs r0, #1 + str r0, [sp, #0x14] + adds r0, r6, #0 + ldr r1, [sp, #0x1c] + movs r2, #0 + adds r3, r4, #0 + bl sub_080A7C5C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0815D08C + lsls r5, r6, #4 + adds r5, r5, r6 + lsls r5, r5, #2 + adds r5, r5, r0 + movs r0, #3 + ands r7, r0 + lsls r7, r7, #2 + mov r8, r7 + ldrb r0, [r5, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r1, r0 + mov r2, r8 + orrs r1, r2 + strb r1, [r5, #5] + ldrb r2, [r5, #1] + adds r0, r4, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r5, #1] + ldr r0, _0815D090 + lsrs r1, r1, #4 + lsls r1, r1, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r2, r3, #0 + orrs r1, r2 + movs r2, #0x20 + bl sub_080A1238 + ldrb r0, [r5, #5] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r5, #5] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r0, _0815D094 + ldr r1, [sp, #0x18] + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0xa] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + strh r6, [r4, #8] + ldr r0, _0815D098 + str r0, [r4] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D080: .4byte 0x0000FFEC +_0815D084: .4byte gUnknown_20380D6 +_0815D088: .4byte gUnknown_20380D7 +_0815D08C: .4byte gUnknown_20205AC +_0815D090: .4byte 0x00007FFF +_0815D094: .4byte gUnknown_3005B60 +_0815D098: .4byte sub_0815D09C + thumb_func_end sub_0815CE14 + + thumb_func_start sub_0815D09C +sub_0815D09C: @ 0x0815D09C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815D0F0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815D0EA + movs r0, #0 + strh r0, [r4, #0x1c] + ldrh r1, [r4, #0xa] + adds r1, #1 + strh r1, [r4, #0xa] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0xa + bne _0815D0EA + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x1c] + strh r0, [r4, #0x1e] + ldr r0, _0815D0F4 + str r0, [r4] +_0815D0EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D0F0: .4byte gUnknown_3005B60 +_0815D0F4: .4byte sub_0815D0F8 + thumb_func_end sub_0815D09C + + thumb_func_start sub_0815D0F8 +sub_0815D0F8: @ 0x0815D0F8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815D170 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + ldrb r2, [r5, #8] + 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, _0815D174 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r6, r0, r1 + ldrb r2, [r6, #1] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #2 + orrs r1, r0 + subs r0, #6 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #1] + movs r0, #0x1c + ldrsh r2, [r5, r0] + movs r0, #0x1e + ldrsh r3, [r5, r0] + str r4, [sp] + adds r0, r6, #0 + movs r1, #1 + bl sub_080A6CA8 + ldrh r0, [r5, #0x20] + adds r0, #1 + strh r0, [r5, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bne _0815D166 + adds r0, r6, #0 + bl sub_080A6D64 + adds r0, r6, #0 + bl sub_080A7ED8 + ldr r0, _0815D178 + str r0, [r5] +_0815D166: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D170: .4byte gUnknown_3005B60 +_0815D174: .4byte gUnknown_20205AC +_0815D178: .4byte sub_080A60DC + thumb_func_end sub_0815D0F8 + + thumb_func_start sub_0815D17C +sub_0815D17C: @ 0x0815D17C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0815D19C + adds r4, r1, r0 + ldr r0, _0815D1A0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815D1A8 + ldr r0, _0815D1A4 + b _0815D1AA + .align 2, 0 +_0815D19C: .4byte gUnknown_3005B60 +_0815D1A0: .4byte gUnknown_20380BE +_0815D1A4: .4byte gUnknown_20380D6 +_0815D1A8: + ldr r0, _0815D228 +_0815D1AA: + ldrb r5, [r0] + movs r6, #0 + strh r6, [r4, #8] + 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_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815D1DC + movs r1, #0x18 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x18] +_0815D1DC: + adds r0, r5, #0 + bl sub_080A5A58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x22 + strh r0, [r4, #0x22] + cmp r0, #0 + bge _0815D1F0 + strh r6, [r4, #0x22] +_0815D1F0: + ldrh r0, [r4, #0x22] + adds r0, #0x42 + strh r0, [r4, #0x24] + ldr r0, _0815D22C + ldrb r0, [r0] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x26] + adds r0, r5, #0 + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815D240 + ldr r0, _0815D230 + str r0, [sp] + ldr r1, _0815D234 + movs r0, #0x50 + bl sub_08001144 + ldr r0, _0815D238 + ldrh r5, [r0] + ldr r0, _0815D23C + b _0815D252 + .align 2, 0 +_0815D228: .4byte gUnknown_20380D7 +_0815D22C: .4byte gUnknown_20380BE +_0815D230: .4byte 0x04000014 +_0815D234: .4byte 0x00003F42 +_0815D238: .4byte gUnknown_2022ACC +_0815D23C: .4byte gUnknown_2022ACE +_0815D240: + ldr r0, _0815D2B8 + str r0, [sp] + ldr r1, _0815D2BC + movs r0, #0x50 + bl sub_08001144 + ldr r0, _0815D2C0 + ldrh r5, [r0] + ldr r0, _0815D2C4 +_0815D252: + ldrh r3, [r0] + movs r7, #0 + movs r2, #0 + ldr r6, _0815D2C8 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r0, r0, r6 + mov ip, r0 +_0815D262: + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r0, r1, r6 + strh r5, [r0] + add r1, ip + strh r5, [r1] + adds r0, r2, #1 + lsls r0, r0, #1 + adds r1, r0, r6 + strh r3, [r1] + add r0, ip + strh r3, [r0] + lsls r0, r7, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r0, r1 + adds r2, #2 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsrs r7, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x9f + ble _0815D262 + ldr r0, _0815D2CC + str r0, [sp, #4] + mov r1, sp + movs r2, #0 + movs r0, #1 + strb r0, [r1, #8] + mov r0, sp + strb r2, [r0, #9] + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldr r0, _0815D2D0 + str r0, [r4] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D2B8: .4byte 0x04000018 +_0815D2BC: .4byte 0x00003F44 +_0815D2C0: .4byte gUnknown_2022AD0 +_0815D2C4: .4byte gUnknown_2022AD2 +_0815D2C8: .4byte gUnknown_20388C8 +_0815D2CC: .4byte 0xA6600001 +_0815D2D0: .4byte sub_0815D2D4 + thumb_func_end sub_0815D17C + + thumb_func_start sub_0815D2D4 +sub_0815D2D4: @ 0x0815D2D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0815D308 + adds r6, r0, r1 + ldrb r0, [r6, #0x12] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815D314 + ldr r0, _0815D30C + ldrh r0, [r0] + str r0, [sp, #4] + ldr r0, _0815D310 + b _0815D31C + .align 2, 0 +_0815D308: .4byte gUnknown_3005B60 +_0815D30C: .4byte gUnknown_2022ACC +_0815D310: .4byte gUnknown_2022ACE +_0815D314: + ldr r0, _0815D334 + ldrh r0, [r0] + str r0, [sp, #4] + ldr r0, _0815D338 +_0815D31C: + ldrh r0, [r0] + str r0, [sp, #8] + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #1 + bne _0815D32A + b _0815D508 +_0815D32A: + cmp r0, #1 + bgt _0815D33C + cmp r0, #0 + beq _0815D34A + b _0815D578 + .align 2, 0 +_0815D334: .4byte gUnknown_2022AD0 +_0815D338: .4byte gUnknown_2022AD2 +_0815D33C: + cmp r0, #2 + bne _0815D342 + b _0815D528 +_0815D342: + cmp r0, #3 + bne _0815D348 + b _0815D572 +_0815D348: + b _0815D578 +_0815D34A: + movs r2, #0x24 + ldrsh r0, [r6, r2] + lsls r0, r0, #0x11 + lsrs r5, r0, #0x10 + movs r3, #0 + str r3, [sp] + mov sb, r3 + movs r4, #0 + ldrh r0, [r6, #0xa] + adds r0, #2 + 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, r0, #3 + bl __divsi3 + strh r0, [r6, #0x1a] + movs r1, #0x16 + ldrsh r0, [r6, r1] + lsls r0, r0, #1 + movs r2, #0x1a + ldrsh r1, [r6, r2] + bl __divsi3 + rsbs r0, r0, #0 + strh r0, [r6, #0x1c] + ldrh r0, [r6, #0x16] + strh r0, [r6, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + strh r7, [r6, #0x20] + ldrh r2, [r6, #0x24] + lsls r3, r2, #0x10 + mov ip, r3 + asrs r1, r3, #0x10 + movs r3, #0x22 + ldrsh r0, [r6, r3] + cmp r1, r0 + ble _0815D46A + ldr r0, _0815D4C0 + mov sl, r0 + ldr r1, [sp, #4] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r2, [sp, #8] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #0xc] +_0815D3BA: + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r2, r5, #1 + lsls r2, r2, #1 + mov r3, sl + ldrb r1, [r3, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r2, r2, r0 + ldr r0, _0815D4C4 + adds r2, r2, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + subs r0, r4, r0 + ldr r3, [sp, #0xc] + adds r0, r3, r0 + strh r0, [r2] + lsls r3, r5, #1 + mov r0, sl + ldrb r1, [r0, #0x14] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #7 + adds r3, r3, r0 + ldr r1, _0815D4C4 + adds r3, r3, r1 + lsls r1, r7, #0x10 + asrs r1, r1, #0x10 + ldr r2, [sp, #0x10] + adds r1, r2, r1 + mov r7, r8 + lsls r2, r7, #0x10 + asrs r2, r2, #0x10 + lsls r0, r2, #1 + ldr r7, _0815D4C8 + adds r0, r0, r7 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 + adds r1, 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, r0, r2 + strh r0, [r6, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + strh r7, [r6, #0x20] + adds r4, #1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + subs r5, #2 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r3, [sp] + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + ldrh r1, [r6, #0x14] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + str r2, [sp] + asrs r0, r0, #0x15 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r0, _0815D4CC + add r0, ip + lsrs r2, r0, #0x10 + lsls r3, r2, #0x10 + mov ip, r3 + asrs r1, r3, #0x10 + movs r3, #0x22 + ldrsh r0, [r6, r3] + cmp r1, r0 + bgt _0815D3BA +_0815D46A: + lsls r1, r2, #0x11 + cmp r1, #0 + blt _0815D496 + ldr r4, _0815D4C4 + ldr r7, [sp, #4] + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + adds r3, r0, #0 + adds r3, #0xf0 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r5, r4, r0 +_0815D482: + asrs r2, r1, #0x10 + lsls r1, r2, #1 + adds r0, r1, r4 + strh r3, [r0] + adds r1, r1, r5 + strh r3, [r1] + subs r2, #2 + lsls r1, r2, #0x10 + cmp r1, #0 + bge _0815D482 +_0815D496: + ldrh r0, [r6, #0x14] + adds r0, #1 + strh r0, [r6, #0x14] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _0815D4FE + movs r0, #0x40 + strh r0, [r6, #0x14] + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0815D4D0 + ldrh r0, [r6, #0xe] + subs r0, #1 + strh r0, [r6, #0xe] + b _0815D4D6 + .align 2, 0 +_0815D4C0: .4byte gUnknown_20397C8 +_0815D4C4: .4byte gUnknown_20388C8 +_0815D4C8: .4byte gUnknown_82FA8CC +_0815D4CC: .4byte 0xFFFF0000 +_0815D4D0: + ldrh r0, [r6, #0x10] + adds r0, #1 + strh r0, [r6, #0x10] +_0815D4D6: + ldrh r1, [r6, #0x10] + lsls r1, r1, #8 + ldrh r0, [r6, #0xe] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0xe + ldrsh r1, [r6, r2] + cmp r1, #0 + bne _0815D578 + movs r3, #0x10 + ldrsh r0, [r6, r3] + cmp r0, #0x10 + bne _0815D578 + strh r1, [r6, #0xc] + strh r1, [r6, #0xe] + b _0815D56A +_0815D4FE: + ldrh r0, [r6, #0x18] + ldrh r7, [r6, #0x16] + adds r0, r0, r7 + strh r0, [r6, #0x16] + b _0815D578 +_0815D508: + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + ble _0815D578 + ldr r1, _0815D524 + movs r0, #3 + strb r0, [r1, #0x15] + movs r0, #0 + strh r0, [r6, #0xc] + b _0815D56A + .align 2, 0 +_0815D524: .4byte gUnknown_20397C8 +_0815D528: + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0815D53E + ldrh r0, [r6, #0xe] + adds r0, #1 + strh r0, [r6, #0xe] + b _0815D544 +_0815D53E: + ldrh r0, [r6, #0x10] + subs r0, #1 + strh r0, [r6, #0x10] +_0815D544: + ldrh r1, [r6, #0x10] + lsls r1, r1, #8 + ldrh r0, [r6, #0xe] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0xe + ldrsh r0, [r6, r1] + cmp r0, #0x10 + bne _0815D578 + movs r2, #0x10 + ldrsh r0, [r6, r2] + cmp r0, #0 + bne _0815D578 + strh r0, [r6, #0xc] + strh r0, [r6, #0xe] +_0815D56A: + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _0815D578 +_0815D572: + adds r0, r4, #0 + bl sub_080A34E4 +_0815D578: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0815D2D4 + + thumb_func_start sub_0815D588 +sub_0815D588: @ 0x0815D588 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0815D5C0 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _0815D5C4 + ldrb r0, [r0] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r4, #0x26] + ldr r2, _0815D5C8 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _0815D5CC + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815D5C0: .4byte gUnknown_3005B60 +_0815D5C4: .4byte gUnknown_20380BE +_0815D5C8: .4byte gUnknown_85AD3F8 +_0815D5CC: .4byte sub_0815D5D0 + thumb_func_end sub_0815D588 + + thumb_func_start sub_0815D5D0 +sub_0815D5D0: @ 0x0815D5D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r2, _0815D628 + adds r3, r0, r2 + ldrh r0, [r3, #8] + adds r1, r0, #1 + movs r5, #0 + strh r1, [r3, #8] + subs r0, #0x14 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r6, r2, #0 + cmp r0, #0x16 + bhi _0815D634 + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815D644 + strh r5, [r3, #0xa] + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + movs r5, #1 + ands r0, r5 + cmp r0, #0 + bne _0815D634 + ldr r2, _0815D62C + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0815D630 + strh r1, [r0, #0x24] + b _0815D644 + .align 2, 0 +_0815D628: .4byte gUnknown_3005B60 +_0815D62C: .4byte gUnknown_20205AC +_0815D630: .4byte 0x0000FFFF +_0815D634: + ldr r2, _0815D664 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x24] +_0815D644: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815D65C + adds r0, r4, #0 + bl sub_080A34E4 +_0815D65C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D664: .4byte gUnknown_20205AC + thumb_func_end sub_0815D5D0 + + thumb_func_start sub_0815D668 +sub_0815D668: @ 0x0815D668 + push {r4, r5, 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, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r2, r8 + strh r1, [r2, #0x20] + strh r5, [r2, #0x22] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r1, #4 + mov r3, r8 + strh r2, [r3, #0x36] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r2, r5, #4 + strh r2, [r3, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #4 + adds r1, r6, #0 + bl __divsi3 + mov r1, r8 + strh r0, [r1, #0x3a] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + subs r4, r4, r5 + lsls r4, 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, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0815D668 + + thumb_func_start sub_0815D6D0 +sub_0815D6D0: @ 0x0815D6D0 + ldrh r1, [r0, #0x3a] + ldrh r2, [r0, #0x36] + adds r1, r1, r2 + strh r1, [r0, #0x36] + ldrh r2, [r0, #0x3c] + ldrh r3, [r0, #0x38] + adds r2, r2, r3 + strh r2, [r0, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + strh r1, [r0, #0x20] + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + strh r2, [r0, #0x22] + bx lr + .align 2, 0 + thumb_func_end sub_0815D6D0 + + thumb_func_start sub_0815D6F0 +sub_0815D6F0: @ 0x0815D6F0 + push {r4, r5, r6, lr} + sub sp, #8 + adds r4, r0, #0 + ldrh r6, [r4, #0x20] + ldrh r5, [r4, #0x22] + bl sub_080A6100 + ldr r0, _0815D738 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08007F70 + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x22 + ldrsh r2, [r4, r0] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp] + movs r0, #0x40 + str r0, [sp, #4] + adds r0, r4, #0 + adds r3, r6, #0 + bl sub_0815D668 + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _0815D73C + str r0, [r4, #0x1c] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D738: .4byte gUnknown_20380BE +_0815D73C: .4byte sub_0815D740 + thumb_func_end sub_0815D6F0 + + thumb_func_start sub_0815D740 +sub_0815D740: @ 0x0815D740 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + movs r0, #0x2e + ldrsh r4, [r5, r0] + lsls r4, r4, #3 + movs r0, #0xff + ands r4, r0 + adds r0, r5, #0 + bl sub_0815D6D0 + adds r0, r4, #0 + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r5, #0x26] + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0x3a + ble _0815D7A6 + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815D7A6 + movs r0, #0 + strh r0, [r5, #0x30] + ldrh r1, [r5, #0x32] + adds r1, #1 + strh r1, [r5, #0x32] + movs r0, #1 + ands r1, r0 + adds r3, r5, #0 + adds r3, #0x3e + lsls r1, r1, #2 + ldrb r2, [r3] + subs r0, #6 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #3 + ble _0815D7A6 + adds r0, r5, #0 + bl sub_080A6014 +_0815D7A6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815D740 + + thumb_func_start sub_0815D7AC +sub_0815D7AC: @ 0x0815D7AC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0815D804 + ldrh r0, [r6, #6] + strh r0, [r5, #0x2e] + ldrb r1, [r6] + adds r0, r5, #0 + bl sub_08007F70 + ldr r0, _0815D808 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815D7D2 + ldrh r0, [r6, #2] + rsbs r0, r0, #0 + strh r0, [r6, #2] +_0815D7D2: + ldr r4, _0815D80C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #2] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r6, [r6, #4] + adds r0, r0, r6 + strh r0, [r5, #0x22] + ldr r0, _0815D810 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815D804: .4byte gUnknown_20380BE +_0815D808: .4byte gUnknown_20380D7 +_0815D80C: .4byte gUnknown_20380D6 +_0815D810: .4byte sub_0810EB18 + thumb_func_end sub_0815D7AC + + thumb_func_start sub_0815D814 +sub_0815D814: @ 0x0815D814 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r7, #0 + ldr r2, _0815D864 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r0, [r3, #8] + subs r0, #1 + strh r0, [r3, #8] + movs r1, #0x14 + ldrsh r0, [r3, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + mov r8, r2 + cmp r0, #0 + beq _0815D896 + ldrh r0, [r3, #0xa] + subs r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0815D896 + movs r2, #0x1a + ldrsh r0, [r3, r2] + cmp r0, #0 + bne _0815D868 + ldrh r0, [r3, #0x10] + strh r0, [r3, #0x1a] + rsbs r0, r0, #0 + strh r0, [r3, #0x10] + b _0815D86A + .align 2, 0 +_0815D864: .4byte gUnknown_3005B60 +_0815D868: + strh r7, [r3, #0x1a] +_0815D86A: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + mov r2, r8 + adds r1, r0, r2 + movs r2, #0x1c + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0815D886 + ldrh r0, [r1, #0x12] + strh r0, [r1, #0x1c] + rsbs r0, r0, #0 + strh r0, [r1, #0x12] + b _0815D88A +_0815D886: + movs r0, #0 + strh r0, [r1, #0x1c] +_0815D88A: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + add r0, r8 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0xa] +_0815D896: + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, 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, r1, #8 + ands r0, r1 + mov ip, r2 + cmp r0, #0 + beq _0815D8D4 + ldr r3, _0815D8D0 + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + lsrs r2, r6, #8 + ldrh r0, [r4, #0x1a] + subs r0, r0, r2 + strh r0, [r1, #0x24] + adds r2, r3, #0 + b _0815D8EA + .align 2, 0 +_0815D8D0: .4byte gUnknown_20205AC +_0815D8D4: + ldr r2, _0815D918 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + lsrs r1, r6, #8 + ldrh r4, [r4, #0x1a] + adds r1, r1, r4 + strh r1, [r0, #0x24] +_0815D8EA: + mov r1, ip + adds r0, r1, r5 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + movs r1, #0xe + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0815D91C + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsrs r2, r7, #8 + ldrh r0, [r4, #0x1c] + subs r0, r0, r2 + b _0815D92E + .align 2, 0 +_0815D918: .4byte gUnknown_20205AC +_0815D91C: + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsrs r0, r7, #8 + ldrh r4, [r4, #0x1c] + adds r0, r0, r4 +_0815D92E: + strh r0, [r1, #0x26] + mov r2, ip + adds r0, r2, r5 + lsls r0, r0, #3 + add r0, r8 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0 + bgt _0815D94E + adds r0, r5, #0 + bl sub_080A8964 + ldr r1, _0815D958 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0815D94E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815D958: .4byte gUnknown_203809E + thumb_func_end sub_0815D814 + + thumb_func_start sub_0815D95C +sub_0815D95C: @ 0x0815D95C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r7, #0 + ldr r2, _0815D9B0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r3, r0, r2 + ldrh r0, [r3, #8] + subs r0, #1 + strh r0, [r3, #8] + movs r1, #0x14 + ldrsh r0, [r3, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + mov r8, r2 + cmp r0, #0 + beq _0815D9E2 + ldrh r0, [r3, #0xa] + subs r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0815D9E2 + movs r2, #0x1a + ldrsh r0, [r3, r2] + cmp r0, #0 + bne _0815D9B4 + ldrh r0, [r3, #0x10] + strh r0, [r3, #0x1a] + rsbs r0, r0, #0 + strh r0, [r3, #0x10] + b _0815D9B6 + .align 2, 0 +_0815D9B0: .4byte gUnknown_3005B60 +_0815D9B4: + strh r7, [r3, #0x1a] +_0815D9B6: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + mov r2, r8 + adds r1, r0, r2 + movs r2, #0x1c + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0815D9D2 + ldrh r0, [r1, #0x12] + strh r0, [r1, #0x1c] + rsbs r0, r0, #0 + strh r0, [r1, #0x12] + b _0815D9D6 +_0815D9D2: + movs r0, #0 + strh r0, [r1, #0x1c] +_0815D9D6: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + add r0, r8 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0xa] +_0815D9E2: + lsls r3, r6, #2 + adds r0, r3, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + ldrh r2, [r4, #0xc] + ldr r1, _0815DA34 + adds r0, r1, #0 + ands r0, r2 + ldrh r2, [r4, #0x16] + adds r0, r0, r2 + lsls r5, r0, #0x10 + lsrs r0, r5, #0x10 + mov sb, r0 + ldrh r0, [r4, #0xe] + ands r1, r0 + ldrh r2, [r4, #0x18] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r1, #0xc + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + mov ip, r3 + cmp r0, #0 + beq _0815DA3C + ldr r3, _0815DA38 + movs r2, #0x26 + ldrsh r0, [r4, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + lsrs r2, r5, #0x18 + ldrh r0, [r4, #0x1a] + subs r0, r0, r2 + strh r0, [r1, #0x24] + adds r2, r3, #0 + b _0815DA52 + .align 2, 0 +_0815DA34: .4byte 0x00007FFF +_0815DA38: .4byte gUnknown_20205AC +_0815DA3C: + ldr r2, _0815DA80 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + lsrs r1, r5, #0x18 + ldrh r4, [r4, #0x1a] + adds r1, r1, r4 + strh r1, [r0, #0x24] +_0815DA52: + mov r1, ip + adds r0, r1, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + movs r1, #0xe + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0815DA84 + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsrs r2, r7, #8 + ldrh r0, [r4, #0x1c] + subs r0, r0, r2 + b _0815DA96 + .align 2, 0 +_0815DA80: .4byte gUnknown_20205AC +_0815DA84: + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsrs r0, r7, #8 + ldrh r4, [r4, #0x1c] + adds r0, r0, r4 +_0815DA96: + strh r0, [r1, #0x26] + mov r2, ip + adds r0, r2, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r2, r0, r1 + mov r0, sb + strh r0, [r2, #0x16] + strh r7, [r2, #0x18] + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #0 + bgt _0815DABC + movs r0, #0x1e + strh r0, [r2, #8] + movs r0, #0 + strh r0, [r2, #0x22] + ldr r0, _0815DAC8 + str r0, [r2] +_0815DABC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815DAC8: .4byte sub_0815D814 + thumb_func_end sub_0815D95C + + thumb_func_start sub_0815DACC +sub_0815DACC: @ 0x0815DACC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0815DB2C + mov r8, r0 + lsls r7, r6, #2 + adds r0, r7, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + ldr r1, _0815DB30 + ldr r2, _0815DB34 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r4, #0x26] + ldr r5, _0815DB38 + ldrh r0, [r5] + strh r0, [r4, #0x24] + ldrh r0, [r5] + strh r0, [r4, #8] + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x22] + movs r3, #6 + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _0815DB10 + ldrh r0, [r4, #0x14] + ldr r3, _0815DB3C + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r4, #0x14] +_0815DB10: + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815DB40 + ldrh r0, [r5, #2] + strh r0, [r4, #0xc] + ldrh r0, [r5, #4] + strh r0, [r4, #0xe] + mov r3, r8 + adds r4, r7, #0 + b _0815DBB0 + .align 2, 0 +_0815DB2C: .4byte gUnknown_3005B60 +_0815DB30: .4byte gUnknown_2023E88 +_0815DB34: .4byte gUnknown_20380D6 +_0815DB38: .4byte gUnknown_20380BE +_0815DB3C: .4byte 0xFFFF8000 +_0815DB40: + movs r7, #2 + ldrsh r0, [r5, r7] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0815DB5C + ldrh r1, [r5, #2] + ldr r0, _0815DB58 + ands r0, r1 + b _0815DB64 + .align 2, 0 +_0815DB58: .4byte 0x00007FFF +_0815DB5C: + ldrh r0, [r5, #2] + ldr r2, _0815DB8C + adds r1, r2, #0 + orrs r0, r1 +_0815DB64: + strh r0, [r4, #0xc] + ldr r0, _0815DB90 + movs r3, #4 + ldrsh r1, [r0, r3] + movs r2, #0x80 + lsls r2, r2, #8 + ands r1, r2 + adds r5, r0, #0 + cmp r1, #0 + beq _0815DB9C + ldr r3, _0815DB94 + lsls r4, r6, #2 + adds r1, r4, r6 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r2, [r5, #4] + ldr r0, _0815DB98 + ands r0, r2 + b _0815DBAE + .align 2, 0 +_0815DB8C: .4byte 0xFFFF8000 +_0815DB90: .4byte gUnknown_20380BE +_0815DB94: .4byte gUnknown_3005B60 +_0815DB98: .4byte 0x00007FFF +_0815DB9C: + ldr r3, _0815DBD4 + lsls r4, r6, #2 + adds r1, r4, r6 + lsls r1, r1, #3 + adds r1, r1, r3 + ldrh r2, [r5, #4] + ldr r7, _0815DBD8 + adds r0, r7, #0 + orrs r0, r2 +_0815DBAE: + strh r0, [r1, #0xe] +_0815DBB0: + adds r0, r4, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x18] + strh r1, [r0, #0x16] + ldrh r1, [r5, #8] + strh r1, [r0, #0x10] + ldrh r1, [r5, #0xa] + strh r1, [r0, #0x12] + ldr r1, _0815DBDC + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815DBD4: .4byte gUnknown_3005B60 +_0815DBD8: .4byte 0xFFFF8000 +_0815DBDC: .4byte sub_0815D95C + thumb_func_end sub_0815DACC + + thumb_func_start sub_0815DBE0 +sub_0815DBE0: @ 0x0815DBE0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0815DC18 + adds r5, r0, r1 + ldr r4, _0815DC1C + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815DC00 + adds r0, r2, #0 + bl sub_080A34E4 +_0815DC00: + movs r0, #0 + strh r0, [r5, #8] + strh r0, [r5, #0xa] + strh r0, [r5, #0xc] + ldrh r0, [r4, #2] + strh r0, [r5, #0xe] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815DC24 + ldr r0, _0815DC20 + b _0815DC26 + .align 2, 0 +_0815DC18: .4byte gUnknown_3005B60 +_0815DC1C: .4byte gUnknown_20380BE +_0815DC20: .4byte gUnknown_20380D6 +_0815DC24: + ldr r0, _0815DC74 +_0815DC26: + ldrb r4, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x10] + adds r0, r4, #0 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + adds r0, r4, #0 + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + ldr r0, _0815DC78 + ldrb r0, [r0] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r5, #0x26] + ldr r2, _0815DC7C + adds r0, r5, #0 + bl sub_080A75C4 + ldr r0, _0815DC80 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815DC74: .4byte gUnknown_20380D7 +_0815DC78: .4byte gUnknown_20380BE +_0815DC7C: .4byte gUnknown_85AD554 +_0815DC80: .4byte sub_0815DC84 + thumb_func_end sub_0815DBE0 + + thumb_func_start sub_0815DC84 +sub_0815DC84: @ 0x0815DC84 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0815DCA4 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815DCA8 + cmp r0, #1 + beq _0815DD08 + b _0815DD16 + .align 2, 0 +_0815DCA4: .4byte gUnknown_3005B60 +_0815DCA8: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _0815DCBE + adds r0, r5, #0 + movs r1, #1 + bl sub_0815DD1C +_0815DCBE: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0x12 + bne _0815DCCE + adds r0, r5, #0 + movs r1, #0 + bl sub_0815DD1C +_0815DCCE: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0815DD16 + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815DCF0 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815DD16 +_0815DCF0: + strh r1, [r4, #0xa] + ldrh r1, [r4, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815DD04 + adds r0, r4, #0 + bl sub_080A75C4 + b _0815DD16 + .align 2, 0 +_0815DD04: .4byte gUnknown_85AD554 +_0815DD08: + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815DD16 + adds r0, r5, #0 + bl sub_080A34E4 +_0815DD16: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815DC84 + + thumb_func_start sub_0815DD1C +sub_0815DD1C: @ 0x0815DD1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r2, _0815DD40 + adds r4, r0, r2 + cmp r1, #0 + bne _0815DD44 + movs r1, #0x12 + movs r3, #0xec + b _0815DD48 + .align 2, 0 +_0815DD40: .4byte gUnknown_3005B60 +_0815DD44: + movs r1, #0x1e + movs r3, #0x14 +_0815DD48: + mov r2, sp + ldrh r0, [r4, #0x10] + subs r0, r0, r1 + strh r0, [r2] + ldrh r0, [r4, #0x10] + subs r0, r0, r1 + subs r0, #4 + strh r0, [r2, #2] + ldrh r0, [r4, #0x10] + adds r0, r0, r1 + strh r0, [r2, #4] + ldrh r0, [r4, #0x10] + adds r0, r0, r1 + adds r0, #4 + strh r0, [r2, #6] + add r2, sp, #8 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x12] + adds r0, r0, r1 + strh r0, [r2] + ldrh r0, [r4, #0x12] + adds r0, r0, r1 + adds r0, #6 + strh r0, [r2, #2] + movs r5, #0 + mov r8, r2 + ldr r7, _0815DDEC +_0815DD80: + lsls r0, r5, #1 + add r0, sp + movs r2, #0 + ldrsh r1, [r0, r2] + movs r0, #1 + ands r0, r5 + lsls r0, r0, #1 + add r0, r8 + movs r3, #0 + ldrsh r2, [r0, r3] + ldrb r3, [r4, #0x14] + subs r3, #5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0815DDF0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _0815DDD4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r7 + movs r0, #0 + strh r0, [r1, #0x2e] + movs r0, #2 + cmp r5, #1 + bhi _0815DDC2 + movs r2, #2 + rsbs r2, r2, #0 + adds r0, r2, #0 +_0815DDC2: + strh r0, [r1, #0x30] + ldr r0, _0815DDF4 + strh r0, [r1, #0x32] + strh r6, [r1, #0x34] + movs r0, #2 + strh r0, [r1, #0x36] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] +_0815DDD4: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _0815DD80 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815DDEC: .4byte gUnknown_20205AC +_0815DDF0: .4byte gUnknown_85AD574 +_0815DDF4: .4byte 0x0000FFFF + thumb_func_end sub_0815DD1C + + thumb_func_start sub_0815DDF8 +sub_0815DDF8: @ 0x0815DDF8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x32] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + ble _0815DE3E + ldr r3, _0815DE44 + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x34 + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0815DE3E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815DE44: .4byte gUnknown_3005B60 + thumb_func_end sub_0815DDF8 + + thumb_func_start sub_0815DE48 +sub_0815DE48: @ 0x0815DE48 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0815DE90 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r0, #0 + strh r0, [r4, #8] + ldr r1, _0815DE94 + ldrh r0, [r1, #2] + strh r0, [r4, #0xa] + ldrb r0, [r1] + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0815DE98 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0xc] + ldr r0, _0815DE9C + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815DE90: .4byte gUnknown_3005B60 +_0815DE94: .4byte gUnknown_20380BE +_0815DE98: .4byte gUnknown_20205AC +_0815DE9C: .4byte sub_0815DEA0 + thumb_func_end sub_0815DE48 + + thumb_func_start sub_0815DEA0 +sub_0815DEA0: @ 0x0815DEA0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0815DEE8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815DEF0 + ldrh r0, [r4, #0xc] + ldr r2, _0815DEEC + movs r3, #8 + ldrsh r1, [r4, r3] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r3, [r1] + movs r1, #0x10 + movs r2, #8 + bl sub_0806F410 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x17 + ble _0815DEE0 + movs r0, #0 + strh r0, [r4, #8] +_0815DEE0: + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + b _0815DF02 + .align 2, 0 +_0815DEE8: .4byte gUnknown_3005B60 +_0815DEEC: .4byte gUnknown_85AD58C +_0815DEF0: + ldrh r0, [r4, #0xc] + movs r1, #0x10 + movs r2, #0 + movs r3, #0 + bl sub_0806F410 + adds r0, r5, #0 + bl sub_080A34E4 +_0815DF02: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815DEA0 + + thumb_func_start sub_0815DF08 +sub_0815DF08: @ 0x0815DF08 + push {lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0xd0 + lsls r2, r2, #1 + ldr r1, _0815DF44 + ldrb r3, [r1] + ldr r1, _0815DF48 + ldrb r1, [r1] + str r1, [sp] + movs r1, #0xa + str r1, [sp, #4] + movs r1, #2 + str r1, [sp, #8] + movs r1, #0x1e + str r1, [sp, #0xc] + ldr r1, _0815DF4C + str r1, [sp, #0x10] + ldr r1, _0815DF50 + str r1, [sp, #0x14] + subs r1, #0x20 + str r1, [sp, #0x18] + movs r1, #0 + bl sub_081180A4 + add sp, #0x1c + pop {r0} + bx r0 + .align 2, 0 +_0815DF44: .4byte gUnknown_20380D6 +_0815DF48: .4byte gUnknown_20380BE +_0815DF4C: .4byte gUnknown_8C2DD0C +_0815DF50: .4byte gUnknown_8C2DE68 + thumb_func_end sub_0815DF08 + + thumb_func_start sub_0815DF54 +sub_0815DF54: @ 0x0815DF54 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _0815DFAC + ldrb r0, [r6] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815DF70 + ldr r1, _0815DFB0 + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] +_0815DF70: + ldrb r0, [r6] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r4, _0815DFB0 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + adds r0, r0, r1 + strh r0, [r5, #0x20] + ldrb r0, [r6] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r5, #0x22] + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815DFB8 + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r5, #0x2e] + ldr r0, _0815DFB4 + strh r0, [r5, #0x30] + b _0815DFE0 + .align 2, 0 +_0815DFAC: .4byte gUnknown_20380D6 +_0815DFB0: .4byte gUnknown_20380BE +_0815DFB4: .4byte 0x0000FD80 +_0815DFB8: + cmp r0, #1 + bne _0815DFD2 + adds r2, r5, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r5, #0x2e] + strh r0, [r5, #0x30] + b _0815DFE0 +_0815DFD2: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r5, #0x2e] +_0815DFE0: + ldr r0, _0815E00C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815E000 + ldrh r0, [r5, #0x2e] + rsbs r0, r0, #0 + strh r0, [r5, #0x2e] + adds r2, r5, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0815E000: + ldr r0, _0815E010 + str r0, [r5, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E00C: .4byte gUnknown_20380D6 +_0815E010: .4byte sub_0815E014 + thumb_func_end sub_0815DF54 + + thumb_func_start sub_0815E014 +sub_0815E014: @ 0x0815E014 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r2, #0x3a] + adds r0, r0, r1 + strh r0, [r2, #0x3a] + ldrh r1, [r2, #0x30] + ldrh r3, [r2, #0x3c] + adds r1, r1, r3 + strh r1, [r2, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r2, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + strh r1, [r2, #0x26] + ldrh r0, [r2, #0x38] + adds r0, #1 + strh r0, [r2, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xe + bne _0815E048 + adds r0, r2, #0 + bl sub_080A34C4 +_0815E048: + pop {r0} + bx r0 + thumb_func_end sub_0815E014 + + thumb_func_start sub_0815E04C +sub_0815E04C: @ 0x0815E04C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0815E078 + adds r6, r1, r0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0815E07C + movs r0, #8 + strh r0, [r6, #0x12] + movs r0, #3 + strh r0, [r6, #0x14] + movs r0, #1 + strh r0, [r6, #0x16] + b _0815E086 + .align 2, 0 +_0815E078: .4byte gUnknown_3005B60 +_0815E07C: + movs r0, #0xc + strh r0, [r6, #0x12] + movs r0, #3 + strh r0, [r6, #0x14] + strh r1, [r6, #0x16] +_0815E086: + ldr r5, _0815E0BC + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815E0C0 + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A7EE4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0815E0B4 + adds r0, #3 +_0815E0B4: + asrs r0, r0, #2 + adds r0, r4, r0 + b _0815E0E4 + .align 2, 0 +_0815E0BC: .4byte gUnknown_20380D6 +_0815E0C0: + ldrb r0, [r5] + movs r1, #2 + bl sub_080A5534 + adds r4, r0, #0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A7EE4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0815E0E0 + adds r0, #3 +_0815E0E0: + asrs r0, r0, #2 + subs r0, r4, r0 +_0815E0E4: + strh r0, [r6, #0x1e] + ldr r5, _0815E138 + ldrb r0, [r5] + movs r1, #3 + bl sub_080A5534 + adds r4, r0, #0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A7EE4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0815E108 + adds r0, #3 +_0815E108: + asrs r0, r0, #2 + subs r0, r4, r0 + strh r0, [r6, #0x20] + ldr r4, _0815E13C + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x22] + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x24] + ldr r0, _0815E140 + str r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E138: .4byte gUnknown_20380D6 +_0815E13C: .4byte gUnknown_20380D7 +_0815E140: .4byte sub_0815E144 + thumb_func_end sub_0815E04C + + thumb_func_start sub_0815E144 +sub_0815E144: @ 0x0815E144 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0815E16C + adds r5, r0, r1 + movs r0, #8 + ldrsh r1, [r5, r0] + cmp r1, #0 + beq _0815E170 + cmp r1, #1 + bne _0815E168 + b _0815E268 +_0815E168: + b _0815E276 + .align 2, 0 +_0815E16C: .4byte gUnknown_3005B60 +_0815E170: + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _0815E276 + 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, #4] + add r4, sp, #0x10 + str r4, [sp, #8] + adds r4, #2 + str r4, [sp, #0xc] + bl sub_0815E284 + movs r6, #0 + mov r8, r4 + ldr r4, _0815E1E4 +_0815E1AA: + add r0, sp, #0x10 + movs r2, #0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, #0 + ldrsh r2, [r3, r0] + ldr r0, _0815E1E8 + movs r3, #0x23 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _0815E23E + movs r1, #0x16 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815E1FE + cmp r6, #0 + bne _0815E1EC + lsls r2, r3, #4 + adds r1, r2, r3 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r5, #0x14] + rsbs r0, r0, #0 + strh r0, [r1, #0x26] + strh r0, [r1, #0x24] + b _0815E226 + .align 2, 0 +_0815E1E4: .4byte gUnknown_20205AC +_0815E1E8: .4byte gUnknown_85AD5F4 +_0815E1EC: + lsls r2, r3, #4 + adds r1, r2, r3 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r5, #0x14] + strh r0, [r1, #0x26] + ldrh r0, [r5, #0x14] + strh r0, [r1, #0x24] + b _0815E226 +_0815E1FE: + cmp r6, #0 + bne _0815E214 + lsls r2, r3, #4 + adds r1, r2, r3 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r5, #0x14] + rsbs r0, r0, #0 + strh r0, [r1, #0x24] + ldrh r0, [r5, #0x14] + b _0815E224 +_0815E214: + lsls r2, r3, #4 + adds r1, r2, r3 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r5, #0x14] + strh r0, [r1, #0x24] + ldrh r0, [r5, #0x14] + rsbs r0, r0, #0 +_0815E224: + strh r0, [r1, #0x26] +_0815E226: + ldr r1, _0815E264 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, 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, #1 + strh r0, [r5, #0x1c] +_0815E23E: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #1 + bls _0815E1AA + ldrh r2, [r5, #0xc] + movs r3, #0xc + ldrsh r1, [r5, r3] + movs r4, #0x12 + ldrsh r0, [r5, r4] + cmp r1, r0 + bne _0815E25C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_0815E25C: + adds r0, r2, #1 + strh r0, [r5, #0xc] + b _0815E276 + .align 2, 0 +_0815E264: .4byte gUnknown_20205AC +_0815E268: + movs r1, #0x1c + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0815E276 + adds r0, r7, #0 + bl sub_080A34E4 +_0815E276: + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815E144 + + thumb_func_start sub_0815E284 +sub_0815E284: @ 0x0815E284 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r4, [sp, #0x28] + ldr r5, [sp, #0x2c] + ldr r6, [sp, #0x30] + mov sb, r6 + ldr r6, [sp, #0x34] + mov sl, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r7, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #4] + lsls r4, r4, #0x18 + lsrs r6, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r8, r5 + cmp r5, #0 + bne _0815E2CC + mov r2, sb + strh r0, [r2] + mov r6, sl + strh r1, [r6] + b _0815E32A +_0815E2CC: + cmp r5, r6 + blo _0815E2DA + mov r0, sb + strh r2, [r0] + mov r1, sl + strh r3, [r1] + b _0815E32A +_0815E2DA: + subs r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r2, ip + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + lsls r5, r1, #8 + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + adds r1, r6, #0 + bl __divsi3 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r5, r5, r0 + ldr r2, [sp] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + lsls r4, r1, #8 + ldr r2, [sp, #4] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + adds r1, r6, #0 + bl __divsi3 + mov r6, r8 + muls r6, r0, r6 + adds r0, r6, #0 + adds r4, r4, r0 + asrs r5, r5, #8 + mov r0, sb + strh r5, [r0] + asrs r4, r4, #8 + mov r1, sl + strh r4, [r1] +_0815E32A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815E284 + + thumb_func_start sub_0815E33C +sub_0815E33C: @ 0x0815E33C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x24 + ble _0815E372 + ldr r3, _0815E378 + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + movs r0, #0x30 + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08006E00 +_0815E372: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E378: .4byte gUnknown_3005B60 + thumb_func_end sub_0815E33C + + thumb_func_start sub_0815E37C +sub_0815E37C: @ 0x0815E37C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0815E3A8 + ldrh r0, [r1] + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + strh r0, [r4, #0x22] + ldrh r0, [r1, #4] + strh r0, [r4, #0x32] + ldrh r0, [r1, #6] + strh r0, [r4, #0x36] + ldrh r0, [r1, #8] + strh r0, [r4, #0x2e] + ldr r1, _0815E3AC + adds r0, r4, #0 + bl sub_080A5B9C + ldr r0, _0815E3B0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E3A8: .4byte gUnknown_20380BE +_0815E3AC: .4byte sub_080A34C4 +_0815E3B0: .4byte sub_080A6988 + thumb_func_end sub_0815E37C + + thumb_func_start sub_0815E3B4 +sub_0815E3B4: @ 0x0815E3B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + ldr r1, _0815E4D4 + adds r7, r0, r1 + ldr r0, _0815E4D8 + mov sl, r0 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x1e] + mov r1, sl + ldrb r0, [r1] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x20] + ldr r0, _0815E4DC + mov r8, r0 + ldrb r0, [r0] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x22] + mov r1, r8 + ldrb r0, [r1] + movs r1, #3 + bl sub_080A5534 + adds r4, r0, #0 + mov r1, r8 + ldrb r0, [r1] + movs r1, #0 + bl sub_080A7EE4 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0815E426 + adds r0, #3 +_0815E426: + asrs r0, r0, #2 + adds r0, r4, r0 + strh r0, [r7, #0x24] + ldr r4, _0815E4E0 + movs r0, #0x1e + ldrsh r5, [r7, r0] + movs r1, #0x20 + ldrsh r6, [r7, r1] + mov r1, r8 + ldrb r0, [r1] + bl sub_080A7BAC + adds r3, r0, #0 + subs r3, #5 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x26] + cmp r0, #0x40 + beq _0815E4F0 + ldr r4, _0815E4E4 + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x10 + strh r1, [r0, #0x2e] + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r7, #0x22] + strh r1, [r0, #0x32] + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r7, #0x24] + strh r1, [r0, #0x36] + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0815E4E8 + strh r1, [r0, #0x38] + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_080A619C + mov r1, sl + ldrb r0, [r1] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815E4CE + movs r0, #0x26 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007F70 +_0815E4CE: + ldr r0, _0815E4EC + str r0, [r7] + b _0815E4F6 + .align 2, 0 +_0815E4D4: .4byte gUnknown_3005B60 +_0815E4D8: .4byte gUnknown_20380D6 +_0815E4DC: .4byte gUnknown_20380D7 +_0815E4E0: .4byte gUnknown_85AD654 +_0815E4E4: .4byte gUnknown_20205AC +_0815E4E8: .4byte 0x0000FFE0 +_0815E4EC: .4byte sub_0815E504 +_0815E4F0: + mov r0, sb + bl sub_080A34E4 +_0815E4F6: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0815E3B4 + + thumb_func_start sub_0815E504 +sub_0815E504: @ 0x0815E504 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0815E528 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0815E56C + cmp r1, #1 + bgt _0815E52C + cmp r1, #0 + beq _0815E536 + b _0815E60A + .align 2, 0 +_0815E528: .4byte gUnknown_3005B60 +_0815E52C: + cmp r1, #2 + beq _0815E590 + cmp r1, #3 + beq _0815E604 + b _0815E60A +_0815E536: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815E60A + strh r1, [r4, #0xa] + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0815E568 + adds r0, r0, r1 + bl sub_080A61C8 + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _0815E60A + b _0815E5F6 + .align 2, 0 +_0815E568: .4byte gUnknown_20205AC +_0815E56C: + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0815E58C + adds r0, r0, r1 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815E60A + movs r0, #0 + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + b _0815E5F6 + .align 2, 0 +_0815E58C: .4byte gUnknown_20205AC +_0815E590: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815E60A + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r2, [r4, #0xc] + adds r2, #1 + strh r2, [r4, #0xc] + ldr r5, _0815E600 + movs r1, #0x26 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + movs r0, #1 + ands r2, r0 + adds r1, #0x3e + lsls r2, r2, #2 + ldrb r3, [r1] + subs r0, #6 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _0815E60A + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 +_0815E5F6: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815E60A + .align 2, 0 +_0815E600: .4byte gUnknown_20205AC +_0815E604: + adds r0, r2, #0 + bl sub_080A34E4 +_0815E60A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815E504 + + thumb_func_start sub_0815E610 +sub_0815E610: @ 0x0815E610 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _0815E624 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r6, r0, #0 + cmp r1, #0 + bne _0815E62C + ldr r0, _0815E628 + b _0815E62E + .align 2, 0 +_0815E624: .4byte gUnknown_20380BE +_0815E628: .4byte gUnknown_20380D6 +_0815E62C: + ldr r0, _0815E694 +_0815E62E: + ldrb r5, [r0] + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x10 + ldr r3, _0815E698 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0815E69C + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] + adds r1, r6, #0 + ldrh r0, [r1, #4] + strh r0, [r4, #0x3a] + movs r2, #2 + ldrsh r0, [r1, r2] + movs r1, #1 + cmp r0, #0 + bne _0815E65C + movs r3, #1 + rsbs r3, r3, #0 + adds r1, r3, #0 +_0815E65C: + strh r1, [r4, #0x3c] + adds r0, r5, #0 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x22] + movs r1, #2 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815E6A0 + ldrb r2, [r4, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #8 + orrs r1, r0 + lsls r1, r1, #1 + subs r0, #0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r5, #0 + movs r1, #4 + bl sub_080A7EE4 + subs r0, #8 + b _0815E6AA + .align 2, 0 +_0815E694: .4byte gUnknown_20380D7 +_0815E698: .4byte 0x000003FF +_0815E69C: .4byte 0xFFFFFC00 +_0815E6A0: + adds r0, r5, #0 + movs r1, #5 + bl sub_080A7EE4 + adds r0, #8 +_0815E6AA: + strh r0, [r4, #0x20] + ldr r0, _0815E6B8 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815E6B8: .4byte sub_0815E6BC + thumb_func_end sub_0815E610 + + thumb_func_start sub_0815E6BC +sub_0815E6BC: @ 0x0815E6BC + push {lr} + adds r2, r0, #0 + movs r0, #0x2e + ldrsh r1, [r2, r0] + cmp r1, #1 + beq _0815E704 + cmp r1, #1 + bgt _0815E6D2 + cmp r1, #0 + beq _0815E6DC + b _0815E774 +_0815E6D2: + cmp r1, #2 + beq _0815E714 + cmp r1, #3 + beq _0815E73A + b _0815E774 +_0815E6DC: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815E774 + strh r1, [r2, #0x30] + ldrh r0, [r2, #0x3c] + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x32] + adds r0, #1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _0815E774 + b _0815E732 +_0815E704: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + bne _0815E774 + b _0815E72E +_0815E714: + movs r0, #0x3c + ldrsh r1, [r2, r0] + lsls r1, r1, #2 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _0815E774 +_0815E72E: + movs r0, #0 + strh r0, [r2, #0x30] +_0815E732: + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + b _0815E774 +_0815E73A: + movs r0, #0x3c + ldrsh r1, [r2, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrh r1, [r2, #0x24] + adds r0, r0, r1 + strh r0, [r2, #0x24] + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + bne _0815E774 + ldrh r0, [r2, #0x3a] + subs r0, #1 + strh r0, [r2, #0x3a] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0815E76E + movs r0, #0 + strh r0, [r2, #0x30] + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + b _0815E774 +_0815E76E: + adds r0, r2, #0 + bl sub_080A34C4 +_0815E774: + pop {r0} + bx r0 + thumb_func_end sub_0815E6BC + + thumb_func_start sub_0815E778 +sub_0815E778: @ 0x0815E778 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r2, _0815E790 + movs r3, #0 + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _0815E794 + adds r0, r1, #0 + bl sub_080A34E4 + b _0815E7BC + .align 2, 0 +_0815E790: .4byte gUnknown_20380BE +_0815E794: + ldr r0, _0815E7C4 + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r2, #2] + strh r0, [r4, #8] + ldrb r0, [r2] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r4, #0x26] + ldr r2, _0815E7C8 + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _0815E7CC + str r0, [r4] +_0815E7BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815E7C4: .4byte gUnknown_3005B60 +_0815E7C8: .4byte gUnknown_85AD684 +_0815E7CC: .4byte sub_0815E7D0 + thumb_func_end sub_0815E778 + + thumb_func_start sub_0815E7D0 +sub_0815E7D0: @ 0x0815E7D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0815E810 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815E82A + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0815E818 + ldr r2, _0815E814 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + b _0815E828 + .align 2, 0 +_0815E810: .4byte gUnknown_3005B60 +_0815E814: .4byte gUnknown_20205AC +_0815E818: + ldr r2, _0815E870 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _0815E874 +_0815E828: + strh r1, [r0, #0x24] +_0815E82A: + adds r0, r4, #0 + bl sub_080A75FC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0815E886 + ldr r2, _0815E870 + movs r0, #0x26 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x24] + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0815E880 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0815E878 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0815E87C + bl sub_080A75C4 + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + b _0815E886 + .align 2, 0 +_0815E870: .4byte gUnknown_20205AC +_0815E874: .4byte 0x0000FFFE +_0815E878: .4byte gUnknown_3005B60 +_0815E87C: .4byte gUnknown_85AD684 +_0815E880: + adds r0, r6, #0 + bl sub_080A34E4 +_0815E886: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0815E7D0 + + thumb_func_start sub_0815E88C +sub_0815E88C: @ 0x0815E88C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0815E8A0 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815E8A8 + ldr r4, _0815E8A4 + b _0815E8AA + .align 2, 0 +_0815E8A0: .4byte gUnknown_20380BE +_0815E8A4: .4byte gUnknown_20380D6 +_0815E8A8: + ldr r4, _0815E8E8 +_0815E8AA: + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + strh r0, [r5, #0x22] + movs r1, #0x22 + ldrsh r0, [r5, r1] + cmp r0, #7 + bgt _0815E8CE + movs r0, #8 + strh r0, [r5, #0x22] +_0815E8CE: + movs r2, #0 + strh r2, [r5, #0x2e] + ldr r1, _0815E8EC + ldrh r0, [r1, #2] + strh r0, [r5, #0x30] + strh r2, [r5, #0x32] + ldrh r0, [r1, #4] + strh r0, [r5, #0x34] + ldr r0, _0815E8F0 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815E8E8: .4byte gUnknown_20380D7 +_0815E8EC: .4byte gUnknown_20380BE +_0815E8F0: .4byte sub_0815E8F4 + thumb_func_end sub_0815E88C + + thumb_func_start sub_0815E8F4 +sub_0815E8F4: @ 0x0815E8F4 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x30 + ldrsh r1, [r3, r2] + cmp r0, r1 + blt _0815E948 + movs r0, #0 + strh r0, [r3, #0x2e] + ldrh r1, [r3, #0x32] + adds r1, #1 + movs r0, #1 + ands r1, r0 + strh r1, [r3, #0x32] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + lsls r1, r1, #2 + ldrb r2, [r0] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r2, #0x32 + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _0815E948 + ldrh r0, [r3, #0x34] + subs r0, #1 + strh r0, [r3, #0x34] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0815E948 + adds r0, r3, #0 + bl sub_080A34C4 +_0815E948: + pop {r0} + bx r0 + thumb_func_end sub_0815E8F4 + + thumb_func_start sub_0815E94C +sub_0815E94C: @ 0x0815E94C + push {lr} + adds r3, r0, #0 + ldr r0, _0815E978 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815E97C + ldrb r2, [r3, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #8 + orrs r1, r0 + lsls r1, r1, #1 + subs r0, #0x47 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #3] + movs r0, #0x64 + strh r0, [r3, #0x20] + movs r0, #1 + b _0815E982 + .align 2, 0 +_0815E978: .4byte gUnknown_20380BE +_0815E97C: + movs r0, #0x8c + strh r0, [r3, #0x20] + ldr r0, _0815E990 +_0815E982: + strh r0, [r3, #0x3c] + movs r0, #0x38 + strh r0, [r3, #0x22] + ldr r0, _0815E994 + str r0, [r3, #0x1c] + pop {r0} + bx r0 + .align 2, 0 +_0815E990: .4byte 0x0000FFFF +_0815E994: .4byte sub_0815E998 + thumb_func_end sub_0815E94C + + thumb_func_start sub_0815E998 +sub_0815E998: @ 0x0815E998 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #8 + bls _0815E9A6 + b _0815EB78 +_0815E9A6: + lsls r0, r0, #2 + ldr r1, _0815E9B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815E9B0: .4byte _0815E9B4 +_0815E9B4: @ jump table + .4byte _0815E9D8 @ case 0 + .4byte _0815EA0A @ case 1 + .4byte _0815EA1C @ case 2 + .4byte _0815EA5C @ case 3 + .4byte _0815EA6E @ case 4 + .4byte _0815EAAC @ case 5 + .4byte _0815EB10 @ case 6 + .4byte _0815EB30 @ case 7 + .4byte _0815EB56 @ case 8 +_0815E9D8: + movs r3, #0x3c + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + ldrh r1, [r4, #0x22] + subs r1, r1, r0 + strh r1, [r4, #0x22] + ldrh r2, [r4, #0x30] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0815E9FA + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r1, r1, #1 + ldrh r0, [r4, #0x20] + subs r0, r0, r1 + strh r0, [r4, #0x20] +_0815E9FA: + adds r0, r2, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + beq _0815EA08 + b _0815EB78 +_0815EA08: + b _0815EB4A +_0815EA0A: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + beq _0815EA1A + b _0815EB78 +_0815EA1A: + b _0815EB4A +_0815EA1C: + ldrh r2, [r4, #0x30] + adds r2, #1 + strh r2, [r4, #0x30] + movs r3, #0x3c + ldrsh r1, [r4, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r3, _0815EA58 + movs r0, #0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + ldrh r1, [r4, #0x3c] + muls r0, r1, r0 + strh r0, [r4, #0x24] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0xc + beq _0815EA54 + b _0815EB78 +_0815EA54: + b _0815EB4A + .align 2, 0 +_0815EA58: .4byte gUnknown_82FA8CC +_0815EA5C: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + beq _0815EA6C + b _0815EB78 +_0815EA6C: + b _0815EB4A +_0815EA6E: + ldrh r2, [r4, #0x30] + adds r2, #1 + strh r2, [r4, #0x30] + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + ldrh r0, [r4, #0x22] + subs r0, r0, r1 + strh r0, [r4, #0x22] + ldr r3, _0815EAA8 + movs r0, #0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + ldrh r1, [r4, #0x3c] + muls r0, r1, r0 + strh r0, [r4, #0x24] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0xc + bne _0815EB78 + b _0815EB4E + .align 2, 0 +_0815EAA8: .4byte gUnknown_82FA8CC +_0815EAAC: + ldrh r2, [r4, #0x30] + adds r2, #1 + strh r2, [r4, #0x30] + movs r3, #0x3c + ldrsh r1, [r4, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r3, _0815EB04 + movs r0, #0x30 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + ldrh r1, [r4, #0x3c] + muls r0, r1, r0 + strh r0, [r4, #0x24] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0xf + bne _0815EAF8 + ldrh r2, [r4, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + adds r1, #0x10 + ldr r3, _0815EB08 + adds r0, r3, #0 + ands r1, r0 + ldr r0, _0815EB0C + ands r0, r2 + orrs r0, r1 + strh r0, [r4, #4] +_0815EAF8: + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x12 + bne _0815EB78 + b _0815EB4A + .align 2, 0 +_0815EB04: .4byte gUnknown_82FA8CC +_0815EB08: .4byte 0x000003FF +_0815EB0C: .4byte 0xFFFFFC00 +_0815EB10: + movs r3, #0x3c + ldrsh r0, [r4, r3] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldrh r0, [r4, #0x20] + adds r1, r1, r0 + strh r1, [r4, #0x20] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bne _0815EB78 + b _0815EB4A +_0815EB30: + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + ldrh r3, [r4, #0x20] + adds r0, r0, r3 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0815EB78 +_0815EB4A: + movs r0, #0 + strh r0, [r4, #0x30] +_0815EB4E: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815EB78 +_0815EB56: + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + ldrh r0, [r4, #0x20] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0815EB78 + adds r0, r4, #0 + bl sub_080A34C4 +_0815EB78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815E998 + + thumb_func_start sub_0815EB80 +sub_0815EB80: @ 0x0815EB80 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _0815EBDC + adds r6, r1, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x26] + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815EC08 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #1 + bne _0815EBEC + ldr r5, _0815EBE0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r1, [r5] + movs r0, #2 + eors r0, r1 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + ble _0815EBE4 + strh r7, [r6, #0x24] + b _0815EC0C + .align 2, 0 +_0815EBDC: .4byte gUnknown_3005B60 +_0815EBE0: .4byte gUnknown_20380D6 +_0815EBE4: + ldr r0, _0815EBE8 + b _0815EC0A + .align 2, 0 +_0815EBE8: .4byte 0x0000FFFF +_0815EBEC: + ldr r0, _0815EC00 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815EC08 + ldr r0, _0815EC04 + b _0815EC0A + .align 2, 0 +_0815EC00: .4byte gUnknown_20380D6 +_0815EC04: .4byte 0x0000FFFF +_0815EC08: + movs r0, #1 +_0815EC0A: + strh r0, [r6, #0x24] +_0815EC0C: + ldr r0, _0815EC18 + str r0, [r6] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815EC18: .4byte sub_0815EC1C + thumb_func_end sub_0815EB80 + + thumb_func_start sub_0815EC1C +sub_0815EC1C: @ 0x0815EC1C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0815EC40 + adds r3, r0, r1 + movs r1, #8 + ldrsh r0, [r3, r1] + cmp r0, #8 + bls _0815EC36 + b _0815EDB0 +_0815EC36: + lsls r0, r0, #2 + ldr r1, _0815EC44 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815EC40: .4byte gUnknown_3005B60 +_0815EC44: .4byte _0815EC48 +_0815EC48: @ jump table + .4byte _0815EC6C @ case 0 + .4byte _0815EC7E @ case 1 + .4byte _0815ECB0 @ case 2 + .4byte _0815ECE0 @ case 3 + .4byte _0815ED06 @ case 4 + .4byte _0815ED30 @ case 5 + .4byte _0815ED40 @ case 6 + .4byte _0815ED60 @ case 7 + .4byte _0815ED98 @ case 8 +_0815EC6C: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xd + beq _0815EC7C + b _0815EDB0 +_0815EC7C: + b _0815ED88 +_0815EC7E: + ldr r2, _0815ECAC + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r2, #0x24 + ldrsh r0, [r3, r2] + lsls r2, r0, #1 + adds r2, r2, r0 + ldrh r0, [r1, #0x24] + subs r0, r0, r2 + strh r0, [r1, #0x24] + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + beq _0815ECAA + b _0815EDB0 +_0815ECAA: + b _0815ED88 + .align 2, 0 +_0815ECAC: .4byte gUnknown_20205AC +_0815ECB0: + ldr r2, _0815ECDC + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x24 + ldrsh r2, [r3, r0] + lsls r0, r2, #1 + adds r0, r0, r2 + ldrh r2, [r1, #0x24] + adds r0, r0, r2 + strh r0, [r1, #0x24] + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _0815EDB0 + b _0815ED88 + .align 2, 0 +_0815ECDC: .4byte gUnknown_20205AC +_0815ECE0: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + bne _0815EDB0 + movs r0, #0 + strh r0, [r3, #0xa] + ldrh r1, [r3, #0xc] + movs r2, #0xc + ldrsh r0, [r3, r2] + cmp r0, #0 + bne _0815ED8C + adds r0, r1, #1 + strh r0, [r3, #0xc] + movs r0, #1 + strh r0, [r3, #8] + b _0815EDB0 +_0815ED06: + ldr r2, _0815ED2C + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r3, #0x24] + ldrh r2, [r0, #0x24] + adds r1, r1, r2 + strh r1, [r0, #0x24] + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + bne _0815EDB0 + b _0815ED88 + .align 2, 0 +_0815ED2C: .4byte gUnknown_20205AC +_0815ED30: + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bne _0815EDB0 + b _0815ED88 +_0815ED40: + ldr r2, _0815ED5C + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x24 + ldrsh r2, [r3, r0] + lsls r2, r2, #2 + ldrh r0, [r1, #0x24] + subs r0, r0, r2 + b _0815ED78 + .align 2, 0 +_0815ED5C: .4byte gUnknown_20205AC +_0815ED60: + ldr r2, _0815ED94 + movs r1, #0x26 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r2, #0x24 + ldrsh r0, [r3, r2] + lsls r0, r0, #2 + ldrh r2, [r1, #0x24] + adds r0, r0, r2 +_0815ED78: + strh r0, [r1, #0x24] + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #5 + bne _0815EDB0 +_0815ED88: + movs r0, #0 + strh r0, [r3, #0xa] +_0815ED8C: + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + b _0815EDB0 + .align 2, 0 +_0815ED94: .4byte gUnknown_20205AC +_0815ED98: + ldr r2, _0815EDB8 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x24] + adds r0, r4, #0 + bl sub_080A34E4 +_0815EDB0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815EDB8: .4byte gUnknown_20205AC + thumb_func_end sub_0815EC1C + + thumb_func_start sub_0815EDBC +sub_0815EDBC: @ 0x0815EDBC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0815EDD8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815EDE0 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A6294 + ldr r0, _0815EDDC + b _0815EDE2 + .align 2, 0 +_0815EDD8: .4byte gUnknown_20380BE +_0815EDDC: .4byte gUnknown_20380D6 +_0815EDE0: + ldr r0, _0815EE38 +_0815EDE2: + ldrb r0, [r0] + strh r0, [r4, #0x3c] + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815EE06 + ldrb r0, [r4, #3] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r4, #3] +_0815EE06: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7BF0 + movs r2, #3 + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r4, #5] + movs r1, #0xd + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #5] + ldrb r0, [r4, #1] + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #1] + ldr r0, _0815EE3C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815EE38: .4byte gUnknown_20380D7 +_0815EE3C: .4byte sub_0815EE40 + thumb_func_end sub_0815EDBC + + thumb_func_start sub_0815EE40 +sub_0815EE40: @ 0x0815EE40 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _0815EE4E + b _0815F03E +_0815EE4E: + lsls r0, r0, #2 + ldr r1, _0815EE58 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815EE58: .4byte _0815EE5C +_0815EE5C: @ jump table + .4byte _0815EE70 @ case 0 + .4byte _0815EF70 @ case 1 + .4byte _0815EFD8 @ case 2 + .4byte _0815EFEC @ case 3 + .4byte _0815F038 @ case 4 +_0815EE70: + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #5 + bhi _0815EEA0 + lsls r0, r0, #2 + ldr r1, _0815EE84 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815EE84: .4byte _0815EE88 +_0815EE88: @ jump table + .4byte _0815EEA4 @ case 0 + .4byte _0815EEC0 @ case 1 + .4byte _0815EEE2 @ case 2 + .4byte _0815EEFE @ case 3 + .4byte _0815EEA4 @ case 4 + .4byte _0815EF24 @ case 5 +_0815EEA0: + movs r0, #0 + strh r0, [r4, #0x3a] +_0815EEA4: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #5 + bl sub_080A7EE4 + subs r0, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + b _0815EF18 +_0815EEC0: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #5 + bl sub_080A7EE4 + subs r0, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_080A7EE4 + adds r0, #4 + b _0815EF1E +_0815EEE2: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #4 + bl sub_080A7EE4 + adds r0, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + b _0815EF18 +_0815EEFE: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #4 + bl sub_080A7EE4 + adds r0, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 +_0815EF18: + bl sub_080A7EE4 + subs r0, #4 +_0815EF1E: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + b _0815EF44 +_0815EF24: + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_0815EF44: + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #4 + bne _0815EF50 + movs r0, #0x18 + b _0815EF5A +_0815EF50: + cmp r0, #5 + bne _0815EF58 + movs r0, #6 + b _0815EF5A +_0815EF58: + movs r0, #0xc +_0815EF5A: + 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_080A671C + b _0815F030 +_0815EF70: + adds r0, r4, #0 + bl sub_080A6804 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815F03E + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #4 + beq _0815EFA8 + cmp r0, #5 + beq _0815EFC8 + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r1, [r4, #0x26] + strh r1, [r4, #0x24] + strh r1, [r4, #0x2e] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + b _0815EFC0 +_0815EFA8: + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] + strh r1, [r4, #0x26] + strh r1, [r4, #0x24] + strh r1, [r4, #0x38] +_0815EFC0: + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + b _0815F03E +_0815EFC8: + movs r0, #0 + strh r0, [r4, #0x2e] + movs r1, #0x10 + strh r1, [r4, #0x30] + strh r0, [r4, #0x32] + movs r0, #3 + strh r0, [r4, #0x38] + b _0815F03E +_0815EFD8: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + bne _0815F03E + movs r0, #0 + strh r0, [r4, #0x38] + b _0815F03E +_0815EFEC: + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0815EFFE + ldrh r0, [r4, #0x30] + subs r0, #1 + strh r0, [r4, #0x30] + b _0815F004 +_0815EFFE: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_0815F004: + ldrh r1, [r4, #0x32] + lsls r1, r1, #8 + ldrh r0, [r4, #0x30] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + bne _0815F03E + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0815F030: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + b _0815F03E +_0815F038: + adds r0, r4, #0 + bl sub_080A34C4 +_0815F03E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815EE40 + + thumb_func_start sub_0815F044 +sub_0815F044: @ 0x0815F044 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + movs r2, #0x38 + ldrsh r1, [r4, r2] + muls r0, r1, r0 + 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, r0, r1 + movs r2, #0x38 + ldrsh r1, [r4, r2] + muls r0, r1, r0 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl __divsi3 + adds r3, r0, #0 + strh r3, [r4, #0x26] + ldrh r1, [r4, #0x38] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0815F0A2 + ldr r0, _0815F0C0 + ldrh r1, [r4, #0x20] + adds r1, r1, r5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r4, #0x22] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #5 + bl sub_08006B0C +_0815F0A2: + movs r0, #0x38 + ldrsh r1, [r4, r0] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0815F0B4 + adds r0, r4, #0 + bl sub_080A34C4 +_0815F0B4: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F0C0: .4byte gUnknown_85AD1A8 + thumb_func_end sub_0815F044 + + thumb_func_start sub_0815F0C4 +sub_0815F0C4: @ 0x0815F0C4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0815F100 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + ldrb r0, [r4] + movs r1, #3 + bl sub_080A5534 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815F0F0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815F108 +_0815F0F0: + ldr r2, _0815F104 + ldrh r1, [r5, #0x20] + ldrh r0, [r2] + subs r0, r1, r0 + strh r0, [r5, #0x2e] + ldrh r0, [r2, #4] + subs r1, r1, r0 + b _0815F116 + .align 2, 0 +_0815F100: .4byte gUnknown_20380D7 +_0815F104: .4byte gUnknown_20380BE +_0815F108: + ldr r2, _0815F13C + ldrh r1, [r5, #0x20] + ldrh r0, [r2] + adds r0, r1, r0 + strh r0, [r5, #0x2e] + ldrh r0, [r2, #4] + adds r1, r1, r0 +_0815F116: + strh r1, [r5, #0x32] + adds r3, r2, #0 + ldrh r1, [r5, #0x22] + ldrh r2, [r3, #2] + adds r2, r1, r2 + strh r2, [r5, #0x30] + ldrh r0, [r3, #6] + adds r1, r1, r0 + strh r1, [r5, #0x34] + ldrh r0, [r3, #8] + strh r0, [r5, #0x36] + ldrh r0, [r5, #0x2e] + strh r0, [r5, #0x20] + strh r2, [r5, #0x22] + ldr r0, _0815F140 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F13C: .4byte gUnknown_20380BE +_0815F140: .4byte sub_0815F044 + thumb_func_end sub_0815F0C4 + + thumb_func_start sub_0815F144 +sub_0815F144: @ 0x0815F144 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r2, r5, #0 + ldr r0, _0815F188 + mov sb, r0 + lsls r7, r6, #2 + adds r0, r7, r6 + lsls r0, r0, #3 + mov r8, r0 + mov r4, r8 + add r4, sb + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0815F18C + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6B38 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0xa] + strh r0, [r4, #0xc] + b _0815F1D8 + .align 2, 0 +_0815F188: .4byte gUnknown_3005B60 +_0815F18C: + cmp r0, #1 + bne _0815F1E4 + 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_080A6A7C + ldrh r0, [r4, #0xe] + adds r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #9 + bne _0815F248 + movs r0, #0 + strh r0, [r4, #0xe] + adds r0, r5, #0 + bl sub_080A6C0C + ldr r1, _0815F1E0 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0815F1D8: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815F248 + .align 2, 0 +_0815F1E0: .4byte gUnknown_20205AC +_0815F1E4: + ldr r4, _0815F254 + ldrb r0, [r4] + movs r1, #0 + bl sub_0805E510 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815F226 + ldr r3, _0815F258 + ldr r2, _0815F25C + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldr r1, _0815F260 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + bl sub_08007F70 +_0815F226: + mov r4, sb + adds r3, r7, #0 + ldr r5, _0815F264 + movs r1, #0xf + mov r2, r8 + adds r0, r4, r2 + adds r0, #0x26 + movs r2, #0 +_0815F236: + strh r2, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _0815F236 + adds r0, r3, r6 + lsls r0, r0, #3 + adds r0, r0, r4 + str r5, [r0] +_0815F248: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815F254: .4byte gUnknown_20380D6 +_0815F258: .4byte gUnknown_20205AC +_0815F25C: .4byte gUnknown_2023E88 +_0815F260: .4byte gUnknown_82D2F50 +_0815F264: .4byte sub_0815F268 + thumb_func_end sub_0815F144 + + thumb_func_start sub_0815F268 +sub_0815F268: @ 0x0815F268 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _0815F294 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _0815F2CC + cmp r5, #1 + bgt _0815F298 + cmp r5, #0 + beq _0815F2A2 + b _0815F3BA + .align 2, 0 +_0815F294: .4byte gUnknown_3005B60 +_0815F298: + cmp r5, #2 + beq _0815F338 + cmp r5, #3 + beq _0815F374 + b _0815F3BA +_0815F2A2: + ldr r0, _0815F2C4 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0815F2C8 + 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 _0815F366 + .align 2, 0 +_0815F2C4: .4byte gUnknown_20205AC +_0815F2C8: .4byte 0x0000FF38 +_0815F2CC: + ldrh r1, [r4, #0x1c] + adds r1, #0x70 + movs r5, #0 + strh r1, [r4, #0x1c] + ldr r2, _0815F330 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r3, [r2, #0x26] + adds r1, r1, r3 + strh r1, [r2, #0x26] + movs r1, #0x22 + ldrsh r0, [r2, r1] + movs r3, #0x26 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + blt _0815F2FC + strh r5, [r2, #0x24] +_0815F2FC: + movs r1, #0x26 + ldrsh r0, [r2, r1] + cmp r0, #0 + ble _0815F306 + strh r5, [r2, #0x26] +_0815F306: + movs r3, #0x26 + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _0815F3BA + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x7d + bl sub_080A307C + ldr r1, _0815F334 + adds r0, r1, #0 + ldrh r2, [r4, #0x1c] + adds r0, r0, r2 + strh r0, [r4, #0x1c] + b _0815F366 + .align 2, 0 +_0815F330: .4byte gUnknown_20205AC +_0815F334: .4byte 0xFFFFF800 +_0815F338: + ldrh r0, [r4, #0x1c] + subs r0, #0x70 + strh r0, [r4, #0x1c] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0815F348 + movs r0, #0 + strh r0, [r4, #0x1c] +_0815F348: + ldr r0, _0815F370 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r2, [r4, #0x1c] + lsls r2, r2, #0x10 + asrs r2, r2, #0x18 + ldrh r0, [r1, #0x26] + subs r0, r0, r2 + strh r0, [r1, #0x26] + movs r3, #0x1c + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _0815F3BA +_0815F366: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815F3BA + .align 2, 0 +_0815F370: .4byte gUnknown_20205AC +_0815F374: + ldrh r0, [r4, #0x1c] + adds r0, #0x70 + strh r0, [r4, #0x1c] + ldr r2, _0815F3C0 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r1, #0x26] + adds r0, r0, r2 + strh r0, [r1, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0815F398 + movs r0, #0 + strh r0, [r1, #0x26] +_0815F398: + movs r3, #0x26 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _0815F3BA + movs r0, #0x40 + rsbs r0, r0, #0 + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x7d + bl sub_080A307C + adds r0, r6, #0 + bl sub_080A34E4 +_0815F3BA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0815F3C0: .4byte gUnknown_20205AC + thumb_func_end sub_0815F268 + + thumb_func_start sub_0815F3C4 +sub_0815F3C4: @ 0x0815F3C4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0815F3E8 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815F3F0 + ldrb r0, [r4] + bl sub_080A7BAC + subs r0, #2 + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] + ldr r4, _0815F3EC + b _0815F400 + .align 2, 0 +_0815F3E8: .4byte gUnknown_20380D7 +_0815F3EC: .4byte 0x0000FF70 +_0815F3F0: + ldrb r0, [r4] + bl sub_080A7BAC + adds r0, #2 + adds r1, r5, #0 + adds r1, #0x43 + strb r0, [r1] + ldr r4, _0815F41C +_0815F400: + ldr r0, _0815F420 + ldrb r0, [r0] + movs r1, #3 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x22] + strh r4, [r5, #0x26] + ldr r0, _0815F424 + str r0, [r5, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F41C: .4byte 0x0000FFA0 +_0815F420: .4byte gUnknown_20380D7 +_0815F424: .4byte sub_0815F428 + thumb_func_end sub_0815F3C4 + + thumb_func_start sub_0815F428 +sub_0815F428: @ 0x0815F428 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #4 + bls _0815F436 + b _0815F552 +_0815F436: + lsls r0, r0, #2 + ldr r1, _0815F440 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815F440: .4byte _0815F444 +_0815F444: @ jump table + .4byte _0815F458 @ case 0 + .4byte _0815F47C @ case 1 + .4byte _0815F4BC @ case 2 + .4byte _0815F4EC @ case 3 + .4byte _0815F518 @ case 4 +_0815F458: + ldrh r0, [r4, #0x26] + adds r0, #0xa + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0815F552 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xcd + bl sub_080A307C + movs r0, #0 + strh r0, [r4, #0x26] + b _0815F510 +_0815F47C: + ldrh r1, [r4, #0x30] + adds r1, #4 + movs r5, #0 + strh r1, [r4, #0x30] + ldr r2, _0815F4B8 + movs r3, #0x30 + ldrsh r0, [r4, r3] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + ble _0815F552 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xcd + bl sub_080A307C + strh r5, [r4, #0x30] + strh r5, [r4, #0x26] + b _0815F510 + .align 2, 0 +_0815F4B8: .4byte gUnknown_82FA8CC +_0815F4BC: + ldrh r1, [r4, #0x30] + adds r1, #6 + movs r3, #0 + strh r1, [r4, #0x30] + ldr r2, _0815F4E8 + movs r5, #0x30 + ldrsh r0, [r4, r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7f + ble _0815F552 + strh r3, [r4, #0x30] + strh r3, [r4, #0x26] + b _0815F510 + .align 2, 0 +_0815F4E8: .4byte gUnknown_82FA8CC +_0815F4EC: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0815F552 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0xc0 + bl sub_080A307C + movs r0, #0 + strh r0, [r4, #0x30] +_0815F510: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815F552 +_0815F518: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _0815F552 + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x32] + adds r1, #1 + strh r1, [r4, #0x32] + movs r0, #1 + ands r1, r0 + adds r3, r4, #0 + adds r3, #0x3e + lsls r1, r1, #2 + ldrb r2, [r3] + subs r0, #6 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #7 + bne _0815F552 + adds r0, r4, #0 + bl sub_080A34C4 +_0815F552: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0815F428 + + thumb_func_start sub_0815F558 +sub_0815F558: @ 0x0815F558 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_080A46B8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _0815F5A6 + movs r0, #1 + bl sub_080A72B0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + mov sl, r1 + asrs r6, r0, #0x10 + cmp r6, #0 + blt _0815F5A6 + movs r0, #1 + bl sub_080A72B0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + mov sb, r1 + asrs r1, r0, #0x10 + cmp r1, #0 + bge _0815F5B4 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _0815F5B0 + adds r0, r0, r1 + bl sub_080A7324 +_0815F5A6: + mov r0, r8 + bl sub_080A34E4 + b _0815F6B8 + .align 2, 0 +_0815F5B0: .4byte gUnknown_20205AC +_0815F5B4: + ldr r4, _0815F644 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r4 + ldrh r0, [r5, #0x24] + adds r0, #0x18 + strh r0, [r5, #0x24] + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r6, r0, r4 + ldrh r0, [r6, #0x24] + subs r0, #0x18 + strh r0, [r6, #0x24] + strh r7, [r5, #0x2e] + strh r7, [r6, #0x2e] + strh r7, [r5, #0x30] + strh r7, [r6, #0x30] + strh r7, [r5, #0x32] + strh r7, [r6, #0x32] + movs r0, #0x10 + strh r0, [r5, #0x34] + ldr r0, _0815F648 + strh r0, [r6, #0x34] + strh r7, [r5, #0x36] + movs r0, #0x80 + strh r0, [r6, #0x36] + movs r0, #0x18 + strh r0, [r5, #0x38] + strh r0, [r6, #0x38] + mov r0, r8 + strh r0, [r5, #0x3a] + strh r0, [r6, #0x3a] + strh r7, [r5, #0x3c] + strh r7, [r6, #0x3c] + ldr r2, _0815F64C + mov r1, r8 + lsls r3, r1, #2 + adds r0, r3, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #8] + ldr r0, _0815F650 + ldr r1, [r0] + ldr r0, _0815F654 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + adds r7, r4, #0 + mov ip, r3 + cmp r0, #0 + bne _0815F658 + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r2, r6, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + b _0815F66E + .align 2, 0 +_0815F644: .4byte gUnknown_20205AC +_0815F648: .4byte 0x0000FFF0 +_0815F64C: .4byte gUnknown_3005B60 +_0815F650: .4byte gUnknown_2024174 +_0815F654: .4byte gUnknown_20380D7 +_0815F658: + adds r1, r5, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + adds r1, r6, #0 + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] +_0815F66E: + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r4, r2, r7 + ldrb r1, [r4, #1] + movs r3, #0xd + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4, #1] + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r4, r1, r7 + ldrb r0, [r4, #1] + ands r3, r0 + strb r3, [r4, #1] + adds r3, r7, #0 + adds r3, #0x1c + adds r2, r2, r3 + ldr r0, _0815F6C8 + str r0, [r2] + adds r1, r1, r3 + str r0, [r1] + mov r0, ip + add r0, r8 + lsls r0, r0, #3 + ldr r1, _0815F6CC + adds r0, r0, r1 + ldr r1, _0815F6D0 + str r1, [r0] +_0815F6B8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815F6C8: .4byte sub_0815F6FC +_0815F6CC: .4byte gUnknown_3005B60 +_0815F6D0: .4byte sub_0815F6D4 + thumb_func_end sub_0815F558 + + thumb_func_start sub_0815F6D4 +sub_0815F6D4: @ 0x0815F6D4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0815F6F8 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815F6F2 + adds r0, r2, #0 + bl sub_080A34E4 +_0815F6F2: + pop {r0} + bx r0 + .align 2, 0 +_0815F6F8: .4byte gUnknown_3005B60 + thumb_func_end sub_0815F6D4 + + thumb_func_start sub_0815F6FC +sub_0815F6FC: @ 0x0815F6FC + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _0815F746 + movs r0, #0 + strh r0, [r4, #0x30] + ldr r0, _0815F770 + ldr r1, [r0] + ldr r0, _0815F774 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0815F746 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r1, r2, #0x1d + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0815F746: + ldrh r0, [r4, #0x34] + ldrh r1, [r4, #0x36] + adds r0, 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_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815F778 + cmp r0, #1 + beq _0815F790 + b _0815F7CE + .align 2, 0 +_0815F770: .4byte gUnknown_2024174 +_0815F774: .4byte gUnknown_20380D7 +_0815F778: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + bne _0815F7CE + strh r5, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0815F7CE +_0815F790: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0815F7CE + strh r5, [r4, #0x32] + ldrh r0, [r4, #0x38] + subs r0, #2 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0815F7CE + ldr r3, _0815F7D4 + movs r2, #0x3c + ldrsh r1, [r4, r2] + lsls r1, r1, #1 + movs r0, #0x3a + ldrsh r2, [r4, r0] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r3, #8 + adds r1, r1, r3 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + bl sub_080A7324 +_0815F7CE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0815F7D4: .4byte gUnknown_3005B60 + thumb_func_end sub_0815F6FC + + thumb_func_start sub_0815F7D8 +sub_0815F7D8: @ 0x0815F7D8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, _0815F824 + movs r2, #0 + strh r2, [r3, #0xe] + ldr r1, _0815F828 + ldrb r0, [r1] + ldrb r1, [r1] + adds r0, r1, #0 + subs r0, #0x3d + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r1, #0 + cmp r0, #0x1e + bhi _0815F7FC + movs r0, #1 + strh r0, [r3, #0xe] +_0815F7FC: + adds r0, r2, #0 + subs r0, #0x5c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x6c + bhi _0815F80C + movs r0, #2 + strh r0, [r3, #0xe] +_0815F80C: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc8 + bls _0815F818 + movs r0, #3 + strh r0, [r3, #0xe] +_0815F818: + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815F824: .4byte gUnknown_20380BE +_0815F828: .4byte gUnknown_20380BA + thumb_func_end sub_0815F7D8 + + thumb_func_start sub_0815F82C +sub_0815F82C: @ 0x0815F82C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0815F85C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #4 + bls _0815F852 + b _0815FDA0 +_0815F852: + lsls r0, r0, #2 + ldr r1, _0815F860 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815F85C: .4byte gUnknown_3005B60 +_0815F860: .4byte _0815F864 +_0815F864: @ jump table + .4byte _0815F878 @ case 0 + .4byte _0815F92C @ case 1 + .4byte _0815FB20 @ case 2 + .4byte _0815FC40 @ case 3 + .4byte _0815FCC4 @ case 4 +_0815F878: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0815F8C4 + mov r2, r8 + lsls r4, r2, #2 + adds r0, r4, r2 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + ldrh r1, [r6, #0xa] + adds r0, r0, r1 + strh r0, [r6, #0xa] + ldr r0, _0815F8C8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + mov sb, r4 + cmp r0, #0 + bne _0815F8D0 + ldr r2, _0815F8CC + lsls r3, r7, #4 + adds r1, r3, r7 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r6, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r4, [r1, #0x24] + adds r0, r0, r4 + strh r0, [r1, #0x24] + b _0815F8EA + .align 2, 0 +_0815F8C4: .4byte gUnknown_3005B60 +_0815F8C8: .4byte gUnknown_20380D6 +_0815F8CC: .4byte gUnknown_20205AC +_0815F8D0: + ldr r3, _0815F924 + lsls r4, r7, #4 + adds r2, r4, r7 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r6, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + adds r2, r3, #0 + adds r3, r4, #0 +_0815F8EA: + ldr r1, _0815F928 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrb r0, [r4, #0xa] + strh r0, [r4, #0xa] + adds r1, r3, r7 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x24] + ldrh r1, [r1, #0x20] + adds r0, r0, r1 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0xe + adds r0, r0, r1 + movs r1, #0x98 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0815F916 + b _0815FDA0 +_0815F916: + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0815FDA0 + .align 2, 0 +_0815F924: .4byte gUnknown_20205AC +_0815F928: .4byte gUnknown_3005B60 +_0815F92C: + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0815F960 + ldr r0, _0815F958 + ldr r0, [r0] + ldr r0, [r0, #0x18] + ldr r2, [r0, #8] + mov sl, r2 + ldr r3, [r0, #0xc] + mov sb, r3 + ldrh r6, [r0] + ldr r0, _0815F95C + ldrb r0, [r0] + bl sub_080A7BAC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r7, #0 + b _0815FA86 + .align 2, 0 +_0815F958: .4byte gUnknown_2039BD4 +_0815F95C: .4byte gUnknown_20380D6 +_0815F960: + ldr r4, _0815F9C4 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815FA00 + ldr r7, _0815F9C8 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0815F9CC + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + mov sl, r0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #1 + bl sub_0806A058 + mov sb, r0 + ldr r0, _0815F9D0 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _0815F9D4 + lsls r0, r2, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _0815F9D6 + .align 2, 0 +_0815F9C4: .4byte gUnknown_20380D6 +_0815F9C8: .4byte gUnknown_2023D12 +_0815F9CC: .4byte gUnknown_2024190 +_0815F9D0: .4byte gUnknown_2024174 +_0815F9D4: + ldrh r6, [r1, #2] +_0815F9D6: + movs r0, #1 + bl sub_080A5B08 + ldr r2, _0815F9FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x43 + ldrb r0, [r1] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r7, #0 + movs r5, #0x88 + lsls r5, r5, #1 + b _0815FA88 + .align 2, 0 +_0815F9FC: .4byte gUnknown_20205AC +_0815FA00: + ldr r7, _0815FA58 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0815FA5C + adds r0, r0, r5 + movs r1, #0 + bl sub_0806A058 + mov sl, r0 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #1 + bl sub_0806A058 + mov sb, r0 + ldr r0, _0815FA60 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + bne _0815FA64 + lsls r0, r2, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + b _0815FA66 + .align 2, 0 +_0815FA58: .4byte gUnknown_2023D12 +_0815FA5C: .4byte gUnknown_20243E8 +_0815FA60: .4byte gUnknown_2024174 +_0815FA64: + ldrh r6, [r1, #2] +_0815FA66: + movs r0, #1 + bl sub_080A5B08 + ldr r2, _0815FB04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r7, #1 +_0815FA86: + ldr r5, _0815FB08 +_0815FA88: + ldr r0, _0815FB0C + ldrb r0, [r0] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r5, #0x10 + asrs r3, r3, #0x10 + str r0, [sp] + str r4, [sp, #4] + mov r4, sl + str r4, [sp, #8] + mov r0, sb + str r0, [sp, #0xc] + ldr r4, _0815FB10 + ldrb r0, [r4] + str r0, [sp, #0x10] + movs r0, #0 + str r0, [sp, #0x14] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0 + bl sub_080A7C5C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0815FB14 + ldr r1, [r0] + ldrb r0, [r4] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _0815FAF2 + ldr r1, _0815FB04 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r0, r1 + ldr r3, _0815FB18 + movs r1, #0x10 + movs r2, #6 + bl sub_0806F410 +_0815FAF2: + ldr r0, _0815FB1C + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + strh r5, [r1, #0x26] + b _0815FCB6 + .align 2, 0 +_0815FB04: .4byte gUnknown_20205AC +_0815FB08: .4byte 0x0000FFE0 +_0815FB0C: .4byte gUnknown_20380D7 +_0815FB10: .4byte gUnknown_20380D6 +_0815FB14: .4byte gUnknown_2024174 +_0815FB18: .4byte 0x00007FFF +_0815FB1C: .4byte gUnknown_3005B60 +_0815FB20: + ldr r1, _0815FB6C + mov r0, r8 + lsls r4, r0, #2 + adds r0, r4, r0 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r0, [r6, #0x26] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + ldrh r2, [r6, #0xa] + adds r0, r0, r2 + strh r0, [r6, #0xa] + ldr r0, _0815FB70 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + mov sb, r4 + cmp r0, #0 + bne _0815FB78 + ldr r3, _0815FB74 + lsls r4, r5, #4 + adds r2, r4, r5 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r6, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + adds r2, r3, #0 + adds r3, r4, #0 + b _0815FB8E + .align 2, 0 +_0815FB6C: .4byte gUnknown_3005B60 +_0815FB70: .4byte gUnknown_20380D6 +_0815FB74: .4byte gUnknown_20205AC +_0815FB78: + ldr r2, _0815FBDC + lsls r3, r5, #4 + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r6, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r4, [r1, #0x24] + adds r0, r0, r4 + strh r0, [r1, #0x24] +_0815FB8E: + ldr r1, _0815FBE0 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrb r0, [r6, #0xa] + strh r0, [r6, #0xa] + adds r1, r3, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1, #0x24] + ldrh r1, [r1, #0x20] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r1, #0x24 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0815FC0E + ldr r0, _0815FBE4 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815FBEC + lsls r4, r5, #0x10 + asrs r4, r4, #0x10 + ldr r0, _0815FBE8 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bge _0815FC0E + b _0815FC02 + .align 2, 0 +_0815FBDC: .4byte gUnknown_20205AC +_0815FBE0: .4byte gUnknown_3005B60 +_0815FBE4: .4byte gUnknown_20380D6 +_0815FBE8: .4byte gUnknown_20380D7 +_0815FBEC: + lsls r4, r5, #0x10 + asrs r4, r4, #0x10 + ldr r0, _0815FC30 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + ble _0815FC0E +_0815FC02: + ldrh r0, [r6, #0x24] + adds r0, #1 + strh r0, [r6, #0x24] + ldr r1, _0815FC34 + ldr r0, _0815FC38 + strh r0, [r1, #0xe] +_0815FC0E: + lsls r0, r5, #0x10 + movs r2, #0x80 + lsls r2, r2, #0xe + adds r0, r0, r2 + movs r1, #0x98 + lsls r1, r1, #0x11 + cmp r0, r1 + bhi _0815FC20 + b _0815FDA0 +_0815FC20: + ldr r0, _0815FC3C + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1, #0xa] + b _0815FCB6 + .align 2, 0 +_0815FC30: .4byte gUnknown_20380D7 +_0815FC34: .4byte gUnknown_20380BE +_0815FC38: .4byte 0x0000FFFF +_0815FC3C: .4byte gUnknown_3005B60 +_0815FC40: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0815FC8C + mov r3, r8 + lsls r4, r3, #2 + adds r0, r4, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #0x26] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r5, _0815FC90 + adds r0, r0, r5 + bl sub_080A7ED8 + ldr r0, _0815FC94 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + mov sb, r4 + cmp r0, #0 + bne _0815FC98 + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r0, [r1, #0x20] + rsbs r0, r0, #0 + subs r0, #0x20 + strh r0, [r1, #0x24] + b _0815FCAC + .align 2, 0 +_0815FC8C: .4byte gUnknown_3005B60 +_0815FC90: .4byte gUnknown_20205AC +_0815FC94: .4byte gUnknown_20380D6 +_0815FC98: + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r2, [r0, #0x20] + movs r4, #0x88 + lsls r4, r4, #1 + adds r1, r4, #0 + subs r1, r1, r2 + strh r1, [r0, #0x24] +_0815FCAC: + ldr r0, _0815FCC0 + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 +_0815FCB6: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0815FDA0 + .align 2, 0 +_0815FCC0: .4byte gUnknown_3005B60 +_0815FCC4: + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _0815FD38 + mov r0, r8 + lsls r4, r0, #2 + adds r0, r4, r0 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + ldrh r3, [r2, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0xa] + ldr r0, _0815FD3C + mov sl, r0 + ldrb r0, [r0] + str r2, [sp, #0x18] + bl sub_080A62F8 + lsls r0, r0, #0x18 + mov sb, r4 + ldr r2, [sp, #0x18] + cmp r0, #0 + bne _0815FD44 + ldr r1, _0815FD40 + lsls r5, r7, #4 + adds r0, r5, r7 + lsls r0, r0, #2 + adds r6, r0, r1 + ldrh r0, [r2, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r6, #0x24] + adds r0, r0, r1 + strh r0, [r6, #0x24] + movs r2, #0x24 + ldrsh r4, [r6, r2] + movs r3, #0x20 + ldrsh r0, [r6, r3] + adds r4, r4, r0 + mov r1, sl + ldrb r0, [r1] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r5, #0 + cmp r4, r0 + blt _0815FD7C + movs r2, #0 + strh r2, [r6, #0x24] + b _0815FD7C + .align 2, 0 +_0815FD38: .4byte gUnknown_3005B60 +_0815FD3C: .4byte gUnknown_20380D6 +_0815FD40: .4byte gUnknown_20205AC +_0815FD44: + ldr r1, _0815FDB0 + lsls r5, r7, #4 + adds r0, r5, r7 + lsls r0, r0, #2 + adds r6, r0, r1 + ldrh r1, [r2, #0xa] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r6, #0x24] + subs r0, r0, r1 + strh r0, [r6, #0x24] + movs r3, #0x24 + ldrsh r4, [r6, r3] + movs r1, #0x20 + ldrsh r0, [r6, r1] + adds r4, r4, r0 + mov r2, sl + ldrb r0, [r2] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r5, #0 + cmp r4, r0 + bgt _0815FD7C + movs r4, #0 + strh r4, [r6, #0x24] +_0815FD7C: + ldr r1, _0815FDB4 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xa] + strh r1, [r0, #0xa] + ldr r1, _0815FDB0 + adds r0, r3, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0815FDA0 + mov r0, r8 + bl sub_080A34E4 +_0815FDA0: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0815FDB0: .4byte gUnknown_20205AC +_0815FDB4: .4byte gUnknown_3005B60 + thumb_func_end sub_0815F82C + + thumb_func_start sub_0815FDB8 +sub_0815FDB8: @ 0x0815FDB8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0815FDCA + cmp r0, #1 + beq _0815FE72 + b _0815FEF4 +_0815FDCA: + ldr r0, _0815FE50 + movs r2, #0xe + ldrsh r1, [r0, r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0815FE64 + movs r0, #0x3f + bl sub_080A4A40 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x7a + bl sub_080A307C + ldr r0, _0815FE54 + ldrb r0, [r0] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + strh r0, [r4, #0x22] + ldr r0, _0815FE58 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _0815FE5C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0815FEF4 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815FEF4 + movs r0, #1 + bl sub_080A5B08 + ldr r2, _0815FE60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x43 + ldrb r0, [r1] + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x43 + strb r0, [r1] + b _0815FEF4 + .align 2, 0 +_0815FE50: .4byte gUnknown_20380BE +_0815FE54: .4byte gUnknown_20380D7 +_0815FE58: .4byte 0x0000FFE0 +_0815FE5C: .4byte gUnknown_20380D6 +_0815FE60: .4byte gUnknown_20205AC +_0815FE64: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _0815FEF4 +_0815FE72: + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r2, [r4, #0x30] + adds r0, r2, #5 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + ble _0815FEA6 + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + adds r0, r2, #0 + subs r0, #0x7a + strh r0, [r4, #0x30] +_0815FEA6: + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldr r0, _0815FED0 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0815FED4 + ldrh r2, [r4, #0x32] + lsls r1, r2, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 + strh r0, [r4, #0x24] + adds r1, r2, #0 + b _0815FEE0 + .align 2, 0 +_0815FED0: .4byte gUnknown_20380D6 +_0815FED4: + ldrh r1, [r4, #0x32] + lsls r0, r1, #0x10 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x24] + adds r0, r0, r2 + strh r0, [r4, #0x24] +_0815FEE0: + movs r0, #0xff + ands r0, r1 + strh r0, [r4, #0x32] + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #2 + bne _0815FEF4 + adds r0, r4, #0 + bl sub_080A34C4 +_0815FEF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0815FDB8 + + thumb_func_start sub_0815FEFC +sub_0815FEFC: @ 0x0815FEFC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0815FF24 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0x26 + ldrsh r0, [r0, r2] + adds r3, r1, #0 + cmp r0, #4 + bls _0815FF18 + b _0816006A +_0815FF18: + lsls r0, r0, #2 + ldr r1, _0815FF28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815FF24: .4byte gUnknown_3005B60 +_0815FF28: .4byte _0815FF2C +_0815FF2C: @ jump table + .4byte _0815FF40 @ case 0 + .4byte _0815FF90 @ case 1 + .4byte _0815FFEC @ case 2 + .4byte _08160004 @ case 3 + .4byte _0816006A @ case 4 +_0815FF40: + ldr r0, _0815FF84 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r0, _0815FF88 + ldrb r0, [r0] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + ldr r1, _0815FF8C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r0, #6 + strh r0, [r1, #8] + cmp r5, r2 + ble _0815FF76 + rsbs r0, r0, #0 + strh r0, [r1, #8] +_0815FF76: + strh r5, [r1, #0xa] + strh r2, [r1, #0xc] + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _08160088 + .align 2, 0 +_0815FF84: .4byte gUnknown_20380D6 +_0815FF88: .4byte gUnknown_20380D7 +_0815FF8C: .4byte gUnknown_3005B60 +_0815FF90: + ldr r1, _0815FFCC + ldr r0, _0815FFD0 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r1, _0815FFD4 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r3 + ldrh r0, [r2, #8] + ldrh r3, [r1, #0x24] + adds r0, r0, r3 + strh r0, [r1, #0x24] + movs r3, #8 + ldrsh r0, [r2, r3] + cmp r0, #0 + ble _0815FFD8 + movs r3, #0x20 + ldrsh r0, [r1, r3] + movs r3, #0x24 + ldrsh r1, [r1, r3] + adds r0, r0, r1 + movs r3, #0xc + ldrsh r1, [r2, r3] + b _0816005E + .align 2, 0 +_0815FFCC: .4byte gUnknown_2023E88 +_0815FFD0: .4byte gUnknown_20380D6 +_0815FFD4: .4byte gUnknown_20205AC +_0815FFD8: + movs r3, #0x20 + ldrsh r0, [r1, r3] + movs r3, #0x24 + ldrsh r1, [r1, r3] + adds r0, r0, r1 + movs r3, #0xc + ldrsh r1, [r2, r3] + cmp r0, r1 + bgt _08160088 + b _08160062 +_0815FFEC: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r2, #8 + ldrsh r1, [r0, r2] + rsbs r1, r1, #0 + strh r1, [r0, #8] + ldrh r1, [r0, #0x26] + adds r1, #1 + strh r1, [r0, #0x26] + b _08160088 +_08160004: + ldr r1, _08160044 + ldr r0, _08160048 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r1, _0816004C + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r3 + ldrh r0, [r2, #8] + ldrh r3, [r1, #0x24] + adds r0, r0, r3 + strh r0, [r1, #0x24] + movs r3, #8 + ldrsh r0, [r2, r3] + cmp r0, #0 + bge _08160050 + movs r3, #0x20 + ldrsh r0, [r1, r3] + movs r3, #0x24 + ldrsh r1, [r1, r3] + adds r0, r0, r1 + movs r3, #0xa + ldrsh r1, [r2, r3] + cmp r0, r1 + bgt _08160088 + b _08160062 + .align 2, 0 +_08160044: .4byte gUnknown_2023E88 +_08160048: .4byte gUnknown_20380D6 +_0816004C: .4byte gUnknown_20205AC +_08160050: + movs r3, #0x20 + ldrsh r0, [r1, r3] + movs r3, #0x24 + ldrsh r1, [r1, r3] + adds r0, r0, r1 + movs r3, #0xa + ldrsh r1, [r2, r3] +_0816005E: + cmp r0, r1 + blt _08160088 +_08160062: + ldrh r0, [r2, #0x26] + adds r0, #1 + strh r0, [r2, #0x26] + b _08160088 +_0816006A: + ldr r1, _08160090 + ldr r0, _08160094 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r1, _08160098 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x24] + adds r0, r4, #0 + bl sub_080A34E4 +_08160088: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08160090: .4byte gUnknown_2023E88 +_08160094: .4byte gUnknown_20380D6 +_08160098: .4byte gUnknown_20205AC + thumb_func_end sub_0815FEFC + + thumb_func_start sub_0816009C +sub_0816009C: @ 0x0816009C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08160104 + adds r4, r1, r0 + movs r0, #0 + bl sub_080A5B08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0xe] + ldr r0, _08160108 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r2, #1 + rsbs r2, r2, #0 + adds r1, r2, #0 + cmp r0, #0 + bne _081600D0 + movs r1, #1 +_081600D0: + strh r1, [r4, #0x10] + ldr r2, _0816010C + movs r0, #0xe + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x14] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x20] + strh r0, [r4, #0x12] + strh r5, [r4, #0x1a] + strh r5, [r4, #0x1e] + movs r0, #1 + strh r0, [r4, #0x1c] + strh r5, [r4, #0x20] + ldr r0, _08160110 + str r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08160104: .4byte gUnknown_3005B60 +_08160108: .4byte gUnknown_20380D6 +_0816010C: .4byte gUnknown_20205AC +_08160110: .4byte sub_08160114 + thumb_func_end sub_0816009C + + thumb_func_start sub_08160114 +sub_08160114: @ 0x08160114 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _08160138 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _081601BC + cmp r0, #1 + bgt _0816013C + cmp r0, #0 + beq _08160142 + b _08160212 + .align 2, 0 +_08160138: .4byte gUnknown_3005B60 +_0816013C: + cmp r0, #2 + beq _0816020C + b _08160212 +_08160142: + ldrh r0, [r4, #0x1e] + adds r0, #8 + movs r2, #0xff + ands r0, r2 + strh r0, [r4, #0x1e] + ldr r5, _081601B4 + movs r6, #0xe + ldrsh r0, [r4, r6] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r3, _081601B8 + movs r6, #0x1e + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 + strh r0, [r1, #0x24] + ldrh r0, [r4, #0x1a] + adds r0, #2 + ands r0, r2 + strh r0, [r4, #0x1a] + movs r1, #0xe + ldrsh r0, [r4, r1] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r5 + movs r6, #0x1a + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x13 + ldrh r1, [r4, #0x10] + muls r0, r1, r0 + ldrh r1, [r4, #0x12] + adds r0, r0, r1 + strh r0, [r2, #0x20] + movs r6, #0x1a + ldrsh r0, [r4, r6] + cmp r0, #0 + bne _08160212 + movs r0, #0xe + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r4, #0x12] + strh r1, [r0, #0x20] + b _081601FC + .align 2, 0 +_081601B4: .4byte gUnknown_20205AC +_081601B8: .4byte gUnknown_82FA8CC +_081601BC: + ldrh r0, [r4, #0x1e] + adds r0, #8 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x1e] + ldr r3, _08160204 + movs r1, #0xe + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, _08160208 + movs r5, #0x1e + ldrsh r0, [r4, r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x15 + strh r0, [r1, #0x24] + movs r6, #0x1e + ldrsh r2, [r4, r6] + cmp r2, #0 + bne _08160212 + movs r1, #0xe + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + strh r2, [r1, #0x24] +_081601FC: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08160212 + .align 2, 0 +_08160204: .4byte gUnknown_20205AC +_08160208: .4byte gUnknown_82FA8CC +_0816020C: + adds r0, r2, #0 + bl sub_080A34E4 +_08160212: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08160114 + + thumb_func_start sub_08160218 +sub_08160218: @ 0x08160218 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0816026C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0816025E + adds r0, r4, #0 + bl sub_080A34C4 +_0816025E: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816026C: .4byte gUnknown_20380D7 + thumb_func_end sub_08160218 + + thumb_func_start sub_08160270 +sub_08160270: @ 0x08160270 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081602A8 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081602B4 + ldr r2, _081602AC + ldrh r0, [r4, #0x20] + ldrh r1, [r2] + subs r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + ldr r0, _081602B0 + strh r0, [r4, #0x2e] + movs r0, #0xc0 + strh r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + b _081602CE + .align 2, 0 +_081602A8: .4byte gUnknown_20380D7 +_081602AC: .4byte gUnknown_20380BE +_081602B0: .4byte 0x0000FFF5 +_081602B4: + movs r0, #0xb + strh r0, [r4, #0x2e] + movs r0, #0xc0 + strh r0, [r4, #0x30] + ldr r1, _081602D8 + ldrh r0, [r1] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] +_081602CE: + ldr r0, _081602DC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081602D8: .4byte gUnknown_20380BE +_081602DC: .4byte sub_08160218 + thumb_func_end sub_08160270 + + thumb_func_start sub_081602E0 +sub_081602E0: @ 0x081602E0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08160324 + ldrb r0, [r4] + movs r1, #2 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x20] + ldrb r0, [r4] + movs r1, #2 + bl sub_080A7EE4 + strh r0, [r5, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xf + bgt _0816030A + movs r0, #0x10 + strh r0, [r5, #0x22] +_0816030A: + movs r0, #0 + strh r0, [r5, #0x3a] + movs r1, #0x10 + strh r1, [r5, #0x3c] + ldr r0, _08160328 + str r0, [r5, #0x1c] + lsls r1, r1, #8 + movs r0, #0x52 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08160324: .4byte gUnknown_20380D6 +_08160328: .4byte sub_0816032C + thumb_func_end sub_081602E0 + + thumb_func_start sub_0816032C +sub_0816032C: @ 0x0816032C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _081603A4 + cmp r1, #1 + bgt _08160342 + cmp r1, #0 + beq _0816034C + b _08160420 +_08160342: + cmp r1, #2 + beq _081603BA + cmp r1, #3 + beq _0816041A + b _08160420 +_0816034C: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08160420 + strh r1, [r4, #0x2e] + ldrh r1, [r4, #0x30] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08160376 + ldrh r2, [r4, #0x3a] + movs r3, #0x3a + ldrsh r0, [r4, r3] + cmp r0, #0xf + bgt _08160384 + adds r0, r2, #1 + strh r0, [r4, #0x3a] + b _08160384 +_08160376: + ldrh r2, [r4, #0x3c] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08160384 + subs r0, r2, #1 + strh r0, [r4, #0x3c] +_08160384: + adds r0, r1, #1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x3c] + lsls r1, r1, #8 + ldrh r0, [r4, #0x3a] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08160420 + b _08160412 +_081603A4: + ldrh r0, [r4, #0x2e] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08160420 + strh r1, [r4, #0x2e] + strh r1, [r4, #0x30] + b _08160412 +_081603BA: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08160420 + movs r0, #0 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x30] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081603E6 + ldrh r2, [r4, #0x3a] + movs r3, #0x3a + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _081603F4 + subs r0, r2, #1 + strh r0, [r4, #0x3a] + b _081603F4 +_081603E6: + ldrh r2, [r4, #0x3c] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r0, #0xf + bgt _081603F4 + adds r0, r2, #1 + strh r0, [r4, #0x3c] +_081603F4: + adds r0, r1, #1 + strh r0, [r4, #0x30] + ldrh r1, [r4, #0x3c] + lsls r1, r1, #8 + ldrh r0, [r4, #0x3a] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08160420 +_08160412: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + b _08160420 +_0816041A: + adds r0, r4, #0 + bl sub_080A6014 +_08160420: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816032C + + thumb_func_start sub_08160428 +sub_08160428: @ 0x08160428 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08160444 + movs r0, #0 + strh r0, [r2, #0xe] + ldr r0, _08160448 + ldrh r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _0816044C + movs r0, #1 + b _0816046E + .align 2, 0 +_08160444: .4byte gUnknown_20380BE +_08160448: .4byte gUnknown_20380BC +_0816044C: + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _08160458 + movs r0, #2 + b _0816046E +_08160458: + movs r0, #0x18 + ands r0, r1 + cmp r0, #0 + beq _08160464 + movs r0, #3 + b _0816046E +_08160464: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08160470 + movs r0, #4 +_0816046E: + strh r0, [r2, #0xe] +_08160470: + adds r0, r3, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08160428 + + thumb_func_start sub_0816047C +sub_0816047C: @ 0x0816047C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081604B4 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _081604B8 + ldrb r0, [r0] + bl sub_080A5B08 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + strh r1, [r4, #0x26] + ldr r2, _081604BC + adds r0, r4, #0 + bl sub_080A75C4 + ldr r0, _081604C0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081604B4: .4byte gUnknown_3005B60 +_081604B8: .4byte gUnknown_20380BE +_081604BC: .4byte gUnknown_85AD7D0 +_081604C0: .4byte sub_081604C4 + thumb_func_end sub_0816047C + + thumb_func_start sub_081604C4 +sub_081604C4: @ 0x081604C4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r2, _0816051C + adds r3, r0, r2 + ldrh r0, [r3, #8] + adds r1, r0, #1 + movs r5, #0 + strh r1, [r3, #8] + subs r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r6, r2, #0 + cmp r0, #0x16 + bhi _08160528 + ldrh r0, [r3, #0xa] + adds r0, #1 + strh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #2 + ble _08160538 + strh r5, [r3, #0xa] + ldrh r0, [r3, #0xc] + adds r0, #1 + strh r0, [r3, #0xc] + movs r5, #1 + ands r0, r5 + cmp r0, #0 + bne _08160528 + ldr r2, _08160520 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _08160524 + strh r1, [r0, #0x24] + b _08160538 + .align 2, 0 +_0816051C: .4byte gUnknown_3005B60 +_08160520: .4byte gUnknown_20205AC +_08160524: .4byte 0x0000FFFF +_08160528: + ldr r2, _08160558 + movs r0, #0x26 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x24] +_08160538: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r6 + bl sub_080A75FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08160550 + adds r0, r4, #0 + bl sub_080A34E4 +_08160550: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08160558: .4byte gUnknown_20205AC + thumb_func_end sub_081604C4 + + thumb_func_start sub_0816055C +sub_0816055C: @ 0x0816055C + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816055C + + thumb_func_start sub_08160570 +sub_08160570: @ 0x08160570 + push {lr} + sub sp, #4 + bl sub_080987DC + ldr r0, _08160598 + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_08160598: .4byte sub_0816059C + thumb_func_end sub_08160570 + + thumb_func_start sub_0816059C +sub_0816059C: @ 0x0816059C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081605C8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081605C0 + ldr r0, _081605CC + bl sub_08000540 + ldr r1, _081605D0 + ldr r0, _081605D4 + str r0, [r1] + adds r0, r4, #0 + bl sub_080A8964 +_081605C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081605C8: .4byte gUnknown_2037C74 +_081605CC: .4byte sub_081605D8 +_081605D0: .4byte gUnknown_3005B0C +_081605D4: .4byte sub_080AEA64 + thumb_func_end sub_0816059C + + thumb_func_start sub_081605D8 +sub_081605D8: @ 0x081605D8 + push {r4, r5, r6, lr} + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + bl sub_08199640 + ldr r6, _08160658 + movs r0, #0x8c + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r6] + ldr r1, _0816065C + ldrh r1, [r1] + adds r0, #0x44 + movs r5, #0 + strb r1, [r0] + ldr r0, _08160660 + bl sub_080006F0 + bl sub_08160724 + movs r0, #0 + bl sub_081D1E40 + ldr r4, _08160664 + movs r0, #0 + strh r5, [r4] + strh r5, [r4, #2] + strb r0, [r4, #4] + bl sub_08161198 + ldr r0, _08160668 + bl sub_08008210 + ldr r0, _0816066C + bl sub_0800845C + bl sub_08160FD0 + ldr r0, _08160670 + ldrh r1, [r4] + ldrh r2, [r4, #2] + bl sub_081AE25C + ldr r1, [r6] + movs r2, #0x89 + lsls r2, r2, #1 + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0 + movs r1, #0 + movs r2, #2 + bl sub_080A1238 + ldr r0, _08160674 + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08160658: .4byte gUnknown_203B900 +_0816065C: .4byte gUnknown_2037280 +_08160660: .4byte sub_0816055C +_08160664: .4byte gUnknown_203B904 +_08160668: .4byte gUnknown_85ADAF4 +_0816066C: .4byte gUnknown_85ADAFC +_08160670: .4byte gUnknown_3006050 +_08160674: .4byte sub_08160764 + thumb_func_end sub_081605D8 + + thumb_func_start sub_08160678 +sub_08160678: @ 0x08160678 + push {r4, r5, lr} + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + bl sub_08199640 + ldr r5, _08160700 + movs r0, #0x8c + lsls r0, r0, #1 + bl sub_08000BDC + str r0, [r5] + movs r1, #0x1c + strb r1, [r0] + ldr r0, [r5] + ldr r1, _08160704 + ldrh r1, [r1] + adds r0, #0x44 + strb r1, [r0] + ldr r0, [r5] + ldr r1, _08160708 + ldrh r1, [r1] + adds r0, #0x45 + strb r1, [r0] + ldr r0, _0816070C + bl sub_080006F0 + bl sub_08160724 + ldr r4, _08160710 + ldrb r0, [r4, #4] + bl sub_081D1E40 + bl sub_08161198 + ldr r0, _08160714 + bl sub_08008210 + ldr r0, _08160718 + bl sub_0800845C + bl sub_08160FD0 + ldr r0, _0816071C + ldrh r1, [r4] + ldrh r2, [r4, #2] + bl sub_081AE25C + ldr r1, [r5] + movs r2, #0x89 + lsls r2, r2, #1 + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0 + movs r1, #0 + movs r2, #2 + bl sub_080A1238 + ldr r0, _08160720 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08160700: .4byte gUnknown_203B900 +_08160704: .4byte gUnknown_2037280 +_08160708: .4byte gUnknown_2037282 +_0816070C: .4byte sub_0816055C +_08160710: .4byte gUnknown_203B904 +_08160714: .4byte gUnknown_85ADAF4 +_08160718: .4byte gUnknown_85ADAFC +_0816071C: .4byte gUnknown_3006050 +_08160720: .4byte sub_08160764 + thumb_func_end sub_08160678 + + thumb_func_start sub_08160724 +sub_08160724: @ 0x08160724 + push {lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08160760 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + bl sub_08121E00 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08160760: .4byte gUnknown_85ADB6C + thumb_func_end sub_08160724 + + thumb_func_start sub_08160764 +sub_08160764: @ 0x08160764 + push {lr} + bl sub_081607A0 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08160764 + + thumb_func_start sub_08160784 +sub_08160784: @ 0x08160784 + push {r4, lr} + adds r1, r0, #0 + ldr r4, _0816079C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + bl sub_081D2208 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816079C: .4byte gUnknown_2021C7C + thumb_func_end sub_08160784 + + thumb_func_start sub_081607A0 +sub_081607A0: @ 0x081607A0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _081607BC + ldr r0, [r1] + ldrb r0, [r0] + adds r7, r1, #0 + cmp r0, #0x21 + bls _081607B2 + b _08160DB6 +_081607B2: + lsls r0, r0, #2 + ldr r1, _081607C0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081607BC: .4byte gUnknown_203B900 +_081607C0: .4byte _081607C4 +_081607C4: @ jump table + .4byte _0816084C @ case 0 + .4byte _08160866 @ case 1 + .4byte _08160880 @ case 2 + .4byte _08160888 @ case 3 + .4byte _08160890 @ case 4 + .4byte _08160898 @ case 5 + .4byte _081608B4 @ case 6 + .4byte _08160DB6 @ case 7 + .4byte _081608BC @ case 8 + .4byte _081608DC @ case 9 + .4byte _08160DB6 @ case 10 + .4byte _08160DB6 @ case 11 + .4byte _08160978 @ case 12 + .4byte _08160998 @ case 13 + .4byte _08160BEC @ case 14 + .4byte _08160C0C @ case 15 + .4byte _081609EC @ case 16 + .4byte _08160A04 @ case 17 + .4byte _08160A20 @ case 18 + .4byte _08160B50 @ case 19 + .4byte _08160B7C @ case 20 + .4byte _08160BCC @ case 21 + .4byte _08160BDA @ case 22 + .4byte _08160DB6 @ case 23 + .4byte _08160A60 @ case 24 + .4byte _08160A94 @ case 25 + .4byte _08160AB4 @ case 26 + .4byte _08160B10 @ case 27 + .4byte _08160C30 @ case 28 + .4byte _08160C7C @ case 29 + .4byte _08160D38 @ case 30 + .4byte _08160D64 @ case 31 + .4byte _08160D84 @ case 32 + .4byte _08160D9C @ case 33 +_0816084C: + ldr r1, [r7] + ldrb r0, [r1] + adds r0, #1 + movs r4, #0 + strb r0, [r1] + movs r0, #0 + bl sub_08160E08 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + b _08160BE2 +_08160866: + ldr r0, _0816087C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08160874 + b _08160DB6 +_08160874: + ldr r1, [r7] + movs r0, #4 + b _08160DB4 + .align 2, 0 +_0816087C: .4byte gUnknown_2037C74 +_08160880: + ldr r1, [r7] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 +_08160888: + movs r0, #0 + bl sub_08160E08 + b _0816089E +_08160890: + movs r0, #0 + bl sub_08160E70 + b _08160DB6 +_08160898: + movs r0, #0 + bl sub_08160F94 +_0816089E: + ldr r0, _081608B0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_081610C4 + b _08160DB6 + .align 2, 0 +_081608B0: .4byte gUnknown_203B900 +_081608B4: + movs r0, #1 + bl sub_08160E70 + b _08160DB6 +_081608BC: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081608C8 + b _08160DB6 +_081608C8: + bl sub_081D2264 + ldr r0, _081608D8 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_081608D8: .4byte gUnknown_203B900 +_081608DC: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bne _0816093E + ldr r5, _08160924 + ldr r0, [r5] + adds r0, #0x44 + ldrb r1, [r0] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _08160928 + adds r4, r4, r0 + bl sub_08160F74 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_08068C6C + lsls r0, r0, #0x10 + ldr r1, _0816092C + cmp r0, r1 + beq _08160938 + ldr r0, _08160930 + bl sub_08160784 + ldr r1, _08160934 + movs r0, #1 + strh r0, [r1] + ldr r1, [r5] + movs r0, #0x1f + b _08160DB4 + .align 2, 0 +_08160924: .4byte gUnknown_203B900 +_08160928: .4byte gUnknown_2024190 +_0816092C: .4byte 0xFFFF0000 +_08160930: .4byte gUnknown_85AD9C0 +_08160934: .4byte gUnknown_2037280 +_08160938: + ldr r1, [r5] + movs r0, #0x10 + b _08160DB4 +_0816093E: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0816094C + cmp r1, #1 + beq _0816094C + b _08160DB6 +_0816094C: + ldr r0, _0816095C + ldrb r0, [r0, #4] + cmp r0, #0 + bne _08160964 + ldr r0, _08160960 + ldr r1, [r0] + movs r0, #3 + b _08160DB4 + .align 2, 0 +_0816095C: .4byte gUnknown_203B904 +_08160960: .4byte gUnknown_203B900 +_08160964: + cmp r0, #1 + beq _0816096A + b _08160DB6 +_0816096A: + ldr r0, _08160974 + ldr r1, [r0] + movs r0, #5 + b _08160DB4 + .align 2, 0 +_08160974: .4byte gUnknown_203B900 +_08160978: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08160984 + b _08160DB6 +_08160984: + bl sub_081D2264 + ldr r0, _08160994 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_08160994: .4byte gUnknown_203B900 +_08160998: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bne _081609B0 + ldr r0, _081609AC + strh r1, [r0] + b _08160DAE + .align 2, 0 +_081609AC: .4byte gUnknown_2037280 +_081609B0: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081609BE + cmp r1, #1 + beq _081609BE + b _08160DB6 +_081609BE: + ldr r0, _081609D0 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _081609D8 + ldr r0, _081609D4 + ldr r1, [r0] + movs r0, #3 + b _08160DB4 + .align 2, 0 +_081609D0: .4byte gUnknown_203B904 +_081609D4: .4byte gUnknown_203B900 +_081609D8: + cmp r0, #1 + beq _081609DE + b _08160DB6 +_081609DE: + ldr r0, _081609E8 + ldr r1, [r0] + movs r0, #5 + b _08160DB4 + .align 2, 0 +_081609E8: .4byte gUnknown_203B900 +_081609EC: + ldr r0, _081609FC + bl sub_08160784 + ldr r0, _08160A00 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_081609FC: .4byte gUnknown_85AD9D4 +_08160A00: .4byte gUnknown_203B900 +_08160A04: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08160A10 + b _08160DB6 +_08160A10: + bl sub_081D2264 + ldr r0, _08160A1C + ldr r1, [r0] + movs r0, #0x12 + b _08160DB4 + .align 2, 0 +_08160A1C: .4byte gUnknown_203B900 +_08160A20: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bne _08160A44 + ldr r0, _08160A3C + bl sub_08160784 + ldr r0, _08160A40 + ldr r1, [r0] + movs r0, #0x13 + b _08160DB4 + .align 2, 0 +_08160A3C: .4byte gUnknown_85ADAC9 +_08160A40: .4byte gUnknown_203B900 +_08160A44: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08160A52 + cmp r1, #1 + beq _08160A52 + b _08160DB6 +_08160A52: + ldr r0, _08160A5C + ldr r1, [r0] + movs r0, #0x18 + b _08160DB4 + .align 2, 0 +_08160A5C: .4byte gUnknown_203B900 +_08160A60: + ldr r4, _08160A84 + bl sub_08160F74 + adds r1, r0, #0 + lsls r1, r1, #3 + ldr r0, _08160A88 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _08160A8C + bl sub_08160784 + ldr r0, _08160A90 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_08160A84: .4byte gUnknown_2021C54 +_08160A88: .4byte gUnknown_82EACC4 +_08160A8C: .4byte gUnknown_85ADA27 +_08160A90: .4byte gUnknown_203B900 +_08160A94: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08160AA0 + b _08160DB6 +_08160AA0: + bl sub_081D2264 + ldr r0, _08160AB0 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_08160AB0: .4byte gUnknown_203B900 +_08160AB4: + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + bne _08160ACC + ldr r0, _08160AC8 + ldr r1, [r0] + movs r0, #0x1b + b _08160DB4 + .align 2, 0 +_08160AC8: .4byte gUnknown_203B900 +_08160ACC: + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08160ADA + cmp r1, #1 + beq _08160ADA + b _08160DB6 +_08160ADA: + ldr r0, _08160AF0 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _08160AF8 + ldr r2, _08160AF4 + ldr r1, [r2] + movs r0, #3 + strb r0, [r1] + adds r7, r2, #0 + b _08160B04 + .align 2, 0 +_08160AF0: .4byte gUnknown_203B904 +_08160AF4: .4byte gUnknown_203B900 +_08160AF8: + ldr r7, _08160B0C + cmp r0, #1 + bne _08160B04 + ldr r1, [r7] + movs r0, #5 + strb r0, [r1] +_08160B04: + ldr r1, [r7] + movs r0, #0x10 + b _08160DB4 + .align 2, 0 +_08160B0C: .4byte gUnknown_203B900 +_08160B10: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08160B1C + b _08160DB6 +_08160B1C: + movs r0, #3 + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _08160B34 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _08160B3C + ldr r0, _08160B38 + ldr r1, [r0] + movs r0, #3 + b _08160DB4 + .align 2, 0 +_08160B34: .4byte gUnknown_203B904 +_08160B38: .4byte gUnknown_203B900 +_08160B3C: + cmp r0, #1 + beq _08160B42 + b _08160DB6 +_08160B42: + ldr r0, _08160B4C + ldr r1, [r0] + movs r0, #5 + b _08160DB4 + .align 2, 0 +_08160B4C: .4byte gUnknown_203B900 +_08160B50: + bl sub_081D2250 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _08160B5E + b _08160DB6 +_08160B5E: + ldr r0, _08160B78 + ldr r1, [r0] + movs r0, #0x14 + strb r0, [r1] + subs r0, #0x15 + str r2, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08160DB6 + .align 2, 0 +_08160B78: .4byte gUnknown_203B900 +_08160B7C: + ldr r0, _08160BB8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08160B8A + b _08160DB6 +_08160B8A: + bl sub_08160F74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _08160BBC + ldr r1, _08160BC0 + ldr r1, [r1] + adds r1, #0x44 + ldrb r1, [r1] + ldr r2, _08160BC4 + ldrb r2, [r2] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08160BC8 + str r0, [sp] + adds r0, r4, #0 + bl sub_081BF3CC + bl sub_08160DC8 + b _08160DB6 + .align 2, 0 +_08160BB8: .4byte gUnknown_2037C74 +_08160BBC: .4byte gUnknown_2024190 +_08160BC0: .4byte gUnknown_203B900 +_08160BC4: .4byte gUnknown_202418D +_08160BC8: .4byte sub_08160678 +_08160BCC: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08160BD8 + b _08160DB6 +_08160BD8: + b _08160DAE +_08160BDA: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] +_08160BE2: + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _08160DB6 +_08160BEC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08160C08 + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + b _08160DB4 + .align 2, 0 +_08160C08: .4byte gUnknown_203B900 +_08160C0C: + ldr r0, _08160C28 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08160C1A + b _08160DB6 +_08160C1A: + bl sub_08160DC8 + ldr r0, _08160C2C + bl sub_08000540 + b _08160DB6 + .align 2, 0 +_08160C28: .4byte gUnknown_2037C74 +_08160C2C: .4byte sub_08085A30 +_08160C30: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _08160C5C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, _08160C60 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _08160C64 + movs r0, #1 + bl sub_08160E08 + b _08160C6E + .align 2, 0 +_08160C5C: .4byte gUnknown_203B900 +_08160C60: .4byte gUnknown_203B904 +_08160C64: + cmp r0, #1 + bne _08160C6E + movs r0, #1 + bl sub_08160F94 +_08160C6E: + bl sub_0816114C + movs r0, #3 + movs r1, #2 + bl sub_08003528 + b _08160DB6 +_08160C7C: + ldr r0, _08160C9C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08160C8A + b _08160DB6 +_08160C8A: + ldr r1, [r7] + adds r2, r1, #0 + adds r2, #0x45 + ldrb r0, [r2] + cmp r0, #4 + bne _08160CA0 + movs r0, #0x18 + b _08160DB4 + .align 2, 0 +_08160C9C: .4byte gUnknown_2037C74 +_08160CA0: + adds r0, r1, #0 + adds r0, #0x44 + ldrb r0, [r0] + movs r4, #0x64 + muls r0, r4, r0 + ldr r5, _08160D20 + adds r0, r0, r5 + ldrb r1, [r2] + adds r1, #0xd + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _08160D24 + lsrs r1, r1, #0xd + ldr r6, _08160D28 + adds r1, r1, r6 + bl sub_080088B8 + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0x44 + ldrb r0, [r0] + muls r0, r4, r0 + adds r0, r0, r5 + adds r1, #0x45 + ldrb r1, [r1] + bl sub_0806B46C + ldr r0, [r7] + adds r0, #0x44 + ldrb r0, [r0] + muls r4, r0, r4 + adds r4, r4, r5 + bl sub_08160F74 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [r7] + adds r0, #0x45 + ldrb r2, [r0] + adds r0, r4, #0 + bl sub_08068D34 + ldr r4, _08160D2C + bl sub_08160F74 + adds r1, r0, #0 + lsls r1, r1, #3 + adds r1, r1, r6 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _08160D30 + bl sub_08160784 + ldr r1, [r7] + movs r0, #0x1e + strb r0, [r1] + ldr r1, _08160D34 + movs r0, #1 + strh r0, [r1] + b _08160DB6 + .align 2, 0 +_08160D20: .4byte gUnknown_2024190 +_08160D24: .4byte gUnknown_2021C68 +_08160D28: .4byte gUnknown_82EACC4 +_08160D2C: .4byte gUnknown_2021C54 +_08160D30: .4byte gUnknown_85ADA42 +_08160D34: .4byte gUnknown_2037280 +_08160D38: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08160DB6 + ldr r0, _08160D58 + bl sub_08160784 + ldr r0, _08160D5C + ldr r1, [r0] + movs r0, #0x1f + strb r0, [r1] + ldr r0, _08160D60 + bl sub_080A29AC + b _08160DB6 + .align 2, 0 +_08160D58: .4byte gUnknown_85ADA67 +_08160D5C: .4byte gUnknown_203B900 +_08160D60: .4byte 0x0000016F +_08160D64: + bl sub_081D2250 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08160DB6 + ldr r0, _08160D7C + bl sub_080A29AC + ldr r0, _08160D80 + ldr r1, [r0] + movs r0, #0x20 + b _08160DB4 + .align 2, 0 +_08160D7C: .4byte 0x0000016F +_08160D80: .4byte gUnknown_203B900 +_08160D84: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08160DB6 + ldr r0, _08160D98 + ldr r1, [r0] + movs r0, #0x21 + b _08160DB4 + .align 2, 0 +_08160D98: .4byte gUnknown_203B900 +_08160D9C: + ldr r0, _08160DC0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08160DB6 + movs r0, #5 + bl sub_080A306C +_08160DAE: + ldr r0, _08160DC4 + ldr r1, [r0] + movs r0, #0xe +_08160DB4: + strb r0, [r1] +_08160DB6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08160DC0: .4byte gUnknown_3002360 +_08160DC4: .4byte gUnknown_203B900 + thumb_func_end sub_081607A0 + + thumb_func_start sub_08160DC8 +sub_08160DC8: @ 0x08160DC8 + push {r4, lr} + bl sub_0816114C + ldr r4, _08160E00 + ldr r0, [r4] + movs r1, #0x89 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _08160E04 + adds r2, r1, #2 + bl sub_081AE3A0 + bl sub_080034D4 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + bl sub_0800668C + bl sub_08008424 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08160E00: .4byte gUnknown_203B900 +_08160E04: .4byte gUnknown_203B904 + thumb_func_end sub_08160DC8 + + thumb_func_start sub_08160E08 +sub_08160E08: @ 0x08160E08 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r2, #0 + ldr r6, _08160E60 + ldr r4, _08160E64 + movs r3, #4 +_08160E18: + ldr r0, [r4] + adds r0, #1 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r2, #1 + cmp r2, #0xf + ble _08160E18 + cmp r5, #0 + bne _08160E58 + ldr r4, _08160E68 + ldr r1, _08160E6C + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #2 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C +_08160E58: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08160E60: .4byte gUnknown_20205AC +_08160E64: .4byte gUnknown_203B900 +_08160E68: .4byte gUnknown_2021C7C +_08160E6C: .4byte gUnknown_85AD9A0 + thumb_func_end sub_08160E08 + + thumb_func_start sub_08160E70 +sub_08160E70: @ 0x08160E70 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r6, _08160ED8 + ldr r0, [r6] + movs r4, #0x89 + lsls r4, r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_081AE2DC + adds r5, r0, #0 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + ldr r4, _08160EDC + adds r2, r4, #2 + adds r1, r4, #0 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _08160F04 + adds r0, #1 + cmp r5, r0 + bne _08160F30 + ldr r0, _08160EE0 + ldrh r1, [r0, #0x2e] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0 + bne _08160EBC + bl sub_081220DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08160F5C +_08160EBC: + movs r0, #5 + bl sub_080A306C + cmp r7, #0 + bne _08160EE4 + movs r0, #1 + bl sub_0800365C + ldr r0, [r6] + movs r1, #5 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #4] + b _08160EF4 + .align 2, 0 +_08160ED8: .4byte gUnknown_203B900 +_08160EDC: .4byte gUnknown_203B904 +_08160EE0: .4byte gUnknown_3002360 +_08160EE4: + movs r0, #0 + bl sub_0800365C + ldr r0, [r6] + movs r2, #0 + movs r1, #3 + strb r1, [r0] + strb r2, [r4, #4] +_08160EF4: + movs r0, #1 + bl sub_08199654 + bl sub_08160F74 + bl sub_08161280 + b _08160F5C +_08160F04: + movs r0, #5 + bl sub_080A306C + bl sub_0816114C + ldr r1, [r6] + movs r0, #0xc + strb r0, [r1] + ldr r4, _08160F28 + ldr r1, _08160F2C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + bl sub_081D2208 + b _08160F5C + .align 2, 0 +_08160F28: .4byte gUnknown_2021C7C +_08160F2C: .4byte gUnknown_85ADAAF +_08160F30: + movs r0, #5 + bl sub_080A306C + bl sub_0816114C + ldr r1, [r6] + movs r0, #8 + strb r0, [r1] + ldr r0, _08160F64 + lsls r1, r5, #3 + ldr r2, _08160F68 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _08160F6C + ldr r1, _08160F70 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + bl sub_081D2208 +_08160F5C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08160F64: .4byte gUnknown_2021C54 +_08160F68: .4byte gUnknown_82EACC4 +_08160F6C: .4byte gUnknown_2021C7C +_08160F70: .4byte gUnknown_85AD9B2 + thumb_func_end sub_08160E70 + + thumb_func_start sub_08160F74 +sub_08160F74: @ 0x08160F74 + ldr r0, _08160F8C + ldr r2, [r0] + ldr r1, _08160F90 + ldrh r0, [r1, #2] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #3 + adds r2, #0x4c + adds r2, r2, r0 + ldr r0, [r2] + bx lr + .align 2, 0 +_08160F8C: .4byte gUnknown_203B900 +_08160F90: .4byte gUnknown_203B904 + thumb_func_end sub_08160F74 + + thumb_func_start sub_08160F94 +sub_08160F94: @ 0x08160F94 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08160FBE + ldr r4, _08160FC8 + ldr r1, _08160FCC + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #2 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C +_08160FBE: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08160FC8: .4byte gUnknown_2021C7C +_08160FCC: .4byte gUnknown_85AD9A0 + thumb_func_end sub_08160F94 + + thumb_func_start sub_08160FD0 +sub_08160FD0: @ 0x08160FD0 + push {r4, r5, r6, r7, lr} + ldr r2, _081610B4 + ldr r0, [r2] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r2] + ldr r2, _081610B8 + adds r1, r0, r2 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + bl sub_081610C4 + movs r4, #0 + ldr r5, _081610BC +_08160FF4: + adds r2, r4, #0 + cmp r4, #0 + bge _08160FFC + adds r2, r4, #3 +_08160FFC: + asrs r2, r2, #2 + lsls r1, r2, #2 + subs r1, r4, r1 + lsls r1, r1, #0x13 + movs r0, #0xb0 + lsls r0, r0, #0xe + adds r1, r1, r0 + asrs r1, r1, #0x10 + lsls r2, r2, #0x13 + movs r0, #0xd0 + lsls r0, r0, #0xe + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r5, #0 + movs r3, #0 + bl sub_08006B0C + ldr r2, _081610B4 + ldr r1, [r2] + adds r1, #1 + adds r1, r1, r4 + strb r0, [r1] + adds r4, #1 + cmp r4, #7 + ble _08160FF4 + movs r4, #0 + ldr r7, _081610BC + adds r6, r2, #0 +_08161034: + adds r2, r4, #0 + cmp r4, #0 + bge _0816103C + adds r2, r4, #3 +_0816103C: + asrs r2, r2, #2 + lsls r1, r2, #2 + subs r1, r4, r1 + lsls r1, r1, #0x13 + movs r0, #0xf8 + lsls r0, r0, #0xf + adds r1, r1, r0 + asrs r1, r1, #0x10 + lsls r2, r2, #0x13 + movs r0, #0xd0 + lsls r0, r0, #0xe + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r7, #0 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r6] + adds r2, r4, #0 + adds r2, #8 + adds r1, #1 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, #1 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _081610C0 + adds r0, r0, r5 + movs r1, #2 + bl sub_08007EC0 + adds r4, #1 + cmp r4, #7 + ble _08161034 + movs r4, #0 + ldr r3, _081610B4 + movs r2, #4 +_0816108E: + ldr r0, [r3] + adds r0, #1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r4, #1 + cmp r4, #0xf + ble _0816108E + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081610B4: .4byte gUnknown_203B900 +_081610B8: .4byte 0x00000113 +_081610BC: .4byte gUnknown_85ADB54 +_081610C0: .4byte gUnknown_20205AC + thumb_func_end sub_08160FD0 + + thumb_func_start sub_081610C4 +sub_081610C4: @ 0x081610C4 + push {r4, r5, r6, lr} + ldr r4, _08161130 + ldr r1, [r4] + movs r2, #0x8a + lsls r2, r2, #1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _081610EC + ldr r0, _08161134 + movs r3, #0x8b + lsls r3, r3, #1 + adds r1, r1, r3 + bl sub_081AF058 + ldr r1, [r4] + movs r5, #0x8a + lsls r5, r5, #1 + adds r1, r1, r5 + strb r0, [r1] +_081610EC: + ldr r0, [r4] + ldr r6, _08161138 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0xff + bne _08161128 + ldr r0, _0816113C + adds r2, r0, #0 + ldr r1, _08161140 + ldm r1!, {r3, r5, r6} + stm r2!, {r3, r5, r6} + ldr r1, [r1] + str r1, [r2] + ldr r2, [r4] + movs r3, #0x88 + lsls r3, r3, #1 + adds r1, r2, r3 + ldrb r1, [r1] + ldr r5, _08161144 + adds r2, r2, r5 + ldrb r2, [r2] + subs r1, r1, r2 + strh r1, [r0, #8] + ldr r1, _08161148 + bl sub_081AF058 + ldr r1, [r4] + ldr r6, _08161138 + adds r1, r1, r6 + strb r0, [r1] +_08161128: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08161130: .4byte gUnknown_203B900 +_08161134: .4byte gUnknown_85ADB04 +_08161138: .4byte 0x00000113 +_0816113C: .4byte gUnknown_203CB58 +_08161140: .4byte gUnknown_85ADB14 +_08161144: .4byte 0x00000111 +_08161148: .4byte gUnknown_203B904 + thumb_func_end sub_081610C4 + + thumb_func_start sub_0816114C +sub_0816114C: @ 0x0816114C + push {r4, lr} + ldr r4, _08161190 + ldr r0, [r4] + movs r2, #0x8a + lsls r2, r2, #1 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _0816116E + bl sub_081AF2F8 + ldr r0, [r4] + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_0816116E: + ldr r0, [r4] + ldr r2, _08161194 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _08161188 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r2, _08161194 + adds r1, r0, r2 + movs r0, #0xff + strb r0, [r1] +_08161188: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08161190: .4byte gUnknown_203B900 +_08161194: .4byte 0x00000113 + thumb_func_end sub_0816114C + + thumb_func_start sub_08161198 +sub_08161198: @ 0x08161198 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r4, _08161268 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x44 + ldrb r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0816126C + adds r0, r0, r2 + adds r1, #0x12 + bl sub_0806DB48 + ldr r1, [r4] + movs r6, #0x88 + lsls r6, r6, #1 + adds r1, r1, r6 + strb r0, [r1] + movs r5, #0 + ldr r0, [r4] + adds r0, r0, r6 + ldrb r0, [r0] + cmp r5, r0 + bge _081611FE + mov ip, r4 + ldr r7, _08161270 +_081611CE: + mov r0, ip + ldr r4, [r0] + lsls r3, r5, #3 + adds r2, r4, #0 + adds r2, #0x48 + adds r2, r2, r3 + lsls r0, r5, #1 + adds r1, r4, #0 + adds r1, #0x12 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #3 + adds r0, r0, r7 + str r0, [r2] + adds r0, r4, #0 + adds r0, #0x4c + adds r0, r0, r3 + ldrh r1, [r1] + str r1, [r0] + adds r5, #1 + adds r0, r4, r6 + ldrb r0, [r0] + cmp r5, r0 + blt _081611CE +_081611FE: + ldr r4, _08161268 + ldr r0, [r4] + adds r0, #0x44 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0816126C + adds r0, r0, r1 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + ldr r0, _08161274 + mov r1, sp + bl sub_08008828 + ldr r2, [r4] + movs r5, #0x88 + lsls r5, r5, #1 + adds r3, r2, r5 + ldrb r0, [r3] + lsls r0, r0, #3 + adds r1, r2, #0 + adds r1, #0x48 + adds r1, r1, r0 + ldr r0, _08161278 + str r0, [r1] + ldrb r0, [r3] + lsls r0, r0, #3 + adds r2, #0x4c + adds r2, r2, r0 + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r2] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x48 + adds r1, r1, r5 + ldrb r1, [r1] + bl sub_081D1FD8 + ldr r1, [r4] + ldr r2, _0816127C + adds r1, r1, r2 + strb r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08161268: .4byte gUnknown_203B900 +_0816126C: .4byte gUnknown_2024190 +_08161270: .4byte gUnknown_82EACC4 +_08161274: .4byte gUnknown_2021C40 +_08161278: .4byte gUnknown_85C93C4 +_0816127C: .4byte 0x00000111 + thumb_func_end sub_08161198 + + thumb_func_start sub_08161280 +sub_08161280: @ 0x08161280 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r0, _081612C4 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08161298 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + bne _081612D0 +_08161298: + movs r5, #0 + ldr r4, _081612C8 + ldr r3, _081612CC + movs r2, #4 +_081612A0: + ldr r0, [r3] + adds r0, #1 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xf + bls _081612A0 + b _08161402 + .align 2, 0 +_081612C4: .4byte gUnknown_203B904 +_081612C8: .4byte gUnknown_20205AC +_081612CC: .4byte gUnknown_203B900 +_081612D0: + ldr r1, _08161314 + ldr r0, _08161318 + lsls r4, r4, #3 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + mov r8, r4 + cmp r6, #0xff + bne _081612F2 + movs r6, #0 +_081612F2: + movs r5, #0 + ldr r7, _0816131C + ldr r4, _08161320 +_081612F8: + cmp r5, r6 + bhs _08161324 + ldr r0, [r7] + adds r0, #1 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + b _0816133A + .align 2, 0 +_08161314: .4byte gUnknown_8566AE4 +_08161318: .4byte gUnknown_8565FCC +_0816131C: .4byte gUnknown_203B900 +_08161320: .4byte gUnknown_20205AC +_08161324: + ldr r0, [r7] + adds r0, #1 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007EC0 +_0816133A: + ldr r0, [r7] + adds r0, #1 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #5 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #7 + bls _081612F8 + ldr r1, _081613AC + ldr r0, _081613B0 + add r0, r8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0xff + bne _08161380 + movs r6, #0 +_08161380: + movs r5, #0 + ldr r0, _081613B4 + mov r8, r0 + ldr r7, _081613B8 +_08161388: + cmp r5, r6 + bhs _081613BC + mov r1, r8 + ldr r0, [r1] + adds r4, r5, #0 + adds r4, #8 + adds r0, #1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #3 + bl sub_08007EC0 + b _081613D8 + .align 2, 0 +_081613AC: .4byte gUnknown_8566AE4 +_081613B0: .4byte gUnknown_8565FCC +_081613B4: .4byte gUnknown_203B900 +_081613B8: .4byte gUnknown_20205AC +_081613BC: + mov r3, r8 + ldr r0, [r3] + adds r4, r5, #0 + adds r4, #8 + adds r0, #1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #2 + bl sub_08007EC0 +_081613D8: + mov r1, r8 + ldr r0, [r1] + adds r0, #1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x3e + ldrb r1, [r0] + movs r3, #5 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #7 + bls _08161388 +_08161402: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08161280 + + thumb_func_start sub_0816140C +sub_0816140C: @ 0x0816140C + push {r4, r5, r6, lr} + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0x64 + muls r0, r6, r0 + ldr r4, _08161458 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #5 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + bhi _0816145C + movs r0, #0 + b _0816145E + .align 2, 0 +_08161458: .4byte gUnknown_2024190 +_0816145C: + movs r0, #1 +_0816145E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0816140C + + thumb_func_start sub_08161464 +sub_08161464: @ 0x08161464 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081614A0 + movs r1, #0xa + strb r1, [r0, #0xb] + ldrb r1, [r0, #9] + strb r1, [r0, #0xa] + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081B0C9C + movs r0, #5 + bl sub_081B2CD8 + ldr r1, _081614A4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081614A8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081614A0: .4byte gUnknown_203CB94 +_081614A4: .4byte gUnknown_3005B60 +_081614A8: .4byte sub_081B1040 + thumb_func_end sub_08161464 + + thumb_func_start sub_081614AC +sub_081614AC: @ 0x081614AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + str r4, [sp, #4] + ldr r1, _081614E4 + ldrb r7, [r1, #9] + mov r8, r7 + ldrb r0, [r1, #0xa] + adds r5, r0, #0 + cmp r5, #6 + bls _081614F0 + movs r0, #0 + strb r0, [r1, #0xb] + bl sub_081B2CD8 + ldr r1, _081614E8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081614EC + str r1, [r0] + b _0816155C + .align 2, 0 +_081614E4: .4byte gUnknown_203CB94 +_081614E8: .4byte gUnknown_3005B60 +_081614EC: .4byte sub_081B1040 +_081614F0: + movs r0, #0x64 + mov sl, r0 + mov r0, sl + muls r0, r5, r0 + ldr r1, _08161528 + mov sb, r1 + adds r6, r0, r1 + adds r0, r6, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _0816151E + cmp r7, r5 + beq _0816151E + adds r0, r6, #0 + movs r1, #0x3a + bl sub_0806A058 + cmp r0, r4 + bne _0816152C +_0816151E: + ldr r0, [sp, #4] + bl sub_081616BC + b _0816155C + .align 2, 0 +_08161528: .4byte gUnknown_2024190 +_0816152C: + movs r0, #1 + bl sub_080A306C + mov r1, sl + mov r0, r8 + muls r0, r1, r0 + add r0, sb + movs r1, #0x3a + bl sub_0806A058 + movs r1, #5 + bl __udivsi3 + adds r3, r0, #0 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + movs r2, #1 + rsbs r2, r2, #0 + ldr r0, _0816156C + str r0, [sp] + ldr r0, [sp, #4] + mov r1, r8 + bl sub_081B1BE8 +_0816155C: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816156C: .4byte sub_08161570 + thumb_func_end sub_081614AC + + thumb_func_start sub_08161570 +sub_08161570: @ 0x08161570 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_080A306C + ldr r5, _081615B8 + movs r1, #9 + ldrsb r1, [r5, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081615BC + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + movs r1, #5 + bl __udivsi3 + adds r3, r0, #0 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldrb r1, [r5, #0xa] + ldr r0, _081615C0 + str r0, [sp] + adds r0, r4, #0 + movs r2, #1 + bl sub_081B1BE8 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081615B8: .4byte gUnknown_203CB94 +_081615BC: .4byte gUnknown_2024190 +_081615C0: .4byte sub_081615C4 + thumb_func_end sub_08161570 + + thumb_func_start sub_081615C4 +sub_081615C4: @ 0x081615C4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0816160C + movs r1, #0xa + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08161610 + adds r0, r0, r1 + ldr r1, _08161614 + bl sub_081B1814 + ldr r4, _08161618 + ldr r1, _0816161C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _08161620 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08161624 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816160C: .4byte gUnknown_203CB94 +_08161610: .4byte gUnknown_2024190 +_08161614: .4byte gUnknown_2021C40 +_08161618: .4byte gUnknown_2021C7C +_0816161C: .4byte gUnknown_85C9E8F +_08161620: .4byte gUnknown_3005B60 +_08161624: .4byte sub_08161628 + thumb_func_end sub_081615C4 + + thumb_func_start sub_08161628 +sub_08161628: @ 0x08161628 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08161676 + ldr r4, _0816167C + movs r0, #0 + strb r0, [r4, #0xb] + ldrb r0, [r4, #9] + movs r1, #0 + bl sub_081B0C9C + ldrb r0, [r4, #0xa] + strb r0, [r4, #9] + ldrb r0, [r4, #0xa] + movs r1, #1 + bl sub_081B0C9C + movs r0, #6 + movs r1, #0 + bl sub_08198134 + movs r0, #6 + bl sub_08003774 + movs r0, #0 + bl sub_081B2CD8 + ldr r1, _08161680 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08161684 + str r1, [r0] +_08161676: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816167C: .4byte gUnknown_203CB94 +_08161680: .4byte gUnknown_3005B60 +_08161684: .4byte sub_081B1040 + thumb_func_end sub_08161628 + + thumb_func_start sub_08161688 +sub_08161688: @ 0x08161688 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081616AE + movs r0, #5 + bl sub_081B2CD8 + ldr r0, _081616B4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081616B8 + str r0, [r1] +_081616AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081616B4: .4byte gUnknown_3005B60 +_081616B8: .4byte sub_081B1040 + thumb_func_end sub_08161688 + + thumb_func_start sub_081616BC +sub_081616BC: @ 0x081616BC + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r0, _081616EC + movs r1, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081616F0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081616F4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081616EC: .4byte gUnknown_85C9B07 +_081616F0: .4byte gUnknown_3005B60 +_081616F4: .4byte sub_08161688 + thumb_func_end sub_081616BC + + thumb_func_start sub_081616F8 +sub_081616F8: @ 0x081616F8 + push {r4, lr} + ldr r0, _0816176C + mov ip, r0 + ldr r0, _08161770 + ldr r1, [r0] + ldr r2, _08161774 + adds r0, r1, r2 + mov r4, ip + str r0, [r4] + movs r3, #0xa + strb r3, [r4, #4] + adds r2, #0xa + adds r0, r1, r2 + str r0, [r4, #8] + strb r3, [r4, #0xc] + ldr r4, _08161778 + adds r0, r1, r4 + mov r2, ip + str r0, [r2, #0x10] + strb r3, [r2, #0x14] + adds r4, #0xa + adds r0, r1, r4 + str r0, [r2, #0x18] + movs r2, #0x1e + mov r0, ip + strb r2, [r0, #0x1c] + adds r4, #0x1e + adds r0, r1, r4 + mov r4, ip + str r0, [r4, #0x20] + mov r0, ip + adds r0, #0x24 + strb r2, [r0] + ldr r2, _0816177C + adds r0, r1, r2 + str r0, [r4, #0x28] + mov r0, ip + adds r0, #0x2c + strb r3, [r0] + ldr r4, _08161780 + adds r0, r1, r4 + mov r2, ip + str r0, [r2, #0x30] + adds r2, #0x34 + movs r0, #0x28 + strb r0, [r2] + adds r4, #0x28 + adds r1, r1, r4 + mov r0, ip + str r1, [r0, #0x38] + adds r0, #0x3c + strb r3, [r0] + bl sub_08126950 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816176C: .4byte gUnknown_203B90C +_08161770: .4byte gUnknown_3005AEC +_08161774: .4byte 0x00002734 +_08161778: .4byte 0x00002748 +_0816177C: .4byte 0x0000278E +_08161780: .4byte 0x00002798 + thumb_func_end sub_081616F8 + + thumb_func_start sub_08161784 +sub_08161784: @ 0x08161784 + push {r4, r5, lr} + lsls r0, r0, #0x18 + movs r3, #0 + ldr r1, _081617B4 + lsrs r2, r0, #0x15 + adds r0, r2, r1 + ldrb r0, [r0, #4] + cmp r3, r0 + bhs _081617AE + adds r5, r1, #0 + movs r4, #0 +_0816179A: + adds r0, r2, r5 + ldr r1, [r0] + adds r1, r1, r3 + strb r4, [r1] + adds r1, r3, #1 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldrb r0, [r0, #4] + cmp r3, r0 + blo _0816179A +_081617AE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081617B4: .4byte gUnknown_203B90C + thumb_func_end sub_08161784 + + thumb_func_start sub_081617B8 +sub_081617B8: @ 0x081617B8 + push {r4, lr} + movs r4, #0 +_081617BC: + adds r0, r4, #0 + bl sub_08161784 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081617BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081617B8 + + thumb_func_start sub_081617D4 +sub_081617D4: @ 0x081617D4 + push {r4, lr} + lsls r0, r0, #0x18 + movs r2, #0 + ldr r1, _08161800 + lsrs r0, r0, #0x15 + adds r0, r0, r1 + movs r1, #4 + ldrsb r1, [r0, r1] + cmp r2, r1 + bge _08161810 + adds r4, r0, #0 + adds r3, r1, #0 +_081617EC: + lsls r0, r2, #0x18 + asrs r1, r0, #0x18 + ldr r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08161804 + adds r0, r1, #0 + b _08161814 + .align 2, 0 +_08161800: .4byte gUnknown_203B90C +_08161804: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r3 + blt _081617EC +_08161810: + movs r0, #1 + rsbs r0, r0, #0 +_08161814: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081617D4 + + thumb_func_start sub_0816181C +sub_0816181C: @ 0x0816181C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _0816184C + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xe] + movs r2, #0 + ldr r1, _08161850 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] + cmp r2, r1 + bhs _0816185E + ldr r4, [r0] +_0816183E: + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, r3 + bne _08161854 + movs r0, #1 + b _08161860 + .align 2, 0 +_0816184C: .4byte gUnknown_8580CD0 +_08161850: .4byte gUnknown_203B90C +_08161854: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r1 + blo _0816183E +_0816185E: + movs r0, #0 +_08161860: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0816181C + + thumb_func_start sub_08161868 +sub_08161868: @ 0x08161868 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + cmp r4, #0 + beq _081618AC + ldr r1, _081618A4 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #0xe] + adds r0, r5, #0 + bl sub_081617D4 + lsls r0, r0, #0x18 + asrs r2, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _081618AC + ldr r0, _081618A8 + lsls r1, r5, #3 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, r0, r2 + strb r4, [r0] + movs r0, #1 + b _081618AE + .align 2, 0 +_081618A4: .4byte gUnknown_8580CD0 +_081618A8: .4byte gUnknown_203B90C +_081618AC: + movs r0, #0 +_081618AE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08161868 + + thumb_func_start sub_081618B4 +sub_081618B4: @ 0x081618B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _081618E4 + ldr r1, _081618E0 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xe] + bl sub_081617D4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _081618E4 + movs r0, #1 + b _081618E6 + .align 2, 0 +_081618E0: .4byte gUnknown_8580CD0 +_081618E4: + movs r0, #0 +_081618E6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081618B4 + + thumb_func_start sub_081618EC +sub_081618EC: @ 0x081618EC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + cmp r4, #0 + bne _08161908 + b _0816193A +_081618FA: + movs r0, #0 + strb r0, [r1] + adds r0, r6, #0 + bl sub_0816194C + movs r0, #1 + b _0816193C +_08161908: + ldr r2, _08161944 + ldr r1, _08161948 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r5, [r0, #0xe] + lsls r0, r5, #3 + adds r0, r0, r2 + ldrb r1, [r0, #4] + cmp r3, r1 + bhs _0816193A + adds r6, r5, #0 + adds r5, r0, #0 + adds r2, r1, #0 +_08161926: + ldr r0, [r5] + adds r1, r0, r3 + ldrb r0, [r1] + cmp r0, r4 + beq _081618FA + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r2 + blo _08161926 +_0816193A: + movs r0, #0 +_0816193C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08161944: .4byte gUnknown_203B90C +_08161948: .4byte gUnknown_8580CD0 + thumb_func_end sub_081618EC + + thumb_func_start sub_0816194C +sub_0816194C: @ 0x0816194C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + movs r6, #0 + ldr r2, _081619E0 + lsrs r0, r0, #0x15 + adds r1, r0, r2 + ldrb r3, [r1, #4] + cmp r6, r3 + bhs _081619D0 + adds r7, r0, #0 + mov sl, r1 + mov r0, sl + str r0, [sp] +_08161970: + adds r1, r6, #1 + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + adds r2, r7, #0 + mov ip, r1 + mov r1, sl + ldrb r1, [r1, #4] + cmp r3, r1 + bhs _081619C2 + ldr r0, _081619E0 + mov sb, r0 + adds r1, r0, #0 + mov r8, r1 +_0816198A: + mov r0, sb + adds r5, r2, r0 + ldr r1, [r5] + adds r0, r1, r3 + ldrb r4, [r0] + adds r2, r4, #0 + cmp r2, #0 + beq _081619B0 + adds r0, r1, r6 + ldrb r1, [r0] + cmp r1, #0 + beq _081619A6 + cmp r1, r2 + bls _081619B0 +_081619A6: + ldrb r1, [r0] + strb r4, [r0] + ldr r0, [r5] + adds r0, r0, r3 + strb r1, [r0] +_081619B0: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r2, r7, #0 + mov r1, r8 + adds r0, r2, r1 + ldrb r0, [r0, #4] + cmp r3, r0 + blo _0816198A +_081619C2: + mov r3, ip + lsls r0, r3, #0x18 + lsrs r6, r0, #0x18 + ldr r0, [sp] + ldrb r0, [r0, #4] + cmp r6, r0 + blo _08161970 +_081619D0: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081619E0: .4byte gUnknown_203B90C + thumb_func_end sub_0816194C + + thumb_func_start sub_081619E4 +sub_081619E4: @ 0x081619E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + movs r4, #0 + movs r3, #0 + ldr r2, _08161A20 + lsrs r1, r0, #0x15 + adds r0, r1, r2 + ldrb r0, [r0, #4] + cmp r4, r0 + bhs _08161A18 + adds r5, r2, #0 +_081619FA: + adds r2, r1, r5 + ldr r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _08161A0C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08161A0C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r2, [r2, #4] + cmp r3, r2 + blo _081619FA +_08161A18: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08161A20: .4byte gUnknown_203B90C + thumb_func_end sub_081619E4 + + thumb_func_start sub_08161A24 +sub_08161A24: @ 0x08161A24 + push {r4, r5, lr} + movs r5, #0 + movs r4, #0 +_08161A2A: + adds r0, r4, #0 + bl sub_081619E4 + adds r0, r5, r0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _08161A2A + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08161A24 + + thumb_func_start sub_08161A48 +sub_08161A48: @ 0x08161A48 + push {r4, r5, lr} + ldr r5, _08161A68 + ldr r0, [r5] + ldr r4, _08161A6C + adds r0, r0, r4 + movs r1, #0 + movs r2, #0x1c + bl memset + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _08161A70 + strh r1, [r0, #8] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08161A68: .4byte gUnknown_3005AEC +_08161A6C: .4byte 0x000031DC +_08161A70: .4byte 0x00000197 + thumb_func_end sub_08161A48 + + thumb_func_start sub_08161A74 +sub_08161A74: @ 0x08161A74 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r6, _08161AA0 + ldr r4, _08161AA4 + movs r3, #0 + adds r5, r4, #1 +_08161A80: + lsls r1, r2, #1 + adds r0, r1, r4 + strb r3, [r0] + adds r1, r1, r5 + strb r3, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _08161A80 + movs r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08161AA0: .4byte gUnknown_203B952 +_08161AA4: .4byte gUnknown_203B94C + thumb_func_end sub_08161A74 + + thumb_func_start sub_08161AA8 +sub_08161AA8: @ 0x08161AA8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08161AD0 + ldr r0, _08161AC4 + ldr r1, [r0] + ldr r2, _08161AC8 + adds r1, r1, r2 + ldr r2, _08161ACC + b _08161ADC + .align 2, 0 +_08161AC4: .4byte gUnknown_3005AEC +_08161AC8: .4byte 0x000031DC +_08161ACC: .4byte 0x00000197 +_08161AD0: + ldr r0, _08161BBC + ldr r1, [r0] + ldr r2, _08161BC0 + adds r1, r1, r2 + movs r2, #0xcc + lsls r2, r2, #1 +_08161ADC: + strh r2, [r1, #8] + adds r7, r0, #0 + ldr r6, _08161BC4 + ldr r0, [r7] + ldr r5, _08161BC0 + adds r0, r0, r5 + ldrh r1, [r0, #8] + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + str r4, [sp, #0xc] + adds r0, r6, #0 + movs r2, #0x28 + movs r3, #0x20 + bl sub_08067730 + ldr r0, [r7] + adds r0, r0, r5 + movs r1, #0x28 + strb r1, [r0, #0xc] + ldr r0, [r7] + adds r0, r0, r5 + strb r4, [r0, #0xd] + ldr r0, [r7] + adds r0, r0, r5 + movs r1, #1 + strb r1, [r0, #0x13] + adds r0, r6, #0 + movs r1, #0x42 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + str r0, [r1] + adds r0, r6, #0 + movs r1, #0 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + str r0, [r1, #4] + adds r0, r6, #0 + movs r1, #0x3a + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + movs r2, #0 + mov r8, r2 + strh r0, [r1, #0xa] + adds r0, r6, #0 + movs r1, #0x16 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + strb r0, [r1, #0xe] + adds r0, r6, #0 + movs r1, #0x17 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + strb r0, [r1, #0xf] + adds r0, r6, #0 + movs r1, #0x18 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + strb r0, [r1, #0x10] + adds r0, r6, #0 + movs r1, #0x21 + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + strb r0, [r1, #0x11] + adds r0, r6, #0 + movs r1, #0x2f + bl sub_0806A058 + ldr r1, [r7] + adds r1, r1, r5 + strb r0, [r1, #0x12] + ldr r4, _08161BC8 + mov r0, r8 + strb r0, [r4] + bl sub_0806F050 + ldr r5, _08161BCC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrb r0, [r1] + strb r0, [r4, #1] + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08161BBC: .4byte gUnknown_3005AEC +_08161BC0: .4byte 0x000031DC +_08161BC4: .4byte gUnknown_20243E8 +_08161BC8: .4byte gUnknown_203B952 +_08161BCC: .4byte gUnknown_85ADB74 + thumb_func_end sub_08161AA8 + + thumb_func_start sub_08161BD0 +sub_08161BD0: @ 0x08161BD0 + push {lr} + bl sub_08161A48 + bl sub_08161A74 + ldr r0, _08161BE8 + ldrh r0, [r0] + bl sub_08161AA8 + pop {r0} + bx r0 + .align 2, 0 +_08161BE8: .4byte gUnknown_2037280 + thumb_func_end sub_08161BD0 + + thumb_func_start sub_08161BEC +sub_08161BEC: @ 0x08161BEC + ldr r0, _08161C0C + ldrb r1, [r0, #2] + strb r1, [r0, #4] + ldrb r1, [r0, #3] + strb r1, [r0, #5] + ldrb r1, [r0] + strb r1, [r0, #2] + ldrb r1, [r0, #1] + strb r1, [r0, #3] + ldr r1, _08161C10 + ldr r2, [r1] + ldrb r1, [r2, #4] + strb r1, [r0] + ldrb r1, [r2, #5] + strb r1, [r0, #1] + bx lr + .align 2, 0 +_08161C0C: .4byte gUnknown_203B94C +_08161C10: .4byte gUnknown_3005AEC + thumb_func_end sub_08161BEC + + thumb_func_start sub_08161C14 +sub_08161C14: @ 0x08161C14 + push {r4, r5, lr} + movs r1, #0 + ldr r0, _08161C58 + ldr r0, [r0] + ldr r2, _08161C5C + adds r0, r0, r2 + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08161C52 + ldr r0, _08161C60 + strb r1, [r0] + ldr r5, _08161C64 + adds r4, r0, #0 +_08161C2E: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrb r1, [r1] + ldrb r0, [r4, #1] + cmp r0, r1 + beq _08161C2E + strb r1, [r4, #1] +_08161C52: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08161C58: .4byte gUnknown_3005AEC +_08161C5C: .4byte 0x000031DC +_08161C60: .4byte gUnknown_203B952 +_08161C64: .4byte gUnknown_85ADB74 + thumb_func_end sub_08161C14 + + thumb_func_start sub_08161C68 +sub_08161C68: @ 0x08161C68 + push {r4, r5, r6, r7, lr} + movs r4, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xf0 + lsls r1, r1, #0xc + ands r1, r0 + cmp r1, #0 + bne _08161C82 + bl sub_08161C14 + b _08161CF6 +_08161C82: + ldr r0, _08161CD8 + ldr r0, [r0] + ldr r1, _08161CDC + adds r0, r0, r1 + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08161CF6 + ldr r7, _08161CE0 + ldr r3, _08161CE4 +_08161C94: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r2, r0, #1 + adds r1, r2, r3 + ldrb r0, [r7, #1] + ldrb r1, [r1] + cmp r0, r1 + bne _08161CEC + ldr r6, _08161CE4 + adds r5, r2, #1 + ldr r4, _08161CE8 +_08161CAA: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, r0, r5 + adds r0, r0, r6 + ldrb r1, [r0] + ldrb r0, [r4, #4] + cmp r0, #0 + bne _08161CCE + ldrb r0, [r4, #5] + cmp r0, r1 + beq _08161CAA +_08161CCE: + cmp r1, #0xff + beq _08161CAA + strb r1, [r7, #1] + b _08161CF6 + .align 2, 0 +_08161CD8: .4byte gUnknown_3005AEC +_08161CDC: .4byte 0x000031DC +_08161CE0: .4byte gUnknown_203B952 +_08161CE4: .4byte gUnknown_85ADB74 +_08161CE8: .4byte gUnknown_203B94C +_08161CEC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _08161C94 +_08161CF6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08161C68 + + thumb_func_start sub_08161CFC +sub_08161CFC: @ 0x08161CFC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _08161D28 + ldr r0, [r0] + ldr r3, _08161D2C + adds r0, r0, r3 + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _08161D34 + ldr r0, _08161D30 + ldrb r3, [r0] + cmp r2, r3 + bne _08161D34 + ldrb r0, [r0, #1] + cmp r1, r0 + bne _08161D34 + movs r0, #1 + b _08161D36 + .align 2, 0 +_08161D28: .4byte gUnknown_3005AEC +_08161D2C: .4byte 0x000031DC +_08161D30: .4byte gUnknown_203B952 +_08161D34: + movs r0, #0 +_08161D36: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08161CFC + + thumb_func_start sub_08161D3C +sub_08161D3C: @ 0x08161D3C + push {r4, r5, lr} + sub sp, #4 + ldr r5, _08161DC8 + bl sub_08067710 + ldr r4, _08161DCC + ldr r0, [r4] + ldr r1, _08161DD0 + adds r0, r0, r1 + ldrh r1, [r0, #8] + ldrb r2, [r0, #0xc] + ldr r3, [r0] + ldr r0, [r0, #4] + str r0, [sp] + adds r0, r5, #0 + bl sub_08067C44 + ldr r2, [r4] + ldr r0, _08161DD4 + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0x37 + bl sub_0806A774 + ldr r2, [r4] + ldr r1, _08161DD8 + adds r2, r2, r1 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A774 + ldr r2, [r4] + ldr r0, _08161DDC + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0x16 + bl sub_0806A774 + ldr r2, [r4] + ldr r1, _08161DE0 + adds r2, r2, r1 + adds r0, r5, #0 + movs r1, #0x17 + bl sub_0806A774 + ldr r2, [r4] + ldr r0, _08161DE4 + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0x18 + bl sub_0806A774 + ldr r2, [r4] + ldr r1, _08161DE8 + adds r2, r2, r1 + adds r0, r5, #0 + movs r1, #0x21 + bl sub_0806A774 + ldr r2, [r4] + ldr r0, _08161DEC + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0x2f + bl sub_0806A774 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08161DC8: .4byte gUnknown_20243E8 +_08161DCC: .4byte gUnknown_3005AEC +_08161DD0: .4byte 0x000031DC +_08161DD4: .4byte 0x000031E9 +_08161DD8: .4byte 0x000031E6 +_08161DDC: .4byte 0x000031EA +_08161DE0: .4byte 0x000031EB +_08161DE4: .4byte 0x000031EC +_08161DE8: .4byte 0x000031ED +_08161DEC: .4byte 0x000031EE + thumb_func_end sub_08161D3C + + thumb_func_start sub_08161DF0 +sub_08161DF0: @ 0x08161DF0 + push {lr} + ldr r0, _08161E20 + ldr r1, [r0] + ldrb r0, [r1, #4] + ldrb r1, [r1, #5] + bl sub_08161CFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08161E24 + bl sub_0806F050 + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + cmp r1, #0 + bne _08161E24 + bl sub_08161D3C + movs r0, #1 + b _08161E26 + .align 2, 0 +_08161E20: .4byte gUnknown_3005AEC +_08161E24: + movs r0, #0 +_08161E26: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08161DF0 + + thumb_func_start sub_08161E2C +sub_08161E2C: @ 0x08161E2C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x39 + bl sub_0806A058 + ldr r5, _08161E58 + ldr r1, [r5] + ldr r4, _08161E5C + adds r1, r1, r4 + strh r0, [r1, #0xa] + adds r0, r6, #0 + movs r1, #0x37 + bl sub_0806A058 + ldr r1, [r5] + adds r1, r1, r4 + strb r0, [r1, #0xd] + bl sub_08161C14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08161E58: .4byte gUnknown_3005AEC +_08161E5C: .4byte 0x000031DC + thumb_func_end sub_08161E2C + + thumb_func_start sub_08161E60 +sub_08161E60: @ 0x08161E60 + ldr r0, _08161E70 + ldr r0, [r0] + ldr r1, _08161E74 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0, #0x13] + bx lr + .align 2, 0 +_08161E70: .4byte gUnknown_3005AEC +_08161E74: .4byte 0x000031DC + thumb_func_end sub_08161E60 + + thumb_func_start sub_08161E78 +sub_08161E78: @ 0x08161E78 + ldr r3, _08161E84 + ldrb r2, [r3] + strb r2, [r0] + ldrb r0, [r3, #1] + strb r0, [r1] + bx lr + .align 2, 0 +_08161E84: .4byte gUnknown_203B952 + thumb_func_end sub_08161E78 + + thumb_func_start sub_08161E88 +sub_08161E88: @ 0x08161E88 + push {lr} + ldr r1, _08161EA0 + ldr r0, _08161EA4 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_08161E88 + + thumb_func_start sub_08161E9C +sub_08161E9C: @ 0x08161E9C + bx r0 + .align 2, 0 +_08161EA0: .4byte gUnknown_85BE8B0 +_08161EA4: .4byte gUnknown_2037280 + thumb_func_end sub_08161E9C + + thumb_func_start sub_08161EA8 +sub_08161EA8: @ 0x08161EA8 + push {r4, r5, r6, r7, lr} + ldr r4, _08161F48 + ldr r0, [r4] + ldr r1, _08161F4C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _08161F50 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r4] + ldr r2, _08161F54 + adds r0, r0, r2 + movs r7, #0 + movs r1, #1 + strb r1, [r0] + ldr r1, [r4] + adds r2, #0xa + adds r0, r1, r2 + strh r7, [r0] + ldr r0, _08161F4C + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + ldr r2, _08161F4C + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bl sub_081A3864 + ldr r4, [r4] + ldr r0, _08161F58 + adds r3, r4, r0 + ldr r2, _08161F5C + lsls r1, r5, #2 + lsls r0, r6, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldr r0, [r3] + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _08161F22 + lsls r0, r5, #1 + lsls r1, r6, #2 + adds r0, r0, r1 + movs r2, #0xce + lsls r2, r2, #4 + adds r1, r4, r2 + adds r1, r1, r0 + strh r7, [r1] +_08161F22: + bl sub_08164DA4 + ldr r0, _08161F60 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + ldr r0, _08161F64 + strh r7, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08161F48: .4byte gUnknown_3005AF0 +_08161F4C: .4byte 0x00000CA9 +_08161F50: .4byte 0x000040CE +_08161F54: .4byte 0x00000CA8 +_08161F58: .4byte 0x00000CDC +_08161F5C: .4byte gUnknown_85BE8F0 +_08161F60: .4byte gUnknown_3005AEC +_08161F64: .4byte gUnknown_203886A + thumb_func_end sub_08161EA8 + + thumb_func_start sub_08161F68 +sub_08161F68: @ 0x08161F68 + push {r4, r5, r6, lr} + ldr r5, _08161F98 + ldr r0, [r5] + ldr r4, _08161F9C + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r6, r0, #0x1e + ldr r0, _08161FA0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08161FA4 + ldrh r0, [r0] + cmp r0, #1 + beq _08161FA8 + cmp r0, #1 + ble _08161FFC + cmp r0, #2 + beq _08161FBC + cmp r0, #3 + beq _08161FEC + b _08161FFC + .align 2, 0 +_08161F98: .4byte gUnknown_3005AF0 +_08161F9C: .4byte 0x00000CA9 +_08161FA0: .4byte 0x000040CE +_08161FA4: .4byte gUnknown_2037282 +_08161FA8: + adds r0, r6, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08164E98 + ldr r1, _08161FB8 + strh r0, [r1] + b _08161FFC + .align 2, 0 +_08161FB8: .4byte gUnknown_2037290 +_08161FBC: + ldr r4, _08161FE0 + ldr r2, [r5] + ldr r0, _08161FE4 + adds r2, r2, r0 + ldr r3, _08161FE8 + lsls r0, r6, #2 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + strh r0, [r4] + b _08161FFC + .align 2, 0 +_08161FE0: .4byte gUnknown_2037290 +_08161FE4: .4byte 0x00000CDC +_08161FE8: .4byte gUnknown_85BE8F0 +_08161FEC: + ldr r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r2, _08162004 + adds r1, r1, r2 + strb r0, [r1] +_08161FFC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08162004: .4byte 0x00000D07 + thumb_func_end sub_08161F68 + + thumb_func_start sub_08162008 +sub_08162008: @ 0x08162008 + push {r4, r5, r6, r7, lr} + ldr r6, _08162038 + ldr r0, [r6] + ldr r7, _0816203C + adds r0, r0, r7 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _08162040 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08162044 + ldrh r0, [r0] + cmp r0, #1 + beq _08162048 + cmp r0, #1 + ble _081620C8 + cmp r0, #2 + beq _08162064 + cmp r0, #3 + beq _081620B8 + b _081620C8 + .align 2, 0 +_08162038: .4byte gUnknown_3005AF0 +_0816203C: .4byte 0x00000CA9 +_08162040: .4byte 0x000040CE +_08162044: .4byte gUnknown_2037282 +_08162048: + ldr r2, [r6] + lsls r0, r5, #1 + lsls r1, r4, #2 + adds r0, r0, r1 + movs r1, #0xce + lsls r1, r1, #4 + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _08162060 + ldrh r0, [r0] + strh r0, [r2] + b _081620C8 + .align 2, 0 +_08162060: .4byte gUnknown_2037284 +_08162064: + ldr r0, _08162088 + ldrh r0, [r0] + cmp r0, #0 + beq _08162094 + ldr r2, [r6] + ldr r0, _0816208C + adds r2, r2, r0 + ldr r3, _08162090 + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + orrs r0, r1 + str r0, [r2] + b _081620C8 + .align 2, 0 +_08162088: .4byte gUnknown_2037284 +_0816208C: .4byte 0x00000CDC +_08162090: .4byte gUnknown_85BE8F0 +_08162094: + ldr r2, [r6] + ldr r1, _081620B0 + adds r2, r2, r1 + ldr r3, _081620B4 + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + ands r0, r1 + str r0, [r2] + b _081620C8 + .align 2, 0 +_081620B0: .4byte 0x00000CDC +_081620B4: .4byte gUnknown_85BE910 +_081620B8: + ldr r1, [r6] + adds r0, r1, r7 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r2, _081620D0 + adds r1, r1, r2 + strb r0, [r1] +_081620C8: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081620D0: .4byte 0x00000D07 + thumb_func_end sub_08162008 + + thumb_func_start sub_081620D4 +sub_081620D4: @ 0x081620D4 + push {r4, r5, lr} + ldr r0, _08162124 + ldrh r1, [r0] + movs r0, #0xfa + lsls r0, r0, #1 + cmp r1, r0 + bne _081620EE + ldr r0, _08162128 + ldr r0, [r0] + ldr r1, _0816212C + adds r0, r0, r1 + bl sub_081651C8 +_081620EE: + ldr r5, _08162128 + ldr r0, [r5] + ldr r1, _08162130 + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _08162134 + cmp r1, r0 + bhi _08162102 + adds r0, r1, #1 + strh r0, [r2] +_08162102: + ldr r1, [r5] + ldr r4, _08162138 + adds r1, r1, r4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + bl sub_08163DB8 + ldr r1, _0816213C + ldr r0, [r5] + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08162124: .4byte gUnknown_203886A +_08162128: .4byte gUnknown_3005AF0 +_0816212C: .4byte 0x00000BEC +_08162130: .4byte 0x00000D04 +_08162134: .4byte 0x0000270E +_08162138: .4byte 0x00000CB2 +_0816213C: .4byte gUnknown_2037290 + thumb_func_end sub_081620D4 + + thumb_func_start sub_08162140 +sub_08162140: @ 0x08162140 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x3c + movs r0, #0 + str r0, [sp, #0x24] + ldr r4, _081622B4 + ldr r0, [r4] + ldr r1, _081622B8 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + mov sl, r0 + ldr r0, _081622BC + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, _081622C0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816217A + b _081622B0 +_0816217A: + mov r0, sl + ldr r1, [sp, #0x2c] + bl sub_08164E98 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x28] + movs r7, #0 + mov r2, sp + str r2, [sp, #0x34] +_0816218E: + movs r3, #0xec + adds r0, r7, #0 + muls r0, r3, r0 + movs r4, #0xe7 + lsls r4, r4, #3 + adds r0, r0, r4 + ldr r5, _081622B4 + ldr r1, [r5] + movs r2, #0 + mov r8, r2 + mov sb, r2 + movs r5, #0 + adds r3, r7, #1 + str r3, [sp, #0x30] + adds r1, r1, r0 +_081621AC: + ldm r1!, {r0} + mov r4, r8 + orrs r4, r0 + mov r8, r4 + add sb, r0 + adds r5, #1 + cmp r5, #0x39 + bls _081621AC + movs r6, #0 + movs r5, #0 + movs r0, #0xec + adds r2, r7, #0 + muls r2, r0, r2 +_081621C6: + ldr r3, _081622B4 + ldr r1, [r3] + movs r0, #0x2c + muls r0, r5, r0 + adds r0, r0, r2 + adds r1, r1, r0 + ldr r4, _081622C4 + adds r0, r1, r4 + ldrh r0, [r0] + cmp r0, #0 + beq _081621F8 + movs r0, #0xef + lsls r0, r0, #3 + adds r4, r1, r0 + mov r0, sl + str r2, [sp, #0x38] + bl sub_08165A9C + ldrb r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x38] + cmp r1, r0 + bhi _081621F8 + adds r6, #1 +_081621F8: + adds r5, #1 + cmp r5, #3 + ble _081621C6 + ldr r0, _081622C8 + ldr r1, [sp, #0x2c] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r6, r0 + blt _08162252 + ldr r3, _081622B4 + ldr r2, [r3] + movs r4, #0xec + adds r3, r7, #0 + muls r3, r4, r3 + adds r1, r2, r3 + ldr r5, _081622CC + adds r0, r1, r5 + ldrh r0, [r0] + ldr r4, [sp, #0x28] + cmp r0, r4 + bne _08162252 + subs r5, #2 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, sl + bne _08162252 + mov r0, r8 + cmp r0, #0 + beq _08162252 + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r2, r1 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, sb + bne _08162252 + movs r2, #0x96 + lsls r2, r2, #1 + adds r0, r7, r2 + ldr r3, [sp, #0x34] + stm r3!, {r0} + str r3, [sp, #0x34] + ldr r4, [sp, #0x24] + adds r4, #1 + str r4, [sp, #0x24] +_08162252: + ldr r7, [sp, #0x30] + cmp r7, #4 + ble _0816218E + ldr r5, [sp, #0x2c] + cmp r5, #0 + bne _081622AA + bl sub_0816595C + movs r7, #0 + ldr r0, _081622B4 + ldr r0, [r0] + ldr r4, _081622D0 + adds r2, r0, #0 + adds r2, #0xdc + ldr r1, [sp, #0x24] + lsls r0, r1, #2 + mov r5, sp + adds r3, r0, r5 +_08162276: + ldrb r0, [r2] + lsls r1, r0, #0x19 + lsrs r0, r1, #0x1e + cmp r0, #0 + beq _081622A2 + ldrb r0, [r2, #1] + adds r0, r0, r4 + ldrb r0, [r0] + ldr r5, [sp, #0x28] + cmp r0, r5 + bne _081622A2 + lsrs r0, r1, #0x1e + subs r0, #1 + cmp r0, sl + bne _081622A2 + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r7, r1 + stm r3!, {r0} + ldr r5, [sp, #0x24] + adds r5, #1 + str r5, [sp, #0x24] +_081622A2: + adds r2, #0x44 + adds r7, #1 + cmp r7, #3 + ble _08162276 +_081622AA: + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _081622D4 +_081622B0: + movs r0, #0 + b _081622EE + .align 2, 0 +_081622B4: .4byte gUnknown_3005AF0 +_081622B8: .4byte 0x00000CA9 +_081622BC: .4byte 0x000040CE +_081622C0: .4byte 0x000040CF +_081622C4: .4byte 0x0000076C +_081622C8: .4byte gUnknown_85BE93A +_081622CC: .4byte 0x0000073A +_081622D0: .4byte gUnknown_85BE930 +_081622D4: + ldr r4, _08162300 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #0x24] + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + strh r0, [r4] + movs r0, #1 +_081622EE: + add sp, #0x3c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08162300: .4byte gUnknown_203886A + thumb_func_end sub_08162140 + + thumb_func_start sub_08162304 +sub_08162304: @ 0x08162304 + push {r4, r5, r6, r7, lr} + ldr r6, _08162320 + ldr r0, [r6] + ldr r1, _08162324 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + bne _08162328 + bl sub_08165C24 + b _08162444 + .align 2, 0 +_08162320: .4byte gUnknown_3005AF0 +_08162324: .4byte 0x00000CA9 +_08162328: + ldr r0, _08162388 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081A375C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_08165A4C + subs r4, #2 + cmp r4, #1 + bhi _0816239C + ldr r1, [r6] + ldr r2, _0816238C + adds r0, r1, r2 + ldrh r3, [r0] + ldr r2, _08162390 + lsls r0, r3, #2 + ldr r4, _08162394 + adds r1, r1, r4 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2] + ldr r4, _08162398 + lsls r0, r3, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r4] + ldrh r0, [r2] + movs r1, #0 + bl sub_08162528 + ldrh r0, [r4] + movs r1, #1 + bl sub_08162528 + b _08162444 + .align 2, 0 +_08162388: .4byte 0x000040CE +_0816238C: .4byte 0x00000CB2 +_08162390: .4byte gUnknown_203886A +_08162394: .4byte 0x00000CB4 +_08162398: .4byte gUnknown_203886C +_0816239C: + bl sub_08162140 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081623C8 + ldr r4, _081623C0 + ldrh r0, [r4] + movs r1, #0 + bl sub_08162528 + ldr r1, [r6] + ldr r2, _081623C4 + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #1 + adds r2, #2 + b _0816243C + .align 2, 0 +_081623C0: .4byte gUnknown_203886A +_081623C4: .4byte 0x00000CB2 +_081623C8: + lsls r7, r5, #0x18 + adds r5, r6, #0 + ldr r6, _0816244C +_081623CE: + ldr r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsrs r0, r7, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r4, #0 + ldr r1, [r5] + adds r0, r1, r6 + ldrh r0, [r0] + cmp r4, r0 + bge _08162410 + ldr r2, _08162450 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, r3 + beq _08162410 + ldr r0, _08162454 + ldr r1, [r0] + subs r2, #2 + adds r0, r1, r2 + ldrh r2, [r0] + ldr r0, _08162450 + adds r1, r1, r0 +_08162402: + adds r1, #2 + adds r4, #1 + cmp r4, r2 + bge _08162410 + ldrh r0, [r1] + cmp r0, r3 + bne _08162402 +_08162410: + ldr r0, [r5] + ldr r1, _0816244C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _081623CE + ldr r4, _08162458 + strh r3, [r4] + ldrh r0, [r4] + movs r1, #0 + bl sub_08162528 + ldr r0, _08162454 + ldr r1, [r0] + ldr r2, _0816244C + adds r0, r1, r2 + ldrh r2, [r0] + adds r0, r2, #1 + cmp r0, #6 + bgt _08162444 + lsls r0, r2, #1 + ldr r2, _08162450 +_0816243C: + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r4] + strh r0, [r1] +_08162444: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816244C: .4byte 0x00000CB2 +_08162450: .4byte 0x00000CB4 +_08162454: .4byte gUnknown_3005AF0 +_08162458: .4byte gUnknown_203886A + thumb_func_end sub_08162304 + + thumb_func_start sub_0816245C +sub_0816245C: @ 0x0816245C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r0, #7 + bhi _08162498 + cmp r1, #6 + bne _08162484 + ldr r2, _08162480 + lsls r1, r0, #2 + adds r0, r2, #2 + adds r0, r1, r0 + adds r1, r1, r2 + ldrh r0, [r0] + ldrh r4, [r1] + b _0816249E + .align 2, 0 +_08162480: .4byte gUnknown_85BE95E +_08162484: + ldr r2, _08162494 + lsls r1, r3, #2 + adds r0, r2, #2 + adds r0, r1, r0 + adds r1, r1, r2 + ldrh r0, [r0] + ldrh r4, [r1] + b _0816249E + .align 2, 0 +_08162494: .4byte gUnknown_85BE93E +_08162498: + ldr r1, _081624C4 + ldrh r0, [r1, #0x1e] + ldrh r4, [r1, #0x1c] +_0816249E: + subs r0, r0, r4 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __umodsi3 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081624C4: .4byte gUnknown_85BE93E + thumb_func_end sub_0816245C + + thumb_func_start sub_081624C8 +sub_081624C8: @ 0x081624C8 + push {r4, lr} + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r0, #7 + bhi _08162508 + cmp r1, #6 + bne _081624E8 + ldr r1, _081624E4 + lsls r2, r0, #2 + b _081624EC + .align 2, 0 +_081624E4: .4byte gUnknown_85BE95E +_081624E8: + ldr r1, _08162504 + lsls r2, r2, #2 +_081624EC: + adds r0, r1, #2 + adds r0, r2, r0 + adds r2, r2, r1 + ldrh r0, [r0] + ldrh r1, [r2] + subs r0, r0, r1 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldrh r0, [r2] + b _08162518 + .align 2, 0 +_08162504: .4byte gUnknown_85BE93E +_08162508: + ldr r0, _08162524 + ldrh r1, [r0, #0x1e] + ldrh r2, [r0, #0x1c] + subs r1, r1, r2 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r0, [r0, #0x1c] +_08162518: + strh r0, [r4] + strb r1, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08162524: .4byte gUnknown_85BE93E + thumb_func_end sub_081624C8 + + thumb_func_start sub_08162528 +sub_08162528: @ 0x08162528 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _08162550 + ldr r0, _08162548 + ldr r0, [r0] + ldr r1, _0816254C + b _0816258E + .align 2, 0 +_08162548: .4byte gUnknown_3005AF0 +_0816254C: .4byte 0x00000BED +_08162550: + ldr r0, _0816255C + cmp r4, r0 + bne _08162560 + bl sub_081A49C8 + b _08162694 + .align 2, 0 +_0816255C: .4byte 0x000003FE +_08162560: + ldr r0, _08162570 + cmp r4, r0 + bhi _08162578 + ldr r0, _08162574 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + b _0816258E + .align 2, 0 +_08162570: .4byte 0x0000012B +_08162574: .4byte gUnknown_203B954 +_08162578: + ldr r0, _08162594 + cmp r4, r0 + bhi _081625A4 + ldr r0, _08162598 + ldr r0, [r0] + ldr r1, _0816259C + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r1, _081625A0 +_0816258E: + adds r0, r0, r1 + ldrb r2, [r0] + b _081625C8 + .align 2, 0 +_08162594: .4byte 0x0000018F +_08162598: .4byte gUnknown_3005AF0 +_0816259C: .4byte 0xFFFFFED4 +_081625A0: .4byte 0x00000739 +_081625A4: + ldr r3, _081625F8 + ldr r0, _081625FC + ldr r1, [r0] + ldr r0, _08162600 + adds r2, r6, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r2, [r0, #0xa] +_081625C8: + movs r1, #0 + ldr r3, _08162604 + ldrb r0, [r3] + cmp r0, r2 + beq _081625E0 +_081625D2: + adds r1, #1 + cmp r1, #0x1d + bhi _081625E0 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081625D2 +_081625E0: + cmp r1, #0x1e + beq _0816260C + ldr r0, _08162608 + adds r0, r1, r0 + ldrb r1, [r0] + cmp r5, #1 + beq _08162650 + cmp r5, #1 + ble _0816263A + cmp r5, #0xf + bne _0816263A + b _0816265C + .align 2, 0 +_081625F8: .4byte gUnknown_85DC21C +_081625FC: .4byte gUnknown_3005AF0 +_08162600: .4byte 0xFFFFFE70 +_08162604: .4byte gUnknown_85BBE20 +_08162608: .4byte gUnknown_85BBE52 +_0816260C: + movs r1, #0 + ldr r3, _08162644 + ldrb r0, [r3] + cmp r0, r2 + beq _08162624 +_08162616: + adds r1, #1 + cmp r1, #0x13 + bhi _08162624 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08162616 +_08162624: + cmp r1, #0x14 + beq _08162668 + ldr r0, _08162648 + adds r0, r1, r0 + ldrb r1, [r0] + cmp r5, #1 + beq _08162650 + cmp r5, #1 + ble _0816263A + cmp r5, #0xf + beq _0816265C +_0816263A: + ldr r0, _0816264C + bl sub_0809CF88 + b _08162694 + .align 2, 0 +_08162644: .4byte gUnknown_85BBE3E +_08162648: .4byte gUnknown_85BBE70 +_0816264C: .4byte 0x00004010 +_08162650: + ldr r0, _08162658 + bl sub_0809CF88 + b _08162694 + .align 2, 0 +_08162658: .4byte 0x00004011 +_0816265C: + ldr r0, _08162664 + bl sub_0809CF88 + b _08162694 + .align 2, 0 +_08162664: .4byte 0x0000401E +_08162668: + cmp r5, #1 + beq _0816267C + cmp r5, #1 + ble _08162674 + cmp r5, #0xf + beq _0816268C +_08162674: + ldr r0, _08162678 + b _0816267E + .align 2, 0 +_08162678: .4byte 0x00004010 +_0816267C: + ldr r0, _08162688 +_0816267E: + movs r1, #7 + bl sub_0809CF88 + b _08162694 + .align 2, 0 +_08162688: .4byte 0x00004011 +_0816268C: + ldr r0, _0816269C + movs r1, #7 + bl sub_0809CF88 +_08162694: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816269C: .4byte 0x0000401E + thumb_func_end sub_08162528 + + thumb_func_start sub_081626A0 +sub_081626A0: @ 0x081626A0 + push {lr} + movs r0, #0xfa + lsls r0, r0, #1 + movs r1, #0 + bl sub_08162528 + pop {r0} + bx r0 + thumb_func_end sub_081626A0 + + thumb_func_start sub_081626B0 +sub_081626B0: @ 0x081626B0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _081626D4 + ldr r0, _081626CC + ldr r0, [r0] + ldr r1, _081626D0 + b _08162702 + .align 2, 0 +_081626CC: .4byte gUnknown_3005AF0 +_081626D0: .4byte 0x00000BED +_081626D4: + ldr r0, _081626E4 + cmp r4, r0 + bhi _081626EC + ldr r0, _081626E8 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + b _08162702 + .align 2, 0 +_081626E4: .4byte 0x0000012B +_081626E8: .4byte gUnknown_203B954 +_081626EC: + ldr r0, _08162708 + cmp r4, r0 + bhi _08162718 + ldr r0, _0816270C + ldr r0, [r0] + ldr r1, _08162710 + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r1, _08162714 +_08162702: + adds r0, r0, r1 + ldrb r2, [r0] + b _0816273C + .align 2, 0 +_08162708: .4byte 0x0000018F +_0816270C: .4byte gUnknown_3005AF0 +_08162710: .4byte 0xFFFFFED4 +_08162714: .4byte 0x00000739 +_08162718: + ldr r3, _0816275C + ldr r0, _08162760 + ldr r1, [r0] + ldr r0, _08162764 + adds r2, r5, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r2, [r0, #0xa] +_0816273C: + movs r1, #0 + ldr r3, _08162768 + ldrb r0, [r3] + cmp r0, r2 + beq _08162754 +_08162746: + adds r1, #1 + cmp r1, #0x1d + bhi _08162754 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08162746 +_08162754: + cmp r1, #0x1e + beq _08162770 + ldr r0, _0816276C + b _08162796 + .align 2, 0 +_0816275C: .4byte gUnknown_85DC21C +_08162760: .4byte gUnknown_3005AF0 +_08162764: .4byte 0xFFFFFE70 +_08162768: .4byte gUnknown_85BBE20 +_0816276C: .4byte gUnknown_85BBE52 +_08162770: + movs r1, #0 + ldr r3, _08162790 + ldrb r0, [r3] + cmp r0, r2 + beq _08162788 +_0816277A: + adds r1, #1 + cmp r1, #0x13 + bhi _08162788 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _0816277A +_08162788: + cmp r1, #0x14 + bne _08162794 + movs r0, #7 + b _0816279A + .align 2, 0 +_08162790: .4byte gUnknown_85BBE3E +_08162794: + ldr r0, _081627A0 +_08162796: + adds r0, r1, r0 + ldrb r0, [r0] +_0816279A: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081627A0: .4byte gUnknown_85BBE70 + thumb_func_end sub_081626B0 + + thumb_func_start sub_081627A4 +sub_081627A4: @ 0x081627A4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + movs r1, #0 + mov r8, r1 + mov sl, r0 + movs r5, #0 + ldr r2, _08162828 + ldr r0, [r2] + mov r4, sl + ldrb r4, [r4, #0xc] + str r4, [sp, #0x18] + mov sb, r5 + movs r7, #4 + str r7, [sp, #0x1c] + ldr r1, _0816282C + adds r1, r1, r0 + mov ip, r1 +_081627CE: + movs r6, #0 + movs r3, #0 + mov r2, ip + ldrb r0, [r2] + ldr r4, [sp, #0x18] + cmp r0, r4 + bne _081627FE + mov r4, sb + mov r2, sl + adds r2, #0xc +_081627E2: + adds r3, #1 + cmp r3, #3 + bgt _081627FE + ldr r7, _08162828 + ldr r0, [r7] + adds r1, r3, r4 + ldr r7, _0816282C + adds r0, r0, r7 + adds r0, r0, r1 + adds r1, r2, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _081627E2 +_081627FE: + cmp r3, #4 + bne _08162848 + movs r6, #0 + ldr r1, _08162828 + ldr r0, [r1] + ldr r3, _08162830 + adds r0, r0, r3 + ldr r2, [sp, #0x1c] + adds r0, r0, r2 + ldrb r0, [r0] + mov r4, sl + ldrb r4, [r4, #8] + cmp r0, r4 + bne _08162848 + adds r1, r0, #0 + mov r2, sb + adds r2, #4 +_08162820: + cmp r1, #0xff + bne _08162834 + movs r6, #7 + b _08162848 + .align 2, 0 +_08162828: .4byte gUnknown_3005AF0 +_0816282C: .4byte 0x00000744 +_08162830: .4byte 0x0000073C +_08162834: + adds r6, #1 + cmp r6, #6 + bgt _08162848 + ldr r7, _08162874 + ldr r0, [r7] + adds r0, r0, r3 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, r1 + beq _08162820 +_08162848: + cmp r6, #7 + beq _0816285E + movs r0, #0xec + add sb, r0 + ldr r1, [sp, #0x1c] + adds r1, #0xec + str r1, [sp, #0x1c] + add ip, r0 + adds r5, #1 + cmp r5, #4 + ble _081627CE +_0816285E: + cmp r5, #4 + bgt _08162878 + ldr r2, _08162874 + ldr r0, [r2] + movs r1, #0xec + muls r1, r5, r1 + adds r0, r0, r1 + movs r4, #0xe7 + lsls r4, r4, #3 + adds r0, r0, r4 + b _081628B6 + .align 2, 0 +_08162874: .4byte gUnknown_3005AF0 +_08162878: + movs r5, #0 + ldr r7, _081628C0 + ldr r0, [r7] + ldr r1, _081628C4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _081628A2 + adds r3, r7, #0 + adds r2, r1, #0 + movs r1, #0 +_0816288E: + adds r1, #0xec + adds r5, #1 + cmp r5, #4 + bgt _081628C8 + ldr r0, [r3] + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, #0 + bne _0816288E +_081628A2: + cmp r5, #4 + bgt _081628C8 + ldr r1, _081628C0 + ldr r0, [r1] + movs r1, #0xec + muls r1, r5, r1 + adds r0, r0, r1 + movs r2, #0xe7 + lsls r2, r2, #3 + adds r0, r0, r2 +_081628B6: + mov r1, sl + movs r2, #0xec + bl memcpy + b _0816298E + .align 2, 0 +_081628C0: .4byte gUnknown_3005AF0 +_081628C4: .4byte 0x0000073A +_081628C8: + mov r2, sp + ldr r4, _08162920 + ldr r0, [r4] + ldr r3, _08162924 + adds r0, r0, r3 + ldrh r0, [r0] + movs r1, #0 + strh r0, [r2] + add r0, sp, #0xc + strh r1, [r0] + movs r7, #1 + add r8, r7 + movs r5, #1 + add r0, sp, #0xc + mov sb, r0 + mov ip, r3 +_081628E8: + movs r3, #0 + adds r7, r5, #1 + cmp r3, r8 + bge _08162932 + ldr r1, _08162920 + ldr r0, [r1] + movs r2, #0xec + adds r1, r5, #0 + muls r1, r2, r1 + adds r0, r0, r1 + mov r1, ip + adds r4, r0, r1 + mov r6, sp +_08162902: + lsls r0, r3, #1 + add r0, sp + ldrh r2, [r4] + adds r1, r2, #0 + ldrh r0, [r0] + cmp r1, r0 + bhs _08162928 + movs r3, #0 + movs r4, #1 + mov r8, r4 + strh r2, [r6] + mov r0, sb + strh r5, [r0] + b _08162932 + .align 2, 0 +_08162920: .4byte gUnknown_3005AF0 +_08162924: .4byte 0x0000073A +_08162928: + cmp r1, r0 + bhi _08162932 + adds r3, #1 + cmp r3, r8 + blt _08162902 +_08162932: + cmp r3, r8 + bne _08162958 + mov r1, r8 + lsls r2, r1, #1 + mov r4, sp + adds r3, r4, r2 + ldr r1, _081629A0 + ldr r0, [r1] + movs r4, #0xec + adds r1, r5, #0 + muls r1, r4, r1 + adds r0, r0, r1 + add r0, ip + ldrh r0, [r0] + strh r0, [r3] + add r2, sb + strh r5, [r2] + movs r0, #1 + add r8, r0 +_08162958: + adds r5, r7, #0 + cmp r5, #4 + ble _081628E8 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + bl __modsi3 + adds r5, r0, #0 + ldr r0, _081629A0 + ldr r0, [r0] + lsls r1, r5, #1 + add r1, sp + adds r1, #0xc + ldrh r2, [r1] + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r0, r1 + mov r1, sl + movs r2, #0xec + bl memcpy +_0816298E: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081629A0: .4byte gUnknown_3005AF0 + thumb_func_end sub_081627A4 + + thumb_func_start sub_081629A4 +sub_081629A4: @ 0x081629A4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _081629D4 + ldr r1, _081629C8 + ldr r0, _081629CC + ldr r0, [r0] + ldr r2, _081629D0 + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r1 + b _08162ACC + .align 2, 0 +_081629C8: .4byte gUnknown_82EFF00 +_081629CC: .4byte gUnknown_3005AF0 +_081629D0: .4byte 0x00000BED +_081629D4: + ldr r0, _081629E4 + cmp r4, r0 + bne _081629E8 + bl sub_081A48AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08162ACE + .align 2, 0 +_081629E4: .4byte 0x000003FE +_081629E8: + ldr r0, _08162A00 + cmp r4, r0 + bhi _08162A0C + ldr r2, _08162A04 + ldr r0, _08162A08 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r0, r2 + b _08162ACC + .align 2, 0 +_08162A00: .4byte 0x0000012B +_08162A04: .4byte gUnknown_82EFF00 +_08162A08: .4byte gUnknown_203B954 +_08162A0C: + ldr r0, _08162A30 + cmp r4, r0 + bhi _08162A68 + ldr r0, _08162A34 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162A3C + ldr r4, _08162A38 + bl sub_081861E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + b _08162ACC + .align 2, 0 +_08162A30: .4byte 0x0000018F +_08162A34: .4byte gUnknown_2022C90 +_08162A38: .4byte gUnknown_82EFF00 +_08162A3C: + ldr r3, _08162A58 + ldr r0, _08162A5C + ldr r0, [r0] + ldr r1, _08162A60 + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r2, _08162A64 + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r3 + b _08162ACC + .align 2, 0 +_08162A58: .4byte gUnknown_82EFF00 +_08162A5C: .4byte gUnknown_3005AF0 +_08162A60: .4byte 0xFFFFFED4 +_08162A64: .4byte 0x00000739 +_08162A68: + ldr r0, _08162AA0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08162AB4 + ldr r4, _08162AA4 + ldr r3, _08162AA8 + ldr r0, _08162AAC + ldr r1, [r0] + ldr r0, _08162AB0 + adds r2, r5, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r0, [r0, #0xa] + adds r0, r0, r4 + b _08162ACC + .align 2, 0 +_08162AA0: .4byte gUnknown_2022C90 +_08162AA4: .4byte gUnknown_82EFF00 +_08162AA8: .4byte gUnknown_85DC21C +_08162AAC: .4byte gUnknown_3005AF0 +_08162AB0: .4byte 0xFFFFFE70 +_08162AB4: + ldr r5, _08162AD4 + ldr r4, _08162AD8 + bl sub_081861EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #4 + adds r1, r1, r4 + ldrb r0, [r1, #0xa] + adds r0, r0, r5 +_08162ACC: + ldrb r0, [r0] +_08162ACE: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08162AD4: .4byte gUnknown_82EFF00 +_08162AD8: .4byte gUnknown_85DC21C + thumb_func_end sub_081629A4 + + thumb_func_start sub_08162ADC +sub_08162ADC: @ 0x08162ADC + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _08162B0C + ldr r1, _08162B00 + ldr r0, _08162B04 + ldr r0, [r0] + ldr r2, _08162B08 + adds r0, r0, r2 + ldrb r0, [r0] + b _08162B2A + .align 2, 0 +_08162B00: .4byte gUnknown_82EFF52 +_08162B04: .4byte gUnknown_3005AF0 +_08162B08: .4byte 0x00000BED +_08162B0C: + ldr r0, _08162B1C + cmp r4, r0 + bne _08162B20 + bl sub_081A48F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08162C22 + .align 2, 0 +_08162B1C: .4byte 0x000003FE +_08162B20: + ldr r0, _08162B30 + cmp r4, r0 + bne _08162B3C + ldr r0, _08162B34 + ldr r1, _08162B38 +_08162B2A: + adds r0, r0, r1 + ldrb r0, [r0] + b _08162C22 + .align 2, 0 +_08162B30: .4byte 0x00000C03 +_08162B34: .4byte gUnknown_82E383C +_08162B38: .4byte 0x00006481 +_08162B3C: + ldr r0, _08162B58 + cmp r4, r0 + bhi _08162B64 + ldr r2, _08162B5C + ldr r0, _08162B60 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + b _08162C22 + .align 2, 0 +_08162B58: .4byte 0x0000012B +_08162B5C: .4byte gUnknown_82EFF52 +_08162B60: .4byte gUnknown_203B954 +_08162B64: + ldr r0, _08162B88 + cmp r4, r0 + bhi _08162BC0 + ldr r0, _08162B8C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162B94 + ldr r4, _08162B90 + bl sub_081861E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r0, [r0] + b _08162C22 + .align 2, 0 +_08162B88: .4byte 0x0000018F +_08162B8C: .4byte gUnknown_2022C90 +_08162B90: .4byte gUnknown_82EFF52 +_08162B94: + ldr r3, _08162BB0 + ldr r0, _08162BB4 + ldr r0, [r0] + ldr r1, _08162BB8 + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r2, _08162BBC + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r3 + ldrb r0, [r0] + b _08162C22 + .align 2, 0 +_08162BB0: .4byte gUnknown_82EFF52 +_08162BB4: .4byte gUnknown_3005AF0 +_08162BB8: .4byte 0xFFFFFED4 +_08162BBC: .4byte 0x00000739 +_08162BC0: + ldr r0, _08162BEC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162BF8 + ldr r5, _08162BF0 + ldr r4, _08162BF4 + bl sub_081861EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #4 + adds r1, r1, r4 + ldrb r0, [r1, #0xa] + adds r0, r0, r5 + ldrb r0, [r0] + b _08162C22 + .align 2, 0 +_08162BEC: .4byte gUnknown_2022C90 +_08162BF0: .4byte gUnknown_82EFF52 +_08162BF4: .4byte gUnknown_85DC21C +_08162BF8: + ldr r4, _08162C28 + ldr r3, _08162C2C + ldr r0, _08162C30 + ldr r1, [r0] + ldr r0, _08162C34 + adds r2, r5, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r0, [r0, #0xa] + adds r0, r0, r4 + ldrb r0, [r0] +_08162C22: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08162C28: .4byte gUnknown_82EFF52 +_08162C2C: .4byte gUnknown_85DC21C +_08162C30: .4byte gUnknown_3005AF0 +_08162C34: .4byte 0xFFFFFE70 + thumb_func_end sub_08162ADC + + thumb_func_start sub_08162C38 +sub_08162C38: @ 0x08162C38 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _08162C5C + ldr r0, _08162C54 + ldr r0, [r0] + ldr r1, _08162C58 + b _08162CAC + .align 2, 0 +_08162C54: .4byte gUnknown_3005AF0 +_08162C58: .4byte 0x00000BED +_08162C5C: + ldr r0, _08162C6C + cmp r4, r0 + bhi _08162C74 + ldr r0, _08162C70 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + b _08162CAC + .align 2, 0 +_08162C6C: .4byte 0x0000012B +_08162C70: .4byte gUnknown_203B954 +_08162C74: + ldr r0, _08162C94 + cmp r4, r0 + bhi _08162CC0 + ldr r0, _08162C98 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162C9C + bl sub_081861E0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08162D10 + .align 2, 0 +_08162C94: .4byte 0x0000018F +_08162C98: .4byte gUnknown_2022C90 +_08162C9C: + ldr r0, _08162CB4 + ldr r0, [r0] + ldr r1, _08162CB8 + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r1, _08162CBC +_08162CAC: + adds r0, r0, r1 + ldrb r0, [r0] + b _08162D10 + .align 2, 0 +_08162CB4: .4byte gUnknown_3005AF0 +_08162CB8: .4byte 0xFFFFFED4 +_08162CBC: .4byte 0x00000739 +_08162CC0: + ldr r0, _08162CE4 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162CEC + ldr r4, _08162CE8 + bl sub_081861EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #4 + adds r1, r1, r4 + ldrb r0, [r1, #0xa] + b _08162D10 + .align 2, 0 +_08162CE4: .4byte gUnknown_2022C90 +_08162CE8: .4byte gUnknown_85DC21C +_08162CEC: + ldr r3, _08162D18 + ldr r0, _08162D1C + ldr r1, [r0] + ldr r0, _08162D20 + adds r2, r5, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r0, [r0, #0xa] +_08162D10: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08162D18: .4byte gUnknown_85DC21C +_08162D1C: .4byte gUnknown_3005AF0 +_08162D20: .4byte 0xFFFFFE70 + thumb_func_end sub_08162C38 + + thumb_func_start sub_08162D24 +sub_08162D24: @ 0x08162D24 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r5, r0 + bne _08162D58 + ldr r0, _08162D54 + ldr r0, [r0] + movs r1, #0xbf + lsls r1, r1, #4 + adds r2, r0, r1 +_08162D44: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + ble _08162D44 + b _08162E76 + .align 2, 0 +_08162D54: .4byte gUnknown_3005AF0 +_08162D58: + ldr r0, _08162D68 + cmp r5, r0 + bne _08162D6C + adds r0, r6, #0 + bl sub_081A4944 + b _08162E7C + .align 2, 0 +_08162D68: .4byte 0x000003FE +_08162D6C: + ldr r0, _08162D84 + cmp r5, r0 + bne _08162D8C + ldr r2, _08162D88 +_08162D74: + adds r0, r6, r4 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + ble _08162D74 + b _08162E76 + .align 2, 0 +_08162D84: .4byte 0x00000C03 +_08162D88: .4byte gUnknown_82E9CC0 +_08162D8C: + ldr r0, _08162DB0 + cmp r5, r0 + bhi _08162DB8 + ldr r0, _08162DB4 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r5, r0 + adds r0, r0, r1 + adds r2, r0, #4 +_08162D9E: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + ble _08162D9E + b _08162E76 + .align 2, 0 +_08162DB0: .4byte 0x0000012B +_08162DB4: .4byte gUnknown_203B954 +_08162DB8: + ldr r0, _08162DD4 + cmp r5, r0 + bhi _08162E0C + ldr r0, _08162DD8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162DDC + adds r0, r6, #0 + bl sub_081861C0 + b _08162E7C + .align 2, 0 +_08162DD4: .4byte 0x0000018F +_08162DD8: .4byte gUnknown_2022C90 +_08162DDC: + ldr r0, _08162E00 + ldr r1, [r0] + ldr r0, _08162E04 + adds r2, r5, r0 + movs r0, #0xec + muls r0, r2, r0 + ldr r2, _08162E08 + adds r1, r1, r2 + adds r2, r0, r1 +_08162DEE: + adds r1, r6, r4 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r4, #1 + cmp r4, #6 + ble _08162DEE + b _08162E76 + .align 2, 0 +_08162E00: .4byte gUnknown_3005AF0 +_08162E04: .4byte 0xFFFFFED4 +_08162E08: .4byte 0x0000073C +_08162E0C: + ldr r0, _08162E3C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _08162E44 + ldr r5, _08162E40 +_08162E1C: + bl sub_081861EC + adds r2, r6, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #4 + adds r1, r4, r1 + adds r1, r1, r5 + ldrb r0, [r1] + strb r0, [r2] + adds r4, #1 + cmp r4, #6 + ble _08162E1C + b _08162E76 + .align 2, 0 +_08162E3C: .4byte gUnknown_2022C90 +_08162E40: .4byte gUnknown_85DC21C +_08162E44: + ldr r7, _08162E84 + ldr r0, _08162E88 + ldr r2, [r0] + ldr r0, _08162E8C + adds r1, r5, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r3, r2, #0 + adds r3, #0xdc +_08162E5A: + adds r2, r6, r4 + ldrb r1, [r3] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r4, r0 + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r2] + adds r4, #1 + cmp r4, #6 + ble _08162E5A +_08162E76: + adds r1, r6, r4 + movs r0, #0xff + strb r0, [r1] +_08162E7C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08162E84: .4byte gUnknown_85DC21C +_08162E88: .4byte gUnknown_3005AF0 +_08162E8C: .4byte 0xFFFFFE70 + thumb_func_end sub_08162D24 + + thumb_func_start sub_08162E90 +sub_08162E90: @ 0x08162E90 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r4, r0 + bne _08162EB4 + ldr r0, _08162EAC + ldr r0, [r0] + ldr r1, _08162EB0 + b _08162EF6 + .align 2, 0 +_08162EAC: .4byte gUnknown_3005AF0 +_08162EB0: .4byte 0x00000BED +_08162EB4: + ldr r0, _08162EC4 + cmp r4, r0 + bne _08162EC8 + bl sub_081A49A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08162F62 + .align 2, 0 +_08162EC4: .4byte 0x000003FE +_08162EC8: + ldr r0, _08162ED8 + cmp r4, r0 + bhi _08162EE0 + ldr r0, _08162EDC + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + b _08162EF6 + .align 2, 0 +_08162ED8: .4byte 0x0000012B +_08162EDC: .4byte gUnknown_203B954 +_08162EE0: + ldr r0, _08162EFC + cmp r4, r0 + bhi _08162F0C + ldr r0, _08162F00 + ldr r0, [r0] + ldr r1, _08162F04 + adds r2, r4, r1 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r1, _08162F08 +_08162EF6: + adds r0, r0, r1 + ldrb r2, [r0] + b _08162F30 + .align 2, 0 +_08162EFC: .4byte 0x0000018F +_08162F00: .4byte gUnknown_3005AF0 +_08162F04: .4byte 0xFFFFFED4 +_08162F08: .4byte 0x00000739 +_08162F0C: + ldr r3, _08162F50 + ldr r0, _08162F54 + ldr r1, [r0] + ldr r0, _08162F58 + adds r2, r5, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r1, [r1] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r3 + ldrb r2, [r0, #0xa] +_08162F30: + movs r1, #0 + ldr r3, _08162F5C + ldrb r0, [r3] + cmp r0, r2 + beq _08162F48 +_08162F3A: + adds r1, #1 + cmp r1, #0x13 + bhi _08162F48 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08162F3A +_08162F48: + cmp r1, #0x14 + bne _08162F60 + movs r0, #0 + b _08162F62 + .align 2, 0 +_08162F50: .4byte gUnknown_85DC21C +_08162F54: .4byte gUnknown_3005AF0 +_08162F58: .4byte 0xFFFFFE70 +_08162F5C: .4byte gUnknown_85BBE3E +_08162F60: + movs r0, #1 +_08162F62: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08162E90 + + thumb_func_start sub_08162F68 +sub_08162F68: @ 0x08162F68 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08067710 + ldr r0, _08162F88 + ldrh r0, [r0] + movs r1, #0 + adds r2, r4, #0 + bl sub_08162FE4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08162F88: .4byte gUnknown_203886A + thumb_func_end sub_08162F68 + + thumb_func_start sub_08162F8C +sub_08162F8C: @ 0x08162F8C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08067710 + ldr r0, _08162FB8 + ldrh r0, [r0] + movs r1, #0 + adds r2, r4, #0 + bl sub_08162FE4 + ldr r0, _08162FBC + ldrh r0, [r0] + movs r1, #3 + adds r2, r4, #0 + bl sub_08162FE4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08162FB8: .4byte gUnknown_203886A +_08162FBC: .4byte gUnknown_203886C + thumb_func_end sub_08162F8C + + thumb_func_start sub_08162FC0 +sub_08162FC0: @ 0x08162FC0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08067710 + ldr r0, _08162FE0 + ldrh r0, [r0] + movs r1, #0 + adds r2, r4, #0 + bl sub_08165CB0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08162FE0: .4byte gUnknown_203886A + thumb_func_end sub_08162FC0 + + thumb_func_start sub_08162FE4 +sub_08162FE4: @ 0x08162FE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + add r4, sp, #0x14 + movs r0, #0xff + strb r0, [r4] + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] + ldr r0, _08163048 + cmp r5, r0 + bhi _08163058 + adds r0, r5, #0 + bl sub_08165B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, _0816304C + ldrh r2, [r0] + ldr r0, _08163050 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r2, r0 + adds r0, r0, r1 + ldr r0, [r0, #0x30] + str r0, [sp, #0x2c] + movs r0, #0 + str r0, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldrh r1, [r2] + ldr r0, _08163054 + cmp r1, r0 + bne _08163044 + b _08163198 +_08163044: + b _08163180 + .align 2, 0 +_08163048: .4byte 0x0000012B +_0816304C: .4byte gUnknown_203886A +_08163050: .4byte gUnknown_203B954 +_08163054: .4byte 0x0000FFFF +_08163058: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r5, r0 + bne _081630A0 + ldr r7, [sp, #0x18] + adds r0, r7, #3 + cmp r7, r0 + blt _0816306A + b _08163346 +_0816306A: + ldr r4, _08163098 +_0816306C: + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _0816309C + adds r0, r0, r1 + ldr r5, [sp, #0x18] + subs r2, r7, r5 + movs r1, #0x2c + muls r2, r1, r2 + movs r6, #0xc2 + lsls r6, r6, #4 + adds r2, r2, r6 + ldr r1, [r4] + adds r1, r1, r2 + bl sub_08067D80 + adds r7, #1 + adds r0, r5, #0 + adds r0, #3 + cmp r7, r0 + blt _0816306C + b _08163346 + .align 2, 0 +_08163098: .4byte gUnknown_3005AF0 +_0816309C: .4byte gUnknown_20243E8 +_081630A0: + ldr r0, _081630AC + cmp r5, r0 + bne _081630B0 + bl sub_081A49F4 + b _08163346 + .align 2, 0 +_081630AC: .4byte 0x000003FE +_081630B0: + ldr r0, _08163120 + cmp r5, r0 + bhi _08163138 + movs r6, #0 + ldr r7, [sp, #0x18] + ldr r1, [sp, #0x1c] + adds r0, r7, r1 + cmp r7, r0 + blt _081630C4 + b _08163346 +_081630C4: + ldr r2, _08163124 + adds r1, r5, r2 + movs r0, #0xec + adds r2, r1, #0 + muls r2, r0, r2 + mov r8, r2 + muls r0, r5, r0 + ldr r5, _08163128 + adds r4, r0, r5 +_081630D6: + ldr r0, _0816312C + ldr r3, [r0] + movs r0, #0x2c + adds r2, r6, #0 + muls r2, r0, r2 + mov r1, r8 + adds r0, r2, r1 + adds r1, r3, r0 + ldr r5, _08163130 + adds r0, r1, r5 + ldrh r0, [r0] + cmp r0, #0 + beq _08163110 + adds r5, #0xc + adds r0, r1, r5 + ldrb r0, [r0] + ldr r1, [sp, #0x20] + cmp r0, r1 + bhi _08163110 + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _08163134 + adds r0, r0, r1 + adds r1, r3, r4 + adds r2, #0x34 + adds r1, r1, r2 + movs r2, #0 + bl sub_08067ED0 +_08163110: + adds r6, #1 + adds r7, #1 + ldr r2, [sp, #0x18] + ldr r5, [sp, #0x1c] + adds r0, r2, r5 + cmp r7, r0 + blt _081630D6 + b _08163346 + .align 2, 0 +_08163120: .4byte 0x0000018F +_08163124: .4byte 0xFFFFFED4 +_08163128: .4byte 0xFFFEF2A8 +_0816312C: .4byte gUnknown_3005AF0 +_08163130: .4byte 0x0000076C +_08163134: .4byte gUnknown_20243E8 +_08163138: + ldr r7, [sp, #0x18] + adds r0, r7, #3 + cmp r7, r0 + blt _08163142 + b _08163346 +_08163142: + ldr r6, _08163174 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r1, _08163178 + adds r5, r0, r1 + movs r4, #0 +_08163150: + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _0816317C + adds r0, r0, r1 + ldr r1, [r6] + adds r1, r1, r5 + lsrs r2, r4, #0x18 + bl sub_08068080 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r4, r4, r2 + adds r7, #1 + ldr r0, [sp, #0x18] + adds r0, #3 + cmp r7, r0 + blt _08163150 + b _08163346 + .align 2, 0 +_08163174: .4byte gUnknown_3005AF0 +_08163178: .4byte 0xFFFF969C +_0816317C: .4byte gUnknown_20243E8 +_08163180: + ldr r0, [sp, #0x28] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x28] + lsls r0, r0, #1 + ldr r5, [sp, #0x2c] + adds r0, r0, r5 + ldrh r1, [r0] + ldr r0, _081631E8 + cmp r1, r0 + bne _08163180 +_08163198: + movs r7, #0 + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x30] + ldr r6, [sp, #0x1c] + cmp r7, r6 + bne _081631B6 + b _08163346 +_081631B6: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #0x28] + bl __modsi3 + lsls r0, r0, #1 + ldr r1, [sp, #0x2c] + adds r0, r0, r1 + ldrh r4, [r0] + ldr r2, [sp, #0x20] + cmp r2, #0x32 + beq _081631D6 + cmp r2, #0x14 + bne _081631DE +_081631D6: + ldr r0, _081631EC + cmp r4, r0 + bls _081631DE + b _0816333E +_081631DE: + movs r6, #0 + ldr r5, [sp, #0x18] + adds r5, r5, r7 + mov r8, r5 + b _081631F2 + .align 2, 0 +_081631E8: .4byte 0x0000FFFF +_081631EC: .4byte 0x00000351 +_081631F0: + adds r6, #1 +_081631F2: + cmp r6, r8 + bge _08163216 + movs r1, #0x64 + adds r0, r6, #0 + muls r0, r1, r0 + ldr r2, _08163358 + adds r0, r0, r2 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, _0816335C + ldr r2, [r1] + lsls r1, r4, #4 + adds r1, r1, r2 + ldrh r1, [r1] + cmp r0, r1 + bne _081631F0 +_08163216: + cmp r6, r8 + beq _0816321C + b _0816333E +_0816321C: + movs r6, #0 + cmp r6, r8 + bge _08163266 + ldr r5, _08163360 + mov sb, r5 + movs r3, #0 +_08163228: + ldr r0, _08163358 + adds r5, r3, r0 + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + str r3, [sp, #0x38] + bl sub_0806A058 + ldr r3, [sp, #0x38] + cmp r0, #0 + beq _0816325E + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + ldr r1, _0816335C + ldr r2, [r1] + lsls r1, r4, #4 + adds r1, r1, r2 + ldrb r1, [r1, #0xa] + lsls r1, r1, #1 + add r1, sb + ldr r3, [sp, #0x38] + ldrh r1, [r1] + cmp r0, r1 + beq _08163266 +_0816325E: + adds r3, #0x64 + adds r6, #1 + cmp r6, r8 + blt _08163228 +_08163266: + cmp r6, r8 + bne _0816333E + movs r6, #0 + cmp r6, r7 + bge _08163288 + add r0, sp, #0xc + ldrh r0, [r0] + cmp r0, r4 + beq _08163288 + add r1, sp, #0xc +_0816327A: + adds r1, #2 + adds r6, #1 + cmp r6, r7 + bge _08163288 + ldrh r0, [r1] + cmp r0, r4 + bne _0816327A +_08163288: + cmp r6, r7 + bne _0816333E + lsls r0, r7, #1 + add r0, sp + adds r0, #0xc + strh r4, [r0] + movs r1, #0x64 + mov r0, r8 + muls r0, r1, r0 + ldr r2, _08163358 + adds r0, r0, r2 + ldr r5, _0816335C + ldr r2, [r5] + lsls r4, r4, #4 + adds r2, r4, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + ldr r6, [sp, #0x24] + str r6, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + ldr r2, [sp, #0x30] + str r2, [sp, #8] + ldr r2, [sp, #0x20] + bl sub_08068174 + movs r0, #0xff + mov r6, sp + strb r0, [r6, #0x14] + movs r6, #0 + adds r0, r7, #1 + str r0, [sp, #0x34] + mov sb, r4 + movs r0, #0x64 + mov r3, r8 + muls r3, r0, r3 + mov r1, sb + str r1, [sp, #0x3c] + ldr r2, _08163358 + mov sl, r2 +_081632D8: + ldr r0, [r5] + ldr r7, [sp, #0x3c] + adds r0, r7, r0 + lsls r4, r6, #1 + adds r0, #2 + adds r0, r0, r4 + ldrh r1, [r0] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov r7, sl + adds r0, r3, r7 + str r3, [sp, #0x38] + bl sub_08068D34 + ldr r0, [r5] + ldr r1, [sp, #0x3c] + adds r0, r1, r0 + adds r0, #2 + adds r0, r0, r4 + ldrh r0, [r0] + ldr r3, [sp, #0x38] + cmp r0, #0xda + bne _0816330C + movs r0, #0 + mov r2, sp + strb r0, [r2, #0x14] +_0816330C: + adds r6, #1 + cmp r6, #3 + ble _081632D8 + movs r5, #0x64 + mov r4, r8 + muls r4, r5, r4 + ldr r6, _08163358 + adds r4, r4, r6 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0x14 + bl sub_0806A774 + ldr r0, _0816335C + ldr r0, [r0] + add r0, sb + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _08163360 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + ldr r7, [sp, #0x34] +_0816333E: + ldr r0, [sp, #0x1c] + cmp r7, r0 + beq _08163346 + b _081631B6 +_08163346: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08163358: .4byte gUnknown_20243E8 +_0816335C: .4byte gUnknown_203B958 +_08163360: .4byte gUnknown_85ADBF4 + thumb_func_end sub_08162FE4 + + thumb_func_start sub_08163364 +sub_08163364: @ 0x08163364 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #8] + movs r1, #0xff + add r0, sp, #4 + strb r1, [r0] + ldr r0, _08163438 + ldr r2, [r0] + movs r0, #0xdc + adds r0, r0, r2 + mov sl, r0 + ldrb r0, [r0, #1] + movs r1, #9 + str r1, [sp, #0x10] + cmp r0, #4 + bhi _08163394 + movs r0, #6 + str r0, [sp, #0x10] +_08163394: + ldr r1, _0816343C + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + movs r1, #0x32 + str r1, [sp, #0xc] + cmp r0, #0 + beq _081633AA + movs r0, #0x64 + str r0, [sp, #0xc] +_081633AA: + movs r7, #0 + adds r2, #0xe2 + str r2, [sp, #0x14] + add r1, sp, #4 + mov sb, r1 +_081633B4: + ldr r2, [sp, #8] + adds r6, r2, r7 + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _08163440 + adds r0, r0, r1 + lsls r5, r7, #1 + adds r4, r5, r7 + lsls r4, r4, #2 + mov r2, sl + adds r1, r2, r4 + ldrh r1, [r1, #4] + movs r2, #8 + str r2, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl sub_08067CF8 + movs r0, #0xff + mov r1, sb + strb r0, [r1] + adds r2, r7, #1 + mov r8, r2 + movs r1, #3 +_081633E4: + ldr r2, [sp, #0x14] + adds r0, r2, r4 + ldrh r0, [r0] + cmp r0, #0xda + bne _081633F4 + movs r2, #0 + mov r0, sb + strb r2, [r0] +_081633F4: + adds r4, #2 + subs r1, #1 + cmp r1, #0 + bge _081633E4 + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _08163440 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #4 + bl sub_0806A774 + adds r2, r5, r7 + lsls r2, r2, #2 + add r2, sl + adds r2, #0xe + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov r7, r8 + cmp r7, #3 + bne _081633B4 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08163438: .4byte gUnknown_3005AF0 +_0816343C: .4byte 0x00000CA9 +_08163440: .4byte gUnknown_20243E8 + thumb_func_end sub_08163364 + + thumb_func_start sub_08163444 +sub_08163444: @ 0x08163444 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _08163468 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r4, r0 + adds r0, r0, r1 + ldr r5, [r0, #0x30] + movs r4, #0 + ldrh r1, [r5] + b _08163478 + .align 2, 0 +_08163468: .4byte gUnknown_203B954 +_0816346C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r1, [r0] +_08163478: + ldr r0, _081634A8 + cmp r1, r0 + bne _0816346C +_0816347E: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + cmp r6, #0x32 + beq _0816349A + cmp r6, #0x14 + bne _081634A0 +_0816349A: + ldr r0, _081634AC + cmp r1, r0 + bhi _0816347E +_081634A0: + adds r0, r1, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081634A8: .4byte 0x0000FFFF +_081634AC: .4byte 0x00000351 + thumb_func_end sub_08163444 + + thumb_func_start sub_081634B0 +sub_081634B0: @ 0x081634B0 + push {lr} + bl sub_08067710 + ldr r0, _081634D4 + ldr r0, [r0] + ldr r1, _081634D8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _081634E0 + ldr r0, _081634DC + ldrh r0, [r0] + movs r1, #0 + bl sub_081634F4 + b _081634EA + .align 2, 0 +_081634D4: .4byte gUnknown_3005AF0 +_081634D8: .4byte 0x00000CA9 +_081634DC: .4byte gUnknown_203886A +_081634E0: + ldr r0, _081634F0 + ldrh r0, [r0] + movs r1, #0 + bl sub_081636BC +_081634EA: + pop {r0} + bx r0 + .align 2, 0 +_081634F0: .4byte gUnknown_203886A + thumb_func_end sub_081634B0 + + thumb_func_start sub_081634F4 +sub_081634F4: @ 0x081634F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r3, r2, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x10] + ldr r0, _0816354C + cmp r2, r0 + bhi _0816356A + ldr r4, _08163550 + ldr r0, _08163554 + bl sub_0809CF6C + lsls r0, r0, #0x18 + ldr r4, [r4] + lsrs r0, r0, #0x16 + movs r2, #0xce + lsls r2, r2, #4 + adds r1, r4, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r3, _08163558 + adds r4, r4, r3 + ldrh r0, [r4] + cmp r0, #5 + bhi _0816355C + adds r0, r1, #0 + movs r1, #0 + bl sub_081A6A40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081635C6 + .align 2, 0 +_0816354C: .4byte 0x0000012B +_08163550: .4byte gUnknown_3005AF0 +_08163554: .4byte 0x000040CE +_08163558: .4byte 0x00000CB2 +_0816355C: + adds r0, r1, #0 + movs r1, #1 + bl sub_081A6A40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081635C6 +_0816356A: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r2, r0 + bne _081635B4 + ldr r7, [sp, #0x10] + adds r0, r7, #3 + cmp r7, r0 + blt _0816357C + b _08163696 +_0816357C: + ldr r4, _081635AC +_0816357E: + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _081635B0 + adds r0, r0, r1 + ldr r1, [sp, #0x10] + subs r2, r7, r1 + movs r1, #0x2c + muls r2, r1, r2 + movs r3, #0xc2 + lsls r3, r3, #4 + adds r2, r2, r3 + ldr r1, [r4] + adds r1, r1, r2 + bl sub_08067D80 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, [sp, #0x10] + adds r0, #3 + cmp r7, r0 + blt _0816357E + b _08163696 + .align 2, 0 +_081635AC: .4byte gUnknown_3005AF0 +_081635B0: .4byte gUnknown_20243E8 +_081635B4: + ldr r0, _081635C0 + cmp r3, r0 + bne _081635C4 + bl sub_081A6A68 + b _08163696 + .align 2, 0 +_081635C0: .4byte 0x000003FE +_081635C4: + movs r0, #0x1f +_081635C6: + str r0, [sp, #0x18] + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r0, _081636A8 + ldr r1, [r0] + ldrb r2, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + orrs r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r2, r0 + mov r8, r2 + movs r7, #0 +_081635EE: + ldr r1, _081636AC + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + mov sb, r0 + ldr r3, [sp, #0x10] + adds r5, r3, r7 + movs r0, #0x64 + adds r6, r5, #0 + muls r6, r0, r6 + ldr r1, _081636B0 + adds r0, r6, r1 + ldr r3, _081636B4 + ldr r2, [r3] + mov r1, sb + lsls r4, r1, #4 + adds r2, r4, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + mov sl, r3 + ldr r3, [sp, #0x18] + str r3, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + ldr r2, [sp, #0x14] + mov r3, sl + bl sub_08068174 + movs r1, #0 + add r0, sp, #0xc + strb r1, [r0] + movs r3, #0 + adds r7, #1 + mov sl, r7 + adds r7, r4, #0 +_08163638: + ldr r0, _081636B4 + ldr r1, [r0] + mov r2, sb + lsls r0, r2, #4 + adds r0, r0, r1 + lsls r1, r3, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r2, _081636B0 + adds r0, r6, r2 + adds r2, r3, #0 + str r3, [sp, #0x1c] + bl sub_081A6DBC + ldr r3, [sp, #0x1c] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _08163638 + movs r3, #0x64 + adds r4, r5, #0 + muls r4, r3, r4 + ldr r0, _081636B0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0xc + bl sub_0806A774 + ldr r1, _081636B4 + ldr r0, [r1] + adds r0, r7, r0 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _081636B8 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov r2, sl + lsls r0, r2, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bls _081635EE +_08163696: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081636A8: .4byte gUnknown_3005AF0 +_081636AC: .4byte gUnknown_3005FD8 +_081636B0: .4byte gUnknown_20243E8 +_081636B4: .4byte gUnknown_203B958 +_081636B8: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081634F4 + + thumb_func_start sub_081636BC +sub_081636BC: @ 0x081636BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x10] + ldr r0, _081637B8 + ldr r1, [r0] + ldrb r0, [r1, #0xa] + mov sb, r0 + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + mov r2, sb + orrs r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r2, r0 + mov sb, r2 + movs r7, #0 + mov r8, r7 +_081636F0: + ldr r1, _081637BC + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r5, [sp, #0x10] + add r5, r8 + movs r7, #0x64 + adds r6, r5, #0 + muls r6, r7, r6 + ldr r1, _081637C0 + adds r0, r6, r1 + ldr r7, _081637C4 + ldr r2, [r7] + lsls r4, r4, #4 + adds r2, r4, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + movs r7, #0 + str r7, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + mov r2, sb + str r2, [sp, #8] + movs r2, #0x1e + bl sub_08068174 + movs r1, #0 + add r0, sp, #0xc + strb r1, [r0] + mov sl, r5 + mov r0, r8 + adds r0, #1 + str r0, [sp, #0x14] + mov r8, r4 + mov r5, r8 +_08163738: + ldr r1, _081637C4 + ldr r0, [r1] + adds r0, r5, r0 + lsls r4, r7, #1 + adds r0, #2 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r2, _081637C0 + adds r0, r6, r2 + adds r2, r7, #0 + bl sub_081A6DBC + ldr r1, _081637C4 + ldr r0, [r1] + adds r0, r5, r0 + adds r0, #2 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0xda + bne _08163766 + movs r1, #0 + add r0, sp, #0xc + strb r1, [r0] +_08163766: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _08163738 + movs r2, #0x64 + mov r4, sl + muls r4, r2, r4 + ldr r7, _081637C0 + adds r4, r4, r7 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0xc + bl sub_0806A774 + ldr r1, _081637C4 + ldr r0, [r1] + add r0, r8 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _081637C8 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + ldr r2, [sp, #0x14] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #2 + bls _081636F0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081637B8: .4byte gUnknown_3005AF0 +_081637BC: .4byte gUnknown_3005FD8 +_081637C0: .4byte gUnknown_20243E8 +_081637C4: .4byte gUnknown_203B958 +_081637C8: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081636BC + + thumb_func_start sub_081637CC +sub_081637CC: @ 0x081637CC + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #3 + movs r2, #2 + movs r3, #0x14 + bl sub_0811F2A4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08163824 + ldr r5, _08163820 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #2 + movs r3, #3 + bl sub_0811F1CC + ldrb r0, [r5] + movs r1, #1 + cmp r0, #0xfe + beq _08163802 + adds r2, r5, #0 +_081637F8: + adds r0, r1, r2 + ldrb r0, [r0] + adds r1, #1 + cmp r0, #0xfe + bne _081637F8 +_08163802: + ldr r2, _08163820 + adds r0, r1, r2 + ldrb r0, [r0] + adds r3, r2, #0 + cmp r0, #0xfe + beq _08163818 +_0816380E: + adds r1, #1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xfe + bne _0816380E +_08163818: + adds r1, r1, r3 + movs r0, #0xfa + strb r0, [r1] + b _08163830 + .align 2, 0 +_08163820: .4byte gUnknown_2021C7C +_08163824: + ldr r0, _08163838 + adds r1, r4, #0 + movs r2, #3 + movs r3, #2 + bl sub_0811F1CC +_08163830: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08163838: .4byte gUnknown_2021C7C + thumb_func_end sub_081637CC + + thumb_func_start sub_0816383C +sub_0816383C: @ 0x0816383C + push {lr} + bl sub_08165A4C + ldr r0, _08163850 + ldrh r0, [r0] + cmp r0, #0 + beq _08163858 + ldr r0, _08163854 + b _0816385A + .align 2, 0 +_08163850: .4byte gUnknown_2037282 +_08163854: .4byte gUnknown_203886C +_08163858: + ldr r0, _0816386C +_0816385A: + ldrh r3, [r0] + movs r0, #0xfa + lsls r0, r0, #1 + cmp r3, r0 + bne _08163878 + ldr r0, _08163870 + ldr r0, [r0] + ldr r1, _08163874 + b _081638AE + .align 2, 0 +_0816386C: .4byte gUnknown_203886A +_08163870: .4byte gUnknown_3005AF0 +_08163874: .4byte 0x00000BFC +_08163878: + ldr r0, _08163894 + cmp r3, r0 + bhi _0816389C + ldr r2, _08163898 + movs r0, #0x34 + adds r1, r3, #0 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC + b _081638D0 + .align 2, 0 +_08163894: .4byte 0x0000012B +_08163898: .4byte gUnknown_203B954 +_0816389C: + ldr r0, _081638B8 + cmp r3, r0 + bhi _081638C4 + ldr r1, _081638BC + movs r0, #0xec + muls r0, r3, r0 + ldr r1, [r1] + adds r0, r0, r1 + ldr r1, _081638C0 +_081638AE: + adds r0, r0, r1 + bl sub_081637CC + b _081638D0 + .align 2, 0 +_081638B8: .4byte 0x0000018F +_081638BC: .4byte gUnknown_3005AF0 +_081638C0: .4byte 0xFFFEF2B8 +_081638C4: + adds r0, r3, #0 + adds r0, #0x70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0819F888 +_081638D0: + pop {r0} + bx r0 + thumb_func_end sub_0816383C + + thumb_func_start sub_081638D4 +sub_081638D4: @ 0x081638D4 + push {r4, r5, r6, lr} + sub sp, #4 + bl sub_081861F8 + ldr r0, _081638F0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0xa + bhi _081639A0 + lsls r0, r0, #2 + ldr r1, _081638F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081638F0: .4byte gUnknown_2024118 +_081638F4: .4byte _081638F8 +_081638F8: @ jump table + .4byte _08163924 @ case 0 + .4byte _08163960 @ case 1 + .4byte _0816399C @ case 2 + .4byte _08163924 @ case 3 + .4byte _08163924 @ case 4 + .4byte _08163924 @ case 5 + .4byte _08163924 @ case 6 + .4byte _08163924 @ case 7 + .4byte _081639A0 @ case 8 + .4byte _08163924 @ case 9 + .4byte _08163924 @ case 10 +_08163924: + ldr r0, _08163948 + ldr r0, [r0] + ldr r2, _0816394C + adds r1, r0, r2 + ldr r2, [r1] + ldr r0, _08163950 + cmp r2, r0 + bhi _08163954 + adds r0, r2, #1 + str r0, [r1] + movs r1, #0x14 + bl __umodsi3 + cmp r0, #0 + bne _081639A0 + bl sub_081D9DCC + b _081639A0 + .align 2, 0 +_08163948: .4byte gUnknown_3005AF0 +_0816394C: .4byte 0x00000EBC +_08163950: .4byte 0x00FFFFFE +_08163954: + ldr r0, _0816395C + str r0, [r1] + b _081639A0 + .align 2, 0 +_0816395C: .4byte 0x00FFFFFF +_08163960: + movs r5, #0 + ldr r6, _08163994 +_08163964: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + movs r0, #0x8e + lsls r0, r0, #2 + adds r1, r4, r0 + ldr r0, [r6] + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + ldr r0, _08163998 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r5, #1 + cmp r5, #5 + ble _08163964 + b _081639A0 + .align 2, 0 +_08163994: .4byte gUnknown_3005AEC +_08163998: .4byte gUnknown_2024190 +_0816399C: + bl sub_081651F8 +_081639A0: + ldr r0, _081639B0 + bl sub_08000540 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081639B0: .4byte sub_08085B34 + thumb_func_end sub_081638D4 + + thumb_func_start sub_081639B4 +sub_081639B4: @ 0x081639B4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08145FE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081639D8 + ldr r0, _081639E0 + ldr r1, _081639E4 + str r1, [r0, #8] + ldr r0, _081639E8 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_081639D8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081639E0: .4byte gUnknown_3002360 +_081639E4: .4byte sub_081638D4 +_081639E8: .4byte sub_080365B4 + thumb_func_end sub_081639B4 + + thumb_func_start sub_081639EC +sub_081639EC: @ 0x081639EC + push {r4, r5, r6, lr} + sub sp, #4 + ldr r0, _08163A0C + ldr r2, _08163A10 + ldrh r1, [r2] + adds r0, #0x26 + strb r1, [r0] + ldrh r0, [r2] + cmp r0, #0xa + bls _08163A02 + b _08163D90 +_08163A02: + lsls r0, r0, #2 + ldr r1, _08163A14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08163A0C: .4byte gUnknown_2024118 +_08163A10: .4byte gUnknown_2037280 +_08163A14: .4byte _08163A18 +_08163A18: @ jump table + .4byte _08163A44 @ case 0 + .4byte _08163AE8 @ case 1 + .4byte _08163B38 @ case 2 + .4byte _08163B98 @ case 3 + .4byte _08163BEC @ case 4 + .4byte _08163C50 @ case 5 + .4byte _08163C9C @ case 6 + .4byte _08163CDC @ case 7 + .4byte _08163D54 @ case 8 + .4byte _08163D1C @ case 9 + .4byte _08163CF0 @ case 10 +_08163A44: + ldr r5, _08163A64 + movs r0, #0x84 + lsls r0, r0, #1 + str r0, [r5] + ldr r0, _08163A68 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #1 + beq _08163A7E + cmp r4, #1 + bgt _08163A6C + cmp r4, #0 + beq _08163A76 + b _08163ACE + .align 2, 0 +_08163A64: .4byte gUnknown_2022C90 +_08163A68: .4byte 0x000040CE +_08163A6C: + cmp r4, #2 + beq _08163A8C + cmp r4, #3 + beq _08163AC0 + b _08163ACE +_08163A76: + movs r0, #3 + bl sub_08162F68 + b _08163ACE +_08163A7E: + movs r0, #4 + bl sub_08162F68 + ldr r0, [r5] + orrs r0, r4 + str r0, [r5] + b _08163ACE +_08163A8C: + movs r0, #2 + bl sub_08162F8C + ldr r1, _08163AB0 + ldr r0, _08163AB4 + ldr r0, [r0] + ldr r2, _08163AB8 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + ldrh r0, [r1] + bl sub_08165280 + ldr r0, [r5] + ldr r1, _08163ABC + orrs r0, r1 + str r0, [r5] + b _08163ACE + .align 2, 0 +_08163AB0: .4byte gUnknown_203886E +_08163AB4: .4byte gUnknown_3005AF0 +_08163AB8: .4byte 0x00000CD6 +_08163ABC: .4byte 0x00408041 +_08163AC0: + ldr r0, [r5] + ldr r1, _08163AE0 + orrs r0, r1 + str r0, [r5] + movs r0, #2 + bl sub_08162F8C +_08163ACE: + ldr r0, _08163AE4 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #0 + b _08163D38 + .align 2, 0 +_08163AE0: .4byte 0x00800043 +_08163AE4: .4byte sub_081639B4 +_08163AE8: + movs r5, #0 + ldr r6, _08163B2C +_08163AEC: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08163B30 + adds r0, r4, r0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + movs r0, #0x8e + lsls r0, r0, #2 + adds r4, r4, r0 + ldr r0, [r6] + adds r0, r0, r4 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r5, #1 + cmp r5, #5 + ble _08163AEC + ldr r0, _08163B34 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #0xc + b _08163D38 + .align 2, 0 +_08163B2C: .4byte gUnknown_3005AEC +_08163B30: .4byte gUnknown_2024190 +_08163B34: .4byte sub_081639B4 +_08163B38: + bl sub_08067710 + movs r5, #0 + ldr r4, _08163B80 +_08163B40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08163B84 + adds r0, r0, r1 + movs r1, #0x2c + adds r2, r5, #0 + muls r2, r1, r2 + movs r1, #0xc2 + lsls r1, r1, #4 + adds r2, r2, r1 + ldr r1, [r4] + adds r1, r1, r2 + bl sub_08067D80 + adds r5, #1 + cmp r5, #2 + ble _08163B40 + ldr r1, _08163B88 + ldr r0, _08163B8C + str r0, [r1] + ldr r1, _08163B90 + movs r0, #0 + strh r0, [r1] + ldr r0, _08163B94 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #0xd + b _08163D38 + .align 2, 0 +_08163B80: .4byte gUnknown_3005AF0 +_08163B84: .4byte gUnknown_20243E8 +_08163B88: .4byte gUnknown_2022C90 +_08163B8C: .4byte 0x00000808 +_08163B90: .4byte gUnknown_203886A +_08163B94: .4byte sub_081639B4 +_08163B98: + ldr r4, _08163BD4 + ldr r0, _08163BD8 + str r0, [r4] + ldr r0, _08163BDC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #1 + bne _08163BB2 + ldr r0, [r4] + orrs r0, r1 + str r0, [r4] +_08163BB2: + ldr r0, _08163BE0 + ldrh r1, [r0] + ldr r0, _08163BE4 + cmp r1, r0 + bne _08163BC2 + movs r0, #2 + bl sub_08162F68 +_08163BC2: + ldr r0, _08163BE8 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E120 + movs r0, #3 + b _08163D38 + .align 2, 0 +_08163BD4: .4byte gUnknown_2022C90 +_08163BD8: .4byte 0x00010008 +_08163BDC: .4byte 0x000040CE +_08163BE0: .4byte gUnknown_203886A +_08163BE4: .4byte 0x000003FE +_08163BE8: .4byte sub_081639B4 +_08163BEC: + ldr r4, _08163C20 + ldr r0, _08163C24 + str r0, [r4] + ldr r0, _08163C28 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #1 + bne _08163C06 + ldr r0, [r4] + orrs r0, r1 + str r0, [r4] +_08163C06: + ldr r0, _08163C2C + ldr r0, [r0] + ldr r2, _08163C30 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _08163C34 + movs r0, #3 + bl sub_08162F68 + b _08163C3A + .align 2, 0 +_08163C20: .4byte gUnknown_2022C90 +_08163C24: .4byte 0x00020008 +_08163C28: .4byte 0x000040CE +_08163C2C: .4byte gUnknown_3005AF0 +_08163C30: .4byte 0x00000CA9 +_08163C34: + movs r0, #3 + bl sub_08162FC0 +_08163C3A: + ldr r0, _08163C4C + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #4 + b _08163D38 + .align 2, 0 +_08163C4C: .4byte sub_081639B4 +_08163C50: + ldr r1, _08163C70 + ldr r0, _08163C74 + str r0, [r1] + ldr r0, _08163C78 + ldr r0, [r0] + ldr r1, _08163C7C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _08163C80 + movs r0, #3 + bl sub_08162F68 + b _08163C86 + .align 2, 0 +_08163C70: .4byte gUnknown_2022C90 +_08163C74: .4byte 0x00040008 +_08163C78: .4byte gUnknown_3005AF0 +_08163C7C: .4byte 0x00000CA9 +_08163C80: + movs r0, #3 + bl sub_08162FC0 +_08163C86: + ldr r0, _08163C98 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #5 + b _08163D38 + .align 2, 0 +_08163C98: .4byte sub_081639B4 +_08163C9C: + ldr r4, _08163CCC + ldr r0, _08163CD0 + str r0, [r4] + ldr r0, _08163CD4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #1 + bne _08163CB6 + ldr r0, [r4] + orrs r0, r1 + str r0, [r4] +_08163CB6: + bl sub_081634B0 + ldr r0, _08163CD8 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #6 + b _08163D38 + .align 2, 0 +_08163CCC: .4byte gUnknown_2022C90 +_08163CD0: .4byte 0x00080008 +_08163CD4: .4byte 0x000040CE +_08163CD8: .4byte sub_081639B4 +_08163CDC: + ldr r1, _08163CEC + movs r0, #0x84 + lsls r0, r0, #1 + str r0, [r1] + movs r0, #3 + bl sub_08162F68 + b _08163D28 + .align 2, 0 +_08163CEC: .4byte gUnknown_2022C90 +_08163CF0: + ldr r1, _08163D10 + ldr r0, _08163D14 + str r0, [r1] + movs r0, #3 + bl sub_08162F68 + ldr r0, _08163D18 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #0xa + b _08163D38 + .align 2, 0 +_08163D10: .4byte gUnknown_2022C90 +_08163D14: .4byte 0x00200008 +_08163D18: .4byte sub_081639B4 +_08163D1C: + ldr r1, _08163D48 + ldr r0, _08163D4C + str r0, [r1] + movs r0, #1 + bl sub_08162F8C +_08163D28: + ldr r0, _08163D50 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #7 +_08163D38: + bl sub_080B08F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08145FB4 + b _08163D90 + .align 2, 0 +_08163D48: .4byte gUnknown_2022C90 +_08163D4C: .4byte 0x00008109 +_08163D50: .4byte sub_081639B4 +_08163D54: + ldr r1, _08163D98 + ldr r0, _08163D9C + str r0, [r1] + ldr r5, _08163DA0 + adds r0, r5, #0 + bl sub_08165280 + ldr r4, _08163DA4 + movs r0, #0 + strb r0, [r4] + ldr r0, _08163DA8 + bl sub_080B0D1C + movs r0, #1 + strb r0, [r4] + ldr r0, _08163DAC + bl sub_080B0D1C + ldr r0, _08163DB0 + strh r5, [r0] + ldr r0, _08163DB4 + movs r1, #1 + bl sub_080A8878 + movs r0, #0 + bl sub_0806E0F4 + movs r0, #0x12 + bl sub_08145FB4 +_08163D90: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08163D98: .4byte gUnknown_2022C90 +_08163D9C: .4byte 0x00408049 +_08163DA0: .4byte 0x00000C03 +_08163DA4: .4byte gUnknown_203889C +_08163DA8: .4byte gUnknown_820DA82 +_08163DAC: .4byte gUnknown_820DA91 +_08163DB0: .4byte gUnknown_203886E +_08163DB4: .4byte sub_081639B4 + thumb_func_end sub_081639EC + + thumb_func_start sub_08163DB8 +sub_08163DB8: @ 0x08163DB8 + push {r4, r5, r6, lr} + ldr r6, _08163E00 + ldr r0, [r6] + ldr r1, _08163E04 + adds r0, r0, r1 + ldrb r5, [r0] + lsls r5, r5, #0x1e + lsrs r5, r5, #0x1e + ldr r0, _08163E08 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08164E98 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, [r6] + lsls r5, r5, #1 + lsls r4, r4, #2 + adds r5, r5, r4 + movs r1, #0xce + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, r2 + bhs _08163DF8 + strh r2, [r1] +_08163DF8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08163E00: .4byte gUnknown_3005AF0 +_08163E04: .4byte 0x00000CA9 +_08163E08: .4byte 0x000040CE + thumb_func_end sub_08163DB8 + + thumb_func_start sub_08163E0C +sub_08163E0C: @ 0x08163E0C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _08163E54 + ldr r0, [r4] + ldr r1, _08163E58 + adds r5, r0, r1 + adds r0, r5, #0 + bl sub_08164E84 + ldr r0, [r4] + ldr r2, _08163E5C + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r6, r0, #0x1e + ldr r0, _08163E60 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, [r4] + ldrb r0, [r2, #8] + cmp r0, #0 + beq _08163E68 + ldr r4, _08163E64 + ldrb r0, [r2, #0xa] + ldrb r1, [r2, #0xb] + adds r0, r0, r1 + ldrb r1, [r2, #0xc] + adds r0, r0, r1 + ldrb r1, [r2, #0xd] + adds r0, r0, r1 + movs r1, #0x14 + b _08163E7A + .align 2, 0 +_08163E54: .4byte gUnknown_3005AF0 +_08163E58: .4byte 0x0000064C +_08163E5C: .4byte 0x00000CA9 +_08163E60: .4byte 0x000040CE +_08163E64: .4byte gUnknown_85BBE3E +_08163E68: + ldr r4, _08163F44 + ldrb r0, [r2, #0xa] + ldrb r1, [r2, #0xb] + adds r0, r0, r1 + ldrb r1, [r2, #0xc] + adds r0, r0, r1 + ldrb r1, [r2, #0xd] + adds r0, r0, r1 + movs r1, #0x1e +_08163E7A: + bl __umodsi3 + adds r0, r0, r4 + ldrb r0, [r0] + strb r6, [r5] + strb r0, [r5, #1] + adds r0, r5, #0 + adds r0, #0xc + ldr r4, _08163F48 + ldr r1, [r4] + adds r1, #0xa + bl sub_08083C7C + adds r0, r5, #4 + ldr r1, [r4] + bl sub_08008888 + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08164E98 + strh r0, [r5, #2] + movs r4, #0 + movs r2, #0x10 + adds r2, r2, r5 + mov ip, r2 + movs r7, #0x1c + adds r7, r7, r5 + mov sb, r7 + adds r6, r5, #0 + adds r6, #0x28 + movs r0, #0xe4 + adds r0, r0, r5 + mov r8, r0 +_08163EBE: + lsls r2, r4, #1 + mov r1, ip + adds r3, r1, r2 + ldr r0, _08163F4C + ldr r1, [r0] + ldr r7, _08163F50 + adds r0, r1, r7 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3] + mov r0, sb + adds r3, r0, r2 + adds r7, #0xc + adds r0, r1, r7 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3] + adds r3, r6, r2 + ldr r0, _08163F54 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + strh r0, [r3] + adds r4, #1 + cmp r4, #5 + ble _08163EBE + movs r4, #0 +_08163EF4: + ldr r6, _08163F48 + ldr r0, [r6] + lsls r1, r4, #1 + ldr r2, _08163F58 + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _08163F1C + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08163F5C + adds r0, r0, r1 + movs r1, #0x2c + muls r1, r4, r1 + adds r1, #0x34 + adds r1, r5, r1 + bl sub_0806823C +_08163F1C: + adds r4, #1 + cmp r4, #3 + ble _08163EF4 + ldr r0, _08163F60 + ldrb r0, [r0] + mov r7, r8 + strb r0, [r7] + ldr r0, [r6] + ldr r1, _08163F64 + adds r0, r0, r1 + bl sub_08164E3C + bl sub_08163DB8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08163F44: .4byte gUnknown_85BBE20 +_08163F48: .4byte gUnknown_3005AF0 +_08163F4C: .4byte gUnknown_3005AEC +_08163F50: .4byte 0x00002BBC +_08163F54: .4byte 0x00002BD4 +_08163F58: .4byte 0x00000CAA +_08163F5C: .4byte gUnknown_202412C +_08163F60: .4byte gUnknown_829BDA5 +_08163F64: .4byte 0x0000064C + thumb_func_end sub_08163E0C + + thumb_func_start sub_08163F68 +sub_08163F68: @ 0x08163F68 + push {r4, r5, lr} + ldr r5, _08163FE8 + ldr r0, [r5] + ldr r1, _08163FEC + adds r0, r0, r1 + ldrb r4, [r0] + lsls r4, r4, #0x1e + lsrs r4, r4, #0x1e + ldr r0, _08163FF0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r5, [r5] + lsls r4, r4, #1 + lsrs r0, r0, #0xe + adds r4, r4, r0 + movs r2, #0xce + lsls r2, r2, #4 + adds r0, r5, r2 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _08163FF4 + ldrh r0, [r0] + cmp r0, #0 + bne _08163FB6 + cmp r1, #1 + bgt _08163FB2 + ldr r1, _08163FF8 + adds r0, r5, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _08163FB6 +_08163FB2: + bl sub_08163E0C +_08163FB6: + ldr r4, _08163FE8 + ldr r0, [r4] + ldr r1, _08163FF4 + ldrh r1, [r1] + ldr r2, _08163FFC + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _08163FEC + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08163FE8: .4byte gUnknown_3005AF0 +_08163FEC: .4byte 0x00000CA9 +_08163FF0: .4byte 0x000040CE +_08163FF4: .4byte gUnknown_2037282 +_08163FF8: .4byte 0x00000CB2 +_08163FFC: .4byte 0x00000CA8 + thumb_func_end sub_08163F68 + + thumb_func_start sub_08164000 +sub_08164000: @ 0x08164000 + bx lr + .align 2, 0 + thumb_func_end sub_08164000 + + thumb_func_start sub_08164004 +sub_08164004: @ 0x08164004 + bx lr + .align 2, 0 + thumb_func_end sub_08164004 + + thumb_func_start sub_08164008 +sub_08164008: @ 0x08164008 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r4, _081640A0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r4, #0x64 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r6, #0 + movs r2, #0 + ldr r0, _081640A4 + ldr r1, [r0] + ldr r0, _081640A8 + adds r5, r5, r0 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, #0xe0 + adds r0, r0, r1 + mov r3, sp +_0816404A: + ldrh r1, [r0] + cmp r1, r7 + beq _08164058 + cmp r1, r4 + beq _08164058 + stm r3!, {r2} + adds r6, #1 +_08164058: + adds r0, #0xc + adds r2, #1 + cmp r2, #2 + ble _0816404A + bl sub_0806F050 + ldr r4, _081640AC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + strh r0, [r4] +_08164078: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + strh r0, [r4, #2] + ldrh r1, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + beq _08164078 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081640A0: .4byte gUnknown_2024190 +_081640A4: .4byte gUnknown_3005AF0 +_081640A8: .4byte 0xFFFFFE70 +_081640AC: .4byte gUnknown_3005FD8 + thumb_func_end sub_08164008 + + thumb_func_start sub_081640B0 +sub_081640B0: @ 0x081640B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r6, _081641B0 + ldr r0, [r6] + ldr r1, _081641B4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + str r0, [sp, #0xc] + ldr r4, _081641B8 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x10] + adds r4, #0x64 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x14] + movs r3, #0 + mov r8, r3 + movs r7, #0 + adds r2, r6, #0 + ldr r0, _081641BC + adds r5, r5, r0 + ldr r6, _081641C0 + mov sl, sp + movs r0, #0xec + adds r1, r5, #0 + muls r1, r0, r1 + mov sb, r1 +_0816410E: + ldr r1, [r2] + movs r0, #0x2c + muls r0, r7, r0 + mov r3, sb + adds r5, r0, r3 + adds r1, r1, r5 + adds r0, r1, r6 + ldrh r0, [r0] + ldr r3, [sp, #0x10] + cmp r0, r3 + beq _08164162 + ldr r3, [sp, #0x14] + cmp r0, r3 + beq _08164162 + movs r0, #0xef + lsls r0, r0, #3 + adds r4, r1, r0 + ldr r1, [sp, #0xc] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + str r2, [sp, #0x18] + bl sub_08165A9C + ldrb r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x18] + cmp r1, r0 + bhi _08164162 + ldr r0, [r2] + adds r0, r0, r5 + adds r0, r0, r6 + ldrh r0, [r0] + cmp r0, #0 + beq _08164162 + mov r3, sl + adds r3, #4 + mov sl, r3 + subs r3, #4 + stm r3!, {r7} + movs r0, #1 + add r8, r0 +_08164162: + adds r7, #1 + cmp r7, #3 + ble _0816410E + bl sub_0806F050 + ldr r4, _081641C4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + strh r0, [r4, #4] +_08164180: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + strh r0, [r4, #6] + ldrh r1, [r4, #4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + beq _08164180 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081641B0: .4byte gUnknown_3005AF0 +_081641B4: .4byte 0x00000CA9 +_081641B8: .4byte gUnknown_2024190 +_081641BC: .4byte 0xFFFFFED4 +_081641C0: .4byte 0x0000076C +_081641C4: .4byte gUnknown_3005FD8 + thumb_func_end sub_081640B0 + + thumb_func_start sub_081641C8 +sub_081641C8: @ 0x081641C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x4c + ldr r0, _08164530 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r1, r0, r1 + str r1, [sp, #0x24] + ldr r5, _08164534 + ldr r0, [r5] + ldr r2, _08164538 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + str r0, [sp, #0x14] + ldr r0, _0816453C + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, [r5] + ldr r3, [sp, #0x14] + lsls r2, r3, #1 + lsrs r0, r0, #0xe + adds r2, r2, r0 + movs r4, #0xce + lsls r4, r4, #4 + adds r1, r1, r4 + adds r1, r1, r2 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x18] + ldr r4, _08164540 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x1c] + adds r4, #0x64 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + str r0, [sp, #0x20] + bl sub_08165A4C + movs r7, #0 + ldr r0, [sp, #0x18] + lsls r0, r0, #0x18 + mov sl, r0 +_08164240: + lsls r6, r7, #1 +_08164242: + mov r1, sl + lsrs r0, r1, #0x18 + movs r1, #0 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r2, #0 + mov sb, r2 + cmp sb, r7 + bge _08164290 + ldr r0, [r5] + ldr r3, _08164544 + adds r1, r0, r3 + ldrh r0, [r1] + cmp r0, r8 + beq _08164290 + ldr r0, _08164548 + ldr r2, [r0] + movs r4, #0x34 + mov r0, r8 + muls r0, r4, r0 + adds r0, r0, r2 + ldrb r3, [r0] +_08164274: + ldrh r0, [r1] + muls r0, r4, r0 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, r3 + beq _08164290 + adds r1, #2 + movs r0, #1 + add sb, r0 + cmp sb, r7 + bge _08164290 + ldrh r0, [r1] + cmp r0, r8 + bne _08164274 +_08164290: + cmp sb, r7 + bne _08164242 + ldr r0, [r5] + ldr r1, _08164544 + adds r0, r0, r1 + adds r0, r0, r6 + mov r2, r8 + strh r2, [r0] + mov r7, sb + adds r7, #1 + cmp r7, #5 + ble _08164240 + movs r3, #8 + mov sl, r3 + movs r4, #0 + mov sb, r4 + ldr r0, [sp, #0x24] + str r0, [sp, #0x40] +_081642B4: + ldr r1, _08164534 + ldr r0, [r1] + mov r2, sb + lsls r1, r2, #1 + ldr r3, _08164544 + adds r0, r0, r3 + adds r0, r0, r1 + ldrh r0, [r0] + mov r8, r0 + bl sub_081626B0 + ldr r4, [sp, #0x40] + strb r0, [r4, #0x19] + movs r7, #0 +_081642D0: + adds r0, r7, #1 + str r0, [sp, #0x30] + mov r1, sl + lsls r1, r1, #1 + str r1, [sp, #0x38] + mov r2, sl + adds r2, #1 + str r2, [sp, #0x34] + mov r0, sl + subs r0, #1 + lsls r0, r0, #1 + str r0, [sp, #0x28] +_081642E8: + mov r0, r8 + bl sub_08163444 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #1 + ands r0, r7 + cmp r0, #0 + beq _0816431C + ldr r3, _08164534 + ldr r0, [r3] + ldr r4, _08164544 + adds r0, r0, r4 + ldr r1, [sp, #0x28] + adds r0, r0, r1 + ldrh r2, [r0] + ldr r0, _0816454C + ldr r0, [r0] + lsls r2, r2, #4 + adds r2, r2, r0 + lsls r1, r6, #4 + adds r1, r1, r0 + ldrb r0, [r2, #0xa] + ldrb r1, [r1, #0xa] + cmp r0, r1 + beq _081642E8 +_0816431C: + movs r5, #8 + cmp r5, sl + bge _08164358 + ldr r2, _08164534 + ldr r0, [r2] + ldr r1, _0816454C + ldr r3, [r1] + lsls r1, r6, #4 + adds r1, r1, r3 + ldr r4, _08164550 + adds r2, r0, r4 + ldrh r0, [r1] + mov ip, r0 +_08164336: + ldrh r0, [r2] + lsls r0, r0, #4 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, ip + beq _08164358 + ldrh r0, [r1] + ldr r4, [sp, #0x1c] + cmp r4, r0 + beq _08164358 + ldr r4, [sp, #0x20] + cmp r4, r0 + beq _08164358 + adds r2, #2 + adds r5, #1 + cmp r5, sl + blt _08164336 +_08164358: + cmp r5, sl + bne _081642E8 + ldr r1, _08164534 + ldr r0, [r1] + ldr r2, _08164544 + adds r0, r0, r2 + ldr r3, [sp, #0x38] + adds r0, r0, r3 + strh r6, [r0] + ldr r4, [sp, #0x34] + mov sl, r4 + ldr r7, [sp, #0x30] + cmp r7, #1 + ble _081642D0 + ldr r0, [sp, #0x40] + adds r0, #0x18 + str r0, [sp, #0x40] + movs r1, #1 + add sb, r1 + mov r2, sb + cmp r2, #5 + ble _081642B4 + movs r3, #0 + mov sl, r3 + bl sub_0816595C + movs r4, #0 + mov sb, r4 + ldr r0, _08164534 + ldr r0, [r0] + movs r2, #0 + adds r6, r0, #0 + adds r6, #0xdc + mov r8, sp +_0816439C: + ldrb r0, [r6] + lsls r4, r0, #0x19 + lsrs r0, r4, #0x1e + cmp r0, #0 + beq _08164408 + ldr r1, _08164554 + ldrb r0, [r6, #1] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #7 + str r2, [sp, #0x44] + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x44] + ldr r1, [sp, #0x18] + cmp r0, r1 + bgt _08164408 + lsrs r0, r4, #0x1e + subs r0, #1 + ldr r3, [sp, #0x14] + cmp r0, r3 + bne _08164408 + movs r5, #0 + ldr r0, _08164534 + ldr r0, [r0] + adds r0, #0xe0 + adds r1, r2, r0 + movs r7, #2 +_081643D8: + ldrh r0, [r1] + ldr r4, [sp, #0x1c] + cmp r4, r0 + beq _081643E8 + ldr r3, [sp, #0x20] + cmp r3, r0 + beq _081643E8 + adds r5, #1 +_081643E8: + adds r1, #0xc + subs r7, #1 + cmp r7, #0 + bge _081643D8 + cmp r5, #2 + ble _08164408 + movs r0, #0xc8 + lsls r0, r0, #1 + add r0, sb + mov r4, r8 + adds r4, #4 + mov r8, r4 + subs r4, #4 + stm r4!, {r0} + movs r0, #1 + add sl, r0 +_08164408: + adds r2, #0x44 + adds r6, #0x44 + movs r1, #1 + add sb, r1 + mov r3, sb + cmp r3, #3 + ble _0816439C + mov r4, sl + cmp r4, #0 + beq _0816445A + bl sub_0806F050 + ldr r6, _08164534 + ldr r4, [r6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + movs r5, #0xcc + lsls r5, r5, #4 + adds r4, r4, r5 + strh r0, [r4] + ldrh r0, [r4] + bl sub_081626B0 + ldr r1, [sp, #0x24] + adds r1, #0xa8 + strb r0, [r1, #1] + movs r0, #0xd8 + lsls r0, r0, #2 + bl sub_0809D040 + ldr r0, [r6] + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_08164008 +_0816445A: + movs r0, #0 + mov sl, r0 + mov sb, r0 + mov r1, sp + str r1, [sp, #0x3c] +_08164464: + ldr r0, _08164534 + movs r2, #0xec + mov r1, sb + muls r1, r2, r1 + movs r3, #0xe7 + lsls r3, r3, #3 + adds r1, r1, r3 + ldr r0, [r0] + movs r2, #0 + movs r3, #0 + movs r7, #0 + mov r4, sb + adds r4, #1 + str r4, [sp, #0x2c] + adds r1, r0, r1 +_08164482: + ldm r1!, {r0} + orrs r2, r0 + adds r3, r3, r0 + adds r7, #1 + cmp r7, #0x39 + bls _08164482 + ldr r0, _08164534 + ldr r5, [r0] + movs r1, #0xec + mov r6, sb + muls r6, r1, r6 + adds r4, r5, r6 + ldr r1, _08164558 + adds r0, r4, r1 + ldrh r0, [r0] + movs r1, #7 + str r2, [sp, #0x44] + str r3, [sp, #0x48] + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, [sp, #0x44] + ldr r3, [sp, #0x48] + ldr r1, [sp, #0x18] + cmp r0, r1 + bgt _0816457E + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r4, r1 + ldrb r0, [r0] + ldr r4, [sp, #0x14] + cmp r0, r4 + bne _0816457E + cmp r2, #0 + beq _0816457E + adds r1, #0xe8 + adds r0, r5, r1 + adds r0, r0, r6 + ldr r0, [r0] + cmp r0, r3 + bne _0816457E + movs r5, #0 + movs r7, #0 + ldr r2, _08164534 + mov r8, r2 + ldr r3, _0816455C +_081644E0: + mov r4, r8 + ldr r2, [r4] + movs r0, #0x2c + adds r1, r7, #0 + muls r1, r0, r1 + movs r4, #0xec + mov r0, sb + muls r0, r4, r0 + adds r6, r1, r0 + adds r2, r2, r6 + adds r0, r2, r3 + ldrh r0, [r0] + ldr r1, [sp, #0x1c] + cmp r1, r0 + beq _08164564 + ldr r4, [sp, #0x20] + cmp r4, r0 + beq _08164564 + movs r0, #0xef + lsls r0, r0, #3 + adds r4, r2, r0 + ldr r1, [sp, #0x14] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + str r3, [sp, #0x48] + bl sub_08165A9C + ldrb r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, [sp, #0x48] + cmp r1, r0 + bhi _08164564 + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r6 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, #0 + b _08164560 + .align 2, 0 +_08164530: .4byte gUnknown_3005AEC +_08164534: .4byte gUnknown_3005AF0 +_08164538: .4byte 0x00000CA9 +_0816453C: .4byte 0x000040CE +_08164540: .4byte gUnknown_2024190 +_08164544: .4byte 0x00000CB4 +_08164548: .4byte gUnknown_203B954 +_0816454C: .4byte gUnknown_203B958 +_08164550: .4byte 0x00000CC4 +_08164554: .4byte gUnknown_85BE930 +_08164558: .4byte 0x0000073A +_0816455C: .4byte 0x0000076C +_08164560: + beq _08164564 + adds r5, #1 +_08164564: + adds r7, #1 + cmp r7, #3 + ble _081644E0 + cmp r5, #1 + ble _0816457E + movs r0, #0x96 + lsls r0, r0, #1 + add r0, sb + ldr r3, [sp, #0x3c] + stm r3!, {r0} + str r3, [sp, #0x3c] + movs r4, #1 + add sl, r4 +_0816457E: + ldr r0, [sp, #0x2c] + mov sb, r0 + cmp r0, #4 + bgt _08164588 + b _08164464 +_08164588: + mov r1, sl + cmp r1, #0 + beq _081645C8 + bl sub_0806F050 + ldr r6, _081645D8 + ldr r4, [r6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + ldr r5, _081645DC + adds r4, r4, r5 + strh r0, [r4] + ldrh r0, [r4] + bl sub_081626B0 + ldr r1, [sp, #0x24] + adds r1, #0xc0 + strb r0, [r1, #1] + ldr r0, _081645E0 + bl sub_0809D040 + ldr r0, [r6] + adds r0, r0, r5 + ldrh r0, [r0] + bl sub_081640B0 +_081645C8: + add sp, #0x4c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081645D8: .4byte gUnknown_3005AF0 +_081645DC: .4byte 0x00000CC2 +_081645E0: .4byte 0x00000361 + thumb_func_end sub_081641C8 + + thumb_func_start sub_081645E4 +sub_081645E4: @ 0x081645E4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + movs r7, #0 + movs r6, #0 + bl sub_08165A4C + movs r0, #0xfa + lsls r0, r0, #1 + cmp r5, r0 + beq _081646CC + subs r0, #0xc9 + cmp r5, r0 + bhi _0816461C + ldr r0, _08164618 + ldr r1, [r0] + lsls r0, r4, #4 + adds r0, r0, r1 + ldrh r7, [r0, #2] + ldrh r6, [r0] + b _081646CC + .align 2, 0 +_08164618: .4byte gUnknown_203B958 +_0816461C: + ldr r0, _08164654 + cmp r5, r0 + bhi _0816466C + ldr r0, _08164658 + ldr r3, [r0] + ldr r1, _0816465C + ldr r0, _08164660 + ldrh r0, [r0] + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x2c + muls r1, r0, r1 + ldr r0, _08164664 + adds r2, r5, r0 + movs r0, #0xec + muls r0, r2, r0 + adds r1, r1, r0 + adds r3, r3, r1 + movs r1, #0xee + lsls r1, r1, #3 + adds r0, r3, r1 + ldrh r7, [r0] + ldr r2, _08164668 + adds r3, r3, r2 + ldrh r6, [r3] + b _081646CC + .align 2, 0 +_08164654: .4byte 0x0000018F +_08164658: .4byte gUnknown_3005AF0 +_0816465C: .4byte gUnknown_3005FD8 +_08164660: .4byte gUnknown_2037282 +_08164664: .4byte 0xFFFFFED4 +_08164668: .4byte 0x0000076C +_0816466C: + ldr r4, _081646F4 + ldr r3, [r4] + ldr r1, _081646F8 + ldr r0, _081646FC + ldrh r0, [r0] + subs r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _08164700 + adds r1, r5, r2 + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r0, r0, r2 + adds r3, r3, r0 + adds r0, r3, #0 + adds r0, #0xe2 + ldrh r7, [r0] + adds r3, #0xe0 + ldrh r6, [r3] + movs r3, #0 + ldr r0, _08164704 + mov sb, r0 + mov r8, sb + mov ip, r4 + adds r5, r2, #0 + movs r4, #0x8a + lsls r4, r4, #1 +_081646AC: + mov r1, r8 + adds r2, r3, r1 + mov r1, ip + ldr r0, [r1] + adds r1, r3, r5 + adds r0, r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r3, #1 + cmp r3, #6 + ble _081646AC + mov r2, sb + adds r1, r3, r2 + movs r0, #0xff + strb r0, [r1] +_081646CC: + ldr r0, _08164708 + lsls r1, r7, #3 + ldr r2, _0816470C + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _08164710 + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #1 + ldr r2, _08164714 + adds r1, r1, r2 + bl sub_080088B8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081646F4: .4byte gUnknown_3005AF0 +_081646F8: .4byte gUnknown_3005FD8 +_081646FC: .4byte gUnknown_2037282 +_08164700: .4byte 0xFFFFFE70 +_08164704: .4byte gUnknown_2021C68 +_08164708: .4byte gUnknown_2021C40 +_0816470C: .4byte gUnknown_82EACC4 +_08164710: .4byte gUnknown_2021C54 +_08164714: .4byte gUnknown_82EA31C + thumb_func_end sub_081645E4 + + thumb_func_start sub_08164718 +sub_08164718: @ 0x08164718 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + bl sub_08165A4C + bl sub_081A375C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0816475C + ldrh r0, [r0] + subs r5, r0, #2 + ldr r0, _08164760 + ldr r0, [r0] + lsls r1, r5, #1 + ldr r2, _08164764 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r7, [r0] + movs r3, #0 + str r3, [sp] + ldr r4, _08164768 + lsls r6, r7, #0x10 + b _08164774 + .align 2, 0 +_0816475C: .4byte gUnknown_2037292 +_08164760: .4byte gUnknown_3005AF0 +_08164764: .4byte 0x00000CB4 +_08164768: .4byte gUnknown_85BC444 +_0816476C: + adds r4, #8 + ldr r0, [sp] + adds r0, #1 + str r0, [sp] +_08164774: + ldr r1, [sp] + cmp r1, #0x31 + bhi _0816478A + lsrs r0, r6, #0x10 + bl sub_08162C38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, [r4] + cmp r1, r0 + bne _0816476C +_0816478A: + ldr r0, _081647A0 + ldrh r0, [r0] + cmp r0, #4 + bls _08164794 + b _081649A2 +_08164794: + lsls r0, r0, #2 + ldr r1, _081647A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081647A0: .4byte gUnknown_2037282 +_081647A4: .4byte _081647A8 +_081647A8: @ jump table + .4byte _081647BC @ case 0 + .4byte _08164864 @ case 1 + .4byte _0816487C @ case 2 + .4byte _0816489C @ case 3 + .4byte _081649A2 @ case 4 +_081647BC: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r7, r0 + bne _081647C6 + b _08164A34 +_081647C6: + subs r0, #0xc9 + cmp r7, r0 + ble _081647D2 + ldr r0, _081647DC + cmp r7, r0 + bgt _081647E4 +_081647D2: + ldr r0, _081647E0 + adds r1, r7, #0 + bl sub_08162D24 + b _081649A2 + .align 2, 0 +_081647DC: .4byte 0x0000018F +_081647E0: .4byte gUnknown_2021C40 +_081647E4: + movs r3, #0 + ldr r6, _08164850 + lsls r2, r7, #0x10 + str r2, [sp, #4] + ldr r4, _08164854 + mov sl, r4 + ldr r5, _08164858 + mov ip, r5 + mov sb, sl + mov r8, r6 + ldr r0, _0816485C + adds r1, r7, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r4, r0, #2 + movs r5, #0x8a + lsls r5, r5, #1 +_08164806: + mov r1, sb + adds r2, r3, r1 + mov r1, r8 + ldr r0, [r1] + adds r1, r3, r4 + adds r0, r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + adds r3, #1 + cmp r3, #6 + ble _08164806 + mov r2, sl + adds r1, r3, r2 + movs r0, #0xff + strb r0, [r1] + ldr r1, [r6] + ldr r3, _0816485C + adds r2, r7, r3 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xde + ldrb r1, [r1] + mov r0, ip + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _08164860 + ldr r4, [sp, #4] + lsrs r1, r4, #0x10 + bl sub_08162D24 + b _081649A2 + .align 2, 0 +_08164850: .4byte gUnknown_3005AF0 +_08164854: .4byte gUnknown_2021C40 +_08164858: .4byte gUnknown_2021C54 +_0816485C: .4byte 0xFFFFFE70 +_08164860: .4byte gUnknown_2021C68 +_08164864: + ldr r0, _08164874 + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r1, r0 + ldr r5, _08164878 + adds r1, r1, r5 + b _08164888 + .align 2, 0 +_08164874: .4byte gUnknown_3005AF0 +_08164878: .4byte 0x00000CC4 +_0816487C: + ldr r0, _08164894 + ldr r1, [r0] + lsls r0, r5, #2 + adds r1, r1, r0 + ldr r0, _08164898 + adds r1, r1, r0 +_08164888: + adds r0, r7, #0 + ldrh r1, [r1] + bl sub_081645E4 + b _081649A2 + .align 2, 0 +_08164894: .4byte gUnknown_3005AF0 +_08164898: .4byte 0x00000CC6 +_0816489C: + ldr r0, _081648D0 + strh r7, [r0] + ldr r0, _081648D4 + cmp r7, r0 + bgt _081648E8 + ldr r0, _081648D8 + ldr r4, [r0] + lsls r1, r5, #1 + adds r0, r1, #0 + adds r0, #8 + lsls r0, r0, #1 + ldr r3, _081648DC + adds r2, r4, r3 + adds r0, r2, r0 + ldrh r3, [r0] + ldr r5, _081648E0 + adds r0, r4, r5 + strh r3, [r0] + adds r1, #9 + lsls r1, r1, #1 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081648E4 + adds r4, r4, r1 + strh r0, [r4] + b _08164926 + .align 2, 0 +_081648D0: .4byte gUnknown_203886E +_081648D4: .4byte 0x0000012B +_081648D8: .4byte gUnknown_3005AF0 +_081648DC: .4byte 0x00000CB4 +_081648E0: .4byte 0x00000CD8 +_081648E4: .4byte 0x00000CDA +_081648E8: + ldr r0, _08164900 + cmp r7, r0 + bgt _08164910 + ldr r0, _08164904 + ldr r1, [r0] + ldr r3, _08164908 + ldrh r2, [r3, #4] + ldr r4, _0816490C + adds r0, r1, r4 + strh r2, [r0] + ldrh r0, [r3, #6] + b _08164920 + .align 2, 0 +_08164900: .4byte 0x0000018F +_08164904: .4byte gUnknown_3005AF0 +_08164908: .4byte gUnknown_3005FD8 +_0816490C: .4byte 0x00000CD8 +_08164910: + ldr r0, _081649B8 + ldr r1, [r0] + ldr r3, _081649BC + ldrh r2, [r3] + ldr r4, _081649C0 + adds r0, r1, r4 + strh r2, [r0] + ldrh r0, [r3, #2] +_08164920: + ldr r5, _081649C4 + adds r1, r1, r5 + strh r0, [r1] +_08164926: + movs r5, #0 + mov r0, r8 + lsls r0, r0, #0x18 + str r0, [sp, #8] +_0816492E: + lsls r1, r5, #1 + mov sl, r1 + adds r2, r5, #1 + mov sb, r2 + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r0, r0, #1 + lsls r0, r0, #0x18 + mov r8, r0 +_08164940: + ldr r3, [sp, #8] + lsrs r0, r3, #0x18 + mov r4, r8 + lsrs r1, r4, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _081649C8 + ldrh r0, [r0] + cmp r0, r3 + beq _08164940 + movs r2, #0 + cmp r2, r5 + bge _08164982 + ldr r1, _081649B8 + ldr r0, [r1] + ldr r4, _081649CC + adds r0, r0, r4 + ldrh r0, [r0] + adds r6, r1, #0 + cmp r0, r3 + beq _08164982 +_0816496E: + adds r2, #1 + cmp r2, r5 + bge _08164982 + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _0816496E +_08164982: + cmp r2, r5 + bne _08164940 + ldr r5, _081649B8 + ldr r0, [r5] + ldr r1, _081649CC + adds r0, r0, r1 + add r0, sl + strh r3, [r0] + mov r5, sb + ldr r6, _081649B8 + cmp r5, #0xd + ble _0816492E + ldr r0, [r6] + ldr r2, _081649D0 + adds r0, r0, r2 + strh r7, [r0] +_081649A2: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r7, r0 + beq _08164A34 + subs r0, #0xc9 + cmp r7, r0 + bgt _081649D8 + ldr r0, _081649D4 + ldr r3, [sp] + lsls r1, r3, #3 + b _081649E4 + .align 2, 0 +_081649B8: .4byte gUnknown_3005AF0 +_081649BC: .4byte gUnknown_3005FD8 +_081649C0: .4byte 0x00000CD8 +_081649C4: .4byte 0x00000CDA +_081649C8: .4byte gUnknown_203886E +_081649CC: .4byte 0x00000CB4 +_081649D0: .4byte 0x00000CD6 +_081649D4: .4byte gUnknown_85BC444 +_081649D8: + ldr r0, _081649FC + cmp r7, r0 + bgt _08164A08 + ldr r0, _08164A00 + ldr r4, [sp] + lsls r1, r4, #3 +_081649E4: + adds r0, #4 + adds r1, r1, r0 + ldr r0, _08164A04 + ldrh r0, [r0] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + b _08164A34 + .align 2, 0 +_081649FC: .4byte 0x0000018F +_08164A00: .4byte gUnknown_85BC444 +_08164A04: .4byte gUnknown_2037282 +_08164A08: + ldr r0, _08164A44 + ldr r1, [r0] + ldr r5, _08164A48 + adds r2, r7, r5 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r0, [r1] + lsls r0, r0, #0x1b + ldr r1, _08164A4C + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldr r1, _08164A50 + ldrh r1, [r1] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_08097B74 +_08164A34: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08164A44: .4byte gUnknown_3005AF0 +_08164A48: .4byte 0xFFFFFE70 +_08164A4C: .4byte gUnknown_85BC5D4 +_08164A50: .4byte gUnknown_2037282 + thumb_func_end sub_08164718 + + thumb_func_start sub_08164A54 +sub_08164A54: @ 0x08164A54 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r4, _08164A98 + ldr r0, [r4] + ldr r1, _08164A9C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r7, r0, #0x1e + ldr r0, _08164AA0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, [r4] + ldr r2, _08164AA4 + adds r0, r0, r2 + ldrh r6, [r0] + bl sub_0800A02C + ldr r0, _08164AA8 + ldrh r0, [r0] + cmp r0, #6 + bls _08164A8C + b _08164C96 +_08164A8C: + lsls r0, r0, #2 + ldr r1, _08164AAC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08164A98: .4byte gUnknown_3005AF0 +_08164A9C: .4byte 0x00000CA9 +_08164AA0: .4byte 0x000040CE +_08164AA4: .4byte 0x00000CB2 +_08164AA8: .4byte gUnknown_2037290 +_08164AAC: .4byte _08164AB0 +_08164AB0: @ jump table + .4byte _08164ACC @ case 0 + .4byte _08164B1C @ case 1 + .4byte _08164BC0 @ case 2 + .4byte _08164BF4 @ case 3 + .4byte _08164C78 @ case 4 + .4byte _08164C88 @ case 5 + .4byte _08164C96 @ case 6 +_08164ACC: + cmp r5, #3 + beq _08164AD2 + b _08164C90 +_08164AD2: + ldr r0, _08164B10 + ldr r0, [r0] + lsls r1, r7, #1 + adds r0, r0, r1 + ldr r3, _08164B14 + adds r0, r0, r3 + ldrh r0, [r0] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08164AF8 + b _08164C96 +_08164AF8: + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + movs r2, #4 + bl sub_0800A070 + ldr r1, _08164B18 + movs r0, #1 + b _08164C94 + .align 2, 0 +_08164B10: .4byte gUnknown_3005AF0 +_08164B14: .4byte 0x00000CEC +_08164B18: .4byte gUnknown_2037290 +_08164B1C: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08164B2A + b _08164C96 +_08164B2A: + bl sub_0800A178 + ldr r1, _08164BB0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r2, r1, r0 + ldrh r0, [r1] + ldrh r3, [r2] + cmp r0, r3 + bhi _08164B40 + ldrh r0, [r2] +_08164B40: + str r0, [sp] + movs r4, #0 + ldr r0, _08164BB4 + mov sb, r0 +_08164B48: + adds r1, r4, #1 + mov r8, r1 + lsrs r0, r4, #0x1f + adds r0, r4, r0 + asrs r0, r0, #1 + lsls r7, r0, #0x18 +_08164B54: + ldr r0, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsrs r1, r7, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r4 + bge _08164B90 + mov r1, sb + ldr r0, [r1] + ldr r1, _08164BB8 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + beq _08164B90 + ldr r6, _08164BB4 + adds r5, r1, #0 +_08164B7C: + adds r2, #1 + cmp r2, r4 + bge _08164B90 + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r5 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _08164B7C +_08164B90: + cmp r4, r2 + bne _08164B54 + mov r2, sb + ldr r0, [r2] + lsls r1, r4, #1 + ldr r2, _08164BB8 + adds r0, r0, r2 + adds r0, r0, r1 + strh r3, [r0] + mov r4, r8 + cmp r4, #0xd + ble _08164B48 + ldr r1, _08164BBC + movs r0, #2 + b _08164C94 + .align 2, 0 +_08164BB0: .4byte gUnknown_202207C +_08164BB4: .4byte gUnknown_3005AF0 +_08164BB8: .4byte 0x00000CB4 +_08164BBC: .4byte gUnknown_2037290 +_08164BC0: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08164C96 + bl sub_0800A054 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08164BE8 + ldr r1, [r1] + ldr r3, _08164BEC + adds r1, r1, r3 + movs r2, #0x28 + bl sub_0800A070 + ldr r1, _08164BF0 + movs r0, #3 + b _08164C94 + .align 2, 0 +_08164BE8: .4byte gUnknown_3005AF0 +_08164BEC: .4byte 0x00000CB4 +_08164BF0: .4byte gUnknown_2037290 +_08164BF4: + bl sub_0800A114 + movs r1, #3 + ands r1, r0 + cmp r1, #3 + bne _08164C96 + bl sub_0800A178 + ldr r4, _08164C58 + ldr r0, [r4] + ldr r5, _08164C5C + adds r0, r0, r5 + ldr r1, _08164C60 + movs r2, #0x28 + bl memcpy + ldr r2, _08164C64 + ldr r1, [r4] + lsls r0, r6, #2 + adds r1, r1, r5 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2] + ldr r4, _08164C68 + lsls r0, r6, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r4] + ldrh r0, [r2] + movs r1, #0 + bl sub_08162528 + ldrh r0, [r4] + movs r1, #1 + bl sub_08162528 + ldr r0, _08164C6C + ldrb r0, [r0] + cmp r0, #0 + beq _08164C90 + ldr r0, _08164C70 + ldrb r0, [r0] + cmp r0, #0 + bne _08164C90 + ldr r1, _08164C74 + movs r0, #4 + b _08164C94 + .align 2, 0 +_08164C58: .4byte gUnknown_3005AF0 +_08164C5C: .4byte 0x00000CB4 +_08164C60: .4byte gUnknown_202207C +_08164C64: .4byte gUnknown_203886A +_08164C68: .4byte gUnknown_203886C +_08164C6C: .4byte gUnknown_30031C4 +_08164C70: .4byte gUnknown_300319C +_08164C74: .4byte gUnknown_2037290 +_08164C78: + bl sub_0800A7F8 + ldr r1, _08164C84 + movs r0, #5 + b _08164C94 + .align 2, 0 +_08164C84: .4byte gUnknown_2037290 +_08164C88: + ldr r0, _08164CA4 + ldrb r0, [r0] + cmp r0, #0 + bne _08164C96 +_08164C90: + ldr r1, _08164CA8 + movs r0, #6 +_08164C94: + strh r0, [r1] +_08164C96: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08164CA4: .4byte gUnknown_30031C4 +_08164CA8: .4byte gUnknown_2037290 + thumb_func_end sub_08164A54 + + thumb_func_start sub_08164CAC +sub_08164CAC: @ 0x08164CAC + push {lr} + ldr r0, _08164CC0 + ldrb r0, [r0] + cmp r0, #0 + beq _08164CBA + bl sub_0800A7F8 +_08164CBA: + pop {r0} + bx r0 + .align 2, 0 +_08164CC0: .4byte gUnknown_300319C + thumb_func_end sub_08164CAC + + thumb_func_start sub_08164CC4 +sub_08164CC4: @ 0x08164CC4 + push {lr} + ldr r0, _08164CDC + ldr r0, [r0] + ldr r1, _08164CE0 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0xf + bl sub_08162528 + pop {r0} + bx r0 + .align 2, 0 +_08164CDC: .4byte gUnknown_3005AF0 +_08164CE0: .4byte 0x00000CD6 + thumb_func_end sub_08164CC4 + + thumb_func_start sub_08164CE4 +sub_08164CE4: @ 0x08164CE4 + push {r4, r5, r6, lr} + ldr r0, _08164D70 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08164D6A + ldr r5, _08164D74 + ldr r0, [r5] + ldr r1, _08164D78 + adds r0, r0, r1 + ldr r4, _08164D7C + ldrh r1, [r4] + bl sub_08162D24 + ldr r0, [r5] + ldr r2, _08164D80 + adds r0, r0, r2 + ldrh r1, [r4] + bl sub_081659C4 + ldr r6, _08164D84 + ldrh r0, [r6, #2] + movs r4, #0x64 + muls r0, r4, r0 + ldr r1, _08164D88 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, [r5] + ldr r2, _08164D8C + adds r1, r1, r2 + strh r0, [r1] + ldrh r0, [r6] + muls r0, r4, r0 + ldr r1, _08164D90 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, [r5] + ldr r2, _08164D94 + adds r1, r1, r2 + strh r0, [r1] + movs r2, #0 + movs r4, #0xbe + lsls r4, r4, #4 + ldr r3, _08164D98 + adds r6, r5, #0 +_08164D4C: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r2 + adds r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #9 + ble _08164D4C + ldr r0, [r6] + ldr r1, _08164D9C + ldrb r1, [r1] + ldr r2, _08164DA0 + adds r0, r0, r2 + strb r1, [r0] +_08164D6A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08164D70: .4byte 0x000040CE +_08164D74: .4byte gUnknown_3005AF0 +_08164D78: .4byte 0x00000BD8 +_08164D7C: .4byte gUnknown_203886A +_08164D80: .4byte 0x00000BEB +_08164D84: .4byte gUnknown_2023D12 +_08164D88: .4byte gUnknown_20243E8 +_08164D8C: .4byte 0x00000BD6 +_08164D90: .4byte gUnknown_2024190 +_08164D94: .4byte 0x00000BD4 +_08164D98: .4byte gUnknown_2023D58 +_08164D9C: .4byte gUnknown_2023FDE +_08164DA0: .4byte 0x00000D06 + thumb_func_end sub_08164CE4 + + thumb_func_start sub_08164DA4 +sub_08164DA4: @ 0x08164DA4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08164E30 + ldr r0, [r0] + movs r3, #0 + movs r2, #0 + ldr r4, _08164E34 + adds r1, r0, r4 +_08164DB6: + ldm r1!, {r0} + adds r3, r3, r0 + adds r2, #1 + cmp r2, #0x39 + bls _08164DB6 + ldr r5, _08164E30 + ldr r1, [r5] + ldr r2, _08164E38 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, r3 + beq _08164DD6 + ldr r3, _08164E34 + adds r0, r1, r3 + bl sub_08164E84 +_08164DD6: + movs r4, #0 + adds r7, r5, #0 + movs r6, #0xec + mov r8, r7 +_08164DDE: + adds r0, r4, #0 + muls r0, r6, r0 + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, [r7] + movs r3, #0 + movs r2, #0 + adds r5, r4, #1 + adds r1, r1, r0 +_08164DF2: + ldm r1!, {r0} + adds r3, r3, r0 + adds r2, #1 + cmp r2, #0x39 + bls _08164DF2 + mov r0, r8 + ldr r2, [r0] + adds r1, r4, #0 + muls r1, r6, r1 + movs r4, #0x82 + lsls r4, r4, #4 + adds r0, r2, r4 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, r3 + beq _08164E1E + movs r3, #0xe7 + lsls r3, r3, #3 + adds r0, r1, r3 + adds r0, r2, r0 + bl sub_08164E84 +_08164E1E: + adds r4, r5, #0 + cmp r4, #4 + ble _08164DDE + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08164E30: .4byte gUnknown_3005AF0 +_08164E34: .4byte 0x0000064C +_08164E38: .4byte 0x00000734 + thumb_func_end sub_08164DA4 + + thumb_func_start sub_08164E3C +sub_08164E3C: @ 0x08164E3C + push {r4, lr} + adds r2, r0, #0 + adds r2, #0xe8 + movs r1, #0 + str r1, [r2] + movs r3, #0 + adds r4, r0, #0 +_08164E4A: + ldr r0, [r2] + ldm r4!, {r1} + adds r0, r0, r1 + str r0, [r2] + adds r3, #1 + cmp r3, #0x39 + bls _08164E4A + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08164E3C + + thumb_func_start sub_08164E60 +sub_08164E60: @ 0x08164E60 + push {r4, lr} + adds r2, r0, #0 + adds r2, #0xa0 + movs r1, #0 + str r1, [r2] + movs r3, #0 + adds r4, r0, #0 +_08164E6E: + ldr r0, [r2] + ldm r4!, {r1} + adds r0, r0, r1 + str r0, [r2] + adds r3, #1 + cmp r3, #0x27 + bls _08164E6E + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08164E60 + + thumb_func_start sub_08164E84 +sub_08164E84: @ 0x08164E84 + push {lr} + movs r1, #0 + movs r2, #0 +_08164E8A: + stm r0!, {r2} + adds r1, #1 + cmp r1, #0x3a + bls _08164E8A + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08164E84 + + thumb_func_start sub_08164E98 +sub_08164E98: @ 0x08164E98 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _08164EC0 + ldr r2, [r2] + lsrs r0, r0, #0x17 + lsrs r1, r1, #0x16 + adds r0, r0, r1 + movs r1, #0xce + lsls r1, r1, #4 + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + ldr r1, _08164EC4 + cmp r0, r1 + bls _08164EBA + adds r0, r1, #0 +_08164EBA: + pop {r1} + bx r1 + .align 2, 0 +_08164EC0: .4byte gUnknown_3005AF0 +_08164EC4: .4byte 0x0000270F + thumb_func_end sub_08164E98 + + thumb_func_start sub_08164EC8 +sub_08164EC8: @ 0x08164EC8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r0, _08164FC0 + ldr r0, [r0] + ldr r1, _08164FC4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r4, r0, #0 + ldr r0, _08164FC8 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0x44 + mov sb, r2 + cmp r4, #0 + beq _08164EF8 + movs r0, #0x45 + mov sb, r0 +_08164EF8: + ldr r5, _08164FCC + movs r0, #0 + strh r0, [r5] + adds r0, r4, #0 + bl sub_08164E98 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x37 + bls _08164F64 + movs r6, #0 + ldr r7, _08164FD0 + mov r8, r5 + mov r5, sp +_08164F14: + ldr r0, _08164FC0 + ldr r0, [r0] + lsls r1, r6, #1 + ldr r2, _08164FD4 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r1, [r0] + subs r1, #1 + movs r0, #0 + strb r1, [r5] + strb r0, [r5, #1] + movs r0, #0x64 + muls r0, r1, r0 + movs r1, #0x8e + lsls r1, r1, #2 + adds r4, r0, r1 + ldr r0, [r7] + adds r0, r0, r4 + mov r1, sb + bl sub_0806A058 + cmp r0, #0 + bne _08164F5C + movs r0, #1 + mov r2, r8 + strh r0, [r2] + ldr r0, [r7] + adds r0, r0, r4 + mov r1, sb + bl sub_0806A774 + ldr r0, [r7] + adds r0, r0, r4 + bl sub_080EF0BC + strb r0, [r5, #1] +_08164F5C: + adds r5, #4 + adds r6, #1 + cmp r6, #2 + ble _08164F14 +_08164F64: + ldr r0, _08164FCC + ldrh r0, [r0] + cmp r0, #0 + beq _08164FB2 + movs r0, #0x2a + bl sub_0808414C + mov r3, sp + add r2, sp, #4 + movs r6, #1 +_08164F78: + ldrb r1, [r3, #1] + ldrb r0, [r2, #1] + cmp r0, r1 + bls _08164F88 + ldr r1, [sp] + ldr r0, [r2] + str r0, [sp] + str r1, [r2] +_08164F88: + adds r2, #4 + subs r6, #1 + cmp r6, #0 + bge _08164F78 + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #4 + bls _08164FB2 + ldr r2, _08164FD0 + mov r0, sp + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + movs r0, #0x8e + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + mov r1, sb + bl sub_080EEFFC +_08164FB2: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08164FC0: .4byte gUnknown_3005AF0 +_08164FC4: .4byte 0x00000CA9 +_08164FC8: .4byte 0x000040CE +_08164FCC: .4byte gUnknown_2037290 +_08164FD0: .4byte gUnknown_3005AEC +_08164FD4: .4byte 0x00000CAA + thumb_func_end sub_08164EC8 + + thumb_func_start sub_08164FD8 +sub_08164FD8: @ 0x08164FD8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r1, _08165004 + ldr r2, [r1] + ldr r0, _08165008 + adds r7, r2, r0 + ldrb r0, [r2, #8] + adds r5, r1, #0 + cmp r0, #0 + beq _08165010 + ldr r4, _0816500C + ldrb r0, [r2, #0xa] + ldrb r1, [r2, #0xb] + adds r0, r0, r1 + ldrb r1, [r2, #0xc] + adds r0, r0, r1 + ldrb r1, [r2, #0xd] + adds r0, r0, r1 + movs r1, #0x14 + b _08165022 + .align 2, 0 +_08165004: .4byte gUnknown_3005AF0 +_08165008: .4byte 0x00000BEC +_0816500C: .4byte gUnknown_85BBE3E +_08165010: + ldr r4, _081650B0 + ldrb r0, [r2, #0xa] + ldrb r1, [r2, #0xb] + adds r0, r0, r1 + ldrb r1, [r2, #0xc] + adds r0, r0, r1 + ldrb r1, [r2, #0xd] + adds r0, r0, r1 + movs r1, #0x1e +_08165022: + bl __umodsi3 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r7, #1] + adds r0, r7, #0 + adds r0, #0xc + ldr r1, [r5] + adds r1, #0xa + bl sub_08083C7C + adds r0, r7, #4 + ldr r1, [r5] + bl sub_08008888 + movs r0, #1 + strh r0, [r7, #2] + movs r6, #7 + movs r4, #0 + ldr r0, _081650B4 + mov r8, r0 + adds r5, r7, #0 + adds r5, #0x10 + ldr r1, _081650B8 + mov ip, r1 + adds r3, r7, #0 + adds r3, #0x28 + adds r2, r7, #0 + adds r2, #0x1c +_0816505C: + lsls r0, r4, #1 + mov sb, r0 + mov r1, r8 + ldr r0, [r1] + add r0, ip + add r0, sb + ldrh r0, [r0] + strh r0, [r5] + strh r6, [r2] + adds r0, r6, #6 + strh r0, [r3] + adds r6, #1 + adds r5, #2 + adds r3, #2 + adds r2, #2 + adds r4, #1 + cmp r4, #5 + ble _0816505C + movs r4, #0 +_08165082: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081650BC + adds r0, r0, r1 + movs r1, #0x2c + muls r1, r4, r1 + adds r1, #0x34 + adds r1, r7, r1 + bl sub_0806823C + adds r4, #1 + cmp r4, #2 + ble _08165082 + adds r0, r7, #0 + bl sub_081651A4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081650B0: .4byte gUnknown_85BBE20 +_081650B4: .4byte gUnknown_3005AEC +_081650B8: .4byte 0x00002BBC +_081650BC: .4byte gUnknown_2024190 + thumb_func_end sub_08164FD8 + + thumb_func_start sub_081650C0 +sub_081650C0: @ 0x081650C0 + ldr r1, _081650D4 + ldr r0, _081650D8 + ldr r0, [r0] + ldr r2, _081650DC + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081650D4: .4byte gUnknown_82EFF00 +_081650D8: .4byte gUnknown_3005AF0 +_081650DC: .4byte 0x00000BED + thumb_func_end sub_081650C0 + + thumb_func_start sub_081650E0 +sub_081650E0: @ 0x081650E0 + ldr r1, _081650F4 + ldr r0, _081650F8 + ldr r0, [r0] + ldr r2, _081650FC + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081650F4: .4byte gUnknown_82EFF52 +_081650F8: .4byte gUnknown_3005AF0 +_081650FC: .4byte 0x00000BED + thumb_func_end sub_081650E0 + + thumb_func_start sub_08165100 +sub_08165100: @ 0x08165100 + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r0, _0816512C + ldr r0, [r0] + movs r1, #0xbf + lsls r1, r1, #4 + adds r4, r0, r1 +_08165110: + adds r0, r3, r2 + adds r1, r4, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #4 + ble _08165110 + adds r1, r3, r2 + movs r0, #0xff + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816512C: .4byte gUnknown_3005AF0 + thumb_func_end sub_08165100 + + thumb_func_start sub_08165130 +sub_08165130: @ 0x08165130 + push {r4, r5, r6, lr} + ldr r2, _0816515C + movs r0, #0 + strh r0, [r2] + ldr r1, _08165160 + ldr r0, [r1] + ldr r3, _08165164 + adds r5, r0, r3 + movs r4, #0 + movs r3, #0 + adds r6, r1, #0 + adds r1, r5, #0 +_08165148: + ldm r1!, {r0} + orrs r4, r0 + adds r3, #1 + cmp r3, #0x2d + bls _08165148 + cmp r4, #0 + bne _08165168 + movs r0, #1 + strh r0, [r2] + b _08165192 + .align 2, 0 +_0816515C: .4byte gUnknown_2037290 +_08165160: .4byte gUnknown_3005AF0 +_08165164: .4byte 0x00000BEC +_08165168: + movs r4, #0 + movs r3, #0 + adds r2, r5, #0 +_0816516E: + ldm r2!, {r0} + adds r4, r4, r0 + adds r3, #1 + cmp r3, #0x2d + bls _0816516E + ldr r1, [r6] + ldr r2, _08165198 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, r4 + beq _08165192 + ldr r3, _0816519C + adds r0, r1, r3 + bl sub_081651C8 + ldr r1, _081651A0 + movs r0, #1 + strh r0, [r1] +_08165192: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08165198: .4byte 0x00000CA4 +_0816519C: .4byte 0x00000BEC +_081651A0: .4byte gUnknown_2037290 + thumb_func_end sub_08165130 + + thumb_func_start sub_081651A4 +sub_081651A4: @ 0x081651A4 + push {r4, lr} + adds r2, r0, #0 + adds r2, #0xb8 + movs r1, #0 + str r1, [r2] + movs r3, #0 + adds r4, r0, #0 +_081651B2: + ldr r0, [r2] + ldm r4!, {r1} + adds r0, r0, r1 + str r0, [r2] + adds r3, #1 + cmp r3, #0x2d + bls _081651B2 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081651A4 + + thumb_func_start sub_081651C8 +sub_081651C8: @ 0x081651C8 + push {lr} + movs r1, #0 + movs r2, #0 +_081651CE: + stm r0!, {r2} + adds r1, #1 + cmp r1, #0x2e + bls _081651CE + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081651C8 + + thumb_func_start sub_081651DC +sub_081651DC: @ 0x081651DC + push {lr} + ldr r0, _081651F0 + ldr r0, [r0] + ldr r1, _081651F4 + adds r0, r0, r1 + bl sub_081637CC + pop {r0} + bx r0 + .align 2, 0 +_081651F0: .4byte gUnknown_3005AF0 +_081651F4: .4byte 0x00000BFC + thumb_func_end sub_081651DC + + thumb_func_start sub_081651F8 +sub_081651F8: @ 0x081651F8 + push {lr} + ldr r0, _0816520C + ldrb r0, [r0] + cmp r0, #3 + bne _08165214 + ldr r1, _08165210 + movs r0, #0xff + strb r0, [r1] + b _0816523C + .align 2, 0 +_0816520C: .4byte gUnknown_2023FDE +_08165210: .4byte gUnknown_2021C7C +_08165214: + cmp r0, #1 + bne _08165230 + ldr r0, _08165228 + ldr r0, [r0] + ldr r1, _0816522C + adds r0, r0, r1 + bl sub_081637CC + b _0816523C + .align 2, 0 +_08165228: .4byte gUnknown_3005AF0 +_0816522C: .4byte 0x00000C14 +_08165230: + ldr r0, _08165240 + ldr r0, [r0] + ldr r1, _08165244 + adds r0, r0, r1 + bl sub_081637CC +_0816523C: + pop {r0} + bx r0 + .align 2, 0 +_08165240: .4byte gUnknown_3005AF0 +_08165244: .4byte 0x00000C08 + thumb_func_end sub_081651F8 + + thumb_func_start sub_08165248 +sub_08165248: @ 0x08165248 + push {lr} + ldr r0, _08165278 + ldr r0, [r0] + ldr r1, _0816527C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _0816525C + bl sub_080F0C84 +_0816525C: + movs r0, #0x77 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08165274 + bl sub_080F0C84 + movs r0, #0x77 + bl sub_0809D040 +_08165274: + pop {r0} + bx r0 + .align 2, 0 +_08165278: .4byte gUnknown_3005AF0 +_0816527C: .4byte 0x00000CA8 + thumb_func_end sub_08165248 + + thumb_func_start sub_08165280 +sub_08165280: @ 0x08165280 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + bl sub_08165A4C + ldr r0, _081653AC + cmp r7, r0 + beq _0816529C + b _081653C8 +_0816529C: + movs r0, #0 + mov sl, r0 + mov r1, sp + adds r1, #0x18 + str r1, [sp, #0x30] +_081652A6: + mov r2, sl + lsls r2, r2, #2 + mov sb, r2 + mov r3, sl + adds r3, #1 + str r3, [sp, #0x38] + mov r0, sb + add r0, sl + lsls r0, r0, #2 + ldr r4, _081653B0 + adds r5, r0, r4 +_081652BC: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x18] + ldr r0, _081653B4 + adds r1, r4, #0 + bl sub_0806E65C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _081652BC + ldr r0, [sp, #0x18] + bl sub_0806CB4C + ldrb r1, [r5, #4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _081652BC + movs r0, #0x64 + mov r6, sl + muls r6, r0, r6 + ldr r1, _081653B8 + mov r8, r1 + adds r0, r6, r1 + mov r5, sb + add r5, sl + lsls r5, r5, #2 + ldr r2, _081653B0 + adds r3, r5, r2 + ldrh r1, [r3] + ldrb r2, [r3, #3] + ldrb r3, [r3, #2] + mov ip, r3 + movs r4, #1 + str r4, [sp] + mov r3, sl + str r3, [sp, #4] + str r4, [sp, #8] + ldr r4, _081653B4 + str r4, [sp, #0xc] + mov r3, ip + bl sub_08067730 + str r7, [sp, #0x18] + movs r3, #0 + mov r4, r8 + ldr r0, _081653BC + adds r5, r5, r0 +_0816532C: + adds r1, r3, #0 + adds r1, #0x1a + adds r2, r5, r3 + adds r0, r6, r4 + bl sub_0806A774 + ldr r0, [sp, #0x18] + adds r0, #1 + str r0, [sp, #0x18] + adds r3, r0, #0 + cmp r3, #5 + ble _0816532C + movs r0, #0 + str r0, [sp, #0x18] + movs r1, #0 + movs r0, #0x64 + mov r4, sl + muls r4, r0, r4 + ldr r7, _081653C0 + ldr r6, _081653B8 + mov r0, sb + add r0, sl + lsls r5, r0, #2 +_0816535A: + lsls r0, r1, #1 + adds r0, r0, r5 + adds r0, r0, r7 + ldrh r1, [r0] + ldr r3, [sp, #0x30] + ldrb r2, [r3] + adds r0, r4, r6 + bl sub_08068D34 + ldr r0, [sp, #0x18] + adds r0, #1 + str r0, [sp, #0x18] + adds r1, r0, #0 + cmp r1, #3 + ble _0816535A + movs r0, #0x64 + mov r4, sl + muls r4, r0, r4 + ldr r0, _081653B8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #7 + ldr r2, _081653C4 + bl sub_0806A774 + movs r0, #0 + str r0, [sp, #0x18] + adds r0, r4, #0 + movs r1, #0x31 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C + ldr r1, [sp, #0x38] + mov sl, r1 + cmp r1, #2 + bgt _081653AA + b _081652A6 +_081653AA: + b _081656A6 + .align 2, 0 +_081653AC: .4byte 0x00000C03 +_081653B0: .4byte gUnknown_85BC614 +_081653B4: .4byte 0x0000EF2A +_081653B8: .4byte gUnknown_20242BC +_081653BC: .4byte gUnknown_85BC619 +_081653C0: .4byte gUnknown_85BC620 +_081653C4: .4byte gUnknown_82E9CC0 +_081653C8: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r7, r0 + bne _081653E0 + add r0, sp, #0x10 + ldr r1, _081653DC + ldrb r1, [r1] + strb r1, [r0] + b _081656A6 + .align 2, 0 +_081653DC: .4byte gUnknown_829BDA5 +_081653E0: + ldr r0, _08165548 + cmp r7, r0 + bls _081653E8 + b _08165564 +_081653E8: + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + adds r0, r7, #0 + bl sub_08165B14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x2c] + movs r2, #0 + mov sl, r2 + mov r3, sp + adds r3, #0x18 + str r3, [sp, #0x30] + mov r4, sp + adds r4, #0x1c + str r4, [sp, #0x34] +_08165422: + ldr r0, _0816554C + ldr r1, [r0] + mov r0, sl + adds r0, #0x12 + lsls r0, r0, #1 + ldr r2, _08165550 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r1, [r1] + str r1, [sp, #0x28] + movs r4, #0x64 + mov r3, sl + muls r3, r4, r3 + mov r8, r3 + ldr r0, _08165554 + mov sb, r0 + mov r0, r8 + add r0, sb + ldr r6, _08165558 + ldr r4, [r6] + lsls r5, r1, #4 + adds r4, r5, r4 + ldrh r1, [r4] + ldr r3, [sp, #0x24] + lsls r2, r3, #0x18 + ldrb r3, [r4, #0xc] + mov ip, r3 + ldr r3, [sp, #0x20] + str r3, [sp] + ldrb r4, [r4, #0xb] + str r4, [sp, #4] + ldr r4, [sp, #0x2c] + str r4, [sp, #8] + lsrs r2, r2, #0x18 + mov r3, ip + bl sub_08068174 + movs r0, #0xff + str r0, [sp, #0x1c] + movs r0, #0 + str r0, [sp, #0x18] + movs r2, #0 + mov r0, sl + adds r0, #1 + str r0, [sp, #0x38] + mov r4, r8 + mov r3, sb +_08165480: + ldr r0, [r6] + adds r0, r5, r0 + lsls r1, r2, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, r3 + str r3, [sp, #0x3c] + bl sub_08068D34 + ldr r0, [r6] + adds r0, r5, r0 + ldr r2, [sp, #0x18] + lsls r1, r2, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r3, [sp, #0x3c] + cmp r0, #0xda + bne _081654B0 + movs r0, #0 + str r0, [sp, #0x1c] +_081654B0: + adds r0, r2, #1 + str r0, [sp, #0x18] + adds r2, r0, #0 + cmp r2, #3 + ble _08165480 + movs r1, #0x64 + mov r4, sl + muls r4, r1, r4 + ldr r0, _08165554 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x34] + bl sub_0806A774 + ldr r0, _08165558 + ldr r1, [r0] + ldr r2, [sp, #0x28] + lsls r0, r2, #4 + adds r0, r0, r1 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _0816555C + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + str r0, [sp, #0x18] + movs r2, #0 + ldr r0, _08165560 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r7, r0 + adds r0, r0, r1 + adds r3, r0, #4 +_081654FA: + mov r1, sp + adds r1, r1, r2 + adds r1, #0x10 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [sp, #0x18] + adds r0, #1 + str r0, [sp, #0x18] + adds r2, r0, #0 + cmp r2, #7 + ble _081654FA + movs r3, #0x64 + mov r4, sl + muls r4, r3, r4 + ldr r0, _08165554 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #7 + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r7, #0 + bl sub_08162E90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + adds r0, r4, #0 + movs r1, #0x31 + ldr r2, [sp, #0x30] + bl sub_0806A774 + ldr r4, [sp, #0x38] + mov sl, r4 + cmp r4, #1 + bgt _08165546 + b _08165422 +_08165546: + b _081656A6 + .align 2, 0 +_08165548: .4byte 0x0000012B +_0816554C: .4byte gUnknown_3005AF0 +_08165550: .4byte 0x00000CB4 +_08165554: .4byte gUnknown_20242BC +_08165558: .4byte gUnknown_203B958 +_0816555C: .4byte gUnknown_85ADBF4 +_08165560: .4byte gUnknown_203B954 +_08165564: + ldr r0, _08165624 + cmp r7, r0 + bhi _0816563C + ldr r1, _08165628 + adds r0, r7, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r2, #0 + mov sl, r2 + mov r3, sp + adds r3, #0x18 + str r3, [sp, #0x30] + movs r0, #0xec + muls r0, r7, r0 + movs r4, #0xe7 + lsls r4, r4, #3 + adds r6, r0, r4 + ldr r5, _0816562C +_08165588: + movs r0, #0x64 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + ldr r1, _08165630 + adds r0, r0, r1 + ldr r3, [r5] + adds r1, r3, r6 + mov r2, sl + adds r2, #0x12 + lsls r2, r2, #1 + ldr r4, _08165634 + adds r3, r3, r4 + adds r3, r3, r2 + ldrh r3, [r3] + movs r2, #0x2c + muls r2, r3, r2 + adds r2, #0x34 + adds r1, r1, r2 + movs r2, #1 + bl sub_08067ED0 + movs r0, #0 + str r0, [sp, #0x18] + movs r2, #0 + mov r0, sl + adds r0, #1 + str r0, [sp, #0x38] + ldr r1, [r5] + movs r0, #0xec + adds r4, r7, #0 + muls r4, r0, r4 + ldr r0, _08165638 + adds r3, r1, r0 +_081655CC: + mov r1, sp + adds r1, r1, r2 + adds r1, #0x10 + adds r0, r2, r4 + adds r0, r3, r0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [sp, #0x18] + adds r0, #1 + str r0, [sp, #0x18] + adds r2, r0, #0 + cmp r2, #7 + ble _081655CC + movs r0, #0x64 + mov r4, sl + muls r4, r0, r4 + ldr r0, _08165630 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #7 + add r2, sp, #0x10 + bl sub_0806A774 + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r7, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08162E90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + adds r0, r4, #0 + movs r1, #0x31 + ldr r2, [sp, #0x30] + bl sub_0806A774 + ldr r2, [sp, #0x38] + mov sl, r2 + cmp r2, #1 + ble _08165588 + b _081656A6 + .align 2, 0 +_08165624: .4byte 0x0000018F +_08165628: .4byte 0xFFFFFED4 +_0816562C: .4byte gUnknown_3005AF0 +_08165630: .4byte gUnknown_20242BC +_08165634: .4byte 0x00000CB4 +_08165638: .4byte 0x0000073C +_0816563C: + ldr r3, _081656B8 + adds r0, r7, r3 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r4, #0 + mov sl, r4 + mov r0, sp + adds r0, #0x18 + str r0, [sp, #0x30] + ldr r1, _081656BC + mov r8, r1 + movs r5, #0x24 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r6, r0, #0 + adds r6, #0xdc +_0816565E: + movs r0, #0x64 + mov r4, sl + muls r4, r0, r4 + ldr r0, _081656C0 + adds r4, r4, r0 + mov r2, r8 + ldr r0, [r2] + adds r1, r0, r6 + ldr r3, _081656C4 + adds r0, r0, r3 + adds r0, r0, r5 + ldrb r2, [r0] + adds r0, r4, #0 + bl sub_08068080 + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r7, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08162E90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + adds r0, r4, #0 + movs r1, #0x31 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r5, #2 + movs r2, #1 + add sl, r2 + mov r3, sl + cmp r3, #1 + ble _0816565E +_081656A6: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081656B8: .4byte 0xFFFFFE70 +_081656BC: .4byte gUnknown_3005AF0 +_081656C0: .4byte gUnknown_20242BC +_081656C4: .4byte 0x00000CB4 + thumb_func_end sub_08165280 + + thumb_func_start sub_081656C8 +sub_081656C8: @ 0x081656C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r6, r0, #0 + adds r5, r1, #0 + movs r2, #0 + adds r1, r6, #0 + adds r3, r6, #0 + adds r3, #0x58 +_081656E0: + ldrh r0, [r1, #0x1c] + cmp r0, #0 + beq _081656E8 + adds r2, #1 +_081656E8: + adds r1, #0x2c + cmp r1, r3 + ble _081656E0 + cmp r2, #3 + beq _081656F6 + movs r0, #0 + b _08165802 +_081656F6: + ldrb r0, [r6] + strb r0, [r5] + ldrh r0, [r6, #2] + strh r0, [r5, #2] + movs r2, #0 + ldr r0, _08165758 + ldrb r1, [r0] + ldrb r3, [r6, #1] + mov ip, r0 + adds r4, r5, #4 + adds r7, r6, #4 + movs r0, #0xc + adds r0, r0, r5 + mov sb, r0 + movs r0, #0xc + adds r0, r0, r6 + mov r8, r0 + adds r0, r5, #0 + adds r0, #0x10 + str r0, [sp, #4] + movs r0, #0x10 + adds r0, r0, r6 + mov sl, r0 + adds r0, r5, #0 + adds r0, #0x1c + str r0, [sp, #8] + adds r0, #0xc + str r0, [sp, #0xc] + adds r0, #0x90 + str r0, [sp, #0x10] + cmp r1, r3 + beq _08165746 + mov r1, ip +_08165738: + adds r1, #2 + adds r2, #1 + cmp r2, #0x51 + bgt _08165746 + ldrb r0, [r1] + cmp r0, r3 + bne _08165738 +_08165746: + cmp r2, #0x52 + beq _0816575C + lsls r0, r2, #1 + mov r1, ip + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + b _0816575E + .align 2, 0 +_08165758: .4byte gUnknown_85BBE84 +_0816575C: + movs r0, #0x2b +_0816575E: + strb r0, [r5, #1] + movs r2, #0 + adds r3, r7, #0 +_08165764: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #7 + ble _08165764 + movs r2, #0 + mov r4, sb + mov r3, r8 +_08165778: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _08165778 + mov r3, sl + ldr r1, [sp, #4] + movs r2, #5 +_0816578C: + ldrh r0, [r3] + strh r0, [r1] + adds r3, #2 + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _0816578C + ldr r3, _08165814 + ldr r1, [sp, #8] + movs r2, #5 +_081657A0: + ldrh r0, [r3] + strh r0, [r1] + adds r3, #2 + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _081657A0 + ldr r3, _08165818 + ldr r1, [sp, #0xc] + movs r2, #5 +_081657B4: + ldrh r0, [r3] + strh r0, [r1] + adds r3, #2 + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _081657B4 + adds r2, r6, #0 + adds r3, r5, #0 + movs r4, #0x58 + adds r4, r4, r2 + mov r8, r4 +_081657CC: + adds r1, r3, #0 + adds r1, #0x34 + adds r0, r2, #0 + adds r0, #0x1c + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r6, r7} + stm r1!, {r6, r7} + adds r2, #0x2c + adds r3, #0x2c + cmp r2, r8 + ble _081657CC + movs r0, #0 + str r0, [sp] + ldr r2, _0816581C + mov r0, sp + ldr r1, [sp, #0x10] + bl CpuSet + adds r0, r5, #0 + bl sub_08164E3C + movs r0, #1 +_08165802: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08165814: .4byte gUnknown_85BE986 +_08165818: .4byte gUnknown_85BE992 +_0816581C: .4byte 0x0500000B + thumb_func_end sub_081656C8 + + thumb_func_start sub_08165820 +sub_08165820: @ 0x08165820 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + adds r6, r1, #0 + movs r2, #0 + adds r1, r4, #0 + adds r3, r4, #0 + adds r3, #0x58 +_08165838: + ldrh r0, [r1, #0x34] + cmp r0, #0 + beq _08165840 + adds r2, #1 +_08165840: + adds r1, #0x2c + cmp r1, r3 + ble _08165838 + cmp r2, #3 + beq _0816584E + movs r0, #0 + b _08165914 +_0816584E: + ldrb r0, [r4] + strb r0, [r6] + ldrh r0, [r4, #2] + strh r0, [r6, #2] + movs r2, #0 + ldr r0, _081658A0 + ldrb r1, [r0, #1] + ldrb r3, [r4, #1] + mov ip, r0 + adds r5, r6, #4 + adds r7, r4, #4 + movs r0, #0xc + adds r0, r0, r6 + mov sb, r0 + movs r0, #0xc + adds r0, r0, r4 + mov r8, r0 + adds r0, r6, #0 + adds r0, #0x10 + str r0, [sp] + movs r0, #0x10 + adds r0, r0, r4 + mov sl, r0 + cmp r1, r3 + beq _08165892 + mov r1, ip + adds r1, #1 +_08165884: + adds r1, #2 + adds r2, #1 + cmp r2, #0x51 + bgt _08165892 + ldrb r0, [r1] + cmp r0, r3 + bne _08165884 +_08165892: + cmp r2, #0x52 + beq _081658A4 + lsls r0, r2, #1 + add r0, ip + ldrb r0, [r0] + b _081658A6 + .align 2, 0 +_081658A0: .4byte gUnknown_85BBE84 +_081658A4: + movs r0, #0x24 +_081658A6: + strb r0, [r6, #1] + movs r2, #0 + adds r3, r7, #0 +_081658AC: + adds r0, r5, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #7 + ble _081658AC + movs r2, #0 + mov r5, sb + mov r3, r8 +_081658C0: + adds r0, r5, r2 + adds r1, r3, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #3 + ble _081658C0 + mov r3, sl + ldr r1, [sp] + movs r2, #5 +_081658D4: + ldrh r0, [r3] + strh r0, [r1] + adds r3, #2 + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _081658D4 + adds r2, r4, #0 + adds r3, r6, #0 + movs r4, #0x58 + adds r4, r4, r2 + mov r8, r4 +_081658EC: + adds r1, r3, #0 + adds r1, #0x1c + adds r0, r2, #0 + adds r0, #0x34 + ldm r0!, {r4, r5, r7} + stm r1!, {r4, r5, r7} + ldm r0!, {r4, r5, r7} + stm r1!, {r4, r5, r7} + ldm r0!, {r4, r5, r7} + stm r1!, {r4, r5, r7} + ldm r0!, {r5, r7} + stm r1!, {r5, r7} + adds r2, #0x2c + adds r3, #0x2c + cmp r2, r8 + ble _081658EC + adds r0, r6, #0 + bl sub_08164E60 + movs r0, #1 +_08165914: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08165820 + + thumb_func_start sub_08165924 +sub_08165924: @ 0x08165924 + push {r4, lr} + adds r2, r0, #0 + movs r0, #0 + str r0, [r2, #0x40] + movs r3, #0 + adds r4, r2, #0 +_08165930: + ldr r0, [r2, #0x40] + ldm r4!, {r1} + adds r0, r0, r1 + str r0, [r2, #0x40] + adds r3, #1 + cmp r3, #0xf + bls _08165930 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08165924 + + thumb_func_start sub_08165944 +sub_08165944: @ 0x08165944 + push {lr} + movs r1, #0 + movs r3, #0 + adds r2, r0, #0 +_0816594C: + stm r2!, {r3} + adds r1, #1 + cmp r1, #0x10 + bls _0816594C + bl sub_0819F934 + pop {r0} + bx r0 + thumb_func_end sub_08165944 + + thumb_func_start sub_0816595C +sub_0816595C: @ 0x0816595C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r5, #0 + ldr r0, _081659C0 + mov r8, r0 + mov sb, r8 +_0816596C: + lsls r0, r5, #4 + adds r1, r0, r5 + lsls r1, r1, #2 + adds r1, #0xdc + mov r3, sb + ldr r2, [r3] + movs r4, #0 + movs r3, #0 + adds r6, r0, #0 + adds r7, r5, #1 + adds r2, r2, r1 +_08165982: + ldm r2!, {r0} + adds r4, r4, r0 + adds r3, #1 + cmp r3, #0xf + bls _08165982 + mov r0, r8 + ldr r2, [r0] + adds r0, r6, r5 + lsls r1, r0, #2 + movs r3, #0x8e + lsls r3, r3, #1 + adds r0, r2, r3 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, r4 + beq _081659AC + adds r0, r1, #0 + adds r0, #0xdc + adds r0, r2, r0 + bl sub_08165944 +_081659AC: + adds r5, r7, #0 + cmp r5, #3 + ble _0816596C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081659C0: .4byte gUnknown_3005AF0 + thumb_func_end sub_0816595C + + thumb_func_start sub_081659C4 +sub_081659C4: @ 0x081659C4 + push {r4, lr} + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r4, r1, #0 + movs r0, #0xfa + lsls r0, r0, #1 + cmp r1, r0 + bne _081659E0 + ldr r0, _081659DC + b _08165A34 + .align 2, 0 +_081659DC: .4byte gUnknown_829BDA5 +_081659E0: + ldr r0, _081659EC + cmp r1, r0 + bhi _081659F4 + ldr r0, _081659F0 + b _08165A34 + .align 2, 0 +_081659EC: .4byte 0x0000012B +_081659F0: .4byte gUnknown_829BDA5 +_081659F4: + ldr r0, _08165A10 + cmp r1, r0 + bhi _08165A20 + ldr r0, _08165A14 + ldr r0, [r0] + ldr r4, _08165A18 + adds r2, r1, r4 + movs r1, #0xec + muls r1, r2, r1 + adds r0, r0, r1 + ldr r1, _08165A1C + adds r0, r0, r1 + b _08165A34 + .align 2, 0 +_08165A10: .4byte 0x0000018F +_08165A14: .4byte gUnknown_3005AF0 +_08165A18: .4byte 0xFFFFFED4 +_08165A1C: .4byte 0x0000081C +_08165A20: + ldr r0, _08165A40 + ldr r2, [r0] + ldr r0, _08165A44 + adds r1, r4, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r1, _08165A48 + adds r0, r2, r1 +_08165A34: + ldrb r0, [r0] + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08165A40: .4byte gUnknown_3005AF0 +_08165A44: .4byte 0xFFFFFE70 +_08165A48: .4byte 0x0000011B + thumb_func_end sub_081659C4 + + thumb_func_start sub_08165A4C +sub_08165A4C: @ 0x08165A4C + push {lr} + ldr r0, _08165A78 + ldr r0, [r0] + ldr r1, _08165A7C + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _08165A90 + ldr r1, _08165A80 + ldr r0, _08165A84 + str r0, [r1] + ldr r1, _08165A88 + ldr r0, _08165A8C + str r0, [r1] + ldrb r0, [r2] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + bl sub_08165A9C + b _08165A94 + .align 2, 0 +_08165A78: .4byte gUnknown_3005AF0 +_08165A7C: .4byte 0x00000CA9 +_08165A80: .4byte gUnknown_203B954 +_08165A84: .4byte gUnknown_85B4A10 +_08165A88: .4byte gUnknown_203B958 +_08165A8C: .4byte gUnknown_85B8700 +_08165A90: + bl sub_08165B84 +_08165A94: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_08165A4C + + thumb_func_start sub_08165A9C +sub_08165A9C: @ 0x08165A9C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08165AAA + cmp r0, #1 + beq _08165AAE +_08165AAA: + movs r0, #0x32 + b _08165ABC +_08165AAE: + bl sub_08165AC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bhi _08165ABC + movs r0, #0x3c +_08165ABC: + pop {r1} + bx r1 + thumb_func_end sub_08165A9C + + thumb_func_start sub_08165AC0 +sub_08165AC0: @ 0x08165AC0 + push {r4, r5, r6, lr} + movs r6, #0 + movs r5, #0 +_08165AC6: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08165B10 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _08165B00 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _08165B00 + adds r0, r4, #0 + movs r1, #0x38 + movs r2, #0 + bl sub_0806A058 + cmp r0, r6 + ble _08165B00 + adds r6, r0, #0 +_08165B00: + adds r5, #1 + cmp r5, #5 + ble _08165AC6 + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08165B10: .4byte gUnknown_2024190 + thumb_func_end sub_08165AC0 + + thumb_func_start sub_08165B14 +sub_08165B14: @ 0x08165B14 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + cmp r0, #0x63 + bls _08165B46 + movs r1, #6 + cmp r0, #0x77 + bls _08165B46 + movs r1, #9 + cmp r0, #0x8b + bls _08165B46 + movs r1, #0xc + cmp r0, #0x9f + bls _08165B46 + movs r1, #0xf + cmp r0, #0xb3 + bls _08165B46 + movs r1, #0x12 + cmp r0, #0xc7 + bls _08165B46 + movs r1, #0x1f + cmp r0, #0xdb + bhi _08165B46 + movs r1, #0x15 +_08165B46: + adds r0, r1, #0 + pop {r1} + bx r1 + thumb_func_end sub_08165B14 + + thumb_func_start sub_08165B4C +sub_08165B4C: @ 0x08165B4C + push {lr} + ldr r0, _08165B78 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + beq _08165B64 + cmp r0, #3 + beq _08165B64 + cmp r0, #4 + bne _08165B7C +_08165B64: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08165B7E + .align 2, 0 +_08165B78: .4byte 0x000040CF +_08165B7C: + movs r0, #0 +_08165B7E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08165B4C + + thumb_func_start sub_08165B84 +sub_08165B84: @ 0x08165B84 + push {lr} + ldr r0, _08165BA0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #4 + bne _08165BB4 + ldr r1, _08165BA4 + ldr r0, _08165BA8 + str r0, [r1] + ldr r1, _08165BAC + ldr r0, _08165BB0 + b _08165BFE + .align 2, 0 +_08165BA0: .4byte 0x000040CF +_08165BA4: .4byte gUnknown_203B954 +_08165BA8: .4byte gUnknown_85BC958 +_08165BAC: .4byte gUnknown_203B958 +_08165BB0: .4byte gUnknown_85BCF70 +_08165BB4: + cmp r0, #2 + bne _08165BD4 + ldr r1, _08165BC4 + ldr r0, _08165BC8 + str r0, [r1] + ldr r1, _08165BCC + ldr r0, _08165BD0 + b _08165BFE + .align 2, 0 +_08165BC4: .4byte gUnknown_203B954 +_08165BC8: .4byte gUnknown_85BD554 +_08165BCC: .4byte gUnknown_203B958 +_08165BD0: .4byte gUnknown_85BDB6C +_08165BD4: + cmp r0, #3 + bne _08165BF4 + ldr r1, _08165BE4 + ldr r0, _08165BE8 + str r0, [r1] + ldr r1, _08165BEC + ldr r0, _08165BF0 + b _08165BFE + .align 2, 0 +_08165BE4: .4byte gUnknown_203B954 +_08165BE8: .4byte gUnknown_85BDFC8 +_08165BEC: .4byte gUnknown_203B958 +_08165BF0: .4byte gUnknown_85BE5E0 +_08165BF4: + ldr r1, _08165C14 + ldr r0, _08165C18 + str r0, [r1] + ldr r1, _08165C1C + ldr r0, _08165C20 +_08165BFE: + str r0, [r1] + bl sub_08165AC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1d + bhi _08165C0E + movs r0, #0x1e +_08165C0E: + pop {r1} + bx r1 + .align 2, 0 +_08165C14: .4byte gUnknown_203B954 +_08165C18: .4byte gUnknown_85B4A10 +_08165C1C: .4byte gUnknown_203B958 +_08165C20: .4byte gUnknown_85B8700 + thumb_func_end sub_08165B84 + + thumb_func_start sub_08165C24 +sub_08165C24: @ 0x08165C24 + push {r4, r5, lr} + ldr r5, _08165CA0 +_08165C28: + bl sub_08165B4C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #0 + ldr r1, [r5] + ldr r2, _08165CA4 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r3, r0 + bge _08165C64 + adds r2, #2 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, r4 + beq _08165C64 + ldr r0, _08165CA0 + ldr r1, [r0] + subs r2, #2 + adds r0, r1, r2 + ldrh r2, [r0] + ldr r0, _08165CA8 + adds r1, r1, r0 +_08165C56: + adds r1, #2 + adds r3, #1 + cmp r3, r2 + bge _08165C64 + ldrh r0, [r1] + cmp r0, r4 + bne _08165C56 +_08165C64: + ldr r0, [r5] + ldr r1, _08165CA4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r3, r0 + bne _08165C28 + ldr r5, _08165CAC + strh r4, [r5] + ldrh r0, [r5] + movs r1, #0 + bl sub_08162528 + ldr r0, _08165CA0 + ldr r1, [r0] + ldr r2, _08165CA4 + adds r0, r1, r2 + ldrh r2, [r0] + adds r0, r2, #1 + cmp r0, #2 + bgt _08165C98 + lsls r0, r2, #1 + ldr r2, _08165CA8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r5] + strh r0, [r1] +_08165C98: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08165CA0: .4byte gUnknown_3005AF0 +_08165CA4: .4byte 0x00000CB2 +_08165CA8: .4byte 0x00000CB4 +_08165CAC: .4byte gUnknown_203886A + thumb_func_end sub_08165C24 + + thumb_func_start sub_08165CB0 +sub_08165CB0: @ 0x08165CB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + bl sub_08165B84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] + ldr r0, _08165CF0 + ldrh r2, [r0] + ldr r0, _08165CF4 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r2, r0 + adds r0, r0, r1 + ldr r0, [r0, #0x30] + str r0, [sp, #0x28] + movs r0, #0 + str r0, [sp, #0x24] + ldr r2, [sp, #0x28] + ldrh r1, [r2] + b _08165D0A + .align 2, 0 +_08165CF0: .4byte gUnknown_203886A +_08165CF4: .4byte gUnknown_203B954 +_08165CF8: + ldr r0, [sp, #0x24] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + lsls r0, r0, #1 + ldr r6, [sp, #0x28] + adds r0, r0, r6 + ldrh r1, [r0] +_08165D0A: + ldr r0, _08165D2C + cmp r1, r0 + bne _08165CF8 + movs r0, #0 + mov r8, r0 + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r0, r0, #0x10 + orrs r4, r0 + str r4, [sp, #0x2c] + b _08165E9E + .align 2, 0 +_08165D2C: .4byte 0x0000FFFF +_08165D30: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [sp, #0x24] + bl __modsi3 + lsls r0, r0, #1 + ldr r2, [sp, #0x28] + adds r0, r0, r2 + ldrh r4, [r0] + movs r6, #0 + ldr r7, [sp, #0x18] + add r7, r8 + b _08165D50 +_08165D4E: + adds r6, #1 +_08165D50: + cmp r6, r7 + bge _08165D74 + movs r1, #0x64 + adds r0, r6, #0 + muls r0, r1, r0 + ldr r2, _08165EB8 + adds r0, r0, r2 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + ldr r1, _08165EBC + ldr r2, [r1] + lsls r1, r4, #4 + adds r1, r1, r2 + ldrh r1, [r1] + cmp r0, r1 + bne _08165D4E +_08165D74: + cmp r6, r7 + beq _08165D7A + b _08165E9E +_08165D7A: + movs r6, #0 + cmp r6, r7 + bge _08165DC4 + ldr r0, _08165EC0 + mov sb, r0 + movs r3, #0 +_08165D86: + ldr r1, _08165EB8 + adds r5, r3, r1 + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + str r3, [sp, #0x34] + bl sub_0806A058 + ldr r3, [sp, #0x34] + cmp r0, #0 + beq _08165DBC + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + ldr r1, _08165EBC + ldr r2, [r1] + lsls r1, r4, #4 + adds r1, r1, r2 + ldrb r1, [r1, #0xa] + lsls r1, r1, #1 + add r1, sb + ldr r3, [sp, #0x34] + ldrh r1, [r1] + cmp r0, r1 + beq _08165DC4 +_08165DBC: + adds r3, #0x64 + adds r6, #1 + cmp r6, r7 + blt _08165D86 +_08165DC4: + cmp r6, r7 + bne _08165E9E + movs r6, #0 + cmp r6, r8 + bge _08165DE6 + add r0, sp, #0xc + ldrh r0, [r0] + cmp r0, r4 + beq _08165DE6 + add r1, sp, #0xc +_08165DD8: + adds r1, #2 + adds r6, #1 + cmp r6, r8 + bge _08165DE6 + ldrh r0, [r1] + cmp r0, r4 + bne _08165DD8 +_08165DE6: + cmp r6, r8 + bne _08165E9E + mov r2, r8 + lsls r0, r2, #1 + add r0, sp + adds r0, #0xc + strh r4, [r0] + movs r6, #0x64 + adds r0, r7, #0 + muls r0, r6, r0 + ldr r1, _08165EB8 + adds r0, r0, r1 + ldr r5, _08165EBC + ldr r2, [r5] + lsls r4, r4, #4 + adds r2, r4, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + movs r6, #0 + str r6, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + ldr r2, [sp, #0x2c] + str r2, [sp, #8] + ldr r2, [sp, #0x20] + bl sub_08068174 + add r1, sp, #0x14 + movs r0, #0xff + strb r0, [r1] + mov sb, r4 + mov r0, r8 + adds r0, #1 + str r0, [sp, #0x30] + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + mov r8, r1 + adds r3, r5, #0 + mov r5, sb + ldr r2, _08165EB8 + mov sl, r2 +_08165E3A: + ldr r0, [r3] + adds r0, r5, r0 + lsls r4, r6, #1 + adds r0, #2 + adds r0, r0, r4 + ldrh r1, [r0] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov r0, r8 + add r0, sl + str r3, [sp, #0x34] + bl sub_08068D34 + ldr r3, [sp, #0x34] + ldr r0, [r3] + adds r0, r5, r0 + adds r0, #2 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0xda + bne _08165E6A + movs r0, #0 + mov r1, sp + strb r0, [r1, #0x14] +_08165E6A: + adds r6, #1 + cmp r6, #3 + ble _08165E3A + movs r2, #0x64 + adds r4, r7, #0 + muls r4, r2, r4 + ldr r6, _08165EB8 + adds r4, r4, r6 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0x14 + bl sub_0806A774 + ldr r0, _08165EBC + ldr r0, [r0] + add r0, sb + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _08165EC0 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + ldr r0, [sp, #0x30] + mov r8, r0 +_08165E9E: + ldr r1, [sp, #0x1c] + cmp r8, r1 + beq _08165EA6 + b _08165D30 +_08165EA6: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08165EB8: .4byte gUnknown_20243E8 +_08165EBC: .4byte gUnknown_203B958 +_08165EC0: .4byte gUnknown_85ADBF4 + thumb_func_end sub_08165CB0 + + thumb_func_start sub_08165EC4 +sub_08165EC4: @ 0x08165EC4 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _08165EF0 + ldrb r0, [r3] + cmp r0, r2 + beq _08165EE6 +_08165ED4: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1d + bhi _08165EE6 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08165ED4 +_08165EE6: + cmp r1, #0x1e + beq _08165EF8 + ldr r0, _08165EF4 + b _08165F22 + .align 2, 0 +_08165EF0: .4byte gUnknown_85BBE20 +_08165EF4: .4byte gUnknown_85BBE52 +_08165EF8: + movs r1, #0 + ldr r3, _08165F1C + ldrb r0, [r3] + cmp r0, r2 + beq _08165F14 +_08165F02: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x13 + bhi _08165F14 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _08165F02 +_08165F14: + cmp r1, #0x14 + bne _08165F20 + movs r0, #7 + b _08165F26 + .align 2, 0 +_08165F1C: .4byte gUnknown_85BBE3E +_08165F20: + ldr r0, _08165F2C +_08165F22: + adds r0, r1, r0 + ldrb r0, [r0] +_08165F26: + pop {r1} + bx r1 + .align 2, 0 +_08165F2C: .4byte gUnknown_85BBE70 + thumb_func_end sub_08165EC4 + + thumb_func_start sub_08165F30 +sub_08165F30: @ 0x08165F30 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _08165F7C + movs r0, #0xec + muls r0, r6, r0 + movs r1, #0xe7 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, [r2] + movs r5, #0 + movs r4, #0 + movs r3, #0 + adds r1, r1, r0 +_08165F4C: + ldm r1!, {r0} + adds r5, r5, r0 + orrs r4, r0 + adds r3, #1 + cmp r3, #0x39 + bls _08165F4C + cmp r5, #0 + bne _08165F60 + cmp r4, #0 + beq _08165F8C +_08165F60: + ldr r2, [r2] + movs r0, #0xec + adds r1, r6, #0 + muls r1, r0, r1 + movs r3, #0x82 + lsls r3, r3, #4 + adds r0, r2, r3 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, r5 + bne _08165F80 + movs r0, #1 + b _08165F8E + .align 2, 0 +_08165F7C: .4byte gUnknown_3005AF0 +_08165F80: + movs r3, #0xe7 + lsls r3, r3, #3 + adds r0, r1, r3 + adds r0, r2, r0 + bl sub_08164E84 +_08165F8C: + movs r0, #0 +_08165F8E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08165F30 + + thumb_func_start sub_08165F94 +sub_08165F94: @ 0x08165F94 + push {r4, r5, r6, r7, lr} + ldr r0, _08165FFC + ldr r0, [r0] + ldr r1, _08166000 + ands r0, r1 + cmp r0, #0 + beq _08165FF4 + bl sub_08165A4C + lsls r0, r0, #0x18 + movs r5, #0 + ldr r7, _08166004 + lsrs r0, r0, #0x16 + ldr r1, _08166008 + adds r6, r0, r1 +_08165FB2: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0816600C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #0 + beq _08165FEE + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r1, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + adds r2, r1, #0 + muls r2, r0, r2 + adds r2, r2, r6 + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C +_08165FEE: + adds r5, #1 + cmp r5, #5 + ble _08165FB2 +_08165FF4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08165FFC: .4byte gUnknown_2022C90 +_08166000: .4byte gUnknown_2000002 +_08166004: .4byte gUnknown_82F0D54 +_08166008: .4byte gUnknown_82F00B4 +_0816600C: .4byte gUnknown_20243E8 + thumb_func_end sub_08165F94 + + thumb_func_start sub_08166010 +sub_08166010: @ 0x08166010 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r4, _08166040 + ldr r0, _08166044 + bl sub_08000BDC + str r0, [r4] + ldr r1, _08166048 + ldr r2, _0816604C + adds r0, r0, r2 + str r0, [r1] + str r5, [r0, #8] + str r6, [r0, #4] + ldr r0, _08166050 + bl sub_08166178 + ldr r0, _08166054 + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08166040: .4byte gUnknown_203B978 +_08166044: .4byte 0x00008058 +_08166048: .4byte gUnknown_203B95C +_0816604C: .4byte 0x00007FD0 +_08166050: .4byte sub_0816618C +_08166054: .4byte sub_08166128 + thumb_func_end sub_08166010 + + thumb_func_start sub_08166058 +sub_08166058: @ 0x08166058 + push {r4, r5, lr} + ldr r4, _081660A8 + ldr r0, _081660AC + bl sub_08000BDC + str r0, [r4] + ldr r5, _081660B0 + ldr r1, _081660B4 + adds r0, r0, r1 + str r0, [r5] + ldr r1, _081660B8 + ldr r1, [r1] + str r1, [r0, #8] + ldr r1, _081660BC + ldr r1, [r1] + str r1, [r0, #4] + ldr r4, _081660C0 + ldrb r0, [r4] + bl sub_081670E8 + strb r0, [r4] + ldr r5, [r5] + movs r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08166090 + movs r1, #1 +_08166090: + adds r0, r5, #0 + adds r0, #0x56 + strb r1, [r0] + ldr r0, _081660C4 + bl sub_08166178 + ldr r0, _081660C8 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081660A8: .4byte gUnknown_203B978 +_081660AC: .4byte 0x00008058 +_081660B0: .4byte gUnknown_203B95C +_081660B4: .4byte 0x00007FD0 +_081660B8: .4byte gUnknown_203B964 +_081660BC: .4byte gUnknown_203B960 +_081660C0: .4byte gUnknown_203B968 +_081660C4: .4byte sub_0816618C +_081660C8: .4byte sub_081660CC + thumb_func_end sub_08166058 + + thumb_func_start sub_081660CC +sub_081660CC: @ 0x081660CC + push {r4, lr} + ldr r4, _08166104 + ldr r0, [r4] + ldr r0, [r0] + bl _call_via_r0 + bl sub_080066D8 + thumb_func_end sub_081660CC + + thumb_func_start sub_081660DC +sub_081660DC: @ 0x081660DC + bl sub_08006724 + bl sub_080A12E4 + ldr r4, [r4] + ldr r1, [r4] + ldr r0, _08166108 + cmp r1, r0 + bne _081660FC + adds r0, r4, #0 + adds r0, #0x50 + movs r1, #0 + strb r1, [r0] + ldr r0, _0816610C + bl sub_08000540 +_081660FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08166104: .4byte gUnknown_203B95C +_08166108: .4byte sub_08166370 +_0816610C: .4byte sub_08166110 + thumb_func_end sub_081660DC + + thumb_func_start sub_08166110 +sub_08166110: @ 0x08166110 + push {lr} + bl sub_08166704 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08166110 + + thumb_func_start sub_08166128 +sub_08166128: @ 0x08166128 + push {lr} + ldr r0, _08166148 + ldr r0, [r0] + ldr r0, [r0] + bl _call_via_r0 + bl sub_080066D8 + thumb_func_end sub_08166128 + + thumb_func_start sub_08166138 +sub_08166138: @ 0x08166138 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 +_08166148: .4byte gUnknown_203B95C + thumb_func_end sub_08166138 + + thumb_func_start sub_0816614C +sub_0816614C: @ 0x0816614C + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + ldr r0, _08166170 + ldr r0, [r0] + ldr r1, _08166174 + adds r0, r0, r1 + bl sub_081D1750 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_08166170: .4byte gUnknown_203B978 +_08166174: .4byte 0x00007C58 + thumb_func_end sub_0816614C + + thumb_func_start sub_08166178 +sub_08166178: @ 0x08166178 + ldr r1, _08166188 + ldr r1, [r1] + str r0, [r1] + adds r1, #0x50 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08166188: .4byte gUnknown_203B95C + thumb_func_end sub_08166178 + + thumb_func_start sub_0816618C +sub_0816618C: @ 0x0816618C + push {r4, r5, lr} + sub sp, #4 + ldr r1, _081661AC + ldr r0, [r1] + adds r0, #0x50 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xf + bls _081661A0 + b _08166362 +_081661A0: + lsls r0, r0, #2 + ldr r1, _081661B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081661AC: .4byte gUnknown_203B95C +_081661B0: .4byte _081661B4 +_081661B4: @ jump table + .4byte _081661F4 @ case 0 + .4byte _08166218 @ case 1 + .4byte _08166222 @ case 2 + .4byte _08166240 @ case 3 + .4byte _08166270 @ case 4 + .4byte _08166274 @ case 5 + .4byte _08166280 @ case 6 + .4byte _08166290 @ case 7 + .4byte _0816629C @ case 8 + .4byte _081662A8 @ case 9 + .4byte _081662C4 @ case 10 + .4byte _081662C8 @ case 11 + .4byte _081662F0 @ case 12 + .4byte _0816631C @ case 13 + .4byte _08166334 @ case 14 + .4byte _0816635C @ case 15 +_081661F4: + ldr r2, _0816620C + ldr r0, [r2] + ldr r1, _08166210 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r2] + ldr r2, _08166214 + adds r0, r0, r2 + bl sub_081D151C + b _08166348 + .align 2, 0 +_0816620C: .4byte gUnknown_203B978 +_08166210: .4byte 0x00007B10 +_08166214: .4byte 0x00007C58 +_08166218: + bl sub_0800668C + bl sub_08008424 + b _08166348 +_08166222: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + str r0, [sp] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0816623C + mov r0, sp + bl CpuSet + b _08166348 + .align 2, 0 +_0816623C: .4byte 0x05006000 +_08166240: + movs r0, #0 + bl sub_080017D4 + ldr r1, _08166268 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _0816626C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #0x91 + movs r2, #0xe0 + bl sub_080981B4 + b _08166348 + .align 2, 0 +_08166268: .4byte gUnknown_85C09B0 +_0816626C: .4byte gUnknown_85C09C0 +_08166270: + ldr r1, [r2] + b _0816634C +_08166274: + bl sub_08168130 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08166362 + b _08166348 +_08166280: + ldr r1, _0816628C + movs r0, #0x14 + strh r0, [r1] + bl sub_08167224 + b _08166348 + .align 2, 0 +_0816628C: .4byte gUnknown_3002350 +_08166290: + bl sub_08167734 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08166362 + b _08166348 +_0816629C: + movs r0, #0 + bl sub_0816740C + bl sub_08167564 + b _08166348 +_081662A8: + ldr r0, _081662BC + ldr r0, [r0] + ldr r1, _081662C0 + adds r0, r0, r1 + bl sub_081D275C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08166362 + b _08166348 + .align 2, 0 +_081662BC: .4byte gUnknown_203B978 +_081662C0: .4byte 0x00007B0E +_081662C4: + ldr r1, [r2] + b _0816634C +_081662C8: + ldr r5, _081662E4 + ldr r1, [r5] + ldr r4, _081662E8 + adds r0, r1, r4 + ldr r2, _081662EC + adds r1, r1, r2 + bl sub_081D1D70 + ldr r0, [r5] + adds r0, r0, r4 + bl sub_081D16F4 + b _08166348 + .align 2, 0 +_081662E4: .4byte gUnknown_203B978 +_081662E8: .4byte 0x00007C58 +_081662EC: .4byte 0x00007C6C +_081662F0: + ldr r4, _08166314 + ldr r0, [r4] + ldr r1, _08166318 + adds r0, r0, r1 + bl sub_081D1704 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08166362 + ldr r2, [r4] + ldr r1, _08166318 + adds r0, r2, r1 + adds r1, #0x14 + adds r2, r2, r1 + adds r1, r2, #0 + bl sub_081D15CC + b _08166348 + .align 2, 0 +_08166314: .4byte gUnknown_203B978 +_08166318: .4byte 0x00007C58 +_0816631C: + ldr r0, _0816632C + ldr r0, [r0] + ldr r2, _08166330 + adds r0, r0, r2 + bl sub_081D1878 + b _08166348 + .align 2, 0 +_0816632C: .4byte gUnknown_203B978 +_08166330: .4byte 0x00007C58 +_08166334: + movs r0, #0 + movs r1, #1 + bl sub_081679A4 + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C +_08166348: + ldr r0, _08166358 + ldr r1, [r0] +_0816634C: + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08166362 + .align 2, 0 +_08166358: .4byte gUnknown_203B95C +_0816635C: + ldr r0, _0816636C + bl sub_08166178 +_08166362: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816636C: .4byte sub_08166370 + thumb_func_end sub_0816618C + + thumb_func_start sub_08166370 +sub_08166370: @ 0x08166370 + push {r4, lr} + sub sp, #4 + ldr r4, _08166388 + ldr r0, [r4] + adds r0, #0x50 + ldrb r1, [r0] + cmp r1, #0 + beq _0816638C + cmp r1, #1 + beq _081663CC + b _0816641C + .align 2, 0 +_08166388: .4byte gUnknown_203B95C +_0816638C: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _081663C8 + bl sub_080006F0 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r1, [r4] + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0816641C + .align 2, 0 +_081663C8: .4byte sub_0816614C +_081663CC: + ldr r0, _08166424 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816641C + ldr r4, _08166428 + ldr r0, [r4] + ldr r1, _0816642C + adds r0, r0, r1 + bl sub_081D2A94 + ldr r4, [r4] + ldr r2, _08166430 + adds r0, r4, r2 + ldrb r1, [r0] + ldr r3, _08166434 + adds r0, r4, r3 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08166416 + ldr r1, _08166438 + adds r0, r4, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r2, #0x91 + adds r0, r4, r2 + adds r0, r0, r1 + ldrb r2, [r0] + ldr r3, _0816642C + adds r0, r4, r3 + subs r3, #0xc + adds r1, r4, r3 + ldrb r1, [r1] + bl sub_081D2AB0 +_08166416: + ldr r0, _0816643C + bl sub_08166178 +_0816641C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08166424: .4byte gUnknown_2037C74 +_08166428: .4byte gUnknown_203B978 +_0816642C: .4byte 0x00007B1C +_08166430: .4byte 0x00008041 +_08166434: .4byte 0x00008040 +_08166438: .4byte 0x00007FB3 +_0816643C: .4byte sub_08166440 + thumb_func_end sub_08166370 + + thumb_func_start sub_08166440 +sub_08166440: @ 0x08166440 + push {lr} + ldr r0, _0816645C + ldr r0, [r0] + adds r0, #0x50 + ldrb r0, [r0] + cmp r0, #7 + bls _08166450 + b _0816661A +_08166450: + lsls r0, r0, #2 + ldr r1, _08166460 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816645C: .4byte gUnknown_203B95C +_08166460: .4byte _08166464 +_08166464: @ jump table + .4byte _08166484 @ case 0 + .4byte _08166568 @ case 1 + .4byte _0816661A @ case 2 + .4byte _08166594 @ case 3 + .4byte _0816661A @ case 4 + .4byte _081665A0 @ case 5 + .4byte _081665B8 @ case 6 + .4byte _08166600 @ case 7 +_08166484: + ldr r2, _081664B4 + ldrh r1, [r2, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081664C4 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_08167AA8 + ldr r0, _081664B8 + ldr r0, [r0] + ldr r1, _081664BC + adds r0, r0, r1 + bl sub_081D2B50 + ldr r0, _081664C0 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #1 + b _08166618 + .align 2, 0 +_081664B4: .4byte gUnknown_3002360 +_081664B8: .4byte gUnknown_203B978 +_081664BC: .4byte 0x00007B1C +_081664C0: .4byte gUnknown_203B95C +_081664C4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081664FC + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_08167AA8 + ldr r0, _081664F0 + ldr r0, [r0] + ldr r2, _081664F4 + adds r0, r0, r2 + bl sub_081D2B50 + ldr r0, _081664F8 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #1 + b _08166618 + .align 2, 0 +_081664F0: .4byte gUnknown_203B978 +_081664F4: .4byte 0x00007B1C +_081664F8: .4byte gUnknown_203B95C +_081664FC: + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0816651C + movs r0, #5 + bl sub_080A306C + ldr r0, _08166518 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #3 + b _08166618 + .align 2, 0 +_08166518: .4byte gUnknown_203B95C +_0816651C: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08166526 + b _0816661A +_08166526: + movs r0, #5 + bl sub_080A306C + ldr r0, _0816654C + ldr r0, [r0] + ldr r2, _08166550 + adds r1, r0, r2 + ldrb r1, [r1] + subs r2, #1 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _08166558 + ldr r0, _08166554 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #3 + b _08166618 + .align 2, 0 +_0816654C: .4byte gUnknown_203B978 +_08166550: .4byte 0x00008041 +_08166554: .4byte gUnknown_203B95C +_08166558: + ldr r0, _08166564 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #5 + b _08166618 + .align 2, 0 +_08166564: .4byte gUnknown_203B95C +_08166568: + ldr r0, _08166588 + ldr r0, [r0] + ldr r1, _0816658C + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0816661A + ldr r0, _08166590 + ldr r0, [r0] + adds r0, #0x50 + b _08166618 + .align 2, 0 +_08166588: .4byte gUnknown_203B978 +_0816658C: .4byte 0x00008044 +_08166590: .4byte gUnknown_203B95C +_08166594: + ldr r0, _0816659C + bl sub_08166178 + b _0816661A + .align 2, 0 +_0816659C: .4byte sub_081669F8 +_081665A0: + bl sub_08166B50 + ldr r0, _081665B4 + ldr r1, [r0] + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0816661A + .align 2, 0 +_081665B4: .4byte gUnknown_203B95C +_081665B8: + bl sub_08166BF0 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081665D8 + cmp r1, #0 + bgt _081665D2 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08166610 + b _0816661A +_081665D2: + cmp r1, #1 + bne _0816661A + b _08166610 +_081665D8: + bl sub_0816706C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081665F4 + bl sub_08166D5C + ldr r0, _081665F0 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #7 + b _08166618 + .align 2, 0 +_081665F0: .4byte gUnknown_203B95C +_081665F4: + ldr r0, _081665FC + bl sub_08166178 + b _0816661A + .align 2, 0 +_081665FC: .4byte sub_08166628 +_08166600: + ldr r0, _08166620 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0816661A + bl sub_08166D98 +_08166610: + ldr r0, _08166624 + ldr r0, [r0] + adds r0, #0x50 + movs r1, #0 +_08166618: + strb r1, [r0] +_0816661A: + pop {r0} + bx r0 + .align 2, 0 +_08166620: .4byte gUnknown_3002360 +_08166624: .4byte gUnknown_203B95C + thumb_func_end sub_08166440 + + thumb_func_start sub_08166628 +sub_08166628: @ 0x08166628 + push {r4, r5, lr} + sub sp, #4 + ldr r5, _08166640 + ldr r0, [r5] + adds r0, #0x50 + ldrb r4, [r0] + cmp r4, #0 + beq _08166644 + cmp r4, #1 + beq _08166694 + b _081666E0 + .align 2, 0 +_08166640: .4byte gUnknown_203B95C +_08166644: + ldr r0, _08166680 + ldr r0, [r0] + ldr r1, _08166684 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081670A8 + ldr r1, _08166688 + strb r0, [r1] + ldr r1, _0816668C + ldr r2, [r5] + ldr r0, [r2, #4] + str r0, [r1] + ldr r1, _08166690 + ldr r0, [r2, #8] + str r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, [r5] + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081666E0 + .align 2, 0 +_08166680: .4byte gUnknown_203B978 +_08166684: .4byte 0x00008041 +_08166688: .4byte gUnknown_203B968 +_0816668C: .4byte gUnknown_203B960 +_08166690: .4byte gUnknown_203B964 +_08166694: + ldr r0, _081666E8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081666E0 + movs r0, #0 + bl sub_080006F0 + ldr r4, _081666EC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _081666F0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _081666F4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _081666F8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + bl sub_080034D4 + ldr r1, _081666FC + ldr r0, _08166700 + str r0, [r1, #8] + bl sub_08179C28 +_081666E0: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081666E8: .4byte gUnknown_2037C74 +_081666EC: .4byte gUnknown_203B96C +_081666F0: .4byte gUnknown_203B970 +_081666F4: .4byte gUnknown_203B974 +_081666F8: .4byte gUnknown_203B978 +_081666FC: .4byte gUnknown_3002360 +_08166700: .4byte sub_08166058 + thumb_func_end sub_08166628 + + thumb_func_start sub_08166704 +sub_08166704: @ 0x08166704 + push {r4, lr} + sub sp, #4 + ldr r1, _08166724 + ldr r0, [r1] + adds r0, #0x50 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #6 + bls _08166718 + b _08166824 +_08166718: + lsls r0, r0, #2 + ldr r1, _08166728 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08166724: .4byte gUnknown_203B95C +_08166728: .4byte _0816672C +_0816672C: @ jump table + .4byte _08166748 @ case 0 + .4byte _0816677E @ case 1 + .4byte _08166824 @ case 2 + .4byte _081667AC @ case 3 + .4byte _081667BA @ case 4 + .4byte _081667D4 @ case 5 + .4byte _08166800 @ case 6 +_08166748: + ldr r0, _08166768 + ldr r0, [r0] + ldr r1, _0816676C + adds r0, r0, r1 + ldr r1, _08166770 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _08166774 + ldr r0, [r4] + adds r0, #0x56 + ldrb r0, [r0] + bl sub_08167AA8 + ldr r1, [r4] + b _081667EE + .align 2, 0 +_08166768: .4byte gUnknown_203B978 +_0816676C: .4byte 0x00008041 +_08166770: .4byte gUnknown_203B968 +_08166774: + ldr r0, [r4] + adds r0, #0x50 + movs r1, #3 + strb r1, [r0] + b _08166824 +_0816677E: + ldr r0, _081667A0 + ldr r0, [r0] + ldr r1, _081667A4 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08166824 + ldr r0, _081667A8 + ldr r0, [r0] + adds r0, #0x50 + strb r1, [r0] + b _08166824 + .align 2, 0 +_081667A0: .4byte gUnknown_203B978 +_081667A4: .4byte 0x00008044 +_081667A8: .4byte gUnknown_203B95C +_081667AC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + b _081667EA +_081667BA: + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + b _081667EA +_081667D4: + ldr r0, _081667F8 + bl sub_080006F0 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_081667EA: + ldr r0, _081667FC + ldr r1, [r0] +_081667EE: + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08166824 + .align 2, 0 +_081667F8: .4byte sub_0816614C +_081667FC: .4byte gUnknown_203B95C +_08166800: + ldr r0, _0816682C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08166824 + ldr r0, _08166830 + ldr r0, [r0] + ldr r1, _08166834 + adds r0, r0, r1 + bl sub_081D2A94 + ldr r0, _08166838 + bl sub_08166178 + ldr r0, _0816683C + bl sub_08000540 +_08166824: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816682C: .4byte gUnknown_2037C74 +_08166830: .4byte gUnknown_203B978 +_08166834: .4byte 0x00007B1C +_08166838: .4byte sub_08166840 +_0816683C: .4byte sub_08166128 + thumb_func_end sub_08166704 + + thumb_func_start sub_08166840 +sub_08166840: @ 0x08166840 + push {r4, r5, r6, lr} + ldr r1, _0816685C + ldr r0, [r1] + adds r0, #0x50 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #5 + bls _08166852 + b _081669E6 +_08166852: + lsls r0, r0, #2 + ldr r1, _08166860 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816685C: .4byte gUnknown_203B95C +_08166860: .4byte _08166864 +_08166864: @ jump table + .4byte _0816687C @ case 0 + .4byte _081668B8 @ case 1 + .4byte _081668CC @ case 2 + .4byte _08166920 @ case 3 + .4byte _081669A0 @ case 4 + .4byte _081669C2 @ case 5 +_0816687C: + ldr r4, [r5] + ldr r3, _081668A8 + str r3, [r4, #0xc] + ldr r0, _081668AC + ldr r0, [r0] + ldr r2, _081668B0 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r0, r1 + subs r2, #0x88 + adds r1, r1, r2 + ldrb r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + adds r1, r1, r3 + str r1, [r4, #0xc] + ldr r3, _081668B4 + adds r0, r0, r3 + bl sub_081D2B50 + b _081669B6 + .align 2, 0 +_081668A8: .4byte gUnknown_2024190 +_081668AC: .4byte gUnknown_203B978 +_081668B0: .4byte 0x00008041 +_081668B4: .4byte 0x00007B1C +_081668B8: + ldr r0, _081668C8 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081668C6 + b _081669E6 +_081668C6: + b _081669B6 + .align 2, 0 +_081668C8: .4byte gUnknown_3002360 +_081668CC: + bl sub_08166F08 + ldr r6, _0816690C + ldr r0, [r6] + adds r0, #0x5c + ldr r4, _08166910 + ldr r1, [r4] + ldr r5, _08166914 + adds r1, r1, r5 + bl sub_081D1D70 + ldr r2, [r4] + ldr r4, _08166918 + adds r0, r2, r4 + ldr r3, _0816691C + adds r1, r2, r3 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r4, #0x14 + adds r1, r1, r4 + adds r1, r2, r1 + adds r2, r2, r5 + bl sub_081D15CC + bl sub_0816713C + ldr r1, [r6] + b _081669B8 + .align 2, 0 +_0816690C: .4byte gUnknown_203B95C +_08166910: .4byte gUnknown_203B978 +_08166914: .4byte 0x00007CA8 +_08166918: .4byte 0x00007C58 +_0816691C: .4byte 0x00007FB3 +_08166920: + ldr r5, _08166984 + ldr r0, [r5] + ldr r1, _08166988 + adds r0, r0, r1 + bl sub_081D16BC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _081669E6 + ldr r0, [r5] + ldr r4, _0816698C + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_081670A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08167FFC + ldr r3, [r5] + adds r4, r3, r4 + ldrb r1, [r4] + ldr r2, _08166990 + adds r0, r3, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08166978 + ldr r4, _08166994 + adds r0, r3, r4 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r2, #0x90 + adds r0, r3, r2 + adds r0, r0, r1 + ldrb r2, [r0] + ldr r4, _08166998 + adds r0, r3, r4 + subs r4, #0xc + adds r1, r3, r4 + ldrb r1, [r1] + bl sub_081D2AB0 +_08166978: + ldr r1, _0816699C + ldr r0, [r1] + adds r0, #0x52 + strb r6, [r0] + ldr r1, [r1] + b _081669B8 + .align 2, 0 +_08166984: .4byte gUnknown_203B978 +_08166988: .4byte 0x00007C58 +_0816698C: .4byte 0x00008041 +_08166990: .4byte 0x00008040 +_08166994: .4byte 0x00007FB3 +_08166998: .4byte 0x00007B1C +_0816699C: .4byte gUnknown_203B95C +_081669A0: + ldr r1, [r5] + adds r1, #0x52 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bls _081669E6 + bl sub_08166C30 +_081669B6: + ldr r1, [r5] +_081669B8: + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081669E6 +_081669C2: + ldr r0, _081669EC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081669E6 + bl sub_08166CE8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081669E6 + ldr r0, _081669F0 + ldrb r0, [r0] + bl sub_08136FD8 + ldr r0, _081669F4 + bl sub_08166178 +_081669E6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081669EC: .4byte gUnknown_3002360 +_081669F0: .4byte gUnknown_203CB48 +_081669F4: .4byte sub_081669F8 + thumb_func_end sub_08166840 + + thumb_func_start sub_081669F8 +sub_081669F8: @ 0x081669F8 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r4, _08166A14 + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0x50 + ldrb r1, [r2] + cmp r1, #1 + beq _08166A34 + cmp r1, #1 + bgt _08166A18 + cmp r1, #0 + beq _08166A22 + b _08166B24 + .align 2, 0 +_08166A14: .4byte gUnknown_203B95C +_08166A18: + cmp r1, #2 + beq _08166A4C + cmp r1, #3 + beq _08166A68 + b _08166B24 +_08166A22: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08166A56 +_08166A34: + ldr r0, _08166A48 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08166B24 + movs r0, #2 + strb r0, [r2] + b _08166B24 + .align 2, 0 +_08166A48: .4byte gUnknown_2037C74 +_08166A4C: + ldr r1, _08166A64 + movs r0, #3 + strb r0, [r1, #0x15] + bl sub_080B9800 +_08166A56: + ldr r1, [r4] + adds r1, #0x50 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08166B24 + .align 2, 0 +_08166A64: .4byte gUnknown_20397C8 +_08166A68: + ldr r0, [r0, #4] + bl sub_08000540 + ldr r0, _08166B2C + ldr r0, [r0] + ldr r1, _08166B30 + adds r0, r0, r1 + bl sub_081D2B7C + movs r4, #0 +_08166A7C: + ldr r5, _08166B2C + ldr r0, [r5] + ldr r2, _08166B34 + adds r0, r0, r2 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08166B38 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _08166A7C + movs r0, #0 + bl sub_08008280 + movs r0, #1 + bl sub_08008280 + movs r0, #0 + bl sub_08008564 + movs r0, #1 + bl sub_08008564 + movs r4, #0 +_08166ABA: + ldr r0, [r5] + lsls r1, r4, #2 + ldr r2, _08166B3C + adds r0, r0, r2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _08166ABA + ldr r6, _08166B2C + ldr r0, [r6] + ldr r2, _08166B40 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _08166AF2 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08166B38 + adds r0, r0, r1 + bl sub_08006E00 +_08166AF2: + movs r0, #0 + bl sub_080006F0 + ldr r4, _08166B44 + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + ldr r4, _08166B48 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _08166B4C + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, [r6] + bl sub_08000BF0 + str r5, [r6] + bl sub_080034D4 +_08166B24: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08166B2C: .4byte gUnknown_203B978 +_08166B30: .4byte 0x00007B1C +_08166B34: .4byte 0x00007B06 +_08166B38: .4byte gUnknown_20205AC +_08166B3C: .4byte 0x00007B44 +_08166B40: .4byte 0x00007B10 +_08166B44: .4byte gUnknown_203B96C +_08166B48: .4byte gUnknown_203B970 +_08166B4C: .4byte gUnknown_203B974 + thumb_func_end sub_081669F8 + + thumb_func_start sub_08166B50 +sub_08166B50: @ 0x08166B50 + push {r4, lr} + sub sp, #0x4c + ldr r0, _08166BD8 + ldr r0, [r0] + ldr r1, _08166BDC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081670A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08166BE0 + adds r0, r0, r1 + movs r1, #2 + add r2, sp, #0xc + bl sub_0806A058 + add r0, sp, #0xc + bl sub_0800885C + ldr r1, _08166BE4 + add r0, sp, #0xc + bl sub_080088D8 + ldr r4, _08166BE8 + adds r0, r4, #0 + add r1, sp, #0xc + bl sub_080088B8 + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #2 + movs r1, #0x91 + movs r2, #0xe + bl sub_080981E0 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #2 + movs r1, #3 + bl sub_08003528 + movs r0, #2 + bl sub_0800365C + ldr r0, _08166BEC + movs r1, #1 + movs r2, #0x91 + movs r3, #0xe + bl sub_08198D44 + add sp, #0x4c + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08166BD8: .4byte gUnknown_203B978 +_08166BDC: .4byte 0x00008041 +_08166BE0: .4byte gUnknown_2024190 +_08166BE4: .4byte gUnknown_85CBD12 +_08166BE8: .4byte gUnknown_2021C7C +_08166BEC: .4byte gUnknown_85C09E0 + thumb_func_end sub_08166B50 + + thumb_func_start sub_08166BF0 +sub_08166BF0: @ 0x08166BF0 + push {r4, lr} + bl sub_08198D68 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _08166C24 + cmp r1, #0 + bgt _08166C0E + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08166C12 + b _08166C24 +_08166C0E: + cmp r1, #1 + bne _08166C24 +_08166C12: + movs r0, #5 + bl sub_080A306C + movs r0, #2 + bl sub_08098504 + movs r0, #2 + bl sub_08003774 +_08166C24: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08166BF0 + + thumb_func_start sub_08166C30 +sub_08166C30: @ 0x08166C30 + push {r4, lr} + movs r0, #2 + movs r1, #0x91 + movs r2, #0xe + bl sub_080981E0 + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + ldr r3, _08166CAC + ldr r0, [r3] + adds r0, #0x53 + movs r1, #0 + strb r1, [r0] + ldr r2, [r3] + adds r1, r2, #0 + adds r1, #0x53 + ldrb r0, [r1] + cmp r0, #4 + bhi _08166CB4 + adds r0, r2, #0 + adds r0, #0x61 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0] + adds r4, r3, #0 + cmp r0, #0 + bne _08166C90 + adds r2, r4, #0 +_08166C6C: + ldr r0, [r2] + adds r0, #0x53 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r3, [r2] + adds r1, r3, #0 + adds r1, #0x53 + ldrb r0, [r1] + cmp r0, #4 + bhi _08166CB4 + adds r0, r3, #0 + adds r0, #0x61 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08166C6C +_08166C90: + ldr r2, [r4] + adds r1, r2, #0 + adds r1, #0x53 + ldrb r0, [r1] + cmp r0, #4 + bhi _08166CB4 + ldr r0, _08166CB0 + ldrb r1, [r1] + adds r2, #0x61 + adds r2, r2, r1 + ldrb r2, [r2] + bl sub_08166DD8 + b _08166CC4 + .align 2, 0 +_08166CAC: .4byte gUnknown_203B95C +_08166CB0: .4byte gUnknown_2021C7C +_08166CB4: + ldr r0, _08166CE0 + ldr r1, _08166CE4 + ldr r1, [r1] + adds r1, #0x53 + ldrb r1, [r1] + movs r2, #0 + bl sub_08166DD8 +_08166CC4: + ldr r0, _08166CE0 + bl sub_08166DB4 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + movs r0, #2 + bl sub_0800365C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08166CE0: .4byte gUnknown_2021C7C +_08166CE4: .4byte gUnknown_203B95C + thumb_func_end sub_08166C30 + + thumb_func_start sub_08166CE8 +sub_08166CE8: @ 0x08166CE8 + push {r4, r5, lr} + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + ldr r5, _08166D20 + adds r3, r5, #0 + movs r4, #5 +_08166CF8: + ldr r0, [r3] + adds r0, #0x53 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r2, [r3] + adds r1, r2, #0 + adds r1, #0x53 + ldrb r0, [r1] + cmp r0, #4 + bhi _08166D24 + adds r0, r2, #0 + adds r0, #0x61 + ldrb r1, [r1] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _08166D2A + b _08166CF8 + .align 2, 0 +_08166D20: .4byte gUnknown_203B95C +_08166D24: + strb r4, [r1] + movs r0, #0 + b _08166D50 +_08166D2A: + ldr r4, _08166D58 + ldr r0, [r5] + adds r1, r0, #0 + adds r1, #0x53 + ldrb r1, [r1] + adds r0, #0x61 + adds r0, r0, r1 + ldrb r2, [r0] + adds r0, r4, #0 + bl sub_08166DD8 + adds r0, r4, #0 + bl sub_08166DB4 + movs r0, #2 + movs r1, #2 + bl sub_08003528 + movs r0, #1 +_08166D50: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08166D58: .4byte gUnknown_2021C7C + thumb_func_end sub_08166CE8 + + thumb_func_start sub_08166D5C +sub_08166D5C: @ 0x08166D5C + push {lr} + sub sp, #0xc + movs r0, #2 + movs r1, #0x91 + movs r2, #0xe + bl sub_080981E0 + ldr r2, _08166D94 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #2 + movs r1, #3 + bl sub_08003528 + movs r0, #2 + bl sub_0800365C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08166D94: .4byte gUnknown_85CBD57 + thumb_func_end sub_08166D5C + + thumb_func_start sub_08166D98 +sub_08166D98: @ 0x08166D98 + push {lr} + movs r0, #2 + bl sub_08098504 + movs r0, #2 + bl sub_08003774 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08166D98 + + thumb_func_start sub_08166DB4 +sub_08166DB4: @ 0x08166DB4 + push {lr} + sub sp, #0xc + ldr r2, _08166DD4 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08166DD4: .4byte gUnknown_2021C7C + thumb_func_end sub_08166DB4 + + thumb_func_start sub_08166DD8 +sub_08166DD8: @ 0x08166DD8 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r0, r2, #0x10 + asrs r2, r2, #0x10 + cmp r2, #0 + beq _08166E14 + cmp r2, #0 + ble _08166DF0 + movs r0, #0 +_08166DF0: + lsls r0, r0, #0x10 + ldr r1, _08166E0C + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _08166E10 + adds r0, r4, #0 + bl sub_080088D8 + b _08166E1C + .align 2, 0 +_08166E0C: .4byte gUnknown_85C09E8 +_08166E10: .4byte gUnknown_85CBD3D +_08166E14: + ldr r1, _08166E24 + adds r0, r4, #0 + bl sub_080088B8 +_08166E1C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08166E24: .4byte gUnknown_85CBD4A + thumb_func_end sub_08166DD8 + + thumb_func_start sub_08166E28 +sub_08166E28: @ 0x08166E28 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r4, #0 + ldr r7, _08166E54 +_08166E32: + lsls r0, r4, #2 + adds r0, r0, r7 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_0806A058 + adds r1, r5, r4 + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08166E32 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08166E54: .4byte gUnknown_85C0994 + thumb_func_end sub_08166E28 + + thumb_func_start sub_08166E58 +sub_08166E58: @ 0x08166E58 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + mov r8, r0 + adds r5, r1, #0 + adds r0, r5, #0 + movs r1, #0x30 + bl sub_0806A058 + cmp r0, #0xff + beq _08166EF4 + mov r0, r8 + adds r1, r5, #0 + bl sub_08166F88 + movs r4, #0 + mov r7, sp +_08166E7C: + ldr r1, _08166F00 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r6, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strb r0, [r7] + ldr r1, _08166F04 + ldr r1, [r1] + lsls r2, r4, #1 + adds r1, #0x66 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r0, #0 + bge _08166EAA + movs r1, #0 +_08166EAA: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _08166EB4 + movs r1, #0xff +_08166EB4: + strb r1, [r7] + adds r0, r5, #0 + adds r1, r6, #0 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08166E7C + adds r0, r5, #0 + movs r1, #0x30 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, r8 + ldrb r2, [r2, #6] + adds r1, r0, r2 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _08166EE6 + movs r1, #0xff +_08166EE6: + mov r0, sp + strb r1, [r0] + adds r0, r5, #0 + movs r1, #0x30 + mov r2, sp + bl sub_0806A774 +_08166EF4: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08166F00: .4byte gUnknown_85C0994 +_08166F04: .4byte gUnknown_203B95C + thumb_func_end sub_08166E58 + + thumb_func_start sub_08166F08 +sub_08166F08: @ 0x08166F08 + push {r4, r5, lr} + ldr r5, _08166F74 + ldr r0, _08166F78 + ldr r1, [r0] + ldr r2, _08166F7C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, _08166F80 + adds r1, r1, r0 + ldrb r1, [r1] + movs r0, #0x64 + muls r0, r1, r0 + adds r5, r0, r5 + ldr r4, _08166F84 + ldr r1, [r4] + adds r1, #0x57 + adds r0, r5, #0 + bl sub_08166E28 + ldr r0, [r4] + ldr r0, [r0, #8] + adds r1, r5, #0 + bl sub_08166E58 + ldr r1, [r4] + adds r1, #0x5c + adds r0, r5, #0 + bl sub_08166E28 + movs r3, #0 +_08166F48: + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0x61 + adds r2, r2, r3 + adds r1, r0, #0 + adds r1, #0x5c + adds r1, r1, r3 + adds r0, #0x57 + adds r0, r0, r3 + ldrb r1, [r1] + ldrb r0, [r0] + subs r1, r1, r0 + strb r1, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #4 + bls _08166F48 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08166F74: .4byte gUnknown_2024190 +_08166F78: .4byte gUnknown_203B978 +_08166F7C: .4byte 0x00008041 +_08166F80: .4byte 0x00007FB9 +_08166F84: .4byte gUnknown_203B95C + thumb_func_end sub_08166F08 + + thumb_func_start sub_08166F88 +sub_08166F88: @ 0x08166F88 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r1 + ldr r1, _08166FD0 + ldr r3, [r1] + ldrb r1, [r0, #1] + adds r2, r3, #0 + adds r2, #0x66 + strh r1, [r2] + ldrb r2, [r0, #5] + adds r1, r3, #0 + adds r1, #0x68 + strh r2, [r1] + ldrb r1, [r0, #4] + adds r2, r3, #0 + adds r2, #0x6a + strh r1, [r2] + ldrb r2, [r0, #3] + adds r1, r3, #0 + adds r1, #0x6c + strh r2, [r1] + ldrb r1, [r0, #2] + adds r0, r3, #0 + adds r0, #0x6e + strh r1, [r0] + ldr r0, _08166FD4 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _08166FD8 + movs r0, #1 + b _08166FDE + .align 2, 0 +_08166FD0: .4byte gUnknown_203B95C +_08166FD4: .4byte gUnknown_203B96A +_08166FD8: + cmp r0, #0 + bge _08167054 + movs r0, #0xff +_08166FDE: + movs r2, #0 + lsls r0, r0, #0x18 + mov sb, r0 + ldr r0, _08167064 + mov r8, r0 +_08166FE8: + mov r0, r8 + ldr r1, [r0] + lsls r0, r2, #0x18 + asrs r6, r0, #0x18 + lsls r7, r6, #1 + adds r1, #0x66 + adds r1, r1, r7 + movs r2, #0 + ldrsh r4, [r1, r2] + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08167020 + lsls r0, r5, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r5, r0, #0x18 +_08167020: + ldr r0, _08167068 + adds r0, r6, r0 + ldrb r1, [r0] + mov r0, sl + bl sub_0806E2E4 + lsls r0, r0, #0x18 + asrs r2, r0, #0x18 + cmp r0, sb + bne _08167048 + mov r1, r8 + ldr r0, [r1] + adds r0, #0x66 + adds r0, r0, r7 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + muls r1, r2, r1 + ldrh r2, [r0] + adds r1, r1, r2 + strh r1, [r0] +_08167048: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #4 + ble _08166FE8 +_08167054: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08167064: .4byte gUnknown_203B95C +_08167068: .4byte gUnknown_85C09A8 + thumb_func_end sub_08166F88 + + thumb_func_start sub_0816706C +sub_0816706C: @ 0x0816706C + push {lr} + ldr r0, _08167098 + ldr r1, [r0] + ldr r2, _0816709C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + subs r2, #0x89 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #0x30 + movs r3, #0 + bl sub_081D227C + cmp r0, #0xff + beq _081670A0 + movs r0, #0 + b _081670A2 + .align 2, 0 +_08167098: .4byte gUnknown_203B978 +_0816709C: .4byte 0x00008041 +_081670A0: + movs r0, #1 +_081670A2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0816706C + + thumb_func_start sub_081670A8 +sub_081670A8: @ 0x081670A8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 +_081670B0: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081670CC + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081670D6 + cmp r5, #0 + bne _081670D0 + adds r0, r4, #0 + b _081670E2 + .align 2, 0 +_081670CC: .4byte gUnknown_2024190 +_081670D0: + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081670D6: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081670B0 + movs r0, #0 +_081670E2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081670A8 + + thumb_func_start sub_081670E8 +sub_081670E8: @ 0x081670E8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + movs r6, #0 + cmp r6, r5 + bhs _08167118 +_081670F6: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _08167124 + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _0816710E + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0816710E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _081670F6 +_08167118: + subs r0, r5, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08167124: .4byte gUnknown_2024190 + thumb_func_end sub_081670E8 + + thumb_func_start sub_08167128 +sub_08167128: @ 0x08167128 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081670A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08167128 + + thumb_func_start sub_0816713C +sub_0816713C: @ 0x0816713C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _081671C4 + bl sub_08008210 + ldr r0, _081671C8 + bl sub_0800845C + ldr r2, _081671CC + ldr r0, [r2] + adds r0, #0x54 + movs r1, #0 + strb r1, [r0] + movs r4, #0 + adds r5, r2, #0 + ldr r6, _081671D0 + adds r0, r6, #2 + mov r8, r0 + ldr r7, _081671D4 +_08167164: + ldr r0, [r5] + adds r0, #0x61 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _081671B0 + lsls r2, r4, #2 + adds r0, r2, r6 + movs r3, #0 + ldrsh r1, [r0, r3] + add r2, r8 + movs r0, #0 + ldrsh r2, [r2, r0] + ldr r0, _081671D8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _081671B0 + ldr r0, [r5] + adds r0, #0x61 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _081671A6 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _081671DC + str r1, [r0] +_081671A6: + ldr r1, [r5] + adds r1, #0x54 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081671B0: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08167164 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081671C4: .4byte gUnknown_85C09FC +_081671C8: .4byte gUnknown_85C0A04 +_081671CC: .4byte gUnknown_203B95C +_081671D0: .4byte gUnknown_85C0A0C +_081671D4: .4byte gUnknown_20205C8 +_081671D8: .4byte gUnknown_85C0A40 +_081671DC: .4byte sub_081671E0 + thumb_func_end sub_0816713C + + thumb_func_start sub_081671E0 +sub_081671E0: @ 0x081671E0 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #5 + bgt _081671F2 + ldrh r0, [r1, #0x26] + subs r0, #2 + b _081671FA +_081671F2: + cmp r0, #0xb + bgt _081671FC + ldrh r0, [r1, #0x26] + adds r0, #2 +_081671FA: + strh r0, [r1, #0x26] +_081671FC: + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _0816721C + adds r0, r1, #0 + bl sub_08006E00 + ldr r0, _08167220 + ldr r1, [r0] + adds r1, #0x54 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0816721C: + pop {r0} + bx r0 + .align 2, 0 +_08167220: .4byte gUnknown_203B95C + thumb_func_end sub_081671E0 + + thumb_func_start sub_08167224 +sub_08167224: @ 0x08167224 + push {r4, r5, r6, lr} + movs r4, #0 + movs r5, #0 + ldr r6, _08167230 + b _08167276 + .align 2, 0 +_08167230: .4byte gUnknown_203B978 +_08167234: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081672A4 + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + adds r3, r0, #0 + cmp r3, #0 + bne _08167270 + ldr r1, [r6] + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r0, _081672A8 + adds r1, r1, r0 + movs r0, #0xe + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r2 + ldr r1, _081672AC + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r6] + adds r0, r0, r2 + ldr r2, _081672B0 + adds r0, r0, r2 + strh r3, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08167270: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08167276: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _08167234 + ldr r2, _081672B4 + ldr r0, [r2] + ldr r1, _081672B8 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + adds r1, r5, #1 + ldr r2, _081672BC + adds r0, r0, r2 + strb r1, [r0] + bl sub_081672C0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081672A4: .4byte gUnknown_2024190 +_081672A8: .4byte 0x00007FB8 +_081672AC: .4byte 0x00007FB9 +_081672B0: .4byte 0x00007FBA +_081672B4: .4byte gUnknown_203B978 +_081672B8: .4byte 0x00008041 +_081672BC: .4byte 0x00008040 + thumb_func_end sub_08167224 + + thumb_func_start sub_081672C0 +sub_081672C0: @ 0x081672C0 + push {r4, r5, lr} + ldr r4, _0816732C + ldr r0, [r4] + ldr r5, _08167330 + adds r0, r0, r5 + ldrb r0, [r0] + movs r1, #0 + bl sub_08167340 + ldr r0, [r4] + ldr r1, _08167334 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + ldr r2, _08167338 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + ldr r0, [r4] + ldr r1, _0816733C + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r0, [r4] + adds r5, r0, r5 + ldrb r3, [r5] + adds r1, r3, #1 + adds r2, #0x8c + adds r0, r0, r2 + ldrb r2, [r0] + cmp r1, r2 + blt _08167304 + movs r1, #0 +_08167304: + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r0, #0 + bge _08167314 + subs r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08167314: + adds r0, r1, #0 + movs r1, #1 + bl sub_08167340 + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + movs r1, #2 + bl sub_08167340 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816732C: .4byte gUnknown_203B978 +_08167330: .4byte 0x00008041 +_08167334: .4byte 0x00007FB3 +_08167338: .4byte 0x00007FB4 +_0816733C: .4byte 0x00007FB5 + thumb_func_end sub_081672C0 + + thumb_func_start sub_08167340 +sub_08167340: @ 0x08167340 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r5, r0, #0 + adds r4, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081673F0 + mov sb, r0 + ldr r1, [r0] + lsls r5, r5, #0x10 + asrs r0, r5, #0xe + adds r0, r1, r0 + ldr r3, _081673F4 + adds r2, r0, r3 + ldrb r7, [r2] + ldr r2, _081673F8 + adds r0, r0, r2 + ldrb r0, [r0] + mov sl, r0 + adds r3, #0x88 + adds r0, r1, r3 + ldrb r6, [r0] + movs r0, #0 + mov r8, r0 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r2, _081673FC + adds r0, r0, r2 + adds r0, r1, r0 + lsls r2, r4, #6 + ldr r3, _08167400 + adds r2, r2, r3 + adds r1, r1, r2 + lsrs r5, r5, #0x10 + str r5, [sp] + str r6, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r2, r7, #0 + mov r3, sl + bl sub_081D2504 + mov r3, sb + ldr r1, [r3] + ldr r2, _08167404 + adds r0, r1, r2 + ldr r3, _08167408 + adds r1, r1, r3 + str r5, [sp] + str r4, [sp, #4] + str r6, [sp, #8] + mov r2, r8 + str r2, [sp, #0xc] + adds r2, r7, #0 + mov r3, sl + bl sub_081D25A8 + lsls r0, r4, #0xd + movs r1, #0xc1 + lsls r1, r1, #2 + adds r0, r0, r1 + mov r3, sb + ldr r1, [r3] + adds r0, r1, r0 + lsls r4, r4, #7 + adds r4, #4 + adds r1, r1, r4 + str r5, [sp] + str r6, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r2, r7, #0 + mov r3, sl + bl sub_081D26C4 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081673F0: .4byte gUnknown_203B978 +_081673F4: .4byte 0x00007FB8 +_081673F8: .4byte 0x00007FB9 +_081673FC: .4byte 0x00007B4D +_08167400: .4byte 0x00007B95 +_08167404: .4byte 0x00007C58 +_08167408: .4byte 0x00007FB0 + thumb_func_end sub_08167340 + + thumb_func_start sub_0816740C +sub_0816740C: @ 0x0816740C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _081674A0 + ldr r3, [r1] + ldr r0, _081674A4 + mov r8, r0 + adds r0, r3, r0 + ldrb r0, [r0] + adds r7, r1, #0 + cmp r0, #0xff + bne _08167518 + add r5, sp, #0x18 + add r4, sp, #0x20 + adds r0, r5, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_081D2800 + lsls r0, r6, #0xd + movs r1, #0xc1 + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, [r7] + adds r0, r1, r0 + str r0, [sp, #0x18] + lsls r0, r6, #7 + adds r0, #4 + adds r1, r1, r0 + str r1, [sp, #0x20] + adds r0, r4, #0 + bl sub_0800845C + ldr r1, [r7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081674A8 + adds r1, r1, r2 + strh r0, [r1] + adds r0, r5, #0 + bl sub_08008210 + ldr r1, [r7] + ldr r3, _081674AC + adds r1, r1, r3 + strh r0, [r1] + mov r0, sp + movs r1, #0x26 + movs r2, #0x68 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, [r7] + ldr r2, _081674A4 + adds r0, r0, r2 + strb r1, [r0] + cmp r1, #0x40 + bne _081674B0 + movs r0, #0x64 + bl sub_08008280 + movs r0, #0x64 + bl sub_08008564 + ldr r0, [r7] + add r0, r8 + movs r1, #0xff + strb r1, [r0] + b _08167546 + .align 2, 0 +_081674A0: .4byte gUnknown_203B978 +_081674A4: .4byte 0x00007B10 +_081674A8: .4byte 0x00007B12 +_081674AC: .4byte 0x00007B14 +_081674B0: + ldr r0, [r7] + add r0, r8 + strb r1, [r0] + ldr r4, _08167504 + ldr r2, [r7] + mov r0, r8 + adds r3, r2, r0 + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08167508 + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x26] + subs r1, #0x22 + strh r1, [r0, #0x26] + ldr r3, _0816750C + adds r1, r2, r3 + subs r3, #4 + adds r0, r2, r3 + ldrh r0, [r0] + lsls r0, r0, #5 + ldr r3, _08167510 + adds r0, r0, r3 + str r0, [r1] + ldr r0, _08167514 + adds r2, r2, r0 + ldrh r0, [r2] + lsls r0, r0, #4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r2] + b _08167546 + .align 2, 0 +_08167504: .4byte gUnknown_20205AC +_08167508: .4byte sub_08167F70 +_0816750C: .4byte 0x00007B18 +_08167510: .4byte 0x06010000 +_08167514: .4byte 0x00007B12 +_08167518: + lsls r1, r6, #0xd + movs r0, #0xc1 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r3, r1 + ldr r2, _08167554 + adds r0, r3, r2 + ldr r2, [r0] + ldr r0, _08167558 + str r1, [r0] + str r2, [r0, #4] + ldr r1, _0816755C + str r1, [r0, #8] + ldr r0, [r0, #8] + lsls r0, r6, #7 + adds r0, #4 + adds r0, r3, r0 + ldr r2, _08167560 + adds r1, r3, r2 + ldrh r1, [r1] + movs r2, #0x20 + bl sub_080A1200 +_08167546: + add sp, #0x28 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08167554: .4byte 0x00007B18 +_08167558: .4byte 0x040000D4 +_0816755C: .4byte 0x80000400 +_08167560: .4byte 0x00007B12 + thumb_func_end sub_0816740C + + thumb_func_start sub_08167564 +sub_08167564: @ 0x08167564 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x60 + add r5, sp, #0x20 + add r4, sp, #0x38 + mov r0, sp + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_081D284C + mov r0, sp + bl sub_08008254 + adds r0, r4, #0 + bl sub_080084A8 + movs r4, #0 + ldr r1, _081675EC + ldr r0, [r1] + ldr r2, _081675F0 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + adds r6, r5, #0 + add r2, sp, #0x50 + mov sb, r2 + add r2, sp, #0x58 + mov sl, r2 + cmp r4, r0 + bge _08167620 + adds r5, r1, #0 + ldr r7, _081675F4 + movs r0, #0x1c + adds r0, r0, r7 + mov r8, r0 +_081675B0: + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r1, #0x80 + lsls r1, r1, #0xc + adds r2, r2, r1 + asrs r2, r2, #0x10 + adds r0, r6, #0 + movs r1, #0xe2 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _08167600 + ldr r0, [r5] + ldr r2, _081675F8 + adds r0, r0, r2 + adds r0, r0, r4 + strb r3, [r0] + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r1, r0, r7 + strh r4, [r1, #0x2e] + add r0, r8 + ldr r1, _081675FC + str r1, [r0] + b _0816760C + .align 2, 0 +_081675EC: .4byte gUnknown_203B978 +_081675F0: .4byte 0x00008040 +_081675F4: .4byte gUnknown_20205AC +_081675F8: .4byte 0x00007B06 +_081675FC: .4byte sub_08167F88 +_08167600: + ldr r0, [r5] + ldr r1, _08167668 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_0816760C: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, [r5] + ldr r2, _0816766C + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r4, r0 + blt _081675B0 +_08167620: + movs r0, #0x67 + strh r0, [r6] + cmp r4, #5 + bhi _0816768E + ldr r5, _08167670 + ldr r7, _08167674 +_0816762C: + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r6, #0 + movs r1, #0xe6 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _08167678 + ldr r0, [r5] + ldr r1, _08167668 + adds r0, r0, r1 + adds r0, r0, r4 + strb r3, [r0] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #3] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1, #3] + b _08167684 + .align 2, 0 +_08167668: .4byte 0x00007B06 +_0816766C: .4byte 0x00008040 +_08167670: .4byte gUnknown_203B978 +_08167674: .4byte gUnknown_20205AC +_08167678: + ldr r0, [r5] + ldr r2, _081676E8 + adds r0, r0, r2 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_08167684: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #5 + bls _0816762C +_0816768E: + movs r0, #0x66 + strh r0, [r6] + ldr r0, _081676EC + str r0, [r6, #0x14] + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r6, #0 + movs r1, #0xde + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _081676F8 + ldr r0, _081676F0 + ldr r0, [r0] + ldr r1, _081676E8 + adds r0, r0, r1 + adds r0, r0, r4 + strb r3, [r0] + ldr r0, _081676F4 + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r3, [r2, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r2, #1] + ldrb r0, [r2, #3] + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #3] + b _08167706 + .align 2, 0 +_081676E8: .4byte 0x00007B06 +_081676EC: .4byte sub_08167FBC +_081676F0: .4byte gUnknown_203B978 +_081676F4: .4byte gUnknown_20205AC +_081676F8: + ldr r0, _0816772C + ldr r0, [r0] + ldr r2, _08167730 + adds r0, r0, r2 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_08167706: + mov r0, sb + mov r1, sl + bl sub_081D28E0 + mov r0, sb + bl sub_08008210 + mov r0, sl + bl sub_0800845C + add sp, #0x60 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816772C: .4byte gUnknown_203B978 +_08167730: .4byte 0x00007B06 + thumb_func_end sub_08167564 + + thumb_func_start sub_08167734 +sub_08167734: @ 0x08167734 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _08167754 + ldr r0, [r0] + ldr r2, _08167758 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xb + bls _08167748 + b _0816797C +_08167748: + lsls r0, r0, #2 + ldr r1, _0816775C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08167754: .4byte gUnknown_203B978 +_08167758: .4byte 0x00008048 +_0816775C: .4byte _08167760 +_08167760: @ jump table + .4byte _08167790 @ case 0 + .4byte _08167808 @ case 1 + .4byte _0816783C @ case 2 + .4byte _0816784C @ case 3 + .4byte _08167860 @ case 4 + .4byte _08167878 @ case 5 + .4byte _081678A0 @ case 6 + .4byte _081678B4 @ case 7 + .4byte _081678D8 @ case 8 + .4byte _081678F0 @ case 9 + .4byte _08167920 @ case 10 + .4byte _0816793C @ case 11 +_08167790: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r1, #0x88 + lsls r1, r1, #6 + movs r0, #3 + movs r2, #0 + bl sub_08001E94 + ldr r1, _08167800 + movs r0, #0 + bl sub_08001144 + movs r1, #0x91 + lsls r1, r1, #2 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _08167804 + movs r0, #0x52 + bl sub_08001144 + b _08167982 + .align 2, 0 +_08167800: .4byte 0x00007040 +_08167804: .4byte 0x0000040B +_08167808: + ldr r4, _08167830 + movs r0, #0xfa + lsls r0, r0, #4 + bl sub_08000BC8 + str r0, [r4] + ldr r5, _08167834 + movs r4, #0xa0 + lsls r4, r4, #3 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + ldr r5, _08167838 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + b _08167982 + .align 2, 0 +_08167830: .4byte gUnknown_203B970 +_08167834: .4byte gUnknown_203B96C +_08167838: .4byte gUnknown_203B974 +_0816783C: + ldr r0, _08167844 + ldr r1, _08167848 + b _081678A4 + .align 2, 0 +_08167844: .4byte gUnknown_85BF9A0 +_08167848: .4byte gUnknown_203B974 +_0816784C: + ldr r1, _0816785C + movs r0, #3 + movs r2, #0xe0 + movs r3, #0 + bl sub_0800195C + b _08167982 + .align 2, 0 +_0816785C: .4byte gUnknown_85BF8C0 +_08167860: + ldr r0, _08167874 + ldr r1, [r0] + movs r2, #0xa0 + lsls r2, r2, #3 + movs r0, #3 + movs r3, #0 + bl sub_08001A14 + b _08167982 + .align 2, 0 +_08167874: .4byte gUnknown_203B974 +_08167878: + ldr r0, _08167890 + movs r1, #0xd0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08167894 + ldr r0, [r0] + ldr r1, _08167898 + adds r0, r0, r1 + ldr r1, _0816789C + strh r1, [r0] + b _08167982 + .align 2, 0 +_08167890: .4byte gUnknown_85BF880 +_08167894: .4byte gUnknown_203B978 +_08167898: .4byte 0x00007B0E +_0816789C: .4byte 0x0000FFB0 +_081678A0: + ldr r0, _081678AC + ldr r1, _081678B0 +_081678A4: + ldr r1, [r1] + bl LZ77UnCompVram + b _08167982 + .align 2, 0 +_081678AC: .4byte gUnknown_85BFAAC +_081678B0: .4byte gUnknown_203B970 +_081678B4: + ldr r0, _081678CC + ldr r1, _081678D0 + ldr r1, [r1] + bl LZ77UnCompVram + ldr r0, _081678D4 + movs r1, #0x20 + movs r2, #0x20 + bl sub_080A1200 + b _08167982 + .align 2, 0 +_081678CC: .4byte gUnknown_85C0230 +_081678D0: .4byte gUnknown_203B96C +_081678D4: .4byte gUnknown_85BFA4C +_081678D8: + ldr r0, _081678EC + ldr r1, [r0] + movs r2, #0xfa + lsls r2, r2, #4 + movs r3, #0xa0 + lsls r3, r3, #2 + movs r0, #1 + bl sub_0800195C + b _08167982 + .align 2, 0 +_081678EC: .4byte gUnknown_203B970 +_081678F0: + ldr r0, _08167918 + ldr r1, [r0] + movs r0, #1 + bl sub_0800212C + ldr r1, _0816791C + movs r0, #0xb + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + movs r0, #1 + movs r2, #0 + movs r3, #0xd + bl sub_080022B0 + movs r0, #1 + bl sub_08002248 + b _08167982 + .align 2, 0 +_08167918: .4byte gUnknown_203B96C +_0816791C: .4byte gUnknown_85C0410 +_08167920: + ldr r0, _08167930 + ldr r1, _08167934 + ldr r1, [r1] + ldr r2, _08167938 + adds r1, r1, r2 + bl LZ77UnCompVram + b _08167982 + .align 2, 0 +_08167930: .4byte gUnknown_85C0488 +_08167934: .4byte gUnknown_203B978 +_08167938: .4byte 0x00007304 +_0816793C: + ldr r0, _0816796C + ldr r1, [r0] + ldr r0, _08167970 + adds r1, r1, r0 + movs r2, #0xa0 + lsls r2, r2, #3 + movs r0, #2 + movs r3, #0 + bl sub_08001A14 + ldr r0, _08167974 + movs r1, #0x30 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08167978 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #2 + bl sub_081D1824 + b _08167982 + .align 2, 0 +_0816796C: .4byte gUnknown_203B978 +_08167970: .4byte 0x00007304 +_08167974: .4byte gUnknown_85F4E2C +_08167978: .4byte gUnknown_85F4E4C +_0816797C: + movs r0, #0 + strb r0, [r1] + b _08167992 +_08167982: + ldr r0, _0816799C + ldr r1, [r0] + ldr r2, _081679A0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #1 +_08167992: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0816799C: .4byte gUnknown_203B978 +_081679A0: .4byte 0x00008048 + thumb_func_end sub_08167734 + + thumb_func_start sub_081679A4 +sub_081679A4: @ 0x081679A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + ldr r7, _08167A68 + ldr r3, [r7] + ldr r1, _08167A6C + adds r0, r3, r1 + ldrb r1, [r0] + ldr r2, _08167A70 + adds r0, r3, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08167A4E + lsls r2, r4, #6 + ldr r0, _08167A74 + adds r2, r2, r0 + adds r2, r3, r2 + movs r0, #2 + str r0, [sp] + movs r5, #0 + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, [r7] + ldr r1, _08167A6C + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081670A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08167A78 + adds r0, r0, r1 + bl sub_0806CB34 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, [r7] + ldr r6, _08167A7C + adds r0, r0, r6 + ldr r1, _08167A80 + bl sub_080088B8 + ldr r1, _08167A84 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r1, [r4] + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + ldr r0, _08167A88 + str r0, [sp] + str r5, [sp, #4] + ldr r0, [r7] + adds r0, r0, r6 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC +_08167A4E: + mov r2, r8 + cmp r2, #0 + beq _08167A8C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + movs r1, #3 + bl sub_08003528 + b _08167A9C + .align 2, 0 +_08167A68: .4byte gUnknown_203B978 +_08167A6C: .4byte 0x00008041 +_08167A70: .4byte 0x00008040 +_08167A74: .4byte 0x00007B95 +_08167A78: .4byte gUnknown_2024190 +_08167A7C: .4byte 0x0000804A +_08167A80: .4byte gUnknown_85CB7A2 +_08167A84: .4byte gUnknown_85ECE24 +_08167A88: .4byte gUnknown_85C09AD +_08167A8C: + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #1 + movs r1, #2 + bl sub_08003528 +_08167A9C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081679A4 + + thumb_func_start sub_08167AA8 +sub_08167AA8: @ 0x08167AA8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + beq _08167AC8 + ldr r0, _08167AC0 + ldr r0, [r0] + ldr r1, _08167AC4 + adds r0, r0, r1 + b _08167AD0 + .align 2, 0 +_08167AC0: .4byte gUnknown_203B978 +_08167AC4: .4byte 0x00007FB5 +_08167AC8: + ldr r0, _08167B80 + ldr r0, [r0] + ldr r2, _08167B84 + adds r0, r0, r2 +_08167AD0: + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r5, _08167B80 + ldr r2, [r5] + ldr r3, _08167B88 + adds r0, r2, r3 + ldr r4, _08167B8C + adds r1, r2, r4 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r4, _08167B90 + adds r1, r1, r4 + adds r1, r2, r1 + lsls r3, r6, #2 + adds r3, r3, r6 + lsls r3, r3, #2 + adds r3, r3, r4 + adds r2, r2, r3 + bl sub_081D15CC + ldr r4, [r5] + ldr r1, _08167B94 + adds r0, r4, r1 + ldrb r1, [r0] + ldr r2, _08167B98 + mov ip, r2 + adds r0, r4, r2 + ldrb r0, [r0] + subs r0, #1 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + mov r8, r0 + cmp r7, #0 + beq _08167BA0 + ldr r3, _08167B84 + adds r0, r4, r3 + ldrb r1, [r0] + subs r2, #0x8b + adds r0, r4, r2 + strb r1, [r0] + ldr r0, [r5] + ldr r4, _08167B8C + adds r1, r0, r4 + ldrb r1, [r1] + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r5] + adds r0, r0, r4 + strb r6, [r0] + ldr r0, [r5] + adds r2, r0, r2 + ldrb r1, [r2] + ldr r2, _08167B9C + adds r0, r0, r2 + strb r1, [r0] + ldr r1, [r5] + adds r3, #0x8d + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _08167B60 + mov r4, ip + adds r0, r1, r4 + ldrb r0, [r0] +_08167B60: + subs r2, r0, #1 + ldr r0, _08167B94 + adds r1, r1, r0 + strb r2, [r1] + ldr r1, _08167B80 + ldr r3, [r1] + adds r0, r3, r0 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #0 + bne _08167B7C + ldr r1, _08167B98 + adds r0, r3, r1 + ldrb r0, [r0] +_08167B7C: + subs r1, r0, #1 + b _08167C26 + .align 2, 0 +_08167B80: .4byte gUnknown_203B978 +_08167B84: .4byte 0x00007FB4 +_08167B88: .4byte 0x00007C58 +_08167B8C: .4byte 0x00007FB3 +_08167B90: .4byte 0x00007C6C +_08167B94: .4byte 0x00008041 +_08167B98: .4byte 0x00008040 +_08167B9C: .4byte 0x00007FB6 +_08167BA0: + ldr r3, _08167BE4 + adds r0, r4, r3 + ldrb r1, [r0] + ldr r2, _08167BE8 + adds r0, r4, r2 + strb r1, [r0] + ldr r0, [r5] + ldr r4, _08167BEC + adds r1, r0, r4 + ldrb r1, [r1] + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r5] + adds r0, r0, r4 + strb r6, [r0] + ldr r0, [r5] + adds r2, r0, r2 + ldrb r1, [r2] + ldr r2, _08167BF0 + adds r0, r0, r2 + strb r1, [r0] + ldr r2, [r5] + adds r3, #0x8c + adds r0, r2, r3 + ldrb r1, [r0] + adds r4, #0x8d + adds r0, r2, r4 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bge _08167BF4 + adds r3, r1, #1 + b _08167BF6 + .align 2, 0 +_08167BE4: .4byte 0x00007FB5 +_08167BE8: .4byte 0x00007FB4 +_08167BEC: .4byte 0x00007FB3 +_08167BF0: .4byte 0x00007FB6 +_08167BF4: + movs r3, #0 +_08167BF6: + ldr r1, _08167C18 + adds r0, r2, r1 + strb r3, [r0] + ldr r2, _08167C1C + ldr r3, [r2] + adds r1, r3, r1 + ldrb r1, [r1] + ldr r4, _08167C20 + adds r0, r3, r4 + ldrb r0, [r0] + subs r0, #1 + adds r6, r2, #0 + cmp r1, r0 + bge _08167C24 + adds r1, #1 + b _08167C26 + .align 2, 0 +_08167C18: .4byte 0x00008041 +_08167C1C: .4byte gUnknown_203B978 +_08167C20: .4byte 0x00008040 +_08167C24: + movs r1, #0 +_08167C26: + ldr r2, _08167C60 + adds r0, r3, r2 + strb r1, [r0] + adds r5, r6, #0 + ldr r0, [r5] + ldr r3, _08167C64 + adds r1, r0, r3 + ldrb r2, [r1] + ldr r4, _08167C68 + adds r1, r0, r4 + ldrb r1, [r1] + subs r1, #1 + eors r2, r1 + rsbs r1, r2, #0 + orrs r1, r2 + lsrs r4, r1, #0x1f + ldr r1, _08167C6C + adds r0, r0, r1 + bl sub_081D2B50 + mov r2, r8 + cmp r2, #0 + bne _08167C78 + ldr r0, [r5] + ldr r3, _08167C70 + adds r0, r0, r3 + ldr r1, _08167C74 + b _08167C98 + .align 2, 0 +_08167C60: .4byte 0x00007B4C +_08167C64: .4byte 0x00008041 +_08167C68: .4byte 0x00008040 +_08167C6C: .4byte 0x00007B1C +_08167C70: .4byte 0x00008044 +_08167C74: .4byte sub_08167CAC +_08167C78: + cmp r4, #0 + bne _08167C90 + ldr r0, [r5] + ldr r4, _08167C88 + adds r0, r0, r4 + ldr r1, _08167C8C + b _08167C98 + .align 2, 0 +_08167C88: .4byte 0x00008044 +_08167C8C: .4byte sub_08167DAC +_08167C90: + ldr r0, [r6] + ldr r1, _08167CA4 + adds r0, r0, r1 + ldr r1, _08167CA8 +_08167C98: + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08167CA4: .4byte 0x00008044 +_08167CA8: .4byte sub_08167E50 + thumb_func_end sub_08167AA8 + + thumb_func_start sub_08167CAC +sub_08167CAC: @ 0x08167CAC + push {r4, r5, r6, lr} + ldr r4, _08167CC8 + ldr r1, [r4] + ldr r5, _08167CCC + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _08167CEC + cmp r0, #1 + bgt _08167CD0 + cmp r0, #0 + beq _08167CDA + b _08167DA4 + .align 2, 0 +_08167CC8: .4byte gUnknown_203B978 +_08167CCC: .4byte 0x00008048 +_08167CD0: + cmp r0, #2 + beq _08167D10 + cmp r0, #3 + beq _08167D50 + b _08167DA4 +_08167CDA: + ldr r2, _08167CE8 + adds r0, r1, r2 + ldrb r0, [r0] + bl sub_0816740C + b _08167D34 + .align 2, 0 +_08167CE8: .4byte 0x00007FB3 +_08167CEC: + ldr r6, _08167D08 + adds r0, r1, r6 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_081679A4 + ldr r1, [r4] + ldr r0, _08167D0C + adds r1, r1, r0 + b _08167D38 + .align 2, 0 +_08167D08: .4byte 0x00007FB3 +_08167D0C: .4byte 0x00008048 +_08167D10: + ldr r2, _08167D40 + adds r0, r1, r2 + ldr r6, _08167D44 + adds r1, r1, r6 + bl sub_081D27A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08167DA4 + ldr r1, [r4] + ldr r2, _08167D48 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r6, _08167D4C + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_08167340 +_08167D34: + ldr r1, [r4] + adds r1, r1, r5 +_08167D38: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08167DA4 + .align 2, 0 +_08167D40: .4byte 0x00007C58 +_08167D44: .4byte 0x00007B0E +_08167D48: .4byte 0x00007B4C +_08167D4C: .4byte 0x00007FB6 +_08167D50: + ldr r2, _08167D98 + adds r0, r1, r2 + bl sub_081D2A94 + ldr r3, [r4] + ldr r6, _08167D9C + adds r0, r3, r6 + ldrb r1, [r0] + ldr r2, _08167DA0 + adds r0, r3, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08167D8A + subs r6, #0x8e + adds r0, r3, r6 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r2, #0x90 + adds r0, r3, r2 + adds r0, r0, r1 + ldrb r2, [r0] + ldr r6, _08167D98 + adds r0, r3, r6 + subs r6, #0xc + adds r1, r3, r6 + ldrb r1, [r1] + bl sub_081D2AB0 +_08167D8A: + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + movs r0, #0 + b _08167DA6 + .align 2, 0 +_08167D98: .4byte 0x00007B1C +_08167D9C: .4byte 0x00008041 +_08167DA0: .4byte 0x00008040 +_08167DA4: + movs r0, #1 +_08167DA6: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08167CAC + + thumb_func_start sub_08167DAC +sub_08167DAC: @ 0x08167DAC + push {r4, r5, lr} + ldr r4, _08167DC8 + ldr r1, [r4] + ldr r5, _08167DCC + adds r2, r1, r5 + ldrb r0, [r2] + cmp r0, #1 + beq _08167DF8 + cmp r0, #1 + bgt _08167DD0 + cmp r0, #0 + beq _08167DDA + b _08167E46 + .align 2, 0 +_08167DC8: .4byte gUnknown_203B978 +_08167DCC: .4byte 0x00008048 +_08167DD0: + cmp r0, #2 + beq _08167E1C + cmp r0, #3 + beq _08167E40 + b _08167E46 +_08167DDA: + ldr r2, _08167DF0 + adds r0, r1, r2 + ldr r2, _08167DF4 + adds r1, r1, r2 + bl sub_081D27D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08167E46 + b _08167E2C + .align 2, 0 +_08167DF0: .4byte 0x00007C58 +_08167DF4: .4byte 0x00007B0E +_08167DF8: + ldr r2, _08167E14 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_081679A4 + ldr r1, [r4] + ldr r0, _08167E18 + adds r1, r1, r0 + b _08167E30 + .align 2, 0 +_08167E14: .4byte 0x00007FB3 +_08167E18: .4byte 0x00008048 +_08167E1C: + ldr r2, _08167E38 + adds r0, r1, r2 + ldrb r0, [r0] + ldr r2, _08167E3C + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_08167340 +_08167E2C: + ldr r1, [r4] + adds r1, r1, r5 +_08167E30: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08167E46 + .align 2, 0 +_08167E38: .4byte 0x00007B4C +_08167E3C: .4byte 0x00007FB6 +_08167E40: + movs r0, #0 + strb r0, [r2] + b _08167E48 +_08167E46: + movs r0, #1 +_08167E48: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08167DAC + + thumb_func_start sub_08167E50 +sub_08167E50: @ 0x08167E50 + push {r4, r5, r6, lr} + ldr r4, _08167E6C + ldr r1, [r4] + ldr r5, _08167E70 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #1 + beq _08167EB0 + cmp r0, #1 + bgt _08167E74 + cmp r0, #0 + beq _08167E7E + b _08167F68 + .align 2, 0 +_08167E6C: .4byte gUnknown_203B978 +_08167E70: .4byte 0x00008048 +_08167E74: + cmp r0, #2 + beq _08167ED4 + cmp r0, #3 + beq _08167F14 + b _08167F68 +_08167E7E: + ldr r2, _08167EA4 + adds r0, r1, r2 + bl sub_081D16BC + ldr r0, [r4] + ldr r6, _08167EA8 + adds r0, r0, r6 + bl sub_081D2780 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08167F68 + ldr r0, [r4] + ldr r1, _08167EAC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0816740C + b _08167EF8 + .align 2, 0 +_08167EA4: .4byte 0x00007C58 +_08167EA8: .4byte 0x00007B0E +_08167EAC: .4byte 0x00007FB3 +_08167EB0: + ldr r2, _08167ECC + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + bl sub_081679A4 + ldr r1, [r4] + ldr r6, _08167ED0 + adds r1, r1, r6 + b _08167EFC + .align 2, 0 +_08167ECC: .4byte 0x00007FB3 +_08167ED0: .4byte 0x00008048 +_08167ED4: + ldr r2, _08167F04 + adds r0, r1, r2 + ldr r6, _08167F08 + adds r1, r1, r6 + bl sub_081D27A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08167F68 + ldr r1, [r4] + ldr r2, _08167F0C + adds r0, r1, r2 + ldrb r0, [r0] + ldr r6, _08167F10 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_08167340 +_08167EF8: + ldr r1, [r4] + adds r1, r1, r5 +_08167EFC: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08167F68 + .align 2, 0 +_08167F04: .4byte 0x00007C58 +_08167F08: .4byte 0x00007B0E +_08167F0C: .4byte 0x00007B4C +_08167F10: .4byte 0x00007FB6 +_08167F14: + ldr r2, _08167F5C + adds r0, r1, r2 + bl sub_081D2A94 + ldr r3, [r4] + ldr r6, _08167F60 + adds r0, r3, r6 + ldrb r1, [r0] + ldr r2, _08167F64 + adds r0, r3, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _08167F4E + subs r6, #0x8e + adds r0, r3, r6 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r2, #0x90 + adds r0, r3, r2 + adds r0, r0, r1 + ldrb r2, [r0] + ldr r6, _08167F5C + adds r0, r3, r6 + subs r6, #0xc + adds r1, r3, r6 + ldrb r1, [r1] + bl sub_081D2AB0 +_08167F4E: + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] + movs r0, #0 + b _08167F6A + .align 2, 0 +_08167F5C: .4byte 0x00007B1C +_08167F60: .4byte 0x00008041 +_08167F64: .4byte 0x00008040 +_08167F68: + movs r0, #1 +_08167F6A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08167E50 + + thumb_func_start sub_08167F70 +sub_08167F70: @ 0x08167F70 + ldr r1, _08167F80 + ldr r1, [r1] + ldr r2, _08167F84 + adds r1, r1, r2 + ldrh r1, [r1] + adds r1, #0x26 + strh r1, [r0, #0x20] + bx lr + .align 2, 0 +_08167F80: .4byte gUnknown_203B978 +_08167F84: .4byte 0x00007B0E + thumb_func_end sub_08167F70 + + thumb_func_start sub_08167F88 +sub_08167F88: @ 0x08167F88 + push {lr} + adds r2, r0, #0 + movs r0, #0x2e + ldrsh r1, [r2, r0] + ldr r0, _08167FA8 + ldr r0, [r0] + ldr r3, _08167FAC + adds r0, r0, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _08167FB0 + adds r0, r2, #0 + movs r1, #0 + bl sub_08007EC0 + b _08167FB8 + .align 2, 0 +_08167FA8: .4byte gUnknown_203B978 +_08167FAC: .4byte 0x00008041 +_08167FB0: + adds r0, r2, #0 + movs r1, #1 + bl sub_08007EC0 +_08167FB8: + pop {r0} + bx r0 + thumb_func_end sub_08167F88 + + thumb_func_start sub_08167FBC +sub_08167FBC: @ 0x08167FBC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08167FDC + ldr r0, [r0] + ldr r2, _08167FE0 + adds r1, r0, r2 + ldrb r1, [r1] + subs r2, #1 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _08167FE4 + movs r0, #0x65 + b _08167FE6 + .align 2, 0 +_08167FDC: .4byte gUnknown_203B978 +_08167FE0: .4byte 0x00008041 +_08167FE4: + movs r0, #0x66 +_08167FE6: + bl sub_0800851C + lsls r0, r0, #4 + ldrb r2, [r4, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #5] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08167FBC + + thumb_func_start sub_08167FFC +sub_08167FFC: @ 0x08167FFC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _08168038 + adds r0, r0, r1 + movs r1, #0x30 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0816803C + ldr r0, [r0] + ldr r3, _08168040 + adds r1, r0, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r3, #3 + adds r0, r0, r3 + adds r4, r0, r1 + cmp r2, #0xff + beq _08168044 + adds r0, r2, #0 + movs r1, #0x1d + bl __udivsi3 + b _08168046 + .align 2, 0 +_08168038: .4byte gUnknown_2024190 +_0816803C: .4byte gUnknown_203B978 +_08168040: .4byte 0x00007FB3 +_08168044: + movs r0, #9 +_08168046: + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08167FFC + + thumb_func_start sub_08168050 +sub_08168050: @ 0x08168050 + push {lr} + sub sp, #0x10 + ldr r0, _0816808C + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _08168090 + str r0, [sp] + ldr r1, _08168094 + ldr r0, [sp, #4] + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _08168098 + ands r0, r1 + adds r1, #1 + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08034388 + add r0, sp, #8 + bl sub_0800845C + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_0816808C: .4byte gUnknown_85C0A9C +_08168090: .4byte gUnknown_85BEBC0 +_08168094: .4byte 0xFFFF0000 +_08168098: .4byte 0x0000FFFF + thumb_func_end sub_08168050 + + thumb_func_start sub_0816809C +sub_0816809C: @ 0x0816809C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _08168120 + ldr r0, [r0] + ldr r1, _08168124 + adds r7, r0, r1 + ldr r0, _08168128 + mov sl, r0 + movs r6, #0 + movs r1, #0x40 + mov sb, r1 + movs r0, #0x60 + rsbs r0, r0, #0 + mov r8, r0 +_081680BE: + mov r5, sb + muls r5, r6, r5 + mov r0, r8 + adds r1, r0, r5 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #0x11 + lsls r2, r0, #0x10 + mov r0, sl + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x40 + beq _08168106 + ldr r0, _0816812C + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + adds r4, r4, r0 + movs r1, #8 + strh r1, [r4, #0x2e] + movs r0, #0x20 + orrs r5, r0 + strh r5, [r4, #0x30] + strh r6, [r4, #0x32] + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + lsls r0, r6, #2 + adds r0, r0, r7 + str r4, [r0] +_08168106: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #1 + bls _081680BE + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08168120: .4byte gUnknown_203B978 +_08168124: .4byte 0x00007B44 +_08168128: .4byte gUnknown_85C0A84 +_0816812C: .4byte gUnknown_20205AC + thumb_func_end sub_0816809C + + thumb_func_start sub_08168130 +sub_08168130: @ 0x08168130 + push {r4, r5, lr} + ldr r4, _08168148 + ldr r0, [r4] + ldr r5, _0816814C + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #0 + beq _08168150 + cmp r0, #1 + beq _08168168 + b _08168174 + .align 2, 0 +_08168148: .4byte gUnknown_203B978 +_0816814C: .4byte 0x00008048 +_08168150: + bl sub_08168050 + ldr r1, [r4] + ldr r0, _08168164 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #1 + b _08168176 + .align 2, 0 +_08168164: .4byte 0x00008048 +_08168168: + bl sub_0816809C + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0 + strb r1, [r0] +_08168174: + movs r0, #0 +_08168176: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08168130 + + thumb_func_start sub_0816817C +sub_0816817C: @ 0x0816817C + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x20] + ldrh r1, [r2, #0x2e] + adds r3, r0, r1 + strh r3, [r2, #0x20] + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + movs r0, #0x30 + ldrsh r1, [r2, r0] + cmp r4, r1 + bgt _081681A0 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + bge _081681A8 + cmp r4, r1 + blt _081681B0 +_081681A0: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, r1 + bgt _081681B0 +_081681A8: + ldrh r0, [r2, #0x30] + strh r0, [r2, #0x20] + ldr r0, _081681B8 + str r0, [r2, #0x1c] +_081681B0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081681B8: .4byte sub_08007140 + thumb_func_end sub_0816817C + + thumb_func_start sub_081681BC +sub_081681BC: @ 0x081681BC + bx lr + .align 2, 0 + thumb_func_end sub_081681BC + + thumb_func_start sub_081681C0 +sub_081681C0: @ 0x081681C0 + ldr r1, _081681EC + ldr r0, _081681F0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081681F4 + str r1, [r0] + ldr r2, _081681F8 + 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 +_081681EC: .4byte gUnknown_3005AC0 +_081681F0: .4byte gUnknown_2023D08 +_081681F4: .4byte sub_081681FC +_081681F8: .4byte gUnknown_2024140 + thumb_func_end sub_081681C0 + + thumb_func_start sub_081681FC +sub_081681FC: @ 0x081681FC + push {lr} + ldr r2, _08168230 + ldr r1, _08168234 + ldr r0, _08168238 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08168248 + ldr r0, _0816823C + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _08168244 + ldr r0, _08168240 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08168248 + .align 2, 0 +_08168230: .4byte gUnknown_2023D0C +_08168234: .4byte gUnknown_82FACB4 +_08168238: .4byte gUnknown_2023D08 +_0816823C: .4byte gUnknown_2022D08 +_08168240: .4byte gUnknown_85C0AA4 +_08168244: + bl sub_08168900 +_08168248: + pop {r0} + bx r0 + thumb_func_end sub_081681FC + + thumb_func_start sub_0816824C +sub_0816824C: @ 0x0816824C + push {r4, r5, lr} + ldr r1, _08168268 + ldr r0, [r1] + adds r0, #0x94 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #5 + bls _0816825E + b _0816836C +_0816825E: + lsls r0, r0, #2 + ldr r1, _0816826C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08168268: .4byte gUnknown_2024140 +_0816826C: .4byte _08168270 +_08168270: @ jump table + .4byte _08168288 @ case 0 + .4byte _0816829A @ case 1 + .4byte _081682B8 @ case 2 + .4byte _081682D6 @ case 3 + .4byte _08168310 @ case 4 + .4byte _08168348 @ case 5 +_08168288: + ldr r0, [r4] + adds r0, #0x96 + movs r1, #0x40 + strb r1, [r0] + ldr r1, [r4] + adds r1, #0x94 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0816829A: + ldr r1, [r4] + adds r1, #0x96 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0816836C + movs r0, #5 + bl sub_080A306C + movs r0, #1 + movs r1, #0 + b _081682EC +_081682B8: + ldr r1, [r4] + adds r1, #0x96 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0816836C + movs r0, #5 + bl sub_080A306C + movs r0, #1 + movs r1, #0 + b _081682EC +_081682D6: + ldr r1, [r4] + adds r1, #0x96 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0816836C + movs r0, #1 + movs r1, #9 +_081682EC: + movs r2, #0 + bl sub_08033FB0 + bl sub_08168900 + ldr r1, [r4] + adds r1, #0x94 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x95 + strb r5, [r0] + ldr r0, [r4] + adds r0, #0x96 + movs r1, #0x40 + strb r1, [r0] + b _0816836C +_08168310: + ldr r1, [r4] + adds r1, #0x96 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816836C + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_08059910 + movs r0, #1 + movs r1, #0 + bl sub_080598C8 + ldr r0, [r4] + adds r0, #0x96 + movs r1, #0x40 + strb r1, [r0] + ldr r1, [r4] + adds r1, #0x94 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0816836C +_08168348: + ldr r1, [r4] + adds r1, #0x96 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816836C + movs r0, #5 + bl sub_080A306C + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_08033FB0 + bl sub_08168900 +_0816836C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816824C + + thumb_func_start sub_08168374 +sub_08168374: @ 0x08168374 + push {lr} + ldr r2, _0816839C + ldr r1, _081683A0 + ldr r0, _081683A4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081683A8 + cmp r1, r0 + bne _08168398 + bl sub_08168900 +_08168398: + pop {r0} + bx r0 + .align 2, 0 +_0816839C: .4byte gUnknown_20205AC +_081683A0: .4byte gUnknown_2023E88 +_081683A4: .4byte gUnknown_2023D08 +_081683A8: .4byte sub_08007140 + thumb_func_end sub_08168374 + + thumb_func_start sub_081683AC +sub_081683AC: @ 0x081683AC + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081683BE + bl sub_08168900 +_081683BE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081683AC + + thumb_func_start sub_081683C4 +sub_081683C4: @ 0x081683C4 + push {lr} + ldr r0, _081683D8 + ldrb r0, [r0] + cmp r0, #0 + bne _081683D2 + bl sub_08168900 +_081683D2: + pop {r0} + bx r0 + .align 2, 0 +_081683D8: .4byte gUnknown_202415D + thumb_func_end sub_081683C4 + + thumb_func_start sub_081683DC +sub_081683DC: @ 0x081683DC + push {lr} + ldr r0, _08168408 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08168404 + ldr r1, _0816840C + ldr r0, _08168410 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08168414 + str r1, [r0] + bl sub_080A8BBC + bl sub_080034D4 + bl sub_081ADB7C +_08168404: + pop {r0} + bx r0 + .align 2, 0 +_08168408: .4byte gUnknown_2037C74 +_0816840C: .4byte gUnknown_3005AC0 +_08168410: .4byte gUnknown_2023D08 +_08168414: .4byte sub_08168418 + thumb_func_end sub_081683DC + + thumb_func_start sub_08168418 +sub_08168418: @ 0x08168418 + push {lr} + ldr r0, _08168444 + ldr r1, [r0, #4] + ldr r0, _08168448 + cmp r1, r0 + bne _0816843E + ldr r0, _0816844C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816843E + ldr r0, _08168450 + ldrh r1, [r0] + movs r0, #1 + bl sub_08034014 + bl sub_08168900 +_0816843E: + pop {r0} + bx r0 + .align 2, 0 +_08168444: .4byte gUnknown_3002360 +_08168448: .4byte sub_080380FC +_0816844C: .4byte gUnknown_2037C74 +_08168450: .4byte gUnknown_203CB48 + thumb_func_end sub_08168418 + + thumb_func_start sub_08168454 +sub_08168454: @ 0x08168454 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _081685F0 + ldr r0, [r4] + ldr r5, _081685F4 + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r7, #0x88 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _0816848C + ldr r0, _081685F8 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081685FC + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0816848C: + ldr r1, [r4] + ldrb r0, [r5] + movs r6, #2 + adds r2, r6, #0 + eors r2, r0 + ldr r1, [r1, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _081684BE + ldr r0, _081685F8 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081685FC + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_081684BE: + ldr r0, [r4] + ldrb r2, [r5] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + movs r4, #8 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _081684DA + b _081685E4 +_081684DA: + adds r1, r2, #0 + eors r1, r6 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _081685E4 + ldr r0, _08168600 + mov r8, r0 + ldr r7, _08168604 + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r4, r8 + adds r4, #0x1c + adds r0, r0, r4 + ldr r3, [r0] + ldr r0, _08168608 + cmp r3, r0 + bne _081685E4 + ldr r0, _0816860C + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, r3 + bne _081685E4 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08168582 + ldr r0, _08168610 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08168582 + ldrb r0, [r5] + eors r0, r6 + adds r0, r0, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + bl sub_08006E00 + ldr r4, _08168614 + ldrb r0, [r5] + adds r1, r6, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _081685F8 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _081685FC + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r5] + eors r0, r6 + bl sub_08076320 + ldrb r0, [r5] + eors r0, r6 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_08168582: + ldr r1, _08168604 + ldr r4, _081685F4 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08168600 + adds r0, r0, r1 + bl sub_08006E00 + ldr r5, _08168614 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _081685F8 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _081685FC + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + ldr r0, _081685F0 + ldr r0, [r0] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r1, _08168618 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816861C + str r1, [r0] +_081685E4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081685F0: .4byte gUnknown_2024174 +_081685F4: .4byte gUnknown_2023D08 +_081685F8: .4byte gUnknown_2023D12 +_081685FC: .4byte gUnknown_2024190 +_08168600: .4byte gUnknown_20205AC +_08168604: .4byte gUnknown_3005ADC +_08168608: .4byte sub_08007140 +_0816860C: .4byte gUnknown_2023E88 +_08168610: .4byte gUnknown_2022C90 +_08168614: .4byte gUnknown_3005AD0 +_08168618: .4byte gUnknown_3005AC0 +_0816861C: .4byte sub_08168620 + thumb_func_end sub_08168454 + + thumb_func_start sub_08168620 +sub_08168620: @ 0x08168620 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r4, #0 + ldr r2, _08168718 + ldr r0, _0816871C + ldr r1, _08168720 + mov r8, r1 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08168724 + cmp r1, r0 + bne _0816864A + movs r4, #1 +_0816864A: + cmp r4, #0 + beq _0816870C + ldr r7, _08168728 + ldr r0, [r7] + ldr r4, [r0, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r2, r0, r4 + ldrb r1, [r2, #1] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0816870C + movs r6, #2 + adds r1, r6, #0 + eors r1, r3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0816870C + 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, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r2, [r7] + mov r1, r8 + ldrb r0, [r1] + adds r1, r6, #0 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, 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, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0816872C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r0, _08168730 + movs r1, #0xa + bl sub_080A8878 + ldr r2, _08168734 + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _08168738 + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_08168900 +_0816870C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08168718: .4byte gUnknown_20205AC +_0816871C: .4byte gUnknown_3005AD0 +_08168720: .4byte gUnknown_2023D08 +_08168724: .4byte sub_08007140 +_08168728: .4byte gUnknown_2024174 +_0816872C: .4byte 0x000027F9 +_08168730: .4byte sub_08058D10 +_08168734: .4byte gUnknown_2023D12 +_08168738: .4byte gUnknown_2024190 + thumb_func_end sub_08168620 + + thumb_func_start sub_0816873C +sub_0816873C: @ 0x0816873C + push {r4, r5, r6, lr} + ldr r5, _0816877C + ldrb r0, [r5] + ldr r6, _08168780 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08168784 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _0816879E + .align 2, 0 +_0816877C: .4byte gUnknown_2023D08 +_08168780: .4byte gUnknown_3005AD0 +_08168784: + ldr r2, _081687A4 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081687A8 + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_08168900 +_0816879E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081687A4: .4byte gUnknown_2023D12 +_081687A8: .4byte gUnknown_2024190 + thumb_func_end sub_0816873C + + thumb_func_start sub_081687AC +sub_081687AC: @ 0x081687AC + push {r4, lr} + ldr r1, _081687E8 + ldr r0, _081687EC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _081687F0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _081687F8 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _081687F4 + strb r3, [r0] + bl sub_08168900 + b _08168822 + .align 2, 0 +_081687E8: .4byte gUnknown_2023E88 +_081687EC: .4byte gUnknown_2023D08 +_081687F0: .4byte gUnknown_20205AC +_081687F4: .4byte gUnknown_202415D +_081687F8: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0816881C + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0816881C: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_08168822: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081687AC + + thumb_func_start sub_08168828 +sub_08168828: @ 0x08168828 + push {r4, r5, r6, lr} + ldr r0, _08168884 + ldr r0, [r0] + ldr r6, _08168888 + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0816887C + ldr r5, _0816888C + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08168890 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _08168894 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08168900 +_0816887C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08168884: .4byte gUnknown_2024174 +_08168888: .4byte gUnknown_2023D08 +_0816888C: .4byte gUnknown_2023E88 +_08168890: .4byte gUnknown_20205AC +_08168894: .4byte gUnknown_3005AD0 + thumb_func_end sub_08168828 + + thumb_func_start sub_08168898 +sub_08168898: @ 0x08168898 + push {lr} + ldr r2, _081688C0 + ldr r1, _081688C4 + ldr r0, _081688C8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081688CC + cmp r1, r0 + bne _081688BC + bl sub_08168900 +_081688BC: + pop {r0} + bx r0 + .align 2, 0 +_081688C0: .4byte gUnknown_20205AC +_081688C4: .4byte gUnknown_2023E88 +_081688C8: .4byte gUnknown_2023D08 +_081688CC: .4byte sub_08007140 + thumb_func_end sub_08168898 + + thumb_func_start sub_081688D0 +sub_081688D0: @ 0x081688D0 + push {lr} + ldr r0, _081688F8 + ldr r2, [r0] + ldr r0, _081688FC + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081688F2 + bl sub_08168900 +_081688F2: + pop {r0} + bx r0 + .align 2, 0 +_081688F8: .4byte gUnknown_2024174 +_081688FC: .4byte gUnknown_2023D08 + thumb_func_end sub_081688D0 + + thumb_func_start sub_08168900 +sub_08168900: @ 0x08168900 + push {r4, lr} + sub sp, #4 + ldr r1, _08168940 + ldr r4, _08168944 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08168948 + str r1, [r0] + ldr r0, _0816894C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08168954 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _08168950 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _08168966 + .align 2, 0 +_08168940: .4byte gUnknown_3005AC0 +_08168944: .4byte gUnknown_2023D08 +_08168948: .4byte sub_081681FC +_0816894C: .4byte gUnknown_2022C90 +_08168950: .4byte gUnknown_2022D08 +_08168954: + ldr r2, _08168970 + ldr r1, _08168974 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_08168966: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08168970: .4byte gUnknown_2023D0C +_08168974: .4byte gUnknown_82FACB4 + thumb_func_end sub_08168900 + + thumb_func_start sub_08168978 +sub_08168978: @ 0x08168978 + push {lr} + ldr r0, _081689A0 + ldr r2, [r0] + ldr r0, _081689A4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0816899A + bl sub_08168900 +_0816899A: + pop {r0} + bx r0 + .align 2, 0 +_081689A0: .4byte gUnknown_2024174 +_081689A4: .4byte gUnknown_2023D08 + thumb_func_end sub_08168978 + + thumb_func_start sub_081689A8 +sub_081689A8: @ 0x081689A8 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _081689D4 + ldr r0, _081689D8 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _081689E0 + ldr r0, _081689DC + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_08168A1C + adds r6, r0, #0 + b _08168A02 + .align 2, 0 +_081689D4: .4byte gUnknown_2022D08 +_081689D8: .4byte gUnknown_2023D08 +_081689DC: .4byte gUnknown_2023D12 +_081689E0: + ldrb r4, [r1] + movs r5, #0 +_081689E4: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081689FA + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_08168A1C + adds r6, r6, r0 +_081689FA: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _081689E4 +_08168A02: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_08168900 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081689A8 + + thumb_func_start sub_08168A1C +sub_08168A1C: @ 0x08168A1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _08168A50 + ldr r3, _08168A54 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _08168A46 + bl _081691B2 +_08168A46: + lsls r0, r0, #2 + ldr r1, _08168A58 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08168A50: .4byte gUnknown_2022D08 +_08168A54: .4byte gUnknown_2023D08 +_08168A58: .4byte _08168A5C +_08168A5C: @ jump table + .4byte _08168B4C @ case 0 + .4byte _08168D70 @ case 1 + .4byte _08168D80 @ case 2 + .4byte _08168D90 @ case 3 + .4byte _08168DF8 @ case 4 + .4byte _08168DF8 @ case 5 + .4byte _08168DF8 @ case 6 + .4byte _08168DF8 @ case 7 + .4byte _08168E14 @ case 8 + .4byte _08168E50 @ case 9 + .4byte _08168E50 @ case 10 + .4byte _08168E50 @ case 11 + .4byte _08168E50 @ case 12 + .4byte _081691B2 @ case 13 + .4byte _081691B2 @ case 14 + .4byte _081691B2 @ case 15 + .4byte _081691B2 @ case 16 + .4byte _08168E6C @ case 17 + .4byte _08168E7C @ case 18 + .4byte _08168EAC @ case 19 + .4byte _08168EBC @ case 20 + .4byte _08168ECC @ case 21 + .4byte _08168EDC @ case 22 + .4byte _08168EEC @ case 23 + .4byte _08168EFC @ case 24 + .4byte _08168F0C @ case 25 + .4byte _08168F1C @ case 26 + .4byte _08168F2C @ case 27 + .4byte _08168F3C @ case 28 + .4byte _08168F4C @ case 29 + .4byte _08168F5C @ case 30 + .4byte _08168F6C @ case 31 + .4byte _08168FBC @ case 32 + .4byte _08168FCC @ case 33 + .4byte _08168FDC @ case 34 + .4byte _08168FEC @ case 35 + .4byte _08168FFC @ case 36 + .4byte _0816900C @ case 37 + .4byte _0816901C @ case 38 + .4byte _0816902C @ case 39 + .4byte _0816903C @ case 40 + .4byte _08169070 @ case 41 + .4byte _08169080 @ case 42 + .4byte _08169090 @ case 43 + .4byte _081690A0 @ case 44 + .4byte _081690B0 @ case 45 + .4byte _081690C0 @ case 46 + .4byte _081690D0 @ case 47 + .4byte _081690E0 @ case 48 + .4byte _08169100 @ case 49 + .4byte _08169110 @ case 50 + .4byte _08169120 @ case 51 + .4byte _08169130 @ case 52 + .4byte _08169140 @ case 53 + .4byte _08169150 @ case 54 + .4byte _08169160 @ case 55 + .4byte _08169170 @ case 56 + .4byte _08169180 @ case 57 + .4byte _08169190 @ case 58 + .4byte _081691A0 @ case 59 +_08168B4C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08168D60 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_08168B98: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08168B98 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08168D60 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _08168D64 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _08168D68 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _08168D6C + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_08168D50: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _08168D50 + b _081691B2 + .align 2, 0 +_08168D60: .4byte gUnknown_2024190 +_08168D64: .4byte 0xFFFFFC1F +_08168D68: .4byte 0xFFF07FFF +_08168D6C: .4byte 0xFFFFFE0F +_08168D70: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168D7C + adds r0, r0, r1 + movs r1, #0xb + b _081690EA + .align 2, 0 +_08168D7C: .4byte gUnknown_2024190 +_08168D80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168D8C + adds r0, r0, r1 + movs r1, #0xc + b _081690EA + .align 2, 0 +_08168D8C: .4byte gUnknown_2024190 +_08168D90: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08168DF4 + adds r4, r1, r0 + mov r8, sb +_08168DA6: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _08168DA6 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168DF4 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_08168DE4: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _08168DE4 + b _081691B2 + .align 2, 0 +_08168DF4: .4byte gUnknown_2024190 +_08168DF8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168E10 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _081690EA + .align 2, 0 +_08168E10: .4byte gUnknown_2024190 +_08168E14: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _08168E4C + mov r8, r2 +_08168E20: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _08168E20 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168E4C + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _081691B2 + .align 2, 0 +_08168E4C: .4byte gUnknown_2024190 +_08168E50: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168E68 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _081691AA + .align 2, 0 +_08168E68: .4byte gUnknown_2024190 +_08168E6C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168E78 + adds r0, r0, r1 + movs r1, #1 + b _08168E86 + .align 2, 0 +_08168E78: .4byte gUnknown_2024190 +_08168E7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168EA8 + adds r0, r0, r1 + movs r1, #0x19 +_08168E86: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _081691B2 + .align 2, 0 +_08168EA8: .4byte gUnknown_2024190 +_08168EAC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168EB8 + adds r0, r0, r1 + movs r1, #0x1a + b _081691AA + .align 2, 0 +_08168EB8: .4byte gUnknown_2024190 +_08168EBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168EC8 + adds r0, r0, r1 + movs r1, #0x1b + b _081691AA + .align 2, 0 +_08168EC8: .4byte gUnknown_2024190 +_08168ECC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168ED8 + adds r0, r0, r1 + movs r1, #0x1c + b _081691AA + .align 2, 0 +_08168ED8: .4byte gUnknown_2024190 +_08168EDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168EE8 + adds r0, r0, r1 + movs r1, #0x1d + b _081691AA + .align 2, 0 +_08168EE8: .4byte gUnknown_2024190 +_08168EEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168EF8 + adds r0, r0, r1 + movs r1, #0x1e + b _081691AA + .align 2, 0 +_08168EF8: .4byte gUnknown_2024190 +_08168EFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F08 + adds r0, r0, r1 + movs r1, #0x1f + b _081691AA + .align 2, 0 +_08168F08: .4byte gUnknown_2024190 +_08168F0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F18 + adds r0, r0, r1 + movs r1, #0x20 + b _081691AA + .align 2, 0 +_08168F18: .4byte gUnknown_2024190 +_08168F1C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F28 + adds r0, r0, r1 + movs r1, #0x22 + b _081691AA + .align 2, 0 +_08168F28: .4byte gUnknown_2024190 +_08168F2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F38 + adds r0, r0, r1 + movs r1, #0x23 + b _081691AA + .align 2, 0 +_08168F38: .4byte gUnknown_2024190 +_08168F3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F48 + adds r0, r0, r1 + movs r1, #0x24 + b _081691AA + .align 2, 0 +_08168F48: .4byte gUnknown_2024190 +_08168F4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F58 + adds r0, r0, r1 + movs r1, #0x25 + b _081691AA + .align 2, 0 +_08168F58: .4byte gUnknown_2024190 +_08168F5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168F68 + adds r0, r0, r1 + movs r1, #0x26 + b _081691AA + .align 2, 0 +_08168F68: .4byte gUnknown_2024190 +_08168F6C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08168FB8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _081691B2 + .align 2, 0 +_08168FB8: .4byte gUnknown_2024190 +_08168FBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168FC8 + adds r0, r0, r1 + movs r1, #0x27 + b _081691AA + .align 2, 0 +_08168FC8: .4byte gUnknown_2024190 +_08168FCC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168FD8 + adds r0, r0, r1 + movs r1, #0x28 + b _081691AA + .align 2, 0 +_08168FD8: .4byte gUnknown_2024190 +_08168FDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168FE8 + adds r0, r0, r1 + movs r1, #0x29 + b _081691AA + .align 2, 0 +_08168FE8: .4byte gUnknown_2024190 +_08168FEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08168FF8 + adds r0, r0, r1 + movs r1, #0x2a + b _081691AA + .align 2, 0 +_08168FF8: .4byte gUnknown_2024190 +_08168FFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169008 + adds r0, r0, r1 + movs r1, #0x2b + b _081691AA + .align 2, 0 +_08169008: .4byte gUnknown_2024190 +_0816900C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169018 + adds r0, r0, r1 + movs r1, #0x2c + b _081691AA + .align 2, 0 +_08169018: .4byte gUnknown_2024190 +_0816901C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169028 + adds r0, r0, r1 + movs r1, #0 + b _08169046 + .align 2, 0 +_08169028: .4byte gUnknown_2024190 +_0816902C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169038 + adds r0, r0, r1 + movs r1, #9 + b _081690EA + .align 2, 0 +_08169038: .4byte gUnknown_2024190 +_0816903C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816906C + adds r0, r0, r1 + movs r1, #0x37 +_08169046: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _081691B2 + .align 2, 0 +_0816906C: .4byte gUnknown_2024190 +_08169070: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816907C + adds r0, r0, r1 + movs r1, #0x38 + b _081691AA + .align 2, 0 +_0816907C: .4byte gUnknown_2024190 +_08169080: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816908C + adds r0, r0, r1 + movs r1, #0x39 + b _081690EA + .align 2, 0 +_0816908C: .4byte gUnknown_2024190 +_08169090: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816909C + adds r0, r0, r1 + movs r1, #0x3a + b _081690EA + .align 2, 0 +_0816909C: .4byte gUnknown_2024190 +_081690A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081690AC + adds r0, r0, r1 + movs r1, #0x3b + b _081690EA + .align 2, 0 +_081690AC: .4byte gUnknown_2024190 +_081690B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081690BC + adds r0, r0, r1 + movs r1, #0x3c + b _081690EA + .align 2, 0 +_081690BC: .4byte gUnknown_2024190 +_081690C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081690CC + adds r0, r0, r1 + movs r1, #0x3d + b _081690EA + .align 2, 0 +_081690CC: .4byte gUnknown_2024190 +_081690D0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081690DC + adds r0, r0, r1 + movs r1, #0x3e + b _081690EA + .align 2, 0 +_081690DC: .4byte gUnknown_2024190 +_081690E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081690FC + adds r0, r0, r1 + movs r1, #0x3f +_081690EA: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _081691B2 + .align 2, 0 +_081690FC: .4byte gUnknown_2024190 +_08169100: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816910C + adds r0, r0, r1 + movs r1, #0x16 + b _081691AA + .align 2, 0 +_0816910C: .4byte gUnknown_2024190 +_08169110: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816911C + adds r0, r0, r1 + movs r1, #0x17 + b _081691AA + .align 2, 0 +_0816911C: .4byte gUnknown_2024190 +_08169120: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816912C + adds r0, r0, r1 + movs r1, #0x18 + b _081691AA + .align 2, 0 +_0816912C: .4byte gUnknown_2024190 +_08169130: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816913C + adds r0, r0, r1 + movs r1, #0x21 + b _081691AA + .align 2, 0 +_0816913C: .4byte gUnknown_2024190 +_08169140: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816914C + adds r0, r0, r1 + movs r1, #0x2f + b _081691AA + .align 2, 0 +_0816914C: .4byte gUnknown_2024190 +_08169150: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816915C + adds r0, r0, r1 + movs r1, #0x30 + b _081691AA + .align 2, 0 +_0816915C: .4byte gUnknown_2024190 +_08169160: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816916C + adds r0, r0, r1 + movs r1, #0x32 + b _081691AA + .align 2, 0 +_0816916C: .4byte gUnknown_2024190 +_08169170: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816917C + adds r0, r0, r1 + movs r1, #0x33 + b _081691AA + .align 2, 0 +_0816917C: .4byte gUnknown_2024190 +_08169180: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816918C + adds r0, r0, r1 + movs r1, #0x34 + b _081691AA + .align 2, 0 +_0816918C: .4byte gUnknown_2024190 +_08169190: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816919C + adds r0, r0, r1 + movs r1, #0x35 + b _081691AA + .align 2, 0 +_0816919C: .4byte gUnknown_2024190 +_081691A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081691C4 + adds r0, r0, r1 + movs r1, #0x36 +_081691AA: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_081691B2: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081691C4: .4byte gUnknown_2024190 + thumb_func_end sub_08168A1C + + thumb_func_start sub_081691C8 +sub_081691C8: @ 0x081691C8 + push {lr} + bl sub_0805A230 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081691C8 + + thumb_func_start sub_081691D4 +sub_081691D4: @ 0x081691D4 + push {r4, r5, lr} + ldr r1, _081691F8 + ldr r0, _081691FC + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08169204 + ldr r0, _08169200 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0816922C + b _08169222 + .align 2, 0 +_081691F8: .4byte gUnknown_2022D08 +_081691FC: .4byte gUnknown_2023D08 +_08169200: .4byte gUnknown_2023D12 +_08169204: + ldrb r4, [r1] + movs r5, #0 +_08169208: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08169216 + adds r0, r5, #0 + bl sub_0816922C +_08169216: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _08169208 +_08169222: + bl sub_08168900 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081691D4 + + thumb_func_start sub_0816922C +sub_0816922C: @ 0x0816922C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08169264 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r2, _08169268 + adds r3, r0, r2 + adds r6, r3, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r2, #0 + cmp r0, #0x3b + bls _08169258 + bl _08169BF2 +_08169258: + lsls r0, r0, #2 + ldr r1, _0816926C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08169264: .4byte gUnknown_2023D08 +_08169268: .4byte gUnknown_2022D0B +_0816926C: .4byte _08169270 +_08169270: @ jump table + .4byte _08169360 @ case 0 + .4byte _081694F8 @ case 1 + .4byte _08169518 @ case 2 + .4byte _08169538 @ case 3 + .4byte _08169590 @ case 4 + .4byte _08169590 @ case 5 + .4byte _08169590 @ case 6 + .4byte _08169590 @ case 7 + .4byte _081695B8 @ case 8 + .4byte _0816961C @ case 9 + .4byte _0816961C @ case 10 + .4byte _0816961C @ case 11 + .4byte _0816961C @ case 12 + .4byte _08169BF2 @ case 13 + .4byte _08169BF2 @ case 14 + .4byte _08169BF2 @ case 15 + .4byte _08169BF2 @ case 16 + .4byte _0816964C @ case 17 + .4byte _0816966C @ case 18 + .4byte _0816968C @ case 19 + .4byte _081696AC @ case 20 + .4byte _081696CC @ case 21 + .4byte _081696EC @ case 22 + .4byte _0816970C @ case 23 + .4byte _0816972C @ case 24 + .4byte _0816974C @ case 25 + .4byte _0816976C @ case 26 + .4byte _0816978C @ case 27 + .4byte _081697AC @ case 28 + .4byte _081697CC @ case 29 + .4byte _081697EC @ case 30 + .4byte _0816980C @ case 31 + .4byte _0816987C @ case 32 + .4byte _0816989C @ case 33 + .4byte _081698BC @ case 34 + .4byte _081698DC @ case 35 + .4byte _081698FC @ case 36 + .4byte _0816991C @ case 37 + .4byte _0816993C @ case 38 + .4byte _0816995C @ case 39 + .4byte _0816997C @ case 40 + .4byte _0816999C @ case 41 + .4byte _081699BC @ case 42 + .4byte _081699DC @ case 43 + .4byte _081699FC @ case 44 + .4byte _08169A1C @ case 45 + .4byte _08169A3C @ case 46 + .4byte _08169A5C @ case 47 + .4byte _08169A7C @ case 48 + .4byte _08169A9C @ case 49 + .4byte _08169ABC @ case 50 + .4byte _08169ADC @ case 51 + .4byte _08169AFC @ case 52 + .4byte _08169B1C @ case 53 + .4byte _08169B3C @ case 54 + .4byte _08169B5C @ case 55 + .4byte _08169B7C @ case 56 + .4byte _08169B9C @ case 57 + .4byte _08169BBC @ case 58 + .4byte _08169BDC @ case 59 +_08169360: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081694F4 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r6, #0 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r6 + mov sl, r0 + adds r0, r6, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r6, #2 + str r0, [sp, #4] + adds r0, r6, #4 + str r0, [sp, #8] + adds r0, r6, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r7, r6, #0 + adds r7, #0x24 + adds r4, r6, #0 + adds r4, #0xc +_081693C6: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r7, #0 + bl sub_0806A774 + adds r7, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _081693C6 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081694F4 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r6, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081694F4: .4byte gUnknown_2024190 +_081694F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169510 + adds r0, r0, r1 + ldr r1, _08169514 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xb + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169510: .4byte gUnknown_2024190 +_08169514: .4byte gUnknown_2023D08 +_08169518: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169530 + adds r0, r0, r1 + ldr r1, _08169534 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xc + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169530: .4byte gUnknown_2024190 +_08169534: .4byte gUnknown_2023D08 +_08169538: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r3 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0816958C + adds r7, r1, r0 + adds r6, r3, #0 + adds r6, #8 + adds r4, r3, #0 +_08169552: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _08169552 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0816958C + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_0816958C: .4byte gUnknown_2024190 +_08169590: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081695AC + adds r0, r0, r1 + ldr r3, _081695B0 + ldr r1, _081695B4 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _08169634 + .align 2, 0 +_081695AC: .4byte gUnknown_2024190 +_081695B0: .4byte gUnknown_2022D08 +_081695B4: .4byte gUnknown_2023D08 +_081695B8: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08169614 + adds r4, r4, r0 + ldr r5, _08169618 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169614: .4byte gUnknown_2024190 +_08169618: .4byte gUnknown_2023D08 +_0816961C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169640 + adds r0, r0, r1 + ldr r3, _08169644 + ldr r1, _08169648 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_08169634: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169640: .4byte gUnknown_2024190 +_08169644: .4byte gUnknown_2022D08 +_08169648: .4byte gUnknown_2023D08 +_0816964C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169664 + adds r0, r0, r1 + ldr r1, _08169668 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #1 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169664: .4byte gUnknown_2024190 +_08169668: .4byte gUnknown_2023D08 +_0816966C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169684 + adds r0, r0, r1 + ldr r1, _08169688 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x19 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169684: .4byte gUnknown_2024190 +_08169688: .4byte gUnknown_2023D08 +_0816968C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081696A4 + adds r0, r0, r1 + ldr r1, _081696A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1a + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081696A4: .4byte gUnknown_2024190 +_081696A8: .4byte gUnknown_2023D08 +_081696AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081696C4 + adds r0, r0, r1 + ldr r1, _081696C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1b + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081696C4: .4byte gUnknown_2024190 +_081696C8: .4byte gUnknown_2023D08 +_081696CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081696E4 + adds r0, r0, r1 + ldr r1, _081696E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1c + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081696E4: .4byte gUnknown_2024190 +_081696E8: .4byte gUnknown_2023D08 +_081696EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169704 + adds r0, r0, r1 + ldr r1, _08169708 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1d + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169704: .4byte gUnknown_2024190 +_08169708: .4byte gUnknown_2023D08 +_0816970C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169724 + adds r0, r0, r1 + ldr r1, _08169728 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1e + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169724: .4byte gUnknown_2024190 +_08169728: .4byte gUnknown_2023D08 +_0816972C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169744 + adds r0, r0, r1 + ldr r1, _08169748 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1f + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169744: .4byte gUnknown_2024190 +_08169748: .4byte gUnknown_2023D08 +_0816974C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169764 + adds r0, r0, r1 + ldr r1, _08169768 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x20 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169764: .4byte gUnknown_2024190 +_08169768: .4byte gUnknown_2023D08 +_0816976C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169784 + adds r0, r0, r1 + ldr r1, _08169788 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x22 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169784: .4byte gUnknown_2024190 +_08169788: .4byte gUnknown_2023D08 +_0816978C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081697A4 + adds r0, r0, r1 + ldr r1, _081697A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x23 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081697A4: .4byte gUnknown_2024190 +_081697A8: .4byte gUnknown_2023D08 +_081697AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081697C4 + adds r0, r0, r1 + ldr r1, _081697C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x24 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081697C4: .4byte gUnknown_2024190 +_081697C8: .4byte gUnknown_2023D08 +_081697CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081697E4 + adds r0, r0, r1 + ldr r1, _081697E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x25 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081697E4: .4byte gUnknown_2024190 +_081697E8: .4byte gUnknown_2023D08 +_081697EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169804 + adds r0, r0, r1 + ldr r1, _08169808 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x26 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169804: .4byte gUnknown_2024190 +_08169808: .4byte gUnknown_2023D08 +_0816980C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08169874 + adds r4, r4, r0 + ldr r5, _08169878 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _0816992C + .align 2, 0 +_08169874: .4byte gUnknown_2024190 +_08169878: .4byte gUnknown_2023D08 +_0816987C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169894 + adds r0, r0, r1 + ldr r1, _08169898 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x27 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169894: .4byte gUnknown_2024190 +_08169898: .4byte gUnknown_2023D08 +_0816989C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081698B4 + adds r0, r0, r1 + ldr r1, _081698B8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x28 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081698B4: .4byte gUnknown_2024190 +_081698B8: .4byte gUnknown_2023D08 +_081698BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081698D4 + adds r0, r0, r1 + ldr r1, _081698D8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x29 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081698D4: .4byte gUnknown_2024190 +_081698D8: .4byte gUnknown_2023D08 +_081698DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081698F4 + adds r0, r0, r1 + ldr r1, _081698F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2a + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081698F4: .4byte gUnknown_2024190 +_081698F8: .4byte gUnknown_2023D08 +_081698FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169914 + adds r0, r0, r1 + ldr r1, _08169918 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2b + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169914: .4byte gUnknown_2024190 +_08169918: .4byte gUnknown_2023D08 +_0816991C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169934 + adds r0, r0, r1 + ldr r1, _08169938 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 +_0816992C: + movs r1, #0x2c + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169934: .4byte gUnknown_2024190 +_08169938: .4byte gUnknown_2023D08 +_0816993C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169954 + adds r0, r0, r1 + ldr r1, _08169958 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169954: .4byte gUnknown_2024190 +_08169958: .4byte gUnknown_2023D08 +_0816995C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169974 + adds r0, r0, r1 + ldr r1, _08169978 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #9 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169974: .4byte gUnknown_2024190 +_08169978: .4byte gUnknown_2023D08 +_0816997C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169994 + adds r0, r0, r1 + ldr r1, _08169998 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x37 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169994: .4byte gUnknown_2024190 +_08169998: .4byte gUnknown_2023D08 +_0816999C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081699B4 + adds r0, r0, r1 + ldr r1, _081699B8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x38 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081699B4: .4byte gUnknown_2024190 +_081699B8: .4byte gUnknown_2023D08 +_081699BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081699D4 + adds r0, r0, r1 + ldr r1, _081699D8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x39 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081699D4: .4byte gUnknown_2024190 +_081699D8: .4byte gUnknown_2023D08 +_081699DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081699F4 + adds r0, r0, r1 + ldr r1, _081699F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3a + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_081699F4: .4byte gUnknown_2024190 +_081699F8: .4byte gUnknown_2023D08 +_081699FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169A14 + adds r0, r0, r1 + ldr r1, _08169A18 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3b + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169A14: .4byte gUnknown_2024190 +_08169A18: .4byte gUnknown_2023D08 +_08169A1C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169A34 + adds r0, r0, r1 + ldr r1, _08169A38 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3c + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169A34: .4byte gUnknown_2024190 +_08169A38: .4byte gUnknown_2023D08 +_08169A3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169A54 + adds r0, r0, r1 + ldr r1, _08169A58 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3d + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169A54: .4byte gUnknown_2024190 +_08169A58: .4byte gUnknown_2023D08 +_08169A5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169A74 + adds r0, r0, r1 + ldr r1, _08169A78 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3e + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169A74: .4byte gUnknown_2024190 +_08169A78: .4byte gUnknown_2023D08 +_08169A7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169A94 + adds r0, r0, r1 + ldr r1, _08169A98 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3f + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169A94: .4byte gUnknown_2024190 +_08169A98: .4byte gUnknown_2023D08 +_08169A9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169AB4 + adds r0, r0, r1 + ldr r1, _08169AB8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x16 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169AB4: .4byte gUnknown_2024190 +_08169AB8: .4byte gUnknown_2023D08 +_08169ABC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169AD4 + adds r0, r0, r1 + ldr r1, _08169AD8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x17 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169AD4: .4byte gUnknown_2024190 +_08169AD8: .4byte gUnknown_2023D08 +_08169ADC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169AF4 + adds r0, r0, r1 + ldr r1, _08169AF8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x18 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169AF4: .4byte gUnknown_2024190 +_08169AF8: .4byte gUnknown_2023D08 +_08169AFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169B14 + adds r0, r0, r1 + ldr r1, _08169B18 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x21 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169B14: .4byte gUnknown_2024190 +_08169B18: .4byte gUnknown_2023D08 +_08169B1C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169B34 + adds r0, r0, r1 + ldr r1, _08169B38 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2f + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169B34: .4byte gUnknown_2024190 +_08169B38: .4byte gUnknown_2023D08 +_08169B3C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169B54 + adds r0, r0, r1 + ldr r1, _08169B58 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x30 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169B54: .4byte gUnknown_2024190 +_08169B58: .4byte gUnknown_2023D08 +_08169B5C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169B74 + adds r0, r0, r1 + ldr r1, _08169B78 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x32 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169B74: .4byte gUnknown_2024190 +_08169B78: .4byte gUnknown_2023D08 +_08169B7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169B94 + adds r0, r0, r1 + ldr r1, _08169B98 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x33 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169B94: .4byte gUnknown_2024190 +_08169B98: .4byte gUnknown_2023D08 +_08169B9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169BB4 + adds r0, r0, r1 + ldr r1, _08169BB8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x34 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169BB4: .4byte gUnknown_2024190 +_08169BB8: .4byte gUnknown_2023D08 +_08169BBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169BD4 + adds r0, r0, r1 + ldr r1, _08169BD8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x35 + bl sub_0806A774 + b _08169BF2 + .align 2, 0 +_08169BD4: .4byte gUnknown_2024190 +_08169BD8: .4byte gUnknown_2023D08 +_08169BDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08169C1C + adds r0, r0, r1 + ldr r1, _08169C20 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x36 + bl sub_0806A774 +_08169BF2: + ldr r2, _08169C24 + ldr r0, _08169C20 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _08169C1C + adds r0, r0, r2 + bl sub_0805E5AC + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08169C1C: .4byte gUnknown_2024190 +_08169C20: .4byte gUnknown_2023D08 +_08169C24: .4byte gUnknown_2023D12 + thumb_func_end sub_0816922C + + thumb_func_start sub_08169C28 +sub_08169C28: @ 0x08169C28 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169C28 + + thumb_func_start sub_08169C34 +sub_08169C34: @ 0x08169C34 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169C34 + + thumb_func_start sub_08169C40 +sub_08169C40: @ 0x08169C40 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169C40 + + thumb_func_start sub_08169C4C +sub_08169C4C: @ 0x08169C4C + push {r4, r5, r6, lr} + ldr r0, _08169C78 + ldr r6, _08169C7C + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _08169C88 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #1 + bl sub_0805D6E0 + ldr r0, _08169C80 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08169C84 + str r0, [r1] + b _08169CBE + .align 2, 0 +_08169C78: .4byte gUnknown_2022D08 +_08169C7C: .4byte gUnknown_2023D08 +_08169C80: .4byte gUnknown_3005AC0 +_08169C84: .4byte sub_08168828 +_08169C88: + ldr r5, _08169CC4 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08169CC8 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _08169CCC + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08168900 +_08169CBE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08169CC4: .4byte gUnknown_2023E88 +_08169CC8: .4byte gUnknown_20205AC +_08169CCC: .4byte gUnknown_3005AD0 + thumb_func_end sub_08169C4C + + thumb_func_start sub_08169CD0 +sub_08169CD0: @ 0x08169CD0 + push {r4, r5, r6, lr} + ldr r4, _08169D78 + ldrb r1, [r4] + movs r0, #6 + bl sub_0805DBA0 + ldrb r0, [r4] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #6 + bl sub_08069C6C + ldr r0, _08169D7C + ldr r1, _08169D80 + ldrb r1, [r1, #0x18] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0x50 + movs r3, #0x1e + bl sub_08006B0C + ldr r6, _08169D84 + ldrb r1, [r4] + adds r1, r1, r6 + strb r0, [r1] + ldr r5, _08169D88 + ldrb r3, [r4] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08169D8C + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, #0x1c + adds r0, r0, r5 + ldr r1, _08169D90 + str r1, [r0] + ldr r1, _08169D94 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08169D98 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08169D78: .4byte gUnknown_2023D08 +_08169D7C: .4byte gUnknown_2024640 +_08169D80: .4byte gUnknown_82D95BC +_08169D84: .4byte gUnknown_2023E88 +_08169D88: .4byte gUnknown_20205AC +_08169D8C: .4byte 0x0000FFFE +_08169D90: .4byte sub_0805D3C8 +_08169D94: .4byte gUnknown_3005AC0 +_08169D98: .4byte sub_08168374 + thumb_func_end sub_08169CD0 + + thumb_func_start sub_08169D9C +sub_08169D9C: @ 0x08169D9C + push {r4, r5, r6, lr} + ldr r4, _08169E44 + ldrb r1, [r4] + movs r0, #6 + bl sub_0805DBA0 + ldrb r0, [r4] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #6 + bl sub_08069C6C + ldr r0, _08169E48 + ldr r1, _08169E4C + ldrb r1, [r1, #0x18] + movs r2, #8 + subs r2, r2, r1 + lsls r2, r2, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r2, r2, r1 + asrs r2, r2, #0x10 + movs r1, #0x50 + movs r3, #0x1e + bl sub_08006B0C + ldr r6, _08169E50 + ldrb r1, [r4] + adds r1, r1, r6 + strb r0, [r1] + ldr r5, _08169E54 + ldrb r3, [r4] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08169E58 + strh r1, [r0, #0x24] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #2 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, #0x1c + adds r0, r0, r5 + ldr r1, _08169E5C + str r1, [r0] + ldr r1, _08169E60 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08169E64 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08169E44: .4byte gUnknown_2023D08 +_08169E48: .4byte gUnknown_2024640 +_08169E4C: .4byte gUnknown_82D95BC +_08169E50: .4byte gUnknown_2023E88 +_08169E54: .4byte gUnknown_20205AC +_08169E58: .4byte 0x0000FFA0 +_08169E5C: .4byte sub_0805D3C8 +_08169E60: .4byte gUnknown_3005AC0 +_08169E64: .4byte sub_08168898 + thumb_func_end sub_08169D9C + + thumb_func_start sub_08169E68 +sub_08169E68: @ 0x08169E68 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169E68 + + thumb_func_start sub_08169E74 +sub_08169E74: @ 0x08169E74 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169E74 + + thumb_func_start sub_08169E80 +sub_08169E80: @ 0x08169E80 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169E80 + + thumb_func_start sub_08169E8C +sub_08169E8C: @ 0x08169E8C + push {r4, r5, lr} + ldr r0, _08169ECC + ldr r0, [r0] + ldr r1, [r0, #8] + movs r0, #4 + strb r0, [r1, #8] + ldr r1, _08169ED0 + movs r0, #1 + strb r0, [r1] + ldr r5, _08169ED4 + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #4 + bl sub_0805D6E0 + ldr r1, _08169ED8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08169EDC + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08169ECC: .4byte gUnknown_2024174 +_08169ED0: .4byte gUnknown_202415D +_08169ED4: .4byte gUnknown_2023D08 +_08169ED8: .4byte gUnknown_3005AC0 +_08169EDC: .4byte sub_081683C4 + thumb_func_end sub_08169E8C + + thumb_func_start sub_08169EE0 +sub_08169EE0: @ 0x08169EE0 + push {r4, r5, lr} + ldr r1, _08169F28 + ldr r5, _08169F2C + ldrb r0, [r5] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r0, _08169F30 + ldr r0, [r0] + ldr r0, [r0, #8] + strb r1, [r0, #8] + ldr r1, _08169F34 + movs r0, #1 + strb r0, [r1] + ldrb r4, [r5] + movs r0, #1 + bl sub_080A631C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r4, #0 + movs r3, #4 + bl sub_0805D6E0 + ldr r1, _08169F38 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08169F3C + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08169F28: .4byte gUnknown_2022D08 +_08169F2C: .4byte gUnknown_2023D08 +_08169F30: .4byte gUnknown_2024174 +_08169F34: .4byte gUnknown_202415D +_08169F38: .4byte gUnknown_3005AC0 +_08169F3C: .4byte sub_081683C4 + thumb_func_end sub_08169EE0 + + thumb_func_start sub_08169F40 +sub_08169F40: @ 0x08169F40 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08169F40 + + thumb_func_start sub_08169F4C +sub_08169F4C: @ 0x08169F4C + push {r4, r5, r6, lr} + ldr r0, _0816A020 + mov ip, r0 + ldr r6, _0816A024 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, ip + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + ldr r5, _0816A028 + mov r1, ip + adds r1, #3 + adds r2, r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _0816A02C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #5 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _0816A030 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r3, r1 + mov r1, ip + adds r1, #8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x10 + orrs r3, r1 + mov r1, ip + adds r1, #9 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #0x18 + orrs r3, r1 + str r3, [r4] + ldr r3, _0816A034 + ldrb r1, [r6] + lsls r1, r1, #9 + mov r2, ip + adds r2, #0xa + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _0816A038 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0xc + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #0xd + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _0816A03C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0x10 + adds r2, r2, r1 + str r2, [r3] + ldr r3, _0816A040 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0816A044 + bl sub_08168900 + b _0816A062 + .align 2, 0 +_0816A020: .4byte gUnknown_2022D08 +_0816A024: .4byte gUnknown_2023D08 +_0816A028: .4byte gUnknown_20380D2 +_0816A02C: .4byte gUnknown_20380A8 +_0816A030: .4byte gUnknown_20380A4 +_0816A034: .4byte gUnknown_20380BA +_0816A038: .4byte gUnknown_20380BC +_0816A03C: .4byte gUnknown_20380A0 +_0816A040: .4byte gUnknown_2024160 +_0816A044: + ldr r0, _0816A068 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _0816A06C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A070 + str r1, [r0] +_0816A062: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816A068: .4byte gUnknown_2024174 +_0816A06C: .4byte gUnknown_3005AC0 +_0816A070: .4byte sub_0816A074 + thumb_func_end sub_08169F4C + + thumb_func_start sub_0816A074 +sub_0816A074: @ 0x0816A074 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _0816A0B8 + ldr r6, _0816A0BC + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sb, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r2, #2 + mov r8, r2 + add r1, r8 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + ldr r7, _0816A0C0 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _0816A0FE + cmp r2, #1 + bgt _0816A0C4 + cmp r2, #0 + beq _0816A0CE + b _0816A1B4 + .align 2, 0 +_0816A0B8: .4byte gUnknown_2022D08 +_0816A0BC: .4byte gUnknown_2023D08 +_0816A0C0: .4byte gUnknown_2024174 +_0816A0C4: + cmp r2, #2 + beq _0816A128 + cmp r2, #3 + beq _0816A178 + b _0816A1B4 +_0816A0CE: + ldr r1, [r5] + lsls r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0816A0EA + adds r0, r3, #0 + adds r1, r3, #0 + adds r2, r3, #0 + movs r3, #5 + bl sub_0805D6E0 +_0816A0EA: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0816A1B4 +_0816A0FE: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0816A1B4 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _0816A1B4 +_0816A128: + ldr r0, _0816A170 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0816A174 + ldrb r0, [r0] + cmp r0, #0 + bne _0816A1B4 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0816A15C + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 +_0816A15C: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _0816A1B4 + .align 2, 0 +_0816A170: .4byte gUnknown_2038098 +_0816A174: .4byte gUnknown_203809D +_0816A178: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0816A1B4 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sb + adds r1, r2, r3 + ldrb r1, [r1] + add r2, r8 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_08168900 +_0816A1B4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0816A074 + + thumb_func_start sub_0816A1C0 +sub_0816A1C0: @ 0x0816A1C0 + push {r4, lr} + ldr r0, _0816A1F8 + movs r1, #0 + strh r1, [r0] + ldr r0, _0816A1FC + strh r1, [r0] + ldr r4, _0816A200 + ldrb r0, [r4] + lsls r0, r0, #9 + ldr r1, _0816A204 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0814E184 + ldr r0, _0816A208 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0816A20C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A210 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816A1F8: .4byte gUnknown_2022AC8 +_0816A1FC: .4byte gUnknown_2022ACA +_0816A200: .4byte gUnknown_2023D08 +_0816A204: .4byte gUnknown_2022D0A +_0816A208: .4byte gUnknown_2022AE0 +_0816A20C: .4byte gUnknown_3005AC0 +_0816A210: .4byte sub_081683AC + thumb_func_end sub_0816A1C0 + + thumb_func_start sub_0816A214 +sub_0816A214: @ 0x0816A214 + push {lr} + ldr r0, _0816A22C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816A230 + bl sub_0816A1C0 + b _0816A234 + .align 2, 0 +_0816A22C: .4byte gUnknown_2023D08 +_0816A230: + bl sub_08168900 +_0816A234: + pop {r0} + bx r0 + thumb_func_end sub_0816A214 + + thumb_func_start sub_0816A238 +sub_0816A238: @ 0x0816A238 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0816A25E + ldr r0, _0816A264 + strh r1, [r0] + ldr r1, _0816A268 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _0816A26C + ldr r0, _0816A270 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A274 + str r1, [r0] +_0816A25E: + pop {r0} + bx r0 + .align 2, 0 +_0816A264: .4byte gUnknown_2022AC8 +_0816A268: .4byte gUnknown_2022ACA +_0816A26C: .4byte gUnknown_3005AC0 +_0816A270: .4byte gUnknown_2023D08 +_0816A274: .4byte sub_0816824C + thumb_func_end sub_0816A238 + + thumb_func_start sub_0816A278 +sub_0816A278: @ 0x0816A278 + push {r4, lr} + ldr r1, _0816A2C4 + ldr r0, _0816A2C8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A2CC + str r1, [r0] + ldr r0, _0816A2D0 + movs r1, #2 + bl sub_0814FA04 + movs r4, #0 +_0816A292: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08059910 + adds r4, #1 + cmp r4, #3 + ble _0816A292 + ldr r1, _0816A2D4 + ldr r0, _0816A2C8 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_080598C8 + ldr r0, _0816A2D8 + bl sub_0814E7A0 + ldr r0, _0816A2DC + movs r1, #1 + bl sub_0814FA04 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816A2C4: .4byte gUnknown_3005AC0 +_0816A2C8: .4byte gUnknown_2023D08 +_0816A2CC: .4byte sub_0816A238 +_0816A2D0: .4byte gUnknown_85ABB72 +_0816A2D4: .4byte gUnknown_2024150 +_0816A2D8: .4byte gUnknown_85ABB57 +_0816A2DC: .4byte gUnknown_2022AE0 + thumb_func_end sub_0816A278 + + thumb_func_start sub_0816A2E0 +sub_0816A2E0: @ 0x0816A2E0 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A2E0 + + thumb_func_start sub_0816A2EC +sub_0816A2EC: @ 0x0816A2EC + push {r4, lr} + ldr r4, _0816A308 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x95 + ldrb r0, [r0] + cmp r0, #1 + beq _0816A32A + cmp r0, #1 + bgt _0816A30C + cmp r0, #0 + beq _0816A312 + b _0816A37C + .align 2, 0 +_0816A308: .4byte gUnknown_2024140 +_0816A30C: + cmp r0, #2 + beq _0816A358 + b _0816A37C +_0816A312: + bl sub_0805BE2C + ldr r1, [r4] + adds r1, #0x95 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r4] + adds r0, #0x97 + movs r1, #0x50 + strb r1, [r0] + b _0816A37C +_0816A32A: + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0816A37C + ldr r0, _0816A350 + strh r1, [r0] + ldr r1, _0816A354 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r1, [r4] + adds r1, #0x95 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0816A37C + .align 2, 0 +_0816A350: .4byte gUnknown_2022AC8 +_0816A354: .4byte gUnknown_2022ACA +_0816A358: + adds r1, #0x97 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816A37C + movs r0, #5 + bl sub_080A306C + movs r2, #0x80 + lsls r2, r2, #1 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + bl sub_08168900 +_0816A37C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A2EC + + thumb_func_start sub_0816A384 +sub_0816A384: @ 0x0816A384 + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0816A3B4 + ldr r2, _0816A3B8 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A3BC + str r1, [r0] + ldr r1, _0816A3C0 + ldrb r0, [r2] + strb r0, [r1] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0816A3B4: .4byte gUnknown_3005AC0 +_0816A3B8: .4byte gUnknown_2023D08 +_0816A3BC: .4byte sub_081683DC +_0816A3C0: .4byte gUnknown_202415C + thumb_func_end sub_0816A384 + + thumb_func_start sub_0816A3C4 +sub_0816A3C4: @ 0x0816A3C4 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A3C4 + + thumb_func_start sub_0816A3D0 +sub_0816A3D0: @ 0x0816A3D0 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A3D0 + + thumb_func_start sub_0816A3DC +sub_0816A3DC: @ 0x0816A3DC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _0816A454 + ldr r0, _0816A458 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _0816A45C + cmp r7, r0 + beq _0816A46C + ldr r6, _0816A460 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0816A464 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _0816A468 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _0816A4A6 + .align 2, 0 +_0816A454: .4byte gUnknown_2022D08 +_0816A458: .4byte gUnknown_2023D08 +_0816A45C: .4byte 0x00007FFF +_0816A460: .4byte gUnknown_2023D12 +_0816A464: .4byte gUnknown_2024190 +_0816A468: .4byte gUnknown_3005AD0 +_0816A46C: + ldr r1, _0816A4C4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0816A4C8 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r4, _0816A4CC + adds r1, r0, r4 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C + mov r1, sb + ldrb r0, [r1] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + movs r2, #0 + bl sub_080726F4 +_0816A4A6: + ldr r1, _0816A4D0 + ldr r0, _0816A4D4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A4D8 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816A4C4: .4byte gUnknown_2023D12 +_0816A4C8: .4byte gUnknown_2024190 +_0816A4CC: .4byte gUnknown_3005AD0 +_0816A4D0: .4byte gUnknown_3005AC0 +_0816A4D4: .4byte gUnknown_2023D08 +_0816A4D8: .4byte sub_0816873C + thumb_func_end sub_0816A3DC + + thumb_func_start sub_0816A4DC +sub_0816A4DC: @ 0x0816A4DC + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A4DC + + thumb_func_start sub_0816A4E8 +sub_0816A4E8: @ 0x0816A4E8 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A4E8 + + thumb_func_start sub_0816A4F4 +sub_0816A4F4: @ 0x0816A4F4 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A4F4 + + thumb_func_start sub_0816A500 +sub_0816A500: @ 0x0816A500 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A500 + + thumb_func_start sub_0816A50C +sub_0816A50C: @ 0x0816A50C + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A50C + + thumb_func_start sub_0816A518 +sub_0816A518: @ 0x0816A518 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A518 + + thumb_func_start sub_0816A524 +sub_0816A524: @ 0x0816A524 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A524 + + thumb_func_start sub_0816A530 +sub_0816A530: @ 0x0816A530 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A530 + + thumb_func_start sub_0816A53C +sub_0816A53C: @ 0x0816A53C + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A53C + + thumb_func_start sub_0816A548 +sub_0816A548: @ 0x0816A548 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A548 + + thumb_func_start sub_0816A554 +sub_0816A554: @ 0x0816A554 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A554 + + thumb_func_start sub_0816A560 +sub_0816A560: @ 0x0816A560 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A560 + + thumb_func_start sub_0816A56C +sub_0816A56C: @ 0x0816A56C + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A56C + + thumb_func_start sub_0816A578 +sub_0816A578: @ 0x0816A578 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A578 + + thumb_func_start sub_0816A584 +sub_0816A584: @ 0x0816A584 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A584 + + thumb_func_start sub_0816A590 +sub_0816A590: @ 0x0816A590 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A590 + + thumb_func_start sub_0816A59C +sub_0816A59C: @ 0x0816A59C + push {r4, lr} + ldr r3, _0816A5C4 + ldr r2, _0816A5C8 + ldr r4, _0816A5CC + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0816A5D0 + bl sub_08168900 + b _0816A5FA + .align 2, 0 +_0816A5C4: .4byte gUnknown_20205AC +_0816A5C8: .4byte gUnknown_2023E88 +_0816A5CC: .4byte gUnknown_2023D08 +_0816A5D0: + ldr r1, _0816A600 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _0816A604 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A608 + str r1, [r0] +_0816A5FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816A600: .4byte gUnknown_202415D +_0816A604: .4byte gUnknown_3005AC0 +_0816A608: .4byte sub_081687AC + thumb_func_end sub_0816A59C + + thumb_func_start sub_0816A60C +sub_0816A60C: @ 0x0816A60C + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A60C + + thumb_func_start sub_0816A618 +sub_0816A618: @ 0x0816A618 + push {lr} + ldr r2, _0816A640 + ldr r0, _0816A644 + ldrb r1, [r0] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A306C + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 +_0816A640: .4byte gUnknown_2022D08 +_0816A644: .4byte gUnknown_2023D08 + thumb_func_end sub_0816A618 + + thumb_func_start sub_0816A648 +sub_0816A648: @ 0x0816A648 + push {r4, r5, lr} + ldr r4, _0816A67C + ldr r5, _0816A680 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0816A684 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _0816A698 + .align 2, 0 +_0816A67C: .4byte gUnknown_2022D08 +_0816A680: .4byte gUnknown_2023D08 +_0816A684: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_0816A698: + bl sub_08168900 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816A648 + + thumb_func_start sub_0816A6A4 +sub_0816A6A4: @ 0x0816A6A4 + push {lr} + ldr r1, _0816A6D4 + ldr r0, _0816A6D8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0816A6DC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + bl sub_080A2B3C + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 +_0816A6D4: .4byte gUnknown_2023D12 +_0816A6D8: .4byte gUnknown_2023D08 +_0816A6DC: .4byte gUnknown_2024190 + thumb_func_end sub_0816A6A4 + + thumb_func_start sub_0816A6E0 +sub_0816A6E0: @ 0x0816A6E0 + push {lr} + ldr r1, _0816A708 + ldr r0, _0816A70C + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _0816A710 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 +_0816A708: .4byte gUnknown_2022D08 +_0816A70C: .4byte gUnknown_2023D08 +_0816A710: .4byte gUnknown_20240A0 + thumb_func_end sub_0816A6E0 + + thumb_func_start sub_0816A714 +sub_0816A714: @ 0x0816A714 + push {r4, r5, r6, r7, lr} + ldr r6, _0816A84C + ldr r7, _0816A850 + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0816A854 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0816A858 + strh r1, [r0, #0x32] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0816A85C + str r1, [r0] + ldrb r2, [r7] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x38] + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0816A860 + bl sub_080A5B9C + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0816A864 + bl sub_080084EC + adds r4, r0, #0 + lsls r4, r4, #0x18 + ldr r0, _0816A868 + ldr r0, [r0, #0x30] + lsrs r4, r4, #0x14 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC + ldrb r0, [r7] + adds r0, r0, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #5] + ldr r0, _0816A86C + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0816A870 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r7] + strh r0, [r1, #8] + ldr r3, _0816A874 + ldr r0, [r3] + ldrb r2, [r7] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816A82C + ldr r0, _0816A878 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _0816A87C + str r1, [r0] +_0816A82C: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _0816A880 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816A884 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816A84C: .4byte gUnknown_2023E88 +_0816A850: .4byte gUnknown_2023D08 +_0816A854: .4byte gUnknown_20205AC +_0816A858: .4byte 0x0000FFD8 +_0816A85C: .4byte sub_080A67B4 +_0816A860: .4byte sub_0805C81C +_0816A864: .4byte 0x0000D6F8 +_0816A868: .4byte gUnknown_82D961C +_0816A86C: .4byte sub_0816AA0C +_0816A870: .4byte gUnknown_3005B60 +_0816A874: .4byte gUnknown_2024174 +_0816A878: .4byte gUnknown_2024158 +_0816A87C: .4byte sub_0807352C +_0816A880: .4byte gUnknown_3005AC0 +_0816A884: .4byte sub_08057068 + thumb_func_end sub_0816A714 + + thumb_func_start sub_0816A888 +sub_0816A888: @ 0x0816A888 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0816A9E0 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r6, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #2] + ldr r0, _0816A9E4 + lsls r2, r6, #1 + adds r2, r2, r0 + ldr r0, _0816A9E8 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0816A9EC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0816A9F0 + bl sub_0806F0C4 + ldr r1, _0816A9F4 + mov sb, r1 + add sb, r6 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _0816A9F8 + mov sl, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0816A9FC + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0816AA00 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0816AA04 + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0816AA08 + str r1, [r0] + movs r0, #0 + movs r1, #0xff + bl sub_08074DF0 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816A9E0: .4byte gUnknown_2024174 +_0816A9E4: .4byte gUnknown_2023D12 +_0816A9E8: .4byte gUnknown_2022D08 +_0816A9EC: .4byte gUnknown_2024190 +_0816A9F0: .4byte sub_0805D330 +_0816A9F4: .4byte gUnknown_3005ADC +_0816A9F8: .4byte gUnknown_2024640 +_0816A9FC: .4byte gUnknown_2023E88 +_0816AA00: .4byte gUnknown_20205AC +_0816AA04: .4byte gUnknown_2024188 +_0816AA08: .4byte sub_08007140 + thumb_func_end sub_0816A888 + + thumb_func_start sub_0816AA0C +sub_0816AA0C: @ 0x0816AA0C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0816AA2C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0x1e + bgt _0816AA30 + adds r0, r2, #1 + strh r0, [r1, #0xa] + b _0816AA66 + .align 2, 0 +_0816AA2C: .4byte gUnknown_3005B60 +_0816AA30: + ldr r4, _0816AA6C + ldrb r5, [r4] + ldrh r0, [r1, #8] + strb r0, [r4] + ldr r0, _0816AA70 + ldrb r1, [r4] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _0816AA74 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r4] + bl sub_0816A888 + ldr r1, _0816AA78 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0816AA7C + str r1, [r0] + strb r5, [r4] + adds r0, r6, #0 + bl sub_080A8964 +_0816AA66: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816AA6C: .4byte gUnknown_2023D08 +_0816AA70: .4byte gUnknown_2022D08 +_0816AA74: .4byte gUnknown_2023D12 +_0816AA78: .4byte gUnknown_3005AC0 +_0816AA7C: .4byte sub_08168454 + thumb_func_end sub_0816AA0C + + thumb_func_start sub_0816AA80 +sub_0816AA80: @ 0x0816AA80 + push {r4, r5, lr} + ldr r1, _0816AAA8 + ldr r0, _0816AAAC + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0816AAB0 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816AAB0 + bl sub_08168900 + b _0816AAEE + .align 2, 0 +_0816AAA8: .4byte gUnknown_2022D08 +_0816AAAC: .4byte gUnknown_2023D08 +_0816AAB0: + ldr r0, _0816AAF4 + ldr r0, [r0] + ldr r5, _0816AAF8 + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r4, r0, #9 + ldr r3, _0816AAFC + adds r1, r4, r3 + subs r2, r3, #3 + adds r2, r4, r2 + ldrb r2, [r2] + subs r3, #2 + adds r4, r4, r3 + ldrb r3, [r4] + bl sub_08072ED8 + ldr r2, _0816AB00 + ldrb r1, [r5] + adds r1, r1, r2 + strb r0, [r1] + bl sub_08168900 +_0816AAEE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816AAF4: .4byte gUnknown_2024174 +_0816AAF8: .4byte gUnknown_2023D08 +_0816AAFC: .4byte gUnknown_2022D0C +_0816AB00: .4byte gUnknown_2024158 + thumb_func_end sub_0816AA80 + + thumb_func_start sub_0816AB04 +sub_0816AB04: @ 0x0816AB04 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AB04 + + thumb_func_start sub_0816AB10 +sub_0816AB10: @ 0x0816AB10 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AB10 + + thumb_func_start sub_0816AB1C +sub_0816AB1C: @ 0x0816AB1C + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AB1C + + thumb_func_start sub_0816AB28 +sub_0816AB28: @ 0x0816AB28 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r5, _0816AB60 + ldr r6, _0816AB64 + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0816AB68 + bl sub_08168900 + b _0816AB74 + .align 2, 0 +_0816AB60: .4byte gUnknown_2022D08 +_0816AB64: .4byte gUnknown_2023D08 +_0816AB68: + ldr r0, _0816AB7C + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0816AB80 + str r0, [r1] +_0816AB74: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816AB7C: .4byte gUnknown_3005AC0 +_0816AB80: .4byte sub_081688D0 + thumb_func_end sub_0816AB28 + + thumb_func_start sub_0816AB84 +sub_0816AB84: @ 0x0816AB84 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AB84 + + thumb_func_start sub_0816AB90 +sub_0816AB90: @ 0x0816AB90 + push {lr} + bl sub_08168900 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AB90 + + thumb_func_start sub_0816AB9C +sub_0816AB9C: @ 0x0816AB9C + push {r4, lr} + ldr r2, _0816ABE0 + ldr r1, _0816ABE4 + ldr r4, _0816ABE8 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_08168900 + ldr r0, _0816ABEC + ldr r0, [r0] + movs r1, #6 + ands r0, r1 + cmp r0, #2 + bne _0816ABD8 + ldr r0, _0816ABF0 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0816ABF4 + str r0, [r1] +_0816ABD8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816ABE0: .4byte gUnknown_2023FDE +_0816ABE4: .4byte gUnknown_2022D08 +_0816ABE8: .4byte gUnknown_2023D08 +_0816ABEC: .4byte gUnknown_2022C90 +_0816ABF0: .4byte gUnknown_3005AC0 +_0816ABF4: .4byte sub_080583C0 + thumb_func_end sub_0816AB9C + + thumb_func_start sub_0816ABF8 +sub_0816ABF8: @ 0x0816ABF8 + bx lr + .align 2, 0 + thumb_func_end sub_0816ABF8 + + thumb_func_start sub_0816ABFC +sub_0816ABFC: @ 0x0816ABFC + push {r4, r5, r6, lr} + movs r4, #0 + ldr r0, _0816AC58 + ldr r0, [r0] + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0x32 + bl sub_080D6494 + ldr r1, _0816AC5C + ldrh r0, [r1] + cmp r0, #0 + beq _0816AC50 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _0816AC50 + adds r5, r1, #0 + adds r6, r5, #2 +_0816AC22: + lsls r1, r4, #2 + adds r0, r1, r5 + ldrh r0, [r0] + adds r1, r1, r6 + ldrh r1, [r1] + bl sub_080D6588 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816AC50 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r4, #2 + adds r0, r1, r5 + ldrh r0, [r0] + cmp r0, #0 + beq _0816AC50 + adds r0, r1, r6 + ldrh r0, [r0] + cmp r0, #0 + bne _0816AC22 +_0816AC50: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816AC58: .4byte gUnknown_3005AEC +_0816AC5C: .4byte gUnknown_85C0BE0 + thumb_func_end sub_0816ABFC + + thumb_func_start sub_0816AC60 +sub_0816AC60: @ 0x0816AC60 + push {lr} + ldr r1, _0816AC88 + ldr r0, _0816AC8C + str r0, [r1] + ldr r1, _0816AC90 + movs r0, #4 + strb r0, [r1] + ldr r0, _0816AC94 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816AC98 + ldr r2, _0816AC9C + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_0816AC88: .4byte gUnknown_203B97C +_0816AC8C: .4byte gUnknown_85C0BB8 +_0816AC90: .4byte gUnknown_203B980 +_0816AC94: .4byte sub_080A8A40 +_0816AC98: .4byte gUnknown_85C942E +_0816AC9C: .4byte sub_0816ACE0 + thumb_func_end sub_0816AC60 + + thumb_func_start sub_0816ACA0 +sub_0816ACA0: @ 0x0816ACA0 + push {lr} + ldr r1, _0816ACC8 + ldr r0, _0816ACCC + str r0, [r1] + ldr r1, _0816ACD0 + movs r0, #3 + strb r0, [r1] + ldr r0, _0816ACD4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816ACD8 + ldr r2, _0816ACDC + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_0816ACC8: .4byte gUnknown_203B97C +_0816ACCC: .4byte gUnknown_85C0BBC +_0816ACD0: .4byte gUnknown_203B980 +_0816ACD4: .4byte sub_080A8A40 +_0816ACD8: .4byte gUnknown_85C942E +_0816ACDC: .4byte sub_0816ACE0 + thumb_func_end sub_0816ACA0 + + thumb_func_start sub_0816ACE0 +sub_0816ACE0: @ 0x0816ACE0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _0816AD04 + adds r7, r0, r1 + ldr r0, _0816AD08 + ldrb r0, [r0] + cmp r0, #3 + bne _0816AD10 + ldr r0, _0816AD0C + b _0816AD12 + .align 2, 0 +_0816AD04: .4byte gUnknown_3005B68 +_0816AD08: .4byte gUnknown_203B980 +_0816AD0C: .4byte gUnknown_85C0C08 +_0816AD10: + ldr r0, _0816AD98 +_0816AD12: + bl sub_08003250 + strh r0, [r7, #8] + ldrb r0, [r7, #8] + movs r1, #0 + bl sub_08197638 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #2 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r7, #8] + str r0, [sp] + movs r6, #0x10 + str r6, [sp, #4] + ldr r5, _0816AD9C + ldrb r0, [r5] + str r0, [sp, #8] + ldr r0, _0816ADA0 + str r0, [sp, #0xc] + ldr r0, _0816ADA4 + ldr r0, [r0] + str r0, [sp, #0x10] + adds r0, r1, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #2 + bl sub_081989B4 + ldrb r0, [r7, #8] + str r6, [sp] + ldrb r1, [r5] + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + ldr r1, _0816ADA8 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816ADAC + str r1, [r0] + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816AD98: .4byte gUnknown_85C0C10 +_0816AD9C: .4byte gUnknown_203B980 +_0816ADA0: .4byte gUnknown_85C0B98 +_0816ADA4: .4byte gUnknown_203B97C +_0816ADA8: .4byte gUnknown_3005B60 +_0816ADAC: .4byte sub_0816ADB0 + thumb_func_end sub_0816ACE0 + + thumb_func_start sub_0816ADB0 +sub_0816ADB0: @ 0x0816ADB0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0816ADD0 + adds r4, r0, r1 + ldr r0, _0816ADD4 + ldrb r0, [r0] + cmp r0, #3 + bls _0816ADD8 + bl sub_0819867C + b _0816ADDC + .align 2, 0 +_0816ADD0: .4byte gUnknown_3005B68 +_0816ADD4: .4byte gUnknown_203B980 +_0816ADD8: + bl sub_081986E8 +_0816ADDC: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + asrs r5, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _0816AE64 + adds r0, #1 + cmp r5, r0 + bne _0816AE2C + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4, #8] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4, #8] + bl sub_08003774 + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + ldr r1, _0816AE24 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816AE28 + str r1, [r0] + b _0816AE64 + .align 2, 0 +_0816AE24: .4byte gUnknown_3005B60 +_0816AE28: .4byte sub_0816AF60 +_0816AE2C: + ldrb r0, [r4, #8] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4, #8] + bl sub_08003774 + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + ldr r0, _0816AE6C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r2, _0816AE70 + ldr r0, _0816AE74 + ldr r0, [r0] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0816AE64: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816AE6C: .4byte gUnknown_3005B60 +_0816AE70: .4byte gUnknown_85C0B98 +_0816AE74: .4byte gUnknown_203B97C + thumb_func_end sub_0816ADB0 + + thumb_func_start sub_0816AE78 +sub_0816AE78: @ 0x0816AE78 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816AE8C + ldr r2, _0816AE90 + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_0816AE8C: .4byte gUnknown_85C942E +_0816AE90: .4byte sub_0816ACE0 + thumb_func_end sub_0816AE78 + + thumb_func_start sub_0816AE94 +sub_0816AE94: @ 0x0816AE94 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_0816AFA8 + ldr r1, _0816AEB8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816AEBC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816AEB8: .4byte gUnknown_3005B60 +_0816AEBC: .4byte sub_0816B06C + thumb_func_end sub_0816AE94 + + thumb_func_start sub_0816AEC0 +sub_0816AEC0: @ 0x0816AEC0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + bl sub_0816B334 + ldr r5, _0816AEE4 + movs r1, #0 + strb r0, [r5, #5] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816AEF0 + ldr r1, _0816AEE8 + ldr r2, _0816AEEC + adds r0, r4, #0 + bl sub_081976D0 + b _0816AF42 + .align 2, 0 +_0816AEE4: .4byte gUnknown_203B984 +_0816AEE8: .4byte gUnknown_85CA976 +_0816AEEC: .4byte sub_0816AE78 +_0816AEF0: + strh r1, [r5] + strh r1, [r5, #2] + movs r0, #0xff + strb r0, [r5, #9] + bl sub_0816B370 + adds r0, r4, #0 + bl sub_0816B2E4 + ldrb r0, [r5, #5] + bl sub_081D1340 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816AF38 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_0816B41C + ldr r0, _0816AF30 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816AF34 + str r0, [r1] + b _0816AF42 + .align 2, 0 +_0816AF30: .4byte gUnknown_3005B60 +_0816AF34: .4byte sub_0816B488 +_0816AF38: + ldr r1, _0816AF48 + ldr r2, _0816AF4C + adds r0, r6, #0 + bl sub_081976D0 +_0816AF42: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816AF48: .4byte gUnknown_85CA976 +_0816AF4C: .4byte sub_0816AE78 + thumb_func_end sub_0816AEC0 + + thumb_func_start sub_0816AF50 +sub_0816AF50: @ 0x0816AF50 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08126AF4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816AF50 + + thumb_func_start sub_0816AF60 +sub_0816AF60: @ 0x0816AF60 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816AF80 + ldrb r0, [r0] + cmp r0, #4 + bne _0816AF98 + ldr r0, _0816AF84 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0816AF8C + ldr r0, _0816AF88 + bl sub_08098880 + b _0816AF9C + .align 2, 0 +_0816AF80: .4byte gUnknown_203B980 +_0816AF84: .4byte gUnknown_3005AF0 +_0816AF88: .4byte gUnknown_81F01EE +_0816AF8C: + ldr r0, _0816AF94 + bl sub_08098880 + b _0816AF9C + .align 2, 0 +_0816AF94: .4byte gUnknown_81F0DDB +_0816AF98: + bl sub_080988C4 +_0816AF9C: + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0816AF60 + + thumb_func_start sub_0816AFA8 +sub_0816AFA8: @ 0x0816AFA8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0816B030 + adds r4, r4, r0 + ldr r0, _0816B034 + bl sub_08003250 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08197638 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r4, #8] + movs r1, #0x10 + mov r8, r1 + str r1, [sp] + movs r6, #4 + str r6, [sp, #4] + ldr r1, _0816B038 + str r1, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_08198850 + ldrb r0, [r4, #8] + mov r1, r8 + str r1, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + ldr r0, _0816B03C + lsls r5, r5, #2 + adds r5, r5, r0 + ldr r0, [r5] + bl sub_0816B040 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816B030: .4byte gUnknown_3005B68 +_0816B034: .4byte gUnknown_85C0C18 +_0816B038: .4byte gUnknown_85C0BC0 +_0816B03C: .4byte gUnknown_85C0B88 + thumb_func_end sub_0816AFA8 + + thumb_func_start sub_0816B040 +sub_0816B040: @ 0x0816B040 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816B040 + + thumb_func_start sub_0816B06C +sub_0816B06C: @ 0x0816B06C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_0819867C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0816B0BC + adds r0, #1 + cmp r4, r0 + beq _0816B0D8 + movs r0, #5 + bl sub_080A306C + ldr r0, _0816B0B8 + lsls r1, r4, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r6, #0 + bl _call_via_r1 + b _0816B0E4 + .align 2, 0 +_0816B0B8: .4byte gUnknown_85C0BC0 +_0816B0BC: + lsls r1, r5, #0x18 + lsls r0, r2, #0x18 + asrs r2, r0, #0x18 + cmp r1, r0 + beq _0816B0E4 + ldr r0, _0816B0D4 + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_0816B040 + b _0816B0E4 + .align 2, 0 +_0816B0D4: .4byte gUnknown_85C0B88 +_0816B0D8: + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_0816B2C8 +_0816B0E4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816B06C + + thumb_func_start sub_0816B0EC +sub_0816B0EC: @ 0x0816B0EC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0816B10C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0816B110 + str r0, [r1] + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 +_0816B10C: .4byte gUnknown_3005B60 +_0816B110: .4byte sub_0816B114 + thumb_func_end sub_0816B0EC + + thumb_func_start sub_0816B114 +sub_0816B114: @ 0x0816B114 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816B13C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816B134 + bl sub_0808569C + bl sub_081AA98C + adds r0, r4, #0 + bl sub_080A8964 +_0816B134: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B13C: .4byte gUnknown_2037C74 + thumb_func_end sub_0816B114 + + thumb_func_start sub_0816B140 +sub_0816B140: @ 0x0816B140 + push {lr} + ldr r0, _0816B154 + ldr r1, _0816B158 + str r1, [r0] + ldr r0, _0816B15C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0816B154: .4byte gUnknown_3005B0C +_0816B158: .4byte sub_0816B160 +_0816B15C: .4byte sub_08085A30 + thumb_func_end sub_0816B140 + + thumb_func_start sub_0816B160 +sub_0816B160: @ 0x0816B160 + push {lr} + bl sub_08196F98 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + ldr r0, _0816B188 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0816AFA8 + bl sub_080AE99C + pop {r0} + bx r0 + .align 2, 0 +_0816B188: .4byte sub_0816B18C + thumb_func_end sub_0816B160 + + thumb_func_start sub_0816B18C +sub_0816B18C: @ 0x0816B18C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816B1AC + ldr r0, _0816B1B4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816B1B8 + str r0, [r1] +_0816B1AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B1B4: .4byte gUnknown_3005B60 +_0816B1B8: .4byte sub_0816B06C + thumb_func_end sub_0816B18C + + thumb_func_start sub_0816B1BC +sub_0816B1BC: @ 0x0816B1BC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0816B1E4 + adds r4, r4, r0 + bl sub_080D64FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #2] + cmp r0, #0 + beq _0816B1E8 + adds r0, r5, #0 + movs r1, #0 + bl sub_0816B254 + b _0816B1F8 + .align 2, 0 +_0816B1E4: .4byte gUnknown_3005B68 +_0816B1E8: + adds r0, r5, #0 + bl sub_0816B300 + ldr r1, _0816B200 + ldr r2, _0816B204 + adds r0, r5, #0 + bl sub_081976D0 +_0816B1F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816B200: .4byte gUnknown_85CA918 +_0816B204: .4byte sub_0816AE94 + thumb_func_end sub_0816B1BC + + thumb_func_start sub_0816B208 +sub_0816B208: @ 0x0816B208 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0816B230 + adds r4, r4, r0 + bl sub_080D64FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #2] + cmp r0, #0 + beq _0816B234 + adds r0, r5, #0 + movs r1, #1 + bl sub_0816B254 + b _0816B244 + .align 2, 0 +_0816B230: .4byte gUnknown_3005B68 +_0816B234: + adds r0, r5, #0 + bl sub_0816B300 + ldr r1, _0816B24C + ldr r2, _0816B250 + adds r0, r5, #0 + bl sub_081976D0 +_0816B244: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816B24C: .4byte gUnknown_85CA918 +_0816B250: .4byte sub_0816AE94 + thumb_func_end sub_0816B208 + + thumb_func_start sub_0816B254 +sub_0816B254: @ 0x0816B254 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + ldr r6, _0816B2B8 + adds r0, r5, r6 + strh r1, [r0, #6] + adds r0, r4, #0 + bl sub_0816B300 + ldr r1, _0816B2BC + movs r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + movs r0, #0xff + strb r0, [r1, #9] + adds r0, r4, #0 + bl sub_0816B2E4 + bl sub_0816BA54 + bl sub_0808E1F0 + bl sub_08122334 + ldr r0, _0816B2C0 + ldr r0, [r0] + movs r1, #0xcd + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #7 + bl sub_08122350 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + subs r6, #8 + adds r5, r5, r6 + ldr r0, _0816B2C4 + str r0, [r5] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816B2B8: .4byte gUnknown_3005B68 +_0816B2BC: .4byte gUnknown_203B984 +_0816B2C0: .4byte gUnknown_203B990 +_0816B2C4: .4byte sub_0816BF8C + thumb_func_end sub_0816B254 + + thumb_func_start sub_0816B2C8 +sub_0816B2C8: @ 0x0816B2C8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0816B300 + adds r0, r4, #0 + bl sub_0816AE78 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816B2C8 + + thumb_func_start sub_0816B2E4 +sub_0816B2E4: @ 0x0816B2E4 + push {lr} + ldr r1, _0816B2F4 + ldrb r0, [r1, #5] + cmp r0, #7 + bls _0816B2F8 + movs r0, #8 + b _0816B2FA + .align 2, 0 +_0816B2F4: .4byte gUnknown_203B984 +_0816B2F8: + adds r0, #1 +_0816B2FA: + strb r0, [r1, #4] + pop {r0} + bx r0 + thumb_func_end sub_0816B2E4 + + thumb_func_start sub_0816B300 +sub_0816B300: @ 0x0816B300 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0816B330 + adds r4, r4, r0 + ldrb r0, [r4, #8] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4, #8] + bl sub_08003774 + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B330: .4byte gUnknown_3005B68 + thumb_func_end sub_0816B300 + + thumb_func_start sub_0816B334 +sub_0816B334: @ 0x0816B334 + push {r4, lr} + movs r2, #0 + movs r1, #6 + ldr r0, _0816B36C + ldr r3, [r0] + movs r4, #0xb0 + lsls r4, r4, #6 +_0816B342: + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + beq _0816B358 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_0816B358: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _0816B342 + adds r0, r2, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0816B36C: .4byte gUnknown_3005AEC + thumb_func_end sub_0816B334 + + thumb_func_start sub_0816B370 +sub_0816B370: @ 0x0816B370 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + movs r2, #6 +_0816B37E: + adds r1, r2, #1 + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + mov r8, r1 + cmp r4, #0xf + bhi _0816B3F8 + ldr r0, _0816B414 + mov sl, r0 + lsls r0, r2, #3 + adds r0, r0, r2 + lsls r0, r0, #2 + mov ip, r0 + ldr r6, _0816B418 +_0816B398: + mov r1, sl + ldr r1, [r1] + mov sb, r1 + mov r2, sb + add r2, ip + movs r3, #0xb0 + lsls r3, r3, #6 + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, #0 + bne _0816B3EE + adds r2, 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, r3, r4 + lsls r3, r3, #2 + mov r5, sb + adds r0, r5, r3 + adds r0, 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, sl + ldr r1, [r7] + adds r1, r1, r3 + adds r1, 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} +_0816B3EE: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0816B398 +_0816B3F8: + mov r3, r8 + lsls r0, r3, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xe + bls _0816B37E + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816B414: .4byte gUnknown_3005AEC +_0816B418: .4byte 0x00002BE0 + thumb_func_end sub_0816B370 + + thumb_func_start sub_0816B41C +sub_0816B41C: @ 0x0816B41C + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0 + bl sub_081D1380 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_081D1380 + ldr r2, _0816B47C + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #2 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + ldr r4, _0816B480 + adds r0, r4, #0 + bl sub_081D13F4 + ldr r2, _0816B484 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x12] + adds r0, r4, #0 + bl sub_081D14D8 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816B47C: .4byte gUnknown_85CA8B5 +_0816B480: .4byte gUnknown_203B984 +_0816B484: .4byte gUnknown_3005B60 + thumb_func_end sub_0816B41C + + thumb_func_start sub_0816B488 +sub_0816B488: @ 0x0816B488 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + mov sb, r0 + ldr r0, _0816B4DC + mov sl, r0 + mov r4, sb + add r4, sl + ldr r0, _0816B4E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816B532 + ldrb r0, [r4, #0xa] + bl sub_081AE2DC + adds r6, r0, #0 + ldrb r0, [r4, #0xa] + ldr r7, _0816B4E4 + subs r1, r7, #2 + mov r8, r1 + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _0816B4E8 + adds r0, #1 + cmp r6, r0 + bne _0816B4FE + b _0816B532 + .align 2, 0 +_0816B4DC: .4byte gUnknown_3005B68 +_0816B4E0: .4byte gUnknown_2037C74 +_0816B4E4: .4byte gUnknown_203B986 +_0816B4E8: + movs r0, #5 + bl sub_080A306C + mov r1, r8 + ldrb r0, [r1, #9] + bl sub_081AF2F8 + adds r0, r5, #0 + bl sub_0816B5A4 + b _0816B532 +_0816B4FE: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081D13B4 + movs r0, #1 + bl sub_081D13B4 + ldrb r0, [r4, #0xa] + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08199654 + mov r1, r8 + ldrb r0, [r1, #9] + bl sub_081AF2F8 + mov r0, sl + subs r0, #8 + add r0, sb + ldr r1, _0816B540 + str r1, [r0] +_0816B532: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816B540: .4byte sub_0816B544 + thumb_func_end sub_0816B488 + + thumb_func_start sub_0816B544 +sub_0816B544: @ 0x0816B544 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0816B588 + ldr r3, _0816B58C + ldr r1, _0816B590 + ldrh r2, [r1] + adds r2, #6 + ldrh r1, [r1, #2] + adds r2, r2, r1 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r2, [r3] + adds r1, r1, r2 + ldr r2, _0816B594 + adds r1, r1, r2 + bl sub_080088B8 + ldr r5, _0816B598 + ldr r1, _0816B59C + adds r0, r5, #0 + bl sub_08008BCC + ldr r2, _0816B5A0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081976D0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816B588: .4byte gUnknown_2021C40 +_0816B58C: .4byte gUnknown_3005AEC +_0816B590: .4byte gUnknown_203B984 +_0816B594: .4byte 0x00002BF2 +_0816B598: .4byte gUnknown_2021C7C +_0816B59C: .4byte gUnknown_85CA988 +_0816B5A0: .4byte sub_0816B5E8 + thumb_func_end sub_0816B544 + + thumb_func_start sub_0816B5A4 +sub_0816B5A4: @ 0x0816B5A4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0816B5E4 + adds r4, r4, r0 + movs r0, #0 + bl sub_081D13B4 + movs r0, #1 + bl sub_081D13B4 + ldrb r0, [r4, #0xa] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08199654 + bl sub_081D1508 + adds r0, r5, #0 + bl sub_0816AE78 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816B5E4: .4byte gUnknown_3005B68 + thumb_func_end sub_0816B5A4 + + thumb_func_start sub_0816B5E8 +sub_0816B5E8: @ 0x0816B5E8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #2 + bl sub_081D1380 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x10 + mov r8, r0 + str r0, [sp] + movs r6, #4 + str r6, [sp, #4] + ldr r0, _0816B660 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r3, #2 + bl sub_08198850 + mov r0, r8 + str r0, [sp] + str r6, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #0 + bl sub_08199654 + ldr r1, _0816B664 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816B668 + str r1, [r0] + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816B660: .4byte gUnknown_85C0BE8 +_0816B664: .4byte gUnknown_3005B60 +_0816B668: .4byte sub_0816B66C + thumb_func_end sub_0816B5E8 + + thumb_func_start sub_0816B66C +sub_0816B66C: @ 0x0816B66C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_08198768 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0816B6AE + adds r0, #1 + cmp r4, r0 + bne _0816B698 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_0816BA14 + b _0816B6AE +_0816B698: + movs r0, #5 + bl sub_080A306C + ldr r0, _0816B6B4 + lsls r1, r4, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r6, #0 + bl _call_via_r1 +_0816B6AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816B6B4: .4byte gUnknown_85C0BE8 + thumb_func_end sub_0816B66C + + thumb_func_start sub_0816B6B8 +sub_0816B6B8: @ 0x0816B6B8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r1, _0816B6DC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816B6E0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B6DC: .4byte gUnknown_3005B60 +_0816B6E0: .4byte sub_0816B6E4 + thumb_func_end sub_0816B6B8 + + thumb_func_start sub_0816B6E4 +sub_0816B6E4: @ 0x0816B6E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816B72C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816B726 + bl sub_081D1508 + bl sub_0808569C + ldr r2, _0816B730 + ldr r1, _0816B734 + ldrh r0, [r1] + adds r0, #6 + ldrh r1, [r1, #2] + adds r0, r0, r1 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0816B738 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + ldr r1, _0816B73C + movs r2, #1 + bl sub_08121568 + adds r0, r4, #0 + bl sub_080A8964 +_0816B726: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B72C: .4byte gUnknown_2037C74 +_0816B730: .4byte gUnknown_3005AEC +_0816B734: .4byte gUnknown_203B984 +_0816B738: .4byte 0x00002BE0 +_0816B73C: .4byte sub_0816B740 + thumb_func_end sub_0816B6E4 + + thumb_func_start sub_0816B740 +sub_0816B740: @ 0x0816B740 + push {lr} + ldr r0, _0816B754 + ldr r1, _0816B758 + str r1, [r0] + ldr r0, _0816B75C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0816B754: .4byte gUnknown_3005B0C +_0816B758: .4byte sub_0816B760 +_0816B75C: .4byte sub_08085A30 + thumb_func_end sub_0816B740 + + thumb_func_start sub_0816B760 +sub_0816B760: @ 0x0816B760 + push {r4, lr} + bl sub_08196F98 + ldr r0, _0816B78C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816B790 + ldrb r0, [r0, #5] + bl sub_081D1340 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816B794 + adds r0, r4, #0 + bl sub_0816B41C + b _0816B79A + .align 2, 0 +_0816B78C: .4byte sub_0816B7A4 +_0816B790: .4byte gUnknown_203B984 +_0816B794: + adds r0, r4, #0 + bl sub_080A8964 +_0816B79A: + bl sub_080AE99C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0816B760 + + thumb_func_start sub_0816B7A4 +sub_0816B7A4: @ 0x0816B7A4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816B7C4 + ldr r0, _0816B7CC + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816B7D0 + str r0, [r1] +_0816B7C4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B7CC: .4byte gUnknown_3005B60 +_0816B7D0: .4byte sub_0816B488 + thumb_func_end sub_0816B7A4 + + thumb_func_start sub_0816B7D4 +sub_0816B7D4: @ 0x0816B7D4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816B7E8 + ldr r2, _0816B7EC + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_0816B7E8: .4byte gUnknown_85CA99A +_0816B7EC: .4byte sub_0816B7F0 + thumb_func_end sub_0816B7D4 + + thumb_func_start sub_0816B7F0 +sub_0816B7F0: @ 0x0816B7F0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08197714 + ldr r1, _0816B810 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816B814 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B810: .4byte gUnknown_3005B60 +_0816B814: .4byte sub_0816B818 + thumb_func_end sub_0816B7F0 + + thumb_func_start sub_0816B818 +sub_0816B818: @ 0x0816B818 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0816B844 + cmp r0, r1 + ble _0816B850 + cmp r0, #0 + beq _0816B83C + cmp r0, #1 + beq _0816B84A + b _0816B850 +_0816B83C: + adds r0, r4, #0 + bl sub_0816B858 + b _0816B850 +_0816B844: + movs r0, #5 + bl sub_080A306C +_0816B84A: + adds r0, r4, #0 + bl sub_0816B8EC +_0816B850: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816B818 + + thumb_func_start sub_0816B858 +sub_0816B858: @ 0x0816B858 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _0816B894 + ldr r4, _0816B898 + ldrh r1, [r4] + adds r1, #6 + ldrh r0, [r4, #2] + adds r1, r1, r0 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0816B89C + adds r0, r0, r1 + ldr r1, [r2] + adds r5, r1, r0 + ldrh r0, [r5, #0x20] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816B8A8 + ldr r1, _0816B8A0 + ldr r2, _0816B8A4 + adds r0, r6, #0 + bl sub_081976D0 + b _0816B8DC + .align 2, 0 +_0816B894: .4byte gUnknown_3005AEC +_0816B898: .4byte gUnknown_203B984 +_0816B89C: .4byte 0x00002BE0 +_0816B8A0: .4byte gUnknown_85CA9B3 +_0816B8A4: .4byte sub_0816BA14 +_0816B8A8: + ldr r1, _0816B8E4 + ldr r2, _0816B8E8 + adds r0, r6, #0 + bl sub_081976D0 + adds r0, r5, #0 + bl sub_080D3C3C + bl sub_0816B370 + ldrb r0, [r4, #5] + subs r0, #1 + strb r0, [r4, #5] + ldrb r1, [r4, #5] + ldrb r0, [r4, #4] + ldrh r2, [r4, #2] + adds r0, r0, r2 + cmp r1, r0 + bge _0816B8D6 + cmp r2, #0 + beq _0816B8D6 + subs r0, r2, #1 + strh r0, [r4, #2] +_0816B8D6: + adds r0, r6, #0 + bl sub_0816B2E4 +_0816B8DC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816B8E4: .4byte gUnknown_85CA9C2 +_0816B8E8: .4byte sub_0816BA14 + thumb_func_end sub_0816B858 + + thumb_func_start sub_0816B8EC +sub_0816B8EC: @ 0x0816B8EC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0816BA14 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816B8EC + + thumb_func_start sub_0816B8FC +sub_0816B8FC: @ 0x0816B8FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806B004 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816B914 + adds r0, r4, #0 + bl sub_0816B9F8 + b _0816B92A +_0816B914: + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _0816B930 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816B934 + str r0, [r1] +_0816B92A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B930: .4byte gUnknown_3005B60 +_0816B934: .4byte sub_0816B938 + thumb_func_end sub_0816B8FC + + thumb_func_start sub_0816B938 +sub_0816B938: @ 0x0816B938 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816B964 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816B95C + bl sub_081D1508 + bl sub_0808569C + bl sub_081B80E8 + adds r0, r4, #0 + bl sub_080A8964 +_0816B95C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816B964: .4byte gUnknown_2037C74 + thumb_func_end sub_0816B938 + + thumb_func_start sub_0816B968 +sub_0816B968: @ 0x0816B968 + push {lr} + ldr r0, _0816B97C + ldr r1, _0816B980 + str r1, [r0] + ldr r0, _0816B984 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0816B97C: .4byte gUnknown_3005B0C +_0816B980: .4byte sub_0816B988 +_0816B984: .4byte sub_08085A30 + thumb_func_end sub_0816B968 + + thumb_func_start sub_0816B988 +sub_0816B988: @ 0x0816B988 + push {r4, r5, r6, lr} + ldr r0, _0816B9E0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _0816B9E4 + ldrb r4, [r5, #5] + bl sub_0816B334 + strb r0, [r5, #5] + bl sub_0816B370 + ldrb r0, [r5, #5] + cmp r4, r0 + beq _0816B9BE + ldrb r1, [r5, #5] + ldrb r0, [r5, #4] + ldrh r2, [r5, #2] + adds r0, r0, r2 + cmp r1, r0 + bge _0816B9BE + cmp r2, #0 + beq _0816B9BE + subs r0, r2, #1 + strh r0, [r5, #2] +_0816B9BE: + adds r0, r6, #0 + bl sub_0816B2E4 + bl sub_08196F98 + ldr r0, _0816B9E4 + ldrb r0, [r0, #5] + bl sub_081D1340 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816B9E8 + adds r0, r6, #0 + bl sub_0816B41C + b _0816B9EE + .align 2, 0 +_0816B9E0: .4byte sub_0816B7A4 +_0816B9E4: .4byte gUnknown_203B984 +_0816B9E8: + adds r0, r6, #0 + bl sub_080A8964 +_0816B9EE: + bl sub_080AE99C + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0816B988 + + thumb_func_start sub_0816B9F8 +sub_0816B9F8: @ 0x0816B9F8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816BA0C + ldr r2, _0816BA10 + bl sub_081976D0 + pop {r0} + bx r0 + .align 2, 0 +_0816BA0C: .4byte gUnknown_85C9472 +_0816BA10: .4byte sub_0816BA14 + thumb_func_end sub_0816B9F8 + + thumb_func_start sub_0816BA14 +sub_0816BA14: @ 0x0816BA14 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + bl sub_081D13B4 + movs r0, #0 + movs r1, #0 + bl sub_08197028 + adds r0, r4, #0 + bl sub_0816B41C + movs r0, #0 + bl sub_08199654 + ldr r1, _0816BA4C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816BA50 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BA4C: .4byte gUnknown_3005B60 +_0816BA50: .4byte sub_0816B488 + thumb_func_end sub_0816BA14 + + thumb_func_start sub_0816BA54 +sub_0816BA54: @ 0x0816BA54 + push {r4, lr} + ldr r4, _0816BA8C + movs r0, #0xce + lsls r0, r0, #3 + bl sub_08000BDC + str r0, [r4] + movs r1, #0xcc + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0xff + movs r2, #6 + bl memset + ldr r0, [r4] + ldr r1, _0816BA90 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r4] + ldr r1, _0816BA94 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BA8C: .4byte gUnknown_203B990 +_0816BA90: .4byte 0x00000666 +_0816BA94: .4byte 0x00000667 + thumb_func_end sub_0816BA54 + + thumb_func_start sub_0816BA98 +sub_0816BA98: @ 0x0816BA98 + push {r4, lr} + movs r4, #0 +_0816BA9C: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0816BB04 + adds r4, #1 + cmp r4, #5 + bls _0816BA9C + ldr r0, _0816BAB8 + ldr r0, [r0] + bl sub_08000BF0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BAB8: .4byte gUnknown_203B990 + thumb_func_end sub_0816BA98 + + thumb_func_start sub_0816BABC +sub_0816BABC: @ 0x0816BABC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0816BAFC + movs r3, #0xcc + lsls r3, r3, #3 + adds r1, r2, r3 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _0816BAF4 + lsls r0, r2, #3 + ldr r1, _0816BB00 + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r2, #0x85 + lsls r2, r2, #2 + movs r1, #0 + movs r3, #0xe + bl sub_08197F44 + movs r0, #0 + bl sub_08199654 +_0816BAF4: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0816BAFC: .4byte gUnknown_203B990 +_0816BB00: .4byte gUnknown_85C0C40 + thumb_func_end sub_0816BABC + + thumb_func_start sub_0816BB04 +sub_0816BB04: @ 0x0816BB04 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0816BB40 + movs r2, #0xcc + lsls r2, r2, #3 + adds r0, r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _0816BB38 + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003774 + movs r0, #0 + bl sub_08199654 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] +_0816BB38: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BB40: .4byte gUnknown_203B990 + thumb_func_end sub_0816BB04 + + thumb_func_start sub_0816BB44 +sub_0816BB44: @ 0x0816BB44 + push {r4, r5, r6, lr} + movs r6, #0 + ldr r0, _0816BBF0 + ldrb r0, [r0, #5] + subs r0, #1 + cmp r6, r0 + bge _0816BB98 + ldr r5, _0816BBF4 +_0816BB54: + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + movs r0, #0xcc + lsls r0, r0, #1 + adds r4, r4, r0 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _0816BBF8 + ldr r1, [r1] + lsls r2, r6, #2 + adds r1, r1, r2 + movs r2, #0x93 + lsls r2, r2, #3 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_0816BC08 + ldr r0, [r5] + lsls r2, r6, #3 + adds r1, r0, r2 + adds r4, r0, r4 + str r4, [r1] + adds r0, #4 + adds r0, r0, r2 + str r6, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0816BBF0 + ldrb r0, [r0, #5] + subs r0, #1 + cmp r6, r0 + blt _0816BB54 +_0816BB98: + ldr r5, _0816BBF4 + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + movs r3, #0xcc + lsls r3, r3, #1 + adds r4, r4, r3 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _0816BBFC + bl sub_080088B8 + ldr r0, [r5] + lsls r2, r6, #3 + adds r1, r0, r2 + adds r4, r0, r4 + str r4, [r1] + adds r0, #4 + adds r0, r0, r2 + movs r1, #2 + rsbs r1, r1, #0 + str r1, [r0] + ldr r4, _0816BC00 + adds r1, r4, #0 + ldr r0, _0816BC04 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + movs r0, #0 + bl sub_0816BABC + strb r0, [r4, #0x10] + ldr r1, _0816BBF0 + ldrb r0, [r1, #5] + strh r0, [r4, #0xc] + ldr r0, [r5] + str r0, [r4] + ldrb r0, [r1, #4] + strh r0, [r4, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816BBF0: .4byte gUnknown_203B984 +_0816BBF4: .4byte gUnknown_203B990 +_0816BBF8: .4byte gUnknown_3005AEC +_0816BBFC: .4byte gUnknown_85C93C8 +_0816BC00: .4byte gUnknown_3006050 +_0816BC04: .4byte gUnknown_85C0C28 + thumb_func_end sub_0816BB44 + + thumb_func_start sub_0816BC08 +sub_0816BC08: @ 0x0816BC08 + push {lr} + adds r2, r0, #0 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + adds r1, r2, #0 + bl sub_080D5EC8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816BC08 + + thumb_func_start sub_0816BC1C +sub_0816BC1C: @ 0x0816BC1C + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _0816BC2E + movs r0, #5 + bl sub_080A306C +_0816BC2E: + ldr r0, _0816BC60 + ldr r0, [r0] + ldr r1, _0816BC64 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0816BC78 + bl sub_0816BEFC + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0816BC6C + ldr r0, _0816BC68 + ldr r0, [r0] + lsls r1, r4, #2 + adds r0, r0, r1 + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0816BE94 + b _0816BC72 + .align 2, 0 +_0816BC60: .4byte gUnknown_203B990 +_0816BC64: .4byte 0x00000666 +_0816BC68: .4byte gUnknown_3005AEC +_0816BC6C: + ldr r0, _0816BC80 + bl sub_0816BE94 +_0816BC72: + adds r0, r4, #0 + bl sub_0816BD24 +_0816BC78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BC80: .4byte 0x0000FFFF + thumb_func_end sub_0816BC1C + + thumb_func_start sub_0816BC84 +sub_0816BC84: @ 0x0816BC84 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0816BD06 + ldr r0, _0816BCBC + ldr r0, [r0] + ldr r1, _0816BCC0 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0xff + beq _0816BCCE + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0816BCC4 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl sub_0816BE14 + b _0816BCCE + .align 2, 0 +_0816BCBC: .4byte gUnknown_203B990 +_0816BCC0: .4byte 0x00000666 +_0816BCC4: + adds r0, r5, #0 + movs r1, #0xff + movs r2, #0xff + bl sub_0816BE14 +_0816BCCE: + ldr r0, _0816BD10 + ldr r1, _0816BD14 + ldr r1, [r1] + lsls r2, r4, #2 + adds r1, r1, r2 + ldr r2, _0816BD18 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _0816BD1C + ldr r1, _0816BD20 + adds r0, r4, #0 + bl sub_08008BCC + str r5, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0x50 + bl sub_0800449C +_0816BD06: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816BD10: .4byte gUnknown_2021C40 +_0816BD14: .4byte gUnknown_3005AEC +_0816BD18: .4byte 0x0000049A +_0816BD1C: .4byte gUnknown_2021C7C +_0816BD20: .4byte gUnknown_85C943C + thumb_func_end sub_0816BC84 + + thumb_func_start sub_0816BD24 +sub_0816BD24: @ 0x0816BD24 + push {r4, r5, lr} + sub sp, #0xc + adds r1, r0, #0 + ldr r0, _0816BD54 + ldr r0, [r0] + ldr r2, _0816BD58 + adds r0, r0, r2 + ldrb r5, [r0] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0816BD60 + ldr r0, _0816BD5C + ldr r0, [r0] + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D6D40 + b _0816BD66 + .align 2, 0 +_0816BD54: .4byte gUnknown_203B990 +_0816BD58: .4byte 0x00000661 +_0816BD5C: .4byte gUnknown_3005AEC +_0816BD60: + ldr r0, _0816BD90 + bl sub_0816C070 +_0816BD66: + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816BD90: .4byte 0x0000FFFF + thumb_func_end sub_0816BD24 + + thumb_func_start sub_0816BD94 +sub_0816BD94: @ 0x0816BD94 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0816BDC8 + ldrb r0, [r4, #9] + cmp r0, #0xff + bne _0816BDC0 + ldrb r0, [r4, #5] + ldrb r1, [r4, #4] + subs r0, r0, r1 + str r0, [sp] + ldr r0, _0816BDCC + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r4, #2 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xb0 + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + strb r0, [r4, #9] +_0816BDC0: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BDC8: .4byte gUnknown_203B984 +_0816BDCC: .4byte 0x000013F8 + thumb_func_end sub_0816BD94 + + thumb_func_start sub_0816BDD0 +sub_0816BDD0: @ 0x0816BDD0 + push {r4, lr} + ldr r4, _0816BDE8 + ldrb r0, [r4, #9] + cmp r0, #0xff + beq _0816BDE2 + bl sub_081AF2F8 + movs r0, #0xff + strb r0, [r4, #9] +_0816BDE2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816BDE8: .4byte gUnknown_203B984 + thumb_func_end sub_0816BDD0 + + thumb_func_start sub_0816BDEC +sub_0816BDEC: @ 0x0816BDEC + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_081AE564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0816BE14 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0816BDEC + + thumb_func_start sub_0816BE14 +sub_0816BE14: @ 0x0816BE14 + push {r4, r5, r6, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _0816BE60 + ldr r0, [r0] + movs r3, #0xcc + lsls r3, r3, #3 + adds r0, r0, r3 + ldrb r5, [r0] + cmp r1, #0xff + bne _0816BE64 + movs r0, #1 + movs r1, #0 + bl sub_0800629C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp] + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0 + adds r3, r6, #0 + bl sub_08003A34 + b _0816BE84 + .align 2, 0 +_0816BE60: .4byte gUnknown_203B990 +_0816BE64: + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0816BE8C + str r0, [sp, #8] + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, _0816BE90 + str r0, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + adds r3, r6, #0 + bl sub_08199B84 +_0816BE84: + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816BE8C: .4byte gUnknown_85C0C70 +_0816BE90: .4byte gUnknown_85C9421 + thumb_func_end sub_0816BE14 + + thumb_func_start sub_0816BE94 +sub_0816BE94: @ 0x0816BE94 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0816BEEC + ldr r0, [r0] + ldr r1, _0816BEF0 + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + bne _0816BEE6 + ldr r4, _0816BEF4 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081AFB48 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _0816BEE6 + strb r2, [r5] + ldr r0, _0816BEF8 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + movs r0, #0x18 + strh r0, [r1, #0x24] + movs r0, #0x50 + strh r0, [r1, #0x26] +_0816BEE6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816BEEC: .4byte gUnknown_203B990 +_0816BEF0: .4byte 0x00000667 +_0816BEF4: .4byte 0x000013F6 +_0816BEF8: .4byte gUnknown_20205AC + thumb_func_end sub_0816BE94 + + thumb_func_start sub_0816BEFC +sub_0816BEFC: @ 0x0816BEFC + push {r4, r5, lr} + ldr r0, _0816BF34 + ldr r0, [r0] + ldr r1, _0816BF38 + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + beq _0816BF2E + ldr r4, _0816BF3C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0816BF40 + adds r0, r0, r1 + bl sub_08006E00 + movs r0, #0xff + strb r0, [r5] +_0816BF2E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816BF34: .4byte gUnknown_203B990 +_0816BF38: .4byte 0x00000667 +_0816BF3C: .4byte 0x000013F6 +_0816BF40: .4byte gUnknown_20205AC + thumb_func_end sub_0816BEFC + + thumb_func_start sub_0816BF44 +sub_0816BF44: @ 0x0816BF44 + push {lr} + sub sp, #4 + bl sub_080D669C + ldr r0, _0816BF6C + ldr r0, [r0] + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r2, _0816BF70 + adds r3, r2, #1 + movs r1, #8 + str r1, [sp] + movs r1, #0x32 + bl sub_08122218 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_0816BF6C: .4byte gUnknown_3005AEC +_0816BF70: .4byte gUnknown_203B988 + thumb_func_end sub_0816BF44 + + thumb_func_start sub_0816BF74 +sub_0816BF74: @ 0x0816BF74 + push {lr} + ldr r0, _0816BF88 + subs r1, r0, #2 + ldrb r2, [r1, #4] + ldrb r3, [r1, #5] + bl sub_08122268 + pop {r0} + bx r0 + .align 2, 0 +_0816BF88: .4byte gUnknown_203B986 + thumb_func_end sub_0816BF74 + + thumb_func_start sub_0816BF8C +sub_0816BF8C: @ 0x0816BF8C + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816BFD4 + adds r6, r0, r1 + movs r4, #0 +_0816BFA0: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0816BABC + adds r4, #1 + cmp r4, #3 + bls _0816BFA0 + movs r0, #6 + ldrsh r3, [r6, r0] + cmp r3, #0 + bne _0816BFE4 + ldr r0, _0816BFD8 + ldr r0, [r0] + ldr r1, _0816BFDC + adds r0, r0, r1 + ldrb r0, [r0] + ldr r2, _0816BFE0 + movs r1, #2 + str r1, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + b _0816C002 + .align 2, 0 +_0816BFD4: .4byte gUnknown_3005B68 +_0816BFD8: .4byte gUnknown_203B990 +_0816BFDC: .4byte 0x00000663 +_0816BFE0: .4byte gUnknown_85CA8C7 +_0816BFE4: + ldr r0, _0816C050 + ldr r0, [r0] + ldr r1, _0816C054 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r2, _0816C058 + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C +_0816C002: + ldr r0, _0816C050 + ldr r0, [r0] + ldr r1, _0816C05C + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 + bl sub_0816BF44 + bl sub_0816BF74 + bl sub_0816BB44 + ldr r0, _0816C060 + ldr r2, _0816C064 + ldrh r1, [r2, #2] + ldrh r2, [r2] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0xa] + bl sub_0816BD94 + movs r0, #0 + bl sub_08199654 + ldr r1, _0816C068 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816C06C + str r1, [r0] + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C050: .4byte gUnknown_203B990 +_0816C054: .4byte 0x00000663 +_0816C058: .4byte gUnknown_85CA8D1 +_0816C05C: .4byte 0x00000662 +_0816C060: .4byte gUnknown_3006050 +_0816C064: .4byte gUnknown_203B984 +_0816C068: .4byte gUnknown_3005B60 +_0816C06C: .4byte sub_0816C154 + thumb_func_end sub_0816BF8C + + thumb_func_start sub_0816C070 +sub_0816C070: @ 0x0816C070 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r2, _0816C088 + adds r0, r1, r2 + cmp r0, #8 + bhi _0816C0FC + lsls r0, r0, #2 + ldr r1, _0816C08C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816C088: .4byte 0xFFFF0009 +_0816C08C: .4byte _0816C090 +_0816C090: @ jump table + .4byte _0816C0F4 @ case 0 + .4byte _0816C0EC @ case 1 + .4byte _0816C0E4 @ case 2 + .4byte _0816C0DC @ case 3 + .4byte _0816C0D4 @ case 4 + .4byte _0816C0CC @ case 5 + .4byte _0816C0C4 @ case 6 + .4byte _0816C0BC @ case 7 + .4byte _0816C0B4 @ case 8 +_0816C0B4: + ldr r0, _0816C0B8 + b _0816C102 + .align 2, 0 +_0816C0B8: .4byte gUnknown_85C9423 +_0816C0BC: + ldr r0, _0816C0C0 + b _0816C102 + .align 2, 0 +_0816C0C0: .4byte gUnknown_85CA938 +_0816C0C4: + ldr r0, _0816C0C8 + b _0816C102 + .align 2, 0 +_0816C0C8: .4byte gUnknown_85CA949 +_0816C0CC: + ldr r0, _0816C0D0 + b _0816C102 + .align 2, 0 +_0816C0D0: .4byte gUnknown_85C9523 +_0816C0D4: + ldr r0, _0816C0D8 + b _0816C102 + .align 2, 0 +_0816C0D8: .4byte gUnknown_85C9532 +_0816C0DC: + ldr r0, _0816C0E0 + b _0816C102 + .align 2, 0 +_0816C0E0: .4byte gUnknown_85CA925 +_0816C0E4: + ldr r0, _0816C0E8 + b _0816C102 + .align 2, 0 +_0816C0E8: .4byte gUnknown_85C9506 +_0816C0EC: + ldr r0, _0816C0F0 + b _0816C102 + .align 2, 0 +_0816C0F0: .4byte gUnknown_85C9540 +_0816C0F4: + ldr r0, _0816C0F8 + b _0816C102 + .align 2, 0 +_0816C0F8: .4byte gUnknown_85C947F +_0816C0FC: + adds r0, r1, #0 + bl sub_080D6D40 +_0816C102: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0816C070 + + thumb_func_start sub_0816C108 +sub_0816C108: @ 0x0816C108 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + ldr r0, _0816C148 + ldr r0, [r0] + ldr r1, _0816C14C + adds r0, r0, r1 + ldrb r5, [r0] + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r4, _0816C150 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08008BCC + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C148: .4byte gUnknown_203B990 +_0816C14C: .4byte 0x00000661 +_0816C150: .4byte gUnknown_2021C7C + thumb_func_end sub_0816C108 + + thumb_func_start sub_0816C154 +sub_0816C154: @ 0x0816C154 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816C198 + adds r4, r0, r1 + ldr r0, _0816C19C + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0816C1A4 + ldrb r0, [r4, #0xa] + ldr r1, _0816C1A0 + subs r4, r1, #2 + adds r2, r4, #0 + bl sub_081AE538 + ldrh r1, [r4, #2] + ldrh r0, [r4] + adds r1, r1, r0 + ldrb r0, [r4, #5] + subs r0, #1 + cmp r1, r0 + beq _0816C1E6 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_0816C268 + b _0816C1E6 + .align 2, 0 +_0816C198: .4byte gUnknown_3005B68 +_0816C19C: .4byte gUnknown_3002360 +_0816C1A0: .4byte gUnknown_203B986 +_0816C1A4: + ldrb r0, [r4, #0xa] + bl sub_081AE2DC + adds r6, r0, #0 + ldrb r0, [r4, #0xa] + ldr r1, _0816C1C8 + subs r2, r1, #2 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _0816C1CC + adds r0, #1 + cmp r6, r0 + bne _0816C1DA + b _0816C1E6 + .align 2, 0 +_0816C1C8: .4byte gUnknown_203B986 +_0816C1CC: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_0816C1EC + b _0816C1E6 +_0816C1DA: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_0816C534 +_0816C1E6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0816C154 + + thumb_func_start sub_0816C1EC +sub_0816C1EC: @ 0x0816C1EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _0816C23C + adds r4, r4, r0 + bl sub_0816BEFC + bl sub_0816BDD0 + ldrb r0, [r4, #0xa] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldr r0, _0816C240 + ldr r0, [r0] + movs r1, #0xcd + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #7 + bl sub_081223BC + bl sub_0816BA98 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0816C244 + adds r0, r5, #0 + movs r1, #0 + bl sub_0816AFA8 + b _0816C24C + .align 2, 0 +_0816C23C: .4byte gUnknown_3005B68 +_0816C240: .4byte gUnknown_203B990 +_0816C244: + adds r0, r5, #0 + movs r1, #2 + bl sub_0816AFA8 +_0816C24C: + ldr r0, _0816C260 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816C264 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816C260: .4byte gUnknown_3005B60 +_0816C264: .4byte sub_0816B06C + thumb_func_end sub_0816C1EC + + thumb_func_start sub_0816C268 +sub_0816C268: @ 0x0816C268 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _0816C2F4 + mov r8, r0 + adds r1, r4, #0 + add r1, r8 + mov sb, r1 + ldrb r0, [r1, #0xa] + movs r1, #0x10 + movs r2, #1 + bl sub_081AEE34 + ldr r6, _0816C2F8 + ldr r2, [r6] + ldr r1, _0816C2FC + ldrb r0, [r1] + ldrb r1, [r1, #2] + adds r0, r0, r1 + ldr r5, _0816C300 + adds r2, r2, r5 + strb r0, [r2] + mov r1, sb + ldrb r0, [r1, #0xa] + movs r1, #0 + movs r2, #0 + bl sub_0816BDEC + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_0816C4A8 + ldr r0, _0816C304 + ldr r1, [r0] + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #0x93 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _0816C308 + bl sub_080D5EC8 + ldr r0, _0816C30C + bl sub_0816C070 + bl sub_0816C108 + movs r1, #8 + rsbs r1, r1, #0 + add r8, r1 + add r4, r8 + ldr r0, _0816C310 + str r0, [r4] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C2F4: .4byte gUnknown_3005B68 +_0816C2F8: .4byte gUnknown_203B990 +_0816C2FC: .4byte gUnknown_203B984 +_0816C300: .4byte 0x00000666 +_0816C304: .4byte gUnknown_3005AEC +_0816C308: .4byte gUnknown_2021C40 +_0816C30C: .4byte 0x0000FFF7 +_0816C310: .4byte sub_0816C314 + thumb_func_end sub_0816C268 + + thumb_func_start sub_0816C314 +sub_0816C314: @ 0x0816C314 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816C33C + adds r4, r0, r1 + ldr r7, _0816C340 + ldrh r1, [r7, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0816C348 + ldrb r0, [r4, #0xa] + ldr r1, _0816C344 + subs r2, r1, #2 + bl sub_081AE538 + b _0816C396 + .align 2, 0 +_0816C33C: .4byte gUnknown_3005B68 +_0816C340: .4byte gUnknown_3002360 +_0816C344: .4byte gUnknown_203B986 +_0816C348: + ldrb r0, [r4, #0xa] + bl sub_081AE2DC + adds r6, r0, #0 + ldrb r0, [r4, #0xa] + ldr r1, _0816C384 + subs r4, r1, #2 + adds r2, r4, #0 + bl sub_081AE538 + ldr r0, _0816C388 + ldr r0, [r0] + movs r1, #0xcd + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #7 + movs r2, #0 + bl sub_08122408 + ldrb r0, [r4] + bl sub_0816C4A8 + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _0816C38C + adds r0, #1 + cmp r6, r0 + bne _0816C3AA + b _0816C3B2 + .align 2, 0 +_0816C384: .4byte gUnknown_203B986 +_0816C388: .4byte gUnknown_203B990 +_0816C38C: + ldrh r1, [r7, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816C3A0 +_0816C396: + adds r0, r5, #0 + movs r1, #0 + bl sub_0816C3B8 + b _0816C3B2 +_0816C3A0: + adds r0, r5, #0 + movs r1, #1 + bl sub_0816C3B8 + b _0816C3B2 +_0816C3AA: + adds r0, r5, #0 + movs r1, #0 + bl sub_0816C3B8 +_0816C3B2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0816C314 + + thumb_func_start sub_0816C3B8 +sub_0816C3B8: @ 0x0816C3B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0816C488 + adds r0, r0, r1 + mov r8, r0 + ldr r4, _0816C48C + ldrh r0, [r4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #5 + bl sub_080A306C + mov r2, r8 + ldrb r0, [r2, #0xa] + adds r1, r4, #2 + adds r2, r4, #0 + bl sub_081AE3A0 + cmp r5, #0 + bne _0816C422 + ldr r1, _0816C490 + ldr r0, [r1] + ldr r2, _0816C494 + adds r0, r0, r2 + ldrb r2, [r0] + adds r4, r1, #0 + cmp r2, r6 + beq _0816C43A + subs r0, r6, #1 + cmp r2, r0 + beq _0816C422 + ldr r0, _0816C498 + ldr r0, [r0] + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r2, #0 + adds r2, r6, #0 + bl sub_080D6844 + bl sub_0816BB44 +_0816C422: + ldr r0, _0816C490 + ldr r1, [r0] + ldr r2, _0816C494 + adds r1, r1, r2 + ldrb r1, [r1] + adds r4, r0, #0 + cmp r1, r6 + bhs _0816C43A + ldr r1, _0816C48C + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_0816C43A: + ldr r0, [r4] + movs r1, #0xcd + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #7 + movs r2, #1 + bl sub_08122408 + ldr r0, [r4] + ldr r2, _0816C494 + adds r0, r0, r2 + movs r1, #0xff + strb r1, [r0] + ldr r0, _0816C49C + ldr r2, _0816C48C + ldrh r1, [r2, #2] + ldrh r2, [r2] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0xa] + movs r0, #0 + bl sub_08199654 + ldr r1, _0816C4A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816C4A4 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816C488: .4byte gUnknown_3005B68 +_0816C48C: .4byte gUnknown_203B984 +_0816C490: .4byte gUnknown_203B990 +_0816C494: .4byte 0x00000666 +_0816C498: .4byte gUnknown_3005AEC +_0816C49C: .4byte gUnknown_3006050 +_0816C4A0: .4byte gUnknown_3005B60 +_0816C4A4: .4byte sub_0816C154 + thumb_func_end sub_0816C3B8 + + thumb_func_start sub_0816C4A8 +sub_0816C4A8: @ 0x0816C4A8 + push {lr} + adds r3, r0, #0 + lsls r3, r3, #0x18 + ldr r0, _0816C4D0 + ldr r0, [r0] + movs r1, #0xcd + lsls r1, r1, #3 + adds r0, r0, r1 + lsrs r3, r3, #4 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r3, r3, r1 + lsrs r3, r3, #0x10 + movs r1, #7 + movs r2, #0x80 + bl sub_08122454 + pop {r0} + bx r0 + .align 2, 0 +_0816C4D0: .4byte gUnknown_203B990 + thumb_func_end sub_0816C4A8 + + thumb_func_start sub_0816C4D4 +sub_0816C4D4: @ 0x0816C4D4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + adds r5, r0, #0 + adds r6, r3, #0 + ldr r4, [sp, #0x20] + ldr r3, [sp, #0x24] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0816C528 + bl sub_080089D8 + ldr r0, _0816C52C + mov r8, r0 + ldr r1, _0816C530 + bl sub_08008BCC + str r4, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + mov r2, r8 + adds r3, r6, #0 + bl sub_0800449C + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C528: .4byte gUnknown_2021C40 +_0816C52C: .4byte gUnknown_2021C7C +_0816C530: .4byte gUnknown_85C943C + thumb_func_end sub_0816C4D4 + + thumb_func_start sub_0816C534 +sub_0816C534: @ 0x0816C534 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816C57C + adds r6, r0, r1 + ldr r1, _0816C580 + ldrh r0, [r1, #2] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0816BDD0 + movs r0, #1 + strh r0, [r6, #4] + movs r1, #6 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0816C5B0 + ldr r0, _0816C584 + ldr r1, [r0] + lsls r0, r4, #2 + adds r1, r1, r0 + ldr r2, _0816C588 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #1 + bne _0816C58C + adds r0, r5, #0 + bl sub_0816C70C + b _0816C616 + .align 2, 0 +_0816C57C: .4byte gUnknown_3005B68 +_0816C580: .4byte gUnknown_203B984 +_0816C584: .4byte gUnknown_3005AEC +_0816C588: .4byte 0x0000049A +_0816C58C: + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrh r0, [r0] + ldr r1, _0816C5A8 + bl sub_080D5EC8 + ldr r0, _0816C5AC + bl sub_0816C070 + bl sub_0816C108 + b _0816C5EC + .align 2, 0 +_0816C5A8: .4byte gUnknown_2021C40 +_0816C5AC: .4byte 0x0000FFFE +_0816C5B0: + ldr r0, _0816C5CC + ldr r1, [r0] + lsls r0, r4, #2 + adds r1, r1, r0 + ldr r2, _0816C5D0 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #1 + bne _0816C5D4 + adds r0, r5, #0 + bl sub_0816C7C8 + b _0816C616 + .align 2, 0 +_0816C5CC: .4byte gUnknown_3005AEC +_0816C5D0: .4byte 0x0000049A +_0816C5D4: + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrh r0, [r0] + ldr r1, _0816C620 + bl sub_080D5EC8 + ldr r0, _0816C624 + bl sub_0816C070 + bl sub_0816C108 +_0816C5EC: + movs r0, #4 + bl sub_0816BABC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #4] + movs r2, #2 + str r2, [sp] + movs r2, #3 + str r2, [sp, #4] + movs r2, #2 + movs r3, #8 + bl sub_0816C4D4 + ldr r1, _0816C628 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816C62C + str r1, [r0] +_0816C616: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C620: .4byte gUnknown_2021C40 +_0816C624: .4byte 0x0000FFFC +_0816C628: .4byte gUnknown_3005B60 +_0816C62C: .4byte sub_0816C630 + thumb_func_end sub_0816C534 + + thumb_func_start sub_0816C630 +sub_0816C630: @ 0x0816C630 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _0816C68C + adds r5, r0, r1 + ldr r0, _0816C690 + ldrh r2, [r0, #2] + ldrh r0, [r0] + adds r2, r2, r0 + lsls r2, r2, #0x10 + adds r0, r5, #4 + ldr r7, _0816C694 + ldr r1, [r7] + lsrs r6, r2, #0xe + adds r1, r1, r6 + ldr r2, _0816C698 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816C69C + movs r0, #4 + bl sub_0816BABC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #4] + movs r2, #2 + str r2, [sp] + movs r2, #3 + str r2, [sp, #4] + movs r2, #2 + movs r3, #8 + bl sub_0816C4D4 + b _0816C6FE + .align 2, 0 +_0816C68C: .4byte gUnknown_3005B68 +_0816C690: .4byte gUnknown_203B984 +_0816C694: .4byte gUnknown_3005AEC +_0816C698: .4byte 0x0000049A +_0816C69C: + ldr r0, _0816C6C4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816C6D0 + movs r0, #5 + bl sub_080A306C + movs r0, #4 + bl sub_0816BB04 + movs r1, #6 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0816C6C8 + adds r0, r4, #0 + bl sub_0816C70C + b _0816C6FE + .align 2, 0 +_0816C6C4: .4byte gUnknown_3002360 +_0816C6C8: + adds r0, r4, #0 + bl sub_0816C7C8 + b _0816C6FE +_0816C6D0: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0816C6FE + movs r0, #5 + bl sub_080A306C + movs r0, #4 + bl sub_0816BB04 + ldr r0, [r7] + adds r0, r0, r6 + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_0816C070 + bl sub_0816C108 + mov r0, r8 + bl sub_0816C9D0 +_0816C6FE: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816C630 + + thumb_func_start sub_0816C70C +sub_0816C70C: @ 0x0816C70C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r6, r1, #3 + ldr r0, _0816C780 + mov r8, r0 + adds r4, r6, r0 + ldr r0, _0816C784 + ldrh r1, [r0, #2] + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + ldr r7, _0816C788 + ldr r0, [r7] + lsrs r5, r1, #0xe + adds r0, r0, r5 + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r4, #4] + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0816C79C + ldr r0, [r7] + adds r0, r0, r5 + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r1, _0816C78C + bl sub_080D5EC8 + ldr r0, _0816C790 + movs r2, #4 + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _0816C794 + bl sub_0816C070 + bl sub_0816C108 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _0816C798 + b _0816C7B2 + .align 2, 0 +_0816C780: .4byte gUnknown_3005B68 +_0816C784: .4byte gUnknown_203B984 +_0816C788: .4byte gUnknown_3005AEC +_0816C78C: .4byte gUnknown_2021C40 +_0816C790: .4byte gUnknown_2021C54 +_0816C794: .4byte 0x0000FFFD +_0816C798: .4byte sub_0816C914 +_0816C79C: + movs r0, #0 + strh r0, [r4, #4] + ldr r0, _0816C7C0 + bl sub_0816C070 + bl sub_0816C108 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _0816C7C4 +_0816C7B2: + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816C7C0: .4byte 0x0000FFFA +_0816C7C4: .4byte sub_0816C984 + thumb_func_end sub_0816C70C + + thumb_func_start sub_0816C7C8 +sub_0816C7C8: @ 0x0816C7C8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + mov r8, r0 + ldr r0, _0816C854 + mov sb, r0 + mov r7, r8 + add r7, sb + ldr r0, _0816C858 + ldrh r1, [r0, #2] + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + ldr r6, _0816C85C + ldr r0, [r6] + lsrs r4, r1, #0xe + adds r0, r0, r4 + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816C874 + ldr r0, [r6] + adds r0, r0, r4 + movs r2, #0x93 + lsls r2, r2, #3 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r1, _0816C860 + bl sub_080D5EC8 + ldr r0, _0816C864 + movs r2, #4 + ldrsh r1, [r7, r2] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r0, _0816C868 + bl sub_0816C070 + bl sub_0816C108 + ldr r1, _0816C86C + movs r0, #2 + str r0, [sp] + movs r0, #0x85 + lsls r0, r0, #2 + str r0, [sp, #4] + movs r0, #0xe + str r0, [sp, #8] + ldr r0, _0816C870 + str r0, [sp, #0xc] + adds r0, r5, #0 + movs r2, #1 + movs r3, #0 + bl sub_08121F84 + b _0816C88C + .align 2, 0 +_0816C854: .4byte gUnknown_3005B68 +_0816C858: .4byte gUnknown_203B984 +_0816C85C: .4byte gUnknown_3005AEC +_0816C860: .4byte gUnknown_2021C40 +_0816C864: .4byte gUnknown_2021C54 +_0816C868: .4byte 0x0000FFF8 +_0816C86C: .4byte gUnknown_85C0C68 +_0816C870: .4byte gUnknown_85C0C20 +_0816C874: + movs r0, #0 + strh r0, [r7, #4] + ldr r0, _0816C89C + bl sub_0816C070 + bl sub_0816C108 + mov r0, sb + subs r0, #8 + add r0, r8 + ldr r1, _0816C8A0 + str r1, [r0] +_0816C88C: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816C89C: .4byte 0x0000FFF9 +_0816C8A0: .4byte sub_0816C984 + thumb_func_end sub_0816C7C8 + + thumb_func_start sub_0816C8A4 +sub_0816C8A4: @ 0x0816C8A4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0816C8CC + bl sub_0816C070 + bl sub_0816C108 + ldr r1, _0816C8D0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816C8D4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816C8CC: .4byte 0x0000FFFB +_0816C8D0: .4byte gUnknown_3005B60 +_0816C8D4: .4byte sub_0816C914 + thumb_func_end sub_0816C8A4 + + thumb_func_start sub_0816C8D8 +sub_0816C8D8: @ 0x0816C8D8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0816C90C + ldr r2, [r0] + ldr r1, _0816C910 + ldrh r0, [r1, #2] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + movs r0, #0x93 + lsls r0, r0, #3 + adds r2, r2, r0 + ldrh r0, [r2] + bl sub_0816C070 + bl sub_0816C108 + adds r0, r4, #0 + bl sub_0816C9D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816C90C: .4byte gUnknown_3005AEC +_0816C910: .4byte gUnknown_203B984 + thumb_func_end sub_0816C8D8 + + thumb_func_start sub_0816C914 +sub_0816C914: @ 0x0816C914 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0816C974 + adds r5, r0, r1 + ldr r0, _0816C978 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0816C96E + ldr r4, _0816C97C + ldrb r0, [r4, #2] + ldrb r1, [r4] + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #4] + bl sub_080D6660 + ldrb r0, [r5, #0xa] + adds r1, r4, #2 + adds r2, r4, #0 + bl sub_081AE3A0 + bl sub_0816BF44 + bl sub_0816BF74 + bl sub_0816BB44 + ldr r0, _0816C980 + ldrh r1, [r4, #2] + ldrh r2, [r4] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0xa] + adds r0, r6, #0 + bl sub_0816C9D0 +_0816C96E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816C974: .4byte gUnknown_3005B68 +_0816C978: .4byte gUnknown_3002360 +_0816C97C: .4byte gUnknown_203B984 +_0816C980: .4byte gUnknown_3006050 + thumb_func_end sub_0816C914 + + thumb_func_start sub_0816C984 +sub_0816C984: @ 0x0816C984 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816C9C4 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0816C9BC + ldr r0, _0816C9C8 + ldr r2, [r0] + ldr r1, _0816C9CC + ldrh r0, [r1, #2] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + movs r0, #0x93 + lsls r0, r0, #3 + adds r2, r2, r0 + ldrh r0, [r2] + bl sub_0816C070 + bl sub_0816C108 + adds r0, r4, #0 + bl sub_0816C9D0 +_0816C9BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816C9C4: .4byte gUnknown_3002360 +_0816C9C8: .4byte gUnknown_3005AEC +_0816C9CC: .4byte gUnknown_203B984 + thumb_func_end sub_0816C984 + + thumb_func_start sub_0816C9D0 +sub_0816C9D0: @ 0x0816C9D0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0816BD94 + ldr r1, _0816C9F0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816C9F4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816C9F0: .4byte gUnknown_3005B60 +_0816C9F4: .4byte sub_0816C154 + thumb_func_end sub_0816C9D0 + + thumb_func_start sub_0816C9F8 +sub_0816C9F8: @ 0x0816C9F8 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816C9F8 + + thumb_func_start sub_0816CA10 +sub_0816CA10: @ 0x0816CA10 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + ldr r0, _0816CA40 + ldrh r0, [r0, #0x2e] + cmp r0, #0 + beq _0816CA4C + ldr r0, _0816CA44 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816CA4C + ldr r0, _0816CA48 + bl sub_08000540 + b _0816CA5C + .align 2, 0 +_0816CA40: .4byte gUnknown_3002360 +_0816CA44: .4byte gUnknown_2037C74 +_0816CA48: .4byte sub_0816CA64 +_0816CA4C: + ldr r2, _0816CA60 + ldr r1, [r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0816CA5C + adds r0, r1, #1 + str r0, [r2] +_0816CA5C: + pop {r0} + bx r0 + .align 2, 0 +_0816CA60: .4byte gUnknown_3005FE0 + thumb_func_end sub_0816CA10 + + thumb_func_start sub_0816CA64 +sub_0816CA64: @ 0x0816CA64 + push {lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816CA76 + ldr r0, _0816CA7C + bl sub_08000540 +_0816CA76: + pop {r0} + bx r0 + .align 2, 0 +_0816CA7C: .4byte sub_080AA06C + thumb_func_end sub_0816CA64 + + thumb_func_start sub_0816CA80 +sub_0816CA80: @ 0x0816CA80 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _0816CABC + movs r6, #0xc0 + lsls r6, r6, #0x13 + adds r3, r3, r6 + adds r1, r3, #0 + bl LZ77UnCompVram + ldr r0, _0816CAC0 + adds r4, r4, r6 + adds r1, r4, #0 + bl LZ77UnCompVram + ldr r0, _0816CAC4 + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816CABC: .4byte gUnknown_85C0C94 +_0816CAC0: .4byte gUnknown_85C0EF8 +_0816CAC4: .4byte gUnknown_85C0C74 + thumb_func_end sub_0816CA80 + + thumb_func_start sub_0816CAC8 +sub_0816CAC8: @ 0x0816CAC8 + push {lr} + ldr r0, _0816CAD4 + bl GameCubeMultiBoot_HandleSerialInterrupt + pop {r0} + bx r0 + .align 2, 0 +_0816CAD4: .4byte gUnknown_3005FF0 + thumb_func_end sub_0816CAC8 + + thumb_func_start sub_0816CAD8 +sub_0816CAD8: @ 0x0816CAD8 + push {r4, r5, lr} + sub sp, #0x10 + ldr r0, _0816CAF8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r5, r0, r1 + ldrb r4, [r5] + cmp r4, #0x8c + bne _0816CAEC + b _0816CC10 +_0816CAEC: + cmp r4, #0x8c + bgt _0816CAFC + cmp r4, #0 + beq _0816CB04 + b _0816CBCC + .align 2, 0 +_0816CAF8: .4byte gUnknown_3002360 +_0816CAFC: + cmp r4, #0x8d + bne _0816CB02 + b _0816CC3C +_0816CB02: + b _0816CBCC +_0816CB04: + movs r0, #0 + bl sub_080006F0 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _0816CBE8 + adds r0, r2, #0 + strh r0, [r1] + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + str r4, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0816CBEC + add r0, sp, #4 + bl CpuSet + str r4, [sp, #8] + add r0, sp, #8 + movs r1, #0xe0 + lsls r1, r1, #0x13 + ldr r2, _0816CBF0 + bl CpuSet + add r0, sp, #0xc + strh r4, [r0] + ldr r1, _0816CBF4 + ldr r2, _0816CBF8 + bl CpuSet + bl sub_080A133C + movs r1, #0xe0 + lsls r1, r1, #6 + movs r0, #0 + movs r2, #0 + bl sub_0816CA80 + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816CBFC + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r1, #0xe0 + lsls r1, r1, #3 + movs r0, #8 + bl sub_08001144 + movs r0, #1 + bl sub_08001274 + ldr r0, _0816CC00 + bl sub_080006F0 + movs r1, #0x80 + lsls r1, r1, #0x13 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _0816CC04 + bl sub_0800072C + ldr r0, _0816CC08 + bl GameCubeMultiBoot_Init +_0816CBCC: + bl sub_080A12E4 + ldr r0, _0816CC0C + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _0816CC08 + bl GameCubeMultiBoot_Main + b _0816CC84 + .align 2, 0 +_0816CBE8: .4byte 0x00007FFF +_0816CBEC: .4byte 0x05006000 +_0816CBF0: .4byte 0x05000100 +_0816CBF4: .4byte 0x05000002 +_0816CBF8: .4byte 0x010001FF +_0816CBFC: .4byte 0x0000FFFF +_0816CC00: .4byte sub_0816C9F8 +_0816CC04: .4byte sub_0816CAC8 +_0816CC08: .4byte gUnknown_3005FF0 +_0816CC0C: .4byte gUnknown_3002360 +_0816CC10: + ldr r4, _0816CC38 + adds r0, r4, #0 + bl GameCubeMultiBoot_Main + ldrb r0, [r4, #2] + cmp r0, #1 + beq _0816CC84 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0816CC84 + .align 2, 0 +_0816CC38: .4byte gUnknown_3005FF0 +_0816CC3C: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816CC84 + ldr r0, _0816CC64 + movs r1, #0 + bl sub_080A8878 + ldr r0, _0816CC68 + bl sub_08000540 + ldr r1, _0816CC6C + ldrb r0, [r1, #2] + cmp r0, #0 + beq _0816CC70 + adds r0, r1, #0 + bl GameCubeMultiBoot_ExecuteProgram + b _0816CC7A + .align 2, 0 +_0816CC64: .4byte sub_0816CCFC +_0816CC68: .4byte sub_0816CA10 +_0816CC6C: .4byte gUnknown_3005FF0 +_0816CC70: + bl GameCubeMultiBoot_Quit + ldr r0, _0816CC80 + bl sub_0800072C +_0816CC7A: + movs r0, #0 + b _0816CC86 + .align 2, 0 +_0816CC80: .4byte sub_0800B4F4 +_0816CC84: + movs r0, #1 +_0816CC86: + add sp, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0816CAD8 + + thumb_func_start sub_0816CC90 +sub_0816CC90: @ 0x0816CC90 + push {lr} + bl sub_0816CAD8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0816CCDE + bl sub_08153498 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080765E4 + bl sub_08083E04 + bl sub_0815265C + movs r0, #0 + bl sub_0815340C + ldr r0, _0816CCE4 + ldrh r0, [r0] + cmp r0, #0 + beq _0816CCC2 + cmp r0, #2 + bne _0816CCC6 +_0816CCC2: + bl sub_08083DF4 +_0816CCC6: + ldr r0, _0816CCE8 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl SetPokemonCryStereo + ldr r0, _0816CCEC + movs r1, #0xe0 + lsls r1, r1, #9 + bl sub_08000BAC +_0816CCDE: + pop {r0} + bx r0 + .align 2, 0 +_0816CCE4: .4byte gUnknown_3005F50 +_0816CCE8: .4byte gUnknown_3005AF0 +_0816CCEC: .4byte gUnknown_2000000 + thumb_func_end sub_0816CC90 + + thumb_func_start sub_0816CCF0 +sub_0816CCF0: @ 0x0816CCF0 + push {lr} + bl sub_0816CAD8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816CCF0 + + thumb_func_start sub_0816CCFC +sub_0816CCFC: @ 0x0816CCFC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + mov r8, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #0 + bl sub_080006F0 + ldr r4, _0816CEA0 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + strh r1, [r4] + bl sub_0816EEA4 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0x50 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0x18 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0x28 + bl sub_08001144 + ldr r0, _0816CEA4 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0816CEA8 + ldr r1, _0816CEAC + bl LZ77UnCompVram + ldr r1, _0816CEB0 + add r0, sp, #8 + movs r6, #0 + strh r6, [r0] + ldr r4, _0816CEB4 + str r0, [r4] + str r1, [r4, #4] + ldr r5, _0816CEB8 + str r5, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0816CEBC + ldr r1, _0816CEC0 + bl LZ77UnCompVram + ldr r1, _0816CEC4 + add r0, sp, #8 + strh r6, [r0] + str r0, [r4] + str r1, [r4, #4] + str r5, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0816CEC8 + ldr r1, _0816CECC + bl LZ77UnCompVram + ldr r1, _0816CED0 + add r0, sp, #8 + strh r6, [r0] + str r0, [r4] + str r1, [r4, #4] + str r5, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0816CED4 + ldr r1, _0816CED8 + bl LZ77UnCompVram + ldr r1, _0816CEDC + add r0, sp, #8 + strh r6, [r0] + str r0, [r4] + str r1, [r4, #4] + str r5, [r4, #8] + ldr r0, [r4, #8] + ldr r0, _0816CEE0 + movs r5, #0x80 + lsls r5, r5, #2 + movs r1, #0 + adds r2, r5, #0 + bl sub_080A1200 + ldr r1, _0816CEE4 + movs r0, #0xe + bl sub_08001144 + ldr r1, _0816CEE8 + movs r0, #0xc + bl sub_08001144 + ldr r1, _0816CEEC + movs r0, #0xa + bl sub_08001144 + movs r1, #0x90 + lsls r1, r1, #8 + movs r0, #8 + bl sub_08001144 + ldr r0, _0816CEF0 + bl sub_08034388 + ldr r0, _0816CEF4 + bl sub_08034388 + ldr r0, _0816CEF8 + bl sub_080084A8 + ldr r0, _0816CEFC + bl sub_08034388 + ldr r0, _0816CF00 + bl sub_080084A8 + ldr r4, _0816CF04 + movs r3, #0xf0 + lsls r3, r3, #1 + adds r1, r4, r3 + adds r0, r4, #0 + movs r2, #0x10 + bl CpuSet + movs r0, #0xe1 + lsls r0, r0, #1 + adds r1, r4, r0 + adds r0, r4, #0 + movs r2, #0xf + bl CpuSet + movs r3, #0xd2 + lsls r3, r3, #1 + adds r1, r4, r3 + adds r0, r4, #0 + movs r2, #0xe + bl CpuSet + movs r0, #0xc3 + lsls r0, r0, #1 + adds r1, r4, r0 + adds r0, r4, #0 + movs r2, #0xd + bl CpuSet + movs r3, #0xb4 + lsls r3, r3, #1 + adds r1, r4, r3 + adds r0, r4, #0 + movs r2, #0xc + bl CpuSet + movs r0, #0xa5 + lsls r0, r0, #1 + adds r1, r4, r0 + adds r0, r4, #0 + movs r2, #0xb + bl CpuSet + movs r3, #0x96 + lsls r3, r3, #1 + adds r1, r4, r3 + adds r0, r4, #0 + movs r2, #0xa + bl CpuSet + movs r0, #0x78 + movs r1, #0x50 + movs r2, #0 + bl sub_0816FBB0 + movs r1, #0xe + rsbs r1, r1, #0 + movs r0, #0x78 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + movs r0, #0xec + adds r2, r5, #0 + movs r3, #1 + bl sub_0816F5B4 + ldr r2, _0816CF08 + mov r3, r8 + lsls r1, r3, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #8] + ldr r0, _0816CF0C + str r0, [r1] + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816CEA0: .4byte gUnknown_203B994 +_0816CEA4: .4byte gUnknown_85C2468 +_0816CEA8: .4byte gUnknown_85C1878 +_0816CEAC: .4byte 0x06008000 +_0816CEB0: .4byte 0x06008800 +_0816CEB4: .4byte 0x040000D4 +_0816CEB8: .4byte 0x81000400 +_0816CEBC: .4byte gUnknown_85C1C2C +_0816CEC0: .4byte 0x06009000 +_0816CEC4: .4byte 0x06009800 +_0816CEC8: .4byte gUnknown_85C1F60 +_0816CECC: .4byte 0x0600A000 +_0816CED0: .4byte 0x0600A800 +_0816CED4: .4byte gUnknown_85C2250 +_0816CED8: .4byte 0x0600B000 +_0816CEDC: .4byte 0x0600B800 +_0816CEE0: .4byte gUnknown_85C1678 +_0816CEE4: .4byte 0x00009603 +_0816CEE8: .4byte 0x00009402 +_0816CEEC: .4byte 0x00009201 +_0816CEF0: .4byte gUnknown_85C6090 +_0816CEF4: .4byte gUnknown_85C60A0 +_0816CEF8: .4byte gUnknown_85C60B0 +_0816CEFC: .4byte gUnknown_85C5B28 +_0816CF00: .4byte gUnknown_85C5B38 +_0816CF04: .4byte gUnknown_20375B4 +_0816CF08: .4byte gUnknown_3005B60 +_0816CF0C: .4byte sub_0816CF10 + thumb_func_end sub_0816CCFC + + thumb_func_start sub_0816CF10 +sub_0816CF10: @ 0x0816CF10 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r5, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0816CF64 + bl sub_080006F0 + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r1, _0816CF68 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816CF6C + str r1, [r0] + ldr r0, _0816CF70 + str r5, [r0] + movs r0, #0xcf + lsls r0, r0, #1 + bl m4aSongNumStart + bl sub_0800B0E4 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816CF64: .4byte sub_0816C9F8 +_0816CF68: .4byte gUnknown_3005B60 +_0816CF6C: .4byte sub_0816CF74 +_0816CF70: .4byte gUnknown_3005FE0 + thumb_func_end sub_0816CF10 + + thumb_func_start sub_0816CF74 +sub_0816CF74: @ 0x0816CF74 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r5, _0816D068 + ldr r0, [r5] + cmp r0, #0x4c + bne _0816CFA2 + ldr r2, _0816D06C + ldr r1, _0816D070 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #8 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x2e] +_0816CFA2: + ldr r0, [r5] + cmp r0, #0x80 + bne _0816CFB0 + ldr r0, _0816D074 + movs r1, #0 + bl sub_080A8878 +_0816CFB0: + ldr r0, [r5] + cmp r0, #0xfb + bne _0816CFD2 + ldr r2, _0816D06C + ldr r1, _0816D070 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #8 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #0x2e] +_0816CFD2: + ldr r1, [r5] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _0816CFE4 + ldr r0, _0816D078 + movs r1, #0 + bl sub_080A8878 +_0816CFE4: + ldr r1, [r5] + movs r0, #0xb8 + lsls r0, r0, #1 + cmp r1, r0 + bne _0816D004 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #0x70 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x30 + movs r1, #0 + movs r3, #5 + bl sub_0816F5B4 +_0816D004: + ldr r1, [r5] + movs r0, #0xc0 + lsls r0, r0, #1 + cmp r1, r0 + bne _0816D024 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #0x80 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0xc8 + movs r1, #0x3c + movs r3, #9 + bl sub_0816F5B4 +_0816D024: + ldr r0, [r5] + movs r4, #0x8c + lsls r4, r4, #2 + cmp r0, r4 + bne _0816D036 + ldr r0, _0816D07C + movs r1, #0 + bl sub_080A8878 +_0816D036: + ldr r0, [r5] + cmp r0, r4 + bls _0816D05E + ldr r1, _0816D070 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + movs r1, #0x50 + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + movs r1, #0x18 + strh r1, [r0, #0xe] + strh r2, [r0, #0x10] + movs r1, #0x28 + strh r1, [r0, #0x12] + strh r2, [r0, #0x14] + ldr r1, _0816D080 + str r1, [r0] +_0816D05E: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816D068: .4byte gUnknown_3005FE0 +_0816D06C: .4byte gUnknown_20205AC +_0816D070: .4byte gUnknown_3005B60 +_0816D074: .4byte sub_0816EF0C +_0816D078: .4byte sub_0816EFC4 +_0816D07C: .4byte sub_0816D084 +_0816D080: .4byte sub_0816D138 + thumb_func_end sub_0816CF74 + + thumb_func_start sub_0816D084 +sub_0816D084: @ 0x0816D084 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816D0B8 + adds r4, r0, r1 + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0816D0A8 + ldrh r0, [r4, #6] + adds r0, #1 + strh r0, [r4, #6] +_0816D0A8: + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0816D0BC + cmp r0, #1 + beq _0816D0F8 + b _0816D108 + .align 2, 0 +_0816D0B8: .4byte gUnknown_3005B68 +_0816D0BC: + ldr r0, _0816D0F0 + ldr r2, _0816D0F4 + movs r1, #8 + ldrsh r3, [r4, r1] + lsls r3, r3, #1 + adds r1, r3, r2 + ldrb r1, [r1] + adds r2, #1 + adds r3, r3, r2 + ldrh r2, [r4, #6] + ldrb r3, [r3] + adds r2, r2, r3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B0C + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #0xc + strh r0, [r4, #2] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0816D108 + .align 2, 0 +_0816D0F0: .4byte gUnknown_85C5B6C +_0816D0F4: .4byte gUnknown_85C5B84 +_0816D0F8: + ldrh r0, [r4, #2] + subs r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _0816D108 + strh r0, [r4] +_0816D108: + movs r1, #6 + ldrsh r0, [r4, r1] + cmp r0, #0x3c + ble _0816D116 + adds r0, r5, #0 + bl sub_080A8964 +_0816D116: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0816D084 + + thumb_func_start sub_0816D11C +sub_0816D11C: @ 0x0816D11C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x2e] + adds r0, #1 + strh r0, [r1, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _0816D134 + adds r0, r1, #0 + bl sub_08006E00 +_0816D134: + pop {r0} + bx r0 + thumb_func_end sub_0816D11C + + thumb_func_start sub_0816D138 +sub_0816D138: @ 0x0816D138 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r4, r1, #0 + ldr r5, _0816D1DC + ldr r2, [r5] + ldr r0, _0816D1E0 + cmp r2, r0 + bhi _0816D1FC + ldr r0, _0816D1E4 + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0xa + ldrsh r0, [r4, r1] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0xc] + adds r1, r0, r1 + ldr r0, _0816D1E8 + adds r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r4, #0xa] + strh r1, [r4, #0xc] + ldrh r1, [r4, #0xa] + movs r0, #0x1a + bl sub_08001144 + movs r1, #0xe + ldrsh r0, [r4, r1] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x10] + adds r1, r0, r1 + ldr r0, _0816D1EC + adds r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + ldrh r1, [r4, #0xe] + movs r0, #0x16 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x14] + adds r1, r0, r1 + ldr r0, _0816D1F0 + adds r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r4, #0x12] + strh r1, [r4, #0x14] + ldrh r1, [r4, #0x12] + movs r0, #0x12 + bl sub_08001144 + ldr r1, [r5] + movs r0, #0xd0 + lsls r0, r0, #2 + cmp r1, r0 + bne _0816D222 + ldr r0, _0816D1F4 + movs r1, #0x78 + movs r2, #0xa0 + movs r3, #0xa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0816D1F8 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + b _0816D222 + .align 2, 0 +_0816D1DC: .4byte gUnknown_3005FE0 +_0816D1E0: .4byte 0x00000387 +_0816D1E4: .4byte gUnknown_3005B60 +_0816D1E8: .4byte 0xFFFFA000 +_0816D1EC: .4byte 0xFFFF8000 +_0816D1F0: .4byte 0xFFFF4000 +_0816D1F4: .4byte gUnknown_85C6078 +_0816D1F8: .4byte gUnknown_20205AC +_0816D1FC: + ldr r0, _0816D22C + cmp r2, r0 + bls _0816D222 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816D230 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0816D234 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816D238 + str r1, [r0] +_0816D222: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816D22C: .4byte 0x000003EF +_0816D230: .4byte 0x0000FFFF +_0816D234: .4byte gUnknown_3005B60 +_0816D238: .4byte sub_0816D23C + thumb_func_end sub_0816D138 + + thumb_func_start sub_0816D23C +sub_0816D23C: @ 0x0816D23C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0816D260 + ldr r1, [r0] + ldr r0, _0816D264 + cmp r1, r0 + bls _0816D25A + ldr r0, _0816D268 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816D26C + str r0, [r1] +_0816D25A: + pop {r0} + bx r0 + .align 2, 0 +_0816D260: .4byte gUnknown_3005FE0 +_0816D264: .4byte 0x00000402 +_0816D268: .4byte gUnknown_3005B60 +_0816D26C: .4byte sub_0816D270 + thumb_func_end sub_0816D23C + + thumb_func_start sub_0816D270 +sub_0816D270: @ 0x0816D270 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0816EEA4 + movs r0, #0 + bl sub_080006F0 + bl sub_0800668C + bl sub_08008424 + ldr r0, _0816D2B4 + movs r1, #0 + strh r1, [r0] + ldr r0, _0816D2B8 + strh r1, [r0] + ldr r0, _0816D2BC + strh r1, [r0] + movs r0, #1 + bl sub_0817AF24 + ldr r1, _0816D2C0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816D2C4 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816D2B4: .4byte gUnknown_203B9F0 +_0816D2B8: .4byte gUnknown_203B9F2 +_0816D2BC: .4byte gUnknown_203B998 +_0816D2C0: .4byte gUnknown_3005B60 +_0816D2C4: .4byte sub_0816D2C8 + thumb_func_end sub_0816D270 + + thumb_func_start sub_0816D2C8 +sub_0816D2C8: @ 0x0816D2C8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816D2E0 + ldrh r0, [r0] + cmp r0, #0 + bne _0816D2E8 + ldr r0, _0816D2E4 + bl sub_08034388 + b _0816D2EE + .align 2, 0 +_0816D2E0: .4byte gUnknown_203B994 +_0816D2E4: .4byte gUnknown_85D278C +_0816D2E8: + ldr r0, _0816D350 + bl sub_08034388 +_0816D2EE: + ldr r0, _0816D354 + bl sub_08034388 + ldr r0, _0816D358 + bl sub_08034388 + movs r6, #0 + lsls r7, r4, #2 + ldr r5, _0816D35C +_0816D300: + lsls r0, r6, #3 + adds r0, r0, r5 + bl sub_08034388 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _0816D300 + ldr r0, _0816D360 + bl sub_080084A8 + ldr r0, _0816D364 + bl sub_080084A8 + ldr r0, _0816D368 + movs r5, #0x88 + lsls r5, r5, #1 + adds r1, r5, #0 + movs r2, #0x80 + movs r3, #0 + bl sub_08006B0C + ldr r0, _0816D36C + movs r1, #0x90 + lsls r1, r1, #1 + movs r2, #0x6e + movs r3, #1 + bl sub_08006B0C + ldr r0, _0816D370 + ldrh r0, [r0] + cmp r0, #0 + bne _0816D374 + adds r0, r5, #0 + movs r1, #0x64 + bl sub_0817B6F4 + b _0816D37C + .align 2, 0 +_0816D350: .4byte gUnknown_85D279C +_0816D354: .4byte gUnknown_85D27AC +_0816D358: .4byte gUnknown_85D27CC +_0816D35C: .4byte gUnknown_85C5B9C +_0816D360: .4byte gUnknown_85D27DC +_0816D364: .4byte gUnknown_85C5BBC +_0816D368: .4byte gUnknown_85C5C90 +_0816D36C: .4byte gUnknown_85C5C58 +_0816D370: .4byte gUnknown_203B994 +_0816D374: + adds r0, r5, #0 + movs r1, #0x64 + bl sub_0817B74C +_0816D37C: + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _0816D410 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r5, r2, #0 + adds r5, #0x1c + adds r3, r0, r5 + ldr r1, _0816D414 + str r1, [r3] + adds r2, #8 + adds r0, r0, r2 + ldr r1, _0816D418 + str r1, [r0] + ldr r0, _0816D41C + adds r4, r7, r4 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r6, [r4, #0xa] + ldr r0, _0816D420 + movs r1, #0x88 + lsls r1, r1, #1 + movs r2, #0x50 + movs r3, #4 + bl sub_08006B0C + movs r0, #0x40 + rsbs r0, r0, #0 + movs r1, #0x3c + bl sub_0817B884 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0816D424 + str r1, [r0] + strh r6, [r4, #0xc] + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816D428 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0816D42C + bl sub_080006F0 + movs r1, #0x80 + lsls r1, r1, #7 + movs r2, #0x80 + lsls r2, r2, #3 + movs r0, #1 + movs r3, #0x10 + bl sub_0817B29C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #8] + movs r0, #1 + bl sub_0817B010 + ldr r0, _0816D430 + str r0, [r4] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816D410: .4byte gUnknown_20205AC +_0816D414: .4byte sub_0816F7B8 +_0816D418: .4byte gUnknown_85C5E78 +_0816D41C: .4byte gUnknown_3005B60 +_0816D420: .4byte gUnknown_85C5BF4 +_0816D424: .4byte sub_0816F894 +_0816D428: .4byte 0x0000FFFF +_0816D42C: .4byte sub_0816C9F8 +_0816D430: .4byte sub_0816D434 + thumb_func_end sub_0816D2C8 + + thumb_func_start sub_0816D434 +sub_0816D434: @ 0x0816D434 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r5, _0816D594 + ldr r1, [r5] + movs r0, #0xe8 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D460 + ldr r1, _0816D598 + movs r0, #2 + strh r0, [r1] + ldr r1, _0816D59C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_080A8964 +_0816D460: + ldr r1, [r5] + ldr r0, _0816D5A0 + cmp r1, r0 + bls _0816D488 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816D5A4 + str r1, [sp] + movs r1, #8 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0816D59C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816D5A8 + str r1, [r0] +_0816D488: + ldr r1, [r5] + ldr r0, _0816D5AC + ldr r3, _0816D59C + cmp r1, r0 + bne _0816D4AC + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r7, #0xa + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x2e] +_0816D4AC: + ldr r1, [r5] + ldr r0, _0816D5B4 + cmp r1, r0 + bne _0816D4CE + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r7, #0xa + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x2e] +_0816D4CE: + ldr r1, [r5] + ldr r0, _0816D5B8 + cmp r1, r0 + bne _0816D4F0 + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r7, #0xc + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x2e] +_0816D4F0: + ldr r1, [r5] + ldr r0, _0816D5BC + cmp r1, r0 + bne _0816D512 + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r7, #0xa + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #0x2e] +_0816D512: + ldr r1, [r5] + movs r0, #0xc5 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D536 + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r7, #0xa + ldrsh r1, [r0, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strh r1, [r0, #0x2e] +_0816D536: + ldr r1, [r5] + ldr r0, _0816D5C0 + cmp r1, r0 + bne _0816D558 + ldr r2, _0816D5B0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r4, #0xa + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #4 + strh r1, [r0, #0x2e] +_0816D558: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r3 + ldrh r0, [r4, #0xe] + lsls r0, r0, #0x10 + asrs r0, r0, #0x12 + movs r1, #0x7f + ands r0, r1 + movs r1, #0x30 + bl sub_0806EFB8 + ldr r1, _0816D5C4 + strh r0, [r1] + ldrh r2, [r4, #0xe] + movs r7, #0xe + ldrsh r1, [r4, r7] + ldr r0, _0816D5C8 + cmp r1, r0 + bgt _0816D584 + adds r0, r2, #1 + strh r0, [r4, #0xe] +_0816D584: + movs r0, #0 + bl sub_0817B400 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816D594: .4byte gUnknown_3005FE0 +_0816D598: .4byte gUnknown_203B9F4 +_0816D59C: .4byte gUnknown_3005B60 +_0816D5A0: .4byte 0x0000079A +_0816D5A4: .4byte 0x0000FFFF +_0816D5A8: .4byte sub_0816D5CC +_0816D5AC: .4byte 0x00000455 +_0816D5B0: .4byte gUnknown_20205AC +_0816D5B4: .4byte 0x000004BE +_0816D5B8: .4byte 0x00000572 +_0816D5BC: .4byte 0x00000576 +_0816D5C0: .4byte 0x000006BF +_0816D5C4: .4byte gUnknown_203B998 +_0816D5C8: .4byte 0x000001FF + thumb_func_end sub_0816D434 + + thumb_func_start sub_0816D5CC +sub_0816D5CC: @ 0x0816D5CC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0816D5F0 + ldr r1, [r0] + ldr r0, _0816D5F4 + cmp r1, r0 + bls _0816D5EA + ldr r0, _0816D5F8 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816D5FC + str r0, [r1] +_0816D5EA: + pop {r0} + bx r0 + .align 2, 0 +_0816D5F0: .4byte gUnknown_3005FE0 +_0816D5F4: .4byte 0x00000814 +_0816D5F8: .4byte gUnknown_3005B60 +_0816D5FC: .4byte sub_0816D990 + thumb_func_end sub_0816D5CC + + thumb_func_start sub_0816D600 +sub_0816D600: @ 0x0816D600 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + adds r0, #4 + strh r0, [r4, #0x34] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #8 + bls _0816D614 + b _0816D79E +_0816D614: + lsls r0, r0, #2 + ldr r1, _0816D620 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816D620: .4byte _0816D624 +_0816D624: @ jump table + .4byte _0816D648 @ case 0 + .4byte _0816D65E @ case 1 + .4byte _0816D67C @ case 2 + .4byte _0816D6A0 @ case 3 + .4byte _0816D6BC @ case 4 + .4byte _0816D6DE @ case 5 + .4byte _0816D6F6 @ case 6 + .4byte _0816D752 @ case 7 + .4byte _0816D780 @ case 8 +_0816D648: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb3 + bgt _0816D658 + b _0816D79E +_0816D658: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0816D65E: + ldrh r0, [r4, #0x20] + subs r0, #4 + strh r0, [r4, #0x20] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + beq _0816D66E + b _0816D79E +_0816D66E: + movs r0, #8 + strh r0, [r4, #0x2e] + movs r0, #0x14 + strh r0, [r4, #0x30] + movs r0, #2 + strh r0, [r4, #0x32] + b _0816D79E +_0816D67C: + ldrh r1, [r4, #0x20] + adds r1, #8 + strh r1, [r4, #0x20] + ldrh r0, [r4, #0x22] + subs r0, #2 + strh r0, [r4, #0x22] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x7c + beq _0816D692 + b _0816D79E +_0816D692: + movs r0, #8 + strh r0, [r4, #0x2e] + movs r0, #0x14 + strh r0, [r4, #0x30] + movs r0, #3 + strh r0, [r4, #0x32] + b _0816D79E +_0816D6A0: + ldrh r0, [r4, #0x22] + adds r0, #4 + strh r0, [r4, #0x22] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x50 + bne _0816D79E + movs r0, #8 + strh r0, [r4, #0x2e] + movs r0, #0xa + strh r0, [r4, #0x30] + movs r0, #4 + strh r0, [r4, #0x32] + b _0816D79E +_0816D6BC: + ldrh r1, [r4, #0x20] + subs r1, #8 + strh r1, [r4, #0x20] + ldrh r0, [r4, #0x22] + subs r0, #2 + strh r0, [r4, #0x22] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x3c + bne _0816D79E + movs r0, #8 + strh r0, [r4, #0x2e] + movs r0, #0xa + strh r0, [r4, #0x30] + movs r0, #5 + strh r0, [r4, #0x32] + b _0816D79E +_0816D6DE: + ldrh r0, [r4, #0x20] + adds r0, #0x3c + strh r0, [r4, #0x20] + movs r0, #0xc0 + strh r0, [r4, #0x36] + movs r0, #0x80 + strh r0, [r4, #0x38] + movs r0, #3 + strh r0, [r4, #0x3a] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0816D6F6: + ldrh r0, [r4, #0x36] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x3c + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x36] + adds r1, #2 + strh r1, [r4, #0x36] + ldrh r0, [r4, #0x38] + adds r0, #4 + strh r0, [r4, #0x38] + movs r0, #0xff + ands r1, r0 + cmp r1, #0x40 + bne _0816D79E + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + ldrh r0, [r4, #0x3a] + subs r0, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _0816D79E + ldrh r0, [r4, #0x24] + ldrh r2, [r4, #0x20] + adds r0, r0, r2 + strh r0, [r4, #0x20] + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x2e] + adds r0, #1 + b _0816D79C +_0816D752: + ldrh r0, [r4, #0x20] + subs r0, #2 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x14 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x38] + adds r0, #4 + strh r0, [r4, #0x38] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0816D79E + adds r0, r4, #0 + bl sub_08006E00 + b _0816D79E +_0816D780: + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + subs r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816D79E + ldrh r0, [r4, #0x32] +_0816D79C: + strh r0, [r4, #0x2e] +_0816D79E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0816D600 + + thumb_func_start sub_0816D7A4 +sub_0816D7A4: @ 0x0816D7A4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #5 + bls _0816D7B2 + b _0816D8BE +_0816D7B2: + lsls r0, r0, #2 + ldr r1, _0816D7BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816D7BC: .4byte _0816D7C0 +_0816D7C0: @ jump table + .4byte _0816D7D8 @ case 0 + .4byte _0816D7EC @ case 1 + .4byte _0816D804 @ case 2 + .4byte _0816D848 @ case 3 + .4byte _0816D87E @ case 4 + .4byte _0816D8AE @ case 5 +_0816D7D8: + ldr r0, _0816D7E8 + ldr r1, [r0] + movs r0, #0x99 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D8BE + b _0816D89E + .align 2, 0 +_0816D7E8: .4byte gUnknown_3005FE0 +_0816D7EC: + ldr r0, _0816D800 + ldr r1, [r0] + movs r0, #0xc5 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D854 + adds r0, r4, #0 + movs r1, #0 + b _0816D8A2 + .align 2, 0 +_0816D800: .4byte gUnknown_3005FE0 +_0816D804: + ldr r0, _0816D82C + ldr r1, [r0] + ldr r0, _0816D830 + cmp r1, r0 + beq _0816D834 + ldrh r0, [r4, #0x30] + adds r2, r0, #0 + adds r2, #0x20 + strh r2, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0816D8BE + ldrh r0, [r4, #0x20] + adds r0, #1 + b _0816D86E + .align 2, 0 +_0816D82C: .4byte gUnknown_3005FE0 +_0816D830: .4byte 0x000006C7 +_0816D834: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x50 + strh r0, [r4, #0x32] + b _0816D8BE +_0816D848: + ldrh r0, [r4, #0x32] + subs r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816D878 +_0816D854: + ldrh r0, [r4, #0x30] + adds r2, r0, #0 + adds r2, #0x40 + strh r2, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0816D8BE + ldrh r0, [r4, #0x20] + subs r0, #1 +_0816D86E: + strh r0, [r4, #0x20] + movs r0, #0xff + ands r2, r0 + strh r2, [r4, #0x30] + b _0816D8BE +_0816D878: + adds r0, r4, #0 + movs r1, #2 + b _0816D8A2 +_0816D87E: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0816D892 + ldrh r0, [r4, #0x20] + adds r0, #4 + strh r0, [r4, #0x20] +_0816D892: + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0xa8 + lsls r0, r0, #1 + cmp r1, r0 + ble _0816D8BE +_0816D89E: + adds r0, r4, #0 + movs r1, #1 +_0816D8A2: + bl sub_08007EC0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0816D8BE +_0816D8AE: + ldr r0, _0816D8C4 + ldr r1, [r0] + ldr r0, _0816D8C8 + cmp r1, r0 + bls _0816D8BE + ldrh r0, [r4, #0x20] + subs r0, #2 + strh r0, [r4, #0x20] +_0816D8BE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816D8C4: .4byte gUnknown_3005FE0 +_0816D8C8: .4byte 0x0000073F + thumb_func_end sub_0816D7A4 + + thumb_func_start sub_0816D8CC +sub_0816D8CC: @ 0x0816D8CC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816D900 + cmp r0, #1 + bgt _0816D8E2 + cmp r0, #0 + beq _0816D8E8 + b _0816D988 +_0816D8E2: + cmp r0, #2 + beq _0816D926 + b _0816D988 +_0816D8E8: + ldr r0, _0816D8FC + ldr r1, [r0] + movs r0, #0x88 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D988 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0816D988 + .align 2, 0 +_0816D8FC: .4byte gUnknown_3005FE0 +_0816D900: + ldrh r0, [r4, #0x20] + subs r0, #2 + strh r0, [r4, #0x20] + ldr r0, _0816D940 + ldr r1, [r0] + movs r0, #0x92 + lsls r0, r0, #3 + cmp r1, r0 + bne _0816D988 + ldrh r0, [r4, #0x22] + subs r0, #0xc + strh r0, [r4, #0x22] + movs r0, #0x80 + strh r0, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0816D926: + movs r2, #0x20 + ldrsh r0, [r4, r2] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0816D944 + adds r0, r4, #0 + bl sub_08006E00 + b _0816D988 + .align 2, 0 +_0816D940: .4byte gUnknown_3005FE0 +_0816D944: + ldrh r0, [r4, #0x30] + movs r1, #0xff + ands r1, r0 + cmp r1, #0x3f + bgt _0816D956 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x10 + b _0816D968 +_0816D956: + cmp r1, #0x40 + bne _0816D960 + ldrh r0, [r4, #0x20] + subs r0, #0x30 + strh r0, [r4, #0x20] +_0816D960: + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x40 +_0816D968: + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xc + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_0816D988: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816D8CC + + thumb_func_start sub_0816D990 +sub_0816D990: @ 0x0816D990 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + bl sub_0816EEA4 + ldr r0, _0816DA20 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0816DA24 + ldr r1, _0816DA28 + bl LZ77UnCompVram + ldr r0, _0816DA2C + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #0 + bl sub_080A1200 + ldr r0, _0816DA30 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r5, #0 + strh r5, [r4, #8] + strh r5, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + movs r0, #0x78 + movs r1, #0x50 + movs r2, #0 + movs r3, #0 + bl sub_0816F08C + bl sub_0800668C + bl sub_08008424 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816DA34 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _0816DA38 + movs r0, #0xc + bl sub_08001144 + ldr r1, _0816DA3C + movs r0, #0 + bl sub_08001144 + ldr r0, _0816DA40 + str r0, [r4] + ldr r0, _0816DA44 + str r5, [r0] + movs r0, #0xdd + lsls r0, r0, #1 + bl m4aSongNumStart + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816DA20: .4byte gUnknown_85C4908 +_0816DA24: .4byte gUnknown_85C47D8 +_0816DA28: .4byte 0x06004000 +_0816DA2C: .4byte gUnknown_85C45D8 +_0816DA30: .4byte gUnknown_3005B60 +_0816DA34: .4byte 0x0000FFFF +_0816DA38: .4byte 0x00004883 +_0816DA3C: .4byte 0x00001441 +_0816DA40: .4byte sub_0816DA48 +_0816DA44: .4byte gUnknown_3005FE0 + thumb_func_end sub_0816D990 + + thumb_func_start sub_0816DA48 +sub_0816DA48: @ 0x0816DA48 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _0816DA80 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r3, r0, r2 + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r1, #0 + ldrh r1, [r3, #8] + adds r0, r0, r1 + strh r0, [r3, #8] + ldrh r4, [r3, #0xa] + movs r0, #0xa + ldrsh r1, [r3, r0] + ldr r0, _0816DA84 + cmp r1, r0 + bgt _0816DA88 + ldrh r0, [r3, #0xc] + adds r1, r4, r0 + strh r1, [r3, #0xa] + adds r0, #2 + strh r0, [r3, #0xc] + b _0816DA8C + .align 2, 0 +_0816DA80: .4byte gUnknown_3005B60 +_0816DA84: .4byte 0x000006BF +_0816DA88: + ldr r0, _0816DAD4 + str r0, [r3] +_0816DA8C: + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r2 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrh r3, [r4, #8] + movs r0, #0x78 + movs r1, #0x50 + bl sub_0816F08C + ldr r0, _0816DAD8 + ldr r0, [r0] + cmp r0, #0x1c + bne _0816DACA + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816DADC + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0816DACA: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816DAD4: .4byte sub_0816DAE0 +_0816DAD8: .4byte gUnknown_3005FE0 +_0816DADC: .4byte 0x0000FFFF + thumb_func_end sub_0816DA48 + + thumb_func_start sub_0816DAE0 +sub_0816DAE0: @ 0x0816DAE0 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0816DB00 + ldr r0, [r0] + cmp r0, #0x2b + bls _0816DAFC + ldr r0, _0816DB04 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816DB08 + str r0, [r1] +_0816DAFC: + pop {r0} + bx r0 + .align 2, 0 +_0816DB00: .4byte gUnknown_3005FE0 +_0816DB04: .4byte gUnknown_3005B60 +_0816DB08: .4byte sub_0816DB0C + thumb_func_end sub_0816DAE0 + + thumb_func_start sub_0816DB0C +sub_0816DB0C: @ 0x0816DB0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0816DB80 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816DB78 + bl sub_0816EEA4 + bl sub_0800668C + bl sub_08008424 + ldr r1, _0816DB84 + movs r0, #8 + strb r0, [r1] + ldr r0, _0816DB88 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + ldr r0, _0816DB8C + ldr r1, _0816DB90 + bl sub_0803437C + ldr r0, _0816DB94 + ldr r1, _0816DB98 + bl sub_0803437C + ldr r0, _0816DB9C + ldr r1, _0816DBA0 + bl sub_0803437C + ldr r0, _0816DBA4 + bl sub_080347E0 + ldr r0, _0816DBA8 + bl sub_0803481C + ldr r0, _0816DBAC + ldr r1, _0816DBB0 + movs r2, #0x80 + lsls r2, r2, #1 + bl CpuSet + ldr r1, _0816DBB4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816DBB8 + str r1, [r0] +_0816DB78: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816DB80: .4byte gUnknown_2037C74 +_0816DB84: .4byte gUnknown_30030BC +_0816DB88: .4byte gUnknown_8D88478 +_0816DB8C: .4byte gUnknown_8D88D24 +_0816DB90: .4byte 0x0600C000 +_0816DB94: .4byte gUnknown_8D89F60 +_0816DB98: .4byte 0x06004000 +_0816DB9C: .4byte gUnknown_8D8A7FC +_0816DBA0: .4byte 0x0600E000 +_0816DBA4: .4byte gUnknown_84FD420 +_0816DBA8: .4byte gUnknown_84FDD28 +_0816DBAC: .4byte gUnknown_8D85CB4 +_0816DBB0: .4byte gUnknown_20373B4 +_0816DBB4: .4byte gUnknown_3005B60 +_0816DBB8: .4byte sub_0816DBBC + thumb_func_end sub_0816DB0C + + thumb_func_start sub_0816DBBC +sub_0816DBBC: @ 0x0816DBBC + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + ldr r1, _0816DC40 + movs r0, #0xc + bl sub_08001144 + ldr r1, _0816DC44 + movs r0, #0xa + bl sub_08001144 + ldr r1, _0816DC48 + movs r0, #0 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816DC4C + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0816DC50 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r0, #0 + strh r0, [r4, #8] + ldr r0, _0816DC54 + strh r0, [r4, #0xa] + ldr r1, _0816DC58 + strh r1, [r4, #0xc] + movs r2, #0x80 + lsls r2, r2, #1 + strh r2, [r4, #0xe] + movs r3, #0 + bl sub_0816F08C + ldr r0, _0816DC5C + str r0, [r4] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816DC40: .4byte 0x0000B880 +_0816DC44: .4byte 0x00001C05 +_0816DC48: .4byte 0x00003641 +_0816DC4C: .4byte 0x0000FFFF +_0816DC50: .4byte gUnknown_3005B60 +_0816DC54: .4byte 0x0000FFA0 +_0816DC58: .4byte 0x0000FF51 +_0816DC5C: .4byte sub_0816DC60 + thumb_func_end sub_0816DBBC + + thumb_func_start sub_0816DC60 +sub_0816DC60: @ 0x0816DC60 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0816DC98 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r2, [r4, #8] + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + beq _0816DC9C + adds r0, r2, #4 + strh r0, [r4, #8] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r1, r1, #8 + adds r0, r2, #0 + subs r0, #0x9c + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + b _0816DCAA + .align 2, 0 +_0816DC98: .4byte gUnknown_3005B60 +_0816DC9C: + movs r1, #0x82 + lsls r1, r1, #6 + movs r0, #0x44 + bl sub_08001144 + ldr r0, _0816DCB0 + str r0, [r4] +_0816DCAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816DCB0: .4byte sub_0816DCB4 + thumb_func_end sub_0816DC60 + + thumb_func_start sub_0816DCB4 +sub_0816DCB4: @ 0x0816DCB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0816DCC8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _0816DCCC + str r0, [r1] + bx lr + .align 2, 0 +_0816DCC8: .4byte gUnknown_3005B60 +_0816DCCC: .4byte sub_0816DCD0 + thumb_func_end sub_0816DCB4 + + thumb_func_start sub_0816DCD0 +sub_0816DCD0: @ 0x0816DCD0 + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0816DD08 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + ldr r0, _0816DD0C + str r0, [r1] + movs r0, #1 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + str r2, [sp, #8] + movs r0, #0 + movs r1, #0xa0 + movs r2, #4 + movs r3, #4 + bl sub_080B9ADC + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0816DD08: .4byte gUnknown_3005B60 +_0816DD0C: .4byte sub_0816DD10 + thumb_func_end sub_0816DCD0 + + thumb_func_start sub_0816DD10 +sub_0816DD10: @ 0x0816DD10 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0816DD70 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bhi _0816DD46 + ldrh r0, [r4, #0xa] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0816DD46 + ldrh r0, [r4, #8] + movs r1, #3 + eors r0, r1 + strh r0, [r4, #8] +_0816DD46: + ldrh r0, [r4, #2] + ldrh r1, [r4, #8] + ldrh r2, [r4, #4] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r2, [r4, #6] + movs r3, #0 + bl sub_0816F08C + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #9 + bls _0816DD64 + b _0816DF5A +_0816DD64: + lsls r0, r0, #2 + ldr r1, _0816DD74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816DD70: .4byte gUnknown_3005B68 +_0816DD74: .4byte _0816DD78 +_0816DD78: @ jump table + .4byte _0816DDA0 @ case 0 + .4byte _0816DDCA @ case 1 + .4byte _0816DE08 @ case 2 + .4byte _0816DE1C @ case 3 + .4byte _0816DE60 @ case 4 + .4byte _0816DE7E @ case 5 + .4byte _0816DEAC @ case 6 + .4byte _0816DEC2 @ case 7 + .4byte _0816DF20 @ case 8 + .4byte _0816DF3A @ case 9 +_0816DDA0: + ldrh r0, [r4, #2] + adds r0, #0x10 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa0 + beq _0816DDB0 + b _0816DF5A +_0816DDB0: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #2 + strh r0, [r4, #0xc] + movs r2, #0xf1 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r4, #0xe] + adds r0, r5, #0 + bl sub_0816DF74 + b _0816DF5A +_0816DDCA: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816DDD8 + b _0816DF5A +_0816DDD8: + movs r0, #2 + strh r0, [r4, #0xc] + movs r1, #0xe + ldrsh r0, [r4, r1] + ldr r2, _0816DE00 + adds r0, r0, r2 + ldr r1, _0816DE04 + movs r2, #1 + bl CpuSet + ldrh r0, [r4, #0xe] + adds r0, #2 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + movs r1, #0xf6 + lsls r1, r1, #0x11 + cmp r0, r1 + beq _0816DDFE + b _0816DF5A +_0816DDFE: + b _0816DF32 + .align 2, 0 +_0816DE00: .4byte gUnknown_8D85CB4 +_0816DE04: .4byte gUnknown_20377F2 +_0816DE08: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816DE16 + b _0816DF5A +_0816DE16: + movs r0, #2 + strh r0, [r4, #0xc] + b _0816DF32 +_0816DE1C: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816DE2A + b _0816DF5A +_0816DE2A: + movs r0, #2 + strh r0, [r4, #0xc] + movs r1, #0xe + ldrsh r0, [r4, r1] + ldr r2, _0816DE58 + adds r0, r0, r2 + ldr r1, _0816DE5C + movs r2, #1 + bl CpuSet + ldrh r0, [r4, #0xe] + subs r0, #2 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + movs r1, #0xf0 + lsls r1, r1, #0x11 + cmp r0, r1 + beq _0816DE50 + b _0816DF5A +_0816DE50: + movs r0, #8 + strh r0, [r4, #0xc] + b _0816DF32 + .align 2, 0 +_0816DE58: .4byte gUnknown_8D85CB4 +_0816DE5C: .4byte gUnknown_20377F2 +_0816DE60: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816DF5A + movs r1, #0x60 + rsbs r1, r1, #0 + adds r0, r1, #0 + strh r0, [r4, #2] + movs r0, #0xa9 + strh r0, [r4, #4] + movs r0, #3 + strh r0, [r4, #0xc] + b _0816DF32 +_0816DE7E: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + bne _0816DF5A + movs r0, #0x50 + strh r0, [r4, #2] + movs r0, #0x29 + strh r0, [r4, #4] + movs r0, #0x10 + strh r0, [r4, #0xc] + ldr r0, _0816DEA8 + str r1, [sp] + movs r1, #0 + movs r2, #0x64 + movs r3, #0xa + bl sub_080A2D14 + b _0816DF32 + .align 2, 0 +_0816DEA8: .4byte 0x00000195 +_0816DEAC: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816DF5A + movs r0, #0x50 + strh r0, [r4, #2] + movs r0, #0x28 + strh r0, [r4, #4] + b _0816DF32 +_0816DEC2: + ldrh r0, [r4, #2] + adds r0, #4 + strh r0, [r4, #2] + ldrh r0, [r4, #4] + adds r0, #4 + strh r0, [r4, #4] + ldr r2, _0816DF18 + adds r0, r2, #0 + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + strh r0, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + lsrs r0, r0, #8 + movs r1, #0x40 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + strh r0, [r4, #6] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0x78 + bne _0816DF5A + movs r0, #2 + rsbs r0, r0, #0 + ldr r1, _0816DF1C + str r1, [sp] + movs r1, #3 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + strh r5, [r4, #6] + movs r0, #0 + strh r0, [r4, #8] + b _0816DF32 + .align 2, 0 +_0816DF18: .4byte 0x00000666 +_0816DF1C: .4byte 0x00007FFF +_0816DF20: + ldrh r1, [r4, #6] + movs r2, #6 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0816DF32 + adds r0, r1, #0 + subs r0, #8 + strh r0, [r4, #6] + b _0816DF5A +_0816DF32: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0816DF5A +_0816DF3A: + ldr r0, _0816DF64 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816DF5A + ldr r1, _0816DF68 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816DF6C + str r1, [r0] + ldr r1, _0816DF70 + movs r0, #3 + strb r0, [r1, #0x15] +_0816DF5A: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816DF64: .4byte gUnknown_2037C74 +_0816DF68: .4byte gUnknown_3005B60 +_0816DF6C: .4byte sub_0816E084 +_0816DF70: .4byte gUnknown_20397C8 + thumb_func_end sub_0816DD10 + + thumb_func_start sub_0816DF74 +sub_0816DF74: @ 0x0816DF74 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r4, #0 + ldr r6, _0816DFCC + ldr r5, _0816DFD0 +_0816DF80: + movs r0, #0 + ldrsh r1, [r5, r0] + lsls r3, r4, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0816DFD4 + movs r2, #0xa0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r0, r6, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, _0816DFD8 + str r1, [r0] + adds r2, r2, r6 + ldrb r0, [r2, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2, #5] + strh r4, [r2, #0x30] + strh r7, [r2, #0x36] + ldrb r1, [r5, #2] + adds r0, r2, #0 + bl sub_08007EC0 + adds r5, #6 + adds r4, #1 + cmp r4, #5 + ble _0816DF80 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816DFCC: .4byte gUnknown_20205AC +_0816DFD0: .4byte gUnknown_85C5D18 +_0816DFD4: .4byte gUnknown_85727F4 +_0816DFD8: .4byte sub_0816DFDC + thumb_func_end sub_0816DF74 + + thumb_func_start sub_0816DFDC +sub_0816DFDC: @ 0x0816DFDC + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x34] + adds r0, #1 + strh r0, [r3, #0x34] + ldrh r0, [r3, #0x34] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0816DFF8 + ldrh r0, [r3, #0x26] + movs r1, #3 + eors r0, r1 + strh r0, [r3, #0x26] +_0816DFF8: + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _0816E006 + cmp r0, #1 + beq _0816E05C + b _0816E080 +_0816E006: + ldr r2, _0816E054 + movs r0, #0x30 + ldrsh r1, [r3, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r2, #4 + adds r0, r0, r2 + ldrh r2, [r0] + ldrh r1, [r3, #0x32] + adds r2, r2, r1 + strh r2, [r3, #0x32] + movs r0, #0x32 + ldrsh r1, [r3, r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r1, r0 + asrs r1, r1, #8 + ldrh r0, [r3, #0x22] + subs r0, r0, r1 + strh r0, [r3, #0x22] + movs r0, #0xff + ands r2, r0 + strh r2, [r3, #0x32] + ldr r2, _0816E058 + movs r0, #0x36 + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #7 + ble _0816E080 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + b _0816E080 + .align 2, 0 +_0816E054: .4byte gUnknown_85C5D18 +_0816E058: .4byte gUnknown_3005B60 +_0816E05C: + ldrh r1, [r3, #0x20] + movs r2, #0x20 + ldrsh r0, [r3, r2] + cmp r0, #0x77 + bgt _0816E06A + subs r0, r1, #2 + b _0816E06C +_0816E06A: + adds r0, r1, #2 +_0816E06C: + strh r0, [r3, #0x20] + ldrh r1, [r3, #0x22] + movs r2, #0x22 + ldrsh r0, [r3, r2] + cmp r0, #0x4f + bgt _0816E07C + subs r0, r1, #2 + b _0816E07E +_0816E07C: + adds r0, r1, #2 +_0816E07E: + strh r0, [r3, #0x22] +_0816E080: + pop {r0} + bx r0 + thumb_func_end sub_0816DFDC + + thumb_func_start sub_0816E084 +sub_0816E084: @ 0x0816E084 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800668C + ldr r0, _0816E114 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + ldr r0, _0816E118 + ldr r1, _0816E11C + bl sub_0803437C + ldr r0, _0816E120 + ldr r1, _0816E124 + bl sub_0803437C + ldr r0, _0816E128 + bl sub_08034388 + ldr r0, _0816E12C + bl sub_0800845C + movs r0, #2 + rsbs r0, r0, #0 + ldr r1, _0816E130 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _0816E134 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0816E138 + str r0, [r1] + movs r4, #0 + strh r4, [r1, #8] + movs r0, #0xa8 + lsls r0, r0, #1 + strh r0, [r1, #0xa] + movs r2, #0x50 + strh r2, [r1, #0xc] + movs r2, #0x10 + strh r2, [r1, #0x14] + adds r2, #0xf0 + strh r2, [r1, #0xe] + movs r1, #0x50 + movs r3, #0 + bl sub_0816F08C + movs r0, #1 + str r0, [sp] + movs r0, #6 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #0xa0 + movs r2, #4 + movs r3, #4 + bl sub_080B9ADC + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816E114: .4byte gUnknown_8D89208 +_0816E118: .4byte gUnknown_8D89AA0 +_0816E11C: .4byte 0x0600C000 +_0816E120: .4byte gUnknown_8D8A918 +_0816E124: .4byte 0x0600E000 +_0816E128: .4byte gUnknown_85C5D3C +_0816E12C: .4byte gUnknown_85C5D4C +_0816E130: .4byte 0x0000FFFF +_0816E134: .4byte gUnknown_3005B60 +_0816E138: .4byte sub_0816E13C + thumb_func_end sub_0816E084 + + thumb_func_start sub_0816E13C +sub_0816E13C: @ 0x0816E13C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _0816E170 + adds r5, r0, r1 + ldrh r0, [r5, #2] + ldrh r1, [r5, #4] + ldrh r2, [r5, #6] + movs r3, #0 + bl sub_0816F08C + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0xd + bls _0816E164 + b _0816E4A0 +_0816E164: + lsls r0, r0, #2 + ldr r1, _0816E174 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816E170: .4byte gUnknown_3005B68 +_0816E174: .4byte _0816E178 +_0816E178: @ jump table + .4byte _0816E1B0 @ case 0 + .4byte _0816E1C4 @ case 1 + .4byte _0816E220 @ case 2 + .4byte _0816E26C @ case 3 + .4byte _0816E2A8 @ case 4 + .4byte _0816E2D0 @ case 5 + .4byte _0816E328 @ case 6 + .4byte _0816E344 @ case 7 + .4byte _0816E384 @ case 8 + .4byte _0816E3A0 @ case 9 + .4byte _0816E3E0 @ case 10 + .4byte _0816E3FE @ case 11 + .4byte _0816E448 @ case 12 + .4byte _0816E480 @ case 13 +_0816E1B0: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E1BE + b _0816E4A0 +_0816E1BE: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_0816E1C4: + ldrh r0, [r5, #0xc] + adds r0, #4 + strh r0, [r5, #0xc] + movs r2, #0xc + ldrsh r0, [r5, r2] + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0806EFB8 + ldr r1, _0816E21C + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r2, #0xac + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r0 + strh r1, [r4, #0xa] + movs r1, #0xc + ldrsh r0, [r5, r1] + movs r1, #0x40 + bl sub_0806EFD4 + movs r1, #0x54 + subs r1, r1, r0 + strh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0x40 + beq _0816E204 + b _0816E4A0 +_0816E204: + movs r0, #0x19 + strh r0, [r5, #0xc] + movs r0, #1 + strh r0, [r5, #0xe] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0 + bl sub_0816E4B8 + b _0816E4A0 + .align 2, 0 +_0816E21C: .4byte gUnknown_3005B60 +_0816E220: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E22E + b _0816E4A0 +_0816E22E: + ldr r0, _0816E264 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r1, #0xa] + ldr r2, _0816E268 + adds r0, r2, #0 + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + movs r0, #8 + strh r0, [r5, #0xc] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0 + bl sub_0816E4B8 + bl sub_0816E530 + b _0816E4A0 + .align 2, 0 +_0816E264: .4byte gUnknown_3005B60 +_0816E268: .4byte 0xFFFFFEFE +_0816E26C: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E27A + b _0816E4A0 +_0816E27A: + ldr r0, _0816E2A0 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r2, _0816E2A4 + adds r0, r2, #0 + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r1, #0xa] + movs r2, #0x81 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + movs r0, #8 + strh r0, [r5, #0xc] + b _0816E474 + .align 2, 0 +_0816E2A0: .4byte gUnknown_3005B60 +_0816E2A4: .4byte 0xFFFFFF00 +_0816E2A8: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E2B6 + b _0816E4A0 +_0816E2B6: + ldr r1, _0816E2CC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0xc] + subs r1, #0xfc + strh r1, [r0, #0xc] + movs r0, #8 + strh r0, [r5, #0xc] + b _0816E474 + .align 2, 0 +_0816E2CC: .4byte gUnknown_3005B60 +_0816E2D0: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E2DE + b _0816E4A0 +_0816E2DE: + ldr r0, _0816E308 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + adds r0, #0xfc + strh r0, [r1, #0xc] + ldrh r2, [r5, #0xe] + movs r0, #0xe + ldrsh r1, [r5, r0] + cmp r1, #0 + beq _0816E30C + movs r0, #0xc + strh r0, [r5, #0xc] + subs r0, r2, #1 + strh r0, [r5, #0xe] + movs r0, #2 + strh r0, [r5] + b _0816E4A0 + .align 2, 0 +_0816E308: .4byte gUnknown_3005B60 +_0816E30C: + movs r0, #1 + strh r0, [r5, #0xc] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0xca + lsls r0, r0, #1 + str r1, [sp] + movs r1, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_080A2D14 + b _0816E4A0 +_0816E328: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E336 + b _0816E4A0 +_0816E336: + movs r0, #4 + strh r0, [r5, #0xc] + movs r1, #0xf5 + lsls r1, r1, #1 + adds r0, r1, #0 + strh r0, [r5, #0xe] + b _0816E474 +_0816E344: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E352 + b _0816E4A0 +_0816E352: + movs r0, #4 + strh r0, [r5, #0xc] + movs r2, #0xe + ldrsh r0, [r5, r2] + ldr r1, _0816E37C + adds r0, r0, r1 + ldr r1, _0816E380 + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #0xe] + subs r0, #2 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + movs r1, #0xf0 + lsls r1, r1, #0x11 + cmp r0, r1 + beq _0816E378 + b _0816E4A0 +_0816E378: + b _0816E474 + .align 2, 0 +_0816E37C: .4byte gUnknown_8D85CB4 +_0816E380: .4byte gUnknown_2037812 +_0816E384: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816E392 + b _0816E4A0 +_0816E392: + movs r0, #4 + strh r0, [r5, #0xc] + movs r2, #0xf1 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r5, #0xe] + b _0816E474 +_0816E3A0: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816E4A0 + movs r0, #4 + strh r0, [r5, #0xc] + movs r1, #0xe + ldrsh r0, [r5, r1] + ldr r2, _0816E3D8 + adds r0, r0, r2 + ldr r1, _0816E3DC + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #0xe] + adds r0, #2 + strh r0, [r5, #0xe] + lsls r0, r0, #0x10 + movs r1, #0xf7 + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0816E4A0 + movs r0, #0x10 + strh r0, [r5, #0xc] + b _0816E474 + .align 2, 0 +_0816E3D8: .4byte gUnknown_8D85CB4 +_0816E3DC: .4byte gUnknown_2037812 +_0816E3E0: + ldrh r0, [r5, #0xc] + subs r0, #1 + strh r0, [r5, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bne _0816E4A0 + strh r0, [r5, #0xc] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + adds r0, r6, #0 + bl sub_0816E4B8 + b _0816E4A0 +_0816E3FE: + ldrh r0, [r5, #0xc] + adds r0, #4 + strh r0, [r5, #0xc] + ldrh r0, [r5, #6] + subs r0, #8 + strh r0, [r5, #6] + movs r1, #0xc + ldrsh r0, [r5, r1] + movs r1, #0x3c + bl sub_0806EFB8 + ldr r2, _0816E440 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + adds r0, #0x58 + strh r0, [r1, #0xa] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0x40 + bne _0816E4A0 + movs r0, #2 + rsbs r0, r0, #0 + ldr r1, _0816E444 + str r1, [sp] + movs r1, #3 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _0816E474 + .align 2, 0 +_0816E440: .4byte gUnknown_3005B60 +_0816E444: .4byte 0x00007FFF +_0816E448: + ldrh r0, [r5, #0xc] + adds r0, #4 + strh r0, [r5, #0xc] + ldrh r0, [r5, #6] + subs r0, #8 + strh r0, [r5, #6] + movs r1, #0xc + ldrsh r0, [r5, r1] + movs r1, #0x14 + bl sub_0806EFB8 + ldr r2, _0816E47C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + adds r0, #0x80 + strh r0, [r1, #0xa] + movs r2, #0xc + ldrsh r0, [r5, r2] + cmp r0, #0x80 + bne _0816E4A0 +_0816E474: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0816E4A0 + .align 2, 0 +_0816E47C: .4byte gUnknown_3005B60 +_0816E480: + ldr r0, _0816E4A8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816E4A0 + ldr r1, _0816E4AC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816E4B0 + str r1, [r0] + ldr r1, _0816E4B4 + movs r0, #3 + strb r0, [r1, #0x15] +_0816E4A0: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816E4A8: .4byte gUnknown_2037C74 +_0816E4AC: .4byte gUnknown_3005B60 +_0816E4B0: .4byte sub_0816E66C +_0816E4B4: .4byte gUnknown_20397C8 + thumb_func_end sub_0816E13C + + thumb_func_start sub_0816E4B8 +sub_0816E4B8: @ 0x0816E4B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r7, _0816E524 + ldr r0, _0816E528 + mov sb, r0 + adds r4, r7, #0 + movs r6, #0 +_0816E4D2: + movs r3, #0 + ldrsh r1, [r4, r3] + adds r0, r7, #2 + adds r0, r6, r0 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r3, r5, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0816E52C + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, sb + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + mov r0, r8 + strh r0, [r2, #0x38] + ldrh r0, [r4, #4] + strh r0, [r2, #0x3a] + movs r0, #0x40 + strh r0, [r2, #0x3c] + adds r4, #6 + adds r6, #6 + adds r5, #1 + cmp r5, #5 + ble _0816E4D2 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816E524: .4byte gUnknown_85C5D5C +_0816E528: .4byte gUnknown_20205AC +_0816E52C: .4byte gUnknown_85C5DC8 + thumb_func_end sub_0816E4B8 + + thumb_func_start sub_0816E530 +sub_0816E530: @ 0x0816E530 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r5, #0 + ldr r7, _0816E58C + adds r4, r7, #4 + movs r6, #0x24 + ldr r0, _0816E590 + mov r8, r0 +_0816E542: + movs r3, #0x20 + ldrsh r1, [r4, r3] + adds r0, r7, #2 + adds r0, r6, r0 + movs r3, #0 + ldrsh r2, [r0, r3] + lsls r3, r5, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _0816E594 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + add r2, r8 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r4] + strh r0, [r2, #0x3a] + movs r0, #0x40 + strh r0, [r2, #0x3c] + adds r4, #6 + adds r6, #6 + adds r5, #1 + cmp r5, #5 + ble _0816E542 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816E58C: .4byte gUnknown_85C5D5C +_0816E590: .4byte gUnknown_20205AC +_0816E594: .4byte gUnknown_85C5DC8 + thumb_func_end sub_0816E530 + + thumb_func_start sub_0816E598 +sub_0816E598: @ 0x0816E598 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0816E5AA + cmp r0, #1 + beq _0816E630 + b _0816E666 +_0816E5AA: + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0816E5EE + ldrh r0, [r4, #0x30] + adds r0, #0xb + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #0x30 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0816E60E + adds r0, r4, #0 + bl sub_08006E00 + b _0816E60E +_0816E5EE: + subs r0, r1, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816E60E + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0816E60E: + ldr r2, _0816E62C + movs r0, #0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0xb + ble _0816E666 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0816E666 + .align 2, 0 +_0816E62C: .4byte gUnknown_3005B60 +_0816E630: + ldrh r1, [r4, #0x20] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x77 + bgt _0816E63E + subs r0, r1, #3 + b _0816E640 +_0816E63E: + adds r0, r1, #3 +_0816E640: + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r0, #0x4f + bgt _0816E650 + subs r0, r1, #3 + b _0816E652 +_0816E650: + adds r0, r1, #3 +_0816E652: + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x22] + subs r0, #0x14 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x8c + bls _0816E666 + adds r0, r4, #0 + bl sub_08006E00 +_0816E666: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0816E598 + + thumb_func_start sub_0816E66C +sub_0816E66C: @ 0x0816E66C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x50 + movs r1, #0x87 + bl sub_08001144 + ldr r1, _0816E710 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0x1f + bl sub_08001144 + movs r1, #0xb0 + lsls r1, r1, #7 + movs r0, #8 + bl sub_08001144 + ldr r1, _0816E714 + movs r0, #0xa + bl sub_08001144 + ldr r1, _0816E718 + movs r0, #0xc + bl sub_08001144 + movs r1, #0xdd + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0x50 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + ldr r1, _0816E71C + movs r0, #0x14 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + ldr r4, _0816E720 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r0, r4, #0 + bl sub_0803437C + ldr r1, _0816E724 + adds r0, r4, #0 + bl sub_0803437C + ldr r0, _0816E728 + ldr r1, _0816E72C + bl sub_0803437C + ldr r1, _0816E730 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816E734 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816E710: .4byte 0x00001F1F +_0816E714: .4byte 0x00005A04 +_0816E718: .4byte 0x00001C06 +_0816E71C: .4byte 0x0000FFB0 +_0816E720: .4byte gUnknown_8D8AA38 +_0816E724: .4byte 0x06004000 +_0816E728: .4byte gUnknown_8D8B6CC +_0816E72C: .4byte 0x0600E000 +_0816E730: .4byte gUnknown_3005B60 +_0816E734: .4byte sub_0816E738 + thumb_func_end sub_0816E66C + + thumb_func_start sub_0816E738 +sub_0816E738: @ 0x0816E738 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0816E764 + ldr r1, _0816E768 + bl sub_0803437C + ldr r0, _0816E76C + ldr r1, _0816E770 + bl sub_0803437C + ldr r1, _0816E774 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816E778 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816E764: .4byte gUnknown_8D8B164 +_0816E768: .4byte 0x0600C000 +_0816E76C: .4byte gUnknown_8D8B424 +_0816E770: .4byte 0x0600D000 +_0816E774: .4byte gUnknown_3005B60 +_0816E778: .4byte sub_0816E77C + thumb_func_end sub_0816E738 + + thumb_func_start sub_0816E77C +sub_0816E77C: @ 0x0816E77C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r1, _0816E7B8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816E7BC + str r1, [r0] + movs r1, #0 + strh r1, [r0, #8] + movs r1, #0x10 + strh r1, [r0, #0x14] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816E7B8: .4byte gUnknown_3005B60 +_0816E7BC: .4byte sub_0816E7C0 + thumb_func_end sub_0816E77C + + thumb_func_start sub_0816E7C0 +sub_0816E7C0: @ 0x0816E7C0 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r5, r1, #3 + ldr r6, _0816E804 + adds r4, r5, r6 + ldrh r1, [r4, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x10 + bl sub_08001144 + ldrh r1, [r4, #0xc] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + rsbs r1, r1, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x14 + bl sub_08001144 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0816E808 + cmp r0, #1 + beq _0816E83C + b _0816E88A + .align 2, 0 +_0816E804: .4byte gUnknown_3005B68 +_0816E808: + ldrh r0, [r4, #0xc] + subs r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816E88A + movs r0, #2 + rsbs r0, r0, #0 + ldr r1, _0816E838 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r2, #0xa0 + lsls r2, r2, #7 + adds r0, r2, #0 + strh r0, [r4, #0xc] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _0816E88A + .align 2, 0 +_0816E838: .4byte 0x0000FFFF +_0816E83C: + movs r0, #0xc + ldrsh r1, [r4, r0] + movs r0, #0xa0 + lsls r0, r0, #6 + cmp r1, r0 + bne _0816E858 + ldr r0, _0816E86C + ldr r1, _0816E870 + str r1, [sp] + movs r1, #3 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0816E858: + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0816E874 + adds r0, r1, #0 + subs r0, #0x80 + strh r0, [r4, #0xc] + b _0816E88A + .align 2, 0 +_0816E86C: .4byte 0x0000FFFE +_0816E870: .4byte 0x00002949 +_0816E874: + ldr r0, _0816E894 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816E88A + adds r0, r6, #0 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _0816E898 + str r1, [r0] +_0816E88A: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816E894: .4byte gUnknown_2037C74 +_0816E898: .4byte sub_0816E89C + thumb_func_end sub_0816E7C0 + + thumb_func_start sub_0816E89C +sub_0816E89C: @ 0x0816E89C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0816E8FC + ldr r1, _0816E900 + bl sub_0803437C + ldr r0, _0816E904 + ldr r1, _0816E908 + bl sub_0803437C + ldr r0, _0816E90C + ldr r1, _0816E910 + bl sub_0803437C + ldr r0, _0816E914 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl sub_0803437C + movs r1, #0xd5 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + ldr r1, _0816E918 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0816E91C + str r1, [r0] + movs r2, #0 + strh r2, [r0, #8] + movs r1, #1 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + ldr r0, _0816E920 + bl sub_080347E0 + ldr r0, _0816E924 + bl sub_080084A8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816E8FC: .4byte gUnknown_8D8C150 +_0816E900: .4byte 0x0600E000 +_0816E904: .4byte gUnknown_8D8CCAC +_0816E908: .4byte 0x0600C000 +_0816E90C: .4byte gUnknown_8D8BA58 +_0816E910: .4byte 0x06004000 +_0816E914: .4byte gUnknown_8D8C81C +_0816E918: .4byte gUnknown_3005B60 +_0816E91C: .4byte sub_0816E928 +_0816E920: .4byte gUnknown_85C5CA8 +_0816E924: .4byte gUnknown_85C5CB8 + thumb_func_end sub_0816E89C + + thumb_func_start sub_0816E928 +sub_0816E928: @ 0x0816E928 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r2, _0816E94C + adds r6, r1, r2 + movs r3, #0 + ldrsh r0, [r6, r3] + cmp r0, #1 + beq _0816E9C4 + cmp r0, #1 + bgt _0816E950 + cmp r0, #0 + beq _0816E956 + b _0816EA46 + .align 2, 0 +_0816E94C: .4byte gUnknown_3005B68 +_0816E950: + cmp r0, #2 + beq _0816EA30 + b _0816EA46 +_0816E956: + ldrh r0, [r6, #0xc] + subs r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EA46 + ldr r4, _0816E9BC + adds r0, r4, #0 + movs r1, #0xc8 + movs r2, #0x30 + movs r3, #0 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0xc8 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0816E9C0 + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0xc8 + movs r2, #0x70 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #2 + bl sub_08007EC0 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + movs r0, #0x48 + strh r0, [r6, #0xc] + b _0816EA46 + .align 2, 0 +_0816E9BC: .4byte gUnknown_85C5D00 +_0816E9C0: .4byte gUnknown_20205AC +_0816E9C4: + ldrh r0, [r6, #0xc] + subs r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EA46 + ldr r4, _0816EA28 + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0x30 + movs r3, #0 + bl sub_08006B0C + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0x50 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0816EA2C + adds r0, r0, r5 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0x70 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #2 + bl sub_08007EC0 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + movs r0, #0x30 + strh r0, [r6, #0xc] + b _0816EA46 + .align 2, 0 +_0816EA28: .4byte gUnknown_85C5D00 +_0816EA2C: .4byte gUnknown_20205AC +_0816EA30: + ldrh r0, [r6, #0xc] + subs r0, #1 + strh r0, [r6, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EA46 + adds r0, r2, #0 + subs r0, #8 + adds r0, r1, r0 + ldr r1, _0816EA4C + str r1, [r0] +_0816EA46: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816EA4C: .4byte sub_0816EB04 + thumb_func_end sub_0816E928 + + thumb_func_start sub_0816EA50 +sub_0816EA50: @ 0x0816EA50 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0816EA6C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0816EA6C: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816EA90 + cmp r0, #1 + bgt _0816EA7E + cmp r0, #0 + beq _0816EA84 + b _0816EAF6 +_0816EA7E: + cmp r0, #2 + beq _0816EAC0 + b _0816EAF6 +_0816EA84: + movs r0, #0xe1 + lsls r0, r0, #1 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0816EA90: + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldr r1, _0816EAFC + adds r0, r0, r1 + ldr r1, _0816EB00 + movs r2, #1 + bl CpuSet + ldrh r0, [r4, #0x30] + adds r0, #2 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + movs r1, #0xe7 + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0816EAF6 + movs r0, #0xe6 + lsls r0, r0, #1 + strh r0, [r4, #0x30] + movs r0, #4 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] +_0816EAC0: + ldrh r0, [r4, #0x32] + subs r0, #1 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EAF6 + movs r0, #4 + strh r0, [r4, #0x32] + movs r1, #0x30 + ldrsh r0, [r4, r1] + ldr r1, _0816EAFC + adds r0, r0, r1 + ldr r1, _0816EB00 + movs r2, #1 + bl CpuSet + ldrh r0, [r4, #0x30] + subs r0, #2 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0x11 + cmp r0, r1 + bne _0816EAF6 + adds r0, r4, #0 + bl sub_08006E00 +_0816EAF6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816EAFC: .4byte gUnknown_8D85CB4 +_0816EB00: .4byte gUnknown_203786E + thumb_func_end sub_0816EA50 + + thumb_func_start sub_0816EB04 +sub_0816EB04: @ 0x0816EB04 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0816EB74 + bl sub_08034388 + ldr r0, _0816EB78 + bl sub_080084A8 + movs r1, #0xd5 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + ldr r6, _0816EB7C + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r6 + ldr r0, _0816EB80 + str r0, [r4] + ldr r0, _0816EB84 + ldr r1, _0816EB88 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0 + strh r0, [r4, #8] + movs r0, #0xa8 + strh r0, [r4, #0xa] + ldr r1, _0816EB8C + strh r1, [r4, #0xc] + ldr r0, _0816EB90 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + ldr r0, _0816EB94 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r6 + strh r5, [r1, #0x10] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816EB74: .4byte gUnknown_85C60FC +_0816EB78: .4byte gUnknown_85C610C +_0816EB7C: .4byte gUnknown_3005B60 +_0816EB80: .4byte sub_0816EB98 +_0816EB84: .4byte 0x0000FFDE +_0816EB88: .4byte 0x00002949 +_0816EB8C: .4byte 0x0000FFF0 +_0816EB90: .4byte 0x0000FF78 +_0816EB94: .4byte sub_0816EC8C + thumb_func_end sub_0816EB04 + + thumb_func_start sub_0816EB98 +sub_0816EB98: @ 0x0816EB98 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r4, r1, #3 + ldr r5, _0816EBD4 + adds r2, r4, r5 + ldrh r0, [r2, #0xe] + movs r3, #1 + ands r0, r3 + cmp r0, #0 + bne _0816EBBA + ldrh r0, [r2, #0xc] + movs r1, #2 + eors r0, r1 + strh r0, [r2, #0xc] +_0816EBBA: + ldrh r0, [r2, #0xe] + adds r0, #1 + strh r0, [r2, #0xe] + movs r6, #0 + ldrsh r1, [r2, r6] + cmp r1, #1 + beq _0816EC12 + cmp r1, #1 + bgt _0816EBD8 + cmp r1, #0 + beq _0816EBE2 + b _0816EC6A + .align 2, 0 +_0816EBD4: .4byte gUnknown_3005B68 +_0816EBD8: + cmp r1, #2 + beq _0816EC1E + cmp r1, #3 + beq _0816EC54 + b _0816EC6A +_0816EBE2: + ands r0, r3 + cmp r0, #0 + beq _0816EC00 + ldrh r0, [r2, #2] + subs r0, #2 + strh r0, [r2, #2] + ldrh r0, [r2, #4] + adds r0, #1 + strh r0, [r2, #4] + ldrh r0, [r2, #6] + adds r0, #2 + strh r0, [r2, #6] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] +_0816EC00: + movs r1, #2 + ldrsh r0, [r2, r1] + cmp r0, #0x68 + bne _0816EC6A + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + strh r3, [r2, #0xa] + b _0816EC6A +_0816EC12: + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + movs r0, #4 + strh r0, [r2, #0xa] + b _0816EC6A +_0816EC1E: + ldrh r0, [r2, #2] + adds r0, #4 + strh r0, [r2, #2] + ldrh r0, [r2, #4] + subs r0, #2 + strh r0, [r2, #4] + ldrh r0, [r2, #6] + subs r0, #4 + strh r0, [r2, #6] + ldrh r0, [r2, #8] + subs r0, #2 + strh r0, [r2, #8] + ldr r0, _0816EC50 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816EC6A + movs r0, #0x8c + strh r0, [r2, #0xa] + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + b _0816EC6A + .align 2, 0 +_0816EC50: .4byte gUnknown_2037C74 +_0816EC54: + ldrh r0, [r2, #0xa] + subs r0, #1 + strh r0, [r2, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EC6A + adds r0, r5, #0 + subs r0, #8 + adds r0, r4, r0 + ldr r1, _0816EC70 + str r1, [r0] +_0816EC6A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0816EC70: .4byte sub_0816EC74 + thumb_func_end sub_0816EB98 + + thumb_func_start sub_0816EC74 +sub_0816EC74: @ 0x0816EC74 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + ldr r0, _0816EC88 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0816EC88: .4byte sub_0816CA64 + thumb_func_end sub_0816EC74 + + thumb_func_start sub_0816EC8C +sub_0816EC8C: @ 0x0816EC8C + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0816ECB8 + adds r5, r0, r1 + ldrh r0, [r5, #4] + adds r0, #1 + strh r0, [r5, #4] + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #5 + bls _0816ECAE + b _0816EE96 +_0816ECAE: + lsls r0, r0, #2 + ldr r1, _0816ECBC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816ECB8: .4byte gUnknown_3005B68 +_0816ECBC: .4byte _0816ECC0 +_0816ECC0: @ jump table + .4byte _0816ECD8 @ case 0 + .4byte _0816ED18 @ case 1 + .4byte _0816ED64 @ case 2 + .4byte _0816EDEE @ case 3 + .4byte _0816EE58 @ case 4 + .4byte _0816EE84 @ case 5 +_0816ECD8: + ldrh r1, [r5, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816ECFA + movs r2, #2 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816ED10 + adds r0, r0, r1 + ldr r1, _0816ED14 + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] +_0816ECFA: + movs r2, #2 + ldrsh r0, [r5, r2] + cmp r0, #6 + beq _0816ED04 + b _0816EE96 +_0816ED04: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0 + strh r0, [r5, #2] + b _0816ED54 + .align 2, 0 +_0816ED10: .4byte gUnknown_8D85E56 +_0816ED14: .4byte gUnknown_2037870 +_0816ED18: + ldrh r1, [r5, #6] + movs r2, #6 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0816EDE8 + ldrh r1, [r5, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816ED44 + movs r1, #2 + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + ldr r2, _0816ED5C + adds r0, r0, r2 + ldr r1, _0816ED60 + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] +_0816ED44: + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #6 + beq _0816ED4E + b _0816EE96 +_0816ED4E: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_0816ED54: + movs r0, #0xa + strh r0, [r5, #6] + b _0816EE96 + .align 2, 0 +_0816ED5C: .4byte gUnknown_8D85E56 +_0816ED60: .4byte gUnknown_2037864 +_0816ED64: + ldrh r1, [r5, #6] + movs r2, #6 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0816EDE8 + ldrh r1, [r5, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816ED90 + movs r1, #2 + ldrsh r0, [r5, r1] + lsls r0, r0, #1 + ldr r2, _0816EDD8 + adds r0, r0, r2 + ldr r1, _0816EDDC + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] +_0816ED90: + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #6 + beq _0816ED9A + b _0816EE96 +_0816ED9A: + ldr r0, _0816EDE0 + movs r1, #0x78 + movs r2, #0x58 + movs r3, #0xf + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x67 + bl sub_080A306C + ldr r1, _0816EDE4 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r3, r0, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + ldrh r1, [r5, #8] + strh r1, [r0, #0x34] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0x10 + strh r0, [r5, #6] + b _0816EE96 + .align 2, 0 +_0816EDD8: .4byte gUnknown_8D85E36 +_0816EDDC: .4byte gUnknown_203786C +_0816EDE0: .4byte gUnknown_85C60E4 +_0816EDE4: .4byte gUnknown_20205AC +_0816EDE8: + subs r0, r1, #1 + strh r0, [r5, #6] + b _0816EE96 +_0816EDEE: + ldrh r1, [r5, #4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0816EE96 + ldrh r0, [r5, #6] + subs r0, #1 + adds r2, r0, #0 + strh r0, [r5, #6] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0816EE4C + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _0816EE3C + movs r0, #0x50 + movs r1, #0x10 + bl sub_0806F410 + ldr r5, _0816EE40 + ldr r4, _0816EE44 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + adds r1, r4, #0 + subs r1, #0xc + adds r0, r5, #0 + movs r2, #1 + bl CpuSet + ldr r0, _0816EE48 + subs r4, #4 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + b _0816EE96 + .align 2, 0 +_0816EE3C: .4byte 0x00002949 +_0816EE40: .4byte gUnknown_8D85E60 +_0816EE44: .4byte gUnknown_2037870 +_0816EE48: .4byte gUnknown_8D85E40 +_0816EE4C: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + movs r0, #0x35 + strh r0, [r5, #6] + b _0816EE96 +_0816EE58: + ldrh r0, [r5, #6] + subs r0, #1 + strh r0, [r5, #6] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816EE96 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _0816EE80 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0816EE96 + .align 2, 0 +_0816EE80: .4byte 0x00007FFF +_0816EE84: + ldr r0, _0816EEA0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0816EE96 + adds r0, r2, #0 + bl sub_080A8964 +_0816EE96: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816EEA0: .4byte gUnknown_2037C74 + thumb_func_end sub_0816EC8C + + thumb_func_start sub_0816EEA4 +sub_0816EEA4: @ 0x0816EEA4 + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816EEA4 + + thumb_func_start sub_0816EF0C +sub_0816EF0C: @ 0x0816EF0C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0816EF4C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816EF54 + cmp r0, #1 + ble _0816EF2C + cmp r0, #2 + beq _0816EFA0 +_0816EF2C: + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r0, _0816EF50 + ldrh r1, [r0, #0x3e] + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + b _0816EF90 + .align 2, 0 +_0816EF4C: .4byte gUnknown_3005B60 +_0816EF50: .4byte gUnknown_851AC0C +_0816EF54: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0816EF84 + subs r0, r1, #1 + strh r0, [r4, #0xa] + movs r1, #0xa + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + movs r1, #0xff + lsls r1, r1, #1 + ldr r2, _0816EF80 + ands r0, r1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x52 + bl sub_08001144 + b _0816EFBE + .align 2, 0 +_0816EF80: .4byte gUnknown_851AC0C +_0816EF84: + ldr r0, _0816EF9C + ldrh r1, [r0] + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x10 +_0816EF90: + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0816EFBE + .align 2, 0 +_0816EF9C: .4byte gUnknown_851AC0C +_0816EFA0: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 +_0816EFBE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0816EF0C + + thumb_func_start sub_0816EFC4 +sub_0816EFC4: @ 0x0816EFC4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0816F004 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816F00C + cmp r0, #1 + ble _0816EFE4 + cmp r0, #2 + beq _0816F058 +_0816EFE4: + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + ldr r0, _0816F008 + ldrh r1, [r0] + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + b _0816F048 + .align 2, 0 +_0816F004: .4byte gUnknown_3005B60 +_0816F008: .4byte gUnknown_851AC0C +_0816F00C: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0x3d + bgt _0816F03C + adds r0, r1, #1 + strh r0, [r4, #0xa] + movs r1, #0xa + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + movs r1, #0xff + lsls r1, r1, #1 + ldr r2, _0816F038 + ands r0, r1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x52 + bl sub_08001144 + b _0816F086 + .align 2, 0 +_0816F038: .4byte gUnknown_851AC0C +_0816F03C: + ldr r0, _0816F054 + ldrh r1, [r0, #0x3e] + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x10 +_0816F048: + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0816F086 + .align 2, 0 +_0816F054: .4byte gUnknown_851AC0C +_0816F058: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0816F068 + subs r0, r1, #1 + strh r0, [r4, #0xa] + b _0816F086 +_0816F068: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 +_0816F086: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0816EFC4 + + thumb_func_start sub_0816F08C +sub_0816F08C: @ 0x0816F08C + push {r4, lr} + sub sp, #0x24 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r4, #0x80 + lsls r4, r4, #8 + str r4, [sp] + str r4, [sp, #4] + mov r4, sp + strh r0, [r4, #8] + mov r0, sp + strh r1, [r0, #0xa] + strh r2, [r0, #0xc] + strh r2, [r0, #0xe] + strh r3, [r0, #0x10] + add r4, sp, #0x14 + adds r1, r4, #0 + movs r2, #1 + bl BgAffineSet + ldrh r1, [r4] + movs r0, #0x20 + bl sub_08001144 + ldrh r1, [r4, #2] + movs r0, #0x22 + bl sub_08001144 + ldrh r1, [r4, #4] + movs r0, #0x24 + bl sub_08001144 + ldrh r1, [r4, #6] + movs r0, #0x26 + bl sub_08001144 + ldrh r1, [r4, #8] + movs r0, #0x28 + bl sub_08001144 + ldrh r1, [r4, #0xa] + movs r0, #0x2a + bl sub_08001144 + ldrh r1, [r4, #0xc] + movs r0, #0x2c + bl sub_08001144 + ldrh r1, [r4, #0xe] + movs r0, #0x2e + bl sub_08001144 + add sp, #0x24 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0816F08C + + thumb_func_start sub_0816F0FC +sub_0816F0FC: @ 0x0816F0FC + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0xbf + ble _0816F178 + ldrh r1, [r4, #0x34] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0816F11A + subs r0, r1, #1 + strh r0, [r4, #0x34] + b _0816F17E +_0816F11A: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #5 + subs r0, r0, r1 + movs r1, #0x64 + bl __divsi3 + strh r0, [r4, #0x32] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r0, r1, #0 + subs r0, #0xc0 + cmp r0, #0 + bge _0816F15C + adds r0, #0x7f +_0816F15C: + asrs r0, r0, #7 + adds r0, #9 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _0816F16A + movs r0, #0xf +_0816F16A: + lsls r2, r0, #4 + ldrb r1, [r4, #5] + movs r0, #0xf + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #5] + b _0816F17E +_0816F178: + adds r0, r4, #0 + bl sub_08006E00 +_0816F17E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816F0FC + + thumb_func_start sub_0816F188 +sub_0816F188: @ 0x0816F188 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0816F1FC + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r3, #0x3c + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _0816F204 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r0, r0, r3 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007EC0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x30] + movs r0, #3 + ands r0, r1 + lsls r0, r0, #3 + strh r0, [r4, #0x34] + ldr r0, _0816F200 + str r0, [r4, #0x1c] + ldrb r1, [r4, #1] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + movs r3, #2 + bl sub_08006F70 + b _0816F230 + .align 2, 0 +_0816F1FC: .4byte gUnknown_20205AC +_0816F200: .4byte sub_0816F0FC +_0816F204: + ldrh r0, [r1, #0x24] + strh r0, [r4, #0x24] + movs r0, #0x3c + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x26] + strh r0, [r4, #0x26] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x20] + strh r0, [r4, #0x20] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x22] + strh r0, [r4, #0x22] +_0816F230: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816F188 + + thumb_func_start sub_0816F238 +sub_0816F238: @ 0x0816F238 + push {lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _0816F248 + ldr r0, _0816F24C + str r0, [r1, #0x1c] +_0816F248: + pop {r0} + bx r0 + .align 2, 0 +_0816F24C: .4byte sub_0816F250 + thumb_func_end sub_0816F238 + + thumb_func_start sub_0816F250 +sub_0816F250: @ 0x0816F250 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r0, #0 + ldrh r4, [r7, #0x20] + movs r1, #0x20 + ldrsh r0, [r7, r1] + cmp r0, #0x74 + bgt _0816F290 + ldrh r0, [r7, #0x26] + ldrh r1, [r7, #0x22] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r7, #0x22] + strh r1, [r7, #0x26] + adds r0, r4, #4 + strh r0, [r7, #0x20] + ldr r0, _0816F288 + strh r0, [r7, #0x24] + movs r0, #0x80 + strh r0, [r7, #0x36] + ldr r0, _0816F28C + str r0, [r7, #0x1c] + b _0816F382 + .align 2, 0 +_0816F288: .4byte 0x0000FFFC +_0816F28C: .4byte sub_0816F398 +_0816F290: + ldrh r1, [r7, #0x36] + ldr r5, _0816F394 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r2, [r0] + adds r0, r1, #0 + adds r0, #0x40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r3, [r0] + adds r1, #2 + strh r1, [r7, #0x36] + lsls r2, r2, #0x10 + asrs r0, r2, #0x10 + cmp r0, #0 + bge _0816F2B6 + adds r0, #0x1f +_0816F2B6: + asrs r0, r0, #5 + strh r0, [r7, #0x26] + subs r0, r4, #1 + strh r0, [r7, #0x20] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0816F2CC + ldrh r0, [r7, #0x22] + adds r0, #1 + strh r0, [r7, #0x22] +_0816F2CC: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + cmp r0, #0 + bge _0816F2D8 + adds r0, #0xf +_0816F2D8: + lsls r1, r0, #0xc + lsrs r1, r1, #0x10 + ldrh r4, [r7, #0x32] + ldrh r3, [r7, #0x34] + adds r0, r1, #0 + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r5 + ldrh r2, [r0] + adds r1, #0x30 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r1, r1, r5 + movs r0, #0 + ldrsh r1, [r1, r0] + adds r0, r1, #0 + muls r0, r4, r0 + cmp r0, #0 + bge _0816F302 + adds r0, #0xff +_0816F302: + lsls r0, r0, #8 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r0, r2, #0x10 + asrs r2, r0, #0x10 + rsbs r0, r2, #0 + muls r0, r3, r0 + cmp r0, #0 + bge _0816F316 + adds r0, #0xff +_0816F316: + lsls r0, r0, #8 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r2, #0 + muls r0, r4, r0 + cmp r0, #0 + bge _0816F326 + adds r0, #0xff +_0816F326: + lsls r0, r0, #8 + lsrs r5, r0, #0x10 + adds r0, r1, #0 + muls r0, r3, r0 + cmp r0, #0 + bge _0816F334 + adds r0, #0xff +_0816F334: + lsls r6, r0, #8 + lsrs r6, r6, #0x10 + ldrh r0, [r7, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r3, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldrh r0, [r7, #0x30] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r5 + mov r1, sl + lsls r5, r1, #0x10 + lsrs r3, r5, #0x10 + lsls r4, r6, #0x10 + str r6, [sp] + mov r1, r8 + mov r2, sb + bl sub_08006F3C + ldrh r0, [r7, #0x30] + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r5, #1 + lsrs r5, r5, #0x10 + lsls r4, r4, #1 + lsrs r4, r4, #0x10 + str r4, [sp] + mov r1, r8 + mov r2, sb + adds r3, r5, #0 + bl sub_08006F3C +_0816F382: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0816F394: .4byte gUnknown_82FA8CC + thumb_func_end sub_0816F250 + + thumb_func_start sub_0816F398 +sub_0816F398: @ 0x0816F398 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + adds r1, #0x40 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldrh r0, [r4, #0x30] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + adds r1, #0x40 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldrh r0, [r4, #0x30] + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x3a] + adds r1, #0x40 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldrh r1, [r4, #0x36] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #0x40 + beq _0816F430 + adds r0, r1, #0 + subs r0, #8 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x36] + adds r1, r0, #0 + ldr r2, _0816F42C + adds r0, #0x40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + bge _0816F412 + adds r0, #0x3f +_0816F412: + asrs r0, r0, #6 + strh r0, [r4, #0x24] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _0816F426 + adds r0, #0x3f +_0816F426: + asrs r0, r0, #6 + strh r0, [r4, #0x26] + b _0816F438 + .align 2, 0 +_0816F42C: .4byte gUnknown_82FA8CC +_0816F430: + movs r0, #0 + strh r0, [r4, #0x36] + ldr r0, _0816F440 + str r0, [r4, #0x1c] +_0816F438: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816F440: .4byte sub_0816F444 + thumb_func_end sub_0816F398 + + thumb_func_start sub_0816F444 +sub_0816F444: @ 0x0816F444 + push {r4, lr} + adds r1, r0, #0 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #2 + beq _0816F4A4 + ldrh r0, [r1, #0x36] + adds r0, #8 + strh r0, [r1, #0x36] + ldr r3, _0816F4A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r3 + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r0, #0 + bge _0816F468 + adds r0, #0xf +_0816F468: + asrs r0, r0, #4 + adds r0, #0x40 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r0, r2, #0 + adds r0, #0x40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r3 + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r0, #0 + bge _0816F484 + adds r0, #0x3f +_0816F484: + asrs r0, r0, #6 + strh r0, [r1, #0x24] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r3 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bge _0816F498 + adds r0, #0x3f +_0816F498: + asrs r0, r0, #6 + strh r0, [r1, #0x26] + b _0816F4A8 + .align 2, 0 +_0816F4A0: .4byte gUnknown_82FA8CC +_0816F4A4: + ldr r0, _0816F4B0 + str r0, [r1, #0x1c] +_0816F4A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816F4B0: .4byte sub_0816F4B4 + thumb_func_end sub_0816F444 + + thumb_func_start sub_0816F4B4 +sub_0816F4B4: @ 0x0816F4B4 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x22] + movs r0, #0x22 + ldrsh r1, [r4, r0] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _0816F4CC + adds r0, r2, #4 + strh r0, [r4, #0x22] + b _0816F528 +_0816F4CC: + movs r0, #1 + strh r0, [r4, #0x3c] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r0, r0, r3 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007EC0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x30] + movs r0, #3 + ands r0, r1 + lsls r0, r0, #3 + strh r0, [r4, #0x34] + ldr r0, _0816F530 + str r0, [r4, #0x1c] + ldrb r1, [r4, #1] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + movs r3, #2 + bl sub_08006F70 +_0816F528: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816F530: .4byte sub_0816F0FC + thumb_func_end sub_0816F4B4 + + thumb_func_start sub_0816F534 +sub_0816F534: @ 0x0816F534 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x22] + movs r0, #0x22 + ldrsh r1, [r4, r0] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _0816F54C + adds r0, r2, #4 + strh r0, [r4, #0x22] + b _0816F5A8 +_0816F54C: + movs r0, #1 + strh r0, [r4, #0x3c] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r3, [r4, #0x22] + adds r0, r0, r3 + strh r0, [r4, #0x22] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007EC0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x30] + movs r0, #3 + ands r0, r1 + lsls r0, r0, #3 + strh r0, [r4, #0x34] + ldr r0, _0816F5B0 + str r0, [r4, #0x1c] + ldrb r1, [r4, #1] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + movs r3, #2 + bl sub_08006F70 +_0816F5A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816F5B0: .4byte sub_0816F0FC + thumb_func_end sub_0816F534 + + thumb_func_start sub_0816F5B4 +sub_0816F5B4: @ 0x0816F5B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r6, [sp, #0x34] + ldr r0, [sp, #0x38] + mov r8, r0 + lsls r4, r4, #0x10 + lsls r5, r5, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #8] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #0xc] + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r0, _0816F670 + lsrs r2, r4, #0x10 + mov sl, r2 + asrs r4, r4, #0x10 + lsrs r1, r5, #0x10 + str r1, [sp, #4] + asrs r5, r5, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _0816F674 + mov sb, r2 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r5, r0, #2 + adds r4, r5, r2 + movs r0, #0 + strh r0, [r4, #0x2e] + strh r0, [r4, #0x3c] + mov r0, sp + ldrh r0, [r0, #0xc] + strh r0, [r4, #0x30] + mov r1, sp + ldrh r1, [r1, #8] + strh r1, [r4, #0x32] + mov r2, sp + ldrh r2, [r2, #8] + strh r2, [r4, #0x34] + strh r6, [r4, #0x38] + mov r0, sp + ldrh r0, [r0, #8] + strh r0, [r4, #0x3a] + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + movs r0, #0x1f + ldr r1, [sp, #0xc] + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + movs r3, #2 + bl sub_08006F70 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + mov r1, r8 + cmp r1, #0 + bne _0816F67C + mov r0, sb + adds r0, #0x1c + adds r0, r5, r0 + ldr r1, _0816F678 + b _0816F684 + .align 2, 0 +_0816F670: .4byte gUnknown_85C5E18 +_0816F674: .4byte gUnknown_20205AC +_0816F678: .4byte sub_0816F238 +_0816F67C: + mov r0, sb + adds r0, #0x1c + adds r0, r5, r0 + ldr r1, _0816F7A4 +_0816F684: + str r1, [r0] + str r7, [sp, #0x10] + mov r2, sl + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov sl, r2 + ldr r0, [sp, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0816F7A8 + mov r1, sl + mov r2, r8 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _0816F7AC + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r0, r4, r5 + mov r1, sp + ldrh r1, [r1, #0x10] + strh r1, [r0, #0x3c] + ldr r2, [sp, #0xc] + adds r2, #1 + mov sb, r2 + strh r2, [r0, #0x30] + ldrb r1, [r0, #1] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #1] + mov r2, sb + movs r1, #0x1f + ands r2, r1 + lsls r2, r2, #1 + ldrb r3, [r0, #3] + movs r6, #0x3f + rsbs r6, r6, #0 + adds r1, r6, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #3] + movs r1, #0 + movs r2, #2 + movs r3, #2 + bl sub_08006F70 + ldr r2, _0816F7B0 + adds r4, r4, r2 + ldr r0, _0816F7B4 + str r0, [r4] + ldr r0, _0816F7A8 + mov r1, sl + mov r2, r8 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r5, r4, r5 + mov r1, sp + ldrh r1, [r1, #0x10] + strh r1, [r5, #0x3c] + ldr r2, [sp, #0xc] + adds r2, #2 + mov r8, r2 + strh r2, [r5, #0x30] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 + ldrb r0, [r5, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #1] + mov r0, r8 + movs r2, #0x1f + ands r0, r2 + lsls r0, r0, #1 + ldrb r1, [r5, #3] + ands r6, r1 + orrs r6, r0 + strb r6, [r5, #3] + adds r0, r5, #0 + movs r1, #0 + movs r2, #2 + movs r3, #2 + bl sub_08006F70 + ldr r0, _0816F7B0 + adds r4, r4, r0 + ldr r1, _0816F7B4 + str r1, [r4] + ldr r2, [sp, #0xc] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + ldr r5, [sp, #8] + adds r5, #0x20 + lsls r4, r5, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + str r4, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r5, r5, #0x11 + lsrs r5, r5, #0x10 + str r5, [sp] + mov r0, r8 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldr r0, [sp, #0x10] + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0816F7A4: .4byte sub_0816F534 +_0816F7A8: .4byte gUnknown_85C5E18 +_0816F7AC: .4byte gUnknown_20205AC +_0816F7B0: .4byte gUnknown_20205C8 +_0816F7B4: .4byte sub_0816F188 + thumb_func_end sub_0816F5B4 + + thumb_func_start sub_0816F7B8 +sub_0816F7B8: @ 0x0816F7B8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #4 + bhi _0816F846 + lsls r0, r0, #2 + ldr r1, _0816F7D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816F7D0: .4byte _0816F7D4 +_0816F7D4: @ jump table + .4byte _0816F7E8 @ case 0 + .4byte _0816F7F6 @ case 1 + .4byte _0816F814 @ case 2 + .4byte _0816F846 @ case 3 + .4byte _0816F834 @ case 4 +_0816F7E8: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + ldrh r0, [r4, #0x20] + subs r0, #1 + b _0816F844 +_0816F7F6: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + ldr r0, _0816F810 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0816F88E + ldrh r0, [r4, #0x20] + adds r0, #1 + b _0816F844 + .align 2, 0 +_0816F810: .4byte gUnknown_3005FE0 +_0816F814: + ldrh r2, [r4, #0x20] + movs r1, #0x20 + ldrsh r0, [r4, r1] + cmp r0, #0x78 + ble _0816F82A + ldr r0, _0816F830 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + beq _0816F852 +_0816F82A: + adds r0, r2, #1 + b _0816F844 + .align 2, 0 +_0816F830: .4byte gUnknown_3005FE0 +_0816F834: + ldrh r2, [r4, #0x20] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0816F846 + subs r0, r2, #2 +_0816F844: + strh r0, [r4, #0x20] +_0816F846: + ldr r0, _0816F860 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0816F88E +_0816F852: + movs r1, #0x26 + ldrsh r5, [r4, r1] + cmp r5, #0 + beq _0816F864 + movs r0, #0 + strh r0, [r4, #0x26] + b _0816F88E + .align 2, 0 +_0816F860: .4byte gUnknown_3005FE0 +_0816F864: + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + cmp r1, #1 + beq _0816F88C + cmp r1, #1 + bgt _0816F87A + cmp r1, #0 + beq _0816F882 + b _0816F88E +_0816F87A: + cmp r1, #3 + bgt _0816F88E + strh r5, [r4, #0x26] + b _0816F88E +_0816F882: + ldr r0, _0816F888 + strh r0, [r4, #0x26] + b _0816F88E + .align 2, 0 +_0816F888: .4byte 0x0000FFFF +_0816F88C: + strh r1, [r4, #0x26] +_0816F88E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0816F7B8 + + thumb_func_start sub_0816F894 +sub_0816F894: @ 0x0816F894 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816F8AE + cmp r0, #1 + ble _0816F8F6 + cmp r0, #2 + beq _0816F8CE + cmp r0, #3 + beq _0816F8E8 + b _0816F8F6 +_0816F8AE: + movs r2, #0x24 + ldrsh r0, [r4, r2] + movs r2, #0x20 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + ldr r1, _0816F8C4 + cmp r0, r1 + bgt _0816F8C8 + ldrh r0, [r4, #0x24] + adds r0, #8 + b _0816F8F4 + .align 2, 0 +_0816F8C4: .4byte 0x0000012F +_0816F8C8: + movs r0, #2 + strh r0, [r4, #0x2e] + b _0816F8F6 +_0816F8CE: + movs r1, #0x24 + ldrsh r0, [r4, r1] + movs r2, #0x20 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + cmp r0, #0x78 + ble _0816F8E2 + ldrh r0, [r4, #0x24] + subs r0, #1 + b _0816F8F4 +_0816F8E2: + movs r0, #3 + strh r0, [r4, #0x2e] + b _0816F8F6 +_0816F8E8: + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _0816F8F6 + subs r0, r1, #2 +_0816F8F4: + strh r0, [r4, #0x24] +_0816F8F6: + ldrh r0, [r4, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #8 + bl sub_0806EFB8 + ldr r1, _0816F918 + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #4 + strh r0, [r4, #0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0816F918: .4byte gUnknown_203B998 + thumb_func_end sub_0816F894 + + thumb_func_start sub_0816F91C +sub_0816F91C: @ 0x0816F91C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #5 + bls _0816F92A + b _0816FB30 +_0816F92A: + lsls r0, r0, #2 + ldr r1, _0816F934 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0816F934: .4byte _0816F938 +_0816F938: @ jump table + .4byte _0816F950 @ case 0 + .4byte _0816F978 @ case 1 + .4byte _0816F998 @ case 2 + .4byte _0816FA50 @ case 3 + .4byte _0816FABC @ case 4 + .4byte _0816FAEC @ case 5 +_0816F950: + ldrh r1, [r5, #0x30] + movs r2, #0x30 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0816F960 + subs r0, r1, #1 + strh r0, [r5, #0x30] + b _0816FB30 +_0816F960: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + adds r0, r5, #0 + movs r1, #1 + bl sub_08007F70 + b _0816FADE +_0816F978: + ldr r0, _0816F994 + ldr r0, [r0] + cmp r0, #0x90 + beq _0816F982 + b _0816FB30 +_0816F982: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + movs r0, #9 + strh r0, [r5, #0x30] + movs r0, #2 + strh r0, [r5, #0x34] + b _0816FB30 + .align 2, 0 +_0816F994: .4byte gUnknown_3005FE0 +_0816F998: + ldrh r1, [r5, #0x34] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0816FA5A + movs r0, #2 + strh r0, [r5, #0x34] + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0816FA00 + lsls r0, r0, #1 + ldr r1, _0816F9F0 + adds r0, r0, r1 + ldr r4, _0816F9F4 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816F9F8 + adds r0, r0, r1 + adds r1, r4, #0 + subs r1, #0x16 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816F9FC + adds r0, r0, r1 + subs r4, #0xa + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #0x30] + subs r0, #1 + strh r0, [r5, #0x30] + b _0816FB30 + .align 2, 0 +_0816F9F0: .4byte gUnknown_8D85C34 +_0816F9F4: .4byte gUnknown_20379F2 +_0816F9F8: .4byte gUnknown_8D85C54 +_0816F9FC: .4byte gUnknown_8D85C74 +_0816FA00: + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816FA40 + adds r0, r0, r1 + ldr r4, _0816FA44 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816FA48 + adds r0, r0, r1 + adds r1, r4, #0 + subs r1, #0x16 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816FA4C + adds r0, r0, r1 + subs r4, #0xa + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + b _0816FADE + .align 2, 0 +_0816FA40: .4byte gUnknown_8D85C34 +_0816FA44: .4byte gUnknown_20379F2 +_0816FA48: .4byte gUnknown_8D85C54 +_0816FA4C: .4byte gUnknown_8D85C74 +_0816FA50: + ldrh r1, [r5, #0x34] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0816FA60 +_0816FA5A: + subs r0, r1, #1 + strh r0, [r5, #0x34] + b _0816FB30 +_0816FA60: + movs r0, #2 + strh r0, [r5, #0x34] + movs r1, #0x30 + ldrsh r0, [r5, r1] + cmp r0, #9 + bgt _0816FADE + lsls r0, r0, #1 + ldr r1, _0816FAAC + adds r0, r0, r1 + ldr r4, _0816FAB0 + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816FAB4 + adds r0, r0, r1 + adds r1, r4, #0 + subs r1, #0x16 + movs r2, #1 + bl CpuSet + movs r2, #0x30 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + ldr r1, _0816FAB8 + adds r0, r0, r1 + subs r4, #0xa + adds r1, r4, #0 + movs r2, #1 + bl CpuSet + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + b _0816FB30 + .align 2, 0 +_0816FAAC: .4byte gUnknown_8D85C34 +_0816FAB0: .4byte gUnknown_20379F2 +_0816FAB4: .4byte gUnknown_8D85C54 +_0816FAB8: .4byte gUnknown_8D85C74 +_0816FABC: + ldr r0, _0816FAE8 + ldr r1, [r0] + movs r0, #0x88 + lsls r0, r0, #1 + cmp r1, r0 + bne _0816FB30 + adds r0, r5, #0 + movs r1, #2 + bl sub_08007F70 + ldrb r1, [r5, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #1] +_0816FADE: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _0816FB30 + .align 2, 0 +_0816FAE8: .4byte gUnknown_3005FE0 +_0816FAEC: + ldr r1, _0816FB38 + movs r2, #0x32 + ldrsh r0, [r5, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r5, #0x34] + adds r0, r0, r1 + strh r0, [r5, #0x34] + movs r2, #0x34 + ldrsh r0, [r5, r2] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + asrs r0, r0, #8 + strh r0, [r5, #0x24] + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #3 + bgt _0816FB1C + movs r2, #0x24 + ldrsh r0, [r5, r2] + rsbs r0, r0, #0 + strh r0, [r5, #0x24] +_0816FB1C: + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0816FB30 + adds r0, r5, #0 + bl sub_08006E00 +_0816FB30: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816FB38: .4byte gUnknown_85C5FFC + thumb_func_end sub_0816F91C + + thumb_func_start sub_0816FB3C +sub_0816FB3C: @ 0x0816FB3C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0816FB74 + cmp r0, #1 + bgt _0816FB52 + cmp r0, #0 + beq _0816FB58 + b _0816FBA8 +_0816FB52: + cmp r0, #2 + beq _0816FB94 + b _0816FBA8 +_0816FB58: + ldr r0, _0816FB70 + ldr r0, [r0] + cmp r0, #0x80 + bne _0816FBA8 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + b _0816FB88 + .align 2, 0 +_0816FB70: .4byte gUnknown_3005FE0 +_0816FB74: + ldr r0, _0816FB90 + ldr r1, [r0] + movs r0, #0x88 + lsls r0, r0, #1 + cmp r1, r0 + bne _0816FBA8 + adds r0, r4, #0 + movs r1, #3 + bl sub_08007F70 +_0816FB88: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _0816FBA8 + .align 2, 0 +_0816FB90: .4byte gUnknown_3005FE0 +_0816FB94: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0816FBA8 + adds r0, r4, #0 + bl sub_08006E00 +_0816FBA8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0816FB3C + + thumb_func_start sub_0816FBB0 +sub_0816FBB0: @ 0x0816FBB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #4] + movs r7, #0 +_0816FBCA: + lsls r5, r7, #2 + ldr r0, _0816FCBC + adds r0, #2 + adds r0, r5, r0 + ldr r2, [sp] + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, [sp, #4] + lsls r2, r3, #0x10 + asrs r0, r2, #0x10 + str r0, [sp, #8] + ldr r3, _0816FCC0 + adds r2, r2, r3 + ldr r0, _0816FCC4 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + ldr r0, _0816FCC8 + adds r4, r4, r0 + movs r1, #0 + strh r1, [r4, #0x2e] + ldr r0, _0816FCCC + adds r0, r7, r0 + ldrb r0, [r0] + strh r0, [r4, #0x30] + strh r7, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + mov sl, r2 + mov r3, sl + orrs r0, r3 + strb r0, [r1] + adds r1, r7, #0 + adds r1, #0xc + movs r0, #0x1f + mov sb, r0 + mov r2, sb + ands r1, r2 + lsls r1, r1, #1 + ldrb r0, [r4, #3] + movs r3, #0x3f + rsbs r3, r3, #0 + mov r8, r3 + mov r2, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + ldr r3, _0816FCBC + adds r5, r5, r3 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #8 + bls _0816FBCA + ldr r0, _0816FCD0 + ldr r2, [sp, #8] + subs r2, #6 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + movs r1, #0x78 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _0816FCC8 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0, #0x2e] + adds r2, r0, #0 + adds r2, #0x3e + ldrb r1, [r2] + mov r3, sl + orrs r1, r3 + strb r1, [r2] + adds r2, r7, #0 + adds r2, #0xc + mov r1, sb + ands r2, r1 + lsls r2, r2, #1 + ldrb r1, [r0, #3] + mov r3, r8 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #3] + movs r1, #1 + bl sub_08007F70 + adds r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0816FCBC: .4byte gUnknown_85C5F48 +_0816FCC0: .4byte 0xFFFC0000 +_0816FCC4: .4byte gUnknown_85C6010 +_0816FCC8: .4byte gUnknown_20205AC +_0816FCCC: .4byte gUnknown_85C6058 +_0816FCD0: .4byte gUnknown_85C6040 + thumb_func_end sub_0816FBB0 + + thumb_func_start sub_0816FCD4 +sub_0816FCD4: @ 0x0816FCD4 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0816FD40 + ldr r2, _0816FD90 + ldrh r1, [r4, #0x32] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + ldrh r3, [r0] + adds r1, #0x40 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r1, r1, r2 + movs r2, #0 + ldrsh r0, [r1, r2] + movs r1, #0x30 + ldrsh r2, [r4, r1] + adds r1, r0, #0 + muls r1, r2, r1 + adds r0, r1, #0 + cmp r1, #0 + bge _0816FD10 + adds r0, #0xff +_0816FD10: + lsls r0, r0, #8 + lsrs r6, r0, #0x10 + lsls r0, r3, #0x10 + asrs r3, r0, #0x10 + rsbs r0, r3, #0 + muls r0, r2, r0 + cmp r0, #0 + bge _0816FD22 + adds r0, #0xff +_0816FD22: + lsls r0, r0, #8 + lsrs r5, r0, #0x10 + adds r0, r3, #0 + muls r0, r2, r0 + cmp r0, #0 + bge _0816FD30 + adds r0, #0xff +_0816FD30: + lsls r0, r0, #8 + lsrs r2, r0, #0x10 + adds r1, r6, #0 + adds r3, r5, #0 + str r1, [sp] + movs r0, #1 + bl sub_08006F3C +_0816FD40: + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #1 + beq _0816FD94 + cmp r0, #1 + ble _0816FD50 + cmp r0, #2 + beq _0816FDF6 +_0816FD50: + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #3] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r1, #0 + movs r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x80 + strh r0, [r4, #0x30] + strh r1, [r4, #0x32] + strh r1, [r4, #0x34] + b _0816FE30 + .align 2, 0 +_0816FD90: .4byte gUnknown_82FA8CC +_0816FD94: + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x8c + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x78 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #7 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x34] + adds r0, #3 + strh r0, [r4, #0x34] + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0816FE30 + ldrb r0, [r4, #5] + movs r1, #0xc + orrs r0, r1 + strb r0, [r4, #5] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r0, #0x14 + strh r0, [r4, #0x20] + movs r0, #0x28 + strh r0, [r4, #0x22] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x30] + movs r0, #0 + strh r0, [r4, #0x32] + movs r0, #0x10 + b _0816FE2E +_0816FDF6: + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x22 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x3c + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #2 + strh r0, [r4, #0x30] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #5 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0816FE30 + ldrh r0, [r4, #0x34] + adds r0, #1 +_0816FE2E: + strh r0, [r4, #0x34] +_0816FE30: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0816FCD4 + + thumb_func_start sub_0816FE38 +sub_0816FE38: @ 0x0816FE38 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0816FE4E + adds r4, r5, #0 + adds r4, #0x3e + cmp r0, #1 + beq _0816FE86 +_0816FE4E: + adds r4, r5, #0 + adds r4, #0x3e + ldrb r1, [r4] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r5, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #1] + ldrb r1, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x24 + orrs r0, r1 + strb r0, [r5, #3] + adds r0, r5, #0 + movs r1, #0 + movs r2, #3 + movs r3, #3 + bl sub_08006F70 + movs r0, #0 + strh r0, [r5, #0x30] + movs r0, #1 + strh r0, [r5, #0x2e] +_0816FE86: + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0816FE9E + ldrb r0, [r4] + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + b _0816FEB6 +_0816FE9E: + ldrb r0, [r4] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4] + ldrh r1, [r5, #0x30] + movs r2, #0x30 + ldrsh r0, [r5, r2] + cmp r0, #0x3f + bgt _0816FEB6 + adds r0, r1, #1 + strh r0, [r5, #0x30] +_0816FEB6: + ldr r1, _0816FEEC + ldrh r0, [r5, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r0, #0x12 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816FEEC: .4byte gUnknown_82FA8CC + thumb_func_end sub_0816FE38 + + thumb_func_start sub_0816FEF0 +sub_0816FEF0: @ 0x0816FEF0 + push {r4, r5, lr} + ldr r5, _0816FF68 + ldrh r4, [r5] + movs r0, #0 + strh r0, [r5] + movs r0, #1 + bl RegisterRamReset + movs r0, #0 + movs r1, #0x80 + bl sub_08001220 + strh r4, [r5] + ldr r1, _0816FF6C + ldr r0, _0816FF70 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + bl sub_08153498 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080765E4 + bl sub_08083E04 + bl sub_0815265C + movs r0, #0 + bl sub_0815340C + ldr r0, _0816FF74 + ldrh r0, [r0] + cmp r0, #0 + beq _0816FF40 + cmp r0, #2 + bne _0816FF44 +_0816FF40: + bl sub_08083DF4 +_0816FF44: + ldr r0, _0816FF78 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl SetPokemonCryStereo + ldr r0, _0816FF7C + movs r1, #0xe0 + lsls r1, r1, #9 + bl sub_08000BAC + ldr r0, _0816FF80 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816FF68: .4byte 0x04000208 +_0816FF6C: .4byte gUnknown_3002360 +_0816FF70: .4byte 0x00000439 +_0816FF74: .4byte gUnknown_3005F50 +_0816FF78: .4byte gUnknown_3005AF0 +_0816FF7C: .4byte gUnknown_2000000 +_0816FF80: .4byte sub_08085B98 + thumb_func_end sub_0816FEF0 + + thumb_func_start sub_0816FF84 +sub_0816FF84: @ 0x0816FF84 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0 + bl sub_080006F0 + ldr r4, _0816FFB0 + movs r0, #0x89 + lsls r0, r0, #4 + bl sub_08000BC8 + str r0, [r4] + ldr r1, _0816FFB4 + adds r2, r0, r1 + movs r1, #0 + strh r1, [r2] + str r5, [r0] + ldr r0, _0816FFB8 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0816FFB0: .4byte gUnknown_203B99C +_0816FFB4: .4byte 0x0000088C +_0816FFB8: .4byte sub_0816FFBC + thumb_func_end sub_0816FF84 + + thumb_func_start sub_0816FFBC +sub_0816FFBC: @ 0x0816FFBC + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + bl sub_0800668C + bl sub_08008424 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08170048 + movs r0, #1 + movs r2, #2 + bl sub_08001800 + ldr r0, _0817004C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #0x23 + movs r2, #0xd0 + bl sub_080981B4 + bl sub_08199640 + ldr r0, _08170050 + bl sub_08000540 + ldr r0, _08170054 + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 +_08170048: .4byte gUnknown_85C6124 +_0817004C: .4byte gUnknown_85C612C +_08170050: .4byte sub_0817006C +_08170054: .4byte sub_08170058 + thumb_func_end sub_0816FFBC + + thumb_func_start sub_08170058 +sub_08170058: @ 0x08170058 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08170058 + + thumb_func_start sub_0817006C +sub_0817006C: @ 0x0817006C + push {lr} + bl sub_08170088 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + bl sub_08199668 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817006C + + thumb_func_start sub_08170088 +sub_08170088: @ 0x08170088 + push {r4, r5, lr} + sub sp, #0xc + ldr r1, _081700A8 + ldr r0, [r1] + ldr r2, _081700AC + adds r0, r0, r2 + ldrh r0, [r0] + adds r4, r1, #0 + cmp r0, #6 + bls _0817009E + b _08170202 +_0817009E: + lsls r0, r0, #2 + ldr r1, _081700B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081700A8: .4byte gUnknown_203B99C +_081700AC: .4byte 0x0000088C +_081700B0: .4byte _081700B4 +_081700B4: @ jump table + .4byte _081700D0 @ case 0 + .4byte _081700F8 @ case 1 + .4byte _08170144 @ case 2 + .4byte _0817016C @ case 3 + .4byte _08170180 @ case 4 + .4byte _081701AC @ case 5 + .4byte _081701D4 @ case 6 +_081700D0: + ldr r0, [r4] + adds r0, #8 + movs r1, #0 + bl sub_08122CE8 + movs r0, #0 + movs r1, #0 + bl sub_08124294 + movs r0, #1 + movs r1, #1 + bl sub_081240E0 + ldr r1, [r4] + ldr r0, _081700F4 + adds r1, r1, r0 + b _081701C4 + .align 2, 0 +_081700F4: .4byte 0x0000088C +_081700F8: + movs r0, #1 + movs r1, #0 + movs r2, #0x23 + movs r3, #0xd + bl sub_08197F44 + ldr r2, _08170140 + movs r0, #2 + str r0, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + movs r0, #0 + movs r1, #0 + movs r2, #0x23 + movs r3, #0xd + bl sub_08197F44 + bl sub_08170214 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + b _081701B8 + .align 2, 0 +_08170140: .4byte gUnknown_85C611C +_08170144: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001200 + movs r0, #0 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r0, _08170164 + ldr r1, [r0] + ldr r0, _08170168 + adds r1, r1, r0 + b _081701C4 + .align 2, 0 +_08170164: .4byte gUnknown_203B99C +_08170168: .4byte 0x0000088C +_0817016C: + ldr r0, _0817017C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08170202 + ldr r1, [r4] + b _081701C0 + .align 2, 0 +_0817017C: .4byte gUnknown_2037C74 +_08170180: + bl sub_081230B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08170192 + bl sub_08170214 + b _08170202 +_08170192: + cmp r0, #3 + blt _08170202 + cmp r0, #5 + bgt _08170202 + ldr r0, _081701A4 + ldr r1, [r0] + ldr r0, _081701A8 + adds r1, r1, r0 + b _081701C4 + .align 2, 0 +_081701A4: .4byte gUnknown_203B99C +_081701A8: .4byte 0x0000088C +_081701AC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 +_081701B8: + bl sub_080A139C + ldr r0, _081701CC + ldr r1, [r0] +_081701C0: + ldr r2, _081701D0 + adds r1, r1, r2 +_081701C4: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _08170202 + .align 2, 0 +_081701CC: .4byte gUnknown_203B99C +_081701D0: .4byte 0x0000088C +_081701D4: + ldr r0, _0817020C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08170202 + bl sub_08123068 + ldr r4, _08170210 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000540 + ldr r0, [r4] + cmp r0, #0 + beq _081701FE + bl sub_08000BF0 + str r5, [r4] +_081701FE: + bl sub_080034D4 +_08170202: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817020C: .4byte gUnknown_2037C74 +_08170210: .4byte gUnknown_203B99C + thumb_func_end sub_08170088 + + thumb_func_start sub_08170214 +sub_08170214: @ 0x08170214 + push {lr} + sub sp, #0xc + ldr r0, _08170240 + ldr r2, [r0] + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _08170244 + adds r2, #0xc + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + bl sub_08199654 + b _08170254 + .align 2, 0 +_08170240: .4byte gUnknown_203B99C +_08170244: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #0 + movs r1, #3 + bl sub_08003528 +_08170254: + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08170214 + + thumb_func_start sub_0817025C +sub_0817025C: @ 0x0817025C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, _08170404 + ldrb r4, [r0] + ldr r0, _08170408 + movs r1, #0 + strh r1, [r0] + ldr r0, _0817040C + strh r1, [r0] + ldr r1, _08170410 + movs r0, #0x48 + bl sub_08001144 + ldr r1, _08170414 + movs r0, #0x4a + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #8 + movs r0, #0 + bl sub_08001200 + ldr r1, _08170418 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + movs r1, #4 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_0811887C + movs r0, #1 + movs r1, #1 + movs r2, #1 + bl sub_0811887C + movs r0, #1 + movs r1, #3 + movs r2, #1 + bl sub_0811887C + ldr r0, _0817041C + adds r4, r4, r0 + ldrb r0, [r4] + ldr r1, _08170420 + mov sb, r1 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + add r4, sb + ldrb r7, [r4, #6] + ldrh r6, [r4, #0x38] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _08170424 + bl sub_0806F0C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r0, _08170424 + bl sub_0806F0C4 + mov sl, r0 + mov r2, sl + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + ldrb r1, [r4, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #4 + mov r8, r1 + mov r2, r8 + orrs r0, r2 + strb r0, [r4, #5] + lsls r5, r7, #4 + adds r5, r5, r7 + lsls r5, r5, #2 + add r5, sb + ldrb r1, [r5, #5] + adds r0, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + add r1, sb + ldrb r2, [r1, #5] + adds r0, r3, #0 + ands r0, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [sp, #0x14] + lsls r6, r0, #4 + adds r6, r6, r0 + lsls r6, r6, #2 + mov r1, sb + adds r7, r6, r1 + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0x44 + str r3, [sp, #0x18] + bl memcpy + mov r2, sl + lsls r4, r2, #4 + add r4, sl + lsls r4, r4, #2 + adds r0, r4, #0 + add r0, sb + mov r8, r0 + adds r1, r5, #0 + movs r2, #0x44 + bl memcpy + ldrb r1, [r7, #1] + ldr r3, [sp, #0x18] + adds r0, r3, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r7, #1] + mov r2, r8 + ldrb r0, [r2, #1] + ands r3, r0 + orrs r3, r1 + strb r3, [r2, #1] + movs r0, #0x1c + add sb, r0 + add r6, sb + ldr r1, _08170424 + str r1, [r6] + add r4, sb + str r1, [r4] + mov r0, sp + bl sub_080A63F8 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _08170428 + bl sub_080A6610 + mov r0, sp + ldrb r0, [r0, #9] + ldr r1, _0817042C + mov r2, sp + ldrh r2, [r2, #0xa] + bl sub_080A6588 + ldr r0, _08170430 + mov r1, sp + ldrb r1, [r1, #8] + lsls r1, r1, #4 + movs r2, #0x20 + bl sub_080A11BC + ldr r1, _08170434 + ldrh r0, [r7, #0x20] + rsbs r0, r0, #0 + adds r0, #0x20 + strh r0, [r1] + ldr r1, _08170438 + ldrh r0, [r7, #0x22] + rsbs r0, r0, #0 + subs r0, #0x20 + strh r0, [r1] + ldr r1, _0817043C + ldr r2, [sp, #0x10] + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xa0 + lsls r1, r1, #2 + strh r1, [r0, #0xa] + mov r1, sp + ldrh r1, [r1, #0x14] + strh r1, [r0, #8] + mov r2, sl + strh r2, [r0, #0xc] + ldr r1, _08170440 + str r1, [r0] + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08170404: .4byte gUnknown_20380D6 +_08170408: .4byte gUnknown_2022AD8 +_0817040C: .4byte gUnknown_2022ADA +_08170410: .4byte 0x00003F3F +_08170414: .4byte 0x00003F3D +_08170418: .4byte 0x00003F42 +_0817041C: .4byte gUnknown_3005AD0 +_08170420: .4byte gUnknown_20205AC +_08170424: .4byte sub_08007140 +_08170428: .4byte gUnknown_8C2EB40 +_0817042C: .4byte gUnknown_8C2EAF4 +_08170430: .4byte gUnknown_8C2DE48 +_08170434: .4byte gUnknown_2022ACC +_08170438: .4byte gUnknown_2022ACE +_0817043C: .4byte gUnknown_3005B60 +_08170440: .4byte sub_08170444 + thumb_func_end sub_0817025C + + thumb_func_start sub_08170444 +sub_08170444: @ 0x08170444 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0817048C + ldrb r0, [r0] + mov r8, r0 + ldr r1, _08170490 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r1, [r5, #0xa] + ldrh r0, [r5, #0x22] + adds r1, r1, r0 + movs r3, #0 + strh r1, [r5, #0x22] + ldr r2, _08170494 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x18 + ldrh r4, [r2] + adds r0, r0, r4 + strh r0, [r2] + movs r0, #0xff + ands r1, r0 + strh r1, [r5, #0x22] + movs r1, #0x26 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _081704D4 + cmp r0, #1 + bgt _08170498 + cmp r0, #0 + beq _0817049E + b _081705F8 + .align 2, 0 +_0817048C: .4byte gUnknown_20380D6 +_08170490: .4byte gUnknown_3005B60 +_08170494: .4byte gUnknown_2022ACE +_08170498: + cmp r0, #2 + beq _081704EC + b _081705F8 +_0817049E: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bgt _081704AE + b _081705F8 +_081704AE: + strh r3, [r5, #0x1e] + ldrh r1, [r5, #0x20] + adds r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r2, #0x20 + ldrsh r0, [r5, r2] + cmp r0, #8 + beq _081704D2 + b _081705F8 +_081704D2: + b _081704E4 +_081704D4: + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1e + beq _081704E4 + b _081705F8 +_081704E4: + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] + b _081705F8 +_081704EC: + ldrh r0, [r5, #0x1e] + adds r1, r0, #1 + strh r1, [r5, #0x1e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _081705F8 + strh r3, [r5, #0x1e] + ldrh r1, [r5, #0x20] + subs r1, #1 + strh r1, [r5, #0x20] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x20 + ldrsh r4, [r5, r0] + cmp r4, #0 + bne _081705F8 + movs r0, #0 + bl sub_080A4044 + ldr r0, _08170604 + strh r4, [r0] + ldr r0, _08170608 + strh r4, [r0] + ldr r4, _0817060C + movs r0, #0x48 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x4a + adds r1, r4, #0 + bl sub_08001144 + bl sub_080A46B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08170550 + movs r0, #1 + movs r1, #3 + movs r2, #0 + bl sub_0811887C +_08170550: + movs r0, #0 + bl sub_080011D0 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #8 + adds r0, r2, #0 + eors r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r4, #8 + ldrsh r1, [r5, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _08170610 + adds r0, r0, r6 + bl sub_08006E00 + movs r0, #0xc + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_0811887C + ldr r0, _08170614 + add r0, r8 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r2, [r1, #6] + mov r8, r2 + ldrh r4, [r1, #0x38] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r3, [r1, #5] + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + movs r5, #4 + orrs r0, r5 + strb r0, [r1, #5] + mov r0, r8 + lsls r1, r0, #4 + add r1, r8 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r3, [r1, #5] + adds r0, r2, #0 + ands r0, r3 + orrs r0, r5 + strb r0, [r1, #5] + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #5] + ands r2, r1 + orrs r2, r5 + strb r2, [r0, #5] + adds r0, r7, #0 + bl sub_080A34E4 +_081705F8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08170604: .4byte gUnknown_2022AD8 +_08170608: .4byte gUnknown_2022ADA +_0817060C: .4byte 0x00003F3F +_08170610: .4byte gUnknown_20205AC +_08170614: .4byte gUnknown_3005AD0 + thumb_func_end sub_08170444 + + thumb_func_start sub_08170618 +sub_08170618: @ 0x08170618 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081706F0 + adds r2, r2, r0 + ldrb r0, [r2] + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _081706F4 + adds r5, r5, r0 + ldrb r1, [r5, #6] + mov sl, r1 + ldrh r4, [r5, #0x38] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081706F8 + bl sub_080084EC + mov r2, sb + strb r0, [r2] + ldr r0, _081706FC + bl sub_080084EC + strb r0, [r7] + ldrb r0, [r5, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r3, r1, #0 + orrs r0, r3 + lsls r6, r4, #4 + adds r6, r6, r4 + lsls r6, r6, #2 + ldr r2, _081706F4 + adds r6, r6, r2 + ldrb r4, [r6, #5] + lsrs r4, r4, #4 + lsls r4, r4, #4 + orrs r4, r3 + lsls r0, r0, #1 + ldr r1, _08170700 + mov r8, r1 + add r0, r8 + mov r2, sb + ldrb r1, [r2] + lsls r1, r1, #4 + adds r1, r3, r1 + movs r2, #0x20 + str r3, [sp] + bl sub_080A1200 + lsls r4, r4, #1 + add r4, r8 + ldrb r0, [r7] + lsls r0, r0, #4 + ldr r3, [sp] + adds r3, r3, r0 + adds r0, r4, #0 + adds r1, r3, #0 + movs r2, #0x20 + bl sub_080A1200 + mov r0, sb + ldrb r1, [r0] + lsls r1, r1, #4 + ldrb r2, [r5, #5] + movs r3, #0xf + adds r0, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + mov r2, sl + lsls r1, r2, #4 + add r1, sl + lsls r1, r1, #2 + ldr r0, _081706F4 + adds r1, r1, r0 + mov r0, sb + ldrb r2, [r0] + lsls r2, r2, #4 + ldrb r4, [r1, #5] + adds r0, r3, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r1, #5] + ldrb r0, [r7] + lsls r0, r0, #4 + ldrb r1, [r6, #5] + ands r3, r1 + orrs r3, r0 + strb r3, [r6, #5] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081706F0: .4byte gUnknown_3005AD0 +_081706F4: .4byte gUnknown_20205AC +_081706F8: .4byte 0x0000D709 +_081706FC: .4byte 0x0000D70A +_08170700: .4byte gUnknown_20373B4 + thumb_func_end sub_08170618 + + thumb_func_start sub_08170704 +sub_08170704: @ 0x08170704 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, sp + adds r1, #1 + ldr r0, _0817072C + ldrb r2, [r0] + mov r0, sp + bl sub_08170618 + adds r0, r4, #0 + bl sub_080A34E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817072C: .4byte gUnknown_20380D6 + thumb_func_end sub_08170704 + + thumb_func_start sub_08170730 +sub_08170730: @ 0x08170730 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081707B8 + adds r0, r0, r1 + ldrb r0, [r0] + ldr r1, _081707BC + mov r8, r1 + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + add r5, r8 + ldrb r0, [r5, #6] + mov sb, r0 + ldrh r6, [r5, #0x38] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _081707C0 + bl sub_08008564 + ldr r0, _081707C4 + bl sub_08008564 + ldr r0, _081707C8 + bl sub_0800851C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081707CC + bl sub_0800851C + lsls r0, r0, #0x18 + lsls r4, r4, #4 + ldrb r2, [r5, #5] + movs r3, #0xf + adds r1, r3, #0 + ands r1, r2 + orrs r1, r4 + strb r1, [r5, #5] + mov r1, sb + lsls r2, r1, #4 + add r2, sb + lsls r2, r2, #2 + add r2, r8 + ldrb r5, [r2, #5] + adds r1, r3, #0 + ands r1, r5 + orrs r1, r4 + strb r1, [r2, #5] + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + add r1, r8 + lsrs r0, r0, #0x14 + ldrb r2, [r1, #5] + ands r3, r2 + orrs r3, r0 + strb r3, [r1, #5] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081707B8: .4byte gUnknown_3005AD0 +_081707BC: .4byte gUnknown_20205AC +_081707C0: .4byte 0x0000D709 +_081707C4: .4byte 0x0000D70A +_081707C8: .4byte 0x0000D6FF +_081707CC: .4byte 0x0000D704 + thumb_func_end sub_08170730 + + thumb_func_start sub_081707D0 +sub_081707D0: @ 0x081707D0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081707EC + ldrb r0, [r0] + bl sub_08170730 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081707EC: .4byte gUnknown_20380D6 + thumb_func_end sub_081707D0 + + thumb_func_start sub_081707F0 +sub_081707F0: @ 0x081707F0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08170810 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _08170814 + ldrh r0, [r2] + strh r0, [r1, #0x1c] + ldrh r0, [r2, #2] + strh r0, [r1, #0x1e] + ldr r0, _08170818 + str r0, [r1] + bx lr + .align 2, 0 +_08170810: .4byte gUnknown_3005B60 +_08170814: .4byte gUnknown_20380BE +_08170818: .4byte sub_0817081C + thumb_func_end sub_081707F0 + + thumb_func_start sub_0817081C +sub_0817081C: @ 0x0817081C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08170868 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #8] + adds r0, #1 + movs r6, #0 + adds r1, r0, #1 + strh r1, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x1e + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _081708DC + strh r6, [r4, #8] + ldr r0, _0817086C + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r3, #0x1c + ldrsh r0, [r4, r3] + movs r1, #2 + cmp r0, #0 + bne _0817085A + movs r1, #6 +_0817085A: + movs r3, #0xa + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _08170870 + cmp r0, #1 + beq _081708AC + b _081708DC + .align 2, 0 +_08170868: .4byte gUnknown_3005B60 +_0817086C: .4byte 0x0000D709 +_08170870: + ldrh r0, [r4, #0xc] + adds r0, #2 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08170882 + movs r0, #0x10 + strh r0, [r4, #0xc] +_08170882: + lsls r0, r2, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r0, r2 + orrs r0, r1 + ldrb r2, [r4, #0xc] + ldr r3, _081708A8 + movs r1, #1 + bl sub_0806F410 + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0x10 + bne _081708DC + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + b _081708DC + .align 2, 0 +_081708A8: .4byte 0x00007F74 +_081708AC: + ldrh r0, [r4, #0xc] + subs r0, #2 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081708BA + strh r6, [r4, #0xc] +_081708BA: + lsls r0, r2, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r0, r2 + orrs r0, r1 + ldrb r2, [r4, #0xc] + ldr r3, _081708E4 + movs r1, #1 + bl sub_0806F410 + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0 + bne _081708DC + adds r0, r5, #0 + bl sub_080A34E4 +_081708DC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081708E4: .4byte 0x00007F74 + thumb_func_end sub_0817081C + + thumb_func_start sub_081708E8 +sub_081708E8: @ 0x081708E8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08170914 + ldr r0, _08170918 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r5, [r0] + ldr r1, _0817091C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08170936 + cmp r0, #1 + bgt _08170920 + cmp r0, #0 + beq _08170926 + b _08170988 + .align 2, 0 +_08170914: .4byte gUnknown_2023E88 +_08170918: .4byte gUnknown_20380D6 +_0817091C: .4byte gUnknown_3005B60 +_08170920: + cmp r0, #2 + beq _08170968 + b _08170988 +_08170926: + adds r0, r5, #0 + movs r1, #0 + bl sub_080A6B38 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x1c] + b _0817095A +_08170936: + 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_080A6A7C + adds r0, r5, #0 + bl sub_080A7734 + movs r0, #0x1c + ldrsh r1, [r4, r0] + ldr r0, _08170964 + cmp r1, r0 + ble _08170988 +_0817095A: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08170988 + .align 2, 0 +_08170964: .4byte 0x000002CF +_08170968: + adds r0, r5, #0 + bl sub_080A6C0C + ldr r1, _08170990 + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #0 + bl sub_080A34E4 +_08170988: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08170990: .4byte gUnknown_20205AC + thumb_func_end sub_081708E8 + + thumb_func_start sub_08170994 +sub_08170994: @ 0x08170994 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081709CC + ldr r4, _081709D0 + ldrb r0, [r4] + adds r1, r0, r1 + ldrb r1, [r1] + mov sb, r1 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081709DC + ldr r1, _081709D4 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081709D8 + b _081709EC + .align 2, 0 +_081709CC: .4byte gUnknown_2023E88 +_081709D0: .4byte gUnknown_20380D6 +_081709D4: .4byte gUnknown_2023D12 +_081709D8: .4byte gUnknown_2024190 +_081709DC: + ldr r1, _08170A1C + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08170A20 +_081709EC: + adds r0, r0, r1 + movs r1, #0x26 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08170B68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r2, _08170A24 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r6, r0, r2 + movs r0, #8 + ldrsh r7, [r6, r0] + cmp r7, #0 + beq _08170A28 + cmp r7, #1 + beq _08170AA8 + b _08170AD2 + .align 2, 0 +_08170A1C: .4byte gUnknown_2023D12 +_08170A20: .4byte gUnknown_20243E8 +_08170A24: .4byte gUnknown_3005B60 +_08170A28: + ldr r5, _08170AA0 + ldrb r0, [r5] + movs r1, #0 + bl sub_080A5534 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + movs r1, #1 + bl sub_080A5534 + adds r1, r0, #0 + lsls r1, r1, #0x18 + ldr r2, _08170AA4 + mov r3, sb + lsls r0, r3, #4 + add r0, sb + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #5] + lsls r2, r2, #0x1c + lsrs r2, r2, #0x1e + adds r0, #0x43 + ldrb r3, [r0] + movs r0, #0x80 + lsls r0, r0, #0x16 + adds r1, r1, r0 + lsrs r1, r1, #0x18 + mov r0, r8 + str r0, [sp] + adds r0, r4, #0 + bl sub_08171B7C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x1c] + str r7, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A6E74 + adds r2, r0, #0 + ldrb r1, [r5] + movs r0, #0 + mov r3, r8 + bl sub_081727CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x1e] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _08170AD2 + .align 2, 0 +_08170AA0: .4byte gUnknown_20380D6 +_08170AA4: .4byte gUnknown_20205AC +_08170AA8: + movs r1, #0x1c + ldrsh r0, [r6, r1] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _08170AD2 + movs r3, #0x1e + ldrsh r0, [r6, r3] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _08170AD2 + adds r0, r5, #0 + bl sub_080A34E4 +_08170AD2: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08170994 + + thumb_func_start sub_08170AE0 +sub_08170AE0: @ 0x08170AE0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08170B04 + ldrh r0, [r0] + bl sub_08170B68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08076480 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08170B04: .4byte gUnknown_2023EAC + thumb_func_end sub_08170AE0 + + thumb_func_start sub_08170B08 +sub_08170B08: @ 0x08170B08 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08170B2C + ldrh r0, [r0] + bl sub_08170B68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080764F0 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08170B2C: .4byte gUnknown_2023EAC + thumb_func_end sub_08170B08 + + thumb_func_start sub_08170B30 +sub_08170B30: @ 0x08170B30 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08170B48 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #8] + cmp r0, #5 + bne _08170B54 + ldr r1, _08170B4C + ldr r0, _08170B50 + b _08170B58 + .align 2, 0 +_08170B48: .4byte gUnknown_2024174 +_08170B4C: .4byte gUnknown_20380BE +_08170B50: .4byte 0x0000FFFF +_08170B54: + ldr r1, _08170B64 + movs r0, #0 +_08170B58: + strh r0, [r1, #0xe] + adds r0, r2, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08170B64: .4byte gUnknown_20380BE + thumb_func_end sub_08170B30 + + thumb_func_start sub_08170B68 +sub_08170B68: @ 0x08170B68 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #1 + cmp r0, #0xb + bhi _08170BE0 + lsls r0, r0, #2 + ldr r1, _08170B80 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08170B80: .4byte _08170B84 +_08170B84: @ jump table + .4byte _08170BB4 @ case 0 + .4byte _08170BB8 @ case 1 + .4byte _08170BBC @ case 2 + .4byte _08170BE0 @ case 3 + .4byte _08170BC0 @ case 4 + .4byte _08170BC4 @ case 5 + .4byte _08170BC8 @ case 6 + .4byte _08170BCC @ case 7 + .4byte _08170BD0 @ case 8 + .4byte _08170BD4 @ case 9 + .4byte _08170BD8 @ case 10 + .4byte _08170BDC @ case 11 +_08170BB4: + movs r0, #4 + b _08170BE2 +_08170BB8: + movs r0, #3 + b _08170BE2 +_08170BBC: + movs r0, #1 + b _08170BE2 +_08170BC0: + movs r0, #2 + b _08170BE2 +_08170BC4: + movs r0, #5 + b _08170BE2 +_08170BC8: + movs r0, #6 + b _08170BE2 +_08170BCC: + movs r0, #7 + b _08170BE2 +_08170BD0: + movs r0, #8 + b _08170BE2 +_08170BD4: + movs r0, #9 + b _08170BE2 +_08170BD8: + movs r0, #0xa + b _08170BE2 +_08170BDC: + movs r0, #0xb + b _08170BE2 +_08170BE0: + movs r0, #0 +_08170BE2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08170B68 + + thumb_func_start sub_08170BE8 +sub_08170BE8: @ 0x08170BE8 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + mov sl, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _08170CB0 + ldrh r0, [r0] + bl sub_08170B68 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + ldr r1, _08170CB4 + adds r0, r0, r1 + movs r1, #0x20 + movs r2, #0x50 + movs r3, #0x1d + bl sub_08006B0C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _08170CB8 + mov sb, r1 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r6, r4, r1 + movs r0, #0x22 + strh r0, [r6, #0x2e] + ldr r2, _08170CBC + mov r8, r2 + ldrb r0, [r2] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x10 + strh r0, [r6, #0x32] + mov r0, sb + adds r0, #0x1c + adds r4, r4, r0 + ldr r0, _08170CC0 + str r0, [r4] + ldr r0, _08170CC4 + ldr r0, [r0] + ldr r3, [r0, #8] + ldr r1, _08170CC8 + mov r2, r8 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + lsls r1, r1, #1 + ldrb r2, [r3, #9] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #9] + ldr r1, _08170CCC + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + ldr r1, _08170CD0 + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08170CB0: .4byte gUnknown_2023EAC +_08170CB4: .4byte gUnknown_82FCF94 +_08170CB8: .4byte gUnknown_20205AC +_08170CBC: .4byte gUnknown_20380D7 +_08170CC0: .4byte sub_08170EE8 +_08170CC4: .4byte gUnknown_2024174 +_08170CC8: .4byte gUnknown_2023E88 +_08170CCC: .4byte gUnknown_3005B60 +_08170CD0: .4byte sub_08170CD4 + thumb_func_end sub_08170BE8 + + thumb_func_start sub_08170CD4 +sub_08170CD4: @ 0x08170CD4 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _08170D04 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #8] + ldr r2, _08170D08 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x2e] + ldr r0, _08170D0C + cmp r1, r0 + bne _08170CFE + adds r0, r3, #0 + bl sub_080A34E4 +_08170CFE: + pop {r0} + bx r0 + .align 2, 0 +_08170D04: .4byte gUnknown_3005B60 +_08170D08: .4byte gUnknown_20205AC +_08170D0C: .4byte 0x0000FFFF + thumb_func_end sub_08170CD4 + + thumb_func_start sub_08170D10 +sub_08170D10: @ 0x08170D10 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08170D30 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08170D34 + movs r6, #0x20 + movs r5, #0xb + b _08170D38 + .align 2, 0 +_08170D30: .4byte gUnknown_2022C90 +_08170D34: + movs r6, #0x17 + movs r5, #5 +_08170D38: + ldr r0, _08170DF0 + ldrh r0, [r0] + bl sub_08170B68 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A7BAC + adds r3, r0, #0 + adds r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08170DF4 + adds r0, r0, r1 + adds r1, r6, #0 + adds r1, #0x20 + movs r2, #0x50 + orrs r5, r2 + adds r2, r5, #0 + bl sub_08006B0C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _08170DF8 + mov sb, r0 + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r6, r4, r0 + movs r0, #0x22 + strh r0, [r6, #0x2e] + ldr r1, _08170DFC + mov r8, r1 + ldrb r0, [r1] + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x30] + mov r1, r8 + ldrb r0, [r1] + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0x10 + strh r0, [r6, #0x32] + movs r0, #0x1c + add sb, r0 + add r4, sb + ldr r0, _08170E00 + str r0, [r4] + movs r0, #0 + bl sub_080A631C + ldr r1, _08170E04 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + ldr r1, _08170E08 + str r1, [r0] + ldr r1, _08170E0C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + ldr r1, _08170E10 + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08170DF0: .4byte gUnknown_2023EAC +_08170DF4: .4byte gUnknown_82FCF94 +_08170DF8: .4byte gUnknown_20205AC +_08170DFC: .4byte gUnknown_20380D7 +_08170E00: .4byte sub_08007140 +_08170E04: .4byte gUnknown_2023E88 +_08170E08: .4byte sub_08039AC8 +_08170E0C: .4byte gUnknown_3005B60 +_08170E10: .4byte sub_08170E14 + thumb_func_end sub_08170D10 + + thumb_func_start sub_08170E14 +sub_08170E14: @ 0x08170E14 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _08170E74 + movs r0, #0 + bl sub_080A631C + ldr r1, _08170E78 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _08170E6E + movs r0, #0x3d + movs r1, #0 + bl sub_080A307C + ldr r0, _08170E7C + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08170E80 + str r1, [r0] + ldr r0, _08170E84 + movs r1, #0xa + bl sub_080A8878 + ldr r0, _08170E88 + str r0, [r4] +_08170E6E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08170E74: .4byte gUnknown_20205AC +_08170E78: .4byte gUnknown_2023E88 +_08170E7C: .4byte gUnknown_3005B60 +_08170E80: .4byte sub_08170EE8 +_08170E84: .4byte sub_08170E8C +_08170E88: .4byte sub_08170CD4 + thumb_func_end sub_08170E14 + + thumb_func_start sub_08170E8C +sub_08170E8C: @ 0x08170E8C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _08170EE0 + movs r0, #0 + bl sub_080A631C + ldr r4, _08170EE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08170ED8 + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #0 + bl sub_08007EC0 + adds r0, r5, #0 + bl sub_080A8964 +_08170ED8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08170EE0: .4byte gUnknown_20205AC +_08170EE4: .4byte gUnknown_2023E88 + thumb_func_end sub_08170E8C + + thumb_func_start sub_08170EE8 +sub_08170EE8: @ 0x08170EE8 + 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, _08170F10 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r0, _08170F14 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08170F10: .4byte 0x0000FFD8 +_08170F14: .4byte sub_08170F18 + thumb_func_end sub_08170EE8 + + thumb_func_start sub_08170F18 +sub_08170F18: @ 0x08170F18 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08170FB6 + ldr r0, _08170F3C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #8] + cmp r0, #5 + bne _08170F44 + ldr r0, _08170F40 + str r0, [r4, #0x1c] + b _08170FB6 + .align 2, 0 +_08170F3C: .4byte gUnknown_2024174 +_08170F40: .4byte sub_08171A90 +_08170F44: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x26] + ldrh r2, [r4, #0x22] + adds r0, 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 +_08170F6C: + strh r2, [r0] + subs r0, #2 + cmp r0, r1 + bge _08170F6C + movs r0, #0 + strh r0, [r4, #0x38] + ldr r0, _08170FC0 + str r0, [r4, #0x1c] + ldr r0, _08170FC4 + ldrh r0, [r0] + bl sub_08170B68 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xb + bgt _08170FB6 + cmp r5, #0 + blt _08170FB6 + ldrh r0, [r4, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r5, [sp] + movs r2, #1 + movs r3, #0x1c + bl sub_08171B7C + ldr r0, _08170FC8 + ldrb r1, [r0] + movs r0, #0 + movs r2, #0xe + adds r3, r5, #0 + bl sub_081727CC +_08170FB6: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08170FC0: .4byte sub_08170FCC +_08170FC4: .4byte gUnknown_2023EAC +_08170FC8: .4byte gUnknown_20380D7 + thumb_func_end sub_08170F18 + + thumb_func_start sub_08170FCC +sub_08170FCC: @ 0x08170FCC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _08171008 + ldr r0, _08171010 + movs r1, #0x32 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x38] + ldr r0, _08171014 + str r0, [r4, #0x1c] + ldr r2, _08171018 + ldr r1, _0817101C + ldr r0, _08171020 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x30] +_08171008: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08171010: .4byte sub_080A8A40 +_08171014: .4byte sub_08171024 +_08171018: .4byte gUnknown_20205AC +_0817101C: .4byte gUnknown_2023E88 +_08171020: .4byte gUnknown_20380D7 + thumb_func_end sub_08170FCC + + thumb_func_start sub_08171024 +sub_08171024: @ 0x08171024 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r1, _08171068 + ldr r0, _0817106C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r4, [r0] + ldrh r0, [r7, #0x38] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08171070 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrh r0, [r5, #0xa] + adds r0, #1 + strh r0, [r5, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + bne _08171056 + movs r0, #0x3c + bl sub_080A306C +_08171056: + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _081710CC + cmp r0, #1 + bgt _08171074 + cmp r0, #0 + beq _0817107A + b _08171138 + .align 2, 0 +_08171068: .4byte gUnknown_2023E88 +_0817106C: .4byte gUnknown_20380D7 +_08171070: .4byte gUnknown_3005B60 +_08171074: + cmp r0, #2 + beq _08171110 + b _08171138 +_0817107A: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A6B38 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x1c] + ldr r1, _081710BC + movs r0, #0x1c + str r0, [r1] + ldr r2, _081710C0 + ldr r1, _081710C4 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + ldrh r0, [r0, #0x22] + adds r1, r1, r0 + ldrh r0, [r7, #0x26] + ldrh r7, [r7, #0x22] + adds r0, r0, r7 + subs r1, r1, r0 + strh r1, [r2] + ldr r4, _081710C8 + ldrh r0, [r2] + lsls r0, r0, #8 + movs r1, #0x1c + bl __udivsi3 + strh r0, [r4] + strh r0, [r5, #0xc] + b _0817112A + .align 2, 0 +_081710BC: .4byte gUnknown_300601C +_081710C0: .4byte gUnknown_3006024 +_081710C4: .4byte gUnknown_20205AC +_081710C8: .4byte gUnknown_3006020 +_081710CC: + 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_080A6A7C + ldrh r0, [r5, #0xc] + ldrh r1, [r5, #0xe] + adds r0, r0, r1 + strh r0, [r5, #0xe] + ldr r0, _08171108 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r2, #0xe + ldrsh r0, [r5, r2] + rsbs r0, r0, #0 + asrs r0, r0, #8 + strh r0, [r1, #0x26] + movs r0, #0x1c + ldrsh r1, [r5, r0] + ldr r0, _0817110C + cmp r1, r0 + ble _08171160 + b _0817112A + .align 2, 0 +_08171108: .4byte gUnknown_20205AC +_0817110C: .4byte 0x0000047F +_08171110: + adds r0, r4, #0 + bl sub_080A6C0C + ldr r1, _08171134 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0817112A: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _08171160 + .align 2, 0 +_08171134: .4byte gUnknown_20205AC +_08171138: + ldr r0, _08171168 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #0xa + ble _08171160 + adds r0, r6, #0 + bl sub_080A8964 + adds r0, r7, #0 + movs r1, #2 + bl sub_08007EC0 + movs r0, #0 + strh r0, [r7, #0x38] + ldr r0, _0817116C + str r0, [r7, #0x1c] +_08171160: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08171168: .4byte gUnknown_3005B60 +_0817116C: .4byte sub_08171170 + thumb_func_end sub_08171024 + + thumb_func_start sub_08171170 +sub_08171170: @ 0x08171170 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081711AA + 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_0806EFD4 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldr r0, _081711B0 + str r0, [r4, #0x1c] +_081711AA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081711B0: .4byte sub_081711B4 + thumb_func_end sub_08171170 + + thumb_func_start sub_081711B4 +sub_081711B4: @ 0x081711B4 + 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 _081711CA + cmp r1, #1 + beq _0817123E + b _0817126A +_081711CA: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x38] + adds r1, #4 + ldrh r2, [r4, #0x34] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + adds r1, r1, r0 + strh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x3f + ble _0817126A + ldrh r0, [r4, #0x36] + subs r0, #0xa + strh r0, [r4, #0x36] + ldr r1, _08171214 + adds r0, r2, r1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + cmp r0, #4 + bne _08171206 + movs r5, #1 +_08171206: + cmp r0, #2 + beq _08171226 + cmp r0, #2 + bgt _08171218 + cmp r0, #1 + beq _0817121E + b _08171236 + .align 2, 0 +_08171214: .4byte 0x00000101 +_08171218: + cmp r0, #3 + beq _0817122E + b _08171236 +_0817121E: + movs r0, #0x38 + bl sub_080A306C + b _0817126A +_08171226: + movs r0, #0x39 + bl sub_080A306C + b _0817126A +_0817122E: + movs r0, #0x3a + bl sub_080A306C + b _0817126A +_08171236: + movs r0, #0x3b + bl sub_080A306C + b _0817126A +_0817123E: + movs r2, #0x38 + ldrsh r0, [r4, r2] + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x38] + subs r1, #4 + ldrh r2, [r4, #0x34] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + subs r1, r1, r0 + strh r1, [r4, #0x38] + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _0817126A + strh r5, [r4, #0x38] + ldr r0, _08171298 + ands r0, r2 + strh r0, [r4, #0x34] +_0817126A: + cmp r5, #0 + beq _081712AE + movs r5, #0 + strh r5, [r4, #0x34] + movs r0, #0x40 + movs r1, #0x28 + bl sub_0806EFD4 + ldrh r1, [r4, #0x22] + adds r0, r0, r1 + strh r0, [r4, #0x22] + strh r5, [r4, #0x26] + ldr r0, _0817129C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _081712A4 + strh r5, [r4, #0x38] + ldr r0, _081712A0 + str r0, [r4, #0x1c] + b _081712AE + .align 2, 0 +_08171298: .4byte 0xFFFFFF00 +_0817129C: .4byte gUnknown_2024174 +_081712A0: .4byte sub_08171598 +_081712A4: + ldr r0, _081712B4 + str r0, [r4, #0x1c] + movs r0, #1 + strh r0, [r4, #0x36] + strh r5, [r4, #0x38] +_081712AE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081712B4: .4byte sub_081712B8 + thumb_func_end sub_081711B4 + + thumb_func_start sub_081712B8 +sub_081712B8: @ 0x081712B8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + adds r0, #1 + movs r5, #0 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _081712F4 + 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, #1 + bl sub_08007F70 + ldr r0, _081712FC + ldr r0, [r0] + ldr r0, [r0, #8] + strh r5, [r0, #0xc] + ldr r0, _08171300 + str r0, [r4, #0x1c] + movs r0, #0x17 + bl sub_080A306C +_081712F4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081712FC: .4byte gUnknown_2024174 +_08171300: .4byte sub_08171304 + thumb_func_end sub_081712B8 + + thumb_func_start sub_08171304 +sub_08171304: @ 0x08171304 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x34] + movs r1, #0xff + ands r1, r0 + cmp r1, #6 + bls _08171314 + b _0817154C +_08171314: + lsls r0, r1, #2 + ldr r1, _08171320 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08171320: .4byte _08171324 +_08171324: @ jump table + .4byte _08171340 @ case 0 + .4byte _08171392 @ case 1 + .4byte _081713D8 @ case 2 + .4byte _08171438 @ case 3 + .4byte _08171488 @ case 4 + .4byte _081714EC @ case 5 + .4byte _0817154C @ case 6 +_08171340: + ldr r1, _08171364 + ldr r5, [r1] + ldr r2, [r5, #8] + ldrh r3, [r2, #0xc] + movs r6, #0xc + ldrsh r0, [r2, r6] + adds r6, r1, #0 + cmp r0, #0xff + ble _08171368 + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldr r1, [r5, #8] + ldrb r0, [r1, #0xc] + strh r0, [r1, #0xc] + b _0817136E + .align 2, 0 +_08171364: .4byte gUnknown_2024174 +_08171368: + adds r0, r3, #0 + adds r0, #0xb0 + strh r0, [r2, #0xc] +_0817136E: + ldrh r0, [r4, #0x38] + adds r0, #1 + 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, #7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xe + bhi _08171390 + b _08171592 +_08171390: + b _08171428 +_08171392: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _08171444 + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x36] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x34] + adds r0, #1 + 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 _081713CE + adds r0, r4, #0 + movs r1, #2 + bl sub_08007FD0 + b _08171592 +_081713CE: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007FD0 + b _08171592 +_081713D8: + ldr r1, _081713FC + ldr r5, [r1] + ldr r2, [r5, #8] + ldrh r3, [r2, #0xc] + movs r6, #0xc + ldrsh r0, [r2, r6] + adds r6, r1, #0 + cmp r0, #0xff + ble _08171400 + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldr r1, [r5, #8] + ldrb r0, [r1, #0xc] + strh r0, [r1, #0xc] + b _08171406 + .align 2, 0 +_081713FC: .4byte gUnknown_2024174 +_08171400: + adds r0, r3, #0 + adds r0, #0xb0 + strh r0, [r2, #0xc] +_08171406: + ldrh r0, [r4, #0x38] + adds r0, #1 + 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, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x18 + bhi _08171428 + b _08171592 +_08171428: + ldr r0, [r6] + ldr r0, [r0, #8] + strh r3, [r0, #0xc] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + strh r3, [r4, #0x38] + b _08171592 +_08171438: + ldrh r0, [r4, #0x38] + adds r1, r0, #1 + strh r1, [r4, #0x38] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08171452 +_08171444: + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + b _08171592 +_08171452: + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x36] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x34] + adds r0, #1 + 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 _08171480 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007FD0 + b _08171488 +_08171480: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007FD0 +_08171488: + ldr r1, _081714AC + ldr r5, [r1] + ldr r2, [r5, #8] + ldrh r3, [r2, #0xc] + movs r6, #0xc + ldrsh r0, [r2, r6] + adds r6, r1, #0 + cmp r0, #0xff + ble _081714B0 + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldr r1, [r5, #8] + ldrb r0, [r1, #0xc] + strh r0, [r1, #0xc] + b _081714B6 + .align 2, 0 +_081714AC: .4byte gUnknown_2024174 +_081714B0: + adds r0, r3, #0 + adds r0, #0xb0 + strh r0, [r2, #0xc] +_081714B6: + ldrh r0, [r4, #0x38] + adds r0, #1 + 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, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bls _08171592 + ldr r0, [r6] + ldr r0, [r0, #8] + strh r3, [r0, #0xc] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + strh r3, [r4, #0x38] + ldrh r0, [r4, #0x36] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + b _08171592 +_081714EC: + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r1, r0, #0x18 + ldr r0, _0817151C + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #8] + cmp r1, r0 + bne _08171524 + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08171520 + str r0, [r4, #0x1c] + b _08171592 + .align 2, 0 +_0817151C: .4byte gUnknown_2024174 +_08171520: .4byte sub_08171598 +_08171524: + cmp r0, #4 + bne _08171538 + cmp r1, #3 + bne _08171538 + ldr r0, _08171534 + str r0, [r4, #0x1c] + b _0817153E + .align 2, 0 +_08171534: .4byte sub_081715BC +_08171538: + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] +_0817153E: + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + b _08171592 +_0817154C: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _08171592 + movs r0, #0 + strh r0, [r4, #0x38] + ldrh r1, [r4, #0x34] + ldr r0, _08171580 + ands r0, r1 + strh r0, [r4, #0x34] + adds r0, r4, #0 + movs r1, #3 + bl sub_08007F70 + movs r6, #0x36 + ldrsh r0, [r4, r6] + cmp r0, #0 + bge _08171584 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007F70 + b _0817158C + .align 2, 0 +_08171580: .4byte 0xFFFFFF00 +_08171584: + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 +_0817158C: + movs r0, #0x17 + bl sub_080A306C +_08171592: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08171304 + + thumb_func_start sub_08171598 +sub_08171598: @ 0x08171598 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x38] + adds r0, #1 + strh r0, [r1, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bne _081715B2 + movs r0, #0 + strh r0, [r1, #0x38] + ldr r0, _081715B8 + str r0, [r1, #0x1c] +_081715B2: + pop {r0} + bx r0 + .align 2, 0 +_081715B8: .4byte sub_081718C8 + thumb_func_end sub_08171598 + + thumb_func_start sub_081715BC +sub_081715BC: @ 0x081715BC + adds r3, r0, #0 + adds r3, #0x2c + ldrb r1, [r3] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r3] + ldr r1, _081715D8 + str r1, [r0, #0x1c] + movs r1, #0 + strh r1, [r0, #0x34] + strh r1, [r0, #0x36] + strh r1, [r0, #0x38] + bx lr + .align 2, 0 +_081715D8: .4byte sub_081715DC + thumb_func_end sub_081715BC + + thumb_func_start sub_081715DC +sub_081715DC: @ 0x081715DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r6, r0, #0 + ldr r7, _0817161C + ldrh r0, [r6, #0x36] + adds r0, #1 + movs r1, #0 + mov r8, r1 + strh r0, [r6, #0x36] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0x28 + bne _08171620 + movs r0, #0xfe + bl sub_080A306C + ldrb r1, [r6, #5] + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r1 + movs r1, #6 + movs r2, #0 + bl sub_080A22E8 + adds r0, r6, #0 + bl sub_081717D0 + b _081716A0 + .align 2, 0 +_0817161C: .4byte gUnknown_20380D7 +_08171620: + cmp r1, #0x3c + bne _0817163E + ldrb r1, [r6, #5] + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r1 + mov r1, r8 + str r1, [sp] + movs r1, #2 + movs r2, #6 + movs r3, #0 + bl sub_080A139C + b _081716A0 +_0817163E: + cmp r1, #0x5f + bne _08171664 + ldr r0, _0817165C + movs r1, #0 + strb r1, [r0] + movs r0, #1 + bl sub_08072498 + bl m4aMPlayAllStop + ldr r0, _08171660 + bl sub_080A306C + b _081716A0 + .align 2, 0 +_0817165C: .4byte gUnknown_202415D +_08171660: .4byte 0x00000213 +_08171664: + ldr r0, _081716AC + cmp r1, r0 + bne _081716A0 + ldr r5, _081716B0 + ldr r4, _081716B4 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + mov r0, r8 + strh r0, [r6, #0x2e] + ldr r0, _081716B8 + str r0, [r6, #0x1c] +_081716A0: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081716AC: .4byte 0x0000013B +_081716B0: .4byte gUnknown_20205AC +_081716B4: .4byte gUnknown_2023E88 +_081716B8: .4byte sub_081716BC + thumb_func_end sub_081715DC + + thumb_func_start sub_081716BC +sub_081716BC: @ 0x081716BC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08171728 + cmp r0, #1 + bgt _081716D4 + cmp r0, #0 + beq _081716DA + b _0817176E +_081716D4: + cmp r0, #2 + beq _0817175A + b _0817176E +_081716DA: + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + ldrb r1, [r4, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #1] + movs r1, #0xfd + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldr r0, [r4, #0x14] + ldrh r0, [r0, #2] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #0x10 + movs r1, #1 + lsls r1, r0 + ldr r0, _08171724 + str r0, [sp] + adds r0, r1, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08171766 + .align 2, 0 +_08171724: .4byte 0x00007FFF +_08171728: + ldrh r0, [r4, #0x30] + adds r1, r0, #1 + strh r1, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08171794 + movs r0, #0 + strh r0, [r4, #0x30] + ldrh r2, [r4, #0x32] + adds r2, #1 + strh r2, [r4, #0x32] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08171794 + b _08171766 +_0817175A: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08171766: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08171794 +_0817176E: + ldr r0, _0817179C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08171794 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + strh r5, [r4, #0x2e] + ldr r0, _081717A0 + str r0, [r4, #0x1c] +_08171794: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817179C: .4byte gUnknown_2037C74 +_081717A0: .4byte sub_081717A4 + thumb_func_end sub_081716BC + + thumb_func_start sub_081717A4 +sub_081717A4: @ 0x081717A4 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _081717BC + ldr r0, _081717B8 + strh r0, [r4, #0x2e] + b _081717C8 + .align 2, 0 +_081717B8: .4byte 0x0000FFFF +_081717BC: + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 +_081717C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081717A4 + + thumb_func_start sub_081717D0 +sub_081717D0: @ 0x081717D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + adds r1, r6, #0 + adds r1, #0x43 + ldrb r0, [r1] + cmp r0, #0 + beq _081717F0 + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + b _081717F8 +_081717F0: + movs r0, #0 + mov r8, r0 + movs r0, #1 + strb r0, [r1] +_081717F8: + movs r0, #4 + bl sub_08171B44 + movs r7, #0 + ldr r2, _0817187C + mov sb, r2 + movs r0, #0x1c + add r0, sb + mov sl, r0 +_0817180A: + movs r2, #0x20 + ldrsh r1, [r6, r2] + movs r0, #0x22 + ldrsh r2, [r6, r0] + ldr r0, _08171880 + mov r3, r8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _08171866 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + mov r2, sb + adds r5, r4, r2 + movs r0, #0x18 + strh r0, [r5, #0x2e] + ldr r0, _08171884 + lsls r1, r7, #2 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r6, #0x20] + adds r0, r0, r2 + strh r0, [r5, #0x32] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r2, [r6, #0x22] + adds r0, r0, r2 + strh r0, [r5, #0x36] + movs r0, #2 + ldrsb r0, [r1, r0] + strh r0, [r5, #0x38] + adds r0, r5, #0 + bl sub_080A619C + add r4, sl + ldr r0, _08171888 + str r0, [r4] + ldr r0, _0817188C + ldrb r1, [r0, #4] + adds r0, r5, #0 + bl sub_08007EC0 +_08171866: + adds r7, #1 + cmp r7, #2 + bls _0817180A + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817187C: .4byte gUnknown_20205AC +_08171880: .4byte gUnknown_85C630C +_08171884: .4byte gUnknown_85C6144 +_08171888: .4byte sub_08171890 +_0817188C: .4byte gUnknown_85C6270 + thumb_func_end sub_081717D0 + + thumb_func_start sub_08171890 +sub_08171890: @ 0x08171890 + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsrs r1, r2, #2 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081718C0 + adds r0, r4, #0 + bl sub_08006E00 +_081718C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08171890 + + thumb_func_start sub_081718C8 +sub_081718C8: @ 0x081718C8 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #1 + bl sub_08007EC0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + ldr r0, _0817197C + str r0, [r4, #0x1c] + ldr r0, _08171980 + ldrh r0, [r0] + bl sub_08170B68 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xb + bgt _0817191A + cmp r5, #0 + blt _0817191A + ldrh r0, [r4, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x22] + subs r1, #5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r5, [sp] + movs r2, #1 + movs r3, #0x1c + bl sub_08171B7C + ldr r0, _08171984 + ldrb r1, [r0] + movs r0, #1 + movs r2, #0xe + adds r3, r5, #0 + bl sub_081727CC +_0817191A: + ldr r6, _08171988 + ldr r5, _0817198C + ldr r4, _08171984 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007F70 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08007358 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #0x80 + lsls r1, r1, #5 + strh r1, [r0, #0x30] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817197C: .4byte sub_08171990 +_08171980: .4byte gUnknown_2023EAC +_08171984: .4byte gUnknown_20380D7 +_08171988: .4byte gUnknown_20205AC +_0817198C: .4byte gUnknown_2023E88 + thumb_func_end sub_081718C8 + + thumb_func_start sub_08171990 +sub_08171990: @ 0x08171990 + push {r4, r5, r6, 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 _081719AE + adds r2, r7, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_081719AE: + ldr r4, _081719DC + ldr r3, _081719E0 + ldr r2, _081719E4 + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _081719E8 + adds r0, r1, #0 + movs r1, #0 + bl sub_08007F70 + movs r5, #1 + b _08171A08 + .align 2, 0 +_081719DC: .4byte gUnknown_20205AC +_081719E0: .4byte gUnknown_2023E88 +_081719E4: .4byte gUnknown_20380D7 +_081719E8: + ldr r6, _08171A74 + adds r0, r6, #0 + ldrh r6, [r1, #0x30] + adds r0, r0, r6 + strh r0, [r1, #0x30] + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + strh r0, [r1, #0x26] +_08171A08: + adds r0, r7, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08171A6E + cmp r5, #0 + beq _08171A6E + ldr r4, _08171A78 + ldr r3, _08171A7C + ldr r2, _08171A80 + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r6, #0 + movs r5, #0 + strh r5, [r0, #0x26] + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r4 + ldr r0, _08171A84 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r1, [r0, #9] + lsls r1, r1, #0x1e + adds r2, #0x3e + lsrs r1, r1, #0x1f + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + strh r5, [r7, #0x2e] + ldr r0, _08171A88 + str r0, [r7, #0x1c] + ldr r0, _08171A8C + strb r6, [r0] + movs r0, #1 + bl sub_08072498 +_08171A6E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08171A74: .4byte 0xFFFFFEE0 +_08171A78: .4byte gUnknown_20205AC +_08171A7C: .4byte gUnknown_2023E88 +_08171A80: .4byte gUnknown_20380D7 +_08171A84: .4byte gUnknown_2024174 +_08171A88: .4byte sub_081717A4 +_08171A8C: .4byte gUnknown_202415D + thumb_func_end sub_08171990 + + thumb_func_start sub_08171A90 +sub_08171A90: @ 0x08171A90 + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x24] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x26] + ldrh r3, [r2, #0x22] + adds r0, r0, r3 + strh r0, [r2, #0x22] + strh r1, [r2, #0x26] + strh r1, [r2, #0x24] + ldr r4, _08171AC8 + movs r3, #0 + movs r1, #5 + adds r0, r2, #0 + adds r0, #0x38 +_08171AB4: + strh r3, [r0] + subs r0, #2 + subs r1, #1 + cmp r1, #0 + bge _08171AB4 + str r4, [r2, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08171AC8: .4byte sub_08171ACC + thumb_func_end sub_08171A90 + + thumb_func_start sub_08171ACC +sub_08171ACC: @ 0x08171ACC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #4 + adds r2, r0, #0 + ldrh r1, [r4, #0x2e] + adds r2, r2, r1 + movs r0, #0xd0 + lsls r0, r0, #3 + adds r3, r0, #0 + ldrh r1, [r4, #0x30] + adds r3, r3, r1 + lsls r1, r3, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0x24] + subs r0, r0, r1 + strh r0, [r4, #0x24] + lsls r0, r2, #0x10 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, 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, r0, r1 + cmp r0, #0xa0 + bgt _08171B22 + movs r1, #0x20 + ldrsh r0, [r4, r1] + movs r2, #0x24 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08171B36 +_08171B22: + movs r0, #0 + strh r0, [r4, #0x2e] + ldr r0, _08171B3C + str r0, [r4, #0x1c] + ldr r1, _08171B40 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + bl sub_08072498 +_08171B36: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08171B3C: .4byte sub_081717A4 +_08171B40: .4byte gUnknown_202415D + thumb_func_end sub_08171ACC + + thumb_func_start sub_08171B44 +sub_08171B44: @ 0x08171B44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + ldr r1, _08171B70 + lsrs r5, r0, #0x15 + adds r4, r5, r1 + ldrh r0, [r4, #6] + bl sub_08008338 + lsls r0, r0, #0x10 + ldr r1, _08171B74 + cmp r0, r1 + bne _08171B6A + adds r0, r4, #0 + bl sub_080347E0 + ldr r0, _08171B78 + adds r0, r5, r0 + bl sub_0803481C +_08171B6A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08171B70: .4byte gUnknown_85C6150 +_08171B74: .4byte 0xFFFF0000 +_08171B78: .4byte gUnknown_85C61B0 + thumb_func_end sub_08171B44 + + thumb_func_start sub_08171B7C +sub_08171B7C: @ 0x08171B7C + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + mov r8, r1 + mov sb, r2 + mov sl, r3 + ldr r5, [sp, #0x1c] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + bl sub_08171B44 + ldr r1, _08171BFC + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #5 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08171C00 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0xa] + mov r1, r8 + strh r1, [r0, #0xc] + mov r1, sb + strh r1, [r0, #0xe] + mov r1, sl + strh r1, [r0, #0x10] + strh r5, [r0, #0x26] + movs r0, #0xf + bl sub_080A306C + adds r0, r4, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08171BFC: .4byte gUnknown_85C627C +_08171C00: .4byte gUnknown_3005B60 + thumb_func_end sub_08171B7C + + thumb_func_start sub_08171C04 +sub_08171C04: @ 0x08171C04 + push {lr} + ldr r0, _08171C28 + ldr r1, _08171C2C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08171C22 + ldr r0, _08171C30 + ldr r0, [r0] + ldr r1, [r0, #8] + ldrb r0, [r1, #0xa] + adds r0, #1 + strb r0, [r1, #0xa] +_08171C22: + pop {r0} + bx r0 + .align 2, 0 +_08171C28: .4byte gUnknown_3002360 +_08171C2C: .4byte 0x00000439 +_08171C30: .4byte gUnknown_2024174 + thumb_func_end sub_08171C04 + + thumb_func_start sub_08171C34 +sub_08171C34: @ 0x08171C34 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _08171D10 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r0, [r6, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r2, #8 + ldrsh r0, [r6, r2] + adds r2, r1, #0 + cmp r0, #0xf + bgt _08171D2C + ldrb r1, [r6, #0xa] + ldrb r2, [r6, #0xc] + ldrb r4, [r6, #0xe] + mov sb, r4 + ldrb r3, [r6, #0x10] + ldr r4, [sp] + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r4, _08171D14 + adds r0, r0, r4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #0x40 + beq _08171CD0 + bl sub_08171C04 + mov r0, sl + lsls r4, r0, #4 + add r4, sl + lsls r4, r4, #2 + ldr r5, _08171D18 + adds r7, r4, r5 + ldr r0, _08171D1C + ldr r1, [sp] + adds r0, r1, r0 + ldrb r1, [r0] + adds r0, r7, #0 + bl sub_08007EC0 + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _08171D20 + str r0, [r4] + movs r0, #3 + mov r2, sb + ands r2, r0 + lsls r2, r2, #2 + ldrb r1, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r7, #5] + ldrb r0, [r6, #8] + cmp r0, #7 + bls _08171CCC + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08171CCC: + lsls r0, r0, #5 + strh r0, [r7, #0x2e] +_08171CD0: + ldr r0, _08171D10 + mov r4, r8 + lsls r1, r4, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r1, [r1, r2] + adds r2, r0, #0 + cmp r1, #0xf + bne _08171D2C + ldr r0, _08171D24 + ldr r4, _08171D28 + adds r0, r0, r4 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08171D06 + ldr r0, _08171D18 + mov r2, sl + lsls r1, r2, #4 + add r1, sl + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_08171D06: + mov r0, r8 + bl sub_080A8964 + b _08171D3C + .align 2, 0 +_08171D10: .4byte gUnknown_3005B60 +_08171D14: .4byte gUnknown_85C62AC +_08171D18: .4byte gUnknown_20205AC +_08171D1C: .4byte gUnknown_85C6270 +_08171D20: .4byte sub_08171D4C +_08171D24: .4byte gUnknown_3002360 +_08171D28: .4byte 0x00000439 +_08171D2C: + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] +_08171D3C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08171C34 + + thumb_func_start sub_08171D4C +sub_08171D4C: @ 0x08171D4C + push {lr} + adds r1, r0, #0 + ldrh r2, [r1, #0x30] + movs r3, #0x30 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _08171D64 + ldr r0, _08171D60 + str r0, [r1, #0x1c] + b _08171D68 + .align 2, 0 +_08171D60: .4byte sub_08171D6C +_08171D64: + subs r0, r2, #1 + strh r0, [r1, #0x30] +_08171D68: + pop {r0} + bx r0 + thumb_func_end sub_08171D4C + + thumb_func_start sub_08171D6C +sub_08171D6C: @ 0x08171D6C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #2 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x32 + bne _08171DA0 + adds r0, r4, #0 + bl sub_08172728 +_08171DA0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08171D6C + + thumb_func_start sub_08171DA8 +sub_08171DA8: @ 0x08171DA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08171E8C + mov r2, sb + lsls r1, r2, #2 + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r3, [r1, #0xa] + str r3, [sp] + ldrb r0, [r1, #0xc] + str r0, [sp, #4] + ldrb r2, [r1, #0xe] + str r2, [sp, #8] + ldrb r1, [r1, #0x10] + str r1, [sp, #0xc] + movs r7, #0 + ldr r3, _08171E90 + mov sl, r3 + mov r1, r8 + lsls r0, r1, #1 + add r0, r8 + lsls r0, r0, #3 + str r0, [sp, #0x10] +_08171DEE: + ldr r0, _08171E94 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08171E4E + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r3, sl + adds r5, r4, r3 + ldr r0, _08171E98 + add r0, r8 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _08171E9C + adds r4, r4, r0 + ldr r0, _08171EA0 + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] + movs r0, #0xa + strh r0, [r5, #0x36] + movs r0, #2 + strh r0, [r5, #0x38] + movs r0, #1 + strh r0, [r5, #0x3a] +_08171E4E: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _08171DEE + ldr r0, _08171EA4 + ldr r1, _08171EA8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08171E76 + ldr r0, _08171E90 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_08171E76: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08171E8C: .4byte gUnknown_3005B60 +_08171E90: .4byte gUnknown_20205AC +_08171E94: .4byte gUnknown_85C62AC +_08171E98: .4byte gUnknown_85C6270 +_08171E9C: .4byte gUnknown_20205C8 +_08171EA0: .4byte sub_081722EC +_08171EA4: .4byte gUnknown_3002360 +_08171EA8: .4byte 0x00000439 + thumb_func_end sub_08171DA8 + + thumb_func_start sub_08171EAC +sub_08171EAC: @ 0x08171EAC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08171F90 + mov r2, sb + lsls r1, r2, #2 + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r3, [r1, #0xa] + str r3, [sp] + ldrb r0, [r1, #0xc] + str r0, [sp, #4] + ldrb r2, [r1, #0xe] + str r2, [sp, #8] + ldrb r1, [r1, #0x10] + str r1, [sp, #0xc] + movs r7, #0 + ldr r3, _08171F94 + mov sl, r3 + mov r1, r8 + lsls r0, r1, #1 + add r0, r8 + lsls r0, r0, #3 + str r0, [sp, #0x10] +_08171EF2: + ldr r0, _08171F98 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08171F52 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r3, sl + adds r5, r4, r3 + ldr r0, _08171F9C + add r0, r8 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _08171FA0 + adds r4, r4, r0 + ldr r0, _08171FA4 + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] + movs r0, #0xa + strh r0, [r5, #0x36] + movs r0, #1 + strh r0, [r5, #0x38] + movs r0, #2 + strh r0, [r5, #0x3a] +_08171F52: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _08171EF2 + ldr r0, _08171FA8 + ldr r1, _08171FAC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08171F7A + ldr r0, _08171F94 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_08171F7A: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08171F90: .4byte gUnknown_3005B60 +_08171F94: .4byte gUnknown_20205AC +_08171F98: .4byte gUnknown_85C62AC +_08171F9C: .4byte gUnknown_85C6270 +_08171FA0: .4byte gUnknown_20205C8 +_08171FA4: .4byte sub_081722EC +_08171FA8: .4byte gUnknown_3002360 +_08171FAC: .4byte 0x00000439 + thumb_func_end sub_08171EAC + + thumb_func_start sub_08171FB0 +sub_08171FB0: @ 0x08171FB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _08172090 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r0, #0xa] + str r2, [sp] + ldrb r3, [r0, #0xc] + str r3, [sp, #4] + ldrb r2, [r0, #0xe] + str r2, [sp, #8] + ldrb r0, [r0, #0x10] + str r0, [sp, #0xc] + movs r7, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + str r0, [sp, #0x10] + ldr r3, _08172094 + mov r8, r3 + ldr r0, _08172098 + adds r1, r1, r0 + mov sl, r1 +_08171FF6: + ldr r0, _0817209C + ldr r1, [sp, #0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08172052 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r2, r8 + adds r5, r4, r2 + mov r3, sl + ldrb r1, [r3] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _081720A0 + adds r4, r4, r0 + ldr r0, _081720A4 + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] + movs r0, #4 + strh r0, [r5, #0x36] + movs r0, #1 + strh r0, [r5, #0x38] + strh r0, [r5, #0x3a] +_08172052: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _08171FF6 + ldr r0, _081720A8 + ldr r1, _081720AC + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0817207A + ldr r0, _08172094 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_0817207A: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172090: .4byte gUnknown_3005B60 +_08172094: .4byte gUnknown_20205AC +_08172098: .4byte gUnknown_85C6270 +_0817209C: .4byte gUnknown_85C62AC +_081720A0: .4byte gUnknown_20205C8 +_081720A4: .4byte sub_081722EC +_081720A8: .4byte gUnknown_3002360 +_081720AC: .4byte 0x00000439 + thumb_func_end sub_08171FB0 + + thumb_func_start sub_081720B0 +sub_081720B0: @ 0x081720B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _08172198 + mov r2, sb + lsls r1, r2, #2 + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrb r3, [r1, #0xa] + str r3, [sp] + ldrb r0, [r1, #0xc] + str r0, [sp, #4] + ldrb r2, [r1, #0xe] + str r2, [sp, #8] + ldrb r1, [r1, #0x10] + str r1, [sp, #0xc] + movs r7, #0 + ldr r3, _0817219C + mov sl, r3 + mov r1, r8 + lsls r0, r1, #1 + add r0, r8 + lsls r0, r0, #3 + str r0, [sp, #0x10] +_081720F6: + ldr r0, _081721A0 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _0817215A + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r3, sl + adds r5, r4, r3 + ldr r0, _081721A4 + add r0, r8 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _081721A8 + adds r4, r4, r0 + ldr r0, _081721AC + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r7 + strh r0, [r5, #0x2e] + movs r0, #5 + strh r0, [r5, #0x36] + movs r0, #1 + strh r0, [r5, #0x38] + strh r0, [r5, #0x3a] +_0817215A: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #9 + bls _081720F6 + ldr r0, _081721B0 + ldr r1, _081721B4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08172182 + ldr r0, _0817219C + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_08172182: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172198: .4byte gUnknown_3005B60 +_0817219C: .4byte gUnknown_20205AC +_081721A0: .4byte gUnknown_85C62AC +_081721A4: .4byte gUnknown_85C6270 +_081721A8: .4byte gUnknown_20205C8 +_081721AC: .4byte sub_081722EC +_081721B0: .4byte gUnknown_3002360 +_081721B4: .4byte 0x00000439 + thumb_func_end sub_081720B0 + + thumb_func_start sub_081721B8 +sub_081721B8: @ 0x081721B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _081721E4 + lsls r2, r0, #2 + adds r0, r2, r0 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrh r1, [r3, #0x16] + movs r4, #0x16 + ldrsh r0, [r3, r4] + cmp r0, #0 + beq _081721E8 + subs r0, r1, #1 + strh r0, [r3, #0x16] + b _081722BA + .align 2, 0 +_081721E4: .4byte gUnknown_3005B60 +_081721E8: + ldrh r0, [r3, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r3, #0xa] + str r1, [sp] + ldrb r4, [r3, #0xc] + str r4, [sp, #4] + ldrb r1, [r3, #0xe] + str r1, [sp, #8] + ldrb r3, [r3, #0x10] + str r3, [sp, #0xc] + movs r7, #0 + str r2, [sp, #0x14] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + str r1, [sp, #0x10] + ldr r3, _081722CC + mov sb, r3 + ldr r1, _081722D0 + adds r0, r0, r1 + mov sl, r0 +_08172214: + ldr r0, _081722D4 + ldr r4, [sp, #0x10] + adds r0, r4, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08172270 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r0, sb + adds r5, r4, r0 + mov r3, sl + ldrb r1, [r3] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _081722D8 + adds r4, r4, r0 + ldr r0, _081722DC + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] + movs r0, #8 + strh r0, [r5, #0x36] + movs r0, #2 + strh r0, [r5, #0x38] + strh r0, [r5, #0x3a] +_08172270: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _08172214 + ldr r0, _081722E0 + ldr r1, [sp, #0x14] + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #8 + strh r0, [r1, #0x16] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + asrs r2, r0, #0x10 + cmp r2, #2 + bne _081722BA + ldr r0, _081722E4 + ldr r4, _081722E8 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _081722B4 + ldr r0, _081722CC + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_081722B4: + mov r0, r8 + bl sub_080A8964 +_081722BA: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081722CC: .4byte gUnknown_20205AC +_081722D0: .4byte gUnknown_85C6270 +_081722D4: .4byte gUnknown_85C62AC +_081722D8: .4byte gUnknown_20205C8 +_081722DC: .4byte sub_081722EC +_081722E0: .4byte gUnknown_3005B60 +_081722E4: .4byte gUnknown_3002360 +_081722E8: .4byte 0x00000439 + thumb_func_end sub_081721B8 + + thumb_func_start sub_081722EC +sub_081722EC: @ 0x081722EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x30 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x38] + ldrh r2, [r4, #0x30] + adds r0, r0, r2 + strh r0, [r4, #0x30] + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x34] + adds r0, #1 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _0817233C + adds r0, r4, #0 + bl sub_08172728 +_0817233C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081722EC + + thumb_func_start sub_08172344 +sub_08172344: @ 0x08172344 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _08172420 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r0, #0xa] + str r2, [sp] + ldrb r3, [r0, #0xc] + str r3, [sp, #4] + ldrb r2, [r0, #0xe] + str r2, [sp, #8] + ldrb r0, [r0, #0x10] + str r0, [sp, #0xc] + movs r7, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + str r0, [sp, #0x10] + ldr r3, _08172424 + mov r8, r3 + ldr r0, _08172428 + adds r1, r1, r0 + mov sl, r1 +_0817238A: + ldr r0, _0817242C + ldr r1, [sp, #0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _081723E2 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r2, r8 + adds r5, r4, r2 + mov r3, sl + ldrb r1, [r3] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _08172430 + adds r4, r4, r0 + ldr r0, _08172434 + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r0, [r5, #0x2e] +_081723E2: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xb + bls _0817238A + ldr r0, _08172438 + ldr r1, _0817243C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0817240A + ldr r0, _08172424 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_0817240A: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172420: .4byte gUnknown_3005B60 +_08172424: .4byte gUnknown_20205AC +_08172428: .4byte gUnknown_85C6270 +_0817242C: .4byte gUnknown_85C62AC +_08172430: .4byte gUnknown_20205C8 +_08172434: .4byte sub_08172440 +_08172438: .4byte gUnknown_3002360 +_0817243C: .4byte 0x00000439 + thumb_func_end sub_08172344 + + thumb_func_start sub_08172440 +sub_08172440: @ 0x08172440 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x30 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + strh r0, [r5, #0x24] + movs r0, #0x2e + ldrsh r4, [r5, r0] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r0, r4, #0 + bl sub_0806EFB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0806EFD4 + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x2e] + adds r0, #6 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x30] + adds r0, #1 + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _08172498 + adds r0, r5, #0 + bl sub_08172728 +_08172498: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08172440 + + thumb_func_start sub_081724A0 +sub_081724A0: @ 0x081724A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r0, _08172554 + ldr r2, [sp] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrb r3, [r1, #0xa] + str r3, [sp, #4] + ldrb r0, [r1, #0xc] + str r0, [sp, #8] + ldrb r2, [r1, #0xe] + str r2, [sp, #0xc] + ldrb r1, [r1, #0x10] + str r1, [sp, #0x10] + movs r3, #0 + mov r8, r3 + mov r1, sb + lsls r0, r1, #1 + add r0, sb + lsls r0, r0, #3 + str r0, [sp, #0x14] +_081724E4: + movs r7, #0 + movs r2, #1 + add r2, r8 + mov sl, r2 +_081724EC: + ldr r0, _08172558 + ldr r3, [sp, #0x14] + adds r0, r3, r0 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + ldr r3, [sp, #0x10] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08172574 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + ldr r0, _0817255C + adds r5, r4, r0 + ldr r0, _08172560 + add r0, sb + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r1, _08172564 + adds r4, r4, r1 + ldr r0, _08172568 + str r0, [r4] + movs r0, #3 + ldr r1, [sp, #0xc] + ands r1, r0 + lsls r1, r1, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] + movs r0, #8 + strh r0, [r5, #0x36] + mov r0, r8 + cmp r0, #0 + bne _0817256C + movs r0, #2 + strh r0, [r5, #0x38] + movs r0, #1 + b _08172572 + .align 2, 0 +_08172554: .4byte gUnknown_3005B60 +_08172558: .4byte gUnknown_85C62AC +_0817255C: .4byte gUnknown_20205AC +_08172560: .4byte gUnknown_85C6270 +_08172564: .4byte gUnknown_20205C8 +_08172568: .4byte sub_081722EC +_0817256C: + movs r0, #1 + strh r0, [r5, #0x38] + movs r0, #2 +_08172572: + strh r0, [r5, #0x3a] +_08172574: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _081724EC + mov r1, sl + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #1 + bls _081724E4 + ldr r0, _081725C0 + ldr r2, _081725C4 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081725A8 + ldr r0, _081725C8 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_081725A8: + ldr r0, [sp] + bl sub_080A8964 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081725C0: .4byte gUnknown_3002360 +_081725C4: .4byte 0x00000439 +_081725C8: .4byte gUnknown_20205AC + thumb_func_end sub_081724A0 + + thumb_func_start sub_081725CC +sub_081725CC: @ 0x081725CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _081726A4 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x26] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r2, [r0, #0xa] + str r2, [sp] + ldrb r3, [r0, #0xc] + str r3, [sp, #4] + ldrb r2, [r0, #0xe] + str r2, [sp, #8] + ldrb r0, [r0, #0x10] + str r0, [sp, #0xc] + movs r7, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + str r0, [sp, #0x10] + ldr r3, _081726A8 + mov r8, r3 + ldr r0, _081726AC + adds r1, r1, r0 + mov sl, r1 +_08172612: + ldr r0, _081726B0 + ldr r1, [sp, #0x10] + adds r0, r1, r0 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #0xc] + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0x40 + beq _08172664 + bl sub_08171C04 + lsls r4, r6, #4 + adds r4, r4, r6 + lsls r4, r4, #2 + mov r2, r8 + adds r5, r4, r2 + mov r3, sl + ldrb r1, [r3] + adds r0, r5, #0 + bl sub_08007EC0 + ldr r0, _081726B4 + adds r4, r4, r0 + ldr r0, _081726B8 + str r0, [r4] + movs r0, #3 + ldr r2, [sp, #8] + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r5, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #5] + lsls r0, r7, #5 + strh r0, [r5, #0x2e] +_08172664: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #7 + bls _08172612 + ldr r0, _081726BC + ldr r1, _081726C0 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0817268C + ldr r0, _081726A8 + lsls r1, r6, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #1 + strh r0, [r1, #0x3c] +_0817268C: + mov r0, sb + bl sub_080A8964 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081726A4: .4byte gUnknown_3005B60 +_081726A8: .4byte gUnknown_20205AC +_081726AC: .4byte gUnknown_85C6270 +_081726B0: .4byte gUnknown_85C62AC +_081726B4: .4byte gUnknown_20205C8 +_081726B8: .4byte sub_081726C4 +_081726BC: .4byte gUnknown_3002360 +_081726C0: .4byte 0x00000439 + thumb_func_end sub_081725CC + + thumb_func_start sub_081726C4 +sub_081726C4: @ 0x081726C4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x30 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + 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_0806EFB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0806EFD4 + 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, #1 + strh r0, [r5, #0x30] + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x34] + adds r0, #1 + strh r0, [r5, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x33 + bne _08172720 + adds r0, r5, #0 + bl sub_08172728 +_08172720: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081726C4 + + thumb_func_start sub_08172728 +sub_08172728: @ 0x08172728 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _0817274C + ldr r1, _08172750 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08172754 + movs r1, #0x3c + ldrsh r0, [r7, r1] + cmp r0, #1 + bne _081727AE + adds r0, r7, #0 + bl sub_08007338 + b _081727C6 + .align 2, 0 +_0817274C: .4byte gUnknown_3002360 +_08172750: .4byte 0x00000439 +_08172754: + ldr r2, _08172770 + ldr r0, [r2] + ldr r1, [r0, #8] + ldrb r0, [r1, #0xa] + subs r0, #1 + strb r0, [r1, #0xa] + ldr r0, [r2] + ldr r0, [r0, #8] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _081727C0 + movs r4, #0 + ldr r5, _08172774 + b _0817277C + .align 2, 0 +_08172770: .4byte gUnknown_2024174 +_08172774: .4byte gUnknown_85C627C +_08172778: + adds r5, #4 + adds r4, #1 +_0817277C: + cmp r4, #0xb + bgt _0817278E + ldr r0, [r5] + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08172778 +_0817278E: + cmp r4, #0xc + bne _081727AE + movs r6, #0 + ldr r5, _081727B8 + ldr r4, _081727BC +_08172798: + ldrh r0, [r5, #6] + bl sub_08008280 + ldrh r0, [r4, #4] + bl sub_08008564 + adds r5, #8 + adds r4, #8 + adds r6, #1 + cmp r6, #0xb + ble _08172798 +_081727AE: + adds r0, r7, #0 + bl sub_08006E00 + b _081727C6 + .align 2, 0 +_081727B8: .4byte gUnknown_85C6150 +_081727BC: .4byte gUnknown_85C61B0 +_081727C0: + adds r0, r7, #0 + bl sub_08006E00 +_081727C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08172728 + + thumb_func_start sub_081727CC +sub_081727CC: @ 0x081727CC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r0, #0 + mov sb, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + ldr r0, _08172830 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _08172834 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + strh r7, [r5, #0x26] + strh r6, [r5, #0xe] + mov r0, sb + strh r0, [r5, #0x1c] + mov r1, sb + lsrs r0, r1, #0x10 + strh r0, [r5, #0x1e] + cmp r4, #0 + bne _0817283C + lsls r0, r6, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + ldr r2, _08172838 + lsls r1, r7, #1 + adds r1, r1, r2 + ldrh r3, [r1] + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + movs r0, #1 + strh r0, [r5, #0xa] + b _08172862 + .align 2, 0 +_08172830: .4byte sub_08172894 +_08172834: .4byte gUnknown_3005B60 +_08172838: .4byte gUnknown_85C63CC +_0817283C: + lsls r0, r6, #0x14 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + ldr r2, _08172884 + lsls r1, r7, #1 + adds r1, r1, r2 + ldrh r3, [r1] + movs r1, #0x10 + movs r2, #0x10 + bl sub_0806F410 + movs r0, #0x10 + strh r0, [r5, #8] + ldr r0, _08172888 + strh r0, [r5, #0xa] + ldr r0, _0817288C + str r0, [r5] +_08172862: + ldr r0, _08172890 + str r0, [sp] + mov r0, sb + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + mov r0, r8 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08172884: .4byte gUnknown_85C63CC +_08172888: .4byte 0x0000FFFF +_0817288C: .4byte sub_08172924 +_08172890: .4byte 0x00007FFF + thumb_func_end sub_081727CC + + thumb_func_start sub_08172894 +sub_08172894: @ 0x08172894 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + ldr r1, _081728E4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0x10 + bgt _081728EC + movs r2, #0xe + ldrsh r0, [r4, r2] + lsls r0, r0, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r0, r2 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #8] + ldr r3, _081728E8 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r3, [r1] + movs r1, #0x10 + bl sub_0806F410 + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #8] + adds r0, r0, r1 + strh r0, [r4, #8] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + b _08172914 + .align 2, 0 +_081728E4: .4byte gUnknown_3005B60 +_081728E8: .4byte gUnknown_85C63CC +_081728EC: + ldr r0, _0817291C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08172914 + ldrh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + lsls r1, r1, #0x10 + orrs r0, r1 + ldr r1, _08172920 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + adds r0, r5, #0 + bl sub_080A8964 +_08172914: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817291C: .4byte gUnknown_2037C74 +_08172920: .4byte 0x00007FFF + thumb_func_end sub_08172894 + + thumb_func_start sub_08172924 +sub_08172924: @ 0x08172924 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08172964 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817295C + ldr r0, _08172968 + lsls r4, r2, #2 + adds r4, r4, r2 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r4, #0x1c] + ldrh r1, [r4, #0x1e] + lsls r1, r1, #0x10 + orrs r0, r1 + ldr r1, _0817296C + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _08172970 + str r0, [r4] +_0817295C: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08172964: .4byte gUnknown_2037C74 +_08172968: .4byte gUnknown_3005B60 +_0817296C: .4byte 0x00007FFF +_08172970: .4byte sub_08172974 + thumb_func_end sub_08172924 + + thumb_func_start sub_08172974 +sub_08172974: @ 0x08172974 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _081729C0 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0x26] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r3, #0xc + ldrsh r0, [r4, r3] + cmp r0, #0x10 + bgt _081729C8 + movs r2, #0xe + ldrsh r0, [r4, r2] + lsls r0, r0, #0x14 + movs r3, #0x80 + lsls r3, r3, #0x11 + adds r0, r0, r3 + lsrs r0, r0, #0x10 + ldrb r2, [r4, #8] + ldr r3, _081729C4 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r3, [r1] + movs r1, #0x10 + bl sub_0806F410 + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #8] + adds r0, r0, r1 + strh r0, [r4, #8] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + b _081729CE + .align 2, 0 +_081729C0: .4byte gUnknown_3005B60 +_081729C4: .4byte gUnknown_85C63CC +_081729C8: + adds r0, r2, #0 + bl sub_080A8964 +_081729CE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08172974 + + thumb_func_start sub_081729D4 +sub_081729D4: @ 0x081729D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + mov r8, r0 + ldr r0, _08172A08 + ldr r3, _08172A0C + ldrb r2, [r3] + adds r0, r2, r0 + ldrb r6, [r0] + ldr r1, _08172A10 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #0x1c + ldrsh r0, [r5, r1] + cmp r0, #1 + beq _08172AAC + cmp r0, #1 + bgt _08172A14 + cmp r0, #0 + beq _08172A1A + b _08172B6E + .align 2, 0 +_08172A08: .4byte gUnknown_2023E88 +_08172A0C: .4byte gUnknown_20380D6 +_08172A10: .4byte gUnknown_3005B60 +_08172A14: + cmp r0, #2 + beq _08172ABE + b _08172B6E +_08172A1A: + ldr r0, _08172A54 + ldrh r0, [r0] + strh r0, [r5, #0x1e] + movs r2, #0xa0 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r4, [r5, #8] + adds r0, r0, r4 + strh r0, [r5, #8] + ldrb r0, [r3] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08172A5C + ldr r2, _08172A58 + lsls r3, r6, #4 + adds r1, r3, r6 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r4, [r1, #0x24] + adds r0, r0, r4 + strh r0, [r1, #0x24] + adds r4, r3, #0 + b _08172A74 + .align 2, 0 +_08172A54: .4byte gUnknown_20380BE +_08172A58: .4byte gUnknown_20205AC +_08172A5C: + ldr r3, _08172AA4 + lsls r4, r6, #4 + adds r2, r4, r6 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r1, [r5, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + adds r2, r3, #0 +_08172A74: + ldr r1, _08172AA8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r3, r0, r1 + ldrb r0, [r3, #8] + strh r0, [r3, #8] + adds r0, r4, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0x20 + ldrsh r1, [r0, r2] + movs r4, #0x24 + ldrsh r0, [r0, r4] + adds r1, r1, r0 + adds r1, #0x20 + movs r0, #0x98 + lsls r0, r0, #1 + cmp r1, r0 + bls _08172B6E + ldrh r0, [r3, #0x1c] + adds r0, #1 + strh r0, [r3, #0x1c] + b _08172B6E + .align 2, 0 +_08172AA4: .4byte gUnknown_20205AC +_08172AA8: .4byte gUnknown_3005B60 +_08172AAC: + ldrb r1, [r5, #0x1e] + adds r0, r2, #0 + adds r2, r6, #0 + bl sub_0805E510 + ldrh r0, [r5, #0x1c] + adds r0, #1 + strh r0, [r5, #0x1c] + b _08172B6E +_08172ABE: + movs r1, #0xa0 + lsls r1, r1, #3 + adds r0, r1, #0 + ldrh r2, [r5, #8] + adds r0, r0, r2 + strh r0, [r5, #8] + ldrb r0, [r3] + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08172AF4 + ldr r0, _08172AF0 + lsls r3, r6, #4 + adds r2, r3, r6 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r1, [r5, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + ldrh r0, [r2, #0x24] + subs r0, r0, r1 + strh r0, [r2, #0x24] + adds r4, r3, #0 + b _08172B0C + .align 2, 0 +_08172AF0: .4byte gUnknown_20205AC +_08172AF4: + ldr r0, _08172B40 + lsls r2, r6, #4 + adds r1, r2, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r5, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x18 + ldrh r3, [r1, #0x24] + adds r0, r0, r3 + strh r0, [r1, #0x24] + adds r4, r2, #0 +_08172B0C: + ldr r1, _08172B44 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #8] + strh r1, [r0, #8] + ldr r0, _08172B48 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08172B4C + ldr r0, _08172B40 + adds r1, r4, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r4, #0x24 + ldrsh r0, [r1, r4] + cmp r0, #0 + bgt _08172B62 + movs r0, #0 + strh r0, [r1, #0x24] + b _08172B68 + .align 2, 0 +_08172B40: .4byte gUnknown_20205AC +_08172B44: .4byte gUnknown_3005B60 +_08172B48: .4byte gUnknown_20380D6 +_08172B4C: + ldr r0, _08172B78 + adds r1, r4, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r3, #0x24 + ldrsh r0, [r1, r3] + cmp r0, #0 + blt _08172B62 + strh r2, [r1, #0x24] + movs r4, #1 + mov r8, r4 +_08172B62: + mov r0, r8 + cmp r0, #0 + beq _08172B6E +_08172B68: + adds r0, r7, #0 + bl sub_080A34E4 +_08172B6E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172B78: .4byte gUnknown_20205AC + thumb_func_end sub_081729D4 + + thumb_func_start sub_08172B7C +sub_08172B7C: @ 0x08172B7C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08172BA0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08172BF8 + cmp r0, #1 + bgt _08172BA4 + cmp r0, #0 + beq _08172BAA + b _08172C68 + .align 2, 0 +_08172BA0: .4byte gUnknown_3005B60 +_08172BA4: + cmp r0, #2 + beq _08172C32 + b _08172C68 +_08172BAA: + ldr r0, _08172BC4 + ldrb r0, [r0] + bl sub_080A7C2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08172BCC + ldr r1, _08172BC8 + movs r0, #0x50 + bl sub_08001144 + b _08172BD4 + .align 2, 0 +_08172BC4: .4byte gUnknown_20380D6 +_08172BC8: .4byte 0x00003F42 +_08172BCC: + ldr r1, _08172BF0 + movs r0, #0x50 + bl sub_08001144 +_08172BD4: + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldr r0, _08172BF4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _08172C68 + .align 2, 0 +_08172BF0: .4byte 0x00003F44 +_08172BF4: .4byte gUnknown_3005B60 +_08172BF8: + ldrh r0, [r4, #0xa] + adds r1, r0, #1 + strh r1, [r4, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + ble _08172C68 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r2, [r4, #8] + adds r2, #1 + strh r2, [r4, #8] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0x10 + bne _08172C68 + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + b _08172C68 +_08172C32: + ldr r1, _08172C70 + ldr r4, _08172C74 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _08172C78 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x11 + ldr r0, _08172C7C + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #0 + movs r3, #1 + bl sub_08000F90 + ldrb r0, [r4] + bl sub_0805E590 + adds r0, r5, #0 + bl sub_080A34E4 +_08172C68: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08172C70: .4byte gUnknown_2023E88 +_08172C74: .4byte gUnknown_20380D6 +_08172C78: .4byte gUnknown_20205AC +_08172C7C: .4byte 0x06010000 + thumb_func_end sub_08172B7C + + thumb_func_start sub_08172C80 +sub_08172C80: @ 0x08172C80 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08172CA8 + ldr r1, _08172CAC + ldr r2, [r1] + ldr r1, _08172CB0 + ldrb r1, [r1] + ldr r2, [r2] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1f + strh r1, [r3, #0xe] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08172CA8: .4byte gUnknown_20380BE +_08172CAC: .4byte gUnknown_2024174 +_08172CB0: .4byte gUnknown_20380D6 + thumb_func_end sub_08172C80 + + thumb_func_start sub_08172CB4 +sub_08172CB4: @ 0x08172CB4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08172CCC + ldr r1, _08172CD0 + ldrb r1, [r1] + strb r1, [r2] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08172CCC: .4byte gUnknown_20380D7 +_08172CD0: .4byte gUnknown_2023EB2 + thumb_func_end sub_08172CB4 + + thumb_func_start sub_08172CD4 +sub_08172CD4: @ 0x08172CD4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + mov r8, r0 + ldr r0, _08172D90 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + adds r5, r0, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r0, r6, #0 + bl sub_080A3BD8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08172DAC + lsrs r0, r5, #0x10 + ldr r7, _08172D94 + ands r5, r7 + eors r0, r5 + lsrs r1, r4, #0x10 + eors r0, r1 + ands r4, r7 + eors r0, r4 + cmp r0, #7 + bhi _08172D32 + movs r0, #1 + mov r8, r0 +_08172D32: + mov r0, r8 + cmp r0, #0 + beq _08172DAC + ldr r0, _08172D98 + bl sub_08008338 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r7 + bne _08172D52 + ldr r0, _08172D9C + bl sub_080347E0 + ldr r0, _08172DA0 + bl sub_0803481C +_08172D52: + ldr r5, _08172DA4 + adds r0, r5, #0 + movs r1, #0xa + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08172DA8 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #3 + adds r2, r2, r3 + movs r4, #0 + strh r6, [r2, #8] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r3 + strh r6, [r1, #8] + strh r4, [r2, #0xa] + movs r0, #1 + strh r0, [r1, #0xa] + b _08172DC2 + .align 2, 0 +_08172D90: .4byte gUnknown_2024174 +_08172D94: .4byte 0x0000FFFF +_08172D98: .4byte 0x000027F9 +_08172D9C: .4byte gUnknown_84FD998 +_08172DA0: .4byte gUnknown_84FE2A0 +_08172DA4: .4byte sub_08172DD0 +_08172DA8: .4byte gUnknown_3005B60 +_08172DAC: + ldr r0, _08172DCC + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #1] +_08172DC2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172DCC: .4byte gUnknown_2024174 + thumb_func_end sub_08172CD4 + + thumb_func_start sub_08172DD0 +sub_08172DD0: @ 0x08172DD0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08172DF8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r1, [r4, #0x22] + movs r2, #0x22 + ldrsh r0, [r4, r2] + cmp r0, #0x3b + bgt _08172DFC + adds r0, r1, #1 + strh r0, [r4, #0x22] + b _08172F74 + .align 2, 0 +_08172DF8: .4byte gUnknown_3005B60 +_08172DFC: + ldr r0, _08172E50 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _08172E0A + b _08172F74 +_08172E0A: + ldrh r0, [r4, #0x1c] + adds r1, r0, #1 + strh r1, [r4, #0x1c] + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + cmp r1, #0 + beq _08172E1E + b _08172F74 +_08172E1E: + ldrb r0, [r4, #8] + mov r8, r0 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08172E58 + ldr r0, _08172E54 + adds r1, r5, #0 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _08172EBA + .align 2, 0 +_08172E50: .4byte gUnknown_2024174 +_08172E54: .4byte gUnknown_85AD190 +_08172E58: + cmp r0, #0 + blt _08172E8C + cmp r0, #3 + bgt _08172E8C + ldr r0, _08172E84 + adds r1, r5, #0 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08172E88 + lsls r2, r5, #4 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #4 + b _08172EAC + .align 2, 0 +_08172E84: .4byte gUnknown_85AD1A8 +_08172E88: .4byte gUnknown_20205AC +_08172E8C: + ldr r0, _08172EE4 + adds r1, r5, #0 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08172EE8 + lsls r2, r5, #4 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #5 +_08172EAC: + ldr r4, _08172EEC + adds r0, r4, #0 + ands r1, r0 + ldr r0, _08172EF0 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] +_08172EBA: + ldr r2, _08172EF4 + lsls r1, r7, #2 + adds r0, r1, r7 + lsls r0, r0, #3 + adds r6, r0, r2 + movs r2, #0xa + ldrsh r0, [r6, r2] + mov sb, r1 + cmp r0, #0 + bne _08172EFC + ldr r1, _08172EE8 + lsls r2, r5, #4 + adds r0, r2, r5 + lsls r0, r0, #2 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08172EF8 + str r1, [r0] + adds r4, r2, #0 + b _08172F44 + .align 2, 0 +_08172EE4: .4byte gUnknown_85AD1A8 +_08172EE8: .4byte gUnknown_20205AC +_08172EEC: .4byte 0x000003FF +_08172EF0: .4byte 0xFFFFFC00 +_08172EF4: .4byte gUnknown_3005B60 +_08172EF8: .4byte sub_08172FE0 +_08172EFC: + ldr r3, _08172F80 + lsls r4, r5, #4 + adds r1, r4, r5 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r1, r0 + ldr r2, _08172F84 + str r2, [r0] + adds r1, r1, r3 + ldr r0, _08172F88 + strh r0, [r1, #0x24] + movs r0, #0x20 + strh r0, [r1, #0x26] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + movs r1, #0x1e + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08172F44 + mov r0, r8 + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r1, #0x3f + cmp r0, #0 + bne _08172F3A + movs r1, #0xc0 +_08172F3A: + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #0x66 + bl sub_080A307C +_08172F44: + ldr r1, _08172F80 + adds r0, r4, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r7, [r0, #0x2e] + ldr r1, _08172F8C + mov r2, sb + adds r0, r2, r7 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r0, [r1, #0x1e] + adds r0, #1 + strh r0, [r1, #0x1e] + cmp r5, #0x40 + beq _08172F68 + ldrh r0, [r1, #0x20] + adds r0, #1 + strh r0, [r1, #0x20] +_08172F68: + movs r4, #0x1e + ldrsh r0, [r1, r4] + cmp r0, #5 + bne _08172F74 + ldr r0, _08172F90 + str r0, [r1] +_08172F74: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08172F80: .4byte gUnknown_20205AC +_08172F84: .4byte sub_08173034 +_08172F88: .4byte 0x0000FFE0 +_08172F8C: .4byte gUnknown_3005B60 +_08172F90: .4byte sub_08172F94 + thumb_func_end sub_08172DD0 + + thumb_func_start sub_08172F94 +sub_08172F94: @ 0x08172F94 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r0, #0 + ldr r1, _08172FD8 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r2, #0x20 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08172FD4 + movs r2, #0xa + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _08172FCE + ldrb r1, [r1, #8] + ldr r0, _08172FDC + ldr r0, [r0] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #1] +_08172FCE: + adds r0, r3, #0 + bl sub_080A8964 +_08172FD4: + pop {r0} + bx r0 + .align 2, 0 +_08172FD8: .4byte gUnknown_3005B60 +_08172FDC: .4byte gUnknown_2024174 + thumb_func_end sub_08172F94 + + thumb_func_start sub_08172FE0 +sub_08172FE0: @ 0x08172FE0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x18 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x30 + ldrsh r0, [r4, r1] + movs r1, #0x18 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x30] + adds r0, #0xc + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _0817302A + ldr r2, _08173030 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 +_0817302A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08173030: .4byte gUnknown_3005B60 + thumb_func_end sub_08172FE0 + + thumb_func_start sub_08173034 +sub_08173034: @ 0x08173034 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #3 + bgt _08173048 + adds r0, r1, #1 + strh r0, [r4, #0x30] + b _0817308A +_08173048: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrh r1, [r4, #0x24] + adds r1, #5 + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x26] + subs r0, #5 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0x20 + ble _0817308A + ldr r2, _08173090 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 +_0817308A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08173090: .4byte gUnknown_3005B60 + thumb_func_end sub_08173034 + + thumb_func_start sub_08173094 +sub_08173094: @ 0x08173094 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081730BC + bl sub_080347E0 + ldr r0, _081730C0 + bl sub_0803481C + ldr r0, _081730C4 + bl sub_0800851C + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081730BC: .4byte gUnknown_84FDAB8 +_081730C0: .4byte gUnknown_84FE3C0 +_081730C4: .4byte 0x0000281D + thumb_func_end sub_08173094 + + thumb_func_start sub_081730C8 +sub_081730C8: @ 0x081730C8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _081730EC + adds r0, r5, #0 + bl sub_08008280 + adds r0, r5, #0 + bl sub_08008564 + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081730EC: .4byte 0x0000281D + thumb_func_end sub_081730C8 + + thumb_func_start sub_081730F0 +sub_081730F0: @ 0x081730F0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_080A6294 + movs r0, #0x1e + strh r0, [r4, #0x2e] + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_080A5534 + lsls r0, r0, #0x18 + ldr r5, _08173164 + lsrs r0, r0, #0x18 + ldrh r1, [r5, #4] + adds r0, r0, r1 + strh r0, [r4, #0x32] + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_080A5534 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r5, [r5, #6] + adds r0, r0, r5 + strh r0, [r4, #0x36] + ldr r0, _08173168 + strh r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_080A619C + ldr r2, _0817316C + ldr r1, _08173170 + ldr r0, _08173174 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _08173178 + str r1, [r0] + ldr r0, _0817317C + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08173164: .4byte gUnknown_20380BE +_08173168: .4byte 0x0000FFE0 +_0817316C: .4byte gUnknown_20205AC +_08173170: .4byte gUnknown_2023E88 +_08173174: .4byte gUnknown_20380D6 +_08173178: .4byte sub_08039AC8 +_0817317C: .4byte sub_08173180 + thumb_func_end sub_081730F0 + + thumb_func_start sub_08173180 +sub_08173180: @ 0x08173180 + push {lr} + adds r3, r0, #0 + ldr r2, _081731A8 + ldr r1, _081731AC + ldr r0, _081731B0 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + bne _081731A4 + ldr r0, _081731B4 + str r0, [r3, #0x1c] +_081731A4: + pop {r0} + bx r0 + .align 2, 0 +_081731A8: .4byte gUnknown_20205AC +_081731AC: .4byte gUnknown_2023E88 +_081731B0: .4byte gUnknown_20380D6 +_081731B4: .4byte sub_081731B8 + thumb_func_end sub_08173180 + + thumb_func_start sub_081731B8 +sub_081731B8: @ 0x081731B8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A61C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081731DA + movs r0, #0 + strh r0, [r4, #0x2e] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _081731E0 + str r0, [r4, #0x1c] +_081731DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081731E0: .4byte sub_081731E4 + thumb_func_end sub_081731B8 + + thumb_func_start sub_081731E4 +sub_081731E4: @ 0x081731E4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08173234 + ldr r3, _08173238 + ldr r2, _0817323C + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _0817322C + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _0817322C + ldrb r0, [r2] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0 + bl sub_08007EC0 + adds r0, r4, #0 + bl sub_080A34C4 +_0817322C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08173234: .4byte gUnknown_20205AC +_08173238: .4byte gUnknown_2023E88 +_0817323C: .4byte gUnknown_20380D6 + thumb_func_end sub_081731E4 + + thumb_func_start sub_08173240 +sub_08173240: @ 0x08173240 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08173258 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _0817325C + cmp r0, #1 + beq _08173270 + b _08173284 + .align 2, 0 +_08173258: .4byte gUnknown_20380BE +_0817325C: + movs r0, #0 + bl sub_080A631C + ldr r1, _0817326C + strb r0, [r1] + movs r0, #1 + b _0817327C + .align 2, 0 +_0817326C: .4byte gUnknown_20380D6 +_08173270: + movs r0, #1 + bl sub_080A631C + ldr r1, _08173290 + strb r0, [r1] + movs r0, #0 +_0817327C: + bl sub_080A631C + ldr r1, _08173294 + strb r0, [r1] +_08173284: + adds r0, r4, #0 + bl sub_080A34E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08173290: .4byte gUnknown_20380D6 +_08173294: .4byte gUnknown_20380D7 + thumb_func_end sub_08173240 + + thumb_func_start sub_08173298 +sub_08173298: @ 0x08173298 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081732B0 + ldr r0, [r0] + ldr r0, [r0, #8] + ldrh r1, [r0] + cmp r1, #0x53 + bne _081732B8 + ldr r1, _081732B4 + movs r0, #1 + b _081732F0 + .align 2, 0 +_081732B0: .4byte gUnknown_2024174 +_081732B4: .4byte gUnknown_20380BE +_081732B8: + cmp r1, #0xfa + bne _081732C8 + ldr r1, _081732C4 + movs r0, #2 + b _081732F0 + .align 2, 0 +_081732C4: .4byte gUnknown_20380BE +_081732C8: + cmp r1, #0x80 + bne _081732D8 + ldr r1, _081732D4 + movs r0, #3 + b _081732F0 + .align 2, 0 +_081732D4: .4byte gUnknown_20380BE +_081732D8: + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + bne _081732EC + ldr r1, _081732E8 + movs r0, #4 + b _081732F0 + .align 2, 0 +_081732E8: .4byte gUnknown_20380BE +_081732EC: + ldr r1, _081732FC + movs r0, #0 +_081732F0: + strh r0, [r1] + adds r0, r2, #0 + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_081732FC: .4byte gUnknown_20380BE + thumb_func_end sub_08173298 + + thumb_func_start sub_08173300 +sub_08173300: @ 0x08173300 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08173324 + ldr r1, _08173328 + ldr r2, [r1] + ldr r1, [r2, #8] + ldrh r1, [r1] + strb r1, [r3] + ldr r3, _0817332C + ldr r1, [r2, #8] + ldrh r1, [r1] + lsrs r1, r1, #8 + strb r1, [r3] + bl sub_080A34E4 + pop {r0} + bx r0 + .align 2, 0 +_08173324: .4byte gUnknown_20380D6 +_08173328: .4byte gUnknown_2024174 +_0817332C: .4byte gUnknown_20380D7 + thumb_func_end sub_08173300 + + thumb_func_start sub_08173330 +sub_08173330: @ 0x08173330 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08173330 + + thumb_func_start sub_08173344 +sub_08173344: @ 0x08173344 + push {lr} + bl sub_080A89D4 + bl sub_08004630 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08173344 + + thumb_func_start sub_08173360 +sub_08173360: @ 0x08173360 + push {r4, lr} + sub sp, #4 + ldr r0, _08173380 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #4 + bls _08173374 + b _0817346C +_08173374: + lsls r0, r0, #2 + ldr r1, _08173384 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08173380: .4byte gUnknown_3002360 +_08173384: .4byte _08173388 +_08173388: @ jump table + .4byte _0817339C @ case 0 + .4byte _081733CC @ case 1 + .4byte _081733D2 @ case 2 + .4byte _08173404 @ case 3 + .4byte _08173440 @ case 4 +_0817339C: + movs r0, #0 + bl sub_080006F0 + bl sub_08174DC8 + ldr r4, _081733C0 + ldr r0, _081733C4 + bl sub_08000BDC + str r0, [r4] + ldr r0, _081733C8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + b _0817346C + .align 2, 0 +_081733C0: .4byte gUnknown_203B9A8 +_081733C4: .4byte 0x00002014 +_081733C8: .4byte gUnknown_3002360 +_081733CC: + bl sub_08174E74 + b _08173426 +_081733D2: + ldr r1, _081733FC + movs r0, #0x50 + bl sub_08001144 + movs r1, #0xe2 + lsls r1, r1, #3 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + bl sub_08174EB0 + ldr r0, _08173400 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1] + b _08173426 + .align 2, 0 +_081733FC: .4byte 0x00003F42 +_08173400: .4byte gUnknown_203B9A8 +_08173404: + bl sub_08174F28 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0817346C + ldr r0, _08173438 + bl sub_080006F0 + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_08173426: + ldr r1, _0817343C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0817346C + .align 2, 0 +_08173438: .4byte sub_08173330 +_0817343C: .4byte gUnknown_3002360 +_08173440: + bl sub_080A12E4 + ldr r0, _08173464 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817346C + ldr r0, _08173468 + bl sub_08000540 + movs r0, #0xda + lsls r0, r0, #1 + bl sub_080A3040 + movs r0, #0 + b _0817346E + .align 2, 0 +_08173464: .4byte gUnknown_2037C74 +_08173468: .4byte sub_08173344 +_0817346C: + movs r0, #1 +_0817346E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08173360 + + thumb_func_start sub_08173478 +sub_08173478: @ 0x08173478 + push {r4, lr} + bl sub_08173360 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081734A8 + ldr r0, _081734B0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081734B4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + ldr r4, _081734B8 + movs r0, #0x78 + bl sub_08000BDC + str r0, [r4] +_081734A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081734B0: .4byte sub_08173500 +_081734B4: .4byte gUnknown_3005B60 +_081734B8: .4byte gUnknown_203B9A4 + thumb_func_end sub_08173478 + + thumb_func_start sub_081734BC +sub_081734BC: @ 0x081734BC + push {r4, lr} + bl sub_08173360 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081734EC + ldr r0, _081734F4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081734F8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #8] + ldr r4, _081734FC + movs r0, #0x78 + bl sub_08000BDC + str r0, [r4] +_081734EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081734F4: .4byte sub_08173500 +_081734F8: .4byte gUnknown_3005B60 +_081734FC: .4byte gUnknown_203B9A4 + thumb_func_end sub_081734BC + + thumb_func_start sub_08173500 +sub_08173500: @ 0x08173500 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _081735DC + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0xc] + movs r7, #0 + ldr r0, _081735E0 + mov sb, r0 +_08173524: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _081735E4 + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + cmp r5, #0 + beq _081735F0 + adds r0, r6, #0 + movs r1, #0x41 + bl sub_0806A058 + mov r1, sb + ldr r3, [r1] + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r3, r3, r4 + ldr r2, _081735E8 + adds r1, r2, #0 + ands r0, r1 + ldrh r1, [r3, #8] + ldr r5, _081735EC + adds r2, r5, #0 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #8] + adds r0, r6, #0 + movs r1, #1 + bl sub_0806A058 + mov r2, sb + ldr r1, [r2] + adds r1, r1, r4 + str r0, [r1] + adds r0, r6, #0 + movs r1, #0 + bl sub_0806A058 + mov r5, sb + ldr r1, [r5] + adds r1, #4 + adds r1, r1, r4 + str r0, [r1] + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r2, [r5] + adds r2, r2, r4 + lsls r0, r0, #1 + ldrb r3, [r2, #9] + movs r1, #1 + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #9] + adds r0, r6, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A058 + movs r2, #0 + mov r6, r8 + lsls r5, r6, #2 + ldr r3, _081735E0 +_081735AE: + ldr r0, [r3] + adds r1, r2, r4 + adds r0, #0xa + adds r0, r0, r1 + mov r6, sp + adds r1, r6, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #9 + bls _081735AE + ldr r0, _081735DC + mov r2, r8 + adds r1, r5, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + adds r0, #1 + strh r0, [r1, #0xc] + b _08173624 + .align 2, 0 +_081735DC: .4byte gUnknown_3005B60 +_081735E0: .4byte gUnknown_203B9A4 +_081735E4: .4byte gUnknown_2024190 +_081735E8: .4byte 0x000001FF +_081735EC: .4byte 0xFFFFFE00 +_081735F0: + mov r6, sb + ldr r3, [r6] + lsls r2, r7, #2 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r4, r3, r2 + ldrh r0, [r4, #8] + ldr r6, _08173678 + adds r1, r6, #0 + ands r0, r1 + strh r0, [r4, #8] + str r5, [r4] + adds r3, #4 + adds r3, r3, r2 + str r5, [r3] + ldrb r1, [r4, #9] + movs r0, #1 + ands r0, r1 + strb r0, [r4, #9] + mov r1, sb + ldr r0, [r1] + adds r0, r0, r2 + movs r1, #0xff + strb r1, [r0, #0xa] + mov r2, r8 + lsls r5, r2, #2 +_08173624: + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #5 + bhi _08173630 + b _08173524 +_08173630: + ldr r0, _0817367C + movs r3, #0 + str r3, [r0] + ldr r4, _08173680 + mov r6, r8 + adds r1, r5, r6 + lsls r1, 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, #8 + movs r2, #0xff +_0817364E: + adds r0, r7, #5 + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #5 + bls _0817364E + mov r1, r8 + adds r0, r5, r1 + lsls r0, r0, #3 + adds r1, r0, r4 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _08173688 + ldr r0, _08173684 + b _0817368A + .align 2, 0 +_08173678: .4byte 0xFFFFFE00 +_0817367C: .4byte gUnknown_203B9A0 +_08173680: .4byte gUnknown_3005B60 +_08173684: .4byte sub_08173870 +_08173688: + ldr r0, _0817369C +_0817368A: + str r0, [r1] + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817369C: .4byte sub_081736A0 + thumb_func_end sub_08173500 + + thumb_func_start sub_081736A0 +sub_081736A0: @ 0x081736A0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r7, _081736C8 + ldr r0, _081736CC + ldrb r0, [r0] + cmp r0, #0 + bne _081736D0 + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r7, #0 + movs r1, #0 + bl memset + b _081736EA + .align 2, 0 +_081736C8: .4byte gUnknown_201C000 +_081736CC: .4byte gUnknown_203B9B0 +_081736D0: + movs r0, #3 + bl sub_0815340C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081736EA + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r7, #0 + movs r1, #0 + bl memset +_081736EA: + movs r5, #0 + ldrh r1, [r7, #8] + ldr r2, _08173790 + adds r0, r2, #0 + ands r0, r1 + mov r1, sb + lsls r1, r1, #2 + mov r8, r1 + cmp r0, #0 + beq _08173714 +_081736FE: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r7, #0x78 + cmp r5, #0x31 + bhi _08173718 + ldrh r1, [r7, #8] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _081736FE +_08173714: + cmp r5, #0x31 + bls _0817373A +_08173718: + ldr r4, _08173794 + adds r6, r4, #0 + adds r4, #0x78 + movs r5, #0 + subs r7, #0x78 +_08173722: + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x78 + bl memcpy + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r6, #0x78 + adds r4, #0x78 + cmp r5, #0x30 + bls _08173722 +_0817373A: + ldr r0, _08173798 + ldr r1, [r0] + adds r0, r7, #0 + movs r2, #0x78 + bl memcpy + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _0817379C + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, _081737A0 + mov r0, r8 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081737A4 + str r1, [r0] + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173790: .4byte 0x000001FF +_08173794: .4byte gUnknown_201C000 +_08173798: .4byte gUnknown_203B9A4 +_0817379C: .4byte gUnknown_8277071 +_081737A0: .4byte gUnknown_3005B60 +_081737A4: .4byte sub_081737A8 + thumb_func_end sub_081736A0 + + thumb_func_start sub_081737A8 +sub_081737A8: @ 0x081737A8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08173804 + ldr r0, _08173808 + str r0, [r1] + movs r0, #3 + bl sub_08153274 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08173818 + ldr r0, _0817380C + ldr r0, [r0] + cmp r0, #0 + beq _08173818 + movs r0, #1 + bl sub_08002160 + movs r0, #3 + bl sub_08002160 + bl sub_080034D4 + ldr r5, _08173810 + ldr r0, [r5] + cmp r0, #0 + beq _081737EA + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] +_081737EA: + ldr r5, _08173814 + ldr r0, [r5] + cmp r0, #0 + beq _081737FA + bl sub_08000BF0 + movs r0, #0 + str r0, [r5] +_081737FA: + adds r0, r4, #0 + bl sub_080A8964 + b _08173830 + .align 2, 0 +_08173804: .4byte gUnknown_3005F54 +_08173808: .4byte sub_081734BC +_0817380C: .4byte gUnknown_3005F3C +_08173810: .4byte gUnknown_203B9A8 +_08173814: .4byte gUnknown_203B9A4 +_08173818: + movs r0, #0x37 + bl sub_080A306C + ldr r1, _08173838 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0817383C + str r1, [r0] + movs r1, #0x20 + strh r1, [r0, #0xe] +_08173830: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08173838: .4byte gUnknown_3005B60 +_0817383C: .4byte sub_08173840 + thumb_func_end sub_081737A8 + + thumb_func_start sub_08173840 +sub_08173840: @ 0x08173840 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08173860 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0xe] + movs r3, #0xe + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08173864 + subs r0, r2, #1 + strh r0, [r1, #0xe] + b _08173868 + .align 2, 0 +_08173860: .4byte gUnknown_3005B60 +_08173864: + ldr r0, _0817386C + str r0, [r1] +_08173868: + pop {r0} + bx r0 + .align 2, 0 +_0817386C: .4byte sub_08173870 + thumb_func_end sub_08173840 + + thumb_func_start sub_08173870 +sub_08173870: @ 0x08173870 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08173884 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _08173888 + str r0, [r1] + bx lr + .align 2, 0 +_08173884: .4byte gUnknown_3005B60 +_08173888: .4byte sub_0817388C + thumb_func_end sub_08173870 + + thumb_func_start sub_0817388C +sub_0817388C: @ 0x0817388C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _081738C4 + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r6, [r1, #0xa] + ldr r2, _081738C8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r2, [r2] + adds r7, r2, r0 + movs r2, #0xc + ldrsh r0, [r1, r2] + cmp r0, #3 + ble _081738D0 + ldr r1, _081738CC + b _081738D2 + .align 2, 0 +_081738C4: .4byte gUnknown_3005B60 +_081738C8: .4byte gUnknown_203B9A4 +_081738CC: .4byte gUnknown_85C6470 +_081738D0: + ldr r1, _08173988 +_081738D2: + lsls r2, r6, #3 + adds r0, r2, r1 + ldrh r3, [r0] + adds r0, r1, #2 + adds r0, r2, r0 + ldrh r4, [r0] + adds r0, r1, #4 + adds r0, r2, r0 + ldrh r0, [r0] + mov sb, r0 + adds r1, #6 + adds r2, r2, r1 + ldrh r5, [r2] + ldrh r2, [r7, #8] + ldr r0, _0817398C + ands r0, r2 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _08173904 + lsls r0, r5, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xc + adds r0, r0, r1 + lsrs r5, r0, #0x10 +_08173904: + lsls r0, r2, #0x17 + lsrs r0, r0, #0x17 + ldr r1, [r7] + ldr r2, [r7, #4] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + str r3, [sp] + lsls r3, r4, #0x10 + asrs r3, r3, #0x10 + str r3, [sp, #4] + lsls r3, r6, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #8] + ldr r3, _08173990 + str r3, [sp, #0xc] + movs r3, #1 + bl sub_0818D110 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08173994 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r3, r2, r4 + movs r1, #0 + mov ip, r1 + mov r1, sb + strh r1, [r3, #0x30] + strh r5, [r3, #0x32] + mov r1, ip + strh r1, [r3, #0x2e] + ldrh r1, [r7, #8] + lsls r1, r1, #0x17 + lsrs r1, r1, #0x17 + strh r1, [r3, #0x3c] + adds r4, #0x1c + adds r2, r2, r4 + ldr r1, _08173998 + str r1, [r2] + ldr r5, _0817399C + adds r1, r6, #5 + lsls r1, r1, #1 + mov r2, r8 + lsls r4, r2, #2 + add r4, r8 + lsls r4, r4, #3 + adds r1, r1, r4 + adds r2, r5, #0 + adds r2, #8 + adds r1, r1, r2 + strh r0, [r1] + movs r0, #0 + movs r1, #1 + bl sub_08197028 + adds r4, r4, r5 + ldr r0, _081739A0 + str r0, [r4] + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173988: .4byte gUnknown_85C64A0 +_0817398C: .4byte 0x000001FF +_08173990: .4byte 0x0000FFFF +_08173994: .4byte gUnknown_20205AC +_08173998: .4byte sub_08175024 +_0817399C: .4byte gUnknown_3005B60 +_081739A0: .4byte sub_081739A4 + thumb_func_end sub_0817388C + + thumb_func_start sub_081739A4 +sub_081739A4: @ 0x081739A4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _08173A04 + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #3 + adds r5, r3, r4 + ldrh r0, [r5, #0xa] + ldr r2, _08173A08 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, [r2] + adds r2, r2, r1 + adds r0, #5 + lsls r0, r0, #1 + adds r0, r0, r3 + adds r4, #8 + adds r0, r0, r4 + movs r3, #0 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08173A0C + adds r3, r0, r1 + ldr r1, [r3, #0x1c] + ldr r0, _08173A10 + cmp r1, r0 + bne _081739FE + ldrb r1, [r3, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #1] + adds r0, r2, #0 + movs r1, #0 + movs r2, #0xe + bl sub_0817487C + movs r0, #0x78 + strh r0, [r5, #0xe] + ldr r0, _08173A14 + str r0, [r5] +_081739FE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08173A04: .4byte gUnknown_3005B60 +_08173A08: .4byte gUnknown_203B9A4 +_08173A0C: .4byte gUnknown_20205AC +_08173A10: .4byte sub_08007140 +_08173A14: .4byte sub_08173A18 + thumb_func_end sub_081739A4 + + thumb_func_start sub_08173A18 +sub_08173A18: @ 0x08173A18 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _08173A54 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r6, r0, #3 + adds r4, r6, r2 + ldrh r3, [r4, #0xa] + ldr r1, _08173A58 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, [r1] + adds r1, r1, r0 + mov sb, r1 + ldrh r1, [r4, #0xe] + movs r7, #0xe + ldrsh r0, [r4, r7] + mov ip, r2 + cmp r0, #0 + beq _08173A5C + subs r0, r1, #1 + strh r0, [r4, #0xe] + b _08173AF4 + .align 2, 0 +_08173A54: .4byte gUnknown_3005B60 +_08173A58: .4byte gUnknown_203B9A4 +_08173A5C: + ldr r2, _08173AD4 + ldr r0, _08173AD8 + mov r8, r0 + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r6 + mov r1, ip + adds r1, #8 + adds r6, r0, r1 + movs r7, #0 + ldrsh r1, [r6, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + movs r1, #0x80 + lsls r1, 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, #4 + bgt _08173AE8 + mov r7, sb + ldrh r1, [r7, #0x1c] + ldr r0, _08173ADC + ands r0, r1 + cmp r0, #0 + beq _08173AE8 + adds r0, r2, #1 + strh r0, [r4, #0xa] + ldr r0, _08173AE0 + str r0, [sp] + adds r0, r3, #0 + movs r1, #0 + movs r2, #0xc + movs r3, #0xc + bl sub_080A139C + movs r0, #0 + ldrsh r1, [r6, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #5] + ldr r0, _08173AE4 + str r0, [r4] + b _08173AF4 + .align 2, 0 +_08173AD4: .4byte gUnknown_203B9A0 +_08173AD8: .4byte gUnknown_20205AC +_08173ADC: .4byte 0x000001FF +_08173AE0: .4byte 0x000063B0 +_08173AE4: .4byte sub_0817388C +_08173AE8: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + add r0, ip + ldr r1, _08173B04 + str r1, [r0] +_08173AF4: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173B04: .4byte sub_08173B08 + thumb_func_end sub_08173A18 + + thumb_func_start sub_08173B08 +sub_08173B08: @ 0x08173B08 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08173B90 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_080A139C + movs r3, #0 + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r5, r0, #3 + ldr r0, _08173B94 + mov ip, r0 + mov r8, r1 + ldr r6, _08173B98 + movs r7, #0xd + rsbs r7, r7, #0 +_08173B36: + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r5 + mov r2, ip + adds r1, r0, r2 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0xff + beq _08173B58 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r2, [r1, #5] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1, #5] +_08173B58: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #5 + bls _08173B36 + movs r0, #0 + movs r1, #0xf + bl sub_0817481C + movs r0, #0x69 + bl sub_080A306C + ldr r1, _08173B9C + mov r2, r8 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xc8 + lsls r1, r1, #1 + strh r1, [r0, #0xe] + ldr r1, _08173BA0 + str r1, [r0] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173B90: .4byte 0xFFFF0000 +_08173B94: .4byte gUnknown_3005B68 +_08173B98: .4byte gUnknown_20205AC +_08173B9C: .4byte gUnknown_3005B60 +_08173BA0: .4byte sub_08173BA4 + thumb_func_end sub_08173B08 + + thumb_func_start sub_08173BA4 +sub_08173BA4: @ 0x08173BA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _08173BE4 + 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 _08173BE8 + subs r2, #1 + strh r2, [r1, #0xe] + movs r0, #3 + ands r0, r2 + cmp r0, #0 + bne _08173C62 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x6e + ble _08173C62 + bl sub_08175100 + b _08173C62 + .align 2, 0 +_08173BE4: .4byte gUnknown_3005B60 +_08173BE8: + movs r3, #0 + mov sb, r4 + ldr r0, _08173C74 + mov sl, r0 + adds r4, r5, #0 + adds r7, #8 + mov r8, r7 + ldr r7, _08173C78 + movs r1, #0xd + rsbs r1, r1, #0 + mov ip, r1 + movs r5, #4 +_08173C00: + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r4 + mov r2, r8 + adds r1, r0, r2 + movs r2, #0 + ldrsh r0, [r1, r2] + cmp r0, #0xff + beq _08173C24 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + mov r0, ip + ands r0, r2 + orrs r0, r5 + strb r0, [r1, #5] +_08173C24: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #5 + bls _08173C00 + mov r3, sl + ldr r0, [r3] + ldr r1, _08173C7C + str r1, [sp] + movs r1, #0 + movs r2, #0xc + movs r3, #0xc + bl sub_080A139C + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, _08173C80 + mov r2, sb + adds r0, r2, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #7 + strh r1, [r0, #0xe] + ldr r1, _08173C84 + str r1, [r0] +_08173C62: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173C74: .4byte gUnknown_203B9A0 +_08173C78: .4byte gUnknown_20205AC +_08173C7C: .4byte 0x000063B0 +_08173C80: .4byte gUnknown_3005B60 +_08173C84: .4byte sub_08173C88 + thumb_func_end sub_08173BA4 + + thumb_func_start sub_08173C88 +sub_08173C88: @ 0x08173C88 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08173CA8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r1, #0xe] + movs r3, #0xe + ldrsh r0, [r1, r3] + cmp r0, #0xf + ble _08173CB0 + ldr r0, _08173CAC + str r0, [r1] + b _08173CC2 + .align 2, 0 +_08173CA8: .4byte gUnknown_3005B60 +_08173CAC: .4byte sub_08173CC8 +_08173CB0: + adds r0, r2, #1 + strh r0, [r1, #0xe] + movs r0, #0xe + ldrsh r1, [r1, r0] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_08173CC2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08173C88 + + thumb_func_start sub_08173CC8 +sub_08173CC8: @ 0x08173CC8 + push {r4, r5, r6, lr} + sub sp, #8 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r6, _08173D50 + ldr r0, [r6] + ldrb r0, [r0, #8] + movs r1, #1 + bl sub_0818D6A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + str r1, [sp] + ldr r1, _08173D54 + str r1, [sp, #4] + movs r1, #1 + movs r2, #0x78 + movs r3, #0x48 + bl sub_0818D5D8 + ldr r1, _08173D58 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r1 + strh r0, [r4, #0x10] + ldr r0, _08173D5C + bl sub_08003250 + ldr r0, [r6] + ldrb r1, [r0, #0x14] + lsrs r1, r1, #3 + ldr r2, _08173D60 + movs r0, #1 + movs r3, #0xd0 + bl sub_0809815C + movs r0, #1 + bl sub_080985A0 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0x78 + strh r0, [r4, #0xe] + ldr r0, _08173D64 + str r0, [r4] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08173D50: .4byte gUnknown_3005AF0 +_08173D54: .4byte 0x0000FFFF +_08173D58: .4byte gUnknown_3005B60 +_08173D5C: .4byte gUnknown_85C643C +_08173D60: .4byte 0x0000021D +_08173D64: .4byte sub_08173D68 + thumb_func_end sub_08173CC8 + + thumb_func_start sub_08173D68 +sub_08173D68: @ 0x08173D68 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08173D8C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0xe] + movs r1, #0xe + ldrsh r5, [r4, r1] + cmp r5, #0 + beq _08173D90 + subs r0, #1 + strh r0, [r4, #0xe] + b _08173DFC + .align 2, 0 +_08173D8C: .4byte gUnknown_3005B60 +_08173D90: + ldr r2, _08173DB0 + movs r3, #0x10 + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrh r2, [r1, #0x20] + movs r3, #0x20 + ldrsh r0, [r1, r3] + cmp r0, #0xc0 + beq _08173DB4 + adds r0, r2, #1 + strh r0, [r1, #0x20] + b _08173DFC + .align 2, 0 +_08173DB0: .4byte gUnknown_20205AC +_08173DB4: + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #1 + movs r1, #2 + bl sub_08174B74 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _08173E04 + str r5, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _08173E08 + str r0, [r4] +_08173DFC: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08173E04: .4byte gUnknown_85C9337 +_08173E08: .4byte sub_08173E0C + thumb_func_end sub_08173D68 + + thumb_func_start sub_08173E0C +sub_08173E0C: @ 0x08173E0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08173E38 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08173E32 + movs r0, #4 + bl sub_080A2B08 + ldr r0, _08173E3C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08173E40 + str r0, [r1] +_08173E32: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08173E38: .4byte gUnknown_3002360 +_08173E3C: .4byte gUnknown_3005B60 +_08173E40: .4byte sub_08173E44 + thumb_func_end sub_08173E0C + + thumb_func_start sub_08173E44 +sub_08173E44: @ 0x08173E44 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08173E84 + ldr r1, _08173E88 + movs r2, #0x80 + lsls r2, r2, #2 + bl CpuSet + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #8 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08173E8C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08173E90 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08173E84: .4byte gUnknown_20377B4 +_08173E88: .4byte gUnknown_20373B4 +_08173E8C: .4byte gUnknown_3005B60 +_08173E90: .4byte sub_08173E94 + thumb_func_end sub_08173E44 + + thumb_func_start sub_08173E94 +sub_08173E94: @ 0x08173E94 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _08173F54 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08173F48 + lsls r0, r7, #2 + mov r8, r0 + ldr r1, _08173F58 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r1, #0x12 + adds r5, r0, r1 + ldr r2, _08173F5C + mov sb, r2 + movs r6, #5 +_08173EC0: + ldrb r4, [r5] + cmp r4, #0xff + beq _08173EDE + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + add r0, sb + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + adds r0, r4, #0 + bl sub_0818D54C +_08173EDE: + adds r5, #2 + subs r6, #1 + cmp r6, #0 + bge _08173EC0 + ldr r0, _08173F58 + mov r2, r8 + adds r1, r2, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x10] + bl sub_0818D61C + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + bl sub_080034D4 + movs r0, #1 + bl sub_08002160 + movs r0, #3 + bl sub_08002160 + movs r0, #0 + bl sub_080017D4 + adds r0, r7, #0 + bl sub_080A8964 + ldr r4, _08173F60 + ldr r0, [r4] + cmp r0, #0 + beq _08173F34 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08173F34: + ldr r4, _08173F64 + ldr r0, [r4] + cmp r0, #0 + beq _08173F44 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08173F44: + bl sub_08173F68 +_08173F48: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08173F54: .4byte gUnknown_2037C74 +_08173F58: .4byte gUnknown_3005B60 +_08173F5C: .4byte gUnknown_20205AC +_08173F60: .4byte gUnknown_203B9A8 +_08173F64: .4byte gUnknown_203B9A4 + thumb_func_end sub_08173E94 + + thumb_func_start sub_08173F68 +sub_08173F68: @ 0x08173F68 + push {lr} + ldr r0, _08173F74 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08173F74: .4byte sub_0817553C + thumb_func_end sub_08173F68 + + thumb_func_start sub_08173F78 +sub_08173F78: @ 0x08173F78 + push {r4, lr} + ldr r0, _08173F94 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #5 + bhi _08173FB4 + lsls r0, r0, #2 + ldr r1, _08173F98 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08173F94: .4byte gUnknown_3002360 +_08173F98: .4byte _08173F9C +_08173F9C: @ jump table + .4byte _08173FB4 @ case 0 + .4byte _08173FE4 @ case 1 + .4byte _08173FF8 @ case 2 + .4byte _08174024 @ case 3 + .4byte _08174064 @ case 4 + .4byte _08174094 @ case 5 +_08173FB4: + movs r0, #0 + bl sub_080006F0 + bl sub_08174DC8 + ldr r4, _08173FD8 + ldr r0, _08173FDC + bl sub_08000BDC + str r0, [r4] + ldr r0, _08173FE0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0] + b _081740EC + .align 2, 0 +_08173FD8: .4byte gUnknown_203B9A8 +_08173FDC: .4byte 0x00002014 +_08173FE0: .4byte gUnknown_3002360 +_08173FE4: + bl sub_08174E74 + ldr r1, _08173FF4 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _08174086 + .align 2, 0 +_08173FF4: .4byte gUnknown_3002360 +_08173FF8: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + bl sub_08174EB0 + ldr r1, _08174020 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08174086 + .align 2, 0 +_08174020: .4byte gUnknown_3002360 +_08174024: + bl sub_08174F28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081740EC + ldr r1, _08174054 + ldr r0, _08174058 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_080FA43C + ldr r0, _0817405C + bl sub_080006F0 + ldr r1, _08174060 + movs r4, #0x87 + lsls r4, r4, #3 + adds r1, r1, r4 + b _08174086 + .align 2, 0 +_08174054: .4byte gUnknown_201C000 +_08174058: .4byte gUnknown_85C6790 +_0817405C: .4byte sub_08173330 +_08174060: .4byte gUnknown_3002360 +_08174064: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + bl sub_080FA48C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081740EC + ldr r1, _08174090 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_08174086: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081740EC + .align 2, 0 +_08174090: .4byte gUnknown_3002360 +_08174094: + ldr r1, _081740F4 + movs r0, #0x50 + bl sub_08001144 + movs r1, #0xe2 + lsls r1, r1, #3 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + ldr r0, _081740F8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r4, _081740FC + movs r3, #0xff +_081740C6: + adds r0, r2, #5 + lsls r0, r0, #1 + adds r0, r0, r1 + adds r0, r0, r4 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _081740C6 + ldr r4, _08174100 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BDC + str r0, [r4] + ldr r0, _08174104 + bl sub_08000540 +_081740EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081740F4: .4byte 0x00003F42 +_081740F8: .4byte sub_08174108 +_081740FC: .4byte gUnknown_3005B68 +_08174100: .4byte gUnknown_203B9A4 +_08174104: .4byte sub_08173344 + thumb_func_end sub_08173F78 + + thumb_func_start sub_08174108 +sub_08174108: @ 0x08174108 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0817413C + str r0, [sp] + movs r0, #0 + movs r1, #0x1e + movs r2, #0 + movs r3, #0xc + bl sub_081981B4 + movs r0, #3 + bl sub_0815340C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08174148 + ldr r0, _08174140 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08174144 + b _081741BE + .align 2, 0 +_0817413C: .4byte 0x00000226 +_08174140: .4byte gUnknown_3005B60 +_08174144: .4byte sub_08174784 +_08174148: + ldr r0, _08174190 + ldr r4, _08174194 + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #5 + bl CpuSet + ldr r4, [r4] + movs r2, #0 + ldrh r1, [r4, #8] + ldr r3, _08174198 + adds r0, r3, #0 + ands r0, r1 + lsls r5, r6, #2 + cmp r0, #0 + beq _0817417E +_08174168: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r4, #0x78 + cmp r2, #0x31 + bhi _081741A0 + ldrh r1, [r4, #8] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08174168 +_0817417E: + cmp r2, #0x31 + bhi _081741A0 + ldr r0, _0817419C + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + subs r0, r2, #1 + b _081741AA + .align 2, 0 +_08174190: .4byte gUnknown_201C000 +_08174194: .4byte gUnknown_203B9A4 +_08174198: .4byte 0x000001FF +_0817419C: .4byte gUnknown_3005B60 +_081741A0: + ldr r0, _081741C8 + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x31 +_081741AA: + strh r0, [r1, #8] + movs r0, #0xa + bl sub_08084180 + ldr r2, _081741C8 + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r0, [r1, #0xa] + ldr r0, _081741CC +_081741BE: + str r0, [r1] + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081741C8: .4byte gUnknown_3005B60 +_081741CC: .4byte sub_081741D0 + thumb_func_end sub_08174108 + + thumb_func_start sub_081741D0 +sub_081741D0: @ 0x081741D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _08174284 + ldr r3, [r0] + movs r5, #0 + ldr r1, _08174288 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r4, #8 + ldrsh r0, [r0, r4] + adds r4, r1, #0 + ldr r2, _0817428C + cmp r5, r0 + bge _0817420E + adds r1, r0, #0 +_08174202: + adds r3, #0x78 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r1 + blt _08174202 +_0817420E: + adds r6, r3, #0 + movs r0, #0 + str r0, [r2] + mov r5, r8 + lsls r2, r5, #2 + adds r1, r2, r5 + lsls r1, r1, #3 + adds r1, r1, r4 + strh r0, [r1, #0xc] + strh r0, [r1, #0x10] + movs r5, #0 + str r2, [sp, #0x14] + ldr r4, _08174290 + adds r2, r1, #0 +_0817422A: + ldrh r1, [r6, #8] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0817423A + ldrh r0, [r2, #0x10] + adds r0, #1 + strh r0, [r2, #0x10] +_0817423A: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r6, #0x14 + cmp r5, #5 + bls _0817422A + adds r6, r3, #0 + movs r5, #0 + ldr r1, _08174288 + ldr r0, [sp, #0x14] + add r0, r8 + lsls r0, r0, #3 + mov sb, r0 + adds r0, r0, r1 + str r0, [sp, #0x10] + ldr r1, _08174290 + mov sl, r1 +_0817425C: + ldrh r0, [r6, #8] + mov r1, sl + ands r1, r0 + adds r7, r0, #0 + cmp r1, #0 + beq _08174324 + ldr r2, [sp, #0x10] + movs r4, #0x10 + ldrsh r0, [r2, r4] + cmp r0, #3 + ble _0817429C + lsls r1, r5, #3 + ldr r0, _08174294 + adds r0, #4 + adds r0, r1, r0 + ldrh r3, [r0] + ldr r0, _08174298 + adds r1, r1, r0 + ldrh r4, [r1] + b _081742AC + .align 2, 0 +_08174284: .4byte gUnknown_203B9A4 +_08174288: .4byte gUnknown_3005B60 +_0817428C: .4byte gUnknown_203B9A0 +_08174290: .4byte 0x000001FF +_08174294: .4byte gUnknown_85C6470 +_08174298: .4byte gUnknown_85C6476 +_0817429C: + ldr r0, _08174314 + lsls r2, r5, #3 + adds r1, r0, #4 + adds r1, r2, r1 + ldrh r3, [r1] + adds r0, #6 + adds r2, r2, r0 + ldrh r4, [r2] +_081742AC: + mov r1, sl + ands r1, r7 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + bne _081742C2 + lsls r0, r4, #0x10 + movs r1, #0xa0 + lsls r1, r1, #0xc + adds r0, r0, r1 + lsrs r4, r0, #0x10 +_081742C2: + lsls r0, r7, #0x17 + lsrs r0, r0, #0x17 + ldr r1, [r6] + ldr r2, [r6, #4] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + str r3, [sp] + lsls r3, r4, #0x10 + asrs r3, r3, #0x10 + str r3, [sp, #4] + lsls r3, r5, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #8] + ldr r3, _08174318 + str r3, [sp, #0xc] + movs r3, #1 + bl sub_0818D504 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0817431C + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r3, [r1, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r3, r2 + movs r2, #4 + orrs r3, r2 + strb r3, [r1, #5] + adds r1, r5, #5 + lsls r1, r1, #1 + add r1, sb + ldr r2, _08174320 + adds r1, r1, r2 + strh r0, [r1] + b _08174332 + .align 2, 0 +_08174314: .4byte gUnknown_85C64A0 +_08174318: .4byte 0x0000FFFF +_0817431C: .4byte gUnknown_20205AC +_08174320: .4byte gUnknown_3005B68 +_08174324: + adds r0, r5, #5 + lsls r0, r0, #1 + add r0, sb + ldr r4, _08174384 + adds r0, r0, r4 + movs r1, #0xff + strh r1, [r0] +_08174332: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r6, #0x14 + cmp r5, #5 + bls _0817425C + ldr r0, _08174388 + ldr r2, _0817438C + movs r1, #0xc + bl sub_080A22E8 + ldr r0, _08174390 + ldr r1, _08174394 + ldr r4, [sp, #0x14] + add r4, r8 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r5, #0xa + ldrsh r1, [r4, r5] + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r5, _08174398 + ldr r1, _0817439C + adds r0, r5, #0 + bl sub_08008BCC + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bgt _081743A4 + ldr r1, _081743A0 + movs r0, #1 + str r0, [sp] + adds r0, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_081982E8 + b _081743B4 + .align 2, 0 +_08174384: .4byte gUnknown_3005B68 +_08174388: .4byte 0xFFFF0000 +_0817438C: .4byte 0x000063B0 +_08174390: .4byte gUnknown_2021C40 +_08174394: .4byte gUnknown_3005B60 +_08174398: .4byte gUnknown_2021C7C +_0817439C: .4byte gUnknown_85C9328 +_081743A0: .4byte gUnknown_85C8E7C +_081743A4: + ldr r1, _081743D4 + movs r0, #1 + str r0, [sp] + adds r0, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_081982E8 +_081743B4: + ldr r0, _081743D8 + ldr r1, [sp, #0x14] + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081743DC + str r0, [r1] + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081743D4: .4byte gUnknown_85C8E68 +_081743D8: .4byte gUnknown_3005B60 +_081743DC: .4byte sub_081743E0 + thumb_func_end sub_081741D0 + + thumb_func_start sub_081743E0 +sub_081743E0: @ 0x081743E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081744E8 + ldr r5, [r0] + movs r3, #0 + ldr r1, _081744EC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + cmp r3, r0 + bge _08174414 + adds r1, r0, #0 +_08174408: + adds r5, #0x78 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, r1 + blt _08174408 +_08174414: + movs r3, #0 + lsls r7, r4, #2 + adds r0, r7, r4 + lsls r6, r0, #3 + ldr r0, _081744F0 + mov sl, r0 + ldr r1, _081744F4 + mov r8, r1 + movs r2, #0xd + rsbs r2, r2, #0 + mov sb, r2 + movs r0, #4 + mov ip, r0 +_0817442E: + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r6 + add r0, sl + ldrh r1, [r0] + cmp r1, #0xff + beq _08174450 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r2, [r0, #5] + mov r1, sb + ands r1, r2 + mov r2, ip + orrs r1, r2 + strb r1, [r0, #5] +_08174450: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #5 + bls _0817442E + adds r1, r7, r4 + lsls r1, r1, #3 + ldr r0, _081744EC + adds r6, r1, r0 + movs r2, #0xc + ldrsh r0, [r6, r2] + adds r0, #5 + lsls r0, r0, #1 + adds r0, r0, r1 + ldr r1, _081744EC + adds r1, #8 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081744F4 + adds r0, r0, r1 + ldrb r2, [r0, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #5] + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #9 + lsls r0, r1 + ldr r1, _081744F8 + eors r0, r1 + ldr r2, _081744FC + str r0, [r2] + ldr r2, _08174500 + movs r1, #0xc + bl sub_080A2324 + movs r0, #0xc + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r5, r0 + ldrh r1, [r4, #8] + ldr r0, _08174504 + ands r0, r1 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + beq _081744CA + bl sub_080A2F64 + ldrh r0, [r4, #8] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x17 + movs r1, #0 + bl sub_080A2B3C +_081744CA: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0xe + bl sub_0817487C + ldr r0, _08174508 + str r0, [r6] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081744E8: .4byte gUnknown_203B9A4 +_081744EC: .4byte gUnknown_3005B60 +_081744F0: .4byte gUnknown_3005B68 +_081744F4: .4byte gUnknown_20205AC +_081744F8: .4byte 0xFFFF0000 +_081744FC: .4byte gUnknown_203B9A0 +_08174500: .4byte 0x000063B0 +_08174504: .4byte 0x000001FF +_08174508: .4byte sub_0817450C + thumb_func_end sub_081743E0 + + thumb_func_start sub_0817450C +sub_0817450C: @ 0x0817450C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08174590 + ldrh r2, [r1, #0x2e] + movs r0, #1 + ands r0, r2 + adds r3, r1, #0 + cmp r0, #0 + beq _081745C8 + ldr r0, _08174594 + mov ip, r0 + lsls r0, r6, #2 + adds r1, r0, r6 + lsls r3, r1, #3 + mov r1, ip + adds r4, r3, r1 + ldrh r2, [r4, #8] + movs r5, #8 + ldrsh r1, [r4, r5] + mov sb, r0 + cmp r1, #0 + beq _0817459C + subs r0, r2, #1 + strh r0, [r4, #8] + movs r5, #0 + adds r7, r3, #0 + movs r0, #8 + add r0, ip + mov r8, r0 +_0817454E: + adds r0, r5, #5 + lsls r0, r0, #1 + adds r0, r0, r7 + mov r1, r8 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + beq _08174566 + bl sub_0818D54C + movs r0, #0xff + strh r0, [r4] +_08174566: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #5 + bls _0817454E + ldr r0, _08174594 + mov r2, sb + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08174588 + subs r0, r2, #1 + strh r0, [r1, #0xa] +_08174588: + ldr r0, _08174598 + str r0, [r1] + b _08174668 + .align 2, 0 +_08174590: .4byte gUnknown_3002360 +_08174594: .4byte gUnknown_3005B60 +_08174598: .4byte sub_081741D0 +_0817459C: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081745B6 + bl sub_080A2F64 + ldr r0, _081745BC + ldr r1, _081745C0 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_081745B6: + ldr r0, _081745C4 + str r0, [r4] + b _08174668 + .align 2, 0 +_081745BC: .4byte gUnknown_30074D0 +_081745C0: .4byte 0x0000FFFF +_081745C4: .4byte sub_0817467C +_081745C8: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _0817460C + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081745EA + bl sub_080A2F64 + ldr r0, _081745FC + ldr r1, _08174600 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_081745EA: + ldr r0, _08174604 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08174608 + str r0, [r1] + b _08174668 + .align 2, 0 +_081745FC: .4byte gUnknown_30074D0 +_08174600: .4byte 0x0000FFFF +_08174604: .4byte gUnknown_3005B60 +_08174608: .4byte sub_0817467C +_0817460C: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0817463C + ldr r0, _08174634 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r2, [r1, #0xc] + movs r4, #0xc + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _0817463C + subs r0, r2, #1 + strh r0, [r1, #0xc] + ldr r0, _08174638 + str r0, [r1] + b _08174668 + .align 2, 0 +_08174634: .4byte gUnknown_3005B60 +_08174638: .4byte sub_081743E0 +_0817463C: + ldrh r1, [r3, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08174668 + ldr r1, _08174674 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r5, #0xc + ldrsh r1, [r2, r5] + movs r3, #0x10 + ldrsh r0, [r2, r3] + subs r0, #1 + cmp r1, r0 + bge _08174668 + ldrh r0, [r2, #0xc] + adds r0, #1 + strh r0, [r2, #0xc] + ldr r0, _08174678 + str r0, [r2] +_08174668: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08174674: .4byte gUnknown_3005B60 +_08174678: .4byte sub_081743E0 + thumb_func_end sub_0817450C + + thumb_func_start sub_0817467C +sub_0817467C: @ 0x0817467C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081746BC + ldr r1, _081746C0 + movs r2, #0x80 + lsls r2, r2, #2 + bl CpuSet + ldr r1, _081746C4 + ldr r0, _081746C8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_080FA464 + ldr r1, _081746CC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081746D0 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081746BC: .4byte gUnknown_20377B4 +_081746C0: .4byte gUnknown_20373B4 +_081746C4: .4byte gUnknown_201C000 +_081746C8: .4byte gUnknown_85C6790 +_081746CC: .4byte gUnknown_3005B60 +_081746D0: .4byte sub_081746D4 + thumb_func_end sub_0817467C + + thumb_func_start sub_081746D4 +sub_081746D4: @ 0x081746D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_080FA4A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0817476C + movs r5, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r7, r0, #3 + ldr r0, _08174778 + mov r8, r0 +_081746F4: + adds r0, r5, #5 + lsls r0, r0, #1 + adds r0, r0, r7 + mov r1, r8 + adds r4, r0, r1 + ldrh r0, [r4] + cmp r0, #0xff + beq _0817470C + bl sub_0818D54C + movs r0, #0xff + strh r0, [r4] +_0817470C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081746F4 + movs r0, #0 + bl sub_08001B5C + movs r0, #1 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + bl sub_08198418 + bl sub_080034D4 + movs r0, #1 + bl sub_08002160 + movs r0, #3 + bl sub_08002160 + movs r0, #0 + bl sub_080017D4 + adds r0, r6, #0 + bl sub_080A8964 + ldr r4, _0817477C + ldr r0, [r4] + cmp r0, #0 + beq _08174758 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08174758: + ldr r4, _08174780 + ldr r0, [r4] + cmp r0, #0 + beq _08174768 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_08174768: + bl sub_08137CAC +_0817476C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08174778: .4byte gUnknown_3005B68 +_0817477C: .4byte gUnknown_203B9A8 +_08174780: .4byte gUnknown_203B9A4 + thumb_func_end sub_081746D4 + + thumb_func_start sub_08174784 +sub_08174784: @ 0x08174784 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081747DC + movs r1, #8 + movs r2, #1 + bl sub_08198244 + movs r0, #0 + movs r1, #0 + bl sub_08196FB8 + ldr r2, _081747E0 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_08196E2C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + ldr r1, _081747E4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081747E8 + str r1, [r0] + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081747DC: .4byte gUnknown_85C8E8C +_081747E0: .4byte gUnknown_85C9311 +_081747E4: .4byte gUnknown_3005B60 +_081747E8: .4byte sub_081747EC + thumb_func_end sub_08174784 + + thumb_func_start sub_081747EC +sub_081747EC: @ 0x081747EC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08174810 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0817480C + ldr r0, _08174814 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08174818 + str r0, [r1] +_0817480C: + pop {r0} + bx r0 + .align 2, 0 +_08174810: .4byte gUnknown_3002360 +_08174814: .4byte gUnknown_3005B60 +_08174818: .4byte sub_0817467C + thumb_func_end sub_081747EC + + thumb_func_start sub_0817481C +sub_0817481C: @ 0x0817481C + push {r4, r5, lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_0800401C + adds r4, r0, #0 + ldr r5, _08174874 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + adds r1, r5, #0 + bl sub_08005DAC + lsls r4, r4, #2 + lsrs r0, r0, #1 + subs r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08174878 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #1 + bl sub_08199AFC + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08174874: .4byte gUnknown_85C929D +_08174878: .4byte gUnknown_85C6444 + thumb_func_end sub_0817481C + + thumb_func_start sub_0817487C +sub_0817487C: @ 0x0817487C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + adds r7, r0, #0 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + ldrh r0, [r7, #8] + ldr r1, _08174904 + ands r1, r0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r1, r0 + beq _0817493C + ldr r0, _08174908 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0817490C + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #4 + movs r3, #1 + bl sub_08199AFC + ldrh r0, [r7, #8] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x17 + bl sub_0806DE54 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08174910 + cmp r6, r0 + beq _08174914 + 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, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #1] + add r5, sp, #0xc + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #2] + b _08174922 + .align 2, 0 +_08174904: .4byte 0x000001FF +_08174908: .4byte gUnknown_85C6444 +_0817490C: .4byte gUnknown_85C934B +_08174910: .4byte 0x0000FFFF +_08174914: + add r3, sp, #0xc + adds r2, r3, #0 + adds r1, r2, #0 + movs r0, #0xac + strb r0, [r1, #2] + strb r0, [r2, #1] + strb r0, [r3] +_08174922: + add r1, sp, #0xc + movs r0, #0xff + strb r0, [r1, #3] + ldr r0, _081749C8 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + movs r1, #0 + movs r2, #0x1c + movs r3, #1 + bl sub_08199AFC +_0817493C: + movs r4, #0 + adds r1, r7, #0 + adds r1, #0xa + ldrb r0, [r7, #0xa] + ldrh r3, [r7, #8] + cmp r0, #0xff + beq _0817496E + adds r2, r1, #0 +_0817494C: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + adds r0, r2, r4 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #5 + beq _0817496E + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, #0xff + beq _0817496E + cmp r4, #9 + bls _0817494C +_0817496E: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + ldr r0, _081749CC + ands r0, r3 + movs r1, #0xce + lsls r1, r1, #1 + cmp r0, r1 + bne _081749D0 + movs r0, #0 + movs r1, #3 + bl sub_0800401C + adds r4, r0, #0 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + add r1, sp, #0xc + bl sub_08005DAC + lsls r4, r4, #2 + lsrs r0, r0, #1 + subs r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081749C8 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + movs r3, #1 + bl sub_08199AFC + movs r0, #0 + movs r1, #3 + bl sub_08003528 + b _08174B58 + .align 2, 0 +_081749C8: .4byte gUnknown_85C6444 +_081749CC: .4byte 0x000001FF +_081749D0: + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + add r1, sp, #0xc + bl sub_08005DAC + movs r2, #0x79 + subs r2, r2, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _08174A7C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #1 + bl sub_08199AFC + add r1, sp, #0xc + movs r0, #0xba + strb r0, [r1] + movs r4, #1 + ldr r2, _08174A80 + ldrh r5, [r7, #8] + lsls r1, r5, #0x17 + lsrs r1, r1, #0x17 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _08174A52 + adds r6, r2, #0 +_08174A1A: + mov r3, sp + adds r3, r3, r4 + adds r3, #0xc + lsls r2, r5, #0x17 + lsrs r1, r2, #0x17 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + subs r0, #1 + adds r0, r4, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r2, r1, #0 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + subs r0, #1 + adds r0, r4, r0 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0xff + beq _08174A52 + cmp r4, #9 + bls _08174A1A +_08174A52: + ldrh r0, [r7, #8] + ldr r1, _08174A84 + ands r1, r0 + cmp r1, #0x20 + beq _08174AA2 + cmp r1, #0x1d + beq _08174AA2 + lsls r0, r0, #0x17 + lsrs r0, r0, #0x17 + ldr r1, [r7, #4] + bl sub_08069B60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xfe + beq _08174A98 + cmp r0, #0xfe + bgt _08174A88 + cmp r0, #0 + beq _08174A8E + b _08174AAC + .align 2, 0 +_08174A7C: .4byte gUnknown_85C6444 +_08174A80: .4byte gUnknown_82EA31C +_08174A84: .4byte 0x000001FF +_08174A88: + cmp r0, #0xff + beq _08174AA2 + b _08174AAC +_08174A8E: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xb5 + b _08174AAA +_08174A98: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xb6 + b _08174AAA +_08174AA2: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0 +_08174AAA: + strb r0, [r1] +_08174AAC: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + ldr r6, _08174B60 + str r6, [sp] + movs r4, #0 + str r4, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x7a + movs r3, #1 + bl sub_08199AFC + str r6, [sp] + str r4, [sp, #4] + ldr r0, _08174B64 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x18 + movs r3, #0x11 + bl sub_08199AFC + ldr r5, _08174B68 + ldrb r1, [r7, #9] + lsrs r1, r1, #1 + adds r0, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x28 + movs r3, #0x11 + bl sub_08199AFC + str r6, [sp] + str r4, [sp, #4] + ldr r0, _08174B6C + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x52 + movs r3, #0x11 + bl sub_08199AFC + str r6, [sp] + str r4, [sp, #4] + ldr r0, _08174B70 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x7a + movs r3, #0x11 + bl sub_08199AFC + ldrh r1, [r7] + adds r0, r5, #0 + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x84 + movs r3, #0x11 + bl sub_08199AFC + movs r0, #0 + movs r1, #3 + bl sub_08003528 +_08174B58: + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08174B60: .4byte gUnknown_85C6444 +_08174B64: .4byte gUnknown_85C934F +_08174B68: .4byte gUnknown_2021C40 +_08174B6C: .4byte gUnknown_85C935D +_08174B70: .4byte gUnknown_85C93FF + thumb_func_end sub_0817487C + + thumb_func_start sub_08174B74 +sub_08174B74: @ 0x08174B74 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x28 + movs r4, #0 + movs r0, #1 + movs r1, #0x11 + bl sub_08003B18 + movs r0, #1 + bl sub_0800365C + ldr r2, _08174C04 + movs r0, #1 + movs r1, #0 + movs r3, #0xd + bl sub_08197F44 + str r4, [sp] + str r4, [sp, #4] + ldr r0, _08174C08 + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, _08174C0C + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + movs r2, #4 + movs r3, #3 + bl sub_08199B84 + movs r2, #0 + ldr r0, _08174C10 + ldr r3, [r0] + movs r5, #1 +_08174BBC: + mov r1, sp + adds r1, r1, r2 + adds r1, #0x14 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08174BD2 + orrs r4, r5 +_08174BD2: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #4 + bls _08174BBC + mov r1, sp + adds r1, r1, r2 + adds r1, #0x14 + movs r0, #0xff + strb r0, [r1] + cmp r4, #0 + beq _08174C14 + ldr r0, _08174C08 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #0x3c + movs r3, #3 + bl sub_08199AFC + b _08174C2E + .align 2, 0 +_08174C04: .4byte 0x0000021D +_08174C08: .4byte gUnknown_85C6448 +_08174C0C: .4byte gUnknown_85C9359 +_08174C10: .4byte gUnknown_3005AF0 +_08174C14: + str r4, [sp] + str r4, [sp, #4] + ldr r0, _08174DB0 + str r0, [sp, #8] + str r4, [sp, #0xc] + add r1, sp, #0x14 + str r1, [sp, #0x10] + movs r0, #1 + movs r1, #1 + movs r2, #0x3c + movs r3, #3 + bl sub_08199B84 +_08174C2E: + ldr r0, _08174DB4 + mov sb, r0 + ldr r0, [r0] + ldrb r4, [r0, #0xa] + ldrb r0, [r0, #0xb] + lsls r0, r0, #8 + orrs r4, r0 + ldr r1, _08174DB0 + mov r8, r1 + str r1, [sp] + movs r7, #0 + str r7, [sp, #4] + ldr r0, _08174DB8 + str r0, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #4 + movs r3, #0x12 + bl sub_08199AFC + add r6, sp, #0x14 + ldr r1, _08174DBC + adds r0, r4, #0 + bl __modsi3 + ldr r5, _08174DC0 + adds r1, r5, #0 + bl __divsi3 + subs r0, #0x5f + strb r0, [r6] + add r6, sp, #0x14 + adds r0, r4, #0 + adds r1, r5, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r5, #0xfa + lsls r5, r5, #2 + adds r1, r5, #0 + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r6, #1] + add r6, sp, #0x14 + adds r0, r4, #0 + adds r1, r5, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r6, #2] + add r5, sp, #0x14 + adds r0, r4, #0 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #3] + add r5, sp, #0x14 + adds r0, r4, #0 + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #4] + add r1, sp, #0x14 + movs r0, #0xff + strb r0, [r1, #5] + mov r0, r8 + str r0, [sp] + str r7, [sp, #4] + str r1, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0x3c + movs r3, #0x12 + bl sub_08199AFC + mov r1, r8 + str r1, [sp] + str r7, [sp, #4] + ldr r0, _08174DC4 + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r2, #4 + movs r3, #0x20 + bl sub_08199AFC + add r5, sp, #0x14 + mov r0, sb + 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, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r5, #1] + add r5, sp, #0x14 + ldrh r0, [r4, #0xe] + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r5, #2] + add r0, sp, #0x14 + ldrb r0, [r0] + cmp r0, #0xa1 + bne _08174D3A + add r0, sp, #0x14 + strb r7, [r0] +_08174D3A: + add r0, sp, #0x14 + ldrb r1, [r0] + cmp r1, #0 + bne _08174D4C + ldrb r0, [r0, #1] + cmp r0, #0xa1 + bne _08174D4C + add r0, sp, #0x14 + strb r1, [r0, #8] +_08174D4C: + add r1, sp, #0x14 + movs r6, #0 + movs r0, #0xf0 + strb r0, [r1, #3] + adds r4, r1, #0 + ldr r0, _08174DB4 + ldr r5, [r0] + ldrb r0, [r5, #0x10] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xa + bl __udivsi3 + adds r0, #0xa1 + strb r0, [r4, #4] + add r4, sp, #0x14 + ldrb r0, [r5, #0x10] + movs r1, #0xa + bl __umodsi3 + adds r0, #0xa1 + strb r0, [r4, #5] + add r1, sp, #0x14 + movs r0, #0xff + strb r0, [r1, #6] + ldr r0, _08174DB0 + str r0, [sp] + str r6, [sp, #4] + str r1, [sp, #8] + movs r0, #1 + movs r1, #0 + movs r2, #0x3c + movs r3, #0x20 + bl sub_08199AFC + movs r0, #1 + movs r1, #3 + bl sub_08003528 + add sp, #0x28 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08174DB0: .4byte gUnknown_85C6448 +_08174DB4: .4byte gUnknown_3005AF0 +_08174DB8: .4byte gUnknown_85C935D +_08174DBC: .4byte 0x000186A0 +_08174DC0: .4byte 0x00002710 +_08174DC4: .4byte gUnknown_85C8DEC + thumb_func_end sub_08174B74 + + thumb_func_start sub_08174DC8 +sub_08174DC8: @ 0x08174DC8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r3, #0xc0 + lsls r3, r3, #0x13 + movs r4, #0xc0 + lsls r4, r4, #9 + add r0, sp, #4 + mov r8, r0 + mov r2, sp + movs r6, #0 + ldr r1, _08174E68 + movs r5, #0x80 + lsls r5, r5, #5 + ldr r7, _08174E6C + movs r0, #0x81 + lsls r0, r0, #0x18 + mov ip, r0 +_08174DEE: + strh r6, [r2] + mov r0, sp + str r0, [r1] + str r3, [r1, #4] + str r7, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r5 + subs r4, r4, r5 + cmp r4, r5 + bhi _08174DEE + strh r6, [r2] + mov r2, sp + str r2, [r1] + str r3, [r1, #4] + lsrs r0, r4, #1 + mov r2, ip + orrs r0, r2 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #0xe0 + lsls r0, r0, #0x13 + movs r3, #0x80 + lsls r3, r3, #3 + movs r4, #0 + str r4, [sp, #4] + ldr r2, _08174E68 + mov r1, r8 + str r1, [r2] + str r0, [r2, #4] + lsrs r0, r3, #2 + movs r1, #0x85 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xa0 + lsls r1, r1, #0x13 + mov r0, sp + strh r4, [r0] + str r0, [r2] + str r1, [r2, #4] + lsrs r3, r3, #1 + movs r0, #0x81 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r2, #8] + ldr r0, [r2, #8] + bl sub_080A133C + ldr r0, _08174E70 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08174E68: .4byte 0x040000D4 +_08174E6C: .4byte 0x81000800 +_08174E70: .4byte gUnknown_85C65A4 + thumb_func_end sub_08174DC8 + + thumb_func_start sub_08174E74 +sub_08174E74: @ 0x08174E74 + push {lr} + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_081996B8 + bl sub_0818CCF8 + bl sub_08008424 + ldr r1, _08174EA4 + movs r0, #8 + strb r0, [r1] + ldr r0, _08174EA8 + bl sub_08034388 + ldr r0, _08174EAC + bl sub_080343E4 + pop {r0} + bx r0 + .align 2, 0 +_08174EA4: .4byte gUnknown_30030BC +_08174EA8: .4byte gUnknown_85C6450 +_08174EAC: .4byte gUnknown_85C6460 + thumb_func_end sub_08174E74 + + thumb_func_start sub_08174EB0 +sub_08174EB0: @ 0x08174EB0 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _08174F1C + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r4, _08174F20 + ldr r1, [r4] + adds r1, #0x12 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _08174F24 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08174F1C: .4byte gUnknown_85C6430 +_08174F20: .4byte gUnknown_203B9A8 +_08174F24: .4byte 0x00001012 + thumb_func_end sub_08174EB0 + + thumb_func_start sub_08174F28 +sub_08174F28: @ 0x08174F28 + push {r4, lr} + sub sp, #8 + ldr r0, _08174F40 + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #4 + bhi _0817500C + lsls r0, r0, #2 + ldr r1, _08174F44 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08174F40: .4byte gUnknown_203B9A8 +_08174F44: .4byte _08174F48 +_08174F48: @ jump table + .4byte _08174F5C @ case 0 + .4byte _08174F74 @ case 1 + .4byte _08174F80 @ case 2 + .4byte _08174FD6 @ case 3 + .4byte _08174FE0 @ case 4 +_08174F5C: + ldr r1, _08174F70 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _0817500C + .align 2, 0 +_08174F70: .4byte gUnknown_85C65C4 +_08174F74: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0817500C + b _08175016 +_08174F80: + movs r4, #0x20 + str r4, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + str r4, [sp] + movs r0, #0xb + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #3 + bl sub_080025E0 + str r4, [sp] + movs r0, #6 + str r0, [sp, #4] + movs r0, #1 + movs r1, #1 + movs r2, #0 + movs r3, #0xe + bl sub_080025E0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + movs r1, #2 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #1 + bl sub_08002248 + movs r0, #3 + bl sub_08002248 + b _0817500C +_08174FD6: + bl sub_08196DC4 + bl sub_08196DF4 + b _0817500C +_08174FE0: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r0, _08175008 + ldr r1, [r0] + movs r0, #0 + strh r0, [r1] + b _08175018 + .align 2, 0 +_08175008: .4byte gUnknown_203B9A8 +_0817500C: + ldr r0, _08175020 + ldr r1, [r0] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_08175016: + movs r0, #1 +_08175018: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08175020: .4byte gUnknown_203B9A8 + thumb_func_end sub_08174F28 + + thumb_func_start sub_08175024 +sub_08175024: @ 0x08175024 + push {r4, lr} + adds r2, r0, #0 + ldr r1, [r2, #0x20] + ldr r0, [r2, #0x30] + cmp r1, r0 + beq _0817507A + ldrh r3, [r2, #0x20] + movs r1, #0x20 + ldrsh r0, [r2, r1] + movs r4, #0x30 + ldrsh r1, [r2, r4] + cmp r0, r1 + bge _08175044 + adds r0, r3, #0 + adds r0, #0xf + strh r0, [r2, #0x20] +_08175044: + ldrh r3, [r2, #0x20] + movs r4, #0x20 + ldrsh r0, [r2, r4] + cmp r0, r1 + ble _08175054 + adds r0, r3, #0 + subs r0, #0xf + strh r0, [r2, #0x20] +_08175054: + ldrh r3, [r2, #0x22] + movs r1, #0x22 + ldrsh r0, [r2, r1] + movs r4, #0x32 + ldrsh r1, [r2, r4] + cmp r0, r1 + bge _08175068 + adds r0, r3, #0 + adds r0, #0xa + strh r0, [r2, #0x22] +_08175068: + ldrh r3, [r2, #0x22] + movs r4, #0x22 + ldrsh r0, [r2, r4] + cmp r0, r1 + ble _081750A0 + adds r0, r3, #0 + subs r0, #0xa + strh r0, [r2, #0x22] + b _081750A0 +_0817507A: + ldrh r0, [r2, #0x3c] + lsls r1, r0, #0x10 + movs r0, #0xce + lsls r0, r0, #0x11 + cmp r1, r0 + bne _08175094 + lsrs r1, r1, #0x10 + adds r0, r2, #0 + movs r2, #1 + movs r3, #3 + bl sub_0806E7CC + b _081750A0 +_08175094: + lsrs r1, r1, #0x10 + adds r0, r2, #0 + movs r2, #0 + movs r3, #3 + bl sub_0806E7CC +_081750A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08175024 + + thumb_func_start sub_081750A8 +sub_081750A8: @ 0x081750A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x26] + movs r2, #0x26 + ldrsh r0, [r5, r2] + cmp r0, #0x78 + ble _081750BE + adds r0, r5, #0 + bl sub_08006E00 + b _081750F6 +_081750BE: + adds r0, r1, #1 + ldrh r1, [r5, #0x30] + adds r0, r0, r1 + strh r0, [r5, #0x26] + ldrh r4, [r5, #0x2e] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r0, #8 + ldr r1, _081750FC + lsls r4, r4, #1 + adds r4, r4, r1 + movs r2, #0 + ldrsh r1, [r4, r2] + muls r0, r1, r0 + cmp r0, #0 + bge _081750EC + adds r0, #0xff +_081750EC: + asrs r0, r0, #8 + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x2e] + adds r0, #4 + strh r0, [r5, #0x2e] +_081750F6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081750FC: .4byte gUnknown_82FA8CC + thumb_func_end sub_081750A8 + + thumb_func_start sub_08175100 +sub_08175100: @ 0x08175100 + push {r4, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf0 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #7 + ands r2, r0 + rsbs r2, r2, #0 + ldr r0, _08175170 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r1, r4, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08175174 + adds r4, r1, r0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x11 + bl __umodsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _08175178 + movs r0, #0 + b _0817517A + .align 2, 0 +_08175170: .4byte gUnknown_85C658C +_08175174: .4byte gUnknown_20205AC +_08175178: + movs r0, #1 +_0817517A: + strh r0, [r4, #0x30] + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08175100 + + thumb_func_start sub_08175184 +sub_08175184: @ 0x08175184 + push {r4, lr} + ldr r4, _081751B4 + movs r0, #0xb4 + strh r0, [r4] + ldr r0, _081751B8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _081751AE + ldr r1, _081751BC + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r4] + strh r1, [r0, #0xa] + ldr r0, _081751C0 + strh r2, [r0] +_081751AE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081751B4: .4byte gUnknown_2037280 +_081751B8: .4byte sub_08175268 +_081751BC: .4byte gUnknown_3005B60 +_081751C0: .4byte gUnknown_2037282 + thumb_func_end sub_08175184 + + thumb_func_start sub_081751C4 +sub_081751C4: @ 0x081751C4 + push {r4, lr} + ldr r0, _081751F0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081751D8 + bl sub_080A8964 +_081751D8: + bl sub_08152230 + ldr r4, _081751F4 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081751F0: .4byte sub_08175268 +_081751F4: .4byte 0x000003E9 + thumb_func_end sub_081751C4 + + thumb_func_start sub_081751F8 +sub_081751F8: @ 0x081751F8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0xe] + movs r2, #0xe + ldrsh r0, [r5, r2] + cmp r0, #0x6e + ble _08175228 + ldr r2, _08175224 + movs r0, #0x28 + ldrsh r1, [r5, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + subs r1, #1 + strh r1, [r0, #0x26] + ldrb r0, [r5, #0x16] + bl sub_081525AC + b _0817525C + .align 2, 0 +_08175224: .4byte gUnknown_3005B60 +_08175228: + adds r0, r1, #1 + ldrh r1, [r5, #0x1c] + adds r0, r0, r1 + strh r0, [r5, #0xe] + ldrb r4, [r5, #0x1a] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + adds r0, #8 + ldr r1, _08175264 + lsls r4, r4, #1 + adds r4, r4, r1 + movs r2, #0 + ldrsh r1, [r4, r2] + muls r0, r1, r0 + cmp r0, #0 + bge _08175252 + adds r0, #0xff +_08175252: + asrs r0, r0, #8 + strh r0, [r5, #0xc] + ldrh r0, [r5, #0x1a] + adds r0, #4 + strh r0, [r5, #0x1a] +_0817525C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08175264: .4byte gUnknown_82FA8CC + thumb_func_end sub_081751F8 + + thumb_func_start sub_08175268 +sub_08175268: @ 0x08175268 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + movs r7, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08175294 + adds r6, r0, r1 + ldrh r0, [r6] + cmp r0, #1 + beq _081752E4 + cmp r0, #1 + bgt _08175298 + cmp r0, #0 + beq _081752A0 + b _081753B4 + .align 2, 0 +_08175294: .4byte gUnknown_3005B68 +_08175298: + cmp r0, #0xff + bne _0817529E + b _081753A4 +_0817529E: + b _081753B4 +_081752A0: + movs r0, #0x40 + bl sub_0815219C + cmp r0, #0 + bne _081752BC + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _081752D0 + strh r7, [r0] + ldr r1, _081752D4 + ldr r2, _081752D8 + adds r0, r2, #0 + strh r0, [r1] +_081752BC: + ldr r0, _081752DC + bl sub_08034388 + ldr r0, _081752E0 + bl sub_080343E4 + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + b _081753B4 + .align 2, 0 +_081752D0: .4byte gUnknown_2037280 +_081752D4: .4byte gUnknown_2037282 +_081752D8: .4byte 0x0000FFFF +_081752DC: .4byte gUnknown_85C6450 +_081752E0: .4byte gUnknown_85C6460 +_081752E4: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _0817537C + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0817537C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf0 + bl __umodsi3 + adds r5, r0, #0 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + bl sub_0806F050 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #7 + ands r4, r0 + rsbs r4, r4, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x11 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0817538C + ldr r2, _08175390 + str r4, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + adds r0, r1, #0 + adds r1, r2, #0 + adds r3, r5, #0 + bl sub_081524A0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0xff + beq _0817537C + adds r4, r7, #0 + ldr r1, _08175394 + adds r0, r4, #0 + bl sub_08152414 + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _0817536C + adds r0, r4, #0 + movs r1, #1 + movs r2, #1 + bl sub_08152450 +_0817536C: + adds r0, r4, #0 + movs r1, #7 + mov r2, r8 + bl sub_08152450 + ldrh r0, [r6, #0x1e] + adds r0, #1 + strh r0, [r6, #0x1e] +_0817537C: + bl sub_081522B0 + ldrh r0, [r6, #2] + cmp r0, #0 + beq _08175398 + subs r0, #1 + strh r0, [r6, #2] + b _081753B4 + .align 2, 0 +_0817538C: .4byte gUnknown_85C64B8 +_08175390: .4byte 0x000003E9 +_08175394: .4byte sub_081751F8 +_08175398: + ldrh r0, [r6, #0x1e] + cmp r0, #0 + bne _081753B4 + movs r0, #0xff + strh r0, [r6] + b _081753B4 +_081753A4: + bl sub_081751C4 + ldr r0, _081753C0 + strh r7, [r0] + ldr r1, _081753C4 + ldr r2, _081753C8 + adds r0, r2, #0 + strh r0, [r1] +_081753B4: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081753C0: .4byte gUnknown_2037280 +_081753C4: .4byte gUnknown_2037282 +_081753C8: .4byte 0x0000FFFF + thumb_func_end sub_08175268 + + thumb_func_start sub_081753CC +sub_081753CC: @ 0x081753CC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081753CC + + thumb_func_start sub_081753E0 +sub_081753E0: @ 0x081753E0 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + ldr r0, _08175434 + ldrh r1, [r0, #0x2c] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08175426 + ldr r0, _08175438 + ldrb r0, [r0] + cmp r0, #0 + beq _08175426 + ldr r2, _0817543C + ldr r0, _08175440 + ldrh r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08175444 + cmp r1, r0 + bne _08175426 + bl sub_081753CC + bl sub_080A89D4 + bl sub_080066D8 + ldr r1, _08175448 + movs r0, #1 + strb r0, [r1] +_08175426: + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 +_08175434: .4byte gUnknown_3002360 +_08175438: .4byte gUnknown_203B9B0 +_0817543C: .4byte gUnknown_3005B60 +_08175440: .4byte gUnknown_203B9AE +_08175444: .4byte sub_0817567C +_08175448: .4byte gUnknown_203B9B1 + thumb_func_end sub_081753E0 + + thumb_func_start sub_0817544C +sub_0817544C: @ 0x0817544C + push {lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _0817549C + movs r0, #0 + movs r2, #1 + bl sub_08001800 + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BDC + adds r1, r0, #0 + movs r0, #0 + bl sub_0800212C + ldr r0, _081754A0 + movs r1, #0x80 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _081754A4 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + bl sub_08001B48 + pop {r0} + bx r0 + .align 2, 0 +_0817549C: .4byte gUnknown_85C7914 +_081754A0: .4byte gUnknown_85C67AC +_081754A4: .4byte gUnknown_85C7918 + thumb_func_end sub_0817544C + + thumb_func_start sub_081754A8 +sub_081754A8: @ 0x081754A8 + push {lr} + bl sub_080034D4 + movs r0, #0 + bl sub_08002194 + cmp r0, #0 + beq _081754BC + bl sub_08000BF0 +_081754BC: + pop {r0} + bx r0 + thumb_func_end sub_081754A8 + + thumb_func_start sub_081754C0 +sub_081754C0: @ 0x081754C0 + push {r4, lr} + sub sp, #0x18 + adds r4, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r1, sp, #0x14 + movs r0, #0 + strb r0, [r1] + cmp r3, #1 + bne _081754E0 + movs r0, #3 + strb r0, [r1, #1] + movs r0, #4 + b _081754E8 +_081754E0: + add r1, sp, #0x14 + movs r0, #1 + strb r0, [r1, #1] + movs r0, #2 +_081754E8: + strb r0, [r1, #2] + movs r1, #0 + ldrb r0, [r4] + lsls r3, r2, #3 + cmp r0, #0xff + beq _081754FE +_081754F4: + adds r1, #1 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _081754F4 +_081754FE: + lsls r0, r1, #3 + adds r0, r0, r1 + movs r2, #0xf0 + subs r2, r2, r0 + lsrs r0, r2, #0x1f + adds r2, r2, r0 + asrs r2, r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0xc] + str r4, [sp, #0x10] + movs r0, #0 + movs r1, #1 + bl sub_08199B84 + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081754C0 + + thumb_func_start sub_0817553C +sub_0817553C: @ 0x0817553C + push {r4, r5, r6, r7, lr} + sub sp, #4 + bl sub_08175BF0 + movs r0, #0 + bl sub_080006F0 + ldr r0, _08175620 + movs r1, #0xe0 + lsls r1, r1, #9 + bl sub_08000BAC + bl sub_080A133C + bl sub_080A8818 + bl sub_0817544C + ldr r0, _08175624 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08175628 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x10] + strh r1, [r0, #0x16] + strh r1, [r0, #0x1e] + movs r1, #1 + strh r1, [r0, #0x22] +_08175582: + movs r0, #0 + adds r1, r7, #0 + bl sub_081768B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08175582 + ldr r4, _08175628 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r2, #0xa + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r6, #0 + movs r5, #0 + movs r1, #0x28 + strh r1, [r0, #8] + ldr r1, _0817562C + movs r0, #0x12 + bl sub_08001144 + ldr r0, _08175630 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + strh r7, [r1, #0xa] + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _08175634 + bl sub_080006F0 + ldr r0, _08175638 + bl m4aSongNumStart + ldr r0, _0817563C + bl sub_08000540 + ldr r0, _08175640 + strb r6, [r0] + ldr r4, _08175644 + movs r0, #0xe5 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + bl sub_08177214 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x78 + strh r5, [r1] + adds r0, #0x7a + strh r5, [r0] + ldr r0, _08175648 + strh r7, [r0] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08175620: .4byte gUnknown_2000000 +_08175624: .4byte sub_0817564C +_08175628: .4byte gUnknown_3005B60 +_0817562C: .4byte 0x0000FFFC +_08175630: .4byte sub_08175CAC +_08175634: .4byte sub_081753CC +_08175638: .4byte 0x000001C7 +_0817563C: .4byte sub_081753E0 +_08175640: .4byte gUnknown_203B9B1 +_08175644: .4byte gUnknown_203B9B4 +_08175648: .4byte gUnknown_203B9AE + thumb_func_end sub_0817553C + + thumb_func_start sub_0817564C +sub_0817564C: @ 0x0817564C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08175670 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817566C + ldr r0, _08175674 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08175678 + str r0, [r1] +_0817566C: + pop {r0} + bx r0 + .align 2, 0 +_08175670: .4byte gUnknown_2037C74 +_08175674: .4byte gUnknown_3005B60 +_08175678: .4byte sub_0817567C + thumb_func_end sub_0817564C + + thumb_func_start sub_0817567C +sub_0817567C: @ 0x0817567C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081756B0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #0x10 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _081756B8 + movs r3, #0xa + ldrsh r1, [r4, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x1e + strh r1, [r0, #8] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x20] + ldr r0, _081756B4 + b _08175702 + .align 2, 0 +_081756B0: .4byte gUnknown_3005B60 +_081756B4: .4byte sub_081759A4 +_081756B8: + ldr r0, _081756E0 + strh r1, [r0] + ldrh r2, [r4, #0x1e] + movs r3, #0x1e + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _081756E8 + strh r2, [r4, #0x22] + strh r1, [r4, #0x1e] + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081756E4 + b _08175702 + .align 2, 0 +_081756E0: .4byte gUnknown_203B9AC +_081756E4: .4byte sub_08175710 +_081756E8: + cmp r0, #2 + bne _08175704 + strh r2, [r4, #0x22] + strh r1, [r4, #0x1e] + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0817570C +_08175702: + str r0, [r4] +_08175704: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817570C: .4byte sub_081757AC + thumb_func_end sub_0817567C + + thumb_func_start sub_08175710 +sub_08175710: @ 0x08175710 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08175744 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817573E + movs r0, #0 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_08176AA8 + ldr r0, _08175748 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0817574C + str r0, [r1] +_0817573E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08175744: .4byte gUnknown_2037C74 +_08175748: .4byte gUnknown_3005B60 +_0817574C: .4byte sub_08175750 + thumb_func_end sub_08175710 + + thumb_func_start sub_08175750 +sub_08175750: @ 0x08175750 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_080006F0 + ldr r1, _081757A0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r5, r0, r1 + ldrb r0, [r5, #0x16] + adds r1, r4, #0 + bl sub_081768B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08175798 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _081757A4 + bl sub_080006F0 + ldr r0, _081757A8 + str r0, [r5] +_08175798: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081757A0: .4byte gUnknown_3005B60 +_081757A4: .4byte sub_081753CC +_081757A8: .4byte sub_0817564C + thumb_func_end sub_08175750 + + thumb_func_start sub_081757AC +sub_081757AC: @ 0x081757AC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081757E0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081757DA + movs r0, #0 + movs r1, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_08176AA8 + ldr r0, _081757E4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081757E8 + str r0, [r1] +_081757DA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081757E0: .4byte gUnknown_2037C74 +_081757E4: .4byte gUnknown_3005B60 +_081757E8: .4byte sub_081757EC + thumb_func_end sub_081757AC + + thumb_func_start sub_081757EC +sub_081757EC: @ 0x081757EC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081758B8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r1, r1, r0 + mov r8, r1 + ldrb r7, [r1] + cmp r7, #0 + beq _0817580E + cmp r7, #1 + beq _081758F8 +_0817580E: + bl sub_0800668C + bl sub_0818CCF8 + bl sub_08008424 + ldr r1, _081758BC + movs r0, #8 + strb r0, [r1] + ldr r0, _081758C0 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _081758C4 + ldr r1, _081758C8 + bl LZ77UnCompVram + ldr r0, _081758CC + movs r1, #1 + movs r2, #0x3e + bl sub_080A1200 + movs r1, #0 + ldr r4, _081758D0 + movs r3, #0x11 + ldr r2, _081758D4 +_08175844: + adds r0, r1, r4 + strb r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + bls _08175844 + movs r1, #0 + ldr r2, _081758D8 + ldr r6, _081758DC + ldr r0, _081758E0 + adds r5, r2, r0 + movs r4, #0x22 + ldr r3, _081758D4 +_08175860: + adds r0, r1, r5 + strb r4, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r3 + bls _08175860 + movs r1, #0 + ldr r5, _081758E4 + movs r4, #0x33 + ldr r3, _081758D4 +_08175876: + adds r0, r1, r5 + strb r4, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r3 + bls _08175876 + movs r0, #0 + strh r0, [r2] + ldr r1, _081758E8 + adds r0, r1, #0 + strh r0, [r2, #2] + ldr r1, _081758EC + adds r0, r1, #0 + strh r0, [r2, #4] + ldr r1, _081758F0 + adds r0, r1, #0 + strh r0, [r2, #6] + adds r0, r6, #0 + bl sub_08008210 + ldr r0, _081758F4 + bl sub_0800845C + ldr r1, _081758B8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08175982 + .align 2, 0 +_081758B8: .4byte gUnknown_3002360 +_081758BC: .4byte gUnknown_30030BC +_081758C0: .4byte gUnknown_858FC14 +_081758C4: .4byte gUnknown_858FA1C +_081758C8: .4byte 0x06003800 +_081758CC: .4byte gUnknown_858F812 +_081758D0: .4byte gUnknown_201C000 +_081758D4: .4byte 0x000007FF +_081758D8: .4byte gUnknown_201D800 +_081758DC: .4byte gUnknown_85C79C8 +_081758E0: .4byte 0xFFFFF000 +_081758E4: .4byte gUnknown_201D000 +_081758E8: .4byte 0x000053FF +_081758EC: .4byte 0x0000529F +_081758F0: .4byte 0x00007E94 +_081758F4: .4byte gUnknown_85C79D8 +_081758F8: + ldr r0, _08175990 + movs r1, #0 + bl sub_080A8878 + ldr r2, _08175994 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + adds r4, r4, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + mov sb, r1 + movs r5, #0 + strh r0, [r4, #0xe] + movs r0, #0xe + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r7, [r0, #8] + movs r0, #0xe + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r6, [r0, #0xa] + movs r0, #0xe + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r4, #0x16] + strh r1, [r0, #0xc] + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0x20 + bl sub_08001144 + ldr r1, _08175998 + movs r0, #0xe + bl sub_08001144 + movs r1, #0xca + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + mov r0, sb + mov r1, r8 + strb r0, [r1] + ldr r0, _0817599C + strh r5, [r0] + ldr r0, _081759A0 + str r0, [r4] +_08175982: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08175990: .4byte sub_08176024 +_08175994: .4byte gUnknown_3005B60 +_08175998: .4byte 0x00000703 +_0817599C: .4byte gUnknown_203B9F4 +_081759A0: .4byte sub_0817564C + thumb_func_end sub_081757EC + + thumb_func_start sub_081759A4 +sub_081759A4: @ 0x081759A4 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081759C8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #0x20] + movs r2, #0x20 + ldrsh r1, [r4, r2] + cmp r1, #0 + beq _081759CC + subs r0, #1 + strh r0, [r4, #0x20] + b _081759E0 + .align 2, 0 +_081759C8: .4byte gUnknown_3005B60 +_081759CC: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0xc + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081759E8 + str r0, [r4] +_081759E0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081759E8: .4byte sub_081759EC + thumb_func_end sub_081759A4 + + thumb_func_start sub_081759EC +sub_081759EC: @ 0x081759EC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08175A18 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08175A12 + adds r0, r4, #0 + bl sub_08176AA8 + ldr r0, _08175A1C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _08175A20 + str r0, [r1] +_08175A12: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08175A18: .4byte gUnknown_2037C74 +_08175A1C: .4byte gUnknown_3005B60 +_08175A20: .4byte sub_08175A24 + thumb_func_end sub_081759EC + + thumb_func_start sub_08175A24 +sub_08175A24: @ 0x08175A24 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08175BF0 + bl sub_080A133C + movs r1, #0xe0 + lsls r1, r1, #6 + movs r0, #0 + movs r2, #0 + bl sub_08176B24 + bl sub_0800668C + bl sub_08008424 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #8 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r1, #0xe0 + lsls r1, r1, #3 + movs r0, #8 + bl sub_08001144 + movs r0, #1 + bl sub_08001274 + movs r1, #0xa0 + lsls r1, r1, #1 + movs r0, #0 + bl sub_08001144 + ldr r1, _08175A94 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x98 + lsls r1, r1, #1 + strh r1, [r0, #8] + ldr r1, _08175A98 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08175A94: .4byte gUnknown_3005B60 +_08175A98: .4byte sub_08175A9C + thumb_func_end sub_08175A24 + + thumb_func_start sub_08175A9C +sub_08175A9C: @ 0x08175A9C + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08175AC0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r0, [r4, #8] + movs r2, #8 + ldrsh r1, [r4, r2] + cmp r1, #0 + beq _08175AC4 + subs r0, #1 + strh r0, [r4, #8] + b _08175AD8 + .align 2, 0 +_08175AC0: .4byte gUnknown_3005B60 +_08175AC4: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #6 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08175AE0 + str r0, [r4] +_08175AD8: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08175AE0: .4byte sub_08175AE4 + thumb_func_end sub_08175A9C + + thumb_func_start sub_08175AE4 +sub_08175AE4: @ 0x08175AE4 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _08175B34 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08175B2A + movs r0, #0xe0 + lsls r0, r0, #6 + movs r1, #0 + bl sub_08176CCC + movs r0, #1 + rsbs r0, r0, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080A139C + ldr r1, _08175B38 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xe1 + lsls r1, r1, #5 + strh r1, [r0, #8] + ldr r1, _08175B3C + str r1, [r0] +_08175B2A: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08175B34: .4byte gUnknown_2037C74 +_08175B38: .4byte gUnknown_3005B60 +_08175B3C: .4byte sub_08175B40 + thumb_func_end sub_08175AE4 + + thumb_func_start sub_08175B40 +sub_08175B40: @ 0x08175B40 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08175B8C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08175BC4 + ldr r1, _08175B90 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _08175B6E + ldr r0, _08175B94 + ldrh r0, [r0, #0x2e] + cmp r0, #0 + beq _08175BA0 +_08175B6E: + movs r0, #4 + bl sub_080A2B08 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _08175B98 + str r1, [sp] + movs r1, #8 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08175B9C + str r0, [r4] + b _08175BC4 + .align 2, 0 +_08175B8C: .4byte gUnknown_2037C74 +_08175B90: .4byte gUnknown_3005B60 +_08175B94: .4byte gUnknown_3002360 +_08175B98: .4byte 0x0000FFFF +_08175B9C: .4byte sub_08175BD4 +_08175BA0: + ldr r0, _08175BCC + cmp r1, r0 + bne _08175BAC + movs r0, #8 + bl sub_080A2B08 +_08175BAC: + movs r0, #8 + ldrsh r1, [r4, r0] + ldr r0, _08175BD0 + cmp r1, r0 + bne _08175BBE + movs r0, #0xe4 + lsls r0, r0, #1 + bl m4aSongNumStart +_08175BBE: + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] +_08175BC4: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08175BCC: .4byte 0x00001BE8 +_08175BD0: .4byte 0x00001AB8 + thumb_func_end sub_08175B40 + + thumb_func_start sub_08175BD4 +sub_08175BD4: @ 0x08175BD4 + push {lr} + ldr r0, _08175BEC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08175BE8 + movs r0, #0xff + bl SoftReset +_08175BE8: + pop {r0} + bx r0 + .align 2, 0 +_08175BEC: .4byte gUnknown_2037C74 + thumb_func_end sub_08175BD4 + + thumb_func_start sub_08175BF0 +sub_08175BF0: @ 0x08175BF0 + push {lr} + sub sp, #8 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + mov r1, sp + movs r0, #0 + strh r0, [r1] + ldr r1, _08175C98 + mov r0, sp + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08175C9C + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0 + str r2, [sp, #4] + add r0, sp, #4 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08175CA0 + str r0, [r1, #8] + ldr r0, [r1, #8] + mov r0, sp + strh r2, [r0] + str r0, [r1] + ldr r0, _08175CA4 + str r0, [r1, #4] + ldr r0, _08175CA8 + str r0, [r1, #8] + ldr r0, [r1, #8] + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08175C98: .4byte 0x040000D4 +_08175C9C: .4byte 0x8100C000 +_08175CA0: .4byte 0x85000100 +_08175CA4: .4byte 0x05000002 +_08175CA8: .4byte 0x810001FF + thumb_func_end sub_08175BF0 + + thumb_func_start sub_08175CAC +sub_08175CAC: @ 0x08175CAC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08175CD8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r5, r1, #0 + cmp r0, #0xa + bhi _08175D0C + lsls r0, r0, #2 + ldr r1, _08175CDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08175CD8: .4byte gUnknown_3005B60 +_08175CDC: .4byte _08175CE0 +_08175CE0: @ jump table + .4byte _08175D0C @ case 0 + .4byte _08175D3C @ case 1 + .4byte _08175D5C @ case 2 + .4byte _08175E16 @ case 3 + .4byte _08175E3C @ case 4 + .4byte _08175EA8 @ case 5 + .4byte _08175D0C @ case 6 + .4byte _08175D0C @ case 7 + .4byte _08175D0C @ case 8 + .4byte _08175D0C @ case 9 + .4byte _08175EDC @ case 10 +_08175D0C: + ldr r0, _08175D34 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08175D1E + b _08175F0A +_08175D1E: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0, #8] + movs r1, #0x48 + strh r1, [r0, #0xe] + ldr r0, _08175D38 + strh r2, [r0] + b _08175F0A + .align 2, 0 +_08175D34: .4byte gUnknown_2037C74 +_08175D38: .4byte gUnknown_203B9AC +_08175D3C: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r1, r0, r5 + ldrh r2, [r1, #0xe] + movs r3, #0xe + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _08175D54 + subs r0, r2, #1 + strh r0, [r1, #0xe] + b _08175F0A +_08175D54: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08175F0A +_08175D5C: + lsls r2, r6, #2 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r3, r0, r5 + movs r0, #0xa + ldrsh r1, [r3, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldr r1, [r0] + ldr r0, _08175DE8 + mov r8, r2 + cmp r1, r0 + beq _08175D7C + b _08175F0A +_08175D7C: + movs r1, #0xc + ldrsh r0, [r3, r1] + cmp r0, #0x2c + bgt _08175E10 + movs r4, #0 + ldr r7, _08175DEC + adds r5, r3, #0 +_08175D8A: + movs r2, #0xc + ldrsh r1, [r5, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r3, [r0] + ldr r0, [r3, #4] + ldrb r1, [r3] + lsls r2, r4, #0x19 + lsrs r2, r2, #0x18 + ldrb r3, [r3, #1] + bl sub_081754C0 + adds r4, #1 + cmp r4, #4 + ble _08175D8A + movs r0, #0 + movs r1, #2 + bl sub_08003528 + ldr r2, _08175DF0 + mov r3, r8 + adds r1, r3, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r0, [r1, #0xc] + adds r0, #1 + strh r0, [r1, #0xc] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0xa + ldrsh r1, [r1, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x22 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _08175DF8 + movs r0, #0xc0 + lsls r0, r0, #2 + ldr r1, _08175DF4 + b _08175DFE + .align 2, 0 +_08175DE8: .4byte sub_0817567C +_08175DEC: .4byte gUnknown_85C7590 +_08175DF0: .4byte gUnknown_3005B60 +_08175DF4: .4byte 0x0000328D +_08175DF8: + movs r0, #0xc0 + lsls r0, r0, #2 + ldr r1, _08175E0C +_08175DFE: + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _08175F0A + .align 2, 0 +_08175E0C: .4byte 0x00001967 +_08175E10: + movs r0, #0xa + strh r0, [r3, #8] + b _08175F0A +_08175E16: + ldr r0, _08175E38 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08175F0A + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x9c + strh r1, [r0, #0xe] + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _08175F0A + .align 2, 0 +_08175E38: .4byte gUnknown_2037C74 +_08175E3C: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r5 + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08175E54 + subs r0, r1, #1 + strh r0, [r4, #0xe] + b _08175F0A +_08175E54: + ldrb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + bl sub_08175F1C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08175E6A + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08175F0A +_08175E6A: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r3, #0xa + ldrsh r1, [r4, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x22 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _08175E90 + movs r0, #0xc0 + lsls r0, r0, #2 + ldr r1, _08175E8C + b _08175E96 + .align 2, 0 +_08175E8C: .4byte 0x0000328D +_08175E90: + movs r0, #0xc0 + lsls r0, r0, #2 + ldr r1, _08175EA4 +_08175E96: + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _08175F0A + .align 2, 0 +_08175EA4: .4byte 0x00001967 +_08175EA8: + ldr r0, _08175ED4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08175F0A + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + ldr r0, _08175ED8 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #2 + strh r0, [r1, #8] + b _08175F0A + .align 2, 0 +_08175ED4: .4byte gUnknown_2037C74 +_08175ED8: .4byte gUnknown_3005B60 +_08175EDC: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0xa + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r5, #0 + movs r1, #1 + strh r1, [r0, #0x10] + adds r0, r6, #0 + bl sub_080A8964 + bl sub_081754A8 + ldr r4, _08175F18 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] +_08175F0A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08175F18: .4byte gUnknown_203B9B4 + thumb_func_end sub_08175CAC + + thumb_func_start sub_08175F1C +sub_08175F1C: @ 0x08175F1C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r5, _08176018 + cmp r4, #1 + bne _08175F44 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r3, #0xa + ldrsh r1, [r0, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x14 + strh r1, [r0, #8] +_08175F44: + lsls r3, r2, #2 + cmp r4, #5 + bne _08175F56 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r4, [r0, #0x16] + movs r1, #2 + strh r1, [r0, #0x1e] +_08175F56: + cmp r4, #9 + bne _08175F66 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0, #0x16] + strh r1, [r0, #0x1e] +_08175F66: + cmp r4, #0xe + bne _08175F78 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #4 + strh r1, [r0, #0x16] + movs r1, #2 + strh r1, [r0, #0x1e] +_08175F78: + cmp r4, #0x14 + bne _08175F8A + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #2 + strh r1, [r0, #0x16] + movs r1, #1 + strh r1, [r0, #0x1e] +_08175F8A: + cmp r4, #0x16 + bne _08175FA4 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r6, #0xa + ldrsh r1, [r0, r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #1 + strh r1, [r0, #8] +_08175FA4: + cmp r4, #0x19 + bne _08175FB6 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #5 + strh r1, [r0, #0x16] + movs r1, #2 + strh r1, [r0, #0x1e] +_08175FB6: + cmp r4, #0x1e + bne _08175FC8 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #3 + strh r1, [r0, #0x16] + movs r1, #1 + strh r1, [r0, #0x1e] +_08175FC8: + cmp r4, #0x23 + bne _08175FE2 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r6, #0xa + ldrsh r1, [r0, r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0xa + strh r1, [r0, #8] +_08175FE2: + cmp r4, #0x25 + bne _08175FF4 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #3 + strh r1, [r0, #0x16] + movs r1, #2 + strh r1, [r0, #0x1e] +_08175FF4: + cmp r4, #0x2a + bne _08176006 + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #4 + strh r1, [r0, #0x16] + movs r1, #1 + strh r1, [r0, #0x1e] +_08176006: + adds r0, r3, r2 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r1, #0x1e + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0817601C + movs r0, #0 + b _0817601E + .align 2, 0 +_08176018: .4byte gUnknown_3005B60 +_0817601C: + movs r0, #1 +_0817601E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08175F1C + + thumb_func_start sub_08176024 +sub_08176024: @ 0x08176024 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _08176050 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r2, r0, r4 + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #1 + beq _08176054 + cmp r0, #1 + bgt _08176046 + b _08176150 +_08176046: + cmp r0, #2 + beq _0817606C + cmp r0, #3 + beq _0817613C + b _08176150 + .align 2, 0 +_08176050: .4byte gUnknown_3005B60 +_08176054: + ldr r0, _08176068 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08176150 + ldrh r0, [r2, #8] + adds r0, #1 + b _0817614E + .align 2, 0 +_08176068: .4byte gUnknown_2037C74 +_0817606C: + ldr r3, _081760E8 + mov r8, r3 + ldr r3, [r3] + adds r6, r3, #0 + adds r6, #0x78 + ldrh r0, [r6] + cmp r0, #0x38 + beq _08176150 + movs r0, #0xa + ldrsh r1, [r2, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, [r0] + ldr r0, _081760EC + cmp r1, r0 + bne _08176150 + adds r0, r3, #0 + adds r0, #0x7a + ldrh r0, [r0] + lsls r0, r0, #1 + adds r0, r3, r0 + ldrh r5, [r0] + ldr r4, _081760F0 + ldrh r0, [r6] + movs r1, #3 + bl __umodsi3 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r3, #1 + adds r1, r0, r4 + ldrb r1, [r1] + adds r4, #1 + adds r0, r0, r4 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_081770B0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + mov r1, r8 + ldr r0, [r1] + adds r1, r0, #0 + adds r1, #0x7a + ldrh r3, [r1] + adds r0, #0x7c + ldrh r0, [r0] + subs r0, #1 + cmp r3, r0 + bge _081760F8 + adds r0, r3, #1 + strh r0, [r1] + ldr r1, _081760F4 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x40 + b _0817610A + .align 2, 0 +_081760E8: .4byte gUnknown_203B9B4 +_081760EC: .4byte sub_0817567C +_081760F0: .4byte gUnknown_85C7928 +_081760F4: .4byte gUnknown_20205AC +_081760F8: + movs r0, #0 + strh r0, [r1] + ldr r1, _08176130 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x80 + lsls r1, r1, #1 +_0817610A: + strh r1, [r0, #0x34] + ldr r0, _08176134 + ldr r1, [r0] + adds r1, #0x78 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r0, _08176138 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0x40 + strh r0, [r1, #0xe] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08176150 + .align 2, 0 +_08176130: .4byte gUnknown_20205AC +_08176134: .4byte gUnknown_203B9B4 +_08176138: .4byte gUnknown_3005B60 +_0817613C: + ldrh r1, [r2, #0xe] + movs r3, #0xe + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _0817614C + subs r0, r1, #1 + strh r0, [r2, #0xe] + b _08176150 +_0817614C: + movs r0, #1 +_0817614E: + strh r0, [r2, #8] +_08176150: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08176024 + + thumb_func_start sub_0817615C +sub_0817615C: @ 0x0817615C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08176184 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r6, r1, #0 + cmp r0, #0x32 + bls _08176178 + b _08176424 +_08176178: + lsls r0, r0, #2 + ldr r1, _08176188 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08176184: .4byte gUnknown_3005B60 +_08176188: .4byte _0817618C +_0817618C: @ jump table + .4byte _08176258 @ case 0 + .4byte _0817627C @ case 1 + .4byte _081762D0 @ case 2 + .4byte _081762E8 @ case 3 + .4byte _08176324 @ case 4 + .4byte _08176348 @ case 5 + .4byte _08176394 @ case 6 + .4byte _08176424 @ case 7 + .4byte _08176424 @ case 8 + .4byte _08176424 @ case 9 + .4byte _081763A0 @ case 10 + .4byte _08176424 @ case 11 + .4byte _08176424 @ case 12 + .4byte _08176424 @ case 13 + .4byte _08176424 @ case 14 + .4byte _08176424 @ case 15 + .4byte _08176424 @ case 16 + .4byte _08176424 @ case 17 + .4byte _08176424 @ case 18 + .4byte _08176424 @ case 19 + .4byte _081763C0 @ case 20 + .4byte _08176424 @ case 21 + .4byte _08176424 @ case 22 + .4byte _08176424 @ case 23 + .4byte _08176424 @ case 24 + .4byte _08176424 @ case 25 + .4byte _08176424 @ case 26 + .4byte _08176424 @ case 27 + .4byte _08176424 @ case 28 + .4byte _08176424 @ case 29 + .4byte _081763E4 @ case 30 + .4byte _08176424 @ case 31 + .4byte _08176424 @ case 32 + .4byte _08176424 @ case 33 + .4byte _08176424 @ case 34 + .4byte _08176424 @ case 35 + .4byte _08176424 @ case 36 + .4byte _08176424 @ case 37 + .4byte _08176424 @ case 38 + .4byte _08176424 @ case 39 + .4byte _08176424 @ case 40 + .4byte _08176424 @ case 41 + .4byte _08176424 @ case 42 + .4byte _08176424 @ case 43 + .4byte _08176424 @ case 44 + .4byte _08176424 @ case 45 + .4byte _08176424 @ case 46 + .4byte _08176424 @ case 47 + .4byte _08176424 @ case 48 + .4byte _08176424 @ case 49 + .4byte _08176418 @ case 50 +_08176258: + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r6 + ldrh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + movs r1, #0x7f + ands r0, r1 + movs r1, #0xc + bl sub_0806EFB8 + ldr r1, _08176278 + strh r0, [r1] + b _081762A0 + .align 2, 0 +_08176278: .4byte gUnknown_203B9F2 +_0817627C: + ldr r7, _081762A8 + movs r3, #0 + ldrsh r4, [r7, r3] + cmp r4, #0 + beq _081762AC + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r6 + ldrh r0, [r4, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + movs r1, #0x7f + ands r0, r1 + movs r1, #0xc + bl sub_0806EFB8 + strh r0, [r7] +_081762A0: + ldrh r0, [r4, #0x12] + adds r0, #1 + strh r0, [r4, #0x12] + b _08176424 + .align 2, 0 +_081762A8: .4byte gUnknown_203B9F2 +_081762AC: + ldr r3, _081762CC + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r6 + movs r0, #0xc + ldrsh r2, [r1, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #2 + strh r2, [r0, #0x2e] + strh r4, [r1, #0x12] + b _08176340 + .align 2, 0 +_081762CC: .4byte gUnknown_20205AC +_081762D0: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r6 + ldrh r2, [r1, #0x12] + movs r3, #0x12 + ldrsh r0, [r1, r3] + cmp r0, #0x3f + bgt _08176340 + adds r0, r2, #1 + strh r0, [r1, #0x12] + b _0817635E +_081762E8: + ldr r3, _08176320 + lsls r2, r5, #2 + adds r2, r2, r5 + lsls r2, r2, #3 + adds r2, r2, r6 + movs r0, #0xc + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #3 + strh r1, [r0, #0x2e] + movs r0, #0xe + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #1 + strh r1, [r0, #0x2e] + movs r0, #0x78 + strh r0, [r2, #0x10] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _08176424 + .align 2, 0 +_08176320: .4byte gUnknown_20205AC +_08176324: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r1, r0, r6 + ldrh r2, [r1, #0x10] + movs r3, #0x10 + ldrsh r0, [r1, r3] + cmp r0, #0 + beq _0817633C + subs r0, r2, #1 + strh r0, [r1, #0x10] + b _08176424 +_0817633C: + movs r0, #0x40 + strh r0, [r1, #0x12] +_08176340: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08176424 +_08176348: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r6 + ldrh r1, [r4, #0x12] + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08176374 + subs r0, r1, #1 + strh r0, [r4, #0x12] +_0817635E: + movs r1, #0x7f + ands r0, r1 + movs r1, #0x14 + bl sub_0806EFB8 + ldr r1, _08176370 + strh r0, [r1] + b _08176424 + .align 2, 0 +_08176370: .4byte gUnknown_203B9F2 +_08176374: + ldr r2, _08176390 + movs r3, #0xc + ldrsh r1, [r4, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x2e] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _08176424 + .align 2, 0 +_08176390: .4byte gUnknown_20205AC +_08176394: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r1, #0x32 + b _08176422 +_081763A0: + ldr r3, _081763BC + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r6 + movs r0, #0xe + ldrsh r2, [r1, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #2 + b _081763D8 + .align 2, 0 +_081763BC: .4byte gUnknown_20205AC +_081763C0: + ldr r3, _081763E0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r6 + movs r0, #0xc + ldrsh r2, [r1, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #4 +_081763D8: + strh r2, [r0, #0x2e] + movs r0, #0x32 + strh r0, [r1, #8] + b _08176424 + .align 2, 0 +_081763E0: .4byte gUnknown_20205AC +_081763E4: + ldr r3, _08176414 + lsls r2, r5, #2 + adds r2, r2, r5 + lsls r2, r2, #3 + adds r2, r2, r6 + movs r0, #0xc + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #5 + strh r1, [r0, #0x2e] + movs r0, #0xe + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #3 + strh r1, [r0, #0x2e] + movs r0, #0x32 + strh r0, [r2, #8] + b _08176424 + .align 2, 0 +_08176414: .4byte gUnknown_20205AC +_08176418: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r6 + movs r1, #0 +_08176422: + strh r1, [r0, #8] +_08176424: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817615C + + thumb_func_start sub_0817642C +sub_0817642C: @ 0x0817642C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08176450 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #4 + bhi _0817646C + lsls r0, r0, #2 + ldr r1, _08176454 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08176450: .4byte gUnknown_3005B60 +_08176454: .4byte _08176458 +_08176458: @ jump table + .4byte _0817646C @ case 0 + .4byte _0817646C @ case 1 + .4byte _08176474 @ case 2 + .4byte _08176474 @ case 3 + .4byte _0817647C @ case 4 +_0817646C: + movs r0, #0 + bl sub_0817B400 + b _08176482 +_08176474: + movs r0, #1 + bl sub_0817B400 + b _08176482 +_0817647C: + movs r0, #2 + bl sub_0817B400 +_08176482: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817642C + + thumb_func_start sub_08176488 +sub_08176488: @ 0x08176488 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + cmp r0, #4 + bls _0817649E + b _0817681C +_0817649E: + lsls r0, r0, #2 + ldr r1, _081764A8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081764A8: .4byte _081764AC +_081764AC: @ jump table + .4byte _081764C0 @ case 0 + .4byte _08176568 @ case 1 + .4byte _08176614 @ case 2 + .4byte _081766C0 @ case 3 + .4byte _08176770 @ case 4 +_081764C0: + ldr r5, _08176560 + ldr r0, _08176564 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r3, #0 + movs r2, #0x88 + lsls r2, r2, #1 + strh r2, [r0, #0x20] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x20] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r2, #0x2e + strh r2, [r0, #0x22] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + movs r2, #0x20 + b _08176810 + .align 2, 0 +_08176560: .4byte gUnknown_20205AC +_08176564: .4byte gUnknown_3005B60 +_08176568: + ldr r5, _0817660C + ldr r0, _08176610 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r3, #0 + movs r1, #0x78 + strh r1, [r0, #0x20] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x88 + lsls r1, r1, #1 + strh r1, [r0, #0x20] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r2, #0x2e + strh r2, [r0, #0x22] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + movs r2, #0x20 + b _08176810 + .align 2, 0 +_0817660C: .4byte gUnknown_20205AC +_08176610: .4byte gUnknown_3005B60 +_08176614: + ldr r5, _081766B8 + ldr r0, _081766BC + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r3, #0 + movs r1, #0x78 + strh r1, [r0, #0x20] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x88 + lsls r1, r1, #1 + strh r1, [r0, #0x20] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r2, #0x2e + strh r2, [r0, #0x22] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r1, #0x80 + lsls r1, r1, #6 + movs r2, #0x80 + lsls r2, r2, #2 + movs r0, #1 + b _08176810 + .align 2, 0 +_081766B8: .4byte gUnknown_20205AC +_081766BC: .4byte gUnknown_3005B60 +_081766C0: + ldr r5, _08176764 + ldr r0, _08176768 + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r3, #0 + movs r1, #0x78 + strh r1, [r0, #0x20] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0817676C + strh r1, [r0, #0x20] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r2, #0x2e + strh r2, [r0, #0x22] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r1, #0x80 + lsls r1, r1, #6 + movs r2, #0x80 + lsls r2, r2, #2 + movs r0, #1 + b _08176810 + .align 2, 0 +_08176764: .4byte gUnknown_20205AC +_08176768: .4byte gUnknown_3005B60 +_0817676C: .4byte 0x0000FFE0 +_08176770: + ldr r5, _081768A8 + ldr r0, _081768AC + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r0 + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r3, #0 + movs r1, #0x58 + strh r1, [r0, #0x20] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x98 + strh r1, [r0, #0x20] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r2, #0x2e + strh r2, [r0, #0x22] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + movs r0, #0x12 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r3, [r0, #0x2e] + movs r1, #0x80 + lsls r1, r1, #6 + movs r2, #0x80 + lsls r2, r2, #2 + movs r0, #2 +_08176810: + movs r3, #8 + bl sub_0817B29C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #8] +_0817681C: + ldr r0, _081768B0 + movs r1, #0 + bl sub_080A8878 + ldr r5, _081768AC + lsls r4, r7, #2 + adds r4, r4, r7 + lsls r4, r4, #3 + adds r4, r4, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r6, #0 + strh r0, [r4, #0xc] + movs r0, #0xc + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #8] + ldr r0, _081768B4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r6, [r0, #8] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r7, [r0, #0xa] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r4, #0x12] + strh r1, [r0, #0xc] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + ldrh r1, [r4, #0x14] + strh r1, [r0, #0xe] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r6, [r0, #0x10] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081768A8: .4byte gUnknown_20205AC +_081768AC: .4byte gUnknown_3005B60 +_081768B0: .4byte sub_0817642C +_081768B4: .4byte sub_0817615C + thumb_func_end sub_08176488 + + thumb_func_start sub_081768B8 +sub_081768B8: @ 0x081768B8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _08176934 + movs r1, #0x87 + lsls r1, r1, #3 + adds r6, r0, r1 + ldrb r0, [r6] + cmp r0, #1 + beq _08176938 + cmp r0, #1 + ble _081768DE + cmp r0, #2 + beq _0817695C + cmp r0, #3 + bne _081768DE + b _08176A88 +_081768DE: + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #8 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + bl sub_0800668C + bl sub_08008424 + movs r0, #1 + strb r0, [r6] + b _08176A9E + .align 2, 0 +_08176934: .4byte gUnknown_3002360 +_08176938: + ldr r1, _08176954 + movs r0, #0x22 + strh r0, [r1] + ldr r1, _08176958 + movs r0, #0 + strh r0, [r1] + adds r0, r4, #0 + bl sub_0817B088 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + b _08176A9E + .align 2, 0 +_08176954: .4byte gUnknown_203B9F0 +_08176958: .4byte gUnknown_203B9F2 +_0817695C: + ldr r0, _081769BC + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _081769E0 + ldr r0, _081769C0 + bl sub_08034388 + ldr r0, _081769C4 + bl sub_08034388 + ldr r0, _081769C8 + bl sub_08034388 + ldr r0, _081769CC + bl sub_080084A8 + movs r0, #0x78 + movs r1, #0x2e + bl sub_0817B6F4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081769D0 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r2, [r4, #0x12] + ldr r6, _081769D4 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r6, #0 + adds r5, #0x1c + adds r2, r0, r5 + ldr r1, _081769D8 + str r1, [r2] + adds r6, #8 + adds r0, r0, r6 + ldr r1, _081769DC + str r1, [r0] + movs r0, #0x88 + lsls r0, r0, #1 + movs r1, #0x2e + bl sub_0817B74C + b _08176A34 + .align 2, 0 +_081769BC: .4byte gUnknown_3005AF0 +_081769C0: .4byte gUnknown_85D2804 +_081769C4: .4byte gUnknown_85D288C +_081769C8: .4byte gUnknown_85D2824 +_081769CC: .4byte gUnknown_85D2854 +_081769D0: .4byte gUnknown_3005B60 +_081769D4: .4byte gUnknown_20205AC +_081769D8: .4byte sub_08176D74 +_081769DC: .4byte gUnknown_85C797C +_081769E0: + ldr r0, _08176A5C + bl sub_08034388 + ldr r0, _08176A60 + bl sub_08034388 + ldr r0, _08176A64 + bl sub_08034388 + ldr r0, _08176A68 + bl sub_080084A8 + movs r0, #0x78 + movs r1, #0x2e + bl sub_0817B74C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08176A6C + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + strh r2, [r4, #0x12] + ldr r6, _08176A70 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r6, #0 + adds r5, #0x1c + adds r2, r0, r5 + ldr r1, _08176A74 + str r1, [r2] + adds r6, #8 + adds r0, r0, r6 + ldr r1, _08176A78 + str r1, [r0] + movs r0, #0x88 + lsls r0, r0, #1 + movs r1, #0x2e + bl sub_0817B6F4 +_08176A34: + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + strh r2, [r4, #0x14] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r5 + ldr r1, _08176A7C + str r1, [r5] + adds r0, r0, r6 + ldr r1, _08176A80 + str r1, [r0] + ldr r1, _08176A84 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08176A9E + .align 2, 0 +_08176A5C: .4byte gUnknown_85D2814 +_08176A60: .4byte gUnknown_85D287C +_08176A64: .4byte gUnknown_85D2824 +_08176A68: .4byte gUnknown_85D2854 +_08176A6C: .4byte gUnknown_3005B60 +_08176A70: .4byte gUnknown_20205AC +_08176A74: .4byte sub_08176D74 +_08176A78: .4byte gUnknown_85C797C +_08176A7C: .4byte sub_08176E1C +_08176A80: .4byte gUnknown_85C79BC +_08176A84: .4byte gUnknown_3002360 +_08176A88: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08176488 + adds r0, r4, #0 + bl sub_0817B268 + movs r0, #0 + strb r0, [r6] + movs r0, #1 + b _08176AA0 +_08176A9E: + movs r0, #0 +_08176AA0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081768B8 + + thumb_func_start sub_08176AA8 +sub_08176AA8: @ 0x08176AA8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08176B1C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + ldrh r1, [r4, #8] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08176ACE + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + strh r0, [r4, #8] +_08176ACE: + ldrh r1, [r4, #0xa] + movs r2, #0xa + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08176AE4 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + strh r0, [r4, #0xa] +_08176AE4: + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08176AFA + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + strh r0, [r4, #0xc] +_08176AFA: + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08176B10 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + movs r0, #0 + strh r0, [r4, #0xe] +_08176B10: + ldr r1, _08176B20 + movs r0, #1 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08176B1C: .4byte gUnknown_3005B60 +_08176B20: .4byte gUnknown_203B9F4 + thumb_func_end sub_08176AA8 + + thumb_func_start sub_08176B24 +sub_08176B24: @ 0x08176B24 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + adds r4, r2, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + ldr r0, _08176BE8 + movs r6, #0xc0 + lsls r6, r6, #0x13 + adds r3, r3, r6 + adds r1, r3, #0 + bl LZ77UnCompVram + ldr r0, _08176BEC + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A1200 + lsrs r4, r4, #0x14 + lsls r4, r4, #0x1c + lsrs r4, r4, #0x10 + movs r2, #0 + adds r1, r4, #1 + ldr r3, _08176BF0 +_08176B5A: + lsls r0, r2, #1 + adds r0, r0, r7 + adds r0, r0, r6 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + bls _08176B5A + movs r2, #0 + adds r0, r4, #2 + adds r6, r4, #0 + adds r6, #0x17 + movs r1, #0x2b + adds r1, r1, r4 + mov ip, r1 + adds r4, #0x41 + ldr r5, _08176BF4 + adds r3, r0, #0 +_08176B80: + lsls r0, r2, #1 + adds r0, r0, r7 + adds r0, r0, r5 + adds r1, r2, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x14 + bls _08176B80 + movs r2, #0 + ldr r5, _08176BF8 + adds r3, r6, #0 +_08176B9A: + lsls r0, r2, #1 + adds r0, r0, r7 + adds r0, r0, r5 + adds r1, r2, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x13 + bls _08176B9A + movs r2, #0 + ldr r5, _08176BFC + mov r3, ip +_08176BB4: + lsls r0, r2, #1 + adds r0, r0, r7 + adds r0, r0, r5 + adds r1, r2, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x15 + bls _08176BB4 + movs r2, #0 + ldr r3, _08176C00 +_08176BCC: + lsls r0, r2, #1 + adds r0, r0, r7 + adds r0, r0, r3 + adds r1, r2, r4 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xb + bls _08176BCC + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08176BE8: .4byte gUnknown_85C682C +_08176BEC: .4byte gUnknown_85C0C74 +_08176BF0: .4byte 0x000003FF +_08176BF4: .4byte 0x060001C8 +_08176BF8: .4byte 0x06000248 +_08176BFC: .4byte 0x060002C8 +_08176C00: .4byte 0x06000348 + thumb_func_end sub_08176B24 + + thumb_func_start sub_08176C04 +sub_08176C04: @ 0x08176C04 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r2, #0 + movs r0, #0x3f + ands r0, r2 + adds r1, r0, #0 + adds r1, #0x50 + cmp r2, #0xff + bne _08176C1C + movs r0, #1 + b _08176C42 +_08176C1C: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08176C2C + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r1, r0 +_08176C2C: + movs r0, #0x40 + ands r3, r0 + cmp r3, #0 + beq _08176C40 + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r2, #0 + orrs r1, r0 + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 +_08176C40: + adds r0, r1, #0 +_08176C42: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08176C04 + + thumb_func_start sub_08176C48 +sub_08176C48: @ 0x08176C48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r0, [sp] + ldr r0, [sp, #0x2c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #4] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #8] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x14 + lsls r0, r0, #0x1c + lsrs r0, r0, #0x10 + mov sb, r0 + movs r5, #0 +_08176C76: + movs r4, #0 + lsls r7, r5, #1 + ldr r1, [sp, #4] + adds r0, r1, r5 + adds r2, r5, #1 + mov r8, r2 + lsls r0, r0, #6 + ldr r1, [sp, #8] + adds r6, r0, r1 +_08176C88: + adds r0, r7, r5 + adds r0, r0, r4 + ldr r2, [sp] + adds r0, r2, r0 + ldrb r0, [r0] + bl sub_08176C04 + mov r2, sl + adds r1, r2, r4 + lsls r1, r1, #1 + adds r1, r1, r6 + movs r2, #0xc0 + lsls r2, r2, #0x13 + adds r1, r1, r2 + add r0, sb + strh r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _08176C88 + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _08176C76 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08176C48 + + thumb_func_start sub_08176CCC +sub_08176CCC: @ 0x08176CCC + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsrs r1, r1, #0x14 + lsls r1, r1, #0x1c + lsrs r1, r1, #0x10 + movs r2, #0 + ldr r7, _08176D5C + movs r4, #0xc0 + lsls r4, r4, #0x13 + adds r1, #1 + ldr r3, _08176D60 +_08176CEA: + lsls r0, r2, #1 + adds r0, r0, r5 + adds r0, r0, r4 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + bls _08176CEA + str r6, [sp] + adds r0, r7, #0 + movs r1, #3 + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + ldr r0, _08176D64 + str r6, [sp] + movs r1, #7 + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + ldr r4, _08176D68 + str r6, [sp] + adds r0, r4, #0 + movs r1, #0xb + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + str r6, [sp] + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + ldr r0, _08176D6C + str r6, [sp] + movs r1, #0x14 + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + ldr r0, _08176D70 + str r6, [sp] + movs r1, #0x18 + movs r2, #7 + adds r3, r5, #0 + bl sub_08176C48 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08176D5C: .4byte gUnknown_85C6C68 +_08176D60: .4byte 0x000003FF +_08176D64: .4byte gUnknown_85C6C77 +_08176D68: .4byte gUnknown_85C6C86 +_08176D6C: .4byte gUnknown_85C6C95 +_08176D70: .4byte gUnknown_85C6CA4 + thumb_func_end sub_08176CCC + + thumb_func_start sub_08176D74 +sub_08176D74: @ 0x08176D74 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08176D8C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08176D90 + adds r0, r4, #0 + bl sub_08006E00 + b _08176E14 + .align 2, 0 +_08176D8C: .4byte gUnknown_203B9F4 +_08176D90: + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #5 + bhi _08176E14 + lsls r0, r0, #2 + ldr r1, _08176DA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08176DA4: .4byte _08176DA8 +_08176DA8: @ jump table + .4byte _08176DC0 @ case 0 + .4byte _08176DCA @ case 1 + .4byte _08176DD0 @ case 2 + .4byte _08176DDA @ case 3 + .4byte _08176DE4 @ case 4 + .4byte _08176DFA @ case 5 +_08176DC0: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + b _08176E14 +_08176DCA: + adds r0, r4, #0 + movs r1, #1 + b _08176DFE +_08176DD0: + adds r0, r4, #0 + movs r1, #2 + bl sub_08007ED8 + b _08176E14 +_08176DDA: + adds r0, r4, #0 + movs r1, #3 + bl sub_08007ED8 + b _08176E14 +_08176DE4: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + ldrh r1, [r4, #0x20] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x78 + ble _08176E14 + subs r0, r1, #1 + b _08176E12 +_08176DFA: + adds r0, r4, #0 + movs r1, #0 +_08176DFE: + bl sub_08007ED8 + ldrh r2, [r4, #0x20] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08176E14 + subs r0, r2, #1 +_08176E12: + strh r0, [r4, #0x20] +_08176E14: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08176D74 + + thumb_func_start sub_08176E1C +sub_08176E1C: @ 0x08176E1C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08176E34 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08176E38 + adds r0, r4, #0 + bl sub_08006E00 + b _08176ED4 + .align 2, 0 +_08176E34: .4byte gUnknown_203B9F4 +_08176E38: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _08176E60 + cmp r0, #1 + bgt _08176E4A + cmp r0, #0 + beq _08176E54 + b _08176ED4 +_08176E4A: + cmp r0, #2 + beq _08176E9C + cmp r0, #3 + beq _08176EBA + b _08176ED4 +_08176E54: + strh r0, [r4, #0x26] + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + b _08176ED4 +_08176E60: + movs r1, #0x20 + ldrsh r0, [r4, r1] + cmp r0, #0xc8 + ble _08176E72 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007ED8 + b _08176E7A +_08176E72: + adds r0, r4, #0 + movs r1, #2 + bl sub_08007ED8 +_08176E7A: + ldrh r2, [r4, #0x20] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08176E8C + subs r0, r2, #2 + strh r0, [r4, #0x20] +_08176E8C: + ldr r0, _08176E98 + ldrh r0, [r0] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + b _08176ED4 + .align 2, 0 +_08176E98: .4byte gUnknown_203B9F2 +_08176E9C: + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + ldrh r1, [r4, #0x3c] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08176ED4 + ldrh r0, [r4, #0x20] + adds r0, #1 + b _08176ED2 +_08176EBA: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007ED8 + ldrh r2, [r4, #0x20] + movs r0, #0x20 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08176ED4 + subs r0, r2, #1 +_08176ED2: + strh r0, [r4, #0x20] +_08176ED4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08176E1C + + thumb_func_start sub_08176EDC +sub_08176EDC: @ 0x08176EDC + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r0, _08176EF4 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08176EF8 + ldrh r0, [r5, #0x3a] + bl sub_0818D54C + b _081770A8 + .align 2, 0 +_08176EF4: .4byte gUnknown_203B9F4 +_08176EF8: + ldrh r0, [r5, #0x3c] + adds r0, #1 + strh r0, [r5, #0x3c] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0xa + bhi _08176F40 + lsls r0, r0, #2 + ldr r1, _08176F10 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08176F10: .4byte _08176F14 +_08176F14: @ jump table + .4byte _08176F40 @ case 0 + .4byte _08176F9A @ case 1 + .4byte _0817701C @ case 2 + .4byte _08177052 @ case 3 + .4byte _08176F40 @ case 4 + .4byte _08176F40 @ case 5 + .4byte _08176F40 @ case 6 + .4byte _08176F40 @ case 7 + .4byte _08176F40 @ case 8 + .4byte _0817708A @ case 9 + .4byte _08177092 @ case 10 +_08176F40: + ldrb r1, [r5, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #1] + movs r0, #0x30 + ldrsh r1, [r5, r0] + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #3] + movs r0, #0x10 + strh r0, [r5, #0x32] + ldrh r4, [r5, #0x30] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x80 + lsls r0, r0, #9 + movs r1, #0x10 + bl __divsi3 + adds r1, r0, #0 + str r1, [sp] + adds r0, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + adds r2, r5, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #1 + strh r0, [r5, #0x2e] + b _081770A8 +_08176F9A: + ldrh r1, [r5, #0x32] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r0, #0xff + bgt _08176FD0 + adds r0, r1, #0 + adds r0, #8 + strh r0, [r5, #0x32] + ldrh r4, [r5, #0x30] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x32 + ldrsh r1, [r5, r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + adds r0, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + b _08176FD6 +_08176FD0: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] +_08176FD6: + movs r2, #0x30 + ldrsh r1, [r5, r2] + cmp r1, #2 + beq _081770A8 + cmp r1, #2 + bgt _08176FE8 + cmp r1, #1 + beq _08176FEE + b _081770A8 +_08176FE8: + cmp r1, #3 + beq _08177006 + b _081770A8 +_08176FEE: + ldrh r1, [r5, #0x3c] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08176FFE + ldrh r0, [r5, #0x22] + adds r0, #1 + strh r0, [r5, #0x22] +_08176FFE: + ldrh r0, [r5, #0x20] + subs r0, #2 + strh r0, [r5, #0x20] + b _081770A8 +_08177006: + ldrh r0, [r5, #0x3c] + ands r1, r0 + cmp r1, #0 + bne _08177014 + ldrh r0, [r5, #0x22] + adds r0, #1 + strh r0, [r5, #0x22] +_08177014: + ldrh r0, [r5, #0x20] + adds r0, #2 + strh r0, [r5, #0x20] + b _081770A8 +_0817701C: + ldrh r1, [r5, #0x34] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0817702C + subs r0, r1, #1 + strh r0, [r5, #0x34] + b _081770A8 +_0817702C: + movs r1, #0xf4 + lsls r1, r1, #4 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldrb r1, [r5, #1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #1] + movs r0, #0x10 + strh r0, [r5, #0x34] + b _0817708A +_08177052: + ldrh r1, [r5, #0x34] + movs r2, #0x34 + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _08177078 + subs r1, #1 + strh r1, [r5, #0x34] + movs r0, #0x34 + ldrsh r2, [r5, r0] + movs r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #8 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + b _081770A8 +_08177078: + adds r2, r5, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #9 + strh r0, [r5, #0x2e] + b _081770A8 +_0817708A: + ldrh r0, [r5, #0x2e] + adds r0, #1 + strh r0, [r5, #0x2e] + b _081770A8 +_08177092: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + ldrh r0, [r5, #0x3a] + bl sub_0818D54C +_081770A8: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08176EDC + + thumb_func_start sub_081770B0 +sub_081770B0: @ 0x081770B0 + push {r4, r5, r6, r7, lr} + adds r5, r3, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r3, r5, #0 + bl sub_080C03F4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r6, _08177138 + lsls r1, r4, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r2, r1, r6 + ldrb r3, [r2, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + movs r3, #4 + orrs r0, r3 + strb r0, [r2, #5] + adds r0, r5, #1 + strh r0, [r2, #0x30] + movs r0, #0x3e + adds r0, r0, r2 + mov ip, r0 + ldrb r0, [r0] + orrs r0, r3 + mov r3, ip + strb r0, [r3] + adds r0, r6, #0 + adds r0, #0x1c + adds r1, r1, r0 + ldr r0, _0817713C + str r0, [r1] + strh r4, [r2, #0x3a] + ldr r0, _08177140 + movs r7, #0x20 + ldrsh r1, [r2, r7] + movs r3, #0x22 + ldrsh r2, [r2, r3] + movs r3, #1 + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r4, [r0, #0x2e] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r1, r5, #0 + bl sub_08007ED8 + adds r0, r4, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08177138: .4byte gUnknown_20205AC +_0817713C: .4byte sub_08176EDC +_08177140: .4byte gUnknown_85C7A14 + thumb_func_end sub_081770B0 + + thumb_func_start sub_08177144 +sub_08177144: @ 0x08177144 + push {r4, lr} + adds r3, r0, #0 + ldr r4, _08177170 + movs r1, #0x2e + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0xa + beq _08177168 + ldr r0, _08177174 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + beq _08177178 +_08177168: + adds r0, r3, #0 + bl sub_08006E00 + b _0817720C + .align 2, 0 +_08177170: .4byte gUnknown_20205AC +_08177174: .4byte gUnknown_203B9F4 +_08177178: + adds r0, r1, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r1, #0x3e + adds r1, r1, r3 + mov ip, r1 + movs r1, #4 + ands r1, r0 + mov r0, ip + ldrb r2, [r0] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r2, #0x2e + ldrsh r1, [r3, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #1] + movs r0, #0xc + ands r0, r1 + ldrb r2, [r3, #1] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] + movs r0, #0x2e + ldrsh r2, [r3, r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] + movs r2, #0x2e + ldrsh r1, [r3, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #3] + movs r1, #0x3e + ands r1, r0 + ldrb r2, [r3, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #3] + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x20] + strh r0, [r3, #0x20] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x22] + strh r0, [r3, #0x22] +_0817720C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177144 + + thumb_func_start sub_08177214 +sub_08177214: @ 0x08177214 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _081772AC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08133E94 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + movs r4, #1 + movs r6, #0 + ldr r5, _081772B0 +_08177240: + adds r0, r4, #0 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08177260 + ldr r0, _081772B4 + ldr r0, [r0] + lsls r1, r6, #1 + adds r0, #0x7e + adds r0, r0, r1 + strh r4, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 +_08177260: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r5 + bls _08177240 + adds r4, r6, #0 + ldr r0, _081772B0 + ldr r1, _081772B4 + mov r8, r1 + lsls r7, r4, #0x10 + cmp r4, r0 + bhi _08177292 + mov r5, r8 + movs r3, #0 + adds r2, r0, #0 +_0817727E: + ldr r0, [r5] + lsls r1, r4, #1 + adds r0, #0x7e + adds r0, r0, r1 + strh r3, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r2 + bls _0817727E +_08177292: + mov r2, r8 + ldr r1, [r2] + ldr r2, _081772B8 + adds r0, r1, r2 + strh r6, [r0] + lsrs r0, r7, #0x10 + cmp r0, #0x37 + bhi _081772BC + adds r0, r1, #0 + adds r0, #0x7c + strh r6, [r0] + b _081772C2 + .align 2, 0 +_081772AC: .4byte 0x00004023 +_081772B0: .4byte 0x00000181 +_081772B4: .4byte gUnknown_203B9B4 +_081772B8: .4byte 0x00000382 +_081772BC: + adds r1, #0x7c + movs r0, #0x38 + strh r0, [r1] +_081772C2: + movs r6, #0 + ldr r0, _081772D0 + mov sb, r0 + ldr r1, _081772D4 + mov r8, r1 + movs r7, #0 + b _081772DC + .align 2, 0 +_081772D0: .4byte gUnknown_203B9B4 +_081772D4: .4byte 0x00000382 +_081772D8: + cmp r6, #0x37 + bhi _08177338 +_081772DC: + bl sub_0806F050 + mov r2, sb + ldr r4, [r2] + mov r1, r8 + adds r5, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r5] + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r6, #1 + adds r1, r4, r1 + lsls r0, r3, #1 + adds r4, #0x7e + adds r2, r4, r0 + ldrh r0, [r2] + strh r0, [r1] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + strh r7, [r2] + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r3, r0 + beq _0817732C + ldrh r0, [r5] + lsls r0, r0, #1 + adds r0, r4, r0 + ldrh r0, [r0] + strh r0, [r2] + ldrh r0, [r5] + lsls r0, r0, #1 + adds r0, r4, r0 + strh r7, [r0] +_0817732C: + mov r2, sb + ldr r0, [r2] + add r0, r8 + ldrh r0, [r0] + cmp r0, #0 + bne _081772D8 +_08177338: + ldr r1, _08177380 + ldr r2, [r1] + adds r3, r2, #0 + adds r3, #0x7c + ldrh r0, [r3] + mov r8, r1 + cmp r0, #0x37 + bhi _08177384 + adds r6, r0, #0 + movs r3, #0 + cmp r6, #0x37 + bhi _0817737A + mov r4, r8 +_08177352: + ldr r2, [r4] + lsls r1, r6, #1 + adds r1, r2, r1 + lsls r0, r3, #1 + adds r0, r2, r0 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r2, #0x7c + ldrh r2, [r2] + cmp r3, r2 + bne _08177370 + movs r3, #0 +_08177370: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x37 + bls _08177352 +_0817737A: + mov r1, r8 + ldr r0, [r1] + b _081773C4 + .align 2, 0 +_08177380: .4byte gUnknown_203B9B4 +_08177384: + movs r4, #0 + ldrh r0, [r2] + cmp r0, sl + beq _081773A2 + adds r1, r2, #0 +_0817738E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r0, r4, #1 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, sl + beq _081773A2 + cmp r4, #0x37 + bls _0817738E +_081773A2: + mov r0, r8 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0x7c + ldrh r0, [r0] + subs r0, #1 + cmp r4, r0 + bge _081773C2 + lsls r0, r4, #1 + adds r0, r2, r0 + adds r2, #0x6e + ldrh r1, [r2] + strh r1, [r0] + mov r1, sl + strh r1, [r2] + b _081773CA +_081773C2: + adds r0, r2, #0 +_081773C4: + adds r0, #0x6e + mov r2, sl + strh r2, [r0] +_081773CA: + mov r1, r8 + ldr r0, [r1] + adds r0, #0x7c + movs r1, #0x38 + strh r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177214 + + thumb_func_start sub_081773E4 +sub_081773E4: @ 0x081773E4 + push {r4, lr} + bl sub_0806F050 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + orrs r0, r4 + bl sub_081776A0 + ldr r0, _0817740C + movs r1, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817740C: .4byte 0x00004045 + thumb_func_end sub_081773E4 + + thumb_func_start sub_08177410 +sub_08177410: @ 0x08177410 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0817744C + cmp r4, r0 + beq _08177440 + ldr r5, _08177450 + ldr r3, _08177454 + adds r2, r0, #0 +_08177430: + adds r0, r1, #0 + muls r0, r5, r0 + adds r1, r0, r3 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r2 + bne _08177430 +_08177440: + adds r0, r1, #0 + bl sub_081776A0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817744C: .4byte 0x0000FFFF +_08177450: .4byte 0x41C64E6D +_08177454: .4byte 0x00003039 + thumb_func_end sub_08177410 + + thumb_func_start sub_08177458 +sub_08177458: @ 0x08177458 + push {lr} + bl sub_081776C8 + ldr r1, _08177468 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08177468: .4byte gUnknown_2037290 + thumb_func_end sub_08177458 + + thumb_func_start sub_0817746C +sub_0817746C: @ 0x0817746C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r1, _081775A8 + movs r0, #0 + strh r0, [r1] + movs r0, #0 + str r0, [sp, #4] + movs r1, #0 + str r1, [sp] + movs r7, #0 +_08177488: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _081775AC + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081774E4 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081774DA + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + adds r1, r0, #0 + ldr r0, _081775B0 + ldrh r0, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08177618 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081775A8 + ldrh r2, [r1] + cmp r0, r2 + bls _081774DA + cmp r0, #1 + bls _081774DA + subs r0, #1 + strh r0, [r1] + movs r0, #0xe + str r0, [sp] + str r7, [sp, #4] +_081774DA: + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #5 + bls _08177488 +_081774E4: + movs r7, #0 + ldr r1, _081775B4 + mov sb, r1 +_081774EA: + movs r6, #0 + adds r2, r7, #1 + mov sl, r2 + lsls r0, r7, #2 + adds r0, r0, r7 + mov r8, r0 +_081774F6: + mov r1, r8 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + adds r5, r0, #4 + mov r2, sb + ldr r0, [r2] + adds r0, r0, r5 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r4, r1, #4 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A1B4 + cmp r0, #0 + beq _0817755E + mov r1, sb + ldr r0, [r1] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #0x2d + bl sub_0806A1B4 + cmp r0, #0 + bne _0817755E + mov r2, sb + ldr r0, [r2] + adds r0, r0, r5 + adds r0, r0, r4 + movs r1, #1 + bl sub_0806A1B4 + adds r1, r0, #0 + ldr r0, _081775B0 + ldrh r0, [r0] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08177618 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081775A8 + ldrh r2, [r1] + cmp r0, r2 + bls _0817755E + cmp r0, #1 + bls _0817755E + subs r0, #1 + strh r0, [r1] + str r7, [sp] + str r6, [sp, #4] +_0817755E: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x1d + bls _081774F6 + mov r1, sl + lsls r0, r1, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0xd + bls _081774EA + ldr r3, _081775A8 + ldrh r0, [r3] + cmp r0, #0 + beq _081775FA + ldr r2, _081775B8 + ldr r1, _081775BC + subs r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + ldr r2, [sp] + cmp r2, #0xe + bne _081775C8 + ldr r1, _081775C0 + movs r0, #0 + strh r0, [r1] + movs r0, #0x64 + ldr r1, [sp, #4] + muls r0, r1, r0 + ldr r1, _081775AC + adds r0, r0, r1 + ldr r2, _081775C4 + movs r1, #2 + bl sub_0806A058 + b _081775F4 + .align 2, 0 +_081775A8: .4byte gUnknown_2037280 +_081775AC: .4byte gUnknown_2024190 +_081775B0: .4byte gUnknown_2037290 +_081775B4: .4byte gUnknown_3005AF4 +_081775B8: .4byte gUnknown_2037282 +_081775BC: .4byte gUnknown_85C7A2C +_081775C0: .4byte gUnknown_2037284 +_081775C4: .4byte gUnknown_2021C40 +_081775C8: + ldr r1, _0817760C + movs r0, #1 + strh r0, [r1] + ldr r2, _08177610 + ldr r1, [sp] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #5 + adds r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + ldr r2, [sp, #4] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r2, _08177614 + movs r1, #2 + bl sub_0806A1B4 +_081775F4: + ldr r0, _08177614 + bl sub_0800885C +_081775FA: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817760C: .4byte gUnknown_2037284 +_08177610: .4byte gUnknown_3005AF4 +_08177614: .4byte gUnknown_2021C40 + thumb_func_end sub_0817746C + + thumb_func_start sub_08177618 +sub_08177618: @ 0x08177618 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r0, #0 + mov r8, r0 + movs r7, #0 + ldr r1, _08177698 + mov sl, r1 + ldr r0, _0817769C + mov sb, r0 +_08177638: + adds r0, r6, #0 + movs r1, #0xa + bl __umodsi3 + adds r4, r0, #0 + mov r1, sl + strh r4, [r1] + adds r0, r5, #0 + movs r1, #0xa + bl __umodsi3 + mov r1, sb + strh r0, [r1] + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + cmp r4, r0 + bne _08177686 + adds r0, r6, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r5, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #4 + bls _08177638 +_08177686: + mov r0, r8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08177698: .4byte gUnknown_203B9B8 +_0817769C: .4byte gUnknown_203B9BA + thumb_func_end sub_08177618 + + thumb_func_start sub_081776A0 +sub_081776A0: @ 0x081776A0 + push {r4, lr} + adds r1, r0, #0 + lsrs r4, r1, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _081776C0 + bl sub_0809CF88 + ldr r0, _081776C4 + adds r1, r4, #0 + bl sub_0809CF88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081776C0: .4byte 0x0000404B +_081776C4: .4byte 0x0000404C + thumb_func_end sub_081776A0 + + thumb_func_start sub_081776C8 +sub_081776C8: @ 0x081776C8 + push {r4, lr} + ldr r0, _081776E8 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _081776EC + bl sub_0809CF6C + lsls r0, r0, #0x10 + orrs r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081776E8: .4byte 0x0000404B +_081776EC: .4byte 0x0000404C + thumb_func_end sub_081776C8 + + thumb_func_start sub_081776F0 +sub_081776F0: @ 0x081776F0 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081776A0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081776F0 + + thumb_func_start sub_08177700 +sub_08177700: @ 0x08177700 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177700 + + thumb_func_start sub_08177714 +sub_08177714: @ 0x08177714 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + add r1, sp, #4 + movs r0, #0 + strh r0, [r1] + ldr r1, _08177868 + add r0, sp, #4 + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0817786C + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r5, #0 + str r5, [sp, #8] + add r0, sp, #8 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08177870 + str r0, [r1, #8] + ldr r0, [r1, #8] + add r0, sp, #4 + strh r5, [r0] + str r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _08177874 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080B9710 + bl sub_080A8818 + bl sub_0800668C + bl sub_080A133C + bl sub_08008424 + ldr r0, _08177878 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r4, _0817787C + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BC8 + str r0, [r4] + bl sub_08177A2C + bl sub_08177A84 + bl sub_081996B8 + ldr r1, _08177880 + str r5, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_08177808: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08177808 + ldr r0, _08177884 + ldr r1, _0817787C + ldr r1, [r1] + bl sub_08034370 + movs r0, #1 + bl sub_08002248 + bl sub_08177960 + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + str r5, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _08177888 + bl sub_080006F0 + ldr r0, _0817788C + bl sub_08000540 + ldr r0, _08177890 + movs r1, #0 + bl sub_080A8878 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08177868: .4byte 0x040000D4 +_0817786C: .4byte 0x8100C000 +_08177870: .4byte 0x85000100 +_08177874: .4byte 0x81000200 +_08177878: .4byte gUnknown_85C7A34 +_0817787C: .4byte gUnknown_203B9BC +_08177880: .4byte gUnknown_85C81B0 +_08177884: .4byte gUnknown_85C7A74 +_08177888: .4byte sub_08177700 +_0817788C: .4byte sub_08177894 +_08177890: .4byte sub_081778AC + thumb_func_end sub_08177714 + + thumb_func_start sub_08177894 +sub_08177894: @ 0x08177894 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177894 + + thumb_func_start sub_081778AC +sub_081778AC: @ 0x081778AC + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081778D0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081778CC + ldr r0, _081778D4 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081778D8 + str r0, [r1] +_081778CC: + pop {r0} + bx r0 + .align 2, 0 +_081778D0: .4byte gUnknown_2037C74 +_081778D4: .4byte gUnknown_3005B60 +_081778D8: .4byte sub_081778DC + thumb_func_end sub_081778AC + + thumb_func_start sub_081778DC +sub_081778DC: @ 0x081778DC + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08177918 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0817790E + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0817791C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _08177920 + str r1, [r0] +_0817790E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177918: .4byte gUnknown_3002360 +_0817791C: .4byte gUnknown_3005B60 +_08177920: .4byte sub_08177924 + thumb_func_end sub_081778DC + + thumb_func_start sub_08177924 +sub_08177924: @ 0x08177924 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08177954 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817794E + ldr r0, _08177958 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _0817795C + bl sub_08000540 +_0817794E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177954: .4byte gUnknown_2037C74 +_08177958: .4byte gUnknown_203B9BC +_0817795C: .4byte sub_08085B50 + thumb_func_end sub_08177924 + + thumb_func_start sub_08177960 +sub_08177960: @ 0x08177960 + push {r4, lr} + sub sp, #0xc + ldr r0, _081779D8 + movs r1, #0 + movs r2, #2 + bl sub_08177AB4 + ldr r1, _081779DC + mov r0, sp + bl sub_080088B8 + movs r2, #0 + ldr r0, _081779E0 + ldr r3, [r0] +_0817797C: + adds r0, r2, #6 + mov r4, sp + adds r1, r4, r0 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _0817797C + adds r0, r2, #6 + adds r1, r4, r0 + movs r0, #0xff + strb r0, [r1] + mov r0, sp + movs r1, #0x30 + movs r2, #2 + bl sub_08177AB4 + ldr r0, _081779E4 + movs r1, #0x58 + movs r2, #2 + bl sub_08177AB4 + ldr r0, _081779E8 + movs r1, #0 + movs r2, #0x22 + bl sub_08177AB4 + bl sub_080BFE9C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081779F0 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #0x14 + bl sub_08001144 + ldr r0, _081779EC + movs r1, #0 + movs r2, #0x22 + bl sub_08177AB4 + b _08177A02 + .align 2, 0 +_081779D8: .4byte gUnknown_85C8BA8 +_081779DC: .4byte gUnknown_85C8C00 +_081779E0: .4byte gUnknown_3005AF0 +_081779E4: .4byte gUnknown_85C8BAE +_081779E8: .4byte gUnknown_85C8BBB +_081779EC: .4byte gUnknown_85C8BB6 +_081779F0: + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + ldr r0, _08177A24 + movs r1, #0 + movs r2, #0x22 + bl sub_08177AB4 +_08177A02: + ldr r0, _08177A28 + movs r1, #0x30 + movs r2, #0x72 + bl sub_08177AB4 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177A24: .4byte gUnknown_85C8BB1 +_08177A28: .4byte gUnknown_85C8BF2 + thumb_func_end sub_08177960 + + thumb_func_start sub_08177A2C +sub_08177A2C: @ 0x08177A2C + push {lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _08177A7C + movs r0, #0 + movs r2, #2 + bl sub_08001800 + ldr r0, _08177A80 + ldr r1, [r0] + movs r0, #1 + bl sub_0800212C + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08177A7C: .4byte gUnknown_85C8C08 +_08177A80: .4byte gUnknown_203B9BC + thumb_func_end sub_08177A2C + + thumb_func_start sub_08177A84 +sub_08177A84: @ 0x08177A84 + push {lr} + ldr r0, _08177AAC + bl sub_08003090 + bl sub_08004480 + ldr r0, _08177AB0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + pop {r0} + bx r0 + .align 2, 0 +_08177AAC: .4byte gUnknown_85C8C10 +_08177AB0: .4byte gUnknown_85D7B04 + thumb_func_end sub_08177A84 + + thumb_func_start sub_08177AB4 +sub_08177AB4: @ 0x08177AB4 + push {r4, r5, r6, lr} + sub sp, #0x18 + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _08177AF8 + add r0, sp, #0x14 + movs r2, #3 + bl memcpy + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + movs r0, #0 + movs r1, #1 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08177AF8: .4byte gUnknown_85C8C20 + thumb_func_end sub_08177AB4 + + thumb_func_start sub_08177AFC +sub_08177AFC: @ 0x08177AFC + push {r4, lr} + ldr r4, _08177B2C + ldr r0, _08177B30 + bl sub_08000BDC + str r0, [r4] + ldr r0, _08177B34 + ldrh r0, [r0] + bl sub_080E0F34 + ldr r1, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] + ldr r0, _08177B38 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177B2C: .4byte gUnknown_203B9C0 +_08177B30: .4byte 0x0000180C +_08177B34: .4byte gUnknown_203CB48 +_08177B38: .4byte sub_08177B6C + thumb_func_end sub_08177AFC + + thumb_func_start sub_08177B3C +sub_08177B3C: @ 0x08177B3C + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177B3C + + thumb_func_start sub_08177B58 +sub_08177B58: @ 0x08177B58 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177B58 + + thumb_func_start sub_08177B6C +sub_08177B6C: @ 0x08177B6C + push {lr} +_08177B6E: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08177B92 + bl sub_08177B98 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08177B92 + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08177B6E +_08177B92: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177B6C + + thumb_func_start sub_08177B98 +sub_08177B98: @ 0x08177B98 + push {lr} + sub sp, #4 + ldr r0, _08177BB8 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xf + bls _08177BAC + b _08177CDC +_08177BAC: + lsls r0, r0, #2 + ldr r1, _08177BBC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08177BB8: .4byte gUnknown_3002360 +_08177BBC: .4byte _08177BC0 +_08177BC0: @ jump table + .4byte _08177C00 @ case 0 + .4byte _08177C0E @ case 1 + .4byte _08177C14 @ case 2 + .4byte _08177C28 @ case 3 + .4byte _08177C2E @ case 4 + .4byte _08177C34 @ case 5 + .4byte _08177C44 @ case 6 + .4byte _08177C60 @ case 7 + .4byte _08177C6C @ case 8 + .4byte _08177C72 @ case 9 + .4byte _08177C78 @ case 10 + .4byte _08177C7E @ case 11 + .4byte _08177C84 @ case 12 + .4byte _08177C8E @ case 13 + .4byte _08177C9C @ case 14 + .4byte _08177CAA @ case 15 +_08177C00: + bl sub_08121E58 + bl sub_08121D90 + bl sub_08199640 + b _08177CC4 +_08177C0E: + bl sub_080B9710 + b _08177CC4 +_08177C14: + bl sub_080A133C + ldr r2, _08177C24 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + b _08177CC2 + .align 2, 0 +_08177C24: .4byte gUnknown_2037C74 +_08177C28: + bl sub_0800668C + b _08177CC4 +_08177C2E: + bl sub_08008424 + b _08177CC4 +_08177C34: + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08177CC4 + bl sub_080A8818 + b _08177CC4 +_08177C44: + bl sub_08177CFC + ldr r0, _08177C58 + ldr r0, [r0] + ldr r1, _08177C5C + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _08177CC4 + .align 2, 0 +_08177C58: .4byte gUnknown_203B9C0 +_08177C5C: .4byte 0x00001808 +_08177C60: + bl sub_08177D70 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08177CF4 + b _08177CC4 +_08177C6C: + bl sub_08177EF0 + b _08177CC4 +_08177C72: + bl sub_08177F78 + b _08177CC4 +_08177C78: + bl sub_08177FCC + b _08177CC4 +_08177C7E: + bl sub_081781F0 + b _08177CC4 +_08177C84: + bl sub_08178254 + bl sub_081782BC + b _08177CC4 +_08177C8E: + ldr r0, _08177C98 + movs r1, #0 + bl sub_080A8878 + b _08177CC4 + .align 2, 0 +_08177C98: .4byte sub_0817850C +_08177C9C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + b _08177CC4 +_08177CAA: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _08177CD4 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 +_08177CC2: + strb r0, [r2, #8] +_08177CC4: + ldr r1, _08177CD8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08177CF4 + .align 2, 0 +_08177CD4: .4byte gUnknown_2037C74 +_08177CD8: .4byte gUnknown_3002360 +_08177CDC: + ldr r0, _08177CEC + bl sub_080006F0 + ldr r0, _08177CF0 + bl sub_08000540 + movs r0, #1 + b _08177CF6 + .align 2, 0 +_08177CEC: .4byte sub_08177B58 +_08177CF0: .4byte sub_08177B3C +_08177CF4: + movs r0, #0 +_08177CF6: + add sp, #4 + pop {r1} + bx r1 + thumb_func_end sub_08177B98 + + thumb_func_start sub_08177CFC +sub_08177CFC: @ 0x08177CFC + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _08177D68 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _08177D6C + ldr r1, [r4] + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + movs r0, #0x80 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + bl sub_08121E00 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177D68: .4byte gUnknown_85CD068 +_08177D6C: .4byte gUnknown_203B9C0 + thumb_func_end sub_08177CFC + + thumb_func_start sub_08177D70 +sub_08177D70: @ 0x08177D70 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r1, _08177D90 + ldr r0, [r1] + ldr r2, _08177D94 + adds r0, r0, r2 + ldrh r0, [r0] + adds r7, r1, #0 + cmp r0, #5 + bls _08177D86 + b _08177ED4 +_08177D86: + lsls r0, r0, #2 + ldr r1, _08177D98 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08177D90: .4byte gUnknown_203B9C0 +_08177D94: .4byte 0x00001808 +_08177D98: .4byte _08177D9C +_08177D9C: @ jump table + .4byte _08177DB4 @ case 0 + .4byte _08177DE0 @ case 1 + .4byte _08177E04 @ case 2 + .4byte _08177E24 @ case 3 + .4byte _08177E90 @ case 4 + .4byte _08177EB0 @ case 5 +_08177DB4: + bl sub_081996B8 + ldr r1, _08177DD4 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _08177DD8 + ldr r1, [r0] + ldr r0, _08177DDC + adds r1, r1, r0 + b _08177EBE + .align 2, 0 +_08177DD4: .4byte gUnknown_8D9BD90 +_08177DD8: .4byte gUnknown_203B9C0 +_08177DDC: .4byte 0x00001808 +_08177DE0: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08177DEE + b _08177EE4 +_08177DEE: + ldr r0, _08177DFC + ldr r4, _08177E00 + ldr r1, [r4] + bl sub_08034370 + ldr r1, [r4] + b _08177EBA + .align 2, 0 +_08177DFC: .4byte gUnknown_8D9C254 +_08177E00: .4byte gUnknown_203B9C0 +_08177E04: + ldr r0, _08177E1C + ldr r1, [r7] + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + bl sub_08034370 + ldr r1, [r7] + ldr r0, _08177E20 + adds r1, r1, r0 + b _08177EBE + .align 2, 0 +_08177E1C: .4byte gUnknown_8D9C3E4 +_08177E20: .4byte 0x00001808 +_08177E24: + ldr r0, _08177E50 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _08177E60 + movs r2, #0 + ldr r6, _08177E54 + movs r5, #0x80 + lsls r5, r5, #4 + ldr r4, _08177E58 + ldr r3, _08177E5C +_08177E3A: + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r5 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + bls _08177E3A + b _08177E80 + .align 2, 0 +_08177E50: .4byte gUnknown_3005AF0 +_08177E54: .4byte gUnknown_203B9C0 +_08177E58: .4byte 0x00004042 +_08177E5C: .4byte 0x000003FF +_08177E60: + movs r2, #0 + ldr r6, _08177E84 + movs r5, #0x80 + lsls r5, r5, #4 + ldr r4, _08177E88 + ldr r3, _08177E8C +_08177E6C: + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r5 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r3 + bls _08177E6C +_08177E80: + ldr r1, [r7] + b _08177EBA + .align 2, 0 +_08177E84: .4byte gUnknown_203B9C0 +_08177E88: .4byte 0x00005042 +_08177E8C: .4byte 0x000003FF +_08177E90: + ldr r0, _08177EA4 + movs r1, #0 + movs r2, #0xc0 + bl sub_080A11BC + ldr r0, _08177EA8 + ldr r1, [r0] + ldr r0, _08177EAC + adds r1, r1, r0 + b _08177EBE + .align 2, 0 +_08177EA4: .4byte gUnknown_8D9C1AC +_08177EA8: .4byte gUnknown_203B9C0 +_08177EAC: .4byte 0x00001808 +_08177EB0: + ldr r0, _08177EC8 + bl sub_08034388 + ldr r0, _08177ECC + ldr r1, [r0] +_08177EBA: + ldr r2, _08177ED0 + adds r1, r1, r2 +_08177EBE: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _08177EE4 + .align 2, 0 +_08177EC8: .4byte gUnknown_855A91C +_08177ECC: .4byte gUnknown_203B9C0 +_08177ED0: .4byte 0x00001808 +_08177ED4: + ldr r0, _08177EE0 + bl sub_080343E4 + movs r0, #1 + b _08177EE6 + .align 2, 0 +_08177EE0: .4byte gUnknown_855A924 +_08177EE4: + movs r0, #0 +_08177EE6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08177D70 + + thumb_func_start sub_08177EF0 +sub_08177EF0: @ 0x08177EF0 + push {r4, lr} + ldr r0, _08177F2C + bl sub_08003090 + bl sub_08004480 + ldr r0, _08177F30 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r4, #0 +_08177F08: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #3 + bls _08177F08 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08177F2C: .4byte gUnknown_85CD0A0 +_08177F30: .4byte gUnknown_85CD078 + thumb_func_end sub_08177EF0 + + thumb_func_start sub_08177F34 +sub_08177F34: @ 0x08177F34 + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r6, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + ldr r5, _08177F74 + adds r4, r4, r5 + str r4, [sp, #8] + lsls r6, r6, #0x18 + asrs r6, r6, #0x18 + str r6, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + bl sub_08199B84 + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08177F74: .4byte gUnknown_85CD098 + thumb_func_end sub_08177F34 + + thumb_func_start sub_08177F78 +sub_08177F78: @ 0x08177F78 + push {lr} + sub sp, #8 + movs r0, #0 + bl sub_08002194 + ldr r1, _08177FC4 + ldr r1, [r1] + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + movs r2, #0x80 + lsls r2, r2, #4 + bl memcpy + movs r0, #3 + movs r1, #0xff + bl sub_08003B18 + ldr r1, _08177FC8 + movs r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #3 + movs r2, #0 + movs r3, #2 + bl sub_08177F34 + movs r0, #3 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_08177FC4: .4byte gUnknown_203B9C0 +_08177FC8: .4byte gUnknown_85C97BD + thumb_func_end sub_08177F78 + + thumb_func_start sub_08177FCC +sub_08177FCC: @ 0x08177FCC + push {lr} + bl sub_08177FE8 + bl sub_0817804C + bl sub_08178108 + bl sub_08178188 + bl sub_081781BC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08177FCC + + thumb_func_start sub_08177FE8 +sub_08177FE8: @ 0x08177FE8 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r5, _08178038 + ldr r0, [r5] + movs r4, #0xc0 + lsls r4, r4, #5 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080E0BC8 + adds r6, r0, #0 + ldr r0, _0817803C + ldr r1, [r5] + adds r1, r1, r4 + ldrh r1, [r1] + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r0, _08178040 + adds r1, r6, #0 + bl sub_080088B8 + ldr r4, _08178044 + ldr r1, _08178048 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_08177F34 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08178038: .4byte gUnknown_203B9C0 +_0817803C: .4byte gUnknown_2021C40 +_08178040: .4byte gUnknown_2021C54 +_08178044: .4byte gUnknown_2021C7C +_08178048: .4byte gUnknown_85C97B5 + thumb_func_end sub_08177FE8 + + thumb_func_start sub_0817804C +sub_0817804C: @ 0x0817804C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _081780D0 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E0BC8 + adds r5, r0, #0 + ldr r2, _081780D4 + movs r7, #2 + str r7, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r6, #0 + str r6, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrh r0, [r5, #8] + cmp r0, #0 + beq _081780E8 + ldr r4, _081780D8 + movs r1, #0xa + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081780DC + ldrh r0, [r5, #8] + movs r1, #0xa + bl __umodsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081780E0 + ldr r1, _081780E4 + adds r0, r4, #0 + bl sub_08008BCC + str r7, [sp] + str r6, [sp, #4] + str r6, [sp, #8] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0x28 + bl sub_0800449C + b _081780FA + .align 2, 0 +_081780D0: .4byte gUnknown_203B9C0 +_081780D4: .4byte gUnknown_85C977D +_081780D8: .4byte gUnknown_2021C40 +_081780DC: .4byte gUnknown_2021C54 +_081780E0: .4byte gUnknown_2021C7C +_081780E4: .4byte gUnknown_85C9786 +_081780E8: + ldr r2, _08178104 + str r7, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x28 + bl sub_0800449C +_081780FA: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08178104: .4byte gUnknown_85C93F5 + thumb_func_end sub_0817804C + + thumb_func_start sub_08178108 +sub_08178108: @ 0x08178108 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r0, _0817815C + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E0BC8 + adds r6, r0, #0 + ldr r2, _08178160 + movs r5, #0x12 + str r5, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r6, #7] + cmp r0, #0 + beq _08178168 + ldr r0, _08178164 + ldrb r1, [r6, #7] + subs r1, #1 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + str r5, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x28 + bl sub_0800449C + b _0817817A + .align 2, 0 +_0817815C: .4byte gUnknown_203B9C0 +_08178160: .4byte gUnknown_85C9782 +_08178164: .4byte gUnknown_85CD0C8 +_08178168: + ldr r2, _08178184 + str r5, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x28 + bl sub_0800449C +_0817817A: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08178184: .4byte gUnknown_85C93F5 + thumb_func_end sub_08178108 + + thumb_func_start sub_08178188 +sub_08178188: @ 0x08178188 + push {lr} + sub sp, #0xc + ldr r0, _081781B8 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E0BC8 + ldr r2, [r0, #0xc] + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081781B8: .4byte gUnknown_203B9C0 + thumb_func_end sub_08178188 + + thumb_func_start sub_081781BC +sub_081781BC: @ 0x081781BC + push {lr} + sub sp, #0xc + ldr r0, _081781EC + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E0BC8 + ldr r2, [r0, #0x10] + movs r0, #0x12 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081781EC: .4byte gUnknown_203B9C0 + thumb_func_end sub_081781BC + + thumb_func_start sub_081781F0 +sub_081781F0: @ 0x081781F0 + push {r4, lr} + ldr r4, _0817821C + ldr r0, [r4] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x38 + movs r2, #0x40 + bl sub_080D4958 + ldr r1, [r4] + ldr r2, _08178220 + adds r1, r1, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817821C: .4byte gUnknown_203B9C0 +_08178220: .4byte 0x00001802 + thumb_func_end sub_081781F0 + + thumb_func_start sub_08178224 +sub_08178224: @ 0x08178224 + push {lr} + ldr r0, _08178248 + ldr r0, [r0] + ldr r1, _0817824C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08178250 + adds r0, r0, r1 + bl sub_08006E00 + bl sub_080D4990 + pop {r0} + bx r0 + .align 2, 0 +_08178248: .4byte gUnknown_203B9C0 +_0817824C: .4byte 0x00001802 +_08178250: .4byte gUnknown_20205AC + thumb_func_end sub_08178224 + + thumb_func_start sub_08178254 +sub_08178254: @ 0x08178254 + push {r4, lr} + movs r0, #0x3c + bl sub_080D4A10 + ldr r4, _081782A4 + ldr r1, [r4] + ldr r2, _081782A8 + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0x5c + bl sub_080D4A10 + ldr r1, [r4] + ldr r2, _081782AC + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0x7c + bl sub_080D4A10 + ldr r1, [r4] + ldr r2, _081782B0 + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0x9c + bl sub_080D4A10 + ldr r1, [r4] + ldr r2, _081782B4 + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0xbc + bl sub_080D4A10 + ldr r1, [r4] + ldr r2, _081782B8 + adds r1, r1, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081782A4: .4byte gUnknown_203B9C0 +_081782A8: .4byte 0x00001803 +_081782AC: .4byte 0x00001804 +_081782B0: .4byte 0x00001805 +_081782B4: .4byte 0x00001806 +_081782B8: .4byte 0x00001807 + thumb_func_end sub_08178254 + + thumb_func_start sub_081782BC +sub_081782BC: @ 0x081782BC + push {r4, r5, lr} + ldr r4, _081782F4 + ldr r0, [r4] + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080E0BC8 + adds r5, r0, #0 + ldrb r0, [r5, #0x15] + cmp r0, #0 + beq _08178300 + ldr r3, _081782F8 + ldr r0, [r4] + ldr r1, _081782FC + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _0817831A + .align 2, 0 +_081782F4: .4byte gUnknown_203B9C0 +_081782F8: .4byte gUnknown_20205AC +_081782FC: .4byte 0x00001803 +_08178300: + ldr r3, _08178344 + ldr r0, [r4] + ldr r1, _08178348 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_0817831A: + strb r1, [r0] + adds r4, r3, #0 + ldrb r0, [r5, #0x16] + cmp r0, #0 + beq _08178354 + ldr r3, _0817834C + ldr r0, [r3] + ldr r1, _08178350 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _0817836E + .align 2, 0 +_08178344: .4byte gUnknown_20205AC +_08178348: .4byte 0x00001803 +_0817834C: .4byte gUnknown_203B9C0 +_08178350: .4byte 0x00001804 +_08178354: + ldr r3, _08178394 + ldr r0, [r3] + ldr r1, _08178398 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_0817836E: + strb r1, [r0] + ldrb r0, [r5, #0x17] + cmp r0, #0 + beq _081783A0 + ldr r0, [r3] + ldr r1, _0817839C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _081783B8 + .align 2, 0 +_08178394: .4byte gUnknown_203B9C0 +_08178398: .4byte 0x00001804 +_0817839C: .4byte 0x00001805 +_081783A0: + ldr r0, [r3] + ldr r1, _081783DC + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_081783B8: + strb r1, [r0] + ldrb r0, [r5, #0x18] + cmp r0, #0 + beq _081783E4 + ldr r0, [r3] + ldr r1, _081783E0 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _081783FC + .align 2, 0 +_081783DC: .4byte 0x00001805 +_081783E0: .4byte 0x00001806 +_081783E4: + ldr r0, [r3] + ldr r1, _08178420 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_081783FC: + strb r1, [r0] + ldrb r0, [r5, #0x19] + cmp r0, #0 + beq _08178428 + ldr r0, [r3] + ldr r1, _08178424 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + b _08178440 + .align 2, 0 +_08178420: .4byte 0x00001806 +_08178424: .4byte 0x00001807 +_08178428: + ldr r0, [r3] + ldr r1, _08178448 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 +_08178440: + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08178448: .4byte 0x00001807 + thumb_func_end sub_081782BC + + thumb_func_start sub_0817844C +sub_0817844C: @ 0x0817844C + push {r4, lr} + movs r4, #0 +_08178450: + ldr r0, _0817847C + ldr r0, [r0] + ldr r1, _08178480 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08178484 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _08178450 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817847C: .4byte gUnknown_203B9C0 +_08178480: .4byte 0x00001803 +_08178484: .4byte gUnknown_20205AC + thumb_func_end sub_0817844C + + thumb_func_start sub_08178488 +sub_08178488: @ 0x08178488 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081784C0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081784C4 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081784C0: .4byte gUnknown_3005B60 +_081784C4: .4byte sub_081784C8 + thumb_func_end sub_08178488 + + thumb_func_start sub_081784C8 +sub_081784C8: @ 0x081784C8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08178500 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081784FA + bl sub_08178224 + bl sub_0817844C + ldr r0, _08178504 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _08178508 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_081784FA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08178500: .4byte gUnknown_2037C74 +_08178504: .4byte gUnknown_203B9C0 +_08178508: .4byte sub_081AD204 + thumb_func_end sub_081784C8 + + thumb_func_start sub_0817850C +sub_0817850C: @ 0x0817850C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r4, r2, #0 + ldr r0, _08178538 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817855E + ldr r3, _0817853C + ldrh r0, [r3, #0x30] + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x40 + bne _08178540 + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r2, #0 + bl sub_08178564 + b _0817855E + .align 2, 0 +_08178538: .4byte gUnknown_2037C74 +_0817853C: .4byte gUnknown_3002360 +_08178540: + cmp r1, #0x80 + bne _0817854E + adds r0, r2, #0 + movs r1, #1 + bl sub_08178564 + b _0817855E +_0817854E: + ldrh r1, [r3, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0817855E + adds r0, r4, #0 + bl sub_08178488 +_0817855E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817850C + + thumb_func_start sub_08178564 +sub_08178564: @ 0x08178564 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r2, _081785A4 + adds r4, r0, r2 + ldr r2, _081785A8 + ldrh r0, [r2, #0xe] + ldrh r2, [r2, #0x18] + adds r0, r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsrs r7, r1, #0x18 + asrs r6, r1, #0x18 + adds r0, r0, r6 + cmp r0, #0x2d + bhi _081785D0 + lsls r1, r0, #0x10 + lsrs r1, r1, #0x10 + movs r0, #4 + bl sub_080D672C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081785D0 + cmp r6, #0 + bge _081785AC + movs r0, #2 + b _081785AE + .align 2, 0 +_081785A4: .4byte gUnknown_3005B68 +_081785A8: .4byte gUnknown_203CB24 +_081785AC: + movs r0, #1 +_081785AE: + strh r0, [r4, #2] + movs r0, #0 + strh r0, [r4] + movs r0, #5 + bl sub_080A306C + lsls r0, r7, #0x18 + asrs r0, r0, #0x18 + bl sub_081785E0 + ldr r1, _081785D8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081785DC + str r1, [r0] +_081785D0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081785D8: .4byte gUnknown_3005B60 +_081785DC: .4byte sub_08178664 + thumb_func_end sub_08178564 + + thumb_func_start sub_081785E0 +sub_081785E0: @ 0x081785E0 + push {r4, r5, r6, lr} + ldr r5, _08178614 + adds r6, r5, #0 + subs r6, #0xa + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + ble _0817861C + ldrh r0, [r6] + cmp r0, #3 + bls _0817860A + ldrh r1, [r5] + adds r1, #8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #4 + bl sub_080D672C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08178618 +_0817860A: + ldrh r0, [r6] + adds r0, r0, r4 + strh r0, [r6] + b _08178632 + .align 2, 0 +_08178614: .4byte gUnknown_203CB3C +_08178618: + ldrh r0, [r5] + b _0817862E +_0817861C: + ldrh r1, [r6] + cmp r1, #3 + bhi _08178628 + ldrh r0, [r5] + cmp r0, #0 + bne _0817862E +_08178628: + adds r0, r1, r4 + strh r0, [r6] + b _08178632 +_0817862E: + adds r0, r0, r4 + strh r0, [r5] +_08178632: + ldrh r1, [r6] + ldrh r5, [r5] + adds r1, r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #4 + bl sub_080D672C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080E0F34 + ldr r1, _08178660 + ldr r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0xc0 + lsls r2, r2, #5 + adds r1, r1, r2 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08178660: .4byte gUnknown_203B9C0 + thumb_func_end sub_081785E0 + + thumb_func_start sub_08178664 +sub_08178664: @ 0x08178664 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081786A8 + adds r6, r0, r1 + ldrh r0, [r6] + adds r0, #0x10 + movs r1, #0xff + ands r0, r1 + strh r0, [r6] + movs r1, #2 + ldrsh r0, [r6, r1] + cmp r0, #1 + bne _081786E0 + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0x70 + beq _08178740 + cmp r0, #0x70 + bgt _081786B6 + cmp r0, #0x40 + beq _081786D2 + cmp r0, #0x40 + bgt _081786AC + cmp r0, #0x30 + beq _08178750 + b _0817875E + .align 2, 0 +_081786A8: .4byte gUnknown_3005B68 +_081786AC: + cmp r0, #0x50 + beq _08178746 + cmp r0, #0x60 + beq _081786D8 + b _0817875E +_081786B6: + cmp r0, #0xa0 + beq _081786DC + cmp r0, #0xa0 + bgt _081786C8 + cmp r0, #0x80 + beq _0817873A + cmp r0, #0x90 + beq _08178730 + b _0817875E +_081786C8: + cmp r0, #0xb0 + beq _0817872A + cmp r0, #0xc0 + beq _08178724 + b _0817875E +_081786D2: + bl sub_08177FE8 + b _0817875E +_081786D8: + movs r0, #1 + b _08178752 +_081786DC: + movs r0, #2 + b _08178752 +_081786E0: + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0x70 + beq _08178736 + cmp r0, #0x70 + bgt _08178704 + cmp r0, #0x40 + beq _08178724 + cmp r0, #0x40 + bgt _081786FA + cmp r0, #0x30 + beq _08178720 + b _0817875E +_081786FA: + cmp r0, #0x50 + beq _0817872A + cmp r0, #0x60 + beq _08178730 + b _0817875E +_08178704: + cmp r0, #0xa0 + beq _08178746 + cmp r0, #0xa0 + bgt _08178716 + cmp r0, #0x80 + beq _0817873A + cmp r0, #0x90 + beq _08178740 + b _0817875E +_08178716: + cmp r0, #0xb0 + beq _08178750 + cmp r0, #0xc0 + beq _0817875A + b _0817875E +_08178720: + movs r0, #2 + b _08178752 +_08178724: + bl sub_081781BC + b _0817875E +_0817872A: + bl sub_08178188 + b _0817875E +_08178730: + bl sub_081782BC + b _0817875E +_08178736: + movs r0, #1 + b _08178752 +_0817873A: + bl sub_08178108 + b _0817875E +_08178740: + bl sub_0817804C + b _0817875E +_08178746: + bl sub_08178224 + bl sub_081781F0 + b _0817875E +_08178750: + movs r0, #0 +_08178752: + movs r1, #0 + bl sub_08003B18 + b _0817875E +_0817875A: + bl sub_08177FE8 +_0817875E: + movs r2, #2 + ldrsh r0, [r6, r2] + cmp r0, #1 + bne _08178770 + ldrh r0, [r6] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _08178772 +_08178770: + ldrh r5, [r6] +_08178772: + ldr r2, _081787E4 + ldr r3, _081787E8 + ldr r0, [r3] + ldr r1, _081787EC + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x26] + movs r4, #0 + adds r7, r2, #0 + ldr r2, _081787F0 +_0817878E: + ldr r0, [r3] + adds r0, r0, r2 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r5, [r0, #0x26] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _0817878E + movs r4, #0x80 + lsls r4, r4, #5 + ldrb r2, [r6, #2] + movs r0, #1 + adds r1, r4, #0 + bl sub_08001E94 + ldrb r2, [r6, #2] + movs r0, #2 + adds r1, r4, #0 + bl sub_08001E94 + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0 + bne _081787DA + ldr r0, _081787F4 + mov r2, r8 + lsls r1, r2, #2 + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081787F8 + str r0, [r1] +_081787DA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081787E4: .4byte gUnknown_20205AC +_081787E8: .4byte gUnknown_203B9C0 +_081787EC: .4byte 0x00001802 +_081787F0: .4byte 0x00001803 +_081787F4: .4byte gUnknown_3005B60 +_081787F8: .4byte sub_0817850C + thumb_func_end sub_08178664 + + thumb_func_start sub_081787FC +sub_081787FC: @ 0x081787FC + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081787FC + + thumb_func_start sub_08178810 +sub_08178810: @ 0x08178810 + push {lr} + movs r2, #0 + ldr r1, _08178828 + ldrh r0, [r1, #0x1a] + ldrh r1, [r1, #0x36] + cmp r0, r1 + bne _08178820 + movs r2, #1 +_08178820: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_08178828: .4byte gUnknown_20226A0 + thumb_func_end sub_08178810 + + thumb_func_start sub_0817882C +sub_0817882C: @ 0x0817882C + push {r4, lr} + sub sp, #8 + bl sub_0800668C + bl sub_08008424 + bl sub_080A8818 + ldr r0, _081788E4 + bl sub_080006F0 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081788E8 + movs r0, #0 + movs r2, #1 + bl sub_08001800 + ldr r0, _081788EC + bl sub_08003090 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081788DA + bl sub_08004480 + movs r4, #0 +_08178864: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_08003B18 + adds r4, #1 + cmp r4, #1 + ble _08178864 + movs r0, #0x1e + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #0 + movs r1, #1 + movs r2, #0xd0 + bl sub_080981B4 + movs r0, #0xe0 + bl sub_08197694 + movs r1, #0xa0 + lsls r1, r1, #1 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + ldr r0, _081788F0 + movs r1, #0 + bl sub_080A8878 + bl sub_080A27F8 + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + movs r0, #0 + movs r1, #0 + movs r2, #2 + bl sub_080A1238 + ldr r0, _081788F4 + bl sub_08000540 +_081788DA: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081788E4: .4byte sub_081787FC +_081788E8: .4byte gUnknown_85CD204 +_081788EC: .4byte gUnknown_85CD208 +_081788F0: .4byte sub_08008FA0 +_081788F4: .4byte sub_08178930 + thumb_func_end sub_0817882C + + thumb_func_start sub_081788F8 +sub_081788F8: @ 0x081788F8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + movs r5, #1 + cmp r4, #0 + bne _0817890C + ldr r1, _08178928 + bl sub_080088B8 + movs r5, #0 +_0817890C: + cmp r4, #2 + bne _08178912 + movs r5, #0 +_08178912: + cmp r4, #1 + bne _0817891E + ldr r1, _0817892C + adds r0, r6, #0 + bl sub_080088B8 +_0817891E: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08178928: .4byte gUnknown_85CD159 +_0817892C: .4byte gUnknown_85CD19F + thumb_func_end sub_081788F8 + + thumb_func_start sub_08178930 +sub_08178930: @ 0x08178930 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r1, _08178950 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0x10 + bls _08178946 + b _08178D10 +_08178946: + lsls r0, r0, #2 + ldr r1, _08178954 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08178950: .4byte gUnknown_3002360 +_08178954: .4byte _08178958 +_08178958: @ jump table + .4byte _0817899C @ case 0 + .4byte _081789CA @ case 1 + .4byte _08178A00 @ case 2 + .4byte _08178A38 @ case 3 + .4byte _08178A84 @ case 4 + .4byte _08178A94 @ case 5 + .4byte _08178B0C @ case 6 + .4byte _08178BE0 @ case 7 + .4byte _08178BF0 @ case 8 + .4byte _08178C10 @ case 9 + .4byte _08178C18 @ case 10 + .4byte _08178C2C @ case 11 + .4byte _08178C74 @ case 12 + .4byte _08178C98 @ case 13 + .4byte _08178CC4 @ case 14 + .4byte _08178CDC @ case 15 + .4byte _08178D00 @ case 16 +_0817899C: + movs r0, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0xd + bl sub_08197F44 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + b _08178CE8 +_081789CA: + ldr r0, _081789F4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081789D8 + b _08178D10 +_081789D8: + ldr r1, _081789F8 + movs r0, #1 + str r0, [sp] + movs r0, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r1, _081789FC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08178CF4 + .align 2, 0 +_081789F4: .4byte gUnknown_2037C74 +_081789F8: .4byte gUnknown_85CD0DC +_081789FC: .4byte gUnknown_3002360 +_08178A00: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08178A0E + b _08178D10 +_08178A0E: + ldr r1, _08178A2C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _08178A30 + ldr r2, _08178A34 + adds r0, r2, #0 + strh r0, [r1] + bl sub_080092D0 + b _08178D10 + .align 2, 0 +_08178A2C: .4byte gUnknown_3002360 +_08178A30: .4byte gUnknown_202267E +_08178A34: .4byte 0x00005501 +_08178A38: + ldr r0, _08178A78 + ldr r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08178A46 + b _08178BB8 +_08178A46: + movs r0, #0x1c + ands r1, r0 + cmp r1, #4 + bhi _08178A50 + b _08178BB8 +_08178A50: + movs r0, #0x15 + bl sub_080A306C + ldr r1, _08178A7C + movs r0, #1 + str r0, [sp] + movs r0, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r1, _08178A80 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08178BB8 + .align 2, 0 +_08178A78: .4byte gUnknown_3003180 +_08178A7C: .4byte gUnknown_85CD0FE +_08178A80: .4byte gUnknown_3002360 +_08178A84: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08178A92 + b _08178D10 +_08178A92: + b _08178CEC +_08178A94: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bne _08178B88 + ldr r4, _08178AE8 + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08178AF0 + movs r0, #5 + bl sub_080A306C + bl sub_0800A1E4 + movs r0, #1 + movs r1, #1 + movs r2, #1 + movs r3, #0xd + bl sub_08197F44 + ldr r1, _08178AEC + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #3 + bl sub_08003528 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r4, r2 + b _08178CF4 + .align 2, 0 +_08178AE8: .4byte gUnknown_3002360 +_08178AEC: .4byte gUnknown_85CD123 +_08178AF0: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08178AFA + b _08178D10 +_08178AFA: + movs r0, #5 + bl sub_080A306C + bl sub_08009384 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r4, r0 + b _08178BD6 +_08178B0C: + bl sub_0800ADFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08178BB8 + ldr r0, _08178B58 + ldrb r0, [r0] + cmp r0, #0 + bne _08178B20 + b _08178D10 +_08178B20: + movs r0, #2 + movs r1, #2 + bl sub_08009C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08178B64 + bl sub_0800A7F8 + ldr r4, _08178B5C + adds r0, r4, #0 + movs r1, #1 + bl sub_081788F8 + movs r0, #1 + str r0, [sp] + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r0, _08178B60 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r0, r2 + b _08178BAA + .align 2, 0 +_08178B58: .4byte gUnknown_30031C4 +_08178B5C: .4byte gUnknown_2021C7C +_08178B60: .4byte gUnknown_3002360 +_08178B64: + bl sub_08178810 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08178B84 + ldr r1, _08178B80 + movs r0, #1 + str r0, [sp] + movs r0, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + b _08178CEC + .align 2, 0 +_08178B80: .4byte gUnknown_85CD133 +_08178B84: + bl sub_08009384 +_08178B88: + ldr r4, _08178BB0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081788F8 + movs r0, #1 + str r0, [sp] + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r0, _08178BB4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 +_08178BAA: + movs r1, #0xd + strb r1, [r0] + b _08178D10 + .align 2, 0 +_08178BB0: .4byte gUnknown_2021C7C +_08178BB4: .4byte gUnknown_3002360 +_08178BB8: + ldr r4, _08178BDC + ldrh r1, [r4, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08178BC6 + b _08178D10 +_08178BC6: + movs r0, #5 + bl sub_080A306C + bl sub_08009384 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r4, r2 +_08178BD6: + movs r0, #0xf + strb r0, [r1] + b _08178D10 + .align 2, 0 +_08178BDC: .4byte gUnknown_3002360 +_08178BE0: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08178BEE + b _08178D10 +_08178BEE: + b _08178CEC +_08178BF0: + bl sub_0800A114 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08178BFC + b _08178D10 +_08178BFC: + bl sub_0800A178 + ldr r1, _08178C0C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08178CF4 + .align 2, 0 +_08178C0C: .4byte gUnknown_3002360 +_08178C10: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r4, r0 + b _08178CF4 +_08178C18: + bl sub_0800A7F8 + ldr r1, _08178C28 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08178CF4 + .align 2, 0 +_08178C28: .4byte gUnknown_3002360 +_08178C2C: + ldr r0, _08178C64 + ldrb r6, [r0] + cmp r6, #0 + bne _08178D10 + ldr r5, _08178C68 + adds r0, r5, #0 + bl sub_081537DC + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r6, [sp, #4] + ldr r2, _08178C6C + add r0, sp, #4 + adds r1, r5, #0 + bl CpuSet + ldr r0, _08178C70 + adds r1, r4, #0 + bl sub_081788F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08178CEC + movs r0, #0 + bl sub_08153274 + b _08178CEC + .align 2, 0 +_08178C64: .4byte gUnknown_30031C4 +_08178C68: .4byte gUnknown_201C000 +_08178C6C: .4byte 0x050001F5 +_08178C70: .4byte gUnknown_2021C7C +_08178C74: + ldr r1, _08178C90 + movs r0, #1 + str r0, [sp] + movs r0, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r1, _08178C94 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08178CF4 + .align 2, 0 +_08178C90: .4byte gUnknown_2021C7C +_08178C94: .4byte gUnknown_3002360 +_08178C98: + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + bne _08178D10 + ldr r0, _08178CBC + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _08178CC0 + strb r2, [r0] + b _08178D10 + .align 2, 0 +_08178CBC: .4byte gUnknown_3002360 +_08178CC0: .4byte gUnknown_203B9C4 +_08178CC4: + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08178D10 + movs r0, #5 + bl sub_080A306C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r4, r2 + b _08178CF4 +_08178CDC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 +_08178CE8: + bl sub_080A139C +_08178CEC: + ldr r1, _08178CFC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_08178CF4: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08178D10 + .align 2, 0 +_08178CFC: .4byte gUnknown_3002360 +_08178D00: + ldr r0, _08178D6C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08178D10 + bl sub_080008F4 +_08178D10: + ldr r0, _08178D70 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08178D50 + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08178D50 + bl sub_08009384 + ldr r4, _08178D74 + adds r0, r4, #0 + movs r1, #1 + bl sub_081788F8 + movs r0, #1 + str r0, [sp] + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_08178D7C + ldr r0, _08178D78 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0xd + strb r1, [r0] +_08178D50: + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08178D6C: .4byte gUnknown_2037C74 +_08178D70: .4byte gUnknown_3003180 +_08178D74: .4byte gUnknown_2021C7C +_08178D78: .4byte gUnknown_3002360 + thumb_func_end sub_08178930 + + thumb_func_start sub_08178D7C +sub_08178D7C: @ 0x08178D7C + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0x1c + adds r5, r0, #0 + mov sl, r1 + adds r6, r2, #0 + ldr r4, [sp, #0x38] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0 + mov sb, r0 + movs r1, #1 + mov r8, r1 + add r0, sp, #0x14 + mov r1, r8 + strb r1, [r0] + adds r1, r0, #0 + movs r0, #2 + strb r0, [r1, #1] + movs r0, #3 + strb r0, [r1, #2] + adds r0, r1, #0 + ldrb r0, [r0] + lsls r1, r0, #4 + orrs r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + str r3, [sp, #0x18] + bl sub_08003B18 + mov r0, sb + str r0, [sp] + mov r1, r8 + str r1, [sp, #4] + add r0, sp, #0x14 + str r0, [sp, #8] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + mov r1, sl + str r1, [sp, #0x10] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + ldr r3, [sp, #0x18] + bl sub_08199B84 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08178D7C + + thumb_func_start sub_08178DFC +sub_08178DFC: @ 0x08178DFC + push {r4, r5, lr} + sub sp, #0x18 + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + lsls r3, r3, #0x18 + add r0, sp, #0x14 + movs r2, #0 + strb r2, [r0] + adds r1, r0, #0 + movs r0, #0xf + strb r0, [r1, #1] + movs r0, #3 + strb r0, [r1, #2] + ldr r0, _08178E44 + ldrb r0, [r0] + lsls r4, r4, #0x1b + lsrs r4, r4, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r2, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + str r5, [sp, #0x10] + movs r1, #1 + adds r2, r4, #0 + bl sub_08199B84 + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08178E44: .4byte gUnknown_203B9DA + thumb_func_end sub_08178DFC + + thumb_func_start sub_08178E48 +sub_08178E48: @ 0x08178E48 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08178E70 + bl sub_08000540 + ldr r0, _08178E74 + strh r4, [r0] + ldr r1, _08178E78 + movs r2, #0 + movs r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + ldr r0, _08178E7C + strb r2, [r0] + strb r2, [r0, #1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08178E70: .4byte sub_08178E94 +_08178E74: .4byte gUnknown_203B9C8 +_08178E78: .4byte gUnknown_203B9CA +_08178E7C: .4byte gUnknown_203B9DA + thumb_func_end sub_08178E48 + + thumb_func_start sub_08178E80 +sub_08178E80: @ 0x08178E80 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08178E80 + + thumb_func_start sub_08178E94 +sub_08178E94: @ 0x08178E94 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r0, _081790AC + movs r1, #0x87 + lsls r1, r1, #3 + adds r7, r0, r1 + ldrb r0, [r7] + cmp r0, #0 + beq _08178EB0 + cmp r0, #1 + bne _08178EB0 + b _08179114 +_08178EB0: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0xe + movs r1, #0 + bl sub_08001144 + movs r0, #0xc + movs r1, #0 + bl sub_08001144 + movs r0, #0xa + movs r1, #0 + bl sub_08001144 + movs r0, #8 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x18 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1a + movs r1, #0 + bl sub_08001144 + movs r0, #0x14 + movs r1, #0 + bl sub_08001144 + movs r0, #0x16 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + add r1, sp, #4 + movs r0, #0 + strh r0, [r1] + ldr r2, _081790B0 + str r1, [r2] + movs r1, #0xc0 + lsls r1, r1, #0x13 + str r1, [r2, #4] + ldr r0, _081790B4 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r3, #0 + mov r8, r3 + str r3, [sp, #8] + add r4, sp, #8 + str r4, [r2] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r2, #4] + ldr r0, _081790B8 + str r0, [r2, #8] + ldr r0, [r2, #8] + add r0, sp, #4 + mov r3, r8 + strh r3, [r0] + str r0, [r2] + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r2, #4] + ldr r0, _081790BC + str r0, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _081790C0 + bl LZ77UnCompVram + ldr r0, _081790C4 + ldr r1, _081790C8 + bl LZ77UnCompVram + ldr r0, _081790CC + ldr r1, _081790D0 + bl LZ77UnCompVram + ldr r0, _081790D4 + ldr r1, _081790D8 + bl LZ77UnCompVram + movs r0, #0 + bl sub_080017D4 + ldr r1, _081790DC + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r5, _081790E0 + movs r0, #0 + adds r1, r5, #0 + bl sub_0800212C + mov r0, r8 + str r0, [sp, #8] + ldr r2, _081790E4 + adds r0, r4, #0 + adds r1, r5, #0 + bl CpuSet + ldr r1, _081790E8 + movs r2, #0x90 + lsls r2, r2, #1 + movs r6, #0x85 + lsls r6, r6, #2 + movs r0, #0 + adds r3, r6, #0 + bl sub_0800195C + ldr r0, _081790EC + bl sub_08003090 + ldr r0, _081790F0 + bl sub_080033A8 + ldr r4, _081790F4 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0x80 + lsls r1, r1, #4 + adds r2, r5, r1 + movs r1, #7 + bl sub_08003F78 + ldr r0, _081790F8 + bl sub_080033A8 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + movs r3, #0xe8 + lsls r3, r3, #5 + adds r5, r5, r3 + movs r1, #7 + adds r2, r5, #0 + bl sub_08003F78 + bl sub_08004480 + bl sub_0800668C + bl sub_080A8818 + bl sub_080A133C + ldr r0, _081790FC + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _08179100 + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08179104 + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08179108 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldrb r0, [r4] + movs r1, #0 + adds r2, r6, #0 + movs r3, #0xe + bl sub_08197F44 + ldrb r0, [r4, #1] + movs r1, #0 + adds r2, r6, #0 + movs r3, #0xe + bl sub_08197F44 + ldrb r0, [r4, #1] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #1] + movs r1, #2 + bl sub_08003528 + ldrb r0, [r4] + movs r1, #1 + bl sub_08003528 + ldr r0, _0817910C + movs r1, #1 + movs r2, #0 + bl sub_08178DFC + movs r0, #1 + rsbs r0, r0, #0 + mov r1, r8 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _08179110 + bl sub_080006F0 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + b _0817912A + .align 2, 0 +_081790AC: .4byte gUnknown_3002360 +_081790B0: .4byte 0x040000D4 +_081790B4: .4byte 0x8100C000 +_081790B8: .4byte 0x85000100 +_081790BC: .4byte 0x81000200 +_081790C0: .4byte gUnknown_858FC14 +_081790C4: .4byte gUnknown_858F890 +_081790C8: .4byte 0x06007000 +_081790CC: .4byte gUnknown_858FA1C +_081790D0: .4byte 0x06007800 +_081790D4: .4byte gUnknown_85CD284 +_081790D8: .4byte 0x06010020 +_081790DC: .4byte gUnknown_85CD228 +_081790E0: .4byte gUnknown_201E000 +_081790E4: .4byte 0x05000200 +_081790E8: .4byte gUnknown_84E6CE0 +_081790EC: .4byte gUnknown_85CD234 +_081790F0: .4byte gUnknown_85CD23C +_081790F4: .4byte gUnknown_203B9DA +_081790F8: .4byte gUnknown_85CD244 +_081790FC: .4byte gUnknown_858F810 +_08179100: .4byte gUnknown_85CD264 +_08179104: .4byte gUnknown_84E8360 +_08179108: .4byte gUnknown_85D7B04 +_0817910C: .4byte gUnknown_85CBD6B +_08179110: .4byte sub_08178E80 +_08179114: + bl sub_080A12E4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0817912A + ldr r0, _08179138 + bl sub_08000540 + ldr r0, _0817913C + bl sub_080006F0 +_0817912A: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08179138: .4byte sub_08179140 +_0817913C: .4byte sub_0817930C + thumb_func_end sub_08178E94 + + thumb_func_start sub_08179140 +sub_08179140: @ 0x08179140 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r0, _081791B8 + movs r1, #1 + strh r1, [r0] + ldr r1, _081791BC + ldr r0, [r1] + cmp r0, #0 + beq _081791A4 + adds r6, r1, #0 +_08179154: + ldr r0, [r6] + bl sub_08179464 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08179200 + ldr r4, _081791C0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081791C4 + movs r1, #1 + movs r2, #0 + bl sub_08178DFC + ldr r0, _081791C8 + ldrb r0, [r0] + bl sub_08153154 + ldr r0, [r6] + cmp r0, #0 + beq _08179194 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081791CC + movs r1, #1 + movs r2, #0 + bl sub_08178DFC +_08179194: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r6] + cmp r0, #0 + beq _081791A4 + cmp r5, #2 + bls _08179154 +_081791A4: + cmp r5, #3 + bne _081791D4 + ldr r0, _081791C0 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081791D0 + b _081791E8 + .align 2, 0 +_081791B8: .4byte gUnknown_203B9CA +_081791BC: .4byte gUnknown_3005F3C +_081791C0: .4byte gUnknown_203B9DA +_081791C4: .4byte gUnknown_85CBE20 +_081791C8: .4byte gUnknown_203B9C8 +_081791CC: .4byte gUnknown_85CBD6B +_081791D0: .4byte gUnknown_85CBDB2 +_081791D4: + ldr r0, _081791F4 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081791F8 + ldr r0, [r0] + cmp r0, #0 + bne _08179228 + ldr r0, _081791FC +_081791E8: + movs r1, #1 + movs r2, #0 + bl sub_08178DFC + b _08179232 + .align 2, 0 +_081791F4: .4byte gUnknown_203B9DA +_081791F8: .4byte gUnknown_3005F54 +_081791FC: .4byte gUnknown_85CBE50 +_08179200: + ldr r0, _0817921C + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _08179220 + movs r1, #1 + movs r2, #0 + bl sub_08178DFC + ldr r0, _08179224 + bl sub_08000540 + b _08179238 + .align 2, 0 +_0817921C: .4byte gUnknown_203B9DA +_08179220: .4byte gUnknown_85CBDB2 +_08179224: .4byte sub_08179248 +_08179228: + ldr r0, _08179240 + movs r1, #1 + movs r2, #0 + bl sub_08178DFC +_08179232: + ldr r0, _08179244 + bl sub_08000540 +_08179238: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08179240: .4byte gUnknown_85CBE90 +_08179244: .4byte sub_08179298 + thumb_func_end sub_08179140 + + thumb_func_start sub_08179248 +sub_08179248: @ 0x08179248 + push {lr} + ldr r1, _08179280 + movs r0, #0 + strh r0, [r1] + ldr r0, _08179284 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0817927C + ldr r0, _08179288 + ldrb r0, [r0] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _0817928C + movs r1, #1 + movs r2, #0 + bl sub_08178DFC + ldr r0, _08179290 + bl sub_080006F0 + ldr r0, _08179294 + bl sub_08000540 +_0817927C: + pop {r0} + bx r0 + .align 2, 0 +_08179280: .4byte gUnknown_203B9CA +_08179284: .4byte gUnknown_3002360 +_08179288: .4byte gUnknown_203B9DA +_0817928C: .4byte gUnknown_85CBDF7 +_08179290: .4byte sub_08178E80 +_08179294: .4byte sub_08179298 + thumb_func_end sub_08179248 + + thumb_func_start sub_08179298 +sub_08179298: @ 0x08179298 + push {lr} + sub sp, #4 + ldr r0, _081792D0 + movs r2, #0 + strh r2, [r0] + ldr r0, _081792D4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081792C8 + movs r0, #1 + rsbs r0, r0, #0 + str r2, [sp] + movs r1, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081792D8 + bl sub_080006F0 + ldr r0, _081792DC + bl sub_08000540 +_081792C8: + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081792D0: .4byte gUnknown_203B9CA +_081792D4: .4byte gUnknown_3002360 +_081792D8: .4byte sub_08178E80 +_081792DC: .4byte sub_081792E0 + thumb_func_end sub_08179298 + + thumb_func_start sub_081792E0 +sub_081792E0: @ 0x081792E0 + push {r4, r5, lr} + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08179306 + ldr r5, _081792FC + ldr r0, [r5] + cmp r0, #0 + bne _08179300 + bl sub_080008F4 + b _08179306 + .align 2, 0 +_081792FC: .4byte gUnknown_3005F54 +_08179300: + bl sub_08000540 + str r4, [r5] +_08179306: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081792E0 + + thumb_func_start sub_0817930C +sub_0817930C: @ 0x0817930C + push {r4, r5, lr} + ldr r5, _0817937C + ldr r0, [r5, #0x24] + lsrs r4, r0, #3 + movs r0, #7 + ands r4, r0 + ldr r0, _08179380 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r5, #0x38] + str r1, [r5, #0x3c] + ldrh r1, [r5, #0x3a] + ldr r0, _08179384 + ands r0, r1 + movs r1, #0x70 + orrs r0, r1 + strh r0, [r5, #0x3a] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #0x48 + strb r0, [r1] + ldr r0, _08179388 + ldrh r0, [r0] + cmp r0, #0 + beq _08179394 + ldr r3, _0817938C + lsls r2, r4, #1 + adds r2, r2, r4 + adds r0, r2, r3 + ldrb r4, [r0] + ldrh r1, [r5, #0x3c] + ldr r0, _08179390 + ands r0, r1 + orrs r0, r4 + strh r0, [r5, #0x3c] + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r1, r1, #4 + adds r3, #1 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #3 + orrs r1, r0 + adds r3, r5, #0 + adds r3, #0x3b + movs r0, #0x1f + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _081793A0 + .align 2, 0 +_0817937C: .4byte gUnknown_3002360 +_08179380: .4byte gUnknown_85CD220 +_08179384: .4byte 0xFFFFFE00 +_08179388: .4byte gUnknown_203B9CA +_0817938C: .4byte gUnknown_85CD24C +_08179390: .4byte 0xFFFFFC00 +_08179394: + ldrh r0, [r5, #0x3c] + ldr r1, _081793C0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strh r1, [r5, #0x3c] +_081793A0: + ldr r0, _081793C4 + movs r1, #0xe0 + lsls r1, r1, #0x13 + movs r2, #1 + bl CpuFastSet + ldr r1, _081793C8 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _081793B8 + subs r0, #1 + strh r0, [r1, #2] +_081793B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081793C0: .4byte 0xFFFFFC00 +_081793C4: .4byte gUnknown_3002398 +_081793C8: .4byte gUnknown_203B9CA + thumb_func_end sub_0817930C + + thumb_func_start sub_081793CC +sub_081793CC: @ 0x081793CC + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _081793F0 + movs r3, #0x80 + lsls r3, r3, #5 + movs r1, #0 + adds r2, r4, #0 + bl ReadFlash + movs r1, #0 + ldr r2, _081793F4 +_081793E4: + ldr r0, [r4] + cmp r0, #0 + beq _081793F8 + movs r0, #1 + b _08179406 + .align 2, 0 +_081793F0: .4byte gUnknown_203A888 +_081793F4: .4byte 0x000003FF +_081793F8: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r4, #4 + cmp r1, r2 + bls _081793E4 + movs r0, #0 +_08179406: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081793CC + + thumb_func_start sub_0817940C +sub_0817940C: @ 0x0817940C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #0 + ldr r1, _0817945C + mov r8, r1 + ldr r7, _08179460 +_0817941E: + movs r4, #0 + adds r5, r0, #1 +_08179422: + ldr r3, [r7] + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl _call_via_r3 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r8 + bls _08179422 + adds r0, r6, #0 + bl sub_081793CC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + cmp r1, #0 + beq _0817944E + cmp r0, #0x81 + bls _0817941E +_0817944E: + adds r0, r1, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0817945C: .4byte 0x00000FFF +_08179460: .4byte gUnknown_30075F4 + thumb_func_end sub_0817940C + + thumb_func_start sub_08179464 +sub_08179464: @ 0x08179464 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 +_0817946A: + movs r4, #1 + lsls r4, r6 + adds r0, r5, #0 + ands r0, r4 + cmp r0, #0 + beq _08179484 + adds r0, r6, #0 + bl sub_0817940C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08179484 + bics r5, r4 +_08179484: + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0x1f + bls _0817946A + cmp r5, #0 + beq _08179496 + movs r0, #1 + b _08179498 +_08179496: + movs r0, #0 +_08179498: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08179464 + + thumb_func_start sub_081794A0 +sub_081794A0: @ 0x081794A0 + push {lr} + ldr r0, _081794D4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081794EC + ldr r0, _081794D8 + ldr r2, [r0] + ldrh r1, [r2, #4] + ldr r0, _081794DC + cmp r1, r0 + bne _081794EC + ldr r1, [r2] + ldr r0, _081794E0 + cmp r1, r0 + beq _081794CE + ldr r0, _081794E4 + cmp r1, r0 + beq _081794CE + ldr r0, _081794E8 + cmp r1, r0 + bne _081794EC +_081794CE: + movs r0, #1 + b _081794EE + .align 2, 0 +_081794D4: .4byte 0x000008AF +_081794D8: .4byte gUnknown_3005AEC +_081794DC: .4byte 0x00004718 +_081794E0: .4byte 0x0003000A +_081794E4: .4byte 0x00030009 +_081794E8: .4byte 0x0003000B +_081794EC: + movs r0, #0 +_081794EE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081794A0 + + thumb_func_start sub_081794F4 +sub_081794F4: @ 0x081794F4 + push {lr} + ldr r2, _0817954C + movs r0, #0x10 + movs r1, #8 + bl sub_08087C54 + ldr r2, _08179550 + movs r0, #0x11 + movs r1, #8 + bl sub_08087C54 + movs r2, #0x8b + lsls r2, r2, #2 + movs r0, #0x12 + movs r1, #8 + bl sub_08087C54 + ldr r2, _08179554 + movs r0, #0x10 + movs r1, #9 + bl sub_08087C54 + ldr r2, _08179558 + movs r0, #0x11 + movs r1, #9 + bl sub_08087C54 + ldr r2, _0817955C + movs r0, #0x12 + movs r1, #9 + bl sub_08087C54 + bl sub_08089598 + movs r0, #0x14 + bl sub_080A306C + ldr r0, _08179560 + bl sub_0809D018 + bl sub_080987E8 + pop {r0} + bx r0 + .align 2, 0 +_0817954C: .4byte 0x0000022A +_08179550: .4byte 0x0000022B +_08179554: .4byte 0x00000E32 +_08179558: .4byte 0x00000233 +_0817955C: .4byte 0x00000E34 +_08179560: .4byte 0x000008AF + thumb_func_end sub_081794F4 + + thumb_func_start sub_08179564 +sub_08179564: @ 0x08179564 + push {r4, lr} + ldr r4, _081795A0 + adds r0, r4, #0 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + movs r1, #0x9d + lsls r1, r1, #1 + cmp r0, r1 + bne _081795AC + bl sub_0806B004 + ldr r0, _081795A4 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + adds r1, r4, #0 + subs r1, #0x64 + adds r0, r0, r1 + movs r1, #0x41 + movs r2, #0 + bl sub_0806A058 + ldr r1, _081795A8 + cmp r0, r1 + bne _081795AC + movs r0, #1 + b _081795AE + .align 2, 0 +_081795A0: .4byte gUnknown_2024190 +_081795A4: .4byte gUnknown_202418D +_081795A8: .4byte 0x0000017D +_081795AC: + movs r0, #0 +_081795AE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08179564 + + thumb_func_start sub_081795B4 +sub_081795B4: @ 0x081795B4 + bx lr + .align 2, 0 + thumb_func_end sub_081795B4 + + thumb_func_start sub_081795B8 +sub_081795B8: @ 0x081795B8 + push {lr} + ldr r0, _081795EC + movs r1, #9 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081795F0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + movs r0, #2 + strh r0, [r1, #0x10] + movs r0, #5 + strh r0, [r1, #0x12] + movs r0, #0x32 + strh r0, [r1, #0x14] + movs r0, #0 + bl sub_08089C24 + pop {r0} + bx r0 + .align 2, 0 +_081795EC: .4byte sub_08179630 +_081795F0: .4byte gUnknown_3005B60 + thumb_func_end sub_081795B8 + + thumb_func_start sub_081795F4 +sub_081795F4: @ 0x081795F4 + push {lr} + ldr r0, _08179628 + movs r1, #9 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817962C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + movs r0, #3 + strh r0, [r1, #0x10] + movs r0, #5 + strh r0, [r1, #0x12] + movs r0, #2 + strh r0, [r1, #0x14] + movs r0, #0 + bl sub_08089C24 + pop {r0} + bx r0 + .align 2, 0 +_08179628: .4byte sub_08179630 +_0817962C: .4byte gUnknown_3005B60 + thumb_func_end sub_081795F4 + + thumb_func_start sub_08179630 +sub_08179630: @ 0x08179630 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08179690 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r1, #0xa + ldrsh r0, [r4, r1] + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, #0 + bne _08179688 + strh r0, [r4, #0xa] + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0x10] + rsbs r0, r0, #0 + strh r0, [r4, #0x10] + movs r0, #0x10 + ldrsh r1, [r4, r0] + movs r0, #0 + bl sub_08089C30 + movs r2, #0xc + ldrsh r1, [r4, r2] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08179688 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 + bl sub_08089C48 +_08179688: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08179690: .4byte gUnknown_3005B60 + thumb_func_end sub_08179630 + + thumb_func_start sub_08179694 +sub_08179694: @ 0x08179694 + push {lr} + movs r0, #0x8b + lsls r0, r0, #4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _081796E4 + ldr r0, _081796D0 + ldr r3, [r0] + ldrh r1, [r3, #4] + movs r0, #0xc3 + lsls r0, r0, #3 + cmp r1, r0 + bne _081796E4 + ldr r1, [r3] + ldr r0, _081796D4 + cmp r1, r0 + beq _081796C8 + ldr r0, _081796D8 + cmp r1, r0 + beq _081796C8 + ldr r0, _081796DC + cmp r1, r0 + bne _081796E4 +_081796C8: + ldr r0, _081796E0 + strb r2, [r0] + movs r0, #1 + b _081796E6 + .align 2, 0 +_081796D0: .4byte gUnknown_3005AEC +_081796D4: .4byte 0x00170006 +_081796D8: .4byte 0x00170005 +_081796DC: .4byte 0x00170007 +_081796E0: .4byte gUnknown_203B9E0 +_081796E4: + movs r0, #0 +_081796E6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08179694 + + thumb_func_start sub_081796EC +sub_081796EC: @ 0x081796EC + push {lr} + bl sub_081B1024 + ldr r1, _08179704 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + movs r0, #0x3c + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_08179704: .4byte gUnknown_20388A8 + thumb_func_end sub_081796EC + + thumb_func_start sub_08179708 +sub_08179708: @ 0x08179708 + push {lr} + movs r0, #0x3c + bl sub_080B5568 + bl sub_08179718 + pop {r0} + bx r0 + thumb_func_end sub_08179708 + + thumb_func_start sub_08179718 +sub_08179718: @ 0x08179718 + push {lr} + ldr r2, _08179774 + movs r0, #0xe + movs r1, #0x1a + bl sub_08087C54 + ldr r2, _08179778 + movs r0, #0xf + movs r1, #0x1a + bl sub_08087C54 + movs r2, #0x8b + lsls r2, r2, #2 + movs r0, #0x10 + movs r1, #0x1a + bl sub_08087C54 + ldr r2, _0817977C + movs r0, #0xe + movs r1, #0x1b + bl sub_08087C54 + ldr r2, _08179780 + movs r0, #0xf + movs r1, #0x1b + bl sub_08087C54 + ldr r2, _08179784 + movs r0, #0x10 + movs r1, #0x1b + bl sub_08087C54 + bl sub_08089598 + movs r0, #0x14 + bl sub_080A306C + movs r0, #0x8b + lsls r0, r0, #4 + bl sub_0809D018 + bl sub_080987E8 + pop {r0} + bx r0 + .align 2, 0 +_08179774: .4byte 0x0000022A +_08179778: .4byte 0x0000022B +_0817977C: .4byte 0x00000E32 +_08179780: .4byte 0x00000233 +_08179784: .4byte 0x00000E34 + thumb_func_end sub_08179718 + + thumb_func_start sub_08179788 +sub_08179788: @ 0x08179788 + push {lr} + ldr r0, _081797B4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081797C8 + ldr r0, _081797B8 + ldr r2, [r0] + ldrh r1, [r2, #4] + ldr r0, _081797BC + cmp r1, r0 + bne _081797C8 + ldr r1, [r2] + ldr r0, _081797C0 + cmp r1, r0 + bne _081797C8 + ldr r1, _081797C4 + movs r0, #1 + strb r0, [r1] + movs r0, #1 + b _081797CA + .align 2, 0 +_081797B4: .4byte 0x000008B2 +_081797B8: .4byte gUnknown_3005AEC +_081797BC: .4byte 0x00004418 +_081797C0: .4byte 0x00190008 +_081797C4: .4byte gUnknown_203B9E0 +_081797C8: + movs r0, #0 +_081797CA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08179788 + + thumb_func_start sub_081797D0 +sub_081797D0: @ 0x081797D0 + push {lr} + bl sub_081B1024 + ldr r1, _081797E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + movs r0, #0x3c + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_081797E8: .4byte gUnknown_20388A8 + thumb_func_end sub_081797D0 + + thumb_func_start sub_081797EC +sub_081797EC: @ 0x081797EC + push {lr} + movs r0, #0x3c + bl sub_080B5568 + bl sub_081797FC + pop {r0} + bx r0 + thumb_func_end sub_081797EC + + thumb_func_start sub_081797FC +sub_081797FC: @ 0x081797FC + push {lr} + ldr r2, _08179854 + movs r0, #0xe + movs r1, #0x1a + bl sub_08087C54 + ldr r2, _08179858 + movs r0, #0xf + movs r1, #0x1a + bl sub_08087C54 + movs r2, #0x8b + lsls r2, r2, #2 + movs r0, #0x10 + movs r1, #0x1a + bl sub_08087C54 + ldr r2, _0817985C + movs r0, #0xe + movs r1, #0x1b + bl sub_08087C54 + ldr r2, _08179860 + movs r0, #0xf + movs r1, #0x1b + bl sub_08087C54 + ldr r2, _08179864 + movs r0, #0x10 + movs r1, #0x1b + bl sub_08087C54 + bl sub_08089598 + movs r0, #0x14 + bl sub_080A306C + ldr r0, _08179868 + bl sub_0809D018 + bl sub_080987E8 + pop {r0} + bx r0 + .align 2, 0 +_08179854: .4byte 0x0000022A +_08179858: .4byte 0x0000022B +_0817985C: .4byte 0x00000E32 +_08179860: .4byte 0x00000233 +_08179864: .4byte 0x00000E34 +_08179868: .4byte 0x000008B2 + thumb_func_end sub_081797FC + + thumb_func_start sub_0817986C +sub_0817986C: @ 0x0817986C + bx lr + .align 2, 0 + thumb_func_end sub_0817986C + + thumb_func_start sub_08179870 +sub_08179870: @ 0x08179870 + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _08179890 + ldrb r0, [r0] + cmp r0, #1 + bne _0817989C + ldr r1, _08179894 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, _08179898 + b _081798A8 + .align 2, 0 +_08179890: .4byte gUnknown_203B9E0 +_08179894: .4byte gUnknown_3005B60 +_08179898: .4byte sub_081797EC +_0817989C: + ldr r1, _081798B4 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, _081798B8 +_081798A8: + lsrs r1, r2, #0x10 + strh r1, [r0, #0x18] + strh r2, [r0, #0x1a] + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081798B4: .4byte gUnknown_3005B60 +_081798B8: .4byte sub_08179708 + thumb_func_end sub_08179870 + + thumb_func_start sub_081798BC +sub_081798BC: @ 0x081798BC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _08179900 + ldr r0, [r4] + ldrh r1, [r0, #4] + ldr r0, _08179904 + cmp r1, r0 + beq _081798D2 + b _08179A12 +_081798D2: + ldr r0, _08179908 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081798E0 + b _08179A12 +_081798E0: + movs r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081798EE + b _08179A12 +_081798EE: + movs r0, #3 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08179910 + b _08179A12 + .align 2, 0 +_08179900: .4byte gUnknown_3005AEC +_08179904: .4byte 0x00004318 +_08179908: .4byte 0x000008B1 +_0817990C: + movs r0, #1 + b _08179A14 +_08179910: + movs r5, #0 + mov r8, r4 + ldr r4, _0817995C + adds r0, r4, #1 + mov ip, r0 + ldr r6, _08179960 + ldr r1, _08179964 + mov sb, r1 +_08179920: + lsls r0, r5, #1 + adds r1, r0, r4 + add r0, ip + ldrb r3, [r0] + mov r7, r8 + ldr r2, [r7] + movs r7, #0 + ldrsh r0, [r2, r7] + ldrb r1, [r1] + cmp r0, r1 + bne _081799FC + movs r1, #2 + ldrsh r0, [r2, r1] + cmp r0, r3 + bne _081799FC + cmp r5, #0xf + bhi _08179968 + adds r0, r6, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r5 + orrs r1, r0 + lsrs r1, r1, #0x10 + adds r0, r6, #0 + bl sub_0809CF88 + b _081799A8 + .align 2, 0 +_0817995C: .4byte gUnknown_85CD314 +_08179960: .4byte 0x0000403B +_08179964: .4byte 0x0000403C +_08179968: + cmp r5, #0x1f + bhi _0817998A + mov r0, sb + bl sub_0809CF6C + lsls r0, r0, #0x10 + adds r2, r5, #0 + subs r2, #0x10 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r2 + orrs r1, r0 + lsrs r1, r1, #0x10 + mov r0, sb + bl sub_0809CF88 + b _081799A8 +_0817998A: + ldr r4, _081799E4 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + adds r2, r5, #0 + subs r2, #0x20 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r2 + orrs r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0809CF88 +_081799A8: + ldr r0, _081799E8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _081799EC + cmp r4, r0 + bne _08179A12 + ldr r0, _081799F0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r4 + bne _08179A12 + ldr r0, _081799E4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf + bne _08179A12 + ldr r0, _081799F4 + ldr r0, [r0] + ldr r1, [r0] + ldr r0, _081799F8 + cmp r1, r0 + beq _0817990C + b _08179A12 + .align 2, 0 +_081799E4: .4byte 0x0000403D +_081799E8: .4byte 0x0000403B +_081799EC: .4byte 0x0000FFFF +_081799F0: .4byte 0x0000403C +_081799F4: .4byte gUnknown_3005AEC +_081799F8: .4byte 0x00150008 +_081799FC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x23 + bls _08179920 + movs r0, #3 + bl sub_0809D018 + movs r0, #2 + bl sub_0809D040 +_08179A12: + movs r0, #0 +_08179A14: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081798BC + + thumb_func_start sub_08179A20 +sub_08179A20: @ 0x08179A20 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08179A20 + + thumb_func_start sub_08179A3C +sub_08179A3C: @ 0x08179A3C + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08179A3C + + thumb_func_start sub_08179A50 +sub_08179A50: @ 0x08179A50 + push {r4, lr} + sub sp, #4 + ldr r0, _08179A70 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xd + bls _08179A64 + b _08179C04 +_08179A64: + lsls r0, r0, #2 + ldr r1, _08179A74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08179A70: .4byte gUnknown_3002360 +_08179A74: .4byte _08179A78 +_08179A78: @ jump table + .4byte _08179AB0 @ case 0 + .4byte _08179AD8 @ case 1 + .4byte _08179AEC @ case 2 + .4byte _08179B00 @ case 3 + .4byte _08179B06 @ case 4 + .4byte _08179B18 @ case 5 + .4byte _08179B1E @ case 6 + .4byte _08179B30 @ case 7 + .4byte _08179B50 @ case 8 + .4byte _08179B68 @ case 9 + .4byte _08179B94 @ case 10 + .4byte _08179BB0 @ case 11 + .4byte _08179BB6 @ case 12 + .4byte _08179BD0 @ case 13 +_08179AB0: + ldr r4, _08179ACC + ldr r0, _08179AD0 + bl sub_08000BDC + str r0, [r4] + bl sub_08121E58 + bl sub_08199640 + ldr r1, _08179AD4 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179ACC: .4byte gUnknown_203B9E4 +_08179AD0: .4byte 0x00001084 +_08179AD4: .4byte gUnknown_3002360 +_08179AD8: + bl sub_080A133C + ldr r2, _08179AE8 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + b _08179BE8 + .align 2, 0 +_08179AE8: .4byte gUnknown_2037C74 +_08179AEC: + bl sub_0800668C + ldr r1, _08179AFC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179AFC: .4byte gUnknown_3002360 +_08179B00: + bl sub_08008424 + b _08179BEA +_08179B06: + bl sub_0805EBD8 + ldr r1, _08179B14 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179B14: .4byte gUnknown_3002360 +_08179B18: + bl sub_08179C54 + b _08179BEA +_08179B1E: + bl sub_08179E64 + ldr r1, _08179B2C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179B2C: .4byte gUnknown_3002360 +_08179B30: + ldr r0, _08179B48 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08179B4C + adds r0, r0, r1 + bl sub_08179CAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08179C1C + b _08179BEA + .align 2, 0 +_08179B48: .4byte gUnknown_203B968 +_08179B4C: .4byte gUnknown_2024190 +_08179B50: + bl sub_0817A35C + ldr r1, _08179B60 + ldr r1, [r1] + ldr r2, _08179B64 + adds r1, r1, r2 + strb r0, [r1] + b _08179BEA + .align 2, 0 +_08179B60: .4byte gUnknown_203B9E4 +_08179B64: .4byte 0x0000105E +_08179B68: + ldr r0, _08179B84 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08179B88 + adds r0, r0, r1 + bl sub_0817A210 + ldr r1, _08179B8C + ldr r1, [r1] + ldr r2, _08179B90 + adds r1, r1, r2 + strb r0, [r1] + b _08179BEA + .align 2, 0 +_08179B84: .4byte gUnknown_203B968 +_08179B88: .4byte gUnknown_2024190 +_08179B8C: .4byte gUnknown_203B9E4 +_08179B90: .4byte 0x0000105D +_08179B94: + movs r0, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + ldr r1, _08179BAC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179BAC: .4byte gUnknown_3002360 +_08179BB0: + bl sub_0817A020 + b _08179BEA +_08179BB6: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r1, _08179BCC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _08179BF2 + .align 2, 0 +_08179BCC: .4byte gUnknown_3002360 +_08179BD0: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _08179BFC + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 +_08179BE8: + strb r0, [r2, #8] +_08179BEA: + ldr r1, _08179C00 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_08179BF2: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08179C1C + .align 2, 0 +_08179BFC: .4byte gUnknown_2037C74 +_08179C00: .4byte gUnknown_3002360 +_08179C04: + ldr r0, _08179C14 + bl sub_080006F0 + ldr r0, _08179C18 + bl sub_08000540 + movs r0, #1 + b _08179C1E + .align 2, 0 +_08179C14: .4byte sub_08179A3C +_08179C18: .4byte sub_08179A20 +_08179C1C: + movs r0, #0 +_08179C1E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08179A50 + + thumb_func_start sub_08179C28 +sub_08179C28: @ 0x08179C28 + push {lr} +_08179C2A: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08179C4E + bl sub_08179A50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08179C4E + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08179C2A +_08179C4E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08179C28 + + thumb_func_start sub_08179C54 +sub_08179C54: @ 0x08179C54 + push {lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _08179CA4 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + ldr r0, _08179CA8 + ldr r1, [r0] + adds r1, #0x48 + movs r0, #1 + bl sub_0800212C + bl sub_08121E00 + movs r0, #1 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_08179CA4: .4byte gUnknown_85CD9F0 +_08179CA8: .4byte gUnknown_203B9E4 + thumb_func_end sub_08179C54 + + thumb_func_start sub_08179CAC +sub_08179CAC: @ 0x08179CAC + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + ldr r0, _08179CD0 + ldr r0, [r0] + ldr r1, _08179CD4 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #8 + bls _08179CC4 + b _08179E58 +_08179CC4: + lsls r0, r0, #2 + ldr r1, _08179CD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08179CD0: .4byte gUnknown_203B9E4 +_08179CD4: .4byte 0x0000107E +_08179CD8: .4byte _08179CDC +_08179CDC: @ jump table + .4byte _08179D00 @ case 0 + .4byte _08179D3C @ case 1 + .4byte _08179D7C @ case 2 + .4byte _08179D90 @ case 3 + .4byte _08179DA4 @ case 4 + .4byte _08179DB8 @ case 5 + .4byte _08179DD8 @ case 6 + .4byte _08179DFC @ case 7 + .4byte _08179E30 @ case 8 +_08179D00: + adds r0, r6, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r6, #0 + movs r1, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r0, r5, #3 + ldr r1, _08179D30 + adds r0, r0, r1 + ldr r1, _08179D34 + ldr r1, [r1] + ldr r1, [r1, #8] + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_08034954 + ldr r0, _08179D38 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179D30: .4byte gUnknown_82DDA1C +_08179D34: .4byte gUnknown_2024178 +_08179D38: .4byte gUnknown_203B9E4 +_08179D3C: + adds r0, r6, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r6, #0 + movs r1, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r0, r6, #0 + movs r1, #1 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_0806E258 + adds r4, r0, #0 + bl sub_080343E4 + ldrh r0, [r4, #4] + movs r1, #1 + bl sub_08069BA8 + ldr r0, _08179D78 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179D78: .4byte gUnknown_203B9E4 +_08179D7C: + ldr r0, _08179D88 + bl sub_08034388 + ldr r0, _08179D8C + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179D88: .4byte gUnknown_8592140 +_08179D8C: .4byte gUnknown_203B9E4 +_08179D90: + ldr r0, _08179D9C + bl sub_080343E4 + ldr r0, _08179DA0 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179D9C: .4byte gUnknown_8592148 +_08179DA0: .4byte gUnknown_203B9E4 +_08179DA4: + ldr r0, _08179DB0 + bl sub_08034388 + ldr r0, _08179DB4 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179DB0: .4byte gUnknown_85CDB40 +_08179DB4: .4byte gUnknown_203B9E4 +_08179DB8: + ldr r0, _08179DCC + ldrb r0, [r0] + bl sub_08179EA4 + ldr r0, _08179DD0 + bl sub_080343E4 + ldr r0, _08179DD4 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179DCC: .4byte gUnknown_203CB48 +_08179DD0: .4byte gUnknown_203B9E8 +_08179DD4: .4byte gUnknown_203B9E4 +_08179DD8: + bl sub_081996B8 + ldr r1, _08179DF4 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _08179DF8 + ldr r1, [r0] + b _08179E16 + .align 2, 0 +_08179DF4: .4byte gUnknown_8D7C4E4 +_08179DF8: .4byte gUnknown_203B9E4 +_08179DFC: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08179E58 + ldr r0, _08179E24 + ldr r4, _08179E28 + ldr r1, [r4] + adds r1, #0x48 + bl sub_08034370 + ldr r1, [r4] +_08179E16: + ldr r0, _08179E2C + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _08179E58 + .align 2, 0 +_08179E24: .4byte gUnknown_8D9BC90 +_08179E28: .4byte gUnknown_203B9E4 +_08179E2C: .4byte 0x0000107E +_08179E30: + ldr r0, _08179E4C + movs r1, #0x20 + movs r2, #0x60 + bl sub_080A11BC + ldr r0, _08179E50 + ldr r0, [r0] + ldr r1, _08179E54 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + movs r0, #1 + b _08179E5A + .align 2, 0 +_08179E4C: .4byte gUnknown_8D7CA90 +_08179E50: .4byte gUnknown_203B9E4 +_08179E54: .4byte 0x0000107E +_08179E58: + movs r0, #0 +_08179E5A: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08179CAC + + thumb_func_start sub_08179E64 +sub_08179E64: @ 0x08179E64 + push {lr} + ldr r0, _08179E9C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + ldr r0, _08179EA0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 +_08179E9C: .4byte gUnknown_85CD9F8 +_08179EA0: .4byte gUnknown_85D7B04 + thumb_func_end sub_08179E64 + + thumb_func_start sub_08179EA4 +sub_08179EA4: @ 0x08179EA4 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _08179ED4 + lsrs r0, r0, #0x15 + ldr r2, _08179ED8 + adds r0, r0, r2 + ldr r1, [r1] + adds r1, r1, r0 + adds r0, r1, #0 + movs r1, #0 + bl sub_0813700C + lsls r0, r0, #0x18 + ldr r2, _08179EDC + ldr r1, _08179EE0 + lsrs r0, r0, #0x16 + subs r0, #4 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r0, _08179EE4 + strh r0, [r2, #4] + pop {r0} + bx r0 + .align 2, 0 +_08179ED4: .4byte gUnknown_3005AEC +_08179ED8: .4byte 0x00000848 +_08179EDC: .4byte gUnknown_203B9E8 +_08179EE0: .4byte gUnknown_85CDA08 +_08179EE4: .4byte 0x000039E2 + thumb_func_end sub_08179EA4 + + thumb_func_start sub_08179EE8 +sub_08179EE8: @ 0x08179EE8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _08179F20 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08179EFC + b _0817A00C +_08179EFC: + ldr r0, _08179F24 + lsls r2, r4, #2 + adds r1, r2, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #8 + ldrsh r3, [r1, r0] + ldr r0, _08179F28 + adds r5, r2, #0 + cmp r3, r0 + beq _08179F80 + cmp r3, r0 + bgt _08179F2C + cmp r3, #0 + beq _08179F40 + cmp r3, #0xff + beq _08179F64 + b _08179FBC + .align 2, 0 +_08179F20: .4byte gUnknown_2037C74 +_08179F24: .4byte gUnknown_3005B60 +_08179F28: .4byte 0x0000010D +_08179F2C: + ldr r0, _08179F3C + cmp r3, r0 + beq _08179F98 + adds r0, #0x10 + cmp r3, r0 + beq _08179FB0 + b _08179FBC + .align 2, 0 +_08179F3C: .4byte 0x00000119 +_08179F40: + ldr r0, _08179F58 + ldr r1, [r0] + ldr r2, _08179F5C + adds r1, r1, r2 + strb r3, [r1] + ldr r0, [r0] + ldr r1, _08179F60 + adds r0, r0, r1 + strh r3, [r0] + bl sub_0817A484 + b _08179FBC + .align 2, 0 +_08179F58: .4byte gUnknown_203B9E4 +_08179F5C: .4byte 0x00001050 +_08179F60: .4byte 0x00001058 +_08179F64: + ldr r0, _08179F78 + ldr r0, [r0] + ldr r2, _08179F7C + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r1, [r1, #0xa] + bl sub_0817A3B0 + b _08179FBC + .align 2, 0 +_08179F78: .4byte gUnknown_203B9E4 +_08179F7C: .4byte 0x0000105E +_08179F80: + bl sub_0817A424 + ldr r1, _08179F90 + ldr r1, [r1] + ldr r2, _08179F94 + adds r1, r1, r2 + strb r0, [r1] + b _08179FBC + .align 2, 0 +_08179F90: .4byte gUnknown_203B9E4 +_08179F94: .4byte 0x0000105F +_08179F98: + ldr r0, _08179FA8 + ldr r0, [r0] + ldr r1, _08179FAC + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0817A2EC + b _08179FBC + .align 2, 0 +_08179FA8: .4byte gUnknown_203B9E4 +_08179FAC: .4byte 0x0000105D +_08179FB0: + ldr r0, _08179FB8 + str r0, [r1] + b _0817A00C + .align 2, 0 +_08179FB8: .4byte sub_0817A07C +_08179FBC: + ldr r0, _08179FD8 + ldr r0, [r0] + ldr r2, _08179FDC + adds r1, r0, r2 + subs r2, #2 + adds r0, r0, r2 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bhs _08179FE0 + bl sub_0817A4EC + b _08179FF0 + .align 2, 0 +_08179FD8: .4byte gUnknown_203B9E4 +_08179FDC: .4byte 0x00001058 +_08179FE0: + cmp r1, r0 + bne _08179FF0 + ldr r0, _0817A014 + adds r1, r5, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xfe + strh r0, [r1, #8] +_08179FF0: + ldr r0, _0817A018 + ldr r1, [r0] + ldr r0, _0817A01C + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldr r0, _0817A014 + adds r1, r5, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0817A00C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817A014: .4byte gUnknown_3005B60 +_0817A018: .4byte gUnknown_203B9E4 +_0817A01C: .4byte 0x00001058 + thumb_func_end sub_08179EE8 + + thumb_func_start sub_0817A020 +sub_0817A020: @ 0x0817A020 + push {lr} + ldr r0, _0817A044 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817A048 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #8] + movs r0, #1 + strh r0, [r1, #0xa] + pop {r0} + bx r0 + .align 2, 0 +_0817A044: .4byte sub_08179EE8 +_0817A048: .4byte gUnknown_3005B60 + thumb_func_end sub_0817A020 + + thumb_func_start sub_0817A04C +sub_0817A04C: @ 0x0817A04C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + bl sub_08121F10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _0817A06E + ldr r0, _0817A074 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0817A078 + str r0, [r1] +_0817A06E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817A074: .4byte gUnknown_3005B60 +_0817A078: .4byte sub_0817A1D8 + thumb_func_end sub_0817A04C + + thumb_func_start sub_0817A07C +sub_0817A07C: @ 0x0817A07C + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0817A0D8 + ldrb r1, [r0] + movs r0, #0x64 + adds r5, r1, #0 + muls r5, r0, r5 + ldr r0, _0817A0DC + adds r5, r5, r0 + ldr r1, _0817A0E0 + ldr r0, _0817A0E4 + ldrh r0, [r0] + lsls r0, r0, #3 + ldr r2, _0817A0E8 + adds r0, r0, r2 + ldr r4, [r1] + adds r4, r4, r0 + adds r0, r5, #0 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_08137054 + ldr r6, _0817A0EC + strh r0, [r6] + ldr r1, _0817A0F0 + adds r0, r5, #0 + bl sub_081B1814 + ldr r1, _0817A0F4 + adds r0, r4, #0 + bl sub_081370B4 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0817A100 + ldr r0, _0817A0F8 + ldr r1, _0817A0FC + bl sub_08008BCC + b _0817A120 + .align 2, 0 +_0817A0D8: .4byte gUnknown_203B968 +_0817A0DC: .4byte gUnknown_2024190 +_0817A0E0: .4byte gUnknown_3005AEC +_0817A0E4: .4byte gUnknown_203CB48 +_0817A0E8: .4byte 0x00000848 +_0817A0EC: .4byte gUnknown_203B96A +_0817A0F0: .4byte gUnknown_2021C40 +_0817A0F4: .4byte gUnknown_2021C54 +_0817A0F8: .4byte gUnknown_2021C7C +_0817A0FC: .4byte gUnknown_85C9885 +_0817A100: + cmp r0, #0 + ble _0817A118 + ldr r0, _0817A110 + ldr r1, _0817A114 + bl sub_08008BCC + b _0817A120 + .align 2, 0 +_0817A110: .4byte gUnknown_2021C7C +_0817A114: .4byte gUnknown_85C9894 +_0817A118: + ldr r0, _0817A164 + ldr r1, _0817A168 + bl sub_08008BCC +_0817A120: + ldr r2, _0817A16C + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _0817A164 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + ldr r1, _0817A170 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0817A174 + str r1, [r0] + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817A164: .4byte gUnknown_2021C7C +_0817A168: .4byte gUnknown_85C98A9 +_0817A16C: .4byte gUnknown_30030B4 +_0817A170: .4byte gUnknown_3005B60 +_0817A174: .4byte sub_0817A04C + thumb_func_end sub_0817A07C + + thumb_func_start sub_0817A178 +sub_0817A178: @ 0x0817A178 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817A1C4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817A1BC + bl sub_0800668C + bl sub_08008424 + ldr r0, _0817A1C8 + ldr r1, _0817A1CC + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + ldr r0, _0817A1D0 + ldr r0, [r0, #8] + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080034D4 + ldr r0, _0817A1D4 + ldr r0, [r0] + bl sub_08000BF0 + bl sub_0805ECB0 +_0817A1BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817A1C4: .4byte gUnknown_2037C74 +_0817A1C8: .4byte gUnknown_30074D0 +_0817A1CC: .4byte 0x0000FFFF +_0817A1D0: .4byte gUnknown_3002360 +_0817A1D4: .4byte gUnknown_203B9E4 + thumb_func_end sub_0817A178 + + thumb_func_start sub_0817A1D8 +sub_0817A1D8: @ 0x0817A1D8 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0817A208 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0817A20C + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817A208: .4byte gUnknown_3005B60 +_0817A20C: .4byte sub_0817A178 + thumb_func_end sub_0817A1D8 + + thumb_func_start sub_0817A210 +sub_0817A210: @ 0x0817A210 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + movs r1, #0x41 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0817A2C8 + movs r1, #0x30 + movs r2, #0x50 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0817A2CC + mov sb, r0 + ldr r0, [r0] + ldr r2, _0817A2D0 + adds r1, r0, r2 + strh r4, [r1] + ldr r1, _0817A2D4 + adds r0, r0, r1 + mov r2, r8 + strb r2, [r0] + adds r0, r5, #0 + bl sub_0806CB34 + mov r2, sb + ldr r1, [r2] + ldr r2, _0817A2D8 + adds r1, r1, r2 + strb r0, [r1] + ldr r7, _0817A2DC + mov r1, r8 + lsls r0, r1, #4 + add r0, r8 + lsls r5, r0, #2 + adds r6, r5, r7 + strh r4, [r6, #0x32] + adds r0, r7, #0 + adds r0, #0x1c + adds r0, r5, r0 + ldr r1, _0817A2E0 + str r1, [r0] + mov r2, sb + ldr r0, [r2] + ldr r1, _0817A2E4 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0806E2CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0817A2BA + adds r0, r7, #0 + adds r0, #0x10 + adds r0, r5, r0 + ldr r1, _0817A2E8 + str r1, [r0] + ldrb r3, [r6, #1] + movs r0, #3 + orrs r3, r0 + strb r3, [r6, #1] + lsrs r1, r3, #6 + ldrb r2, [r6, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r6, #0 + bl sub_08006F70 + mov r2, sb + ldr r0, [r2] + ldr r1, _0817A2E4 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] +_0817A2BA: + mov r0, r8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0817A2C8: .4byte gUnknown_2024640 +_0817A2CC: .4byte gUnknown_203B9E4 +_0817A2D0: .4byte 0x00001054 +_0817A2D4: .4byte 0x0000105B +_0817A2D8: .4byte 0x0000105A +_0817A2DC: .4byte gUnknown_20205AC +_0817A2E0: .4byte sub_08007140 +_0817A2E4: .4byte 0x00001053 +_0817A2E8: .4byte gUnknown_85CDA50 + thumb_func_end sub_0817A210 + + thumb_func_start sub_0817A2EC +sub_0817A2EC: @ 0x0817A2EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0817A314 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r2, r1, r3 + movs r0, #0x30 + strh r0, [r2, #0x20] + movs r0, #0x50 + strh r0, [r2, #0x22] + ldr r0, _0817A318 + strh r0, [r2, #0x2e] + movs r0, #1 + strh r0, [r2, #0x30] + adds r3, #0x1c + adds r1, r1, r3 + ldr r0, _0817A31C + str r0, [r1] + bx lr + .align 2, 0 +_0817A314: .4byte gUnknown_20205AC +_0817A318: .4byte 0x0000FFF8 +_0817A31C: .4byte sub_0817A320 + thumb_func_end sub_0817A2EC + + thumb_func_start sub_0817A320 +sub_0817A320: @ 0x0817A320 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x20] + adds r0, #4 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x2e] + ldrh r2, [r4, #0x22] + adds r1, r0, r2 + strh r1, [r4, #0x22] + ldrh r1, [r4, #0x30] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0817A346 + ldrh r0, [r4, #0x32] + movs r1, #0 + bl sub_080A2B3C +_0817A346: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #9 + bne _0817A352 + ldr r0, _0817A358 + str r0, [r4, #0x1c] +_0817A352: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817A358: .4byte sub_08007140 + thumb_func_end sub_0817A320 + + thumb_func_start sub_0817A35C +sub_0817A35C: @ 0x0817A35C + push {r4, r5, lr} + movs r0, #0xbc + movs r1, #0x64 + movs r2, #2 + bl sub_08136484 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0817A3A4 + lsls r3, r4, #4 + adds r3, r3, r4 + lsls r3, r3, #2 + adds r0, r3, r5 + ldrb r2, [r0, #1] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #1] + adds r1, r5, #0 + adds r1, #0x10 + adds r1, r3, r1 + ldr r2, _0817A3A8 + str r2, [r1] + adds r5, #0x1c + adds r3, r3, r5 + ldr r1, _0817A3AC + str r1, [r3] + bl sub_08008140 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0817A3A4: .4byte gUnknown_20205AC +_0817A3A8: .4byte gUnknown_85CDB04 +_0817A3AC: .4byte sub_08007140 + thumb_func_end sub_0817A35C + + thumb_func_start sub_0817A3B0 +sub_0817A3B0: @ 0x0817A3B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0817A3F0 + mov r8, r0 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r6, r0, #2 + mov r0, r8 + adds r4, r6, r0 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + cmp r5, #0 + bne _0817A3F8 + mov r0, r8 + adds r0, #0x10 + adds r0, r6, r0 + ldr r1, _0817A3F4 + b _0817A400 + .align 2, 0 +_0817A3F0: .4byte gUnknown_20205AC +_0817A3F4: .4byte gUnknown_85CDB08 +_0817A3F8: + mov r0, r8 + adds r0, #0x10 + adds r0, r6, r0 + ldr r1, _0817A41C +_0817A400: + str r1, [r0] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _0817A420 + adds r0, r0, r1 + bl sub_08008140 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817A41C: .4byte gUnknown_85CDB0C +_0817A420: .4byte gUnknown_20205AC + thumb_func_end sub_0817A3B0 + + thumb_func_start sub_0817A424 +sub_0817A424: @ 0x0817A424 + push {lr} + ldr r0, _0817A44C + movs r1, #0xae + movs r2, #0x54 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817A450 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, _0817A454 + strh r2, [r1, #0x2e] + movs r2, #1 + strh r2, [r1, #0x30] + pop {r1} + bx r1 + .align 2, 0 +_0817A44C: .4byte gUnknown_85CDB48 +_0817A450: .4byte gUnknown_20205AC +_0817A454: .4byte 0x0000FFF4 + thumb_func_end sub_0817A424 + + thumb_func_start sub_0817A458 +sub_0817A458: @ 0x0817A458 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x20] + subs r0, #4 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x2e] + ldrh r3, [r2, #0x22] + adds r1, r0, r3 + strh r1, [r2, #0x22] + ldrh r1, [r2, #0x30] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xa + bne _0817A47E + adds r0, r2, #0 + bl sub_08006E00 +_0817A47E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817A458 + + thumb_func_start sub_0817A484 +sub_0817A484: @ 0x0817A484 + push {r4, r5, r6, r7, lr} + ldr r0, _0817A4D8 + ldr r1, [r0] + ldr r0, _0817A4DC + adds r3, r1, r0 + movs r0, #1 + strh r0, [r3] + ldr r2, _0817A4E0 + ldr r7, _0817A4E4 + adds r1, r1, r7 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r2, [r0] + movs r4, #0 + ldr r5, _0817A4E8 + adds r6, r5, #0 + subs r6, #0xa +_0817A4A8: + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r0, r1, r6 + ldrh r0, [r0] + ldrh r7, [r3] + adds r0, r0, r7 + strh r0, [r3] + adds r1, r1, r5 + movs r7, #0 + ldrsh r0, [r1, r7] + cmp r0, #1 + beq _0817A4D2 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r4, #7 + bls _0817A4A8 +_0817A4D2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817A4D8: .4byte gUnknown_203B9E4 +_0817A4DC: .4byte 0x00001056 +_0817A4E0: .4byte gUnknown_85CD35C +_0817A4E4: .4byte 0x0000105A +_0817A4E8: .4byte gUnknown_85CD3A0 + thumb_func_end sub_0817A484 + + thumb_func_start sub_0817A4EC +sub_0817A4EC: @ 0x0817A4EC + push {r4, lr} + ldr r0, _0817A508 + ldr r4, [r0] + ldr r1, _0817A50C + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0x5a + bls _0817A4FE + b _0817A7C6 +_0817A4FE: + lsls r0, r0, #2 + ldr r1, _0817A510 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0817A508: .4byte gUnknown_203B9E4 +_0817A50C: .4byte 0x00001050 +_0817A510: .4byte _0817A514 +_0817A514: @ jump table + .4byte _0817A680 @ case 0 + .4byte _0817A7C6 @ case 1 + .4byte _0817A7C6 @ case 2 + .4byte _0817A7C6 @ case 3 + .4byte _0817A7C6 @ case 4 + .4byte _0817A7C6 @ case 5 + .4byte _0817A7C6 @ case 6 + .4byte _0817A7C6 @ case 7 + .4byte _0817A7C6 @ case 8 + .4byte _0817A7C6 @ case 9 + .4byte _0817A6D0 @ case 10 + .4byte _0817A7C6 @ case 11 + .4byte _0817A7C6 @ case 12 + .4byte _0817A7C6 @ case 13 + .4byte _0817A7C6 @ case 14 + .4byte _0817A7C6 @ case 15 + .4byte _0817A7C6 @ case 16 + .4byte _0817A7C6 @ case 17 + .4byte _0817A7C6 @ case 18 + .4byte _0817A7C6 @ case 19 + .4byte _0817A7C6 @ case 20 + .4byte _0817A7C6 @ case 21 + .4byte _0817A7C6 @ case 22 + .4byte _0817A7C6 @ case 23 + .4byte _0817A7C6 @ case 24 + .4byte _0817A7C6 @ case 25 + .4byte _0817A7C6 @ case 26 + .4byte _0817A7C6 @ case 27 + .4byte _0817A7C6 @ case 28 + .4byte _0817A7C6 @ case 29 + .4byte _0817A7C6 @ case 30 + .4byte _0817A7C6 @ case 31 + .4byte _0817A7C6 @ case 32 + .4byte _0817A7C6 @ case 33 + .4byte _0817A7C6 @ case 34 + .4byte _0817A7C6 @ case 35 + .4byte _0817A7C6 @ case 36 + .4byte _0817A7C6 @ case 37 + .4byte _0817A7C6 @ case 38 + .4byte _0817A7C6 @ case 39 + .4byte _0817A7C6 @ case 40 + .4byte _0817A7C6 @ case 41 + .4byte _0817A7C6 @ case 42 + .4byte _0817A7C6 @ case 43 + .4byte _0817A7C6 @ case 44 + .4byte _0817A7C6 @ case 45 + .4byte _0817A7C6 @ case 46 + .4byte _0817A7C6 @ case 47 + .4byte _0817A7C6 @ case 48 + .4byte _0817A7C6 @ case 49 + .4byte _0817A710 @ case 50 + .4byte _0817A7C6 @ case 51 + .4byte _0817A7C6 @ case 52 + .4byte _0817A7C6 @ case 53 + .4byte _0817A7C6 @ case 54 + .4byte _0817A7C6 @ case 55 + .4byte _0817A7C6 @ case 56 + .4byte _0817A7C6 @ case 57 + .4byte _0817A7C6 @ case 58 + .4byte _0817A7C6 @ case 59 + .4byte _0817A75A @ case 60 + .4byte _0817A7C6 @ case 61 + .4byte _0817A7C6 @ case 62 + .4byte _0817A7C6 @ case 63 + .4byte _0817A7C6 @ case 64 + .4byte _0817A7C6 @ case 65 + .4byte _0817A7C6 @ case 66 + .4byte _0817A7C6 @ case 67 + .4byte _0817A7C6 @ case 68 + .4byte _0817A7C6 @ case 69 + .4byte _0817A7B4 @ case 70 + .4byte _0817A7C6 @ case 71 + .4byte _0817A7C6 @ case 72 + .4byte _0817A7C6 @ case 73 + .4byte _0817A7C6 @ case 74 + .4byte _0817A7C6 @ case 75 + .4byte _0817A7C6 @ case 76 + .4byte _0817A7C6 @ case 77 + .4byte _0817A7C6 @ case 78 + .4byte _0817A7C6 @ case 79 + .4byte _0817A7C6 @ case 80 + .4byte _0817A7C6 @ case 81 + .4byte _0817A7C6 @ case 82 + .4byte _0817A7C6 @ case 83 + .4byte _0817A7C6 @ case 84 + .4byte _0817A7C6 @ case 85 + .4byte _0817A7C6 @ case 86 + .4byte _0817A7C6 @ case 87 + .4byte _0817A7C6 @ case 88 + .4byte _0817A7C6 @ case 89 + .4byte _0817A7C6 @ case 90 +_0817A680: + ldr r1, _0817A6B8 + ldr r2, _0817A6BC + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldr r3, _0817A6C0 + adds r0, r4, r3 + strb r1, [r0] + ldr r1, _0817A6C4 + adds r0, r4, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0817A6C8 + adds r1, r1, r0 + adds r0, r4, #0 + stm r0!, {r1} + movs r2, #0x44 + bl memcpy + ldr r2, _0817A6CC + adds r1, r4, r2 + movs r0, #0xa + strb r0, [r1] + b _0817A7C6 + .align 2, 0 +_0817A6B8: .4byte gUnknown_85CD35C +_0817A6BC: .4byte 0x0000105A +_0817A6C0: .4byte 0x00001051 +_0817A6C4: .4byte 0x0000105B +_0817A6C8: .4byte gUnknown_20205AC +_0817A6CC: .4byte 0x00001050 +_0817A6D0: + bl sub_0817A7D4 + ldr r1, _0817A73C + ldr r3, _0817A740 + adds r0, r4, r3 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0817A708 + ldr r2, [r4] + ldrb r0, [r2, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #1] + ldr r2, [r4] + ldrb r1, [r2, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #3] + ldr r0, [r4] + ldr r1, _0817A744 + str r1, [r0, #0x10] + bl sub_08008140 +_0817A708: + ldr r0, _0817A748 + adds r1, r4, r0 + movs r0, #0x32 + strb r0, [r1] +_0817A710: + ldr r1, _0817A73C + ldr r2, _0817A740 + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #1 + adds r2, r0, r1 + ldrb r1, [r2] + cmp r1, #0 + beq _0817A780 + ldr r3, _0817A74C + adds r0, r4, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0817A750 + ldr r0, [r4] + adds r1, #0xa + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007F70 + b _0817A780 + .align 2, 0 +_0817A73C: .4byte gUnknown_85CD35C +_0817A740: .4byte 0x0000105A +_0817A744: .4byte gUnknown_85CD99C +_0817A748: .4byte 0x00001050 +_0817A74C: .4byte 0x00001053 +_0817A750: + ldr r0, [r4] + ldrb r1, [r2] + bl sub_08007F70 + b _0817A780 +_0817A75A: + bl sub_0817A89C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0817A7C6 + ldr r1, _0817A78C + adds r0, r4, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0817A798 + ldr r3, _0817A790 + adds r1, r4, r3 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_0817A7D4 +_0817A780: + ldr r0, _0817A794 + adds r1, r4, r0 + movs r0, #0x3c + strb r0, [r1] + b _0817A7C6 + .align 2, 0 +_0817A78C: .4byte 0x00001072 +_0817A790: .4byte 0x00001051 +_0817A794: .4byte 0x00001050 +_0817A798: + ldr r0, [r4] + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r2, _0817A7B0 + adds r1, r4, r2 + movs r0, #0x46 + strb r0, [r1] + b _0817A7C6 + .align 2, 0 +_0817A7B0: .4byte 0x00001050 +_0817A7B4: + bl sub_0817A8F4 + ldr r3, _0817A7CC + adds r0, r4, r3 + movs r1, #0 + strb r1, [r0] + ldr r2, _0817A7D0 + adds r0, r4, r2 + strb r1, [r0] +_0817A7C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817A7CC: .4byte 0x00001051 +_0817A7D0: .4byte 0x00001050 + thumb_func_end sub_0817A4EC + + thumb_func_start sub_0817A7D4 +sub_0817A7D4: @ 0x0817A7D4 + push {r4, r5, r6, r7, lr} + ldr r0, _0817A878 + ldr r5, [r0] + movs r4, #0 + movs r0, #0x83 + lsls r0, r0, #5 + adds r7, r5, r0 + ldr r1, _0817A87C + mov ip, r1 + ldr r2, _0817A880 + adds r6, r5, r2 +_0817A7EA: + lsls r2, r4, #1 + adds r3, r7, r2 + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + add r2, ip + ldrh r0, [r2] + strh r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _0817A7EA + ldr r0, _0817A884 + adds r6, r5, r0 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0817A894 + movs r2, #0x83 + lsls r2, r2, #5 + adds r4, r5, r2 + movs r1, #0 + ldrsh r0, [r4, r1] + adds r2, #4 + adds r1, r5, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0806EFB8 + ldr r2, _0817A888 + adds r1, r5, r2 + strh r0, [r1] + movs r1, #0 + ldrsh r0, [r4, r1] + subs r2, #0xe + adds r1, r5, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0806EFD4 + ldr r2, _0817A88C + adds r1, r5, r2 + strh r0, [r1] + ldrh r0, [r6] + ldr r1, _0817A890 + adds r4, r5, r1 + strh r0, [r4] + ldr r0, [r5] + ldrh r1, [r0, #0x24] + adds r2, #4 + adds r0, r5, r2 + strh r1, [r0] + ldr r0, [r5] + ldrh r1, [r0, #0x26] + adds r2, #2 + adds r0, r5, r2 + strh r1, [r0] + bl sub_0817AA20 + ldrh r0, [r4] + strh r0, [r6] + bl sub_0817A90C + ldrh r0, [r4] + strh r0, [r6] + movs r0, #0 + b _0817A896 + .align 2, 0 +_0817A878: .4byte gUnknown_203B9E4 +_0817A87C: .4byte gUnknown_85CD38E +_0817A880: .4byte 0x00001051 +_0817A884: .4byte 0x00001068 +_0817A888: .4byte 0x00001074 +_0817A88C: .4byte 0x00001076 +_0817A890: .4byte 0x00001078 +_0817A894: + movs r0, #1 +_0817A896: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0817A7D4 + + thumb_func_start sub_0817A89C +sub_0817A89C: @ 0x0817A89C + push {r4, r5, lr} + ldr r0, _0817A8E0 + ldr r2, [r0] + ldr r1, _0817A8E4 + adds r0, r2, r1 + ldr r5, _0817A8E8 + adds r4, r2, r5 + ldrh r1, [r0] + ldrh r0, [r4] + subs r1, r1, r0 + lsls r1, r1, #0x10 + ldr r3, [r2] + lsrs r1, r1, #0xf + movs r5, #0x85 + lsls r5, r5, #4 + adds r0, r2, r5 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3, #0x24] + ldr r3, [r2] + movs r0, #0xc5 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + strh r0, [r3, #0x26] + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0817A8EC + movs r0, #0 + b _0817A8EE + .align 2, 0 +_0817A8E0: .4byte gUnknown_203B9E4 +_0817A8E4: .4byte 0x00001078 +_0817A8E8: .4byte 0x00001068 +_0817A8EC: + movs r0, #1 +_0817A8EE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0817A89C + + thumb_func_start sub_0817A8F4 +sub_0817A8F4: @ 0x0817A8F4 + push {lr} + ldr r0, _0817A908 + ldr r0, [r0] + ldr r0, [r0] + bl sub_0800730C + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0817A908: .4byte gUnknown_203B9E4 + thumb_func_end sub_0817A8F4 + + thumb_func_start sub_0817A90C +sub_0817A90C: @ 0x0817A90C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r0, _0817AA0C + ldr r7, [r0] + ldr r1, _0817AA10 + adds r0, r7, r1 + ldrh r0, [r0] + mov sb, r0 + ldr r2, _0817AA14 + adds r0, r7, r2 + ldrh r0, [r0] + mov r3, sb + subs r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r4, _0817AA18 + adds r1, r7, r4 + subs r2, #0xc + adds r0, r7, r2 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + ldr r3, _0817AA1C + adds r1, r7, r3 + subs r4, #0xc + adds r0, r7, r4 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + movs r5, #0 + mov r0, r8 + subs r0, #1 + cmp r5, r0 + bge _0817A9D8 + ldr r1, [sp] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, [sp, #4] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 +_0817A976: + mov r3, sb + adds r0, r3, r5 + lsls r0, r0, #1 + movs r4, #0x85 + lsls r4, r4, #4 + adds r2, r7, r4 + adds r2, r2, r0 + ldrh r6, [r2] + ldr r3, [sp, #8] + subs r1, r6, r3 + movs r4, #0xc5 + lsls r4, r4, #4 + adds r3, r7, r4 + adds r3, r3, r0 + ldrh r4, [r3] + mov r0, sl + subs r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r5, #1 + adds r0, r1, #0 + muls r0, r5, r0 + mov r1, r8 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + bl __divsi3 + subs r6, r6, r0 + ldr r2, [sp, #0xc] + strh r6, [r2] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + muls r0, r5, r0 + mov r1, r8 + bl __divsi3 + ldr r3, [sp, #0x10] + ldrh r1, [r3] + subs r1, r1, r0 + strh r1, [r3] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, r8 + subs r0, #1 + cmp r5, r0 + blt _0817A976 +_0817A9D8: + mov r0, sb + add r0, r8 + subs r0, #1 + lsls r0, r0, #1 + movs r2, #0x85 + lsls r2, r2, #4 + adds r1, r7, r2 + adds r1, r1, r0 + mov r3, sp + ldrh r3, [r3] + strh r3, [r1] + movs r4, #0xc5 + lsls r4, r4, #4 + adds r1, r7, r4 + adds r1, r1, r0 + mov r0, sp + ldrh r0, [r0, #4] + strh r0, [r1] + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817AA0C: .4byte gUnknown_203B9E4 +_0817AA10: .4byte 0x00001070 +_0817AA14: .4byte 0x00001078 +_0817AA18: .4byte 0x0000107A +_0817AA1C: .4byte 0x0000107C + thumb_func_end sub_0817A90C + + thumb_func_start sub_0817AA20 +sub_0817AA20: @ 0x0817AA20 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _0817AAE4 + ldr r6, [r0] + movs r0, #0 + str r0, [sp] + ldr r1, _0817AAE8 + adds r0, r6, r1 + ldr r2, _0817AAEC + adds r1, r6, r2 + ldrh r2, [r0] + ldrh r0, [r1] + subs r2, r2, r0 + ldr r3, _0817AAF0 + adds r0, r6, r3 + ldr r1, _0817AAF4 + adds r3, r6, r1 + ldrh r1, [r0] + ldrh r0, [r3] + subs r1, r1, r0 + ldr r3, _0817AAF8 + adds r3, r3, r6 + mov sb, r3 + movs r0, #0x83 + lsls r0, r0, #5 + adds r0, r0, r6 + mov r8, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + str r2, [sp, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov sl, r1 +_0817AA6A: + ldr r1, _0817AAFC + adds r0, r6, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bge _0817AA78 + rsbs r0, r0, #0 +_0817AA78: + lsls r0, r0, #0x10 + ldr r3, _0817AB00 + adds r7, r6, r3 + lsrs r0, r0, #0x10 + ldrh r1, [r7] + adds r0, r0, r1 + lsls r4, r0, #0x10 + strh r0, [r7] + ldr r2, _0817AB04 + adds r0, r6, r2 + ldrh r2, [r0] + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + bge _0817AA9A + movs r0, #1 + str r0, [sp] +_0817AA9A: + ldr r1, _0817AB08 + adds r0, r6, r1 + ldrh r0, [r0] + mov r3, sb + ldrh r1, [r3] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r1, #0 + beq _0817AB70 + ldr r0, [sp] + cmp r0, #0 + bne _0817AB0C + mov r1, r8 + movs r3, #0 + ldrsh r0, [r1, r3] + lsrs r4, r4, #0x18 + adds r1, r2, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + lsls r5, r5, #1 + movs r2, #0x85 + lsls r2, r2, #4 + adds r1, r6, r2 + adds r1, r1, r5 + ldr r3, [sp, #4] + adds r0, r3, r0 + strh r0, [r1] + mov r1, r8 + movs r2, #0 + ldrsh r0, [r1, r2] + ldrh r1, [r7] + adds r1, r1, r4 + b _0817AB38 + .align 2, 0 +_0817AAE4: .4byte gUnknown_203B9E4 +_0817AAE8: .4byte 0x0000107A +_0817AAEC: .4byte 0x00001074 +_0817AAF0: .4byte 0x0000107C +_0817AAF4: .4byte 0x00001076 +_0817AAF8: .4byte 0x00001068 +_0817AAFC: .4byte 0x0000106A +_0817AB00: .4byte 0x00001066 +_0817AB04: .4byte 0x00001064 +_0817AB08: .4byte 0x00001078 +_0817AB0C: + mov r1, r8 + movs r3, #0 + ldrsh r0, [r1, r3] + lsrs r4, r4, #0x18 + subs r1, r2, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + lsls r5, r5, #1 + movs r2, #0x85 + lsls r2, r2, #4 + adds r1, r6, r2 + adds r1, r1, r5 + ldr r3, [sp, #4] + adds r0, r3, r0 + strh r0, [r1] + mov r1, r8 + movs r2, #0 + ldrsh r0, [r1, r2] + ldrh r1, [r7] + subs r1, r1, r4 +_0817AB38: + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806EFD4 + movs r3, #0xc5 + lsls r3, r3, #4 + adds r1, r6, r3 + adds r1, r1, r5 + add r0, sl + strh r0, [r1] + ldr r1, _0817AB6C + adds r0, r6, r1 + ldrh r0, [r0] + mov r2, r8 + ldrh r2, [r2] + adds r0, r0, r2 + movs r1, #0xff + ands r0, r1 + mov r3, r8 + strh r0, [r3] + mov r1, sb + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + b _0817AA6A + .align 2, 0 +_0817AB6C: .4byte 0x00001062 +_0817AB70: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0817AA20 + + thumb_func_start sub_0817AB80 +sub_0817AB80: @ 0x0817AB80 + push {lr} + bl sub_0817ACC0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0817AB94 + ldr r0, _0817AB98 + movs r1, #0 + bl sub_080A8878 +_0817AB94: + pop {r0} + bx r0 + .align 2, 0 +_0817AB98: .4byte sub_0817AB9C + thumb_func_end sub_0817AB80 + + thumb_func_start sub_0817AB9C +sub_0817AB9C: @ 0x0817AB9C + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + movs r1, #0 + movs r2, #2 + movs r3, #0xe + bl sub_08197F44 + ldr r2, _0817ABF0 + movs r5, #2 + str r5, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r0, _0817ABF4 + str r5, [sp] + movs r1, #0xe + str r1, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + ldr r1, _0817ABF8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0817ABFC + str r1, [r0] + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817ABF0: .4byte gUnknown_85CDB60 +_0817ABF4: .4byte gUnknown_85CDBA8 +_0817ABF8: .4byte gUnknown_3005B60 +_0817ABFC: .4byte sub_0817AC00 + thumb_func_end sub_0817AB9C + + thumb_func_start sub_0817AC00 +sub_0817AC00: @ 0x0817AC00 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + beq _0817AC28 + cmp r4, #0 + bgt _0817AC22 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _0817AC60 + b _0817AC72 +_0817AC22: + cmp r4, #1 + beq _0817AC60 + b _0817AC72 +_0817AC28: + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0817AC54 + movs r0, #2 + str r0, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r1, _0817AC58 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _0817AC5C + str r1, [r0] + b _0817AC72 + .align 2, 0 +_0817AC54: .4byte gUnknown_85CDB7A +_0817AC58: .4byte gUnknown_3005B60 +_0817AC5C: .4byte sub_0817AC80 +_0817AC60: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _0817AC7C + bl sub_08000540 +_0817AC72: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817AC7C: .4byte sub_0817AE94 + thumb_func_end sub_0817AC00 + + thumb_func_start sub_0817AC80 +sub_0817AC80: @ 0x0817AC80 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0815262C + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _0817ACA0 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817ACA0: .4byte sub_0817AE94 + thumb_func_end sub_0817AC80 + + thumb_func_start sub_0817ACA4 +sub_0817ACA4: @ 0x0817ACA4 + push {lr} + bl sub_080A89D4 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817ACA4 + + thumb_func_start sub_0817ACB4 +sub_0817ACB4: @ 0x0817ACB4 + push {lr} + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817ACB4 + + thumb_func_start sub_0817ACC0 +sub_0817ACC0: @ 0x0817ACC0 + push {r4, lr} + sub sp, #0xc + ldr r0, _0817AE20 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0817ACD8 + cmp r0, #1 + bne _0817ACD8 + b _0817AE64 +_0817ACD8: + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + movs r1, #0 + bl sub_08001144 + movs r0, #0x10 + movs r1, #0 + bl sub_08001144 + movs r0, #0x12 + movs r1, #0 + bl sub_08001144 + movs r0, #0x1c + movs r1, #0 + bl sub_08001144 + movs r0, #0x1e + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + add r0, sp, #4 + movs r4, #0 + strh r4, [r0] + ldr r1, _0817AE24 + str r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0817AE28 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r2, #0 + str r2, [sp, #8] + add r0, sp, #8 + str r0, [r1] + movs r0, #0xe0 + lsls r0, r0, #0x13 + str r0, [r1, #4] + ldr r0, _0817AE2C + str r0, [r1, #8] + ldr r0, [r1, #8] + add r0, sp, #4 + strh r2, [r0] + str r0, [r1] + ldr r0, _0817AE30 + str r0, [r1, #4] + ldr r0, _0817AE34 + str r0, [r1, #8] + ldr r0, [r1, #8] + bl sub_080A133C + ldr r2, _0817AE38 + ldr r0, _0817AE3C + strh r0, [r2] + ldr r1, _0817AE40 + strh r0, [r1] + ldr r0, _0817AE44 + strh r0, [r2, #2] + strh r0, [r1, #2] + movs r1, #0 + ldr r3, _0817AE48 + ldr r0, _0817AE4C + adds r2, r0, #0 +_0817AD94: + lsls r0, r1, #1 + adds r0, r0, r3 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _0817AD94 + movs r1, #0 + ldr r4, _0817AE50 + movs r3, #1 + ldr r2, _0817AE54 +_0817ADAC: + lsls r0, r1, #1 + adds r0, r0, r4 + strh r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + bls _0817ADAC + bl sub_080A8818 + bl sub_0800668C + movs r0, #0 + bl sub_080017D4 + ldr r1, _0817AE58 + movs r0, #0 + movs r2, #2 + bl sub_08001800 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + bl sub_0817AEEC + ldr r0, _0817AE5C + str r0, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r0, #1 + bl sub_08001274 + ldr r0, _0817AE60 + bl sub_080006F0 + ldr r0, _0817AE20 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + b _0817AE88 + .align 2, 0 +_0817AE20: .4byte gUnknown_3002360 +_0817AE24: .4byte 0x040000D4 +_0817AE28: .4byte 0x8100C000 +_0817AE2C: .4byte 0x85000100 +_0817AE30: .4byte 0x05000002 +_0817AE34: .4byte 0x810001FF +_0817AE38: .4byte gUnknown_20373B4 +_0817AE3C: .4byte 0x00007FFF +_0817AE40: .4byte gUnknown_20377B4 +_0817AE44: .4byte 0x00003945 +_0817AE48: .4byte 0x06000020 +_0817AE4C: .4byte 0x00001111 +_0817AE50: .4byte 0x0600F000 +_0817AE54: .4byte 0x000003FF +_0817AE58: .4byte gUnknown_85CDB90 +_0817AE5C: .4byte 0x0000FFFF +_0817AE60: .4byte sub_0817ACB4 +_0817AE64: + bl sub_080A12E4 + ldr r0, _0817AE80 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817AE88 + ldr r0, _0817AE84 + bl sub_08000540 + movs r0, #1 + b _0817AE8A + .align 2, 0 +_0817AE80: .4byte gUnknown_2037C74 +_0817AE84: .4byte sub_0817ACA4 +_0817AE88: + movs r0, #0 +_0817AE8A: + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0817ACC0 + + thumb_func_start sub_0817AE94 +sub_0817AE94: @ 0x0817AE94 + push {r4, lr} + sub sp, #4 + ldr r0, _0817AEC0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _0817AEAA + cmp r0, #1 + beq _0817AEC8 +_0817AEAA: + ldr r0, _0817AEC4 + str r0, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #1 + strb r0, [r4] + b _0817AEE0 + .align 2, 0 +_0817AEC0: .4byte gUnknown_3002360 +_0817AEC4: .4byte 0x0000FFFF +_0817AEC8: + bl sub_080A12E4 + ldr r0, _0817AEE8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817AEE0 + bl sub_080034D4 + bl sub_080008F4 +_0817AEE0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817AEE8: .4byte gUnknown_2037C74 + thumb_func_end sub_0817AE94 + + thumb_func_start sub_0817AEEC +sub_0817AEEC: @ 0x0817AEEC + push {lr} + ldr r0, _0817AF1C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + movs r1, #0 + movs r2, #2 + movs r3, #0xe0 + bl sub_0809815C + ldr r0, _0817AF20 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_0817AF1C: .4byte gUnknown_85CDB98 +_0817AF20: .4byte gUnknown_85D7B04 + thumb_func_end sub_0817AEEC + + thumb_func_start sub_0817AF24 +sub_0817AF24: @ 0x0817AF24 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817AF80 + ldr r1, _0817AF84 + bl LZ77UnCompVram + ldr r0, _0817AF88 + ldr r1, _0817AF8C + bl LZ77UnCompVram + ldr r0, _0817AF90 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + cmp r4, #0 + beq _0817AF4C + cmp r4, #1 + beq _0817AFAC +_0817AF4C: + ldr r0, _0817AF94 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817AF98 + ldr r1, _0817AF9C + bl LZ77UnCompVram + ldr r0, _0817AFA0 + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r0, _0817AFA4 + bl sub_08034388 + ldr r0, _0817AFA8 + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A1200 + bl sub_0817B62C + b _0817AFDE + .align 2, 0 +_0817AF80: .4byte gUnknown_85CDC10 +_0817AF84: .4byte 0x06004000 +_0817AF88: .4byte gUnknown_85CE090 +_0817AF8C: .4byte 0x06007800 +_0817AF90: .4byte gUnknown_85CDBB0 +_0817AF94: .4byte gUnknown_85CE28C +_0817AF98: .4byte gUnknown_85CE868 +_0817AF9C: .4byte 0x06003000 +_0817AFA0: .4byte gUnknown_85CE1CC +_0817AFA4: .4byte gUnknown_85D2534 +_0817AFA8: .4byte gUnknown_85CEB38 +_0817AFAC: + ldr r0, _0817AFF0 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817AFF4 + ldr r1, _0817AFF8 + bl LZ77UnCompVram + ldr r0, _0817AFFC + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B000 + bl sub_08034388 + ldr r0, _0817B004 + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A1200 + bl sub_0817B648 +_0817AFDE: + ldr r1, _0817B008 + movs r0, #0 + strh r0, [r1] + ldr r1, _0817B00C + movs r0, #8 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817AFF0: .4byte gUnknown_85CECF4 +_0817AFF4: .4byte gUnknown_85CF37C +_0817AFF8: .4byte 0x06003000 +_0817AFFC: .4byte gUnknown_85CECB4 +_0817B000: .4byte gUnknown_85D25BC +_0817B004: .4byte gUnknown_85CF680 +_0817B008: .4byte gUnknown_203B9F4 +_0817B00C: .4byte gUnknown_30030BC + thumb_func_end sub_0817AF24 + + thumb_func_start sub_0817B010 +sub_0817B010: @ 0x0817B010 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0817B022 + cmp r0, #1 + ble _0817B022 + cmp r0, #2 + beq _0817B054 +_0817B022: + ldr r1, _0817B048 + movs r0, #0xe + bl sub_08001144 + ldr r1, _0817B04C + movs r0, #0xc + bl sub_08001144 + ldr r1, _0817B050 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xf2 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + b _0817B076 + .align 2, 0 +_0817B048: .4byte 0x00000603 +_0817B04C: .4byte 0x00000702 +_0817B050: .4byte 0x00000F05 +_0817B054: + ldr r1, _0817B07C + movs r0, #0xe + bl sub_08001144 + ldr r1, _0817B080 + movs r0, #0xc + bl sub_08001144 + ldr r1, _0817B084 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xf2 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 +_0817B076: + pop {r0} + bx r0 + .align 2, 0 +_0817B07C: .4byte 0x00000603 +_0817B080: .4byte 0x00000702 +_0817B084: .4byte 0x00000F05 + thumb_func_end sub_0817B010 + + thumb_func_start sub_0817B088 +sub_0817B088: @ 0x0817B088 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817B0AC + ldr r1, _0817B0B0 + bl LZ77UnCompVram + ldr r0, _0817B0B4 + ldr r1, _0817B0B8 + bl LZ77UnCompVram + cmp r4, #4 + bhi _0817B0D4 + lsls r0, r4, #2 + ldr r1, _0817B0BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0817B0AC: .4byte gUnknown_85CDC10 +_0817B0B0: .4byte 0x06004000 +_0817B0B4: .4byte gUnknown_85CE090 +_0817B0B8: .4byte 0x06007800 +_0817B0BC: .4byte _0817B0C0 +_0817B0C0: @ jump table + .4byte _0817B0D4 @ case 0 + .4byte _0817B130 @ case 1 + .4byte _0817B19C @ case 2 + .4byte _0817B19C @ case 3 + .4byte _0817B1F4 @ case 4 +_0817B0D4: + ldr r0, _0817B10C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B110 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817B114 + ldr r1, _0817B118 + bl LZ77UnCompVram + ldr r0, _0817B11C + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r0, _0817B120 + bl sub_08034388 + ldr r0, _0817B124 + ldr r1, _0817B128 + bl LZ77UnCompVram + ldr r0, _0817B12C + b _0817B166 + .align 2, 0 +_0817B10C: .4byte gUnknown_85CDBB0 +_0817B110: .4byte gUnknown_85CE28C +_0817B114: .4byte gUnknown_85CE868 +_0817B118: .4byte 0x06003000 +_0817B11C: .4byte gUnknown_85CE1CC +_0817B120: .4byte gUnknown_85D2534 +_0817B124: .4byte gUnknown_85CEB78 +_0817B128: .4byte 0x06010000 +_0817B12C: .4byte gUnknown_85CEB38 +_0817B130: + ldr r0, _0817B178 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B17C + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817B180 + ldr r1, _0817B184 + bl LZ77UnCompVram + ldr r0, _0817B188 + movs r1, #0 + movs r2, #0x60 + bl sub_080A1200 + ldr r0, _0817B18C + bl sub_08034388 + ldr r0, _0817B190 + ldr r1, _0817B194 + bl LZ77UnCompVram + ldr r0, _0817B198 +_0817B166: + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A1200 + bl sub_0817B62C + b _0817B230 + .align 2, 0 +_0817B178: .4byte gUnknown_85CDBD0 +_0817B17C: .4byte gUnknown_85CE28C +_0817B180: .4byte gUnknown_85CE868 +_0817B184: .4byte 0x06003000 +_0817B188: .4byte gUnknown_85CE22C +_0817B18C: .4byte gUnknown_85D2534 +_0817B190: .4byte gUnknown_85CEB78 +_0817B194: .4byte 0x06010000 +_0817B198: .4byte gUnknown_85CEB58 +_0817B19C: + ldr r0, _0817B1DC + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B1E0 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817B1E4 + ldr r1, _0817B1E8 + bl LZ77UnCompVram + ldr r4, _0817B1EC + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B1F0 + bl sub_08034388 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + bl sub_0817B648 + b _0817B230 + .align 2, 0 +_0817B1DC: .4byte gUnknown_85CDBD0 +_0817B1E0: .4byte gUnknown_85CECF4 +_0817B1E4: .4byte gUnknown_85CF37C +_0817B1E8: .4byte 0x06003000 +_0817B1EC: .4byte gUnknown_85CECD4 +_0817B1F0: .4byte gUnknown_85D25BC +_0817B1F4: + ldr r0, _0817B244 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _0817B248 + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + ldr r0, _0817B24C + ldr r1, _0817B250 + bl LZ77UnCompVram + ldr r0, _0817B254 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r0, _0817B258 + bl sub_08034388 + ldr r0, _0817B25C + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A1200 + bl sub_0817B664 +_0817B230: + ldr r1, _0817B260 + movs r0, #8 + strb r0, [r1] + ldr r1, _0817B264 + movs r0, #0 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817B244: .4byte gUnknown_85CDBF0 +_0817B248: .4byte gUnknown_85CF82C +_0817B24C: .4byte gUnknown_85CFA38 +_0817B250: .4byte 0x06003000 +_0817B254: .4byte gUnknown_85CF7EC +_0817B258: .4byte gUnknown_85D2650 +_0817B25C: .4byte gUnknown_85CFA18 +_0817B260: .4byte gUnknown_30030BC +_0817B264: .4byte gUnknown_203B9F4 + thumb_func_end sub_0817B088 + + thumb_func_start sub_0817B268 +sub_0817B268: @ 0x0817B268 + push {lr} + ldr r1, _0817B290 + movs r0, #0xe + bl sub_08001144 + ldr r1, _0817B294 + movs r0, #0xc + bl sub_08001144 + ldr r1, _0817B298 + movs r0, #0xa + bl sub_08001144 + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_0817B290: .4byte 0x00000603 +_0817B294: .4byte 0x00000702 +_0817B298: .4byte 0x00000F05 + thumb_func_end sub_0817B268 + + thumb_func_start sub_0817B29C +sub_0817B29C: @ 0x0817B29C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r1, _0817B310 + mov sb, r1 + mov r0, sb + movs r1, #0 + str r3, [sp] + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0817B314 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0 + strh r5, [r0, #8] + strh r6, [r0, #0xa] + strh r2, [r0, #0xc] + strh r2, [r0, #0xe] + mov r1, r8 + strh r1, [r0, #0x10] + strh r2, [r0, #0x12] + strh r2, [r0, #0x14] + ldr r3, [sp] + strh r3, [r0, #0x16] + movs r1, #8 + strh r1, [r0, #0x18] + strh r2, [r0, #0x1a] + adds r0, r4, #0 + bl _call_via_r9 + adds r0, r4, #0 + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0817B310: .4byte sub_0817B318 +_0817B314: .4byte gUnknown_3005B60 + thumb_func_end sub_0817B29C + + thumb_func_start sub_0817B318 +sub_0817B318: @ 0x0817B318 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0817B3A4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + ldrh r0, [r4, #0xa] + lsls r2, r0, #0x10 + cmp r2, #0 + beq _0817B360 + movs r1, #0xc + ldrsh r0, [r4, r1] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0xe] + adds r1, r0, r1 + lsrs r0, r2, #0xc + subs r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r4, #0xc] + strh r1, [r4, #0xe] + ldrh r1, [r4, #0xc] + movs r0, #0x14 + bl sub_08001144 + ldr r2, _0817B3A8 + ldr r0, _0817B3AC + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x16 + bl sub_08001144 +_0817B360: + ldrh r0, [r4, #0x10] + lsls r2, r0, #0x10 + cmp r2, #0 + beq _0817B3BA + movs r1, #0x12 + ldrsh r0, [r4, r1] + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x14] + adds r1, r0, r1 + lsrs r0, r2, #0xc + subs r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r4, #0x12] + strh r1, [r4, #0x14] + ldrh r1, [r4, #0x12] + movs r0, #0x18 + bl sub_08001144 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0817B3B0 + ldr r2, _0817B3A8 + ldr r0, _0817B3AC + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x1a + bl sub_08001144 + b _0817B3BA + .align 2, 0 +_0817B3A4: .4byte gUnknown_3005B60 +_0817B3A8: .4byte gUnknown_203B9F0 +_0817B3AC: .4byte gUnknown_203B9F2 +_0817B3B0: + ldr r0, _0817B3F8 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 +_0817B3BA: + ldr r0, _0817B3FC + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r2, r1, r0 + ldrh r0, [r2, #0x16] + lsls r3, r0, #0x10 + cmp r3, #0 + beq _0817B3F2 + movs r1, #0x18 + ldrsh r0, [r2, r1] + lsls r0, r0, #0x10 + ldrh r1, [r2, #0x1a] + adds r1, r0, r1 + lsrs r0, r3, #0xc + subs r1, r1, r0 + asrs r0, r1, #0x10 + strh r0, [r2, #0x18] + strh r1, [r2, #0x1a] + ldrh r1, [r2, #0x18] + movs r0, #0x1c + bl sub_08001144 + ldr r0, _0817B3F8 + ldrh r1, [r0] + movs r0, #0x1e + bl sub_08001144 +_0817B3F2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817B3F8: .4byte gUnknown_203B9F0 +_0817B3FC: .4byte gUnknown_3005B60 + thumb_func_end sub_0817B318 + + thumb_func_start sub_0817B400 +sub_0817B400: @ 0x0817B400 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0817B4E0 + cmp r0, #1 + ble _0817B414 + cmp r0, #2 + beq _0817B478 +_0817B414: + ldr r0, _0817B440 + ldr r2, [r0, #0x20] + movs r0, #3 + ands r0, r2 + cmp r0, #0 + bne _0817B4E0 + ldr r0, _0817B444 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817B4E0 + movs r0, #4 + ands r2, r0 + cmp r2, #0 + beq _0817B44C + ldr r2, _0817B448 + ldrh r1, [r2, #0x12] + mov r0, sp + strh r1, [r0] + ldrh r1, [r2, #0x14] + b _0817B456 + .align 2, 0 +_0817B440: .4byte gUnknown_3002360 +_0817B444: .4byte gUnknown_2037C74 +_0817B448: .4byte gUnknown_20373B4 +_0817B44C: + ldr r2, _0817B474 + ldrh r1, [r2, #0x14] + mov r0, sp + strh r1, [r0] + ldrh r1, [r2, #0x12] +_0817B456: + adds r0, #2 + strh r1, [r0] + adds r4, r0, #0 + mov r0, sp + movs r1, #9 + movs r2, #2 + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xa + movs r2, #2 + bl sub_080A1200 + b _0817B4E0 + .align 2, 0 +_0817B474: .4byte gUnknown_20373B4 +_0817B478: + ldr r0, _0817B4A8 + ldr r2, [r0, #0x20] + movs r0, #3 + ands r0, r2 + cmp r0, #0 + bne _0817B4E0 + ldr r0, _0817B4AC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817B4E0 + movs r0, #4 + ands r2, r0 + cmp r2, #0 + beq _0817B4B8 + mov r1, sp + ldr r2, _0817B4B0 + adds r0, r2, #0 + strh r0, [r1] + adds r1, #2 + ldr r2, _0817B4B4 + b _0817B4C6 + .align 2, 0 +_0817B4A8: .4byte gUnknown_3002360 +_0817B4AC: .4byte gUnknown_2037C74 +_0817B4B0: .4byte 0x00003D27 +_0817B4B4: .4byte 0x00000295 +_0817B4B8: + mov r1, sp + movs r2, #0xc7 + lsls r2, r2, #2 + adds r0, r2, #0 + strh r0, [r1] + adds r1, #2 + ldr r2, _0817B4E8 +_0817B4C6: + adds r0, r2, #0 + strh r0, [r1] + adds r4, r1, #0 + mov r0, sp + movs r1, #0xc + movs r2, #2 + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xd + movs r2, #2 + bl sub_080A1200 +_0817B4E0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817B4E8: .4byte 0x00003D27 + thumb_func_end sub_0817B400 + + thumb_func_start sub_0817B4EC +sub_0817B4EC: @ 0x0817B4EC + push {lr} + adds r2, r0, #0 + ldr r0, _0817B508 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #2 + beq _0817B550 + cmp r0, #0 + beq _0817B50C + adds r0, r2, #0 + bl sub_08006E00 + b _0817B550 + .align 2, 0 +_0817B508: .4byte gUnknown_203B9F4 +_0817B50C: + movs r1, #0x20 + ldrsh r0, [r2, r1] + lsls r0, r0, #0x10 + ldrh r1, [r2, #0x32] + orrs r0, r1 + ldrh r1, [r2, #0x30] + adds r0, r0, r1 + asrs r1, r0, #0x10 + strh r1, [r2, #0x20] + strh r0, [r2, #0x32] + cmp r1, #0xff + ble _0817B528 + ldr r0, _0817B53C + strh r0, [r2, #0x20] +_0817B528: + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0817B548 + ldr r1, _0817B540 + ldr r0, _0817B544 + ldrh r0, [r0] + ldrh r1, [r1] + adds r0, r0, r1 + b _0817B54C + .align 2, 0 +_0817B53C: .4byte 0x0000FFE0 +_0817B540: .4byte gUnknown_203B9F0 +_0817B544: .4byte gUnknown_203B9F2 +_0817B548: + ldr r0, _0817B554 + ldrh r0, [r0] +_0817B54C: + rsbs r0, r0, #0 + strh r0, [r2, #0x26] +_0817B550: + pop {r0} + bx r0 + .align 2, 0 +_0817B554: .4byte gUnknown_203B9F0 + thumb_func_end sub_0817B4EC + + thumb_func_start sub_0817B558 +sub_0817B558: @ 0x0817B558 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r1, [sp, #4] + str r2, [sp, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + movs r7, #0 + cmp r7, r8 + bhs _0817B60E + ldr r0, _0817B620 + mov sl, r0 + movs r2, #0x3f + mov sb, r2 +_0817B582: + lsls r6, r7, #3 + ldr r0, [sp, #4] + adds r6, r6, r0 + ldrb r1, [r6, #1] + ldrb r2, [r6, #2] + ldrb r3, [r6, #3] + ldr r0, _0817B624 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + mov r2, sl + adds r4, r5, r2 + ldrb r2, [r6] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1e + lsrs r2, r2, #6 + adds r0, r4, #0 + movs r3, #0 + bl sub_08006F70 + ldrb r3, [r4, #5] + movs r0, #0xc + orrs r3, r0 + strb r3, [r4, #5] + ldrb r1, [r6] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + lsls r1, r1, #6 + ldrb r2, [r4, #1] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r1, [r6] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #3] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + movs r0, #0xf + ands r3, r0 + strb r3, [r4, #5] + ldr r0, _0817B628 + adds r5, r5, r0 + ldr r2, [sp, #8] + str r2, [r5] + ldrb r1, [r6] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r0, r4, #0 + bl sub_08007EC0 + movs r1, #0 + mov r0, sp + ldrh r0, [r0] + strh r0, [r4, #0x2e] + ldrh r0, [r6, #4] + strh r0, [r4, #0x30] + strh r1, [r4, #0x32] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, r8 + blo _0817B582 +_0817B60E: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817B620: .4byte gUnknown_20205AC +_0817B624: .4byte gUnknown_85D251C +_0817B628: .4byte gUnknown_20205B4 + thumb_func_end sub_0817B558 + + thumb_func_start sub_0817B62C +sub_0817B62C: @ 0x0817B62C + push {lr} + ldr r1, _0817B640 + ldr r2, _0817B644 + movs r0, #0 + movs r3, #9 + bl sub_0817B558 + pop {r0} + bx r0 + .align 2, 0 +_0817B640: .4byte gUnknown_85D2574 +_0817B644: .4byte gUnknown_85D2564 + thumb_func_end sub_0817B62C + + thumb_func_start sub_0817B648 +sub_0817B648: @ 0x0817B648 + push {lr} + ldr r1, _0817B65C + ldr r2, _0817B660 + movs r0, #1 + movs r3, #0xc + bl sub_0817B558 + pop {r0} + bx r0 + .align 2, 0 +_0817B65C: .4byte gUnknown_85D25F0 +_0817B660: .4byte gUnknown_85D25E4 + thumb_func_end sub_0817B648 + + thumb_func_start sub_0817B664 +sub_0817B664: @ 0x0817B664 + push {lr} + ldr r1, _0817B678 + ldr r2, _0817B67C + movs r0, #1 + movs r3, #6 + bl sub_0817B558 + pop {r0} + bx r0 + .align 2, 0 +_0817B678: .4byte gUnknown_85D266C +_0817B67C: .4byte gUnknown_85D2668 + thumb_func_end sub_0817B664 + + thumb_func_start sub_0817B680 +sub_0817B680: @ 0x0817B680 + bx lr + .align 2, 0 + thumb_func_end sub_0817B680 + + thumb_func_start sub_0817B684 +sub_0817B684: @ 0x0817B684 + push {r4, lr} + ldr r4, _0817B6F0 + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r1, [r1] + movs r2, #0x3e + adds r2, r2, r0 + mov ip, r2 + movs r2, #4 + ands r2, r1 + mov r1, ip + ldrb r3, [r1] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x20] + strh r1, [r0, #0x20] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x24] + strh r1, [r0, #0x24] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x26] + strh r1, [r0, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817B6F0: .4byte gUnknown_20205AC + thumb_func_end sub_0817B684 + + thumb_func_start sub_0817B6F4 +sub_0817B6F4: @ 0x0817B6F4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, _0817B740 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #2 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0817B744 + adds r4, #8 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817B748 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + strh r6, [r1, #0x2e] + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0817B740: .4byte gUnknown_85D26BC +_0817B744: .4byte gUnknown_85D270C +_0817B748: .4byte gUnknown_20205AC + thumb_func_end sub_0817B6F4 + + thumb_func_start sub_0817B74C +sub_0817B74C: @ 0x0817B74C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, _0817B798 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #2 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0817B79C + adds r4, #8 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817B7A0 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + strh r6, [r1, #0x2e] + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0817B798: .4byte gUnknown_85D26D4 +_0817B79C: .4byte gUnknown_85D2724 +_0817B7A0: .4byte gUnknown_20205AC + thumb_func_end sub_0817B74C + + thumb_func_start sub_0817B7A4 +sub_0817B7A4: @ 0x0817B7A4 + bx lr + .align 2, 0 + thumb_func_end sub_0817B7A4 + + thumb_func_start sub_0817B7A8 +sub_0817B7A8: @ 0x0817B7A8 + push {r4, lr} + ldr r4, _0817B804 + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r1, [r1] + movs r2, #0x3e + adds r2, r2, r0 + mov ip, r2 + movs r2, #4 + ands r2, r1 + mov r1, ip + ldrb r3, [r1] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + movs r1, #0x2e + ldrsh r2, [r0, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x22] + strh r1, [r0, #0x22] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x24] + strh r1, [r0, #0x24] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r1, [r1, #0x26] + strh r1, [r0, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817B804: .4byte gUnknown_20205AC + thumb_func_end sub_0817B7A8 + + thumb_func_start sub_0817B808 +sub_0817B808: @ 0x0817B808 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r2, r0, #0 + adds r5, r1, #0 + ldr r0, _0817B874 + mov r8, r0 + lsls r2, r2, #0x10 + asrs r4, r2, #0x10 + ldr r0, _0817B878 + adds r2, r2, r0 + asrs r2, r2, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + mov r0, r8 + adds r1, r2, #0 + adds r2, r5, #0 + movs r3, #5 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r4, #0x20 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0817B87C + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r4, r5 + strh r6, [r0, #0x2e] + movs r1, #1 + bl sub_08007EC0 + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _0817B880 + str r0, [r4] + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0817B874: .4byte gUnknown_85D275C +_0817B878: .4byte 0xFFE00000 +_0817B87C: .4byte gUnknown_20205AC +_0817B880: .4byte sub_0817B7A8 + thumb_func_end sub_0817B808 + + thumb_func_start sub_0817B884 +sub_0817B884: @ 0x0817B884 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r2, r0, #0 + adds r5, r1, #0 + ldr r0, _0817B8F0 + mov r8, r0 + lsls r2, r2, #0x10 + asrs r4, r2, #0x10 + ldr r0, _0817B8F4 + adds r2, r2, r0 + asrs r2, r2, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + mov r0, r8 + adds r1, r2, #0 + adds r2, r5, #0 + movs r3, #5 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r4, #0x20 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #6 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _0817B8F8 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r4, r5 + strh r6, [r0, #0x2e] + movs r1, #1 + bl sub_08007EC0 + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _0817B8FC + str r0, [r4] + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0817B8F0: .4byte gUnknown_85D2774 +_0817B8F4: .4byte 0xFFE00000 +_0817B8F8: .4byte gUnknown_20205AC +_0817B8FC: .4byte sub_0817B7A8 + thumb_func_end sub_0817B884 + + thumb_func_start sub_0817B900 +sub_0817B900: @ 0x0817B900 + bx lr + .align 2, 0 + thumb_func_end sub_0817B900 + + thumb_func_start sub_0817B904 +sub_0817B904: @ 0x0817B904 + push {r4, r5, lr} + sub sp, #4 + movs r4, #0 + ldr r5, _0817B938 +_0817B90C: + adds r0, r4, #0 + adds r0, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #1 + adds r1, r1, r5 + ldrh r1, [r1] + str r1, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xb + bls _0817B90C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817B938: .4byte gUnknown_85D2928 + thumb_func_end sub_0817B904 + + thumb_func_start sub_0817B93C +sub_0817B93C: @ 0x0817B93C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x22 + ldrsh r0, [r4, r1] + cmp r0, #8 + ble _0817B9EA + movs r2, #0x3c + ldrsh r0, [r4, r2] + adds r1, r0, #0 + muls r1, r0, r1 + adds r0, r1, #0 + movs r1, #0x50 + bl __divsi3 + movs r1, #0x58 + subs r1, r1, r0 + strh r1, [r4, #0x22] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0817B976 + adds r0, #3 +_0817B976: + asrs r0, r0, #2 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3a] + adds r0, #4 + strh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0817B9A0 + ldrh r0, [r4, #0x38] + subs r0, #1 + strh r0, [r4, #0x38] +_0817B9A0: + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + movs r1, #0x26 + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _0817B9B6 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #1 + b _0817B9BC +_0817B9B6: + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #0x14 +_0817B9BC: + strb r0, [r1] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0 + bge _0817B9C8 + adds r0, #3 +_0817B9C8: + asrs r0, r0, #2 + adds r0, #0x14 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1f + bls _0817B9D6 + movs r2, #0x1f +_0817B9D6: + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #1 + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #3] + b _0817B9F0 +_0817B9EA: + adds r0, r4, #0 + bl sub_08006E00 +_0817B9F0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817B93C + + thumb_func_start sub_0817B9F8 +sub_0817B9F8: @ 0x0817B9F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0817BA48 + movs r1, #0x78 + movs r2, #0x58 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0817BA42 + ldr r4, _0817BA4C + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, 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, #1] + subs r0, #0x34 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r2, #3] + movs r1, #0x3e + orrs r0, r1 + strb r0, [r2, #3] + adds r4, #0x1c + adds r3, r3, r4 + ldr r0, _0817BA50 + str r0, [r3] +_0817BA42: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817BA48: .4byte gUnknown_85D2910 +_0817BA4C: .4byte gUnknown_20205AC +_0817BA50: .4byte sub_0817B93C + thumb_func_end sub_0817B9F8 + + thumb_func_start sub_0817BA54 +sub_0817BA54: @ 0x0817BA54 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x22 + ldrsh r0, [r4, r1] + cmp r0, #0x57 + bgt _0817BABA + movs r2, #0x3c + ldrsh r0, [r4, r2] + adds r1, r0, #0 + muls r1, r0, r1 + adds r0, r1, #0 + movs r1, #5 + bl __divsi3 + adds r0, #8 + strh r0, [r4, #0x22] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0817BA8C + adds r0, #3 +_0817BA8C: + asrs r0, r0, #2 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + movs r1, #0x28 + bl sub_0806EFB8 + adds r0, #8 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + b _0817BAC0 +_0817BABA: + adds r0, r4, #0 + bl sub_08006E00 +_0817BAC0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817BA54 + + thumb_func_start sub_0817BAC8 +sub_0817BAC8: @ 0x0817BAC8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0817BB24 + movs r1, #0x78 + movs r2, #8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0817BB1E + ldr r4, _0817BB28 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r2, r3, r4 + movs r1, #0 + movs r0, #8 + strh r0, [r2, #0x38] + strh r5, [r2, #0x3a] + strh r1, [r2, #0x3c] + ldrb r1, [r2, #1] + subs r0, #0xc + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r1, [r2, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x32 + orrs r0, r1 + strb r0, [r2, #3] + adds r2, #0x43 + movs r0, #1 + strb r0, [r2] + adds r4, #0x1c + adds r3, r3, r4 + ldr r0, _0817BB2C + str r0, [r3] +_0817BB1E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817BB24: .4byte gUnknown_85D2910 +_0817BB28: .4byte gUnknown_20205AC +_0817BB2C: .4byte sub_0817BA54 + thumb_func_end sub_0817BAC8 + + thumb_func_start sub_0817BB30 +sub_0817BB30: @ 0x0817BB30 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #8 + ble _0817BB6C + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + ldrh r1, [r4, #0x34] + subs r0, r0, r1 + strh r0, [r4, #0x38] + ldrh r0, [r4, #0x3a] + adds r0, #4 + strh r0, [r4, #0x3a] + b _0817BB72 +_0817BB6C: + adds r0, r4, #0 + bl sub_08006E00 +_0817BB72: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817BB30 + + thumb_func_start sub_0817BB78 +sub_0817BB78: @ 0x0817BB78 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _0817BBD4 + movs r1, #0x78 + movs r2, #0x38 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _0817BBCE + ldr r4, _0817BBD8 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, 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, #1] + subs r0, #0x7c + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r2, #3] + movs r1, #0x3e + orrs r0, r1 + strb r0, [r2, #3] + adds r2, #0x43 + movs r0, #1 + strb r0, [r2] + adds r4, #0x1c + adds r3, r3, r4 + ldr r0, _0817BBDC + str r0, [r3] +_0817BBCE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817BBD4: .4byte gUnknown_85D2910 +_0817BBD8: .4byte gUnknown_20205AC +_0817BBDC: .4byte sub_0817BB30 + thumb_func_end sub_0817BB78 + + thumb_func_start sub_0817BBE0 +sub_0817BBE0: @ 0x0817BBE0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x3c] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0817BBF4 + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] +_0817BBF4: + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0x7f + bgt _0817BCA4 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0x38 + ldrsh r1, [r4, r5] + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r0, #0x34 + ldrsh r1, [r4, r0] + movs r2, #0x3c + ldrsh r0, [r4, r2] + muls r0, r1, r0 + movs r1, #3 + bl __divsi3 + adds r0, #0x78 + strh r0, [r4, #0x20] + ldrh r0, [r4, #0x3a] + adds r3, r0, #1 + strh r3, [r4, #0x3a] + movs r5, #0x3a + ldrsh r1, [r4, r5] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + cmp r0, #0 + bge _0817BC38 + adds r0, #0x7f +_0817BC38: + asrs r0, r0, #7 + movs r1, #0x1f + subs r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + ble _0817BC54 + adds r1, r4, #0 + adds r1, #0x43 + movs r0, #1 + strb r0, [r1] + b _0817BC84 +_0817BC54: + adds r3, r4, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + 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 _0817BC84 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0817BC84 + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] +_0817BC84: + cmp r2, #0x13 + bhi _0817BC8A + movs r2, #0x14 +_0817BC8A: + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #1 + ldrb r1, [r4, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #3] + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] + b _0817BCAA +_0817BCA4: + adds r0, r4, #0 + bl sub_08006E00 +_0817BCAA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0817BBE0 + + thumb_func_start sub_0817BCB0 +sub_0817BCB0: @ 0x0817BCB0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _0817BD2C + movs r1, #0x78 + movs r2, #0x38 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x40 + beq _0817BD20 + bl sub_0806F050 + ldr r6, _0817BD30 + lsls r5, r4, #4 + adds r5, r5, r4 + lsls r5, r5, #2 + adds r4, r5, r6 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #7 + bl __umodsi3 + movs r1, #3 + subs r1, r1, r0 + movs r0, #0 + mov r8, r0 + strh r1, [r4, #0x34] + bl sub_0806F050 + movs r1, #0x3f + ands r1, r0 + adds r1, #0x30 + strh r1, [r4, #0x38] + mov r0, r8 + strh r0, [r4, #0x3c] + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #1] + ldrb r0, [r4, #3] + movs r1, #0x3e + orrs r0, r1 + strb r0, [r4, #3] + adds r4, #0x43 + movs r0, #0x14 + strb r0, [r4] + adds r6, #0x1c + adds r5, r5, r6 + ldr r0, _0817BD34 + str r0, [r5] +_0817BD20: + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817BD2C: .4byte gUnknown_85D2910 +_0817BD30: .4byte gUnknown_20205AC +_0817BD34: .4byte sub_0817BBE0 + thumb_func_end sub_0817BCB0 + + thumb_func_start sub_0817BD38 +sub_0817BD38: @ 0x0817BD38 + push {lr} + ldr r0, _0817BD4C + bl sub_080347E0 + ldr r0, _0817BD50 + bl sub_080084A8 + pop {r0} + bx r0 + .align 2, 0 +_0817BD4C: .4byte gUnknown_85D28DC +_0817BD50: .4byte gUnknown_85D28EC + thumb_func_end sub_0817BD38 + + thumb_func_start sub_0817BD54 +sub_0817BD54: @ 0x0817BD54 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0817BD7C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817BD80 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xa] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0817BD7C: .4byte sub_0817BD84 +_0817BD80: .4byte gUnknown_3005B60 + thumb_func_end sub_0817BD54 + + thumb_func_start sub_0817BD84 +sub_0817BD84: @ 0x0817BD84 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0817B904 + ldr r0, _0817BDC8 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + movs r0, #0 + strh r0, [r5, #0x26] + movs r0, #0xa + ldrsh r1, [r5, r0] + movs r0, #3 + lsls r0, r1 + ldr r1, _0817BDCC + str r1, [sp] + movs r1, #0xa + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0817BDD0 + str r0, [r5] + movs r0, #0x8c + bl sub_080A306C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817BDC8: .4byte gUnknown_3005B60 +_0817BDCC: .4byte 0x00007FFF +_0817BDD0: .4byte sub_0817BDD4 + thumb_func_end sub_0817BD84 + + thumb_func_start sub_0817BDD4 +sub_0817BDD4: @ 0x0817BDD4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0817BE2C + lsls r3, r5, #2 + adds r0, r3, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0x26] + movs r4, #0x26 + ldrsh r0, [r1, r4] + cmp r0, #0x3f + bgt _0817BE30 + movs r0, #7 + ands r0, r2 + adds r7, r3, #0 + cmp r0, #0 + bne _0817BE1A + movs r4, #0 + adds r6, r1, #0 +_0817BDFC: + ldrh r1, [r6, #0x26] + movs r0, #0x78 + ands r0, r1 + lsls r0, r0, #1 + lsls r1, r4, #6 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0817B9F8 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _0817BDFC +_0817BE1A: + ldr r0, _0817BE2C + adds r1, r7, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0817BE38 + .align 2, 0 +_0817BE2C: .4byte gUnknown_3005B60 +_0817BE30: + movs r0, #0x60 + strh r0, [r1, #0x26] + ldr r0, _0817BE40 + str r0, [r1] +_0817BE38: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817BE40: .4byte sub_0817BE44 + thumb_func_end sub_0817BDD4 + + thumb_func_start sub_0817BE44 +sub_0817BE44: @ 0x0817BE44 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0817BE64 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r3, [r1, #0x26] + movs r4, #0x26 + ldrsh r0, [r1, r4] + cmp r0, #0 + beq _0817BE68 + subs r0, r3, #1 + strh r0, [r1, #0x26] + b _0817BE6E + .align 2, 0 +_0817BE64: .4byte gUnknown_3005B60 +_0817BE68: + adds r0, r2, #0 + bl sub_080A8964 +_0817BE6E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817BE44 + + thumb_func_start sub_0817BE74 +sub_0817BE74: @ 0x0817BE74 + push {lr} + ldr r0, _0817BE88 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0817BE88: .4byte sub_0817BE8C + thumb_func_end sub_0817BE74 + + thumb_func_start sub_0817BE8C +sub_0817BE8C: @ 0x0817BE8C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0817B904 + ldr r1, _0817BEB8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x26] + ldr r1, _0817BEBC + str r1, [r0] + movs r0, #0xb7 + bl sub_080A306C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817BEB8: .4byte gUnknown_3005B60 +_0817BEBC: .4byte sub_0817BEC0 + thumb_func_end sub_0817BE8C + + thumb_func_start sub_0817BEC0 +sub_0817BEC0: @ 0x0817BEC0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0817BF04 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r3, #0x26 + ldrsh r0, [r1, r3] + cmp r0, #0x5f + bgt _0817BF08 + adds r6, r2, #0 + cmp r0, #5 + bgt _0817BEF2 + movs r4, #0 +_0817BEE0: + lsls r0, r4, #0x1c + lsrs r0, r0, #0x18 + bl sub_0817BAC8 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #8 + bls _0817BEE0 +_0817BEF2: + ldr r0, _0817BF04 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0817BF0C + .align 2, 0 +_0817BF04: .4byte gUnknown_3005B60 +_0817BF08: + ldr r0, _0817BF14 + str r0, [r1] +_0817BF0C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817BF14: .4byte sub_0817BF18 + thumb_func_end sub_0817BEC0 + + thumb_func_start sub_0817BF18 +sub_0817BF18: @ 0x0817BF18 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817BF18 + + thumb_func_start sub_0817BF28 +sub_0817BF28: @ 0x0817BF28 + push {lr} + ldr r0, _0817BF3C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0817BF3C: .4byte sub_0817BF40 + thumb_func_end sub_0817BF28 + + thumb_func_start sub_0817BF40 +sub_0817BF40: @ 0x0817BF40 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0817B904 + ldr r1, _0817BF6C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #0x26] + ldr r1, _0817BF70 + str r1, [r0] + movs r0, #0x66 + bl sub_080A306C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817BF6C: .4byte gUnknown_3005B60 +_0817BF70: .4byte sub_0817BF74 + thumb_func_end sub_0817BF40 + + thumb_func_start sub_0817BF74 +sub_0817BF74: @ 0x0817BF74 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0817BFE0 + lsls r2, r5, #2 + adds r0, r2, r5 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r3, #0x26 + ldrsh r0, [r1, r3] + cmp r0, #0x2f + bgt _0817BFE4 + adds r6, r2, #0 + cmp r0, #0 + bne _0817BFA8 + movs r4, #0 +_0817BF94: + lsls r0, r4, #0x1c + lsrs r0, r0, #0x18 + movs r1, #4 + bl sub_0817BB78 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0817BF94 +_0817BFA8: + ldr r0, _0817BFE0 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x26 + ldrsh r0, [r1, r2] + cmp r0, #0x20 + bne _0817BFCE + movs r4, #0 +_0817BFBA: + lsls r0, r4, #0x1c + lsrs r0, r0, #0x18 + movs r1, #8 + bl sub_0817BB78 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xf + bls _0817BFBA +_0817BFCE: + ldr r0, _0817BFE0 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0817BFE8 + .align 2, 0 +_0817BFE0: .4byte gUnknown_3005B60 +_0817BFE4: + ldr r0, _0817BFF0 + str r0, [r1] +_0817BFE8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817BFF0: .4byte sub_0817BFF4 + thumb_func_end sub_0817BF74 + + thumb_func_start sub_0817BFF4 +sub_0817BFF4: @ 0x0817BFF4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817BFF4 + + thumb_func_start sub_0817C004 +sub_0817C004: @ 0x0817C004 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0817C02C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817C030 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xc] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0817C02C: .4byte sub_0817C034 +_0817C030: .4byte gUnknown_3005B60 + thumb_func_end sub_0817C004 + + thumb_func_start sub_0817C034 +sub_0817C034: @ 0x0817C034 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0817B904 + ldr r0, _0817C07C + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + movs r0, #0 + strh r0, [r5, #0x26] + ldr r0, _0817C080 + ldr r1, _0817C084 + movs r2, #0x30 + bl CpuSet + ldr r0, _0817C088 + ldr r1, _0817C08C + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0817C090 + str r0, [r5] + movs r0, #0xca + bl sub_080A306C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817C07C: .4byte gUnknown_3005B60 +_0817C080: .4byte gUnknown_20377F4 +_0817C084: .4byte gUnknown_20373F4 +_0817C088: .4byte 0xFFF9041C +_0817C08C: .4byte 0x00007FFF +_0817C090: .4byte sub_0817C094 + thumb_func_end sub_0817C034 + + thumb_func_start sub_0817C094 +sub_0817C094: @ 0x0817C094 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0817C0CC + lsls r5, r6, #2 + adds r0, r5, r6 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r0, #0x26 + ldrsh r2, [r1, r0] + cmp r2, #0x7f + bgt _0817C110 + adds r0, r2, #0 + cmp r0, #0 + beq _0817C0D0 + cmp r0, #0x20 + beq _0817C0E4 + cmp r2, #0x31 + bgt _0817C0F4 + bl sub_0806F050 + movs r1, #7 + ands r0, r1 + bl sub_0817BCB0 + b _0817C0F4 + .align 2, 0 +_0817C0CC: .4byte gUnknown_3005B60 +_0817C0D0: + movs r4, #0 +_0817C0D2: + adds r0, r4, #0 + bl sub_0817BCB0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _0817C0D2 + b _0817C0F4 +_0817C0E4: + ldr r0, _0817C104 + ldr r1, _0817C108 + str r1, [sp] + movs r1, #0x10 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_0817C0F4: + ldr r0, _0817C10C + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0817C114 + .align 2, 0 +_0817C104: .4byte 0xFFFF041C +_0817C108: .4byte 0x00007FFF +_0817C10C: .4byte gUnknown_3005B60 +_0817C110: + ldr r0, _0817C11C + str r0, [r1] +_0817C114: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817C11C: .4byte sub_0817C120 + thumb_func_end sub_0817C094 + + thumb_func_start sub_0817C120 +sub_0817C120: @ 0x0817C120 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _0817C13C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0817C138 + adds r0, r2, #0 + bl sub_080A8964 +_0817C138: + pop {r0} + bx r0 + .align 2, 0 +_0817C13C: .4byte gUnknown_2037C74 + thumb_func_end sub_0817C120 + + thumb_func_start sub_0817C140 +sub_0817C140: @ 0x0817C140 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _0817C168 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817C16C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #0xc] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0817C168: .4byte sub_0817C170 +_0817C16C: .4byte gUnknown_3005B60 + thumb_func_end sub_0817C140 + + thumb_func_start sub_0817C170 +sub_0817C170: @ 0x0817C170 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0817B904 + ldr r0, _0817C1B8 + lsls r5, r4, #2 + adds r5, r5, r4 + lsls r5, r5, #3 + adds r5, r5, r0 + movs r0, #0 + strh r0, [r5, #0x26] + ldr r0, _0817C1BC + ldr r1, _0817C1C0 + movs r2, #0x30 + bl CpuSet + ldr r0, _0817C1C4 + ldr r1, _0817C1C8 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _0817C1CC + str r0, [r5] + movs r0, #0xca + bl sub_080A306C + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817C1B8: .4byte gUnknown_3005B60 +_0817C1BC: .4byte gUnknown_20377F4 +_0817C1C0: .4byte gUnknown_20373F4 +_0817C1C4: .4byte 0xFFF90400 +_0817C1C8: .4byte 0x00007FFF +_0817C1CC: .4byte sub_0817C1D0 + thumb_func_end sub_0817C170 + + thumb_func_start sub_0817C1D0 +sub_0817C1D0: @ 0x0817C1D0 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0817C208 + lsls r5, r6, #2 + adds r0, r5, r6 + lsls r0, r0, #3 + adds r1, r0, r1 + movs r0, #0x26 + ldrsh r2, [r1, r0] + cmp r2, #0x7f + bgt _0817C24C + adds r0, r2, #0 + cmp r0, #0 + beq _0817C20C + cmp r0, #0x20 + beq _0817C220 + cmp r2, #0x31 + bgt _0817C230 + bl sub_0806F050 + movs r1, #7 + ands r0, r1 + bl sub_0817BCB0 + b _0817C230 + .align 2, 0 +_0817C208: .4byte gUnknown_3005B60 +_0817C20C: + movs r4, #0 +_0817C20E: + adds r0, r4, #0 + bl sub_0817BCB0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _0817C20E + b _0817C230 +_0817C220: + ldr r0, _0817C240 + ldr r1, _0817C244 + str r1, [sp] + movs r1, #0x10 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_0817C230: + ldr r0, _0817C248 + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #0x26] + adds r0, #1 + strh r0, [r1, #0x26] + b _0817C250 + .align 2, 0 +_0817C240: .4byte 0xFFFF0400 +_0817C244: .4byte 0x00007FFF +_0817C248: .4byte gUnknown_3005B60 +_0817C24C: + ldr r0, _0817C258 + str r0, [r1] +_0817C250: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817C258: .4byte sub_0817C120 + thumb_func_end sub_0817C1D0 + + thumb_func_start sub_0817C25C +sub_0817C25C: @ 0x0817C25C + bx lr + .align 2, 0 + thumb_func_end sub_0817C25C + + thumb_func_start sub_0817C260 +sub_0817C260: @ 0x0817C260 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r1, #0 + ldr r3, _0817C394 + ldr r2, _0817C398 +_0817C27A: + lsls r0, r1, #1 + add r0, sp + adds r0, #4 + strh r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xf + bls _0817C27A + adds r0, r3, #0 + movs r1, #0 + bl sub_080A8878 + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _0817C39C + mov r1, r8 + lsls r6, r1, #2 + add r6, r8 + lsls r6, r6, #3 + adds r6, r6, r0 + strh r5, [r6, #0xa] + strh r7, [r6, #0xc] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r6, #0xe] + movs r0, #0x10 + strh r0, [r6, #0x10] + movs r4, #0x80 + lsls r4, r4, #9 + str r1, [sp] + movs r0, #0x1e + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + movs r0, #0x10 + ldrsh r1, [r6, r0] + adds r0, r4, #0 + bl __divsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r0, #0x1f + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + ldr r1, _0817C3A0 + mov sb, r1 + lsls r2, r5, #4 + adds r2, r2, r5 + lsls r2, r2, #2 + mov r3, sb + adds r3, #0x1c + adds r0, r2, r3 + ldr r1, _0817C3A4 + str r1, [r0] + add r2, sb + ldrb r1, [r2, #1] + movs r4, #4 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r1, [r2, #3] + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x3c + orrs r0, r1 + strb r0, [r2, #3] + movs r0, #0x3e + adds r0, r0, r2 + mov sl, r0 + ldrb r1, [r0] + movs r5, #5 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + mov r1, sl + strb r0, [r1] + ldrb r1, [r2, #5] + lsrs r1, r1, #4 + lsls r1, r1, #5 + ldr r0, _0817C3A8 + mov sl, r0 + add r1, sl + add r0, sp, #4 + movs r2, #0x10 + str r3, [sp, #0x24] + bl CpuSet + lsls r1, r7, #4 + adds r1, r1, r7 + lsls r1, r1, #2 + ldr r3, [sp, #0x24] + adds r3, r1, r3 + ldr r0, _0817C3A4 + str r0, [r3] + add r1, sb + ldrb r0, [r1, #1] + ands r4, r0 + movs r0, #1 + orrs r4, r0 + strb r4, [r1, #1] + ldrb r0, [r1, #3] + movs r2, #0x3e + orrs r0, r2 + strb r0, [r1, #3] + adds r2, r1, #0 + adds r2, #0x3e + ldrb r0, [r2] + ands r5, r0 + strb r5, [r2] + ldrb r1, [r1, #5] + lsrs r1, r1, #4 + lsls r1, r1, #5 + add r1, sl + add r0, sp, #4 + movs r2, #0x10 + bl CpuSet + movs r1, #0 + strh r1, [r6, #0x18] + mov r0, r8 + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0817C394: .4byte sub_0817C3AC +_0817C398: .4byte 0x00007FFF +_0817C39C: .4byte gUnknown_3005B60 +_0817C3A0: .4byte gUnknown_20205AC +_0817C3A4: .4byte sub_0817C25C +_0817C3A8: .4byte gUnknown_20379B4 + thumb_func_end sub_0817C260 + + thumb_func_start sub_0817C3AC +sub_0817C3AC: @ 0x0817C3AC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817C3C8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0x12] + movs r0, #8 + strh r0, [r1, #0x14] + ldr r0, _0817C3CC + str r0, [r1] + bx lr + .align 2, 0 +_0817C3C8: .4byte gUnknown_3005B60 +_0817C3CC: .4byte sub_0817C3D0 + thumb_func_end sub_0817C3AC + + thumb_func_start sub_0817C3D0 +sub_0817C3D0: @ 0x0817C3D0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _0817C3F0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #0x18 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0817C3F4 + adds r0, r3, #0 + bl sub_0817C5EC + b _0817C416 + .align 2, 0 +_0817C3F0: .4byte gUnknown_3005B60 +_0817C3F4: + ldrh r1, [r2, #0x14] + movs r4, #0x14 + ldrsh r0, [r2, r4] + cmp r0, #0x80 + bne _0817C406 + adds r0, r3, #0 + bl sub_0817C53C + b _0817C416 +_0817C406: + adds r0, r1, #2 + strh r0, [r2, #0x14] + ldrh r0, [r2, #0x12] + movs r1, #1 + eors r0, r1 + strh r0, [r2, #0x12] + ldr r0, _0817C41C + str r0, [r2] +_0817C416: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817C41C: .4byte sub_0817C420 + thumb_func_end sub_0817C3D0 + + thumb_func_start sub_0817C420 +sub_0817C420: @ 0x0817C420 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0817C444 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #0x18 + ldrsh r0, [r2, r3] + adds r5, r1, #0 + cmp r0, #0 + beq _0817C44C + ldr r0, _0817C448 + str r0, [r2] + b _0817C530 + .align 2, 0 +_0817C444: .4byte gUnknown_3005B60 +_0817C448: .4byte sub_0817C5EC +_0817C44C: + movs r6, #0 + movs r7, #0x12 + ldrsh r0, [r2, r7] + cmp r0, #0 + bne _0817C49C + movs r0, #0xe + ldrsh r1, [r2, r0] + movs r3, #0x14 + ldrsh r0, [r2, r3] + movs r3, #0x80 + lsls r3, r3, #1 + subs r0, r3, r0 + cmp r1, r0 + bge _0817C472 + ldrh r0, [r2, #0x14] + ldrh r7, [r2, #0xe] + adds r0, r0, r7 + strh r0, [r2, #0xe] + b _0817C476 +_0817C472: + strh r3, [r2, #0xe] + movs r6, #1 +_0817C476: + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, 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 _0817C496 + ldrh r0, [r3, #0x10] + ldrh r1, [r3, #0x14] + subs r0, r0, r1 + strh r0, [r3, #0x10] + b _0817C4E6 +_0817C496: + movs r0, #0x10 + strh r0, [r3, #0x10] + b _0817C4E0 +_0817C49C: + movs r0, #0x10 + ldrsh r1, [r2, r0] + movs r3, #0x14 + ldrsh r0, [r2, r3] + movs r3, #0x80 + lsls r3, r3, #1 + subs r0, r3, r0 + cmp r1, r0 + bge _0817C4B8 + ldrh r0, [r2, #0x14] + ldrh r7, [r2, #0x10] + adds r0, r0, r7 + strh r0, [r2, #0x10] + b _0817C4BC +_0817C4B8: + strh r3, [r2, #0x10] + movs r6, #1 +_0817C4BC: + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, 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 _0817C4DC + ldrh r0, [r3, #0xe] + ldrh r1, [r3, #0x14] + subs r0, r0, r1 + strh r0, [r3, #0xe] + b _0817C4E6 +_0817C4DC: + movs r0, #0x10 + strh r0, [r3, #0xe] +_0817C4E0: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0817C4E6: + adds r0, r2, r4 + lsls r0, r0, #3 + adds r5, r0, r5 + movs r0, #0xe + ldrsh r1, [r5, r0] + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + bl __divsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r0, #0x1e + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + movs r3, #0x10 + ldrsh r1, [r5, r3] + adds r0, r4, #0 + bl __divsi3 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + movs r0, #0x1f + movs r2, #0 + movs r3, #0 + bl sub_08006F3C + cmp r6, #2 + bne _0817C530 + ldr r0, _0817C538 + str r0, [r5] +_0817C530: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817C538: .4byte sub_0817C3D0 + thumb_func_end sub_0817C420 + + thumb_func_start sub_0817C53C +sub_0817C53C: @ 0x0817C53C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0817C5E4 + mov r8, r1 + ldr r1, _0817C5E8 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r2, #0xa + ldrsh r1, [r4, r2] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + add r2, r8 + ldrb r3, [r2, #1] + movs r6, #4 + rsbs r6, r6, #0 + adds r1, r6, #0 + ands r1, r3 + strb r1, [r2, #1] + movs r2, #0xa + ldrsh r1, [r4, r2] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + add r2, r8 + ldrb r3, [r2, #3] + movs r5, #0x3f + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r1, r3 + strb r1, [r2, #3] + movs r1, #0xa + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0x3e + ldrb r2, [r1] + movs r3, #4 + orrs r2, r3 + strb r2, [r1] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #1] + ands r6, r2 + strb r6, [r1, #1] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #3] + ands r5, r2 + strb r5, [r1, #3] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r1] + bl sub_080A8964 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817C5E4: .4byte gUnknown_20205AC +_0817C5E8: .4byte gUnknown_3005B60 + thumb_func_end sub_0817C53C + + thumb_func_start sub_0817C5EC +sub_0817C5EC: @ 0x0817C5EC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0817C694 + mov r8, r1 + ldr r1, _0817C698 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r2, #0xa + ldrsh r1, [r4, r2] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + add r2, r8 + ldrb r3, [r2, #1] + movs r6, #4 + rsbs r6, r6, #0 + adds r1, r6, #0 + ands r1, r3 + strb r1, [r2, #1] + movs r2, #0xa + ldrsh r1, [r4, r2] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + add r2, r8 + ldrb r3, [r2, #3] + movs r5, #0x3f + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r1, r3 + strb r1, [r2, #3] + movs r1, #0xa + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + ands r2, r3 + strb r2, [r1] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #1] + ands r6, r2 + strb r6, [r1, #1] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #3] + ands r5, r2 + strb r5, [r1, #3] + movs r1, #0xc + ldrsh r2, [r4, r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + adds r1, #0x3e + ldrb r2, [r1] + movs r3, #4 + orrs r2, r3 + strb r2, [r1] + bl sub_080A8964 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817C694: .4byte gUnknown_20205AC +_0817C698: .4byte gUnknown_3005B60 + thumb_func_end sub_0817C5EC + + thumb_func_start sub_0817C69C +sub_0817C69C: @ 0x0817C69C + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r3, #0 + strh r3, [r0, #0x16] + subs r1, #1 + strh r1, [r0, #0x18] + strh r2, [r0, #0x1a] + strh r3, [r0, #0x1c] + bx lr + .align 2, 0 + thumb_func_end sub_0817C69C + + thumb_func_start sub_0817C6B0 +sub_0817C6B0: @ 0x0817C6B0 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _0817C6E0 + lsls r0, r1, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #0x14] + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1] + movs r2, #0 + ldrsh r1, [r1, r2] + movs r2, #2 + rsbs r2, r2, #0 + cmp r1, r2 + bne _0817C6E8 + ldr r0, _0817C6E4 + bl m4aMPlayStop + b _0817C6F0 + .align 2, 0 +_0817C6E0: .4byte gUnknown_85D2B4C +_0817C6E4: .4byte gUnknown_3007510 +_0817C6E8: + cmp r1, r2 + blt _0817C6F8 + cmp r1, #0 + bgt _0817C6F8 +_0817C6F0: + ldrh r0, [r4, #0x1c] + adds r0, #1 + strh r0, [r4, #0x1c] + b _0817C6FC +_0817C6F8: + bl m4aSongNumStart +_0817C6FC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817C6B0 + + thumb_func_start sub_0817C704 +sub_0817C704: @ 0x0817C704 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x1c + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _0817C716 + movs r0, #0 + strh r0, [r6, #0x1c] + b _0817C74E +_0817C716: + ldr r4, _0817C75C + ldr r5, _0817C760 + ldrh r2, [r6, #0x14] + adds r0, r4, #0 + adds r1, r5, #0 + bl m4aMPlayVolumeControl + ldr r2, _0817C764 + movs r3, #0x18 + ldrsh r1, [r6, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + movs r3, #0x1a + ldrsh r1, [r6, r3] + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + movs r2, #0x16 + ldrsh r0, [r6, r2] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + adds r1, r5, #0 + bl m4aMPlayPitchControl +_0817C74E: + ldrh r0, [r6, #0x16] + adds r0, #1 + strh r0, [r6, #0x16] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817C75C: .4byte gUnknown_3007510 +_0817C760: .4byte 0x0000FFFF +_0817C764: .4byte gUnknown_85D2AC0 + thumb_func_end sub_0817C704 + + thumb_func_start sub_0817C768 +sub_0817C768: @ 0x0817C768 + push {lr} + ldr r0, _0817C780 + ldrb r0, [r0, #0x17] + bl sub_0808555C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0817C784 + movs r0, #0 + b _0817C792 + .align 2, 0 +_0817C780: .4byte gUnknown_2036FB8 +_0817C784: + ldr r1, _0817C798 + ldr r0, _0817C79C + str r0, [r1] + ldr r1, _0817C7A0 + ldr r0, _0817C7A4 + str r0, [r1] + movs r0, #1 +_0817C792: + pop {r1} + bx r1 + .align 2, 0 +_0817C798: .4byte gUnknown_3005B10 +_0817C79C: .4byte sub_081B53D8 +_0817C7A0: .4byte gUnknown_203CBB8 +_0817C7A4: .4byte sub_0817C7A8 + thumb_func_end sub_0817C768 + + thumb_func_start sub_0817C7A8 +sub_0817C7A8: @ 0x0817C7A8 + push {lr} + bl sub_08084024 + movs r0, #0x3f + bl sub_080B5270 + bl sub_081B1024 + ldr r1, _0817C7C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0817C7C4: .4byte gUnknown_20388A8 + thumb_func_end sub_0817C7A8 + + thumb_func_start sub_0817C7C8 +sub_0817C7C8: @ 0x0817C7C8 + push {lr} + bl sub_081354CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817C7F0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _0817C7F4 + lsrs r0, r2, #0x10 + strh r0, [r1, #0x18] + strh r2, [r1, #0x1a] + movs r0, #1 + bl sub_0808AD30 + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_0817C7F0: .4byte gUnknown_3005B60 +_0817C7F4: .4byte sub_0817C7F8 + thumb_func_end sub_0817C7C8 + + thumb_func_start sub_0817C7F8 +sub_0817C7F8: @ 0x0817C7F8 + push {lr} + movs r0, #0x3f + bl sub_080B5568 + bl sub_080B7720 + pop {r0} + bx r0 + thumb_func_end sub_0817C7F8 + + thumb_func_start sub_0817C808 +sub_0817C808: @ 0x0817C808 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + ldr r0, _0817C88C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0817C834 + ldr r0, [sp] + cmp r0, #0x1b + beq _0817C834 + cmp r0, #0xdd + beq _0817C834 + bl _0817DF52 +_0817C834: + ldr r0, _0817C890 + ldr r0, [r0] + movs r1, #0x81 + lsls r1, r1, #2 + adds r7, r0, r1 + ldr r5, _0817C894 + ldrb r0, [r5] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817C898 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0817C89C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _0817C8A0 + ldr r0, [r0] + ldrb r0, [r0, #7] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + cmp r4, #0 + bne _0817C8AC + ldr r2, _0817C8A4 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0817C8A8 + b _0817C8BC + .align 2, 0 +_0817C88C: .4byte gUnknown_2022C90 +_0817C890: .4byte gUnknown_2024140 +_0817C894: .4byte gUnknown_2023EAF +_0817C898: .4byte gUnknown_2023EB0 +_0817C89C: .4byte gUnknown_2023EB2 +_0817C8A0: .4byte gUnknown_203A874 +_0817C8A4: .4byte gUnknown_2023D12 +_0817C8A8: .4byte gUnknown_2024190 +_0817C8AC: + ldr r2, _0817C8D8 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0817C8DC +_0817C8BC: + adds r1, r1, r0 + str r1, [sp, #8] + cmp r6, #0 + bne _0817C8E8 + ldr r0, _0817C8E0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0817C8E4 + b _0817C8F8 + .align 2, 0 +_0817C8D8: .4byte gUnknown_2023D12 +_0817C8DC: .4byte gUnknown_20243E8 +_0817C8E0: .4byte gUnknown_2023EB0 +_0817C8E4: .4byte gUnknown_2024190 +_0817C8E8: + ldr r0, _0817C938 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0817C93C +_0817C8F8: + adds r1, r1, r0 + str r1, [sp, #0xc] + ldr r0, _0817C940 + ldrb r0, [r0] + ldr r1, _0817C944 + ldr r1, [r1] + ldrh r1, [r1] + bl sub_0817F1E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #3 + bls _0817C948 + ldr r0, [sp] + bl sub_0817DF64 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0817C948 + ldr r2, [sp] + cmp r2, #0xc + bls _0817C948 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r1, [r0] + movs r2, #0x1e + bl _0817DF4E + .align 2, 0 +_0817C938: .4byte gUnknown_2023EB0 +_0817C93C: .4byte gUnknown_20243E8 +_0817C940: .4byte gUnknown_2023EAF +_0817C944: .4byte gUnknown_203A874 +_0817C948: + ldr r0, _0817C988 + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + mov r8, r0 + ldr r0, _0817C98C + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x19 + ldr r0, _0817C990 + ldrb r0, [r0] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x19 + ldr r1, [sp] + subs r1, #2 + movs r0, #0xb0 + lsls r0, r0, #1 + cmp r1, r0 + bls _0817C97E + bl _0817DF52 +_0817C97E: + lsls r0, r1, #2 + ldr r1, _0817C994 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0817C988: .4byte gUnknown_2023EAF +_0817C98C: .4byte gUnknown_2023EB0 +_0817C990: .4byte gUnknown_2023EB2 +_0817C994: .4byte _0817C998 +_0817C998: @ jump table + .4byte _0817DC26 @ case 0 + .4byte _0817DF52 @ case 1 + .4byte _0817DF52 @ case 2 + .4byte _0817DF52 @ case 3 + .4byte _0817DF52 @ case 4 + .4byte _0817DF52 @ case 5 + .4byte _0817DF52 @ case 6 + .4byte _0817DF52 @ case 7 + .4byte _0817DF52 @ case 8 + .4byte _0817DF52 @ case 9 + .4byte _0817DF52 @ case 10 + .4byte _0817DF52 @ case 11 + .4byte _0817DF52 @ case 12 + .4byte _0817DF52 @ case 13 + .4byte _0817DF52 @ case 14 + .4byte _0817DF52 @ case 15 + .4byte _0817DF52 @ case 16 + .4byte _0817DF52 @ case 17 + .4byte _0817DF52 @ case 18 + .4byte _0817DF52 @ case 19 + .4byte _0817DF52 @ case 20 + .4byte _0817DF52 @ case 21 + .4byte _0817DF52 @ case 22 + .4byte _0817DF52 @ case 23 + .4byte _0817DF52 @ case 24 + .4byte _0817CF1C @ case 25 + .4byte _0817DC20 @ case 26 + .4byte _0817DC2C @ case 27 + .4byte _0817DF52 @ case 28 + .4byte _0817DF52 @ case 29 + .4byte _0817DF52 @ case 30 + .4byte _0817DF52 @ case 31 + .4byte _0817DF52 @ case 32 + .4byte _0817D914 @ case 33 + .4byte _0817DF52 @ case 34 + .4byte _0817DF52 @ case 35 + .4byte _0817DF52 @ case 36 + .4byte _0817DF52 @ case 37 + .4byte _0817D684 @ case 38 + .4byte _0817DF52 @ case 39 + .4byte _0817D750 @ case 40 + .4byte _0817DF52 @ case 41 + .4byte _0817D6E4 @ case 42 + .4byte _0817DF52 @ case 43 + .4byte _0817D5B0 @ case 44 + .4byte _0817DF52 @ case 45 + .4byte _0817D618 @ case 46 + .4byte _0817D9D0 @ case 47 + .4byte _0817DF52 @ case 48 + .4byte _0817DA3C @ case 49 + .4byte _0817DF52 @ case 50 + .4byte _0817DF52 @ case 51 + .4byte _0817DF52 @ case 52 + .4byte _0817D86E @ case 53 + .4byte _0817DF52 @ case 54 + .4byte _0817D8D0 @ case 55 + .4byte _0817DF52 @ case 56 + .4byte _0817DF52 @ case 57 + .4byte _0817DF52 @ case 58 + .4byte _0817DF52 @ case 59 + .4byte _0817DF52 @ case 60 + .4byte _0817DF52 @ case 61 + .4byte _0817DF52 @ case 62 + .4byte _0817DF52 @ case 63 + .4byte _0817DF52 @ case 64 + .4byte _0817DA80 @ case 65 + .4byte _0817DF52 @ case 66 + .4byte _0817D7F8 @ case 67 + .4byte _0817DF52 @ case 68 + .4byte _0817D840 @ case 69 + .4byte _0817DF52 @ case 70 + .4byte _0817DF52 @ case 71 + .4byte _0817DEEC @ case 72 + .4byte _0817DF52 @ case 73 + .4byte _0817DF52 @ case 74 + .4byte _0817DCBC @ case 75 + .4byte _0817DC74 @ case 76 + .4byte _0817DD88 @ case 77 + .4byte _0817DDD0 @ case 78 + .4byte _0817DDFA @ case 79 + .4byte _0817DF52 @ case 80 + .4byte _0817DF52 @ case 81 + .4byte _0817DF52 @ case 82 + .4byte _0817DF52 @ case 83 + .4byte _0817DF52 @ case 84 + .4byte _0817DF52 @ case 85 + .4byte _0817DF52 @ case 86 + .4byte _0817DF52 @ case 87 + .4byte _0817D50A @ case 88 + .4byte _0817D50A @ case 89 + .4byte _0817D50A @ case 90 + .4byte _0817D50A @ case 91 + .4byte _0817D544 @ case 92 + .4byte _0817DF52 @ case 93 + .4byte _0817DF3A @ case 94 + .4byte _0817DE1C @ case 95 + .4byte _0817DE68 @ case 96 + .4byte _0817DF52 @ case 97 + .4byte _0817DF3A @ case 98 + .4byte _0817DF52 @ case 99 + .4byte _0817DF52 @ case 100 + .4byte _0817DF52 @ case 101 + .4byte _0817D3E8 @ case 102 + .4byte _0817DF52 @ case 103 + .4byte _0817D430 @ case 104 + .4byte _0817D978 @ case 105 + .4byte _0817DF52 @ case 106 + .4byte _0817DF52 @ case 107 + .4byte _0817DF52 @ case 108 + .4byte _0817DF52 @ case 109 + .4byte _0817DF52 @ case 110 + .4byte _0817DF52 @ case 111 + .4byte _0817DF52 @ case 112 + .4byte _0817DF52 @ case 113 + .4byte _0817DF52 @ case 114 + .4byte _0817DF52 @ case 115 + .4byte _0817DF52 @ case 116 + .4byte _0817DF52 @ case 117 + .4byte _0817DF52 @ case 118 + .4byte _0817DF52 @ case 119 + .4byte _0817DF52 @ case 120 + .4byte _0817DF52 @ case 121 + .4byte _0817DF52 @ case 122 + .4byte _0817D252 @ case 123 + .4byte _0817DF52 @ case 124 + .4byte _0817DF52 @ case 125 + .4byte _0817DF52 @ case 126 + .4byte _0817DF52 @ case 127 + .4byte _0817DF52 @ case 128 + .4byte _0817DF52 @ case 129 + .4byte _0817DF52 @ case 130 + .4byte _0817DF52 @ case 131 + .4byte _0817DF52 @ case 132 + .4byte _0817DF52 @ case 133 + .4byte _0817DF52 @ case 134 + .4byte _0817DF52 @ case 135 + .4byte _0817DF52 @ case 136 + .4byte _0817D142 @ case 137 + .4byte _0817D190 @ case 138 + .4byte _0817DF52 @ case 139 + .4byte _0817DF52 @ case 140 + .4byte _0817DF52 @ case 141 + .4byte _0817D47A @ case 142 + .4byte _0817D4B4 @ case 143 + .4byte _0817D344 @ case 144 + .4byte _0817D38C @ case 145 + .4byte _0817DB0E @ case 146 + .4byte _0817DB44 @ case 147 + .4byte _0817DF52 @ case 148 + .4byte _0817D064 @ case 149 + .4byte _0817DF52 @ case 150 + .4byte _0817DF52 @ case 151 + .4byte _0817DF52 @ case 152 + .4byte _0817DF52 @ case 153 + .4byte _0817DF52 @ case 154 + .4byte _0817DF52 @ case 155 + .4byte _0817DF52 @ case 156 + .4byte _0817DB88 @ case 157 + .4byte _0817DF52 @ case 158 + .4byte _0817CF88 @ case 159 + .4byte _0817DF52 @ case 160 + .4byte _0817DF52 @ case 161 + .4byte _0817DF52 @ case 162 + .4byte _0817DF52 @ case 163 + .4byte _0817DF52 @ case 164 + .4byte _0817DF52 @ case 165 + .4byte _0817DF52 @ case 166 + .4byte _0817DF52 @ case 167 + .4byte _0817DF52 @ case 168 + .4byte _0817DF52 @ case 169 + .4byte _0817DF52 @ case 170 + .4byte _0817DF52 @ case 171 + .4byte _0817DF52 @ case 172 + .4byte _0817DF52 @ case 173 + .4byte _0817DF52 @ case 174 + .4byte _0817DF52 @ case 175 + .4byte _0817D08C @ case 176 + .4byte _0817D1C0 @ case 177 + .4byte _0817D200 @ case 178 + .4byte _0817D21E @ case 179 + .4byte _0817DF52 @ case 180 + .4byte _0817DF52 @ case 181 + .4byte _0817DF52 @ case 182 + .4byte _0817DF52 @ case 183 + .4byte _0817DF52 @ case 184 + .4byte _0817D0C2 @ case 185 + .4byte _0817D10C @ case 186 + .4byte _0817DF52 @ case 187 + .4byte _0817DF52 @ case 188 + .4byte _0817DF52 @ case 189 + .4byte _0817DF52 @ case 190 + .4byte _0817DF52 @ case 191 + .4byte _0817DF52 @ case 192 + .4byte _0817DF52 @ case 193 + .4byte _0817DF52 @ case 194 + .4byte _0817DF52 @ case 195 + .4byte _0817DF52 @ case 196 + .4byte _0817DF52 @ case 197 + .4byte _0817DF52 @ case 198 + .4byte _0817DF52 @ case 199 + .4byte _0817DF52 @ case 200 + .4byte _0817DF52 @ case 201 + .4byte _0817DF52 @ case 202 + .4byte _0817DF52 @ case 203 + .4byte _0817DF52 @ case 204 + .4byte _0817DF52 @ case 205 + .4byte _0817DF52 @ case 206 + .4byte _0817DF52 @ case 207 + .4byte _0817DF52 @ case 208 + .4byte _0817DF52 @ case 209 + .4byte _0817DF52 @ case 210 + .4byte _0817D26C @ case 211 + .4byte _0817D29E @ case 212 + .4byte _0817D2EC @ case 213 + .4byte _0817D308 @ case 214 + .4byte _0817D264 @ case 215 + .4byte _0817DF52 @ case 216 + .4byte _0817DF52 @ case 217 + .4byte _0817DF52 @ case 218 + .4byte _0817CF44 @ case 219 + .4byte _0817CF80 @ case 220 + .4byte _0817DF52 @ case 221 + .4byte _0817DF52 @ case 222 + .4byte _0817DF52 @ case 223 + .4byte _0817DF52 @ case 224 + .4byte _0817DF52 @ case 225 + .4byte _0817DF52 @ case 226 + .4byte _0817DF52 @ case 227 + .4byte _0817DACC @ case 228 + .4byte _0817DF52 @ case 229 + .4byte _0817DF52 @ case 230 + .4byte _0817DF52 @ case 231 + .4byte _0817DF52 @ case 232 + .4byte _0817DF52 @ case 233 + .4byte _0817DF52 @ case 234 + .4byte _0817DF52 @ case 235 + .4byte _0817DF52 @ case 236 + .4byte _0817DF52 @ case 237 + .4byte _0817DF52 @ case 238 + .4byte _0817DF52 @ case 239 + .4byte _0817DF52 @ case 240 + .4byte _0817DF52 @ case 241 + .4byte _0817DF52 @ case 242 + .4byte _0817DF52 @ case 243 + .4byte _0817DF52 @ case 244 + .4byte _0817DF52 @ case 245 + .4byte _0817DF52 @ case 246 + .4byte _0817DF52 @ case 247 + .4byte _0817DF52 @ case 248 + .4byte _0817DF52 @ case 249 + .4byte _0817DF52 @ case 250 + .4byte _0817DF52 @ case 251 + .4byte _0817D018 @ case 252 + .4byte _0817DF52 @ case 253 + .4byte _0817DF52 @ case 254 + .4byte _0817DF52 @ case 255 + .4byte _0817DF52 @ case 256 + .4byte _0817DF52 @ case 257 + .4byte _0817DF52 @ case 258 + .4byte _0817DF52 @ case 259 + .4byte _0817DF52 @ case 260 + .4byte _0817DF52 @ case 261 + .4byte _0817DF52 @ case 262 + .4byte _0817DF52 @ case 263 + .4byte _0817DF52 @ case 264 + .4byte _0817DF52 @ case 265 + .4byte _0817DF52 @ case 266 + .4byte _0817DF52 @ case 267 + .4byte _0817DF52 @ case 268 + .4byte _0817DF52 @ case 269 + .4byte _0817DF52 @ case 270 + .4byte _0817DF52 @ case 271 + .4byte _0817DF52 @ case 272 + .4byte _0817DF52 @ case 273 + .4byte _0817DF52 @ case 274 + .4byte _0817DF52 @ case 275 + .4byte _0817DF52 @ case 276 + .4byte _0817DF52 @ case 277 + .4byte _0817DF52 @ case 278 + .4byte _0817DF52 @ case 279 + .4byte _0817DF52 @ case 280 + .4byte _0817DF52 @ case 281 + .4byte _0817DF52 @ case 282 + .4byte _0817DF52 @ case 283 + .4byte _0817DF52 @ case 284 + .4byte _0817DF52 @ case 285 + .4byte _0817DF52 @ case 286 + .4byte _0817DF52 @ case 287 + .4byte _0817DF52 @ case 288 + .4byte _0817DF52 @ case 289 + .4byte _0817DF52 @ case 290 + .4byte _0817DF52 @ case 291 + .4byte _0817DF52 @ case 292 + .4byte _0817DF52 @ case 293 + .4byte _0817DF52 @ case 294 + .4byte _0817DF52 @ case 295 + .4byte _0817DF52 @ case 296 + .4byte _0817DF52 @ case 297 + .4byte _0817DF52 @ case 298 + .4byte _0817DF52 @ case 299 + .4byte _0817DF52 @ case 300 + .4byte _0817DF52 @ case 301 + .4byte _0817DF52 @ case 302 + .4byte _0817DF52 @ case 303 + .4byte _0817DF52 @ case 304 + .4byte _0817DF52 @ case 305 + .4byte _0817DF52 @ case 306 + .4byte _0817DF52 @ case 307 + .4byte _0817DF52 @ case 308 + .4byte _0817DF52 @ case 309 + .4byte _0817DF52 @ case 310 + .4byte _0817DF52 @ case 311 + .4byte _0817DF52 @ case 312 + .4byte _0817DBE4 @ case 313 + .4byte _0817DBA8 @ case 314 + .4byte _0817DF52 @ case 315 + .4byte _0817DF52 @ case 316 + .4byte _0817DF52 @ case 317 + .4byte _0817DF52 @ case 318 + .4byte _0817DF52 @ case 319 + .4byte _0817DF52 @ case 320 + .4byte _0817DF52 @ case 321 + .4byte _0817DF52 @ case 322 + .4byte _0817DF52 @ case 323 + .4byte _0817DF52 @ case 324 + .4byte _0817DF52 @ case 325 + .4byte _0817D50A @ case 326 + .4byte _0817DF52 @ case 327 + .4byte _0817DF52 @ case 328 + .4byte _0817DF52 @ case 329 + .4byte _0817DF52 @ case 330 + .4byte _0817DF52 @ case 331 + .4byte _0817DF52 @ case 332 + .4byte _0817CFD0 @ case 333 + .4byte _0817DF52 @ case 334 + .4byte _0817DF52 @ case 335 + .4byte _0817DF52 @ case 336 + .4byte _0817DF52 @ case 337 + .4byte _0817DF52 @ case 338 + .4byte _0817DF52 @ case 339 + .4byte _0817DF52 @ case 340 + .4byte _0817DF52 @ case 341 + .4byte _0817DF52 @ case 342 + .4byte _0817DF52 @ case 343 + .4byte _0817DF52 @ case 344 + .4byte _0817DF52 @ case 345 + .4byte _0817DF52 @ case 346 + .4byte _0817DF52 @ case 347 + .4byte _0817DF52 @ case 348 + .4byte _0817DD04 @ case 349 + .4byte _0817DC74 @ case 350 + .4byte _0817DCBC @ case 351 + .4byte _0817DE92 @ case 352 +_0817CF1C: + movs r0, #1 + mov r1, sl + movs r2, #2 + movs r3, #0 + bl AddMovePoints + ldr r0, _0817CF40 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0817CF38 + bl _0817DF52 +_0817CF38: + bl sub_0817ED78 + bl _0817DF52 + .align 2, 0 +_0817CF40: .4byte gUnknown_2022C90 +_0817CF44: + movs r0, #1 + mov r1, sl + movs r2, #1 + movs r3, #0 + bl AddMovePoints + ldr r0, _0817CF7C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0817CF60 + bl _0817DF52 +_0817CF60: + ldr r0, [sp, #0xc] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817CF72 + bl _0817DF52 +_0817CF72: + bl sub_0817ED78 + bl _0817DF52 + .align 2, 0 +_0817CF7C: .4byte gUnknown_2022C90 +_0817CF80: + movs r0, #1 + mov r1, sl + movs r2, #0 + b _0817D33A +_0817CF88: + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #2 + adds r3, r7, r3 + ldr r1, _0817CFC4 + ldr r0, _0817CFC8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r0, #1 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #0xf + ldr r1, [r3, #0x50] + ldr r2, _0817CFCC + ands r1, r2 + orrs r1, r0 + str r1, [r3, #0x50] + adds r3, #0x55 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #0xd + rsbs r0, r0, #0 + bl _0817DAB8 + .align 2, 0 +_0817CFC4: .4byte gUnknown_2023D12 +_0817CFC8: .4byte gUnknown_2023EAF +_0817CFCC: .4byte 0xFFFC7FFF +_0817CFD0: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817D010 + ldr r0, _0817D014 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x52 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r4] + movs r0, #0x1d + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x55 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r2] + movs r0, #0x31 + rsbs r0, r0, #0 + bl _0817DE56 + .align 2, 0 +_0817D010: .4byte gUnknown_2023D12 +_0817D014: .4byte gUnknown_2023EAF +_0817D018: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r5, r7, r0 + ldr r1, _0817D05C + ldr r0, _0817D060 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r3, r5, #0 + adds r3, #0x52 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x1f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r4, r5, #0 + adds r4, #0x55 + mov r0, sl + lsls r2, r0, #6 + ldrb r1, [r4] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r4] + adds r2, r5, #0 + adds r2, #0x58 + ldrb r0, [r2] + movs r1, #0x40 + bl _0817DE58 + .align 2, 0 +_0817D05C: .4byte gUnknown_2023D12 +_0817D060: .4byte gUnknown_2023EAF +_0817D064: + ldr r1, _0817D088 + ldrb r0, [r1] + cmp r0, #0 + beq _0817D070 + bl _0817DF52 +_0817D070: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x14 + bl _0817DF4E + .align 2, 0 +_0817D088: .4byte gUnknown_2022C10 +_0817D08C: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r3, r7, r0 + adds r0, r3, #0 + adds r0, #0x53 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D0A6 + bl _0817DF52 +_0817D0A6: + adds r2, r6, #0 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x56 + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #2 + bl sub_0817D9BC +_0817D0C2: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817D104 + ldr r0, _0817D108 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x53 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x56 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + bl _0817DE56 + .align 2, 0 +_0817D104: .4byte gUnknown_2023D12 +_0817D108: .4byte gUnknown_2023EAF +_0817D10C: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r3, r7, r0 + adds r0, r3, #0 + adds r0, #0x53 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D126 + bl _0817DF52 +_0817D126: + adds r2, r6, #0 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x56 + ldrb r3, [r0] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #2 + bl _0817DA6E @ long jump +_0817D142: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817D184 + ldr r0, _0817D188 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r2, #0x56 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r2] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #7 + ldrh r3, [r2] + ldr r0, _0817D18C + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + bl _0817DF52 + .align 2, 0 +_0817D184: .4byte gUnknown_2023D12 +_0817D188: .4byte gUnknown_2023EAF +_0817D18C: .4byte 0xFFFFFE7F +_0817D190: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x56 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D1A8 + bl _0817DF52 +_0817D1A8: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x16 + bl _0817DF4E +_0817D1C0: + mov r2, r8 + lsls r3, r2, #3 + lsls r0, r4, #4 + adds r3, r3, r0 + adds r3, r7, r3 + ldr r1, _0817D1F8 + ldr r0, _0817D1FC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r3, #0x35 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + movs r2, #3 + mov r1, sl + ands r1, r2 + lsls r1, r1, #3 + movs r2, #0x19 + rsbs r2, r2, #0 + bl _0817DAB8 + .align 2, 0 +_0817D1F8: .4byte gUnknown_2023D12 +_0817D1FC: .4byte gUnknown_2023EAF +_0817D200: + mov r1, r8 + lsls r0, r1, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r0, r7, r0 + adds r0, #0x35 + ldrb r1, [r0] + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D21A + bl _0817DF52 +_0817D21A: + adds r2, r4, #0 + b _0817D238 +_0817D21E: + lsls r0, r5, #3 + lsls r1, r6, #4 + adds r0, r0, r1 + adds r0, r7, r0 + adds r0, #0x35 + ldrb r1, [r0] + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D236 + bl _0817DF52 +_0817D236: + adds r2, r6, #0 +_0817D238: + subs r0, #1 + lsls r0, r0, #2 + lsls r3, r1, #0x1b + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #2 + movs r1, #6 + bl AddMovePoints + bl _0817DF52 +_0817D252: + ldr r0, _0817D260 + ldr r0, [r0] + adds r0, #0xb3 + movs r1, #1 + bl _0817DF50 + .align 2, 0 +_0817D260: .4byte gUnknown_2024140 +_0817D264: + movs r0, #0x12 + mov r1, sl + movs r2, #0 + b _0817D33A +_0817D26C: + ldr r0, _0817D28C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0817D278 + bl _0817DF52 +_0817D278: + ldr r1, _0817D290 + ldrh r0, [r1] + cmp r0, #0xd1 + bne _0817D294 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x17 + b _0817D338 + .align 2, 0 +_0817D28C: .4byte gUnknown_2022C0C +_0817D290: .4byte gUnknown_2022C1E +_0817D294: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x16 + b _0817D338 +_0817D29E: + ldr r0, _0817D2C8 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0817D2AA + bl _0817DF52 +_0817D2AA: + ldr r0, _0817D2CC + ldr r1, _0817D2D0 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0817D2E2 + ldr r1, _0817D2D4 + ldrh r0, [r1] + cmp r0, #0xd1 + bne _0817D2D8 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x17 + b _0817D338 + .align 2, 0 +_0817D2C8: .4byte gUnknown_2022C0C +_0817D2CC: .4byte gUnknown_2023EAF +_0817D2D0: .4byte gUnknown_2023EB0 +_0817D2D4: .4byte gUnknown_2022C1E +_0817D2D8: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x16 + b _0817D338 +_0817D2E2: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x1b + b _0817D338 +_0817D2EC: + ldr r0, _0817D304 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0817D2F8 + bl _0817DF52 +_0817D2F8: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x18 + b _0817D338 + .align 2, 0 +_0817D304: .4byte gUnknown_2022C0C +_0817D308: + ldr r0, _0817D328 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0817D314 + bl _0817DF52 +_0817D314: + ldr r1, _0817D32C + ldrh r0, [r1] + cmp r0, #0xd3 + bne _0817D330 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x1a + b _0817D338 + .align 2, 0 +_0817D328: .4byte gUnknown_2022C0C +_0817D32C: .4byte gUnknown_2022C1E +_0817D330: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x19 +_0817D338: + mov r1, sl +_0817D33A: + movs r3, #0 + bl AddMovePoints + bl _0817DF52 +_0817D344: + lsls r2, r5, #3 + lsls r0, r6, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817D384 + ldr r0, _0817D388 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x30 + movs r0, #7 + ands r1, r0 + ldrb r3, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x32 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + bl _0817DE56 + .align 2, 0 +_0817D384: .4byte gUnknown_2023D12 +_0817D388: .4byte gUnknown_2023EAF +_0817D38C: + ldr r0, [sp, #8] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817D39E + bl _0817DF52 +_0817D39E: + mov r2, r8 + lsls r0, r2, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x30 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D3BA + bl _0817DF52 +_0817D3BA: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + movs r0, #8 + movs r1, #0 + bl AddMovePoints + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r1, #0x57 + ldrb r2, [r1] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #2 + b _0817D59E +_0817D3E8: + lsls r2, r5, #3 + lsls r0, r6, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817D428 + ldr r0, _0817D42C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x30 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x32 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r2] + movs r0, #0x31 + rsbs r0, r0, #0 + bl _0817DE56 + .align 2, 0 +_0817D428: .4byte gUnknown_2023D12 +_0817D42C: .4byte gUnknown_2023EAF +_0817D430: + mov r1, r8 + lsls r0, r1, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x30 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D44C + bl _0817DF52 +_0817D44C: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + movs r0, #8 + movs r1, #1 + bl AddMovePoints + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r1, #0x57 + ldrb r2, [r1] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + b _0817D59E +_0817D47A: + lsls r2, r5, #3 + lsls r0, r6, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817D4A8 + ldr r0, _0817D4AC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #6 + ldrh r3, [r2, #0x30] + ldr r0, _0817D4B0 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #0x30] + adds r2, #0x32 + bl _0817DDB6 + .align 2, 0 +_0817D4A8: .4byte gUnknown_2023D12 +_0817D4AC: .4byte gUnknown_2023EAF +_0817D4B0: .4byte 0xFFFFFE3F +_0817D4B4: + ldr r0, [sp, #8] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817D4C6 + bl _0817DF52 +_0817D4C6: + mov r1, r8 + lsls r0, r1, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + ldrh r0, [r1, #0x30] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D4DE + bl _0817DF52 +_0817D4DE: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsrs r3, r3, #6 + movs r0, #8 + movs r1, #5 + bl AddMovePoints + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r1, #0x57 + ldrb r2, [r1] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #0xa + b _0817D59E +_0817D50A: + lsls r2, r5, #3 + lsls r0, r6, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817D53C + ldr r0, _0817D540 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x31 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r3, [r4] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x33 + bl _0817DE4A + .align 2, 0 +_0817D53C: .4byte gUnknown_2023D12 +_0817D540: .4byte gUnknown_2023EAF +_0817D544: + ldr r0, [sp, #8] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817D556 + bl _0817DF52 +_0817D556: + mov r1, r8 + lsls r0, r1, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x31 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D572 + bl _0817DF52 +_0817D572: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x33 + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #8 + movs r1, #6 + bl AddMovePoints + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r1, #0x57 + ldrb r2, [r1] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #0xc +_0817D59E: + orrs r0, r2 + mov r2, r8 + lsls r3, r2, #5 + movs r2, #0x1f + ands r0, r2 + orrs r0, r3 + strb r0, [r1] + bl _0817DF52 +_0817D5B0: + ldr r5, _0817D608 + ldr r6, _0817D60C + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #2 + mov r0, sb + lsls r4, r0, #1 + add r4, sb + lsls r4, r4, #3 + adds r2, r2, r4 + adds r2, r7, r2 + ldr r0, _0817D610 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #6 + ldrh r3, [r2] + ldr r0, _0817D614 + ands r0, r3 + orrs r0, r1 + strh r0, [r2] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + mov r2, sl + lsls r3, r2, #6 + ldrb r2, [r1, #2] + movs r0, #0x3f + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #2] + bl _0817DF52 + .align 2, 0 +_0817D608: .4byte gUnknown_2023D12 +_0817D60C: .4byte gUnknown_2023EB2 +_0817D610: .4byte gUnknown_2023EAF +_0817D614: .4byte 0xFFFFFE3F +_0817D618: + ldr r0, [sp, #8] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817D62A + bl _0817DF52 +_0817D62A: + ldr r6, _0817D67C + ldr r5, _0817D680 + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + lsls r0, r0, #2 + lsls r1, r4, #1 + adds r4, r1, r4 + lsls r1, r4, #3 + adds r0, r0, r1 + adds r1, r7, r0 + ldrh r0, [r1] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817D65E + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #2] + lsrs r3, r3, #6 + movs r0, #8 + movs r1, #4 + bl AddMovePoints +_0817D65E: + lsls r3, r4, #2 + adds r3, r7, r3 + adds r3, #0x57 + ldrb r0, [r3] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r3] + ldrb r0, [r5] + lsls r0, r0, #1 + adds r0, r0, r6 + b _0817D7E0 + .align 2, 0 +_0817D67C: .4byte gUnknown_2023D12 +_0817D680: .4byte gUnknown_2023EAF +_0817D684: + ldr r5, _0817D6D8 + ldr r6, _0817D6DC + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #2 + mov r0, sb + lsls r4, r0, #1 + add r4, sb + lsls r4, r4, #3 + adds r2, r2, r4 + adds r2, r7, r2 + ldr r0, _0817D6E0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + ldrb r3, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + movs r0, #3 + mov r2, sl + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #2] + movs r0, #0xd + rsbs r0, r0, #0 + b _0817D738 + .align 2, 0 +_0817D6D8: .4byte gUnknown_2023D12 +_0817D6DC: .4byte gUnknown_2023EB2 +_0817D6E0: .4byte gUnknown_2023EAF +_0817D6E4: + ldr r5, _0817D744 + ldr r6, _0817D748 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #2 + mov r1, sb + lsls r4, r1, #1 + add r4, sb + lsls r4, r4, #3 + adds r2, r2, r4 + adds r2, r7, r2 + ldr r0, _0817D74C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + movs r0, #3 + mov r2, sl + ands r2, r0 + lsls r2, r2, #4 + ldrb r3, [r1, #2] + movs r0, #0x31 + rsbs r0, r0, #0 +_0817D738: + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #2] + bl _0817DF52 + .align 2, 0 +_0817D744: .4byte gUnknown_2023D12 +_0817D748: .4byte gUnknown_2023EB2 +_0817D74C: .4byte gUnknown_2023EAF +_0817D750: + ldr r0, [sp, #8] + movs r1, #0x39 + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817D762 + bl _0817DF52 +_0817D762: + ldr r2, _0817D7F0 + mov r8, r2 + ldr r6, _0817D7F4 + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + lsls r0, r0, #2 + lsls r1, r4, #1 + adds r5, r1, r4 + lsls r4, r5, #3 + adds r0, r0, r4 + adds r1, r7, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817D79A + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #2] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + movs r0, #8 + movs r1, #2 + bl AddMovePoints +_0817D79A: + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r4 + adds r1, r7, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817D7C6 + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #2] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + movs r0, #8 + movs r1, #3 + bl AddMovePoints +_0817D7C6: + lsls r3, r5, #2 + adds r3, r7, r3 + adds r3, #0x57 + ldrb r0, [r3] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strb r1, [r3] + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 +_0817D7E0: + ldrh r0, [r0] + lsls r0, r0, #5 + movs r2, #0x1f + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + b _0817DF52 + .align 2, 0 +_0817D7F0: .4byte gUnknown_2023D12 +_0817D7F4: .4byte gUnknown_2023EAF +_0817D7F8: + lsls r2, r5, #3 + lsls r0, r6, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817D838 + ldr r0, _0817D83C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x31 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r4] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x33 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + b _0817DE56 + .align 2, 0 +_0817D838: .4byte gUnknown_2023D12 +_0817D83C: .4byte gUnknown_2023EAF +_0817D840: + mov r1, r8 + lsls r0, r1, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x31 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D85A + b _0817DF52 +_0817D85A: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x33 + ldrb r3, [r0] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + movs r0, #9 + b _0817DF32 +_0817D86E: + ldr r5, _0817D8C4 + ldr r6, _0817D8C8 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #2 + mov r0, sb + lsls r4, r0, #1 + add r4, sb + lsls r4, r4, #3 + adds r2, r2, r4 + adds r2, r7, r2 + ldr r0, _0817D8CC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r3, [r2, #1] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + movs r0, #3 + mov r2, sl + ands r2, r0 + ldrb r3, [r1, #3] + movs r0, #4 + rsbs r0, r0, #0 + b _0817DA22 + .align 2, 0 +_0817D8C4: .4byte gUnknown_2023D12 +_0817D8C8: .4byte gUnknown_2023EB2 +_0817D8CC: .4byte gUnknown_2023EAF +_0817D8D0: + ldr r1, _0817D90C + ldr r0, _0817D910 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r7, r1 + ldrb r0, [r1, #1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817D8F4 + b _0817DF52 +_0817D8F4: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #3] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #9 + movs r1, #2 + bl AddMovePoints + b _0817DF52 + .align 2, 0 +_0817D90C: .4byte gUnknown_2023D12 +_0817D910: .4byte gUnknown_2023EAF +_0817D914: + ldr r5, _0817D96C + ldr r6, _0817D970 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #2 + mov r1, sb + lsls r4, r1, #1 + add r4, sb + lsls r4, r4, #3 + adds r2, r2, r4 + adds r2, r7, r2 + ldr r0, _0817D974 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r2, #1] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #1] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + movs r0, #3 + mov r2, sl + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #3] + movs r0, #0xd + rsbs r0, r0, #0 + b _0817DA22 + .align 2, 0 +_0817D96C: .4byte gUnknown_2023D12 +_0817D970: .4byte gUnknown_2023EB2 +_0817D974: .4byte gUnknown_2023EAF +_0817D978: + ldr r1, _0817D9C4 + ldr r0, _0817D9C8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r7, r1 + ldrb r0, [r1, #1] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x1d + cmp r2, #0 + bne _0817D99C + b _0817DF52 +_0817D99C: + ldr r0, _0817D9CC + ldr r0, [r0] + ldrh r0, [r0] + cmp r0, #0xad + bne _0817D9A8 + b _0817DF52 +_0817D9A8: + cmp r0, #0xd6 + bne _0817D9AE + b _0817DF52 +_0817D9AE: + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #3] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + movs r0, #9 + thumb_func_end sub_0817C808 + + thumb_func_start sub_0817D9BC +sub_0817D9BC: @ 0x0817D9BC + movs r1, #3 + bl AddMovePoints + b _0817DF52 + .align 2, 0 +_0817D9C4: .4byte gUnknown_2023D12 +_0817D9C8: .4byte gUnknown_2023EAF +_0817D9CC: .4byte gUnknown_203A874 +_0817D9D0: + ldr r5, _0817DA2C + ldr r6, _0817DA30 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r3, [r0] + lsls r3, r3, #2 + mov r2, sb + lsls r4, r2, #1 + add r4, sb + lsls r4, r4, #3 + adds r3, r3, r4 + adds r3, r7, r3 + ldr r0, _0817DA34 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + adds r0, #1 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #0xf + ldr r1, [r3] + ldr r2, _0817DA38 + ands r1, r2 + orrs r1, r0 + str r1, [r3] + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, r7, r1 + movs r0, #3 + mov r2, sl + ands r2, r0 + lsls r2, r2, #4 + ldrb r3, [r1, #3] + movs r0, #0x31 + rsbs r0, r0, #0 +_0817DA22: + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #3] + b _0817DF52 + .align 2, 0 +_0817DA2C: .4byte gUnknown_2023D12 +_0817DA30: .4byte gUnknown_2023EB2 +_0817DA34: .4byte gUnknown_2023EAF +_0817DA38: .4byte 0xFFFC7FFF +_0817DA3C: + ldr r1, _0817DA78 + ldr r0, _0817DA7C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r7, r1 + ldr r0, [r1] + lsls r0, r0, #0xe + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817DA60 + b _0817DF52 +_0817DA60: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r3, [r1, #3] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + movs r0, #9 +_0817DA6E: + movs r1, #4 + bl AddMovePoints + b _0817DF52 + .align 2, 0 +_0817DA78: .4byte gUnknown_2023D12 +_0817DA7C: .4byte gUnknown_2023EAF +_0817DA80: + lsls r3, r3, #3 + mov r1, sb + lsls r0, r1, #4 + adds r3, r3, r0 + adds r3, r7, r3 + ldr r1, _0817DAC0 + ldr r0, _0817DAC4 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r0, #1 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #0xf + ldr r1, [r3, #0x30] + ldr r2, _0817DAC8 + ands r1, r2 + orrs r1, r0 + str r1, [r3, #0x30] + adds r3, #0x33 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #4 + ldrb r2, [r3] + movs r0, #0x31 + rsbs r0, r0, #0 +_0817DAB8: + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _0817DF52 + .align 2, 0 +_0817DAC0: .4byte gUnknown_2023D12 +_0817DAC4: .4byte gUnknown_2023EAF +_0817DAC8: .4byte 0xFFFC7FFF +_0817DACC: + mov r2, r8 + lsls r0, r2, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r3, r7, r0 + ldr r0, [r3, #0x30] + lsls r0, r0, #0xe + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817DAF8 + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r3, #0 + adds r0, #0x33 + ldrb r3, [r0] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + movs r0, #9 + movs r1, #1 + bl AddMovePoints +_0817DAF8: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x18 + b _0817DF4E +_0817DB0E: + lsls r2, r6, #1 + adds r2, r2, r6 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817DB3C + ldr r0, _0817DB40 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x50 + movs r0, #7 + ands r1, r0 + ldrb r3, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x54 + b _0817DE4A + .align 2, 0 +_0817DB3C: .4byte gUnknown_2023D12 +_0817DB40: .4byte gUnknown_2023EAF +_0817DB44: + ldr r1, [sp, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r7, r0 + adds r0, r4, #0 + adds r0, #0x50 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r2, r0, #0x1d + cmp r2, #0 + bne _0817DB5E + b _0817DF52 +_0817DB5E: + movs r0, #1 + eors r1, r0 + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r0, #0x54 + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #0xa + bl AddMovePoints + adds r2, r4, #0 + adds r2, #0x57 + ldrb r1, [r2] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0xe + b _0817DE58 +_0817DB88: + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r3, r1, #0 + adds r3, #0x50 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + adds r1, #0x54 + ldrb r2, [r1] + movs r0, #4 + rsbs r0, r0, #0 + b _0817DE16 +_0817DBA8: + mov r0, r8 + lsls r2, r0, #3 + lsls r0, r4, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817DBDC + ldr r0, _0817DBE0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x34 + movs r0, #7 + ands r1, r0 + ldrb r3, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x33 + mov r1, sl + lsls r3, r1, #6 + b _0817DDBA + .align 2, 0 +_0817DBDC: .4byte gUnknown_2023D12 +_0817DBE0: .4byte gUnknown_2023EAF +_0817DBE4: + mov r0, r8 + lsls r2, r0, #3 + lsls r0, r4, #4 + adds r2, r2, r0 + adds r2, r7, r2 + ldr r1, _0817DC18 + ldr r0, _0817DC1C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r2, #0x34 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + mov r1, sl + lsls r3, r1, #6 + movs r1, #0x3f + b _0817DDBE + .align 2, 0 +_0817DC18: .4byte gUnknown_2023D12 +_0817DC1C: .4byte gUnknown_2023EAF +_0817DC20: + movs r0, #0 + bl AddPointsOnFainting +_0817DC26: + mov r2, r8 + lsls r0, r2, #3 + b _0817DC34 +_0817DC2C: + movs r0, #1 + bl AddPointsOnFainting + lsls r0, r5, #3 +_0817DC34: + lsls r1, r4, #4 + adds r0, r0, r1 + adds r1, r7, r0 + adds r4, r1, #0 + adds r4, #0x34 + ldrb r5, [r4] + lsls r0, r5, #0x1d + cmp r0, #0 + beq _0817DC5A + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r5 + strb r0, [r4] + adds r2, r1, #0 + adds r2, #0x33 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2] +_0817DC5A: + ldrb r1, [r4] + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817DC66 + b _0817DF52 +_0817DC66: + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x3f + ands r0, r1 + strb r0, [r4] + b _0817DF52 +_0817DC74: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817DCB4 + ldr r0, _0817DCB8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x50 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x54 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #0xd + rsbs r0, r0, #0 + b _0817DE56 + .align 2, 0 +_0817DCB4: .4byte gUnknown_2023D12 +_0817DCB8: .4byte gUnknown_2023EAF +_0817DCBC: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817DCF8 + ldr r0, _0817DCFC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x50 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #6 + ldrh r3, [r4] + ldr r0, _0817DD00 + ands r0, r3 + orrs r0, r1 + strh r0, [r4] + adds r2, #0x54 + movs r0, #3 + mov r1, sl + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r2] + movs r0, #0x31 + rsbs r0, r0, #0 + b _0817DE56 + .align 2, 0 +_0817DCF8: .4byte gUnknown_2023D12 +_0817DCFC: .4byte gUnknown_2023EAF +_0817DD00: .4byte 0xFFFFFE3F +_0817DD04: + ldr r1, _0817DD80 + ldrh r0, [r1] + cmp r0, #0x73 + bne _0817DD2E + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r3, r1, #0 + adds r3, #0x50 + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + adds r1, #0x54 + ldrb r2, [r1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0817DD2E: + ldr r2, _0817DD80 + ldrh r0, [r2] + cmp r0, #0x71 + bne _0817DD56 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r3, r1, #0 + adds r3, #0x50 + ldrh r2, [r3] + ldr r0, _0817DD84 + ands r0, r2 + strh r0, [r3] + adds r1, #0x54 + ldrb r2, [r1] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0817DD56: + ldr r1, _0817DD80 + ldrh r0, [r1] + cmp r0, #0x36 + beq _0817DD60 + b _0817DF52 +_0817DD60: + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r4, r1, #0 + adds r4, #0x51 + ldrb r2, [r4] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4] + adds r1, #0x55 + ldrb r2, [r1] + movs r0, #4 + rsbs r0, r0, #0 + b _0817DE16 + .align 2, 0 +_0817DD80: .4byte gUnknown_2022C0E +_0817DD84: .4byte 0xFFFFFE3F +_0817DD88: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817DDC8 + ldr r0, _0817DDCC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x51 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r3, [r4] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x54 +_0817DDB6: + mov r0, sl + lsls r3, r0, #6 +_0817DDBA: + ldrb r1, [r2] + movs r0, #0x3f +_0817DDBE: + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + b _0817DF52 + .align 2, 0 +_0817DDC8: .4byte gUnknown_2023D12 +_0817DDCC: .4byte gUnknown_2023EAF +_0817DDD0: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x51 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817DDE8 + b _0817DF52 +_0817DDE8: + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x54 + ldrb r3, [r0] + lsrs r3, r3, #6 + movs r0, #0xf + b _0817DF32 +_0817DDFA: + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r4, r1, #0 + adds r4, #0x51 + ldrb r2, [r4] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4] + adds r1, #0x54 + ldrb r2, [r1] + movs r0, #0x3f +_0817DE16: + ands r0, r2 + strb r0, [r1] + b _0817DF52 +_0817DE1C: + lsls r2, r4, #1 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r7, r2 + ldr r1, _0817DE60 + ldr r0, _0817DE64 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x51 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #4 + ldrb r3, [r4] + movs r0, #0x71 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + adds r2, #0x55 +_0817DE4A: + movs r0, #3 + mov r1, sl + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 +_0817DE56: + ands r0, r3 +_0817DE58: + orrs r0, r1 + strb r0, [r2] + b _0817DF52 + .align 2, 0 +_0817DE60: .4byte gUnknown_2023D12 +_0817DE64: .4byte gUnknown_2023EAF +_0817DE68: + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r1, r7, r0 + adds r0, r1, #0 + adds r0, #0x51 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817DF52 + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r1, #0 + adds r0, #0x55 + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #0x10 + b _0817DF32 +_0817DE92: + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r7, r1 + adds r3, r1, #0 + adds r3, #0x50 + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + adds r1, #0x54 + ldrb r2, [r1] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldrh r2, [r3] + ldr r0, _0817DEE0 + ands r0, r2 + strh r0, [r3] + ldrb r2, [r1] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0817DEE4 + ldr r0, _0817DEE8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r2, [r0] + movs r0, #0x11 + movs r1, #0 + mov r3, sl + bl AddMovePoints + b _0817DF52 + .align 2, 0 +_0817DEE0: .4byte 0xFFFFFE3F +_0817DEE4: .4byte gUnknown_2023D12 +_0817DEE8: .4byte gUnknown_2023EAF +_0817DEEC: + lsls r0, r4, #4 + adds r4, r7, r0 + adds r0, r4, #0 + adds r0, #0x35 + ldrb r0, [r0] + lsrs r0, r0, #5 + cmp r0, #0 + beq _0817DF14 + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r0, #0x36 + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #0x15 + movs r1, #0 + bl AddMovePoints +_0817DF14: + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsrs r0, r0, #5 + cmp r0, #0 + beq _0817DF52 + subs r2, r0, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r3, [r0] + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + movs r0, #0x15 +_0817DF32: + movs r1, #0 + bl AddMovePoints + b _0817DF52 +_0817DF3A: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x1c +_0817DF4E: + orrs r1, r2 +_0817DF50: + strb r1, [r0] +_0817DF52: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817D9BC + + thumb_func_start sub_0817DF64 +sub_0817DF64: @ 0x0817DF64 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #0 + ldr r4, _0817DF98 + ldr r6, _0817DF9C + adds r2, r4, #0 + adds r1, r4, #0 +_0817DF74: + ldrh r0, [r1] + cmp r0, r5 + beq _0817DF86 + adds r2, #2 + adds r1, #2 + adds r3, #1 + ldrh r0, [r2] + cmp r0, r6 + bne _0817DF74 +_0817DF86: + lsls r0, r3, #1 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r0, _0817DF9C + cmp r1, r0 + beq _0817DFA0 + movs r0, #0 + b _0817DFA2 + .align 2, 0 +_0817DF98: .4byte gUnknown_85D3304 +_0817DF9C: .4byte 0x0000FFFF +_0817DFA0: + movs r0, #1 +_0817DFA2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_0817DF64 + + thumb_func_start sub_0817DFA8 +sub_0817DFA8: @ 0x0817DFA8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + str r2, [sp, #4] + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + ldr r0, _0817E020 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0817DFCE + b _0817E1BC +_0817DFCE: + ldr r0, _0817E024 + ldr r0, [r0] + movs r1, #0x81 + lsls r1, r1, #2 + adds r1, r0, r1 + str r1, [sp, #8] + ldr r2, _0817E028 + mov sl, r2 + ldrb r0, [r2] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _0817E02C + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, sl + ldrb r0, [r1] + adds r1, r7, #0 + bl sub_0817F1E8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _0817E030 + mov r2, sb + lsls r0, r2, #1 + add r0, sb + lsls r0, r0, #2 + ldr r1, [sp, #8] + adds r0, r1, r0 + adds r0, #0x57 + ldrb r1, [r0] + movs r2, #0x1e + orrs r1, r2 + strb r1, [r0] + b _0817E1BC + .align 2, 0 +_0817E020: .4byte gUnknown_2022C90 +_0817E024: .4byte gUnknown_2024140 +_0817E028: .4byte gUnknown_2023EAF +_0817E02C: .4byte gUnknown_2023EB0 +_0817E030: + mov r2, sl + ldrb r0, [r2] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + lsls r0, r0, #3 + lsls r4, r4, #4 + adds r0, r0, r4 + ldr r1, [sp, #8] + adds r0, r1, r0 + mov r2, sl + ldrb r1, [r2] + lsls r1, r1, #1 + ldr r2, _0817E1CC + adds r1, r1, r2 + ldrh r2, [r1] + adds r2, #1 + adds r0, #0x35 + lsls r2, r2, #5 + ldrb r3, [r0] + movs r1, #0x1f + ands r1, r3 + orrs r1, r2 + strb r1, [r0] + mov r1, sl + ldrb r0, [r1] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r2, [sp, #8] + adds r0, r2, r0 + adds r0, #0x36 + movs r1, #3 + mov r8, r6 + mov r2, r8 + ands r2, r1 + mov r8, r2 + ldrb r2, [r0] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + mov r2, r8 + orrs r1, r2 + strb r1, [r0] + mov r1, sb + lsls r0, r1, #1 + add r0, sb + lsls r0, r0, #2 + ldr r2, [sp, #8] + adds r0, r2, r0 + str r0, [sp, #0xc] + adds r5, r0, #0 + adds r5, #0x53 + lsls r2, r6, #6 + ldrb r1, [r5] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r5] + ldr r1, _0817E1D0 + lsls r4, r7, #1 + adds r0, r4, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0] + movs r0, #0 + adds r1, r6, #0 + movs r3, #0 + bl AddMovePoints + ldr r0, [sp] + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0817F240 + ldr r0, [sp, #4] + ldrb r1, [r0, #0x12] + movs r0, #0xf + ands r0, r1 + str r4, [sp, #0x10] + cmp r0, #0 + beq _0817E0E8 + movs r0, #7 + adds r1, r7, #0 + adds r2, r6, #0 + movs r3, #0 + bl AddMovePoints +_0817E0E8: + ldr r0, _0817E1D4 + cmp r7, r0 + bne _0817E11E + mov r1, sl + ldrb r0, [r1] + lsls r0, r0, #1 + ldr r2, _0817E1CC + adds r0, r0, r2 + ldrh r1, [r0] + adds r1, #1 + movs r0, #7 + ands r1, r0 + ldrb r2, [r5] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldr r2, [sp, #0xc] + adds r2, #0x56 + ldrb r1, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r2] +_0817E11E: + cmp r7, #0x78 + beq _0817E126 + cmp r7, #0x99 + bne _0817E17E +_0817E126: + movs r0, #1 + mov r2, sb + eors r0, r2 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, [sp, #8] + adds r2, r0, r2 + mov r1, sl + ldrb r0, [r1] + lsls r0, r0, #1 + ldr r1, _0817E1CC + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + adds r4, r2, #0 + adds r4, #0x58 + movs r0, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r3, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + mov r1, r8 + lsls r3, r1, #1 + movs r1, #7 + rsbs r1, r1, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4] + adds r2, #0x57 + ldrb r1, [r2] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x1a + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + strb r0, [r4] +_0817E17E: + ldr r1, _0817E1D0 + ldr r2, [sp, #0x10] + adds r0, r2, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #2] + ldrb r5, [r0, #1] + movs r0, #0xd + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl AddMovePoints + movs r0, #0xe + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #0 + bl AddMovePoints + movs r0, #0xb + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl AddMovePoints + movs r0, #0xc + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl AddMovePoints +_0817E1BC: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817E1CC: .4byte gUnknown_2023D12 +_0817E1D0: .4byte gUnknown_82ED220 +_0817E1D4: .4byte 0x00000111 + thumb_func_end sub_0817DFA8 + + thumb_func_start sub_0817E1D8 +sub_0817E1D8: @ 0x0817E1D8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0817E20C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0817E29A + ldr r0, _0817E210 + ldr r0, [r0] + movs r1, #0x81 + lsls r1, r1, #2 + adds r4, r0, r1 + ldr r0, _0817E214 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r5, #0x12 + beq _0817E218 + cmp r5, #0x13 + beq _0817E256 + b _0817E29A + .align 2, 0 +_0817E20C: .4byte gUnknown_2022C90 +_0817E210: .4byte gUnknown_2024140 +_0817E214: .4byte gUnknown_2023EAF +_0817E218: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r4, r0 + ldr r0, [r4, #0x50] + lsls r0, r0, #0xe + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817E29A + subs r0, #1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x55 + ldrb r3, [r1] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #2 + movs r1, #0 + bl AddMovePoints + adds r2, r4, #0 + adds r2, #0x57 + ldrb r1, [r2] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + b _0817E296 +_0817E256: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r4, r0 + adds r0, r4, #0 + adds r0, #0x52 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817E29A + subs r0, #1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x55 + ldrb r3, [r1] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #2 + movs r1, #1 + bl AddMovePoints + adds r2, r4, #0 + adds r2, #0x57 + ldrb r1, [r2] + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x12 +_0817E296: + orrs r0, r1 + strb r0, [r2] +_0817E29A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0817E1D8 + + thumb_func_start sub_0817E2A0 +sub_0817E2A0: @ 0x0817E2A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + movs r0, #0 + str r0, [sp] + movs r1, #0 + str r1, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + ldr r3, _0817E428 + str r3, [sp, #0xc] + movs r4, #0 + str r4, [sp, #0x10] + movs r7, #0 + str r7, [sp, #0x14] + mov r8, r0 + ldr r0, _0817E42C + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xb3 + ldrb r0, [r0] + cmp r0, #0 + beq _0817E2D6 + b _0817E51C +_0817E2D6: + movs r2, #0xd2 + lsls r2, r2, #1 + adds r2, r2, r1 + mov sl, r2 + movs r6, #0 +_0817E2E0: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _0817E430 + adds r0, r4, r0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0817E300 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_0817E300: + ldr r5, _0817E434 + adds r0, r4, r5 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + beq _0817E316 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0817E316: + adds r6, #1 + cmp r6, #5 + ble _0817E2E0 + ldr r0, _0817E438 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0817E32A + b _0817E51C +_0817E32A: + cmp r8, r7 + beq _0817E330 + b _0817E51C +_0817E330: + movs r6, #0 + lsls r3, r6, #1 + str r3, [sp, #0x18] + movs r4, #0x64 + mov r8, r4 +_0817E33A: + mov r1, r8 + muls r1, r6, r1 + ldr r0, _0817E430 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r6, #1 + mov sb, r0 + cmp r7, #0 + beq _0817E39A + adds r0, r4, #0 + movs r1, #0x2d + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817E39A + movs r4, #0 + lsls r0, r6, #3 + mov r2, sl + adds r1, r0, r2 + movs r3, #3 +_0817E370: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r4, [r1] + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0817E370 + ldr r1, [sp, #8] + lsls r0, r1, #0x10 + lsls r1, r4, #0x10 + cmp r0, r1 + bge _0817E39A + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsrs r1, r1, #0x10 + str r1, [sp, #8] + str r7, [sp] +_0817E39A: + mov r0, r8 + muls r0, r6, r0 + ldr r2, _0817E434 + adds r4, r0, r2 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r3, [sp, #8] + lsls r3, r3, #0x10 + str r3, [sp, #0x1c] + cmp r7, #0 + beq _0817E44C + adds r0, r4, #0 + movs r1, #0x2d + movs r2, #0 + bl sub_0806A058 + cmp r0, #0 + bne _0817E44C + movs r4, #0 + ldr r0, [sp, #0xc] + lsls r2, r0, #0x10 + movs r3, #1 + lsls r1, r3, #1 + adds r1, #1 + lsls r1, r1, #4 + lsls r0, r6, #3 + adds r0, r0, r1 + mov r3, sl + adds r1, r0, r3 + movs r3, #3 +_0817E3E0: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + ldrh r4, [r1] + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r1, #2 + subs r3, #1 + cmp r3, #0 + bge _0817E3E0 + asrs r1, r2, #0x10 + lsls r5, r4, #0x10 + asrs r0, r5, #0x10 + cmp r1, r0 + bne _0817E43C + mov r0, r8 + muls r0, r6, r0 + ldr r1, _0817E434 + adds r0, r0, r1 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + ldr r2, [sp, #0x14] + mov r0, r8 + muls r0, r2, r0 + ldr r3, _0817E434 + adds r0, r0, r3 + movs r1, #0x19 + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bls _0817E44C + b _0817E440 + .align 2, 0 +_0817E428: .4byte 0x00007FFF +_0817E42C: .4byte gUnknown_2024140 +_0817E430: .4byte gUnknown_2024190 +_0817E434: .4byte gUnknown_20243E8 +_0817E438: .4byte gUnknown_2022C90 +_0817E43C: + cmp r1, r0 + ble _0817E44C +_0817E440: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + lsrs r5, r5, #0x10 + str r5, [sp, #0xc] + str r7, [sp, #4] +_0817E44C: + mov r6, sb + cmp r6, #5 + bgt _0817E454 + b _0817E33A +_0817E454: + movs r4, #0 + movs r6, #0 + movs r3, #0 + ldr r5, _0817E4C0 + ldr r7, [sp, #0x10] + lsls r0, r7, #3 + mov r1, sl + adds r2, r0, r1 +_0817E464: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + movs r7, #0 + ldrsh r1, [r2, r7] + cmp r0, r1 + bge _0817E474 + ldrh r4, [r2] + adds r6, r3, #0 +_0817E474: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + ble _0817E464 + movs r0, #0x64 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + adds r0, r0, r5 + adds r1, r6, #0 + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r2, [sp, #0x1c] + cmp r2, #0 + beq _0817E51C + cmp r4, #0 + beq _0817E51C + ldr r0, _0817E4C4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0817E508 + ldr r3, [sp, #0x10] + cmp r3, #2 + bhi _0817E4CC + ldr r0, _0817E4C8 + adds r0, #0x25 + ldrb r0, [r0] + bl sub_0806D2C8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0817E4DC + b _0817E51C + .align 2, 0 +_0817E4C0: .4byte gUnknown_2024190 +_0817E4C4: .4byte gUnknown_2022C90 +_0817E4C8: .4byte gUnknown_2024118 +_0817E4CC: + ldr r0, _0817E504 + adds r0, #0x25 + ldrb r0, [r0] + bl sub_0806D2C8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0817E51C +_0817E4DC: + movs r3, #0 + ldr r7, [sp, #0x14] + cmp r7, #2 + bls _0817E4E6 + movs r3, #1 +_0817E4E6: + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0817E504 + adds r1, #0x25 + ldrb r1, [r1] + bl sub_0806EA10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + ldr r2, [sp] + ldr r3, [sp, #4] + bl sub_080ED694 + b _0817E51C + .align 2, 0 +_0817E504: .4byte gUnknown_2024118 +_0817E508: + ldr r0, _0817E52C + adds r0, #0x25 + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 + adds r1, r4, #0 + ldr r2, [sp] + ldr r3, [sp, #4] + bl sub_080ED694 +_0817E51C: + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817E52C: .4byte gUnknown_2024118 + thumb_func_end sub_0817E2A0 + + thumb_func_start AddMovePoints +AddMovePoints: @ 0x0817E530 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + ldr r0, _0817E58C + ldr r0, [r0] + movs r1, #0xd2 + lsls r1, r1, #1 + adds r1, r1, r0 + mov r8, r1 + movs r2, #0x81 + lsls r2, r2, #2 + adds r7, r0, r2 + ldr r0, _0817E590 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817E594 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r0, sl + cmp r0, #0x1b + bls _0817E580 + b _0817E918 +_0817E580: + lsls r0, r0, #2 + ldr r1, _0817E598 + adds r1, r0, r1 + ldr r1, [r1] + mov ip, r0 + mov pc, r1 + .align 2, 0 +_0817E58C: .4byte gUnknown_2024140 +_0817E590: .4byte gUnknown_2023EAF +_0817E594: .4byte gUnknown_2023EB0 +_0817E598: .4byte _0817E59C +_0817E59C: @ jump table + .4byte _0817E60C @ case 0 + .4byte _0817E60C @ case 1 + .4byte _0817E708 @ case 2 + .4byte _0817E648 @ case 3 + .4byte _0817E648 @ case 4 + .4byte _0817E648 @ case 5 + .4byte _0817E648 @ case 6 + .4byte _0817E648 @ case 7 + .4byte _0817E74C @ case 8 + .4byte _0817E74C @ case 9 + .4byte _0817E778 @ case 10 + .4byte _0817E79C @ case 11 + .4byte _0817E824 @ case 12 + .4byte _0817E88C @ case 13 + .4byte _0817E8D4 @ case 14 + .4byte _0817E74C @ case 15 + .4byte _0817E74C @ case 16 + .4byte _0817E72C @ case 17 + .4byte _0817E60C @ case 18 + .4byte _0817E6B6 @ case 19 + .4byte _0817E6F4 @ case 20 + .4byte _0817E74C @ case 21 + .4byte _0817E60C @ case 22 + .4byte _0817E60C @ case 23 + .4byte _0817E60C @ case 24 + .4byte _0817E60C @ case 25 + .4byte _0817E60C @ case 26 + .4byte _0817E60C @ case 27 +_0817E60C: + ldr r1, _0817E63C + ldr r0, _0817E640 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r6 + lsls r1, r1, #1 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E644 + add r0, ip + ldr r2, [r0] + lsls r0, r5, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E63C: .4byte gUnknown_2023D12 +_0817E640: .4byte gUnknown_2023EAF +_0817E644: .4byte gUnknown_85D3294 +_0817E648: + ldr r1, _0817E67C + add r1, ip + ldr r7, _0817E680 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r2, r0, #4 + ldr r4, _0817E684 + ldr r1, [r1] + ldr r3, _0817E688 + ldrh r0, [r1] + cmp r6, r0 + bne _0817E68C + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + add r0, r8 + ldrh r1, [r1, #2] + ldrh r2, [r0] + adds r1, r1, r2 + strh r1, [r0] + b _0817E918 + .align 2, 0 +_0817E67C: .4byte gUnknown_85D3294 +_0817E680: .4byte gUnknown_2023D12 +_0817E684: .4byte 0x0000FFFF +_0817E688: .4byte gUnknown_2023EAF +_0817E68C: + adds r1, #4 + ldrh r0, [r1] + cmp r0, r4 + bne _0817E696 + b _0817E918 +_0817E696: + cmp r6, r0 + bne _0817E68C + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + add r0, r8 + ldrh r1, [r1, #2] + ldrh r5, [r0] + adds r1, r1, r5 + strh r1, [r0] + b _0817E918 +_0817E6B6: + movs r0, #1 + adds r1, r5, #0 + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + mov r0, sb + lsls r1, r0, #1 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E6F0 + add r0, ip + ldr r2, [r0] + lsls r0, r6, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E6F0: .4byte gUnknown_85D3294 +_0817E6F4: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r7, r0 + adds r0, #0x57 + ldrb r2, [r0] + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_0817E708: + mov r0, sb + lsls r1, r0, #1 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E728 + add r0, ip + ldr r2, [r0] + lsls r0, r6, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E728: .4byte gUnknown_85D3294 +_0817E72C: + lsls r1, r5, #2 + add r1, sb + lsls r1, r1, #1 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E748 + add r0, ip + ldr r2, [r0] + lsls r0, r6, #1 + adds r0, r0, r2 + b _0817E910 + .align 2, 0 +_0817E748: .4byte gUnknown_85D3294 +_0817E74C: + lsls r2, r5, #2 + add r2, sb + lsls r2, r2, #1 + movs r1, #1 + eors r1, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + add r2, r8 + ldr r0, _0817E774 + add r0, ip + ldr r1, [r0] + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + b _0817E918 + .align 2, 0 +_0817E774: .4byte gUnknown_85D3294 +_0817E778: + lsls r1, r5, #2 + add r1, sb + lsls r1, r1, #1 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E798 + add r0, ip + ldr r0, [r0] + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E798: .4byte gUnknown_85D3294 +_0817E79C: + lsls r0, r3, #4 + adds r2, r7, r0 + adds r0, r2, #0 + adds r0, #0x34 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r1, r0, #0x1d + adds r4, r2, #0 + adds r4, #0x3c + ldrb r0, [r4] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmn r1, r0 + bne _0817E7BA + b _0817E918 +_0817E7BA: + cmp r6, #0xa + beq _0817E7C0 + b _0817E918 +_0817E7C0: + cmp r1, #0 + beq _0817E7EC + subs r1, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x33 + ldrb r0, [r0] + lsrs r0, r0, #6 + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E820 + add r0, ip + ldr r0, [r0] + ldrh r0, [r0] + ldrh r5, [r1] + adds r0, r0, r5 + strh r0, [r1] +_0817E7EC: + ldrb r0, [r4] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817E7F8 + b _0817E918 +_0817E7F8: + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x3b + ldrb r0, [r0] + lsrs r0, r0, #6 + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E820 + add r0, ip + ldr r0, [r0] + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E820: .4byte gUnknown_85D3294 +_0817E824: + lsls r1, r3, #4 + adds r1, r7, r1 + adds r0, r1, #0 + adds r0, #0x34 + ldrb r4, [r0] + lsls r0, r4, #0x1a + lsrs r2, r0, #0x1d + adds r5, r1, #0 + adds r5, #0x3c + ldrb r0, [r5] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + cmn r2, r0 + beq _0817E918 + cmp r6, #0xd + bne _0817E918 + cmp r2, #0 + beq _0817E86A + subs r1, r2, #1 + lsls r1, r1, #2 + lsrs r0, r4, #6 + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E888 + add r0, ip + ldr r0, [r0] + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] +_0817E86A: + ldrb r2, [r5] + lsls r0, r2, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817E918 + subs r1, r0, #1 + lsls r1, r1, #2 + lsrs r0, r2, #6 + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + b _0817E906 + .align 2, 0 +_0817E888: .4byte gUnknown_85D3294 +_0817E88C: + cmp r6, #8 + bhi _0817E918 + cmp r5, #0 + beq _0817E918 + lsls r0, r3, #1 + adds r3, r0, r3 + lsls r0, r3, #2 + adds r2, r7, r0 + adds r0, r2, #0 + adds r0, #0x50 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817E918 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x54 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #4 + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E8D0 + add r0, ip + ldr r0, [r0] + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + b _0817E916 + .align 2, 0 +_0817E8D0: .4byte gUnknown_85D3294 +_0817E8D4: + cmp r6, #8 + bls _0817E918 + cmp r5, #0 + beq _0817E918 + lsls r0, r3, #1 + adds r3, r0, r3 + lsls r0, r3, #2 + adds r2, r7, r0 + adds r0, r2, #0 + adds r0, #0x50 + ldrh r0, [r0] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817E918 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x54 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + adds r1, r1, r0 + lsls r1, r1, #1 + lsls r0, r3, #4 +_0817E906: + adds r1, r1, r0 + add r1, r8 + ldr r0, _0817E928 + add r0, ip + ldr r0, [r0] +_0817E910: + ldrh r0, [r0] + ldrh r5, [r1] + adds r0, r0, r5 +_0817E916: + strh r0, [r1] +_0817E918: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817E928: .4byte gUnknown_85D3294 + thumb_func_end AddMovePoints + + thumb_func_start AddPointsOnFainting +AddPointsOnFainting: @ 0x0817E92C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _0817E988 + ldr r0, [r0] + movs r1, #0x81 + lsls r1, r1, #2 + adds r5, r0, r1 + ldr r3, _0817E98C + mov r8, r3 + ldrb r0, [r3] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0817E990 + ldrb r0, [r0] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r6, r5, r0 + adds r0, r6, #0 + adds r0, #0x57 + ldrb r0, [r0] + lsrs r3, r0, #5 + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1c + cmp r0, #0 + bne _0817E974 + b _0817ECFC +_0817E974: + subs r0, #1 + cmp r0, #0xe + bls _0817E97C + b _0817ED68 +_0817E97C: + lsls r0, r0, #2 + ldr r1, _0817E994 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0817E988: .4byte gUnknown_2024140 +_0817E98C: .4byte gUnknown_2023EAF +_0817E990: .4byte gUnknown_2023EB0 +_0817E994: .4byte _0817E998 +_0817E998: @ jump table + .4byte _0817E9D4 @ case 0 + .4byte _0817EA00 @ case 1 + .4byte _0817EA2C @ case 2 + .4byte _0817EA80 @ case 3 + .4byte _0817EAAA @ case 4 + .4byte _0817EAD2 @ case 5 + .4byte _0817EAFA @ case 6 + .4byte _0817EB18 @ case 7 + .4byte _0817EB46 @ case 8 + .4byte _0817EB78 @ case 9 + .4byte _0817EC00 @ case 10 + .4byte _0817EC2E @ case 11 + .4byte _0817EC6E @ case 12 + .4byte _0817ECC8 @ case 13 + .4byte _0817ED68 @ case 14 +_0817E9D4: + lsls r0, r3, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x30 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817E9EC + b _0817ED68 +_0817E9EC: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r1, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsls r3, r3, #0x1c + b _0817ED30 +_0817EA00: + lsls r0, r3, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x30 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817EA18 + b _0817ED68 +_0817EA18: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r1, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsls r3, r3, #0x1a + b _0817ED30 +_0817EA2C: + lsls r0, r3, #2 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r5, r5, r0 + ldrb r0, [r5] + lsls r0, r0, #0x1d + lsrs r1, r0, #0x1d + cmp r1, #0 + beq _0817EA60 + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r0, r1, #1 + lsls r0, r0, #2 + ldrb r3, [r5, #2] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x13 + movs r1, #0 + bl AddMovePoints +_0817EA60: + ldrb r0, [r5] + lsls r0, r0, #0x1a + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817EA6C + b _0817ED68 +_0817EA6C: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r0, r1, #1 + lsls r0, r0, #2 + ldrb r3, [r5, #2] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + adds r3, r3, r0 + b _0817ED34 +_0817EA80: + lsls r0, r3, #2 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r1, r5, r0 + ldrh r0, [r1] + lsls r0, r0, #0x17 + lsrs r3, r0, #0x1d + cmp r3, #0 + bne _0817EA98 + b _0817ED68 +_0817EA98: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r0, r3, #1 + lsls r0, r0, #2 + ldrb r3, [r1, #2] + lsrs r3, r3, #6 + adds r3, r3, r0 + b _0817ED34 +_0817EAAA: + lsls r0, r3, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r3, r5, r0 + ldrh r0, [r3, #0x30] + lsls r0, r0, #0x17 + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817EABE + b _0817ED68 +_0817EABE: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r1, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x32 + ldrb r3, [r0] + lsrs r3, r3, #6 + b _0817ED32 +_0817EAD2: + lsls r0, r3, #3 + lsls r1, r4, #4 + adds r0, r0, r1 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x31 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817EAEA + b _0817ED68 +_0817EAEA: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r1, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x33 + b _0817ED2C +_0817EAFA: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x50 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r1, r0, #0x1d + cmp r1, #0 + bne _0817EB12 + b _0817ED68 +_0817EB12: + movs r0, #1 + adds r2, r4, #0 + b _0817ED22 +_0817EB18: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r5, r0 + ldr r0, [r3, #0x50] + lsls r0, r0, #0xe + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817EB2C + b _0817ED68 +_0817EB2C: + adds r2, r4, #0 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x55 + ldrb r3, [r0] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1e + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x14 + b _0817ED3A +_0817EB46: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x52 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _0817EB5E + b _0817ED68 +_0817EB5E: + adds r2, r4, #0 + subs r1, r0, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x55 + ldrb r3, [r0] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x14 + b _0817ED3A +_0817EB78: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0817EBC0 + adds r0, r3, #0 + adds r0, #0x52 + ldrb r0, [r0] + lsrs r0, r0, #5 + subs r6, r0, #1 + ldr r1, _0817EBF8 + ldr r0, _0817EBFC + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + beq _0817EBC0 + adds r2, r4, #0 + lsls r1, r6, #2 + adds r0, r3, #0 + adds r0, #0x55 + ldrb r3, [r0] + lsrs r3, r3, #6 + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x13 + movs r1, #0 + bl AddMovePoints +_0817EBC0: + movs r1, #1 + eors r1, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, r0 + adds r0, r1, #0 + adds r0, #0x58 + ldrb r0, [r0] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0817EBDA + b _0817ED68 +_0817EBDA: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + adds r0, r1, #0 + adds r0, #0x52 + ldrb r0, [r0] + lsrs r0, r0, #5 + subs r0, #1 + lsls r0, r0, #2 + adds r1, #0x55 + ldrb r3, [r1] + lsrs r3, r3, #6 + adds r3, r3, r0 + b _0817ED34 + .align 2, 0 +_0817EBF8: .4byte gUnknown_2023D12 +_0817EBFC: .4byte gUnknown_2023EAF +_0817EC00: + movs r0, #1 + eors r0, r4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r5, r1 + adds r1, #0x56 + ldrb r0, [r1] + lsls r0, r0, #0x19 + lsrs r5, r0, #0x1d + cmp r5, #0 + bne _0817EC1A + b _0817ED68 +_0817EC1A: + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + subs r0, r5, #1 + lsls r0, r0, #2 + ldrh r3, [r1] + lsls r3, r3, #0x17 + lsrs r3, r3, #0x1e + adds r3, r3, r0 + b _0817ED34 +_0817EC2E: + lsls r2, r4, #4 + movs r1, #1 + adds r0, r4, #0 + eors r0, r1 + lsls r6, r0, #0x18 + adds r0, r5, #0 + adds r0, #0x30 + adds r4, r2, r0 + movs r5, #1 +_0817EC40: + ldr r0, [r4] + lsls r0, r0, #0xe + lsrs r0, r0, #0x1d + cmp r0, #0 + beq _0817EC64 + subs r0, #1 + lsls r0, r0, #2 + ldrb r3, [r4, #3] + lsls r3, r3, #0x1a + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x13 + movs r1, #0 + lsrs r2, r6, #0x18 + bl AddMovePoints +_0817EC64: + adds r4, #8 + subs r5, #1 + cmp r5, #0 + bge _0817EC40 + b _0817ED68 +_0817EC6E: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r0, #0x58 + ldrb r3, [r0] + lsls r0, r3, #0x1f + cmp r0, #0 + beq _0817EC9C + adds r2, r4, #0 + lsls r0, r3, #0x1a + lsrs r0, r0, #0x1d + subs r0, #1 + lsls r0, r0, #2 + lsls r3, r3, #0x1d + lsrs r3, r3, #0x1e + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x13 + movs r1, #0 + bl AddMovePoints +_0817EC9C: + movs r0, #1 + eors r0, r4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r5, r1 + adds r1, #0x58 + ldrb r1, [r1] + lsls r0, r1, #0x1f + cmp r0, #0 + beq _0817ED68 + movs r0, #1 + adds r2, r4, #0 + eors r2, r0 + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1d + subs r0, #1 + lsls r0, r0, #2 + lsls r3, r1, #0x1d + lsrs r3, r3, #0x1e + adds r3, r3, r0 + b _0817ED34 +_0817ECC8: + cmp r7, #1 + bne _0817ED68 + adds r2, r4, #0 + ldr r1, _0817ECF4 + ldr r0, _0817ECF8 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r5, r0 + adds r0, #0x53 + ldrb r3, [r0] + lsrs r3, r3, #6 + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x14 + b _0817ED3A + .align 2, 0 +_0817ECF4: .4byte gUnknown_2023D12 +_0817ECF8: .4byte gUnknown_2023EAF +_0817ECFC: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r5, r0 + adds r0, r3, #0 + adds r0, #0x57 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1c + cmp r0, #7 + bne _0817ED42 + adds r0, r3, #0 + adds r0, #0x50 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r1, r0, #0x1d + cmp r1, #0 + beq _0817ED68 + movs r0, #1 +_0817ED22: + eors r2, r0 + subs r1, #1 + lsls r1, r1, #2 + adds r0, r3, #0 + adds r0, #0x54 +_0817ED2C: + ldrb r3, [r0] + lsls r3, r3, #0x1e +_0817ED30: + lsrs r3, r3, #0x1e +_0817ED32: + adds r3, r3, r1 +_0817ED34: + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x13 +_0817ED3A: + movs r1, #0 + bl AddMovePoints + b _0817ED68 +_0817ED42: + adds r2, r4, #0 + ldr r1, _0817ED74 + mov r3, r8 + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #2 + adds r0, r6, #0 + adds r0, #0x53 + ldrb r3, [r0] + lsrs r3, r3, #6 + adds r3, r3, r1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x14 + movs r1, #0 + bl AddMovePoints +_0817ED68: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817ED74: .4byte gUnknown_2023D12 + thumb_func_end AddPointsOnFainting + + thumb_func_start sub_0817ED78 +sub_0817ED78: @ 0x0817ED78 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + ldr r7, _0817F034 + ldr r0, [r7] + ldr r1, _0817F038 + ands r0, r1 + cmp r0, #0 + beq _0817ED92 + b _0817F0A6 +_0817ED92: + ldr r4, _0817F03C + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0817EDA4 + b _0817F0A6 +_0817EDA4: + ldr r5, _0817F040 + ldrb r4, [r4] + movs r1, #0x58 + adds r6, r4, #0 + muls r6, r1, r6 + adds r0, r6, r5 + ldrb r0, [r0, #0x1e] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #5 + bgt _0817EDBC + b _0817F0A6 +_0817EDBC: + ldr r0, _0817F044 + ldrb r0, [r0] + muls r0, r1, r0 + adds r0, r0, r5 + ldrb r0, [r0, #0x1f] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + ble _0817EDD0 + b _0817F0A6 +_0817EDD0: + ldr r0, _0817F048 + ldrh r1, [r0] + cmp r1, #0xed + bne _0817EDDA + b _0817F0A6 +_0817EDDA: + ldr r0, _0817F04C + cmp r1, r0 + bne _0817EDE2 + b _0817F0A6 +_0817EDE2: + ldr r0, [r7] + movs r1, #0xc8 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + beq _0817EDF0 + b _0817F0A6 +_0817EDF0: + ldr r3, _0817F050 + ldr r2, _0817F054 + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r6 + adds r1, r5, #0 + adds r1, #0xc + adds r0, r0, r1 + ldrh r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #1] + adds r6, r2, #0 + cmp r0, #0 + bne _0817EE16 + b _0817F0A6 +_0817EE16: + movs r5, #0 + str r1, [sp, #0x24] + ldr r1, _0817F058 + ldr r4, _0817F05C + adds r3, r1, #0 + adds r2, r1, #0 +_0817EE22: + ldr r0, [sp, #0x24] + ldrh r7, [r2] + cmp r0, r7 + beq _0817EE36 + adds r3, #2 + adds r2, #2 + adds r5, #1 + ldrh r0, [r3] + cmp r0, r4 + bne _0817EE22 +_0817EE36: + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldr r0, _0817F05C + cmp r1, r0 + beq _0817EE44 + b _0817F0A6 +_0817EE44: + ldr r2, _0817F03C + ldrb r0, [r2] + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #2 + mov r1, sp + adds r1, r1, r0 + adds r1, #0x10 + ldr r0, _0817F060 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0817F048 + ldrh r1, [r0] + str r1, [sp, #0x24] + movs r5, #0 + add r3, sp, #0x20 + mov sl, r3 + mov r8, r0 + add r7, sp, #0x10 + ldr r4, _0817F044 + mov sb, r4 +_0817EE6E: + lsls r1, r5, #1 + ldr r6, _0817F03C + ldrb r0, [r6] + movs r2, #0x58 + muls r0, r2, r0 + adds r1, r1, r0 + ldr r0, _0817F040 + adds r0, #0xc + adds r1, r1, r0 + ldrh r0, [r1] + mov r3, r8 + strh r0, [r3] + movs r6, #0 + mov r4, sl + strh r6, [r4] + ldrh r0, [r3] + adds r1, r7, #0 + mov r2, sl + bl sub_0817F0C8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0817EF60 + ldr r4, _0817F064 + mov r1, sb + ldrb r0, [r1] + bl sub_080A630C + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r3, [r1] + ldr r2, _0817F03C + ldrb r0, [r2] + movs r4, #0x58 + muls r0, r4, r0 + ldr r6, _0817F040 + adds r0, r0, r6 + mov r2, sb + ldrb r1, [r2] + muls r1, r4, r1 + adds r1, r1, r6 + mov r4, r8 + ldrh r2, [r4] + mov r6, sl + ldrh r4, [r6] + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r6, _0817F03C + ldrb r4, [r6] + str r4, [sp, #8] + mov r6, sb + ldrb r4, [r6] + str r4, [sp, #0xc] + bl sub_080690BC + adds r3, r0, #0 + ldr r4, _0817F060 + str r3, [r4] + ldr r1, _0817F068 + ldr r2, _0817F03C + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0817EF16 + ldr r2, _0817F050 + mov r6, r8 + ldrh r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + cmp r0, #0xd + bne _0817EF16 + lsls r0, r3, #1 + str r0, [r4] +_0817EF16: + ldr r0, _0817F06C + ldr r6, _0817F03C + ldrb r1, [r6] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + cmp r0, #0 + bge _0817EF38 + ldr r4, _0817F060 + ldr r1, [r4] + lsls r0, r1, #4 + subs r0, r0, r1 + movs r1, #0xa + bl __divsi3 + str r0, [r4] +_0817EF38: + mov r1, r8 + ldrh r0, [r1] + ldrb r1, [r6] + mov r3, sb + ldrb r2, [r3] + bl sub_08047224 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _0817F060 + ldr r0, [r0] + str r0, [r7] + cmp r0, #0 + bne _0817EF60 + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + bne _0817EF60 + movs r0, #1 + str r0, [r7] +_0817EF60: + adds r7, #4 + adds r5, #1 + cmp r5, #3 + ble _0817EE6E + movs r5, #0 + ldr r3, _0817F03C + ldr r6, _0817F054 + ldr r4, _0817F070 + mov r8, r4 + movs r7, #0x64 + mov sb, r7 + mov sl, r6 +_0817EF78: + ldrb r0, [r3] + adds r0, r0, r6 + ldrb r2, [r0] + cmp r5, r2 + bne _0817EF84 + b _0817F080 +_0817EF84: + lsls r0, r5, #2 + mov r1, sp + adds r1, r1, r0 + adds r1, #0x10 + lsls r0, r2, #2 + add r0, sp + adds r0, #0x10 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + ble _0817F080 + movs r7, #1 + cmp r2, #0 + beq _0817EFA2 + movs r7, #0 +_0817EFA2: + movs r5, #0 + ldr r4, _0817F044 + ldr r6, _0817F074 + ldr r0, _0817F03C + ldrb r0, [r0] + add r0, sl + ldrb r3, [r0] + add r2, sp, #0x10 +_0817EFB2: + cmp r5, r3 + beq _0817EFC6 + lsls r0, r7, #2 + add r0, sp + adds r0, #0x10 + ldr r1, [r2] + ldr r0, [r0] + cmp r1, r0 + ble _0817EFC6 + adds r7, r5, #0 +_0817EFC6: + adds r2, #4 + adds r5, #1 + cmp r5, #3 + ble _0817EFB2 + ldrb r0, [r4] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r2, _0817F03C + ldrb r0, [r2] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + mov r3, sb + muls r3, r0, r3 + adds r0, r3, #0 + ldr r1, _0817F078 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r4, _0817F03C + ldrb r3, [r4] + mov r2, sl + adds r0, r3, r2 + ldrb r2, [r0] + movs r0, #0x58 + adds r4, r3, #0 + muls r4, r0, r4 + ldr r5, _0817F07C + adds r3, r4, r5 + lsls r0, r7, #1 + adds r0, r0, r4 + adds r0, r0, r5 + ldrh r0, [r0] + str r0, [sp] + adds r0, r6, #0 + bl sub_080EEE7C + b _0817F088 + .align 2, 0 +_0817F034: .4byte gUnknown_2022C90 +_0817F038: .4byte gUnknown_2000003 +_0817F03C: .4byte gUnknown_2023EAF +_0817F040: .4byte gUnknown_2023D28 +_0817F044: .4byte gUnknown_2023EB0 +_0817F048: .4byte gUnknown_2023E8E +_0817F04C: .4byte 0x00000137 +_0817F050: .4byte gUnknown_82ED220 +_0817F054: .4byte gUnknown_2024154 +_0817F058: .4byte gUnknown_85D2F0C +_0817F05C: .4byte 0x0000FFFF +_0817F060: .4byte gUnknown_2023E94 +_0817F064: .4byte gUnknown_2023F32 +_0817F068: .4byte gUnknown_2023F50 +_0817F06C: .4byte gUnknown_2023FE0 +_0817F070: .4byte gUnknown_2023D12 +_0817F074: .4byte gUnknown_20243E8 +_0817F078: .4byte gUnknown_2024190 +_0817F07C: .4byte gUnknown_2023D34 +_0817F080: + adds r5, #1 + cmp r5, #3 + bgt _0817F088 + b _0817EF78 +_0817F088: + ldr r2, _0817F0B8 + ldr r1, _0817F0BC + ldr r0, _0817F0C0 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + add r0, sp + adds r0, #0x10 + ldr r0, [r0] + str r0, [r2] + ldr r0, _0817F0C4 + mov r3, sp + ldrh r3, [r3, #0x24] + strh r3, [r0] +_0817F0A6: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817F0B8: .4byte gUnknown_2023E94 +_0817F0BC: .4byte gUnknown_2024154 +_0817F0C0: .4byte gUnknown_2023EAF +_0817F0C4: .4byte gUnknown_2023E8E + thumb_func_end sub_0817ED78 + + thumb_func_start sub_0817F0C8 +sub_0817F0C8: @ 0x0817F0C8 + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + mov ip, r2 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r1, _0817F110 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0817F132 + movs r4, #0 + ldr r5, _0817F114 + ldr r7, _0817F118 + adds r3, r5, #0 + adds r1, r5, #0 +_0817F0EC: + ldrh r0, [r1] + cmp r2, r0 + beq _0817F0FE + adds r3, #2 + adds r1, #2 + adds r4, #1 + ldrh r0, [r3] + cmp r0, r7 + bne _0817F0EC +_0817F0FE: + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r1, [r0] + ldr r0, _0817F118 + cmp r1, r0 + beq _0817F11C + movs r0, #0 + str r0, [r6] + b _0817F14C + .align 2, 0 +_0817F110: .4byte gUnknown_82ED220 +_0817F114: .4byte gUnknown_85D2F0C +_0817F118: .4byte 0x0000FFFF +_0817F11C: + cmp r2, #0x95 + bne _0817F140 + ldr r2, _0817F138 + ldr r0, _0817F13C + ldrb r1, [r0] + movs r0, #0x58 + muls r0, r1, r0 + adds r0, r0, r2 + adds r0, #0x2a + ldrb r0, [r0] + asrs r0, r0, #1 +_0817F132: + str r0, [r6] + movs r0, #0 + b _0817F14C + .align 2, 0 +_0817F138: .4byte gUnknown_2023D28 +_0817F13C: .4byte gUnknown_2023EAF +_0817F140: + cmp r2, #0xde + bne _0817F14A + movs r0, #0xa + mov r1, ip + strh r0, [r1] +_0817F14A: + movs r0, #1 +_0817F14C: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0817F0C8 + + thumb_func_start sub_0817F154 +sub_0817F154: @ 0x0817F154 + push {r4, r5, lr} + ldr r0, _0817F1D8 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0817F1D0 + ldr r0, _0817F1DC + ldr r3, [r0] + ldr r0, _0817F1E0 + adds r4, r3, r0 + ldrb r2, [r4] + subs r1, #0x21 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4] + ldr r0, _0817F1E4 + adds r2, r3, r0 + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + ldrb r5, [r4] + movs r1, #0x1f + adds r0, r1, #0 + ands r0, r5 + strb r0, [r4] + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + movs r0, #0x97 + lsls r0, r0, #2 + adds r4, r3, r0 + ldrb r2, [r4] + movs r1, #0x39 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4] + movs r0, #0x9a + lsls r0, r0, #2 + adds r3, r3, r0 + ldrb r0, [r3] + ands r1, r0 + strb r1, [r3] + ldrb r2, [r4] + movs r1, #7 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4] + ldrb r0, [r3] + ands r1, r0 + strb r1, [r3] + ldrb r2, [r4] + movs r1, #2 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4] + ldrb r0, [r3] + ands r1, r0 + strb r1, [r3] +_0817F1D0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817F1D8: .4byte gUnknown_2022C90 +_0817F1DC: .4byte gUnknown_2024140 +_0817F1E0: .4byte 0x0000025B +_0817F1E4: .4byte 0x00000267 + thumb_func_end sub_0817F154 + + thumb_func_start sub_0817F1E8 +sub_0817F1E8: @ 0x0817F1E8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + ldr r6, _0817F20C + cmp r0, #0 + bne _0817F202 + ldr r6, _0817F210 +_0817F202: + movs r4, #0 + ldr r1, _0817F214 + lsls r0, r5, #1 + adds r5, r0, r1 + b _0817F21A + .align 2, 0 +_0817F20C: .4byte gUnknown_20243E8 +_0817F210: .4byte gUnknown_2024190 +_0817F214: .4byte gUnknown_2023D12 +_0817F218: + adds r4, #1 +_0817F21A: + cmp r4, #3 + bgt _0817F234 + ldrh r1, [r5] + movs r0, #0x64 + muls r0, r1, r0 + adds r0, r6, r0 + adds r1, r4, #0 + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + cmp r0, r7 + bne _0817F218 +_0817F234: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0817F1E8 + + thumb_func_start sub_0817F240 +sub_0817F240: @ 0x0817F240 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r4, r3, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r5, r2, #0 + movs r0, #7 + ands r0, r3 + cmp r0, #0 + beq _0817F260 + movs r0, #3 + b _0817F276 +_0817F260: + movs r0, #0x60 + ands r0, r3 + cmp r0, #0 + beq _0817F26C + movs r0, #4 + b _0817F276 +_0817F26C: + movs r0, #0x18 + ands r0, r3 + cmp r0, #0 + beq _0817F27E + movs r0, #5 +_0817F276: + movs r3, #0 + bl AddMovePoints + b _0817F292 +_0817F27E: + movs r0, #0x80 + ands r4, r0 + cmp r4, #0 + beq _0817F292 + movs r0, #6 + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0 + bl AddMovePoints +_0817F292: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0817F240 + + thumb_func_start sub_0817F298 +sub_0817F298: @ 0x0817F298 + bx lr + .align 2, 0 + thumb_func_end sub_0817F298 + + thumb_func_start sub_0817F29C +sub_0817F29C: @ 0x0817F29C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + mov sb, r0 + mov r8, r1 + adds r5, r2, #0 + adds r4, r3, #0 + lsls r5, r5, #0x10 + rsbs r5, r5, #0 + lsls r4, r4, #0x10 + rsbs r4, r4, #0 + lsrs r4, r4, #0x10 + mov r0, r8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_0806EFD4 + adds r6, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r0, r8 + adds r1, r4, #0 + bl sub_0806EFB8 + subs r6, r6, r0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r0, r8 + adds r1, r4, #0 + bl sub_0806EFD4 + adds r2, r0, #0 + mov r0, r8 + adds r1, r5, #0 + str r2, [sp] + bl sub_0806EFB8 + ldr r2, [sp] + adds r2, r2, r0 + rsbs r5, r5, #0 + rsbs r4, r4, #0 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r6, r6, r5 + mov r0, sb + strh r6, [r0, #0x24] + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r2, r2, r4 + strh r2, [r0, #0x26] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0817F29C + + thumb_func_start sub_0817F320 +sub_0817F320: @ 0x0817F320 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0817F334 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _0817F338 + movs r0, #0 + b _0817F33E + .align 2, 0 +_0817F334: .4byte gUnknown_85D3328 +_0817F338: + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_0817F33E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0817F320 + + thumb_func_start sub_0817F344 +sub_0817F344: @ 0x0817F344 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0817F3E0 + lsls r6, r5, #2 + adds r0, r6, r5 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r3, #0xa + ldrsh r0, [r2, r3] + lsls r3, r0, #0x10 + movs r4, #0xc + ldrsh r0, [r2, r4] + orrs r3, r0 + movs r0, #8 + ldrsh r4, [r2, r0] + mov r8, r1 + ldr r0, _0817F3E4 + mov ip, r0 + cmp r4, #0 + bne _0817F3B4 + ldrh r0, [r3, #0x2e] + strh r0, [r2, #0x10] + ldrh r0, [r3, #0x32] + strh r0, [r2, #0x12] + movs r0, #1 + strh r0, [r3, #0x30] + strh r4, [r3, #0x2e] + movs r0, #2 + adds r1, r6, #0 + ldr r6, _0817F3E8 + ldr r7, _0817F3EC + movs r4, #0 + adds r2, r3, #0 + adds r2, #0x32 +_0817F38E: + strh r4, [r2] + adds r2, #2 + adds r0, #1 + cmp r0, #7 + bls _0817F38E + adds r1, r1, r5 + lsls r1, r1, #3 + add r1, r8 + movs r2, #0xe + ldrsh r0, [r1, r2] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + str r0, [r3, #0x1c] + movs r0, #0 + str r0, [r7] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_0817F3B4: + ldr r0, [r3, #0x1c] + cmp r0, ip + bne _0817F3D4 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + add r0, r8 + ldrh r1, [r0, #0x10] + movs r2, #0 + strh r1, [r3, #0x2e] + ldrh r0, [r0, #0x12] + strh r0, [r3, #0x32] + strh r2, [r3, #0x30] + adds r0, r5, #0 + bl sub_080A8964 +_0817F3D4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817F3E0: .4byte gUnknown_3005B60 +_0817F3E4: .4byte sub_08007140 +_0817F3E8: .4byte gUnknown_85D34E8 +_0817F3EC: .4byte gUnknown_3001274 + thumb_func_end sub_0817F344 + + thumb_func_start sub_0817F3F0 +sub_0817F3F0: @ 0x0817F3F0 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0817F41C + movs r1, #0x80 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0817F420 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + lsrs r0, r5, #0x10 + strh r0, [r1, #0xa] + strh r5, [r1, #0xc] + strh r4, [r1, #0xe] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817F41C: .4byte sub_0817F344 +_0817F420: .4byte gUnknown_3005B60 + thumb_func_end sub_0817F3F0 + + thumb_func_start sub_0817F424 +sub_0817F424: @ 0x0817F424 + lsls r1, r1, #0x18 + ldr r3, _0817F438 + movs r2, #1 + str r2, [r3] + ldr r2, _0817F43C + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_0817F438: .4byte gUnknown_3001274 +_0817F43C: .4byte gUnknown_85D34E8 + thumb_func_end sub_0817F424 + + thumb_func_start sub_0817F440 +sub_0817F440: @ 0x0817F440 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r6, r1, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _0817F4A0 + movs r1, #0x80 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0817F4A4 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + lsrs r0, r5, #0x10 + strh r0, [r4, #0xa] + strh r5, [r4, #0xc] + ldrh r0, [r5, #0x2e] + lsls r0, r0, #0x18 + ldr r1, _0817F4A8 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0817F4AC + adds r0, r0, r1 + bl sub_0806CB34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r6, #1 + ldr r2, _0817F4B0 + adds r0, r0, r2 + adds r1, r1, r6 + ldrb r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _0817F4B4 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r4, #0xe] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0817F4A0: .4byte sub_0817F344 +_0817F4A4: .4byte gUnknown_3005B60 +_0817F4A8: .4byte gUnknown_2023D12 +_0817F4AC: .4byte gUnknown_2024190 +_0817F4B0: .4byte gUnknown_85D378F +_0817F4B4: .4byte gUnknown_85D3744 + thumb_func_end sub_0817F440 + + thumb_func_start sub_0817F4B8 +sub_0817F4B8: @ 0x0817F4B8 + ldr r1, _0817F4C0 + str r1, [r0, #0x1c] + bx lr + .align 2, 0 +_0817F4C0: .4byte sub_0817F298 + thumb_func_end sub_0817F4B8 + + thumb_func_start sub_0817F4C4 +sub_0817F4C4: @ 0x0817F4C4 + push {r4, r5, lr} + sub sp, #0x10 + lsls r1, r1, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r4, _0817F514 + lsls r2, r2, #0x10 + lsrs r1, r1, #0x10 + orrs r1, r2 + str r1, [sp] + ldr r1, [sp, #4] + ands r1, r4 + orrs r1, r3 + str r1, [sp, #4] + ldrb r4, [r0, #3] + lsls r4, r4, #0x1a + lsrs r4, r4, #0x1b + add r5, sp, #8 + mov r0, sp + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl ObjAffineSet + ldr r0, _0817F518 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, #2] + strh r0, [r4, #2] + ldrh r0, [r5, #4] + strh r0, [r4, #4] + ldrh r0, [r5, #6] + strh r0, [r4, #6] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0817F514: .4byte 0xFFFF0000 +_0817F518: .4byte gUnknown_2021B3C + thumb_func_end sub_0817F4C4 + + thumb_func_start sub_0817F51C +sub_0817F51C: @ 0x0817F51C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #1] + ldr r0, _0817F54C + str r0, [r4, #0x10] + ldr r0, _0817F550 + ldr r0, [r0] + cmp r0, #1 + bne _0817F53A + adds r0, r4, #0 + bl sub_08008140 +_0817F53A: + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817F554 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + b _0817F55C + .align 2, 0 +_0817F54C: .4byte gUnknown_85D37C8 +_0817F550: .4byte gUnknown_3001274 +_0817F554: + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 +_0817F55C: + ldrb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 + adds r2, r4, #0 + adds r2, #0x2c + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817F51C + + thumb_func_start sub_0817F580 +sub_0817F580: @ 0x0817F580 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r5, #0x30 + ldrsh r0, [r4, r5] + cmp r0, #0 + bne _0817F5A4 + lsls r0, r1, #0x10 + rsbs r0, r0, #0 + lsrs r1, r0, #0x10 + rsbs r0, r3, #0 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_0817F5A4: + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + bl sub_0817F4C4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0817F580 + + thumb_func_start sub_0817F5B8 +sub_0817F5B8: @ 0x0817F5B8 + push {lr} + adds r1, r0, #0 + movs r2, #0x30 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _0817F5CC + movs r2, #0x24 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #0x24] +_0817F5CC: + pop {r0} + bx r0 + thumb_func_end sub_0817F5B8 + + thumb_func_start sub_0817F5D0 +sub_0817F5D0: @ 0x0817F5D0 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bhi _0817F5FC + ldr r1, _0817F5F8 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r2, #0 + strh r2, [r0, #6] + strh r2, [r0] + movs r1, #1 + strh r1, [r0, #4] + strh r2, [r0, #2] + strh r2, [r0, #8] + movs r0, #1 + b _0817F5FE + .align 2, 0 +_0817F5F8: .4byte gUnknown_3001240 +_0817F5FC: + movs r0, #0 +_0817F5FE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0817F5D0 + + thumb_func_start sub_0817F604 +sub_0817F604: @ 0x0817F604 + push {r4, lr} + ldr r4, _0817F624 + ldrb r1, [r4] + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r2, r0 + strb r0, [r4] + ldrb r0, [r4] + bl sub_0817F5D0 + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0817F624: .4byte gUnknown_3001270 + thumb_func_end sub_0817F604 + + thumb_func_start sub_0817F628 +sub_0817F628: @ 0x0817F628 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #1] + movs r3, #4 + rsbs r3, r3, #0 + ands r3, r0 + movs r5, #1 + orrs r3, r5 + strb r3, [r4, #1] + lsrs r1, r3, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + lsls r3, r3, #0x1e + lsrs r3, r3, #0x1e + adds r0, r4, #0 + bl sub_08006F70 + ldr r0, _0817F668 + ldr r0, [r0] + cmp r0, #1 + bne _0817F6AC + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817F66C + adds r1, r4, #0 + adds r1, #0x3f + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + adds r5, r1, #0 + b _0817F67C + .align 2, 0 +_0817F668: .4byte gUnknown_3001274 +_0817F66C: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r2, [r0] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + adds r5, r0, #0 +_0817F67C: + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r2, [r4, #3] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + ldrb r0, [r5] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + lsls r0, r0, #3 + orrs r1, r0 + lsls r1, r1, #1 + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #3] + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #1] +_0817F6AC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817F628 + + thumb_func_start sub_0817F6B4 +sub_0817F6B4: @ 0x0817F6B4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0817F6C6 + adds r0, r6, #0 + bl sub_0817F51C +_0817F6C6: + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0x28 + ble _0817F6EC + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _0817F6E8 + str r0, [r6, #0x1c] + b _0817F738 + .align 2, 0 +_0817F6E8: .4byte sub_08184C34 +_0817F6EC: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #9 + movs r1, #0x28 + bl __divsi3 + adds r4, r0, #0 + cmp r0, #0 + bge _0817F700 + adds r4, #0xff +_0817F700: + asrs r4, r4, #8 + lsls r4, r4, #8 + subs r4, r0, r4 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + strh r0, [r6, #0x36] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806EFD4 + adds r0, r0, r5 + strh r0, [r6, #0x38] + movs r0, #0x36 + ldrsh r1, [r6, r0] + movs r0, #0x38 + ldrsh r2, [r6, r0] + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F580 +_0817F738: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0817F6B4 + + thumb_func_start sub_0817F744 +sub_0817F744: @ 0x0817F744 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x28 + ble _0817F760 + ldr r0, _0817F75C + str r0, [r4, #0x1c] + movs r0, #0 + b _0817F79A + .align 2, 0 +_0817F75C: .4byte sub_08184C34 +_0817F760: + movs r0, #1 + ands r0, r1 + movs r5, #0xff + cmp r0, #0 + bne _0817F76C + movs r5, #1 +_0817F76C: + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _0817F780 + adds r0, #0xff +_0817F780: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl sub_0806EFB8 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 +_0817F79A: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0817F744 + + thumb_func_start sub_0817F7A8 +sub_0817F7A8: @ 0x0817F7A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0817F7C8 + ldr r0, _0817F7C4 + str r0, [r4, #0x1c] + movs r0, #0 + b _0817F7F2 + .align 2, 0 +_0817F7C4: .4byte sub_08184C34 +_0817F7C8: + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #7 + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _0817F7E2 + adds r0, #0xff +_0817F7E2: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl sub_0806EFB8 +_0817F7F2: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817F7A8 + + thumb_func_start sub_0817F808 +sub_0817F808: @ 0x0817F808 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x28 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F7A8 + ldr r0, _0817F820 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817F820: .4byte sub_0817F7A8 + thumb_func_end sub_0817F808 + + thumb_func_start sub_0817F824 +sub_0817F824: @ 0x0817F824 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0817F844 + ldr r0, _0817F840 + str r0, [r4, #0x1c] + movs r0, #0 + b _0817F870 + .align 2, 0 +_0817F840: .4byte sub_08184C34 +_0817F844: + movs r0, #0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #7 + movs r2, #0x2e + ldrsh r1, [r4, r2] + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _0817F85E + adds r0, #0xff +_0817F85E: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl sub_0806EFB8 + rsbs r0, r0, #0 +_0817F870: + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817F824 + + thumb_func_start sub_0817F884 +sub_0817F884: @ 0x0817F884 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x28 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F824 + ldr r0, _0817F89C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817F89C: .4byte sub_0817F824 + thumb_func_end sub_0817F884 + + thumb_func_start sub_0817F8A0 +sub_0817F8A0: @ 0x0817F8A0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0xc0 + lsls r0, r0, #1 + cmp r1, r0 + ble _0817F8C0 + ldr r0, _0817F8BC + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + b _0817F90A + .align 2, 0 +_0817F8BC: .4byte sub_08184C34 +_0817F8C0: + adds r0, r1, #0 + cmp r1, #0 + bge _0817F8C8 + adds r0, #0x7f +_0817F8C8: + asrs r2, r0, #7 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + blt _0817F90C + cmp r0, #1 + ble _0817F8F4 + cmp r0, #3 + bgt _0817F90C + ldr r2, _0817F8F0 + adds r1, r1, r2 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x2e + ldrsh r2, [r4, r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #0x10 + b _0817F902 + .align 2, 0 +_0817F8F0: .4byte 0xFFFFFF00 +_0817F8F4: + lsls r0, r2, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x2e + ldrsh r1, [r4, r2] + lsls r1, r1, #0x11 +_0817F902: + asrs r1, r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 +_0817F90A: + strh r0, [r4, #0x26] +_0817F90C: + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817F8A0 + + thumb_func_start sub_0817F918 +sub_0817F918: @ 0x0817F918 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F8A0 + ldr r0, _0817F930 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817F930: .4byte sub_0817F8A0 + thumb_func_end sub_0817F918 + + thumb_func_start sub_0817F934 +sub_0817F934: @ 0x0817F934 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r2, r0 + ble _0817F954 + ldr r0, _0817F950 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + b _0817FA02 + .align 2, 0 +_0817F950: .4byte sub_08184C34 +_0817F954: + adds r0, r2, #0 + cmp r2, #0 + bge _0817F95C + adds r0, #0x7f +_0817F95C: + lsls r0, r0, #9 + asrs r0, r0, #0x10 + cmp r0, #5 + bhi _0817F9E8 + lsls r0, r0, #2 + ldr r1, _0817F970 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0817F970: .4byte _0817F974 +_0817F974: @ jump table + .4byte _0817F98C @ case 0 + .4byte _0817F98C @ case 1 + .4byte _0817F990 @ case 2 + .4byte _0817F994 @ case 3 + .4byte _0817F9B0 @ case 4 + .4byte _0817F9CA @ case 5 +_0817F98C: + movs r0, #0 + b _0817F9E6 +_0817F990: + movs r2, #0 + b _0817F9E8 +_0817F994: + adds r0, r2, #0 + cmp r2, #0 + bge _0817F99C + adds r0, #0x7f +_0817F99C: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r2, r0 + lsls r0, r0, #3 + rsbs r0, r0, #0 + cmp r0, #0 + bge _0817F9AC + adds r0, #0x7f +_0817F9AC: + asrs r0, r0, #7 + b _0817F9E6 +_0817F9B0: + adds r0, r2, #0 + cmp r2, #0 + bge _0817F9B8 + adds r0, #0x7f +_0817F9B8: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r2, r0 + cmp r0, #0 + bge _0817F9C4 + adds r0, #7 +_0817F9C4: + asrs r0, r0, #3 + subs r0, #8 + b _0817F9E6 +_0817F9CA: + adds r0, r2, #0 + cmp r2, #0 + bge _0817F9D2 + adds r0, #0x7f +_0817F9D2: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r2, r0 + lsls r0, r0, #3 + rsbs r0, r0, #0 + cmp r0, #0 + bge _0817F9E2 + adds r0, #0x7f +_0817F9E2: + asrs r0, r0, #7 + adds r0, #8 +_0817F9E6: + strh r0, [r4, #0x24] +_0817F9E8: + adds r0, r2, #0 + cmp r2, #0 + bge _0817F9F0 + adds r0, #0x7f +_0817F9F0: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 +_0817FA02: + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817F934 + + thumb_func_start sub_0817FA10 +sub_0817FA10: @ 0x0817FA10 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0817FA22 + adds r0, r6, #0 + bl sub_0817F51C +_0817FA22: + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0x28 + ble _0817FA48 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _0817FA44 + str r0, [r6, #0x1c] + b _0817FABE + .align 2, 0 +_0817FA44: .4byte sub_08184C34 +_0817FA48: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #8 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _0817FA5C + adds r0, #0xff +_0817FA5C: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrh r0, [r6, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0817FA8C + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + strh r0, [r6, #0x36] + adds r0, r4, #0 + movs r1, #0x20 + b _0817FAA6 +_0817FA8C: + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #8 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + strh r0, [r6, #0x36] + adds r0, r4, #0 + movs r1, #8 +_0817FAA6: + bl sub_0806EFB8 + adds r0, r0, r5 + strh r0, [r6, #0x38] + movs r0, #0x36 + ldrsh r1, [r6, r0] + movs r0, #0x38 + ldrsh r2, [r6, r0] + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F580 +_0817FABE: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817FA10 + + thumb_func_start sub_0817FACC +sub_0817FACC: @ 0x0817FACC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817FADE + strh r0, [r4, #0x34] +_0817FADE: + ldr r2, _0817FB04 + movs r5, #0x34 + ldrsh r1, [r4, r5] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r1, r2, #2 + adds r3, r0, r1 + movs r1, #0 + ldrsb r1, [r3, r1] + movs r5, #0x32 + ldrsh r0, [r4, r5] + cmp r1, r0 + bne _0817FB16 + adds r0, r1, #0 + cmp r0, #0 + bne _0817FB0C + ldr r0, _0817FB08 + str r0, [r4, #0x1c] + b _0817FB16 + .align 2, 0 +_0817FB04: .4byte gUnknown_85D37D0 +_0817FB08: .4byte sub_08184C34 +_0817FB0C: + ldrh r0, [r4, #0x34] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x34] + strh r1, [r4, #0x32] +_0817FB16: + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r1, r0, r1 + adds r0, r2, #2 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _0817FB38 + ldr r0, _0817FB34 + str r0, [r4, #0x1c] + b _0817FB6A + .align 2, 0 +_0817FB34: .4byte sub_08184C34 +_0817FB38: + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r5, #0x34 + ldrsh r1, [r4, r5] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 +_0817FB6A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0817FACC + + thumb_func_start sub_0817FB70 +sub_0817FB70: @ 0x0817FB70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817FACC + ldr r0, _0817FB84 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FB84: .4byte sub_0817FACC + thumb_func_end sub_0817FB70 + + thumb_func_start sub_0817FB88 +sub_0817FB88: @ 0x0817FB88 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x90 + lsls r0, r0, #4 + cmp r1, r0 + ble _0817FBA4 + ldr r0, _0817FBA0 + str r0, [r4, #0x1c] + movs r0, #0 + b _0817FBBE + .align 2, 0 +_0817FBA0: .4byte sub_08184C34 +_0817FBA4: + adds r0, r1, #0 + cmp r1, #0 + bge _0817FBAC + adds r0, #0xff +_0817FBAC: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFB8 +_0817FBBE: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817FB88 + + thumb_func_start sub_0817FBD0 +sub_0817FBD0: @ 0x0817FBD0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3c + strh r0, [r4, #0x2e] + movs r0, #3 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817FB88 + ldr r0, _0817FBEC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FBEC: .4byte sub_0817FB88 + thumb_func_end sub_0817FBD0 + + thumb_func_start sub_0817FBF0 +sub_0817FBF0: @ 0x0817FBF0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x90 + lsls r0, r0, #4 + cmp r1, r0 + ble _0817FC0C + ldr r0, _0817FC08 + str r0, [r4, #0x1c] + movs r0, #0 + b _0817FC24 + .align 2, 0 +_0817FC08: .4byte sub_08184C34 +_0817FC0C: + adds r0, r1, #0 + cmp r1, #0 + bge _0817FC14 + adds r0, #0xff +_0817FC14: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #3 + bl sub_0806EFB8 +_0817FC24: + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817FBF0 + + thumb_func_start sub_0817FC34 +sub_0817FC34: @ 0x0817FC34 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3c + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817FBF0 + ldr r0, _0817FC4C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FC4C: .4byte sub_0817FBF0 + thumb_func_end sub_0817FC34 + + thumb_func_start sub_0817FC50 +sub_0817FC50: @ 0x0817FC50 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldrh r2, [r7, #0x32] + movs r0, #0x32 + ldrsh r1, [r7, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _0817FC74 + ldr r0, _0817FC70 + str r0, [r7, #0x1c] + movs r0, #0 + strh r0, [r7, #0x24] + strh r0, [r7, #0x26] + b _0817FCD0 + .align 2, 0 +_0817FC70: .4byte sub_08184C34 +_0817FC74: + movs r0, #1 + ands r0, r2 + movs r5, #0xff + cmp r0, #0 + bne _0817FC80 + movs r5, #1 +_0817FC80: + movs r1, #0x32 + ldrsh r0, [r7, r1] + cmp r0, #0 + bge _0817FC8A + adds r0, #3 +_0817FC8A: + asrs r0, r0, #2 + movs r1, #8 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + asrs r6, r0, #0x10 + movs r0, #0x32 + ldrsh r1, [r7, r0] + adds r4, r1, #0 + cmp r1, #0 + bge _0817FCA2 + adds r4, #0xff +_0817FCA2: + asrs r4, r4, #8 + lsls r4, r4, #8 + subs r4, r1, r4 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806EFB8 + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + adds r1, r0, #0 + muls r1, r5, r1 + adds r0, r1, #0 + strh r0, [r7, #0x26] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806EFD4 + adds r1, r0, #0 + muls r1, r5, r1 + adds r0, r1, #0 + strh r0, [r7, #0x24] +_0817FCD0: + ldrh r0, [r7, #0x32] + adds r0, #9 + strh r0, [r7, #0x32] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0817FC50 + + thumb_func_start sub_0817FCDC +sub_0817FCDC: @ 0x0817FCDC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r2, _0817FCFC + ldrh r6, [r4, #0x2e] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r2 + ldrh r0, [r5] + cmp r0, #0 + beq _0817FD00 + subs r0, #1 + strh r0, [r5] + b _0817FDA4 + .align 2, 0 +_0817FCFC: .4byte gUnknown_3001240 +_0817FD00: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817FD1C + movs r2, #8 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0817FD1C + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_0817FD1C: + ldr r2, _0817FD5C + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r0, r2 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #6 + ldrsh r0, [r5, r2] + cmp r1, r0 + ble _0817FD70 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r1, [r5, #4] + movs r2, #4 + ldrsh r0, [r5, r2] + cmp r0, #1 + ble _0817FD60 + subs r0, r1, #1 + movs r1, #0 + strh r0, [r5, #4] + movs r0, #0xa + strh r0, [r5] + strh r1, [r4, #0x32] + b _0817FD9E + .align 2, 0 +_0817FD5C: .4byte gUnknown_3001240 +_0817FD60: + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _0817FD6C + str r0, [r4, #0x1c] + b _0817FD9E + .align 2, 0 +_0817FD6C: .4byte sub_08184C34 +_0817FD70: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _0817FD7C + adds r0, #0xff +_0817FD7C: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0806EFB8 + strh r0, [r4, #0x3a] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3a] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 +_0817FD9E: + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] +_0817FDA4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817FCDC + + thumb_func_start sub_0817FDAC +sub_0817FDAC: @ 0x0817FDAC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + strh r0, [r4, #0x2e] + ldr r2, _0817FDE0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #6] + strh r3, [r1] + adds r0, r4, #0 + bl sub_0817FCDC + ldr r0, _0817FDE4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FDE0: .4byte gUnknown_3001240 +_0817FDE4: .4byte sub_0817FCDC + thumb_func_end sub_0817FDAC + + thumb_func_start sub_0817FDE8 +sub_0817FDE8: @ 0x0817FDE8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2e] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817FE00 + adds r0, r4, #0 + bl sub_0817F51C +_0817FE00: + movs r2, #0x32 + ldrsh r6, [r4, r2] + ldr r1, _0817FE30 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + cmp r6, r1 + ble _0817FE38 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _0817FE34 + str r0, [r4, #0x1c] + b _0817FE56 + .align 2, 0 +_0817FE30: .4byte gUnknown_3001240 +_0817FE34: .4byte sub_08184C34 +_0817FE38: + movs r2, #8 + ldrsh r1, [r0, r2] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + muls r0, r6, r0 + strh r0, [r4, #0x3a] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3a] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 +_0817FE56: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0817FDE8 + + thumb_func_start sub_0817FE64 +sub_0817FE64: @ 0x0817FE64 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _0817FE94 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x3c + strh r0, [r1] + movs r0, #0x14 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_0817FDE8 + ldr r0, _0817FE98 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FE94: .4byte gUnknown_3001240 +_0817FE98: .4byte sub_0817FDE8 + thumb_func_end sub_0817FE64 + + thumb_func_start sub_0817FE9C +sub_0817FE9C: @ 0x0817FE9C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r0, [r5, #0x2e] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r5, #0 + bl sub_0817F5B8 + ldr r1, _0817FED0 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r6, r0, r1 + movs r0, #0x32 + ldrsh r1, [r5, r0] + movs r2, #6 + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _0817FED8 + movs r0, #0 + strh r0, [r5, #0x24] + strh r0, [r5, #0x26] + ldr r0, _0817FED4 + str r0, [r5, #0x1c] + b _0817FF16 + .align 2, 0 +_0817FED0: .4byte gUnknown_3001240 +_0817FED4: .4byte sub_08184C34 +_0817FED8: + movs r0, #0x32 + ldrsh r1, [r5, r0] + adds r0, r1, #0 + adds r0, #0xc0 + adds r4, r0, #0 + cmp r0, #0 + bge _0817FEEA + ldr r2, _0817FF34 + adds r4, r1, r2 +_0817FEEA: + asrs r4, r4, #8 + lsls r4, r4, #8 + subs r4, r0, r4 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #8 + ldrsh r1, [r6, r0] + lsls r1, r1, #0x11 + asrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r5, #0x24] + movs r2, #8 + ldrsh r1, [r6, r2] + adds r0, r4, #0 + bl sub_0806EFB8 + ldrh r1, [r6, #8] + adds r0, r0, r1 + strh r0, [r5, #0x26] +_0817FF16: + ldr r0, _0817FF38 + lsls r1, r7, #1 + adds r1, r1, r7 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrh r0, [r1, #2] + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F5B8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0817FF34: .4byte 0x000001BF +_0817FF38: .4byte gUnknown_3001240 + thumb_func_end sub_0817FE9C + + thumb_func_start sub_0817FF3C +sub_0817FF3C: @ 0x0817FF3C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _0817FF74 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #6] + movs r0, #6 + strh r0, [r1, #8] + movs r0, #0x18 + strh r0, [r1, #2] + adds r0, r4, #0 + bl sub_0817FE9C + ldr r0, _0817FF78 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0817FF74: .4byte gUnknown_3001240 +_0817FF78: .4byte sub_0817FE9C + thumb_func_end sub_0817FF3C + + thumb_func_start sub_0817FF7C +sub_0817FF7C: @ 0x0817FF7C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0817FF98 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_0817FF98: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _0817FFB8 + ldrh r0, [r4, #0x3c] + movs r1, #0x10 + movs r2, #0 + movs r3, #0 + bl sub_0806F410 + ldr r0, _0817FFB4 + str r0, [r4, #0x1c] + b _0817FFD4 + .align 2, 0 +_0817FFB4: .4byte sub_08184C34 +_0817FFB8: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0x10 + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x10 + movs r3, #0 + bl sub_0806F410 +_0817FFD4: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0817FF7C + + thumb_func_start sub_0817FFE0 +sub_0817FFE0: @ 0x0817FFE0 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r7, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0817FFF4 + adds r0, r6, #0 + bl sub_0817F51C +_0817FFF4: + ldrh r5, [r6, #0x32] + movs r2, #0x32 + ldrsh r0, [r6, r2] + cmp r0, #0x28 + ble _0818001C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08180018 + str r0, [r6, #0x1c] + b _081800B0 + .align 2, 0 +_08180018: .4byte sub_08184C34 +_0818001C: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #7 + movs r1, #0x28 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r5, #0 + subs r0, #0xa + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x13 + bhi _08180042 + ldrh r0, [r6, #0x3c] + adds r0, #0x33 + strh r0, [r6, #0x3c] + movs r7, #0xff + ands r7, r0 +_08180042: + movs r2, #0x30 + ldrsh r0, [r6, r2] + cmp r0, #0 + bne _08180070 + lsls r5, r4, #0x10 + asrs r0, r5, #0x10 + movs r1, #0x28 + bl sub_0806EFB8 + adds r4, r0, #0 + adds r0, r7, #0 + movs r1, #0x10 + bl sub_0806EFB8 + ldr r1, _0818006C + adds r0, r0, r1 + adds r4, r4, r0 + strh r4, [r6, #0x36] + adds r4, r5, #0 + b _08180090 + .align 2, 0 +_0818006C: .4byte 0xFFFFFF00 +_08180070: + adds r0, r7, #0 + movs r1, #0x10 + bl sub_0806EFB8 + adds r5, r0, #0 + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + movs r1, #0x28 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r5 + subs r1, r1, r0 + strh r1, [r6, #0x36] +_08180090: + asrs r0, r4, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r6, #0x38] + movs r2, #0x36 + ldrsh r1, [r6, r2] + movs r0, #0x38 + ldrsh r2, [r6, r0] + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F4C4 +_081800B0: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0817FFE0 + + thumb_func_start sub_081800BC +sub_081800BC: @ 0x081800BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r0, #0 + mov r8, r0 + movs r7, #0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _081800D8 + adds r0, r5, #0 + bl sub_0817F51C +_081800D8: + ldrh r6, [r5, #0x32] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r0, #0x28 + ble _08180104 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r5, #0 + bl sub_0817F628 + ldr r0, _08180100 + str r0, [r5, #0x1c] + mov r0, r8 + strh r0, [r5, #0x26] + b _081801B6 + .align 2, 0 +_08180100: .4byte sub_08184C34 +_08180104: + movs r1, #0x32 + ldrsh r0, [r5, r1] + lsls r0, r0, #7 + movs r1, #0x28 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r6, #0 + subs r0, #0xa + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x13 + bhi _0818012A + ldrh r0, [r5, #0x3c] + adds r0, #0x33 + strh r0, [r5, #0x3c] + movs r7, #0xff + ands r7, r0 +_0818012A: + movs r2, #0x30 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0818014C + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + ldr r2, _08180148 + adds r1, r2, #0 + subs r1, r1, r0 + strh r1, [r5, #0x36] + b _0818015E + .align 2, 0 +_08180148: .4byte 0xFFFFFF00 +_0818014C: + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r5, #0x36] +_0818015E: + adds r6, r4, #0 + adds r0, r7, #0 + movs r1, #8 + bl sub_0806EFB8 + adds r4, r0, #0 + asrs r0, r6, #0x10 + movs r1, #0x28 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r4, r1, r4 + subs r4, r4, r0 + strh r4, [r5, #0x38] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r4, r1 + beq _0818019C + movs r2, #0x38 + ldrsh r0, [r5, r2] + subs r0, r1, r0 + cmp r0, #0 + bge _08180196 + adds r0, #7 +_08180196: + lsls r0, r0, #0xd + lsrs r0, r0, #0x10 + mov r8, r0 +_0818019C: + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + movs r2, #0x36 + ldrsh r1, [r5, r2] + movs r0, #0x38 + ldrsh r2, [r5, r0] + adds r0, r5, #0 + movs r3, #0 + bl sub_0817F4C4 +_081801B6: + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081800BC + + thumb_func_start sub_081801C8 +sub_081801C8: @ 0x081801C8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r2, _08180214 + movs r1, #0x38 + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r5, [r1] + adds r2, #1 + adds r0, r0, r2 + ldrb r6, [r0] + movs r1, #0 + cmp r5, #0xfe + beq _08180204 + subs r0, r6, r7 + muls r0, r5, r0 + adds r1, r6, #0 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 +_08180204: + cmp r5, #0xff + bne _0818021C + ldr r0, _08180218 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x26] + b _08180240 + .align 2, 0 +_08180214: .4byte gUnknown_85D34E0 +_08180218: .4byte sub_08184C34 +_0818021C: + mov r0, r8 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + cmp r7, r6 + bne _08180232 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + movs r0, #0 + b _0818023E +_08180232: + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x3a] + adds r0, #1 +_0818023E: + strh r0, [r4, #0x3a] +_08180240: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081801C8 + + thumb_func_start sub_0818024C +sub_0818024C: @ 0x0818024C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x30 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081801C8 + ldr r0, _08180264 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180264: .4byte sub_081801C8 + thumb_func_end sub_0818024C + + thumb_func_start sub_08180268 +sub_08180268: @ 0x08180268 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x32] + lsls r7, r0, #0x18 + lsrs r5, r7, #0x18 + mov r8, r5 + cmp r0, #0 + bne _08180286 + adds r0, r4, #0 + bl sub_0817F51C +_08180286: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x23 + ble _081802B0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081802AC + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + b _0818030A + .align 2, 0 +_081802AC: .4byte sub_08184C34 +_081802B0: + adds r6, r5, #0 + subs r6, #0xa + lsls r0, r6, #7 + movs r1, #0x14 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r5, #9 + bhi _081802D6 + movs r2, #0x80 + lsls r2, r2, #1 + lsrs r3, r7, #0x19 + lsls r3, r3, #9 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + b _0818030A +_081802D6: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x13 + bhi _081802EE + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #5 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + b _0818030A +_081802EE: + movs r2, #0x80 + lsls r2, r2, #1 + movs r3, #0x23 + mov r0, r8 + subs r3, r3, r0 + lsrs r0, r3, #0x1f + adds r3, r3, r0 + asrs r3, r3, #1 + lsls r3, r3, #0x1a + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 +_0818030A: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08180268 + + thumb_func_start sub_08180320 +sub_08180320: @ 0x08180320 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08180332 + adds r0, r6, #0 + bl sub_0817F51C +_08180332: + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0x64 + ble _0818035C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r0, #0 + strh r0, [r6, #0x26] + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08180358 + str r0, [r6, #0x1c] + b _08180394 + .align 2, 0 +_08180358: .4byte sub_08184C34 +_0818035C: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #8 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl sub_0806EFB8 + strh r0, [r6, #0x26] + movs r5, #0x80 + lsls r5, r5, #1 + ldr r1, _081803A0 + adds r0, r4, #0 + bl sub_0806EFB8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r5, #0 + bl sub_0817F580 +_08180394: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081803A0: .4byte 0x00000CCC + thumb_func_end sub_08180320 + + thumb_func_start sub_081803A4 +sub_081803A4: @ 0x081803A4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _081803B8 + adds r0, r6, #0 + bl sub_0817F51C +_081803B8: + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0x64 + ble _081803E0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r5, [r6, #0x26] + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _081803DC + str r0, [r6, #0x1c] + b _0818042E + .align 2, 0 +_081803DC: .4byte sub_08184C34 +_081803E0: + movs r0, #0x32 + ldrsh r5, [r6, r0] + lsls r0, r5, #8 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #9 + adds r0, r5, #0 + movs r1, #0x64 + bl __divsi3 + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #0x2e + ldrsh r1, [r6, r0] + adds r0, r4, #0 + bl sub_0806EFB8 + strh r0, [r6, #0x26] + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r5, #0 + ldr r1, _0818043C + bl sub_0806EFB8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r4, #0 + bl sub_0817F580 +_0818042E: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818043C: .4byte 0x00000CCC + thumb_func_end sub_081803A4 + + thumb_func_start sub_08180440 +sub_08180440: @ 0x08180440 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xa + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081803A4 + ldr r0, _08180458 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180458: .4byte sub_081803A4 + thumb_func_end sub_08180440 + + thumb_func_start sub_0818045C +sub_0818045C: @ 0x0818045C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08180470 + adds r0, r6, #0 + bl sub_0817F51C +_08180470: + movs r2, #0x32 + ldrsh r0, [r6, r2] + cmp r0, #0x64 + ble _08180498 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r5, [r6, #0x26] + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08180494 + str r0, [r6, #0x1c] + b _081804F0 + .align 2, 0 +_08180494: .4byte sub_08184C34 +_08180498: + movs r0, #0x32 + ldrsh r5, [r6, r0] + lsls r0, r5, #8 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #9 + adds r0, r5, #0 + movs r1, #0x64 + bl __divsi3 + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + lsls r4, r4, #0x10 + asrs r0, r4, #0x10 + lsrs r4, r4, #0x1f + adds r0, r0, r4 + asrs r0, r0, #1 + movs r2, #0x2e + ldrsh r1, [r6, r2] + lsls r1, r1, #0x11 + asrs r1, r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r6, #0x26] + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r5, #0 + ldr r1, _081804FC + bl sub_0806EFB8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r4, #0 + bl sub_0817F580 +_081804F0: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081804FC: .4byte 0x00000CCC + thumb_func_end sub_0818045C + + thumb_func_start sub_08180500 +sub_08180500: @ 0x08180500 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0818045C + ldr r0, _08180518 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180518: .4byte sub_0818045C + thumb_func_end sub_08180500 + + thumb_func_start sub_0818051C +sub_0818051C: @ 0x0818051C + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0817F5B8 + movs r5, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08180534 + adds r0, r6, #0 + bl sub_0817F51C +_08180534: + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0x64 + ble _0818055C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r5, [r6, #0x24] + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08180558 + str r0, [r6, #0x1c] + b _081805A8 + .align 2, 0 +_08180558: .4byte sub_08184C34 +_0818055C: + movs r0, #0x32 + ldrsh r5, [r6, r0] + lsls r0, r5, #8 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #9 + adds r0, r5, #0 + movs r1, #0x64 + bl __divsi3 + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r6, #0x24] + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r5, #0 + ldr r1, _081805BC + bl sub_0806EFB8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r4, #0 + bl sub_0817F580 +_081805A8: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + adds r0, r6, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081805BC: .4byte 0x00000CCC + thumb_func_end sub_0818051C + + thumb_func_start sub_081805C0 +sub_081805C0: @ 0x081805C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r6, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081805D6 + adds r0, r4, #0 + bl sub_0817F51C + strh r6, [r4, #0x34] +_081805D6: + adds r0, r4, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + cmp r2, r0 + ble _0818060C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r6, [r4, #0x26] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08180608 + str r0, [r4, #0x1c] + b _081806AA + .align 2, 0 +_08180608: .4byte sub_08184C34 +_0818060C: + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _08180642 + adds r2, r0, #0 + lsls r0, r2, #1 + cmp r1, r0 + bge _08180642 + movs r0, #0x80 + adds r1, r2, #0 + bl __divsi3 + ldrh r1, [r4, #0x34] + adds r1, r1, r0 + strh r1, [r4, #0x34] +_08180642: + lsls r0, r5, #0x10 + asrs r1, r0, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r5, r0, #0 + cmp r1, r2 + ble _0818065C + subs r0, r2, r1 + cmp r0, #0 + bge _08180658 + adds r0, #7 +_08180658: + lsls r0, r0, #0xd + lsrs r6, r0, #0x10 +_0818065C: + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r1, #0xa + bl sub_0806EFB8 + rsbs r0, r0, #0 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + subs r0, r0, r1 + strh r0, [r4, #0x26] + movs r2, #0x36 + ldrsh r0, [r4, r2] + movs r1, #0x20 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + asrs r2, r5, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x80 + bl __divsi3 + ldrh r1, [r4, #0x36] + adds r1, r1, r0 + movs r0, #0xff + ands r1, r0 + strh r1, [r4, #0x36] +_081806AA: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081805C0 + + thumb_func_start sub_081806B8 +sub_081806B8: @ 0x081806B8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x10 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081805C0 + ldr r0, _081806D0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081806D0: .4byte sub_081805C0 + thumb_func_end sub_081806B8 + + thumb_func_start sub_081806D4 +sub_081806D4: @ 0x081806D4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r0, #0x32 + ldrsh r4, [r5, r0] + movs r2, #0x3a + ldrsh r1, [r5, r2] + movs r0, #0x80 + bl __divsi3 + movs r2, #0x3c + ldrsh r1, [r5, r2] + muls r0, r1, r0 + cmp r4, r0 + ble _08180714 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r6, [r5, #0x26] + adds r0, r5, #0 + bl sub_0817F628 + ldr r0, _08180710 + str r0, [r5, #0x1c] + b _0818077C + .align 2, 0 +_08180710: .4byte sub_08184C34 +_08180714: + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r1, #0x20 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r0, r1 + ble _08180740 + subs r0, r1, r0 + cmp r0, #0 + bge _0818073C + adds r0, #7 +_0818073C: + lsls r0, r0, #0xd + lsrs r6, r0, #0x10 +_08180740: + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r1, #0x30 + bl sub_0806EFB8 + adds r1, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r4, #0x10 + asrs r2, r2, #0x10 + adds r0, r5, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x3a] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + movs r1, #0xff + ands r0, r1 + strh r0, [r5, #0x36] +_0818077C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081806D4 + + thumb_func_start sub_08180784 +sub_08180784: @ 0x08180784 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0818079E + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #3 + strh r0, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] +_0818079E: + adds r0, r4, #0 + bl sub_081806D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08180784 + + thumb_func_start sub_081807AC +sub_081807AC: @ 0x081807AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08180850 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #6] + str r1, [sp] + ldr r5, _08180854 + movs r3, #0x36 + ldrsh r2, [r4, r3] + lsls r1, r2, #1 + adds r1, r1, r2 + movs r3, #8 + ldrsh r2, [r0, r3] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r6, r0, #3 + adds r1, r1, r6 + adds r2, r1, r5 + adds r0, r5, #1 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + mov sb, r2 + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + ldrh r7, [r4, #0x34] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180818 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08180818: + movs r2, #0x36 + ldrsh r1, [r4, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, r0, r6 + adds r5, #2 + mov r8, r5 + adds r1, r0, r5 + movs r5, #0 + ldrsb r5, [r1, r5] + cmp r5, #0 + bne _0818085C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + strh r5, [r4, #0x24] + strh r5, [r4, #0x26] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08180858 + str r0, [r4, #0x1c] + b _081808E6 + .align 2, 0 +_08180850: .4byte gUnknown_3001240 +_08180854: .4byte gUnknown_85D37EE +_08180858: .4byte sub_08184C34 +_0818085C: + lsls r0, r7, #0x10 + asrs r5, r0, #0x10 + lsls r0, r5, #7 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + mov r3, sl + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + muls r0, r5, r0 + movs r1, #0x36 + ldrsh r2, [r4, r1] + lsls r1, r2, #1 + adds r1, r1, r2 + adds r1, r1, r6 + add r1, r8 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + bl __divsi3 + add r0, sb + strh r0, [r4, #0x24] + ldr r2, [sp] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x24 + ldrsh r1, [r4, r3] + muls r0, r1, r0 + rsbs r0, r0, #0 + cmp r0, #0 + bge _081808B0 + adds r0, #7 +_081808B0: + lsls r3, r0, #0xd + lsrs r3, r3, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r0, #0x36 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, r0, r6 + add r0, r8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r5, r0 + bne _081808E0 + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + movs r0, #0 + b _081808E4 +_081808E0: + ldrh r0, [r4, #0x34] + adds r0, #1 +_081808E4: + strh r0, [r4, #0x34] +_081808E6: + adds r0, r4, #0 + bl sub_0817F5B8 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081807AC + + thumb_func_start sub_081808FC +sub_081808FC: @ 0x081808FC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08180930 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1, #6] + ldrh r0, [r4, #0x3a] + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_081807AC + ldr r0, _08180934 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180930: .4byte gUnknown_3001240 +_08180934: .4byte sub_081807AC + thumb_func_end sub_081808FC + + thumb_func_start sub_08180938 +sub_08180938: @ 0x08180938 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180954 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_08180954: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _08180978 + ldrh r0, [r4, #0x3c] + ldr r3, _08180970 + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + ldr r0, _08180974 + str r0, [r4, #0x1c] + b _08180994 + .align 2, 0 +_08180970: .4byte 0x000002DF +_08180974: .4byte sub_08184C34 +_08180978: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _081809A0 + movs r1, #0x10 + bl sub_0806F410 +_08180994: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081809A0: .4byte 0x000002DF + thumb_func_end sub_08180938 + + thumb_func_start sub_081809A4 +sub_081809A4: @ 0x081809A4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081809C0 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_081809C0: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _081809E0 + ldrh r0, [r4, #0x3c] + movs r1, #0x10 + movs r2, #0 + movs r3, #0x1f + bl sub_0806F410 + ldr r0, _081809DC + str r0, [r4, #0x1c] + b _081809FC + .align 2, 0 +_081809DC: .4byte sub_08184C34 +_081809E0: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r1, #0x10 + movs r3, #0x1f + bl sub_0806F410 +_081809FC: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081809A4 + + thumb_func_start sub_08180A08 +sub_08180A08: @ 0x08180A08 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180A24 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_08180A24: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _08180A44 + ldrh r0, [r4, #0x3c] + movs r3, #0xf8 + lsls r3, r3, #7 + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + ldr r0, _08180A40 + str r0, [r4, #0x1c] + b _08180A62 + .align 2, 0 +_08180A40: .4byte sub_08184C34 +_08180A44: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r3, #0xf8 + lsls r3, r3, #7 + movs r1, #0x10 + bl sub_0806F410 +_08180A62: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08180A08 + + thumb_func_start sub_08180A70 +sub_08180A70: @ 0x08180A70 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180A8C + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_08180A8C: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _08180AB0 + ldrh r0, [r4, #0x3c] + ldr r3, _08180AA8 + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + ldr r0, _08180AAC + str r0, [r4, #0x1c] + b _08180ACC + .align 2, 0 +_08180AA8: .4byte 0x000003FF +_08180AAC: .4byte sub_08184C34 +_08180AB0: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08180AD8 + movs r1, #0x10 + bl sub_0806F410 +_08180ACC: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180AD8: .4byte 0x000003FF + thumb_func_end sub_08180A70 + + thumb_func_start sub_08180ADC +sub_08180ADC: @ 0x08180ADC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180AF8 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] +_08180AF8: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x80 + ble _08180B1C + ldrh r0, [r4, #0x3c] + ldr r3, _08180B14 + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 + ldr r0, _08180B18 + str r0, [r4, #0x1c] + b _08180B38 + .align 2, 0 +_08180B14: .4byte 0x00006018 +_08180B18: .4byte sub_08184C34 +_08180B1C: + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _08180B44 + movs r1, #0x10 + bl sub_0806F410 +_08180B38: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180B44: .4byte 0x00006018 + thumb_func_end sub_08180ADC + + thumb_func_start sub_08180B48 +sub_08180B48: @ 0x08180B48 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + ldr r0, _08180B5C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180B5C: .4byte sub_08180B60 + thumb_func_end sub_08180B48 + + thumb_func_start sub_08180B60 +sub_08180B60: @ 0x08180B60 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + adds r0, #1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _08180B82 + movs r0, #8 + strh r0, [r4, #0x24] + movs r0, #2 + strh r0, [r4, #0x3c] + ldr r0, _08180B90 + str r0, [r4, #0x1c] +_08180B82: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180B90: .4byte sub_08180B94 + thumb_func_end sub_08180B60 + + thumb_func_start sub_08180B94 +sub_08180B94: @ 0x08180B94 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x24] + ldrh r0, [r4, #0x3c] + subs r1, r1, r0 + strh r1, [r4, #0x24] + adds r0, #1 + adds r2, r0, #0 + strh r0, [r4, #0x3c] + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _08180BDE + lsls r0, r2, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0 + strh r0, [r4, #0x3a] + ldrh r1, [r4, #0x24] + ldr r5, _08180BEC + movs r3, #8 + rsbs r3, r3, #0 +_08180BC0: + subs r0, r1, r2 + lsls r0, r0, #0x10 + ldrh r1, [r4, #0x3a] + adds r1, #1 + strh r1, [r4, #0x3a] + adds r1, r2, #1 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, r3 + bgt _08180BC0 + movs r0, #1 + strh r0, [r4, #0x38] + str r5, [r4, #0x1c] +_08180BDE: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08180BEC: .4byte sub_08180BF0 + thumb_func_end sub_08180B94 + + thumb_func_start sub_08180BF0 +sub_08180BF0: @ 0x08180BF0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x3c] + subs r0, r0, r1 + strh r0, [r4, #0x24] + adds r1, #1 + strh r1, [r4, #0x3c] + movs r0, #0x38 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0x3a] + movs r3, #0x3a + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _08180C30 + strh r2, [r4, #0x38] +_08180C30: + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r5, #8 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r1, #0x24 + ldrsh r0, [r4, r1] + movs r1, #8 + rsbs r1, r1, #0 + cmp r0, r1 + bge _08180C5A + strh r1, [r4, #0x24] + movs r0, #2 + strh r0, [r4, #0x36] + movs r0, #0 + strh r0, [r4, #0x34] + strh r5, [r4, #0x32] + ldr r0, _08180C68 + str r0, [r4, #0x1c] +_08180C5A: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08180C68: .4byte sub_08180C6C + thumb_func_end sub_08180BF0 + + thumb_func_start sub_08180C6C +sub_08180C6C: @ 0x08180C6C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x34] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0xb + ble _08180CB4 + ldrh r0, [r4, #0x32] + subs r0, #2 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08180C8E + movs r0, #0 + strh r0, [r4, #0x32] +_08180C8E: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x32] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08180CC8 + ldr r0, _08180CB0 + str r0, [r4, #0x1c] + b _08180CC8 + .align 2, 0 +_08180CB0: .4byte sub_08180CD4 +_08180CB4: + ldrh r0, [r4, #0x36] + ldrh r2, [r4, #0x24] + adds r0, r0, r2 + strh r0, [r4, #0x24] + movs r2, #0x36 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + adds r0, r1, #1 + strh r0, [r4, #0x34] +_08180CC8: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08180C6C + + thumb_func_start sub_08180CD4 +sub_08180CD4: @ 0x08180CD4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + adds r0, #2 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08180CF6 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08180D04 + str r0, [r4, #0x1c] +_08180CF6: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180D04: .4byte sub_08184C34 + thumb_func_end sub_08180CD4 + + thumb_func_start sub_08180D08 +sub_08180D08: @ 0x08180D08 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r0, #0 + strh r0, [r4, #0x34] + ldr r0, _08180D20 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180D20: .4byte sub_08180D24 + thumb_func_end sub_08180D08 + + thumb_func_start sub_08180D24 +sub_08180D24: @ 0x08180D24 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + adds r0, #1 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x26] + subs r0, #1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x24] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08180D4E + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bgt _08180D4E + movs r0, #0xa + strh r0, [r4, #0x34] +_08180D4E: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #7 + ble _08180D66 + movs r1, #0 + movs r0, #8 + strh r0, [r4, #0x24] + ldr r0, _08180D74 + strh r0, [r4, #0x26] + strh r1, [r4, #0x36] + ldr r0, _08180D78 + str r0, [r4, #0x1c] +_08180D66: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180D74: .4byte 0x0000FFF8 +_08180D78: .4byte sub_08180D7C + thumb_func_end sub_08180D24 + + thumb_func_start sub_08180D7C +sub_08180D7C: @ 0x08180D7C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFD4 + subs r0, #8 + strh r0, [r4, #0x24] + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + subs r0, #8 + strh r0, [r4, #0x26] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0x3f + ble _08180DB4 + movs r0, #0xa0 + strh r0, [r4, #0x32] + movs r0, #0xa + strh r0, [r4, #0x34] + ldr r0, _08180DD4 + str r0, [r4, #0x1c] +_08180DB4: + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + ble _08180DC6 + movs r0, #0x40 + strh r0, [r4, #0x36] +_08180DC6: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180DD4: .4byte sub_08180DD8 + thumb_func_end sub_08180D7C + + thumb_func_start sub_08180DD8 +sub_08180DD8: @ 0x08180DD8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x34] + movs r2, #0x34 + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08180DF0 + subs r0, r1, #1 + strh r0, [r4, #0x34] + b _08180E42 +_08180DF0: + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #5 + bl sub_0806EFD4 + subs r0, #4 + movs r5, #0 + strh r0, [r4, #0x24] + movs r2, #0x32 + ldrsh r0, [r4, r2] + movs r1, #5 + bl sub_0806EFB8 + rsbs r0, r0, #0 + adds r0, #4 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + subs r0, #4 + strh r0, [r4, #0x32] + movs r0, #0x32 + ldrsh r3, [r4, r0] + subs r3, #0x20 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r3, #0x19 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bgt _08180E42 + strh r5, [r4, #0x24] + strh r5, [r4, #0x26] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08180E50 + str r0, [r4, #0x1c] +_08180E42: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08180E50: .4byte sub_08184C34 + thumb_func_end sub_08180DD8 + + thumb_func_start sub_08180E54 +sub_08180E54: @ 0x08180E54 + push {r4, lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x34] + movs r2, #0x34 + ldrsh r0, [r3, r2] + cmp r0, #0 + ble _08180E66 + subs r0, r1, #1 + b _08180EAA +_08180E66: + movs r2, #0 + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08180E72 + movs r2, #1 +_08180E72: + strh r2, [r3, #0x36] + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + lsls r2, r2, #2 + ldrb r1, [r0] + movs r4, #5 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + orrs r0, r2 + mov r1, ip + strb r0, [r1] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x13 + ble _08180EA8 + ldrb r0, [r1] + adds r1, r4, #0 + ands r1, r0 + mov r2, ip + strb r1, [r2] + ldr r0, _08180EB4 + str r0, [r3, #0x1c] +_08180EA8: + movs r0, #2 +_08180EAA: + strh r0, [r3, #0x34] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180EB4: .4byte sub_08184C34 + thumb_func_end sub_08180E54 + + thumb_func_start sub_08180EB8 +sub_08180EB8: @ 0x08180EB8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + ldr r0, _08180ECC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180ECC: .4byte sub_08180ED0 + thumb_func_end sub_08180EB8 + + thumb_func_start sub_08180ED0 +sub_08180ED0: @ 0x08180ED0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + subs r0, #1 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x26] + adds r1, #1 + strh r1, [r4, #0x26] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _08180F00 + ldr r0, _08180F0C + strh r0, [r4, #0x24] + movs r0, #0x10 + strh r0, [r4, #0x26] + ldr r0, _08180F10 + str r0, [r4, #0x1c] + movs r0, #0xa0 + strh r0, [r4, #0x32] +_08180F00: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180F0C: .4byte 0x0000FFF0 +_08180F10: .4byte sub_08180F14 + thumb_func_end sub_08180ED0 + + thumb_func_start sub_08180F14 +sub_08180F14: @ 0x08180F14 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x32] + subs r0, #4 + strh r0, [r4, #0x32] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0x16 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0x16 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r0, #0x32 + ldrsh r3, [r4, r0] + subs r3, #0x20 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r3, #0x19 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bgt _08180F5E + ldr r0, _08180F6C + str r0, [r4, #0x1c] +_08180F5E: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180F6C: .4byte sub_08180F70 + thumb_func_end sub_08180F14 + + thumb_func_start sub_08180F70 +sub_08180F70: @ 0x08180F70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x24] + subs r1, #1 + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x26] + adds r0, #1 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _08180F94 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08180FA0 + str r0, [r4, #0x1c] +_08180F94: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180FA0: .4byte sub_08184C34 + thumb_func_end sub_08180F70 + + thumb_func_start sub_08180FA4 +sub_08180FA4: @ 0x08180FA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + ldr r0, _08180FB8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180FB8: .4byte sub_08180FBC + thumb_func_end sub_08180FA4 + + thumb_func_start sub_08180FBC +sub_08180FBC: @ 0x08180FBC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x24] + adds r1, #1 + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x26] + subs r0, #1 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0xf + ble _08180FE0 + movs r0, #0 + strh r0, [r4, #0x32] + ldr r0, _08180FEC + str r0, [r4, #0x1c] +_08180FE0: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08180FEC: .4byte sub_08180FF0 + thumb_func_end sub_08180FBC + + thumb_func_start sub_08180FF0 +sub_08180FF0: @ 0x08180FF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _08181028 + ldr r0, _08181020 + strh r0, [r4, #0x24] + movs r0, #0x10 + strh r0, [r4, #0x26] + movs r0, #0 + strh r0, [r4, #0x32] + ldr r0, _08181024 + str r0, [r4, #0x1c] + b _08181032 + .align 2, 0 +_08181020: .4byte 0x0000FFF0 +_08181024: .4byte sub_08181050 +_08181028: + subs r0, r2, #2 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x26] + adds r0, #2 + strh r0, [r4, #0x26] +_08181032: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x32] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08180FF0 + + thumb_func_start sub_08181050 +sub_08181050: @ 0x08181050 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x24] + adds r1, #1 + movs r2, #0 + strh r1, [r4, #0x24] + ldrh r0, [r4, #0x26] + subs r0, #1 + strh r0, [r4, #0x26] + lsls r1, r1, #0x10 + cmp r1, #0 + blt _0818107A + strh r2, [r4, #0x24] + strh r2, [r4, #0x26] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181088 + str r0, [r4, #0x1c] +_0818107A: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181088: .4byte sub_08184C34 + thumb_func_end sub_08181050 + + thumb_func_start sub_0818108C +sub_0818108C: @ 0x0818108C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _081810B8 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #2 + strh r0, [r1, #2] + adds r0, r4, #0 + bl sub_081810C0 + ldr r0, _081810BC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081810B8: .4byte gUnknown_3001240 +_081810BC: .4byte sub_081810C0 + thumb_func_end sub_0818108C + + thumb_func_start sub_081810C0 +sub_081810C0: @ 0x081810C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _081810E0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, #0 + beq _081810E4 + subs r0, #1 + strh r0, [r1] + b _081811F6 + .align 2, 0 +_081810E0: .4byte gUnknown_3001240 +_081810E4: + adds r0, r4, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x32] + movs r1, #0x32 + ldrsh r5, [r4, r1] + cmp r5, #0 + bne _0818111C + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F51C + movs r2, #0x2e + ldrsh r1, [r4, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r0, [r0, #2] + strh r0, [r4, #0x3c] + ldr r0, _08181160 + strh r0, [r4, #0x34] + movs r0, #1 + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + strh r5, [r4, #0x38] + strh r5, [r4, #0x3a] +_0818111C: + movs r3, #0x3c + ldrsh r1, [r4, r3] + movs r6, #0x34 + ldrsh r0, [r4, r6] + lsls r0, r0, #1 + muls r1, r0, r1 + ldrh r0, [r4, #0x24] + adds r1, r1, r0 + strh r1, [r4, #0x24] + ldrh r2, [r4, #0x3c] + ldrh r0, [r4, #0x36] + adds r3, r0, #0 + muls r3, r2, r3 + adds r0, r3, #0 + ldrh r6, [r4, #0x26] + adds r2, r0, r6 + strh r2, [r4, #0x26] + ldrh r0, [r4, #0x3a] + adds r0, #8 + strh r0, [r4, #0x3a] + adds r1, #0xf + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x1e + bls _08181164 + movs r1, #0x34 + ldrsh r0, [r4, r1] + lsls r0, r0, #4 + strh r0, [r4, #0x24] + movs r2, #0x34 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0x34] + b _08181180 + .align 2, 0 +_08181160: .4byte 0x0000FFFF +_08181164: + adds r0, r2, #0 + adds r0, #0xf + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bls _08181186 + movs r3, #0x36 + ldrsh r0, [r4, r3] + lsls r0, r0, #4 + strh r0, [r4, #0x26] + movs r6, #0x36 + ldrsh r0, [r4, r6] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] +_08181180: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_08181186: + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #5 + ble _081811DE + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + bgt _081811DE + movs r3, #0 + strh r3, [r4, #0x24] + strh r3, [r4, #0x26] + ldr r5, _081811D0 + movs r6, #0x2e + ldrsh r0, [r4, r6] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r2, [r1, #4] + movs r6, #4 + ldrsh r0, [r1, r6] + cmp r0, #1 + ble _081811D4 + subs r0, r2, #1 + strh r0, [r1, #4] + strh r3, [r4, #0x38] + strh r3, [r4, #0x3a] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xa + strh r1, [r0] + b _081811DE + .align 2, 0 +_081811D0: .4byte gUnknown_3001240 +_081811D4: + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081811FC + str r0, [r4, #0x1c] +_081811DE: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3a] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 +_081811F6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081811FC: .4byte sub_08184C34 + thumb_func_end sub_081810C0 + + thumb_func_start sub_08181200 +sub_08181200: @ 0x08181200 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r0, #0 + strh r0, [r4, #0x3a] + strh r0, [r4, #0x3c] + ldr r0, _08181218 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181218: .4byte sub_0818121C + thumb_func_end sub_08181200 + + thumb_func_start sub_0818121C +sub_0818121C: @ 0x0818121C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3a] + adds r0, #4 + strh r0, [r4, #0x3a] + movs r1, #0x3a + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #1 + movs r1, #0xff + ands r0, r1 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0xc0 + ble _08181266 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08181266 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + b _0818127E +_08181266: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0x40 + ble _0818128A + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0818128A + ldr r1, _081812BC + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 +_0818127E: + movs r3, #0 + bl sub_0817F580 + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] +_0818128A: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #0xff + ble _081812B0 + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081812C0 + str r0, [r4, #0x1c] +_081812B0: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081812BC: .4byte 0xFFFFFF00 +_081812C0: .4byte sub_08184C34 + thumb_func_end sub_0818121C + + thumb_func_start sub_081812C4 +sub_081812C4: @ 0x081812C4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _081812EE + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + strh r2, [r4, #0x3a] + strh r2, [r4, #0x38] + strh r2, [r4, #0x36] +_081812EE: + ldr r1, _08181308 + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r2, r0, #1 + adds r0, r1, #1 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0xff + bne _08181310 + ldr r0, _0818130C + str r0, [r4, #0x1c] + b _0818137A + .align 2, 0 +_08181308: .4byte gUnknown_85D34C4 +_0818130C: .4byte sub_08184C34 +_08181310: + movs r3, #0x36 + ldrsh r0, [r4, r3] + cmp r0, #1 + bne _08181346 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08181334 + ldrh r0, [r4, #0x3c] + ldr r3, _08181330 + movs r1, #0x10 + movs r2, #0x10 + bl sub_0806F410 + b _08181340 + .align 2, 0 +_08181330: .4byte 0x000003FF +_08181334: + ldrh r0, [r4, #0x3c] + ldr r3, _0818136C + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 +_08181340: + movs r0, #0 + strh r0, [r4, #0x36] + ldr r1, _08181370 +_08181346: + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r0, r0, #1 + adds r1, #1 + adds r0, r0, r1 + ldrb r1, [r0] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08181374 + movs r1, #0 + movs r0, #1 + strh r0, [r4, #0x36] + strh r1, [r4, #0x38] + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + b _0818137A + .align 2, 0 +_0818136C: .4byte 0x000003FF +_08181370: .4byte gUnknown_85D34C4 +_08181374: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_0818137A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081812C4 + + thumb_func_start sub_08181380 +sub_08181380: @ 0x08181380 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08181392 + adds r0, r6, #0 + bl sub_0817F51C +_08181392: + adds r0, r6, #0 + bl sub_0817F5B8 + ldr r4, _081813E4 + movs r3, #0x2e + ldrsh r1, [r6, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r4 + movs r0, #0x32 + ldrsh r1, [r6, r0] + movs r3, #8 + ldrsh r0, [r2, r3] + cmp r1, r0 + ble _081813F8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r3, #0 + strh r3, [r6, #0x24] + movs r0, #0x2e + ldrsh r1, [r6, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrh r2, [r1, #4] + movs r4, #4 + ldrsh r0, [r1, r4] + cmp r0, #1 + ble _081813E8 + subs r0, r2, #1 + strh r0, [r1, #4] + strh r3, [r6, #0x32] + b _08181434 + .align 2, 0 +_081813E4: .4byte gUnknown_3001240 +_081813E8: + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _081813F4 + str r0, [r6, #0x1c] + b _08181434 + .align 2, 0 +_081813F4: .4byte sub_08184C34 +_081813F8: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #8 + movs r3, #8 + ldrsh r1, [r2, r3] + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r6, #0x24] + movs r5, #0x80 + lsls r5, r5, #1 + ldr r1, _08181448 + adds r0, r4, #0 + bl sub_0806EFB8 + adds r3, r0, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r5, #0 + bl sub_0817F580 +_08181434: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + adds r0, r6, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08181448: .4byte 0x00000CCC + thumb_func_end sub_08181380 + + thumb_func_start sub_0818144C +sub_0818144C: @ 0x0818144C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08181478 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x32 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_08181380 + ldr r0, _0818147C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181478: .4byte gUnknown_3001240 +_0818147C: .4byte sub_08181380 + thumb_func_end sub_0818144C + + thumb_func_start sub_08181480 +sub_08181480: @ 0x08181480 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08181492 + adds r0, r6, #0 + bl sub_0817F51C +_08181492: + adds r0, r6, #0 + bl sub_0817F5B8 + ldr r4, _081814E4 + movs r3, #0x2e + ldrsh r1, [r6, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r4 + movs r0, #0x32 + ldrsh r1, [r6, r0] + movs r3, #8 + ldrsh r0, [r2, r3] + cmp r1, r0 + ble _081814F8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r3, #0 + strh r3, [r6, #0x24] + movs r0, #0x2e + ldrsh r1, [r6, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrh r2, [r1, #4] + movs r4, #4 + ldrsh r0, [r1, r4] + cmp r0, #1 + ble _081814E8 + subs r0, r2, #1 + strh r0, [r1, #4] + strh r3, [r6, #0x32] + b _08181536 + .align 2, 0 +_081814E4: .4byte gUnknown_3001240 +_081814E8: + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _081814F4 + str r0, [r6, #0x1c] + b _08181536 + .align 2, 0 +_081814F4: .4byte sub_08184C34 +_081814F8: + movs r1, #0x32 + ldrsh r0, [r6, r1] + lsls r0, r0, #8 + movs r3, #8 + ldrsh r1, [r2, r3] + bl __divsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0xa + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r6, #0x24] + movs r5, #0x80 + lsls r5, r5, #1 + ldr r1, _08181548 + adds r0, r4, #0 + bl sub_0806EFB8 + adds r3, r0, #0 + rsbs r3, r3, #0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r5, #0 + bl sub_0817F580 +_08181536: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + adds r0, r6, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08181548: .4byte 0x00000CCC + thumb_func_end sub_08181480 + + thumb_func_start sub_0818154C +sub_0818154C: @ 0x0818154C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08181578 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x32 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_08181480 + ldr r0, _0818157C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181578: .4byte gUnknown_3001240 +_0818157C: .4byte sub_08181480 + thumb_func_end sub_0818154C + + thumb_func_start sub_08181580 +sub_08181580: @ 0x08181580 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + adds r0, r4, #0 + adds r0, #0x28 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + movs r1, #0xa + bl __divsi3 + rsbs r0, r0, #0 + strh r0, [r4, #0x3a] + movs r0, #0x80 + strh r0, [r4, #0x3c] + ldr r0, _081815B0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081815B0: .4byte sub_081815B4 + thumb_func_end sub_08181580 + + thumb_func_start sub_081815B4 +sub_081815B4: @ 0x081815B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3c] + subs r0, #1 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + subs r3, #0x80 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x78 + bgt _0818160C + movs r0, #0x78 + strh r0, [r4, #0x3c] + movs r0, #0 + strh r0, [r4, #0x34] + ldr r0, _08181618 + str r0, [r4, #0x1c] +_0818160C: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181618: .4byte sub_0818161C + thumb_func_end sub_081815B4 + + thumb_func_start sub_0818161C +sub_0818161C: @ 0x0818161C + push {lr} + adds r1, r0, #0 + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #0x14 + bne _08181630 + ldr r0, _0818163C + str r0, [r1, #0x1c] + movs r0, #0 + strh r0, [r1, #0x34] +_08181630: + ldrh r0, [r1, #0x34] + adds r0, #1 + strh r0, [r1, #0x34] + pop {r0} + bx r0 + .align 2, 0 +_0818163C: .4byte sub_08181640 + thumb_func_end sub_0818161C + + thumb_func_start sub_08181640 +sub_08181640: @ 0x08181640 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3c] + adds r0, #2 + movs r6, #0 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFD4 + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r2, #0x3a + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r5, #0x80 + lsls r5, r5, #1 + ldrh r3, [r4, #0x3c] + subs r3, #0x80 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r5, #0 + bl sub_0817F580 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _081816AC + strh r6, [r4, #0x24] + strh r6, [r4, #0x26] + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_0817F580 + strh r6, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081816B8 + str r0, [r4, #0x1c] +_081816AC: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081816B8: .4byte sub_0817FC34 + thumb_func_end sub_08181640 + + thumb_func_start sub_081816BC +sub_081816BC: @ 0x081816BC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _081816DC + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrh r0, [r1] + adds r6, r0, #0 + cmp r6, #0 + beq _081816E0 + subs r0, #1 + strh r0, [r1] + b _081817FC + .align 2, 0 +_081816DC: .4byte gUnknown_3001240 +_081816E0: + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _081816F6 + adds r0, r5, #0 + bl sub_0817F51C + strh r6, [r5, #0x36] + strh r6, [r5, #0x38] + movs r0, #1 + strh r0, [r5, #0x32] +_081816F6: + movs r3, #0x38 + ldrsh r0, [r5, r3] + cmp r0, #0 + bne _0818174E + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + bl sub_0806EFB8 + strh r0, [r5, #0x3c] + movs r3, #0x36 + ldrsh r0, [r5, r3] + movs r1, #0x10 + bl sub_0806EFB8 + strh r0, [r5, #0x26] + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r1, #0x20 + bl sub_0806EFB8 + adds r1, r0, #0 + strh r1, [r5, #0x3a] + subs r1, r4, r1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r5, #0x3c] + adds r2, r2, r4 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r5, #0 + movs r3, #0 + bl sub_0817F580 + movs r3, #0x36 + ldrsh r0, [r5, r3] + cmp r0, #0x80 + bne _081817E6 + strh r6, [r5, #0x36] + movs r0, #1 + strh r0, [r5, #0x38] + b _081817E6 +_0818174E: + cmp r0, #1 + bne _081817E6 + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r1, #0x20 + bl sub_0806EFB8 + strh r0, [r5, #0x3c] + movs r3, #0x36 + ldrsh r0, [r5, r3] + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r5, #0x26] + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r1, #0x80 + bl sub_0806EFB8 + adds r1, r0, #0 + strh r1, [r5, #0x3a] + movs r3, #0x80 + lsls r3, r3, #1 + adds r2, r3, #0 + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r0, [r5, #0x3c] + subs r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r5, #0 + movs r3, #0 + bl sub_0817F580 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0x80 + bne _081817E6 + movs r3, #0x2e + ldrsh r0, [r5, r3] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrh r2, [r1, #4] + movs r3, #4 + ldrsh r0, [r1, r3] + cmp r0, #1 + ble _081817CE + subs r0, r2, #1 + strh r0, [r1, #4] + movs r0, #0x2e + ldrsh r1, [r5, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xa + strh r1, [r0] + strh r6, [r5, #0x36] + strh r6, [r5, #0x38] + b _081817E6 +_081817CE: + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r5, #0 + bl sub_0817F628 + ldr r0, _08181804 + str r0, [r5, #0x1c] +_081817E6: + ldr r2, _08181808 + movs r3, #0x2e + ldrsh r1, [r5, r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #6] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] +_081817FC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08181804: .4byte sub_08184C34 +_08181808: .4byte gUnknown_3001240 + thumb_func_end sub_081816BC + + thumb_func_start sub_0818180C +sub_0818180C: @ 0x0818180C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08181838 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #4 + strh r0, [r1, #6] + adds r0, r4, #0 + bl sub_081816BC + ldr r0, _0818183C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181838: .4byte gUnknown_3001240 +_0818183C: .4byte sub_081816BC + thumb_func_end sub_0818180C + + thumb_func_start sub_08181840 +sub_08181840: @ 0x08181840 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r4, [r5, r0] + adds r0, r5, #0 + bl sub_0817F5B8 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r4, r0 + ble _08181864 + ldr r0, _08181860 + str r0, [r5, #0x1c] + movs r0, #0 + strh r0, [r5, #0x24] + b _0818190E + .align 2, 0 +_08181860: .4byte sub_08184C34 +_08181864: + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _0818186E + adds r0, #0x7f +_0818186E: + asrs r0, r0, #7 + cmp r0, #1 + beq _081818A4 + cmp r0, #1 + bgt _0818187E + cmp r0, #0 + beq _08181888 + b _081818F4 +_0818187E: + cmp r0, #2 + beq _081818BE + cmp r0, #3 + beq _081818D6 + b _081818F4 +_08181888: + adds r0, r4, #0 + cmp r4, #0 + bge _08181890 + adds r0, #0x7f +_08181890: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r4, r0 + lsls r0, r0, #3 + rsbs r0, r0, #0 + cmp r0, #0 + bge _081818A0 + adds r0, #0x7f +_081818A0: + asrs r0, r0, #7 + b _081818F2 +_081818A4: + adds r0, r4, #0 + cmp r4, #0 + bge _081818AC + adds r0, #0x7f +_081818AC: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r4, r0 + cmp r0, #0 + bge _081818B8 + adds r0, #0xf +_081818B8: + asrs r0, r0, #4 + subs r0, #8 + b _081818F2 +_081818BE: + adds r0, r4, #0 + cmp r4, #0 + bge _081818C6 + adds r0, #0x7f +_081818C6: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r4, r0 + cmp r0, #0 + bge _081818D2 + adds r0, #0xf +_081818D2: + asrs r0, r0, #4 + b _081818F2 +_081818D6: + adds r0, r4, #0 + cmp r4, #0 + bge _081818DE + adds r0, #0x7f +_081818DE: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r4, r0 + lsls r0, r0, #3 + rsbs r0, r0, #0 + cmp r0, #0 + bge _081818EE + adds r0, #0x7f +_081818EE: + asrs r0, r0, #7 + adds r0, #8 +_081818F2: + strh r0, [r5, #0x24] +_081818F4: + adds r0, r4, #0 + cmp r4, #0 + bge _081818FC + adds r0, #0x7f +_081818FC: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r4, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 +_0818190E: + strh r0, [r5, #0x26] + ldrh r0, [r5, #0x32] + adds r0, #0xc + strh r0, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08181840 + + thumb_func_start sub_08181924 +sub_08181924: @ 0x08181924 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x2e] + ldr r2, _0818195C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, _08181960 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_0817F51C + strh r5, [r4, #0x34] + adds r0, r4, #0 + bl sub_08181968 + ldr r0, _08181964 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818195C: .4byte gUnknown_3001240 +_08181960: .4byte 0x0000FFFF +_08181964: .4byte sub_08181968 + thumb_func_end sub_08181924 + + thumb_func_start sub_08181968 +sub_08181968: @ 0x08181968 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _08181988 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + ldrh r0, [r1] + adds r5, r0, #0 + cmp r5, #0 + beq _0818198C + subs r0, #1 + strh r0, [r1] + b _081819F0 + .align 2, 0 +_08181988: .4byte gUnknown_3001240 +_0818198C: + adds r0, r4, #0 + bl sub_0817F5B8 + movs r1, #0x32 + ldrsh r2, [r4, r1] + adds r0, r2, #0 + cmp r0, #0x80 + ble _081819A8 + strh r5, [r4, #0x32] + ldr r0, _081819A4 + str r0, [r4, #0x1c] + b _081819EA + .align 2, 0 +_081819A4: .4byte sub_081819F8 +_081819A8: + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + movs r3, #8 + ldrsh r0, [r1, r3] + lsls r3, r0, #3 + adds r0, r2, #0 + cmp r2, #0 + bge _081819C2 + adds r0, #0x7f +_081819C2: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r1, r2, r0 + adds r0, r3, #0 + muls r0, r1, r0 + cmp r0, #0 + bge _081819D2 + adds r0, #0x7f +_081819D2: + asrs r0, r0, #7 + strh r0, [r4, #0x24] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] +_081819EA: + adds r0, r4, #0 + bl sub_0817F5B8 +_081819F0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08181968 + + thumb_func_start sub_081819F8 +sub_081819F8: @ 0x081819F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x30 + ble _08181A28 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r0, #0 + strh r0, [r4, #0x26] + strh r0, [r4, #0x32] + ldr r0, _08181A24 + str r0, [r4, #0x1c] + b _08181AC6 + .align 2, 0 +_08181A24: .4byte sub_08181AD8 +_08181A28: + movs r2, #0x36 + ldrsh r0, [r4, r2] + movs r1, #0x40 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r6, r1, #0 + adds r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r0, [r4, #0x32] + subs r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf + bhi _08181A66 + ldrh r0, [r4, #0x34] + adds r0, #8 + strh r0, [r4, #0x34] + ldr r2, _08181AD4 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r4, #0x24] + ldrh r0, [r0, #8] + subs r1, r1, r0 + strh r1, [r4, #0x24] +_08181A66: + movs r5, #0 + lsls r1, r3, #0x10 + asrs r2, r1, #0x10 + lsls r0, r6, #0x10 + asrs r0, r0, #0x10 + adds r6, r1, #0 + cmp r2, r0 + ble _08181A82 + subs r0, r0, r2 + cmp r0, #0 + bge _08181A7E + adds r0, #7 +_08181A7E: + lsls r0, r0, #0xd + lsrs r5, r0, #0x10 +_08181A82: + movs r1, #0x34 + ldrsh r0, [r4, r1] + movs r1, #0x14 + bl sub_0806EFB8 + rsbs r0, r0, #0 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + subs r0, r0, r1 + strh r0, [r4, #0x26] + movs r2, #0x36 + ldrsh r0, [r4, r2] + movs r1, #0x20 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + asrs r2, r6, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x36] + adds r0, #8 + movs r1, #0xff + ands r0, r1 + strh r0, [r4, #0x36] +_08181AC6: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08181AD4: .4byte gUnknown_3001240 + thumb_func_end sub_081819F8 + + thumb_func_start sub_08181AD8 +sub_08181AD8: @ 0x08181AD8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r3, [r4, r0] + cmp r3, #0x80 + ble _08181B3C + ldr r3, _08181B20 + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r2, [r1, #4] + movs r5, #4 + ldrsh r0, [r1, r5] + cmp r0, #1 + ble _08181B28 + subs r0, r2, #1 + movs r2, #0 + strh r0, [r1, #4] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0xa + strh r1, [r0] + strh r2, [r4, #0x34] + strh r2, [r4, #0x32] + strh r2, [r4, #0x36] + ldr r0, _08181B24 + b _08181B30 + .align 2, 0 +_08181B20: .4byte gUnknown_3001240 +_08181B24: .4byte sub_08181968 +_08181B28: + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181B38 +_08181B30: + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + b _08181B7C + .align 2, 0 +_08181B38: .4byte sub_08184C34 +_08181B3C: + ldr r2, _08181B90 + movs r5, #0x2e + ldrsh r1, [r4, r5] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #8 + ldrsh r5, [r0, r1] + lsls r1, r5, #3 + adds r0, r3, #0 + cmp r3, #0 + bge _08181B58 + adds r0, #0x7f +_08181B58: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r2, r3, r0 + adds r0, r1, #0 + muls r0, r2, r0 + cmp r0, #0 + bge _08181B68 + adds r0, #0x7f +_08181B68: + asrs r0, r0, #7 + lsls r1, r5, #3 + subs r0, r0, r1 + strh r0, [r4, #0x24] + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 +_08181B7C: + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08181B90: .4byte gUnknown_3001240 + thumb_func_end sub_08181AD8 + + thumb_func_start sub_08181B94 +sub_08181B94: @ 0x08181B94 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08181BAC + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08181BAC: + adds r0, r4, #0 + bl sub_0817F5B8 + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r0, #0xfe + ble _08181C0C + movs r5, #0 + strh r5, [r4, #0x24] + strh r5, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldr r2, _08181BF0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + ldrh r2, [r1, #4] + movs r3, #4 + ldrsh r0, [r1, r3] + cmp r0, #1 + ble _08181BF4 + subs r0, r2, #1 + strh r0, [r1, #4] + strh r5, [r4, #0x32] + strh r5, [r4, #0x3c] + b _08181BFE + .align 2, 0 +_08181BF0: .4byte gUnknown_3001240 +_08181BF4: + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181C08 + str r0, [r4, #0x1c] +_08181BFE: + adds r0, r4, #0 + bl sub_0817F5B8 + b _08181C52 + .align 2, 0 +_08181C08: .4byte sub_08184C34 +_08181C0C: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r3, #0x3c + ldrsh r0, [r4, r3] + movs r1, #0x20 + bl sub_0806EFB8 + adds r3, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + ldr r2, _08181C58 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #6] + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817F5B8 +_08181C52: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08181C58: .4byte gUnknown_3001240 + thumb_func_end sub_08181B94 + + thumb_func_start sub_08181C5C +sub_08181C5C: @ 0x08181C5C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08181C88 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #4 + strh r0, [r1, #6] + adds r0, r4, #0 + bl sub_08181B94 + ldr r0, _08181C8C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181C88: .4byte gUnknown_3001240 +_08181C8C: .4byte sub_08181B94 + thumb_func_end sub_08181C5C + + thumb_func_start sub_08181C90 +sub_08181C90: @ 0x08181C90 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08181CA8 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08181CA8: + adds r0, r4, #0 + bl sub_0817F5B8 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0xfe + ble _08181CE0 + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181CDC + str r0, [r4, #0x1c] + adds r0, r4, #0 + bl sub_0817F5B8 + b _08181D36 + .align 2, 0 +_08181CDC: .4byte sub_08184C34 +_08181CE0: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08181CFA + adds r0, #0x7f +_08181CFA: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x20 + bl sub_0806EFB8 + adds r3, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817F5B8 +_08181D36: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08181C90 + + thumb_func_start sub_08181D3C +sub_08181D3C: @ 0x08181D3C + push {r4, r5, lr} + adds r3, r0, #0 + movs r1, #0x32 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08181D4A + strh r0, [r3, #0x3c] +_08181D4A: + ldrh r4, [r3, #0x32] + movs r5, #0x32 + ldrsh r1, [r3, r5] + ldrh r2, [r3, #0x3c] + movs r5, #0x3c + ldrsh r0, [r3, r5] + cmp r1, r0 + bne _08181D74 + movs r0, #0 + strh r0, [r3, #0x3c] + adds r0, r4, #1 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + adds r2, r1, #0 + b _08181D84 +_08181D74: + adds r0, r2, #1 + strh r0, [r3, #0x3c] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08181D84: + movs r1, #0x32 + ldrsh r0, [r3, r1] + cmp r0, #0xa + ble _08181D9A + ldrb r0, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + ldr r0, _08181DA0 + str r0, [r3, #0x1c] +_08181D9A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08181DA0: .4byte sub_08184C34 + thumb_func_end sub_08181D3C + + thumb_func_start sub_08181DA4 +sub_08181DA4: @ 0x08181DA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r0, #0 + strh r0, [r4, #0x3c] + ldr r0, _08181DBC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181DBC: .4byte sub_08181DC0 + thumb_func_end sub_08181DA4 + + thumb_func_start sub_08181DC0 +sub_08181DC0: @ 0x08181DC0 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x1f + ble _08181DE0 + movs r0, #0 + movs r1, #0x20 + strh r1, [r4, #0x3c] + strh r0, [r4, #0x32] + ldr r0, _08181DDC + str r0, [r4, #0x1c] + b _08181DE4 + .align 2, 0 +_08181DDC: .4byte sub_08181DFC +_08181DE0: + adds r0, r1, #4 + strh r0, [r4, #0x3c] +_08181DE4: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08181DC0 + + thumb_func_start sub_08181DFC +sub_08181DFC: @ 0x08181DFC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _08181E20 + ldr r0, _08181E1C + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3a] + b _08181E5A + .align 2, 0 +_08181E1C: .4byte sub_08181E6C +_08181E20: + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsls r0, r0, #4 + rsbs r0, r0, #0 + cmp r0, #0 + bge _08181E30 + ldr r1, _08181E68 + adds r0, r0, r1 +_08181E30: + asrs r0, r0, #9 + strh r0, [r4, #0x24] + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08181E40 + adds r0, #0x7f +_08181E40: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] +_08181E5A: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181E68: .4byte 0x000001FF + thumb_func_end sub_08181DFC + + thumb_func_start sub_08181E6C +sub_08181E6C: @ 0x08181E6C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3c] + subs r0, #2 + movs r1, #0 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08181E98 + strh r1, [r4, #0x3c] + strh r1, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181E94 + str r0, [r4, #0x1c] + b _08181EAA + .align 2, 0 +_08181E94: .4byte sub_08184C34 +_08181E98: + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsls r0, r0, #0x11 + asrs r0, r0, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] +_08181EAA: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08181E6C + + thumb_func_start sub_08181EC8 +sub_08181EC8: @ 0x08181EC8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08181EE2 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_08181EE2: + adds r0, r4, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0xff + ble _08181F0C + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08181F08 + str r0, [r4, #0x1c] + b _08181F52 + .align 2, 0 +_08181F08: .4byte sub_08184C34 +_08181F0C: + adds r0, r1, #0 + adds r0, #0x10 + strh r0, [r4, #0x3c] + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08181F1E + adds r0, #0x7f +_08181F1E: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r1, [r4, r2] + adds r0, r1, #0 + cmp r1, #0 + bge _08181F3E + adds r0, #0x7f +_08181F3E: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08181F52: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08181F5E + adds r0, #0x7f +_08181F5E: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + adds r3, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08181EC8 + + thumb_func_start sub_08181F8C +sub_08181F8C: @ 0x08181F8C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r0, #0 + strh r0, [r4, #0x3c] + strh r0, [r4, #0x36] + ldr r0, _08181FA4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08181FA4: .4byte sub_08181FA8 + thumb_func_end sub_08181F8C + + thumb_func_start sub_08181FA8 +sub_08181FA8: @ 0x08181FA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x18 + ble _08181FD8 + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + ble _08181FF6 + movs r0, #0 + strh r0, [r4, #0x36] + ldr r0, _08181FD4 + str r0, [r4, #0x1c] + b _08181FF6 + .align 2, 0 +_08181FD4: .4byte sub_08182018 +_08181FD8: + adds r0, r1, #2 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08181FF6: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + rsbs r3, r3, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08181FA8 + + thumb_func_start sub_08182018 +sub_08182018: @ 0x08182018 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x20 + ble _08182038 + movs r0, #1 + strh r0, [r4, #0x3a] + ldr r0, _08182034 + str r0, [r4, #0x1c] + b _08182056 + .align 2, 0 +_08182034: .4byte sub_08182078 +_08182038: + adds r0, r1, #2 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08182056: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + rsbs r3, r3, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182018 + + thumb_func_start sub_08182078 +sub_08182078: @ 0x08182078 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #9 + ble _0818209C + movs r0, #0x20 + strh r0, [r4, #0x3c] + ldr r0, _081820F0 + str r0, [r4, #0x1c] +_0818209C: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3c] + subs r0, #0x1d + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bls _081820D0 + movs r1, #0x3a + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #0x3a] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_081820D0: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + rsbs r3, r3, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081820F0: .4byte sub_081820F4 + thumb_func_end sub_08182078 + + thumb_func_start sub_081820F4 +sub_081820F4: @ 0x081820F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0 + bgt _0818211C + movs r0, #0 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08182118 + str r0, [r4, #0x1c] + b _0818213A + .align 2, 0 +_08182118: .4byte sub_08184C34 +_0818211C: + subs r0, r1, #2 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_0818213A: + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3c] + rsbs r3, r3, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081820F4 + + thumb_func_start sub_0818215C +sub_0818215C: @ 0x0818215C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x28 + ble _0818217C + ldr r0, _08182178 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + b _08182208 + .align 2, 0 +_08182178: .4byte sub_08184C34 +_0818217C: + movs r0, #1 + ands r0, r1 + movs r5, #0xff + cmp r0, #0 + bne _08182188 + movs r5, #1 +_08182188: + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r2, #0 + cmp r2, #0 + bge _08182194 + adds r0, r2, #3 +_08182194: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + cmp r1, #0 + bne _081821D8 + lsls r0, r2, #7 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _081821B8 + adds r0, #0xff +_081821B8: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 + strh r0, [r4, #0x24] + rsbs r0, r0, #0 + b _08182206 +_081821D8: + lsls r0, r2, #7 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _081821E8 + adds r0, #0xff +_081821E8: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + muls r0, r1, r0 + strh r0, [r4, #0x24] +_08182206: + strh r0, [r4, #0x26] +_08182208: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818215C + + thumb_func_start sub_0818221C +sub_0818221C: @ 0x0818221C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0818223E + adds r0, r4, #0 + bl sub_0817F51C + strh r5, [r4, #0x38] + strh r5, [r4, #0x3a] + strh r5, [r4, #0x3c] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_0818223E: + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0 + ble _08182290 + subs r0, r1, #1 + strh r0, [r4, #0x3a] + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #3 + beq _08182340 + movs r2, #0x3a + ldrsh r0, [r4, r2] + lsls r0, r0, #3 + movs r1, #0x14 + bl __divsi3 + adds r1, r0, #0 + ldrh r0, [r4, #0x3c] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x40 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r1, #0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + subs r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + b _08182340 +_08182290: + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #3 + bne _081822D0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x3f + ble _081822BC + movs r0, #0x40 + strh r0, [r4, #0x3c] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081822CC + str r0, [r4, #0x1c] +_081822BC: + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #0x40 + bl sub_0806EFD4 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + b _08182320 + .align 2, 0 +_081822CC: .4byte sub_08184C34 +_081822D0: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x40 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x3f + ble _081822F4 + movs r0, #0 + movs r1, #3 + strh r1, [r4, #0x38] + movs r1, #0xa + strh r1, [r4, #0x3a] + strh r0, [r4, #0x3c] + b _08182320 +_081822F4: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x30 + ble _08182308 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08182308 + movs r0, #2 + b _0818231A +_08182308: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _08182320 + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08182320 + movs r0, #1 +_0818231A: + strh r0, [r4, #0x38] + movs r0, #0x14 + strh r0, [r4, #0x3a] +_08182320: + ldrh r0, [r4, #0x3c] + adds r0, #2 + strh r0, [r4, #0x3c] + movs r0, #0x80 + lsls r0, r0, #1 + adds r2, r0, #0 + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + subs r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_08182340: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0818221C + + thumb_func_start sub_0818234C +sub_0818234C: @ 0x0818234C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08182366 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_08182366: + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _08182394 + movs r0, #0 + strh r0, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08182390 + str r0, [r4, #0x1c] + b _081823EC + .align 2, 0 +_08182390: .4byte sub_08184C34 +_08182394: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _081823A0 + adds r0, #0xff +_081823A0: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _081823C4 + adds r0, #0x7f +_081823C4: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x60 + bl sub_0806EFB8 + adds r2, r0, #0 + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 +_081823EC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818234C + + thumb_func_start sub_081823F4 +sub_081823F4: @ 0x081823F4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0818240E + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_0818240E: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r5, #0x80 + lsls r5, r5, #1 + cmp r0, r5 + ble _0818243C + movs r0, #0 + strh r0, [r4, #0x26] + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08182438 + str r0, [r4, #0x1c] + b _08182480 + .align 2, 0 +_08182438: .4byte sub_08184C34 +_0818243C: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x10 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x3c] + adds r0, #4 + strh r0, [r4, #0x3c] + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _0818245A + adds r0, #0x3f +_0818245A: + asrs r0, r0, #6 + lsls r0, r0, #6 + subs r0, r1, r0 + lsls r0, r0, #0x11 + asrs r0, r0, #0x10 + movs r1, #0x80 + bl sub_0806EFB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r5 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + movs r3, #0 + bl sub_0817F580 +_08182480: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081823F4 + + thumb_func_start sub_08182488 +sub_08182488: @ 0x08182488 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + ldr r0, _081824A0 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081824A0: .4byte sub_081824A4 + thumb_func_end sub_08182488 + + thumb_func_start sub_081824A4 +sub_081824A4: @ 0x081824A4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + adds r0, #8 + movs r1, #0 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _081824C8 + strh r1, [r4, #0x3c] + strh r1, [r4, #0x3a] + ldr r0, _081824C4 + str r0, [r4, #0x1c] + movs r0, #0x40 + b _081824CC + .align 2, 0 +_081824C4: .4byte sub_081824F4 +_081824C8: + movs r1, #0x3c + ldrsh r0, [r4, r1] +_081824CC: + movs r1, #0x80 + bl sub_0806EFB8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r0, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081824A4 + + thumb_func_start sub_081824F4 +sub_081824F4: @ 0x081824F4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + adds r0, #4 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5f + ble _0818251E + movs r0, #0 + movs r1, #0x80 + bl sub_0806EFD4 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0 + strh r0, [r4, #0x3c] + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + b _08182574 +_0818251E: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFB8 + movs r2, #0x3a + ldrsh r1, [r4, r2] + lsls r1, r1, #2 + rsbs r1, r1, #0 + subs r1, r1, r0 + strh r1, [r4, #0x26] + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0x3f + ble _08182550 + ldr r5, _0818254C + adds r0, r1, #0 + subs r0, #0x40 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08182554 + .align 2, 0 +_0818254C: .4byte 0x0000FFFF +_08182550: + movs r5, #1 + movs r0, #0 +_08182554: + lsls r0, r0, #0x10 + asrs r0, r0, #0xf + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + bl sub_0806EFD4 + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r2, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_08182574: + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #3 + bne _0818259A + movs r0, #0 + strh r0, [r4, #0x3c] + ldr r0, _081825A0 + str r0, [r4, #0x1c] +_0818259A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081825A0: .4byte sub_081825A4 + thumb_func_end sub_081824F4 + + thumb_func_start sub_081825A4 +sub_081825A4: @ 0x081825A4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0x80 + bl sub_0806EFD4 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #0xc + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x3f + ble _081825EE + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _0818260C + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_081825EE: + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r5, #0x10 + asrs r2, r2, #0x10 + adds r2, r2, r1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818260C: .4byte sub_08184C34 + thumb_func_end sub_081825A4 + + thumb_func_start sub_08182610 +sub_08182610: @ 0x08182610 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _08182644 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08182640 + str r0, [r4, #0x1c] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + b _081826A0 + .align 2, 0 +_08182640: .4byte sub_08184C34 +_08182644: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08182650 + adds r0, #0xff +_08182650: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r2, #0x3c + ldrsh r1, [r4, r2] + adds r0, r1, #0 + cmp r1, #0 + bge _08182678 + adds r0, #0x7f +_08182678: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x60 + bl sub_0806EFB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + asrs r1, r1, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 +_081826A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182610 + + thumb_func_start sub_081826A8 +sub_081826A8: @ 0x081826A8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _081826CE + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r1, #8 + strh r1, [r4, #0x3a] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x38] + strh r1, [r4, #0x36] +_081826CE: + adds r0, r4, #0 + bl sub_08182610 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081826A8 + + thumb_func_start sub_081826DC +sub_081826DC: @ 0x081826DC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _08182710 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _0818270C + str r0, [r4, #0x1c] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + b _0818276C + .align 2, 0 +_0818270C: .4byte sub_08184C34 +_08182710: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _0818271C + adds r0, #0xff +_0818271C: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3a] + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r2, #0x3c + ldrsh r1, [r4, r2] + adds r0, r1, #0 + cmp r1, #0 + bge _08182744 + adds r0, #0x3f +_08182744: + asrs r0, r0, #6 + lsls r0, r0, #6 + subs r0, r1, r0 + lsls r0, r0, #0x11 + asrs r0, r0, #0x10 + movs r1, #0x80 + bl sub_0806EFB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + asrs r1, r1, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F580 +_0818276C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081826DC + + thumb_func_start sub_08182774 +sub_08182774: @ 0x08182774 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0818279A + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #4 + strh r0, [r4, #0x3a] + adds r0, #0xfc + strh r0, [r4, #0x38] + movs r0, #0x10 + strh r0, [r4, #0x36] +_0818279A: + adds r0, r4, #0 + bl sub_081826DC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182774 + + thumb_func_start sub_081827A8 +sub_081827A8: @ 0x081827A8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _081827C6 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_081827C6: + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _081827F4 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldr r0, _081827F0 + str r0, [r4, #0x1c] + b _0818284A + .align 2, 0 +_081827F0: .4byte sub_08184C34 +_081827F4: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08182800 + adds r0, #0xff +_08182800: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08182824 + adds r0, #0x7f +_08182824: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x60 + bl sub_0806EFB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_0818284A: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081827A8 + + thumb_func_start sub_08182858 +sub_08182858: @ 0x08182858 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08182876 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_08182876: + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _081828A4 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldr r0, _081828A0 + str r0, [r4, #0x1c] + b _0818290A + .align 2, 0 +_081828A0: .4byte sub_08184C34 +_081828A4: + movs r1, #0x3c + ldrsh r0, [r4, r1] + adds r1, r0, #0 + cmp r0, #0 + bge _081828B0 + adds r1, #0xff +_081828B0: + asrs r1, r1, #8 + lsls r1, r1, #8 + subs r1, r0, r1 + lsls r1, r1, #0x10 + asrs r0, r1, #0x10 + lsrs r1, r1, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r1, #0x10 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + adds r1, r0, #0 + cmp r0, #0 + bge _081828DC + adds r1, #0xff +_081828DC: + asrs r1, r1, #8 + lsls r1, r1, #8 + subs r1, r0, r1 + lsls r1, r1, #0x10 + asrs r0, r1, #0x10 + lsrs r1, r1, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r1, #0x40 + bl sub_0806EFB8 + adds r2, r0, #0 + rsbs r2, r2, #0 + lsls r2, r2, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_0818290A: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182858 + + thumb_func_start sub_08182918 +sub_08182918: @ 0x08182918 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08182936 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] +_08182936: + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _08182964 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldr r0, _08182960 + str r0, [r4, #0x1c] + b _081829C2 + .align 2, 0 +_08182960: .4byte sub_08184C34 +_08182964: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08182970 + adds r0, #0xff +_08182970: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3c] + adds r0, #8 + strh r0, [r4, #0x3c] + movs r1, #0x3c + ldrsh r0, [r4, r1] + adds r1, r0, #0 + cmp r0, #0 + bge _08182996 + adds r1, #0xff +_08182996: + asrs r1, r1, #8 + lsls r1, r1, #8 + subs r1, r0, r1 + lsls r1, r1, #0x10 + asrs r0, r1, #0x10 + lsrs r1, r1, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r1, #0x60 + bl sub_0806EFB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_081829C2: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182918 + + thumb_func_start sub_081829D0 +sub_081829D0: @ 0x081829D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + ble _081829F4 + ldr r0, _081829F0 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3a] + b _08182AB4 + .align 2, 0 +_081829F0: .4byte sub_08184C34 +_081829F4: + movs r1, #0x32 + ldrsh r2, [r4, r1] + adds r0, r2, #0 + cmp r2, #0 + bge _08182A02 + ldr r1, _08182A28 + adds r0, r2, r1 +_08182A02: + asrs r3, r0, #9 + adds r1, r3, #0 + adds r0, r1, #0 + cmp r1, #0 + bge _08182A0E + adds r0, r1, #3 +_08182A0E: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _08182A50 + cmp r0, #1 + bgt _08182A2C + cmp r0, #0 + beq _08182A36 + b _08182A8E + .align 2, 0 +_08182A28: .4byte 0x000001FF +_08182A2C: + cmp r0, #2 + beq _08182A64 + cmp r0, #3 + beq _08182A76 + b _08182A8E +_08182A36: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _08182A48 + ldr r1, _08182A4C + adds r0, r0, r1 +_08182A48: + asrs r0, r0, #9 + b _08182A8C + .align 2, 0 +_08182A4C: .4byte 0x000001FF +_08182A50: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08182A5E + adds r0, #0x1f +_08182A5E: + asrs r0, r0, #5 + subs r0, #0x10 + b _08182A8C +_08182A64: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08182A72 + adds r0, #0x1f +_08182A72: + asrs r0, r0, #5 + b _08182A8C +_08182A76: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _08182A88 + ldr r1, _08182AC0 + adds r0, r0, r1 +_08182A88: + asrs r0, r0, #9 + adds r0, #0x10 +_08182A8C: + strh r0, [r4, #0x24] +_08182A8E: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08182A9A + adds r0, #0x7f +_08182A9A: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0x18 + strh r0, [r4, #0x32] +_08182AB4: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182AC0: .4byte 0x000001FF + thumb_func_end sub_081829D0 + + thumb_func_start sub_08182AC4 +sub_08182AC4: @ 0x08182AC4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08182AE0 + strh r0, [r4, #0x3a] + movs r0, #0x40 + strh r0, [r4, #0x3c] + adds r0, r1, #1 + strh r0, [r4, #0x32] +_08182AE0: + ldrh r0, [r4, #0x3c] + adds r1, r0, #0 + adds r1, #8 + movs r3, #0 + strh r1, [r4, #0x3c] + ldrh r2, [r4, #0x3a] + movs r5, #0x3a + ldrsh r0, [r4, r5] + cmp r0, #4 + bne _08182AFE + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + ble _08182B0C + b _08182B06 +_08182AFE: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x7f + ble _08182B0C +_08182B06: + strh r3, [r4, #0x3c] + adds r0, r2, #1 + strh r0, [r4, #0x3a] +_08182B0C: + movs r1, #0x3a + ldrsh r0, [r4, r1] + cmp r0, #4 + bhi _08182BB4 + lsls r0, r0, #2 + ldr r1, _08182B20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08182B20: .4byte _08182B24 +_08182B24: @ jump table + .4byte _08182B98 @ case 0 + .4byte _08182B38 @ case 1 + .4byte _08182B56 @ case 2 + .4byte _08182B78 @ case 3 + .4byte _08182B98 @ case 4 +_08182B38: + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #8 + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r5, #0x3c + ldrsh r0, [r4, r5] + movs r1, #8 + bl sub_0806EFB8 + subs r0, #8 + strh r0, [r4, #0x26] + b _08182BBE +_08182B56: + ldrh r0, [r4, #0x3c] + adds r0, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + adds r0, #8 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFD4 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + b _08182BBE +_08182B78: + movs r2, #0x3c + ldrsh r0, [r4, r2] + movs r1, #8 + bl sub_0806EFD4 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x3c] + adds r0, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + adds r0, #8 + strh r0, [r4, #0x26] + b _08182BBE +_08182B98: + movs r5, #0x3c + ldrsh r0, [r4, r5] + movs r1, #8 + bl sub_0806EFB8 + subs r0, #8 + strh r0, [r4, #0x24] + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r1, #8 + bl sub_0806EFD4 + strh r0, [r4, #0x26] + b _08182BBE +_08182BB4: + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + ldr r0, _08182BCC + str r0, [r4, #0x1c] +_08182BBE: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08182BCC: .4byte sub_08184C34 + thumb_func_end sub_08182AC4 + + thumb_func_start sub_08182BD0 +sub_08182BD0: @ 0x08182BD0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x20 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081805C0 + ldr r0, _08182BE8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182BE8: .4byte sub_081805C0 + thumb_func_end sub_08182BD0 + + thumb_func_start sub_08182BEC +sub_08182BEC: @ 0x08182BEC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F7A8 + ldr r0, _08182C04 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182C04: .4byte sub_0817F7A8 + thumb_func_end sub_08182BEC + + thumb_func_start sub_08182C08 +sub_08182C08: @ 0x08182C08 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x50 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F824 + ldr r0, _08182C20 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182C20: .4byte sub_0817F824 + thumb_func_end sub_08182C08 + + thumb_func_start sub_08182C24 +sub_08182C24: @ 0x08182C24 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182C58 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r1, #6] + ldrh r0, [r4, #0x3a] + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_081807AC + ldr r0, _08182C5C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182C58: .4byte gUnknown_3001240 +_08182C5C: .4byte sub_081807AC + thumb_func_end sub_08182C24 + + thumb_func_start sub_08182C60 +sub_08182C60: @ 0x08182C60 + push {lr} + movs r1, #1 + strh r1, [r0, #0x3a] + bl sub_081808FC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182C60 + + thumb_func_start sub_08182C70 +sub_08182C70: @ 0x08182C70 + push {lr} + movs r1, #1 + strh r1, [r0, #0x3a] + bl sub_08182C24 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08182C70 + + thumb_func_start sub_08182C80 +sub_08182C80: @ 0x08182C80 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08182C8E + strh r0, [r4, #0x2e] +_08182C8E: + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bgt _08182CA2 + adds r0, r4, #0 + bl sub_0817FACC + movs r0, #1 + b _08182CA4 +_08182CA2: + subs r0, r1, #1 +_08182CA4: + strh r0, [r4, #0x2e] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08182C80 + + thumb_func_start sub_08182CAC +sub_08182CAC: @ 0x08182CAC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1e + strh r0, [r4, #0x2e] + movs r0, #3 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817FB88 + ldr r0, _08182CC8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182CC8: .4byte sub_0817FB88 + thumb_func_end sub_08182CAC + + thumb_func_start sub_08182CCC +sub_08182CCC: @ 0x08182CCC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1e + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817FBF0 + ldr r0, _08182CE4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182CE4: .4byte sub_0817FBF0 + thumb_func_end sub_08182CCC + + thumb_func_start sub_08182CE8 +sub_08182CE8: @ 0x08182CE8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + strh r0, [r4, #0x2e] + ldr r2, _08182D20 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #6] + strh r3, [r1] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_0817FCDC + ldr r0, _08182D24 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182D20: .4byte gUnknown_3001240 +_08182D24: .4byte sub_0817FCDC + thumb_func_end sub_08182CE8 + + thumb_func_start sub_08182D28 +sub_08182D28: @ 0x08182D28 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182D60 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #6] + movs r0, #3 + strh r0, [r1, #8] + movs r0, #0xc + strh r0, [r1, #2] + adds r0, r4, #0 + bl sub_0817FE9C + ldr r0, _08182D64 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182D60: .4byte gUnknown_3001240 +_08182D64: .4byte sub_0817FE9C + thumb_func_end sub_08182D28 + + thumb_func_start sub_08182D68 +sub_08182D68: @ 0x08182D68 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x18 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081801C8 + ldr r0, _08182D80 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182D80: .4byte sub_081801C8 + thumb_func_end sub_08182D68 + + thumb_func_start sub_08182D84 +sub_08182D84: @ 0x08182D84 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_081803A4 + ldr r0, _08182D9C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182D9C: .4byte sub_081803A4 + thumb_func_end sub_08182D84 + + thumb_func_start sub_08182DA0 +sub_08182DA0: @ 0x08182DA0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F8A0 + ldr r0, _08182DB8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182DB8: .4byte sub_0817F8A0 + thumb_func_end sub_08182DA0 + + thumb_func_start sub_08182DBC +sub_08182DBC: @ 0x08182DBC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182DEC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x3c + strh r0, [r1] + movs r0, #0x1e + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_0817FDE8 + ldr r0, _08182DF0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182DEC: .4byte gUnknown_3001240 +_08182DF0: .4byte sub_0817FDE8 + thumb_func_end sub_08182DBC + + thumb_func_start sub_08182DF4 +sub_08182DF4: @ 0x08182DF4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182E24 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #2] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_081810C0 + ldr r0, _08182E28 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182E24: .4byte gUnknown_3001240 +_08182E28: .4byte sub_081810C0 + thumb_func_end sub_08182DF4 + + thumb_func_start sub_08182E2C +sub_08182E2C: @ 0x08182E2C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182E5C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #4 + strh r0, [r1, #6] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_081816BC + ldr r0, _08182E60 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182E5C: .4byte gUnknown_3001240 +_08182E60: .4byte sub_081816BC + thumb_func_end sub_08182E2C + + thumb_func_start sub_08182E64 +sub_08182E64: @ 0x08182E64 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + strh r0, [r4, #0x2e] + ldr r2, _08182EA0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #1 + strh r0, [r1, #8] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_0817F51C + strh r5, [r4, #0x34] + adds r0, r4, #0 + bl sub_08181968 + ldr r0, _08182EA4 + str r0, [r4, #0x1c] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08182EA0: .4byte gUnknown_3001240 +_08182EA4: .4byte sub_08181968 + thumb_func_end sub_08182E64 + + thumb_func_start sub_08182EA8 +sub_08182EA8: @ 0x08182EA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182ED4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #2 + strh r0, [r1, #6] + adds r0, r4, #0 + bl sub_08181B94 + ldr r0, _08182ED8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182ED4: .4byte gUnknown_3001240 +_08182ED8: .4byte sub_08181B94 + thumb_func_end sub_08182EA8 + + thumb_func_start sub_08182EDC +sub_08182EDC: @ 0x08182EDC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182F0C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #4 + strh r0, [r1, #6] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_08181B94 + ldr r0, _08182F10 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182F0C: .4byte gUnknown_3001240 +_08182F10: .4byte sub_08181B94 + thumb_func_end sub_08182EDC + + thumb_func_start sub_08182F14 +sub_08182F14: @ 0x08182F14 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182F40 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x64 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_08181380 + ldr r0, _08182F44 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182F40: .4byte gUnknown_3001240 +_08182F44: .4byte sub_08181380 + thumb_func_end sub_08182F14 + + thumb_func_start sub_08182F48 +sub_08182F48: @ 0x08182F48 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182F78 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x32 + strh r0, [r1, #8] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_08181380 + ldr r0, _08182F7C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182F78: .4byte gUnknown_3001240 +_08182F7C: .4byte sub_08181380 + thumb_func_end sub_08182F48 + + thumb_func_start sub_08182F80 +sub_08182F80: @ 0x08182F80 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182FAC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x64 + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_08181480 + ldr r0, _08182FB0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182FAC: .4byte gUnknown_3001240 +_08182FB0: .4byte sub_08181480 + thumb_func_end sub_08182F80 + + thumb_func_start sub_08182FB4 +sub_08182FB4: @ 0x08182FB4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08182FE4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x32 + strh r0, [r1, #8] + movs r0, #2 + strh r0, [r1, #4] + adds r0, r4, #0 + bl sub_08181480 + ldr r0, _08182FE8 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08182FE4: .4byte gUnknown_3001240 +_08182FE8: .4byte sub_08181480 + thumb_func_end sub_08182FB4 + + thumb_func_start sub_08182FEC +sub_08182FEC: @ 0x08182FEC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r0, #0x90 + lsls r0, r0, #4 + cmp r2, r0 + ble _08183008 + ldr r0, _08183004 + str r0, [r4, #0x1c] + movs r0, #0 + b _0818302C + .align 2, 0 +_08183004: .4byte sub_08184C34 +_08183008: + adds r1, r2, #0 + adds r1, #0xc0 + adds r0, r1, #0 + cmp r1, #0 + bge _08183016 + ldr r3, _0818303C + adds r0, r2, r3 +_08183016: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + ldrh r1, [r4, #0x3c] + adds r0, r0, r1 +_0818302C: + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x2e] + ldrh r3, [r4, #0x32] + adds r0, r0, r3 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818303C: .4byte 0x000001BF + thumb_func_end sub_08182FEC + + thumb_func_start sub_08183040 +sub_08183040: @ 0x08183040 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x3c + strh r0, [r4, #0x2e] + movs r0, #3 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08182FEC + ldr r0, _0818305C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818305C: .4byte sub_08182FEC + thumb_func_end sub_08183040 + + thumb_func_start sub_08183060 +sub_08183060: @ 0x08183060 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1e + strh r0, [r4, #0x2e] + movs r0, #3 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08182FEC + ldr r0, _0818307C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818307C: .4byte sub_08182FEC + thumb_func_end sub_08183060 + + thumb_func_start sub_08183080 +sub_08183080: @ 0x08183080 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + ble _081830A4 + ldr r0, _081830A0 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3a] + b _08183168 + .align 2, 0 +_081830A0: .4byte sub_08184C34 +_081830A4: + movs r1, #0x32 + ldrsh r2, [r4, r1] + adds r0, r2, #0 + cmp r2, #0 + bge _081830B2 + ldr r1, _081830D8 + adds r0, r2, r1 +_081830B2: + asrs r3, r0, #9 + adds r1, r3, #0 + adds r0, r1, #0 + cmp r1, #0 + bge _081830BE + adds r0, r1, #3 +_081830BE: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _08183114 + cmp r0, #1 + bgt _081830DC + cmp r0, #0 + beq _081830E6 + b _08183144 + .align 2, 0 +_081830D8: .4byte 0x000001FF +_081830DC: + cmp r0, #2 + beq _081830F8 + cmp r0, #3 + beq _08183130 + b _08183144 +_081830E6: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081830F4 + adds r0, #0x1f +_081830F4: + asrs r0, r0, #5 + b _08183142 +_081830F8: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _0818310A + ldr r1, _08183110 + adds r0, r0, r1 +_0818310A: + asrs r0, r0, #9 + b _08183142 + .align 2, 0 +_08183110: .4byte 0x000001FF +_08183114: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _08183126 + ldr r1, _0818312C + adds r0, r0, r1 +_08183126: + asrs r0, r0, #9 + adds r0, #0x10 + b _08183142 + .align 2, 0 +_0818312C: .4byte 0x000001FF +_08183130: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0818313E + adds r0, #0x1f +_0818313E: + asrs r0, r0, #5 + subs r0, #0x10 +_08183142: + strh r0, [r4, #0x24] +_08183144: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08183150 + adds r0, #0x7f +_08183150: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0x18 + strh r0, [r4, #0x32] +_08183168: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08183080 + + thumb_func_start sub_08183174 +sub_08183174: @ 0x08183174 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + movs r0, #0 + mov r8, r0 + movs r2, #0x38 + ldrsh r1, [r6, r2] + movs r2, #0x3a + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _081831C6 + mov r0, r8 + strh r0, [r6, #0x26] + strh r0, [r6, #0x38] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r1, [r6, #0x36] + movs r2, #0x36 + ldrsh r0, [r6, r2] + cmp r0, #1 + bgt _081831BC + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _081831B8 + str r0, [r6, #0x1c] + b _08183288 + .align 2, 0 +_081831B8: .4byte sub_08184C34 +_081831BC: + subs r0, r1, #1 + strh r0, [r6, #0x36] + mov r0, r8 + strh r0, [r6, #0x3c] + b _08183288 +_081831C6: + movs r1, #0x38 + ldrsh r5, [r6, r1] + lsls r0, r5, #7 + movs r2, #0x3a + ldrsh r4, [r6, r2] + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r4, #0 + bge _081831E0 + adds r4, #3 +_081831E0: + asrs r1, r4, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r1 + blt _08183204 + cmp r5, r0 + bge _08183204 + ldrh r0, [r6, #0x3c] + adds r0, #0x33 + strh r0, [r6, #0x3c] + movs r1, #0xff + mov r8, r1 + ands r1, r0 + mov r8, r1 +_08183204: + movs r1, #0x30 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08183228 + lsls r4, r2, #0x10 + asrs r0, r4, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + ldr r2, _08183224 + adds r1, r2, #0 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + b _0818323E + .align 2, 0 +_08183224: .4byte 0xFFFFFF00 +_08183228: + lsls r4, r2, #0x10 + asrs r0, r4, #0x10 + movs r1, #0x10 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 +_0818323E: + adds r7, r4, #0 + ldrh r4, [r6, #0x34] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r5, r8 + adds r0, r4, #0 + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0806EFB8 + adds r5, r0, #0 + asrs r0, r7, #0x10 + adds r1, r4, #0 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r1, #0 + subs r2, r2, r5 + subs r2, r2, r0 + mov r0, sb + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F4C4 + ldrh r0, [r6, #0x38] + adds r0, #1 + strh r0, [r6, #0x38] +_08183288: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08183174 + + thumb_func_start sub_08183294 +sub_08183294: @ 0x08183294 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _081832B6 + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x28 + strh r0, [r5, #0x3a] + strh r0, [r5, #0x34] + strh r6, [r5, #0x38] + strh r6, [r5, #0x3c] +_081832B6: + adds r0, r5, #0 + bl sub_08183174 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183294 + + thumb_func_start sub_081832C4 +sub_081832C4: @ 0x081832C4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + movs r0, #0 + mov r8, r0 + movs r2, #0x38 + ldrsh r1, [r6, r2] + movs r2, #0x3a + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _08183316 + mov r0, r8 + strh r0, [r6, #0x38] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r1, [r6, #0x36] + movs r2, #0x36 + ldrsh r0, [r6, r2] + cmp r0, #1 + bgt _0818330C + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08183308 + str r0, [r6, #0x1c] + b _081833E4 + .align 2, 0 +_08183308: .4byte sub_08184C34 +_0818330C: + subs r0, r1, #1 + strh r0, [r6, #0x36] + mov r0, r8 + strh r0, [r6, #0x3c] + b _081833E4 +_08183316: + movs r1, #0x38 + ldrsh r5, [r6, r1] + lsls r0, r5, #7 + movs r2, #0x3a + ldrsh r4, [r6, r2] + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r4, #0 + bge _08183332 + adds r4, #3 +_08183332: + asrs r1, r4, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r1 + blt _08183358 + cmp r5, r0 + bge _08183358 + ldrh r0, [r6, #0x3c] + adds r0, #0x33 + strh r0, [r6, #0x3c] + movs r1, #0xff + mov r8, r1 + mov r2, r8 + ands r2, r0 + mov r8, r2 +_08183358: + ldrh r0, [r6, #0x34] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r1, #0x30 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0818339C + mov r2, sb + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806EFB8 + adds r4, r0, #0 + mov r5, r8 + adds r0, r7, #0 + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r0, r5, #0 + bl sub_0806EFB8 + ldr r1, _08183398 + adds r0, r0, r1 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r1, r4, #0x10 + b _081833CE + .align 2, 0 +_08183398: .4byte 0xFFFFFF00 +_0818339C: + mov r4, r8 + adds r0, r7, #0 + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r0, r4, #0 + bl sub_0806EFB8 + adds r4, r0, #0 + mov r2, sb + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r4 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 +_081833CE: + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F4C4 + ldrh r0, [r6, #0x38] + adds r0, #1 + strh r0, [r6, #0x38] +_081833E4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081832C4 + + thumb_func_start sub_081833F0 +sub_081833F0: @ 0x081833F0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _08183412 + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x28 + strh r0, [r5, #0x3a] + strh r0, [r5, #0x34] + strh r6, [r5, #0x38] + strh r6, [r5, #0x3c] +_08183412: + adds r0, r5, #0 + bl sub_081832C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081833F0 + + thumb_func_start sub_08183420 +sub_08183420: @ 0x08183420 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r3, _0818347C + movs r1, #0x38 + ldrsh r0, [r4, r1] + lsls r1, r0, #1 + adds r0, r1, r3 + ldrb r5, [r0] + adds r2, r5, #0 + cmp r5, #0xff + beq _08183452 + ldrh r0, [r4, #0x3c] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_08183452: + adds r0, r3, #1 + adds r0, r1, r0 + ldrb r6, [r0] + movs r7, #0 + cmp r2, #0xfe + beq _0818346E + mov r1, sb + subs r0, r6, r1 + muls r0, r5, r0 + adds r1, r6, #0 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_0818346E: + cmp r5, #0xff + bne _08183484 + ldr r0, _08183480 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x26] + b _081834B6 + .align 2, 0 +_0818347C: .4byte gUnknown_85D34E0 +_08183480: .4byte sub_08184C34 +_08183484: + mov r1, r8 + adds r1, #0xc0 + adds r0, r1, #0 + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + adds r1, r7, #0 + bl sub_0806EFB8 + adds r0, r0, r7 + strh r0, [r4, #0x26] + cmp sb, r6 + bne _081834A8 + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] + movs r0, #0 + b _081834B4 +_081834A8: + ldrh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x3a] + adds r0, #1 +_081834B4: + strh r0, [r4, #0x3a] +_081834B6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183420 + + thumb_func_start sub_081834C4 +sub_081834C4: @ 0x081834C4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x28 + strh r0, [r4, #0x2e] + movs r0, #6 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08183420 + ldr r0, _081834E0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081834E0: .4byte sub_08183420 + thumb_func_end sub_081834C4 + + thumb_func_start sub_081834E4 +sub_081834E4: @ 0x081834E4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x46 + strh r0, [r4, #0x2e] + movs r0, #6 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0817FB88 + ldr r0, _08183500 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183500: .4byte sub_0817FB88 + thumb_func_end sub_081834E4 + + thumb_func_start sub_08183504 +sub_08183504: @ 0x08183504 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x14 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0817F7A8 + ldr r0, _0818351C + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818351C: .4byte sub_0817F7A8 + thumb_func_end sub_08183504 + + thumb_func_start sub_08183520 +sub_08183520: @ 0x08183520 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x28 + ble _0818353C + ldr r0, _08183538 + str r0, [r4, #0x1c] + movs r0, #0 + b _08183576 + .align 2, 0 +_08183538: .4byte sub_08184C34 +_0818353C: + movs r0, #1 + ands r0, r1 + movs r5, #0xff + cmp r0, #0 + bne _08183548 + movs r5, #1 +_08183548: + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _0818355C + adds r0, #0xff +_0818355C: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #9 + bl sub_0806EFB8 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 +_08183576: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183520 + + thumb_func_start sub_08183584 +sub_08183584: @ 0x08183584 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r0, #0x28 + ble _081835A0 + ldr r0, _0818359C + str r0, [r4, #0x1c] + movs r0, #0 + b _081835DA + .align 2, 0 +_0818359C: .4byte sub_08184C34 +_081835A0: + movs r0, #1 + ands r0, r1 + movs r5, #0xff + cmp r0, #0 + bne _081835AC + movs r5, #1 +_081835AC: + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r1, #0x28 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _081835C0 + adds r0, #0xff +_081835C0: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xc + bl sub_0806EFB8 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 +_081835DA: + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183584 + + thumb_func_start sub_081835E8 +sub_081835E8: @ 0x081835E8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x46 + strh r0, [r4, #0x2e] + movs r0, #6 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08182FEC + ldr r0, _08183604 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183604: .4byte sub_08182FEC + thumb_func_end sub_081835E8 + + thumb_func_start sub_08183608 +sub_08183608: @ 0x08183608 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x18 + strh r0, [r4, #0x2e] + movs r0, #6 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08183420 + ldr r0, _08183624 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183624: .4byte sub_08183420 + thumb_func_end sub_08183608 + + thumb_func_start sub_08183628 +sub_08183628: @ 0x08183628 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x38 + strh r0, [r4, #0x2e] + movs r0, #9 + strh r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_08183420 + ldr r0, _08183644 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183644: .4byte sub_08183420 + thumb_func_end sub_08183628 + + thumb_func_start sub_08183648 +sub_08183648: @ 0x08183648 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F604 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x2e] + ldr r2, _08183680 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #6] + movs r0, #6 + strh r0, [r1, #8] + movs r0, #0x18 + strh r0, [r1, #2] + adds r0, r4, #0 + bl sub_0817FE9C + ldr r0, _08183684 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183680: .4byte gUnknown_3001240 +_08183684: .4byte sub_0817FE9C + thumb_func_end sub_08183648 + + thumb_func_start sub_08183688 +sub_08183688: @ 0x08183688 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + movs r5, #0 + movs r0, #0x38 + ldrsh r1, [r7, r0] + movs r2, #0x3a + ldrsh r0, [r7, r2] + cmp r1, r0 + ble _081836D8 + strh r5, [r7, #0x26] + strh r5, [r7, #0x38] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r7, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + ldrh r1, [r7, #0x36] + movs r2, #0x36 + ldrsh r0, [r7, r2] + cmp r0, #1 + bgt _081836D0 + adds r0, r7, #0 + bl sub_0817F628 + ldr r0, _081836CC + str r0, [r7, #0x1c] + b _081837D8 + .align 2, 0 +_081836CC: .4byte sub_08184C34 +_081836D0: + subs r0, r1, #1 + strh r0, [r7, #0x36] + strh r5, [r7, #0x3c] + b _081837D8 +_081836D8: + movs r0, #0x38 + ldrsh r6, [r7, r0] + lsls r0, r6, #7 + movs r1, #0x3a + ldrsh r4, [r7, r1] + adds r1, r4, #0 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r4, #0 + bge _081836F2 + adds r4, #3 +_081836F2: + asrs r1, r4, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r1 + blt _08183712 + cmp r6, r0 + bge _08183712 + ldrh r0, [r7, #0x3c] + adds r0, #0x33 + strh r0, [r7, #0x3c] + movs r5, #0xff + ands r5, r0 +_08183712: + ldrh r0, [r7, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r1, #0x30 + ldrsh r0, [r7, r1] + cmp r0, #0 + bne _0818375C + lsls r2, r2, #0x10 + mov r8, r2 + asrs r0, r2, #0x10 + mov r1, sb + bl sub_0806EFB8 + adds r4, r0, #0 + lsls r6, r5, #0x10 + asrs r5, r6, #0x10 + mov r0, sb + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r0, r5, #0 + bl sub_0806EFB8 + ldr r2, _08183758 + adds r4, r4, r2 + adds r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + mov r0, r8 + b _08183796 + .align 2, 0 +_08183758: .4byte 0xFFFFFF00 +_0818375C: + lsls r2, r2, #0x10 + mov r8, r2 + asrs r0, r2, #0x10 + mov r1, sb + bl sub_0806EFB8 + adds r6, r0, #0 + lsls r5, r5, #0x10 + asrs r4, r5, #0x10 + mov r0, sb + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r0, r4, #0 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + subs r1, r1, r6 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + mov r0, r8 + adds r6, r5, #0 +_08183796: + asrs r0, r0, #0x10 + mov r1, sb + bl sub_0806EFB8 + adds r5, r0, #0 + asrs r4, r6, #0x10 + mov r0, sb + movs r1, #5 + bl __udivsi3 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r1, #0 + subs r2, r2, r5 + subs r2, r2, r0 + mov r0, sl + lsls r1, r0, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r7, #0 + movs r3, #0 + bl sub_0817F4C4 + ldrh r0, [r7, #0x38] + adds r0, #1 + strh r0, [r7, #0x38] +_081837D8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183688 + + thumb_func_start sub_081837E8 +sub_081837E8: @ 0x081837E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _0818380A + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x28 + strh r0, [r5, #0x3a] + strh r0, [r5, #0x34] + strh r6, [r5, #0x38] + strh r6, [r5, #0x3c] +_0818380A: + adds r0, r5, #0 + bl sub_08183688 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081837E8 + + thumb_func_start sub_08183818 +sub_08183818: @ 0x08183818 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + ble _0818383C + ldr r0, _08183838 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3a] + b _08183900 + .align 2, 0 +_08183838: .4byte sub_08184C34 +_0818383C: + movs r1, #0x32 + ldrsh r2, [r4, r1] + adds r0, r2, #0 + cmp r2, #0 + bge _0818384A + ldr r1, _08183870 + adds r0, r2, r1 +_0818384A: + asrs r3, r0, #9 + adds r1, r3, #0 + adds r0, r1, #0 + cmp r1, #0 + bge _08183856 + adds r0, r1, #3 +_08183856: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _081838AC + cmp r0, #1 + bgt _08183874 + cmp r0, #0 + beq _0818387E + b _081838DC + .align 2, 0 +_08183870: .4byte 0x000001FF +_08183874: + cmp r0, #2 + beq _08183890 + cmp r0, #3 + beq _081838C8 + b _081838DC +_0818387E: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _0818388C + adds r0, #0x1f +_0818388C: + asrs r0, r0, #5 + b _081838DA +_08183890: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _081838A2 + ldr r1, _081838A8 + adds r0, r0, r1 +_081838A2: + asrs r0, r0, #9 + b _081838DA + .align 2, 0 +_081838A8: .4byte 0x000001FF +_081838AC: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _081838BE + ldr r1, _081838C4 + adds r0, r0, r1 +_081838BE: + asrs r0, r0, #9 + adds r0, #0x10 + b _081838DA + .align 2, 0 +_081838C4: .4byte 0x000001FF +_081838C8: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081838D6 + adds r0, #0x1f +_081838D6: + asrs r0, r0, #5 + subs r0, #0x10 +_081838DA: + strh r0, [r4, #0x24] +_081838DC: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _081838E8 + adds r0, #0x7f +_081838E8: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0x30 + strh r0, [r4, #0x32] +_08183900: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08183818 + + thumb_func_start sub_0818390C +sub_0818390C: @ 0x0818390C + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + ble _08183930 + ldr r0, _0818392C + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x3a] + b _081839EC + .align 2, 0 +_0818392C: .4byte sub_08184C34 +_08183930: + movs r1, #0x32 + ldrsh r2, [r4, r1] + adds r0, r2, #0 + cmp r2, #0 + bge _0818393E + ldr r1, _08183964 + adds r0, r2, r1 +_0818393E: + asrs r3, r0, #9 + adds r1, r3, #0 + adds r0, r1, #0 + cmp r1, #0 + bge _0818394A + adds r0, r1, #3 +_0818394A: + asrs r0, r0, #2 + lsls r0, r0, #2 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + beq _081839A0 + cmp r0, #1 + bgt _08183968 + cmp r0, #0 + beq _08183972 + b _081839D0 + .align 2, 0 +_08183964: .4byte 0x000001FF +_08183968: + cmp r0, #2 + beq _08183984 + cmp r0, #3 + beq _081839BC + b _081839D0 +_08183972: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _08183980 + adds r0, #0x1f +_08183980: + asrs r0, r0, #5 + b _081839CE +_08183984: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _08183996 + ldr r1, _0818399C + adds r0, r0, r1 +_08183996: + asrs r0, r0, #9 + b _081839CE + .align 2, 0 +_0818399C: .4byte 0x000001FF +_081839A0: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0xc + rsbs r0, r0, #0 + cmp r0, #0 + bge _081839B2 + ldr r1, _081839B8 + adds r0, r0, r1 +_081839B2: + asrs r0, r0, #9 + adds r0, #0x10 + b _081839CE + .align 2, 0 +_081839B8: .4byte 0x000001FF +_081839BC: + lsls r0, r3, #9 + subs r0, r2, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + bge _081839CA + adds r0, #0x1f +_081839CA: + asrs r0, r0, #5 + subs r0, #0x10 +_081839CE: + strh r0, [r4, #0x24] +_081839D0: + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r1, #0x60 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #0x40 + strh r0, [r4, #0x32] +_081839EC: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0818390C + + thumb_func_start sub_081839F8 +sub_081839F8: @ 0x081839F8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08183A0A + strh r0, [r4, #0x34] +_08183A0A: + ldr r7, _08183A6C + movs r2, #0x34 + ldrsh r1, [r4, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r5, r7, #2 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl __divsi3 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08183A38 + ldrh r0, [r4, #0x34] + adds r0, #1 + movs r1, #0 + strh r0, [r4, #0x34] + strh r1, [r4, #0x32] +_08183A38: + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r6, r0, r1 + adds r0, r6, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x38 + ldrsh r5, [r4, r1] + adds r1, r5, #0 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bne _08183A78 + ldrh r0, [r4, #0x3a] + subs r0, #1 + strh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08183A74 + ldr r0, _08183A70 + str r0, [r4, #0x1c] + b _08183AB2 + .align 2, 0 +_08183A6C: .4byte gUnknown_85D381E +_08183A70: .4byte sub_08184C34 +_08183A74: + strh r1, [r4, #0x32] + b _08183AB2 +_08183A78: + adds r0, r6, r7 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + muls r0, r5, r0 + ldrh r2, [r4, #0x24] + adds r0, r0, r2 + strh r0, [r4, #0x24] + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r1, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + ldrh r0, [r4, #0x38] + adds r2, r0, #0 + muls r2, r1, r2 + adds r0, r2, #0 + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F5B8 +_08183AB2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081839F8 + + thumb_func_start sub_08183AB8 +sub_08183AB8: @ 0x08183AB8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strh r0, [r4, #0x38] + strh r0, [r4, #0x3a] + adds r0, r4, #0 + bl sub_081839F8 + ldr r0, _08183AD4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183AD4: .4byte sub_081839F8 + thumb_func_end sub_08183AB8 + + thumb_func_start sub_08183AD8 +sub_08183AD8: @ 0x08183AD8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strh r0, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x3a] + adds r0, r4, #0 + bl sub_081839F8 + ldr r0, _08183AF4 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183AF4: .4byte sub_081839F8 + thumb_func_end sub_08183AD8 + + thumb_func_start sub_08183AF8 +sub_08183AF8: @ 0x08183AF8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strh r0, [r4, #0x38] + strh r0, [r4, #0x3a] + adds r0, r4, #0 + bl sub_081839F8 + ldr r0, _08183B14 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183B14: .4byte sub_081839F8 + thumb_func_end sub_08183AF8 + + thumb_func_start sub_08183B18 +sub_08183B18: @ 0x08183B18 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x3c] + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #0xff + ble _08183B5A + ldrh r1, [r4, #0x38] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r0, #1 + bgt _08183B50 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08183B4C + str r0, [r4, #0x1c] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + b _08183B94 + .align 2, 0 +_08183B4C: .4byte sub_08184C34 +_08183B50: + subs r0, r1, #1 + movs r1, #0 + strh r0, [r4, #0x38] + strh r1, [r4, #0x3c] + b _08183B94 +_08183B5A: + ldrh r0, [r4, #0x3a] + adds r0, r1, r0 + strh r0, [r4, #0x3c] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x80 + lsls r5, r5, #1 + cmp r0, r5 + ble _08183B6E + strh r5, [r4, #0x3c] +_08183B6E: + movs r1, #0x3c + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r1, #0x40 + bl sub_0806EFB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + subs r2, r5, r2 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 +_08183B94: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183B18 + + thumb_func_start sub_08183B9C +sub_08183B9C: @ 0x08183B9C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183BC2 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #4 + strh r0, [r4, #0x3a] + movs r0, #1 + strh r0, [r4, #0x38] +_08183BC2: + adds r0, r4, #0 + bl sub_08183B18 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183B9C + + thumb_func_start sub_08183BD4 +sub_08183BD4: @ 0x08183BD4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183BFA + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] + movs r0, #2 + strh r0, [r4, #0x38] +_08183BFA: + adds r0, r4, #0 + bl sub_08183B18 + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183BD4 + + thumb_func_start sub_08183C0C +sub_08183C0C: @ 0x08183C0C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183C34 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x38] + movs r0, #0x10 + strh r0, [r4, #0x36] +_08183C34: + adds r0, r4, #0 + bl sub_08182610 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183C0C + + thumb_func_start sub_08183C40 +sub_08183C40: @ 0x08183C40 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183C66 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #4 + strh r0, [r4, #0x3a] + adds r0, #0xfc + strh r0, [r4, #0x38] + movs r0, #0x10 + strh r0, [r4, #0x36] +_08183C66: + adds r0, r4, #0 + bl sub_08182610 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183C40 + + thumb_func_start sub_08183C74 +sub_08183C74: @ 0x08183C74 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183C9C + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x38] + movs r0, #0x10 + strh r0, [r4, #0x36] +_08183C9C: + adds r0, r4, #0 + bl sub_081826DC + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183C74 + + thumb_func_start sub_08183CA8 +sub_08183CA8: @ 0x08183CA8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183CCE + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + strh r5, [r4, #0x3c] + movs r1, #8 + strh r1, [r4, #0x3a] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x38] + strh r1, [r4, #0x36] +_08183CCE: + adds r0, r4, #0 + bl sub_081826DC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183CA8 + + thumb_func_start sub_08183CDC +sub_08183CDC: @ 0x08183CDC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08183CF6 + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #5 + strh r0, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] +_08183CF6: + adds r0, r4, #0 + bl sub_081806D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183CDC + + thumb_func_start sub_08183D04 +sub_08183D04: @ 0x08183D04 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08183D1E + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #3 + strh r0, [r4, #0x3c] + movs r0, #4 + strh r0, [r4, #0x3a] +_08183D1E: + adds r0, r4, #0 + bl sub_081806D4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183D04 + + thumb_func_start sub_08183D2C +sub_08183D2C: @ 0x08183D2C + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _08183D4E + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x1e + strh r0, [r5, #0x3a] + movs r0, #0x3c + strh r0, [r5, #0x34] + strh r6, [r5, #0x3c] +_08183D4E: + adds r0, r5, #0 + bl sub_08183174 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183D2C + + thumb_func_start sub_08183D5C +sub_08183D5C: @ 0x08183D5C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183D80 + movs r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #2 + strh r0, [r4, #0x36] + movs r0, #0x14 + strh r0, [r4, #0x3a] + movs r0, #0x46 + strh r0, [r4, #0x34] + strh r5, [r4, #0x3c] +_08183D80: + adds r0, r4, #0 + bl sub_08183174 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08183D5C + + thumb_func_start sub_08183D8C +sub_08183D8C: @ 0x08183D8C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183DB2 + movs r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #2 + strh r0, [r4, #0x36] + movs r0, #0x14 + strh r0, [r4, #0x3a] + movs r0, #0x46 + strh r0, [r4, #0x34] + strh r5, [r4, #0x38] + strh r5, [r4, #0x3c] +_08183DB2: + adds r0, r4, #0 + bl sub_081832C4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183D8C + + thumb_func_start sub_08183DC0 +sub_08183DC0: @ 0x08183DC0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _08183DE4 + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x1e + strh r0, [r5, #0x3a] + movs r0, #0x3c + strh r0, [r5, #0x34] + strh r6, [r5, #0x38] + strh r6, [r5, #0x3c] +_08183DE4: + adds r0, r5, #0 + bl sub_081832C4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08183DC0 + + thumb_func_start sub_08183DF0 +sub_08183DF0: @ 0x08183DF0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08183E16 + movs r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #2 + strh r0, [r4, #0x36] + movs r0, #0x14 + strh r0, [r4, #0x3a] + movs r0, #0x46 + strh r0, [r4, #0x34] + strh r5, [r4, #0x38] + strh r5, [r4, #0x3c] +_08183E16: + adds r0, r4, #0 + bl sub_08183688 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183DF0 + + thumb_func_start sub_08183E24 +sub_08183E24: @ 0x08183E24 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x32 + ldrsh r6, [r5, r0] + cmp r6, #0 + bne _08183E48 + movs r4, #1 + strh r4, [r5, #0x32] + adds r0, r5, #0 + bl sub_0817F51C + strh r4, [r5, #0x36] + movs r0, #0x1e + strh r0, [r5, #0x3a] + movs r0, #0x3c + strh r0, [r5, #0x34] + strh r6, [r5, #0x38] + strh r6, [r5, #0x3c] +_08183E48: + adds r0, r5, #0 + bl sub_08183688 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08183E24 + + thumb_func_start sub_08183E54 +sub_08183E54: @ 0x08183E54 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0xff + ble _08183E96 + ldrh r2, [r4, #0x3a] + movs r3, #0x3a + ldrsh r0, [r4, r3] + cmp r0, #1 + bgt _08183E7C + ldr r0, _08183E78 + str r0, [r4, #0x1c] + movs r0, #0 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + b _08183EEA + .align 2, 0 +_08183E78: .4byte sub_08184C34 +_08183E7C: + movs r0, #0x3c + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08183E88 + adds r0, #0xff +_08183E88: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + strh r0, [r4, #0x3c] + subs r0, r2, #1 + strh r0, [r4, #0x3a] + b _08183EEA +_08183E96: + movs r1, #0x3c + ldrsh r0, [r4, r1] + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r3, #0x3c + ldrsh r2, [r4, r3] + adds r1, r2, #0 + adds r1, #0xc0 + adds r0, r1, #0 + cmp r1, #0 + bge _08183EB8 + ldr r3, _08183EF0 + adds r0, r2, r3 +_08183EB8: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + strh r0, [r4, #0x26] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08183EDA + movs r3, #0x26 + ldrsh r0, [r4, r3] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_08183EDA: + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x26] + adds r0, r0, r1 + strh r0, [r4, #0x26] + ldrh r0, [r4, #0x34] + ldrh r2, [r4, #0x3c] + adds r0, r0, r2 + strh r0, [r4, #0x3c] +_08183EEA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08183EF0: .4byte 0x000001BF + thumb_func_end sub_08183E54 + + thumb_func_start sub_08183EF4 +sub_08183EF4: @ 0x08183EF4 + push {lr} + adds r1, r0, #0 + movs r0, #0x32 + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08183F12 + movs r0, #1 + strh r0, [r1, #0x32] + strh r0, [r1, #0x3a] + strh r2, [r1, #0x3c] + movs r0, #0xc + strh r0, [r1, #0x38] + strh r0, [r1, #0x36] + movs r0, #4 + strh r0, [r1, #0x34] +_08183F12: + adds r0, r1, #0 + bl sub_08183E54 + pop {r0} + bx r0 + thumb_func_end sub_08183EF4 + + thumb_func_start sub_08183F1C +sub_08183F1C: @ 0x08183F1C + push {lr} + adds r1, r0, #0 + movs r0, #0x32 + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08183F3A + movs r0, #1 + strh r0, [r1, #0x32] + strh r0, [r1, #0x3a] + strh r2, [r1, #0x3c] + movs r0, #0xc + strh r0, [r1, #0x38] + strh r0, [r1, #0x36] + movs r0, #6 + strh r0, [r1, #0x34] +_08183F3A: + adds r0, r1, #0 + bl sub_08183E54 + pop {r0} + bx r0 + thumb_func_end sub_08183F1C + + thumb_func_start sub_08183F44 +sub_08183F44: @ 0x08183F44 + push {lr} + adds r1, r0, #0 + movs r0, #0x32 + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08183F64 + movs r0, #1 + strh r0, [r1, #0x32] + movs r0, #2 + strh r0, [r1, #0x3a] + strh r2, [r1, #0x3c] + movs r0, #0xc + strh r0, [r1, #0x38] + strh r0, [r1, #0x36] + movs r0, #8 + strh r0, [r1, #0x34] +_08183F64: + adds r0, r1, #0 + bl sub_08183E54 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183F44 + + thumb_func_start sub_08183F70 +sub_08183F70: @ 0x08183F70 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x3c + ldrsh r0, [r5, r1] + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + ble _08183FA8 + movs r2, #0x3a + ldrsh r1, [r5, r2] + ldrh r2, [r5, #0x36] + movs r3, #0x36 + ldrsh r0, [r5, r3] + cmp r1, r0 + bgt _08183F98 + ldr r0, _08183F94 + str r0, [r5, #0x1c] + b _08183FA0 + .align 2, 0 +_08183F94: .4byte sub_08184C34 +_08183F98: + adds r0, r2, #1 + movs r1, #0 + strh r0, [r5, #0x36] + strh r1, [r5, #0x3c] +_08183FA0: + movs r0, #0 + strh r0, [r5, #0x24] + strh r0, [r5, #0x26] + b _08184034 +_08183FA8: + cmp r0, #0x9f + ble _08183FD2 + cmp r0, r1 + ble _08183FB2 + strh r1, [r5, #0x3c] +_08183FB2: + movs r0, #0x3c + ldrsh r1, [r5, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _08183FBE + adds r0, #0xff +_08183FBE: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #8 + bl sub_0806EFB8 + rsbs r0, r0, #0 + b _08184000 +_08183FD2: + cmp r0, #0x5f + ble _08183FF6 + movs r0, #0x60 + movs r1, #6 + bl sub_0806EFB8 + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r5, r1] + subs r0, #0x60 + lsls r0, r0, #0x11 + asrs r0, r0, #0x10 + movs r1, #4 + bl sub_0806EFB8 + subs r4, r4, r0 + strh r4, [r5, #0x26] + b _08184002 +_08183FF6: + movs r2, #0x3c + ldrsh r0, [r5, r2] + movs r1, #6 + bl sub_0806EFB8 +_08184000: + strh r0, [r5, #0x26] +_08184002: + movs r3, #0x3c + ldrsh r0, [r5, r3] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + movs r2, #0x38 + ldrsh r1, [r5, r2] + bl sub_0806EFB8 + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r5, #0x36] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0818402A + lsls r0, r2, #0x10 + rsbs r0, r0, #0 + lsrs r2, r0, #0x10 +_0818402A: + strh r2, [r5, #0x24] + ldrh r0, [r5, #0x34] + ldrh r3, [r5, #0x3c] + adds r0, r0, r3 + strh r0, [r5, #0x3c] +_08184034: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08183F70 + + thumb_func_start sub_0818403C +sub_0818403C: @ 0x0818403C + push {lr} + adds r2, r0, #0 + movs r0, #0x32 + ldrsh r3, [r2, r0] + cmp r3, #0 + bne _0818405C + movs r1, #1 + strh r1, [r2, #0x32] + movs r0, #2 + strh r0, [r2, #0x3a] + strh r3, [r2, #0x3c] + movs r0, #0x10 + strh r0, [r2, #0x38] + strh r1, [r2, #0x36] + movs r0, #4 + strh r0, [r2, #0x34] +_0818405C: + adds r0, r2, #0 + bl sub_08183F70 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818403C + + thumb_func_start sub_08184068 +sub_08184068: @ 0x08184068 + push {lr} + adds r2, r0, #0 + movs r0, #0x32 + ldrsh r3, [r2, r0] + cmp r3, #0 + bne _08184088 + movs r1, #1 + strh r1, [r2, #0x32] + movs r0, #2 + strh r0, [r2, #0x3a] + strh r3, [r2, #0x3c] + movs r0, #0x10 + strh r0, [r2, #0x38] + strh r1, [r2, #0x36] + movs r0, #6 + strh r0, [r2, #0x34] +_08184088: + adds r0, r2, #0 + bl sub_08183F70 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184068 + + thumb_func_start sub_08184094 +sub_08184094: @ 0x08184094 + push {lr} + adds r2, r0, #0 + movs r0, #0x32 + ldrsh r3, [r2, r0] + cmp r3, #0 + bne _081840B4 + movs r1, #1 + strh r1, [r2, #0x32] + movs r0, #3 + strh r0, [r2, #0x3a] + strh r3, [r2, #0x3c] + movs r0, #0x10 + strh r0, [r2, #0x38] + strh r1, [r2, #0x36] + movs r0, #8 + strh r0, [r2, #0x34] +_081840B4: + adds r0, r2, #0 + bl sub_08183F70 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184094 + + thumb_func_start sub_081840C0 +sub_081840C0: @ 0x081840C0 + push {lr} + adds r2, r0, #0 + movs r0, #0x32 + ldrsh r1, [r2, r0] + cmp r1, #0 + bne _081840DE + movs r0, #1 + strh r0, [r2, #0x32] + strh r0, [r2, #0x3a] + strh r1, [r2, #0x3c] + movs r1, #4 + strh r1, [r2, #0x38] + movs r0, #6 + strh r0, [r2, #0x36] + strh r1, [r2, #0x34] +_081840DE: + adds r0, r2, #0 + bl sub_08183E54 + pop {r0} + bx r0 + thumb_func_end sub_081840C0 + + thumb_func_start sub_081840E8 +sub_081840E8: @ 0x081840E8 + push {lr} + adds r1, r0, #0 + movs r0, #0x32 + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08184106 + movs r0, #1 + strh r0, [r1, #0x32] + strh r0, [r1, #0x3a] + strh r2, [r1, #0x3c] + movs r0, #4 + strh r0, [r1, #0x38] + movs r0, #6 + strh r0, [r1, #0x36] + strh r0, [r1, #0x34] +_08184106: + adds r0, r1, #0 + bl sub_08183E54 + pop {r0} + bx r0 + thumb_func_end sub_081840E8 + + thumb_func_start sub_08184110 +sub_08184110: @ 0x08184110 + push {lr} + adds r1, r0, #0 + movs r0, #0x32 + ldrsh r2, [r1, r0] + cmp r2, #0 + bne _08184132 + movs r0, #1 + strh r0, [r1, #0x32] + movs r0, #2 + strh r0, [r1, #0x3a] + strh r2, [r1, #0x3c] + movs r0, #4 + strh r0, [r1, #0x38] + movs r0, #6 + strh r0, [r1, #0x36] + movs r0, #8 + strh r0, [r1, #0x34] +_08184132: + adds r0, r1, #0 + bl sub_08183E54 + pop {r0} + bx r0 + thumb_func_end sub_08184110 + + thumb_func_start sub_0818413C +sub_0818413C: @ 0x0818413C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + lsls r0, r0, #7 + movs r2, #0x3c + ldrsh r1, [r4, r2] + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x38 + ldrsh r1, [r4, r2] + bl sub_0806EFB8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r0, r1, #8 + rsbs r0, r0, #0 + strh r0, [r4, #0x3a] + movs r0, #0x36 + ldrsh r2, [r4, r0] + adds r0, r4, #0 + movs r3, #0 + bl sub_0817F29C + movs r2, #0x80 + lsls r2, r2, #1 + ldrh r3, [r4, #0x3a] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0817F580 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818413C + + thumb_func_start sub_08184188 +sub_08184188: @ 0x08184188 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _081841AC + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #0x3c + strh r0, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x38] + ldr r0, _081841EC + strh r0, [r4, #0x36] + movs r0, #1 + strh r0, [r4, #0x34] + strh r5, [r4, #0x2e] +_081841AC: + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _081841F8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r2, #0 + strh r2, [r4, #0x24] + strh r2, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r3, #0x34 + ldrsh r1, [r4, r3] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _081841F4 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081841F0 + str r0, [r4, #0x1c] + b _08184204 + .align 2, 0 +_081841EC: .4byte 0x0000FFE0 +_081841F0: .4byte sub_08184C34 +_081841F4: + strh r2, [r4, #0x32] + b _081841FE +_081841F8: + adds r0, r4, #0 + bl sub_0818413C +_081841FE: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08184204: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184188 + + thumb_func_start sub_0818420C +sub_0818420C: @ 0x0818420C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _08184230 + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #0x5a + strh r0, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x38] + ldr r0, _08184270 + strh r0, [r4, #0x36] + movs r0, #1 + strh r0, [r4, #0x34] + strh r5, [r4, #0x2e] +_08184230: + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _0818427C + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r2, #0 + strh r2, [r4, #0x24] + strh r2, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r3, #0x34 + ldrsh r1, [r4, r3] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _08184278 + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08184274 + str r0, [r4, #0x1c] + b _08184288 + .align 2, 0 +_08184270: .4byte 0x0000FFE0 +_08184274: .4byte sub_08184C34 +_08184278: + strh r2, [r4, #0x32] + b _08184282 +_0818427C: + adds r0, r4, #0 + bl sub_0818413C +_08184282: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08184288: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818420C + + thumb_func_start sub_08184290 +sub_08184290: @ 0x08184290 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _081842B4 + adds r0, r4, #0 + bl sub_0817F51C + movs r0, #0x1e + strh r0, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x38] + ldr r0, _081842F4 + strh r0, [r4, #0x36] + movs r0, #2 + strh r0, [r4, #0x34] + strh r5, [r4, #0x2e] +_081842B4: + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r3, #0x3c + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _08184300 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + movs r2, #0 + strh r2, [r4, #0x24] + strh r2, [r4, #0x26] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + movs r3, #0x34 + ldrsh r1, [r4, r3] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _081842FC + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _081842F8 + str r0, [r4, #0x1c] + b _0818430C + .align 2, 0 +_081842F4: .4byte 0x0000FFE0 +_081842F8: .4byte sub_08184C34 +_081842FC: + strh r2, [r4, #0x32] + b _08184306 +_08184300: + adds r0, r4, #0 + bl sub_0818413C +_08184306: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_0818430C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184290 + + thumb_func_start sub_08184314 +sub_08184314: @ 0x08184314 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x32 + ldrsh r1, [r6, r0] + movs r2, #0x3c + ldrsh r0, [r6, r2] + cmp r1, r0 + ble _08184348 + movs r0, #0 + strh r0, [r6, #0x26] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r6, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0817F580 + adds r0, r6, #0 + bl sub_0817F628 + ldr r0, _08184344 + str r0, [r6, #0x1c] + b _081843F0 + .align 2, 0 +_08184344: .4byte sub_08184C34 +_08184348: + movs r1, #0x32 + ldrsh r0, [r6, r1] + movs r2, #0x3a + ldrsh r4, [r6, r2] + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _08184368 + adds r0, #0xff +_08184368: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrh r0, [r6, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _081843A4 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806EFB8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r1, #0 + adds r0, r0, r5 + strh r0, [r6, #0x36] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806EFB8 + adds r0, r0, r5 + strh r0, [r6, #0x38] + adds r0, r4, #0 + movs r1, #0x20 + b _081843CA +_081843A4: + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #8 + bl sub_0806EFB8 + movs r2, #0x80 + lsls r2, r2, #1 + adds r5, r2, #0 + adds r0, r0, r5 + strh r0, [r6, #0x36] + adds r0, r4, #0 + movs r1, #8 + bl sub_0806EFB8 + adds r0, r0, r5 + strh r0, [r6, #0x38] + adds r0, r4, #0 + movs r1, #8 +_081843CA: + bl sub_0806EFB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _081843DC + adds r0, #7 +_081843DC: + lsrs r0, r0, #3 + strh r0, [r6, #0x26] + movs r0, #0x36 + ldrsh r1, [r6, r0] + movs r0, #0x38 + ldrsh r2, [r6, r0] + adds r0, r6, #0 + movs r3, #0 + bl sub_0817F580 +_081843F0: + ldrh r0, [r6, #0x32] + adds r0, #1 + strh r0, [r6, #0x32] + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08184314 + + thumb_func_start sub_081843FC +sub_081843FC: @ 0x081843FC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0818441C + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x26] + adds r0, #2 + strh r0, [r4, #0x26] + movs r0, #0x28 + strh r0, [r4, #0x3a] + movs r0, #0x50 + strh r0, [r4, #0x3c] +_0818441C: + adds r0, r4, #0 + bl sub_08184314 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081843FC + + thumb_func_start sub_08184428 +sub_08184428: @ 0x08184428 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08184446 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x26] + adds r0, #2 + strh r0, [r4, #0x26] + movs r0, #0x28 + strh r0, [r4, #0x3a] + strh r0, [r4, #0x3c] +_08184446: + adds r0, r4, #0 + bl sub_08184314 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184428 + + thumb_func_start sub_08184454 +sub_08184454: @ 0x08184454 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08184472 + adds r0, r4, #0 + bl sub_0817F51C + ldrh r0, [r4, #0x26] + adds r0, #2 + strh r0, [r4, #0x26] + movs r0, #0x50 + strh r0, [r4, #0x3a] + strh r0, [r4, #0x3c] +_08184472: + adds r0, r4, #0 + bl sub_08184314 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184454 + + thumb_func_start sub_08184480 +sub_08184480: @ 0x08184480 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmn r1, r0 + bgt _081844AA + ldrh r0, [r4, #0x3a] + rsbs r0, r0, #0 + strh r0, [r4, #0x24] + movs r0, #2 + strh r0, [r4, #0x3c] + ldr r0, _081844B8 + str r0, [r4, #0x1c] +_081844AA: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081844B8: .4byte sub_081844BC + thumb_func_end sub_08184480 + + thumb_func_start sub_081844BC +sub_081844BC: @ 0x081844BC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3c] + ldrh r2, [r4, #0x24] + adds r1, r0, r2 + strh r1, [r4, #0x24] + adds r0, #1 + strh r0, [r4, #0x3c] + lsls r1, r1, #0x10 + cmp r1, #0 + blt _081844DA + ldr r0, _081844E8 + str r0, [r4, #0x1c] +_081844DA: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081844E8: .4byte sub_081844EC + thumb_func_end sub_081844BC + + thumb_func_start sub_081844EC +sub_081844EC: @ 0x081844EC + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x3c] + ldrh r2, [r4, #0x24] + adds r1, r0, r2 + strh r1, [r4, #0x24] + adds r0, #1 + strh r0, [r4, #0x3c] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldrh r2, [r4, #0x3a] + movs r3, #0x3a + ldrsh r0, [r4, r3] + cmp r1, r0 + ble _08184514 + strh r2, [r4, #0x24] + ldr r0, _08184520 + str r0, [r4, #0x1c] +_08184514: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08184520: .4byte sub_08184524 + thumb_func_end sub_081844EC + + thumb_func_start sub_08184524 +sub_08184524: @ 0x08184524 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r2, [r4, #0x34] + movs r0, #0x34 + ldrsh r1, [r4, r0] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _08184544 + ldr r0, _08184540 + str r0, [r4, #0x1c] + b _08184558 + .align 2, 0 +_08184540: .4byte sub_08184564 +_08184544: + ldrh r0, [r4, #0x36] + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + movs r3, #0x36 + ldrsh r0, [r4, r3] + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + adds r0, r2, #1 + strh r0, [r4, #0x34] +_08184558: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184524 + + thumb_func_start sub_08184564 +sub_08184564: @ 0x08184564 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F5B8 + ldrh r0, [r4, #0x24] + subs r0, #2 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _08184586 + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0817F628 + ldr r0, _08184594 + str r0, [r4, #0x1c] +_08184586: + adds r0, r4, #0 + bl sub_0817F5B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08184594: .4byte sub_08184C34 + thumb_func_end sub_08184564 + + thumb_func_start sub_08184598 +sub_08184598: @ 0x08184598 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r2, #0 + movs r1, #4 + strh r1, [r4, #0x3c] + movs r0, #0xc + strh r0, [r4, #0x3a] + movs r0, #0x10 + strh r0, [r4, #0x38] + strh r1, [r4, #0x36] + strh r2, [r4, #0x34] + movs r0, #2 + strh r0, [r4, #0x32] + ldr r0, _081845C0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081845C0: .4byte sub_08184480 + thumb_func_end sub_08184598 + + thumb_func_start sub_081845C4 +sub_081845C4: @ 0x081845C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r2, #0 + movs r1, #2 + strh r1, [r4, #0x3c] + movs r0, #8 + strh r0, [r4, #0x3a] + movs r0, #0xc + strh r0, [r4, #0x38] + strh r1, [r4, #0x36] + strh r2, [r4, #0x34] + movs r0, #1 + strh r0, [r4, #0x32] + ldr r0, _081845EC + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081845EC: .4byte sub_08184480 + thumb_func_end sub_081845C4 + + thumb_func_start sub_081845F0 +sub_081845F0: @ 0x081845F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0817F51C + movs r1, #0 + strh r1, [r4, #0x3c] + movs r0, #6 + strh r0, [r4, #0x3a] + strh r0, [r4, #0x38] + movs r0, #2 + strh r0, [r4, #0x36] + strh r1, [r4, #0x34] + movs r0, #1 + strh r0, [r4, #0x32] + ldr r0, _08184618 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08184618: .4byte sub_08184480 + thumb_func_end sub_081845F0 + + thumb_func_start sub_0818461C +sub_0818461C: @ 0x0818461C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + strh r0, [r1, #0x24] + ldrh r2, [r1, #0x2e] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r0, #1 + ble _0818463A + movs r2, #0x30 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + strh r0, [r1, #0x30] + movs r0, #0 + b _0818463C +_0818463A: + adds r0, r2, #1 +_0818463C: + strh r0, [r1, #0x2e] + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818461C + + thumb_func_start sub_08184644 +sub_08184644: @ 0x08184644 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08184674 + movs r2, #0x34 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r5, [r0] + adds r0, r4, #0 + bl sub_0818461C + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r1, r0, r5 + ldrb r0, [r1, #1] + cmp r0, #0xff + bne _0818467C + movs r0, #0 + strh r0, [r4, #0x24] + ldr r0, _08184678 + str r0, [r4, #0x1c] + b _081846DA + .align 2, 0 +_08184674: .4byte gUnknown_85D38DC +_08184678: .4byte sub_08184C34 +_0818467C: + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #1 + bne _081846AC + ldrb r0, [r1] + cmp r0, #0 + beq _0818469C + ldrh r0, [r4, #0x3c] + ldr r3, _08184698 + movs r1, #0x10 + movs r2, #0x10 + bl sub_0806F410 + b _081846A8 + .align 2, 0 +_08184698: .4byte 0x000003FF +_0818469C: + ldrh r0, [r4, #0x3c] + ldr r3, _081846D0 + movs r1, #0x10 + movs r2, #0 + bl sub_0806F410 +_081846A8: + movs r0, #0 + strh r0, [r4, #0x36] +_081846AC: + movs r1, #0x3a + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #1] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _081846D4 + movs r1, #0 + movs r0, #1 + strh r0, [r4, #0x36] + strh r1, [r4, #0x38] + ldrh r0, [r4, #0x3a] + adds r0, #1 + strh r0, [r4, #0x3a] + b _081846DA + .align 2, 0 +_081846D0: .4byte 0x000003FF +_081846D4: + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_081846DA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08184644 + + thumb_func_start sub_081846E0 +sub_081846E0: @ 0x081846E0 + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + adds r0, #1 + movs r3, #0 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0818470C + ldrb r0, [r2, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + adds r0, r0, r1 + strh r0, [r2, #0x3c] + strh r3, [r2, #0x3a] + strh r3, [r2, #0x38] + strh r3, [r2, #0x36] + strh r3, [r2, #0x34] +_0818470C: + adds r0, r2, #0 + bl sub_08184644 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081846E0 + + thumb_func_start sub_08184718 +sub_08184718: @ 0x08184718 + push {r4, r5, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + adds r0, #1 + movs r3, #0 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + cmp r4, #1 + bne _08184744 + ldrb r0, [r2, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r5, #0 + adds r0, r0, r1 + strh r0, [r2, #0x3c] + strh r3, [r2, #0x3a] + strh r3, [r2, #0x38] + strh r3, [r2, #0x36] + strh r4, [r2, #0x34] +_08184744: + adds r0, r2, #0 + bl sub_08184644 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_08184718 + + thumb_func_start sub_08184750 +sub_08184750: @ 0x08184750 + push {r4, lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x32] + adds r0, #1 + movs r3, #0 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #1 + bne _0818477E + ldrb r0, [r2, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + adds r0, r0, r1 + strh r0, [r2, #0x3c] + strh r3, [r2, #0x3a] + strh r3, [r2, #0x38] + strh r3, [r2, #0x36] + movs r0, #2 + strh r0, [r2, #0x34] +_0818477E: + adds r0, r2, #0 + bl sub_08184644 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184750 + + thumb_func_start sub_0818478C +sub_0818478C: @ 0x0818478C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0x7f + ble _081847B0 + ldrh r0, [r4, #0x3c] + movs r1, #0x10 + movs r2, #0 + movs r3, #0x1f + bl sub_0806F410 + ldr r0, _081847AC + str r0, [r4, #0x1c] + b _081847D6 + .align 2, 0 +_081847AC: .4byte sub_08184C34 +_081847B0: + movs r5, #0x32 + ldrsh r0, [r4, r5] + movs r1, #0xc + bl sub_0806EFB8 + adds r2, r0, #0 + strh r2, [r4, #0x3a] + ldrh r0, [r4, #0x3c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _081847DC + movs r5, #0x30 + ldrsh r1, [r4, r5] + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r3, [r1] + movs r1, #0x10 + bl sub_0806F410 +_081847D6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081847DC: .4byte gUnknown_85D38E8 + thumb_func_end sub_0818478C + + thumb_func_start sub_081847E0 +sub_081847E0: @ 0x081847E0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x34 + ldrsh r1, [r4, r0] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r1, r0 + bge _08184878 + adds r0, r4, #0 + bl sub_0817F5B8 + movs r3, #0x38 + ldrsh r1, [r4, r3] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0818481C + ldrh r0, [r4, #0x34] + adds r0, #1 + movs r2, #0 + strh r0, [r4, #0x34] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x36 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _08184818 + strh r2, [r4, #0x38] +_08184818: + strh r2, [r4, #0x24] + b _08184872 +_0818481C: + movs r0, #0x34 + ldrsh r1, [r4, r0] + lsrs r0, r1, #0x1f + adds r0, r1, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0xf + movs r0, #1 + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r2, #0x38 + ldrsh r1, [r4, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #7 + movs r3, #0x2e + ldrsh r1, [r4, r3] + bl __divsi3 + adds r1, r0, #0 + cmp r1, #0 + bge _08184850 + adds r0, #0xff +_08184850: + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #6 + bl sub_0806EFB8 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + adds r2, r1, #0 + muls r2, r0, r2 + adds r0, r2, #0 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x38] + adds r0, #1 + strh r0, [r4, #0x38] +_08184872: + adds r0, r4, #0 + bl sub_0817F5B8 +_08184878: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081847E0 + + thumb_func_start sub_08184880 +sub_08184880: @ 0x08184880 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _081848AA + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0xa + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #2 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r2, [r4, #0x30] +_081848AA: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _081848BA + adds r0, r4, #0 + bl sub_0818478C +_081848BA: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _081848DC + adds r0, r4, #0 + bl sub_081847E0 +_081848DC: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184880 + + thumb_func_start sub_081848E8 +sub_081848E8: @ 0x081848E8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184912 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x14 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r2, [r4, #0x30] +_08184912: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184922 + adds r0, r4, #0 + bl sub_0818478C +_08184922: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184944 + adds r0, r4, #0 + bl sub_081847E0 +_08184944: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081848E8 + + thumb_func_start sub_08184950 +sub_08184950: @ 0x08184950 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _0818497A + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x50 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r2, [r4, #0x30] +_0818497A: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0818498A + adds r0, r4, #0 + bl sub_0818478C +_0818498A: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _081849AC + adds r0, r4, #0 + bl sub_081847E0 +_081849AC: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184950 + + thumb_func_start sub_081849B8 +sub_081849B8: @ 0x081849B8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _081849E4 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0xa + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #2 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + movs r0, #1 + strh r0, [r4, #0x30] +_081849E4: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _081849F4 + adds r0, r4, #0 + bl sub_0818478C +_081849F4: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184A16 + adds r0, r4, #0 + bl sub_081847E0 +_08184A16: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081849B8 + + thumb_func_start sub_08184A24 +sub_08184A24: @ 0x08184A24 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184A4E + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x14 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r0, [r4, #0x30] +_08184A4E: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184A5E + adds r0, r4, #0 + bl sub_0818478C +_08184A5E: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184A80 + adds r0, r4, #0 + bl sub_081847E0 +_08184A80: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184A24 + + thumb_func_start sub_08184A8C +sub_08184A8C: @ 0x08184A8C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184AB6 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x50 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r0, [r4, #0x30] +_08184AB6: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184AC6 + adds r0, r4, #0 + bl sub_0818478C +_08184AC6: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184AE8 + adds r0, r4, #0 + bl sub_081847E0 +_08184AE8: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184A8C + + thumb_func_start sub_08184AF4 +sub_08184AF4: @ 0x08184AF4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184B1E + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0xa + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #2 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + strh r0, [r4, #0x30] +_08184B1E: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184B2E + adds r0, r4, #0 + bl sub_0818478C +_08184B2E: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184B50 + adds r0, r4, #0 + bl sub_081847E0 +_08184B50: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08184AF4 + + thumb_func_start sub_08184B5C +sub_08184B5C: @ 0x08184B5C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184B88 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x14 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + movs r0, #2 + strh r0, [r4, #0x30] +_08184B88: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184B98 + adds r0, r4, #0 + bl sub_0818478C +_08184B98: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184BBA + adds r0, r4, #0 + bl sub_081847E0 +_08184BBA: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184B5C + + thumb_func_start sub_08184BC8 +sub_08184BC8: @ 0x08184BC8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _08184BF4 + ldrb r0, [r4, #5] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r4, #0x3c] + movs r0, #0x50 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x38] + movs r0, #1 + strh r0, [r4, #0x36] + strh r2, [r4, #0x34] + movs r0, #2 + strh r0, [r4, #0x30] +_08184BF4: + ldrh r0, [r4, #0x32] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08184C04 + adds r0, r4, #0 + bl sub_0818478C +_08184C04: + movs r0, #0x32 + ldrsh r2, [r4, r0] + movs r3, #0x2e + ldrsh r1, [r4, r3] + movs r3, #0x36 + ldrsh r0, [r4, r3] + muls r1, r0, r1 + movs r0, #0x80 + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + cmp r2, r0 + blt _08184C26 + adds r0, r4, #0 + bl sub_081847E0 +_08184C26: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08184BC8 + + thumb_func_start sub_08184C34 +sub_08184C34: @ 0x08184C34 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08184C48 + ldr r0, _08184C4C + str r0, [r2, #0x1c] +_08184C48: + pop {r0} + bx r0 + .align 2, 0 +_08184C4C: .4byte sub_08007140 + thumb_func_end sub_08184C34 + + thumb_func_start sub_08184C50 +sub_08184C50: @ 0x08184C50 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + ldr r0, _08184CDC + mov r1, ip + strb r1, [r0] + ldr r1, _08184CE0 + movs r0, #0 + strb r0, [r1] + movs r2, #0 + movs r7, #0 + ldr r3, _08184CE4 + mov sl, r3 + ldr r6, _08184CE8 + mov sb, r6 + ldr r0, _08184CEC + mov r8, r0 +_08184C7C: + lsls r0, r2, #1 + mov r3, sb + adds r1, r0, r3 + strh r7, [r1] + ldr r6, _08184CF0 + adds r1, r0, r6 + strh r7, [r1] + ldr r1, _08184CF4 + adds r0, r0, r1 + strh r7, [r0] + adds r4, r2, #1 + mov r3, ip + cmp r3, #1 + bne _08184CC8 + ldr r5, _08184CF8 + movs r3, #0xff + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r2, #0 + muls r0, r1, r0 + mov r6, r8 + adds r2, r0, r6 +_08184CA8: + ldrb r0, [r2] + orrs r0, r3 + strb r0, [r2] + adds r2, #1 + subs r1, #1 + cmp r1, #0 + bne _08184CA8 + ldr r0, [r5] + ldr r1, _08184CFC + str r0, [r1] + ldr r3, _08184D00 + ldr r0, [r3] + ldr r0, [r0, #0x14] + ldr r0, [r0, #0xc] + mov r6, sl + str r0, [r6] +_08184CC8: + adds r2, r4, #0 + cmp r2, #3 + ble _08184C7C + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08184CDC: .4byte gUnknown_203C478 +_08184CE0: .4byte gUnknown_203C99C +_08184CE4: .4byte gUnknown_203C488 +_08184CE8: .4byte gUnknown_203C460 +_08184CEC: .4byte gUnknown_203BA00 +_08184CF0: .4byte gUnknown_203C468 +_08184CF4: .4byte gUnknown_203C470 +_08184CF8: .4byte gUnknown_2022C90 +_08184CFC: .4byte gUnknown_203C484 +_08184D00: .4byte gUnknown_202414C + thumb_func_end sub_08184C50 + + thumb_func_start sub_08184D04 +sub_08184D04: @ 0x08184D04 + push {r4, r5, r6, r7, lr} + ldr r0, _08184D2C + ldrb r0, [r0] + cmp r0, #1 + bne _08184D44 + ldr r1, _08184D30 + ldr r0, _08184D34 + ldr r0, [r0] + str r0, [r1] + ldr r4, _08184D38 + ldr r0, _08184D3C + bl sub_0809CF6C + strb r0, [r4] + ldr r4, _08184D40 + bl sub_081A4D2C + strb r0, [r4] + b _08184D50 + .align 2, 0 +_08184D2C: .4byte gUnknown_203C478 +_08184D30: .4byte gUnknown_203B9F8 +_08184D34: .4byte gUnknown_3005AE0 +_08184D38: .4byte gUnknown_203C47A +_08184D3C: .4byte 0x000040CF +_08184D40: .4byte gUnknown_203C47B +_08184D44: + cmp r0, #2 + bne _08184D50 + ldr r0, _08184DB4 + ldr r1, _08184DB8 + ldr r1, [r1] + str r1, [r0] +_08184D50: + ldr r0, _08184DBC + ldr r5, [r0] + movs r0, #2 + ands r5, r0 + cmp r5, #0 + beq _08184DCC + bl sub_0800A02C + ldr r1, _08184DC0 + strb r0, [r1] + movs r5, #0 + ldr r7, _08184DC4 + ldr r6, _08184DC8 +_08184D6A: + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r3, r4, r7 + lsls r2, r5, #3 + subs r2, r2, r5 + lsls r2, r2, #2 + adds r0, r6, #4 + adds r0, r2, r0 + ldr r0, [r0] + str r0, [r3] + adds r1, r2, r6 + ldrb r0, [r1, #0x13] + strb r0, [r3, #0xc] + ldrh r0, [r1, #0x18] + strh r0, [r3, #0xe] + ldrh r0, [r1, #0x1a] + strh r0, [r3, #0x10] + adds r3, r5, #1 + adds r0, r6, #0 + adds r0, #8 + adds r2, r2, r0 + adds r0, r7, #4 + adds r4, r4, r0 + movs r1, #7 +_08184D9C: + ldrb r0, [r2] + strb r0, [r4] + adds r2, #1 + adds r4, #1 + subs r1, #1 + cmp r1, #0 + bge _08184D9C + adds r5, r3, #0 + cmp r5, #3 + ble _08184D6A + b _08184E08 + .align 2, 0 +_08184DB4: .4byte gUnknown_3005AE0 +_08184DB8: .4byte gUnknown_203B9F8 +_08184DBC: .4byte gUnknown_2022C90 +_08184DC0: .4byte gUnknown_203C480 +_08184DC4: .4byte gUnknown_203C94C +_08184DC8: .4byte gUnknown_20226A0 +_08184DCC: + ldr r3, _08184E10 + ldr r4, _08184E14 + ldr r2, [r4] + ldrb r1, [r2, #0xa] + ldrb r0, [r2, #0xb] + lsls r0, r0, #8 + orrs r1, r0 + ldrb r0, [r2, #0xc] + lsls r0, r0, #0x10 + orrs r1, r0 + ldrb r0, [r2, #0xd] + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + ldrb r0, [r2, #8] + strb r0, [r3, #0xc] + strh r5, [r3, #0xe] + ldr r0, _08184E18 + ldrb r0, [r0] + strh r0, [r3, #0x10] + movs r5, #0 + adds r3, #4 +_08184DF8: + adds r0, r5, r3 + ldr r1, [r4] + adds r1, r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r5, #1 + cmp r5, #7 + ble _08184DF8 +_08184E08: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08184E10: .4byte gUnknown_203C94C +_08184E14: .4byte gUnknown_3005AF0 +_08184E18: .4byte gUnknown_829BDA5 + thumb_func_end sub_08184D04 + + thumb_func_start sub_08184E1C +sub_08184E1C: @ 0x08184E1C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r1, _08184E58 + lsls r0, r5, #1 + adds r4, r0, r1 + ldrh r2, [r4] + adds r3, r2, #0 + ldr r0, _08184E5C + cmp r3, r0 + bhi _08184E50 + ldr r0, _08184E60 + ldrb r0, [r0] + cmp r0, #2 + beq _08184E50 + ldr r1, _08184E64 + adds r0, r2, #1 + strh r0, [r4] + movs r0, #0xa6 + lsls r0, r0, #2 + muls r0, r5, r0 + adds r0, r3, r0 + adds r0, r0, r1 + strb r6, [r0] +_08184E50: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08184E58: .4byte gUnknown_203C460 +_08184E5C: .4byte 0x00000297 +_08184E60: .4byte gUnknown_203C478 +_08184E64: .4byte gUnknown_203BA00 + thumb_func_end sub_08184E1C + + thumb_func_start sub_08184E68 +sub_08184E68: @ 0x08184E68 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r3, #0 + cmp r3, r4 + bge _08184EA6 + ldr r0, _08184EAC + lsls r1, r5, #1 + adds r2, r1, r0 + ldr r7, _08184EB0 + movs r0, #0xa6 + lsls r0, r0, #2 + muls r5, r0, r5 + movs r6, #0xff +_08184E88: + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + ldrh r1, [r2] + adds r1, r1, r5 + adds r1, r1, r7 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + ldrh r0, [r2] + cmp r0, #0 + beq _08184EA6 + adds r3, #1 + cmp r3, r4 + blt _08184E88 +_08184EA6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08184EAC: .4byte gUnknown_203C460 +_08184EB0: .4byte gUnknown_203BA00 + thumb_func_end sub_08184E68 + + thumb_func_start sub_08184EB4 +sub_08184EB4: @ 0x08184EB4 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, _08184F04 + lsls r0, r3, #1 + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _08184F08 + cmp r1, r0 + bhi _08184EDA + ldr r4, _08184F0C + adds r0, #1 + muls r3, r0, r3 + adds r0, r1, r3 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xff + bne _08184F1C +_08184EDA: + ldr r2, _08184F10 + ldr r1, _08184F14 + movs r0, #5 + strb r0, [r1] + movs r0, #5 + strh r0, [r2] + bl sub_080A1898 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _08184F18 + bl sub_08000540 + movs r0, #0xff + b _08184F26 + .align 2, 0 +_08184F04: .4byte gUnknown_203C460 +_08184F08: .4byte 0x00000297 +_08184F0C: .4byte gUnknown_203BA00 +_08184F10: .4byte gUnknown_2037290 +_08184F14: .4byte gUnknown_2023FDE +_08184F18: .4byte sub_080381C0 +_08184F1C: + adds r0, r1, #1 + strh r0, [r2] + adds r0, r1, r3 + adds r0, r0, r4 + ldrb r0, [r0] +_08184F26: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08184EB4 + + thumb_func_start sub_08184F30 +sub_08184F30: @ 0x08184F30 + ldr r0, _08184F38 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08184F38: .4byte gUnknown_203C478 + thumb_func_end sub_08184F30 + + thumb_func_start sub_08184F3C +sub_08184F3C: @ 0x08184F3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + movs r7, #0 + movs r0, #0 + mov ip, r0 +_08184F50: + mov r1, ip + lsls r3, r1, #1 + ldr r0, _08184FFC + adds r5, r3, r0 + ldr r1, _08185000 + adds r6, r3, r1 + ldrh r0, [r5] + mov sb, r3 + mov r1, ip + adds r1, #1 + str r1, [sp] + ldrh r1, [r6] + cmp r0, r1 + beq _08184FDE + adds r1, r7, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r2, r7, #0 + add r1, r8 + mov r0, ip + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + add r2, r8 + ldrb r0, [r5] + ldrb r1, [r6] + subs r0, r0, r1 + strb r0, [r2] + movs r4, #0 + ldrh r0, [r5] + ldrh r1, [r6] + subs r0, r0, r1 + cmp r4, r0 + bge _08184FD2 + ldr r1, _08185004 + mov sl, r1 + ldr r6, _08185000 + movs r0, #0xa6 + lsls r0, r0, #2 + mov r5, ip + muls r5, r0, r5 +_08184FA6: + adds r1, r7, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + add r1, r8 + adds r2, r3, r6 + ldrh r0, [r2] + adds r0, r0, r4 + adds r0, r0, r5 + add r0, sl + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08184FFC + adds r0, r3, r1 + ldrh r1, [r0] + ldrh r0, [r2] + subs r1, r1, r0 + cmp r4, r1 + blt _08184FA6 +_08184FD2: + ldr r0, _08185000 + add r0, sb + ldr r1, _08184FFC + add r1, sb + ldrh r1, [r1] + strh r1, [r0] +_08184FDE: + ldr r1, [sp] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #3 + bls _08184F50 + adds r0, r7, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08184FFC: .4byte gUnknown_203C460 +_08185000: .4byte gUnknown_203C468 +_08185004: .4byte gUnknown_203BA00 + thumb_func_end sub_08184F3C + + thumb_func_start sub_08185008 +sub_08185008: @ 0x08185008 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + movs r1, #2 + mov r0, sp + strb r1, [r0] + ldr r0, _08185028 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _081850BE + movs r5, #0 + ldr r4, _0818502C + b _0818503A + .align 2, 0 +_08185028: .4byte gUnknown_2022C90 +_0818502C: .4byte gUnknown_20226A0 +_08185030: + ldrb r0, [r4] + cmp r0, #3 + bne _081850BE + adds r4, #0x1c + adds r5, #1 +_0818503A: + bl sub_08009B64 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + blt _08185030 + ldr r0, _081850CC + ldr r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _081850BE + ldrb r0, [r7] + mov r4, sp + adds r4, #1 + strb r0, [r4] + ldrb r0, [r4] + mov r8, r4 + cmp r0, #0 + beq _081850BE +_08185062: + adds r0, r7, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_081850D8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r7, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_081850D8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _081850B6 + ldr r3, _081850D0 + ldr r0, _081850D4 + lsls r1, r6, #1 + adds r4, r1, r0 + adds r5, r2, #0 + movs r0, #0xa6 + lsls r0, r0, #2 + muls r6, r0, r6 +_08185092: + adds r0, r7, #0 + mov r1, sp + mov r2, r8 + str r3, [sp, #4] + bl sub_081850D8 + ldrh r1, [r4] + adds r2, r1, #1 + strh r2, [r4] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r1, r1, r6 + ldr r3, [sp, #4] + adds r1, r1, r3 + strb r0, [r1] + subs r5, #1 + cmp r5, #0 + bne _08185092 +_081850B6: + mov r4, r8 + ldrb r0, [r4] + cmp r0, #0 + bne _08185062 +_081850BE: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081850CC: .4byte gUnknown_2022C90 +_081850D0: .4byte gUnknown_203BA00 +_081850D4: .4byte gUnknown_203C470 + thumb_func_end sub_08185008 + + thumb_func_start sub_081850D8 +sub_081850D8: @ 0x081850D8 + ldrb r3, [r2] + subs r3, #1 + strb r3, [r2] + ldrb r2, [r1] + adds r3, r2, #1 + strb r3, [r1] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r0, r2 + ldrb r0, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_081850D8 + + thumb_func_start sub_081850F0 +sub_081850F0: @ 0x081850F0 + push {r4, r5, lr} + movs r0, #0xf8 + lsls r0, r0, #4 + bl sub_08000BDC + adds r4, r0, #0 + bl sub_08185844 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08000BF0 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081850F0 + + thumb_func_start sub_08185110 +sub_08185110: @ 0x08185110 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _0818513C + adds r0, r5, r1 + ldr r1, [r0] + cmp r1, #0 + beq _08185148 + ldr r0, _08185140 + ands r1, r0 + cmp r1, #0 + bne _08185148 + ldr r4, _08185144 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806F3F0 + adds r4, r5, r4 + ldr r1, [r4] + cmp r0, r1 + bne _08185148 + movs r0, #1 + b _0818514A + .align 2, 0 +_0818513C: .4byte 0x000004EC +_08185140: .4byte 0x7D007E92 +_08185144: .4byte 0x00000F7C +_08185148: + movs r0, #0 +_0818514A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08185110 + + thumb_func_start sub_08185150 +sub_08185150: @ 0x08185150 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r5, #0 + movs r1, #0 + bl memset + movs r2, #0xf8 + lsls r2, r2, #4 + adds r0, r5, #0 + adds r1, r4, #0 + bl memcpy + ldr r4, _0818518C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806F3F0 + adds r4, r5, r4 + str r0, [r4] + movs r0, #0x1f + adds r1, r5, #0 + bl sub_08153570 + cmp r0, #1 + bne _08185190 + movs r0, #1 + b _08185192 + .align 2, 0 +_0818518C: .4byte 0x00000F7C +_08185190: + movs r0, #0 +_08185192: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08185150 + + thumb_func_start sub_08185198 +sub_08185198: @ 0x08185198 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + movs r0, #0 + str r0, [sp, #4] + movs r0, #0xf8 + lsls r0, r0, #4 + bl sub_08000BDC + adds r7, r0, #0 + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + str r0, [sp] + movs r6, #0 +_081851BE: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + adds r5, r7, r4 + ldr r1, _08185290 + adds r1, r4, r1 + adds r0, r5, #0 + movs r2, #0x64 + bl memcpy + movs r1, #0x96 + lsls r1, r1, #2 + adds r5, r5, r1 + ldr r0, _08185294 + adds r4, r4, r0 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy + adds r6, #1 + cmp r6, #5 + ble _081851BE + movs r6, #0 + ldr r2, _08185298 + mov sl, r2 + movs r3, #0x9a + lsls r3, r3, #3 + adds r3, r7, r3 + str r3, [sp, #8] + ldr r5, _0818529C + mov r8, r6 + mov ip, r6 + movs r0, #0x96 + lsls r0, r0, #3 + adds r0, r0, r7 + mov sb, r0 + ldr r1, _081852A0 + adds r4, r7, r1 +_0818520C: + lsls r1, r6, #3 + ldr r0, _0818529C + adds r0, #4 + mov r3, r8 + adds r2, r3, r0 + add r1, sb + movs r3, #7 +_0818521A: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bge _0818521A + ldr r0, [sp, #8] + adds r1, r0, r6 + ldrb r0, [r5, #0xc] + strb r0, [r1] + ldrh r0, [r5, #0x10] + strb r0, [r4] + ldrh r0, [r5, #0xe] + strb r0, [r4, #0xc] + ldr r1, _081852A4 + adds r0, r7, r1 + add r0, ip + ldr r1, [r5] + str r1, [r0] + adds r5, #0x14 + movs r2, #0x14 + add r8, r2 + movs r3, #4 + add ip, r3 + adds r4, #1 + adds r6, #1 + cmp r6, #3 + ble _0818520C + movs r5, #0x9d + lsls r5, r5, #3 + adds r1, r7, r5 + ldr r2, _081852A8 + ldr r0, [r2] + str r0, [r1] + ldr r3, _081852AC + ldr r2, [r3] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _08185338 + adds r5, #4 + adds r3, r7, r5 + movs r1, #0x23 + rsbs r1, r1, #0 + ands r1, r2 + movs r0, #0x80 + lsls r0, r0, #0x12 + orrs r1, r0 + str r1, [r3] + movs r0, #4 + ands r0, r2 + cmp r0, #0 + beq _081852B0 + movs r0, #0x80 + lsls r0, r0, #0x18 + orrs r1, r0 + str r1, [r3] + b _0818533E + .align 2, 0 +_08185290: .4byte gUnknown_203C48C +_08185294: .4byte gUnknown_203C6E4 +_08185298: .4byte gUnknown_3005AF0 +_0818529C: .4byte gUnknown_203C94C +_081852A0: .4byte 0x000004E4 +_081852A4: .4byte 0x000004D4 +_081852A8: .4byte gUnknown_203B9F8 +_081852AC: .4byte gUnknown_203C484 +_081852B0: + movs r0, #0x40 + ands r2, r0 + cmp r2, #0 + beq _0818533E + ldr r1, _081852CC + ldrh r0, [r1, #0xe] + cmp r0, #1 + beq _08185304 + cmp r0, #1 + bgt _081852D0 + cmp r0, #0 + beq _081852DA + b _0818533E + .align 2, 0 +_081852CC: .4byte gUnknown_203C94C +_081852D0: + cmp r0, #2 + beq _081852DA + cmp r0, #3 + beq _08185304 + b _0818533E +_081852DA: + ldr r2, _081852F8 + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _081852FC + adds r0, r0, r3 + ldrh r1, [r0, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0818533E + ldr r5, _08185300 + adds r0, r7, r5 + b _08185320 + .align 2, 0 +_081852F8: .4byte gUnknown_203C480 +_081852FC: .4byte gUnknown_203C94C +_08185300: .4byte 0x000004EC +_08185304: + ldr r0, _0818532C + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08185330 + adds r0, r0, r1 + ldrh r1, [r0, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0818533E + ldr r2, _08185334 + adds r0, r7, r2 +_08185320: + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #0x18 + orrs r1, r2 + str r1, [r0] + b _0818533E + .align 2, 0 +_0818532C: .4byte gUnknown_203C480 +_08185330: .4byte gUnknown_203C94C +_08185334: .4byte 0x000004EC +_08185338: + ldr r3, _0818546C + adds r0, r7, r3 + str r2, [r0] +_0818533E: + ldr r5, _08185470 + ldrh r1, [r5] + ldr r2, _08185474 + adds r0, r7, r2 + strh r1, [r0] + ldr r3, _08185478 + ldrh r1, [r3] + ldr r5, _0818547C + adds r0, r7, r5 + strh r1, [r0] + ldr r0, _08185480 + ldrh r1, [r0] + adds r2, #4 + adds r0, r7, r2 + strh r1, [r0] + ldr r3, _08185484 + ldrb r1, [r3] + adds r5, #4 + adds r0, r7, r5 + strh r1, [r0] + mov r1, sl + ldr r0, [r1] + ldr r2, _08185488 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r3, _0818548C + adds r1, r7, r3 + strb r0, [r1] + ldr r5, _08185490 + ldrb r1, [r5] + ldr r2, _08185494 + adds r0, r7, r2 + strb r1, [r0] + ldr r3, _08185498 + ldrb r1, [r3] + ldr r5, _0818549C + adds r0, r7, r5 + strb r1, [r0] + mov r1, sl + ldr r0, [r1] + ldrb r1, [r0, #0x15] + lsls r1, r1, #0x1d + adds r2, #2 + adds r3, r7, r2 + lsrs r1, r1, #0x1f + ldrb r2, [r3] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + mov r5, sl + ldr r1, [r5] + ldrb r1, [r1, #0x14] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1c + movs r2, #0xf + rsbs r2, r2, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #0xa0 + lsls r0, r0, #3 + adds r1, r7, r0 + ldr r2, _081854A0 + ldr r0, [r2] + str r0, [r1] + ldr r3, _081854A4 + adds r1, r3, #0 + ldr r5, _08185470 + ldrh r5, [r5] + adds r0, r1, r5 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x63 + bls _081853DC + b _08185500 +_081853DC: + movs r6, #0 + ldr r0, _081854A8 + adds r3, r7, r0 + mov sb, sl + ldr r1, _08185470 + mov ip, r1 + ldr r2, _081854A4 + mov r8, r2 + ldr r4, _081854AC +_081853EE: + adds r2, r3, r6 + mov r5, sb + ldr r1, [r5] + mov r5, ip + ldrh r0, [r5] + add r0, r8 + movs r5, #0xec + muls r0, r5, r0 + adds r0, r6, r0 + adds r1, r1, r4 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + adds r6, #1 + cmp r6, #7 + ble _081853EE + mov r0, sl + ldr r2, [r0] + ldr r1, _08185470 + ldrh r0, [r1] + ldr r3, _081854A4 + adds r0, r0, r3 + movs r1, #0xec + muls r0, r1, r0 + adds r2, r2, r0 + ldr r5, _081854B0 + adds r2, r2, r5 + ldrb r1, [r2] + ldr r2, _081854B4 + adds r0, r7, r2 + strb r1, [r0] + ldr r5, _081854B8 + ldrb r0, [r5] + cmp r0, #1 + bne _081854C0 + movs r6, #0 + ldr r0, _081854BC + adds r4, r7, r0 + mov sb, sl + ldr r1, _08185470 + mov r8, r1 + adds r5, r3, #0 +_08185442: + lsls r3, r6, #1 + mov r0, sb + ldr r2, [r0] + mov r1, r8 + ldrh r0, [r1] + adds r0, r0, r5 + movs r1, #0xec + muls r0, r1, r0 + adds r3, r3, r0 + movs r0, #0xec + lsls r0, r0, #3 + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _08185442 + b _0818565A + .align 2, 0 +_0818546C: .4byte 0x000004EC +_08185470: .4byte gUnknown_203886A +_08185474: .4byte 0x000004F4 +_08185478: .4byte gUnknown_203886C +_0818547C: .4byte 0x000004F6 +_08185480: .4byte gUnknown_203886E +_08185484: .4byte gUnknown_203C480 +_08185488: .4byte 0x00000CA9 +_0818548C: .4byte 0x000004FC +_08185490: .4byte gUnknown_203C47A +_08185494: .4byte 0x000004FD +_08185498: .4byte gUnknown_203C47B +_0818549C: .4byte 0x000004FE +_081854A0: .4byte gUnknown_203C488 +_081854A4: .4byte 0xFFFFFED4 +_081854A8: .4byte 0x00000504 +_081854AC: .4byte 0x0000073C +_081854B0: .4byte 0x00000739 +_081854B4: .4byte 0x0000050C +_081854B8: .4byte gUnknown_203C9B4 +_081854BC: .4byte 0x0000050E +_081854C0: + movs r6, #0 + ldr r1, _081854F4 + adds r4, r7, r1 + mov sb, sl + ldr r2, _081854F8 + mov r8, r2 + adds r5, r3, #0 +_081854CE: + lsls r3, r6, #1 + mov r0, sb + ldr r2, [r0] + mov r1, r8 + ldrh r0, [r1] + adds r0, r0, r5 + movs r1, #0xec + muls r0, r1, r0 + adds r3, r3, r0 + ldr r0, _081854FC + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _081854CE + b _0818565A + .align 2, 0 +_081854F4: .4byte 0x0000050E +_081854F8: .4byte gUnknown_203886A +_081854FC: .4byte 0x00000754 +_08185500: + ldr r2, _0818559C + ldrh r2, [r2] + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x63 + bhi _081855FC + movs r6, #0 + ldr r5, _081855A0 + adds r3, r7, r5 + mov sb, sl + ldr r0, _0818559C + mov ip, r0 + ldr r1, _081855A4 + mov r8, r1 + ldr r4, _081855A8 +_08185520: + adds r2, r3, r6 + mov r5, sb + ldr r1, [r5] + mov r5, ip + ldrh r0, [r5] + add r0, r8 + movs r5, #0xec + muls r0, r5, r0 + adds r0, r6, r0 + adds r1, r1, r4 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + adds r6, #1 + cmp r6, #7 + ble _08185520 + mov r0, sl + ldr r2, [r0] + ldr r1, _0818559C + ldrh r0, [r1] + ldr r3, _081855A4 + adds r0, r0, r3 + movs r1, #0xec + muls r0, r1, r0 + adds r2, r2, r0 + ldr r5, _081855AC + adds r2, r2, r5 + ldrb r1, [r2] + ldr r2, _081855B0 + adds r0, r7, r2 + strb r1, [r0] + ldr r5, _081855B4 + ldrb r0, [r5] + cmp r0, #1 + bne _081855BC + movs r6, #0 + ldr r0, _081855B8 + adds r4, r7, r0 + mov sb, sl + ldr r1, _0818559C + mov r8, r1 + adds r5, r3, #0 +_08185574: + lsls r3, r6, #1 + mov r0, sb + ldr r2, [r0] + mov r1, r8 + ldrh r0, [r1] + adds r0, r0, r5 + movs r1, #0xec + muls r0, r1, r0 + adds r3, r3, r0 + movs r0, #0xec + lsls r0, r0, #3 + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _08185574 + b _0818565A + .align 2, 0 +_0818559C: .4byte gUnknown_203886C +_081855A0: .4byte 0x00000504 +_081855A4: .4byte 0xFFFFFED4 +_081855A8: .4byte 0x0000073C +_081855AC: .4byte 0x00000739 +_081855B0: .4byte 0x0000050C +_081855B4: .4byte gUnknown_203C9B4 +_081855B8: .4byte 0x0000050E +_081855BC: + movs r6, #0 + ldr r1, _081855F0 + adds r4, r7, r1 + mov sb, sl + ldr r2, _081855F4 + mov r8, r2 + adds r5, r3, #0 +_081855CA: + lsls r3, r6, #1 + mov r0, sb + ldr r2, [r0] + mov r1, r8 + ldrh r0, [r1] + adds r0, r0, r5 + movs r1, #0xec + muls r0, r1, r0 + adds r3, r3, r0 + ldr r0, _081855F8 + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _081855CA + b _0818565A + .align 2, 0 +_081855F0: .4byte 0x0000050E +_081855F4: .4byte gUnknown_203886C +_081855F8: .4byte 0x00000754 +_081855FC: + ldr r2, _081856BC + ldrh r2, [r2] + adds r0, r1, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x63 + bhi _0818565A + movs r6, #0 + ldr r5, _081856C0 + adds r3, r7, r5 + mov sb, sl + ldr r0, _081856BC + mov ip, r0 + ldr r1, _081856C4 + mov r8, r1 + ldr r4, _081856C8 +_0818561C: + adds r2, r3, r6 + mov r5, sb + ldr r1, [r5] + mov r5, ip + ldrh r0, [r5] + add r0, r8 + movs r5, #0xec + muls r0, r5, r0 + adds r0, r6, r0 + adds r1, r1, r4 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + adds r6, #1 + cmp r6, #7 + ble _0818561C + mov r0, sl + ldr r2, [r0] + ldr r1, _081856BC + ldrh r0, [r1] + ldr r3, _081856C4 + adds r0, r0, r3 + movs r1, #0xec + muls r0, r1, r0 + adds r2, r2, r0 + ldr r5, _081856CC + adds r2, r2, r5 + ldrb r1, [r2] + ldr r2, _081856D0 + adds r0, r7, r2 + strb r1, [r0] +_0818565A: + ldr r3, _081856D4 + ldrh r0, [r3] + ldr r1, _081856D8 + cmp r0, r1 + bls _081856E8 + mov r5, sl + ldr r2, [r5] + adds r1, r0, #0 + ldr r3, _081856DC + adds r1, r1, r3 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, #0xdc + ldrb r0, [r2] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + ldr r2, _081856E0 + adds r1, r7, r2 + strb r0, [r1] + movs r6, #0 + ldr r5, _081856E4 + adds r4, r7, r5 + mov sb, sl + ldr r0, _081856D4 + mov r8, r0 + adds r5, r3, #0 +_08185692: + lsls r3, r6, #1 + mov r1, sb + ldr r2, [r1] + mov r0, r8 + ldrh r1, [r0] + adds r1, r1, r5 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + movs r1, #0x82 + lsls r1, r1, #1 + adds r2, r2, r1 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _08185692 + b _08185786 + .align 2, 0 +_081856BC: .4byte gUnknown_203886E +_081856C0: .4byte 0x00000504 +_081856C4: .4byte 0xFFFFFED4 +_081856C8: .4byte 0x0000073C +_081856CC: .4byte 0x00000739 +_081856D0: .4byte 0x0000050C +_081856D4: .4byte gUnknown_203886A +_081856D8: .4byte 0x0000018F +_081856DC: .4byte 0xFFFFFE70 +_081856E0: .4byte 0x0000050D +_081856E4: .4byte 0x0000050E +_081856E8: + ldr r2, _0818574C + ldrh r0, [r2] + cmp r0, r1 + bls _0818575C + mov r3, sl + ldr r2, [r3] + ldr r5, _0818574C + ldrh r1, [r5] + ldr r3, _08185750 + adds r1, r1, r3 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, #0xdc + ldrb r0, [r2] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + ldr r2, _08185754 + adds r1, r7, r2 + strb r0, [r1] + movs r6, #0 + ldr r5, _08185758 + adds r4, r7, r5 + mov sb, sl + ldr r0, _0818574C + mov r8, r0 + adds r5, r3, #0 +_08185720: + lsls r3, r6, #1 + mov r1, sb + ldr r2, [r1] + mov r0, r8 + ldrh r1, [r0] + adds r1, r1, r5 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + movs r1, #0x82 + lsls r1, r1, #1 + adds r2, r2, r1 + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r4] + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _08185720 + b _08185786 + .align 2, 0 +_0818574C: .4byte gUnknown_203886C +_08185750: .4byte 0xFFFFFE70 +_08185754: .4byte 0x0000050D +_08185758: .4byte 0x0000050E +_0818575C: + ldr r2, _081857F8 + ldrh r0, [r2] + cmp r0, r1 + bls _08185786 + mov r3, sl + ldr r2, [r3] + ldr r5, _081857F8 + ldrh r1, [r5] + ldr r0, _081857FC + adds r1, r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, #0xdc + ldrb r0, [r2] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + ldr r2, _08185800 + adds r1, r7, r2 + strb r0, [r1] +_08185786: + movs r6, #0 + ldr r3, _08185804 + mov sl, r3 + ldr r5, _08185808 + mov sb, r5 + movs r0, #0xa6 + lsls r0, r0, #2 + mov r8, r0 + ldr r1, _0818580C + adds r5, r7, r1 +_0818579A: + adds r4, r6, #1 + mov r0, r8 + muls r0, r6, r0 + mov r3, sb + adds r2, r0, r3 + adds r1, r0, r5 + mov r3, sl + adds r3, #1 +_081857AA: + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r1, #1 + subs r3, #1 + cmp r3, #0 + bne _081857AA + adds r6, r4, #0 + cmp r6, #3 + ble _0818579A +_081857BE: + adds r0, r7, #0 + ldr r1, [sp] + bl sub_08185150 + adds r4, r0, #0 + cmp r4, #1 + beq _081857DA + ldr r0, [sp, #4] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + cmp r0, #2 + bls _081857BE +_081857DA: + adds r0, r7, #0 + bl sub_08000BF0 + ldr r0, [sp] + bl sub_08000BF0 + adds r0, r4, #0 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081857F8: .4byte gUnknown_203886E +_081857FC: .4byte 0xFFFFFE70 +_08185800: .4byte 0x0000050D +_08185804: .4byte 0x00000297 +_08185808: .4byte gUnknown_203BA00 +_0818580C: .4byte 0x0000051C + thumb_func_end sub_08185198 + + thumb_func_start sub_08185810 +sub_08185810: @ 0x08185810 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x1f + bl sub_08153518 + cmp r0, #1 + bne _0818583A + movs r2, #0xf8 + lsls r2, r2, #4 + adds r0, r5, #0 + adds r1, r4, #0 + bl memcpy + adds r0, r5, #0 + bl sub_08185110 + cmp r0, #0 + beq _0818583A + movs r0, #1 + b _0818583C +_0818583A: + movs r0, #0 +_0818583C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08185810 + + thumb_func_start sub_08185844 +sub_08185844: @ 0x08185844 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08185810 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08185844 + + thumb_func_start sub_0818586C +sub_0818586C: @ 0x0818586C + push {lr} + ldr r0, _081858B4 + ldr r2, [r0] + ldr r0, _081858B8 + ldrb r0, [r0] + ldr r1, _081858BC + adds r2, r2, r1 + movs r1, #3 + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r1, _081858C0 + movs r0, #0 + strb r0, [r1] + ldr r0, _081858C4 + movs r1, #0 + str r1, [r0] + ldr r0, _081858C8 + strh r1, [r0] + ldr r0, _081858CC + strh r1, [r0] + ldr r0, _081858D0 + strh r1, [r0] + bl sub_08185C54 + ldr r0, _081858D4 + ldr r0, [r0] + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081858B4: .4byte gUnknown_3005AF0 +_081858B8: .4byte gUnknown_203C479 +_081858BC: .4byte 0x00000CA9 +_081858C0: .4byte gUnknown_2023FDE +_081858C4: .4byte gUnknown_2022C90 +_081858C8: .4byte gUnknown_203886A +_081858CC: .4byte gUnknown_203886C +_081858D0: .4byte gUnknown_203886E +_081858D4: .4byte gUnknown_203C47C + thumb_func_end sub_0818586C + + thumb_func_start sub_081858D8 +sub_081858D8: @ 0x081858D8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0818590C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + subs r1, #1 + strh r1, [r0, #8] + lsls r1, r1, #0x10 + cmp r1, #0 + bne _08185906 + ldr r0, _08185910 + ldr r1, _08185914 + str r1, [r0, #8] + ldr r0, _08185918 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_08185906: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818590C: .4byte gUnknown_3005B60 +_08185910: .4byte gUnknown_3002360 +_08185914: .4byte sub_0818586C +_08185918: .4byte sub_080365B4 + thumb_func_end sub_081858D8 + + thumb_func_start sub_0818591C +sub_0818591C: @ 0x0818591C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r0, #0 + bl sub_080676F0 + bl sub_08067710 + movs r6, #0 + ldr r0, _08185B04 + mov r8, r0 +_08185938: + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + mov r1, r8 + adds r0, r4, r1 + adds r5, r7, r4 + adds r1, r5, #0 + movs r2, #0x64 + bl memcpy + ldr r0, _08185B08 + adds r4, r4, r0 + movs r2, #0x96 + lsls r2, r2, #2 + adds r5, r5, r2 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x64 + bl memcpy + adds r6, #1 + cmp r6, #5 + ble _08185938 + movs r6, #0 + ldr r0, _08185B0C + mov r8, r0 + mov r5, r8 + adds r5, #4 + mov sl, r6 + mov sb, r6 + movs r1, #0x96 + lsls r1, r1, #3 + adds r1, r7, r1 + str r1, [sp] + movs r2, #0x9a + lsls r2, r2, #3 + adds r4, r7, r2 +_08185982: + lsls r0, r6, #2 + mov ip, r0 + ldr r3, [sp] + add r3, sb + mov r2, sl + lsls r1, r2, #2 + mov r0, r8 + adds r0, #8 + adds r1, r1, r0 + movs r2, #7 +_08185996: + ldrb r0, [r3] + strb r0, [r1] + adds r3, #1 + adds r1, #1 + subs r2, #1 + cmp r2, #0 + bge _08185996 + ldrb r0, [r4] + strb r0, [r5, #0xf] + ldrb r0, [r4, #0x14] + strh r0, [r5, #0x16] + movs r1, #0x9e + lsls r1, r1, #3 + adds r0, r7, r1 + adds r0, r0, r6 + ldrb r0, [r0] + strh r0, [r5, #0x14] + ldr r2, _08185B10 + adds r0, r7, r2 + add r0, ip + ldr r0, [r0] + str r0, [r5] + adds r5, #0x1c + movs r0, #7 + add sl, r0 + movs r1, #8 + add sb, r1 + adds r4, #1 + adds r6, #1 + cmp r6, #3 + ble _08185982 + adds r2, #0x14 + adds r0, r7, r2 + ldr r0, [r0] + ldr r1, _08185B14 + str r0, [r1] + adds r2, #4 + adds r0, r7, r2 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + orrs r0, r1 + ldr r1, _08185B18 + str r0, [r1] + adds r2, #8 + adds r0, r7, r2 + ldrh r0, [r0] + ldr r1, _08185B1C + strh r0, [r1] + adds r2, #2 + adds r0, r7, r2 + ldrh r0, [r0] + ldr r1, _08185B20 + strh r0, [r1] + adds r2, #2 + adds r0, r7, r2 + ldrh r0, [r0] + ldr r1, _08185B24 + strh r0, [r1] + adds r2, #2 + adds r0, r7, r2 + ldrh r0, [r0] + ldr r1, _08185B28 + strb r0, [r1] + ldr r2, _08185B2C + ldr r0, [r2] + ldr r1, _08185B30 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r2, _08185B34 + strb r0, [r2] + ldr r1, _08185B38 + adds r0, r7, r1 + ldrb r0, [r0] + ldr r2, _08185B3C + strb r0, [r2] + adds r1, #1 + adds r0, r7, r1 + ldrb r0, [r0] + ldr r2, _08185B40 + strb r0, [r2] + adds r1, #1 + adds r0, r7, r1 + ldrb r1, [r0] + lsls r0, r1, #0x1f + lsrs r0, r0, #0x1f + ldr r2, _08185B44 + strb r0, [r2] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1d + ldr r0, _08185B48 + strb r1, [r0] + movs r1, #0xa0 + lsls r1, r1, #3 + adds r0, r7, r1 + ldr r0, [r0] + ldr r2, _08185B4C + str r0, [r2] + movs r6, #0 + ldr r4, _08185B50 + ldr r0, _08185B54 + adds r3, r7, r0 +_08185A66: + adds r0, r6, r4 + adds r1, r3, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #7 + ble _08185A66 + ldr r1, _08185B58 + adds r0, r7, r1 + ldrb r0, [r0] + ldr r2, _08185B5C + strb r0, [r2] + adds r1, #1 + adds r0, r7, r1 + ldrb r0, [r0] + ldr r2, _08185B60 + strb r0, [r2] + ldr r0, _08185B64 + adds r1, r7, r0 + ldr r3, _08185B68 + movs r6, #5 +_08185A90: + ldrh r0, [r1] + strh r0, [r3] + adds r1, #2 + adds r3, #2 + subs r6, #1 + cmp r6, #0 + bge _08185A90 + ldr r1, _08185B2C + ldr r2, [r1] + ldr r1, _08185B6C + adds r0, r7, r1 + ldrb r0, [r0] + ldr r1, _08185B30 + adds r2, r2, r1 + movs r1, #3 + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + movs r6, #0 + ldr r2, _08185B70 + mov sl, r2 + ldr r0, _08185B74 + mov sb, r0 + movs r1, #0xa6 + lsls r1, r1, #2 + mov r8, r1 + ldr r2, _08185B78 + adds r5, r7, r2 +_08185AD0: + adds r3, r6, #1 + mov r0, r8 + muls r0, r6, r0 + adds r1, r0, r5 + mov r2, sb + adds r4, r0, r2 + mov r2, sl + adds r2, #1 +_08185AE0: + ldrb r0, [r1] + strb r0, [r4] + adds r1, #1 + adds r4, #1 + subs r2, #1 + cmp r2, #0 + bne _08185AE0 + adds r6, r3, #0 + cmp r6, #3 + ble _08185AD0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08185B04: .4byte gUnknown_2024190 +_08185B08: .4byte gUnknown_20243E8 +_08185B0C: .4byte gUnknown_20226A0 +_08185B10: .4byte 0x000004D4 +_08185B14: .4byte gUnknown_203B9F8 +_08185B18: .4byte gUnknown_2022C90 +_08185B1C: .4byte gUnknown_203886A +_08185B20: .4byte gUnknown_203886C +_08185B24: .4byte gUnknown_203886E +_08185B28: .4byte gUnknown_203C480 +_08185B2C: .4byte gUnknown_3005AF0 +_08185B30: .4byte 0x00000CA9 +_08185B34: .4byte gUnknown_203C479 +_08185B38: .4byte 0x000004FD +_08185B3C: .4byte gUnknown_203C47A +_08185B40: .4byte gUnknown_203C47B +_08185B44: .4byte gUnknown_203C482 +_08185B48: .4byte gUnknown_203C483 +_08185B4C: .4byte gUnknown_203C488 +_08185B50: .4byte gUnknown_203C99D +_08185B54: .4byte 0x00000504 +_08185B58: .4byte 0x0000050C +_08185B5C: .4byte gUnknown_203C9A5 +_08185B60: .4byte gUnknown_203C9A6 +_08185B64: .4byte 0x0000050E +_08185B68: .4byte gUnknown_203C9A8 +_08185B6C: .4byte 0x000004FC +_08185B70: .4byte 0x00000297 +_08185B74: .4byte gUnknown_203BA00 +_08185B78: .4byte 0x0000051C + thumb_func_end sub_0818591C + + thumb_func_start sub_08185B7C +sub_08185B7C: @ 0x08185B7C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xf8 + lsls r0, r0, #4 + bl sub_08000BDC + adds r4, r0, #0 + bl sub_08185844 + cmp r0, #1 + bne _08185BC6 + bl sub_08185C10 + adds r0, r4, #0 + bl sub_0818591C + ldr r0, _08185BD4 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08185BD8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0x80 + strh r0, [r1, #8] + ldr r0, _08185BDC + str r5, [r0] + movs r0, #0 + bl sub_0806E0F4 + ldr r0, _08185BE0 + bl sub_08000540 +_08185BC6: + adds r0, r4, #0 + bl sub_08000BF0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08185BD4: .4byte sub_081858D8 +_08185BD8: .4byte gUnknown_3005B60 +_08185BDC: .4byte gUnknown_203C47C +_08185BE0: .4byte sub_08185BE4 + thumb_func_end sub_08185B7C + + thumb_func_start sub_08185BE4 +sub_08185BE4: @ 0x08185BE4 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08185BE4 + + thumb_func_start sub_08185BF8 +sub_08185BF8: @ 0x08185BF8 + ldr r0, _08185C00 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08185C00: .4byte gUnknown_203C47A + thumb_func_end sub_08185BF8 + + thumb_func_start sub_08185C04 +sub_08185C04: @ 0x08185C04 + ldr r0, _08185C0C + ldrb r0, [r0] + bx lr + .align 2, 0 +_08185C0C: .4byte gUnknown_203C47B + thumb_func_end sub_08185C04 + + thumb_func_start sub_08185C10 +sub_08185C10: @ 0x08185C10 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _08185C44 +_08185C16: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + adds r0, r4, r6 + ldr r1, _08185C48 + adds r1, r4, r1 + movs r2, #0x64 + bl memcpy + ldr r0, _08185C4C + adds r0, r4, r0 + ldr r1, _08185C50 + adds r4, r4, r1 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy + adds r5, #1 + cmp r5, #5 + ble _08185C16 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08185C44: .4byte gUnknown_203C48C +_08185C48: .4byte gUnknown_2024190 +_08185C4C: .4byte gUnknown_203C6E4 +_08185C50: .4byte gUnknown_20243E8 + thumb_func_end sub_08185C10 + + thumb_func_start sub_08185C54 +sub_08185C54: @ 0x08185C54 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r6, _08185C88 +_08185C5A: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + adds r0, r4, r6 + ldr r1, _08185C8C + adds r1, r4, r1 + movs r2, #0x64 + bl memcpy + ldr r0, _08185C90 + adds r0, r4, r0 + ldr r1, _08185C94 + adds r4, r4, r1 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy + adds r5, #1 + cmp r5, #5 + ble _08185C5A + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08185C88: .4byte gUnknown_2024190 +_08185C8C: .4byte gUnknown_203C48C +_08185C90: .4byte gUnknown_20243E8 +_08185C94: .4byte gUnknown_203C6E4 + thumb_func_end sub_08185C54 + + thumb_func_start sub_08185C98 +sub_08185C98: @ 0x08185C98 + push {r4, r5, lr} + movs r2, #0 + ldr r0, _08185CC4 + ldr r3, _08185CC8 + ldrh r1, [r0, #0x18] + adds r4, r0, #0 + ldrb r0, [r3] + cmp r1, r0 + beq _08185CBC + adds r1, r4, #0 +_08185CAC: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bgt _08185CBC + ldrh r0, [r1, #0x18] + ldrb r5, [r3] + cmp r0, r5 + bne _08185CAC +_08185CBC: + cmp r2, #4 + bne _08185CCC + movs r0, #0 + b _08185CD6 + .align 2, 0 +_08185CC4: .4byte gUnknown_20226A0 +_08185CC8: .4byte gUnknown_2023D08 +_08185CCC: + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #0x13] +_08185CD6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08185C98 + + thumb_func_start sub_08185CDC +sub_08185CDC: @ 0x08185CDC + ldr r1, _08185CE4 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_08185CE4: .4byte gUnknown_203C481 + thumb_func_end sub_08185CDC + + thumb_func_start sub_08185CE8 +sub_08185CE8: @ 0x08185CE8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _08185D00 + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x1f + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_08185D00: .4byte gUnknown_203C481 + thumb_func_end sub_08185CE8 + + thumb_func_start sub_08185D04 +sub_08185D04: @ 0x08185D04 + ldr r0, _08185D0C + ldrb r0, [r0] + bx lr + .align 2, 0 +_08185D0C: .4byte gUnknown_203C481 + thumb_func_end sub_08185D04 + + thumb_func_start sub_08185D10 +sub_08185D10: @ 0x08185D10 + ldr r0, _08185D18 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08185D18: .4byte gUnknown_203C482 + thumb_func_end sub_08185D10 + + thumb_func_start sub_08185D1C +sub_08185D1C: @ 0x08185D1C + ldr r0, _08185D24 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08185D24: .4byte gUnknown_203C483 + thumb_func_end sub_08185D1C + + thumb_func_start sub_08185D28 +sub_08185D28: @ 0x08185D28 + push {r4, r5, r6, r7, lr} + ldr r4, _08185D7C + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _08185D74 + ldr r0, _08185D80 + ldr r0, [r0] + ldr r1, _08185D84 + ands r0, r1 + cmp r0, #0 + bne _08185D74 + ldr r0, _08185D88 + ldrb r0, [r0] + cmp r0, #2 + beq _08185D74 + movs r3, #0 + ldr r7, _08185D8C + adds r6, r4, #0 + ldr r5, _08185D90 + movs r4, #0x58 +_08185D58: + lsls r2, r3, #1 + ldrb r1, [r6] + lsrs r0, r1, #1 + lsls r0, r0, #3 + adds r0, r2, r0 + adds r0, r0, r7 + muls r1, r4, r1 + adds r2, r2, r1 + adds r2, r2, r5 + ldrh r1, [r2] + strh r1, [r0] + adds r3, #1 + cmp r3, #3 + ble _08185D58 +_08185D74: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08185D7C: .4byte gUnknown_2023D08 +_08185D80: .4byte gUnknown_2022C90 +_08185D84: .4byte gUnknown_2000002 +_08185D88: .4byte gUnknown_203C478 +_08185D8C: .4byte gUnknown_203C93C +_08185D90: .4byte gUnknown_2023D34 + thumb_func_end sub_08185D28 + + thumb_func_start sub_08185D94 +sub_08185D94: @ 0x08185D94 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x50 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, _08185DBC + ldr r0, [r0] + ldr r1, _08185DC0 + ands r0, r1 + cmp r0, #0 + beq _08185DB4 + b _08186154 +_08185DB4: + movs r0, #0 + mov sl, r0 + b _0818614A + .align 2, 0 +_08185DBC: .4byte gUnknown_2022C90 +_08185DC0: .4byte gUnknown_2000002 +_08185DC4: + mov r1, sl + lsls r4, r1, #0x18 + lsrs r5, r4, #0x18 + adds r0, r5, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp, #0x4c] + mov r2, sl + adds r2, #1 + str r2, [sp, #0x38] + cmp r0, #1 + bne _08185DE2 + b _08186146 +_08185DE2: + ldr r3, [sp, #0x24] + cmp r3, #1 + bne _08185E76 + movs r5, #0 + ldr r4, _08185E60 + mov r0, sl + asrs r6, r0, #0x1f + subs r0, r0, r6 + asrs r0, r0, #1 + lsls r0, r0, #3 + adds r2, r0, r4 + movs r1, #0x58 + mov r0, sl + muls r0, r1, r0 + ldr r3, _08185E64 + adds r1, r0, r3 +_08185E02: + ldrh r0, [r1] + ldrh r4, [r2] + cmp r0, r4 + bne _08185E14 + adds r2, #2 + adds r1, #2 + adds r5, #1 + cmp r5, #3 + ble _08185E02 +_08185E14: + cmp r5, #4 + bne _08185E1A + b _08186146 +_08185E1A: + ldr r1, [sp, #0x4c] + lsrs r0, r1, #0x18 + movs r1, #6 + bl sub_08184E1C + movs r5, #0 + ldr r2, _08185E60 + mov r8, r2 + movs r3, #0x58 + mov r7, sl + muls r7, r3, r7 + mov r4, sl + subs r0, r4, r6 + asrs r4, r0, #1 +_08185E36: + movs r2, #0 + lsls r0, r5, #1 + adds r5, #1 + adds r0, r0, r7 + ldr r1, _08185E64 + adds r3, r0, r1 + lsls r0, r4, #3 + mov r6, r8 + adds r1, r0, r6 +_08185E48: + ldrh r0, [r3] + ldrh r6, [r1] + cmp r0, r6 + bne _08185E68 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + ldr r2, [sp, #0x4c] + lsrs r0, r2, #0x18 + bl sub_08184E1C + b _08185E70 + .align 2, 0 +_08185E60: .4byte gUnknown_203C93C +_08185E64: .4byte gUnknown_2023D34 +_08185E68: + adds r1, #2 + adds r2, #1 + cmp r2, #3 + ble _08185E48 +_08185E70: + cmp r5, #3 + ble _08185E36 + b _08186146 +_08185E76: + ldr r3, _08186164 + ldr r1, _08186168 + mov r4, sl + lsls r2, r4, #1 + adds r1, r2, r1 + movs r0, #0xa6 + lsls r0, r0, #2 + mov r6, sl + muls r6, r0, r6 + adds r0, r6, #0 + ldrh r1, [r1] + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0] + str r2, [sp, #0x44] + cmp r0, #6 + beq _08185E9A + b _08186146 +_08185E9A: + adds r0, r5, #0 + bl sub_08184EB4 + movs r5, #0 + mov r0, sp + adds r0, #4 + str r0, [sp, #0x28] + mov r1, sp + adds r1, #0xc + str r1, [sp, #0x30] + mov r2, sp + adds r2, #0x14 + str r2, [sp, #0x34] + mov r3, sp + adds r3, #0x18 + str r3, [sp, #0x3c] + mov r4, sp + adds r4, #8 + str r4, [sp, #0x2c] + mov r6, sl + lsls r6, r6, #3 + str r6, [sp, #0x48] + movs r1, #0x58 + mov r0, sl + muls r0, r1, r0 + ldr r2, _0818616C + adds r0, r0, r2 + adds r6, r0, #0 + adds r6, #0x3b + movs r4, #3 +_08185ED6: + mov r0, sp + adds r3, r0, r5 + ldrb r1, [r6] + lsls r2, r5, #1 + adds r0, r4, #0 + lsls r0, r2 + ands r1, r0 + asrs r1, r2 + strb r1, [r3] + adds r5, #1 + cmp r5, #3 + ble _08185ED6 + movs r5, #0 + ldr r1, _0818616C + mov sb, r1 + movs r2, #0x58 + mov r7, sl + muls r7, r2, r7 + ldr r4, [sp, #0x28] + ldr r6, [sp, #0x30] +_08185EFE: + ldr r3, [sp, #0x4c] + lsrs r0, r3, #0x18 + bl sub_08184EB4 + strb r0, [r4] + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r7 + movs r1, #0xc + add r1, sb + mov r8, r1 + add r0, r8 + ldrh r0, [r0] + strh r0, [r6] + ldr r2, [sp, #0x34] + adds r1, r2, r5 + ldrb r0, [r4] + adds r0, r0, r7 + ldr r3, _08186170 + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, [sp, #0x3c] + adds r1, r0, r5 + ldrb r0, [r4] + add r0, sp + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [sp, #0x2c] + adds r3, r1, r5 + ldr r2, [sp, #0x48] + mov r1, sl + subs r0, r2, r1 + lsls r0, r0, #2 + ldr r2, _08186174 + adds r0, r0, r2 + ldrb r1, [r0, #0x18] + lsrs r1, r1, #4 + ldr r2, _08186178 + lsls r0, r5, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + lsrs r1, r5 + strb r1, [r3] + adds r4, #1 + adds r6, #2 + adds r5, #1 + cmp r5, #3 + ble _08185EFE + movs r5, #0 + movs r3, #0xc + rsbs r3, r3, #0 + add r3, r8 + mov ip, r3 + ldr r4, _08186174 + mov sb, r4 + movs r6, #0x58 + mov r1, sl + muls r1, r6, r1 + mov r0, r8 + adds r0, #0x18 + adds r4, r1, r0 + adds r3, r1, #0 + mov r7, r8 + ldr r6, [sp, #0x34] + ldr r2, [sp, #0x30] +_08185F84: + adds r1, r3, r7 + ldrh r0, [r2] + strh r0, [r1] + adds r0, r6, r5 + ldrb r0, [r0] + strb r0, [r4] + adds r4, #1 + adds r3, #2 + adds r2, #2 + adds r5, #1 + cmp r5, #3 + ble _08185F84 + movs r0, #0x58 + mov r4, sl + muls r4, r0, r4 + mov r1, ip + adds r0, r4, r1 + adds r0, #0x3b + movs r1, #0 + strb r1, [r0] + ldr r2, [sp, #0x48] + mov r6, sl + subs r3, r2, r6 + lsls r3, r3, #2 + mov r0, sb + adds r2, r3, r0 + ldrb r1, [r2, #0x18] + movs r0, #0xf + ands r0, r1 + strb r0, [r2, #0x18] + movs r5, #0 + ldr r1, _0818616C + adds r4, r4, r1 + adds r4, #0x3b + ldr r0, _08186174 + adds r6, r3, r0 +_08185FCC: + ldr r2, [sp, #0x3c] + adds r0, r2, r5 + ldrb r0, [r0] + lsls r1, r5, #1 + lsls r0, r1 + ldrb r1, [r4] + orrs r0, r1 + strb r0, [r4] + ldrb r2, [r6, #0x18] + lsrs r3, r2, #4 + ldr r1, [sp, #0x2c] + adds r0, r1, r5 + ldrb r1, [r0] + lsls r1, r5 + orrs r1, r3 + lsls r1, r1, #4 + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r6, #0x18] + adds r5, #1 + cmp r5, #3 + ble _08185FCC + movs r2, #0x58 + mov r0, sl + muls r0, r2, r0 + mov r1, ip + adds r1, #0x50 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + beq _08186014 + b _08186122 +_08186014: + movs r5, #0 + mov r3, sp + adds r3, #0x20 + str r3, [sp, #0x40] + ldr r0, _0818617C + ldr r4, [sp, #0x44] + adds r6, r4, r0 +_08186022: + ldrh r1, [r6] + movs r0, #0x64 + muls r0, r1, r0 + ldr r4, _08186180 + adds r0, r0, r4 + movs r1, #0x15 + movs r2, #0 + bl sub_0806A058 + mov r1, sp + adds r3, r1, r5 + lsls r2, r5, #1 + movs r1, #3 + lsls r1, r2 + ands r0, r1 + lsrs r0, r2 + strb r0, [r3] + adds r5, #1 + cmp r5, #3 + ble _08186022 + movs r5, #0 + ldr r0, _0818617C + ldr r2, [sp, #0x44] + adds r7, r2, r0 + movs r3, #0x64 + mov sb, r3 + mov r8, r4 + ldr r4, [sp, #0x28] + ldr r6, [sp, #0x30] +_0818605C: + ldrh r0, [r7] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + ldrb r1, [r4] + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + strh r0, [r6] + ldrh r0, [r7] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + add r0, r8 + ldrb r1, [r4] + adds r1, #0x11 + movs r2, #0 + bl sub_0806A058 + ldr r3, [sp, #0x34] + adds r1, r3, r5 + strb r0, [r1] + ldr r0, [sp, #0x3c] + adds r1, r0, r5 + ldrb r0, [r4] + add r0, sp + ldrb r0, [r0] + strb r0, [r1] + adds r4, #1 + adds r6, #2 + adds r5, #1 + cmp r5, #3 + ble _0818605C + movs r5, #0 + ldr r0, _0818617C + ldr r1, [sp, #0x44] + adds r7, r1, r0 + movs r2, #0x64 + mov sb, r2 + ldr r3, _08186180 + mov r8, r3 + ldr r6, [sp, #0x30] + adds r6, #8 + ldr r4, [sp, #0x30] +_081860B8: + ldrh r0, [r7] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + add r0, r8 + adds r1, r5, #0 + adds r1, #0xd + adds r2, r4, #0 + bl sub_0806A774 + ldrh r0, [r7] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + add r0, r8 + adds r1, r5, #0 + adds r1, #0x11 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + adds r5, #1 + cmp r5, #3 + ble _081860B8 + movs r0, #0 + ldr r3, [sp, #0x40] + strb r0, [r3] + movs r5, #0 + ldr r4, _0818617C + ldr r6, _08186180 + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x40] +_081860FA: + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r5, #1 + lsls r1, r0 + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] + adds r5, #1 + cmp r5, #3 + ble _081860FA + ldr r1, [sp, #0x44] + adds r0, r1, r4 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + adds r0, r0, r6 + movs r1, #0x15 + ldr r2, [sp, #0x40] + bl sub_0806A774 +_08186122: + ldr r2, _08186184 + ldr r3, [sp, #0x44] + adds r2, r3, r2 + ldr r0, _08186188 + ldr r0, [r0] + add r0, sl + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #1 + movs r4, #0x58 + mov r1, sl + muls r1, r4, r1 + adds r0, r0, r1 + ldr r1, _0818616C + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] +_08186146: + ldr r6, [sp, #0x38] + mov sl, r6 +_0818614A: + ldr r0, _0818618C + ldrb r0, [r0] + cmp sl, r0 + bge _08186154 + b _08185DC4 +_08186154: + add sp, #0x50 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08186164: .4byte gUnknown_203BA00 +_08186168: .4byte gUnknown_203C460 +_0818616C: .4byte gUnknown_2023D28 +_08186170: .4byte gUnknown_2023D4C +_08186174: .4byte gUnknown_2023F60 +_08186178: .4byte gUnknown_82FACB4 +_0818617C: .4byte gUnknown_2023D12 +_08186180: .4byte gUnknown_2024190 +_08186184: .4byte gUnknown_2023F18 +_08186188: .4byte gUnknown_2024140 +_0818618C: .4byte gUnknown_2023D10 + thumb_func_end sub_08185D94 + + thumb_func_start sub_08186190 +sub_08186190: @ 0x08186190 + ldr r0, _08186198 + ldr r0, [r0] + bx lr + .align 2, 0 +_08186198: .4byte gUnknown_203C488 + thumb_func_end sub_08186190 + + thumb_func_start sub_0818619C +sub_0818619C: @ 0x0818619C + ldr r1, _081861A4 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_081861A4: .4byte gUnknown_203C99C + thumb_func_end sub_0818619C + + thumb_func_start sub_081861A8 +sub_081861A8: @ 0x081861A8 + push {lr} + movs r1, #0 + ldr r0, _081861BC + ldrb r0, [r0] + cmp r0, #0 + bne _081861B6 + movs r1, #1 +_081861B6: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_081861BC: .4byte gUnknown_203C99C + thumb_func_end sub_081861A8 + + thumb_func_start sub_081861C0 +sub_081861C0: @ 0x081861C0 + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r4, _081861DC +_081861C8: + adds r0, r3, r2 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #7 + ble _081861C8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081861DC: .4byte gUnknown_203C99D + thumb_func_end sub_081861C0 + + thumb_func_start sub_081861E0 +sub_081861E0: @ 0x081861E0 + ldr r0, _081861E8 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081861E8: .4byte gUnknown_203C9A5 + thumb_func_end sub_081861E0 + + thumb_func_start sub_081861EC +sub_081861EC: @ 0x081861EC + ldr r0, _081861F4 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081861F4: .4byte gUnknown_203C9A6 + thumb_func_end sub_081861EC + + thumb_func_start sub_081861F8 +sub_081861F8: @ 0x081861F8 + ldr r0, _08186204 + ldr r1, _08186208 + ldrb r1, [r1] + strb r1, [r0] + bx lr + .align 2, 0 +_08186204: .4byte gUnknown_203C9B4 +_08186208: .4byte gUnknown_2023FDE + thumb_func_end sub_081861F8 + + thumb_func_start sub_0818620C +sub_0818620C: @ 0x0818620C + ldr r0, _08186210 + bx lr + .align 2, 0 +_08186210: .4byte gUnknown_203C9A8 + thumb_func_end sub_0818620C + + thumb_func_start sub_08186214 +sub_08186214: @ 0x08186214 + bx lr + .align 2, 0 + thumb_func_end sub_08186214 + + thumb_func_start sub_08186218 +sub_08186218: @ 0x08186218 + ldr r1, _08186228 + ldr r0, _0818622C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186230 + str r1, [r0] + bx lr + .align 2, 0 +_08186228: .4byte gUnknown_3005AC0 +_0818622C: .4byte gUnknown_2023D08 +_08186230: .4byte sub_08186234 + thumb_func_end sub_08186218 + + thumb_func_start sub_08186234 +sub_08186234: @ 0x08186234 + push {lr} + ldr r2, _08186268 + ldr r1, _0818626C + ldr r0, _08186270 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08186280 + ldr r0, _08186274 + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _0818627C + ldr r0, _08186278 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _08186280 + .align 2, 0 +_08186268: .4byte gUnknown_2023D0C +_0818626C: .4byte gUnknown_82FACB4 +_08186270: .4byte gUnknown_2023D08 +_08186274: .4byte gUnknown_2022D08 +_08186278: .4byte gUnknown_85D38F0 +_0818627C: + bl sub_08186ED8 +_08186280: + pop {r0} + bx r0 + thumb_func_end sub_08186234 + + thumb_func_start sub_08186284 +sub_08186284: @ 0x08186284 + push {lr} + ldr r2, _081862AC + ldr r1, _081862B0 + ldr r0, _081862B4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081862B8 + cmp r1, r0 + bne _081862A8 + bl sub_08186ED8 +_081862A8: + pop {r0} + bx r0 + .align 2, 0 +_081862AC: .4byte gUnknown_20205AC +_081862B0: .4byte gUnknown_2023E88 +_081862B4: .4byte gUnknown_2023D08 +_081862B8: .4byte sub_08007140 + thumb_func_end sub_08186284 + + thumb_func_start sub_081862BC +sub_081862BC: @ 0x081862BC + push {lr} + ldr r2, _081862E4 + ldr r1, _081862E8 + ldr r0, _081862EC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081862F0 + cmp r1, r0 + bne _081862E0 + bl sub_08186ED8 +_081862E0: + pop {r0} + bx r0 + .align 2, 0 +_081862E4: .4byte gUnknown_20205AC +_081862E8: .4byte gUnknown_2023E88 +_081862EC: .4byte gUnknown_2023D08 +_081862F0: .4byte sub_08007140 + thumb_func_end sub_081862BC + + thumb_func_start sub_081862F4 +sub_081862F4: @ 0x081862F4 + push {r4, r5, r6, lr} + ldr r5, _0818634C + ldr r6, _08186350 + ldr r4, _08186354 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _08186358 + cmp r1, r0 + bne _08186346 + adds r0, r2, r5 + ldrh r0, [r0, #6] + bl sub_0805DC00 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + bl sub_08186ED8 +_08186346: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818634C: .4byte gUnknown_20205AC +_08186350: .4byte gUnknown_2023E88 +_08186354: .4byte gUnknown_2023D08 +_08186358: .4byte sub_08007140 + thumb_func_end sub_081862F4 + + thumb_func_start sub_0818635C +sub_0818635C: @ 0x0818635C + push {r4, lr} + ldr r4, _0818639C + ldr r1, [r4] + ldr r3, _081863A0 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08186394 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_08186ED8 +_08186394: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818639C: .4byte gUnknown_2024174 +_081863A0: .4byte gUnknown_2023D08 + thumb_func_end sub_0818635C + + thumb_func_start sub_081863A4 +sub_081863A4: @ 0x081863A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + mov sb, r0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081863D0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08186424 + ldr r0, _0818640C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08186424 +_081863D0: + ldr r4, _08186410 + ldr r0, _08186414 + ldr r2, _08186418 + ldrb r3, [r2] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0818641C + mov r8, r2 + cmp r1, r0 + bne _08186490 + ldr r0, _08186420 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08186490 + b _08186496 + .align 2, 0 +_0818640C: .4byte gUnknown_2022C90 +_08186410: .4byte gUnknown_20205AC +_08186414: .4byte gUnknown_3005AD0 +_08186418: .4byte gUnknown_2023D08 +_0818641C: .4byte sub_08007140 +_08186420: .4byte gUnknown_2023E88 +_08186424: + ldr r6, _08186574 + ldr r7, _08186578 + ldr r2, _0818657C + ldrb r3, [r2] + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r6, #0 + adds r5, #0x1c + adds r0, r0, r5 + ldr r4, [r0] + ldr r0, _08186580 + mov r8, r2 + cmp r4, r0 + bne _08186490 + movs r0, #2 + adds r2, r3, #0 + eors r2, r0 + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r4 + bne _08186490 + ldr r4, _08186584 + adds r0, r3, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08186490 + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08186490 + movs r1, #1 + mov sb, r1 +_08186490: + mov r2, sb + cmp r2, #0 + beq _08186566 +_08186496: + mov r6, r8 + ldrb r0, [r6] + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bne _08186542 + ldr r0, _08186588 + mov ip, r0 + ldr r0, [r0] + ldrb r2, [r6] + ldr r5, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r5 + ldrb r1, [r4, #1] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08186566 + movs r7, #2 + adds r1, r7, #0 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #1] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08186566 + ldrb r1, [r4] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + mov r1, ip + ldr r0, [r1] + ldrb r2, [r6] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r0, ip + ldr r2, [r0] + ldrb r0, [r6] + adds r1, r7, #0 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, ip + ldr r2, [r1] + ldrb r0, [r6] + adds r1, r7, #0 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0818658C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 +_08186542: + ldr r0, _08186588 + ldr r0, [r0] + mov r2, r8 + ldrb r1, [r2] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _08186590 + mov r2, r8 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186594 + str r1, [r0] +_08186566: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08186574: .4byte gUnknown_20205AC +_08186578: .4byte gUnknown_3005AD0 +_0818657C: .4byte gUnknown_2023D08 +_08186580: .4byte sub_08007140 +_08186584: .4byte gUnknown_2023E88 +_08186588: .4byte gUnknown_2024174 +_0818658C: .4byte 0x000027F9 +_08186590: .4byte gUnknown_3005AC0 +_08186594: .4byte sub_0818635C + thumb_func_end sub_081863A4 + + thumb_func_start sub_08186598 +sub_08186598: @ 0x08186598 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + mov sb, r0 + mov r8, r0 + ldr r4, _08186750 + ldr r0, [r4] + ldr r7, _08186754 + ldrb r2, [r7] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r5, #0x88 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081865D8 + ldr r0, _08186758 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0818675C + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_081865D8: + ldr r1, [r4] + ldrb r0, [r7] + movs r6, #2 + adds r2, r6, #0 + eors r2, r0 + ldr r1, [r1, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _0818660A + ldr r0, _08186758 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0818675C + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0818660A: + ldr r0, [r4] + ldrb r2, [r7] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4] + movs r5, #8 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081866DA + adds r1, r6, #0 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081866DA + ldrb r1, [r4, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081866C0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08186690 + ldr r0, _08186760 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08186690 + ldr r4, _08186764 + ldrb r0, [r7] + adds r1, r6, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08186758 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0818675C + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + eors r0, r6 + bl sub_08076320 + ldrb r0, [r7] + eors r0, r6 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_08186690: + ldr r5, _08186764 + ldr r4, _08186754 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08186758 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0818675C + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 +_081866C0: + ldr r0, _08186750 + ldr r2, [r0] + ldr r0, _08186754 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] +_081866DA: + ldr r5, _08186750 + ldr r0, [r5] + ldr r4, _08186754 + ldrb r2, [r4] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _08186796 + movs r1, #2 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08186796 + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08186796 + ldr r0, [r5] + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08186778 + ldr r0, _08186760 + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _0818676C + adds r0, r2, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08186778 + ldr r0, _08186768 + bl m4aMPlayContinue + b _08186778 + .align 2, 0 +_08186750: .4byte gUnknown_2024174 +_08186754: .4byte gUnknown_2023D08 +_08186758: .4byte gUnknown_2023D12 +_0818675C: .4byte gUnknown_20243E8 +_08186760: .4byte gUnknown_2022C90 +_08186764: .4byte gUnknown_3005AD0 +_08186768: .4byte gUnknown_30074D0 +_0818676C: + ldr r0, _081867D4 + ldr r1, _081867D8 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_08186778: + ldr r0, _081867DC + ldr r2, [r0] + ldr r0, _081867E0 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + mov sb, r0 +_08186796: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081867F4 + ldr r2, _081867E4 + ldr r0, _081867E8 + ldr r1, _081867E0 + ldrb r4, [r1] + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r3, [r0] + ldr r0, _081867EC + cmp r3, r0 + bne _08186852 + ldr r0, _081867F0 + adds r0, r4, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r3 + bne _08186852 + b _0818684E + .align 2, 0 +_081867D4: .4byte gUnknown_30074D0 +_081867D8: .4byte 0x0000FFFF +_081867DC: .4byte gUnknown_2024174 +_081867E0: .4byte gUnknown_2023D08 +_081867E4: .4byte gUnknown_20205AC +_081867E8: .4byte gUnknown_3005ADC +_081867EC: .4byte sub_08007140 +_081867F0: .4byte gUnknown_2023E88 +_081867F4: + ldr r2, _08186948 + ldr r7, _0818694C + ldr r0, _08186950 + ldrb r3, [r0] + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _08186954 + cmp r4, r0 + bne _08186852 + ldr r6, _08186958 + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r5, [r0] + cmp r5, r4 + bne _08186852 + movs r0, #2 + eors r3, r0 + adds r0, r3, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r4, [r0] + cmp r4, r5 + bne _08186852 + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _08186852 +_0818684E: + movs r0, #1 + mov r8, r0 +_08186852: + mov r0, sb + cmp r0, #0 + beq _0818693C + mov r0, r8 + cmp r0, #0 + beq _0818693C + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081868B6 + ldr r0, _0818695C + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081868B6 + ldr r1, _0818694C + ldr r5, _08186950 + ldrb r0, [r5] + movs r4, #2 + eors r0, r4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08186948 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r0, [r5] + eors r4, r0 + ldr r1, _08186960 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08186964 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 +_081868B6: + ldr r1, _0818694C + ldr r4, _08186950 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08186948 + adds r0, r0, r1 + bl sub_08006E00 + ldrb r5, [r4] + ldr r1, _08186960 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08186964 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_0805EA70 + ldr r3, _08186968 + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _0818696C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186970 + str r1, [r0] +_0818693C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08186948: .4byte gUnknown_20205AC +_0818694C: .4byte gUnknown_3005ADC +_08186950: .4byte gUnknown_2023D08 +_08186954: .4byte sub_08007140 +_08186958: .4byte gUnknown_2023E88 +_0818695C: .4byte gUnknown_2022C90 +_08186960: .4byte gUnknown_2023D12 +_08186964: .4byte gUnknown_20243E8 +_08186968: .4byte gUnknown_2024174 +_0818696C: .4byte gUnknown_3005AC0 +_08186970: .4byte sub_081863A4 + thumb_func_end sub_08186598 + + thumb_func_start sub_08186974 +sub_08186974: @ 0x08186974 + push {r4, r5, r6, r7, lr} + ldr r4, _081869D0 + ldr r0, _081869D4 + ldr r7, _081869D8 + ldrb r3, [r7] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _081869DC + cmp r1, r0 + bne _08186A26 + adds r0, r2, r4 + movs r1, #0x24 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08186A26 + ldr r6, _081869E0 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r4, r3, #1 + adds r0, r4, r3 + lsls r0, r0, #2 + adds r2, r0, r1 + ldrb r5, [r2] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + bne _081869EC + ldr r0, _081869E4 + adds r0, r4, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081869E8 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 + b _08186A26 + .align 2, 0 +_081869D0: .4byte gUnknown_20205AC +_081869D4: .4byte gUnknown_2023E88 +_081869D8: .4byte gUnknown_2023D08 +_081869DC: .4byte sub_08007140 +_081869E0: .4byte gUnknown_2024174 +_081869E4: .4byte gUnknown_2023D12 +_081869E8: .4byte gUnknown_20243E8 +_081869EC: + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08186A26 + movs r0, #0x7f + ands r0, r5 + strb r0, [r2] + ldr r0, [r6] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _08186A2C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + bl sub_08186ED8 +_08186A26: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08186A2C: .4byte 0x000027F9 + thumb_func_end sub_08186974 + + thumb_func_start sub_08186A30 +sub_08186A30: @ 0x08186A30 + push {r4, r5, r6, lr} + ldr r6, _08186A70 + ldrb r0, [r6] + ldr r5, _08186A74 + adds r1, r0, r5 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08186A78 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _08186A7C + .align 2, 0 +_08186A70: .4byte gUnknown_2023D08 +_08186A74: .4byte gUnknown_3005AD0 +_08186A78: + bl sub_08186ED8 +_08186A7C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08186A30 + + thumb_func_start sub_08186A84 +sub_08186A84: @ 0x08186A84 + push {lr} + ldr r2, _08186AB8 + ldr r0, _08186ABC + ldr r1, _08186AC0 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _08186AB2 + ldr r0, _08186AC4 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08186ED8 +_08186AB2: + pop {r0} + bx r0 + .align 2, 0 +_08186AB8: .4byte gUnknown_20205AC +_08186ABC: .4byte gUnknown_2023E88 +_08186AC0: .4byte gUnknown_2023D08 +_08186AC4: .4byte gUnknown_3005AD0 + thumb_func_end sub_08186A84 + + thumb_func_start sub_08186AC8 +sub_08186AC8: @ 0x08186AC8 + push {r4, r5, r6, lr} + ldr r0, _08186B28 + ldr r0, [r0] + ldr r6, _08186B2C + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08186B22 + ldr r5, _08186B30 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08186B34 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _08186B38 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08186ED8 +_08186B22: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08186B28: .4byte gUnknown_2024174 +_08186B2C: .4byte gUnknown_2023D08 +_08186B30: .4byte gUnknown_2023E88 +_08186B34: .4byte gUnknown_20205AC +_08186B38: .4byte gUnknown_3005AD0 + thumb_func_end sub_08186AC8 + + thumb_func_start sub_08186B3C +sub_08186B3C: @ 0x08186B3C + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08186B4E + bl sub_08186ED8 +_08186B4E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08186B3C + + thumb_func_start sub_08186B54 +sub_08186B54: @ 0x08186B54 + push {r4, lr} + ldr r1, _08186B90 + ldr r0, _08186B94 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _08186B98 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _08186BA0 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _08186B9C + strb r3, [r0] + bl sub_08186ED8 + b _08186BCA + .align 2, 0 +_08186B90: .4byte gUnknown_2023E88 +_08186B94: .4byte gUnknown_2023D08 +_08186B98: .4byte gUnknown_20205AC +_08186B9C: .4byte gUnknown_202415D +_08186BA0: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08186BC4 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08186BC4: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_08186BCA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08186B54 + + thumb_func_start sub_08186BD0 +sub_08186BD0: @ 0x08186BD0 + push {r4, lr} + ldr r2, _08186C24 + ldr r0, _08186C28 + ldr r4, _08186C2C + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08186C30 + cmp r1, r0 + bne _08186C1C + ldr r0, _08186C34 + ldr r0, [r0] + ldr r1, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08186C10 + adds r0, r3, #0 + adds r1, r3, #0 + adds r2, r3, #0 + movs r3, #6 + bl sub_0805D6E0 +_08186C10: + ldr r0, _08186C38 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08186C3C + str r0, [r1] +_08186C1C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08186C24: .4byte gUnknown_20205AC +_08186C28: .4byte gUnknown_3005AD0 +_08186C2C: .4byte gUnknown_2023D08 +_08186C30: .4byte sub_08007140 +_08186C34: .4byte gUnknown_2024174 +_08186C38: .4byte gUnknown_3005AC0 +_08186C3C: .4byte sub_08186C40 + thumb_func_end sub_08186BD0 + + thumb_func_start sub_08186C40 +sub_08186C40: @ 0x08186C40 + push {r4, lr} + ldr r0, _08186CA0 + ldr r0, [r0] + ldr r4, _08186CA4 + ldrb r1, [r4] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08186C9A + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08186C9A + ldr r2, _08186CA8 + ldr r1, _08186CAC + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08186CB0 + cmp r1, r0 + beq _08186C8A + ldr r0, _08186CB4 + cmp r1, r0 + bne _08186C9A +_08186C8A: + ldr r0, _08186CB8 + ldr r1, _08186CBC + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + bl sub_08186ED8 +_08186C9A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08186CA0: .4byte gUnknown_2024174 +_08186CA4: .4byte gUnknown_2023D08 +_08186CA8: .4byte gUnknown_20205AC +_08186CAC: .4byte gUnknown_2023E88 +_08186CB0: .4byte sub_08007140 +_08186CB4: .4byte sub_080394FC +_08186CB8: .4byte gUnknown_30074D0 +_08186CBC: .4byte 0x0000FFFF + thumb_func_end sub_08186C40 + + thumb_func_start sub_08186CC0 +sub_08186CC0: @ 0x08186CC0 + push {r4, r5, r6, r7, lr} + ldr r4, _08186D84 + ldr r0, [r4] + ldr r5, _08186D88 + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r1, [r3, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08186D7C + ldr r7, _08186D8C + ldr r6, _08186D90 + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08186D94 + cmp r1, r0 + bne _08186D7C + ldrb r1, [r3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3] + ldr r0, [r4] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _08186D98 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _08186D9C + ldrb r1, [r5] + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08186DA0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08186DA4 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r5] + bl sub_08076320 + ldrb r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldrb r0, [r5] + bl sub_0805E024 + ldr r1, _08186DA8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186DAC + str r1, [r0] +_08186D7C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08186D84: .4byte gUnknown_2024174 +_08186D88: .4byte gUnknown_2023D08 +_08186D8C: .4byte gUnknown_20205AC +_08186D90: .4byte gUnknown_2023E88 +_08186D94: .4byte sub_08007140 +_08186D98: .4byte 0x000027F9 +_08186D9C: .4byte gUnknown_3005AD0 +_08186DA0: .4byte gUnknown_2023D12 +_08186DA4: .4byte gUnknown_20243E8 +_08186DA8: .4byte gUnknown_3005AC0 +_08186DAC: .4byte sub_08186BD0 + thumb_func_end sub_08186CC0 + + thumb_func_start sub_08186DB0 +sub_08186DB0: @ 0x08186DB0 + push {r4, r5, r6, lr} + ldr r6, _08186E54 + ldr r0, [r6] + ldr r5, _08186E58 + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _08186DE2 + ldr r0, _08186E5C + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08186E60 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_08186DE2: + ldr r4, _08186E64 + ldr r0, _08186E68 + ldrb r2, [r5] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r4, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _08186E6C + cmp r1, r0 + bne _08186E4C + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08186E4C + adds r0, r3, r4 + bl sub_08006E00 + ldrb r4, [r5] + ldr r1, _08186E5C + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08186E60 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _08186E70 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186E74 + str r1, [r0] +_08186E4C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08186E54: .4byte gUnknown_2024174 +_08186E58: .4byte gUnknown_2023D08 +_08186E5C: .4byte gUnknown_2023D12 +_08186E60: .4byte gUnknown_20243E8 +_08186E64: .4byte gUnknown_20205AC +_08186E68: .4byte gUnknown_3005ADC +_08186E6C: .4byte sub_08007140 +_08186E70: .4byte gUnknown_3005AC0 +_08186E74: .4byte sub_08186CC0 + thumb_func_end sub_08186DB0 + + thumb_func_start sub_08186E78 +sub_08186E78: @ 0x08186E78 + push {lr} + ldr r0, _08186EA0 + ldr r2, [r0] + ldr r0, _08186EA4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08186E9A + bl sub_08186ED8 +_08186E9A: + pop {r0} + bx r0 + .align 2, 0 +_08186EA0: .4byte gUnknown_2024174 +_08186EA4: .4byte gUnknown_2023D08 + thumb_func_end sub_08186E78 + + thumb_func_start sub_08186EA8 +sub_08186EA8: @ 0x08186EA8 + push {lr} + ldr r0, _08186ED0 + ldr r2, [r0] + ldr r0, _08186ED4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08186ECA + bl sub_08186ED8 +_08186ECA: + pop {r0} + bx r0 + .align 2, 0 +_08186ED0: .4byte gUnknown_2024174 +_08186ED4: .4byte gUnknown_2023D08 + thumb_func_end sub_08186EA8 + + thumb_func_start sub_08186ED8 +sub_08186ED8: @ 0x08186ED8 + push {r4, lr} + sub sp, #4 + ldr r1, _08186F18 + ldr r4, _08186F1C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08186F20 + str r1, [r0] + ldr r0, _08186F24 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08186F2C + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _08186F28 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _08186F3E + .align 2, 0 +_08186F18: .4byte gUnknown_3005AC0 +_08186F1C: .4byte gUnknown_2023D08 +_08186F20: .4byte sub_08186234 +_08186F24: .4byte gUnknown_2022C90 +_08186F28: .4byte gUnknown_2022D08 +_08186F2C: + ldr r2, _08186F48 + ldr r1, _08186F4C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_08186F3E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08186F48: .4byte gUnknown_2023D0C +_08186F4C: .4byte gUnknown_82FACB4 + thumb_func_end sub_08186ED8 + + thumb_func_start sub_08186F50 +sub_08186F50: @ 0x08186F50 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _08186F7C + ldr r0, _08186F80 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _08186F88 + ldr r0, _08186F84 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_08186FC4 + adds r6, r0, #0 + b _08186FAA + .align 2, 0 +_08186F7C: .4byte gUnknown_2022D08 +_08186F80: .4byte gUnknown_2023D08 +_08186F84: .4byte gUnknown_2023D12 +_08186F88: + ldrb r4, [r1] + movs r5, #0 +_08186F8C: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08186FA2 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_08186FC4 + adds r6, r6, r0 +_08186FA2: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _08186F8C +_08186FAA: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_08186ED8 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08186F50 + + thumb_func_start sub_08186FC4 +sub_08186FC4: @ 0x08186FC4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _08186FF8 + ldr r3, _08186FFC + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _08186FEE + bl _0818775A +_08186FEE: + lsls r0, r0, #2 + ldr r1, _08187000 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08186FF8: .4byte gUnknown_2022D08 +_08186FFC: .4byte gUnknown_2023D08 +_08187000: .4byte _08187004 +_08187004: @ jump table + .4byte _081870F4 @ case 0 + .4byte _08187318 @ case 1 + .4byte _08187328 @ case 2 + .4byte _08187338 @ case 3 + .4byte _081873A0 @ case 4 + .4byte _081873A0 @ case 5 + .4byte _081873A0 @ case 6 + .4byte _081873A0 @ case 7 + .4byte _081873BC @ case 8 + .4byte _081873F8 @ case 9 + .4byte _081873F8 @ case 10 + .4byte _081873F8 @ case 11 + .4byte _081873F8 @ case 12 + .4byte _0818775A @ case 13 + .4byte _0818775A @ case 14 + .4byte _0818775A @ case 15 + .4byte _0818775A @ case 16 + .4byte _08187414 @ case 17 + .4byte _08187424 @ case 18 + .4byte _08187454 @ case 19 + .4byte _08187464 @ case 20 + .4byte _08187474 @ case 21 + .4byte _08187484 @ case 22 + .4byte _08187494 @ case 23 + .4byte _081874A4 @ case 24 + .4byte _081874B4 @ case 25 + .4byte _081874C4 @ case 26 + .4byte _081874D4 @ case 27 + .4byte _081874E4 @ case 28 + .4byte _081874F4 @ case 29 + .4byte _08187504 @ case 30 + .4byte _08187514 @ case 31 + .4byte _08187564 @ case 32 + .4byte _08187574 @ case 33 + .4byte _08187584 @ case 34 + .4byte _08187594 @ case 35 + .4byte _081875A4 @ case 36 + .4byte _081875B4 @ case 37 + .4byte _081875C4 @ case 38 + .4byte _081875D4 @ case 39 + .4byte _081875E4 @ case 40 + .4byte _08187618 @ case 41 + .4byte _08187628 @ case 42 + .4byte _08187638 @ case 43 + .4byte _08187648 @ case 44 + .4byte _08187658 @ case 45 + .4byte _08187668 @ case 46 + .4byte _08187678 @ case 47 + .4byte _08187688 @ case 48 + .4byte _081876A8 @ case 49 + .4byte _081876B8 @ case 50 + .4byte _081876C8 @ case 51 + .4byte _081876D8 @ case 52 + .4byte _081876E8 @ case 53 + .4byte _081876F8 @ case 54 + .4byte _08187708 @ case 55 + .4byte _08187718 @ case 56 + .4byte _08187728 @ case 57 + .4byte _08187738 @ case 58 + .4byte _08187748 @ case 59 +_081870F4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187308 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_08187140: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _08187140 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187308 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _0818730C + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _08187310 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _08187314 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_081872F8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _081872F8 + b _0818775A + .align 2, 0 +_08187308: .4byte gUnknown_20243E8 +_0818730C: .4byte 0xFFFFFC1F +_08187310: .4byte 0xFFF07FFF +_08187314: .4byte 0xFFFFFE0F +_08187318: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187324 + adds r0, r0, r1 + movs r1, #0xb + b _08187692 + .align 2, 0 +_08187324: .4byte gUnknown_20243E8 +_08187328: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187334 + adds r0, r0, r1 + movs r1, #0xc + b _08187692 + .align 2, 0 +_08187334: .4byte gUnknown_20243E8 +_08187338: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0818739C + adds r4, r1, r0 + mov r8, sb +_0818734E: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _0818734E + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818739C + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_0818738C: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _0818738C + b _0818775A + .align 2, 0 +_0818739C: .4byte gUnknown_20243E8 +_081873A0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081873B8 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _08187692 + .align 2, 0 +_081873B8: .4byte gUnknown_20243E8 +_081873BC: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _081873F4 + mov r8, r2 +_081873C8: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _081873C8 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081873F4 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _0818775A + .align 2, 0 +_081873F4: .4byte gUnknown_20243E8 +_081873F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187410 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _08187752 + .align 2, 0 +_08187410: .4byte gUnknown_20243E8 +_08187414: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187420 + adds r0, r0, r1 + movs r1, #1 + b _0818742E + .align 2, 0 +_08187420: .4byte gUnknown_20243E8 +_08187424: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187450 + adds r0, r0, r1 + movs r1, #0x19 +_0818742E: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _0818775A + .align 2, 0 +_08187450: .4byte gUnknown_20243E8 +_08187454: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187460 + adds r0, r0, r1 + movs r1, #0x1a + b _08187752 + .align 2, 0 +_08187460: .4byte gUnknown_20243E8 +_08187464: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187470 + adds r0, r0, r1 + movs r1, #0x1b + b _08187752 + .align 2, 0 +_08187470: .4byte gUnknown_20243E8 +_08187474: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187480 + adds r0, r0, r1 + movs r1, #0x1c + b _08187752 + .align 2, 0 +_08187480: .4byte gUnknown_20243E8 +_08187484: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187490 + adds r0, r0, r1 + movs r1, #0x1d + b _08187752 + .align 2, 0 +_08187490: .4byte gUnknown_20243E8 +_08187494: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874A0 + adds r0, r0, r1 + movs r1, #0x1e + b _08187752 + .align 2, 0 +_081874A0: .4byte gUnknown_20243E8 +_081874A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874B0 + adds r0, r0, r1 + movs r1, #0x1f + b _08187752 + .align 2, 0 +_081874B0: .4byte gUnknown_20243E8 +_081874B4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874C0 + adds r0, r0, r1 + movs r1, #0x20 + b _08187752 + .align 2, 0 +_081874C0: .4byte gUnknown_20243E8 +_081874C4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874D0 + adds r0, r0, r1 + movs r1, #0x22 + b _08187752 + .align 2, 0 +_081874D0: .4byte gUnknown_20243E8 +_081874D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874E0 + adds r0, r0, r1 + movs r1, #0x23 + b _08187752 + .align 2, 0 +_081874E0: .4byte gUnknown_20243E8 +_081874E4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081874F0 + adds r0, r0, r1 + movs r1, #0x24 + b _08187752 + .align 2, 0 +_081874F0: .4byte gUnknown_20243E8 +_081874F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187500 + adds r0, r0, r1 + movs r1, #0x25 + b _08187752 + .align 2, 0 +_08187500: .4byte gUnknown_20243E8 +_08187504: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187510 + adds r0, r0, r1 + movs r1, #0x26 + b _08187752 + .align 2, 0 +_08187510: .4byte gUnknown_20243E8 +_08187514: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187560 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _0818775A + .align 2, 0 +_08187560: .4byte gUnknown_20243E8 +_08187564: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187570 + adds r0, r0, r1 + movs r1, #0x27 + b _08187752 + .align 2, 0 +_08187570: .4byte gUnknown_20243E8 +_08187574: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187580 + adds r0, r0, r1 + movs r1, #0x28 + b _08187752 + .align 2, 0 +_08187580: .4byte gUnknown_20243E8 +_08187584: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187590 + adds r0, r0, r1 + movs r1, #0x29 + b _08187752 + .align 2, 0 +_08187590: .4byte gUnknown_20243E8 +_08187594: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081875A0 + adds r0, r0, r1 + movs r1, #0x2a + b _08187752 + .align 2, 0 +_081875A0: .4byte gUnknown_20243E8 +_081875A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081875B0 + adds r0, r0, r1 + movs r1, #0x2b + b _08187752 + .align 2, 0 +_081875B0: .4byte gUnknown_20243E8 +_081875B4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081875C0 + adds r0, r0, r1 + movs r1, #0x2c + b _08187752 + .align 2, 0 +_081875C0: .4byte gUnknown_20243E8 +_081875C4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081875D0 + adds r0, r0, r1 + movs r1, #0 + b _081875EE + .align 2, 0 +_081875D0: .4byte gUnknown_20243E8 +_081875D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081875E0 + adds r0, r0, r1 + movs r1, #9 + b _08187692 + .align 2, 0 +_081875E0: .4byte gUnknown_20243E8 +_081875E4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187614 + adds r0, r0, r1 + movs r1, #0x37 +_081875EE: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _0818775A + .align 2, 0 +_08187614: .4byte gUnknown_20243E8 +_08187618: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187624 + adds r0, r0, r1 + movs r1, #0x38 + b _08187752 + .align 2, 0 +_08187624: .4byte gUnknown_20243E8 +_08187628: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187634 + adds r0, r0, r1 + movs r1, #0x39 + b _08187692 + .align 2, 0 +_08187634: .4byte gUnknown_20243E8 +_08187638: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187644 + adds r0, r0, r1 + movs r1, #0x3a + b _08187692 + .align 2, 0 +_08187644: .4byte gUnknown_20243E8 +_08187648: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187654 + adds r0, r0, r1 + movs r1, #0x3b + b _08187692 + .align 2, 0 +_08187654: .4byte gUnknown_20243E8 +_08187658: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187664 + adds r0, r0, r1 + movs r1, #0x3c + b _08187692 + .align 2, 0 +_08187664: .4byte gUnknown_20243E8 +_08187668: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187674 + adds r0, r0, r1 + movs r1, #0x3d + b _08187692 + .align 2, 0 +_08187674: .4byte gUnknown_20243E8 +_08187678: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187684 + adds r0, r0, r1 + movs r1, #0x3e + b _08187692 + .align 2, 0 +_08187684: .4byte gUnknown_20243E8 +_08187688: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876A4 + adds r0, r0, r1 + movs r1, #0x3f +_08187692: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _0818775A + .align 2, 0 +_081876A4: .4byte gUnknown_20243E8 +_081876A8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876B4 + adds r0, r0, r1 + movs r1, #0x16 + b _08187752 + .align 2, 0 +_081876B4: .4byte gUnknown_20243E8 +_081876B8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876C4 + adds r0, r0, r1 + movs r1, #0x17 + b _08187752 + .align 2, 0 +_081876C4: .4byte gUnknown_20243E8 +_081876C8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876D4 + adds r0, r0, r1 + movs r1, #0x18 + b _08187752 + .align 2, 0 +_081876D4: .4byte gUnknown_20243E8 +_081876D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876E4 + adds r0, r0, r1 + movs r1, #0x21 + b _08187752 + .align 2, 0 +_081876E4: .4byte gUnknown_20243E8 +_081876E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081876F4 + adds r0, r0, r1 + movs r1, #0x2f + b _08187752 + .align 2, 0 +_081876F4: .4byte gUnknown_20243E8 +_081876F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187704 + adds r0, r0, r1 + movs r1, #0x30 + b _08187752 + .align 2, 0 +_08187704: .4byte gUnknown_20243E8 +_08187708: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187714 + adds r0, r0, r1 + movs r1, #0x32 + b _08187752 + .align 2, 0 +_08187714: .4byte gUnknown_20243E8 +_08187718: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187724 + adds r0, r0, r1 + movs r1, #0x33 + b _08187752 + .align 2, 0 +_08187724: .4byte gUnknown_20243E8 +_08187728: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187734 + adds r0, r0, r1 + movs r1, #0x34 + b _08187752 + .align 2, 0 +_08187734: .4byte gUnknown_20243E8 +_08187738: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187744 + adds r0, r0, r1 + movs r1, #0x35 + b _08187752 + .align 2, 0 +_08187744: .4byte gUnknown_20243E8 +_08187748: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818776C + adds r0, r0, r1 + movs r1, #0x36 +_08187752: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_0818775A: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818776C: .4byte gUnknown_20243E8 + thumb_func_end sub_08186FC4 + + thumb_func_start sub_08187770 +sub_08187770: @ 0x08187770 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08187770 + + thumb_func_start sub_0818777C +sub_0818777C: @ 0x0818777C + push {r4, r5, lr} + ldr r1, _081877A0 + ldr r0, _081877A4 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _081877AC + ldr r0, _081877A8 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_081877D4 + b _081877CA + .align 2, 0 +_081877A0: .4byte gUnknown_2022D08 +_081877A4: .4byte gUnknown_2023D08 +_081877A8: .4byte gUnknown_2023D12 +_081877AC: + ldrb r4, [r1] + movs r5, #0 +_081877B0: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081877BE + adds r0, r5, #0 + bl sub_081877D4 +_081877BE: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081877B0 +_081877CA: + bl sub_08186ED8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0818777C + + thumb_func_start sub_081877D4 +sub_081877D4: @ 0x081877D4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r3, _0818780C + ldrb r0, [r3] + lsls r0, r0, #9 + ldr r2, _08187810 + adds r4, r0, r2 + adds r7, r4, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r6, r3, #0 + adds r3, r2, #0 + cmp r0, #0x3b + bls _08187802 + bl _081880E0 +_08187802: + lsls r0, r0, #2 + ldr r1, _08187814 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818780C: .4byte gUnknown_2023D08 +_08187810: .4byte gUnknown_2022D0B +_08187814: .4byte _08187818 +_08187818: @ jump table + .4byte _08187908 @ case 0 + .4byte _08187AA0 @ case 1 + .4byte _08187ABC @ case 2 + .4byte _08187AD8 @ case 3 + .4byte _08187B2C @ case 4 + .4byte _08187B2C @ case 5 + .4byte _08187B2C @ case 6 + .4byte _08187B2C @ case 7 + .4byte _08187B4C @ case 8 + .4byte _08187BB4 @ case 9 + .4byte _08187BB4 @ case 10 + .4byte _08187BB4 @ case 11 + .4byte _08187BB4 @ case 12 + .4byte _081880E0 @ case 13 + .4byte _081880E0 @ case 14 + .4byte _081880E0 @ case 15 + .4byte _081880E0 @ case 16 + .4byte _08187BDC @ case 17 + .4byte _08187BF8 @ case 18 + .4byte _08187C14 @ case 19 + .4byte _08187C30 @ case 20 + .4byte _08187C4C @ case 21 + .4byte _08187C68 @ case 22 + .4byte _08187C84 @ case 23 + .4byte _08187CA0 @ case 24 + .4byte _08187CBC @ case 25 + .4byte _08187CD8 @ case 26 + .4byte _08187CF4 @ case 27 + .4byte _08187D10 @ case 28 + .4byte _08187D2C @ case 29 + .4byte _08187D48 @ case 30 + .4byte _08187D64 @ case 31 + .4byte _08187DD8 @ case 32 + .4byte _08187DF4 @ case 33 + .4byte _08187E10 @ case 34 + .4byte _08187E2C @ case 35 + .4byte _08187E48 @ case 36 + .4byte _08187E64 @ case 37 + .4byte _08187E80 @ case 38 + .4byte _08187E9C @ case 39 + .4byte _08187EB8 @ case 40 + .4byte _08187ED4 @ case 41 + .4byte _08187EF0 @ case 42 + .4byte _08187F0C @ case 43 + .4byte _08187F28 @ case 44 + .4byte _08187F44 @ case 45 + .4byte _08187F60 @ case 46 + .4byte _08187F7C @ case 47 + .4byte _08187F98 @ case 48 + .4byte _08187FB4 @ case 49 + .4byte _08187FD0 @ case 50 + .4byte _08187FEC @ case 51 + .4byte _08188008 @ case 52 + .4byte _08188024 @ case 53 + .4byte _08188040 @ case 54 + .4byte _0818805C @ case 55 + .4byte _08188078 @ case 56 + .4byte _08188094 @ case 57 + .4byte _081880B0 @ case 58 + .4byte _081880CC @ case 59 +_08187908: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187A9C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r7, #0 + bl sub_0806A774 + adds r2, r7, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r7 + mov sl, r0 + adds r0, r7, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r7, #2 + str r0, [sp, #4] + adds r0, r7, #4 + str r0, [sp, #8] + adds r0, r7, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r6, r7, #0 + adds r6, #0x24 + adds r4, r7, #0 + adds r4, #0xc +_0818796E: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0818796E + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187A9C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r7, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r7, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r7, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187A9C: .4byte gUnknown_20243E8 +_08187AA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187AB8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xb + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187AB8: .4byte gUnknown_20243E8 +_08187ABC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187AD4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0xc + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187AD4: .4byte gUnknown_20243E8 +_08187AD8: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r4 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _08187B28 + adds r7, r1, r0 + adds r6, r4, #0 + adds r6, #8 +_08187AF0: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _08187AF0 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187B28 + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187B28: .4byte gUnknown_20243E8 +_08187B2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187B44 + adds r0, r0, r1 + ldr r3, _08187B48 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _08187BCA + .align 2, 0 +_08187B44: .4byte gUnknown_20243E8 +_08187B48: .4byte gUnknown_2022D08 +_08187B4C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187BB0 + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x11 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187BB0: .4byte gUnknown_20243E8 +_08187BB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187BD4 + adds r0, r0, r1 + ldr r3, _08187BD8 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_08187BCA: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187BD4: .4byte gUnknown_20243E8 +_08187BD8: .4byte gUnknown_2022D08 +_08187BDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187BF4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #1 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187BF4: .4byte gUnknown_20243E8 +_08187BF8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C10 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x19 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C10: .4byte gUnknown_20243E8 +_08187C14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C2C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1a + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C2C: .4byte gUnknown_20243E8 +_08187C30: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C48 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1b + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C48: .4byte gUnknown_20243E8 +_08187C4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C64 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1c + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C64: .4byte gUnknown_20243E8 +_08187C68: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C80 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1d + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C80: .4byte gUnknown_20243E8 +_08187C84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187C9C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1e + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187C9C: .4byte gUnknown_20243E8 +_08187CA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187CB8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x1f + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187CB8: .4byte gUnknown_20243E8 +_08187CBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187CD4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x20 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187CD4: .4byte gUnknown_20243E8 +_08187CD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187CF0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x22 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187CF0: .4byte gUnknown_20243E8 +_08187CF4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187D0C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x23 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187D0C: .4byte gUnknown_20243E8 +_08187D10: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187D28 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x24 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187D28: .4byte gUnknown_20243E8 +_08187D2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187D44 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x25 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187D44: .4byte gUnknown_20243E8 +_08187D48: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187D60 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x26 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187D60: .4byte gUnknown_20243E8 +_08187D64: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _08187DD4 + adds r4, r4, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + adds r0, r4, #0 + movs r1, #0x27 + str r3, [sp, #0x34] + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r6] + lsls r2, r2, #9 + ldr r3, [sp, #0x34] + adds r0, r3, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _08187E72 + .align 2, 0 +_08187DD4: .4byte gUnknown_20243E8 +_08187DD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187DF0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x27 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187DF0: .4byte gUnknown_20243E8 +_08187DF4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E0C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x28 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E0C: .4byte gUnknown_20243E8 +_08187E10: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E28 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x29 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E28: .4byte gUnknown_20243E8 +_08187E2C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E44 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2a + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E44: .4byte gUnknown_20243E8 +_08187E48: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E60 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2b + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E60: .4byte gUnknown_20243E8 +_08187E64: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E7C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 +_08187E72: + movs r1, #0x2c + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E7C: .4byte gUnknown_20243E8 +_08187E80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187E98 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187E98: .4byte gUnknown_20243E8 +_08187E9C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187EB4 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #9 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187EB4: .4byte gUnknown_20243E8 +_08187EB8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187ED0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x37 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187ED0: .4byte gUnknown_20243E8 +_08187ED4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187EEC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x38 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187EEC: .4byte gUnknown_20243E8 +_08187EF0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F08 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x39 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F08: .4byte gUnknown_20243E8 +_08187F0C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F24 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3a + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F24: .4byte gUnknown_20243E8 +_08187F28: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F40 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3b + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F40: .4byte gUnknown_20243E8 +_08187F44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F5C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3c + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F5C: .4byte gUnknown_20243E8 +_08187F60: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F78 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3d + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F78: .4byte gUnknown_20243E8 +_08187F7C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187F94 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3e + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187F94: .4byte gUnknown_20243E8 +_08187F98: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187FB0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x3f + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187FB0: .4byte gUnknown_20243E8 +_08187FB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187FCC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x16 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187FCC: .4byte gUnknown_20243E8 +_08187FD0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08187FE8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x17 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08187FE8: .4byte gUnknown_20243E8 +_08187FEC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08188004 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x18 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08188004: .4byte gUnknown_20243E8 +_08188008: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08188020 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x21 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08188020: .4byte gUnknown_20243E8 +_08188024: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818803C + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x2f + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_0818803C: .4byte gUnknown_20243E8 +_08188040: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08188058 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x30 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08188058: .4byte gUnknown_20243E8 +_0818805C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08188074 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x32 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08188074: .4byte gUnknown_20243E8 +_08188078: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _08188090 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x33 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_08188090: .4byte gUnknown_20243E8 +_08188094: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081880AC + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x34 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_081880AC: .4byte gUnknown_20243E8 +_081880B0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081880C8 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x35 + bl sub_0806A774 + b _081880E0 + .align 2, 0 +_081880C8: .4byte gUnknown_20243E8 +_081880CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081880F0 + adds r0, r0, r1 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r2, r2, r3 + movs r1, #0x36 + bl sub_0806A774 +_081880E0: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081880F0: .4byte gUnknown_20243E8 + thumb_func_end sub_081877D4 + + thumb_func_start sub_081880F4 +sub_081880F4: @ 0x081880F4 + push {r4, r5, r6, r7, lr} + ldr r1, _08188158 + ldr r7, _0818815C + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _08188160 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _08188164 + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _0818814C + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_0818812A: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _0818812A +_0818814C: + bl sub_08186ED8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08188158: .4byte gUnknown_2023D12 +_0818815C: .4byte gUnknown_2023D08 +_08188160: .4byte gUnknown_2022D08 +_08188164: .4byte gUnknown_20243E8 + thumb_func_end sub_081880F4 + + thumb_func_start sub_08188168 +sub_08188168: @ 0x08188168 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r7, _08188290 + ldr r6, _08188294 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r1, #0x64 + mov sl, r1 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + ldr r1, _08188298 + mov sb, r1 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + add r0, sb + bl sub_0805D828 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r0, _0818829C + mov r8, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _081882A0 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _081882A4 + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081882A8 + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081882AC + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldrb r4, [r6] + lsls r0, r4, #1 + adds r0, r0, r7 + ldrh r0, [r0] + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r0, sb + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_0805EA70 + ldr r1, _081882B0 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081882B4 + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08188290: .4byte gUnknown_2023D12 +_08188294: .4byte gUnknown_2023D08 +_08188298: .4byte gUnknown_20243E8 +_0818829C: .4byte gUnknown_2024640 +_081882A0: .4byte gUnknown_2023E88 +_081882A4: .4byte gUnknown_20205AC +_081882A8: .4byte 0x0000FF10 +_081882AC: .4byte gUnknown_2024188 +_081882B0: .4byte gUnknown_3005AC0 +_081882B4: .4byte sub_08186974 + thumb_func_end sub_08188168 + + thumb_func_start sub_081882B8 +sub_081882B8: @ 0x081882B8 + push {r4, lr} + ldr r1, _081882F0 + ldr r4, _081882F4 + ldrb r0, [r4] + lsls r2, r0, #1 + adds r2, r2, r1 + ldr r3, _081882F8 + lsls r0, r0, #9 + adds r1, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldrb r0, [r4] + lsls r1, r0, #9 + adds r3, #2 + adds r1, r1, r3 + ldrb r1, [r1] + bl sub_08188304 + ldr r1, _081882FC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188300 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081882F0: .4byte gUnknown_2023D12 +_081882F4: .4byte gUnknown_2023D08 +_081882F8: .4byte gUnknown_2022D08 +_081882FC: .4byte gUnknown_3005AC0 +_08188300: .4byte sub_08186DB0 + thumb_func_end sub_081882B8 + + thumb_func_start sub_08188304 +sub_08188304: @ 0x08188304 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _0818846C + lsls r4, r6, #1 + adds r4, r4, r0 + ldr r0, _08188470 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r4] + ldrh r0, [r4] + movs r1, #0x64 + mov sb, r1 + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + ldr r5, _08188474 + adds r0, r0, r5 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _08188478 + bl sub_0806F0C4 + ldr r1, _0818847C + mov sl, r1 + add sl, r6 + mov r1, sl + strb r0, [r1] + ldrh r0, [r4] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r5 + adds r1, r6, #0 + bl sub_0805D828 + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _08188480 + mov sb, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sb + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _08188484 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _08188488 + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818848C + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08188490 + str r1, [r0] + movs r0, #0 + movs r1, #0xfe + bl sub_08074DF0 + mov r1, sl + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818846C: .4byte gUnknown_2023D12 +_08188470: .4byte gUnknown_2022D08 +_08188474: .4byte gUnknown_20243E8 +_08188478: .4byte sub_0805D330 +_0818847C: .4byte gUnknown_3005ADC +_08188480: .4byte gUnknown_2024640 +_08188484: .4byte gUnknown_2023E88 +_08188488: .4byte gUnknown_20205AC +_0818848C: .4byte gUnknown_2024188 +_08188490: .4byte sub_08007140 + thumb_func_end sub_08188304 + + thumb_func_start sub_08188494 +sub_08188494: @ 0x08188494 + push {r4, r5, r6, lr} + ldr r1, _081884C8 + ldr r6, _081884CC + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _081884DC + ldr r0, _081884D0 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _081884D4 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081884D8 + str r1, [r0] + b _08188518 + .align 2, 0 +_081884C8: .4byte gUnknown_2022D08 +_081884CC: .4byte gUnknown_2023D08 +_081884D0: .4byte gUnknown_2024174 +_081884D4: .4byte gUnknown_3005AC0 +_081884D8: .4byte sub_0818852C +_081884DC: + ldr r5, _08188520 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08188524 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r0, [r6] + bl sub_0805EAFC + ldr r1, _08188528 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_08186ED8 +_08188518: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08188520: .4byte gUnknown_2023E88 +_08188524: .4byte gUnknown_20205AC +_08188528: .4byte gUnknown_3005AD0 + thumb_func_end sub_08188494 + + thumb_func_start sub_0818852C +sub_0818852C: @ 0x0818852C + push {r4, r5, r6, lr} + ldr r6, _0818854C + ldr r4, [r6] + ldr r5, _08188550 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _08188554 + cmp r0, #1 + beq _08188582 + b _081885AA + .align 2, 0 +_0818854C: .4byte gUnknown_2024174 +_08188550: .4byte gUnknown_2023D08 +_08188554: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0818856E + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0818856E: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _081885AA +_08188582: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081885AA + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #2 + bl sub_0805D6E0 + ldr r1, _081885B0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081885B4 + str r1, [r0] +_081885AA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081885B0: .4byte gUnknown_3005AC0 +_081885B4: .4byte sub_08186AC8 + thumb_func_end sub_0818852C + + thumb_func_start sub_081885B8 +sub_081885B8: @ 0x081885B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r5, _081885F8 + ldr r0, [r5] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08188622 + ldr r4, _081885FC + ldrb r0, [r4] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r7, #0xc8 + cmp r1, #0 + beq _081885E0 + movs r7, #0x98 +_081885E0: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08188618 + ldrb r0, [r4] + cmp r0, #1 + bne _08188604 + ldr r0, _08188600 + b _08188606 + .align 2, 0 +_081885F8: .4byte gUnknown_2022C90 +_081885FC: .4byte gUnknown_2023D08 +_08188600: .4byte gUnknown_203886A +_08188604: + ldr r0, _08188614 +_08188606: + ldrh r0, [r0] + bl sub_081629A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08188658 + .align 2, 0 +_08188614: .4byte gUnknown_203886C +_08188618: + bl sub_08185C98 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08188650 +_08188622: + movs r7, #0xb0 + ldr r0, _08188638 + ldrh r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #4 + cmp r1, r0 + bne _0818863C + bl sub_08068688 + b _08188654 + .align 2, 0 +_08188638: .4byte gUnknown_203886A +_0818863C: + ldr r2, _0818873C + ldr r0, _08188740 + ldrb r0, [r0] + movs r1, #1 + eors r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x13] +_08188650: + bl sub_0806EA8C +_08188654: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_08188658: + mov r8, r0 + ldr r5, _08188744 + ldrb r1, [r5] + bl sub_0805DB54 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069C6C + ldr r6, _08188748 + mov sb, r7 + ldr r1, _0818874C + mov r2, r8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #8 + subs r4, r4, r0 + lsls r4, r4, #0x12 + movs r0, #0xa0 + lsls r0, r0, #0xe + adds r4, r4, r0 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _08188750 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _08188754 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08188758 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #0x2e] + ldr r1, _0818875C + mov r2, r8 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bl sub_0800851C + ldrb r1, [r5] + adds r1, r1, r6 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r4 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + mov r1, r8 + strh r1, [r0, #6] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _08188760 + str r1, [r0] + ldr r1, _08188764 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188768 + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818873C: .4byte gUnknown_20226A0 +_08188740: .4byte gUnknown_203C480 +_08188744: .4byte gUnknown_2023D08 +_08188748: .4byte gUnknown_2024640 +_0818874C: .4byte gUnknown_82D8D70 +_08188750: .4byte gUnknown_2023E88 +_08188754: .4byte gUnknown_20205AC +_08188758: .4byte 0x0000FF10 +_0818875C: .4byte gUnknown_82D91CC +_08188760: .4byte sub_0805D3C8 +_08188764: .4byte gUnknown_3005AC0 +_08188768: .4byte sub_08186284 + thumb_func_end sub_081885B8 + + thumb_func_start sub_0818876C +sub_0818876C: @ 0x0818876C + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818876C + + thumb_func_start sub_08188778 +sub_08188778: @ 0x08188778 + push {r4, r5, r6, lr} + ldr r6, _08188808 + ldr r4, _0818880C + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _08188810 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08188814 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08188818 + bl sub_080A5B9C + ldr r1, _0818881C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188820 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08188808: .4byte gUnknown_2023E88 +_0818880C: .4byte gUnknown_2023D08 +_08188810: .4byte gUnknown_20205AC +_08188814: .4byte sub_080A67B4 +_08188818: .4byte sub_08007140 +_0818881C: .4byte gUnknown_3005AC0 +_08188820: .4byte sub_081862F4 + thumb_func_end sub_08188778 + + thumb_func_start sub_08188824 +sub_08188824: @ 0x08188824 + push {r4, r5, r6, lr} + ldr r6, _08188870 + ldr r4, [r6] + ldr r5, _08188874 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _08188878 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08188858 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08188858: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _081888B4 + .align 2, 0 +_08188870: .4byte gUnknown_2024174 +_08188874: .4byte gUnknown_2023D08 +_08188878: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081888B4 + strb r0, [r3, #4] + movs r0, #0x10 + movs r1, #0x3f + bl sub_080A307C + ldr r2, _081888BC + ldr r1, _081888C0 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _081888C4 + str r1, [r0] + ldr r1, _081888C8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081888CC + str r1, [r0] +_081888B4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081888BC: .4byte gUnknown_20205AC +_081888C0: .4byte gUnknown_2023E88 +_081888C4: .4byte sub_08039578 +_081888C8: .4byte gUnknown_3005AC0 +_081888CC: .4byte sub_08186A84 + thumb_func_end sub_08188824 + + thumb_func_start sub_081888D0 +sub_081888D0: @ 0x081888D0 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081888D0 + + thumb_func_start sub_081888DC +sub_081888DC: @ 0x081888DC + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081888DC + + thumb_func_start sub_081888E8 +sub_081888E8: @ 0x081888E8 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081888E8 + + thumb_func_start sub_081888F4 +sub_081888F4: @ 0x081888F4 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081888F4 + + thumb_func_start sub_08188900 +sub_08188900: @ 0x08188900 + push {r4, r5, r6, lr} + ldr r6, _081889E4 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08188912 + b _08188A26 +_08188912: + ldr r0, _081889E8 + mov ip, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, ip + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + ldr r5, _081889EC + mov r1, ip + adds r1, #3 + adds r2, r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _081889F0 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #5 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _081889F4 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r3, r1 + mov r1, ip + adds r1, #8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x10 + orrs r3, r1 + mov r1, ip + adds r1, #9 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #0x18 + orrs r3, r1 + str r3, [r4] + ldr r3, _081889F8 + ldrb r1, [r6] + lsls r1, r1, #9 + mov r2, ip + adds r2, #0xa + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _081889FC + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0xc + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #0xd + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _08188A00 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0x10 + adds r2, r2, r1 + str r2, [r3] + ldr r3, _08188A04 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08188A08 + bl sub_08186ED8 + b _08188A26 + .align 2, 0 +_081889E4: .4byte gUnknown_2023D08 +_081889E8: .4byte gUnknown_2022D08 +_081889EC: .4byte gUnknown_20380D2 +_081889F0: .4byte gUnknown_20380A8 +_081889F4: .4byte gUnknown_20380A4 +_081889F8: .4byte gUnknown_20380BA +_081889FC: .4byte gUnknown_20380BC +_08188A00: .4byte gUnknown_20380A0 +_08188A04: .4byte gUnknown_2024160 +_08188A08: + ldr r0, _08188A2C + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _08188A30 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188A34 + str r1, [r0] +_08188A26: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08188A2C: .4byte gUnknown_2024174 +_08188A30: .4byte gUnknown_3005AC0 +_08188A34: .4byte sub_08188A38 + thumb_func_end sub_08188900 + + thumb_func_start sub_08188A38 +sub_08188A38: @ 0x08188A38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _08188A84 + ldr r6, _08188A88 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _08188A8C + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _08188AD0 + cmp r2, #1 + bgt _08188A90 + cmp r2, #0 + beq _08188A9A + b _08188BAC + .align 2, 0 +_08188A84: .4byte gUnknown_2022D08 +_08188A88: .4byte gUnknown_2023D08 +_08188A8C: .4byte gUnknown_2024174 +_08188A90: + cmp r2, #2 + beq _08188AFA + cmp r2, #3 + beq _08188B70 + b _08188BAC +_08188A9A: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _08188ABC + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_08188ABC: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _08188BAC +_08188AD0: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08188BAC + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _08188BAC +_08188AFA: + ldr r0, _08188B60 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08188B64 + ldrb r0, [r0] + cmp r0, #0 + bne _08188BAC + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08188B48 + mov r0, r8 + cmp r0, #1 + bhi _08188B48 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_08188B48: + ldr r0, _08188B68 + ldr r2, [r0] + ldr r0, _08188B6C + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _08188BAC + .align 2, 0 +_08188B60: .4byte gUnknown_2038098 +_08188B64: .4byte gUnknown_203809D +_08188B68: .4byte gUnknown_2024174 +_08188B6C: .4byte gUnknown_2023D08 +_08188B70: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08188BAC + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_08186ED8 +_08188BAC: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188A38 + + thumb_func_start sub_08188BBC +sub_08188BBC: @ 0x08188BBC + push {r4, lr} + ldr r0, _08188BF4 + movs r1, #0 + strh r1, [r0] + ldr r0, _08188BF8 + strh r1, [r0] + ldr r4, _08188BFC + ldrb r0, [r4] + lsls r0, r0, #9 + ldr r1, _08188C00 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0814E184 + ldr r0, _08188C04 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _08188C08 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188C0C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08188BF4: .4byte gUnknown_2022AC8 +_08188BF8: .4byte gUnknown_2022ACA +_08188BFC: .4byte gUnknown_2023D08 +_08188C00: .4byte gUnknown_2022D0A +_08188C04: .4byte gUnknown_2022AE0 +_08188C08: .4byte gUnknown_3005AC0 +_08188C0C: .4byte sub_08186B3C + thumb_func_end sub_08188BBC + + thumb_func_start sub_08188C10 +sub_08188C10: @ 0x08188C10 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188C10 + + thumb_func_start sub_08188C1C +sub_08188C1C: @ 0x08188C1C + push {lr} + ldr r0, _08188C3C + ldrb r0, [r0] + bl sub_08184EB4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0 + bl sub_08033FB0 + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08188C3C: .4byte gUnknown_2023D08 + thumb_func_end sub_08188C1C + + thumb_func_start sub_08188C40 +sub_08188C40: @ 0x08188C40 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188C40 + + thumb_func_start sub_08188C4C +sub_08188C4C: @ 0x08188C4C + push {r4, r5, lr} + ldr r0, _08188C70 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _08188C74 + bl sub_0805CDB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + b _08188C98 + .align 2, 0 +_08188C70: .4byte gUnknown_2022C90 +_08188C74: + ldr r5, _08188CA4 + ldrb r0, [r5] + bl sub_08184EB4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + bl sub_08184EB4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x10 + orrs r2, r4 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 +_08188C98: + bl sub_08186ED8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08188CA4: .4byte gUnknown_2023D08 + thumb_func_end sub_08188C4C + + thumb_func_start sub_08188CA8 +sub_08188CA8: @ 0x08188CA8 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188CA8 + + thumb_func_start sub_08188CB4 +sub_08188CB4: @ 0x08188CB4 + push {r4, lr} + ldr r4, _08188CE8 + ldrb r0, [r4] + bl sub_08184EB4 + ldrb r1, [r4] + ldr r3, _08188CEC + ldr r2, [r3] + adds r1, r1, r2 + adds r1, #0x5c + strb r0, [r1] + ldrb r0, [r4] + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0x5c + ldrb r1, [r0] + movs r0, #1 + movs r2, #0 + bl sub_08033FDC + bl sub_08186ED8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08188CE8: .4byte gUnknown_2023D08 +_08188CEC: .4byte gUnknown_2024140 + thumb_func_end sub_08188CB4 + + thumb_func_start sub_08188CF0 +sub_08188CF0: @ 0x08188CF0 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188CF0 + + thumb_func_start sub_08188CFC +sub_08188CFC: @ 0x08188CFC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _08188D74 + ldr r0, _08188D78 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _08188D7C + cmp r7, r0 + beq _08188D8C + ldr r6, _08188D80 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _08188D84 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08188D88 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _08188DB6 + .align 2, 0 +_08188D74: .4byte gUnknown_2022D08 +_08188D78: .4byte gUnknown_2023D08 +_08188D7C: .4byte 0x00007FFF +_08188D80: .4byte gUnknown_2023D12 +_08188D84: .4byte gUnknown_20243E8 +_08188D88: .4byte gUnknown_3005AD0 +_08188D8C: + ldr r1, _08188DD4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08188DD8 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _08188DDC + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C +_08188DB6: + ldr r1, _08188DE0 + ldr r0, _08188DE4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188DE8 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08188DD4: .4byte gUnknown_2023D12 +_08188DD8: .4byte gUnknown_20243E8 +_08188DDC: .4byte gUnknown_3005AD0 +_08188DE0: .4byte gUnknown_3005AC0 +_08188DE4: .4byte gUnknown_2023D08 +_08188DE8: .4byte sub_08186A30 + thumb_func_end sub_08188CFC + + thumb_func_start sub_08188DEC +sub_08188DEC: @ 0x08188DEC + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188DEC + + thumb_func_start sub_08188DF8 +sub_08188DF8: @ 0x08188DF8 + push {r4, lr} + ldr r4, _08188E54 + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08188E4C + ldr r0, _08188E58 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _08188E5C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08188E60 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _08188E64 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _08188E68 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188E6C + str r1, [r0] +_08188E4C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08188E54: .4byte gUnknown_2023D08 +_08188E58: .4byte gUnknown_3005AD0 +_08188E5C: .4byte gUnknown_2023D12 +_08188E60: .4byte gUnknown_20243E8 +_08188E64: .4byte gUnknown_2024174 +_08188E68: .4byte gUnknown_3005AC0 +_08188E6C: .4byte sub_08186E78 + thumb_func_end sub_08188DF8 + + thumb_func_start sub_08188E70 +sub_08188E70: @ 0x08188E70 + push {r4, r5, lr} + ldr r5, _08188EC8 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08188EC0 + ldr r4, _08188ECC + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _08188ED0 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08188ED4 + str r1, [r0] +_08188EC0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08188EC8: .4byte gUnknown_2023D08 +_08188ECC: .4byte gUnknown_2022D08 +_08188ED0: .4byte gUnknown_3005AC0 +_08188ED4: .4byte sub_08186E78 + thumb_func_end sub_08188E70 + + thumb_func_start sub_08188ED8 +sub_08188ED8: @ 0x08188ED8 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188ED8 + + thumb_func_start sub_08188EE4 +sub_08188EE4: @ 0x08188EE4 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188EE4 + + thumb_func_start sub_08188EF0 +sub_08188EF0: @ 0x08188EF0 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188EF0 + + thumb_func_start sub_08188EFC +sub_08188EFC: @ 0x08188EFC + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188EFC + + thumb_func_start sub_08188F08 +sub_08188F08: @ 0x08188F08 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188F08 + + thumb_func_start sub_08188F14 +sub_08188F14: @ 0x08188F14 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188F14 + + thumb_func_start sub_08188F20 +sub_08188F20: @ 0x08188F20 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188F20 + + thumb_func_start sub_08188F2C +sub_08188F2C: @ 0x08188F2C + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188F2C + + thumb_func_start sub_08188F38 +sub_08188F38: @ 0x08188F38 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08188F38 + + thumb_func_start sub_08188F44 +sub_08188F44: @ 0x08188F44 + push {lr} + ldr r2, _08188F5C + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08188F5C: .4byte gUnknown_20229C0 + thumb_func_end sub_08188F44 + + thumb_func_start sub_08188F60 +sub_08188F60: @ 0x08188F60 + push {lr} + ldr r3, _08188F8C + ldr r1, _08188F90 + ldr r0, _08188F94 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08188F8C: .4byte gUnknown_20229C0 +_08188F90: .4byte gUnknown_2022D08 +_08188F94: .4byte gUnknown_2023D08 + thumb_func_end sub_08188F60 + + thumb_func_start sub_08188F98 +sub_08188F98: @ 0x08188F98 + push {lr} + ldr r2, _08188FAC + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08188FAC: .4byte gUnknown_20229C0 + thumb_func_end sub_08188F98 + + thumb_func_start sub_08188FB0 +sub_08188FB0: @ 0x08188FB0 + push {lr} + ldr r3, _08188FD4 + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08188FD4: .4byte gUnknown_20229C0 + thumb_func_end sub_08188FB0 + + thumb_func_start sub_08188FD8 +sub_08188FD8: @ 0x08188FD8 + push {r4, lr} + ldr r3, _08189000 + ldr r2, _08189004 + ldr r4, _08189008 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0818900C + bl sub_08186ED8 + b _08189036 + .align 2, 0 +_08189000: .4byte gUnknown_20205AC +_08189004: .4byte gUnknown_2023E88 +_08189008: .4byte gUnknown_2023D08 +_0818900C: + ldr r1, _0818903C + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _08189040 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189044 + str r1, [r0] +_08189036: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818903C: .4byte gUnknown_202415D +_08189040: .4byte gUnknown_3005AC0 +_08189044: .4byte sub_08186B54 + thumb_func_end sub_08188FD8 + + thumb_func_start sub_08189048 +sub_08189048: @ 0x08189048 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08189048 + + thumb_func_start sub_08189054 +sub_08189054: @ 0x08189054 + push {r4, lr} + ldr r4, _08189090 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _08189068 + movs r3, #0xc0 +_08189068: + ldr r2, _08189094 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_08186ED8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08189090: .4byte gUnknown_2023D08 +_08189094: .4byte gUnknown_2022D08 + thumb_func_end sub_08189054 + + thumb_func_start sub_08189098 +sub_08189098: @ 0x08189098 + push {r4, r5, lr} + ldr r4, _081890CC + ldr r5, _081890D0 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _081890D4 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _081890E8 + .align 2, 0 +_081890CC: .4byte gUnknown_2022D08 +_081890D0: .4byte gUnknown_2023D08 +_081890D4: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_081890E8: + bl sub_08186ED8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08189098 + + thumb_func_start sub_081890F4 +sub_081890F4: @ 0x081890F4 + push {lr} + ldr r1, _08189124 + ldr r0, _08189128 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0818912C + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + movs r2, #5 + bl sub_080A2BAC + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08189124: .4byte gUnknown_2023D12 +_08189128: .4byte gUnknown_2023D08 +_0818912C: .4byte gUnknown_20243E8 + thumb_func_end sub_081890F4 + + thumb_func_start sub_08189130 +sub_08189130: @ 0x08189130 + push {lr} + ldr r1, _08189158 + ldr r0, _0818915C + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _08189160 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_08189158: .4byte gUnknown_2022D08 +_0818915C: .4byte gUnknown_2023D08 +_08189160: .4byte gUnknown_20240A0 + thumb_func_end sub_08189130 + + thumb_func_start sub_08189164 +sub_08189164: @ 0x08189164 + push {r4, r5, r6, lr} + ldr r5, _08189244 + ldr r6, _08189248 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0818924C + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x8c + lsls r1, r1, #1 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _08189250 + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08189254 + bl sub_080A5B9C + ldr r0, _08189258 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0818925C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r6] + strh r0, [r1, #8] + ldr r3, _08189260 + ldr r0, [r3] + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08189226 + ldr r0, _08189264 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _08189268 + str r1, [r0] +_08189226: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _0818926C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189270 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08189244: .4byte gUnknown_2023E88 +_08189248: .4byte gUnknown_2023D08 +_0818924C: .4byte gUnknown_20205AC +_08189250: .4byte sub_080A67B4 +_08189254: .4byte sub_08189358 +_08189258: .4byte sub_08189274 +_0818925C: .4byte gUnknown_3005B60 +_08189260: .4byte gUnknown_2024174 +_08189264: .4byte gUnknown_2024158 +_08189268: .4byte sub_0807352C +_0818926C: .4byte gUnknown_3005AC0 +_08189270: .4byte sub_08186214 + thumb_func_end sub_08189164 + + thumb_func_start sub_08189274 +sub_08189274: @ 0x08189274 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r7, _081892CC + ldrb r0, [r7] + mov sb, r0 + ldr r1, _081892D0 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081892AE + ldr r0, _081892D4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081892E0 +_081892AE: + ldr r0, _081892D8 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _081892DC + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_08188304 + b _08189320 + .align 2, 0 +_081892CC: .4byte gUnknown_2023D08 +_081892D0: .4byte gUnknown_3005B60 +_081892D4: .4byte gUnknown_2022C90 +_081892D8: .4byte gUnknown_2022D08 +_081892DC: .4byte gUnknown_2023D12 +_081892E0: + ldr r4, _08189344 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r6, _08189348 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08188304 + ldrb r0, [r7] + movs r5, #2 + eors r0, r5 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_08188304 + ldrb r0, [r7] + eors r0, r5 + strb r0, [r7] +_08189320: + ldr r1, _0818934C + ldr r2, _08189350 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189354 + str r1, [r0] + mov r0, sb + strb r0, [r2] + mov r0, r8 + bl sub_080A8964 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08189344: .4byte gUnknown_2022D08 +_08189348: .4byte gUnknown_2023D12 +_0818934C: .4byte gUnknown_3005AC0 +_08189350: .4byte gUnknown_2023D08 +_08189354: .4byte sub_08186598 + thumb_func_end sub_08189274 + + thumb_func_start sub_08189358 +sub_08189358: @ 0x08189358 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #6] + bl sub_0805DC00 + adds r0, r4, #0 + bl sub_0800730C + adds r0, r4, #0 + bl sub_08006E00 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08189358 + + thumb_func_start sub_08189374 +sub_08189374: @ 0x08189374 + push {r4, r5, r6, r7, lr} + ldr r1, _0818939C + ldr r0, _081893A0 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081893A4 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081893A4 + bl sub_08186ED8 + b _0818946E + .align 2, 0 +_0818939C: .4byte gUnknown_2022D08 +_081893A0: .4byte gUnknown_2023D08 +_081893A4: + ldr r4, _081893FC + ldr r0, [r4] + ldr r3, _08189400 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldr r1, _08189404 + ldrb r2, [r3] + lsls r0, r2, #9 + adds r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r3, #0 + cmp r0, #0 + beq _08189410 + ldr r0, [r4] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r2, [r3, #1] + lsls r1, r2, #0x1b + lsrs r0, r1, #0x1c + cmp r0, #1 + bhi _08189408 + adds r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #1] + b _0818946E + .align 2, 0 +_081893FC: .4byte gUnknown_2024174 +_08189400: .4byte gUnknown_2023D08 +_08189404: .4byte gUnknown_2022D08 +_08189408: + movs r0, #0x1f + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3, #1] +_08189410: + adds r5, r7, #0 + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _08189474 + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _08189478 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r6, _0818947C + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _08189462 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_08189462: + ldr r0, _08189480 + ldrb r1, [r7] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _08189484 + str r0, [r1] +_0818946E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08189474: .4byte gUnknown_2022D0C +_08189478: .4byte gUnknown_2024158 +_0818947C: .4byte gUnknown_2024174 +_08189480: .4byte gUnknown_3005AC0 +_08189484: .4byte sub_08189488 + thumb_func_end sub_08189374 + + thumb_func_start sub_08189488 +sub_08189488: @ 0x08189488 + push {r4, lr} + ldr r4, _081894C8 + ldr r0, [r4] + ldr r3, _081894CC + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _081894C0 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_08186ED8 +_081894C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081894C8: .4byte gUnknown_2024174 +_081894CC: .4byte gUnknown_2023D08 + thumb_func_end sub_08189488 + + thumb_func_start sub_081894D0 +sub_081894D0: @ 0x081894D0 + push {lr} + ldr r0, _0818950C + ldr r1, [r0] + ldr r0, _08189510 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08189502 + ldr r2, _08189514 + ldr r0, _08189518 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0818951C + str r1, [r0] +_08189502: + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 +_0818950C: .4byte gUnknown_2024174 +_08189510: .4byte gUnknown_2023D08 +_08189514: .4byte gUnknown_3005B60 +_08189518: .4byte gUnknown_2024158 +_0818951C: .4byte sub_0807352C + thumb_func_end sub_081894D0 + + thumb_func_start sub_08189520 +sub_08189520: @ 0x08189520 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08189520 + + thumb_func_start sub_0818952C +sub_0818952C: @ 0x0818952C + push {r4, lr} + ldr r4, _0818957C + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189572 + ldr r3, _08189580 + ldr r0, _08189584 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _08189588 + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_08189572: + bl sub_08186ED8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818957C: .4byte gUnknown_2023D08 +_08189580: .4byte gUnknown_20205AC +_08189584: .4byte gUnknown_2023E88 +_08189588: .4byte gUnknown_2022D08 + thumb_func_end sub_0818952C + + thumb_func_start sub_0818958C +sub_0818958C: @ 0x0818958C + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _081895D0 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081895E4 + ldr r5, _081895D4 + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081895D8 + bl sub_08186ED8 + b _081895E4 + .align 2, 0 +_081895D0: .4byte gUnknown_2023D08 +_081895D4: .4byte gUnknown_2022D08 +_081895D8: + ldr r0, _081895EC + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _081895F0 + str r0, [r1] +_081895E4: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081895EC: .4byte gUnknown_3005AC0 +_081895F0: .4byte sub_08186EA8 + thumb_func_end sub_0818958C + + thumb_func_start sub_081895F4 +sub_081895F4: @ 0x081895F4 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081895F4 + + thumb_func_start sub_08189600 +sub_08189600: @ 0x08189600 + push {lr} + bl sub_08186ED8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08189600 + + thumb_func_start sub_0818960C +sub_0818960C: @ 0x0818960C + push {lr} + ldr r1, _08189628 + ldr r0, _0818962C + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r2, [r0] + cmp r2, #3 + bne _08189634 + ldr r0, _08189630 + strb r2, [r0] + b _0818963C + .align 2, 0 +_08189628: .4byte gUnknown_2022D08 +_0818962C: .4byte gUnknown_2023D08 +_08189630: .4byte gUnknown_2023FDE +_08189634: + ldr r0, _08189660 + movs r1, #3 + eors r1, r2 + strb r1, [r0] +_0818963C: + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_08186ED8 + ldr r1, _08189664 + ldr r0, _08189668 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818966C + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08189660: .4byte gUnknown_2023FDE +_08189664: .4byte gUnknown_3005AC0 +_08189668: .4byte gUnknown_2023D08 +_0818966C: .4byte sub_080583C0 + thumb_func_end sub_0818960C + + thumb_func_start sub_08189670 +sub_08189670: @ 0x08189670 + bx lr + .align 2, 0 + thumb_func_end sub_08189670 + + thumb_func_start sub_08189674 +sub_08189674: @ 0x08189674 + bx lr + .align 2, 0 + thumb_func_end sub_08189674 + + thumb_func_start sub_08189678 +sub_08189678: @ 0x08189678 + ldr r1, _08189688 + ldr r0, _0818968C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189690 + str r1, [r0] + bx lr + .align 2, 0 +_08189688: .4byte gUnknown_3005AC0 +_0818968C: .4byte gUnknown_2023D08 +_08189690: .4byte sub_08189694 + thumb_func_end sub_08189678 + + thumb_func_start sub_08189694 +sub_08189694: @ 0x08189694 + push {lr} + ldr r2, _081896C8 + ldr r1, _081896CC + ldr r0, _081896D0 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _081896E0 + ldr r0, _081896D4 + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _081896DC + ldr r0, _081896D8 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _081896E0 + .align 2, 0 +_081896C8: .4byte gUnknown_2023D0C +_081896CC: .4byte gUnknown_82FACB4 +_081896D0: .4byte gUnknown_2023D08 +_081896D4: .4byte gUnknown_2022D08 +_081896D8: .4byte gUnknown_85D39D4 +_081896DC: + bl sub_0818A240 +_081896E0: + pop {r0} + bx r0 + thumb_func_end sub_08189694 + + thumb_func_start sub_081896E4 +sub_081896E4: @ 0x081896E4 + push {lr} + ldr r2, _0818970C + ldr r1, _08189710 + ldr r0, _08189714 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08189718 + cmp r1, r0 + bne _08189708 + bl sub_0818A240 +_08189708: + pop {r0} + bx r0 + .align 2, 0 +_0818970C: .4byte gUnknown_20205AC +_08189710: .4byte gUnknown_2023E88 +_08189714: .4byte gUnknown_2023D08 +_08189718: .4byte sub_08007140 + thumb_func_end sub_081896E4 + + thumb_func_start sub_0818971C +sub_0818971C: @ 0x0818971C + push {r4, r5, r6, lr} + ldr r6, _08189774 + ldr r5, _08189778 + ldr r4, _0818977C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _08189780 + cmp r1, r0 + bne _0818976C + movs r0, #0 + bl sub_0805DBFC + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + bl sub_0818A240 +_0818976C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08189774: .4byte gUnknown_20205AC +_08189778: .4byte gUnknown_2023E88 +_0818977C: .4byte gUnknown_2023D08 +_08189780: .4byte sub_08007140 + thumb_func_end sub_0818971C + + thumb_func_start sub_08189784 +sub_08189784: @ 0x08189784 + push {r4, lr} + ldr r4, _081897C4 + ldr r1, [r4] + ldr r3, _081897C8 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _081897BC + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_0818A240 +_081897BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081897C4: .4byte gUnknown_2024174 +_081897C8: .4byte gUnknown_2023D08 + thumb_func_end sub_08189784 + + thumb_func_start sub_081897CC +sub_081897CC: @ 0x081897CC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r6, #0 + ldr r4, _08189824 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081897E6 + b _0818998C +_081897E6: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189806 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189838 + ldr r0, _08189828 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08189838 +_08189806: + ldr r2, _0818982C + ldr r1, _08189830 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _08189834 + cmp r1, r0 + bne _0818986E + b _08189874 + .align 2, 0 +_08189824: .4byte gUnknown_2023D08 +_08189828: .4byte gUnknown_2022C90 +_0818982C: .4byte gUnknown_20205AC +_08189830: .4byte gUnknown_3005AD0 +_08189834: .4byte sub_08007140 +_08189838: + ldr r2, _08189968 + ldr r5, _0818996C + ldr r0, _08189970 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _08189974 + cmp r4, r0 + bne _0818986E + movs r0, #2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _0818986E + movs r6, #1 +_0818986E: + cmp r6, #0 + bne _08189874 + b _08189A44 +_08189874: + ldr r0, _08189978 + mov sb, r0 + ldr r0, [r0] + ldr r5, _08189970 + ldrb r2, [r5] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4, #1] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08189896 + b _08189A44 +_08189896: + movs r1, #2 + mov r8, r1 + mov r1, r8 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _081898B2 + b _08189A44 +_081898B2: + ldrb r1, [r4] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4] + mov r1, sb + ldr r0, [r1] + ldrb r2, [r5] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r4, #2 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + strb r0, [r1, #1] + mov r0, sb + ldr r2, [r0] + ldrb r0, [r5] + mov r1, r8 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r1, sb + ldr r2, [r1] + ldrb r0, [r5] + mov r1, r8 + eors r1, r0 + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + ands r4, r1 + strb r4, [r0, #1] + ldr r4, _0818997C + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r7, _08189980 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r4, _08189984 + adds r0, r0, r4 + bl sub_0805E5AC + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818994E + ldrb r0, [r5] + mov r1, r8 + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r0, [r0] + muls r0, r6, r0 + adds r0, r0, r4 + bl sub_0805E5AC +_0818994E: + mov r1, sb + ldr r0, [r1] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _08189988 + ldrb r0, [r5] + b _08189A3C + .align 2, 0 +_08189968: .4byte gUnknown_20205AC +_0818996C: .4byte gUnknown_3005AD0 +_08189970: .4byte gUnknown_2023D08 +_08189974: .4byte sub_08007140 +_08189978: .4byte gUnknown_2024174 +_0818997C: .4byte 0x000027F9 +_08189980: .4byte gUnknown_2023D12 +_08189984: .4byte gUnknown_2024190 +_08189988: .4byte gUnknown_3005AC0 +_0818998C: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081899AC + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081899DC + ldr r0, _081899CC + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081899DC +_081899AC: + ldr r2, _081899D0 + ldr r1, _081899D4 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081899D8 + cmp r1, r0 + bne _08189A12 + b _08189A10 + .align 2, 0 +_081899CC: .4byte gUnknown_2022C90 +_081899D0: .4byte gUnknown_20205AC +_081899D4: .4byte gUnknown_3005AD0 +_081899D8: .4byte sub_08007140 +_081899DC: + ldr r2, _08189A50 + ldr r5, _08189A54 + ldr r0, _08189A58 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, _08189A5C + cmp r4, r0 + bne _08189A12 + movs r0, #2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, r4 + bne _08189A12 +_08189A10: + movs r6, #1 +_08189A12: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189A1E + movs r6, #0 +_08189A1E: + cmp r6, #0 + beq _08189A44 + ldr r0, _08189A60 + ldr r0, [r0] + ldr r3, _08189A58 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _08189A64 + ldrb r0, [r3] +_08189A3C: + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189A68 + str r1, [r0] +_08189A44: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08189A50: .4byte gUnknown_20205AC +_08189A54: .4byte gUnknown_3005AD0 +_08189A58: .4byte gUnknown_2023D08 +_08189A5C: .4byte sub_08007140 +_08189A60: .4byte gUnknown_2024174 +_08189A64: .4byte gUnknown_3005AC0 +_08189A68: .4byte sub_08189784 + thumb_func_end sub_081897CC + + thumb_func_start sub_08189A6C +sub_08189A6C: @ 0x08189A6C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r0, #0 + mov sl, r0 + ldr r4, _08189C48 + ldrb r0, [r4] + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08189AEA + ldr r5, _08189C4C + ldr r0, [r5] + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r6, #0x88 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08189AB8 + ldr r0, _08189C50 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08189C54 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_08189AB8: + ldr r2, [r5] + ldrb r1, [r4] + movs r0, #2 + adds r3, r0, #0 + eors r3, r1 + ldr r1, [r2, #4] + lsls r2, r3, #1 + adds r0, r2, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08189AEA + ldr r0, _08189C50 + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _08189C54 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_08172CD4 +_08189AEA: + ldr r3, _08189C4C + ldr r0, [r3] + ldr r2, _08189C48 + ldrb r5, [r2] + ldr r4, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r6, r0, r4 + ldrb r1, [r6] + movs r0, #8 + mov ip, r0 + ands r0, r1 + mov sb, r2 + mov r8, r3 + cmp r0, #0 + bne _08189BCE + movs r7, #2 + adds r1, r7, #0 + eors r1, r5 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + mov r0, ip + ands r0, r1 + cmp r0, #0 + bne _08189BCE + ldrb r1, [r6, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08189BB0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189B80 + ldr r0, _08189C58 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08189B80 + ldr r4, _08189C5C + mov r1, sb + ldrb r0, [r1] + adds r1, r7, #0 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _08189C50 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08189C54 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + mov r1, sb + ldrb r0, [r1] + eors r0, r7 + bl sub_08076320 + mov r1, sb + ldrb r0, [r1] + eors r0, r7 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_08189B80: + ldr r5, _08189C5C + ldr r4, _08189C48 + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _08189C50 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _08189C54 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 +_08189BB0: + ldr r4, _08189C4C + ldr r0, [r4] + ldr r3, _08189C48 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #1] + mov sb, r3 + mov r8, r4 +_08189BCE: + mov r1, r8 + ldr r0, [r1] + mov r1, sb + ldrb r2, [r1] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0x80 + bne _08189C8E + movs r1, #2 + eors r1, r2 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08189C8E + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08189C8E + mov r1, r8 + ldr r0, [r1] + mov r1, sb + ldrb r2, [r1] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08189C70 + ldr r0, _08189C58 + ldr r0, [r0] + movs r1, #0x42 + ands r0, r1 + cmp r0, #0x42 + bne _08189C64 + adds r0, r2, #0 + bl sub_080A630C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08189C70 + ldr r0, _08189C60 + bl m4aMPlayContinue + b _08189C70 + .align 2, 0 +_08189C48: .4byte gUnknown_2023D08 +_08189C4C: .4byte gUnknown_2024174 +_08189C50: .4byte gUnknown_2023D12 +_08189C54: .4byte gUnknown_2024190 +_08189C58: .4byte gUnknown_2022C90 +_08189C5C: .4byte gUnknown_3005AD0 +_08189C60: .4byte gUnknown_30074D0 +_08189C64: + ldr r0, _08189D64 + ldr r1, _08189D68 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl +_08189C70: + ldr r0, _08189D6C + ldr r2, [r0] + ldr r0, _08189D70 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #1] + movs r2, #0x20 + orrs r1, r2 + strb r1, [r0, #1] + movs r0, #1 + mov sl, r0 +_08189C8E: + mov r1, sl + cmp r1, #0 + beq _08189D56 + ldr r7, _08189D74 + ldr r6, _08189D78 + ldr r5, _08189D70 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r7, #0 + adds r4, #0x1c + adds r0, r0, r4 + ldr r2, [r0] + ldr r0, _08189D7C + cmp r2, r0 + bne _08189D56 + ldr r0, _08189D80 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, r2 + bne _08189D56 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08189CF4 + ldr r0, _08189D84 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08189CF4 + ldrb r1, [r5] + movs r0, #2 + eors r0, r1 + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + bl sub_08006E00 +_08189CF4: + ldr r1, _08189D78 + ldr r4, _08189D70 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08189D74 + adds r0, r0, r1 + bl sub_08006E00 + ldr r3, _08189D6C + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r0, [r3] + ldrb r2, [r4] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #1] + ldr r1, _08189D88 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _08189D8C + str r1, [r0] +_08189D56: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08189D64: .4byte gUnknown_30074D0 +_08189D68: .4byte 0x0000FFFF +_08189D6C: .4byte gUnknown_2024174 +_08189D70: .4byte gUnknown_2023D08 +_08189D74: .4byte gUnknown_20205AC +_08189D78: .4byte gUnknown_3005ADC +_08189D7C: .4byte sub_08007140 +_08189D80: .4byte gUnknown_2023E88 +_08189D84: .4byte gUnknown_2022C90 +_08189D88: .4byte gUnknown_3005AC0 +_08189D8C: .4byte sub_081897CC + thumb_func_end sub_08189A6C + + thumb_func_start sub_08189D90 +sub_08189D90: @ 0x08189D90 + push {lr} + ldr r2, _08189DC4 + ldr r1, _08189DC8 + ldr r0, _08189DCC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _08189DBE + movs r2, #0x24 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _08189DBE + bl sub_0818A240 +_08189DBE: + pop {r0} + bx r0 + .align 2, 0 +_08189DC4: .4byte gUnknown_20205AC +_08189DC8: .4byte gUnknown_2023E88 +_08189DCC: .4byte gUnknown_2023D08 + thumb_func_end sub_08189D90 + + thumb_func_start sub_08189DD0 +sub_08189DD0: @ 0x08189DD0 + push {r4, r5, r6, lr} + ldr r5, _08189E10 + ldrb r0, [r5] + ldr r6, _08189E14 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08189E18 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _08189E32 + .align 2, 0 +_08189E10: .4byte gUnknown_2023D08 +_08189E14: .4byte gUnknown_3005AD0 +_08189E18: + ldr r2, _08189E38 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _08189E3C + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_0818A240 +_08189E32: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08189E38: .4byte gUnknown_2023D12 +_08189E3C: .4byte gUnknown_2024190 + thumb_func_end sub_08189DD0 + + thumb_func_start sub_08189E40 +sub_08189E40: @ 0x08189E40 + push {r4, r5, r6, lr} + ldr r6, _08189EC4 + ldr r5, _08189EC8 + ldr r4, _08189ECC + ldrb r2, [r4] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r3, #0x26 + ldrsh r0, [r0, r3] + adds r1, r1, r0 + cmp r1, #0xa0 + ble _08189EBC + ldr r1, _08189ED0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _08189ED4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0805DB50 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r1, _08189ED8 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0818A240 +_08189EBC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08189EC4: .4byte gUnknown_20205AC +_08189EC8: .4byte gUnknown_2023E88 +_08189ECC: .4byte gUnknown_2023D08 +_08189ED0: .4byte gUnknown_2023D12 +_08189ED4: .4byte gUnknown_2024190 +_08189ED8: .4byte gUnknown_3005AD0 + thumb_func_end sub_08189E40 + + thumb_func_start sub_08189EDC +sub_08189EDC: @ 0x08189EDC + push {r4, r5, r6, lr} + ldr r0, _08189F38 + ldr r0, [r0] + ldr r6, _08189F3C + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08189F30 + ldr r5, _08189F40 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _08189F44 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _08189F48 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0818A240 +_08189F30: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08189F38: .4byte gUnknown_2024174 +_08189F3C: .4byte gUnknown_2023D08 +_08189F40: .4byte gUnknown_2023E88 +_08189F44: .4byte gUnknown_20205AC +_08189F48: .4byte gUnknown_3005AD0 + thumb_func_end sub_08189EDC + + thumb_func_start sub_08189F4C +sub_08189F4C: @ 0x08189F4C + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08189F5E + bl sub_0818A240 +_08189F5E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08189F4C + + thumb_func_start sub_08189F64 +sub_08189F64: @ 0x08189F64 + push {r4, lr} + ldr r1, _08189FA0 + ldr r0, _08189FA4 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _08189FA8 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _08189FB0 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _08189FAC + strb r3, [r0] + bl sub_0818A240 + b _08189FDA + .align 2, 0 +_08189FA0: .4byte gUnknown_2023E88 +_08189FA4: .4byte gUnknown_2023D08 +_08189FA8: .4byte gUnknown_20205AC +_08189FAC: .4byte gUnknown_202415D +_08189FB0: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08189FD4 + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08189FD4: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_08189FDA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08189F64 + + thumb_func_start sub_08189FE0 +sub_08189FE0: @ 0x08189FE0 + push {r4, lr} + ldr r2, _0818A038 + ldr r0, _0818A03C + ldr r4, _0818A040 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0818A044 + cmp r1, r0 + bne _0818A032 + adds r0, r3, #0 + bl sub_0805E024 + ldr r0, _0818A048 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0818A026 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 +_0818A026: + ldr r0, _0818A04C + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0818A050 + str r0, [r1] +_0818A032: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818A038: .4byte gUnknown_20205AC +_0818A03C: .4byte gUnknown_3005AD0 +_0818A040: .4byte gUnknown_2023D08 +_0818A044: .4byte sub_08007140 +_0818A048: .4byte gUnknown_2024174 +_0818A04C: .4byte gUnknown_3005AC0 +_0818A050: .4byte sub_0818A054 + thumb_func_end sub_08189FE0 + + thumb_func_start sub_0818A054 +sub_0818A054: @ 0x0818A054 + push {lr} + ldr r0, _0818A094 + ldr r1, [r0] + ldr r0, _0818A098 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0818A090 + ldr r2, _0818A09C + ldr r0, _0818A0A0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _0818A0A4 + cmp r1, r0 + bne _0818A090 + bl sub_0818A240 +_0818A090: + pop {r0} + bx r0 + .align 2, 0 +_0818A094: .4byte gUnknown_2024174 +_0818A098: .4byte gUnknown_2023D08 +_0818A09C: .4byte gUnknown_20205AC +_0818A0A0: .4byte gUnknown_2023E88 +_0818A0A4: .4byte sub_08007140 + thumb_func_end sub_0818A054 + + thumb_func_start sub_0818A0A8 +sub_0818A0A8: @ 0x0818A0A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r3, _0818A170 + ldr r0, [r3] + ldr r7, _0818A174 + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0818A164 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _0818A178 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r0, _0818A17C + movs r1, #0xa + bl sub_080A8878 + ldr r0, _0818A180 + mov r8, r0 + ldrb r1, [r7] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _0818A184 + adds r0, r0, r5 + bl sub_0805E5AC + ldr r1, _0818A188 + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0818A18C + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _0818A190 + ldrb r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r1, r1, #1 + add r1, r8 + ldrh r1, [r1] + muls r1, r6, r1 + adds r1, r1, r5 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + bl sub_08076320 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldr r1, _0818A194 + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818A198 + str r1, [r0] +_0818A164: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818A170: .4byte gUnknown_2024174 +_0818A174: .4byte gUnknown_2023D08 +_0818A178: .4byte 0x000027F9 +_0818A17C: .4byte sub_08058D10 +_0818A180: .4byte gUnknown_2023D12 +_0818A184: .4byte gUnknown_2024190 +_0818A188: .4byte gUnknown_2023E88 +_0818A18C: .4byte gUnknown_20205AC +_0818A190: .4byte gUnknown_3005AD0 +_0818A194: .4byte gUnknown_3005AC0 +_0818A198: .4byte sub_08189FE0 + thumb_func_end sub_0818A0A8 + + thumb_func_start sub_0818A19C +sub_0818A19C: @ 0x0818A19C + push {r4, r5, r6, lr} + ldr r6, _0818A21C + ldr r0, [r6] + ldr r4, _0818A220 + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _0818A1CE + ldr r0, _0818A224 + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0818A228 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_0818A1CE: + ldr r5, _0818A22C + ldr r0, _0818A230 + ldrb r2, [r4] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _0818A234 + cmp r1, r0 + bne _0818A214 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0818A214 + adds r0, r3, r5 + bl sub_08006E00 + ldr r1, _0818A238 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818A23C + str r1, [r0] +_0818A214: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818A21C: .4byte gUnknown_2024174 +_0818A220: .4byte gUnknown_2023D08 +_0818A224: .4byte gUnknown_2023D12 +_0818A228: .4byte gUnknown_2024190 +_0818A22C: .4byte gUnknown_20205AC +_0818A230: .4byte gUnknown_3005ADC +_0818A234: .4byte sub_08007140 +_0818A238: .4byte gUnknown_3005AC0 +_0818A23C: .4byte sub_0818A0A8 + thumb_func_end sub_0818A19C + + thumb_func_start sub_0818A240 +sub_0818A240: @ 0x0818A240 + push {r4, lr} + sub sp, #4 + ldr r1, _0818A280 + ldr r4, _0818A284 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818A288 + str r1, [r0] + ldr r0, _0818A28C + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0818A294 + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _0818A290 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _0818A2A6 + .align 2, 0 +_0818A280: .4byte gUnknown_3005AC0 +_0818A284: .4byte gUnknown_2023D08 +_0818A288: .4byte sub_08189694 +_0818A28C: .4byte gUnknown_2022C90 +_0818A290: .4byte gUnknown_2022D08 +_0818A294: + ldr r2, _0818A2B0 + ldr r1, _0818A2B4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_0818A2A6: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818A2B0: .4byte gUnknown_2023D0C +_0818A2B4: .4byte gUnknown_82FACB4 + thumb_func_end sub_0818A240 + + thumb_func_start sub_0818A2B8 +sub_0818A2B8: @ 0x0818A2B8 + push {lr} + ldr r0, _0818A2E0 + ldr r2, [r0] + ldr r0, _0818A2E4 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0818A2DA + bl sub_0818A240 +_0818A2DA: + pop {r0} + bx r0 + .align 2, 0 +_0818A2E0: .4byte gUnknown_2024174 +_0818A2E4: .4byte gUnknown_2023D08 + thumb_func_end sub_0818A2B8 + + thumb_func_start sub_0818A2E8 +sub_0818A2E8: @ 0x0818A2E8 + push {lr} + ldr r0, _0818A310 + ldr r2, [r0] + ldr r0, _0818A314 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0818A30A + bl sub_0818A240 +_0818A30A: + pop {r0} + bx r0 + .align 2, 0 +_0818A310: .4byte gUnknown_2024174 +_0818A314: .4byte gUnknown_2023D08 + thumb_func_end sub_0818A2E8 + + thumb_func_start sub_0818A318 +sub_0818A318: @ 0x0818A318 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _0818A344 + ldr r0, _0818A348 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0818A350 + ldr r0, _0818A34C + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_0818A38C + adds r6, r0, #0 + b _0818A372 + .align 2, 0 +_0818A344: .4byte gUnknown_2022D08 +_0818A348: .4byte gUnknown_2023D08 +_0818A34C: .4byte gUnknown_2023D12 +_0818A350: + ldrb r4, [r1] + movs r5, #0 +_0818A354: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0818A36A + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_0818A38C + adds r6, r6, r0 +_0818A36A: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _0818A354 +_0818A372: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_0818A240 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818A318 + + thumb_func_start sub_0818A38C +sub_0818A38C: @ 0x0818A38C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _0818A3C0 + ldr r3, _0818A3C4 + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _0818A3B6 + bl _0818AB22 +_0818A3B6: + lsls r0, r0, #2 + ldr r1, _0818A3C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818A3C0: .4byte gUnknown_2022D08 +_0818A3C4: .4byte gUnknown_2023D08 +_0818A3C8: .4byte _0818A3CC +_0818A3CC: @ jump table + .4byte _0818A4BC @ case 0 + .4byte _0818A6E0 @ case 1 + .4byte _0818A6F0 @ case 2 + .4byte _0818A700 @ case 3 + .4byte _0818A768 @ case 4 + .4byte _0818A768 @ case 5 + .4byte _0818A768 @ case 6 + .4byte _0818A768 @ case 7 + .4byte _0818A784 @ case 8 + .4byte _0818A7C0 @ case 9 + .4byte _0818A7C0 @ case 10 + .4byte _0818A7C0 @ case 11 + .4byte _0818A7C0 @ case 12 + .4byte _0818AB22 @ case 13 + .4byte _0818AB22 @ case 14 + .4byte _0818AB22 @ case 15 + .4byte _0818AB22 @ case 16 + .4byte _0818A7DC @ case 17 + .4byte _0818A7EC @ case 18 + .4byte _0818A81C @ case 19 + .4byte _0818A82C @ case 20 + .4byte _0818A83C @ case 21 + .4byte _0818A84C @ case 22 + .4byte _0818A85C @ case 23 + .4byte _0818A86C @ case 24 + .4byte _0818A87C @ case 25 + .4byte _0818A88C @ case 26 + .4byte _0818A89C @ case 27 + .4byte _0818A8AC @ case 28 + .4byte _0818A8BC @ case 29 + .4byte _0818A8CC @ case 30 + .4byte _0818A8DC @ case 31 + .4byte _0818A92C @ case 32 + .4byte _0818A93C @ case 33 + .4byte _0818A94C @ case 34 + .4byte _0818A95C @ case 35 + .4byte _0818A96C @ case 36 + .4byte _0818A97C @ case 37 + .4byte _0818A98C @ case 38 + .4byte _0818A99C @ case 39 + .4byte _0818A9AC @ case 40 + .4byte _0818A9E0 @ case 41 + .4byte _0818A9F0 @ case 42 + .4byte _0818AA00 @ case 43 + .4byte _0818AA10 @ case 44 + .4byte _0818AA20 @ case 45 + .4byte _0818AA30 @ case 46 + .4byte _0818AA40 @ case 47 + .4byte _0818AA50 @ case 48 + .4byte _0818AA70 @ case 49 + .4byte _0818AA80 @ case 50 + .4byte _0818AA90 @ case 51 + .4byte _0818AAA0 @ case 52 + .4byte _0818AAB0 @ case 53 + .4byte _0818AAC0 @ case 54 + .4byte _0818AAD0 @ case 55 + .4byte _0818AAE0 @ case 56 + .4byte _0818AAF0 @ case 57 + .4byte _0818AB00 @ case 58 + .4byte _0818AB10 @ case 59 +_0818A4BC: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818A6D0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_0818A508: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _0818A508 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818A6D0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _0818A6D4 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _0818A6D8 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _0818A6DC + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_0818A6C0: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _0818A6C0 + b _0818AB22 + .align 2, 0 +_0818A6D0: .4byte gUnknown_2024190 +_0818A6D4: .4byte 0xFFFFFC1F +_0818A6D8: .4byte 0xFFF07FFF +_0818A6DC: .4byte 0xFFFFFE0F +_0818A6E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A6EC + adds r0, r0, r1 + movs r1, #0xb + b _0818AA5A + .align 2, 0 +_0818A6EC: .4byte gUnknown_2024190 +_0818A6F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A6FC + adds r0, r0, r1 + movs r1, #0xc + b _0818AA5A + .align 2, 0 +_0818A6FC: .4byte gUnknown_2024190 +_0818A700: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0818A764 + adds r4, r1, r0 + mov r8, sb +_0818A716: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _0818A716 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A764 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_0818A754: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _0818A754 + b _0818AB22 + .align 2, 0 +_0818A764: .4byte gUnknown_2024190 +_0818A768: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A780 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _0818AA5A + .align 2, 0 +_0818A780: .4byte gUnknown_2024190 +_0818A784: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _0818A7BC + mov r8, r2 +_0818A790: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _0818A790 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A7BC + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _0818AB22 + .align 2, 0 +_0818A7BC: .4byte gUnknown_2024190 +_0818A7C0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A7D8 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _0818AB1A + .align 2, 0 +_0818A7D8: .4byte gUnknown_2024190 +_0818A7DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A7E8 + adds r0, r0, r1 + movs r1, #1 + b _0818A7F6 + .align 2, 0 +_0818A7E8: .4byte gUnknown_2024190 +_0818A7EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A818 + adds r0, r0, r1 + movs r1, #0x19 +_0818A7F6: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _0818AB22 + .align 2, 0 +_0818A818: .4byte gUnknown_2024190 +_0818A81C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A828 + adds r0, r0, r1 + movs r1, #0x1a + b _0818AB1A + .align 2, 0 +_0818A828: .4byte gUnknown_2024190 +_0818A82C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A838 + adds r0, r0, r1 + movs r1, #0x1b + b _0818AB1A + .align 2, 0 +_0818A838: .4byte gUnknown_2024190 +_0818A83C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A848 + adds r0, r0, r1 + movs r1, #0x1c + b _0818AB1A + .align 2, 0 +_0818A848: .4byte gUnknown_2024190 +_0818A84C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A858 + adds r0, r0, r1 + movs r1, #0x1d + b _0818AB1A + .align 2, 0 +_0818A858: .4byte gUnknown_2024190 +_0818A85C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A868 + adds r0, r0, r1 + movs r1, #0x1e + b _0818AB1A + .align 2, 0 +_0818A868: .4byte gUnknown_2024190 +_0818A86C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A878 + adds r0, r0, r1 + movs r1, #0x1f + b _0818AB1A + .align 2, 0 +_0818A878: .4byte gUnknown_2024190 +_0818A87C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A888 + adds r0, r0, r1 + movs r1, #0x20 + b _0818AB1A + .align 2, 0 +_0818A888: .4byte gUnknown_2024190 +_0818A88C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A898 + adds r0, r0, r1 + movs r1, #0x22 + b _0818AB1A + .align 2, 0 +_0818A898: .4byte gUnknown_2024190 +_0818A89C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A8A8 + adds r0, r0, r1 + movs r1, #0x23 + b _0818AB1A + .align 2, 0 +_0818A8A8: .4byte gUnknown_2024190 +_0818A8AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A8B8 + adds r0, r0, r1 + movs r1, #0x24 + b _0818AB1A + .align 2, 0 +_0818A8B8: .4byte gUnknown_2024190 +_0818A8BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A8C8 + adds r0, r0, r1 + movs r1, #0x25 + b _0818AB1A + .align 2, 0 +_0818A8C8: .4byte gUnknown_2024190 +_0818A8CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A8D8 + adds r0, r0, r1 + movs r1, #0x26 + b _0818AB1A + .align 2, 0 +_0818A8D8: .4byte gUnknown_2024190 +_0818A8DC: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818A928 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _0818AB22 + .align 2, 0 +_0818A928: .4byte gUnknown_2024190 +_0818A92C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A938 + adds r0, r0, r1 + movs r1, #0x27 + b _0818AB1A + .align 2, 0 +_0818A938: .4byte gUnknown_2024190 +_0818A93C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A948 + adds r0, r0, r1 + movs r1, #0x28 + b _0818AB1A + .align 2, 0 +_0818A948: .4byte gUnknown_2024190 +_0818A94C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A958 + adds r0, r0, r1 + movs r1, #0x29 + b _0818AB1A + .align 2, 0 +_0818A958: .4byte gUnknown_2024190 +_0818A95C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A968 + adds r0, r0, r1 + movs r1, #0x2a + b _0818AB1A + .align 2, 0 +_0818A968: .4byte gUnknown_2024190 +_0818A96C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A978 + adds r0, r0, r1 + movs r1, #0x2b + b _0818AB1A + .align 2, 0 +_0818A978: .4byte gUnknown_2024190 +_0818A97C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A988 + adds r0, r0, r1 + movs r1, #0x2c + b _0818AB1A + .align 2, 0 +_0818A988: .4byte gUnknown_2024190 +_0818A98C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A998 + adds r0, r0, r1 + movs r1, #0 + b _0818A9B6 + .align 2, 0 +_0818A998: .4byte gUnknown_2024190 +_0818A99C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A9A8 + adds r0, r0, r1 + movs r1, #9 + b _0818AA5A + .align 2, 0 +_0818A9A8: .4byte gUnknown_2024190 +_0818A9AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A9DC + adds r0, r0, r1 + movs r1, #0x37 +_0818A9B6: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _0818AB22 + .align 2, 0 +_0818A9DC: .4byte gUnknown_2024190 +_0818A9E0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A9EC + adds r0, r0, r1 + movs r1, #0x38 + b _0818AB1A + .align 2, 0 +_0818A9EC: .4byte gUnknown_2024190 +_0818A9F0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818A9FC + adds r0, r0, r1 + movs r1, #0x39 + b _0818AA5A + .align 2, 0 +_0818A9FC: .4byte gUnknown_2024190 +_0818AA00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA0C + adds r0, r0, r1 + movs r1, #0x3a + b _0818AA5A + .align 2, 0 +_0818AA0C: .4byte gUnknown_2024190 +_0818AA10: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA1C + adds r0, r0, r1 + movs r1, #0x3b + b _0818AA5A + .align 2, 0 +_0818AA1C: .4byte gUnknown_2024190 +_0818AA20: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA2C + adds r0, r0, r1 + movs r1, #0x3c + b _0818AA5A + .align 2, 0 +_0818AA2C: .4byte gUnknown_2024190 +_0818AA30: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA3C + adds r0, r0, r1 + movs r1, #0x3d + b _0818AA5A + .align 2, 0 +_0818AA3C: .4byte gUnknown_2024190 +_0818AA40: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA4C + adds r0, r0, r1 + movs r1, #0x3e + b _0818AA5A + .align 2, 0 +_0818AA4C: .4byte gUnknown_2024190 +_0818AA50: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA6C + adds r0, r0, r1 + movs r1, #0x3f +_0818AA5A: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _0818AB22 + .align 2, 0 +_0818AA6C: .4byte gUnknown_2024190 +_0818AA70: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA7C + adds r0, r0, r1 + movs r1, #0x16 + b _0818AB1A + .align 2, 0 +_0818AA7C: .4byte gUnknown_2024190 +_0818AA80: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA8C + adds r0, r0, r1 + movs r1, #0x17 + b _0818AB1A + .align 2, 0 +_0818AA8C: .4byte gUnknown_2024190 +_0818AA90: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AA9C + adds r0, r0, r1 + movs r1, #0x18 + b _0818AB1A + .align 2, 0 +_0818AA9C: .4byte gUnknown_2024190 +_0818AAA0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AAAC + adds r0, r0, r1 + movs r1, #0x21 + b _0818AB1A + .align 2, 0 +_0818AAAC: .4byte gUnknown_2024190 +_0818AAB0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AABC + adds r0, r0, r1 + movs r1, #0x2f + b _0818AB1A + .align 2, 0 +_0818AABC: .4byte gUnknown_2024190 +_0818AAC0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AACC + adds r0, r0, r1 + movs r1, #0x30 + b _0818AB1A + .align 2, 0 +_0818AACC: .4byte gUnknown_2024190 +_0818AAD0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AADC + adds r0, r0, r1 + movs r1, #0x32 + b _0818AB1A + .align 2, 0 +_0818AADC: .4byte gUnknown_2024190 +_0818AAE0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AAEC + adds r0, r0, r1 + movs r1, #0x33 + b _0818AB1A + .align 2, 0 +_0818AAEC: .4byte gUnknown_2024190 +_0818AAF0: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AAFC + adds r0, r0, r1 + movs r1, #0x34 + b _0818AB1A + .align 2, 0 +_0818AAFC: .4byte gUnknown_2024190 +_0818AB00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AB0C + adds r0, r0, r1 + movs r1, #0x35 + b _0818AB1A + .align 2, 0 +_0818AB0C: .4byte gUnknown_2024190 +_0818AB10: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AB34 + adds r0, r0, r1 + movs r1, #0x36 +_0818AB1A: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_0818AB22: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818AB34: .4byte gUnknown_2024190 + thumb_func_end sub_0818A38C + + thumb_func_start sub_0818AB38 +sub_0818AB38: @ 0x0818AB38 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818AB38 + + thumb_func_start sub_0818AB44 +sub_0818AB44: @ 0x0818AB44 + push {r4, r5, lr} + ldr r1, _0818AB68 + ldr r0, _0818AB6C + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _0818AB74 + ldr r0, _0818AB70 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_0818AB9C + b _0818AB92 + .align 2, 0 +_0818AB68: .4byte gUnknown_2022D08 +_0818AB6C: .4byte gUnknown_2023D08 +_0818AB70: .4byte gUnknown_2023D12 +_0818AB74: + ldrb r4, [r1] + movs r5, #0 +_0818AB78: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0818AB86 + adds r0, r5, #0 + bl sub_0818AB9C +_0818AB86: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _0818AB78 +_0818AB92: + bl sub_0818A240 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0818AB44 + + thumb_func_start sub_0818AB9C +sub_0818AB9C: @ 0x0818AB9C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0818ABD4 + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r2, _0818ABD8 + adds r3, r0, r2 + adds r6, r3, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r2, #0 + cmp r0, #0x3b + bls _0818ABC8 + bl _0818B562 +_0818ABC8: + lsls r0, r0, #2 + ldr r1, _0818ABDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818ABD4: .4byte gUnknown_2023D08 +_0818ABD8: .4byte gUnknown_2022D0B +_0818ABDC: .4byte _0818ABE0 +_0818ABE0: @ jump table + .4byte _0818ACD0 @ case 0 + .4byte _0818AE68 @ case 1 + .4byte _0818AE88 @ case 2 + .4byte _0818AEA8 @ case 3 + .4byte _0818AF00 @ case 4 + .4byte _0818AF00 @ case 5 + .4byte _0818AF00 @ case 6 + .4byte _0818AF00 @ case 7 + .4byte _0818AF28 @ case 8 + .4byte _0818AF8C @ case 9 + .4byte _0818AF8C @ case 10 + .4byte _0818AF8C @ case 11 + .4byte _0818AF8C @ case 12 + .4byte _0818B562 @ case 13 + .4byte _0818B562 @ case 14 + .4byte _0818B562 @ case 15 + .4byte _0818B562 @ case 16 + .4byte _0818AFBC @ case 17 + .4byte _0818AFDC @ case 18 + .4byte _0818AFFC @ case 19 + .4byte _0818B01C @ case 20 + .4byte _0818B03C @ case 21 + .4byte _0818B05C @ case 22 + .4byte _0818B07C @ case 23 + .4byte _0818B09C @ case 24 + .4byte _0818B0BC @ case 25 + .4byte _0818B0DC @ case 26 + .4byte _0818B0FC @ case 27 + .4byte _0818B11C @ case 28 + .4byte _0818B13C @ case 29 + .4byte _0818B15C @ case 30 + .4byte _0818B17C @ case 31 + .4byte _0818B1EC @ case 32 + .4byte _0818B20C @ case 33 + .4byte _0818B22C @ case 34 + .4byte _0818B24C @ case 35 + .4byte _0818B26C @ case 36 + .4byte _0818B28C @ case 37 + .4byte _0818B2AC @ case 38 + .4byte _0818B2CC @ case 39 + .4byte _0818B2EC @ case 40 + .4byte _0818B30C @ case 41 + .4byte _0818B32C @ case 42 + .4byte _0818B34C @ case 43 + .4byte _0818B36C @ case 44 + .4byte _0818B38C @ case 45 + .4byte _0818B3AC @ case 46 + .4byte _0818B3CC @ case 47 + .4byte _0818B3EC @ case 48 + .4byte _0818B40C @ case 49 + .4byte _0818B42C @ case 50 + .4byte _0818B44C @ case 51 + .4byte _0818B46C @ case 52 + .4byte _0818B48C @ case 53 + .4byte _0818B4AC @ case 54 + .4byte _0818B4CC @ case 55 + .4byte _0818B4EC @ case 56 + .4byte _0818B50C @ case 57 + .4byte _0818B52C @ case 58 + .4byte _0818B54C @ case 59 +_0818ACD0: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818AE64 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r6, #0 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r6 + mov sl, r0 + adds r0, r6, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r6, #2 + str r0, [sp, #4] + adds r0, r6, #4 + str r0, [sp, #8] + adds r0, r6, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r7, r6, #0 + adds r7, #0x24 + adds r4, r6, #0 + adds r4, #0xc +_0818AD36: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r7, #0 + bl sub_0806A774 + adds r7, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0818AD36 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818AE64 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r6, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AE64: .4byte gUnknown_2024190 +_0818AE68: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AE80 + adds r0, r0, r1 + ldr r1, _0818AE84 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xb + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AE80: .4byte gUnknown_2024190 +_0818AE84: .4byte gUnknown_2023D08 +_0818AE88: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AEA0 + adds r0, r0, r1 + ldr r1, _0818AEA4 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xc + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AEA0: .4byte gUnknown_2024190 +_0818AEA4: .4byte gUnknown_2023D08 +_0818AEA8: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r3 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _0818AEFC + adds r7, r1, r0 + adds r6, r3, #0 + adds r6, #8 + adds r4, r3, #0 +_0818AEC2: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _0818AEC2 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AEFC + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AEFC: .4byte gUnknown_2024190 +_0818AF00: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AF1C + adds r0, r0, r1 + ldr r3, _0818AF20 + ldr r1, _0818AF24 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _0818AFA4 + .align 2, 0 +_0818AF1C: .4byte gUnknown_2024190 +_0818AF20: .4byte gUnknown_2022D08 +_0818AF24: .4byte gUnknown_2023D08 +_0818AF28: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818AF84 + adds r4, r4, r0 + ldr r5, _0818AF88 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AF84: .4byte gUnknown_2024190 +_0818AF88: .4byte gUnknown_2023D08 +_0818AF8C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AFB0 + adds r0, r0, r1 + ldr r3, _0818AFB4 + ldr r1, _0818AFB8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_0818AFA4: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AFB0: .4byte gUnknown_2024190 +_0818AFB4: .4byte gUnknown_2022D08 +_0818AFB8: .4byte gUnknown_2023D08 +_0818AFBC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AFD4 + adds r0, r0, r1 + ldr r1, _0818AFD8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #1 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AFD4: .4byte gUnknown_2024190 +_0818AFD8: .4byte gUnknown_2023D08 +_0818AFDC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818AFF4 + adds r0, r0, r1 + ldr r1, _0818AFF8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x19 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818AFF4: .4byte gUnknown_2024190 +_0818AFF8: .4byte gUnknown_2023D08 +_0818AFFC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B014 + adds r0, r0, r1 + ldr r1, _0818B018 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1a + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B014: .4byte gUnknown_2024190 +_0818B018: .4byte gUnknown_2023D08 +_0818B01C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B034 + adds r0, r0, r1 + ldr r1, _0818B038 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1b + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B034: .4byte gUnknown_2024190 +_0818B038: .4byte gUnknown_2023D08 +_0818B03C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B054 + adds r0, r0, r1 + ldr r1, _0818B058 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1c + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B054: .4byte gUnknown_2024190 +_0818B058: .4byte gUnknown_2023D08 +_0818B05C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B074 + adds r0, r0, r1 + ldr r1, _0818B078 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1d + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B074: .4byte gUnknown_2024190 +_0818B078: .4byte gUnknown_2023D08 +_0818B07C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B094 + adds r0, r0, r1 + ldr r1, _0818B098 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1e + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B094: .4byte gUnknown_2024190 +_0818B098: .4byte gUnknown_2023D08 +_0818B09C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B0B4 + adds r0, r0, r1 + ldr r1, _0818B0B8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1f + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B0B4: .4byte gUnknown_2024190 +_0818B0B8: .4byte gUnknown_2023D08 +_0818B0BC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B0D4 + adds r0, r0, r1 + ldr r1, _0818B0D8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x20 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B0D4: .4byte gUnknown_2024190 +_0818B0D8: .4byte gUnknown_2023D08 +_0818B0DC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B0F4 + adds r0, r0, r1 + ldr r1, _0818B0F8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x22 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B0F4: .4byte gUnknown_2024190 +_0818B0F8: .4byte gUnknown_2023D08 +_0818B0FC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B114 + adds r0, r0, r1 + ldr r1, _0818B118 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x23 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B114: .4byte gUnknown_2024190 +_0818B118: .4byte gUnknown_2023D08 +_0818B11C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B134 + adds r0, r0, r1 + ldr r1, _0818B138 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x24 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B134: .4byte gUnknown_2024190 +_0818B138: .4byte gUnknown_2023D08 +_0818B13C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B154 + adds r0, r0, r1 + ldr r1, _0818B158 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x25 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B154: .4byte gUnknown_2024190 +_0818B158: .4byte gUnknown_2023D08 +_0818B15C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B174 + adds r0, r0, r1 + ldr r1, _0818B178 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x26 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B174: .4byte gUnknown_2024190 +_0818B178: .4byte gUnknown_2023D08 +_0818B17C: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _0818B1E4 + adds r4, r4, r0 + ldr r5, _0818B1E8 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _0818B29C + .align 2, 0 +_0818B1E4: .4byte gUnknown_2024190 +_0818B1E8: .4byte gUnknown_2023D08 +_0818B1EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B204 + adds r0, r0, r1 + ldr r1, _0818B208 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x27 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B204: .4byte gUnknown_2024190 +_0818B208: .4byte gUnknown_2023D08 +_0818B20C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B224 + adds r0, r0, r1 + ldr r1, _0818B228 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x28 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B224: .4byte gUnknown_2024190 +_0818B228: .4byte gUnknown_2023D08 +_0818B22C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B244 + adds r0, r0, r1 + ldr r1, _0818B248 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x29 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B244: .4byte gUnknown_2024190 +_0818B248: .4byte gUnknown_2023D08 +_0818B24C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B264 + adds r0, r0, r1 + ldr r1, _0818B268 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2a + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B264: .4byte gUnknown_2024190 +_0818B268: .4byte gUnknown_2023D08 +_0818B26C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B284 + adds r0, r0, r1 + ldr r1, _0818B288 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2b + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B284: .4byte gUnknown_2024190 +_0818B288: .4byte gUnknown_2023D08 +_0818B28C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B2A4 + adds r0, r0, r1 + ldr r1, _0818B2A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 +_0818B29C: + movs r1, #0x2c + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B2A4: .4byte gUnknown_2024190 +_0818B2A8: .4byte gUnknown_2023D08 +_0818B2AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B2C4 + adds r0, r0, r1 + ldr r1, _0818B2C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B2C4: .4byte gUnknown_2024190 +_0818B2C8: .4byte gUnknown_2023D08 +_0818B2CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B2E4 + adds r0, r0, r1 + ldr r1, _0818B2E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #9 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B2E4: .4byte gUnknown_2024190 +_0818B2E8: .4byte gUnknown_2023D08 +_0818B2EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B304 + adds r0, r0, r1 + ldr r1, _0818B308 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x37 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B304: .4byte gUnknown_2024190 +_0818B308: .4byte gUnknown_2023D08 +_0818B30C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B324 + adds r0, r0, r1 + ldr r1, _0818B328 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x38 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B324: .4byte gUnknown_2024190 +_0818B328: .4byte gUnknown_2023D08 +_0818B32C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B344 + adds r0, r0, r1 + ldr r1, _0818B348 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x39 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B344: .4byte gUnknown_2024190 +_0818B348: .4byte gUnknown_2023D08 +_0818B34C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B364 + adds r0, r0, r1 + ldr r1, _0818B368 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3a + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B364: .4byte gUnknown_2024190 +_0818B368: .4byte gUnknown_2023D08 +_0818B36C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B384 + adds r0, r0, r1 + ldr r1, _0818B388 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3b + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B384: .4byte gUnknown_2024190 +_0818B388: .4byte gUnknown_2023D08 +_0818B38C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B3A4 + adds r0, r0, r1 + ldr r1, _0818B3A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3c + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B3A4: .4byte gUnknown_2024190 +_0818B3A8: .4byte gUnknown_2023D08 +_0818B3AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B3C4 + adds r0, r0, r1 + ldr r1, _0818B3C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3d + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B3C4: .4byte gUnknown_2024190 +_0818B3C8: .4byte gUnknown_2023D08 +_0818B3CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B3E4 + adds r0, r0, r1 + ldr r1, _0818B3E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3e + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B3E4: .4byte gUnknown_2024190 +_0818B3E8: .4byte gUnknown_2023D08 +_0818B3EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B404 + adds r0, r0, r1 + ldr r1, _0818B408 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3f + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B404: .4byte gUnknown_2024190 +_0818B408: .4byte gUnknown_2023D08 +_0818B40C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B424 + adds r0, r0, r1 + ldr r1, _0818B428 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x16 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B424: .4byte gUnknown_2024190 +_0818B428: .4byte gUnknown_2023D08 +_0818B42C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B444 + adds r0, r0, r1 + ldr r1, _0818B448 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x17 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B444: .4byte gUnknown_2024190 +_0818B448: .4byte gUnknown_2023D08 +_0818B44C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B464 + adds r0, r0, r1 + ldr r1, _0818B468 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x18 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B464: .4byte gUnknown_2024190 +_0818B468: .4byte gUnknown_2023D08 +_0818B46C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B484 + adds r0, r0, r1 + ldr r1, _0818B488 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x21 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B484: .4byte gUnknown_2024190 +_0818B488: .4byte gUnknown_2023D08 +_0818B48C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B4A4 + adds r0, r0, r1 + ldr r1, _0818B4A8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2f + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B4A4: .4byte gUnknown_2024190 +_0818B4A8: .4byte gUnknown_2023D08 +_0818B4AC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B4C4 + adds r0, r0, r1 + ldr r1, _0818B4C8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x30 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B4C4: .4byte gUnknown_2024190 +_0818B4C8: .4byte gUnknown_2023D08 +_0818B4CC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B4E4 + adds r0, r0, r1 + ldr r1, _0818B4E8 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x32 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B4E4: .4byte gUnknown_2024190 +_0818B4E8: .4byte gUnknown_2023D08 +_0818B4EC: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B504 + adds r0, r0, r1 + ldr r1, _0818B508 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x33 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B504: .4byte gUnknown_2024190 +_0818B508: .4byte gUnknown_2023D08 +_0818B50C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B524 + adds r0, r0, r1 + ldr r1, _0818B528 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x34 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B524: .4byte gUnknown_2024190 +_0818B528: .4byte gUnknown_2023D08 +_0818B52C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B544 + adds r0, r0, r1 + ldr r1, _0818B548 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x35 + bl sub_0806A774 + b _0818B562 + .align 2, 0 +_0818B544: .4byte gUnknown_2024190 +_0818B548: .4byte gUnknown_2023D08 +_0818B54C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0818B58C + adds r0, r0, r1 + ldr r1, _0818B590 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x36 + bl sub_0806A774 +_0818B562: + ldr r2, _0818B594 + ldr r0, _0818B590 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0818B58C + adds r0, r0, r2 + bl sub_0805E5AC + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818B58C: .4byte gUnknown_2024190 +_0818B590: .4byte gUnknown_2023D08 +_0818B594: .4byte gUnknown_2023D12 + thumb_func_end sub_0818AB9C + + thumb_func_start sub_0818B598 +sub_0818B598: @ 0x0818B598 + push {r4, r5, r6, r7, lr} + ldr r1, _0818B5FC + ldr r7, _0818B600 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _0818B604 + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _0818B608 + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _0818B5F0 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_0818B5CE: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _0818B5CE +_0818B5F0: + bl sub_0818A240 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818B5FC: .4byte gUnknown_2023D12 +_0818B600: .4byte gUnknown_2023D08 +_0818B604: .4byte gUnknown_2022D08 +_0818B608: .4byte gUnknown_2024190 + thumb_func_end sub_0818B598 + + thumb_func_start sub_0818B60C +sub_0818B60C: @ 0x0818B60C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _0818B700 + mov r8, r0 + ldr r6, _0818B704 + ldrb r1, [r6] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0818B708 + adds r0, r0, r4 + bl sub_0805D998 + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r0, _0818B70C + mov r8, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0818B710 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _0818B714 + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818B718 + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818B71C + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldr r1, _0818B720 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818B724 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818B700: .4byte gUnknown_2023D12 +_0818B704: .4byte gUnknown_2023D08 +_0818B708: .4byte gUnknown_2024190 +_0818B70C: .4byte gUnknown_2024640 +_0818B710: .4byte gUnknown_2023E88 +_0818B714: .4byte gUnknown_20205AC +_0818B718: .4byte 0x0000FF10 +_0818B71C: .4byte gUnknown_2024188 +_0818B720: .4byte gUnknown_3005AC0 +_0818B724: .4byte sub_08189D90 + thumb_func_end sub_0818B60C + + thumb_func_start sub_0818B728 +sub_0818B728: @ 0x0818B728 + push {r4, r5, r6, lr} + ldr r5, _0818B780 + ldrb r0, [r5] + ldr r4, _0818B784 + lsls r1, r0, #9 + adds r6, r4, #2 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0805EBA0 + ldr r2, _0818B788 + ldrb r0, [r5] + lsls r1, r0, #1 + adds r1, r1, r2 + lsls r0, r0, #9 + adds r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0818B78C + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r5] + lsls r1, r0, #9 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0818B798 + ldr r1, _0818B790 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818B794 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818B780: .4byte gUnknown_2023D08 +_0818B784: .4byte gUnknown_2022D08 +_0818B788: .4byte gUnknown_2023D12 +_0818B78C: .4byte gUnknown_2024190 +_0818B790: .4byte gUnknown_3005AC0 +_0818B794: .4byte sub_0818A19C + thumb_func_end sub_0818B728 + + thumb_func_start sub_0818B798 +sub_0818B798: @ 0x0818B798 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _0818B8EC + lsls r2, r6, #1 + adds r2, r2, r0 + ldr r0, _0818B8F0 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0818B8F4 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _0818B8F8 + bl sub_0806F0C4 + ldr r1, _0818B8FC + mov sb, r1 + add sb, r6 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _0818B900 + mov sl, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0818B904 + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _0818B908 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818B90C + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0818B910 + str r1, [r0] + movs r0, #0 + movs r1, #0xff + bl sub_08074DF0 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818B8EC: .4byte gUnknown_2023D12 +_0818B8F0: .4byte gUnknown_2022D08 +_0818B8F4: .4byte gUnknown_2024190 +_0818B8F8: .4byte sub_0805D330 +_0818B8FC: .4byte gUnknown_3005ADC +_0818B900: .4byte gUnknown_2024640 +_0818B904: .4byte gUnknown_2023E88 +_0818B908: .4byte gUnknown_20205AC +_0818B90C: .4byte gUnknown_2024188 +_0818B910: .4byte sub_08007140 + thumb_func_end sub_0818B798 + + thumb_func_start sub_0818B914 +sub_0818B914: @ 0x0818B914 + push {r4, r5, r6, lr} + ldr r1, _0818B948 + ldr r6, _0818B94C + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _0818B95C + ldr r0, _0818B950 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _0818B954 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818B958 + str r1, [r0] + b _0818B992 + .align 2, 0 +_0818B948: .4byte gUnknown_2022D08 +_0818B94C: .4byte gUnknown_2023D08 +_0818B950: .4byte gUnknown_2024174 +_0818B954: .4byte gUnknown_3005AC0 +_0818B958: .4byte sub_0818B9A4 +_0818B95C: + ldr r5, _0818B998 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0818B99C + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _0818B9A0 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_0818A240 +_0818B992: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818B998: .4byte gUnknown_2023E88 +_0818B99C: .4byte gUnknown_20205AC +_0818B9A0: .4byte gUnknown_3005AD0 + thumb_func_end sub_0818B914 + + thumb_func_start sub_0818B9A4 +sub_0818B9A4: @ 0x0818B9A4 + push {r4, r5, r6, lr} + ldr r6, _0818B9C4 + ldr r4, [r6] + ldr r5, _0818B9C8 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _0818B9CC + cmp r0, #1 + beq _0818B9FA + b _0818BA22 + .align 2, 0 +_0818B9C4: .4byte gUnknown_2024174 +_0818B9C8: .4byte gUnknown_2023D08 +_0818B9CC: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0818B9E6 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0818B9E6: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0818BA22 +_0818B9FA: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0818BA22 + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #1 + bl sub_0805D6E0 + ldr r1, _0818BA28 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818BA2C + str r1, [r0] +_0818BA22: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818BA28: .4byte gUnknown_3005AC0 +_0818BA2C: .4byte sub_08189EDC + thumb_func_end sub_0818B9A4 + + thumb_func_start sub_0818BA30 +sub_0818BA30: @ 0x0818BA30 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _0818BA58 + ldr r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0818BA74 + movs r0, #0x40 + ands r1, r0 + cmp r1, #0 + beq _0818BA5C + bl sub_08185C98 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + b _0818BA78 + .align 2, 0 +_0818BA58: .4byte gUnknown_2022C90 +_0818BA5C: + ldr r2, _0818BA6C + ldr r0, _0818BA70 + ldrb r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + b _0818BA76 + .align 2, 0 +_0818BA6C: .4byte gUnknown_20226A0 +_0818BA70: .4byte gUnknown_203C480 +_0818BA74: + ldr r0, _0818BAB4 +_0818BA76: + ldrb r4, [r0, #0x13] +_0818BA78: + ldr r0, _0818BAB8 + ldr r1, [r0] + movs r2, #0x40 + ands r1, r2 + adds r5, r0, #0 + cmp r1, #0 + beq _0818BAC4 + ldr r0, _0818BABC + ldrb r0, [r0] + bl sub_080A630C + movs r1, #2 + ands r1, r0 + movs r0, #0x20 + mov sb, r0 + cmp r1, #0 + beq _0818BA9E + movs r1, #0x5a + mov sb, r1 +_0818BA9E: + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0818BAC8 + movs r0, #0x5a + mov sb, r0 + ldr r1, _0818BAC0 + b _0818BACA + .align 2, 0 +_0818BAB4: .4byte gUnknown_20226A0 +_0818BAB8: .4byte gUnknown_2022C90 +_0818BABC: .4byte gUnknown_2023D08 +_0818BAC0: .4byte gUnknown_82D8D70 +_0818BAC4: + movs r0, #0x50 + mov sb, r0 +_0818BAC8: + ldr r1, _0818BBE4 +_0818BACA: + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + subs r0, r0, r1 + lsls r0, r0, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r0, r0, r1 + lsrs r7, r0, #0x10 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0818BAEC + b _0818BC08 +_0818BAEC: + ldr r0, _0818BBE8 + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + ldr r6, _0818BBEC + ldrb r1, [r6] + adds r0, r5, #0 + bl sub_0805DB54 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08069D00 + ldr r0, _0818BBF0 + mov r8, r0 + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _0818BBF4 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, _0818BBF8 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrh r0, [r5, #4] + bl sub_0800851C + ldr r5, _0818BBFC + ldrb r1, [r6] + adds r1, r1, r4 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r5 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x30 + strh r1, [r0, #0x26] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818BC00 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0818BC04 + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _0818BC9E + .align 2, 0 +_0818BBE4: .4byte gUnknown_82D95BC +_0818BBE8: .4byte gUnknown_3005AF0 +_0818BBEC: .4byte gUnknown_2023D08 +_0818BBF0: .4byte gUnknown_2024640 +_0818BBF4: .4byte gUnknown_2023E88 +_0818BBF8: .4byte gUnknown_82D91CC +_0818BBFC: .4byte gUnknown_20205AC +_0818BC00: .4byte 0x0000FFFE +_0818BC04: .4byte sub_0805D3C8 +_0818BC08: + ldr r5, _0818BCB8 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_0805DBA0 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r6, _0818BCBC + mov r8, sb + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _0818BCC0 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _0818BCC4 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0818BCC8 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _0818BCCC + str r1, [r0] +_0818BC9E: + ldr r1, _0818BCD0 + ldr r0, _0818BCB8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818BCD4 + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818BCB8: .4byte gUnknown_2023D08 +_0818BCBC: .4byte gUnknown_2024640 +_0818BCC0: .4byte gUnknown_2023E88 +_0818BCC4: .4byte gUnknown_20205AC +_0818BCC8: .4byte 0x0000FFFE +_0818BCCC: .4byte sub_0805D3C8 +_0818BCD0: .4byte gUnknown_3005AC0 +_0818BCD4: .4byte sub_081896E4 + thumb_func_end sub_0818BA30 + + thumb_func_start sub_0818BCD8 +sub_0818BCD8: @ 0x0818BCD8 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BCD8 + + thumb_func_start sub_0818BCE4 +sub_0818BCE4: @ 0x0818BCE4 + push {r4, r5, r6, lr} + ldr r6, _0818BD70 + ldr r4, _0818BD74 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0818BD78 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818BD7C + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0818BD80 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _0818BD84 + bl sub_080A5B9C + ldr r1, _0818BD88 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818BD8C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818BD70: .4byte gUnknown_2023E88 +_0818BD74: .4byte gUnknown_2023D08 +_0818BD78: .4byte gUnknown_20205AC +_0818BD7C: .4byte 0x0000FFD8 +_0818BD80: .4byte sub_080A67B4 +_0818BD84: .4byte sub_08007140 +_0818BD88: .4byte gUnknown_3005AC0 +_0818BD8C: .4byte sub_0818971C + thumb_func_end sub_0818BCE4 + + thumb_func_start sub_0818BD90 +sub_0818BD90: @ 0x0818BD90 + push {r4, r5, r6, lr} + ldr r6, _0818BDDC + ldr r4, [r6] + ldr r5, _0818BDE0 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _0818BDE4 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0818BDC4 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0818BDC4: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _0818BE5A + .align 2, 0 +_0818BDDC: .4byte gUnknown_2024174 +_0818BDE0: .4byte gUnknown_2023D08 +_0818BDE4: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0818BE5A + strb r4, [r3, #4] + ldr r2, _0818BE60 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0818BE64 + adds r0, r0, r2 + bl sub_0805E5AC + movs r1, #0x40 + rsbs r1, r1, #0 + movs r0, #0x10 + bl sub_080A307C + ldr r2, _0818BE68 + ldr r3, _0818BE6C + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x30] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #5 + strh r1, [r0, #0x32] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _0818BE70 + str r1, [r0] + ldr r1, _0818BE74 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818BE78 + str r1, [r0] +_0818BE5A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818BE60: .4byte gUnknown_2023D12 +_0818BE64: .4byte gUnknown_2024190 +_0818BE68: .4byte gUnknown_20205AC +_0818BE6C: .4byte gUnknown_2023E88 +_0818BE70: .4byte sub_08039844 +_0818BE74: .4byte gUnknown_3005AC0 +_0818BE78: .4byte sub_08189E40 + thumb_func_end sub_0818BD90 + + thumb_func_start sub_0818BE7C +sub_0818BE7C: @ 0x0818BE7C + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BE7C + + thumb_func_start sub_0818BE88 +sub_0818BE88: @ 0x0818BE88 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BE88 + + thumb_func_start sub_0818BE94 +sub_0818BE94: @ 0x0818BE94 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BE94 + + thumb_func_start sub_0818BEA0 +sub_0818BEA0: @ 0x0818BEA0 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BEA0 + + thumb_func_start sub_0818BEAC +sub_0818BEAC: @ 0x0818BEAC + push {r4, r5, r6, lr} + ldr r6, _0818BF90 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818BEBE + b _0818BFD2 +_0818BEBE: + ldr r0, _0818BF94 + mov ip, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, ip + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + ldr r5, _0818BF98 + mov r1, ip + adds r1, #3 + adds r2, r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _0818BF9C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #5 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _0818BFA0 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r3, r1 + mov r1, ip + adds r1, #8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x10 + orrs r3, r1 + mov r1, ip + adds r1, #9 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #0x18 + orrs r3, r1 + str r3, [r4] + ldr r3, _0818BFA4 + ldrb r1, [r6] + lsls r1, r1, #9 + mov r2, ip + adds r2, #0xa + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _0818BFA8 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0xc + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #0xd + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _0818BFAC + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0x10 + adds r2, r2, r1 + str r2, [r3] + ldr r3, _0818BFB0 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _0818BFB4 + bl sub_0818A240 + b _0818BFD2 + .align 2, 0 +_0818BF90: .4byte gUnknown_2023D08 +_0818BF94: .4byte gUnknown_2022D08 +_0818BF98: .4byte gUnknown_20380D2 +_0818BF9C: .4byte gUnknown_20380A8 +_0818BFA0: .4byte gUnknown_20380A4 +_0818BFA4: .4byte gUnknown_20380BA +_0818BFA8: .4byte gUnknown_20380BC +_0818BFAC: .4byte gUnknown_20380A0 +_0818BFB0: .4byte gUnknown_2024160 +_0818BFB4: + ldr r0, _0818BFD8 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _0818BFDC + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818BFE0 + str r1, [r0] +_0818BFD2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818BFD8: .4byte gUnknown_2024174 +_0818BFDC: .4byte gUnknown_3005AC0 +_0818BFE0: .4byte sub_0818BFE4 + thumb_func_end sub_0818BEAC + + thumb_func_start sub_0818BFE4 +sub_0818BFE4: @ 0x0818BFE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _0818C030 + ldr r6, _0818C034 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _0818C038 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _0818C07C + cmp r2, #1 + bgt _0818C03C + cmp r2, #0 + beq _0818C046 + b _0818C158 + .align 2, 0 +_0818C030: .4byte gUnknown_2022D08 +_0818C034: .4byte gUnknown_2023D08 +_0818C038: .4byte gUnknown_2024174 +_0818C03C: + cmp r2, #2 + beq _0818C0A6 + cmp r2, #3 + beq _0818C11C + b _0818C158 +_0818C046: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _0818C068 + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_0818C068: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _0818C158 +_0818C07C: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0818C158 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _0818C158 +_0818C0A6: + ldr r0, _0818C10C + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _0818C110 + ldrb r0, [r0] + cmp r0, #0 + bne _0818C158 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0818C0F4 + mov r0, r8 + cmp r0, #1 + bhi _0818C0F4 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_0818C0F4: + ldr r0, _0818C114 + ldr r2, [r0] + ldr r0, _0818C118 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _0818C158 + .align 2, 0 +_0818C10C: .4byte gUnknown_2038098 +_0818C110: .4byte gUnknown_203809D +_0818C114: .4byte gUnknown_2024174 +_0818C118: .4byte gUnknown_2023D08 +_0818C11C: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0818C158 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_0818A240 +_0818C158: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818BFE4 + + thumb_func_start sub_0818C168 +sub_0818C168: @ 0x0818C168 + push {r4, lr} + ldr r0, _0818C1A0 + movs r1, #0 + strh r1, [r0] + ldr r0, _0818C1A4 + strh r1, [r0] + ldr r4, _0818C1A8 + ldrb r0, [r4] + lsls r0, r0, #9 + ldr r1, _0818C1AC + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0814E184 + ldr r0, _0818C1B0 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _0818C1B4 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C1B8 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818C1A0: .4byte gUnknown_2022AC8 +_0818C1A4: .4byte gUnknown_2022ACA +_0818C1A8: .4byte gUnknown_2023D08 +_0818C1AC: .4byte gUnknown_2022D0A +_0818C1B0: .4byte gUnknown_2022AE0 +_0818C1B4: .4byte gUnknown_3005AC0 +_0818C1B8: .4byte sub_08189F4C + thumb_func_end sub_0818C168 + + thumb_func_start sub_0818C1BC +sub_0818C1BC: @ 0x0818C1BC + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C1BC + + thumb_func_start sub_0818C1C8 +sub_0818C1C8: @ 0x0818C1C8 + push {lr} + ldr r1, _0818C1F8 + ldr r0, _0818C1FC + ldrb r0, [r0] + ldrb r1, [r1, #4] + lsrs r0, r0, #1 + cmp r1, r0 + blo _0818C1F2 + ldr r0, _0818C200 + ldrb r0, [r0] + bl sub_08184EB4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0 + bl sub_08033FB0 + bl sub_0818A240 +_0818C1F2: + pop {r0} + bx r0 + .align 2, 0 +_0818C1F8: .4byte gUnknown_2023FD6 +_0818C1FC: .4byte gUnknown_2023D10 +_0818C200: .4byte gUnknown_2023D08 + thumb_func_end sub_0818C1C8 + + thumb_func_start sub_0818C204 +sub_0818C204: @ 0x0818C204 + push {lr} + ldr r0, _0818C224 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0818C234 + ldr r1, _0818C228 + ldr r0, _0818C22C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C230 + str r1, [r0] + b _0818C24E + .align 2, 0 +_0818C224: .4byte gUnknown_2022C90 +_0818C228: .4byte gUnknown_3005AC0 +_0818C22C: .4byte gUnknown_2023D08 +_0818C230: .4byte sub_0818C1C8 +_0818C234: + ldr r0, _0818C254 + ldrb r0, [r0] + bl sub_08184EB4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0 + bl sub_08033FB0 + bl sub_0818A240 +_0818C24E: + pop {r0} + bx r0 + .align 2, 0 +_0818C254: .4byte gUnknown_2023D08 + thumb_func_end sub_0818C204 + + thumb_func_start sub_0818C258 +sub_0818C258: @ 0x0818C258 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C258 + + thumb_func_start sub_0818C264 +sub_0818C264: @ 0x0818C264 + push {r4, r5, lr} + ldr r0, _0818C288 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _0818C28C + bl sub_0805CDB8 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + b _0818C2B0 + .align 2, 0 +_0818C288: .4byte gUnknown_2022C90 +_0818C28C: + ldr r5, _0818C2BC + ldrb r0, [r5] + bl sub_08184EB4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5] + bl sub_08184EB4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x10 + orrs r2, r4 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 +_0818C2B0: + bl sub_0818A240 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818C2BC: .4byte gUnknown_2023D08 + thumb_func_end sub_0818C264 + + thumb_func_start sub_0818C2C0 +sub_0818C2C0: @ 0x0818C2C0 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C2C0 + + thumb_func_start sub_0818C2CC +sub_0818C2CC: @ 0x0818C2CC + push {r4, lr} + ldr r4, _0818C300 + ldrb r0, [r4] + bl sub_08184EB4 + ldrb r1, [r4] + ldr r3, _0818C304 + ldr r2, [r3] + adds r1, r1, r2 + adds r1, #0x5c + strb r0, [r1] + ldrb r0, [r4] + ldr r1, [r3] + adds r0, r0, r1 + adds r0, #0x5c + ldrb r1, [r0] + movs r0, #1 + movs r2, #0 + bl sub_08033FDC + bl sub_0818A240 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818C300: .4byte gUnknown_2023D08 +_0818C304: .4byte gUnknown_2024140 + thumb_func_end sub_0818C2CC + + thumb_func_start sub_0818C308 +sub_0818C308: @ 0x0818C308 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C308 + + thumb_func_start sub_0818C314 +sub_0818C314: @ 0x0818C314 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _0818C38C + ldr r0, _0818C390 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _0818C394 + cmp r7, r0 + beq _0818C3A4 + ldr r6, _0818C398 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _0818C39C + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _0818C3A0 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _0818C3DE + .align 2, 0 +_0818C38C: .4byte gUnknown_2022D08 +_0818C390: .4byte gUnknown_2023D08 +_0818C394: .4byte 0x00007FFF +_0818C398: .4byte gUnknown_2023D12 +_0818C39C: .4byte gUnknown_2024190 +_0818C3A0: .4byte gUnknown_3005AD0 +_0818C3A4: + ldr r1, _0818C3FC + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0818C400 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r4, _0818C404 + adds r1, r0, r4 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C + mov r1, sb + ldrb r0, [r1] + adds r0, r0, r4 + ldrb r0, [r0] + movs r1, #0 + movs r2, #0 + bl sub_080726F4 +_0818C3DE: + ldr r1, _0818C408 + ldr r0, _0818C40C + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C410 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818C3FC: .4byte gUnknown_2023D12 +_0818C400: .4byte gUnknown_2024190 +_0818C404: .4byte gUnknown_3005AD0 +_0818C408: .4byte gUnknown_3005AC0 +_0818C40C: .4byte gUnknown_2023D08 +_0818C410: .4byte sub_08189DD0 + thumb_func_end sub_0818C314 + + thumb_func_start sub_0818C414 +sub_0818C414: @ 0x0818C414 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C414 + + thumb_func_start sub_0818C420 +sub_0818C420: @ 0x0818C420 + push {r4, lr} + ldr r4, _0818C47C + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0818C474 + ldr r0, _0818C480 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _0818C484 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _0818C488 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _0818C48C + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _0818C490 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C494 + str r1, [r0] +_0818C474: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818C47C: .4byte gUnknown_2023D08 +_0818C480: .4byte gUnknown_3005AD0 +_0818C484: .4byte gUnknown_2023D12 +_0818C488: .4byte gUnknown_2024190 +_0818C48C: .4byte gUnknown_2024174 +_0818C490: .4byte gUnknown_3005AC0 +_0818C494: .4byte sub_0818A2B8 + thumb_func_end sub_0818C420 + + thumb_func_start sub_0818C498 +sub_0818C498: @ 0x0818C498 + push {r4, r5, lr} + ldr r5, _0818C4F0 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0818C4E8 + ldr r4, _0818C4F4 + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _0818C4F8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C4FC + str r1, [r0] +_0818C4E8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818C4F0: .4byte gUnknown_2023D08 +_0818C4F4: .4byte gUnknown_2022D08 +_0818C4F8: .4byte gUnknown_3005AC0 +_0818C4FC: .4byte sub_0818A2B8 + thumb_func_end sub_0818C498 + + thumb_func_start sub_0818C500 +sub_0818C500: @ 0x0818C500 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C500 + + thumb_func_start sub_0818C50C +sub_0818C50C: @ 0x0818C50C + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C50C + + thumb_func_start sub_0818C518 +sub_0818C518: @ 0x0818C518 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C518 + + thumb_func_start sub_0818C524 +sub_0818C524: @ 0x0818C524 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C524 + + thumb_func_start sub_0818C530 +sub_0818C530: @ 0x0818C530 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C530 + + thumb_func_start sub_0818C53C +sub_0818C53C: @ 0x0818C53C + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C53C + + thumb_func_start sub_0818C548 +sub_0818C548: @ 0x0818C548 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C548 + + thumb_func_start sub_0818C554 +sub_0818C554: @ 0x0818C554 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C554 + + thumb_func_start sub_0818C560 +sub_0818C560: @ 0x0818C560 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C560 + + thumb_func_start sub_0818C56C +sub_0818C56C: @ 0x0818C56C + push {lr} + ldr r2, _0818C584 + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C584: .4byte gUnknown_20229C0 + thumb_func_end sub_0818C56C + + thumb_func_start sub_0818C588 +sub_0818C588: @ 0x0818C588 + push {lr} + ldr r3, _0818C5B4 + ldr r1, _0818C5B8 + ldr r0, _0818C5BC + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C5B4: .4byte gUnknown_20229C0 +_0818C5B8: .4byte gUnknown_2022D08 +_0818C5BC: .4byte gUnknown_2023D08 + thumb_func_end sub_0818C588 + + thumb_func_start sub_0818C5C0 +sub_0818C5C0: @ 0x0818C5C0 + push {lr} + ldr r2, _0818C5D4 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C5D4: .4byte gUnknown_20229C0 + thumb_func_end sub_0818C5C0 + + thumb_func_start sub_0818C5D8 +sub_0818C5D8: @ 0x0818C5D8 + push {lr} + ldr r3, _0818C5FC + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C5FC: .4byte gUnknown_20229C0 + thumb_func_end sub_0818C5D8 + + thumb_func_start sub_0818C600 +sub_0818C600: @ 0x0818C600 + push {r4, lr} + ldr r3, _0818C628 + ldr r2, _0818C62C + ldr r4, _0818C630 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0818C634 + bl sub_0818A240 + b _0818C65E + .align 2, 0 +_0818C628: .4byte gUnknown_20205AC +_0818C62C: .4byte gUnknown_2023E88 +_0818C630: .4byte gUnknown_2023D08 +_0818C634: + ldr r1, _0818C664 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _0818C668 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C66C + str r1, [r0] +_0818C65E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818C664: .4byte gUnknown_202415D +_0818C668: .4byte gUnknown_3005AC0 +_0818C66C: .4byte sub_08189F64 + thumb_func_end sub_0818C600 + + thumb_func_start sub_0818C670 +sub_0818C670: @ 0x0818C670 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C670 + + thumb_func_start sub_0818C67C +sub_0818C67C: @ 0x0818C67C + push {r4, lr} + ldr r4, _0818C6B8 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _0818C690 + movs r3, #0xc0 +_0818C690: + ldr r2, _0818C6BC + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_0818A240 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818C6B8: .4byte gUnknown_2023D08 +_0818C6BC: .4byte gUnknown_2022D08 + thumb_func_end sub_0818C67C + + thumb_func_start sub_0818C6C0 +sub_0818C6C0: @ 0x0818C6C0 + push {r4, r5, lr} + ldr r4, _0818C6F4 + ldr r5, _0818C6F8 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _0818C6FC + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _0818C710 + .align 2, 0 +_0818C6F4: .4byte gUnknown_2022D08 +_0818C6F8: .4byte gUnknown_2023D08 +_0818C6FC: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_0818C710: + bl sub_0818A240 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818C6C0 + + thumb_func_start sub_0818C71C +sub_0818C71C: @ 0x0818C71C + push {lr} + ldr r1, _0818C750 + ldr r0, _0818C754 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _0818C758 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + rsbs r1, r1, #0 + movs r2, #5 + bl sub_080A2BAC + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C750: .4byte gUnknown_2023D12 +_0818C754: .4byte gUnknown_2023D08 +_0818C758: .4byte gUnknown_2024190 + thumb_func_end sub_0818C71C + + thumb_func_start sub_0818C75C +sub_0818C75C: @ 0x0818C75C + push {lr} + ldr r1, _0818C784 + ldr r0, _0818C788 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _0818C78C + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818C784: .4byte gUnknown_2022D08 +_0818C788: .4byte gUnknown_2023D08 +_0818C78C: .4byte gUnknown_20240A0 + thumb_func_end sub_0818C75C + + thumb_func_start sub_0818C790 +sub_0818C790: @ 0x0818C790 + push {r4, r5, r6, lr} + ldr r5, _0818C85C + ldr r6, _0818C860 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0818C864 + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0818C868 + strh r1, [r0, #0x32] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0818C86C + str r1, [r0] + ldrb r2, [r6] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x38] + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _0818C870 + bl sub_080A5B9C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _0818C874 + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _0818C878 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _0818C880 + ldr r4, _0818C87C + ldrb r0, [r6] + bl sub_0806D300 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r1, #0x13] + b _0818C886 + .align 2, 0 +_0818C85C: .4byte gUnknown_2023E88 +_0818C860: .4byte gUnknown_2023D08 +_0818C864: .4byte gUnknown_20205AC +_0818C868: .4byte 0x0000FFD8 +_0818C86C: .4byte sub_080A67B4 +_0818C870: .4byte sub_0805C81C +_0818C874: .4byte 0x0000D6F9 +_0818C878: .4byte gUnknown_2022C90 +_0818C87C: .4byte gUnknown_20226A0 +_0818C880: + ldr r0, _0818C920 + ldr r0, [r0] + ldrb r0, [r0, #8] +_0818C886: + ldr r1, _0818C924 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + lsls r4, r5, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC + ldr r2, _0818C928 + ldr r1, _0818C92C + ldr r5, _0818C930 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #5] + ldr r0, _0818C934 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _0818C938 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r5] + strh r0, [r1, #8] + ldr r3, _0818C93C + ldr r0, [r3] + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0818C900 + ldr r0, _0818C940 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _0818C944 + str r1, [r0] +_0818C900: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _0818C948 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818C94C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818C920: .4byte gUnknown_3005AF0 +_0818C924: .4byte gUnknown_82D961C +_0818C928: .4byte gUnknown_20205AC +_0818C92C: .4byte gUnknown_2023E88 +_0818C930: .4byte gUnknown_2023D08 +_0818C934: .4byte sub_0818C950 +_0818C938: .4byte gUnknown_3005B60 +_0818C93C: .4byte gUnknown_2024174 +_0818C940: .4byte gUnknown_2024158 +_0818C944: .4byte sub_0807352C +_0818C948: .4byte gUnknown_3005AC0 +_0818C94C: .4byte sub_08189674 + thumb_func_end sub_0818C790 + + thumb_func_start sub_0818C950 +sub_0818C950: @ 0x0818C950 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0818C978 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0x17 + bgt _0818C97C + adds r0, r2, #1 + strh r0, [r1, #0xa] + b _0818CA38 + .align 2, 0 +_0818C978: .4byte gUnknown_3005B60 +_0818C97C: + ldr r7, _0818C9BC + ldrb r0, [r7] + mov sb, r0 + ldrh r0, [r1, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818C99C + ldr r0, _0818C9C0 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0818C9CC +_0818C99C: + ldr r0, _0818C9C4 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _0818C9C8 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_0818B798 + b _0818CA20 + .align 2, 0 +_0818C9BC: .4byte gUnknown_2023D08 +_0818C9C0: .4byte gUnknown_2022C90 +_0818C9C4: .4byte gUnknown_2022D08 +_0818C9C8: .4byte gUnknown_2023D12 +_0818C9CC: + ldr r4, _0818CA44 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r5, _0818CA48 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_0818B798 + ldrb r0, [r7] + movs r6, #2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r5 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _0818CA4C + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r7] + movs r1, #0 + bl sub_0818B798 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_0818CA20: + ldr r1, _0818CA50 + ldr r2, _0818CA54 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818CA58 + str r1, [r0] + mov r3, sb + strb r3, [r2] + mov r0, r8 + bl sub_080A8964 +_0818CA38: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818CA44: .4byte gUnknown_2022D08 +_0818CA48: .4byte gUnknown_2023D12 +_0818CA4C: .4byte gUnknown_2024190 +_0818CA50: .4byte gUnknown_3005AC0 +_0818CA54: .4byte gUnknown_2023D08 +_0818CA58: .4byte sub_08189A6C + thumb_func_end sub_0818C950 + + thumb_func_start sub_0818CA5C +sub_0818CA5C: @ 0x0818CA5C + push {r4, r5, r6, lr} + ldr r1, _0818CA84 + ldr r0, _0818CA88 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0818CA8C + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0818CA8C + bl sub_0818A240 + b _0818CB00 + .align 2, 0 +_0818CA84: .4byte gUnknown_2022D08 +_0818CA88: .4byte gUnknown_2023D08 +_0818CA8C: + ldr r6, _0818CB08 + ldr r0, [r6] + ldr r5, _0818CB0C + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _0818CB10 + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _0818CB14 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _0818CAF4 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_0818CAF4: + ldr r0, _0818CB18 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0818CB1C + str r0, [r1] +_0818CB00: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818CB08: .4byte gUnknown_2024174 +_0818CB0C: .4byte gUnknown_2023D08 +_0818CB10: .4byte gUnknown_2022D0C +_0818CB14: .4byte gUnknown_2024158 +_0818CB18: .4byte gUnknown_3005AC0 +_0818CB1C: .4byte sub_0818CB20 + thumb_func_end sub_0818CA5C + + thumb_func_start sub_0818CB20 +sub_0818CB20: @ 0x0818CB20 + push {r4, lr} + ldr r4, _0818CB60 + ldr r0, [r4] + ldr r3, _0818CB64 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _0818CB58 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_0818A240 +_0818CB58: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818CB60: .4byte gUnknown_2024174 +_0818CB64: .4byte gUnknown_2023D08 + thumb_func_end sub_0818CB20 + + thumb_func_start sub_0818CB68 +sub_0818CB68: @ 0x0818CB68 + push {lr} + ldr r0, _0818CBA4 + ldr r1, [r0] + ldr r0, _0818CBA8 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0818CB9A + ldr r2, _0818CBAC + ldr r0, _0818CBB0 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0818CBB4 + str r1, [r0] +_0818CB9A: + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 +_0818CBA4: .4byte gUnknown_2024174 +_0818CBA8: .4byte gUnknown_2023D08 +_0818CBAC: .4byte gUnknown_3005B60 +_0818CBB0: .4byte gUnknown_2024158 +_0818CBB4: .4byte sub_0807352C + thumb_func_end sub_0818CB68 + + thumb_func_start sub_0818CBB8 +sub_0818CBB8: @ 0x0818CBB8 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818CBB8 + + thumb_func_start sub_0818CBC4 +sub_0818CBC4: @ 0x0818CBC4 + push {r4, lr} + ldr r4, _0818CC14 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818CC0A + ldr r3, _0818CC18 + ldr r0, _0818CC1C + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _0818CC20 + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_0818CC0A: + bl sub_0818A240 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818CC14: .4byte gUnknown_2023D08 +_0818CC18: .4byte gUnknown_20205AC +_0818CC1C: .4byte gUnknown_2023E88 +_0818CC20: .4byte gUnknown_2022D08 + thumb_func_end sub_0818CBC4 + + thumb_func_start sub_0818CC24 +sub_0818CC24: @ 0x0818CC24 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _0818CC68 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0818CC7C + ldr r5, _0818CC6C + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818CC70 + bl sub_0818A240 + b _0818CC7C + .align 2, 0 +_0818CC68: .4byte gUnknown_2023D08 +_0818CC6C: .4byte gUnknown_2022D08 +_0818CC70: + ldr r0, _0818CC84 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _0818CC88 + str r0, [r1] +_0818CC7C: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818CC84: .4byte gUnknown_3005AC0 +_0818CC88: .4byte sub_0818A2E8 + thumb_func_end sub_0818CC24 + + thumb_func_start sub_0818CC8C +sub_0818CC8C: @ 0x0818CC8C + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818CC8C + + thumb_func_start sub_0818CC98 +sub_0818CC98: @ 0x0818CC98 + push {lr} + bl sub_0818A240 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818CC98 + + thumb_func_start sub_0818CCA4 +sub_0818CCA4: @ 0x0818CCA4 + push {r4, lr} + ldr r2, _0818CCDC + ldr r1, _0818CCE0 + ldr r4, _0818CCE4 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_0818A240 + ldr r1, _0818CCE8 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _0818CCEC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818CCDC: .4byte gUnknown_2023FDE +_0818CCE0: .4byte gUnknown_2022D08 +_0818CCE4: .4byte gUnknown_2023D08 +_0818CCE8: .4byte gUnknown_3005AC0 +_0818CCEC: .4byte sub_080583C0 + thumb_func_end sub_0818CCA4 + + thumb_func_start sub_0818CCF0 +sub_0818CCF0: @ 0x0818CCF0 + bx lr + .align 2, 0 + thumb_func_end sub_0818CCF0 + + thumb_func_start sub_0818CCF4 +sub_0818CCF4: @ 0x0818CCF4 + bx lr + .align 2, 0 + thumb_func_end sub_0818CCF4 + + thumb_func_start sub_0818CCF8 +sub_0818CCF8: @ 0x0818CCF8 + push {r4, r5, r6, r7, lr} + ldr r4, _0818CD18 + ldr r3, _0818CD1C + movs r2, #7 +_0818CD00: + adds r1, r3, #0 + adds r0, r4, #0 + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + adds r3, #0xc + subs r2, #1 + cmp r2, #0 + bge _0818CD00 + movs r0, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818CD18: .4byte gUnknown_85D3AB8 +_0818CD1C: .4byte gUnknown_203C9D0 + thumb_func_end sub_0818CCF8 + + thumb_func_start sub_0818CD20 +sub_0818CD20: @ 0x0818CD20 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r1, #0 + adds r5, r3, #0 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x1c] + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r7, r4, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r1, #0 + cmp r3, #0 + bne _0818CD94 + cmp r2, #0 + beq _0818CD60 + cmp r1, #0 + bne _0818CD54 + lsls r0, r4, #3 + ldr r1, _0818CD50 + b _0818CD68 + .align 2, 0 +_0818CD50: .4byte gUnknown_82DDA1C +_0818CD54: + lsls r0, r4, #3 + ldr r1, _0818CD5C + b _0818CD80 + .align 2, 0 +_0818CD5C: .4byte gUnknown_82DDA1C +_0818CD60: + cmp r0, #0 + bne _0818CD7C + lsls r0, r4, #3 + ldr r1, _0818CD78 +_0818CD68: + adds r0, r0, r1 + str r2, [sp] + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_080344AC + b _0818CDBA + .align 2, 0 +_0818CD78: .4byte gUnknown_82D6148 +_0818CD7C: + lsls r0, r4, #3 + ldr r1, _0818CD90 +_0818CD80: + adds r0, r0, r1 + str r2, [sp] + adds r1, r5, #0 + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_080349D4 + b _0818CDBA + .align 2, 0 +_0818CD90: .4byte gUnknown_82D6148 +_0818CD94: + cmp r2, #0 + beq _0818CDAC + lsls r0, r4, #3 + ldr r1, _0818CDA8 + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08034448 + b _0818CDBA + .align 2, 0 +_0818CDA8: .4byte gUnknown_82D8EE4 +_0818CDAC: + lsls r0, r7, #3 + ldr r1, _0818CDC4 + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_08034448 +_0818CDBA: + movs r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818CDC4: .4byte gUnknown_82D95DC + thumb_func_end sub_0818CD20 + + thumb_func_start sub_0818CDC8 +sub_0818CDC8: @ 0x0818CDC8 + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + bl sub_0818CD20 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0818CDC8 + + thumb_func_start sub_0818CDF0 +sub_0818CDF0: @ 0x0818CDF0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r1, #0 + mov r8, r2 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + mov ip, r5 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + adds r1, r3, #0 + lsls r2, r2, #0x18 + cmp r2, #0 + bne _0818CE54 + ldr r0, _0818CE34 + cmp r3, r0 + bne _0818CE3C + ldr r2, _0818CE38 + ldrh r1, [r2, #2] + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2, #2] + adds r0, r4, #0 + adds r1, r7, #0 + mov r2, r8 + bl sub_0806E1CC + lsls r1, r5, #0x14 + b _0818CE70 + .align 2, 0 +_0818CE34: .4byte 0x0000FFFF +_0818CE38: .4byte gUnknown_203C9B8 +_0818CE3C: + ldr r0, _0818CE50 + strh r3, [r0, #2] + adds r0, r4, #0 + adds r1, r7, #0 + mov r2, r8 + bl sub_0806E258 + bl sub_080343E4 + b _0818CE9A + .align 2, 0 +_0818CE50: .4byte gUnknown_203C9B8 +_0818CE54: + ldr r0, _0818CE80 + cmp r3, r0 + bne _0818CE8C + ldr r2, _0818CE84 + ldrh r1, [r2, #2] + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2, #2] + ldr r1, _0818CE88 + lsls r0, r4, #3 + adds r0, r0, r1 + ldr r0, [r0] + mov r2, ip + lsls r1, r2, #0x14 +_0818CE70: + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A11BC + b _0818CE9A + .align 2, 0 +_0818CE80: .4byte 0x0000FFFF +_0818CE84: .4byte gUnknown_203C9B8 +_0818CE88: .4byte gUnknown_82D91CC +_0818CE8C: + ldr r0, _0818CEA4 + strh r1, [r0, #2] + lsls r0, r6, #3 + ldr r1, _0818CEA8 + adds r0, r0, r1 + bl sub_080343E4 +_0818CE9A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818CEA4: .4byte gUnknown_203C9B8 +_0818CEA8: .4byte gUnknown_82D91CC + thumb_func_end sub_0818CDF0 + + thumb_func_start sub_0818CEAC +sub_0818CEAC: @ 0x0818CEAC + push {r4, r5, lr} + adds r5, r1, #0 + ldr r1, [sp, #0xc] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r4, r3, #0x18 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _0818CED0 + adds r1, r5, #0 + bl sub_0806E1CC + lsls r1, r4, #4 + movs r2, #0x20 + bl sub_080A11BC + b _0818CEE0 +_0818CED0: + ldr r1, _0818CEE8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0] + lsls r1, r4, #4 + movs r2, #0x20 + bl sub_080A11BC +_0818CEE0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818CEE8: .4byte gUnknown_82D91CC + thumb_func_end sub_0818CEAC + + thumb_func_start sub_0818CEEC +sub_0818CEEC: @ 0x0818CEEC + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0818CF04 + ldr r1, _0818CEFC + ldr r0, _0818CF00 + str r0, [r1, #8] + b _0818CF0C + .align 2, 0 +_0818CEFC: .4byte gUnknown_203C9B8 +_0818CF00: .4byte gUnknown_82D2F9C +_0818CF04: + ldr r0, _0818CF10 + ldr r1, _0818CF14 + ldr r1, [r1] + str r1, [r0, #8] +_0818CF0C: + pop {r0} + bx r0 + .align 2, 0 +_0818CF10: .4byte gUnknown_203C9B8 +_0818CF14: .4byte gUnknown_82D8BFC + thumb_func_end sub_0818CEEC + + thumb_func_start sub_0818CF18 +sub_0818CF18: @ 0x0818CF18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x18] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x1c] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x20] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov sl, r5 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov sb, r6 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + ldr r1, _0818CFB0 + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _0818CF88 +_0818CF70: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bhi _0818CF88 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _0818CF70 +_0818CF88: + cmp r4, #8 + beq _0818CFAC + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r7, r0, #0 + cmp r7, #0 + beq _0818CFAC + movs r0, #0x20 + bl sub_08000BC8 + mov r8, r0 + cmp r0, #0 + bne _0818CFB8 + adds r0, r7, #0 + bl sub_08000BF0 +_0818CFAC: + ldr r0, _0818CFB4 + b _0818D082 + .align 2, 0 +_0818CFB0: .4byte gUnknown_203C9D0 +_0818CFB4: .4byte 0x0000FFFF +_0818CFB8: + mov r1, sb + str r1, [sp] + str r5, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + adds r3, r7, #0 + bl sub_0818CD20 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0818CFAC + lsls r2, r4, #1 + str r2, [sp, #0x2c] + ldr r5, _0818D094 + ldr r0, _0818D098 + mov ip, r0 + ldr r1, [sp, #0x18] + lsls r1, r1, #0x10 + str r1, [sp, #0x24] + ldr r2, [sp, #0x1c] + lsls r2, r2, #0x10 + str r2, [sp, #0x28] + movs r3, #0x80 + lsls r3, r3, #4 + mov r0, r8 + adds r1, r7, #0 + adds r6, r3, #0 + movs r2, #3 +_0818CFF2: + str r1, [r0] + strh r3, [r0, #4] + adds r0, #8 + adds r1, r1, r6 + subs r2, #1 + cmp r2, #0 + bge _0818CFF2 + ldr r0, _0818D09C + strh r0, [r5] + mov r0, ip + str r0, [r5, #4] + mov r0, sb + bl sub_0818CEEC + mov r1, r8 + str r1, [r5, #0xc] + ldr r0, _0818D0A0 + str r0, [r5, #0x10] + ldr r0, _0818D0A4 + str r0, [r5, #0x14] + mov r2, sl + str r2, [sp] + mov r0, sb + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x20] + bl sub_0818CDF0 + ldr r2, [sp, #0x24] + asrs r1, r2, #0x10 + ldr r0, [sp, #0x28] + asrs r2, r0, #0x10 + adds r0, r5, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r6, r2, #0 + ldr r0, _0818D09C + cmp sl, r0 + bne _0818D062 + ldr r0, _0818D0A8 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [sp, #0x20] + lsls r3, r2, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] +_0818D062: + ldr r1, _0818D0AC + ldr r2, [sp, #0x2c] + adds r0, r2, r4 + lsls r0, r0, #2 + adds r2, r0, r1 + str r7, [r2] + adds r1, #4 + adds r0, r0, r1 + mov r7, r8 + str r7, [r0] + mov r0, sl + strh r0, [r2, #8] + strb r6, [r2, #0xa] + movs r0, #1 + strb r0, [r2, #0xb] + adds r0, r6, #0 +_0818D082: + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818D094: .4byte gUnknown_203C9B8 +_0818D098: .4byte gUnknown_85D3AC4 +_0818D09C: .4byte 0x0000FFFF +_0818D0A0: .4byte gUnknown_82BF310 +_0818D0A4: .4byte sub_0818CCF4 +_0818D0A8: .4byte gUnknown_20205AC +_0818D0AC: .4byte gUnknown_203C9D0 + thumb_func_end sub_0818CF18 + + thumb_func_start sub_0818D0B0 +sub_0818D0B0: @ 0x0818D0B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r7, r8 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov r8, r7 + mov r7, sb + lsls r7, r7, #0x18 + lsrs r7, r7, #0x18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + str r6, [sp, #8] + mov r4, r8 + str r4, [sp, #0xc] + str r7, [sp, #0x10] + movs r4, #0 + str r4, [sp, #0x14] + bl sub_0818CF18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0818D0B0 + + thumb_func_start sub_0818D110 +sub_0818D110: @ 0x0818D110 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x50] + ldr r4, [sp, #0x54] + ldr r5, [sp, #0x58] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x10] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0x14] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x18] + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r5, [sp, #0x1c] + movs r5, #0 + ldr r1, _0818D190 + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _0818D16C +_0818D154: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #7 + bhi _0818D16C + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _0818D154 +_0818D16C: + cmp r5, #8 + beq _0818D1A8 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r7, r0, #0 + cmp r7, #0 + beq _0818D1A8 + movs r0, #0x80 + ands r0, r6 + cmp r0, #0 + beq _0818D194 + movs r0, #0x7f + ands r6, r0 + movs r0, #3 + mov sb, r0 + b _0818D196 + .align 2, 0 +_0818D190: .4byte gUnknown_203C9D0 +_0818D194: + mov sb, r6 +_0818D196: + movs r0, #0x20 + bl sub_08000BC8 + mov r8, r0 + cmp r0, #0 + bne _0818D1B0 + adds r0, r7, #0 + bl sub_08000BF0 +_0818D1A8: + ldr r0, _0818D1AC + b _0818D2B4 + .align 2, 0 +_0818D1AC: .4byte 0x0000FFFF +_0818D1B0: + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, sl + ldr r1, [sp, #0xc] + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_0818CD20 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0818D1A8 + lsls r1, r5, #1 + str r1, [sp, #0x28] + ldr r4, _0818D214 + mov r2, sl + lsls r2, r2, #2 + mov ip, r2 + ldr r0, [sp, #0x10] + lsls r0, r0, #0x10 + str r0, [sp, #0x20] + ldr r1, [sp, #0x14] + lsls r1, r1, #0x10 + str r1, [sp, #0x24] + movs r3, #0x80 + lsls r3, r3, #4 + mov r0, r8 + adds r1, r7, #0 + adds r6, r3, #0 + movs r2, #3 +_0818D1EC: + str r1, [r0] + strh r3, [r0, #4] + adds r0, #8 + adds r1, r1, r6 + subs r2, #1 + cmp r2, #0 + bge _0818D1EC + ldr r0, _0818D218 + strh r0, [r4] + ldr r0, _0818D21C + add r0, ip + ldr r0, [r0] + str r0, [r4, #8] + mov r2, r8 + str r2, [r4, #0xc] + mov r0, sb + cmp r0, #1 + bne _0818D224 + ldr r0, _0818D220 + b _0818D22C + .align 2, 0 +_0818D214: .4byte gUnknown_203C9B8 +_0818D218: .4byte 0x0000FFFF +_0818D21C: .4byte gUnknown_82DD33C +_0818D220: .4byte gUnknown_82D2F24 +_0818D224: + mov r1, sb + cmp r1, #0 + bne _0818D23C + ldr r0, _0818D234 +_0818D22C: + str r0, [r4, #0x10] + ldr r0, _0818D238 + str r0, [r4, #4] + b _0818D244 + .align 2, 0 +_0818D234: .4byte gUnknown_82D2EA8 +_0818D238: .4byte gUnknown_85D3ACC +_0818D23C: + ldr r0, _0818D2C4 + str r0, [r4, #4] + ldr r0, _0818D2C8 + str r0, [r4, #0x10] +_0818D244: + ldr r2, _0818D2CC + str r2, [r4, #0x14] + ldr r0, [sp, #0x1c] + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + mov r0, sl + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x18] + bl sub_0818CDF0 + ldr r2, [sp, #0x20] + asrs r1, r2, #0x10 + ldr r0, [sp, #0x24] + asrs r2, r0, #0x10 + adds r0, r4, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r6, r2, #0 + ldr r0, _0818D2D0 + ldr r1, [sp, #0x1c] + cmp r1, r0 + bne _0818D292 + ldr r0, _0818D2D4 + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [sp, #0x18] + lsls r3, r2, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] +_0818D292: + ldr r1, _0818D2D8 + ldr r2, [sp, #0x28] + adds r0, r2, r5 + lsls r0, r0, #2 + adds r2, r0, r1 + str r7, [r2] + adds r1, #4 + adds r0, r0, r1 + mov r1, r8 + str r1, [r0] + mov r0, sp + ldrh r0, [r0, #0x1c] + strh r0, [r2, #8] + strb r6, [r2, #0xa] + movs r0, #1 + strb r0, [r2, #0xb] + adds r0, r6, #0 +_0818D2B4: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818D2C4: .4byte gUnknown_85D3AC4 +_0818D2C8: .4byte gUnknown_82BF310 +_0818D2CC: .4byte sub_0818CCF4 +_0818D2D0: .4byte 0x0000FFFF +_0818D2D4: .4byte gUnknown_20205AC +_0818D2D8: .4byte gUnknown_203C9D0 + thumb_func_end sub_0818D110 + + thumb_func_start sub_0818D2DC +sub_0818D2DC: @ 0x0818D2DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r2, #0 + ldr r0, _0818D314 + ldrb r1, [r0, #0xa] + adds r3, r0, #0 + cmp r1, r4 + beq _0818D30C + adds r1, r3, #0 +_0818D2F4: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bhi _0818D30C + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xa] + cmp r0, r4 + bne _0818D2F4 +_0818D30C: + cmp r2, #8 + bne _0818D31C + ldr r0, _0818D318 + b _0818D372 + .align 2, 0 +_0818D314: .4byte gUnknown_203C9D0 +_0818D318: .4byte 0x0000FFFF +_0818D31C: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r5, r0, r3 + ldr r1, [r5] + mov r8, r1 + adds r1, r3, #4 + adds r0, r0, r1 + ldr r7, [r0] + ldrh r1, [r5, #8] + ldr r0, _0818D37C + lsls r6, r4, #4 + cmp r1, r0 + beq _0818D350 + ldr r1, _0818D380 + adds r0, r6, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + bl sub_08008554 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08008564 +_0818D350: + adds r0, r6, r4 + lsls r0, r0, #2 + ldr r1, _0818D380 + adds r0, r0, r1 + bl sub_08006E00 + mov r0, r8 + bl sub_08000BF0 + adds r0, r7, #0 + bl sub_08000BF0 + adds r1, r5, #0 + ldr r0, _0818D384 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + movs r0, #0 +_0818D372: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818D37C: .4byte 0x0000FFFF +_0818D380: .4byte gUnknown_20205AC +_0818D384: .4byte gUnknown_85D3AB8 + thumb_func_end sub_0818D2DC + + thumb_func_start sub_0818D388 +sub_0818D388: @ 0x0818D388 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + mov sb, r1 + adds r7, r2, #0 + adds r4, r3, #0 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + adds r0, r2, #0 + movs r1, #7 + bl sub_0800401C + adds r3, r0, #0 + movs r0, #0 + str r0, [sp] + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl sub_0818CDC8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0818D3E4 + str r6, [sp] + adds r0, r5, #0 + mov r1, sb + adds r2, r7, #0 + mov r3, r8 + bl sub_0818CEAC + movs r0, #0 + b _0818D3E6 +_0818D3E4: + ldr r0, _0818D3F4 +_0818D3E6: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818D3F4: .4byte 0x0000FFFF + thumb_func_end sub_0818D388 + + thumb_func_start sub_0818D3F8 +sub_0818D3F8: @ 0x0818D3F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov r8, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x20] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #0x80 + lsls r0, r0, #6 + bl sub_08000BC8 + adds r4, r0, #0 + cmp r4, #0 + beq _0818D48E + str r6, [sp] + mov r0, sb + ldr r1, [sp, #0x1c] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_0818CDC8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0818D48E + movs r0, #0x40 + str r0, [sp] + str r0, [sp, #4] + mov r1, sl + str r1, [sp, #8] + 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_080038AC + str r6, [sp] + mov r0, sb + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + bl sub_0818CEAC + adds r0, r4, #0 + bl sub_08000BF0 + movs r0, #0 + b _0818D490 +_0818D48E: + ldr r0, _0818D4A0 +_0818D490: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818D4A0: .4byte 0x0000FFFF + thumb_func_end sub_0818D3F8 + + thumb_func_start sub_0818D4A4 +sub_0818D4A4: @ 0x0818D4A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r7, r8 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + mov r8, r7 + mov r7, sb + lsls r7, r7, #0x18 + lsrs r7, r7, #0x18 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + str r6, [sp, #8] + mov r4, r8 + str r4, [sp, #0xc] + movs r4, #0 + str r4, [sp, #0x10] + str r7, [sp, #0x14] + bl sub_0818CF18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0818D4A4 + + thumb_func_start sub_0818D504 +sub_0818D504: @ 0x0818D504 + push {r4, r5, r6, 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, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r7, r7, #0x10 + lsrs r7, r7, #0x10 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + str r4, [sp] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + str r5, [sp, #4] + str r6, [sp, #8] + str r7, [sp, #0xc] + movs r4, #0 + str r4, [sp, #0x10] + bl sub_0818D4A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0818D504 + + thumb_func_start sub_0818D54C +sub_0818D54C: @ 0x0818D54C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0818D2DC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818D54C + + thumb_func_start sub_0818D560 +sub_0818D560: @ 0x0818D560 + push {r4, r5, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x1c] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + bl sub_0818D388 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0818D560 + + thumb_func_start sub_0818D590 +sub_0818D590: @ 0x0818D590 + push {r4, r5, r6, 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, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r7, r7, #0x18 + lsrs r7, r7, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + str r7, [sp, #0xc] + movs r4, #0 + str r4, [sp, #0x10] + bl sub_0818D3F8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0818D590 + + thumb_func_start sub_0818D5D8 +sub_0818D5D8: @ 0x0818D5D8 + push {r4, r5, lr} + sub sp, #0x14 + adds r5, r1, #0 + ldr r1, [sp, #0x20] + ldr r4, [sp, #0x24] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + str r2, [sp] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + str r3, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + movs r1, #1 + str r1, [sp, #0x10] + movs r1, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_0818D0B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x14 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0818D5D8 + + thumb_func_start sub_0818D61C +sub_0818D61C: @ 0x0818D61C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0818D2DC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818D61C + + thumb_func_start sub_0818D630 +sub_0818D630: @ 0x0818D630 + push {r4, lr} + sub sp, #0xc + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r2, [sp] + str r3, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0 + adds r3, r4, #0 + bl sub_0818D388 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0818D630 + + thumb_func_start sub_0818D664 +sub_0818D664: @ 0x0818D664 + push {r4, r5, lr} + sub sp, #0x14 + adds r5, r1, #0 + ldr r1, [sp, #0x20] + ldr r4, [sp, #0x24] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r2, [sp] + str r3, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + movs r1, #1 + str r1, [sp, #0x10] + movs r1, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_0818D3F8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x14 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0818D664 + + thumb_func_start sub_0818D6A8 +sub_0818D6A8: @ 0x0818D6A8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + bne _0818D6CE + cmp r0, #0 + beq _0818D6C8 + ldr r0, _0818D6C4 + adds r0, #0x3f + ldrb r0, [r0] + b _0818D6CE + .align 2, 0 +_0818D6C4: .4byte gUnknown_82EFF00 +_0818D6C8: + ldr r0, _0818D6D4 + adds r0, #0x3c + ldrb r0, [r0] +_0818D6CE: + pop {r1} + bx r1 + .align 2, 0 +_0818D6D4: .4byte gUnknown_82EFF00 + thumb_func_end sub_0818D6A8 + + thumb_func_start sub_0818D6D8 +sub_0818D6D8: @ 0x0818D6D8 + ldr r0, _0818D6E4 + ldr r0, [r0] + ldr r1, _0818D6E8 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0818D6E4: .4byte gUnknown_3005AEC +_0818D6E8: .4byte 0x00003B58 + thumb_func_end sub_0818D6D8 + + thumb_func_start sub_0818D6EC +sub_0818D6EC: @ 0x0818D6EC + push {r4, r5, lr} + ldr r5, _0818D730 + ldr r4, _0818D734 + bl sub_0818D6D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r1, [r0] + adds r0, r5, #0 + bl sub_0809CF88 + bl sub_0818D6D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0818D74C + ldr r0, _0818D738 + ldr r1, [r0] + ldr r0, _0818D73C + adds r1, r1, r0 + ldr r0, _0818D740 + ldr r2, _0818D744 + ldrb r1, [r1, #0xd] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_0809CF88 + ldr r1, _0818D748 + movs r0, #1 + b _0818D750 + .align 2, 0 +_0818D730: .4byte 0x00004010 +_0818D734: .4byte gUnknown_85D3ADE +_0818D738: .4byte gUnknown_3005AEC +_0818D73C: .4byte 0x00003B58 +_0818D740: .4byte 0x00004011 +_0818D744: .4byte gUnknown_85D3AD4 +_0818D748: .4byte gUnknown_2037290 +_0818D74C: + ldr r1, _0818D758 + movs r0, #0 +_0818D750: + strh r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818D758: .4byte gUnknown_2037290 + thumb_func_end sub_0818D6EC + + thumb_func_start sub_0818D75C +sub_0818D75C: @ 0x0818D75C + push {lr} + ldr r0, _0818D784 + ldr r0, [r0] + ldrb r1, [r0, #0xb] + lsls r1, r1, #8 + ldrb r0, [r0, #0xa] + orrs r0, r1 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + adds r1, r0, #0 + cmp r0, #1 + beq _0818D794 + cmp r0, #1 + bgt _0818D788 + cmp r0, #0 + beq _0818D78E + b _0818D79E + .align 2, 0 +_0818D784: .4byte gUnknown_3005AF0 +_0818D788: + cmp r1, #2 + beq _0818D79A + b _0818D79E +_0818D78E: + bl sub_0818DC74 + b _0818D79E +_0818D794: + bl sub_0818D8A8 + b _0818D79E +_0818D79A: + bl sub_0818E294 +_0818D79E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818D75C + + thumb_func_start sub_0818D7A4 +sub_0818D7A4: @ 0x0818D7A4 + push {lr} + bl sub_0818D6D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0818D7C8 + cmp r0, #1 + bgt _0818D7BC + cmp r0, #0 + beq _0818D7C2 + b _0818D7D2 +_0818D7BC: + cmp r0, #2 + beq _0818D7CE + b _0818D7D2 +_0818D7C2: + bl sub_0818DD10 + b _0818D7D2 +_0818D7C8: + bl sub_0818D8F0 + b _0818D7D2 +_0818D7CE: + bl sub_0818E2D0 +_0818D7D2: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818D7A4 + + thumb_func_start sub_0818D7D8 +sub_0818D7D8: @ 0x0818D7D8 + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _0818D808 + cmp r0, #1 + bgt _0818D7FC + cmp r0, #0 + beq _0818D802 + b _0818D812 +_0818D7FC: + cmp r1, #2 + beq _0818D80E + b _0818D812 +_0818D802: + bl sub_0818DC74 + b _0818D812 +_0818D808: + bl sub_0818D8A8 + b _0818D812 +_0818D80E: + bl sub_0818E294 +_0818D812: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818D7D8 + + thumb_func_start sub_0818D818 +sub_0818D818: @ 0x0818D818 + push {r4, lr} + ldr r4, _0818D82C + bl sub_0818D6D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818D82C: .4byte gUnknown_2037290 + thumb_func_end sub_0818D818 + + thumb_func_start sub_0818D830 +sub_0818D830: @ 0x0818D830 + push {lr} + adds r1, r0, #0 + movs r2, #0 + b _0818D840 +_0818D838: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, #2 +_0818D840: + ldrh r0, [r1] + cmp r0, #0 + bne _0818D838 + adds r0, r2, #0 + pop {r1} + bx r1 + thumb_func_end sub_0818D830 + + thumb_func_start sub_0818D84C +sub_0818D84C: @ 0x0818D84C + push {r4, r5, r6, lr} + bl sub_0806F050 + ldr r5, _0818D8A0 + ldr r4, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + strb r0, [r4, #0xc] + ldr r6, _0818D8A4 + ldr r0, [r5] + ldrb r0, [r0, #0xc] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + bl sub_0818D830 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + ldr r2, [r5] + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r6 + ldr r1, [r1] + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x10] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818D8A0: .4byte gUnknown_203CA30 +_0818D8A4: .4byte gUnknown_85D3D6C + thumb_func_end sub_0818D84C + + thumb_func_start sub_0818D8A8 +sub_0818D8A8: @ 0x0818D8A8 + push {lr} + ldr r2, _0818D8E0 + ldr r0, _0818D8E4 + ldr r0, [r0] + ldr r1, _0818D8E8 + adds r0, r0, r1 + str r0, [r2] + movs r3, #0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r2] + strb r3, [r0, #1] + ldr r1, [r2] + movs r0, #0xff + strb r0, [r1, #4] + ldr r0, [r2] + strb r3, [r0, #2] + ldr r0, [r2] + strb r3, [r0, #3] + ldr r1, [r2] + strh r3, [r1, #0xe] + ldr r0, _0818D8EC + ldrb r0, [r0] + strb r0, [r1, #0x12] + bl sub_0818D84C + pop {r0} + bx r0 + .align 2, 0 +_0818D8E0: .4byte gUnknown_203CA30 +_0818D8E4: .4byte gUnknown_3005AEC +_0818D8E8: .4byte 0x00003B58 +_0818D8EC: .4byte gUnknown_829BDA5 + thumb_func_end sub_0818D8A8 + + thumb_func_start sub_0818D8F0 +sub_0818D8F0: @ 0x0818D8F0 + ldr r3, _0818D908 + ldr r0, _0818D90C + ldr r0, [r0] + ldr r1, _0818D910 + adds r0, r0, r1 + str r0, [r3] + movs r2, #0 + movs r1, #1 + strb r1, [r0] + ldr r0, [r3] + strb r2, [r0, #1] + bx lr + .align 2, 0 +_0818D908: .4byte gUnknown_203CA30 +_0818D90C: .4byte gUnknown_3005AEC +_0818D910: .4byte 0x00003B58 + thumb_func_end sub_0818D8F0 + + thumb_func_start sub_0818D914 +sub_0818D914: @ 0x0818D914 + push {lr} + ldr r1, _0818D92C + ldr r0, _0818D930 + ldr r0, [r0] + ldr r2, _0818D934 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #2 + bne _0818D938 + movs r0, #2 + b _0818D942 + .align 2, 0 +_0818D92C: .4byte gUnknown_203CA30 +_0818D930: .4byte gUnknown_3005AEC +_0818D934: .4byte 0x00003B58 +_0818D938: + cmp r0, #1 + beq _0818D940 + movs r0, #0 + b _0818D942 +_0818D940: + movs r0, #1 +_0818D942: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818D914 + + thumb_func_start sub_0818D948 +sub_0818D948: @ 0x0818D948 + lsls r0, r0, #0x18 + ldr r1, _0818D954 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_0818D954: .4byte gUnknown_85D3CA4 + thumb_func_end sub_0818D948 + + thumb_func_start sub_0818D958 +sub_0818D958: @ 0x0818D958 + push {r4, lr} + ldr r1, _0818D97C + ldr r0, _0818D980 + ldr r0, [r0] + ldr r2, _0818D984 + adds r0, r0, r2 + str r0, [r1] + ldr r4, _0818D988 + ldrb r0, [r0, #0xc] + bl sub_0818D948 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818D97C: .4byte gUnknown_203CA30 +_0818D980: .4byte gUnknown_3005AEC +_0818D984: .4byte 0x00003B58 +_0818D988: .4byte gUnknown_2021C40 + thumb_func_end sub_0818D958 + + thumb_func_start sub_0818D98C +sub_0818D98C: @ 0x0818D98C + push {lr} + ldr r1, _0818D9A4 + ldr r0, _0818D9A8 + ldr r2, [r0] + ldr r3, _0818D9AC + adds r0, r2, r3 + str r0, [r1] + ldrb r0, [r0, #4] + cmp r0, #0xff + bne _0818D9B0 + movs r0, #0 + b _0818D9BC + .align 2, 0 +_0818D9A4: .4byte gUnknown_203CA30 +_0818D9A8: .4byte gUnknown_3005AEC +_0818D9AC: .4byte 0x00003B58 +_0818D9B0: + ldr r0, _0818D9C0 + ldr r3, _0818D9C4 + adds r1, r2, r3 + bl sub_08008888 + movs r0, #1 +_0818D9BC: + pop {r1} + bx r1 + .align 2, 0 +_0818D9C0: .4byte gUnknown_2021C68 +_0818D9C4: .4byte 0x00003B5C + thumb_func_end sub_0818D98C + + thumb_func_start sub_0818D9C8 +sub_0818D9C8: @ 0x0818D9C8 + push {r4, lr} + adds r4, r0, #0 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818D9C8 + + thumb_func_start sub_0818D9E4 +sub_0818D9E4: @ 0x0818D9E4 + push {lr} + ldr r2, _0818DA00 + ldr r0, _0818DA04 + ldr r1, [r0] + ldr r0, _0818DA08 + adds r1, r1, r0 + str r1, [r2] + ldr r0, _0818DA0C + ldrh r1, [r1, #0xe] + bl sub_0818D9C8 + pop {r0} + bx r0 + .align 2, 0 +_0818DA00: .4byte gUnknown_203CA30 +_0818DA04: .4byte gUnknown_3005AEC +_0818DA08: .4byte 0x00003B58 +_0818DA0C: .4byte gUnknown_2021C54 + thumb_func_end sub_0818D9E4 + + thumb_func_start sub_0818DA10 +sub_0818DA10: @ 0x0818DA10 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, r4, #0 + movs r1, #0xff + movs r2, #8 + bl memset + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08008888 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818DA10 + + thumb_func_start sub_0818DA30 +sub_0818DA30: @ 0x0818DA30 + push {lr} + ldr r2, _0818DA4C + ldr r0, _0818DA50 + ldr r0, [r0] + ldr r3, _0818DA54 + adds r1, r0, r3 + str r1, [r2] + ldr r1, _0818DA58 + adds r0, r0, r1 + ldr r1, _0818DA5C + bl sub_0818DA10 + pop {r0} + bx r0 + .align 2, 0 +_0818DA4C: .4byte gUnknown_203CA30 +_0818DA50: .4byte gUnknown_3005AEC +_0818DA54: .4byte 0x00003B58 +_0818DA58: .4byte 0x00003B5C +_0818DA5C: .4byte gUnknown_2021C68 + thumb_func_end sub_0818DA30 + + thumb_func_start sub_0818DA60 +sub_0818DA60: @ 0x0818DA60 + ldr r1, _0818DA78 + ldr r0, _0818DA7C + ldr r0, [r0] + ldr r2, _0818DA80 + adds r0, r0, r2 + str r0, [r1] + ldrb r1, [r0, #2] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_0818DA78: .4byte gUnknown_203CA30 +_0818DA7C: .4byte gUnknown_3005AEC +_0818DA80: .4byte 0x00003B58 + thumb_func_end sub_0818DA60 + + thumb_func_start sub_0818DA84 +sub_0818DA84: @ 0x0818DA84 + push {lr} + bl sub_081AA9C8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818DA84 + + thumb_func_start sub_0818DA90 +sub_0818DA90: @ 0x0818DA90 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r4, _0818DB18 + ldr r0, _0818DB1C + ldr r0, [r0] + ldr r1, _0818DB20 + adds r0, r0, r1 + str r0, [r4] + ldr r1, _0818DB24 + mov r8, r1 + ldrb r0, [r0, #0xc] + lsls r0, r0, #2 + add r0, r8 + ldr r0, [r0] + bl sub_0818D830 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #1] + ldr r0, _0818DB28 + adds r1, r5, #0 + bl sub_0818D9C8 + ldr r1, [r4] + strh r5, [r1, #0xe] + ldr r0, _0818DB2C + ldr r0, [r0] + adds r1, #4 + bl sub_0818DA10 + ldr r1, [r4] + ldr r0, _0818DB30 + ldrb r0, [r0] + strb r0, [r1, #0x12] + movs r7, #0 + movs r3, #0 + cmp r7, r6 + bhs _0818DB42 + mov ip, r8 +_0818DAE8: + ldr r2, [r4] + ldrb r0, [r2, #0xc] + lsls r0, r0, #2 + add r0, ip + ldr r1, [r0] + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r5 + bne _0818DB34 + movs r7, #1 + ldrb r0, [r2, #3] + adds r0, #1 + strb r0, [r2, #3] + ldr r0, [r4] + strb r7, [r0, #2] + ldr r1, [r4] + ldrh r0, [r1, #0x10] + cmp r0, r5 + bne _0818DB42 + movs r0, #5 + strb r0, [r1, #3] + b _0818DB42 + .align 2, 0 +_0818DB18: .4byte gUnknown_203CA30 +_0818DB1C: .4byte gUnknown_3005AEC +_0818DB20: .4byte 0x00003B58 +_0818DB24: .4byte gUnknown_85D3D6C +_0818DB28: .4byte gUnknown_2021C54 +_0818DB2C: .4byte gUnknown_3005AF0 +_0818DB30: .4byte gUnknown_829BDA5 +_0818DB34: + movs r0, #0 + strb r0, [r2, #2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r6 + blo _0818DAE8 +_0818DB42: + adds r0, r7, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818DA90 + + thumb_func_start sub_0818DB50 +sub_0818DB50: @ 0x0818DB50 + push {lr} + ldr r0, _0818DB64 + ldrh r0, [r0] + bl sub_0818DA90 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0818DB64: .4byte gUnknown_203CB48 + thumb_func_end sub_0818DB50 + + thumb_func_start sub_0818DB68 +sub_0818DB68: @ 0x0818DB68 + push {lr} + ldr r1, _0818DB88 + ldr r0, _0818DB8C + ldr r0, [r0] + ldr r2, _0818DB90 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #3] + movs r1, #0 + cmp r0, #4 + bls _0818DB80 + movs r1, #1 +_0818DB80: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_0818DB88: .4byte gUnknown_203CA30 +_0818DB8C: .4byte gUnknown_3005AEC +_0818DB90: .4byte 0x00003B58 + thumb_func_end sub_0818DB68 + + thumb_func_start sub_0818DB94 +sub_0818DB94: @ 0x0818DB94 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _0818DBA8 + bl sub_0818D9C8 + pop {r0} + bx r0 + .align 2, 0 +_0818DBA8: .4byte gUnknown_2021C54 + thumb_func_end sub_0818DB94 + + thumb_func_start sub_0818DBAC +sub_0818DBAC: @ 0x0818DBAC + push {r4, r5, lr} + ldr r5, _0818DBD8 + ldr r0, _0818DBDC + ldr r0, [r0] + ldr r1, _0818DBE0 + adds r0, r0, r1 + str r0, [r5] + ldr r1, _0818DBE4 + ldrb r0, [r0, #0xc] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + adds r0, r4, #0 + bl sub_0818DB94 + ldr r1, [r5] + movs r0, #2 + strb r0, [r1, #1] + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_0818DBD8: .4byte gUnknown_203CA30 +_0818DBDC: .4byte gUnknown_3005AEC +_0818DBE0: .4byte 0x00003B58 +_0818DBE4: .4byte gUnknown_85D3D84 + thumb_func_end sub_0818DBAC + + thumb_func_start sub_0818DBE8 +sub_0818DBE8: @ 0x0818DBE8 + push {lr} + bl sub_0818D8A8 + ldr r0, _0818DBFC + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #1] + pop {r0} + bx r0 + .align 2, 0 +_0818DBFC: .4byte gUnknown_203CA30 + thumb_func_end sub_0818DBE8 + + thumb_func_start sub_0818DC00 +sub_0818DC00: @ 0x0818DC00 + push {lr} + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818DC00 + + thumb_func_start sub_0818DC0C +sub_0818DC0C: @ 0x0818DC0C + push {r4, r5, r6, r7, lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #0xf + ands r4, r0 + movs r3, #0 + ldr r5, _0818DC64 + ldr r1, _0818DC68 + lsls r0, r4, #2 + adds r6, r0, r1 + adds r7, r5, #0 +_0818DC26: + ldr r2, [r5] + lsls r1, r3, #1 + adds r2, #2 + adds r2, r2, r1 + ldr r0, [r6] + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #8 + bls _0818DC26 + ldr r2, [r7] + ldr r0, _0818DC6C + lsls r1, r4, #1 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2, #0x14] + ldr r0, _0818DC70 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r2, #0x28] + adds r2, #0x2b + strb r4, [r2] + ldr r1, [r7] + movs r0, #0xff + strb r0, [r1, #0x18] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818DC64: .4byte gUnknown_203CA34 +_0818DC68: .4byte gUnknown_85D3C04 +_0818DC6C: .4byte gUnknown_85D3C44 +_0818DC70: .4byte gUnknown_85D3C64 + thumb_func_end sub_0818DC0C + + thumb_func_start sub_0818DC74 +sub_0818DC74: @ 0x0818DC74 + push {r4, r5, r6, lr} + ldr r2, _0818DCFC + ldr r0, _0818DD00 + ldr r0, [r0] + ldr r1, _0818DD04 + adds r0, r0, r1 + str r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + movs r3, #0 + adds r4, r2, #0 + ldr r6, _0818DD08 + adds r5, r4, #0 + ldr r0, _0818DD0C + adds r2, r0, #0 +_0818DC96: + ldr r1, [r5] + lsls r0, r3, #1 + adds r1, #2 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #8 + bls _0818DC96 + ldr r0, [r4] + ldr r1, _0818DD0C + strh r1, [r0, #0x14] + movs r1, #1 + rsbs r1, r1, #0 + strh r1, [r0, #0x16] + movs r3, #0 + adds r5, r4, #0 + movs r2, #0 +_0818DCC0: + ldr r0, [r5] + lsls r1, r3, #1 + adds r0, #0x20 + adds r0, r0, r1 + strh r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0818DCC0 + ldr r0, [r4] + movs r2, #0 + movs r1, #0 + strh r1, [r0, #0x28] + adds r0, #0x2a + strb r2, [r0] + ldr r0, [r4] + adds r0, #0x2c + movs r1, #0x10 + strb r1, [r0] + ldr r0, [r4] + ldrb r1, [r6] + adds r0, #0x2d + strb r1, [r0] + bl sub_0818DC0C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818DCFC: .4byte gUnknown_203CA34 +_0818DD00: .4byte gUnknown_3005AEC +_0818DD04: .4byte 0x00003B58 +_0818DD08: .4byte gUnknown_829BDA5 +_0818DD0C: .4byte 0x0000FFFF + thumb_func_end sub_0818DC74 + + thumb_func_start sub_0818DD10 +sub_0818DD10: @ 0x0818DD10 + ldr r2, _0818DD34 + ldr r0, _0818DD38 + ldr r0, [r0] + ldr r1, _0818DD3C + adds r0, r0, r1 + str r0, [r2] + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + strb r1, [r0, #1] + ldr r0, [r2] + adds r0, #0x2a + strb r1, [r0] + ldr r1, [r2] + ldr r0, _0818DD40 + strh r0, [r1, #0x16] + bx lr + .align 2, 0 +_0818DD34: .4byte gUnknown_203CA34 +_0818DD38: .4byte gUnknown_3005AEC +_0818DD3C: .4byte 0x00003B58 +_0818DD40: .4byte 0x0000FFFF + thumb_func_end sub_0818DD10 + + thumb_func_start sub_0818DD44 +sub_0818DD44: @ 0x0818DD44 + push {lr} + ldr r1, _0818DD5C + ldr r0, _0818DD60 + ldr r0, [r0] + ldr r2, _0818DD64 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #2 + bne _0818DD68 + movs r0, #2 + b _0818DD72 + .align 2, 0 +_0818DD5C: .4byte gUnknown_203CA34 +_0818DD60: .4byte gUnknown_3005AEC +_0818DD64: .4byte 0x00003B58 +_0818DD68: + cmp r0, #1 + beq _0818DD70 + movs r0, #0 + b _0818DD72 +_0818DD70: + movs r0, #1 +_0818DD72: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818DD44 + + thumb_func_start sub_0818DD78 +sub_0818DD78: @ 0x0818DD78 + push {lr} + bl sub_0818DDA4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0818DD8A + movs r0, #2 + b _0818DD9E +_0818DD8A: + cmp r0, #2 + beq _0818DD98 + bl sub_0818DE50 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818DD9C +_0818DD98: + movs r0, #1 + b _0818DD9E +_0818DD9C: + movs r0, #0 +_0818DD9E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818DD78 + + thumb_func_start sub_0818DDA4 +sub_0818DDA4: @ 0x0818DDA4 + push {r4, r5, r6, r7, lr} + movs r7, #1 + ldr r5, _0818DDC8 + ldr r0, _0818DDCC + ldr r1, [r0] + ldr r2, _0818DDD0 + adds r0, r1, r2 + str r0, [r5] + ldrb r0, [r0, #0x18] + cmp r0, #0xff + bne _0818DDDC + ldr r0, _0818DDD4 + ldr r1, _0818DDD8 + bl sub_08008888 + movs r7, #0 + b _0818DE36 + .align 2, 0 +_0818DDC8: .4byte gUnknown_203CA34 +_0818DDCC: .4byte gUnknown_3005AEC +_0818DDD0: .4byte 0x00003B58 +_0818DDD4: .4byte gUnknown_2021C40 +_0818DDD8: .4byte gUnknown_85D3D90 +_0818DDDC: + ldr r0, _0818DE40 + ldr r2, _0818DE44 + adds r1, r1, r2 + bl sub_08008888 + ldr r0, [r5] + adds r0, #0x18 + bl sub_0818DEB4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _0818DE48 + ldr r0, [r6] + bl sub_0818DEB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0818DE36 + ldr r0, [r5] + movs r2, #0 + cmp r2, r4 + bhs _0818DE36 + ldr r1, [r6] + ldrb r0, [r0, #0x18] + ldrb r1, [r1] + cmp r0, r1 + bne _0818DE34 +_0818DE14: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r4 + bhs _0818DE36 + ldr r0, _0818DE4C + ldr r1, [r0] + adds r1, #0x18 + adds r1, r1, r2 + ldr r0, _0818DE48 + ldr r0, [r0] + adds r0, r0, r2 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + beq _0818DE14 +_0818DE34: + movs r7, #2 +_0818DE36: + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818DE40: .4byte gUnknown_2021C40 +_0818DE44: .4byte 0x00003B70 +_0818DE48: .4byte gUnknown_3005AF0 +_0818DE4C: .4byte gUnknown_203CA34 + thumb_func_end sub_0818DDA4 + + thumb_func_start sub_0818DE50 +sub_0818DE50: @ 0x0818DE50 + push {r4, r5, r6, lr} + ldr r3, _0818DEA0 + ldr r0, _0818DEA4 + ldr r1, [r0] + ldr r2, _0818DEA8 + adds r0, r1, r2 + str r0, [r3] + movs r5, #0 + movs r4, #0 + ldr r0, _0818DEAC + adds r1, r1, r0 + ldr r0, _0818DEB0 + ldr r2, [r0] + ldrh r1, [r1] + adds r6, r3, #0 + adds r3, r0, #0 + ldrb r2, [r2, #0xa] + cmp r1, r2 + bne _0818DE96 +_0818DE76: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bhi _0818DE98 + ldr r1, [r6] + lsls r0, r4, #1 + adds r1, #0x20 + adds r1, r1, r0 + ldr r0, [r3] + adds r0, #0xa + adds r0, r0, r4 + ldrh r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + beq _0818DE76 +_0818DE96: + movs r5, #1 +_0818DE98: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0818DEA0: .4byte gUnknown_203CA34 +_0818DEA4: .4byte gUnknown_3005AEC +_0818DEA8: .4byte 0x00003B58 +_0818DEAC: .4byte 0x00003B78 +_0818DEB0: .4byte gUnknown_3005AF0 + thumb_func_end sub_0818DE50 + + thumb_func_start sub_0818DEB4 +sub_0818DEB4: @ 0x0818DEB4 + push {lr} + movs r2, #0 + adds r1, r0, #0 + b _0818DEC4 +_0818DEBC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, #1 +_0818DEC4: + ldrb r0, [r1] + cmp r0, #0xff + bne _0818DEBC + adds r0, r2, #0 + pop {r1} + bx r1 + thumb_func_end sub_0818DEB4 + + thumb_func_start sub_0818DED0 +sub_0818DED0: @ 0x0818DED0 + push {r4, lr} + ldr r4, _0818DEEC + ldr r0, _0818DEF0 + ldr r0, [r0] + ldrh r0, [r0, #0x28] + bl sub_080D6C8C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818DEEC: .4byte gUnknown_2021C40 +_0818DEF0: .4byte gUnknown_203CA34 + thumb_func_end sub_0818DED0 + + thumb_func_start sub_0818DEF4 +sub_0818DEF4: @ 0x0818DEF4 + push {r4, lr} + ldr r4, _0818DF10 + ldr r0, _0818DF14 + ldr r0, [r0] + ldr r1, _0818DF18 + adds r0, r0, r1 + str r0, [r4] + bl sub_0818DDA4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818DF1C + movs r0, #0 + b _0818DF28 + .align 2, 0 +_0818DF10: .4byte gUnknown_203CA34 +_0818DF14: .4byte gUnknown_3005AEC +_0818DF18: .4byte 0x00003B58 +_0818DF1C: + ldr r0, [r4] + ldr r1, _0818DF30 + ldrb r1, [r1] + adds r0, #0x2d + strb r1, [r0] + movs r0, #1 +_0818DF28: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0818DF30: .4byte gUnknown_829BDA5 + thumb_func_end sub_0818DEF4 + + thumb_func_start sub_0818DF34 +sub_0818DF34: @ 0x0818DF34 + ldr r2, _0818DF48 + ldr r0, _0818DF4C + ldr r0, [r0] + ldr r3, _0818DF50 + adds r1, r0, r3 + str r1, [r2] + ldr r1, _0818DF54 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0818DF48: .4byte gUnknown_203CA34 +_0818DF4C: .4byte gUnknown_3005AEC +_0818DF50: .4byte 0x00003B58 +_0818DF54: .4byte 0x00003B82 + thumb_func_end sub_0818DF34 + + thumb_func_start sub_0818DF58 +sub_0818DF58: @ 0x0818DF58 + push {lr} + bl sub_0811AD40 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818DF58 + + thumb_func_start sub_0818DF64 +sub_0818DF64: @ 0x0818DF64 + push {r4, r5, r6, lr} + ldr r5, _0818DFA0 + ldr r0, _0818DFA4 + ldr r0, [r0] + ldr r1, _0818DFA8 + adds r0, r0, r1 + str r0, [r5] + ldr r6, _0818DFAC + ldrh r1, [r0, #0x14] + adds r0, r6, #0 + bl sub_0811F180 + ldr r4, _0818DFB0 + ldr r0, [r5] + ldrh r1, [r0, #0x16] + adds r0, r4, #0 + bl sub_0811F180 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0800895C + movs r1, #0 + cmp r0, #0 + bne _0818DF98 + movs r1, #1 +_0818DF98: + adds r0, r1, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_0818DFA0: .4byte gUnknown_203CA34 +_0818DFA4: .4byte gUnknown_3005AEC +_0818DFA8: .4byte 0x00003B58 +_0818DFAC: .4byte gUnknown_2021C40 +_0818DFB0: .4byte gUnknown_2021C54 + thumb_func_end sub_0818DF64 + + thumb_func_start sub_0818DFB4 +sub_0818DFB4: @ 0x0818DFB4 + ldr r1, _0818DFC8 + ldr r0, _0818DFCC + ldr r0, [r0] + ldr r2, _0818DFD0 + adds r0, r0, r2 + str r0, [r1] + ldr r1, _0818DFD4 + ldrh r0, [r0, #0x28] + strh r0, [r1] + bx lr + .align 2, 0 +_0818DFC8: .4byte gUnknown_203CA34 +_0818DFCC: .4byte gUnknown_3005AEC +_0818DFD0: .4byte 0x00003B58 +_0818DFD4: .4byte gUnknown_2037282 + thumb_func_end sub_0818DFB4 + + thumb_func_start sub_0818DFD8 +sub_0818DFD8: @ 0x0818DFD8 + ldr r1, _0818DFEC + ldr r0, _0818DFF0 + ldr r0, [r0] + ldr r2, _0818DFF4 + adds r0, r0, r2 + str r0, [r1] + movs r1, #1 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_0818DFEC: .4byte gUnknown_203CA34 +_0818DFF0: .4byte gUnknown_3005AEC +_0818DFF4: .4byte 0x00003B58 + thumb_func_end sub_0818DFD8 + + thumb_func_start sub_0818DFF8 +sub_0818DFF8: @ 0x0818DFF8 + ldr r1, _0818E00C + ldr r0, _0818E010 + ldr r0, [r0] + ldr r2, _0818E014 + adds r0, r0, r2 + str r0, [r1] + movs r1, #2 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_0818E00C: .4byte gUnknown_203CA34 +_0818E010: .4byte gUnknown_3005AEC +_0818E014: .4byte 0x00003B58 + thumb_func_end sub_0818DFF8 + + thumb_func_start sub_0818E018 +sub_0818E018: @ 0x0818E018 + ldr r1, _0818E02C + ldr r0, _0818E030 + ldr r0, [r0] + ldr r2, _0818E034 + adds r0, r0, r2 + str r0, [r1] + ldr r1, _0818E038 + strh r1, [r0, #0x16] + bx lr + .align 2, 0 +_0818E02C: .4byte gUnknown_203CA34 +_0818E030: .4byte gUnknown_3005AEC +_0818E034: .4byte 0x00003B58 +_0818E038: .4byte 0x0000FFFF + thumb_func_end sub_0818E018 + + thumb_func_start sub_0818E03C +sub_0818E03C: @ 0x0818E03C + push {lr} + bl sub_081AA9E8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818E03C + + thumb_func_start sub_0818E048 +sub_0818E048: @ 0x0818E048 + push {r4, lr} + ldr r4, _0818E06C + ldr r0, _0818E070 + ldr r0, [r0] + ldr r1, _0818E074 + adds r0, r0, r1 + str r0, [r4] + bl sub_0818DEF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818E078 + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0x2b + ldrb r1, [r1] + adds r0, #0x2c + b _0818E07E + .align 2, 0 +_0818E06C: .4byte gUnknown_203CA34 +_0818E070: .4byte gUnknown_3005AEC +_0818E074: .4byte 0x00003B58 +_0818E078: + ldr r0, [r4] + adds r0, #0x2c + movs r1, #0x10 +_0818E07E: + strb r1, [r0] + bl sub_0818DC0C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818E048 + + thumb_func_start sub_0818E08C +sub_0818E08C: @ 0x0818E08C + push {r4, r5, lr} + ldr r1, _0818E0C8 + ldr r0, _0818E0CC + ldr r0, [r0] + ldr r2, _0818E0D0 + adds r0, r0, r2 + str r0, [r1] + movs r2, #0 + adds r5, r1, #0 + adds r4, r5, #0 + ldr r0, _0818E0D4 + adds r3, r0, #0 +_0818E0A4: + ldr r1, [r4] + lsls r0, r2, #1 + adds r1, #2 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #8 + bls _0818E0A4 + ldr r1, [r5] + ldr r0, _0818E0D4 + strh r0, [r1, #0x14] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818E0C8: .4byte gUnknown_203CA34 +_0818E0CC: .4byte gUnknown_3005AEC +_0818E0D0: .4byte 0x00003B58 +_0818E0D4: .4byte 0x0000FFFF + thumb_func_end sub_0818E08C + + thumb_func_start sub_0818E0D8 +sub_0818E0D8: @ 0x0818E0D8 + push {lr} + ldr r1, _0818E0E8 + movs r0, #0x11 + strh r0, [r1] + bl sub_0811AD40 + pop {r0} + bx r0 + .align 2, 0 +_0818E0E8: .4byte gUnknown_2037280 + thumb_func_end sub_0818E0D8 + + thumb_func_start sub_0818E0EC +sub_0818E0EC: @ 0x0818E0EC + push {lr} + ldr r0, _0818E0FC + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + pop {r0} + bx r0 + .align 2, 0 +_0818E0FC: .4byte gUnknown_203CB48 + thumb_func_end sub_0818E0EC + + thumb_func_start sub_0818E100 +sub_0818E100: @ 0x0818E100 + push {r4, r5, r6, lr} + ldr r2, _0818E154 + ldr r0, _0818E158 + ldr r0, [r0] + ldr r1, _0818E15C + adds r0, r0, r1 + str r0, [r2] + ldr r1, _0818E160 + ldrh r1, [r1] + strh r1, [r0, #0x28] + movs r3, #0 + adds r4, r2, #0 + ldr r6, _0818E164 + adds r5, r4, #0 + adds r2, r6, #0 +_0818E11E: + ldr r1, [r5] + lsls r0, r3, #1 + adds r1, #0x20 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, #0xa + adds r0, r0, r3 + ldrb r0, [r0] + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _0818E11E + ldr r0, [r4] + adds r0, #0x18 + ldr r1, [r6] + bl sub_08008888 + ldr r0, [r4] + ldr r1, _0818E168 + ldrb r1, [r1] + adds r0, #0x2d + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818E154: .4byte gUnknown_203CA34 +_0818E158: .4byte gUnknown_3005AEC +_0818E15C: .4byte 0x00003B58 +_0818E160: .4byte gUnknown_203CB48 +_0818E164: .4byte gUnknown_3005AF0 +_0818E168: .4byte gUnknown_829BDA5 + thumb_func_end sub_0818E100 + + thumb_func_start sub_0818E16C +sub_0818E16C: @ 0x0818E16C + ldr r2, _0818E184 + ldr r0, _0818E188 + ldr r0, [r0] + ldr r3, _0818E18C + adds r1, r0, r3 + str r1, [r2] + ldr r1, _0818E190 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_0818E184: .4byte gUnknown_203CA34 +_0818E188: .4byte gUnknown_3005AEC +_0818E18C: .4byte 0x00003B58 +_0818E190: .4byte 0x00003B82 + thumb_func_end sub_0818E16C + + thumb_func_start sub_0818E194 +sub_0818E194: @ 0x0818E194 + push {lr} + ldr r2, _0818E1B0 + ldr r0, _0818E1B4 + ldr r1, [r0] + ldr r0, _0818E1B8 + adds r1, r1, r0 + str r1, [r2] + ldr r0, _0818E1BC + ldrh r1, [r1, #0x14] + bl sub_0811F180 + pop {r0} + bx r0 + .align 2, 0 +_0818E1B0: .4byte gUnknown_203CA34 +_0818E1B4: .4byte gUnknown_3005AEC +_0818E1B8: .4byte 0x00003B58 +_0818E1BC: .4byte gUnknown_2021C68 + thumb_func_end sub_0818E194 + + thumb_func_start sub_0818E1C0 +sub_0818E1C0: @ 0x0818E1C0 + push {lr} + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818E1C0 + + thumb_func_start sub_0818E1CC +sub_0818E1CC: @ 0x0818E1CC + push {r4, r5, r6, r7, lr} + ldr r2, _0818E250 + ldr r1, _0818E254 + ldr r1, [r1] + ldr r4, _0818E258 + adds r3, r1, r4 + str r3, [r2] + adds r6, r0, #0 + adds r6, #0x2c + ldrb r4, [r6] + adds r7, r2, #0 + cmp r4, #0xf + bhi _0818E248 + ldrb r0, [r3] + cmp r0, #0 + bne _0818E248 + movs r5, #0 + ldr r2, _0818E25C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r4, r0 + bne _0818E240 + adds r4, r7, #0 +_0818E1FA: + bl sub_0806F050 + ldr r2, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + adds r2, #0x2b + strb r0, [r2] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bhi _0818E222 + ldr r0, [r4] + adds r0, #0x2b + ldrb r1, [r6] + ldrb r0, [r0] + cmp r1, r0 + beq _0818E1FA +_0818E222: + ldr r0, [r4] + adds r2, r0, #0 + adds r2, #0x2b + ldrb r0, [r6] + ldr r7, _0818E250 + ldrb r4, [r2] + cmp r0, r4 + bne _0818E240 + ldrb r1, [r2] + adds r3, r1, #1 + adds r0, r3, #0 + asrs r0, r0, #4 + lsls r0, r0, #4 + subs r0, r3, r0 + strb r0, [r2] +_0818E240: + ldr r0, [r7] + ldrb r1, [r6] + adds r0, #0x2c + strb r1, [r0] +_0818E248: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818E250: .4byte gUnknown_203CA34 +_0818E254: .4byte gUnknown_3005AEC +_0818E258: .4byte 0x00003B58 +_0818E25C: .4byte 0x00003B83 + thumb_func_end sub_0818E1CC + + thumb_func_start sub_0818E260 +sub_0818E260: @ 0x0818E260 + push {r4, lr} + ldr r4, _0818E290 + ldr r1, [r4] + movs r0, #0xff + strb r0, [r1, #4] + ldr r0, [r4] + movs r1, #0 + strb r1, [r0, #2] + ldr r0, [r4] + strb r1, [r0, #3] + ldr r0, [r4] + strb r1, [r0, #0xc] + bl sub_0806F050 + ldr r4, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + strb r0, [r4, #0xd] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818E290: .4byte gUnknown_203CA38 + thumb_func_end sub_0818E260 + + thumb_func_start sub_0818E294 +sub_0818E294: @ 0x0818E294 + push {r4, lr} + ldr r4, _0818E2C0 + ldr r0, _0818E2C4 + ldr r0, [r0] + ldr r1, _0818E2C8 + adds r0, r0, r1 + str r0, [r4] + movs r2, #0 + movs r1, #2 + strb r1, [r0] + ldr r0, [r4] + strb r2, [r0, #1] + bl sub_0818E260 + ldr r1, [r4] + ldr r0, _0818E2CC + ldrb r0, [r0] + strb r0, [r1, #0xe] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818E2C0: .4byte gUnknown_203CA38 +_0818E2C4: .4byte gUnknown_3005AEC +_0818E2C8: .4byte 0x00003B58 +_0818E2CC: .4byte gUnknown_829BDA5 + thumb_func_end sub_0818E294 + + thumb_func_start sub_0818E2D0 +sub_0818E2D0: @ 0x0818E2D0 + push {lr} + ldr r2, _0818E300 + ldr r0, _0818E304 + ldr r0, [r0] + ldr r1, _0818E308 + adds r0, r0, r1 + str r0, [r2] + movs r3, #0 + movs r1, #2 + strb r1, [r0] + ldr r0, [r2] + strb r3, [r0, #1] + ldr r2, [r2] + ldrb r0, [r2, #2] + cmp r0, #5 + beq _0818E2F6 + ldrb r0, [r2, #3] + cmp r0, #5 + bne _0818E2FA +_0818E2F6: + bl sub_0818E260 +_0818E2FA: + pop {r0} + bx r0 + .align 2, 0 +_0818E300: .4byte gUnknown_203CA38 +_0818E304: .4byte gUnknown_3005AEC +_0818E308: .4byte 0x00003B58 + thumb_func_end sub_0818E2D0 + + thumb_func_start sub_0818E30C +sub_0818E30C: @ 0x0818E30C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r4, _0818E34C + ldr r0, _0818E350 + ldr r0, [r0] + ldr r3, _0818E354 + adds r1, r0, r3 + str r1, [r4] + ldrb r0, [r1, #0xc] + cmp r0, r2 + bhi _0818E346 + strb r2, [r1, #0xc] + ldr r0, [r4] + adds r0, #4 + movs r1, #0xff + movs r2, #8 + bl memset + ldr r1, [r4] + ldr r0, _0818E358 + adds r1, #4 + ldr r0, [r0] + ldm r0!, {r2, r3} + stm r1!, {r2, r3} + ldr r1, [r4] + ldr r0, _0818E35C + ldrb r0, [r0] + strb r0, [r1, #0xe] +_0818E346: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818E34C: .4byte gUnknown_203CA38 +_0818E350: .4byte gUnknown_3005AEC +_0818E354: .4byte 0x00003B58 +_0818E358: .4byte gUnknown_3005AF0 +_0818E35C: .4byte gUnknown_829BDA5 + thumb_func_end sub_0818E30C + + thumb_func_start sub_0818E360 +sub_0818E360: @ 0x0818E360 + push {r4, r5, lr} + adds r2, r0, #0 + movs r3, #0 + movs r4, #0 + ldr r1, _0818E388 + ldr r0, _0818E38C + ldr r0, [r0] + ldr r5, _0818E390 + adds r0, r0, r5 + str r0, [r1] + ldrb r0, [r0, #0xd] + adds r5, r1, #0 + cmp r0, #4 + bhi _0818E3C6 + lsls r0, r0, #2 + ldr r1, _0818E394 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818E388: .4byte gUnknown_203CA38 +_0818E38C: .4byte gUnknown_3005AEC +_0818E390: .4byte 0x00003B58 +_0818E394: .4byte _0818E398 +_0818E398: @ jump table + .4byte _0818E3AC @ case 0 + .4byte _0818E3B0 @ case 1 + .4byte _0818E3B4 @ case 2 + .4byte _0818E3B8 @ case 3 + .4byte _0818E3BC @ case 4 +_0818E3AC: + ldrb r0, [r2, #1] + b _0818E3BE +_0818E3B0: + ldrb r0, [r2, #2] + b _0818E3BE +_0818E3B4: + ldrb r0, [r2, #3] + b _0818E3BE +_0818E3B8: + ldrb r0, [r2, #4] + b _0818E3BE +_0818E3BC: + ldrb r0, [r2, #5] +_0818E3BE: + cmp r0, #0 + beq _0818E3C6 + adds r3, r0, #0 + movs r4, #1 +_0818E3C6: + cmp r4, #1 + bne _0818E3E0 + adds r0, r3, #0 + bl sub_0818E30C + ldr r0, _0818E3DC + ldr r1, [r0] + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + b _0818E3E8 + .align 2, 0 +_0818E3DC: .4byte gUnknown_203CA38 +_0818E3E0: + ldr r1, [r5] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] +_0818E3E8: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0818E360 + + thumb_func_start sub_0818E3F0 +sub_0818E3F0: @ 0x0818E3F0 + push {r4, r5, lr} + adds r5, r1, #0 + ldr r4, _0818E428 + ldr r1, _0818E42C + ldr r1, [r1] + ldr r2, _0818E430 + adds r1, r1, r2 + str r1, [r4] + ldr r2, _0818E434 + ldrb r1, [r1, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r1, _0818E438 + ldr r0, [r4] + ldrb r0, [r0, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_08008828 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818E428: .4byte gUnknown_203CA38 +_0818E42C: .4byte gUnknown_3005AEC +_0818E430: .4byte 0x00003B58 +_0818E434: .4byte gUnknown_85D3DDC +_0818E438: .4byte gUnknown_85D3DB0 + thumb_func_end sub_0818E3F0 + + thumb_func_start sub_0818E43C +sub_0818E43C: @ 0x0818E43C + push {r4, lr} + adds r3, r1, #0 + ldr r2, _0818E468 + ldr r1, _0818E46C + ldr r1, [r1] + ldr r4, _0818E470 + adds r1, r1, r4 + str r1, [r2] + ldrb r2, [r1, #0xd] + strb r2, [r0] + ldr r2, _0818E474 + ldrb r0, [r1, #0xd] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r3, #0 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818E468: .4byte gUnknown_203CA38 +_0818E46C: .4byte gUnknown_3005AEC +_0818E470: .4byte 0x00003B58 +_0818E474: .4byte gUnknown_85D3DB0 + thumb_func_end sub_0818E43C + + thumb_func_start sub_0818E478 +sub_0818E478: @ 0x0818E478 + push {r4, lr} + ldr r3, _0818E494 + ldr r1, _0818E498 + ldr r1, [r1] + ldr r4, _0818E49C + adds r2, r1, r4 + str r2, [r3] + ldr r2, _0818E4A0 + adds r1, r1, r2 + bl sub_080088B8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818E494: .4byte gUnknown_203CA38 +_0818E498: .4byte gUnknown_3005AEC +_0818E49C: .4byte 0x00003B58 +_0818E4A0: .4byte 0x00003B5C + thumb_func_end sub_0818E478 + + thumb_func_start sub_0818E4A4 +sub_0818E4A4: @ 0x0818E4A4 + ldr r2, _0818E4B8 + ldr r1, _0818E4BC + ldr r1, [r1] + ldr r3, _0818E4C0 + adds r1, r1, r3 + str r1, [r2] + ldrb r1, [r1, #0xe] + strb r1, [r0] + bx lr + .align 2, 0 +_0818E4B8: .4byte gUnknown_203CA38 +_0818E4BC: .4byte gUnknown_3005AEC +_0818E4C0: .4byte 0x00003B58 + thumb_func_end sub_0818E4A4 + + thumb_func_start sub_0818E4C4 +sub_0818E4C4: @ 0x0818E4C4 + push {lr} + lsls r1, r1, #0x18 + ldr r2, _0818E4D8 + lsrs r1, r1, #0x16 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_0818E4D8: .4byte gUnknown_85D3DDC + thumb_func_end sub_0818E4C4 + + thumb_func_start sub_0818E4DC +sub_0818E4DC: @ 0x0818E4DC + push {lr} + ldr r1, _0818E4F4 + ldr r0, _0818E4F8 + ldr r0, [r0] + ldr r2, _0818E4FC + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #2] + cmp r0, #4 + bls _0818E500 + movs r0, #1 + b _0818E50A + .align 2, 0 +_0818E4F4: .4byte gUnknown_203CA38 +_0818E4F8: .4byte gUnknown_3005AEC +_0818E4FC: .4byte 0x00003B58 +_0818E500: + cmp r0, #0 + beq _0818E508 + movs r0, #0 + b _0818E50A +_0818E508: + movs r0, #2 +_0818E50A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818E4DC + + thumb_func_start sub_0818E510 +sub_0818E510: @ 0x0818E510 + push {lr} + ldr r1, _0818E528 + ldr r0, _0818E52C + ldr r0, [r0] + ldr r2, _0818E530 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #1] + cmp r0, #1 + beq _0818E534 + movs r0, #0 + b _0818E536 + .align 2, 0 +_0818E528: .4byte gUnknown_203CA38 +_0818E52C: .4byte gUnknown_3005AEC +_0818E530: .4byte 0x00003B58 +_0818E534: + movs r0, #1 +_0818E536: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818E510 + + thumb_func_start sub_0818E53C +sub_0818E53C: @ 0x0818E53C + push {r4, lr} + movs r3, #0 + ldr r1, _0818E564 + ldr r0, _0818E568 + ldr r0, [r0] + ldr r4, _0818E56C + adds r2, r0, r4 + str r2, [r1] + ldrb r0, [r2, #2] + cmp r0, #4 + bhi _0818E558 + ldrb r0, [r2, #3] + cmp r0, #4 + bls _0818E55A +_0818E558: + movs r3, #1 +_0818E55A: + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0818E564: .4byte gUnknown_203CA38 +_0818E568: .4byte gUnknown_3005AEC +_0818E56C: .4byte 0x00003B58 + thumb_func_end sub_0818E53C + + thumb_func_start sub_0818E570 +sub_0818E570: @ 0x0818E570 + push {lr} + ldr r0, _0818E580 + ldr r1, _0818E584 + bl sub_0818E3F0 + pop {r0} + bx r0 + .align 2, 0 +_0818E580: .4byte gUnknown_2021C54 +_0818E584: .4byte gUnknown_2021C40 + thumb_func_end sub_0818E570 + + thumb_func_start sub_0818E588 +sub_0818E588: @ 0x0818E588 + push {lr} + ldr r1, _0818E598 + movs r0, #3 + bl sub_08135850 + pop {r0} + bx r0 + .align 2, 0 +_0818E598: .4byte sub_08085A30 + thumb_func_end sub_0818E588 + + thumb_func_start sub_0818E59C +sub_0818E59C: @ 0x0818E59C + ldr r1, _0818E5B0 + ldr r0, _0818E5B4 + ldr r0, [r0] + ldr r2, _0818E5B8 + adds r0, r0, r2 + str r0, [r1] + movs r1, #1 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_0818E5B0: .4byte gUnknown_203CA38 +_0818E5B4: .4byte gUnknown_3005AEC +_0818E5B8: .4byte 0x00003B58 + thumb_func_end sub_0818E59C + + thumb_func_start sub_0818E5BC +sub_0818E5BC: @ 0x0818E5BC + ldr r1, _0818E5D8 + ldr r0, _0818E5DC + ldr r0, [r0] + ldr r2, _0818E5E0 + adds r0, r0, r2 + str r0, [r1] + ldr r2, _0818E5E4 + ldr r1, _0818E5E8 + ldrb r0, [r0, #0xd] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_0818E5D8: .4byte gUnknown_203CA38 +_0818E5DC: .4byte gUnknown_3005AEC +_0818E5E0: .4byte 0x00003B58 +_0818E5E4: .4byte gUnknown_2037282 +_0818E5E8: .4byte gUnknown_85D3DF0 + thumb_func_end sub_0818E5BC + + thumb_func_start sub_0818E5EC +sub_0818E5EC: @ 0x0818E5EC + ldr r1, _0818E5FC + ldr r0, _0818E600 + ldr r0, [r0] + ldr r2, _0818E604 + adds r0, r0, r2 + str r0, [r1] + ldrb r0, [r0, #0xd] + bx lr + .align 2, 0 +_0818E5FC: .4byte gUnknown_203CA38 +_0818E600: .4byte gUnknown_3005AEC +_0818E604: .4byte 0x00003B58 + thumb_func_end sub_0818E5EC + + thumb_func_start sub_0818E608 +sub_0818E608: @ 0x0818E608 + push {lr} + ldr r1, _0818E620 + ldr r0, _0818E624 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_0818E608 + + thumb_func_start sub_0818E61C +sub_0818E61C: @ 0x0818E61C + bx r0 + .align 2, 0 +_0818E620: .4byte gUnknown_85D5B0C +_0818E624: .4byte gUnknown_2037280 + thumb_func_end sub_0818E61C + + thumb_func_start sub_0818E628 +sub_0818E628: @ 0x0818E628 + push {r4, r5, r6, r7, lr} + ldr r4, _0818E6BC + ldr r0, [r4] + ldr r1, _0818E6C0 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _0818E6C4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r4] + ldr r2, _0818E6C8 + adds r0, r0, r2 + movs r6, #0 + strb r6, [r0] + ldr r1, [r4] + adds r2, #0xa + adds r0, r1, r2 + strh r6, [r0] + ldr r0, _0818E6C0 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + ldr r2, _0818E6C0 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r4, [r4] + ldr r0, _0818E6CC + adds r3, r4, r0 + ldr r2, _0818E6D0 + lsls r1, r5, #2 + lsls r0, r7, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldr r0, [r3] + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _0818E69A + lsls r0, r5, #1 + lsls r1, r7, #2 + adds r0, r0, r1 + ldr r2, _0818E6D4 + adds r1, r4, r2 + adds r1, r1, r0 + strh r6, [r1] +_0818E69A: + ldr r0, _0818E6D8 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + ldr r0, _0818E6DC + strh r6, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818E6BC: .4byte gUnknown_3005AF0 +_0818E6C0: .4byte 0x00000CA9 +_0818E6C4: .4byte 0x000040CE +_0818E6C8: .4byte 0x00000CA8 +_0818E6CC: .4byte 0x00000CDC +_0818E6D0: .4byte gUnknown_85D5B68 +_0818E6D4: .4byte 0x00000D0C +_0818E6D8: .4byte gUnknown_3005AEC +_0818E6DC: .4byte gUnknown_203886A + thumb_func_end sub_0818E628 + + thumb_func_start sub_0818E6E0 +sub_0818E6E0: @ 0x0818E6E0 + push {r4, r5, r6, lr} + ldr r0, _0818E710 + ldr r0, [r0] + ldr r1, _0818E714 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _0818E718 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _0818E71C + ldrh r0, [r0] + cmp r0, #9 + bls _0818E704 + b _0818E96C +_0818E704: + lsls r0, r0, #2 + ldr r1, _0818E720 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818E710: .4byte gUnknown_3005AF0 +_0818E714: .4byte 0x00000CA9 +_0818E718: .4byte 0x000040CE +_0818E71C: .4byte gUnknown_2037282 +_0818E720: .4byte _0818E724 +_0818E724: @ jump table + .4byte _0818E74C @ case 0 + .4byte _0818E770 @ case 1 + .4byte _0818E7A4 @ case 2 + .4byte _0818E7C0 @ case 3 + .4byte _0818E7DC @ case 4 + .4byte _0818E7F4 @ case 5 + .4byte _0818E810 @ case 6 + .4byte _0818E89C @ case 7 + .4byte _0818E92C @ case 8 + .4byte _0818E950 @ case 9 +_0818E74C: + ldr r3, _0818E764 + ldr r0, _0818E768 + ldr r0, [r0] + lsls r1, r5, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + ldr r2, _0818E76C + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3] + b _0818E96C + .align 2, 0 +_0818E764: .4byte gUnknown_2037290 +_0818E768: .4byte gUnknown_3005AF0 +_0818E76C: .4byte 0x00000D0C +_0818E770: + ldr r4, _0818E794 + ldr r0, _0818E798 + ldr r2, [r0] + ldr r3, _0818E79C + adds r2, r2, r3 + ldr r3, _0818E7A0 + lsls r0, r5, #2 + lsls r1, r6, #3 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + strh r0, [r4] + b _0818E96C + .align 2, 0 +_0818E794: .4byte gUnknown_2037290 +_0818E798: .4byte gUnknown_3005AF0 +_0818E79C: .4byte 0x00000CDC +_0818E7A0: .4byte gUnknown_85D5B68 +_0818E7A4: + ldr r1, _0818E7B4 + ldr r0, _0818E7B8 + ldr r0, [r0] + ldr r2, _0818E7BC + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1f + b _0818E91A + .align 2, 0 +_0818E7B4: .4byte gUnknown_2037290 +_0818E7B8: .4byte gUnknown_3005AF0 +_0818E7BC: .4byte 0x00000D08 +_0818E7C0: + ldr r1, _0818E7D0 + ldr r0, _0818E7D4 + ldr r0, [r0] + ldr r3, _0818E7D8 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1e + b _0818E91A + .align 2, 0 +_0818E7D0: .4byte gUnknown_2037290 +_0818E7D4: .4byte gUnknown_3005AF0 +_0818E7D8: .4byte 0x00000D08 +_0818E7DC: + ldr r1, _0818E7E8 + ldr r0, _0818E7EC + ldr r0, [r0] + ldr r2, _0818E7F0 + adds r0, r0, r2 + b _0818E916 + .align 2, 0 +_0818E7E8: .4byte gUnknown_2037290 +_0818E7EC: .4byte gUnknown_3005AF0 +_0818E7F0: .4byte 0x00000D08 +_0818E7F4: + ldr r1, _0818E804 + ldr r0, _0818E808 + ldr r0, [r0] + ldr r3, _0818E80C + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1c + b _0818E91A + .align 2, 0 +_0818E804: .4byte gUnknown_2037290 +_0818E808: .4byte gUnknown_3005AF0 +_0818E80C: .4byte 0x00000D08 +_0818E810: + ldr r0, _0818E834 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0818E860 + cmp r5, #0 + beq _0818E844 + ldr r1, _0818E838 + ldr r0, _0818E83C + ldr r0, [r0] + ldr r2, _0818E840 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1a + b _0818E91A + .align 2, 0 +_0818E834: .4byte 0x000040CE +_0818E838: .4byte gUnknown_2037290 +_0818E83C: .4byte gUnknown_3005AF0 +_0818E840: .4byte 0x00000D08 +_0818E844: + ldr r1, _0818E854 + ldr r0, _0818E858 + ldr r0, [r0] + ldr r3, _0818E85C + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1b + b _0818E91A + .align 2, 0 +_0818E854: .4byte gUnknown_2037290 +_0818E858: .4byte gUnknown_3005AF0 +_0818E85C: .4byte 0x00000D08 +_0818E860: + cmp r5, #0 + beq _0818E880 + ldr r1, _0818E874 + ldr r0, _0818E878 + ldr r0, [r0] + ldr r2, _0818E87C + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + b _0818E91A + .align 2, 0 +_0818E874: .4byte gUnknown_2037290 +_0818E878: .4byte gUnknown_3005AF0 +_0818E87C: .4byte 0x00000D08 +_0818E880: + ldr r1, _0818E890 + ldr r0, _0818E894 + ldr r0, [r0] + ldr r3, _0818E898 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1f + b _0818E91A + .align 2, 0 +_0818E890: .4byte gUnknown_2037290 +_0818E894: .4byte gUnknown_3005AF0 +_0818E898: .4byte 0x00000D08 +_0818E89C: + ldr r0, _0818E8C0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bne _0818E8EC + cmp r5, #0 + beq _0818E8D0 + ldr r1, _0818E8C4 + ldr r0, _0818E8C8 + ldr r0, [r0] + ldr r2, _0818E8CC + adds r0, r0, r2 + ldrb r0, [r0] + lsrs r0, r0, #7 + strh r0, [r1] + b _0818E96C + .align 2, 0 +_0818E8C0: .4byte 0x000040CE +_0818E8C4: .4byte gUnknown_2037290 +_0818E8C8: .4byte gUnknown_3005AF0 +_0818E8CC: .4byte 0x00000D08 +_0818E8D0: + ldr r1, _0818E8E0 + ldr r0, _0818E8E4 + ldr r0, [r0] + ldr r3, _0818E8E8 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x19 + b _0818E91A + .align 2, 0 +_0818E8E0: .4byte gUnknown_2037290 +_0818E8E4: .4byte gUnknown_3005AF0 +_0818E8E8: .4byte 0x00000D08 +_0818E8EC: + cmp r5, #0 + beq _0818E90C + ldr r1, _0818E900 + ldr r0, _0818E904 + ldr r0, [r0] + ldr r2, _0818E908 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1c + b _0818E91A + .align 2, 0 +_0818E900: .4byte gUnknown_2037290 +_0818E904: .4byte gUnknown_3005AF0 +_0818E908: .4byte 0x00000D08 +_0818E90C: + ldr r1, _0818E920 + ldr r0, _0818E924 + ldr r0, [r0] + ldr r3, _0818E928 + adds r0, r0, r3 +_0818E916: + ldrb r0, [r0] + lsls r0, r0, #0x1d +_0818E91A: + lsrs r0, r0, #0x1f + strh r0, [r1] + b _0818E96C + .align 2, 0 +_0818E920: .4byte gUnknown_2037290 +_0818E924: .4byte gUnknown_3005AF0 +_0818E928: .4byte 0x00000D08 +_0818E92C: + bl sub_081B81F8 + ldr r2, _0818E948 + ldr r0, _0818E94C + ldr r0, [r0] + movs r1, #0xcb + lsls r1, r1, #4 + adds r0, r0, r1 + ldrh r1, [r0] + strb r1, [r2] + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r2, #1] + b _0818E96C + .align 2, 0 +_0818E948: .4byte gUnknown_203CBC4 +_0818E94C: .4byte gUnknown_3005AF0 +_0818E950: + ldr r2, _0818E974 + ldr r0, _0818E978 + ldr r1, [r0] + ldr r3, _0818E97C + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r3, #1 + adds r1, r1, r3 + ldr r3, _0818E980 + adds r0, r0, r3 + ldrb r1, [r1] + adds r0, r0, r1 + strh r0, [r2] +_0818E96C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0818E974: .4byte gUnknown_2037290 +_0818E978: .4byte gUnknown_3005AF0 +_0818E97C: .4byte 0x00000D0A +_0818E980: .4byte 0x0000FFFD + thumb_func_end sub_0818E6E0 + + thumb_func_start sub_0818E984 +sub_0818E984: @ 0x0818E984 + push {r4, r5, lr} + ldr r0, _0818E9B4 + ldr r0, [r0] + ldr r1, _0818E9B8 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + ldr r0, _0818E9BC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _0818E9C0 + ldrh r0, [r0] + cmp r0, #8 + bls _0818E9A8 + b _0818EC7A +_0818E9A8: + lsls r0, r0, #2 + ldr r1, _0818E9C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0818E9B4: .4byte gUnknown_3005AF0 +_0818E9B8: .4byte 0x00000CA9 +_0818E9BC: .4byte 0x000040CE +_0818E9C0: .4byte gUnknown_2037282 +_0818E9C4: .4byte _0818E9C8 +_0818E9C8: @ jump table + .4byte _0818E9EC @ case 0 + .4byte _0818EA10 @ case 1 + .4byte _0818EA6C @ case 2 + .4byte _0818EA90 @ case 3 + .4byte _0818EAB8 @ case 4 + .4byte _0818EAD4 @ case 5 + .4byte _0818EAFC @ case 6 + .4byte _0818EBAC @ case 7 + .4byte _0818EC64 @ case 8 +_0818E9EC: + ldr r0, _0818EA04 + ldr r2, [r0] + lsls r0, r4, #1 + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r1, _0818EA08 + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _0818EA0C + ldrh r0, [r0] + strh r0, [r2] + b _0818EC7A + .align 2, 0 +_0818EA04: .4byte gUnknown_3005AF0 +_0818EA08: .4byte 0x00000D0C +_0818EA0C: .4byte gUnknown_2037284 +_0818EA10: + ldr r0, _0818EA34 + ldrh r0, [r0] + cmp r0, #0 + beq _0818EA44 + ldr r0, _0818EA38 + ldr r2, [r0] + ldr r0, _0818EA3C + adds r2, r2, r0 + ldr r3, _0818EA40 + lsls r1, r4, #2 + lsls r0, r5, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + orrs r0, r1 + str r0, [r2] + b _0818EC7A + .align 2, 0 +_0818EA34: .4byte gUnknown_2037284 +_0818EA38: .4byte gUnknown_3005AF0 +_0818EA3C: .4byte 0x00000CDC +_0818EA40: .4byte gUnknown_85D5B68 +_0818EA44: + ldr r0, _0818EA60 + ldr r2, [r0] + ldr r1, _0818EA64 + adds r2, r2, r1 + ldr r3, _0818EA68 + lsls r1, r4, #2 + lsls r0, r5, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + ands r0, r1 + str r0, [r2] + b _0818EC7A + .align 2, 0 +_0818EA60: .4byte gUnknown_3005AF0 +_0818EA64: .4byte 0x00000CDC +_0818EA68: .4byte gUnknown_85D5B78 +_0818EA6C: + ldr r0, _0818EA84 + ldr r2, [r0] + ldr r0, _0818EA88 + ldrb r0, [r0] + ldr r1, _0818EA8C + adds r2, r2, r1 + movs r1, #1 + ands r1, r0 + ldrb r3, [r2] + movs r0, #2 + rsbs r0, r0, #0 + b _0818EBD0 + .align 2, 0 +_0818EA84: .4byte gUnknown_3005AF0 +_0818EA88: .4byte gUnknown_2037284 +_0818EA8C: .4byte 0x00000D08 +_0818EA90: + ldr r0, _0818EAAC + ldr r3, [r0] + ldr r0, _0818EAB0 + ldrb r0, [r0] + ldr r2, _0818EAB4 + adds r3, r3, r2 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3] + movs r0, #3 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EAAC: .4byte gUnknown_3005AF0 +_0818EAB0: .4byte gUnknown_2037284 +_0818EAB4: .4byte 0x00000D08 +_0818EAB8: + ldr r0, _0818EAC8 + ldr r3, [r0] + ldr r0, _0818EACC + ldrb r0, [r0] + ldr r1, _0818EAD0 + adds r3, r3, r1 + b _0818EC44 + .align 2, 0 +_0818EAC8: .4byte gUnknown_3005AF0 +_0818EACC: .4byte gUnknown_2037284 +_0818EAD0: .4byte 0x00000D08 +_0818EAD4: + ldr r0, _0818EAF0 + ldr r3, [r0] + ldr r0, _0818EAF4 + ldrb r0, [r0] + ldr r2, _0818EAF8 + adds r3, r3, r2 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EAF0: .4byte gUnknown_3005AF0 +_0818EAF4: .4byte gUnknown_2037284 +_0818EAF8: .4byte 0x00000D08 +_0818EAFC: + ldr r0, _0818EB28 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #1 + bne _0818EB5C + cmp r4, #0 + beq _0818EB38 + ldr r0, _0818EB2C + ldr r3, [r0] + ldr r0, _0818EB30 + ldrb r0, [r0] + ldr r2, _0818EB34 + adds r3, r3, r2 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x21 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EB28: .4byte 0x000040CE +_0818EB2C: .4byte gUnknown_3005AF0 +_0818EB30: .4byte gUnknown_2037284 +_0818EB34: .4byte 0x00000D08 +_0818EB38: + ldr r0, _0818EB50 + ldr r3, [r0] + ldr r0, _0818EB54 + ldrb r0, [r0] + ldr r2, _0818EB58 + adds r3, r3, r2 + ands r1, r0 + lsls r1, r1, #4 + ldrb r2, [r3] + movs r0, #0x11 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EB50: .4byte gUnknown_3005AF0 +_0818EB54: .4byte gUnknown_2037284 +_0818EB58: .4byte 0x00000D08 +_0818EB5C: + cmp r4, #0 + beq _0818EB88 + ldr r0, _0818EB7C + ldr r3, [r0] + ldr r0, _0818EB80 + ldrb r0, [r0] + ldr r1, _0818EB84 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3] + movs r0, #3 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EB7C: .4byte gUnknown_3005AF0 +_0818EB80: .4byte gUnknown_2037284 +_0818EB84: .4byte 0x00000D08 +_0818EB88: + ldr r0, _0818EBA0 + ldr r2, [r0] + ldr r0, _0818EBA4 + ldrb r0, [r0] + ldr r1, _0818EBA8 + adds r2, r2, r1 + movs r1, #1 + ands r1, r0 + ldrb r3, [r2] + movs r0, #2 + rsbs r0, r0, #0 + b _0818EBD0 + .align 2, 0 +_0818EBA0: .4byte gUnknown_3005AF0 +_0818EBA4: .4byte gUnknown_2037284 +_0818EBA8: .4byte 0x00000D08 +_0818EBAC: + ldr r0, _0818EBD8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #1 + bne _0818EC0C + cmp r4, #0 + beq _0818EBE8 + ldr r0, _0818EBDC + ldr r2, [r0] + ldr r0, _0818EBE0 + ldrb r1, [r0] + ldr r0, _0818EBE4 + adds r2, r2, r0 + lsls r1, r1, #7 + ldrb r3, [r2] + movs r0, #0x7f +_0818EBD0: + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _0818EC7A + .align 2, 0 +_0818EBD8: .4byte 0x000040CE +_0818EBDC: .4byte gUnknown_3005AF0 +_0818EBE0: .4byte gUnknown_2037284 +_0818EBE4: .4byte 0x00000D08 +_0818EBE8: + ldr r0, _0818EC00 + ldr r3, [r0] + ldr r0, _0818EC04 + ldrb r0, [r0] + ldr r2, _0818EC08 + adds r3, r3, r2 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3] + movs r0, #0x41 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EC00: .4byte gUnknown_3005AF0 +_0818EC04: .4byte gUnknown_2037284 +_0818EC08: .4byte 0x00000D08 +_0818EC0C: + cmp r4, #0 + beq _0818EC38 + ldr r0, _0818EC2C + ldr r3, [r0] + ldr r0, _0818EC30 + ldrb r0, [r0] + ldr r1, _0818EC34 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 + b _0818EC50 + .align 2, 0 +_0818EC2C: .4byte gUnknown_3005AF0 +_0818EC30: .4byte gUnknown_2037284 +_0818EC34: .4byte 0x00000D08 +_0818EC38: + ldr r0, _0818EC58 + ldr r3, [r0] + ldr r0, _0818EC5C + ldrb r0, [r0] + ldr r2, _0818EC60 + adds r3, r3, r2 +_0818EC44: + movs r1, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 +_0818EC50: + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _0818EC7A + .align 2, 0 +_0818EC58: .4byte gUnknown_3005AF0 +_0818EC5C: .4byte gUnknown_2037284 +_0818EC60: .4byte 0x00000D08 +_0818EC64: + ldr r0, _0818EC80 + ldr r2, [r0] + ldr r0, _0818EC84 + ldrb r1, [r0] + ldrb r0, [r0, #1] + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0xcb + lsls r0, r0, #4 + adds r2, r2, r0 + strh r1, [r2] +_0818EC7A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818EC80: .4byte gUnknown_3005AF0 +_0818EC84: .4byte gUnknown_203CBC4 + thumb_func_end sub_0818E984 + + thumb_func_start sub_0818EC88 +sub_0818EC88: @ 0x0818EC88 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x3c + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #0x20 + bl sub_08000BDC + str r0, [sp, #0x18] + movs r0, #0x18 + bl sub_08000BDC + str r0, [sp, #0x1c] + ldr r4, _0818EE48 + ldr r1, [r4] + ldr r2, _0818EE4C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r0, #1 + ldr r3, _0818EE50 + adds r1, r1, r3 + strb r0, [r1] + ldr r0, _0818EE54 + bl sub_0809CF6C + ldr r1, [r4] + adds r0, #1 + ldr r5, _0818EE58 + adds r1, r1, r5 + strb r0, [r1] + ldr r2, [r4] + ldr r7, _0818EE5C + adds r3, r2, r7 + ldrh r0, [r3] + ldr r5, _0818EE60 + adds r1, r5, #0 + orrs r0, r1 + strh r0, [r3] + ldr r3, _0818EE64 + adds r2, r2, r3 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #0x1f + ands r0, r2 + strb r0, [r1] + movs r7, #0 + mov sl, r7 + mov r8, r4 + ldr r0, _0818EE68 + mov sb, r0 + movs r4, #0 +_0818ED16: + mov r1, r8 + ldr r0, [r1] + ldr r2, _0818EE6C + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r0, [r0] + movs r3, #0x64 + muls r0, r3, r0 + add r0, sb + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + mov r5, r8 + ldr r1, [r5] + ldr r7, _0818EE70 + adds r1, r1, r7 + adds r1, r1, r4 + strh r0, [r1] + movs r5, #0 + mov r0, sl + lsls r7, r0, #4 + adds r6, r7, #0 +_0818ED44: + mov r1, r8 + ldr r0, [r1] + ldr r2, _0818EE6C + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r0, [r0] + movs r3, #0x64 + muls r0, r3, r0 + add r0, sb + adds r1, r5, #0 + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + mov r2, r8 + ldr r1, [r2] + ldr r3, _0818EE74 + adds r1, r1, r3 + adds r1, r1, r6 + strh r0, [r1] + adds r6, #2 + adds r5, #1 + cmp r5, #3 + ble _0818ED44 + movs r5, #0 + ldr r6, _0818EE48 +_0818ED78: + ldr r0, [r6] + ldr r1, _0818EE6C + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + movs r2, #0x64 + muls r0, r2, r0 + add r0, sb + adds r1, r5, #0 + adds r1, #0x1a + movs r2, #0 + bl sub_0806A058 + ldr r1, [r6] + adds r2, r5, r7 + ldr r3, _0818EE78 + adds r1, r1, r3 + adds r1, r1, r2 + strb r0, [r1] + adds r5, #1 + cmp r5, #5 + ble _0818ED78 + mov r5, r8 + ldr r0, [r5] + ldr r1, _0818EE6C + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + movs r2, #0x64 + muls r0, r2, r0 + add r0, sb + bl sub_0806CB34 + ldr r1, [r5] + adds r1, r1, r7 + ldr r3, _0818EE7C + adds r1, r1, r3 + strb r0, [r1] + adds r4, #2 + movs r5, #1 + add sl, r5 + mov r7, sl + cmp r7, #2 + ble _0818ED16 + mov sl, r5 + movs r0, #4 + str r0, [sp, #0x34] + movs r1, #6 + str r1, [sp, #0x38] +_0818EDDA: + mov r2, sl + cmp r2, #5 + ble _0818EE88 +_0818EDE0: + bl sub_081A375C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r5, #1 + cmp r5, sl + bge _0818EE26 + ldr r3, _0818EE48 + ldr r0, [r3] + ldr r7, _0818EE80 + adds r0, r0, r7 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r2, r3, #0 + cmp r0, r4 + beq _0818EE26 + ldr r3, _0818EE5C +_0818EE0E: + adds r5, #1 + cmp r5, sl + bge _0818EE26 + ldr r0, [r2] + lsls r1, r5, #2 + adds r0, r0, r1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r4 + bne _0818EE0E +_0818EE26: + cmp r5, sl + bne _0818EDE0 + ldr r0, _0818EE48 + ldr r3, [r0] + ldr r1, [sp, #0x34] + adds r3, r3, r1 + ldr r2, _0818EE5C + adds r3, r3, r2 + ldr r5, _0818EE60 + adds r0, r5, #0 + adds r2, r4, #0 + ands r2, r0 + ldrh r0, [r3] + ldr r7, _0818EE84 + adds r1, r7, #0 + b _0818EEEE + .align 2, 0 +_0818EE48: .4byte gUnknown_3005AF0 +_0818EE4C: .4byte 0x00000CA9 +_0818EE50: .4byte 0x00000D0A +_0818EE54: .4byte 0x000040CE +_0818EE58: .4byte 0x00000D0B +_0818EE5C: .4byte 0x00000D24 +_0818EE60: .4byte 0x000003FF +_0818EE64: .4byte 0x00000D25 +_0818EE68: .4byte gUnknown_202412C +_0818EE6C: .4byte 0x00000CAA +_0818EE70: .4byte 0x00000D64 +_0818EE74: .4byte 0x00000EFC +_0818EE78: .4byte 0x00000F04 +_0818EE7C: .4byte 0x00000F0A +_0818EE80: .4byte 0x00000D28 +_0818EE84: .4byte 0xFFFFFC00 +_0818EE88: + bl sub_081A375C + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r5, #1 + cmp r5, sl + bge _0818EED0 + ldr r1, _0818F22C + ldr r0, [r1] + ldr r2, _0818F230 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + adds r2, r1, #0 + cmp r0, r4 + beq _0818EED0 + ldr r3, _0818F234 +_0818EEB8: + adds r5, #1 + cmp r5, sl + bge _0818EED0 + ldr r0, [r2] + lsls r1, r5, #2 + adds r0, r0, r1 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r4 + bne _0818EEB8 +_0818EED0: + cmp r5, sl + bne _0818EE88 + ldr r5, _0818F22C + ldr r3, [r5] + ldr r7, [sp, #0x34] + adds r3, r3, r7 + ldr r0, _0818F234 + adds r3, r3, r0 + ldr r1, _0818F238 + adds r0, r1, #0 + adds r2, r4, #0 + ands r2, r0 + ldrh r0, [r3] + ldr r5, _0818F23C + adds r1, r5, #0 +_0818EEEE: + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + movs r5, #0 + lsls r4, r4, #0x10 + str r4, [sp, #0x2c] + ldr r7, [sp, #0x38] + str r7, [sp, #0x20] +_0818EEFE: + lsls r0, r5, #1 + mov sb, r0 + adds r1, r5, #1 + str r1, [sp, #0x24] + lsls r2, r5, #2 + str r2, [sp, #0x28] +_0818EF0A: + ldr r3, [sp, #0x2c] + lsrs r0, r3, #0x10 + bl sub_08163444 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r7, #0 + cmp r7, r5 + bge _0818EF5C + ldr r0, _0818F22C + ldr r0, [r0] + ldr r1, [sp, #8] + mov r8, r1 + ldr r2, [sp, #0xc] + mov ip, r2 + ldr r3, _0818F240 + adds r0, r0, r3 + ldr r1, [sp, #0x20] + adds r4, r1, r0 +_0818EF30: + ldrh r3, [r4] + cmp r3, r6 + beq _0818EF5C + ldr r2, _0818F244 + ldr r1, [r2] + lsls r0, r6, #4 + adds r2, r0, r1 + ldrh r0, [r2] + cmp r8, r0 + beq _0818EF5C + cmp ip, r0 + beq _0818EF5C + lsls r0, r3, #4 + adds r0, r0, r1 + ldrb r0, [r0, #0xa] + ldrb r2, [r2, #0xa] + cmp r0, r2 + beq _0818EF5C + adds r4, #2 + adds r7, #1 + cmp r7, r5 + blt _0818EF30 +_0818EF5C: + cmp r7, r5 + bne _0818EF0A + ldr r3, _0818F22C + ldr r0, [r3] + ldr r1, [sp, #0x38] + add r1, sb + ldr r5, _0818F240 + adds r0, r0, r5 + adds r0, r0, r1 + strh r6, [r0] + ldr r2, [sp, #0x28] + add r2, sp + adds r2, #8 + ldr r0, _0818F244 + ldr r1, [r0] + lsls r0, r6, #4 + adds r0, r0, r1 + ldrh r0, [r0] + str r0, [r2] + ldr r5, [sp, #0x24] + cmp r5, #2 + ble _0818EEFE + ldr r2, [r3] + ldr r7, [sp, #0x34] + adds r2, r2, r7 + ldr r0, _0818F248 + adds r2, r2, r0 + ldrb r0, [r2] + movs r3, #5 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2] + ldr r5, _0818F22C + ldr r2, [r5] + adds r2, r2, r7 + ldr r7, _0818F248 + adds r2, r2, r7 + ldrb r0, [r2] + subs r3, #0x14 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2] + ldr r1, [r5] + ldr r5, [sp, #0x34] + adds r1, r1, r5 + adds r1, r1, r7 + ldrb r2, [r1] + movs r0, #0x1f + ands r0, r2 + strb r0, [r1] + adds r5, #4 + str r5, [sp, #0x34] + ldr r7, [sp, #0x38] + adds r7, #6 + str r7, [sp, #0x38] + movs r0, #1 + add sl, r0 + mov r1, sl + cmp r1, #0xf + bgt _0818EFD8 + b _0818EDDA +_0818EFD8: + movs r7, #0 + ldr r2, [sp, #0x18] + strh r7, [r2] + movs r3, #0 + mov sl, r3 + ldr r6, _0818F24C + ldr r5, _0818F250 +_0818EFE6: + ldr r0, _0818F22C + ldr r0, [r0] + mov r2, sl + lsls r1, r2, #1 + ldr r3, _0818F254 + adds r0, r0, r3 + adds r0, r0, r1 + ldrh r0, [r0] + subs r4, r0, #1 + movs r0, #0x64 + muls r4, r0, r4 + ldr r0, _0818F258 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x3b + movs r2, #0 + bl sub_0806A058 + ldr r2, [sp, #0x18] + ldrh r1, [r2] + adds r1, r1, r0 + strh r1, [r2] + adds r0, r4, #0 + movs r1, #0x3c + movs r2, #0 + bl sub_0806A058 + ldr r3, [sp, #0x18] + ldrh r1, [r3] + adds r1, r1, r0 + strh r1, [r3] + adds r0, r4, #0 + movs r1, #0x3e + movs r2, #0 + bl sub_0806A058 + ldr r2, [sp, #0x18] + ldrh r1, [r2] + adds r1, r1, r0 + strh r1, [r2] + adds r0, r4, #0 + movs r1, #0x3f + movs r2, #0 + bl sub_0806A058 + ldr r3, [sp, #0x18] + ldrh r1, [r3] + adds r1, r1, r0 + strh r1, [r3] + adds r0, r4, #0 + movs r1, #0x3d + movs r2, #0 + bl sub_0806A058 + ldr r2, [sp, #0x18] + ldrh r1, [r2] + adds r1, r1, r0 + strh r1, [r2] + adds r0, r4, #0 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + ldr r3, [sp, #0x18] + ldrh r1, [r3] + adds r1, r1, r0 + strh r1, [r3] + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #6] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + orrs r7, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r0, [r1, #7] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + orrs r7, r0 + movs r0, #1 + add sl, r0 + mov r1, sl + cmp r1, #2 + ble _0818EFE6 + movs r4, #0 + movs r1, #1 + movs r5, #0x1f +_0818F0B4: + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0818F0BE + adds r4, #1 +_0818F0BE: + asrs r7, r7, #1 + subs r5, #1 + cmp r5, #0 + bge _0818F0B4 + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + adds r2, r0, #0 + adds r0, r4, #0 + muls r0, r2, r0 + movs r1, #0x14 + bl __divsi3 + ldr r3, [sp, #0x18] + ldrh r1, [r3] + adds r1, r1, r0 + strh r1, [r3] + movs r5, #1 + mov sl, r5 + adds r6, r3, #0 + adds r6, #2 + movs r7, #2 + str r7, [sp, #0x30] +_0818F0F0: + movs r7, #0 + strh r7, [r6] + ldr r1, _0818F22C + ldr r0, [r1] + mov r2, sl + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r3, _0818F234 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + bl sub_0818FDC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r0, [sp, #0x30] + mov sb, r0 +_0818F118: + ldr r1, _0818F22C + ldr r0, [r1] + mov r4, sb + add r4, sl + adds r4, r4, r5 + lsls r4, r4, #1 + ldr r2, _0818F240 + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r3, _0818F244 + ldr r0, [r3] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldrb r3, [r1, #0xb] + ldrb r1, [r1, #0xc] + str r1, [sp] + ldr r1, [sp, #0x1c] + str r1, [sp, #4] + ldr r1, [sp, #0x14] + mov r2, r8 + bl sub_0818F37C + ldr r2, [sp, #0x1c] + ldr r1, [r2, #4] + ldrh r0, [r6] + adds r0, r0, r1 + ldr r1, [r2, #8] + adds r0, r0, r1 + ldr r1, [r2, #0x10] + adds r0, r0, r1 + ldr r1, [r2, #0x14] + adds r0, r0, r1 + ldr r1, [r2, #0xc] + adds r0, r0, r1 + ldr r1, [r2] + adds r0, r0, r1 + strh r0, [r6] + ldr r3, _0818F22C + ldr r0, [r3] + ldr r1, _0818F240 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + ldr r2, _0818F244 + ldr r1, [r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r3, _0818F250 + adds r1, r1, r3 + ldrb r0, [r1, #6] + lsls r0, r0, #2 + ldr r2, _0818F24C + adds r0, r0, r2 + ldr r0, [r0] + orrs r7, r0 + ldrb r0, [r1, #7] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + orrs r7, r0 + adds r5, #1 + cmp r5, #2 + ble _0818F118 + movs r4, #0 + movs r1, #1 + movs r5, #0x1f +_0818F1A8: + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0818F1B2 + adds r4, #1 +_0818F1B2: + asrs r7, r7, #1 + subs r5, #1 + cmp r5, #0 + bge _0818F1A8 + ldr r3, [sp, #0x14] + adds r0, r4, #0 + muls r0, r3, r0 + movs r1, #0x14 + bl __divsi3 + ldrh r1, [r6] + adds r1, r1, r0 + strh r1, [r6] + adds r6, #2 + ldr r5, [sp, #0x30] + adds r5, #2 + str r5, [sp, #0x30] + movs r7, #1 + add sl, r7 + mov r0, sl + cmp r0, #0xf + ble _0818F0F0 + movs r1, #0 + mov sl, r1 + ldr r2, _0818F238 + mov r8, r2 +_0818F1E6: + mov r5, sl + adds r5, #1 + adds r7, r5, #0 + cmp r5, #0xf + bgt _0818F282 + mov r3, sl + lsls r0, r3, #1 + ldr r1, [sp, #0x18] + adds r6, r0, r1 + lsls r0, r5, #1 + adds r4, r0, r1 +_0818F1FC: + ldrh r1, [r6] + ldrh r0, [r4] + cmp r1, r0 + blo _0818F21E + cmp r1, r0 + bne _0818F27A + ldr r0, _0818F22C + ldr r1, [r0] + lsls r0, r5, #2 + adds r0, r1, r0 + ldr r2, _0818F234 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r2, r0, #0x16 + lsrs r0, r2, #0x16 + cmp r0, r8 + bne _0818F25E +_0818F21E: + mov r0, sl + adds r1, r5, #0 + ldr r2, [sp, #0x18] + bl sub_0818F560 + b _0818F25C + .align 2, 0 +_0818F22C: .4byte gUnknown_3005AF0 +_0818F230: .4byte 0x00000D28 +_0818F234: .4byte 0x00000D24 +_0818F238: .4byte 0x000003FF +_0818F23C: .4byte 0xFFFFFC00 +_0818F240: .4byte 0x00000D64 +_0818F244: .4byte gUnknown_203B958 +_0818F248: .4byte 0x00000D25 +_0818F24C: .4byte gUnknown_82FACB4 +_0818F250: .4byte gUnknown_82F0D54 +_0818F254: .4byte 0x00000CAA +_0818F258: .4byte gUnknown_2024190 +_0818F25C: + b _0818F27A +_0818F25E: + mov r3, sl + lsls r0, r3, #2 + adds r0, r1, r0 + ldr r1, _0818F2F0 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + cmp r0, r2 + bls _0818F27A + mov r0, sl + adds r1, r5, #0 + ldr r2, [sp, #0x18] + bl sub_0818F560 +_0818F27A: + adds r4, #2 + adds r5, #1 + cmp r5, #0xf + ble _0818F1FC +_0818F282: + mov sl, r7 + mov r2, sl + cmp r2, #0xe + ble _0818F1E6 + bl sub_081A33A0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0818F34A + movs r3, #0 + mov sl, r3 + ldr r0, _0818F2F4 + ldr r1, [r0] + ldr r4, _0818F2F0 + adds r1, r1, r4 + ldrh r1, [r1] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r3, _0818F2F8 + adds r2, r0, #0 + ldr r6, _0818F2FC + cmp r1, r3 + beq _0818F2D0 + adds r5, r2, #0 +_0818F2B2: + movs r7, #1 + add sl, r7 + mov r0, sl + cmp r0, #0xf + bgt _0818F2D0 + ldr r0, [r5] + mov r7, sl + lsls r1, r7, #2 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r3 + bne _0818F2B2 +_0818F2D0: + mov r1, sl + lsls r0, r1, #1 + adds r0, r0, r6 + ldrb r0, [r0] + cmp r0, #0 + beq _0818F308 + movs r5, #0 + ldr r2, [r2] + ldr r3, _0818F2F0 + adds r2, r2, r3 + ldrh r1, [r2] + ldr r0, _0818F300 + ands r0, r1 + ldr r7, _0818F304 + adds r1, r7, #0 + b _0818F31A + .align 2, 0 +_0818F2F0: .4byte 0x00000D24 +_0818F2F4: .4byte gUnknown_3005AF0 +_0818F2F8: .4byte 0x000003FF +_0818F2FC: .4byte gUnknown_85D5E6D +_0818F300: .4byte 0xFFFFFC00 +_0818F304: .4byte 0x000003FE +_0818F308: + movs r5, #1 + ldr r2, [r2] + ldr r0, _0818F368 + adds r2, r2, r0 + ldrh r1, [r2] + ldr r0, _0818F36C + ands r0, r1 + ldr r3, _0818F370 + adds r1, r3, #0 +_0818F31A: + orrs r0, r1 + strh r0, [r2] + movs r7, #0 + mov sl, r7 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r4, r0, #1 +_0818F328: + mov r1, sl + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A4BE0 + ldr r1, _0818F374 + ldr r1, [r1] + ldr r2, _0818F378 + adds r1, r1, r2 + adds r1, r1, r4 + strh r0, [r1] + adds r4, #2 + movs r3, #1 + add sl, r3 + mov r5, sl + cmp r5, #2 + ble _0818F328 +_0818F34A: + ldr r0, [sp, #0x18] + bl sub_08000BF0 + ldr r0, [sp, #0x1c] + bl sub_08000BF0 + add sp, #0x3c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818F368: .4byte 0x00000D28 +_0818F36C: .4byte 0xFFFFFC00 +_0818F370: .4byte 0x000003FE +_0818F374: .4byte gUnknown_3005AF0 +_0818F378: .4byte 0x00000D64 + thumb_func_end sub_0818EC88 + + thumb_func_start sub_0818F37C +sub_0818F37C: @ 0x0818F37C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r7, r1, #0 + mov sb, r2 + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x40] + mov r8, r2 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + movs r1, #0 + adds r4, r5, #0 + movs r3, #1 + movs r2, #5 +_0818F3A8: + adds r0, r4, #0 + ands r0, r3 + cmp r0, #0 + beq _0818F3B2 + adds r1, #1 +_0818F3B2: + lsrs r4, r4, #1 + subs r2, #1 + cmp r2, #0 + bge _0818F3A8 + movs r0, #0xff + lsls r0, r0, #1 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r0, r6, #3 + mov sl, r0 + movs r1, #0 + mov ip, r1 + mov r1, sp + movs r2, #5 +_0818F3D2: + mov r0, ip + str r0, [r1] + adds r0, r5, #0 + ands r0, r4 + cmp r0, #0 + beq _0818F3E0 + str r3, [r1] +_0818F3E0: + lsls r0, r4, #0x19 + lsrs r4, r0, #0x18 + adds r1, #4 + subs r2, #1 + cmp r2, #0 + bge _0818F3D2 + ldr r0, _0818F3F8 + cmp r6, r0 + bne _0818F3FC + movs r0, #1 + b _0818F426 + .align 2, 0 +_0818F3F8: .4byte 0x0000012F +_0818F3FC: + mov r2, sl + subs r0, r2, r6 + lsls r0, r0, #2 + ldr r1, _0818F55C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + mov r2, sb + adds r1, r0, r2 + ldr r0, [sp] + cmp r0, #0 + bge _0818F416 + adds r0, #3 +_0818F416: + asrs r0, r0, #2 + adds r0, r1, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r0, r0, r7 + adds r0, #0xa +_0818F426: + mov r1, r8 + str r0, [r1] + mov r2, sl + subs r0, r2, r6 + lsls r0, r0, #2 + ldr r1, _0818F55C + adds r4, r0, r1 + ldrb r0, [r4, #1] + lsls r0, r0, #1 + mov r2, sb + adds r1, r0, r2 + ldr r0, [sp, #4] + cmp r0, #0 + bge _0818F444 + adds r0, #3 +_0818F444: + asrs r0, r0, #2 + adds r0, r1, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + adds r1, #5 + mov r0, r8 + str r1, [r0, #4] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + movs r2, #1 + bl sub_0806D36C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + str r0, [r1, #4] + ldrb r0, [r4, #2] + lsls r0, r0, #1 + mov r2, sb + adds r1, r0, r2 + ldr r0, [sp, #8] + cmp r0, #0 + bge _0818F47C + adds r0, #3 +_0818F47C: + asrs r0, r0, #2 + adds r0, r1, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + adds r1, #5 + mov r0, r8 + str r1, [r0, #8] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + movs r2, #2 + bl sub_0806D36C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + str r0, [r1, #8] + ldrb r0, [r4, #3] + lsls r0, r0, #1 + mov r2, sb + adds r1, r0, r2 + ldr r0, [sp, #0xc] + cmp r0, #0 + bge _0818F4B4 + adds r0, #3 +_0818F4B4: + asrs r0, r0, #2 + adds r0, r1, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + adds r1, #5 + mov r0, r8 + str r1, [r0, #0xc] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + movs r2, #3 + bl sub_0806D36C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + str r0, [r1, #0xc] + ldrb r0, [r4, #4] + lsls r0, r0, #1 + mov r2, sb + adds r1, r0, r2 + ldr r0, [sp, #0x10] + cmp r0, #0 + bge _0818F4EC + adds r0, #3 +_0818F4EC: + asrs r0, r0, #2 + adds r0, r1, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + adds r1, #5 + mov r0, r8 + str r1, [r0, #0x10] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + movs r2, #4 + bl sub_0806D36C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + str r0, [r1, #0x10] + ldrb r0, [r4, #5] + lsls r0, r0, #1 + mov r1, sb + adds r2, r0, r1 + ldr r0, [sp, #0x14] + cmp r0, #0 + bge _0818F524 + adds r0, #3 +_0818F524: + asrs r0, r0, #2 + adds r0, r2, r0 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r1, r0, #0 + adds r1, #5 + mov r2, r8 + str r1, [r2, #0x14] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + movs r2, #5 + bl sub_0806D36C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + str r0, [r1, #0x14] + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818F55C: .4byte gUnknown_82F0D54 + thumb_func_end sub_0818F37C + + thumb_func_start sub_0818F560 +sub_0818F560: @ 0x0818F560 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r3, r0, #1 + mov ip, r3 + adds r4, r3, r2 + ldrh r5, [r4] + lsls r7, r1, #1 + mov sb, r7 + add r2, sb + ldrh r3, [r2] + strh r3, [r4] + strh r5, [r2] + ldr r2, _0818F5FC + ldr r5, [r2] + lsls r6, r0, #2 + adds r6, r5, r6 + ldr r3, _0818F600 + adds r6, r6, r3 + ldrh r7, [r6] + mov sl, r7 + mov r2, sl + lsls r2, r2, #0x16 + mov r8, r2 + lsls r2, r1, #2 + adds r5, r5, r2 + adds r5, r5, r3 + ldrh r4, [r5] + lsls r4, r4, #0x16 + lsrs r4, r4, #0x16 + ldr r3, _0818F604 + adds r2, r3, #0 + mov r7, sl + ands r2, r7 + orrs r2, r4 + strh r2, [r6] + mov r2, r8 + lsrs r2, r2, #0x16 + mov r8, r2 + ldrh r2, [r5] + ands r3, r2 + mov r7, r8 + orrs r3, r7 + strh r3, [r5] + ldr r2, _0818F5FC + mov r8, r2 + add ip, r0 + add sb, r1 + mov r3, sb + lsls r4, r3, #1 + mov r7, ip + lsls r3, r7, #1 + ldr r7, _0818F608 + movs r6, #2 +_0818F5D0: + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r7 + adds r2, r0, r3 + ldrh r5, [r2] + adds r0, r0, r4 + ldrh r1, [r0] + strh r1, [r2] + strh r5, [r0] + adds r4, #2 + adds r3, #2 + subs r6, #1 + cmp r6, #0 + bge _0818F5D0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818F5FC: .4byte gUnknown_3005AF0 +_0818F600: .4byte 0x00000D24 +_0818F604: .4byte 0xFFFFFC00 +_0818F608: .4byte 0x00000D64 + thumb_func_end sub_0818F560 + + thumb_func_start sub_0818F60C +sub_0818F60C: @ 0x0818F60C + push {lr} + ldr r0, _0818F62C + ldr r2, _0818F630 + ldr r1, _0818F634 + ldr r1, [r1] + ldr r3, _0818F638 + adds r1, r1, r3 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_0818F62C: .4byte gUnknown_2021C40 +_0818F630: .4byte gUnknown_85ABD3C +_0818F634: .4byte gUnknown_3005AF0 +_0818F638: .4byte 0x00000CB2 + thumb_func_end sub_0818F60C + + thumb_func_start sub_0818F63C +sub_0818F63C: @ 0x0818F63C + push {lr} + ldr r0, _0818F664 + ldr r2, _0818F668 + ldr r1, _0818F66C + ldr r1, [r1] + ldr r3, _0818F670 + adds r1, r1, r3 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _0818F674 + ldr r1, _0818F678 + ldrh r1, [r1] + bl sub_08195498 + pop {r0} + bx r0 + .align 2, 0 +_0818F664: .4byte gUnknown_2021C40 +_0818F668: .4byte gUnknown_85ABD3C +_0818F66C: .4byte gUnknown_3005AF0 +_0818F670: .4byte 0x00000CB2 +_0818F674: .4byte gUnknown_2021C54 +_0818F678: .4byte gUnknown_203886A + thumb_func_end sub_0818F63C + + thumb_func_start sub_0818F67C +sub_0818F67C: @ 0x0818F67C + push {r4, r5, lr} + ldr r1, _0818F6C0 + movs r0, #0 + str r0, [r1] + ldr r4, _0818F6C4 + adds r0, r4, #0 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + ldr r5, _0818F6C8 + str r0, [r5] + adds r4, #0x64 + adds r0, r4, #0 + movs r1, #0x3a + movs r2, #0 + bl sub_0806A058 + ldr r1, [r5] + adds r1, r1, r0 + str r1, [r5] + bl sub_0806B004 + ldr r0, _0818F6CC + ldrh r0, [r0] + bl sub_08194F58 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0818F838 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818F6C0: .4byte gUnknown_203CA3C +_0818F6C4: .4byte gUnknown_2024190 +_0818F6C8: .4byte gUnknown_203CA40 +_0818F6CC: .4byte gUnknown_203886A + thumb_func_end sub_0818F67C + + thumb_func_start sub_0818F6D0 +sub_0818F6D0: @ 0x0818F6D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + adds r5, r2, #0 + str r3, [sp, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp, #0x28] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + add r0, sp, #0xc + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + ldr r0, [sp, #0x28] + bl sub_0818FDC4 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r6, [sp, #0x2c] + bl sub_08165A4C + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x64 + ldr r4, [sp, #0x10] + adds r3, r4, #0 + muls r3, r0, r3 + str r3, [sp, #0x18] + ldr r6, _0818F824 + adds r0, r3, r6 + ldr r7, _0818F828 + ldr r4, [r7] + lsls r5, r5, #1 + ldr r3, [sp, #0x28] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #1 + adds r1, r5, r1 + ldr r6, _0818F82C + adds r4, r4, r6 + adds r4, r4, r1 + ldrh r3, [r4] + ldr r7, _0818F830 + ldr r7, [r7] + mov r8, r7 + lsls r3, r3, #4 + add r3, r8 + ldrh r1, [r3] + ldrb r3, [r3, #0xc] + ldr r6, [sp, #0x2c] + str r6, [sp] + ldrh r4, [r4] + lsls r4, r4, #4 + add r4, r8 + ldrb r4, [r4, #0xb] + str r4, [sp, #4] + ldr r7, [sp, #0x14] + str r7, [sp, #8] + bl sub_08068174 + add r0, sp, #0xc + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + movs r6, #0 + ldr r2, [sp, #0x18] + str r2, [sp, #0x1c] + mov sl, r5 + ldr r3, _0818F82C + mov sb, r3 + ldr r3, _0818F830 + mov r4, sl + str r4, [sp, #0x20] +_0818F774: + ldr r7, _0818F828 + ldr r1, [r7] + ldr r2, [sp, #0x28] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + mov r8, r0 + mov r5, sl + add r5, r8 + add r1, sb + adds r1, r1, r5 + ldrh r0, [r1] + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + lsls r4, r6, #1 + adds r0, #2 + adds r0, r0, r4 + ldrh r1, [r0] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov ip, r2 + ldr r7, [sp, #0x1c] + ldr r2, _0818F824 + adds r0, r7, r2 + mov r2, ip + str r3, [sp, #0x24] + bl sub_08068D34 + ldr r7, _0818F828 + ldr r0, [r7] + add r0, sb + adds r0, r0, r5 + ldrh r0, [r0] + ldr r3, [sp, #0x24] + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + adds r0, #2 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0xda + bne _0818F7D0 + movs r1, #0 + add r0, sp, #0xc + strb r1, [r0] +_0818F7D0: + adds r6, #1 + cmp r6, #3 + ble _0818F774 + movs r0, #0x64 + ldr r1, [sp, #0x10] + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _0818F824 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0xc + bl sub_0806A774 + ldr r0, _0818F828 + ldr r0, [r0] + ldr r1, [sp, #0x20] + add r1, r8 + ldr r2, _0818F82C + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _0818F830 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _0818F834 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0818F824: .4byte gUnknown_20243E8 +_0818F828: .4byte gUnknown_3005AF0 +_0818F82C: .4byte 0x00000D64 +_0818F830: .4byte gUnknown_203B958 +_0818F834: .4byte gUnknown_85ADBF4 + thumb_func_end sub_0818F6D0 + + thumb_func_start sub_0818F838 +sub_0818F838: @ 0x0818F838 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r6, #0 + bl sub_08067710 + mov r0, r8 + bl sub_0818F8D4 + adds r5, r0, #0 + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r7, r4, #0x10 + lsls r0, r0, #0x10 + orrs r7, r0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bls _0818F8A2 + movs r4, #0 +_0818F87C: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _0818F898 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r3, r7, #0 + bl sub_0818F6D0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0818F898: + asrs r5, r5, #1 + adds r4, #1 + cmp r4, #2 + ble _0818F87C + b _0818F8C8 +_0818F8A2: + movs r4, #2 +_0818F8A4: + movs r0, #4 + ands r0, r5 + cmp r0, #0 + beq _0818F8C0 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r3, r7, #0 + bl sub_0818F6D0 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_0818F8C0: + lsls r5, r5, #1 + subs r4, #1 + cmp r4, #0 + bge _0818F8A4 +_0818F8C8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0818F838 + + thumb_func_start sub_0818F8D4 +sub_0818F8D4: @ 0x0818F8D4 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r5, r4, #0 + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0818F8FE + adds r0, r4, #0 + movs r1, #0 + bl sub_0818F918 + cmp r0, #0 + bne _0818F912 + adds r0, r4, #0 + movs r1, #1 + bl sub_0818FA14 + b _0818F912 +_0818F8FE: + adds r0, r5, #0 + movs r1, #0 + bl sub_0818FA14 + cmp r0, #0 + bne _0818F912 + adds r0, r5, #0 + movs r1, #1 + bl sub_0818F918 +_0818F912: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0818F8D4 + + thumb_func_start sub_0818F918 +sub_0818F918: @ 0x0818F918 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0xc] + movs r0, #0 + mov sb, r0 + mov r1, r8 + lsls r1, r1, #2 + str r1, [sp, #0x18] +_0818F93A: + mov r2, sb + lsls r0, r2, #2 + mov r2, sp + adds r1, r2, r0 + movs r0, #0 + str r0, [r1] + movs r7, #0 + mov r0, sb + adds r0, #1 + str r0, [sp, #0x14] + adds r5, r1, #0 + mov r1, sb + lsls r1, r1, #1 + str r1, [sp, #0x10] +_0818F956: + movs r6, #0 + adds r2, r7, #1 + mov sl, r2 +_0818F95C: + ldr r0, _0818F98C + ldr r1, [r0] + ldr r2, [sp, #0x18] + adds r0, r1, r2 + ldr r2, _0818F990 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + ldr r2, _0818F994 + cmp r0, r2 + bne _0818F998 + mov r1, sb + lsls r0, r1, #0x18 + lsls r1, r7, #0x18 + lsrs r0, r0, #0x18 + lsrs r1, r1, #0x18 + bl sub_081A4C50 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + b _0818F9BC + .align 2, 0 +_0818F98C: .4byte gUnknown_3005AF0 +_0818F990: .4byte 0x00000D24 +_0818F994: .4byte 0x000003FE +_0818F998: + mov r2, r8 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #1 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldr r2, _0818FA08 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _0818FA0C + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + lsls r1, r7, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r4, [r0] +_0818F9BC: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _0818FA10 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + bl sub_0818FC1C + ldr r1, [r5] + adds r1, r1, r0 + str r1, [r5] + adds r6, #1 + cmp r6, #2 + ble _0818F95C + mov r7, sl + cmp r7, #3 + ble _0818F956 + ldr r0, [sp, #0x14] + mov sb, r0 + cmp r0, #2 + ble _0818F93A + mov r0, sp + ldr r1, [sp, #0xc] + bl sub_0818FB10 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818FA08: .4byte 0x00000D64 +_0818FA0C: .4byte gUnknown_203B958 +_0818FA10: .4byte gUnknown_2024190 + thumb_func_end sub_0818F918 + + thumb_func_start sub_0818FA14 +sub_0818FA14: @ 0x0818FA14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0xc] + movs r0, #0 + mov sb, r0 + mov r1, r8 + lsls r1, r1, #2 + str r1, [sp, #0x18] +_0818FA36: + mov r2, sb + lsls r0, r2, #2 + mov r2, sp + adds r1, r2, r0 + movs r0, #0 + str r0, [r1] + movs r7, #0 + mov r0, sb + adds r0, #1 + str r0, [sp, #0x14] + adds r5, r1, #0 + mov r1, sb + lsls r1, r1, #1 + str r1, [sp, #0x10] +_0818FA52: + movs r6, #0 + adds r2, r7, #1 + mov sl, r2 +_0818FA58: + ldr r0, _0818FA88 + ldr r1, [r0] + ldr r2, [sp, #0x18] + adds r0, r1, r2 + ldr r2, _0818FA8C + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + ldr r2, _0818FA90 + cmp r0, r2 + bne _0818FA94 + mov r1, sb + lsls r0, r1, #0x18 + lsls r1, r7, #0x18 + lsrs r0, r0, #0x18 + lsrs r1, r1, #0x18 + bl sub_081A4C50 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + b _0818FAB8 + .align 2, 0 +_0818FA88: .4byte gUnknown_3005AF0 +_0818FA8C: .4byte 0x00000D24 +_0818FA90: .4byte 0x000003FE +_0818FA94: + mov r2, r8 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #1 + ldr r2, [sp, #0x10] + adds r0, r2, r0 + ldr r2, _0818FB04 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _0818FB08 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + lsls r1, r7, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r4, [r0] +_0818FAB8: + movs r0, #0x64 + muls r0, r6, r0 + ldr r1, _0818FB0C + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #1 + bl sub_0818FC1C + ldr r1, [r5] + adds r1, r1, r0 + str r1, [r5] + adds r6, #1 + cmp r6, #2 + ble _0818FA58 + mov r7, sl + cmp r7, #3 + ble _0818FA52 + ldr r0, [sp, #0x14] + mov sb, r0 + cmp r0, #2 + ble _0818FA36 + mov r0, sp + ldr r1, [sp, #0xc] + bl sub_0818FB10 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818FB04: .4byte 0x00000D64 +_0818FB08: .4byte gUnknown_203B958 +_0818FB0C: .4byte gUnknown_2024190 + thumb_func_end sub_0818FA14 + + thumb_func_start sub_0818FB10 +sub_0818FB10: @ 0x0818FB10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + str r0, [sp, #0xc] + movs r3, #2 + add r0, sp, #8 +_0818FB2A: + str r3, [r0] + subs r0, #4 + subs r3, #1 + cmp r3, #0 + bge _0818FB2A + mov r3, sl + ldr r2, [r3] + ldr r0, [r3, #4] + cmp r2, r0 + bne _0818FB7C + ldr r0, [r3, #8] + cmp r2, r0 + bne _0818FB7C + cmp r1, #0 + beq _0818FC06 + movs r3, #0 + ldr r4, _0818FB78 +_0818FB4C: + str r3, [sp, #0x14] + bl sub_0806F050 + movs r1, #3 + ands r1, r0 + ldr r3, [sp, #0x14] + cmp r1, #3 + beq _0818FB72 + lsls r0, r1, #2 + adds r0, r0, r4 + ldr r1, [r0] + ldr r0, [sp, #0xc] + ands r0, r1 + cmp r0, #0 + bne _0818FB72 + ldr r0, [sp, #0xc] + orrs r0, r1 + str r0, [sp, #0xc] + adds r3, #1 +_0818FB72: + cmp r3, #2 + bne _0818FB4C + b _0818FC06 + .align 2, 0 +_0818FB78: .4byte gUnknown_82FACB4 +_0818FB7C: + movs r3, #0 + mov sb, sp + mov r8, sl +_0818FB82: + adds r2, r3, #1 + cmp r2, #2 + bgt _0818FBE0 + mov r6, r8 + mov r7, sb + lsls r0, r2, #2 + mov r1, sp + adds r5, r0, r1 + mov r1, sl + adds r4, r0, r1 +_0818FB96: + ldr r0, [r6] + ldr r1, [r4] + cmp r0, r1 + bge _0818FBAA + str r1, [r6] + str r0, [r4] + ldr r1, [r7] + ldr r0, [r5] + str r0, [r7] + str r1, [r5] +_0818FBAA: + ldr r1, [r6] + ldr r0, [r4] + cmp r1, r0 + bne _0818FBD6 + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl sub_0806F050 + movs r1, #1 + ands r1, r0 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + cmp r1, #0 + beq _0818FBD6 + ldr r1, [r6] + ldr r0, [r4] + str r0, [r6] + str r1, [r4] + ldr r1, [r7] + ldr r0, [r5] + str r0, [r7] + str r1, [r5] +_0818FBD6: + adds r5, #4 + adds r4, #4 + adds r2, #1 + cmp r2, #2 + ble _0818FB96 +_0818FBE0: + movs r4, #4 + add sb, r4 + add r8, r4 + adds r3, #1 + cmp r3, #1 + ble _0818FB82 + ldr r2, _0818FC18 + mov r1, sp + movs r3, #1 +_0818FBF2: + ldm r1!, {r0} + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ldr r4, [sp, #0xc] + orrs r4, r0 + str r4, [sp, #0xc] + subs r3, #1 + cmp r3, #0 + bge _0818FBF2 +_0818FC06: + ldr r0, [sp, #0xc] + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0818FC18: .4byte gUnknown_82FACB4 + thumb_func_end sub_0818FB10 + + thumb_func_start sub_0818FC1C +sub_0818FC1C: @ 0x0818FC1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r3, r0, #0 + adds r4, r1, #0 + str r2, [sp] + movs r6, #0 + movs r2, #0x14 + cmp r3, #0 + beq _0818FC4C + ldr r0, _0818FC50 + cmp r3, r0 + beq _0818FC4C + ldr r0, _0818FC54 + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #1] + cmp r0, #0 + bne _0818FC58 +_0818FC4C: + movs r0, #0 + b _0818FDB2 + .align 2, 0 +_0818FC50: .4byte 0x0000FFFF +_0818FC54: .4byte gUnknown_82ED220 +_0818FC58: + ldr r1, _0818FC84 + lsls r0, r4, #3 + subs r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #6] + mov sl, r1 + ldrb r1, [r0, #7] + mov sb, r1 + ldrb r0, [r0, #0x16] + mov r8, r0 + ldrb r3, [r3, #2] + str r3, [sp, #4] + cmp r0, #0x1a + bne _0818FC88 + cmp r3, #4 + bne _0818FC88 + ldr r0, [sp] + cmp r0, #1 + bne _0818FD06 + movs r2, #8 + b _0818FD00 + .align 2, 0 +_0818FC84: .4byte gUnknown_82F0D54 +_0818FC88: + ldr r0, _0818FD14 + adds r1, r6, r0 + ldrb r0, [r1] + ldr r7, _0818FD14 + cmp r0, #0xff + beq _0818FD00 + adds r4, r1, #0 +_0818FC96: + ldrb r0, [r4] + cmp r0, #0xfe + beq _0818FCF2 + ldrb r0, [r4] + ldr r1, [sp, #4] + cmp r0, r1 + bne _0818FCF2 + ldrb r0, [r4, #1] + adds r5, r6, #1 + cmp r0, sl + bne _0818FCC8 + adds r1, r6, #2 + mov r0, r8 + cmp r0, #0x19 + bne _0818FCBA + ldrb r0, [r4, #2] + cmp r0, #0x28 + bne _0818FCC8 +_0818FCBA: + adds r0, r1, r7 + ldrb r0, [r0] + muls r0, r2, r0 + movs r1, #0xa + bl __divsi3 + adds r2, r0, #0 +_0818FCC8: + adds r0, r5, r7 + ldrb r0, [r0] + cmp r0, sb + bne _0818FCF2 + cmp sl, sb + beq _0818FCF2 + adds r1, r6, #2 + mov r0, r8 + cmp r0, #0x19 + bne _0818FCE4 + adds r0, r1, r7 + ldrb r0, [r0] + cmp r0, #0x28 + bne _0818FCF2 +_0818FCE4: + adds r0, r1, r7 + ldrb r0, [r0] + muls r0, r2, r0 + movs r1, #0xa + bl __divsi3 + adds r2, r0, #0 +_0818FCF2: + adds r4, #3 + adds r6, #3 + ldr r1, _0818FD14 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _0818FC96 +_0818FD00: + ldr r0, [sp] + cmp r0, #1 + beq _0818FD3C +_0818FD06: + ldr r1, [sp] + cmp r1, #1 + bgt _0818FD18 + cmp r1, #0 + beq _0818FD20 + b _0818FDB0 + .align 2, 0 +_0818FD14: .4byte gUnknown_82EBB38 +_0818FD18: + ldr r0, [sp] + cmp r0, #2 + beq _0818FD70 + b _0818FDB0 +_0818FD20: + cmp r2, #0xa + beq _0818FDA2 + cmp r2, #0xa + ble _0818FDA2 + cmp r2, #0x28 + beq _0818FDA6 + cmp r2, #0x28 + bgt _0818FD36 + cmp r2, #0x14 + beq _0818FD60 + b _0818FDA2 +_0818FD36: + cmp r2, #0x50 + bne _0818FDA2 + b _0818FD5C +_0818FD3C: + cmp r2, #0xa + beq _0818FD60 + cmp r2, #0xa + bgt _0818FD4E + cmp r2, #0 + beq _0818FD5C + cmp r2, #5 + beq _0818FDA6 + b _0818FDA2 +_0818FD4E: + cmp r2, #0x28 + beq _0818FD64 + cmp r2, #0x28 + ble _0818FDA2 + cmp r2, #0x50 + beq _0818FD6A + b _0818FDA2 +_0818FD5C: + movs r2, #8 + b _0818FDB0 +_0818FD60: + movs r2, #2 + b _0818FDB0 +_0818FD64: + movs r2, #2 + rsbs r2, r2, #0 + b _0818FDB0 +_0818FD6A: + movs r2, #4 + rsbs r2, r2, #0 + b _0818FDB0 +_0818FD70: + cmp r2, #0xa + beq _0818FDA2 + cmp r2, #0xa + bgt _0818FD82 + cmp r2, #0 + beq _0818FD96 + cmp r2, #5 + beq _0818FD9C + b _0818FDA2 +_0818FD82: + cmp r2, #0x28 + beq _0818FDAA + cmp r2, #0x28 + bgt _0818FD90 + cmp r2, #0x14 + beq _0818FDA6 + b _0818FDA2 +_0818FD90: + cmp r2, #0x50 + beq _0818FDAE + b _0818FDA2 +_0818FD96: + movs r2, #0x10 + rsbs r2, r2, #0 + b _0818FDB0 +_0818FD9C: + movs r2, #8 + rsbs r2, r2, #0 + b _0818FDB0 +_0818FDA2: + movs r2, #0 + b _0818FDB0 +_0818FDA6: + movs r2, #4 + b _0818FDB0 +_0818FDAA: + movs r2, #0xc + b _0818FDB0 +_0818FDAE: + movs r2, #0x14 +_0818FDB0: + adds r0, r2, #0 +_0818FDB2: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0818FC1C + + thumb_func_start sub_0818FDC4 +sub_0818FDC4: @ 0x0818FDC4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + cmp r0, #0x63 + bls _0818FDF6 + movs r1, #6 + cmp r0, #0x77 + bls _0818FDF6 + movs r1, #9 + cmp r0, #0x8b + bls _0818FDF6 + movs r1, #0xc + cmp r0, #0x9f + bls _0818FDF6 + movs r1, #0xf + cmp r0, #0xb3 + bls _0818FDF6 + movs r1, #0x12 + cmp r0, #0xc7 + bls _0818FDF6 + movs r1, #0x1f + cmp r0, #0xdb + bhi _0818FDF6 + movs r1, #0x15 +_0818FDF6: + adds r0, r1, #0 + pop {r1} + bx r1 + thumb_func_end sub_0818FDC4 + + thumb_func_start sub_0818FDFC +sub_0818FDFC: @ 0x0818FDFC + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + adds r2, r1, #0 + movs r5, #0 + ldr r0, _0818FE4C + ldr r1, [r0] + ldr r4, _0818FE50 + adds r1, r1, r4 + ldrh r1, [r1] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + mov ip, r0 + ldr r6, _0818FE54 + cmp r1, r2 + beq _0818FE34 + mov r7, ip +_0818FE1C: + adds r5, #1 + cmp r5, #0xf + bgt _0818FE34 + ldr r0, [r7] + lsls r1, r5, #2 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r2 + bne _0818FE1C +_0818FE34: + cmp r3, #0 + beq _0818FEC8 + cmp r3, #3 + bne _0818FE58 + lsls r0, r5, #2 + adds r1, r0, #3 + adds r1, r1, r6 + ldrb r1, [r1] + adds r4, r1, #0 + adds r4, #8 + b _0818FE62 + .align 2, 0 +_0818FE4C: .4byte gUnknown_3005AF0 +_0818FE50: .4byte 0x00000D24 +_0818FE54: .4byte gUnknown_85D5B88 +_0818FE58: + lsls r0, r5, #2 + adds r1, r3, r0 + adds r1, r1, r6 + ldrb r1, [r1] + adds r4, r1, #4 +_0818FE62: + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r2, [r0] + cmp r2, r4 + bge _0818FEB2 + ldr r1, _0818FE88 + adds r0, r2, r1 + ldrb r3, [r0] + adds r6, r1, #0 + cmp r3, r5 + beq _0818FE90 + mov r1, ip + ldr r0, [r1] + lsls r1, r3, #2 + adds r0, r0, r1 + ldr r3, _0818FE8C + adds r0, r0, r3 + b _0818FEAA + .align 2, 0 +_0818FE88: .4byte gUnknown_85D5BC8 +_0818FE8C: .4byte 0x00000D25 +_0818FE90: + adds r2, #1 + cmp r2, r4 + bge _0818FEB2 + adds r0, r2, r6 + ldrb r1, [r0] + cmp r1, r5 + beq _0818FE90 + mov r3, ip + ldr r0, [r3] + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r1, _0818FEC0 + adds r0, r0, r1 +_0818FEAA: + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _0818FE90 +_0818FEB2: + cmp r2, r4 + beq _0818FEE2 + ldr r0, _0818FEC4 + adds r0, r2, r0 + ldrb r0, [r0] + b _0818FEEE + .align 2, 0 +_0818FEC0: .4byte 0x00000D25 +_0818FEC4: .4byte gUnknown_85D5BC8 +_0818FEC8: + mov r3, ip + ldr r1, [r3] + lsls r0, r5, #2 + adds r0, r0, r6 + ldrb r2, [r0] + lsls r0, r2, #2 + adds r1, r1, r0 + ldr r0, _0818FEE8 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0818FEEC +_0818FEE2: + movs r0, #0xff + b _0818FEEE + .align 2, 0 +_0818FEE8: .4byte 0x00000D25 +_0818FEEC: + adds r0, r2, #0 +_0818FEEE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0818FDFC + + thumb_func_start sub_0818FEF4 +sub_0818FEF4: @ 0x0818FEF4 + push {lr} + bl sub_0818FF08 + ldr r1, _0818FF04 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0818FF04: .4byte gUnknown_203886A + thumb_func_end sub_0818FEF4 + + thumb_func_start sub_0818FF08 +sub_0818FF08: @ 0x0818FF08 + push {r4, lr} + ldr r0, _0818FF30 + ldr r4, [r0] + ldr r1, _0818FF34 + adds r0, r4, r1 + ldrh r0, [r0] + ldr r1, _0818FF38 + bl sub_0818FDFC + lsls r0, r0, #2 + adds r4, r4, r0 + ldr r0, _0818FF3C + adds r4, r4, r0 + ldrh r0, [r4] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0818FF30: .4byte gUnknown_3005AF0 +_0818FF34: .4byte 0x00000CB2 +_0818FF38: .4byte 0x000003FF +_0818FF3C: .4byte 0x00000D24 + thumb_func_end sub_0818FF08 + + thumb_func_start sub_0818FF40 +sub_0818FF40: @ 0x0818FF40 + push {lr} + ldr r0, _0818FF50 + ldrh r0, [r0] + movs r1, #0 + bl sub_08162528 + pop {r0} + bx r0 + .align 2, 0 +_0818FF50: .4byte gUnknown_203886A + thumb_func_end sub_0818FF40 + + thumb_func_start sub_0818FF54 +sub_0818FF54: @ 0x0818FF54 + push {r4, lr} + ldr r4, _0818FF88 + ldr r0, [r4] + ldr r1, _0818FF8C + ldrh r1, [r1] + ldr r2, _0818FF90 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _0818FF94 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0818FF88: .4byte gUnknown_3005AF0 +_0818FF8C: .4byte gUnknown_2037282 +_0818FF90: .4byte 0x00000CA8 +_0818FF94: .4byte 0x00000CA9 + thumb_func_end sub_0818FF54 + + thumb_func_start sub_0818FF98 +sub_0818FF98: @ 0x0818FF98 + push {r4, r5, lr} + ldr r5, _0818FFF8 + ldr r0, [r5] + ldr r1, _0818FFFC + adds r0, r0, r1 + ldrb r4, [r0] + lsls r4, r4, #0x1e + lsrs r4, r4, #0x1e + ldr r0, _08190000 + bl sub_0809CF6C + lsls r0, r0, #0x18 + ldr r1, [r5] + lsls r4, r4, #1 + lsrs r0, r0, #0x16 + adds r4, r4, r0 + ldr r3, _08190004 + adds r1, r1, r3 + adds r1, r1, r4 + ldrh r0, [r1] + ldr r2, _08190008 + cmp r0, r2 + bhi _0818FFCA + adds r0, #1 + strh r0, [r1] +_0818FFCA: + ldr r0, [r5] + ldr r1, _0819000C + adds r0, r0, r1 + adds r1, r0, r4 + ldrh r0, [r1] + cmp r0, r2 + bhi _0818FFDC + adds r0, #1 + strh r0, [r1] +_0818FFDC: + ldr r0, [r5] + adds r1, r0, r3 + adds r1, r1, r4 + ldr r2, _08190010 + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r1, [r1] + ldrh r2, [r0] + cmp r1, r2 + bls _0818FFF2 + strh r1, [r0] +_0818FFF2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0818FFF8: .4byte gUnknown_3005AF0 +_0818FFFC: .4byte 0x00000CA9 +_08190000: .4byte 0x000040CE +_08190004: .4byte 0x00000D0C +_08190008: .4byte 0x000003E6 +_0819000C: .4byte 0x00000D1C +_08190010: .4byte 0x00000D14 + thumb_func_end sub_0818FF98 + + thumb_func_start sub_08190014 +sub_08190014: @ 0x08190014 + push {r4, r5, lr} + ldr r0, _08190050 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08190054 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r5, #0 + strh r5, [r4, #8] + bl sub_0818FF08 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08194F58 + strh r0, [r4, #0xa] + strh r5, [r4, #0xc] + strh r5, [r4, #0xe] + ldr r0, _08190058 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08190050: .4byte sub_0819005C +_08190054: .4byte gUnknown_3005B60 +_08190058: .4byte sub_08194754 + thumb_func_end sub_08190014 + + thumb_func_start sub_0819005C +sub_0819005C: @ 0x0819005C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r1, _08190098 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + adds r6, r0, r1 + movs r0, #0xa + ldrsh r5, [r6, r0] + movs r2, #0xc + ldrsh r1, [r6, r2] + mov sb, r1 + movs r0, #0xe + ldrsh r7, [r6, r0] + movs r1, #8 + ldrsh r4, [r6, r1] + cmp r4, #1 + beq _08190164 + cmp r4, #1 + bgt _0819009C + cmp r4, #0 + beq _081900AA + b _081903CE + .align 2, 0 +_08190098: .4byte gUnknown_3005B60 +_0819009C: + cmp r4, #2 + bne _081900A2 + b _081901CC +_081900A2: + cmp r4, #3 + bne _081900A8 + b _08190290 +_081900A8: + b _081903CE +_081900AA: + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #1 + bl sub_08001274 + str r4, [sp, #4] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0819010C + add r0, sp, #4 + bl CpuSet + movs r0, #0 + bl sub_080017D4 + ldr r1, _08190110 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _08190114 + bl sub_08003090 + bl sub_08004480 + ldr r0, _08190118 + strh r4, [r0] + ldr r0, _0819011C + strh r4, [r0] + ldr r0, _08190120 + strh r4, [r0] + ldr r0, _08190124 + strh r4, [r0] + ldr r0, _08190128 + strh r4, [r0] + ldr r0, _0819012C + strh r4, [r0] + mov r2, sb + cmp r2, #2 + bne _08190138 + ldr r0, _08190130 + strh r4, [r0] + ldr r0, _08190134 + strh r4, [r0] + b _08190142 + .align 2, 0 +_0819010C: .4byte 0x05006000 +_08190110: .4byte gUnknown_85D5928 +_08190114: .4byte gUnknown_85D5958 +_08190118: .4byte gUnknown_2022AC8 +_0819011C: .4byte gUnknown_2022ACA +_08190120: .4byte gUnknown_2022ACC +_08190124: .4byte gUnknown_2022ACE +_08190128: .4byte gUnknown_2022AD4 +_0819012C: .4byte gUnknown_2022AD6 +_08190130: .4byte gUnknown_2022AD0 +_08190134: .4byte gUnknown_2022AD2 +_08190138: + ldr r0, _08190158 + strh r4, [r0] + ldr r1, _0819015C + movs r0, #0xa0 + strh r0, [r1] +_08190142: + ldr r0, _08190160 + mov r2, sl + lsls r1, r2, #2 + add r1, sl + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _081903CE + .align 2, 0 +_08190158: .4byte gUnknown_2022AD0 +_0819015C: .4byte gUnknown_2022AD2 +_08190160: .4byte gUnknown_3005B60 +_08190164: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3f + bl sub_08001144 + bl sub_080A133C + bl sub_0800668C + bl sub_08008424 + ldr r1, _081901C8 + movs r0, #4 + strb r0, [r1] + b _0819025E + .align 2, 0 +_081901C8: .4byte gUnknown_30030BC +_081901CC: + ldr r1, _08190268 + movs r5, #0x80 + lsls r5, r5, #6 + movs r7, #0 + str r7, [sp] + movs r0, #2 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0819026C + movs r4, #1 + str r4, [sp] + movs r0, #2 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _08190270 + movs r2, #0x80 + lsls r2, r2, #4 + str r4, [sp] + movs r0, #3 + movs r3, #0 + bl sub_081997A0 + ldr r0, _08190274 + bl sub_08034388 + ldr r0, _08190278 + movs r4, #0x80 + lsls r4, r4, #2 + movs r1, #0 + adds r2, r4, #0 + bl sub_080A11BC + ldr r0, _0819027C + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r4, #0 + bl sub_080A11BC + ldr r0, _08190280 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A11BC + mov r0, sb + cmp r0, #2 + bne _0819023A + ldr r0, _08190284 + movs r1, #0x50 + movs r2, #0x20 + bl sub_080A11BC +_0819023A: + str r7, [sp, #8] + add r0, sp, #8 + ldr r1, _08190288 + ldr r2, _0819028C + bl CpuSet + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 +_0819025E: + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _081903CE + .align 2, 0 +_08190268: .4byte gUnknown_8D83DF4 +_0819026C: .4byte gUnknown_8D84A08 +_08190270: .4byte gUnknown_8D84F98 +_08190274: .4byte gUnknown_85D59FC +_08190278: .4byte gUnknown_8D8533C +_0819027C: .4byte gUnknown_8D85428 +_08190280: .4byte gUnknown_8D855E4 +_08190284: .4byte gUnknown_8D854AC +_08190288: .4byte gUnknown_20377B4 +_0819028C: .4byte 0x05000100 +_08190290: + ldr r0, _081902F4 + bl sub_080006F0 + ldr r4, _081902F8 + movs r0, #0x14 + bl sub_08000BDC + str r0, [r4] + movs r6, #0 + lsls r5, r5, #0x18 + movs r2, #0xff +_081902A6: + ldr r1, [r4] + adds r1, r1, r6 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + adds r6, #1 + cmp r6, #0xf + ble _081902A6 + bl sub_080D27A4 + ldr r0, _081902FC + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _08190300 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + strh r1, [r0, #0xc] + mov r1, sb + strh r1, [r0, #0xe] + strh r7, [r0, #0x10] + mov r2, sb + cmp r2, #2 + bne _08190304 + lsrs r1, r5, #0x18 + movs r0, #0 + bl sub_08192D7C + ldr r0, _081902F8 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #0x10] + b _0819030C + .align 2, 0 +_081902F4: .4byte sub_08194770 +_081902F8: .4byte gUnknown_203CA44 +_081902FC: .4byte sub_08190930 +_08190300: .4byte gUnknown_3005B60 +_08190304: + lsrs r1, r5, #0x18 + movs r0, #0 + bl sub_0819213C +_0819030C: + movs r1, #0xfa + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + mov r0, sb + cmp r0, #0 + beq _081903C8 + ldr r5, _081903E0 + adds r0, r5, #0 + movs r1, #0x78 + movs r2, #4 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + ldr r1, _081903E4 + mov r8, r1 + add r4, r8 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 + strh r6, [r4, #0x2e] + adds r0, r5, #0 + movs r1, #0x78 + movs r2, #0x9c + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + add r4, r8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + strh r6, [r4, #0x2e] + ldr r5, _081903E8 + adds r0, r5, #0 + movs r1, #6 + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + mov r2, r8 + adds r4, r0, r2 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EC0 + strh r6, [r4, #0x2e] + movs r0, #0 + strh r0, [r4, #0x30] + mov r1, sb + cmp r1, #1 + bne _081903A2 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_081903A2: + adds r0, r5, #0 + movs r1, #0xea + movs r2, #0x50 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + add r4, r8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007EC0 + strh r6, [r4, #0x2e] + movs r0, #1 + strh r0, [r4, #0x30] +_081903C8: + mov r0, sl + bl sub_080A8964 +_081903CE: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081903E0: .4byte gUnknown_85D5AE4 +_081903E4: .4byte gUnknown_20205AC +_081903E8: .4byte gUnknown_85D5ACC + thumb_func_end sub_0819005C + + thumb_func_start sub_081903EC +sub_081903EC: @ 0x081903EC + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x22] + adds r1, r0, #4 + strh r1, [r2, #0x22] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _08190430 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + blt _08190418 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_08190418: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + bne _0819044C + ldr r0, _0819042C + str r0, [r2, #0x1c] + b _0819044C + .align 2, 0 +_0819042C: .4byte sub_08007140 +_08190430: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xbf + ble _0819044C + ldr r0, _08190450 + ldr r0, [r0] + movs r3, #0x32 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldrh r0, [r2, #0x34] + bl sub_0818D61C +_0819044C: + pop {r0} + bx r0 + .align 2, 0 +_08190450: .4byte gUnknown_203CA44 + thumb_func_end sub_081903EC + + thumb_func_start sub_08190454 +sub_08190454: @ 0x08190454 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x22] + subs r1, r0, #4 + strh r1, [r2, #0x22] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _08190494 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc0 + bgt _0819047C + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_0819047C: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + bne _081904B4 + ldr r0, _08190490 + str r0, [r2, #0x1c] + b _081904B4 + .align 2, 0 +_08190490: .4byte sub_08007140 +_08190494: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _081904B4 + ldr r0, _081904B8 + ldr r0, [r0] + movs r3, #0x32 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldrh r0, [r2, #0x34] + bl sub_0818D61C +_081904B4: + pop {r0} + bx r0 + .align 2, 0 +_081904B8: .4byte gUnknown_203CA44 + thumb_func_end sub_08190454 + + thumb_func_start sub_081904BC +sub_081904BC: @ 0x081904BC + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x20] + adds r1, r0, #4 + strh r1, [r2, #0x20] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _08190500 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + blt _081904E8 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_081904E8: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _0819051C + ldr r0, _081904FC + str r0, [r2, #0x1c] + b _0819051C + .align 2, 0 +_081904FC: .4byte sub_08007140 +_08190500: + lsls r1, r1, #0x10 + ldr r0, _08190520 + cmp r1, r0 + ble _0819051C + ldr r0, _08190524 + ldr r0, [r0] + movs r3, #0x32 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldrh r0, [r2, #0x34] + bl sub_0818D61C +_0819051C: + pop {r0} + bx r0 + .align 2, 0 +_08190520: .4byte 0x010F0000 +_08190524: .4byte gUnknown_203CA44 + thumb_func_end sub_081904BC + + thumb_func_start sub_08190528 +sub_08190528: @ 0x08190528 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x20] + subs r1, r0, #4 + strh r1, [r2, #0x20] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _0819056C + lsls r1, r1, #0x10 + movs r0, #0x88 + lsls r0, r0, #0x11 + cmp r1, r0 + bgt _08190552 + adds r3, r2, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] +_08190552: + ldrh r0, [r2, #0x30] + adds r0, #1 + strh r0, [r2, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _0819058C + ldr r0, _08190568 + str r0, [r2, #0x1c] + b _0819058C + .align 2, 0 +_08190568: .4byte sub_08007140 +_0819056C: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0819058C + ldr r0, _08190590 + ldr r0, [r0] + movs r3, #0x32 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldrh r0, [r2, #0x34] + bl sub_0818D61C +_0819058C: + pop {r0} + bx r0 + .align 2, 0 +_08190590: .4byte gUnknown_203CA44 + thumb_func_end sub_08190528 + + thumb_func_start sub_08190594 +sub_08190594: @ 0x08190594 + push {lr} + adds r1, r0, #0 + movs r2, #0x34 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _081905A6 + adds r0, r1, #0 + bl sub_080D297C +_081905A6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08190594 + + thumb_func_start sub_081905AC +sub_081905AC: @ 0x081905AC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081905BE + adds r0, r4, #0 + bl sub_080D297C +_081905BE: + ldrh r0, [r4, #0x22] + adds r1, r0, #4 + strh r1, [r4, #0x22] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08190600 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + blt _081905E6 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081905E6: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + bne _0819061C + ldr r0, _081905FC + str r0, [r4, #0x1c] + b _0819061C + .align 2, 0 +_081905FC: .4byte sub_08190594 +_08190600: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xaf + ble _0819061C + ldr r0, _08190624 + ldr r0, [r0] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + adds r0, r4, #0 + bl sub_080D2798 +_0819061C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08190624: .4byte gUnknown_203CA44 + thumb_func_end sub_081905AC + + thumb_func_start sub_08190628 +sub_08190628: @ 0x08190628 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0819063A + adds r0, r4, #0 + bl sub_080D297C +_0819063A: + ldrh r0, [r4, #0x22] + subs r1, r0, #4 + strh r1, [r4, #0x22] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08190678 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb0 + bgt _0819065E + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0819065E: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x28 + bne _08190698 + ldr r0, _08190674 + str r0, [r4, #0x1c] + b _08190698 + .align 2, 0 +_08190674: .4byte sub_08190594 +_08190678: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _08190698 + ldr r0, _081906A0 + ldr r0, [r0] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + adds r0, r4, #0 + bl sub_080D2798 +_08190698: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081906A0: .4byte gUnknown_203CA44 + thumb_func_end sub_08190628 + + thumb_func_start sub_081906A4 +sub_081906A4: @ 0x081906A4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081906B6 + adds r0, r4, #0 + bl sub_080D297C +_081906B6: + ldrh r0, [r4, #0x20] + adds r1, r0, #4 + strh r1, [r4, #0x20] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081906F8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + blt _081906DE + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081906DE: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _08190714 + ldr r0, _081906F4 + str r0, [r4, #0x1c] + b _08190714 + .align 2, 0 +_081906F4: .4byte sub_08190594 +_081906F8: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _08190714 + ldr r0, _0819071C + ldr r0, [r0] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + adds r0, r4, #0 + bl sub_080D2798 +_08190714: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819071C: .4byte gUnknown_203CA44 + thumb_func_end sub_081906A4 + + thumb_func_start sub_08190720 +sub_08190720: @ 0x08190720 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x34 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08190732 + adds r0, r4, #0 + bl sub_080D297C +_08190732: + ldrh r0, [r4, #0x20] + subs r1, r0, #4 + strh r1, [r4, #0x20] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _08190770 + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + cmp r1, r0 + bgt _08190758 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08190758: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x40 + bne _08190790 + ldr r0, _0819076C + str r0, [r4, #0x1c] + b _08190790 + .align 2, 0 +_0819076C: .4byte sub_08190594 +_08190770: + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x10 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _08190790 + ldr r0, _08190798 + ldr r0, [r0] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + adds r0, r4, #0 + bl sub_080D2798 +_08190790: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08190798: .4byte gUnknown_203CA44 + thumb_func_end sub_08190720 + + thumb_func_start sub_0819079C +sub_0819079C: @ 0x0819079C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r6, [r3, r0] + ldr r2, _08190840 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r2 + movs r7, #0x10 + ldrsh r1, [r4, r7] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0xa + ldrsh r0, [r0, r1] + ldr r1, _08190844 + adds r0, r0, r1 + ldrb r0, [r0] + mov sl, r0 + ldr r1, _08190848 + ldr r5, [r1] + ldr r7, _0819084C + adds r0, r5, r7 + ldrh r0, [r0] + mov ip, r0 + movs r7, #0xe + ldrsh r0, [r4, r7] + mov sb, r2 + mov r8, r1 + cmp r0, #1 + bne _08190868 + movs r1, #0x30 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _08190858 + mov r2, sl + lsls r0, r2, #2 + adds r1, r5, r0 + ldr r7, _08190850 + adds r1, r1, r7 + ldrb r2, [r1] + lsls r1, r2, #0x1d + adds r4, r0, #0 + cmp r1, #0 + bge _08190812 + ldr r0, _08190854 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + subs r1, #1 + lsls r0, r2, #0x1b + lsrs r0, r0, #0x1e + cmp r1, r0 + blt _0819088E +_08190812: + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + ldr r2, _08190850 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _08190830 + ldr r0, _08190854 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + subs r0, #1 + cmp r0, ip + blt _0819088E +_08190830: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + add r0, sb + movs r7, #8 + ldrsh r0, [r0, r7] + b _081908A8 + .align 2, 0 +_08190840: .4byte gUnknown_3005B60 +_08190844: .4byte gUnknown_85D5AFC +_08190848: .4byte gUnknown_3005AF0 +_0819084C: .4byte 0x00000CB2 +_08190850: .4byte 0x00000D25 +_08190854: .4byte gUnknown_203CA44 +_08190858: + ldr r0, _08190864 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _0819088E + b _081908A4 + .align 2, 0 +_08190864: .4byte gUnknown_203CA44 +_08190868: + movs r2, #0x30 + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _08190884 + ldr r0, _08190880 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #1 + bls _0819088E + movs r7, #8 + ldrsh r0, [r4, r7] + b _081908A8 + .align 2, 0 +_08190880: .4byte gUnknown_203CA44 +_08190884: + ldr r0, _081908A0 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _081908A4 +_0819088E: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _081908B8 + .align 2, 0 +_081908A0: .4byte gUnknown_203CA44 +_081908A4: + movs r1, #8 + ldrsh r0, [r4, r1] +_081908A8: + cmp r0, #2 + bne _081908B8 + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_081908B8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819079C + + thumb_func_start sub_081908C8 +sub_081908C8: @ 0x081908C8 + push {lr} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldr r2, _081908F0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + movs r2, #0xe + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _081908F8 + ldr r0, _081908F4 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _08190902 + b _0819091C + .align 2, 0 +_081908F0: .4byte gUnknown_3005B60 +_081908F4: .4byte gUnknown_203CA44 +_081908F8: + ldr r0, _08190918 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #1 + beq _0819091C +_08190902: + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #2 + bne _0819092A + adds r0, r3, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _0819092A + .align 2, 0 +_08190918: .4byte gUnknown_203CA44 +_0819091C: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0819092A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081908C8 + + thumb_func_start sub_08190930 +sub_08190930: @ 0x08190930 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _0819096C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #0xe + ldrsh r2, [r0, r3] + mov sb, r2 + movs r4, #0x10 + ldrsh r7, [r0, r4] + movs r5, #8 + ldrsh r0, [r0, r5] + cmp r0, #8 + bls _08190962 + bl _08191E5E +_08190962: + lsls r0, r0, #2 + ldr r1, _08190970 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819096C: .4byte gUnknown_3005B60 +_08190970: .4byte _08190974 +_08190974: @ jump table + .4byte _08190998 @ case 0 + .4byte _081909D8 @ case 1 + .4byte _08190A04 @ case 2 + .4byte _08190AA4 @ case 3 + .4byte _08191C54 @ case 4 + .4byte _08191C94 @ case 5 + .4byte _08191CD4 @ case 6 + .4byte _08191D18 @ case 7 + .4byte _08191D62 @ case 8 +_08190998: + ldr r0, _081909D0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _081909AC + bl _08191E5E +_081909AC: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _081909D4 + mov r6, r8 + lsls r0, r6, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + bl _08191E5E + .align 2, 0 +_081909D0: .4byte gUnknown_2037C74 +_081909D4: .4byte gUnknown_3005B60 +_081909D8: + ldr r0, _081909FC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081909E8 + bl _08191E5E +_081909E8: + mov r1, r8 + lsls r0, r1, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r2, _08190A00 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #8] + bl _08191E5E + .align 2, 0 +_081909FC: .4byte gUnknown_2037C74 +_08190A00: .4byte gUnknown_3005B60 +_08190A04: + mov r0, r8 + bl sub_08191E78 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #8 + bgt _08190A1A + cmp r6, #1 + bge _08190A4C + bl _08191E5E +_08190A1A: + cmp r6, #9 + beq _08190A22 + bl _08191E5E +_08190A22: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08190A48 + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + strh r1, [r0, #8] + bl _08191E5E + .align 2, 0 +_08190A48: .4byte gUnknown_3005B60 +_08190A4C: + ldr r1, _08190AA0 + mov r4, r8 + lsls r2, r4, #2 + adds r0, r2, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0x12] + movs r5, #0xc + ldrsh r0, [r0, r5] + movs r1, #0 + mov sb, r2 + cmp r0, #0 + beq _08190A68 + movs r1, #9 +_08190A68: + adds r6, r1, #0 + adds r0, r6, #0 + adds r0, #9 + cmp r6, r0 + bge _08190A8E + adds r5, r0, #0 +_08190A74: + lsls r4, r6, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r6, #1 + cmp r6, r5 + blt _08190A74 +_08190A8E: + ldr r0, _08190AA0 + mov r1, sb + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #3 + strh r0, [r1, #8] + bl _08191E5E + .align 2, 0 +_08190AA0: .4byte gUnknown_3005B60 +_08190AA4: + mov r6, r8 + lsls r1, r6, #2 + adds r0, r1, r6 + lsls r0, r0, #3 + ldr r2, _08190ACC + adds r0, r0, r2 + movs r3, #0x12 + ldrsh r6, [r0, r3] + subs r0, r6, #1 + mov sb, r1 + cmp r0, #7 + bls _08190AC0 + bl _08191E5E +_08190AC0: + lsls r0, r0, #2 + ldr r1, _08190AD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08190ACC: .4byte gUnknown_3005B60 +_08190AD0: .4byte _08190AD4 +_08190AD4: @ jump table + .4byte _08190AF4 @ case 0 + .4byte _08190E90 @ case 1 + .4byte _08191228 @ case 2 + .4byte _08191764 @ case 3 + .4byte _08190AF4 @ case 4 + .4byte _08190E90 @ case 5 + .4byte _081914D8 @ case 6 + .4byte _081919C4 @ case 7 +_08190AF4: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08190B1C + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _08190B30 + ldr r0, _08190B20 + movs r1, #0 + strh r1, [r0] + ldr r0, _08190B24 + strh r1, [r0] + ldr r0, _08190B28 + strh r1, [r0] + ldr r1, _08190B2C + movs r0, #0xa0 + strh r0, [r1] + b _08190B42 + .align 2, 0 +_08190B1C: .4byte gUnknown_3005B60 +_08190B20: .4byte gUnknown_2022AC8 +_08190B24: .4byte gUnknown_2022ACA +_08190B28: .4byte gUnknown_2022ACC +_08190B2C: .4byte gUnknown_2022ACE +_08190B30: + ldr r0, _08190B88 + strh r2, [r0] + ldr r1, _08190B8C + movs r0, #0xa0 + strh r0, [r1] + ldr r0, _08190B90 + strh r2, [r0] + ldr r0, _08190B94 + strh r2, [r0] +_08190B42: + cmp r6, #1 + bne _08190BF8 + ldr r5, _08190B98 + ldr r0, [r5] + ldrb r1, [r0, #0x10] + cmp r1, #0 + bne _08190BAC + ldr r0, _08190B9C + strh r1, [r0] + ldr r1, _08190BA0 + movs r6, #0xa0 + lsls r6, r6, #1 + adds r0, r6, #0 + strh r0, [r1] + ldr r3, _08190BA4 + ldr r2, _08190BA8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r4, #0xa + ldrsh r1, [r0, r4] + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #0x10 + orrs r0, r2 + ldrb r1, [r1] + bl sub_0819213C + b _08190CE0 + .align 2, 0 +_08190B88: .4byte gUnknown_2022AC8 +_08190B8C: .4byte gUnknown_2022ACA +_08190B90: .4byte gUnknown_2022ACC +_08190B94: .4byte gUnknown_2022ACE +_08190B98: .4byte gUnknown_203CA44 +_08190B9C: .4byte gUnknown_2022AD0 +_08190BA0: .4byte gUnknown_2022AD2 +_08190BA4: .4byte gUnknown_85D5AFC +_08190BA8: .4byte gUnknown_3005B60 +_08190BAC: + ldr r1, _08190BE8 + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + strh r0, [r1] + ldr r0, _08190BEC + movs r4, #0 + strh r4, [r0] + ldr r3, _08190BF0 + ldr r2, _08190BF4 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r6, #0xa + ldrsh r1, [r0, r6] + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #0x10 + orrs r0, r2 + ldrb r1, [r1] + bl sub_0819213C + ldr r0, [r5] + strb r4, [r0, #0x10] + b _08190CE0 + .align 2, 0 +_08190BE8: .4byte gUnknown_2022AD0 +_08190BEC: .4byte gUnknown_2022AD2 +_08190BF0: .4byte gUnknown_85D5AFC +_08190BF4: .4byte gUnknown_3005B60 +_08190BF8: + ldr r6, _08190C44 + ldr r1, [r6] + ldrb r5, [r1, #0x10] + cmp r5, #0 + bne _08190C54 + ldr r4, _08190C48 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r2, #0xa + ldrsh r0, [r0, r2] + adds r2, r0, #0 + subs r2, #0x10 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0x11 + bl sub_08192B3C + ldr r0, _08190C4C + strh r5, [r0] + ldr r1, _08190C50 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r1] + ldr r2, [r6] + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r1, [r0, #0xc] + movs r0, #0x10 + orrs r0, r1 + ldrb r1, [r2, #0x11] + bl sub_0819213C + b _08190CE0 + .align 2, 0 +_08190C44: .4byte gUnknown_203CA44 +_08190C48: .4byte gUnknown_3005B60 +_08190C4C: .4byte gUnknown_2022AD0 +_08190C50: .4byte gUnknown_2022AD2 +_08190C54: + cmp r5, #2 + bne _08190CA8 + ldr r4, _08190C9C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r5, #0xa + ldrsh r0, [r0, r5] + adds r2, r0, #0 + subs r2, #0x10 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0x11 + bl sub_08192B3C + ldr r1, _08190CA0 + movs r0, #0 + strh r0, [r1] + ldr r1, _08190CA4 + movs r2, #0xa0 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r1] + ldr r2, [r6] + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r1, [r0, #0xc] + movs r0, #0x10 + orrs r0, r1 + ldrb r1, [r2, #0x12] + bl sub_0819213C + b _08190CE0 + .align 2, 0 +_08190C9C: .4byte gUnknown_3005B60 +_08190CA0: .4byte gUnknown_2022AD0 +_08190CA4: .4byte gUnknown_2022AD2 +_08190CA8: + ldr r1, _08190D50 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r1] + ldr r1, _08190D54 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _08190D58 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r4, #0xa + ldrsh r0, [r0, r4] + adds r2, r0, #0 + subs r2, #0x10 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #0x10 + orrs r0, r1 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_08192D7C +_08190CE0: + movs r6, #0 + ldr r5, _08190D5C + mov sl, r5 + ldr r3, _08190D60 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r1, _08190D58 + adds r5, r0, r1 + mov ip, r6 + adds r4, r3, #0 + adds r4, #0x1c + movs r7, #1 +_08190CFA: + cmp r6, #1 + bgt _08190D68 + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08190DAC + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08190D64 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08190DAC + .align 2, 0 +_08190D50: .4byte gUnknown_2022AD0 +_08190D54: .4byte gUnknown_2022AD2 +_08190D58: .4byte gUnknown_3005B60 +_08190D5C: .4byte gUnknown_203CA44 +_08190D60: .4byte gUnknown_20205AC +_08190D64: .4byte sub_081903EC +_08190D68: + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08190DAC + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08190E1C + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08190DAC: + adds r6, #1 + cmp r6, #7 + ble _08190CFA + movs r6, #8 + ldr r2, _08190E20 + mov ip, r2 + ldr r3, _08190E24 + ldr r1, _08190E28 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_08190DCA: + cmp r6, #9 + bgt _08190E30 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08190E70 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08190E2C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08190E70 + .align 2, 0 +_08190E1C: .4byte sub_081905AC +_08190E20: .4byte gUnknown_203CA44 +_08190E24: .4byte gUnknown_20205AC +_08190E28: .4byte gUnknown_3005B60 +_08190E2C: .4byte sub_081903EC +_08190E30: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08190E70 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08190E88 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08190E70: + adds r6, #1 + cmp r6, #0xf + ble _08190DCA + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r3, _08190E8C + adds r0, r0, r3 + movs r2, #0 + movs r1, #4 + bl _08191C44 + .align 2, 0 +_08190E88: .4byte sub_081905AC +_08190E8C: .4byte gUnknown_3005B60 +_08190E90: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08190EBC + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _08190ED4 + ldr r0, _08190EC0 + movs r1, #0 + strh r1, [r0] + ldr r0, _08190EC4 + strh r1, [r0] + ldr r0, _08190EC8 + strh r1, [r0] + ldr r1, _08190ECC + ldr r2, _08190ED0 + adds r0, r2, #0 + strh r0, [r1] + b _08190EE8 + .align 2, 0 +_08190EBC: .4byte gUnknown_3005B60 +_08190EC0: .4byte gUnknown_2022AC8 +_08190EC4: .4byte gUnknown_2022ACA +_08190EC8: .4byte gUnknown_2022ACC +_08190ECC: .4byte gUnknown_2022ACE +_08190ED0: .4byte 0x0000FF60 +_08190ED4: + ldr r0, _08190F28 + strh r2, [r0] + ldr r1, _08190F2C + ldr r3, _08190F30 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _08190F34 + strh r2, [r0] + ldr r0, _08190F38 + strh r2, [r0] +_08190EE8: + cmp r6, #2 + bne _08190F98 + ldr r5, _08190F3C + ldr r0, [r5] + ldrb r1, [r0, #0x10] + cmp r1, #0 + bne _08190F50 + ldr r0, _08190F40 + strh r1, [r0] + ldr r1, _08190F44 + movs r0, #0xa0 + strh r0, [r1] + ldr r3, _08190F48 + ldr r2, _08190F4C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r4, #0xa + ldrsh r1, [r0, r4] + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #4 + orrs r0, r2 + ldrb r1, [r1] + bl sub_0819213C + b _08191078 + .align 2, 0 +_08190F28: .4byte gUnknown_2022AC8 +_08190F2C: .4byte gUnknown_2022ACA +_08190F30: .4byte 0x0000FF60 +_08190F34: .4byte gUnknown_2022ACC +_08190F38: .4byte gUnknown_2022ACE +_08190F3C: .4byte gUnknown_203CA44 +_08190F40: .4byte gUnknown_2022AD0 +_08190F44: .4byte gUnknown_2022AD2 +_08190F48: .4byte gUnknown_85D5AFC +_08190F4C: .4byte gUnknown_3005B60 +_08190F50: + ldr r0, _08190F88 + movs r4, #0 + strh r4, [r0] + ldr r0, _08190F8C + strh r4, [r0] + ldr r3, _08190F90 + ldr r2, _08190F94 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r6, #0xa + ldrsh r1, [r0, r6] + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #4 + orrs r0, r2 + ldrb r1, [r1] + bl sub_0819213C + ldr r0, [r5] + strb r4, [r0, #0x10] + b _08191078 + .align 2, 0 +_08190F88: .4byte gUnknown_2022AD0 +_08190F8C: .4byte gUnknown_2022AD2 +_08190F90: .4byte gUnknown_85D5AFC +_08190F94: .4byte gUnknown_3005B60 +_08190F98: + ldr r6, _08190FE0 + ldr r1, [r6] + ldrb r5, [r1, #0x10] + cmp r5, #0 + bne _08190FF0 + ldr r4, _08190FE4 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r2, #0xa + ldrsh r0, [r0, r2] + adds r2, r0, #0 + subs r2, #0x10 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0x11 + bl sub_08192B3C + ldr r0, _08190FE8 + strh r5, [r0] + ldr r1, _08190FEC + movs r0, #0xa0 + strh r0, [r1] + ldr r2, [r6] + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r1, [r0, #0xc] + movs r0, #4 + orrs r0, r1 + ldrb r1, [r2, #0x11] + bl sub_0819213C + b _08191078 + .align 2, 0 +_08190FE0: .4byte gUnknown_203CA44 +_08190FE4: .4byte gUnknown_3005B60 +_08190FE8: .4byte gUnknown_2022AD0 +_08190FEC: .4byte gUnknown_2022AD2 +_08190FF0: + cmp r5, #2 + bne _08191040 + ldr r4, _08191034 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r3, #0xa + ldrsh r0, [r0, r3] + adds r2, r0, #0 + subs r2, #0x10 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0x11 + bl sub_08192B3C + ldr r1, _08191038 + movs r0, #0 + strh r0, [r1] + ldr r1, _0819103C + movs r0, #0xa0 + strh r0, [r1] + ldr r2, [r6] + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r4 + ldrb r1, [r0, #0xc] + movs r0, #4 + orrs r0, r1 + ldrb r1, [r2, #0x12] + bl sub_0819213C + b _08191078 + .align 2, 0 +_08191034: .4byte gUnknown_3005B60 +_08191038: .4byte gUnknown_2022AD0 +_0819103C: .4byte gUnknown_2022AD2 +_08191040: + ldr r1, _081910E8 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + strh r0, [r1] + ldr r1, _081910EC + movs r0, #0 + strh r0, [r1] + ldr r1, _081910F0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r5, #0xa + ldrsh r0, [r0, r5] + adds r2, r0, #0 + subs r2, #0x10 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #4 + orrs r0, r1 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_08192D7C +_08191078: + movs r6, #0 + ldr r0, _081910F4 + mov sl, r0 + ldr r3, _081910F8 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081910F0 + adds r5, r0, r1 + mov ip, r6 + adds r4, r3, #0 + adds r4, #0x1c + movs r7, #1 +_08191092: + cmp r6, #1 + bgt _08191100 + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191144 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081910FC + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191144 + .align 2, 0 +_081910E8: .4byte gUnknown_2022AD0 +_081910EC: .4byte gUnknown_2022AD2 +_081910F0: .4byte gUnknown_3005B60 +_081910F4: .4byte gUnknown_203CA44 +_081910F8: .4byte gUnknown_20205AC +_081910FC: .4byte sub_08190454 +_08191100: + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191144 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081911B4 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191144: + adds r6, #1 + cmp r6, #7 + ble _08191092 + movs r6, #8 + ldr r2, _081911B8 + mov ip, r2 + ldr r3, _081911BC + ldr r1, _081911C0 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_08191162: + cmp r6, #9 + bgt _081911C8 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191208 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _081911C4 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191208 + .align 2, 0 +_081911B4: .4byte sub_08190628 +_081911B8: .4byte gUnknown_203CA44 +_081911BC: .4byte gUnknown_20205AC +_081911C0: .4byte gUnknown_3005B60 +_081911C4: .4byte sub_08190454 +_081911C8: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191208 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191220 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191208: + adds r6, #1 + cmp r6, #0xf + ble _08191162 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r3, _08191224 + adds r0, r0, r3 + movs r2, #0 + movs r1, #5 + bl _08191C44 + .align 2, 0 +_08191220: .4byte sub_08190628 +_08191224: .4byte gUnknown_3005B60 +_08191228: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08191254 + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _08191268 + ldr r0, _08191258 + movs r1, #0 + strh r1, [r0] + ldr r0, _0819125C + strh r1, [r0] + ldr r2, _08191260 + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + strh r0, [r2] + ldr r0, _08191264 + strh r1, [r0] + b _0819127E + .align 2, 0 +_08191254: .4byte gUnknown_3005B60 +_08191258: .4byte gUnknown_2022AC8 +_0819125C: .4byte gUnknown_2022ACA +_08191260: .4byte gUnknown_2022ACC +_08191264: .4byte gUnknown_2022ACE +_08191268: + ldr r1, _081912C0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _081912C4 + strh r2, [r0] + ldr r0, _081912C8 + strh r2, [r0] + ldr r0, _081912CC + strh r2, [r0] +_0819127E: + ldr r0, _081912D0 + ldr r4, [r0] + ldrb r0, [r4, #0x10] + cmp r0, #0 + bne _081912E4 + ldr r1, _081912D4 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + strh r0, [r1] + ldr r1, _081912D8 + movs r0, #0xa0 + strh r0, [r1] + ldr r3, _081912DC + ldr r2, _081912E0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r5, #0xa + ldrsh r1, [r0, r5] + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #8 + orrs r0, r2 + ldrb r1, [r1] + bl sub_0819213C + b _08191322 + .align 2, 0 +_081912C0: .4byte gUnknown_2022AC8 +_081912C4: .4byte gUnknown_2022ACA +_081912C8: .4byte gUnknown_2022ACC +_081912CC: .4byte gUnknown_2022ACE +_081912D0: .4byte gUnknown_203CA44 +_081912D4: .4byte gUnknown_2022AD0 +_081912D8: .4byte gUnknown_2022AD2 +_081912DC: .4byte gUnknown_85D5AFC +_081912E0: .4byte gUnknown_3005B60 +_081912E4: + ldr r1, _08191394 + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + strh r0, [r1] + ldr r1, _08191398 + movs r0, #0 + strh r0, [r1] + ldr r3, _0819139C + ldr r2, _081913A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r5, #0xa + ldrsh r1, [r0, r5] + lsls r1, r1, #2 + subs r1, #1 + ldrb r4, [r4, #0x10] + adds r1, r1, r4 + adds r1, r1, r3 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r2, [r0, #0xc] + movs r0, #8 + orrs r0, r2 + ldrb r1, [r1] + bl sub_08192D7C +_08191322: + movs r6, #0 + ldr r0, _081913A4 + mov sl, r0 + ldr r3, _081913A8 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081913A0 + adds r5, r0, r1 + mov ip, r6 + adds r4, r3, #0 + adds r4, #0x1c + movs r7, #1 +_0819133C: + cmp r6, #1 + bgt _081913B0 + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081913F4 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081913AC + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _081913F4 + .align 2, 0 +_08191394: .4byte gUnknown_2022AD0 +_08191398: .4byte gUnknown_2022AD2 +_0819139C: .4byte gUnknown_85D5BD8 +_081913A0: .4byte gUnknown_3005B60 +_081913A4: .4byte gUnknown_203CA44 +_081913A8: .4byte gUnknown_20205AC +_081913AC: .4byte sub_081904BC +_081913B0: + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081913F4 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08191464 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_081913F4: + adds r6, #1 + cmp r6, #7 + ble _0819133C + movs r6, #8 + ldr r2, _08191468 + mov ip, r2 + ldr r3, _0819146C + ldr r1, _08191470 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_08191412: + cmp r6, #9 + bgt _08191478 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081914B8 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191474 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _081914B8 + .align 2, 0 +_08191464: .4byte sub_081906A4 +_08191468: .4byte gUnknown_203CA44 +_0819146C: .4byte gUnknown_20205AC +_08191470: .4byte gUnknown_3005B60 +_08191474: .4byte sub_081904BC +_08191478: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081914B8 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _081914D0 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_081914B8: + adds r6, #1 + cmp r6, #0xf + ble _08191412 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r3, _081914D4 + adds r0, r0, r3 + movs r2, #0 + movs r1, #6 + b _08191C44 + .align 2, 0 +_081914D0: .4byte sub_081906A4 +_081914D4: .4byte gUnknown_3005B60 +_081914D8: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08191504 + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _08191518 + ldr r0, _08191508 + movs r1, #0 + strh r1, [r0] + ldr r0, _0819150C + strh r1, [r0] + ldr r2, _08191510 + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r6, #0 + strh r0, [r2] + ldr r0, _08191514 + strh r1, [r0] + b _0819152E + .align 2, 0 +_08191504: .4byte gUnknown_3005B60 +_08191508: .4byte gUnknown_2022AC8 +_0819150C: .4byte gUnknown_2022ACA +_08191510: .4byte gUnknown_2022ACC +_08191514: .4byte gUnknown_2022ACE +_08191518: + ldr r1, _08191560 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _08191564 + strh r2, [r0] + ldr r0, _08191568 + strh r2, [r0] + ldr r0, _0819156C + strh r2, [r0] +_0819152E: + ldr r0, _08191570 + ldr r2, [r0] + ldrb r0, [r2, #0x10] + cmp r0, #0 + bne _08191580 + ldr r1, _08191574 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + strh r0, [r1] + ldr r1, _08191578 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _0819157C + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #8 + orrs r0, r1 + ldrb r1, [r2, #0x11] + bl sub_0819213C + b _081915B4 + .align 2, 0 +_08191560: .4byte gUnknown_2022AC8 +_08191564: .4byte gUnknown_2022ACA +_08191568: .4byte gUnknown_2022ACC +_0819156C: .4byte gUnknown_2022ACE +_08191570: .4byte gUnknown_203CA44 +_08191574: .4byte gUnknown_2022AD0 +_08191578: .4byte gUnknown_2022AD2 +_0819157C: .4byte gUnknown_3005B60 +_08191580: + ldr r1, _08191624 + movs r0, #0 + strh r0, [r1] + ldr r1, _08191628 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _0819162C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r5, #0xa + ldrsh r0, [r0, r5] + adds r2, r0, #0 + subs r2, #0x10 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #8 + orrs r0, r1 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_08192D7C +_081915B4: + movs r6, #0 + ldr r0, _08191630 + mov sl, r0 + ldr r3, _08191634 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r1, _0819162C + adds r5, r0, r1 + mov ip, r6 + adds r4, r3, #0 + adds r4, #0x1c + movs r7, #1 +_081915CE: + cmp r6, #1 + bgt _0819163C + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191680 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08191638 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191680 + .align 2, 0 +_08191624: .4byte gUnknown_2022AD0 +_08191628: .4byte gUnknown_2022AD2 +_0819162C: .4byte gUnknown_3005B60 +_08191630: .4byte gUnknown_203CA44 +_08191634: .4byte gUnknown_20205AC +_08191638: .4byte sub_081904BC +_0819163C: + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191680 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081916F0 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191680: + adds r6, #1 + cmp r6, #7 + ble _081915CE + movs r6, #8 + ldr r2, _081916F4 + mov ip, r2 + ldr r3, _081916F8 + ldr r1, _081916FC + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_0819169E: + cmp r6, #9 + bgt _08191704 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191744 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191700 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191744 + .align 2, 0 +_081916F0: .4byte sub_081906A4 +_081916F4: .4byte gUnknown_203CA44 +_081916F8: .4byte gUnknown_20205AC +_081916FC: .4byte gUnknown_3005B60 +_08191700: .4byte sub_081904BC +_08191704: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191744 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _0819175C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191744: + adds r6, #1 + cmp r6, #0xf + ble _0819169E + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r3, _08191760 + adds r0, r0, r3 + movs r2, #0 + movs r1, #6 + b _08191C44 + .align 2, 0 +_0819175C: .4byte sub_081906A4 +_08191760: .4byte gUnknown_3005B60 +_08191764: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08191790 + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _081917A4 + ldr r0, _08191794 + movs r1, #0 + strh r1, [r0] + ldr r0, _08191798 + strh r1, [r0] + ldr r2, _0819179C + movs r6, #0xff + lsls r6, r6, #8 + adds r0, r6, #0 + strh r0, [r2] + ldr r0, _081917A0 + strh r1, [r0] + b _081917BA + .align 2, 0 +_08191790: .4byte gUnknown_3005B60 +_08191794: .4byte gUnknown_2022AC8 +_08191798: .4byte gUnknown_2022ACA +_0819179C: .4byte gUnknown_2022ACC +_081917A0: .4byte gUnknown_2022ACE +_081917A4: + ldr r1, _081917D4 + movs r3, #0xff + lsls r3, r3, #8 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _081917D8 + strh r2, [r0] + ldr r0, _081917DC + strh r2, [r0] + ldr r0, _081917E0 + strh r2, [r0] +_081917BA: + ldr r0, _081917E4 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #1 + bne _081917F0 + ldr r1, _081917E8 + movs r0, #0 + strh r0, [r1] + ldr r1, _081917EC + movs r0, #0xa0 + strh r0, [r1] + b _081917FA + .align 2, 0 +_081917D4: .4byte gUnknown_2022AC8 +_081917D8: .4byte gUnknown_2022ACA +_081917DC: .4byte gUnknown_2022ACC +_081917E0: .4byte gUnknown_2022ACE +_081917E4: .4byte gUnknown_203CA44 +_081917E8: .4byte gUnknown_2022AD0 +_081917EC: .4byte gUnknown_2022AD2 +_081917F0: + ldr r0, _08191890 + movs r1, #0 + strh r1, [r0] + ldr r0, _08191894 + strh r1, [r0] +_081917FA: + ldr r4, _08191898 + ldr r5, _0819189C + ldr r3, [r5] + ldr r2, _081918A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r6, #0xa + ldrsh r1, [r0, r6] + lsls r1, r1, #2 + subs r1, #1 + ldrb r3, [r3, #0x10] + adds r1, r1, r3 + adds r1, r1, r4 + mov r4, sb + add r4, r8 + lsls r4, r4, #3 + adds r4, r4, r2 + ldrb r2, [r4, #0xc] + movs r0, #2 + orrs r0, r2 + ldrb r1, [r1] + bl sub_08192D7C + movs r6, #0 + ldr r7, _081918A4 + mov ip, r6 + mov sl, r5 + adds r5, r7, #0 + adds r5, #0x1c +_08191838: + cmp r6, #1 + bgt _081918AC + mov r1, sl + ldr r0, [r1] + adds r3, r0, r6 + ldrb r0, [r3] + cmp r0, #0xff + beq _081918F2 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081918A8 + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r4, #0xc] + movs r2, #1 + eors r1, r2 + strh r1, [r0, #0x2e] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r2, ip + strh r2, [r0, #0x30] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r6, [r0, #0x32] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r1, [r0, #0x34] + b _081918F2 + .align 2, 0 +_08191890: .4byte gUnknown_2022AD0 +_08191894: .4byte gUnknown_2022AD2 +_08191898: .4byte gUnknown_85D5BD8 +_0819189C: .4byte gUnknown_203CA44 +_081918A0: .4byte gUnknown_3005B60 +_081918A4: .4byte gUnknown_20205AC +_081918A8: .4byte sub_08190528 +_081918AC: + mov r3, sl + ldr r0, [r3] + adds r3, r0, r6 + ldrb r0, [r3] + cmp r0, #0xff + beq _081918F2 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _08191964 + str r1, [r0] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r4, #0xc] + movs r2, #1 + eors r1, r2 + strh r1, [r0, #0x2e] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r6, [r0, #0x32] +_081918F2: + adds r6, #1 + cmp r6, #7 + ble _08191838 + movs r6, #8 + ldr r2, _08191968 + mov ip, r2 + ldr r3, _0819196C + ldr r1, _08191970 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_08191910: + cmp r6, #9 + bgt _08191978 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081919B8 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191974 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _081919B8 + .align 2, 0 +_08191964: .4byte sub_08190720 +_08191968: .4byte gUnknown_203CA44 +_0819196C: .4byte gUnknown_20205AC +_08191970: .4byte gUnknown_3005B60 +_08191974: .4byte sub_08190528 +_08191978: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _081919B8 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _081919C0 + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_081919B8: + adds r6, #1 + cmp r6, #0xf + ble _08191910 + b _08191C36 + .align 2, 0 +_081919C0: .4byte sub_08190720 +_081919C4: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r4, _081919F0 + adds r0, r0, r4 + movs r5, #0xc + ldrsh r2, [r0, r5] + cmp r2, #0 + beq _08191A04 + ldr r0, _081919F4 + movs r1, #0 + strh r1, [r0] + ldr r0, _081919F8 + strh r1, [r0] + ldr r2, _081919FC + movs r6, #0xff + lsls r6, r6, #8 + adds r0, r6, #0 + strh r0, [r2] + ldr r0, _08191A00 + strh r1, [r0] + b _08191A1A + .align 2, 0 +_081919F0: .4byte gUnknown_3005B60 +_081919F4: .4byte gUnknown_2022AC8 +_081919F8: .4byte gUnknown_2022ACA +_081919FC: .4byte gUnknown_2022ACC +_08191A00: .4byte gUnknown_2022ACE +_08191A04: + ldr r1, _08191A4C + movs r3, #0xff + lsls r3, r3, #8 + adds r0, r3, #0 + strh r0, [r1] + ldr r0, _08191A50 + strh r2, [r0] + ldr r0, _08191A54 + strh r2, [r0] + ldr r0, _08191A58 + strh r2, [r0] +_08191A1A: + ldr r0, _08191A5C + ldr r2, [r0] + ldrb r0, [r2, #0x10] + cmp r0, #2 + bne _08191A6C + ldr r1, _08191A60 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + strh r0, [r1] + ldr r1, _08191A64 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _08191A68 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #2 + orrs r0, r1 + ldrb r1, [r2, #0x12] + bl sub_0819213C + b _08191AA0 + .align 2, 0 +_08191A4C: .4byte gUnknown_2022AC8 +_08191A50: .4byte gUnknown_2022ACA +_08191A54: .4byte gUnknown_2022ACC +_08191A58: .4byte gUnknown_2022ACE +_08191A5C: .4byte gUnknown_203CA44 +_08191A60: .4byte gUnknown_2022AD0 +_08191A64: .4byte gUnknown_2022AD2 +_08191A68: .4byte gUnknown_3005B60 +_08191A6C: + ldr r1, _08191B10 + movs r0, #0 + strh r0, [r1] + ldr r1, _08191B14 + movs r0, #0xa0 + strh r0, [r1] + ldr r1, _08191B18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r5, #0xa + ldrsh r0, [r0, r5] + adds r2, r0, #0 + subs r2, #0x10 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #0xc] + movs r0, #2 + orrs r0, r1 + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_08192D7C +_08191AA0: + movs r6, #0 + ldr r0, _08191B1C + mov sl, r0 + ldr r3, _08191B20 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r1, _08191B18 + adds r5, r0, r1 + mov ip, r6 + adds r4, r3, #0 + adds r4, #0x1c + movs r7, #1 +_08191ABA: + cmp r6, #1 + bgt _08191B28 + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191B6C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08191B24 + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191B6C + .align 2, 0 +_08191B10: .4byte gUnknown_2022AD0 +_08191B14: .4byte gUnknown_2022AD2 +_08191B18: .4byte gUnknown_3005B60 +_08191B1C: .4byte gUnknown_203CA44 +_08191B20: .4byte gUnknown_20205AC +_08191B24: .4byte sub_08190528 +_08191B28: + mov r2, sl + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191B6C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _08191BDC + str r1, [r0] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r0, [r5, #0xc] + eors r0, r7 + strh r0, [r1, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + mov r1, ip + strh r1, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191B6C: + adds r6, #1 + cmp r6, #7 + ble _08191ABA + movs r6, #8 + ldr r2, _08191BE0 + mov ip, r2 + ldr r3, _08191BE4 + ldr r1, _08191BE8 + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r4, #0 + adds r7, r3, #0 + adds r7, #0x1c +_08191B8A: + cmp r6, #9 + bgt _08191BF0 + mov r1, ip + ldr r0, [r1] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191C30 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191BEC + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r1, [r0, #0x34] + b _08191C30 + .align 2, 0 +_08191BDC: .4byte sub_08190720 +_08191BE0: .4byte gUnknown_203CA44 +_08191BE4: .4byte gUnknown_20205AC +_08191BE8: .4byte gUnknown_3005B60 +_08191BEC: .4byte sub_08190528 +_08191BF0: + mov r2, ip + ldr r0, [r2] + adds r2, r0, r6 + ldrb r0, [r2] + cmp r0, #0xff + beq _08191C30 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r1, _08191C4C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r5, #0xc] + strh r1, [r0, #0x2e] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x30] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r6, [r0, #0x32] +_08191C30: + adds r6, #1 + cmp r6, #0xf + ble _08191B8A +_08191C36: + mov r0, sb + add r0, r8 + lsls r0, r0, #3 + ldr r3, _08191C50 + adds r0, r0, r3 + movs r2, #0 + movs r1, #7 +_08191C44: + strh r1, [r0, #8] + strh r2, [r0, #0x12] + b _08191E5E + .align 2, 0 +_08191C4C: .4byte sub_08190720 +_08191C50: .4byte gUnknown_3005B60 +_08191C54: + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r5, _08191C84 + adds r1, r0, r5 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x29 + beq _08191D5C + ldr r1, _08191C88 + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + ldr r1, _08191C8C + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + ldr r1, _08191C90 + b _08191D00 + .align 2, 0 +_08191C84: .4byte gUnknown_3005B60 +_08191C88: .4byte gUnknown_2022ACA +_08191C8C: .4byte gUnknown_2022ACE +_08191C90: .4byte gUnknown_2022AD2 +_08191C94: + mov r6, r8 + lsls r0, r6, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r2, _08191CC4 + adds r1, r0, r2 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x29 + beq _08191D5C + ldr r1, _08191CC8 + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + ldr r1, _08191CCC + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + ldr r1, _08191CD0 + b _08191D44 + .align 2, 0 +_08191CC4: .4byte gUnknown_3005B60 +_08191CC8: .4byte gUnknown_2022ACA +_08191CCC: .4byte gUnknown_2022ACE +_08191CD0: .4byte gUnknown_2022AD2 +_08191CD4: + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r4, _08191D08 + adds r1, r0, r4 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x41 + beq _08191D5C + ldr r1, _08191D0C + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + ldr r1, _08191D10 + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + ldr r1, _08191D14 +_08191D00: + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + b _08191E5E + .align 2, 0 +_08191D08: .4byte gUnknown_3005B60 +_08191D0C: .4byte gUnknown_2022AC8 +_08191D10: .4byte gUnknown_2022ACC +_08191D14: .4byte gUnknown_2022AD0 +_08191D18: + mov r5, r8 + lsls r0, r5, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r6, _08191D4C + adds r1, r0, r6 + ldrh r0, [r1, #0x12] + adds r0, #1 + strh r0, [r1, #0x12] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x41 + beq _08191D5C + ldr r1, _08191D50 + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + ldr r1, _08191D54 + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + ldr r1, _08191D58 +_08191D44: + ldrh r0, [r1] + adds r0, #4 + strh r0, [r1] + b _08191E5E + .align 2, 0 +_08191D4C: .4byte gUnknown_3005B60 +_08191D50: .4byte gUnknown_2022AC8 +_08191D54: .4byte gUnknown_2022ACC +_08191D58: .4byte gUnknown_2022AD0 +_08191D5C: + movs r0, #2 + strh r0, [r1, #8] + b _08191E5E +_08191D62: + ldr r0, _08191D88 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08191E5E + movs r6, #0 + ldr r4, _08191D8C +_08191D72: + cmp r6, #1 + bgt _08191D90 + ldr r0, [r4] + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _08191DAA + bl sub_0818D61C + b _08191DAA + .align 2, 0 +_08191D88: .4byte gUnknown_2037C74 +_08191D8C: .4byte gUnknown_203CA44 +_08191D90: + ldr r0, [r4] + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _08191DAA + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08191DC8 + adds r0, r0, r1 + bl sub_080D2798 +_08191DAA: + adds r6, #1 + cmp r6, #7 + ble _08191D72 + movs r6, #8 + ldr r4, _08191DCC +_08191DB4: + cmp r6, #9 + bgt _08191DD0 + ldr r0, [r4] + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _08191DEA + bl sub_0818D61C + b _08191DEA + .align 2, 0 +_08191DC8: .4byte gUnknown_20205AC +_08191DCC: .4byte gUnknown_203CA44 +_08191DD0: + ldr r0, [r4] + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, #0xff + beq _08191DEA + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08191E14 + adds r0, r0, r1 + bl sub_080D2798 +_08191DEA: + adds r6, #1 + cmp r6, #0xf + ble _08191DB4 + bl sub_080D283C + ldr r4, _08191E18 + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + bl sub_080034D4 + mov r0, sb + cmp r0, #0 + bne _08191E20 + ldr r0, _08191E1C + bl sub_08000540 + b _08191E58 + .align 2, 0 +_08191E14: .4byte gUnknown_20205AC +_08191E18: .4byte gUnknown_203CA44 +_08191E1C: .4byte sub_08085B34 +_08191E20: + ldr r0, _08191E70 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _08191E74 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #8] + strh r5, [r1, #0xa] + movs r0, #3 + strh r0, [r1, #0xc] + mov r3, r8 + lsls r0, r3, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0x10] + strh r0, [r1, #0xe] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0x14] + strh r0, [r1, #0x10] +_08191E58: + mov r0, r8 + bl sub_080A8964 +_08191E5E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08191E70: .4byte sub_08193E00 +_08191E74: .4byte gUnknown_3005B60 + thumb_func_end sub_08190930 + + thumb_func_start sub_08191E78 +sub_08191E78: @ 0x08191E78 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r7, #0 + ldr r2, _08191EF8 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r2 + mov ip, r0 + movs r1, #0x10 + ldrsh r6, [r0, r1] + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r3, #0xa + ldrsh r5, [r0, r3] + ldr r0, _08191EFC + adds r0, r5, r0 + ldrb r0, [r0] + mov sl, r0 + ldr r3, _08191F00 + ldr r0, [r3] + ldr r1, _08191F04 + adds r0, r0, r1 + ldrh r0, [r0] + mov r8, r0 + ldr r1, _08191F08 + ldrh r4, [r1, #0x2e] + movs r0, #3 + ands r0, r4 + adds r2, r1, #0 + cmp r0, #0 + beq _08191ECA + movs r7, #9 +_08191ECA: + mov r3, ip + movs r1, #0xe + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _08191ED6 + b _08192128 +_08191ED6: + cmp r0, #1 + beq _08191EDC + b _0819200C +_08191EDC: + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _08191F16 + ldr r0, _08191F0C + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _08191F16 + cmp r5, #0 + bne _08191F10 + movs r5, #0xf + b _08191F12 + .align 2, 0 +_08191EF8: .4byte gUnknown_3005B60 +_08191EFC: .4byte gUnknown_85D5AFC +_08191F00: .4byte gUnknown_3005AF0 +_08191F04: .4byte 0x00000CB2 +_08191F08: .4byte gUnknown_3002360 +_08191F0C: .4byte gUnknown_203CA44 +_08191F10: + subs r5, #1 +_08191F12: + movs r7, #1 + b _08191FBC +_08191F16: + ldrh r1, [r2, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08191F3E + ldr r0, _08191F34 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #0 + bne _08191F3E + cmp r5, #0xf + bne _08191F38 + movs r5, #0 + b _08191F3A + .align 2, 0 +_08191F34: .4byte gUnknown_203CA44 +_08191F38: + adds r5, #1 +_08191F3A: + movs r7, #2 + b _08191FBC +_08191F3E: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08191F60 + ldr r0, _08191F5C + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _08191F60 + subs r0, #1 + strb r0, [r1, #0x10] + movs r7, #3 + b _08191FBC + .align 2, 0 +_08191F5C: .4byte gUnknown_203CA44 +_08191F60: + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08191FBC + ldr r2, _08191FE8 + ldr r0, [r2] + mov r3, sl + lsls r1, r3, #2 + adds r0, r0, r1 + ldr r2, _08191FEC + adds r0, r0, r2 + ldrb r3, [r0] + lsls r0, r3, #0x1d + mov ip, r1 + cmp r0, #0 + bge _08191F98 + ldr r0, _08191FF0 + ldr r2, [r0] + ldrb r4, [r2, #0x10] + subs r1, r4, #1 + lsls r0, r3, #0x1b + lsrs r0, r0, #0x1e + cmp r1, r0 + bge _08191F98 + adds r0, r4, #1 + strb r0, [r2, #0x10] + movs r7, #4 +_08191F98: + ldr r3, _08191FE8 + ldr r0, [r3] + add r0, ip + ldr r1, _08191FEC + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _08191FBC + ldr r0, _08191FF0 + ldr r3, [r0] + ldrb r1, [r3, #0x10] + subs r0, r1, #1 + cmp r0, r8 + bge _08191FBC + adds r0, r1, #1 + strb r0, [r3, #0x10] + movs r7, #4 +_08191FBC: + cmp r7, #9 + beq _08191FC2 + b _081920FC +_08191FC2: + ldr r0, _08191FF0 + ldr r3, [r0] + ldrb r0, [r3, #0x10] + cmp r0, #0 + beq _08191FFC + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + ldr r2, _08191FF4 + adds r1, r1, r2 + ldr r2, _08191FF8 + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r0, r0, #1 + lsls r0, r0, #2 + subs r0, #1 + ldrb r3, [r3, #0x10] + adds r0, r0, r3 + b _081920DE + .align 2, 0 +_08191FE8: .4byte gUnknown_3005AF0 +_08191FEC: .4byte 0x00000D25 +_08191FF0: .4byte gUnknown_203CA44 +_08191FF4: .4byte gUnknown_3005B60 +_08191FF8: .4byte gUnknown_85D5C1C +_08191FFC: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r3, _08192008 + adds r0, r0, r3 + b _081920FA + .align 2, 0 +_08192008: .4byte gUnknown_3005B60 +_0819200C: + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _0819203A + ldr r0, _0819202C + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #1 + bne _0819203A + cmp r5, #0x10 + bne _08192034 + ldr r0, _08192030 + add r0, r8 + ldrb r5, [r0] + b _08192036 + .align 2, 0 +_0819202C: .4byte gUnknown_203CA44 +_08192030: .4byte gUnknown_85D5C18 +_08192034: + subs r5, #1 +_08192036: + movs r7, #5 + b _081920A2 +_0819203A: + ldrh r1, [r2, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819206A + ldr r0, _0819205C + ldr r0, [r0] + ldrb r0, [r0, #0x10] + cmp r0, #1 + bne _0819206A + ldr r0, _08192060 + add r0, r8 + ldrb r0, [r0] + cmp r5, r0 + bne _08192064 + movs r5, #0x10 + b _08192066 + .align 2, 0 +_0819205C: .4byte gUnknown_203CA44 +_08192060: .4byte gUnknown_85D5C18 +_08192064: + adds r5, #1 +_08192066: + movs r7, #6 + b _081920A2 +_0819206A: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08192088 + ldr r0, _08192084 + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #0 + beq _08192088 + movs r7, #7 + subs r0, #1 + b _081920A0 + .align 2, 0 +_08192084: .4byte gUnknown_203CA44 +_08192088: + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081920A2 + ldr r0, _081920C0 + ldr r1, [r0] + ldrb r0, [r1, #0x10] + cmp r0, #1 + bhi _081920A2 + movs r7, #8 + adds r0, #1 +_081920A0: + strb r0, [r1, #0x10] +_081920A2: + cmp r7, #9 + bne _081920FC + ldr r0, _081920C0 + ldr r0, [r0] + ldrb r1, [r0, #0x10] + cmp r1, #0 + bne _081920CC + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + ldr r2, _081920C4 + adds r1, r1, r2 + ldr r2, _081920C8 + ldrb r0, [r0, #0x11] + b _081920DE + .align 2, 0 +_081920C0: .4byte gUnknown_203CA44 +_081920C4: .4byte gUnknown_3005B60 +_081920C8: .4byte gUnknown_85D5C3C +_081920CC: + cmp r1, #2 + bne _081920F0 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + ldr r3, _081920E8 + adds r1, r1, r3 + ldr r2, _081920EC + ldrb r0, [r0, #0x12] +_081920DE: + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1, #0xa] + b _081920FC + .align 2, 0 +_081920E8: .4byte gUnknown_3005B60 +_081920EC: .4byte gUnknown_85D5C3C +_081920F0: + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _08192138 + adds r0, r0, r1 +_081920FA: + strh r5, [r0, #0xa] +_081920FC: + cmp r7, #0 + beq _08192128 + cmp r7, #9 + beq _08192128 + movs r0, #5 + bl sub_080A306C + ldr r1, _08192138 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0xa] + mov r2, sb + lsls r0, r2, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0xc] + movs r2, #1 + eors r1, r2 + strh r1, [r0, #0xc] +_08192128: + adds r0, r7, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08192138: .4byte gUnknown_3005B60 + thumb_func_end sub_08191E78 + + thumb_func_start sub_0819213C +sub_0819213C: @ 0x0819213C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x20] + movs r5, #0 + movs r0, #0 + str r0, [sp, #0x28] + movs r1, #0 + str r1, [sp, #0x2c] + movs r2, #0 + str r2, [sp, #0x30] + movs r4, #0 + movs r0, #0x24 + bl sub_08000BDC + mov r8, r0 + ldr r0, _081921E4 + ldr r1, [r0] + ldr r3, [sp, #0x20] + lsls r0, r3, #2 + adds r0, r1, r0 + ldr r2, _081921E8 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + str r0, [sp, #0x24] + movs r0, #1 + ldr r3, [sp, #0x1c] + ands r0, r3 + cmp r0, #0 + beq _08192194 + movs r5, #8 + movs r4, #9 + str r4, [sp, #0x28] + movs r4, #2 +_08192194: + movs r0, #2 + ldr r2, [sp, #0x1c] + ands r0, r2 + cmp r0, #0 + beq _081921A4 + movs r3, #0x80 + lsls r3, r3, #1 + str r3, [sp, #0x2c] +_081921A4: + movs r0, #4 + ldr r2, [sp, #0x1c] + ands r0, r2 + cmp r0, #0 + beq _081921B2 + movs r3, #0xa0 + str r3, [sp, #0x30] +_081921B2: + movs r0, #8 + ldr r2, [sp, #0x1c] + ands r0, r2 + cmp r0, #0 + beq _081921C0 + ldr r3, _081921EC + str r3, [sp, #0x2c] +_081921C0: + movs r0, #0x10 + ldr r2, [sp, #0x1c] + ands r0, r2 + cmp r0, #0 + beq _081921D0 + movs r3, #0xa0 + rsbs r3, r3, #0 + str r3, [sp, #0x30] +_081921D0: + ldr r0, _081921F0 + ldr r2, [sp, #0x24] + cmp r2, r0 + bne _081921F4 + ldrb r0, [r1, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08192212 + .align 2, 0 +_081921E4: .4byte gUnknown_3005AF0 +_081921E8: .4byte 0x00000D24 +_081921EC: .4byte 0xFFFFFF00 +_081921F0: .4byte 0x000003FF +_081921F4: + ldr r0, _08192204 + ldr r3, [sp, #0x24] + cmp r3, r0 + bne _08192208 + bl sub_08195510 + b _0819220E + .align 2, 0 +_08192204: .4byte 0x000003FE +_08192208: + ldr r0, [sp, #0x24] + bl sub_081629A4 +_0819220E: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08192212: + ldr r2, [sp, #0x2c] + adds r2, #0x30 + ldr r3, [sp, #0x30] + adds r3, #0x40 + adds r1, r4, #0 + adds r1, #0xc + str r1, [sp] + ldr r1, _081922A0 + str r1, [sp, #4] + movs r1, #1 + bl sub_0818D5D8 + ldr r1, _081922A4 + ldr r1, [r1] + adds r1, r1, r5 + strb r0, [r1] + movs r0, #0x1e + ldr r4, [sp, #0x1c] + ands r0, r4 + cmp r0, #0 + beq _08192258 + ldr r2, _081922A8 + ldr r0, _081922A4 + ldr r0, [r0] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08192258: + movs r7, #0 + ldr r0, [sp, #0x20] + lsls r0, r0, #1 + str r0, [sp, #0x3c] + adds r1, r5, #2 + ldr r2, [sp, #0x28] + lsls r2, r2, #0x18 + str r2, [sp, #0x44] + ldr r3, [sp, #0x28] + adds r3, #4 + str r3, [sp, #0x40] + ldr r4, [sp, #0x20] + adds r0, r0, r4 + ldr r6, _081922A4 + ldr r2, _081922A8 + mov sl, r2 + adds r4, r1, #0 + lsls r5, r0, #1 + movs r3, #0 + mov sb, r3 +_08192280: + ldr r0, _081922AC + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _081922BC + ldr r0, _081922B0 + ldr r0, [r0] + ldr r2, _081922B4 + adds r0, r0, r2 + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _081922B8 + adds r1, r7, r1 + ldrb r2, [r1] + ldr r3, [sp, #0x2c] + orrs r2, r3 + b _0819230C + .align 2, 0 +_081922A0: .4byte 0x0000FFFF +_081922A4: .4byte gUnknown_203CA44 +_081922A8: .4byte gUnknown_20205AC +_081922AC: .4byte 0x000003FF +_081922B0: .4byte gUnknown_3005AF0 +_081922B4: .4byte 0x00000D64 +_081922B8: .4byte gUnknown_85D5DBC +_081922BC: + ldr r0, _081922DC + ldr r3, [sp, #0x24] + cmp r3, r0 + bne _081922EC + ldr r0, _081922E0 + ldr r0, [r0] + ldr r1, _081922E4 + adds r0, r0, r1 + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _081922E8 + adds r1, r7, r1 + ldrb r2, [r1] + ldr r3, [sp, #0x2c] + orrs r2, r3 + b _0819230C + .align 2, 0 +_081922DC: .4byte 0x000003FE +_081922E0: .4byte gUnknown_3005AF0 +_081922E4: .4byte 0x00000D64 +_081922E8: .4byte gUnknown_85D5DBC +_081922EC: + ldr r0, _081923C0 + ldr r0, [r0] + ldr r3, _081923C4 + adds r0, r0, r3 + adds r0, r0, r5 + ldrh r1, [r0] + ldr r0, _081923C8 + ldr r0, [r0] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _081923CC + adds r1, r7, r1 + ldrb r2, [r1] + ldr r1, [sp, #0x2c] + orrs r2, r1 +_0819230C: + ldr r1, _081923D0 + adds r1, r7, r1 + ldrb r3, [r1] + ldr r1, [sp, #0x30] + adds r3, r3, r1 + mov r1, sb + str r1, [sp] + str r1, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + ldr r1, _081923D4 + bl sub_080D2564 + ldr r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrb r1, [r0, #5] + movs r2, #0xd + rsbs r2, r2, #0 + ands r1, r2 + strb r1, [r0, #5] + movs r0, #0x1e + ldr r3, [sp, #0x1c] + ands r0, r3 + cmp r0, #0 + beq _08192366 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08192366: + adds r4, #1 + adds r5, #2 + adds r7, #1 + cmp r7, #2 + ble _08192280 + add r0, sp, #0xc + movs r2, #0 + movs r3, #2 + strb r3, [r0, #5] + strb r2, [r0, #6] + strb r2, [r0, #7] + adds r1, r0, #0 + adds r0, r2, #0 + strb r0, [r1, #8] + adds r0, r1, #0 + ldrb r0, [r0, #7] + strb r0, [r1, #9] + adds r0, r1, #0 + strb r3, [r0, #0xa] + strb r2, [r0, #0xb] + adds r3, r0, #0 + ldrb r2, [r3, #0xc] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + adds r2, r3, #0 + movs r0, #0xe0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + strb r1, [r2, #0xd] + adds r1, r2, #0 + movs r0, #0xd0 + strb r0, [r1, #0xd] + movs r7, #0 + ldr r0, _081923D8 + ldr r4, [sp, #0x24] + cmp r4, r0 + bne _081923E0 + ldr r0, _081923DC + adds r0, #0x3c + ldrb r5, [r0] + b _081923FE + .align 2, 0 +_081923C0: .4byte gUnknown_3005AF0 +_081923C4: .4byte 0x00000D64 +_081923C8: .4byte gUnknown_203B958 +_081923CC: .4byte gUnknown_85D5DBC +_081923D0: .4byte gUnknown_85D5DBF +_081923D4: .4byte sub_08190594 +_081923D8: .4byte 0x000003FF +_081923DC: .4byte gUnknown_82EFF52 +_081923E0: + ldr r0, _081923F0 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _081923F4 + bl sub_08195524 + b _081923FA + .align 2, 0 +_081923F0: .4byte 0x000003FE +_081923F4: + ldr r0, [sp, #0x24] + bl sub_08162ADC +_081923FA: + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081923FE: + ldr r2, _0819244C + movs r0, #0xb + adds r1, r5, #0 + muls r1, r0, r1 + adds r0, r7, r1 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _08192426 + ldr r3, _08192450 + adds r0, r1, r2 + adds r2, r7, r0 +_08192416: + adds r0, r7, r3 + ldrb r1, [r2] + strb r1, [r0] + adds r2, #1 + adds r7, #1 + ldrb r0, [r2] + cmp r0, #0xff + bne _08192416 +_08192426: + ldr r5, _08192450 + adds r1, r7, r5 + movs r0, #0 + strb r0, [r1] + adds r0, r7, #1 + adds r0, r0, r5 + movs r1, #0xff + strb r1, [r0] + ldr r0, _08192454 + ldr r2, [sp, #0x24] + cmp r2, r0 + bne _0819245C + ldr r0, _08192458 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088D8 + b _08192492 + .align 2, 0 +_0819244C: .4byte gUnknown_82E3564 +_08192450: .4byte gUnknown_2021C40 +_08192454: .4byte 0x000003FF +_08192458: .4byte gUnknown_3005AF0 +_0819245C: + ldr r0, _08192478 + ldr r3, [sp, #0x24] + cmp r3, r0 + bne _08192480 + ldr r4, _0819247C + adds r0, r4, #0 + bl sub_08195538 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088D8 + b _08192492 + .align 2, 0 +_08192478: .4byte 0x000003FE +_0819247C: .4byte gUnknown_2021C54 +_08192480: + ldr r4, _081924F4 + ldr r1, [sp, #0x24] + adds r0, r4, #0 + bl sub_08195498 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080088D8 +_08192492: + ldr r0, _081924F8 + str r0, [sp, #0xc] + add r0, sp, #0xc + movs r5, #0 + add r4, sp, #0x28 + ldrb r4, [r4] + strb r4, [r0, #4] + ldr r0, [sp, #0x44] + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + add r0, sp, #0xc + strb r5, [r0, #0xa] + movs r7, #0 + add r1, sp, #0xc + mov sb, r1 + ldr r2, [sp, #0x3c] + ldr r3, [sp, #0x20] + adds r0, r2, r3 + lsls r6, r0, #1 + ldr r4, _081924FC + mov sl, r4 +_081924D2: + ldr r0, _08192500 + adds r0, r7, r0 + ldrb r0, [r0] + mov r1, sb + strb r0, [r1, #9] + ldr r0, _08192504 + ldr r2, [sp, #0x24] + cmp r2, r0 + bne _08192510 + ldr r3, _08192508 + ldr r1, [r3] + lsls r0, r7, #1 + adds r0, r0, r6 + ldr r4, _0819250C + adds r1, r1, r4 + b _0819254A + .align 2, 0 +_081924F4: .4byte gUnknown_2021C54 +_081924F8: .4byte gUnknown_2021C40 +_081924FC: .4byte gUnknown_82EA31C +_08192500: .4byte gUnknown_85D5DC2 +_08192504: .4byte 0x000003FF +_08192508: .4byte gUnknown_3005AF0 +_0819250C: .4byte 0x00000D64 +_08192510: + ldr r0, _08192528 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _08192534 + ldr r2, _0819252C + ldr r1, [r2] + lsls r0, r7, #1 + adds r0, r0, r6 + ldr r3, _08192530 + adds r1, r1, r3 + b _0819254A + .align 2, 0 +_08192528: .4byte 0x000003FE +_0819252C: .4byte gUnknown_3005AF0 +_08192530: .4byte 0x00000D64 +_08192534: + ldr r4, _081925A4 + ldr r1, [r4] + lsls r0, r7, #1 + adds r0, r0, r6 + ldr r2, _081925A8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r1, [r1] + ldr r0, _081925AC + ldr r0, [r0] + lsls r1, r1, #4 +_0819254A: + adds r1, r1, r0 + ldrh r1, [r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sl + str r0, [sp, #0xc] + adds r5, r7, #1 + ldr r3, [sp, #0x28] + adds r4, r5, r3 + mov r0, sb + strb r4, [r0, #4] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + adds r7, r5, #0 + cmp r7, #2 + ble _081924D2 + ldr r4, [sp, #0x40] + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + ldr r0, _081925B0 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _081925B8 + ldr r0, _081925B4 + ldr r0, [r0, #0x40] + b _081925C2 + .align 2, 0 +_081925A4: .4byte gUnknown_3005AF0 +_081925A8: .4byte 0x00000D64 +_081925AC: .4byte gUnknown_203B958 +_081925B0: .4byte 0x000003FE +_081925B4: .4byte gUnknown_85D5C4C +_081925B8: + ldr r0, _08192628 + ldr r2, [sp, #0x20] + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r0, [r1] +_081925C2: + str r0, [sp, #0xc] + add r1, sp, #0xc + movs r0, #1 + strb r0, [r1, #5] + adds r0, r1, #0 + add r3, sp, #0x40 + ldrb r3, [r3] + strb r3, [r0, #4] + movs r1, #5 + strb r1, [r0, #7] + strb r1, [r0, #9] + movs r1, #0 + movs r2, #0 + bl sub_08004548 + movs r7, #0 + ldr r3, _0819262C +_081925E4: + movs r5, #0 + adds r4, r7, #1 + str r4, [sp, #0x38] + lsls r0, r7, #1 + str r0, [sp, #0x34] + lsls r2, r7, #4 +_081925F0: + movs r6, #0 + lsls r1, r5, #1 + mov sl, r1 + mov r4, r8 + mov sb, r2 +_081925FA: + ldr r0, _08192630 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _08192634 + lsls r0, r7, #0x18 + lsls r1, r5, #0x18 + lsrs r0, r0, #0x18 + lsrs r1, r1, #0x18 + str r2, [sp, #0x48] + str r3, [sp, #0x4c] + bl sub_081A4C50 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xc + adds r0, r6, r0 + ldr r3, [sp, #0x4c] + adds r0, r0, r3 + ldrh r1, [r4] + ldrb r0, [r0] + adds r1, r1, r0 + strh r1, [r4] + ldr r2, [sp, #0x48] + b _0819268C + .align 2, 0 +_08192628: .4byte gUnknown_85D5C4C +_0819262C: .4byte gUnknown_85D3DFC +_08192630: .4byte 0x000003FE +_08192634: + ldr r0, _08192648 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _08192654 + ldr r0, _0819264C + ldr r0, [r0] + ldr r1, _08192650 + adds r0, r0, r1 + add r0, sb + b _0819267C + .align 2, 0 +_08192648: .4byte 0x000003FF +_0819264C: .4byte gUnknown_3005AF0 +_08192650: .4byte 0x00000EFC +_08192654: + ldr r0, _0819273C + ldr r0, [r0] + mov ip, r0 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x20] + adds r0, r0, r1 + str r0, [sp, #0x50] + lsls r0, r0, #1 + ldr r1, [sp, #0x34] + adds r0, r1, r0 + ldr r1, _08192740 + add r1, ip + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _08192744 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + adds r0, #2 + add r0, sl +_0819267C: + ldrh r0, [r0] + lsls r0, r0, #4 + adds r0, r6, r0 + adds r0, r0, r3 + ldrh r1, [r4] + ldrb r0, [r0] + adds r1, r1, r0 + strh r1, [r4] +_0819268C: + adds r4, #2 + adds r6, #1 + cmp r6, #0xf + ble _081925FA + adds r2, #2 + adds r5, #1 + cmp r5, #3 + ble _081925F0 + ldr r7, [sp, #0x38] + cmp r7, #2 + ble _081925E4 + movs r7, #0 + ldr r2, _08192748 + mov sb, r2 + ldr r3, _0819274C + mov sl, r3 +_081926AC: + movs r4, #0 + movs r6, #0 + movs r5, #0 + mov r3, r8 + lsls r0, r7, #4 + mov r1, sl + adds r2, r0, r1 +_081926BA: + ldrb r0, [r2] + cmp r0, #0 + beq _081926D2 + adds r4, #1 + movs r1, #0 + ldrsh r0, [r3, r1] + cmp r0, #0 + beq _081926D2 + ldrb r1, [r2] + cmp r0, r1 + blt _081926D2 + adds r6, #1 +_081926D2: + adds r3, #2 + adds r2, #1 + adds r5, #1 + cmp r5, #0xf + ble _081926BA + cmp r4, r6 + beq _081926E6 + adds r7, #1 + cmp r7, #0x1e + bls _081926AC +_081926E6: + lsls r0, r7, #2 + add r0, sb + ldr r0, [r0] + str r0, [sp, #0xc] + add r0, sp, #0xc + movs r1, #0x15 + strb r1, [r0, #7] + strb r1, [r0, #9] + movs r1, #0 + movs r2, #0 + bl sub_08004548 + movs r1, #0 + mov r0, r8 + adds r0, #0x22 +_08192704: + strh r1, [r0] + subs r0, #2 + cmp r0, r8 + bge _08192704 + ldr r2, [sp, #0x24] + ldr r3, _08192750 + adds r0, r2, r3 + cmp r0, #1 + bls _08192718 + b _08192858 +_08192718: + movs r7, #0 + movs r4, #0 + mov sb, r4 +_0819271E: + movs r5, #0 + mov r4, r8 + mov r6, sb +_08192724: + ldr r0, _08192754 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _08192758 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r6, #0x18 + bl sub_081A4CE0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _08192768 + .align 2, 0 +_0819273C: .4byte gUnknown_3005AF0 +_08192740: .4byte 0x00000D64 +_08192744: .4byte gUnknown_203B958 +_08192748: .4byte gUnknown_85D5C90 +_0819274C: .4byte gUnknown_85D542C +_08192750: .4byte 0xFFFFFC02 +_08192754: .4byte 0x000003FE +_08192758: + ldr r0, _08192798 + ldr r0, [r0] + lsls r1, r7, #4 + adds r1, r5, r1 + ldr r2, _0819279C + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] +_08192768: + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #5 + ble _08192724 + mov r3, r8 + ldrh r0, [r3] + ldrh r4, [r3, #0xc] + adds r0, r0, r4 + strh r0, [r3, #0xc] + movs r5, #0 + mov r4, r8 +_08192780: + ldr r0, _081927A0 + ldr r1, [sp, #0x24] + cmp r1, r0 + bne _081927A4 + mov r2, sb + lsrs r0, r2, #0x18 + bl sub_081A4CA0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + b _081927B2 + .align 2, 0 +_08192798: .4byte gUnknown_3005AF0 +_0819279C: .4byte 0x00000F04 +_081927A0: .4byte 0x000003FE +_081927A4: + ldr r0, _081927DC + ldr r0, [r0] + lsls r1, r7, #4 + adds r0, r0, r1 + ldr r3, _081927E0 + adds r0, r0, r3 + ldrb r2, [r0] +_081927B2: + ldr r1, _081927E4 + lsls r0, r2, #2 + adds r0, r0, r2 + adds r0, r5, r0 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _081927E8 + movs r0, #2 + ldrsh r1, [r4, r0] + movs r0, #0x6e + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + ldrh r1, [r4, #0xe] + adds r1, r1, r0 + strh r1, [r4, #0xe] + b _08192810 + .align 2, 0 +_081927DC: .4byte gUnknown_3005AF0 +_081927E0: .4byte 0x00000F0A +_081927E4: .4byte gUnknown_82EF1A0 +_081927E8: + cmp r0, #0 + bge _08192808 + movs r2, #2 + ldrsh r1, [r4, r2] + movs r0, #0x5a + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + ldrh r1, [r4, #0xe] + adds r1, r1, r0 + strh r1, [r4, #0xe] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + b _08192810 +_08192808: + ldrh r0, [r4, #2] + ldrh r3, [r4, #0xe] + adds r0, r0, r3 + strh r0, [r4, #0xe] +_08192810: + adds r4, #2 + adds r5, #1 + cmp r5, #4 + ble _08192780 + movs r4, #0x80 + lsls r4, r4, #0x11 + add sb, r4 + adds r7, #1 + cmp r7, #2 + bgt _08192826 + b _0819271E +_08192826: + movs r5, #0 + mov r1, r8 + movs r7, #5 +_0819282C: + movs r2, #0xc + ldrsh r0, [r1, r2] + adds r5, r5, r0 + adds r1, #2 + subs r7, #1 + cmp r7, #0 + bge _0819282C + movs r6, #0x64 + mov r4, r8 + movs r7, #5 +_08192840: + movs r3, #0xc + ldrsh r0, [r4, r3] + muls r0, r6, r0 + adds r1, r5, #0 + bl __divsi3 + strh r0, [r4] + adds r4, #2 + subs r7, #1 + cmp r7, #0 + bge _08192840 + b _081929A4 +_08192858: + ldr r4, _08192928 + mov sl, r4 + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x20] + adds r0, r1, r2 + lsls r0, r0, #1 + mov sb, r0 + movs r7, #2 +_08192868: + ldr r3, _0819292C + ldr r0, [r3] + ldr r4, _08192930 + adds r0, r0, r4 + add r0, sb + ldrh r0, [r0] + mov r2, sl + ldr r1, [r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r2, [r0, #0xb] + movs r6, #0 + movs r4, #0 + movs r3, #1 + mov r1, r8 + movs r5, #5 +_08192888: + strh r4, [r1] + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08192894 + adds r6, #1 +_08192894: + asrs r2, r2, #1 + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bge _08192888 + movs r0, #0xff + lsls r0, r0, #1 + adds r1, r6, #0 + bl __divsi3 + adds r6, r0, #0 + ldr r3, _0819292C + ldr r0, [r3] + ldr r4, _08192930 + adds r0, r0, r4 + add r0, sb + ldrh r0, [r0] + mov r2, sl + ldr r1, [r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r2, [r0, #0xb] + movs r3, #1 + mov r1, r8 + movs r5, #5 +_081928C6: + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _081928D0 + strh r6, [r1] +_081928D0: + asrs r2, r2, #1 + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bge _081928C6 + mov r3, r8 + ldrh r0, [r3] + ldrh r4, [r3, #0xc] + adds r0, r0, r4 + strh r0, [r3, #0xc] + movs r5, #0 + mov r4, r8 +_081928E8: + ldr r1, _0819292C + ldr r0, [r1] + ldr r2, _08192930 + adds r0, r0, r2 + add r0, sb + ldrh r0, [r0] + mov r3, sl + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r2, [r0, #0xc] + lsls r0, r2, #2 + adds r0, r0, r2 + adds r0, r5, r0 + ldr r1, _08192934 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08192938 + movs r2, #2 + ldrsh r1, [r4, r2] + movs r0, #0x6e + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + ldrh r1, [r4, #0xe] + adds r1, r1, r0 + strh r1, [r4, #0xe] + b _08192960 + .align 2, 0 +_08192928: .4byte gUnknown_203B958 +_0819292C: .4byte gUnknown_3005AF0 +_08192930: .4byte 0x00000D64 +_08192934: .4byte gUnknown_82EF1A0 +_08192938: + cmp r0, #0 + bge _08192958 + movs r3, #2 + ldrsh r1, [r4, r3] + movs r0, #0x5a + muls r0, r1, r0 + movs r1, #0x64 + bl __divsi3 + ldrh r1, [r4, #0xe] + adds r1, r1, r0 + strh r1, [r4, #0xe] + ldrh r0, [r4, #0x1a] + adds r0, #1 + strh r0, [r4, #0x1a] + b _08192960 +_08192958: + ldrh r0, [r4, #2] + ldrh r1, [r4, #0xe] + adds r0, r0, r1 + strh r0, [r4, #0xe] +_08192960: + adds r4, #2 + adds r5, #1 + cmp r5, #4 + ble _081928E8 + movs r2, #2 + add sb, r2 + subs r7, #1 + cmp r7, #0 + blt _08192974 + b _08192868 +_08192974: + movs r5, #0 + mov r1, r8 + movs r7, #5 +_0819297A: + movs r3, #0xc + ldrsh r0, [r1, r3] + adds r5, r5, r0 + adds r1, #2 + subs r7, #1 + cmp r7, #0 + bge _0819297A + movs r6, #0x64 + mov r4, r8 + movs r7, #5 +_0819298E: + movs r1, #0xc + ldrsh r0, [r4, r1] + muls r0, r6, r0 + adds r1, r5, #0 + bl __divsi3 + strh r0, [r4] + adds r4, #2 + subs r7, #1 + cmp r7, #0 + bge _0819298E +_081929A4: + movs r7, #0 + movs r5, #0 + movs r6, #0 + mov r4, r8 + mov sl, r8 + mov sb, r8 +_081929B0: + movs r2, #0 + ldrsh r1, [r4, r2] + cmp r1, #0x1d + ble _08192A12 + cmp r7, #2 + bne _08192A08 + mov r3, r8 + movs r0, #0xc + ldrsh r3, [r3, r0] + mov ip, r3 + cmp ip, r1 + bge _081929FA + mov r2, r8 + ldrh r2, [r2, #0xe] + add r3, sp, #0x54 + strh r2, [r3] + mov r2, r8 + movs r3, #0xe + ldrsh r0, [r2, r3] + cmp r0, r1 + bge _081929EE + cmp ip, r0 + bge _081929E8 + add r0, sp, #0x54 + ldrh r0, [r0] + strh r0, [r2, #0xc] + strh r6, [r2, #0xe] + b _08192A12 +_081929E8: + mov r1, r8 + strh r6, [r1, #0xe] + b _08192A12 +_081929EE: + add r2, sp, #0x54 + ldrh r3, [r2] + mov r2, r8 + strh r3, [r2, #0xc] + strh r6, [r2, #0xe] + b _08192A12 +_081929FA: + mov r3, r8 + movs r2, #0xe + ldrsh r0, [r3, r2] + cmp r0, r1 + bge _08192A12 + strh r6, [r3, #0xe] + b _08192A12 +_08192A08: + mov r3, sb + strh r6, [r3, #0xc] + movs r0, #2 + add sb, r0 + adds r7, #1 +_08192A12: + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08192A98 + cmp r5, #2 + bne _08192A8E + movs r2, #0x18 + ldrsh r0, [r4, r2] + cmp r0, #1 + bgt _08192A4C + cmp r0, #1 + bne _08192A98 + mov r3, r8 + movs r1, #0x10 + ldrsh r0, [r3, r1] + lsls r0, r0, #1 + add r0, r8 + movs r2, #0x18 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _08192A56 + movs r1, #0x12 + ldrsh r0, [r3, r1] + lsls r0, r0, #1 + add r0, r8 + movs r2, #0x18 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _08192A56 +_08192A4C: + mov r3, r8 + ldrh r0, [r3, #0x12] + strh r0, [r3, #0x10] + strh r6, [r3, #0x12] + b _08192A98 +_08192A56: + movs r1, #0x18 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _08192A98 + mov r2, r8 + movs r3, #0x10 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + add r0, r8 + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08192A78 + ldrh r0, [r2, #0x12] + strh r0, [r2, #0x10] + strh r6, [r2, #0x12] + b _08192A98 +_08192A78: + mov r2, r8 + movs r3, #0x12 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + add r0, r8 + movs r1, #0x18 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08192A98 + strh r6, [r2, #0x12] + b _08192A98 +_08192A8E: + mov r2, sl + strh r6, [r2, #0x10] + movs r3, #2 + add sl, r3 + adds r5, #1 +_08192A98: + adds r4, #2 + adds r6, #1 + cmp r6, #5 + ble _081929B0 + cmp r7, #2 + bne _08192AC0 + ldr r0, _08192ABC + mov r4, r8 + movs r1, #0xc + ldrsh r2, [r4, r1] + adds r0, r2, r0 + movs r3, #0xe + ldrsh r1, [r4, r3] + subs r1, #1 + subs r1, r1, r2 + ldrb r0, [r0] + adds r7, r1, r0 + b _08192B06 + .align 2, 0 +_08192ABC: .4byte gUnknown_85D5DC5 +_08192AC0: + cmp r7, #1 + bne _08192AD0 + mov r4, r8 + movs r1, #0xc + ldrsh r0, [r4, r1] + adds r7, r0, #0 + adds r7, #0xf + b _08192B06 +_08192AD0: + cmp r5, #2 + bne _08192AF4 + ldr r0, _08192AF0 + mov r3, r8 + movs r4, #0x10 + ldrsh r2, [r3, r4] + adds r0, r2, r0 + movs r4, #0x12 + ldrsh r1, [r3, r4] + subs r1, #1 + subs r1, r1, r2 + ldrb r0, [r0] + adds r1, r1, r0 + adds r7, r1, #0 + adds r7, #0x15 + b _08192B06 + .align 2, 0 +_08192AF0: .4byte gUnknown_85D5DC5 +_08192AF4: + cmp r5, #1 + bne _08192B04 + mov r1, r8 + movs r2, #0x10 + ldrsh r0, [r1, r2] + adds r7, r0, #0 + adds r7, #0x24 + b _08192B06 +_08192B04: + movs r7, #0x2a +_08192B06: + lsls r0, r7, #2 + ldr r3, _08192B38 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [sp, #0xc] + add r0, sp, #0xc + movs r1, #0x25 + strb r1, [r0, #7] + strb r1, [r0, #9] + movs r1, #0 + movs r2, #0 + bl sub_08004548 + mov r0, r8 + bl sub_08000BF0 + add sp, #0x58 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08192B38: .4byte gUnknown_85D5D10 + thumb_func_end sub_0819213C + + thumb_func_start sub_08192B3C +sub_08192B3C: @ 0x08192B3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + str r1, [sp] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + str r0, [sp, #4] + mov r8, r0 + ldr r2, _08192BB0 + lsls r0, r7, #1 + adds r0, r0, r7 + adds r1, r0, r2 + ldrb r6, [r1] + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r6, r0 + adds r3, r2, #0 + cmp r6, r0 + bge _08192C08 + ldr r5, _08192BB4 + ldr r1, _08192BB8 + mov sl, r1 + ldr r2, _08192BBC + mov sb, r2 +_08192B76: + ldr r0, _08192BC0 + adds r0, r6, r0 + ldrb r4, [r0] + ldr r0, [r5] + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r2, _08192BC4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _08192BF2 + ldr r0, [sp] + add r0, r8 + strb r4, [r0] + ldr r2, [r5] + adds r0, r2, r1 + ldr r1, _08192BC8 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #0x16 + lsrs r0, r1, #0x16 + cmp r0, sl + bne _08192BD0 + ldr r0, _08192BCC + adds r1, r2, #0 + bl sub_080088B8 + b _08192BEC + .align 2, 0 +_08192BB0: .4byte gUnknown_85D5E40 +_08192BB4: .4byte gUnknown_3005AF0 +_08192BB8: .4byte 0x000003FF +_08192BBC: .4byte 0x000003FE +_08192BC0: .4byte gUnknown_85D5E30 +_08192BC4: .4byte 0x00000D25 +_08192BC8: .4byte 0x00000D24 +_08192BCC: .4byte gUnknown_2021C40 +_08192BD0: + lsrs r0, r1, #0x16 + cmp r0, sb + bne _08192BE4 + ldr r0, _08192BE0 + bl sub_08195538 + b _08192BEC + .align 2, 0 +_08192BE0: .4byte gUnknown_2021C40 +_08192BE4: + lsrs r1, r1, #0x16 + ldr r0, _08192C14 + bl sub_08195498 +_08192BEC: + movs r2, #1 + add r8, r2 + ldr r3, _08192C18 +_08192BF2: + adds r6, #1 + lsls r1, r7, #1 + adds r1, r1, r7 + adds r0, r1, r3 + ldrb r2, [r0] + adds r0, r3, #1 + adds r1, r1, r0 + ldrb r0, [r1] + adds r2, r2, r0 + cmp r6, r2 + blt _08192B76 +_08192C08: + mov r5, r8 + cmp r5, #2 + bne _08192C1C + movs r0, #0 + b _08192D6C + .align 2, 0 +_08192C14: .4byte gUnknown_2021C40 +_08192C18: .4byte gUnknown_85D5E40 +_08192C1C: + mov ip, r3 + lsls r3, r7, #1 + adds r0, r3, r7 + mov r2, ip + adds r1, r0, r2 + ldrb r6, [r1] + mov r1, ip + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r6, r0 + str r3, [sp, #8] + cmp r6, r0 + blt _08192C3A + b _08192D56 +_08192C3A: + ldr r5, _08192CD8 + mov sl, r5 + ldr r0, _08192CDC + mov sb, r0 +_08192C42: + ldr r0, _08192CE0 + adds r0, r6, r0 + ldrb r4, [r0] + mov r1, sl + ldr r0, [r1] + lsls r2, r4, #2 + str r2, [sp, #0xc] + adds r0, r0, r2 + add r0, sb + ldrb r2, [r0] + lsls r0, r2, #0x1d + cmp r0, #0 + bge _08192D30 + lsls r2, r2, #0x1b + adds r1, r3, r7 + mov r0, ip + adds r0, #2 + adds r1, r1, r0 + lsrs r2, r2, #0x1e + ldrb r1, [r1] + cmp r2, r1 + blo _08192D30 + ldr r0, [sp] + add r0, r8 + strb r4, [r0] + movs r5, #1 + add r8, r5 + mov r0, sl + ldr r3, [r0] + ldr r5, [sp, #0xc] + adds r2, r3, r5 + adds r0, r2, #0 + add r0, sb + ldrb r5, [r0] + mov ip, r5 + mov r0, ip + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + cmp r0, r1 + bne _08192CEC + lsls r4, r4, #1 + movs r1, #0xec + lsls r1, r1, #4 + adds r0, r3, r1 + adds r0, r0, r4 + ldrh r1, [r0] + lsls r1, r1, #3 + ldr r0, _08192CE4 + adds r1, r1, r0 + ldr r0, _08192CE8 + bl sub_080088B8 + mov r2, sl + ldr r1, [r2] + ldr r5, [sp, #0xc] + adds r0, r1, r5 + add r0, sb + ldrb r0, [r0] + lsls r2, r0, #0x18 + lsrs r0, r2, #0x1d + lsls r0, r0, #1 + str r0, [sp, #4] + movs r0, #0xec + lsls r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r0, [r1] + cmp r0, #0 + bne _08192D30 + lsrs r0, r2, #0x1d + cmp r0, #0 + bne _08192D30 + movs r1, #4 + str r1, [sp, #4] + b _08192D30 + .align 2, 0 +_08192CD8: .4byte gUnknown_3005AF0 +_08192CDC: .4byte 0x00000D25 +_08192CE0: .4byte gUnknown_85D5E30 +_08192CE4: .4byte gUnknown_82EACC4 +_08192CE8: .4byte gUnknown_2021C54 +_08192CEC: + ldr r5, _08192D04 + adds r0, r2, r5 + ldrh r0, [r0] + lsls r1, r0, #0x16 + ldr r0, _08192D08 + cmp r1, r0 + bne _08192D10 + ldr r0, _08192D0C + adds r1, r3, #0 + bl sub_080088B8 + b _08192D30 + .align 2, 0 +_08192D04: .4byte 0x00000D24 +_08192D08: .4byte 0xFFC00000 +_08192D0C: .4byte gUnknown_2021C40 +_08192D10: + ldr r0, _08192D20 + cmp r1, r0 + bne _08192D28 + ldr r0, _08192D24 + bl sub_08195538 + b _08192D30 + .align 2, 0 +_08192D20: .4byte 0xFF800000 +_08192D24: .4byte gUnknown_2021C40 +_08192D28: + lsrs r1, r1, #0x16 + ldr r0, _08192D60 + bl sub_08195498 +_08192D30: + mov r0, r8 + cmp r0, #2 + beq _08192D56 + adds r6, #1 + ldr r1, _08192D64 + mov ip, r1 + ldr r3, [sp, #8] + adds r1, r3, r7 + mov r2, ip + adds r0, r1, r2 + ldrb r2, [r0] + mov r0, ip + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + adds r2, r2, r0 + cmp r6, r2 + bge _08192D56 + b _08192C42 +_08192D56: + cmp r7, #0xe + beq _08192D68 + ldr r0, [sp, #4] + adds r0, #1 + b _08192D6C + .align 2, 0 +_08192D60: .4byte gUnknown_2021C40 +_08192D64: .4byte gUnknown_85D5E40 +_08192D68: + ldr r0, [sp, #4] + adds r0, #2 +_08192D6C: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08192B3C + + thumb_func_start sub_08192D7C +sub_08192D7C: @ 0x08192D7C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x34] + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r0, #0 + str r0, [sp, #0x3c] + movs r7, #0 + movs r1, #0 + str r1, [sp, #0x40] + movs r2, #0 + str r2, [sp, #0x44] + mov sb, r2 + movs r0, #1 + ldr r3, [sp, #0x34] + ands r0, r3 + cmp r0, #0 + beq _08192DB6 + movs r7, #8 + str r7, [sp, #0x3c] + movs r7, #9 + movs r0, #2 + mov sb, r0 +_08192DB6: + movs r0, #2 + ldr r1, [sp, #0x34] + ands r0, r1 + cmp r0, #0 + beq _08192DC6 + movs r2, #0x80 + lsls r2, r2, #1 + str r2, [sp, #0x40] +_08192DC6: + movs r0, #4 + ldr r3, [sp, #0x34] + ands r0, r3 + cmp r0, #0 + beq _08192DD4 + movs r0, #0xa0 + str r0, [sp, #0x44] +_08192DD4: + movs r0, #8 + ldr r1, [sp, #0x34] + ands r0, r1 + cmp r0, #0 + beq _08192DE2 + ldr r2, _08192EB4 + str r2, [sp, #0x40] +_08192DE2: + movs r0, #0x10 + ldr r3, [sp, #0x34] + ands r0, r3 + cmp r0, #0 + beq _08192DF2 + movs r0, #0xa0 + rsbs r0, r0, #0 + str r0, [sp, #0x44] +_08192DF2: + ldr r4, _08192EB8 + ldr r1, [r4] + adds r1, #0x11 + adds r0, r6, #0 + bl sub_08192B3C + str r0, [sp, #0x38] + movs r5, #0 + mov r1, sp + adds r1, #0x1c + str r1, [sp, #0x4c] + mov r2, sp + adds r2, #0x24 + str r2, [sp, #0x50] + lsls r1, r6, #1 + mov r3, sp + adds r3, #0x2c + str r3, [sp, #0x54] + ldr r0, [sp, #0x40] + adds r0, #0x30 + mov r8, r0 + ldr r2, [sp, #0x44] + adds r2, #0x58 + str r2, [sp, #0x7c] + movs r3, #0xc + add r3, sb + mov sl, r3 + ldr r0, [sp, #0x40] + adds r0, #0xc0 + str r0, [sp, #0x48] + mov r2, sb + adds r2, #0xd + str r2, [sp, #0x78] + ldr r3, [sp, #0x3c] + adds r3, #1 + mov sb, r3 + ldr r0, [sp, #0x3c] + adds r0, #2 + str r0, [sp, #0x58] + ldr r2, [sp, #0x3c] + adds r2, #5 + str r2, [sp, #0x60] + adds r3, r7, #0 + adds r3, #8 + str r3, [sp, #0x70] + adds r0, r7, #6 + str r0, [sp, #0x68] + adds r2, r7, #7 + str r2, [sp, #0x6c] + lsls r3, r6, #2 + str r3, [sp, #0x5c] + adds r0, r7, #5 + str r0, [sp, #0x64] + ldr r0, [r4] + adds r0, #0x11 + mov ip, r0 + ldr r0, _08192EBC + ldr r4, [r0] + ldr r0, _08192EC0 + movs r3, #0 + adds r1, r1, r6 + adds r1, r1, r0 + ldrb r6, [r1] +_08192E70: + ldr r1, [sp, #0x4c] + adds r2, r3, r1 + mov r7, ip + adds r0, r7, r5 + ldrb r0, [r0] + str r0, [r2] + ldr r7, [sp, #0x50] + adds r1, r3, r7 + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r7, _08192EC4 + adds r0, r0, r7 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + str r0, [r1] + ldr r0, [r2] + lsls r0, r0, #2 + adds r0, r4, r0 + ldr r1, _08192EC8 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1e + cmp r0, r6 + bhi _08192ECC + lsls r0, r1, #0x1d + cmp r0, #0 + bge _08192ECC + ldr r2, [sp, #0x54] + adds r1, r3, r2 + movs r0, #1 + b _08192ED2 + .align 2, 0 +_08192EB4: .4byte 0xFFFFFF00 +_08192EB8: .4byte gUnknown_203CA44 +_08192EBC: .4byte gUnknown_3005AF0 +_08192EC0: .4byte gUnknown_85D5E42 +_08192EC4: .4byte 0x00000D24 +_08192EC8: .4byte 0x00000D25 +_08192ECC: + ldr r7, [sp, #0x54] + adds r1, r3, r7 + movs r0, #0 +_08192ED2: + str r0, [r1] + adds r3, #4 + adds r5, #1 + cmp r5, #1 + ble _08192E70 + ldr r1, [sp, #0x24] + ldr r0, _08192EFC + cmp r1, r0 + bne _08192F04 + ldr r0, _08192F00 + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, r8 + ldr r3, [sp, #0x7c] + mov r1, sl + str r1, [sp] + b _08192F28 + .align 2, 0 +_08192EFC: .4byte 0x000003FF +_08192F00: .4byte gUnknown_3005AF0 +_08192F04: + ldr r0, _08192F10 + cmp r1, r0 + bne _08192F14 + bl sub_08195510 + b _08192F1C + .align 2, 0 +_08192F10: .4byte 0x000003FE +_08192F14: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_081629A4 +_08192F1C: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, r8 + ldr r3, [sp, #0x7c] + mov r7, sl + str r7, [sp] +_08192F28: + ldr r1, _08192FA4 + str r1, [sp, #4] + movs r1, #1 + bl sub_0818D5D8 + ldr r1, _08192FA8 + ldr r1, [r1] + ldr r2, [sp, #0x3c] + adds r1, r1, r2 + strb r0, [r1] + movs r0, #0x1e + ldr r3, [sp, #0x34] + ands r0, r3 + cmp r0, #0 + beq _08192F64 + ldr r2, _08192FAC + ldr r0, _08192FA8 + ldr r0, [r0] + ldr r7, [sp, #0x3c] + adds r0, r0, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08192F64: + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _08192F8A + ldr r2, _08192FAC + ldr r0, _08192FA8 + ldr r0, [r0] + ldr r1, [sp, #0x3c] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #5] + movs r1, #0xf + ands r1, r2 + movs r2, #0x30 + orrs r1, r2 + strb r1, [r0, #5] +_08192F8A: + ldr r2, [sp, #0x50] + ldr r1, [r2, #4] + ldr r0, _08192FB0 + cmp r1, r0 + bne _08192FB8 + ldr r0, _08192FB4 + ldr r0, [r0] + ldrb r0, [r0, #8] + bl sub_0806EA8C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _08192FE0 + .align 2, 0 +_08192FA4: .4byte 0x0000FFFF +_08192FA8: .4byte gUnknown_203CA44 +_08192FAC: .4byte gUnknown_20205AC +_08192FB0: .4byte 0x000003FF +_08192FB4: .4byte gUnknown_3005AF0 +_08192FB8: + ldr r0, _08192FD0 + cmp r1, r0 + bne _08192FD4 + bl sub_08195510 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x7c] + ldr r1, [sp, #0x78] + str r1, [sp] + b _08192FE8 + .align 2, 0 +_08192FD0: .4byte 0x000003FE +_08192FD4: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_081629A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_08192FE0: + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x7c] + ldr r7, [sp, #0x78] + str r7, [sp] +_08192FE8: + ldr r1, _0819307C + str r1, [sp, #4] + movs r1, #1 + bl sub_0818D5D8 + ldr r1, _08193080 + ldr r1, [r1] + add r1, sb + strb r0, [r1] + movs r0, #0x1e + ldr r1, [sp, #0x34] + ands r0, r1 + cmp r0, #0 + beq _08193020 + ldr r2, _08193084 + ldr r0, _08193080 + ldr r0, [r0] + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08193020: + ldr r2, [sp, #0x54] + ldr r0, [r2, #4] + cmp r0, #0 + beq _08193046 + ldr r2, _08193084 + ldr r0, _08193080 + ldr r0, [r0] + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #5] + movs r1, #0xf + ands r1, r2 + movs r2, #0x30 + orrs r1, r2 + strb r1, [r0, #5] +_08193046: + movs r5, #0 + ldr r3, [sp, #0x38] + lsls r3, r3, #2 + str r3, [sp, #0x74] + mov r8, r5 + ldr r6, _08193080 + ldr r7, _08193084 + ldr r4, [sp, #0x58] + mov sb, r5 + movs r0, #1 + mov sl, r0 +_0819305C: + ldr r1, [sp, #0x24] + ldr r0, _08193088 + cmp r1, r0 + bne _08193094 + ldr r0, _0819308C + ldr r2, [r0] + ldr r1, [sp, #0x1c] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _08193090 + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + b _081930E0 + .align 2, 0 +_0819307C: .4byte 0x0000FFFF +_08193080: .4byte gUnknown_203CA44 +_08193084: .4byte gUnknown_20205AC +_08193088: .4byte 0x000003FF +_0819308C: .4byte gUnknown_3005AF0 +_08193090: .4byte 0x00000D64 +_08193094: + ldr r0, _081930B4 + cmp r1, r0 + bne _081930C0 + ldr r0, _081930B8 + ldr r2, [r0] + ldr r1, [sp, #0x1c] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _081930BC + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + b _081930E0 + .align 2, 0 +_081930B4: .4byte 0x000003FE +_081930B8: .4byte gUnknown_3005AF0 +_081930BC: .4byte 0x00000D64 +_081930C0: + ldr r0, _081931B8 + ldr r2, [r0] + ldr r1, [sp, #0x1c] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _081931BC + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r1, [r2] + ldr r0, _081931C0 + ldr r0, [r0] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1] +_081930E0: + ldr r1, _081931C4 + adds r1, r5, r1 + ldrb r2, [r1] + ldr r3, [sp, #0x40] + orrs r2, r3 + ldr r1, _081931C8 + adds r1, r5, r1 + ldrb r3, [r1] + ldr r1, [sp, #0x44] + adds r3, r3, r1 + mov r1, r8 + str r1, [sp] + str r1, [sp, #4] + mov r1, sl + str r1, [sp, #8] + ldr r1, _081931CC + bl sub_080D2564 + ldr r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrb r1, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + strb r1, [r0, #5] + movs r0, #0x1e + ldr r1, [sp, #0x34] + ands r0, r1 + cmp r0, #0 + beq _08193146 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_08193146: + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _08193178 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + movs r2, #0x30 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r2, sl + strh r2, [r0, #0x34] +_08193178: + adds r4, #1 + movs r3, #2 + add sb, r3 + adds r5, #1 + cmp r5, #2 + bgt _08193186 + b _0819305C +_08193186: + movs r5, #0 + ldr r6, _081931D0 + ldr r7, _081931D4 + mov r8, r7 + ldr r4, [sp, #0x60] + mov sb, r5 + movs r7, #0 +_08193194: + ldr r0, [sp, #0x50] + ldr r1, [r0, #4] + ldr r0, _081931D8 + cmp r1, r0 + bne _081931DC + ldr r0, _081931B8 + ldr r2, [r0] + ldr r3, [sp, #0x4c] + ldr r1, [r3, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _081931BC + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + b _0819322A + .align 2, 0 +_081931B8: .4byte gUnknown_3005AF0 +_081931BC: .4byte 0x00000D64 +_081931C0: .4byte gUnknown_203B958 +_081931C4: .4byte gUnknown_85D5E24 +_081931C8: .4byte gUnknown_85D5E27 +_081931CC: .4byte sub_08190594 +_081931D0: .4byte gUnknown_203CA44 +_081931D4: .4byte gUnknown_20205AC +_081931D8: .4byte 0x000003FF +_081931DC: + ldr r0, _081931FC + cmp r1, r0 + bne _08193208 + ldr r0, _08193200 + ldr r2, [r0] + ldr r0, [sp, #0x4c] + ldr r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _08193204 + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + b _0819322A + .align 2, 0 +_081931FC: .4byte 0x000003FE +_08193200: .4byte gUnknown_3005AF0 +_08193204: .4byte 0x00000D64 +_08193208: + ldr r0, _0819335C + ldr r2, [r0] + ldr r0, [sp, #0x4c] + ldr r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + ldr r1, _08193360 + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r1, [r2] + ldr r0, _08193364 + ldr r0, [r0] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1] +_0819322A: + ldr r1, _08193368 + adds r1, r5, r1 + ldrb r2, [r1] + ldr r3, [sp, #0x40] + orrs r2, r3 + ldr r1, _0819336C + adds r1, r5, r1 + ldrb r3, [r1] + ldr r1, [sp, #0x44] + adds r3, r3, r1 + str r7, [sp] + str r7, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + ldr r1, _08193370 + bl sub_080D2564 + ldr r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r1, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r1, r2 + strb r1, [r0, #5] + movs r0, #0x1e + ldr r1, [sp, #0x34] + ands r0, r1 + cmp r0, #0 + beq _0819328E + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0819328E: + ldr r2, [sp, #0x54] + ldr r0, [r2, #4] + cmp r0, #0 + beq _081932C2 + ldr r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + movs r2, #0x30 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + movs r1, #1 + strh r1, [r0, #0x34] +_081932C2: + adds r4, #1 + movs r3, #2 + add sb, r3 + adds r5, #1 + cmp r5, #2 + bgt _081932D0 + b _08193194 +_081932D0: + add r0, sp, #0xc + movs r2, #0 + strb r2, [r0, #6] + adds r1, r0, #0 + movs r0, #2 + strb r0, [r1, #7] + adds r0, r1, #0 + ldrb r0, [r0, #6] + strb r0, [r1, #8] + adds r0, r1, #0 + ldrb r0, [r0, #7] + strb r0, [r1, #9] + adds r0, r1, #0 + strb r2, [r0, #0xa] + strb r2, [r0, #0xb] + adds r3, r0, #0 + ldrb r2, [r3, #0xc] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + adds r2, r3, #0 + movs r0, #0xe0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + strb r1, [r2, #0xd] + adds r1, r2, #0 + movs r0, #0xd0 + strb r0, [r1, #0xd] + ldr r4, _08193374 + ldr r0, _08193378 + ldr r7, [sp, #0x74] + adds r0, r7, r0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + str r4, [sp, #0xc] + add r0, sp, #0xc + add r1, sp, #0x70 + ldrb r1, [r1] + strb r1, [r0, #4] + adds r1, r0, #0 + movs r0, #1 + strb r0, [r1, #5] + ldr r4, [sp, #0x70] + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + ldr r1, [sp, #0x24] + ldr r0, _0819337C + cmp r1, r0 + bne _08193384 + ldr r0, _08193380 + ldr r1, _0819335C + ldr r1, [r1] + bl sub_080088B8 + b _081933A6 + .align 2, 0 +_0819335C: .4byte gUnknown_3005AF0 +_08193360: .4byte 0x00000D64 +_08193364: .4byte gUnknown_203B958 +_08193368: .4byte gUnknown_85D5E2A +_0819336C: .4byte gUnknown_85D5E2D +_08193370: .4byte sub_08190594 +_08193374: .4byte gUnknown_2021C7C +_08193378: .4byte gUnknown_85D5E08 +_0819337C: .4byte 0x000003FF +_08193380: .4byte gUnknown_2021C40 +_08193384: + ldr r0, _08193394 + cmp r1, r0 + bne _0819339C + ldr r0, _08193398 + bl sub_08195538 + b _081933A6 + .align 2, 0 +_08193394: .4byte 0x000003FE +_08193398: .4byte gUnknown_2021C40 +_0819339C: + ldr r0, _081933E8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_08195498 +_081933A6: + add r0, sp, #0xc + movs r1, #2 + strb r1, [r0, #5] + strb r1, [r0, #0xa] + ldr r5, _081933E8 + str r5, [sp, #0xc] + add r2, sp, #0x68 + ldrb r2, [r2] + strb r2, [r0, #4] + ldr r4, [sp, #0x68] + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + ldr r3, [sp, #0x50] + ldr r1, [r3, #4] + ldr r0, _081933EC + cmp r1, r0 + bne _081933F4 + ldr r0, _081933F0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + b _08193412 + .align 2, 0 +_081933E8: .4byte gUnknown_2021C40 +_081933EC: .4byte 0x000003FF +_081933F0: .4byte gUnknown_3005AF0 +_081933F4: + ldr r0, _08193404 + cmp r1, r0 + bne _08193408 + adds r0, r5, #0 + bl sub_08195538 + b _08193412 + .align 2, 0 +_08193404: .4byte 0x000003FE +_08193408: + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + bl sub_08195498 +_08193412: + ldr r0, _0819347C + str r0, [sp, #0xc] + add r0, sp, #0xc + movs r5, #0 + add r7, sp, #0x6c + ldrb r7, [r7] + strb r7, [r0, #4] + ldr r4, [sp, #0x6c] + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + add r0, sp, #0xc + strb r5, [r0, #0xa] + ldr r0, _08193480 + ldr r1, [sp, #0x5c] + adds r0, r1, r0 + ldr r0, [r0] + str r0, [sp, #0xc] + add r0, sp, #0xc + add r2, sp, #0x64 + ldrb r2, [r2] + strb r2, [r0, #4] + ldr r4, [sp, #0x64] + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + add r0, sp, #0xc + movs r1, #0 + movs r2, #0 + bl sub_08004548 + add sp, #0x80 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819347C: .4byte gUnknown_2021C40 +_08193480: .4byte gUnknown_85D5DCC + thumb_func_end sub_08192D7C + + thumb_func_start sub_08193484 +sub_08193484: @ 0x08193484 + push {lr} + ldr r0, _081934B4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081934B8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + strh r2, [r1, #0xa] + movs r0, #2 + strh r0, [r1, #0xc] + strh r2, [r1, #0x10] + ldr r0, _081934BC + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081934B4: .4byte sub_08193E00 +_081934B8: .4byte gUnknown_3005B60 +_081934BC: .4byte sub_08194754 + thumb_func_end sub_08193484 + + thumb_func_start sub_081934C0 +sub_081934C0: @ 0x081934C0 + push {r4, lr} + bl sub_08194948 + ldr r4, _08193520 + ldr r2, [r4] + ldr r1, _08193524 + adds r0, r2, r1 + ldrb r1, [r0] + subs r1, #1 + ldr r0, _08193528 + adds r2, r2, r0 + movs r0, #3 + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4] + ldr r1, _0819352C + adds r0, r0, r1 + movs r4, #0 + movs r1, #3 + strh r1, [r0] + ldr r0, _08193530 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08193534 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + strh r4, [r1, #0xa] + movs r0, #2 + strh r0, [r1, #0xc] + movs r0, #1 + strh r0, [r1, #0x10] + ldr r0, _08193538 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08193520: .4byte gUnknown_3005AF0 +_08193524: .4byte 0x00000D0A +_08193528: .4byte 0x00000CA9 +_0819352C: .4byte 0x00000CB2 +_08193530: .4byte sub_08193E00 +_08193534: .4byte gUnknown_3005B60 +_08193538: .4byte sub_08194754 + thumb_func_end sub_081934C0 + + thumb_func_start sub_0819353C +sub_0819353C: @ 0x0819353C + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _08193568 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0xa + ldrsh r7, [r0, r2] + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #7 + bls _0819355E + b _081937A2 +_0819355E: + lsls r0, r0, #2 + ldr r1, _0819356C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08193568: .4byte gUnknown_3005B60 +_0819356C: .4byte _08193570 +_08193570: @ jump table + .4byte _08193590 @ case 0 + .4byte _081935E0 @ case 1 + .4byte _08193600 @ case 2 + .4byte _08193688 @ case 3 + .4byte _081937A2 @ case 4 + .4byte _08193700 @ case 5 + .4byte _081937A2 @ case 6 + .4byte _08193764 @ case 7 +_08193590: + ldr r0, _081935D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _081935A2 + b _081937A2 +_081935A2: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _081935D8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + lsls r0, r7, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + ldr r1, _081935DC + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + b _081937A2 + .align 2, 0 +_081935D4: .4byte gUnknown_2037C74 +_081935D8: .4byte gUnknown_3005B60 +_081935DC: .4byte gUnknown_20205AC +_081935E0: + ldr r0, _081935FC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081935EE + b _081937A2 +_081935EE: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #2 + strh r1, [r0, #8] + b _081937A2 + .align 2, 0 +_081935FC: .4byte gUnknown_2037C74 +_08193600: + adds r0, r5, #0 + bl sub_081937BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08193610 + b _081937A2 +_08193610: + cmp r0, #1 + ble _0819361C + cmp r0, #2 + beq _08193640 + cmp r0, #3 + beq _08193664 +_0819361C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _0819363C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #7 + strh r1, [r0, #8] + b _081937A2 + .align 2, 0 +_0819363C: .4byte gUnknown_3005B60 +_08193640: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08193660 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #3 + strh r1, [r0, #8] + b _081937A2 + .align 2, 0 +_08193660: .4byte gUnknown_3005B60 +_08193664: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08193684 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #5 + strh r1, [r0, #8] + b _081937A2 + .align 2, 0 +_08193684: .4byte gUnknown_3005B60 +_08193688: + ldr r0, _081936E8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0819369A + b _081937A2 +_0819369A: + bl sub_080034D4 + bl sub_080B9710 + ldr r4, _081936EC + ldr r0, [r4] + bl sub_08000BF0 + str r6, [r4] + ldr r0, _081936F0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _081936F4 + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r3, #0 + strh r6, [r1, #8] + ldr r0, _081936F8 + adds r0, r7, r0 + ldrb r0, [r0] + strh r0, [r1, #0xa] + movs r0, #1 + strh r0, [r1, #0xc] + strh r5, [r1, #0xe] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #4 + strh r1, [r0, #8] + ldr r0, _081936FC + ldr r0, [r0] + strb r3, [r0, #0x10] + b _081937A2 + .align 2, 0 +_081936E8: .4byte gUnknown_2037C74 +_081936EC: .4byte gUnknown_203CA48 +_081936F0: .4byte sub_0819005C +_081936F4: .4byte gUnknown_3005B60 +_081936F8: .4byte gUnknown_85D5AFC +_081936FC: .4byte gUnknown_203CA44 +_08193700: + ldr r0, _08193754 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _081937A2 + bl sub_080034D4 + bl sub_080B9710 + ldr r4, _08193758 + ldr r0, [r4] + bl sub_08000BF0 + str r6, [r4] + ldr r0, _0819375C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _08193760 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r6, [r0, #8] + adds r1, r7, #0 + subs r1, #0x10 + strh r1, [r0, #0xa] + movs r1, #2 + strh r1, [r0, #0xc] + strh r5, [r0, #0xe] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #6 + strh r1, [r0, #8] + b _081937A2 + .align 2, 0 +_08193754: .4byte gUnknown_2037C74 +_08193758: .4byte gUnknown_203CA48 +_0819375C: .4byte sub_0819005C +_08193760: .4byte gUnknown_3005B60 +_08193764: + ldr r0, _081937AC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _081937A2 + bl sub_080034D4 + bl sub_080B9710 + ldr r4, _081937B0 + ldr r0, [r4] + bl sub_08000BF0 + str r6, [r4] + ldr r0, _081937B4 + bl sub_08000540 + ldr r1, _081937B8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #0x16] + bl sub_080A8964 + adds r0, r5, #0 + bl sub_080A8964 +_081937A2: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081937AC: .4byte gUnknown_2037C74 +_081937B0: .4byte gUnknown_203CA48 +_081937B4: .4byte sub_08085B34 +_081937B8: .4byte gUnknown_3005B60 + thumb_func_end sub_0819353C + + thumb_func_start sub_081937BC +sub_081937BC: @ 0x081937BC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #1 + mov sb, r0 + movs r1, #4 + mov r8, r1 + ldr r1, _0819380C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xa + ldrsh r5, [r0, r1] + ldr r0, _08193810 + ldr r0, [r0] + ldr r1, _08193814 + adds r0, r0, r1 + ldrh r6, [r0] + ldr r0, _08193818 + ldrh r1, [r0, #0x2e] + adds r2, r1, #0 + adds r3, r0, #0 + cmp r2, #2 + beq _08193800 + mov r0, sb + ands r0, r1 + cmp r0, #0 + beq _08193838 + cmp r5, #0x1f + bne _0819381C +_08193800: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + mov sb, r0 + b _081938BE + .align 2, 0 +_0819380C: .4byte gUnknown_3005B60 +_08193810: .4byte gUnknown_3005AF0 +_08193814: .4byte 0x00000CB2 +_08193818: .4byte gUnknown_3002360 +_0819381C: + cmp r5, #0xf + bgt _0819382C + movs r0, #5 + bl sub_080A306C + movs r1, #2 + mov sb, r1 + b _081938BE +_0819382C: + movs r0, #5 + bl sub_080A306C + movs r0, #3 + mov sb, r0 + b _081938BE +_08193838: + cmp r2, #0x40 + bne _08193858 + ldr r0, _08193854 + lsls r1, r5, #2 + adds r1, r1, r5 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _08193858 + movs r1, #0 + mov r8, r1 + b _081938BE + .align 2, 0 +_08193854: .4byte gUnknown_85D5695 +_08193858: + ldrh r0, [r3, #0x2e] + cmp r0, #0x80 + bne _0819387C + ldr r0, _08193878 + lsls r1, r5, #2 + adds r1, r1, r5 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _0819387C + movs r0, #1 + b _081938BC + .align 2, 0 +_08193878: .4byte gUnknown_85D5695 +_0819387C: + ldrh r0, [r3, #0x2e] + cmp r0, #0x20 + bne _081938A0 + ldr r0, _0819389C + lsls r1, r5, #2 + adds r1, r1, r5 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r0, #2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _081938A0 + movs r1, #2 + mov r8, r1 + b _081938BE + .align 2, 0 +_0819389C: .4byte gUnknown_85D5695 +_081938A0: + ldrh r0, [r3, #0x2e] + cmp r0, #0x10 + bne _081938BE + ldr r0, _08193914 + lsls r1, r5, #2 + adds r1, r1, r5 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _081938BE + movs r0, #3 +_081938BC: + mov r8, r0 +_081938BE: + mov r1, r8 + cmp r1, #4 + beq _08193906 + movs r0, #5 + bl sub_080A306C + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + ldr r4, _08193918 + adds r0, r0, r4 + movs r1, #0 + bl sub_08007EC0 + ldr r2, _08193914 + lsls r1, r6, #2 + add r1, r8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r5, [r1] + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r1, _0819391C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0xa] +_08193906: + mov r0, sb + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08193914: .4byte gUnknown_85D5695 +_08193918: .4byte gUnknown_20205AC +_0819391C: .4byte gUnknown_3005B60 + thumb_func_end sub_081937BC + + thumb_func_start sub_08193920 +sub_08193920: @ 0x08193920 + push {lr} + ldr r0, _08193950 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08193954 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r2, #0 + strh r2, [r1, #8] + movs r0, #1 + strh r0, [r1, #0xa] + movs r0, #2 + strh r0, [r1, #0xc] + strh r2, [r1, #0x10] + ldr r0, _08193958 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_08193950: .4byte sub_08193E00 +_08193954: .4byte gUnknown_3005B60 +_08193958: .4byte sub_08194754 + thumb_func_end sub_08193920 + + thumb_func_start sub_0819395C +sub_0819395C: @ 0x0819395C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r7, _081939D8 + ldrh r0, [r7] + cmp r0, #1 + bne _081939F0 + ldr r5, _081939DC + ldrh r0, [r5] + bl sub_08194F58 + ldr r4, _081939E0 + ldr r2, [r4] + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r6, _081939E4 + adds r2, r2, r6 + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r5] + bl sub_08194F58 + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r1, r0 + ldr r2, _081939E8 + mov r8, r2 + add r1, r8 + adds r0, r0, r6 + movs r3, #3 + ldrb r2, [r1] + ands r2, r3 + lsls r2, r2, #3 + ldrb r3, [r0] + movs r1, #0x19 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0] + ldrh r0, [r5] + bl sub_08194F58 + ldr r2, [r4] + lsls r0, r0, #1 + movs r3, #0xec + lsls r3, r3, #4 + adds r1, r2, r3 + adds r1, r1, r0 + ldr r0, _081939EC + ldrh r0, [r0, #0x22] + strh r0, [r1] + add r2, r8 + ldrh r0, [r2] + cmp r0, #2 + bhi _08193A8E + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08195038 + b _08193A8E + .align 2, 0 +_081939D8: .4byte gUnknown_2037282 +_081939DC: .4byte gUnknown_203886A +_081939E0: .4byte gUnknown_3005AF0 +_081939E4: .4byte 0x00000D25 +_081939E8: .4byte 0x00000CB2 +_081939EC: .4byte gUnknown_3005A70 +_081939F0: + ldr r5, _08193A98 + adds r0, r5, #0 + bl sub_08194F58 + ldr r4, _08193A9C + ldr r2, [r4] + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r6, _08193AA0 + adds r2, r2, r6 + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_08194F58 + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r1, r0 + ldr r2, _08193AA4 + adds r1, r1, r2 + adds r0, r0, r6 + movs r3, #3 + ldrb r2, [r1] + ands r2, r3 + lsls r2, r2, #3 + ldrb r3, [r0] + movs r1, #0x19 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #0 + bl sub_08194F58 + ldr r1, [r4] + lsls r0, r0, #1 + movs r3, #0xec + lsls r3, r3, #4 + adds r1, r1, r3 + adds r1, r1, r0 + ldr r0, _08193AA8 + ldrh r0, [r0, #0x24] + strh r0, [r1] + ldr r0, _08193AAC + ldrb r0, [r0] + cmp r0, #9 + beq _08193A58 + ldrh r0, [r7] + cmp r0, #9 + bne _08193A72 +_08193A58: + adds r0, r5, #0 + bl sub_08194F58 + ldr r2, [r4] + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, r2, r6 + ldrb r1, [r2] + movs r0, #0x1f + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r2] +_08193A72: + ldr r0, _08193A9C + ldr r0, [r0] + ldr r1, _08193AA4 + adds r0, r0, r1 + ldrh r4, [r0] + cmp r4, #3 + bgt _08193A8E +_08193A80: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_08195038 + adds r4, #1 + cmp r4, #3 + ble _08193A80 +_08193A8E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08193A98: .4byte 0x000003FF +_08193A9C: .4byte gUnknown_3005AF0 +_08193AA0: .4byte 0x00000D25 +_08193AA4: .4byte 0x00000CB2 +_08193AA8: .4byte gUnknown_3005A70 +_08193AAC: .4byte gUnknown_2023FDE + thumb_func_end sub_0819395C + + thumb_func_start sub_08193AB0 +sub_08193AB0: @ 0x08193AB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x84 + str r0, [sp, #0x48] + str r1, [sp, #0x4c] + lsls r4, r2, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + str r0, [sp, #0x54] + movs r1, #0 + str r1, [sp, #0x58] + bl sub_08165A4C + movs r2, #0 + str r2, [sp, #0x50] + add r3, sp, #0x30 + mov sl, r3 + ldr r5, [sp, #0x4c] + lsls r5, r5, #1 + str r5, [sp, #0x70] + subs r4, #1 + str r4, [sp, #0x78] +_08193AE2: + movs r0, #0 + mov sb, r0 + ldr r1, [sp, #0x50] + lsls r1, r1, #2 + str r1, [sp, #0x74] + ldr r2, [sp, #0x48] + lsls r2, r2, #2 + str r2, [sp, #0x6c] + ldr r3, [sp, #0x50] + adds r3, #1 + str r3, [sp, #0x60] +_08193AF8: + ldr r4, [sp, #0x74] + add r4, sb + lsls r0, r4, #2 + mov r5, sp + adds r1, r5, r0 + movs r0, #0 + str r0, [r1] + ldr r0, _08193B34 + ldr r3, [r0] + ldr r1, [sp, #0x6c] + adds r0, r3, r1 + ldr r2, _08193B38 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + ldr r1, _08193B3C + cmp r0, r1 + bne _08193B40 + ldr r3, [sp, #0x50] + lsls r0, r3, #0x18 + mov r5, sb + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A4C50 + lsls r1, r4, #1 + add r1, sl + strh r0, [r1] + b _08193B6C + .align 2, 0 +_08193B34: .4byte gUnknown_3005AF0 +_08193B38: .4byte 0x00000D24 +_08193B3C: .4byte 0xFF800000 +_08193B40: + lsls r2, r4, #1 + add r2, sl + ldr r1, [sp, #0x48] + lsls r0, r1, #1 + adds r0, r0, r1 + ldr r4, [sp, #0x50] + adds r0, r0, r4 + lsls r0, r0, #1 + ldr r5, _08193B8C + adds r1, r3, r5 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _08193B90 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + mov r3, sb + lsls r1, r3, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2] +_08193B6C: + ldr r0, _08193B94 + ldr r1, [sp, #0x74] + add r1, sb + lsls r1, r1, #1 + add r1, sl + ldrh r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r6, [r1, #1] + cmp r6, #0 + bne _08193B98 + movs r6, #0x28 + b _08193BB0 + .align 2, 0 +_08193B8C: .4byte 0x00000D64 +_08193B90: .4byte gUnknown_203B958 +_08193B94: .4byte gUnknown_82ED220 +_08193B98: + cmp r6, #1 + bne _08193BA0 + movs r6, #0x3c + b _08193BB0 +_08193BA0: + adds r1, r2, #0 + cmp r1, #0x78 + beq _08193BAA + cmp r1, #0x99 + bne _08193BB0 +_08193BAA: + lsrs r0, r6, #0x1f + adds r0, r6, r0 + asrs r6, r0, #1 +_08193BB0: + movs r1, #0 + mov r4, sb + adds r4, #1 + str r4, [sp, #0x64] + ldr r5, [sp, #0x70] + ldr r2, [sp, #0x4c] + adds r0, r5, r2 + lsls r0, r0, #1 + str r0, [sp, #0x5c] +_08193BC2: + lsls r7, r1, #1 + adds r1, #1 + str r1, [sp, #0x68] + ldr r3, [sp, #0x5c] + adds r3, r3, r7 + mov r8, r3 +_08193BCE: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r5, r4, #0x10 + lsls r0, r0, #0x10 + orrs r5, r0 + ldr r2, _08193C38 + ldr r0, [r2] + ldr r4, _08193C3C + adds r0, r0, r4 + add r0, r8 + ldrh r4, [r0] + ldr r3, _08193C40 + ldr r0, [r3] + lsls r4, r4, #4 + adds r4, r4, r0 + adds r0, r5, #0 + str r2, [sp, #0x7c] + str r3, [sp, #0x80] + bl sub_0806CB4C + ldrb r1, [r4, #0xc] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #0x7c] + ldr r3, [sp, #0x80] + cmp r1, r0 + bne _08193BCE + ldr r0, [r2] + ldr r2, [sp, #0x5c] + adds r1, r7, r2 + ldr r4, _08193C3C + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #1 + ands r5, r0 + cmp r5, #0 + beq _08193C48 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _08193C44 + adds r0, r0, r5 + ldrb r2, [r0, #0x17] + b _08193C54 + .align 2, 0 +_08193C38: .4byte gUnknown_3005AF0 +_08193C3C: .4byte 0x00000D64 +_08193C40: .4byte gUnknown_203B958 +_08193C44: .4byte gUnknown_82F0D54 +_08193C48: + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _08193C78 + adds r0, r0, r2 + ldrb r2, [r0, #0x16] +_08193C54: + ldr r4, [sp, #0x74] + add r4, sb + lsls r0, r4, #1 + add r0, sl + ldrh r0, [r0] + bl sub_080473FC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #6 + ands r0, r5 + cmp r0, #6 + bne _08193C7C + lsls r0, r4, #2 + mov r3, sp + adds r1, r3, r0 + b _08193CB8 + .align 2, 0 +_08193C78: .4byte gUnknown_82F0D54 +_08193C7C: + movs r0, #0x29 + ands r0, r5 + cmp r0, #0 + bne _08193CBE + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _08193C96 + lsls r0, r4, #2 + mov r5, sp + adds r2, r5, r0 + lsls r1, r6, #1 + b _08193CAA +_08193C96: + movs r0, #4 + ands r5, r0 + cmp r5, #0 + beq _08193CB2 + lsls r0, r4, #2 + mov r1, sp + adds r2, r1, r0 + lsrs r1, r6, #0x1f + adds r1, r6, r1 + asrs r1, r1, #1 +_08193CAA: + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] + b _08193CBE +_08193CB2: + lsls r0, r4, #2 + mov r2, sp + adds r1, r2, r0 +_08193CB8: + ldr r0, [r1] + adds r0, r0, r6 + str r0, [r1] +_08193CBE: + ldr r1, [sp, #0x68] + cmp r1, #2 + bgt _08193CC6 + b _08193BC2 +_08193CC6: + ldr r2, [sp, #0x74] + add r2, sb + lsls r0, r2, #2 + add r0, sp + ldr r1, [r0] + ldr r3, [sp, #0x54] + cmp r3, r1 + bge _08193CE4 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x58] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x54] + b _08193D02 +_08193CE4: + ldr r4, [sp, #0x54] + cmp r4, r1 + bne _08193D02 + ldr r5, [sp, #0x58] + lsls r0, r5, #1 + add r0, sl + lsls r1, r2, #1 + add r1, sl + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bhs _08193D02 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x58] +_08193D02: + ldr r0, [sp, #0x64] + mov sb, r0 + cmp r0, #3 + bgt _08193D0C + b _08193AF8 +_08193D0C: + ldr r1, [sp, #0x60] + str r1, [sp, #0x50] + cmp r1, #2 + bgt _08193D16 + b _08193AE2 +_08193D16: + ldr r2, [sp, #0x58] + mov sb, r2 + b _08193D62 +_08193D1C: + movs r3, #0 + mov sb, r3 + movs r1, #0 + mov r4, sl + mov r3, sl + mov r2, sp +_08193D28: + ldr r0, [r2] + ldr r5, [sp, #0x54] + cmp r5, r0 + bge _08193D3A + mov sb, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x54] + b _08193D50 +_08193D3A: + ldr r5, [sp, #0x54] + cmp r5, r0 + bne _08193D50 + mov r5, sb + lsls r0, r5, #1 + adds r0, r4, r0 + ldrh r0, [r0] + ldrh r5, [r3] + cmp r0, r5 + bhs _08193D50 + mov sb, r1 +_08193D50: + adds r3, #2 + adds r2, #4 + adds r1, #1 + cmp r1, #0xb + ble _08193D28 + ldr r0, [sp, #0x50] + ldr r1, [sp, #0x78] + cmp r0, r1 + beq _08193DD4 +_08193D62: + movs r2, #0 + str r2, [sp, #0x50] + mov r3, sb + lsls r7, r3, #2 + ldr r4, [sp, #0x78] + cmp r2, r4 + bge _08193DAA + lsls r0, r3, #1 + mov r5, sl + adds r6, r5, r0 + ldr r0, [sp, #0x48] + lsls r5, r0, #0x18 +_08193D7A: + ldr r0, _08193DFC + ldr r4, [r0] + ldr r2, [sp, #0x50] + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r5, #0x18 + bl sub_08194FE8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + movs r3, #0xec + lsls r3, r3, #4 + adds r4, r4, r3 + adds r4, r4, r0 + ldrh r0, [r4] + ldrh r4, [r6] + cmp r0, r4 + beq _08193DAA + ldr r0, [sp, #0x50] + adds r0, #1 + str r0, [sp, #0x50] + ldr r1, [sp, #0x78] + cmp r0, r1 + blt _08193D7A +_08193DAA: + ldr r2, [sp, #0x50] + ldr r3, [sp, #0x78] + cmp r2, r3 + beq _08193DD4 + mov r4, sp + adds r1, r4, r7 + movs r0, #0 + str r0, [r1] + movs r5, #0 + str r5, [sp, #0x54] + mov sb, r5 + mov r2, sp + movs r1, #0xb +_08193DC4: + ldm r2!, {r0} + add sb, r0 + subs r1, #1 + cmp r1, #0 + bge _08193DC4 + mov r0, sb + cmp r0, #0 + bne _08193D1C +_08193DD4: + mov r1, sb + lsls r0, r1, #2 + add r0, sp + ldr r0, [r0] + cmp r0, #0 + bne _08193DE4 + ldr r2, [sp, #0x58] + mov sb, r2 +_08193DE4: + mov r3, sb + lsls r0, r3, #1 + add r0, sl + ldrh r0, [r0] + add sp, #0x84 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08193DFC: .4byte gUnknown_3005AF0 + thumb_func_end sub_08193AB0 + + thumb_func_start sub_08193E00 +sub_08193E00: @ 0x08193E00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _08193E3C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #0xa + ldrsh r1, [r0, r2] + mov sl, r1 + movs r3, #0xc + ldrsh r4, [r0, r3] + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #5 + bls _08193E30 + b _08194466 +_08193E30: + lsls r0, r0, #2 + ldr r1, _08193E40 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08193E3C: .4byte gUnknown_3005B60 +_08193E40: .4byte _08193E44 +_08193E44: @ jump table + .4byte _08193E5C @ case 0 + .4byte _08193EFC @ case 1 + .4byte _08193F6C @ case 2 + .4byte _0819405C @ case 3 + .4byte _081940B0 @ case 4 + .4byte _0819436C @ case 5 +_08193E5C: + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #3 + bl sub_08001274 + movs r4, #0 + str r4, [sp, #0x14] + add r0, sp, #0x14 + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _08193EDC + bl CpuSet + movs r0, #0 + bl sub_080017D4 + ldr r1, _08193EE0 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _08193EE4 + bl sub_08003090 + bl sub_08004480 + ldr r0, _08193EE8 + strh r4, [r0] + ldr r0, _08193EEC + strh r4, [r0] + ldr r0, _08193EF0 + strh r4, [r0] + ldr r0, _08193EF4 + strh r4, [r0] + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r1, #0xb0 + lsls r1, r1, #4 + movs r0, #3 + movs r2, #0 + bl sub_08001E94 + ldr r1, _08193EF8 + mov r2, r8 + lsls r0, r2, #2 + b _0819401C + .align 2, 0 +_08193EDC: .4byte 0x05006000 +_08193EE0: .4byte gUnknown_85D5918 +_08193EE4: .4byte gUnknown_85D5938 +_08193EE8: .4byte gUnknown_2022AC8 +_08193EEC: .4byte gUnknown_2022ACA +_08193EF0: .4byte gUnknown_2022ACC +_08193EF4: .4byte gUnknown_2022ACE +_08193EF8: .4byte gUnknown_3005B60 +_08193EFC: + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + ldr r1, _08193F60 + movs r0, #0x40 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0x9f + bl sub_08001144 + ldr r1, _08193F64 + movs r0, #0x42 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0x9f + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3f + bl sub_08001144 + bl sub_080A133C + bl sub_0800668C + bl sub_08008424 + ldr r1, _08193F68 + mov r3, r8 + lsls r0, r3, #2 + b _0819401C + .align 2, 0 +_08193F60: .4byte 0x00005860 +_08193F64: .4byte 0x00009098 +_08193F68: .4byte gUnknown_3005B60 +_08193F6C: + ldr r4, _0819402C + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BDC + adds r1, r0, #0 + str r1, [r4] + ldr r0, _08194030 + bl sub_08034370 + ldr r1, [r4] + movs r0, #1 + bl sub_0800212C + movs r0, #1 + bl sub_08002248 + ldr r1, _08194034 + movs r5, #0x80 + lsls r5, r5, #6 + movs r6, #0 + str r6, [sp] + movs r0, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _08194038 + str r6, [sp] + movs r0, #2 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _0819403C + movs r4, #1 + str r4, [sp] + movs r0, #2 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r1, _08194040 + str r4, [sp] + movs r0, #3 + adds r2, r5, #0 + movs r3, #0 + bl sub_081997A0 + ldr r0, _08194044 + movs r4, #0x80 + lsls r4, r4, #2 + movs r1, #0 + adds r2, r4, #0 + bl sub_080A11BC + ldr r0, _08194048 + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r4, #0 + bl sub_080A11BC + ldr r0, _0819404C + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A11BC + str r6, [sp, #0x18] + add r0, sp, #0x18 + ldr r1, _08194050 + ldr r2, _08194054 + bl CpuSet + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldr r1, _08194058 + mov r4, r8 + lsls r0, r4, #2 +_0819401C: + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _08194466 + .align 2, 0 +_0819402C: .4byte gUnknown_203CA48 +_08194030: .4byte gUnknown_8D839A4 +_08194034: .4byte gUnknown_8D82FB4 +_08194038: .4byte gUnknown_8D835A0 +_0819403C: .4byte gUnknown_8D83BD0 +_08194040: .4byte gUnknown_8D83CE0 +_08194044: .4byte gUnknown_8D8533C +_08194048: .4byte gUnknown_8D85428 +_0819404C: .4byte gUnknown_8D855E4 +_08194050: .4byte gUnknown_20377B4 +_08194054: .4byte 0x05000100 +_08194058: .4byte gUnknown_3005B60 +_0819405C: + ldr r0, _0819409C + bl sub_08034388 + mov r0, r8 + lsls r0, r0, #2 + str r0, [sp, #0x1c] + mov r1, sl + cmp r1, #0 + bne _08194092 + movs r5, #0 + ldr r4, _081940A0 +_08194072: + ldrb r1, [r4] + ldrb r2, [r4, #1] + ldr r0, _081940A4 + movs r3, #0 + bl sub_08006B0C + adds r4, #2 + adds r5, #1 + cmp r5, #0x1e + bls _08194072 + ldr r0, _081940A8 + movs r1, #0xda + movs r2, #0xc + movs r3, #0 + bl sub_08006B0C +_08194092: + ldr r1, _081940AC + movs r0, #0 + bl sub_08001144 + b _0819434A + .align 2, 0 +_0819409C: .4byte gUnknown_85D59FC +_081940A0: .4byte gUnknown_85D5E8D +_081940A4: .4byte gUnknown_85D5A54 +_081940A8: .4byte gUnknown_85D5A84 +_081940AC: .4byte 0x00007F40 +_081940B0: + add r0, sp, #4 + movs r2, #0 + movs r1, #2 + strb r1, [r0, #5] + ldr r0, _0819414C + str r0, [sp, #4] + add r0, sp, #4 + strb r1, [r0, #4] + strb r2, [r0, #6] + strb r2, [r0, #7] + strb r1, [r0, #0xa] + strb r2, [r0, #0xb] + strb r1, [r0, #8] + strb r1, [r0, #9] + adds r3, r0, #0 + ldrb r2, [r3, #0xc] + subs r1, #0x12 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + adds r2, r3, #0 + movs r0, #0xe0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + strb r1, [r2, #0xd] + adds r1, r2, #0 + movs r0, #0xd0 + strb r0, [r1, #0xd] + adds r0, r1, #0 + movs r1, #0 + movs r2, #0 + bl sub_08004548 + mov r2, r8 + lsls r2, r2, #2 + str r2, [sp, #0x1c] + add r4, sp, #4 + movs r3, #0xf + mov sb, r3 + movs r0, #0 + str r0, [sp, #0x20] + movs r1, #0 + str r1, [sp, #0x24] + movs r7, #0 + movs r5, #0xf +_0819410C: + ldr r2, _08194150 + ldr r0, [r2] + adds r0, r0, r7 + ldr r3, _08194154 + adds r0, r0, r3 + ldrh r1, [r0] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r0, _08194158 + bl sub_08195498 + mov r0, sl + cmp r0, #1 + bne _08194164 + ldr r1, _08194150 + ldr r2, [r1] + adds r0, r2, r7 + ldr r3, _0819415C + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #0x1d + cmp r0, #0 + blt _0819417C + ldr r3, _08194160 + adds r0, r2, r3 + ldrh r1, [r0] + cmp r1, #1 + beq _081941D4 + ldr r2, [sp, #0x24] + lsrs r0, r2, #0x18 + subs r1, #2 + b _0819418A + .align 2, 0 +_0819414C: .4byte gUnknown_85ABD18 +_08194150: .4byte gUnknown_3005AF0 +_08194154: .4byte 0x00000D24 +_08194158: .4byte gUnknown_2022AE0 +_0819415C: .4byte 0x00000D25 +_08194160: .4byte 0x00000CB2 +_08194164: + mov r3, sl + cmp r3, #0 + bne _081941D4 + ldr r0, _08194194 + ldr r2, [r0] + adds r0, r2, r7 + ldr r1, _08194198 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #0x1d + cmp r0, #0 + bge _0819419C +_0819417C: + lsls r1, r1, #0x1b + lsrs r0, r1, #0x1e + cmp r0, #0 + beq _081941D4 + subs r1, r0, #1 + ldr r2, [sp, #0x24] + lsrs r0, r2, #0x18 +_0819418A: + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08194490 + b _081941D4 + .align 2, 0 +_08194194: .4byte gUnknown_3005AF0 +_08194198: .4byte 0x00000D25 +_0819419C: + ldr r3, _081941BC + adds r1, r2, r3 + ldrh r0, [r1] + cmp r0, #0 + beq _081941D4 + ldr r0, [sp, #0x1c] + add r0, r8 + lsls r0, r0, #3 + ldr r2, _081941C0 + adds r0, r0, r2 + movs r3, #0x10 + ldrsh r0, [r0, r3] + cmp r0, #0 + beq _081941C4 + ldrh r1, [r1] + b _081941C8 + .align 2, 0 +_081941BC: .4byte 0x00000CB2 +_081941C0: .4byte gUnknown_3005B60 +_081941C4: + ldrh r0, [r1] + subs r1, r0, #1 +_081941C8: + ldr r2, [sp, #0x24] + lsrs r0, r2, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08194490 +_081941D4: + ldr r0, [sp, #0x1c] + add r0, r8 + lsls r0, r0, #3 + ldr r3, _081941F4 + adds r0, r0, r3 + movs r1, #0x10 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08194200 + ldr r2, _081941F8 + ldr r0, [r2] + ldr r3, _081941FC + adds r0, r0, r3 + ldrh r3, [r0] + adds r6, r2, #0 + b _0819420E + .align 2, 0 +_081941F4: .4byte gUnknown_3005B60 +_081941F8: .4byte gUnknown_3005AF0 +_081941FC: .4byte 0x00000CB2 +_08194200: + ldr r1, _0819427C + ldr r0, [r1] + ldr r2, _08194280 + adds r0, r0, r2 + ldrh r0, [r0] + subs r3, r0, #1 + adds r6, r1, #0 +_0819420E: + mov r0, sl + cmp r0, #1 + bne _0819422E + ldr r2, [r6] + adds r0, r2, r7 + ldr r1, _08194284 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1e + ldr r0, _08194280 + adds r2, r2, r0 + ldrh r0, [r2] + subs r0, #1 + cmp r1, r0 + blt _08194246 +_0819422E: + mov r1, sl + cmp r1, #0 + bne _0819429A + ldr r0, [r6] + adds r0, r0, r7 + ldr r2, _08194284 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1e + cmp r0, r3 + bgt _0819429A +_08194246: + ldr r0, [r6] + adds r1, r0, r7 + ldr r3, _08194284 + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _0819429A + ldr r2, _08194288 + adds r0, r1, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + ldr r3, _0819428C + cmp r0, r3 + bne _08194290 + ldrb r1, [r4, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x30 + orrs r0, r1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xd] + mov r0, sb + ands r0, r1 + movs r1, #0x40 + b _081942E0 + .align 2, 0 +_0819427C: .4byte gUnknown_3005AF0 +_08194280: .4byte 0x00000CB2 +_08194284: .4byte 0x00000D25 +_08194288: .4byte 0x00000D24 +_0819428C: .4byte 0x000003FF +_08194290: + ldrb r1, [r4, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0xb0 + b _081942D4 +_0819429A: + ldr r0, [r6] + adds r0, r0, r7 + ldr r1, _081942C4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + ldr r2, _081942C8 + cmp r0, r2 + bne _081942CC + ldrb r1, [r4, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x30 + orrs r0, r1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xd] + mov r0, sb + ands r0, r1 + movs r1, #0x40 + b _081942E0 + .align 2, 0 +_081942C4: .4byte 0x00000D24 +_081942C8: .4byte 0x000003FF +_081942CC: + ldrb r1, [r4, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0xe0 +_081942D4: + orrs r0, r1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xd] + mov r0, sb + ands r0, r1 + movs r1, #0xd0 +_081942E0: + orrs r0, r1 + strb r0, [r4, #0xd] + ldr r0, _08194304 + ldr r3, [sp, #0x20] + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _0819430C + ldrb r0, [r4, #5] + ldrb r2, [r4, #0xa] + ldr r1, _08194308 + bl sub_08005DAC + ldrb r1, [r4, #0xa] + adds r1, r0, r1 + movs r0, #0x40 + subs r0, r0, r1 + b _0819430E + .align 2, 0 +_08194304: .4byte gUnknown_85D5E6D +_08194308: .4byte gUnknown_2022AE0 +_0819430C: + movs r0, #4 +_0819430E: + strb r0, [r4, #8] + ldr r0, _0819435C + str r0, [sp, #4] + ldr r0, _08194360 + ldr r1, [sp, #0x20] + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r4, #4] + ldr r2, _08194364 + adds r0, r1, r2 + ldrb r0, [r0] + strb r0, [r4, #9] + add r0, sp, #4 + movs r1, #0 + movs r2, #0 + bl sub_08004548 + ldr r3, [sp, #0x20] + adds r3, #2 + str r3, [sp, #0x20] + ldr r0, [sp, #0x24] + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + str r0, [sp, #0x24] + adds r7, #4 + subs r5, #1 + cmp r5, #0 + blt _0819434A + b _0819410C +_0819434A: + ldr r0, _08194368 + ldr r1, [sp, #0x1c] + add r1, r8 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _08194466 + .align 2, 0 +_0819435C: .4byte gUnknown_2022AE0 +_08194360: .4byte gUnknown_85D5E6D +_08194364: .4byte gUnknown_85D5E6E +_08194368: .4byte gUnknown_3005B60 +_0819436C: + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + movs r1, #3 + bl sub_08003528 + movs r0, #2 + movs r1, #3 + bl sub_08003528 + ldr r0, _081943D8 + bl sub_080006FC + ldr r0, _081943DC + bl sub_080006F0 + cmp r4, #2 + bne _08194400 + mov r2, sl + cmp r2, #0 + bne _081943E8 + ldr r0, _081943E0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081943E4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + mov r3, sl + strh r3, [r1, #8] + strh r3, [r1, #0xa] + mov r4, r8 + lsls r0, r4, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0, #0x10] + strh r0, [r1, #0x14] + b _0819441C + .align 2, 0 +_081943D8: .4byte sub_081947EC +_081943DC: .4byte sub_081948E4 +_081943E0: .4byte sub_0819353C +_081943E4: .4byte gUnknown_3005B60 +_081943E8: + ldr r0, _081943F8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081943FC + b _08194410 + .align 2, 0 +_081943F8: .4byte sub_081944F4 +_081943FC: .4byte gUnknown_3005B60 +_08194400: + ldr r1, _08194478 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r3, #0xe + ldrsh r5, [r0, r3] +_08194410: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] +_0819441C: + bl sub_080B9750 + ldr r0, _0819447C + ldr r2, _08194480 + movs r4, #0xf0 + lsls r4, r4, #3 + adds r1, r0, r4 + movs r5, #0x5a +_0819442C: + strh r2, [r0] + strh r2, [r1] + adds r1, #2 + adds r0, #2 + subs r5, #1 + cmp r5, #0 + bge _0819442C + movs r5, #0x5b + ldr r3, _08194484 + ldr r0, _0819447C + ldr r2, _08194488 + ldr r4, _0819448C + adds r1, r0, r4 + adds r0, #0xb6 +_08194448: + strh r2, [r0] + strh r2, [r1] + adds r1, #2 + adds r0, #2 + adds r5, #1 + cmp r5, #0x9f + ble _08194448 + ldr r0, [r3] + ldr r1, [r3, #4] + ldr r2, [r3, #8] + bl sub_080B9790 + mov r0, r8 + bl sub_080A8964 +_08194466: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08194478: .4byte gUnknown_3005B60 +_0819447C: .4byte gUnknown_20388C8 +_08194480: .4byte 0x00001F0A +_08194484: .4byte gUnknown_85D59F0 +_08194488: .4byte 0x00001F09 +_0819448C: .4byte 0x00000836 + thumb_func_end sub_08193E00 + + thumb_func_start sub_08194490 +sub_08194490: @ 0x08194490 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r4, _081944EC + lsls r2, r1, #2 + lsls r3, r0, #4 + adds r2, r2, r3 + adds r2, r2, r4 + ldr r3, [r2] + ldr r2, _081944F0 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, #0 + beq _081944DC + movs r7, #1 + adds r4, r3, #0 + adds r5, r4, #2 + adds r6, r0, #0 +_081944BE: + ldrb r2, [r4] + ldrb r3, [r4, #1] + str r7, [sp] + str r7, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + adds r1, r5, #0 + bl sub_080023B4 + adds r4, #4 + adds r5, #4 + subs r6, #1 + cmp r6, #0 + bne _081944BE +_081944DC: + movs r0, #1 + bl sub_08002248 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081944EC: .4byte gUnknown_85D678C +_081944F0: .4byte gUnknown_85D688C + thumb_func_end sub_08194490 + + thumb_func_start sub_081944F4 +sub_081944F4: @ 0x081944F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08194524 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r2, r1, #0 + cmp r0, #4 + bls _0819451A + b _0819473C +_0819451A: + lsls r0, r0, #2 + ldr r1, _08194528 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08194524: .4byte gUnknown_3005B60 +_08194528: .4byte _0819452C +_0819452C: @ jump table + .4byte _08194540 @ case 0 + .4byte _08194564 @ case 1 + .4byte _081946D4 @ case 2 + .4byte _081946EE @ case 3 + .4byte _08194724 @ case 4 +_08194540: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r1, _08194560 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #1 + strh r1, [r0, #8] + b _0819473C + .align 2, 0 +_08194560: .4byte gUnknown_3005B60 +_08194564: + ldr r0, _0819460C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08194572 + b _0819473C +_08194572: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #0 + movs r3, #2 + movs r1, #2 + strh r1, [r0, #8] + movs r1, #0x40 + strh r1, [r0, #0xe] + add r0, sp, #4 + strb r3, [r0, #5] + strb r2, [r0, #6] + strb r2, [r0, #7] + strb r3, [r0, #0xa] + strb r2, [r0, #0xb] + adds r3, r0, #0 + ldrb r2, [r3, #0xc] + subs r1, #0x50 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + adds r2, r3, #0 + movs r0, #0xb0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + strb r1, [r2, #0xd] + adds r1, r2, #0 + movs r0, #0xd0 + strb r0, [r1, #0xd] + movs r7, #0 + adds r6, r1, #0 + ldr r0, _08194610 + mov r8, r0 +_081945B8: + ldr r1, _08194614 + ldr r0, [r1] + lsls r4, r7, #2 + adds r0, r0, r4 + ldr r2, _08194618 + adds r0, r0, r2 + ldrh r1, [r0] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + ldr r0, _0819461C + bl sub_08195498 + ldr r0, _08194614 + ldr r1, [r0] + adds r0, r1, r4 + ldr r2, _08194620 + adds r0, r0, r2 + ldrb r3, [r0] + lsls r2, r3, #0x1b + lsrs r2, r2, #0x1e + ldr r0, _08194624 + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, #1 + mov sb, r4 + adds r1, r7, #1 + mov sl, r1 + cmp r2, r0 + bne _0819468A + lsls r0, r3, #0x1d + cmp r0, #0 + bge _0819468A + lsls r0, r7, #1 + ldr r2, _08194628 + adds r1, r0, r2 + ldrb r1, [r1] + adds r5, r0, #0 + cmp r1, #0 + bne _08194660 + movs r4, #0 + b _08194636 + .align 2, 0 +_0819460C: .4byte gUnknown_2037C74 +_08194610: .4byte gUnknown_2021C40 +_08194614: .4byte gUnknown_3005AF0 +_08194618: .4byte 0x00000D24 +_0819461C: .4byte gUnknown_2022AE0 +_08194620: .4byte 0x00000D25 +_08194624: .4byte 0x00000CB2 +_08194628: .4byte gUnknown_85D5E6D +_0819462C: + mov r0, r8 + adds r1, r4, r0 + movs r0, #0 + strb r0, [r1] + adds r4, #1 +_08194636: + ldr r0, _0819465C + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + subs r1, r1, r0 + cmp r4, r1 + blt _0819462C + mov r1, r8 + adds r0, r4, r1 + movs r1, #0xff + strb r1, [r0] + mov r0, r8 + ldr r1, _0819465C + bl sub_080088D8 + movs r0, #2 + b _0819466A + .align 2, 0 +_0819465C: .4byte gUnknown_2022AE0 +_08194660: + ldr r0, _081946BC + ldr r1, _081946C0 + bl sub_080088B8 + movs r0, #4 +_0819466A: + strb r0, [r6, #8] + mov r2, r8 + str r2, [sp, #4] + ldr r1, _081946C4 + adds r0, r5, r1 + ldrb r0, [r0] + strb r0, [r6, #4] + ldr r2, _081946C8 + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r6, #9] + add r0, sp, #4 + movs r1, #0 + movs r2, #0 + bl sub_08004548 +_0819468A: + ldr r0, _081946CC + ldr r1, [r0] + mov r2, sb + adds r0, r1, r2 + ldr r2, _081946D0 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081946B2 + subs r2, #0x73 + adds r0, r1, r2 + ldrh r0, [r0] + subs r4, r0, #1 + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_08194490 +_081946B2: + mov r7, sl + cmp r7, #0xf + bgt _081946BA + b _081945B8 +_081946BA: + b _0819473C + .align 2, 0 +_081946BC: .4byte gUnknown_2021C40 +_081946C0: .4byte gUnknown_2022AE0 +_081946C4: .4byte gUnknown_85D5E6D +_081946C8: .4byte gUnknown_85D5E6E +_081946CC: .4byte gUnknown_3005AF0 +_081946D0: .4byte 0x00000D25 +_081946D4: + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrh r0, [r1, #0xe] + subs r0, #1 + strh r0, [r1, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0819473C + movs r0, #3 + strh r0, [r1, #8] + b _0819473C +_081946EE: + ldr r0, _0819471C + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0819473C + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _08194720 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #4 + strh r1, [r0, #8] + b _0819473C + .align 2, 0 +_0819471C: .4byte gUnknown_3002360 +_08194720: .4byte gUnknown_3005B60 +_08194724: + ldr r0, _0819474C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0819473C + ldr r0, _08194750 + bl sub_08000540 + adds r0, r4, #0 + bl sub_080A8964 +_0819473C: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819474C: .4byte gUnknown_2037C74 +_08194750: .4byte sub_08085B34 + thumb_func_end sub_081944F4 + + thumb_func_start sub_08194754 +sub_08194754: @ 0x08194754 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08194754 + + thumb_func_start sub_08194770 +sub_08194770: @ 0x08194770 + push {lr} + movs r0, #3 + movs r1, #0x80 + movs r2, #1 + bl sub_08001D1C + movs r0, #3 + movs r1, #0x80 + movs r2, #2 + bl sub_08001E94 + ldr r0, _081947D4 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _081947D8 + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _081947DC + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _081947E0 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + ldr r0, _081947E4 + ldrh r1, [r0] + movs r0, #0x18 + bl sub_08001144 + ldr r0, _081947E8 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_08001144 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 +_081947D4: .4byte gUnknown_2022AC8 +_081947D8: .4byte gUnknown_2022ACA +_081947DC: .4byte gUnknown_2022ACC +_081947E0: .4byte gUnknown_2022ACE +_081947E4: .4byte gUnknown_2022AD0 +_081947E8: .4byte gUnknown_2022AD2 + thumb_func_end sub_08194770 + + thumb_func_start sub_081947EC +sub_081947EC: @ 0x081947EC + push {lr} + ldr r0, _0819480C + ldrh r0, [r0] + adds r1, r0, #0 + cmp r0, #0x29 + bls _081948C8 + cmp r0, #0x31 + bhi _0819481C + ldr r1, _08194810 + ldr r2, _08194814 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _08194818 + b _081948D4 + .align 2, 0 +_0819480C: .4byte 0x04000006 +_08194810: .4byte 0x04000048 +_08194814: .4byte 0x00003B3B +_08194818: .4byte 0x989B5558 +_0819481C: + cmp r0, #0x39 + bls _081948C8 + cmp r0, #0x4a + bhi _08194840 + ldr r1, _08194834 + ldr r2, _08194838 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _0819483C + b _081948D4 + .align 2, 0 +_08194834: .4byte 0x04000048 +_08194838: .4byte 0x00003B3B +_0819483C: .4byte 0x90985860 +_08194840: + cmp r0, #0x51 + bhi _08194860 + ldr r1, _08194854 + ldr r2, _08194858 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _0819485C + b _081948D4 + .align 2, 0 +_08194854: .4byte 0x04000048 +_08194858: .4byte 0x00003B3B +_0819485C: .4byte 0x989B5558 +_08194860: + cmp r0, #0x5e + bls _081948C8 + cmp r0, #0x66 + bhi _08194884 + ldr r1, _08194878 + ldr r2, _0819487C + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _08194880 + b _081948D4 + .align 2, 0 +_08194878: .4byte 0x04000048 +_0819487C: .4byte 0x00003737 +_08194880: .4byte 0x989B5558 +_08194884: + cmp r0, #0x76 + bhi _081948A4 + ldr r1, _08194898 + ldr r2, _0819489C + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _081948A0 + b _081948D4 + .align 2, 0 +_08194898: .4byte 0x04000048 +_0819489C: .4byte 0x00003737 +_081948A0: .4byte 0x90985860 +_081948A4: + cmp r0, #0x7e + bls _081948C8 + cmp r1, #0x86 + bhi _081948C8 + ldr r1, _081948BC + ldr r2, _081948C0 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + ldr r0, _081948C4 + b _081948D4 + .align 2, 0 +_081948BC: .4byte 0x04000048 +_081948C0: .4byte 0x00003737 +_081948C4: .4byte 0x989B5558 +_081948C8: + ldr r1, _081948DC + ldr r2, _081948E0 + adds r0, r2, #0 + strh r0, [r1] + subs r1, #8 + movs r0, #0 +_081948D4: + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081948DC: .4byte 0x04000048 +_081948E0: .4byte 0x00003F3F + thumb_func_end sub_081947EC + + thumb_func_start sub_081948E4 +sub_081948E4: @ 0x081948E4 + push {lr} + ldr r0, _08194938 + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, _0819493C + ldrh r1, [r0] + movs r0, #0x12 + bl sub_08001144 + ldr r0, _08194940 + ldrh r1, [r0] + movs r0, #0x14 + bl sub_08001144 + ldr r0, _08194944 + ldrh r1, [r0] + movs r0, #0x16 + bl sub_08001144 + movs r0, #2 + movs r1, #0x80 + movs r2, #2 + bl sub_08001E94 + movs r0, #3 + movs r1, #0x80 + movs r2, #1 + bl sub_08001E94 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 +_08194938: .4byte gUnknown_2022AC8 +_0819493C: .4byte gUnknown_2022ACA +_08194940: .4byte gUnknown_2022ACC +_08194944: .4byte gUnknown_2022ACE + thumb_func_end sub_081948E4 + + thumb_func_start sub_08194948 +sub_08194948: @ 0x08194948 + ldr r1, _08194958 + ldr r0, _0819495C + str r0, [r1] + ldr r1, _08194960 + ldr r0, _08194964 + str r0, [r1] + bx lr + .align 2, 0 +_08194958: .4byte gUnknown_203B958 +_0819495C: .4byte gUnknown_85B8700 +_08194960: .4byte gUnknown_203B954 +_08194964: .4byte gUnknown_85B4A10 + thumb_func_end sub_08194948 + + thumb_func_start sub_08194968 +sub_08194968: @ 0x08194968 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r3, #0 +_08194976: + ldr r0, _081949B0 + ldr r1, [r0] + ldr r0, _081949B4 + adds r0, r3, r0 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #1 + ldr r2, _081949B8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, #1 + mov sl, r0 + movs r6, #0 + adds r0, r3, #1 + str r0, [sp] + movs r1, #0x64 + mov r0, sl + muls r0, r1, r0 + movs r2, #0x8e + lsls r2, r2, #2 + adds r2, r2, r0 + mov sb, r2 + adds r7, r3, #0 + muls r7, r1, r7 +_081949A8: + movs r5, #0 + adds r0, r6, #1 + mov r8, r0 + b _081949BE + .align 2, 0 +_081949B0: .4byte gUnknown_3005AF0 +_081949B4: .4byte gUnknown_203CBC4 +_081949B8: .4byte 0x00000CAA +_081949BC: + adds r5, #1 +_081949BE: + cmp r5, #3 + bgt _081949EA + ldr r1, _08194A3C + ldr r0, [r1] + add r0, sb + adds r1, r5, #0 + adds r1, #0xd + movs r2, #0 + str r3, [sp, #4] + bl sub_0806A058 + adds r4, r0, #0 + adds r1, r6, #0 + adds r1, #0xd + ldr r2, _08194A40 + adds r0, r7, r2 + movs r2, #0 + bl sub_0806A058 + ldr r3, [sp, #4] + cmp r4, r0 + bne _081949BC +_081949EA: + cmp r5, #4 + bne _08194A00 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _08194A40 + adds r0, r7, r1 + movs r1, #0xa6 + str r3, [sp, #4] + bl sub_08068D34 + ldr r3, [sp, #4] +_08194A00: + mov r6, r8 + cmp r6, #3 + ble _081949A8 + ldr r2, _08194A3C + ldr r0, [r2] + movs r2, #0x64 + mov r1, sl + muls r1, r2, r1 + adds r0, r0, r1 + movs r1, #0x8e + lsls r1, r1, #2 + adds r0, r0, r1 + adds r1, r3, #0 + muls r1, r2, r1 + ldr r2, _08194A40 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy + ldr r3, [sp] + cmp r3, #1 + ble _08194976 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08194A3C: .4byte gUnknown_3005AEC +_08194A40: .4byte gUnknown_2024190 + thumb_func_end sub_08194968 + + thumb_func_start sub_08194A44 +sub_08194A44: @ 0x08194A44 + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r4, #0 + ldr r7, _08194AA0 + movs r6, #0x64 + movs r5, #0 +_08194A50: + ldr r0, _08194AA4 + ldr r1, [r0] + ldr r0, _08194AA8 + adds r0, r4, r0 + ldrb r0, [r0] + subs r0, #1 + lsls r0, r0, #1 + ldr r2, _08194AAC + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + subs r0, #1 + adds r1, r0, #0 + muls r1, r6, r1 + movs r0, #0x8e + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r7] + adds r0, r0, r1 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + ldr r0, _08194AB0 + adds r0, r5, r0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r5, #0x64 + adds r4, #1 + cmp r4, #1 + ble _08194A50 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08194AA0: .4byte gUnknown_3005AEC +_08194AA4: .4byte gUnknown_3005AF0 +_08194AA8: .4byte gUnknown_203CBC4 +_08194AAC: .4byte 0x00000CAA +_08194AB0: .4byte gUnknown_2024190 + thumb_func_end sub_08194A44 + + thumb_func_start sub_08194AB4 +sub_08194AB4: @ 0x08194AB4 + push {lr} + bl sub_080F9D78 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08194AB4 + + thumb_func_start sub_08194AC0 +sub_08194AC0: @ 0x08194AC0 + push {r4, lr} + ldr r0, _08194ADC + ldrh r0, [r0] + bl sub_08194F58 + adds r4, r0, #0 + ldr r0, _08194AE0 + bl sub_08194F58 + cmp r4, r0 + ble _08194AE8 + ldr r1, _08194AE4 + movs r0, #1 + b _08194AEC + .align 2, 0 +_08194ADC: .4byte gUnknown_203886A +_08194AE0: .4byte 0x000003FF +_08194AE4: .4byte gUnknown_2037290 +_08194AE8: + ldr r1, _08194AF4 + movs r0, #2 +_08194AEC: + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08194AF4: .4byte gUnknown_2037290 + thumb_func_end sub_08194AC0 + + thumb_func_start sub_08194AF8 +sub_08194AF8: @ 0x08194AF8 + push {r4, lr} + bl sub_08194948 + movs r2, #0 + ldr r3, _08194B48 + ldr r0, [r3] + ldr r1, _08194B4C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _08194B2A + adds r4, r3, #0 + adds r3, r1, #0 +_08194B14: + adds r2, #1 + cmp r2, #0xf + bgt _08194B2A + ldr r0, [r4] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _08194B14 +_08194B2A: + ldr r0, _08194B50 + ldr r1, _08194B48 + ldr r1, [r1] + lsls r2, r2, #2 + adds r1, r1, r2 + ldr r2, _08194B54 + adds r1, r1, r2 + ldrh r1, [r1] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + bl sub_08195498 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08194B48: .4byte gUnknown_3005AF0 +_08194B4C: .4byte 0x00000D25 +_08194B50: .4byte gUnknown_2021C40 +_08194B54: .4byte 0x00000D24 + thumb_func_end sub_08194AF8 + + thumb_func_start sub_08194B58 +sub_08194B58: @ 0x08194B58 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + movs r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r4, _08194BE8 + ldr r2, [r4] + ldr r5, _08194BEC + adds r0, r2, r5 + ldrb r1, [r0] + ldr r6, _08194BF0 + adds r0, r2, r6 + ldrb r0, [r0] + cmn r1, r0 + beq _08194B8C + ldr r1, _08194BF4 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _08194B8C + b _08194F3E +_08194B8C: + movs r0, #0x20 + bl sub_08000BDC + str r0, [sp, #0x18] + movs r0, #0x18 + bl sub_08000BDC + str r0, [sp, #0x1c] + ldr r1, [r4] + ldr r2, _08194BF8 + adds r1, r1, r2 + ldrb r2, [r1] + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1e + str r0, [sp, #0x14] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r4] + movs r1, #1 + adds r0, r0, r5 + strb r1, [r0] + ldr r0, [r4] + adds r0, r0, r6 + strb r1, [r0] + movs r3, #0 + mov sl, r3 + movs r4, #0 + str r4, [sp, #0x38] + movs r5, #0 + str r5, [sp, #0x3c] +_08194BCC: + mov r0, sl + cmp r0, #4 + bgt _08194BFC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _08194C30 + .align 2, 0 +_08194BE8: .4byte gUnknown_3005AF0 +_08194BEC: .4byte 0x00000D0A +_08194BF0: .4byte 0x00000D0B +_08194BF4: .4byte 0x00000CA8 +_08194BF8: .4byte 0x00000CA9 +_08194BFC: + mov r1, sl + cmp r1, #0xe + bgt _08194C1A + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r0, #0 + adds r4, #0xa + b _08194C30 +_08194C1A: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r0, #0 + adds r4, #0x1e +_08194C30: + movs r6, #0 + cmp r6, sl + bge _08194C64 + ldr r2, _08194EA0 + ldr r0, [r2] + ldr r3, _08194EA4 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r4 + beq _08194C64 + adds r3, r2, #0 + ldr r2, _08194EA4 +_08194C4C: + adds r6, #1 + cmp r6, sl + bge _08194C64 + ldr r0, [r3] + lsls r1, r6, #2 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r4 + bne _08194C4C +_08194C64: + cmp r6, sl + bne _08194BCC + ldr r5, _08194EA0 + ldr r3, [r5] + ldr r0, [sp, #0x38] + adds r3, r3, r0 + ldr r1, _08194EA4 + adds r3, r3, r1 + ldr r2, _08194EA8 + adds r0, r2, #0 + adds r2, r4, #0 + ands r2, r0 + ldrh r0, [r3] + ldr r5, _08194EAC + adds r1, r5, #0 + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + movs r6, #0 + lsls r4, r4, #0x10 + str r4, [sp, #0x30] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x20] +_08194C92: + adds r1, r6, #1 + str r1, [sp, #0x24] + lsls r2, r6, #2 + str r2, [sp, #0x2c] + lsls r3, r6, #1 + str r3, [sp, #0x28] +_08194C9E: + ldr r4, [sp, #0x30] + lsrs r0, r4, #0x10 + bl sub_08163444 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r7, #0 + cmp r7, r6 + bge _08194CF4 + ldr r0, _08194EA0 + ldr r0, [r0] + ldr r1, _08194EB0 + mov sb, r1 + ldr r2, [sp, #8] + mov r8, r2 + ldr r3, [sp, #0xc] + mov ip, r3 + ldr r4, _08194EB4 + adds r0, r0, r4 + ldr r1, [sp, #0x20] + adds r4, r1, r0 +_08194CC8: + ldrh r3, [r4] + cmp r3, r5 + beq _08194CF4 + mov r2, sb + ldr r1, [r2] + lsls r0, r5, #4 + adds r2, r0, r1 + ldrh r0, [r2] + cmp r8, r0 + beq _08194CF4 + cmp ip, r0 + beq _08194CF4 + lsls r0, r3, #4 + adds r0, r0, r1 + ldrb r0, [r0, #0xa] + ldrb r2, [r2, #0xa] + cmp r0, r2 + beq _08194CF4 + adds r4, #2 + adds r7, #1 + cmp r7, r6 + blt _08194CC8 +_08194CF4: + cmp r7, r6 + bne _08194C9E + ldr r3, _08194EA0 + ldr r0, [r3] + ldr r4, [sp, #0x28] + ldr r2, [sp, #0x3c] + adds r1, r4, r2 + ldr r3, _08194EB4 + adds r0, r0, r3 + adds r0, r0, r1 + strh r5, [r0] + ldr r2, [sp, #0x2c] + add r2, sp + adds r2, #8 + ldr r3, _08194EB0 + ldr r1, [r3] + lsls r0, r5, #4 + adds r0, r0, r1 + ldrh r0, [r0] + str r0, [r2] + ldr r6, [sp, #0x24] + cmp r6, #2 + ble _08194C92 + ldr r4, _08194EA0 + ldr r2, [r4] + ldr r5, [sp, #0x38] + adds r2, r2, r5 + ldr r0, _08194EB8 + adds r2, r2, r0 + ldrb r0, [r2] + movs r4, #5 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + strb r0, [r2] + ldr r5, _08194EA0 + ldr r2, [r5] + ldr r0, [sp, #0x38] + adds r2, r2, r0 + ldr r1, _08194EB8 + adds r2, r2, r1 + ldrb r0, [r2] + subs r4, #0x14 + adds r1, r4, #0 + ands r0, r1 + strb r0, [r2] + ldr r1, [r5] + ldr r5, [sp, #0x38] + adds r1, r1, r5 + ldr r0, _08194EB8 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x1f + ands r0, r2 + strb r0, [r1] + adds r5, #4 + str r5, [sp, #0x38] + ldr r1, [sp, #0x3c] + adds r1, #6 + str r1, [sp, #0x3c] + movs r2, #1 + add sl, r2 + mov r4, sl + cmp r4, #0xf + bgt _08194D78 + b _08194BCC +_08194D78: + movs r5, #0 + mov sl, r5 + ldr r5, [sp, #0x18] + movs r0, #0 + str r0, [sp, #0x34] +_08194D82: + movs r7, #0 + strh r7, [r5] + ldr r1, _08194EA0 + ldr r0, [r1] + mov r2, sl + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r3, _08194EA4 + adds r0, r0, r3 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + bl sub_0818FDC4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r6, #0 + ldr r4, [sp, #0x34] + mov sb, r4 +_08194DAA: + ldr r1, _08194EA0 + ldr r0, [r1] + mov r4, sb + add r4, sl + adds r4, r4, r6 + lsls r4, r4, #1 + ldr r2, _08194EB4 + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r3, _08194EB0 + ldr r0, [r3] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldrb r3, [r1, #0xb] + ldrb r1, [r1, #0xc] + str r1, [sp] + ldr r1, [sp, #0x1c] + str r1, [sp, #4] + movs r1, #0x32 + mov r2, r8 + bl sub_0818F37C + ldr r2, [sp, #0x1c] + ldr r1, [r2, #4] + ldrh r0, [r5] + adds r0, r0, r1 + ldr r1, [r2, #8] + adds r0, r0, r1 + ldr r1, [r2, #0x10] + adds r0, r0, r1 + ldr r1, [r2, #0x14] + adds r0, r0, r1 + ldr r1, [r2, #0xc] + adds r0, r0, r1 + ldr r1, [r2] + adds r0, r0, r1 + strh r0, [r5] + ldr r3, _08194EA0 + ldr r0, [r3] + ldr r1, _08194EB4 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + ldr r2, _08194EB0 + ldr r1, [r2] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r3, _08194EBC + adds r1, r1, r3 + ldrb r0, [r1, #6] + lsls r0, r0, #2 + ldr r4, _08194EC0 + adds r0, r0, r4 + ldr r0, [r0] + orrs r7, r0 + ldrb r0, [r1, #7] + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + orrs r7, r0 + adds r6, #1 + cmp r6, #2 + ble _08194DAA + movs r4, #0 + movs r1, #1 + movs r6, #0x1f +_08194E3A: + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _08194E44 + adds r4, #1 +_08194E44: + asrs r7, r7, #1 + subs r6, #1 + cmp r6, #0 + bge _08194E3A + movs r1, #0x32 + adds r0, r4, #0 + muls r0, r1, r0 + movs r1, #0x14 + bl __divsi3 + ldrh r1, [r5] + adds r1, r1, r0 + strh r1, [r5] + adds r5, #2 + ldr r2, [sp, #0x34] + adds r2, #2 + str r2, [sp, #0x34] + movs r3, #1 + add sl, r3 + mov r4, sl + cmp r4, #0xf + ble _08194D82 + movs r5, #0 + mov sl, r5 + ldr r7, [sp, #0x18] +_08194E76: + mov r6, sl + adds r6, #1 + cmp r6, #0xf + bgt _08194EF8 + mov r8, r7 + ldr r5, _08194EA4 + lsls r0, r6, #1 + ldr r1, [sp, #0x18] + adds r4, r0, r1 +_08194E88: + mov r2, r8 + ldrh r1, [r2] + ldrh r0, [r4] + cmp r1, r0 + bhs _08194EC4 + mov r0, sl + adds r1, r6, #0 + ldr r2, [sp, #0x18] + bl sub_0818F560 + b _08194EF0 + .align 2, 0 +_08194EA0: .4byte gUnknown_3005AF0 +_08194EA4: .4byte 0x00000D24 +_08194EA8: .4byte 0x000003FF +_08194EAC: .4byte 0xFFFFFC00 +_08194EB0: .4byte gUnknown_203B958 +_08194EB4: .4byte 0x00000D64 +_08194EB8: .4byte 0x00000D25 +_08194EBC: .4byte gUnknown_82F0D54 +_08194EC0: .4byte gUnknown_82FACB4 +_08194EC4: + cmp r1, r0 + bne _08194EF0 + ldr r0, _08194F50 + ldr r1, [r0] + mov r3, sl + lsls r0, r3, #2 + adds r0, r1, r0 + adds r0, r0, r5 + ldrh r2, [r0] + lsls r2, r2, #0x16 + lsls r0, r6, #2 + adds r1, r1, r0 + adds r1, r1, r5 + ldrh r0, [r1] + lsls r0, r0, #0x16 + cmp r2, r0 + bls _08194EF0 + mov r0, sl + adds r1, r6, #0 + ldr r2, [sp, #0x18] + bl sub_0818F560 +_08194EF0: + adds r4, #2 + adds r6, #1 + cmp r6, #0xf + ble _08194E88 +_08194EF8: + adds r7, #2 + movs r4, #1 + add sl, r4 + mov r5, sl + cmp r5, #0xe + ble _08194E76 + ldr r0, [sp, #0x18] + bl sub_08000BF0 + ldr r0, [sp, #0x1c] + bl sub_08000BF0 + movs r0, #0 + mov sl, r0 +_08194F14: + mov r1, sl + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + bl sub_08195038 + movs r2, #1 + add sl, r2 + mov r3, sl + cmp r3, #3 + ble _08194F14 + ldr r0, _08194F50 + ldr r1, [r0] + ldr r4, _08194F54 + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + ldr r5, [sp, #0x14] + orrs r0, r5 + strb r0, [r1] +_08194F3E: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08194F50: .4byte gUnknown_3005AF0 +_08194F54: .4byte 0x00000CA9 + thumb_func_end sub_08194B58 + + thumb_func_start sub_08194F58 +sub_08194F58: @ 0x08194F58 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r4, _08194F98 + ldr r0, [r4] + ldr r1, _08194F9C + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r3 + beq _08194F8E + adds r5, r4, #0 + adds r4, r1, #0 +_08194F76: + adds r2, #1 + cmp r2, #0xf + bgt _08194F8E + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r3 + bne _08194F76 +_08194F8E: + adds r0, r2, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08194F98: .4byte gUnknown_3005AF0 +_08194F9C: .4byte 0x00000D24 + thumb_func_end sub_08194F58 + + thumb_func_start sub_08194FA0 +sub_08194FA0: @ 0x08194FA0 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + ldr r4, _08194FE0 + ldr r0, [r4] + ldr r1, _08194FE4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r3 + beq _08194FD6 + adds r5, r4, #0 + adds r4, r1, #0 +_08194FBE: + adds r2, #1 + cmp r2, #0xf + bgt _08194FD6 + ldr r0, [r5] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + cmp r0, r3 + bne _08194FBE +_08194FD6: + adds r0, r2, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_08194FE0: .4byte gUnknown_3005AF0 +_08194FE4: .4byte 0x00000D24 + thumb_func_end sub_08194FA0 + + thumb_func_start sub_08194FE8 +sub_08194FE8: @ 0x08194FE8 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _08195024 + ldr r0, _08195028 + adds r0, r4, r0 + ldrb r0, [r0] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + subs r0, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + bl sub_08192B3C + mov r0, sp + ldrb r0, [r0] + cmp r4, r0 + beq _0819502C + mov r0, sp + ldrb r0, [r0] + b _08195030 + .align 2, 0 +_08195024: .4byte gUnknown_85D5C1C +_08195028: .4byte gUnknown_85D5C3C +_0819502C: + mov r0, sp + ldrb r0, [r0, #1] +_08195030: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08194FE8 + + thumb_func_start sub_08195038 +sub_08195038: @ 0x08195038 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0 + str r0, [sp, #0xc] + movs r1, #0 + str r1, [sp, #0x10] + movs r5, #0 + movs r1, #3 + ldr r0, [sp] + ands r0, r1 + lsls r0, r0, #3 + str r0, [sp, #0x14] +_0819505E: + ldr r2, _081950F0 + ldr r0, [r2] + lsls r4, r5, #2 + adds r1, r0, r4 + ldr r3, _081950F4 + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1d + adds r2, r5, #1 + str r2, [sp, #0x24] + cmp r0, #0 + bge _08195078 + b _08195476 +_08195078: + subs r3, #1 + adds r0, r1, r3 + ldrh r0, [r0] + lsls r1, r0, #0x16 + ldr r0, _081950F8 + cmp r1, r0 + bne _08195088 + b _08195476 +_08195088: + str r5, [sp, #4] + lsrs r1, r1, #0x16 + ldr r0, [sp] + bl sub_0818FDFC + str r0, [sp, #8] + ldr r0, _081950F0 + ldr r3, [r0] + adds r0, r3, r4 + ldr r1, _081950FC + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + ldr r1, _08195100 + cmp r0, r1 + bne _08195104 + ldr r2, [sp, #8] + cmp r2, #0xff + beq _08195104 + lsls r2, r2, #2 + adds r1, r3, r2 + ldr r3, _081950F4 + adds r1, r1, r3 + ldrb r0, [r1] + movs r3, #4 + orrs r0, r3 + strb r0, [r1] + ldr r0, _081950F0 + ldr r1, [r0] + adds r1, r1, r2 + ldr r2, _081950F4 + adds r1, r1, r2 + ldrb r0, [r1] + subs r3, #0x1d + ands r0, r3 + ldr r2, [sp, #0x14] + orrs r0, r2 + strb r0, [r1] + adds r0, r5, #0 + ldr r1, [sp, #8] + ldr r2, [sp] + bl sub_08193AB0 + ldr r3, _081950F0 + ldr r1, [r3] + ldr r5, [sp, #8] + lsls r2, r5, #1 + movs r3, #0xec + lsls r3, r3, #4 + adds r1, r1, r3 + adds r1, r1, r2 + b _08195474 + .align 2, 0 +_081950F0: .4byte gUnknown_3005AF0 +_081950F4: .4byte 0x00000D25 +_081950F8: .4byte 0xFFC00000 +_081950FC: .4byte 0x00000D24 +_08195100: .4byte 0xFF800000 +_08195104: + ldr r4, _0819516C + ldr r3, [r4] + ldr r0, [sp, #8] + lsls r2, r0, #2 + adds r0, r3, r2 + ldr r1, _08195170 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x16 + ldr r1, _08195174 + str r2, [sp, #0x30] + cmp r0, r1 + bne _0819517C + ldr r2, [sp, #4] + cmp r2, #0xff + beq _0819517C + lsls r2, r2, #2 + adds r1, r3, r2 + ldr r3, _08195178 + adds r1, r1, r3 + ldrb r0, [r1] + movs r3, #4 + orrs r0, r3 + strb r0, [r1] + ldr r1, [r4] + adds r1, r1, r2 + ldr r0, _08195178 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x19 + rsbs r2, r2, #0 + ands r0, r2 + ldr r3, [sp, #0x14] + orrs r0, r3 + strb r0, [r1] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + ldr r2, [sp] + bl sub_08193AB0 + ldr r1, [r4] + ldr r3, [sp, #4] + lsls r2, r3, #1 + movs r3, #0xec + lsls r3, r3, #4 + adds r1, r1, r3 + adds r1, r1, r2 + strh r0, [r1] + adds r5, #1 + str r5, [sp, #0x24] + b _08195476 + .align 2, 0 +_0819516C: .4byte gUnknown_3005AF0 +_08195170: .4byte 0x00000D24 +_08195174: .4byte 0xFF800000 +_08195178: .4byte 0x00000D25 +_0819517C: + adds r5, #1 + str r5, [sp, #0x24] + ldr r5, [sp, #8] + cmp r5, #0xff + bne _08195188 + b _08195476 +_08195188: + movs r0, #0 + mov sl, r0 + lsls r1, r5, #1 + str r1, [sp, #0x2c] + ldr r2, [sp, #4] + lsls r2, r2, #1 + str r2, [sp, #0x28] + ldr r3, [sp, #4] + adds r0, r2, r3 + lsls r0, r0, #1 + mov sb, r0 + adds r0, r1, r5 + lsls r0, r0, #1 + str r0, [sp, #0x18] +_081951A4: + movs r5, #0 + mov r0, sb + str r0, [sp, #0x38] +_081951AA: + movs r6, #0 + lsls r7, r5, #1 + ldr r4, [sp, #0x18] +_081951B0: + ldr r2, _08195370 + ldr r1, [r2] + ldr r3, _08195374 + adds r1, r1, r3 + ldr r2, [sp, #0x38] + adds r0, r1, r2 + ldrh r0, [r0] + ldr r3, _08195378 + mov r8, r3 + ldr r2, [r3] + lsls r0, r0, #4 + adds r0, r0, r2 + adds r0, #2 + adds r0, r0, r7 + ldrh r0, [r0] + adds r1, r1, r4 + ldrh r1, [r1] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #2 + bl sub_0818FC1C + ldr r1, [sp, #0xc] + adds r1, r1, r0 + str r1, [sp, #0xc] + adds r4, #2 + adds r6, #1 + cmp r6, #2 + ble _081951B0 + adds r5, #1 + cmp r5, #3 + ble _081951AA + ldr r2, _08195370 + ldr r0, [r2] + ldr r3, _08195374 + adds r0, r0, r3 + add r0, sb + ldrh r0, [r0] + mov r5, r8 + ldr r1, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r0, _0819537C + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r2, [r1, #1] + adds r0, r0, r2 + ldrb r2, [r1, #2] + adds r0, r0, r2 + ldrb r2, [r1, #3] + adds r0, r0, r2 + ldrb r3, [r1, #4] + adds r0, r0, r3 + ldrb r1, [r1, #5] + adds r0, r0, r1 + movs r1, #0xa + bl __divsi3 + ldr r5, [sp, #0xc] + adds r5, r5, r0 + str r5, [sp, #0xc] + movs r0, #2 + add sb, r0 + movs r1, #1 + add sl, r1 + mov r2, sl + cmp r2, #2 + ble _081951A4 + bl sub_0806F050 + movs r1, #0x1f + ands r1, r0 + adds r5, r5, r1 + ldr r3, [sp, #4] + adds r5, r5, r3 + str r5, [sp, #0xc] + movs r5, #0 + mov sl, r5 + ldr r1, [sp, #0x2c] + ldr r2, [sp, #8] + adds r0, r1, r2 + lsls r0, r0, #1 + str r0, [sp, #0x1c] + ldr r5, [sp, #0x28] + adds r0, r5, r3 + lsls r0, r0, #1 + str r0, [sp, #0x20] +_08195268: + movs r5, #0 + mov r0, sl + lsls r3, r0, #1 + movs r1, #1 + add sl, r1 + ldr r2, [sp, #0x1c] + adds r2, r2, r3 + mov r8, r2 +_08195278: + movs r6, #0 + lsls r7, r5, #1 + adds r5, #1 + str r5, [sp, #0x3c] + ldr r4, [sp, #0x20] +_08195282: + ldr r5, _08195370 + ldr r1, [r5] + ldr r0, _08195374 + adds r1, r1, r0 + mov r2, r8 + adds r0, r1, r2 + ldrh r0, [r0] + ldr r5, _08195378 + mov sb, r5 + ldr r2, [r5] + lsls r0, r0, #4 + adds r0, r0, r2 + adds r0, #2 + adds r0, r0, r7 + ldrh r0, [r0] + adds r1, r1, r4 + ldrh r1, [r1] + lsls r1, r1, #4 + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #2 + str r3, [sp, #0x34] + bl sub_0818FC1C + ldr r1, [sp, #0x10] + adds r1, r1, r0 + str r1, [sp, #0x10] + adds r4, #2 + adds r6, #1 + ldr r3, [sp, #0x34] + cmp r6, #2 + ble _08195282 + ldr r5, [sp, #0x3c] + cmp r5, #3 + ble _08195278 + ldr r2, _08195370 + ldr r0, [r2] + ldr r5, [sp, #0x1c] + adds r1, r3, r5 + ldr r2, _08195374 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + mov r3, sb + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r0, _0819537C + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r2, [r1, #1] + adds r0, r0, r2 + ldrb r5, [r1, #2] + adds r0, r0, r5 + ldrb r2, [r1, #3] + adds r0, r0, r2 + ldrb r2, [r1, #4] + adds r0, r0, r2 + ldrb r1, [r1, #5] + adds r0, r0, r1 + movs r1, #0xa + bl __divsi3 + ldr r3, [sp, #0x10] + adds r3, r3, r0 + str r3, [sp, #0x10] + mov r5, sl + cmp r5, #2 + ble _08195268 + bl sub_0806F050 + movs r1, #0x1f + ands r1, r0 + ldr r0, [sp, #0x10] + adds r0, r0, r1 + ldr r1, [sp, #8] + adds r0, r0, r1 + str r0, [sp, #0x10] + ldr r2, [sp, #0xc] + cmp r2, r0 + ble _08195384 + ldr r3, _08195370 + ldr r1, [r3] + ldr r5, [sp, #0x30] + adds r1, r1, r5 + ldr r0, _08195380 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, r1, r5 + ldr r3, _08195380 + adds r1, r1, r3 + ldrb r0, [r1] + movs r5, #0x19 + rsbs r5, r5, #0 + ands r0, r5 + ldr r2, [sp, #0x14] + orrs r0, r2 + strb r0, [r1] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp] + bl sub_08193AB0 + ldr r3, _08195370 + ldr r1, [r3] + movs r5, #0xec + lsls r5, r5, #4 + adds r1, r1, r5 + ldr r2, [sp, #0x2c] + adds r1, r1, r2 + b _08195474 + .align 2, 0 +_08195370: .4byte gUnknown_3005AF0 +_08195374: .4byte 0x00000D64 +_08195378: .4byte gUnknown_203B958 +_0819537C: .4byte gUnknown_82F0D54 +_08195380: .4byte 0x00000D25 +_08195384: + ldr r3, [sp, #0xc] + ldr r5, [sp, #0x10] + cmp r3, r5 + bge _081953DC + ldr r0, _081953D4 + ldr r1, [r0] + ldr r3, [sp, #4] + lsls r2, r3, #2 + adds r1, r1, r2 + ldr r5, _081953D8 + adds r1, r1, r5 + ldrb r0, [r1] + movs r3, #4 + orrs r0, r3 + strb r0, [r1] + ldr r5, _081953D4 + ldr r1, [r5] + adds r1, r1, r2 + ldr r0, _081953D8 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x19 + rsbs r2, r2, #0 + ands r0, r2 + ldr r3, [sp, #0x14] + orrs r0, r3 + strb r0, [r1] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + ldr r2, [sp] + bl sub_08193AB0 + ldr r1, [r5] + movs r5, #0xec + lsls r5, r5, #4 + adds r1, r1, r5 + ldr r2, [sp, #0x28] + adds r1, r1, r2 + b _08195474 + .align 2, 0 +_081953D4: .4byte gUnknown_3005AF0 +_081953D8: .4byte 0x00000D25 +_081953DC: + ldr r3, [sp, #4] + ldr r5, [sp, #8] + cmp r3, r5 + ble _08195430 + ldr r0, _08195428 + ldr r1, [r0] + ldr r2, [sp, #0x30] + adds r1, r1, r2 + ldr r3, _0819542C + adds r1, r1, r3 + ldrb r0, [r1] + movs r5, #4 + orrs r0, r5 + strb r0, [r1] + ldr r0, _08195428 + ldr r1, [r0] + adds r1, r1, r2 + adds r1, r1, r3 + ldrb r0, [r1] + movs r2, #0x19 + rsbs r2, r2, #0 + ands r0, r2 + ldr r3, [sp, #0x14] + orrs r0, r3 + strb r0, [r1] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp] + bl sub_08193AB0 + ldr r5, _08195428 + ldr r1, [r5] + movs r2, #0xec + lsls r2, r2, #4 + adds r1, r1, r2 + ldr r3, [sp, #0x2c] + b _08195472 + .align 2, 0 +_08195428: .4byte gUnknown_3005AF0 +_0819542C: .4byte 0x00000D25 +_08195430: + ldr r5, _08195490 + ldr r1, [r5] + ldr r0, [sp, #4] + lsls r2, r0, #2 + adds r1, r1, r2 + ldr r3, _08195494 + adds r1, r1, r3 + ldrb r0, [r1] + movs r5, #4 + orrs r0, r5 + strb r0, [r1] + ldr r0, _08195490 + ldr r1, [r0] + adds r1, r1, r2 + adds r1, r1, r3 + ldrb r0, [r1] + movs r2, #0x19 + rsbs r2, r2, #0 + ands r0, r2 + ldr r3, [sp, #0x14] + orrs r0, r3 + strb r0, [r1] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + ldr r2, [sp] + bl sub_08193AB0 + ldr r5, _08195490 + ldr r1, [r5] + movs r2, #0xec + lsls r2, r2, #4 + adds r1, r1, r2 + ldr r3, [sp, #0x28] +_08195472: + adds r1, r1, r3 +_08195474: + strh r0, [r1] +_08195476: + ldr r5, [sp, #0x24] + cmp r5, #0xf + bgt _0819547E + b _0819505E +_0819547E: + add sp, #0x40 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08195490: .4byte gUnknown_3005AF0 +_08195494: .4byte 0x00000D25 + thumb_func_end sub_08195038 + + thumb_func_start sub_08195498 +sub_08195498: @ 0x08195498 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 + bl sub_08165A4C + ldr r0, _081954B4 + cmp r5, r0 + bne _081954B8 + adds r0, r6, #0 + bl sub_08195538 + b _08195502 + .align 2, 0 +_081954B4: .4byte 0x000003FE +_081954B8: + ldr r0, _081954D4 + cmp r5, r0 + bne _081954DC + ldr r0, _081954D8 + ldr r2, [r0] +_081954C2: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + ble _081954C2 + b _081954FC + .align 2, 0 +_081954D4: .4byte 0x000003FF +_081954D8: .4byte gUnknown_3005AF0 +_081954DC: + ldr r0, _08195508 + cmp r5, r0 + bhi _081954FC + ldr r0, _0819550C + ldr r1, [r0] + movs r0, #0x34 + muls r0, r5, r0 + adds r0, r0, r1 + adds r2, r0, #4 +_081954EE: + adds r0, r6, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, #1 + cmp r4, #6 + ble _081954EE +_081954FC: + adds r1, r6, r4 + movs r0, #0xff + strb r0, [r1] +_08195502: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08195508: .4byte 0x0000012B +_0819550C: .4byte gUnknown_203B954 + thumb_func_end sub_08195498 + + thumb_func_start sub_08195510 +sub_08195510: @ 0x08195510 + ldr r0, _0819551C + ldr r1, _08195520 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0819551C: .4byte gUnknown_82E383C +_08195520: .4byte 0x000064C3 + thumb_func_end sub_08195510 + + thumb_func_start sub_08195524 +sub_08195524: @ 0x08195524 + ldr r0, _08195530 + ldr r1, _08195534 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08195530: .4byte gUnknown_82E383C +_08195534: .4byte 0x000064C1 + thumb_func_end sub_08195524 + + thumb_func_start sub_08195538 +sub_08195538: @ 0x08195538 + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r4, _0819555C +_08195540: + adds r0, r3, r2 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #6 + ble _08195540 + adds r1, r3, r2 + movs r0, #0xff + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819555C: .4byte gUnknown_82E9D00 + thumb_func_end sub_08195538 + + thumb_func_start sub_08195560 +sub_08195560: @ 0x08195560 + push {lr} + ldr r1, _08195578 + ldr r0, _0819557C + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_08195560 + + thumb_func_start sub_08195574 +sub_08195574: @ 0x08195574 + bx r0 + .align 2, 0 +_08195578: .4byte gUnknown_85D68CC +_0819557C: .4byte gUnknown_2037280 + thumb_func_end sub_08195574 + + thumb_func_start sub_08195580 +sub_08195580: @ 0x08195580 + push {r4, r5, r6, r7, lr} + ldr r4, _08195614 + ldr r0, [r4] + ldr r1, _08195618 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _0819561C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, [r4] + ldr r2, _08195620 + adds r0, r0, r2 + movs r6, #0 + strb r6, [r0] + ldr r1, [r4] + adds r2, #0xa + adds r0, r1, r2 + strh r6, [r0] + ldr r0, _08195618 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + ldr r2, _08195618 + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r4, [r4] + ldr r0, _08195624 + adds r3, r4, r0 + ldr r2, _08195628 + lsls r1, r5, #2 + lsls r0, r7, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldr r0, [r3] + ldr r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _081955F2 + lsls r0, r5, #1 + lsls r1, r7, #2 + adds r0, r0, r1 + ldr r2, _0819562C + adds r1, r4, r2 + adds r1, r1, r0 + strh r6, [r1] +_081955F2: + ldr r0, _08195630 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + ldr r0, _08195634 + strh r6, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08195614: .4byte gUnknown_3005AF0 +_08195618: .4byte 0x00000CA9 +_0819561C: .4byte 0x000040CE +_08195620: .4byte 0x00000CA8 +_08195624: .4byte 0x00000CDC +_08195628: .4byte gUnknown_85D6914 +_0819562C: .4byte 0x00000DC8 +_08195630: .4byte gUnknown_3005AEC +_08195634: .4byte gUnknown_203886A + thumb_func_end sub_08195580 + + thumb_func_start sub_08195638 +sub_08195638: @ 0x08195638 + push {r4, r5, r6, r7, lr} + ldr r5, _08195664 + ldr r0, [r5] + ldr r1, _08195668 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r7, r0, #0x1e + ldr r0, _0819566C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08195670 + ldrh r0, [r0] + cmp r0, #1 + beq _08195690 + cmp r0, #1 + bgt _08195674 + cmp r0, #0 + beq _0819567A + b _081956D0 + .align 2, 0 +_08195664: .4byte gUnknown_3005AF0 +_08195668: .4byte 0x00000CA9 +_0819566C: .4byte 0x000040CE +_08195670: .4byte gUnknown_2037282 +_08195674: + cmp r0, #2 + beq _081956B0 + b _081956D0 +_0819567A: + ldr r0, _08195688 + ldr r1, [r5] + ldr r2, _0819568C + adds r1, r1, r2 + ldrh r1, [r1] + strh r1, [r0] + b _081956D0 + .align 2, 0 +_08195688: .4byte gUnknown_2037290 +_0819568C: .4byte 0x00000DC6 +_08195690: + ldr r3, _081956A8 + ldr r0, [r5] + lsls r1, r7, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + ldr r2, _081956AC + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3] + b _081956D0 + .align 2, 0 +_081956A8: .4byte gUnknown_2037290 +_081956AC: .4byte 0x00000DC8 +_081956B0: + ldr r4, _081956D8 + ldr r2, [r5] + ldr r0, _081956DC + adds r2, r2, r0 + ldr r3, _081956E0 + lsls r0, r7, #2 + lsls r1, r6, #3 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + strh r0, [r4] +_081956D0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081956D8: .4byte gUnknown_2037290 +_081956DC: .4byte 0x00000CDC +_081956E0: .4byte gUnknown_85D6914 + thumb_func_end sub_08195638 + + thumb_func_start sub_081956E4 +sub_081956E4: @ 0x081956E4 + push {r4, r5, r6, lr} + ldr r6, _08195710 + ldr r0, [r6] + ldr r1, _08195714 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _08195718 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _0819571C + ldrh r0, [r0] + cmp r0, #1 + beq _0819573C + cmp r0, #1 + bgt _08195720 + cmp r0, #0 + beq _08195726 + b _081957A0 + .align 2, 0 +_08195710: .4byte gUnknown_3005AF0 +_08195714: .4byte 0x00000CA9 +_08195718: .4byte 0x000040CE +_0819571C: .4byte gUnknown_2037282 +_08195720: + cmp r0, #2 + beq _0819575C + b _081957A0 +_08195726: + ldr r0, [r6] + ldr r1, _08195734 + ldrh r1, [r1] + ldr r2, _08195738 + adds r0, r0, r2 + strh r1, [r0] + b _081957A0 + .align 2, 0 +_08195734: .4byte gUnknown_2037284 +_08195738: .4byte 0x00000DC6 +_0819573C: + ldr r2, [r6] + lsls r0, r5, #1 + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r1, _08195754 + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _08195758 + ldrh r0, [r0] + strh r0, [r2] + b _081957A0 + .align 2, 0 +_08195754: .4byte 0x00000DC8 +_08195758: .4byte gUnknown_2037284 +_0819575C: + ldr r0, _0819577C + ldrh r0, [r0] + cmp r0, #0 + beq _08195788 + ldr r2, [r6] + ldr r0, _08195780 + adds r2, r2, r0 + ldr r3, _08195784 + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + orrs r0, r1 + b _0819579E + .align 2, 0 +_0819577C: .4byte gUnknown_2037284 +_08195780: .4byte 0x00000CDC +_08195784: .4byte gUnknown_85D6914 +_08195788: + ldr r2, [r6] + ldr r1, _081957A8 + adds r2, r2, r1 + ldr r3, _081957AC + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + ands r0, r1 +_0819579E: + str r0, [r2] +_081957A0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081957A8: .4byte 0x00000CDC +_081957AC: .4byte gUnknown_85D6924 + thumb_func_end sub_081956E4 + + thumb_func_start sub_081957B0 +sub_081957B0: @ 0x081957B0 + push {r4, lr} + ldr r0, _081957EC + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, _081957F0 + ldr r2, [r1] + ldr r3, _081957F4 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + lsrs r0, r0, #0xe + adds r1, r1, r0 + ldr r0, _081957F8 + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + cmp r0, #0x31 + bhi _08195800 + ldr r4, _081957FC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + strh r0, [r4] + b _08195816 + .align 2, 0 +_081957EC: .4byte 0x000040CE +_081957F0: .4byte gUnknown_3005AF0 +_081957F4: .4byte 0x00000CA9 +_081957F8: .4byte 0x00000DC8 +_081957FC: .4byte gUnknown_2037290 +_08195800: + cmp r0, #0x62 + bhi _08195810 + ldr r1, _0819580C + movs r0, #3 + b _08195814 + .align 2, 0 +_0819580C: .4byte gUnknown_2037290 +_08195810: + ldr r1, _0819581C + movs r0, #4 +_08195814: + strh r0, [r1] +_08195816: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819581C: .4byte gUnknown_2037290 + thumb_func_end sub_081957B0 + + thumb_func_start sub_08195820 +sub_08195820: @ 0x08195820 + push {r4, lr} + ldr r4, _0819584C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xff + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsrs r1, r1, #6 + strh r1, [r4] + ldrh r0, [r4] + movs r1, #0 + bl sub_08162528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819584C: .4byte gUnknown_203886A + thumb_func_end sub_08195820 + + thumb_func_start sub_08195850 +sub_08195850: @ 0x08195850 + push {lr} + ldr r3, _08195870 + ldrh r1, [r3] + ldr r0, _08195874 + cmp r1, r0 + bhi _0819586C + ldr r2, _08195878 + movs r0, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC +_0819586C: + pop {r0} + bx r0 + .align 2, 0 +_08195870: .4byte gUnknown_203886A +_08195874: .4byte 0x0000012B +_08195878: .4byte gUnknown_203B954 + thumb_func_end sub_08195850 + + thumb_func_start sub_0819587C +sub_0819587C: @ 0x0819587C + push {r4, r5, r6, r7, lr} + ldr r4, _081958D0 + ldr r0, [r4] + ldr r1, _081958D4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r7, r0, #0x1e + ldr r0, _081958D8 + bl sub_0809CF6C + lsls r0, r0, #0x18 + ldr r4, [r4] + lsls r1, r7, #1 + lsrs r5, r0, #0x16 + adds r1, r1, r5 + ldr r3, _081958DC + adds r6, r4, r3 + adds r3, r6, r1 + ldrh r2, [r3] + ldr r0, _081958E0 + cmp r2, r0 + bhi _081958CA + adds r2, #1 + strh r2, [r3] + movs r3, #0xdd + lsls r3, r3, #4 + adds r0, r4, r3 + adds r1, r0, r1 + adds r0, r5, #0 + ldrh r3, [r1] + cmp r7, r3 + bls _081958C0 + adds r0, #2 +_081958C0: + adds r0, r6, r0 + ldrh r0, [r0] + cmp r0, #0 + beq _081958CA + strh r2, [r1] +_081958CA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081958D0: .4byte gUnknown_3005AF0 +_081958D4: .4byte 0x00000CA9 +_081958D8: .4byte 0x000040CE +_081958DC: .4byte 0x00000DC8 +_081958E0: .4byte 0x0000270E + thumb_func_end sub_0819587C + + thumb_func_start sub_081958E4 +sub_081958E4: @ 0x081958E4 + push {r4, lr} + ldr r4, _08195918 + ldr r0, [r4] + ldr r1, _0819591C + ldrh r1, [r1] + ldr r2, _08195920 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _08195924 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08195918: .4byte gUnknown_3005AF0 +_0819591C: .4byte gUnknown_2037282 +_08195920: .4byte 0x00000CA8 +_08195924: .4byte 0x00000CA9 + thumb_func_end sub_081958E4 + + thumb_func_start sub_08195928 +sub_08195928: @ 0x08195928 + push {r4, r5, lr} + ldr r0, _08195970 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r4, _08195974 + ldr r2, [r4] + ldr r3, _08195978 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + lsrs r0, r0, #0xe + adds r1, r1, r0 + ldr r0, _0819597C + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + cmp r0, #0x29 + bls _08195988 + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _08195980 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _08195984 + adds r4, r4, r1 + b _081959A6 + .align 2, 0 +_08195970: .4byte 0x000040CE +_08195974: .4byte gUnknown_3005AF0 +_08195978: .4byte 0x00000CA9 +_0819597C: .4byte 0x00000DC8 +_08195980: .4byte gUnknown_85D6900 +_08195984: .4byte 0x00000DC6 +_08195988: + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _081959B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r3, _081959B4 + adds r4, r4, r3 +_081959A6: + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081959B0: .4byte gUnknown_85D68F4 +_081959B4: .4byte 0x00000DC6 + thumb_func_end sub_08195928 + + thumb_func_start sub_081959B8 +sub_081959B8: @ 0x081959B8 + push {r4, r5, lr} + ldr r4, _081959F0 + ldr r0, [r4] + ldr r1, _081959F4 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _08195A00 + ldr r0, [r4] + ldr r1, _081959F4 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081959F8 + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081959F4 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081959FC + strh r5, [r0] + b _08195A06 + .align 2, 0 +_081959F0: .4byte gUnknown_3005AF0 +_081959F4: .4byte 0x00000DC6 +_081959F8: .4byte gUnknown_2021C40 +_081959FC: .4byte gUnknown_2037290 +_08195A00: + ldr r1, _08195A0C + movs r0, #0 + strh r0, [r1] +_08195A06: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08195A0C: .4byte gUnknown_2037290 + thumb_func_end sub_081959B8 + + thumb_func_start sub_08195A10 +sub_08195A10: @ 0x08195A10 + push {lr} + bl sub_0802F1EC + ldr r0, _08195A2C + bl sub_08195A34 + ldr r1, _08195A30 + adds r0, #0xa + str r0, [r1] + movs r0, #0 + strb r0, [r1, #6] + pop {r0} + bx r0 + .align 2, 0 +_08195A2C: .4byte gUnknown_3005A50 +_08195A30: .4byte gUnknown_203CA4C + thumb_func_end sub_08195A10 + + thumb_func_start sub_08195A34 +sub_08195A34: @ 0x08195A34 + adds r3, r0, #0 + movs r1, #0 + ldrsh r0, [r3, r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #5 + movs r2, #2 + ldrsb r2, [r3, r2] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #3 + ldrsb r1, [r3, r1] + adds r0, r0, r1 + bx lr + thumb_func_end sub_08195A34 + + thumb_func_start sub_08195A58 +sub_08195A58: @ 0x08195A58 + push {lr} + bl sub_0802F1EC + ldr r0, _08195A7C + bl sub_08195A34 + adds r1, r0, #0 + ldr r2, _08195A80 + ldr r0, [r2] + cmp r0, r1 + bhi _08195A74 + subs r0, r1, r0 + cmp r0, #9 + bls _08195A84 +_08195A74: + str r1, [r2] + movs r0, #1 + b _08195A86 + .align 2, 0 +_08195A7C: .4byte gUnknown_3005A50 +_08195A80: .4byte gUnknown_203CA4C +_08195A84: + movs r0, #0 +_08195A86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195A58 + + thumb_func_start sub_08195A8C +sub_08195A8C: @ 0x08195A8C + push {r4, r5, lr} + movs r5, #1 + ldr r4, _08195ACC + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _08195AAE + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bne _08195AAE + movs r5, #2 +_08195AAE: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r5, #1 + adds r1, r1, r5 + cmp r0, r1 + blt _08195AD0 + movs r0, #0 + b _08195AD2 + .align 2, 0 +_08195ACC: .4byte gUnknown_2024190 +_08195AD0: + movs r0, #1 +_08195AD2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08195A8C + + thumb_func_start sub_08195AD8 +sub_08195AD8: @ 0x08195AD8 + push {r4, lr} + ldr r4, _08195B34 + ldrb r0, [r4, #0x17] + bl sub_0808555C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195B30 + ldrb r0, [r4, #0x14] + cmp r0, #0x39 + beq _08195B30 + cmp r0, #0xe + bne _08195B0E + movs r0, #0xf9 + lsls r0, r0, #2 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08195B0E + movs r0, #0xdc + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195B30 +_08195B0E: + ldr r0, _08195B34 + ldrb r0, [r0, #0x14] + cmp r0, #0x38 + bne _08195B38 + movs r0, #0xcf + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08195B38 + movs r0, #0x8b + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08195B38 +_08195B30: + movs r0, #0 + b _08195B3A + .align 2, 0 +_08195B34: .4byte gUnknown_2036FB8 +_08195B38: + movs r0, #1 +_08195B3A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08195AD8 + + thumb_func_start sub_08195B40 +sub_08195B40: @ 0x08195B40 + push {lr} + ldr r1, _08195B58 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bhi _08195B5C + movs r0, #0 + b _08195B62 + .align 2, 0 +_08195B58: .4byte gUnknown_203CA4C +_08195B5C: + movs r0, #0 + strb r0, [r1, #6] + movs r0, #1 +_08195B62: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195B40 + + thumb_func_start sub_08195B68 +sub_08195B68: @ 0x08195B68 + push {r4, lr} + bl sub_08195BCC + adds r4, r0, #0 + cmp r4, #0 + beq _08195BB8 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __umodsi3 + bl sub_08195BF8 + ldr r2, _08195BBC + movs r1, #0 + strh r0, [r2, #4] + strb r1, [r2, #7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4e + beq _08195BB8 + ldrh r0, [r2, #4] + bl sub_08196444 + adds r4, r0, #0 + bl sub_0819632C + ldr r1, _08195BC0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _08195BC4 + adds r0, r4, #0 + bl sub_08196310 + cmp r0, #0 + bne _08195BC4 +_08195BB8: + movs r0, #0 + b _08195BC6 + .align 2, 0 +_08195BBC: .4byte gUnknown_203CA4C +_08195BC0: .4byte gUnknown_2036FB8 +_08195BC4: + movs r0, #1 +_08195BC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08195B68 + + thumb_func_start sub_08195BCC +sub_08195BCC: @ 0x08195BCC + push {r4, r5, lr} + movs r4, #0 + movs r5, #0 +_08195BD2: + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195BE8 + adds r5, #1 +_08195BE8: + adds r4, #1 + cmp r4, #0x3f + bls _08195BD2 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195BCC + + thumb_func_start sub_08195BF8 +sub_08195BF8: @ 0x08195BF8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r6, _08195C1C +_08195C00: + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r4, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195C22 + cmp r5, #0 + bne _08195C20 + ldrh r0, [r6] + b _08195C2C + .align 2, 0 +_08195C1C: .4byte gUnknown_852AD40 +_08195C20: + subs r5, #1 +_08195C22: + adds r6, #0x10 + adds r4, #1 + cmp r4, #0x3f + bls _08195C00 + movs r0, #0x4e +_08195C2C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195BF8 + + thumb_func_start sub_08195C34 +sub_08195C34: @ 0x08195C34 + push {lr} + ldr r0, _08195C74 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195C78 + bl sub_08195B40 + cmp r0, #0 + beq _08195C78 + bl sub_08195A58 + cmp r0, #0 + beq _08195C78 + bl sub_08195A8C + cmp r0, #0 + beq _08195C78 + bl sub_08195AD8 + cmp r0, #0 + beq _08195C78 + bl sub_08195B68 + cmp r0, #0 + beq _08195C78 + bl sub_08195CA8 + movs r0, #1 + b _08195C7A + .align 2, 0 +_08195C74: .4byte 0x0000012F +_08195C78: + movs r0, #0 +_08195C7A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195C34 + + thumb_func_start sub_08195C80 +sub_08195C80: @ 0x08195C80 + push {lr} + ldr r1, _08195C90 + movs r0, #1 + strb r0, [r1, #7] + bl sub_08195CA8 + pop {r0} + bx r0 + .align 2, 0 +_08195C90: .4byte gUnknown_203CA4C + thumb_func_end sub_08195C80 + + thumb_func_start sub_08195C94 +sub_08195C94: @ 0x08195C94 + push {lr} + ldr r0, _08195CA4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_08195CA4: .4byte sub_08195CE0 + thumb_func_end sub_08195C94 + + thumb_func_start sub_08195CA8 +sub_08195CA8: @ 0x08195CA8 + push {lr} + ldr r0, _08195CD4 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08195CC2 + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B1C8 + bl sub_0808B658 +_08195CC2: + ldr r0, _08195CD8 + bl sub_080A306C + ldr r0, _08195CDC + movs r1, #1 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_08195CD4: .4byte gUnknown_203CA4C +_08195CD8: .4byte 0x00000107 +_08195CDC: .4byte sub_08195CE0 + thumb_func_end sub_08195CA8 + + thumb_func_start sub_08195CE0 +sub_08195CE0: @ 0x08195CE0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _08195D24 + adds r4, r0, r1 + ldr r1, _08195D28 + movs r2, #0 + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + cmp r0, #0 + beq _08195D1E + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r1, #0 + strh r1, [r4, #2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #7 + bls _08195D1E + adds r0, r5, #0 + bl sub_080A8964 +_08195D1E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08195D24: .4byte gUnknown_3005B68 +_08195D28: .4byte gUnknown_85D79F4 + thumb_func_end sub_08195CE0 + + thumb_func_start sub_08195D2C +sub_08195D2C: @ 0x08195D2C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _08195D54 + adds r5, r0, r1 + ldr r0, _08195D58 + bl sub_08003250 + strh r0, [r5, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + bne _08195D5C + adds r0, r4, #0 + b _08195DE0 + .align 2, 0 +_08195D54: .4byte gUnknown_3005B68 +_08195D58: .4byte gUnknown_85D7A14 +_08195D5C: + ldr r1, _08195D80 + movs r2, #0x80 + lsls r2, r2, #1 + movs r3, #0x9c + lsls r3, r3, #2 + movs r0, #0 + bl sub_0800195C + lsls r0, r0, #0x10 + ldr r1, _08195D84 + cmp r0, r1 + bne _08195D88 + ldrb r0, [r5, #4] + bl sub_08003444 + adds r0, r4, #0 + b _08195DE0 + .align 2, 0 +_08195D80: .4byte gUnknown_85D74E8 +_08195D84: .4byte 0xFFFF0000 +_08195D88: + ldr r1, _08195DC4 + ldr r3, _08195DC8 + movs r0, #0 + str r0, [sp] + movs r2, #0 + bl sub_08199728 + cmp r0, #0 + beq _08195DD8 + ldrb r0, [r5, #4] + movs r1, #0x88 + bl sub_08003B18 + ldr r0, _08195DCC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08195DD0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, _08195DD4 + movs r0, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + b _08195DE6 + .align 2, 0 +_08195DC4: .4byte gUnknown_85D7608 +_08195DC8: .4byte 0x00000279 +_08195DCC: .4byte gUnknown_85D74C8 +_08195DD0: .4byte gUnknown_85D75E8 +_08195DD4: .4byte 0xFFFFE000 +_08195DD8: + ldrb r0, [r5, #4] + bl sub_08003444 + adds r0, r6, #0 +_08195DE0: + bl sub_080A8964 + movs r0, #0 +_08195DE6: + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195D2C + + thumb_func_start sub_08195DF0 +sub_08195DF0: @ 0x08195DF0 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08195E5C + adds r4, r1, r0 + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08195E68 + ldrb r0, [r4, #4] + bl sub_0800365C + movs r1, #4 + ldrsh r0, [r4, r1] + movs r1, #0x9c + lsls r1, r1, #2 + movs r2, #0xe + bl sub_0819605C + ldr r1, _08195E60 + movs r0, #4 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0 + movs r2, #1 + movs r3, #0xf + bl sub_0800271C + ldr r0, _08195E64 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + ldrb r0, [r4, #4] + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08002248 + movs r0, #1 + b _08195E6A + .align 2, 0 +_08195E5C: .4byte gUnknown_3005B68 +_08195E60: .4byte 0x0000F279 +_08195E64: .4byte sub_08196294 +_08195E68: + movs r0, #0 +_08195E6A: + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195DF0 + + thumb_func_start sub_08195E74 +sub_08195E74: @ 0x08195E74 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08195E94 + adds r4, r1, r0 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08195E98 + movs r0, #0 + b _08195EA4 + .align 2, 0 +_08195E94: .4byte gUnknown_3005B68 +_08195E98: + movs r1, #4 + ldrsh r0, [r4, r1] + ldr r1, _08195EAC + bl sub_081961D8 + movs r0, #1 +_08195EA4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08195EAC: .4byte gUnknown_85D79EC + thumb_func_end sub_08195E74 + + thumb_func_start sub_08195EB0 +sub_08195EB0: @ 0x08195EB0 + push {lr} + movs r1, #0xc0 + lsls r1, r1, #3 + movs r0, #0 + movs r2, #1 + bl sub_08001E94 + cmp r0, #0 + bge _08195EC6 + movs r0, #0 + b _08195ED2 +_08195EC6: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 +_08195ED2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195EB0 + + thumb_func_start sub_08195ED8 +sub_08195ED8: @ 0x08195ED8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08195F1C + adds r4, r1, r0 + movs r1, #4 + ldrsh r0, [r4, r1] + bl sub_08196248 + cmp r0, #0 + bne _08195F28 + ldrb r0, [r4, #4] + movs r1, #0x88 + bl sub_08003B18 + ldr r1, _08195F20 + ldrb r0, [r1, #7] + cmp r0, #0 + bne _08195F0C + ldrh r0, [r1, #4] + ldr r1, _08195F24 + bl sub_081963AC +_08195F0C: + movs r1, #4 + ldrsh r0, [r4, r1] + ldr r1, _08195F24 + bl sub_081961D8 + movs r0, #1 + b _08195F2A + .align 2, 0 +_08195F1C: .4byte gUnknown_3005B68 +_08195F20: .4byte gUnknown_203CA4C +_08195F24: .4byte gUnknown_2021C7C +_08195F28: + movs r0, #0 +_08195F2A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08195ED8 + + thumb_func_start sub_08195F30 +sub_08195F30: @ 0x08195F30 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08195F80 + adds r4, r1, r0 + movs r1, #4 + ldrsh r0, [r4, r1] + bl sub_08196248 + cmp r0, #0 + bne _08195F88 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08195F88 + ldr r0, _08195F84 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _08195F88 + ldrb r0, [r4, #4] + movs r1, #0x88 + bl sub_08003B18 + ldrb r0, [r4, #4] + movs r1, #2 + bl sub_08003528 + movs r0, #0x84 + lsls r0, r0, #1 + bl sub_080A306C + movs r0, #1 + b _08195F8A + .align 2, 0 +_08195F80: .4byte gUnknown_3005B68 +_08195F84: .4byte gUnknown_3002360 +_08195F88: + movs r0, #0 +_08195F8A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08195F30 + + thumb_func_start sub_08195F90 +sub_08195F90: @ 0x08195F90 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08195FB8 + adds r4, r1, r0 + movs r1, #0xc0 + lsls r1, r1, #3 + movs r0, #0 + movs r2, #2 + bl sub_08001E94 + ldr r1, _08195FBC + cmp r0, r1 + ble _08195FC0 + movs r0, #0 + b _08195FE8 + .align 2, 0 +_08195FB8: .4byte gUnknown_3005B68 +_08195FBC: .4byte 0xFFFFE000 +_08195FC0: + movs r0, #0x1e + str r0, [sp] + movs r0, #6 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0xe + bl sub_080025E0 + ldrb r0, [r4, #0xa] + bl sub_080A8964 + ldrb r0, [r4, #4] + bl sub_08003444 + movs r0, #0 + bl sub_08002248 + movs r0, #1 +_08195FE8: + add sp, #8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08195F90 + + thumb_func_start sub_08195FF0 +sub_08195FF0: @ 0x08195FF0 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08196054 + bl sub_080A3168 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08196054 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, _0819604C + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08196046 + bl sub_08196F98 + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08196050 + adds r0, r0, r1 + bl sub_08092BF4 + bl sub_080D2C2C + bl sub_08096EEC + bl sub_080987E8 +_08196046: + movs r0, #1 + b _08196056 + .align 2, 0 +_0819604C: .4byte gUnknown_203CA4C +_08196050: .4byte gUnknown_2036FF0 +_08196054: + movs r0, #0 +_08196056: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08195FF0 + + thumb_func_start sub_0819605C +sub_0819605C: @ 0x0819605C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_0800401C + mov sb, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0800401C + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #2 + bl sub_0800401C + str r0, [sp, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_0800401C + adds r6, r0, #0 + adds r0, r4, #0 + movs r1, #4 + bl sub_0800401C + str r0, [sp, #0x10] + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r1, #0xa + bl sub_08001C34 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r5, r0 + lsls r7, r7, #0xc + movs r1, #0xf0 + lsls r1, r1, #8 + adds r0, r1, #0 + ands r7, r0 + adds r1, r7, #0 + orrs r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #8] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + ldr r4, [sp, #0xc] + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r3, #1 + mov r8, r3 + str r3, [sp] + str r3, [sp, #4] + mov r0, sb + adds r3, r4, #0 + bl sub_080025E0 + adds r1, r5, #1 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #8] + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + str r0, [sp] + mov r2, r8 + str r2, [sp, #4] + mov r0, sb + ldr r2, [sp, #0x14] + adds r3, r4, #0 + bl sub_080025E0 + adds r1, r5, #2 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [sp, #8] + adds r0, r3, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] + mov r0, r8 + str r0, [sp] + str r0, [sp, #4] + mov r0, sb + ldr r2, [sp, #0x1c] + adds r3, r4, #0 + bl sub_080025E0 + adds r1, r5, #3 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0xc] + lsls r6, r2, #0x18 + lsrs r6, r6, #0x18 + mov r3, r8 + str r3, [sp] + ldr r0, [sp, #0x10] + lsls r4, r0, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #4] + mov r0, sb + mov r2, sl + adds r3, r6, #0 + bl sub_080025E0 + adds r1, r5, #4 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r2, r8 + str r2, [sp] + str r4, [sp, #4] + mov r0, sb + ldr r2, [sp, #0x1c] + adds r3, r6, #0 + bl sub_080025E0 + adds r1, r5, #5 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + adds r0, r3, r2 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r3, r8 + str r3, [sp] + str r3, [sp, #4] + mov r0, sb + mov r2, sl + adds r3, r4, #0 + bl sub_080025E0 + adds r1, r5, #6 + orrs r1, r7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x18] + str r0, [sp] + mov r2, r8 + str r2, [sp, #4] + mov r0, sb + ldr r2, [sp, #0x14] + adds r3, r4, #0 + bl sub_080025E0 + adds r5, #7 + orrs r5, r7 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r3, r8 + str r3, [sp] + str r3, [sp, #4] + mov r0, sb + adds r1, r5, #0 + ldr r2, [sp, #0x1c] + adds r3, r4, #0 + bl sub_080025E0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819605C + + thumb_func_start sub_081961D8 +sub_081961D8: @ 0x081961D8 + push {lr} + sub sp, #0x10 + str r1, [sp] + mov r1, sp + movs r3, #0 + strb r0, [r1, #4] + movs r0, #1 + strb r0, [r1, #5] + mov r0, sp + movs r2, #0x20 + strb r2, [r0, #6] + movs r1, #2 + strb r1, [r0, #7] + strb r2, [r0, #8] + strb r1, [r0, #9] + strb r3, [r0, #0xa] + strb r3, [r0, #0xb] + mov r3, sp + ldrb r2, [r3, #0xc] + subs r1, #0x12 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + mov r2, sp + movs r3, #0xf + movs r0, #0xa0 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xd] + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r2, #0xd] + ands r1, r3 + movs r0, #0xe0 + orrs r1, r0 + strb r1, [r2, #0xd] + ldr r2, _08196244 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_08197794 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sp + movs r2, #0 + bl sub_08004548 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_08196244: .4byte gUnknown_30030B4 + thumb_func_end sub_081961D8 + + thumb_func_start sub_08196248 +sub_08196248: @ 0x08196248 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08196264 + ldrh r1, [r0, #0x2c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0819626C + ldr r0, _08196268 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _08196278 + .align 2, 0 +_08196264: .4byte gUnknown_3002360 +_08196268: .4byte gUnknown_30030B4 +_0819626C: + ldr r2, _08196290 + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08196278: + bl sub_08004630 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08196290: .4byte gUnknown_30030B4 + thumb_func_end sub_08196248 + + thumb_func_start sub_08196294 +sub_08196294: @ 0x08196294 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08196304 + adds r2, r1, r0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _081962FC + movs r1, #0 + strh r1, [r2] + ldrh r0, [r2, #2] + adds r0, #1 + strh r0, [r2, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + ble _081962C8 + strh r1, [r2, #2] +_081962C8: + movs r0, #2 + ldrsh r1, [r2, r0] + lsls r1, r1, #4 + ldr r0, _08196308 + adds r1, r1, r0 + strh r1, [r2, #4] + ldr r2, _0819630C + adds r0, r2, #0 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #4 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0 + movs r2, #1 + movs r3, #0xf + bl sub_0800271C + movs r0, #0 + bl sub_08002248 +_081962FC: + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_08196304: .4byte gUnknown_3005B68 +_08196308: .4byte 0x00000279 +_0819630C: .4byte 0xFFFFF000 + thumb_func_end sub_08196294 + + thumb_func_start sub_08196310 +sub_08196310: @ 0x08196310 + ldr r1, _08196324 + ldr r1, [r1] + ldr r2, _08196328 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r1, [r1] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_08196324: .4byte gUnknown_3005AEC +_08196328: .4byte 0x000009CA + thumb_func_end sub_08196310 + + thumb_func_start sub_0819632C +sub_0819632C: @ 0x0819632C + push {lr} + ldr r1, _08196344 + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r2, [r0, #0xa] + ldrh r1, [r0, #0xc] + adds r0, r2, #0 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + pop {r1} + bx r1 + .align 2, 0 +_08196344: .4byte gUnknown_852AD40 + thumb_func_end sub_0819632C + + thumb_func_start sub_08196348 +sub_08196348: @ 0x08196348 + push {r4, r5, r6, lr} + movs r5, #0 + movs r6, #0 + ldr r4, _08196370 +_08196350: + ldrh r0, [r4] + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0819635E + adds r6, #1 +_0819635E: + adds r4, #0x10 + adds r5, #1 + cmp r5, #0x3f + bls _08196350 + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08196370: .4byte gUnknown_852AD40 + thumb_func_end sub_08196348 + + thumb_func_start sub_08196374 +sub_08196374: @ 0x08196374 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r4, #0 + movs r6, #0 + ldr r5, _08196394 +_0819637E: + ldrh r0, [r5] + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0819639A + cmp r6, r7 + bne _08196398 + adds r0, r4, #0 + b _081963A4 + .align 2, 0 +_08196394: .4byte gUnknown_852AD40 +_08196398: + adds r6, #1 +_0819639A: + adds r5, #0x10 + adds r4, #1 + cmp r4, #0x4d + bls _0819637E + movs r0, #0x4e +_081963A4: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08196374 + + thumb_func_start sub_081963AC +sub_081963AC: @ 0x081963AC + push {r4, r5, r6, r7, lr} + adds r6, r1, #0 + movs r7, #0 + bl sub_08196444 + adds r5, r0, #0 + ldr r0, _081963E4 + strh r7, [r0] + adds r0, r5, #0 + bl sub_08196310 + cmp r0, #0 + beq _081963EC + adds r0, r5, #0 + bl sub_0819632C + ldr r1, _081963E8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _081963EC + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08196464 + b _08196430 + .align 2, 0 +_081963E4: .4byte gUnknown_203CA54 +_081963E8: .4byte gUnknown_2036FB8 +_081963EC: + adds r0, r5, #0 + bl sub_08196968 + cmp r0, #0 + beq _0819640A + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08196490 + adds r4, r0, #0 + movs r7, #1 + adds r0, r5, #0 + bl sub_080B1780 + b _08196432 +_0819640A: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08196428 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_081964BC + b _08196430 +_08196428: + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08196510 +_08196430: + adds r4, r0, #0 +_08196432: + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081965E0 + adds r0, r7, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081963AC + + thumb_func_start sub_08196444 +sub_08196444: @ 0x08196444 + push {lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _08196458 +_0819644C: + ldrh r0, [r1] + cmp r0, r3 + beq _0819645C + adds r1, #0x14 + adds r2, #1 + b _0819644C + .align 2, 0 +_08196458: .4byte gUnknown_85D6934 +_0819645C: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08196444 + + thumb_func_start sub_08196464 +sub_08196464: @ 0x08196464 + ldr r2, _08196488 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #0xe] + movs r2, #0xff + lsrs r0, r1, #8 + subs r0, #1 + ands r1, r2 + subs r1, #1 + ldr r2, _0819648C + lsls r0, r0, #2 + adds r0, r0, r2 + lsls r1, r1, #3 + ldr r0, [r0] + adds r0, r0, r1 + bx lr + .align 2, 0 +_08196488: .4byte gUnknown_85D6934 +_0819648C: .4byte gUnknown_85D74A8 + thumb_func_end sub_08196464 + + thumb_func_start sub_08196490 +sub_08196490: @ 0x08196490 + ldr r2, _081964B4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r1, [r1, #0x10] + movs r2, #0xff + lsrs r0, r1, #8 + subs r0, #1 + ands r1, r2 + subs r1, #1 + ldr r2, _081964B8 + lsls r0, r0, #2 + adds r0, r0, r2 + lsls r1, r1, #3 + ldr r0, [r0] + adds r0, r0, r1 + bx lr + .align 2, 0 +_081964B4: .4byte gUnknown_85D6934 +_081964B8: .4byte gUnknown_85D74A8 + thumb_func_end sub_08196490 + + thumb_func_start sub_081964BC +sub_081964BC: @ 0x081964BC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x10 + ldr r2, _08196508 + lsrs r0, r0, #0xf + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r0, r0, r1 + adds r2, #4 + adds r0, r0, r2 + ldrh r4, [r0] + cmp r4, #0 + bne _081964EC + movs r0, #0 + bl sub_08007140 +_081964EC: + movs r1, #0xff + lsrs r0, r4, #8 + subs r0, #1 + ands r4, r1 + subs r1, r4, #1 + ldr r2, _0819650C + lsls r0, r0, #2 + adds r0, r0, r2 + lsls r1, r1, #3 + ldr r0, [r0] + adds r0, r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08196508: .4byte gUnknown_85D6934 +_0819650C: .4byte gUnknown_85D749C + thumb_func_end sub_081964BC + + thumb_func_start sub_08196510 +sub_08196510: @ 0x08196510 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _081965AC + movs r5, #0 + movs r4, #0 + lsls r7, r6, #2 +_0819652C: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + bl sub_081969F8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _08196540 + adds r5, #1 +_08196540: + adds r4, #1 + cmp r4, #6 + ble _0819652C + cmp r5, #0 + beq _081965AC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + adds r5, r0, #0 + movs r4, #0 + b _08196562 +_0819655E: + subs r5, #1 +_08196560: + adds r4, #1 +_08196562: + cmp r4, #6 + bgt _08196580 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + bl sub_081969F8 + ldr r1, _081965A0 + strh r0, [r1, #2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _08196560 + cmp r5, #0 + bne _0819655E +_08196580: + ldr r0, _081965A0 + strh r4, [r0] + ldr r1, _081965A4 + adds r0, r7, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #0xc] + subs r2, r0, #1 + ldr r1, _081965A8 + ldr r0, [sp] + lsls r0, r0, #2 + adds r0, r0, r1 + lsls r1, r2, #3 + ldr r0, [r0] + adds r0, r0, r1 + b _081965D0 + .align 2, 0 +_081965A0: .4byte gUnknown_203CA54 +_081965A4: .4byte gUnknown_85D6934 +_081965A8: .4byte gUnknown_85D74B0 +_081965AC: + ldr r1, _081965D8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r2, [r0, #0xa] + lsrs r1, r2, #8 + subs r1, #1 + str r1, [sp] + movs r0, #0xff + ands r0, r2 + subs r2, r0, #1 + ldr r0, _081965DC + lsls r1, r1, #2 + adds r1, r1, r0 + lsls r2, r2, #3 + ldr r0, [r1] + adds r0, r0, r2 +_081965D0: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081965D8: .4byte gUnknown_85D6934 +_081965DC: .4byte gUnknown_85D74B0 + thumb_func_end sub_08196510 + + thumb_func_start sub_081965E0 +sub_081965E0: @ 0x081965E0 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r1, r4, #4 + bl sub_081965FC + ldr r1, [r4] + adds r0, r5, #0 + bl sub_08008BCC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081965E0 + + thumb_func_start sub_081965FC +sub_081965FC: @ 0x081965FC + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + movs r4, #0 + ldr r5, _08196628 +_08196606: + adds r1, r6, r4 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + blt _0819661A + adds r1, r0, #0 + ldr r2, [r5] + adds r0, r7, #0 + bl sub_0819662C +_0819661A: + adds r5, #4 + adds r4, #1 + cmp r4, #2 + ble _08196606 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08196628: .4byte gUnknown_85D7A1C + thumb_func_end sub_081965FC + + thumb_func_start sub_0819662C +sub_0819662C: @ 0x0819662C + push {lr} + ldr r3, _08196640 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r3, [r1] + adds r1, r2, #0 + bl _call_via_r3 + pop {r0} + bx r0 + .align 2, 0 +_08196640: .4byte gUnknown_85D7A28 + thumb_func_end sub_0819662C + + thumb_func_start sub_08196644 +sub_08196644: @ 0x08196644 + push {r4, r5, r6, lr} + adds r5, r1, #0 + ldr r2, _08196670 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r4, [r1] + movs r3, #0 + ldr r1, _08196674 + adds r6, r1, #0 +_0819665A: + lsls r2, r3, #3 + ldrh r0, [r1] + cmp r0, r4 + bne _08196678 + adds r0, r6, #4 + adds r0, r2, r0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + b _0819668C + .align 2, 0 +_08196670: .4byte gUnknown_85D6934 +_08196674: .4byte gUnknown_85D7A54 +_08196678: + adds r1, #8 + adds r3, #1 + cmp r3, #5 + bls _0819665A + lsls r1, r4, #5 + ldr r0, _08196694 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080088B8 +_0819668C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08196694: .4byte gUnknown_82E3840 + thumb_func_end sub_08196644 + + thumb_func_start sub_08196698 +sub_08196698: @ 0x08196698 + push {r4, lr} + adds r4, r1, #0 + bl sub_0819632C + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0 + bl sub_08124578 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08196698 + + thumb_func_start sub_081966B4 +sub_081966B4: @ 0x081966B4 + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x13 + bgt _081966D0 + movs r0, #0 + b _08196746 +_081966D0: + adds r0, r1, #0 + subs r0, #0x14 + cmp r0, #0x13 + bhi _081966DC + movs r0, #1 + b _08196746 +_081966DC: + adds r0, r1, #0 + subs r0, #0x28 + cmp r0, #9 + bhi _081966E8 + movs r0, #2 + b _08196746 +_081966E8: + adds r0, r1, #0 + subs r0, #0x32 + cmp r0, #9 + bhi _081966F4 + movs r0, #3 + b _08196746 +_081966F4: + adds r0, r1, #0 + subs r0, #0x3c + cmp r0, #9 + bhi _08196700 + movs r0, #4 + b _08196746 +_08196700: + adds r0, r1, #0 + subs r0, #0x46 + cmp r0, #9 + bhi _0819670C + movs r0, #5 + b _08196746 +_0819670C: + adds r0, r1, #0 + subs r0, #0x50 + cmp r0, #4 + bhi _08196718 + movs r0, #6 + b _08196746 +_08196718: + adds r0, r1, #0 + subs r0, #0x55 + cmp r0, #4 + bhi _08196724 + movs r0, #7 + b _08196746 +_08196724: + adds r0, r1, #0 + subs r0, #0x5a + cmp r0, #3 + bhi _08196730 + movs r0, #8 + b _08196746 +_08196730: + adds r0, r1, #0 + subs r0, #0x5e + cmp r0, #3 + bhi _0819673C + movs r0, #9 + b _08196746 +_0819673C: + cmp r1, #0x62 + beq _08196744 + movs r0, #0xb + b _08196746 +_08196744: + movs r0, #0xa +_08196746: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081966B4 + + thumb_func_start sub_0819674C +sub_0819674C: @ 0x0819674C + push {lr} + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x3b + bgt _08196768 + movs r0, #0 + b _0819678E +_08196768: + adds r0, r1, #0 + subs r0, #0x3c + cmp r0, #0x1d + bhi _08196774 + movs r0, #1 + b _0819678E +_08196774: + adds r0, r1, #0 + subs r0, #0x5a + cmp r0, #4 + bhi _08196780 + movs r0, #2 + b _0819678E +_08196780: + adds r0, r1, #0 + subs r0, #0x5f + cmp r0, #3 + bls _0819678C + movs r0, #4 + b _0819678E +_0819678C: + movs r0, #3 +_0819678E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0819674C + + thumb_func_start sub_08196794 +sub_08196794: @ 0x08196794 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r2, r0, #0 + mov r8, r1 + movs r3, #0 + ldr r0, _0819684C + ldrb r1, [r0] + adds r7, r0, #0 + cmp r1, #0xff + beq _08196858 + ldr r1, _08196850 + lsls r0, r2, #4 + adds r2, r0, r1 + ldrh r4, [r2, #0xa] + adds r1, r7, #0 +_081967B6: + ldrb r0, [r1] + cmp r0, r4 + bne _081967C4 + ldrb r0, [r1, #1] + ldrh r5, [r2, #0xc] + cmp r0, r5 + beq _081967CE +_081967C4: + adds r1, #0x14 + adds r3, #1 + ldrb r0, [r1] + cmp r0, #0xff + bne _081967B6 +_081967CE: + adds r1, r7, #0 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r5, r0, #2 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0xff + beq _08196858 + movs r6, #0 + adds r0, r1, #4 + adds r0, r5, r0 + ldr r4, [r0] + cmp r4, #0 + beq _081967FE + bl sub_081966B4 + lsls r0, r0, #0x18 + mov r2, sp + ldr r1, [r4, #4] + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrh r0, [r0, #2] + strh r0, [r2] + movs r6, #1 +_081967FE: + adds r0, r7, #0 + adds r0, #8 + adds r0, r5, r0 + ldr r4, [r0] + cmp r4, #0 + beq _08196822 + bl sub_0819674C + lsls r0, r0, #0x18 + lsls r1, r6, #1 + mov r3, sp + adds r2, r3, r1 + ldr r1, [r4, #4] + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldrh r0, [r0, #2] + strh r0, [r2] + adds r6, #1 +_08196822: + cmp r6, #0 + beq _08196858 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + lsls r0, r0, #1 + add r0, sp + ldrh r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _08196854 + adds r1, r1, r0 + mov r0, r8 + bl sub_080088B8 + b _0819685E + .align 2, 0 +_0819684C: .4byte gUnknown_852D9F4 +_08196850: .4byte gUnknown_852AD40 +_08196854: .4byte gUnknown_82EA31C +_08196858: + movs r0, #0xff + mov r5, r8 + strb r0, [r5] +_0819685E: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08196794 + + thumb_func_start sub_0819686C +sub_0819686C: @ 0x0819686C + push {r4, r5, r6, r7, lr} + adds r7, r1, #0 + ldr r2, _081968BC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r0, [r1] + bl sub_080B1B3C + adds r4, r0, #0 + lsls r4, r4, #0x10 + ldr r5, _081968C0 + lsrs r4, r4, #0xb + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r6, [r0] + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r4, r5 + ldrb r1, [r4, #0x18] + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4] + cmp r1, #1 + beq _081968C8 + cmp r1, #1 + ble _081968B6 + cmp r1, #2 + beq _081968C4 + cmp r1, #3 + beq _081968C8 +_081968B6: + lsls r0, r0, #3 + b _081968CA + .align 2, 0 +_081968BC: .4byte gUnknown_85D6934 +_081968C0: .4byte gUnknown_82E383C +_081968C4: + lsls r0, r0, #3 + b _081968CA +_081968C8: + lsls r0, r0, #4 +_081968CA: + adds r0, r0, r6 + ldrh r0, [r0, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081968E4 + adds r1, r1, r0 + adds r0, r7, #0 + bl sub_080088B8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081968E4: .4byte gUnknown_82EA31C + thumb_func_end sub_0819686C + + thumb_func_start sub_081968E8 +sub_081968E8: @ 0x081968E8 + push {lr} + adds r0, r1, #0 + ldr r2, _08196900 + ldr r1, _08196904 + ldrh r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + pop {r0} + bx r0 + .align 2, 0 +_08196900: .4byte gUnknown_85D7A84 +_08196904: .4byte gUnknown_203CA54 + thumb_func_end sub_081968E8 + + thumb_func_start sub_08196908 +sub_08196908: @ 0x08196908 + push {r4, r5, r6, lr} + adds r5, r1, #0 + movs r4, #0 + ldr r0, _0819693C + ldrh r1, [r0, #2] + adds r6, r0, #0 + cmp r1, #0 + beq _08196928 +_08196918: + adds r0, r1, #0 + movs r1, #0xa + bl __divsi3 + adds r1, r0, #0 + adds r4, #1 + cmp r1, #0 + bne _08196918 +_08196928: + ldrh r1, [r6, #2] + lsls r3, r4, #0x18 + lsrs r3, r3, #0x18 + adds r0, r5, #0 + movs r2, #0 + bl sub_080089D8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819693C: .4byte gUnknown_203CA54 + thumb_func_end sub_08196908 + + thumb_func_start sub_08196940 +sub_08196940: @ 0x08196940 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08196948 + b _08196950 + .align 2, 0 +_08196948: .4byte gUnknown_85D7AA0 +_0819694C: + adds r5, #2 + adds r4, #1 +_08196950: + cmp r4, #7 + bhi _08196960 + ldrh r0, [r5] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0819694C +_08196960: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08196940 + + thumb_func_start sub_08196968 +sub_08196968: @ 0x08196968 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + bl sub_08196940 + cmp r0, #4 + ble _081969E8 + bl sub_0802F300 + adds r4, r0, #0 + ldr r0, _081969D8 + ldr r0, [r0] + adds r0, #0xa + bl sub_08083C64 + adds r6, r0, #0 + ldr r0, _081969DC + ands r6, r0 + ldr r0, _081969E0 + ldr r0, [r0] + ldr r1, _081969E4 + adds r0, r0, r1 + ldrh r5, [r0] + bl sub_08196348 + mov sb, r0 + movs r0, #0xd + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + movs r1, #0xa + bl __divsi3 + mov r8, r0 + movs r0, #9 + bl sub_08084180 + eors r4, r5 + eors r5, r0 + adds r4, r4, r5 + eors r4, r6 + adds r0, r4, #0 + mov r1, r8 + bl __modsi3 + cmp r0, sb + bge _081969E8 + bl sub_08196374 + cmp r0, r7 + bne _081969E8 + movs r0, #1 + b _081969EA + .align 2, 0 +_081969D8: .4byte gUnknown_3005AF0 +_081969DC: .4byte 0x0000FFFF +_081969E0: .4byte gUnknown_3005AEC +_081969E4: .4byte 0x00002E6A +_081969E8: + movs r0, #0 +_081969EA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08196968 + + thumb_func_start sub_081969F8 +sub_081969F8: @ 0x081969F8 + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0 + cmp r0, #6 + bls _08196A08 + b _08196B72 +_08196A08: + lsls r0, r0, #2 + ldr r1, _08196A14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08196A14: .4byte _08196A18 +_08196A18: @ jump table + .4byte _08196A90 @ case 0 + .4byte _08196A34 @ case 1 + .4byte _08196AC4 @ case 2 + .4byte _08196B2C @ case 3 + .4byte _08196A68 @ case 4 + .4byte _08196AF8 @ case 5 + .4byte _08196B54 @ case 6 +_08196A34: + movs r3, #0 + ldr r0, _08196A60 + ldr r0, [r0] + ldr r1, _08196A64 + adds r0, r0, r1 +_08196A3E: + lsls r1, r3, #2 + adds r3, #1 + adds r1, r1, r0 + movs r2, #1 +_08196A46: + ldrh r6, [r1] + cmp r4, r6 + bhs _08196A4E + ldrh r4, [r1] +_08196A4E: + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _08196A46 + cmp r3, #1 + ble _08196A3E + movs r0, #3 + b _08196B70 + .align 2, 0 +_08196A60: .4byte gUnknown_3005AF0 +_08196A64: .4byte 0x00000D14 +_08196A68: + ldr r0, _08196A88 + ldr r0, [r0] + ldr r1, _08196A8C + adds r0, r0, r1 + movs r3, #1 +_08196A72: + ldrh r6, [r0] + cmp r4, r6 + bhs _08196A7A + ldrh r4, [r0] +_08196A7A: + adds r0, #2 + subs r3, #1 + cmp r3, #0 + bge _08196A72 + movs r0, #4 + b _08196B70 + .align 2, 0 +_08196A88: .4byte gUnknown_3005AF0 +_08196A8C: .4byte 0x00000E08 +_08196A90: + movs r3, #0 + ldr r0, _08196AC0 + ldr r0, [r0] + movs r1, #0xcf + lsls r1, r1, #4 + adds r0, r0, r1 +_08196A9C: + lsls r1, r3, #2 + adds r3, #1 + adds r1, r1, r0 + movs r2, #1 +_08196AA4: + ldrh r6, [r1] + cmp r4, r6 + bhs _08196AAC + ldrh r4, [r1] +_08196AAC: + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _08196AA4 + movs r2, #2 + cmp r3, #3 + ble _08196A9C + str r2, [r5] + b _08196B72 + .align 2, 0 +_08196AC0: .4byte gUnknown_3005AF0 +_08196AC4: + movs r3, #0 + ldr r0, _08196AF4 + ldr r0, [r0] + movs r1, #0xdd + lsls r1, r1, #4 + adds r0, r0, r1 +_08196AD0: + lsls r1, r3, #2 + adds r3, #1 + adds r1, r1, r0 + movs r2, #1 +_08196AD8: + ldrh r6, [r1] + cmp r4, r6 + bhs _08196AE0 + ldrh r4, [r1] +_08196AE0: + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _08196AD8 + movs r2, #2 + cmp r3, #1 + ble _08196AD0 + str r2, [r5] + b _08196B72 + .align 2, 0 +_08196AF4: .4byte gUnknown_3005AF0 +_08196AF8: + movs r3, #0 + ldr r0, _08196B24 + ldr r0, [r0] + ldr r1, _08196B28 + adds r0, r0, r1 +_08196B02: + lsls r1, r3, #2 + adds r3, #1 + adds r1, r1, r0 + movs r2, #1 +_08196B0A: + ldrh r6, [r1] + cmp r4, r6 + bhs _08196B12 + ldrh r4, [r1] +_08196B12: + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _08196B0A + movs r2, #2 + cmp r3, #1 + ble _08196B02 + str r2, [r5] + b _08196B72 + .align 2, 0 +_08196B24: .4byte gUnknown_3005AF0 +_08196B28: .4byte 0x00000DEA +_08196B2C: + ldr r0, _08196B4C + ldr r0, [r0] + ldr r1, _08196B50 + adds r0, r0, r1 + movs r3, #1 +_08196B36: + ldrh r6, [r0] + cmp r4, r6 + bhs _08196B3E + ldrh r4, [r0] +_08196B3E: + adds r0, #2 + subs r3, #1 + cmp r3, #0 + bge _08196B36 + movs r3, #2 + str r3, [r5] + b _08196B72 + .align 2, 0 +_08196B4C: .4byte gUnknown_3005AF0 +_08196B50: .4byte 0x00000DDE +_08196B54: + ldr r0, _08196B7C + ldr r0, [r0] + ldr r1, _08196B80 + adds r0, r0, r1 + movs r3, #1 +_08196B5E: + ldrh r6, [r0] + cmp r4, r6 + bhs _08196B66 + ldrh r4, [r0] +_08196B66: + adds r0, #2 + subs r3, #1 + cmp r3, #0 + bge _08196B5E + movs r0, #5 +_08196B70: + str r0, [r5] +_08196B72: + adds r0, r4, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_08196B7C: .4byte gUnknown_3005AF0 +_08196B80: .4byte 0x00000E1E + thumb_func_end sub_081969F8 + + thumb_func_start sub_08196B84 +sub_08196B84: @ 0x08196B84 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bhi _08196B92 + movs r0, #0 + b _08196C6E +_08196B92: + cmp r4, #0x13 + bhi _08196B9A + movs r0, #1 + b _08196C6E +_08196B9A: + cmp r4, #0x1d + bhi _08196BA2 + movs r0, #2 + b _08196C6E +_08196BA2: + cmp r4, #0x27 + bhi _08196BAA + movs r0, #3 + b _08196C6E +_08196BAA: + cmp r4, #0x31 + bhi _08196BB2 + movs r0, #4 + b _08196C6E +_08196BB2: + cmp r4, #0x3b + bhi _08196BBA + movs r0, #5 + b _08196C6E +_08196BBA: + cmp r4, #0x45 + bhi _08196BC2 + movs r0, #6 + b _08196C6E +_08196BC2: + cmp r4, #0x4f + bhi _08196BCA + movs r0, #7 + b _08196C6E +_08196BCA: + cmp r4, #0x59 + bhi _08196BD2 + movs r0, #8 + b _08196C6E +_08196BD2: + cmp r4, #0x63 + bhi _08196BDA + movs r0, #9 + b _08196C6E +_08196BDA: + cmp r4, #0x6d + bhi _08196BE2 + movs r0, #0xa + b _08196C6E +_08196BE2: + cmp r4, #0x77 + bhi _08196BEA + movs r0, #0xb + b _08196C6E +_08196BEA: + cmp r4, #0x81 + bhi _08196BF2 + movs r0, #0xc + b _08196C6E +_08196BF2: + cmp r4, #0x8b + bhi _08196BFA + movs r0, #0xd + b _08196C6E +_08196BFA: + cmp r4, #0x95 + bhi _08196C02 + movs r0, #0xe + b _08196C6E +_08196C02: + cmp r4, #0x9f + bhi _08196C0A + movs r0, #0xf + b _08196C6E +_08196C0A: + cmp r4, #0xa9 + bhi _08196C12 + movs r0, #0x10 + b _08196C6E +_08196C12: + cmp r4, #0xb3 + bhi _08196C1A + movs r0, #0x11 + b _08196C6E +_08196C1A: + cmp r4, #0xbd + bhi _08196C22 + movs r0, #0x12 + b _08196C6E +_08196C22: + cmp r4, #0xc7 + bls _08196C6C + movs r0, #0xcd + lsls r0, r0, #1 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08196C44 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08196C44: + ldr r0, _08196C68 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08196C60 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08196C60: + cmp r4, #0xc7 + bls _08196C6C + movs r0, #0x14 + b _08196C6E + .align 2, 0 +_08196C68: .4byte 0x00000199 +_08196C6C: + movs r0, #0x13 +_08196C6E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08196B84 + + thumb_func_start sub_08196C74 +sub_08196C74: @ 0x08196C74 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + movs r0, #0xfa + lsls r0, r0, #2 + bl sub_08000BC8 + adds r7, r0, #0 + cmp r7, #0 + bne _08196C96 + movs r0, #0xff + mov r1, r8 + strb r0, [r1] + b _08196D50 +_08196C96: + movs r0, #0 + bl sub_080BFD9C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + bl sub_080BFD9C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _08196D60 + mov sl, r0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r1, _08196D64 + mov sb, r1 + mov r0, sb + adds r1, r6, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r6, #0 + bl sub_08196B84 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08196D68 + adds r0, r7, #0 + bl sub_080088B8 + adds r5, r0, #0 + movs r6, #0xfb + strb r6, [r5] + adds r5, #1 + ldr r1, _08196D6C + adds r0, r5, #0 + bl sub_080088B8 + adds r5, r0, #0 + strb r6, [r5] + adds r5, #1 + ldr r0, _08196D70 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_080088B8 + mov r0, r8 + adds r1, r7, #0 + bl sub_08008BCC + adds r5, r0, #0 + bl sub_0809CD04 + cmp r0, #0 + beq _08196D4A + strb r6, [r5] + adds r5, #1 + movs r0, #0 + bl sub_080BFD4C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + bl sub_080BFD4C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + mov r0, sl + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + mov r0, sb + adds r1, r6, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r1, _08196D74 + adds r0, r5, #0 + bl sub_08008BCC +_08196D4A: + adds r0, r7, #0 + bl sub_08000BF0 +_08196D50: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08196D60: .4byte gUnknown_2021C40 +_08196D64: .4byte gUnknown_2021C54 +_08196D68: .4byte gUnknown_8262DF5 +_08196D6C: .4byte gUnknown_8262E39 +_08196D70: .4byte gUnknown_85D7AB0 +_08196D74: .4byte gUnknown_826316A + thumb_func_end sub_08196C74 + + thumb_func_start sub_08196D78 +sub_08196D78: @ 0x08196D78 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08196DB0 + movs r2, #0x80 + lsls r2, r2, #1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r3, r4, #0 + bl sub_0800195C + ldr r0, _08196DB4 + lsls r5, r5, #0x14 + lsrs r5, r5, #0x10 + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08196DB0: .4byte gUnknown_85D74E8 +_08196DB4: .4byte gUnknown_85D74C8 + thumb_func_end sub_08196D78 + + thumb_func_start sub_08196DB8 +sub_08196DB8: @ 0x08196DB8 + push {lr} + bl sub_0819605C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08196DB8 + + thumb_func_start sub_08196DC4 +sub_08196DC4: @ 0x08196DC4 + push {lr} + ldr r0, _08196DDC + bl sub_08003090 + ldr r0, _08196DE0 + movs r1, #0xff + strb r1, [r0] + ldr r0, _08196DE4 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08196DDC: .4byte gUnknown_85D7B28 +_08196DE0: .4byte gUnknown_203CA58 +_08196DE4: .4byte gUnknown_203CA59 + thumb_func_end sub_08196DC4 + + thumb_func_start sub_08196DE8 +sub_08196DE8: @ 0x08196DE8 + push {lr} + bl sub_080034D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08196DE8 + + thumb_func_start sub_08196DF4 +sub_08196DF4: @ 0x08196DF4 + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + bl sub_08004480 + bl sub_08196F98 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08196DF4 + + thumb_func_start sub_08196E18 +sub_08196E18: @ 0x08196E18 + push {lr} + bl sub_08004630 + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_08196E18 + + thumb_func_start sub_08196E2C +sub_08196E2C: @ 0x08196E2C + push {r4, r5, r6, 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, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + str r2, [sp] + mov r2, sp + movs r4, #0 + strb r0, [r2, #4] + mov r0, sp + strb r1, [r0, #5] + strb r4, [r0, #6] + movs r1, #2 + strb r1, [r0, #7] + strb r4, [r0, #8] + strb r1, [r0, #9] + strb r4, [r0, #0xa] + strb r4, [r0, #0xb] + mov r4, sp + ldrb r2, [r4, #0xc] + subs r1, #0x12 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0xc] + mov r0, sp + mov r2, r8 + lsls r2, 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, r6, #0x14 + ands r1, r4 + orrs r1, r6 + strb r1, [r0, #0xd] + ldr r2, _08196EB4 + ldrb r1, [r2] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + mov r0, sp + adds r1, r3, #0 + adds r2, r7, #0 + bl sub_08004548 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_08196EB4: .4byte gUnknown_30030B4 + thumb_func_end sub_08196E2C + + thumb_func_start sub_08196EB8 +sub_08196EB8: @ 0x08196EB8 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + ldr r3, _08196EFC + movs r4, #1 + ands r0, r4 + ldrb r2, [r3] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _08196F00 + str r5, [sp] + movs r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08196EFC: .4byte gUnknown_30030B4 +_08196F00: .4byte gUnknown_2021C7C + thumb_func_end sub_08196EB8 + + thumb_func_start sub_08196F04 +sub_08196F04: @ 0x08196F04 + push {r4, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _08196F48 + movs r4, #1 + ands r0, r4 + ldrb r2, [r3] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _08196F4C + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08196F48: .4byte gUnknown_30030B4 +_08196F4C: .4byte gUnknown_2021C7C + thumb_func_end sub_08196F04 + + thumb_func_start sub_08196F50 +sub_08196F50: @ 0x08196F50 + push {r4, r5, lr} + sub sp, #0x10 + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _08196F90 + movs r5, #1 + ands r0, r5 + ldrb r2, [r4] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r4] + ldr r2, _08196F94 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08196F90: .4byte gUnknown_30030B4 +_08196F94: .4byte gUnknown_2021C7C + thumb_func_end sub_08196F50 + + thumb_func_start sub_08196F98 +sub_08196F98: @ 0x08196F98 + push {lr} + movs r1, #0x80 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xf0 + bl sub_08098104 + movs r1, #0x85 + lsls r1, r1, #2 + movs r0, #0 + movs r2, #0xe0 + bl sub_080981B4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08196F98 + + thumb_func_start sub_08196FB8 +sub_08196FB8: @ 0x08196FB8 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08196FEC + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + cmp r4, #1 + bne _08196FE6 + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08196FE6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08196FEC: .4byte sub_081971E8 + thumb_func_end sub_08196FB8 + + thumb_func_start sub_08196FF0 +sub_08196FF0: @ 0x08196FF0 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08197024 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + cmp r4, #1 + bne _0819701E + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_0819701E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08197024: .4byte sub_08197098 + thumb_func_end sub_08196FF0 + + thumb_func_start sub_08197028 +sub_08197028: @ 0x08197028 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _0819705C + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_08003774 + cmp r4, #1 + bne _08197056 + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08197056: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819705C: .4byte sub_081975E8 + thumb_func_end sub_08197028 + + thumb_func_start sub_08197060 +sub_08197060: @ 0x08197060 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08197094 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_08003774 + cmp r4, #1 + bne _0819708E + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_0819708E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08197094: .4byte sub_081975A0 + thumb_func_end sub_08197060 + + thumb_func_start sub_08197098 +sub_08197098: @ 0x08197098 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r4, r2, #0 + ldr r2, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsls r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x10] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + movs r3, #0x85 + lsls r3, r3, #2 + lsrs r0, r1, #0x18 + str r0, [sp, #0xc] + movs r2, #0xff + lsls r2, r2, #0x18 + adds r2, r2, r1 + mov r8, r2 + lsrs r2, r2, #0x18 + lsrs r0, r4, #0x18 + mov sb, r0 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r4, r4, r0 + lsrs r4, r4, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + movs r6, #0xe + str r6, [sp, #8] + adds r0, r7, #0 + adds r1, r3, #0 + adds r3, r4, #0 + bl sub_080026E0 + ldr r1, _081971D0 + ldr r2, [sp, #0x10] + str r2, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0xc] + adds r3, r4, #0 + bl sub_080026E0 + ldr r1, _081971D4 + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + adds r0, r3, r2 + lsls r0, r0, #0x18 + mov sl, r0 + lsrs r2, r0, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + adds r0, r7, #0 + adds r3, r4, #0 + bl sub_080026E0 + mov r5, sb + ldr r0, [sp, #0x14] + add r0, sb + cmp sb, r0 + bge _0819716C + mov r3, r8 + str r3, [sp, #0x18] + movs r6, #1 + movs r0, #0xe + mov r8, r0 +_08197132: + lsls r4, r5, #0x18 + lsrs r4, r4, #0x18 + str r6, [sp] + str r6, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r7, #0 + ldr r1, _081971D8 + ldr r3, [sp, #0x18] + lsrs r2, r3, #0x18 + adds r3, r4, #0 + bl sub_080026E0 + str r6, [sp] + str r6, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r7, #0 + ldr r1, _081971DC + mov r3, sl + lsrs r2, r3, #0x18 + adds r3, r4, #0 + bl sub_080026E0 + adds r5, #1 + ldr r0, [sp, #0x14] + add r0, sb + cmp r5, r0 + blt _08197132 +_0819716C: + ldr r1, _081971E0 + ldr r2, [sp, #0xc] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r4, [sp, #0x14] + add r4, sb + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + movs r6, #0xe + str r6, [sp, #8] + adds r0, r7, #0 + adds r3, r4, #0 + bl sub_080026E0 + ldr r1, _081971E4 + ldr r0, [sp, #0x10] + str r0, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + adds r0, r7, #0 + ldr r2, [sp, #0xc] + adds r3, r4, #0 + bl sub_080026E0 + movs r1, #0x87 + lsls r1, r1, #2 + ldr r3, [sp, #0xc] + ldr r0, [sp, #0x10] + adds r2, r3, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r5, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + adds r0, r7, #0 + adds r3, r4, #0 + bl sub_080026E0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081971D0: .4byte 0x00000215 +_081971D4: .4byte 0x00000216 +_081971D8: .4byte 0x00000217 +_081971DC: .4byte 0x00000219 +_081971E0: .4byte 0x0000021A +_081971E4: .4byte 0x0000021B + thumb_func_end sub_08197098 + + thumb_func_start sub_081971E8 +sub_081971E8: @ 0x081971E8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + adds r6, r0, #0 + adds r5, r2, #0 + ldr r4, [sp, #0x50] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r2, r1, #0x18 + lsls r5, r5, #0x18 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r1, _08197544 + lsrs r0, r2, #0x18 + str r0, [sp, #0xc] + movs r0, #0xfd + lsls r0, r0, #0x18 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + str r2, [sp, #0x18] + lsrs r2, r5, #0x18 + mov sl, r2 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + movs r2, #0xf + mov r8, r2 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, _08197548 + mov sb, r0 + ldr r0, [sp, #0xc] + subs r0, #2 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + mov r1, sb + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _0819754C + ldr r0, [sp, #0xc] + subs r0, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x20] + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + adds r3, r5, #0 + bl sub_080026E0 + movs r1, #0x81 + lsls r1, r1, #2 + ldr r2, [sp, #0x10] + str r2, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0xc] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197550 + ldr r2, [sp, #0xc] + ldr r0, [sp, #0x10] + adds r7, r2, r0 + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x24] + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x24] + adds r3, r5, #0 + bl sub_080026E0 + adds r0, r7, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x28] + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + mov r1, sb + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197554 + adds r0, r7, #2 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x2c] + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x2c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r7, _08197558 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x18] + mov r3, sl + bl sub_080026E0 + ldr r5, _0819755C + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x1c] + mov r3, sl + bl sub_080026E0 + ldr r1, _08197560 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x20] + mov r3, sl + bl sub_080026E0 + ldr r2, [sp, #0x10] + str r2, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r1, _08197564 + ldr r2, [sp, #0xc] + mov r3, sl + bl sub_080026E0 + ldr r1, _08197568 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x24] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x28] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r1, _0819756C + ldr r2, [sp, #0x2c] + mov r3, sl + bl sub_080026E0 + mov r5, sl + adds r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + movs r0, #2 + mov sb, r0 + str r0, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + adds r7, #1 + str r4, [sp] + mov r0, sb + str r0, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, [sp, #0x10] + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + mov r0, sb + str r0, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r1, _08197564 + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + mov r0, sb + str r0, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + mov r0, sb + str r0, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r1, _0819756C + ldr r2, [sp, #0x2c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197570 + ldr r0, [sp, #0x14] + add sl, r0 + mov r5, sl + subs r5, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, _08197574 + mov sb, r0 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + mov r1, sb + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197578 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _0819757C + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0xc] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197580 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x24] + adds r3, r5, #0 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + mov r1, sb + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197584 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x2c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r1, _08197588 + mov r2, sl + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x18] + mov r3, sl + bl sub_080026E0 + ldr r5, _0819758C + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x1c] + mov r3, sl + bl sub_080026E0 + ldr r1, _08197590 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x20] + mov r3, sl + bl sub_080026E0 + ldr r1, _08197594 + ldr r2, [sp, #0x10] + str r2, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0xc] + mov r3, sl + bl sub_080026E0 + ldr r1, _08197598 + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x24] + mov r3, sl + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r6, #0 + adds r1, r5, #0 + ldr r2, [sp, #0x28] + mov r3, sl + bl sub_080026E0 + ldr r1, _0819759C + str r4, [sp] + str r4, [sp, #4] + mov r2, r8 + str r2, [sp, #8] + adds r0, r6, #0 + ldr r2, [sp, #0x2c] + mov r3, sl + bl sub_080026E0 + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08197544: .4byte 0x00000201 +_08197548: .4byte 0x00000202 +_0819754C: .4byte 0x00000203 +_08197550: .4byte 0x00000205 +_08197554: .4byte 0x00000206 +_08197558: .4byte 0x00000207 +_0819755C: .4byte 0x0000020D +_08197560: .4byte 0x0000020B +_08197564: .4byte 0x00000209 +_08197568: .4byte 0x0000060B +_0819756C: .4byte 0x0000020A +_08197570: .4byte 0x00000A07 +_08197574: .4byte 0x00000A0D +_08197578: .4byte 0x00000A0B +_0819757C: .4byte 0x00000A09 +_08197580: .4byte 0x00000E0B +_08197584: .4byte 0x00000A0A +_08197588: .4byte 0x00000A01 +_0819758C: .4byte 0x00000A02 +_08197590: .4byte 0x00000A03 +_08197594: .4byte 0x00000A04 +_08197598: .4byte 0x00000A05 +_0819759C: .4byte 0x00000A06 + thumb_func_end sub_081971E8 + + thumb_func_start sub_081975A0 +sub_081975A0: @ 0x081975A0 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + str r3, [sp] + adds r1, r1, r2 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r1, #0xe + str r1, [sp, #8] + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081975A0 + + thumb_func_start sub_081975E8 +sub_081975E8: @ 0x081975E8 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + movs r2, #0xfd + lsls r2, r2, #0x18 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r2, #0xc0 + lsls r2, r2, #0x13 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + str r3, [sp] + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r1, #0xe + str r1, [sp, #8] + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081975E8 + + thumb_func_start sub_08197638 +sub_08197638: @ 0x08197638 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0x85 + lsls r2, r2, #2 + movs r3, #0xe + bl sub_08197F44 + pop {r0} + bx r0 + thumb_func_end sub_08197638 + + thumb_func_start sub_08197650 +sub_08197650: @ 0x08197650 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r6, #0x80 + lsls r6, r6, #2 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0xf0 + bl sub_08098104 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #0xf + bl sub_08197924 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08197650 + + thumb_func_start sub_08197680 +sub_08197680: @ 0x08197680 + push {lr} + ldr r0, _08197690 + movs r1, #0xe0 + movs r2, #0x14 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_08197690: .4byte gUnknown_85D7B04 + thumb_func_end sub_08197680 + + thumb_func_start sub_08197694 +sub_08197694: @ 0x08197694 + push {lr} + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _081976A8 + movs r2, #0x14 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_081976A8: .4byte gUnknown_85D7B04 + thumb_func_end sub_08197694 + + thumb_func_start sub_081976AC +sub_081976AC: @ 0x081976AC + ldr r0, _081976B0 + bx lr + .align 2, 0 +_081976B0: .4byte gUnknown_85D7B04 + thumb_func_end sub_081976AC + + thumb_func_start sub_081976B4 +sub_081976B4: @ 0x081976B4 + push {lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bls _081976C0 + movs r1, #0 +_081976C0: + ldr r0, _081976CC + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_081976CC: .4byte gUnknown_85D7B04 + thumb_func_end sub_081976B4 + + thumb_func_start sub_081976D0 +sub_081976D0: @ 0x081976D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_08196F98 + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #2 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r5, [sp, #8] + str r6, [sp, #0xc] + adds r0, r4, #0 + movs r1, #0 + movs r3, #0xf + bl sub_08121E6C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081976D0 + + thumb_func_start sub_08197714 +sub_08197714: @ 0x08197714 + push {lr} + sub sp, #0xc + ldr r0, _08197738 + movs r1, #0x85 + lsls r1, r1, #2 + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08197738: .4byte gUnknown_85D7B38 + thumb_func_end sub_08197714 + + thumb_func_start sub_0819773C +sub_0819773C: @ 0x0819773C + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _08197764 + movs r1, #0x85 + lsls r1, r1, #2 + str r1, [sp] + movs r1, #0xe + str r1, [sp, #4] + str r0, [sp, #8] + adds r0, r2, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08198C08 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_08197764: .4byte gUnknown_85D7B38 + thumb_func_end sub_0819773C + + thumb_func_start sub_08197768 +sub_08197768: @ 0x08197768 + push {lr} + ldr r0, _08197784 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0819778C + ldr r0, _08197788 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + b _0819778E + .align 2, 0 +_08197784: .4byte gUnknown_30030B4 +_08197788: .4byte gUnknown_3005AF0 +_0819778C: + movs r0, #1 +_0819778E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08197768 + + thumb_func_start sub_08197794 +sub_08197794: @ 0x08197794 + push {lr} + ldr r0, _081977C0 + ldr r2, [r0] + ldrb r1, [r2, #0x14] + lsls r0, r1, #0x1d + lsrs r0, r0, #0x1d + cmp r0, #2 + bls _081977B0 + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x14] +_081977B0: + bl sub_08197768 + ldr r1, _081977C4 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081977C0: .4byte gUnknown_3005AF0 +_081977C4: .4byte gUnknown_85D7B24 + thumb_func_end sub_08197794 + + thumb_func_start sub_081977C8 +sub_081977C8: @ 0x081977C8 + push {r4, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r4, _08197808 + ldrb r0, [r4] + cmp r0, #0xff + bne _081977FC + lsls r0, r1, #0x19 + movs r1, #0x80 + lsls r1, r1, #0x12 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xf + str r0, [sp, #4] + movs r0, #0xad + lsls r0, r0, #1 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0x17 + movs r2, #1 + movs r3, #6 + bl sub_08198BB4 + strb r0, [r4] +_081977FC: + ldrb r0, [r4] + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08197808: .4byte gUnknown_203CA58 + thumb_func_end sub_081977C8 + + thumb_func_start sub_0819780C +sub_0819780C: @ 0x0819780C + ldr r0, _08197814 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08197814: .4byte gUnknown_203CA58 + thumb_func_end sub_0819780C + + thumb_func_start sub_08197818 +sub_08197818: @ 0x08197818 + push {r4, lr} + ldr r4, _08197830 + ldrb r0, [r4] + cmp r0, #0xff + beq _0819782A + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] +_0819782A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08197830: .4byte gUnknown_203CA58 + thumb_func_end sub_08197818 + + thumb_func_start sub_08197834 +sub_08197834: @ 0x08197834 + movs r0, #0x80 + lsls r0, r0, #2 + bx lr + .align 2, 0 + thumb_func_end sub_08197834 + + thumb_func_start sub_0819783C +sub_0819783C: @ 0x0819783C + movs r0, #0x85 + lsls r0, r0, #2 + bx lr + .align 2, 0 + thumb_func_end sub_0819783C + + thumb_func_start sub_08197844 +sub_08197844: @ 0x08197844 + push {r4, lr} + sub sp, #0xc + ldr r4, _08197878 + ldrb r0, [r4] + cmp r0, #0xff + bne _0819786C + movs r0, #3 + str r0, [sp] + movs r0, #0xe + str r0, [sp, #4] + movs r0, #0x94 + lsls r0, r0, #1 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0xa + bl sub_08198BB4 + strb r0, [r4] +_0819786C: + ldrb r0, [r4] + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08197878: .4byte gUnknown_203CA59 + thumb_func_end sub_08197844 + + thumb_func_start sub_0819787C +sub_0819787C: @ 0x0819787C + ldr r0, _08197884 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08197884: .4byte gUnknown_203CA59 + thumb_func_end sub_0819787C + + thumb_func_start sub_08197888 +sub_08197888: @ 0x08197888 + push {r4, lr} + ldr r4, _081978A0 + ldrb r0, [r4] + cmp r0, #0xff + beq _0819789A + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] +_0819789A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081978A0: .4byte gUnknown_203CA59 + thumb_func_end sub_08197888 + + thumb_func_start sub_081978A4 +sub_081978A4: @ 0x081978A4 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081978E8 + movs r4, #1 + ands r0, r4 + ldrb r2, [r3] + movs r1, #2 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _081978EC + str r5, [sp] + movs r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #0 + movs r1, #1 + bl sub_08196E2C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081978E8: .4byte gUnknown_30030B4 +_081978EC: .4byte gUnknown_2021C7C + thumb_func_end sub_081978A4 + + thumb_func_start sub_081978F0 +sub_081978F0: @ 0x081978F0 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080026E0 + cmp r4, #1 + bne _0819791A + movs r0, #0 + bl sub_08002248 +_0819791A: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081978F0 + + thumb_func_start sub_08197924 +sub_08197924: @ 0x08197924 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08197960 + strh r2, [r0] + ldr r0, _08197964 + strb r3, [r0] + ldr r1, _08197968 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + cmp r4, #1 + bne _0819795A + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_0819795A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08197960: .4byte gUnknown_203CA68 +_08197964: .4byte gUnknown_203CA6A +_08197968: .4byte sub_081979BC + thumb_func_end sub_08197924 + + thumb_func_start sub_0819796C +sub_0819796C: @ 0x0819796C + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081979B0 + strh r2, [r0] + ldr r5, _081979B4 + adds r0, r6, #0 + movs r1, #5 + bl sub_0800401C + strb r0, [r5] + ldr r1, _081979B8 + adds r0, r6, #0 + bl sub_08003F28 + adds r0, r6, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r6, #0 + bl sub_0800365C + cmp r4, #1 + bne _081979AA + adds r0, r6, #0 + movs r1, #3 + bl sub_08003528 +_081979AA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081979B0: .4byte gUnknown_203CA68 +_081979B4: .4byte gUnknown_203CA6A +_081979B8: .4byte sub_081979BC + thumb_func_end sub_0819796C + + thumb_func_start sub_081979BC +sub_081979BC: @ 0x081979BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x30 + mov r8, r0 + adds r5, r2, #0 + ldr r4, [sp, #0x50] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r2, r1, #0x18 + lsls r5, r5, #0x18 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r1, _08197DD0 + mov sl, r1 + ldrh r1, [r1] + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r0, r2, #0x18 + str r0, [sp, #0xc] + movs r0, #0xfd + lsls r0, r0, #0x18 + adds r2, r2, r0 + lsrs r2, r2, #0x18 + str r2, [sp, #0x18] + lsrs r7, r5, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + ldr r0, _08197DD4 + mov sb, r0 + ldrb r0, [r0] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + mov r2, sl + ldrh r1, [r2] + adds r1, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0xc] + subs r0, #2 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x1c] + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0xc] + subs r0, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x20] + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0x10] + str r2, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0xc] + ldr r0, [sp, #0x10] + adds r6, r2, r0 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x24] + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r6, #1 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x28] + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r6, #2 + lsls r2, r0, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x2c] + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x2c] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #0xd + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #0xb + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #9 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0x10] + str r2, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + adds r3, r7, #0 + bl sub_080026E0 + ldr r0, _08197DD8 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #0xd + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x28] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #0xa + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x2c] + adds r3, r7, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r5, r7, #1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + movs r6, #2 + str r6, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r6, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #9 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x10] + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + str r6, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r6, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x28] + adds r3, r5, #0 + bl sub_080026E0 + mov r0, sl + ldrh r1, [r0] + adds r1, #0xa + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r6, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x2c] + adds r3, r5, #0 + bl sub_080026E0 + ldr r0, _08197DDC + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x14] + adds r7, r7, r0 + subs r6, r7, #1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DE0 + adds r5, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r5, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DE4 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DE8 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DEC + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + adds r3, r6, #0 + bl sub_080026E0 + mov r0, sl + ldrh r0, [r0] + adds r5, r5, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r1, sb + ldrb r0, [r1] + str r0, [sp, #8] + mov r0, r8 + adds r1, r5, #0 + ldr r2, [sp, #0x28] + adds r3, r6, #0 + bl sub_080026E0 + ldr r2, _08197DF0 + adds r1, r2, #0 + mov r0, sl + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x2c] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DF4 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r3, r7, #0x18 + lsrs r6, r3, #0x18 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x18] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DF8 + adds r5, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r5, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x1c] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197DFC + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + b _08197E00 + .align 2, 0 +_08197DD0: .4byte gUnknown_203CA68 +_08197DD4: .4byte gUnknown_203CA6A +_08197DD8: .4byte 0x0000040B +_08197DDC: .4byte 0x00000807 +_08197DE0: .4byte 0x0000080D +_08197DE4: .4byte 0x0000080B +_08197DE8: .4byte 0x00000809 +_08197DEC: .4byte 0x00000C0B +_08197DF0: .4byte 0x0000080A +_08197DF4: .4byte 0x00000801 +_08197DF8: .4byte 0x00000802 +_08197DFC: .4byte 0x00000803 +_08197E00: + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x20] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197EB0 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x10] + str r0, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0xc] + adds r3, r6, #0 + bl sub_080026E0 + ldr r0, _08197EB4 + adds r1, r0, #0 + mov r2, sl + ldrh r2, [r2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x24] + adds r3, r6, #0 + bl sub_080026E0 + mov r0, sl + ldrh r0, [r0] + adds r5, r5, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r1, sb + ldrb r0, [r1] + str r0, [sp, #8] + mov r0, r8 + adds r1, r5, #0 + ldr r2, [sp, #0x28] + adds r3, r6, #0 + bl sub_080026E0 + ldr r2, _08197EB8 + adds r1, r2, #0 + mov r0, sl + ldrh r0, [r0] + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r4, [sp] + str r4, [sp, #4] + mov r2, sb + ldrb r0, [r2] + str r0, [sp, #8] + mov r0, r8 + ldr r2, [sp, #0x2c] + adds r3, r6, #0 + bl sub_080026E0 + add sp, #0x30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08197EB0: .4byte 0x00000804 +_08197EB4: .4byte 0x00000805 +_08197EB8: .4byte 0x00000806 + thumb_func_end sub_081979BC + + thumb_func_start sub_08197EBC +sub_08197EBC: @ 0x08197EBC + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08197EF0 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_08003774 + cmp r4, #1 + bne _08197EEA + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08197EEA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08197EF0: .4byte sub_08197EF4 + thumb_func_end sub_08197EBC + + thumb_func_start sub_08197EF4 +sub_08197EF4: @ 0x08197EF4 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + movs r2, #0xfd + lsls r2, r2, #0x18 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r2, #0xc0 + lsls r2, r2, #0x13 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + str r3, [sp] + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r1, r1, r2 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08197EF4 + + thumb_func_start sub_08197F44 +sub_08197F44: @ 0x08197F44 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08197F80 + strh r2, [r0] + ldr r0, _08197F84 + strb r3, [r0] + ldr r1, _08197F88 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_0800365C + cmp r4, #1 + bne _08197F7A + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08197F7A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08197F80: .4byte gUnknown_203CA68 +_08197F84: .4byte gUnknown_203CA6A +_08197F88: .4byte sub_08197FDC + thumb_func_end sub_08197F44 + + thumb_func_start sub_08197F8C +sub_08197F8C: @ 0x08197F8C + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _08197FD0 + strh r2, [r0] + ldr r5, _08197FD4 + adds r0, r6, #0 + movs r1, #5 + bl sub_0800401C + strb r0, [r5] + ldr r1, _08197FD8 + adds r0, r6, #0 + bl sub_08003F28 + adds r0, r6, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r6, #0 + bl sub_0800365C + cmp r4, #1 + bne _08197FCA + adds r0, r6, #0 + movs r1, #3 + bl sub_08003528 +_08197FCA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_08197FD0: .4byte gUnknown_203CA68 +_08197FD4: .4byte gUnknown_203CA6A +_08197FD8: .4byte sub_08197FDC + thumb_func_end sub_08197F8C + + thumb_func_start sub_08197FDC +sub_08197FDC: @ 0x08197FDC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + mov sb, r0 + adds r6, r1, #0 + adds r4, r2, #0 + ldr r0, [sp, #0x38] + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r6, r6, #0x18 + lsls r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x10] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x14] + ldr r2, _0819812C + ldrh r1, [r2] + lsrs r0, r6, #0x18 + str r0, [sp, #0xc] + movs r2, #0xff + lsls r2, r2, #0x18 + adds r6, r6, r2 + lsrs r6, r6, #0x18 + lsrs r0, r4, #0x18 + mov r8, r0 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + movs r5, #1 + str r5, [sp] + str r5, [sp, #4] + ldr r7, _08198130 + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080026E0 + ldr r2, _0819812C + ldrh r1, [r2] + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x10] + str r0, [sp] + str r5, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + ldr r2, [sp, #0xc] + adds r3, r4, #0 + bl sub_080026E0 + ldr r2, _0819812C + ldrh r1, [r2] + adds r1, #2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + adds r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + str r5, [sp] + str r5, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + mov r2, sl + adds r3, r4, #0 + bl sub_080026E0 + ldr r0, _0819812C + ldrh r1, [r0] + adds r1, #3 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r5, [sp] + ldr r2, [sp, #0x14] + str r2, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + adds r2, r6, #0 + mov r3, r8 + bl sub_080026E0 + ldr r0, _0819812C + ldrh r1, [r0] + adds r1, #5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r5, [sp] + ldr r2, [sp, #0x14] + str r2, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + mov r2, sl + mov r3, r8 + bl sub_080026E0 + ldr r0, _0819812C + ldrh r1, [r0] + adds r1, #6 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r2, [sp, #0x14] + add r8, r2 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + str r5, [sp] + str r5, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + adds r2, r6, #0 + mov r3, r8 + bl sub_080026E0 + ldr r2, _0819812C + ldrh r1, [r2] + adds r1, #7 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, [sp, #0x10] + str r0, [sp] + str r5, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + ldr r2, [sp, #0xc] + mov r3, r8 + bl sub_080026E0 + ldr r2, _0819812C + ldrh r1, [r2] + adds r1, #8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r5, [sp] + str r5, [sp, #4] + ldrb r0, [r7] + str r0, [sp, #8] + mov r0, sb + mov r2, sl + mov r3, r8 + bl sub_080026E0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819812C: .4byte gUnknown_203CA68 +_08198130: .4byte gUnknown_203CA6A + thumb_func_end sub_08197FDC + + thumb_func_start sub_08198134 +sub_08198134: @ 0x08198134 + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _08198168 + adds r0, r5, #0 + bl sub_08003F28 + adds r0, r5, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r5, #0 + bl sub_08003774 + cmp r4, #1 + bne _08198162 + adds r0, r5, #0 + movs r1, #3 + bl sub_08003528 +_08198162: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08198168: .4byte sub_0819816C + thumb_func_end sub_08198134 + + thumb_func_start sub_0819816C +sub_0819816C: @ 0x0819816C + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r3, r3, #0x18 + lsls r1, r1, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r4, r4, r2 + lsrs r4, r4, #0x18 + adds r5, r5, r2 + lsrs r5, r5, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r3, r3, r2 + lsrs r3, r3, #0x18 + str r3, [sp] + adds r1, r1, r2 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080026E0 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819816C + + thumb_func_start sub_081981B4 +sub_081981B4: @ 0x081981B4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r4, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sp + movs r1, #0 + movs r2, #8 + bl memset + cmp r6, #3 + bls _081981EA + movs r1, #0 + mov r0, sp + strb r1, [r0] + b _081981EE +_081981EA: + mov r0, sp + strb r6, [r0] +_081981EE: + mov r1, sp + mov r0, r8 + strb r0, [r1, #2] + movs r0, #2 + strb r0, [r1, #4] + movs r0, #0x1e + subs r0, r0, r7 + strb r0, [r1, #1] + strb r7, [r1, #3] + strb r5, [r1, #5] + strh r4, [r1, #6] + ldr r4, _08198218 + mov r0, sp + bl sub_08003250 + strb r0, [r4] + cmp r5, #0xf + bls _0819821C + movs r5, #0xf0 + b _08198220 + .align 2, 0 +_08198218: .4byte gUnknown_203CA6C +_0819821C: + lsls r0, r5, #0x1c + lsrs r5, r0, #0x18 +_08198220: + ldr r0, _0819823C + adds r1, r5, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _08198240 + ldrb r0, [r0] + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_0819823C: .4byte gUnknown_85D7B48 +_08198240: .4byte gUnknown_203CA6C + thumb_func_end sub_081981B4 + + thumb_func_start sub_08198244 +sub_08198244: @ 0x08198244 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r5, #0 + ldr r4, _081982E0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081982D4 + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0xff + bl sub_08003B18 + adds r0, r6, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r1, r4, #0 + lsls r7, r7, #0x18 + cmp r5, r4 + bhs _08198298 +_08198280: + adds r0, r6, r5 + ldrb r0, [r0] + cmp r0, #0xf8 + bne _0819828E + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_0819828E: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r1 + blo _08198280 +_08198298: + lsls r0, r4, #0x13 + lsrs r4, r0, #0x10 + ldr r5, _081982E0 + ldrb r0, [r5] + movs r1, #1 + bl sub_0800401C + movs r2, #0xec + mov r1, r8 + subs r2, r2, r1 + lsls r0, r0, #3 + subs r2, r2, r0 + subs r2, r2, r4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r5] + ldr r1, _081982E4 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r6, [sp, #8] + movs r3, #1 + bl sub_08199AFC + cmp r7, #0 + beq _081982D4 + ldrb r0, [r5] + movs r1, #3 + bl sub_08003528 +_081982D4: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081982E0: .4byte gUnknown_203CA6C +_081982E4: .4byte gUnknown_85D7B68 + thumb_func_end sub_08198244 + + thumb_func_start sub_081982E8 +sub_081982E8: @ 0x081982E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + mov sb, r0 + adds r6, r1, #0 + ldr r0, [sp, #0x34] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r5, #0 + ldr r0, _0819831C + ldrb r0, [r0] + cmp r0, #0xff + beq _081983C8 + cmp r2, #0 + beq _08198320 + add r0, sp, #0x14 + strb r5, [r0] + adds r1, r0, #0 + b _08198326 + .align 2, 0 +_0819831C: .4byte gUnknown_203CA6C +_08198320: + add r1, sp, #0x14 + movs r0, #0xf + strb r0, [r1] +_08198326: + movs r0, #1 + strb r0, [r1, #1] + movs r0, #2 + strb r0, [r1, #2] + ldr r4, _081983D8 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #0xff + bl sub_08003B18 + lsls r7, r7, #0x18 + cmp r6, #0 + beq _0819839E + adds r0, r6, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r2, r5, #0 + movs r1, #0 + cmp r1, r5 + bhs _0819836E +_08198356: + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0xf8 + bne _08198364 + subs r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08198364: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, r2 + blo _08198356 +_0819836E: + lsls r0, r5, #0x13 + lsrs r5, r0, #0x10 + ldr r4, _081983D8 + ldrb r0, [r4] + movs r1, #1 + bl sub_0800401C + movs r2, #0xec + mov r1, r8 + subs r2, r2, r1 + lsls r0, r0, #3 + subs r2, r2, r0 + subs r2, r2, r5 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r4] + add r1, sp, #0x14 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r6, [sp, #8] + movs r3, #1 + bl sub_08199AFC +_0819839E: + ldr r4, _081983D8 + ldrb r0, [r4] + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r2, sp, #0x14 + str r2, [sp, #8] + str r1, [sp, #0xc] + mov r1, sb + str r1, [sp, #0x10] + movs r1, #1 + movs r2, #4 + movs r3, #1 + bl sub_08199B84 + cmp r7, #0 + beq _081983C8 + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 +_081983C8: + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081983D8: .4byte gUnknown_203CA6C + thumb_func_end sub_081982E8 + + thumb_func_start sub_081983DC +sub_081983DC: @ 0x081983DC + push {lr} + ldr r1, _081983F0 + ldrb r0, [r1] + cmp r0, #0xff + beq _081983EC + movs r1, #3 + bl sub_08003528 +_081983EC: + pop {r0} + bx r0 + .align 2, 0 +_081983F0: .4byte gUnknown_203CA6C + thumb_func_end sub_081983DC + + thumb_func_start sub_081983F4 +sub_081983F4: @ 0x081983F4 + push {r4, lr} + ldr r4, _08198414 + ldrb r0, [r4] + cmp r0, #0xff + beq _0819840C + movs r1, #0xff + bl sub_08003B18 + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 +_0819840C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08198414: .4byte gUnknown_203CA6C + thumb_func_end sub_081983F4 + + thumb_func_start sub_08198418 +sub_08198418: @ 0x08198418 + push {r4, lr} + ldr r4, _08198448 + ldrb r0, [r4] + cmp r0, #0xff + beq _08198440 + movs r1, #0 + bl sub_08003B18 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] +_08198440: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08198448: .4byte gUnknown_203CA6C + thumb_func_end sub_08198418 + + thumb_func_start sub_0819844C +sub_0819844C: @ 0x0819844C + push {r4, r5, r6, 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 ip, r6 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r7, r5, #0x18 + ldr r5, _08198490 + movs r6, #0 + strb r2, [r5] + strb r3, [r5, #1] + strb r6, [r5, #3] + subs r4, #1 + strb r4, [r5, #4] + strb r0, [r5, #5] + strb r1, [r5, #6] + mov r0, r8 + strb r0, [r5, #8] + mov r4, ip + strb r4, [r5, #0xb] + cmp r7, #0 + blt _0819848C + movs r0, #4 + ldrsb r0, [r5, r0] + cmp r7, r0 + ble _08198494 +_0819848C: + strb r6, [r5, #2] + b _08198496 + .align 2, 0 +_08198490: .4byte gUnknown_203CA5C +_08198494: + strb r7, [r5, #2] +_08198496: + movs r0, #0 + bl sub_081985E8 + ldr r0, _081984AC + ldrb r0, [r0, #2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081984AC: .4byte gUnknown_203CA5C + thumb_func_end sub_0819844C + + thumb_func_start sub_081984B0 +sub_081984B0: @ 0x081984B0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r6, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + movs r4, #0 + str r4, [sp, #0xc] + bl sub_0819844C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x10 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081984B0 + + thumb_func_start sub_081984F0 +sub_081984F0: @ 0x081984F0 + push {r4, r5, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #1 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + mov r0, r8 + adds r1, r6, #0 + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl sub_081984B0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081984F0 + + thumb_func_start sub_0819854C +sub_0819854C: @ 0x0819854C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + adds r6, r0, #0 + mov r8, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _081985E0 + add r0, sp, #0xc + movs r2, #2 + bl memcpy + ldr r4, _081985E4 + ldrb r0, [r4, #6] + movs r1, #0 + bl sub_0800629C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r4, #6] + movs r1, #1 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4, #5] + mov sb, r1 + ldrb r2, [r4] + ldrb r1, [r4, #8] + adds r3, r1, #0 + muls r3, r6, r3 + ldrb r1, [r4, #1] + adds r3, r3, r1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r5, [sp] + str r0, [sp, #4] + mov r0, sb + movs r1, #0x11 + bl sub_08003A34 + ldrb r0, [r4, #5] + ldrb r1, [r4, #6] + ldrb r3, [r4] + ldrb r2, [r4, #8] + mov r5, r8 + muls r5, r2, r5 + adds r2, r5, #0 + ldrb r4, [r4, #1] + adds r2, r2, r4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + movs r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, sp, #0xc + bl sub_0800449C + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081985E0: .4byte gUnknown_85D7B6C +_081985E4: .4byte gUnknown_203CA5C + thumb_func_end sub_0819854C + + thumb_func_start sub_081985E8 +sub_081985E8: @ 0x081985E8 + push {r4, r5, lr} + ldr r1, _08198608 + ldrb r5, [r1, #2] + movs r2, #2 + ldrsb r2, [r1, r2] + lsls r0, r0, #0x18 + asrs r3, r0, #0x18 + adds r2, r2, r3 + movs r0, #3 + ldrsb r0, [r1, r0] + adds r4, r1, #0 + cmp r2, r0 + bge _0819860C + ldrb r0, [r4, #4] + b _0819861A + .align 2, 0 +_08198608: .4byte gUnknown_203CA5C +_0819860C: + movs r0, #4 + ldrsb r0, [r4, r0] + cmp r2, r0 + ble _08198618 + ldrb r0, [r4, #3] + b _0819861A +_08198618: + adds r0, r3, r5 +_0819861A: + strb r0, [r4, #2] + ldrb r1, [r4, #2] + adds r0, r5, #0 + bl sub_0819854C + ldrb r0, [r4, #2] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081985E8 + + thumb_func_start sub_0819862C +sub_0819862C: @ 0x0819862C + push {r4, r5, lr} + ldr r1, _0819864C + ldrb r5, [r1, #2] + movs r2, #2 + ldrsb r2, [r1, r2] + lsls r0, r0, #0x18 + asrs r3, r0, #0x18 + adds r2, r2, r3 + movs r0, #3 + ldrsb r0, [r1, r0] + adds r4, r1, #0 + cmp r2, r0 + bge _08198650 + ldrb r0, [r4, #3] + b _0819865E + .align 2, 0 +_0819864C: .4byte gUnknown_203CA5C +_08198650: + movs r0, #4 + ldrsb r0, [r4, r0] + cmp r2, r0 + ble _0819865C + ldrb r0, [r4, #4] + b _0819865E +_0819865C: + adds r0, r3, r5 +_0819865E: + strb r0, [r4, #2] + ldrb r1, [r4, #2] + adds r0, r5, #0 + bl sub_0819854C + ldrb r0, [r4, #2] + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_0819862C + + thumb_func_start sub_08198670 +sub_08198670: @ 0x08198670 + ldr r0, _08198678 + ldrb r0, [r0, #2] + bx lr + .align 2, 0 +_08198678: .4byte gUnknown_203CA5C + thumb_func_end sub_08198670 + + thumb_func_start sub_0819867C +sub_0819867C: @ 0x0819867C + push {r4, lr} + ldr r0, _081986A0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081986A8 + ldr r4, _081986A4 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08198698 + movs r0, #5 + bl sub_080A306C +_08198698: + movs r0, #2 + ldrsb r0, [r4, r0] + b _081986E2 + .align 2, 0 +_081986A0: .4byte gUnknown_3002360 +_081986A4: .4byte gUnknown_203CA5C +_081986A8: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081986B6 + movs r0, #1 + rsbs r0, r0, #0 + b _081986E2 +_081986B6: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081986CA + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _081986DA +_081986CA: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081986DE + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_081986DA: + bl sub_081985E8 +_081986DE: + movs r0, #2 + rsbs r0, r0, #0 +_081986E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0819867C + + thumb_func_start sub_081986E8 +sub_081986E8: @ 0x081986E8 + push {r4, r5, r6, lr} + ldr r4, _08198710 + ldrb r5, [r4, #2] + adds r6, r5, #0 + ldr r0, _08198714 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08198718 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08198708 + movs r0, #5 + bl sub_080A306C +_08198708: + movs r0, #2 + ldrsb r0, [r4, r0] + b _08198760 + .align 2, 0 +_08198710: .4byte gUnknown_203CA5C +_08198714: .4byte gUnknown_3002360 +_08198718: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08198726 + movs r0, #1 + rsbs r0, r0, #0 + b _08198760 +_08198726: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08198740 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819862C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _0819875C + b _08198756 +_08198740: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819875C + movs r0, #1 + bl sub_0819862C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + beq _0819875C +_08198756: + movs r0, #5 + bl sub_080A306C +_0819875C: + movs r0, #2 + rsbs r0, r0, #0 +_08198760: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081986E8 + + thumb_func_start sub_08198768 +sub_08198768: @ 0x08198768 + push {r4, lr} + ldr r2, _0819878C + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08198794 + ldr r4, _08198790 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08198784 + movs r0, #5 + bl sub_080A306C +_08198784: + movs r0, #2 + ldrsb r0, [r4, r0] + b _081987CC + .align 2, 0 +_0819878C: .4byte gUnknown_3002360 +_08198790: .4byte gUnknown_203CA5C +_08198794: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081987A2 + movs r0, #1 + rsbs r0, r0, #0 + b _081987CC +_081987A2: + ldrh r0, [r2, #0x30] + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x40 + bne _081987B8 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _081987C4 +_081987B8: + cmp r1, #0x80 + bne _081987C8 + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_081987C4: + bl sub_081985E8 +_081987C8: + movs r0, #2 + rsbs r0, r0, #0 +_081987CC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08198768 + + thumb_func_start sub_081987D4 +sub_081987D4: @ 0x081987D4 + push {r4, r5, r6, lr} + ldr r4, _081987FC + ldrb r5, [r4, #2] + adds r6, r5, #0 + ldr r2, _08198800 + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08198804 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _081987F4 + movs r0, #5 + bl sub_080A306C +_081987F4: + movs r0, #2 + ldrsb r0, [r4, r0] + b _0819884A + .align 2, 0 +_081987FC: .4byte gUnknown_203CA5C +_08198800: .4byte gUnknown_3002360 +_08198804: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08198812 + movs r0, #1 + rsbs r0, r0, #0 + b _0819884A +_08198812: + ldrh r0, [r2, #0x30] + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x40 + bne _0819882E + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819862C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r5, r0 + beq _08198846 + b _08198840 +_0819882E: + cmp r1, #0x80 + bne _08198846 + movs r0, #1 + bl sub_0819862C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + beq _08198846 +_08198840: + movs r0, #5 + bl sub_080A306C +_08198846: + movs r0, #2 + rsbs r0, r0, #0 +_0819884A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081987D4 + + thumb_func_start sub_08198850 +sub_08198850: @ 0x08198850 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r4, [sp, #0x2c] + ldr r5, [sp, #0x30] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _081988B4 +_08198884: + lsls r0, r4, #3 + ldr r1, [sp, #0x34] + adds r0, r0, r1 + ldr r2, [r0] + adds r0, r7, #0 + muls r0, r4, r0 + add r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r6, #0 + mov r1, sl + mov r3, sb + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08198884 +_081988B4: + adds r0, r6, #0 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08198850 + + thumb_func_start sub_081988CC +sub_081988CC: @ 0x081988CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x14] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x18] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x1c] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov sb, r6 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _0819894C +_08198914: + lsls r0, r4, #3 + ldr r1, [sp, #0x48] + adds r0, r0, r1 + ldr r2, [r0] + mov r0, sl + muls r0, r4, r0 + ldr r1, [sp, #0x1c] + adds r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + mov r0, sb + str r0, [sp, #0xc] + str r6, [sp, #0x10] + adds r0, r7, #0 + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x18] + bl sub_08199C0C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _08198914 +_0819894C: + adds r0, r7, #0 + movs r1, #2 + bl sub_08003528 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081988CC + + thumb_func_start sub_08198964 +sub_08198964: @ 0x08198964 + push {r4, r5, r6, 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, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #0 + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r7, [sp, #8] + mov r0, r8 + adds r1, r6, #0 + movs r3, #2 + bl sub_08198850 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08198964 + + thumb_func_start sub_081989B4 +sub_081989B4: @ 0x081989B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r6, r1, #0 + mov r8, r2 + ldr r1, [sp, #0x38] + mov sb, r1 + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x40] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r4, r8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + mov r0, sp + ldrb r1, [r0, #0x10] + strb r1, [r0, #4] + strb r6, [r0, #5] + adds r0, r6, #0 + movs r1, #5 + bl sub_080061B4 + mov r3, sp + lsls r0, 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, #6 + bl sub_080061B4 + mov r3, sp + adds r1, r5, #0 + ands r1, r0 + ldrb r2, [r3, #0xd] + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0xd] + adds r0, r6, #0 + movs r1, #7 + bl sub_080061B4 + mov r3, sp + lsls r0, 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, #4 + bl sub_080061B4 + 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, sb + strb r2, [r0, #0xa] + adds r0, r6, #0 + movs r1, #3 + bl sub_080061B4 + mov r1, sp + strb r0, [r1, #0xb] + mov r0, sp + mov r4, r8 + strb r4, [r0, #6] + strb r4, [r0, #8] + movs r4, #0 + cmp r4, r7 + bhs _08198AAE + mov r5, sp +_08198A7E: + ldr r1, [sp, #0x48] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r2, [sp, #0x44] + adds r0, r0, r2 + ldr r0, [r0] + str r0, [sp] + mov r0, sl + muls r0, r4, r0 + ldr r1, [sp, #0x14] + adds r0, r1, r0 + strb r0, [r5, #7] + strb r0, [r5, #9] + mov r0, sp + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r7 + blo _08198A7E +_08198AAE: + ldr r0, [sp, #0x10] + movs r1, #2 + bl sub_08003528 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081989B4 + + thumb_func_start sub_08198AC8 +sub_08198AC8: @ 0x08198AC8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov sb, r0 + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + ldr r7, [sp, #0x30] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080061B4 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r4, #0 + movs r1, #2 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + str r6, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + str r7, [sp, #0xc] + ldr r0, [sp, #0x34] + str r0, [sp, #0x10] + mov r0, sb + adds r1, r4, #0 + adds r2, r5, #0 + movs r3, #2 + bl sub_081989B4 + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08198AC8 + + thumb_func_start sub_08198B34 +sub_08198B34: @ 0x08198B34 + push {r4, r5, r6, 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 + strb r1, [r0] + strb r2, [r0, #1] + strb r3, [r0, #2] + strb r4, [r0, #3] + strb r5, [r0, #4] + strb r6, [r0, #5] + mov r1, r8 + strh r1, [r0, #6] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08198B34 + + thumb_func_start sub_08198B60 +sub_08198B60: @ 0x08198B60 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x18 + mov r8, r0 + ldr r0, [sp, #0x2c] + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + str r6, [sp, #0xc] + add r0, sp, #0x10 + bl sub_08198B34 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + mov r2, r8 + str r0, [r2] + str r1, [r2, #4] + mov r0, r8 + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r2} + bx r2 + thumb_func_end sub_08198B60 + + thumb_func_start sub_08198BB4 +sub_08198BB4: @ 0x08198BB4 + push {r4, r5, r6, lr} + sub sp, #0x18 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r3, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + str r2, [sp, #0xc] + add r0, sp, #0x10 + adds r1, r4, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_08198B34 + add r0, sp, #0x10 + bl sub_08003250 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add sp, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08198BB4 + + thumb_func_start sub_08198C08 +sub_08198C08: @ 0x08198C08 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + adds r6, r1, #0 + mov r8, r2 + mov sb, r3 + ldr r4, [sp, #0x3c] + ldr r5, [sp, #0x40] + ldr r1, [sp, #0x44] + mov sl, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r1, sl + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + ldr r7, _08198D3C + bl sub_08003250 + strb r0, [r7] + ldrb r0, [r7] + movs r1, #1 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08197F44 + ldr r0, _08198D40 + str r0, [sp, #0xc] + add r1, sp, #0xc + ldrb r0, [r7] + strb r0, [r1, #4] + adds r0, r1, #0 + strb r6, [r0, #5] + adds r0, r6, #0 + movs r1, #0 + bl sub_080061B4 + add r1, sp, #0xc + add r0, r8 + strb r0, [r1, #6] + adds r0, r1, #0 + mov r1, sb + strb r1, [r0, #7] + adds r1, r0, #0 + ldrb r0, [r0, #6] + strb r0, [r1, #8] + adds r0, r1, #0 + ldrb r0, [r0, #7] + strb r0, [r1, #9] + adds r0, r6, #0 + movs r1, #5 + bl sub_080061B4 + add r3, sp, #0xc + lsls r0, 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, #6 + bl sub_080061B4 + add r3, sp, #0xc + adds r1, r5, #0 + ands r1, r0 + ldrb r2, [r3, #0xd] + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0xd] + adds r0, r6, #0 + movs r1, #7 + bl sub_080061B4 + add r3, sp, #0xc + lsls r0, 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, #4 + bl sub_080061B4 + 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, #2 + bl sub_080061B4 + add r1, sp, #0xc + strb r0, [r1, #0xa] + adds r0, r6, #0 + movs r1, #3 + bl sub_080061B4 + add r1, sp, #0xc + strb r0, [r1, #0xb] + adds r0, r1, #0 + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + adds r0, r6, #0 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r7] + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + mov r0, sl + str r0, [sp, #8] + adds r0, r1, #0 + adds r1, r6, #0 + mov r2, r8 + mov r3, sb + bl sub_081984B0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08198D3C: .4byte gUnknown_203CA6B +_08198D40: .4byte gUnknown_85D7B40 + thumb_func_end sub_08198C08 + + thumb_func_start sub_08198D44 +sub_08198D44: @ 0x08198D44 + push {lr} + sub sp, #0xc + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r2, [sp] + str r3, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + movs r3, #2 + bl sub_08198C08 + add sp, #0xc + pop {r0} + bx r0 + thumb_func_end sub_08198D44 + + thumb_func_start sub_08198D68 +sub_08198D68: @ 0x08198D68 + push {r4, lr} + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _08198D7E + bl sub_08198D88 +_08198D7E: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08198D68 + + thumb_func_start sub_08198D88 +sub_08198D88: @ 0x08198D88 + push {r4, lr} + ldr r4, _08198DA0 + ldrb r0, [r4] + movs r1, #1 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08198DA0: .4byte gUnknown_203CA6B + thumb_func_end sub_08198D88 + + thumb_func_start sub_08198DA4 +sub_08198DA4: @ 0x08198DA4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, [sp, #0x40] + ldr r5, [sp, #0x44] + ldr r6, [sp, #0x48] + ldr r7, [sp, #0x4c] + mov r8, r7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0xc] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x18] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r5, [sp, #0x1c] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r5, #0 + cmp r5, sb + bhs _08198E4A +_08198DF0: + movs r4, #0 + adds r1, r5, #1 + mov r8, r1 + cmp r4, r6 + bhs _08198E40 + ldr r7, [sp, #0x1c] + adds r0, r7, #0 + muls r0, r5, r0 + ldr r1, [sp, #0x14] + adds r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_08198E08: + adds r0, r5, #0 + muls r0, r6, r0 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, [sp, #0x50] + adds r0, r0, r1 + ldr r2, [r0] + ldr r0, [sp, #0x18] + adds r3, r0, #0 + muls r3, r4, r3 + ldr r1, [sp, #0x10] + adds r3, r1, r3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r7, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + mov r0, sl + ldr r1, [sp, #0xc] + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _08198E08 +_08198E40: + mov r7, r8 + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, sb + blo _08198DF0 +_08198E4A: + mov r0, sl + movs r1, #2 + bl sub_08003528 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08198DA4 + + thumb_func_start sub_08198E64 +sub_08198E64: @ 0x08198E64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x18 + mov sb, r0 + mov r8, r1 + adds r4, r2, #0 + adds r5, r3, #0 + ldr r6, [sp, #0x34] + ldr r3, [sp, #0x38] + ldr r7, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #0 + str r3, [sp, #0x14] + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x14] + str r3, [sp, #0xc] + str r7, [sp, #0x10] + mov r0, sb + mov r1, r8 + movs r3, #0 + bl sub_08198DA4 + add sp, #0x18 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08198E64 + + thumb_func_start sub_08198ECC +sub_08198ECC: @ 0x08198ECC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r4, [sp, #0x40] + ldr r5, [sp, #0x44] + ldr r6, [sp, #0x48] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x14] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x18] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp, #0x1c] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r8, r5 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov sl, r6 + mov r0, sp + ldrb r1, [r0, #0x10] + strb r1, [r0, #4] + strb r7, [r0, #5] + adds r0, r7, #0 + movs r1, #5 + bl sub_080061B4 + mov r3, sp + lsls r0, 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, r7, #0 + movs r1, #6 + bl sub_080061B4 + mov r3, sp + adds r1, r5, #0 + ands r1, r0 + ldrb r2, [r3, #0xd] + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0xd] + adds r0, r7, #0 + movs r1, #7 + bl sub_080061B4 + mov r3, sp + lsls r0, r0, #4 + ldrb r2, [r3, #0xd] + adds r1, r5, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0xd] + adds r0, r7, #0 + movs r1, #4 + bl sub_080061B4 + mov r1, sp + ands r5, r0 + ldrb r0, [r1, #0xc] + ands r4, r0 + orrs r4, r5 + strb r4, [r1, #0xc] + adds r0, r7, #0 + movs r1, #2 + bl sub_080061B4 + mov r1, sp + strb r0, [r1, #0xa] + adds r0, r7, #0 + movs r1, #3 + bl sub_080061B4 + mov r1, sp + strb r0, [r1, #0xb] + movs r6, #0 + cmp r6, sl + bhs _08198FEE +_08198F8A: + movs r5, #0 + adds r2, r6, #1 + mov sb, r2 + cmp r5, r8 + bhs _08198FE4 + mov r4, sp +_08198F96: + mov r0, r8 + muls r0, r6, r0 + adds r0, r0, r5 + ldr r1, [sp, #0x50] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #3 + ldr r2, [sp, #0x4c] + adds r0, r0, r2 + ldr r0, [r0] + str r0, [sp] + ldr r1, [sp, #0x1c] + adds r0, r1, #0 + muls r0, r5, r0 + ldr r2, [sp, #0x14] + adds r0, r2, r0 + strb r0, [r4, #6] + adds r0, r7, #0 + movs r1, #1 + bl sub_080061B4 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, [sp, #0x18] + adds r1, r0, r1 + strb r1, [r4, #7] + ldrb r0, [r4, #6] + strb r0, [r4, #8] + strb r1, [r4, #9] + mov r0, sp + movs r1, #0xff + movs r2, #0 + bl sub_08004548 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r8 + blo _08198F96 +_08198FE4: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + cmp r6, sl + blo _08198F8A +_08198FEE: + ldr r0, [sp, #0x10] + movs r1, #2 + bl sub_08003528 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08198ECC + + thumb_func_start sub_08199008 +sub_08199008: @ 0x08199008 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + mov r8, r0 + adds r3, r1, #0 + adds r4, r2, #0 + ldr r5, [sp, #0x30] + ldr r6, [sp, #0x34] + ldr r7, [sp, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r3, #0 + movs r1, #0 + str r3, [sp, #0x14] + bl sub_080061B4 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r4, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + str r7, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x10] + mov r0, r8 + ldr r3, [sp, #0x14] + adds r1, r3, #0 + movs r3, #0 + bl sub_08198ECC + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199008 + + thumb_func_start sub_08199068 +sub_08199068: @ 0x08199068 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r4, [sp, #0x20] + mov ip, r4 + ldr r4, [sp, #0x24] + mov r8, r4 + ldr r4, [sp, #0x28] + mov sb, r4 + ldr r4, [sp, #0x2c] + mov sl, r4 + ldr r4, [sp, #0x30] + ldr r5, [sp, #0x34] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r7, r5, #0x18 + ldr r5, _081990C0 + movs r6, #0 + strb r2, [r5] + strb r3, [r5, #1] + strb r6, [r5, #3] + subs r4, #1 + strb r4, [r5, #4] + strb r0, [r5, #5] + strb r1, [r5, #6] + mov r0, ip + strb r0, [r5, #7] + mov r4, r8 + strb r4, [r5, #8] + mov r0, sb + strb r0, [r5, #9] + mov r4, sl + strb r4, [r5, #0xa] + cmp r7, #0 + blt _081990BC + movs r0, #4 + ldrsb r0, [r5, r0] + cmp r7, r0 + ble _081990C4 +_081990BC: + strb r6, [r5, #2] + b _081990C6 + .align 2, 0 +_081990C0: .4byte gUnknown_203CA5C +_081990C4: + strb r7, [r5, #2] +_081990C6: + movs r0, #0 + movs r1, #0 + bl sub_08199250 + ldr r0, _081990E0 + ldrb r0, [r0, #2] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081990E0: .4byte gUnknown_203CA5C + thumb_func_end sub_08199068 + + thumb_func_start sub_081990E4 +sub_081990E4: @ 0x081990E4 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0x20 + mov sb, r0 + mov r8, r1 + mov sl, r2 + ldr r6, [sp, #0x3c] + ldr r4, [sp, #0x40] + ldr r5, [sp, #0x44] + ldr r2, [sp, #0x48] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r0, r8 + movs r1, #1 + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + muls r1, r5, r1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r6, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + str r5, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [sp, #0x18] + str r2, [sp, #0x14] + mov r0, sb + mov r1, r8 + mov r2, sl + ldr r3, [sp, #0x1c] + bl sub_08199068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081990E4 + + thumb_func_start sub_08199170 +sub_08199170: @ 0x08199170 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _08199248 + add r0, sp, #0xc + movs r2, #2 + bl memcpy + ldr r5, _0819924C + ldrb r0, [r5, #6] + movs r1, #0 + bl sub_0800629C + mov r8, r0 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldrb r0, [r5, #6] + movs r1, #1 + bl sub_0800629C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldrb r0, [r5, #9] + mov sl, r0 + mov r0, sb + mov r1, sl + bl __umodsi3 + ldrb r1, [r5, #7] + adds r4, r1, #0 + muls r4, r0, r4 + ldrb r1, [r5] + adds r4, r4, r1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, sb + mov r1, sl + bl __udivsi3 + ldrb r1, [r5, #8] + adds r3, r1, #0 + muls r3, r0, r3 + ldrb r0, [r5, #1] + adds r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldrb r0, [r5, #5] + mov r1, r8 + str r1, [sp] + str r6, [sp, #4] + movs r1, #0x11 + adds r2, r4, #0 + bl sub_08003A34 + ldrb r6, [r5, #9] + adds r0, r7, #0 + adds r1, r6, #0 + bl __umodsi3 + ldrb r1, [r5, #7] + adds r4, r1, #0 + muls r4, r0, r4 + ldrb r0, [r5] + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r7, #0 + adds r1, r6, #0 + bl __udivsi3 + ldrb r1, [r5, #8] + adds r2, r1, #0 + muls r2, r0, r2 + ldrb r1, [r5, #1] + adds r2, r2, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r0, [r5, #5] + ldrb r1, [r5, #6] + str r2, [sp] + movs r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, sp, #0xc + adds r3, r4, #0 + bl sub_0800449C + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08199248: .4byte gUnknown_85D7B6C +_0819924C: .4byte gUnknown_203CA5C + thumb_func_end sub_08199170 + + thumb_func_start sub_08199250 +sub_08199250: @ 0x08199250 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + ldr r1, _0819928C + ldrb r2, [r1, #2] + mov r8, r2 + lsls r0, r0, #0x18 + asrs r6, r0, #0x18 + adds r5, r1, #0 + cmp r6, #0 + beq _081992A6 + movs r7, #2 + ldrsb r7, [r5, r7] + ldrb r4, [r5, #9] + adds r0, r7, #0 + adds r1, r4, #0 + bl __modsi3 + adds r0, r0, r6 + cmp r0, #0 + bge _08199290 + adds r0, r4, #0 + adds r0, #0xff + add r0, r8 + b _081992A4 + .align 2, 0 +_0819928C: .4byte gUnknown_203CA5C +_08199290: + cmp r0, r4 + blt _081992A0 + adds r0, r7, #0 + adds r1, r4, #0 + bl __divsi3 + muls r0, r4, r0 + b _081992A4 +_081992A0: + mov r1, r8 + adds r0, r6, r1 +_081992A4: + strb r0, [r5, #2] +_081992A6: + mov r2, sb + lsls r0, r2, #0x18 + asrs r6, r0, #0x18 + cmp r6, #0 + beq _081992EA + movs r0, #2 + ldrsb r0, [r5, r0] + ldrb r4, [r5, #9] + adds r1, r4, #0 + bl __divsi3 + adds r1, r0, r6 + cmp r1, #0 + bge _081992CE + ldrb r0, [r5, #0xa] + subs r0, #1 + muls r0, r4, r0 + ldrb r1, [r5, #2] + adds r0, r0, r1 + b _081992E8 +_081992CE: + ldrb r0, [r5, #0xa] + cmp r1, r0 + blt _081992E0 + subs r0, #1 + adds r1, r4, #0 + muls r1, r0, r1 + ldrb r0, [r5, #2] + subs r0, r0, r1 + b _081992E8 +_081992E0: + adds r0, r4, #0 + muls r0, r6, r0 + ldrb r2, [r5, #2] + adds r0, r0, r2 +_081992E8: + strb r0, [r5, #2] +_081992EA: + movs r1, #2 + ldrsb r1, [r5, r1] + movs r0, #4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bgt _08199300 + ldrb r1, [r5, #2] + mov r0, r8 + bl sub_08199170 + b _08199304 +_08199300: + mov r0, r8 + strb r0, [r5, #2] +_08199304: + ldrb r0, [r5, #2] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08199250 + + thumb_func_start sub_08199314 +sub_08199314: @ 0x08199314 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + ldr r1, _0819938C + ldrb r7, [r1, #2] + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + adds r5, r1, #0 + cmp r4, #0 + beq _08199348 + movs r0, #2 + ldrsb r0, [r5, r0] + ldrb r6, [r5, #9] + adds r1, r6, #0 + bl __modsi3 + adds r0, r0, r4 + cmp r0, #0 + blt _08199348 + cmp r0, r6 + bge _08199348 + adds r0, r4, r7 + strb r0, [r5, #2] +_08199348: + mov r1, r8 + lsls r0, r1, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + beq _08199374 + movs r0, #2 + ldrsb r0, [r5, r0] + ldrb r6, [r5, #9] + adds r1, r6, #0 + bl __divsi3 + adds r0, r0, r4 + cmp r0, #0 + blt _08199374 + ldrb r1, [r5, #0xa] + cmp r0, r1 + bge _08199374 + adds r0, r6, #0 + muls r0, r4, r0 + ldrb r1, [r5, #2] + adds r0, r0, r1 + strb r0, [r5, #2] +_08199374: + movs r1, #2 + ldrsb r1, [r5, r1] + movs r0, #4 + ldrsb r0, [r5, r0] + cmp r1, r0 + bgt _08199390 + ldrb r1, [r5, #2] + adds r0, r7, #0 + bl sub_08199170 + b _08199392 + .align 2, 0 +_0819938C: .4byte gUnknown_203CA5C +_08199390: + strb r7, [r5, #2] +_08199392: + ldrb r0, [r5, #2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_08199314 + + thumb_func_start sub_081993A0 +sub_081993A0: @ 0x081993A0 + push {r4, lr} + ldr r4, _081993C0 + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081993C8 + movs r0, #5 + bl sub_080A306C + ldr r0, _081993C4 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _08199448 + .align 2, 0 +_081993C0: .4byte gUnknown_3002360 +_081993C4: .4byte gUnknown_203CA5C +_081993C8: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081993D6 + movs r0, #1 + rsbs r0, r0, #0 + b _08199448 +_081993D6: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081993EC + movs r0, #5 + bl sub_080A306C + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + b _08199440 +_081993EC: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08199400 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #1 + b _08199440 +_08199400: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08199414 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08199420 +_08199414: + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _0819943E +_08199420: + ldrh r1, [r4, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08199436 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08199444 +_08199436: + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_0819943E: + movs r1, #0 +_08199440: + bl sub_08199250 +_08199444: + movs r0, #2 + rsbs r0, r0, #0 +_08199448: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081993A0 + + thumb_func_start sub_08199450 +sub_08199450: @ 0x08199450 + push {r4, r5, r6, lr} + ldr r5, _08199470 + ldrb r4, [r5, #2] + ldr r6, _08199474 + ldrh r1, [r6, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08199478 + movs r0, #5 + bl sub_080A306C + movs r0, #2 + ldrsb r0, [r5, r0] + b _081994EE + .align 2, 0 +_08199470: .4byte gUnknown_203CA5C +_08199474: .4byte gUnknown_3002360 +_08199478: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08199486 + movs r0, #1 + rsbs r0, r0, #0 + b _081994EE +_08199486: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08199496 + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + b _081994D8 +_08199496: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081994A4 + movs r0, #0 + movs r1, #1 + b _081994D8 +_081994A4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081994B8 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081994BE +_081994B8: + movs r0, #1 + rsbs r0, r0, #0 + b _081994D6 +_081994BE: + ldrh r1, [r6, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081994D4 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081994EA +_081994D4: + movs r0, #1 +_081994D6: + movs r1, #0 +_081994D8: + bl sub_08199314 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _081994EA + movs r0, #5 + bl sub_080A306C +_081994EA: + movs r0, #2 + rsbs r0, r0, #0 +_081994EE: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_08199450 + + thumb_func_start sub_081994F4 +sub_081994F4: @ 0x081994F4 + push {r4, r5, lr} + ldr r4, _08199514 + ldrh r1, [r4, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0819951C + movs r0, #5 + bl sub_080A306C + ldr r0, _08199518 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _08199598 + .align 2, 0 +_08199514: .4byte gUnknown_3002360 +_08199518: .4byte gUnknown_203CA5C +_0819951C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819952A + movs r0, #1 + rsbs r0, r0, #0 + b _08199598 +_0819952A: + ldrh r0, [r4, #0x30] + movs r5, #0xf0 + adds r1, r5, #0 + ands r1, r0 + cmp r1, #0x40 + bne _08199544 + movs r0, #5 + bl sub_080A306C + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + b _08199590 +_08199544: + cmp r1, #0x80 + bne _08199554 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #1 + b _08199590 +_08199554: + cmp r1, #0x20 + beq _08199564 + bl sub_08122118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08199570 +_08199564: + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _0819958E +_08199570: + ldrh r1, [r4, #0x30] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0x10 + beq _08199586 + bl sub_08122118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08199594 +_08199586: + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_0819958E: + movs r1, #0 +_08199590: + bl sub_08199250 +_08199594: + movs r0, #2 + rsbs r0, r0, #0 +_08199598: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081994F4 + + thumb_func_start sub_081995A0 +sub_081995A0: @ 0x081995A0 + push {r4, r5, r6, lr} + ldr r6, _081995C0 + ldrb r4, [r6, #2] + ldr r5, _081995C4 + ldrh r1, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081995C8 + movs r0, #5 + bl sub_080A306C + movs r0, #2 + ldrsb r0, [r6, r0] + b _0819963A + .align 2, 0 +_081995C0: .4byte gUnknown_203CA5C +_081995C4: .4byte gUnknown_3002360 +_081995C8: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081995D6 + movs r0, #1 + rsbs r0, r0, #0 + b _0819963A +_081995D6: + ldrh r0, [r5, #0x30] + movs r6, #0xf0 + adds r1, r6, #0 + ands r1, r0 + cmp r1, #0x40 + bne _081995EA + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + b _08199624 +_081995EA: + cmp r1, #0x80 + bne _081995F4 + movs r0, #0 + movs r1, #1 + b _08199624 +_081995F4: + cmp r1, #0x20 + beq _08199604 + bl sub_08122118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0819960A +_08199604: + movs r0, #1 + rsbs r0, r0, #0 + b _08199622 +_0819960A: + ldrh r1, [r5, #0x30] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0x10 + beq _08199620 + bl sub_08122118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08199636 +_08199620: + movs r0, #1 +_08199622: + movs r1, #0 +_08199624: + bl sub_08199314 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + beq _08199636 + movs r0, #5 + bl sub_080A306C +_08199636: + movs r0, #2 + rsbs r0, r0, #0 +_0819963A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081995A0 + + thumb_func_start sub_08199640 +sub_08199640: @ 0x08199640 + push {lr} + ldr r0, _08199650 + movs r1, #0 + movs r2, #4 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_08199650: .4byte gUnknown_203CA70 + thumb_func_end sub_08199640 + + thumb_func_start sub_08199654 +sub_08199654: @ 0x08199654 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _08199664 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_08199664: .4byte gUnknown_203CA70 + thumb_func_end sub_08199654 + + thumb_func_start sub_08199668 +sub_08199668: @ 0x08199668 + push {r4, lr} + ldr r4, _081996B4 + ldrb r0, [r4] + cmp r0, #1 + bne _0819967C + movs r0, #0 + bl sub_08002248 + movs r0, #0 + strb r0, [r4] +_0819967C: + ldrb r0, [r4, #1] + cmp r0, #1 + bne _0819968C + movs r0, #1 + bl sub_08002248 + movs r0, #0 + strb r0, [r4, #1] +_0819968C: + ldrb r0, [r4, #2] + cmp r0, #1 + bne _0819969C + movs r0, #2 + bl sub_08002248 + movs r0, #0 + strb r0, [r4, #2] +_0819969C: + ldrb r0, [r4, #3] + cmp r0, #1 + bne _081996AC + movs r0, #3 + bl sub_08002248 + movs r0, #0 + strb r0, [r4, #3] +_081996AC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081996B4: .4byte gUnknown_203CA70 + thumb_func_end sub_08199668 + + thumb_func_start sub_081996B8 +sub_081996B8: @ 0x081996B8 + push {lr} + ldr r3, _081996D4 + ldr r1, _081996D8 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0x7c +_081996C4: + str r2, [r0] + subs r0, #4 + cmp r0, r1 + bge _081996C4 + movs r0, #0 + strh r0, [r3] + pop {r0} + bx r0 + .align 2, 0 +_081996D4: .4byte gUnknown_203CA74 +_081996D8: .4byte gUnknown_203CA78 + thumb_func_end sub_081996B8 + + thumb_func_start sub_081996DC +sub_081996DC: @ 0x081996DC + push {r4, r5, r6, lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08199720 + ldr r1, _08199718 + ldrh r0, [r1] + cmp r0, #0 + beq _08199714 + movs r4, #0 + ldrh r1, [r1] + cmp r4, r1 + bge _0819970E + ldr r5, _0819971C + movs r6, #0 +_081996FC: + ldr r0, [r5] + bl sub_08000BF0 + stm r5!, {r6} + adds r4, #1 + ldr r0, _08199718 + ldrh r0, [r0] + cmp r4, r0 + blt _081996FC +_0819970E: + ldr r1, _08199718 + movs r0, #0 + strh r0, [r1] +_08199714: + movs r0, #0 + b _08199722 + .align 2, 0 +_08199718: .4byte gUnknown_203CA74 +_0819971C: .4byte gUnknown_203CA78 +_08199720: + movs r0, #1 +_08199722: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081996DC + + thumb_func_start sub_08199728 +sub_08199728: @ 0x08199728 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r1, [sp, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sb, r3 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r6, _08199788 + ldrh r0, [r6] + cmp r0, #0x1f + bhi _08199790 + adds r0, r4, #0 + add r1, sp, #4 + bl sub_08199858 + adds r4, r0, #0 + cmp r5, #0 + bne _08199760 + ldr r5, [sp, #4] +_08199760: + cmp r4, #0 + beq _08199784 + lsls r2, r5, #0x10 + lsrs r2, r2, #0x10 + str r7, [sp] + mov r0, r8 + adds r1, r4, #0 + mov r3, sb + bl sub_08199888 + ldr r2, _0819978C + ldrh r0, [r6] + adds r1, r0, #1 + strh r1, [r6] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r0, r2 + str r4, [r0] +_08199784: + adds r0, r4, #0 + b _08199792 + .align 2, 0 +_08199788: .4byte gUnknown_203CA74 +_0819978C: .4byte gUnknown_203CA78 +_08199790: + movs r0, #0 +_08199792: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_08199728 + + thumb_func_start sub_081997A0 +sub_081997A0: @ 0x081997A0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r5, r2, #0 + ldr r2, [sp, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sb, r3 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + adds r0, r1, #0 + add r1, sp, #4 + bl sub_08199858 + adds r6, r0, #0 + cmp r5, #0 + bne _081997CE + ldr r5, [sp, #4] +_081997CE: + cmp r6, #0 + beq _08199806 + ldr r0, _08199814 + movs r1, #0 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r5, #0x10 + lsrs r2, r2, #0x10 + str r7, [sp] + mov r0, r8 + adds r1, r6, #0 + mov r3, sb + bl sub_08199888 + ldr r2, _08199818 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_080A8B44 +_08199806: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08199814: .4byte sub_0819981C +_08199818: .4byte gUnknown_3005B60 + thumb_func_end sub_081997A0 + + thumb_func_start sub_0819981C +sub_0819981C: @ 0x0819981C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _08199854 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + bl sub_08001034 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0819984C + adds r0, r4, #0 + movs r1, #1 + bl sub_080A8B7C + bl sub_08000BF0 + adds r0, r4, #0 + bl sub_080A8964 +_0819984C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08199854: .4byte gUnknown_3005B60 + thumb_func_end sub_0819981C + + thumb_func_start sub_08199858 +sub_08199858: @ 0x08199858 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #1] + strb r0, [r1] + ldrb r0, [r5, #2] + strb r0, [r1, #1] + ldrb r0, [r5, #3] + strb r0, [r1, #2] + movs r0, #0 + strb r0, [r1, #3] + ldr r0, [r1] + bl sub_08000BC8 + adds r4, r0, #0 + cmp r4, #0 + beq _08199880 + adds r0, r5, #0 + adds r1, r4, #0 + bl LZ77UnCompWram +_08199880: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_08199858 + + thumb_func_start sub_08199888 +sub_08199888: @ 0x08199888 + push {r4, lr} + adds r4, r1, #0 + ldr r1, [sp, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + beq _081998B0 + cmp r1, #1 + beq _081998B8 + ldr r0, _081998AC + b _081998C2 + .align 2, 0 +_081998AC: .4byte 0x0000FFFF +_081998B0: + adds r1, r4, #0 + bl sub_0800195C + b _081998BE +_081998B8: + adds r1, r4, #0 + bl sub_08001A14 +_081998BE: + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081998C2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_08199888 + + thumb_func_start sub_081998C8 +sub_081998C8: @ 0x081998C8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r2, #0 + ldr r4, [sp, #0x28] + ldr r2, [sp, #0x2c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #4] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + bl sub_08002194 + mov r8, r0 + adds r0, r5, r4 + cmp r5, r0 + bge _08199940 + mov sb, r0 +_08199906: + ldr r3, [sp] + ldr r1, [sp, #4] + adds r0, r3, r1 + adds r7, r5, #1 + cmp r3, r0 + bge _08199938 + lsls r6, r5, #5 + ldr r1, _08199950 + mov ip, r1 + mov r1, sl + lsls r5, r1, #0xc + adds r4, r0, #0 +_0819991E: + adds r1, r6, r3 + lsls r1, r1, #1 + add r1, r8 + ldrh r2, [r1] + mov r0, ip + ands r0, r2 + orrs r0, r5 + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + blt _0819991E +_08199938: + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, sb + blt _08199906 +_08199940: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08199950: .4byte 0x00000FFF + thumb_func_end sub_081998C8 + + thumb_func_start sub_08199954 +sub_08199954: @ 0x08199954 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sl, r1 + ldr r1, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r8, r4 + bl sub_08002194 + adds r7, r0, #0 + movs r0, #0 + cmp r0, r8 + bhs _081999C2 +_0819998C: + movs r2, #0 + adds r6, r0, #1 + cmp r2, r5 + bhs _081999BA + adds r4, r0, #0 + muls r4, r5, r4 + ldr r1, [sp] + adds r0, r0, r1 + lsls r3, r0, #5 +_0819999E: + adds r1, r4, r2 + lsls r1, r1, #1 + add r1, sl + adds r0, r3, r2 + add r0, sb + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r5 + blo _0819999E +_081999BA: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r8 + blo _0819998C +_081999C2: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199954 + + thumb_func_start sub_081999D4 +sub_081999D4: @ 0x081999D4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + ldr r0, [sp, #0x14] + adds r4, r2, #0 + muls r4, r3, r4 + cmp r0, #1 + bne _081999FC + adds r3, r6, #0 + movs r2, #0 + cmp r2, r4 + bge _08199A24 +_081999EC: + adds r1, r3, r2 + ldrb r0, [r1] + adds r0, r0, r5 + strb r0, [r1] + adds r2, #1 + cmp r2, r4 + blt _081999EC + b _08199A24 +_081999FC: + cmp r4, #0 + ble _08199A24 + movs r0, #0xfc + lsls r0, r0, #8 + mov ip, r0 + ldr r0, _08199A2C + adds r7, r0, #0 + adds r3, r6, #0 + adds r2, r4, #0 +_08199A0E: + ldrh r0, [r3] + mov r1, ip + ands r1, r0 + adds r0, r0, r5 + ands r0, r7 + orrs r1, r0 + strh r1, [r3] + adds r3, #2 + subs r2, #1 + cmp r2, #0 + bne _08199A0E +_08199A24: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08199A2C: .4byte 0x000003FF + thumb_func_end sub_081999D4 + + thumb_func_start sub_08199A30 +sub_08199A30: @ 0x08199A30 + push {lr} + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199A30 + + thumb_func_start sub_08199A88 +sub_08199A88: @ 0x08199A88 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r2 + mov sb, r3 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #4 + bl sub_08001C34 + lsls r0, r0, #0x10 + movs r7, #0x40 + cmp r0, #0 + bne _08199AAE + movs r7, #0x20 +_08199AAE: + adds r0, r5, #0 + movs r1, #1 + bl sub_08001C34 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0xa + bl sub_08001C34 + lsls r4, r4, #0x10 + lsrs r4, r4, #2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + add r0, r8 + muls r0, r7, r0 + adds r4, r4, r0 + lsls r0, r6, #0x18 + lsls r1, r6, #0x10 + orrs r0, r1 + lsls r1, r6, #8 + orrs r0, r1 + orrs r0, r6 + movs r1, #0xc0 + lsls r1, r1, #0x13 + adds r4, r4, r1 + mov r2, sb + muls r2, r7, r2 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r1, r4, #0 + movs r3, #1 + bl sub_08000F90 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_08199A88 + + thumb_func_start sub_08199AFC +sub_08199AFC: @ 0x08199AFC + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r1, #0 + ldr r6, [sp, #0x20] + ldr r5, [sp, #0x24] + ldr r1, [sp, #0x28] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r1, [sp] + mov r1, sp + strb r0, [r1, #4] + mov r0, sp + strb r4, [r0, #5] + strb r2, [r0, #6] + strb r3, [r0, #7] + ldrb r0, [r0, #6] + strb r0, [r1, #8] + mov r0, sp + ldrb r0, [r0, #7] + strb r0, [r1, #9] + adds r0, r4, #0 + movs r1, #2 + bl sub_080061B4 + mov r1, sp + strb r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #3 + bl sub_080061B4 + mov r1, sp + strb r0, [r1, #0xb] + mov r3, sp + ldrb r2, [r3, #0xc] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xc] + mov r2, sp + ldrb r0, [r6, #1] + lsls r0, 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, #2] + lsls r0, r0, #4 + ands r1, r4 + orrs r1, r0 + strb r1, [r2, #0xd] + mov r0, sp + adds r1, r5, #0 + movs r2, #0 + bl sub_08004548 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08199AFC + + thumb_func_start sub_08199B84 +sub_08199B84: @ 0x08199B84 + push {r4, r5, r6, lr} + mov r6, sb + 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 sb, r1 + ldr r6, [sp, #0x30] + ldr r1, [sp, #0x34] + ldr r4, [sp, #0x38] + str r4, [sp] + mov r4, sp + strb r0, [r4, #4] + mov r0, sp + strb r5, [r0, #5] + strb r2, [r0, #6] + strb r3, [r0, #7] + mov r2, sp + ldrb r0, [r0, #6] + strb r0, [r2, #8] + mov r0, sp + ldrb r0, [r0, #7] + strb r0, [r2, #9] + mov r0, sp + mov r2, r8 + strb r2, [r0, #0xa] + mov r2, sb + strb r2, [r0, #0xb] + ldrb r3, [r4, #0xc] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r4, #0xc] + mov r3, sp + ldrb r0, [r6, #1] + lsls r0, 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, #2] + lsls r0, r0, #4 + ands r2, r5 + orrs r2, r0 + strb r2, [r3, #0xd] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, sp + movs r2, #0 + bl sub_08004548 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_08199B84 + + thumb_func_start sub_08199C0C +sub_08199C0C: @ 0x08199C0C + push {r4, r5, r6, r7, lr} + mov r7, sb + 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 sb, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r1, r8 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + str r2, [sp] + mov r1, sp + strb r0, [r1, #4] + mov r0, sp + strb r6, [r0, #5] + strb r3, [r0, #6] + strb r4, [r0, #7] + strb r3, [r0, #8] + strb r4, [r0, #9] + strb r5, [r0, #0xa] + mov r1, sb + strb r1, [r0, #0xb] + mov r2, sp + ldrb r1, [r2, #0xc] + movs r5, #0x10 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #0xc] + adds r0, r6, #0 + movs r1, #5 + bl sub_080061B4 + mov r3, sp + lsls r0, 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, #6 + bl sub_080061B4 + 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, #7 + bl sub_080061B4 + mov r2, sp + lsls r0, 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_08004548 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199C0C + + thumb_func_start sub_08199CBC +sub_08199CBC: @ 0x08199CBC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r2, r2, #0x10 + lsrs r4, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + movs r2, #0 + ldr r0, _08199D10 + ldr r3, [r0] + ldrb r0, [r3] + ldr r6, _08199D14 + cmp r0, #0xff + beq _08199CE4 +_08199CDA: + adds r2, #1 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _08199CDA +_08199CE4: + adds r0, r6, #0 + bl sub_08008BCC + lsls r3, r4, #0x18 + lsrs r3, r3, #0x18 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_08199D10: .4byte gUnknown_3005AF0 +_08199D14: .4byte gUnknown_2021C7C + thumb_func_end sub_08199CBC + + thumb_func_start sub_08199D18 +sub_08199D18: @ 0x08199D18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp, #0x48] + ldr r4, [sp, #0x4c] + ldr r1, [sp, #0x50] + ldr r5, [sp, #0x54] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #8] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0xc] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r2, [sp, #4] + ldrh r0, [r2, #4] + ldr r2, [sp, #0xc] + subs r0, r0, r2 + ldr r2, [sp, #8] + adds r2, r1, r2 + str r2, [sp, #0x10] + cmp r0, r1 + bge _08199D64 + ldr r1, [sp, #8] + adds r0, r0, r1 + str r0, [sp, #0x10] +_08199D64: + ldr r2, [sp, #4] + ldrh r1, [r2, #6] + subs r0, r1, r4 + cmp r0, r5 + bge _08199D76 + adds r0, r3, r1 + subs r0, r0, r4 + str r0, [sp, #0x14] + b _08199D7A +_08199D76: + adds r5, r3, r5 + str r5, [sp, #0x14] +_08199D7A: + ldr r0, [sp] + ldrh r1, [r0, #4] + movs r2, #7 + adds r0, r1, #0 + ands r0, r2 + adds r1, r1, r0 + asrs r1, r1, #3 + str r1, [sp, #0x18] + ldr r0, [sp, #4] + ldrh r1, [r0, #4] + adds r0, r1, #0 + ands r0, r2 + adds r1, r1, r0 + asrs r1, r1, #3 + str r1, [sp, #0x1c] + mov ip, r3 + mov r8, r4 + ldr r1, [sp, #0x14] + cmp ip, r1 + blt _08199DA4 + b _08199EE2 +_08199DA4: + ldr r5, [sp, #8] + ldr r6, [sp, #0xc] + mov r2, ip + adds r2, #1 + str r2, [sp, #0x20] + mov r0, r8 + adds r0, #1 + str r0, [sp, #0x24] + ldr r1, [sp, #0x10] + cmp r5, r1 + blt _08199DBC + b _08199ED2 +_08199DBC: + movs r7, #1 + movs r2, #0xf0 + mov sl, r2 + movs r0, #0xf + mov sb, r0 +_08199DC6: + asrs r0, r5, #1 + movs r1, #3 + ands r0, r1 + ldr r2, [sp] + ldr r1, [r2] + adds r1, r1, r0 + asrs r0, r5, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r2, ip + asrs r0, r2, #3 + ldr r2, [sp, #0x18] + muls r0, r2, r0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r2, ip + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1b + adds r3, r1, r0 + asrs r0, r6, #1 + movs r1, #3 + ands r0, r1 + ldr r2, [sp, #4] + ldr r1, [r2] + adds r1, r1, r0 + asrs r0, r6, #3 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r2, r8 + asrs r0, r2, #3 + ldr r2, [sp, #0x1c] + muls r0, r2, r0 + lsls r0, r0, #5 + adds r1, r1, r0 + mov r2, r8 + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1b + adds r4, r1, r0 + adds r0, r4, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E72 + subs r4, #1 + adds r0, r6, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E4A + ldrh r0, [r4] + ldr r2, _08199E3C + ands r2, r0 + adds r0, r5, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E40 + ldrb r1, [r3] + mov r0, sl + ands r0, r1 + lsls r0, r0, #8 + b _08199EC2 + .align 2, 0 +_08199E3C: .4byte 0x00000FFF +_08199E40: + ldrb r1, [r3] + mov r0, sb + ands r0, r1 + lsls r0, r0, #0xc + b _08199EC2 +_08199E4A: + ldrh r0, [r4] + ldr r2, _08199E64 + ands r2, r0 + adds r0, r5, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E68 + ldrb r1, [r3] + mov r0, sl + ands r0, r1 + lsls r0, r0, #4 + b _08199EC2 + .align 2, 0 +_08199E64: .4byte 0x0000F0FF +_08199E68: + ldrb r1, [r3] + mov r0, sb + ands r0, r1 + lsls r0, r0, #8 + b _08199EC2 +_08199E72: + adds r0, r6, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E9E + ldrh r0, [r4] + ldr r2, _08199E90 + ands r2, r0 + adds r0, r5, #0 + ands r0, r7 + cmp r0, #0 + beq _08199E94 + ldrb r1, [r3] + mov r0, sl + b _08199EC0 + .align 2, 0 +_08199E90: .4byte 0x0000FF0F +_08199E94: + ldrb r1, [r3] + mov r0, sb + ands r0, r1 + lsls r0, r0, #4 + b _08199EC2 +_08199E9E: + ldrh r0, [r4] + ldr r2, _08199EB8 + ands r2, r0 + adds r0, r5, #0 + ands r0, r7 + cmp r0, #0 + beq _08199EBC + ldrb r1, [r3] + mov r0, sl + ands r0, r1 + lsrs r0, r0, #4 + b _08199EC2 + .align 2, 0 +_08199EB8: .4byte 0x0000FFF0 +_08199EBC: + ldrb r1, [r3] + mov r0, sb +_08199EC0: + ands r0, r1 +_08199EC2: + orrs r2, r0 + strh r2, [r4] + adds r5, #1 + adds r6, #1 + ldr r0, [sp, #0x10] + cmp r5, r0 + bge _08199ED2 + b _08199DC6 +_08199ED2: + ldr r1, [sp, #0x20] + mov ip, r1 + ldr r2, [sp, #0x24] + mov r8, r2 + ldr r0, [sp, #0x14] + cmp ip, r0 + bge _08199EE2 + b _08199DA4 +_08199EE2: + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199D18 + + thumb_func_start sub_08199EF4 +sub_08199EF4: @ 0x08199EF4 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D2950 + adds r1, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_08199EF4 + + thumb_func_start sub_08199F14 +sub_08199F14: @ 0x08199F14 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r4, r3, #0 + ldr r5, [sp, #0x18] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r2, #1 + bl sub_080D277C + adds r1, r0, #0 + movs r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + adds r0, r6, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08003874 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_08199F14 + + thumb_func_start sub_08199F54 +sub_08199F54: @ 0x08199F54 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _08199F74 + cmp r1, #1 + ble _08199F6A + cmp r1, #2 + beq _08199F7C +_08199F6A: + ldr r0, _08199F70 + b _08199F7E + .align 2, 0 +_08199F70: .4byte gUnknown_85D7BD8 +_08199F74: + ldr r0, _08199F78 + b _08199F7E + .align 2, 0 +_08199F78: .4byte gUnknown_85D7BF8 +_08199F7C: + ldr r0, _08199F8C +_08199F7E: + adds r1, r2, #0 + movs r2, #0x20 + bl sub_080A1200 + pop {r0} + bx r0 + .align 2, 0 +_08199F8C: .4byte gUnknown_85D7C18 + thumb_func_end sub_08199F54 + + thumb_func_start sub_08199F90 +sub_08199F90: @ 0x08199F90 + push {r4, r5, lr} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r4, _08199FD4 + lsrs r1, r1, #0x16 + adds r1, r1, r4 + ldrh r5, [r1, #2] + lsls r5, r5, #5 + ldr r4, _08199FD8 + adds r5, r5, r4 + movs r4, #0x80 + str r4, [sp] + str r4, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldrb r2, [r1] + str r2, [sp, #0x10] + ldrb r1, [r1, #1] + str r1, [sp, #0x14] + adds r1, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_080038AC + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_08199FD4: .4byte gUnknown_85D7B70 +_08199FD8: .4byte gUnknown_85D7C38 + thumb_func_end sub_08199F90 + + thumb_func_start sub_08199FDC +sub_08199FDC: @ 0x08199FDC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r5, r1, #0 + movs r1, #0xfc + strb r1, [r5] + adds r5, #1 + movs r0, #1 + strb r0, [r5] + adds r5, #1 + strb r2, [r5] + adds r5, #1 + strb r1, [r5] + adds r5, #1 + movs r0, #3 + strb r0, [r5] + adds r5, #1 + adds r2, #1 + strb r2, [r5] + adds r5, #1 + cmp r3, #4 + bhi _0819A0DE + lsls r0, r3, #2 + ldr r1, _0819A018 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819A018: .4byte _0819A01C +_0819A01C: @ jump table + .4byte _0819A030 @ case 0 + .4byte _0819A040 @ case 1 + .4byte _0819A072 @ case 2 + .4byte _0819A0A0 @ case 3 + .4byte _0819A0B0 @ case 4 +_0819A030: + ldr r0, _0819A03C + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080088B8 + b _0819A0DE + .align 2, 0 +_0819A03C: .4byte gUnknown_3005AF0 +_0819A040: + bl sub_0809CD04 + cmp r0, #0 + beq _0819A050 + movs r0, #1 + bl sub_080BFD4C + b _0819A056 +_0819A050: + movs r0, #1 + bl sub_080BFD9C +_0819A056: + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r5, r0, #0 + movs r0, #0x1b + strb r0, [r5] + adds r5, #1 + movs r0, #7 + b _0819A0D8 +_0819A072: + ldr r4, _0819A09C + ldr r0, [r4] + ldrh r1, [r0, #0xe] + adds r0, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r5, r0, #0 + movs r0, #0xf0 + strb r0, [r5] + adds r5, #1 + ldr r0, [r4] + ldrb r1, [r0, #0x10] + adds r0, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + b _0819A0DE + .align 2, 0 +_0819A09C: .4byte gUnknown_3005AF0 +_0819A0A0: + ldr r0, _0819A0AC + ldrb r1, [r0, #0x14] + adds r0, r5, #0 + bl sub_081245E8 + b _0819A0DE + .align 2, 0 +_0819A0AC: .4byte gUnknown_2036FB8 +_0819A0B0: + ldr r4, _0819A0E4 + movs r6, #0 + adds r7, r5, #1 +_0819A0B6: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0819A0C6 + adds r6, #1 +_0819A0C6: + adds r4, #1 + ldr r0, _0819A0E8 + cmp r4, r0 + ble _0819A0B6 + adds r0, r6, #0 + subs r0, #0x5f + strb r0, [r5] + adds r5, r7, #0 + movs r0, #0xa +_0819A0D8: + strb r0, [r5] + movs r0, #0xff + strb r0, [r5, #1] +_0819A0DE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819A0E4: .4byte 0x00000867 +_0819A0E8: .4byte 0x0000086E + thumb_func_end sub_08199FDC + + thumb_func_start sub_0819A0EC +sub_0819A0EC: @ 0x0819A0EC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #5] + lsrs r4, r4, #4 + movs r0, #0x65 + bl sub_0800851C + lsls r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsrs r0, r0, #0x18 + cmp r4, r0 + bne _0819A15A + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0819A150 + ldrh r1, [r5, #0x2e] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r0, #0 + beq _0819A124 + subs r0, r1, #1 + strh r0, [r5, #0x2e] + b _0819A162 +_0819A124: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #5 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0819A146 + adds r0, r5, #0 + movs r1, #0 + bl sub_08007EC0 + movs r0, #0x20 + strh r0, [r5, #0x2e] + b _0819A162 +_0819A146: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 + b _0819A162 +_0819A150: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007ED8 + b _0819A162 +_0819A15A: + adds r0, r5, #0 + movs r1, #0 + bl sub_08007ED8 +_0819A162: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0819A0EC + + thumb_func_start sub_0819A168 +sub_0819A168: @ 0x0819A168 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819A168 + + thumb_func_start sub_0819A184 +sub_0819A184: @ 0x0819A184 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819A184 + + thumb_func_start sub_0819A198 +sub_0819A198: @ 0x0819A198 + push {lr} + ldr r0, _0819A1AC + movs r1, #0 + str r1, [r0] + ldr r0, _0819A1B0 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0819A1AC: .4byte gUnknown_3001278 +_0819A1B0: .4byte sub_0819A1B4 + thumb_func_end sub_0819A198 + + thumb_func_start sub_0819A1B4 +sub_0819A1B4: @ 0x0819A1B4 + push {r4, r5, lr} + sub sp, #0xc + ldr r0, _0819A1D4 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xa + bls _0819A1C8 + b _0819A62E +_0819A1C8: + lsls r0, r0, #2 + ldr r1, _0819A1D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819A1D4: .4byte gUnknown_3002360 +_0819A1D8: .4byte _0819A1DC +_0819A1DC: @ jump table + .4byte _0819A208 @ case 0 + .4byte _0819A260 @ case 1 + .4byte _0819A33C @ case 2 + .4byte _0819A41C @ case 3 + .4byte _0819A46C @ case 4 + .4byte _0819A508 @ case 5 + .4byte _0819A544 @ case 6 + .4byte _0819A54C @ case 7 + .4byte _0819A564 @ case 8 + .4byte _0819A57C @ case 9 + .4byte _0819A59C @ case 10 +_0819A208: + ldr r4, _0819A250 + ldr r0, [r4] + cmp r0, #0 + beq _0819A218 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_0819A218: + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + str r0, [sp, #8] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0819A254 + add r0, sp, #8 + bl CpuSet + movs r0, #0 + bl sub_080017D4 + ldr r1, _0819A258 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r0, _0819A25C + bl sub_08003090 + bl sub_08004480 + b _0819A586 + .align 2, 0 +_0819A250: .4byte gUnknown_203CB08 +_0819A254: .4byte 0x05006000 +_0819A258: .4byte gUnknown_85DBC30 +_0819A25C: .4byte gUnknown_85DBC3C +_0819A260: + ldr r5, _0819A328 + movs r4, #0x88 + lsls r4, r4, #3 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + ldr r5, _0819A32C + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r5] + ldr r5, _0819A330 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + ldr r5, _0819A334 + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r5] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + ldr r1, _0819A338 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _0819A58E + .align 2, 0 +_0819A328: .4byte gUnknown_203CAF8 +_0819A32C: .4byte gUnknown_203CAFC +_0819A330: .4byte gUnknown_203CB00 +_0819A334: .4byte gUnknown_203CB04 +_0819A338: .4byte gUnknown_3002360 +_0819A33C: + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + ldr r0, _0819A3EC + ldr r5, _0819A3F0 + ldr r1, [r5] + movs r2, #0x88 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _0819A3F4 + ldr r4, _0819A3F8 + ldr r1, [r4] + movs r2, #0x30 + bl CpuSet + ldr r1, [r5] + movs r2, #0x88 + lsls r2, r2, #3 + movs r0, #1 + movs r3, #0 + bl sub_0800195C + ldr r1, [r4] + movs r0, #3 + movs r2, #0x60 + movs r3, #0 + bl sub_0800195C + ldr r0, _0819A3FC + ldr r4, _0819A400 + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #3 + bl CpuSet + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #1 + movs r3, #0 + bl sub_08001A14 + ldr r0, _0819A404 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r4, _0819A408 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #8 + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xe0 + movs r2, #0xa + bl sub_080A1200 + ldr r0, _0819A40C + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #1 + bne _0819A3D8 + ldr r0, _0819A410 + movs r2, #0xa9 + lsls r2, r2, #2 + adds r1, r1, r2 + ldrh r1, [r1] + movs r3, #0xe4 + lsls r3, r3, #1 + adds r0, r0, r3 + strh r1, [r0] +_0819A3D8: + ldr r0, _0819A414 + movs r1, #0x20 + movs r2, #4 + bl sub_080A1200 + ldr r1, _0819A418 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819A58E + .align 2, 0 +_0819A3EC: .4byte gUnknown_85DAD38 +_0819A3F0: .4byte gUnknown_203CAF8 +_0819A3F4: .4byte gUnknown_85DBA78 +_0819A3F8: .4byte gUnknown_203CAFC +_0819A3FC: .4byte gUnknown_85DB178 +_0819A400: .4byte gUnknown_203CB00 +_0819A404: .4byte gUnknown_85DBAD8 +_0819A408: .4byte gUnknown_85DBC74 +_0819A40C: .4byte gUnknown_3001278 +_0819A410: .4byte gUnknown_20373B4 +_0819A414: .4byte gUnknown_85DBB18 +_0819A418: .4byte gUnknown_3002360 +_0819A41C: + ldr r0, _0819A464 + ldr r1, [r0] + movs r0, #3 + bl sub_0800212C + ldr r5, _0819A468 + movs r4, #8 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + adds r1, r5, #0 + movs r2, #0xb + movs r3, #4 + bl sub_080022B0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + adds r1, r5, #0 + movs r2, #2 + movs r3, #4 + bl sub_080022B0 + str r4, [sp] + str r4, [sp, #4] + movs r0, #3 + adds r1, r5, #0 + movs r2, #0x14 + movs r3, #4 + bl sub_080022B0 + movs r0, #3 + bl sub_08002248 + b _0819A586 + .align 2, 0 +_0819A464: .4byte gUnknown_203CB04 +_0819A468: .4byte gUnknown_85DB978 +_0819A46C: + ldr r0, _0819A4D8 + bl sub_080084A8 + ldr r0, _0819A4DC + bl sub_08008254 + ldr r0, _0819A4E0 + bl sub_08034388 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + ldr r0, _0819A4E4 + bl sub_080006F0 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r1, #0x9a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + ldr r0, _0819A4E8 + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #1 + bne _0819A4F4 + movs r0, #0x58 + movs r1, #0x98 + movs r2, #0x20 + movs r3, #0x60 + bl sub_0819C2B8 + movs r0, #3 + bl sub_08001B48 + ldr r1, _0819A4EC + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0819A4F0 + movs r0, #0x52 + bl sub_08001144 + b _0819A4FA + .align 2, 0 +_0819A4D8: .4byte gUnknown_85DBB70 +_0819A4DC: .4byte gUnknown_85DBB38 +_0819A4E0: .4byte gUnknown_85DBB60 +_0819A4E4: .4byte sub_0819A184 +_0819A4E8: .4byte gUnknown_3001278 +_0819A4EC: .4byte 0x00001248 +_0819A4F0: .4byte 0x0000040B +_0819A4F4: + movs r0, #3 + bl sub_08001B5C +_0819A4FA: + ldr r1, _0819A504 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _0819A58E + .align 2, 0 +_0819A504: .4byte gUnknown_3002360 +_0819A508: + ldr r4, _0819A538 + ldr r1, [r4] + ldrb r0, [r1, #6] + cmp r0, #1 + bne _0819A518 + ldr r0, _0819A53C + ldrb r0, [r0] + strb r0, [r1, #3] +_0819A518: + bl sub_0819A64C + bl sub_0819A6B8 + ldr r0, [r4] + ldrb r0, [r0, #6] + cmp r0, #1 + bne _0819A52C + bl sub_0819BB1C +_0819A52C: + ldr r1, _0819A540 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819A58E + .align 2, 0 +_0819A538: .4byte gUnknown_3001278 +_0819A53C: .4byte gUnknown_203CBEC +_0819A540: .4byte gUnknown_3002360 +_0819A544: + bl sub_0819B708 + movs r0, #2 + b _0819A582 +_0819A54C: + bl sub_0819B99C + movs r0, #5 + bl sub_0800365C + ldr r1, _0819A560 + movs r3, #0x87 + lsls r3, r3, #3 + adds r1, r1, r3 + b _0819A58E + .align 2, 0 +_0819A560: .4byte gUnknown_3002360 +_0819A564: + bl sub_0819B688 + movs r0, #1 + bl sub_0800365C + ldr r1, _0819A578 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819A58E + .align 2, 0 +_0819A578: .4byte gUnknown_3002360 +_0819A57C: + bl sub_0819B654 + movs r0, #0 +_0819A582: + bl sub_0800365C +_0819A586: + ldr r1, _0819A598 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_0819A58E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0819A62E + .align 2, 0 +_0819A598: .4byte gUnknown_3002360 +_0819A59C: + ldr r0, _0819A5E0 + movs r1, #0 + bl sub_080A8878 + ldr r2, _0819A5E4 + ldr r1, [r2] + ldr r3, _0819A5E8 + adds r1, r1, r3 + strb r0, [r1] + ldr r3, [r2] + ldrb r5, [r3, #6] + cmp r5, #0 + bne _0819A5F4 + ldr r4, _0819A5EC + ldr r1, _0819A5E8 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r5, [r0, #8] + ldr r0, _0819A5F0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r5, [r0, #8] + b _0819A628 + .align 2, 0 +_0819A5E0: .4byte sub_0819C384 +_0819A5E4: .4byte gUnknown_3001278 +_0819A5E8: .4byte 0x000002A1 +_0819A5EC: .4byte gUnknown_3005B60 +_0819A5F0: .4byte sub_0819B018 +_0819A5F4: + ldr r4, _0819A638 + ldr r2, _0819A63C + adds r0, r3, r2 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r2, #0 + movs r1, #1 + strh r1, [r0, #8] + ldr r1, _0819A640 + adds r0, r3, r1 + strb r2, [r0] + ldr r0, _0819A644 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #0xd + strh r1, [r0, #8] +_0819A628: + ldr r0, _0819A648 + bl sub_08000540 +_0819A62E: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819A638: .4byte gUnknown_3005B60 +_0819A63C: .4byte 0x000002A1 +_0819A640: .4byte 0x000002A2 +_0819A644: .4byte sub_0819ADC4 +_0819A648: .4byte sub_0819A168 + thumb_func_end sub_0819A1B4 + + thumb_func_start sub_0819A64C +sub_0819A64C: @ 0x0819A64C + push {r4, r5, lr} + ldr r5, _0819A6A0 + ldr r4, [r5] + cmp r4, #0 + bne _0819A6B2 + movs r0, #0xab + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r5] + strb r4, [r0, #3] + ldr r1, [r5] + movs r0, #1 + strb r0, [r1, #5] + ldr r0, [r5] + strb r4, [r0, #6] + movs r2, #0 + movs r4, #0x6c + movs r3, #0 +_0819A672: + ldr r0, [r5] + adds r1, r2, #0 + muls r1, r4, r1 + adds r0, r0, r1 + strb r3, [r0, #0x10] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819A672 + ldr r0, _0819A6A4 + ldr r0, [r0] + ldr r1, _0819A6A8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _0819A6AC + movs r0, #0 + bl sub_0819B124 + b _0819A6B2 + .align 2, 0 +_0819A6A0: .4byte gUnknown_3001278 +_0819A6A4: .4byte gUnknown_3005AF0 +_0819A6A8: .4byte 0x00000CA9 +_0819A6AC: + movs r0, #0 + bl sub_0819B2DC +_0819A6B2: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_0819A64C + + thumb_func_start sub_0819A6B8 +sub_0819A6B8: @ 0x0819A6B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r4, #0 + mov r8, r4 + ldr r7, _0819A7C8 +_0819A6C4: + lsls r1, r4, #3 + adds r1, r1, r4 + lsls r1, r1, #2 + subs r1, r1, r4 + adds r1, #0x20 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _0819A7CC + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r6, _0819A7D0 + ldr r2, [r6] + movs r5, #0x6c + adds r1, r4, #0 + muls r1, r5, r1 + adds r2, r2, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r2, #0xe] + ldrh r1, [r2, #0xe] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r1, r8 + strh r1, [r0, #0x2e] + adds r0, r4, #0 + bl sub_0819AA4C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _0819A6C4 + ldr r0, [r6] + ldrb r1, [r0, #3] + ldr r4, _0819A7C8 + muls r1, r5, r1 + adds r0, r0, r1 + ldrh r0, [r0, #0xe] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldr r0, _0819A7D4 + movs r2, #0x20 + ldrsh r1, [r1, r2] + movs r2, #0x58 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r6] + movs r5, #0 + strb r0, [r1, #4] + ldr r0, _0819A7D8 + movs r1, #0xb0 + movs r2, #0x70 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r6] + strb r0, [r1, #1] + ldr r0, _0819A7DC + movs r1, #0xb0 + movs r2, #0x90 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r6] + strb r0, [r1, #2] + ldr r0, [r6] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r6] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, [r6] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x28 + strb r5, [r0] + ldr r0, [r6] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x29 + strb r5, [r0] + ldr r0, [r6] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x28 + strb r5, [r0] + ldr r0, [r6] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x29 + strb r5, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819A7C8: .4byte gUnknown_20205AC +_0819A7CC: .4byte gUnknown_85DBDE0 +_0819A7D0: .4byte gUnknown_3001278 +_0819A7D4: .4byte gUnknown_85DBDF8 +_0819A7D8: .4byte gUnknown_85DBE10 +_0819A7DC: .4byte gUnknown_85DBE28 + thumb_func_end sub_0819A6B8 + + thumb_func_start sub_0819A7E0 +sub_0819A7E0: @ 0x0819A7E0 + push {r4, r5, r6, lr} + movs r4, #0 +_0819A7E4: + ldr r6, _0819A840 + ldr r1, [r6] + movs r0, #0x6c + muls r0, r4, r0 + adds r1, r1, r0 + ldrh r1, [r1, #0xe] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _0819A844 + adds r0, r0, r5 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _0819A7E4 + ldr r0, [r6] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + ldr r0, [r6] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + ldr r0, [r6] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819A840: .4byte gUnknown_3001278 +_0819A844: .4byte gUnknown_20205AC + thumb_func_end sub_0819A7E0 + + thumb_func_start sub_0819A848 +sub_0819A848: @ 0x0819A848 + push {r4, lr} + lsls r0, r0, #0x18 + cmp r0, #0 + ble _0819A868 + ldr r0, _0819A860 + ldr r1, [r0] + ldrb r3, [r1, #3] + adds r2, r0, #0 + cmp r3, #5 + beq _0819A864 + adds r0, r3, #1 + b _0819A87E + .align 2, 0 +_0819A860: .4byte gUnknown_3001278 +_0819A864: + movs r0, #0 + b _0819A87E +_0819A868: + ldr r0, _0819A878 + ldr r1, [r0] + ldrb r3, [r1, #3] + adds r2, r0, #0 + cmp r3, #0 + beq _0819A87C + subs r0, r3, #1 + b _0819A87E + .align 2, 0 +_0819A878: .4byte gUnknown_3001278 +_0819A87C: + movs r0, #5 +_0819A87E: + strb r0, [r1, #3] + ldr r2, [r2] + ldrb r3, [r2, #3] + ldr r4, _0819A8AC + ldrb r0, [r2, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + movs r0, #0x6c + muls r0, r3, r0 + adds r2, r2, r0 + ldrh r2, [r2, #0xe] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x20] + strh r0, [r1, #0x20] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819A8AC: .4byte gUnknown_20205AC + thumb_func_end sub_0819A848 + + thumb_func_start sub_0819A8B0 +sub_0819A8B0: @ 0x0819A8B0 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + ble _0819A8D0 + ldr r0, _0819A8C8 + ldr r1, [r0] + ldrb r3, [r1] + adds r2, r0, #0 + cmp r3, #2 + beq _0819A8CC + adds r0, r3, #1 + b _0819A8E6 + .align 2, 0 +_0819A8C8: .4byte gUnknown_3001278 +_0819A8CC: + movs r0, #0 + b _0819A8E6 +_0819A8D0: + ldr r0, _0819A8E0 + ldr r1, [r0] + ldrb r3, [r1] + adds r2, r0, #0 + cmp r3, #0 + beq _0819A8E4 + subs r0, r3, #1 + b _0819A8E6 + .align 2, 0 +_0819A8E0: .4byte gUnknown_3001278 +_0819A8E4: + movs r0, #2 +_0819A8E6: + strb r0, [r1] + ldr r3, _0819A914 + ldr r2, [r2] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + pop {r0} + bx r0 + .align 2, 0 +_0819A914: .4byte gUnknown_20205AC + thumb_func_end sub_0819A8B0 + + thumb_func_start sub_0819A918 +sub_0819A918: @ 0x0819A918 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + ble _0819A938 + ldr r0, _0819A930 + ldr r1, [r0] + ldrb r3, [r1, #7] + adds r2, r0, #0 + cmp r3, #1 + beq _0819A934 + adds r0, r3, #1 + b _0819A94E + .align 2, 0 +_0819A930: .4byte gUnknown_3001278 +_0819A934: + movs r0, #0 + b _0819A94E +_0819A938: + ldr r0, _0819A948 + ldr r1, [r0] + ldrb r3, [r1, #7] + adds r2, r0, #0 + cmp r3, #0 + beq _0819A94C + subs r0, r3, #1 + b _0819A94E + .align 2, 0 +_0819A948: .4byte gUnknown_3001278 +_0819A94C: + movs r0, #1 +_0819A94E: + strb r0, [r1, #7] + ldr r3, _0819A97C + ldr r2, [r2] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2, #7] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2, #7] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + pop {r0} + bx r0 + .align 2, 0 +_0819A97C: .4byte gUnknown_20205AC + thumb_func_end sub_0819A918 + + thumb_func_start sub_0819A980 +sub_0819A980: @ 0x0819A980 + push {r4, r5, r6, lr} + ldr r5, _0819A9FC + ldr r0, [r5] + ldrb r6, [r0, #3] + movs r1, #0x6c + adds r4, r6, #0 + muls r4, r1, r4 + adds r0, r0, r4 + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _0819AA00 + movs r0, #0x64 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r1, [r5] + ldrb r0, [r1, #5] + cmp r0, #3 + bne _0819A9E4 + adds r0, r1, r4 + ldrb r0, [r0, #0x10] + cmp r0, #1 + bne _0819A9E4 + movs r2, #0 + ldrb r0, [r1, #0x10] + cmp r0, #2 + beq _0819A9D2 + movs r4, #0x6c +_0819A9BA: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bhi _0819A9D2 + ldr r0, [r5] + adds r1, r2, #0 + muls r1, r4, r1 + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + cmp r0, #2 + bne _0819A9BA +_0819A9D2: + cmp r2, #6 + beq _0819AA3C + ldr r0, _0819A9FC + ldr r1, [r0] + movs r0, #0x6c + muls r0, r2, r0 + adds r1, r1, r0 + movs r0, #1 + strb r0, [r1, #0x10] +_0819A9E4: + ldr r2, _0819A9FC + ldr r1, [r2] + movs r0, #0x6c + muls r0, r6, r0 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1, #0x10] + ldr r1, [r2] + ldrb r0, [r1, #5] + subs r0, #1 + b _0819AA18 + .align 2, 0 +_0819A9FC: .4byte gUnknown_3001278 +_0819AA00: + movs r0, #0x65 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, [r5] + adds r1, r0, r4 + ldrb r0, [r0, #5] + strb r0, [r1, #0x10] + ldr r1, [r5] + ldrb r0, [r1, #5] + adds r0, #1 +_0819AA18: + strb r0, [r1, #5] + ldr r2, _0819AA44 + ldr r0, _0819AA48 + ldr r0, [r0] + movs r1, #0x6c + muls r1, r6, r1 + adds r0, r0, r1 + ldrh r0, [r0, #0xe] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] +_0819AA3C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819AA44: .4byte gUnknown_20205AC +_0819AA48: .4byte gUnknown_3001278 + thumb_func_end sub_0819A980 + + thumb_func_start sub_0819AA4C +sub_0819AA4C: @ 0x0819AA4C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _0819AA68 + ldr r0, [r0] + movs r1, #0x6c + muls r1, r4, r1 + adds r0, r0, r1 + ldrb r0, [r0, #0x10] + cmp r0, #0 + beq _0819AA6C + movs r0, #0x65 + b _0819AA6E + .align 2, 0 +_0819AA68: .4byte gUnknown_3001278 +_0819AA6C: + movs r0, #0x64 +_0819AA6E: + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _0819AAA0 + ldr r0, _0819AAA4 + ldr r0, [r0] + movs r1, #0x6c + muls r1, r4, r1 + adds r0, r0, r1 + ldrh r0, [r0, #0xe] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819AAA0: .4byte gUnknown_20205AC +_0819AAA4: .4byte gUnknown_3001278 + thumb_func_end sub_0819AA4C + + thumb_func_start sub_0819AAA8 +sub_0819AAA8: @ 0x0819AAA8 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0819AACC + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #7 + beq _0819AB04 + cmp r0, #7 + bgt _0819AAD0 + cmp r0, #6 + beq _0819AAD6 + b _0819ABF0 + .align 2, 0 +_0819AACC: .4byte gUnknown_3005B60 +_0819AAD0: + cmp r0, #8 + beq _0819AB88 + b _0819ABF0 +_0819AAD6: + ldr r1, _0819AAFC + ldr r0, _0819AB00 + movs r2, #0xe4 + lsls r2, r2, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r1, r2 + movs r2, #0 + strh r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + str r2, [sp] + movs r1, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #7 + strh r0, [r6, #8] + b _0819ABF0 + .align 2, 0 +_0819AAFC: .4byte gUnknown_20373B4 +_0819AB00: .4byte gUnknown_20377B4 +_0819AB04: + ldr r0, _0819AB6C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0819ABF0 + ldr r4, _0819AB70 + ldr r0, [r4] + ldr r2, _0819AB74 + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_080A8964 + ldr r1, [r4] + movs r3, #0xa6 + lsls r3, r3, #2 + adds r0, r1, r3 + ldr r0, [r0] + movs r2, #0xa8 + lsls r2, r2, #2 + adds r1, r1, r2 + bl sub_0819F330 + bl sub_0819A7E0 + ldr r4, _0819AB78 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819AB7C + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819AB80 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819AB84 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + bl sub_080034D4 + movs r0, #8 + strh r0, [r6, #8] + b _0819ABF0 + .align 2, 0 +_0819AB6C: .4byte gUnknown_2037C74 +_0819AB70: .4byte gUnknown_3001278 +_0819AB74: .4byte 0x000002A1 +_0819AB78: .4byte gUnknown_203CAF8 +_0819AB7C: .4byte gUnknown_203CAFC +_0819AB80: .4byte gUnknown_203CB00 +_0819AB84: .4byte gUnknown_203CB04 +_0819AB88: + ldr r4, _0819ABF8 + ldr r1, [r4] + ldr r0, _0819ABFC + movs r3, #0xe4 + lsls r3, r3, #1 + adds r0, r0, r3 + ldrh r0, [r0] + adds r3, #0xdc + adds r1, r1, r3 + strh r0, [r1] + adds r0, r2, #0 + bl sub_080A8964 + ldr r1, [r4] + movs r0, #1 + strb r0, [r1, #6] + ldr r0, [r4] + ldrb r6, [r0, #3] + ldr r4, _0819AC00 + movs r0, #0x96 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + movs r4, #0 +_0819ABBA: + ldr r5, _0819AC00 + ldr r1, [r5] + movs r0, #0x64 + muls r0, r4, r0 + adds r0, r0, r1 + ldr r1, _0819ABF8 + ldr r1, [r1] + movs r2, #0x6c + muls r2, r4, r2 + adds r1, r1, r2 + adds r1, #0x14 + movs r2, #0x64 + bl memcpy + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _0819ABBA + ldr r1, [r5] + ldr r0, _0819AC04 + str r0, [sp] + movs r0, #1 + adds r2, r6, #0 + movs r3, #5 + bl sub_081BF280 +_0819ABF0: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819ABF8: .4byte gUnknown_3001278 +_0819ABFC: .4byte gUnknown_20373B4 +_0819AC00: .4byte gUnknown_203CB08 +_0819AC04: .4byte sub_0819A1B4 + thumb_func_end sub_0819AAA8 + + thumb_func_start sub_0819AC08 +sub_0819AC08: @ 0x0819AC08 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _0819AC38 + ldr r0, [r7] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _0819ACAE + ldr r1, _0819AC3C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _0819AC40 + cmp r1, #1 + beq _0819AC58 + b _0819ACAE + .align 2, 0 +_0819AC38: .4byte gUnknown_3001278 +_0819AC3C: .4byte gUnknown_3005B60 +_0819AC40: + movs r0, #1 + rsbs r0, r0, #0 + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0819ACAE +_0819AC58: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0819ACAE + bl sub_0819B404 + ldr r0, [r7] + ldr r1, _0819ACB8 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080A8964 + bl sub_0819A7E0 + ldr r4, _0819ACBC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819ACC0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819ACC4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, [r7] + bl sub_08000BF0 + str r5, [r7] + bl sub_080034D4 + ldr r0, _0819ACC8 + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 +_0819ACAE: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819ACB8: .4byte 0x000002A1 +_0819ACBC: .4byte gUnknown_203CAF8 +_0819ACC0: .4byte gUnknown_203CB00 +_0819ACC4: .4byte gUnknown_203CB04 +_0819ACC8: .4byte sub_08085B18 + thumb_func_end sub_0819AC08 + + thumb_func_start sub_0819ACCC +sub_0819ACCC: @ 0x0819ACCC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r7, _0819AD04 + ldr r0, [r7] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _0819ADBA + ldr r1, _0819AD08 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #5 + beq _0819AD24 + cmp r0, #5 + bgt _0819AD0C + cmp r0, #4 + beq _0819AD1A + b _0819ADBA + .align 2, 0 +_0819AD04: .4byte gUnknown_3001278 +_0819AD08: .4byte gUnknown_3005B60 +_0819AD0C: + cmp r0, #0xa + bne _0819ADBA + bl sub_0819C19C + movs r0, #4 + strh r0, [r5, #8] + b _0819ADBA +_0819AD1A: + bl sub_0819B574 + movs r0, #5 + strh r0, [r5, #8] + b _0819ADBA +_0819AD24: + ldr r2, _0819AD50 + ldrh r1, [r2, #0x2e] + movs r0, #1 + mov r8, r0 + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0819AD58 + movs r0, #5 + bl sub_080A306C + ldr r0, [r7] + ldrb r4, [r0, #7] + cmp r4, #0 + bne _0819AD66 + bl sub_0819C250 + strh r4, [r5, #8] + ldr r0, _0819AD54 + str r0, [r5] + b _0819ADBA + .align 2, 0 +_0819AD50: .4byte gUnknown_3002360 +_0819AD54: .4byte sub_0819AC08 +_0819AD58: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819AD8C + movs r0, #5 + bl sub_080A306C +_0819AD66: + movs r0, #4 + bl sub_0819B5F8 + bl sub_0819B940 + ldr r0, [r7] + ldr r1, _0819AD84 + adds r0, r0, r1 + mov r1, r8 + strb r1, [r0] + strh r6, [r5, #8] + ldr r0, _0819AD88 + str r0, [r5] + b _0819ADBA + .align 2, 0 +_0819AD84: .4byte 0x000002A2 +_0819AD88: .4byte sub_0819B018 +_0819AD8C: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0819ADA6 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819A918 + b _0819ADBA +_0819ADA6: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819ADBA + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_0819A918 +_0819ADBA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0819ACCC + + thumb_func_start sub_0819ADC4 +sub_0819ADC4: @ 0x0819ADC4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0819ADF0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + subs r0, #2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r6, r1, #0 + cmp r0, #0xb + bls _0819ADE4 + b _0819B00E +_0819ADE4: + lsls r0, r0, #2 + ldr r1, _0819ADF4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819ADF0: .4byte gUnknown_3005B60 +_0819ADF4: .4byte _0819ADF8 +_0819ADF8: @ jump table + .4byte _0819AE28 @ case 0 + .4byte _0819AE8C @ case 1 + .4byte _0819B00E @ case 2 + .4byte _0819B00E @ case 3 + .4byte _0819B00E @ case 4 + .4byte _0819B00E @ case 5 + .4byte _0819B00E @ case 6 + .4byte _0819AE5C @ case 7 + .4byte _0819B00E @ case 8 + .4byte _0819B00E @ case 9 + .4byte _0819AFA0 @ case 10 + .4byte _0819AFFC @ case 11 +_0819AE28: + ldr r0, _0819AE50 + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #0 + bne _0819AE42 + ldr r2, _0819AE54 + adds r0, r1, r2 + movs r7, #0xa8 + lsls r7, r7, #2 + adds r1, r1, r7 + movs r2, #0 + bl sub_0819F1A0 +_0819AE42: + ldr r0, _0819AE58 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #9 + b _0819B00C + .align 2, 0 +_0819AE50: .4byte gUnknown_3001278 +_0819AE54: .4byte 0x00000299 +_0819AE58: .4byte gUnknown_3005B60 +_0819AE5C: + ldr r4, _0819AE84 + ldr r0, [r4] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _0819AE6E + b _0819B00E +_0819AE6E: + bl sub_0819B4E4 + ldr r1, [r4] + movs r0, #0 + strb r0, [r1, #6] + ldr r1, _0819AE88 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + b _0819AFE4 + .align 2, 0 +_0819AE84: .4byte gUnknown_3001278 +_0819AE88: .4byte gUnknown_3005B60 +_0819AE8C: + ldr r2, _0819AEBC + ldrh r1, [r2, #0x2e] + movs r7, #1 + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0819AF1C + movs r0, #5 + bl sub_080A306C + bl sub_0819B8A8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + bne _0819AEC8 + ldr r0, _0819AEC0 + ldr r0, [r0] + ldr r2, _0819AEC4 + adds r0, r0, r2 + b _0819AF4C + .align 2, 0 +_0819AEBC: .4byte gUnknown_3002360 +_0819AEC0: .4byte gUnknown_3001278 +_0819AEC4: .4byte 0x000002A2 +_0819AEC8: + cmp r0, #2 + bne _0819AEE8 + ldr r1, _0819AEE0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xa + strh r1, [r0, #8] + ldr r1, _0819AEE4 + str r1, [r0] + b _0819B00E + .align 2, 0 +_0819AEE0: .4byte gUnknown_3005B60 +_0819AEE4: .4byte sub_0819ACCC +_0819AEE8: + cmp r1, #3 + bne _0819AF00 + ldr r1, _0819AEFC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xb + strh r1, [r0, #8] + b _0819AF5A + .align 2, 0 +_0819AEFC: .4byte gUnknown_3005B60 +_0819AF00: + ldr r1, _0819AF14 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #6 + strh r1, [r0, #8] + ldr r1, _0819AF18 + str r1, [r0] + b _0819B00E + .align 2, 0 +_0819AF14: .4byte gUnknown_3005B60 +_0819AF18: .4byte sub_0819AAA8 +_0819AF1C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819AF70 + movs r0, #5 + bl sub_080A306C + ldr r4, _0819AF60 + ldr r1, [r4] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r0, r1, r2 + ldr r0, [r0] + adds r2, #8 + adds r1, r1, r2 + movs r2, #0 + bl sub_0819F2E4 + movs r0, #3 + bl sub_0819B5F8 + ldr r0, [r4] + ldr r1, _0819AF64 + adds r0, r0, r1 +_0819AF4C: + strb r7, [r0] + ldr r1, _0819AF68 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #8] +_0819AF5A: + ldr r1, _0819AF6C + str r1, [r0] + b _0819B00E + .align 2, 0 +_0819AF60: .4byte gUnknown_3001278 +_0819AF64: .4byte 0x000002A2 +_0819AF68: .4byte gUnknown_3005B60 +_0819AF6C: .4byte sub_0819B018 +_0819AF70: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0819AF8A + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819A8B0 + b _0819B00E +_0819AF8A: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819B00E + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_0819A8B0 + b _0819B00E +_0819AFA0: + ldr r0, _0819AFEC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0819B00E + ldr r4, _0819AFF0 + ldr r2, [r4] + ldrb r0, [r2, #6] + cmp r0, #1 + bne _0819AFD8 + ldr r1, _0819AFF4 + movs r7, #0xa9 + lsls r7, r7, #2 + adds r0, r2, r7 + ldrh r0, [r0] + movs r2, #0xe4 + lsls r2, r2, #1 + adds r1, r1, r2 + strh r0, [r1] + ldr r0, _0819AFF8 + subs r7, #0xbc + adds r1, r0, r7 + ldrh r1, [r1] + adds r0, r0, r2 + strh r1, [r0] +_0819AFD8: + ldr r0, [r4] + strb r3, [r0, #6] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r6 +_0819AFE4: + movs r1, #3 + strh r1, [r0, #8] + b _0819B00E + .align 2, 0 +_0819AFEC: .4byte gUnknown_2037C74 +_0819AFF0: .4byte gUnknown_3001278 +_0819AFF4: .4byte gUnknown_20377B4 +_0819AFF8: .4byte gUnknown_20373B4 +_0819AFFC: + bl sub_0819B4E4 + ldr r0, _0819B014 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r0, #0xc +_0819B00C: + strh r0, [r1, #8] +_0819B00E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819B014: .4byte gUnknown_3005B60 + thumb_func_end sub_0819ADC4 + + thumb_func_start sub_0819B018 +sub_0819B018: @ 0x0819B018 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r5, _0819B04C + ldr r3, [r5] + movs r7, #0xa8 + lsls r7, r7, #2 + adds r0, r3, r7 + ldrb r0, [r0] + cmp r0, #1 + beq _0819B116 + ldr r1, _0819B050 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0819B07C + cmp r1, #1 + bgt _0819B054 + cmp r1, #0 + beq _0819B05A + b _0819B116 + .align 2, 0 +_0819B04C: .4byte gUnknown_3001278 +_0819B050: .4byte gUnknown_3005B60 +_0819B054: + cmp r1, #0xb + beq _0819B0E0 + b _0819B116 +_0819B05A: + ldr r0, _0819B074 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0819B116 + movs r0, #1 + movs r1, #1 + strh r1, [r4, #8] + ldr r2, _0819B078 + adds r1, r3, r2 + strb r0, [r1] + b _0819B116 + .align 2, 0 +_0819B074: .4byte gUnknown_2037C74 +_0819B078: .4byte 0x000002A2 +_0819B07C: + ldr r2, _0819B0A0 + ldrh r0, [r2, #0x2e] + ands r1, r0 + cmp r1, #0 + beq _0819B0AC + movs r0, #5 + bl sub_080A306C + ldr r0, [r5] + ldr r1, _0819B0A4 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + movs r0, #2 + strh r0, [r4, #8] + ldr r0, _0819B0A8 + str r0, [r4] + b _0819B116 + .align 2, 0 +_0819B0A0: .4byte gUnknown_3002360 +_0819B0A4: .4byte 0x000002A2 +_0819B0A8: .4byte sub_0819ADC4 +_0819B0AC: + ldrh r1, [r2, #0x30] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819B0C2 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _0819B0D2 +_0819B0C2: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0819B116 + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_0819B0D2: + bl sub_0819A848 + bl sub_0819B99C + bl sub_0819B688 + b _0819B116 +_0819B0E0: + ldr r0, _0819B11C + ldrh r1, [r0, #0x2e] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0819B116 + movs r0, #5 + bl sub_080A306C + ldr r1, [r5] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r0, r1, r2 + ldr r0, [r0] + adds r1, r1, r7 + movs r2, #0 + bl sub_0819F2E4 + bl sub_0819B708 + ldr r0, [r5] + ldr r1, _0819B120 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + strh r6, [r4, #8] +_0819B116: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819B11C: .4byte gUnknown_3002360 +_0819B120: .4byte 0x000002A2 + thumb_func_end sub_0819B018 + + thumb_func_start sub_0819B124 +sub_0819B124: @ 0x0819B124 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + movs r6, #0 + add r0, sp, #0xc + strb r6, [r0] + ldr r0, _0819B1F4 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + ldr r7, _0819B1F8 + ldr r2, [r7] + ldr r0, _0819B1FC + adds r4, r2, r0 + ldrb r0, [r4] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r5, r0, #0 + lsls r0, r5, #1 + lsls r1, r6, #2 + adds r0, r0, r1 + ldr r1, _0819B200 + adds r2, r2, r1 + adds r2, r2, r0 + ldrh r0, [r2] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r1, _0819B204 + ldr r0, _0819B208 + str r0, [r1] + ldrb r1, [r4] + movs r0, #3 + ands r0, r1 + movs r2, #0x32 + str r2, [sp, #0x14] + cmp r0, #0 + beq _0819B18A + movs r3, #0x64 + str r3, [sp, #0x14] +_0819B18A: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_081A6D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] + ldr r1, [r7] + ldrb r0, [r1, #0xa] + mov sb, r0 + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + mov r2, sb + orrs r2, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r2, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r2, r0 + mov sb, r2 + movs r3, #0 + mov r8, r3 +_0819B1B8: + ldr r0, _0819B1F8 + ldr r1, [r0] + mov r2, r8 + lsls r0, r2, #1 + add r0, r8 + lsls r0, r0, #2 + adds r1, r1, r0 + movs r3, #0xe7 + lsls r3, r3, #4 + adds r1, r1, r3 + ldrh r5, [r1] + ldr r0, _0819B20C + ldr r1, [r0] + ldr r2, [sp, #0x10] + add r2, r8 + movs r3, #0x6c + adds r0, r2, #0 + muls r0, r3, r0 + adds r1, r1, r0 + strh r5, [r1, #0xc] + mov sl, r2 + ldr r0, [sp, #0x1c] + cmp r8, r0 + bhs _0819B210 + ldr r0, [sp, #0x18] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _0819B212 + .align 2, 0 +_0819B1F4: .4byte 0x000040CE +_0819B1F8: .4byte gUnknown_3005AF0 +_0819B1FC: .4byte 0x00000CA9 +_0819B200: .4byte 0x00000DE2 +_0819B204: .4byte gUnknown_203B958 +_0819B208: .4byte gUnknown_85B8700 +_0819B20C: .4byte gUnknown_3001278 +_0819B210: + ldr r0, [sp, #0x18] +_0819B212: + movs r1, #0 + bl sub_081A6A40 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r1, #0x6c + mov r4, sl + muls r4, r1, r4 + adds r4, #0xc + ldr r2, _0819B2D0 + ldr r0, [r2] + adds r0, r0, r4 + adds r0, #8 + ldr r1, _0819B2D4 + ldr r2, [r1] + lsls r5, r5, #4 + adds r2, r5, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + str r6, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + mov r2, sb + str r2, [sp, #8] + ldr r2, [sp, #0x14] + bl sub_08068174 + movs r1, #0 + add r0, sp, #0xc + strb r1, [r0] + movs r6, #0 + adds r7, r5, #0 + movs r3, #1 + add r8, r3 + ldr r3, _0819B2D0 +_0819B258: + ldr r0, [r3] + adds r0, r0, r4 + adds r0, #8 + ldr r5, _0819B2D4 + ldr r1, [r5] + adds r1, r7, r1 + lsls r2, r6, #1 + adds r1, #2 + adds r1, r1, r2 + ldrh r1, [r1] + adds r2, r6, #0 + str r3, [sp, #0x20] + bl sub_081A6DBC + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, [sp, #0x20] + cmp r6, #3 + bls _0819B258 + movs r0, #0x6c + mov r4, sl + muls r4, r0, r4 + adds r4, #0xc + ldr r1, _0819B2D0 + ldr r0, [r1] + adds r0, r0, r4 + adds r0, #8 + movs r1, #0x20 + add r2, sp, #0xc + bl sub_0806A774 + ldr r2, _0819B2D0 + ldr r0, [r2] + adds r0, r0, r4 + adds r0, #8 + ldr r1, [r5] + adds r1, r7, r1 + ldrb r2, [r1, #0xa] + lsls r2, r2, #1 + ldr r1, _0819B2D8 + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 + mov r3, r8 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #5 + bhi _0819B2C0 + b _0819B1B8 +_0819B2C0: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819B2D0: .4byte gUnknown_3001278 +_0819B2D4: .4byte gUnknown_203B958 +_0819B2D8: .4byte gUnknown_85ADBF4 + thumb_func_end sub_0819B124 + + thumb_func_start sub_0819B2DC +sub_0819B2DC: @ 0x0819B2DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x10] + add r0, sp, #0xc + movs r1, #0 + strb r1, [r0] + ldr r2, _0819B3F0 + ldr r0, _0819B3F4 + str r0, [r2] + ldr r0, _0819B3F8 + ldr r1, [r0] + ldrb r3, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + orrs r3, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r3, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r3, r0 + mov sl, r3 + movs r7, #0 + mov sb, r7 +_0819B318: + ldr r0, _0819B3F8 + ldr r1, [r0] + mov r2, sb + lsls r0, r2, #1 + add r0, sb + lsls r0, r0, #2 + adds r1, r1, r0 + movs r3, #0xe7 + lsls r3, r3, #4 + adds r1, r1, r3 + ldrh r1, [r1] + mov r8, r1 + ldr r7, _0819B3FC + ldr r0, [r7] + ldr r6, [sp, #0x10] + add r6, sb + movs r1, #0x6c + adds r4, r6, #0 + muls r4, r1, r4 + adds r1, r0, r4 + mov r2, r8 + strh r2, [r1, #0xc] + adds r4, #0xc + adds r0, r0, r4 + adds r0, #8 + ldr r3, _0819B3F0 + ldr r2, [r3] + mov r7, r8 + lsls r5, r7, #4 + adds r2, r5, r2 + ldrh r1, [r2] + ldrb r3, [r2, #0xc] + movs r7, #0 + str r7, [sp] + ldrb r2, [r2, #0xb] + str r2, [sp, #4] + mov r2, sl + str r2, [sp, #8] + movs r2, #0x1e + bl sub_08068174 + add r0, sp, #0xc + movs r3, #0 + strb r3, [r0] + movs r0, #1 + add sb, r0 +_0819B374: + ldr r1, _0819B3FC + ldr r0, [r1] + adds r0, r0, r4 + adds r0, #8 + ldr r3, _0819B3F0 + ldr r2, [r3] + mov r3, r8 + lsls r1, r3, #4 + adds r1, r1, r2 + lsls r2, r7, #1 + adds r1, #2 + adds r1, r1, r2 + ldrh r1, [r1] + adds r2, r7, #0 + bl sub_081A6DBC + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _0819B374 + movs r7, #0x6c + adds r4, r6, #0 + muls r4, r7, r4 + adds r4, #0xc + ldr r1, _0819B3FC + ldr r0, [r1] + adds r0, r0, r4 + adds r0, #8 + movs r1, #0x20 + add r2, sp, #0xc + bl sub_0806A774 + ldr r2, _0819B3FC + ldr r0, [r2] + adds r0, r0, r4 + adds r0, #8 + ldr r3, _0819B3F0 + ldr r1, [r3] + adds r1, r5, r1 + ldrb r2, [r1, #0xa] + lsls r2, r2, #1 + ldr r1, _0819B400 + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 + mov r7, sb + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #5 + bls _0819B318 + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819B3F0: .4byte gUnknown_203B958 +_0819B3F4: .4byte gUnknown_85BCF70 +_0819B3F8: .4byte gUnknown_3005AF0 +_0819B3FC: .4byte gUnknown_3001278 +_0819B400: .4byte gUnknown_85ADBF4 + thumb_func_end sub_0819B2DC + + thumb_func_start sub_0819B404 +sub_0819B404: @ 0x0819B404 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + movs r7, #0 + ldr r0, _0819B4A4 + mov sl, r0 + ldr r1, _0819B4A8 + mov r8, r1 +_0819B418: + movs r2, #0 + adds r0, r7, #1 + mov sb, r0 +_0819B41E: + mov r1, sl + ldr r0, [r1] + movs r1, #0x6c + adds r6, r2, #0 + muls r6, r1, r6 + adds r1, r0, r6 + ldrb r0, [r1, #0x10] + cmp r0, sb + bne _0819B4BC + movs r0, #0x64 + adds r5, r7, #0 + muls r5, r0, r5 + ldr r2, _0819B4AC + adds r5, r5, r2 + adds r1, #0x14 + adds r0, r5, #0 + movs r2, #0x64 + bl memcpy + mov r0, r8 + ldr r1, [r0] + lsls r4, r7, #1 + adds r4, r4, r7 + lsls r4, r4, #2 + adds r1, r1, r4 + mov r2, sl + ldr r0, [r2] + adds r0, r0, r6 + ldrh r0, [r0, #0xc] + movs r2, #0xe7 + lsls r2, r2, #4 + adds r1, r1, r2 + strh r0, [r1] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov r2, r8 + ldr r1, [r2] + ldr r2, _0819B4B0 + adds r1, r1, r2 + adds r1, r1, r4 + str r0, [r1] + adds r0, r5, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_0806A1B4 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldr r2, _0819B4B4 + adds r1, r1, r2 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0 + bl sub_0806A1B4 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldr r2, _0819B4B8 + adds r1, r1, r2 + strb r0, [r1] + b _0819B4C6 + .align 2, 0 +_0819B4A4: .4byte gUnknown_3001278 +_0819B4A8: .4byte gUnknown_3005AF0 +_0819B4AC: .4byte gUnknown_2024190 +_0819B4B0: .4byte 0x00000E74 +_0819B4B4: .4byte 0x00000E79 +_0819B4B8: .4byte 0x00000E78 +_0819B4BC: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819B41E +_0819B4C6: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bls _0819B418 + bl sub_0806B004 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819B404 + + thumb_func_start sub_0819B4E4 +sub_0819B4E4: @ 0x0819B4E4 + push {r4, r5, lr} + ldr r5, _0819B56C + ldr r1, [r5] + ldrb r0, [r1, #6] + cmp r0, #0 + bne _0819B4F2 + strb r0, [r1] +_0819B4F2: + ldr r4, _0819B570 + ldr r2, [r5] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xb0 + strh r1, [r0, #0x20] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xd0 + strh r1, [r0, #0x20] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + bl sub_0819B7A0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819B56C: .4byte gUnknown_3001278 +_0819B570: .4byte gUnknown_20205AC + thumb_func_end sub_0819B4E4 + + thumb_func_start sub_0819B574 +sub_0819B574: @ 0x0819B574 + push {r4, r5, lr} + ldr r5, _0819B5F0 + ldr r1, [r5] + movs r0, #0 + strb r0, [r1, #7] + ldr r4, _0819B5F4 + ldr r2, [r5] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xb0 + strh r1, [r0, #0x20] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r3, #0x70 + strh r3, [r0, #0x22] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xd0 + strh r1, [r0, #0x20] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r3, [r0, #0x22] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + bl sub_0819B84C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819B5F0: .4byte gUnknown_3001278 +_0819B5F4: .4byte gUnknown_20205AC + thumb_func_end sub_0819B574 + + thumb_func_start sub_0819B5F8 +sub_0819B5F8: @ 0x0819B5F8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0819B64C + ldr r3, _0819B650 + ldr r0, [r3] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + bl sub_08003774 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819B64C: .4byte gUnknown_20205AC +_0819B650: .4byte gUnknown_3001278 + thumb_func_end sub_0819B5F8 + + thumb_func_start sub_0819B654 +sub_0819B654: @ 0x0819B654 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0 + bl sub_08003B18 + ldr r2, _0819B684 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819B684: .4byte gUnknown_85DBB98 + thumb_func_end sub_0819B654 + + thumb_func_start sub_0819B688 +sub_0819B688: @ 0x0819B688 + push {r4, r5, lr} + sub sp, #0xc + ldr r5, _0819B6F8 + ldr r0, [r5] + ldrb r4, [r0, #3] + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0x6c + muls r0, r4, r0 + ldr r1, [r5] + adds r0, r0, r1 + adds r0, #0x14 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0819B6FC + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0819B700 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #5 + subs r2, r2, r0 + lsls r2, r2, #0x1b + lsrs r2, r2, #0x18 + ldr r0, _0819B704 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + movs r0, #1 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819B6F8: .4byte gUnknown_3001278 +_0819B6FC: .4byte gUnknown_2021C7C +_0819B700: .4byte gUnknown_82EA31C +_0819B704: .4byte gUnknown_85DBC81 + thumb_func_end sub_0819B688 + + thumb_func_start sub_0819B708 +sub_0819B708: @ 0x0819B708 + push {lr} + sub sp, #0xc + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819B724 + ldr r0, [r0] + ldrb r0, [r0, #5] + cmp r0, #1 + bne _0819B72C + ldr r2, _0819B728 + b _0819B740 + .align 2, 0 +_0819B724: .4byte gUnknown_3001278 +_0819B728: .4byte gUnknown_85DBBA1 +_0819B72C: + cmp r0, #2 + bne _0819B738 + ldr r2, _0819B734 + b _0819B740 + .align 2, 0 +_0819B734: .4byte gUnknown_85DBBB5 +_0819B738: + ldr r2, _0819B764 + cmp r0, #3 + bne _0819B740 + ldr r2, _0819B768 +_0819B740: + movs r0, #5 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #4 + bl sub_0800449C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819B764: .4byte gUnknown_85DBBF6 +_0819B768: .4byte gUnknown_85DBBC9 + thumb_func_end sub_0819B708 + + thumb_func_start sub_0819B76C +sub_0819B76C: @ 0x0819B76C + push {lr} + sub sp, #0xc + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + ldr r2, _0819B79C + movs r0, #5 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + movs r3, #4 + bl sub_0800449C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819B79C: .4byte gUnknown_85DBC11 + thumb_func_end sub_0819B76C + + thumb_func_start sub_0819B7A0 +sub_0819B7A0: @ 0x0819B7A0 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r0, _0819B7F4 + ldr r0, [r0] + ldrb r2, [r0, #3] + movs r1, #0x6c + muls r1, r2, r1 + adds r0, r0, r1 + ldrb r5, [r0, #0x10] + movs r0, #3 + bl sub_0800365C + movs r0, #3 + movs r1, #0 + bl sub_08003B18 + ldr r4, _0819B7F8 + str r4, [sp] + movs r6, #0 + str r6, [sp, #4] + ldr r0, _0819B7FC + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + cmp r5, #0 + beq _0819B804 + str r4, [sp] + str r6, [sp, #4] + ldr r0, _0819B800 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #0x12 + bl sub_08199AFC + b _0819B818 + .align 2, 0 +_0819B7F4: .4byte gUnknown_3001278 +_0819B7F8: .4byte gUnknown_85DBC7E +_0819B7FC: .4byte gUnknown_85DBBE4 +_0819B800: .4byte gUnknown_85DBBF2 +_0819B804: + str r4, [sp] + str r5, [sp, #4] + ldr r0, _0819B840 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #0x12 + bl sub_08199AFC +_0819B818: + ldr r0, _0819B844 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819B848 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #0 + movs r3, #0x22 + bl sub_08199AFC + movs r0, #3 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819B840: .4byte gUnknown_85DBBDD +_0819B844: .4byte gUnknown_85DBC7E +_0819B848: .4byte gUnknown_85DBBEB + thumb_func_end sub_0819B7A0 + + thumb_func_start sub_0819B84C +sub_0819B84C: @ 0x0819B84C + push {r4, r5, lr} + sub sp, #0xc + movs r0, #4 + bl sub_0800365C + movs r0, #4 + movs r1, #0 + bl sub_08003B18 + ldr r5, _0819B89C + str r5, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r0, _0819B8A0 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0819B8A4 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #0x12 + bl sub_08199AFC + movs r0, #4 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819B89C: .4byte gUnknown_85DBC7E +_0819B8A0: .4byte gUnknown_85DBC0A +_0819B8A4: .4byte gUnknown_85DBC0D + thumb_func_end sub_0819B84C + + thumb_func_start sub_0819B8A8 +sub_0819B8A8: @ 0x0819B8A8 + push {lr} + ldr r2, _0819B8C8 + ldr r1, _0819B8CC + ldr r0, _0819B8D0 + ldr r0, [r0] + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2] + bl _call_via_r0 + thumb_func_end sub_0819B8A8 + + thumb_func_start sub_0819B8C0 +sub_0819B8C0: @ 0x0819B8C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_0819B8C8: .4byte gUnknown_3006028 +_0819B8CC: .4byte gUnknown_85DBC24 +_0819B8D0: .4byte gUnknown_3001278 + thumb_func_end sub_0819B8C0 + + thumb_func_start sub_0819B8D4 +sub_0819B8D4: @ 0x0819B8D4 + push {r4, lr} + ldr r0, _0819B900 + ldr r0, [r0] + ldrb r2, [r0, #3] + movs r1, #0x6c + muls r1, r2, r1 + adds r0, r0, r1 + ldrb r1, [r0, #0x10] + ldrh r0, [r0, #0xc] + cmp r1, #0 + bne _0819B904 + bl sub_0819C31C + cmp r0, #0 + bne _0819B904 + bl sub_0819B76C + movs r0, #3 + bl sub_0819B5F8 + movs r0, #3 + b _0819B93A + .align 2, 0 +_0819B900: .4byte gUnknown_3001278 +_0819B904: + ldr r4, _0819B934 + ldr r1, [r4] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r0, r1, r2 + ldr r0, [r0] + adds r2, #8 + adds r1, r1, r2 + movs r2, #0 + bl sub_0819F2E4 + bl sub_0819A980 + bl sub_0819B708 + movs r0, #3 + bl sub_0819B5F8 + ldr r0, [r4] + ldrb r0, [r0, #5] + cmp r0, #3 + bhi _0819B938 + movs r0, #1 + b _0819B93A + .align 2, 0 +_0819B934: .4byte gUnknown_3001278 +_0819B938: + movs r0, #2 +_0819B93A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_0819B8D4 + + thumb_func_start sub_0819B940 +sub_0819B940: @ 0x0819B940 + push {lr} + bl sub_0819C250 + bl sub_0819A980 + bl sub_0819B708 + movs r0, #3 + bl sub_0819B5F8 + ldr r0, _0819B964 + ldr r0, [r0] + ldrb r0, [r0, #5] + cmp r0, #3 + bhi _0819B968 + movs r0, #1 + b _0819B96A + .align 2, 0 +_0819B964: .4byte gUnknown_3001278 +_0819B968: + movs r0, #2 +_0819B96A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0819B940 + + thumb_func_start sub_0819B970 +sub_0819B970: @ 0x0819B970 + movs r0, #0 + bx lr + thumb_func_end sub_0819B970 + + thumb_func_start sub_0819B974 +sub_0819B974: @ 0x0819B974 + push {lr} + ldr r0, _0819B998 + ldr r1, [r0] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r0, r1, r2 + ldr r0, [r0] + adds r2, #8 + adds r1, r1, r2 + movs r2, #0 + bl sub_0819F2E4 + movs r0, #3 + bl sub_0819B5F8 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_0819B998: .4byte gUnknown_3001278 + thumb_func_end sub_0819B974 + + thumb_func_start sub_0819B99C +sub_0819B99C: @ 0x0819B99C + push {r4, r5, lr} + sub sp, #0x18 + ldr r5, _0819BA4C + ldr r0, [r5] + ldrb r4, [r0, #3] + cmp r4, #5 + bhi _0819BA44 + movs r0, #5 + bl sub_0800365C + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + movs r0, #0x6c + muls r0, r4, r0 + ldr r1, [r5] + adds r0, r0, r1 + adds r0, #0x14 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0 + ldr r2, _0819BA50 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _0819BA0E + adds r3, r2, #0 + adds r2, r1, #0 +_0819B9EC: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + adds r0, r4, r2 + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bhi _0819BA0E + adds r0, r4, r2 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _0819B9EC +_0819BA0E: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + ldr r1, _0819BA54 + add r0, sp, #0xc + bl sub_080088D8 + movs r3, #5 + subs r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #5 + movs r1, #1 + add r2, sp, #0xc + bl sub_0800449C + movs r0, #5 + movs r1, #2 + bl sub_08003528 +_0819BA44: + add sp, #0x18 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819BA4C: .4byte gUnknown_3001278 +_0819BA50: .4byte gUnknown_854069C +_0819BA54: .4byte gUnknown_85C8C66 + thumb_func_end sub_0819B99C + + thumb_func_start sub_0819BA58 +sub_0819BA58: @ 0x0819BA58 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x10 + ldr r6, _0819BAFC + ldr r2, [r6] + ldrb r1, [r2, #3] + movs r0, #0x6c + adds r4, r1, #0 + muls r4, r0, r4 + adds r4, r4, r2 + adds r4, #0x14 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov r8, r0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0x58 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + ldr r0, _0819BB00 + str r0, [sp, #0xc] + adds r0, r5, #0 + mov r2, r8 + movs r3, #1 + bl sub_0818D504 + ldr r1, [r6] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r4, _0819BB04 + ldr r0, [r6] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x28 + strb r3, [r0] + ldr r0, [r6] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x29 + strb r3, [r0] + ldr r0, [r6] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + strb r3, [r0] + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819BAFC: .4byte gUnknown_3001278 +_0819BB00: .4byte 0x0000FFFF +_0819BB04: .4byte gUnknown_20205AC + thumb_func_end sub_0819BA58 + + thumb_func_start sub_0819BB08 +sub_0819BB08: @ 0x0819BB08 + ldr r1, _0819BB18 + ldr r1, [r1] + movs r2, #0xa8 + lsls r2, r2, #2 + adds r1, r1, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0819BB18: .4byte gUnknown_3001278 + thumb_func_end sub_0819BB08 + + thumb_func_start sub_0819BB1C +sub_0819BB1C: @ 0x0819BB1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + ldr r0, _0819BC00 + movs r1, #0x78 + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r6, _0819BC04 + ldr r1, [r6] + ldr r2, _0819BC08 + mov sl, r2 + add r1, sl + movs r7, #0 + strb r0, [r1] + ldr r0, [r6] + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0819BC0C + mov r8, r1 + add r0, r8 + movs r1, #2 + bl sub_08007F70 + ldr r2, [r6] + ldrb r1, [r2, #3] + movs r0, #0x6c + adds r4, r1, #0 + muls r4, r0, r4 + adds r4, r4, r2 + adds r4, #0x14 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov sb, r0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0x58 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + ldr r0, _0819BC10 + str r0, [sp, #0xc] + adds r0, r5, #0 + mov r2, sb + movs r3, #1 + bl sub_0818D504 + ldr r1, [r6] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r6] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r6] + add r0, sl + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819BC00: .4byte gUnknown_85DBE40 +_0819BC04: .4byte gUnknown_3001278 +_0819BC08: .4byte 0x00000299 +_0819BC0C: .4byte gUnknown_20205AC +_0819BC10: .4byte 0x0000FFFF + thumb_func_end sub_0819BB1C + + thumb_func_start sub_0819BC14 +sub_0819BC14: @ 0x0819BC14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + movs r7, #0 + ldr r0, _0819BCE4 + mov sb, r0 +_0819BC26: + movs r2, #0 + adds r1, r7, #1 + mov sl, r1 + lsls r0, r7, #2 + mov r8, r0 +_0819BC30: + mov r0, sb + ldr r1, [r0] + movs r0, #0x6c + adds r4, r2, #0 + muls r4, r0, r4 + adds r0, r1, r4 + ldrb r0, [r0, #0x10] + cmp r0, sl + bne _0819BCF0 + adds r4, r4, r1 + adds r4, #0x14 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r6, r0, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r0, r7, #3 + adds r0, r0, r7 + lsls r0, r0, #0x13 + movs r2, #0x80 + lsls r2, r2, #0xd + adds r0, r0, r2 + asrs r0, r0, #0x10 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + adds r0, r7, #0 + adds r0, #0xd + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, _0819BCE8 + str r0, [sp, #0xc] + adds r0, r5, #0 + adds r2, r6, #0 + movs r3, #1 + bl sub_0818D504 + mov r2, sb + ldr r1, [r2] + add r1, r8 + movs r2, #0xa5 + lsls r2, r2, #2 + adds r1, r1, r2 + strb r0, [r1] + mov r1, sb + ldr r0, [r1] + add r0, r8 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _0819BCEC + adds r0, r0, r2 + adds r0, #0x28 + movs r1, #0 + strb r1, [r0] + mov r2, sb + ldr r0, [r2] + add r0, r8 + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _0819BCEC + adds r0, r0, r2 + adds r0, #0x29 + movs r1, #0 + strb r1, [r0] + b _0819BCFA + .align 2, 0 +_0819BCE4: .4byte gUnknown_3001278 +_0819BCE8: .4byte 0x0000FFFF +_0819BCEC: .4byte gUnknown_20205AC +_0819BCF0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819BC30 +_0819BCFA: + mov r2, sl + lsls r0, r2, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bls _0819BC26 + ldr r0, _0819BD24 + ldr r0, [r0] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819BD24: .4byte gUnknown_3001278 + thumb_func_end sub_0819BC14 + + thumb_func_start sub_0819BD28 +sub_0819BD28: @ 0x0819BD28 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819BDC4 + ldr r3, _0819BDCC + ldr r6, _0819BDD0 + ldr r2, [r6] + ldr r0, _0819BDD4 + adds r5, r2, r0 + ldrb r0, [r5] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + adds r1, #0x3f + ldrb r0, [r1] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _0819BDC4 + ldr r1, _0819BDD8 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _0819BDC4 + adds r1, r4, #0 + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _0819BDD8 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, _0819BDDC + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819BDE0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r0, _0819BDE4 + str r0, [r4, #0x1c] +_0819BDC4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819BDCC: .4byte gUnknown_20205AC +_0819BDD0: .4byte gUnknown_3001278 +_0819BDD4: .4byte 0x00000295 +_0819BDD8: .4byte 0x0000029D +_0819BDDC: .4byte sub_0819BEB8 +_0819BDE0: .4byte gUnknown_3005B60 +_0819BDE4: .4byte sub_08007140 + thumb_func_end sub_0819BD28 + + thumb_func_start sub_0819BDE8 +sub_0819BDE8: @ 0x0819BDE8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819BEA2 + ldr r6, _0819BEA8 + ldr r4, _0819BEAC + ldr r2, [r4] + ldr r7, _0819BEB0 + adds r0, r2, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _0819BEA2 + ldr r1, _0819BEB4 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1a + cmp r0, #0 + bge _0819BEA2 + ldrb r0, [r5, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, [r4] + adds r0, r0, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, [r4] + ldr r1, _0819BEB4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldr r0, [r4] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r4] + adds r0, r0, r7 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r0, [r4] + ldr r1, _0819BEB4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_08006E00 +_0819BEA2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819BEA8: .4byte gUnknown_20205AC +_0819BEAC: .4byte gUnknown_3001278 +_0819BEB0: .4byte 0x00000295 +_0819BEB4: .4byte 0x0000029D + thumb_func_end sub_0819BDE8 + + thumb_func_start sub_0819BEB8 +sub_0819BEB8: @ 0x0819BEB8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _0819BEDC + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0819BF36 + cmp r0, #1 + bgt _0819BEE0 + cmp r0, #0 + beq _0819BEE6 + b _0819BFA2 + .align 2, 0 +_0819BEDC: .4byte gUnknown_3005B60 +_0819BEE0: + cmp r0, #2 + beq _0819BF58 + b _0819BFA2 +_0819BEE6: + movs r0, #0x10 + strh r0, [r4, #0xe] + movs r0, #0xe0 + strh r0, [r4, #0x38] + movs r0, #0x40 + strh r0, [r4, #0x12] + movs r0, #0x41 + strh r0, [r4, #0x18] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x38] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + b _0819BFAE +_0819BF36: + movs r0, #3 + bl sub_08001B48 + ldr r1, _0819BF50 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0819BF54 + movs r0, #0x52 + bl sub_08001144 + b _0819BFAE + .align 2, 0 +_0819BF50: .4byte 0x00001248 +_0819BF54: .4byte 0x0000040B +_0819BF58: + ldrh r0, [r4, #0x12] + subs r0, #4 + strh r0, [r4, #0x12] + ldrh r1, [r4, #0x18] + adds r1, #4 + strh r1, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + ble _0819BF74 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5f + ble _0819BF86 +_0819BF74: + movs r0, #0x20 + strh r0, [r4, #0x12] + movs r0, #0x60 + strh r0, [r4, #0x18] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 +_0819BF86: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _0819BFB4 + b _0819BFAE +_0819BFA2: + adds r0, r2, #0 + bl sub_080A8964 + bl sub_0819BC14 + b _0819BFB4 +_0819BFAE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0819BFB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819BEB8 + + thumb_func_start sub_0819BFBC +sub_0819BFBC: @ 0x0819BFBC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _0819C0D8 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0819BFDE + b _0819C0F8 +_0819BFDE: + cmp r0, #1 + bne _0819BFE4 + b _0819C148 +_0819BFE4: + movs r0, #3 + bl sub_08001B5C + ldr r4, _0819C0DC + ldr r0, _0819C0E0 + mov r8, r0 + ldr r0, [r0] + ldr r1, _0819C0E4 + mov ip, r1 + add r0, ip + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r2, [r1] + movs r3, #5 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r2 + strb r0, [r1] + mov r0, r8 + ldr r2, [r0] + mov r1, ip + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r6, r4, #0 + adds r6, #0x1c + adds r0, r0, r6 + ldr r1, _0819C0E8 + str r1, [r0] + ldr r0, _0819C0EC + mov sb, r0 + add r2, sb + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r3, #0 + ands r1, r2 + strb r1, [r0] + mov r1, r8 + ldr r2, [r1] + mov r1, sb + adds r0, r2, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, _0819C0F0 + mov sl, r1 + str r1, [r0] + ldr r5, _0819C0F4 + adds r2, r2, r5 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + mov r0, r8 + ldr r2, [r0] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sl + str r1, [r0] + add r2, ip + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007F70 + mov r1, r8 + ldr r0, [r1] + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007F70 + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007F70 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + adds r0, r7, #0 + bl sub_080A8964 + b _0819C18C + .align 2, 0 +_0819C0D8: .4byte gUnknown_3005B60 +_0819C0DC: .4byte gUnknown_20205AC +_0819C0E0: .4byte gUnknown_3001278 +_0819C0E4: .4byte 0x00000299 +_0819C0E8: .4byte sub_0819BDE8 +_0819C0EC: .4byte 0x00000295 +_0819C0F0: .4byte sub_08007140 +_0819C0F4: .4byte 0x0000029D +_0819C0F8: + movs r0, #0x10 + strh r0, [r4, #0xe] + movs r0, #0xe0 + strh r0, [r4, #0x38] + movs r0, #0x20 + strh r0, [r4, #0x12] + movs r0, #0x60 + strh r0, [r4, #0x18] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x38] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + b _0819C186 +_0819C148: + ldrh r0, [r4, #0x12] + adds r0, #4 + strh r0, [r4, #0x12] + ldrh r1, [r4, #0x18] + subs r1, #4 + strh r1, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + bgt _0819C164 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x41 + bgt _0819C16C +_0819C164: + movs r0, #0x40 + strh r0, [r4, #0x12] + movs r0, #0x41 + strh r0, [r4, #0x18] +_0819C16C: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bne _0819C18C +_0819C186: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0819C18C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819BFBC + + thumb_func_start sub_0819C19C +sub_0819C19C: @ 0x0819C19C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _0819C230 + adds r0, r4, #0 + movs r1, #0x78 + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r6, _0819C234 + ldr r1, [r6] + ldr r2, _0819C238 + mov r8, r2 + add r1, r8 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r6] + ldr r5, _0819C23C + adds r1, r1, r5 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0xc4 + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r6] + ldr r4, _0819C240 + adds r1, r1, r4 + strb r0, [r1] + ldr r3, _0819C244 + ldr r2, [r6] + add r8, r2 + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, #0x1c + adds r0, r0, r3 + ldr r1, _0819C248 + str r1, [r0] + adds r5, r2, r5 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r5, _0819C24C + str r5, [r0] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + str r5, [r0] + movs r0, #0xa8 + lsls r0, r0, #2 + adds r2, r2, r0 + movs r0, #1 + strb r0, [r2] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819C230: .4byte gUnknown_85DBE40 +_0819C234: .4byte gUnknown_3001278 +_0819C238: .4byte 0x00000299 +_0819C23C: .4byte 0x00000295 +_0819C240: .4byte 0x0000029D +_0819C244: .4byte gUnknown_20205AC +_0819C248: .4byte sub_0819BD28 +_0819C24C: .4byte sub_08007140 + thumb_func_end sub_0819C19C + + thumb_func_start sub_0819C250 +sub_0819C250: @ 0x0819C250 + push {r4, lr} + ldr r4, _0819C2AC + ldr r0, [r4] + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0818D54C + ldr r0, [r4] + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0818D54C + ldr r0, [r4] + movs r1, #0xa7 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0818D54C + ldr r0, _0819C2B0 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819C2B4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r0, [r4] + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819C2AC: .4byte gUnknown_3001278 +_0819C2B0: .4byte sub_0819BFBC +_0819C2B4: .4byte gUnknown_3005B60 + thumb_func_end sub_0819C250 + + thumb_func_start sub_0819C2B8 +sub_0819C2B8: @ 0x0819C2B8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + mov r8, r3 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, r8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x10 + orrs r4, r6 + movs r0, #0x40 + adds r1, r4, #0 + bl sub_08001144 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x10 + mov r0, r8 + orrs r5, r0 + movs r0, #0x44 + adds r1, r5, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_0819C2B8 + + thumb_func_start sub_0819C31C +sub_0819C31C: @ 0x0819C31C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + ldr r2, _0819C360 + ldr r1, [r2] + lsrs r0, r0, #0xc + adds r0, r0, r1 + ldrh r6, [r0] + ldr r0, _0819C364 + ldr r0, [r0] + ldrb r5, [r0, #5] + movs r3, #1 + cmp r3, r5 + bhs _0819C37C + adds r4, r0, #0 + movs r0, #0x6c + mov ip, r0 + adds r7, r2, #0 +_0819C33E: + movs r2, #0 +_0819C340: + mov r0, ip + muls r0, r2, r0 + adds r1, r4, r0 + ldrb r0, [r1, #0x10] + cmp r0, r3 + bne _0819C368 + ldrh r0, [r1, #0xc] + ldr r1, [r7] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0819C372 + movs r0, #0 + b _0819C37E + .align 2, 0 +_0819C360: .4byte gUnknown_203B958 +_0819C364: .4byte gUnknown_3001278 +_0819C368: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819C340 +_0819C372: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r5 + blo _0819C33E +_0819C37C: + movs r0, #1 +_0819C37E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_0819C31C + + thumb_func_start sub_0819C384 +sub_0819C384: @ 0x0819C384 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0819C3A8 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r0, #8 + ldrsh r2, [r5, r0] + cmp r2, #1 + beq _0819C3E0 + cmp r2, #1 + bgt _0819C3AC + cmp r2, #0 + beq _0819C3B2 + b _0819C4C0 + .align 2, 0 +_0819C3A8: .4byte gUnknown_3005B60 +_0819C3AC: + cmp r2, #2 + beq _0819C49C + b _0819C4C0 +_0819C3B2: + ldr r1, _0819C3D4 + ldr r0, [r1] + ldr r3, _0819C3D8 + adds r0, r0, r3 + strb r2, [r0] + ldr r0, [r1] + adds r3, #1 + adds r0, r0, r3 + strb r2, [r0] + ldr r0, [r1] + ldr r1, _0819C3DC + adds r0, r0, r1 + movs r1, #1 + strb r1, [r0] + strh r1, [r5, #8] + b _0819C4C0 + .align 2, 0 +_0819C3D4: .4byte gUnknown_3001278 +_0819C3D8: .4byte 0x000002A7 +_0819C3DC: .4byte 0x000002A6 +_0819C3E0: + ldr r0, _0819C400 + ldr r3, [r0] + ldr r2, _0819C404 + adds r1, r3, r2 + ldrb r1, [r1] + adds r7, r0, #0 + cmp r1, #0 + beq _0819C4C0 + ldr r1, _0819C408 + adds r0, r3, r1 + ldrb r4, [r0] + cmp r4, #0 + beq _0819C40C + movs r0, #2 + strh r0, [r5, #8] + b _0819C4C0 + .align 2, 0 +_0819C400: .4byte gUnknown_3001278 +_0819C404: .4byte 0x000002A2 +_0819C408: .4byte 0x000002A9 +_0819C40C: + ldr r2, _0819C43C + adds r1, r3, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r7] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #6 + bls _0819C44C + strb r4, [r1] + ldr r1, [r7] + subs r2, #1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0819C440 + movs r3, #0xaa + lsls r3, r3, #2 + adds r1, r1, r3 + ldrb r0, [r1] + subs r0, #1 + b _0819C44A + .align 2, 0 +_0819C43C: .4byte 0x000002A7 +_0819C440: + movs r0, #0xaa + lsls r0, r0, #2 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 +_0819C44A: + strb r0, [r1] +_0819C44C: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, [r7] + movs r4, #0xaa + lsls r4, r4, #2 + adds r1, r1, r4 + ldrb r1, [r1] + movs r2, #0 + bl sub_080A22E8 + ldr r2, [r7] + adds r4, r2, r4 + ldrb r0, [r4] + cmp r0, #5 + bls _0819C478 + ldr r3, _0819C474 + adds r1, r2, r3 + movs r0, #0 + b _0819C4BE + .align 2, 0 +_0819C474: .4byte 0x000002A6 +_0819C478: + cmp r0, #0 + bne _0819C4C0 + ldr r1, _0819C494 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #8] + ldr r0, _0819C498 + adds r1, r2, r0 + movs r0, #1 + b _0819C4BE + .align 2, 0 +_0819C494: .4byte gUnknown_3005B60 +_0819C498: .4byte 0x000002A6 +_0819C49C: + ldr r0, _0819C4B4 + ldr r0, [r0] + ldr r2, _0819C4B8 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xe + bls _0819C4BC + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strh r0, [r5, #8] + b _0819C4C0 + .align 2, 0 +_0819C4B4: .4byte gUnknown_3001278 +_0819C4B8: .4byte 0x000002A9 +_0819C4BC: + adds r0, #1 +_0819C4BE: + strb r0, [r1] +_0819C4C0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819C384 + + thumb_func_start sub_0819C4C8 +sub_0819C4C8: @ 0x0819C4C8 + push {lr} + bl sub_080066D8 + bl sub_08006724 + bl sub_08004630 + bl sub_080A12E4 + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819C4C8 + + thumb_func_start sub_0819C4E4 +sub_0819C4E4: @ 0x0819C4E4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819C4E4 + + thumb_func_start sub_0819C4F8 +sub_0819C4F8: @ 0x0819C4F8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #4 + ldr r4, _0819C5D8 + ldr r5, _0819C5DC + ldr r1, [r5] + ldrb r0, [r1, #0x12] + movs r6, #0x64 + muls r0, r6, r0 + adds r0, r0, r4 + ldr r2, _0819C5E0 + mov sb, r2 + ldrb r1, [r1, #0x13] + muls r1, r6, r1 + add r1, sb + movs r2, #0x64 + bl memcpy + movs r1, #0 + mov r0, sp + strb r1, [r0] + ldr r0, [r5] + ldrb r0, [r0, #0x12] + muls r0, r6, r0 + adds r0, r0, r4 + movs r1, #0x20 + mov r2, sp + bl sub_0806A774 + ldr r3, _0819C5E4 + mov r8, r3 + ldr r3, [r3] + ldr r4, [r5] + ldrb r0, [r4, #0x12] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r3, r2 + ldrb r1, [r4, #0x13] + adds r1, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + movs r1, #0xe7 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrh r0, [r0] + adds r2, r2, r1 + strh r0, [r2] + ldrb r0, [r4, #0x12] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r3, r2 + ldrb r1, [r4, #0x13] + adds r1, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + ldr r0, _0819C5E8 + adds r3, r3, r0 + ldrb r1, [r3] + adds r2, r2, r0 + strb r1, [r2] + ldr r0, [r5] + ldrb r0, [r0, #0x13] + muls r0, r6, r0 + add r0, sb + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov r1, r8 + ldr r2, [r1] + ldr r4, [r5] + ldrb r3, [r4, #0x12] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r3, _0819C5EC + adds r2, r2, r3 + adds r2, r2, r1 + str r0, [r2] + ldrb r0, [r4, #0x13] + muls r0, r6, r0 + add r0, sb + movs r1, #0x2e + movs r2, #0 + bl sub_0806A1B4 + mov r1, r8 + ldr r2, [r1] + ldr r1, [r5] + ldrb r3, [r1, #0x12] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r2, r2, r1 + ldr r3, _0819C5F0 + adds r2, r2, r3 + strb r0, [r2] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819C5D8: .4byte gUnknown_2024190 +_0819C5DC: .4byte gUnknown_3001280 +_0819C5E0: .4byte gUnknown_20243E8 +_0819C5E4: .4byte gUnknown_3005AF0 +_0819C5E8: .4byte 0x00000E78 +_0819C5EC: .4byte 0x00000E74 +_0819C5F0: .4byte 0x00000E79 + thumb_func_end sub_0819C4F8 + + thumb_func_start sub_0819C5F4 +sub_0819C5F4: @ 0x0819C5F4 + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _0819C618 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r6, r0, r1 + movs r1, #8 + ldrsh r0, [r6, r1] + cmp r0, #7 + beq _0819C638 + cmp r0, #7 + bgt _0819C61C + cmp r0, #6 + beq _0819C622 + b _0819C6D8 + .align 2, 0 +_0819C618: .4byte gUnknown_3005B60 +_0819C61C: + cmp r0, #8 + beq _0819C6AC + b _0819C6D8 +_0819C622: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + movs r0, #7 + strh r0, [r6, #8] + b _0819C6D8 +_0819C638: + ldr r0, _0819C694 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0819C6D8 + ldr r4, _0819C698 + ldr r0, [r4] + adds r0, #0x21 + ldrb r0, [r0] + bl sub_080A8964 + ldr r1, [r4] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + bl sub_0819F330 + bl sub_0819E240 + ldr r4, _0819C69C + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C6A0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C6A4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C6A8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + bl sub_080034D4 + movs r0, #8 + strh r0, [r6, #8] + b _0819C6D8 + .align 2, 0 +_0819C694: .4byte gUnknown_2037C74 +_0819C698: .4byte gUnknown_3001280 +_0819C69C: .4byte gUnknown_203CB0C +_0819C6A0: .4byte gUnknown_203CB10 +_0819C6A4: .4byte gUnknown_203CB14 +_0819C6A8: .4byte gUnknown_203CB18 +_0819C6AC: + adds r0, r2, #0 + bl sub_080A8964 + ldr r2, _0819C6E0 + ldr r1, [r2] + movs r0, #1 + strb r0, [r1, #0x15] + ldr r2, [r2] + ldr r0, _0819C6E4 + movs r1, #0xf4 + lsls r1, r1, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x24] + ldr r1, _0819C6E8 + ldrb r2, [r2, #3] + ldr r0, _0819C6EC + str r0, [sp] + movs r0, #0 + movs r3, #2 + bl sub_081BF280 +_0819C6D8: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819C6E0: .4byte gUnknown_3001280 +_0819C6E4: .4byte gUnknown_20373B4 +_0819C6E8: .4byte gUnknown_2024190 +_0819C6EC: .4byte sub_0819D904 + thumb_func_end sub_0819C5F4 + + thumb_func_start sub_0819C6F0 +sub_0819C6F0: @ 0x0819C6F0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _0819C724 + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + beq _0819C7E6 + ldr r1, _0819C728 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0819C760 + cmp r1, #1 + bgt _0819C72C + cmp r1, #0 + beq _0819C736 + b _0819C7E6 + .align 2, 0 +_0819C724: .4byte gUnknown_3001280 +_0819C728: .4byte gUnknown_3005B60 +_0819C72C: + cmp r1, #2 + beq _0819C774 + cmp r1, #3 + beq _0819C78C + b _0819C7E6 +_0819C736: + adds r0, r2, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #1 + bne _0819C750 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldr r0, _0819C74C + strh r1, [r0] + b _0819C7E6 + .align 2, 0 +_0819C74C: .4byte gUnknown_2037290 +_0819C750: + movs r0, #2 + strh r0, [r4, #8] + ldr r1, _0819C75C + movs r0, #1 + strh r0, [r1] + b _0819C7E6 + .align 2, 0 +_0819C75C: .4byte gUnknown_2037290 +_0819C760: + adds r0, r2, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #1 + bne _0819C784 + ldrb r0, [r2, #3] + strb r0, [r2, #0x13] + bl sub_0819C4F8 + b _0819C784 +_0819C774: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0819C784: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0819C7E6 +_0819C78C: + bl sub_080A12E4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0819C7E6 + ldr r0, [r7] + adds r0, #0x21 + ldrb r0, [r0] + bl sub_080A8964 + bl sub_0819E240 + ldr r4, _0819C7F0 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C7F4 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C7F8 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _0819C7FC + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r0, [r7] + bl sub_08000BF0 + str r5, [r7] + bl sub_080034D4 + ldr r0, _0819C800 + bl sub_08000540 + adds r0, r6, #0 + bl sub_080A8964 +_0819C7E6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819C7F0: .4byte gUnknown_203CB0C +_0819C7F4: .4byte gUnknown_203CB10 +_0819C7F8: .4byte gUnknown_203CB14 +_0819C7FC: .4byte gUnknown_203CB18 +_0819C800: .4byte sub_08085B18 + thumb_func_end sub_0819C6F0 + + thumb_func_start sub_0819C804 +sub_0819C804: @ 0x0819C804 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r7, _0819C830 + ldr r0, [r7] + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + beq _0819C8BE + ldr r1, _0819C834 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #4 + beq _0819C838 + cmp r0, #5 + beq _0819C842 + b _0819C8BE + .align 2, 0 +_0819C830: .4byte gUnknown_3001280 +_0819C834: .4byte gUnknown_3005B60 +_0819C838: + bl sub_0819E6E8 + movs r0, #5 + strh r0, [r4, #8] + b _0819C8BE +_0819C842: + ldr r2, _0819C864 + ldrh r1, [r2, #0x2e] + movs r6, #1 + adds r5, r6, #0 + ands r5, r1 + cmp r5, #0 + beq _0819C86E + movs r0, #5 + bl sub_080A306C + ldr r0, [r7] + ldrb r0, [r0, #0x16] + cmp r0, #0 + bne _0819C868 + strh r6, [r4, #0xa] + b _0819C884 + .align 2, 0 +_0819C864: .4byte gUnknown_3002360 +_0819C868: + movs r0, #0 + strh r0, [r4, #0xa] + b _0819C87E +_0819C86E: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819C890 + movs r0, #5 + bl sub_080A306C + strh r5, [r4, #0xa] +_0819C87E: + movs r0, #4 + bl sub_0819E76C +_0819C884: + ldrh r0, [r4, #0x14] + ldrh r1, [r4, #0x16] + lsls r0, r0, #0x10 + orrs r0, r1 + str r0, [r4] + b _0819C8BE +_0819C890: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0819C8AA + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819E460 + b _0819C8BE +_0819C8AA: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819C8BE + movs r0, #5 + bl sub_080A306C + movs r0, #1 + bl sub_0819E460 +_0819C8BE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0819C804 + + thumb_func_start sub_0819C8C4 +sub_0819C8C4: @ 0x0819C8C4 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819C8E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _0819C8EC + movs r0, #0 + strh r0, [r2, #8] + ldr r0, _0819C8E8 + b _0819C8FE + .align 2, 0 +_0819C8E4: .4byte gUnknown_3005B60 +_0819C8E8: .4byte sub_0819C6F0 +_0819C8EC: + movs r0, #0 + strh r0, [r2, #8] + ldr r1, _0819C904 + lsrs r0, r1, #0x10 + strh r0, [r2, #0x14] + strh r1, [r2, #0x16] + movs r0, #1 + strh r0, [r2, #0x12] + ldr r0, _0819C908 +_0819C8FE: + str r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0819C904: .4byte sub_0819CB28 +_0819C908: .4byte sub_0819D458 + thumb_func_end sub_0819C8C4 + + thumb_func_start sub_0819C90C +sub_0819C90C: @ 0x0819C90C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819C948 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _0819C942 + ldr r0, _0819C94C + bl sub_0819E93C + ldr r0, _0819C950 + ldr r0, [r0] + adds r0, #0x20 + strb r5, [r0] + movs r0, #4 + strh r0, [r4, #8] + ldr r1, _0819C954 + lsrs r0, r1, #0x10 + strh r0, [r4, #0x14] + strh r1, [r4, #0x16] + ldr r0, _0819C958 + str r0, [r4] +_0819C942: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819C948: .4byte gUnknown_3005B60 +_0819C94C: .4byte gUnknown_85DC0FB +_0819C950: .4byte gUnknown_3001280 +_0819C954: .4byte sub_0819C8C4 +_0819C958: .4byte sub_0819C804 + thumb_func_end sub_0819C90C + + thumb_func_start sub_0819C95C +sub_0819C95C: @ 0x0819C95C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0819C98C + ldr r1, [r0] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + movs r2, #1 + bl sub_0819F2E4 + ldr r1, _0819C990 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r2, r0, r1 + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _0819C998 + movs r0, #0 + strh r0, [r2, #8] + ldr r0, _0819C994 + b _0819C9AA + .align 2, 0 +_0819C98C: .4byte gUnknown_3001280 +_0819C990: .4byte gUnknown_3005B60 +_0819C994: .4byte sub_0819C6F0 +_0819C998: + movs r0, #0 + strh r0, [r2, #8] + ldr r1, _0819C9B4 + lsrs r0, r1, #0x10 + strh r0, [r2, #0x14] + strh r1, [r2, #0x16] + movs r0, #1 + strh r0, [r2, #0x12] + ldr r0, _0819C9B8 +_0819C9AA: + str r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819C9B4: .4byte sub_0819CB28 +_0819C9B8: .4byte sub_0819D458 + thumb_func_end sub_0819C95C + + thumb_func_start sub_0819C9BC +sub_0819C9BC: @ 0x0819C9BC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819CA08 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r5, r1, r2 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0819CA02 + ldr r4, _0819CA0C + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0x2d + adds r1, #0x30 + movs r2, #1 + bl sub_0819F1A0 + ldr r0, _0819CA10 + bl sub_0819E93C + ldr r0, [r4] + adds r0, #0x20 + movs r1, #1 + strb r1, [r0] + movs r0, #4 + strh r0, [r5, #8] + ldr r1, _0819CA14 + lsrs r0, r1, #0x10 + strh r0, [r5, #0x14] + strh r1, [r5, #0x16] + ldr r0, _0819CA18 + str r0, [r5] +_0819CA02: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819CA08: .4byte gUnknown_3005B60 +_0819CA0C: .4byte gUnknown_3001280 +_0819CA10: .4byte gUnknown_85DC12B +_0819CA14: .4byte sub_0819C95C +_0819CA18: .4byte sub_0819C804 + thumb_func_end sub_0819C9BC + + thumb_func_start sub_0819CA1C +sub_0819CA1C: @ 0x0819CA1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0819CA44 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r5, r0, r1 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #3 + beq _0819CA8C + cmp r0, #3 + bgt _0819CA48 + cmp r0, #2 + beq _0819CA4E + b _0819CB1E + .align 2, 0 +_0819CA44: .4byte gUnknown_3005B60 +_0819CA48: + cmp r0, #9 + beq _0819CA70 + b _0819CB1E +_0819CA4E: + ldr r0, _0819CA6C + ldr r1, [r0] + ldrb r0, [r1, #0x15] + cmp r0, #0 + bne _0819CA64 + adds r0, r1, #0 + adds r0, #0x2d + adds r1, #0x30 + movs r2, #1 + bl sub_0819F1A0 +_0819CA64: + movs r0, #9 + strh r0, [r5, #8] + b _0819CB1E + .align 2, 0 +_0819CA6C: .4byte gUnknown_3001280 +_0819CA70: + ldr r0, _0819CA88 + ldr r0, [r0] + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + beq _0819CB1E + bl sub_0819E64C + movs r0, #3 + strh r0, [r5, #8] + b _0819CB1E + .align 2, 0 +_0819CA88: .4byte gUnknown_3001280 +_0819CA8C: + ldr r7, _0819CAB8 + ldr r0, [r7] + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + beq _0819CB1E + ldr r2, _0819CABC + ldrh r1, [r2, #0x2e] + movs r0, #1 + mov r8, r0 + mov r4, r8 + ands r4, r1 + cmp r4, #0 + beq _0819CAC0 + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_0819EF8C + b _0819CB1E + .align 2, 0 +_0819CAB8: .4byte gUnknown_3001280 +_0819CABC: .4byte gUnknown_3002360 +_0819CAC0: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819CAFC + movs r0, #5 + bl sub_080A306C + ldr r1, [r7] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + movs r2, #1 + bl sub_0819F2E4 + movs r0, #3 + bl sub_0819E76C + strh r4, [r5, #8] + ldr r1, _0819CAF4 + lsrs r0, r1, #0x10 + strh r0, [r5, #0x14] + strh r1, [r5, #0x16] + mov r1, r8 + strh r1, [r5, #0x12] + ldr r0, _0819CAF8 + str r0, [r5] + b _0819CB1E + .align 2, 0 +_0819CAF4: .4byte sub_0819CB28 +_0819CAF8: .4byte sub_0819D458 +_0819CAFC: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0819CB10 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819E4C8 + b _0819CB1E +_0819CB10: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819CB1E + movs r0, #1 + bl sub_0819E4C8 +_0819CB1E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0819CA1C + + thumb_func_start sub_0819CB28 +sub_0819CB28: @ 0x0819CB28 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0819CB48 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0819CB4C + cmp r0, #1 + beq _0819CB70 + b _0819CC34 + .align 2, 0 +_0819CB48: .4byte gUnknown_3005B60 +_0819CB4C: + ldr r0, _0819CB68 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0819CC34 + ldr r0, _0819CB6C + ldr r0, [r0] + adds r0, #0x22 + movs r1, #1 + strb r1, [r0] + strh r1, [r4, #8] + b _0819CC34 + .align 2, 0 +_0819CB68: .4byte gUnknown_2037C74 +_0819CB6C: .4byte gUnknown_3001280 +_0819CB70: + ldr r2, _0819CB9C + ldrh r1, [r2, #0x2e] + adds r5, r1, #0 + ands r5, r0 + cmp r5, #0 + beq _0819CBA4 + movs r0, #5 + bl sub_080A306C + ldr r0, _0819CBA0 + ldr r0, [r0] + adds r0, #0x22 + movs r1, #0 + strb r1, [r0] + bl sub_0819EBF0 + bl sub_0819E7C8 + adds r0, r6, #0 + bl sub_0819F070 + b _0819CC34 + .align 2, 0 +_0819CB9C: .4byte gUnknown_3002360 +_0819CBA0: .4byte gUnknown_3001280 +_0819CBA4: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819CBE0 + movs r0, #5 + bl sub_080A306C + ldr r0, _0819CBD4 + ldr r0, [r0] + adds r0, #0x22 + strb r5, [r0] + bl sub_0819EBF0 + bl sub_0819E7C8 + ldr r1, _0819CBD8 + lsrs r0, r1, #0x10 + strh r0, [r4, #0x14] + strh r1, [r4, #0x16] + strh r5, [r4, #8] + strh r5, [r4, #0x12] + ldr r0, _0819CBDC + str r0, [r4] + b _0819CC34 + .align 2, 0 +_0819CBD4: .4byte gUnknown_3001280 +_0819CBD8: .4byte sub_0819C90C +_0819CBDC: .4byte sub_0819D270 +_0819CBE0: + ldrh r1, [r2, #0x30] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819CBF4 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819E39C + b _0819CC12 +_0819CBF4: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0819CC04 + movs r0, #1 + bl sub_0819E39C + b _0819CC12 +_0819CC04: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0819CC1C + movs r0, #1 + bl sub_0819E3F0 +_0819CC12: + bl sub_0819EE50 + bl sub_0819E898 + b _0819CC34 +_0819CC1C: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0819CC34 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0819E3F0 + bl sub_0819EE50 + bl sub_0819E898 +_0819CC34: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819CB28 + + thumb_func_start sub_0819CC3C +sub_0819CC3C: @ 0x0819CC3C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0819CC60 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r0, #8 + ldrsh r2, [r4, r0] + cmp r2, #1 + beq _0819CC88 + cmp r2, #1 + bgt _0819CC64 + cmp r2, #0 + beq _0819CC6A + b _0819CD44 + .align 2, 0 +_0819CC60: .4byte gUnknown_3005B60 +_0819CC64: + cmp r2, #2 + beq _0819CD24 + b _0819CD44 +_0819CC6A: + ldr r1, _0819CC84 + ldr r0, [r1] + adds r0, #0x27 + strb r2, [r0] + ldr r0, [r1] + adds r0, #0x28 + strb r2, [r0] + ldr r0, [r1] + adds r0, #0x26 + movs r1, #1 + strb r1, [r0] + strh r1, [r4, #8] + b _0819CD44 + .align 2, 0 +_0819CC84: .4byte gUnknown_3001280 +_0819CC88: + ldr r1, _0819CCA8 + ldr r2, [r1] + adds r0, r2, #0 + adds r0, #0x22 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #0 + beq _0819CD44 + adds r0, r2, #0 + adds r0, #0x29 + ldrb r3, [r0] + cmp r3, #0 + beq _0819CCAC + movs r0, #2 + strh r0, [r4, #8] + b _0819CD44 + .align 2, 0 +_0819CCA8: .4byte gUnknown_3001280 +_0819CCAC: + adds r1, r2, #0 + adds r1, #0x27 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r6] + adds r1, r0, #0 + adds r1, #0x27 + ldrb r0, [r1] + cmp r0, #6 + bls _0819CCE0 + strb r3, [r1] + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _0819CCD8 + adds r1, #0x28 + ldrb r0, [r1] + subs r0, #1 + b _0819CCDE +_0819CCD8: + adds r1, #0x28 + ldrb r0, [r1] + adds r0, #1 +_0819CCDE: + strb r0, [r1] +_0819CCE0: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, [r6] + adds r1, #0x28 + ldrb r1, [r1] + movs r2, #0 + bl sub_080A22E8 + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x28 + ldrb r0, [r0] + cmp r0, #5 + bls _0819CD04 + adds r1, r2, #0 + adds r1, #0x26 + movs r0, #0 + b _0819CD42 +_0819CD04: + cmp r0, #0 + bne _0819CD44 + ldr r1, _0819CD20 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #2 + strh r1, [r0, #8] + adds r1, r2, #0 + adds r1, #0x26 + movs r0, #1 + b _0819CD42 + .align 2, 0 +_0819CD20: .4byte gUnknown_3005B60 +_0819CD24: + ldr r0, _0819CD3C + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x29 + ldrb r0, [r1] + cmp r0, #0xe + bls _0819CD40 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strh r0, [r4, #8] + b _0819CD44 + .align 2, 0 +_0819CD3C: .4byte gUnknown_3001280 +_0819CD40: + adds r0, #1 +_0819CD42: + strb r0, [r1] +_0819CD44: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819CC3C + + thumb_func_start sub_0819CD4C +sub_0819CD4C: @ 0x0819CD4C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819CD70 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 + movs r0, #8 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _0819CD8C + cmp r1, #1 + bgt _0819CD74 + cmp r1, #0 + beq _0819CD7A + b _0819CE00 + .align 2, 0 +_0819CD70: .4byte gUnknown_3005B60 +_0819CD74: + cmp r1, #2 + beq _0819CDA4 + b _0819CE00 +_0819CD7A: + ldr r0, _0819CD88 + ldr r0, [r0] + adds r0, #0x27 + strb r1, [r0] + strh r1, [r4, #0x10] + b _0819CD96 + .align 2, 0 +_0819CD88: .4byte gUnknown_3001280 +_0819CD8C: + ldr r0, _0819CDA0 + movs r1, #0xe0 + movs r2, #0xa + bl sub_080A1200 +_0819CD96: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0819CE00 + .align 2, 0 +_0819CDA0: .4byte gUnknown_2037594 +_0819CDA4: + ldr r2, _0819CE08 + ldr r0, [r2] + adds r0, #0x28 + ldrb r0, [r0] + cmp r0, #0xf + bls _0819CDBA + movs r0, #1 + strh r0, [r4, #0x10] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0819CDBA: + ldr r1, [r2] + adds r1, #0x27 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + adds r1, r0, #0 + adds r1, #0x27 + ldrb r0, [r1] + cmp r0, #3 + bls _0819CDF0 + movs r0, #0 + strb r0, [r1] + ldr r1, _0819CE0C + ldr r0, _0819CE10 + movs r3, #0xe4 + lsls r3, r3, #1 + adds r0, r0, r3 + ldrh r0, [r0] + adds r3, #0x20 + adds r1, r1, r3 + strh r0, [r1] + ldr r1, [r2] + adds r1, #0x28 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0819CDF0: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, [r2] + adds r1, #0x28 + ldrb r1, [r1] + movs r2, #0 + bl sub_080A22E8 +_0819CE00: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819CE08: .4byte gUnknown_3001280 +_0819CE0C: .4byte gUnknown_20373B4 +_0819CE10: .4byte gUnknown_20377B4 + thumb_func_end sub_0819CD4C + + thumb_func_start sub_0819CE14 +sub_0819CE14: @ 0x0819CE14 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r1, _0819CE40 + lsls r0, r0, #2 + ldr r2, [sp] + adds r0, r0, r2 + lsls r0, r0, #3 + adds r4, r0, r1 + movs r2, #8 + ldrsh r3, [r4, r2] + cmp r3, #0 + beq _0819CE44 + cmp r3, #1 + beq _0819CE50 + b _0819CFF8 + .align 2, 0 +_0819CE40: .4byte gUnknown_3005B60 +_0819CE44: + strh r3, [r4, #0xa] + strh r3, [r4, #0xc] + strh r3, [r4, #0xe] + movs r0, #1 + strh r0, [r4, #8] + b _0819CFF8 +_0819CE50: + movs r3, #0 + str r3, [sp, #4] + movs r1, #2 + str r0, [sp, #8] + ldr r0, _0819CEB4 + str r0, [sp, #0xc] +_0819CE5C: + lsls r0, r1, #0x18 + asrs r4, r0, #0x18 + mov sb, r0 + cmp r4, #2 + beq _0819CEDA + ldr r2, _0819CEB8 + ldr r3, _0819CEBC + ldr r0, [r3] + adds r0, #5 + mov r8, r0 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r6, r0, r2 + ldrh r1, [r6, #0x20] + mov ip, r1 + mov r7, ip + ldr r1, [sp, #4] + subs r0, r1, r7 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov sl, r2 + cmp r5, #0x10 + beq _0819CEA6 + adds r0, r4, #2 + lsls r0, r0, #1 + ldr r2, [sp, #8] + adds r0, r0, r2 + ldr r1, _0819CEB4 + adds r1, #8 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #1 + bne _0819CEC0 +_0819CEA6: + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + mov r0, ip + adds r0, #0xa + strh r0, [r6, #0x20] + b _0819CEF8 + .align 2, 0 +_0819CEB4: .4byte gUnknown_3005B60 +_0819CEB8: .4byte gUnknown_20205AC +_0819CEBC: .4byte gUnknown_3001280 +_0819CEC0: + cmp r5, #0x10 + bls _0819CEF8 + adds r0, r4, #1 + add r0, r8 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + ldrh r0, [r0, #0x20] + subs r0, #0x30 + strh r0, [r6, #0x20] + b _0819CEF8 +_0819CEDA: + ldr r3, _0819CF3C + ldr r4, _0819CF40 + ldr r0, [r4] + ldrb r1, [r0, #7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r2, [r0, #0x20] + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + adds r2, #0xa + strh r2, [r0, #0x20] + mov sl, r3 +_0819CEF8: + mov r0, sb + asrs r2, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #1 + ldr r1, [sp, #8] + adds r0, r0, r1 + ldr r1, _0819CF44 + adds r1, #8 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #1 + bne _0819CF52 + ldr r1, _0819CF40 + ldr r0, [r1] + adds r0, #5 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r3, sl + adds r1, r0, r3 + movs r0, #0x20 + ldrsh r3, [r1, r0] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #4 + adds r0, #0x48 + cmp r3, r0 + ble _0819CF48 + strh r0, [r1, #0x20] + movs r7, #1 + b _0819CF54 + .align 2, 0 +_0819CF3C: .4byte gUnknown_20205AC +_0819CF40: .4byte gUnknown_3001280 +_0819CF44: .4byte gUnknown_3005B60 +_0819CF48: + movs r7, #0 + cmp r3, r0 + bne _0819CF54 + movs r7, #1 + b _0819CF54 +_0819CF52: + movs r7, #0 +_0819CF54: + mov r6, sl + ldr r5, _0819CFA0 + ldr r2, [r5] + mov r1, sb + asrs r4, r1, #0x18 + adds r0, r2, #5 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r6 + movs r3, #0x20 + ldrsh r0, [r1, r3] + subs r0, #0x10 + cmp r0, #0xf0 + ble _0819CFE0 + ldrh r0, [r1, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, _0819CFA4 + strh r0, [r1, #0x20] + ldrb r0, [r2, #0x14] + cmp r0, #1 + bne _0819CFA8 + movs r0, #0x65 + bl sub_0800851C + ldr r1, [r5] + adds r1, #5 + adds r1, r1, r4 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r6 + b _0819CFC0 + .align 2, 0 +_0819CFA0: .4byte gUnknown_3001280 +_0819CFA4: .4byte 0x0000FFF0 +_0819CFA8: + movs r0, #0x64 + bl sub_0800851C + ldr r2, _0819D008 + ldr r1, [r2] + adds r1, #5 + adds r1, r1, r4 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + add r2, sl +_0819CFC0: + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + mov r3, sb + asrs r0, r3, #0x17 + adds r0, #2 + ldr r1, [sp, #8] + adds r0, r0, r1 + ldr r2, [sp, #0xc] + adds r2, #8 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0] +_0819CFE0: + movs r0, #0xff + lsls r0, r0, #0x18 + add r0, sb + lsrs r1, r0, #0x18 + cmp r0, #0 + blt _0819CFEE + b _0819CE5C +_0819CFEE: + cmp r7, #1 + bne _0819CFF8 + ldr r0, [sp] + bl sub_080A8964 +_0819CFF8: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819D008: .4byte gUnknown_3001280 + thumb_func_end sub_0819CE14 + + thumb_func_start sub_0819D00C +sub_0819D00C: @ 0x0819D00C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r0, #0 + mov r8, r0 + ldr r1, _0819D04C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrb r4, [r2, #0xe] + movs r0, #0xc + ldrsh r5, [r2, r0] + mov sl, r1 + cmp r5, #1 + bne _0819D03A + lsls r0, r4, #0x18 + rsbs r0, r0, #0 + lsrs r4, r0, #0x18 +_0819D03A: + movs r1, #8 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _0819D050 + cmp r0, #1 + bne _0819D048 + b _0819D168 +_0819D048: + b _0819D258 + .align 2, 0 +_0819D04C: .4byte gUnknown_3005B60 +_0819D050: + ldr r3, _0819D07C + ldr r2, _0819D080 + ldr r0, [r2] + ldrb r1, [r0, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r0, [r0, #0x20] + cmp r5, #0 + bne _0819D084 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r4, #0x18 + asrs r1, r2, #0x18 + adds r0, r0, r1 + movs r1, #1 + cmp r0, #0xef + ble _0819D09A + movs r1, #0 + movs r0, #0xf0 + b _0819D098 + .align 2, 0 +_0819D07C: .4byte gUnknown_20205AC +_0819D080: .4byte gUnknown_3001280 +_0819D084: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r4, #0x18 + asrs r1, r2, #0x18 + adds r0, r0, r1 + movs r1, #1 + cmp r0, #0xa0 + bgt _0819D09A + movs r1, #0 + movs r0, #0xa0 +_0819D098: + mov r8, r0 +_0819D09A: + cmp r1, #1 + bne _0819D0E4 + movs r3, #0 + ldr r7, _0819D0DC + ldr r6, _0819D0E0 + asrs r5, r2, #0x18 +_0819D0A6: + movs r4, #0 + adds r2, r3, #1 +_0819D0AA: + ldr r1, [r6] + lsls r0, r4, #1 + adds r0, r0, r4 + adds r0, r3, r0 + adds r1, #8 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, r1, r5 + strh r1, [r0, #0x20] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0819D0AA + lsls r0, r2, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _0819D0A6 + b _0819D258 + .align 2, 0 +_0819D0DC: .4byte gUnknown_20205AC +_0819D0E0: .4byte gUnknown_3001280 +_0819D0E4: + movs r4, #0 + lsls r1, r7, #2 + mov ip, r1 + mov r6, r8 + adds r6, #0x10 + movs r0, #0x30 + add r0, r8 + mov sb, r0 + ldr r5, _0819D160 +_0819D0F6: + ldr r1, _0819D164 + ldr r2, [r1] + lsls r3, r4, #1 + adds r3, r3, r4 + adds r0, r2, #0 + adds r0, #8 + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x20] + adds r0, r2, #0 + adds r0, #9 + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x20] + adds r2, #0xa + adds r2, r2, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, sb + strh r1, [r0, #0x20] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0819D0F6 + mov r1, ip + adds r0, r1, r7 + lsls r0, r0, #3 + add r0, sl + ldrb r1, [r0, #0xa] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, sl + movs r1, #1 + strh r1, [r0, #0xe] + adds r0, r7, #0 + bl sub_080A8964 + b _0819D258 + .align 2, 0 +_0819D160: .4byte gUnknown_20205AC +_0819D164: .4byte gUnknown_3001280 +_0819D168: + ldr r2, _0819D194 + ldr r0, _0819D198 + ldr r0, [r0] + ldrb r1, [r0, #0xe] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x20] + cmp r5, #0 + bne _0819D19C + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r4, #0x18 + asrs r1, r2, #0x18 + adds r0, r0, r1 + movs r1, #1 + cmp r0, #0xef + ble _0819D1B2 + movs r1, #0 + movs r0, #0xf0 + b _0819D1B0 + .align 2, 0 +_0819D194: .4byte gUnknown_20205AC +_0819D198: .4byte gUnknown_3001280 +_0819D19C: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r2, r4, #0x18 + asrs r1, r2, #0x18 + adds r0, r0, r1 + movs r1, #1 + cmp r0, #0xc0 + bgt _0819D1B2 + movs r1, #0 + movs r0, #0xc0 +_0819D1B0: + mov r8, r0 +_0819D1B2: + cmp r1, #1 + bne _0819D1F8 + movs r3, #0 + ldr r7, _0819D1F0 + ldr r6, _0819D1F4 + asrs r5, r2, #0x18 +_0819D1BE: + movs r4, #0 + adds r2, r3, #1 +_0819D1C2: + ldr r0, [r6] + lsls r1, r4, #1 + adds r1, r3, r1 + adds r0, #0xe + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, r1, r5 + strh r1, [r0, #0x20] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0819D1C2 + lsls r0, r2, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _0819D1BE + b _0819D258 + .align 2, 0 +_0819D1F0: .4byte gUnknown_20205AC +_0819D1F4: .4byte gUnknown_3001280 +_0819D1F8: + movs r4, #0 + lsls r1, r7, #2 + mov ip, r1 + mov r6, r8 + adds r6, #0x10 + ldr r5, _0819D268 + ldr r0, _0819D26C + mov sb, r0 +_0819D208: + mov r1, sb + ldr r2, [r1] + lsls r3, r4, #1 + adds r0, r2, #0 + adds r0, #0xe + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x20] + adds r2, #0xf + adds r2, r2, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x20] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0819D208 + mov r1, ip + adds r0, r1, r7 + lsls r0, r0, #3 + add r0, sl + ldrb r1, [r0, #0xa] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + add r0, sl + movs r1, #1 + strh r1, [r0, #0x10] + adds r0, r7, #0 + bl sub_080A8964 +_0819D258: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819D268: .4byte gUnknown_20205AC +_0819D26C: .4byte gUnknown_3001280 + thumb_func_end sub_0819D00C + + thumb_func_start sub_0819D270 +sub_0819D270: @ 0x0819D270 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _0819D29C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r2, #8 + ldrsh r0, [r0, r2] + mov r8, r1 + cmp r0, #5 + bls _0819D292 + b _0819D44A +_0819D292: + lsls r0, r0, #2 + ldr r1, _0819D2A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819D29C: .4byte gUnknown_3005B60 +_0819D2A0: .4byte _0819D2A4 +_0819D2A4: @ jump table + .4byte _0819D2BC @ case 0 + .4byte _0819D2D8 @ case 1 + .4byte _0819D2F4 @ case 2 + .4byte _0819D324 @ case 3 + .4byte _0819D3D8 @ case 4 + .4byte _0819D422 @ case 5 +_0819D2BC: + ldr r0, _0819D2D4 + movs r1, #0xe0 + movs r2, #0xa + bl sub_080A1200 + bl sub_0819EAB0 + movs r0, #5 + bl sub_0800365C + b _0819D30A + .align 2, 0 +_0819D2D4: .4byte gUnknown_85DC1C4 +_0819D2D8: + movs r0, #3 + bl sub_0819E76C + ldr r0, _0819D2F0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0819D44A + .align 2, 0 +_0819D2F0: .4byte gUnknown_3005B60 +_0819D2F4: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, _0819D31C + adds r1, #0x4a + ldrh r1, [r1] + str r1, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C +_0819D30A: + ldr r1, _0819D320 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _0819D44A + .align 2, 0 +_0819D31C: .4byte gUnknown_85D9C38 +_0819D320: .4byte gUnknown_3005B60 +_0819D324: + ldr r0, _0819D388 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0819D336 + b _0819D44A +_0819D336: + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + ldr r0, _0819D38C + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #1 + bne _0819D398 + ldr r0, _0819D390 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0819D394 + lsls r2, r5, #2 + adds r2, r2, r5 + lsls r2, r2, #3 + adds r2, r2, r1 + strh r6, [r2, #0xe] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #0xa] + strh r6, [r0, #8] + strh r6, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + movs r0, #5 + strh r0, [r2, #0xc] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _0819D44A + .align 2, 0 +_0819D388: .4byte gUnknown_2037C74 +_0819D38C: .4byte gUnknown_3001280 +_0819D390: .4byte sub_0819D00C +_0819D394: .4byte gUnknown_3005B60 +_0819D398: + ldr r0, _0819D3D0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, _0819D3D4 + lsls r2, r5, #2 + adds r2, r2, r5 + lsls r2, r2, #3 + adds r2, r2, r3 + movs r1, #1 + strh r1, [r2, #0xe] + strh r6, [r2, #0x10] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + strh r5, [r0, #0xa] + strh r1, [r0, #8] + strh r6, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + ldrh r0, [r2, #8] + adds r0, #2 + strh r0, [r2, #8] + b _0819D44A + .align 2, 0 +_0819D3D0: .4byte sub_0819D00C +_0819D3D4: .4byte gUnknown_3005B60 +_0819D3D8: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + mov r1, r8 + adds r6, r0, r1 + ldrh r0, [r6, #0xc] + movs r2, #0xc + ldrsh r7, [r6, r2] + cmp r7, #0 + bne _0819D41C + ldr r0, _0819D418 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + strh r7, [r6, #0x10] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + strh r5, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #8] + strh r7, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + b _0819D44A + .align 2, 0 +_0819D418: .4byte sub_0819D00C +_0819D41C: + subs r0, #1 + strh r0, [r6, #0xc] + b _0819D44A +_0819D422: + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + mov r1, r8 + adds r2, r0, r1 + movs r1, #0xe + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _0819D44A + movs r1, #0x10 + ldrsh r0, [r2, r1] + cmp r0, #1 + bne _0819D44A + ldrh r0, [r2, #0x12] + strh r0, [r2, #8] + ldrh r0, [r2, #0x14] + ldrh r1, [r2, #0x16] + lsls r0, r0, #0x10 + orrs r0, r1 + str r0, [r2] +_0819D44A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819D270 + + thumb_func_start sub_0819D458 +sub_0819D458: @ 0x0819D458 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _0819D498 + ldr r0, [r1] + adds r0, #0x30 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #1 + bne _0819D474 + b _0819D6C0 +_0819D474: + ldr r0, _0819D49C + lsls r2, r6, #2 + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r4, #8 + ldrsh r1, [r1, r4] + mov r8, r0 + adds r5, r2, #0 + cmp r1, #8 + bls _0819D48C + b _0819D6C0 +_0819D48C: + lsls r0, r1, #2 + ldr r1, _0819D4A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819D498: .4byte gUnknown_3001280 +_0819D49C: .4byte gUnknown_3005B60 +_0819D4A0: .4byte _0819D4A4 +_0819D4A4: @ jump table + .4byte _0819D4C8 @ case 0 + .4byte _0819D550 @ case 1 + .4byte _0819D596 @ case 2 + .4byte _0819D5DC @ case 3 + .4byte _0819D5F8 @ case 4 + .4byte _0819D610 @ case 5 + .4byte _0819D61E @ case 6 + .4byte _0819D630 @ case 7 + .4byte _0819D698 @ case 8 +_0819D4C8: + ldr r0, [r3] + ldrb r7, [r0, #0x14] + cmp r7, #1 + bne _0819D510 + ldr r0, _0819D508 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, _0819D50C + adds r2, r5, r6 + lsls r2, r2, #3 + adds r2, r2, r3 + movs r1, #0 + strh r1, [r2, #0xe] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + strh r6, [r0, #0xa] + strh r1, [r0, #8] + strh r7, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + movs r0, #0xa + strh r0, [r2, #0xc] + ldrh r0, [r2, #8] + adds r0, #1 + strh r0, [r2, #8] + b _0819D6C0 + .align 2, 0 +_0819D508: .4byte sub_0819D00C +_0819D50C: .4byte gUnknown_3005B60 +_0819D510: + ldr r0, _0819D548 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r3, _0819D54C + adds r2, r5, r6 + lsls r2, r2, #3 + adds r2, r2, r3 + movs r0, #0 + movs r1, #1 + strh r1, [r2, #0xe] + strh r0, [r2, #0x10] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r3 + strh r6, [r0, #0xa] + strh r1, [r0, #8] + strh r1, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + ldrh r0, [r2, #8] + adds r0, #2 + strh r0, [r2, #8] + b _0819D6C0 + .align 2, 0 +_0819D548: .4byte sub_0819D00C +_0819D54C: .4byte gUnknown_3005B60 +_0819D550: + adds r0, r5, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r5, r0, r1 + ldrh r0, [r5, #0xc] + movs r2, #0xc + ldrsh r7, [r5, r2] + cmp r7, #0 + bne _0819D590 + ldr r0, _0819D58C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + strh r7, [r5, #0x10] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + add r0, r8 + strh r6, [r0, #0xa] + movs r1, #1 + strh r1, [r0, #8] + strh r1, [r0, #0xc] + movs r1, #6 + strh r1, [r0, #0xe] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + b _0819D6C0 + .align 2, 0 +_0819D58C: .4byte sub_0819D00C +_0819D590: + subs r0, #1 + strh r0, [r5, #0xc] + b _0819D6C0 +_0819D596: + adds r0, r5, r6 + lsls r0, r0, #3 + mov r1, r8 + adds r4, r0, r1 + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #1 + beq _0819D5A8 + b _0819D6C0 +_0819D5A8: + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0819D5B2 + b _0819D6C0 +_0819D5B2: + ldr r1, _0819D5D4 + ldr r0, _0819D5D8 + adds r0, #0x4a + ldrh r0, [r0] + movs r2, #0xe2 + lsls r2, r2, #1 + adds r1, r1, r2 + strh r0, [r1] + bl sub_0819EAB0 + movs r0, #5 + bl sub_0800365C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _0819D6C0 + .align 2, 0 +_0819D5D4: .4byte gUnknown_20377B4 +_0819D5D8: .4byte gUnknown_85D9C38 +_0819D5DC: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, _0819D5F4 + adds r1, #0x4a + ldrh r1, [r1] + str r1, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _0819D678 + .align 2, 0 +_0819D5F4: .4byte gUnknown_85D9C38 +_0819D5F8: + ldr r0, _0819D60C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0819D6C0 + movs r0, #0 + bl sub_0819EB80 + b _0819D678 + .align 2, 0 +_0819D60C: .4byte gUnknown_2037C74 +_0819D610: + movs r0, #1 + bl sub_0819EB80 + movs r0, #3 + bl sub_0800365C + b _0819D678 +_0819D61E: + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + b _0819D678 +_0819D630: + ldr r0, _0819D644 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0819D64C + ldr r0, _0819D648 + bl sub_0819E93C + b _0819D652 + .align 2, 0 +_0819D644: .4byte gUnknown_3001280 +_0819D648: .4byte gUnknown_85DC0C2 +_0819D64C: + ldr r0, _0819D688 + bl sub_0819E93C +_0819D652: + ldr r0, _0819D68C + ldr r1, [r0] + ldrb r0, [r1, #3] + cmp r0, #2 + bhi _0819D674 + ldr r2, _0819D690 + ldrb r1, [r1, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] +_0819D674: + bl sub_0819EE50 +_0819D678: + ldr r0, _0819D694 + adds r1, r5, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0819D6C0 + .align 2, 0 +_0819D688: .4byte gUnknown_85DC0D5 +_0819D68C: .4byte gUnknown_3001280 +_0819D690: .4byte gUnknown_20205AC +_0819D694: .4byte gUnknown_3005B60 +_0819D698: + bl sub_0819ED38 + bl sub_0819E7FC + ldr r0, _0819D6CC + ldr r0, [r0] + adds r0, #0x22 + movs r1, #1 + strb r1, [r0] + ldr r1, _0819D6D0 + adds r0, r5, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x12] + strh r1, [r0, #8] + ldrh r1, [r0, #0x14] + ldrh r2, [r0, #0x16] + lsls r1, r1, #0x10 + orrs r1, r2 + str r1, [r0] +_0819D6C0: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819D6CC: .4byte gUnknown_3001280 +_0819D6D0: .4byte gUnknown_3005B60 + thumb_func_end sub_0819D458 + + thumb_func_start sub_0819D6D4 +sub_0819D6D4: @ 0x0819D6D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _0819D70C + ldr r0, [r0] + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + bne _0819D6E8 + b _0819D8B2 +_0819D6E8: + ldr r0, _0819D710 + lsls r2, r6, #2 + adds r1, r2, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r3, #8 + ldrsh r1, [r1, r3] + adds r3, r0, #0 + adds r7, r2, #0 + cmp r1, #4 + bls _0819D700 + b _0819D8B2 +_0819D700: + lsls r0, r1, #2 + ldr r1, _0819D714 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819D70C: .4byte gUnknown_3001280 +_0819D710: .4byte gUnknown_3005B60 +_0819D714: .4byte _0819D718 +_0819D718: @ jump table + .4byte _0819D72C @ case 0 + .4byte _0819D740 @ case 1 + .4byte _0819D774 @ case 2 + .4byte _0819D7A4 @ case 3 + .4byte _0819D898 @ case 4 +_0819D72C: + bl sub_0819ED38 + ldr r0, _0819D73C + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0819D87E + .align 2, 0 +_0819D73C: .4byte gUnknown_3005B60 +_0819D740: + bl sub_0819E7FC + ldr r2, _0819D768 + ldr r0, _0819D76C + ldr r0, [r0] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, _0819D770 + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + b _0819D87E + .align 2, 0 +_0819D768: .4byte gUnknown_20205AC +_0819D76C: .4byte gUnknown_3001280 +_0819D770: .4byte gUnknown_3005B60 +_0819D774: + ldr r0, _0819D794 + movs r1, #0 + bl sub_080A8878 + ldr r2, _0819D798 + ldr r0, _0819D79C + ldr r0, [r0] + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0819D7A0 + str r1, [r0] + b _0819D878 + .align 2, 0 +_0819D794: .4byte sub_0819CE14 +_0819D798: .4byte gUnknown_3005B60 +_0819D79C: .4byte gUnknown_3001280 +_0819D7A0: .4byte sub_0819CD4C +_0819D7A4: + ldr r0, _0819D7E0 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0819D7B2 + b _0819D8B2 +_0819D7B2: + ldr r2, _0819D7E4 + ldr r4, _0819D7E8 + ldr r0, [r4] + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #0x10 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _0819D8B2 + bl sub_0819E7C8 + ldr r0, [r4] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0819D7EC + movs r0, #1 + bl sub_0819EF34 + b _0819D81A + .align 2, 0 +_0819D7E0: .4byte sub_0819CE14 +_0819D7E4: .4byte gUnknown_3005B60 +_0819D7E8: .4byte gUnknown_3001280 +_0819D7EC: + movs r0, #0 + bl sub_0819EF34 + movs r2, #0 + ldr r5, _0819D888 + movs r3, #4 +_0819D7F8: + ldr r0, [r4] + adds r0, #0xb + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _0819D7F8 +_0819D81A: + ldr r5, _0819D888 + ldr r4, _0819D88C + ldr r3, [r4] + ldrb r0, [r3, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r0, r3, #5 + ldrb r2, [r3, #3] + adds r0, r0, r2 + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r0, [r0, #0x20] + movs r5, #0 + strh r0, [r1, #0x20] + ldr r2, _0819D890 + adds r0, r3, #0 + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _0819D894 + str r1, [r0] + adds r3, #0x27 + strb r5, [r3] + ldr r0, [r4] + adds r0, #0x28 + movs r1, #6 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0x26 + strb r5, [r0] + ldr r0, [r4] + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #8] +_0819D878: + adds r1, r7, r6 + lsls r1, r1, #3 + adds r1, r1, r2 +_0819D87E: + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0819D8B2 + .align 2, 0 +_0819D888: .4byte gUnknown_20205AC +_0819D88C: .4byte gUnknown_3001280 +_0819D890: .4byte gUnknown_3005B60 +_0819D894: .4byte sub_0819CC3C +_0819D898: + adds r0, r7, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #8] + ldr r2, _0819D8B8 + lsrs r1, r2, #0x10 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + movs r1, #1 + strh r1, [r0, #0x12] + ldr r1, _0819D8BC + str r1, [r0] +_0819D8B2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819D8B8: .4byte sub_0819CB28 +_0819D8BC: .4byte sub_0819D458 + thumb_func_end sub_0819D6D4 + + thumb_func_start sub_0819D8C0 +sub_0819D8C0: @ 0x0819D8C0 + push {r4, r5, lr} + ldr r5, _0819D8E4 + ldr r4, [r5] + cmp r4, #0 + bne _0819D8DE + movs r0, #0x34 + bl sub_08000BDC + str r0, [r5] + strb r4, [r0, #3] + ldr r0, [r5] + adds r0, #0x30 + strb r4, [r0] + ldr r0, [r5] + strb r4, [r0, #0x15] +_0819D8DE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819D8E4: .4byte gUnknown_3001280 + thumb_func_end sub_0819D8C0 + + thumb_func_start sub_0819D8E8 +sub_0819D8E8: @ 0x0819D8E8 + push {lr} + ldr r0, _0819D8FC + movs r1, #0 + str r1, [r0] + ldr r0, _0819D900 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_0819D8FC: .4byte gUnknown_3001280 +_0819D900: .4byte sub_0819D904 + thumb_func_end sub_0819D8E8 + + thumb_func_start sub_0819D904 +sub_0819D904: @ 0x0819D904 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r1, _0819D924 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0xf + bls _0819D91A + b _0819DDB2 +_0819D91A: + lsls r0, r0, #2 + ldr r1, _0819D928 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819D924: .4byte gUnknown_3002360 +_0819D928: .4byte _0819D92C +_0819D92C: @ jump table + .4byte _0819D96C @ case 0 + .4byte _0819D9BC @ case 1 + .4byte _0819DA90 @ case 2 + .4byte _0819DB50 @ case 3 + .4byte _0819DB7C @ case 4 + .4byte _0819DBB4 @ case 5 + .4byte _0819DBD4 @ case 6 + .4byte _0819DBF8 @ case 7 + .4byte _0819DC18 @ case 8 + .4byte _0819DC24 @ case 9 + .4byte _0819DC4C @ case 10 + .4byte _0819DC58 @ case 11 + .4byte _0819DC80 @ case 12 + .4byte _0819DC94 @ case 13 + .4byte _0819DCAC @ case 14 + .4byte _0819DD24 @ case 15 +_0819D96C: + movs r0, #0 + bl sub_080006FC + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + str r0, [sp, #8] + movs r1, #0xc0 + lsls r1, r1, #0x13 + ldr r2, _0819D9AC + add r0, sp, #8 + bl CpuSet + movs r0, #0 + bl sub_080017D4 + ldr r1, _0819D9B0 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r0, _0819D9B4 + bl sub_08003090 + bl sub_08004480 + ldr r1, _0819D9B8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819D9AC: .4byte 0x05006000 +_0819D9B0: .4byte gUnknown_85DC164 +_0819D9B4: .4byte gUnknown_85DC174 +_0819D9B8: .4byte gUnknown_3002360 +_0819D9BC: + ldr r5, _0819DA80 + movs r4, #0x88 + lsls r4, r4, #3 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + ldr r5, _0819DA84 + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r5] + ldr r5, _0819DA88 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + ldr r5, _0819DA8C + adds r0, r4, #0 + bl sub_08000BDC + str r0, [r5] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4c + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0 + bl sub_08001144 + movs r0, #0x44 + movs r1, #0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0 + bl sub_08001144 + movs r0, #0x46 + movs r1, #0 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0 + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + b _0819DD0E + .align 2, 0 +_0819DA80: .4byte gUnknown_203CB0C +_0819DA84: .4byte gUnknown_203CB10 +_0819DA88: .4byte gUnknown_203CB14 +_0819DA8C: .4byte gUnknown_203CB18 +_0819DA90: + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + bl sub_08008424 + bl sub_0818CCF8 + ldr r0, _0819DB28 + ldr r5, _0819DB2C + ldr r1, [r5] + movs r2, #0x88 + lsls r2, r2, #2 + bl CpuSet + ldr r0, _0819DB30 + ldr r4, _0819DB34 + ldr r1, [r4] + movs r2, #0x30 + bl CpuSet + ldr r1, [r5] + movs r2, #0x88 + lsls r2, r2, #3 + movs r0, #1 + movs r3, #0 + bl sub_0800195C + ldr r1, [r4] + movs r0, #3 + movs r2, #0x60 + movs r3, #0 + bl sub_0800195C + ldr r0, _0819DB38 + ldr r4, _0819DB3C + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #3 + bl CpuSet + ldr r1, [r4] + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #1 + movs r3, #0 + bl sub_08001A14 + ldr r0, _0819DB40 + movs r1, #0 + movs r2, #0x40 + bl sub_080A1200 + ldr r4, _0819DB44 + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0xa + bl sub_080A1200 + adds r0, r4, #0 + movs r1, #0xe0 + movs r2, #0xa + bl sub_080A1200 + ldr r0, _0819DB48 + movs r1, #0x20 + movs r2, #4 + bl sub_080A1200 + ldr r1, _0819DB4C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DB28: .4byte gUnknown_85DAD38 +_0819DB2C: .4byte gUnknown_203CB0C +_0819DB30: .4byte gUnknown_85DBA78 +_0819DB34: .4byte gUnknown_203CB10 +_0819DB38: .4byte gUnknown_85DB178 +_0819DB3C: .4byte gUnknown_203CB14 +_0819DB40: .4byte gUnknown_85DBAD8 +_0819DB44: .4byte gUnknown_85DC1C4 +_0819DB48: .4byte gUnknown_85DBB18 +_0819DB4C: .4byte gUnknown_3002360 +_0819DB50: + ldr r0, _0819DB74 + ldr r1, [r0] + movs r0, #3 + bl sub_0800212C + ldr r1, _0819DB78 + movs r0, #8 + str r0, [sp] + str r0, [sp, #4] + movs r0, #3 + movs r2, #0xb + movs r3, #4 + bl sub_080022B0 + movs r0, #3 + bl sub_08002248 + b _0819DD0E + .align 2, 0 +_0819DB74: .4byte gUnknown_203CB18 +_0819DB78: .4byte gUnknown_85DB978 +_0819DB7C: + ldr r0, _0819DBA0 + bl sub_080084A8 + ldr r0, _0819DBA4 + bl sub_08008254 + ldr r0, _0819DBA8 + bl sub_08034388 + ldr r0, _0819DBAC + bl sub_080006F0 + ldr r1, _0819DBB0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DBA0: .4byte gUnknown_85DBEB8 +_0819DBA4: .4byte gUnknown_85DBE58 +_0819DBA8: .4byte gUnknown_85DBEA8 +_0819DBAC: .4byte sub_0819C4E4 +_0819DBB0: .4byte gUnknown_3002360 +_0819DBB4: + ldr r0, _0819DBCC + ldr r1, [r0] + ldrb r0, [r1, #0x15] + cmp r0, #1 + bne _0819DBC4 + ldr r0, _0819DBD0 + ldrb r0, [r0] + strb r0, [r1, #3] +_0819DBC4: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _0819DD16 + .align 2, 0 +_0819DBCC: .4byte gUnknown_3001280 +_0819DBD0: .4byte gUnknown_203CBEC +_0819DBD4: + bl sub_0819D8C0 + bl sub_0819DDC8 + ldr r0, _0819DBF4 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _0819DBEA + bl sub_0819F1F0 +_0819DBEA: + movs r0, #0 + bl sub_0819EF34 + b _0819DD0E + .align 2, 0 +_0819DBF4: .4byte gUnknown_3001280 +_0819DBF8: + ldr r0, _0819DC10 + bl sub_0819E93C + movs r0, #2 + bl sub_0800365C + ldr r1, _0819DC14 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DC10: .4byte gUnknown_85DC0C2 +_0819DC14: .4byte gUnknown_3002360 +_0819DC18: + bl sub_0819EE50 + movs r0, #8 + bl sub_0800365C + b _0819DD0E +_0819DC24: + ldr r0, _0819DC44 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0819DC32 + bl sub_0819E898 +_0819DC32: + movs r0, #1 + bl sub_0800365C + ldr r1, _0819DC48 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DC44: .4byte gUnknown_3001280 +_0819DC48: .4byte gUnknown_3002360 +_0819DC4C: + bl sub_0819E864 + movs r0, #0 + bl sub_0800365C + b _0819DD0E +_0819DC58: + ldr r0, _0819DC78 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0819DC66 + bl sub_0819EA40 +_0819DC66: + movs r0, #6 + bl sub_0800365C + ldr r1, _0819DC7C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DC78: .4byte gUnknown_3001280 +_0819DC7C: .4byte gUnknown_3002360 +_0819DC80: + ldr r0, _0819DC90 + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _0819DD0E + bl sub_0819EBF0 + b _0819DD0E + .align 2, 0 +_0819DC90: .4byte gUnknown_3001280 +_0819DC94: + bl sub_0819EB18 + movs r0, #3 + bl sub_0800365C + ldr r1, _0819DCA8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _0819DD16 + .align 2, 0 +_0819DCA8: .4byte gUnknown_3002360 +_0819DCAC: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r0, _0819DCFC + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _0819DD08 + movs r0, #3 + bl sub_08001B48 + ldr r1, _0819DD00 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0819DD04 + movs r0, #0x52 + bl sub_08001144 + b _0819DD0E + .align 2, 0 +_0819DCFC: .4byte gUnknown_3001280 +_0819DD00: .4byte 0x00001248 +_0819DD04: .4byte 0x0000040B +_0819DD08: + movs r0, #3 + bl sub_08001B5C +_0819DD0E: + ldr r1, _0819DD20 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_0819DD16: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _0819DDB2 + .align 2, 0 +_0819DD20: .4byte gUnknown_3002360 +_0819DD24: + ldr r0, _0819DD64 + movs r1, #0 + bl sub_080A8878 + ldr r6, _0819DD68 + ldr r1, [r6] + adds r1, #0x21 + strb r0, [r1] + ldr r0, [r6] + ldrb r5, [r0, #0x15] + cmp r5, #0 + bne _0819DD74 + ldr r4, _0819DD6C + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r5, [r0, #8] + ldr r0, _0819DD70 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + strh r5, [r0, #8] + b _0819DDAC + .align 2, 0 +_0819DD64: .4byte sub_0819CC3C +_0819DD68: .4byte gUnknown_3001280 +_0819DD6C: .4byte gUnknown_3005B60 +_0819DD70: .4byte sub_0819CB28 +_0819DD74: + bl sub_0819E844 + ldr r4, _0819DDBC + ldr r2, [r6] + adds r0, r2, #0 + adds r0, #0x21 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r3, #0 + movs r1, #1 + strh r1, [r0, #8] + adds r2, #0x22 + strb r3, [r2] + ldr r0, _0819DDC0 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + movs r1, #2 + strh r1, [r0, #8] +_0819DDAC: + ldr r0, _0819DDC4 + bl sub_08000540 +_0819DDB2: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819DDBC: .4byte gUnknown_3005B60 +_0819DDC0: .4byte sub_0819CA1C +_0819DDC4: .4byte sub_0819C4C8 + thumb_func_end sub_0819D904 + + thumb_func_start sub_0819DDC8 +sub_0819DDC8: @ 0x0819DDC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + mov r1, sp + ldr r0, _0819E1B8 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r5, r6} + stm r1!, {r2, r5, r6} + mov r1, sp + movs r0, #0x65 + strh r0, [r1, #2] + movs r6, #0 + ldr r4, _0819E1BC + movs r7, #0 + ldr r5, _0819E1C0 +_0819DDEE: + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r1, r1, #0x14 + movs r3, #0x90 + lsls r3, r3, #0xf + adds r1, r1, r3 + asrs r1, r1, #0x10 + mov r0, sp + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r4] + adds r1, #5 + adds r1, r1, r6 + strb r0, [r1] + ldr r0, [r4] + adds r0, #5 + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r7, [r0, #0x2e] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _0819DDEE + ldr r7, _0819E1BC + ldr r1, [r7] + adds r0, r1, #5 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0819E1C0 + adds r0, r0, r4 + movs r5, #0x20 + ldrsh r1, [r0, r5] + ldr r0, _0819E1C4 + movs r2, #0x58 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + movs r4, #0 + strb r0, [r1, #4] + ldr r0, _0819E1C8 + movs r1, #0xb0 + movs r2, #0x70 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #1] + ldr r0, _0819E1CC + movs r1, #0xb0 + movs r2, #0x90 + movs r3, #0 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #2] + ldr r0, [r7] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r6, _0819E1C0 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, [r7] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x28 + strb r4, [r0] + ldr r0, [r7] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x29 + strb r4, [r0] + ldr r0, [r7] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x28 + strb r4, [r0] + ldr r0, [r7] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x29 + strb r4, [r0] + ldr r0, [r7] + ldrb r0, [r0, #0x15] + movs r1, #0xc0 + str r1, [sp, #0x18] + cmp r0, #1 + bne _0819DEF0 + movs r2, #0xf0 + str r2, [sp, #0x18] +_0819DEF0: + mov r1, sp + ldr r0, _0819E1C4 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + mov r0, sp + movs r4, #0x68 + mov sl, r4 + mov r5, sl + strh r5, [r0] + movs r1, #0xf0 + movs r2, #0x78 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #8] + mov r1, sp + ldr r0, _0819E1C8 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + mov r0, sp + movs r1, #0x69 + mov sb, r1 + mov r2, sb + strh r2, [r0] + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #9] + movs r5, #0x90 + lsls r5, r5, #1 + mov r0, sp + adds r1, r5, #0 + movs r2, #0x78 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xa] + mov r1, sp + ldr r0, _0819E1C4 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + mov r0, sp + movs r3, #0x6a + mov r8, r3 + mov r6, r8 + strh r6, [r0] + movs r1, #0xf0 + movs r2, #0x78 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xb] + mov r1, sp + ldr r0, _0819E1C8 + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + ldm r0!, {r2, r3, r6} + stm r1!, {r2, r3, r6} + mov r1, sp + movs r0, #0x6b + strh r0, [r1] + mov r0, sp + adds r1, r4, #0 + movs r2, #0x78 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xc] + mov r0, sp + movs r6, #0x6c + strh r6, [r0] + adds r1, r5, #0 + movs r2, #0x78 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xd] + mov r1, sp + ldr r0, _0819E1C4 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + mov r0, sp + mov r4, sl + strh r4, [r0] + ldr r1, [sp, #0x18] + movs r2, #0x90 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xe] + mov r1, sp + ldr r0, _0819E1C8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r4, r5} + stm r1!, {r2, r4, r5} + mov r0, sp + mov r3, sb + strh r3, [r0] + ldr r4, [sp, #0x18] + adds r4, #0x10 + adds r1, r4, #0 + movs r2, #0x90 + movs r3, #0xa + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0xf] + mov r1, sp + ldr r0, _0819E1C4 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + mov r0, sp + mov r5, r8 + strh r5, [r0] + ldr r1, [sp, #0x18] + movs r2, #0x90 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0x10] + mov r1, sp + ldr r0, _0819E1C8 + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + ldm r0!, {r2, r3, r5} + stm r1!, {r2, r3, r5} + mov r0, sp + strh r6, [r0] + adds r1, r4, #0 + movs r2, #0x90 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r7] + strb r0, [r1, #0x11] + movs r6, #0 + ldr r5, _0819E1C0 + adds r4, r7, #0 + movs r7, #0 + movs r0, #4 + mov sl, r0 +_0819E038: + ldr r0, [r4] + lsls r3, r6, #1 + adds r2, r3, r6 + adds r0, #8 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r4] + adds r0, #8 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r4] + adds r0, #9 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r4] + adds r0, #9 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xa + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xa + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xe + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xe + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xf + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x28 + strb r7, [r0] + ldr r0, [r4] + adds r0, #0xf + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x29 + strb r7, [r0] + ldr r0, [r4] + adds r0, #8 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + mov r8, r0 + ldrb r1, [r0] + mov r0, sl + orrs r1, r0 + mov r0, r8 + strb r1, [r0] + ldr r0, [r4] + adds r0, #9 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + mov r8, r0 + ldrb r1, [r0] + mov r0, sl + orrs r1, r0 + mov r0, r8 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0xa + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + mov r2, sl + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0xe + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + adds r0, #0xf + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r3, _0819E1BC + mov r8, r3 + ldr r0, _0819E1C0 + mov sb, r0 + cmp r6, #1 + bhi _0819E19E + b _0819E038 +_0819E19E: + ldr r0, [r3] + ldrb r0, [r0, #0xe] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, sb + adds r1, #0x3e + ldrb r2, [r1] + movs r3, #5 + rsbs r3, r3, #0 + adds r0, r3, #0 + b _0819E1D0 + .align 2, 0 +_0819E1B8: .4byte gUnknown_85DC03C +_0819E1BC: .4byte gUnknown_3001280 +_0819E1C0: .4byte gUnknown_20205AC +_0819E1C4: .4byte gUnknown_85DC054 +_0819E1C8: .4byte gUnknown_85DC06C +_0819E1CC: .4byte gUnknown_85DC084 +_0819E1D0: + ands r0, r2 + strb r0, [r1] + mov r1, r8 + ldr r0, [r1] + ldrb r1, [r0, #0xf] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r3, #0 + ands r1, r2 + strb r1, [r0] + mov r2, r8 + ldr r0, [r2] + ldrb r1, [r0, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r3, #0 + ands r1, r2 + strb r1, [r0] + mov r4, r8 + ldr r0, [r4] + ldrb r1, [r0, #9] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r3, #0 + ands r1, r2 + strb r1, [r0] + ldr r0, [r4] + ldrb r1, [r0, #0xa] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + adds r0, #0x3e + ldrb r1, [r0] + ands r3, r1 + strb r3, [r0] + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_0819DDC8 + + thumb_func_start sub_0819E240 +sub_0819E240: @ 0x0819E240 + push {r4, r5, r6, r7, lr} + movs r5, #0 +_0819E244: + ldr r6, _0819E308 + ldr r0, [r6] + adds r0, #5 + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _0819E30C + adds r0, r0, r4 + bl sub_08006E00 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0819E244 + ldr r0, [r6] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r6] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r0, [r6] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r5, #0 +_0819E298: + movs r4, #0 + lsls r6, r5, #1 +_0819E29C: + ldr r0, _0819E308 + ldr r0, [r0] + adds r1, r6, r5 + adds r1, r4, r1 + adds r0, #8 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0819E30C + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0819E29C + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _0819E298 + movs r5, #0 +_0819E2CE: + movs r4, #0 + adds r7, r5, #1 + lsls r6, r5, #1 +_0819E2D4: + ldr r0, _0819E308 + ldr r0, [r0] + adds r1, r4, r6 + adds r0, #0xe + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0819E30C + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _0819E2D4 + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bls _0819E2CE + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819E308: .4byte gUnknown_3001280 +_0819E30C: .4byte gUnknown_20205AC + thumb_func_end sub_0819E240 + + thumb_func_start sub_0819E310 +sub_0819E310: @ 0x0819E310 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bhi _0819E364 + ldr r4, _0819E35C + ldr r5, _0819E360 + ldr r0, [r5] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bl sub_0819E5F4 + ldr r0, [r5] + ldrb r2, [r0, #4] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r0, #5 + adds r0, r0, r6 + ldrb r2, [r0] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r0, [r0, #0x20] + strh r0, [r1, #0x20] + b _0819E38C + .align 2, 0 +_0819E35C: .4byte gUnknown_20205AC +_0819E360: .4byte gUnknown_3001280 +_0819E364: + ldr r2, _0819E394 + ldr r3, _0819E398 + ldr r0, [r3] + ldrb r1, [r0, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldr r1, [r0, #0x18] + lsls r0, r6, #3 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0819E540 +_0819E38C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819E394: .4byte gUnknown_20205AC +_0819E398: .4byte gUnknown_3001280 + thumb_func_end sub_0819E310 + + thumb_func_start sub_0819E39C +sub_0819E39C: @ 0x0819E39C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + lsls r4, r4, #0x18 + cmp r4, #0 + ble _0819E3C8 + ldr r1, _0819E3C4 + ldr r2, [r1] + ldrb r0, [r2, #3] + adds r0, #1 + ldrb r3, [r2, #0x17] + cmp r0, r3 + bne _0819E3E0 + movs r0, #0 + b _0819E3E0 + .align 2, 0 +_0819E3C4: .4byte gUnknown_3001280 +_0819E3C8: + ldr r0, _0819E3D8 + ldr r2, [r0] + ldrb r3, [r2, #3] + adds r1, r0, #0 + cmp r3, #0 + beq _0819E3DC + subs r0, r3, #1 + b _0819E3E0 + .align 2, 0 +_0819E3D8: .4byte gUnknown_3001280 +_0819E3DC: + ldrb r0, [r2, #0x17] + subs r0, #1 +_0819E3E0: + strb r0, [r2, #3] + ldr r0, [r1] + ldrb r0, [r0, #3] + bl sub_0819E310 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0819E39C + + thumb_func_start sub_0819E3F0 +sub_0819E3F0: @ 0x0819E3F0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + lsls r4, r4, #0x18 + cmp r4, #0 + ble _0819E430 + ldr r0, _0819E418 + ldr r2, [r0] + ldrb r1, [r2, #3] + adds r4, r0, #0 + cmp r1, #2 + bhi _0819E41C + movs r0, #3 + strb r0, [r2, #3] + b _0819E452 + .align 2, 0 +_0819E418: .4byte gUnknown_3001280 +_0819E41C: + ldrb r0, [r2, #3] + adds r0, #1 + ldrb r1, [r2, #0x17] + cmp r0, r1 + beq _0819E42A + strb r0, [r2, #3] + b _0819E452 +_0819E42A: + movs r0, #0 + strb r0, [r2, #3] + b _0819E452 +_0819E430: + ldr r0, _0819E448 + ldr r1, [r0] + ldrb r3, [r1, #3] + adds r2, r3, #0 + adds r4, r0, #0 + cmp r2, #2 + bls _0819E44C + cmp r2, #0 + beq _0819E44C + subs r0, r3, #1 + b _0819E450 + .align 2, 0 +_0819E448: .4byte gUnknown_3001280 +_0819E44C: + ldrb r0, [r1, #0x17] + subs r0, #1 +_0819E450: + strb r0, [r1, #3] +_0819E452: + ldr r0, [r4] + ldrb r0, [r0, #3] + bl sub_0819E310 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0819E3F0 + + thumb_func_start sub_0819E460 +sub_0819E460: @ 0x0819E460 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + ble _0819E480 + ldr r0, _0819E478 + ldr r1, [r0] + ldrb r3, [r1, #0x16] + adds r2, r0, #0 + cmp r3, #1 + beq _0819E47C + adds r0, r3, #1 + b _0819E496 + .align 2, 0 +_0819E478: .4byte gUnknown_3001280 +_0819E47C: + movs r0, #0 + b _0819E496 +_0819E480: + ldr r0, _0819E490 + ldr r1, [r0] + ldrb r3, [r1, #0x16] + adds r2, r0, #0 + cmp r3, #0 + beq _0819E494 + subs r0, r3, #1 + b _0819E496 + .align 2, 0 +_0819E490: .4byte gUnknown_3001280 +_0819E494: + movs r0, #1 +_0819E496: + strb r0, [r1, #0x16] + ldr r3, _0819E4C4 + ldr r2, [r2] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2, #0x16] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2, #0x16] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + pop {r0} + bx r0 + .align 2, 0 +_0819E4C4: .4byte gUnknown_20205AC + thumb_func_end sub_0819E460 + + thumb_func_start sub_0819E4C8 +sub_0819E4C8: @ 0x0819E4C8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + lsls r4, r4, #0x18 + cmp r4, #0 + ble _0819E4F4 + ldr r0, _0819E4EC + ldr r1, [r0] + ldrb r3, [r1] + adds r2, r0, #0 + cmp r3, #2 + beq _0819E4F0 + adds r0, r3, #1 + b _0819E50A + .align 2, 0 +_0819E4EC: .4byte gUnknown_3001280 +_0819E4F0: + movs r0, #0 + b _0819E50A +_0819E4F4: + ldr r0, _0819E504 + ldr r1, [r0] + ldrb r3, [r1] + adds r2, r0, #0 + cmp r3, #0 + beq _0819E508 + subs r0, r3, #1 + b _0819E50A + .align 2, 0 +_0819E504: .4byte gUnknown_3001280 +_0819E508: + movs r0, #2 +_0819E50A: + strb r0, [r1] + ldr r3, _0819E53C + ldr r2, [r2] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819E53C: .4byte gUnknown_20205AC + thumb_func_end sub_0819E4C8 + + thumb_func_start sub_0819E540 +sub_0819E540: @ 0x0819E540 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 + movs r0, #5 + rsbs r0, r0, #0 + mov sb, r0 + movs r2, #4 + mov r8, r2 + ldr r0, _0819E598 + mov ip, r0 + ldr r7, _0819E59C +_0819E55E: + cmp r6, #2 + bne _0819E5A0 + ldr r5, _0819E598 + ldr r3, _0819E59C + ldr r0, [r3] + adds r0, #0xb + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + adds r1, #0x3e + ldrb r2, [r1] + mov r0, sb + ands r0, r2 + strb r0, [r1] + cmp r4, #1 + bhi _0819E5DC + ldr r0, [r3] + adds r0, #0x10 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + b _0819E5D2 + .align 2, 0 +_0819E598: .4byte gUnknown_20205AC +_0819E59C: .4byte gUnknown_3001280 +_0819E5A0: + cmp r6, #3 + bne _0819E5DC + cmp r4, #1 + bhi _0819E5C2 + ldr r0, [r7] + adds r0, #0x10 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, ip + adds r1, #0x3e + ldrb r2, [r1] + mov r0, sb + ands r0, r2 + strb r0, [r1] +_0819E5C2: + ldr r0, [r7] + adds r0, #0xb + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip +_0819E5D2: + adds r0, #0x3e + ldrb r1, [r0] + mov r2, r8 + orrs r1, r2 + strb r1, [r0] +_0819E5DC: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0819E55E + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819E540 + + thumb_func_start sub_0819E5F4 +sub_0819E5F4: @ 0x0819E5F4 + push {r4, r5, r6, lr} + movs r2, #0 + ldr r5, _0819E644 + ldr r4, _0819E648 + adds r6, r5, #0 + movs r3, #4 +_0819E600: + ldr r0, [r4] + adds r0, #0xb + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + cmp r2, #1 + bhi _0819E634 + ldr r0, [r4] + adds r0, #0x10 + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] +_0819E634: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _0819E600 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819E644: .4byte gUnknown_20205AC +_0819E648: .4byte gUnknown_3001280 + thumb_func_end sub_0819E5F4 + + thumb_func_start sub_0819E64C +sub_0819E64C: @ 0x0819E64C + push {r4, r5, lr} + ldr r0, _0819E660 + ldr r3, [r0] + ldrb r1, [r3, #0x15] + adds r5, r0, #0 + cmp r1, #1 + bne _0819E664 + movs r0, #0 + strb r0, [r3, #0x15] + b _0819E668 + .align 2, 0 +_0819E660: .4byte gUnknown_3001280 +_0819E664: + movs r0, #0 + strb r0, [r3] +_0819E668: + ldr r4, _0819E6E4 + ldr r2, [r5] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xb0 + strh r1, [r0, #0x20] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xd0 + strh r1, [r0, #0x20] + ldrb r0, [r2, #2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r0, [r2] + lsls r0, r0, #4 + adds r0, #0x70 + strh r0, [r1, #0x22] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + bl sub_0819E970 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819E6E4: .4byte gUnknown_20205AC + thumb_func_end sub_0819E64C + + thumb_func_start sub_0819E6E8 +sub_0819E6E8: @ 0x0819E6E8 + push {r4, r5, lr} + ldr r5, _0819E764 + ldr r1, [r5] + movs r0, #0 + strb r0, [r1, #0x16] + ldr r4, _0819E768 + ldr r2, [r5] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xb0 + strh r1, [r0, #0x20] + ldrb r1, [r2, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r3, #0x70 + strh r3, [r0, #0x22] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xd0 + strh r1, [r0, #0x20] + ldrb r1, [r2, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r3, [r0, #0x22] + ldrb r0, [r2, #1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r3, [r1] + movs r2, #5 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + ldr r0, [r5] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r1, [r0] + ands r2, r1 + strb r2, [r0] + bl sub_0819E9E4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819E764: .4byte gUnknown_3001280 +_0819E768: .4byte gUnknown_20205AC + thumb_func_end sub_0819E6E8 + + thumb_func_start sub_0819E76C +sub_0819E76C: @ 0x0819E76C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0819E7C0 + ldr r3, _0819E7C4 + ldr r0, [r3] + ldrb r1, [r0, #1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + bl sub_08003774 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819E7C0: .4byte gUnknown_20205AC +_0819E7C4: .4byte gUnknown_3001280 + thumb_func_end sub_0819E76C + + thumb_func_start sub_0819E7C8 +sub_0819E7C8: @ 0x0819E7C8 + push {lr} + movs r0, #6 + bl sub_0800365C + movs r0, #6 + movs r1, #0 + bl sub_08003B18 + movs r0, #6 + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819E7C8 + + thumb_func_start sub_0819E7FC +sub_0819E7FC: @ 0x0819E7FC + push {lr} + sub sp, #0xc + movs r0, #0 + bl sub_0800365C + ldr r2, _0819E840 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0x48 + bl sub_0800449C + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #7 + bl sub_0800365C + movs r0, #7 + movs r1, #0 + bl sub_08003B18 + movs r0, #7 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819E840: .4byte gUnknown_85DC13C + thumb_func_end sub_0819E7FC + + thumb_func_start sub_0819E844 +sub_0819E844: @ 0x0819E844 + push {lr} + bl sub_0819E7C8 + movs r0, #5 + bl sub_0800365C + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + pop {r0} + bx r0 + thumb_func_end sub_0819E844 + + thumb_func_start sub_0819E864 +sub_0819E864: @ 0x0819E864 + push {lr} + sub sp, #0xc + movs r0, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _0819E894 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819E894: .4byte gUnknown_85DC0B4 + thumb_func_end sub_0819E864 + + thumb_func_start sub_0819E898 +sub_0819E898: @ 0x0819E898 + push {r4, lr} + sub sp, #0xc + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819E8B8 + ldr r1, [r0] + ldrb r0, [r1, #3] + cmp r0, #2 + bls _0819E8BC + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _0819E924 + .align 2, 0 +_0819E8B8: .4byte gUnknown_3001280 +_0819E8BC: + ldrb r2, [r1, #3] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0819E8D0 + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819E8CC + b _0819E8D6 + .align 2, 0 +_0819E8CC: .4byte gUnknown_2024190 +_0819E8D0: + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819E92C +_0819E8D6: + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0819E930 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0819E934 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #5 + subs r2, r2, r0 + lsls r2, r2, #0x1b + lsrs r2, r2, #0x18 + ldr r0, _0819E938 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + movs r0, #1 + movs r1, #2 + bl sub_08003528 +_0819E924: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819E92C: .4byte gUnknown_20243E8 +_0819E930: .4byte gUnknown_2021C7C +_0819E934: .4byte gUnknown_82EA31C +_0819E938: .4byte gUnknown_85DC1D1 + thumb_func_end sub_0819E898 + + thumb_func_start sub_0819E93C +sub_0819E93C: @ 0x0819E93C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + movs r0, #5 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #2 + movs r1, #1 + adds r2, r4, #0 + movs r3, #4 + bl sub_0800449C + movs r0, #2 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_0819E93C + + thumb_func_start sub_0819E970 +sub_0819E970: @ 0x0819E970 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #3 + bl sub_0800365C + movs r0, #3 + movs r1, #0 + bl sub_08003B18 + ldr r5, _0819E9D4 + str r5, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r0, _0819E9D8 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0819E9DC + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #8 + movs r3, #0x12 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0819E9E0 + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + movs r2, #8 + movs r3, #0x22 + bl sub_08199AFC + movs r0, #3 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819E9D4: .4byte gUnknown_85DC1CE +_0819E9D8: .4byte gUnknown_85DC0ED +_0819E9DC: .4byte gUnknown_85DC0E8 +_0819E9E0: .4byte gUnknown_85DC0F4 + thumb_func_end sub_0819E970 + + thumb_func_start sub_0819E9E4 +sub_0819E9E4: @ 0x0819E9E4 + push {r4, r5, lr} + sub sp, #0xc + movs r0, #4 + bl sub_0800365C + movs r0, #4 + movs r1, #0 + bl sub_08003B18 + ldr r5, _0819EA34 + str r5, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r0, _0819EA38 + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + str r5, [sp] + str r4, [sp, #4] + ldr r0, _0819EA3C + str r0, [sp, #8] + movs r0, #4 + movs r1, #1 + movs r2, #0 + movs r3, #0x12 + bl sub_08199AFC + movs r0, #4 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819EA34: .4byte gUnknown_85DC1CE +_0819EA38: .4byte gUnknown_85DC10C +_0819EA3C: .4byte gUnknown_85DC10F + thumb_func_end sub_0819E9E4 + + thumb_func_start sub_0819EA40 +sub_0819EA40: @ 0x0819EA40 + push {lr} + sub sp, #0xc + movs r0, #6 + bl sub_0800365C + movs r0, #6 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819EA74 + ldr r0, [r0] + ldrb r1, [r0, #0x14] + cmp r1, #0 + bne _0819EA80 + ldr r0, _0819EA78 + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0819EA7C + str r0, [sp, #8] + movs r0, #6 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + b _0819EA98 + .align 2, 0 +_0819EA74: .4byte gUnknown_3001280 +_0819EA78: .4byte gUnknown_85DC1D1 +_0819EA7C: .4byte gUnknown_85DC121 +_0819EA80: + ldr r0, _0819EAA8 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EAAC + str r0, [sp, #8] + movs r0, #6 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC +_0819EA98: + movs r0, #6 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819EAA8: .4byte gUnknown_85DC1D1 +_0819EAAC: .4byte gUnknown_85DC126 + thumb_func_end sub_0819EA40 + + thumb_func_start sub_0819EAB0 +sub_0819EAB0: @ 0x0819EAB0 + push {lr} + sub sp, #0xc + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819EB08 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + beq _0819EAE2 + cmp r0, #1 + bne _0819EAFA + ldr r0, _0819EB0C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EB10 + str r0, [sp, #8] + movs r0, #5 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08199AFC +_0819EAE2: + ldr r0, _0819EB0C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EB14 + str r0, [sp, #8] + movs r0, #5 + movs r1, #0 + movs r2, #0x20 + movs r3, #0x18 + bl sub_08199AFC +_0819EAFA: + movs r0, #5 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819EB08: .4byte gUnknown_3001280 +_0819EB0C: .4byte gUnknown_85DC1CE +_0819EB10: .4byte gUnknown_85DC113 +_0819EB14: .4byte gUnknown_85DC11C + thumb_func_end sub_0819EAB0 + + thumb_func_start sub_0819EB18 +sub_0819EB18: @ 0x0819EB18 + push {lr} + sub sp, #0xc + movs r0, #3 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819EB70 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + beq _0819EB4A + cmp r0, #1 + bne _0819EB62 + ldr r0, _0819EB74 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EB78 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #8 + bl sub_08199AFC +_0819EB4A: + ldr r0, _0819EB74 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EB7C + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0x20 + movs r3, #0x20 + bl sub_08199AFC +_0819EB62: + movs r0, #3 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819EB70: .4byte gUnknown_3001280 +_0819EB74: .4byte gUnknown_85DC1CE +_0819EB78: .4byte gUnknown_85DC113 +_0819EB7C: .4byte gUnknown_85DC11C + thumb_func_end sub_0819EB18 + + thumb_func_start sub_0819EB80 +sub_0819EB80: @ 0x0819EB80 + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0819EB92 + cmp r1, #1 + beq _0819EBC0 + b _0819EBD8 +_0819EB92: + ldr r0, _0819EBB4 + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #1 + bne _0819EBD8 + ldr r0, _0819EBB8 + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0819EBBC + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0 + movs r3, #8 + bl sub_08199AFC + b _0819EBD8 + .align 2, 0 +_0819EBB4: .4byte gUnknown_3001280 +_0819EBB8: .4byte gUnknown_85DC1CE +_0819EBBC: .4byte gUnknown_85DC113 +_0819EBC0: + ldr r0, _0819EBE8 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EBEC + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0x20 + movs r3, #0x20 + bl sub_08199AFC +_0819EBD8: + movs r0, #3 + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_0819EBE8: .4byte gUnknown_85DC1CE +_0819EBEC: .4byte gUnknown_85DC11C + thumb_func_end sub_0819EB80 + + thumb_func_start sub_0819EBF0 +sub_0819EBF0: @ 0x0819EBF0 + push {r4, lr} + sub sp, #0x18 + ldr r0, _0819EC18 + add r1, sp, #0xc + movs r2, #4 + bl CpuSet + ldr r0, _0819EC1C + ldr r2, [r0] + ldrb r0, [r2, #0x15] + cmp r0, #0 + bne _0819EC24 + add r0, sp, #0xc + ldr r1, _0819EC20 + movs r2, #0xe4 + lsls r2, r2, #1 + adds r1, r1, r2 + ldrh r1, [r1] + strh r1, [r0, #8] + b _0819EC2A + .align 2, 0 +_0819EC18: .4byte gUnknown_85DC1C4 +_0819EC1C: .4byte gUnknown_3001280 +_0819EC20: .4byte gUnknown_20377B4 +_0819EC24: + add r1, sp, #0xc + ldrh r0, [r2, #0x24] + strh r0, [r1, #8] +_0819EC2A: + add r0, sp, #0xc + movs r1, #0xf0 + movs r2, #0xa + bl sub_080A1200 + movs r0, #0 + bl sub_0800365C + ldr r0, _0819EC5C + ldr r0, [r0] + ldrb r1, [r0, #0x14] + cmp r1, #0 + bne _0819EC68 + ldr r0, _0819EC60 + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0819EC64 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x48 + movs r3, #2 + bl sub_08199AFC + b _0819EC80 + .align 2, 0 +_0819EC5C: .4byte gUnknown_3001280 +_0819EC60: .4byte gUnknown_85DC1D1 +_0819EC64: .4byte gUnknown_85DC121 +_0819EC68: + ldr r0, _0819ECAC + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819ECB0 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x48 + movs r3, #2 + bl sub_08199AFC +_0819EC80: + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #7 + bl sub_0800365C + movs r0, #7 + movs r1, #0 + bl sub_08003B18 + ldr r0, _0819ECB4 + ldr r1, [r0] + ldrb r0, [r1, #3] + cmp r0, #2 + bls _0819ECB8 + movs r0, #7 + movs r1, #3 + bl sub_08003528 + b _0819ED20 + .align 2, 0 +_0819ECAC: .4byte gUnknown_85DC1D1 +_0819ECB0: .4byte gUnknown_85DC126 +_0819ECB4: .4byte gUnknown_3001280 +_0819ECB8: + ldrb r2, [r1, #3] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0819ECCC + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819ECC8 + b _0819ECD2 + .align 2, 0 +_0819ECC8: .4byte gUnknown_2024190 +_0819ECCC: + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819ED28 +_0819ECD2: + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0819ED2C + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0819ED30 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #5 + subs r2, r2, r0 + lsls r2, r2, #0x1b + lsrs r2, r2, #0x18 + ldr r0, _0819ED34 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #7 + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + movs r0, #7 + movs r1, #3 + bl sub_08003528 +_0819ED20: + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819ED28: .4byte gUnknown_20243E8 +_0819ED2C: .4byte gUnknown_2021C7C +_0819ED30: .4byte gUnknown_82EA31C +_0819ED34: .4byte gUnknown_85DC1D1 + thumb_func_end sub_0819EBF0 + + thumb_func_start sub_0819ED38 +sub_0819ED38: @ 0x0819ED38 + push {r4, lr} + sub sp, #0xc + ldr r0, _0819ED78 + movs r1, #0xe0 + movs r2, #0xa + bl sub_080A1200 + ldr r0, _0819ED7C + ldr r1, _0819ED80 + movs r2, #5 + bl CpuSet + movs r0, #6 + bl sub_0800365C + ldr r0, _0819ED84 + ldr r0, [r0] + ldrb r1, [r0, #0x14] + cmp r1, #0 + bne _0819ED90 + ldr r0, _0819ED88 + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0819ED8C + str r0, [sp, #8] + movs r0, #6 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + b _0819EDA8 + .align 2, 0 +_0819ED78: .4byte gUnknown_85DC1C4 +_0819ED7C: .4byte gUnknown_2037594 +_0819ED80: .4byte gUnknown_2037974 +_0819ED84: .4byte gUnknown_3001280 +_0819ED88: .4byte gUnknown_85DC1D1 +_0819ED8C: .4byte gUnknown_85DC121 +_0819ED90: + ldr r0, _0819EDC4 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _0819EDC8 + str r0, [sp, #8] + movs r0, #6 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC +_0819EDA8: + movs r0, #6 + movs r1, #3 + bl sub_08003528 + ldr r0, _0819EDCC + ldr r1, [r0] + ldrb r0, [r1, #3] + cmp r0, #2 + bls _0819EDD0 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _0819EE38 + .align 2, 0 +_0819EDC4: .4byte gUnknown_85DC1D1 +_0819EDC8: .4byte gUnknown_85DC126 +_0819EDCC: .4byte gUnknown_3001280 +_0819EDD0: + ldrb r2, [r1, #3] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0819EDE4 + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819EDE0 + b _0819EDEA + .align 2, 0 +_0819EDE0: .4byte gUnknown_2024190 +_0819EDE4: + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _0819EE40 +_0819EDEA: + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r4, _0819EE44 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _0819EE48 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #5 + subs r2, r2, r0 + lsls r2, r2, #0x1b + lsrs r2, r2, #0x18 + ldr r0, _0819EE4C + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + movs r0, #1 + movs r1, #3 + bl sub_08003528 +_0819EE38: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819EE40: .4byte gUnknown_20243E8 +_0819EE44: .4byte gUnknown_2021C7C +_0819EE48: .4byte gUnknown_82EA31C +_0819EE4C: .4byte gUnknown_85DC1D1 + thumb_func_end sub_0819ED38 + + thumb_func_start sub_0819EE50 +sub_0819EE50: @ 0x0819EE50 + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r6, _0819EE74 + ldr r0, [r6] + ldrb r4, [r0, #3] + adds r5, r4, #0 + movs r0, #8 + movs r1, #0 + bl sub_08003B18 + cmp r4, #2 + bls _0819EE78 + movs r0, #8 + movs r1, #2 + bl sub_08003528 + b _0819EF20 + .align 2, 0 +_0819EE74: .4byte gUnknown_3001280 +_0819EE78: + movs r0, #8 + bl sub_0800365C + ldr r0, [r6] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0819EE94 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _0819EE90 + b _0819EE9A + .align 2, 0 +_0819EE90: .4byte gUnknown_2024190 +_0819EE94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _0819EF28 +_0819EE9A: + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0 + ldr r1, _0819EF2C + lsls r3, r5, #3 + subs r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0819EEEA + adds r6, r1, #0 +_0819EEC4: + mov r2, sp + adds r2, r2, r4 + adds r2, #0xc + subs r1, r3, r5 + lsls r1, r1, #2 + adds r0, r4, r1 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r1, r4, r1 + adds r1, r1, r6 + ldrb r0, [r1] + cmp r0, #0 + beq _0819EEEA + cmp r4, #4 + bls _0819EEC4 +_0819EEEA: + mov r1, sp + adds r1, r1, r4 + adds r1, #0xc + movs r0, #0xff + strb r0, [r1] + ldr r1, _0819EF30 + add r0, sp, #0xc + bl sub_080088D8 + movs r3, #5 + subs r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #8 + movs r1, #1 + add r2, sp, #0xc + bl sub_0800449C + movs r0, #8 + movs r1, #2 + bl sub_08003528 +_0819EF20: + add sp, #0x18 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819EF28: .4byte gUnknown_20243E8 +_0819EF2C: .4byte gUnknown_854069C +_0819EF30: .4byte gUnknown_85C8C66 + thumb_func_end sub_0819EE50 + + thumb_func_start sub_0819EF34 +sub_0819EF34: @ 0x0819EF34 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r4, _0819EF50 + ldr r3, [r4] + ldrb r0, [r3, #0x15] + cmp r0, #1 + beq _0819EF80 + cmp r2, #0 + beq _0819EF54 + cmp r2, #1 + beq _0819EF6C + b _0819EF80 + .align 2, 0 +_0819EF50: .4byte gUnknown_3001280 +_0819EF54: + strb r2, [r3, #0x14] + ldr r0, [r4] + strb r2, [r0, #3] + ldr r1, [r4] + movs r0, #4 + strb r0, [r1, #0x17] + ldr r1, [r4] + ldr r0, _0819EF68 + b _0819EF7E + .align 2, 0 +_0819EF68: .4byte gUnknown_85DC1D4 +_0819EF6C: + movs r1, #0 + strb r2, [r3, #0x14] + ldr r0, [r4] + strb r1, [r0, #3] + ldr r1, [r4] + movs r0, #5 + strb r0, [r1, #0x17] + ldr r1, [r4] + ldr r0, _0819EF88 +_0819EF7E: + str r0, [r1, #0x18] +_0819EF80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819EF88: .4byte gUnknown_85DC1F4 + thumb_func_end sub_0819EF34 + + thumb_func_start sub_0819EF8C +sub_0819EF8C: @ 0x0819EF8C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0819EFAC + ldr r2, _0819EFB0 + ldr r1, _0819EFB4 + ldr r1, [r1] + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r3] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0819EFAC: .4byte gUnknown_300127C +_0819EFB0: .4byte gUnknown_85DC158 +_0819EFB4: .4byte gUnknown_3001280 + thumb_func_end sub_0819EF8C + + thumb_func_start sub_0819EFB8 +sub_0819EFB8: @ 0x0819EFB8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _0819EFF4 + ldr r1, [r5] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + movs r2, #1 + bl sub_0819F2E4 + ldr r0, [r5] + ldrb r1, [r0, #3] + movs r5, #0 + strb r1, [r0, #0x12] + movs r0, #3 + bl sub_0819E76C + ldr r1, _0819EFF8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r5, [r0, #8] + ldr r1, _0819EFFC + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819EFF4: .4byte gUnknown_3001280 +_0819EFF8: .4byte gUnknown_3005B60 +_0819EFFC: .4byte sub_0819D6D4 + thumb_func_end sub_0819EFB8 + + thumb_func_start sub_0819F000 +sub_0819F000: @ 0x0819F000 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819F018 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #6 + strh r0, [r1, #8] + ldr r0, _0819F01C + str r0, [r1] + bx lr + .align 2, 0 +_0819F018: .4byte gUnknown_3005B60 +_0819F01C: .4byte sub_0819C5F4 + thumb_func_end sub_0819F000 + + thumb_func_start sub_0819F020 +sub_0819F020: @ 0x0819F020 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _0819F060 + ldr r1, [r0] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + movs r2, #1 + bl sub_0819F2E4 + movs r0, #3 + bl sub_0819E76C + ldr r1, _0819F064 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + ldr r2, _0819F068 + lsrs r1, r2, #0x10 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + movs r1, #1 + strh r1, [r0, #0x12] + ldr r1, _0819F06C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819F060: .4byte gUnknown_3001280 +_0819F064: .4byte gUnknown_3005B60 +_0819F068: .4byte sub_0819CB28 +_0819F06C: .4byte sub_0819D458 + thumb_func_end sub_0819F020 + + thumb_func_start sub_0819F070 +sub_0819F070: @ 0x0819F070 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _0819F090 + ldr r1, _0819F094 + ldr r2, [r1] + ldrb r1, [r2, #3] + ldr r2, [r2, #0x18] + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r1, [r1, #4] + str r1, [r3] + bl _call_via_r1 + pop {r0} + bx r0 + .align 2, 0 +_0819F090: .4byte gUnknown_300127C +_0819F094: .4byte gUnknown_3001280 + thumb_func_end sub_0819F070 + + thumb_func_start sub_0819F098 +sub_0819F098: @ 0x0819F098 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819F0BC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _0819F0C0 + lsrs r0, r2, #0x10 + movs r3, #0 + strh r0, [r1, #0x14] + strh r2, [r1, #0x16] + strh r3, [r1, #8] + strh r3, [r1, #0x12] + ldr r0, _0819F0C4 + str r0, [r1] + bx lr + .align 2, 0 +_0819F0BC: .4byte gUnknown_3005B60 +_0819F0C0: .4byte sub_0819C90C +_0819F0C4: .4byte sub_0819D270 + thumb_func_end sub_0819F098 + + thumb_func_start sub_0819F0C8 +sub_0819F0C8: @ 0x0819F0C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819F0EC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r2, _0819F0F0 + lsrs r0, r2, #0x10 + movs r3, #0 + strh r0, [r1, #0x14] + strh r2, [r1, #0x16] + strh r3, [r1, #0x12] + strh r3, [r1, #8] + ldr r0, _0819F0F4 + str r0, [r1] + bx lr + .align 2, 0 +_0819F0EC: .4byte gUnknown_3005B60 +_0819F0F0: .4byte sub_0819D6D4 +_0819F0F4: .4byte sub_0819D270 + thumb_func_end sub_0819F0C8 + + thumb_func_start sub_0819F0F8 +sub_0819F0F8: @ 0x0819F0F8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r5, _0819F120 + ldr r1, [r5] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0819F12C + ldr r3, _0819F124 + lsls r4, r6, #2 + adds r0, r4, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + ldr r2, _0819F128 + lsrs r1, r2, #0x10 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + movs r1, #2 + strh r1, [r0, #0x12] + b _0819F17E + .align 2, 0 +_0819F120: .4byte gUnknown_3001280 +_0819F124: .4byte gUnknown_3005B60 +_0819F128: .4byte sub_0819CA1C +_0819F12C: + ldrb r0, [r1, #3] + bl sub_0819F488 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bne _0819F164 + ldr r1, [r5] + adds r0, r1, #0 + adds r0, #0x2d + adds r1, #0x30 + movs r2, #1 + bl sub_0819F1A0 + ldr r1, _0819F15C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0, #8] + strh r4, [r0, #0x12] + ldr r1, _0819F160 + b _0819F18A + .align 2, 0 +_0819F15C: .4byte gUnknown_3005B60 +_0819F160: .4byte sub_0819F374 +_0819F164: + ldr r4, _0819F194 + lsls r5, r6, #2 + adds r0, r5, r6 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r2, _0819F198 + lsrs r1, r2, #0x10 + movs r3, #0 + strh r1, [r0, #0x14] + strh r2, [r0, #0x16] + strh r3, [r0, #0x12] + adds r3, r4, #0 + adds r4, r5, #0 +_0819F17E: + adds r0, r4, r6 + lsls r0, r0, #3 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #8] + ldr r1, _0819F19C +_0819F18A: + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F194: .4byte gUnknown_3005B60 +_0819F198: .4byte sub_0819C9BC +_0819F19C: .4byte sub_0819D270 + thumb_func_end sub_0819F0F8 + + thumb_func_start sub_0819F1A0 +sub_0819F1A0: @ 0x0819F1A0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _0819F1E4 + movs r1, #0x78 + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + strb r0, [r4] + ldr r2, _0819F1E8 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0819F1EC + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r5, [r0, #0x3c] + movs r0, #1 + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F1E4: .4byte gUnknown_85DC09C +_0819F1E8: .4byte gUnknown_20205AC +_0819F1EC: .4byte sub_0819F4EC + thumb_func_end sub_0819F1A0 + + thumb_func_start sub_0819F1F0 +sub_0819F1F0: @ 0x0819F1F0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0x10 + ldr r0, _0819F2D0 + movs r1, #0x78 + movs r2, #0x40 + movs r3, #1 + bl sub_08006B0C + ldr r6, _0819F2D4 + ldr r1, [r6] + adds r1, #0x2d + movs r2, #0 + mov sl, r2 + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x2d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0819F2D8 + mov r8, r1 + add r0, r8 + movs r1, #2 + bl sub_08007F70 + ldr r0, [r6] + ldrb r1, [r0, #3] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _0819F2DC + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov sb, r0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r2, r0, #0 + movs r0, #0x58 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + ldr r0, _0819F2E0 + str r0, [sp, #0xc] + adds r0, r5, #0 + mov r1, sb + movs r3, #1 + bl sub_0818D504 + ldr r1, [r6] + adds r1, #0x2c + strb r0, [r1] + ldr r0, [r6] + adds r0, #0x2c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x28 + mov r2, sl + strb r2, [r0] + ldr r0, [r6] + adds r0, #0x2c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x29 + strb r2, [r0] + ldr r0, [r6] + adds r0, #0x2d + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F2D0: .4byte gUnknown_85DC09C +_0819F2D4: .4byte gUnknown_3001280 +_0819F2D8: .4byte gUnknown_20205AC +_0819F2DC: .4byte gUnknown_2024190 +_0819F2E0: .4byte 0x0000FFFF + thumb_func_end sub_0819F1F0 + + thumb_func_start sub_0819F2E4 +sub_0819F2E4: @ 0x0819F2E4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r5, r2, #0x18 + lsrs r5, r5, #0x18 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0818D54C + ldr r0, _0819F328 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819F32C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r5, [r1, #0x16] + lsrs r4, r4, #8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + strh r4, [r1, #0x14] + ldr r1, [r1] + bl _call_via_r1 + movs r0, #1 + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F328: .4byte sub_0819F6A0 +_0819F32C: .4byte gUnknown_3005B60 + thumb_func_end sub_0819F2E4 + + thumb_func_start sub_0819F330 +sub_0819F330: @ 0x0819F330 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_0818D54C + ldr r5, _0819F370 + lsls r4, r4, #0x10 + lsrs r1, r4, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + lsrs r4, r4, #0x18 + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + bl sub_08006E00 + movs r0, #0 + strb r0, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F370: .4byte gUnknown_20205AC + thumb_func_end sub_0819F330 + + thumb_func_start sub_0819F374 +sub_0819F374: @ 0x0819F374 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _0819F3A8 + ldr r0, [r1] + adds r0, #0x30 + ldrb r0, [r0] + adds r3, r1, #0 + cmp r0, #1 + beq _0819F476 + ldr r2, _0819F3AC + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + movs r2, #8 + ldrsh r0, [r0, r2] + adds r5, r1, #0 + cmp r0, #4 + bhi _0819F476 + lsls r0, r0, #2 + ldr r1, _0819F3B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0819F3A8: .4byte gUnknown_3001280 +_0819F3AC: .4byte gUnknown_3005B60 +_0819F3B0: .4byte _0819F3B4 +_0819F3B4: @ jump table + .4byte _0819F3C8 @ case 0 + .4byte _0819F3E4 @ case 1 + .4byte _0819F418 @ case 2 + .4byte _0819F434 @ case 3 + .4byte _0819F454 @ case 4 +_0819F3C8: + ldr r0, _0819F3DC + bl sub_0819E93C + ldr r0, _0819F3E0 + ldr r0, [r0] + adds r0, #0x20 + movs r1, #0 + strb r1, [r0] + b _0819F43A + .align 2, 0 +_0819F3DC: .4byte gUnknown_85DC141 +_0819F3E0: .4byte gUnknown_3001280 +_0819F3E4: + ldr r0, _0819F410 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0819F3F8 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0819F476 +_0819F3F8: + movs r0, #5 + bl sub_080A306C + ldr r0, _0819F414 + ldr r1, [r0] + ldr r0, [r1, #0x2c] + adds r1, #0x30 + movs r2, #1 + bl sub_0819F2E4 + b _0819F43A + .align 2, 0 +_0819F410: .4byte gUnknown_3002360 +_0819F414: .4byte gUnknown_3001280 +_0819F418: + ldr r0, [r3] + adds r0, #0x30 + ldrb r0, [r0] + cmp r0, #1 + beq _0819F476 + movs r0, #5 + movs r1, #0 + bl sub_08003B18 + movs r0, #5 + movs r1, #2 + bl sub_08003528 + b _0819F43A +_0819F434: + ldr r0, _0819F44C + bl sub_0819E93C +_0819F43A: + ldr r0, _0819F450 + adds r1, r5, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _0819F476 + .align 2, 0 +_0819F44C: .4byte gUnknown_85DC0D5 +_0819F450: .4byte gUnknown_3005B60 +_0819F454: + bl sub_0819ED38 + bl sub_0819E7FC + ldr r0, _0819F47C + ldr r0, [r0] + adds r0, #0x22 + movs r1, #1 + strb r1, [r0] + ldr r1, _0819F480 + adds r0, r5, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #0x12] + strh r1, [r0, #8] + ldr r1, _0819F484 + str r1, [r0] +_0819F476: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819F47C: .4byte gUnknown_3001280 +_0819F480: .4byte gUnknown_3005B60 +_0819F484: .4byte sub_0819CB28 + thumb_func_end sub_0819F374 + + thumb_func_start sub_0819F488 +sub_0819F488: @ 0x0819F488 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x64 + muls r0, r1, r0 + ldr r1, _0819F4CC + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r4, #0 +_0819F4A4: + ldr r0, _0819F4D0 + ldr r0, [r0] + ldrb r0, [r0, #0x12] + cmp r4, r0 + beq _0819F4D8 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _0819F4D4 + adds r0, r0, r1 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r5 + bne _0819F4D8 + movs r0, #1 + b _0819F4E4 + .align 2, 0 +_0819F4CC: .4byte gUnknown_20243E8 +_0819F4D0: .4byte gUnknown_3001280 +_0819F4D4: .4byte gUnknown_2024190 +_0819F4D8: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _0819F4A4 + movs r0, #0 +_0819F4E4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0819F488 + + thumb_func_start sub_0819F4EC +sub_0819F4EC: @ 0x0819F4EC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819F52C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0819F534 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _0819F538 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldrh r2, [r4, #0x3c] + strh r2, [r1, #0x16] + ldr r1, [r1] + bl _call_via_r1 + ldr r0, _0819F53C + str r0, [r4, #0x1c] +_0819F52C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0819F534: .4byte sub_0819F588 +_0819F538: .4byte gUnknown_3005B60 +_0819F53C: .4byte sub_08007140 + thumb_func_end sub_0819F4EC + + thumb_func_start sub_0819F540 +sub_0819F540: @ 0x0819F540 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0819F580 + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _0819F574 + ldr r0, _0819F570 + ldr r0, [r0] + adds r0, #0x30 + movs r1, #0 + strb r1, [r0] + b _0819F57A + .align 2, 0 +_0819F570: .4byte gUnknown_3001280 +_0819F574: + movs r0, #0 + bl sub_0819BB08 +_0819F57A: + adds r0, r4, #0 + bl sub_08006E00 +_0819F580: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819F540 + + thumb_func_start sub_0819F588 +sub_0819F588: @ 0x0819F588 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0819F5AC + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _0819F606 + cmp r0, #1 + bgt _0819F5B0 + cmp r0, #0 + beq _0819F5B6 + b _0819F668 + .align 2, 0 +_0819F5AC: .4byte gUnknown_3005B60 +_0819F5B0: + cmp r0, #2 + beq _0819F628 + b _0819F668 +_0819F5B6: + movs r0, #0x58 + strh r0, [r4, #0xe] + movs r0, #0x98 + strh r0, [r4, #0x38] + movs r0, #0x40 + strh r0, [r4, #0x12] + movs r0, #0x41 + strh r0, [r4, #0x18] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x38] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + b _0819F692 +_0819F606: + movs r0, #3 + bl sub_08001B48 + ldr r1, _0819F620 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _0819F624 + movs r0, #0x52 + bl sub_08001144 + b _0819F692 + .align 2, 0 +_0819F620: .4byte 0x00001248 +_0819F624: .4byte 0x0000040B +_0819F628: + ldrh r0, [r4, #0x12] + subs r0, #4 + strh r0, [r4, #0x12] + ldrh r1, [r4, #0x18] + adds r1, #4 + strh r1, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x20 + ble _0819F644 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5f + ble _0819F64C +_0819F644: + movs r0, #0x20 + strh r0, [r4, #0x12] + movs r0, #0x60 + strh r0, [r4, #0x18] +_0819F64C: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r2, #0x12 + ldrsh r0, [r4, r2] + cmp r0, #0x20 + bne _0819F698 + b _0819F692 +_0819F668: + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _0819F688 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #0x16 + ldrsh r0, [r1, r2] + cmp r0, #1 + bne _0819F68C + bl sub_0819F7CC + b _0819F698 + .align 2, 0 +_0819F688: .4byte gUnknown_3005B60 +_0819F68C: + bl sub_0819BA58 + b _0819F698 +_0819F692: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0819F698: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819F588 + + thumb_func_start sub_0819F6A0 +sub_0819F6A0: @ 0x0819F6A0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _0819F724 + adds r4, r0, r1 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0819F730 + cmp r0, #1 + beq _0819F780 + movs r0, #3 + bl sub_08001B5C + ldr r3, _0819F728 + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r4, #0x16] + strh r1, [r0, #0x3c] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _0819F72C + str r1, [r0] + movs r0, #0x14 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #1 + bl sub_08007F70 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + adds r0, r5, #0 + bl sub_080A8964 + b _0819F7C4 + .align 2, 0 +_0819F724: .4byte gUnknown_3005B60 +_0819F728: .4byte gUnknown_20205AC +_0819F72C: .4byte sub_0819F540 +_0819F730: + movs r0, #0x58 + strh r0, [r4, #0xe] + movs r0, #0x98 + strh r0, [r4, #0x38] + movs r0, #0x20 + strh r0, [r4, #0x12] + movs r0, #0x60 + strh r0, [r4, #0x18] + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + ldrh r1, [r4, #0xe] + lsls r1, r1, #8 + ldrh r0, [r4, #0x38] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x40 + bl sub_08001144 + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x37 + bl sub_08001144 + b _0819F7BE +_0819F780: + ldrh r0, [r4, #0x12] + adds r0, #4 + strh r0, [r4, #0x12] + ldrh r1, [r4, #0x18] + subs r1, #4 + strh r1, [r4, #0x18] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3f + bgt _0819F79C + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x41 + bgt _0819F7A4 +_0819F79C: + movs r0, #0x40 + strh r0, [r4, #0x12] + movs r0, #0x41 + strh r0, [r4, #0x18] +_0819F7A4: + ldrh r1, [r4, #0x12] + lsls r1, r1, #8 + ldrh r0, [r4, #0x18] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x44 + bl sub_08001144 + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bne _0819F7C4 +_0819F7BE: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_0819F7C4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819F6A0 + + thumb_func_start sub_0819F7CC +sub_0819F7CC: @ 0x0819F7CC + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, _0819F7E4 + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0819F7EC + ldrb r1, [r1, #3] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0819F7E8 + b _0819F7F4 + .align 2, 0 +_0819F7E4: .4byte gUnknown_3001280 +_0819F7E8: .4byte gUnknown_2024190 +_0819F7EC: + ldrb r1, [r1, #3] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _0819F878 +_0819F7F4: + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806A058 + adds r1, r0, #0 + movs r0, #0x58 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + ldr r0, _0819F87C + str r0, [sp, #0xc] + adds r0, r4, #0 + adds r2, r5, #0 + movs r3, #1 + bl sub_0818D504 + ldr r2, _0819F880 + ldr r1, [r2] + adds r1, #0x2c + movs r3, #0 + strb r0, [r1] + ldr r4, _0819F884 + ldr r0, [r2] + adds r0, #0x2c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x28 + strb r3, [r0] + ldr r0, [r2] + adds r0, #0x2c + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x29 + strb r3, [r0] + ldr r0, [r2] + adds r0, #0x30 + strb r3, [r0] + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_0819F878: .4byte gUnknown_20243E8 +_0819F87C: .4byte 0x0000FFFF +_0819F880: .4byte gUnknown_3001280 +_0819F884: .4byte gUnknown_20205AC + thumb_func_end sub_0819F7CC + + thumb_func_start sub_0819F888 +sub_0819F888: @ 0x0819F888 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _0819F914 + ldr r1, [r2] + lsls r0, r5, #4 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xde + ldrb r1, [r1] + movs r6, #0 + adds r7, r2, #0 + ldr r0, _0819F918 + mov r8, r0 + cmp r1, #0 + beq _0819F8C8 +_0819F8AE: + adds r0, r1, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r1, #0 + beq _0819F8C8 + cmp r6, #3 + bls _0819F8AE +_0819F8C8: + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r1, [r7] + adds r1, r4, r1 + movs r0, #0x8a + lsls r0, r0, #1 + adds r1, r1, r0 + mov r0, r8 + bl sub_08008888 + ldr r0, _0819F91C + ldr r1, [r7] + adds r1, r1, r4 + adds r1, #0xde + ldrb r1, [r1] + movs r2, #1 + adds r3, r6, #0 + bl sub_080089D8 + ldr r1, _0819F920 + ldr r0, [r7] + adds r0, r0, r4 + adds r0, #0xdc + ldrb r0, [r0] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x19 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _0819F924 + bl sub_08008BCC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819F914: .4byte gUnknown_3005AF0 +_0819F918: .4byte gUnknown_2021C40 +_0819F91C: .4byte gUnknown_2021C54 +_0819F920: .4byte gUnknown_85DC95C +_0819F924: .4byte gUnknown_2021C7C + thumb_func_end sub_0819F888 + + thumb_func_start sub_0819F928 +sub_0819F928: @ 0x0819F928 + push {lr} + bl sub_080988C4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819F928 + + thumb_func_start sub_0819F934 +sub_0819F934: @ 0x0819F934 + push {r4, r5, lr} + adds r3, r0, #0 + movs r2, #0 + adds r4, r3, #0 + adds r4, #0x28 + ldr r0, _0819F974 + adds r5, r0, #0 +_0819F942: + lsls r0, r2, #1 + adds r0, r4, r0 + ldrh r1, [r0] + orrs r1, r5 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819F942 + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #0xff + strb r0, [r1] + ldrb r1, [r3] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_0819F974: .4byte 0x0000FFFF + thumb_func_end sub_0819F934 + + thumb_func_start sub_0819F978 +sub_0819F978: @ 0x0819F978 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r3, _0819FA78 + ldr r1, [r3] + adds r1, #0xb2 + ldrb r2, [r1] + movs r0, #0x19 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r0, #0 + mov ip, r0 + adds r5, r3, #0 + mov r8, r0 + ldr r1, _0819FA7C + mov sl, r1 +_0819F99E: + movs r2, #0 + mov r3, ip + lsls r7, r3, #4 + movs r4, #1 + add r4, ip + mov sb, r4 + adds r0, r7, r3 + lsls r3, r0, #2 +_0819F9AE: + ldr r1, [r5] + lsls r0, r2, #1 + adds r0, r0, r3 + movs r4, #0x82 + lsls r4, r4, #1 + adds r1, r1, r4 + adds r1, r1, r0 + ldrh r0, [r1] + mov r4, sl + orrs r0, r4 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _0819F9AE + ldr r2, [r5] + mov r0, ip + adds r3, r7, r0 + lsls r3, r3, #2 + adds r2, r2, r3 + adds r2, #0xdc + ldrb r1, [r2] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + adds r0, r0, r3 + movs r1, #0x8a + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r1, [r5] + adds r1, r1, r3 + adds r1, #0xdc + ldrb r2, [r1] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r3 + adds r0, #0xde + mov r4, r8 + strb r4, [r0] + ldr r0, [r5] + adds r0, r0, r3 + adds r0, #0xdd + strb r4, [r0] + movs r2, #0 + ldr r6, _0819FA78 + movs r4, #0x88 + lsls r4, r4, #1 +_0819FA20: + ldr r0, [r6] + adds r1, r2, r3 + adds r0, r0, r4 + adds r0, r0, r1 + mov r1, r8 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _0819FA20 + ldr r0, [r5] + mov r3, ip + adds r2, r7, r3 + lsls r2, r2, #2 + adds r0, r0, r2 + ldr r4, _0819FA80 + ldrb r1, [r4] + ldr r3, _0819FA84 + adds r0, r0, r3 + strb r1, [r0] + ldr r0, [r5] + movs r4, #0x8e + lsls r4, r4, #1 + adds r0, r0, r4 + adds r0, r0, r2 + mov r1, r8 + str r1, [r0] + mov r3, sb + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #3 + bls _0819F99E + bl sub_081A0744 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819FA78: .4byte gUnknown_3005AF0 +_0819FA7C: .4byte 0x0000FFFF +_0819FA80: .4byte gUnknown_829BDA5 +_0819FA84: .4byte 0x0000011B + thumb_func_end sub_0819F978 + + thumb_func_start sub_0819FA88 +sub_0819FA88: @ 0x0819FA88 + ldr r0, _0819FA9C + ldr r0, [r0] + adds r0, #0xb1 + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_0819FA9C: .4byte gUnknown_3005AF0 + thumb_func_end sub_0819FA88 + + thumb_func_start sub_0819FAA0 +sub_0819FAA0: @ 0x0819FAA0 + push {r4, r5, lr} + ldr r2, _0819FAE0 + ldr r0, [r2] + adds r0, #0xde + ldrb r0, [r0] + cmp r0, #0 + bne _0819FAE8 + adds r4, r2, #0 + ldr r5, _0819FAE4 +_0819FAB2: + bl sub_0806F050 + ldr r2, [r4] + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + lsrs r1, r1, #0x10 + adds r1, r1, r5 + ldrb r0, [r1] + adds r2, #0xb0 + strb r0, [r2] + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xb0 + adds r0, #0xdc + ldrb r0, [r0] + lsls r0, r0, #0x1b + ldrb r1, [r1] + lsrs r0, r0, #0x1b + cmp r1, r0 + beq _0819FAB2 + b _0819FB10 + .align 2, 0 +_0819FAE0: .4byte gUnknown_3005AF0 +_0819FAE4: .4byte gUnknown_85DCB74 +_0819FAE8: + adds r4, r2, #0 +_0819FAEA: + bl sub_0806F050 + ldr r2, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xf + ands r0, r1 + adds r2, #0xb0 + strb r0, [r2] + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xb0 + adds r0, #0xdc + ldrb r0, [r0] + lsls r0, r0, #0x1b + ldrb r1, [r1] + lsrs r0, r0, #0x1b + cmp r1, r0 + beq _0819FAEA +_0819FB10: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_0819FAA0 + + thumb_func_start sub_0819FB18 +sub_0819FB18: @ 0x0819FB18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _0819FB34 + ldr r2, [r1] + adds r2, #0xb1 + movs r1, #3 + ands r0, r1 + ldrb r3, [r2] + subs r1, #7 + ands r1, r3 + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_0819FB34: .4byte gUnknown_3005AF0 + thumb_func_end sub_0819FB18 + + thumb_func_start sub_0819FB38 +sub_0819FB38: @ 0x0819FB38 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + movs r5, #0 +_0819FB3E: + mov r1, sp + adds r0, r1, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _0819FB3E + movs r5, #0 +_0819FB50: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r7, sp + adds r2, r7, r4 + ldrb r3, [r2] + adds r1, r7, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x31 + bls _0819FB50 + movs r5, #0 + ldr r6, _0819FBCC + movs r4, #0xf +_0819FB94: + ldr r3, [r6] + adds r3, #0xb4 + adds r3, r3, r5 + lsls r2, r5, #1 + mov r1, sp + adds r0, r1, r2 + ldrb r0, [r0] + adds r1, r4, #0 + ands r1, r0 + lsls r1, r1, #4 + adds r2, #1 + mov r7, sp + adds r0, r7, r2 + ldrb r2, [r0] + adds r0, r4, #0 + ands r0, r2 + orrs r1, r0 + strb r1, [r3] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0819FB94 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819FBCC: .4byte gUnknown_3005AF0 + thumb_func_end sub_0819FB38 + + thumb_func_start sub_0819FBD0 +sub_0819FBD0: @ 0x0819FBD0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r5, #0 + cmp r0, #2 + bne _0819FC24 + ldr r6, _0819FC20 +_0819FBDE: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + movs r2, #0 + ldr r1, [r6] + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r4, r0, #1 + adds r1, #2 +_0819FBFE: + lsls r0, r2, #1 + adds r0, r0, r4 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, #0 + beq _0819FC10 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0819FC10: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #4 + bls _0819FBFE + cmp r3, #3 + bhi _0819FBDE + b _0819FC32 + .align 2, 0 +_0819FC20: .4byte gUnknown_300602C +_0819FC24: + cmp r0, #1 + bne _0819FC32 + ldrb r0, [r2] + adds r1, r1, r0 + ldrb r5, [r1] + adds r0, #1 + strb r0, [r2] +_0819FC32: + adds r0, r5, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_0819FBD0 + + thumb_func_start sub_0819FC3C +sub_0819FC3C: @ 0x0819FC3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + movs r5, #0 + mov r0, sp + adds r0, #0xc + str r0, [sp, #0x14] + mov r1, sp + adds r1, #0x10 + str r1, [sp, #0x18] + adds r1, r0, #0 +_0819FC58: + adds r0, r1, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _0819FC58 + movs r5, #0 + ldr r6, [sp, #0x14] +_0819FC6A: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r6, r4 + ldrb r3, [r2] + adds r1, r6, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _0819FC6A + movs r5, #0 + ldr r2, _0819FE64 +_0819FCA8: + mov r4, sp + adds r1, r4, r5 + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _0819FCA8 + movs r5, #0 +_0819FCBE: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xa + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r6, sp + adds r2, r6, r4 + ldrb r3, [r2] + adds r1, r6, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0x31 + bls _0819FCBE + ldr r4, _0819FE68 + movs r0, #0x30 + bl sub_08000BDC + str r0, [r4] + movs r1, #0 + strb r1, [r0] + movs r5, #0 + movs r2, #4 +_0819FD0C: + movs r3, #0 +_0819FD0E: + ldr r0, [r4] + lsls r1, r3, #2 + adds r1, r1, r3 + adds r1, r5, r1 + adds r0, #0x20 + adds r0, r0, r1 + strb r2, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _0819FD0E + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _0819FD0C + movs r0, #0 + ldr r7, [sp, #0x18] + strb r0, [r7] + movs r5, #0 +_0819FD38: + ldr r0, _0819FE6C + ldr r3, [r0] + lsls r4, r5, #2 + adds r3, r3, r4 + mov r1, sp + adds r6, r1, r5 + ldrb r0, [r6] + adds r3, #0xb8 + movs r2, #3 + ands r2, r0 + ldrb r0, [r3] + movs r7, #4 + rsbs r7, r7, #0 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldrb r0, [r6] + adds r5, #1 + str r5, [sp, #0x1c] + mov r8, r4 + cmp r0, #3 + beq _0819FE3A + ldrb r0, [r6] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + bl sub_0819FBD0 + ldr r1, _0819FE6C + ldr r3, [r1] + add r3, r8 + adds r3, #0xb8 + movs r2, #3 + ands r2, r0 + lsls r2, r2, #2 + ldrb r0, [r3] + movs r4, #0xd + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldr r7, _0819FE6C + ldr r0, [r7] + add r0, r8 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r7, r0, #0x1e + ldrb r0, [r6] + cmp r0, #2 + bne _0819FE3A + lsls r0, r7, #2 + adds r0, r0, r7 + mov sl, r0 + ldr r0, _0819FE68 + mov sb, r0 +_0819FDAA: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r1, #3 + ands r4, r1 + movs r3, #0 + mov r6, sb + ldr r2, [r6] + ldrb r0, [r2] + adds r1, r0, #1 + lsls r5, r7, #2 + cmp r3, r1 + bge _0819FDEA + adds r2, #0x20 + mov r6, sl + adds r0, r2, r6 + ldrb r0, [r0] + cmp r0, r4 + beq _0819FDEA + adds r6, r1, #0 + adds r1, r5, r7 +_0819FDD6: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r6 + bge _0819FDEA + adds r0, r3, r1 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r4 + bne _0819FDD6 +_0819FDEA: + mov r1, sb + ldr r0, [r1] + ldrb r0, [r0] + adds r0, #1 + ldr r1, _0819FE68 + cmp r3, r0 + bne _0819FDAA + ldr r0, [r1] + orrs r5, r7 + ldrb r2, [r0] + adds r1, r5, r2 + adds r0, #0x20 + adds r0, r0, r1 + strb r4, [r0] + ldr r6, _0819FE6C + ldr r2, [r6] + add r2, r8 + adds r2, #0xb8 + movs r7, #3 + ands r4, r7 + lsls r3, r4, #4 + ldrb r0, [r2] + movs r4, #0x31 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldr r0, [r6] + add r0, r8 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + bl sub_0819FE70 + ldr r1, [r6] + add r1, r8 + adds r1, #0xba + strh r0, [r1] +_0819FE3A: + ldr r6, [sp, #0x1c] + lsls r0, r6, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #8 + bhi _0819FE46 + b _0819FD38 +_0819FE46: + ldr r4, _0819FE68 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_0819FE64: .4byte gUnknown_85DCAFF +_0819FE68: .4byte gUnknown_300602C +_0819FE6C: .4byte gUnknown_3005AF0 + thumb_func_end sub_0819FC3C + + thumb_func_start sub_0819FE70 +sub_0819FE70: @ 0x0819FE70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0 + str r0, [sp, #0xc] + movs r7, #0 + ldr r1, [sp] + cmp r1, #2 + bhi _0819FEBC + ldr r2, _0819FEB8 + ldr r1, [r2] + adds r0, r1, #0 + adds r0, #0xb4 + ldr r3, [sp] + adds r0, r0, r3 + ldrb r4, [r0] + adds r1, #0xb2 + ldrb r0, [r1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + asrs r0, r3 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + asrs r4, r0 + movs r0, #0xf + ands r4, r0 + adds r0, r2, #0 + b _0819FEC0 + .align 2, 0 +_0819FEB8: .4byte gUnknown_3005AF0 +_0819FEBC: + movs r4, #0 + ldr r0, _0819FF80 +_0819FEC0: + ldr r3, _0819FF84 + lsls r2, r4, #1 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r3, #0xc + adds r2, r2, r3 + ldrh r2, [r2] + str r2, [sp, #8] + ldr r1, _0819FF88 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r3, #0 + adds r4, #0xb1 + ldrb r1, [r4] + movs r0, #3 + ands r0, r1 + movs r5, #0x3c + cmp r0, #1 + bne _0819FEF6 + movs r5, #0x32 +_0819FEF6: + ldrh r1, [r6] + ldr r4, _0819FF8C + cmp r1, r4 + beq _0819FF28 + movs r2, #0xfe + lsls r2, r2, #8 + adds r0, r2, #0 + ands r0, r1 + lsls r1, r5, #9 + cmp r0, r1 + bgt _0819FF28 + adds r5, r2, #0 + adds r2, r1, #0 +_0819FF10: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #1 + adds r0, r0, r6 + ldrh r1, [r0] + cmp r1, r4 + beq _0819FF28 + adds r0, r5, #0 + ands r0, r1 + cmp r0, r2 + ble _0819FF10 +_0819FF28: + adds r5, r3, #0 + movs r0, #0 + str r0, [sp, #4] +_0819FF2E: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0819FF44 + ldr r1, [sp, #0xc] + cmp r1, #1 + bne _0819FFBC +_0819FF44: + ldr r2, _0819FF90 + mov r8, r2 +_0819FF48: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x3a + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, [sp, #8] + adds r1, r4, #0 + bl sub_0806DAF8 + adds r2, r0, #0 + cmp r2, #0 + beq _0819FF48 + ldr r3, _0819FF94 + adds r0, r4, r3 + bl sub_081B69B4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + movs r2, #1 + cmp r5, #4 + bhi _0819FF98 + movs r3, #0 + b _0819FFA2 + .align 2, 0 +_0819FF80: .4byte gUnknown_3005AF0 +_0819FF84: .4byte gUnknown_85DC21C +_0819FF88: .4byte gUnknown_82F9D04 +_0819FF8C: .4byte 0x0000FFFF +_0819FF90: .4byte 0x000001FF +_0819FF94: .4byte 0x00000121 +_0819FF98: + subs r0, r5, #4 + b _0819FF9E +_0819FF9C: + adds r0, r3, #1 +_0819FF9E: + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_0819FFA2: + cmp r3, r5 + bhs _0819FFB6 + lsls r0, r3, #1 + adds r0, r0, r6 + ldrh r0, [r0] + mov r1, r8 + ands r0, r1 + cmp r0, r7 + bne _0819FF9C + movs r2, #0 +_0819FFB6: + cmp r2, #1 + bne _0819FF48 + b _081A0022 +_0819FFBC: + cmp r5, #4 + bhi _0819FFC6 + movs r2, #1 + str r2, [sp, #0xc] + b _081A0044 +_0819FFC6: + subs r4, r5, #4 + ldr r3, _081A0000 + mov sl, r3 + mov r8, r3 + lsls r0, r4, #0x18 + mov sb, r0 +_0819FFD2: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r6 + ldrh r0, [r0] + mov r7, r8 + ands r7, r0 + movs r2, #1 + mov r1, sb + lsrs r3, r1, #0x18 + cmp r3, r5 + bhs _081A001E + lsls r0, r3, #1 + adds r0, r0, r6 + ldrh r1, [r0] + mov r0, r8 + b _081A0016 + .align 2, 0 +_081A0000: .4byte 0x000001FF +_081A0004: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r5 + bhs _081A001E + lsls r0, r3, #1 + adds r0, r0, r6 + ldrh r0, [r0] + mov r1, sl +_081A0016: + ands r0, r1 + cmp r0, r7 + bne _081A0004 + movs r2, #0 +_081A001E: + cmp r2, #1 + bne _0819FFD2 +_081A0022: + ldr r0, [sp] + adds r1, r7, #0 + bl sub_081A0070 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A0044 + ldr r0, _081A0068 + adds r0, r7, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _081A004C + ldr r0, [sp, #4] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] +_081A0044: + ldr r2, [sp, #4] + cmp r2, #4 + bhi _081A004C + b _0819FF2E +_081A004C: + ldr r0, _081A006C + ldr r1, [r0] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r7, #0 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081A0068: .4byte gUnknown_85DC99C +_081A006C: .4byte gUnknown_300602C + thumb_func_end sub_0819FE70 + + thumb_func_start sub_081A0070 +sub_081A0070: @ 0x081A0070 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r3, #0 + ldr r0, _081A009C + mov ip, r0 + ldr r2, [r0] + lsls r1, r4, #2 + adds r0, r1, r4 + lsls r6, r0, #1 + adds r2, #2 + adds r7, r1, #0 +_081A008C: + lsls r0, r3, #1 + adds r0, r0, r6 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, r5 + bne _081A00A0 + movs r0, #0 + b _081A00BE + .align 2, 0 +_081A009C: .4byte gUnknown_300602C +_081A00A0: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #4 + bls _081A008C + mov r2, ip + ldr r1, [r2] + adds r0, r7, r4 + ldrb r2, [r1] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, #2 + adds r1, r1, r0 + strh r5, [r1] + movs r0, #1 +_081A00BE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081A0070 + + thumb_func_start sub_081A00C4 +sub_081A00C4: @ 0x081A00C4 + push {r4, r5, r6, r7, lr} + mov ip, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081A0150 + ldr r0, [r0] + adds r0, #0xb1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + movs r4, #0x3c + cmp r0, #1 + bne _081A00E0 + movs r4, #0x32 +_081A00E0: + ldr r1, _081A0154 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r5, #0 + ldrh r1, [r6] + ldr r3, _081A0158 + cmp r1, r3 + beq _081A011C + movs r2, #0xfe + lsls r2, r2, #8 + adds r0, r2, #0 + ands r0, r1 + lsls r1, r4, #9 + cmp r0, r1 + bgt _081A011C + adds r4, r2, #0 + adds r2, r1, #0 +_081A0104: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #1 + adds r0, r0, r6 + ldrh r1, [r0] + cmp r1, r3 + beq _081A011C + adds r0, r4, #0 + ands r0, r1 + cmp r0, r2 + ble _081A0104 +_081A011C: + adds r4, r5, #0 + cmp r4, #4 + bls _081A0124 + movs r4, #4 +_081A0124: + movs r2, #0 + cmp r2, r4 + bhs _081A0148 + ldr r7, _081A015C +_081A012C: + lsls r3, r2, #1 + add r3, ip + adds r2, #1 + subs r0, r5, r2 + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r1, [r0] + adds r0, r7, #0 + ands r0, r1 + strh r0, [r3] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, r4 + blo _081A012C +_081A0148: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A0150: .4byte gUnknown_3005AF0 +_081A0154: .4byte gUnknown_82F9D04 +_081A0158: .4byte 0x0000FFFF +_081A015C: .4byte 0x000001FF + thumb_func_end sub_081A00C4 + + thumb_func_start sub_081A0160 +sub_081A0160: @ 0x081A0160 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + ldr r1, _081A0190 + ldr r2, [r1] + adds r0, r2, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + adds r7, r1, #0 + cmp r0, #2 + bhi _081A0194 + movs r0, #0 + b _081A025A + .align 2, 0 +_081A0190: .4byte gUnknown_3005AF0 +_081A0194: + movs r4, #0 + movs r3, #0 + adds r0, r2, #0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + ldr r1, _081A0268 + mov ip, r1 + lsls r6, r6, #1 + lsls r5, r5, #1 + mov sb, r5 + cmp r0, #0 + beq _081A01D0 + adds r2, r7, #0 +_081A01B0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #8 + bhi _081A01D0 + ldr r0, [r2] + lsls r1, r3, #2 + adds r0, r0, r1 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _081A01B0 +_081A01D0: + ldr r0, [r7] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r6, r0 + mov r1, ip + adds r1, #0xc + adds r0, r0, r1 + ldrh r0, [r0] + mov r1, sp + bl sub_081A00C4 + movs r3, #0 + cmp r3, r4 + bhs _081A0254 + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + cmp r3, r0 + bge _081A0254 + adds r6, r7, #0 + adds r5, r1, #0 +_081A0208: + lsls r0, r3, #2 + adds r2, r5, r0 + adds r0, r2, #0 + adds r0, #0xb8 + ldrb r1, [r0] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + bne _081A023A + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1e + cmp r0, r8 + bne _081A023A + lsrs r0, r1, #6 + cmp r0, #0 + beq _081A023A + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1e + lsls r0, r0, #1 + mov r7, sp + adds r1, r7, r0 + adds r0, r2, #0 + adds r0, #0xba + ldrh r0, [r0] + strh r0, [r1] +_081A023A: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + bhs _081A0254 + ldr r0, [r6] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + cmp r3, r0 + blt _081A0208 +_081A0254: + mov r0, sp + add r0, sb + ldrh r0, [r0] +_081A025A: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081A0268: .4byte gUnknown_85DC21C + thumb_func_end sub_081A0160 + + thumb_func_start sub_081A026C +sub_081A026C: @ 0x081A026C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r7, _081A0380 + adds r6, r7, #0 + movs r4, #0 +_081A0282: + ldr r0, [r6] + lsls r2, r5, #1 + adds r2, r2, r5 + lsls r2, r2, #2 + adds r0, r0, r2 + adds r1, r0, #0 + adds r1, #0xe0 + strh r4, [r1] + adds r0, #0xea + strh r4, [r0] + movs r3, #0 +_081A0298: + ldr r0, [r6] + lsls r1, r3, #1 + adds r1, r1, r2 + adds r0, #0xe2 + adds r0, r0, r1 + strh r4, [r0] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #3 + bls _081A0298 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _081A0282 + ldr r0, [r7] + adds r0, #0xb1 + ldrb r0, [r0] + lsrs r3, r0, #6 + movs r5, #0 +_081A02C2: + lsls r0, r3, #2 + mov r1, sp + adds r2, r1, r0 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, #0xe0 + ldr r1, [r7] + adds r1, r1, r0 + str r1, [r2] + adds r0, r3, #1 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _081A02C2 + movs r5, #0 + ldr r7, _081A0380 + ldr r6, _081A0384 +_081A02F2: + ldr r0, [r7] + mov ip, r0 + adds r0, #0xb4 + adds r0, r0, r5 + ldrb r2, [r0] + mov r0, ip + adds r0, #0xb2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + asrs r0, r5 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + asrs r2, r0 + movs r0, #0xf + ands r2, r0 + lsls r0, r5, #2 + mov r1, sp + adds r3, r1, r0 + ldr r4, [r3] + lsls r2, r2, #1 + mov r0, ip + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r2, r2, r6 + ldrh r0, [r2] + strh r0, [r4] + ldr r1, [r3] + ldrh r0, [r1] + adds r1, #2 + bl sub_081A00C4 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _081A02F2 + movs r5, #0 + cmp r5, r8 + bhs _081A03B6 + ldr r7, _081A0380 +_081A034E: + ldr r1, [r7] + lsls r0, r5, #2 + adds r4, r1, r0 + adds r0, r4, #0 + adds r0, #0xb8 + ldrb r2, [r0] + lsls r0, r2, #0x1e + lsrs r1, r0, #0x1e + lsls r0, r2, #0x1c + lsrs r3, r0, #0x1e + adds r6, r3, #0 + cmp r1, #1 + bne _081A0388 + lsrs r0, r2, #6 + cmp r0, #0 + beq _081A03AC + lsls r0, r3, #2 + add r0, sp + ldr r1, [r0] + adds r0, r4, #0 + adds r0, #0xba + ldrh r0, [r0] + strh r0, [r1, #0xa] + b _081A03AC + .align 2, 0 +_081A0380: .4byte gUnknown_3005AF0 +_081A0384: .4byte gUnknown_85DC228 +_081A0388: + cmp r1, #2 + bne _081A03AC + lsls r0, r2, #0x18 + lsrs r0, r0, #0x1e + cmp r0, #0 + beq _081A03AC + lsls r2, r2, #0x1a + lsrs r2, r2, #0x1e + lsls r0, r6, #2 + add r0, sp + ldr r1, [r0] + lsls r2, r2, #1 + adds r1, #2 + adds r1, r1, r2 + adds r0, r4, #0 + adds r0, #0xba + ldrh r0, [r0] + strh r0, [r1] +_081A03AC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r8 + blo _081A034E +_081A03B6: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A026C + + thumb_func_start sub_081A03C4 +sub_081A03C4: @ 0x081A03C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r7, #2 + cmp r0, #6 + bls _081A03DC + b _081A054C +_081A03DC: + lsls r0, r0, #2 + ldr r1, _081A03E8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A03E8: .4byte _081A03EC +_081A03EC: @ jump table + .4byte _081A0408 @ case 0 + .4byte _081A0424 @ case 1 + .4byte _081A04A0 @ case 2 + .4byte _081A04E8 @ case 3 + .4byte _081A0514 @ case 4 + .4byte _081A054C @ case 5 + .4byte _081A0530 @ case 6 +_081A0408: + movs r0, #0x12 + mov sl, r0 + movs r5, #8 + movs r1, #8 + str r1, [sp, #0x18] + ldr r0, _081A041C + str r0, [sp, #0xc] + ldr r0, _081A0420 + str r0, [sp, #0x10] + b _081A0556 + .align 2, 0 +_081A041C: .4byte gUnknown_85CAB0D +_081A0420: .4byte gUnknown_85CAB13 +_081A0424: + movs r7, #3 + movs r0, #0x12 + mov sl, r0 + movs r5, #6 + movs r1, #8 + str r1, [sp, #0x18] + movs r4, #0 + ldr r0, _081A0494 + mov sb, r0 + ldr r0, _081A0498 + ldr r3, [r0] + movs r1, #0xb2 + adds r1, r1, r3 + mov ip, r1 + adds r6, r3, #0 + adds r6, #0xb0 + ldr r0, _081A049C + mov r8, r0 +_081A0448: + adds r0, r3, #0 + adds r0, #0xb4 + adds r0, r0, r4 + ldrb r2, [r0] + mov r1, ip + ldrb r0, [r1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + asrs r0, r4 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + asrs r2, r0 + movs r0, #0xf + ands r2, r0 + lsls r2, r2, #1 + ldrb r1, [r6] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + add r2, r8 + ldrh r1, [r2] + lsls r0, r4, #2 + mov r2, sp + adds r2, r2, r0 + adds r2, #0xc + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + add r0, sb + str r0, [r2] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A0448 + b _081A0556 + .align 2, 0 +_081A0494: .4byte gUnknown_82EA31C +_081A0498: .4byte gUnknown_3005AF0 +_081A049C: .4byte gUnknown_85DC228 +_081A04A0: + movs r0, #0x12 + mov sl, r0 + movs r5, #8 + movs r1, #8 + str r1, [sp, #0x18] + ldr r0, _081A04DC + ldr r0, [r0] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + cmp r0, #2 + bls _081A04BC + b _081A05C2 +_081A04BC: + ldr r0, _081A04E0 + ldr r3, [r0] + ldrh r1, [r3, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r2, _081A04E4 + adds r0, r0, r2 + str r0, [sp, #0x10] + ldrh r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + str r0, [sp, #0xc] + b _081A0556 + .align 2, 0 +_081A04DC: .4byte gUnknown_3005AF0 +_081A04E0: .4byte gUnknown_3006030 +_081A04E4: .4byte gUnknown_82EA31C +_081A04E8: + movs r0, #0x11 + mov sl, r0 + movs r5, #8 + movs r1, #8 + str r1, [sp, #0x18] + ldr r0, _081A050C + ldr r2, [r0] + ldrh r0, [r2, #4] + lsls r0, r0, #3 + ldr r1, _081A0510 + adds r0, r0, r1 + str r0, [sp, #0xc] + ldrh r0, [r2, #6] + lsls r0, r0, #3 + adds r0, r0, r1 + str r0, [sp, #0x10] + b _081A0556 + .align 2, 0 +_081A050C: .4byte gUnknown_3006030 +_081A0510: .4byte gUnknown_82EACC4 +_081A0514: + movs r0, #0x12 + mov sl, r0 + movs r5, #8 + movs r1, #8 + str r1, [sp, #0x18] + ldr r0, _081A0528 + str r0, [sp, #0xc] + ldr r0, _081A052C + str r0, [sp, #0x10] + b _081A0556 + .align 2, 0 +_081A0528: .4byte gUnknown_85CC47F +_081A052C: .4byte gUnknown_85CC486 +_081A0530: + movs r0, #0x14 + mov sl, r0 + movs r5, #8 + movs r1, #4 + str r1, [sp, #0x18] + ldr r0, _081A0544 + str r0, [sp, #0xc] + ldr r0, _081A0548 + str r0, [sp, #0x10] + b _081A0556 + .align 2, 0 +_081A0544: .4byte gUnknown_85CAAD8 +_081A0548: .4byte gUnknown_85CAADB +_081A054C: + movs r0, #0 + mov sl, r0 + movs r5, #0 + movs r1, #8 + str r1, [sp, #0x18] +_081A0556: + lsls r3, r7, #1 + mov r0, sl + adds r1, r5, #0 + ldr r2, [sp, #0x18] + bl sub_081A064C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #0 + bl sub_08197638 + movs r4, #0 + cmp r4, r7 + bhs _081A05A2 +_081A0574: + lsls r0, r4, #2 + add r0, sp + adds r0, #0xc + ldr r2, [r0] + lsls r0, r4, #4 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r3, #8 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r7 + blo _081A0574 +_081A05A2: + movs r0, #0x10 + str r0, [sp] + str r7, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #1 + adds r1, r7, #0 + adds r2, r5, #0 + bl sub_081A06CC +_081A05C2: + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A03C4 + + thumb_func_start sub_081A05D4 +sub_081A05D4: @ 0x081A05D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081A05F4 + adds r4, r0, r1 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081A05F8 + bl sub_081986E8 + b _081A05FC + .align 2, 0 +_081A05F4: .4byte gUnknown_3005B68 +_081A05F8: + bl sub_0819867C +_081A05FC: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081A0640 + adds r0, #1 + cmp r1, r0 + bne _081A062C + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081A0640 + movs r0, #5 + bl sub_080A306C + ldr r1, _081A0628 + movs r0, #0x7f + strh r0, [r1] + b _081A0630 + .align 2, 0 +_081A0628: .4byte gUnknown_2037290 +_081A062C: + ldr r0, _081A0648 + strh r1, [r0] +_081A0630: + ldrb r0, [r4, #0xc] + bl sub_081A06B0 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_081A0640: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A0648: .4byte gUnknown_2037290 + thumb_func_end sub_081A05D4 + + thumb_func_start sub_081A064C +sub_081A064C: @ 0x081A064C + push {r4, r5, lr} + sub sp, #0x20 + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsls r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r4, r4, r0 + lsrs r4, r4, #0x18 + adds r5, r5, r0 + lsrs r5, r5, #0x18 + str r2, [sp] + str r3, [sp, #4] + movs r0, #0xf + str r0, [sp, #8] + movs r0, #0x5c + str r0, [sp, #0xc] + add r0, sp, #0x10 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08198B60 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x18 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #3 + bl sub_08003528 + adds r0, r4, #0 + add sp, #0x20 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081A064C + + thumb_func_start sub_081A06B0 +sub_081A06B0: @ 0x081A06B0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #1 + bl sub_08198134 + adds r0, r4, #0 + bl sub_08003444 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081A06B0 + + thumb_func_start sub_081A06CC +sub_081A06CC: @ 0x081A06CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _081A0700 + movs r1, #0x50 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _081A0704 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r1 + strh r4, [r1, #0x10] + cmp r5, #3 + bls _081A0708 + movs r0, #1 + b _081A070A + .align 2, 0 +_081A0700: .4byte sub_081A05D4 +_081A0704: .4byte gUnknown_3005B60 +_081A0708: + movs r0, #0 +_081A070A: + strh r0, [r1, #0x12] + ldr r1, _081A0720 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r6, [r0, #0x14] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A0720: .4byte gUnknown_3005B60 + thumb_func_end sub_081A06CC + + thumb_func_start sub_081A0724 +sub_081A0724: @ 0x081A0724 + push {lr} + ldr r1, _081A073C + ldr r0, _081A0740 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A0724 + + thumb_func_start sub_081A0738 +sub_081A0738: @ 0x081A0738 + bx r0 + .align 2, 0 +_081A073C: .4byte gUnknown_85DCB0C +_081A0740: .4byte gUnknown_2037280 + thumb_func_end sub_081A0738 + + thumb_func_start sub_081A0744 +sub_081A0744: @ 0x081A0744 + push {r4, r5, r6, r7, lr} + bl sub_0819FAA0 + ldr r3, _081A0800 + ldr r1, [r3] + adds r1, #0xb1 + ldrb r2, [r1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, #0xb1 + ldrb r2, [r1] + movs r0, #0x3d + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, #0xb1 + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1] + ldr r1, [r3] + adds r1, #0xb2 + ldrb r2, [r1] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + movs r4, #0 + movs r1, #0 +_081A0786: + ldr r0, [r3] + adds r0, #0xb4 + adds r0, r0, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A0786 + movs r4, #0 + ldr r5, _081A0800 + movs r0, #4 + rsbs r0, r0, #0 + mov ip, r0 + movs r7, #0xd + rsbs r7, r7, #0 + movs r6, #0x31 + rsbs r6, r6, #0 +_081A07AA: + ldr r1, [r5] + lsls r3, r4, #2 + adds r1, r1, r3 + adds r1, #0xb8 + ldrb r2, [r1] + mov r0, ip + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + adds r1, r1, r3 + adds r1, #0xb8 + ldrb r2, [r1] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + adds r1, r1, r3 + adds r1, #0xb8 + ldrb r2, [r1] + adds r0, r6, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + adds r1, r1, r3 + adds r1, #0xb8 + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, r0, r3 + adds r0, #0xba + movs r1, #0 + strh r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #8 + bls _081A07AA + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A0800: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A0744 + + thumb_func_start sub_081A0804 +sub_081A0804: @ 0x081A0804 + push {lr} + bl sub_0819FA88 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081A081C + ldr r0, _081A0818 + strh r1, [r0] + b _081A0822 + .align 2, 0 +_081A0818: .4byte gUnknown_2037290 +_081A081C: + ldr r1, _081A0828 + movs r0, #1 + strh r0, [r1] +_081A0822: + pop {r0} + bx r0 + .align 2, 0 +_081A0828: .4byte gUnknown_2037290 + thumb_func_end sub_081A0804 + + thumb_func_start sub_081A082C +sub_081A082C: @ 0x081A082C + push {lr} + ldr r0, _081A083C + ldrb r0, [r0] + bl sub_0819FB18 + pop {r0} + bx r0 + .align 2, 0 +_081A083C: .4byte gUnknown_2037282 + thumb_func_end sub_081A082C + + thumb_func_start sub_081A0840 +sub_081A0840: @ 0x081A0840 + push {lr} + bl sub_0819FAA0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A0840 + + thumb_func_start sub_081A084C +sub_081A084C: @ 0x081A084C + push {lr} + bl sub_0819FC3C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A084C + + thumb_func_start sub_081A0858 +sub_081A0858: @ 0x081A0858 + ldr r0, _081A0878 + ldr r2, [r0] + adds r2, #0xb1 + ldrb r3, [r2] + lsls r1, r3, #0x1a + lsrs r1, r1, #0x1c + adds r1, #1 + movs r0, #0xf + ands r1, r0 + lsls r1, r1, #2 + movs r0, #0x3d + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_081A0878: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A0858 + + thumb_func_start sub_081A087C +sub_081A087C: @ 0x081A087C + ldr r1, _081A0890 + ldr r0, _081A0894 + ldr r0, [r0] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + strh r0, [r1] + bx lr + .align 2, 0 +_081A0890: .4byte gUnknown_2037290 +_081A0894: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A087C + + thumb_func_start sub_081A0898 +sub_081A0898: @ 0x081A0898 + push {lr} + ldr r3, _081A08B4 + ldr r0, [r3] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r1, r0, #3 + cmp r1, #0 + bge _081A08BC + ldr r1, _081A08B8 + movs r0, #0 + strh r0, [r1] + b _081A08E4 + .align 2, 0 +_081A08B4: .4byte gUnknown_3005AF0 +_081A08B8: .4byte gUnknown_2037290 +_081A08BC: + ldr r2, _081A08DC + cmp r1, #8 + ble _081A08C6 + movs r0, #1 + strh r0, [r2] +_081A08C6: + ldr r0, [r3] + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _081A08E0 + movs r0, #1 + b _081A08E2 + .align 2, 0 +_081A08DC: .4byte gUnknown_2037290 +_081A08E0: + movs r0, #0 +_081A08E2: + strh r0, [r2] +_081A08E4: + pop {r0} + bx r0 + thumb_func_end sub_081A0898 + + thumb_func_start sub_081A08E8 +sub_081A08E8: @ 0x081A08E8 + push {lr} + ldr r0, _081A08F8 + ldrb r0, [r0] + bl sub_081A03C4 + pop {r0} + bx r0 + .align 2, 0 +_081A08F8: .4byte gUnknown_2037282 + thumb_func_end sub_081A08E8 + + thumb_func_start sub_081A08FC +sub_081A08FC: @ 0x081A08FC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08196E18 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081A0930 + adds r0, r4, #0 + bl sub_080A8964 + ldr r0, _081A0924 + ldrh r0, [r0] + cmp r0, #0 + beq _081A092C + ldr r0, _081A0928 + bl sub_081A15D4 + b _081A0930 + .align 2, 0 +_081A0924: .4byte gUnknown_2037282 +_081A0928: .4byte sub_080988C4 +_081A092C: + bl sub_080988C4 +_081A0930: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A08FC + + thumb_func_start sub_081A0938 +sub_081A0938: @ 0x081A0938 + push {lr} + ldr r1, _081A0950 + ldrh r0, [r1] + cmp r0, #6 + bne _081A095C + ldr r1, _081A0954 + ldr r0, _081A0958 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + b _081A0B2E + .align 2, 0 +_081A0950: .4byte gUnknown_2037284 +_081A0954: .4byte gUnknown_85DC61C +_081A0958: .4byte gUnknown_3005AF0 +_081A095C: + cmp r0, #7 + bne _081A0978 + ldr r1, _081A0970 + ldr r0, _081A0974 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + b _081A0B2E + .align 2, 0 +_081A0970: .4byte gUnknown_85DC61C +_081A0974: .4byte gUnknown_3005AF0 +_081A0978: + cmp r0, #8 + bne _081A0994 + ldr r1, _081A098C + ldr r0, _081A0990 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + b _081A0B2E + .align 2, 0 +_081A098C: .4byte gUnknown_85DC7DC +_081A0990: .4byte gUnknown_3005AF0 +_081A0994: + cmp r0, #9 + bne _081A09B0 + ldr r1, _081A09A8 + ldr r0, _081A09AC + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + b _081A0B2E + .align 2, 0 +_081A09A8: .4byte gUnknown_85DC7DC +_081A09AC: .4byte gUnknown_3005AF0 +_081A09B0: + cmp r0, #4 + bne _081A09CC + ldr r1, _081A09C4 + ldr r0, _081A09C8 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + b _081A0B2E + .align 2, 0 +_081A09C4: .4byte gUnknown_85DC85C +_081A09C8: .4byte gUnknown_3005AF0 +_081A09CC: + cmp r0, #5 + bne _081A09E8 + ldr r1, _081A09E0 + ldr r0, _081A09E4 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + b _081A0B2E + .align 2, 0 +_081A09E0: .4byte gUnknown_85DC85C +_081A09E4: .4byte gUnknown_3005AF0 +_081A09E8: + cmp r0, #0xa + bne _081A0A08 + ldr r2, _081A0A00 + ldr r0, _081A0A04 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + b _081A0A9E + .align 2, 0 +_081A0A00: .4byte gUnknown_85DC69C +_081A0A04: .4byte gUnknown_3005AF0 +_081A0A08: + cmp r0, #0xb + bne _081A0A24 + ldr r1, _081A0A1C + ldr r0, _081A0A20 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + b _081A0B2E + .align 2, 0 +_081A0A1C: .4byte gUnknown_85DC8DC +_081A0A20: .4byte gUnknown_3005AF0 +_081A0A24: + cmp r0, #0xc + bne _081A0A44 + ldr r2, _081A0A3C + ldr r0, _081A0A40 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0xc + b _081A0A9E + .align 2, 0 +_081A0A3C: .4byte gUnknown_85DC69C +_081A0A40: .4byte gUnknown_3005AF0 +_081A0A44: + cmp r0, #0xd + bne _081A0A64 + ldr r2, _081A0A5C + ldr r0, _081A0A60 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + b _081A0A9E + .align 2, 0 +_081A0A5C: .4byte gUnknown_85DC69C +_081A0A60: .4byte gUnknown_3005AF0 +_081A0A64: + ldrh r0, [r1] + cmp r0, #0x10 + bne _081A0A88 + ldr r2, _081A0A80 + ldr r0, _081A0A84 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x10 + b _081A0A9E + .align 2, 0 +_081A0A80: .4byte gUnknown_85DC69C +_081A0A84: .4byte gUnknown_3005AF0 +_081A0A88: + cmp r0, #0xe + bne _081A0AAC + ldr r2, _081A0AA4 + ldr r0, _081A0AA8 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #8 +_081A0A9E: + adds r0, r0, r2 + ldr r1, [r0] + b _081A0B42 + .align 2, 0 +_081A0AA4: .4byte gUnknown_85DC69C +_081A0AA8: .4byte gUnknown_3005AF0 +_081A0AAC: + cmp r0, #0xf + bne _081A0AC8 + ldr r1, _081A0AC0 + ldr r0, _081A0AC4 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + b _081A0B2E + .align 2, 0 +_081A0AC0: .4byte gUnknown_85DC8DC +_081A0AC4: .4byte gUnknown_3005AF0 +_081A0AC8: + cmp r0, #0 + bne _081A0AE4 + ldr r1, _081A0ADC + ldr r0, _081A0AE0 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #4 + b _081A0B2E + .align 2, 0 +_081A0ADC: .4byte gUnknown_85DC51C +_081A0AE0: .4byte gUnknown_3005AF0 +_081A0AE4: + cmp r0, #1 + bne _081A0B00 + ldr r1, _081A0AF8 + ldr r0, _081A0AFC + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, #4 + b _081A0B2E + .align 2, 0 +_081A0AF8: .4byte gUnknown_85DC51C +_081A0AFC: .4byte gUnknown_3005AF0 +_081A0B00: + cmp r0, #2 + bne _081A0B1C + ldr r1, _081A0B14 + ldr r0, _081A0B18 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, #8 + b _081A0B2E + .align 2, 0 +_081A0B14: .4byte gUnknown_85DC51C +_081A0B18: .4byte gUnknown_3005AF0 +_081A0B1C: + cmp r0, #3 + bne _081A0B3C + ldr r1, _081A0B34 + ldr r0, _081A0B38 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, #0xc +_081A0B2E: + adds r0, r0, r1 + ldr r1, [r0] + b _081A0B42 + .align 2, 0 +_081A0B34: .4byte gUnknown_85DC51C +_081A0B38: .4byte gUnknown_3005AF0 +_081A0B3C: + bl sub_080988C4 + b _081A0B56 +_081A0B42: + ldr r0, _081A0B5C + bl sub_08008BCC + movs r0, #1 + bl sub_08196EB8 + ldr r0, _081A0B60 + movs r1, #1 + bl sub_080A8878 +_081A0B56: + pop {r0} + bx r0 + .align 2, 0 +_081A0B5C: .4byte gUnknown_2021C7C +_081A0B60: .4byte sub_081A08FC + thumb_func_end sub_081A0938 + + thumb_func_start sub_081A0B64 +sub_081A0B64: @ 0x081A0B64 + push {lr} + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B1C8 + bl sub_0808B658 + movs r0, #0 + movs r1, #1 + bl sub_08196FB8 + bl sub_081A0938 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A0B64 + + thumb_func_start sub_081A0B88 +sub_081A0B88: @ 0x081A0B88 + push {lr} + ldr r0, _081A0BA4 + ldr r2, [r0] + adds r0, r2, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r1, r0, #0x1a + lsrs r0, r1, #0x1c + cmp r0, #2 + bhi _081A0BAC + ldr r1, _081A0BA8 + movs r0, #2 + b _081A0BFC + .align 2, 0 +_081A0BA4: .4byte gUnknown_3005AF0 +_081A0BA8: .4byte gUnknown_2037290 +_081A0BAC: + lsrs r0, r1, #0x1c + cmp r0, #0xb + bhi _081A0BF8 + lsrs r0, r1, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r0, r2, r0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + beq _081A0BE0 + cmp r0, #2 + bgt _081A0BD0 + cmp r0, #1 + beq _081A0BD6 + b _081A0BF8 +_081A0BD0: + cmp r0, #3 + beq _081A0BEC + b _081A0BF8 +_081A0BD6: + ldr r1, _081A0BDC + movs r0, #4 + b _081A0BFC + .align 2, 0 +_081A0BDC: .4byte gUnknown_2037290 +_081A0BE0: + ldr r1, _081A0BE8 + movs r0, #3 + b _081A0BFC + .align 2, 0 +_081A0BE8: .4byte gUnknown_2037290 +_081A0BEC: + ldr r1, _081A0BF4 + movs r0, #1 + b _081A0BFC + .align 2, 0 +_081A0BF4: .4byte gUnknown_2037290 +_081A0BF8: + ldr r1, _081A0C04 + movs r0, #5 +_081A0BFC: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081A0C04: .4byte gUnknown_2037290 + thumb_func_end sub_081A0B88 + + thumb_func_start sub_081A0C08 +sub_081A0C08: @ 0x081A0C08 + push {r4, lr} + ldr r0, _081A0C3C + ldrh r0, [r0] + cmp r0, #0 + beq _081A0C36 + ldr r4, _081A0C40 + ldr r0, _081A0C44 + ldr r2, [r0] + adds r2, #0xb2 + ldrb r3, [r2] + lsls r0, r3, #0x1d + lsrs r0, r0, #0x1d + movs r1, #1 + ldrb r4, [r4] + lsls r1, r4 + orrs r1, r0 + movs r0, #7 + ands r1, r0 + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_081A0C36: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A0C3C: .4byte gUnknown_2037282 +_081A0C40: .4byte gUnknown_2037284 +_081A0C44: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A0C08 + + thumb_func_start sub_081A0C48 +sub_081A0C48: @ 0x081A0C48 + push {lr} + ldr r0, _081A0C80 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r1, r0, #0x1a + lsrs r0, r1, #0x1c + cmp r0, #2 + bls _081A0C96 + subs r0, #3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081A0C84 + ldrh r0, [r0] + cmp r0, #0 + beq _081A0C88 + lsls r2, r2, #2 + adds r2, r3, r2 + adds r2, #0xb8 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + b _081A0C96 + .align 2, 0 +_081A0C80: .4byte gUnknown_3005AF0 +_081A0C84: .4byte gUnknown_2037282 +_081A0C88: + lsls r0, r2, #2 + adds r0, r3, r0 + adds r0, #0xb8 + ldrb r2, [r0] + movs r1, #0x3f + ands r1, r2 + strb r1, [r0] +_081A0C96: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A0C48 + + thumb_func_start sub_081A0C9C +sub_081A0C9C: @ 0x081A0C9C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r5, #0 + movs r2, #0 + ldr r1, _081A0D4C + ldr r0, [r1] + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + ldr r3, _081A0D50 + mov sb, r3 + cmp r0, #0 + beq _081A0CDC + adds r3, r1, #0 +_081A0CBC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #8 + bhi _081A0CDC + ldr r0, [r3] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _081A0CBC +_081A0CDC: + mov r4, sb + movs r0, #8 + bl sub_08000BDC + adds r7, r0, #0 + str r7, [r4] + ldr r0, _081A0D54 + ldrh r0, [r0] + cmp r0, #2 + bne _081A0D5C + ldr r0, _081A0D4C + ldr r0, [r0] + mov ip, r0 + mov r6, ip + adds r6, #0xb1 + ldrb r0, [r6] + lsls r1, r0, #0x1a + lsrs r0, r1, #0x1c + cmp r0, #2 + bls _081A0D06 + b _081A0EA8 +_081A0D06: + mov r3, ip + adds r3, #0xb4 + adds r0, r3, r0 + ldrb r0, [r0] + lsrs r5, r0, #4 + ldr r4, _081A0D58 + lsls r2, r5, #1 + mov r5, ip + adds r5, #0xb0 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r4, #0xc + adds r2, r2, r4 + ldrh r0, [r2] + strh r0, [r7, #2] + ldrb r0, [r6] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + adds r3, r3, r0 + ldrb r0, [r3] + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r5] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r0, [r1] + b _081A0EA6 + .align 2, 0 +_081A0D4C: .4byte gUnknown_3005AF0 +_081A0D50: .4byte gUnknown_3006030 +_081A0D54: .4byte gUnknown_2037282 +_081A0D58: .4byte gUnknown_85DC21C +_081A0D5C: + cmp r0, #3 + bne _081A0E2C + ldr r0, _081A0E24 + mov r8, r0 + ldr r4, [r0] + movs r1, #0xb1 + adds r1, r1, r4 + mov ip, r1 + ldrb r0, [r1] + lsls r2, r0, #0x1a + lsrs r0, r2, #0x1c + cmp r0, #2 + bhi _081A0D78 + b _081A0EA8 +_081A0D78: + adds r1, r0, #0 + adds r0, r5, #3 + cmp r1, r0 + blt _081A0D82 + b _081A0EA8 +_081A0D82: + adds r0, r1, #0 + subs r0, #3 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #2 + beq _081A0D98 + b _081A0EA8 +_081A0D98: + adds r0, r1, #0 + subs r0, #3 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r6, r0, #0x1e + adds r0, r4, #0 + adds r0, #0xb2 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + asrs r1, r6 + movs r0, #1 + ands r1, r0 + adds r0, r4, #0 + adds r0, #0xb4 + adds r0, r0, r6 + ldrb r5, [r0] + lsls r1, r1, #2 + asrs r5, r1 + movs r0, #0xf + ands r5, r0 + ldr r3, _081A0E28 + lsls r2, r5, #1 + adds r0, r4, #0 + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r3, #0xc + adds r2, r2, r3 + ldrh r0, [r2] + strh r0, [r7] + mov r3, ip + ldrb r0, [r3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, #0xb8 + ldrb r2, [r0] + lsls r2, r2, #0x1a + lsrs r2, r2, #0x1e + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_081A0160 + mov r1, sb + ldr r2, [r1] + strh r0, [r2, #4] + mov r3, r8 + ldr r1, [r3] + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xba + ldrh r0, [r1] + strh r0, [r2, #6] + b _081A0EA8 + .align 2, 0 +_081A0E24: .4byte gUnknown_3005AF0 +_081A0E28: .4byte gUnknown_85DC21C +_081A0E2C: + cmp r0, #4 + bne _081A0EA8 + ldr r0, _081A0EB4 + ldr r4, [r0] + adds r0, r4, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r2, r0, #0x1a + lsrs r0, r2, #0x1c + cmp r0, #2 + bls _081A0EA8 + adds r1, r0, #0 + adds r0, r5, #3 + cmp r1, r0 + bge _081A0EA8 + adds r0, r1, #0 + subs r0, #3 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _081A0EA8 + adds r0, r1, #0 + subs r0, #3 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1c + lsrs r6, r0, #0x1e + adds r0, r4, #0 + adds r0, #0xb2 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + asrs r1, r6 + movs r0, #1 + ands r1, r0 + adds r0, r4, #0 + adds r0, #0xb4 + adds r0, r0, r6 + ldrb r2, [r0] + lsls r1, r1, #2 + asrs r2, r1 + movs r0, #0xf + ands r2, r0 + ldr r3, _081A0EB8 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r3, #0xc + adds r2, r2, r3 + ldrh r0, [r2] +_081A0EA6: + strh r0, [r7] +_081A0EA8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A0EB4: .4byte gUnknown_3005AF0 +_081A0EB8: .4byte gUnknown_85DC21C + thumb_func_end sub_081A0C9C + + thumb_func_start sub_081A0EBC +sub_081A0EBC: @ 0x081A0EBC + push {r4, lr} + ldr r4, _081A0ED0 + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A0ED0: .4byte gUnknown_3006030 + thumb_func_end sub_081A0EBC + + thumb_func_start sub_081A0ED4 +sub_081A0ED4: @ 0x081A0ED4 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _081A0EEC + ldrh r0, [r0] + cmp r0, #1 + beq _081A0F00 + cmp r0, #1 + bgt _081A0EF0 + cmp r0, #0 + beq _081A0EF6 + b _081A10F2 + .align 2, 0 +_081A0EEC: .4byte gUnknown_2037282 +_081A0EF0: + cmp r0, #2 + beq _081A0F08 + b _081A10F2 +_081A0EF6: + ldr r5, _081A0EFC + b _081A0F0A + .align 2, 0 +_081A0EFC: .4byte gUnknown_2021C40 +_081A0F00: + ldr r5, _081A0F04 + b _081A0F0A + .align 2, 0 +_081A0F04: .4byte gUnknown_2021C54 +_081A0F08: + ldr r5, _081A0F20 +_081A0F0A: + ldr r0, _081A0F24 + ldrh r0, [r0] + cmp r0, #9 + bls _081A0F14 + b _081A10F2 +_081A0F14: + lsls r0, r0, #2 + ldr r1, _081A0F28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A0F20: .4byte gUnknown_2021C68 +_081A0F24: .4byte gUnknown_2037284 +_081A0F28: .4byte _081A0F2C +_081A0F2C: @ jump table + .4byte _081A0F54 @ case 0 + .4byte _081A0F70 @ case 1 + .4byte _081A0F8C @ case 2 + .4byte _081A0FA8 @ case 3 + .4byte _081A0FC0 @ case 4 + .4byte _081A0FD8 @ case 5 + .4byte _081A0FFC @ case 6 + .4byte _081A106C @ case 7 + .4byte _081A1048 @ case 8 + .4byte _081A108C @ case 9 +_081A0F54: + ldr r0, _081A0F68 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081A0F6C + adds r1, r1, r0 + b _081A107C + .align 2, 0 +_081A0F68: .4byte gUnknown_3006030 +_081A0F6C: .4byte gUnknown_82EA31C +_081A0F70: + ldr r0, _081A0F84 + ldr r0, [r0] + ldrh r0, [r0, #2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081A0F88 + adds r1, r1, r0 + b _081A107C + .align 2, 0 +_081A0F84: .4byte gUnknown_3006030 +_081A0F88: .4byte gUnknown_82EA31C +_081A0F8C: + ldr r0, _081A0FA0 + ldr r0, [r0] + ldrh r0, [r0] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081A0FA4 + adds r1, r1, r0 + b _081A107C + .align 2, 0 +_081A0FA0: .4byte gUnknown_3006030 +_081A0FA4: .4byte gUnknown_82EA31C +_081A0FA8: + ldr r0, _081A0FB8 + ldr r0, [r0] + ldrh r1, [r0, #4] + lsls r1, r1, #3 + ldr r0, _081A0FBC + adds r1, r1, r0 + b _081A107C + .align 2, 0 +_081A0FB8: .4byte gUnknown_3006030 +_081A0FBC: .4byte gUnknown_82EACC4 +_081A0FC0: + ldr r0, _081A0FD0 + ldr r0, [r0] + ldrh r1, [r0, #6] + lsls r1, r1, #3 + ldr r0, _081A0FD4 + adds r1, r1, r0 + b _081A107C + .align 2, 0 +_081A0FD0: .4byte gUnknown_3006030 +_081A0FD4: .4byte gUnknown_82EACC4 +_081A0FD8: + ldr r0, _081A0FF8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xba + ldrh r0, [r1] + bl sub_080D6C8C + adds r1, r0, #0 + b _081A107C + .align 2, 0 +_081A0FF8: .4byte gUnknown_3005AF0 +_081A0FFC: + movs r3, #0 + ldr r7, _081A1040 + ldr r6, _081A1044 + ldr r0, [r7] + adds r4, r0, #0 + adds r4, #0xb0 +_081A1008: + mov r0, sp + adds r2, r0, r3 + ldrb r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r2] + cmp r0, #0xff + beq _081A102A + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #6 + bls _081A1008 +_081A102A: + cmp r3, #3 + bne _081A1034 + mov r1, sp + movs r0, #0xff + strb r0, [r1, #3] +_081A1034: + adds r0, r5, #0 + mov r1, sp + bl sub_080088B8 + b _081A10F2 + .align 2, 0 +_081A1040: .4byte gUnknown_3005AF0 +_081A1044: .4byte gUnknown_85DC21C +_081A1048: + ldr r0, _081A105C + ldr r0, [r0] + adds r0, #0xb1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _081A1064 + ldr r1, _081A1060 + b _081A107C + .align 2, 0 +_081A105C: .4byte gUnknown_3005AF0 +_081A1060: .4byte gUnknown_85CAB0D +_081A1064: + ldr r1, _081A1068 + b _081A107C + .align 2, 0 +_081A1068: .4byte gUnknown_85CAB13 +_081A106C: + ldr r0, _081A1084 + ldr r0, [r0] + movs r1, #0x82 + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_081637CC + ldr r1, _081A1088 +_081A107C: + adds r0, r5, #0 + bl sub_080088B8 + b _081A10F2 + .align 2, 0 +_081A1084: .4byte gUnknown_3005AF0 +_081A1088: .4byte gUnknown_2021C7C +_081A108C: + ldr r0, _081A10C4 + ldr r3, [r0] + adds r1, r3, #0 + adds r1, #0xb1 + ldrb r1, [r1] + lsls r4, r1, #0x18 + lsrs r1, r4, #0x1e + adds r7, r0, #0 + cmp r1, #2 + bhi _081A10C8 + adds r0, r3, #0 + adds r0, #0xb4 + adds r0, r0, r1 + ldrb r2, [r0] + adds r0, r3, #0 + adds r0, #0xb2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + asrs r0, r1 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #2 + asrs r2, r0 + movs r0, #0xf + ands r2, r0 + b _081A10CA + .align 2, 0 +_081A10C4: .4byte gUnknown_3005AF0 +_081A10C8: + movs r2, #0 +_081A10CA: + ldr r3, _081A10FC + lsls r2, r2, #1 + ldr r0, [r7] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r2, r0 + adds r3, #0xc + adds r2, r2, r3 + ldrh r0, [r2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081A1100 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080088B8 +_081A10F2: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A10FC: .4byte gUnknown_85DC21C +_081A1100: .4byte gUnknown_82EA31C + thumb_func_end sub_081A0ED4 + + thumb_func_start sub_081A1104 +sub_081A1104: @ 0x081A1104 + ldr r0, _081A111C + ldr r2, [r0] + ldr r0, _081A1120 + ldrb r1, [r0] + adds r2, #0xb1 + lsls r1, r1, #6 + ldrb r3, [r2] + movs r0, #0x3f + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_081A111C: .4byte gUnknown_3005AF0 +_081A1120: .4byte gUnknown_2037282 + thumb_func_end sub_081A1104 + + thumb_func_start sub_081A1124 +sub_081A1124: @ 0x081A1124 + push {lr} + bl sub_081AA9A0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A1124 + + thumb_func_start sub_081A1130 +sub_081A1130: @ 0x081A1130 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r1, _081A1208 + ldr r3, [r1] + adds r0, r3, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + adds r7, r1, #0 + cmp r0, #2 + bhi _081A114E + b _081A126E +_081A114E: + movs r5, #0 + movs r2, #0 + adds r0, r3, #0 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + ldr r1, _081A120C + mov ip, r1 + ldr r1, _081A1210 + mov r8, r1 + cmp r0, #0 + beq _081A1188 + adds r3, r7, #0 +_081A1168: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #8 + bhi _081A1188 + ldr r0, [r3] + lsls r1, r2, #2 + adds r0, r0, r1 + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _081A1168 +_081A1188: + movs r4, #0 + cmp r4, r5 + bhs _081A122E + ldr r0, [r7] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + cmp r4, r0 + bge _081A122E + adds r6, r7, #0 + mov sb, r4 +_081A11A2: + ldr r3, [r6] + lsls r0, r4, #2 + adds r2, r3, r0 + adds r0, r2, #0 + adds r0, #0xb8 + ldrb r1, [r0] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _081A1214 + lsrs r0, r1, #6 + cmp r0, #0 + beq _081A1214 + adds r0, r2, #0 + adds r0, #0xba + ldrh r0, [r0] + mov r2, ip + ldrh r2, [r2] + cmp r0, r2 + bne _081A1214 + adds r0, r3, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r0, r3, r0 + adds r0, #0xb8 + ldrb r2, [r0] + movs r1, #0x3f + ands r1, r2 + strb r1, [r0] + ldr r1, [r6] + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r1, r1, r0 + mov r2, ip + ldrh r0, [r2] + adds r1, #0xba + strh r0, [r1] + mov r1, sb + mov r0, r8 + strh r1, [r0] + b _081A126E + .align 2, 0 +_081A1208: .4byte gUnknown_3005AF0 +_081A120C: .4byte gUnknown_2037282 +_081A1210: .4byte gUnknown_2037290 +_081A1214: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + bhs _081A122E + ldr r0, [r6] + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + cmp r4, r0 + blt _081A11A2 +_081A122E: + ldr r2, [r7] + adds r0, r2, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, #0xb8 + ldrb r1, [r2] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1c + subs r0, #3 + lsls r0, r0, #2 + adds r1, r1, r0 + mov r2, ip + ldrh r0, [r2] + adds r1, #0xba + strh r0, [r1] + movs r0, #1 + mov r1, r8 + strh r0, [r1] +_081A126E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A1130 + + thumb_func_start sub_081A127C +sub_081A127C: @ 0x081A127C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _081A12C0 + ldr r1, [r0] + movs r2, #0x8a + lsls r2, r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r4, r0, #0 + cmp r1, #0xff + beq _081A132E + movs r5, #0 +_081A129A: + ldr r1, [r4] + adds r2, r5, #1 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r1, r0 + movs r5, #0x8a + lsls r5, r5, #1 + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, #0xff + bne _081A12C4 + adds r0, r3, #0 + adds r0, #0xdc + adds r1, #0xdc + movs r2, #0x44 + bl memcpy + b _081A132E + .align 2, 0 +_081A12C0: .4byte gUnknown_3005AF0 +_081A12C4: + adds r5, r2, #0 + cmp r5, #2 + ble _081A129A + ldr r0, _081A133C + mov sl, r0 + movs r2, #1 + rsbs r2, r2, #0 + mov sb, r2 + movs r5, #1 + ldr r7, _081A1340 + movs r0, #0x90 + lsls r0, r0, #1 + mov r8, r0 + movs r6, #0x44 +_081A12E0: + ldr r0, [r7] + add r0, r8 + adds r0, #0x34 + bl sub_08083C64 + adds r4, r0, #0 + ldr r0, [r7] + adds r0, #0xa + bl sub_08083C64 + cmp r4, r0 + bne _081A1308 + ldr r0, [r7] + adds r0, r0, r6 + adds r0, #0xde + ldrb r0, [r0] + cmp r0, sl + bge _081A1308 + mov sl, r0 + mov sb, r5 +_081A1308: + movs r2, #0x44 + add r8, r2 + adds r6, #0x44 + adds r5, #1 + cmp r5, #3 + ble _081A12E0 + mov r5, sb + cmp r5, #0 + ble _081A132E + ldr r0, _081A1340 + ldr r1, [r0] + lsls r0, r5, #4 + add r0, sb + lsls r0, r0, #2 + adds r0, r1, r0 + adds r0, #0xdc + adds r1, #0xdc + bl memcpy +_081A132E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A133C: .4byte 0x0000FFFF +_081A1340: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A127C + + thumb_func_start sub_081A1344 +sub_081A1344: @ 0x081A1344 + push {r4, r5, lr} + ldr r4, _081A1384 + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0xb0 + ldrb r0, [r0] + adds r2, #0xdc + movs r1, #0x1f + ands r1, r0 + ldrb r3, [r2] + movs r0, #0x20 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0xb1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + adds r2, #0xdc + lsrs r1, r1, #0x19 + ldrb r3, [r2] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + movs r2, #0 + ldr r0, [r4] + b _081A1398 + .align 2, 0 +_081A1384: .4byte gUnknown_3005AF0 +_081A1388: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #8 + bhi _081A13A2 + ldr r0, [r4] + lsls r1, r2, #2 + adds r0, r0, r1 +_081A1398: + adds r0, #0xb8 + ldrb r0, [r0] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _081A1388 +_081A13A2: + ldr r4, _081A140C + ldr r0, [r4] + adds r0, #0xdd + strb r2, [r0] + ldr r0, [r4] + adds r1, r0, #0 + adds r1, #0xde + ldrb r0, [r1] + cmp r0, #0xfe + bhi _081A13BA + adds r0, #1 + strb r0, [r1] +_081A13BA: + ldr r0, [r4] + adds r0, #0xdd + ldrb r0, [r0] + bl sub_081A026C + movs r2, #0 + adds r3, r4, #0 + movs r4, #0x88 + lsls r4, r4, #1 + adds r5, r3, #0 +_081A13CE: + ldr r0, [r3] + adds r1, r0, r4 + adds r1, r1, r2 + adds r0, #0xa + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _081A13CE + ldr r1, [r5] + movs r2, #0x8a + lsls r2, r2, #1 + adds r0, r1, r2 + bl sub_080088B8 + ldr r1, [r5] + ldr r0, _081A1410 + ldrb r0, [r0] + ldr r2, _081A1414 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r5] + adds r0, #0xdc + bl sub_08165924 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A140C: .4byte gUnknown_3005AF0 +_081A1410: .4byte gUnknown_829BDA5 +_081A1414: .4byte 0x0000011B + thumb_func_end sub_081A1344 + + thumb_func_start sub_081A1418 +sub_081A1418: @ 0x081A1418 + push {lr} + ldr r2, _081A1460 + ldr r0, _081A1464 + ldr r0, [r0] + adds r0, #0xdc + ldrb r1, [r0] + lsls r1, r1, #0x1b + lsrs r1, r1, #0x1b + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r2 + ldrb r2, [r0, #0xa] + movs r1, #0 + ldr r3, _081A1468 + ldrb r0, [r3] + cmp r0, r2 + beq _081A144E +_081A143C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1d + bhi _081A144E + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081A143C +_081A144E: + cmp r1, #0x1e + beq _081A1474 + ldr r0, _081A146C + adds r0, r1, r0 + ldrb r1, [r0] + ldr r0, _081A1470 + bl sub_0809CF88 + b _081A14A0 + .align 2, 0 +_081A1460: .4byte gUnknown_85DC21C +_081A1464: .4byte gUnknown_3005AF0 +_081A1468: .4byte gUnknown_85BBE20 +_081A146C: .4byte gUnknown_85BBE52 +_081A1470: .4byte 0x00004010 +_081A1474: + movs r1, #0 + ldr r3, _081A14A4 + ldrb r0, [r3] + cmp r0, r2 + beq _081A1490 +_081A147E: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x13 + bhi _081A1490 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081A147E +_081A1490: + cmp r1, #0x14 + beq _081A14A0 + ldr r0, _081A14A8 + adds r0, r1, r0 + ldrb r1, [r0] + ldr r0, _081A14AC + bl sub_0809CF88 +_081A14A0: + pop {r0} + bx r0 + .align 2, 0 +_081A14A4: .4byte gUnknown_85BBE3E +_081A14A8: .4byte gUnknown_85BBE70 +_081A14AC: .4byte 0x00004010 + thumb_func_end sub_081A1418 + + thumb_func_start sub_081A14B0 +sub_081A14B0: @ 0x081A14B0 + push {lr} + ldr r2, _081A14F4 + ldr r0, _081A14F8 + ldr r0, [r0] + adds r0, #0xb0 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, r0, r2 + ldrb r2, [r0, #0xa] + movs r1, #0 + ldr r3, _081A14FC + ldrb r0, [r3] + cmp r0, r2 + beq _081A14E2 +_081A14D0: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x1d + bhi _081A14E2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081A14D0 +_081A14E2: + cmp r1, #0x1e + beq _081A1508 + ldr r0, _081A1500 + adds r0, r1, r0 + ldrb r1, [r0] + ldr r0, _081A1504 + bl sub_0809CF88 + b _081A1534 + .align 2, 0 +_081A14F4: .4byte gUnknown_85DC21C +_081A14F8: .4byte gUnknown_3005AF0 +_081A14FC: .4byte gUnknown_85BBE20 +_081A1500: .4byte gUnknown_85BBE52 +_081A1504: .4byte 0x00004010 +_081A1508: + movs r1, #0 + ldr r3, _081A1538 + ldrb r0, [r3] + cmp r0, r2 + beq _081A1524 +_081A1512: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0x13 + bhi _081A1524 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081A1512 +_081A1524: + cmp r1, #0x14 + beq _081A1534 + ldr r0, _081A153C + adds r0, r1, r0 + ldrb r1, [r0] + ldr r0, _081A1540 + bl sub_0809CF88 +_081A1534: + pop {r0} + bx r0 + .align 2, 0 +_081A1538: .4byte gUnknown_85BBE3E +_081A153C: .4byte gUnknown_85BBE70 +_081A1540: .4byte 0x00004010 + thumb_func_end sub_081A14B0 + + thumb_func_start sub_081A1544 +sub_081A1544: @ 0x081A1544 + ldr r1, _081A154C + movs r0, #1 + strh r0, [r1] + bx lr + .align 2, 0 +_081A154C: .4byte gUnknown_2037280 + thumb_func_end sub_081A1544 + + thumb_func_start sub_081A1550 +sub_081A1550: @ 0x081A1550 + ldr r1, _081A1558 + movs r0, #1 + strh r0, [r1] + bx lr + .align 2, 0 +_081A1558: .4byte gUnknown_2037280 + thumb_func_end sub_081A1550 + + thumb_func_start sub_081A155C +sub_081A155C: @ 0x081A155C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081A1580 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081A1576 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081A157C +_081A1576: + adds r0, r2, #0 + bl sub_080A8A78 +_081A157C: + pop {r0} + bx r0 + .align 2, 0 +_081A1580: .4byte gUnknown_3002360 + thumb_func_end sub_081A155C + + thumb_func_start sub_081A1584 +sub_081A1584: @ 0x081A1584 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081A15C8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081A159E + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081A15C0 +_081A159E: + ldr r2, _081A15CC + ldr r1, _081A15D0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + movs r3, #0xa + ldrsh r0, [r0, r3] + lsls r0, r0, #0x10 + orrs r1, r0 + str r1, [r2] + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080A8964 +_081A15C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A15C8: .4byte gUnknown_3002360 +_081A15CC: .4byte gUnknown_3006034 +_081A15D0: .4byte gUnknown_3005B60 + thumb_func_end sub_081A1584 + + thumb_func_start sub_081A15D4 +sub_081A15D4: @ 0x081A15D4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081A15FC + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081A1600 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + lsrs r4, r4, #0x10 + strh r4, [r1, #0xa] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A15FC: .4byte sub_081A1584 +_081A1600: .4byte gUnknown_3005B60 + thumb_func_end sub_081A15D4 + + thumb_func_start sub_081A1604 +sub_081A1604: @ 0x081A1604 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081A1624 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A8A44 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A1624: .4byte sub_081A155C + thumb_func_end sub_081A1604 + + thumb_func_start sub_081A1628 +sub_081A1628: @ 0x081A1628 + push {lr} + ldr r1, _081A1640 + ldr r0, _081A1644 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A1628 + + thumb_func_start sub_081A163C +sub_081A163C: @ 0x081A163C + bx r0 + .align 2, 0 +_081A1640: .4byte gUnknown_85DD244 +_081A1644: .4byte gUnknown_2037280 + thumb_func_end sub_081A163C + + thumb_func_start sub_081A1648 +sub_081A1648: @ 0x081A1648 + push {lr} + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0xff + bl sub_0809CF88 + ldr r0, _081A166C + ldr r0, [r0] + ldr r1, _081A1670 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #4 + bhi _081A16CA + lsls r0, r0, #2 + ldr r1, _081A1674 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A166C: .4byte gUnknown_3005AF0 +_081A1670: .4byte 0x00000CA8 +_081A1674: .4byte _081A1678 +_081A1678: @ jump table + .4byte _081A16CA @ case 0 + .4byte _081A168C @ case 1 + .4byte _081A16B8 @ case 2 + .4byte _081A1694 @ case 3 + .4byte _081A1690 @ case 4 +_081A168C: + movs r0, #0 + b _081A1696 +_081A1690: + movs r0, #0 + b _081A1696 +_081A1694: + movs r0, #1 +_081A1696: + bl sub_0813A880 + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, _081A16B0 + ldr r1, [r1] + ldr r2, _081A16B4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_0809CF88 + b _081A16CA + .align 2, 0 +_081A16B0: .4byte gUnknown_3005AF0 +_081A16B4: .4byte 0x00000CA8 +_081A16B8: + movs r0, #0x80 + lsls r0, r0, #7 + ldr r1, _081A16D0 + ldr r1, [r1] + ldr r2, _081A16D4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_0809CF88 +_081A16CA: + pop {r0} + bx r0 + .align 2, 0 +_081A16D0: .4byte gUnknown_3005AF0 +_081A16D4: .4byte 0x00000CA8 + thumb_func_end sub_081A1648 + + thumb_func_start sub_081A16D8 +sub_081A16D8: @ 0x081A16D8 + push {r4, r5, r6, lr} + ldr r0, _081A1708 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bne _081A16F4 + movs r5, #1 +_081A16F4: + ldr r0, _081A170C + ldrh r0, [r0] + cmp r0, #7 + bls _081A16FE + b _081A17FE +_081A16FE: + lsls r0, r0, #2 + ldr r1, _081A1710 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A1708: .4byte 0x000040CF +_081A170C: .4byte gUnknown_2037282 +_081A1710: .4byte _081A1714 +_081A1714: @ jump table + .4byte _081A1734 @ case 0 + .4byte _081A1750 @ case 1 + .4byte _081A1770 @ case 2 + .4byte _081A178C @ case 3 + .4byte _081A17FE @ case 4 + .4byte _081A17A8 @ case 5 + .4byte _081A17C0 @ case 6 + .4byte _081A17E0 @ case 7 +_081A1734: + ldr r1, _081A1744 + ldr r0, _081A1748 + ldr r0, [r0] + ldr r2, _081A174C + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r1] + b _081A17FE + .align 2, 0 +_081A1744: .4byte gUnknown_2037290 +_081A1748: .4byte gUnknown_3005AF0 +_081A174C: .4byte 0x00000CA8 +_081A1750: + ldr r1, _081A1764 + ldr r0, _081A1768 + ldr r0, [r0] + ldr r2, _081A176C + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strh r0, [r1] + b _081A17FE + .align 2, 0 +_081A1764: .4byte gUnknown_2037290 +_081A1768: .4byte gUnknown_3005AF0 +_081A176C: .4byte 0x00000CA9 +_081A1770: + ldr r1, _081A1780 + ldr r0, _081A1784 + ldr r0, [r0] + ldr r2, _081A1788 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + b _081A17FE + .align 2, 0 +_081A1780: .4byte gUnknown_2037290 +_081A1784: .4byte gUnknown_3005AF0 +_081A1788: .4byte 0x00000CB2 +_081A178C: + ldr r1, _081A179C + ldr r0, _081A17A0 + ldr r0, [r0] + ldr r2, _081A17A4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + b _081A17CE + .align 2, 0 +_081A179C: .4byte gUnknown_2037290 +_081A17A0: .4byte gUnknown_3005AF0 +_081A17A4: .4byte 0x00000CA9 +_081A17A8: + ldr r2, _081A17B8 + ldr r1, _081A17BC + ldrb r0, [r1] + strh r0, [r2] + movs r0, #0 + strb r0, [r1] + b _081A17FE + .align 2, 0 +_081A17B8: .4byte gUnknown_2037290 +_081A17BC: .4byte gUnknown_2023FDE +_081A17C0: + ldr r1, _081A17D4 + ldr r0, _081A17D8 + ldr r0, [r0] + ldr r2, _081A17DC + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1c +_081A17CE: + lsrs r0, r0, #0x1f + strh r0, [r1] + b _081A17FE + .align 2, 0 +_081A17D4: .4byte gUnknown_2037290 +_081A17D8: .4byte gUnknown_3005AF0 +_081A17DC: .4byte 0x00000CA9 +_081A17E0: + ldr r4, _081A1804 + ldr r0, _081A1808 + ldr r2, [r0] + movs r0, #0xd0 + lsls r0, r0, #4 + adds r2, r2, r0 + ldr r3, _081A180C + lsls r0, r5, #1 + lsls r1, r6, #2 + adds r0, r0, r1 + adds r0, r0, r3 + ldrh r1, [r2] + ldrh r0, [r0] + ands r0, r1 + strh r0, [r4] +_081A17FE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A1804: .4byte gUnknown_2037290 +_081A1808: .4byte gUnknown_3005AF0 +_081A180C: .4byte gUnknown_85DD228 + thumb_func_end sub_081A16D8 + + thumb_func_start sub_081A1810 +sub_081A1810: @ 0x081A1810 + push {r4, r5, lr} + ldr r0, _081A1840 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bne _081A182C + movs r4, #1 +_081A182C: + ldr r0, _081A1844 + ldrh r0, [r0] + cmp r0, #7 + bls _081A1836 + b _081A196C +_081A1836: + lsls r0, r0, #2 + ldr r1, _081A1848 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A1840: .4byte 0x000040CF +_081A1844: .4byte gUnknown_2037282 +_081A1848: .4byte _081A184C +_081A184C: @ jump table + .4byte _081A186C @ case 0 + .4byte _081A1888 @ case 1 + .4byte _081A18B4 @ case 2 + .4byte _081A18D0 @ case 3 + .4byte _081A18F8 @ case 4 + .4byte _081A196C @ case 5 + .4byte _081A1924 @ case 6 + .4byte _081A1950 @ case 7 +_081A186C: + ldr r0, _081A187C + ldr r0, [r0] + ldr r1, _081A1880 + ldrh r1, [r1] + ldr r2, _081A1884 + adds r0, r0, r2 + strb r1, [r0] + b _081A196C + .align 2, 0 +_081A187C: .4byte gUnknown_3005AF0 +_081A1880: .4byte gUnknown_2037284 +_081A1884: .4byte 0x00000CA8 +_081A1888: + ldr r0, _081A18A8 + ldr r2, [r0] + ldr r0, _081A18AC + ldrb r0, [r0] + ldr r1, _081A18B0 + adds r2, r2, r1 + movs r1, #3 + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + b _081A196C + .align 2, 0 +_081A18A8: .4byte gUnknown_3005AF0 +_081A18AC: .4byte gUnknown_2037284 +_081A18B0: .4byte 0x00000CA9 +_081A18B4: + ldr r0, _081A18C4 + ldr r0, [r0] + ldr r1, _081A18C8 + ldrh r1, [r1] + ldr r2, _081A18CC + adds r0, r0, r2 + strh r1, [r0] + b _081A196C + .align 2, 0 +_081A18C4: .4byte gUnknown_3005AF0 +_081A18C8: .4byte gUnknown_2037284 +_081A18CC: .4byte 0x00000CB2 +_081A18D0: + ldr r0, _081A18EC + ldr r3, [r0] + ldr r0, _081A18F0 + ldrb r0, [r0] + ldr r1, _081A18F4 + adds r3, r3, r1 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r2, [r3] + movs r0, #5 + rsbs r0, r0, #0 + b _081A193C + .align 2, 0 +_081A18EC: .4byte gUnknown_3005AF0 +_081A18F0: .4byte gUnknown_2037284 +_081A18F4: .4byte 0x00000CA9 +_081A18F8: + movs r2, #0 + ldr r5, _081A1918 + ldr r4, _081A191C + ldr r3, _081A1920 +_081A1900: + ldr r1, [r5] + lsls r0, r2, #1 + adds r1, r1, r4 + adds r1, r1, r0 + adds r0, r2, r3 + ldrb r0, [r0] + strh r0, [r1] + adds r2, #1 + cmp r2, #3 + ble _081A1900 + b _081A196C + .align 2, 0 +_081A1918: .4byte gUnknown_3005AF0 +_081A191C: .4byte 0x00000CAA +_081A1920: .4byte gUnknown_203CBC4 +_081A1924: + ldr r0, _081A1944 + ldr r3, [r0] + ldr r0, _081A1948 + ldrb r0, [r0] + ldr r2, _081A194C + adds r3, r3, r2 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3] + movs r0, #9 + rsbs r0, r0, #0 +_081A193C: + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _081A196C + .align 2, 0 +_081A1944: .4byte gUnknown_3005AF0 +_081A1948: .4byte gUnknown_2037284 +_081A194C: .4byte 0x00000CA9 +_081A1950: + ldr r0, _081A1974 + ldr r2, [r0] + movs r0, #0xd0 + lsls r0, r0, #4 + adds r2, r2, r0 + ldr r3, _081A1978 + lsls r1, r4, #1 + lsls r0, r5, #2 + adds r1, r1, r0 + adds r1, r1, r3 + ldrh r0, [r2] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r2] +_081A196C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A1974: .4byte gUnknown_3005AF0 +_081A1978: .4byte gUnknown_85DD228 + thumb_func_end sub_081A1810 + + thumb_func_start sub_081A197C +sub_081A197C: @ 0x081A197C + push {r4, r5, r6, r7, lr} + bl sub_081B81F8 + movs r3, #0 + ldr r4, _081A19B4 + ldrh r0, [r4] + cmp r3, r0 + bge _081A19A8 + ldr r7, _081A19B8 + ldr r6, _081A19BC + ldr r5, _081A19C0 +_081A1992: + adds r2, r3, r7 + ldr r0, [r6] + lsls r1, r3, #1 + adds r0, r0, r5 + adds r0, r0, r1 + ldrh r0, [r0] + strb r0, [r2] + adds r3, #1 + ldrh r0, [r4] + cmp r3, r0 + blt _081A1992 +_081A19A8: + bl sub_080F9D78 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A19B4: .4byte gUnknown_2037282 +_081A19B8: .4byte gUnknown_203CBC4 +_081A19BC: .4byte gUnknown_3005AF0 +_081A19C0: .4byte 0x00000CAA + thumb_func_end sub_081A197C + + thumb_func_start sub_081A19C4 +sub_081A19C4: @ 0x081A19C4 + push {lr} + bl sub_080008F4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A19C4 + + thumb_func_start sub_081A19D0 +sub_081A19D0: @ 0x081A19D0 + ldr r1, _081A19D8 + ldr r0, _081A19DC + str r0, [r1] + bx lr + .align 2, 0 +_081A19D8: .4byte gUnknown_203B954 +_081A19DC: .4byte gUnknown_85B4A10 + thumb_func_end sub_081A19D0 + + thumb_func_start sub_081A19E0 +sub_081A19E0: @ 0x081A19E0 + push {r4, r5, lr} + movs r4, #0 + movs r5, #0x64 +_081A19E6: + ldr r0, _081A1A30 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A1A34 + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bhi _081A1A1E + ldr r0, _081A1A38 + ldr r0, [r0] + ldrh r1, [r1] + subs r1, #1 + muls r1, r5, r1 + adds r0, r0, r1 + movs r1, #0x8e + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r2, _081A1A3C + adds r1, r4, #0 + muls r1, r5, r1 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy +_081A1A1E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081A19E6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A1A30: .4byte gUnknown_3005AF0 +_081A1A34: .4byte 0x00000CAA +_081A1A38: .4byte gUnknown_3005AEC +_081A1A3C: .4byte gUnknown_2024190 + thumb_func_end sub_081A19E0 + + thumb_func_start sub_081A1A40 +sub_081A1A40: @ 0x081A1A40 + push {lr} + ldr r0, _081A1A64 + ldrh r1, [r0] + adds r2, r0, #0 + cmp r1, #3 + bls _081A1A50 + movs r0, #0 + strh r0, [r2] +_081A1A50: + ldr r0, _081A1A68 + ldrh r0, [r0] + cmp r0, #7 + bhi _081A1AC6 + lsls r0, r0, #2 + ldr r1, _081A1A6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A1A64: .4byte gUnknown_2037284 +_081A1A68: .4byte gUnknown_2037282 +_081A1A6C: .4byte _081A1A70 +_081A1A70: @ jump table + .4byte _081A1A90 @ case 0 + .4byte _081A1A98 @ case 1 + .4byte _081A1AA0 @ case 2 + .4byte _081A1AB6 @ case 3 + .4byte _081A1AAE @ case 4 + .4byte _081A1AA8 @ case 5 + .4byte _081A1ABC @ case 6 + .4byte _081A1AC2 @ case 7 +_081A1A90: + ldrb r0, [r2] + bl sub_081A1C9C + b _081A1AC6 +_081A1A98: + ldrb r0, [r2] + bl sub_081A1F30 + b _081A1AC6 +_081A1AA0: + ldrb r0, [r2] + bl sub_081A2250 + b _081A1AC6 +_081A1AA8: + bl sub_081A2490 + b _081A1AC6 +_081A1AAE: + ldrb r0, [r2] + bl sub_081A2A78 + b _081A1AC6 +_081A1AB6: + bl sub_081A2758 + b _081A1AC6 +_081A1ABC: + bl sub_081A2CFC + b _081A1AC6 +_081A1AC2: + bl sub_081A2DE4 +_081A1AC6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A1A40 + + thumb_func_start sub_081A1ACC +sub_081A1ACC: @ 0x081A1ACC + push {lr} + ldr r1, _081A1AE4 + ldr r1, [r1] + ldr r2, _081A1AE8 + adds r1, r1, r2 + ldr r1, [r1] + ands r1, r0 + cmp r1, #0 + bne _081A1AEC + movs r0, #0 + b _081A1AEE + .align 2, 0 +_081A1AE4: .4byte gUnknown_3005AF0 +_081A1AE8: .4byte 0x00000CDC +_081A1AEC: + movs r0, #1 +_081A1AEE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A1ACC + + thumb_func_start sub_081A1AF4 +sub_081A1AF4: @ 0x081A1AF4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + ldr r0, _081A1B78 + mov sb, r0 + ldrb r0, [r0] + lsls r4, r2, #0x1b + lsrs r4, r4, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + str r5, [sp] + movs r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + mov r2, ip + adds r3, r4, #0 + bl sub_0800449C + ldr r0, _081A1B7C + cmp r6, r0 + bls _081A1B38 + adds r6, r0, #0 +_081A1B38: + ldr r0, _081A1B80 + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A1B84 + ldr r1, _081A1B88 + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + mov r3, r8 + adds r3, #6 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + str r5, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A1B78: .4byte gUnknown_203A840 +_081A1B7C: .4byte 0x0000270F +_081A1B80: .4byte gUnknown_2021C40 +_081A1B84: .4byte gUnknown_2021C7C +_081A1B88: .4byte gUnknown_85DD41D + thumb_func_end sub_081A1AF4 + + thumb_func_start sub_081A1B8C +sub_081A1B8C: @ 0x081A1B8C + push {r4, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _081A1BBC + ldr r4, [r4] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + movs r0, #0xcf + lsls r0, r0, #4 + adds r4, r4, r0 + adds r4, r4, r1 + ldrh r1, [r4] + ldr r0, _081A1BC0 + bl sub_081A1AF4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A1BBC: .4byte gUnknown_3005AF0 +_081A1BC0: .4byte gUnknown_85DD42A + thumb_func_end sub_081A1B8C + + thumb_func_start sub_081A1BC4 +sub_081A1BC4: @ 0x081A1BC4 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A1BEC + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + movs r0, #0xce + lsls r0, r0, #4 + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081A1BF0 + cmp r0, r1 + bls _081A1BE6 + adds r0, r1, #0 +_081A1BE6: + pop {r1} + bx r1 + .align 2, 0 +_081A1BEC: .4byte gUnknown_3005AF0 +_081A1BF0: .4byte 0x0000270F + thumb_func_end sub_081A1BC4 + + thumb_func_start sub_081A1BF4 +sub_081A1BF4: @ 0x081A1BF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081A1BC4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r4, #1 + beq _081A1C34 + cmp r4, #1 + ble _081A1C28 + cmp r4, #2 + beq _081A1C44 + cmp r4, #3 + beq _081A1C54 +_081A1C28: + cmp r5, #0 + beq _081A1C30 + movs r0, #2 + b _081A1C62 +_081A1C30: + movs r0, #1 + b _081A1C62 +_081A1C34: + cmp r5, #0 + beq _081A1C3E + movs r0, #0x80 + lsls r0, r0, #8 + b _081A1C62 +_081A1C3E: + movs r0, #0x80 + lsls r0, r0, #7 + b _081A1C62 +_081A1C44: + cmp r5, #0 + beq _081A1C4E + movs r0, #0x80 + lsls r0, r0, #0xa + b _081A1C62 +_081A1C4E: + movs r0, #0x80 + lsls r0, r0, #9 + b _081A1C62 +_081A1C54: + cmp r5, #0 + beq _081A1C5E + movs r0, #0x80 + lsls r0, r0, #0xc + b _081A1C62 +_081A1C5E: + movs r0, #0x80 + lsls r0, r0, #0xb +_081A1C62: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A1C80 + ldr r0, _081A1C7C + adds r1, r6, #0 + adds r2, r7, #0 + mov r3, r8 + bl sub_081A1AF4 + b _081A1C8C + .align 2, 0 +_081A1C7C: .4byte gUnknown_85DD425 +_081A1C80: + ldr r0, _081A1C98 + adds r1, r6, #0 + adds r2, r7, #0 + mov r3, r8 + bl sub_081A1AF4 +_081A1C8C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A1C98: .4byte gUnknown_85DD42F + thumb_func_end sub_081A1BF4 + + thumb_func_start sub_081A1C9C +sub_081A1C9C: @ 0x081A1C9C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _081A1CCC + ldr r0, _081A1CD0 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + cmp r6, #0 + bne _081A1CDC + ldr r0, _081A1CD4 + ldr r1, _081A1CD8 + bl sub_08008BCC + b _081A1D14 + .align 2, 0 +_081A1CCC: .4byte gUnknown_203A840 +_081A1CD0: .4byte gUnknown_85DD2A0 +_081A1CD4: .4byte gUnknown_2021C7C +_081A1CD8: .4byte gUnknown_85DD2EC +_081A1CDC: + cmp r6, #1 + bne _081A1CF4 + ldr r0, _081A1CEC + ldr r1, _081A1CF0 + bl sub_08008BCC + b _081A1D14 + .align 2, 0 +_081A1CEC: .4byte gUnknown_2021C7C +_081A1CF0: .4byte gUnknown_85DD303 +_081A1CF4: + cmp r6, #2 + bne _081A1D0C + ldr r0, _081A1D04 + ldr r1, _081A1D08 + bl sub_08008BCC + b _081A1D14 + .align 2, 0 +_081A1D04: .4byte gUnknown_2021C7C +_081A1D08: .4byte gUnknown_85DD31A +_081A1D0C: + ldr r0, _081A1DC4 + ldr r1, _081A1DC8 + bl sub_08008BCC +_081A1D14: + ldr r5, _081A1DCC + ldrb r0, [r5] + ldr r2, _081A1DC4 + movs r1, #0x12 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A1DD0 + movs r1, #0x32 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A1DD4 + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + movs r5, #0 +_081A1D56: + ldr r7, _081A1DCC + ldrb r0, [r7] + lsls r3, r4, #1 + adds r3, r3, r4 + adds r3, #1 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A1DD8 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xa + bls _081A1D56 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0xb + movs r3, #6 + bl sub_081A1BF4 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0xb + movs r3, #8 + bl sub_081A1B8C + adds r0, r6, #0 + movs r1, #1 + movs r2, #0xb + movs r3, #0xc + bl sub_081A1BF4 + adds r0, r6, #0 + movs r1, #1 + movs r2, #0xb + movs r3, #0xe + bl sub_081A1B8C + ldrb r0, [r7] + bl sub_0800365C + ldrb r0, [r7] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A1DC4: .4byte gUnknown_2021C7C +_081A1DC8: .4byte gUnknown_85DD331 +_081A1DCC: .4byte gUnknown_203A840 +_081A1DD0: .4byte gUnknown_85DD40E +_081A1DD4: .4byte gUnknown_85DD415 +_081A1DD8: .4byte gUnknown_85DD2E8 + thumb_func_end sub_081A1C9C + + thumb_func_start sub_081A1DDC +sub_081A1DDC: @ 0x081A1DDC + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A1E00 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, _081A1E04 + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081A1E08 + cmp r0, r1 + bls _081A1DFC + adds r0, r1, #0 +_081A1DFC: + pop {r1} + bx r1 + .align 2, 0 +_081A1E00: .4byte gUnknown_3005AF0 +_081A1E04: .4byte 0x00000D0C +_081A1E08: .4byte 0x0000270F + thumb_func_end sub_081A1DDC + + thumb_func_start sub_081A1E0C +sub_081A1E0C: @ 0x081A1E0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov sl, r0 + adds r7, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + ldr r4, [sp, #0x2c] + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + ldr r0, _081A1E94 + mov sb, r0 + ldrb r0, [r0] + lsls r3, r5, #0x1b + lsrs r3, r3, #0x18 + lsrs r4, r4, #0x15 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r1, #0 + mov r8, r1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + mov r2, sl + bl sub_0800449C + ldr r0, _081A1E98 + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r6, _081A1E9C + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + adds r5, #5 + lsls r5, r5, #0x1b + lsrs r5, r5, #0x18 + str r4, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A1E94: .4byte gUnknown_203A840 +_081A1E98: .4byte gUnknown_2021C40 +_081A1E9C: .4byte gUnknown_2021C7C + thumb_func_end sub_081A1E0C + + thumb_func_start sub_081A1EA0 +sub_081A1EA0: @ 0x081A1EA0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r6, r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081A1DDC + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r4, #0 + beq _081A1ECE + cmp r4, #1 + beq _081A1EDA +_081A1ECE: + cmp r5, #0 + beq _081A1ED6 + movs r0, #8 + b _081A1EE8 +_081A1ED6: + movs r0, #4 + b _081A1EE8 +_081A1EDA: + cmp r5, #0 + beq _081A1EE4 + movs r0, #0x80 + lsls r0, r0, #0xe + b _081A1EE8 +_081A1EE4: + movs r0, #0x80 + lsls r0, r0, #0xd +_081A1EE8: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A1F0C + ldr r0, _081A1F04 + ldr r1, _081A1F08 + str r6, [sp] + adds r2, r7, #0 + mov r3, r8 + bl sub_081A1E0C + b _081A1F1A + .align 2, 0 +_081A1F04: .4byte gUnknown_85DD425 +_081A1F08: .4byte gUnknown_85DD447 +_081A1F0C: + ldr r0, _081A1F28 + ldr r1, _081A1F2C + str r6, [sp] + adds r2, r7, #0 + mov r3, r8 + bl sub_081A1E0C +_081A1F1A: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A1F28: .4byte gUnknown_85DD42F +_081A1F2C: .4byte gUnknown_85DD447 + thumb_func_end sub_081A1EA0 + + thumb_func_start sub_081A1F30 +sub_081A1F30: @ 0x081A1F30 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _081A1F68 + ldr r0, _081A1F6C + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + cmp r6, #0 + bne _081A1F78 + ldr r0, _081A1F70 + ldr r1, _081A1F74 + bl sub_08008BCC + b _081A1F80 + .align 2, 0 +_081A1F68: .4byte gUnknown_203A840 +_081A1F6C: .4byte gUnknown_85DD2A8 +_081A1F70: .4byte gUnknown_2021C7C +_081A1F74: .4byte gUnknown_85DD34A +_081A1F78: + ldr r0, _081A2094 + ldr r1, _081A2098 + bl sub_08008BCC +_081A1F80: + ldr r5, _081A209C + ldrb r0, [r5] + ldr r2, _081A2094 + movs r1, #2 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A20A0 + movs r1, #0x22 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A20A4 + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + lsls r7, r6, #2 + movs r5, #0 +_081A1FC4: + ldr r0, _081A209C + mov sl, r0 + ldrb r0, [r0] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A20A8 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bls _081A1FC4 + adds r0, r6, #0 + movs r1, #0 + movs r2, #0xa + movs r3, #4 + bl sub_081A1EA0 + ldr r1, _081A20AC + mov r8, r1 + ldr r4, _081A20B0 + ldr r0, [r4] + ldr r1, _081A20B4 + adds r0, r0, r1 + adds r0, r0, r7 + ldrh r2, [r0] + movs r0, #6 + str r0, [sp] + mov r0, r8 + ldr r1, _081A20B8 + movs r3, #0xa + bl sub_081A1E0C + ldr r5, _081A20BC + ldr r0, _081A20C0 + mov sb, r0 + ldr r0, [r4] + ldr r1, _081A20C4 + adds r0, r0, r1 + adds r0, r0, r7 + ldrh r2, [r0] + movs r0, #8 + str r0, [sp] + adds r0, r5, #0 + mov r1, sb + movs r3, #0xa + bl sub_081A1E0C + adds r0, r6, #0 + movs r1, #1 + movs r2, #0xa + movs r3, #0xc + bl sub_081A1EA0 + ldr r0, [r4] + ldr r1, _081A20C8 + adds r0, r0, r1 + adds r0, r0, r7 + ldrh r2, [r0] + movs r0, #0xe + str r0, [sp] + mov r0, r8 + ldr r1, _081A20B8 + movs r3, #0xa + bl sub_081A1E0C + ldr r0, [r4] + ldr r1, _081A20CC + adds r0, r0, r1 + adds r0, r0, r7 + ldrh r2, [r0] + movs r0, #0x10 + str r0, [sp] + adds r0, r5, #0 + mov r1, sb + movs r3, #0xa + bl sub_081A1E0C + mov r1, sl + ldrb r0, [r1] + bl sub_0800365C + mov r1, sl + ldrb r0, [r1] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2094: .4byte gUnknown_2021C7C +_081A2098: .4byte gUnknown_85DD363 +_081A209C: .4byte gUnknown_203A840 +_081A20A0: .4byte gUnknown_85DD40E +_081A20A4: .4byte gUnknown_85DD415 +_081A20A8: .4byte gUnknown_85DD2E8 +_081A20AC: .4byte gUnknown_85DD42A +_081A20B0: .4byte gUnknown_3005AF0 +_081A20B4: .4byte 0x00000D14 +_081A20B8: .4byte gUnknown_85DD447 +_081A20BC: .4byte gUnknown_85DD442 +_081A20C0: .4byte gUnknown_85DD44D +_081A20C4: .4byte 0x00000D1C +_081A20C8: .4byte 0x00000D16 +_081A20CC: .4byte 0x00000D1E + thumb_func_end sub_081A1F30 + + thumb_func_start sub_081A20D0 +sub_081A20D0: @ 0x081A20D0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + ldr r0, _081A2154 + mov sb, r0 + ldrb r0, [r0] + lsls r4, r2, #0x1b + lsrs r4, r4, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + str r5, [sp] + movs r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + mov r2, ip + adds r3, r4, #0 + bl sub_0800449C + ldr r0, _081A2158 + cmp r6, r0 + bls _081A2114 + adds r6, r0, #0 +_081A2114: + ldr r0, _081A215C + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A2160 + ldr r1, _081A2164 + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + mov r3, r8 + adds r3, #6 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + str r5, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2154: .4byte gUnknown_203A840 +_081A2158: .4byte 0x0000270F +_081A215C: .4byte gUnknown_2021C40 +_081A2160: .4byte gUnknown_2021C7C +_081A2164: .4byte gUnknown_85DD41D + thumb_func_end sub_081A20D0 + + thumb_func_start sub_081A2168 +sub_081A2168: @ 0x081A2168 + push {r4, lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r4, _081A2198 + ldr r4, [r4] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + movs r0, #0xdd + lsls r0, r0, #4 + adds r4, r4, r0 + adds r4, r4, r1 + ldrh r1, [r4] + ldr r0, _081A219C + bl sub_081A20D0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A2198: .4byte gUnknown_3005AF0 +_081A219C: .4byte gUnknown_85DD42A + thumb_func_end sub_081A2168 + + thumb_func_start sub_081A21A0 +sub_081A21A0: @ 0x081A21A0 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A21C4 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, _081A21C8 + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081A21CC + cmp r0, r1 + bls _081A21C0 + adds r0, r1, #0 +_081A21C0: + pop {r1} + bx r1 + .align 2, 0 +_081A21C4: .4byte gUnknown_3005AF0 +_081A21C8: .4byte 0x00000DC8 +_081A21CC: .4byte 0x0000270F + thumb_func_end sub_081A21A0 + + thumb_func_start sub_081A21D0 +sub_081A21D0: @ 0x081A21D0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081A21A0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r4, #0 + beq _081A21FC + cmp r4, #1 + beq _081A2208 +_081A21FC: + cmp r5, #0 + beq _081A2204 + movs r0, #0x20 + b _081A2216 +_081A2204: + movs r0, #0x10 + b _081A2216 +_081A2208: + cmp r5, #0 + beq _081A2212 + movs r0, #0x80 + lsls r0, r0, #0x10 + b _081A2216 +_081A2212: + movs r0, #0x80 + lsls r0, r0, #0xf +_081A2216: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A2234 + ldr r0, _081A2230 + adds r1, r6, #0 + adds r2, r7, #0 + mov r3, r8 + bl sub_081A20D0 + b _081A2240 + .align 2, 0 +_081A2230: .4byte gUnknown_85DD425 +_081A2234: + ldr r0, _081A224C + adds r1, r6, #0 + adds r2, r7, #0 + mov r3, r8 + bl sub_081A20D0 +_081A2240: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A224C: .4byte gUnknown_85DD42F + thumb_func_end sub_081A21D0 + + thumb_func_start sub_081A2250 +sub_081A2250: @ 0x081A2250 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _081A2280 + ldr r0, _081A2284 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + cmp r7, #0 + bne _081A2290 + ldr r0, _081A2288 + ldr r1, _081A228C + bl sub_08008BCC + b _081A2298 + .align 2, 0 +_081A2280: .4byte gUnknown_203A840 +_081A2284: .4byte gUnknown_85DD2B0 +_081A2288: .4byte gUnknown_2021C7C +_081A228C: .4byte gUnknown_85DD37B +_081A2290: + ldr r0, _081A2348 + ldr r1, _081A234C + bl sub_08008BCC +_081A2298: + ldr r5, _081A2350 + ldrb r0, [r5] + ldr r2, _081A2348 + movs r1, #0x12 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2354 + movs r1, #0x32 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2358 + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + movs r5, #0 +_081A22DA: + ldr r6, _081A2350 + ldrb r0, [r6] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A235C + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xa + bls _081A22DA + adds r0, r7, #0 + movs r1, #0 + movs r2, #0xb + movs r3, #6 + bl sub_081A21D0 + adds r0, r7, #0 + movs r1, #0 + movs r2, #0xb + movs r3, #8 + bl sub_081A2168 + adds r0, r7, #0 + movs r1, #1 + movs r2, #0xb + movs r3, #0xc + bl sub_081A21D0 + adds r0, r7, #0 + movs r1, #1 + movs r2, #0xb + movs r3, #0xe + bl sub_081A2168 + ldrb r0, [r6] + bl sub_0800365C + ldrb r0, [r6] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2348: .4byte gUnknown_2021C7C +_081A234C: .4byte gUnknown_85DD391 +_081A2350: .4byte gUnknown_203A840 +_081A2354: .4byte gUnknown_85DD40E +_081A2358: .4byte gUnknown_85DD415 +_081A235C: .4byte gUnknown_85DD2E8 + thumb_func_end sub_081A2250 + + thumb_func_start sub_081A2360 +sub_081A2360: @ 0x081A2360 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _081A2380 + ldr r1, [r1] + lsrs r0, r0, #0x17 + ldr r2, _081A2384 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _081A2388 + cmp r0, r1 + bls _081A237A + adds r0, r1, #0 +_081A237A: + pop {r1} + bx r1 + .align 2, 0 +_081A2380: .4byte gUnknown_3005AF0 +_081A2384: .4byte 0x00000E04 +_081A2388: .4byte 0x0000270F + thumb_func_end sub_081A2360 + + thumb_func_start sub_081A238C +sub_081A238C: @ 0x081A238C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov sl, r0 + adds r7, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + ldr r4, [sp, #0x2c] + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + ldr r0, _081A2414 + mov sb, r0 + ldrb r0, [r0] + lsls r3, r5, #0x1b + lsrs r3, r3, #0x18 + lsrs r4, r4, #0x15 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r1, #0 + mov r8, r1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + mov r2, sl + bl sub_0800449C + ldr r0, _081A2418 + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r6, _081A241C + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + adds r5, #5 + lsls r5, r5, #0x1b + lsrs r5, r5, #0x18 + str r4, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2414: .4byte gUnknown_203A840 +_081A2418: .4byte gUnknown_2021C40 +_081A241C: .4byte gUnknown_2021C7C + thumb_func_end sub_081A238C + + thumb_func_start sub_081A2420 +sub_081A2420: @ 0x081A2420 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + adds r0, r4, #0 + bl sub_081A2360 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r4, #0 + beq _081A2446 + movs r0, #0x80 + lsls r0, r0, #4 + b _081A244A +_081A2446: + movs r0, #0x80 + lsls r0, r0, #3 +_081A244A: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A2470 + ldr r0, _081A2468 + ldr r1, _081A246C + str r5, [sp] + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A1E0C + b _081A247E + .align 2, 0 +_081A2468: .4byte gUnknown_85DD425 +_081A246C: .4byte gUnknown_85DD458 +_081A2470: + ldr r0, _081A2488 + ldr r1, _081A248C + str r5, [sp] + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A1E0C +_081A247E: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2488: .4byte gUnknown_85DD42F +_081A248C: .4byte gUnknown_85DD458 + thumb_func_end sub_081A2420 + + thumb_func_start sub_081A2490 +sub_081A2490: @ 0x081A2490 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + ldr r5, _081A25BC + ldr r0, _081A25C0 + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + movs r1, #0x11 + bl sub_08003B18 + ldr r6, _081A25C4 + ldr r1, _081A25C8 + adds r0, r6, #0 + bl sub_08008BCC + ldrb r0, [r5] + movs r1, #2 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x28 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A25CC + movs r1, #0x22 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A25D0 + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r5, #0 +_081A24FE: + ldr r7, _081A25BC + ldrb r0, [r7] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A25D4 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xa + bls _081A24FE + movs r0, #0 + movs r1, #0xb + movs r2, #4 + bl sub_081A2420 + ldr r0, _081A25D8 + mov r8, r0 + ldr r1, _081A25DC + mov sb, r1 + ldr r4, _081A25E0 + ldr r0, [r4] + ldr r1, _081A25E4 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #6 + str r0, [sp] + mov r0, r8 + mov r1, sb + movs r3, #0xb + bl sub_081A238C + ldr r5, _081A25E8 + ldr r6, _081A25EC + ldr r0, [r4] + ldr r1, _081A25F0 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #8 + str r0, [sp] + adds r0, r5, #0 + adds r1, r6, #0 + movs r3, #0xb + bl sub_081A238C + movs r0, #1 + movs r1, #0xb + movs r2, #0xc + bl sub_081A2420 + ldr r0, [r4] + ldr r1, _081A25F4 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #0xe + str r0, [sp] + mov r0, r8 + mov r1, sb + movs r3, #0xb + bl sub_081A238C + ldr r0, [r4] + ldr r1, _081A25F8 + adds r0, r0, r1 + ldrh r2, [r0] + movs r0, #0x10 + str r0, [sp] + adds r0, r5, #0 + adds r1, r6, #0 + movs r3, #0xb + bl sub_081A238C + ldrb r0, [r7] + bl sub_0800365C + ldrb r0, [r7] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A25BC: .4byte gUnknown_203A840 +_081A25C0: .4byte gUnknown_85DD2B8 +_081A25C4: .4byte gUnknown_2021C7C +_081A25C8: .4byte gUnknown_85DD3A6 +_081A25CC: .4byte gUnknown_85DD40E +_081A25D0: .4byte gUnknown_85DD415 +_081A25D4: .4byte gUnknown_85DD2E8 +_081A25D8: .4byte gUnknown_85DD42A +_081A25DC: .4byte gUnknown_85DD458 +_081A25E0: .4byte gUnknown_3005AF0 +_081A25E4: .4byte 0x00000E08 +_081A25E8: .4byte gUnknown_85DD442 +_081A25EC: .4byte gUnknown_85DD461 +_081A25F0: .4byte 0x00000E0C +_081A25F4: .4byte 0x00000E0A +_081A25F8: .4byte 0x00000E0E + thumb_func_end sub_081A2490 + + thumb_func_start sub_081A25FC +sub_081A25FC: @ 0x081A25FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + ldr r0, _081A2684 + mov sb, r0 + ldrb r0, [r0] + lsls r4, r2, #0x1b + lsrs r4, r4, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + str r5, [sp] + movs r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + mov r2, ip + adds r3, r4, #0 + bl sub_0800449C + ldr r0, _081A2688 + cmp r6, r0 + bls _081A2640 + adds r6, r0, #0 +_081A2640: + ldr r0, _081A268C + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A2690 + ldr r1, _081A2694 + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + lsls r3, r1, #0x1b + movs r1, #0xc0 + lsls r1, r1, #0x16 + adds r3, r3, r1 + lsrs r3, r3, #0x18 + str r5, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2684: .4byte gUnknown_203A840 +_081A2688: .4byte 0x0000270F +_081A268C: .4byte gUnknown_2021C40 +_081A2690: .4byte gUnknown_2021C7C +_081A2694: .4byte gUnknown_85DD46A + thumb_func_end sub_081A25FC + + thumb_func_start sub_081A2698 +sub_081A2698: @ 0x081A2698 + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + lsls r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _081A26C4 + ldr r1, [r1] + lsrs r0, r0, #0x17 + ldr r2, _081A26C8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r1, [r1] + ldr r0, _081A26CC + adds r2, r4, #0 + bl sub_081A25FC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A26C4: .4byte gUnknown_3005AF0 +_081A26C8: .4byte 0x00000DDE +_081A26CC: .4byte gUnknown_85DD42A + thumb_func_end sub_081A2698 + + thumb_func_start sub_081A26D0 +sub_081A26D0: @ 0x081A26D0 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _081A26F0 + ldr r1, [r1] + lsrs r0, r0, #0x17 + ldr r2, _081A26F4 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _081A26F8 + cmp r0, r1 + bls _081A26EA + adds r0, r1, #0 +_081A26EA: + pop {r1} + bx r1 + .align 2, 0 +_081A26F0: .4byte gUnknown_3005AF0 +_081A26F4: .4byte 0x00000DDA +_081A26F8: .4byte 0x0000270F + thumb_func_end sub_081A26D0 + + thumb_func_start sub_081A26FC +sub_081A26FC: @ 0x081A26FC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + adds r0, r4, #0 + bl sub_081A26D0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #0 + beq _081A271E + movs r0, #0x80 + b _081A2720 +_081A271E: + movs r0, #0x40 +_081A2720: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A2740 + ldr r0, _081A273C + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A25FC + b _081A274C + .align 2, 0 +_081A273C: .4byte gUnknown_85DD425 +_081A2740: + ldr r0, _081A2754 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A25FC +_081A274C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2754: .4byte gUnknown_85DD42F + thumb_func_end sub_081A26FC + + thumb_func_start sub_081A2758 +sub_081A2758: @ 0x081A2758 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r4, _081A2828 + ldr r0, _081A282C + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + movs r4, #0 + movs r5, #0 +_081A277A: + ldr r6, _081A2828 + ldrb r0, [r6] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A2830 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bls _081A277A + ldr r5, _081A2834 + ldr r1, _081A2838 + adds r0, r5, #0 + bl sub_08008BCC + ldrb r0, [r6] + movs r1, #0x10 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r6] + ldr r2, _081A283C + movs r1, #0x30 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r6] + ldr r2, _081A2840 + movs r1, #0x60 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + movs r0, #0 + movs r1, #0xb + movs r2, #6 + bl sub_081A26FC + movs r0, #0 + movs r1, #0xb + movs r2, #8 + bl sub_081A2698 + movs r0, #1 + movs r1, #0xb + movs r2, #0xc + bl sub_081A26FC + movs r0, #1 + movs r1, #0xb + movs r2, #0xe + bl sub_081A2698 + ldrb r0, [r6] + bl sub_0800365C + ldrb r0, [r6] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A2828: .4byte gUnknown_203A840 +_081A282C: .4byte gUnknown_85DD2C0 +_081A2830: .4byte gUnknown_85DD2E8 +_081A2834: .4byte gUnknown_2021C7C +_081A2838: .4byte gUnknown_85DD3B7 +_081A283C: .4byte gUnknown_85DD40E +_081A2840: .4byte gUnknown_85DD415 + thumb_func_end sub_081A2758 + + thumb_func_start sub_081A2844 +sub_081A2844: @ 0x081A2844 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov ip, r0 + ldr r4, [sp, #0x30] + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp, #0xc] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r5, r3, #0 + lsls r4, r4, #0x18 + ldr r0, _081A290C + mov sb, r0 + ldrb r0, [r0] + lsls r3, r5, #0x1b + lsrs r3, r3, #0x18 + lsrs r4, r4, #0x15 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + str r7, [sp] + movs r1, #0 + mov r8, r1 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + mov r2, ip + bl sub_0800449C + ldr r0, _081A2910 + cmp r6, r0 + bls _081A2892 + adds r6, r0, #0 +_081A2892: + ldr r0, _081A2914 + mov sl, r0 + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A2918 + ldr r1, _081A291C + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + lsls r3, r5, #0x1b + movs r1, #0xc0 + lsls r1, r1, #0x16 + adds r3, r3, r1 + lsrs r3, r3, #0x18 + str r7, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + mov r0, sl + ldr r1, [sp, #0xc] + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r1, _081A2920 + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + lsls r3, r5, #0x1b + movs r1, #0x98 + lsls r1, r1, #0x18 + adds r3, r3, r1 + lsrs r3, r3, #0x18 + str r7, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A290C: .4byte gUnknown_203A840 +_081A2910: .4byte 0x0000270F +_081A2914: .4byte gUnknown_2021C40 +_081A2918: .4byte gUnknown_2021C7C +_081A291C: .4byte gUnknown_85DD41D +_081A2920: .4byte gUnknown_85DD471 + thumb_func_end sub_081A2844 + + thumb_func_start sub_081A2924 +sub_081A2924: @ 0x081A2924 + push {r4, r5, lr} + sub sp, #4 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r2, _081A2964 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r5, _081A2968 + adds r0, r2, r5 + adds r0, r0, r1 + ldrh r5, [r0] + ldr r0, _081A296C + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r2, [r2] + ldr r0, _081A2970 + str r3, [sp] + adds r1, r5, #0 + adds r3, r4, #0 + bl sub_081A2844 + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A2964: .4byte gUnknown_3005AF0 +_081A2968: .4byte 0x00000DEA +_081A296C: .4byte 0x00000DFA +_081A2970: .4byte gUnknown_85DD42A + thumb_func_end sub_081A2924 + + thumb_func_start sub_081A2974 +sub_081A2974: @ 0x081A2974 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A2998 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, _081A299C + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081A29A0 + cmp r0, r1 + bls _081A2994 + adds r0, r1, #0 +_081A2994: + pop {r1} + bx r1 + .align 2, 0 +_081A2998: .4byte gUnknown_3005AF0 +_081A299C: .4byte 0x00000DE2 +_081A29A0: .4byte 0x0000270F + thumb_func_end sub_081A2974 + + thumb_func_start sub_081A29A4 +sub_081A29A4: @ 0x081A29A4 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A29C8 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, _081A29CC + adds r2, r2, r0 + adds r2, r2, r1 + ldrh r0, [r2] + ldr r1, _081A29D0 + cmp r0, r1 + bls _081A29C4 + adds r0, r1, #0 +_081A29C4: + pop {r1} + bx r1 + .align 2, 0 +_081A29C8: .4byte gUnknown_3005AF0 +_081A29CC: .4byte 0x00000DF2 +_081A29D0: .4byte 0x0000270F + thumb_func_end sub_081A29A4 + + thumb_func_start sub_081A29D4 +sub_081A29D4: @ 0x081A29D4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081A2974 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081A29A4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r4, #0 + beq _081A2A12 + cmp r4, #1 + beq _081A2A22 +_081A2A12: + cmp r5, #0 + beq _081A2A1C + movs r0, #0x80 + lsls r0, r0, #2 + b _081A2A30 +_081A2A1C: + movs r0, #0x80 + lsls r0, r0, #1 + b _081A2A30 +_081A2A22: + cmp r5, #0 + beq _081A2A2C + movs r0, #0x80 + lsls r0, r0, #0x12 + b _081A2A30 +_081A2A2C: + movs r0, #0x80 + lsls r0, r0, #0x11 +_081A2A30: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A2A54 + ldr r0, _081A2A50 + mov r1, r8 + str r1, [sp] + adds r1, r7, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_081A2844 + b _081A2A64 + .align 2, 0 +_081A2A50: .4byte gUnknown_85DD425 +_081A2A54: + ldr r0, _081A2A74 + mov r1, r8 + str r1, [sp] + adds r1, r7, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_081A2844 +_081A2A64: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2A74: .4byte gUnknown_85DD42F + thumb_func_end sub_081A29D4 + + thumb_func_start sub_081A2A78 +sub_081A2A78: @ 0x081A2A78 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _081A2AA8 + ldr r0, _081A2AAC + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + cmp r7, #0 + bne _081A2AB8 + ldr r0, _081A2AB0 + ldr r1, _081A2AB4 + bl sub_08008BCC + b _081A2AC0 + .align 2, 0 +_081A2AA8: .4byte gUnknown_203A840 +_081A2AAC: .4byte gUnknown_85DD2C8 +_081A2AB0: .4byte gUnknown_2021C7C +_081A2AB4: .4byte gUnknown_85DD3CC +_081A2AB8: + ldr r0, _081A2B80 + ldr r1, _081A2B84 + bl sub_08008BCC +_081A2AC0: + ldr r5, _081A2B88 + ldrb r0, [r5] + ldr r2, _081A2B80 + movs r1, #2 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2B8C + movs r6, #0x22 + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2B90 + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x80 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2B94 + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r5, #0 +_081A2B14: + ldr r6, _081A2B88 + ldrb r0, [r6] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A2B98 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bls _081A2B14 + adds r0, r7, #0 + movs r1, #0 + movs r2, #1 + movs r3, #6 + bl sub_081A29D4 + adds r0, r7, #0 + movs r1, #0 + movs r2, #1 + movs r3, #8 + bl sub_081A2924 + adds r0, r7, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0xe + bl sub_081A29D4 + adds r0, r7, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0x10 + bl sub_081A2924 + ldrb r0, [r6] + bl sub_0800365C + ldrb r0, [r6] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2B80: .4byte gUnknown_2021C7C +_081A2B84: .4byte gUnknown_85DD3E3 +_081A2B88: .4byte gUnknown_203A840 +_081A2B8C: .4byte gUnknown_85DD40E +_081A2B90: .4byte gUnknown_85DD438 +_081A2B94: .4byte gUnknown_85DD415 +_081A2B98: .4byte gUnknown_85DD2E8 + thumb_func_end sub_081A2A78 + + thumb_func_start sub_081A2B9C +sub_081A2B9C: @ 0x081A2B9C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov ip, r0 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + ldr r0, _081A2C24 + mov sb, r0 + ldrb r0, [r0] + lsls r4, r2, #0x1b + lsrs r4, r4, #0x18 + lsrs r3, r3, #0x15 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + str r5, [sp] + movs r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + mov r2, ip + adds r3, r4, #0 + bl sub_0800449C + ldr r0, _081A2C28 + cmp r6, r0 + bls _081A2BE0 + adds r6, r0, #0 +_081A2BE0: + ldr r0, _081A2C2C + adds r1, r6, #0 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A2C30 + ldr r1, _081A2C34 + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + lsls r3, r1, #0x1b + movs r1, #0xc0 + lsls r1, r1, #0x16 + adds r3, r3, r1 + lsrs r3, r3, #0x18 + str r5, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2C24: .4byte gUnknown_203A840 +_081A2C28: .4byte 0x0000270F +_081A2C2C: .4byte gUnknown_2021C40 +_081A2C30: .4byte gUnknown_2021C7C +_081A2C34: .4byte gUnknown_85DD476 + thumb_func_end sub_081A2B9C + + thumb_func_start sub_081A2C38 +sub_081A2C38: @ 0x081A2C38 + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + lsls r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r1, _081A2C64 + ldr r1, [r1] + lsrs r0, r0, #0x17 + ldr r2, _081A2C68 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r1, [r1] + ldr r0, _081A2C6C + adds r2, r4, #0 + bl sub_081A2B9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A2C64: .4byte gUnknown_3005AF0 +_081A2C68: .4byte 0x00000E1E +_081A2C6C: .4byte gUnknown_85DD42A + thumb_func_end sub_081A2C38 + + thumb_func_start sub_081A2C70 +sub_081A2C70: @ 0x081A2C70 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _081A2C90 + ldr r1, [r1] + lsrs r0, r0, #0x17 + ldr r2, _081A2C94 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r1, _081A2C98 + cmp r0, r1 + bls _081A2C8A + adds r0, r1, #0 +_081A2C8A: + pop {r1} + bx r1 + .align 2, 0 +_081A2C90: .4byte gUnknown_3005AF0 +_081A2C94: .4byte 0x00000E1A +_081A2C98: .4byte 0x0000270F + thumb_func_end sub_081A2C70 + + thumb_func_start sub_081A2C9C +sub_081A2C9C: @ 0x081A2C9C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + adds r0, r4, #0 + bl sub_081A2C70 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, #0 + beq _081A2CC0 + movs r0, #0x80 + lsls r0, r0, #6 + b _081A2CC4 +_081A2CC0: + movs r0, #0x80 + lsls r0, r0, #5 +_081A2CC4: + bl sub_081A1ACC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081A2CE4 + ldr r0, _081A2CE0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A2B9C + b _081A2CF0 + .align 2, 0 +_081A2CE0: .4byte gUnknown_85DD425 +_081A2CE4: + ldr r0, _081A2CF8 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081A2B9C +_081A2CF0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2CF8: .4byte gUnknown_85DD42F + thumb_func_end sub_081A2C9C + + thumb_func_start sub_081A2CFC +sub_081A2CFC: @ 0x081A2CFC + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r5, _081A2DC8 + ldr r0, _081A2DCC + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + movs r1, #0x11 + bl sub_08003B18 + ldr r6, _081A2DD0 + ldr r1, _081A2DD4 + adds r0, r6, #0 + bl sub_08008BCC + ldrb r0, [r5] + movs r1, #0x12 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + movs r3, #0x18 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2DD8 + movs r1, #0x32 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2DDC + movs r1, #0x62 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x10 + bl sub_0800449C + movs r5, #0 +_081A2D64: + ldr r6, _081A2DC8 + ldrb r0, [r6] + lsls r3, r4, #1 + adds r3, r3, r4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + movs r1, #0x52 + str r1, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + ldr r2, _081A2DE0 + bl sub_0800449C + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0xa + bls _081A2D64 + movs r0, #0 + movs r1, #0xa + movs r2, #6 + bl sub_081A2C9C + movs r0, #0 + movs r1, #0xa + movs r2, #8 + bl sub_081A2C38 + movs r0, #1 + movs r1, #0xa + movs r2, #0xc + bl sub_081A2C9C + movs r0, #1 + movs r1, #0xa + movs r2, #0xe + bl sub_081A2C38 + ldrb r0, [r6] + bl sub_0800365C + ldrb r0, [r6] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A2DC8: .4byte gUnknown_203A840 +_081A2DCC: .4byte gUnknown_85DD2D0 +_081A2DD0: .4byte gUnknown_2021C7C +_081A2DD4: .4byte gUnknown_85DD3F9 +_081A2DD8: .4byte gUnknown_85DD40E +_081A2DDC: .4byte gUnknown_85DD415 +_081A2DE0: .4byte gUnknown_85DD2E8 + thumb_func_end sub_081A2CFC + + thumb_func_start sub_081A2DE4 +sub_081A2DE4: @ 0x081A2DE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r5, _081A2F54 + ldr r0, _081A2F58 + bl sub_08003250 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r5] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081A2F5C + mov r8, r0 + ldr r1, _081A2F60 + bl sub_08008BCC + ldrb r0, [r5] + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + mov r2, r8 + movs r3, #0x10 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F64 + movs r6, #0x20 + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x48 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F68 + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x70 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F6C + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x98 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F70 + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0xc0 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F74 + movs r1, #0x30 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F78 + movs r1, #0x40 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F7C + movs r1, #0x50 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F80 + movs r1, #0x60 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A2F84 + movs r1, #0x70 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #8 + bl sub_0800449C + movs r1, #0 + mov sl, r8 +_081A2EDA: + adds r2, r1, #1 + mov sb, r2 + lsls r0, r1, #0x1c + movs r2, #0xc0 + lsls r2, r2, #0x16 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r6, #0xe0 + lsls r6, r6, #0x16 + lsls r4, r1, #3 + movs r5, #3 +_081A2EF2: + ldr r0, _081A2F88 + ldr r0, [r0] + ldr r1, _081A2F8C + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r1, [r0] + mov r0, sl + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r7, _081A2F54 + ldrb r0, [r7] + lsrs r3, r6, #0x18 + mov r2, r8 + str r2, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + mov r2, sl + bl sub_0800449C + movs r0, #0xa0 + lsls r0, r0, #0x16 + adds r6, r6, r0 + adds r4, #2 + subs r5, #1 + cmp r5, #0 + bge _081A2EF2 + mov r1, sb + cmp r1, #4 + ble _081A2EDA + ldrb r0, [r7] + bl sub_0800365C + ldrb r0, [r7] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A2F54: .4byte gUnknown_203A840 +_081A2F58: .4byte gUnknown_85DD2D8 +_081A2F5C: .4byte gUnknown_2021C7C +_081A2F60: .4byte gUnknown_85CCEA5 +_081A2F64: .4byte gUnknown_85CCEB9 +_081A2F68: .4byte gUnknown_85CCEBC +_081A2F6C: .4byte gUnknown_85CCEBF +_081A2F70: .4byte gUnknown_85CCEC2 +_081A2F74: .4byte gUnknown_85CAC84 +_081A2F78: .4byte gUnknown_85CAC8A +_081A2F7C: .4byte gUnknown_85CAC90 +_081A2F80: .4byte gUnknown_85CAC95 +_081A2F84: .4byte gUnknown_85CAC9A +_081A2F88: .4byte gUnknown_3005AF0 +_081A2F8C: .4byte 0x00000624 + thumb_func_end sub_081A2DE4 + + thumb_func_start sub_081A2F90 +sub_081A2F90: @ 0x081A2F90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + ldr r0, _081A2FD0 + ldr r0, [r0] + ldr r1, _081A2FD4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _081A2FD8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _081A2FDC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r4, #6 + bls _081A2FC4 + b _081A335E +_081A2FC4: + lsls r0, r4, #2 + ldr r1, _081A2FE0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A2FD0: .4byte gUnknown_3005AF0 +_081A2FD4: .4byte 0x00000CA9 +_081A2FD8: .4byte 0x000040CF +_081A2FDC: .4byte 0x000040CE +_081A2FE0: .4byte _081A2FE4 +_081A2FE4: @ jump table + .4byte _081A3000 @ case 0 + .4byte _081A3138 @ case 1 + .4byte _081A31A0 @ case 2 + .4byte _081A3208 @ case 3 + .4byte _081A3258 @ case 4 + .4byte _081A32DA @ case 5 + .4byte _081A3324 @ case 6 +_081A3000: + ldr r2, _081A30D0 + mov r8, r2 + ldr r1, [r2] + lsls r3, r5, #1 + lsls r4, r6, #2 + adds r2, r3, r4 + movs r7, #0xce + lsls r7, r7, #4 + adds r0, r1, r7 + adds r0, r0, r2 + adds r7, #0x10 + adds r1, r1, r7 + adds r1, r1, r2 + ldrh r0, [r0] + str r3, [sp] + str r4, [sp, #8] + ldrh r2, [r1] + cmp r0, r2 + bhi _081A3028 + b _081A335E +_081A3028: + strh r0, [r1] + cmp r6, #3 + bne _081A309A + movs r3, #0 + ldr r7, _081A30D4 + mov sl, r7 + lsls r0, r5, #2 + str r0, [sp, #4] + mov sb, r8 + movs r1, #0x25 + add r1, sl + mov ip, r1 + ldr r2, _081A30D8 + adds r2, #8 + mov r8, r2 + lsls r7, r5, #3 + ldr r4, _081A30DC +_081A304A: + mov r0, sb + ldr r2, [r0] + adds r0, r3, r7 + adds r2, r2, r4 + adds r2, r2, r0 + mov r1, ip + ldrb r0, [r1] + movs r5, #1 + adds r1, r5, #0 + eors r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r3, r0 + add r0, r8 + ldrb r0, [r0] + strb r0, [r2] + adds r3, #1 + cmp r3, #7 + ble _081A304A + mov r0, sl + adds r0, #0x25 + ldrb r0, [r0] + adds r1, r5, #0 + eors r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081A30D8 + adds r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _081A30D0 + ldr r2, _081A30E0 + ldr r3, [sp, #4] + adds r2, r3, r2 + ldr r1, [r1] + adds r1, r1, r2 + bl sub_08083C54 +_081A309A: + ldr r4, _081A30D0 + ldr r0, [r4] + ldr r5, [sp] + ldr r7, [sp, #8] + adds r1, r5, r7 + movs r7, #0xce + lsls r7, r7, #4 + adds r0, r0, r7 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #1 + bhi _081A30B4 + b _081A335E +_081A30B4: + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A30C0 + b _081A335E +_081A30C0: + cmp r6, #1 + beq _081A30FE + cmp r6, #1 + bgt _081A30E4 + cmp r6, #0 + beq _081A30EE + b _081A335E + .align 2, 0 +_081A30D0: .4byte gUnknown_3005AF0 +_081A30D4: .4byte gUnknown_2024118 +_081A30D8: .4byte gUnknown_20226A0 +_081A30DC: .4byte 0x00000EE1 +_081A30E0: .4byte 0x00000EF1 +_081A30E4: + cmp r6, #2 + beq _081A3110 + cmp r6, #3 + beq _081A3124 + b _081A335E +_081A30EE: + ldr r0, [r4] + adds r0, r0, r7 + adds r0, r0, r5 + ldrh r0, [r0] + movs r1, #1 + bl sub_080EF3E0 + b _081A335E +_081A30FE: + ldr r0, [r4] + adds r1, r5, #4 + adds r0, r0, r7 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #2 + bl sub_080EF3E0 + b _081A335E +_081A3110: + ldr r0, [r4] + adds r1, r5, #0 + adds r1, #8 + adds r0, r0, r7 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #3 + bl sub_080EF3E0 + b _081A335E +_081A3124: + ldr r0, [r4] + ldr r1, [sp] + adds r1, #0xc + adds r0, r0, r7 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #4 + bl sub_080EF3E0 + b _081A335E +_081A3138: + ldr r7, _081A3184 + ldr r0, [r7] + lsls r5, r5, #1 + mov r8, r5 + lsls r1, r6, #2 + adds r4, r5, r1 + ldr r5, _081A3188 + adds r1, r0, r5 + adds r1, r1, r4 + ldr r2, _081A318C + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r2, [r1] + ldrh r3, [r0] + cmp r2, r3 + bhi _081A315A + b _081A335E +_081A315A: + strh r2, [r0] + ldrh r0, [r1] + cmp r0, #1 + bhi _081A3164 + b _081A335E +_081A3164: + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A3170 + b _081A335E +_081A3170: + cmp r6, #0 + bne _081A3190 + ldr r0, [r7] + adds r0, r0, r5 + add r0, r8 + ldrh r0, [r0] + movs r1, #5 + bl sub_080EF3E0 + b _081A335E + .align 2, 0 +_081A3184: .4byte gUnknown_3005AF0 +_081A3188: .4byte 0x00000D0C +_081A318C: .4byte 0x00000D14 +_081A3190: + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #6 + bl sub_080EF3E0 + b _081A335E +_081A31A0: + ldr r7, _081A31F0 + ldr r0, [r7] + lsls r5, r5, #1 + mov r8, r5 + lsls r1, r6, #2 + adds r4, r5, r1 + ldr r5, _081A31F4 + adds r1, r0, r5 + adds r1, r1, r4 + movs r2, #0xdd + lsls r2, r2, #4 + adds r0, r0, r2 + adds r0, r0, r4 + ldrh r2, [r1] + ldrh r3, [r0] + cmp r2, r3 + bhi _081A31C4 + b _081A335E +_081A31C4: + strh r2, [r0] + ldrh r0, [r1] + cmp r0, #1 + bhi _081A31CE + b _081A335E +_081A31CE: + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A31DA + b _081A335E +_081A31DA: + cmp r6, #0 + bne _081A31F8 + ldr r0, [r7] + adds r0, r0, r5 + add r0, r8 + ldrh r0, [r0] + movs r1, #0xb + bl sub_080EF3E0 + b _081A335E + .align 2, 0 +_081A31F0: .4byte gUnknown_3005AF0 +_081A31F4: .4byte 0x00000DC8 +_081A31F8: + ldr r0, [r7] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xc + bl sub_080EF3E0 + b _081A335E +_081A3208: + ldr r6, _081A324C + ldr r1, [r6] + lsls r4, r5, #1 + ldr r5, _081A3250 + adds r0, r1, r5 + adds r0, r0, r4 + ldr r7, _081A3254 + adds r1, r1, r7 + adds r1, r1, r4 + ldrh r2, [r0] + ldrh r3, [r1] + cmp r2, r3 + bhi _081A3224 + b _081A335E +_081A3224: + strh r2, [r1] + ldrh r0, [r0] + cmp r0, #1 + bhi _081A322E + b _081A335E +_081A322E: + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A323A + b _081A335E +_081A323A: + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xa + bl sub_080EF3E0 + b _081A335E + .align 2, 0 +_081A324C: .4byte gUnknown_3005AF0 +_081A3250: .4byte 0x00000DDA +_081A3254: .4byte 0x00000DDE +_081A3258: + ldr r7, _081A32B4 + mov sb, r7 + mov r0, sb + ldr r2, [r0] + lsls r5, r5, #1 + mov r8, r5 + lsls r0, r6, #2 + adds r4, r5, r0 + ldr r5, _081A32B8 + adds r0, r2, r5 + adds r3, r0, r4 + ldr r1, _081A32BC + adds r0, r2, r1 + adds r0, r0, r4 + ldrh r1, [r3] + ldrh r7, [r0] + cmp r1, r7 + bls _081A335E + strh r1, [r0] + ldr r0, _081A32C0 + adds r1, r2, r0 + adds r1, r1, r4 + ldr r7, _081A32C4 + adds r0, r2, r7 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + ldrh r0, [r3] + cmp r0, #1 + bls _081A335E + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A335E + cmp r6, #0 + bne _081A32C8 + mov r1, sb + ldr r0, [r1] + adds r0, r0, r5 + add r0, r8 + ldrh r0, [r0] + movs r1, #7 + bl sub_080EF3E0 + b _081A335E + .align 2, 0 +_081A32B4: .4byte gUnknown_3005AF0 +_081A32B8: .4byte 0x00000DE2 +_081A32BC: .4byte 0x00000DEA +_081A32C0: .4byte 0x00000DFA +_081A32C4: .4byte 0x00000DF2 +_081A32C8: + mov r2, sb + ldr r0, [r2] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #8 + bl sub_080EF3E0 + b _081A335E +_081A32DA: + ldr r6, _081A3318 + ldr r1, [r6] + lsls r4, r5, #1 + ldr r5, _081A331C + adds r0, r1, r5 + adds r0, r0, r4 + ldr r3, _081A3320 + adds r1, r1, r3 + adds r1, r1, r4 + ldrh r2, [r0] + ldrh r7, [r1] + cmp r2, r7 + bls _081A335E + strh r2, [r1] + ldrh r0, [r0] + cmp r0, #1 + bls _081A335E + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A335E + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #9 + bl sub_080EF3E0 + b _081A335E + .align 2, 0 +_081A3318: .4byte gUnknown_3005AF0 +_081A331C: .4byte 0x00000E04 +_081A3320: .4byte 0x00000E08 +_081A3324: + ldr r6, _081A3370 + ldr r1, [r6] + lsls r4, r5, #1 + ldr r5, _081A3374 + adds r0, r1, r5 + adds r0, r0, r4 + ldr r2, _081A3378 + adds r1, r1, r2 + adds r1, r1, r4 + ldrh r2, [r0] + ldrh r3, [r1] + cmp r2, r3 + bls _081A335E + strh r2, [r1] + ldrh r0, [r0] + cmp r0, #1 + bls _081A335E + bl sub_080EF330 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A335E + ldr r0, [r6] + adds r0, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #0xd + bl sub_080EF3E0 +_081A335E: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A3370: .4byte gUnknown_3005AF0 +_081A3374: .4byte 0x00000E1A +_081A3378: .4byte 0x00000E1E + thumb_func_end sub_081A2F90 + + thumb_func_start sub_081A337C +sub_081A337C: @ 0x081A337C + push {r4, lr} + ldr r0, _081A3398 + bl sub_0809CF6C + ldr r4, _081A339C + bl sub_081A33A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A3398: .4byte 0x000040CF +_081A339C: .4byte gUnknown_2037290 + thumb_func_end sub_081A337C + + thumb_func_start sub_081A33A0 +sub_081A33A0: @ 0x081A33A0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r0, #0 + mov r8, r0 + ldr r0, _081A33E0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _081A33E4 + bl sub_0809CF6C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081A375C + lsls r0, r0, #0x10 + ldr r1, _081A33E8 + mov sb, r1 + lsls r7, r6, #2 + adds r1, #3 + adds r1, r7, r1 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + adds r5, r0, r1 + cmp r4, #0 + beq _081A33EC + movs r0, #0 + b _081A3452 + .align 2, 0 +_081A33E0: .4byte 0x000040CF +_081A33E4: .4byte 0x000040CE +_081A33E8: .4byte gUnknown_85DCB7C +_081A33EC: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + blt _081A3410 + cmp r1, #1 + bgt _081A3410 + adds r0, r1, r7 + add r0, sb + ldrb r0, [r0] + cmp r5, r0 + bne _081A344C + adds r1, #1 + mov r8, r1 + b _081A344C +_081A3410: + ldr r1, _081A3420 + lsls r2, r6, #2 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r5, r0 + bne _081A3424 + movs r0, #3 + b _081A344A + .align 2, 0 +_081A3420: .4byte gUnknown_85DCB7C +_081A3424: + adds r0, r1, #1 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r5, r0 + bne _081A3434 + movs r1, #4 + mov r8, r1 + b _081A344C +_081A3434: + cmp r5, r0 + ble _081A344C + subs r0, r5, r0 + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + bl __modsi3 + cmp r0, #0 + bne _081A344C + movs r0, #4 +_081A344A: + mov r8, r0 +_081A344C: + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 +_081A3452: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A33A0 + + thumb_func_start sub_081A3460 +sub_081A3460: @ 0x081A3460 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + cmp r0, #1 + beq _081A34F6 + cmp r0, #1 + bgt _081A347A + cmp r0, #0 + beq _081A3482 + b _081A368E +_081A347A: + cmp r2, #2 + bne _081A3480 + b _081A35A8 +_081A3480: + b _081A368E +_081A3482: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r3, r0 + bne _081A349C + ldr r0, _081A3494 + ldr r0, [r0] + ldr r1, _081A3498 + b _081A3656 + .align 2, 0 +_081A3494: .4byte gUnknown_3005AF0 +_081A3498: .4byte 0x00000BFC +_081A349C: + ldr r0, _081A34BC + cmp r3, r0 + beq _081A3516 + ldr r0, _081A34C0 + cmp r3, r0 + bhi _081A34C8 + ldr r2, _081A34C4 + movs r0, #0x34 + adds r1, r3, #0 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC + b _081A368E + .align 2, 0 +_081A34BC: .4byte 0x000003FE +_081A34C0: .4byte 0x0000012B +_081A34C4: .4byte gUnknown_203B954 +_081A34C8: + ldr r0, _081A34DC + cmp r3, r0 + bhi _081A34E8 + ldr r1, _081A34E0 + movs r0, #0xec + muls r0, r3, r0 + ldr r1, [r1] + adds r0, r0, r1 + ldr r1, _081A34E4 + b _081A3656 + .align 2, 0 +_081A34DC: .4byte 0x0000018F +_081A34E0: .4byte gUnknown_3005AF0 +_081A34E4: .4byte 0xFFFEF2B8 +_081A34E8: + adds r0, r3, #0 + adds r0, #0x70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0819F888 + b _081A368E +_081A34F6: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r3, r0 + bne _081A3510 + ldr r0, _081A3508 + ldr r0, [r0] + ldr r1, _081A350C + b _081A3656 + .align 2, 0 +_081A3508: .4byte gUnknown_3005AF0 +_081A350C: .4byte 0x00000C08 +_081A3510: + ldr r0, _081A3520 + cmp r3, r0 + bne _081A3524 +_081A3516: + movs r0, #0 + bl sub_081A4D98 + b _081A368E + .align 2, 0 +_081A3520: .4byte 0x000003FE +_081A3524: + ldr r0, _081A3540 + cmp r3, r0 + bhi _081A3548 + ldr r2, _081A3544 + movs r0, #0x34 + adds r1, r3, #0 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0x18 + bl sub_081637CC + b _081A368E + .align 2, 0 +_081A3540: .4byte 0x0000012B +_081A3544: .4byte gUnknown_203B954 +_081A3548: + ldr r0, _081A356C + cmp r3, r0 + bhi _081A357C + ldr r0, _081A3570 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _081A360C + ldr r1, _081A3574 + movs r0, #0xec + muls r0, r3, r0 + ldr r1, [r1] + adds r0, r0, r1 + ldr r1, _081A3578 + b _081A3656 + .align 2, 0 +_081A356C: .4byte 0x0000018F +_081A3570: .4byte gUnknown_2022C90 +_081A3574: .4byte gUnknown_3005AF0 +_081A3578: .4byte 0xFFFEF2C4 +_081A357C: + ldr r0, _081A359C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _081A360C + ldr r1, _081A35A0 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, [r1] + adds r0, r0, r1 + ldr r1, _081A35A4 + b _081A3656 + .align 2, 0 +_081A359C: .4byte gUnknown_2022C90 +_081A35A0: .4byte gUnknown_3005AF0 +_081A35A4: .4byte 0xFFFF96C4 +_081A35A8: + movs r0, #0xfa + lsls r0, r0, #1 + cmp r3, r0 + bne _081A35C0 + ldr r0, _081A35B8 + ldr r0, [r0] + ldr r1, _081A35BC + b _081A3656 + .align 2, 0 +_081A35B8: .4byte gUnknown_3005AF0 +_081A35BC: .4byte 0x00000C14 +_081A35C0: + ldr r0, _081A35D0 + cmp r3, r0 + bne _081A35D4 + movs r0, #1 + bl sub_081A4D98 + b _081A368E + .align 2, 0 +_081A35D0: .4byte 0x000003FE +_081A35D4: + ldr r0, _081A35F0 + cmp r3, r0 + bhi _081A35F8 + ldr r2, _081A35F4 + movs r0, #0x34 + adds r1, r3, #0 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0x24 + bl sub_081637CC + b _081A368E + .align 2, 0 +_081A35F0: .4byte 0x0000012B +_081A35F4: .4byte gUnknown_203B954 +_081A35F8: + ldr r0, _081A3618 + cmp r3, r0 + bhi _081A3638 + ldr r0, _081A361C + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A3620 +_081A360C: + bl sub_0818620C + bl sub_081637CC + b _081A368E + .align 2, 0 +_081A3618: .4byte 0x0000018F +_081A361C: .4byte gUnknown_2022C90 +_081A3620: + ldr r1, _081A3630 + movs r0, #0xec + muls r0, r3, r0 + ldr r1, [r1] + adds r0, r0, r1 + ldr r1, _081A3634 + b _081A3656 + .align 2, 0 +_081A3630: .4byte gUnknown_3005AF0 +_081A3634: .4byte 0xFFFEF2D0 +_081A3638: + ldr r0, _081A3660 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A3668 + bl sub_081861EC + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + ldr r1, _081A3664 +_081A3656: + adds r0, r0, r1 + bl sub_081637CC + b _081A368E + .align 2, 0 +_081A3660: .4byte gUnknown_2022C90 +_081A3664: .4byte gUnknown_85DC23E +_081A3668: + ldr r0, _081A3694 + ldr r1, [r0] + ldr r0, _081A3698 + adds r2, r3, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, #0xdc + ldrb r0, [r1] + lsls r0, r0, #0x1b + lsrs r3, r0, #0x1b + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #4 + ldr r1, _081A369C + adds r0, r0, r1 + bl sub_081637CC +_081A368E: + pop {r0} + bx r0 + .align 2, 0 +_081A3694: .4byte gUnknown_3005AF0 +_081A3698: .4byte 0xFFFFFE70 +_081A369C: .4byte gUnknown_85DC23E + thumb_func_end sub_081A3460 + + thumb_func_start sub_081A36A0 +sub_081A36A0: @ 0x081A36A0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _081A3744 + ldr r1, [r0] + ldr r2, _081A3748 + adds r1, r1, r2 + movs r2, #0 + str r2, [r1] + movs r4, #0 + mov sb, r0 + mov r8, sb + movs r6, #0 +_081A36BE: + movs r5, #0 + lsls r7, r4, #2 + mov sl, r7 + adds r0, r4, #1 + mov ip, r0 +_081A36C8: + mov r1, r8 + ldr r2, [r1] + lsls r3, r5, #1 + mov r7, sl + adds r1, r3, r7 + movs r7, #0xce + lsls r7, r7, #4 + adds r0, r2, r7 + adds r0, r0, r1 + strh r6, [r0] + cmp r4, #1 + bgt _081A36F8 + adds r7, #0x2c + adds r0, r2, r7 + adds r0, r0, r1 + strh r6, [r0] + adds r7, #0xbc + adds r0, r2, r7 + adds r0, r0, r1 + strh r6, [r0] + adds r7, #0x1a + adds r0, r2, r7 + adds r0, r0, r1 + strh r6, [r0] +_081A36F8: + cmp r4, #0 + bne _081A3718 + mov r1, r8 + ldr r0, [r1] + ldr r2, _081A374C + adds r1, r0, r2 + adds r1, r1, r3 + strh r4, [r1] + ldr r7, _081A3750 + adds r1, r0, r7 + adds r1, r1, r3 + strh r4, [r1] + ldr r1, _081A3754 + adds r0, r0, r1 + adds r0, r0, r3 + strh r4, [r0] +_081A3718: + adds r5, #1 + cmp r5, #1 + ble _081A36C8 + mov r4, ip + cmp r4, #3 + ble _081A36BE + mov r2, sb + ldr r0, [r2] + ldr r7, _081A3758 + adds r1, r0, r7 + ldrb r0, [r1] + cmp r0, #0 + beq _081A3736 + movs r0, #1 + strb r0, [r1] +_081A3736: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A3744: .4byte gUnknown_3005AF0 +_081A3748: .4byte 0x00000CDC +_081A374C: .4byte 0x00000DDA +_081A3750: .4byte 0x00000E04 +_081A3754: .4byte 0x00000E1A +_081A3758: .4byte 0x00000CA8 + thumb_func_end sub_081A36A0 + + thumb_func_start sub_081A375C +sub_081A375C: @ 0x081A375C + push {r4, r5, lr} + ldr r0, _081A3790 + ldr r0, [r0] + ldr r1, _081A3794 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + ldr r0, _081A3798 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _081A379C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bhi _081A385C + lsls r0, r0, #2 + ldr r1, _081A37A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A3790: .4byte gUnknown_3005AF0 +_081A3794: .4byte 0x00000CA9 +_081A3798: .4byte 0x000040CE +_081A379C: .4byte 0x000040CF +_081A37A0: .4byte _081A37A4 +_081A37A4: @ jump table + .4byte _081A37C0 @ case 0 + .4byte _081A37D4 @ case 1 + .4byte _081A37EC @ case 2 + .4byte _081A3804 @ case 3 + .4byte _081A3818 @ case 4 + .4byte _081A3830 @ case 5 + .4byte _081A3844 @ case 6 +_081A37C0: + ldr r0, _081A37D0 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + movs r2, #0xce + lsls r2, r2, #4 + b _081A384C + .align 2, 0 +_081A37D0: .4byte gUnknown_3005AF0 +_081A37D4: + ldr r0, _081A37E4 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r2, _081A37E8 + b _081A384C + .align 2, 0 +_081A37E4: .4byte gUnknown_3005AF0 +_081A37E8: .4byte 0x00000D0C +_081A37EC: + ldr r0, _081A37FC + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r2, _081A3800 + b _081A384C + .align 2, 0 +_081A37FC: .4byte gUnknown_3005AF0 +_081A3800: .4byte 0x00000DC8 +_081A3804: + ldr r0, _081A3810 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A3814 + b _081A384C + .align 2, 0 +_081A3810: .4byte gUnknown_3005AF0 +_081A3814: .4byte 0x00000DDA +_081A3818: + ldr r0, _081A3828 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r2, _081A382C + b _081A384C + .align 2, 0 +_081A3828: .4byte gUnknown_3005AF0 +_081A382C: .4byte 0x00000DE2 +_081A3830: + ldr r0, _081A383C + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A3840 + b _081A384C + .align 2, 0 +_081A383C: .4byte gUnknown_3005AF0 +_081A3840: .4byte 0x00000E04 +_081A3844: + ldr r0, _081A3854 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A3858 +_081A384C: + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + b _081A385E + .align 2, 0 +_081A3854: .4byte gUnknown_3005AF0 +_081A3858: .4byte 0x00000E1A +_081A385C: + movs r0, #0 +_081A385E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081A375C + + thumb_func_start sub_081A3864 +sub_081A3864: @ 0x081A3864 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _081A388C + ldr r4, _081A3890 + ldr r0, _081A3894 + adds r3, r0, #0 +_081A3870: + ldr r0, [r5] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r2, #1 + cmp r2, #0x13 + ble _081A3870 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A388C: .4byte gUnknown_3005AF0 +_081A3890: .4byte 0x00000CB4 +_081A3894: .4byte 0x0000FFFF + thumb_func_end sub_081A3864 + + thumb_func_start sub_081A3898 +sub_081A3898: @ 0x081A3898 + push {lr} + ldr r0, _081A38AC + ldrh r1, [r0] + ldr r0, _081A38B0 + cmp r1, r0 + bne _081A38B8 + ldr r1, _081A38B4 + movs r0, #1 + b _081A38BC + .align 2, 0 +_081A38AC: .4byte gUnknown_203886A +_081A38B0: .4byte 0x000003FE +_081A38B4: .4byte gUnknown_2037290 +_081A38B8: + ldr r1, _081A38C4 + movs r0, #0 +_081A38BC: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081A38C4: .4byte gUnknown_2037290 + thumb_func_end sub_081A3898 + + thumb_func_start sub_081A38C8 +sub_081A38C8: @ 0x081A38C8 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x17 + ldr r1, _081A38F4 + adds r0, r4, r1 + bl sub_0809D068 + adds r5, r0, #0 + ldr r0, _081A38F8 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_0809D068 + adds r5, r5, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081A38F4: .4byte 0x000008C4 +_081A38F8: .4byte 0x000008C5 + thumb_func_end sub_081A38C8 + + thumb_func_start sub_081A38FC +sub_081A38FC: @ 0x081A38FC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r5, #0 + ldr r0, _081A3938 + ldr r0, [r0] + ldr r1, _081A393C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + ldr r0, _081A3940 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _081A3944 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r7, #6 + bhi _081A3A10 + lsls r0, r7, #2 + ldr r1, _081A3948 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A3938: .4byte gUnknown_3005AF0 +_081A393C: .4byte 0x00000CA9 +_081A3940: .4byte 0x000040CF +_081A3944: .4byte 0x000040CE +_081A3948: .4byte _081A394C +_081A394C: @ jump table + .4byte _081A3968 @ case 0 + .4byte _081A397C @ case 1 + .4byte _081A3998 @ case 2 + .4byte _081A39B0 @ case 3 + .4byte _081A39C4 @ case 4 + .4byte _081A39DC @ case 5 + .4byte _081A39F8 @ case 6 +_081A3968: + ldr r0, _081A3978 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + movs r2, #0xce + lsls r2, r2, #4 + b _081A3A00 + .align 2, 0 +_081A3978: .4byte gUnknown_3005AF0 +_081A397C: + ldr r0, _081A3990 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + ldr r2, _081A3994 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r5, [r0] + b _081A3A10 + .align 2, 0 +_081A3990: .4byte gUnknown_3005AF0 +_081A3994: .4byte 0x00000D0C +_081A3998: + ldr r0, _081A39A8 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + ldr r2, _081A39AC + b _081A3A00 + .align 2, 0 +_081A39A8: .4byte gUnknown_3005AF0 +_081A39AC: .4byte 0x00000DC8 +_081A39B0: + ldr r0, _081A39BC + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A39C0 + b _081A3A00 + .align 2, 0 +_081A39BC: .4byte gUnknown_3005AF0 +_081A39C0: .4byte 0x00000DDA +_081A39C4: + ldr r0, _081A39D4 + ldr r0, [r0] + lsls r1, r4, #1 + lsls r2, r6, #2 + adds r1, r1, r2 + ldr r2, _081A39D8 + b _081A3A00 + .align 2, 0 +_081A39D4: .4byte gUnknown_3005AF0 +_081A39D8: .4byte 0x00000DE2 +_081A39DC: + ldr r0, _081A39F0 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A39F4 + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #0xe + b _081A3A08 + .align 2, 0 +_081A39F0: .4byte gUnknown_3005AF0 +_081A39F4: .4byte 0x00000E04 +_081A39F8: + ldr r0, _081A3AA0 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A3AA4 +_081A3A00: + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #7 +_081A3A08: + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081A3A10: + cmp r5, #0 + beq _081A3A16 + subs r5, #1 +_081A3A16: + cmp r5, #0x1d + bls _081A3A1C + movs r5, #0x1d +_081A3A1C: + ldr r2, _081A3AA8 + lsls r1, r7, #2 + adds r1, r6, r1 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r7, r1, r2 + ldrb r5, [r7] + ldr r0, _081A3AAC + mov sb, r0 + ldrh r0, [r0] + ldr r1, _081A3AB0 + mov r8, r1 + cmp r0, r8 + bne _081A3A3E + adds r5, #0xa +_081A3A3E: + ldr r6, _081A3AA0 + ldr r1, [r6] + ldr r4, _081A3AB4 + adds r1, r1, r4 + ldrh r0, [r1] + adds r0, r0, r5 + strh r0, [r1] + ldr r0, _081A3AB8 + adds r1, r5, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r0, [r6] + adds r2, r0, r4 + ldrh r0, [r2] + ldr r1, _081A3ABC + cmp r0, r1 + bls _081A3A66 + strh r1, [r2] +_081A3A66: + ldr r0, [r6] + ldr r4, _081A3AC0 + adds r0, r0, r4 + ldrh r5, [r0] + ldrb r0, [r7] + adds r5, r5, r0 + bl sub_080EF864 + mov r2, sb + ldrh r0, [r2] + cmp r0, r8 + bne _081A3A86 + adds r5, #0xa + movs r0, #0xa + bl sub_080EF864 +_081A3A86: + ldr r0, _081A3AC4 + cmp r5, r0 + ble _081A3A8E + adds r5, r0, #0 +_081A3A8E: + ldr r0, [r6] + adds r0, r0, r4 + strh r5, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A3AA0: .4byte gUnknown_3005AF0 +_081A3AA4: .4byte 0x00000E1A +_081A3AA8: .4byte gUnknown_85DCEE0 +_081A3AAC: .4byte gUnknown_203886A +_081A3AB0: .4byte 0x000003FE +_081A3AB4: .4byte 0x00000EB8 +_081A3AB8: .4byte gUnknown_2021C40 +_081A3ABC: .4byte 0x0000270F +_081A3AC0: .4byte 0x00000EBA +_081A3AC4: .4byte 0x0000FFFF + thumb_func_end sub_081A38FC + + thumb_func_start sub_081A3AC8 +sub_081A3AC8: @ 0x081A3AC8 + push {r4, lr} + ldr r0, _081A3AE8 + bl sub_0809CF6C + ldr r4, _081A3AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A3AE8: .4byte 0x000040CF +_081A3AEC: .4byte gUnknown_2037290 + thumb_func_end sub_081A3AC8 + + thumb_func_start sub_081A3AF0 +sub_081A3AF0: @ 0x081A3AF0 + push {r4, lr} + ldr r0, _081A3B18 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A38C8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A3B20 + lsls r0, r4, #0x11 + ldr r1, _081A3B1C + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D018 + b _081A3B2C + .align 2, 0 +_081A3B18: .4byte 0x000040CF +_081A3B1C: .4byte gUnknown_8C40000 +_081A3B20: + lsls r0, r4, #0x11 + ldr r1, _081A3B34 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + bl sub_0809D018 +_081A3B2C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A3B34: .4byte gUnknown_8C50000 + thumb_func_end sub_081A3AF0 + + thumb_func_start sub_081A3B38 +sub_081A3B38: @ 0x081A3B38 + push {lr} + ldr r0, _081A3B50 + ldr r1, _081A3B54 + ldrh r1, [r1] + ldr r2, [r0] + ands r2, r1 + cmp r2, #0 + beq _081A3B5C + ldr r1, _081A3B58 + movs r0, #1 + strh r0, [r1] + b _081A3B60 + .align 2, 0 +_081A3B50: .4byte gUnknown_2022C90 +_081A3B54: .4byte gUnknown_2037282 +_081A3B58: .4byte gUnknown_2037290 +_081A3B5C: + ldr r0, _081A3B64 + strh r2, [r0] +_081A3B60: + pop {r0} + bx r0 + .align 2, 0 +_081A3B64: .4byte gUnknown_2037290 + thumb_func_end sub_081A3B38 + + thumb_func_start sub_081A3B68 +sub_081A3B68: @ 0x081A3B68 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_0806CF68 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080BFBBC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A3BFC + cmp r4, #0 + bne _081A3B94 + ldr r0, _081A3BBC + ldr r1, _081A3BC0 + bl sub_080088D8 +_081A3B94: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _081A3BBC + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #1 + ldr r0, _081A3BC4 + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_080088D8 + cmp r4, #5 + beq _081A3BE0 + cmp r4, #5 + bgt _081A3BC8 + cmp r4, #2 + beq _081A3BD2 + b _081A3BF4 + .align 2, 0 +_081A3BBC: .4byte gUnknown_2021C40 +_081A3BC0: .4byte gUnknown_85ABC6C +_081A3BC4: .4byte gUnknown_82EA31C +_081A3BC8: + cmp r4, #8 + beq _081A3BE0 + cmp r4, #0xb + beq _081A3BE0 + b _081A3BF4 +_081A3BD2: + ldr r1, _081A3BDC + adds r0, r6, #0 + bl sub_080088D8 + b _081A3BFC + .align 2, 0 +_081A3BDC: .4byte gUnknown_85ABC70 +_081A3BE0: + ldr r0, _081A3BEC + ldr r1, _081A3BF0 + bl sub_080088D8 + b _081A3BFC + .align 2, 0 +_081A3BEC: .4byte gUnknown_2021C40 +_081A3BF0: .4byte gUnknown_85ABC6E +_081A3BF4: + ldr r0, _081A3C04 + ldr r1, _081A3C08 + bl sub_080088D8 +_081A3BFC: + adds r0, r4, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081A3C04: .4byte gUnknown_2021C40 +_081A3C08: .4byte gUnknown_85ABC6C + thumb_func_end sub_081A3B68 + + thumb_func_start sub_081A3C0C +sub_081A3C0C: @ 0x081A3C0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, [sp, #0x20] + ldr r4, [sp, #0x24] + mov sb, r4 + ldr r4, [sp, #0x28] + mov sl, r4 + ldr r7, [sp, #0x2c] + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov ip, r3 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + movs r2, #0 + movs r0, #0xce + lsls r0, r0, #1 + cmp r4, r0 + beq _081A3CDA + cmp r4, #0 + beq _081A3CDA + ldr r0, _081A3CE8 + ldrh r1, [r0] + ldr r5, _081A3CEC + adds r3, r0, #0 + cmp r1, r5 + beq _081A3C70 + cmp r1, r4 + beq _081A3C64 + adds r1, r3, #0 +_081A3C56: + adds r1, #2 + adds r2, #1 + ldrh r0, [r1] + cmp r0, r5 + beq _081A3C70 + cmp r0, r4 + bne _081A3C56 +_081A3C64: + lsls r0, r2, #1 + adds r0, r0, r3 + ldrh r1, [r0] + ldr r0, _081A3CEC + cmp r1, r0 + bne _081A3CDA +_081A3C70: + mov r0, ip + cmp r0, #0 + bne _081A3C7C + mov r1, r8 + cmp r1, #0x32 + bhi _081A3CDA +_081A3C7C: + movs r2, #0 + ldrb r3, [r7] + cmp r2, r3 + bge _081A3C9C + mov r1, sb + ldrh r0, [r1] + cmp r0, r4 + beq _081A3C9C + adds r5, r3, #0 +_081A3C8E: + adds r1, #2 + adds r2, #1 + cmp r2, r5 + bge _081A3C9C + ldrh r0, [r1] + cmp r0, r4 + bne _081A3C8E +_081A3C9C: + cmp r2, r3 + bne _081A3CDA + cmp r6, #0 + beq _081A3CC6 + movs r2, #0 + cmp r2, r3 + bge _081A3CC2 + mov r1, sl + ldrh r0, [r1] + cmp r0, r6 + beq _081A3CC2 + adds r5, r3, #0 +_081A3CB4: + adds r1, #2 + adds r2, #1 + cmp r2, r5 + bge _081A3CC2 + ldrh r0, [r1] + cmp r0, r6 + bne _081A3CB4 +_081A3CC2: + cmp r2, r3 + bne _081A3CDA +_081A3CC6: + lsls r0, r3, #1 + add r0, sb + strh r4, [r0] + ldrb r0, [r7] + lsls r0, r0, #1 + add r0, sl + strh r6, [r0] + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] +_081A3CDA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A3CE8: .4byte gUnknown_85DD48E +_081A3CEC: .4byte 0x0000FFFF + thumb_func_end sub_081A3C0C + + thumb_func_start sub_081A3CF0 +sub_081A3CF0: @ 0x081A3CF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + movs r0, #0 + mov sl, r0 + add r4, sp, #0x28 + mov r1, sl + strb r1, [r4] + ldr r0, _081A3D20 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r4 + cmp r0, #1 + beq _081A3D32 + cmp r0, #1 + bgt _081A3D24 + cmp r0, #0 + beq _081A3D2C + b _081A3D46 + .align 2, 0 +_081A3D20: .4byte 0x000040CE +_081A3D24: + cmp r0, #3 + bgt _081A3D46 + movs r0, #2 + b _081A3D44 +_081A3D2C: + movs r1, #3 + mov sl, r1 + b _081A3D46 +_081A3D32: + ldr r0, _081A3DB4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + movs r1, #3 + mov sl, r1 + cmp r0, #0 + bne _081A3D46 + movs r0, #4 +_081A3D44: + mov sl, r0 +_081A3D46: + movs r1, #0 + mov r8, r1 +_081A3D4A: + movs r0, #0x64 + mov r4, r8 + muls r4, r0, r4 + ldr r0, _081A3DB8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _081A3DB4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bne _081A3DC0 + cmp r6, #0 + bne _081A3DDC + ldr r0, _081A3DBC + ldrb r3, [r0] + str r5, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r0, sp, #0x1c + str r0, [sp, #8] + mov r1, sb + str r1, [sp, #0xc] + adds r0, r7, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_081A3C0C + b _081A3DDC + .align 2, 0 +_081A3DB4: .4byte 0x000040CF +_081A3DB8: .4byte gUnknown_2024190 +_081A3DBC: .4byte gUnknown_2037290 +_081A3DC0: + ldr r0, _081A3E44 + ldrb r3, [r0] + str r5, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r0, sp, #0x1c + str r0, [sp, #8] + mov r1, sb + str r1, [sp, #0xc] + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_081A3C0C +_081A3DDC: + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #5 + ble _081A3D4A + mov r1, sb + ldrb r0, [r1] + cmp r0, sl + bge _081A3E6C + ldr r1, _081A3E48 + movs r0, #0xff + strb r0, [r1] + ldr r1, _081A3E4C + movs r0, #1 + strh r0, [r1] + movs r0, #0 + mov r1, sb + strb r0, [r1] + ldr r2, _081A3E50 + ldrh r0, [r2] + ldr r1, _081A3E54 + cmp r0, r1 + beq _081A3E22 + mov r5, sb + adds r6, r1, #0 + adds r4, r2, #0 +_081A3E10: + ldrh r0, [r4] + ldrb r1, [r5] + bl sub_081A3B68 + strb r0, [r5] + adds r4, #2 + ldrh r0, [r4] + cmp r0, r6 + bne _081A3E10 +_081A3E22: + ldr r4, _081A3E48 + adds r0, r4, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + subs r0, #1 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] + mov r1, sb + ldrb r0, [r1] + cmp r0, #2 + bhi _081A3E5C + ldr r1, _081A3E58 + b _081A3E5E + .align 2, 0 +_081A3E44: .4byte gUnknown_2037290 +_081A3E48: .4byte gUnknown_2021C40 +_081A3E4C: .4byte gUnknown_2037280 +_081A3E50: .4byte gUnknown_85DD48E +_081A3E54: .4byte 0x0000FFFF +_081A3E58: .4byte gUnknown_85ABC72 +_081A3E5C: + ldr r1, _081A3E68 +_081A3E5E: + adds r0, r4, #0 + bl sub_080088D8 + b _081A3E8E + .align 2, 0 +_081A3E68: .4byte gUnknown_85ABC75 +_081A3E6C: + ldr r1, _081A3EA0 + movs r0, #0 + strh r0, [r1] + ldr r0, _081A3EA4 + ldr r2, [r0] + ldr r0, _081A3EA8 + ldrb r0, [r0] + ldr r1, _081A3EAC + adds r2, r2, r1 + movs r1, #3 + ands r1, r0 + ldrb r3, [r2] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] +_081A3E8E: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A3EA0: .4byte gUnknown_2037280 +_081A3EA4: .4byte gUnknown_3005AF0 +_081A3EA8: .4byte gUnknown_2037290 +_081A3EAC: .4byte 0x00000CA9 + thumb_func_end sub_081A3CF0 + + thumb_func_start sub_081A3EB0 +sub_081A3EB0: @ 0x081A3EB0 + push {lr} + bl sub_08165130 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A3EB0 + + thumb_func_start sub_081A3EBC +sub_081A3EBC: @ 0x081A3EBC + push {r4, r5, r6, r7, lr} + ldr r0, _081A3EF0 + ldr r0, [r0] + ldr r1, _081A3EF4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + ldr r0, _081A3EF8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _081A3EFC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #6 + bls _081A3EE6 + b _081A4020 +_081A3EE6: + lsls r0, r0, #2 + ldr r1, _081A3F00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A3EF0: .4byte gUnknown_3005AF0 +_081A3EF4: .4byte 0x00000CA9 +_081A3EF8: .4byte 0x000040CE +_081A3EFC: .4byte 0x000040CF +_081A3F00: .4byte _081A3F04 +_081A3F04: @ jump table + .4byte _081A3F20 @ case 0 + .4byte _081A3F68 @ case 1 + .4byte _081A3FA8 @ case 2 + .4byte _081A3FC4 @ case 3 + .4byte _081A3FD8 @ case 4 + .4byte _081A3FF4 @ case 5 + .4byte _081A4008 @ case 6 +_081A3F20: + ldr r7, _081A3F5C + ldr r0, [r7] + lsls r4, r4, #1 + lsls r1, r5, #2 + adds r1, r4, r1 + movs r6, #0xce + lsls r6, r6, #4 + adds r3, r0, r6 + adds r2, r3, r1 + ldrh r1, [r2] + ldr r0, _081A3F60 + cmp r1, r0 + bhi _081A4020 + adds r0, r1, #1 + strh r0, [r2] + cmp r5, #0 + bne _081A4020 + adds r0, r3, r4 + ldrh r1, [r0] + movs r0, #0x20 + bl sub_080841B8 + ldr r1, [r7] + adds r0, r1, r6 + adds r0, r0, r4 + ldrh r0, [r0] + ldr r2, _081A3F64 + adds r1, r1, r2 + b _081A401E + .align 2, 0 +_081A3F5C: .4byte gUnknown_3005AF0 +_081A3F60: .4byte 0x0000270E +_081A3F64: .4byte 0x00000D02 +_081A3F68: + ldr r6, _081A3F98 + ldr r0, [r6] + lsls r2, r4, #1 + lsls r1, r5, #2 + adds r1, r2, r1 + ldr r3, _081A3F9C + adds r0, r0, r3 + adds r3, r0, r1 + ldrh r0, [r3] + ldr r2, _081A3FA0 + cmp r0, r2 + bhi _081A3F84 + adds r0, #1 + strh r0, [r3] +_081A3F84: + ldr r0, [r6] + ldr r3, _081A3FA4 + adds r0, r0, r3 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, r2 + bhi _081A4020 + adds r0, #1 + b _081A401E + .align 2, 0 +_081A3F98: .4byte gUnknown_3005AF0 +_081A3F9C: .4byte 0x00000D0C +_081A3FA0: .4byte 0x0000270E +_081A3FA4: .4byte 0x00000D1C +_081A3FA8: + ldr r0, _081A3FBC + ldr r2, [r0] + lsls r0, r4, #1 + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r1, _081A3FC0 + adds r2, r2, r1 + adds r1, r2, r0 + b _081A4014 + .align 2, 0 +_081A3FBC: .4byte gUnknown_3005AF0 +_081A3FC0: .4byte 0x00000DC8 +_081A3FC4: + ldr r0, _081A3FD0 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A3FD4 + adds r0, r0, r2 + b _081A4012 + .align 2, 0 +_081A3FD0: .4byte gUnknown_3005AF0 +_081A3FD4: .4byte 0x00000DDA +_081A3FD8: + ldr r0, _081A3FEC + ldr r2, [r0] + lsls r0, r4, #1 + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r3, _081A3FF0 + adds r2, r2, r3 + adds r1, r2, r0 + b _081A4014 + .align 2, 0 +_081A3FEC: .4byte gUnknown_3005AF0 +_081A3FF0: .4byte 0x00000DE2 +_081A3FF4: + ldr r0, _081A4000 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A4004 + adds r0, r0, r2 + b _081A4012 + .align 2, 0 +_081A4000: .4byte gUnknown_3005AF0 +_081A4004: .4byte 0x00000E04 +_081A4008: + ldr r0, _081A4028 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r3, _081A402C + adds r0, r0, r3 +_081A4012: + adds r1, r0, r1 +_081A4014: + ldrh r3, [r1] + ldr r0, _081A4030 + cmp r3, r0 + bhi _081A4020 + adds r0, r3, #1 +_081A401E: + strh r0, [r1] +_081A4020: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A4028: .4byte gUnknown_3005AF0 +_081A402C: .4byte 0x00000E1A +_081A4030: .4byte 0x0000270E + thumb_func_end sub_081A3EBC + + thumb_func_start sub_081A4034 +sub_081A4034: @ 0x081A4034 + push {r4, r5, r6, lr} + sub sp, #4 + movs r4, #0 + ldr r6, _081A408C + movs r5, #0x64 +_081A403E: + ldr r0, _081A4090 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A4094 + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _081A407A + adds r1, r0, #0 + muls r1, r5, r1 + movs r0, #0xea + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r0, [r6] + adds r0, r0, r1 + movs r1, #0xc + movs r2, #0 + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + muls r0, r5, r0 + ldr r1, _081A4098 + adds r0, r0, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_081A407A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081A403E + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A408C: .4byte gUnknown_3005AEC +_081A4090: .4byte gUnknown_3005AF0 +_081A4094: .4byte 0x00000CAA +_081A4098: .4byte gUnknown_2024190 + thumb_func_end sub_081A4034 + + thumb_func_start sub_081A409C +sub_081A409C: @ 0x081A409C + push {r4, lr} + ldr r4, _081A40BC + bl sub_08185198 + strh r0, [r4] + ldr r0, _081A40C0 + ldr r1, [r0] + ldr r0, _081A40C4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #8 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A40BC: .4byte gUnknown_2037290 +_081A40C0: .4byte gUnknown_3005AF0 +_081A40C4: .4byte 0x00000CA9 + thumb_func_end sub_081A409C + + thumb_func_start sub_081A40C8 +sub_081A40C8: @ 0x081A40C8 + push {lr} + ldr r0, _081A40D8 + ldrh r0, [r0] + cmp r0, #0 + beq _081A40DC + cmp r0, #1 + beq _081A40F0 + b _081A40FA + .align 2, 0 +_081A40D8: .4byte gUnknown_2037282 +_081A40DC: + ldr r0, _081A40E8 + ldr r1, _081A40EC + ldrh r1, [r1] + bl sub_08162D24 + b _081A40FA + .align 2, 0 +_081A40E8: .4byte gUnknown_2021C40 +_081A40EC: .4byte gUnknown_203886A +_081A40F0: + ldr r0, _081A4100 + ldr r1, _081A4104 + ldrh r1, [r1] + bl sub_08162D24 +_081A40FA: + pop {r0} + bx r0 + .align 2, 0 +_081A4100: .4byte gUnknown_2021C54 +_081A4104: .4byte gUnknown_203886A + thumb_func_end sub_081A40C8 + + thumb_func_start sub_081A4108 +sub_081A4108: @ 0x081A4108 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r0, #0 + str r0, [sp] +_081A4118: + ldr r1, _081A41F8 + ldr r0, [r1] + ldr r2, [sp] + lsls r1, r2, #1 + ldr r4, _081A41FC + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r0, [r0] + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r1 + adds r2, #1 + str r2, [sp, #4] + cmp r0, #5 + bhi _081A41DA + movs r6, #0 + ldr r0, [sp] + movs r2, #0x64 + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, _081A4200 + adds r7, r1, r0 +_081A4146: + movs r5, #0 + movs r4, #0xd + adds r4, r4, r6 + mov r8, r4 + adds r0, r6, #1 + mov sl, r0 +_081A4152: + ldr r1, _081A41F8 + ldr r0, [r1] + ldr r2, _081A41FC + adds r0, r0, r2 + add r0, sb + ldrh r0, [r0] + movs r4, #0x64 + adds r1, r0, #0 + muls r1, r4, r1 + movs r0, #0xea + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r2, _081A4204 + ldr r0, [r2] + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r0, r7, #0 + mov r1, r8 + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + beq _081A4194 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _081A4152 +_081A4194: + cmp r5, #4 + bne _081A41A2 + adds r0, r7, #0 + movs r1, #0xa6 + adds r2, r6, #0 + bl sub_08068D34 +_081A41A2: + mov r4, sl + lsls r0, r4, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _081A4146 + ldr r0, _081A4204 + ldr r0, [r0] + ldr r2, _081A41F8 + ldr r1, [r2] + ldr r4, _081A41FC + adds r1, r1, r4 + add r1, sb + ldrh r1, [r1] + subs r1, #1 + movs r3, #0x64 + muls r1, r3, r1 + adds r0, r0, r1 + movs r1, #0x8e + lsls r1, r1, #2 + adds r0, r0, r1 + ldr r2, _081A4200 + ldr r4, [sp] + adds r1, r4, #0 + muls r1, r3, r1 + adds r1, r1, r2 + movs r2, #0x64 + bl memcpy +_081A41DA: + ldr r1, [sp, #4] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + cmp r0, #3 + bls _081A4118 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A41F8: .4byte gUnknown_3005AF0 +_081A41FC: .4byte 0x00000CAA +_081A4200: .4byte gUnknown_2024190 +_081A4204: .4byte gUnknown_3005AEC + thumb_func_end sub_081A4108 + + thumb_func_start sub_081A4208 +sub_081A4208: @ 0x081A4208 + push {lr} + ldr r0, _081A421C + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A4C20 + pop {r0} + bx r0 + .align 2, 0 +_081A421C: .4byte 0x000040CF + thumb_func_end sub_081A4208 + + thumb_func_start sub_081A4220 +sub_081A4220: @ 0x081A4220 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov sb, r1 + adds r6, r3, #0 + ldr r1, _081A42DC + mov sl, r1 + ldrb r5, [r1] + lsls r4, r0, #1 + ldr r1, _081A42E0 + adds r4, r4, r1 + mov r1, sb + lsls r3, r1, #0x1b + lsrs r3, r3, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r2, r2, r1 + lsls r2, r2, #3 + adds r2, #2 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + str r7, [sp] + movs r0, #0 + mov r8, r0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + movs r0, #0xff + strb r0, [r6, #0xd] + ldrh r0, [r6, #4] + cmp r0, #0 + beq _081A42CC + mov r1, sl + ldrb r0, [r1] + adds r2, r6, #6 + mov r3, sb + adds r3, #2 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + str r7, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + bl sub_0800449C + ldrh r1, [r6, #4] + ldr r0, _081A42E4 + cmp r1, r0 + bls _081A4294 + adds r1, r0, #0 +_081A4294: + ldr r0, _081A42E8 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A42EC + ldr r1, _081A42F0 + ldr r0, [sp, #0x2c] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sl + ldrb r0, [r1] + mov r3, sb + adds r3, #0xe + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + str r7, [sp] + mov r1, r8 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C +_081A42CC: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A42DC: .4byte gUnknown_203A840 +_081A42E0: .4byte gUnknown_85DD564 +_081A42E4: .4byte 0x0000270F +_081A42E8: .4byte gUnknown_2021C54 +_081A42EC: .4byte gUnknown_2021C7C +_081A42F0: .4byte gUnknown_85DD53C + thumb_func_end sub_081A4220 + + thumb_func_start sub_081A42F4 +sub_081A42F4: @ 0x081A42F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + mov r8, r1 + adds r4, r2, #0 + adds r6, r3, #0 + ldr r1, _081A43E0 + mov sb, r1 + ldrb r5, [r1] + lsls r2, r0, #1 + ldr r1, _081A43E4 + adds r2, r2, r1 + mov r1, r8 + lsls r3, r1, #0x1b + lsrs r3, r3, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + adds r4, r4, r1 + lsls r0, r4, #3 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + str r0, [sp] + movs r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + bl sub_0800449C + ldrh r0, [r6, #8] + cmp r0, #0 + beq _081A43D0 + movs r0, #0xff + strb r0, [r6, #0x11] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r6, #0x19] + mov r1, sb + ldrb r0, [r1] + adds r2, r6, #0 + adds r2, #0xa + mov r3, r8 + adds r3, #2 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + subs r1, r4, #1 + lsls r1, r1, #3 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + bl sub_0800449C + mov r1, sb + ldrb r0, [r1] + adds r2, r6, #0 + adds r2, #0x12 + mov r3, r8 + adds r3, #4 + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + adds r1, r4, #1 + lsls r1, r1, #3 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + bl sub_0800449C + ldrh r1, [r6, #8] + ldr r0, _081A43E8 + cmp r1, r0 + bls _081A439E + adds r1, r0, #0 +_081A439E: + ldr r0, _081A43EC + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r4, _081A43F0 + ldr r0, _081A43F4 + ldr r1, [r0, #0x24] + adds r0, r4, #0 + bl sub_08008BCC + mov r1, sb + ldrb r0, [r1] + mov r3, r8 + adds r3, #0xe + lsls r3, r3, #0x1b + lsrs r3, r3, #0x18 + mov r1, sl + str r1, [sp] + str r7, [sp, #4] + str r7, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C +_081A43D0: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A43E0: .4byte gUnknown_203A840 +_081A43E4: .4byte gUnknown_85DD564 +_081A43E8: .4byte 0x0000270F +_081A43EC: .4byte gUnknown_2021C54 +_081A43F0: .4byte gUnknown_2021C7C +_081A43F4: .4byte gUnknown_85DD53C + thumb_func_end sub_081A42F4 + + thumb_func_start sub_081A43F8 +sub_081A43F8: @ 0x081A43F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x44 + mov sb, r0 + mov sl, r1 + str r2, [sp, #0x40] + movs r0, #0xac + lsls r0, r0, #1 + bl sub_08000BDC + mov r8, r0 + bl sub_080E7A48 + add r0, sp, #0x30 + mov ip, r0 + ldr r0, _081A44C8 + ldr r2, [r0] + ldr r3, [sp, #0x40] + lsls r1, r3, #1 + adds r1, r1, r3 + lsls r1, r1, #4 + mov r4, sl + lsls r0, r4, #1 + add r0, sl + lsls r0, r0, #5 + adds r1, r1, r0 + adds r4, r1, r2 + mov r3, sp + movs r2, #2 +_081A4438: + adds r0, r3, #0 + movs r5, #0x87 + lsls r5, r5, #2 + adds r1, r4, r5 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldr r1, [r1] + str r1, [r0] + adds r4, #0x10 + adds r3, #0x10 + subs r2, #1 + cmp r2, #0 + bge _081A4438 + ldr r6, [sp, #0x40] + lsls r0, r6, #4 + mov r7, sl + lsls r1, r7, #5 + adds r0, r0, r1 + mov r1, ip + add r0, r8 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r0, [r0] + str r0, [r1] + movs r2, #0 +_081A446A: + movs r1, #0 + movs r4, #0 + movs r3, #0 + lsls r5, r2, #4 + adds r6, r2, #1 + mov r2, sp +_081A4476: + ldrh r0, [r2, #4] + cmp r0, r1 + ble _081A4480 + adds r4, r3, #0 + adds r1, r0, #0 +_081A4480: + adds r2, #0x10 + adds r3, #1 + cmp r3, #3 + ble _081A4476 + mov r0, sp + ldrh r0, [r0, #0x34] + cmp r0, r1 + blt _081A4492 + movs r4, #3 +_081A4492: + lsls r0, r4, #4 + mov r7, sp + adds r2, r7, r0 + mov r0, sb + adds r1, r5, r0 + adds r0, r2, #0 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, [r0] + str r0, [r1] + movs r0, #0 + strh r0, [r2, #4] + adds r2, r6, #0 + cmp r2, #2 + ble _081A446A + mov r0, r8 + bl sub_08000BF0 + add sp, #0x44 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A44C8: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A43F8 + + thumb_func_start sub_081A44CC +sub_081A44CC: @ 0x081A44CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x74 + mov sb, r0 + mov sl, r1 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_08000BDC + mov r8, r0 + bl sub_080E7A48 + mov r0, sp + adds r0, #0x54 + str r0, [sp, #0x70] + add r1, sp, #0x5c + mov ip, r1 + ldr r0, _081A45A8 + ldr r1, [r0] + movs r0, #0x54 + mov r2, sl + muls r2, r0, r2 + adds r0, r2, #0 + adds r3, r0, r1 + mov r2, sp + movs r4, #2 +_081A4506: + adds r0, r2, #0 + ldr r5, _081A45AC + adds r1, r3, r5 + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r0!, {r5, r6, r7} + ldr r1, [r1] + str r1, [r0] + adds r3, #0x1c + adds r2, #0x1c + subs r4, #1 + cmp r4, #0 + bge _081A4506 + mov r6, sl + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r0, r0, #2 + add r0, r8 + ldr r1, [sp, #0x70] + movs r7, #0x90 + lsls r7, r7, #1 + adds r0, r0, r7 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldr r0, [r0] + str r0, [r1] + movs r4, #0 +_081A4542: + movs r1, #0 + movs r5, #0 + movs r3, #0 + lsls r6, r4, #3 + adds r7, r4, #1 + mov r2, sp +_081A454E: + ldrh r0, [r2, #8] + cmp r0, r1 + ble _081A4558 + adds r5, r3, #0 + adds r1, r0, #0 +_081A4558: + adds r2, #0x1c + adds r3, #1 + cmp r3, #2 + ble _081A454E + mov r2, ip + ldrh r0, [r2] + cmp r0, r1 + blt _081A456A + movs r5, #3 +_081A456A: + subs r1, r6, r4 + lsls r1, r1, #2 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + mov r3, sp + adds r2, r3, r0 + add r1, sb + adds r0, r2, #0 + ldm r0!, {r4, r5, r6} + stm r1!, {r4, r5, r6} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, [r0] + str r0, [r1] + movs r0, #0 + strh r0, [r2, #8] + adds r4, r7, #0 + cmp r4, #2 + ble _081A4542 + mov r0, r8 + bl sub_08000BF0 + add sp, #0x74 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A45A8: .4byte gUnknown_3005AF0 +_081A45AC: .4byte 0x0000057C + thumb_func_end sub_081A44CC + + thumb_func_start sub_081A45B0 +sub_081A45B0: @ 0x081A45B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x90 + adds r7, r0, #0 + mov sb, r1 + ldr r0, _081A464C + ldr r4, _081A4650 + lsls r5, r7, #3 + adds r1, r5, r4 + ldr r1, [r1] + bl sub_080088B8 + ldr r0, _081A4654 + mov r8, r0 + adds r4, #4 + adds r5, r5, r4 + ldr r1, [r5] + bl sub_08008BCC + ldr r5, _081A4658 + ldrb r0, [r5] + movs r6, #2 + str r6, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + mov r2, r8 + movs r3, #0xc + bl sub_0800449C + ldrb r0, [r5] + ldr r2, _081A465C + mov r3, sb + lsls r1, r3, #2 + adds r1, r1, r2 + ldr r2, [r1] + str r6, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r3, #0x84 + bl sub_0800449C + cmp r7, #9 + bne _081A4668 + ldr r2, _081A4660 + ldr r0, [r2] + ldr r1, _081A4664 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r2] + movs r3, #0xef + lsls r3, r3, #4 + adds r0, r0, r3 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + add r4, sp, #0x3c + adds r0, r4, #0 + mov r1, sb + bl sub_081A44CC + movs r5, #0 +_081A4636: + adds r0, r5, #0 + movs r1, #1 + movs r2, #4 + adds r3, r4, #0 + bl sub_081A42F4 + adds r4, #0x1c + adds r5, #1 + cmp r5, #2 + ble _081A4636 + b _081A468C + .align 2, 0 +_081A464C: .4byte gUnknown_2021C40 +_081A4650: .4byte gUnknown_85DD4A4 +_081A4654: .4byte gUnknown_2021C7C +_081A4658: .4byte gUnknown_203A840 +_081A465C: .4byte gUnknown_85DD504 +_081A4660: .4byte gUnknown_3005AF0 +_081A4664: .4byte 0x00000EE8 +_081A4668: + add r0, sp, #0xc + adds r1, r7, #0 + mov r2, sb + bl sub_081A43F8 + movs r5, #0 + add r4, sp, #0xc +_081A4676: + str r7, [sp] + adds r0, r5, #0 + movs r1, #1 + movs r2, #4 + adds r3, r4, #0 + bl sub_081A4220 + adds r4, #0x10 + adds r5, #1 + cmp r5, #2 + ble _081A4676 +_081A468C: + add sp, #0x90 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A45B0 + + thumb_func_start sub_081A469C +sub_081A469C: @ 0x081A469C + push {r4, lr} + ldr r4, _081A46D8 + ldr r0, _081A46DC + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08196FF0 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081A46E0 + ldrh r0, [r0] + movs r1, #0 + bl sub_081A45B0 + ldrb r0, [r4] + bl sub_0800365C + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A46D8: .4byte gUnknown_203A840 +_081A46DC: .4byte gUnknown_85DD2E0 +_081A46E0: .4byte gUnknown_2037282 + thumb_func_end sub_081A469C + + thumb_func_start sub_081A46E4 +sub_081A46E4: @ 0x081A46E4 + push {r4, lr} + ldr r4, _081A4708 + ldrb r0, [r4] + movs r1, #0x11 + bl sub_08003B18 + ldr r0, _081A470C + ldrh r0, [r0] + movs r1, #1 + bl sub_081A45B0 + ldrb r0, [r4] + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A4708: .4byte gUnknown_203A840 +_081A470C: .4byte gUnknown_2037282 + thumb_func_end sub_081A46E4 + + thumb_func_start sub_081A4710 +sub_081A4710: @ 0x081A4710 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r1, #0 + ldr r3, _081A4814 +_081A4720: + movs r6, #0 + lsls r0, r1, #1 + adds r2, r1, #1 + mov sl, r2 + adds r0, r0, r1 + lsls r0, r0, #5 + mov r8, r0 + movs r7, #0 + movs r0, #0x87 + lsls r0, r0, #2 + add r0, r8 + mov sb, r0 +_081A4738: + movs r5, #0 + adds r2, r7, #0 + mov r1, r8 + adds r4, r7, r1 +_081A4740: + ldr r0, [r3] + add r0, sb + adds r0, r0, r2 + lsls r1, r5, #4 + adds r0, r0, r1 + movs r1, #0 + str r2, [sp] + str r3, [sp, #4] + bl sub_08083C7C + ldr r3, [sp, #4] + ldr r0, [r3] + adds r0, r0, r4 + ldr r1, _081A4818 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r3] + adds r0, r0, r4 + movs r1, #0x88 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + adds r4, #0x10 + adds r5, #1 + ldr r2, [sp] + cmp r5, #2 + ble _081A4740 + adds r7, #0x30 + adds r6, #1 + cmp r6, #1 + ble _081A4738 + mov r1, sl + cmp r1, #8 + ble _081A4720 + movs r6, #0 + ldr r7, _081A4814 + movs r2, #0x54 + mov sl, r2 + movs r3, #0xff + mov sb, r3 +_081A4794: + adds r0, r6, #1 + mov r8, r0 + mov r1, sl + muls r1, r6, r1 + movs r0, #0x54 + adds r4, r6, #0 + muls r4, r0, r4 + movs r2, #0 + ldr r3, _081A481C + adds r6, r1, r3 + movs r5, #2 +_081A47AA: + ldr r0, [r7] + adds r0, r0, r6 + adds r0, r0, r2 + movs r1, #0 + str r2, [sp] + bl sub_08083C7C + ldr r0, [r7] + adds r0, r0, r6 + ldr r2, [sp] + adds r0, r0, r2 + adds r0, #4 + movs r1, #0 + bl sub_08083C7C + ldr r1, [r7] + adds r1, r1, r4 + ldr r0, _081A4820 + adds r1, r1, r0 + ldrb r0, [r1] + mov r3, sb + orrs r0, r3 + strb r0, [r1] + ldr r1, [r7] + adds r1, r1, r4 + ldr r0, _081A4824 + adds r1, r1, r0 + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + ldr r0, [r7] + adds r0, r0, r4 + ldr r1, _081A4828 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + adds r4, #0x1c + ldr r2, [sp] + adds r2, #0x1c + subs r5, #1 + cmp r5, #0 + bge _081A47AA + mov r6, r8 + cmp r6, #1 + ble _081A4794 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A4814: .4byte gUnknown_3005AF0 +_081A4818: .4byte 0x00000222 +_081A481C: .4byte 0x0000057C +_081A4820: .4byte 0x00000586 +_081A4824: .4byte 0x0000058E +_081A4828: .4byte 0x00000584 + thumb_func_end sub_081A4710 + + thumb_func_start sub_081A482C +sub_081A482C: @ 0x081A482C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0x96 + lsls r0, r0, #2 + bl sub_08000BDC + adds r7, r0, #0 + adds r4, r7, #0 + movs r5, #0 + movs r0, #0xfa + lsls r0, r0, #1 + adds r6, r7, r0 + ldr r0, _081A48A4 + mov r8, r0 +_081A484A: + mov r0, r8 + adds r1, r5, r0 + adds r0, r4, #0 + movs r2, #0x64 + bl memcpy + adds r4, #0x64 + adds r5, #0x64 + cmp r4, r6 + ble _081A484A + ldr r4, _081A48A8 + ldrb r5, [r4] + bl sub_080767DC + bl sub_08076764 + movs r0, #1 + bl sub_08153274 + bl sub_08076780 + strb r5, [r4] + adds r4, r7, #0 + ldr r5, _081A48A4 + movs r0, #0xfa + lsls r0, r0, #1 + adds r6, r7, r0 +_081A4880: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x64 + bl memcpy + adds r4, #0x64 + adds r5, #0x64 + cmp r4, r6 + ble _081A4880 + adds r0, r7, #0 + bl sub_08000BF0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A48A4: .4byte gUnknown_2024190 +_081A48A8: .4byte gUnknown_202418D + thumb_func_end sub_081A482C + + thumb_func_start sub_081A48AC +sub_081A48AC: @ 0x081A48AC + push {lr} + ldr r0, _081A48C8 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A48CC + bl sub_08185BF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081A48D6 + .align 2, 0 +_081A48C8: .4byte gUnknown_2022C90 +_081A48CC: + ldr r0, _081A48EC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081A48D6: + ldr r2, _081A48F0 + ldr r1, _081A48F4 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r2 + ldrb r0, [r0, #3] + pop {r1} + bx r1 + .align 2, 0 +_081A48EC: .4byte 0x000040CF +_081A48F0: .4byte gUnknown_82E383C +_081A48F4: .4byte gUnknown_85DD56A + thumb_func_end sub_081A48AC + + thumb_func_start sub_081A48F8 +sub_081A48F8: @ 0x081A48F8 + push {lr} + ldr r0, _081A4914 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A4918 + bl sub_08185BF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081A4922 + .align 2, 0 +_081A4914: .4byte gUnknown_2022C90 +_081A4918: + ldr r0, _081A4938 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081A4922: + ldr r2, _081A493C + ldr r1, _081A4940 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r0, r0, r2 + ldrb r0, [r0, #1] + pop {r1} + bx r1 + .align 2, 0 +_081A4938: .4byte 0x000040CF +_081A493C: .4byte gUnknown_82E383C +_081A4940: .4byte gUnknown_85DD56A + thumb_func_end sub_081A48F8 + + thumb_func_start sub_081A4944 +sub_081A4944: @ 0x081A4944 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081A4960 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A4964 + bl sub_08185BF8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081A496E + .align 2, 0 +_081A4960: .4byte gUnknown_2022C90 +_081A4964: + ldr r0, _081A499C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081A496E: + movs r3, #0 + lsls r0, r0, #1 + ldr r2, _081A49A0 + ldr r1, _081A49A4 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #5 + adds r2, #4 + adds r2, r0, r2 +_081A4980: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r3, #1 + cmp r3, #6 + ble _081A4980 + adds r1, r4, r3 + movs r0, #0xff + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A499C: .4byte 0x000040CF +_081A49A0: .4byte gUnknown_82E383C +_081A49A4: .4byte gUnknown_85DD56A + thumb_func_end sub_081A4944 + + thumb_func_start sub_081A49A8 +sub_081A49A8: @ 0x081A49A8 + push {lr} + ldr r0, _081A49C0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, _081A49C4 + lsrs r0, r0, #0xf + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081A49C0: .4byte 0x000040CF +_081A49C4: .4byte gUnknown_85DD47F + thumb_func_end sub_081A49A8 + + thumb_func_start sub_081A49C8 +sub_081A49C8: @ 0x081A49C8 + push {lr} + ldr r0, _081A49E8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r2, _081A49EC + ldr r1, _081A49F0 + lsrs r0, r0, #0xf + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_081A49E8: .4byte 0x000040CF +_081A49EC: .4byte 0x00004010 +_081A49F0: .4byte gUnknown_85DD47F + thumb_func_end sub_081A49C8 + + thumb_func_start sub_081A49F4 +sub_081A49F4: @ 0x081A49F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x44 + ldr r0, _081A4A2C + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #0x20] + bl sub_081A4D2C + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + cmp r0, #1 + bne _081A4A34 + ldr r0, _081A4A30 + bl sub_08194FA0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0818F8D4 + adds r4, r0, #0 + b _081A4A36 + .align 2, 0 +_081A4A2C: .4byte 0x000040CF +_081A4A30: .4byte 0x000003FE +_081A4A34: + movs r4, #7 +_081A4A36: + bl sub_08067710 + movs r1, #0 + str r1, [sp, #0x18] + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x1c] + movs r2, #0 + str r2, [sp, #0x14] +_081A4A4C: + movs r0, #1 + ands r0, r4 + asrs r4, r4, #1 + str r4, [sp, #0x30] + ldr r3, [sp, #0x14] + adds r3, #1 + str r3, [sp, #0x28] + cmp r0, #0 + bne _081A4A60 + b _081A4BB4 +_081A4A60: + ldr r4, [sp, #0x14] + lsls r4, r4, #2 + mov sb, r4 + ldr r0, [sp, #0x24] + lsls r0, r0, #4 + str r0, [sp, #0x38] + ldr r1, [sp, #0x20] + lsls r1, r1, #4 + str r1, [sp, #0x34] + ldr r2, [sp, #0x1c] + lsls r2, r2, #0x18 + str r2, [sp, #0x3c] + ldr r3, [sp, #0x18] + adds r3, #1 + str r3, [sp, #0x2c] + ldr r0, [sp, #0x14] + add r0, sb + lsls r0, r0, #2 + mov r8, r0 +_081A4A86: + bl sub_0806F050 + adds r4, r0, #0 + bl sub_0806F050 + lsls r4, r4, #0x10 + lsrs r7, r4, #0x10 + lsls r0, r0, #0x10 + orrs r7, r0 + ldr r0, _081A4BD0 + adds r1, r7, #0 + bl sub_0806E65C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A4A86 + ldr r4, [sp, #0x38] + ldr r1, [sp, #0x24] + subs r0, r4, r1 + lsls r5, r0, #2 + mov r2, r8 + adds r4, r2, r5 + ldr r3, [sp, #0x34] + ldr r1, [sp, #0x20] + subs r0, r3, r1 + lsls r6, r0, #3 + adds r4, r4, r6 + ldr r2, _081A4BD4 + adds r4, r4, r2 + adds r0, r7, #0 + bl sub_0806CB4C + ldrb r1, [r4, #5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _081A4A86 + ldr r4, [sp, #0x18] + movs r0, #0x64 + adds r3, r4, #0 + muls r3, r0, r3 + mov r8, r3 + ldr r1, _081A4BD8 + add r1, r8 + mov sl, r1 + ldr r4, [sp, #0x14] + add r4, sb + lsls r4, r4, #2 + adds r0, r4, r5 + adds r0, r0, r6 + ldr r2, _081A4BD4 + adds r0, r0, r2 + ldrh r1, [r0] + ldr r3, [sp, #0x3c] + lsrs r2, r3, #0x18 + ldrb r3, [r0, #4] + movs r0, #1 + str r0, [sp] + str r7, [sp, #4] + str r0, [sp, #8] + ldr r0, _081A4BD0 + str r0, [sp, #0xc] + mov r0, sl + bl sub_08067730 + ldr r0, _081A4BD4 + adds r5, r5, r0 + adds r5, r6, r5 + adds r4, r5, r4 + adds r4, #2 + mov r0, sl + movs r1, #0xc + adds r2, r4, #0 + bl sub_0806A774 + movs r7, #0 + mov r6, r8 + ldr r3, _081A4BD8 +_081A4B22: + adds r1, r7, #0 + adds r1, #0x1a + ldr r0, [sp, #0x14] + add r0, sb + lsls r4, r0, #2 + adds r2, r5, r4 + adds r0, r7, #6 + adds r2, r2, r0 + adds r0, r6, r3 + str r3, [sp, #0x40] + bl sub_0806A774 + adds r7, #1 + ldr r3, [sp, #0x40] + cmp r7, #5 + ble _081A4B22 + movs r1, #0xff + add r0, sp, #0x10 + strb r1, [r0] + movs r7, #0 + ldr r1, [sp, #0x18] + movs r2, #0x64 + adds r6, r1, #0 + muls r6, r2, r6 + ldr r3, _081A4BDC + mov r8, r3 + ldr r3, _081A4BD8 + adds r5, r4, #0 +_081A4B5A: + ldr r4, [sp, #0x38] + ldr r0, [sp, #0x24] + subs r1, r4, r0 + lsls r1, r1, #2 + adds r1, r5, r1 + ldr r2, [sp, #0x34] + ldr r4, [sp, #0x20] + subs r0, r2, r4 + lsls r0, r0, #3 + adds r1, r1, r0 + add r1, r8 + ldrh r4, [r1] + lsls r2, r7, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, r3 + adds r1, r4, #0 + str r3, [sp, #0x40] + bl sub_08068D34 + ldr r3, [sp, #0x40] + cmp r4, #0xda + bne _081A4B8C + movs r1, #0 + add r0, sp, #0x10 + strb r1, [r0] +_081A4B8C: + adds r5, #2 + adds r7, #1 + cmp r7, #3 + ble _081A4B5A + ldr r0, [sp, #0x18] + movs r1, #0x64 + adds r4, r0, #0 + muls r4, r1, r4 + ldr r0, _081A4BD8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + add r2, sp, #0x10 + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C + ldr r2, [sp, #0x2c] + str r2, [sp, #0x18] +_081A4BB4: + ldr r4, [sp, #0x30] + ldr r3, [sp, #0x28] + str r3, [sp, #0x14] + cmp r3, #2 + bgt _081A4BC0 + b _081A4A4C +_081A4BC0: + add sp, #0x44 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A4BD0: .4byte 0x0000EF2A +_081A4BD4: .4byte gUnknown_85DCB98 +_081A4BD8: .4byte gUnknown_20243E8 +_081A4BDC: .4byte gUnknown_85DCBA4 + thumb_func_end sub_081A49F4 + + thumb_func_start sub_081A4BE0 +sub_081A4BE0: @ 0x081A4BE0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081A4C18 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_081A4D2C + ldr r3, _081A4C1C + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r1, r0, #4 + subs r1, r1, r0 + adds r1, r1, r2 + lsls r1, r1, #2 + lsls r0, r5, #4 + subs r0, r0, r5 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldrh r0, [r1] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081A4C18: .4byte 0x000040CF +_081A4C1C: .4byte gUnknown_85DCB98 + thumb_func_end sub_081A4BE0 + + thumb_func_start sub_081A4C20 +sub_081A4C20: @ 0x081A4C20 + push {lr} + lsls r0, r0, #0x18 + ldr r2, _081A4C40 + ldr r3, _081A4C44 + adds r1, r3, #0 + strh r1, [r2] + ldr r2, _081A4C48 + ldr r1, _081A4C4C + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_0809CF88 + pop {r0} + bx r0 + .align 2, 0 +_081A4C40: .4byte gUnknown_203886A +_081A4C44: .4byte 0x000003FE +_081A4C48: .4byte 0x00004010 +_081A4C4C: .4byte gUnknown_85DD47F + thumb_func_end sub_081A4C20 + + thumb_func_start sub_081A4C50 +sub_081A4C50: @ 0x081A4C50 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081A4C98 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_081A4D2C + ldr r2, _081A4C9C + lsls r4, r4, #1 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r4, r4, r1 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, r4, r1 + lsls r0, r5, #4 + subs r0, r0, r5 + lsls r0, r0, #3 + adds r4, r4, r0 + adds r2, #0xc + adds r4, r4, r2 + ldrh r0, [r4] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081A4C98: .4byte 0x000040CF +_081A4C9C: .4byte gUnknown_85DCB98 + thumb_func_end sub_081A4C50 + + thumb_func_start sub_081A4CA0 +sub_081A4CA0: @ 0x081A4CA0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081A4CD8 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_081A4D2C + ldr r3, _081A4CDC + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r1, r0, #4 + subs r1, r1, r0 + adds r1, r1, r2 + lsls r1, r1, #2 + lsls r0, r5, #4 + subs r0, r0, r5 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1, #5] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081A4CD8: .4byte 0x000040CF +_081A4CDC: .4byte gUnknown_85DCB98 + thumb_func_end sub_081A4CA0 + + thumb_func_start sub_081A4CE0 +sub_081A4CE0: @ 0x081A4CE0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081A4D24 + bl sub_0809CF6C + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + bl sub_081A4D2C + ldr r2, _081A4D28 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #2 + adds r4, r4, r1 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r4, r4, r1 + lsls r0, r5, #4 + subs r0, r0, r5 + lsls r0, r0, #3 + adds r4, r4, r0 + adds r2, #6 + adds r4, r4, r2 + ldrb r0, [r4] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081A4D24: .4byte 0x000040CF +_081A4D28: .4byte gUnknown_85DCB98 + thumb_func_end sub_081A4CE0 + + thumb_func_start sub_081A4D2C +sub_081A4D2C: @ 0x081A4D2C + push {r4, r5, lr} + ldr r0, _081A4D68 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bne _081A4D90 + bl sub_081A375C + lsls r0, r0, #0x10 + ldr r3, _081A4D6C + lsls r2, r5, #2 + adds r1, r3, #3 + adds r1, r2, r1 + lsrs r0, r0, #0x10 + ldrb r1, [r1] + adds r1, r0, r1 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _081A4D70 + movs r4, #0 + b _081A4D90 + .align 2, 0 +_081A4D68: .4byte 0x000040CF +_081A4D6C: .4byte gUnknown_85DCB7C +_081A4D70: + adds r0, r3, #1 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r1, r0 + beq _081A4D8E + cmp r1, r0 + ble _081A4D90 + subs r0, r1, r0 + adds r1, r3, #2 + adds r1, r2, r1 + ldrb r1, [r1] + bl __modsi3 + cmp r0, #0 + bne _081A4D90 +_081A4D8E: + movs r4, #1 +_081A4D90: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081A4D2C + + thumb_func_start sub_081A4D98 +sub_081A4D98: @ 0x081A4D98 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081A4DC0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + beq _081A4DC4 + bl sub_08185BF8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08185C04 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + b _081A4DD4 + .align 2, 0 +_081A4DC0: .4byte gUnknown_2022C90 +_081A4DC4: + ldr r0, _081A4DE0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + bl sub_081A4D2C + adds r1, r0, #0 +_081A4DD4: + cmp r5, #0 + beq _081A4DE4 + cmp r5, #1 + beq _081A4E04 + b _081A4E18 + .align 2, 0 +_081A4DE0: .4byte 0x000040CF +_081A4DE4: + ldr r0, _081A4DFC + ldr r2, _081A4E00 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + lsls r1, r4, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + b _081A4E18 + .align 2, 0 +_081A4DFC: .4byte gUnknown_2021C7C +_081A4E00: .4byte gUnknown_85DD5E8 +_081A4E04: + ldr r0, _081A4E20 + ldr r2, _081A4E24 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + lsls r1, r4, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 +_081A4E18: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A4E20: .4byte gUnknown_2021C7C +_081A4E24: .4byte gUnknown_85DD5F0 + thumb_func_end sub_081A4D98 + + thumb_func_start sub_081A4E28 +sub_081A4E28: @ 0x081A4E28 + push {lr} + ldr r1, _081A4E40 + ldr r0, _081A4E44 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A4E28 + + thumb_func_start sub_081A4E3C +sub_081A4E3C: @ 0x081A4E3C + bx r0 + .align 2, 0 +_081A4E40: .4byte gUnknown_85DD7BC +_081A4E44: .4byte gUnknown_2037280 + thumb_func_end sub_081A4E3C + + thumb_func_start sub_081A4E48 +sub_081A4E48: @ 0x081A4E48 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + movs r6, #0 + ldrb r0, [r5] + cmp r0, #0xa + bls _081A4E58 + b _081A5134 +_081A4E58: + lsls r0, r0, #2 + ldr r1, _081A4E64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A4E64: .4byte _081A4E68 +_081A4E68: @ jump table + .4byte _081A4E94 @ case 0 + .4byte _081A4EE4 @ case 1 + .4byte _081A4F0C @ case 2 + .4byte _081A4FA4 @ case 3 + .4byte _081A4FFC @ case 4 + .4byte _081A501C @ case 5 + .4byte _081A503C @ case 6 + .4byte _081A5080 @ case 7 + .4byte _081A512E @ case 8 + .4byte _081A50C4 @ case 9 + .4byte _081A5110 @ case 10 +_081A4E94: + ldr r0, _081A4ECC + movs r1, #0 + str r1, [sp] + movs r1, #4 + movs r2, #0 + movs r3, #8 + bl sub_080A139C + ldr r1, _081A4ED0 + movs r0, #0x48 + bl sub_08001144 + ldr r0, _081A4ED4 + bl sub_08034388 + ldr r0, _081A4ED8 + movs r1, #0xf8 + lsls r1, r1, #1 + movs r2, #0x20 + bl sub_080A11BC + ldr r1, _081A4EDC + movs r0, #0xff + strh r0, [r1] + ldr r1, _081A4EE0 + movs r0, #0x70 + strh r0, [r1] + b _081A512E + .align 2, 0 +_081A4ECC: .4byte 0x7FFFFF1C +_081A4ED0: .4byte 0x00003F3E +_081A4ED4: .4byte gUnknown_85DD7AC +_081A4ED8: .4byte gUnknown_8D855CC +_081A4EDC: .4byte gUnknown_2022AD8 +_081A4EE0: .4byte gUnknown_2022ADA +_081A4EE4: + ldr r0, _081A4F08 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081A4EF6 + b _081A5134 +_081A4EF6: + str r0, [sp] + movs r0, #6 + movs r1, #0 + movs r2, #0x17 + movs r3, #0xd + bl sub_0805664C + b _081A512E + .align 2, 0 +_081A4F08: .4byte gUnknown_2037C74 +_081A4F0C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A4F18 + b _081A5134 +_081A4F18: + ldr r1, _081A4F7C + movs r2, #0xa1 + strb r2, [r1] + movs r0, #0xff + strb r0, [r1, #1] + ldr r1, _081A4F80 + strb r2, [r1] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1, #1] + ldr r0, _081A4F84 + bl sub_0814E7A0 + ldr r4, _081A4F88 + adds r0, r4, #0 + movs r1, #0xf + bl sub_0814FA04 + ldr r0, _081A4F8C + movs r1, #0x10 + bl sub_0814FA04 + ldr r0, _081A4F90 + bl sub_0814E7A0 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0814FA04 + ldr r0, _081A4F94 + movs r1, #0x12 + bl sub_0814FA04 + ldr r0, _081A4F98 + movs r1, #0x13 + bl sub_0814FA04 + ldr r0, _081A4F9C + movs r1, #0x14 + bl sub_0814FA04 + ldr r0, _081A4FA0 + bl sub_0814E7A0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0814FA04 + b _081A512E + .align 2, 0 +_081A4F7C: .4byte gUnknown_2022C0C +_081A4F80: .4byte gUnknown_2022C1C +_081A4F84: .4byte gUnknown_85ABD9A +_081A4F88: .4byte gUnknown_2022AE0 +_081A4F8C: .4byte gUnknown_85ABD9D +_081A4F90: .4byte gUnknown_85ABDA0 +_081A4F94: .4byte gUnknown_85ABDA3 +_081A4F98: .4byte gUnknown_85ABDA7 +_081A4F9C: .4byte gUnknown_85ABDAA +_081A4FA0: .4byte gUnknown_85ABDAE +_081A4FA4: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A4FB0 + b _081A5134 +_081A4FB0: + ldr r1, _081A4FF0 + movs r0, #0x48 + bl sub_08001144 + movs r6, #0x80 + lsls r6, r6, #0xf + movs r4, #7 +_081A4FBE: + asrs r1, r6, #0x10 + ldr r0, _081A4FF4 + movs r2, #0x54 + movs r3, #0 + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081A4FF8 + adds r0, r0, r1 + movs r1, #3 + bl sub_08007EC0 + movs r0, #0x80 + lsls r0, r0, #0xd + adds r6, r6, r0 + subs r4, #1 + cmp r4, #0 + bge _081A4FBE + b _081A512C + .align 2, 0 +_081A4FF0: .4byte 0x00003F3F +_081A4FF4: .4byte gUnknown_85DD794 +_081A4FF8: .4byte gUnknown_20205AC +_081A4FFC: + ldr r0, _081A5018 + bl sub_080A306C + movs r0, #0x50 + movs r1, #0x28 + movs r2, #0 + movs r3, #0 + bl sub_081A5148 + movs r0, #0xa0 + movs r1, #0x28 + movs r2, #0 + b _081A5054 + .align 2, 0 +_081A5018: .4byte 0x00000109 +_081A501C: + ldr r0, _081A5038 + bl sub_080A306C + movs r0, #0x50 + movs r1, #0x38 + movs r2, #1 + movs r3, #0 + bl sub_081A5148 + movs r0, #0xa0 + movs r1, #0x38 + movs r2, #1 + b _081A5054 + .align 2, 0 +_081A5038: .4byte 0x00000109 +_081A503C: + ldr r0, _081A5074 + bl sub_080A306C + movs r0, #0x50 + movs r1, #0x48 + movs r2, #2 + movs r3, #0 + bl sub_081A5148 + movs r0, #0xa0 + movs r1, #0x48 + movs r2, #2 +_081A5054: + movs r3, #1 + bl sub_081A5148 + ldr r0, _081A5078 + bl sub_0814E7A0 + ldr r0, _081A507C + movs r1, #0x15 + bl sub_0814FA04 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + movs r6, #1 + b _081A5134 + .align 2, 0 +_081A5074: .4byte 0x00000109 +_081A5078: .4byte gUnknown_85ABDAE +_081A507C: .4byte gUnknown_2022AE0 +_081A5080: + movs r0, #0x85 + lsls r0, r0, #1 + bl sub_080A306C + ldr r0, _081A50A0 + ldr r1, _081A50A4 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + bls _081A50AC + movs r6, #2 + ldr r1, _081A50A8 + movs r0, #0 + strb r0, [r1, #0x17] + b _081A512E + .align 2, 0 +_081A50A0: .4byte gUnknown_2022C0C +_081A50A4: .4byte gUnknown_2022C1C +_081A50A8: .4byte gUnknown_2024118 +_081A50AC: + cmp r2, r0 + bhs _081A50C0 + movs r6, #3 + ldr r1, _081A50BC + movs r0, #1 + strb r0, [r1, #0x17] + b _081A512E + .align 2, 0 +_081A50BC: .4byte gUnknown_2024118 +_081A50C0: + movs r6, #4 + b _081A512E +_081A50C4: + ldr r1, _081A5100 + movs r0, #0x48 + bl sub_08001144 + movs r0, #1 + str r0, [sp] + movs r0, #6 + movs r1, #0 + movs r2, #0x17 + movs r3, #0xd + bl sub_0805664C + movs r0, #0 + bl sub_08002248 + ldr r0, _081A5104 + ldr r1, _081A5108 + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + ldr r0, _081A510C + movs r1, #0 + str r1, [sp] + movs r1, #4 + movs r2, #8 + movs r3, #0 + bl sub_080A139C + b _081A512E + .align 2, 0 +_081A5100: .4byte 0x00003F3E +_081A5104: .4byte gUnknown_30074D0 +_081A5108: .4byte 0x0000FFFF +_081A510C: .4byte 0x7FFFFF1C +_081A5110: + ldr r0, _081A5140 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081A5134 + ldr r1, _081A5144 + movs r0, #0x48 + bl sub_08001144 + movs r0, #0xfa + lsls r0, r0, #2 + bl sub_08008280 +_081A512C: + movs r6, #1 +_081A512E: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] +_081A5134: + adds r0, r6, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081A5140: .4byte gUnknown_2037C74 +_081A5144: .4byte 0x00003F3F + thumb_func_end sub_081A4E48 + + thumb_func_start sub_081A5148 +sub_081A5148: @ 0x081A5148 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sb, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + movs r6, #0 + movs r1, #0 + ldr r0, _081A5190 + ldr r0, [r0] + movs r3, #0xa6 + lsls r3, r3, #2 + adds r4, r0, r3 + ldr r5, _081A5194 + adds r3, r0, r5 + adds r5, #2 + adds r5, r5, r0 + mov r8, r5 + cmp r2, #1 + beq _081A51B4 + cmp r2, #1 + bgt _081A5198 + cmp r2, #0 + beq _081A51A0 + b _081A5202 + .align 2, 0 +_081A5190: .4byte gUnknown_2024140 +_081A5194: .4byte 0x0000029A +_081A5198: + mov r0, sb + cmp r0, #2 + beq _081A51C8 + b _081A5202 +_081A51A0: + adds r0, r4, r7 + movs r6, #0 + ldrsb r6, [r0, r6] + movs r1, #1 + adds r0, r7, #0 + eors r0, r1 + adds r0, r4, r0 + movs r1, #0 + ldrsb r1, [r0, r1] + b _081A5202 +_081A51B4: + adds r0, r3, r7 + movs r6, #0 + ldrsb r6, [r0, r6] + movs r1, #1 + adds r0, r7, #0 + eors r0, r1 + adds r0, r3, r0 + movs r1, #0 + ldrsb r1, [r0, r1] + b _081A5202 +_081A51C8: + ldr r3, _081A5210 + mov sb, r3 + movs r5, #0x58 + adds r0, r7, #0 + muls r0, r5, r0 + add r0, sb + ldrh r0, [r0, #0x28] + movs r4, #0x64 + muls r0, r4, r0 + lsls r1, r7, #1 + add r1, r8 + ldrh r1, [r1] + bl __divsi3 + adds r6, r0, #0 + movs r0, #1 + adds r1, r7, #0 + eors r1, r0 + adds r0, r1, #0 + muls r0, r5, r0 + add r0, sb + ldrh r0, [r0, #0x28] + muls r0, r4, r0 + lsls r1, r1, #1 + add r1, r8 + ldrh r1, [r1] + bl __divsi3 + adds r1, r0, #0 +_081A5202: + cmp r6, r1 + ble _081A5228 + movs r4, #2 + cmp r7, #0 + beq _081A5218 + ldr r1, _081A5214 + b _081A521A + .align 2, 0 +_081A5210: .4byte gUnknown_2023D28 +_081A5214: .4byte gUnknown_2022C1C +_081A5218: + ldr r1, _081A5224 +_081A521A: + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + b _081A524E + .align 2, 0 +_081A5224: .4byte gUnknown_2022C0C +_081A5228: + cmp r6, r1 + bne _081A524C + movs r4, #1 + cmp r7, #0 + beq _081A523C + ldr r1, _081A5238 + b _081A523E + .align 2, 0 +_081A5238: .4byte gUnknown_2022C1C +_081A523C: + ldr r1, _081A5248 +_081A523E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081A524E + .align 2, 0 +_081A5248: .4byte gUnknown_2022C0C +_081A524C: + movs r4, #0 +_081A524E: + ldr r0, _081A5280 + ldr r1, [sp] + mov r2, sl + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r1, _081A5284 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_08007EC0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A5280: .4byte gUnknown_85DD794 +_081A5284: .4byte gUnknown_20205AC + thumb_func_end sub_081A5148 + + thumb_func_start sub_081A5288 +sub_081A5288: @ 0x081A5288 + push {lr} + adds r1, r0, #0 + ldr r0, _081A52A0 + ldrb r0, [r0] + cmp r0, #8 + bls _081A529A + adds r0, r1, #0 + bl sub_08006E00 +_081A529A: + pop {r0} + bx r0 + .align 2, 0 +_081A52A0: .4byte gUnknown_2023FD6 + thumb_func_end sub_081A5288 + + thumb_func_start sub_081A52A4 +sub_081A52A4: @ 0x081A52A4 + ldr r0, _081A52D0 + ldr r2, [r0] + movs r0, #0xa6 + lsls r0, r0, #2 + adds r1, r2, r0 + adds r0, #2 + adds r3, r2, r0 + adds r0, #2 + adds r2, r2, r0 + movs r0, #0 + strb r0, [r1] + strb r0, [r1, #1] + strb r0, [r3] + strb r0, [r3, #1] + ldr r0, _081A52D4 + ldrh r1, [r0, #0x28] + strh r1, [r2] + adds r0, #0x80 + ldrh r0, [r0] + strh r0, [r2, #2] + bx lr + .align 2, 0 +_081A52D0: .4byte gUnknown_2024140 +_081A52D4: .4byte gUnknown_2023D28 + thumb_func_end sub_081A52A4 + + thumb_func_start sub_081A52D8 +sub_081A52D8: @ 0x081A52D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081A52FC + ldr r1, [r1] + movs r2, #0xa6 + lsls r2, r2, #2 + adds r1, r1, r2 + adds r1, r1, r0 + ldr r2, _081A5300 + ldr r0, _081A5304 + ldrh r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081A52FC: .4byte gUnknown_2024140 +_081A5300: .4byte gUnknown_85DD5F8 +_081A5304: .4byte gUnknown_2023E8E + thumb_func_end sub_081A52D8 + + thumb_func_start sub_081A5308 +sub_081A5308: @ 0x081A5308 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r6, r3, #0 + ldr r0, _081A5348 + ldr r2, [r0] + ldr r0, _081A534C + adds r5, r2, r0 + ldr r0, _081A5350 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + beq _081A53CA + ldr r0, _081A5354 + adds r4, r2, r0 + ldrb r2, [r4] + ldr r0, _081A5358 + lsls r1, r3, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081A535C + bics r2, r1 + strb r2, [r4] + adds r1, r5, r3 + ldrb r0, [r1] + subs r0, #2 + b _081A53C8 + .align 2, 0 +_081A5348: .4byte gUnknown_2024140 +_081A534C: .4byte 0x0000029A +_081A5350: .4byte gUnknown_2023F24 +_081A5354: .4byte 0x000002A2 +_081A5358: .4byte gUnknown_82FACB4 +_081A535C: + ldr r0, _081A5380 + ldrb r1, [r0] + movs r0, #0x29 + ands r0, r1 + cmp r0, #0 + beq _081A5388 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081A5378 + ldr r0, _081A5384 + ldrb r0, [r0, #6] + cmp r0, #1 + beq _081A53CA +_081A5378: + adds r1, r5, r3 + ldrb r0, [r1] + subs r0, #2 + b _081A53C8 + .align 2, 0 +_081A5380: .4byte gUnknown_2023F20 +_081A5384: .4byte gUnknown_2023FD6 +_081A5388: + movs r0, #6 + ands r0, r1 + cmp r0, #6 + bne _081A5394 + adds r1, r5, r3 + b _081A53C4 +_081A5394: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081A53A4 + adds r1, r5, r3 + ldrb r0, [r1] + adds r0, #2 + b _081A53C8 +_081A53A4: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081A53B4 + adds r1, r5, r3 + ldrb r0, [r1] + subs r0, #1 + b _081A53C8 +_081A53B4: + ldr r0, _081A53D0 + lsls r1, r6, #4 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _081A53CA + adds r1, r5, r6 +_081A53C4: + ldrb r0, [r1] + adds r0, #1 +_081A53C8: + strb r0, [r1] +_081A53CA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A53D0: .4byte gUnknown_2023FE0 + thumb_func_end sub_081A5308 + + thumb_func_start sub_081A53D4 +sub_081A53D4: @ 0x081A53D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r2, r1, #0 + ldr r0, _081A5404 + ldr r0, [r0] + ldr r5, _081A5408 + adds r3, r0, r5 + movs r0, #0x99 + lsls r0, r0, #1 + cmp r1, r0 + bgt _081A541A + subs r0, #1 + cmp r1, r0 + bge _081A544C + cmp r1, #0xc5 + bgt _081A540C + cmp r1, #0xc3 + bge _081A544C + cmp r1, #0x77 + beq _081A544C + b _081A5454 + .align 2, 0 +_081A5404: .4byte gUnknown_2024140 +_081A5408: .4byte 0x0000029A +_081A540C: + cmp r1, #0xc7 + blt _081A5454 + cmp r1, #0xcc + ble _081A544C + cmp r1, #0xce + beq _081A544C + b _081A5454 +_081A541A: + ldr r0, _081A5434 + cmp r1, r0 + beq _081A544C + cmp r1, r0 + bgt _081A5438 + subs r0, #0x12 + cmp r1, r0 + beq _081A544C + adds r0, #2 + cmp r1, r0 + beq _081A544C + b _081A5454 + .align 2, 0 +_081A5434: .4byte 0x00000147 +_081A5438: + movs r0, #0xad + lsls r0, r0, #1 + cmp r2, r0 + blt _081A5454 + adds r0, #1 + cmp r2, r0 + ble _081A544C + adds r0, #3 + cmp r2, r0 + bne _081A5454 +_081A544C: + adds r1, r3, r4 + ldrb r0, [r1] + subs r0, #3 + strb r0, [r1] +_081A5454: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A53D4 + + thumb_func_start sub_081A545C +sub_081A545C: @ 0x081A545C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081A549C + ldr r3, [r1] + movs r1, #0xa7 + lsls r1, r1, #2 + adds r3, r3, r1 + lsls r2, r0, #1 + adds r2, r2, r3 + ldr r5, _081A54A0 + movs r4, #0x58 + adds r1, r0, #0 + muls r1, r4, r1 + adds r1, r1, r5 + ldrh r1, [r1, #0x28] + strh r1, [r2] + movs r1, #1 + eors r0, r1 + lsls r1, r0, #1 + adds r1, r1, r3 + muls r0, r4, r0 + adds r0, r0, r5 + ldrh r2, [r0, #0x28] + ldrh r0, [r1] + cmp r0, r2 + bls _081A5494 + strh r2, [r1] +_081A5494: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A549C: .4byte gUnknown_2024140 +_081A54A0: .4byte gUnknown_2023D28 + thumb_func_end sub_081A545C + + thumb_func_start sub_081A54A4 +sub_081A54A4: @ 0x081A54A4 + push {r4, r5, r6, lr} + ldr r4, _081A54F0 + ldr r1, [r4] + ldr r3, _081A54F4 + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _081A54F8 + adds r1, r1, r0 + movs r2, #0 + strb r2, [r1] + ldr r1, [r4] + ldr r6, _081A54FC + adds r0, r1, r6 + strh r2, [r0] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + cmp r5, #0 + beq _081A5504 + ldr r0, [r4] + ldr r1, _081A5500 + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0x80 + b _081A550E + .align 2, 0 +_081A54F0: .4byte gUnknown_3005AF0 +_081A54F4: .4byte 0x00000CA9 +_081A54F8: .4byte 0x00000CA8 +_081A54FC: .4byte 0x00000CB2 +_081A5500: .4byte 0x00000CDC +_081A5504: + ldr r0, [r4] + ldr r3, _081A5544 + adds r0, r0, r3 + ldr r2, [r0] + movs r0, #0x40 +_081A550E: + ands r2, r0 + cmp r2, #0 + bne _081A5520 + ldr r0, [r4] + lsls r1, r5, #1 + ldr r6, _081A5548 + adds r0, r0, r6 + adds r0, r0, r1 + strh r2, [r0] +_081A5520: + ldr r0, _081A554C + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + ldr r1, _081A5550 + movs r0, #0 + strh r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A5544: .4byte 0x00000CDC +_081A5548: .4byte 0x00000DDA +_081A554C: .4byte gUnknown_3005AEC +_081A5550: .4byte gUnknown_203886A + thumb_func_end sub_081A54A4 + + thumb_func_start sub_081A5554 +sub_081A5554: @ 0x081A5554 + push {r4, lr} + ldr r0, _081A5578 + ldr r3, [r0] + ldr r1, _081A557C + adds r0, r3, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r1, r0, #0x1e + ldr r0, _081A5580 + ldrh r0, [r0] + cmp r0, #1 + beq _081A55A0 + cmp r0, #1 + bgt _081A5584 + cmp r0, #0 + beq _081A558A + b _081A55DE + .align 2, 0 +_081A5578: .4byte gUnknown_3005AF0 +_081A557C: .4byte 0x00000CA9 +_081A5580: .4byte gUnknown_2037282 +_081A5584: + cmp r0, #2 + beq _081A55B8 + b _081A55DE +_081A558A: + ldr r0, _081A5598 + ldr r2, _081A559C + adds r1, r3, r2 + ldrh r1, [r1] + strh r1, [r0] + b _081A55DE + .align 2, 0 +_081A5598: .4byte gUnknown_2037290 +_081A559C: .4byte 0x00000DD8 +_081A55A0: + ldr r2, _081A55B0 + lsls r1, r1, #1 + ldr r4, _081A55B4 + adds r0, r3, r4 + adds r0, r0, r1 + ldrh r0, [r0] + b _081A55DC + .align 2, 0 +_081A55B0: .4byte gUnknown_2037290 +_081A55B4: .4byte 0x00000DDA +_081A55B8: + cmp r1, #0 + beq _081A55D0 + ldr r2, _081A55C8 + ldr r1, _081A55CC + adds r0, r3, r1 + ldr r0, [r0] + movs r1, #0x80 + b _081A55DA + .align 2, 0 +_081A55C8: .4byte gUnknown_2037290 +_081A55CC: .4byte 0x00000CDC +_081A55D0: + ldr r2, _081A55E4 + ldr r4, _081A55E8 + adds r0, r3, r4 + ldr r0, [r0] + movs r1, #0x40 +_081A55DA: + ands r0, r1 +_081A55DC: + strh r0, [r2] +_081A55DE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A55E4: .4byte gUnknown_2037290 +_081A55E8: .4byte 0x00000CDC + thumb_func_end sub_081A5554 + + thumb_func_start sub_081A55EC +sub_081A55EC: @ 0x081A55EC + push {lr} + ldr r0, _081A5610 + ldr r2, [r0] + ldr r1, _081A5614 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r1, r0, #0x1e + ldr r0, _081A5618 + ldrh r0, [r0] + cmp r0, #1 + beq _081A5638 + cmp r0, #1 + bgt _081A561C + cmp r0, #0 + beq _081A5622 + b _081A56AA + .align 2, 0 +_081A5610: .4byte gUnknown_3005AF0 +_081A5614: .4byte 0x00000CA9 +_081A5618: .4byte gUnknown_2037282 +_081A561C: + cmp r0, #2 + beq _081A5650 + b _081A56AA +_081A5622: + ldr r0, _081A5630 + ldrh r1, [r0] + ldr r3, _081A5634 + adds r0, r2, r3 + strh r1, [r0] + b _081A56AA + .align 2, 0 +_081A5630: .4byte gUnknown_2037284 +_081A5634: .4byte 0x00000DD8 +_081A5638: + lsls r1, r1, #1 + ldr r3, _081A5648 + adds r0, r2, r3 + adds r0, r0, r1 + ldr r1, _081A564C + ldrh r1, [r1] + strh r1, [r0] + b _081A56AA + .align 2, 0 +_081A5648: .4byte 0x00000DDA +_081A564C: .4byte gUnknown_2037284 +_081A5650: + cmp r1, #0 + beq _081A5680 + ldr r0, _081A5668 + ldrh r0, [r0] + cmp r0, #0 + beq _081A5670 + ldr r1, _081A566C + adds r0, r2, r1 + ldr r1, [r0] + movs r2, #0x80 + orrs r1, r2 + b _081A56A8 + .align 2, 0 +_081A5668: .4byte gUnknown_2037284 +_081A566C: .4byte 0x00000CDC +_081A5670: + ldr r3, _081A567C + adds r0, r2, r3 + ldr r1, [r0] + movs r2, #0x81 + rsbs r2, r2, #0 + b _081A56A6 + .align 2, 0 +_081A567C: .4byte 0x00000CDC +_081A5680: + ldr r0, _081A5694 + ldrh r0, [r0] + cmp r0, #0 + beq _081A569C + ldr r1, _081A5698 + adds r0, r2, r1 + ldr r1, [r0] + movs r2, #0x40 + orrs r1, r2 + b _081A56A8 + .align 2, 0 +_081A5694: .4byte gUnknown_2037284 +_081A5698: .4byte 0x00000CDC +_081A569C: + ldr r3, _081A56B0 + adds r0, r2, r3 + ldr r1, [r0] + movs r2, #0x41 + rsbs r2, r2, #0 +_081A56A6: + ands r1, r2 +_081A56A8: + str r1, [r0] +_081A56AA: + pop {r0} + bx r0 + .align 2, 0 +_081A56B0: .4byte 0x00000CDC + thumb_func_end sub_081A55EC + + thumb_func_start sub_081A56B4 +sub_081A56B4: @ 0x081A56B4 + push {r4, lr} + ldr r4, _081A56E8 + ldr r0, [r4] + ldr r1, _081A56EC + ldrh r1, [r1] + ldr r2, _081A56F0 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081A56F4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A56E8: .4byte gUnknown_3005AF0 +_081A56EC: .4byte gUnknown_2037282 +_081A56F0: .4byte 0x00000CA8 +_081A56F4: .4byte 0x00000CA9 + thumb_func_end sub_081A56B4 + + thumb_func_start sub_081A56F8 +sub_081A56F8: @ 0x081A56F8 + push {r4, r5, lr} + ldr r4, _081A5734 + ldr r1, [r4] + ldr r2, _081A5738 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r2, _081A573C + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0x29 + bls _081A5748 + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _081A5740 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _081A5744 + adds r4, r4, r1 + b _081A5766 + .align 2, 0 +_081A5734: .4byte gUnknown_3005AF0 +_081A5738: .4byte 0x00000CA9 +_081A573C: .4byte 0x00000DDA +_081A5740: .4byte gUnknown_85DD7E4 +_081A5744: .4byte 0x00000DD8 +_081A5748: + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _081A5770 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r2, _081A5774 + adds r4, r4, r2 +_081A5766: + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A5770: .4byte gUnknown_85DD7D8 +_081A5774: .4byte 0x00000DD8 + thumb_func_end sub_081A56F8 + + thumb_func_start sub_081A5778 +sub_081A5778: @ 0x081A5778 + push {r4, r5, lr} + ldr r4, _081A57B0 + ldr r0, [r4] + ldr r1, _081A57B4 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _081A57C0 + ldr r0, [r4] + ldr r1, _081A57B4 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081A57B8 + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081A57B4 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081A57BC + strh r5, [r0] + b _081A57C6 + .align 2, 0 +_081A57B0: .4byte gUnknown_3005AF0 +_081A57B4: .4byte 0x00000DD8 +_081A57B8: .4byte gUnknown_2021C40 +_081A57BC: .4byte gUnknown_2037290 +_081A57C0: + ldr r1, _081A57CC + movs r0, #0 + strh r0, [r1] +_081A57C6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A57CC: .4byte gUnknown_2037290 + thumb_func_end sub_081A5778 + + thumb_func_start sub_081A57D0 +sub_081A57D0: @ 0x081A57D0 + push {lr} + ldr r0, _081A57E0 + ldr r1, _081A57E4 + ldrh r1, [r1] + bl sub_08162D24 + pop {r0} + bx r0 + .align 2, 0 +_081A57E0: .4byte gUnknown_2021C40 +_081A57E4: .4byte gUnknown_203886A + thumb_func_end sub_081A57D0 + + thumb_func_start sub_081A57E8 +sub_081A57E8: @ 0x081A57E8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + movs r0, #0x16 + mov r8, r0 + movs r5, #7 + movs r4, #1 + str r4, [sp] + movs r6, #6 + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0x1d + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x31 + movs r2, #1 + movs r3, #0xe + bl sub_080026E0 + movs r6, #2 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x32 + movs r2, #2 + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x33 + movs r2, #3 + movs r3, #0xe + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x34 + movs r2, #4 + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x35 + movs r2, #0x1a + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x32 + movs r2, #0x1b + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x36 + movs r2, #0x1c + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x37 + movs r2, #1 + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #2 + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x3b + movs r2, #3 + movs r3, #0xf + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x39 + movs r2, #4 + movs r3, #0xf + bl sub_080026E0 + ldr r1, _081A5AB0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0x1a + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #0x1b + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x3a + movs r2, #0x1c + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x37 + movs r2, #1 + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #2 + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x3c + movs r2, #3 + movs r3, #0x10 + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x39 + movs r2, #4 + movs r3, #0x10 + bl sub_080026E0 + ldr r1, _081A5AB4 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0x1a + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #0x1b + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x3a + movs r2, #0x1c + movs r3, #0x10 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x37 + movs r2, #1 + movs r3, #0x12 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #2 + movs r3, #0x12 + bl sub_080026E0 + ldr r1, _081A5AB8 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #3 + movs r3, #0x12 + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x39 + movs r2, #4 + movs r3, #0x12 + bl sub_080026E0 + ldr r1, _081A5ABC + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0x1a + movs r3, #0x12 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x38 + movs r2, #0x1b + movs r3, #0x12 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x3a + movs r2, #0x1c + movs r3, #0x12 + bl sub_080026E0 + ldr r1, _081A5AC0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #1 + movs r3, #0x13 + bl sub_080026E0 + ldr r6, _081A5AC4 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + adds r1, r6, #0 + movs r2, #2 + movs r3, #0x13 + bl sub_080026E0 + ldr r1, _081A5AC8 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #3 + movs r3, #0x13 + bl sub_080026E0 + ldr r1, _081A5ACC + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #4 + movs r3, #0x13 + bl sub_080026E0 + ldr r1, _081A5AD0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0x1a + movs r3, #0x13 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + adds r1, r6, #0 + movs r2, #0x1b + movs r3, #0x13 + bl sub_080026E0 + ldr r1, _081A5AD4 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r2, #0x1c + movs r3, #0x13 + bl sub_080026E0 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A5AB0: .4byte 0x0000043B +_081A5AB4: .4byte 0x0000043C +_081A5AB8: .4byte 0x0000083B +_081A5ABC: .4byte 0x00000C3B +_081A5AC0: .4byte 0x00000831 +_081A5AC4: .4byte 0x00000832 +_081A5AC8: .4byte 0x00000833 +_081A5ACC: .4byte 0x00000834 +_081A5AD0: .4byte 0x00000835 +_081A5AD4: .4byte 0x00000836 + thumb_func_end sub_081A57E8 + + thumb_func_start sub_081A5AD8 +sub_081A5AD8: @ 0x081A5AD8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + movs r5, #0 + movs r0, #0x1a + mov r8, r0 + movs r4, #1 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #3 + movs r2, #0 + movs r3, #0xe + bl sub_080026E0 + movs r6, #4 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #4 + movs r2, #1 + movs r3, #0xe + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #5 + movs r2, #2 + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #6 + movs r2, #0x1c + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #7 + movs r2, #0x1d + movs r3, #0xe + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #8 + movs r2, #0 + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #9 + movs r2, #1 + movs r3, #0xf + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xa + movs r2, #2 + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xb + movs r2, #0x1c + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xc + movs r2, #0x1d + movs r3, #0xf + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xd + movs r2, #0 + movs r3, #0x13 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xe + movs r2, #1 + movs r3, #0x13 + bl sub_080026E0 + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0xf + movs r2, #2 + movs r3, #0x13 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x10 + movs r2, #0x1c + movs r3, #0x13 + bl sub_080026E0 + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x1d + movs r3, #0x13 + bl sub_080026E0 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A5AD8 + + thumb_func_start sub_081A5C0C +sub_081A5C0C: @ 0x081A5C0C + push {lr} + ldr r1, _081A5C24 + ldr r0, _081A5C28 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A5C0C + + thumb_func_start sub_081A5C20 +sub_081A5C20: @ 0x081A5C20 + bx r0 + .align 2, 0 +_081A5C24: .4byte gUnknown_85DD958 +_081A5C28: .4byte gUnknown_2037280 + thumb_func_end sub_081A5C20 + + thumb_func_start sub_081A5C2C +sub_081A5C2C: @ 0x081A5C2C + push {r4, r5, r6, r7, lr} + ldr r5, _081A5D0C + ldr r0, [r5] + ldr r4, _081A5D10 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r7, r0, #0x1e + ldr r0, _081A5D14 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, [r5] + ldr r1, _081A5D18 + adds r0, r0, r1 + movs r2, #0 + strb r2, [r0] + ldr r1, [r5] + ldr r3, _081A5D1C + adds r0, r1, r3 + strh r2, [r0] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r5] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r4, [r5] + ldr r0, _081A5D20 + adds r3, r4, r0 + ldr r2, _081A5D24 + lsls r0, r7, #2 + lsls r1, r6, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r3, [r3] + ldr r0, [r0] + ands r3, r0 + cmp r3, #0 + bne _081A5CA2 + lsls r1, r7, #1 + lsls r0, r6, #2 + adds r1, r1, r0 + ldr r2, _081A5D28 + adds r0, r4, r2 + adds r0, r0, r1 + strh r3, [r0] + adds r2, #0x10 + adds r0, r4, r2 + adds r0, r0, r1 + strh r3, [r0] +_081A5CA2: + ldr r1, _081A5D2C + movs r0, #0 + strb r0, [r1] + movs r2, #0 + ldr r6, _081A5D30 + movs r4, #0xe7 + lsls r4, r4, #4 + ldr r0, _081A5D34 + adds r3, r0, #0 +_081A5CB4: + ldr r1, [r5] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r4 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bls _081A5CB4 + movs r2, #0 + ldr r4, _081A5D38 + ldr r1, _081A5D34 + adds r3, r1, #0 +_081A5CD8: + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r1, [r0] + orrs r1, r3 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _081A5CD8 + ldr r0, [r6] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + ldr r1, _081A5D3C + movs r0, #0 + strh r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A5D0C: .4byte gUnknown_3005AF0 +_081A5D10: .4byte 0x00000CA9 +_081A5D14: .4byte 0x000040CE +_081A5D18: .4byte 0x00000CA8 +_081A5D1C: .4byte 0x00000CB2 +_081A5D20: .4byte 0x00000CDC +_081A5D24: .4byte gUnknown_85DD99C +_081A5D28: .4byte 0x00000DE2 +_081A5D2C: .4byte gUnknown_3001284 +_081A5D30: .4byte gUnknown_3005AEC +_081A5D34: .4byte 0x0000FFFF +_081A5D38: .4byte gUnknown_3005FD8 +_081A5D3C: .4byte gUnknown_203886A + thumb_func_end sub_081A5C2C + + thumb_func_start sub_081A5D40 +sub_081A5D40: @ 0x081A5D40 + push {r4, r5, r6, r7, lr} + ldr r7, _081A5D6C + ldr r0, [r7] + ldr r1, _081A5D70 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r6, r0, #0x1e + ldr r0, _081A5D74 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _081A5D78 + ldrh r0, [r0] + cmp r0, #2 + beq _081A5D98 + cmp r0, #2 + bgt _081A5D7C + cmp r0, #1 + beq _081A5D82 + b _081A5DDC + .align 2, 0 +_081A5D6C: .4byte gUnknown_3005AF0 +_081A5D70: .4byte 0x00000CA9 +_081A5D74: .4byte 0x000040CE +_081A5D78: .4byte gUnknown_2037282 +_081A5D7C: + cmp r0, #3 + beq _081A5DC8 + b _081A5DDC +_081A5D82: + ldr r3, _081A5D90 + ldr r0, [r7] + lsls r1, r6, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r2, _081A5D94 + b _081A5DD4 + .align 2, 0 +_081A5D90: .4byte gUnknown_2037290 +_081A5D94: .4byte 0x00000DE2 +_081A5D98: + ldr r4, _081A5DBC + ldr r2, [r7] + ldr r0, _081A5DC0 + adds r2, r2, r0 + ldr r3, _081A5DC4 + lsls r0, r6, #2 + lsls r1, r5, #3 + adds r0, r0, r1 + adds r0, r0, r3 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + strh r0, [r4] + b _081A5DDC + .align 2, 0 +_081A5DBC: .4byte gUnknown_2037290 +_081A5DC0: .4byte 0x00000CDC +_081A5DC4: .4byte gUnknown_85DD99C +_081A5DC8: + ldr r3, _081A5DE4 + ldr r0, [r7] + lsls r1, r6, #1 + lsls r2, r5, #2 + adds r1, r1, r2 + ldr r2, _081A5DE8 +_081A5DD4: + adds r0, r0, r2 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3] +_081A5DDC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A5DE4: .4byte gUnknown_2037290 +_081A5DE8: .4byte 0x00000DF2 + thumb_func_end sub_081A5D40 + + thumb_func_start sub_081A5DEC +sub_081A5DEC: @ 0x081A5DEC + push {r4, r5, r6, lr} + ldr r6, _081A5E18 + ldr r0, [r6] + ldr r1, _081A5E1C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _081A5E20 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _081A5E24 + ldrh r0, [r0] + cmp r0, #2 + beq _081A5E4C + cmp r0, #2 + bgt _081A5E28 + cmp r0, #1 + beq _081A5E2E + b _081A5EC0 + .align 2, 0 +_081A5E18: .4byte gUnknown_3005AF0 +_081A5E1C: .4byte 0x00000CA9 +_081A5E20: .4byte 0x000040CE +_081A5E24: .4byte gUnknown_2037282 +_081A5E28: + cmp r0, #3 + beq _081A5EA0 + b _081A5EC0 +_081A5E2E: + ldr r2, [r6] + lsls r0, r5, #1 + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r1, _081A5E44 + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _081A5E48 + ldrh r0, [r0] + strh r0, [r2] + b _081A5EC0 + .align 2, 0 +_081A5E44: .4byte 0x00000DE2 +_081A5E48: .4byte gUnknown_2037284 +_081A5E4C: + ldr r0, _081A5E70 + ldrh r0, [r0] + cmp r0, #0 + beq _081A5E7C + ldr r2, [r6] + ldr r0, _081A5E74 + adds r2, r2, r0 + ldr r3, _081A5E78 + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + orrs r0, r1 + str r0, [r2] + b _081A5EC0 + .align 2, 0 +_081A5E70: .4byte gUnknown_2037284 +_081A5E74: .4byte 0x00000CDC +_081A5E78: .4byte gUnknown_85DD99C +_081A5E7C: + ldr r2, [r6] + ldr r1, _081A5E98 + adds r2, r2, r1 + ldr r3, _081A5E9C + lsls r1, r5, #2 + lsls r0, r4, #3 + adds r1, r1, r0 + adds r1, r1, r3 + ldr r0, [r2] + ldr r1, [r1] + ands r0, r1 + str r0, [r2] + b _081A5EC0 + .align 2, 0 +_081A5E98: .4byte 0x00000CDC +_081A5E9C: .4byte gUnknown_85DD9AC +_081A5EA0: + ldr r3, _081A5EC8 + ldrb r0, [r3] + cmp r0, #1 + bne _081A5EC0 + ldr r2, [r6] + lsls r0, r5, #1 + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r1, _081A5ECC + adds r2, r2, r1 + adds r2, r2, r0 + ldr r0, _081A5ED0 + ldrh r0, [r0] + movs r1, #0 + strh r0, [r2] + strb r1, [r3] +_081A5EC0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A5EC8: .4byte gUnknown_3001284 +_081A5ECC: .4byte 0x00000DF2 +_081A5ED0: .4byte gUnknown_2037284 + thumb_func_end sub_081A5DEC + + thumb_func_start sub_081A5ED4 +sub_081A5ED4: @ 0x081A5ED4 + push {r4, lr} + ldr r4, _081A5F08 + ldr r0, [r4] + ldr r1, _081A5F0C + ldrh r1, [r1] + ldr r2, _081A5F10 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081A5F14 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A5F08: .4byte gUnknown_3005AF0 +_081A5F0C: .4byte gUnknown_2037282 +_081A5F10: .4byte 0x00000CA8 +_081A5F14: .4byte 0x00000CA9 + thumb_func_end sub_081A5ED4 + + thumb_func_start sub_081A5F18 +sub_081A5F18: @ 0x081A5F18 + bx lr + .align 2, 0 + thumb_func_end sub_081A5F18 + + thumb_func_start sub_081A5F1C +sub_081A5F1C: @ 0x081A5F1C + bx lr + .align 2, 0 + thumb_func_end sub_081A5F1C + + thumb_func_start sub_081A5F20 +sub_081A5F20: @ 0x081A5F20 + push {lr} + bl sub_080676F0 + bl sub_0819A198 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A5F20 + + thumb_func_start sub_081A5F30 +sub_081A5F30: @ 0x081A5F30 + push {lr} + bl sub_0819D8E8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A5F30 + + thumb_func_start sub_081A5F3C +sub_081A5F3C: @ 0x081A5F3C + ldr r1, _081A5F44 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_081A5F44: .4byte gUnknown_3001284 + thumb_func_end sub_081A5F3C + + thumb_func_start sub_081A5F48 +sub_081A5F48: @ 0x081A5F48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + ldr r4, _081A611C + ldr r0, [r4] + ldr r1, _081A6120 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + str r0, [sp, #0x10] + ldr r0, _081A6124 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, [r4] + ldr r3, [sp, #0x10] + lsls r2, r3, #1 + lsrs r0, r0, #0xe + adds r2, r2, r0 + ldr r6, _081A6128 + adds r1, r1, r6 + adds r1, r1, r2 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + ldr r2, _081A612C + ldr r1, _081A6130 + str r1, [r2] + ldr r5, _081A6134 + lsls r0, r0, #0x18 + str r0, [sp, #0x20] + mov r8, r0 +_081A5F92: + ldr r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + mov r2, r8 + lsrs r0, r2, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r7, #0 + ldr r1, [r4] + adds r0, r1, r5 + ldr r6, [sp, #0x10] + lsls r6, r6, #0x18 + str r6, [sp, #0x1c] + ldrh r0, [r0] + cmp r7, r0 + bge _081A5FDC + ldr r2, _081A6138 + adds r0, r1, r2 + ldrh r0, [r0] + ldr r6, _081A611C + cmp r0, r3 + beq _081A5FDC + ldr r1, [r6] + ldr r6, _081A6134 + adds r0, r1, r6 + ldrh r2, [r0] + ldr r0, _081A6138 + adds r1, r1, r0 +_081A5FCE: + adds r1, #2 + adds r7, #1 + cmp r7, r2 + bge _081A5FDC + ldrh r0, [r1] + cmp r0, r3 + bne _081A5FCE +_081A5FDC: + ldr r0, [r4] + ldr r1, _081A6134 + adds r0, r0, r1 + ldr r6, _081A611C + ldrh r0, [r0] + cmp r7, r0 + bne _081A5F92 + ldr r0, _081A613C + strh r3, [r0] + ldr r2, [r6] + adds r1, r2, r1 + ldrh r0, [r1] + cmp r0, #5 + bhi _081A6004 + adds r1, r0, #0 + lsls r1, r1, #1 + ldr r4, _081A6138 + adds r0, r2, r4 + adds r0, r0, r1 + strh r3, [r0] +_081A6004: + movs r7, #0 + mov sl, sp + movs r6, #0 + lsls r6, r6, #1 + str r6, [sp, #0x14] + add r6, sp + str r6, [sp, #0x18] +_081A6012: + ldr r1, [sp, #0x1c] + lsrs r0, r1, #0x18 + ldr r2, [sp, #0x20] + lsrs r1, r2, #0x18 + movs r2, #0 + bl sub_081A6C88 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r4, _081A6140 + ldr r2, [r4] + lsls r1, r0, #4 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, #0xc9 + beq _081A6106 + movs r3, #0 + ldr r6, _081A611C + mov r8, r1 + adds r5, r0, #0 + ldr r1, [r6] +_081A603E: + movs r4, #0xe7 + lsls r4, r4, #4 + adds r0, r1, r4 + ldrh r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r5, r0 + beq _081A6058 + adds r1, #0xc + adds r3, #1 + cmp r3, #5 + ble _081A603E +_081A6058: + cmp r3, #6 + bne _081A6106 + ldr r6, [sp, #0x10] + cmp r6, #0 + bne _081A6068 + ldr r0, _081A6144 + cmp sb, r0 + bhi _081A6106 +_081A6068: + movs r2, #0 + adds r4, r2, r7 + cmp r2, r4 + bge _081A609A + ldr r1, [sp, #0x18] + ldrh r0, [r1] + cmp r0, r5 + beq _081A609A + adds r6, r4, #0 + ldr r3, _081A6140 + mov ip, r3 + mov r5, r8 + ldr r3, [sp, #0x14] + add r3, sp +_081A6084: + adds r3, #2 + adds r2, #1 + cmp r2, r6 + bge _081A609A + mov r1, ip + ldr r0, [r1] + adds r0, r5, r0 + ldrh r1, [r3] + ldrh r0, [r0] + cmp r1, r0 + bne _081A6084 +_081A609A: + cmp r2, r4 + bne _081A6106 + movs r2, #0 + cmp r2, r4 + bge _081A60D6 + ldr r3, _081A6148 + mov ip, r3 + add r0, sp, #8 + ldr r6, [sp, #0x14] + adds r3, r0, r6 + mov r0, r8 + str r0, [sp, #0x24] + adds r5, r4, #0 +_081A60B4: + ldrh r1, [r3] + cmp r1, #0 + beq _081A60CE + ldr r6, _081A6140 + ldr r0, [r6] + ldr r6, [sp, #0x24] + adds r0, r6, r0 + ldrb r0, [r0, #0xa] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + cmp r1, r0 + beq _081A60D6 +_081A60CE: + adds r3, #2 + adds r2, #1 + cmp r2, r5 + blt _081A60B4 +_081A60D6: + cmp r2, r4 + bne _081A6106 + lsls r4, r7, #1 + ldr r0, _081A6140 + ldr r1, [r0] + add r1, r8 + ldrh r0, [r1] + mov r2, sl + strh r0, [r2] + add r2, sp, #8 + adds r2, r2, r4 + ldr r3, _081A6148 + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r2] + ldr r0, _081A614C + adds r4, r4, r0 + mov r3, sb + strh r3, [r4] + movs r4, #2 + add sl, r4 + adds r7, #1 +_081A6106: + cmp r7, #3 + bne _081A6012 + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A611C: .4byte gUnknown_3005AF0 +_081A6120: .4byte 0x00000CA9 +_081A6124: .4byte 0x000040CE +_081A6128: .4byte 0x00000DE2 +_081A612C: .4byte gUnknown_203B954 +_081A6130: .4byte gUnknown_85B4A10 +_081A6134: .4byte 0x00000CB2 +_081A6138: .4byte 0x00000CB4 +_081A613C: .4byte gUnknown_203886A +_081A6140: .4byte gUnknown_203B958 +_081A6144: .4byte 0x00000351 +_081A6148: .4byte gUnknown_85ADBF4 +_081A614C: .4byte gUnknown_3005FD8 + thumb_func_end sub_081A5F48 + + thumb_func_start sub_081A6150 +sub_081A6150: @ 0x081A6150 + push {lr} + ldr r0, _081A6160 + ldrh r0, [r0] + movs r1, #0 + bl sub_08162528 + pop {r0} + bx r0 + .align 2, 0 +_081A6160: .4byte gUnknown_203886A + thumb_func_end sub_081A6150 + + thumb_func_start sub_081A6164 +sub_081A6164: @ 0x081A6164 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _081A6184 + ldr r0, [r0] + ldr r1, _081A6188 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _081A6194 + ldr r1, _081A618C + ldr r0, _081A6190 + b _081A6198 + .align 2, 0 +_081A6184: .4byte gUnknown_3005AF0 +_081A6188: .4byte 0x00000CA9 +_081A618C: .4byte gUnknown_203B958 +_081A6190: .4byte gUnknown_85B8700 +_081A6194: + ldr r1, _081A6238 + ldr r0, _081A623C +_081A6198: + str r0, [r1] + movs r7, #0 + ldr r2, _081A6240 + mov r8, r2 +_081A61A0: + mov r0, r8 + ldr r1, [r0] + adds r0, r7, #3 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r1, r1, r4 + ldr r0, _081A6244 + lsls r6, r7, #1 + adds r6, r6, r0 + ldrh r0, [r6] + movs r2, #0xe7 + lsls r2, r2, #4 + adds r1, r1, r2 + strh r0, [r1] + movs r0, #0x64 + adds r5, r7, #0 + muls r5, r0, r5 + ldr r0, _081A6248 + adds r5, r5, r0 + adds r0, r5, #0 + movs r1, #0x28 + movs r2, #0 + bl sub_0806A1B4 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldr r2, _081A624C + adds r1, r1, r2 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + mov r2, r8 + ldr r1, [r2] + ldr r2, _081A6250 + adds r1, r1, r2 + adds r1, r1, r4 + str r0, [r1] + adds r0, r5, #0 + movs r1, #0x2e + movs r2, #0 + bl sub_0806A1B4 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldr r2, _081A6254 + adds r1, r1, r2 + strb r0, [r1] + ldrh r1, [r6] + ldr r0, _081A6238 + ldr r0, [r0] + lsls r1, r1, #4 + adds r1, r1, r0 + ldrb r2, [r1, #0xa] + lsls r2, r2, #1 + ldr r0, _081A6258 + adds r2, r2, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A774 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #2 + bls _081A61A0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6238: .4byte gUnknown_203B958 +_081A623C: .4byte gUnknown_85BCF70 +_081A6240: .4byte gUnknown_3005AF0 +_081A6244: .4byte gUnknown_3005FD8 +_081A6248: .4byte gUnknown_20243E8 +_081A624C: .4byte 0x00000E78 +_081A6250: .4byte 0x00000E74 +_081A6254: .4byte 0x00000E79 +_081A6258: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081A6164 + + thumb_func_start sub_081A625C +sub_081A625C: @ 0x081A625C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x24 + ldr r0, _081A6288 + ldr r0, [r0] + ldr r1, _081A628C + adds r2, r0, r1 + ldrb r1, [r2] + movs r3, #3 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #2 + bne _081A6298 + ldr r1, _081A6290 + ldr r0, _081A6294 + str r0, [r1] + movs r2, #0x1e + str r2, [sp, #0x14] + b _081A62B0 + .align 2, 0 +_081A6288: .4byte gUnknown_3005AF0 +_081A628C: .4byte 0x00000CA9 +_081A6290: .4byte gUnknown_203B958 +_081A6294: .4byte gUnknown_85BCF70 +_081A6298: + ldr r1, _081A6558 + ldr r0, _081A655C + str r0, [r1] + ldrb r1, [r2] + adds r0, r3, #0 + ands r0, r1 + movs r4, #0x32 + str r4, [sp, #0x14] + cmp r0, #0 + beq _081A62B0 + movs r5, #0x64 + str r5, [sp, #0x14] +_081A62B0: + ldr r0, _081A6560 + ldrh r0, [r0] + cmp r0, #1 + bls _081A62BA + b _081A6404 +_081A62BA: + bl sub_080676F0 + movs r0, #0 + mov r8, r0 + mov r1, sp + adds r1, #0x12 + str r1, [sp, #0x1c] + ldr r2, _081A6558 + mov sb, r2 +_081A62CC: + ldr r4, _081A6564 + ldr r2, [r4] + mov r5, r8 + lsls r5, r5, #1 + mov sl, r5 + mov r3, sl + add r3, r8 + lsls r3, r3, #2 + adds r1, r2, r3 + movs r4, #0xe7 + lsls r4, r4, #4 + adds r0, r1, r4 + ldrh r7, [r0] + ldr r5, _081A6568 + adds r1, r1, r5 + ldrb r6, [r1] + movs r1, #0x64 + mov r0, r8 + muls r0, r1, r0 + ldr r1, _081A656C + adds r0, r0, r1 + mov r4, sb + ldr r1, [r4] + lsls r4, r7, #4 + adds r1, r4, r1 + ldrh r1, [r1] + movs r5, #1 + str r5, [sp] + ldr r5, _081A6570 + adds r2, r2, r5 + adds r2, r2, r3 + ldr r2, [r2] + str r2, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + str r2, [sp, #0xc] + ldr r2, [sp, #0x14] + adds r3, r6, #0 + bl sub_08067730 + movs r1, #0 + mov r2, sb + ldr r0, [r2] + adds r4, r4, r0 + ldrb r4, [r4, #0xb] + mov r5, r8 + adds r5, #1 + str r5, [sp, #0x18] + movs r5, #5 +_081A632E: + adds r0, r4, #0 + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _081A633A + adds r1, #1 +_081A633A: + lsrs r4, r4, #1 + subs r5, #1 + cmp r5, #0 + bge _081A632E + movs r0, #0xff + lsls r0, r0, #1 + bl __divsi3 + add r1, sp, #0x10 + strh r0, [r1] + movs r4, #1 + movs r5, #0 + lsls r7, r7, #4 + movs r0, #0x64 + mov r6, r8 + muls r6, r0, r6 + ldr r3, _081A656C +_081A635C: + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrb r0, [r0, #0xb] + ands r0, r4 + cmp r0, #0 + beq _081A637A + adds r1, r5, #0 + adds r1, #0x1a + adds r0, r6, r3 + add r2, sp, #0x10 + str r3, [sp, #0x20] + bl sub_0806A774 + ldr r3, [sp, #0x20] +_081A637A: + lsls r0, r4, #0x19 + lsrs r4, r0, #0x18 + adds r5, #1 + cmp r5, #5 + ble _081A635C + movs r2, #0x64 + mov r4, r8 + muls r4, r2, r4 + ldr r5, _081A656C + adds r0, r4, r5 + bl sub_0806884C + movs r0, #0 + ldr r1, [sp, #0x1c] + strb r0, [r1] + movs r6, #0 +_081A639A: + mov r2, sb + ldr r0, [r2] + adds r0, r7, r0 + lsls r1, r6, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, r5 + bl sub_081A6DBC + adds r6, #1 + cmp r6, #3 + ble _081A639A + movs r5, #0x64 + mov r4, r8 + muls r4, r5, r4 + ldr r0, _081A656C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _081A6574 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov r2, sl + add r2, r8 + lsls r2, r2, #2 + ldr r5, _081A6564 + ldr r0, [r5] + adds r2, r2, r0 + ldr r0, _081A6578 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A774 + ldr r1, [sp, #0x18] + mov r8, r1 + cmp r1, #2 + bgt _081A6404 + b _081A62CC +_081A6404: + ldr r0, _081A6560 + ldrh r0, [r0] + cmp r0, #0 + beq _081A6412 + cmp r0, #2 + beq _081A6412 + b _081A6546 +_081A6412: + movs r2, #0 + mov r8, r2 + ldr r4, _081A6558 + mov sb, r4 +_081A641A: + ldr r5, _081A6564 + ldr r3, [r5] + mov r0, r8 + adds r0, #3 + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r1, r3, r2 + movs r4, #0xe7 + lsls r4, r4, #4 + adds r0, r1, r4 + ldrh r7, [r0] + ldr r5, _081A6568 + adds r1, r1, r5 + ldrb r6, [r1] + movs r1, #0x64 + mov r0, r8 + muls r0, r1, r0 + ldr r1, _081A657C + adds r0, r0, r1 + mov r4, sb + ldr r1, [r4] + lsls r4, r7, #4 + adds r1, r4, r1 + ldrh r1, [r1] + movs r5, #1 + str r5, [sp] + ldr r5, _081A6570 + adds r3, r3, r5 + adds r3, r3, r2 + ldr r2, [r3] + str r2, [sp, #4] + movs r2, #0 + str r2, [sp, #8] + str r2, [sp, #0xc] + ldr r2, [sp, #0x14] + adds r3, r6, #0 + bl sub_08067730 + movs r1, #0 + mov r2, sb + ldr r0, [r2] + adds r4, r4, r0 + ldrb r4, [r4, #0xb] + mov r5, r8 + lsls r5, r5, #1 + mov sl, r5 + mov r0, r8 + adds r0, #1 + str r0, [sp, #0x18] + movs r5, #5 +_081A6480: + adds r0, r4, #0 + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _081A648C + adds r1, #1 +_081A648C: + lsrs r4, r4, #1 + subs r5, #1 + cmp r5, #0 + bge _081A6480 + add r4, sp, #0x10 + movs r0, #0xff + lsls r0, r0, #1 + bl __divsi3 + strh r0, [r4] + movs r4, #1 + movs r5, #0 + lsls r7, r7, #4 + movs r0, #0x64 + mov r6, r8 + muls r6, r0, r6 + ldr r3, _081A657C +_081A64AE: + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + ldrb r0, [r0, #0xb] + ands r0, r4 + cmp r0, #0 + beq _081A64CC + adds r1, r5, #0 + adds r1, #0x1a + adds r0, r6, r3 + add r2, sp, #0x10 + str r3, [sp, #0x20] + bl sub_0806A774 + ldr r3, [sp, #0x20] +_081A64CC: + lsls r0, r4, #0x19 + lsrs r4, r0, #0x18 + adds r5, #1 + cmp r5, #5 + ble _081A64AE + movs r2, #0x64 + mov r4, r8 + muls r4, r2, r4 + ldr r5, _081A657C + adds r0, r4, r5 + bl sub_0806884C + movs r6, #0 +_081A64E6: + mov r1, sb + ldr r0, [r1] + adds r0, r7, r0 + lsls r1, r6, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, r5 + bl sub_081A6DBC + adds r6, #1 + cmp r6, #3 + ble _081A64E6 + movs r2, #0x64 + mov r4, r8 + muls r4, r2, r4 + ldr r0, _081A657C + adds r4, r4, r0 + mov r5, sb + ldr r0, [r5] + adds r0, r7, r0 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _081A6574 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov r2, sl + add r2, r8 + lsls r2, r2, #2 + ldr r1, _081A6564 + ldr r0, [r1] + adds r2, r2, r0 + ldr r5, _081A6580 + adds r2, r2, r5 + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A774 + ldr r0, [sp, #0x18] + mov r8, r0 + cmp r0, #2 + bgt _081A6546 + b _081A641A +_081A6546: + add sp, #0x24 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6558: .4byte gUnknown_203B958 +_081A655C: .4byte gUnknown_85B8700 +_081A6560: .4byte gUnknown_2037282 +_081A6564: .4byte gUnknown_3005AF0 +_081A6568: .4byte 0x00000E78 +_081A656C: .4byte gUnknown_2024190 +_081A6570: .4byte 0x00000E74 +_081A6574: .4byte gUnknown_85ADBF4 +_081A6578: .4byte 0x00000E79 +_081A657C: .4byte gUnknown_20243E8 +_081A6580: .4byte 0x00000E9D + thumb_func_end sub_081A625C + + thumb_func_start sub_081A6584 +sub_081A6584: @ 0x081A6584 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x4c + ldr r1, _081A662C + ldr r0, _081A6630 + str r0, [r1] + mov r0, sp + adds r0, #0xc + str r0, [sp, #0x38] + mov r1, sp + adds r1, #0x18 + str r1, [sp, #0x3c] + ldr r2, _081A6634 + mov sb, r2 + movs r2, #0 + adds r3, r1, #0 + adds r1, r0, #0 + mov r0, sp + movs r4, #5 + mov r8, r4 +_081A65B2: + strh r2, [r0] + strh r2, [r1] + strh r2, [r3] + adds r3, #2 + adds r1, #2 + adds r0, #2 + movs r5, #1 + rsbs r5, r5, #0 + add r8, r5 + mov r4, r8 + cmp r4, #0 + bge _081A65B2 + mov r5, sb + ldr r0, [r5] + ldr r7, _081A6638 + adds r0, r0, r7 + ldrb r4, [r0] + lsls r4, r4, #0x1e + lsrs r4, r4, #0x1e + ldr r6, _081A663C + adds r0, r6, #0 + bl sub_0809CF6C + lsls r0, r0, #0x18 + ldr r1, [r5] + lsls r4, r4, #1 + lsrs r0, r0, #0x16 + adds r4, r4, r0 + ldr r5, _081A6640 + adds r1, r1, r5 + adds r1, r1, r4 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + adds r0, r6, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r2, #0 + cmp r0, #1 + bne _081A6610 + movs r2, #1 +_081A6610: + ldr r1, _081A6644 + ldr r0, _081A6648 + str r0, [r1] + mov r1, sb + ldr r0, [r1] + adds r0, r0, r7 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081A664C + movs r4, #1 + str r4, [sp, #0x28] + b _081A6650 + .align 2, 0 +_081A662C: .4byte gUnknown_203B954 +_081A6630: .4byte gUnknown_85B4A10 +_081A6634: .4byte gUnknown_3005AF0 +_081A6638: .4byte 0x00000CA9 +_081A663C: .4byte 0x000040CE +_081A6640: .4byte 0x00000DE2 +_081A6644: .4byte gUnknown_203B958 +_081A6648: .4byte gUnknown_85B8700 +_081A664C: + movs r5, #0 + str r5, [sp, #0x28] +_081A6650: + adds r0, r2, #0 + ldr r1, [sp, #0x28] + bl sub_081A6D08 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x2c] + movs r0, #0 + mov sl, r0 + mov r8, r0 + ldr r1, [sp, #0x3c] + str r1, [sp, #0x40] + mov r2, sp + str r2, [sp, #0x44] + lsls r4, r0, #1 + str r4, [sp, #0x30] + ldr r5, [sp, #0x38] + adds r5, r5, r4 + str r5, [sp, #0x34] +_081A6676: + ldr r0, [sp, #0x2c] + cmp r8, r0 + bge _081A6684 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + movs r2, #1 + b _081A668A +_081A6684: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + movs r2, #0 +_081A668A: + bl sub_081A6C88 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _081A6724 + ldr r1, [r0] + lsls r2, r7, #4 + adds r4, r2, r1 + ldrh r1, [r4] + mov sb, r2 + cmp r1, #0xc9 + beq _081A677A + movs r3, #0 + mov r2, r8 + adds r6, r3, r2 + cmp r3, r6 + bge _081A66E8 + ldr r5, [sp, #0x34] + ldrh r0, [r5] + cmp r0, r7 + beq _081A66E8 + mov ip, r4 + adds r2, r1, #0 + lsls r4, r3, #1 + ldr r1, [sp, #0x30] + add r1, sp + str r6, [sp, #0x48] +_081A66C0: + ldrh r0, [r1] + cmp r0, r2 + bne _081A66D2 + mov r0, sl + cmp r0, #0 + bne _081A66E8 + mov r5, ip + ldrh r5, [r5] + mov sl, r5 +_081A66D2: + adds r4, #2 + adds r1, #2 + adds r3, #1 + ldr r0, [sp, #0x48] + cmp r3, r0 + bge _081A66E8 + ldr r5, [sp, #0x38] + adds r0, r5, r4 + ldrh r0, [r0] + cmp r0, r7 + bne _081A66C0 +_081A66E8: + cmp r3, r6 + bne _081A677A + movs r3, #0 + cmp r3, r6 + bge _081A6734 + ldr r0, _081A6728 + mov ip, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x3c] + adds r5, r1, r2 +_081A66FC: + ldrh r4, [r5] + cmp r4, #0 + beq _081A672C + ldr r1, _081A6724 + ldr r0, [r1] + mov r2, sb + adds r1, r2, r0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + cmp r4, r0 + bne _081A672C + ldrh r0, [r1] + cmp r0, sl + bne _081A6734 + movs r4, #0 + mov sl, r4 + b _081A6734 + .align 2, 0 +_081A6724: .4byte gUnknown_203B958 +_081A6728: .4byte gUnknown_85ADBF4 +_081A672C: + adds r5, #2 + adds r3, #1 + cmp r3, r6 + blt _081A66FC +_081A6734: + cmp r3, r6 + bne _081A677A + ldr r0, _081A6794 + ldr r1, [r0] + mov r5, r8 + lsls r3, r5, #1 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r1, r1, r0 + movs r0, #0xe7 + lsls r0, r0, #4 + adds r1, r1, r0 + strh r7, [r1] + ldr r2, _081A6798 + ldr r1, [r2] + add r1, sb + ldrh r0, [r1] + ldr r4, [sp, #0x44] + strh r0, [r4] + ldr r2, _081A679C + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r5, [sp, #0x40] + strh r0, [r5] + ldr r0, [sp, #0x38] + adds r3, r0, r3 + strh r7, [r3] + adds r5, #2 + str r5, [sp, #0x40] + adds r4, #2 + str r4, [sp, #0x44] + movs r1, #1 + add r8, r1 +_081A677A: + mov r2, r8 + cmp r2, #6 + beq _081A6782 + b _081A6676 +_081A6782: + add sp, #0x4c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6794: .4byte gUnknown_3005AF0 +_081A6798: .4byte gUnknown_203B958 +_081A679C: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081A6584 + + thumb_func_start sub_081A67A0 +sub_081A67A0: @ 0x081A67A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + ldr r1, _081A6830 + ldr r0, _081A6834 + str r0, [r1] + movs r4, #0 + add r5, sp, #0x14 + ldr r7, _081A6838 + movs r1, #0 +_081A67B6: + mov r2, sp + adds r0, r2, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x11 + bls _081A67B6 + movs r4, #0 + ldr r0, _081A683C + mov r8, r0 + ldr r0, _081A6830 + ldr r6, [r0] + ldr r1, _081A6840 + mov ip, r1 +_081A67D4: + lsls r0, r4, #1 + add r0, r8 + ldrh r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r6 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + mov r2, ip + adds r3, r0, r2 + ldrb r2, [r3, #6] + mov r0, sp + adds r1, r0, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrb r1, [r3, #7] + cmp r2, r1 + beq _081A6808 + ldrb r0, [r3, #7] + mov r2, sp + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081A6808: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A67D4 + movs r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + movs r4, #1 + adds r3, r5, #0 +_081A681C: + ldrb r0, [r3] + add r0, sp + mov r2, sp + adds r1, r2, r4 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + bhs _081A6844 + strb r4, [r5] + b _081A684A + .align 2, 0 +_081A6830: .4byte gUnknown_203B958 +_081A6834: .4byte gUnknown_85B8700 +_081A6838: .4byte gUnknown_2037290 +_081A683C: .4byte gUnknown_3005FD8 +_081A6840: .4byte gUnknown_82F0D54 +_081A6844: + cmp r2, r0 + bne _081A684A + strb r4, [r3, #1] +_081A684A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x11 + bls _081A681C + ldrb r1, [r5] + mov r4, sp + adds r0, r4, r1 + ldrb r2, [r0] + cmp r2, #0 + beq _081A6872 + ldrb r3, [r5, #1] + adds r0, r4, r3 + ldrb r0, [r0] + cmp r2, r0 + bhi _081A686E + cmp r1, r3 + bne _081A6872 +_081A686E: + strh r1, [r7] + b _081A6876 +_081A6872: + movs r0, #0x12 + strh r0, [r7] +_081A6876: + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A67A0 + + thumb_func_start sub_081A6884 +sub_081A6884: @ 0x081A6884 + push {r4, r5, r6, r7, lr} + sub sp, #8 + movs r7, #0 + ldr r1, _081A6928 + ldr r0, _081A692C + str r0, [r1] + movs r4, #0 + movs r1, #0 +_081A6894: + mov r2, sp + adds r0, r2, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081A6894 + movs r4, #0 +_081A68A6: + ldr r1, _081A6930 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r6, [r0] + movs r5, #0 +_081A68B0: + ldr r0, _081A6928 + ldr r1, [r0] + lsls r0, r6, #4 + adds r0, r0, r1 + lsls r1, r5, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_081A693C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _081A68B0 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A68A6 + ldr r1, _081A6934 + movs r0, #0 + strh r0, [r1] + movs r4, #1 + adds r5, r1, #0 + ldr r3, _081A6938 + adds r2, r5, #0 +_081A68F4: + mov r1, sp + adds r0, r1, r4 + subs r1, r4, #1 + adds r1, r1, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + blo _081A690C + strh r4, [r2] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_081A690C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081A68F4 + cmp r7, #2 + bls _081A691E + movs r0, #8 + strh r0, [r5] +_081A691E: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6928: .4byte gUnknown_203B958 +_081A692C: .4byte gUnknown_85B8700 +_081A6930: .4byte gUnknown_3005FD8 +_081A6934: .4byte gUnknown_2037290 +_081A6938: .4byte gUnknown_85DD7F8 + thumb_func_end sub_081A6884 + + thumb_func_start sub_081A693C +sub_081A693C: @ 0x081A693C + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r2, #0 + ldr r6, _081A6968 +_081A6946: + movs r3, #0 + lsls r0, r2, #2 + adds r0, r0, r6 + ldr r1, [r0] + ldrh r0, [r1] + adds r4, r2, #1 + cmp r0, #0 + beq _081A697C + lsls r0, r4, #0x18 + lsrs r2, r0, #0x18 +_081A695A: + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r5 + bne _081A696C + adds r0, r2, #0 + b _081A6986 + .align 2, 0 +_081A6968: .4byte gUnknown_85DD93C +_081A696C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _081A695A +_081A697C: + lsls r0, r4, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #6 + bls _081A6946 + movs r0, #0 +_081A6986: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081A693C + + thumb_func_start sub_081A698C +sub_081A698C: @ 0x081A698C + push {lr} + movs r2, #0 + ldr r1, _081A69AC + ldr r3, _081A69B0 + adds r0, r3, #0 + ldrh r1, [r1, #0x12] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _081A69A4 + movs r2, #1 +_081A69A4: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_081A69AC: .4byte gUnknown_2036FB8 +_081A69B0: .4byte 0xFFFFFEA5 + thumb_func_end sub_081A698C + + thumb_func_start sub_081A69B4 +sub_081A69B4: @ 0x081A69B4 + push {r4, lr} + ldr r0, _081A69D0 + ldr r0, [r0] + ldr r1, _081A69D4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _081A69E0 + ldr r1, _081A69D8 + ldr r0, _081A69DC + b _081A69E4 + .align 2, 0 +_081A69D0: .4byte gUnknown_3005AF0 +_081A69D4: .4byte 0x00000CA9 +_081A69D8: .4byte gUnknown_203B958 +_081A69DC: .4byte gUnknown_85B8700 +_081A69E0: + ldr r1, _081A6A2C + ldr r0, _081A6A30 +_081A69E4: + str r0, [r1] + movs r4, #0 +_081A69E8: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081A6A34 + adds r0, r0, r1 + ldr r1, _081A6A38 + ldr r2, [r1] + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r2, r2, r1 + movs r1, #0xe7 + lsls r1, r1, #4 + adds r2, r2, r1 + ldrh r2, [r2] + ldr r1, _081A6A2C + ldr r1, [r1] + lsls r2, r2, #4 + adds r2, r2, r1 + ldrb r2, [r2, #0xa] + lsls r2, r2, #1 + ldr r1, _081A6A3C + adds r2, r2, r1 + movs r1, #0xc + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A69E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A6A2C: .4byte gUnknown_203B958 +_081A6A30: .4byte gUnknown_85BCF70 +_081A6A34: .4byte gUnknown_2024190 +_081A6A38: .4byte gUnknown_3005AF0 +_081A6A3C: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081A69B4 + + thumb_func_start sub_081A6A40 +sub_081A6A40: @ 0x081A6A40 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + rsbs r2, r1, #0 + orrs r2, r1 + lsrs r2, r2, #0x1f + lsrs r1, r0, #0x18 + cmp r1, #8 + bls _081A6A56 + movs r1, #7 +_081A6A56: + ldr r0, _081A6A64 + lsls r1, r1, #1 + adds r1, r2, r1 + adds r1, r1, r0 + ldrb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_081A6A64: .4byte gUnknown_85DD9BC + thumb_func_end sub_081A6A40 + + thumb_func_start sub_081A6A68 +sub_081A6A68: @ 0x081A6A68 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + ldr r4, _081A6C68 + ldr r0, [r4] + ldr r1, _081A6C6C + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + str r0, [sp, #0x2c] + ldr r0, _081A6C70 + bl sub_0809CF6C + lsls r0, r0, #0x18 + ldr r1, [r4] + ldr r3, [sp, #0x2c] + lsls r2, r3, #1 + lsrs r0, r0, #0x16 + adds r2, r2, r0 + ldr r7, _081A6C74 + adds r1, r1, r7 + adds r1, r1, r2 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + str r1, [sp, #0x30] + movs r2, #0x80 + lsls r2, r2, #0x12 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_081A6A40 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x24] + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #0x20] + movs r3, #0 + mov sb, r3 + ldr r1, [r4] + ldrb r4, [r1, #0xa] + ldrb r0, [r1, #0xb] + lsls r0, r0, #8 + orrs r4, r0 + ldrb r0, [r1, #0xc] + lsls r0, r0, #0x10 + orrs r4, r0 + ldrb r0, [r1, #0xd] + lsls r0, r0, #0x18 + orrs r4, r0 + str r4, [sp, #0x28] +_081A6AE4: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + movs r2, #0 + bl sub_081A6C88 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r7, _081A6C78 + ldr r1, [r7] + lsls r0, r5, #4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xc9 + bne _081A6B02 + b _081A6C50 +_081A6B02: + ldr r0, [sp, #0x20] + cmp r0, #0x32 + bne _081A6B10 + ldr r0, _081A6C7C + cmp r5, r0 + bls _081A6B10 + b _081A6C50 +_081A6B10: + movs r2, #0 + ldr r1, _081A6C68 + ldr r0, [r1] + movs r3, #0xe7 + lsls r3, r3, #4 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r5, r0 + beq _081A6B3A + adds r4, r1, #0 + movs r1, #0 +_081A6B26: + adds r1, #0xc + adds r2, #1 + cmp r2, #5 + bgt _081A6B3A + ldr r0, [r4] + adds r0, r0, r1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r5, r0 + bne _081A6B26 +_081A6B3A: + cmp r2, #6 + beq _081A6B40 + b _081A6C50 +_081A6B40: + movs r4, #0 + cmp r4, sb + bge _081A6B74 + add r2, sp, #0xc + ldr r7, _081A6C78 + ldr r0, [r7] + lsls r1, r5, #4 + adds r0, r1, r0 + ldrh r2, [r2] + adds r7, r1, #0 + ldrh r0, [r0] + cmp r2, r0 + beq _081A6B74 + ldr r6, _081A6C78 + adds r3, r7, #0 + add r2, sp, #0xc +_081A6B60: + adds r2, #2 + adds r4, #1 + cmp r4, sb + bge _081A6B74 + ldr r0, [r6] + adds r0, r3, r0 + ldrh r1, [r2] + ldrh r0, [r0] + cmp r1, r0 + bne _081A6B60 +_081A6B74: + cmp r4, sb + bne _081A6C50 + movs r4, #0 + cmp r4, sb + bge _081A6BA4 + ldr r7, _081A6C80 + ldr r6, _081A6C78 + add r2, sp, #0x14 + lsls r3, r5, #4 +_081A6B86: + ldrh r1, [r2] + cmp r1, #0 + beq _081A6B9C + ldr r0, [r6] + adds r0, r3, r0 + ldrb r0, [r0, #0xa] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r1, r0 + beq _081A6BA4 +_081A6B9C: + adds r2, #2 + adds r4, #1 + cmp r4, sb + blt _081A6B86 +_081A6BA4: + cmp r4, sb + bne _081A6C50 + mov r0, sb + lsls r2, r0, #1 + mov r1, sp + adds r1, r1, r2 + adds r1, #0xc + ldr r3, _081A6C78 + ldr r4, [r3] + lsls r5, r5, #4 + mov r8, r5 + add r4, r8 + ldrh r0, [r4] + strh r0, [r1] + add r1, sp, #0x14 + adds r1, r1, r2 + ldr r2, _081A6C80 + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + movs r0, #0x64 + mov r5, sb + muls r5, r0, r5 + ldr r6, _081A6C84 + adds r0, r5, r6 + ldrh r1, [r4] + ldr r7, [sp, #0x20] + lsls r2, r7, #0x18 + ldrb r3, [r4, #0xc] + ldr r7, [sp, #0x24] + str r7, [sp] + ldrb r4, [r4, #0xb] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + lsrs r2, r2, #0x18 + bl sub_08068174 + add r0, sp, #0x1c + movs r7, #0 + strb r7, [r0] + movs r4, #0 + mov r7, r8 + mov sl, r0 + movs r0, #1 + add r0, sb + mov r8, r0 +_081A6C06: + ldr r1, _081A6C78 + ldr r0, [r1] + adds r0, r7, r0 + lsls r1, r4, #1 + adds r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, r6 + bl sub_081A6DBC + adds r4, #1 + cmp r4, #3 + ble _081A6C06 + movs r0, #0x64 + mov r4, sb + muls r4, r0, r4 + ldr r0, _081A6C84 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x20 + mov r2, sl + bl sub_0806A774 + ldr r2, _081A6C78 + ldr r0, [r2] + adds r0, r7, r0 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + ldr r0, _081A6C80 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + mov sb, r8 +_081A6C50: + mov r3, sb + cmp r3, #3 + beq _081A6C58 + b _081A6AE4 +_081A6C58: + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6C68: .4byte gUnknown_3005AF0 +_081A6C6C: .4byte 0x00000CA9 +_081A6C70: .4byte 0x000040CE +_081A6C74: .4byte 0x00000DE2 +_081A6C78: .4byte gUnknown_203B958 +_081A6C7C: .4byte 0x00000351 +_081A6C80: .4byte gUnknown_85ADBF4 +_081A6C84: .4byte gUnknown_20243E8 + thumb_func_end sub_081A6A68 + + thumb_func_start sub_081A6C88 +sub_081A6C88: @ 0x081A6C88 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r4, #8 + rsbs r1, r0, #0 + orrs r1, r0 + asrs r1, r1, #0x1f + ands r1, r4 + adds r4, r1, #0 + cmp r3, #6 + bhi _081A6CC4 + cmp r2, #0 + beq _081A6CB8 + ldr r2, _081A6CB4 + adds r1, r1, r3 + adds r1, #1 + b _081A6CD0 + .align 2, 0 +_081A6CB4: .4byte gUnknown_85DD9CC +_081A6CB8: + ldr r2, _081A6CC0 + adds r1, r1, r3 + b _081A6CD0 + .align 2, 0 +_081A6CC0: .4byte gUnknown_85DD9CC +_081A6CC4: + adds r1, r3, #0 + cmp r1, #7 + beq _081A6CCC + movs r1, #7 +_081A6CCC: + ldr r2, _081A6D04 + adds r1, r4, r1 +_081A6CD0: + lsls r1, r1, #2 + adds r0, r2, #2 + adds r0, r1, r0 + adds r1, r1, r2 + ldrh r0, [r0] + ldrh r4, [r1] + subs r0, r0, r4 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r4, r0, r4 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081A6D04: .4byte gUnknown_85DD9CC + thumb_func_end sub_081A6C88 + + thumb_func_start sub_081A6D08 +sub_081A6D08: @ 0x081A6D08 + push {lr} + lsls r0, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081A6D44 + ldr r2, [r2] + lsrs r1, r1, #0x17 + lsrs r0, r0, #0x16 + adds r1, r1, r0 + ldr r0, _081A6D48 + adds r2, r2, r0 + adds r2, r2, r1 + ldrb r1, [r2] + movs r0, #0 + cmp r1, #0xe + bls _081A6D40 + movs r0, #1 + cmp r1, #0x15 + bls _081A6D40 + movs r0, #2 + cmp r1, #0x1c + bls _081A6D40 + movs r0, #3 + cmp r1, #0x23 + bls _081A6D40 + movs r0, #5 + cmp r1, #0x2a + bhi _081A6D40 + movs r0, #4 +_081A6D40: + pop {r1} + bx r1 + .align 2, 0 +_081A6D44: .4byte gUnknown_3005AF0 +_081A6D48: .4byte 0x00000DF2 + thumb_func_end sub_081A6D08 + + thumb_func_start sub_081A6D4C +sub_081A6D4C: @ 0x081A6D4C + push {r4, r5, lr} + ldr r5, _081A6D94 + ldr r0, [r5] + ldr r1, _081A6D98 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + cmp r4, #2 + beq _081A6D90 + ldr r0, _081A6D9C + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, [r5] + lsls r2, r4, #1 + lsrs r0, r0, #0xe + adds r2, r2, r0 + ldr r0, _081A6DA0 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081A6DA4 + ldrh r1, [r0] + ldr r0, _081A6DA8 + cmp r1, r0 + beq _081A6DB0 + cmp r2, #1 + bgt _081A6DAC +_081A6D90: + movs r0, #0 + b _081A6DB6 + .align 2, 0 +_081A6D94: .4byte gUnknown_3005AF0 +_081A6D98: .4byte 0x00000CA9 +_081A6D9C: .4byte 0x000040CE +_081A6DA0: .4byte 0x00000DE2 +_081A6DA4: .4byte gUnknown_203886A +_081A6DA8: .4byte 0x000003FE +_081A6DAC: + cmp r2, #3 + ble _081A6DB4 +_081A6DB0: + movs r0, #7 + b _081A6DB6 +_081A6DB4: + movs r0, #1 +_081A6DB6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081A6D4C + + thumb_func_start sub_081A6DBC +sub_081A6DBC: @ 0x081A6DBC + push {lr} + lsls r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsrs r1, r1, #0x10 + cmp r1, #0xd8 + bne _081A6DCC + movs r1, #0xda +_081A6DCC: + bl sub_08068D34 + pop {r0} + bx r0 + thumb_func_end sub_081A6DBC + + thumb_func_start sub_081A6DD4 +sub_081A6DD4: @ 0x081A6DD4 + push {lr} + ldr r1, _081A6DEC + ldr r0, _081A6DF0 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A6DD4 + + thumb_func_start sub_081A6DE8 +sub_081A6DE8: @ 0x081A6DE8 + bx r0 + .align 2, 0 +_081A6DEC: .4byte gUnknown_85DDE30 +_081A6DF0: .4byte gUnknown_2037280 + thumb_func_end sub_081A6DE8 + + thumb_func_start sub_081A6DF4 +sub_081A6DF4: @ 0x081A6DF4 + push {lr} + bl sub_081A776C + ldr r1, _081A6E04 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081A6E04: .4byte gUnknown_3001288 + thumb_func_end sub_081A6DF4 + + thumb_func_start sub_081A6E08 +sub_081A6E08: @ 0x081A6E08 + push {r4, r5, r6, r7, lr} + movs r4, #1 + movs r6, #0 + movs r5, #0 + movs r7, #0 + ldr r0, _081A6E24 + ldrb r0, [r0] + cmp r0, #8 + bhi _081A6EB2 + lsls r0, r0, #2 + ldr r1, _081A6E28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A6E24: .4byte gUnknown_3001288 +_081A6E28: .4byte _081A6E2C +_081A6E2C: @ jump table + .4byte _081A6E50 @ case 0 + .4byte _081A6E5A @ case 1 + .4byte _081A6E5E @ case 2 + .4byte _081A6E68 @ case 3 + .4byte _081A6E7C @ case 4 + .4byte _081A6E56 @ case 5 + .4byte _081A6E80 @ case 6 + .4byte _081A6E88 @ case 7 + .4byte _081A6E8E @ case 8 +_081A6E50: + movs r0, #0 + bl sub_081A8024 +_081A6E56: + movs r4, #0 + b _081A6E9A +_081A6E5A: + movs r5, #0x1c + b _081A6E9A +_081A6E5E: + bl sub_081A78D8 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + b _081A6E9A +_081A6E68: + movs r5, #0x30 + ldr r0, _081A6E78 + ldrb r0, [r0] + movs r7, #0xe1 + cmp r0, #1 + bne _081A6E98 + movs r7, #0xe2 + b _081A6E98 + .align 2, 0 +_081A6E78: .4byte gUnknown_3001289 +_081A6E7C: + movs r5, #0x30 + b _081A6E9A +_081A6E80: + movs r0, #1 + bl sub_081A8024 + b _081A6E94 +_081A6E88: + bl sub_081A80F4 + b _081A6E56 +_081A6E8E: + movs r0, #5 + bl sub_081A4C20 +_081A6E94: + movs r7, #0x1c + movs r4, #0 +_081A6E98: + movs r6, #1 +_081A6E9A: + cmp r4, #1 + bne _081A6EA6 + ldr r0, _081A6EB8 + adds r1, r5, #0 + bl sub_0809CF88 +_081A6EA6: + cmp r6, #1 + bne _081A6EB2 + ldr r0, _081A6EBC + adds r1, r7, #0 + bl sub_0809CF88 +_081A6EB2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A6EB8: .4byte 0x00004010 +_081A6EBC: .4byte 0x00004011 + thumb_func_end sub_081A6E08 + + thumb_func_start sub_081A6EC0 +sub_081A6EC0: @ 0x081A6EC0 + push {lr} + ldr r1, _081A6EE4 + ldr r0, [r1] + ldr r2, _081A6EE8 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r2, r0, #0x1e + ldr r0, _081A6EEC + ldrh r0, [r0] + adds r3, r1, #0 + cmp r0, #4 + bhi _081A6FBA + lsls r0, r0, #2 + ldr r1, _081A6EF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A6EE4: .4byte gUnknown_3005AF0 +_081A6EE8: .4byte 0x00000CA9 +_081A6EEC: .4byte gUnknown_2037282 +_081A6EF0: .4byte _081A6EF4 +_081A6EF4: @ jump table + .4byte _081A6F08 @ case 0 + .4byte _081A6F20 @ case 1 + .4byte _081A6F44 @ case 2 + .4byte _081A6F68 @ case 3 + .4byte _081A6F8C @ case 4 +_081A6F08: + ldr r0, _081A6F18 + ldr r1, [r3] + ldr r3, _081A6F1C + adds r1, r1, r3 + ldrh r1, [r1] + strh r1, [r0] + b _081A6FBA + .align 2, 0 +_081A6F18: .4byte gUnknown_2037290 +_081A6F1C: .4byte 0x00000E02 +_081A6F20: + ldr r2, _081A6F38 + ldr r1, [r3] + ldr r3, _081A6F3C + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r3, _081A6F40 + adds r1, r1, r3 + adds r1, r1, r0 + ldrh r0, [r1] + b _081A6FB8 + .align 2, 0 +_081A6F38: .4byte gUnknown_2037290 +_081A6F3C: .4byte 0x00000CA9 +_081A6F40: .4byte 0x00000E04 +_081A6F44: + ldr r2, _081A6F5C + ldr r1, [r3] + ldr r3, _081A6F60 + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r3, _081A6F64 + adds r1, r1, r3 + adds r1, r1, r0 + ldrh r0, [r1] + b _081A6FB8 + .align 2, 0 +_081A6F5C: .4byte gUnknown_2037290 +_081A6F60: .4byte 0x00000CA9 +_081A6F64: .4byte 0x00000E08 +_081A6F68: + ldr r2, _081A6F80 + ldr r1, [r3] + ldr r3, _081A6F84 + adds r0, r1, r3 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r3, _081A6F88 + adds r1, r1, r3 + adds r1, r1, r0 + ldrh r0, [r1] + b _081A6FB8 + .align 2, 0 +_081A6F80: .4byte gUnknown_2037290 +_081A6F84: .4byte 0x00000CA9 +_081A6F88: .4byte 0x00000E0C +_081A6F8C: + cmp r2, #0 + beq _081A6FA8 + ldr r2, _081A6FA0 + ldr r0, [r3] + ldr r1, _081A6FA4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #4 + b _081A6FB6 + .align 2, 0 +_081A6FA0: .4byte gUnknown_2037290 +_081A6FA4: .4byte 0x00000CDC +_081A6FA8: + ldr r2, _081A6FC0 + ldr r0, [r3] + ldr r3, _081A6FC4 + adds r0, r0, r3 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #3 +_081A6FB6: + ands r0, r1 +_081A6FB8: + strh r0, [r2] +_081A6FBA: + pop {r0} + bx r0 + .align 2, 0 +_081A6FC0: .4byte gUnknown_2037290 +_081A6FC4: .4byte 0x00000CDC + thumb_func_end sub_081A6EC0 + + thumb_func_start sub_081A6FC8 +sub_081A6FC8: @ 0x081A6FC8 + push {r4, r5, lr} + ldr r1, _081A6FF0 + ldr r0, [r1] + ldr r2, _081A6FF4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r3, r0, #0x1e + ldr r0, _081A6FF8 + ldrh r0, [r0] + adds r2, r1, #0 + cmp r0, #4 + bls _081A6FE4 + b _081A712A +_081A6FE4: + lsls r0, r0, #2 + ldr r1, _081A6FFC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A6FF0: .4byte gUnknown_3005AF0 +_081A6FF4: .4byte 0x00000CA9 +_081A6FF8: .4byte gUnknown_2037282 +_081A6FFC: .4byte _081A7000 +_081A7000: @ jump table + .4byte _081A7014 @ case 0 + .4byte _081A702C @ case 1 + .4byte _081A7058 @ case 2 + .4byte _081A7094 @ case 3 + .4byte _081A70C4 @ case 4 +_081A7014: + ldr r0, [r2] + ldr r1, _081A7024 + ldrh r1, [r1] + ldr r5, _081A7028 + adds r0, r0, r5 + strh r1, [r0] + b _081A712A + .align 2, 0 +_081A7024: .4byte gUnknown_2037284 +_081A7028: .4byte 0x00000E02 +_081A702C: + ldr r0, _081A7048 + ldrh r3, [r0] + ldr r0, _081A704C + cmp r3, r0 + bls _081A7038 + b _081A712A +_081A7038: + ldr r0, [r2] + ldr r2, _081A7050 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + ldr r5, _081A7054 + b _081A70AC + .align 2, 0 +_081A7048: .4byte gUnknown_2037284 +_081A704C: .4byte 0x0000270F +_081A7050: .4byte 0x00000CA9 +_081A7054: .4byte 0x00000E04 +_081A7058: + ldr r0, _081A7084 + ldrh r4, [r0] + adds r3, r4, #0 + ldr r0, _081A7088 + cmp r3, r0 + bhi _081A712A + ldr r1, [r2] + ldr r2, _081A708C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r2, r0, #0x1e + lsrs r0, r2, #0x1d + ldr r5, _081A7090 + adds r1, r1, r5 + adds r0, r1, r0 + ldrh r0, [r0] + cmp r0, r3 + bhs _081A712A + lsrs r0, r2, #0x1d + adds r0, r1, r0 + strh r4, [r0] + b _081A712A + .align 2, 0 +_081A7084: .4byte gUnknown_2037284 +_081A7088: .4byte 0x0000270F +_081A708C: .4byte 0x00000CA9 +_081A7090: .4byte 0x00000E08 +_081A7094: + ldr r0, _081A70B4 + ldrh r3, [r0] + ldr r0, _081A70B8 + cmp r3, r0 + bhi _081A712A + ldr r0, [r2] + ldr r2, _081A70BC + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + ldr r5, _081A70C0 +_081A70AC: + adds r0, r0, r5 + adds r0, r0, r1 + strh r3, [r0] + b _081A712A + .align 2, 0 +_081A70B4: .4byte gUnknown_2037284 +_081A70B8: .4byte 0x0000270F +_081A70BC: .4byte 0x00000CA9 +_081A70C0: .4byte 0x00000E0C +_081A70C4: + cmp r3, #0 + beq _081A70FC + ldr r0, _081A70E0 + ldrh r0, [r0] + cmp r0, #0 + beq _081A70E8 + ldr r0, [r2] + ldr r1, _081A70E4 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #4 + orrs r1, r2 + b _081A7128 + .align 2, 0 +_081A70E0: .4byte gUnknown_2037284 +_081A70E4: .4byte 0x00000CDC +_081A70E8: + ldr r0, [r2] + ldr r2, _081A70F4 + adds r0, r0, r2 + ldr r1, [r0] + ldr r2, _081A70F8 + b _081A7126 + .align 2, 0 +_081A70F4: .4byte 0x00000CDC +_081A70F8: .4byte 0xFFFFF7FF +_081A70FC: + ldr r0, _081A7114 + ldrh r0, [r0] + cmp r0, #0 + beq _081A711C + ldr r0, [r2] + ldr r5, _081A7118 + adds r0, r0, r5 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #3 + orrs r1, r2 + b _081A7128 + .align 2, 0 +_081A7114: .4byte gUnknown_2037284 +_081A7118: .4byte 0x00000CDC +_081A711C: + ldr r0, [r2] + ldr r1, _081A7130 + adds r0, r0, r1 + ldr r1, [r0] + ldr r2, _081A7134 +_081A7126: + ands r1, r2 +_081A7128: + str r1, [r0] +_081A712A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A7130: .4byte 0x00000CDC +_081A7134: .4byte 0xFFFFFBFF + thumb_func_end sub_081A6FC8 + + thumb_func_start sub_081A7138 +sub_081A7138: @ 0x081A7138 + push {lr} + ldr r0, _081A7150 + ldr r0, [r0] + ldr r1, _081A7154 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0xe + bls _081A715C + ldr r1, _081A7158 + movs r0, #1 + b _081A7160 + .align 2, 0 +_081A7150: .4byte gUnknown_3005AF0 +_081A7154: .4byte 0x00000CB2 +_081A7158: .4byte gUnknown_2037290 +_081A715C: + ldr r1, _081A7168 + movs r0, #0 +_081A7160: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081A7168: .4byte gUnknown_2037290 + thumb_func_end sub_081A7138 + + thumb_func_start sub_081A716C +sub_081A716C: @ 0x081A716C + ldr r0, _081A7178 + ldr r1, _081A717C + ldrb r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_081A7178: .4byte gUnknown_2037290 +_081A717C: .4byte gUnknown_3001288 + thumb_func_end sub_081A716C + + thumb_func_start sub_081A7180 +sub_081A7180: @ 0x081A7180 + ldr r1, _081A7188 + movs r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_081A7188: .4byte gUnknown_300128A + thumb_func_end sub_081A7180 + + thumb_func_start sub_081A718C +sub_081A718C: @ 0x081A718C + ldr r1, _081A7194 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_081A7194: .4byte gUnknown_300128A + thumb_func_end sub_081A718C + + thumb_func_start sub_081A7198 +sub_081A7198: @ 0x081A7198 + push {r4, lr} + ldr r4, _081A71D0 + ldr r0, [r4] + ldr r1, _081A71D4 + ldrh r1, [r1] + ldr r2, _081A71D8 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081A71DC + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_08087D28 + movs r0, #1 + bl sub_08153274 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A71D0: .4byte gUnknown_3005AF0 +_081A71D4: .4byte gUnknown_2037282 +_081A71D8: .4byte 0x00000CA8 +_081A71DC: .4byte 0x00000CA9 + thumb_func_end sub_081A7198 + + thumb_func_start sub_081A71E0 +sub_081A71E0: @ 0x081A71E0 + bx lr + .align 2, 0 + thumb_func_end sub_081A71E0 + + thumb_func_start sub_081A71E4 +sub_081A71E4: @ 0x081A71E4 + bx lr + .align 2, 0 + thumb_func_end sub_081A71E4 + + thumb_func_start sub_081A71E8 +sub_081A71E8: @ 0x081A71E8 + push {lr} + ldr r0, _081A7200 + ldr r0, [r0] + cmp r0, #0x20 + beq _081A720E + cmp r0, #0x20 + bhi _081A7204 + cmp r0, #7 + beq _081A723C + cmp r0, #0x10 + beq _081A7218 + b _081A7242 + .align 2, 0 +_081A7200: .4byte gUnknown_300128C +_081A7204: + cmp r0, #0x40 + beq _081A7230 + cmp r0, #0x80 + beq _081A7224 + b _081A7242 +_081A720E: + ldr r1, _081A7214 + movs r0, #0 + b _081A7240 + .align 2, 0 +_081A7214: .4byte gUnknown_2037290 +_081A7218: + ldr r1, _081A7220 + movs r0, #1 + b _081A7240 + .align 2, 0 +_081A7220: .4byte gUnknown_2037290 +_081A7224: + ldr r1, _081A722C + movs r0, #2 + b _081A7240 + .align 2, 0 +_081A722C: .4byte gUnknown_2037290 +_081A7230: + ldr r1, _081A7238 + movs r0, #3 + b _081A7240 + .align 2, 0 +_081A7238: .4byte gUnknown_2037290 +_081A723C: + ldr r1, _081A7248 + movs r0, #4 +_081A7240: + strh r0, [r1] +_081A7242: + pop {r0} + bx r0 + .align 2, 0 +_081A7248: .4byte gUnknown_2037290 + thumb_func_end sub_081A71E8 + + thumb_func_start sub_081A724C +sub_081A724C: @ 0x081A724C + ldr r0, _081A7258 + ldr r1, _081A725C + ldrb r1, [r1] + strh r1, [r0] + bx lr + .align 2, 0 +_081A7258: .4byte gUnknown_2037290 +_081A725C: .4byte gUnknown_3001289 + thumb_func_end sub_081A724C + + thumb_func_start sub_081A7260 +sub_081A7260: @ 0x081A7260 + push {r4, lr} + bl sub_0806F050 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #1 + ands r4, r0 + adds r4, #1 + adds r0, r4, #0 + bl sub_081A7CB8 + ldr r0, _081A7284 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A7284: .4byte gUnknown_2037290 + thumb_func_end sub_081A7260 + + thumb_func_start sub_081A7288 +sub_081A7288: @ 0x081A7288 + push {lr} + ldr r0, _081A72A8 + ldr r0, [r0] + ldr r1, _081A72AC + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #4 + bhi _081A72B8 + ldr r1, _081A72B0 + ldr r0, _081A72B4 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #2] + b _081A72E0 + .align 2, 0 +_081A72A8: .4byte gUnknown_3005AF0 +_081A72AC: .4byte 0x00000CB2 +_081A72B0: .4byte gUnknown_85DDB54 +_081A72B4: .4byte gUnknown_3001290 +_081A72B8: + cmp r0, #0xa + bhi _081A72D4 + ldr r1, _081A72CC + ldr r0, _081A72D0 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #3] + b _081A72E0 + .align 2, 0 +_081A72CC: .4byte gUnknown_85DDB54 +_081A72D0: .4byte gUnknown_3001290 +_081A72D4: + ldr r1, _081A72F4 + ldr r0, _081A72F8 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] +_081A72E0: + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081A72FC + adds r0, r0, r1 + bl sub_081637CC + pop {r0} + bx r0 + .align 2, 0 +_081A72F4: .4byte gUnknown_85DDB54 +_081A72F8: .4byte gUnknown_3001290 +_081A72FC: .4byte gUnknown_85DDC1C + thumb_func_end sub_081A7288 + + thumb_func_start sub_081A7300 +sub_081A7300: @ 0x081A7300 + push {lr} + ldr r0, _081A7310 + movs r1, #2 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081A7310: .4byte sub_081A7C64 + thumb_func_end sub_081A7300 + + thumb_func_start sub_081A7314 +sub_081A7314: @ 0x081A7314 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + movs r4, #0 + movs r1, #0 +_081A731E: + mov r2, sp + adds r0, r2, r4 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081A731E + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + lsls r2, r0, #0x10 + mov r1, sp + strb r0, [r1] + mov r0, sp + lsrs r2, r2, #0x18 + strb r2, [r0, #1] + adds r0, r5, #0 + movs r1, #0x39 + mov r2, sp + bl sub_0806A774 + adds r0, r5, #0 + movs r1, #0x15 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r4, #0 +_081A735A: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r5, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_0806B424 + mov r1, sp + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x11 + adds r0, r5, #0 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081A735A + mov r0, sp + movs r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r0, #2] + strb r1, [r0, #3] + adds r0, r5, #0 + movs r1, #0x37 + mov r2, sp + bl sub_0806A774 + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081A7314 + + thumb_func_start sub_081A73A8 +sub_081A73A8: @ 0x081A73A8 + push {r4, lr} + adds r4, r1, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + cmp r4, #0x20 + beq _081A73D2 + cmp r4, #0x20 + bhi _081A73C8 + cmp r4, #7 + beq _081A73E4 + cmp r4, #0x10 + beq _081A73D8 + b _081A73F4 +_081A73C8: + cmp r4, #0x40 + beq _081A73DE + cmp r4, #0x80 + beq _081A73EE + b _081A73F4 +_081A73D2: + cmp r0, #0x28 + bne _081A73F4 + b _081A73F2 +_081A73D8: + cmp r0, #0x29 + bne _081A73F4 + b _081A73F2 +_081A73DE: + cmp r0, #7 + bne _081A73F4 + b _081A73F2 +_081A73E4: + cmp r0, #0xf + beq _081A73F2 + cmp r0, #0x48 + bne _081A73F4 + b _081A73F2 +_081A73EE: + cmp r0, #0x11 + bne _081A73F4 +_081A73F2: + movs r1, #1 +_081A73F4: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081A73A8 + + thumb_func_start sub_081A73FC +sub_081A73FC: @ 0x081A73FC + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r3, #0 + cmp r1, #0x20 + beq _081A7444 + cmp r1, #0x20 + bhi _081A7416 + cmp r1, #7 + beq _081A749C + cmp r1, #0x10 + beq _081A7484 + b _081A749C +_081A7416: + cmp r1, #0x40 + beq _081A7460 + cmp r1, #0x80 + bne _081A749C + ldr r1, _081A7440 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #6] + cmp r2, #8 + beq _081A749A + cmp r2, #3 + beq _081A749A + ldrb r0, [r0, #7] + cmp r0, #8 + beq _081A749A + cmp r0, #3 + bne _081A749C + b _081A749A + .align 2, 0 +_081A7440: .4byte gUnknown_82F0D54 +_081A7444: + ldr r0, _081A745C + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #0xf + beq _081A749A + ldrb r0, [r1, #7] + cmp r0, #0xf + bne _081A749C + b _081A749A + .align 2, 0 +_081A745C: .4byte gUnknown_82F0D54 +_081A7460: + ldr r1, _081A7480 + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #6] + cmp r2, #4 + beq _081A749A + cmp r2, #0xd + beq _081A749A + ldrb r0, [r0, #7] + cmp r0, #4 + beq _081A749A + cmp r0, #0xd + bne _081A749C + b _081A749A + .align 2, 0 +_081A7480: .4byte gUnknown_82F0D54 +_081A7484: + ldr r0, _081A74A4 + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #0xa + beq _081A749A + ldrb r0, [r1, #7] + cmp r0, #0xa + bne _081A749C +_081A749A: + movs r3, #1 +_081A749C: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_081A74A4: .4byte gUnknown_82F0D54 + thumb_func_end sub_081A73FC + + thumb_func_start sub_081A74A8 +sub_081A74A8: @ 0x081A74A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + movs r6, #0 +_081A74B6: + mov r1, sp + adds r0, r1, r6 + strb r6, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _081A74B6 + movs r4, #0 + mov r8, r4 +_081A74CA: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sp + adds r2, r1, r6 + ldrb r3, [r2] + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #9 + bls _081A74CA + ldr r0, _081A7550 + ldr r0, [r0] + ldr r4, _081A7554 + adds r0, r0, r4 + ldrh r0, [r0] + movs r1, #1 + mov sl, r1 + cmp r0, #4 + bls _081A7528 + movs r4, #3 + mov sl, r4 + cmp r0, #9 + bhi _081A7528 + movs r0, #2 + mov sl, r0 +_081A7528: + movs r1, #0 + str r1, [sp, #4] + ldr r7, _081A7558 +_081A752E: + movs r4, #0 + mov sb, r4 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0x22 + bhi _081A755C + movs r0, #0x80 + b _081A757C + .align 2, 0 +_081A7550: .4byte gUnknown_3005AF0 +_081A7554: .4byte 0x00000CB2 +_081A7558: .4byte gUnknown_300128C +_081A755C: + cmp r0, #0x3b + bhi _081A7564 + movs r0, #0x20 + b _081A757C +_081A7564: + cmp r0, #0x4f + bhi _081A756C + movs r0, #0x40 + b _081A757C +_081A756C: + cmp r1, #0x59 + bhi _081A757A + movs r0, #7 + b _081A757C +_081A7574: + movs r0, #1 + mov sb, r0 + b _081A75EE +_081A757A: + movs r0, #0x10 +_081A757C: + str r0, [r7] + ldr r0, _081A7610 + ldr r0, [r0] + ldr r1, [sp, #4] + cmp r1, r0 + beq _081A75F4 + str r0, [sp, #4] + movs r4, #0 + mov r8, r4 + movs r6, #0 +_081A7590: + mov r1, sp + adds r0, r1, r6 + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081A7614 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A75E0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081A75E0 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r1, [r7] + adds r0, r4, #0 + bl sub_081A73FC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A7574 +_081A75E0: + cmp r8, sl + beq _081A75EE + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _081A7590 +_081A75EE: + mov r4, r8 + cmp r4, #0 + beq _081A764C +_081A75F4: + mov r0, sb + cmp r0, #0 + beq _081A752E + ldr r0, _081A7610 + ldr r0, [r0] + cmp r0, #0x20 + beq _081A7618 + cmp r0, #0x20 + bhi _081A7650 + cmp r0, #7 + beq _081A7650 + cmp r0, #0x10 + beq _081A7624 + b _081A7650 + .align 2, 0 +_081A7610: .4byte gUnknown_300128C +_081A7614: .4byte gUnknown_2024190 +_081A7618: + ldr r1, _081A7620 + movs r0, #1 + b _081A7654 + .align 2, 0 +_081A7620: .4byte gUnknown_3001289 +_081A7624: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r2, #1 + ands r1, r2 + cmp r1, #0 + beq _081A7640 + ldr r0, _081A763C + strb r2, [r0] + b _081A7656 + .align 2, 0 +_081A763C: .4byte gUnknown_3001289 +_081A7640: + ldr r0, _081A7648 + strb r1, [r0] + b _081A7656 + .align 2, 0 +_081A7648: .4byte gUnknown_3001289 +_081A764C: + movs r0, #0 + b _081A76D6 +_081A7650: + ldr r1, _081A76E8 + movs r0, #0 +_081A7654: + strb r0, [r1] +_081A7656: + movs r1, #0 + mov r8, r1 + movs r6, #0 +_081A765C: + mov r4, sp + adds r0, r4, r6 + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081A76EC + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A76C6 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081A76C6 + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r7, _081A76F0 + ldr r1, [r7] + adds r0, r5, #0 + bl sub_081A73A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A76C6 + ldr r1, [r7] + adds r0, r4, #0 + bl sub_081A73FC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A76C6 + adds r0, r5, #0 + movs r1, #0x37 + adds r2, r7, #0 + bl sub_0806A774 +_081A76C6: + cmp r8, sl + beq _081A76D4 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _081A765C +_081A76D4: + movs r0, #1 +_081A76D6: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081A76E8: .4byte gUnknown_3001289 +_081A76EC: .4byte gUnknown_2024190 +_081A76F0: .4byte gUnknown_300128C + thumb_func_end sub_081A74A8 + + thumb_func_start sub_081A76F4 +sub_081A76F4: @ 0x081A76F4 + push {r4, r5, r6, r7, lr} + ldr r0, _081A7714 + ldr r0, [r0] + ldr r1, _081A7718 + adds r0, r0, r1 + ldrh r0, [r0] + movs r7, #1 + cmp r0, #4 + bls _081A770E + movs r7, #3 + cmp r0, #9 + bhi _081A770E + movs r7, #2 +_081A770E: + movs r6, #0 + movs r5, #0 + b _081A7722 + .align 2, 0 +_081A7714: .4byte gUnknown_3005AF0 +_081A7718: .4byte 0x00000CB2 +_081A771C: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081A7722: + cmp r5, #2 + bhi _081A7758 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081A7760 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A7754 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081A7754 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_081A7754: + cmp r6, r7 + bne _081A771C +_081A7758: + cmp r6, #0 + beq _081A7764 + movs r0, #1 + b _081A7766 + .align 2, 0 +_081A7760: .4byte gUnknown_2024190 +_081A7764: + movs r0, #0 +_081A7766: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081A76F4 + + thumb_func_start sub_081A776C +sub_081A776C: @ 0x081A776C + push {r4, r5, r6, lr} + sub sp, #8 + ldr r1, _081A778C + ldr r0, [r1] + movs r4, #0xe1 + lsls r4, r4, #4 + adds r0, r0, r4 + ldrb r2, [r0] + movs r3, #0x78 + ands r3, r2 + adds r5, r1, #0 + cmp r3, #0x40 + bne _081A7790 + lsls r0, r2, #0x19 + lsrs r0, r0, #0x1c + b _081A78C8 + .align 2, 0 +_081A778C: .4byte gUnknown_3005AF0 +_081A7790: + ldr r0, _081A77B0 + lsls r1, r2, #0x1d + ldrh r0, [r0] + lsrs r1, r1, #0x1d + cmp r0, r1 + bne _081A77B4 + cmp r3, #0x18 + bne _081A77A4 + bl sub_081A74A8 +_081A77A4: + ldr r0, [r5] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1c + b _081A78C8 + .align 2, 0 +_081A77B0: .4byte gUnknown_2037286 +_081A77B4: + movs r2, #0 + ldr r3, _081A78D0 + movs r1, #0 +_081A77BA: + mov r4, sp + adds r0, r4, r2 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _081A77BA + movs r4, #8 + ldr r0, [r5] + movs r6, #0xe1 + lsls r6, r6, #4 + adds r0, r0, r6 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1c + adds r0, r0, r3 + ldrb r1, [r0] + movs r2, #0 + adds r5, r3, #0 + movs r3, #1 +_081A77E4: + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, r1 + bne _081A77F8 + mov r6, sp + adds r0, r6, r2 + strb r3, [r0] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A77F8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _081A77E4 + mov r0, sp + ldrb r0, [r0, #7] + cmp r0, #1 + beq _081A7820 + bl sub_081A82D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A7820 + mov r1, sp + movs r0, #1 + strb r0, [r1, #7] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A7820: + mov r0, sp + ldrb r0, [r0, #3] + cmp r0, #1 + beq _081A783E + bl sub_081A76F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A783E + mov r1, sp + movs r0, #1 + strb r0, [r1, #3] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A783E: + ldr r0, _081A78D4 + ldr r0, [r0] + movs r1, #0xe1 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081A787A + mov r0, sp + ldrb r0, [r0, #1] + cmp r0, #1 + beq _081A7866 + mov r1, sp + movs r0, #1 + strb r0, [r1, #1] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A7866: + mov r0, sp + ldrb r0, [r0, #4] + cmp r0, #1 + beq _081A787A + mov r1, sp + movs r0, #1 + strb r0, [r1, #4] + subs r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A787A: + adds r0, r4, #0 + bl sub_08000BDC + adds r5, r0, #0 + movs r3, #0 + movs r2, #0 +_081A7886: + mov r6, sp + adds r0, r6, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _081A789C + adds r1, r3, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r1, r5, r1 + strb r2, [r1] +_081A789C: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _081A7886 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + adds r0, r5, r0 + ldrb r4, [r0] + adds r0, r5, #0 + bl sub_08000BF0 + cmp r4, #3 + bne _081A78C6 + bl sub_081A74A8 +_081A78C6: + adds r0, r4, #0 +_081A78C8: + add sp, #8 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081A78D0: .4byte gUnknown_85DDEA4 +_081A78D4: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A776C + + thumb_func_start sub_081A78D8 +sub_081A78D8: @ 0x081A78D8 + push {r4, lr} + ldr r4, _081A78FC + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + bl __umodsi3 + strb r0, [r4] + ldr r1, _081A7900 + ldrb r0, [r4] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081A78FC: .4byte gUnknown_3001290 +_081A7900: .4byte gUnknown_85DDB54 + thumb_func_end sub_081A78D8 + + thumb_func_start sub_081A7904 +sub_081A7904: @ 0x081A7904 + ldr r0, _081A790C + ldrb r0, [r0] + bx lr + .align 2, 0 +_081A790C: .4byte gUnknown_300128A + thumb_func_end sub_081A7904 + + thumb_func_start sub_081A7910 +sub_081A7910: @ 0x081A7910 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_081A7A80 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _081A798C + ldr r0, [r7] + ldr r4, _081A7990 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + ldr r1, _081A7994 + lsrs r0, r0, #0x1c + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, _081A7998 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + bl sub_081A868C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r7] + adds r0, r0, r4 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081A799C + bl sub_08165AC0 + adds r7, r0, #0 + cmp r7, #0x3b + ble _081A7988 + lsls r0, r6, #2 + ldr r1, [sp, #4] + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + subs r7, r7, r0 + cmp r7, #0x3b + bgt _081A79B2 +_081A7988: + movs r7, #0x3c + b _081A79B2 + .align 2, 0 +_081A798C: .4byte gUnknown_3005AF0 +_081A7990: .4byte 0x00000CA9 +_081A7994: .4byte gUnknown_85DDB4C +_081A7998: .4byte gUnknown_20243E8 +_081A799C: + lsls r0, r6, #2 + ldr r2, [sp, #4] + adds r0, r0, r2 + ldr r1, [r0] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #2] + movs r0, #0x32 + subs r7, r0, r1 +_081A79B2: + mov r0, r8 + cmp r0, #1 + bne _081A79CA + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + bl sub_081A8630 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A79CA + movs r0, #0 + b _081A7A62 +_081A79CA: + ldr r0, _081A7A74 + ldr r1, _081A7A78 + mov r8, r1 + lsls r6, r6, #2 + mov sb, r6 + ldr r2, [sp, #4] + add r2, sb + mov sl, r2 + ldr r1, [r2] + lsls r6, r5, #1 + adds r4, r6, r5 + lsls r4, r4, #2 + adds r1, r4, r1 + ldrh r2, [r1] + lsls r1, r2, #3 + subs r1, r1, r2 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #0x13] + movs r1, #0xca + lsls r1, r1, #1 + muls r2, r1, r2 + lsls r1, r7, #2 + ldr r3, _081A7A7C + adds r1, r1, r3 + adds r2, r2, r1 + movs r1, #0x19 + bl sub_0806A774 + mov r1, sl + ldr r0, [r1] + adds r4, r4, r0 + ldrh r1, [r4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #0x17] + mov r7, sb + cmp r0, #0 + beq _081A7A28 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 +_081A7A28: + str r0, [sp] + ldr r0, _081A7A74 + movs r1, #0x2e + mov r2, sp + bl sub_0806A774 + movs r4, #0 + adds r0, r6, r5 + lsls r6, r0, #2 +_081A7A3A: + ldr r2, [sp, #4] + adds r0, r7, r2 + ldr r0, [r0] + adds r0, r6, r0 + lsls r1, r4, #1 + adds r0, #4 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081A7A74 + bl sub_08068D34 + adds r4, #1 + cmp r4, #3 + ble _081A7A3A + ldr r0, _081A7A74 + bl sub_0806884C + movs r0, #1 +_081A7A62: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081A7A74: .4byte gUnknown_20243E8 +_081A7A78: .4byte gUnknown_82F0D54 +_081A7A7C: .4byte gUnknown_82F00B4 + thumb_func_end sub_081A7910 + + thumb_func_start sub_081A7A80 +sub_081A7A80: @ 0x081A7A80 + push {lr} + ldr r0, _081A7AA8 + ldr r1, [r0] + ldr r2, _081A7AAC + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r2, _081A7AB0 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r1, [r1] + adds r2, r1, #0 + movs r0, #0x8c + lsls r0, r0, #1 + cmp r1, r0 + bhi _081A7AB4 + movs r1, #0 + b _081A7ACC + .align 2, 0 +_081A7AA8: .4byte gUnknown_3005AF0 +_081A7AAC: .4byte 0x00000CA9 +_081A7AB0: .4byte 0x00000E04 +_081A7AB4: + movs r0, #0x8c + lsls r0, r0, #2 + cmp r1, r0 + bhi _081A7AC0 + movs r1, #1 + b _081A7ACC +_081A7AC0: + movs r0, #0xd2 + lsls r0, r0, #2 + movs r1, #3 + cmp r2, r0 + bhi _081A7ACC + movs r1, #2 +_081A7ACC: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A7A80 + + thumb_func_start sub_081A7AD4 +sub_081A7AD4: @ 0x081A7AD4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081A7B04 + ldr r2, _081A7B08 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081A7AE6: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A7AE6 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A7B04: .4byte gUnknown_85DDEC0 +_081A7B08: .4byte gUnknown_3005B60 + thumb_func_end sub_081A7AD4 + + thumb_func_start sub_081A7B0C +sub_081A7B0C: @ 0x081A7B0C + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081A7B24 + subs r0, r1, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081A7B48 +_081A7B24: + ldrh r0, [r4, #0xa] + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0x16] + adds r0, r0, r1 + strh r0, [r4, #0x16] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _081A7B3C + movs r0, #0x10 + strh r0, [r4, #0x16] +_081A7B3C: + movs r0, #1 + rsbs r0, r0, #0 + ldrb r1, [r4, #0x16] + ldr r2, _081A7B64 + bl sub_080A22E8 +_081A7B48: + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0xf + ble _081A7B5A + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #0xc] + strh r0, [r4, #0x14] +_081A7B5A: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081A7B64: .4byte 0x00002D6B + thumb_func_end sub_081A7B0C + + thumb_func_start sub_081A7B68 +sub_081A7B68: @ 0x081A7B68 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x14] + movs r2, #0x14 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081A7B80 + subs r0, r1, #1 + strh r0, [r4, #0x14] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081A7BA2 +_081A7B80: + ldrh r0, [r4, #0xc] + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x12] + subs r0, r0, r1 + strh r0, [r4, #0x16] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081A7B96 + movs r0, #0 + strh r0, [r4, #0x16] +_081A7B96: + movs r0, #1 + rsbs r0, r0, #0 + ldrb r1, [r4, #0x16] + ldr r2, _081A7BC8 + bl sub_080A22E8 +_081A7BA2: + movs r0, #0x16 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _081A7BD6 + ldrh r0, [r4, #0xe] + subs r0, #1 + strh r0, [r4, #0xe] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081A7BD0 + ldr r0, _081A7BCC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + b _081A7BD6 + .align 2, 0 +_081A7BC8: .4byte 0x00002D6B +_081A7BCC: .4byte sub_081A7AD4 +_081A7BD0: + ldrh r0, [r4, #0xa] + strh r0, [r4, #0x14] + strh r1, [r4, #8] +_081A7BD6: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A7B68 + + thumb_func_start sub_081A7BE0 +sub_081A7BE0: @ 0x081A7BE0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r3, [sp, #0x18] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + ldr r0, _081A7C3C + movs r1, #3 + str r3, [sp] + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081A7C40 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, 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, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A7C3C: .4byte sub_081A7AD4 +_081A7C40: .4byte gUnknown_3005B60 + thumb_func_end sub_081A7BE0 + + thumb_func_start sub_081A7C44 +sub_081A7C44: @ 0x081A7C44 + push {lr} + ldr r0, _081A7C58 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081A7C5C + movs r0, #0 + b _081A7C5E + .align 2, 0 +_081A7C58: .4byte sub_081A7AD4 +_081A7C5C: + movs r0, #1 +_081A7C5E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A7C44 + + thumb_func_start sub_081A7C64 +sub_081A7C64: @ 0x081A7C64 + push {r4, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + ldr r1, _081A7C98 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #8] + movs r3, #8 + ldrsh r0, [r1, r3] + cmp r0, #0 + bne _081A7C9C + adds r0, r2, #1 + strh r0, [r1, #8] + movs r0, #2 + str r0, [sp] + movs r0, #0 + movs r1, #0 + movs r2, #3 + movs r3, #2 + bl sub_081A7BE0 + b _081A7CB0 + .align 2, 0 +_081A7C98: .4byte gUnknown_3005B60 +_081A7C9C: + bl sub_081A7C44 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A7CB0 + bl sub_080988C4 + adds r0, r4, #0 + bl sub_080A8964 +_081A7CB0: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081A7C64 + + thumb_func_start sub_081A7CB8 +sub_081A7CB8: @ 0x081A7CB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + cmp r0, #0 + bne _081A7CD0 + b _081A7DFA +_081A7CD0: + movs r0, #0 + mov r8, r0 +_081A7CD4: + mov r0, sp + add r0, r8 + mov r1, r8 + strb r1, [r0] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #2 + bls _081A7CD4 + movs r5, #0 +_081A7CEC: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r2, sp + add r2, r8 + ldrb r3, [r2] + mov r0, sp + adds r1, r0, r4 + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _081A7CEC + movs r1, #0 + mov r8, r1 +_081A7D30: + movs r0, #0 + mov sl, r0 + mov r4, sp + add r4, r8 + ldrb r1, [r4] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081A7D78 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r7, #0 + movs r1, #0x3a + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + str r4, [sp, #8] + cmp r5, r6 + blo _081A7DC4 + adds r0, r7, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A7D7C + movs r0, #1 + mov sl, r0 + b _081A7DC8 + .align 2, 0 +_081A7D78: .4byte gUnknown_2024190 +_081A7D7C: + adds r0, r7, #0 + movs r1, #0x15 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r4, #0 + b _081A7D94 +_081A7D8E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081A7D94: + cmp r4, #3 + bhi _081A7DC8 + adds r1, r4, #0 + adds r1, #0xd + adds r0, r7, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sb + adds r2, r4, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r1, r4, #0 + adds r1, #0x11 + adds r0, r7, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r6 + bhs _081A7D8E +_081A7DC4: + movs r1, #1 + mov sl, r1 +_081A7DC8: + mov r0, sl + cmp r0, #1 + bne _081A7DEC + ldr r0, [sp, #8] + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081A7E0C + adds r0, r0, r1 + bl sub_081A7314 + ldr r0, [sp, #4] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + cmp r0, #0 + beq _081A7DFA +_081A7DEC: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #2 + bls _081A7D30 +_081A7DFA: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A7E0C: .4byte gUnknown_2024190 + thumb_func_end sub_081A7CB8 + + thumb_func_start sub_081A7E10 +sub_081A7E10: @ 0x081A7E10 + push {r4, lr} + ldr r4, _081A7E24 + bl sub_081A7E28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A7E24: .4byte gUnknown_2037290 + thumb_func_end sub_081A7E10 + + thumb_func_start sub_081A7E28 +sub_081A7E28: @ 0x081A7E28 + push {lr} + movs r2, #0 + ldr r0, _081A7E54 + ldrh r1, [r0, #0x12] + ldr r3, _081A7E58 + adds r0, r1, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bls _081A7E4A + movs r0, #0xb3 + lsls r0, r0, #1 + cmp r1, r0 + beq _081A7E4A + adds r0, #1 + cmp r1, r0 + bne _081A7E4C +_081A7E4A: + movs r2, #1 +_081A7E4C: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_081A7E54: .4byte gUnknown_2036FB8 +_081A7E58: .4byte 0xFFFFFEA1 + thumb_func_end sub_081A7E28 + + thumb_func_start sub_081A7E5C +sub_081A7E5C: @ 0x081A7E5C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r4, _081A7EB0 + movs r0, #0 + strh r0, [r4] + movs r0, #1 + bl sub_081A8310 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A7EB8 + movs r0, #1 + strh r0, [r4] + bl sub_0806F050 + ldr r5, _081A7EB4 + ldr r4, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + movs r3, #0xe1 + lsls r3, r3, #4 + adds r4, r4, r3 + movs r1, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldr r2, [r5] + adds r2, r2, r3 + ldrb r1, [r2] + movs r0, #0x79 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x40 + b _081A7FC8 + .align 2, 0 +_081A7EB0: .4byte gUnknown_2037290 +_081A7EB4: .4byte gUnknown_3005AF0 +_081A7EB8: + bl sub_0806F050 + ldr r7, _081A7F2C + ldr r4, [r7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #3 + bl __umodsi3 + movs r3, #0xe1 + lsls r3, r3, #4 + adds r4, r4, r3 + movs r1, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldr r0, [r7] + adds r0, r0, r3 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + movs r6, #8 + cmp r0, #0 + beq _081A7EF2 + movs r6, #6 +_081A7EF2: + adds r0, r6, #0 + bl sub_08000BDC + adds r5, r0, #0 + movs r2, #0 + movs r3, #0 + cmp r2, r6 + bhs _081A7F3E + adds r4, r7, #0 +_081A7F04: + ldr r0, [r4] + movs r1, #0xe1 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081A7F30 + cmp r2, #1 + beq _081A7F34 + cmp r2, #4 + beq _081A7F34 + adds r1, r3, #0 + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r1, r5, r1 + strb r2, [r1] + b _081A7F34 + .align 2, 0 +_081A7F2C: .4byte gUnknown_3005AF0 +_081A7F30: + adds r0, r5, r2 + strb r2, [r0] +_081A7F34: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, r6 + blo _081A7F04 +_081A7F3E: + bl sub_0806F050 + ldr r7, _081A7FD8 + ldr r4, [r7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + adds r0, r5, r0 + ldrb r0, [r0] + movs r6, #0xe1 + lsls r6, r6, #4 + adds r4, r4, r6 + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r4] + movs r0, #0x79 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + adds r0, r5, #0 + bl sub_08000BF0 + ldr r0, [r7] + adds r0, r0, r6 + ldrb r1, [r0] + movs r0, #0x78 + ands r0, r1 + cmp r0, #0x18 + bne _081A7F9C + bl sub_081A76F4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A7F9C + ldr r2, [r7] + adds r2, r2, r6 + ldrb r1, [r2] + mov r0, r8 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] +_081A7F9C: + ldr r5, _081A7FD8 + ldr r0, [r5] + movs r4, #0xe1 + lsls r4, r4, #4 + adds r0, r0, r4 + ldrb r1, [r0] + movs r0, #0x78 + ands r0, r1 + cmp r0, #0x38 + bne _081A7FCC + bl sub_081A82D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A7FCC + ldr r2, [r5] + adds r2, r2, r4 + ldrb r1, [r2] + movs r0, #0x79 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 +_081A7FC8: + orrs r0, r1 + strb r0, [r2] +_081A7FCC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A7FD8: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A7E5C + + thumb_func_start sub_081A7FDC +sub_081A7FDC: @ 0x081A7FDC + ldr r1, _081A7FF4 + ldr r0, _081A7FF8 + ldr r0, [r0] + movs r2, #0xe1 + lsls r2, r2, #4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + strh r0, [r1] + bx lr + .align 2, 0 +_081A7FF4: .4byte gUnknown_2037290 +_081A7FF8: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A7FDC + + thumb_func_start sub_081A7FFC +sub_081A7FFC: @ 0x081A7FFC + ldr r2, _081A8018 + ldr r1, _081A801C + ldr r0, _081A8020 + ldr r0, [r0] + movs r3, #0xe1 + lsls r3, r3, #4 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1c + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r2] + bx lr + .align 2, 0 +_081A8018: .4byte gUnknown_2037290 +_081A801C: .4byte gUnknown_85DDEA4 +_081A8020: .4byte gUnknown_3005AF0 + thumb_func_end sub_081A7FFC + + thumb_func_start sub_081A8024 +sub_081A8024: @ 0x081A8024 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + movs r7, #6 + cmp r0, #0 + bne _081A8030 + movs r7, #1 +_081A8030: + ldr r4, _081A8078 + ldr r1, [r4] + ldr r2, _081A807C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r2, _081A8080 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #0xe + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r5, r4, #0 +_081A8052: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + adds r1, r7, #0 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #0 + ldr r1, [r5] + ldr r2, _081A8084 + adds r0, r1, r2 + ldrh r0, [r0] + subs r2, r0, #1 + cmp r3, r2 + bge _081A809A + ldr r0, _081A8088 + adds r1, r1, r0 + b _081A8094 + .align 2, 0 +_081A8078: .4byte gUnknown_3005AF0 +_081A807C: .4byte 0x00000CA9 +_081A8080: .4byte 0x00000E04 +_081A8084: .4byte 0x00000CB2 +_081A8088: .4byte 0x00000CB4 +_081A808C: + adds r1, #2 + adds r3, #1 + cmp r3, r2 + bge _081A809A +_081A8094: + ldrh r0, [r1] + cmp r0, r4 + bne _081A808C +_081A809A: + ldr r0, [r5] + ldr r1, _081A80DC + adds r0, r0, r1 + ldrh r0, [r0] + subs r0, #1 + cmp r3, r0 + bne _081A8052 + ldr r5, _081A80E0 + strh r4, [r5] + ldr r1, _081A80E4 + ldr r0, _081A80E8 + str r0, [r1] + ldrh r0, [r5] + movs r1, #0 + bl sub_08162528 + ldr r0, _081A80EC + ldr r1, [r0] + ldr r0, _081A80DC + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0xd + bhi _081A80D6 + subs r0, #1 + lsls r0, r0, #1 + ldr r2, _081A80F0 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r5] + strh r0, [r1] +_081A80D6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A80DC: .4byte 0x00000CB2 +_081A80E0: .4byte gUnknown_203886A +_081A80E4: .4byte gUnknown_203B954 +_081A80E8: .4byte gUnknown_85B4A10 +_081A80EC: .4byte gUnknown_3005AF0 +_081A80F0: .4byte 0x00000CB4 + thumb_func_end sub_081A8024 + + thumb_func_start sub_081A80F4 +sub_081A80F4: @ 0x081A80F4 + push {r4, r5, r6, r7, lr} + ldr r4, _081A8144 + ldr r1, [r4] + ldr r2, _081A8148 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r2, _081A814C + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #0xe + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r1, _081A8150 + ldr r0, _081A8154 + str r0, [r1] + lsls r7, r5, #0x18 + adds r6, r4, #0 +_081A8120: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #0 + ldr r1, [r6] + ldr r2, _081A8158 + adds r0, r1, r2 + ldrh r0, [r0] + subs r2, r0, #1 + cmp r3, r2 + bge _081A816E + ldr r0, _081A815C + adds r1, r1, r0 + b _081A8168 + .align 2, 0 +_081A8144: .4byte gUnknown_3005AF0 +_081A8148: .4byte 0x00000CA9 +_081A814C: .4byte 0x00000E04 +_081A8150: .4byte gUnknown_203B954 +_081A8154: .4byte gUnknown_85B4A10 +_081A8158: .4byte 0x00000CB2 +_081A815C: .4byte 0x00000CB4 +_081A8160: + adds r1, #2 + adds r3, #1 + cmp r3, r2 + bge _081A816E +_081A8168: + ldrh r0, [r1] + cmp r0, r4 + bne _081A8160 +_081A816E: + ldr r0, [r6] + ldr r1, _081A8220 + adds r0, r0, r1 + ldrh r0, [r0] + subs r0, #1 + cmp r3, r0 + bne _081A8120 + ldr r5, _081A8224 + strh r4, [r5] + ldrh r0, [r5] + movs r1, #0 + bl sub_08162528 + ldr r3, _081A8228 + ldr r1, [r3] + ldr r0, _081A8220 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0xe + bhi _081A81A4 + subs r0, #1 + lsls r0, r0, #1 + ldr r2, _081A822C + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r5] + strh r0, [r1] +_081A81A4: + adds r5, r3, #0 +_081A81A6: + lsrs r0, r7, #0x18 + movs r1, #1 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #0 + ldr r1, [r5] + ldr r2, _081A8220 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r3, r0 + bge _081A81E6 + adds r2, #2 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, r4 + beq _081A81E6 + ldr r0, _081A8228 + ldr r1, [r0] + subs r2, #2 + adds r0, r1, r2 + ldrh r2, [r0] + ldr r0, _081A822C + adds r1, r1, r0 +_081A81D8: + adds r1, #2 + adds r3, #1 + cmp r3, r2 + bge _081A81E6 + ldrh r0, [r1] + cmp r0, r4 + bne _081A81D8 +_081A81E6: + ldr r0, [r5] + ldr r1, _081A8220 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r3, r0 + bne _081A81A6 + ldr r5, _081A8230 + strh r4, [r5] + ldrh r0, [r5] + movs r1, #1 + bl sub_08162528 + ldr r0, _081A8228 + ldr r1, [r0] + ldr r0, _081A8220 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0xd + bhi _081A821A + subs r0, #2 + lsls r0, r0, #1 + ldr r2, _081A822C + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r5] + strh r0, [r1] +_081A821A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A8220: .4byte 0x00000CB2 +_081A8224: .4byte gUnknown_203886A +_081A8228: .4byte gUnknown_3005AF0 +_081A822C: .4byte 0x00000CB4 +_081A8230: .4byte gUnknown_203886C + thumb_func_end sub_081A80F4 + + thumb_func_start sub_081A8234 +sub_081A8234: @ 0x081A8234 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _081A8260 + ldr r4, _081A8264 + ldr r0, _081A8268 + adds r3, r0, #0 +_081A8240: + ldr r1, [r5] + lsls r0, r2, #1 + adds r1, r1, r4 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r3 + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xd + bls _081A8240 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A8260: .4byte gUnknown_3005AF0 +_081A8264: .4byte 0x00000CB4 +_081A8268: .4byte 0x0000FFFF + thumb_func_end sub_081A8234 + + thumb_func_start sub_081A826C +sub_081A826C: @ 0x081A826C + push {lr} + ldr r0, _081A8294 + ldrh r0, [r0] + cmp r0, #0 + bne _081A82A4 + ldr r3, _081A8298 + ldrh r1, [r3] + ldr r0, _081A829C + cmp r1, r0 + bhi _081A82C2 + ldr r2, _081A82A0 + movs r0, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC + b _081A82C2 + .align 2, 0 +_081A8294: .4byte gUnknown_2037282 +_081A8298: .4byte gUnknown_203886A +_081A829C: .4byte 0x0000012B +_081A82A0: .4byte gUnknown_203B954 +_081A82A4: + cmp r0, #1 + bne _081A82C2 + ldr r3, _081A82C8 + ldrh r1, [r3] + ldr r0, _081A82CC + cmp r1, r0 + bhi _081A82C2 + ldr r2, _081A82D0 + movs r0, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC +_081A82C2: + pop {r0} + bx r0 + .align 2, 0 +_081A82C8: .4byte gUnknown_203886C +_081A82CC: .4byte 0x0000012B +_081A82D0: .4byte gUnknown_203B954 + thumb_func_end sub_081A826C + + thumb_func_start sub_081A82D4 +sub_081A82D4: @ 0x081A82D4 + push {r4, r5, r6, lr} + ldr r5, _081A8304 + movs r6, #0 + movs r4, #0 +_081A82DC: + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081A82EE + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_081A82EE: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, #0x64 + cmp r4, #2 + bls _081A82DC + cmp r6, #1 + bhi _081A8308 + movs r0, #1 + b _081A830A + .align 2, 0 +_081A8304: .4byte gUnknown_2024190 +_081A8308: + movs r0, #0 +_081A830A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081A82D4 + + thumb_func_start sub_081A8310 +sub_081A8310: @ 0x081A8310 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + movs r6, #0 + ldr r1, _081A8360 + ldr r2, [r1] + ldr r3, _081A8364 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + ldr r3, _081A8368 + adds r2, r2, r3 + adds r2, r2, r1 + lsrs r4, r0, #0x18 + ldrh r2, [r2] + adds r0, r4, r2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #5 + bl sub_081A38C8 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + blt _081A8370 + cmp r2, #1 + bgt _081A8370 + ldr r1, _081A836C + adds r0, r2, #0 + adds r0, #0x14 + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r1, [r1, #0x17] + subs r0, r0, r1 + cmp r4, r0 + bne _081A83B4 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _081A83B4 + .align 2, 0 +_081A8360: .4byte gUnknown_3005AF0 +_081A8364: .4byte 0x00000CA9 +_081A8368: .4byte 0x00000E04 +_081A836C: .4byte gUnknown_85DDE14 +_081A8370: + ldr r5, _081A838C + movs r0, #5 + lsls r3, r0, #2 + adds r0, r3, r5 + ldrb r1, [r0] + adds r0, r5, #3 + adds r0, r3, r0 + ldrb r2, [r0] + subs r1, r1, r2 + cmp r4, r1 + bne _081A8390 + movs r6, #3 + b _081A83B4 + .align 2, 0 +_081A838C: .4byte gUnknown_85DDE14 +_081A8390: + adds r0, r5, #1 + adds r0, r3, r0 + ldrb r1, [r0] + subs r0, r1, r2 + cmp r4, r0 + beq _081A83B2 + cmp r4, r1 + bls _081A83B4 + subs r0, r4, r1 + adds r0, r0, r2 + adds r1, r5, #2 + adds r1, r3, r1 + ldrb r1, [r1] + bl __modsi3 + cmp r0, #0 + bne _081A83B4 +_081A83B2: + movs r6, #4 +_081A83B4: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081A8310 + + thumb_func_start sub_081A83BC +sub_081A83BC: @ 0x081A83BC + push {r4, lr} + ldr r4, _081A83D4 + movs r0, #0 + bl sub_081A8310 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A83D4: .4byte gUnknown_2037290 + thumb_func_end sub_081A83BC + + thumb_func_start sub_081A83D8 +sub_081A83D8: @ 0x081A83D8 + push {r4, lr} + ldr r3, _081A840C + ldr r2, _081A8410 + ldr r0, _081A8414 + ldr r0, [r0] + movs r1, #0xe1 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + lsls r0, r1, #1 + adds r0, r0, r1 + ldrh r2, [r2] + adds r0, r0, r2 + adds r0, r0, r3 + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_081A7CB8 + ldr r0, _081A8418 + strh r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A840C: .4byte gUnknown_85DDEAD +_081A8410: .4byte gUnknown_2037286 +_081A8414: .4byte gUnknown_3005AF0 +_081A8418: .4byte gUnknown_2037290 + thumb_func_end sub_081A83D8 + + thumb_func_start sub_081A841C +sub_081A841C: @ 0x081A841C + ldr r0, _081A8438 + ldr r2, [r0] + ldr r0, _081A843C + ldrb r1, [r0] + movs r0, #0xe1 + lsls r0, r0, #4 + adds r2, r2, r0 + lsls r1, r1, #7 + ldrb r3, [r2] + movs r0, #0x7f + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_081A8438: .4byte gUnknown_3005AF0 +_081A843C: .4byte gUnknown_2037282 + thumb_func_end sub_081A841C + + thumb_func_start sub_081A8440 +sub_081A8440: @ 0x081A8440 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r1, _081A84A4 + movs r0, #1 + strh r0, [r1] + movs r0, #0 + mov sl, r0 +_081A8454: + movs r0, #0 + mov sb, r0 + movs r0, #0x64 + mov r1, sl + muls r1, r0, r1 + ldr r0, _081A84A8 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r7, #0 + movs r1, #0x3a + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r4, r5 + blo _081A84E2 + adds r0, r7, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081A84E2 + adds r0, r7, #0 + movs r1, #0x15 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r6, #0 + b _081A84B2 + .align 2, 0 +_081A84A4: .4byte gUnknown_2037290 +_081A84A8: .4byte gUnknown_2024190 +_081A84AC: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_081A84B2: + cmp r6, #3 + bhi _081A84E6 + adds r1, r6, #0 + adds r1, #0xd + adds r0, r7, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, r8 + adds r2, r6, #0 + bl sub_0806B424 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r7, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r5 + bhs _081A84AC +_081A84E2: + movs r0, #1 + mov sb, r0 +_081A84E6: + mov r0, sb + cmp r0, #1 + bne _081A84F8 + ldr r1, _081A84F4 + movs r0, #0 + strh r0, [r1] + b _081A8506 + .align 2, 0 +_081A84F4: .4byte gUnknown_2037290 +_081A84F8: + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + cmp r0, #2 + bls _081A8454 +_081A8506: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081A8440 + + thumb_func_start sub_081A8514 +sub_081A8514: @ 0x081A8514 + push {r4, r5, r6, r7, lr} + movs r5, #0 + ldr r7, _081A8558 + ldr r6, _081A855C +_081A851C: + ldr r0, [r6] + lsls r4, r5, #1 + ldr r1, _081A8560 + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + movs r2, #0xea + lsls r2, r2, #1 + adds r1, r1, r2 + ldr r0, [r7] + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + ldr r1, [r6] + ldr r2, _081A8564 + adds r1, r1, r2 + adds r1, r1, r4 + strh r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #2 + bls _081A851C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A8558: .4byte gUnknown_3005AEC +_081A855C: .4byte gUnknown_3005AF0 +_081A8560: .4byte 0x00000CAA +_081A8564: .4byte 0x00000E12 + thumb_func_end sub_081A8514 + + thumb_func_start sub_081A8568 +sub_081A8568: @ 0x081A8568 + push {r4, lr} + movs r4, #0 +_081A856C: + ldr r0, _081A85A0 + ldr r2, [r0] + lsls r3, r4, #1 + ldr r1, _081A85A4 + adds r0, r2, r1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081A85A8 + adds r0, r0, r1 + ldr r1, _081A85AC + adds r3, r3, r1 + adds r2, r2, r3 + movs r1, #0xc + bl sub_0806A774 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081A856C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A85A0: .4byte gUnknown_3005AF0 +_081A85A4: .4byte 0x00000CAA +_081A85A8: .4byte gUnknown_202412C +_081A85AC: .4byte 0x00000E12 + thumb_func_end sub_081A8568 + + thumb_func_start sub_081A85B0 +sub_081A85B0: @ 0x081A85B0 + push {r4, r5, r6, lr} + ldr r3, _081A860C + ldr r1, [r3] + ldr r2, _081A8610 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _081A8614 + adds r1, r1, r0 + movs r4, #0 + strb r4, [r1] + ldr r1, [r3] + ldr r6, _081A8618 + adds r0, r1, r6 + strh r4, [r0] + adds r1, r1, r2 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r3, [r3] + ldr r0, _081A861C + adds r2, r3, r0 + ldr r1, _081A8620 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _081A85FC + lsls r1, r5, #1 + ldr r2, _081A8624 + adds r0, r3, r2 + adds r0, r0, r1 + strh r4, [r0] +_081A85FC: + ldr r0, _081A8628 + strh r4, [r0] + ldr r1, _081A862C + movs r0, #0 + strb r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A860C: .4byte gUnknown_3005AF0 +_081A8610: .4byte 0x00000CA9 +_081A8614: .4byte 0x00000CA8 +_081A8618: .4byte 0x00000CB2 +_081A861C: .4byte 0x00000CDC +_081A8620: .4byte gUnknown_85DDEC8 +_081A8624: .4byte 0x00000E04 +_081A8628: .4byte gUnknown_203886A +_081A862C: .4byte gUnknown_2023FDE + thumb_func_end sub_081A85B0 + + thumb_func_start sub_081A8630 +sub_081A8630: @ 0x081A8630 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081A8680 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _081A8684 + adds r0, r4, #0 + bl sub_0806B1A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x33 + beq _081A8656 + cmp r0, #0x16 + bne _081A8684 +_081A8656: + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _081A8684 + subs r0, #5 + cmp r5, r0 + bgt _081A8684 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _081A8684 + movs r0, #0 + b _081A8686 + .align 2, 0 +_081A8680: .4byte gUnknown_2024190 +_081A8684: + movs r0, #1 +_081A8686: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081A8630 + + thumb_func_start sub_081A868C +sub_081A868C: @ 0x081A868C + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081A869C + cmp r2, r0 + bne _081A86A0 + movs r1, #0 + b _081A86AA + .align 2, 0 +_081A869C: .4byte 0x0000017B +_081A86A0: + ldr r0, _081A86B0 + movs r1, #2 + cmp r2, r0 + bne _081A86AA + movs r1, #1 +_081A86AA: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_081A86B0: .4byte 0x00000149 + thumb_func_end sub_081A868C + + thumb_func_start sub_081A86B4 +sub_081A86B4: @ 0x081A86B4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081A86D8 + ldr r0, [r4] + cmp r0, #0 + bne _081A86CA + movs r0, #0x44 + bl sub_08000BDC + str r0, [r4] +_081A86CA: + ldr r0, [r4] + adds r0, #0x41 + strb r5, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A86D8: .4byte gUnknown_203CB1C + thumb_func_end sub_081A86B4 + + thumb_func_start sub_081A86DC +sub_081A86DC: @ 0x081A86DC + push {r4, lr} + ldr r4, _081A8718 + ldr r0, [r4] + cmp r0, #0 + beq _081A86EE + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_081A86EE: + movs r0, #0xff + movs r1, #0 + movs r2, #0 + bl sub_0808CE94 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081A871C + adds r0, r0, r1 + bl sub_08092BF4 + bl sub_080D2C2C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A8718: .4byte gUnknown_203CB1C +_081A871C: .4byte gUnknown_2036FF0 + thumb_func_end sub_081A86DC + + thumb_func_start sub_081A8720 +sub_081A8720: @ 0x081A8720 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r0, _081A87B8 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r1, r1, r0 + mov sb, r1 + movs r3, #0 + mov sl, r3 + mov r8, r3 +_081A8744: + mov r0, r8 + lsls r4, r0, #1 + adds r1, r4, r0 + lsls r1, r1, #3 + add r1, sb + ldrh r0, [r1, #4] + adds r0, #7 + ldrh r1, [r1, #6] + adds r1, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _081A87BC + ldr r0, [r0] + adds r0, #0x41 + ldrb r0, [r0] + movs r2, #0xa6 + lsls r2, r2, #2 + cmp r0, #0 + bne _081A8778 + subs r2, #0x48 +_081A8778: + ldr r0, _081A87C0 + cmp r1, r0 + bls _081A8854 + subs r1, r1, r2 + adds r0, r1, #0 + cmp r1, #0 + bge _081A8788 + adds r0, r1, #7 +_081A8788: + asrs r2, r0, #3 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _081A8854 + ldr r3, [sp] + cmp r0, r3 + bne _081A8854 + lsls r0, r2, #3 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bhi _081A8854 + movs r1, #0 + movs r2, #0 + cmp r5, #1 + beq _081A87D8 + cmp r5, #1 + bgt _081A87C4 + cmp r5, #0 + beq _081A87CE + b _081A8854 + .align 2, 0 +_081A87B8: .4byte gUnknown_3005AEC +_081A87BC: .4byte gUnknown_203CB1C +_081A87C0: .4byte 0x0000024F +_081A87C4: + cmp r5, #2 + beq _081A87E4 + cmp r5, #3 + beq _081A87F0 + b _081A8854 +_081A87CE: + ldr r7, _081A87D4 + movs r1, #1 + b _081A87F4 + .align 2, 0 +_081A87D4: .4byte gUnknown_85DDED0 +_081A87D8: + ldr r7, _081A87E0 + movs r2, #1 + b _081A87F4 + .align 2, 0 +_081A87E0: .4byte gUnknown_85DDED4 +_081A87E4: + ldr r7, _081A87EC + movs r1, #0xff + b _081A87F4 + .align 2, 0 +_081A87EC: .4byte gUnknown_85DDED8 +_081A87F0: + ldr r7, _081A8844 + movs r2, #0xff +_081A87F4: + mov r3, r8 + adds r0, r4, r3 + lsls r0, r0, #3 + mov r3, sb + adds r4, r0, r3 + lsls r0, r1, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r4, #4] + lsls r0, r2, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #6] + adds r0, r0, r3 + strh r0, [r4, #6] + ldrb r0, [r4] + ldr r6, _081A8848 + ldr r2, [r6] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _081A884C + mov r0, r8 + adds r1, r5, #0 + bl sub_081A8AE0 + ldrb r4, [r4] + mov sl, r4 + mov r0, sl + ldr r2, [r6] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + adds r3, r7, #0 + bl sub_080D2B88 + b _081A8854 + .align 2, 0 +_081A8844: .4byte gUnknown_85DDEDC +_081A8848: .4byte gUnknown_3005AEC +_081A884C: + mov r0, r8 + adds r1, r5, #0 + bl sub_081A8B14 +_081A8854: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0x3f + bhi _081A8864 + b _081A8744 +_081A8864: + mov r0, sl + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A8720 + + thumb_func_start sub_081A8878 +sub_081A8878: @ 0x081A8878 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r1, _081A8924 + ldr r2, [r1] + cmp r2, #0 + bne _081A888C + b _081A8ACA +_081A888C: + adds r0, r2, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r3, #0xa6 + lsls r3, r3, #2 + mov sl, r3 + cmp r0, #0 + bne _081A88A2 + movs r0, #0x94 + lsls r0, r0, #2 + mov sl, r0 +_081A88A2: + ldr r0, _081A8928 + ldr r0, [r0] + movs r3, #0xc7 + lsls r3, r3, #4 + adds r7, r0, r3 + movs r0, #0 + mov sb, r0 + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + cmp sb, r0 + blo _081A88BC + b _081A8ACA +_081A88BC: + mov r8, r1 +_081A88BE: + mov r1, r8 + ldr r0, [r1] + mov r2, sb + lsls r4, r2, #2 + adds r0, r0, r4 + ldrb r0, [r0, #1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r7 + ldrh r0, [r1, #4] + adds r0, #7 + ldrh r1, [r1, #6] + adds r1, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r3, sl + subs r1, r0, r3 + adds r0, r1, #0 + cmp r1, #0 + bge _081A88F6 + adds r0, r1, #7 +_081A88F6: + asrs r0, r0, #3 + lsls r0, r0, #3 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldrb r1, [r1] + subs r0, r0, r1 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + blt _081A8916 + cmp r1, #3 + bne _081A892C +_081A8916: + movs r0, #3 + rsbs r0, r0, #0 + movs r6, #0 + cmp r1, r0 + bne _081A8934 + b _081A8932 + .align 2, 0 +_081A8924: .4byte gUnknown_203CB1C +_081A8928: .4byte gUnknown_3005AEC +_081A892C: + movs r6, #2 + cmp r1, #0 + ble _081A8934 +_081A8932: + movs r6, #1 +_081A8934: + ldr r5, _081A8980 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrb r0, [r0] + ldr r1, _081A8984 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_0808CE94 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x10 + bne _081A895C + b _081A8AB2 +_081A895C: + ldr r0, _081A8988 + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #0x18] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, r0, #0 + cmp r6, #0 + bne _081A8A1C + cmp r0, #2 + beq _081A89E0 + cmp r0, #2 + bgt _081A898C + cmp r0, #1 + beq _081A89B0 + b _081A8AB2 + .align 2, 0 +_081A8980: .4byte gUnknown_203CB1C +_081A8984: .4byte gUnknown_3005AEC +_081A8988: .4byte gUnknown_2036FF0 +_081A898C: + cmp r0, #3 + beq _081A89C8 + cmp r0, #4 + beq _081A8996 + b _081A8AB2 +_081A8996: + ldr r3, _081A89AC + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #7 + b _081A89F2 + .align 2, 0 +_081A89AC: .4byte gUnknown_85DDEE6 +_081A89B0: + ldr r3, _081A89C4 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #0xa + b _081A89F2 + .align 2, 0 +_081A89C4: .4byte gUnknown_85DDEE0 +_081A89C8: + ldr r3, _081A89DC + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #8 + b _081A89F2 + .align 2, 0 +_081A89DC: .4byte gUnknown_85DDEE2 +_081A89E0: + ldr r3, _081A8A14 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #9 +_081A89F2: + strb r1, [r0, #9] + mov r1, r8 + ldr r0, [r1] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrb r0, [r0] + ldr r1, _081A8A18 + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_080D2B88 + b _081A8AB2 + .align 2, 0 +_081A8A14: .4byte gUnknown_85DDEE4 +_081A8A18: .4byte gUnknown_3005AEC +_081A8A1C: + cmp r6, #1 + bne _081A8AB2 + cmp r0, #2 + beq _081A8A80 + cmp r0, #2 + bgt _081A8A2E + cmp r0, #1 + beq _081A8A50 + b _081A8AB2 +_081A8A2E: + cmp r1, #3 + beq _081A8A68 + cmp r1, #4 + bne _081A8AB2 + ldr r3, _081A8A4C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #8 + b _081A8A92 + .align 2, 0 +_081A8A4C: .4byte gUnknown_85DDEE2 +_081A8A50: + ldr r3, _081A8A64 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #9 + b _081A8A92 + .align 2, 0 +_081A8A64: .4byte gUnknown_85DDEE4 +_081A8A68: + ldr r3, _081A8A7C + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #7 + b _081A8A92 + .align 2, 0 +_081A8A7C: .4byte gUnknown_85DDEE6 +_081A8A80: + ldr r3, _081A8AD8 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + movs r1, #0xa +_081A8A92: + strb r1, [r0, #9] + mov r2, r8 + ldr r0, [r2] + adds r0, r0, r4 + ldrb r1, [r0, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrb r0, [r0] + ldr r1, _081A8ADC + ldr r2, [r1] + ldrb r1, [r2, #5] + ldrb r2, [r2, #4] + bl sub_080D2B88 +_081A8AB2: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r3, r8 + ldr r0, [r3] + adds r0, #0x40 + ldrb r0, [r0] + cmp sb, r0 + bhs _081A8ACA + b _081A88BE +_081A8ACA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A8AD8: .4byte gUnknown_85DDEE0 +_081A8ADC: .4byte gUnknown_3005AEC + thumb_func_end sub_081A8878 + + thumb_func_start sub_081A8AE0 +sub_081A8AE0: @ 0x081A8AE0 + push {r4, lr} + ldr r4, _081A8B10 + ldr r3, [r4] + adds r2, r3, #0 + adds r2, #0x40 + ldrb r2, [r2] + lsls r2, r2, #2 + adds r3, r3, r2 + strb r0, [r3, #1] + ldr r2, [r4] + adds r0, r2, #0 + adds r0, #0x40 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r2, r2, r0 + strb r1, [r2] + ldr r1, [r4] + adds r1, #0x40 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A8B10: .4byte gUnknown_203CB1C + thumb_func_end sub_081A8AE0 + + thumb_func_start sub_081A8B14 +sub_081A8B14: @ 0x081A8B14 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + ldr r0, _081A8B80 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r5, r0, r1 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r5 + ldrh r0, [r1, #4] + adds r0, #7 + ldrh r1, [r1, #6] + adds r1, #7 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_08087B88 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081A8B84 + ldr r0, [r0] + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0xa6 + lsls r1, r1, #2 + cmp r0, #0 + bne _081A8B5A + subs r1, #0x48 +_081A8B5A: + subs r1, r2, r1 + adds r0, r1, #0 + cmp r1, #0 + bge _081A8B64 + adds r0, r1, #7 +_081A8B64: + asrs r0, r0, #3 + lsls r0, r0, #3 + subs r0, r1, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, r0, r6 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + blt _081A8B7C + cmp r1, #3 + bne _081A8B88 +_081A8B7C: + movs r2, #0 + b _081A8B9A + .align 2, 0 +_081A8B80: .4byte gUnknown_3005AEC +_081A8B84: .4byte gUnknown_203CB1C +_081A8B88: + cmp r1, #0 + bgt _081A8B94 + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + bne _081A8B98 +_081A8B94: + movs r2, #1 + b _081A8B9A +_081A8B98: + movs r2, #2 +_081A8B9A: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r0, r5 + ldrb r0, [r1, #9] + adds r3, r0, #0 + cmp r2, #0 + bne _081A8BCC + cmp r0, #8 + beq _081A8BF2 + cmp r0, #8 + bgt _081A8BB8 + cmp r0, #7 + beq _081A8BC8 + b _081A8BF6 +_081A8BB8: + cmp r0, #9 + beq _081A8BC4 + cmp r0, #0xa + bne _081A8BF6 + movs r0, #7 + b _081A8BF4 +_081A8BC4: + movs r0, #8 + b _081A8BF4 +_081A8BC8: + movs r0, #9 + b _081A8BF4 +_081A8BCC: + cmp r2, #1 + bne _081A8BF6 + cmp r0, #8 + beq _081A8BEA + cmp r0, #8 + bgt _081A8BDE + cmp r0, #7 + beq _081A8BF2 + b _081A8BF6 +_081A8BDE: + cmp r3, #9 + beq _081A8BEE + cmp r3, #0xa + bne _081A8BF6 + movs r0, #8 + b _081A8BF4 +_081A8BEA: + movs r0, #9 + b _081A8BF4 +_081A8BEE: + movs r0, #7 + b _081A8BF4 +_081A8BF2: + movs r0, #0xa +_081A8BF4: + strb r0, [r1, #9] +_081A8BF6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081A8B14 + + thumb_func_start sub_081A8BFC +sub_081A8BFC: @ 0x081A8BFC + push {lr} + ldr r1, _081A8C14 + ldr r0, _081A8C18 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081A8BFC + + thumb_func_start sub_081A8C10 +sub_081A8C10: @ 0x081A8C10 + bx r0 + .align 2, 0 +_081A8C14: .4byte gUnknown_85DF718 +_081A8C18: .4byte gUnknown_2037280 + thumb_func_end sub_081A8C10 + + thumb_func_start sub_081A8C1C +sub_081A8C1C: @ 0x081A8C1C + push {r4, r5, r6, lr} + ldr r3, _081A8C5C + ldr r1, [r3] + ldr r4, _081A8C60 + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + ldr r0, _081A8C64 + adds r1, r1, r0 + movs r2, #0 + strb r2, [r1] + ldr r1, [r3] + ldr r6, _081A8C68 + adds r0, r1, r6 + strh r2, [r0] + adds r1, r1, r4 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + cmp r5, #0 + beq _081A8C70 + ldr r0, [r3] + ldr r1, _081A8C6C + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #6 + b _081A8C7C + .align 2, 0 +_081A8C5C: .4byte gUnknown_3005AF0 +_081A8C60: .4byte 0x00000CA9 +_081A8C64: .4byte 0x00000CA8 +_081A8C68: .4byte 0x00000CB2 +_081A8C6C: .4byte 0x00000CDC +_081A8C70: + ldr r0, [r3] + ldr r6, _081A8CA8 + adds r0, r0, r6 + ldr r2, [r0] + movs r0, #0x80 + lsls r0, r0, #5 +_081A8C7C: + ands r2, r0 + cmp r2, #0 + bne _081A8C94 + ldr r0, [r3] + lsls r1, r5, #1 + ldr r3, _081A8CAC + adds r0, r0, r3 + adds r0, r0, r1 + strh r2, [r0] + adds r0, r5, #0 + bl sub_081AA7F4 +_081A8C94: + bl sub_081C46F4 + ldr r0, _081A8CB0 + movs r1, #0 + strh r1, [r0] + ldr r0, _081A8CB4 + strb r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A8CA8: .4byte 0x00000CDC +_081A8CAC: .4byte 0x00000E1A +_081A8CB0: .4byte gUnknown_203886A +_081A8CB4: .4byte gUnknown_2023FDE + thumb_func_end sub_081A8C1C + + thumb_func_start sub_081A8CB8 +sub_081A8CB8: @ 0x081A8CB8 + push {r4, lr} + ldr r1, _081A8CE0 + ldr r0, [r1] + ldr r2, _081A8CE4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + ldr r0, _081A8CE8 + ldrh r0, [r0] + adds r3, r1, #0 + cmp r0, #6 + bls _081A8CD4 + b _081A8DBA +_081A8CD4: + lsls r0, r0, #2 + ldr r1, _081A8CEC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A8CE0: .4byte gUnknown_3005AF0 +_081A8CE4: .4byte 0x00000CA9 +_081A8CE8: .4byte gUnknown_2037282 +_081A8CEC: .4byte _081A8CF0 +_081A8CF0: @ jump table + .4byte _081A8D0C @ case 0 + .4byte _081A8D1C @ case 1 + .4byte _081A8D34 @ case 2 + .4byte _081A8D64 @ case 3 + .4byte _081A8D78 @ case 4 + .4byte _081A8D90 @ case 5 + .4byte _081A8DA8 @ case 6 +_081A8D0C: + ldr r0, _081A8D14 + ldr r1, [r3] + ldr r3, _081A8D18 + b _081A8D7E + .align 2, 0 +_081A8D14: .4byte gUnknown_2037290 +_081A8D18: .4byte 0x00000E18 +_081A8D1C: + ldr r2, _081A8D2C + ldr r0, [r3] + lsls r1, r4, #1 + ldr r3, _081A8D30 + adds r0, r0, r3 + adds r0, r0, r1 + ldrh r0, [r0] + b _081A8DB8 + .align 2, 0 +_081A8D2C: .4byte gUnknown_2037290 +_081A8D30: .4byte 0x00000E1A +_081A8D34: + cmp r4, #0 + beq _081A8D4C + ldr r2, _081A8D44 + ldr r0, [r3] + ldr r1, _081A8D48 + adds r0, r0, r1 + b _081A8DB0 + .align 2, 0 +_081A8D44: .4byte gUnknown_2037290 +_081A8D48: .4byte 0x00000CDC +_081A8D4C: + ldr r2, _081A8D5C + ldr r0, [r3] + ldr r3, _081A8D60 + adds r0, r0, r3 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + b _081A8DB6 + .align 2, 0 +_081A8D5C: .4byte gUnknown_2037290 +_081A8D60: .4byte 0x00000CDC +_081A8D64: + ldr r0, _081A8D70 + ldr r1, [r3] + ldr r2, _081A8D74 + adds r1, r1, r2 + b _081A8D80 + .align 2, 0 +_081A8D70: .4byte gUnknown_2037290 +_081A8D74: .4byte 0x00000E1A +_081A8D78: + ldr r0, _081A8D88 + ldr r1, [r3] + ldr r3, _081A8D8C +_081A8D7E: + adds r1, r1, r3 +_081A8D80: + ldrh r1, [r1] + strh r1, [r0] + b _081A8DBA + .align 2, 0 +_081A8D88: .4byte gUnknown_2037290 +_081A8D8C: .4byte 0x00000E1C +_081A8D90: + ldr r2, _081A8DA0 + ldr r0, [r3] + ldr r1, _081A8DA4 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #5 + b _081A8DB6 + .align 2, 0 +_081A8DA0: .4byte gUnknown_2037290 +_081A8DA4: .4byte 0x00000CDC +_081A8DA8: + ldr r2, _081A8DC0 + ldr r0, [r3] + ldr r3, _081A8DC4 + adds r0, r0, r3 +_081A8DB0: + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #6 +_081A8DB6: + ands r0, r1 +_081A8DB8: + strh r0, [r2] +_081A8DBA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A8DC0: .4byte gUnknown_2037290 +_081A8DC4: .4byte 0x00000CDC + thumb_func_end sub_081A8CB8 + + thumb_func_start sub_081A8DC8 +sub_081A8DC8: @ 0x081A8DC8 + push {lr} + ldr r0, _081A8DEC + ldr r2, [r0] + ldr r1, _081A8DF0 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r1, r0, #0x1e + ldr r0, _081A8DF4 + ldrh r0, [r0] + cmp r0, #1 + beq _081A8E18 + cmp r0, #1 + bgt _081A8DF8 + cmp r0, #0 + beq _081A8E02 + b _081A8EA6 + .align 2, 0 +_081A8DEC: .4byte gUnknown_3005AF0 +_081A8DF0: .4byte 0x00000CA9 +_081A8DF4: .4byte gUnknown_2037282 +_081A8DF8: + cmp r0, #2 + beq _081A8E30 + cmp r0, #7 + beq _081A8E9C + b _081A8EA6 +_081A8E02: + ldr r0, _081A8E10 + ldrh r1, [r0] + ldr r3, _081A8E14 + adds r0, r2, r3 + strh r1, [r0] + b _081A8EA6 + .align 2, 0 +_081A8E10: .4byte gUnknown_2037284 +_081A8E14: .4byte 0x00000E18 +_081A8E18: + lsls r1, r1, #1 + ldr r3, _081A8E28 + adds r0, r2, r3 + adds r0, r0, r1 + ldr r1, _081A8E2C + ldrh r1, [r1] + strh r1, [r0] + b _081A8EA6 + .align 2, 0 +_081A8E28: .4byte 0x00000E1A +_081A8E2C: .4byte gUnknown_2037284 +_081A8E30: + cmp r1, #0 + beq _081A8E64 + ldr r0, _081A8E48 + ldrh r0, [r0] + cmp r0, #0 + beq _081A8E50 + ldr r1, _081A8E4C + adds r0, r2, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #6 + b _081A8E76 + .align 2, 0 +_081A8E48: .4byte gUnknown_2037284 +_081A8E4C: .4byte 0x00000CDC +_081A8E50: + ldr r3, _081A8E5C + adds r0, r2, r3 + ldr r1, [r0] + ldr r2, _081A8E60 + b _081A8E8C + .align 2, 0 +_081A8E5C: .4byte 0x00000CDC +_081A8E60: .4byte 0xFFFFDFFF +_081A8E64: + ldr r0, _081A8E7C + ldrh r0, [r0] + cmp r0, #0 + beq _081A8E84 + ldr r1, _081A8E80 + adds r0, r2, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #5 +_081A8E76: + orrs r1, r2 + str r1, [r0] + b _081A8EA6 + .align 2, 0 +_081A8E7C: .4byte gUnknown_2037284 +_081A8E80: .4byte 0x00000CDC +_081A8E84: + ldr r3, _081A8E94 + adds r0, r2, r3 + ldr r1, [r0] + ldr r2, _081A8E98 +_081A8E8C: + ands r1, r2 + str r1, [r0] + b _081A8EA6 + .align 2, 0 +_081A8E94: .4byte 0x00000CDC +_081A8E98: .4byte 0xFFFFEFFF +_081A8E9C: + ldr r0, _081A8EAC + ldrh r1, [r0] + ldr r3, _081A8EB0 + adds r0, r2, r3 + strb r1, [r0] +_081A8EA6: + pop {r0} + bx r0 + .align 2, 0 +_081A8EAC: .4byte gUnknown_2037284 +_081A8EB0: .4byte 0x00000E2A + thumb_func_end sub_081A8DC8 + + thumb_func_start sub_081A8EB4 +sub_081A8EB4: @ 0x081A8EB4 + push {r4, lr} + ldr r4, _081A8EEC + ldr r0, [r4] + ldr r1, _081A8EF0 + ldrh r1, [r1] + ldr r2, _081A8EF4 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081A8EF8 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_08087D28 + movs r0, #1 + bl sub_08153274 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A8EEC: .4byte gUnknown_3005AF0 +_081A8EF0: .4byte gUnknown_2037282 +_081A8EF4: .4byte 0x00000CA8 +_081A8EF8: .4byte 0x00000CA9 + thumb_func_end sub_081A8EB4 + + thumb_func_start sub_081A8EFC +sub_081A8EFC: @ 0x081A8EFC + push {r4, r5, lr} + ldr r4, _081A8F38 + ldr r1, [r4] + ldr r2, _081A8F3C + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + ldr r2, _081A8F40 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0x29 + bls _081A8F4C + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _081A8F44 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r1, _081A8F48 + adds r4, r4, r1 + b _081A8F6A + .align 2, 0 +_081A8F38: .4byte gUnknown_3005AF0 +_081A8F3C: .4byte 0x00000CA9 +_081A8F40: .4byte 0x00000E1A +_081A8F44: .4byte gUnknown_85DF76C +_081A8F48: .4byte 0x00000E18 +_081A8F4C: + bl sub_0806F050 + ldr r4, [r4] + ldr r5, _081A8F74 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #6 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r0, r0, r5 + ldrh r0, [r0] + ldr r2, _081A8F78 + adds r4, r4, r2 +_081A8F6A: + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A8F74: .4byte gUnknown_85DF760 +_081A8F78: .4byte 0x00000E18 + thumb_func_end sub_081A8EFC + + thumb_func_start sub_081A8F7C +sub_081A8F7C: @ 0x081A8F7C + push {r4, r5, lr} + ldr r4, _081A8FB4 + ldr r0, [r4] + ldr r1, _081A8FB8 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _081A8FC4 + ldr r0, [r4] + ldr r1, _081A8FB8 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081A8FBC + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081A8FB8 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081A8FC0 + strh r5, [r0] + b _081A8FCA + .align 2, 0 +_081A8FB4: .4byte gUnknown_3005AF0 +_081A8FB8: .4byte 0x00000E18 +_081A8FBC: .4byte gUnknown_2021C40 +_081A8FC0: .4byte gUnknown_2037290 +_081A8FC4: + ldr r1, _081A8FD0 + movs r0, #0 + strh r0, [r1] +_081A8FCA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A8FD0: .4byte gUnknown_2037290 + thumb_func_end sub_081A8F7C + + thumb_func_start sub_081A8FD4 +sub_081A8FD4: @ 0x081A8FD4 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _081A9004 +_081A8FDA: + bl sub_0806F050 + ldr r1, [r5] + lsls r2, r4, #1 + ldr r3, _081A9008 + adds r1, r1, r3 + adds r1, r1, r2 + strh r0, [r1] + adds r4, #1 + cmp r4, #3 + ble _081A8FDA + ldr r0, _081A9004 + ldr r0, [r0] + ldr r1, _081A900C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A9004: .4byte gUnknown_3005AF0 +_081A9008: .4byte 0x00000E22 +_081A900C: .4byte 0x00000E2A + thumb_func_end sub_081A8FD4 + + thumb_func_start sub_081A9010 +sub_081A9010: @ 0x081A9010 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r5, _081A90E0 + ldr r1, [r5] + ldr r2, _081A90E4 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + mov sl, r0 + adds r2, #9 + adds r0, r1, r2 + ldrh r0, [r0] + str r0, [sp] + mov r2, sl + lsls r0, r2, #1 + ldr r2, _081A90E8 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #0x13 + bls _081A9054 + movs r0, #0x13 + mov r8, r0 +_081A9054: + bl sub_081AA75C + lsls r0, r0, #0x18 + ldr r1, _081A90EC + ldrh r4, [r1] + ldr r1, _081A90F0 + lsrs r0, r0, #0x14 + adds r0, r0, r1 + ldrb r0, [r0, #1] + subs r4, r4, r0 + subs r7, r4, #1 + ldr r1, [r5] + lsrs r0, r7, #0x1f + adds r0, r7, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + ldr r2, _081A90F4 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r6, [r1] + adds r0, r6, #0 + bl sub_0806F094 + movs r5, #0 + mov r0, r8 + lsls r0, r0, #2 + mov sb, r0 + cmp r5, r4 + bge _081A90A8 +_081A908E: + bl sub_0806F0A4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r5, #1 + adds r0, r7, #1 + cmp r5, r0 + blt _081A908E +_081A90A8: + ldr r0, _081A90F8 + ldr r1, [sp] + adds r0, r1, r0 + ldrb r5, [r0] + ldr r1, _081A90FC + ldr r3, _081A9100 + ldr r4, _081A9104 + cmp r5, #0x3e + bhi _081A90D4 + lsls r2, r5, #1 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r6, r0 + blt _081A90D4 + adds r0, r2, r1 +_081A90C6: + adds r0, #2 + adds r5, #1 + cmp r5, #0x3e + bhi _081A90D4 + ldrb r2, [r0] + cmp r6, r2 + bge _081A90C6 +_081A90D4: + mov r0, sl + cmp r0, #0 + beq _081A910C + ldr r2, _081A9108 + b _081A910E + .align 2, 0 +_081A90E0: .4byte gUnknown_3005AF0 +_081A90E4: .4byte 0x00000CA9 +_081A90E8: .4byte 0x00000E1A +_081A90EC: .4byte gUnknown_2037292 +_081A90F0: .4byte gUnknown_85DEE88 +_081A90F4: .4byte 0x00000E22 +_081A90F8: .4byte gUnknown_85DF372 +_081A90FC: .4byte gUnknown_85DF2F4 +_081A9100: .4byte gUnknown_2037278 +_081A9104: .4byte gUnknown_203727A +_081A9108: .4byte gUnknown_85DF164 +_081A910C: + ldr r2, _081A913C +_081A910E: + lsls r0, r5, #1 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #1 + mov r1, sb + add r1, r8 + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3] + movs r0, #1 + strh r0, [r4] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A913C: .4byte gUnknown_85DEFD4 + thumb_func_end sub_081A9010 + + thumb_func_start sub_081A9140 +sub_081A9140: @ 0x081A9140 + push {r4, r5, lr} + ldr r0, _081A9154 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r3, r0, r1 + movs r2, #0 + ldr r4, _081A9158 + b _081A916C + .align 2, 0 +_081A9154: .4byte gUnknown_3005AEC +_081A9158: .4byte gUnknown_2037292 +_081A915C: + adds r2, #1 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _081A9182 +_081A916C: + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r1, r0, r3 + ldrb r0, [r1] + ldrh r5, [r4] + cmp r0, r5 + bne _081A915C + ldr r0, _081A9188 + strh r0, [r1, #4] + strh r0, [r1, #6] +_081A9182: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A9188: .4byte 0x00007FFF + thumb_func_end sub_081A9140 + + thumb_func_start sub_081A918C +sub_081A918C: @ 0x081A918C + ldr r1, _081A9194 + ldr r0, _081A9198 + str r0, [r1] + bx lr + .align 2, 0 +_081A9194: .4byte gUnknown_203B954 +_081A9198: .4byte gUnknown_85B4A10 + thumb_func_end sub_081A918C + + thumb_func_start sub_081A919C +sub_081A919C: @ 0x081A919C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + movs r0, #0 + mov sb, r0 + movs r7, #0 + ldr r0, _081A91EC + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r1, r1, r0 + mov r8, r1 + ldr r2, _081A91F0 + ldr r0, _081A91F4 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #8] + bl sub_081A9820 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r6, #0 + ldr r2, _081A91F8 + ldr r0, _081A91FC + ldr r1, [r0] + movs r0, #0x34 + muls r0, r5, r0 + adds r0, r0, r1 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _081A9200 + ldrb r2, [r2, #1] + mov sb, r2 + b _081A9226 + .align 2, 0 +_081A91EC: .4byte gUnknown_3005AEC +_081A91F0: .4byte gUnknown_2036FF0 +_081A91F4: .4byte gUnknown_3005B50 +_081A91F8: .4byte gUnknown_85DF454 +_081A91FC: .4byte gUnknown_203B954 +_081A9200: + adds r6, #1 + cmp r6, #0x31 + bhi _081A9226 + ldr r4, _081A925C + lsls r3, r6, #1 + adds r2, r3, r4 + ldr r0, _081A9260 + ldr r1, [r0] + movs r0, #0x34 + muls r0, r5, r0 + adds r0, r0, r1 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _081A9200 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + mov sb, r0 +_081A9226: + ldr r3, _081A9264 + ldr r2, _081A9268 + ldr r0, _081A926C + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #8] + subs r0, #1 + adds r0, r0, r3 + ldrb r0, [r0] + str r0, [sp] + movs r6, #0 + mov r3, sb + lsls r3, r3, #2 + mov sb, r3 +_081A9248: + ldr r0, [sp] + cmp r0, #8 + bls _081A9250 + b _081A9360 +_081A9250: + lsls r0, r0, #2 + ldr r1, _081A9270 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A925C: .4byte gUnknown_85DF454 +_081A9260: .4byte gUnknown_203B954 +_081A9264: .4byte gUnknown_85DF710 +_081A9268: .4byte gUnknown_2036FF0 +_081A926C: .4byte gUnknown_3005B50 +_081A9270: .4byte _081A9274 +_081A9274: @ jump table + .4byte _081A9298 @ case 0 + .4byte _081A92A8 @ case 1 + .4byte _081A92EA @ case 2 + .4byte _081A932C @ case 3 + .4byte _081A9332 @ case 4 + .4byte _081A9338 @ case 5 + .4byte _081A933E @ case 6 + .4byte _081A934A @ case 7 + .4byte _081A9356 @ case 8 +_081A9298: + mov r0, sp + movs r1, #8 + movs r2, #0 + bl sub_081A9710 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + b _081A9366 +_081A92A8: + movs r6, #0 + ldr r2, _081A92B4 + mov r4, r8 + adds r4, #4 + mov r5, r8 + b _081A92D8 + .align 2, 0 +_081A92B4: .4byte 0x7FFF0000 +_081A92B8: + ldrb r0, [r5, #1] + cmp r0, #0x3b + bne _081A92D2 + movs r1, #0 + ldrsh r0, [r4, r1] + asrs r1, r2, #0x10 + cmp r0, r1 + beq _081A92D2 + movs r3, #2 + ldrsh r0, [r4, r3] + cmp r0, r1 + beq _081A92D2 + adds r7, #1 +_081A92D2: + adds r4, #0x18 + adds r5, #0x18 + adds r6, #1 +_081A92D8: + str r2, [sp, #4] + bl sub_081AA7B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, [sp, #4] + cmp r6, r0 + blt _081A92B8 + b _081A9366 +_081A92EA: + bl sub_081AA75C + lsls r0, r0, #0x18 + ldr r1, _081A931C + lsrs r0, r0, #0x14 + adds r0, r0, r1 + ldrb r7, [r0, #1] + ldr r0, _081A9320 + ldr r0, [r0] + ldr r1, _081A9324 + adds r0, r0, r1 + ldrb r2, [r0] + ldr r1, _081A9328 + movs r6, #7 +_081A9306: + ldr r0, [r1] + ands r0, r2 + cmp r0, #0 + beq _081A9310 + subs r7, #1 +_081A9310: + adds r1, #4 + subs r6, #1 + cmp r6, #0 + bge _081A9306 + b _081A9366 + .align 2, 0 +_081A931C: .4byte gUnknown_85DEE88 +_081A9320: .4byte gUnknown_3005AF0 +_081A9324: .4byte 0x00000E2A +_081A9328: .4byte gUnknown_82FACB4 +_081A932C: + mov r0, sp + movs r1, #8 + b _081A934E +_081A9332: + mov r0, sp + movs r1, #8 + b _081A9342 +_081A9338: + mov r0, sp + movs r1, #0x10 + b _081A934E +_081A933E: + mov r0, sp + movs r1, #0x10 +_081A9342: + movs r2, #1 + bl sub_081A9710 + b _081A9360 +_081A934A: + mov r0, sp + movs r1, #0x18 +_081A934E: + movs r2, #2 + bl sub_081A9710 + b _081A9360 +_081A9356: + mov r0, sp + movs r1, #0x18 + movs r2, #1 + bl sub_081A9710 +_081A9360: + cmp r6, #0 + bne _081A9366 + b _081A9248 +_081A9366: + ldr r1, _081A938C + add r1, sb + ldr r0, [sp] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08097B74 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A938C: .4byte gUnknown_85DF6F8 + thumb_func_end sub_081A919C + + thumb_func_start sub_081A9390 +sub_081A9390: @ 0x081A9390 + push {r4, r5, lr} + ldr r5, _081A93D0 + ldr r1, [r5] + ldr r2, _081A93D4 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r2, r0, #0x1d + ldr r4, _081A93D8 + adds r1, r1, r4 + adds r1, r1, r2 + ldrh r3, [r1] + ldr r0, _081A93DC + cmp r3, r0 + bhi _081A93B2 + adds r0, r3, #1 + strh r0, [r1] +_081A93B2: + ldr r0, [r5] + adds r1, r0, r4 + adds r1, r1, r2 + ldr r3, _081A93E0 + adds r0, r0, r3 + adds r0, r0, r2 + ldrh r1, [r1] + ldrh r2, [r0] + cmp r1, r2 + bls _081A93C8 + strh r1, [r0] +_081A93C8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081A93D0: .4byte gUnknown_3005AF0 +_081A93D4: .4byte 0x00000CA9 +_081A93D8: .4byte 0x00000E1A +_081A93DC: .4byte 0x000003E6 +_081A93E0: .4byte 0x00000E1E + thumb_func_end sub_081A9390 + + thumb_func_start sub_081A93E4 +sub_081A93E4: @ 0x081A93E4 + push {r4, lr} + ldr r4, _081A93F8 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A93F8: .4byte gUnknown_2037290 + thumb_func_end sub_081A93E4 + + thumb_func_start sub_081A93FC +sub_081A93FC: @ 0x081A93FC + push {r4, lr} + ldr r0, _081A940C + ldrh r0, [r0] + cmp r0, #0 + beq _081A9410 + cmp r0, #1 + beq _081A942C + b _081A94CC + .align 2, 0 +_081A940C: .4byte gUnknown_2037284 +_081A9410: + ldr r0, _081A9420 + ldr r0, [r0] + ldr r1, _081A9424 + ldrh r1, [r1] + ldr r2, _081A9428 + adds r0, r0, r2 + strb r1, [r0] + b _081A94CC + .align 2, 0 +_081A9420: .4byte gUnknown_3005AF0 +_081A9424: .4byte gUnknown_2037282 +_081A9428: .4byte 0x00000E68 +_081A942C: + ldr r4, _081A945C + ldrh r0, [r4] + cmp r0, #1 + beq _081A9488 + cmp r0, #1 + bgt _081A94CC + cmp r0, #0 + bne _081A94CC + ldr r0, _081A9460 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081A94CC + ldr r0, _081A9464 + ldr r0, [r0] + ldr r2, _081A9468 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0x77 + bls _081A946C + movs r0, #0x78 + strb r0, [r1] + b _081A9474 + .align 2, 0 +_081A945C: .4byte gUnknown_2037290 +_081A9460: .4byte gUnknown_2037C74 +_081A9464: .4byte gUnknown_3005AF0 +_081A9468: .4byte 0x00000E68 +_081A946C: + ldr r0, _081A9480 + ldrh r0, [r0] + bl sub_080A306C +_081A9474: + ldr r1, _081A9484 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _081A94CC + .align 2, 0 +_081A9480: .4byte gUnknown_2037286 +_081A9484: .4byte gUnknown_2037290 +_081A9488: + ldr r1, _081A94BC + ldrh r0, [r1] + cmp r0, #0 + beq _081A94C8 + subs r0, #1 + strh r0, [r1] + ldr r3, _081A94C0 + ldr r1, [r3] + ldr r2, _081A94C4 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r3] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0x78 + bls _081A94B6 + movs r0, #0x78 + strb r0, [r1] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081A94B6: + bl sub_080AFA20 + b _081A94CC + .align 2, 0 +_081A94BC: .4byte gUnknown_2037282 +_081A94C0: .4byte gUnknown_3005AF0 +_081A94C4: .4byte 0x00000E68 +_081A94C8: + movs r0, #2 + strh r0, [r4] +_081A94CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A93FC + + thumb_func_start sub_081A94D4 +sub_081A94D4: @ 0x081A94D4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r1, #0 + mov r0, sp + strh r1, [r0] + movs r5, #0 + movs r0, #0x64 + mov sb, r0 + ldr r1, _081A9534 + mov r8, r1 +_081A94EE: + movs r4, #0 + adds r7, r5, #1 + mov r6, sb + muls r6, r5, r6 +_081A94F6: + ldr r0, _081A9538 + ldr r0, [r0] + lsls r1, r4, #1 + ldr r2, _081A953C + adds r0, r0, r2 + adds r1, r0, r1 + ldrh r0, [r1] + cmp r0, #0 + beq _081A951A + subs r0, #1 + cmp r0, r5 + bne _081A951A + mov r1, r8 + adds r0, r6, r1 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_081A951A: + adds r4, #1 + cmp r4, #3 + ble _081A94F6 + adds r5, r7, #0 + cmp r5, #5 + ble _081A94EE + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A9534: .4byte gUnknown_2024190 +_081A9538: .4byte gUnknown_3005AF0 +_081A953C: .4byte 0x00000CAA + thumb_func_end sub_081A94D4 + + thumb_func_start sub_081A9540 +sub_081A9540: @ 0x081A9540 + push {lr} + ldr r0, _081A9550 + movs r1, #0 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081A9550: .4byte sub_081A9554 + thumb_func_end sub_081A9540 + + thumb_func_start sub_081A9554 +sub_081A9554: @ 0x081A9554 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081A958C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081A9584 + ldr r0, _081A9590 + ldr r0, [r0] + ldr r1, _081A9594 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #5 + ldr r1, _081A9598 + adds r0, r0, r1 + ldr r1, _081A959C + movs r2, #0x10 + bl CpuSet + adds r0, r4, #0 + bl sub_080A8964 +_081A9584: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081A958C: .4byte gUnknown_2037C74 +_081A9590: .4byte gUnknown_3005AF0 +_081A9594: .4byte 0x00000CB2 +_081A9598: .4byte gUnknown_8D856AC +_081A959C: .4byte gUnknown_2037474 + thumb_func_end sub_081A9554 + + thumb_func_start sub_081A95A0 +sub_081A95A0: @ 0x081A95A0 + push {lr} + bl sub_0809F6AC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A95A0 + + thumb_func_start sub_081A95AC +sub_081A95AC: @ 0x081A95AC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + movs r0, #0 + str r0, [sp] +_081A95BC: + ldr r0, _081A962C + ldr r0, [r0] + ldr r2, [sp] + lsls r1, r2, #1 + ldr r5, _081A9630 + adds r0, r0, r5 + adds r0, r0, r1 + ldrh r0, [r0] + subs r5, r0, #1 + movs r0, #0 + str r0, [sp, #4] + movs r2, #0x64 + adds r1, r5, #0 + muls r1, r2, r1 + str r1, [sp, #8] + movs r0, #0x8e + lsls r0, r0, #2 + adds r6, r1, r0 + movs r1, #0 + str r1, [sp, #0x10] +_081A95E4: + ldr r2, _081A9634 + ldr r0, [r2] + adds r0, r0, r6 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + ldr r3, _081A9638 + ldr r1, [sp, #0x10] + adds r0, r1, r3 + movs r1, #0xb + movs r2, #0 + str r3, [sp, #0x14] + bl sub_0806A058 + ldr r3, [sp, #0x14] + cmp r4, r0 + bne _081A96B4 + movs r6, #0 + adds r2, r5, #1 + str r2, [sp, #0xc] + movs r1, #0x64 + adds r0, r5, #0 + muls r0, r1, r0 + movs r5, #0x8e + lsls r5, r5, #2 + adds r5, r5, r0 + mov sb, r5 + ldr r7, [sp, #4] + muls r7, r1, r7 + mov sl, r3 +_081A9624: + movs r5, #0 + adds r0, r6, #1 + mov r8, r0 + b _081A963E + .align 2, 0 +_081A962C: .4byte gUnknown_3005AF0 +_081A9630: .4byte 0x00000CAA +_081A9634: .4byte gUnknown_3005AEC +_081A9638: .4byte gUnknown_2024190 +_081A963C: + adds r5, #1 +_081A963E: + cmp r5, #3 + bgt _081A9666 + ldr r1, _081A96A8 + ldr r0, [r1] + add r0, sb + adds r1, r5, #0 + adds r1, #0xd + movs r2, #0 + bl sub_0806A058 + adds r4, r0, #0 + adds r1, r6, #0 + adds r1, #0xd + mov r2, sl + adds r0, r7, r2 + movs r2, #0 + bl sub_0806A058 + cmp r4, r0 + bne _081A963C +_081A9666: + cmp r5, #4 + bne _081A9678 + lsls r2, r6, #0x18 + lsrs r2, r2, #0x18 + mov r5, sl + adds r0, r7, r5 + movs r1, #0xa6 + bl sub_08068D34 +_081A9678: + mov r6, r8 + cmp r6, #3 + ble _081A9624 + ldr r1, _081A96A8 + ldr r0, [r1] + ldr r2, [sp, #8] + adds r0, r0, r2 + movs r5, #0x8e + lsls r5, r5, #2 + adds r0, r0, r5 + ldr r1, _081A96AC + ldr r2, [sp, #0x10] + adds r1, r2, r1 + movs r2, #0x64 + bl memcpy + ldr r0, _081A96B0 + ldr r5, [sp, #4] + adds r0, r5, r0 + mov r1, sp + ldrb r1, [r1, #0xc] + strb r1, [r0] + b _081A96C4 + .align 2, 0 +_081A96A8: .4byte gUnknown_3005AEC +_081A96AC: .4byte gUnknown_2024190 +_081A96B0: .4byte gUnknown_203CBC4 +_081A96B4: + ldr r2, [sp, #0x10] + adds r2, #0x64 + str r2, [sp, #0x10] + ldr r0, [sp, #4] + adds r0, #1 + str r0, [sp, #4] + cmp r0, #2 + ble _081A95E4 +_081A96C4: + ldr r1, [sp] + adds r1, #1 + str r1, [sp] + cmp r1, #2 + bgt _081A96D0 + b _081A95BC +_081A96D0: + movs r2, #0 + str r2, [sp] + ldr r4, _081A9704 + ldr r3, _081A9708 + ldr r2, _081A970C +_081A96DA: + ldr r1, [r4] + ldr r5, [sp] + lsls r0, r5, #1 + adds r1, r1, r3 + adds r1, r1, r0 + adds r0, r5, r2 + ldrb r0, [r0] + strh r0, [r1] + adds r5, #1 + str r5, [sp] + cmp r5, #2 + ble _081A96DA + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A9704: .4byte gUnknown_3005AF0 +_081A9708: .4byte 0x00000CAA +_081A970C: .4byte gUnknown_203CBC4 + thumb_func_end sub_081A95AC + + thumb_func_start sub_081A9710 +sub_081A9710: @ 0x081A9710 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r4, #0 + ldr r0, _081A9798 + ldr r5, [r0, #8] + ldr r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + adds r0, #0xe + adds r5, r5, r0 + movs r3, #0 + ldr r0, _081A979C + mov r8, r0 + ldr r1, _081A97A0 + mov ip, r1 + ldr r0, _081A97A4 + mov sb, r0 +_081A9744: + movs r2, #0 +_081A9746: + lsls r0, r2, #1 + adds r0, r0, r5 + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + cmp r0, ip + bne _081A9802 + adds r2, #7 + ldr r0, _081A97A8 + ldrb r1, [r0] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r5, #0xc + ldrsh r1, [r0, r5] + subs r2, r2, r1 + adds r1, r3, #7 + movs r3, #0xe + ldrsh r0, [r0, r3] + subs r3, r1, r0 + cmp r2, r6 + bge _081A9786 + rsbs r0, r6, #0 + cmp r2, r0 + ble _081A9786 + cmp r3, r6 + bge _081A9786 + cmp r3, r0 + ble _081A9786 + cmp r7, #0 + bne _081A97FC +_081A9786: + cmp r2, #0 + ble _081A97AC + cmp r3, #0 + ble _081A97AC + movs r4, #3 + cmp r2, r3 + blt _081A97F4 + movs r4, #2 + b _081A97F4 + .align 2, 0 +_081A9798: .4byte gUnknown_3005B20 +_081A979C: .4byte 0x000003FF +_081A97A0: .4byte 0x0000028E +_081A97A4: .4byte gUnknown_2036FF0 +_081A97A8: .4byte gUnknown_3005B50 +_081A97AC: + cmp r2, #0 + bge _081A97BE + cmp r3, #0 + bge _081A97BE + movs r4, #1 + cmp r2, r3 + ble _081A97F4 + movs r4, #0 + b _081A97F4 +_081A97BE: + cmp r2, #0 + bne _081A97CC + movs r4, #0 + cmp r3, #0 + ble _081A97F4 + movs r4, #3 + b _081A97F4 +_081A97CC: + cmp r3, #0 + bne _081A97DA + movs r4, #1 + cmp r2, #0 + ble _081A97F4 + movs r4, #2 + b _081A97F4 +_081A97DA: + cmp r2, #0 + bge _081A97EA + adds r0, r2, r3 + movs r4, #1 + cmp r0, #0 + ble _081A97F4 + movs r4, #3 + b _081A97F4 +_081A97EA: + adds r0, r2, r3 + mvns r0, r0 + asrs r4, r0, #0x1f + movs r0, #2 + ands r4, r0 +_081A97F4: + movs r0, #0 + mov r5, sl + str r0, [r5] + b _081A9810 +_081A97FC: + mov r0, sl + str r7, [r0] + b _081A9810 +_081A9802: + adds r2, #1 + cmp r2, #0x1f + ble _081A9746 + adds r5, #0x5e + adds r3, #1 + cmp r3, #0x1f + ble _081A9744 +_081A9810: + adds r0, r4, #0 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081A9710 + + thumb_func_start sub_081A9820 +sub_081A9820: @ 0x081A9820 + lsls r0, r0, #0x18 + ldr r1, _081A9834 + ldr r1, [r1] + lsrs r0, r0, #0x17 + adds r1, r1, r0 + ldr r0, _081A9838 + adds r1, r1, r0 + ldrh r0, [r1] + bx lr + .align 2, 0 +_081A9834: .4byte gUnknown_3005AF0 +_081A9838: .4byte 0x00000CB2 + thumb_func_end sub_081A9820 + + thumb_func_start sub_081A983C +sub_081A983C: @ 0x081A983C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081A986C + ldr r2, [r1] + ldr r1, _081A9870 + adds r2, r2, r1 + ldr r4, _081A9874 + ldr r3, _081A9878 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r0, [r1, #8] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + ands r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081A986C: .4byte gUnknown_3005AF0 +_081A9870: .4byte 0x00000E2A +_081A9874: .4byte gUnknown_82FACB4 +_081A9878: .4byte gUnknown_2036FF0 + thumb_func_end sub_081A983C + + thumb_func_start sub_081A987C +sub_081A987C: @ 0x081A987C + push {lr} + ldr r0, _081A98AC + ldrh r0, [r0] + bl sub_081A98BC + ldr r0, _081A98B0 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _081A98A6 + movs r0, #1 + bl sub_080B3F38 + ldr r1, _081A98B4 + strb r0, [r1] + ldr r0, _081A98B8 + ldrh r0, [r0] + bl sub_081A98BC +_081A98A6: + pop {r0} + bx r0 + .align 2, 0 +_081A98AC: .4byte gUnknown_203886A +_081A98B0: .4byte gUnknown_2022C90 +_081A98B4: .4byte gUnknown_3005B50 +_081A98B8: .4byte gUnknown_203886C + thumb_func_end sub_081A987C + + thumb_func_start sub_081A98BC +sub_081A98BC: @ 0x081A98BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r3, #0 + ldr r0, _081A9958 + mov ip, r0 + ldr r6, _081A995C + ldr r1, _081A9960 + mov sl, r1 + ldr r7, _081A9964 + mov sb, r7 + ldr r0, _081A9968 + mov r8, r0 + ldr r4, _081A996C +_081A98E0: + mov r1, sb + ldr r2, [r1] + lsls r0, r3, #1 + mov r7, r8 + adds r1, r2, r7 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, r5 + bne _081A98FE + ldr r1, _081A9970 + adds r0, r2, r1 + ldr r1, [r4] + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] +_081A98FE: + adds r4, #4 + adds r3, #1 + cmp r3, #7 + ble _081A98E0 + ldrb r1, [r6] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + movs r3, #2 + strb r3, [r0, #6] + mov r7, sl + ldr r2, [r7] + ldr r0, _081A9974 + ldrh r1, [r0] + subs r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r2, r2, r0 + ldr r1, _081A9978 + adds r2, r2, r1 + strb r3, [r2] + ldrb r1, [r6] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x10] + strh r1, [r0, #0xc] + ldrb r1, [r6] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, ip + ldrh r1, [r0, #0x12] + strh r1, [r0, #0xe] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081A9958: .4byte gUnknown_2036FF0 +_081A995C: .4byte gUnknown_3005B50 +_081A9960: .4byte gUnknown_3005AEC +_081A9964: .4byte gUnknown_3005AF0 +_081A9968: .4byte 0x00000CB4 +_081A996C: .4byte gUnknown_82FACB4 +_081A9970: .4byte 0x00000E2A +_081A9974: .4byte gUnknown_2037292 +_081A9978: .4byte 0x00000C79 + thumb_func_end sub_081A98BC + + thumb_func_start sub_081A997C +sub_081A997C: @ 0x081A997C + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r0, _081A99BC + ldr r1, [r0] + ldr r2, _081A99C0 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r5, r0, #0x1e + lsls r0, r5, #1 + ldr r2, _081A99C4 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x14 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x13 + bls _081A99B2 + movs r0, #0x13 +_081A99B2: + cmp r5, #0 + beq _081A99CC + ldr r1, _081A99C8 + b _081A99CE + .align 2, 0 +_081A99BC: .4byte gUnknown_3005AF0 +_081A99C0: .4byte 0x00000CA9 +_081A99C4: .4byte 0x00000E1A +_081A99C8: .4byte gUnknown_85DEE38 +_081A99CC: + ldr r1, _081A9A44 +_081A99CE: + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + ldr r4, _081A9A48 + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + subs r0, #1 + str r0, [sp, #0x10] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r6, r2 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A774 + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r0] + mov r0, sp + bl sub_0806B3DC + adds r0, r4, #0 + movs r1, #2 + mov r2, sp + bl sub_0806A774 + cmp r5, #0 + beq _081A9A4C + bl sub_08165A4C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #2] + subs r5, r5, r0 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xb + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #5 + adds r5, r5, r0 + b _081A9A6E + .align 2, 0 +_081A9A44: .4byte gUnknown_85DE668 +_081A9A48: .4byte gUnknown_20243E8 +_081A9A4C: + bl sub_0806F050 + ldr r2, [sp, #0x10] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r6 + ldrb r4, [r1, #2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xb + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #5 + adds r5, r4, r0 +_081A9A6E: + ldr r4, _081A9AB8 + ldr r2, _081A9ABC + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + adds r2, r1, #0 + muls r2, r0, r2 + lsls r0, r5, #2 + ldr r1, _081A9AC0 + adds r0, r0, r1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A774 + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r1, [r0, #3] + cmp r1, #0 + blt _081A9AC4 + cmp r1, #1 + bgt _081A9AC4 + adds r2, r0, #3 + b _081A9AF4 + .align 2, 0 +_081A9AB8: .4byte gUnknown_20243E8 +_081A9ABC: .4byte gUnknown_82F0D54 +_081A9AC0: .4byte gUnknown_82F00B4 +_081A9AC4: + ldr r2, _081A9B00 + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrh r1, [r0] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #0x17] + cmp r0, #0 + beq _081A9B08 + ldr r4, _081A9B04 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806A058 + movs r1, #1 + ands r1, r0 + str r1, [sp, #0xc] + add r2, sp, #0xc +_081A9AF4: + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A774 + b _081A9B14 + .align 2, 0 +_081A9B00: .4byte gUnknown_82F0D54 +_081A9B04: .4byte gUnknown_20243E8 +_081A9B08: + str r0, [sp, #0xc] + ldr r0, _081A9B94 + add r2, sp, #0xc + movs r1, #0x2e + bl sub_0806A774 +_081A9B14: + movs r0, #0 + str r0, [sp, #0xc] + movs r2, #0 + lsls r4, r5, #1 +_081A9B1C: + ldr r1, [sp, #0x10] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + lsls r1, r2, #1 + adds r0, #4 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081A9B94 + bl sub_08068D34 + ldr r0, [sp, #0xc] + adds r0, #1 + str r0, [sp, #0xc] + adds r2, r0, #0 + cmp r2, #3 + ble _081A9B1C + ldr r0, _081A9B98 + ldr r0, [r0] + ldr r1, _081A9B9C + adds r0, r0, r1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0x8b + bls _081A9B84 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x11 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r0, #0xf + str r0, [sp, #0x10] + movs r0, #0 + str r0, [sp, #0xc] +_081A9B6E: + adds r1, r0, #0 + adds r1, #0x27 + ldr r0, _081A9B94 + add r2, sp, #0x10 + bl sub_0806A774 + ldr r0, [sp, #0xc] + adds r0, #1 + str r0, [sp, #0xc] + cmp r0, #5 + ble _081A9B6E +_081A9B84: + ldr r0, _081A9B94 + bl sub_0806884C + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081A9B94: .4byte gUnknown_20243E8 +_081A9B98: .4byte gUnknown_3005AF0 +_081A9B9C: .4byte 0x00000E1A + thumb_func_end sub_081A997C + + thumb_func_start sub_081A9BA0 +sub_081A9BA0: @ 0x081A9BA0 + push {lr} + bl sub_081AA75C + lsls r0, r0, #0x18 + ldr r1, _081A9BB4 + lsrs r0, r0, #0x14 + adds r0, r0, r1 + ldrb r0, [r0, #4] + pop {r1} + bx r1 + .align 2, 0 +_081A9BB4: .4byte gUnknown_85DEE88 + thumb_func_end sub_081A9BA0 + + thumb_func_start sub_081A9BB8 +sub_081A9BB8: @ 0x081A9BB8 + push {lr} + ldr r0, _081A9BC8 + ldrh r1, [r0, #0x12] + ldr r0, _081A9BCC + cmp r1, r0 + bne _081A9BD0 + movs r0, #1 + b _081A9BDE + .align 2, 0 +_081A9BC8: .4byte gUnknown_2036FB8 +_081A9BCC: .4byte 0x00000169 +_081A9BD0: + movs r0, #0xbd + lsls r0, r0, #1 + cmp r1, r0 + beq _081A9BDC + movs r0, #0 + b _081A9BDE +_081A9BDC: + movs r0, #2 +_081A9BDE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081A9BB8 + + thumb_func_start sub_081A9BE4 +sub_081A9BE4: @ 0x081A9BE4 + push {lr} + movs r2, #0 + ldr r0, _081A9C00 + ldrh r1, [r0, #0x12] + ldr r0, _081A9C04 + cmp r1, r0 + beq _081A9BF8 + adds r0, #0x11 + cmp r1, r0 + bne _081A9BFA +_081A9BF8: + movs r2, #1 +_081A9BFA: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_081A9C00: .4byte gUnknown_2036FB8 +_081A9C04: .4byte 0x00000169 + thumb_func_end sub_081A9BE4 + + thumb_func_start sub_081A9C08 +sub_081A9C08: @ 0x081A9C08 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A9C30 + bl sub_081A95AC + ldr r0, _081A9C34 + ldr r0, [r0] + ldr r1, _081A9C38 + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r0, _081A9C3C + movs r1, #0 + bl sub_0809CF88 + bl sub_080767DC +_081A9C30: + pop {r0} + bx r0 + .align 2, 0 +_081A9C34: .4byte gUnknown_3005AF0 +_081A9C38: .4byte 0x00000CA8 +_081A9C3C: .4byte 0x0000400E + thumb_func_end sub_081A9C08 + + thumb_func_start sub_081A9C40 +sub_081A9C40: @ 0x081A9C40 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081A9C50 + bl sub_080008F4 +_081A9C50: + pop {r0} + bx r0 + thumb_func_end sub_081A9C40 + + thumb_func_start sub_081A9C54 +sub_081A9C54: @ 0x081A9C54 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _081A9C70 + movs r1, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC + pop {r0} + bx r0 + .align 2, 0 +_081A9C70: .4byte gUnknown_203B954 + thumb_func_end sub_081A9C54 + + thumb_func_start sub_081A9C74 +sub_081A9C74: @ 0x081A9C74 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _081A9C90 + movs r1, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0x18 + bl sub_081637CC + pop {r0} + bx r0 + .align 2, 0 +_081A9C90: .4byte gUnknown_203B954 + thumb_func_end sub_081A9C74 + + thumb_func_start sub_081A9C94 +sub_081A9C94: @ 0x081A9C94 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _081A9CB0 + movs r1, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0x24 + bl sub_081637CC + pop {r0} + bx r0 + .align 2, 0 +_081A9CB0: .4byte gUnknown_203B954 + thumb_func_end sub_081A9C94 + + thumb_func_start sub_081A9CB4 +sub_081A9CB4: @ 0x081A9CB4 + push {r4, lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r4, #0 + ldr r3, _081A9CDC + ldr r1, _081A9CE0 + ldr r2, [r1] + movs r1, #0x34 + muls r0, r1, r0 + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, r0, r3 + ldrb r2, [r0] + ldr r1, _081A9CE4 +_081A9CD0: + ldrb r0, [r1] + cmp r0, r2 + bne _081A9CE8 + ldrb r0, [r1, #1] + b _081A9CF2 + .align 2, 0 +_081A9CDC: .4byte gUnknown_82EFF52 +_081A9CE0: .4byte gUnknown_203B954 +_081A9CE4: .4byte gUnknown_85DF37C +_081A9CE8: + adds r1, #4 + adds r4, #1 + cmp r4, #0x35 + bls _081A9CD0 + movs r0, #0 +_081A9CF2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081A9CB4 + + thumb_func_start sub_081A9CF8 +sub_081A9CF8: @ 0x081A9CF8 + push {lr} + ldr r0, _081A9D04 + bl sub_08098880 + pop {r0} + bx r0 + .align 2, 0 +_081A9D04: .4byte gUnknown_822D751 + thumb_func_end sub_081A9CF8 + + thumb_func_start sub_081A9D08 +sub_081A9D08: @ 0x081A9D08 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081A9D84 + ldr r4, [r0] + ldr r1, _081A9D88 + adds r0, r4, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1d + ldr r2, _081A9D8C + adds r0, r4, r2 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081A9D90 + adds r4, r4, r1 + ldrh r1, [r4] + cmp r1, #7 + bne _081A9D98 + adds r0, #1 + lsls r7, r0, #0x18 + lsls r1, r1, #0x18 + mov r8, r1 +_081A9D44: + lsrs r0, r7, #0x18 + mov r2, r8 + lsrs r1, r2, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r5 + bge _081A9D7C + ldr r1, _081A9D84 + ldr r0, [r1] + ldr r4, _081A9D94 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, r3 + beq _081A9D7C + adds r6, r1, #0 +_081A9D68: + adds r2, #1 + cmp r2, r5 + bge _081A9D7C + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _081A9D68 +_081A9D7C: + cmp r2, r5 + bne _081A9D44 + b _081A9DDA + .align 2, 0 +_081A9D84: .4byte gUnknown_3005AF0 +_081A9D88: .4byte 0x00000CA9 +_081A9D8C: .4byte 0x00000E1A +_081A9D90: .4byte 0x00000CB2 +_081A9D94: .4byte 0x00000CB4 +_081A9D98: + lsls r1, r1, #0x18 + mov r8, r1 + lsls r7, r0, #0x18 +_081A9D9E: + lsrs r0, r7, #0x18 + mov r2, r8 + lsrs r1, r2, #0x18 + bl sub_0816245C + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r2, #0 + cmp r2, r5 + bge _081A9DD6 + ldr r1, _081A9DE8 + ldr r0, [r1] + ldr r4, _081A9DEC + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, r3 + beq _081A9DD6 + adds r6, r1, #0 +_081A9DC2: + adds r2, #1 + cmp r2, r5 + bge _081A9DD6 + ldr r0, [r6] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bne _081A9DC2 +_081A9DD6: + cmp r2, r5 + bne _081A9D9E +_081A9DDA: + adds r0, r3, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081A9DE8: .4byte gUnknown_3005AF0 +_081A9DEC: .4byte 0x00000CB4 + thumb_func_end sub_081A9D08 + + thumb_func_start sub_081A9DF0 +sub_081A9DF0: @ 0x081A9DF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x1c + str r0, [sp, #4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #8] + movs r0, #0x10 + bl sub_08000BDC + str r0, [sp, #0xc] + bl sub_081AA6E4 + mov r4, sp + adds r4, #1 + mov r0, sp + adds r1, r4, #0 + bl sub_081AA0B4 + movs r7, #0 +_081A9E1E: + ldr r1, [sp, #0xc] + adds r0, r1, r7 + ldrb r0, [r0] + ldr r2, _081A9EF0 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _081A9EF4 + adds r0, r0, r1 + ldr r6, [r0] + ldr r2, [r6, #0xc] + mov sl, r2 + ldr r0, [sp, #4] + ldr r1, _081A9EF8 + str r0, [r1, #8] + ldr r0, [r6] + lsls r0, r0, #2 + adds r2, r0, #0 + adds r2, #0xf + str r2, [r1] + ldr r0, [r6, #4] + lsls r0, r0, #2 + adds r0, #0xe + str r0, [r1, #4] + ldr r0, [sp, #4] + mov sb, r0 + adds r1, r7, #0 + cmp r7, #0 + bge _081A9E58 + adds r1, r7, #3 +_081A9E58: + asrs r1, r1, #2 + ldr r4, [r6, #4] + adds r0, r1, #0 + muls r0, r4, r0 + adds r0, #7 + muls r2, r0, r2 + lsls r1, r1, #2 + subs r1, r7, r1 + ldr r3, [r6] + adds r0, r1, #0 + muls r0, r3, r0 + adds r0, #7 + adds r2, r2, r0 + lsls r2, r2, #1 + add sb, r2 + movs r1, #0 + mov r8, r1 + adds r2, r7, #1 + str r2, [sp, #0x10] + cmp r8, r4 + bge _081A9F2E +_081A9E82: + movs r0, #0 + mov ip, r0 + mov r1, r8 + adds r1, #1 + str r1, [sp, #0x14] + cmp ip, r3 + bge _081A9F1A + ldr r2, _081A9EFC + str r2, [sp, #0x18] + mov r4, sb + mov r5, sl +_081A9E98: + ldrh r1, [r5] + ldr r0, _081A9F00 + ands r0, r1 + ldr r2, _081A9F04 + cmp r0, r2 + bne _081A9F0C + mov r0, sp + ldrb r0, [r0, #1] + cmp r7, r0 + beq _081A9F0C + mov r0, sp + ldrb r0, [r0] + cmp r7, r0 + bne _081A9EDC + ldr r1, [sp, #8] + cmp r1, #0 + bne _081A9EDC + ldr r2, [sp, #0x18] + ldr r3, [r2] + adds r2, r7, #0 + cmp r7, #0 + bge _081A9EC6 + adds r2, r7, #3 +_081A9EC6: + asrs r2, r2, #2 + lsls r1, r2, #2 + subs r1, r7, r1 + ldr r0, [r6] + muls r0, r1, r0 + add r0, ip + strh r0, [r3] + ldr r0, [r6, #4] + muls r0, r2, r0 + add r0, r8 + strh r0, [r3, #2] +_081A9EDC: + ldrh r0, [r5] + movs r1, #0xfc + lsls r1, r1, #8 + ands r1, r0 + ldr r2, _081A9F08 + adds r0, r2, #0 + orrs r1, r0 + strh r1, [r4] + ldr r3, [r6] + b _081A9F0E + .align 2, 0 +_081A9EF0: .4byte 0x00000169 +_081A9EF4: .4byte gUnknown_845A1F4 +_081A9EF8: .4byte gUnknown_3005B20 +_081A9EFC: .4byte gUnknown_3005AEC +_081A9F00: .4byte 0x000003FF +_081A9F04: .4byte 0x0000028E +_081A9F08: .4byte 0x0000028D +_081A9F0C: + strh r1, [r4] +_081A9F0E: + adds r4, #2 + adds r5, #2 + movs r0, #1 + add ip, r0 + cmp ip, r3 + blt _081A9E98 +_081A9F1A: + lsls r0, r3, #3 + adds r0, #0x1e + add sb, r0 + lsls r0, r3, #1 + add sl, r0 + ldr r1, [sp, #0x14] + mov r8, r1 + ldr r0, [r6, #4] + cmp r8, r0 + blt _081A9E82 +_081A9F2E: + ldr r7, [sp, #0x10] + cmp r7, #0xf + bgt _081A9F36 + b _081A9E1E +_081A9F36: + bl sub_080989C8 + ldr r0, [sp, #0xc] + bl sub_08000BF0 + add sp, #0x1c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081A9DF0 + + thumb_func_start sub_081A9F50 +sub_081A9F50: @ 0x081A9F50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + movs r5, #0 + mov r6, sp + adds r6, #1 + add r0, sp, #4 + mov r8, r0 + ldr r4, _081A9FB4 + ldr r3, _081A9FB8 + ldr r0, _081A9FBC + adds r2, r0, #0 +_081A9F6A: + ldr r0, [r4] + lsls r1, r5, #1 + adds r0, r0, r3 + adds r0, r0, r1 + ldrh r1, [r0] + orrs r1, r2 + strh r1, [r0] + adds r5, #1 + cmp r5, #7 + ble _081A9F6A + bl sub_081AA75C + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r0, sp + adds r1, r6, #0 + bl sub_081AA0B4 + movs r0, #0 + str r0, [sp, #4] + ldr r0, _081A9FC0 + ldr r1, [r0] + movs r0, #0xc7 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r2, _081A9FC4 + mov r0, r8 + bl CpuSet + movs r5, #0 +_081A9FA6: + cmp r5, #0 + bne _081A9FCC + ldr r1, _081A9FC8 + lsls r0, r7, #4 + adds r0, r0, r1 + ldrb r0, [r0, #3] + b _081A9FD4 + .align 2, 0 +_081A9FB4: .4byte gUnknown_3005AF0 +_081A9FB8: .4byte 0x00000CB4 +_081A9FBC: .4byte 0x0000FFFF +_081A9FC0: .4byte gUnknown_3005AEC +_081A9FC4: .4byte 0x05000180 +_081A9FC8: .4byte gUnknown_85DEE88 +_081A9FCC: + ldr r1, _081A9FE4 + lsls r0, r7, #4 + adds r0, r0, r1 + ldrb r0, [r0, #2] +_081A9FD4: + cmp r0, #4 + bhi _081AA05C + lsls r0, r0, #2 + ldr r1, _081A9FE8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081A9FE4: .4byte gUnknown_85DEE88 +_081A9FE8: .4byte _081A9FEC +_081A9FEC: @ jump table + .4byte _081AA000 @ case 0 + .4byte _081AA00A @ case 1 + .4byte _081AA01A @ case 2 + .4byte _081AA028 @ case 3 + .4byte _081AA044 @ case 4 +_081AA000: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AA110 + b _081AA05C +_081AA00A: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + mov r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_081AA250 + b _081AA036 +_081AA01A: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_081AA250 + b _081AA036 +_081AA028: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + mov r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_081AA3C0 +_081AA036: + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA05C + adds r0, r4, #0 + bl sub_081AA110 + b _081AA05C +_081AA044: + lsls r0, r5, #0x18 + lsrs r4, r0, #0x18 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_081AA3C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA05C + adds r0, r4, #0 + bl sub_081AA110 +_081AA05C: + adds r5, #1 + cmp r5, #1 + ble _081A9FA6 + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081A9F50 + + thumb_func_start sub_081AA070 +sub_081AA070: @ 0x081AA070 + push {r4, r5, lr} + ldr r0, _081AA094 + ldr r0, [r0] + ldr r5, _081AA098 + ldr r4, _081AA09C + movs r2, #0xc8 + lsls r2, r2, #4 + adds r1, r0, r2 + movs r3, #0xc7 + lsls r3, r3, #4 + adds r2, r0, r3 + movs r3, #0x3f +_081AA088: + ldrb r0, [r2, #1] + cmp r0, #0x3b + beq _081AA0A0 + str r5, [r1] + b _081AA0A2 + .align 2, 0 +_081AA094: .4byte gUnknown_3005AEC +_081AA098: .4byte gUnknown_822D718 +_081AA09C: .4byte gUnknown_822D733 +_081AA0A0: + str r4, [r1] +_081AA0A2: + adds r1, #0x18 + adds r2, #0x18 + subs r3, #1 + cmp r3, #0 + bge _081AA088 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AA070 + + thumb_func_start sub_081AA0B4 +sub_081AA0B4: @ 0x081AA0B4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _081AA104 + ldr r1, [r5] + ldr r2, _081AA108 + adds r0, r1, r2 + ldrh r2, [r0] + movs r3, #0xf + ands r2, r3 + strb r2, [r4] + ldr r7, _081AA10C + adds r1, r1, r7 + ldrh r0, [r1] + ands r0, r3 + strb r0, [r6] + cmp r2, r0 + bne _081AA0FE + ldr r1, [r5] + ldr r2, _081AA108 + adds r0, r1, r2 + ldrh r2, [r0] + adds r3, r2, #1 + adds r0, r3, #0 + asrs r0, r0, #4 + lsls r0, r0, #4 + subs r0, r3, r0 + strb r0, [r4] + adds r0, r1, r7 + ldrh r1, [r0] + adds r2, r1, #0 + adds r2, #0xf + adds r0, r2, #0 + asrs r0, r0, #4 + lsls r0, r0, #4 + subs r0, r2, r0 + strb r0, [r6] +_081AA0FE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AA104: .4byte gUnknown_3005AF0 +_081AA108: .4byte 0x00000E28 +_081AA10C: .4byte 0x00000E22 + thumb_func_end sub_081AA0B4 + + thumb_func_start sub_081AA110 +sub_081AA110: @ 0x081AA110 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r5, #0 + bl sub_081AA75C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0x10 + bl sub_08000BDC + str r0, [sp, #8] + bl sub_081AA6E4 + ldr r0, _081AA15C + ldr r0, [r0] + ldr r1, _081AA160 + adds r0, r0, r1 + ldrh r4, [r0] + movs r0, #0xf + ands r4, r0 + ldr r0, [sp] + cmp r0, #0 + bne _081AA168 + ldr r1, _081AA164 + lsls r0, r6, #4 + adds r0, r0, r1 + ldrb r0, [r0, #1] + mov sl, r0 + movs r1, #0 + str r1, [sp, #4] + b _081AA176 + .align 2, 0 +_081AA15C: .4byte gUnknown_3005AF0 +_081AA160: .4byte 0x00000E26 +_081AA164: .4byte gUnknown_85DEE88 +_081AA168: + ldr r1, _081AA188 + lsls r0, r6, #4 + adds r0, r0, r1 + ldrb r1, [r0] + mov sl, r1 + ldrb r0, [r0, #1] + str r0, [sp, #4] +_081AA176: + movs r0, #0 + mov r8, r0 + cmp r8, sl + bge _081AA238 +_081AA17E: + movs r1, #1 + add r1, r8 + mov sb, r1 + b _081AA1A6 + .align 2, 0 +_081AA188: .4byte gUnknown_85DEE88 +_081AA18C: + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + ldr r3, [sp, #4] + add r3, r8 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, [sp] + ldr r1, [sp, #8] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA22E +_081AA1A6: + ldr r0, _081AA1D0 + mov ip, r0 + ldr r6, _081AA1D4 + ldr r7, _081AA1D8 + movs r3, #2 + lsls r0, r4, #2 + mov r1, ip + adds r2, r0, r1 +_081AA1B6: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _081AA1DC + ldr r0, [r6] + adds r0, r0, r7 + ldrh r1, [r0] + ldr r0, [r2] + ands r0, r1 + cmp r0, #0 + bne _081AA1EC + b _081AA1EA + .align 2, 0 +_081AA1D0: .4byte gUnknown_82FACB4 +_081AA1D4: .4byte gUnknown_3005AF0 +_081AA1D8: .4byte 0x00000E28 +_081AA1DC: + ldr r0, [r6] + adds r0, r0, r7 + ldrh r1, [r0] + ldr r0, [r2] + ands r0, r1 + cmp r0, #0 + beq _081AA1EC +_081AA1EA: + orrs r5, r3 +_081AA1EC: + adds r2, #4 + adds r4, #1 + cmp r4, #0xf + ble _081AA1F8 + mov r2, ip + movs r4, #0 +_081AA1F8: + ldr r0, [r6] + ldr r1, _081AA218 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0xf + ands r1, r0 + cmp r4, r1 + bne _081AA21E + movs r1, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081AA21C + movs r0, #6 + orrs r5, r0 + b _081AA21E + .align 2, 0 +_081AA218: .4byte 0x00000E26 +_081AA21C: + orrs r5, r1 +_081AA21E: + adds r0, r5, #0 + ands r0, r3 + cmp r0, #0 + beq _081AA1B6 + movs r0, #4 + ands r0, r5 + cmp r0, #0 + beq _081AA18C +_081AA22E: + movs r0, #1 + ands r5, r0 + mov r8, sb + cmp r8, sl + blt _081AA17E +_081AA238: + ldr r0, [sp, #8] + bl sub_08000BF0 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AA110 + + thumb_func_start sub_081AA250 +sub_081AA250: @ 0x081AA250 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + movs r6, #0 + movs r7, #0 + movs r0, #0 + str r0, [sp, #0xc] + bl sub_081AA75C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x10 + bl sub_08000BDC + str r0, [sp, #0x14] + bl sub_081AA6E4 + ldr r1, [sp] + cmp r1, #0 + bne _081AA29C + ldr r1, _081AA298 + lsls r0, r4, #4 + adds r0, r0, r1 + ldrb r0, [r0, #1] + str r0, [sp, #0x10] + movs r0, #0 + b _081AA2A8 + .align 2, 0 +_081AA298: .4byte gUnknown_85DEE88 +_081AA29C: + ldr r1, _081AA2DC + lsls r0, r4, #4 + adds r0, r0, r1 + ldrb r2, [r0] + str r2, [sp, #0x10] + ldrb r0, [r0, #1] +_081AA2A8: + movs r3, #0 + str r3, [sp, #8] + ldr r1, [sp, #0x10] + asrs r1, r1, #0x1f + str r1, [sp, #0x18] + ldr r2, [sp, #0x10] + cmp r3, r2 + bge _081AA39A + str r0, [sp, #0x1c] + adds r3, r0, #0 + lsls r3, r3, #0x18 + mov sb, r3 +_081AA2C0: + cmp r7, #0 + bne _081AA2E6 + mov r0, sb + lsrs r3, r0, #0x18 + ldr r0, [sp] + ldr r1, [sp, #0x14] + ldr r2, [sp, #4] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA2E0 + movs r7, #1 + b _081AA2E6 + .align 2, 0 +_081AA2DC: .4byte gUnknown_85DEE88 +_081AA2E0: + ldr r1, [sp, #0xc] + adds r1, #1 + str r1, [sp, #0xc] +_081AA2E6: + movs r0, #1 + ands r0, r7 + cmp r0, #0 + beq _081AA378 + ldr r2, _081AA31C + mov r8, r2 + ldr r3, [sp, #4] + lsls r4, r3, #2 + adds r0, r6, r4 + add r0, r8 + ldrb r2, [r0] + mov r0, sb + lsrs r3, r0, #0x18 + ldr r0, [sp] + ldr r1, [sp, #0x14] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + ldr r1, [sp, #0x1c] + mov sl, r1 + adds r5, r4, #0 + cmp r0, #0 + beq _081AA360 + ldr r4, [sp, #0xc] + adds r4, #1 + b _081AA33A + .align 2, 0 +_081AA31C: .4byte gUnknown_85DF77E +_081AA320: + adds r0, r6, r5 + adds r0, r0, r2 + ldrb r2, [r0] + mov r0, sl + lsls r3, r0, #0x18 + lsrs r3, r3, #0x18 + ldr r0, [sp] + ldr r1, [sp, #0x14] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA358 +_081AA33A: + adds r6, #1 + ldr r0, _081AA35C + adds r1, r6, r5 + adds r1, r1, r0 + ldrb r1, [r1] + adds r2, r0, #0 + cmp r1, #0xff + beq _081AA34E + cmp r6, #3 + ble _081AA350 +_081AA34E: + movs r6, #0 +_081AA350: + adds r7, #2 + asrs r0, r7, #1 + cmp r0, #4 + bne _081AA320 +_081AA358: + str r4, [sp, #0xc] + b _081AA378 + .align 2, 0 +_081AA35C: .4byte gUnknown_85DF77E +_081AA360: + adds r6, #1 + adds r0, r6, r4 + add r0, r8 + ldrb r0, [r0] + cmp r0, #0xff + beq _081AA370 + cmp r6, #3 + ble _081AA372 +_081AA370: + movs r6, #0 +_081AA372: + ldr r1, [sp, #0xc] + adds r1, #1 + str r1, [sp, #0xc] +_081AA378: + asrs r0, r7, #1 + cmp r0, #4 + beq _081AA39A + movs r0, #1 + ands r7, r0 + ldr r2, [sp, #0x1c] + adds r2, #1 + str r2, [sp, #0x1c] + movs r3, #0x80 + lsls r3, r3, #0x11 + add sb, r3 + ldr r0, [sp, #8] + adds r0, #1 + str r0, [sp, #8] + ldr r1, [sp, #0x10] + cmp r0, r1 + blt _081AA2C0 +_081AA39A: + movs r1, #0 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x18] + subs r0, r2, r3 + asrs r0, r0, #1 + ldr r2, [sp, #0xc] + cmp r0, r2 + ble _081AA3AC + movs r1, #1 +_081AA3AC: + adds r0, r1, #0 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AA250 + + thumb_func_start sub_081AA3C0 +sub_081AA3C0: @ 0x081AA3C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r4, #0 + movs r7, #0 + movs r0, #0 + mov r8, r0 + bl sub_081AA75C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0x10 + bl sub_08000BDC + str r0, [sp, #8] + bl sub_081AA6E4 + ldr r1, [sp] + cmp r1, #0 + bne _081AA40C + ldr r1, _081AA408 + lsls r0, r5, #4 + adds r0, r0, r1 + ldrb r0, [r0, #1] + mov sl, r0 + movs r0, #0 + b _081AA418 + .align 2, 0 +_081AA408: .4byte gUnknown_85DEE88 +_081AA40C: + ldr r1, _081AA448 + lsls r0, r5, #4 + adds r0, r0, r1 + ldrb r2, [r0] + mov sl, r2 + ldrb r0, [r0, #1] +_081AA418: + movs r3, #0 + str r3, [sp, #4] + mov r1, sl + asrs r1, r1, #0x1f + str r1, [sp, #0xc] + cmp r3, sl + bge _081AA4B6 + ldr r2, _081AA44C + mov sb, r2 + lsls r5, r6, #2 + lsls r6, r0, #0x18 +_081AA42E: + adds r0, r4, r5 + add r0, sb + ldrb r2, [r0] + lsrs r3, r6, #0x18 + ldr r0, [sp] + ldr r1, [sp, #8] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA48C + adds r7, #1 + b _081AA466 + .align 2, 0 +_081AA448: .4byte gUnknown_85DEE88 +_081AA44C: .4byte gUnknown_85DF77E +_081AA450: + adds r0, r4, r5 + adds r0, r0, r1 + ldrb r2, [r0] + lsrs r3, r6, #0x18 + ldr r0, [sp] + ldr r1, [sp, #8] + bl sub_081AA4D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA4A0 +_081AA466: + adds r4, #1 + adds r0, r4, r5 + add r0, sb + ldrb r0, [r0] + ldr r1, _081AA488 + cmp r0, #0xff + beq _081AA478 + cmp r4, #3 + ble _081AA47A +_081AA478: + movs r4, #0 +_081AA47A: + movs r3, #1 + add r8, r3 + mov r0, r8 + cmp r0, #4 + bne _081AA450 + b _081AA4A0 + .align 2, 0 +_081AA488: .4byte gUnknown_85DF77E +_081AA48C: + adds r4, #1 + adds r0, r4, r5 + add r0, sb + ldrb r0, [r0] + cmp r0, #0xff + beq _081AA49C + cmp r4, #3 + ble _081AA49E +_081AA49C: + movs r4, #0 +_081AA49E: + adds r7, #1 +_081AA4A0: + mov r1, r8 + cmp r1, #4 + beq _081AA4B6 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r6, r6, r2 + ldr r3, [sp, #4] + adds r3, #1 + str r3, [sp, #4] + cmp r3, sl + blt _081AA42E +_081AA4B6: + movs r1, #0 + mov r2, sl + ldr r3, [sp, #0xc] + subs r0, r2, r3 + asrs r0, r0, #1 + cmp r0, r7 + ble _081AA4C6 + movs r1, #1 +_081AA4C6: + adds r0, r1, #0 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081AA3C0 + + thumb_func_start sub_081AA4D8 +sub_081AA4D8: @ 0x081AA4D8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sl, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + ldr r0, _081AA53C + ldr r0, [r0] + ldr r1, _081AA540 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AA548 + movs r6, #7 +_081AA50A: + movs r4, #7 + lsls r5, r6, #0x18 +_081AA50E: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + str r0, [sp] + str r7, [sp, #4] + mov r0, sb + lsrs r2, r5, #0x18 + mov r3, sl + bl sub_081AA588 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA544 + subs r4, #1 + cmp r4, #0 + bge _081AA50E + subs r6, #1 + movs r1, #1 + rsbs r1, r1, #0 + cmp r6, r1 + bgt _081AA50A + b _081AA574 + .align 2, 0 +_081AA53C: .4byte gUnknown_3005AF0 +_081AA540: .4byte 0x00000E22 +_081AA544: + movs r0, #0 + b _081AA576 +_081AA548: + movs r6, #0 +_081AA54A: + movs r4, #0 + lsls r5, r6, #0x18 +_081AA54E: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + str r0, [sp] + str r7, [sp, #4] + mov r0, sb + lsrs r2, r5, #0x18 + mov r3, sl + bl sub_081AA588 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AA544 + adds r4, #1 + cmp r4, #7 + ble _081AA54E + adds r6, #1 + cmp r6, #7 + ble _081AA54A +_081AA574: + movs r0, #1 +_081AA576: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AA4D8 + + thumb_func_start sub_081AA588 +sub_081AA588: @ 0x081AA588 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + ldr r4, [sp, #0x34] + ldr r5, [sp, #0x38] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov sl, r4 + lsls r5, r5, #0x18 + lsrs r6, r5, #0x18 + ldr r0, _081AA6BC + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r1, r0, r1 + str r1, [sp, #8] + add r3, sl + ldrb r1, [r3] + adds r1, #0x2c + movs r0, #0x19 + bl sub_080843F8 + adds r5, r0, #0 + movs r7, #0 + ldr r1, [r5, #4] + ldrb r2, [r1] + cmp r7, r2 + bge _081AA6D2 + movs r0, #3 + ands r0, r4 + lsls r0, r0, #3 + str r0, [sp, #0xc] +_081AA5E0: + ldr r1, [r1, #4] + lsls r2, r7, #1 + adds r0, r2, r7 + lsls r0, r0, #3 + adds r3, r0, r1 + movs r4, #4 + ldrsh r0, [r3, r4] + ldr r1, [r5, #4] + mov ip, r1 + mov sb, r2 + ldr r2, [sp, #4] + cmp r0, r2 + bne _081AA6C8 + movs r4, #6 + ldrsh r0, [r3, r4] + cmp r0, r8 + bne _081AA6C8 + ldr r0, [sp] + cmp r0, #0 + bne _081AA60E + ldrb r0, [r3, #1] + cmp r0, #0x3b + bne _081AA61A +_081AA60E: + ldr r1, [sp] + cmp r1, #1 + bne _081AA6C8 + ldrb r0, [r3, #1] + cmp r0, #0x3b + bne _081AA6C8 +_081AA61A: + movs r3, #0 + ldr r2, [r5, #4] + mov ip, r2 + cmp r3, r6 + bge _081AA654 + ldr r4, [sp, #4] + ldr r0, [sp, #0xc] + adds r4, r4, r0 + str r4, [sp, #0x10] + mov r1, sl + lsrs r0, r1, #2 + lsls r0, r0, #3 + mov r2, r8 + adds r1, r2, r0 + ldr r2, [sp, #8] + adds r2, #4 +_081AA63A: + movs r4, #0 + ldrsh r0, [r2, r4] + ldr r4, [sp, #0x10] + cmp r0, r4 + bne _081AA64C + movs r4, #2 + ldrsh r0, [r2, r4] + cmp r0, r1 + beq _081AA654 +_081AA64C: + adds r2, #0x18 + adds r3, #1 + cmp r3, r6 + blt _081AA63A +_081AA654: + cmp r3, r6 + bne _081AA6C8 + lsls r0, r6, #1 + mov r8, r0 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, [sp, #8] + adds r5, r0, r1 + mov r3, ip + ldr r2, [r3, #4] + mov r4, sb + adds r1, r4, r7 + lsls r1, r1, #3 + adds r0, r5, #0 + adds r1, r1, r2 + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldm r1!, {r2, r3, r4} + stm r0!, {r2, r3, r4} + ldrh r0, [r5, #4] + ldr r1, [sp, #0xc] + adds r0, r0, r1 + strh r0, [r5, #4] + mov r2, sl + lsrs r0, r2, #2 + lsls r0, r0, #3 + ldrh r3, [r5, #6] + adds r0, r0, r3 + strh r0, [r5, #6] + adds r0, r6, #1 + strb r0, [r5] + ldrb r0, [r5, #1] + cmp r0, #0x3b + beq _081AA6B8 + adds r0, r6, #0 + bl sub_081A9D08 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + adds r4, r7, #0 + adds r0, r4, #0 + bl sub_081626B0 + strb r0, [r5, #1] + ldr r0, _081AA6C0 + ldr r0, [r0] + ldr r1, _081AA6C4 + adds r0, r0, r1 + add r0, r8 + strh r4, [r0] +_081AA6B8: + movs r0, #0 + b _081AA6D4 + .align 2, 0 +_081AA6BC: .4byte gUnknown_3005AEC +_081AA6C0: .4byte gUnknown_3005AF0 +_081AA6C4: .4byte 0x00000CB4 +_081AA6C8: + adds r7, #1 + mov r1, ip + ldrb r2, [r1] + cmp r7, r2 + blt _081AA5E0 +_081AA6D2: + movs r0, #1 +_081AA6D4: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081AA588 + + thumb_func_start sub_081AA6E4 +sub_081AA6E4: @ 0x081AA6E4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, _081AA744 + ldr r0, [r0] + ldr r2, _081AA748 + adds r1, r0, r2 + ldrh r4, [r1] + ldr r1, _081AA74C + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + orrs r4, r0 + bl sub_081AA75C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r3, #0 + ldr r2, _081AA750 + mov ip, r2 + movs r7, #7 +_081AA70C: + adds r2, r6, r3 + adds r0, r4, #0 + ands r0, r7 + lsls r1, r5, #4 + adds r0, r0, r1 + add r0, ip + ldrb r0, [r0] + strb r0, [r2] + asrs r4, r4, #3 + cmp r3, #7 + bne _081AA738 + ldr r0, _081AA744 + ldr r1, [r0] + ldr r2, _081AA754 + adds r0, r1, r2 + ldrh r4, [r0] + ldr r0, _081AA758 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #0x10 + orrs r4, r0 + asrs r4, r4, #8 +_081AA738: + adds r3, #1 + cmp r3, #0xf + ble _081AA70C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AA744: .4byte gUnknown_3005AF0 +_081AA748: .4byte 0x00000E22 +_081AA74C: .4byte 0x00000E24 +_081AA750: .4byte gUnknown_85DEE8D +_081AA754: .4byte 0x00000E26 +_081AA758: .4byte 0x00000E28 + thumb_func_end sub_081AA6E4 + + thumb_func_start sub_081AA75C +sub_081AA75C: @ 0x081AA75C + push {r4, lr} + ldr r0, _081AA794 + ldr r4, [r0] + ldr r1, _081AA798 + adds r0, r4, r1 + ldrh r0, [r0] + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _081AA79C + adds r4, r4, r0 + ldrh r0, [r4] + ldr r1, _081AA7A0 + adds r0, r0, r1 + ldrb r2, [r0] + cmp r2, #0x21 + bhi _081AA7B0 + ldr r1, _081AA7A4 + lsls r0, r2, #1 + adds r0, r0, r1 +_081AA788: + ldrb r1, [r0] + cmp r3, r1 + bge _081AA7A8 + ldrb r0, [r0, #1] + b _081AA7B2 + .align 2, 0 +_081AA794: .4byte gUnknown_3005AF0 +_081AA798: .4byte 0x00000E28 +_081AA79C: .4byte 0x00000CB2 +_081AA7A0: .4byte gUnknown_85DEFCC +_081AA7A4: .4byte gUnknown_85DEF88 +_081AA7A8: + adds r0, #2 + adds r2, #1 + cmp r2, #0x21 + bls _081AA788 +_081AA7B0: + movs r0, #0 +_081AA7B2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081AA75C + + thumb_func_start sub_081AA7B8 +sub_081AA7B8: @ 0x081AA7B8 + push {lr} + ldr r0, _081AA7D0 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r2, r0, r1 + movs r1, #0 + movs r3, #0xc7 + lsls r3, r3, #4 + adds r0, r0, r3 + b _081AA7E6 + .align 2, 0 +_081AA7D0: .4byte gUnknown_3005AEC +_081AA7D4: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xf + bhi _081AA7EC + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 +_081AA7E6: + ldrb r0, [r0] + cmp r0, #0 + bne _081AA7D4 +_081AA7EC: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AA7B8 + + thumb_func_start sub_081AA7F4 +sub_081AA7F4: @ 0x081AA7F4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r3, #0 + ldr r1, _081AA84C + mov r8, r1 + lsls r1, r0, #2 + adds r1, r1, r0 + movs r0, #0 + mov ip, r0 + lsls r4, r1, #1 + ldr r7, _081AA850 + movs r6, #0 + ldr r5, _081AA854 + lsls r2, r1, #2 +_081AA816: + mov r1, r8 + ldr r0, [r1] + adds r1, r0, r7 + adds r1, r1, r2 + strh r6, [r1] + adds r1, r3, r4 + adds r0, r0, r5 + adds r0, r0, r1 + mov r1, ip + strb r1, [r0] + adds r2, #2 + adds r3, #1 + cmp r3, #9 + ble _081AA816 + movs r0, #0x15 + movs r1, #1 + bl sub_080D6A1C + movs r0, #0x22 + movs r1, #1 + bl sub_080D6A1C + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AA84C: .4byte gUnknown_3005AF0 +_081AA850: .4byte 0x00000E2C +_081AA854: .4byte 0x00000E54 + thumb_func_end sub_081AA7F4 + + thumb_func_start sub_081AA858 +sub_081AA858: @ 0x081AA858 + push {r4, r5, r6, lr} + ldr r0, _081AA8BC + ldr r1, [r0] + ldr r2, _081AA8C0 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r6, r0, #0x1e + lsls r0, r6, #1 + ldr r2, _081AA8C4 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + movs r1, #7 + bl __udivsi3 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x13 + ble _081AA882 + movs r4, #0x13 +_081AA882: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + ldr r3, _081AA8C8 + ldrb r0, [r3] + lsls r5, r4, #2 + cmp r0, r2 + bgt _081AA8AE +_081AA8A0: + adds r1, #1 + cmp r1, #9 + bhi _081AA8B2 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + ble _081AA8A0 +_081AA8AE: + cmp r1, #9 + bls _081AA8B4 +_081AA8B2: + movs r1, #9 +_081AA8B4: + cmp r6, #0 + bne _081AA8D0 + ldr r2, _081AA8CC + b _081AA8D2 + .align 2, 0 +_081AA8BC: .4byte gUnknown_3005AF0 +_081AA8C0: .4byte 0x00000CA9 +_081AA8C4: .4byte 0x00000E1A +_081AA8C8: .4byte gUnknown_85DF7BE +_081AA8CC: .4byte gUnknown_85DEFD4 +_081AA8D0: + ldr r2, _081AA8E4 +_081AA8D2: + lsls r1, r1, #1 + adds r0, r5, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081AA8E4: .4byte gUnknown_85DF164 + thumb_func_end sub_081AA858 + + thumb_func_start sub_081AA8E8 +sub_081AA8E8: @ 0x081AA8E8 + push {r4, lr} + ldr r4, _081AA910 + movs r0, #0 + strb r0, [r4, #5] + adds r0, r4, #0 + adds r0, #8 + movs r1, #0 + movs r2, #0xa + bl memset + adds r4, #0x12 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0xa + bl memset + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AA910: .4byte gUnknown_203CB24 + thumb_func_end sub_081AA8E8 + + thumb_func_start sub_081AA914 +sub_081AA914: @ 0x081AA914 + push {lr} + ldr r2, _081AA924 + movs r0, #0 + movs r1, #5 + bl sub_081AAA08 + pop {r0} + bx r0 + .align 2, 0 +_081AA924: .4byte sub_08085AFC + thumb_func_end sub_081AA914 + + thumb_func_start sub_081AA928 +sub_081AA928: @ 0x081AA928 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AA944 + ldr r2, _081AA940 + movs r0, #1 + movs r1, #5 + bl sub_081AAA08 + b _081AA94C + .align 2, 0 +_081AA940: .4byte sub_0805996C +_081AA944: + ldr r1, _081AA950 + movs r0, #1 + bl sub_081C47A0 +_081AA94C: + pop {r0} + bx r0 + .align 2, 0 +_081AA950: .4byte sub_0805996C + thumb_func_end sub_081AA928 + + thumb_func_start sub_081AA954 +sub_081AA954: @ 0x081AA954 + push {lr} + ldr r2, _081AA964 + movs r0, #4 + movs r1, #3 + bl sub_081AAA08 + pop {r0} + bx r0 + .align 2, 0 +_081AA964: .4byte sub_08085B18 + thumb_func_end sub_081AA954 + + thumb_func_start sub_081AA968 +sub_081AA968: @ 0x081AA968 + push {lr} + adds r2, r0, #0 + movs r0, #5 + movs r1, #3 + bl sub_081AAA08 + pop {r0} + bx r0 + thumb_func_end sub_081AA968 + + thumb_func_start sub_081AA978 +sub_081AA978: @ 0x081AA978 + push {lr} + ldr r2, _081AA988 + movs r0, #3 + movs r1, #5 + bl sub_081AAA08 + pop {r0} + bx r0 + .align 2, 0 +_081AA988: .4byte sub_080DF194 + thumb_func_end sub_081AA978 + + thumb_func_start sub_081AA98C +sub_081AA98C: @ 0x081AA98C + push {lr} + ldr r2, _081AA99C + movs r0, #6 + movs r1, #5 + bl sub_081AAA08 + pop {r0} + bx r0 + .align 2, 0 +_081AA99C: .4byte sub_0816B140 + thumb_func_end sub_081AA98C + + thumb_func_start sub_081AA9A0 +sub_081AA9A0: @ 0x081AA9A0 + push {lr} + ldr r2, _081AA9BC + movs r0, #9 + movs r1, #5 + bl sub_081AAA08 + ldr r0, _081AA9C0 + movs r1, #0 + strh r1, [r0] + ldr r0, _081AA9C4 + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_081AA9BC: .4byte sub_081ADC78 +_081AA9C0: .4byte gUnknown_2037282 +_081AA9C4: .4byte gUnknown_2037290 + thumb_func_end sub_081AA9A0 + + thumb_func_start sub_081AA9C8 +sub_081AA9C8: @ 0x081AA9C8 + push {lr} + ldr r2, _081AA9E0 + movs r0, #7 + movs r1, #5 + bl sub_081AAA08 + ldr r1, _081AA9E4 + movs r0, #0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081AA9E0: .4byte sub_081ADCC8 +_081AA9E4: .4byte gUnknown_2037290 + thumb_func_end sub_081AA9C8 + + thumb_func_start sub_081AA9E8 +sub_081AA9E8: @ 0x081AA9E8 + push {lr} + ldr r2, _081AAA00 + movs r0, #8 + movs r1, #5 + bl sub_081AAA08 + ldr r1, _081AAA04 + movs r0, #0 + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081AAA00: .4byte sub_081ADD0C +_081AAA04: .4byte gUnknown_2037290 + thumb_func_end sub_081AA9E8 + + thumb_func_start sub_081AAA08 +sub_081AAA08: @ 0x081AAA08 + push {r4, r5, r6, r7, lr} + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + ldr r6, _081AAA2C + ldr r0, _081AAA30 + bl sub_08000BDC + str r0, [r6] + cmp r0, #0 + bne _081AAA34 + adds r0, r4, #0 + bl sub_08000540 + b _081AAAB2 + .align 2, 0 +_081AAA2C: .4byte gUnknown_203CB20 +_081AAA30: .4byte 0x00000844 +_081AAA34: + ldr r0, _081AAAB8 + cmp r5, #0xc + beq _081AAA3C + strb r5, [r0, #4] +_081AAA3C: + cmp r4, #0 + beq _081AAA42 + str r4, [r0] +_081AAA42: + cmp r7, #4 + bhi _081AAA48 + strb r7, [r0, #5] +_081AAA48: + ldrb r0, [r0, #4] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081AAA68 + ldr r2, [r6] + ldr r0, _081AAABC + adds r2, r2, r0 + ldrb r1, [r2] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_081AAA68: + ldr r0, [r6] + movs r1, #0 + str r1, [r0] + ldr r1, _081AAAC0 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r6] + ldr r1, _081AAAC4 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _081AAAC8 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _081AAACC + adds r0, r0, r1 + movs r1, #0xff + movs r2, #0xc + bl memset + ldr r0, [r6] + movs r1, #0x81 + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #0xff + movs r2, #0xa + bl memset + ldr r0, _081AAAD0 + bl sub_08000540 +_081AAAB2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AAAB8: .4byte gUnknown_203CB24 +_081AAABC: .4byte 0x0000081B +_081AAAC0: .4byte 0x0000081A +_081AAAC4: .4byte 0x0000081E +_081AAAC8: .4byte 0x0000081F +_081AAACC: .4byte 0x00000804 +_081AAAD0: .4byte sub_081AAB04 + thumb_func_end sub_081AAA08 + + thumb_func_start sub_081AAAD4 +sub_081AAAD4: @ 0x081AAAD4 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AAAD4 + + thumb_func_start sub_081AAAF0 +sub_081AAAF0: @ 0x081AAAF0 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AAAF0 + + thumb_func_start sub_081AAB04 +sub_081AAB04: @ 0x081AAB04 + push {lr} +_081AAB06: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AAB2A + bl sub_081AAB30 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AAB2A + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AAB06 +_081AAB2A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AAB04 + + thumb_func_start sub_081AAB30 +sub_081AAB30: @ 0x081AAB30 + push {r4, r5, lr} + sub sp, #4 + ldr r1, _081AAB50 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x14 + bls _081AAB46 + b _081AAD9C +_081AAB46: + lsls r0, r0, #2 + ldr r1, _081AAB54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AAB50: .4byte gUnknown_3002360 +_081AAB54: .4byte _081AAB58 +_081AAB58: @ jump table + .4byte _081AABAC @ case 0 + .4byte _081AABB6 @ case 1 + .4byte _081AABC8 @ case 2 + .4byte _081AABCE @ case 3 + .4byte _081AABF0 @ case 4 + .4byte _081AABF6 @ case 5 + .4byte _081AABFE @ case 6 + .4byte _081AAC1C @ case 7 + .4byte _081AAC44 @ case 8 + .4byte _081AAC52 @ case 9 + .4byte _081AAC64 @ case 10 + .4byte _081AAC72 @ case 11 + .4byte _081AAC84 @ case 12 + .4byte _081AAC94 @ case 13 + .4byte _081AACC4 @ case 14 + .4byte _081AAD10 @ case 15 + .4byte _081AAD2C @ case 16 + .4byte _081AAD32 @ case 17 + .4byte _081AAD48 @ case 18 + .4byte _081AAD4E @ case 19 + .4byte _081AAD68 @ case 20 +_081AABAC: + bl sub_08121E58 + bl sub_08199640 + b _081AAD82 +_081AABB6: + bl sub_080B9710 + ldr r1, _081AABC4 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AABC4: .4byte gUnknown_3002360 +_081AABC8: + bl sub_08008424 + b _081AAD82 +_081AABCE: + bl sub_080A133C + ldr r2, _081AABE8 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r1, _081AABEC + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AABE8: .4byte gUnknown_2037C74 +_081AABEC: .4byte gUnknown_3002360 +_081AABF0: + bl sub_0800668C + b _081AAD82 +_081AABF6: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _081AAD8A +_081AABFE: + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AAC0C + bl sub_080A8818 +_081AAC0C: + ldr r1, _081AAC18 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAC18: .4byte gUnknown_3002360 +_081AAC1C: + bl sub_081AADC0 + ldr r0, _081AAC38 + ldr r0, [r0] + ldr r1, _081AAC3C + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r1, _081AAC40 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAC38: .4byte gUnknown_203CB20 +_081AAC3C: .4byte 0x00000834 +_081AAC40: .4byte gUnknown_3002360 +_081AAC44: + bl sub_081AAE2C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AAC50 + b _081AADB4 +_081AAC50: + b _081AAD82 +_081AAC52: + bl sub_081ADD2C + ldr r1, _081AAC60 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAC60: .4byte gUnknown_3002360 +_081AAC64: + bl sub_081AB818 + bl sub_081AB870 + bl sub_081AB88C + b _081AAD82 +_081AAC72: + bl sub_081AAF88 + ldr r1, _081AAC80 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAC80: .4byte gUnknown_3002360 +_081AAC84: + ldr r0, _081AAC90 + ldrb r0, [r0, #5] + bl sub_081AAFB0 + b _081AAD82 + .align 2, 0 +_081AAC90: .4byte gUnknown_203CB24 +_081AAC94: + ldr r4, _081AACB8 + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + ldr r1, _081AACBC + adds r0, r0, r1 + movs r1, #0 + bl sub_081AB4A0 + ldrb r0, [r4, #5] + movs r1, #1 + bl sub_081AC030 + ldr r1, _081AACC0 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AACB8: .4byte gUnknown_203CB24 +_081AACBC: .4byte gUnknown_85C9742 +_081AACC0: .4byte gUnknown_3002360 +_081AACC4: + ldr r4, _081AAD04 + ldrb r0, [r4, #4] + bl sub_081AAF60 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081AAD08 + ldrb r2, [r4, #5] + lsls r2, r2, #1 + adds r1, r4, #0 + adds r1, #0x12 + adds r1, r2, r1 + ldrh r1, [r1] + adds r4, #8 + adds r2, r2, r4 + ldrh r2, [r2] + bl sub_081AE25C + ldr r2, _081AAD0C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + strh r0, [r1, #8] + strh r2, [r1, #0xe] + strh r2, [r1, #0x18] + b _081AAD82 + .align 2, 0 +_081AAD04: .4byte gUnknown_203CB24 +_081AAD08: .4byte gUnknown_3006050 +_081AAD0C: .4byte gUnknown_3005B60 +_081AAD10: + ldr r0, _081AAD24 + ldrb r0, [r0, #5] + bl sub_080D4584 + ldr r1, _081AAD28 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAD24: .4byte gUnknown_203CB24 +_081AAD28: .4byte gUnknown_3002360 +_081AAD2C: + bl sub_080D4830 + b _081AAD82 +_081AAD32: + bl sub_081AB568 + bl sub_081AB600 + ldr r1, _081AAD44 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAD44: .4byte gUnknown_3002360 +_081AAD48: + bl sub_081ADF8C + b _081AAD82 +_081AAD4E: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r1, _081AAD64 + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 + b _081AAD8A + .align 2, 0 +_081AAD64: .4byte gUnknown_3002360 +_081AAD68: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _081AAD94 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] +_081AAD82: + ldr r1, _081AAD98 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 +_081AAD8A: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081AADB4 + .align 2, 0 +_081AAD94: .4byte gUnknown_2037C74 +_081AAD98: .4byte gUnknown_3002360 +_081AAD9C: + ldr r0, _081AADAC + bl sub_080006F0 + ldr r0, _081AADB0 + bl sub_08000540 + movs r0, #1 + b _081AADB6 + .align 2, 0 +_081AADAC: .4byte sub_081AAAF0 +_081AADB0: .4byte sub_081AAAD4 +_081AADB4: + movs r0, #0 +_081AADB6: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AAB30 + + thumb_func_start sub_081AADC0 +sub_081AADC0: @ 0x081AADC0 + push {r4, lr} + bl sub_08121D90 + ldr r4, _081AAE24 + ldr r0, [r4] + adds r0, #4 + movs r2, #0x80 + lsls r2, r2, #4 + movs r1, #0 + bl memset + movs r0, #0 + bl sub_080017D4 + ldr r1, _081AAE28 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r1, [r4] + adds r1, #4 + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #2 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AAE24: .4byte gUnknown_203CB20 +_081AAE28: .4byte gUnknown_85DF7C8 + thumb_func_end sub_081AADC0 + + thumb_func_start sub_081AAE2C +sub_081AAE2C: @ 0x081AAE2C + push {r4, lr} + sub sp, #4 + ldr r4, _081AAE4C + ldr r0, [r4] + ldr r1, _081AAE50 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #4 + bls _081AAE42 + b _081AAF3C +_081AAE42: + lsls r0, r0, #2 + ldr r1, _081AAE54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AAE4C: .4byte gUnknown_203CB20 +_081AAE50: .4byte 0x00000834 +_081AAE54: .4byte _081AAE58 +_081AAE58: @ jump table + .4byte _081AAE6C @ case 0 + .4byte _081AAE88 @ case 1 + .4byte _081AAEAC @ case 2 + .4byte _081AAEE4 @ case 3 + .4byte _081AAF18 @ case 4 +_081AAE6C: + bl sub_081996B8 + ldr r1, _081AAE84 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _081AAF1E + .align 2, 0 +_081AAE84: .4byte gUnknown_8D9A7CC +_081AAE88: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AAF54 + ldr r0, _081AAEA4 + ldr r4, _081AAEA8 + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r1, [r4] + b _081AAF22 + .align 2, 0 +_081AAEA4: .4byte gUnknown_8D9AA84 +_081AAEA8: .4byte gUnknown_203CB20 +_081AAEAC: + bl sub_081ADA60 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AAED4 + ldr r0, _081AAECC + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _081AAED4 + ldr r0, _081AAED0 + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + b _081AAF1E + .align 2, 0 +_081AAECC: .4byte gUnknown_3005AF0 +_081AAED0: .4byte gUnknown_8D9A780 +_081AAED4: + ldr r0, _081AAEE0 + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + b _081AAF1E + .align 2, 0 +_081AAEE0: .4byte gUnknown_8D9A734 +_081AAEE4: + bl sub_081ADA60 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AAEFA + ldr r0, _081AAF04 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _081AAF0C +_081AAEFA: + ldr r0, _081AAF08 + bl sub_08034388 + b _081AAF1E + .align 2, 0 +_081AAF04: .4byte gUnknown_3005AF0 +_081AAF08: .4byte gUnknown_855A664 +_081AAF0C: + ldr r0, _081AAF14 + bl sub_08034388 + b _081AAF1E + .align 2, 0 +_081AAF14: .4byte gUnknown_855A66C +_081AAF18: + ldr r0, _081AAF30 + bl sub_080343E4 +_081AAF1E: + ldr r0, _081AAF34 + ldr r1, [r0] +_081AAF22: + ldr r0, _081AAF38 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _081AAF54 + .align 2, 0 +_081AAF30: .4byte gUnknown_855A674 +_081AAF34: .4byte gUnknown_203CB20 +_081AAF38: .4byte 0x00000834 +_081AAF3C: + bl sub_08122334 + ldr r0, [r4] + ldr r1, _081AAF50 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + movs r0, #1 + b _081AAF56 + .align 2, 0 +_081AAF50: .4byte 0x00000834 +_081AAF54: + movs r0, #0 +_081AAF56: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AAE2C + + thumb_func_start sub_081AAF60 +sub_081AAF60: @ 0x081AAF60 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bne _081AAF74 + ldr r0, _081AAF70 + b _081AAF76 + .align 2, 0 +_081AAF70: .4byte sub_081ADBA4 +_081AAF74: + ldr r0, _081AAF84 +_081AAF76: + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081AAF84: .4byte sub_081ABAB4 + thumb_func_end sub_081AAF60 + + thumb_func_start sub_081AAF88 +sub_081AAF88: @ 0x081AAF88 + push {r4, lr} + ldr r4, _081AAFA8 + movs r0, #0x82 + lsls r0, r0, #2 + bl sub_08000BC8 + str r0, [r4] + ldr r4, _081AAFAC + movs r0, #0xc3 + lsls r0, r0, #3 + bl sub_08000BC8 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AAFA8: .4byte gUnknown_203CB40 +_081AAFAC: .4byte gUnknown_203CB44 + thumb_func_end sub_081AAF88 + + thumb_func_start sub_081AAFB0 +sub_081AAFB0: @ 0x081AAFB0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r7, #3 + ldr r0, _081AB050 + adds r1, r1, r0 + mov r8, r1 + ldr r0, _081AB054 + ldr r2, [r0] + ldr r1, _081AB058 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081AB06C + movs r6, #0 + ldr r3, _081AB05C + adds r0, r2, r3 + adds r0, r0, r7 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + bge _081AB026 + ldr r5, _081AB060 +_081AAFE6: + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r0, [r5] + adds r0, r0, r4 + mov r1, r8 + ldr r2, [r1] + lsls r1, r6, #2 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_081AB10C + ldr r0, _081AB064 + ldr r0, [r0] + lsls r1, r6, #3 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r1] + str r6, [r1, #4] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _081AB054 + ldr r0, [r0] + ldr r3, _081AB05C + adds r0, r0, r3 + adds r0, r0, r7 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + blt _081AAFE6 +_081AB026: + ldr r5, _081AB060 + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _081AB068 + bl sub_080088B8 + ldr r0, _081AB064 + ldr r0, [r0] + lsls r1, r6, #3 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r1, #4] + b _081AB0BA + .align 2, 0 +_081AB050: .4byte gUnknown_2039A78 +_081AB054: .4byte gUnknown_203CB20 +_081AB058: .4byte 0x0000081B +_081AB05C: .4byte 0x00000829 +_081AB060: .4byte gUnknown_203CB44 +_081AB064: .4byte gUnknown_203CB40 +_081AB068: .4byte gUnknown_85C9448 +_081AB06C: + movs r6, #0 + ldr r4, _081AB0F0 + adds r0, r2, r4 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r6, r0 + bhs _081AB0BA + ldr r5, _081AB0F4 +_081AB07C: + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r0, [r5] + adds r0, r0, r4 + mov r1, r8 + ldr r2, [r1] + lsls r1, r6, #2 + adds r1, r1, r2 + ldrh r1, [r1] + bl sub_081AB10C + ldr r0, _081AB0F8 + ldr r0, [r0] + lsls r1, r6, #3 + adds r1, r1, r0 + ldr r0, [r5] + adds r0, r0, r4 + str r0, [r1] + str r6, [r1, #4] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _081AB0FC + ldr r0, [r0] + ldr r3, _081AB0F0 + adds r0, r0, r3 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r6, r0 + blo _081AB07C +_081AB0BA: + ldr r2, _081AB100 + adds r1, r2, #0 + ldr r0, _081AB104 + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldm r0!, {r3, r4, r5} + stm r1!, {r3, r4, r5} + ldr r0, _081AB0FC + ldr r1, [r0] + ldr r4, _081AB0F0 + adds r0, r1, r4 + adds r0, r0, r7 + ldrb r0, [r0] + strh r0, [r2, #0xc] + ldr r0, _081AB0F8 + ldr r0, [r0] + str r0, [r2] + ldr r5, _081AB108 + adds r1, r1, r5 + adds r1, r1, r7 + ldrb r0, [r1] + strh r0, [r2, #0xe] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AB0F0: .4byte 0x00000829 +_081AB0F4: .4byte gUnknown_203CB44 +_081AB0F8: .4byte gUnknown_203CB40 +_081AB0FC: .4byte gUnknown_203CB20 +_081AB100: .4byte gUnknown_3006050 +_081AB104: .4byte gUnknown_85DF7D4 +_081AB108: .4byte 0x0000082E + thumb_func_end sub_081AAFB0 + + thumb_func_start sub_081AB10C +sub_081AB10C: @ 0x081AB10C + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + ldr r0, _081AB12C + ldrb r0, [r0, #5] + cmp r0, #2 + beq _081AB130 + cmp r0, #3 + beq _081AB190 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080D5EC8 + b _081AB1AE + .align 2, 0 +_081AB12C: .4byte gUnknown_203CB24 +_081AB130: + ldr r4, _081AB164 + adds r0, r5, #0 + bl sub_081B69B4 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xd + ldr r0, _081AB168 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0xa9 + lsls r0, r0, #1 + cmp r5, r0 + bls _081AB178 + ldr r0, _081AB16C + ldr r2, _081AB170 + adds r1, r5, r2 + movs r2, #2 + movs r3, #1 + bl sub_080089D8 + ldr r1, _081AB174 + b _081AB1A8 + .align 2, 0 +_081AB164: .4byte gUnknown_2021C54 +_081AB168: .4byte gUnknown_82EACC4 +_081AB16C: .4byte gUnknown_2021C40 +_081AB170: .4byte 0xFFFFFEAE +_081AB174: .4byte gUnknown_85C9776 +_081AB178: + ldr r0, _081AB188 + ldr r2, _081AB18C + adds r1, r5, r2 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + b _081AB1A6 + .align 2, 0 +_081AB188: .4byte gUnknown_2021C40 +_081AB18C: .4byte 0xFFFFFEE0 +_081AB190: + ldr r0, _081AB1B4 + adds r1, r5, #0 + subs r1, #0x84 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r1, _081AB1B8 + adds r0, r5, #0 + bl sub_080D5EC8 +_081AB1A6: + ldr r1, _081AB1BC +_081AB1A8: + adds r0, r6, #0 + bl sub_08008BCC +_081AB1AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AB1B4: .4byte gUnknown_2021C40 +_081AB1B8: .4byte gUnknown_2021C54 +_081AB1BC: .4byte gUnknown_85C976F + thumb_func_end sub_081AB10C + + thumb_func_start sub_081AB1C0 +sub_081AB1C0: @ 0x081AB1C0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _081AB1D6 + movs r0, #5 + bl sub_080A306C + bl sub_080D4648 +_081AB1D6: + ldr r4, _081AB228 + ldr r1, [r4] + ldr r2, _081AB22C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _081AB27C + adds r2, #1 + adds r0, r1, r2 + ldrb r1, [r0] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + movs r0, #1 + eors r0, r1 + bl sub_080D481C + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _081AB238 + ldr r0, _081AB230 + ldrb r0, [r0, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + bl sub_080D672C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r4] + ldr r2, _081AB234 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + bl sub_080D47BC + b _081AB24A + .align 2, 0 +_081AB228: .4byte gUnknown_203CB20 +_081AB22C: .4byte 0x0000081A +_081AB230: .4byte gUnknown_203CB24 +_081AB234: .4byte 0x0000081B +_081AB238: + ldr r0, _081AB284 + ldr r1, [r4] + ldr r2, _081AB288 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + bl sub_080D47BC +_081AB24A: + ldr r5, _081AB28C + ldr r2, [r5] + ldr r4, _081AB288 + adds r2, r2, r4 + ldrb r3, [r2] + lsls r0, r3, #0x1a + lsrs r0, r0, #0x1e + movs r1, #1 + eors r1, r0 + lsls r1, r1, #4 + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081AB27C + adds r0, r6, #0 + bl sub_081AB414 +_081AB27C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AB284: .4byte 0x0000FFFF +_081AB288: .4byte 0x0000081B +_081AB28C: .4byte gUnknown_203CB20 + thumb_func_end sub_081AB1C0 + + thumb_func_start sub_081AB290 +sub_081AB290: @ 0x081AB290 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + bne _081AB2B0 + b _081AB3FA +_081AB2B0: + ldr r0, _081AB2D0 + ldr r0, [r0] + ldr r1, _081AB2D4 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0xff + beq _081AB2E0 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _081AB2D8 + adds r0, r7, #0 + movs r1, #2 + bl sub_081AB508 + b _081AB2E0 + .align 2, 0 +_081AB2D0: .4byte gUnknown_203CB20 +_081AB2D4: .4byte 0x0000081A +_081AB2D8: + adds r0, r7, #0 + movs r1, #0xff + bl sub_081AB508 +_081AB2E0: + ldr r5, _081AB368 + ldrb r0, [r5, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r1, r4, #0 + bl sub_080D672C + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldrb r0, [r5, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_080D6748 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov sb, r4 + ldr r1, _081AB36C + adds r0, r6, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #7 + bhi _081AB32E + ldr r1, _081AB370 + subs r3, r7, #2 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #0x10 + str r0, [sp] + str r0, [sp, #4] + mov r0, r8 + movs r2, #8 + bl sub_08003874 +_081AB32E: + ldrb r0, [r5, #5] + cmp r0, #3 + bne _081AB380 + ldr r0, _081AB374 + adds r1, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081AB378 + ldr r1, _081AB37C + adds r0, r4, #0 + bl sub_08008BCC + str r7, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r0, #0xff + str r0, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, r8 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0x58 + bl sub_081ADD94 + b _081AB3FA + .align 2, 0 +_081AB368: .4byte gUnknown_203CB24 +_081AB36C: .4byte 0xFFFFFEAD +_081AB370: .4byte gUnknown_85DF99C +_081AB374: .4byte gUnknown_2021C40 +_081AB378: .4byte gUnknown_2021C7C +_081AB37C: .4byte gUnknown_85C943C +_081AB380: + cmp r0, #4 + beq _081AB3D0 + adds r0, r6, #0 + bl sub_080D6D68 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081AB3D0 + ldr r0, _081AB3C4 + mov r1, sb + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081AB3C8 + ldr r1, _081AB3CC + adds r0, r4, #0 + bl sub_08008BCC + str r7, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #0xff + str r0, [sp, #0xc] + str r5, [sp, #0x10] + mov r0, r8 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0x60 + bl sub_081ADD94 + b _081AB3FA + .align 2, 0 +_081AB3C4: .4byte gUnknown_2021C40 +_081AB3C8: .4byte gUnknown_2021C7C +_081AB3CC: .4byte gUnknown_85C943C +_081AB3D0: + ldr r0, _081AB408 + ldr r0, [r0] + ldr r1, _081AB40C + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _081AB3FA + cmp r0, r6 + bne _081AB3FA + ldr r1, _081AB410 + subs r3, r7, #1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + movs r0, #0x18 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + mov r0, r8 + movs r2, #0x60 + bl sub_08003874 +_081AB3FA: + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AB408: .4byte gUnknown_3005AEC +_081AB40C: .4byte 0x00000496 +_081AB410: .4byte gUnknown_85DF8DC + thumb_func_end sub_081AB290 + + thumb_func_start sub_081AB414 +sub_081AB414: @ 0x081AB414 + push {r4, lr} + sub sp, #0x14 + adds r1, r0, #0 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081AB444 + ldr r0, _081AB440 + ldrb r0, [r0, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080D672C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D6D40 + adds r4, r0, #0 + b _081AB460 + .align 2, 0 +_081AB440: .4byte gUnknown_203CB24 +_081AB444: + ldr r0, _081AB48C + ldr r2, _081AB490 + ldr r1, _081AB494 + ldrb r1, [r1, #4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r4, _081AB498 + ldr r1, _081AB49C + adds r0, r4, #0 + bl sub_08008BCC +_081AB460: + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 + add sp, #0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AB48C: .4byte gUnknown_2021C40 +_081AB490: .4byte gUnknown_85C96F8 +_081AB494: .4byte gUnknown_203CB24 +_081AB498: .4byte gUnknown_2021C7C +_081AB49C: .4byte gUnknown_85C9738 + thumb_func_end sub_081AB414 + + thumb_func_start sub_081AB4A0 +sub_081AB4A0: @ 0x081AB4A0 + push {lr} + sub sp, #0x20 + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r2, r2, r1 + add r0, sp, #0x14 + adds r1, r2, #0 + movs r2, #9 + bl sub_080088F0 + add r1, sp, #0x14 + movs r0, #0xff + strb r0, [r1, #8] + movs r0, #2 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + str r0, [sp, #0x10] + movs r0, #2 + movs r1, #1 + add r2, sp, #0x14 + movs r3, #0 + bl sub_081ADD94 + add sp, #0x20 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AB4A0 + + thumb_func_start sub_081AB4E8 +sub_081AB4E8: @ 0x081AB4E8 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AE564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_081AB508 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081AB4E8 + + thumb_func_start sub_081AB508 +sub_081AB508: @ 0x081AB508 + push {r4, r5, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xff + bne _081AB544 + movs r0, #1 + movs r1, #0 + bl sub_0800629C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_08003A34 + b _081AB55A +_081AB544: + ldr r2, _081AB564 + str r5, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + movs r3, #0 + bl sub_081ADD94 +_081AB55A: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AB564: .4byte gUnknown_85C9421 + thumb_func_end sub_081AB508 + + thumb_func_start sub_081AB568 +sub_081AB568: @ 0x081AB568 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r5, _081AB5C0 + ldr r4, [r5] + ldr r1, _081AB5C4 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _081AB5B6 + ldr r2, _081AB5C8 + ldrb r3, [r2, #5] + ldr r6, _081AB5CC + adds r0, r4, r6 + adds r0, r0, r3 + ldrb r1, [r0] + adds r6, #5 + adds r0, r4, r6 + adds r0, r0, r3 + ldrb r0, [r0] + subs r1, r1, r0 + str r1, [sp] + movs r0, #0x6e + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r0, [r2, #5] + lsls r0, r0, #1 + adds r2, #0x12 + adds r0, r0, r2 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xac + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + ldr r1, [r5] + ldr r2, _081AB5C4 + adds r1, r1, r2 + strb r0, [r1] +_081AB5B6: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AB5C0: .4byte gUnknown_203CB20 +_081AB5C4: .4byte 0x0000081E +_081AB5C8: .4byte gUnknown_203CB24 +_081AB5CC: .4byte 0x00000829 + thumb_func_end sub_081AB568 + + thumb_func_start sub_081AB5D0 +sub_081AB5D0: @ 0x081AB5D0 + push {r4, lr} + ldr r4, _081AB5F8 + ldr r0, [r4] + ldr r2, _081AB5FC + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _081AB5EE + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _081AB5FC + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_081AB5EE: + bl sub_081AB648 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AB5F8: .4byte gUnknown_203CB20 +_081AB5FC: .4byte 0x0000081E + thumb_func_end sub_081AB5D0 + + thumb_func_start sub_081AB600 +sub_081AB600: @ 0x081AB600 + push {r4, lr} + ldr r4, _081AB634 + ldr r2, [r4] + ldr r1, _081AB638 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + beq _081AB62E + ldr r1, _081AB63C + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0xff + bne _081AB62E + ldr r0, _081AB640 + ldr r1, _081AB644 + bl sub_081AF058 + ldr r1, [r4] + ldr r2, _081AB63C + adds r1, r1, r2 + strb r0, [r1] +_081AB62E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AB634: .4byte gUnknown_203CB20 +_081AB638: .4byte 0x0000081B +_081AB63C: .4byte 0x0000081F +_081AB640: .4byte gUnknown_85DF8CC +_081AB644: .4byte gUnknown_203CB2A + thumb_func_end sub_081AB600 + + thumb_func_start sub_081AB648 +sub_081AB648: @ 0x081AB648 + push {r4, lr} + ldr r4, _081AB66C + ldr r0, [r4] + ldr r2, _081AB670 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _081AB666 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _081AB670 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_081AB666: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AB66C: .4byte gUnknown_203CB20 +_081AB670: .4byte 0x0000081F + thumb_func_end sub_081AB648 + + thumb_func_start sub_081AB674 +sub_081AB674: @ 0x081AB674 + push {lr} + ldr r0, _081AB698 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _081AB69C + ldr r0, [r0] + bl sub_08000BF0 + bl sub_080034D4 + ldr r0, _081AB6A0 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_081AB698: .4byte gUnknown_203CB44 +_081AB69C: .4byte gUnknown_203CB40 +_081AB6A0: .4byte gUnknown_203CB20 + thumb_func_end sub_081AB674 + + thumb_func_start sub_081AB6A4 +sub_081AB6A4: @ 0x081AB6A4 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081AB6D4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081AB6D8 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AB6D4: .4byte gUnknown_3005B60 +_081AB6D8: .4byte sub_081AB6DC + thumb_func_end sub_081AB6A4 + + thumb_func_start sub_081AB6DC +sub_081AB6DC: @ 0x081AB6DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081AB720 + adds r2, r0, r1 + ldr r0, _081AB724 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081AB74C + ldrb r0, [r2] + ldr r4, _081AB728 + ldrb r2, [r4, #5] + lsls r2, r2, #1 + adds r1, r4, #0 + adds r1, #0x12 + adds r1, r2, r1 + adds r3, r4, #0 + adds r3, #8 + adds r2, r2, r3 + bl sub_081AE3A0 + ldr r0, _081AB72C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _081AB730 + bl sub_08000540 + b _081AB736 + .align 2, 0 +_081AB720: .4byte gUnknown_3005B68 +_081AB724: .4byte gUnknown_2037C74 +_081AB728: .4byte gUnknown_203CB24 +_081AB72C: .4byte gUnknown_203CB20 +_081AB730: + ldr r0, [r4] + bl sub_08000540 +_081AB736: + bl sub_081AB5D0 + bl sub_0800668C + bl sub_08008424 + bl sub_081AB674 + adds r0, r5, #0 + bl sub_080A8964 +_081AB74C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AB6DC + + thumb_func_start sub_081AB754 +sub_081AB754: @ 0x081AB754 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r5, #3 + ldr r0, _081AB770 + adds r4, r1, r0 + cmp r5, #3 + bgt _081AB774 + cmp r5, #2 + blt _081AB774 + adds r0, r4, #0 + bl sub_080D67CC + b _081AB77A + .align 2, 0 +_081AB770: .4byte gUnknown_2039A78 +_081AB774: + adds r0, r4, #0 + bl sub_080D677C +_081AB77A: + ldr r0, _081AB7F4 + ldr r1, [r0] + ldr r6, _081AB7F8 + adds r1, r1, r6 + adds r1, r1, r5 + movs r2, #0 + strb r2, [r1] + adds r3, r0, #0 + ldrb r0, [r4, #4] + cmp r2, r0 + bhs _081AB7BE + ldr r0, [r4] + ldrh r0, [r0] + cmp r0, #0 + beq _081AB7BE + adds r7, r3, #0 +_081AB79A: + ldr r0, [r7] + adds r0, r0, r6 + adds r0, r0, r5 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrb r1, [r4, #4] + cmp r2, r1 + bhs _081AB7BE + ldr r0, [r4] + lsls r1, r2, #2 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _081AB79A +_081AB7BE: + ldr r2, [r3] + ldr r1, _081AB7FC + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081AB7DA + ldr r0, _081AB7F8 + adds r1, r2, r0 + adds r1, r1, r5 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081AB7DA: + ldr r1, [r3] + ldr r2, _081AB7F8 + adds r0, r1, r2 + adds r0, r0, r5 + ldrb r2, [r0] + cmp r2, #8 + bls _081AB804 + ldr r3, _081AB800 + adds r0, r1, r3 + adds r0, r0, r5 + movs r1, #8 + strb r1, [r0] + b _081AB80C + .align 2, 0 +_081AB7F4: .4byte gUnknown_203CB20 +_081AB7F8: .4byte 0x00000829 +_081AB7FC: .4byte 0x0000081B +_081AB800: .4byte 0x0000082E +_081AB804: + ldr r3, _081AB814 + adds r0, r1, r3 + adds r0, r0, r5 + strb r2, [r0] +_081AB80C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AB814: .4byte 0x0000082E + thumb_func_end sub_081AB754 + + thumb_func_start sub_081AB818 +sub_081AB818: @ 0x081AB818 + push {r4, lr} + movs r4, #0 +_081AB81C: + adds r0, r4, #0 + bl sub_081AB754 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _081AB81C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AB818 + + thumb_func_start sub_081AB834 +sub_081AB834: @ 0x081AB834 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + ldr r2, _081AB864 + adds r4, r1, r2 + subs r2, #0xa + adds r1, r1, r2 + ldr r2, _081AB868 + ldr r3, [r2] + ldr r5, _081AB86C + adds r2, r3, r5 + adds r2, r2, r0 + ldrb r2, [r2] + subs r5, #5 + adds r3, r3, r5 + adds r3, r3, r0 + ldrb r3, [r3] + adds r0, r4, #0 + bl sub_08122268 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AB864: .4byte gUnknown_203CB36 +_081AB868: .4byte gUnknown_203CB20 +_081AB86C: .4byte 0x0000082E + thumb_func_end sub_081AB834 + + thumb_func_start sub_081AB870 +sub_081AB870: @ 0x081AB870 + push {r4, lr} + movs r4, #0 +_081AB874: + adds r0, r4, #0 + bl sub_081AB834 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _081AB874 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AB870 + + thumb_func_start sub_081AB88C +sub_081AB88C: @ 0x081AB88C + push {r4, r5, r6, r7, lr} + sub sp, #4 + movs r5, #0 + ldr r6, _081AB8CC + adds r7, r6, #0 + subs r7, #0xa +_081AB898: + lsls r1, r5, #1 + adds r0, r1, r6 + adds r1, r1, r7 + ldr r2, _081AB8D0 + ldr r3, [r2] + ldr r4, _081AB8D4 + adds r2, r3, r4 + adds r2, r2, r5 + ldrb r2, [r2] + subs r4, #5 + adds r3, r3, r4 + adds r3, r3, r5 + ldrb r3, [r3] + movs r4, #8 + str r4, [sp] + bl sub_081222A4 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + bls _081AB898 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AB8CC: .4byte gUnknown_203CB36 +_081AB8D0: .4byte gUnknown_203CB20 +_081AB8D4: .4byte 0x0000082E + thumb_func_end sub_081AB88C + + thumb_func_start sub_081AB8D8 +sub_081AB8D8: @ 0x081AB8D8 + lsls r0, r0, #0x18 + ldr r1, _081AB8F4 + lsrs r0, r0, #0x17 + adds r2, r1, #0 + adds r2, #0x12 + adds r2, r0, r2 + adds r1, #8 + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r2, [r2] + adds r0, r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_081AB8F4: .4byte gUnknown_203CB24 + thumb_func_end sub_081AB8D8 + + thumb_func_start sub_081AB8F8 +sub_081AB8F8: @ 0x081AB8F8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + mov sb, r3 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081AB964 + adds r4, r4, r0 + movs r0, #4 + bl sub_081ADE9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + movs r1, #0x11 + bl sub_08003B18 + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4, #0x14] + str r6, [sp] + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + mov r0, sb + str r0, [sp, #0xc] + adds r0, r5, #0 + movs r2, #0xa + movs r3, #0xd + bl sub_08121E6C + movs r0, #1 + bl sub_08199654 + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AB964: .4byte gUnknown_3005B68 + thumb_func_end sub_081AB8F8 + + thumb_func_start sub_081AB968 +sub_081AB968: @ 0x081AB968 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r6, #2 + adds r5, r5, r6 + lsls r5, r5, #3 + ldr r0, _081AB9DC + adds r5, r5, r0 + ldr r7, _081AB9E0 + ldrb r4, [r7, #5] + lsls r4, r4, #1 + movs r0, #0x12 + adds r0, r0, r7 + mov r8, r0 + add r8, r4 + adds r0, r7, #0 + adds r0, #8 + adds r4, r4, r0 + movs r0, #4 + bl sub_081ADED0 + ldrb r0, [r5] + mov r1, r8 + adds r2, r4, #0 + bl sub_081AE3A0 + ldrb r0, [r7, #5] + bl sub_081AB754 + ldrb r0, [r7, #5] + bl sub_081AB834 + ldrb r0, [r7, #5] + bl sub_081AAFB0 + ldr r0, _081AB9E4 + mov r2, r8 + ldrh r1, [r2] + ldrh r2, [r4] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + bl sub_08199654 + adds r0, r6, #0 + bl sub_081ABC58 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AB9DC: .4byte gUnknown_3005B68 +_081AB9E0: .4byte gUnknown_203CB24 +_081AB9E4: .4byte gUnknown_3006050 + thumb_func_end sub_081AB968 + + thumb_func_start sub_081AB9E8 +sub_081AB9E8: @ 0x081AB9E8 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081ABA00 + ldrb r0, [r0, #5] + cmp r0, #3 + bne _081ABA04 + movs r6, #4 + movs r3, #3 + b _081ABA08 + .align 2, 0 +_081ABA00: .4byte gUnknown_203CB24 +_081ABA04: + movs r6, #8 + movs r3, #2 +_081ABA08: + ldr r0, _081ABA44 + movs r1, #1 + movs r2, #2 + bl sub_080089D8 + ldr r4, _081ABA48 + ldr r1, _081ABA4C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r5, #0 + bl sub_081ADE14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r3, r6, #0 + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ABA44: .4byte gUnknown_2021C40 +_081ABA48: .4byte gUnknown_2021C7C +_081ABA4C: .4byte gUnknown_85C943C + thumb_func_end sub_081AB9E8 + + thumb_func_start sub_081ABA50 +sub_081ABA50: @ 0x081ABA50 + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r0, _081ABA6C + ldrb r0, [r0, #5] + cmp r0, #3 + bne _081ABA70 + movs r5, #4 + movs r3, #3 + b _081ABA74 + .align 2, 0 +_081ABA6C: .4byte gUnknown_203CB24 +_081ABA70: + movs r5, #8 + movs r3, #2 +_081ABA74: + ldr r0, _081ABAA8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #2 + bl sub_080089D8 + ldr r4, _081ABAAC + ldr r1, _081ABAB0 + adds r0, r4, #0 + bl sub_08008BCC + adds r3, r5, #0 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r6, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ABAA8: .4byte gUnknown_2021C40 +_081ABAAC: .4byte gUnknown_2021C7C +_081ABAB0: .4byte gUnknown_85C943C + thumb_func_end sub_081ABA50 + + thumb_func_start sub_081ABAB4 +sub_081ABAB4: @ 0x081ABAB4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + str r0, [sp] + ldr r1, _081ABB34 + adds r6, r0, r1 + ldr r5, _081ABB38 + ldrb r0, [r5, #5] + lsls r0, r0, #1 + adds r1, r5, #0 + adds r1, #0x12 + adds r7, r0, r1 + subs r1, #0xa + adds r0, r0, r1 + mov r8, r0 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081ABAF2 + b _081ABC3E +_081ABAF2: + ldr r0, _081ABB3C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081ABB00 + b _081ABC3E +_081ABB00: + bl sub_081ABC9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081ABB44 + cmp r0, #2 + beq _081ABB4C + ldr r0, _081ABB40 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + cmp r0, #0 + beq _081ABB9C + bl sub_081AC084 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081ABB30 + b _081ABC3E +_081ABB30: + b _081ABB58 + .align 2, 0 +_081ABB34: .4byte gUnknown_3005B68 +_081ABB38: .4byte gUnknown_203CB24 +_081ABB3C: .4byte gUnknown_2037C74 +_081ABB40: .4byte gUnknown_3002360 +_081ABB44: + movs r1, #1 + rsbs r1, r1, #0 + mov r0, sb + b _081ABB50 +_081ABB4C: + mov r0, sb + movs r1, #1 +_081ABB50: + movs r2, #0 + bl sub_081ABD34 + b _081ABC3E +_081ABB58: + ldrb r0, [r6] + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE538 + ldrh r2, [r7] + mov r3, r8 + ldrh r0, [r3] + adds r2, r2, r0 + ldr r0, _081ABB90 + ldr r0, [r0] + ldr r1, _081ABB94 + ldr r3, _081ABB98 + adds r0, r0, r3 + ldrb r1, [r1, #5] + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, #1 + cmp r2, r0 + beq _081ABC3E + movs r0, #5 + bl sub_080A306C + mov r0, sb + bl sub_081AC0AC + b _081ABC3E + .align 2, 0 +_081ABB90: .4byte gUnknown_203CB20 +_081ABB94: .4byte gUnknown_203CB24 +_081ABB98: .4byte 0x00000829 +_081ABB9C: + ldrb r0, [r6] + bl sub_081AE2DC + adds r4, r0, #0 + ldrb r0, [r6] + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081ABBBE + adds r0, #1 + cmp r4, r0 + bne _081ABBF4 + b _081ABC3E +_081ABBBE: + ldrb r0, [r5, #4] + cmp r0, #5 + bne _081ABBCC + movs r0, #0x20 + bl sub_080A306C + b _081ABC3E +_081ABBCC: + movs r0, #5 + bl sub_080A306C + ldr r0, _081ABBE8 + mov r1, sl + strh r1, [r0] + ldr r0, _081ABBEC + subs r0, #8 + ldr r3, [sp] + adds r0, r3, r0 + ldr r1, _081ABBF0 + str r1, [r0] + b _081ABC3E + .align 2, 0 +_081ABBE8: .4byte gUnknown_203CB48 +_081ABBEC: .4byte gUnknown_3005B68 +_081ABBF0: .4byte sub_081AB6A4 +_081ABBF4: + movs r0, #5 + bl sub_080A306C + bl sub_081AB5D0 + ldrb r0, [r6] + movs r1, #2 + bl sub_081AB4E8 + strh r4, [r6, #2] + ldrb r0, [r5, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r1, r4, #0 + bl sub_080D6748 + strh r0, [r6, #4] + ldrb r0, [r5, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_080D672C + ldr r1, _081ABC50 + strh r0, [r1] + ldr r1, _081ABC54 + ldrb r0, [r5, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + mov r0, sb + bl _call_via_r1 +_081ABC3E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ABC50: .4byte gUnknown_203CB48 +_081ABC54: .4byte gUnknown_85DF88C + thumb_func_end sub_081ABAB4 + + thumb_func_start sub_081ABC58 +sub_081ABC58: @ 0x081ABC58 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AB568 + bl sub_081AB600 + movs r0, #3 + bl sub_08003774 + movs r0, #4 + bl sub_08003774 + movs r0, #1 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + ldr r1, _081ABC94 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081ABC98 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ABC94: .4byte gUnknown_3005B60 +_081ABC98: .4byte sub_081ABAB4 + thumb_func_end sub_081ABC58 + + thumb_func_start sub_081ABC9C +sub_081ABC9C: @ 0x081ABC9C + push {lr} + ldr r0, _081ABCD4 + ldr r0, [r0] + ldr r1, _081ABCD8 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _081ABCF6 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081ABCDC + ldrh r1, [r0, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081ABCC8 + cmp r2, #1 + bne _081ABCE0 +_081ABCC8: + movs r0, #5 + bl sub_080A306C + movs r0, #1 + b _081ABCF8 + .align 2, 0 +_081ABCD4: .4byte gUnknown_203CB20 +_081ABCD8: .4byte 0x0000081B +_081ABCDC: .4byte gUnknown_3002360 +_081ABCE0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081ABCEC + cmp r2, #2 + bne _081ABCF6 +_081ABCEC: + movs r0, #5 + bl sub_080A306C + movs r0, #2 + b _081ABCF8 +_081ABCF6: + movs r0, #0 +_081ABCF8: + pop {r1} + bx r1 + thumb_func_end sub_081ABC9C + + thumb_func_start sub_081ABCFC +sub_081ABCFC: @ 0x081ABCFC + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + asrs r1, r1, #0x18 + cmp r1, #1 + bne _081ABD14 + ldrb r0, [r2] + cmp r0, #4 + bne _081ABD14 + movs r0, #0 + b _081ABD2C +_081ABD14: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + ldrb r3, [r2] + cmp r0, r1 + bne _081ABD2A + cmp r3, #0 + bne _081ABD2A + movs r0, #4 + b _081ABD2C +_081ABD2A: + adds r0, r3, r4 +_081ABD2C: + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081ABCFC + + thumb_func_start sub_081ABD34 +sub_081ABD34: @ 0x081ABD34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x10 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _081ABDFC + adds r4, r0, r1 + movs r0, #0 + strh r0, [r4, #0x1a] + strh r0, [r4, #0x18] + strh r5, [r4, #0x16] + cmp r2, #0 + bne _081ABDB6 + movs r0, #0 + bl sub_08003774 + movs r0, #1 + bl sub_08003774 + ldrb r0, [r4] + ldr r3, _081ABE00 + ldrb r2, [r3, #5] + lsls r2, r2, #1 + adds r1, r3, #0 + adds r1, #0x12 + adds r1, r2, r1 + adds r3, #8 + adds r2, r2, r3 + bl sub_081AE3A0 + movs r0, #0 + bl sub_08199654 + ldr r3, _081ABE04 + ldr r0, _081ABE08 + ldr r2, [r0] + ldr r1, _081ABE0C + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + movs r0, #1 + eors r0, r1 + adds r2, r2, r0 + ldr r0, _081ABE10 + adds r2, r2, r0 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + bl sub_081AB5D0 +_081ABDB6: + ldr r6, _081ABE00 + ldrb r1, [r6, #5] + add r0, sp, #8 + strb r1, [r0] + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + bl sub_081ABCFC + lsls r0, r5, #0x10 + asrs r1, r0, #0x10 + mov r8, r0 + cmp r1, #1 + bne _081ABE1C + ldr r4, _081ABE14 + ldrb r0, [r6, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + ldr r5, _081ABE18 + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080088B8 + add r0, sp, #8 + ldrb r0, [r0] + lsls r1, r0, #3 + adds r1, r1, r0 + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080088D8 + adds r0, r4, #0 + movs r1, #0 + bl sub_081AB4A0 + b _081ABE46 + .align 2, 0 +_081ABDFC: .4byte gUnknown_3005B68 +_081ABE00: .4byte gUnknown_203CB24 +_081ABE04: .4byte gUnknown_20205AC +_081ABE08: .4byte gUnknown_203CB20 +_081ABE0C: .4byte 0x0000081B +_081ABE10: .4byte 0x00000806 +_081ABE14: .4byte gUnknown_2021C7C +_081ABE18: .4byte gUnknown_85C9742 +_081ABE1C: + ldr r4, _081ABEAC + add r0, sp, #8 + ldrb r0, [r0] + lsls r1, r0, #3 + adds r1, r1, r0 + ldr r5, _081ABEB0 + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080088B8 + ldrb r0, [r6, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080088D8 + adds r0, r4, #0 + movs r1, #8 + bl sub_081AB4A0 +_081ABE46: + ldr r0, _081ABEB4 + ldrb r0, [r0, #5] + movs r1, #0 + bl sub_081AC030 + add r0, sp, #8 + ldrb r0, [r0] + movs r1, #1 + bl sub_081AC030 + movs r0, #0xf + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + movs r0, #2 + movs r1, #0xb + movs r2, #0xe + movs r3, #2 + bl sub_080025E0 + movs r0, #2 + bl sub_08199654 + add r0, sp, #8 + ldrb r0, [r0] + movs r1, #1 + bl sub_080D45BC + movs r0, #1 + bl sub_080D452C + mov r1, r8 + asrs r0, r1, #0x10 + bl sub_080D46B8 + ldr r1, _081ABEB8 + ldr r2, _081ABEBC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r2, [r0] + adds r0, r7, #0 + bl sub_080A8A44 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ABEAC: .4byte gUnknown_2021C7C +_081ABEB0: .4byte gUnknown_85C9742 +_081ABEB4: .4byte gUnknown_203CB24 +_081ABEB8: .4byte sub_081ABEC0 +_081ABEBC: .4byte gUnknown_3005B60 + thumb_func_end sub_081ABD34 + + thumb_func_start sub_081ABEC0 +sub_081ABEC0: @ 0x081ABEC0 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _081ABEF8 + adds r6, r0, r1 + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081ABF38 + bl sub_081ADA60 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081ABF38 + bl sub_081ABC9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081ABEFC + cmp r0, #2 + beq _081ABF18 + b _081ABF38 + .align 2, 0 +_081ABEF8: .4byte gUnknown_3005B68 +_081ABEFC: + ldr r0, _081ABF14 + movs r1, #0x16 + ldrsb r1, [r6, r1] + bl sub_081ABCFC + adds r0, r7, #0 + bl sub_080A8A78 + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r7, #0 + b _081ABF2C + .align 2, 0 +_081ABF14: .4byte gUnknown_203CB29 +_081ABF18: + ldr r0, _081ABF34 + movs r1, #0x16 + ldrsb r1, [r6, r1] + bl sub_081ABCFC + adds r0, r7, #0 + bl sub_080A8A78 + adds r0, r7, #0 + movs r1, #1 +_081ABF2C: + movs r2, #1 + bl sub_081ABD34 + b _081ABFF2 + .align 2, 0 +_081ABF34: .4byte gUnknown_203CB29 +_081ABF38: + movs r1, #0x1a + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _081ABF46 + cmp r0, #1 + beq _081ABFA0 + b _081ABFF2 +_081ABF46: + ldrb r0, [r6, #0x18] + bl sub_081AC000 + ldrh r0, [r6, #0x18] + adds r1, r0, #1 + strh r1, [r6, #0x18] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081ABF8A + movs r2, #0x16 + ldrsh r0, [r6, r2] + cmp r0, #1 + bne _081ABF78 + ldr r0, _081ABF74 + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_081AB4A0 + b _081ABF8A + .align 2, 0 +_081ABF74: .4byte gUnknown_2021C7C +_081ABF78: + ldr r0, _081ABF9C + lsls r2, r1, #0x10 + asrs r2, r2, #0x11 + movs r1, #8 + subs r1, r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_081AB4A0 +_081ABF8A: + movs r1, #0x18 + ldrsh r0, [r6, r1] + cmp r0, #0x10 + bne _081ABFF2 + ldrh r0, [r6, #0x1a] + adds r0, #1 + strh r0, [r6, #0x1a] + b _081ABFF2 + .align 2, 0 +_081ABF9C: .4byte gUnknown_2021C7C +_081ABFA0: + ldr r4, _081ABFF8 + movs r1, #0x16 + ldrsb r1, [r6, r1] + adds r0, r4, #0 + bl sub_081ABCFC + subs r5, r4, #5 + ldrb r0, [r5, #5] + bl sub_081AAFB0 + ldr r0, _081ABFFC + ldrb r2, [r5, #5] + lsls r2, r2, #1 + adds r1, r4, #0 + adds r1, #0xd + adds r1, r2, r1 + ldrh r1, [r1] + adds r4, #3 + adds r2, r2, r4 + ldrh r2, [r2] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6] + movs r0, #1 + bl sub_0800365C + movs r0, #2 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + bl sub_081AB568 + bl sub_081AB600 + adds r0, r7, #0 + bl sub_080A8A78 +_081ABFF2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ABFF8: .4byte gUnknown_203CB29 +_081ABFFC: .4byte gUnknown_3006050 + thumb_func_end sub_081ABEC0 + + thumb_func_start sub_081AC000 +sub_081AC000: @ 0x081AC000 + push {lr} + sub sp, #8 + adds r3, r0, #0 + lsls r3, r3, #0x18 + movs r0, #0x80 + lsls r0, r0, #0x12 + adds r3, r3, r0 + lsrs r3, r3, #0x18 + movs r0, #0xf + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #2 + movs r1, #0x11 + movs r2, #0xe + bl sub_080025E0 + movs r0, #2 + bl sub_08199654 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AC000 + + thumb_func_start sub_081AC030 +sub_081AC030: @ 0x081AC030 + push {lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + cmp r1, #0 + bne _081AC05C + ldr r1, _081AC058 + adds r2, r0, #5 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #2 + movs r3, #3 + bl sub_080025E0 + b _081AC072 + .align 2, 0 +_081AC058: .4byte 0x00001017 +_081AC05C: + ldr r1, _081AC080 + adds r2, r0, #5 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #1 + str r0, [sp] + str r0, [sp, #4] + movs r0, #2 + movs r3, #3 + bl sub_080025E0 +_081AC072: + movs r0, #2 + bl sub_08199654 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081AC080: .4byte 0x0000102B + thumb_func_end sub_081AC030 + + thumb_func_start sub_081AC084 +sub_081AC084: @ 0x081AC084 + push {lr} + ldr r1, _081AC0A0 + ldrb r0, [r1, #4] + cmp r0, #1 + bhi _081AC0A4 + ldrb r0, [r1, #5] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081AC0A4 + movs r0, #1 + b _081AC0A6 + .align 2, 0 +_081AC0A0: .4byte gUnknown_203CB24 +_081AC0A4: + movs r0, #0 +_081AC0A6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AC084 + + thumb_func_start sub_081AC0AC +sub_081AC0AC: @ 0x081AC0AC + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081AC164 + mov sb, r0 + adds r6, r4, r0 + ldrb r0, [r6] + movs r1, #0x10 + movs r2, #1 + bl sub_081AEE34 + ldr r3, _081AC168 + ldrb r0, [r3, #5] + lsls r0, r0, #1 + adds r2, r3, #0 + adds r2, #0x12 + adds r2, r0, r2 + adds r1, r3, #0 + adds r1, #8 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r2, [r2] + adds r1, r1, r2 + strh r1, [r6, #2] + ldr r0, _081AC16C + ldr r0, [r0] + ldr r2, _081AC170 + adds r0, r0, r2 + movs r5, #0 + strb r1, [r0] + ldrb r0, [r3, #5] + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r6, #2] + bl sub_080D672C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081AC174 + bl sub_080D5EC8 + ldr r0, _081AC178 + mov r8, r0 + ldr r1, _081AC17C + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + str r5, [sp, #0x10] + movs r0, #1 + movs r1, #1 + mov r2, r8 + movs r3, #0 + bl sub_081ADD94 + ldrb r0, [r6, #2] + bl sub_080D4870 + bl sub_081AB648 + ldrb r0, [r6] + movs r1, #2 + bl sub_081AB4E8 + movs r2, #8 + rsbs r2, r2, #0 + add sb, r2 + add r4, sb + ldr r0, _081AC180 + str r0, [r4] + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AC164: .4byte gUnknown_3005B68 +_081AC168: .4byte gUnknown_203CB24 +_081AC16C: .4byte gUnknown_203CB20 +_081AC170: .4byte 0x0000081A +_081AC174: .4byte gUnknown_2021C40 +_081AC178: .4byte gUnknown_2021C7C +_081AC17C: .4byte gUnknown_85C947F +_081AC180: .4byte sub_081AC184 + thumb_func_end sub_081AC0AC + + thumb_func_start sub_081AC184 +sub_081AC184: @ 0x081AC184 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081AC1D0 + adds r4, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AC252 + ldr r0, _081AC1D4 + mov r8, r0 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081AC1DC + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + ldr r3, _081AC1D8 + ldrb r2, [r3, #5] + lsls r2, r2, #1 + adds r1, r3, #0 + adds r1, #0x12 + adds r1, r2, r1 + adds r3, #8 + adds r2, r2, r3 + bl sub_081AE538 + b _081AC236 + .align 2, 0 +_081AC1D0: .4byte gUnknown_3005B68 +_081AC1D4: .4byte gUnknown_3002360 +_081AC1D8: .4byte gUnknown_203CB24 +_081AC1DC: + ldrb r0, [r4] + bl sub_081AE2DC + adds r7, r0, #0 + ldrb r0, [r4] + ldr r5, _081AC220 + ldrb r2, [r5, #5] + lsls r2, r2, #1 + adds r1, r5, #0 + adds r1, #0x12 + adds r1, r2, r1 + adds r4, r5, #0 + adds r4, #8 + adds r2, r2, r4 + bl sub_081AE538 + movs r0, #0 + bl sub_080D484C + ldrb r0, [r5, #5] + lsls r0, r0, #1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080D4870 + movs r0, #2 + rsbs r0, r0, #0 + cmp r7, r0 + beq _081AC224 + adds r0, #1 + cmp r7, r0 + bne _081AC246 + b _081AC252 + .align 2, 0 +_081AC220: .4byte gUnknown_203CB24 +_081AC224: + movs r0, #5 + bl sub_080A306C + mov r0, r8 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AC23E +_081AC236: + adds r0, r6, #0 + bl sub_081AC25C + b _081AC252 +_081AC23E: + adds r0, r6, #0 + bl sub_081AC354 + b _081AC252 +_081AC246: + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_081AC25C +_081AC252: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081AC184 + + thumb_func_start sub_081AC25C +sub_081AC25C: @ 0x081AC25C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #3 + mov sl, r0 + ldr r0, _081AC2B0 + add r0, sl + mov sb, r0 + ldr r5, _081AC2B4 + ldrb r6, [r5, #5] + lsls r1, r6, #1 + adds r0, r5, #0 + adds r0, #0x12 + adds r0, r0, r1 + mov r8, r0 + ldr r2, _081AC2B8 + adds r7, r1, r2 + ldrh r0, [r7] + mov r1, r8 + ldrh r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + mov r0, sb + movs r1, #2 + ldrsh r2, [r0, r1] + cmp r2, r4 + beq _081AC2A6 + subs r0, r4, #1 + cmp r2, r0 + bne _081AC2BC +_081AC2A6: + adds r0, r3, #0 + bl sub_081AC354 + b _081AC32A + .align 2, 0 +_081AC2B0: .4byte gUnknown_3005B68 +_081AC2B4: .4byte gUnknown_203CB24 +_081AC2B8: .4byte gUnknown_203CB2C +_081AC2BC: + ldr r1, _081AC338 + lsls r0, r6, #3 + adds r0, r0, r1 + ldr r0, [r0] + adds r1, r2, #0 + adds r2, r4, #0 + bl sub_080D6844 + ldr r0, _081AC33C + ldr r0, [r0] + ldr r2, _081AC340 + adds r0, r0, r2 + movs r1, #0xff + strb r1, [r0] + mov r1, sb + ldrb r0, [r1] + mov r1, r8 + adds r2, r7, #0 + bl sub_081AE3A0 + mov r2, sb + movs r1, #2 + ldrsh r0, [r2, r1] + cmp r0, r4 + bge _081AC2FC + ldrb r1, [r5, #5] + lsls r1, r1, #1 + ldr r2, _081AC344 + adds r1, r1, r2 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_081AC2FC: + ldrb r0, [r5, #5] + bl sub_081AAFB0 + ldr r0, _081AC348 + mov r2, r8 + ldrh r1, [r2] + ldrh r2, [r7] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, sb + strh r0, [r1] + movs r0, #1 + bl sub_080D484C + bl sub_081AB600 + ldr r0, _081AC34C + subs r0, #8 + add r0, sl + ldr r1, _081AC350 + str r1, [r0] +_081AC32A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AC338: .4byte gUnknown_2039A78 +_081AC33C: .4byte gUnknown_203CB20 +_081AC340: .4byte 0x0000081A +_081AC344: .4byte gUnknown_203CB2C +_081AC348: .4byte gUnknown_3006050 +_081AC34C: .4byte gUnknown_3005B68 +_081AC350: .4byte sub_081ABAB4 + thumb_func_end sub_081AC25C + + thumb_func_start sub_081AC354 +sub_081AC354: @ 0x081AC354 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + mov sb, r1 + ldr r0, _081AC3F0 + mov sl, r0 + mov r7, sb + add r7, sl + ldr r4, _081AC3F4 + ldrb r0, [r4, #5] + lsls r0, r0, #1 + adds r1, r4, #0 + adds r1, #0x12 + adds r6, r0, r1 + movs r1, #8 + adds r1, r1, r4 + mov r8, r1 + adds r5, r0, r1 + ldr r0, _081AC3F8 + ldr r0, [r0] + ldr r1, _081AC3FC + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldrb r0, [r7] + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_081AE3A0 + movs r0, #2 + ldrsh r2, [r7, r0] + ldrh r0, [r6] + ldrh r1, [r5] + adds r0, r0, r1 + cmp r2, r0 + bge _081AC3B6 + ldrb r1, [r4, #5] + lsls r1, r1, #1 + add r1, r8 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] +_081AC3B6: + ldrb r0, [r4, #5] + bl sub_081AAFB0 + ldr r0, _081AC400 + ldrh r1, [r6] + ldrh r2, [r5] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7] + movs r0, #1 + bl sub_080D484C + bl sub_081AB600 + mov r0, sl + subs r0, #8 + add r0, sb + ldr r1, _081AC404 + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AC3F0: .4byte gUnknown_3005B68 +_081AC3F4: .4byte gUnknown_203CB24 +_081AC3F8: .4byte gUnknown_203CB20 +_081AC3FC: .4byte 0x0000081A +_081AC400: .4byte gUnknown_3006050 +_081AC404: .4byte sub_081ABAB4 + thumb_func_end sub_081AC354 + + thumb_func_start sub_081AC408 +sub_081AC408: @ 0x081AC408 + push {r4, r5, lr} + sub sp, #0x14 + ldr r0, _081AC424 + ldrb r0, [r0, #4] + subs r0, #1 + cmp r0, #9 + bls _081AC418 + b _081AC5F0 +_081AC418: + lsls r0, r0, #2 + ldr r1, _081AC428 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AC424: .4byte gUnknown_203CB24 +_081AC428: .4byte _081AC42C +_081AC42C: @ jump table + .4byte _081AC454 @ case 0 + .4byte _081AC5F0 @ case 1 + .4byte _081AC5F0 @ case 2 + .4byte _081AC5F0 @ case 3 + .4byte _081AC4AC @ case 4 + .4byte _081AC5F0 @ case 5 + .4byte _081AC530 @ case 6 + .4byte _081AC590 @ case 7 + .4byte _081AC4D0 @ case 8 + .4byte _081AC454 @ case 9 +_081AC454: + ldr r0, _081AC478 + ldrh r0, [r0] + bl sub_080D6E20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AC488 + ldr r0, _081AC47C + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC480 + str r0, [r2] + ldr r0, _081AC484 + adds r1, r1, r0 + movs r0, #2 + b _081AC7D4 + .align 2, 0 +_081AC478: .4byte gUnknown_203CB48 +_081AC47C: .4byte gUnknown_203CB20 +_081AC480: .4byte gUnknown_85DF87A +_081AC484: .4byte 0x00000828 +_081AC488: + ldr r0, _081AC4A0 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC4A4 + str r0, [r2] + ldr r0, _081AC4A8 + adds r1, r1, r0 + movs r0, #1 + b _081AC7D4 + .align 2, 0 +_081AC4A0: .4byte gUnknown_203CB20 +_081AC4A4: .4byte gUnknown_85DF87E +_081AC4A8: .4byte 0x00000828 +_081AC4AC: + ldr r0, _081AC4C4 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC4C8 + str r0, [r2] + ldr r0, _081AC4CC + adds r1, r1, r0 + movs r0, #4 + b _081AC7D4 + .align 2, 0 +_081AC4C4: .4byte gUnknown_203CB20 +_081AC4C8: .4byte gUnknown_85DF87F +_081AC4CC: .4byte 0x00000828 +_081AC4D0: + ldr r4, _081AC4FC + ldrh r0, [r4] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AC50C + ldrh r0, [r4] + cmp r0, #0xaf + beq _081AC50C + ldr r0, _081AC500 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC504 + str r0, [r2] + ldr r0, _081AC508 + adds r1, r1, r0 + movs r0, #2 + b _081AC7D4 + .align 2, 0 +_081AC4FC: .4byte gUnknown_203CB48 +_081AC500: .4byte gUnknown_203CB20 +_081AC504: .4byte gUnknown_85DF883 +_081AC508: .4byte 0x00000828 +_081AC50C: + ldr r0, _081AC524 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC528 + str r0, [r2] + ldr r0, _081AC52C + adds r1, r1, r0 + movs r0, #1 + b _081AC7D4 + .align 2, 0 +_081AC524: .4byte gUnknown_203CB20 +_081AC528: .4byte gUnknown_85DF87E +_081AC52C: .4byte 0x00000828 +_081AC530: + ldr r4, _081AC55C + ldrh r0, [r4] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AC56C + ldrh r0, [r4] + cmp r0, #0xaf + beq _081AC56C + ldr r0, _081AC560 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC564 + str r0, [r2] + ldr r0, _081AC568 + adds r1, r1, r0 + movs r0, #2 + b _081AC7D4 + .align 2, 0 +_081AC55C: .4byte gUnknown_203CB48 +_081AC560: .4byte gUnknown_203CB20 +_081AC564: .4byte gUnknown_85DF885 +_081AC568: .4byte 0x00000828 +_081AC56C: + ldr r0, _081AC584 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC588 + str r0, [r2] + ldr r0, _081AC58C + adds r1, r1, r0 + movs r0, #1 + b _081AC7D4 + .align 2, 0 +_081AC584: .4byte gUnknown_203CB20 +_081AC588: .4byte gUnknown_85DF87E +_081AC58C: .4byte 0x00000828 +_081AC590: + ldr r4, _081AC5BC + ldrh r0, [r4] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AC5CC + ldrh r0, [r4] + cmp r0, #0xaf + beq _081AC5CC + ldr r0, _081AC5C0 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC5C4 + str r0, [r2] + ldr r0, _081AC5C8 + adds r1, r1, r0 + movs r0, #2 + b _081AC7D4 + .align 2, 0 +_081AC5BC: .4byte gUnknown_203CB48 +_081AC5C0: .4byte gUnknown_203CB20 +_081AC5C4: .4byte gUnknown_85DF887 +_081AC5C8: .4byte 0x00000828 +_081AC5CC: + ldr r0, _081AC5E4 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC5E8 + str r0, [r2] + ldr r0, _081AC5EC + adds r1, r1, r0 + movs r0, #1 + b _081AC7D4 + .align 2, 0 +_081AC5E4: .4byte gUnknown_203CB20 +_081AC5E8: .4byte gUnknown_85DF87E +_081AC5EC: .4byte 0x00000828 +_081AC5F0: + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AC604 + bl sub_08017AC0 + cmp r0, #1 + bne _081AC668 +_081AC604: + ldr r0, _081AC630 + ldrb r0, [r0, #5] + cmp r0, #4 + beq _081AC61A + ldr r0, _081AC634 + ldrh r0, [r0] + bl sub_08122154 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AC644 +_081AC61A: + ldr r0, _081AC638 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC63C + str r0, [r2] + ldr r0, _081AC640 + adds r1, r1, r0 + movs r0, #1 + b _081AC7D4 + .align 2, 0 +_081AC630: .4byte gUnknown_203CB24 +_081AC634: .4byte gUnknown_203CB48 +_081AC638: .4byte gUnknown_203CB20 +_081AC63C: .4byte gUnknown_85DF87E +_081AC640: .4byte 0x00000828 +_081AC644: + ldr r0, _081AC65C + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC660 + str r0, [r2] + ldr r0, _081AC664 + adds r1, r1, r0 + movs r0, #2 + b _081AC7D4 + .align 2, 0 +_081AC65C: .4byte gUnknown_203CB20 +_081AC660: .4byte gUnknown_85DF87C +_081AC664: .4byte 0x00000828 +_081AC668: + ldr r0, _081AC67C + ldrb r0, [r0, #5] + cmp r0, #4 + bls _081AC672 + b _081AC7D6 +_081AC672: + lsls r0, r0, #2 + ldr r1, _081AC680 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AC67C: .4byte gUnknown_203CB24 +_081AC680: .4byte _081AC684 +_081AC684: @ jump table + .4byte _081AC698 @ case 0 + .4byte _081AC778 @ case 1 + .4byte _081AC79C @ case 2 + .4byte _081AC7C0 @ case 3 + .4byte _081AC6F0 @ case 4 +_081AC698: + ldr r4, _081AC6DC + ldr r1, [r4] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r3, _081AC6E0 + adds r0, r1, r3 + str r0, [r2] + ldr r0, _081AC6E4 + adds r1, r1, r0 + movs r0, #4 + strb r0, [r1] + ldr r0, [r4] + adds r0, r0, r3 + ldr r1, _081AC6E8 + movs r2, #4 + bl memcpy + ldr r0, _081AC6EC + ldrh r0, [r0] + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AC6CE + b _081AC7D6 +_081AC6CE: + ldr r0, [r4] + ldr r1, _081AC6E0 + adds r0, r0, r1 + movs r1, #6 + strb r1, [r0] + b _081AC7D6 + .align 2, 0 +_081AC6DC: .4byte gUnknown_203CB20 +_081AC6E0: .4byte 0x00000824 +_081AC6E4: .4byte 0x00000828 +_081AC6E8: .4byte gUnknown_85DF864 +_081AC6EC: .4byte gUnknown_203CB48 +_081AC6F0: + ldr r4, _081AC754 + ldr r1, [r4] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r5, _081AC758 + adds r0, r1, r5 + str r0, [r2] + ldr r0, _081AC75C + adds r1, r1, r0 + movs r0, #4 + strb r0, [r1] + ldr r0, [r4] + adds r0, r0, r5 + ldr r1, _081AC760 + movs r2, #4 + bl memcpy + ldr r0, _081AC764 + ldr r0, [r0] + ldr r1, _081AC768 + adds r0, r0, r1 + ldr r2, _081AC76C + ldrh r0, [r0] + ldrh r1, [r2] + cmp r0, r1 + bne _081AC730 + ldr r0, [r4] + ldr r1, _081AC770 + adds r0, r0, r1 + movs r1, #8 + strb r1, [r0] +_081AC730: + ldrh r1, [r2] + ldr r0, _081AC774 + cmp r1, r0 + beq _081AC73E + adds r0, #0xd + cmp r1, r0 + bne _081AC7D6 +_081AC73E: + movs r0, #6 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AC7D6 + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #7 + strb r1, [r0] + b _081AC7D6 + .align 2, 0 +_081AC754: .4byte gUnknown_203CB20 +_081AC758: .4byte 0x00000824 +_081AC75C: .4byte 0x00000828 +_081AC760: .4byte gUnknown_85DF868 +_081AC764: .4byte gUnknown_3005AEC +_081AC768: .4byte 0x00000496 +_081AC76C: .4byte gUnknown_203CB48 +_081AC770: .4byte 0x00000825 +_081AC774: .4byte 0x00000103 +_081AC778: + ldr r0, _081AC790 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC794 + str r0, [r2] + ldr r0, _081AC798 + adds r1, r1, r0 + movs r0, #4 + b _081AC7D4 + .align 2, 0 +_081AC790: .4byte gUnknown_203CB20 +_081AC794: .4byte gUnknown_85DF86C +_081AC798: .4byte 0x00000828 +_081AC79C: + ldr r0, _081AC7B4 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC7B8 + str r0, [r2] + ldr r0, _081AC7BC + adds r1, r1, r0 + movs r0, #4 + b _081AC7D4 + .align 2, 0 +_081AC7B4: .4byte gUnknown_203CB20 +_081AC7B8: .4byte gUnknown_85DF870 +_081AC7BC: .4byte 0x00000828 +_081AC7C0: + ldr r0, _081AC800 + ldr r1, [r0] + movs r0, #0x82 + lsls r0, r0, #4 + adds r2, r1, r0 + ldr r0, _081AC804 + str r0, [r2] + ldr r0, _081AC808 + adds r1, r1, r0 + movs r0, #6 +_081AC7D4: + strb r0, [r1] +_081AC7D6: + ldr r0, _081AC80C + ldrb r0, [r0, #5] + cmp r0, #2 + bne _081AC814 + movs r0, #1 + bl sub_08003774 + ldr r0, _081AC810 + ldrh r0, [r0] + bl sub_081ADFD4 + movs r0, #3 + bl sub_0800365C + movs r0, #4 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + b _081AC84A + .align 2, 0 +_081AC800: .4byte gUnknown_203CB20 +_081AC804: .4byte gUnknown_85DF874 +_081AC808: .4byte 0x00000828 +_081AC80C: .4byte gUnknown_203CB24 +_081AC810: .4byte gUnknown_203CB48 +_081AC814: + ldr r0, _081AC85C + ldrh r0, [r0] + ldr r1, _081AC860 + bl sub_080D5EC8 + ldr r4, _081AC864 + ldr r1, _081AC868 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 +_081AC84A: + ldr r0, _081AC86C + ldr r0, [r0] + ldr r1, _081AC870 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _081AC874 + movs r0, #0 + b _081AC87A + .align 2, 0 +_081AC85C: .4byte gUnknown_203CB48 +_081AC860: .4byte gUnknown_2021C40 +_081AC864: .4byte gUnknown_2021C7C +_081AC868: .4byte gUnknown_85C9450 +_081AC86C: .4byte gUnknown_203CB20 +_081AC870: .4byte 0x00000828 +_081AC874: + cmp r0, #2 + bne _081AC888 + movs r0, #1 +_081AC87A: + bl sub_081ADE14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081AC8BC + b _081AC8B2 +_081AC888: + cmp r0, #4 + bne _081AC8A0 + movs r0, #2 + bl sub_081ADE14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + movs r2, #2 + bl sub_081AC938 + b _081AC8B2 +_081AC8A0: + movs r0, #3 + bl sub_081ADE14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + movs r2, #3 + bl sub_081AC938 +_081AC8B2: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AC408 + + thumb_func_start sub_081AC8BC +sub_081AC8BC: @ 0x081AC8BC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + mov r8, r0 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + ldr r6, _081AC92C + ldr r1, [r6] + ldr r5, _081AC930 + adds r0, r1, r5 + ldrb r0, [r0] + str r0, [sp, #8] + ldr r0, _081AC934 + str r0, [sp, #0xc] + movs r0, #0x82 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_081989B4 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AC92C: .4byte gUnknown_203CB20 +_081AC930: .4byte 0x00000828 +_081AC934: .4byte gUnknown_85DF7EC + thumb_func_end sub_081AC8BC + + thumb_func_start sub_081AC938 +sub_081AC938: @ 0x081AC938 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x30 + mov r8, r0 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + ldr r0, _081AC9A0 + str r0, [sp, #0xc] + ldr r0, _081AC9A4 + ldr r0, [r0] + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #0x10] + adds r0, r6, #0 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08198ECC + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081990E4 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AC9A0: .4byte gUnknown_85DF7EC +_081AC9A4: .4byte gUnknown_203CB20 + thumb_func_end sub_081AC938 + + thumb_func_start sub_081AC9A8 +sub_081AC9A8: @ 0x081AC9A8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_081AC408 + ldr r0, _081AC9D0 + ldr r0, [r0] + ldr r1, _081AC9D4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + bhi _081AC9E0 + ldr r0, _081AC9D8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081AC9DC + b _081AC9EC + .align 2, 0 +_081AC9D0: .4byte gUnknown_203CB20 +_081AC9D4: .4byte 0x00000828 +_081AC9D8: .4byte gUnknown_3005B60 +_081AC9DC: .4byte sub_081AC9FC +_081AC9E0: + ldr r0, _081AC9F4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081AC9F8 +_081AC9EC: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AC9F4: .4byte gUnknown_3005B60 +_081AC9F8: .4byte sub_081ACA70 + thumb_func_end sub_081AC9A8 + + thumb_func_start sub_081AC9FC +sub_081AC9FC: @ 0x081AC9FC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081ACA62 + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081ACA62 + adds r0, #1 + cmp r4, r0 + bne _081ACA3C + movs r0, #5 + bl sub_080A306C + ldr r0, _081ACA38 + ldr r1, [r0, #0x24] + adds r0, r5, #0 + bl _call_via_r1 + b _081ACA62 + .align 2, 0 +_081ACA38: .4byte gUnknown_85DF7EC +_081ACA3C: + movs r0, #5 + bl sub_080A306C + ldr r1, _081ACA68 + ldr r0, _081ACA6C + ldr r0, [r0] + movs r2, #0x82 + lsls r2, r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 +_081ACA62: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ACA68: .4byte gUnknown_85DF7EC +_081ACA6C: .4byte gUnknown_203CB20 + thumb_func_end sub_081AC9FC + + thumb_func_start sub_081ACA70 +sub_081ACA70: @ 0x081ACA70 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081ACA84 + b _081ACBE8 +_081ACA84: + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081ACAC8 + ldrh r1, [r5, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081ACACC + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bgt _081ACAA2 + b _081ACBE8 +_081ACAA2: + subs r0, #2 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081ACBF4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081ACAB4 + b _081ACBE8 +_081ACAB4: + movs r0, #5 + bl sub_080A306C + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + bl sub_08199250 + b _081ACBE8 + .align 2, 0 +_081ACAC8: .4byte gUnknown_3002360 +_081ACACC: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081ACB14 + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + ldr r0, _081ACB0C + ldr r0, [r0] + ldr r2, _081ACB10 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #2 + cmp r1, r0 + blt _081ACAEA + b _081ACBE8 +_081ACAEA: + adds r0, r1, #2 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081ACBF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081ACBE8 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #1 + bl sub_08199250 + b _081ACBE8 + .align 2, 0 +_081ACB0C: .4byte gUnknown_203CB20 +_081ACB10: .4byte 0x00000828 +_081ACB14: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081ACB28 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081ACB50 +_081ACB28: + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081ACBE8 + subs r0, r1, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081ACBF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081ACBE8 + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _081ACB8A +_081ACB50: + ldrh r1, [r5, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081ACB66 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081ACB92 +_081ACB66: + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081ACBE8 + adds r0, r1, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081ACBF4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081ACBE8 + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_081ACB8A: + movs r1, #0 + bl sub_08199250 + b _081ACBE8 +_081ACB92: + ldrh r1, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081ACBD0 + movs r0, #5 + bl sub_080A306C + ldr r2, _081ACBC8 + ldr r0, _081ACBCC + ldr r0, [r0] + lsls r1, r4, #0x18 + asrs r1, r1, #0x18 + movs r3, #0x82 + lsls r3, r3, #4 + adds r0, r0, r3 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r2, #4 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 + b _081ACBE8 + .align 2, 0 +_081ACBC8: .4byte gUnknown_85DF7EC +_081ACBCC: .4byte gUnknown_203CB20 +_081ACBD0: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081ACBE8 + movs r0, #5 + bl sub_080A306C + ldr r0, _081ACBF0 + ldr r1, [r0, #0x24] + adds r0, r6, #0 + bl _call_via_r1 +_081ACBE8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ACBF0: .4byte gUnknown_85DF7EC + thumb_func_end sub_081ACA70 + + thumb_func_start sub_081ACBF4 +sub_081ACBF4: @ 0x081ACBF4 + push {lr} + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + blt _081ACC28 + ldr r0, _081ACC20 + ldr r2, [r0] + ldr r3, _081ACC24 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bgt _081ACC28 + movs r3, #0x82 + lsls r3, r3, #4 + adds r0, r2, r3 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xe + beq _081ACC28 + movs r0, #1 + b _081ACC2A + .align 2, 0 +_081ACC20: .4byte gUnknown_203CB20 +_081ACC24: .4byte 0x00000828 +_081ACC28: + movs r0, #0 +_081ACC2A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081ACBF4 + + thumb_func_start sub_081ACC30 +sub_081ACC30: @ 0x081ACC30 + push {lr} + ldr r0, _081ACC48 + ldr r0, [r0] + ldr r1, _081ACC4C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _081ACC50 + movs r0, #0 + bl sub_081ADE5C + b _081ACC6E + .align 2, 0 +_081ACC48: .4byte gUnknown_203CB20 +_081ACC4C: .4byte 0x00000828 +_081ACC50: + cmp r0, #2 + bne _081ACC5C + movs r0, #1 + bl sub_081ADE5C + b _081ACC6E +_081ACC5C: + cmp r0, #4 + bne _081ACC68 + movs r0, #2 + bl sub_081ADE5C + b _081ACC6E +_081ACC68: + movs r0, #3 + bl sub_081ADE5C +_081ACC6E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081ACC30 + + thumb_func_start sub_081ACC74 +sub_081ACC74: @ 0x081ACC74 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081ACCAC + ldrh r0, [r5] + bl sub_080D6DF8 + cmp r0, #0 + beq _081ACCE6 + bl sub_081ACC30 + bl sub_0806B004 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081ACCB0 + ldrh r0, [r5] + bl sub_080D6DD4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081ACCB0 + adds r0, r4, #0 + bl sub_081AD0E8 + b _081ACCE6 + .align 2, 0 +_081ACCAC: .4byte gUnknown_203CB48 +_081ACCB0: + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_08199654 + ldr r0, _081ACCD8 + ldrb r0, [r0, #5] + cmp r0, #3 + beq _081ACCE0 + ldr r0, _081ACCDC + ldrh r0, [r0] + bl sub_080D6DF8 + adds r1, r0, #0 + adds r0, r4, #0 + bl _call_via_r1 + b _081ACCE6 + .align 2, 0 +_081ACCD8: .4byte gUnknown_203CB24 +_081ACCDC: .4byte gUnknown_203CB48 +_081ACCE0: + adds r0, r4, #0 + bl sub_080FE564 +_081ACCE6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081ACC74 + + thumb_func_start sub_081ACCEC +sub_081ACCEC: @ 0x081ACCEC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r6, r0, #3 + ldr r7, _081ACD18 + adds r4, r6, r7 + bl sub_081ACC30 + movs r0, #1 + strh r0, [r4, #0x10] + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _081ACD1C + adds r0, r5, #0 + bl sub_081ACD80 + b _081ACD62 + .align 2, 0 +_081ACD18: .4byte gUnknown_3005B68 +_081ACD1C: + ldr r0, _081ACD6C + ldrh r0, [r0] + ldr r1, _081ACD70 + bl sub_080D5EC8 + ldr r4, _081ACD74 + ldr r1, _081ACD78 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 + movs r0, #7 + bl sub_081AB9E8 + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081ACD7C + str r1, [r0] +_081ACD62: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ACD6C: .4byte gUnknown_203CB48 +_081ACD70: .4byte gUnknown_2021C40 +_081ACD74: .4byte gUnknown_2021C7C +_081ACD78: .4byte gUnknown_85C9523 +_081ACD7C: .4byte sub_081ACE3C + thumb_func_end sub_081ACCEC + + thumb_func_start sub_081ACD80 +sub_081ACD80: @ 0x081ACD80 + push {r4, r5, lr} + sub sp, #0x14 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081ACDEC + adds r4, r4, r0 + ldr r0, _081ACDF0 + ldrh r0, [r0] + ldr r1, _081ACDF4 + bl sub_080D5EC8 + ldr r0, _081ACDF8 + movs r2, #0x10 + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081ACDFC + ldr r1, _081ACE00 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 + ldr r2, _081ACE04 + adds r0, r5, #0 + movs r1, #5 + bl sub_081ADF10 + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081ACDEC: .4byte gUnknown_3005B68 +_081ACDF0: .4byte gUnknown_203CB48 +_081ACDF4: .4byte gUnknown_2021C40 +_081ACDF8: .4byte gUnknown_2021C54 +_081ACDFC: .4byte gUnknown_2021C7C +_081ACE00: .4byte gUnknown_85C9540 +_081ACE04: .4byte gUnknown_85DF8BC + thumb_func_end sub_081ACD80 + + thumb_func_start sub_081ACE08 +sub_081ACE08: @ 0x081ACE08 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081ACE38 + adds r4, r4, r0 + movs r1, #2 + ldrsh r0, [r4, r1] + bl sub_081AB414 + ldrb r0, [r4] + movs r1, #0 + bl sub_081AB4E8 + adds r0, r5, #0 + bl sub_081ABC58 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081ACE38: .4byte gUnknown_3005B68 + thumb_func_end sub_081ACE08 + + thumb_func_start sub_081ACE3C +sub_081ACE3C: @ 0x081ACE3C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081ACE74 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x10 + ldrh r1, [r4, #4] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081ACE80 + ldr r0, _081ACE78 + ldr r0, [r0] + ldr r1, _081ACE7C + adds r0, r0, r1 + ldrb r0, [r0] + movs r2, #0x10 + ldrsh r1, [r4, r2] + bl sub_081ABA50 + b _081ACEBE + .align 2, 0 +_081ACE74: .4byte gUnknown_3005B68 +_081ACE78: .4byte gUnknown_203CB20 +_081ACE7C: .4byte 0x00000817 +_081ACE80: + ldr r0, _081ACEA0 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081ACEA4 + movs r0, #5 + bl sub_080A306C + movs r0, #7 + bl sub_081ADE5C + adds r0, r5, #0 + bl sub_081ACD80 + b _081ACEBE + .align 2, 0 +_081ACEA0: .4byte gUnknown_3002360 +_081ACEA4: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081ACEBE + movs r0, #5 + bl sub_080A306C + movs r0, #7 + bl sub_081ADE5C + adds r0, r6, #0 + bl sub_081ACE08 +_081ACEBE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081ACE3C + + thumb_func_start sub_081ACEC4 +sub_081ACEC4: @ 0x081ACEC4 + push {r4, r5, r6, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081ACF2C + adds r6, r4, r5 + ldr r0, _081ACF30 + ldrh r0, [r0] + ldr r1, _081ACF34 + bl sub_080D5EC8 + ldr r0, _081ACF38 + movs r2, #0x10 + ldrsh r1, [r6, r2] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r6, _081ACF3C + ldr r1, _081ACF40 + adds r0, r6, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r6, #0 + movs r3, #0 + bl sub_081ADD94 + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081ACF44 + str r0, [r4] + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ACF2C: .4byte gUnknown_3005B68 +_081ACF30: .4byte gUnknown_203CB48 +_081ACF34: .4byte gUnknown_2021C40 +_081ACF38: .4byte gUnknown_2021C54 +_081ACF3C: .4byte gUnknown_2021C7C +_081ACF40: .4byte gUnknown_85C9532 +_081ACF44: .4byte sub_081ACF48 + thumb_func_end sub_081ACEC4 + + thumb_func_start sub_081ACF48 +sub_081ACF48: @ 0x081ACF48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081ACFD0 + adds r5, r0, r1 + ldr r4, _081ACFD4 + ldrb r0, [r4, #5] + lsls r0, r0, #1 + adds r1, r4, #0 + adds r1, #0x12 + adds r1, r1, r0 + mov r8, r1 + adds r1, r4, #0 + adds r1, #8 + adds r7, r0, r1 + ldr r0, _081ACFD8 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081ACFC6 + movs r0, #5 + bl sub_080A306C + ldr r0, _081ACFDC + ldrh r0, [r0] + ldrh r1, [r5, #0x10] + bl sub_080D62BC + ldrb r0, [r5] + mov r1, r8 + adds r2, r7, #0 + bl sub_081AE3A0 + ldrb r0, [r4, #5] + bl sub_081AB754 + ldrb r0, [r4, #5] + bl sub_081AB834 + ldrb r0, [r4, #5] + bl sub_081AAFB0 + ldr r0, _081ACFE0 + mov r2, r8 + ldrh r1, [r2] + ldrh r2, [r7] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + movs r0, #0 + bl sub_08199654 + adds r0, r6, #0 + bl sub_081ABC58 +_081ACFC6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ACFD0: .4byte gUnknown_3005B68 +_081ACFD4: .4byte gUnknown_203CB24 +_081ACFD8: .4byte gUnknown_3002360 +_081ACFDC: .4byte gUnknown_203CB48 +_081ACFE0: .4byte gUnknown_3006050 + thumb_func_end sub_081ACF48 + + thumb_func_start sub_081ACFE4 +sub_081ACFE4: @ 0x081ACFE4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081AD01C + adds r7, r0, r1 + ldr r0, _081AD020 + ldrb r1, [r0, #5] + lsls r1, r1, #1 + adds r2, r0, #0 + adds r2, #0x12 + adds r6, r1, r2 + adds r0, #8 + adds r5, r1, r0 + ldr r0, _081AD024 + ldr r0, [r0] + ldr r2, _081AD028 + adds r1, r0, r2 + ldr r0, _081AD02C + ldrh r2, [r0] + ldrh r0, [r1] + cmp r0, r2 + bne _081AD030 + movs r0, #0 + strh r0, [r1] + b _081AD032 + .align 2, 0 +_081AD01C: .4byte gUnknown_3005B68 +_081AD020: .4byte gUnknown_203CB24 +_081AD024: .4byte gUnknown_3005AEC +_081AD028: .4byte 0x00000496 +_081AD02C: .4byte gUnknown_203CB48 +_081AD030: + strh r2, [r1] +_081AD032: + ldrb r0, [r7] + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_081AE3A0 + ldr r0, _081AD068 + ldrb r0, [r0, #5] + bl sub_081AAFB0 + ldr r0, _081AD06C + ldrh r1, [r6] + ldrh r2, [r5] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7] + movs r0, #0 + bl sub_08199654 + adds r0, r4, #0 + bl sub_081AD190 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AD068: .4byte gUnknown_203CB24 +_081AD06C: .4byte gUnknown_3006050 + thumb_func_end sub_081ACFE4 + + thumb_func_start sub_081AD070 +sub_081AD070: @ 0x081AD070 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + bl sub_081ACC30 + ldr r5, _081AD098 + ldrh r0, [r5] + bl sub_08122188 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD0A4 + ldr r2, _081AD09C + ldr r3, _081AD0A0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _081AD0E2 + .align 2, 0 +_081AD098: .4byte gUnknown_203CB48 +_081AD09C: .4byte gUnknown_85C945C +_081AD0A0: .4byte sub_081AD148 +_081AD0A4: + ldrh r0, [r5] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD0DC + bl sub_0806B004 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD0C2 + adds r0, r4, #0 + bl sub_081AD0E8 + b _081AD0E2 +_081AD0C2: + ldr r0, _081AD0D4 + ldr r1, [r0] + ldr r0, _081AD0D8 + str r0, [r1] + adds r0, r4, #0 + bl sub_081AB6A4 + b _081AD0E2 + .align 2, 0 +_081AD0D4: .4byte gUnknown_203CB20 +_081AD0D8: .4byte sub_081B7C00 +_081AD0DC: + adds r0, r6, #0 + bl sub_081AD104 +_081AD0E2: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081AD070 + + thumb_func_start sub_081AD0E8 +sub_081AD0E8: @ 0x081AD0E8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081AD0FC + ldr r3, _081AD100 + movs r1, #1 + bl sub_081AB8F8 + pop {r0} + bx r0 + .align 2, 0 +_081AD0FC: .4byte gUnknown_85C9472 +_081AD100: .4byte sub_081AD148 + thumb_func_end sub_081AD0E8 + + thumb_func_start sub_081AD104 +sub_081AD104: @ 0x081AD104 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081AD134 + ldrh r0, [r0] + ldr r1, _081AD138 + bl sub_080D5EC8 + ldr r5, _081AD13C + ldr r1, _081AD140 + adds r0, r5, #0 + bl sub_08008BCC + ldr r3, _081AD144 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_081AB8F8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AD134: .4byte gUnknown_203CB48 +_081AD138: .4byte gUnknown_2021C40 +_081AD13C: .4byte gUnknown_2021C7C +_081AD140: .4byte gUnknown_85C948E +_081AD144: .4byte sub_081AD148 + thumb_func_end sub_081AD104 + + thumb_func_start sub_081AD148 +sub_081AD148: @ 0x081AD148 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081AD16C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AD166 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081AB968 +_081AD166: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AD16C: .4byte gUnknown_3002360 + thumb_func_end sub_081AD148 + + thumb_func_start sub_081AD170 +sub_081AD170: @ 0x081AD170 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081AD188 + ldr r2, [r1] + ldr r1, _081AD18C + str r1, [r2] + bl sub_081AB6A4 + pop {r0} + bx r0 + .align 2, 0 +_081AD188: .4byte gUnknown_203CB20 +_081AD18C: .4byte sub_08177AFC + thumb_func_end sub_081AD170 + + thumb_func_start sub_081AD190 +sub_081AD190: @ 0x081AD190 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081AD1D0 + adds r4, r4, r0 + bl sub_081ACC30 + movs r1, #2 + ldrsh r0, [r4, r1] + bl sub_081AB414 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + ldrb r0, [r4] + movs r1, #0 + bl sub_081AB4E8 + adds r0, r5, #0 + bl sub_081ABC58 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AD1D0: .4byte gUnknown_3005B68 + thumb_func_end sub_081AD190 + + thumb_func_start sub_081AD1D4 +sub_081AD1D4: @ 0x081AD1D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081AD200 + ldrh r0, [r4] + bl sub_080D6E44 + cmp r0, #0 + beq _081AD1F8 + bl sub_081ACC30 + ldrh r0, [r4] + bl sub_080D6E44 + adds r1, r0, #0 + adds r0, r5, #0 + bl _call_via_r1 +_081AD1F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AD200: .4byte gUnknown_203CB48 + thumb_func_end sub_081AD1D4 + + thumb_func_start sub_081AD204 +sub_081AD204: @ 0x081AD204 + push {lr} + movs r0, #0xc + movs r1, #5 + movs r2, #0 + bl sub_081AAA08 + pop {r0} + bx r0 + thumb_func_end sub_081AD204 + + thumb_func_start sub_081AD214 +sub_081AD214: @ 0x081AD214 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081AD238 + ldrh r0, [r4] + bl sub_08122188 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD244 + ldr r2, _081AD23C + ldr r3, _081AD240 + adds r0, r5, #0 + movs r1, #1 + bl sub_081AB8F8 + b _081AD2A6 + .align 2, 0 +_081AD238: .4byte gUnknown_203CB48 +_081AD23C: .4byte gUnknown_85C945C +_081AD240: .4byte sub_081AD148 +_081AD244: + ldrh r0, [r4] + bl sub_08122154 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD280 + ldrh r0, [r4] + ldr r1, _081AD270 + bl sub_080D5EC8 + ldr r4, _081AD274 + ldr r1, _081AD278 + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _081AD27C + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + b _081AD2A6 + .align 2, 0 +_081AD270: .4byte gUnknown_2021C40 +_081AD274: .4byte gUnknown_2021C7C +_081AD278: .4byte gUnknown_85C94A1 +_081AD27C: .4byte sub_081AD148 +_081AD280: + ldr r0, _081AD29C + ldrb r0, [r0, #5] + cmp r0, #4 + beq _081AD2A0 + ldrh r0, [r4] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD2A0 + adds r0, r5, #0 + bl sub_081AB6A4 + b _081AD2A6 + .align 2, 0 +_081AD29C: .4byte gUnknown_203CB24 +_081AD2A0: + adds r0, r5, #0 + bl sub_081AD104 +_081AD2A6: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081AD214 + + thumb_func_start sub_081AD2AC +sub_081AD2AC: @ 0x081AD2AC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081AD2D0 + ldrh r0, [r5] + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AD2DC + ldr r2, _081AD2D4 + ldr r3, _081AD2D8 + adds r0, r4, #0 + movs r1, #1 + bl sub_081AB8F8 + b _081AD312 + .align 2, 0 +_081AD2D0: .4byte gUnknown_203CB48 +_081AD2D4: .4byte gUnknown_85C945C +_081AD2D8: .4byte sub_081AD148 +_081AD2DC: + ldr r0, _081AD300 + ldrb r0, [r0, #5] + cmp r0, #4 + beq _081AD30C + ldrh r0, [r5] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD30C + ldr r0, _081AD304 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081AD308 + str r0, [r1] + b _081AD312 + .align 2, 0 +_081AD300: .4byte gUnknown_203CB24 +_081AD304: .4byte gUnknown_3005B60 +_081AD308: .4byte sub_081AB6A4 +_081AD30C: + adds r0, r4, #0 + bl sub_081AD104 +_081AD312: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081AD2AC + + thumb_func_start sub_081AD318 +sub_081AD318: @ 0x081AD318 + push {r4, r5, r6, r7, lr} + bl sub_08017AC0 + cmp r0, #1 + beq _081AD344 + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AD344 + bl sub_081A7E28 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _081AD344 + bl sub_081399C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AD348 +_081AD344: + movs r0, #0 + b _081AD3CA +_081AD348: + bl sub_080D41F8 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r4, _081AD3AC + ldr r0, [r4] + ldr r5, _081AD3B0 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, #0 + beq _081AD3C2 + movs r1, #1 + bl sub_080D5F3C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #1 + bne _081AD3BC + bl sub_080987DC + bl sub_08096E04 + bl sub_0808B1C8 + bl sub_0808B658 + ldr r2, _081AD3B4 + ldr r0, [r4] + adds r0, r0, r5 + ldrh r1, [r0] + strh r1, [r2] + ldrh r0, [r0] + bl sub_080D6DF8 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081AD3B8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r6, [r1, #0xe] + b _081AD3C8 + .align 2, 0 +_081AD3AC: .4byte gUnknown_3005AEC +_081AD3B0: .4byte 0x00000496 +_081AD3B4: .4byte gUnknown_203CB48 +_081AD3B8: .4byte gUnknown_3005B60 +_081AD3BC: + ldr r0, [r4] + adds r0, r0, r5 + strh r7, [r0] +_081AD3C2: + ldr r0, _081AD3D0 + bl sub_08098880 +_081AD3C8: + movs r0, #1 +_081AD3CA: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AD3D0: .4byte gUnknown_82440DD + thumb_func_end sub_081AD318 + + thumb_func_start sub_081AD3D4 +sub_081AD3D4: @ 0x081AD3D4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r7, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081AD414 + adds r4, r0, r1 + ldr r6, _081AD418 + ldrh r0, [r6] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081AD42C + ldrh r0, [r6] + ldr r1, _081AD41C + bl sub_080D5EC8 + ldr r4, _081AD420 + ldr r1, _081AD424 + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _081AD428 + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + b _081AD462 + .align 2, 0 +_081AD414: .4byte gUnknown_3005B68 +_081AD418: .4byte gUnknown_203CB48 +_081AD41C: .4byte gUnknown_2021C54 +_081AD420: .4byte gUnknown_2021C7C +_081AD424: .4byte gUnknown_85C9A47 +_081AD428: .4byte sub_081AB968 +_081AD42C: + movs r0, #1 + strh r0, [r4, #0x10] + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _081AD444 + bl sub_081ADF40 + adds r0, r5, #0 + bl sub_081AD478 + b _081AD462 +_081AD444: + ldrh r0, [r6] + ldr r1, _081AD468 + bl sub_080D5EC8 + ldr r4, _081AD46C + ldr r1, _081AD470 + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _081AD474 + adds r0, r7, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 +_081AD462: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AD468: .4byte gUnknown_2021C54 +_081AD46C: .4byte gUnknown_2021C7C +_081AD470: .4byte gUnknown_85C9A5D +_081AD474: .4byte sub_081AD528 + thumb_func_end sub_081AD3D4 + + thumb_func_start sub_081AD478 +sub_081AD478: @ 0x081AD478 + push {r4, r5, r6, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081AD4C4 + adds r4, r4, r0 + ldr r6, _081AD4C8 + ldr r0, _081AD4CC + ldrh r0, [r0] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + movs r2, #0x10 + ldrsh r1, [r4, r2] + muls r1, r0, r1 + adds r0, r6, #0 + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldr r4, _081AD4D0 + ldr r1, _081AD4D4 + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _081AD4D8 + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AD4C4: .4byte gUnknown_3005B68 +_081AD4C8: .4byte gUnknown_2021C40 +_081AD4CC: .4byte gUnknown_203CB48 +_081AD4D0: .4byte gUnknown_2021C7C +_081AD4D4: .4byte gUnknown_85C9A6C +_081AD4D8: .4byte sub_081AD4DC + thumb_func_end sub_081AD478 + + thumb_func_start sub_081AD4DC +sub_081AD4DC: @ 0x081AD4DC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081AD4F0 + movs r1, #6 + bl sub_081ADF10 + pop {r0} + bx r0 + .align 2, 0 +_081AD4F0: .4byte gUnknown_85DF8C4 + thumb_func_end sub_081AD4DC + + thumb_func_start sub_081AD4F4 +sub_081AD4F4: @ 0x081AD4F4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081AD524 + adds r4, r4, r0 + bl sub_081ADF7C + movs r0, #4 + bl sub_081ADED0 + ldrb r0, [r4] + movs r1, #0 + bl sub_081AB4E8 + adds r0, r5, #0 + bl sub_081ABC58 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AD524: .4byte gUnknown_3005B68 + thumb_func_end sub_081AD4F4 + + thumb_func_start sub_081AD528 +sub_081AD528: @ 0x081AD528 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081AD570 + adds r6, r4, r5 + movs r0, #8 + bl sub_081ADE14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081ABA50 + ldr r0, _081AD574 + ldrh r0, [r0] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + movs r2, #0x10 + ldrsh r1, [r6, r2] + muls r0, r1, r0 + bl sub_081AD57C + bl sub_081ADF40 + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081AD578 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AD570: .4byte gUnknown_3005B68 +_081AD574: .4byte gUnknown_203CB48 +_081AD578: .4byte sub_081AD5A8 + thumb_func_end sub_081AD528 + + thumb_func_start sub_081AD57C +sub_081AD57C: @ 0x081AD57C + push {lr} + sub sp, #4 + adds r3, r0, #0 + ldr r0, _081AD5A0 + ldr r0, [r0] + ldr r1, _081AD5A4 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + str r1, [sp] + movs r1, #0x28 + movs r2, #2 + bl sub_080E4A08 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081AD5A0: .4byte gUnknown_203CB20 +_081AD5A4: .4byte 0x00000818 + thumb_func_end sub_081AD57C + + thumb_func_start sub_081AD5A8 +sub_081AD5A8: @ 0x081AD5A8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081AD5F8 + adds r5, r0, r1 + adds r0, r5, #0 + adds r0, #0x10 + ldrh r1, [r5, #4] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AD608 + ldr r0, _081AD5FC + ldr r0, [r0] + ldr r1, _081AD600 + adds r0, r0, r1 + ldrb r0, [r0] + movs r2, #0x10 + ldrsh r1, [r5, r2] + bl sub_081ABA50 + ldr r0, _081AD604 + ldrh r0, [r0] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + movs r2, #0x10 + ldrsh r1, [r5, r2] + muls r0, r1, r0 + bl sub_081AD57C + b _081AD658 + .align 2, 0 +_081AD5F8: .4byte gUnknown_3005B68 +_081AD5FC: .4byte gUnknown_203CB20 +_081AD600: .4byte 0x00000818 +_081AD604: .4byte gUnknown_203CB48 +_081AD608: + ldr r0, _081AD628 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AD62C + movs r0, #5 + bl sub_080A306C + movs r0, #8 + bl sub_081ADE5C + adds r0, r4, #0 + bl sub_081AD478 + b _081AD658 + .align 2, 0 +_081AD628: .4byte gUnknown_3002360 +_081AD62C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081AD658 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r5] + movs r1, #0 + bl sub_081AB4E8 + bl sub_081ADF7C + movs r0, #8 + bl sub_081ADE5C + movs r0, #4 + bl sub_081ADED0 + adds r0, r6, #0 + bl sub_081ABC58 +_081AD658: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AD5A8 + + thumb_func_start sub_081AD660 +sub_081AD660: @ 0x081AD660 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081AD6C0 + adds r4, r4, r0 + ldr r6, _081AD6C4 + ldrh r0, [r6] + ldr r1, _081AD6C8 + bl sub_080D5EC8 + ldr r0, _081AD6CC + mov r8, r0 + ldrh r0, [r6] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + movs r2, #0x10 + ldrsh r1, [r4, r2] + muls r1, r0, r1 + mov r0, r8 + movs r2, #0 + movs r3, #6 + bl sub_080089D8 + ldr r4, _081AD6D0 + ldr r1, _081AD6D4 + adds r0, r4, #0 + bl sub_08008BCC + ldr r3, _081AD6D8 + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_081AB8F8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AD6C0: .4byte gUnknown_3005B68 +_081AD6C4: .4byte gUnknown_203CB48 +_081AD6C8: .4byte gUnknown_2021C54 +_081AD6CC: .4byte gUnknown_2021C40 +_081AD6D0: .4byte gUnknown_2021C7C +_081AD6D4: .4byte gUnknown_85C9A88 +_081AD6D8: .4byte sub_081AD6DC + thumb_func_end sub_081AD660 + + thumb_func_start sub_081AD6DC +sub_081AD6DC: @ 0x081AD6DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r6, r0, #2 + adds r6, r6, r0 + lsls r6, r6, #3 + ldr r0, _081AD7B4 + adds r0, r0, r6 + mov sl, r0 + ldr r7, _081AD7B8 + ldrb r5, [r7, #5] + lsls r5, r5, #1 + movs r1, #0x12 + adds r1, r1, r7 + mov sb, r1 + add sb, r5 + adds r0, r7, #0 + adds r0, #8 + adds r5, r5, r0 + movs r0, #0x5f + bl sub_080A306C + ldr r2, _081AD7BC + mov r8, r2 + ldrh r0, [r2] + mov r3, sl + ldrh r1, [r3, #0x10] + bl sub_080D62BC + ldr r0, _081AD7C0 + ldr r4, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r4, r4, r1 + mov r2, r8 + ldrh r0, [r2] + bl sub_080D6CD4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x11 + mov r3, sl + movs r2, #0x10 + ldrsh r1, [r3, r2] + muls r1, r0, r1 + adds r0, r4, #0 + bl sub_080E4948 + mov r3, sl + ldrb r0, [r3] + mov r1, sb + adds r2, r5, #0 + bl sub_081AE3A0 + ldrb r0, [r7, #5] + bl sub_081AB754 + ldrb r0, [r7, #5] + bl sub_081AB834 + ldrb r0, [r7, #5] + bl sub_081AAFB0 + ldr r0, _081AD7C4 + mov r2, sb + ldrh r1, [r2] + ldrh r2, [r5] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r3, sl + strh r0, [r3] + movs r1, #2 + bl sub_081AB4E8 + ldr r0, _081AD7C8 + ldr r0, [r0] + ldr r1, _081AD7CC + adds r0, r0, r1 + ldrb r4, [r0] + ldr r2, _081AD7C0 + ldr r0, [r2] + movs r3, #0x92 + lsls r3, r3, #3 + adds r0, r0, r3 + bl sub_080E4908 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + bl sub_080E49E8 + ldr r0, _081AD7B4 + subs r0, #8 + adds r6, r6, r0 + ldr r0, _081AD7D0 + str r0, [r6] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AD7B4: .4byte gUnknown_3005B68 +_081AD7B8: .4byte gUnknown_203CB24 +_081AD7BC: .4byte gUnknown_203CB48 +_081AD7C0: .4byte gUnknown_3005AEC +_081AD7C4: .4byte gUnknown_3006050 +_081AD7C8: .4byte gUnknown_203CB20 +_081AD7CC: .4byte 0x00000819 +_081AD7D0: .4byte sub_081AD7D4 + thumb_func_end sub_081AD6DC + + thumb_func_start sub_081AD7D4 +sub_081AD7D4: @ 0x081AD7D4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081AD7FC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081AD7F6 + movs r0, #5 + bl sub_080A306C + bl sub_081ADF7C + adds r0, r4, #0 + bl sub_081AB968 +_081AD7F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AD7FC: .4byte gUnknown_3002360 + thumb_func_end sub_081AD7D4 + + thumb_func_start sub_081AD800 +sub_081AD800: @ 0x081AD800 + push {r4, r5, r6, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r5, r0, #3 + ldr r6, _081AD828 + adds r1, r5, r6 + movs r0, #1 + strh r0, [r1, #0x10] + movs r3, #4 + ldrsh r0, [r1, r3] + cmp r0, #1 + bne _081AD82C + adds r0, r2, #0 + bl sub_081AD928 + b _081AD872 + .align 2, 0 +_081AD828: .4byte gUnknown_3005B68 +_081AD82C: + ldr r0, _081AD87C + ldrh r0, [r0] + ldr r1, _081AD880 + bl sub_080D5EC8 + ldr r4, _081AD884 + ldr r1, _081AD888 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 + movs r0, #7 + bl sub_081AB9E8 + adds r0, r6, #0 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _081AD88C + str r1, [r0] +_081AD872: + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AD87C: .4byte gUnknown_203CB48 +_081AD880: .4byte gUnknown_2021C40 +_081AD884: .4byte gUnknown_2021C7C +_081AD888: .4byte gUnknown_85C94B9 +_081AD88C: .4byte sub_081AD890 + thumb_func_end sub_081AD800 + + thumb_func_start sub_081AD890 +sub_081AD890: @ 0x081AD890 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081AD8C8 + adds r5, r0, r1 + adds r0, r5, #0 + adds r0, #0x10 + ldrh r1, [r5, #4] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AD8D4 + ldr r0, _081AD8CC + ldr r0, [r0] + ldr r1, _081AD8D0 + adds r0, r0, r1 + ldrb r0, [r0] + movs r2, #0x10 + ldrsh r1, [r5, r2] + bl sub_081ABA50 + b _081AD922 + .align 2, 0 +_081AD8C8: .4byte gUnknown_3005B68 +_081AD8CC: .4byte gUnknown_203CB20 +_081AD8D0: .4byte 0x00000817 +_081AD8D4: + ldr r0, _081AD8F4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AD8F8 + movs r0, #5 + bl sub_080A306C + movs r0, #7 + bl sub_081ADE5C + adds r0, r4, #0 + bl sub_081AD928 + b _081AD922 + .align 2, 0 +_081AD8F4: .4byte gUnknown_3002360 +_081AD8F8: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081AD922 + movs r0, #5 + bl sub_080A306C + movs r1, #2 + ldrsh r0, [r5, r1] + bl sub_081AB414 + ldrb r0, [r5] + movs r1, #0 + bl sub_081AB4E8 + movs r0, #7 + bl sub_081ADE5C + adds r0, r6, #0 + bl sub_081ABC58 +_081AD922: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081AD890 + + thumb_func_start sub_081AD928 +sub_081AD928: @ 0x081AD928 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r6, r1, #3 + ldr r0, _081AD96C + mov r8, r0 + adds r7, r6, r0 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + ldr r4, _081AD970 + ldrh r0, [r4] + bl sub_080D6D68 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _081AD978 + ldr r2, _081AD974 + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + b _081AD9EE + .align 2, 0 +_081AD96C: .4byte gUnknown_3005B68 +_081AD970: .4byte gUnknown_203CB48 +_081AD974: .4byte gUnknown_85C94EB +_081AD978: + ldrh r0, [r4] + ldrh r1, [r7, #0x10] + bl sub_080D6588 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AD9E0 + ldrh r0, [r4] + ldr r1, _081AD9CC + bl sub_080D5EC8 + ldr r0, _081AD9D0 + movs r2, #0x10 + ldrsh r1, [r7, r2] + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081AD9D4 + ldr r1, _081AD9D8 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #2 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + str r5, [sp, #0x10] + movs r0, #1 + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081ADD94 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081AD9DC + b _081ADA00 + .align 2, 0 +_081AD9CC: .4byte gUnknown_2021C40 +_081AD9D0: .4byte gUnknown_2021C54 +_081AD9D4: .4byte gUnknown_2021C7C +_081AD9D8: .4byte gUnknown_85C94CA +_081AD9DC: .4byte sub_081ACF48 +_081AD9E0: + ldr r2, _081ADA10 + movs r0, #2 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + str r5, [sp, #0x10] +_081AD9EE: + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_081ADD94 + mov r0, r8 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081ADA14 +_081ADA00: + str r1, [r0] + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ADA10: .4byte gUnknown_85C94DA +_081ADA14: .4byte sub_081ADA18 + thumb_func_end sub_081AD928 + + thumb_func_start sub_081ADA18 +sub_081ADA18: @ 0x081ADA18 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081ADA58 + adds r5, r0, r1 + ldr r0, _081ADA5C + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081ADA50 + movs r0, #5 + bl sub_080A306C + movs r1, #2 + ldrsh r0, [r5, r1] + bl sub_081AB414 + ldrb r0, [r5] + movs r1, #0 + bl sub_081AB4E8 + adds r0, r4, #0 + bl sub_081ABC58 +_081ADA50: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081ADA58: .4byte gUnknown_3005B68 +_081ADA5C: .4byte gUnknown_3002360 + thumb_func_end sub_081ADA18 + + thumb_func_start sub_081ADA60 +sub_081ADA60: @ 0x081ADA60 + push {lr} + ldr r0, _081ADA70 + ldrb r0, [r0, #4] + cmp r0, #0xa + beq _081ADA74 + movs r0, #0 + b _081ADA76 + .align 2, 0 +_081ADA70: .4byte gUnknown_203CB24 +_081ADA74: + movs r0, #1 +_081ADA76: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081ADA60 + + thumb_func_start sub_081ADA7C +sub_081ADA7C: @ 0x081ADA7C + push {r4, r5, r6, lr} + ldr r4, _081ADB00 + movs r0, #0xd0 + bl sub_08000BDC + str r0, [r4] + ldr r5, _081ADB04 + ldr r1, [r5] + movs r2, #0xac + lsls r2, r2, #3 + adds r1, r1, r2 + movs r2, #0x78 + bl memcpy + ldr r0, [r4] + ldr r1, [r5] + movs r2, #0xca + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, #0x78 + movs r2, #0x40 + bl memcpy + ldr r0, [r4] + ldr r2, _081ADB08 + ldrb r1, [r2, #5] + adds r0, #0xce + strh r1, [r0] + movs r6, #0 + adds r5, r2, #0 + adds r5, #8 +_081ADABA: + ldr r2, [r4] + lsls r3, r6, #1 + adds r0, r2, #0 + adds r0, #0xb8 + adds r0, r0, r3 + ldrh r1, [r5] + strh r1, [r0] + adds r2, #0xc2 + adds r2, r2, r3 + ldrh r0, [r5, #0xa] + strh r0, [r2] + adds r5, #2 + adds r6, #1 + cmp r6, #4 + bls _081ADABA + ldr r4, _081ADB04 + ldr r0, [r4] + movs r1, #0xac + lsls r1, r1, #3 + adds r0, r0, r1 + movs r1, #0x1e + bl sub_080D6494 + ldr r0, [r4] + movs r2, #0xca + lsls r2, r2, #3 + adds r0, r0, r2 + movs r1, #0x10 + bl sub_080D6494 + bl sub_081AA8E8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ADB00: .4byte gUnknown_203CB4C +_081ADB04: .4byte gUnknown_3005AEC +_081ADB08: .4byte gUnknown_203CB24 + thumb_func_end sub_081ADA7C + + thumb_func_start sub_081ADB0C +sub_081ADB0C: @ 0x081ADB0C + push {r4, r5, r6, lr} + ldr r5, _081ADB70 + ldr r0, [r5] + movs r1, #0xac + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r4, _081ADB74 + ldr r1, [r4] + movs r2, #0x78 + bl memcpy + ldr r0, [r5] + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, [r4] + adds r1, #0x78 + movs r2, #0x40 + bl memcpy + ldr r1, _081ADB78 + ldr r0, [r4] + adds r0, #0xce + ldrh r0, [r0] + strb r0, [r1, #5] + movs r5, #0 + adds r6, r4, #0 + adds r3, r1, #0 + adds r3, #8 +_081ADB46: + lsls r2, r5, #1 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xb8 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3] + adds r1, #0xc2 + adds r1, r1, r2 + ldrh r0, [r1] + strh r0, [r3, #0xa] + adds r3, #2 + adds r5, #1 + cmp r5, #4 + bls _081ADB46 + ldr r0, [r6] + bl sub_08000BF0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081ADB70: .4byte gUnknown_3005AEC +_081ADB74: .4byte gUnknown_203CB4C +_081ADB78: .4byte gUnknown_203CB24 + thumb_func_end sub_081ADB0C + + thumb_func_start sub_081ADB7C +sub_081ADB7C: @ 0x081ADB7C + push {lr} + bl sub_081ADA7C + movs r0, #0xd + movs r1, #1 + bl sub_080D6140 + movs r0, #4 + movs r1, #1 + bl sub_080D6140 + ldr r2, _081ADBA0 + movs r0, #0xa + movs r1, #0 + bl sub_081AAA08 + pop {r0} + bx r0 + .align 2, 0 +_081ADBA0: .4byte sub_0805996C + thumb_func_end sub_081ADB7C + + thumb_func_start sub_081ADBA4 +sub_081ADBA4: @ 0x081ADBA4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081ADBD4 + adds r4, r0, r1 + ldr r0, _081ADBD8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081ADC3E + movs r0, #0x10 + ldrsh r1, [r4, r0] + cmp r1, #0xcc + beq _081ADBF8 + cmp r1, #0xcc + bgt _081ADBDC + cmp r1, #0x66 + beq _081ADBE6 + b _081ADC38 + .align 2, 0 +_081ADBD4: .4byte gUnknown_3005B68 +_081ADBD8: .4byte gUnknown_2037C74 +_081ADBDC: + movs r0, #0x99 + lsls r0, r0, #1 + cmp r1, r0 + beq _081ADC18 + b _081ADC38 +_081ADBE6: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_081ABD34 + b _081ADC38 +_081ADBF8: + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + movs r1, #2 + bl sub_081AB4E8 + ldr r1, _081ADC14 + movs r0, #4 + strh r0, [r1] + adds r0, r5, #0 + bl sub_081AC408 + b _081ADC38 + .align 2, 0 +_081ADC14: .4byte gUnknown_203CB48 +_081ADC18: + movs r0, #5 + bl sub_080A306C + bl sub_081ACC30 + ldrb r0, [r4] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + bl sub_081ADB0C + adds r0, r5, #0 + bl sub_081AB6A4 + b _081ADC3E +_081ADC38: + ldrh r0, [r4, #0x10] + adds r0, #1 + strh r0, [r4, #0x10] +_081ADC3E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081ADBA4 + + thumb_func_start sub_081ADC44 +sub_081ADC44: @ 0x081ADC44 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081ADC6C + ldr r0, _081ADC70 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081ADC74 + movs r0, #1 + strh r0, [r1] + bl sub_081ACC30 + adds r0, r4, #0 + bl sub_081AB6A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADC6C: .4byte gUnknown_2037282 +_081ADC70: .4byte gUnknown_203CB48 +_081ADC74: .4byte gUnknown_2037290 + thumb_func_end sub_081ADC44 + + thumb_func_start sub_081ADC78 +sub_081ADC78: @ 0x081ADC78 + push {lr} + ldr r0, _081ADC8C + ldr r1, _081ADC90 + str r1, [r0] + ldr r0, _081ADC94 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081ADC8C: .4byte gUnknown_3005B0C +_081ADC90: .4byte sub_0819F928 +_081ADC94: .4byte sub_08085A30 + thumb_func_end sub_081ADC78 + + thumb_func_start sub_081ADC98 +sub_081ADC98: @ 0x081ADC98 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081ADCC0 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + ldr r1, _081ADCC4 + movs r0, #1 + strh r0, [r1] + bl sub_081ACC30 + adds r0, r4, #0 + bl sub_081AB6A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADCC0: .4byte gUnknown_203CB48 +_081ADCC4: .4byte gUnknown_2037290 + thumb_func_end sub_081ADC98 + + thumb_func_start sub_081ADCC8 +sub_081ADCC8: @ 0x081ADCC8 + push {lr} + ldr r0, _081ADCDC + ldr r1, _081ADCE0 + str r1, [r0] + ldr r0, _081ADCE4 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081ADCDC: .4byte gUnknown_3005B0C +_081ADCE0: .4byte sub_0818DC00 +_081ADCE4: .4byte sub_08085A30 + thumb_func_end sub_081ADCC8 + + thumb_func_start sub_081ADCE8 +sub_081ADCE8: @ 0x081ADCE8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081ADD08 + movs r0, #1 + strh r0, [r1] + bl sub_081ACC30 + adds r0, r4, #0 + bl sub_081AB6A4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADD08: .4byte gUnknown_2037290 + thumb_func_end sub_081ADCE8 + + thumb_func_start sub_081ADD0C +sub_081ADD0C: @ 0x081ADD0C + push {lr} + ldr r0, _081ADD20 + ldr r1, _081ADD24 + str r1, [r0] + ldr r0, _081ADD28 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081ADD20: .4byte gUnknown_3005B0C +_081ADD24: .4byte sub_0818E1C0 +_081ADD28: .4byte sub_08085A30 + thumb_func_end sub_081ADD0C + + thumb_func_start sub_081ADD2C +sub_081ADD2C: @ 0x081ADD2C + push {r4, lr} + ldr r0, _081ADD8C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0xa + movs r2, #0xd0 + bl sub_08098104 + movs r0, #0xc0 + movs r1, #1 + bl sub_08199F54 + ldr r0, _081ADD90 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r4, #0 +_081ADD60: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081ADD60 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADD8C: .4byte gUnknown_85DFA2C +_081ADD90: .4byte gUnknown_85D7B04 + thumb_func_end sub_081ADD2C + + thumb_func_start sub_081ADD94 +sub_081ADD94: @ 0x081ADD94 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov sb, 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, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r7, sb + lsls r7, r7, #0x18 + lsrs r7, r7, #0x18 + mov sb, r7 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r6, [sp, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + ldr r5, _081ADDF8 + adds r4, r4, r5 + str r4, [sp, #8] + mov r4, r8 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, sb + bl sub_08199B84 + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081ADDF8: .4byte gUnknown_85DFA1C + thumb_func_end sub_081ADD94 + + thumb_func_start sub_081ADDFC +sub_081ADDFC: @ 0x081ADDFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081ADE10 + ldr r1, [r1] + movs r2, #0x81 + lsls r2, r2, #4 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_081ADE10: .4byte gUnknown_203CB20 + thumb_func_end sub_081ADDFC + + thumb_func_start sub_081ADE14 +sub_081ADE14: @ 0x081ADE14 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081ADE54 + movs r3, #0x81 + lsls r3, r3, #4 + adds r1, r2, r3 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _081ADE4A + lsls r0, r2, #3 + ldr r1, _081ADE58 + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + movs r0, #1 + bl sub_08199654 +_081ADE4A: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081ADE54: .4byte gUnknown_203CB20 +_081ADE58: .4byte gUnknown_85DFA64 + thumb_func_end sub_081ADE14 + + thumb_func_start sub_081ADE5C +sub_081ADE5C: @ 0x081ADE5C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081ADE98 + movs r2, #0x81 + lsls r2, r2, #4 + adds r0, r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081ADE90 + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #1 + bl sub_08199654 + movs r0, #0xff + strb r0, [r4] +_081ADE90: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADE98: .4byte gUnknown_203CB20 + thumb_func_end sub_081ADE5C + + thumb_func_start sub_081ADE9C +sub_081ADE9C: @ 0x081ADE9C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081ADEC8 + movs r3, #0x81 + lsls r3, r3, #4 + adds r1, r2, r3 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _081ADEC0 + lsls r0, r2, #3 + ldr r1, _081ADECC + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] +_081ADEC0: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081ADEC8: .4byte gUnknown_203CB20 +_081ADECC: .4byte gUnknown_85DFA64 + thumb_func_end sub_081ADE9C + + thumb_func_start sub_081ADED0 +sub_081ADED0: @ 0x081ADED0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081ADF0C + movs r2, #0x81 + lsls r2, r2, #4 + adds r0, r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081ADF04 + movs r1, #0 + bl sub_08197EBC + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #1 + bl sub_08199654 + movs r0, #0xff + strb r0, [r4] +_081ADF04: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADF0C: .4byte gUnknown_203CB20 + thumb_func_end sub_081ADED0 + + thumb_func_start sub_081ADF10 +sub_081ADF10: @ 0x081ADF10 + push {lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x15 + ldr r3, _081ADF3C + adds r1, r1, r3 + movs r3, #2 + str r3, [sp] + movs r3, #1 + str r3, [sp, #4] + movs r3, #0xe + str r3, [sp, #8] + str r2, [sp, #0xc] + movs r2, #1 + movs r3, #0 + bl sub_08121F84 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_081ADF3C: .4byte gUnknown_85DFA64 + thumb_func_end sub_081ADF10 + + thumb_func_start sub_081ADF40 +sub_081ADF40: @ 0x081ADF40 + push {r4, lr} + movs r0, #9 + bl sub_081ADE14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081ADF78 + ldr r0, [r0] + movs r1, #0x92 + lsls r1, r1, #3 + adds r0, r0, r1 + bl sub_080E4908 + adds r3, r0, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0xe + bl sub_080E4A74 + movs r0, #0x13 + movs r1, #0xb + bl sub_080E4B88 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081ADF78: .4byte gUnknown_3005AEC + thumb_func_end sub_081ADF40 + + thumb_func_start sub_081ADF7C +sub_081ADF7C: @ 0x081ADF7C + push {lr} + movs r0, #9 + bl sub_081ADE5C + bl sub_080E4BD0 + pop {r0} + bx r0 + thumb_func_end sub_081ADF7C + + thumb_func_start sub_081ADF8C +sub_081ADF8C: @ 0x081ADF8C + push {lr} + movs r0, #3 + movs r1, #0 + bl sub_08003B18 + movs r0, #3 + movs r1, #0x13 + movs r2, #0 + movs r3, #0 + bl sub_08199F90 + movs r0, #3 + movs r1, #0x14 + movs r2, #0 + movs r3, #0xc + bl sub_08199F90 + movs r0, #3 + movs r1, #0x15 + movs r2, #0 + movs r3, #0x18 + bl sub_08199F90 + movs r0, #3 + movs r1, #0x16 + movs r2, #0 + movs r3, #0x24 + bl sub_08199F90 + movs r0, #3 + movs r1, #2 + bl sub_08003528 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081ADF8C + + thumb_func_start sub_081ADFD4 +sub_081ADFD4: @ 0x081ADFD4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #4 + movs r1, #0 + bl sub_08003B18 + cmp r4, #0 + bne _081AE02C + movs r4, #0 + movs r5, #0 +_081ADFF2: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #0xff + str r0, [sp, #0xc] + movs r0, #4 + str r0, [sp, #0x10] + movs r1, #1 + ldr r2, _081AE028 + movs r3, #4 + bl sub_081ADD94 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081ADFF2 + movs r0, #4 + movs r1, #2 + bl sub_08003528 + b _081AE118 + .align 2, 0 +_081AE028: .4byte gUnknown_85C9406 +_081AE02C: + adds r0, r4, #0 + bl sub_081B69B4 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r1, _081AE05C + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #2 + adds r5, r0, r1 + ldrb r1, [r5, #2] + adds r1, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #4 + movs r2, #0 + movs r3, #0 + bl sub_08199F90 + ldrb r0, [r5, #1] + cmp r0, #1 + bhi _081AE064 + ldr r2, _081AE060 + b _081AE074 + .align 2, 0 +_081AE05C: .4byte gUnknown_82ED220 +_081AE060: .4byte gUnknown_85C9406 +_081AE064: + ldr r4, _081AE0A4 + ldrb r1, [r5, #1] + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r2, r4, #0 +_081AE074: + movs r0, #0xc + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #0xff + str r0, [sp, #0xc] + movs r0, #4 + str r0, [sp, #0x10] + movs r1, #1 + movs r3, #4 + bl sub_081ADD94 + ldr r2, _081AE0A8 + lsls r1, r7, #1 + adds r0, r1, r7 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #3] + adds r6, r1, #0 + cmp r0, #0 + bne _081AE0B0 + ldr r2, _081AE0AC + b _081AE0C0 + .align 2, 0 +_081AE0A4: .4byte gUnknown_2021C40 +_081AE0A8: .4byte gUnknown_82ED220 +_081AE0AC: .4byte gUnknown_85C9406 +_081AE0B0: + ldr r4, _081AE128 + ldrb r1, [r2, #3] + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r2, r4, #0 +_081AE0C0: + movs r0, #0x18 + str r0, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r0, #0xff + mov r8, r0 + str r0, [sp, #0xc] + movs r0, #4 + mov sb, r0 + str r0, [sp, #0x10] + movs r1, #1 + movs r3, #4 + bl sub_081ADD94 + ldr r5, _081AE128 + ldr r1, _081AE12C + adds r0, r6, r7 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #4] + adds r0, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + movs r0, #0x24 + str r0, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + mov r0, r8 + str r0, [sp, #0xc] + mov r0, sb + str r0, [sp, #0x10] + movs r0, #4 + movs r1, #1 + adds r2, r5, #0 + movs r3, #4 + bl sub_081ADD94 + movs r0, #4 + movs r1, #2 + bl sub_08003528 +_081AE118: + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AE128: .4byte gUnknown_2021C40 +_081AE12C: .4byte gUnknown_82ED220 + thumb_func_end sub_081ADFD4 + + thumb_func_start sub_081AE130 +sub_081AE130: @ 0x081AE130 + bx lr + .align 2, 0 + thumb_func_end sub_081AE130 + + thumb_func_start sub_081AE134 +sub_081AE134: @ 0x081AE134 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov ip, r0 + str r1, [sp] + ldr r0, [sp, #0x28] + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + mov sl, r6 + lsls r3, r3, #0x10 + lsrs r7, r3, #0x10 + str r7, [sp, #4] + lsls r0, r0, #0x10 + mov r8, r0 + lsrs r0, r0, #0x10 + mov sb, r0 + ldr r5, _081AE1C4 + ldrb r4, [r5, #4] + cmp r4, #1 + beq _081AE1CC + cmp r4, #1 + ble _081AE16A + cmp r4, #2 + beq _081AE230 +_081AE16A: + mov r0, ip + bl sub_08003250 + strb r0, [r5, #5] + cmp r6, #1 + beq _081AE188 + cmp r6, #2 + bne _081AE198 + ldrb r0, [r5, #5] + mov r1, sb + lsls r2, r1, #0x18 + lsrs r2, r2, #0x18 + adds r1, r7, #0 + bl sub_080981B4 +_081AE188: + ldrb r0, [r5, #5] + mov r3, r8 + lsrs r2, r3, #0x14 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [sp, #4] + bl sub_080981E0 +_081AE198: + ldr r0, _081AE1C8 + adds r2, r0, #0 + ldr r1, [sp] + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldm r1!, {r3, r4, r5} + stm r2!, {r3, r4, r5} + ldr r4, _081AE1C4 + ldrb r1, [r4, #5] + strb r1, [r0, #0x10] + movs r1, #0 + movs r2, #0 + bl sub_081AE25C + strb r0, [r4, #6] + ldrb r0, [r4, #5] + movs r1, #1 + bl sub_08003528 + movs r0, #1 + strb r0, [r4, #4] + b _081AE248 + .align 2, 0 +_081AE1C4: .4byte gUnknown_203CB50 +_081AE1C8: .4byte gUnknown_3006050 +_081AE1CC: + ldrb r0, [r5, #6] + bl sub_081AE2DC + str r0, [r5] + ldr r1, _081AE208 + ldrh r0, [r1, #0x2e] + ands r4, r0 + cmp r4, #0 + beq _081AE1E2 + movs r0, #2 + strb r0, [r5, #4] +_081AE1E2: + ldrh r1, [r1, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081AE1F6 + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r5] + movs r0, #2 + strb r0, [r5, #4] +_081AE1F6: + ldrb r0, [r5, #4] + cmp r0, #2 + bne _081AE248 + cmp r6, #0 + bne _081AE20C + ldrb r0, [r5, #5] + bl sub_08003774 + b _081AE21E + .align 2, 0 +_081AE208: .4byte gUnknown_3002360 +_081AE20C: + mov r4, sl + cmp r4, #0 + blt _081AE21E + cmp r4, #2 + bgt _081AE21E + ldrb r0, [r5, #5] + movs r1, #0 + bl sub_08197060 +_081AE21E: + ldr r0, _081AE22C + ldrb r0, [r0, #5] + movs r1, #1 + bl sub_08003528 + b _081AE248 + .align 2, 0 +_081AE22C: .4byte gUnknown_203CB50 +_081AE230: + ldrb r0, [r5, #6] + movs r1, #0 + movs r2, #0 + bl sub_081AE3A0 + ldrb r0, [r5, #5] + bl sub_08003444 + movs r0, #0 + strb r0, [r5, #4] + ldr r0, [r5] + b _081AE24C +_081AE248: + movs r0, #1 + rsbs r0, r0, #0 +_081AE24C: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081AE134 + + thumb_func_start sub_081AE25C +sub_081AE25C: @ 0x081AE25C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + bl sub_081AE5AC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5, #0x10] + bl sub_0800365C + ldrb r0, [r5, #0x10] + movs r1, #2 + bl sub_08003528 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081AE25C + + thumb_func_start sub_081AE288 +sub_081AE288: @ 0x081AE288 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r0, #0 + adds r4, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + bl sub_081AE5AC + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r4, #4] + cmp r0, #0xff + beq _081AE2C8 + adds r5, r4, #0 +_081AE2AC: + ldrb r0, [r6, #0x10] + ldrb r1, [r5] + ldrb r2, [r5, #1] + ldrb r3, [r5, #2] + ldrb r4, [r5, #3] + str r4, [sp] + ldrb r4, [r5, #4] + str r4, [sp, #4] + bl sub_080036BC + adds r5, #8 + ldrb r0, [r5, #4] + cmp r0, #0xff + bne _081AE2AC +_081AE2C8: + ldrb r0, [r6, #0x10] + movs r1, #2 + bl sub_08003528 + adds r0, r7, #0 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AE288 + + thumb_func_start sub_081AE2DC +sub_081AE2DC: @ 0x081AE2DC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AE308 + adds r3, r1, r0 + ldr r2, _081AE30C + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081AE310 + ldrh r0, [r3, #0x18] + ldrh r1, [r3, #0x1a] + adds r0, r0, r1 + ldr r1, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0, #4] + b _081AE39A + .align 2, 0 +_081AE308: .4byte gUnknown_3005B68 +_081AE30C: .4byte gUnknown_3002360 +_081AE310: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081AE31E + movs r0, #2 + rsbs r0, r0, #0 + b _081AE39A +_081AE31E: + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081AE332 + adds r0, r3, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0 + b _081AE392 +_081AE332: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081AE342 + adds r0, r3, #0 + movs r1, #1 + movs r2, #1 + b _081AE390 +_081AE342: + ldrb r0, [r3, #0x16] + lsrs r0, r0, #6 + cmp r0, #1 + beq _081AE358 + cmp r0, #1 + ble _081AE352 + cmp r0, #2 + beq _081AE364 +_081AE352: + movs r2, #0 + movs r0, #0 + b _081AE378 +_081AE358: + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0x10 + b _081AE372 +_081AE364: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0x80 + lsls r0, r0, #1 +_081AE372: + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081AE378: + cmp r2, #0 + beq _081AE386 + ldrb r2, [r3, #0xe] + adds r0, r3, #0 + movs r1, #1 + movs r3, #0 + b _081AE392 +_081AE386: + cmp r0, #0 + beq _081AE396 + ldrb r2, [r3, #0xe] + adds r0, r3, #0 + movs r1, #1 +_081AE390: + movs r3, #1 +_081AE392: + bl sub_081AEC00 +_081AE396: + movs r0, #1 + rsbs r0, r0, #0 +_081AE39A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AE2DC + + thumb_func_start sub_081AE3A0 +sub_081AE3A0: @ 0x081AE3A0 + push {r4, lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081AE3E0 + adds r1, r0, r1 + cmp r3, #0 + beq _081AE3BC + ldrh r0, [r1, #0x18] + strh r0, [r3] +_081AE3BC: + cmp r2, #0 + beq _081AE3C4 + ldrh r0, [r1, #0x1a] + strh r0, [r2] +_081AE3C4: + ldrb r0, [r1, #0x1e] + cmp r0, #0xff + beq _081AE3D4 + ldrb r1, [r1, #0x17] + lsrs r1, r1, #6 + subs r1, #2 + bl sub_081AF39C +_081AE3D4: + adds r0, r4, #0 + bl sub_080A8964 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AE3E0: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE3A0 + + thumb_func_start sub_081AE3E4 +sub_081AE3E4: @ 0x081AE3E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081AE424 + adds r4, r4, r0 + ldrb r0, [r4, #0x10] + ldrb r2, [r4, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrh r1, [r4, #0x18] + ldrh r3, [r4, #0xe] + adds r0, r4, #0 + movs r2, #0 + bl sub_081AE740 + adds r0, r4, #0 + bl sub_081AE7F8 + ldrb r0, [r4, #0x10] + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AE424: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE3E4 + + thumb_func_start sub_081AE428 +sub_081AE428: @ 0x081AE428 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081AE468 + adds r4, r4, r0 + lsrs r1, r1, #0x14 + 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 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + lsrs r3, r3, #0x14 + ands r0, r5 + orrs r0, r3 + strb r0, [r4, #0x15] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AE468: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE428 + + thumb_func_start sub_081AE46C +sub_081AE46C: @ 0x081AE46C + push {r4, r5, lr} + adds r3, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081AE4A4 + adds r4, r4, r0 + ldrb r0, [r4, #0x10] + movs r1, #1 + adds r2, r3, #0 + bl sub_08003F78 + ldrb r0, [r4, #0x10] + movs r1, #2 + adds r2, r5, #0 + bl sub_08003F78 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AE4A4: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE46C + + thumb_func_start sub_081AE4A8 +sub_081AE4A8: @ 0x081AE4A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + mov ip, r2 + ldr r5, [sp, #0x34] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + 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, ip + strh r1, [r0, #0x1a] + strb r3, [r0, #0x1c] + strb r3, [r0, #0x1d] + cmp r4, #0x40 + bne _081AE4DC + movs r1, #0 + movs r2, #1 + movs r3, #0 + bl sub_081AEC00 +_081AE4DC: + cmp r4, #0x80 + bne _081AE4EC + mov r0, sp + movs r1, #0 + movs r2, #1 + movs r3, #1 + bl sub_081AEC00 +_081AE4EC: + cmp r5, #0 + beq _081AE4F6 + mov r0, sp + ldrh r0, [r0, #0x18] + strh r0, [r5] +_081AE4F6: + ldr r2, [sp, #0x38] + cmp r2, #0 + beq _081AE502 + mov r0, sp + ldrh r0, [r0, #0x1a] + strh r0, [r2] +_081AE502: + movs r0, #1 + rsbs r0, r0, #0 + add sp, #0x20 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AE4A8 + + thumb_func_start sub_081AE510 +sub_081AE510: @ 0x081AE510 + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AE534 + adds r1, r1, r0 + cmp r2, #0 + beq _081AE52E + ldrh r0, [r1, #0x1a] + ldrh r1, [r1, #0x18] + adds r0, r0, r1 + strh r0, [r2] +_081AE52E: + pop {r0} + bx r0 + .align 2, 0 +_081AE534: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE510 + + thumb_func_start sub_081AE538 +sub_081AE538: @ 0x081AE538 + push {lr} + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AE560 + adds r1, r1, r0 + cmp r3, #0 + beq _081AE552 + ldrh r0, [r1, #0x18] + strh r0, [r3] +_081AE552: + cmp r2, #0 + beq _081AE55A + ldrh r0, [r1, #0x1a] + strh r0, [r2] +_081AE55A: + pop {r0} + bx r0 + .align 2, 0 +_081AE560: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE538 + + thumb_func_start sub_081AE564 +sub_081AE564: @ 0x081AE564 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081AE5A8 + adds r4, r4, r0 + ldrb r0, [r4, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + ldrb r1, [r4, #0x16] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1d + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #0x1a] + adds r2, r1, #0 + muls r2, r0, r2 + adds r1, r2, #0 + ldrb r0, [r4, #0x14] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081AE5A8: .4byte gUnknown_3005B68 + thumb_func_end sub_081AE564 + + thumb_func_start sub_081AE5AC +sub_081AE5AC: @ 0x081AE5AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + ldr r0, _081AE67C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081AE680 + adds r7, r0, r1 + adds r0, r7, #0 + ldm r4!, {r1, r2, r3} + stm r0!, {r1, r2, r3} + ldm r4!, {r1, r2, r3} + stm r0!, {r1, r2, 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, _081AE684 + ldrb r1, [r7, #0x14] + movs r5, #0xf + lsrs r1, r1, #4 + ldrb r4, [r3] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r7, #0x15] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x18 + ands r0, r5 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r7, #0x15] + lsrs r0, r0, #4 + ands r5, r0 + ldrb r0, [r3, #1] + ands r2, r0 + orrs r2, r5 + strb r2, [r3, #1] + ldrb r1, [r7, #0x16] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x11 + ldr r0, [r3] + ldr r2, _081AE688 + ands r0, r2 + orrs r0, r1 + str r0, [r3] + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r3, #3] + ldrh r0, [r7, #0xc] + ldrh r1, [r7, #0xe] + cmp r0, r1 + bhs _081AE644 + strh r0, [r7, #0xe] +_081AE644: + ldrb r0, [r7, #0x10] + ldrb r2, [r7, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrh r1, [r7, #0x18] + ldrh r3, [r7, #0xe] + adds r0, r7, #0 + movs r2, #0 + bl sub_081AE740 + adds r0, r7, #0 + bl sub_081AE7F8 + adds r0, r7, #0 + movs r1, #1 + bl sub_081AECD8 + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AE67C: .4byte sub_081AE130 +_081AE680: .4byte gUnknown_3005B68 +_081AE684: .4byte gUnknown_3006040 +_081AE688: .4byte 0xFFFC0FFF + thumb_func_end sub_081AE5AC + + thumb_func_start sub_081AE68C +sub_081AE68C: @ 0x081AE68C + push {r4, r5, r6, r7, lr} + sub sp, #0x18 + adds r4, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov ip, r3 + ldr r5, _081AE6F4 + ldrb r1, [r5, #3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _081AE6F8 + add r1, sp, #0x14 + ldr r2, [r5] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x1c + movs r3, #0 + strb r0, [r1] + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r1, #1] + lsls r0, r2, #0x14 + lsrs r0, r0, #0x1c + strb r0, [r1, #2] + ldrb r0, [r4, #0x10] + lsls r1, r2, #1 + lsrs r1, r1, #0x19 + lsls r2, r2, #0xe + lsrs r2, r2, #0x1a + str r2, [sp] + str r3, [sp, #4] + add r2, sp, #0x14 + str r2, [sp, #8] + movs r2, #1 + rsbs r2, r2, #0 + str r2, [sp, #0xc] + str r6, [sp, #0x10] + adds r2, r7, #0 + mov r3, ip + bl sub_08199B84 + ldrb r1, [r5, #3] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #3] + b _081AE736 + .align 2, 0 +_081AE6F4: .4byte gUnknown_3006040 +_081AE6F8: + add r2, sp, #0x14 + ldrb r1, [r4, #0x15] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r2] + ldrb r0, [r4, #0x14] + lsrs r0, r0, #4 + strb r0, [r2, #1] + adds r0, r2, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1c + strb r1, [r0, #2] + ldrb r0, [r4, #0x10] + ldrb r1, [r4, #0x17] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1a + ldrb r2, [r4, #0x16] + lsls r2, r2, #0x1d + lsrs r2, r2, #0x1d + str r2, [sp] + str r3, [sp, #4] + add r2, sp, #0x14 + str r2, [sp, #8] + movs r2, #1 + rsbs r2, r2, #0 + str r2, [sp, #0xc] + str r6, [sp, #0x10] + adds r2, r7, #0 + mov r3, ip + bl sub_08199B84 +_081AE736: + add sp, #0x18 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AE68C + + thumb_func_start sub_081AE740 +sub_081AE740: @ 0x081AE740 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r4, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov sl, r3 + ldrb r0, [r4, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + ldrb r1, [r4, #0x16] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1d + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0 + mov r8, r0 + cmp r8, sl + bge _081AE7E8 +_081AE782: + ldr r0, [r4] + mov r2, sb + lsls r1, r2, #3 + adds r0, r1, r0 + ldr r2, [r0, #4] + movs r0, #3 + rsbs r0, r0, #0 + adds r5, r1, #0 + cmp r2, r0 + beq _081AE79A + ldrb r6, [r4, #0x12] + b _081AE79C +_081AE79A: + ldrb r6, [r4, #0x11] +_081AE79C: + ldr r0, [sp] + add r0, r8 + ldr r2, [sp, #4] + adds r1, r0, #0 + muls r1, r2, r1 + ldrb r0, [r4, #0x14] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r7, r2, #0 + ldr r3, [r4, #8] + cmp r3, #0 + beq _081AE7C6 + ldrb r0, [r4, #0x10] + ldr r1, [r4] + adds r1, r5, r1 + ldr r1, [r1, #4] + bl _call_via_r3 +_081AE7C6: + ldr r0, [r4] + adds r0, r5, r0 + ldr r1, [r0] + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_081AE68C + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + movs r0, #1 + add r8, r0 + cmp r8, sl + blt _081AE782 +_081AE7E8: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081AE740 + + thumb_func_start sub_081AE7F8 +sub_081AE7F8: @ 0x081AE7F8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + ldrb r1, [r6, #0x16] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1d + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r6, #0x13] + mov r8, r1 + ldrh r1, [r6, #0x1a] + muls r1, r0, r1 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrb r0, [r6, #0x17] + lsrs r0, r0, #6 + cmp r0, #1 + beq _081AE8E4 + cmp r0, #1 + bgt _081AE83E + cmp r0, #0 + beq _081AE848 + b _081AE8E4 +_081AE83E: + cmp r0, #2 + beq _081AE85C + cmp r0, #3 + beq _081AE8A4 + b _081AE8E4 +_081AE848: + ldr r1, _081AE858 + adds r0, r6, #0 + mov r2, r8 + adds r3, r7, #0 + bl sub_081AE68C + b _081AE8E4 + .align 2, 0 +_081AE858: .4byte gUnknown_85C9421 +_081AE85C: + ldrb r0, [r6, #0x1e] + cmp r0, #0xff + bne _081AE86C + adds r0, r6, #0 + movs r1, #0 + bl sub_081AE8F0 + strb r0, [r6, #0x1e] +_081AE86C: + ldrb r5, [r6, #0x1e] + ldrb r0, [r6, #0x10] + movs r1, #1 + bl sub_0800401C + adds r4, r0, #0 + lsls r4, r4, #0x13 + ldr r0, _081AE8A0 + adds r4, r4, r0 + lsrs r4, r4, #0x10 + ldrb r0, [r6, #0x10] + movs r1, #2 + bl sub_0800401C + adds r2, r0, #0 + lsls r2, r2, #3 + adds r2, r2, r7 + subs r2, #1 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_081AF374 + b _081AE8E4 + .align 2, 0 +_081AE8A0: .4byte 0xFFFF0000 +_081AE8A4: + ldrb r0, [r6, #0x1e] + cmp r0, #0xff + bne _081AE8B4 + adds r0, r6, #0 + movs r1, #1 + bl sub_081AE8F0 + strb r0, [r6, #0x1e] +_081AE8B4: + ldrb r5, [r6, #0x1e] + ldrb r0, [r6, #0x10] + movs r1, #1 + bl sub_0800401C + adds r4, r0, #0 + lsls r4, r4, #3 + add r4, r8 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6, #0x10] + movs r1, #2 + bl sub_0800401C + adds r2, r0, #0 + lsls r2, r2, #3 + adds r2, r2, r7 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #1 + bl sub_081AF374 +_081AE8E4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AE7F8 + + thumb_func_start sub_081AE8F0 +sub_081AE8F0: @ 0x081AE8F0 + 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, #1] + ldrb r0, [r4, #0x10] + movs r1, #3 + bl sub_0800401C + mov r1, sp + lsls r0, r0, #3 + adds r0, #2 + strh r0, [r1, #2] + ldrb r0, [r4, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + mov r1, sp + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, #2 + strh r0, [r1, #4] + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r1, #6] + ldr r0, _081AE94C + strh r0, [r1, #8] + movs r0, #0xf + strb r0, [r1, #0xa] + mov r0, sp + adds r1, r5, #0 + bl sub_081AF358 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081AE94C: .4byte 0x0000FFFF + thumb_func_end sub_081AE8F0 + + thumb_func_start sub_081AE950 +sub_081AE950: @ 0x081AE950 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r8, r1 + ldrb r1, [r7, #0x17] + lsrs r0, r1, #6 + cmp r0, #0 + bne _081AE9CC + lsls r0, r1, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + adds r4, r0, #0 + ldrb r0, [r7, #0x16] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #0 + bl sub_0800629C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r7, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r6, [r7, #0x10] + ldrb r2, [r7, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + ldrb r2, [r7, #0x13] + mov r3, r8 + muls r3, r4, r3 + adds r4, r3, #0 + ldrb r3, [r7, #0x14] + lsls r3, r3, #0x1c + lsrs r3, r3, #0x1c + adds r3, r3, r4 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r5, [sp] + str r0, [sp, #4] + adds r0, r6, #0 + bl sub_08003A34 +_081AE9CC: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081AE950 + + thumb_func_start sub_081AE9D8 +sub_081AE9D8: @ 0x081AE9D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + ldrh r3, [r4, #0x1a] + ldrh r5, [r4, #0x18] + cmp r1, #0 + bne _081AEA4C + ldrh r0, [r4, #0xe] + cmp r0, #1 + bne _081AE9F0 + movs r2, #0 + b _081AEA02 +_081AE9F0: + ldrh r0, [r4, #0xe] + lsrs r2, r0, #1 + movs r1, #1 + ands r1, r0 + adds r2, r2, r1 + subs r0, r0, r2 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_081AEA02: + cmp r5, #0 + bne _081AEA28 + cmp r3, #0 + beq _081AEA8E + ldr r1, [r4] + movs r2, #3 + rsbs r2, r2, #0 +_081AEA10: + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r5, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0, #4] + cmp r0, r2 + bne _081AEA92 + cmp r3, #0 + bne _081AEA10 + b _081AEA8E +_081AEA28: + cmp r3, r2 + bls _081AEA48 + ldr r1, [r4] + movs r6, #3 + rsbs r6, r6, #0 +_081AEA32: + subs r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r5, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0, #4] + cmp r0, r6 + bne _081AEA92 + cmp r3, r2 + bhi _081AEA32 +_081AEA48: + subs r0, r5, #1 + b _081AEABA +_081AEA4C: + ldrh r0, [r4, #0xe] + cmp r0, #1 + bne _081AEA56 + movs r2, #0 + b _081AEA60 +_081AEA56: + ldrh r0, [r4, #0xe] + lsrs r2, r0, #1 + movs r1, #1 + ands r1, r0 + adds r2, r2, r1 +_081AEA60: + adds r1, r0, #0 + ldrh r0, [r4, #0xc] + subs r0, r0, r1 + cmp r5, r0 + bne _081AEA98 + subs r0, r1, #1 + cmp r3, r0 + bge _081AEA8E + ldr r2, [r4] + movs r6, #3 + rsbs r6, r6, #0 + adds r1, r0, #0 +_081AEA78: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r5, r3 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r0, [r0, #4] + cmp r0, r6 + bne _081AEA92 + cmp r3, r1 + blt _081AEA78 +_081AEA8E: + movs r0, #0 + b _081AEAC0 +_081AEA92: + strh r3, [r4, #0x1a] + movs r0, #1 + b _081AEAC0 +_081AEA98: + cmp r3, r2 + bhs _081AEAB8 + ldr r1, [r4] + movs r6, #3 + rsbs r6, r6, #0 +_081AEAA2: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r0, r5, r3 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0, #4] + cmp r0, r6 + bne _081AEA92 + cmp r3, r2 + blo _081AEAA2 +_081AEAB8: + adds r0, r5, #1 +_081AEABA: + strh r2, [r4, #0x1a] + strh r0, [r4, #0x18] + movs r0, #2 +_081AEAC0: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AE9D8 + + thumb_func_start sub_081AEAC8 +sub_081AEAC8: @ 0x081AEAC8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r7, r5, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + ldrh r0, [r6, #0xe] + cmp r5, r0 + blo _081AEB02 + ldrb r0, [r6, #0x10] + ldrb r2, [r6, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrh r1, [r6, #0x18] + ldrh r3, [r6, #0xe] + adds r0, r6, #0 + movs r2, #0 + bl sub_081AE740 + b _081AEBF2 +_081AEB02: + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #1 + bl sub_080061B4 + ldrb r1, [r6, #0x16] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1d + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r1, r8 + cmp r1, #0 + bne _081AEB94 + ldrb r0, [r6, #0x10] + adds r2, r5, #0 + muls r2, r4, r2 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r1, [r6, #0x15] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #1 + bl sub_08003B64 + ldrh r1, [r6, #0x18] + adds r0, r6, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_081AE740 + ldrh r0, [r6, #0xe] + adds r1, r0, #0 + muls r1, r4, r1 + adds r0, r1, #0 + ldrb r4, [r6, #0x14] + lsls r4, r4, #0x1c + lsrs r4, r4, #0x1c + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6, #0x10] + movs r1, #3 + bl sub_0800401C + adds r5, r0, #0 + lsls r5, r5, #0x13 + lsrs r5, r5, #0x10 + ldrb r0, [r6, #0x10] + movs r1, #4 + bl sub_0800401C + lsls r0, r0, #3 + subs r0, r0, r4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r3, [r6, #0x10] + ldrb r2, [r6, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + str r5, [sp] + str r0, [sp, #4] + adds r0, r3, #0 + movs r2, #0 + adds r3, r4, #0 + bl sub_08003A34 + b _081AEBF2 +_081AEB94: + ldrb r0, [r6, #0x10] + adds r2, r7, #0 + muls r2, r4, r2 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r1, [r6, #0x15] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #0 + bl sub_08003B64 + ldrh r2, [r6, #0xe] + subs r2, r2, r7 + ldrh r1, [r6, #0x18] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r6, #0 + adds r3, r7, #0 + bl sub_081AE740 + ldrb r0, [r6, #0x10] + movs r1, #3 + bl sub_0800401C + lsls r0, r0, #0x13 + lsrs r0, r0, #0x10 + ldrb r3, [r6, #0x10] + ldrb r2, [r6, #0x15] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + str r0, [sp] + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + str r0, [sp, #4] + adds r0, r3, #0 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 +_081AEBF2: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AEAC8 + + thumb_func_start sub_081AEC00 +sub_081AEC00: @ 0x081AEC00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov r8, r2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sb, r3 + ldrh r0, [r4, #0x1a] + mov sl, r0 + movs r7, #0 + movs r5, #0 + movs r0, #0 + cmp r7, r8 + bhs _081AEC68 +_081AEC2E: + adds r6, r0, #1 + b _081AEC4E +_081AEC32: + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldrh r0, [r4, #0x18] + ldrh r1, [r4, #0x1a] + adds r0, r0, r1 + ldr r1, [r4] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [r0, #4] + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + bne _081AEC60 +_081AEC4E: + adds r0, r4, #0 + mov r1, sb + bl sub_081AE9D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + orrs r5, r0 + cmp r0, #2 + beq _081AEC32 +_081AEC60: + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r8 + blo _081AEC2E +_081AEC68: + ldr r0, [sp] + cmp r0, #0 + beq _081AECC6 + cmp r5, #1 + beq _081AEC7E + cmp r5, #1 + ble _081AEC7A + cmp r5, #3 + ble _081AEC9E +_081AEC7A: + movs r0, #1 + b _081AECC8 +_081AEC7E: + adds r0, r4, #0 + mov r1, sl + bl sub_081AE950 + adds r0, r4, #0 + bl sub_081AE7F8 + adds r0, r4, #0 + movs r1, #0 + bl sub_081AECD8 + ldrb r0, [r4, #0x10] + movs r1, #2 + bl sub_08003528 + b _081AECC6 +_081AEC9E: + adds r0, r4, #0 + mov r1, sl + bl sub_081AE950 + adds r0, r4, #0 + adds r1, r7, #0 + mov r2, sb + bl sub_081AEAC8 + adds r0, r4, #0 + bl sub_081AE7F8 + adds r0, r4, #0 + movs r1, #0 + bl sub_081AECD8 + ldrb r0, [r4, #0x10] + movs r1, #2 + bl sub_08003528 +_081AECC6: + movs r0, #0 +_081AECC8: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081AEC00 + + thumb_func_start sub_081AECD8 +sub_081AECD8: @ 0x081AECD8 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r3, [r2, #4] + cmp r3, #0 + beq _081AECFA + ldrh r0, [r2, #0x18] + ldrh r1, [r2, #0x1a] + adds r0, r0, r1 + ldr r1, [r2] + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r0, [r0, #4] + adds r1, r4, #0 + bl _call_via_r3 +_081AECFA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081AECD8 + + thumb_func_start sub_081AED00 +sub_081AED00: @ 0x081AED00 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r6, _081AED4C + movs r5, #0xf + ands r0, r5 + ldrb r3, [r6] + mov r8, r3 + movs r4, #0x10 + rsbs r4, r4, #0 + adds r3, r4, #0 + mov r7, r8 + ands r3, r7 + orrs r3, r0 + lsrs r1, r1, #0x14 + ands r3, r5 + orrs r3, r1 + strb r3, [r6] + ands r2, r5 + ldrb r0, [r6, #1] + ands r4, r0 + orrs r4, r2 + strb r4, [r6, #1] + ldrb r0, [r6, #3] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r6, #3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AED4C: .4byte gUnknown_3006040 + thumb_func_end sub_081AED00 + + thumb_func_start sub_081AED50 +sub_081AED50: @ 0x081AED50 + push {lr} + lsls r1, r1, #0x18 + cmp r1, #0 + bne _081AED5E + movs r0, #5 + bl sub_080A306C +_081AED5E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AED50 + + thumb_func_start sub_081AED64 +sub_081AED64: @ 0x081AED64 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AED88 + adds r2, r1, r0 + cmp r3, #0x10 + bhi _081AEE2C + lsls r0, r3, #2 + ldr r1, _081AED8C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AED88: .4byte gUnknown_3005B68 +_081AED8C: .4byte _081AED90 +_081AED90: @ jump table + .4byte _081AEDD4 @ case 0 + .4byte _081AEDD4 @ case 1 + .4byte _081AEDD8 @ case 2 + .4byte _081AEDDC @ case 3 + .4byte _081AEDE0 @ case 4 + .4byte _081AEDE4 @ case 5 + .4byte _081AEDE8 @ case 6 + .4byte _081AEDEC @ case 7 + .4byte _081AEDF0 @ case 8 + .4byte _081AEDF4 @ case 9 + .4byte _081AEDFA @ case 10 + .4byte _081AEE02 @ case 11 + .4byte _081AEE08 @ case 12 + .4byte _081AEE10 @ case 13 + .4byte _081AEE18 @ case 14 + .4byte _081AEE1E @ case 15 + .4byte _081AEE26 @ case 16 +_081AEDD4: + ldr r0, [r2, #4] + b _081AEE30 +_081AEDD8: + ldrh r0, [r2, #0xc] + b _081AEE30 +_081AEDDC: + ldrh r0, [r2, #0xe] + b _081AEE30 +_081AEDE0: + ldrb r0, [r2, #0x10] + b _081AEE30 +_081AEDE4: + ldrb r0, [r2, #0x11] + b _081AEE30 +_081AEDE8: + ldrb r0, [r2, #0x12] + b _081AEE30 +_081AEDEC: + ldrb r0, [r2, #0x13] + b _081AEE30 +_081AEDF0: + ldrb r0, [r2, #0x14] + b _081AEDFC +_081AEDF4: + ldrb r0, [r2, #0x14] + lsrs r0, r0, #4 + b _081AEE30 +_081AEDFA: + ldrb r0, [r2, #0x15] +_081AEDFC: + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + b _081AEE30 +_081AEE02: + ldrb r0, [r2, #0x15] + lsrs r0, r0, #4 + b _081AEE30 +_081AEE08: + ldrb r0, [r2, #0x16] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + b _081AEE30 +_081AEE10: + ldrb r0, [r2, #0x16] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + b _081AEE30 +_081AEE18: + ldrb r0, [r2, #0x16] + lsrs r0, r0, #6 + b _081AEE30 +_081AEE1E: + ldrb r0, [r2, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + b _081AEE30 +_081AEE26: + ldrb r0, [r2, #0x17] + lsrs r0, r0, #6 + b _081AEE30 +_081AEE2C: + movs r0, #1 + rsbs r0, r0, #0 +_081AEE30: + pop {r1} + bx r1 + thumb_func_end sub_081AED64 + + thumb_func_start sub_081AEE34 +sub_081AEE34: @ 0x081AEE34 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AEE58 + adds r3, r1, r0 + cmp r4, #0x10 + bhi _081AEF34 + lsls r0, r4, #2 + ldr r1, _081AEE5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AEE58: .4byte gUnknown_3005B68 +_081AEE5C: .4byte _081AEE60 +_081AEE60: @ jump table + .4byte _081AEEA4 @ case 0 + .4byte _081AEEA4 @ case 1 + .4byte _081AEEA8 @ case 2 + .4byte _081AEEAC @ case 3 + .4byte _081AEEB0 @ case 4 + .4byte _081AEEB4 @ case 5 + .4byte _081AEEB8 @ case 6 + .4byte _081AEEBC @ case 7 + .4byte _081AEEC0 @ case 8 + .4byte _081AEECC @ case 9 + .4byte _081AEEDA @ case 10 + .4byte _081AEEE6 @ case 11 + .4byte _081AEEF4 @ case 12 + .4byte _081AEF00 @ case 13 + .4byte _081AEF0E @ case 14 + .4byte _081AEF1C @ case 15 + .4byte _081AEF28 @ case 16 +_081AEEA4: + str r2, [r3, #4] + b _081AEF34 +_081AEEA8: + strh r2, [r3, #0xc] + b _081AEF34 +_081AEEAC: + strh r2, [r3, #0xe] + b _081AEF34 +_081AEEB0: + strb r2, [r3, #0x10] + b _081AEF34 +_081AEEB4: + strb r2, [r3, #0x11] + b _081AEF34 +_081AEEB8: + strb r2, [r3, #0x12] + b _081AEF34 +_081AEEBC: + strb r2, [r3, #0x13] + b _081AEF34 +_081AEEC0: + movs r0, #0xf + ands r2, r0 + ldrb r1, [r3, #0x14] + movs r0, #0x10 + rsbs r0, r0, #0 + b _081AEED2 +_081AEECC: + lsls r2, r2, #4 + ldrb r1, [r3, #0x14] + movs r0, #0xf +_081AEED2: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x14] + b _081AEF34 +_081AEEDA: + movs r0, #0xf + ands r2, r0 + ldrb r1, [r3, #0x15] + movs r0, #0x10 + rsbs r0, r0, #0 + b _081AEEEC +_081AEEE6: + lsls r2, r2, #4 + ldrb r1, [r3, #0x15] + movs r0, #0xf +_081AEEEC: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x15] + b _081AEF34 +_081AEEF4: + movs r0, #7 + ands r2, r0 + ldrb r1, [r3, #0x16] + movs r0, #8 + rsbs r0, r0, #0 + b _081AEF14 +_081AEF00: + movs r0, #7 + ands r2, r0 + lsls r2, r2, #3 + ldrb r1, [r3, #0x16] + movs r0, #0x39 + rsbs r0, r0, #0 + b _081AEF14 +_081AEF0E: + lsls r2, r2, #6 + ldrb r1, [r3, #0x16] + movs r0, #0x3f +_081AEF14: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x16] + b _081AEF34 +_081AEF1C: + movs r0, #0x3f + ands r2, r0 + ldrb r1, [r3, #0x17] + movs r0, #0x40 + rsbs r0, r0, #0 + b _081AEF2E +_081AEF28: + lsls r2, r2, #6 + ldrb r1, [r3, #0x17] + movs r0, #0x3f +_081AEF2E: + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x17] +_081AEF34: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AEE34 + + thumb_func_start sub_081AEF3C +sub_081AEF3C: @ 0x081AEF3C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081AEF4E + cmp r0, #1 + beq _081AEF62 + b _081AEFBC +_081AEF4E: + ldrh r1, [r4, #0x30] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _081AEFBC +_081AEF62: + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081AEF72 + cmp r0, #1 + beq _081AEF98 + ldrh r2, [r4, #0x38] + b _081AEFB6 +_081AEF72: + movs r0, #0x34 + ldrsh r3, [r4, r0] + ldr r1, _081AEF94 + ldrh r2, [r4, #0x38] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + muls r0, r3, r0 + cmp r0, #0 + bge _081AEF8C + adds r0, #0xff +_081AEF8C: + asrs r0, r0, #8 + strh r0, [r4, #0x24] + b _081AEFB6 + .align 2, 0 +_081AEF94: .4byte gUnknown_82FA8CC +_081AEF98: + movs r0, #0x34 + ldrsh r3, [r4, r0] + ldr r1, _081AEFC4 + ldrh r2, [r4, #0x38] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + muls r0, r3, r0 + cmp r0, #0 + bge _081AEFB2 + adds r0, #0xff +_081AEFB2: + asrs r0, r0, #8 + strh r0, [r4, #0x26] +_081AEFB6: + ldrh r0, [r4, #0x36] + adds r0, r2, r0 + strh r0, [r4, #0x38] +_081AEFBC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AEFC4: .4byte gUnknown_82FA8CC + thumb_func_end sub_081AEF3C + + thumb_func_start sub_081AEFC8 +sub_081AEFC8: @ 0x081AEFC8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + adds r6, r0, #0 + ldr r5, [sp, #0x30] + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r8, r6 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov ip, r5 + mov r4, sp + ldr r0, _081AF04C + ldm r0!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + mov r0, sp + movs r4, #0 + strh r3, [r0] + mov r3, ip + strh r3, [r0, #2] + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081AF050 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r1 + adds r5, r3, #0 + adds r5, #0x3e + ldrb r1, [r5] + movs r2, #4 + orrs r1, r2 + strb r1, [r5] + strh r4, [r3, #0x2e] + ldr r1, _081AF054 + mov r5, r8 + lsls r6, r5, #2 + adds r6, r6, r1 + ldrb r2, [r6] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + strh r1, [r3, #0x30] + lsrs r2, r2, #4 + strh r2, [r3, #0x32] + ldrb r1, [r6, #1] + strh r1, [r3, #0x34] + ldrh r1, [r6, #2] + strh r1, [r3, #0x36] + strh r4, [r3, #0x38] + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AF04C: .4byte gUnknown_85DFAFC +_081AF050: .4byte gUnknown_20205AC +_081AF054: .4byte gUnknown_85DFAB4 + thumb_func_end sub_081AEFC8 + + thumb_func_start sub_081AF058 +sub_081AF058: @ 0x081AF058 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + adds r6, r0, #0 + mov sb, r1 + ldr r0, _081AF0A4 + str r0, [sp, #4] + ldr r5, _081AF0A8 + ldr r0, [sp, #8] + ands r0, r5 + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + ldrh r1, [r6, #0xa] + lsls r1, r1, #0x10 + ldr r4, _081AF0AC + ands r0, r4 + orrs r0, r1 + str r0, [sp, #8] + add r0, sp, #4 + bl sub_08034388 + ldrh r2, [r6, #0xc] + cmp r2, r4 + bne _081AF0B4 + ldr r0, _081AF0B0 + ldrb r1, [r6, #0xe] + lsls r1, r1, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + b _081AF0C6 + .align 2, 0 +_081AF0A4: .4byte gUnknown_85DFB80 +_081AF0A8: .4byte 0xFFFF0000 +_081AF0AC: .4byte 0x0000FFFF +_081AF0B0: .4byte gUnknown_85DFB60 +_081AF0B4: + ldr r0, _081AF164 + str r0, [sp, #0xc] + add r0, sp, #0xc + ldr r1, [r0, #4] + ands r1, r5 + orrs r1, r2 + str r1, [r0, #4] + bl sub_0800845C +_081AF0C6: + ldr r0, _081AF168 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081AF16C + adds r7, r0, r1 + movs r0, #0 + strb r0, [r7] + mov r0, sb + str r0, [r7, #4] + ldrh r0, [r6, #6] + strh r0, [r7, #8] + ldrh r0, [r6, #8] + 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, #1] + ldrb r2, [r6, #2] + ldrh r3, [r6, #0xa] + ldrh r4, [r6, #0xc] + str r4, [sp] + bl sub_081AEFC8 + strb r0, [r7, #0xc] + ldrb r0, [r6, #3] + ldrb r1, [r6, #4] + ldrb r2, [r6, #5] + ldrh r3, [r6, #0xa] + ldrh r4, [r6, #0xc] + str r4, [sp] + bl sub_081AEFC8 + strb r0, [r7, #0xd] + ldrh r1, [r6, #0xc] + ldr r0, _081AF170 + cmp r1, r0 + bne _081AF154 + ldr r5, _081AF174 + ldrb r0, [r7, #0xc] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r3, [r6, #0xe] + lsls r3, r3, #4 + ldrb r4, [r1, #5] + movs r2, #0xf + adds r0, r2, #0 + ands r0, r4 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r7, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r6, #0xe] + lsls r1, r1, #4 + ldrb r3, [r0, #5] + ands r2, r3 + orrs r2, r1 + strb r2, [r0, #5] +_081AF154: + mov r0, r8 + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AF164: .4byte gUnknown_85DFB60 +_081AF168: .4byte sub_081AF1DC +_081AF16C: .4byte gUnknown_3005B68 +_081AF170: .4byte 0x0000FFFF +_081AF174: .4byte gUnknown_20205AC + thumb_func_end sub_081AF058 + + thumb_func_start sub_081AF178 +sub_081AF178: @ 0x081AF178 + push {r4, lr} + adds r4, r1, #0 + subs r0, #2 + cmp r0, #1 + bhi _081AF19C + ldr r0, _081AF198 + movs r1, #2 + strb r1, [r0] + strb r4, [r0, #1] + strb r2, [r0, #2] + movs r1, #3 + strb r1, [r0, #3] + strb r4, [r0, #4] + strb r3, [r0, #5] + b _081AF1AE + .align 2, 0 +_081AF198: .4byte gUnknown_203CB58 +_081AF19C: + ldr r0, _081AF1D8 + movs r1, #0 + strb r1, [r0] + strb r2, [r0, #1] + strb r4, [r0, #2] + movs r1, #1 + strb r1, [r0, #3] + strb r3, [r0, #4] + strb r4, [r0, #5] +_081AF1AE: + adds r2, r0, #0 + movs r1, #0 + movs r0, #0 + strh r0, [r2, #6] + ldr r0, [sp, #8] + strh r0, [r2, #8] + 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_081AF058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081AF1D8: .4byte gUnknown_203CB58 + thumb_func_end sub_081AF178 + + thumb_func_start sub_081AF1DC +sub_081AF1DC: @ 0x081AF1DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AF214 + adds r4, r1, r0 + ldr r0, [r4, #4] + ldrh r5, [r0] + ldrh r0, [r4, #8] + cmp r5, r0 + bne _081AF220 + ldr r0, _081AF218 + cmp r5, r0 + beq _081AF220 + ldr r3, _081AF21C + ldrb r1, [r4, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _081AF236 + .align 2, 0 +_081AF214: .4byte gUnknown_3005B68 +_081AF218: .4byte 0x0000FFFF +_081AF21C: .4byte gUnknown_20205AC +_081AF220: + ldr r3, _081AF254 + ldrb r1, [r4, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_081AF236: + strb r1, [r0] + ldrh r0, [r4, #0xa] + cmp r5, r0 + bne _081AF258 + ldrb r1, [r4, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _081AF26C + .align 2, 0 +_081AF254: .4byte gUnknown_20205AC +_081AF258: + ldrb r1, [r4, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_081AF26C: + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081AF1DC + + thumb_func_start sub_081AF274 +sub_081AF274: @ 0x081AF274 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081AF2B8 + adds r4, r1, r0 + movs r1, #0x1e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081AF2C0 + ldr r3, _081AF2BC + ldrb r1, [r4, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrb r1, [r4, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _081AF2EA + .align 2, 0 +_081AF2B8: .4byte gUnknown_3005B68 +_081AF2BC: .4byte gUnknown_20205AC +_081AF2C0: + ldr r3, _081AF2F4 + ldrb r1, [r4, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_081AF2EA: + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081AF2F4: .4byte gUnknown_20205AC + thumb_func_end sub_081AF274 + + thumb_func_start sub_081AF2F8 +sub_081AF2F8: @ 0x081AF2F8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081AF34C + adds r5, r0, r1 + ldrh r0, [r5, #0xe] + ldr r4, _081AF350 + cmp r0, r4 + beq _081AF316 + bl sub_08008280 +_081AF316: + ldrh r0, [r5, #0x10] + cmp r0, r4 + beq _081AF320 + bl sub_08008564 +_081AF320: + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081AF354 + adds r0, r0, r4 + bl sub_08006E00 + ldrb r1, [r5, #0xd] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + adds r0, r6, #0 + bl sub_080A8964 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AF34C: .4byte gUnknown_3005B68 +_081AF350: .4byte 0x0000FFFF +_081AF354: .4byte gUnknown_20205AC + thumb_func_end sub_081AF2F8 + + thumb_func_start sub_081AF358 +sub_081AF358: @ 0x081AF358 + push {lr} + cmp r1, #0 + beq _081AF362 + cmp r1, #1 + beq _081AF368 +_081AF362: + bl sub_081AF500 + b _081AF36C +_081AF368: + bl sub_081AF738 +_081AF36C: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_081AF358 + + thumb_func_start sub_081AF374 +sub_081AF374: @ 0x081AF374 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + cmp r3, #0 + beq _081AF38C + cmp r3, #1 + beq _081AF392 + b _081AF396 +_081AF38C: + bl sub_081AF66C + b _081AF396 +_081AF392: + bl sub_081AF840 +_081AF396: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AF374 + + thumb_func_start sub_081AF39C +sub_081AF39C: @ 0x081AF39C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, #0 + beq _081AF3AC + cmp r1, #1 + beq _081AF3B2 + b _081AF3B6 +_081AF3AC: + bl sub_081AF6B0 + b _081AF3B6 +_081AF3B2: + bl sub_081AF878 +_081AF3B6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AF39C + + thumb_func_start sub_081AF3BC +sub_081AF3BC: @ 0x081AF3BC + bx lr + .align 2, 0 + thumb_func_end sub_081AF3BC + + thumb_func_start sub_081AF3C0 +sub_081AF3C0: @ 0x081AF3C0 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r3, #4 + cmp r0, #0x10 + bls _081AF3E0 + movs r2, #8 + subs r0, #8 + cmp r2, r0 + bge _081AF3E0 +_081AF3D8: + adds r3, #2 + adds r2, #8 + cmp r2, r0 + blt _081AF3D8 +_081AF3E0: + cmp r1, #0x10 + bls _081AF3F4 + movs r2, #8 + subs r1, #8 + cmp r2, r1 + bge _081AF3F4 +_081AF3EC: + adds r3, #2 + adds r2, #8 + cmp r2, r1 + blt _081AF3EC +_081AF3F4: + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_081AF3C0 + + thumb_func_start sub_081AF3FC +sub_081AF3FC: @ 0x081AF3FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r3, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + ldr r0, _081AF4E0 + ldr r0, [r0] + str r0, [r3] + movs r1, #0x88 + strb r1, [r3] + strb r1, [r3, #1] + ldr r0, _081AF4E4 + ldr r0, [r0] + str r0, [r3, #4] + mov r2, r8 + adds r2, #0x80 + strb r2, [r3, #4] + strb r1, [r3, #5] + ldr r0, _081AF4E8 + ldr r0, [r0] + str r0, [r3, #8] + strb r1, [r3, #8] + mov r4, sb + adds r4, #0x80 + strb r4, [r3, #9] + ldr r0, _081AF4EC + ldr r0, [r0] + str r0, [r3, #0xc] + strb r2, [r3, #0xc] + strb r4, [r3, #0xd] + movs r0, #4 + mov ip, r0 + mov r2, r8 + cmp r2, #0x10 + bls _081AF490 + movs r2, #8 + mov r5, r8 + subs r5, #8 + cmp r2, r5 + bge _081AF490 + ldr r0, _081AF4F0 + ldr r0, [r0] + str r0, [sp] + ldr r0, _081AF4F4 + ldr r6, [r0] + adds r1, r3, #0 + adds r1, #0x10 + movs r7, #0x88 + mov sl, r7 +_081AF46E: + ldr r0, [sp] + str r0, [r1] + adds r0, r2, #0 + subs r0, #0x78 + strb r0, [r1] + mov r7, sl + strb r7, [r1, #1] + adds r1, #4 + str r6, [r1] + strb r0, [r1] + strb r4, [r1, #1] + adds r1, #4 + movs r0, #2 + add ip, r0 + adds r2, #8 + cmp r2, r5 + blt _081AF46E +_081AF490: + mov r2, sb + cmp r2, #0x10 + bls _081AF4CE + movs r1, #8 + mov r4, sb + subs r4, #8 + cmp r1, r4 + bge _081AF4CE + ldr r0, _081AF4F8 + ldr r6, [r0] + ldr r0, _081AF4FC + ldr r5, [r0] + mov r7, ip + lsls r0, r7, #2 + adds r2, r0, r3 + movs r7, #0x88 + mov r3, r8 + adds r3, #0x80 +_081AF4B4: + str r6, [r2] + strb r7, [r2] + adds r0, r1, #0 + subs r0, #0x78 + strb r0, [r2, #1] + adds r2, #4 + str r5, [r2] + strb r3, [r2] + strb r0, [r2, #1] + adds r2, #4 + adds r1, #8 + cmp r1, r4 + blt _081AF4B4 +_081AF4CE: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AF4E0: .4byte gUnknown_85DFB14 +_081AF4E4: .4byte gUnknown_85DFB18 +_081AF4E8: .4byte gUnknown_85DFB2C +_081AF4EC: .4byte gUnknown_85DFB30 +_081AF4F0: .4byte gUnknown_85DFB1C +_081AF4F4: .4byte gUnknown_85DFB28 +_081AF4F8: .4byte gUnknown_85DFB20 +_081AF4FC: .4byte gUnknown_85DFB24 + thumb_func_end sub_081AF3FC + + thumb_func_start sub_081AF500 +sub_081AF500: @ 0x081AF500 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x28 + adds r6, r0, #0 + ldr r0, _081AF54C + str r0, [sp, #0x18] + ldr r5, _081AF550 + add r0, sp, #0x18 + ldr r1, [r0, #4] + ands r1, r5 + movs r2, #0x80 + lsls r2, r2, #1 + orrs r1, r2 + ldrh r2, [r6, #6] + lsls r2, r2, #0x10 + ldr r3, _081AF554 + ands r1, r3 + orrs r1, r2 + str r1, [r0, #4] + bl sub_08034388 + ldrh r2, [r6, #8] + ldr r7, _081AF554 + cmp r2, r7 + bne _081AF55C + ldr r0, _081AF558 + ldrb r1, [r6, #0xa] + lsls r1, r1, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + b _081AF56E + .align 2, 0 +_081AF54C: .4byte gUnknown_85DFBF0 +_081AF550: .4byte 0xFFFF0000 +_081AF554: .4byte 0x0000FFFF +_081AF558: .4byte gUnknown_85DFB60 +_081AF55C: + ldr r0, _081AF654 + str r0, [sp, #0x20] + add r0, sp, #0x20 + ldr r1, [r0, #4] + ands r1, r5 + orrs r1, r2 + str r1, [r0, #4] + bl sub_0800845C +_081AF56E: + ldr r0, _081AF658 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081AF65C + adds r5, r0, r1 + ldrh r0, [r6, #6] + movs r3, #0 + mov r8, r3 + strh r0, [r5, #0xe] + ldrh r0, [r6, #8] + strh r0, [r5, #0x10] + ldrh r0, [r6, #2] + ldrh r1, [r6, #4] + bl sub_081AF3C0 + strb r0, [r5] + ldrb r0, [r5] + lsls r0, r0, #2 + bl sub_08000BC8 + adds r2, r0, #0 + str r2, [r5, #8] + str r2, [r5, #4] + ldrh r0, [r6, #2] + ldrh r1, [r6, #4] + bl sub_081AF3FC + mov r1, sp + ldr r0, _081AF660 + 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, #6] + strh r0, [r1] + ldrh r0, [r6, #8] + strh r0, [r1, #2] + ldrb r1, [r6] + adds r1, #0x78 + ldrb r2, [r6, #1] + adds r2, #0x78 + mov r0, sp + movs r3, #0 + bl sub_08006B0C + strb r0, [r5, #0xc] + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r7, _081AF664 + adds r0, r0, r7 + adds r1, r5, #0 + bl sub_0800858C + ldrb r0, [r5, #0xc] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x43 + mov r1, r8 + strb r1, [r0] + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r0, #0x42 + ldrb r2, [r0] + movs r1, #0x40 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + ldrh r1, [r6, #8] + ldr r0, _081AF668 + cmp r1, r0 + bne _081AF646 + ldrb r0, [r5, #0xc] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r7 + ldrb r2, [r6, #0xa] + lsls r2, r2, #4 + ldrb r3, [r1, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_081AF646: + adds r0, r4, #0 + add sp, #0x28 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AF654: .4byte gUnknown_85DFB60 +_081AF658: .4byte sub_081AF3BC +_081AF65C: .4byte gUnknown_3005B68 +_081AF660: .4byte gUnknown_82BF314 +_081AF664: .4byte gUnknown_20205AC +_081AF668: .4byte 0x0000FFFF + thumb_func_end sub_081AF500 + + thumb_func_start sub_081AF66C +sub_081AF66C: @ 0x081AF66C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #3 + ldr r0, _081AF6A8 + adds r3, r3, r0 + ldr r5, _081AF6AC + ldrb r4, [r3, #0xc] + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r1, #0x78 + strh r1, [r0, #0x20] + ldrb r1, [r3, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r2, #0x78 + strh r2, [r0, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AF6A8: .4byte gUnknown_3005B68 +_081AF6AC: .4byte gUnknown_20205AC + thumb_func_end sub_081AF66C + + thumb_func_start sub_081AF6B0 +sub_081AF6B0: @ 0x081AF6B0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081AF6FC + adds r4, r0, r1 + ldr r0, [r4, #8] + bl sub_08000BF0 + ldrh r0, [r4, #0xe] + ldr r6, _081AF700 + cmp r0, r6 + beq _081AF6D4 + bl sub_08008280 +_081AF6D4: + ldrh r0, [r4, #0x10] + cmp r0, r6 + beq _081AF6DE + bl sub_08008564 +_081AF6DE: + ldrb r1, [r4, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081AF704 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AF6FC: .4byte gUnknown_3005B68 +_081AF700: .4byte 0x0000FFFF +_081AF704: .4byte gUnknown_20205AC + thumb_func_end sub_081AF6B0 + + thumb_func_start sub_081AF708 +sub_081AF708: @ 0x081AF708 + push {lr} + adds r2, r0, #0 + ldr r1, _081AF730 + ldrh r3, [r2, #0x2e] + lsls r0, r3, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _081AF720 + adds r0, #0x3f +_081AF720: + asrs r0, r0, #6 + strh r0, [r2, #0x24] + adds r0, r3, #0 + adds r0, #8 + strh r0, [r2, #0x2e] + pop {r0} + bx r0 + .align 2, 0 +_081AF730: .4byte gUnknown_82FA8CC + thumb_func_end sub_081AF708 + + thumb_func_start sub_081AF734 +sub_081AF734: @ 0x081AF734 + bx lr + .align 2, 0 + thumb_func_end sub_081AF734 + + thumb_func_start sub_081AF738 +sub_081AF738: @ 0x081AF738 + push {r4, r5, r6, r7, lr} + sub sp, #0x28 + adds r5, r0, #0 + ldr r0, _081AF77C + str r0, [sp, #0x18] + ldr r6, _081AF780 + add r0, sp, #0x18 + ldr r1, [r0, #4] + ands r1, r6 + movs r2, #0x80 + orrs r1, r2 + ldrh r2, [r5, #6] + lsls r2, r2, #0x10 + ldr r4, _081AF784 + ands r1, r4 + orrs r1, r2 + str r1, [r0, #4] + bl sub_08034388 + ldrh r2, [r5, #8] + cmp r2, r4 + bne _081AF78C + ldr r0, _081AF788 + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x14 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + movs r2, #0x20 + bl sub_080A1200 + b _081AF79E + .align 2, 0 +_081AF77C: .4byte gUnknown_85DFC30 +_081AF780: .4byte 0xFFFF0000 +_081AF784: .4byte 0x0000FFFF +_081AF788: .4byte gUnknown_85DFB60 +_081AF78C: + ldr r0, _081AF828 + str r0, [sp, #0x20] + add r0, sp, #0x20 + ldr r1, [r0, #4] + ands r1, r6 + orrs r1, r2 + str r1, [r0, #4] + bl sub_0800845C +_081AF79E: + ldr r0, _081AF82C + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081AF830 + adds r4, r0, r1 + ldrh r0, [r5, #6] + strh r0, [r4, #2] + ldrh r0, [r5, #8] + strh r0, [r4, #4] + mov r1, sp + ldr r0, _081AF834 + 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, #6] + strh r0, [r1] + ldrh r0, [r5, #8] + strh r0, [r1, #2] + ldrb r1, [r5] + ldrb r2, [r5, #1] + mov r0, sp + movs r3, #0 + bl sub_08006B0C + strb r0, [r4] + ldr r3, _081AF838 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r2, #8 + strh r2, [r0, #0x24] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x26] + ldrh r1, [r5, #8] + ldr r0, _081AF83C + cmp r1, r0 + bne _081AF81E + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r2, [r5, #0xa] + lsls r2, r2, #4 + ldrb r3, [r1, #5] + movs r0, #0xf + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_081AF81E: + adds r0, r6, #0 + add sp, #0x28 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081AF828: .4byte gUnknown_85DFB60 +_081AF82C: .4byte sub_081AF734 +_081AF830: .4byte gUnknown_3005B68 +_081AF834: .4byte gUnknown_85DFB48 +_081AF838: .4byte gUnknown_20205AC +_081AF83C: .4byte 0x0000FFFF + thumb_func_end sub_081AF738 + + thumb_func_start sub_081AF840 +sub_081AF840: @ 0x081AF840 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r3, r0, #2 + adds r3, r3, r0 + lsls r3, r3, #3 + ldr r0, _081AF870 + adds r3, r3, r0 + ldr r5, _081AF874 + ldrb r4, [r3] + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r1, [r0, #0x20] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081AF870: .4byte gUnknown_3005B68 +_081AF874: .4byte gUnknown_20205AC + thumb_func_end sub_081AF840 + + thumb_func_start sub_081AF878 +sub_081AF878: @ 0x081AF878 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081AF8BC + adds r4, r0, r1 + ldrh r0, [r4, #2] + ldr r6, _081AF8C0 + cmp r0, r6 + beq _081AF896 + bl sub_08008280 +_081AF896: + ldrh r0, [r4, #4] + cmp r0, r6 + beq _081AF8A0 + bl sub_08008564 +_081AF8A0: + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081AF8C4 + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081AF8BC: .4byte gUnknown_3005B68 +_081AF8C0: .4byte 0x0000FFFF +_081AF8C4: .4byte gUnknown_20205AC + thumb_func_end sub_081AF878 + + thumb_func_start sub_081AF8C8 +sub_081AF8C8: @ 0x081AF8C8 + push {lr} + ldr r1, _081AF8E0 + movs r2, #0 + adds r0, r1, #0 + adds r0, #0x1c +_081AF8D2: + str r2, [r0] + subs r0, #4 + cmp r0, r1 + bge _081AF8D2 + pop {r0} + bx r0 + .align 2, 0 +_081AF8E0: .4byte gUnknown_203CB68 + thumb_func_end sub_081AF8C8 + + thumb_func_start sub_081AF8E4 +sub_081AF8E4: @ 0x081AF8E4 + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bhi _081AF8F8 + ldr r1, _081AF8FC + lsls r0, r0, #2 + adds r0, r0, r1 + str r2, [r0] +_081AF8F8: + pop {r0} + bx r0 + .align 2, 0 +_081AF8FC: .4byte gUnknown_203CB68 + thumb_func_end sub_081AF8E4 + + thumb_func_start sub_081AF900 +sub_081AF900: @ 0x081AF900 + push {r4, r5, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + beq _081AF940 + ldr r5, _081AF91C +_081AF910: + cmp r1, #0xf7 + beq _081AF920 + strb r1, [r2] + adds r4, #1 + adds r2, #1 + b _081AF938 + .align 2, 0 +_081AF91C: .4byte gUnknown_203CB68 +_081AF920: + adds r4, #1 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + cmp r1, #0 + beq _081AF936 + adds r0, r2, #0 + bl sub_080088B8 + adds r2, r0, #0 +_081AF936: + adds r4, #1 +_081AF938: + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _081AF910 +_081AF940: + movs r0, #0xff + strb r0, [r2] + adds r0, r2, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081AF900 + + thumb_func_start sub_081AF94C +sub_081AF94C: @ 0x081AF94C + lsls r0, r0, #0x18 + ldr r1, _081AF958 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_081AF958: .4byte gUnknown_203CB68 + thumb_func_end sub_081AF94C + + thumb_func_start sub_081AF95C +sub_081AF95C: @ 0x081AF95C + push {r4, lr} + adds r2, r0, #0 + ldr r0, _081AF98C + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + lsls r1, r1, #8 + ldrb r0, [r0, #5] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r0, [r2] + ldr r1, _081AF990 + cmp r0, r1 + beq _081AF99C + adds r4, r1, #0 + adds r1, r2, #0 +_081AF982: + ldrh r0, [r1] + cmp r0, r3 + bne _081AF994 + movs r0, #1 + b _081AF99E + .align 2, 0 +_081AF98C: .4byte gUnknown_3005AEC +_081AF990: .4byte 0x0000FFFF +_081AF994: + adds r1, #2 + ldrh r0, [r1] + cmp r0, r4 + bne _081AF982 +_081AF99C: + movs r0, #0 +_081AF99E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081AF95C + + thumb_func_start sub_081AF9A4 +sub_081AF9A4: @ 0x081AF9A4 + push {lr} + ldr r0, _081AF9B0 + bl sub_081AF95C + pop {r1} + bx r1 + .align 2, 0 +_081AF9B0: .4byte gUnknown_85DFC74 + thumb_func_end sub_081AF9A4 + + thumb_func_start sub_081AF9B4 +sub_081AF9B4: @ 0x081AF9B4 + push {lr} + ldr r0, _081AF9C0 + bl sub_081AF95C + pop {r1} + bx r1 + .align 2, 0 +_081AF9C0: .4byte gUnknown_85DFCC2 + thumb_func_end sub_081AF9B4 + + thumb_func_start sub_081AF9C4 +sub_081AF9C4: @ 0x081AF9C4 + push {lr} + ldr r0, _081AF9D0 + bl sub_081AF95C + pop {r1} + bx r1 + .align 2, 0 +_081AF9D0: .4byte gUnknown_85DFCC6 + thumb_func_end sub_081AF9C4 + + thumb_func_start sub_081AF9D4 +sub_081AF9D4: @ 0x081AF9D4 + push {lr} + bl sub_081AF9A4 + cmp r0, #0 + bne _081AF9F0 + ldr r0, _081AF9EC + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0xfd + ands r0, r1 + b _081AF9FA + .align 2, 0 +_081AF9EC: .4byte gUnknown_3005AF0 +_081AF9F0: + ldr r0, _081AFA00 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #2 + orrs r0, r1 +_081AF9FA: + strb r0, [r2, #9] + pop {r0} + bx r0 + .align 2, 0 +_081AFA00: .4byte gUnknown_3005AF0 + thumb_func_end sub_081AF9D4 + + thumb_func_start sub_081AFA04 +sub_081AFA04: @ 0x081AFA04 + push {lr} + bl sub_081AF9B4 + cmp r0, #0 + bne _081AFA20 + ldr r0, _081AFA1C + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0xfb + ands r0, r1 + b _081AFA2A + .align 2, 0 +_081AFA1C: .4byte gUnknown_3005AF0 +_081AFA20: + ldr r0, _081AFA30 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #4 + orrs r0, r1 +_081AFA2A: + strb r0, [r2, #9] + pop {r0} + bx r0 + .align 2, 0 +_081AFA30: .4byte gUnknown_3005AF0 + thumb_func_end sub_081AFA04 + + thumb_func_start sub_081AFA34 +sub_081AFA34: @ 0x081AFA34 + push {lr} + bl sub_081AF9C4 + cmp r0, #0 + bne _081AFA50 + ldr r0, _081AFA4C + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0xf7 + ands r0, r1 + b _081AFA5A + .align 2, 0 +_081AFA4C: .4byte gUnknown_3005AF0 +_081AFA50: + ldr r0, _081AFA60 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #8 + orrs r0, r1 +_081AFA5A: + strb r0, [r2, #9] + pop {r0} + bx r0 + .align 2, 0 +_081AFA60: .4byte gUnknown_3005AF0 + thumb_func_end sub_081AFA34 + + thumb_func_start sub_081AFA64 +sub_081AFA64: @ 0x081AFA64 + push {lr} + bl sub_081AF9D4 + bl sub_081AFA04 + bl sub_081AFA34 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AFA64 + + thumb_func_start sub_081AFA78 +sub_081AFA78: @ 0x081AFA78 + ldr r0, _081AFAA4 + ldr r2, [r0] + adds r2, #0xa8 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + movs r1, #1 + orrs r0, r1 + movs r1, #2 + orrs r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x10 + orrs r0, r1 + movs r1, #0x20 + orrs r0, r1 + movs r1, #8 + orrs r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_081AFAA4: .4byte gUnknown_3005AF0 + thumb_func_end sub_081AFA78 + + thumb_func_start sub_081AFAA8 +sub_081AFAA8: @ 0x081AFAA8 + ldr r0, _081AFAB8 + ldr r2, [r0] + ldrb r1, [r2, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #9] + bx lr + .align 2, 0 +_081AFAB8: .4byte gUnknown_3005AF0 + thumb_func_end sub_081AFAA8 + + thumb_func_start sub_081AFABC +sub_081AFABC: @ 0x081AFABC + push {r4, r5, lr} + ldr r5, _081AFAE4 + movs r0, #0x90 + lsls r0, r0, #1 + bl sub_08000BC8 + str r0, [r5] + cmp r0, #0 + beq _081AFAF2 + ldr r4, _081AFAE8 + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + cmp r0, #0 + beq _081AFAEC + movs r0, #1 + b _081AFAF4 + .align 2, 0 +_081AFAE4: .4byte gUnknown_203CB88 +_081AFAE8: .4byte gUnknown_203CB8C +_081AFAEC: + ldr r0, [r5] + bl sub_08000BF0 +_081AFAF2: + movs r0, #0 +_081AFAF4: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AFABC + + thumb_func_start sub_081AFAFC +sub_081AFAFC: @ 0x081AFAFC + push {lr} + ldr r0, _081AFB14 + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _081AFB18 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_081AFB14: .4byte gUnknown_203CB88 +_081AFB18: .4byte gUnknown_203CB8C + thumb_func_end sub_081AFAFC + + thumb_func_start sub_081AFB1C +sub_081AFB1C: @ 0x081AFB1C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r4, #0 +_081AFB24: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #5 + adds r0, r6, r0 + lsls r1, r4, #7 + adds r1, r5, r1 + movs r2, #0x30 + bl CpuSet + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081AFB24 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AFB1C + + thumb_func_start sub_081AFB48 +sub_081AFB48: @ 0x081AFB48 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r6, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r5, r2, #0x10 + bl sub_081AFABC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AFC00 + adds r0, r5, #0 + movs r1, #0 + bl sub_081AFCD4 + ldr r4, _081AFBEC + ldr r1, [r4] + bl sub_08034370 + ldr r0, [r4] + ldr r4, _081AFBF0 + ldr r1, [r4] + bl sub_081AFB1C + ldr r0, [r4] + str r0, [sp] + ldr r4, _081AFBF4 + ldr r0, [sp, #4] + ands r0, r4 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + lsls r2, r7, #0x10 + ldr r1, _081AFBF8 + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + adds r0, r5, #0 + movs r1, #1 + bl sub_081AFCD4 + str r0, [sp, #8] + add r0, sp, #8 + ldr r1, [r0, #4] + ands r1, r4 + orrs r1, r6 + str r1, [r0, #4] + bl sub_080343E4 + movs r0, #0x18 + bl sub_08000BC8 + adds r5, r0, #0 + ldr r0, _081AFBFC + adds r1, r5, #0 + movs r2, #0xc + bl CpuSet + strh r7, [r5] + strh r6, [r5, #2] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AFAFC + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + b _081AFC02 + .align 2, 0 +_081AFBEC: .4byte gUnknown_203CB88 +_081AFBF0: .4byte gUnknown_203CB8C +_081AFBF4: .4byte 0xFFFF0000 +_081AFBF8: .4byte 0x0000FFFF +_081AFBFC: .4byte gUnknown_85E08AC +_081AFC00: + movs r0, #0x40 +_081AFC02: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AFB48 + + thumb_func_start sub_081AFC0C +sub_081AFC0C: @ 0x081AFC0C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + bl sub_081AFABC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AFCC4 + adds r0, r5, #0 + movs r1, #0 + bl sub_081AFCD4 + ldr r4, _081AFCB4 + ldr r1, [r4] + bl sub_08034370 + ldr r0, [r4] + ldr r4, _081AFCB8 + ldr r1, [r4] + bl sub_081AFB1C + ldr r0, [r4] + str r0, [sp] + ldr r4, _081AFCBC + ldr r0, [sp, #4] + ands r0, r4 + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + lsls r2, r7, #0x10 + ldr r1, _081AFCC0 + ands r0, r1 + orrs r0, r2 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + adds r0, r5, #0 + movs r1, #1 + bl sub_081AFCD4 + str r0, [sp, #8] + add r0, sp, #8 + ldr r1, [r0, #4] + ands r1, r4 + orrs r1, r6 + str r1, [r0, #4] + bl sub_080343E4 + movs r0, #0x18 + bl sub_08000BC8 + adds r5, r0, #0 + mov r0, r8 + adds r1, r5, #0 + movs r2, #0xc + bl CpuSet + strh r7, [r5] + strh r6, [r5, #2] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AFAFC + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + b _081AFCC6 + .align 2, 0 +_081AFCB4: .4byte gUnknown_203CB88 +_081AFCB8: .4byte gUnknown_203CB8C +_081AFCBC: .4byte 0xFFFF0000 +_081AFCC0: .4byte 0x0000FFFF +_081AFCC4: + movs r0, #0x40 +_081AFCC6: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AFC0C + + thumb_func_start sub_081AFCD4 +sub_081AFCD4: @ 0x081AFCD4 + push {lr} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _081AFCE8 + cmp r3, r0 + bne _081AFCF0 + ldr r3, _081AFCEC + b _081AFCFA + .align 2, 0 +_081AFCE8: .4byte 0x0000FFFF +_081AFCEC: .4byte 0x00000179 +_081AFCF0: + movs r0, #0xbc + lsls r0, r0, #1 + cmp r3, r0 + bls _081AFCFA + movs r3, #0 +_081AFCFA: + ldr r2, _081AFD0C + lsls r0, r1, #2 + lsls r1, r3, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081AFD0C: .4byte gUnknown_85DFCC8 + thumb_func_end sub_081AFCD4 + + thumb_func_start sub_081AFD10 +sub_081AFD10: @ 0x081AFD10 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + ldr r4, [sp, #0x24] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r2, r2, #0x18 + lsrs r7, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp] + lsls r4, r4, #0x18 + lsrs r6, r4, #0x18 + bl sub_081B0204 + ldr r0, _081AFD5C + mov sl, r0 + movs r0, #0x8e + lsls r0, r0, #2 + bl sub_08000BC8 + adds r5, r0, #0 + mov r1, sl + str r5, [r1] + cmp r5, #0 + bne _081AFD60 + ldr r0, [sp, #0x2c] + bl sub_08000540 + b _081AFE6C + .align 2, 0 +_081AFD5C: .4byte gUnknown_203CB90 +_081AFD60: + ldr r3, _081AFDC4 + movs r1, #0xf + mov r4, r8 + ands r1, r4 + ldrb r2, [r3, #8] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #8] + ldr r0, [sp, #0x2c] + str r0, [r3] + movs r4, #0 + strb r7, [r3, #0xb] + lsls r2, r6, #2 + ldrh r1, [r5, #0xa] + movs r0, #3 + ands r0, r1 + orrs r0, r2 + strh r0, [r5, #0xa] + ldr r0, [sp, #0x28] + str r0, [r5] + str r4, [r5, #4] + ldrb r1, [r5, #8] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #8] + mov r1, sl + ldr r2, [r1] + ldrh r0, [r2, #8] + movs r4, #0xfe + lsls r4, r4, #3 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r2, #8] + ldr r0, [r2, #8] + movs r1, #0xfe + lsls r1, r1, #0xa + orrs r0, r1 + str r0, [r2, #8] + adds r6, r3, #0 + mov r5, r8 + cmp r5, #4 + bne _081AFDC8 + ldrb r0, [r2, #8] + movs r1, #1 + orrs r0, r1 + b _081AFDD0 + .align 2, 0 +_081AFDC4: .4byte gUnknown_203CB94 +_081AFDC8: + ldrb r1, [r2, #8] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 +_081AFDD0: + strb r0, [r2, #8] + mov r0, sb + cmp r0, #0xff + beq _081AFDEC + movs r0, #3 + mov r1, sb + ands r0, r1 + lsls r0, r0, #4 + ldrb r2, [r6, #8] + movs r1, #0x31 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #8] +_081AFDEC: + movs r2, #0 + ldr r5, _081AFE30 + movs r4, #0x86 + lsls r4, r4, #2 + movs r3, #0 +_081AFDF6: + ldr r0, [r5] + lsls r1, r2, #1 + adds r0, r0, r4 + adds r0, r0, r1 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _081AFDF6 + movs r2, #0 + ldr r4, _081AFE30 + movs r3, #0xff +_081AFE10: + ldr r0, [r4] + adds r0, #0xc + adds r0, r0, r2 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #2 + bls _081AFE10 + ldr r4, [sp] + cmp r4, #0 + bne _081AFE34 + strb r4, [r6, #9] + b _081AFE56 + .align 2, 0 +_081AFE30: .4byte gUnknown_203CB90 +_081AFE34: + adds r1, r6, #0 + movs r0, #9 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _081AFE52 + adds r1, r0, #0 + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081AFE7C + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + bne _081AFE56 +_081AFE52: + movs r0, #0 + strb r0, [r6, #9] +_081AFE56: + ldr r2, _081AFE80 + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_0806B004 + ldr r0, _081AFE84 + bl sub_08000540 +_081AFE6C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081AFE7C: .4byte gUnknown_2024190 +_081AFE80: .4byte gUnknown_30030B4 +_081AFE84: .4byte sub_081AFEB8 + thumb_func_end sub_081AFD10 + + thumb_func_start sub_081AFE88 +sub_081AFE88: @ 0x081AFE88 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AFE88 + + thumb_func_start sub_081AFEA4 +sub_081AFEA4: @ 0x081AFEA4 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AFEA4 + + thumb_func_start sub_081AFEB8 +sub_081AFEB8: @ 0x081AFEB8 + push {lr} +_081AFEBA: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AFEDE + bl sub_081AFEE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081AFEDE + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081AFEBA +_081AFEDE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081AFEB8 + + thumb_func_start sub_081AFEE4 +sub_081AFEE4: @ 0x081AFEE4 + push {r4, lr} + sub sp, #4 + ldr r1, _081AFF04 + movs r2, #0x87 + lsls r2, r2, #3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, #0 + cmp r0, #0x16 + bls _081AFEFA + b _081B0170 +_081AFEFA: + lsls r0, r0, #2 + ldr r1, _081AFF08 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081AFF04: .4byte gUnknown_3002360 +_081AFF08: .4byte _081AFF0C +_081AFF0C: @ jump table + .4byte _081AFF68 @ case 0 + .4byte _081AFF84 @ case 1 + .4byte _081AFF8A @ case 2 + .4byte _081AFFAC @ case 3 + .4byte _081AFFB2 @ case 4 + .4byte _081AFFC4 @ case 5 + .4byte _081AFFD6 @ case 6 + .4byte _081AFFE8 @ case 7 + .4byte _081B0010 @ case 8 + .4byte _081B002C @ case 9 + .4byte _081B0040 @ case 10 + .4byte _081B0064 @ case 11 + .4byte _081B0078 @ case 12 + .4byte _081B007E @ case 13 + .4byte _081B0090 @ case 14 + .4byte _081B0096 @ case 15 + .4byte _081B00B8 @ case 16 + .4byte _081B00D8 @ case 17 + .4byte _081B00EC @ case 18 + .4byte _081B0100 @ case 19 + .4byte _081B0108 @ case 20 + .4byte _081B0124 @ case 21 + .4byte _081B014C @ case 22 +_081AFF68: + bl sub_08121E58 + bl sub_08121D90 + bl sub_08199640 + ldr r1, _081AFF80 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081AFF80: .4byte gUnknown_3002360 +_081AFF84: + bl sub_080B9710 + b _081B015C +_081AFF8A: + bl sub_080A133C + ldr r2, _081AFFA4 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r1, _081AFFA8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081AFFA4: .4byte gUnknown_2037C74 +_081AFFA8: .4byte gUnknown_3002360 +_081AFFAC: + bl sub_0800668C + b _081B015C +_081AFFB2: + bl sub_08008424 + ldr r1, _081AFFC0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081AFFC0: .4byte gUnknown_3002360 +_081AFFC4: + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081AFFD0 + b _081B015C +_081AFFD0: + bl sub_080A8818 + b _081B015C +_081AFFD6: + bl sub_081B1D6C + ldr r1, _081AFFE4 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081AFFE4: .4byte gUnknown_3002360 +_081AFFE8: + bl sub_081B0228 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081AFFFA + bl sub_081B0194 + movs r0, #1 + b _081B018A +_081AFFFA: + ldr r0, _081B000C + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081B015C + .align 2, 0 +_081B000C: .4byte gUnknown_203CB90 +_081B0010: + bl sub_081B02A0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B001C + b _081B0188 +_081B001C: + ldr r1, _081B0028 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081B0028: .4byte gUnknown_3002360 +_081B002C: + ldr r0, _081B003C + ldrb r0, [r0, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + bl sub_081B206C + b _081B015C + .align 2, 0 +_081B003C: .4byte gUnknown_203CB94 +_081B0040: + ldr r0, _081B005C + ldrb r0, [r0, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + bl sub_081B0418 + ldr r0, _081B0060 + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081B015C + .align 2, 0 +_081B005C: .4byte gUnknown_203CB94 +_081B0060: .4byte gUnknown_203CB90 +_081B0064: + bl sub_081B59D0 + ldr r1, _081B0074 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081B0074: .4byte gUnknown_3002360 +_081B0078: + bl sub_081B5CE0 + b _081B015C +_081B007E: + bl sub_081B5E00 + ldr r1, _081B008C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081B008C: .4byte gUnknown_3002360 +_081B0090: + bl sub_080D27A4 + b _081B015C +_081B0096: + bl sub_081B0BC4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B00A2 + b _081B0188 +_081B00A2: + ldr r0, _081B00B4 + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081B015C + .align 2, 0 +_081B00B4: .4byte gUnknown_203CB90 +_081B00B8: + bl sub_081B0A70 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B0188 + ldr r0, _081B00D4 + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081B015C + .align 2, 0 +_081B00D4: .4byte gUnknown_203CB90 +_081B00D8: + bl sub_081B0BF8 + ldr r1, _081B00E8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081B00E8: .4byte gUnknown_3002360 +_081B00EC: + ldr r0, _081B00FC + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + bl sub_081B20F8 + b _081B015C + .align 2, 0 +_081B00FC: .4byte gUnknown_203CB90 +_081B0100: + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r2, r0 + b _081B0164 +_081B0108: + ldr r4, _081B0120 + ldr r0, [r4] + ldr r0, [r0] + movs r1, #0 + bl sub_080A8878 + ldr r0, [r4] + ldrh r0, [r0, #0xa] + lsrs r0, r0, #2 + bl sub_081B2CD8 + b _081B015C + .align 2, 0 +_081B0120: .4byte gUnknown_203CB90 +_081B0124: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r2, _081B0144 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #8] + ldr r1, _081B0148 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081B0164 + .align 2, 0 +_081B0144: .4byte gUnknown_2037C74 +_081B0148: .4byte gUnknown_3002360 +_081B014C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_081B015C: + ldr r1, _081B016C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_081B0164: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081B0188 + .align 2, 0 +_081B016C: .4byte gUnknown_3002360 +_081B0170: + ldr r0, _081B0180 + bl sub_080006F0 + ldr r0, _081B0184 + bl sub_08000540 + movs r0, #1 + b _081B018A + .align 2, 0 +_081B0180: .4byte sub_081AFEA4 +_081B0184: .4byte sub_081AFE88 +_081B0188: + movs r0, #0 +_081B018A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081AFEE4 + + thumb_func_start sub_081B0194 +sub_081B0194: @ 0x081B0194 + push {lr} + sub sp, #4 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r0, _081B01C4 + movs r1, #0 + bl sub_080A8878 + ldr r0, _081B01C8 + bl sub_080006F0 + ldr r0, _081B01CC + bl sub_08000540 + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081B01C4: .4byte sub_081B01D0 +_081B01C8: .4byte sub_081AFEA4 +_081B01CC: .4byte sub_081AFE88 + thumb_func_end sub_081B0194 + + thumb_func_start sub_081B01D0 +sub_081B01D0: @ 0x081B01D0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B01FC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B01F4 + ldr r0, _081B0200 + ldr r0, [r0] + bl sub_08000540 + bl sub_081B03CC + adds r0, r4, #0 + bl sub_080A8964 +_081B01F4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B01FC: .4byte gUnknown_2037C74 +_081B0200: .4byte gUnknown_203CB94 + thumb_func_end sub_081B01D0 + + thumb_func_start sub_081B0204 +sub_081B0204: @ 0x081B0204 + ldr r0, _081B0218 + movs r1, #0 + str r1, [r0] + ldr r0, _081B021C + str r1, [r0] + ldr r0, _081B0220 + str r1, [r0] + ldr r0, _081B0224 + str r1, [r0] + bx lr + .align 2, 0 +_081B0218: .4byte gUnknown_203CB90 +_081B021C: .4byte gUnknown_203CBB0 +_081B0220: .4byte gUnknown_203CBA8 +_081B0224: .4byte gUnknown_203CBAC + thumb_func_end sub_081B0204 + + thumb_func_start sub_081B0228 +sub_081B0228: @ 0x081B0228 + push {r4, r5, lr} + ldr r5, _081B0290 + movs r4, #0x80 + lsls r4, r4, #4 + adds r0, r4, #0 + bl sub_08000BC8 + str r0, [r5] + cmp r0, #0 + beq _081B0298 + movs r1, #0 + adds r2, r4, #0 + bl memset + movs r0, #0 + bl sub_080017D4 + ldr r1, _081B0294 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r1, [r5] + movs r0, #1 + bl sub_0800212C + bl sub_08121E00 + movs r0, #1 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #1 + b _081B029A + .align 2, 0 +_081B0290: .4byte gUnknown_203CBB0 +_081B0294: .4byte gUnknown_85E0F70 +_081B0298: + movs r0, #0 +_081B029A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081B0228 + + thumb_func_start sub_081B02A0 +sub_081B02A0: @ 0x081B02A0 + push {r4, lr} + sub sp, #4 + ldr r0, _081B02C0 + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #7 + bhi _081B0388 + lsls r0, r0, #2 + ldr r1, _081B02C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B02C0: .4byte gUnknown_203CB90 +_081B02C4: .4byte _081B02C8 +_081B02C8: @ jump table + .4byte _081B02E8 @ case 0 + .4byte _081B0310 @ case 1 + .4byte _081B0330 @ case 2 + .4byte _081B035C @ case 3 + .4byte _081B0360 @ case 4 + .4byte _081B0364 @ case 5 + .4byte _081B0368 @ case 6 + .4byte _081B036C @ case 7 +_081B02E8: + ldr r4, _081B0308 + ldr r0, _081B030C + mov r1, sp + bl sub_08199858 + adds r1, r0, #0 + str r1, [r4] + ldr r2, [sp] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r3, #0 + bl sub_0800195C + b _081B0372 + .align 2, 0 +_081B0308: .4byte gUnknown_203CBAC +_081B030C: .4byte gUnknown_8D967A0 +_081B0310: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B038C + ldr r0, _081B0328 + ldr r1, _081B032C + ldr r1, [r1] + bl sub_08034370 + b _081B0372 + .align 2, 0 +_081B0328: .4byte gUnknown_8D96B54 +_081B032C: .4byte gUnknown_203CBB0 +_081B0330: + ldr r0, _081B0350 + movs r2, #0xb0 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A11BC + ldr r0, _081B0354 + ldr r4, _081B0358 + ldr r1, [r4] + adds r1, #0x18 + movs r2, #0xb0 + bl CpuSet + ldr r1, [r4] + b _081B0376 + .align 2, 0 +_081B0350: .4byte gUnknown_8D96A68 +_081B0354: .4byte gUnknown_20373B4 +_081B0358: .4byte gUnknown_203CB90 +_081B035C: + movs r0, #4 + b _081B036E +_081B0360: + movs r0, #5 + b _081B036E +_081B0364: + movs r0, #6 + b _081B036E +_081B0368: + movs r0, #7 + b _081B036E +_081B036C: + movs r0, #8 +_081B036E: + bl sub_081B0398 +_081B0372: + ldr r0, _081B0384 + ldr r1, [r0] +_081B0376: + movs r0, #0x86 + lsls r0, r0, #2 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _081B038C + .align 2, 0 +_081B0384: .4byte gUnknown_203CB90 +_081B0388: + movs r0, #1 + b _081B038E +_081B038C: + movs r0, #0 +_081B038E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B02A0 + + thumb_func_start sub_081B0398 +sub_081B0398: @ 0x081B0398 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x1c + ldr r5, _081B03C4 + lsrs r4, r4, #0x17 + adds r1, r5, #0 + subs r1, #0x60 + adds r1, r4, r1 + adds r0, r5, #0 + movs r2, #0x10 + bl CpuSet + ldr r0, _081B03C8 + adds r4, 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 +_081B03C4: .4byte gUnknown_2037414 +_081B03C8: .4byte gUnknown_20377B4 + thumb_func_end sub_081B0398 + + thumb_func_start sub_081B03CC +sub_081B03CC: @ 0x081B03CC + push {lr} + ldr r0, _081B0408 + ldr r0, [r0] + cmp r0, #0 + beq _081B03DA + bl sub_08000BF0 +_081B03DA: + ldr r0, _081B040C + ldr r0, [r0] + cmp r0, #0 + beq _081B03E6 + bl sub_08000BF0 +_081B03E6: + ldr r0, _081B0410 + ldr r0, [r0] + cmp r0, #0 + beq _081B03F2 + bl sub_08000BF0 +_081B03F2: + ldr r0, _081B0414 + ldr r0, [r0] + cmp r0, #0 + beq _081B03FE + bl sub_08000BF0 +_081B03FE: + bl sub_080034D4 + pop {r0} + bx r0 + .align 2, 0 +_081B0408: .4byte gUnknown_203CB90 +_081B040C: .4byte gUnknown_203CBB0 +_081B0410: .4byte gUnknown_203CBAC +_081B0414: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B03CC + + thumb_func_start sub_081B0418 +sub_081B0418: @ 0x081B0418 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _081B0498 + movs r0, #0x60 + bl sub_08000BC8 + str r0, [r4] + movs r5, #0 + lsls r0, r7, #1 + adds r0, r0, r7 + lsls r0, r0, #4 + mov r8, r0 + movs r6, #0xff + mov sb, r4 +_081B043C: + ldr r2, [r4] + lsls r3, r5, #4 + adds r2, r3, r2 + ldr r0, _081B049C + mov ip, r0 + str r0, [r2] + lsls r0, r5, #3 + ldr r1, _081B04A0 + adds r0, r0, r1 + add r0, r8 + str r0, [r2, #4] + strb r5, [r2, #8] + ldr r1, [r4] + adds r1, r3, r1 + ldrb r0, [r1, #9] + orrs r0, r6 + strb r0, [r1, #9] + ldr r1, [r4] + adds r1, r3, r1 + ldrb r0, [r1, #0xa] + orrs r0, r6 + strb r0, [r1, #0xa] + ldr r1, [r4] + adds r1, r3, r1 + ldrb r0, [r1, #0xb] + orrs r0, r6 + strb r0, [r1, #0xb] + ldr r0, [r4] + adds r3, r3, r0 + ldrb r0, [r3, #0xc] + orrs r0, r6 + strb r0, [r3, #0xc] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081B043C + mov r1, sb + ldr r0, [r1] + mov r1, ip + subs r1, #0x20 + str r1, [r0] + cmp r7, #3 + bne _081B04A4 + str r1, [r0, #0x30] + b _081B04AA + .align 2, 0 +_081B0498: .4byte gUnknown_203CBA8 +_081B049C: .4byte gUnknown_85E0F9C +_081B04A0: .4byte gUnknown_85E0FBC +_081B04A4: + cmp r7, #0 + beq _081B04AA + str r1, [r0, #0x10] +_081B04AA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B0418 + + thumb_func_start sub_081B04B8 +sub_081B04B8: @ 0x081B04B8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B04F4 + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #5 + bne _081B0534 + cmp r5, #2 + bls _081B0534 + adds r0, r5, #0 + bl sub_081B09C4 + ldr r0, _081B04F8 + subs r1, r5, #3 + lsls r1, r1, #5 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + bne _081B0500 + ldr r0, _081B04FC + lsls r4, r5, #4 + ldr r0, [r0] + adds r0, r0, r4 + movs r1, #0x40 + bl sub_081B23E4 + b _081B050E + .align 2, 0 +_081B04F4: .4byte gUnknown_203CB94 +_081B04F8: .4byte gUnknown_2022C9C +_081B04FC: .4byte gUnknown_203CBA8 +_081B0500: + ldr r0, _081B0530 + lsls r4, r5, #4 + ldr r0, [r0] + adds r0, r0, r4 + movs r1, #8 + bl sub_081B23E4 +_081B050E: + adds r5, r4, #0 + ldr r4, _081B0530 + ldr r0, [r4] + adds r0, r5, r0 + ldrb r0, [r0, #8] + movs r1, #2 + bl sub_08003528 + ldr r0, [r4] + adds r0, r5, r0 + ldrb r0, [r0, #8] + bl sub_0800365C + movs r0, #2 + bl sub_08199654 + b _081B0616 + .align 2, 0 +_081B0530: .4byte gUnknown_203CBA8 +_081B0534: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B056C + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + bne _081B0574 + ldr r4, _081B0570 + ldr r0, [r4] + lsls r5, r5, #4 + adds r0, r5, r0 + ldrb r0, [r0, #8] + bl sub_081B23BC + ldr r0, [r4] + adds r0, r0, r5 + movs r1, #0x40 + bl sub_081B23E4 + ldr r0, [r4] + adds r0, r5, r0 + ldrb r0, [r0, #8] + movs r1, #2 + bl sub_08003528 + b _081B0604 + .align 2, 0 +_081B056C: .4byte gUnknown_2024190 +_081B0570: .4byte gUnknown_203CBA8 +_081B0574: + ldr r0, _081B0588 + ldrb r0, [r0, #8] + movs r1, #0xf + ands r1, r0 + cmp r1, #7 + bne _081B058C + adds r0, r5, #0 + bl sub_081B0838 + b _081B05CE + .align 2, 0 +_081B0588: .4byte gUnknown_203CB94 +_081B058C: + cmp r1, #2 + bne _081B0598 + adds r0, r5, #0 + bl sub_081B07E0 + b _081B05CE +_081B0598: + cmp r1, #4 + bne _081B05A4 + adds r0, r5, #0 + bl sub_081B0774 + b _081B05CE +_081B05A4: + cmp r1, #0xb + bne _081B05B0 + adds r0, r5, #0 + bl sub_081B0870 + b _081B05CE +_081B05B0: + cmp r1, #0xc + bne _081B05BC + adds r0, r5, #0 + bl sub_081B089C + b _081B05CE +_081B05BC: + adds r0, r5, #0 + bl sub_081B08D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B05CE + adds r0, r5, #0 + bl sub_081B0620 +_081B05CE: + ldr r2, _081B05E4 + ldrb r1, [r2, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #5 + bne _081B05E8 + adds r0, r5, #0 + movs r1, #0 + bl sub_081B0C9C + b _081B0602 + .align 2, 0 +_081B05E4: .4byte gUnknown_203CB94 +_081B05E8: + movs r0, #9 + ldrsb r0, [r2, r0] + cmp r0, r5 + bne _081B05FA + adds r0, r5, #0 + movs r1, #1 + bl sub_081B0C9C + b _081B0602 +_081B05FA: + adds r0, r5, #0 + movs r1, #0 + bl sub_081B0C9C +_081B0602: + lsls r5, r5, #4 +_081B0604: + ldr r0, _081B061C + ldr r0, [r0] + adds r0, r5, r0 + ldrb r0, [r0, #8] + bl sub_0800365C + movs r0, #0 + bl sub_08199654 +_081B0616: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B061C: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B04B8 + + thumb_func_start sub_081B0620 +sub_081B0620: @ 0x081B0620 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x64 + adds r1, r4, #0 + muls r1, r0, r1 + ldr r0, _081B0670 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x2d + bl sub_0806A058 + adds r2, r0, #0 + cmp r2, #0 + beq _081B0678 + ldr r6, _081B0674 + ldr r0, [r6] + lsls r5, r4, #4 + adds r0, r5, r0 + ldr r2, [r0] + ldrb r0, [r0, #8] + movs r1, #0 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + ldr r4, [r2] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl _call_via_r4 + ldr r1, [r6] + adds r1, r1, r5 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B270C + b _081B06DA + .align 2, 0 +_081B0670: .4byte gUnknown_2024190 +_081B0674: .4byte gUnknown_203CBA8 +_081B0678: + ldr r5, _081B06E4 + ldr r0, [r5] + lsls r4, r4, #4 + adds r0, r4, r0 + ldr r1, [r0] + ldrb r0, [r0, #8] + str r2, [sp] + str r2, [sp, #4] + ldr r6, [r1] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl _call_via_r6 + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B270C + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B2764 + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B2828 + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B2970 + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + movs r2, #0 + bl sub_081B2A08 + ldr r1, [r5] + adds r1, r1, r4 + adds r0, r7, #0 + bl sub_081B2ABC +_081B06DA: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B06E4: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B0620 + + thumb_func_start sub_081B06E8 +sub_081B06E8: @ 0x081B06E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + movs r1, #0x64 + adds r2, r0, #0 + muls r2, r1, r2 + ldr r1, _081B076C + adds r6, r2, r1 + ldr r7, _081B0770 + ldr r1, [r7] + lsls r5, r0, #4 + adds r1, r5, r1 + ldr r2, [r1] + ldrb r0, [r1, #8] + movs r1, #0 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + ldr r4, [r2] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl _call_via_r4 + ldr r1, [r7] + adds r1, r1, r5 + adds r0, r6, #0 + movs r2, #0 + bl sub_081B270C + adds r0, r6, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081B0754 + ldr r1, [r7] + adds r1, r1, r5 + adds r0, r6, #0 + movs r2, #0 + bl sub_081B2764 + ldr r1, [r7] + adds r1, r1, r5 + adds r0, r6, #0 + movs r2, #0 + bl sub_081B2828 +_081B0754: + ldr r1, [r7] + adds r1, r1, r5 + mov r0, r8 + movs r2, #0 + bl sub_081B2C3C + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B076C: .4byte gUnknown_2024190 +_081B0770: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B06E8 + + thumb_func_start sub_081B0774 +sub_081B0774: @ 0x081B0774 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B0798 + adds r0, r0, r1 + ldr r6, _081B079C + bl sub_081B824C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B07AE + adds r0, r5, #0 + movs r1, #7 + bl sub_081B06E8 + b _081B07DA + .align 2, 0 +_081B0798: .4byte gUnknown_2024190 +_081B079C: .4byte gUnknown_203CBC4 +_081B07A0: + adds r1, r4, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_081B06E8 + b _081B07DA +_081B07AE: + movs r4, #0 + b _081B07C6 +_081B07B2: + adds r1, r6, r4 + ldrb r0, [r1] + cmp r0, #0 + beq _081B07C0 + subs r0, #1 + cmp r0, r5 + beq _081B07A0 +_081B07C0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081B07C6: + bl sub_081B84D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _081B07B2 + adds r0, r5, #0 + movs r1, #1 + bl sub_081B06E8 +_081B07DA: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081B0774 + + thumb_func_start sub_081B07E0 +sub_081B07E0: @ 0x081B07E0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B0804 + adds r0, r0, r1 + bl sub_080DA58C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _081B0832 + lsls r0, r0, #2 + ldr r1, _081B0808 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B0804: .4byte gUnknown_2024190 +_081B0808: .4byte _081B080C +_081B080C: @ jump table + .4byte _081B0820 @ case 0 + .4byte _081B082A @ case 1 + .4byte _081B082A @ case 2 + .4byte _081B0820 @ case 3 + .4byte _081B0820 @ case 4 +_081B0820: + adds r0, r4, #0 + movs r1, #7 + bl sub_081B06E8 + b _081B0832 +_081B082A: + adds r0, r4, #0 + movs r1, #6 + bl sub_081B06E8 +_081B0832: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B07E0 + + thumb_func_start sub_081B0838 +sub_081B0838: @ 0x081B0838 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B085C + adds r0, r0, r1 + bl sub_0806DCF0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B0860 + adds r0, r4, #0 + movs r1, #9 + bl sub_081B06E8 + b _081B0868 + .align 2, 0 +_081B085C: .4byte gUnknown_2024190 +_081B0860: + adds r0, r4, #0 + movs r1, #8 + bl sub_081B06E8 +_081B0868: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B0838 + + thumb_func_start sub_081B0870 +sub_081B0870: @ 0x081B0870 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_081B1E5C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B088E + adds r0, r4, #0 + movs r1, #6 + bl sub_081B06E8 + b _081B0896 +_081B088E: + adds r0, r4, #0 + movs r1, #7 + bl sub_081B06E8 +_081B0896: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B0870 + + thumb_func_start sub_081B089C +sub_081B089C: @ 0x081B089C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B08C0 + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + beq _081B08C4 + adds r0, r4, #0 + movs r1, #0xb + bl sub_081B06E8 + b _081B08CC + .align 2, 0 +_081B08C0: .4byte gUnknown_2024190 +_081B08C4: + adds r0, r4, #0 + movs r1, #0xc + bl sub_081B06E8 +_081B08CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B089C + + thumb_func_start sub_081B08D4 +sub_081B08D4: @ 0x081B08D4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081B0904 + adds r6, r1, r0 + ldr r0, _081B0908 + ldrh r4, [r0] + ldr r0, _081B090C + ldrb r0, [r0, #0xb] + cmp r0, #0xc + bne _081B0918 + ldr r1, _081B0910 + movs r0, #0 + strh r0, [r1] + ldr r0, _081B0914 + ldrb r2, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_081B096C + b _081B0962 + .align 2, 0 +_081B0904: .4byte gUnknown_2024190 +_081B0908: .4byte gUnknown_203CB48 +_081B090C: .4byte gUnknown_203CB94 +_081B0910: .4byte gUnknown_2037290 +_081B0914: .4byte gUnknown_2037282 +_081B0918: + cmp r0, #3 + bne _081B092E + adds r0, r4, #0 + bl sub_080FDA70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B0932 + cmp r0, #2 + beq _081B093E +_081B092E: + movs r0, #0 + b _081B0964 +_081B0932: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B096C + b _081B0962 +_081B093E: + adds r0, r6, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081B095A + adds r0, r6, #0 + movs r1, #3 + adds r2, r4, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081B092E +_081B095A: + adds r0, r5, #0 + movs r1, #0 + bl sub_081B06E8 +_081B0962: + movs r0, #1 +_081B0964: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B08D4 + + thumb_func_start sub_081B096C +sub_081B096C: @ 0x081B096C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r3, _081B0998 + adds r0, r0, r3 + bl sub_081B1FA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _081B09AA + cmp r0, #2 + bgt _081B099C + cmp r0, #1 + beq _081B09A0 + b _081B09B4 + .align 2, 0 +_081B0998: .4byte gUnknown_2024190 +_081B099C: + cmp r0, #3 + bne _081B09B4 +_081B09A0: + adds r0, r4, #0 + movs r1, #9 + bl sub_081B06E8 + b _081B09BC +_081B09AA: + adds r0, r4, #0 + movs r1, #0xa + bl sub_081B06E8 + b _081B09BC +_081B09B4: + adds r0, r4, #0 + movs r1, #8 + bl sub_081B06E8 +_081B09BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B096C + + thumb_func_start sub_081B09C4 +sub_081B09C4: @ 0x081B09C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B09F4 + lsls r2, r0, #4 + ldr r1, [r1] + adds r6, r1, r2 + subs r0, #3 + lsls r0, r0, #0x18 + ldr r5, _081B09F8 + lsrs r0, r0, #0x13 + mov r8, r0 + adds r7, r0, r5 + ldrh r0, [r7] + cmp r0, #0 + bne _081B09FC + ldrb r0, [r6, #8] + bl sub_081B23BC + b _081B0A60 + .align 2, 0 +_081B09F4: .4byte gUnknown_203CBA8 +_081B09F8: .4byte gUnknown_2022C9C +_081B09FC: + ldr r2, [r6] + ldrb r0, [r6, #8] + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r4, [r2] + movs r2, #0 + movs r3, #0 + bl _call_via_r4 + ldr r4, _081B0A6C + adds r5, #4 + add r5, r8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080088B8 + adds r0, r4, #0 + bl sub_0800885C + ldrb r0, [r6, #8] + ldr r3, [r6] + adds r3, #4 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B26D8 + ldrb r0, [r7, #0xf] + adds r1, r6, #0 + bl sub_081B27DC + ldrb r0, [r7, #0x1c] + ldrh r1, [r7] + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_081B2890 + ldrh r0, [r7, #0x10] + adds r1, r6, #0 + bl sub_081B29D8 + ldrh r0, [r7, #0x12] + adds r1, r6, #0 + bl sub_081B2A70 + ldrh r0, [r7, #0x10] + ldrh r1, [r7, #0x12] + adds r2, r6, #0 + bl sub_081B2AF8 +_081B0A60: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B0A6C: .4byte gUnknown_2021C40 + thumb_func_end sub_081B09C4 + + thumb_func_start sub_081B0A70 +sub_081B0A70: @ 0x081B0A70 + push {r4, r5, lr} + ldr r5, _081B0A98 + ldr r0, [r5] + movs r4, #0x86 + lsls r4, r4, #2 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_081B04B8 + ldr r1, [r5] + adds r1, r1, r4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + beq _081B0A9C + movs r0, #0 + b _081B0A9E + .align 2, 0 +_081B0A98: .4byte gUnknown_203CB90 +_081B0A9C: + movs r0, #1 +_081B0A9E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081B0A70 + + thumb_func_start sub_081B0AA4 +sub_081B0AA4: @ 0x081B0AA4 + lsls r0, r0, #0x10 + ldr r1, _081B0AB4 + lsrs r0, r0, #0xb + ldr r1, [r1] + adds r1, r1, r0 + adds r0, r1, #0 + bx lr + .align 2, 0 +_081B0AB4: .4byte gUnknown_203CBAC + thumb_func_end sub_081B0AA4 + + thumb_func_start sub_081B0AB8 +sub_081B0AB8: @ 0x081B0AB8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B0B2C + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #5 + bne _081B0B68 + cmp r7, #2 + bls _081B0B68 + subs r0, r7, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r0, _081B0B30 + mov sb, r0 + mov r2, sl + lsls r2, r2, #5 + mov r8, r2 + mov r6, r8 + add r6, sb + ldrh r0, [r6] + cmp r0, #0 + beq _081B0BAC + mov r1, sb + adds r1, #0x18 + add r1, r8 + ldr r1, [r1] + ldr r4, _081B0B34 + lsls r5, r7, #4 + ldr r2, [r4] + adds r2, r2, r5 + movs r3, #0 + str r3, [sp] + bl sub_081B56CC + ldrh r0, [r6] + ldrh r1, [r6, #2] + ldr r2, [r4] + adds r2, r2, r5 + bl sub_081B58E8 + ldrh r0, [r6] + ldr r1, [r4] + adds r1, r1, r5 + bl sub_081B5B94 + ldrh r0, [r6, #0x10] + cmp r0, #0 + bne _081B0B38 + movs r3, #7 + b _081B0B48 + .align 2, 0 +_081B0B2C: .4byte gUnknown_203CB94 +_081B0B30: .4byte gUnknown_2022C9C +_081B0B34: .4byte gUnknown_203CBA8 +_081B0B38: + mov r0, sb + adds r0, #0x14 + add r0, r8 + ldr r0, [r0] + bl sub_081B1CE4 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_081B0B48: + ldr r1, _081B0B60 + mov r2, sl + lsls r0, r2, #5 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081B0B64 + ldr r2, [r1] + adds r2, r2, r5 + adds r1, r3, #0 + bl sub_081B5D38 + b _081B0BAC + .align 2, 0 +_081B0B60: .4byte gUnknown_2022C9C +_081B0B64: .4byte gUnknown_203CBA8 +_081B0B68: + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _081B0BBC + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B0BAC + ldr r4, _081B0BC0 + lsls r5, r7, #4 + ldr r1, [r4] + adds r1, r1, r5 + adds r0, r6, #0 + adds r2, r7, #0 + bl sub_081B5654 + ldr r1, [r4] + adds r1, r1, r5 + adds r0, r6, #0 + bl sub_081B58B4 + ldr r1, [r4] + adds r1, r1, r5 + adds r0, r6, #0 + bl sub_081B5B6C + ldr r1, [r4] + adds r1, r1, r5 + adds r0, r6, #0 + bl sub_081B5D04 +_081B0BAC: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B0BBC: .4byte gUnknown_2024190 +_081B0BC0: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B0AB8 + + thumb_func_start sub_081B0BC4 +sub_081B0BC4: @ 0x081B0BC4 + push {r4, r5, lr} + ldr r5, _081B0BEC + ldr r0, [r5] + movs r4, #0x86 + lsls r4, r4, #2 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_081B0AB8 + ldr r1, [r5] + adds r1, r1, r4 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + beq _081B0BF0 + movs r0, #0 + b _081B0BF2 + .align 2, 0 +_081B0BEC: .4byte gUnknown_203CB90 +_081B0BF0: + movs r0, #1 +_081B0BF2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081B0BC4 + + thumb_func_start sub_081B0BF8 +sub_081B0BF8: @ 0x081B0BF8 + push {r4, lr} + sub sp, #0xc + ldr r0, _081B0C20 + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #5 + bne _081B0C24 + movs r0, #7 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r1, #0xe + movs r2, #0x17 + movs r3, #0x11 + bl sub_080026E0 + b _081B0C8C + .align 2, 0 +_081B0C20: .4byte gUnknown_203CB94 +_081B0C24: + ldr r4, _081B0C5C + ldr r0, [r4] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B0C64 + movs r0, #0xbf + movs r1, #0x88 + bl sub_081B5C14 + ldr r3, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x7f + ands r0, r1 + lsls r0, r0, #4 + ldrh r2, [r3, #8] + ldr r1, _081B0C60 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #8] + bl sub_081B0EDC + movs r0, #0xbf + movs r1, #0x98 + bl sub_081B5C14 + b _081B0C6C + .align 2, 0 +_081B0C5C: .4byte gUnknown_203CB90 +_081B0C60: .4byte 0xFFFFF80F +_081B0C64: + movs r0, #0xc6 + movs r1, #0x94 + bl sub_081B5BD4 +_081B0C6C: + ldr r3, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x7f + ands r0, r1 + lsls r0, r0, #0xb + ldr r1, [r3, #8] + ldr r2, _081B0C94 + ands r1, r2 + orrs r1, r0 + str r1, [r3, #8] + ldr r0, _081B0C98 + ldrb r0, [r0, #9] + movs r1, #1 + bl sub_081B0C9C +_081B0C8C: + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B0C94: .4byte 0xFFFC07FF +_081B0C98: .4byte gUnknown_203CB94 + thumb_func_end sub_081B0BF8 + + thumb_func_start sub_081B0C9C +sub_081B0C9C: @ 0x081B0C9C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r8, r1 + cmp r7, #6 + beq _081B0D08 + cmp r7, #7 + beq _081B0D44 + movs r0, #0x64 + muls r0, r7, r0 + ldr r1, _081B0D00 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B0DB8 + ldr r6, _081B0D04 + lsls r5, r7, #4 + ldr r4, [r6] + adds r4, r4, r5 + adds r0, r7, #0 + mov r1, r8 + bl sub_081B0DC8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B23E4 + ldr r0, [r6] + adds r0, r5, r0 + ldrb r0, [r0, #9] + mov r1, r8 + bl sub_081B580C + ldr r0, [r6] + adds r5, r5, r0 + ldrb r0, [r5, #0xb] + mov r1, r8 + bl sub_081B5C38 + b _081B0DB8 + .align 2, 0 +_081B0D00: .4byte gUnknown_2024190 +_081B0D04: .4byte gUnknown_203CBA8 +_081B0D08: + mov r0, r8 + cmp r0, #0 + bne _081B0D22 + movs r0, #2 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r1, #0x17 + movs r2, #0x10 + movs r3, #7 + bl sub_081998C8 + b _081B0D34 +_081B0D22: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + movs r1, #0x17 + movs r2, #0x10 + movs r3, #7 + bl sub_081998C8 +_081B0D34: + ldr r0, _081B0D40 + ldr r0, [r0] + ldrh r0, [r0, #8] + lsls r0, r0, #0x15 + b _081B0DAA + .align 2, 0 +_081B0D40: .4byte gUnknown_203CB90 +_081B0D44: + ldr r0, _081B0D64 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _081B0D76 + mov r0, r8 + cmp r0, #0 + bne _081B0D68 + movs r0, #2 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r1, #0x17 + movs r2, #0x11 + b _081B0D88 + .align 2, 0 +_081B0D64: .4byte gUnknown_203CB90 +_081B0D68: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + movs r1, #0x17 + movs r2, #0x11 + b _081B0D88 +_081B0D76: + mov r0, r8 + cmp r0, #0 + bne _081B0D90 + movs r0, #2 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r1, #0x17 + movs r2, #0x12 +_081B0D88: + movs r3, #7 + bl sub_081998C8 + b _081B0DA2 +_081B0D90: + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + movs r1, #0x17 + movs r2, #0x12 + movs r3, #7 + bl sub_081998C8 +_081B0DA2: + ldr r0, _081B0DC4 + ldr r0, [r0] + ldr r0, [r0, #8] + lsls r0, r0, #0xe +_081B0DAA: + lsrs r0, r0, #0x19 + mov r1, r8 + bl sub_081B5C38 + movs r0, #1 + bl sub_08199654 +_081B0DB8: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B0DC4: .4byte gUnknown_203CB90 + thumb_func_end sub_081B0C9C + + thumb_func_start sub_081B0DC8 +sub_081B0DC8: @ 0x081B0DC8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r4, #0 + cmp r1, #1 + bne _081B0DDA + movs r4, #1 +_081B0DDA: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B0E54 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081B0DF0 + movs r0, #2 + orrs r4, r0 +_081B0DF0: + adds r0, r5, #0 + bl sub_081B0E5C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B0E06 + movs r0, #8 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_081B0E06: + ldr r0, _081B0E58 + ldrb r1, [r0, #0xb] + adds r2, r0, #0 + cmp r1, #9 + bne _081B0E18 + movs r0, #0x10 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_081B0E18: + cmp r1, #8 + bne _081B0E34 + movs r0, #9 + ldrsb r0, [r2, r0] + cmp r5, r0 + beq _081B0E2C + movs r0, #0xa + ldrsb r0, [r2, r0] + cmp r5, r0 + bne _081B0E34 +_081B0E2C: + movs r0, #4 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_081B0E34: + ldrb r0, [r2, #0xb] + cmp r0, #0xa + bne _081B0E4A + movs r0, #9 + ldrsb r0, [r2, r0] + cmp r5, r0 + bne _081B0E4A + movs r0, #0x20 + orrs r4, r0 + lsls r0, r4, #0x18 + lsrs r4, r0, #0x18 +_081B0E4A: + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081B0E54: .4byte gUnknown_2024190 +_081B0E58: .4byte gUnknown_203CB94 + thumb_func_end sub_081B0DC8 + + thumb_func_start sub_081B0E5C +sub_081B0E5C: @ 0x081B0E5C + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081B0E80 + ldrb r1, [r0, #8] + movs r0, #0x30 + ands r0, r1 + cmp r0, #0x20 + bne _081B0E84 + cmp r2, #1 + beq _081B0E7A + cmp r2, #4 + beq _081B0E7A + cmp r2, #5 + bne _081B0E84 +_081B0E7A: + movs r0, #1 + b _081B0EC8 + .align 2, 0 +_081B0E80: .4byte gUnknown_203CB94 +_081B0E84: + cmp r2, #2 + bhi _081B0EC6 + ldr r0, _081B0ECC + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + beq _081B0EC6 + ldr r0, _081B0ED0 + ldr r1, _081B0ED4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B0EC6 + adds r0, r2, #0 + bl sub_081B8BD8 + ldr r1, _081B0ED8 + ldr r1, [r1] + movs r2, #0xa8 + lsls r2, r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + asrs r1, r0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _081B0EC8 +_081B0EC6: + movs r0, #0 +_081B0EC8: + pop {r1} + bx r1 + .align 2, 0 +_081B0ECC: .4byte gUnknown_2022C90 +_081B0ED0: .4byte gUnknown_3002360 +_081B0ED4: .4byte 0x00000439 +_081B0ED8: .4byte gUnknown_2024140 + thumb_func_end sub_081B0E5C + + thumb_func_start sub_081B0EDC +sub_081B0EDC: @ 0x081B0EDC + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r1, _081B0F18 + movs r6, #7 + str r6, [sp] + movs r5, #2 + str r5, [sp, #4] + movs r4, #0x11 + str r4, [sp, #8] + movs r0, #1 + movs r2, #0x17 + movs r3, #0x10 + bl sub_080023B4 + ldr r1, _081B0F1C + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r2, #0x17 + movs r3, #0x12 + bl sub_080023B4 + movs r0, #1 + bl sub_08199654 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B0F18: .4byte gUnknown_85E107C +_081B0F1C: .4byte gUnknown_85E1098 + thumb_func_end sub_081B0EDC + + thumb_func_start sub_081B0F20 +sub_081B0F20: @ 0x081B0F20 + push {lr} + ldr r0, _081B0F44 + ldr r0, [r0] + movs r1, #0x49 + ands r0, r1 + cmp r0, #0x49 + bne _081B0F50 + ldr r0, _081B0F48 + ldr r1, _081B0F4C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B0F50 + movs r0, #1 + b _081B0F52 + .align 2, 0 +_081B0F44: .4byte gUnknown_2022C90 +_081B0F48: .4byte gUnknown_3002360 +_081B0F4C: .4byte 0x00000439 +_081B0F50: + movs r0, #0 +_081B0F52: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B0F20 + + thumb_func_start sub_081B0F58 +sub_081B0F58: @ 0x081B0F58 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + movs r0, #0x64 + bl sub_08000BC8 + 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_08000BF0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B0F58 + + thumb_func_start sub_081B0F90 +sub_081B0F90: @ 0x081B0F90 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081B0FC0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B0FC4 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B0FC0: .4byte gUnknown_3005B60 +_081B0FC4: .4byte sub_081B0FC8 + thumb_func_end sub_081B0F90 + + thumb_func_start sub_081B0FC8 +sub_081B0FC8: @ 0x081B0FC8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B0FFC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B101C + ldr r4, _081B1000 + ldrb r1, [r4, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _081B0FEA + bl sub_081B8D20 +_081B0FEA: + ldr r0, _081B1004 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _081B1008 + bl sub_08000540 + b _081B100E + .align 2, 0 +_081B0FFC: .4byte gUnknown_2037C74 +_081B1000: .4byte gUnknown_203CB94 +_081B1004: .4byte gUnknown_203CB90 +_081B1008: + ldr r0, [r4] + bl sub_08000540 +_081B100E: + bl sub_0800668C + bl sub_081B03CC + adds r0, r5, #0 + bl sub_080A8964 +_081B101C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B0FC8 + + thumb_func_start sub_081B1024 +sub_081B1024: @ 0x081B1024 + ldr r0, _081B102C + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_081B102C: .4byte gUnknown_203CB94 + thumb_func_end sub_081B1024 + + thumb_func_start sub_081B1030 +sub_081B1030: @ 0x081B1030 + ldr r0, _081B103C + ldrb r0, [r0, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + bx lr + .align 2, 0 +_081B103C: .4byte gUnknown_203CB94 + thumb_func_end sub_081B1030 + + thumb_func_start sub_081B1040 +sub_081B1040: @ 0x081B1040 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + ldr r0, _081B107C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B10B0 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B10B0 + bl sub_081B10BC + adds r4, r0, #0 + bl sub_081B1430 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #2 + beq _081B1090 + cmp r0, #2 + bgt _081B1080 + cmp r0, #1 + beq _081B1086 + b _081B10B0 + .align 2, 0 +_081B107C: .4byte gUnknown_2037C74 +_081B1080: + cmp r0, #8 + beq _081B109A + b _081B10B0 +_081B1086: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B10DC + b _081B10B0 +_081B1090: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081B12A0 + b _081B10B0 +_081B109A: + ldr r0, _081B10B8 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B10B0 + movs r0, #5 + bl sub_080A306C + bl sub_081B4C28 +_081B10B0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B10B8: .4byte gUnknown_203CB90 + thumb_func_end sub_081B1040 + + thumb_func_start sub_081B10BC +sub_081B10BC: @ 0x081B10BC + push {lr} + ldr r0, _081B10D0 + ldrb r1, [r0, #0xb] + cmp r1, #8 + beq _081B10CA + cmp r1, #0xa + bne _081B10D4 +_081B10CA: + adds r0, #0xa + b _081B10D6 + .align 2, 0 +_081B10D0: .4byte gUnknown_203CB94 +_081B10D4: + adds r0, #9 +_081B10D6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B10BC + + thumb_func_start sub_081B10DC +sub_081B10DC: @ 0x081B10DC + push {r4, r5, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #6 + bne _081B10FC + ldr r0, _081B10F8 + ldr r1, [r0, #4] + adds r0, r5, #0 + bl _call_via_r1 + b _081B126E + .align 2, 0 +_081B10F8: .4byte gUnknown_203CB94 +_081B10FC: + ldr r0, _081B1114 + ldrb r0, [r0, #0xb] + subs r0, #3 + cmp r0, #0xa + bls _081B1108 + b _081B1262 +_081B1108: + lsls r0, r0, #2 + ldr r1, _081B1118 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B1114: .4byte gUnknown_203CB94 +_081B1118: .4byte _081B111C +_081B111C: @ jump table + .4byte _081B116C @ case 0 + .4byte _081B1262 @ case 1 + .4byte _081B1208 @ case 2 + .4byte _081B1208 @ case 3 + .4byte _081B11E0 @ case 4 + .4byte _081B1230 @ case 5 + .4byte _081B1262 @ case 6 + .4byte _081B1148 @ case 7 + .4byte _081B123E @ case 8 + .4byte _081B11B8 @ case 9 + .4byte _081B124C @ case 10 +_081B1148: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B1156 + b _081B126E +_081B1156: + ldr r0, _081B1168 + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081614AC + b _081B126E + .align 2, 0 +_081B1168: .4byte gUnknown_203CB90 +_081B116C: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B117A + b _081B126E +_081B117A: + ldr r0, _081B11A4 + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + ldr r2, _081B11A8 + cmp r0, #1 + bne _081B118E + ldr r1, [r2] + ldr r0, _081B11AC + str r0, [r1, #4] +_081B118E: + ldr r0, [r2] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B11B0 + ldr r1, _081B11B4 + ldr r2, [r0] + adds r0, r5, #0 + bl _call_via_r2 + b _081B126E + .align 2, 0 +_081B11A4: .4byte gUnknown_203CB94 +_081B11A8: .4byte gUnknown_203CB90 +_081B11AC: .4byte sub_081B8DE0 +_081B11B0: .4byte gUnknown_3006068 +_081B11B4: .4byte sub_081B6434 +_081B11B8: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B126E + movs r0, #5 + bl sub_080A306C + ldr r0, _081B11DC + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081B7AF0 + b _081B126E + .align 2, 0 +_081B11DC: .4byte gUnknown_203CB90 +_081B11E0: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B126E + movs r0, #5 + bl sub_080A306C + ldr r0, _081B1204 + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081B8114 + b _081B126E + .align 2, 0 +_081B1204: .4byte gUnknown_203CB90 +_081B1208: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B126E + movs r0, #5 + bl sub_080A306C + ldr r0, _081B122C + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081B7C4C + b _081B126E + .align 2, 0 +_081B122C: .4byte gUnknown_203CB90 +_081B1230: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081B35D8 + b _081B126E +_081B123E: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081B0F90 + b _081B126E +_081B124C: + adds r0, r4, #0 + bl sub_081B1274 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B126E + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_081B1E7C + b _081B126E +_081B1262: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081B339C +_081B126E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081B10DC + + thumb_func_start sub_081B1274 +sub_081B1274: @ 0x081B1274 + push {lr} + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B1290 + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #1 + beq _081B1294 + movs r0, #1 + b _081B129C + .align 2, 0 +_081B1290: .4byte gUnknown_2024190 +_081B1294: + movs r0, #0x20 + bl sub_080A306C + movs r0, #0 +_081B129C: + pop {r1} + bx r1 + thumb_func_end sub_081B1274 + + thumb_func_start sub_081B12A0 +sub_081B12A0: @ 0x081B12A0 + push {r4, r5, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B12BC + ldrb r0, [r0, #0xb] + cmp r0, #8 + beq _081B12D2 + cmp r0, #8 + bgt _081B12C0 + cmp r0, #1 + beq _081B12CA + b _081B12EE + .align 2, 0 +_081B12BC: .4byte gUnknown_203CB94 +_081B12C0: + cmp r0, #0xa + beq _081B12D2 + cmp r0, #0xd + beq _081B12E0 + b _081B12EE +_081B12CA: + movs r0, #0x20 + bl sub_080A306C + b _081B1322 +_081B12D2: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B3D1C + b _081B1322 +_081B12E0: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B1EE0 + b _081B1322 +_081B12EE: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B1330 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B1322 + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B1312 + ldr r1, _081B1328 + movs r0, #7 + strh r0, [r1] +_081B1312: + ldr r0, _081B132C + movs r1, #0 + strb r1, [r0] + movs r0, #7 + strb r0, [r5] + adds r0, r4, #0 + bl sub_081B0F90 +_081B1322: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1328: .4byte gUnknown_2037280 +_081B132C: .4byte gUnknown_203CBB4 + thumb_func_end sub_081B12A0 + + thumb_func_start sub_081B1330 +sub_081B1330: @ 0x081B1330 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + ldr r0, _081B1348 + ldrb r0, [r0, #8] + movs r1, #0xf + ands r1, r0 + cmp r1, #2 + bne _081B1350 + ldr r5, _081B134C + b _081B135A + .align 2, 0 +_081B1348: .4byte gUnknown_203CB94 +_081B134C: .4byte gUnknown_85CA210 +_081B1350: + cmp r1, #4 + bne _081B135A + bl sub_081B855C + adds r5, r0, #0 +_081B135A: + cmp r5, #0 + beq _081B139C + ldr r0, _081B138C + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + ldr r4, _081B1390 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B1394 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B1398 + str r1, [r0] + movs r0, #1 + b _081B139E + .align 2, 0 +_081B138C: .4byte gUnknown_203CB90 +_081B1390: .4byte gUnknown_2021C7C +_081B1394: .4byte gUnknown_3005B60 +_081B1398: .4byte sub_081B13A4 +_081B139C: + movs r0, #0 +_081B139E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081B1330 + + thumb_func_start sub_081B13A4 +sub_081B13A4: @ 0x081B13A4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B13C8 + bl sub_081B2FDC + ldr r0, _081B13D0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B13D4 + str r0, [r1] +_081B13C8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B13D0: .4byte gUnknown_3005B60 +_081B13D4: .4byte sub_081B13D8 + thumb_func_end sub_081B13A4 + + thumb_func_start sub_081B13D8 +sub_081B13D8: @ 0x081B13D8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B13FE + cmp r1, #0 + bgt _081B13F8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B141C + b _081B1428 +_081B13F8: + cmp r1, #1 + beq _081B1422 + b _081B1428 +_081B13FE: + ldr r0, _081B1414 + strb r1, [r0] + ldr r1, _081B1418 + movs r0, #7 + strb r0, [r1, #9] + bl sub_081B81F8 + adds r0, r4, #0 + bl sub_081B0F90 + b _081B1428 + .align 2, 0 +_081B1414: .4byte gUnknown_203CBB4 +_081B1418: .4byte gUnknown_203CB94 +_081B141C: + movs r0, #5 + bl sub_080A306C +_081B1422: + adds r0, r4, #0 + bl sub_081B18EC +_081B1428: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B13D8 + + thumb_func_start sub_081B1430 +sub_081B1430: @ 0x081B1430 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081B1448 + ldrh r1, [r0, #0x30] + adds r3, r0, #0 + cmp r1, #0x20 + beq _081B145E + cmp r1, #0x20 + bgt _081B144C + cmp r1, #0x10 + beq _081B1462 + b _081B1466 + .align 2, 0 +_081B1448: .4byte gUnknown_3002360 +_081B144C: + cmp r1, #0x40 + beq _081B1456 + cmp r1, #0x80 + beq _081B145A + b _081B1466 +_081B1456: + movs r1, #0xff + b _081B1482 +_081B145A: + movs r1, #1 + b _081B1482 +_081B145E: + movs r1, #0xfe + b _081B1482 +_081B1462: + movs r1, #2 + b _081B1482 +_081B1466: + bl sub_08122118 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B147A + cmp r0, #2 + beq _081B147E + movs r1, #0 + b _081B1480 +_081B147A: + movs r1, #0xff + b _081B1480 +_081B147E: + movs r1, #1 +_081B1480: + ldr r3, _081B1490 +_081B1482: + ldrh r2, [r3, #0x2e] + movs r0, #8 + ands r0, r2 + cmp r0, #0 + beq _081B1494 + movs r0, #8 + b _081B14C0 + .align 2, 0 +_081B1490: .4byte gUnknown_3002360 +_081B1494: + lsls r0, r1, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B14A6 + adds r0, r4, #0 + bl sub_081B14C8 + movs r0, #0 + b _081B14C0 +_081B14A6: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _081B14BA + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #7 + bne _081B14BA + movs r0, #2 + b _081B14C0 +_081B14BA: + ldrh r1, [r3, #0x2e] + movs r0, #3 + ands r0, r1 +_081B14C0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B1430 + + thumb_func_start sub_081B14C8 +sub_081B14C8: @ 0x081B14C8 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r4, [r5] + ldr r0, _081B14EC + ldrb r0, [r0, #8] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1e + cmp r0, #0 + bne _081B14F0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_081B1524 + b _081B14FA + .align 2, 0 +_081B14EC: .4byte gUnknown_203CB94 +_081B14F0: + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_081B162C +_081B14FA: + movs r1, #0 + ldrsb r1, [r5, r1] + lsls r4, r4, #0x18 + asrs r0, r4, #0x18 + cmp r1, r0 + beq _081B151C + movs r0, #5 + bl sub_080A306C + lsrs r0, r4, #0x18 + movs r1, #0 + bl sub_081B0C9C + ldrb r0, [r5] + movs r1, #1 + bl sub_081B0C9C +_081B151C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B14C8 + + thumb_func_start sub_081B1524 +sub_081B1524: @ 0x081B1524 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B154A + cmp r1, r0 + bgt _081B1540 + subs r0, #1 + cmp r1, r0 + beq _081B15F4 + b _081B1622 +_081B1540: + cmp r1, #1 + beq _081B1590 + cmp r1, #2 + beq _081B15C8 + b _081B1622 +_081B154A: + ldrb r0, [r4] + movs r1, #0 + ldrsb r1, [r4, r1] + cmp r1, #0 + bne _081B1558 + movs r0, #7 + b _081B1620 +_081B1558: + cmp r1, #6 + bne _081B1568 + ldr r0, _081B1564 + ldrb r0, [r0] + subs r0, #1 + b _081B1620 + .align 2, 0 +_081B1564: .4byte gUnknown_202418D +_081B1568: + cmp r1, #7 + bne _081B158C + ldr r0, _081B157C + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B1580 + movs r0, #6 + b _081B1620 + .align 2, 0 +_081B157C: .4byte gUnknown_203CB90 +_081B1580: + ldr r0, _081B1588 + ldrb r0, [r0] + subs r0, #1 + b _081B1620 + .align 2, 0 +_081B1588: .4byte gUnknown_202418D +_081B158C: + subs r0, #1 + b _081B1620 +_081B1590: + ldrb r2, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #7 + beq _081B161E + movs r1, #0 + ldrsb r1, [r4, r1] + ldr r0, _081B15B8 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + bne _081B15C4 + ldr r0, _081B15BC + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B15C0 + movs r0, #6 + b _081B1620 + .align 2, 0 +_081B15B8: .4byte gUnknown_202418D +_081B15BC: .4byte gUnknown_203CB90 +_081B15C0: + movs r0, #7 + b _081B1620 +_081B15C4: + adds r0, r2, #1 + b _081B1620 +_081B15C8: + ldr r0, _081B15EC + ldrb r0, [r0] + cmp r0, #1 + beq _081B1622 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _081B1622 + ldr r0, _081B15F0 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1d + cmp r0, #0 + bne _081B1620 + movs r0, #1 + b _081B1620 + .align 2, 0 +_081B15EC: .4byte gUnknown_202418D +_081B15F0: .4byte gUnknown_203CB90 +_081B15F4: + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _081B1622 + cmp r0, #6 + beq _081B1622 + cmp r0, #7 + beq _081B1622 + ldr r0, _081B1628 + ldr r3, [r0] + movs r1, #0 + ldrsb r1, [r4, r1] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3, #8] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #8] +_081B161E: + movs r0, #0 +_081B1620: + strb r0, [r4] +_081B1622: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B1628: .4byte gUnknown_203CB90 + thumb_func_end sub_081B1524 + + thumb_func_start sub_081B162C +sub_081B162C: @ 0x081B162C + push {r4, r5, r6, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + asrs r5, r1, #0x18 + movs r6, #1 + rsbs r6, r6, #0 + cmp r5, r6 + beq _081B1658 + cmp r5, r6 + bgt _081B164E + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + bne _081B164C + b _081B176C +_081B164C: + b _081B17C4 +_081B164E: + cmp r5, #1 + beq _081B16B4 + cmp r5, #2 + beq _081B16F4 + b _081B17C4 +_081B1658: + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _081B1666 + movs r0, #7 + b _081B17C2 +_081B1666: + cmp r0, #6 + bne _081B1678 + ldr r0, _081B1674 + ldrb r0, [r0] + subs r0, #1 + b _081B17C2 + .align 2, 0 +_081B1674: .4byte gUnknown_202418D +_081B1678: + cmp r0, #7 + bne _081B1694 + ldr r0, _081B168C + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B1690 + movs r0, #6 + b _081B17C2 + .align 2, 0 +_081B168C: .4byte gUnknown_203CB90 +_081B1690: + subs r0, r1, #1 + strb r0, [r4] +_081B1694: + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r1, r2, #0x18 + asrs r1, r1, #0x18 + bl sub_081B17D0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _081B16B0 + b _081B17C4 +_081B16B0: + strb r2, [r4] + b _081B17C4 +_081B16B4: + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #6 + bne _081B16C0 + movs r0, #7 + b _081B17C2 +_081B16C0: + cmp r0, #7 + bne _081B16C8 + movs r0, #0 + b _081B17C2 +_081B16C8: + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #1 + bl sub_081B17D0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r6 + bne _081B16B0 + ldr r0, _081B16EC + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B16F0 + movs r0, #6 + b _081B17C2 + .align 2, 0 +_081B16EC: .4byte gUnknown_203CB90 +_081B16F0: + movs r0, #7 + b _081B17C2 +_081B16F4: + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _081B172C + ldr r0, _081B171C + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1c + lsrs r6, r0, #0x1d + cmp r6, #3 + bne _081B1724 + ldr r0, _081B1720 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B17C4 + strb r6, [r4] + b _081B17C4 + .align 2, 0 +_081B171C: .4byte gUnknown_203CB90 +_081B1720: .4byte gUnknown_20242BC +_081B1724: + ldr r0, _081B1728 + b _081B1740 + .align 2, 0 +_081B1728: .4byte gUnknown_2024258 +_081B172C: + cmp r0, #1 + bne _081B17C4 + ldr r0, _081B1750 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1c + lsrs r5, r0, #0x1d + cmp r5, #5 + bne _081B1758 + ldr r0, _081B1754 +_081B1740: + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B17C4 + strb r5, [r4] + b _081B17C4 + .align 2, 0 +_081B1750: .4byte gUnknown_203CB90 +_081B1754: .4byte gUnknown_2024384 +_081B1758: + ldr r0, _081B1768 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B17C4 + movs r0, #4 + b _081B17C2 + .align 2, 0 +_081B1768: .4byte gUnknown_2024320 +_081B176C: + ldrb r1, [r4] + subs r0, r1, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081B179C + ldr r0, _081B1798 + ldr r3, [r0] + movs r1, #0 + ldrsb r1, [r4, r1] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3, #8] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #8] + movs r0, #0 + b _081B17C2 + .align 2, 0 +_081B1798: .4byte gUnknown_203CB90 +_081B179C: + subs r0, r1, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081B17C4 + ldr r0, _081B17CC + ldr r3, [r0] + movs r1, #0 + ldrsb r1, [r4, r1] + movs r0, #7 + ands r1, r0 + lsls r1, r1, #1 + ldrb r2, [r3, #8] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #8] + movs r0, #1 +_081B17C2: + strb r0, [r4] +_081B17C4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B17CC: .4byte gUnknown_203CB90 + thumb_func_end sub_081B162C + + thumb_func_start sub_081B17D0 +sub_081B17D0: @ 0x081B17D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + asrs r6, r1, #0x18 +_081B17DA: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r6 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r5, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #5 + bhi _081B1808 + asrs r4, r1, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B1804 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B17DA + adds r0, r4, #0 + b _081B180C + .align 2, 0 +_081B1804: .4byte gUnknown_2024190 +_081B1808: + movs r0, #1 + rsbs r0, r0, #0 +_081B180C: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B17D0 + + thumb_func_start sub_081B1814 +sub_081B1814: @ 0x081B1814 + push {r4, lr} + adds r4, r1, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_0800885C + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081B1814 + + thumb_func_start sub_081B182C +sub_081B182C: @ 0x081B182C + push {r4, lr} + lsls r4, r1, #0x18 + lsrs r4, r4, #0x18 + bl sub_081B2F90 + ldr r0, _081B1854 + movs r1, #1 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081B1858 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081B1854: .4byte sub_081B185C +_081B1858: .4byte gUnknown_3005B60 + thumb_func_end sub_081B182C + + thumb_func_start sub_081B185C +sub_081B185C: @ 0x081B185C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r0, #6 + bl sub_08121F10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + beq _081B1898 + ldr r0, _081B18A0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + movs r2, #8 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _081B1892 + movs r0, #6 + movs r1, #0 + bl sub_08198134 + movs r0, #6 + bl sub_08003774 +_081B1892: + adds r0, r5, #0 + bl sub_080A8964 +_081B1898: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B18A0: .4byte gUnknown_3005B60 + thumb_func_end sub_081B185C + + thumb_func_start sub_081B18A4 +sub_081B18A4: @ 0x081B18A4 + push {lr} + ldr r0, _081B18B4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081B18B4: .4byte sub_081B185C + thumb_func_end sub_081B18A4 + + thumb_func_start sub_081B18B8 +sub_081B18B8: @ 0x081B18B8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B18DE + movs r0, #0 + bl sub_081B2CD8 + ldr r0, _081B18E4 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B18E8 + str r0, [r1] +_081B18DE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B18E4: .4byte gUnknown_3005B60 +_081B18E8: .4byte sub_081B1040 + thumb_func_end sub_081B18B8 + + thumb_func_start sub_081B18EC +sub_081B18EC: @ 0x081B18EC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B1944 + movs r0, #6 + movs r1, #0 + bl sub_08198134 + movs r0, #6 + bl sub_08003774 + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B1930 + ldr r0, _081B1928 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B192C + b _081B1942 + .align 2, 0 +_081B1928: .4byte gUnknown_3005B60 +_081B192C: .4byte sub_081B18B8 +_081B1930: + movs r0, #0 + bl sub_081B2CD8 + ldr r0, _081B194C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B1950 +_081B1942: + str r0, [r1] +_081B1944: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B194C: .4byte gUnknown_3005B60 +_081B1950: .4byte sub_081B1040 + thumb_func_end sub_081B18EC + + thumb_func_start sub_081B1954 +sub_081B1954: @ 0x081B1954 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _081B1990 + bl sub_081B1814 + ldr r1, _081B1994 + adds r0, r4, #0 + bl sub_080D5EC8 + ldr r4, _081B1998 + ldr r1, _081B199C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1990: .4byte gUnknown_2021C40 +_081B1994: .4byte gUnknown_2021C54 +_081B1998: .4byte gUnknown_2021C7C +_081B199C: .4byte gUnknown_85C9C76 + thumb_func_end sub_081B1954 + + thumb_func_start sub_081B19A0 +sub_081B19A0: @ 0x081B19A0 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _081B19DC + bl sub_081B1814 + ldr r1, _081B19E0 + adds r0, r4, #0 + bl sub_080D5EC8 + ldr r4, _081B19E4 + ldr r1, _081B19E8 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B19DC: .4byte gUnknown_2021C40 +_081B19E0: .4byte gUnknown_2021C54 +_081B19E4: .4byte gUnknown_2021C7C +_081B19E8: .4byte gUnknown_85C9CC6 + thumb_func_end sub_081B19A0 + + thumb_func_start sub_081B19EC +sub_081B19EC: @ 0x081B19EC + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _081B1A28 + bl sub_081B1814 + ldr r1, _081B1A2C + adds r0, r4, #0 + bl sub_080D5EC8 + ldr r4, _081B1A30 + ldr r1, _081B1A34 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1A28: .4byte gUnknown_2021C40 +_081B1A2C: .4byte gUnknown_2021C54 +_081B1A30: .4byte gUnknown_2021C7C +_081B1A34: .4byte gUnknown_85C9C86 + thumb_func_end sub_081B19EC + + thumb_func_start sub_081B1A38 +sub_081B1A38: @ 0x081B1A38 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r1, _081B1A78 + bl sub_080D5EC8 + ldr r1, _081B1A7C + adds r0, r4, #0 + bl sub_080D5EC8 + ldr r4, _081B1A80 + ldr r1, _081B1A84 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1A78: .4byte gUnknown_2021C40 +_081B1A7C: .4byte gUnknown_2021C54 +_081B1A80: .4byte gUnknown_2021C7C +_081B1A84: .4byte gUnknown_85C9CEF + thumb_func_end sub_081B1A38 + + thumb_func_start sub_081B1A88 +sub_081B1A88: @ 0x081B1A88 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + lsls r5, r1, #0x10 + lsrs r4, r5, #0x10 + adds r7, r4, #0 + adds r0, r4, #0 + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B1AB2 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080D3CC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081B1AC6 +_081B1AB2: + mov r0, sp + strb r7, [r0] + mov r1, sp + lsrs r0, r5, #0x18 + strb r0, [r1, #1] + adds r0, r6, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 +_081B1AC6: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B1A88 + + thumb_func_start sub_081B1AD0 +sub_081B1AD0: @ 0x081B1AD0 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + strh r0, [r1] + cmp r0, #0 + bne _081B1AEC + movs r0, #0 + b _081B1B0E +_081B1AEC: + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B1B0C + movs r1, #0 + mov r0, sp + strh r1, [r0] + adds r0, r4, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + movs r0, #2 + b _081B1B0E +_081B1B0C: + movs r0, #1 +_081B1B0E: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B1AD0 + + thumb_func_start sub_081B1B18 +sub_081B1B18: @ 0x081B1B18 + push {lr} + ldr r0, _081B1B28 + ldr r1, _081B1B2C + bl sub_08008BCC + pop {r0} + bx r0 + .align 2, 0 +_081B1B28: .4byte gUnknown_2021C7C +_081B1B2C: .4byte gUnknown_85C9D47 + thumb_func_end sub_081B1B18 + + thumb_func_start sub_081B1B30 +sub_081B1B30: @ 0x081B1B30 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + ldr r1, _081B1BD8 + adds r7, r0, r1 + ldrh r0, [r7, #4] + ldrh r1, [r7] + adds r0, r0, r1 + strh r0, [r7] + ldrh r0, [r7, #6] + subs r0, #1 + strh r0, [r7, #6] + movs r2, #8 + ldrsh r0, [r7, r2] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _081B1BDC + adds r0, r0, r4 + movs r1, #0x39 + adds r2, r7, #0 + bl sub_0806A774 + movs r3, #8 + ldrsh r2, [r7, r3] + adds r0, r2, #0 + muls r0, r5, r0 + adds r0, r0, r4 + ldr r6, _081B1BE0 + lsls r2, r2, #4 + ldr r1, [r6] + adds r1, r1, r2 + movs r2, #1 + bl sub_081B2970 + movs r0, #8 + ldrsh r2, [r7, r0] + adds r0, r2, #0 + muls r0, r5, r0 + adds r0, r0, r4 + lsls r2, r2, #4 + ldr r1, [r6] + adds r1, r1, r2 + bl sub_081B2ABC + movs r1, #6 + ldrsh r0, [r7, r1] + cmp r0, #0 + beq _081B1BAC + movs r2, #0 + ldrsh r1, [r7, r2] + cmp r1, #0 + beq _081B1BAC + movs r3, #2 + ldrsh r0, [r7, r3] + cmp r1, r0 + bne _081B1BCE +_081B1BAC: + movs r0, #0 + ldrsh r1, [r7, r0] + movs r2, #0xa + ldrsh r0, [r7, r2] + cmp r1, r0 + ble _081B1BC8 + ldr r0, _081B1BE4 + movs r3, #0xa + ldrsh r2, [r7, r3] + subs r1, r1, r2 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 +_081B1BC8: + mov r0, r8 + bl sub_080A8A78 +_081B1BCE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B1BD8: .4byte gUnknown_3005B68 +_081B1BDC: .4byte gUnknown_2024190 +_081B1BE0: .4byte gUnknown_203CBA8 +_081B1BE4: .4byte gUnknown_2021C54 + thumb_func_end sub_081B1B30 + + thumb_func_start sub_081B1BE8 +sub_081B1BE8: @ 0x081B1BE8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + mov sb, r1 + adds r5, r2, #0 + mov sl, r3 + ldr r7, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sl + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + movs r0, #0x64 + mov r6, sb + muls r6, r0, r6 + ldr r0, _081B1C6C + adds r6, r6, r0 + mov r0, r8 + lsls r4, r0, #2 + add r4, r8 + lsls r4, r4, #3 + ldr r0, _081B1C70 + adds r4, r4, r0 + adds r0, r6, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r4] + adds r0, r6, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r4, #2] + lsls r5, r5, #0x18 + asrs r5, r5, #0x18 + strh r5, [r4, #4] + mov r0, sl + strh r0, [r4, #6] + mov r0, sb + strh r0, [r4, #8] + ldrh r0, [r4] + strh r0, [r4, #0xa] + ldr r1, _081B1C74 + mov r0, r8 + adds r2, r7, #0 + bl sub_080A8A44 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B1C6C: .4byte gUnknown_2024190 +_081B1C70: .4byte gUnknown_3005B68 +_081B1C74: .4byte sub_081B1B30 + thumb_func_end sub_081B1BE8 + + thumb_func_start sub_081B1C78 +sub_081B1C78: @ 0x081B1C78 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081B1C9C + adds r3, r0, r1 + cmp r5, #5 + bhi _081B1CDA + lsls r0, r5, #2 + ldr r1, _081B1CA0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B1C9C: .4byte gUnknown_3005B68 +_081B1CA0: .4byte _081B1CA4 +_081B1CA4: @ jump table + .4byte _081B1CBC @ case 0 + .4byte _081B1CC2 @ case 1 + .4byte _081B1CC6 @ case 2 + .4byte _081B1CCA @ case 3 + .4byte _081B1CCE @ case 4 + .4byte _081B1CD2 @ case 5 +_081B1CBC: + strh r2, [r3] + strh r2, [r3, #0xa] + b _081B1CDA +_081B1CC2: + strh r2, [r3, #2] + b _081B1CDA +_081B1CC6: + strh r2, [r3, #4] + b _081B1CDA +_081B1CCA: + strh r2, [r3, #6] + b _081B1CDA +_081B1CCE: + strh r2, [r3, #8] + b _081B1CDA +_081B1CD2: + ldr r1, _081B1CE0 + adds r0, r4, #0 + bl sub_080A8A44 +_081B1CDA: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1CE0: .4byte sub_081B1B30 + thumb_func_end sub_081B1C78 + + thumb_func_start sub_081B1CE4 +sub_081B1CE4: @ 0x081B1CE4 + push {lr} + adds r1, r0, #0 + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + beq _081B1CF4 + movs r0, #1 + b _081B1D26 +_081B1CF4: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081B1D00 + movs r0, #2 + b _081B1D26 +_081B1D00: + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _081B1D0C + movs r0, #3 + b _081B1D26 +_081B1D0C: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081B1D18 + movs r0, #4 + b _081B1D26 +_081B1D18: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081B1D24 + movs r0, #0 + b _081B1D26 +_081B1D24: + movs r0, #5 +_081B1D26: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B1CE4 + + thumb_func_start sub_081B1D2C +sub_081B1D2C: @ 0x081B1D2C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081B1D3E + movs r0, #7 + b _081B1D66 +_081B1D3E: + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + bl sub_081B1CE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081B1D66 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806D810 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B1D64 + movs r0, #0 + b _081B1D66 +_081B1D64: + movs r0, #6 +_081B1D66: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081B1D2C + + thumb_func_start sub_081B1D6C +sub_081B1D6C: @ 0x081B1D6C + push {r4, r5, lr} + ldr r2, _081B1DBC + ldrb r1, [r2, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xb + bne _081B1DF6 + adds r5, r2, #0 + adds r5, #0xe + movs r0, #0 + strh r0, [r2, #0xe] + ldr r0, _081B1DC0 + ldrh r0, [r0] + cmp r0, #0 + bne _081B1DCC + movs r4, #0 + ldr r0, _081B1DC4 + ldrb r0, [r0] + cmp r4, r0 + bhs _081B1DF6 +_081B1D94: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B1DC8 + adds r0, r0, r1 + bl sub_081B1E04 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r0, r4 + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r5] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B1DC4 + ldrb r0, [r0] + cmp r4, r0 + blo _081B1D94 + b _081B1DF6 + .align 2, 0 +_081B1DBC: .4byte gUnknown_203CB94 +_081B1DC0: .4byte gUnknown_2037282 +_081B1DC4: .4byte gUnknown_202418D +_081B1DC8: .4byte gUnknown_2024190 +_081B1DCC: + movs r4, #0 + b _081B1DEE +_081B1DD0: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B1DFC + adds r0, r0, r1 + bl sub_081B1E34 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r0, r4 + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r5] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081B1DEE: + ldr r0, _081B1E00 + ldrb r0, [r0] + cmp r4, r0 + blo _081B1DD0 +_081B1DF6: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1DFC: .4byte gUnknown_2024190 +_081B1E00: .4byte gUnknown_202418D + thumb_func_end sub_081B1D6C + + thumb_func_start sub_081B1E04 +sub_081B1E04: @ 0x081B1E04 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #1 + beq _081B1E2A + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0802C5FC + cmp r0, #0 + beq _081B1E2A + movs r0, #1 + b _081B1E2C +_081B1E2A: + movs r0, #0 +_081B1E2C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B1E04 + + thumb_func_start sub_081B1E34 +sub_081B1E34: @ 0x081B1E34 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #1 + beq _081B1E52 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0x55 + bne _081B1E52 + movs r0, #1 + b _081B1E54 +_081B1E52: + movs r0, #0 +_081B1E54: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B1E34 + + thumb_func_start sub_081B1E5C +sub_081B1E5C: @ 0x081B1E5C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B1E78 + movs r2, #0xe + ldrsh r1, [r1, r2] + asrs r1, r0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + bne _081B1E74 + movs r0, #0 +_081B1E74: + pop {r1} + bx r1 + .align 2, 0 +_081B1E78: .4byte gUnknown_203CB94 + thumb_func_end sub_081B1E5C + + thumb_func_start sub_081B1E7C +sub_081B1E7C: @ 0x081B1E7C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r0, r5, #0 + bl sub_081B1E5C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B1EAC + movs r0, #5 + bl sub_080A306C + ldr r0, _081B1EA8 + strh r5, [r0] + adds r0, r4, #0 + bl sub_081B0F90 + b _081B1ECE + .align 2, 0 +_081B1EA8: .4byte gUnknown_2037280 +_081B1EAC: + movs r0, #0x20 + bl sub_080A306C + ldr r0, _081B1ED4 + movs r1, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B1ED8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B1EDC + str r1, [r0] +_081B1ECE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B1ED4: .4byte gUnknown_85CA1FB +_081B1ED8: .4byte gUnknown_3005B60 +_081B1EDC: .4byte sub_081B18EC + thumb_func_end sub_081B1E7C + + thumb_func_start sub_081B1EE0 +sub_081B1EE0: @ 0x081B1EE0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081B1F0C + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B1F10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B1F14 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B1F0C: .4byte gUnknown_85CA210 +_081B1F10: .4byte gUnknown_3005B60 +_081B1F14: .4byte sub_081B1F18 + thumb_func_end sub_081B1EE0 + + thumb_func_start sub_081B1F18 +sub_081B1F18: @ 0x081B1F18 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B1F3C + bl sub_081B2FDC + ldr r0, _081B1F44 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B1F48 + str r0, [r1] +_081B1F3C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B1F44: .4byte gUnknown_3005B60 +_081B1F48: .4byte sub_081B1F4C + thumb_func_end sub_081B1F18 + + thumb_func_start sub_081B1F4C +sub_081B1F4C: @ 0x081B1F4C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B1F72 + cmp r1, #0 + bgt _081B1F6C + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B1F84 + b _081B1F98 +_081B1F6C: + cmp r1, #1 + beq _081B1F8A + b _081B1F98 +_081B1F72: + ldr r1, _081B1F80 + movs r0, #7 + strh r0, [r1] + adds r0, r4, #0 + bl sub_081B0F90 + b _081B1F98 + .align 2, 0 +_081B1F80: .4byte gUnknown_2037280 +_081B1F84: + movs r0, #5 + bl sub_080A306C +_081B1F8A: + ldr r0, _081B1FA0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B1FA4 + str r0, [r1] +_081B1F98: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B1FA0: .4byte gUnknown_3005B60 +_081B1FA4: .4byte sub_081B18EC + thumb_func_end sub_081B1F4C + + thumb_func_start sub_081B1FA8 +sub_081B1FA8: @ 0x081B1FA8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r7, r4, #0 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + mov r8, r6 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _081B1FCA + movs r0, #3 + b _081B2026 +_081B1FCA: + movs r0, #0x90 + lsls r0, r0, #1 + cmp r4, r0 + bls _081B1FEC + adds r1, r4, #0 + subs r1, #0x21 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_0806DAA0 + cmp r0, #0 + beq _081B2004 + adds r0, r7, #0 + bl sub_081B69B4 + b _081B200E +_081B1FEC: + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_081B2040 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B2008 +_081B2004: + movs r0, #1 + b _081B2026 +_081B2008: + mov r0, r8 + bl sub_081B2030 +_081B200E: + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r0, r5, #0 + bl sub_081B69FC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B2024 + movs r0, #0 + b _081B2026 +_081B2024: + movs r0, #2 +_081B2026: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081B1FA8 + + thumb_func_start sub_081B2030 +sub_081B2030: @ 0x081B2030 + lsls r0, r0, #0x18 + ldr r1, _081B203C + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_081B203C: .4byte gUnknown_85E08C4 + thumb_func_end sub_081B2030 + + thumb_func_start sub_081B2040 +sub_081B2040: @ 0x081B2040 + push {lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _081B2060 + lsrs r0, r0, #0xe + adds r0, r0, r2 + movs r2, #1 + lsls r2, r1 + ldr r0, [r0] + ands r0, r2 + cmp r0, #0 + bne _081B2064 + movs r0, #0 + b _081B2066 + .align 2, 0 +_081B2060: .4byte gUnknown_85E0900 +_081B2064: + movs r0, #1 +_081B2066: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B2040 + + thumb_func_start sub_081B206C +sub_081B206C: @ 0x081B206C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _081B2094 + cmp r0, #1 + bgt _081B2082 + cmp r0, #0 + beq _081B2088 + b _081B20AC +_081B2082: + cmp r1, #2 + beq _081B20A0 + b _081B20AC +_081B2088: + ldr r0, _081B2090 + bl sub_08003090 + b _081B20B2 + .align 2, 0 +_081B2090: .4byte gUnknown_85E10C8 +_081B2094: + ldr r0, _081B209C + bl sub_08003090 + b _081B20B2 + .align 2, 0 +_081B209C: .4byte gUnknown_85E1108 +_081B20A0: + ldr r0, _081B20A8 + bl sub_08003090 + b _081B20B2 + .align 2, 0 +_081B20A8: .4byte gUnknown_85E1148 +_081B20AC: + ldr r0, _081B20F0 + bl sub_08003090 +_081B20B2: + bl sub_08004480 + movs r4, #0 +_081B20B8: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081B20B8 + movs r0, #0 + movs r1, #0x4f + movs r2, #0xd0 + bl sub_080981B4 + bl sub_080985EC + movs r1, #0xe0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081B20F4 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B20F0: .4byte gUnknown_85E1188 +_081B20F4: .4byte gUnknown_85D7B04 + thumb_func_end sub_081B206C + + thumb_func_start sub_081B20F8 +sub_081B20F8: @ 0x081B20F8 + push {r4, r5, lr} + sub sp, #0x14 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081B2160 + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #5 + beq _081B21EE + cmp r2, #1 + bne _081B2174 + ldr r0, _081B2164 + bl sub_08003250 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _081B2168 + str r0, [sp, #8] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #0xc] + ldr r0, _081B216C + str r0, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08199B84 + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + ldr r0, _081B2170 + bl sub_08003250 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0xa + b _081B2180 + .align 2, 0 +_081B2160: .4byte gUnknown_203CB94 +_081B2164: .4byte gUnknown_85E11D0 +_081B2168: .4byte gUnknown_85E10B4 +_081B216C: .4byte gUnknown_85C93BB +_081B2170: .4byte gUnknown_85E11C8 +_081B2174: + ldr r0, _081B21B0 + bl sub_08003250 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r5, #0xc +_081B2180: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + ldr r0, _081B21B4 + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xa + beq _081B21C0 + ldr r0, _081B21B8 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _081B21BC + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #2 + bl sub_08199AFC + b _081B21DA + .align 2, 0 +_081B21B0: .4byte gUnknown_85E11C0 +_081B21B4: .4byte gUnknown_203CB94 +_081B21B8: .4byte gUnknown_85E10B4 +_081B21BC: .4byte gUnknown_85C93C4 +_081B21C0: + ldr r0, _081B21F8 + str r0, [sp] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [sp, #4] + ldr r0, _081B21FC + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #2 + bl sub_08199AFC +_081B21DA: + adds r0, r4, #0 + bl sub_0800365C + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #0 + bl sub_08199654 +_081B21EE: + add sp, #0x14 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B21F8: .4byte gUnknown_85E10B4 +_081B21FC: .4byte gUnknown_85C93C8 + thumb_func_end sub_081B20F8 + + thumb_func_start sub_081B2200 +sub_081B2200: @ 0x081B2200 + lsls r0, r0, #0x18 + ldr r1, _081B2210 + lsrs r0, r0, #0x17 + adds r0, #0x18 + ldr r1, [r1] + adds r1, r1, r0 + adds r0, r1, #0 + bx lr + .align 2, 0 +_081B2210: .4byte gUnknown_203CB90 + thumb_func_end sub_081B2200 + + thumb_func_start sub_081B2214 +sub_081B2214: @ 0x081B2214 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + str r1, [sp, #0xc] + ldr r1, [sp, #0x4c] + ldr r4, [sp, #0x50] + ldr r5, [sp, #0x54] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp, #8] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp, #0x10] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r3, [sp, #0x14] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp, #0x18] + lsls r4, r4, #0x18 + lsrs r6, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov sl, r5 + mov r0, sl + muls r0, r6, r0 + lsls r0, r0, #5 + bl sub_08000BDC + mov sb, r0 + cmp r0, #0 + beq _081B22E2 + movs r5, #0 + ldr r0, [sp, #0x14] + lsls r0, r0, #0x13 + str r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + lsls r1, r1, #0x13 + str r1, [sp, #0x20] + lsls r2, r6, #0x13 + str r2, [sp, #0x24] + mov r0, sl + lsls r0, r0, #0x13 + str r0, [sp, #0x28] + cmp r5, sl + bhs _081B22C0 +_081B2276: + movs r4, #0 + adds r1, r5, #1 + mov r8, r1 + cmp r4, r6 + bhs _081B22B6 + ldr r2, [sp, #0x18] + adds r0, r2, r5 + ldr r2, [sp, #0x10] + adds r1, r0, #0 + muls r1, r2, r1 + adds r7, r1, #0 +_081B228C: + ldr r1, [sp, #0x14] + adds r0, r1, r4 + adds r0, r0, r7 + ldr r2, [sp, #0xc] + adds r0, r2, r0 + ldrb r0, [r0] + bl sub_081B0AA4 + adds r1, r5, #0 + muls r1, r6, r1 + adds r1, r1, r4 + lsls r1, r1, #5 + add r1, sb + movs r2, #0x10 + bl CpuSet + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r6 + blo _081B228C +_081B22B6: + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + cmp r5, sl + blo _081B2276 +_081B22C0: + ldr r0, [sp, #0x1c] + lsrs r2, r0, #0x10 + ldr r1, [sp, #0x20] + lsrs r3, r1, #0x10 + ldr r1, [sp, #0x24] + lsrs r0, r1, #0x10 + str r0, [sp] + ldr r1, [sp, #0x28] + lsrs r0, r1, #0x10 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r1, sb + bl sub_08003874 + mov r0, sb + bl sub_08000BF0 +_081B22E2: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B2214 + + thumb_func_start sub_081B22F4 +sub_081B22F4: @ 0x081B22F4 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r4, [sp, #0x1c] + ldr r5, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + cmp r3, #0 + bne _081B2320 + cmp r4, #0 + bne _081B2320 + movs r3, #0xa + movs r4, #7 +_081B2320: + cmp r5, #0 + bne _081B233C + ldr r1, _081B2338 + str r2, [sp] + str r3, [sp, #4] + str r4, [sp, #8] + movs r2, #0xa + adds r3, r6, #0 + bl sub_081B2214 + b _081B234C + .align 2, 0 +_081B2338: .4byte gUnknown_85E1240 +_081B233C: + ldr r1, _081B2354 + str r2, [sp] + str r3, [sp, #4] + str r4, [sp, #8] + movs r2, #0xa + adds r3, r6, #0 + bl sub_081B2214 +_081B234C: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B2354: .4byte gUnknown_85E1286 + thumb_func_end sub_081B22F4 + + thumb_func_start sub_081B2358 +sub_081B2358: @ 0x081B2358 + push {r4, r5, r6, lr} + sub sp, #0xc + ldr r4, [sp, #0x1c] + ldr r5, [sp, #0x20] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + cmp r3, #0 + bne _081B2384 + cmp r4, #0 + bne _081B2384 + movs r3, #0x12 + movs r4, #3 +_081B2384: + cmp r5, #0 + bne _081B23A0 + ldr r1, _081B239C + str r2, [sp] + str r3, [sp, #4] + str r4, [sp, #8] + movs r2, #0x12 + adds r3, r6, #0 + bl sub_081B2214 + b _081B23B0 + .align 2, 0 +_081B239C: .4byte gUnknown_85E12CC +_081B23A0: + ldr r1, _081B23B8 + str r2, [sp] + str r3, [sp, #4] + str r4, [sp, #8] + movs r2, #0x12 + adds r3, r6, #0 + bl sub_081B2214 +_081B23B0: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B23B8: .4byte gUnknown_85E1302 + thumb_func_end sub_081B2358 + + thumb_func_start sub_081B23BC +sub_081B23BC: @ 0x081B23BC + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B23E0 + movs r2, #0 + str r2, [sp] + movs r2, #0x12 + str r2, [sp, #4] + movs r2, #3 + str r2, [sp, #8] + movs r2, #0x12 + movs r3, #0 + bl sub_081B2214 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B23E0: .4byte gUnknown_85E1338 + thumb_func_end sub_081B23BC + + thumb_func_start sub_081B23E4 +sub_081B23E4: @ 0x081B23E4 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + adds r5, r4, #0 + ldrb r0, [r0, #8] + movs r1, #5 + bl sub_0800401C + lsls r0, r0, #0x1c + lsrs r6, r0, #0x18 + adds r7, r6, #0 + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _081B2418 + ldr r5, _081B2410 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2414 + b _081B261A + .align 2, 0 +_081B2410: .4byte gUnknown_85E13A9 +_081B2414: .4byte gUnknown_85E1378 +_081B2418: + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _081B2474 + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081B2430 + ldr r5, _081B242C + b _081B25DE + .align 2, 0 +_081B242C: .4byte gUnknown_85E1397 +_081B2430: + ldr r5, _081B2468 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B246C + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B2470 + b _081B2612 + .align 2, 0 +_081B2468: .4byte gUnknown_85E1397 +_081B246C: .4byte gUnknown_85E1372 +_081B2470: .4byte gUnknown_85E13A6 +_081B2474: + movs r0, #0x10 + ands r0, r4 + cmp r0, #0 + beq _081B24C0 + ldr r5, _081B24B4 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B24B8 + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B24BC + b _081B2612 + .align 2, 0 +_081B24B4: .4byte gUnknown_85E1397 +_081B24B8: .4byte gUnknown_85E1372 +_081B24BC: .4byte gUnknown_85E13A6 +_081B24C0: + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _081B251C + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081B24D8 + ldr r5, _081B24D4 + b _081B25DE + .align 2, 0 +_081B24D4: .4byte gUnknown_85E1397 +_081B24D8: + ldr r5, _081B2510 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2514 + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B2518 + b _081B2612 + .align 2, 0 +_081B2510: .4byte gUnknown_85E1397 +_081B2514: .4byte gUnknown_85E1372 +_081B2518: .4byte gUnknown_85E13A6 +_081B251C: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _081B2578 + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081B2534 + ldr r5, _081B2530 + b _081B25DE + .align 2, 0 +_081B2530: .4byte gUnknown_85E1394 +_081B2534: + ldr r5, _081B256C + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2570 + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B2574 + b _081B2612 + .align 2, 0 +_081B256C: .4byte gUnknown_85E138B +_081B2570: .4byte gUnknown_85E1372 +_081B2574: .4byte gUnknown_85E13A0 +_081B2578: + movs r0, #8 + ands r0, r4 + cmp r0, #0 + beq _081B25D4 + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081B2590 + ldr r5, _081B258C + b _081B25DE + .align 2, 0 +_081B258C: .4byte gUnknown_85E1391 +_081B2590: + ldr r5, _081B25C8 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B25CC + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B25D0 + b _081B2612 + .align 2, 0 +_081B25C8: .4byte gUnknown_85E1388 +_081B25CC: .4byte gUnknown_85E1372 +_081B25D0: .4byte gUnknown_85E139D +_081B25D4: + movs r0, #1 + ands r5, r0 + cmp r5, #0 + beq _081B2658 + ldr r5, _081B2648 +_081B25DE: + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B264C + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B2650 +_081B2612: + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2654 +_081B261A: + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + b _081B26C0 + .align 2, 0 +_081B2648: .4byte gUnknown_85E138E +_081B264C: .4byte gUnknown_85E1372 +_081B2650: .4byte gUnknown_85E13A3 +_081B2654: .4byte gUnknown_85E1375 +_081B2658: + ldr r5, _081B26C8 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B26CC + ldrb r1, [r4] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldr r5, _081B26D0 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B26D4 + ldrb r1, [r4] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #2] + bl sub_081B2200 + ldrb r1, [r4, #2] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 +_081B26C0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B26C8: .4byte gUnknown_85E1385 +_081B26CC: .4byte gUnknown_85E1372 +_081B26D0: .4byte gUnknown_85E139A +_081B26D4: .4byte gUnknown_85E1375 + thumb_func_end sub_081B23E4 + + thumb_func_start sub_081B26D8 +sub_081B26D8: @ 0x081B26D8 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldrb r5, [r3] + ldrb r3, [r3, #1] + lsls r4, r2, #1 + adds r4, r4, r2 + ldr r2, _081B2708 + adds r4, r4, r2 + str r4, [sp] + movs r2, #0 + str r2, [sp, #4] + str r1, [sp, #8] + movs r1, #0 + adds r2, r5, #0 + bl sub_08199AFC + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B2708: .4byte gUnknown_85E10B4 + thumb_func_end sub_081B26D8 + + thumb_func_start sub_081B270C +sub_081B270C: @ 0x081B270C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + adds r7, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B275C + cmp r4, #1 + bne _081B2746 + ldr r5, [r6] + ldrb r0, [r6, #8] + ldrb r1, [r5, #4] + lsrs r1, r1, #3 + ldrb r2, [r5, #5] + lsrs r2, r2, #3 + ldrb r3, [r5, #6] + lsrs r3, r3, #3 + ldrb r4, [r5, #7] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B2746: + adds r0, r7, #0 + add r1, sp, #8 + bl sub_081B1814 + ldrb r0, [r6, #8] + ldr r3, [r6] + adds r3, #4 + add r1, sp, #8 + movs r2, #0 + bl sub_081B26D8 +_081B275C: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081B270C + + thumb_func_start sub_081B2764 +sub_081B2764: @ 0x081B2764 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r6, r0, #0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + mov r8, r4 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B27D0 + adds r0, r6, #0 + bl sub_081B1D2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081B2792 + cmp r0, #6 + bne _081B27D0 +_081B2792: + cmp r4, #0 + beq _081B27B8 + ldr r5, [r7] + ldrb r0, [r7, #8] + ldrb r1, [r5, #8] + lsrs r1, r1, #3 + ldrb r2, [r5, #9] + lsrs r2, r2, #3 + adds r2, #1 + ldrb r3, [r5, #0xa] + lsrs r3, r3, #3 + ldrb r4, [r5, #0xb] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B27B8: + mov r0, r8 + cmp r0, #2 + beq _081B27D0 + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r7, #0 + bl sub_081B27DC +_081B27D0: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081B2764 + + thumb_func_start sub_081B27DC +sub_081B27DC: @ 0x081B27DC + push {r4, r5, r6, lr} + adds r2, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r5, _081B281C + adds r0, r5, #0 + adds r1, r2, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081B2820 + ldr r1, _081B2824 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080088D8 + ldrb r0, [r6, #8] + ldr r3, [r6] + adds r3, #8 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B26D8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B281C: .4byte gUnknown_2021C54 +_081B2820: .4byte gUnknown_2021C40 +_081B2824: .4byte gUnknown_85C940E + thumb_func_end sub_081B27DC + + thumb_func_start sub_081B2828 +sub_081B2828: @ 0x081B2828 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + adds r6, r0, #0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #1 + bne _081B285A + ldr r5, [r7] + ldrb r0, [r7, #8] + ldrb r1, [r5, #0xc] + lsrs r1, r1, #3 + ldrb r2, [r5, #0xd] + lsrs r2, r2, #3 + adds r2, #1 + ldrb r3, [r5, #0xe] + lsrs r3, r3, #3 + ldrb r4, [r5, #0xf] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B285A: + adds r0, r6, #0 + add r1, sp, #8 + bl sub_081B1814 + adds r0, r6, #0 + bl sub_08069AF4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + add r2, sp, #8 + adds r3, r7, #0 + bl sub_081B2890 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B2828 + + thumb_func_start sub_081B2890 +sub_081B2890: @ 0x081B2890 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r2 + adds r7, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r5, r4, #0 + ldrb r0, [r7, #8] + movs r1, #5 + bl sub_0800401C + lsls r0, r0, #0x1c + lsrs r6, r0, #0x18 + cmp r4, #0 + beq _081B2956 + cmp r4, #0x20 + beq _081B28C0 + cmp r4, #0x1d + bne _081B28D4 +_081B28C0: + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #1 + ldr r0, _081B28E0 + adds r1, r1, r0 + mov r0, sb + bl sub_0800895C + cmp r0, #0 + beq _081B2956 +_081B28D4: + mov r0, r8 + cmp r0, #0 + beq _081B28E4 + cmp r0, #0xfe + beq _081B2924 + b _081B2956 + .align 2, 0 +_081B28E0: .4byte gUnknown_82EA31C +_081B28E4: + ldr r5, _081B2918 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B291C + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r7, #8] + ldr r1, _081B2920 + ldr r3, [r7] + adds r3, #0xc + movs r2, #2 + bl sub_081B26D8 + b _081B2956 + .align 2, 0 +_081B2918: .4byte gUnknown_85E137B +_081B291C: .4byte gUnknown_85E136E +_081B2920: .4byte gUnknown_85C940A +_081B2924: + ldr r5, _081B2964 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2968 + ldrb r1, [r4] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r6 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r7, #8] + ldr r1, _081B296C + ldr r3, [r7] + adds r3, #0xc + movs r2, #2 + bl sub_081B26D8 +_081B2956: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B2964: .4byte gUnknown_85E137D +_081B2968: .4byte gUnknown_85E136E +_081B296C: .4byte gUnknown_85C940C + thumb_func_end sub_081B2890 + + thumb_func_start sub_081B2970 +sub_081B2970: @ 0x081B2970 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + mov r8, r4 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B29CA + cmp r4, #0 + beq _081B29B2 + ldr r5, [r6] + ldrb r0, [r6, #8] + ldrb r1, [r5, #0x10] + lsrs r1, r1, #3 + ldrb r2, [r5, #0x11] + lsrs r2, r2, #3 + adds r2, #1 + ldrb r3, [r5, #0x12] + lsrs r3, r3, #3 + ldrb r4, [r5, #0x13] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B29B2: + mov r0, r8 + cmp r0, #2 + beq _081B29CA + adds r0, r7, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_081B29D8 +_081B29CA: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B2970 + + thumb_func_start sub_081B29D8 +sub_081B29D8: @ 0x081B29D8 + push {r4, r5, lr} + adds r2, r0, #0 + adds r4, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r5, _081B2A04 + adds r0, r5, #0 + adds r1, r2, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldrb r0, [r4, #8] + ldr r3, [r4] + adds r3, #0x10 + adds r1, r5, #0 + movs r2, #0 + bl sub_081B26D8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B2A04: .4byte gUnknown_2021C40 + thumb_func_end sub_081B29D8 + + thumb_func_start sub_081B2A08 +sub_081B2A08: @ 0x081B2A08 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + mov r8, r4 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B2A64 + cmp r4, #0 + beq _081B2A4C + ldr r5, [r6] + ldrb r0, [r6, #8] + ldrb r1, [r5, #0x14] + lsrs r1, r1, #3 + adds r1, #1 + ldrb r2, [r5, #0x15] + lsrs r2, r2, #3 + adds r2, #1 + ldrb r3, [r5, #0x16] + lsrs r3, r3, #3 + ldrb r4, [r5, #0x17] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #0 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B2A4C: + mov r0, r8 + cmp r0, #2 + beq _081B2A64 + adds r0, r7, #0 + movs r1, #0x3a + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_081B2A70 +_081B2A64: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081B2A08 + + thumb_func_start sub_081B2A70 +sub_081B2A70: @ 0x081B2A70 + push {r4, r5, r6, lr} + adds r2, r0, #0 + adds r6, r1, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldr r5, _081B2AB0 + adds r0, r5, #0 + adds r1, r2, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081B2AB4 + ldr r1, _081B2AB8 + adds r0, r4, #0 + bl sub_080088B8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080088D8 + ldrb r0, [r6, #8] + ldr r3, [r6] + adds r3, #0x14 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B26D8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B2AB0: .4byte gUnknown_2021C54 +_081B2AB4: .4byte gUnknown_2021C40 +_081B2AB8: .4byte gUnknown_85C93FF + thumb_func_end sub_081B2A70 + + thumb_func_start sub_081B2ABC +sub_081B2ABC: @ 0x081B2ABC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B2AF0 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + adds r2, r6, #0 + bl sub_081B2AF8 +_081B2AF0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B2ABC + + thumb_func_start sub_081B2AF8 +sub_081B2AF8: @ 0x081B2AF8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + adds r6, r2, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + ldrb r0, [r6, #8] + movs r1, #5 + bl sub_0800401C + lsls r0, r0, #0x1c + lsrs r7, r0, #0x18 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov r2, sb + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + bl sub_08074BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _081B2B44 + cmp r0, #2 + blt _081B2B74 + cmp r0, #4 + bgt _081B2B74 + ldr r5, _081B2B40 + b _081B2B46 + .align 2, 0 +_081B2B40: .4byte gUnknown_85E137F +_081B2B44: + ldr r5, _081B2B6C +_081B2B46: + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2B70 + ldrb r1, [r4] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + b _081B2B98 + .align 2, 0 +_081B2B6C: .4byte gUnknown_85E1381 +_081B2B70: .4byte gUnknown_85E1370 +_081B2B74: + ldr r5, _081B2C34 + ldrb r0, [r5] + bl sub_081B2200 + ldr r4, _081B2C38 + ldrb r1, [r4] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 + ldrb r0, [r5, #1] + bl sub_081B2200 + ldrb r1, [r4, #1] + adds r1, r1, r7 + movs r2, #2 + bl sub_080A1200 +_081B2B98: + mov r1, r8 + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + mov r2, sb + lsls r1, r2, #0x10 + asrs r1, r1, #0x10 + ldr r2, [r6] + ldrb r2, [r2, #0x1a] + bl sub_08074BC4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldrb r0, [r6, #8] + ldr r4, _081B2C38 + ldrb r1, [r4, #1] + ldr r3, [r6] + ldrb r2, [r3, #0x18] + ldrb r3, [r3, #0x19] + str r5, [sp] + movs r7, #1 + str r7, [sp, #4] + bl sub_08003A34 + ldrb r0, [r6, #8] + ldrb r1, [r4] + ldr r3, [r6] + ldrb r2, [r3, #0x18] + ldrb r3, [r3, #0x19] + adds r3, #1 + str r5, [sp] + movs r4, #2 + str r4, [sp, #4] + bl sub_08003A34 + ldr r1, [r6] + ldrb r0, [r1, #0x1a] + cmp r5, r0 + beq _081B2C1C + ldrb r0, [r6, #8] + ldrb r2, [r1, #0x18] + adds r2, r2, r5 + ldrb r3, [r1, #0x19] + ldrb r1, [r1, #0x1a] + subs r1, r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + str r7, [sp, #4] + movs r1, #0xd + bl sub_08003A34 + ldrb r0, [r6, #8] + ldr r1, [r6] + ldrb r2, [r1, #0x18] + adds r2, r2, r5 + ldrb r3, [r1, #0x19] + adds r3, #1 + ldrb r1, [r1, #0x1a] + subs r1, r1, r5 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + str r1, [sp] + str r4, [sp, #4] + movs r1, #2 + bl sub_08003A34 +_081B2C1C: + ldrb r0, [r6, #8] + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B2C34: .4byte gUnknown_85E1383 +_081B2C38: .4byte gUnknown_85E1370 + thumb_func_end sub_081B2AF8 + + thumb_func_start sub_081B2C3C +sub_081B2C3C: @ 0x081B2C3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r7, r2, #0 + cmp r7, #0 + beq _081B2C76 + ldr r5, [r6] + ldrb r0, [r6, #8] + ldrb r1, [r5, #0x1c] + lsrs r1, r1, #3 + ldrb r2, [r5, #0x1d] + lsrs r2, r2, #3 + ldrb r3, [r5, #0x1e] + lsrs r3, r3, #3 + ldrb r4, [r5, #0x1f] + lsrs r4, r4, #3 + str r4, [sp] + movs r4, #1 + str r4, [sp, #4] + ldr r4, [r5] + bl _call_via_r4 +_081B2C76: + cmp r7, #2 + beq _081B2C9C + ldrb r0, [r6, #8] + ldr r1, [r6] + ldrb r2, [r1, #0x1c] + ldrb r3, [r1, #0x1d] + ldr r1, _081B2CA8 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r4, _081B2CAC + mov r5, r8 + lsls r1, r5, #2 + adds r1, r1, r4 + ldr r1, [r1] + str r1, [sp, #8] + movs r1, #1 + bl sub_08199AFC +_081B2C9C: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B2CA8: .4byte gUnknown_85E10B4 +_081B2CAC: .4byte gUnknown_85E1418 + thumb_func_end sub_081B2C3C + + thumb_func_start sub_081B2CB0 +sub_081B2CB0: @ 0x081B2CB0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081B2CD0 + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] + movs r0, #2 + bl sub_08199654 +_081B2CD0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B2CB0 + + thumb_func_start sub_081B2CD8 +sub_081B2CD8: @ 0x081B2CD8 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + ldr r0, _081B2D08 + ldr r4, [r0] + adds r5, r4, #0 + adds r5, #0xd + ldrb r0, [r4, #0xd] + cmp r0, #0xff + beq _081B2CF2 + adds r0, r5, #0 + bl sub_081B2CB0 +_081B2CF2: + cmp r6, #0x7f + beq _081B2DC0 + adds r0, r6, #0 + subs r0, #0x15 + cmp r0, #5 + bhi _081B2D58 + lsls r0, r0, #2 + ldr r1, _081B2D0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B2D08: .4byte gUnknown_203CB90 +_081B2D0C: .4byte _081B2D10 +_081B2D10: @ jump table + .4byte _081B2D28 @ case 0 + .4byte _081B2D40 @ case 1 + .4byte _081B2D40 @ case 2 + .4byte _081B2D30 @ case 3 + .4byte _081B2D38 @ case 4 + .4byte _081B2D48 @ case 5 +_081B2D28: + ldr r0, _081B2D2C + b _081B2D4A + .align 2, 0 +_081B2D2C: .4byte gUnknown_85E11E0 +_081B2D30: + ldr r0, _081B2D34 + b _081B2D4A + .align 2, 0 +_081B2D34: .4byte gUnknown_85E11E8 +_081B2D38: + ldr r0, _081B2D3C + b _081B2D4A + .align 2, 0 +_081B2D3C: .4byte gUnknown_85E11F0 +_081B2D40: + ldr r0, _081B2D44 + b _081B2D4A + .align 2, 0 +_081B2D44: .4byte gUnknown_85E11F8 +_081B2D48: + ldr r0, _081B2D54 +_081B2D4A: + bl sub_08003250 + strb r0, [r5] + b _081B2D60 + .align 2, 0 +_081B2D54: .4byte gUnknown_85E1200 +_081B2D58: + ldr r0, _081B2D74 + bl sub_08003250 + strb r0, [r4, #0xd] +_081B2D60: + cmp r6, #0 + bne _081B2D88 + ldr r0, _081B2D78 + ldr r0, [r0] + ldrb r0, [r0, #8] + lsls r0, r0, #0x1f + cmp r0, #0 + beq _081B2D7C + movs r6, #2 + b _081B2D88 + .align 2, 0 +_081B2D74: .4byte gUnknown_85E11D8 +_081B2D78: .4byte gUnknown_203CB90 +_081B2D7C: + bl sub_081B2DD0 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B2D88 + movs r6, #1 +_081B2D88: + ldrb r0, [r5] + movs r1, #0 + movs r2, #0x4f + movs r3, #0xd + bl sub_08197F44 + ldr r4, _081B2DC8 + ldr r1, _081B2DCC + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08008BCC + ldrb r0, [r5] + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #2 + bl sub_08199654 +_081B2DC0: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B2DC8: .4byte gUnknown_2021C7C +_081B2DCC: .4byte gUnknown_85E13AC + thumb_func_end sub_081B2CD8 + + thumb_func_start sub_081B2DD0 +sub_081B2DD0: @ 0x081B2DD0 + push {r4, r5, r6, r7, lr} + ldr r7, _081B2DE4 + movs r6, #0 + ldr r0, _081B2DE8 + ldrb r0, [r0, #0xb] + cmp r0, #1 + bne _081B2DEC +_081B2DDE: + movs r0, #1 + b _081B2E2E + .align 2, 0 +_081B2DE4: .4byte gUnknown_2024190 +_081B2DE8: .4byte gUnknown_203CB94 +_081B2DEC: + movs r5, #0 +_081B2DEE: + movs r0, #0x64 + muls r0, r5, r0 + adds r4, r7, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B2E1E + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081B2E18 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _081B2E1E +_081B2E18: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 +_081B2E1E: + cmp r6, #1 + bhi _081B2DDE + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081B2DEE + movs r0, #0 +_081B2E2E: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081B2DD0 + + thumb_func_start sub_081B2E34 +sub_081B2E34: @ 0x081B2E34 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + beq _081B2E90 + cmp r4, #1 + bgt _081B2E50 + cmp r4, #0 + beq _081B2E56 + b _081B2EA0 +_081B2E50: + cmp r4, #2 + beq _081B2E98 + b _081B2EA0 +_081B2E56: + ldr r0, _081B2E88 + ldr r1, [r0] + ldrb r0, [r1, #0x17] + lsls r0, r0, #1 + movs r3, #0x13 + subs r3, r3, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #8 + str r0, [sp] + ldrb r0, [r1, #0x17] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x18 + str r0, [sp, #4] + movs r0, #0xe + str r0, [sp, #8] + ldr r0, _081B2E8C + str r0, [sp, #0xc] + add r0, sp, #0x14 + movs r1, #2 + movs r2, #0x15 + bl sub_08198B34 + b _081B2EAA + .align 2, 0 +_081B2E88: .4byte gUnknown_203CB90 +_081B2E8C: .4byte 0x000002D3 +_081B2E90: + ldr r0, _081B2E94 + b _081B2EA2 + .align 2, 0 +_081B2E94: .4byte gUnknown_85E1208 +_081B2E98: + ldr r0, _081B2E9C + b _081B2EA2 + .align 2, 0 +_081B2E9C: .4byte gUnknown_85E1210 +_081B2EA0: + ldr r0, _081B2ECC +_081B2EA2: + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #0x14] + str r1, [sp, #0x18] +_081B2EAA: + add r0, sp, #0x14 + bl sub_08003250 + ldr r6, _081B2ED0 + 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_08197F44 + cmp r4, #3 + bne _081B2ED4 + ldr r0, [r6] + b _081B2F74 + .align 2, 0 +_081B2ECC: .4byte gUnknown_85E1218 +_081B2ED0: .4byte gUnknown_203CB90 +_081B2ED4: + movs r0, #1 + movs r1, #0 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #1 + movs r1, #2 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + ldr r0, [r6] + ldrb r0, [r0, #0x17] + cmp r5, r0 + bhs _081B2F4E + adds r7, r6, #0 + movs r6, #0 +_081B2EFE: + ldr r1, [r7] + adds r0, r1, #0 + adds r0, #0xf + adds r4, r0, r5 + ldrb r0, [r4] + movs r2, #3 + cmp r0, #0x12 + bls _081B2F10 + movs r2, #4 +_081B2F10: + ldrb r0, [r1, #0xc] + lsls r3, r5, #4 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r1, r8 + str r1, [sp] + str r6, [sp, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + ldr r2, _081B2F84 + adds r1, r1, r2 + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r2, _081B2F88 + ldrb r1, [r4] + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [sp, #0x10] + movs r1, #1 + mov r2, sb + bl sub_08199B84 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, [r7] + ldrb r0, [r0, #0x17] + cmp r5, r0 + blo _081B2EFE +_081B2F4E: + ldr r4, _081B2F8C + ldr r2, [r4] + ldrb r0, [r2, #0xc] + movs r1, #0x10 + str r1, [sp] + ldrb r1, [r2, #0x17] + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + str r1, [sp, #0xc] + movs r2, #0 + movs r3, #2 + bl sub_0819844C + movs r0, #2 + bl sub_08199654 + ldr r0, [r4] +_081B2F74: + ldrb r0, [r0, #0xc] + add sp, #0x1c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081B2F84: .4byte gUnknown_85E10B4 +_081B2F88: .4byte gUnknown_85E14C0 +_081B2F8C: .4byte gUnknown_203CB90 + thumb_func_end sub_081B2E34 + + thumb_func_start sub_081B2F90 +sub_081B2F90: @ 0x081B2F90 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + movs r0, #6 + movs r1, #0 + movs r2, #0x4f + movs r3, #0xd + bl sub_08197F44 + ldr r2, _081B2FD8 + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r0, #6 + movs r1, #1 + adds r2, r4, #0 + bl sub_08196E2C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B2FD8: .4byte gUnknown_30030B4 + thumb_func_end sub_081B2F90 + + thumb_func_start sub_081B2FDC +sub_081B2FDC: @ 0x081B2FDC + push {lr} + sub sp, #0xc + ldr r0, _081B3000 + movs r1, #0x4f + str r1, [sp] + movs r1, #0xd + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_08198C08 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B3000: .4byte gUnknown_85E1220 + thumb_func_end sub_081B2FDC + + thumb_func_start sub_081B3004 +sub_081B3004: @ 0x081B3004 + push {r4, lr} + ldr r0, _081B302C + bl sub_08003250 + ldr r4, _081B3030 + 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_08197F44 + ldr r0, [r4] + ldrb r0, [r0, #0xc] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081B302C: .4byte gUnknown_85E1228 +_081B3030: .4byte gUnknown_203CB90 + thumb_func_end sub_081B3004 + + thumb_func_start sub_081B3034 +sub_081B3034: @ 0x081B3034 + push {r4, lr} + ldr r4, _081B3050 + ldr r0, [r4] + ldrb r0, [r0, #0xc] + bl sub_08003774 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B3050: .4byte gUnknown_203CB90 + thumb_func_end sub_081B3034 + + thumb_func_start sub_081B3054 +sub_081B3054: @ 0x081B3054 + push {r4, lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #0 + bne _081B3068 + bl sub_081B30B4 + b _081B30A0 +_081B3068: + ldr r4, _081B30A8 + ldr r1, [r4] + ldr r0, _081B30AC + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1, #0x17] + movs r3, #0 + ldr r0, [r4] + ldrb r0, [r0, #0x17] + cmp r3, r0 + bhs _081B30A0 + ldr r1, _081B30B0 + lsls r0, r2, #2 + adds r2, r0, r1 +_081B3084: + ldr r1, [r4] + adds r1, #0xf + adds r1, r1, r3 + ldr r0, [r2] + adds r0, r0, r3 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, [r4] + ldrb r0, [r0, #0x17] + cmp r3, r0 + blo _081B3084 +_081B30A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B30A8: .4byte gUnknown_203CB90 +_081B30AC: .4byte gUnknown_85E1628 +_081B30B0: .4byte gUnknown_85E15F0 + thumb_func_end sub_081B3054 + + thumb_func_start sub_081B30B4 +sub_081B30B4: @ 0x081B30B4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + ldr r2, _081B3128 + 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_080A020C + movs r7, #0 + ldr r0, _081B312C + ldrh r0, [r0] + str r0, [sp] +_081B30E6: + movs r4, #0 + adds r0, r7, #1 + mov r8, r0 + ldr r1, [sp] + cmp r1, #0xe + beq _081B3140 + movs r0, #0x64 + mov r6, sl + muls r6, r0, r6 + ldr r5, _081B312C +_081B30FA: + mov r1, sb + adds r0, r1, r6 + adds r1, r7, #0 + adds r1, #0xd + bl sub_0806A058 + lsls r1, r4, #1 + adds r1, r1, r5 + ldrh r1, [r1] + cmp r0, r1 + bne _081B3130 + ldr r0, _081B3128 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf + adds r1, #0x17 + adds r2, r4, #0 + adds r2, #0x13 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_080A020C + b _081B3140 + .align 2, 0 +_081B3128: .4byte gUnknown_203CB90 +_081B312C: .4byte gUnknown_85E1636 +_081B3130: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r0, [r0] + cmp r0, #0xe + bne _081B30FA +_081B3140: + mov r1, r8 + lsls r0, r1, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #3 + bls _081B30E6 + bl sub_081A7E28 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B31B8 + mov r0, sb + adds r0, #0x64 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B3172 + ldr r0, _081B31A4 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf + adds r1, #0x17 + movs r2, #1 + bl sub_080A020C +_081B3172: + movs r0, #0x64 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + add r0, sb + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B31A8 + ldr r0, _081B31A4 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf + adds r1, #0x17 + movs r2, #6 + bl sub_080A020C + b _081B31B8 + .align 2, 0 +_081B31A4: .4byte gUnknown_203CB90 +_081B31A8: + ldr r0, _081B31D8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf + adds r1, #0x17 + movs r2, #3 + bl sub_080A020C +_081B31B8: + ldr r0, _081B31D8 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0xf + adds r1, #0x17 + movs r2, #2 + bl sub_080A020C + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B31D8: .4byte gUnknown_203CB90 + thumb_func_end sub_081B30B4 + + thumb_func_start sub_081B31DC +sub_081B31DC: @ 0x081B31DC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _081B31F8 + ldrb r0, [r1, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r2, r1, #0 + cmp r0, #0xc + bhi _081B329E + lsls r0, r0, #2 + ldr r1, _081B31FC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B31F8: .4byte gUnknown_203CB94 +_081B31FC: .4byte _081B3200 +_081B3200: @ jump table + .4byte _081B3234 @ case 0 + .4byte _081B3250 @ case 1 + .4byte _081B329E @ case 2 + .4byte _081B329E @ case 3 + .4byte _081B325C @ case 4 + .4byte _081B329E @ case 5 + .4byte _081B327C @ case 6 + .4byte _081B329E @ case 7 + .4byte _081B328E @ case 8 + .4byte _081B3292 @ case 9 + .4byte _081B3296 @ case 10 + .4byte _081B329E @ case 11 + .4byte _081B329A @ case 12 +_081B3234: + bl sub_081399C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B324C + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _081B329E +_081B324C: + movs r1, #1 + b _081B32A0 +_081B3250: + adds r0, r4, #0 + bl sub_081B86CC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + b _081B32A0 +_081B325C: + movs r0, #9 + ldrsb r0, [r2, r0] + bl sub_081B820C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081B3274 + cmp r0, #1 + beq _081B3278 + movs r1, #7 + b _081B32A0 +_081B3274: + movs r1, #4 + b _081B32A0 +_081B3278: + movs r1, #5 + b _081B32A0 +_081B327C: + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + movs r1, #6 + cmp r0, #0 + beq _081B32A0 + movs r1, #7 + b _081B32A0 +_081B328E: + movs r1, #0xa + b _081B32A0 +_081B3292: + movs r1, #0xb + b _081B32A0 +_081B3296: + movs r1, #0xc + b _081B32A0 +_081B329A: + movs r1, #0xd + b _081B32A0 +_081B329E: + movs r1, #0 +_081B32A0: + adds r0, r1, #0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081B31DC + + thumb_func_start sub_081B32A8 +sub_081B32A8: @ 0x081B32A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r4, _081B3304 + movs r1, #9 + ldrsb r1, [r4, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r7, _081B3308 + adds r5, r0, r7 + ldr r1, _081B330C + adds r0, r5, #0 + bl sub_081B1814 + ldr r0, _081B3310 + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + ldrb r1, [r4, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xc + beq _081B3314 + ldrb r4, [r4, #9] + adds r0, r5, #0 + bl sub_081B31DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_081B3054 + movs r0, #0 + bl sub_081B2E34 + movs r0, #0x15 + bl sub_081B2CD8 + b _081B338A + .align 2, 0 +_081B3304: .4byte gUnknown_203CB94 +_081B3308: .4byte gUnknown_2024190 +_081B330C: .4byte gUnknown_2021C40 +_081B3310: .4byte gUnknown_203CB90 +_081B3314: + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _081B3360 + ldr r4, _081B3350 + ldr r1, _081B3354 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B3358 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B335C + str r1, [r0] + movs r0, #0 + b _081B338C + .align 2, 0 +_081B3350: .4byte gUnknown_2021C7C +_081B3354: .4byte gUnknown_85C9CAD +_081B3358: .4byte gUnknown_3005B60 +_081B335C: .4byte sub_081B433C +_081B3360: + ldrb r4, [r4, #9] + adds r0, r5, #0 + bl sub_081B31DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_081B3054 + movs r0, #1 + bl sub_081B2E34 + ldr r1, _081B3398 + adds r0, r6, #0 + bl sub_080D5EC8 + movs r0, #0x1a + bl sub_081B2CD8 +_081B338A: + movs r0, #1 +_081B338C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081B3398: .4byte gUnknown_2021C54 + thumb_func_end sub_081B32A8 + + thumb_func_start sub_081B339C +sub_081B339C: @ 0x081B339C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + bl sub_081B32A8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B33C0 + ldr r1, _081B33C8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xff + strh r1, [r0, #8] + ldr r1, _081B33CC + str r1, [r0] +_081B33C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B33C8: .4byte gUnknown_3005B60 +_081B33CC: .4byte sub_081B33D0 + thumb_func_end sub_081B339C + + thumb_func_start sub_081B33D0 +sub_081B33D0: @ 0x081B33D0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081B3408 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B348E + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B348E + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081B340C + adds r5, r0, r1 + ldr r0, _081B3410 + ldr r0, [r0] + ldrb r0, [r0, #0x17] + cmp r0, #3 + bhi _081B3414 + bl sub_081987D4 + b _081B3418 + .align 2, 0 +_081B3408: .4byte gUnknown_2037C74 +_081B340C: .4byte gUnknown_3005B68 +_081B3410: .4byte gUnknown_203CB90 +_081B3414: + bl sub_08198768 +_081B3418: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + lsls r0, r4, #0x18 + asrs r5, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r5, r0 + beq _081B348E + adds r0, #1 + cmp r5, r0 + bne _081B346C + movs r0, #5 + bl sub_080A306C + ldr r4, _081B3464 + ldr r0, [r4] + adds r0, #0xe + bl sub_081B2CB0 + ldr r2, _081B3468 + ldr r0, [r4] + ldrb r1, [r0, #0x17] + adds r0, r0, r1 + ldrb r0, [r0, #0xe] + lsls r0, r0, #3 + adds r2, #4 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 + b _081B348E + .align 2, 0 +_081B3464: .4byte gUnknown_203CB90 +_081B3468: .4byte gUnknown_85E14C0 +_081B346C: + ldr r4, _081B3494 + ldr r0, [r4] + adds r0, #0xe + bl sub_081B2CB0 + ldr r1, _081B3498 + ldr r0, [r4] + adds r0, #0xf + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 +_081B348E: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B3494: .4byte gUnknown_203CB90 +_081B3498: .4byte gUnknown_85E14C0 + thumb_func_end sub_081B33D0 + + thumb_func_start sub_081B349C +sub_081B349C: @ 0x081B349C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r0, _081B34C0 + ldr r1, [r0] + ldr r0, _081B34C4 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B34C0: .4byte gUnknown_203CB90 +_081B34C4: .4byte sub_081B34C8 + thumb_func_end sub_081B349C + + thumb_func_start sub_081B34C8 +sub_081B34C8: @ 0x081B34C8 + push {r4, lr} + sub sp, #4 + ldr r4, _081B34F8 + ldrb r1, [r4, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _081B3508 + bl sub_081B8CD0 + ldr r1, _081B34FC + ldrb r2, [r4, #9] + ldr r0, _081B3500 + ldrb r3, [r0] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _081B3504 + str r0, [sp] + movs r0, #1 + bl sub_081BF280 + b _081B3520 + .align 2, 0 +_081B34F8: .4byte gUnknown_203CB94 +_081B34FC: .4byte gUnknown_2024190 +_081B3500: .4byte gUnknown_202418D +_081B3504: .4byte sub_081B3534 +_081B3508: + ldr r1, _081B3528 + ldrb r2, [r4, #9] + ldr r0, _081B352C + ldrb r3, [r0] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _081B3530 + str r0, [sp] + movs r0, #0 + bl sub_081BF280 +_081B3520: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B3528: .4byte gUnknown_2024190 +_081B352C: .4byte gUnknown_202418D +_081B3530: .4byte sub_081B3534 + thumb_func_end sub_081B34C8 + + thumb_func_start sub_081B3534 +sub_081B3534: @ 0x081B3534 + push {lr} + sub sp, #0xc + ldr r2, _081B356C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r3, _081B3570 + ldr r0, _081B3574 + ldrb r0, [r0] + strb r0, [r3, #9] + ldrb r0, [r3, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r3, #0xb] + movs r1, #0x15 + str r1, [sp] + ldr r1, _081B3578 + str r1, [sp, #4] + ldr r1, [r3] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B356C: .4byte gUnknown_2037C74 +_081B3570: .4byte gUnknown_203CB94 +_081B3574: .4byte gUnknown_203CBEC +_081B3578: .4byte sub_081B339C + thumb_func_end sub_081B3534 + + thumb_func_start sub_081B357C +sub_081B357C: @ 0x081B357C + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r5, _081B35C8 + movs r0, #8 + strb r0, [r5, #0xb] + ldr r4, _081B35CC + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + movs r0, #3 + bl sub_081B2CD8 + ldrb r0, [r5, #9] + movs r1, #1 + bl sub_081B0C9C + ldrb r0, [r5, #9] + strb r0, [r5, #0xa] + ldr r1, _081B35D0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B35D4 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B35C8: .4byte gUnknown_203CB94 +_081B35CC: .4byte gUnknown_203CB90 +_081B35D0: .4byte gUnknown_3005B60 +_081B35D4: .4byte sub_081B1040 + thumb_func_end sub_081B357C + + thumb_func_start sub_081B35D8 +sub_081B35D8: @ 0x081B35D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + ldr r1, _081B3600 + adds r6, r0, r1 + ldr r3, _081B3604 + movs r1, #0xa + ldrsb r1, [r3, r1] + movs r0, #9 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _081B3608 + adds r0, r7, #0 + bl sub_081B3D1C + b _081B375A + .align 2, 0 +_081B3600: .4byte gUnknown_3005B68 +_081B3604: .4byte gUnknown_203CB94 +_081B3608: + add r2, sp, #8 + movs r0, #9 + ldrsb r0, [r3, r0] + ldr r1, _081B3660 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + movs r4, #0 + strb r0, [r2] + adds r0, r2, #0 + ldrb r0, [r0] + movs r1, #1 + bl sub_0800401C + strh r0, [r6] + add r0, sp, #8 + ldrb r0, [r0] + movs r1, #2 + bl sub_0800401C + strh r0, [r6, #2] + add r0, sp, #8 + ldrb r0, [r0] + movs r1, #3 + bl sub_0800401C + strh r0, [r6, #4] + add r0, sp, #8 + ldrb r0, [r0] + movs r1, #4 + bl sub_0800401C + strh r0, [r6, #6] + strh r4, [r6, #0x10] + movs r1, #4 + ldrsh r0, [r6, r1] + cmp r0, #0xa + bne _081B3664 + movs r2, #1 + rsbs r2, r2, #0 + adds r0, r2, #0 + b _081B3666 + .align 2, 0 +_081B3660: .4byte gUnknown_203CBA8 +_081B3664: + movs r0, #1 +_081B3666: + strh r0, [r6, #0x14] + add r2, sp, #8 + ldr r0, _081B36C4 + ldrb r0, [r0, #0xa] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r1, _081B36C8 + ldr r1, [r1] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + movs r4, #0 + strb r0, [r2, #1] + adds r0, r2, #0 + ldrb r0, [r0, #1] + movs r1, #1 + bl sub_0800401C + strh r0, [r6, #8] + add r0, sp, #8 + ldrb r0, [r0, #1] + movs r1, #2 + bl sub_0800401C + strh r0, [r6, #0xa] + add r0, sp, #8 + ldrb r0, [r0, #1] + movs r1, #3 + bl sub_0800401C + strh r0, [r6, #0xc] + add r0, sp, #8 + ldrb r0, [r0, #1] + movs r1, #4 + bl sub_0800401C + strh r0, [r6, #0xe] + strh r4, [r6, #0x12] + movs r1, #0xc + ldrsh r0, [r6, r1] + cmp r0, #0xa + bne _081B36CC + movs r2, #1 + rsbs r2, r2, #0 + adds r0, r2, #0 + b _081B36CE + .align 2, 0 +_081B36C4: .4byte gUnknown_203CB94 +_081B36C8: .4byte gUnknown_203CBA8 +_081B36CC: + movs r0, #1 +_081B36CE: + strh r0, [r6, #0x16] + ldr r4, _081B3764 + movs r0, #4 + ldrsh r1, [r6, r0] + movs r2, #6 + ldrsh r0, [r6, r2] + lsls r0, r0, #1 + muls r0, r1, r0 + bl sub_08000BC8 + str r0, [r4] + ldr r5, _081B3768 + movs r0, #0xc + ldrsh r1, [r6, r0] + movs r2, #0xe + ldrsh r0, [r6, r2] + lsls r0, r0, #1 + muls r0, r1, r0 + bl sub_08000BC8 + str r0, [r5] + ldr r1, [r4] + ldrb r2, [r6] + ldrb r3, [r6, #2] + ldrb r0, [r6, #4] + str r0, [sp] + ldrb r0, [r6, #6] + str r0, [sp, #4] + movs r0, #0 + bl sub_08199954 + ldr r1, [r5] + ldrb r2, [r6, #8] + ldrb r3, [r6, #0xa] + ldrb r0, [r6, #0xc] + str r0, [sp] + ldrb r0, [r6, #0xe] + str r0, [sp, #4] + movs r0, #0 + bl sub_08199954 + add r0, sp, #8 + ldrb r0, [r0] + bl sub_08003774 + add r0, sp, #8 + ldrb r0, [r0, #1] + bl sub_08003774 + ldr r4, _081B376C + movs r0, #9 + strb r0, [r4, #0xb] + ldrb r0, [r4, #9] + movs r1, #1 + bl sub_081B0C9C + ldrb r0, [r4, #0xa] + movs r1, #1 + bl sub_081B0C9C + adds r0, r7, #0 + bl sub_081B3960 + ldr r1, _081B3770 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B3774 + str r1, [r0] +_081B375A: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B3764: .4byte gUnknown_203CBBC +_081B3768: .4byte gUnknown_203CBC0 +_081B376C: .4byte gUnknown_203CB94 +_081B3770: .4byte gUnknown_3005B60 +_081B3774: .4byte sub_081B39E8 + thumb_func_end sub_081B35D8 + + thumb_func_start sub_081B3778 +sub_081B3778: @ 0x081B3778 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r2, #0 + mov ip, r3 + ldr r7, [sp, #0x18] + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + adds r5, r3, #0 + lsls r1, r1, #0x10 + lsrs r2, r1, #0x10 + mov r8, r2 + lsls r0, r3, #0x10 + asrs r1, r0, #0x10 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + adds r4, r1, r0 + cmp r4, #0 + blt _081B37A2 + cmp r1, #0x1f + ble _081B37A6 +_081B37A2: + movs r0, #0 + b _081B37D4 +_081B37A6: + cmp r1, #0 + bge _081B37BA + rsbs r0, r1, #0 + strb r0, [r6] + movs r0, #0 + mov r1, ip + strb r0, [r1] + adds r0, r2, r3 + strb r0, [r7] + b _081B37D2 +_081B37BA: + movs r0, #0 + strb r0, [r6] + mov r0, ip + strb r5, [r0] + cmp r4, #0x1f + ble _081B37CE + movs r0, #0x20 + subs r0, r0, r5 + strb r0, [r7] + b _081B37D2 +_081B37CE: + mov r1, r8 + strb r1, [r7] +_081B37D2: + movs r0, #1 +_081B37D4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B3778 + + thumb_func_start sub_081B37E0 +sub_081B37E0: @ 0x081B37E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + str r0, [sp, #0x28] + ldr r0, [sp, #0x54] + ldr r4, [sp, #0x58] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + mov sb, r2 + lsls r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp, #0x30] + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + lsrs r0, r3, #0x10 + str r0, [sp, #0x2c] + asrs r3, r3, #0x10 + 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_081B3778 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B389A + ldrb r2, [r5] + mov r1, sb + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldrb r0, [r6] + str r0, [sp] + mov r1, sl + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0 + mov r3, sb + bl sub_080025E0 + ldr r1, [sp, #0x30] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + adds r0, r7, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r6, [sp] + mov r1, r8 + add r2, sp, #0x24 + adds r3, r5, #0 + bl sub_081B3778 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B389A + add r0, sp, #0x24 + ldrb r2, [r0] + ldr r1, [sp, #0x2c] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + str r4, [sp, #4] + ldrb r0, [r5] + str r0, [sp, #8] + mov r0, sb + 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_080023F8 +_081B389A: + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B37E0 + + thumb_func_start sub_081B38AC +sub_081B38AC: @ 0x081B38AC + push {r4, lr} + ldr r4, _081B38FC + ldrb r2, [r0, #0xb] + lsls r3, r2, #4 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r4 + lsls r1, r1, #0x10 + asrs r1, r1, #0xd + ldrh r2, [r3, #0x24] + adds r2, r2, r1 + strh r2, [r3, #0x24] + ldrb r3, [r0, #0xa] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrh r3, [r2, #0x24] + adds r3, r3, r1 + strh r3, [r2, #0x24] + ldrb r3, [r0, #9] + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r4 + ldrh r3, [r2, #0x24] + adds r3, r3, r1 + strh r3, [r2, #0x24] + ldrb r2, [r0, #0xc] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r2, [r0, #0x24] + adds r2, r2, r1 + strh r2, [r0, #0x24] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B38FC: .4byte gUnknown_20205AC + thumb_func_end sub_081B38AC + + thumb_func_start sub_081B3900 +sub_081B3900: @ 0x081B3900 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081B3954 + adds r4, r1, r0 + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081B392E + ldr r2, _081B3958 + ldr r0, _081B395C + movs r1, #9 + ldrsb r1, [r0, r1] + lsls r1, r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + movs r2, #0x14 + ldrsh r1, [r4, r2] + bl sub_081B38AC +_081B392E: + movs r1, #0x16 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081B394C + ldr r2, _081B3958 + ldr r0, _081B395C + movs r1, #0xa + ldrsb r1, [r0, r1] + lsls r1, r1, #4 + ldr r0, [r2] + adds r0, r0, r1 + movs r2, #0x16 + ldrsh r1, [r4, r2] + bl sub_081B38AC +_081B394C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B3954: .4byte gUnknown_3005B68 +_081B3958: .4byte gUnknown_203CBA8 +_081B395C: .4byte gUnknown_203CB94 + thumb_func_end sub_081B3900 + + thumb_func_start sub_081B3960 +sub_081B3960: @ 0x081B3960 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081B39DC + adds r5, r1, r0 + movs r1, #0x14 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _081B39A0 + ldr r0, _081B39E0 + ldr r0, [r0] + ldrh r1, [r5, #0x10] + ldrh r2, [r5] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r3, #2 + ldrsh r2, [r5, r3] + movs r4, #4 + ldrsh r3, [r5, r4] + movs r6, #6 + ldrsh r4, [r5, r6] + str r4, [sp] + movs r6, #0x14 + ldrsh r4, [r5, r6] + str r4, [sp, #4] + bl sub_081B37E0 +_081B39A0: + movs r1, #0x16 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _081B39CE + ldr r0, _081B39E4 + ldr r0, [r0] + ldrh r1, [r5, #0x12] + ldrh r2, [r5, #8] + adds r1, r1, r2 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + 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, #4] + bl sub_081B37E0 +_081B39CE: + movs r0, #0 + bl sub_08199654 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B39DC: .4byte gUnknown_3005B68 +_081B39E0: .4byte gUnknown_203CBBC +_081B39E4: .4byte gUnknown_203CBC0 + thumb_func_end sub_081B3960 + + thumb_func_start sub_081B39E8 +sub_081B39E8: @ 0x081B39E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r7, r0, #3 + ldr r0, _081B3AE8 + mov r8, r0 + adds r6, r7, r0 + adds r0, r4, #0 + bl sub_081B3960 + adds r0, r4, #0 + bl sub_081B3900 + ldrh r1, [r6, #0x14] + ldrh r2, [r6, #0x10] + adds r1, r1, r2 + strh r1, [r6, #0x10] + ldrh r0, [r6, #0x16] + ldrh r3, [r6, #0x12] + adds r0, r0, r3 + strh r0, [r6, #0x12] + add r2, sp, #8 + ldrh r0, [r6] + adds r0, r0, r1 + strh r0, [r2] + adds r1, r2, #0 + ldrh r0, [r6, #0x12] + ldrh r3, [r6, #8] + adds r2, r0, r3 + strh r2, [r1, #2] + adds r0, r1, #0 + ldrh r0, [r0] + cmp r0, #0x21 + bls _081B3ADA + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x21 + bls _081B3ADA + movs r1, #0x14 + ldrsh r0, [r6, r1] + rsbs r0, r0, #0 + strh r0, [r6, #0x14] + movs r2, #0x16 + ldrsh r0, [r6, r2] + rsbs r0, r0, #0 + strh r0, [r6, #0x16] + bl sub_081B3C7C + ldr r4, _081B3AEC + ldrb r0, [r4, #9] + bl sub_081B0620 + ldrb r0, [r4, #0xa] + bl sub_081B0620 + movs r0, #9 + ldrsb r0, [r4, r0] + ldr r5, _081B3AF0 + ldr r1, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_0800365C + movs r0, #0xa + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_0800365C + ldr r0, _081B3AF4 + ldr r1, [r0] + ldrb r2, [r6] + ldrb r3, [r6, #2] + ldrb r0, [r6, #4] + str r0, [sp] + ldrb r0, [r6, #6] + str r0, [sp, #4] + movs r0, #0 + bl sub_08199954 + ldr r0, _081B3AF8 + ldr r1, [r0] + ldrb r2, [r6, #8] + ldrb r3, [r6, #0xa] + ldrb r0, [r6, #0xc] + str r0, [sp] + ldrb r0, [r6, #0xe] + str r0, [sp, #4] + movs r0, #0 + bl sub_08199954 + movs r0, #9 + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_08003774 + movs r0, #0xa + ldrsb r0, [r4, r0] + ldr r1, [r5] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_08003774 + mov r0, r8 + subs r0, #8 + adds r0, r7, r0 + ldr r1, _081B3AFC + str r1, [r0] +_081B3ADA: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B3AE8: .4byte gUnknown_3005B68 +_081B3AEC: .4byte gUnknown_203CB94 +_081B3AF0: .4byte gUnknown_203CBA8 +_081B3AF4: .4byte gUnknown_203CBBC +_081B3AF8: .4byte gUnknown_203CBC0 +_081B3AFC: .4byte sub_081B3B00 + thumb_func_end sub_081B39E8 + + thumb_func_start sub_081B3B00 +sub_081B3B00: @ 0x081B3B00 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081B3B70 + adds r4, r0, r1 + adds r0, r6, #0 + bl sub_081B3960 + adds r0, r6, #0 + bl sub_081B3900 + movs r1, #0x14 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081B3B84 + movs r2, #0x16 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _081B3B84 + ldr r5, _081B3B74 + movs r0, #9 + ldrsb r0, [r5, r0] + ldr r4, _081B3B78 + ldr r1, [r4] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_0800365C + movs r0, #0xa + ldrsb r0, [r5, r0] + ldr r1, [r4] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #8] + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + ldr r0, _081B3B7C + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, _081B3B80 + ldr r0, [r0] + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_081B3D1C + b _081B3BA8 + .align 2, 0 +_081B3B70: .4byte gUnknown_3005B68 +_081B3B74: .4byte gUnknown_203CB94 +_081B3B78: .4byte gUnknown_203CBA8 +_081B3B7C: .4byte gUnknown_203CBBC +_081B3B80: .4byte gUnknown_203CBC0 +_081B3B84: + ldrh r1, [r4, #0x14] + ldrh r0, [r4, #0x10] + adds r1, r1, r0 + strh r1, [r4, #0x10] + ldrh r0, [r4, #0x16] + ldrh r2, [r4, #0x12] + adds r0, r0, r2 + strh r0, [r4, #0x12] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + bne _081B3B9E + strh r1, [r4, #0x14] +_081B3B9E: + movs r1, #0x12 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081B3BA8 + strh r0, [r4, #0x16] +_081B3BA8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B3B00 + + thumb_func_start sub_081B3BB0 +sub_081B3BB0: @ 0x081B3BB0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + ldrb r3, [r0] + ldrb r2, [r1] + strb r2, [r0] + strb r3, [r1] + ldr r5, _081B3C78 + ldrb r2, [r0] + lsls r3, r2, #4 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r5 + ldrh r6, [r3, #0x20] + ldrh r2, [r3, #0x22] + mov r8, r2 + ldrh r2, [r3, #0x24] + mov sb, r2 + ldrh r2, [r3, #0x26] + mov sl, r2 + ldrb r4, [r1] + lsls r2, r4, #4 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrh r2, [r2, #0x20] + strh r2, [r3, #0x20] + ldrb r2, [r0] + lsls r3, r2, #4 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r5 + ldrb r4, [r1] + lsls r2, r4, #4 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrh r2, [r2, #0x22] + strh r2, [r3, #0x22] + ldrb r2, [r0] + lsls r3, r2, #4 + adds r3, r3, r2 + lsls r3, r3, #2 + adds r3, r3, r5 + ldrb r4, [r1] + lsls r2, r4, #4 + adds r2, r2, r4 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrh r2, [r2, #0x24] + strh r2, [r3, #0x24] + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r5 + ldrb r3, [r1] + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r0, [r0, #0x26] + strh r0, [r2, #0x26] + ldrb r2, [r1] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x20] + ldrb r2, [r1] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r2, r8 + strh r2, [r0, #0x22] + ldrb r2, [r1] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r2, sb + strh r2, [r0, #0x24] + ldrb r1, [r1] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, sl + strh r1, [r0, #0x26] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B3C78: .4byte gUnknown_20205AC + thumb_func_end sub_081B3BB0 + + thumb_func_start sub_081B3C7C +sub_081B3C7C: @ 0x081B3C7C + push {r4, r5, r6, lr} + sub sp, #8 + ldr r1, _081B3D10 + ldr r2, _081B3D14 + movs r3, #9 + ldrsb r3, [r2, r3] + lsls r0, r3, #4 + ldr r1, [r1] + adds r0, r1, r0 + str r0, [sp] + ldrb r2, [r2, #0xa] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r0, r2, #4 + adds r0, r1, r0 + str r0, [sp, #4] + movs r1, #0x64 + adds r4, r3, #0 + muls r4, r1, r4 + ldr r0, _081B3D18 + adds r4, r4, r0 + adds r5, r2, #0 + muls r5, r1, r5 + adds r5, r5, r0 + movs r0, #0x64 + bl sub_08000BC8 + 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_08000BF0 + ldr r0, [sp] + adds r0, #0xb + ldr r1, [sp, #4] + adds r1, #0xb + bl sub_081B3BB0 + ldr r0, [sp] + adds r0, #0xa + ldr r1, [sp, #4] + adds r1, #0xa + bl sub_081B3BB0 + ldr r0, [sp] + adds r0, #9 + ldr r1, [sp, #4] + adds r1, #9 + bl sub_081B3BB0 + ldr r0, [sp] + adds r0, #0xc + ldr r1, [sp, #4] + adds r1, #0xc + bl sub_081B3BB0 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B3D10: .4byte gUnknown_203CBA8 +_081B3D14: .4byte gUnknown_203CB94 +_081B3D18: .4byte gUnknown_2024190 + thumb_func_end sub_081B3C7C + + thumb_func_start sub_081B3D1C +sub_081B3D1C: @ 0x081B3D1C + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081B3D64 + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + ldr r4, _081B3D68 + movs r0, #0 + strb r0, [r4, #0xb] + ldrb r0, [r4, #9] + movs r1, #0 + bl sub_081B0C9C + ldrb r0, [r4, #0xa] + strb r0, [r4, #9] + ldrb r0, [r4, #0xa] + movs r1, #1 + bl sub_081B0C9C + movs r0, #0 + bl sub_081B2CD8 + ldr r1, _081B3D6C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B3D70 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B3D64: .4byte gUnknown_203CB90 +_081B3D68: .4byte gUnknown_203CB94 +_081B3D6C: .4byte gUnknown_3005B60 +_081B3D70: .4byte sub_081B1040 + thumb_func_end sub_081B3D1C + + thumb_func_start sub_081B3D74 +sub_081B3D74: @ 0x081B3D74 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B3DA8 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B3DAC + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #6 + bne _081B3DB0 + movs r0, #0xf + bl sub_081B2CD8 + b _081B3DB6 + .align 2, 0 +_081B3DA8: .4byte gUnknown_203CB90 +_081B3DAC: .4byte gUnknown_203CB94 +_081B3DB0: + movs r0, #0 + bl sub_081B2CD8 +_081B3DB6: + ldr r0, _081B3DCC + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B3DD0 + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B3DCC: .4byte gUnknown_3005B60 +_081B3DD0: .4byte sub_081B1040 + thumb_func_end sub_081B3D74 + + thumb_func_start sub_081B3DD4 +sub_081B3DD4: @ 0x081B3DD4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B3E24 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B3E28 + ldr r1, _081B3E2C + ldrb r1, [r1, #9] + movs r2, #8 + bl sub_081B3054 + movs r0, #1 + bl sub_081B2E34 + movs r0, #0x18 + bl sub_081B2CD8 + ldr r1, _081B3E30 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xff + strh r1, [r0, #8] + ldr r1, _081B3E34 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B3E24: .4byte gUnknown_203CB90 +_081B3E28: .4byte gUnknown_2024190 +_081B3E2C: .4byte gUnknown_203CB94 +_081B3E30: .4byte gUnknown_3005B60 +_081B3E34: .4byte sub_081B33D0 + thumb_func_end sub_081B3DD4 + + thumb_func_start sub_081B3E38 +sub_081B3E38: @ 0x081B3E38 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r0, _081B3E5C + ldr r1, [r0] + ldr r0, _081B3E60 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B3E5C: .4byte gUnknown_203CB90 +_081B3E60: .4byte sub_081B3E64 + thumb_func_end sub_081B3E38 + + thumb_func_start sub_081B3E64 +sub_081B3E64: @ 0x081B3E64 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B3E80 + ldr r2, _081B3E7C + movs r0, #2 + movs r1, #5 + bl sub_081AAA08 + b _081B3E88 + .align 2, 0 +_081B3E7C: .4byte sub_081B3E90 +_081B3E80: + ldr r1, _081B3E8C + movs r0, #2 + bl sub_081C47A0 +_081B3E88: + pop {r0} + bx r0 + .align 2, 0 +_081B3E8C: .4byte sub_081B3E90 + thumb_func_end sub_081B3E64 + + thumb_func_start sub_081B3E90 +sub_081B3E90: @ 0x081B3E90 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r6, _081B3EB8 + ldrh r0, [r6] + cmp r0, #0 + bne _081B3EC4 + ldr r3, _081B3EBC + ldrb r0, [r3, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r3, #0xb] + movs r1, #0x7f + str r1, [sp] + ldr r1, _081B3EC0 + str r1, [sp, #4] + ldr r1, [r3] + b _081B3EFA + .align 2, 0 +_081B3EB8: .4byte gUnknown_203CB48 +_081B3EBC: .4byte gUnknown_203CB94 +_081B3EC0: .4byte sub_081B339C +_081B3EC4: + ldr r4, _081B3F08 + ldr r5, _081B3F0C + movs r0, #9 + ldrsb r0, [r5, r0] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r7, _081B3F10 + adds r0, r0, r7 + movs r1, #0xc + bl sub_0806A058 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081B3F18 + ldrb r0, [r5, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r5, #0xb] + movs r1, #0x7f + str r1, [sp] + ldr r1, _081B3F14 + str r1, [sp, #4] + ldr r1, [r5] +_081B3EFA: + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 + b _081B3F60 + .align 2, 0 +_081B3F08: .4byte gUnknown_203CBC8 +_081B3F0C: .4byte gUnknown_203CB94 +_081B3F10: .4byte gUnknown_2024190 +_081B3F14: .4byte sub_081B3FF0 +_081B3F18: + ldrh r0, [r6] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B3F44 + ldrh r0, [r6] + movs r1, #1 + bl sub_080D62BC + movs r0, #9 + ldrsb r0, [r5, r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + ldrh r1, [r6] + bl sub_081B1A88 + bl sub_081B41CC + b _081B3F60 +_081B3F44: + ldrb r0, [r5, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r5, #0xb] + movs r1, #0x7f + str r1, [sp] + ldr r1, _081B3F6C + str r1, [sp, #4] + ldr r1, [r5] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 +_081B3F60: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B3F6C: .4byte sub_081B3F70 + thumb_func_end sub_081B3E90 + + thumb_func_start sub_081B3F70 +sub_081B3F70: @ 0x081B3F70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B3FD8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B3FCC + ldr r0, _081B3FDC + ldrh r4, [r0] + ldr r0, _081B3FE0 + mov r8, r0 + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _081B3FE4 + adds r0, r0, r5 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_081B1954 + mov r1, r8 + movs r0, #9 + ldrsb r0, [r1, r0] + muls r0, r6, r0 + adds r0, r0, r5 + adds r1, r4, #0 + bl sub_081B1A88 + adds r0, r4, #0 + movs r1, #1 + bl sub_080D62BC + ldr r1, _081B3FE8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B3FEC + str r1, [r0] +_081B3FCC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B3FD8: .4byte gUnknown_2037C74 +_081B3FDC: .4byte gUnknown_203CB48 +_081B3FE0: .4byte gUnknown_203CB94 +_081B3FE4: .4byte gUnknown_2024190 +_081B3FE8: .4byte gUnknown_3005B60 +_081B3FEC: .4byte sub_081B433C + thumb_func_end sub_081B3F70 + + thumb_func_start sub_081B3FF0 +sub_081B3FF0: @ 0x081B3FF0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B4030 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B4028 + ldr r0, _081B4034 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B4038 + adds r0, r0, r1 + ldr r1, _081B403C + ldrh r1, [r1] + movs r2, #1 + bl sub_081B19EC + ldr r1, _081B4040 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4044 + str r1, [r0] +_081B4028: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4030: .4byte gUnknown_2037C74 +_081B4034: .4byte gUnknown_203CB94 +_081B4038: .4byte gUnknown_2024190 +_081B403C: .4byte gUnknown_203CBC8 +_081B4040: .4byte gUnknown_3005B60 +_081B4044: .4byte sub_081B4048 + thumb_func_end sub_081B3FF0 + + thumb_func_start sub_081B4048 +sub_081B4048: @ 0x081B4048 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B406C + bl sub_081B2FDC + ldr r0, _081B4074 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4078 + str r0, [r1] +_081B406C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4074: .4byte gUnknown_3005B60 +_081B4078: .4byte sub_081B407C + thumb_func_end sub_081B4048 + + thumb_func_start sub_081B407C +sub_081B407C: @ 0x081B407C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B40A2 + cmp r1, #0 + bgt _081B409C + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B4178 + b _081B418C +_081B409C: + cmp r1, #1 + beq _081B417E + b _081B418C +_081B40A2: + ldr r5, _081B40E4 + ldrh r0, [r5] + movs r1, #1 + bl sub_080D62BC + ldr r6, _081B40E8 + ldrh r0, [r6] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B40F8 + ldrh r0, [r5] + movs r1, #1 + bl sub_080D6140 + ldrh r0, [r6] + bl sub_081B1B18 + ldr r0, _081B40EC + movs r1, #0 + bl sub_081B182C + ldr r1, _081B40F0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B40F4 + str r1, [r0] + b _081B418C + .align 2, 0 +_081B40E4: .4byte gUnknown_203CB48 +_081B40E8: .4byte gUnknown_203CBC8 +_081B40EC: .4byte gUnknown_2021C7C +_081B40F0: .4byte gUnknown_3005B60 +_081B40F4: .4byte sub_081B18EC +_081B40F8: + ldrh r0, [r5] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B4138 + ldr r0, _081B4128 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B412C + adds r0, r0, r1 + ldrh r1, [r5] + bl sub_081B1A88 + ldr r1, _081B4130 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4134 + str r1, [r0] + b _081B418C + .align 2, 0 +_081B4128: .4byte gUnknown_203CB94 +_081B412C: .4byte gUnknown_2024190 +_081B4130: .4byte gUnknown_3005B60 +_081B4134: .4byte sub_081B419C +_081B4138: + ldr r0, _081B4168 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B416C + adds r0, r0, r1 + ldrh r1, [r5] + bl sub_081B1A88 + ldrh r0, [r5] + ldrh r1, [r6] + movs r2, #1 + bl sub_081B1A38 + ldr r1, _081B4170 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4174 + str r1, [r0] + b _081B418C + .align 2, 0 +_081B4168: .4byte gUnknown_203CB94 +_081B416C: .4byte gUnknown_2024190 +_081B4170: .4byte gUnknown_3005B60 +_081B4174: .4byte sub_081B433C +_081B4178: + movs r0, #5 + bl sub_080A306C +_081B417E: + ldr r0, _081B4194 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4198 + str r0, [r1] +_081B418C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B4194: .4byte gUnknown_3005B60 +_081B4198: .4byte sub_081B18EC + thumb_func_end sub_081B407C + + thumb_func_start sub_081B419C +sub_081B419C: @ 0x081B419C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B41BC + ldr r0, _081B41C4 + ldr r1, [r0] + ldr r0, _081B41C8 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 +_081B41BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B41C4: .4byte gUnknown_203CB90 +_081B41C8: .4byte sub_081B41CC + thumb_func_end sub_081B419C + + thumb_func_start sub_081B41CC +sub_081B41CC: @ 0x081B41CC + push {lr} + ldr r0, _081B4204 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B4208 + adds r0, r0, r1 + movs r1, #0x40 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B420C + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _081B4210 + adds r2, r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + ldr r2, _081B4214 + movs r0, #4 + movs r3, #3 + bl sub_0811AA5C + pop {r0} + bx r0 + .align 2, 0 +_081B4204: .4byte gUnknown_203CB94 +_081B4208: .4byte gUnknown_2024190 +_081B420C: .4byte gUnknown_3005AEC +_081B4210: .4byte 0x00002BE0 +_081B4214: .4byte sub_081B4218 + thumb_func_end sub_081B41CC + + thumb_func_start sub_081B4218 +sub_081B4218: @ 0x081B4218 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r6, _081B4284 + movs r1, #9 + ldrsb r1, [r6, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B4288 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _081B428C + ldrh r7, [r0] + cmp r7, #0 + bne _081B4298 + adds r0, r5, #0 + bl sub_080D3F04 + ldr r4, _081B4290 + adds r0, r5, #0 + movs r1, #0xc + adds r2, r4, #0 + bl sub_0806A774 + ldrh r0, [r4] + movs r1, #1 + bl sub_080D62BC + mov r0, r8 + movs r1, #1 + bl sub_080D6140 + ldrb r0, [r6, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r6, #0xb] + str r7, [sp] + ldr r1, _081B4294 + str r1, [sp, #4] + ldr r1, [r6] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 + b _081B42B4 + .align 2, 0 +_081B4284: .4byte gUnknown_203CB94 +_081B4288: .4byte gUnknown_2024190 +_081B428C: .4byte gUnknown_2037290 +_081B4290: .4byte gUnknown_203CBC8 +_081B4294: .4byte sub_081B339C +_081B4298: + ldrb r0, [r6, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r6, #0xb] + movs r1, #0x7f + str r1, [sp] + ldr r1, _081B42C0 + str r1, [sp, #4] + ldr r1, [r6] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 +_081B42B4: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B42C0: .4byte sub_081B42C4 + thumb_func_end sub_081B4218 + + thumb_func_start sub_081B42C4 +sub_081B42C4: @ 0x081B42C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B42FC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B432A + ldr r1, _081B4300 + ldrh r0, [r1] + cmp r0, #0 + bne _081B4310 + ldr r0, _081B4304 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B4308 + adds r0, r0, r1 + ldr r1, _081B430C + ldrh r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_081B1954 + b _081B431C + .align 2, 0 +_081B42FC: .4byte gUnknown_2037C74 +_081B4300: .4byte gUnknown_203CBC8 +_081B4304: .4byte gUnknown_203CB94 +_081B4308: .4byte gUnknown_2024190 +_081B430C: .4byte gUnknown_203CB48 +_081B4310: + ldr r0, _081B4330 + ldrh r0, [r0] + ldrh r1, [r1] + movs r2, #0 + bl sub_081B1A38 +_081B431C: + ldr r0, _081B4334 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4338 + str r0, [r1] +_081B432A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4330: .4byte gUnknown_203CB48 +_081B4334: .4byte gUnknown_3005B60 +_081B4338: .4byte sub_081B433C + thumb_func_end sub_081B42C4 + + thumb_func_start sub_081B433C +sub_081B433C: @ 0x081B433C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _081B4398 + movs r1, #9 + ldrsb r1, [r4, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B439C + adds r6, r1, r0 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B43BC + ldr r5, _081B43A0 + movs r0, #9 + ldrsb r0, [r4, r0] + lsls r0, r0, #4 + ldr r1, [r5] + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_081B5934 + ldrb r1, [r4, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xc + bne _081B43B6 + adds r0, r6, #0 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + beq _081B43A4 + movs r0, #9 + ldrsb r0, [r4, r0] + lsls r0, r0, #4 + ldr r1, [r5] + adds r1, r1, r0 + movs r0, #0xb + movs r2, #1 + bl sub_081B2C3C + b _081B43B6 + .align 2, 0 +_081B4398: .4byte gUnknown_203CB94 +_081B439C: .4byte gUnknown_2024190 +_081B43A0: .4byte gUnknown_203CBA8 +_081B43A4: + movs r0, #9 + ldrsb r0, [r4, r0] + lsls r0, r0, #4 + ldr r1, [r5] + adds r1, r1, r0 + movs r0, #0xc + movs r2, #1 + bl sub_081B2C3C +_081B43B6: + adds r0, r7, #0 + bl sub_081B18EC +_081B43BC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B433C + + thumb_func_start sub_081B43C4 +sub_081B43C4: @ 0x081B43C4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B441C + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B4420 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B4424 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081B1AD0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081B4428 + cmp r0, #1 + beq _081B444C + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #1 + bl sub_081B19A0 + b _081B445A + .align 2, 0 +_081B441C: .4byte gUnknown_203CB94 +_081B4420: .4byte gUnknown_2024190 +_081B4424: .4byte gUnknown_203CB90 +_081B4428: + ldr r1, _081B4440 + adds r0, r5, #0 + bl sub_081B1814 + ldr r4, _081B4444 + ldr r1, _081B4448 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + b _081B4454 + .align 2, 0 +_081B4440: .4byte gUnknown_2021C40 +_081B4444: .4byte gUnknown_2021C7C +_081B4448: .4byte gUnknown_85C9CAD +_081B444C: + adds r0, r6, #0 + bl sub_081B1B18 + ldr r0, _081B4474 +_081B4454: + movs r1, #1 + bl sub_081B182C +_081B445A: + movs r0, #2 + bl sub_08199654 + ldr r0, _081B4478 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B447C + str r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4474: .4byte gUnknown_2021C7C +_081B4478: .4byte gUnknown_3005B60 +_081B447C: .4byte sub_081B433C + thumb_func_end sub_081B43C4 + + thumb_func_start sub_081B4480 +sub_081B4480: @ 0x081B4480 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081B44E4 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B44E8 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B44EC + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + cmp r5, #0 + bne _081B4504 + ldr r1, _081B44F0 + adds r0, r7, #0 + bl sub_081B1814 + ldr r4, _081B44F4 + ldr r1, _081B44F8 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B44FC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4500 + b _081B452A + .align 2, 0 +_081B44E4: .4byte gUnknown_203CB94 +_081B44E8: .4byte gUnknown_2024190 +_081B44EC: .4byte gUnknown_203CB90 +_081B44F0: .4byte gUnknown_2021C40 +_081B44F4: .4byte gUnknown_2021C7C +_081B44F8: .4byte gUnknown_85C9CAD +_081B44FC: .4byte gUnknown_3005B60 +_081B4500: .4byte sub_081B433C +_081B4504: + ldr r1, _081B4534 + adds r0, r5, #0 + bl sub_080D5EC8 + ldr r4, _081B4538 + ldr r1, _081B453C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4540 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4544 +_081B452A: + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4534: .4byte gUnknown_2021C40 +_081B4538: .4byte gUnknown_2021C7C +_081B453C: .4byte gUnknown_85CA007 +_081B4540: .4byte gUnknown_3005B60 +_081B4544: .4byte sub_081B4548 + thumb_func_end sub_081B4480 + + thumb_func_start sub_081B4548 +sub_081B4548: @ 0x081B4548 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B456C + bl sub_081B2FDC + ldr r0, _081B4574 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4578 + str r0, [r1] +_081B456C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4574: .4byte gUnknown_3005B60 +_081B4578: .4byte sub_081B457C + thumb_func_end sub_081B4548 + + thumb_func_start sub_081B457C +sub_081B457C: @ 0x081B457C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B45AC + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B45B0 + adds r4, r1, r0 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B45BA + cmp r1, #0 + bgt _081B45B4 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B4604 + b _081B4618 + .align 2, 0 +_081B45AC: .4byte gUnknown_203CB94 +_081B45B0: .4byte gUnknown_2024190 +_081B45B4: + cmp r1, #1 + beq _081B460A + b _081B4618 +_081B45BA: + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081B45F0 + bl sub_080D5EC8 + ldr r4, _081B45F4 + ldr r1, _081B45F8 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_081B182C + ldr r1, _081B45FC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4600 + str r1, [r0] + b _081B4618 + .align 2, 0 +_081B45F0: .4byte gUnknown_2021C40 +_081B45F4: .4byte gUnknown_2021C7C +_081B45F8: .4byte gUnknown_85CA018 +_081B45FC: .4byte gUnknown_3005B60 +_081B4600: .4byte sub_081B4628 +_081B4604: + movs r0, #5 + bl sub_080A306C +_081B460A: + ldr r0, _081B4620 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4624 + str r0, [r1] +_081B4618: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B4620: .4byte gUnknown_3005B60 +_081B4624: .4byte sub_081B18EC + thumb_func_end sub_081B457C + + thumb_func_start sub_081B4628 +sub_081B4628: @ 0x081B4628 + push {r4, r5, r6, r7, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r6, _081B4694 + movs r1, #9 + ldrsb r1, [r6, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B4698 + adds r5, r1, r0 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B468C + movs r1, #0 + mov r0, sp + strh r1, [r0] + adds r0, r5, #0 + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + ldr r4, _081B469C + movs r0, #9 + ldrsb r0, [r6, r0] + lsls r0, r0, #4 + ldr r1, [r4] + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_081B5934 + movs r0, #9 + ldrsb r0, [r6, r0] + lsls r0, r0, #4 + ldr r1, [r4] + adds r1, r1, r0 + movs r0, #0xc + movs r2, #1 + bl sub_081B2C3C + ldr r1, _081B46A0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B46A4 + str r1, [r0] +_081B468C: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4694: .4byte gUnknown_203CB94 +_081B4698: .4byte gUnknown_2024190 +_081B469C: .4byte gUnknown_203CBA8 +_081B46A0: .4byte gUnknown_3005B60 +_081B46A4: .4byte sub_081B18EC + thumb_func_end sub_081B4628 + + thumb_func_start sub_081B46A8 +sub_081B46A8: @ 0x081B46A8 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B46F8 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B46FC + ldr r1, _081B4700 + ldrb r1, [r1, #9] + movs r2, #9 + bl sub_081B3054 + movs r0, #2 + bl sub_081B2E34 + movs r0, #0x19 + bl sub_081B2CD8 + ldr r1, _081B4704 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xff + strh r1, [r0, #8] + ldr r1, _081B4708 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B46F8: .4byte gUnknown_203CB90 +_081B46FC: .4byte gUnknown_2024190 +_081B4700: .4byte gUnknown_203CB94 +_081B4704: .4byte gUnknown_3005B60 +_081B4708: .4byte sub_081B33D0 + thumb_func_end sub_081B46A8 + + thumb_func_start sub_081B470C +sub_081B470C: @ 0x081B470C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r0, _081B4730 + ldr r1, [r0] + ldr r0, _081B4734 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4730: .4byte gUnknown_203CB90 +_081B4734: .4byte sub_081B4738 + thumb_func_end sub_081B470C + + thumb_func_start sub_081B4738 +sub_081B4738: @ 0x081B4738 + push {lr} + ldr r0, _081B476C + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B4770 + adds r0, r0, r1 + movs r1, #0x40 + bl sub_0806A058 + ldr r2, _081B4774 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081B4778 + adds r1, r1, r0 + ldr r0, [r2] + adds r0, r0, r1 + ldr r1, _081B477C + movs r2, #1 + bl sub_08121568 + pop {r0} + bx r0 + .align 2, 0 +_081B476C: .4byte gUnknown_203CB94 +_081B4770: .4byte gUnknown_2024190 +_081B4774: .4byte gUnknown_3005AEC +_081B4778: .4byte 0x00002BE0 +_081B477C: .4byte sub_081B4780 + thumb_func_end sub_081B4738 + + thumb_func_start sub_081B4780 +sub_081B4780: @ 0x081B4780 + push {lr} + sub sp, #0xc + ldr r2, _081B47B4 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #8] + ldr r3, _081B47B8 + ldrb r0, [r3, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r3, #0xb] + movs r1, #0x15 + str r1, [sp] + ldr r1, _081B47BC + str r1, [sp, #4] + ldr r1, [r3] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B47B4: .4byte gUnknown_2037C74 +_081B47B8: .4byte gUnknown_203CB94 +_081B47BC: .4byte sub_081B339C + thumb_func_end sub_081B4780 + + thumb_func_start sub_081B47C0 +sub_081B47C0: @ 0x081B47C0 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r5, _081B47FC + ldr r0, [r5] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, [r5] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, _081B4800 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4804 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4808 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B47FC: .4byte gUnknown_203CB90 +_081B4800: .4byte gUnknown_85C9BF1 +_081B4804: .4byte gUnknown_3005B60 +_081B4808: .4byte sub_081B480C + thumb_func_end sub_081B47C0 + + thumb_func_start sub_081B480C +sub_081B480C: @ 0x081B480C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B4830 + bl sub_081B2FDC + ldr r0, _081B4838 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B483C + str r0, [r1] +_081B4830: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4838: .4byte gUnknown_3005B60 +_081B483C: .4byte sub_081B4840 + thumb_func_end sub_081B480C + + thumb_func_start sub_081B4840 +sub_081B4840: @ 0x081B4840 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B4866 + cmp r1, #0 + bgt _081B4860 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B48D0 + b _081B48EC +_081B4860: + cmp r1, #1 + beq _081B48D6 + b _081B48EC +_081B4866: + ldr r0, _081B4898 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B489C + adds r0, r0, r1 + bl sub_080D3F84 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081B48AC + ldr r0, _081B48A0 + movs r1, #0 + bl sub_081B182C + ldr r1, _081B48A4 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B48A8 + b _081B48EA + .align 2, 0 +_081B4898: .4byte gUnknown_203CB94 +_081B489C: .4byte gUnknown_2024190 +_081B48A0: .4byte gUnknown_85C9C0A +_081B48A4: .4byte gUnknown_3005B60 +_081B48A8: .4byte sub_081B433C +_081B48AC: + ldr r0, _081B48C4 + movs r1, #0 + bl sub_081B182C + ldr r1, _081B48C8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B48CC + b _081B48EA + .align 2, 0 +_081B48C4: .4byte gUnknown_85C9C20 +_081B48C8: .4byte gUnknown_3005B60 +_081B48CC: .4byte sub_081B18EC +_081B48D0: + movs r0, #5 + bl sub_080A306C +_081B48D6: + ldr r0, _081B48F4 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B48F8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B48FC +_081B48EA: + str r1, [r0] +_081B48EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B48F4: .4byte gUnknown_85C9C39 +_081B48F8: .4byte gUnknown_3005B60 +_081B48FC: .4byte sub_081B4900 + thumb_func_end sub_081B4840 + + thumb_func_start sub_081B4900 +sub_081B4900: @ 0x081B4900 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B4924 + bl sub_081B2FDC + ldr r0, _081B492C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4930 + str r0, [r1] +_081B4924: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B492C: .4byte gUnknown_3005B60 +_081B4930: .4byte sub_081B4934 + thumb_func_end sub_081B4900 + + thumb_func_start sub_081B4934 +sub_081B4934: @ 0x081B4934 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B495E + cmp r1, #0 + bgt _081B4958 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B49F0 + b _081B4A04 +_081B4958: + cmp r1, #1 + beq _081B49F6 + b _081B4A04 +_081B495E: + ldr r0, _081B49B0 + mov r8, r0 + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r7, #0x64 + muls r0, r7, r0 + ldr r6, _081B49B4 + adds r0, r0, r6 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B49C4 + mov r1, r8 + movs r0, #9 + ldrsb r0, [r1, r0] + muls r0, r7, r0 + adds r0, r0, r6 + bl sub_080D3F04 + ldr r0, _081B49B8 + movs r1, #0 + bl sub_081B182C + ldr r1, _081B49BC + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B49C0 + str r1, [r0] + b _081B4A04 + .align 2, 0 +_081B49B0: .4byte gUnknown_203CB94 +_081B49B4: .4byte gUnknown_2024190 +_081B49B8: .4byte gUnknown_85C9CDA +_081B49BC: .4byte gUnknown_3005B60 +_081B49C0: .4byte sub_081B433C +_081B49C4: + adds r0, r4, #0 + bl sub_081B1B18 + ldr r0, _081B49E4 + movs r1, #0 + bl sub_081B182C + ldr r1, _081B49E8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B49EC + str r1, [r0] + b _081B4A04 + .align 2, 0 +_081B49E4: .4byte gUnknown_2021C7C +_081B49E8: .4byte gUnknown_3005B60 +_081B49EC: .4byte sub_081B18EC +_081B49F0: + movs r0, #5 + bl sub_080A306C +_081B49F6: + ldr r0, _081B4A10 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4A14 + str r0, [r1] +_081B4A04: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4A10: .4byte gUnknown_3005B60 +_081B4A14: .4byte sub_081B18EC + thumb_func_end sub_081B4934 + + thumb_func_start sub_081B4A18 +sub_081B4A18: @ 0x081B4A18 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r5, _081B4A78 + movs r1, #9 + ldrsb r1, [r5, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r6, _081B4A7C + adds r7, r0, r6 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B4A80 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldrb r4, [r5, #9] + adds r0, r7, #0 + bl sub_081B31DC + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081B3054 + ldrb r1, [r5, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xc + beq _081B4A84 + movs r0, #0 + bl sub_081B2E34 + movs r0, #0x15 + bl sub_081B2CD8 + b _081B4AA2 + .align 2, 0 +_081B4A78: .4byte gUnknown_203CB94 +_081B4A7C: .4byte gUnknown_2024190 +_081B4A80: .4byte gUnknown_203CB90 +_081B4A84: + movs r0, #1 + bl sub_081B2E34 + adds r0, r7, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081B4AC0 + bl sub_080D5EC8 + movs r0, #0x1a + bl sub_081B2CD8 +_081B4AA2: + ldr r1, _081B4AC4 + mov r2, r8 + lsls r0, r2, #2 + add r0, r8 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0xff + strh r1, [r0, #8] + ldr r1, _081B4AC8 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4AC0: .4byte gUnknown_2021C54 +_081B4AC4: .4byte gUnknown_3005B60 +_081B4AC8: .4byte sub_081B33D0 + thumb_func_end sub_081B4A18 + + thumb_func_start sub_081B4ACC +sub_081B4ACC: @ 0x081B4ACC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r5, _081B4AF8 + ldr r0, [r5] + adds r0, #0xc + bl sub_081B2CB0 + bl sub_081B871C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B4AFC + adds r0, r4, #0 + bl sub_081B0F90 + b _081B4B1A + .align 2, 0 +_081B4AF8: .4byte gUnknown_203CB90 +_081B4AFC: + ldr r0, [r5] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B4B20 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4B24 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4B28 + str r1, [r0] +_081B4B1A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B4B20: .4byte gUnknown_2021C7C +_081B4B24: .4byte gUnknown_3005B60 +_081B4B28: .4byte sub_081B18EC + thumb_func_end sub_081B4ACC + + thumb_func_start sub_081B4B2C +sub_081B4B2C: @ 0x081B4B2C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r4, _081B4BB4 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + bl sub_081B84D0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + cmp r5, r6 + bhs _081B4BD6 + ldr r2, _081B4BB8 + ldr r1, _081B4BBC + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + mov r8, r0 +_081B4B66: + ldr r0, _081B4BC0 + adds r4, r5, r0 + ldrb r0, [r4] + cmp r0, #0 + bne _081B4BCC + movs r0, #5 + str r2, [sp] + bl sub_080A306C + ldr r2, [sp] + ldrb r0, [r2, #9] + adds r0, #1 + strb r0, [r4] + adds r0, r5, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B4BC4 + ldrb r2, [r2, #9] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r2, r2, #4 + ldr r1, [r1] + adds r1, r1, r2 + movs r2, #1 + bl sub_081B2C3C + subs r0, r6, #1 + cmp r5, r0 + bne _081B4BA4 + bl sub_081B4C28 +_081B4BA4: + movs r0, #0 + bl sub_081B2CD8 + ldr r0, _081B4BC8 + mov r1, r8 + str r0, [r1] + b _081B4C08 + .align 2, 0 +_081B4BB4: .4byte gUnknown_203CB90 +_081B4BB8: .4byte gUnknown_203CB94 +_081B4BBC: .4byte gUnknown_3005B60 +_081B4BC0: .4byte gUnknown_203CBC4 +_081B4BC4: .4byte gUnknown_203CBA8 +_081B4BC8: .4byte sub_081B1040 +_081B4BCC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, r6 + blo _081B4B66 +_081B4BD6: + ldr r0, _081B4C14 + adds r1, r6, #0 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r4, _081B4C18 + ldr r1, _081B4C1C + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #0x20 + bl sub_080A306C + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4C20 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4C24 + str r1, [r0] +_081B4C08: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4C14: .4byte gUnknown_2021C40 +_081B4C18: .4byte gUnknown_2021C7C +_081B4C1C: .4byte gUnknown_85C9BD5 +_081B4C20: .4byte gUnknown_3005B60 +_081B4C24: .4byte sub_081B18EC + thumb_func_end sub_081B4B2C + + thumb_func_start sub_081B4C28 +sub_081B4C28: @ 0x081B4C28 + push {r4, lr} + ldr r4, _081B4C44 + ldrb r0, [r4, #9] + movs r1, #0 + bl sub_081B0C9C + movs r0, #6 + strb r0, [r4, #9] + movs r1, #1 + bl sub_081B0C9C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B4C44: .4byte gUnknown_203CB94 + thumb_func_end sub_081B4C28 + + thumb_func_start sub_081B4C48 +sub_081B4C48: @ 0x081B4C48 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #5 + bl sub_080A306C + ldr r4, _081B4CB4 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + bl sub_081B84D0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _081B4CCA + ldr r6, _081B4CB8 + subs r2, r5, #1 + adds r7, r6, #0 + ldr r3, _081B4CBC +_081B4C82: + adds r0, r4, r6 + ldrb r1, [r0] + movs r0, #9 + ldrsb r0, [r3, r0] + adds r0, #1 + cmp r1, r0 + bne _081B4CC0 + adds r0, r4, #0 + adds r4, r2, #0 + cmp r0, r4 + bge _081B4CAC + adds r3, r7, #0 +_081B4C9A: + adds r2, r0, r3 + adds r1, r0, #1 + adds r0, r1, r3 + ldrb r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r0, r1, #0x18 + cmp r0, r4 + blt _081B4C9A +_081B4CAC: + adds r1, r0, r6 + movs r0, #0 + strb r0, [r1] + b _081B4CCA + .align 2, 0 +_081B4CB4: .4byte gUnknown_203CB90 +_081B4CB8: .4byte gUnknown_203CBC4 +_081B4CBC: .4byte gUnknown_203CB94 +_081B4CC0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blo _081B4C82 +_081B4CCA: + ldr r6, _081B4D38 + ldr r0, _081B4D3C + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #4 + ldr r1, [r6] + adds r1, r1, r0 + movs r0, #1 + movs r2, #1 + bl sub_081B2C3C + movs r4, #0 + subs r5, #1 + mov r0, r8 + lsls r7, r0, #2 + cmp r4, r5 + bge _081B4D18 +_081B4CEE: + ldr r0, _081B4D40 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _081B4D0E + adds r0, r4, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r1] + lsls r2, r2, #4 + subs r2, #0x10 + ldr r1, [r6] + adds r1, r1, r2 + movs r2, #1 + bl sub_081B2C3C +_081B4D0E: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r5 + blt _081B4CEE +_081B4D18: + movs r0, #0 + bl sub_081B2CD8 + ldr r0, _081B4D44 + mov r2, r8 + adds r1, r7, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B4D48 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4D38: .4byte gUnknown_203CBA8 +_081B4D3C: .4byte gUnknown_203CB94 +_081B4D40: .4byte gUnknown_203CBC4 +_081B4D44: .4byte gUnknown_3005B60 +_081B4D48: .4byte sub_081B1040 + thumb_func_end sub_081B4C48 + + thumb_func_start sub_081B4D4C +sub_081B4D4C: @ 0x081B4D4C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B0F90 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B4D4C + + thumb_func_start sub_081B4D68 +sub_081B4D68: @ 0x081B4D68 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B4DF4 + mov sb, r0 + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r4, _081B4DF8 + adds r0, r0, r4 + movs r1, #0x41 + bl sub_0806A058 + adds r6, r0, #0 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + mov r1, sb + movs r0, #9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r1, sb + movs r0, #9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r4 + movs r1, #0x50 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800F29C + ldr r0, [r0] + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_0807A340 + cmp r0, #1 + beq _081B4DFC + cmp r0, #2 + beq _081B4E10 + movs r0, #5 + bl sub_080A306C + adds r0, r7, #0 + bl sub_081B0F90 + b _081B4E50 + .align 2, 0 +_081B4DF4: .4byte gUnknown_203CB94 +_081B4DF8: .4byte gUnknown_2024190 +_081B4DFC: + ldr r0, _081B4E08 + ldr r1, _081B4E0C + bl sub_08008BCC + b _081B4E18 + .align 2, 0 +_081B4E08: .4byte gUnknown_2021C7C +_081B4E0C: .4byte gUnknown_85CA2B4 +_081B4E10: + ldr r0, _081B4E5C + ldr r1, _081B4E60 + bl sub_08008BCC +_081B4E18: + movs r0, #0x20 + bl sub_080A306C + ldr r4, _081B4E64 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r4, _081B4E5C + ldr r1, _081B4E68 + adds r0, r4, #0 + bl sub_080088D8 + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4E6C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4E70 + str r1, [r0] +_081B4E50: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B4E5C: .4byte gUnknown_2021C7C +_081B4E60: .4byte gUnknown_85CA2CC +_081B4E64: .4byte gUnknown_203CB90 +_081B4E68: .4byte gUnknown_85CA273 +_081B4E6C: .4byte gUnknown_3005B60 +_081B4E70: .4byte sub_081B18EC + thumb_func_end sub_081B4D68 + + thumb_func_start sub_081B4E74 +sub_081B4E74: @ 0x081B4E74 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B4F3C + mov r8, r0 + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r6, #0x64 + muls r0, r6, r0 + ldr r4, _081B4F40 + adds r0, r0, r4 + movs r1, #0x41 + bl sub_0806A058 + mov sb, r0 + mov r1, sb + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + mov r1, r8 + movs r0, #9 + ldrsb r0, [r1, r0] + muls r0, r6, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r1, r8 + movs r0, #9 + ldrsb r0, [r1, r0] + muls r0, r6, r0 + adds r0, r0, r4 + movs r1, #0x50 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_0800F29C + ldr r0, [r0] + ldr r1, _081B4F44 + ldr r1, [r1] + ldr r2, _081B4F48 + ldrh r3, [r2] + ldr r2, _081B4F4C + ldrb r2, [r2] + str r2, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + mov r2, sb + bl sub_0807A250 + cmp r0, #0 + beq _081B4F68 + ldr r5, _081B4F50 + ldr r1, _081B4F54 + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_08008BCC + movs r0, #0x20 + bl sub_080A306C + ldr r4, _081B4F58 + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r1, _081B4F5C + adds r0, r5, #0 + bl sub_080088D8 + adds r0, r5, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B4F60 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B4F64 + str r1, [r0] + b _081B4F74 + .align 2, 0 +_081B4F3C: .4byte gUnknown_203CB94 +_081B4F40: .4byte gUnknown_2024190 +_081B4F44: .4byte gUnknown_20228EC +_081B4F48: .4byte gUnknown_20228F0 +_081B4F4C: .4byte gUnknown_20228F2 +_081B4F50: .4byte gUnknown_2021C7C +_081B4F54: .4byte gUnknown_85E16C4 +_081B4F58: .4byte gUnknown_203CB90 +_081B4F5C: .4byte gUnknown_85CA273 +_081B4F60: .4byte gUnknown_3005B60 +_081B4F64: .4byte sub_081B18EC +_081B4F68: + movs r0, #5 + bl sub_080A306C + adds r0, r7, #0 + bl sub_081B0F90 +_081B4F74: + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B4E74 + + thumb_func_start sub_081B4F84 +sub_081B4F84: @ 0x081B4F84 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081B4FBC + ldr r0, [r4] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r4] + adds r0, #0xd + bl sub_081B2CB0 + ldr r0, _081B4FC0 + ldr r1, _081B4FC4 + ldrb r1, [r1, #9] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_0807A388 + cmp r0, #2 + beq _081B4FE0 + cmp r0, #2 + bgt _081B4FC8 + cmp r0, #1 + beq _081B4FCE + b _081B5008 + .align 2, 0 +_081B4FBC: .4byte gUnknown_203CB90 +_081B4FC0: .4byte gUnknown_2024190 +_081B4FC4: .4byte gUnknown_203CB94 +_081B4FC8: + cmp r0, #3 + beq _081B4FF4 + b _081B5008 +_081B4FCE: + ldr r0, _081B4FD8 + ldr r1, _081B4FDC + bl sub_08008BCC + b _081B5060 + .align 2, 0 +_081B4FD8: .4byte gUnknown_2021C7C +_081B4FDC: .4byte gUnknown_85CA294 +_081B4FE0: + ldr r0, _081B4FEC + ldr r1, _081B4FF0 + bl sub_08008BCC + b _081B5060 + .align 2, 0 +_081B4FEC: .4byte gUnknown_2021C7C +_081B4FF0: .4byte gUnknown_85CA2B4 +_081B4FF4: + ldr r0, _081B5000 + ldr r1, _081B5004 + bl sub_08008BCC + b _081B5060 + .align 2, 0 +_081B5000: .4byte gUnknown_2021C7C +_081B5004: .4byte gUnknown_85CA2CC +_081B5008: + movs r0, #5 + bl sub_080A306C + ldr r0, _081B5044 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B5048 + adds r0, r0, r1 + ldr r1, _081B504C + bl sub_081B1814 + ldr r4, _081B5050 + ldr r1, _081B5054 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B5058 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B505C + b _081B5084 + .align 2, 0 +_081B5044: .4byte gUnknown_203CB94 +_081B5048: .4byte gUnknown_2024190 +_081B504C: .4byte gUnknown_2021C40 +_081B5050: .4byte gUnknown_2021C7C +_081B5054: .4byte gUnknown_85CA276 +_081B5058: .4byte gUnknown_3005B60 +_081B505C: .4byte sub_081B509C +_081B5060: + movs r0, #0x20 + bl sub_080A306C + ldr r4, _081B508C + ldr r1, _081B5090 + adds r0, r4, #0 + bl sub_080088D8 + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B5094 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B5098 +_081B5084: + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B508C: .4byte gUnknown_2021C7C +_081B5090: .4byte gUnknown_85CA273 +_081B5094: .4byte gUnknown_3005B60 +_081B5098: .4byte sub_081B18EC + thumb_func_end sub_081B4F84 + + thumb_func_start sub_081B509C +sub_081B509C: @ 0x081B509C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B50C0 + bl sub_081B2FDC + ldr r0, _081B50C8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B50CC + str r0, [r1] +_081B50C0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B50C8: .4byte gUnknown_3005B60 +_081B50CC: .4byte sub_081B50D0 + thumb_func_end sub_081B509C + + thumb_func_start sub_081B50D0 +sub_081B50D0: @ 0x081B50D0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B50F6 + cmp r1, #0 + bgt _081B50F0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B50FE + b _081B510A +_081B50F0: + cmp r1, #1 + beq _081B5104 + b _081B510A +_081B50F6: + adds r0, r4, #0 + bl sub_081B0F90 + b _081B510A +_081B50FE: + movs r0, #5 + bl sub_080A306C +_081B5104: + adds r0, r4, #0 + bl sub_081B18EC +_081B510A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B50D0 + + thumb_func_start sub_081B5110 +sub_081B5110: @ 0x081B5110 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_08198670 + ldr r5, _081B517C + ldr r1, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0xf + adds r1, r1, r0 + ldrb r0, [r1] + subs r0, #0x13 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r1, _081B5180 + lsls r0, r4, #3 + adds r7, r0, r1 + ldr r0, [r7] + cmp r0, #0 + bne _081B5142 + b _081B5304 +_081B5142: + ldr r0, [r5] + adds r0, #0xc + bl sub_081B2CB0 + ldr r0, [r5] + adds r0, #0xd + bl sub_081B2CB0 + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B5166 + bl sub_08017AC0 + cmp r0, #1 + bne _081B5188 +_081B5166: + adds r0, r4, #0 + subs r0, #0xb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081B5184 + movs r0, #0xd + bl sub_081B2CD8 + b _081B52F6 + .align 2, 0 +_081B517C: .4byte gUnknown_203CB90 +_081B5180: .4byte gUnknown_85E1654 +_081B5184: + ldrb r0, [r7, #4] + b _081B52F2 +_081B5188: + cmp r4, #7 + bhi _081B51C4 + ldr r1, _081B51B4 + adds r0, r4, r1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B51C4 + ldr r0, _081B51B8 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B51BC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B51C0 + str r1, [r0] + b _081B5304 + .align 2, 0 +_081B51B4: .4byte 0x00000867 +_081B51B8: .4byte gUnknown_85C9BB7 +_081B51BC: .4byte gUnknown_3005B60 +_081B51C0: .4byte sub_081B18EC +_081B51C4: + ldr r1, _081B51EC + lsls r0, r4, #3 + adds r5, r0, r1 + ldr r0, [r5] + bl _call_via_r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B51DA + b _081B52DC +_081B51DA: + subs r0, r4, #5 + cmp r0, #7 + bhi _081B52C4 + lsls r0, r0, #2 + ldr r1, _081B51F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B51EC: .4byte gUnknown_85E1654 +_081B51F0: .4byte _081B51F4 +_081B51F4: @ jump table + .4byte _081B52B4 @ case 0 + .4byte _081B52C4 @ case 1 + .4byte _081B52C4 @ case 2 + .4byte _081B521C @ case 3 + .4byte _081B5258 @ case 4 + .4byte _081B52C4 @ case 5 + .4byte _081B5214 @ case 6 + .4byte _081B5214 @ case 7 +_081B5214: + adds r0, r6, #0 + bl sub_08161464 + b _081B5304 +_081B521C: + ldr r0, _081B5248 + ldr r1, [r0] + movs r0, #0x1c + ldrsb r0, [r1, r0] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x1d] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r1, r0, #0 + ldr r0, _081B524C + ldrb r1, [r1, #0x14] + bl sub_081245E8 + ldr r0, _081B5250 + ldr r1, _081B5254 + b _081B5288 + .align 2, 0 +_081B5248: .4byte gUnknown_3005AEC +_081B524C: .4byte gUnknown_2021C40 +_081B5250: .4byte gUnknown_2021C7C +_081B5254: .4byte gUnknown_85CA25C +_081B5258: + ldr r0, _081B52A0 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, #0x25 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + bl sub_080843F8 + adds r1, r0, #0 + ldr r0, _081B52A4 + ldrb r1, [r1, #0x14] + bl sub_081245E8 + ldr r0, _081B52A8 + ldr r1, _081B52AC +_081B5288: + bl sub_08008BCC + adds r0, r6, #0 + bl sub_081B5314 + ldr r0, _081B52B0 + ldr r0, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r0, r1 + strh r4, [r0] + b _081B5304 + .align 2, 0 +_081B52A0: .4byte gUnknown_3005AEC +_081B52A4: .4byte gUnknown_2021C40 +_081B52A8: .4byte gUnknown_2021C7C +_081B52AC: .4byte gUnknown_85CA246 +_081B52B0: .4byte gUnknown_203CB90 +_081B52B4: + ldr r1, _081B52BC + ldr r0, _081B52C0 + b _081B52C8 + .align 2, 0 +_081B52BC: .4byte gUnknown_203CB94 +_081B52C0: .4byte sub_0812469C +_081B52C4: + ldr r1, _081B52D4 + ldr r0, _081B52D8 +_081B52C8: + str r0, [r1] + adds r0, r6, #0 + bl sub_081B0F90 + b _081B5304 + .align 2, 0 +_081B52D4: .4byte gUnknown_203CB94 +_081B52D8: .4byte sub_08085A30 +_081B52DC: + cmp r4, #1 + beq _081B52EA + cmp r4, #4 + bne _081B52F0 + bl sub_081B5504 + b _081B52F6 +_081B52EA: + bl sub_081B547C + b _081B52F6 +_081B52F0: + ldrb r0, [r5, #4] +_081B52F2: + bl sub_081B2CD8 +_081B52F6: + ldr r0, _081B530C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B5310 + str r0, [r1] +_081B5304: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B530C: .4byte gUnknown_3005B60 +_081B5310: .4byte sub_081B5454 + thumb_func_end sub_081B5110 + + thumb_func_start sub_081B5314 +sub_081B5314: @ 0x081B5314 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081B5338 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B533C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B5340 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B5338: .4byte gUnknown_2021C7C +_081B533C: .4byte gUnknown_3005B60 +_081B5340: .4byte sub_081B5344 + thumb_func_end sub_081B5314 + + thumb_func_start sub_081B5344 +sub_081B5344: @ 0x081B5344 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B5368 + bl sub_081B2FDC + ldr r0, _081B5370 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B5374 + str r0, [r1] +_081B5368: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B5370: .4byte gUnknown_3005B60 +_081B5374: .4byte sub_081B5378 + thumb_func_end sub_081B5344 + + thumb_func_start sub_081B5378 +sub_081B5378: @ 0x081B5378 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B539E + cmp r1, #0 + bgt _081B5398 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B53B4 + b _081B53CA +_081B5398: + cmp r1, #1 + beq _081B53BA + b _081B53CA +_081B539E: + ldr r1, _081B53AC + ldr r0, _081B53B0 + str r0, [r1] + adds r0, r4, #0 + bl sub_081B0F90 + b _081B53CA + .align 2, 0 +_081B53AC: .4byte gUnknown_203CB94 +_081B53B0: .4byte sub_08085A30 +_081B53B4: + movs r0, #5 + bl sub_080A306C +_081B53BA: + ldr r0, _081B53D0 + movs r1, #0 + str r1, [r0] + ldr r0, _081B53D4 + str r1, [r0] + adds r0, r4, #0 + bl sub_081B18EC +_081B53CA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B53D0: .4byte gUnknown_3005B10 +_081B53D4: .4byte gUnknown_203CBB8 + thumb_func_end sub_081B5378 + + thumb_func_start sub_081B53D8 +sub_081B53D8: @ 0x081B53D8 + push {lr} + bl sub_080AE99C + ldr r0, _081B53EC + movs r1, #8 + bl sub_080A8878 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_081B53EC: .4byte sub_081B53F0 + thumb_func_end sub_081B53D8 + + thumb_func_start sub_081B53F0 +sub_081B53F0: @ 0x081B53F0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B541C + bl sub_081B542C + ldr r1, _081B5424 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1] + ldr r0, _081B5428 + ldr r0, [r0] + bl _call_via_r0 + adds r0, r4, #0 + bl sub_080A8964 +_081B541C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B5424: .4byte gUnknown_20388A8 +_081B5428: .4byte gUnknown_203CBB8 + thumb_func_end sub_081B53F0 + + thumb_func_start sub_081B542C +sub_081B542C: @ 0x081B542C + push {lr} + ldr r0, _081B544C + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B5450 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + .align 2, 0 +_081B544C: .4byte gUnknown_203CB94 +_081B5450: .4byte gUnknown_2024190 + thumb_func_end sub_081B542C + + thumb_func_start sub_081B5454 +sub_081B5454: @ 0x081B5454 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081B5478 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081B546E + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B5474 +_081B546E: + adds r0, r2, #0 + bl sub_081B3D74 +_081B5474: + pop {r0} + bx r0 + .align 2, 0 +_081B5478: .4byte gUnknown_3002360 + thumb_func_end sub_081B5454 + + thumb_func_start sub_081B547C +sub_081B547C: @ 0x081B547C + push {lr} + ldr r0, _081B5494 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B5498 + movs r0, #0xc + bl sub_081B2CD8 + b _081B549E + .align 2, 0 +_081B5494: .4byte 0x00000888 +_081B5498: + movs r0, #0xd + bl sub_081B2CD8 +_081B549E: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B547C + + thumb_func_start sub_081B54A4 +sub_081B54A4: @ 0x081B54A4 + push {lr} + bl sub_081B1024 + ldr r1, _081B54BC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + movs r0, #9 + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_081B54BC: .4byte gUnknown_20388A8 + thumb_func_end sub_081B54A4 + + thumb_func_start sub_081B54C0 +sub_081B54C0: @ 0x081B54C0 + push {lr} + bl sub_0808B764 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B54FC + bl sub_0808B7D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B54FC + ldr r1, _081B54EC + ldr r0, _081B54F0 + str r0, [r1] + ldr r1, _081B54F4 + ldr r0, _081B54F8 + str r0, [r1] + movs r0, #1 + b _081B54FE + .align 2, 0 +_081B54EC: .4byte gUnknown_3005B10 +_081B54F0: .4byte sub_081B53D8 +_081B54F4: .4byte gUnknown_203CBB8 +_081B54F8: .4byte sub_081B54A4 +_081B54FC: + movs r0, #0 +_081B54FE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B54C0 + + thumb_func_start sub_081B5504 +sub_081B5504: @ 0x081B5504 + push {lr} + movs r0, #8 + bl sub_0808B624 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B551A + movs r0, #9 + bl sub_081B2CD8 + b _081B5520 +_081B551A: + movs r0, #8 + bl sub_081B2CD8 +_081B5520: + pop {r0} + bx r0 + thumb_func_end sub_081B5504 + + thumb_func_start sub_081B5524 +sub_081B5524: @ 0x081B5524 + push {lr} + ldr r0, _081B553C + ldrb r0, [r0, #0x17] + bl sub_0808555C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B5540 + movs r0, #0 + b _081B5542 + .align 2, 0 +_081B553C: .4byte gUnknown_2036FB8 +_081B5540: + movs r0, #1 +_081B5542: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B5524 + + thumb_func_start sub_081B5548 +sub_081B5548: @ 0x081B5548 + push {lr} + sub sp, #0xc + movs r0, #0 + str r0, [sp] + ldr r0, _081B556C + str r0, [sp, #4] + ldr r0, _081B5570 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B556C: .4byte sub_081B1040 +_081B5570: .4byte sub_08085AFC + thumb_func_end sub_081B5548 + + thumb_func_start sub_081B5574 +sub_081B5574: @ 0x081B5574 + push {lr} + bl sub_081B1024 + ldr r1, _081B558C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + movs r0, #0x2b + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_081B558C: .4byte gUnknown_20388A8 + thumb_func_end sub_081B5574 + + thumb_func_start sub_081B5590 +sub_081B5590: @ 0x081B5590 + push {r4, lr} + sub sp, #4 + mov r4, sp + adds r4, #2 + mov r0, sp + adds r1, r4, #0 + bl sub_0808B3CC + mov r0, sp + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0 + ldrsh r1, [r4, r2] + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080890A0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B55EC + bl sub_0808B7B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B55EC + ldr r1, _081B55DC + ldr r0, _081B55E0 + str r0, [r1] + ldr r1, _081B55E4 + ldr r0, _081B55E8 + str r0, [r1] + movs r0, #1 + b _081B55EE + .align 2, 0 +_081B55DC: .4byte gUnknown_3005B10 +_081B55E0: .4byte sub_081B53D8 +_081B55E4: .4byte gUnknown_203CBB8 +_081B55E8: .4byte sub_081B5574 +_081B55EC: + movs r0, #0 +_081B55EE: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B5590 + + thumb_func_start sub_081B55F8 +sub_081B55F8: @ 0x081B55F8 + push {lr} + bl sub_081B1024 + ldr r1, _081B5610 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1] + movs r0, #0x2c + bl sub_080B5270 + pop {r0} + bx r0 + .align 2, 0 +_081B5610: .4byte gUnknown_20388A8 + thumb_func_end sub_081B55F8 + + thumb_func_start sub_081B5614 +sub_081B5614: @ 0x081B5614 + push {lr} + bl sub_0809CAC0 + ldr r1, _081B562C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [r1, #4] + cmp r0, #0 + bne _081B5630 + movs r0, #0 + b _081B563E + .align 2, 0 +_081B562C: .4byte gUnknown_20388A8 +_081B5630: + ldr r1, _081B5644 + ldr r0, _081B5648 + str r0, [r1] + ldr r1, _081B564C + ldr r0, _081B5650 + str r0, [r1] + movs r0, #1 +_081B563E: + pop {r1} + bx r1 + .align 2, 0 +_081B5644: .4byte gUnknown_3005B10 +_081B5648: .4byte sub_081B53D8 +_081B564C: .4byte gUnknown_203CBB8 +_081B5650: .4byte sub_081B55F8 + thumb_func_end sub_081B5614 + + thumb_func_start sub_081B5654 +sub_081B5654: @ 0x081B5654 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + adds r7, r1, #0 + adds r4, r2, #0 + movs r6, #1 + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B568A + ldr r0, _081B56C0 + ldr r1, _081B56C4 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B568A + ldr r0, _081B56C8 + adds r0, r4, r0 + ldrb r1, [r0] + eors r1, r6 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r6, r0, #0x1f +_081B568A: + adds r0, r5, #0 + movs r1, #0x41 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806A058 + adds r1, r0, #0 + str r6, [sp] + adds r0, r4, #0 + adds r2, r7, #0 + movs r3, #1 + bl sub_081B56CC + ldrb r0, [r7, #9] + adds r1, r5, #0 + bl sub_081B57D8 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B56C0: .4byte gUnknown_3002360 +_081B56C4: .4byte 0x00000439 +_081B56C8: .4byte gUnknown_85E18D8 + thumb_func_end sub_081B5654 + + thumb_func_start sub_081B56CC +sub_081B56CC: @ 0x081B56CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r6, r1, #0 + adds r4, r2, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r3, r3, #0x18 + lsrs r7, r3, #0x18 + cmp r5, #0 + beq _081B571A + ldr r1, _081B5724 + ldr r0, [r4, #4] + ldrb r2, [r0] + ldrb r3, [r0, #1] + movs r0, #4 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0x20] + str r0, [sp, #8] + adds r0, r5, #0 + bl sub_080D2564 + strb r0, [r4, #9] + ldr r2, _081B5728 + ldrb r0, [r4, #9] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #3 + adds r2, r7, #0 + ands r2, r0 + lsls r2, r2, #2 + ldrb r3, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #5] +_081B571A: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B5724: .4byte sub_080D28B4 +_081B5728: .4byte gUnknown_20205AC + thumb_func_end sub_081B56CC + + thumb_func_start sub_081B572C +sub_081B572C: @ 0x081B572C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + adds r0, r1, #0 + adds r1, r2, #0 + bl sub_08074BF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + beq _081B578C + cmp r0, #2 + bgt _081B5754 + cmp r0, #1 + beq _081B57A4 + b _081B57BC +_081B5754: + cmp r0, #3 + beq _081B5774 + cmp r0, #4 + bne _081B57BC + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _081B5770 + adds r0, r0, r1 + movs r1, #0 + bl sub_080D2B68 + b _081B57CC + .align 2, 0 +_081B5770: .4byte gUnknown_20205AC +_081B5774: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _081B5788 + adds r0, r0, r1 + movs r1, #1 + bl sub_080D2B68 + b _081B57CC + .align 2, 0 +_081B5788: .4byte gUnknown_20205AC +_081B578C: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _081B57A0 + adds r0, r0, r1 + movs r1, #2 + bl sub_080D2B68 + b _081B57CC + .align 2, 0 +_081B57A0: .4byte gUnknown_20205AC +_081B57A4: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _081B57B8 + adds r0, r0, r1 + movs r1, #3 + bl sub_080D2B68 + b _081B57CC + .align 2, 0 +_081B57B8: .4byte gUnknown_20205AC +_081B57BC: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _081B57D4 + adds r0, r0, r1 + movs r1, #4 + bl sub_080D2B68 +_081B57CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B57D4: .4byte gUnknown_20205AC + thumb_func_end sub_081B572C + + thumb_func_start sub_081B57D8 +sub_081B57D8: @ 0x081B57D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r6, #0 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B572C + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081B57D8 + + thumb_func_start sub_081B580C +sub_081B580C: @ 0x081B580C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + ldr r5, _081B583C + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r6, r0, #2 + adds r2, r6, r5 + movs r7, #0 + movs r3, #0 + strh r3, [r2, #0x2e] + mov ip, r5 + cmp r1, #0 + bne _081B5864 + movs r1, #0x20 + ldrsh r0, [r2, r1] + cmp r0, #0x18 + bne _081B5844 + strh r3, [r2, #0x24] + ldr r0, _081B5840 + strh r0, [r2, #0x26] + b _081B584A + .align 2, 0 +_081B583C: .4byte gUnknown_20205AC +_081B5840: .4byte 0x0000FFFC +_081B5844: + ldr r0, _081B585C + strh r0, [r2, #0x24] + strh r3, [r2, #0x26] +_081B584A: + lsls r0, r4, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + mov r1, ip + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081B5860 + b _081B5870 + .align 2, 0 +_081B585C: .4byte 0x0000FFFC +_081B5860: .4byte sub_081B58A8 +_081B5864: + strh r3, [r2, #0x24] + strh r3, [r2, #0x26] + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r6, r0 + ldr r1, _081B5878 +_081B5870: + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B5878: .4byte sub_081B587C + thumb_func_end sub_081B580C + + thumb_func_start sub_081B587C +sub_081B587C: @ 0x081B587C + push {r4, lr} + adds r4, r0, #0 + bl sub_080D297C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081B58A2 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081B58A0 + ldr r0, _081B589C + strh r0, [r4, #0x26] + b _081B58A2 + .align 2, 0 +_081B589C: .4byte 0x0000FFFD +_081B58A0: + strh r1, [r4, #0x26] +_081B58A2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B587C + + thumb_func_start sub_081B58A8 +sub_081B58A8: @ 0x081B58A8 + push {lr} + bl sub_080D297C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B58A8 + + thumb_func_start sub_081B58B4 +sub_081B58B4: @ 0x081B58B4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B58DC + ldr r0, _081B58E4 + ldr r2, [r4, #4] + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + movs r3, #0 + bl sub_08006B0C + strb r0, [r4, #0xa] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B5934 +_081B58DC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B58E4: .4byte gUnknown_85E1778 + thumb_func_end sub_081B58B4 + + thumb_func_start sub_081B58E8 +sub_081B58E8: @ 0x081B58E8 + push {r4, r5, lr} + adds r4, r2, #0 + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + cmp r0, #0 + beq _081B5924 + ldr r0, _081B592C + ldr r2, [r4, #4] + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + movs r3, #0 + bl sub_08006B0C + strb r0, [r4, #0xa] + ldr r2, _081B5930 + ldrb r0, [r4, #0xa] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B5950 +_081B5924: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B592C: .4byte gUnknown_85E1778 +_081B5930: .4byte gUnknown_20205AC + thumb_func_end sub_081B58E8 + + thumb_func_start sub_081B5934 +sub_081B5934: @ 0x081B5934 + push {r4, lr} + adds r4, r1, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_081B5950 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B5934 + + thumb_func_start sub_081B5950 +sub_081B5950: @ 0x081B5950 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _081B5978 + ldr r2, _081B5974 + ldrb r1, [r4, #0xa] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _081B59C4 + .align 2, 0 +_081B5974: .4byte gUnknown_20205AC +_081B5978: + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B599C + ldrb r1, [r4, #0xa] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081B5998 + adds r0, r0, r1 + movs r1, #1 + bl sub_08007EC0 + b _081B59AE + .align 2, 0 +_081B5998: .4byte gUnknown_20205AC +_081B599C: + ldrb r1, [r4, #0xa] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081B59CC + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 +_081B59AE: + ldr r2, _081B59CC + ldrb r1, [r4, #0xa] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_081B59C4: + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B59CC: .4byte gUnknown_20205AC + thumb_func_end sub_081B5950 + + thumb_func_start sub_081B59D0 +sub_081B59D0: @ 0x081B59D0 + push {lr} + ldr r0, _081B59E4 + bl sub_08008210 + ldr r0, _081B59E8 + bl sub_0800845C + pop {r0} + bx r0 + .align 2, 0 +_081B59E4: .4byte gUnknown_85E1768 +_081B59E8: .4byte gUnknown_85E1770 + thumb_func_end sub_081B59D0 + + thumb_func_start sub_081B59EC +sub_081B59EC: @ 0x081B59EC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #0 + beq _081B5A00 + cmp r2, #1 + beq _081B5A48 + b _081B5A84 +_081B5A00: + movs r5, #0 + ldrb r0, [r6] + cmp r5, r0 + bhs _081B5A84 +_081B5A08: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B5A44 + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _081B5A34 + adds r0, r7, r5 + ldrb r4, [r0] + adds r0, r1, #0 + bl sub_080D4040 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B5A90 +_081B5A34: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r0, [r6] + cmp r5, r0 + blo _081B5A08 + b _081B5A84 + .align 2, 0 +_081B5A44: .4byte gUnknown_2024190 +_081B5A48: + movs r5, #0 + b _081B5A7E +_081B5A4C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B5A8C + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _081B5A78 + adds r0, r5, r7 + ldrb r4, [r0, #6] + adds r0, r1, #0 + bl sub_080D4040 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B5A90 +_081B5A78: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081B5A7E: + ldrb r0, [r6, #1] + cmp r5, r0 + blo _081B5A4C +_081B5A84: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B5A8C: .4byte gUnknown_20243E8 + thumb_func_end sub_081B59EC + + thumb_func_start sub_081B5A90 +sub_081B5A90: @ 0x081B5A90 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + mov sb, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, sb + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _081B5B08 + mov r8, r0 + lsls r0, r6, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + add r0, r8 + adds r0, #0x43 + ldrb r3, [r0] + ldr r0, _081B5B0C + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #0xfa + movs r2, #0xaa + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + mov r0, r8 + adds r5, r4, r0 + movs r0, #4 + strh r0, [r5, #0x24] + movs r0, #0xa + strh r0, [r5, #0x26] + movs r0, #0x1c + add r8, r0 + add r4, r8 + ldr r0, _081B5B10 + str r0, [r4] + strh r6, [r5, #0x3c] + adds r0, r5, #0 + mov r1, sb + bl sub_08007EC0 + ldr r1, [r4] + adds r0, r5, #0 + bl _call_via_r1 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B5B08: .4byte gUnknown_20205AC +_081B5B0C: .4byte gUnknown_85E1778 +_081B5B10: .4byte sub_081B5B14 + thumb_func_end sub_081B5A90 + + thumb_func_start sub_081B5B14 +sub_081B5B14: @ 0x081B5B14 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x3c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _081B5B44 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _081B5B48 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _081B5B66 + .align 2, 0 +_081B5B44: .4byte gUnknown_20205AC +_081B5B48: + adds r3, r4, #0 + adds r3, #0x3e + ldrb r1, [r3] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x24] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r0, [r2, #0x26] + ldrh r2, [r2, #0x22] + adds r0, r0, r2 + strh r0, [r4, #0x22] +_081B5B66: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B5B14 + + thumb_func_start sub_081B5B6C +sub_081B5B6C: @ 0x081B5B6C + push {r4, lr} + adds r4, r1, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B5B8A + ldr r0, _081B5B90 + ldr r2, [r4, #4] + ldrb r1, [r2, #6] + ldrb r2, [r2, #7] + movs r3, #8 + bl sub_08006B0C + strb r0, [r4, #0xb] +_081B5B8A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B5B90: .4byte gUnknown_85E17C0 + thumb_func_end sub_081B5B6C + + thumb_func_start sub_081B5B94 +sub_081B5B94: @ 0x081B5B94 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081B5BC4 + ldr r0, _081B5BCC + ldr r2, [r4, #4] + ldrb r1, [r2, #6] + ldrb r2, [r2, #7] + movs r3, #8 + bl sub_08006B0C + strb r0, [r4, #0xb] + ldr r2, _081B5BD0 + ldrb r0, [r4, #0xb] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] +_081B5BC4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B5BCC: .4byte gUnknown_85E17C0 +_081B5BD0: .4byte gUnknown_20205AC + thumb_func_end sub_081B5B94 + + thumb_func_start sub_081B5BD4 +sub_081B5BD4: @ 0x081B5BD4 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081B5C0C + adds r1, r3, #0 + movs r3, #8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081B5C10 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r3, [r1, #5] + movs r2, #0xd + rsbs r2, r2, #0 + ands r2, r3 + movs r3, #8 + orrs r2, r3 + strb r2, [r1, #5] + pop {r1} + bx r1 + .align 2, 0 +_081B5C0C: .4byte gUnknown_85E17C0 +_081B5C10: .4byte gUnknown_20205AC + thumb_func_end sub_081B5BD4 + + thumb_func_start sub_081B5C14 +sub_081B5C14: @ 0x081B5C14 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081B5C34 + adds r1, r3, #0 + movs r3, #8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081B5C34: .4byte gUnknown_85E1830 + thumb_func_end sub_081B5C14 + + thumb_func_start sub_081B5C38 +sub_081B5C38: @ 0x081B5C38 + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _081B5C58 + adds r0, r0, r2 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_081B5C58: .4byte gUnknown_20205AC + thumb_func_end sub_081B5C38 + + thumb_func_start sub_081B5C5C +sub_081B5C5C: @ 0x081B5C5C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + cmp r6, #0 + bne _081B5CA0 + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _081B5C9C + mov r8, r0 + add r4, r8 + adds r0, r4, #0 + movs r1, #2 + bl sub_08007EC0 + lsls r5, r7, #4 + adds r5, r5, r7 + lsls r5, r5, #2 + add r5, r8 + adds r0, r5, #0 + movs r1, #4 + bl sub_08007EC0 + strh r6, [r4, #0x26] + strh r6, [r5, #0x26] + b _081B5CCC + .align 2, 0 +_081B5C9C: .4byte gUnknown_20205AC +_081B5CA0: + lsls r5, r0, #4 + adds r5, r5, r0 + lsls r5, r5, #2 + ldr r0, _081B5CD8 + mov r8, r0 + add r5, r8 + adds r0, r5, #0 + movs r1, #3 + bl sub_08007EC0 + lsls r4, r7, #4 + adds r4, r4, r7 + lsls r4, r4, #2 + add r4, r8 + adds r0, r4, #0 + movs r1, #5 + bl sub_08007EC0 + ldr r0, _081B5CDC + strh r0, [r5, #0x26] + movs r0, #4 + strh r0, [r4, #0x26] +_081B5CCC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B5CD8: .4byte gUnknown_20205AC +_081B5CDC: .4byte 0x0000FFFC + thumb_func_end sub_081B5C5C + + thumb_func_start sub_081B5CE0 +sub_081B5CE0: @ 0x081B5CE0 + push {lr} + ldr r0, _081B5CF8 + bl sub_08034388 + ldr r0, _081B5CFC + bl sub_08034388 + ldr r0, _081B5D00 + bl sub_080343E4 + pop {r0} + bx r0 + .align 2, 0 +_081B5CF8: .4byte gUnknown_85E17B0 +_081B5CFC: .4byte gUnknown_85E1828 +_081B5D00: .4byte gUnknown_85E17B8 + thumb_func_end sub_081B5CE0 + + thumb_func_start sub_081B5D04 +sub_081B5D04: @ 0x081B5D04 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B5D2C + ldr r0, _081B5D34 + ldr r2, [r4, #4] + ldrb r1, [r2, #4] + ldrb r2, [r2, #5] + movs r3, #0 + bl sub_08006B0C + strb r0, [r4, #0xc] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B5D84 +_081B5D2C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B5D34: .4byte gUnknown_85E18C0 + thumb_func_end sub_081B5D04 + + thumb_func_start sub_081B5D38 +sub_081B5D38: @ 0x081B5D38 + push {r4, r5, lr} + adds r4, r2, #0 + lsls r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + cmp r0, #0 + beq _081B5D74 + ldr r0, _081B5D7C + ldr r2, [r4, #4] + ldrb r1, [r2, #4] + ldrb r2, [r2, #5] + movs r3, #0 + bl sub_08006B0C + strb r0, [r4, #0xc] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B5D9C + ldr r2, _081B5D80 + ldrb r0, [r4, #0xc] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #5] +_081B5D74: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B5D7C: .4byte gUnknown_85E18C0 +_081B5D80: .4byte gUnknown_20205AC + thumb_func_end sub_081B5D38 + + thumb_func_start sub_081B5D84 +sub_081B5D84: @ 0x081B5D84 + push {r4, lr} + adds r4, r1, #0 + bl sub_081B1D2C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_081B5D9C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B5D84 + + thumb_func_start sub_081B5D9C +sub_081B5D9C: @ 0x081B5D9C + push {r4, r5, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _081B5DAC + cmp r2, #6 + bne _081B5DC8 +_081B5DAC: + ldr r2, _081B5DC4 + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + b _081B5DF2 + .align 2, 0 +_081B5DC4: .4byte gUnknown_20205AC +_081B5DC8: + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081B5DFC + adds r0, r0, r4 + subs r1, r2, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + ldrb r1, [r5, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + adds r0, #0x3e + ldrb r2, [r0] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r2 +_081B5DF2: + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B5DFC: .4byte gUnknown_20205AC + thumb_func_end sub_081B5D9C + + thumb_func_start sub_081B5E00 +sub_081B5E00: @ 0x081B5E00 + push {lr} + ldr r0, _081B5E14 + bl sub_08034388 + ldr r0, _081B5E18 + bl sub_080343E4 + pop {r0} + bx r0 + .align 2, 0 +_081B5E14: .4byte gUnknown_85E18B0 +_081B5E18: .4byte gUnknown_85E18B8 + thumb_func_end sub_081B5E00 + + thumb_func_start sub_081B5E1C +sub_081B5E1C: @ 0x081B5E1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + ldr r0, _081B5E44 + mov r8, r0 + ldr r0, _081B5E48 + ldr r1, _081B5E4C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B5E5C + movs r7, #1 + bl sub_081B8624 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _081B5E60 + .align 2, 0 +_081B5E44: .4byte sub_081B5EF4 +_081B5E48: .4byte gUnknown_3002360 +_081B5E4C: .4byte 0x00000439 +_081B5E50: + ldr r0, _081B5E58 + strb r5, [r0, #9] + b _081B5EA4 + .align 2, 0 +_081B5E58: .4byte gUnknown_203CB94 +_081B5E5C: + movs r7, #0 + movs r6, #0 +_081B5E60: + ldr r4, _081B5EAC + ldrh r0, [r4] + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bne _081B5EBC + ldr r1, _081B5EB0 + movs r0, #0 + strb r0, [r1, #9] + movs r5, #0 +_081B5E78: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081B5EB4 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B5E9A + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081B5E50 +_081B5E9A: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081B5E78 +_081B5EA4: + ldr r0, _081B5EB8 + movs r1, #0x7f + b _081B5ED0 + .align 2, 0 +_081B5EAC: .4byte gUnknown_203CB48 +_081B5EB0: .4byte gUnknown_203CB94 +_081B5EB4: .4byte gUnknown_2024190 +_081B5EB8: .4byte sub_081B5F20 +_081B5EBC: + ldrh r0, [r4] + bl sub_080D6480 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #5 + cmp r0, #3 + bne _081B5ECE + movs r1, #4 +_081B5ECE: + ldr r0, _081B5EF0 +_081B5ED0: + str r1, [sp] + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #3 + movs r3, #1 + bl sub_081AFD10 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B5EF0: .4byte sub_081B1040 + thumb_func_end sub_081B5E1C + + thumb_func_start sub_081B5EF4 +sub_081B5EF4: @ 0x081B5EF4 + push {lr} + bl sub_081A9BB8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B5F0C + movs r0, #0xc + movs r1, #5 + movs r2, #0 + bl sub_081AAA08 + b _081B5F16 +_081B5F0C: + ldr r0, _081B5F1C + ldr r1, [r0] + movs r0, #4 + bl sub_081C47A0 +_081B5F16: + pop {r0} + bx r0 + .align 2, 0 +_081B5F1C: .4byte gUnknown_203CBFC + thumb_func_end sub_081B5EF4 + + thumb_func_start sub_081B5F20 +sub_081B5F20: @ 0x081B5F20 + push {lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _081B5F58 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B5F52 + ldr r0, _081B5F5C + ldrb r1, [r0, #8] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _081B5F46 + ldr r0, _081B5F60 + ldr r1, [r0] + ldr r0, _081B5F64 + str r0, [r1, #4] +_081B5F46: + ldr r0, _081B5F68 + ldr r1, _081B5F6C + ldr r2, [r0] + adds r0, r3, #0 + bl _call_via_r2 +_081B5F52: + pop {r0} + bx r0 + .align 2, 0 +_081B5F58: .4byte gUnknown_2037C74 +_081B5F5C: .4byte gUnknown_203CB94 +_081B5F60: .4byte gUnknown_203CB90 +_081B5F64: .4byte sub_081B8DE0 +_081B5F68: .4byte gUnknown_3006068 +_081B5F6C: .4byte sub_081B6434 + thumb_func_end sub_081B5F20 + + thumb_func_start sub_081B5F70 +sub_081B5F70: @ 0x081B5F70 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xaf + bne _081B5F8C + ldr r0, _081B5F84 + ldr r0, [r0] + ldr r1, _081B5F88 + adds r0, r0, r1 + b _081B5F96 + .align 2, 0 +_081B5F84: .4byte gUnknown_3005AEC +_081B5F88: .4byte 0x00003214 +_081B5F8C: + ldr r1, _081B5FA4 + subs r0, #0xd + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] +_081B5F96: + ldrb r1, [r0, #4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _081B5FA8 + movs r0, #0 + b _081B5FAA + .align 2, 0 +_081B5FA4: .4byte gUnknown_82EEF14 +_081B5FA8: + movs r0, #1 +_081B5FAA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B5F70 + + thumb_func_start sub_081B5FB0 +sub_081B5FB0: @ 0x081B5FB0 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #3 + cmp r0, #0x12 + bls _081B5FC6 + b _081B615C +_081B5FC6: + lsls r0, r0, #2 + ldr r1, _081B5FD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B5FD0: .4byte _081B5FD4 +_081B5FD4: @ jump table + .4byte _081B6020 @ case 0 + .4byte _081B6034 @ case 1 + .4byte _081B6048 @ case 2 + .4byte _081B605C @ case 3 + .4byte _081B6070 @ case 4 + .4byte _081B6084 @ case 5 + .4byte _081B6098 @ case 6 + .4byte _081B615C @ case 7 + .4byte _081B60AC @ case 8 + .4byte _081B60D0 @ case 9 + .4byte _081B60C0 @ case 10 + .4byte _081B6100 @ case 11 + .4byte _081B6110 @ case 12 + .4byte _081B60F0 @ case 13 + .4byte _081B60E0 @ case 14 + .4byte _081B615C @ case 15 + .4byte _081B6134 @ case 16 + .4byte _081B6134 @ case 17 + .4byte _081B6148 @ case 18 +_081B6020: + ldr r0, _081B602C + ldr r1, _081B6030 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B602C: .4byte gUnknown_2021C7C +_081B6030: .4byte gUnknown_85C9EA6 +_081B6034: + ldr r0, _081B6040 + ldr r1, _081B6044 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6040: .4byte gUnknown_2021C7C +_081B6044: .4byte gUnknown_85C9ED4 +_081B6048: + ldr r0, _081B6054 + ldr r1, _081B6058 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6054: .4byte gUnknown_2021C7C +_081B6058: .4byte gUnknown_85C9EE2 +_081B605C: + ldr r0, _081B6068 + ldr r1, _081B606C + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6068: .4byte gUnknown_2021C7C +_081B606C: .4byte gUnknown_85C9EF2 +_081B6070: + ldr r0, _081B607C + ldr r1, _081B6080 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B607C: .4byte gUnknown_2021C7C +_081B6080: .4byte gUnknown_85C9EC0 +_081B6084: + ldr r0, _081B6090 + ldr r1, _081B6094 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6090: .4byte gUnknown_2021C7C +_081B6094: .4byte gUnknown_85C9FE7 +_081B6098: + ldr r0, _081B60A4 + ldr r1, _081B60A8 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B60A4: .4byte gUnknown_2021C7C +_081B60A8: .4byte gUnknown_85C9FF7 +_081B60AC: + ldr r0, _081B60B8 + ldr r1, _081B60BC + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B60B8: .4byte gUnknown_2021C7C +_081B60BC: .4byte gUnknown_85C9F2B +_081B60C0: + ldr r0, _081B60C8 + ldr r1, _081B60CC + b _081B6114 + .align 2, 0 +_081B60C8: .4byte gUnknown_2021C54 +_081B60CC: .4byte gUnknown_85C9AE7 +_081B60D0: + ldr r0, _081B60D8 + ldr r1, _081B60DC + b _081B6114 + .align 2, 0 +_081B60D8: .4byte gUnknown_2021C54 +_081B60DC: .4byte gUnknown_85CA36F +_081B60E0: + ldr r0, _081B60E8 + ldr r1, _081B60EC + b _081B6114 + .align 2, 0 +_081B60E8: .4byte gUnknown_2021C54 +_081B60EC: .4byte gUnknown_85CA374 +_081B60F0: + ldr r0, _081B60F8 + ldr r1, _081B60FC + b _081B6114 + .align 2, 0 +_081B60F8: .4byte gUnknown_2021C54 +_081B60FC: .4byte gUnknown_85CA383 +_081B6100: + ldr r0, _081B6108 + ldr r1, _081B610C + b _081B6114 + .align 2, 0 +_081B6108: .4byte gUnknown_2021C54 +_081B610C: .4byte gUnknown_85C9AED +_081B6110: + ldr r0, _081B6124 + ldr r1, _081B6128 +_081B6114: + bl sub_080088B8 + ldr r0, _081B612C + ldr r1, _081B6130 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6124: .4byte gUnknown_2021C54 +_081B6128: .4byte gUnknown_85C9AF2 +_081B612C: .4byte gUnknown_2021C7C +_081B6130: .4byte gUnknown_85C9F5F +_081B6134: + ldr r0, _081B6140 + ldr r1, _081B6144 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6140: .4byte gUnknown_2021C7C +_081B6144: .4byte gUnknown_85C9F3B +_081B6148: + ldr r0, _081B6154 + ldr r1, _081B6158 + bl sub_08008BCC + b _081B6164 + .align 2, 0 +_081B6154: .4byte gUnknown_2021C7C +_081B6158: .4byte gUnknown_85C9F06 +_081B615C: + ldr r0, _081B6168 + ldr r1, _081B616C + bl sub_08008BCC +_081B6164: + pop {r0} + bx r0 + .align 2, 0 +_081B6168: .4byte gUnknown_2021C7C +_081B616C: .4byte gUnknown_85C9AF7 + thumb_func_end sub_081B5FB0 + + thumb_func_start sub_081B6170 +sub_081B6170: @ 0x081B6170 + push {r4, lr} + adds r4, r0, #0 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + bne _081B619C + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldr r1, _081B6198 + cmp r0, r1 + bne _081B619C + movs r0, #0 + b _081B619E + .align 2, 0 +_081B6198: .4byte 0x0000012F +_081B619C: + movs r0, #1 +_081B619E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081B6170 + + thumb_func_start sub_081B61A4 +sub_081B61A4: @ 0x081B61A4 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x27 + beq _081B61B6 + cmp r0, #0x29 + beq _081B61B6 + cmp r0, #0x28 + bne _081B61BA +_081B61B6: + movs r0, #1 + b _081B61BC +_081B61BA: + movs r0, #0 +_081B61BC: + pop {r1} + bx r1 + thumb_func_end sub_081B61A4 + + thumb_func_start sub_081B61C0 +sub_081B61C0: @ 0x081B61C0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + ldr r0, _081B61EC + ldr r1, _081B61F0 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081B61F8 + movs r0, #0x64 + muls r0, r3, r0 + ldr r1, _081B61F4 + adds r0, r0, r1 + adds r1, r5, #0 + adds r2, r3, #0 + b _081B6212 + .align 2, 0 +_081B61EC: .4byte gUnknown_3002360 +_081B61F0: .4byte 0x00000439 +_081B61F4: .4byte gUnknown_2024190 +_081B61F8: + movs r0, #0x64 + adds r4, r3, #0 + muls r4, r0, r4 + ldr r0, _081B6224 + adds r4, r4, r0 + adds r0, r3, #0 + bl sub_081B8BD8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 +_081B6212: + adds r3, r6, #0 + bl sub_0806B7C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081B6224: .4byte gUnknown_2024190 + thumb_func_end sub_081B61C0 + + thumb_func_start sub_081B6228 +sub_081B6228: @ 0x081B6228 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r1, [sp, #4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0 + mov sl, r0 + ldr r0, _081B62B0 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B62B4 + adds r5, r1, r0 + ldr r0, _081B62B8 + ldrh r6, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_081B6170 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B62A0 + adds r0, r6, #0 + bl sub_081B5F70 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #1 + bne _081B628E + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r5, #0 + movs r1, #0x3a + bl sub_0806A058 + cmp sl, r0 + bne _081B628E + movs r1, #0 + mov r8, r1 +_081B628E: + ldr r4, _081B62B0 + ldrb r0, [r4, #9] + adds r1, r6, #0 + movs r2, #0 + bl sub_081B61C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B62C4 +_081B62A0: + ldr r1, _081B62BC + movs r0, #0 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldr r0, _081B62C0 + b _081B6394 + .align 2, 0 +_081B62B0: .4byte gUnknown_203CB94 +_081B62B4: .4byte gUnknown_2024190 +_081B62B8: .4byte gUnknown_203CB48 +_081B62BC: .4byte gUnknown_203CBB4 +_081B62C0: .4byte gUnknown_85C9AF7 +_081B62C4: + ldr r1, _081B62EC + movs r0, #1 + strb r0, [r1] + adds r0, r6, #0 + bl sub_081B61A4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B62F0 + movs r0, #1 + bl sub_080A306C + ldrb r0, [r4, #0xb] + cmp r0, #0xe + beq _081B62F6 + adds r0, r6, #0 + movs r1, #1 + bl sub_080D62BC + b _081B62F6 + .align 2, 0 +_081B62EC: .4byte gUnknown_203CBB4 +_081B62F0: + movs r0, #0x75 + bl sub_080A306C +_081B62F6: + ldr r4, _081B6374 + ldr r7, _081B6378 + movs r0, #9 + ldrsb r0, [r7, r0] + lsls r0, r0, #4 + ldr r1, [r4] + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_081B5D84 + ldr r2, _081B637C + movs r0, #9 + ldrsb r0, [r7, r0] + ldr r1, [r4] + lsls r0, r0, #4 + adds r3, r0, r1 + ldrb r1, [r3, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _081B6334 + adds r0, r5, #0 + adds r1, r3, #0 + movs r2, #1 + bl sub_081B2764 +_081B6334: + mov r2, r8 + cmp r2, #1 + bne _081B6384 + mov r0, sl + cmp r0, #0 + bne _081B6348 + ldrb r0, [r7, #9] + movs r1, #1 + bl sub_081B0C9C +_081B6348: + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sl + subs r3, r3, r1 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldrb r1, [r7, #9] + ldr r0, _081B6380 + str r0, [sp] + mov r0, sb + movs r2, #1 + bl sub_081B1BE8 + mov r0, sb + movs r1, #0 + mov r2, sl + bl sub_081B1C78 + b _081B63B0 + .align 2, 0 +_081B6374: .4byte gUnknown_203CBA8 +_081B6378: .4byte gUnknown_203CB94 +_081B637C: .4byte gUnknown_20205AC +_081B6380: .4byte sub_081B63CC +_081B6384: + ldr r1, _081B63C0 + adds r0, r5, #0 + bl sub_081B1814 + adds r0, r6, #0 + bl sub_081B5FB0 + ldr r0, _081B63C4 +_081B6394: + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B63C8 + mov r2, sb + lsls r0, r2, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [sp, #4] + str r1, [r0] +_081B63B0: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B63C0: .4byte gUnknown_2021C40 +_081B63C4: .4byte gUnknown_2021C7C +_081B63C8: .4byte gUnknown_3005B60 + thumb_func_end sub_081B6228 + + thumb_func_start sub_081B63CC +sub_081B63CC: @ 0x081B63CC + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081B6418 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B641C + adds r0, r0, r1 + ldr r1, _081B6420 + bl sub_081B1814 + ldr r4, _081B6424 + ldr r1, _081B6428 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + bl sub_0805E704 + ldr r1, _081B642C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6430 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B6418: .4byte gUnknown_203CB94 +_081B641C: .4byte gUnknown_2024190 +_081B6420: .4byte gUnknown_2021C40 +_081B6424: .4byte gUnknown_2021C7C +_081B6428: .4byte gUnknown_85C9E8F +_081B642C: .4byte gUnknown_3005B60 +_081B6430: .4byte sub_081B6434 + thumb_func_end sub_081B63CC + + thumb_func_start sub_081B6434 +sub_081B6434: @ 0x081B6434 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B645A + ldr r0, _081B6460 + ldrb r1, [r0] + cmp r1, #0 + bne _081B6454 + ldr r0, _081B6464 + ldr r0, [r0] + str r1, [r0, #4] +_081B6454: + adds r0, r4, #0 + bl sub_081B0F90 +_081B645A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6460: .4byte gUnknown_203CBB4 +_081B6464: .4byte gUnknown_203CB90 + thumb_func_end sub_081B6434 + + thumb_func_start sub_081B6468 +sub_081B6468: @ 0x081B6468 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r1, [sp] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r4, _081B6500 + movs r1, #9 + ldrsb r1, [r4, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B6504 + adds r5, r1, r0 + ldr r0, _081B6508 + ldrh r6, [r0] + adds r0, r6, #0 + bl sub_081B7990 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r5, #0 + movs r1, #0x20 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_081B65BC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #8] + ldrb r0, [r4, #9] + adds r1, r6, #0 + movs r2, #0 + bl sub_081B61C0 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x20 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_081B65BC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r4, #0 + bne _081B64F0 + ldr r0, [sp, #4] + cmp r0, sb + bne _081B6514 + ldr r1, [sp, #8] + cmp r1, r8 + bne _081B6514 +_081B64F0: + ldr r1, _081B650C + movs r0, #0 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldr r0, _081B6510 + b _081B6582 + .align 2, 0 +_081B6500: .4byte gUnknown_203CB94 +_081B6504: .4byte gUnknown_2024190 +_081B6508: .4byte gUnknown_203CB48 +_081B650C: .4byte gUnknown_203CBB4 +_081B6510: .4byte gUnknown_85C9AF7 +_081B6514: + ldr r1, _081B6550 + movs r0, #1 + strb r0, [r1] + movs r0, #1 + bl sub_080A306C + adds r0, r6, #0 + movs r1, #1 + bl sub_080D62BC + ldr r1, _081B6554 + adds r0, r5, #0 + bl sub_081B1814 + ldr r1, _081B6558 + adds r0, r7, #0 + bl sub_081B663C + ldr r2, [sp, #4] + cmp r2, sb + beq _081B6578 + ldr r0, [sp, #8] + cmp r0, r8 + beq _081B6564 + ldr r0, _081B655C + ldr r1, _081B6560 + bl sub_08008BCC + b _081B6580 + .align 2, 0 +_081B6550: .4byte gUnknown_203CBB4 +_081B6554: .4byte gUnknown_2021C40 +_081B6558: .4byte gUnknown_2021C54 +_081B655C: .4byte gUnknown_2021C7C +_081B6560: .4byte gUnknown_85C9F78 +_081B6564: + ldr r0, _081B6570 + ldr r1, _081B6574 + bl sub_08008BCC + b _081B6580 + .align 2, 0 +_081B6570: .4byte gUnknown_2021C7C +_081B6574: .4byte gUnknown_85C9FC1 +_081B6578: + ldr r0, _081B65B0 + ldr r1, _081B65B4 + bl sub_08008BCC +_081B6580: + ldr r0, _081B65B0 +_081B6582: + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B65B8 + mov r2, sl + lsls r0, r2, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, [sp] + str r1, [r0] + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B65B0: .4byte gUnknown_2021C7C +_081B65B4: .4byte gUnknown_85C9F9B +_081B65B8: .4byte gUnknown_3005B60 + thumb_func_end sub_081B6468 + + thumb_func_start sub_081B65BC +sub_081B65BC: @ 0x081B65BC + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r1, #0 + subs r0, #0xc + cmp r0, #5 + bhi _081B6632 + lsls r0, r0, #2 + ldr r1, _081B65D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B65D8: .4byte _081B65DC +_081B65DC: @ jump table + .4byte _081B660C @ case 0 + .4byte _081B65F4 @ case 1 + .4byte _081B661E @ case 2 + .4byte _081B6624 @ case 3 + .4byte _081B6618 @ case 4 + .4byte _081B6612 @ case 5 +_081B65F4: + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldr r1, _081B6608 + cmp r0, r1 + beq _081B6632 + adds r0, r4, #0 + movs r1, #0x1a + b _081B6628 + .align 2, 0 +_081B6608: .4byte 0x0000012F +_081B660C: + adds r0, r4, #0 + movs r1, #0x1b + b _081B6628 +_081B6612: + adds r0, r4, #0 + movs r1, #0x1c + b _081B6628 +_081B6618: + adds r0, r4, #0 + movs r1, #0x1d + b _081B6628 +_081B661E: + adds r0, r4, #0 + movs r1, #0x1e + b _081B6628 +_081B6624: + adds r0, r4, #0 + movs r1, #0x1f +_081B6628: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + b _081B6634 +_081B6632: + movs r0, #0 +_081B6634: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B65BC + + thumb_func_start sub_081B663C +sub_081B663C: @ 0x081B663C + push {lr} + adds r2, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + subs r0, #0xc + cmp r0, #5 + bhi _081B66A8 + lsls r0, r0, #2 + ldr r1, _081B6654 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B6654: .4byte _081B6658 +_081B6658: @ jump table + .4byte _081B6678 @ case 0 + .4byte _081B6670 @ case 1 + .4byte _081B6690 @ case 2 + .4byte _081B66A0 @ case 3 + .4byte _081B6688 @ case 4 + .4byte _081B6680 @ case 5 +_081B6670: + ldr r1, _081B6674 + b _081B6692 + .align 2, 0 +_081B6674: .4byte gUnknown_85C9AE7 +_081B6678: + ldr r1, _081B667C + b _081B6692 + .align 2, 0 +_081B667C: .4byte gUnknown_85CA36F +_081B6680: + ldr r1, _081B6684 + b _081B6692 + .align 2, 0 +_081B6684: .4byte gUnknown_85CA374 +_081B6688: + ldr r1, _081B668C + b _081B6692 + .align 2, 0 +_081B668C: .4byte gUnknown_85CA383 +_081B6690: + ldr r1, _081B669C +_081B6692: + adds r0, r2, #0 + bl sub_080088B8 + b _081B66A8 + .align 2, 0 +_081B669C: .4byte gUnknown_85C9AED +_081B66A0: + ldr r1, _081B66AC + adds r0, r2, #0 + bl sub_080088B8 +_081B66A8: + pop {r0} + bx r0 + .align 2, 0 +_081B66AC: .4byte gUnknown_85C9AF2 + thumb_func_end sub_081B663C + + thumb_func_start sub_081B66B0 +sub_081B66B0: @ 0x081B66B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + mov sl, r0 + movs r1, #1 + mov r8, r1 + movs r0, #3 + bl sub_081B2E34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r6, #0 + movs r0, #0x64 + adds r2, r4, #0 + muls r2, r0, r2 + str r2, [sp, #0xc] +_081B66E0: + ldr r0, _081B6774 + adds r1, r6, #0 + adds r1, #0xd + ldr r2, [sp, #0xc] + adds r0, r2, r0 + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + mov r0, r8 + movs r1, #0 + bl sub_080061B4 + adds r4, r0, #0 + mov r0, r8 + movs r1, #2 + bl sub_080061B4 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r5, #3 + ldr r0, _081B6778 + adds r2, r2, r0 + lsls r0, r6, #4 + adds r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r7, #0 + str r7, [sp, #8] + mov r0, sb + mov r1, r8 + adds r3, r4, #0 + bl sub_0800449C + cmp r5, #0 + beq _081B673C + mov r0, sl + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 +_081B673C: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #3 + bls _081B66E0 + movs r0, #0x10 + str r0, [sp] + mov r0, sl + str r0, [sp, #4] + str r7, [sp, #8] + mov r0, sb + mov r1, r8 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + movs r0, #2 + bl sub_08199654 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B6774: .4byte gUnknown_2024190 +_081B6778: .4byte gUnknown_82EACC4 + thumb_func_end sub_081B66B0 + + thumb_func_start sub_081B677C +sub_081B677C: @ 0x081B677C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_0819867C + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B67B8 + adds r0, #1 + cmp r1, r0 + bne _081B67A8 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B687C + b _081B67B8 +_081B67A8: + ldr r0, _081B67C0 + ldr r0, [r0] + adds r0, #0xd + bl sub_081B2CB0 + adds r0, r5, #0 + bl sub_081B6848 +_081B67B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B67C0: .4byte gUnknown_203CB90 + thumb_func_end sub_081B677C + + thumb_func_start sub_081B67C4 +sub_081B67C4: @ 0x081B67C4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B67DC + ldrh r0, [r0] + cmp r0, #0xaf + bne _081B67E8 + ldr r0, _081B67E0 + ldr r0, [r0] + ldr r1, _081B67E4 + adds r0, r0, r1 + b _081B67F2 + .align 2, 0 +_081B67DC: .4byte gUnknown_203CB48 +_081B67E0: .4byte gUnknown_3005AEC +_081B67E4: .4byte 0x00003214 +_081B67E8: + ldr r1, _081B680C + subs r0, #0xd + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] +_081B67F2: + ldrb r1, [r0, #4] + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081B6814 + ldr r0, _081B6810 + strh r1, [r0, #0xe] + adds r0, r4, #0 + bl sub_081B68B4 + b _081B6836 + .align 2, 0 +_081B680C: .4byte gUnknown_82EEF14 +_081B6810: .4byte gUnknown_203CB94 +_081B6814: + movs r0, #5 + bl sub_080A306C + movs r0, #0x16 + bl sub_081B2CD8 + ldr r0, _081B683C + ldrb r0, [r0, #9] + bl sub_081B66B0 + ldr r1, _081B6840 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6844 + str r1, [r0] +_081B6836: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B683C: .4byte gUnknown_203CB94 +_081B6840: .4byte gUnknown_3005B60 +_081B6844: .4byte sub_081B677C + thumb_func_end sub_081B67C4 + + thumb_func_start sub_081B6848 +sub_081B6848: @ 0x081B6848 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081B6874 + ldr r0, [r0] + adds r0, #0xc + bl sub_081B2CB0 + bl sub_08198670 + ldr r1, _081B6878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_081B68B4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6874: .4byte gUnknown_203CB90 +_081B6878: .4byte gUnknown_203CB94 + thumb_func_end sub_081B6848 + + thumb_func_start sub_081B687C +sub_081B687C: @ 0x081B687C + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081B68A8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, _081B68AC + str r0, [r1] + ldr r0, _081B68B0 + ldr r0, [r0] + movs r1, #0 + str r1, [r0, #4] + adds r0, #0xc + bl sub_081B2CB0 + movs r0, #5 + bl sub_081B2CD8 + pop {r0} + bx r0 + .align 2, 0 +_081B68A8: .4byte gUnknown_3005B60 +_081B68AC: .4byte sub_081B1040 +_081B68B0: .4byte gUnknown_203CB90 + thumb_func_end sub_081B687C + + thumb_func_start sub_081B68B4 +sub_081B68B4: @ 0x081B68B4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _081B68E4 + ldr r0, _081B68E8 + ldrh r5, [r0] + adds r4, r7, #0 + subs r4, #0xe + ldrb r0, [r4, #9] + ldrb r2, [r7] + adds r1, r5, #0 + bl sub_081B61C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B68F4 + ldr r1, _081B68EC + movs r0, #0 + strb r0, [r1] + movs r0, #5 + bl sub_080A306C + ldr r0, _081B68F0 + b _081B693A + .align 2, 0 +_081B68E4: .4byte gUnknown_203CBA2 +_081B68E8: .4byte gUnknown_203CB48 +_081B68EC: .4byte gUnknown_203CBB4 +_081B68F0: .4byte gUnknown_85C9AF7 +_081B68F4: + ldr r1, _081B695C + movs r0, #1 + strb r0, [r1] + movs r1, #9 + ldrsb r1, [r4, r1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081B6960 + adds r4, r4, r0 + movs r0, #1 + bl sub_080A306C + adds r0, r5, #0 + movs r1, #1 + bl sub_080D62BC + movs r0, #0 + ldrsh r1, [r7, r0] + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x10 + ldr r0, _081B6964 + lsrs r1, r1, #0xd + ldr r2, _081B6968 + adds r1, r1, r2 + bl sub_080088B8 + adds r0, r5, #0 + bl sub_081B5FB0 + ldr r0, _081B696C +_081B693A: + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B6970 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6974 + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B695C: .4byte gUnknown_203CBB4 +_081B6960: .4byte gUnknown_2024190 +_081B6964: .4byte gUnknown_2021C40 +_081B6968: .4byte gUnknown_82EACC4 +_081B696C: .4byte gUnknown_2021C7C +_081B6970: .4byte gUnknown_3005B60 +_081B6974: .4byte sub_081B6434 + thumb_func_end sub_081B68B4 + + thumb_func_start sub_081B6978 +sub_081B6978: @ 0x081B6978 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + movs r0, #0x17 + bl sub_081B2CD8 + ldr r0, _081B69A8 + ldrb r0, [r0, #9] + bl sub_081B66B0 + ldr r1, _081B69AC + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B69B0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B69A8: .4byte gUnknown_203CB94 +_081B69AC: .4byte gUnknown_3005B60 +_081B69B0: .4byte sub_081B677C + thumb_func_end sub_081B6978 + + thumb_func_start sub_081B69B4 +sub_081B69B4: @ 0x081B69B4 + lsls r0, r0, #0x10 + ldr r1, _081B69C4 + adds r0, r0, r1 + ldr r1, _081B69C8 + lsrs r0, r0, #0xf + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_081B69C4: .4byte 0xFEDF0000 +_081B69C8: .4byte gUnknown_85E18F8 + thumb_func_end sub_081B69B4 + + thumb_func_start sub_081B69CC +sub_081B69CC: @ 0x081B69CC + push {lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r1, #0 + ldr r3, _081B69E8 +_081B69D6: + adds r0, r1, #0 + adds r0, #0x32 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _081B69EC + movs r0, #1 + b _081B69F8 + .align 2, 0 +_081B69E8: .4byte gUnknown_85E18F8 +_081B69EC: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #7 + bls _081B69D6 + movs r0, #0 +_081B69F8: + pop {r1} + bx r1 + thumb_func_end sub_081B69CC + + thumb_func_start sub_081B69FC +sub_081B69FC: @ 0x081B69FC + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + movs r4, #0 +_081B6A06: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r6, #0 + bl sub_0806A058 + cmp r0, r5 + bne _081B6A18 + movs r0, #1 + b _081B6A24 +_081B6A18: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081B6A06 + movs r0, #0 +_081B6A24: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B69FC + + thumb_func_start sub_081B6A2C +sub_081B6A2C: @ 0x081B6A2C + push {r4, lr} + adds r1, r0, #0 + ldr r4, _081B6A4C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6A4C: .4byte gUnknown_2021C7C + thumb_func_end sub_081B6A2C + + thumb_func_start sub_081B6A50 +sub_081B6A50: @ 0x081B6A50 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081B6A2C + ldr r1, _081B6A74 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6A78 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6A74: .4byte gUnknown_3005B60 +_081B6A78: .4byte sub_081B6434 + thumb_func_end sub_081B6A50 + + thumb_func_start sub_081B6A7C +sub_081B6A7C: @ 0x081B6A7C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r7, _081B6B00 + movs r1, #9 + ldrsb r1, [r7, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B6B04 + adds r5, r1, r0 + movs r0, #0xe + adds r0, r0, r7 + mov r8, r0 + ldr r0, _081B6B08 + ldrh r4, [r0] + ldr r1, _081B6B0C + adds r0, r5, #0 + bl sub_081B1814 + adds r0, r4, #0 + bl sub_081B69B4 + strh r0, [r7, #0xe] + ldr r0, _081B6B10 + movs r2, #0xe + ldrsh r1, [r7, r2] + lsls r1, r1, #3 + ldr r2, _081B6B14 + adds r1, r1, r2 + bl sub_080088B8 + movs r0, #0 + mov r1, r8 + strh r0, [r1, #2] + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_081B1FA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6B24 + cmp r0, #2 + beq _081B6B2C + ldrh r1, [r7, #0xe] + adds r0, r5, #0 + bl sub_08068C6C + lsls r0, r0, #0x10 + ldr r1, _081B6B18 + cmp r0, r1 + beq _081B6B3C + ldr r0, _081B6B1C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B6B20 + str r0, [r1] + b _081B6B50 + .align 2, 0 +_081B6B00: .4byte gUnknown_203CB94 +_081B6B04: .4byte gUnknown_2024190 +_081B6B08: .4byte gUnknown_203CB48 +_081B6B0C: .4byte gUnknown_2021C40 +_081B6B10: .4byte gUnknown_2021C54 +_081B6B14: .4byte gUnknown_82EACC4 +_081B6B18: .4byte 0xFFFF0000 +_081B6B1C: .4byte gUnknown_3005B60 +_081B6B20: .4byte sub_081B6B68 +_081B6B24: + ldr r1, _081B6B28 + b _081B6B2E + .align 2, 0 +_081B6B28: .4byte gUnknown_85C9D7C +_081B6B2C: + ldr r1, _081B6B38 +_081B6B2E: + adds r0, r6, #0 + bl sub_081B6A50 + b _081B6B50 + .align 2, 0 +_081B6B38: .4byte gUnknown_85C9E79 +_081B6B3C: + ldr r0, _081B6B5C + bl sub_081B6A2C + ldr r1, _081B6B60 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6B64 + str r1, [r0] +_081B6B50: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B6B5C: .4byte gUnknown_85C9DA1 +_081B6B60: .4byte gUnknown_3005B60 +_081B6B64: .4byte sub_081B6CA4 + thumb_func_end sub_081B6A7C + + thumb_func_start sub_081B6B68 +sub_081B6B68: @ 0x081B6B68 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r2, _081B6BE8 + movs r1, #9 + ldrsb r1, [r2, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B6BEC + adds r5, r1, r0 + adds r7, r2, #0 + adds r7, #0xe + ldr r0, _081B6BF0 + ldrh r4, [r0] + movs r1, #2 + ldrsh r0, [r7, r1] + cmp r0, #0 + bne _081B6BA4 + adds r0, r5, #0 + movs r1, #4 + bl sub_0806D3CC + movs r0, #0xa9 + lsls r0, r0, #1 + cmp r4, r0 + bhi _081B6BA4 + adds r0, r4, #0 + movs r1, #1 + bl sub_080D62BC +_081B6BA4: + ldr r1, _081B6BF4 + adds r0, r5, #0 + bl sub_081B1814 + ldr r0, _081B6BF8 + movs r2, #0 + ldrsh r1, [r7, r2] + lsls r1, r1, #3 + ldr r2, _081B6BFC + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _081B6C00 + ldr r1, _081B6C04 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B6C08 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6C0C + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B6BE8: .4byte gUnknown_203CB94 +_081B6BEC: .4byte gUnknown_2024190 +_081B6BF0: .4byte gUnknown_203CB48 +_081B6BF4: .4byte gUnknown_2021C40 +_081B6BF8: .4byte gUnknown_2021C54 +_081B6BFC: .4byte gUnknown_82EACC4 +_081B6C00: .4byte gUnknown_2021C7C +_081B6C04: .4byte gUnknown_85C9D68 +_081B6C08: .4byte gUnknown_3005B60 +_081B6C0C: .4byte sub_081B6C10 + thumb_func_end sub_081B6B68 + + thumb_func_start sub_081B6C10 +sub_081B6C10: @ 0x081B6C10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6C36 + ldr r0, _081B6C3C + bl sub_080A29AC + ldr r1, _081B6C40 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6C44 + str r1, [r0] +_081B6C36: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6C3C: .4byte 0x0000016F +_081B6C40: .4byte gUnknown_3005B60 +_081B6C44: .4byte sub_081B6C48 + thumb_func_end sub_081B6C10 + + thumb_func_start sub_081B6C48 +sub_081B6C48: @ 0x081B6C48 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B6C9A + ldr r0, _081B6C84 + ldrh r1, [r0, #0x2e] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _081B6C70 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B6C9A +_081B6C70: + ldr r0, _081B6C88 + movs r1, #0x10 + ldrsh r0, [r0, r1] + cmp r0, #1 + bne _081B6C8C + adds r0, r4, #0 + bl sub_081B7458 + b _081B6C9A + .align 2, 0 +_081B6C84: .4byte gUnknown_3002360 +_081B6C88: .4byte gUnknown_203CB94 +_081B6C8C: + cmp r0, #2 + bne _081B6C94 + ldr r0, _081B6CA0 + strh r2, [r0] +_081B6C94: + adds r0, r5, #0 + bl sub_081B0F90 +_081B6C9A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B6CA0: .4byte gUnknown_2037290 + thumb_func_end sub_081B6C48 + + thumb_func_start sub_081B6CA4 +sub_081B6CA4: @ 0x081B6CA4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6CC8 + bl sub_081B2FDC + ldr r0, _081B6CD0 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B6CD4 + str r0, [r1] +_081B6CC8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6CD0: .4byte gUnknown_3005B60 +_081B6CD4: .4byte sub_081B6CD8 + thumb_func_end sub_081B6CA4 + + thumb_func_start sub_081B6CD8 +sub_081B6CD8: @ 0x081B6CD8 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B6CFE + cmp r1, #0 + bgt _081B6CF8 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B6D24 + b _081B6D30 +_081B6CF8: + cmp r1, #1 + beq _081B6D2A + b _081B6D30 +_081B6CFE: + ldr r0, _081B6D18 + movs r1, #1 + bl sub_081B182C + ldr r1, _081B6D1C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6D20 + str r1, [r0] + b _081B6D30 + .align 2, 0 +_081B6D18: .4byte gUnknown_85C9E23 +_081B6D1C: .4byte gUnknown_3005B60 +_081B6D20: .4byte sub_081B6D38 +_081B6D24: + movs r0, #5 + bl sub_080A306C +_081B6D2A: + adds r0, r4, #0 + bl sub_081B6EE0 +_081B6D30: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B6CD8 + + thumb_func_start sub_081B6D38 +sub_081B6D38: @ 0x081B6D38 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6D58 + ldr r0, _081B6D60 + ldr r1, [r0] + ldr r0, _081B6D64 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 +_081B6D58: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6D60: .4byte gUnknown_203CB90 +_081B6D64: .4byte sub_081B6D68 + thumb_func_end sub_081B6D38 + + thumb_func_start sub_081B6D68 +sub_081B6D68: @ 0x081B6D68 + push {r4, lr} + sub sp, #4 + ldr r0, _081B6D90 + ldr r4, _081B6D94 + ldrb r1, [r4, #9] + ldr r2, _081B6D98 + ldrb r2, [r2] + subs r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r3, _081B6D9C + ldrh r4, [r4, #0xe] + str r4, [sp] + bl sub_081BF3CC + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6D90: .4byte gUnknown_2024190 +_081B6D94: .4byte gUnknown_203CB94 +_081B6D98: .4byte gUnknown_202418D +_081B6D9C: .4byte sub_081B6DA0 + thumb_func_end sub_081B6D68 + + thumb_func_start sub_081B6DA0 +sub_081B6DA0: @ 0x081B6DA0 + push {lr} + sub sp, #0xc + movs r0, #0x7f + str r0, [sp] + ldr r0, _081B6DC4 + str r0, [sp, #4] + ldr r0, _081B6DC8 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B6DC4: .4byte sub_081B6DCC +_081B6DC8: .4byte gUnknown_203CB94 + thumb_func_end sub_081B6DA0 + + thumb_func_start sub_081B6DCC +sub_081B6DCC: @ 0x081B6DCC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r0, _081B6DF4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B6DFE + bl sub_081C14C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _081B6DF8 + adds r0, r4, #0 + bl sub_081B6E04 + b _081B6DFE + .align 2, 0 +_081B6DF4: .4byte gUnknown_2037C74 +_081B6DF8: + adds r0, r5, #0 + bl sub_081B6EE0 +_081B6DFE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081B6DCC + + thumb_func_start sub_081B6E04 +sub_081B6E04: @ 0x081B6E04 + push {r4, r5, r6, lr} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _081B6E64 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + adds r5, r1, #0 + muls r5, r0, r5 + ldr r0, _081B6E68 + adds r5, r5, r0 + bl sub_081C14C8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r1, #0xd + adds r0, r5, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r1, _081B6E6C + adds r0, r5, #0 + bl sub_081B1814 + ldr r0, _081B6E70 + lsls r4, r4, #3 + ldr r1, _081B6E74 + adds r4, r4, r1 + adds r1, r4, #0 + bl sub_080088B8 + ldr r0, _081B6E78 + bl sub_081B6A2C + ldr r1, _081B6E7C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6E80 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B6E64: .4byte gUnknown_203CB94 +_081B6E68: .4byte gUnknown_2024190 +_081B6E6C: .4byte gUnknown_2021C40 +_081B6E70: .4byte gUnknown_2021C54 +_081B6E74: .4byte gUnknown_82EACC4 +_081B6E78: .4byte gUnknown_85C9E35 +_081B6E7C: .4byte gUnknown_3005B60 +_081B6E80: .4byte sub_081B6E84 + thumb_func_end sub_081B6E04 + + thumb_func_start sub_081B6E84 +sub_081B6E84: @ 0x081B6E84 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6ED0 + ldr r5, _081B6ED8 + movs r1, #9 + ldrsb r1, [r5, r1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081B6EDC + adds r4, r4, r0 + bl sub_081C14C8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0806B46C + ldrh r5, [r5, #0xe] + bl sub_081C14C8 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08068D34 + adds r0, r6, #0 + bl sub_081B6B68 +_081B6ED0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B6ED8: .4byte gUnknown_203CB94 +_081B6EDC: .4byte gUnknown_2024190 + thumb_func_end sub_081B6E84 + + thumb_func_start sub_081B6EE0 +sub_081B6EE0: @ 0x081B6EE0 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081B6F28 + ldr r1, _081B6F2C + movs r2, #0xe + ldrsh r1, [r1, r2] + lsls r1, r1, #3 + ldr r2, _081B6F30 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _081B6F34 + ldr r1, _081B6F38 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B6F3C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B6F40 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B6F28: .4byte gUnknown_2021C54 +_081B6F2C: .4byte gUnknown_203CB94 +_081B6F30: .4byte gUnknown_82EACC4 +_081B6F34: .4byte gUnknown_2021C7C +_081B6F38: .4byte gUnknown_85C9DF2 +_081B6F3C: .4byte gUnknown_3005B60 +_081B6F40: .4byte sub_081B6F44 + thumb_func_end sub_081B6EE0 + + thumb_func_start sub_081B6F44 +sub_081B6F44: @ 0x081B6F44 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B6F68 + bl sub_081B2FDC + ldr r0, _081B6F70 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B6F74 + str r0, [r1] +_081B6F68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B6F70: .4byte gUnknown_3005B60 +_081B6F74: .4byte sub_081B6F78 + thumb_func_end sub_081B6F44 + + thumb_func_start sub_081B6F78 +sub_081B6F78: @ 0x081B6F78 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r7, _081B6FA8 + movs r1, #9 + ldrsb r1, [r7, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B6FAC + adds r4, r1, r0 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r5, r0, #0x18 + cmp r5, #0 + beq _081B6FB6 + cmp r5, #0 + bgt _081B6FB0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _081B7038 + b _081B706C + .align 2, 0 +_081B6FA8: .4byte gUnknown_203CB94 +_081B6FAC: .4byte gUnknown_2024190 +_081B6FB0: + cmp r5, #1 + beq _081B703E + b _081B706C +_081B6FB6: + ldr r1, _081B6FF8 + adds r0, r4, #0 + bl sub_081B1814 + ldr r0, _081B6FFC + movs r2, #0xe + ldrsh r1, [r7, r2] + lsls r1, r1, #3 + ldr r2, _081B7000 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _081B7004 + ldr r1, _081B7008 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r1, #0x10 + ldrsh r0, [r7, r1] + cmp r0, #1 + bne _081B7014 + ldr r0, _081B700C + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7010 + str r0, [r1] + b _081B706C + .align 2, 0 +_081B6FF8: .4byte gUnknown_2021C40 +_081B6FFC: .4byte gUnknown_2021C54 +_081B7000: .4byte gUnknown_82EACC4 +_081B7004: .4byte gUnknown_2021C7C +_081B7008: .4byte gUnknown_85C9E0D +_081B700C: .4byte gUnknown_3005B60 +_081B7010: .4byte sub_081B7090 +_081B7014: + cmp r0, #2 + bne _081B701C + ldr r0, _081B702C + strh r5, [r0] +_081B701C: + ldr r0, _081B7030 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7034 + str r0, [r1] + b _081B706C + .align 2, 0 +_081B702C: .4byte gUnknown_2037290 +_081B7030: .4byte gUnknown_3005B60 +_081B7034: .4byte sub_081B6434 +_081B7038: + movs r0, #5 + bl sub_080A306C +_081B703E: + ldr r1, _081B7074 + adds r0, r4, #0 + bl sub_081B1814 + ldr r0, _081B7078 + ldr r1, _081B707C + movs r2, #0xe + ldrsh r1, [r1, r2] + lsls r1, r1, #3 + ldr r2, _081B7080 + adds r1, r1, r2 + bl sub_080088B8 + ldr r0, _081B7084 + bl sub_081B6A2C + ldr r1, _081B7088 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B708C + str r1, [r0] +_081B706C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7074: .4byte gUnknown_2021C40 +_081B7078: .4byte gUnknown_2021C54 +_081B707C: .4byte gUnknown_203CB94 +_081B7080: .4byte gUnknown_82EACC4 +_081B7084: .4byte gUnknown_85C9DA1 +_081B7088: .4byte gUnknown_3005B60 +_081B708C: .4byte sub_081B6CA4 + thumb_func_end sub_081B6F78 + + thumb_func_start sub_081B7090 +sub_081B7090: @ 0x081B7090 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B70A8 + adds r0, r4, #0 + bl sub_081B7458 +_081B70A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B7090 + + thumb_func_start sub_081B70B0 +sub_081B70B0: @ 0x081B70B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B7114 + mov sb, r0 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B7118 + adds r5, r1, r0 + ldr r0, _081B711C + ldr r6, [r0] + movs r1, #0x86 + lsls r1, r1, #2 + adds r4, r6, r1 + ldr r2, _081B7120 + mov r8, r2 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x64 + beq _081B7124 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081B7644 + mov r1, sb + ldrb r0, [r1, #9] + mov r2, r8 + ldrh r1, [r2] + movs r2, #0 + bl sub_081B61C0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x89 + lsls r0, r0, #2 + adds r1, r6, r0 + adds r0, r5, #0 + bl sub_081B7644 + b _081B7126 + .align 2, 0 +_081B7114: .4byte gUnknown_203CB94 +_081B7118: .4byte gUnknown_2024190 +_081B711C: .4byte gUnknown_203CB90 +_081B7120: .4byte gUnknown_203CB48 +_081B7124: + movs r4, #1 +_081B7126: + movs r0, #5 + bl sub_080A306C + cmp r4, #0 + beq _081B7160 + ldr r1, _081B7154 + movs r0, #0 + strb r0, [r1] + ldr r0, _081B7158 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B715C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + mov r1, sl + b _081B71C2 + .align 2, 0 +_081B7154: .4byte gUnknown_203CBB4 +_081B7158: .4byte gUnknown_85C9AF7 +_081B715C: .4byte gUnknown_3005B60 +_081B7160: + ldr r1, _081B71D4 + movs r0, #1 + strb r0, [r1] + movs r0, #0 + bl sub_080A2928 + ldr r0, _081B71D8 + ldrb r0, [r0, #9] + adds r1, r5, #0 + bl sub_081B71F8 + ldr r0, _081B71DC + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC + ldr r1, _081B71E0 + adds r0, r5, #0 + bl sub_081B1814 + ldr r4, _081B71E4 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081B71E8 + ldr r1, _081B71EC + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B71F0 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B71F4 +_081B71C2: + str r1, [r0] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B71D4: .4byte gUnknown_203CBB4 +_081B71D8: .4byte gUnknown_203CB94 +_081B71DC: .4byte gUnknown_203CB48 +_081B71E0: .4byte gUnknown_2021C40 +_081B71E4: .4byte gUnknown_2021C54 +_081B71E8: .4byte gUnknown_2021C7C +_081B71EC: .4byte gUnknown_85C9F4E +_081B71F0: .4byte gUnknown_3005B60 +_081B71F4: .4byte sub_081B7280 + thumb_func_end sub_081B70B0 + + thumb_func_start sub_081B71F8 +sub_081B71F8: @ 0x081B71F8 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r7, r0, #0 + ldr r6, _081B7278 + lsls r4, r7, #4 + ldr r1, [r6] + adds r1, r1, r4 + adds r0, r5, #0 + bl sub_081B5D84 + ldr r2, _081B727C + ldr r0, [r6] + adds r3, r4, r0 + ldrb r1, [r3, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _081B7234 + adds r0, r5, #0 + adds r1, r3, #0 + movs r2, #1 + bl sub_081B2764 +_081B7234: + ldr r1, [r6] + adds r1, r1, r4 + adds r0, r5, #0 + movs r2, #1 + bl sub_081B2970 + ldr r1, [r6] + adds r1, r1, r4 + adds r0, r5, #0 + movs r2, #1 + bl sub_081B2A08 + ldr r1, [r6] + adds r1, r1, r4 + adds r0, r5, #0 + bl sub_081B2ABC + ldr r0, [r6] + adds r0, r4, r0 + ldrb r0, [r0, #9] + adds r1, r5, #0 + bl sub_081B57D8 + adds r0, r7, #0 + movs r1, #1 + bl sub_081B0C9C + movs r0, #0 + bl sub_08199654 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7278: .4byte gUnknown_203CBA8 +_081B727C: .4byte gUnknown_20205AC + thumb_func_end sub_081B71F8 + + thumb_func_start sub_081B7280 +sub_081B7280: @ 0x081B7280 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0 + bl sub_080A295C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B72CC + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B72CC + ldr r0, _081B72D4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081B72B2 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B72CC +_081B72B2: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B7328 + ldr r0, _081B72D8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B72DC + str r0, [r1] +_081B72CC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B72D4: .4byte gUnknown_3002360 +_081B72D8: .4byte gUnknown_3005B60 +_081B72DC: .4byte sub_081B72E0 + thumb_func_end sub_081B7280 + + thumb_func_start sub_081B72E0 +sub_081B72E0: @ 0x081B72E0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B731C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081B72FA + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B7314 +_081B72FA: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B7374 + ldr r0, _081B7320 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7324 + str r0, [r1] +_081B7314: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B731C: .4byte gUnknown_3002360 +_081B7320: .4byte gUnknown_3005B60 +_081B7324: .4byte sub_081B73B0 + thumb_func_end sub_081B72E0 + + thumb_func_start sub_081B7328 +sub_081B7328: @ 0x081B7328 + push {r4, r5, lr} + sub sp, #8 + ldr r0, _081B7370 + ldr r5, [r0] + movs r0, #0x86 + lsls r0, r0, #2 + adds r4, r5, r0 + bl sub_081B3004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x18] + ldrh r0, [r4, #0x18] + movs r1, #0x89 + lsls r1, r1, #2 + adds r2, r5, r1 + movs r1, #2 + str r1, [sp] + movs r1, #3 + str r1, [sp, #4] + adds r1, r4, #0 + movs r3, #1 + bl sub_081D2C70 + ldrb r0, [r4, #0x18] + movs r1, #2 + bl sub_08003528 + movs r0, #2 + bl sub_08199654 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B7370: .4byte gUnknown_203CB90 + thumb_func_end sub_081B7328 + + thumb_func_start sub_081B7374 +sub_081B7374: @ 0x081B7374 + push {r4, lr} + sub sp, #4 + ldr r0, _081B73AC + ldr r1, [r0] + movs r0, #0x86 + lsls r0, r0, #2 + adds r4, r1, r0 + ldrh r0, [r4, #0x18] + movs r2, #0x89 + lsls r2, r2, #2 + adds r1, r1, r2 + movs r2, #3 + str r2, [sp] + movs r2, #1 + movs r3, #2 + bl sub_081D2DB4 + ldrb r0, [r4, #0x18] + movs r1, #2 + bl sub_08003528 + movs r0, #2 + bl sub_08199654 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B73AC: .4byte gUnknown_203CB90 + thumb_func_end sub_081B7374 + + thumb_func_start sub_081B73B0 +sub_081B73B0: @ 0x081B73B0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #0 + bl sub_080A295C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B7452 + ldr r0, _081B7408 + ldrh r1, [r0, #0x2e] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _081B73D8 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B7452 +_081B73D8: + bl sub_081B3034 + ldr r4, _081B740C + movs r1, #9 + ldrsb r1, [r4, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B7410 + adds r0, r0, r1 + movs r1, #1 + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + strh r6, [r4, #0x10] + ldr r0, _081B7414 + cmp r1, r0 + beq _081B7434 + cmp r1, r0 + bgt _081B7418 + cmp r1, #0 + beq _081B7424 + b _081B744C + .align 2, 0 +_081B7408: .4byte gUnknown_3002360 +_081B740C: .4byte gUnknown_203CB94 +_081B7410: .4byte gUnknown_2024190 +_081B7414: .4byte 0x0000FFFE +_081B7418: + ldr r0, _081B7420 + cmp r1, r0 + beq _081B742C + b _081B744C + .align 2, 0 +_081B7420: .4byte 0x0000FFFF +_081B7424: + adds r0, r5, #0 + bl sub_081B74BC + b _081B7452 +_081B742C: + adds r0, r5, #0 + bl sub_081B7528 + b _081B7452 +_081B7434: + ldr r0, _081B7444 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7448 + str r0, [r1] + b _081B7452 + .align 2, 0 +_081B7444: .4byte gUnknown_3005B60 +_081B7448: .4byte sub_081B7458 +_081B744C: + adds r0, r5, #0 + bl sub_081B75B8 +_081B7452: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081B73B0 + + thumb_func_start sub_081B7458 +sub_081B7458: @ 0x081B7458 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B7488 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B748C + adds r0, r0, r1 + movs r1, #0 + bl sub_08068E58 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _081B7490 + cmp r1, r0 + beq _081B74B6 + cmp r1, r0 + bgt _081B7494 + cmp r1, #0 + beq _081B74A0 + b _081B74B0 + .align 2, 0 +_081B7488: .4byte gUnknown_203CB94 +_081B748C: .4byte gUnknown_2024190 +_081B7490: .4byte 0x0000FFFE +_081B7494: + ldr r0, _081B749C + cmp r1, r0 + beq _081B74A8 + b _081B74B0 + .align 2, 0 +_081B749C: .4byte 0x0000FFFF +_081B74A0: + adds r0, r4, #0 + bl sub_081B74BC + b _081B74B6 +_081B74A8: + adds r0, r4, #0 + bl sub_081B7528 + b _081B74B6 +_081B74B0: + adds r0, r4, #0 + bl sub_081B75B8 +_081B74B6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B7458 + + thumb_func_start sub_081B74BC +sub_081B74BC: @ 0x081B74BC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r6, _081B7500 + movs r1, #9 + ldrsb r1, [r6, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B7504 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806CB5C + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _081B750C + bl sub_081B03CC + ldr r0, _081B7508 + ldr r1, [r6] + str r1, [r0] + ldrb r3, [r6, #9] + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0813DB44 + adds r0, r5, #0 + bl sub_080A8964 + b _081B751A + .align 2, 0 +_081B7500: .4byte gUnknown_203CB94 +_081B7504: .4byte gUnknown_2024190 +_081B7508: .4byte gUnknown_3005F28 +_081B750C: + ldr r0, _081B7520 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7524 + str r0, [r1] +_081B751A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7520: .4byte gUnknown_3005B60 +_081B7524: .4byte sub_081B6434 + thumb_func_end sub_081B74BC + + thumb_func_start sub_081B7528 +sub_081B7528: @ 0x081B7528 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081B7590 + mov r8, r0 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B7594 + adds r0, r0, r1 + ldr r1, _081B7598 + bl sub_081B1814 + ldr r0, _081B759C + ldr r6, _081B75A0 + ldrh r1, [r6] + lsls r1, r1, #3 + ldr r2, _081B75A4 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _081B75A8 + ldr r1, _081B75AC + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldrh r0, [r6] + mov r1, r8 + strh r0, [r1, #0xe] + ldr r1, _081B75B0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B75B4 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B7590: .4byte gUnknown_203CB94 +_081B7594: .4byte gUnknown_2024190 +_081B7598: .4byte gUnknown_2021C40 +_081B759C: .4byte gUnknown_2021C54 +_081B75A0: .4byte gUnknown_2024186 +_081B75A4: .4byte gUnknown_82EACC4 +_081B75A8: .4byte gUnknown_2021C7C +_081B75AC: .4byte gUnknown_85C9DA1 +_081B75B0: .4byte gUnknown_3005B60 +_081B75B4: .4byte sub_081B6CA4 + thumb_func_end sub_081B7528 + + thumb_func_start sub_081B75B8 +sub_081B75B8: @ 0x081B75B8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + adds r5, r1, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + ldr r0, _081B7620 + mov r8, r0 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B7624 + adds r0, r0, r1 + ldr r1, _081B7628 + bl sub_081B1814 + ldr r0, _081B762C + lsls r1, r5, #3 + ldr r2, _081B7630 + adds r1, r1, r2 + bl sub_080088B8 + ldr r4, _081B7634 + ldr r1, _081B7638 + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + mov r0, r8 + strh r5, [r0, #0xe] + ldr r1, _081B763C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B7640 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B7620: .4byte gUnknown_203CB94 +_081B7624: .4byte gUnknown_2024190 +_081B7628: .4byte gUnknown_2021C40 +_081B762C: .4byte gUnknown_2021C54 +_081B7630: .4byte gUnknown_82EACC4 +_081B7634: .4byte gUnknown_2021C7C +_081B7638: .4byte gUnknown_85C9D68 +_081B763C: .4byte gUnknown_3005B60 +_081B7640: .4byte sub_081B6C10 + thumb_func_end sub_081B75B8 + + thumb_func_start sub_081B7644 +sub_081B7644: @ 0x081B7644 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + strh r0, [r5, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + strh r0, [r5, #4] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + strh r0, [r5, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + strh r0, [r5, #0xa] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + strh r0, [r5, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B7644 + + thumb_func_start sub_081B768C +sub_081B768C: @ 0x081B768C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B76C0 + ldr r2, [r1] + movs r3, #0x86 + lsls r3, r3, #2 + adds r1, r2, r3 + movs r3, #0 + strh r3, [r1] + ldr r4, _081B76C4 + adds r1, r2, r4 + strh r3, [r1] + ldr r1, _081B76C8 + ldrb r1, [r1, #9] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + movs r3, #0x87 + lsls r3, r3, #2 + adds r2, r2, r3 + strh r1, [r2] + bl sub_081B76CC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B76C0: .4byte gUnknown_203CB90 +_081B76C4: .4byte 0x0000021A +_081B76C8: .4byte gUnknown_203CB94 + thumb_func_end sub_081B768C + + thumb_func_start sub_081B76CC +sub_081B76CC: @ 0x081B76CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + mov r8, r4 + ldr r6, _081B7724 + movs r1, #9 + ldrsb r1, [r6, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B7728 + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B7712 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldrb r0, [r6, #9] + ldr r1, _081B772C + ldrh r1, [r1] + movs r2, #0 + bl sub_081B61C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B7738 +_081B7712: + ldr r0, _081B7730 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7734 + str r0, [r1] + b _081B77CE + .align 2, 0 +_081B7724: .4byte gUnknown_203CB94 +_081B7728: .4byte gUnknown_2024190 +_081B772C: .4byte gUnknown_203CB48 +_081B7730: .4byte gUnknown_3005B60 +_081B7734: .4byte sub_081B77F0 +_081B7738: + movs r0, #1 + bl sub_080A306C + ldr r4, _081B77DC + movs r0, #9 + ldrsb r0, [r6, r0] + lsls r0, r0, #4 + ldr r1, [r4] + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_081B5D84 + ldr r2, _081B77E0 + movs r0, #9 + ldrsb r0, [r6, r0] + ldr r1, [r4] + lsls r0, r0, #4 + adds r3, r0, r1 + ldrb r1, [r3, #0xc] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _081B777A + adds r0, r5, #0 + adds r1, r3, #0 + movs r2, #1 + bl sub_081B2764 +_081B777A: + ldr r4, _081B77E4 + ldr r0, [r4] + movs r1, #0x87 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_081B0C9C + ldrb r0, [r6, #9] + movs r1, #1 + bl sub_081B0C9C + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + subs r3, r3, r7 + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldrb r1, [r6, #9] + ldr r0, _081B77E8 + str r0, [sp] + mov r0, r8 + movs r2, #1 + bl sub_081B1BE8 + mov r0, r8 + movs r1, #0 + adds r2, r7, #0 + bl sub_081B1C78 + ldr r0, [r4] + movs r2, #0x86 + lsls r2, r2, #2 + adds r1, r0, r2 + movs r2, #1 + strh r2, [r1] + ldr r1, _081B77EC + adds r0, r0, r1 + strh r2, [r0] +_081B77CE: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B77DC: .4byte gUnknown_203CBA8 +_081B77E0: .4byte gUnknown_20205AC +_081B77E4: .4byte gUnknown_203CB90 +_081B77E8: .4byte sub_081B78B4 +_081B77EC: .4byte 0x0000021A + thumb_func_end sub_081B76CC + + thumb_func_start sub_081B77F0 +sub_081B77F0: @ 0x081B77F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B78AE + ldr r5, _081B7858 + ldr r2, [r5] + movs r0, #0x86 + lsls r0, r0, #2 + adds r1, r2, r0 + movs r3, #0 + ldrsh r0, [r1, r3] + ldr r3, _081B785C + cmp r0, #1 + bne _081B7826 + movs r0, #0 + strh r0, [r1] + movs r1, #9 + ldrsb r1, [r3, r1] + movs r6, #0x87 + lsls r6, r6, #2 + adds r0, r2, r6 + strh r1, [r0] +_081B7826: + ldrb r0, [r3, #9] + adds r0, #1 + strb r0, [r3, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #6 + bne _081B78A8 + ldr r0, [r5] + ldr r1, _081B7860 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + cmp r1, #0 + bne _081B786C + ldr r0, _081B7864 + strb r1, [r0] + ldr r0, _081B7868 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + b _081B787C + .align 2, 0 +_081B7858: .4byte gUnknown_203CB90 +_081B785C: .4byte gUnknown_203CB94 +_081B7860: .4byte 0x0000021A +_081B7864: .4byte gUnknown_203CBB4 +_081B7868: .4byte gUnknown_85C9AF7 +_081B786C: + ldr r1, _081B7894 + movs r0, #1 + strb r0, [r1] + ldr r0, _081B7898 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D62BC +_081B787C: + ldr r1, _081B789C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B78A0 + str r1, [r0] + ldr r1, _081B78A4 + movs r0, #0 + strb r0, [r1, #9] + b _081B78AE + .align 2, 0 +_081B7894: .4byte gUnknown_203CBB4 +_081B7898: .4byte gUnknown_203CB48 +_081B789C: .4byte gUnknown_3005B60 +_081B78A0: .4byte sub_081B6434 +_081B78A4: .4byte gUnknown_203CB94 +_081B78A8: + adds r0, r4, #0 + bl sub_081B76CC +_081B78AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081B77F0 + + thumb_func_start sub_081B78B4 +sub_081B78B4: @ 0x081B78B4 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081B78FC + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B7900 + adds r0, r0, r1 + ldr r1, _081B7904 + bl sub_081B1814 + ldr r4, _081B7908 + ldr r1, _081B790C + adds r0, r4, #0 + bl sub_08008BCC + adds r0, r4, #0 + movs r1, #0 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B7910 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B7914 + str r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B78FC: .4byte gUnknown_203CB94 +_081B7900: .4byte gUnknown_2024190 +_081B7904: .4byte gUnknown_2021C40 +_081B7908: .4byte gUnknown_2021C7C +_081B790C: .4byte gUnknown_85C9E8F +_081B7910: .4byte gUnknown_3005B60 +_081B7914: .4byte sub_081B77F0 + thumb_func_end sub_081B78B4 + + thumb_func_start sub_081B7918 +sub_081B7918: @ 0x081B7918 + push {r4, r5, r6, lr} + adds r6, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #5 + bl sub_080A306C + ldr r2, _081B7964 + ldr r1, _081B7968 + ldr r0, [r1] + str r0, [r2] + ldrb r0, [r1, #9] + ldr r4, _081B796C + ldrh r1, [r4] + movs r2, #0 + bl sub_081B61C0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B797C + ldr r1, _081B7970 + movs r0, #0 + strb r0, [r1] + ldr r0, _081B7974 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B7978 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + str r6, [r0] + b _081B7988 + .align 2, 0 +_081B7964: .4byte gUnknown_3005F28 +_081B7968: .4byte gUnknown_203CB94 +_081B796C: .4byte gUnknown_203CB48 +_081B7970: .4byte gUnknown_203CBB4 +_081B7974: .4byte gUnknown_85C9AF7 +_081B7978: .4byte gUnknown_3005B60 +_081B797C: + ldrh r0, [r4] + movs r1, #1 + bl sub_080D62BC + bl sub_081B03CC +_081B7988: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B7918 + + thumb_func_start sub_081B7990 +sub_081B7990: @ 0x081B7990 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + adds r2, r1, #0 + subs r2, #0xd + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xa5 + bls _081B79A4 + b _081B7AE4 +_081B79A4: + cmp r1, #0xaf + bne _081B79BC + ldr r0, _081B79B4 + ldr r0, [r0] + ldr r1, _081B79B8 + adds r4, r0, r1 + b _081B79C4 + .align 2, 0 +_081B79B4: .4byte gUnknown_3005AEC +_081B79B8: .4byte 0x00003214 +_081B79BC: + ldr r1, _081B79EC + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r4, [r0] +_081B79C4: + ldrb r1, [r4] + movs r5, #0x3f + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081B79E6 + ldrb r0, [r4, #1] + cmp r0, #0 + bne _081B79E6 + ldrb r0, [r4, #2] + cmp r0, #0 + bne _081B79E6 + ldrb r3, [r4, #3] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _081B79F0 +_081B79E6: + movs r0, #0 + b _081B7AEA + .align 2, 0 +_081B79EC: .4byte gUnknown_82EEF14 +_081B79F0: + movs r2, #0x40 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081B79FE + movs r0, #0xa + b _081B7AEA +_081B79FE: + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _081B7A0A + movs r0, #1 + b _081B7AEA +_081B7A0A: + adds r2, r5, #0 + ands r2, r3 + cmp r2, #0 + bne _081B7A18 + lsrs r0, r1, #7 + cmp r0, #0 + beq _081B7A5A +_081B7A18: + cmp r2, #0x20 + bne _081B7A20 + movs r0, #4 + b _081B7AEA +_081B7A20: + cmp r2, #0x10 + bne _081B7A28 + movs r0, #3 + b _081B7AEA +_081B7A28: + cmp r2, #8 + bne _081B7A30 + movs r0, #5 + b _081B7AEA +_081B7A30: + cmp r2, #4 + bne _081B7A38 + movs r0, #6 + b _081B7AEA +_081B7A38: + cmp r2, #2 + bne _081B7A40 + movs r0, #7 + b _081B7AEA +_081B7A40: + cmp r2, #1 + bne _081B7A48 + movs r0, #8 + b _081B7AEA +_081B7A48: + lsrs r0, r1, #7 + cmp r0, #0 + beq _081B7A56 + cmp r2, #0 + bne _081B7A56 + movs r0, #9 + b _081B7AEA +_081B7A56: + movs r0, #0xb + b _081B7AEA +_081B7A5A: + ldrb r1, [r4, #4] + movs r0, #0x44 + ands r0, r1 + adds r2, r1, #0 + cmp r0, #0 + beq _081B7A6A + movs r0, #2 + b _081B7AEA +_081B7A6A: + movs r5, #2 + adds r0, r5, #0 + ands r0, r2 + cmp r0, #0 + beq _081B7A78 + movs r0, #0xc + b _081B7AEA +_081B7A78: + movs r3, #1 + adds r0, r3, #0 + ands r0, r2 + cmp r0, #0 + beq _081B7A86 + movs r0, #0xd + b _081B7AEA +_081B7A86: + ldrb r1, [r4, #5] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081B7A94 + movs r0, #0xe + b _081B7AEA +_081B7A94: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081B7AA0 + movs r0, #0xf + b _081B7AEA +_081B7AA0: + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081B7AAC + movs r0, #0x10 + b _081B7AEA +_081B7AAC: + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _081B7AB8 + movs r0, #0x11 + b _081B7AEA +_081B7AB8: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _081B7AC4 + movs r0, #0x12 + b _081B7AEA +_081B7AC4: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _081B7AD0 + movs r0, #0x13 + b _081B7AEA +_081B7AD0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081B7ADC + movs r0, #0x14 + b _081B7AEA +_081B7ADC: + movs r0, #0x18 + ands r0, r2 + cmp r0, #0 + bne _081B7AE8 +_081B7AE4: + movs r0, #0x16 + b _081B7AEA +_081B7AE8: + movs r0, #0x15 +_081B7AEA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081B7990 + + thumb_func_start sub_081B7AF0 +sub_081B7AF0: @ 0x081B7AF0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081B7B70 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B7BBC + ldr r7, _081B7B74 + movs r1, #9 + ldrsb r1, [r7, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B7B78 + adds r5, r1, r0 + movs r0, #0xe + adds r0, r0, r7 + mov r8, r0 + ldr r1, _081B7B7C + adds r0, r5, #0 + bl sub_081B1814 + ldr r4, _081B7B80 + ldrb r0, [r4] + bl sub_081B2030 + strh r0, [r7, #0xe] + ldr r0, _081B7B84 + movs r2, #0xe + ldrsh r1, [r7, r2] + lsls r1, r1, #3 + ldr r2, _081B7B88 + adds r1, r1, r2 + bl sub_080088B8 + movs r0, #2 + mov r1, r8 + strh r0, [r1, #2] + ldrb r2, [r4] + adds r0, r5, #0 + movs r1, #0 + bl sub_081B1FA8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B7B90 + cmp r0, #2 + beq _081B7B98 + ldrh r1, [r7, #0xe] + adds r0, r5, #0 + bl sub_08068C6C + lsls r0, r0, #0x10 + ldr r1, _081B7B8C + cmp r0, r1 + beq _081B7BA8 + adds r0, r6, #0 + bl sub_081B6B68 + b _081B7BBC + .align 2, 0 +_081B7B70: .4byte gUnknown_2037C74 +_081B7B74: .4byte gUnknown_203CB94 +_081B7B78: .4byte gUnknown_2024190 +_081B7B7C: .4byte gUnknown_2021C40 +_081B7B80: .4byte gUnknown_2037282 +_081B7B84: .4byte gUnknown_2021C54 +_081B7B88: .4byte gUnknown_82EACC4 +_081B7B8C: .4byte 0xFFFF0000 +_081B7B90: + ldr r1, _081B7B94 + b _081B7B9A + .align 2, 0 +_081B7B94: .4byte gUnknown_85C9D7C +_081B7B98: + ldr r1, _081B7BA4 +_081B7B9A: + adds r0, r6, #0 + bl sub_081B6A50 + b _081B7BBC + .align 2, 0 +_081B7BA4: .4byte gUnknown_85C9E79 +_081B7BA8: + ldr r0, _081B7BC8 + bl sub_081B6A2C + ldr r1, _081B7BCC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B7BD0 + str r1, [r0] +_081B7BBC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7BC8: .4byte gUnknown_85C9DA1 +_081B7BCC: .4byte gUnknown_3005B60 +_081B7BD0: .4byte sub_081B6CA4 + thumb_func_end sub_081B7AF0 + + thumb_func_start sub_081B7BD4 +sub_081B7BD4: @ 0x081B7BD4 + push {lr} + sub sp, #0xc + movs r0, #0 + str r0, [sp] + ldr r0, _081B7BF8 + str r0, [sp, #4] + ldr r0, _081B7BFC + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B7BF8: .4byte sub_081B1040 +_081B7BFC: .4byte sub_08085AFC + thumb_func_end sub_081B7BD4 + + thumb_func_start sub_081B7C00 +sub_081B7C00: @ 0x081B7C00 + push {lr} + sub sp, #0xc + bl sub_081A9BB8 + lsls r0, r0, #0x18 + ldr r1, _081B7C38 + cmp r0, #0 + bne _081B7C12 + ldr r1, _081B7C3C +_081B7C12: + movs r0, #6 + str r0, [sp] + ldr r0, _081B7C40 + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #5 + movs r3, #0 + bl sub_081AFD10 + ldr r1, _081B7C44 + ldr r0, _081B7C48 + ldrh r0, [r0] + strh r0, [r1, #0xc] + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B7C38: .4byte sub_081C478C +_081B7C3C: .4byte sub_081B5EF4 +_081B7C40: .4byte sub_081B1040 +_081B7C44: .4byte gUnknown_203CB94 +_081B7C48: .4byte gUnknown_203CB48 + thumb_func_end sub_081B7C00 + + thumb_func_start sub_081B7C4C +sub_081B7C4C: @ 0x081B7C4C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r5, _081B7C8C + ldr r0, _081B7C90 + mov sb, r0 + ldrb r0, [r0, #9] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r7, _081B7C94 + adds r0, r0, r7 + movs r1, #0xc + bl sub_0806A058 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081B7C98 + adds r0, r4, #0 + bl sub_081B7CE4 + b _081B7CD0 + .align 2, 0 +_081B7C8C: .4byte gUnknown_203CBC8 +_081B7C90: .4byte gUnknown_203CB94 +_081B7C94: .4byte gUnknown_2024190 +_081B7C98: + ldrh r0, [r5] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B7CAC + adds r0, r4, #0 + bl sub_081B8058 + b _081B7CD0 +_081B7CAC: + mov r1, sb + movs r0, #9 + ldrsb r0, [r1, r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r7 + ldrh r1, [r5] + movs r2, #1 + bl sub_081B19EC + ldr r1, _081B7CDC + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B7CE0 + str r1, [r0] +_081B7CD0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7CDC: .4byte gUnknown_3005B60 +_081B7CE0: .4byte sub_081B7F40 + thumb_func_end sub_081B7C4C + + thumb_func_start sub_081B7CE4 +sub_081B7CE4: @ 0x081B7CE4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081B7D10 + ldrh r0, [r5, #0xc] + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B7D1C + ldrh r0, [r5, #0xc] + bl sub_081B8090 + ldr r0, _081B7D14 + ldr r1, [r0] + ldr r0, _081B7D18 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_081B0F90 + b _081B7D22 + .align 2, 0 +_081B7D10: .4byte gUnknown_203CB94 +_081B7D14: .4byte gUnknown_203CB90 +_081B7D18: .4byte sub_081B7DEC +_081B7D1C: + adds r0, r4, #0 + bl sub_081B7D28 +_081B7D22: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081B7CE4 + + thumb_func_start sub_081B7D28 +sub_081B7D28: @ 0x081B7D28 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081B7D90 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B7D84 + ldr r4, _081B7D94 + ldrh r5, [r4, #0xc] + movs r0, #9 + ldrsb r0, [r4, r0] + movs r1, #0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + ldr r6, _081B7D98 + adds r0, r0, r6 + adds r1, r5, #0 + movs r2, #0 + movs r3, #1 + bl sub_081B1954 + movs r0, #9 + ldrsb r0, [r4, r0] + mov r1, r8 + muls r1, r0, r1 + adds r0, r1, #0 + adds r0, r0, r6 + adds r1, r5, #0 + bl sub_081B1A88 + adds r0, r5, #0 + bl sub_081B8090 + ldr r1, _081B7D9C + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B7DA0 + str r1, [r0] +_081B7D84: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7D90: .4byte gUnknown_2037C74 +_081B7D94: .4byte gUnknown_203CB94 +_081B7D98: .4byte gUnknown_2024190 +_081B7D9C: .4byte gUnknown_3005B60 +_081B7DA0: .4byte sub_081B7DA4 + thumb_func_end sub_081B7D28 + + thumb_func_start sub_081B7DA4 +sub_081B7DA4: @ 0x081B7DA4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B7DE0 + ldrb r4, [r0, #9] + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B7DD8 + lsls r2, r4, #0x18 + asrs r2, r2, #0x18 + movs r0, #0x64 + muls r0, r2, r0 + ldr r1, _081B7DE4 + adds r0, r0, r1 + ldr r1, _081B7DE8 + lsls r2, r2, #4 + ldr r1, [r1] + adds r1, r1, r2 + bl sub_081B5934 + adds r0, r5, #0 + bl sub_081B0F90 +_081B7DD8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B7DE0: .4byte gUnknown_203CB94 +_081B7DE4: .4byte gUnknown_2024190 +_081B7DE8: .4byte gUnknown_203CBA8 + thumb_func_end sub_081B7DA4 + + thumb_func_start sub_081B7DEC +sub_081B7DEC: @ 0x081B7DEC + push {r4, r5, r6, lr} + ldr r4, _081B7E34 + movs r0, #9 + ldrsb r0, [r4, r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _081B7E38 + adds r0, r0, r5 + ldrh r1, [r4, #0xc] + bl sub_081B1A88 + movs r0, #9 + ldrsb r0, [r4, r0] + muls r0, r6, r0 + adds r0, r0, r5 + movs r1, #0x40 + bl sub_0806A058 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B7E3C + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _081B7E40 + adds r2, r2, r0 + ldr r1, [r1] + adds r1, r1, r2 + ldr r2, _081B7E44 + movs r0, #4 + movs r3, #3 + bl sub_0811AA5C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B7E34: .4byte gUnknown_203CB94 +_081B7E38: .4byte gUnknown_2024190 +_081B7E3C: .4byte gUnknown_3005AEC +_081B7E40: .4byte 0x00002BE0 +_081B7E44: .4byte sub_081B7E48 + thumb_func_end sub_081B7DEC + + thumb_func_start sub_081B7E48 +sub_081B7E48: @ 0x081B7E48 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, _081B7E98 + movs r1, #9 + ldrsb r1, [r6, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B7E9C + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldr r0, _081B7EA0 + ldrh r0, [r0] + cmp r0, #0 + bne _081B7EA8 + adds r0, r5, #0 + bl sub_080D3F04 + ldr r4, _081B7EA4 + adds r0, r5, #0 + movs r1, #0xc + adds r2, r4, #0 + bl sub_0806A774 + ldrh r0, [r4] + movs r1, #1 + bl sub_080D62BC + adds r0, r7, #0 + bl sub_081B80BC + ldr r0, [r6] + bl sub_08000540 + b _081B7EC4 + .align 2, 0 +_081B7E98: .4byte gUnknown_203CB94 +_081B7E9C: .4byte gUnknown_2024190 +_081B7EA0: .4byte gUnknown_2037290 +_081B7EA4: .4byte gUnknown_203CBC8 +_081B7EA8: + ldrb r0, [r6, #8] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r2, [r6, #0xb] + movs r1, #0x7f + str r1, [sp] + ldr r1, _081B7ECC + str r1, [sp, #4] + ldr r1, [r6] + str r1, [sp, #8] + movs r1, #0xff + movs r3, #1 + bl sub_081AFD10 +_081B7EC4: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B7ECC: .4byte sub_081B7ED0 + thumb_func_end sub_081B7E48 + + thumb_func_start sub_081B7ED0 +sub_081B7ED0: @ 0x081B7ED0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B7EF8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B7F2A + ldr r1, _081B7EFC + ldrh r0, [r1] + cmp r0, #0 + beq _081B7F04 + ldr r0, _081B7F00 + ldrh r0, [r0, #0xc] + ldrh r1, [r1] + movs r2, #0 + bl sub_081B1A38 + b _081B7F1C + .align 2, 0 +_081B7EF8: .4byte gUnknown_2037C74 +_081B7EFC: .4byte gUnknown_203CBC8 +_081B7F00: .4byte gUnknown_203CB94 +_081B7F04: + ldr r2, _081B7F30 + movs r1, #9 + ldrsb r1, [r2, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B7F34 + adds r0, r0, r1 + ldrh r1, [r2, #0xc] + movs r2, #0 + movs r3, #1 + bl sub_081B1954 +_081B7F1C: + ldr r0, _081B7F38 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7F3C + str r0, [r1] +_081B7F2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B7F30: .4byte gUnknown_203CB94 +_081B7F34: .4byte gUnknown_2024190 +_081B7F38: .4byte gUnknown_3005B60 +_081B7F3C: .4byte sub_081B7DA4 + thumb_func_end sub_081B7ED0 + + thumb_func_start sub_081B7F40 +sub_081B7F40: @ 0x081B7F40 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081B18A4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B7F64 + bl sub_081B2FDC + ldr r0, _081B7F6C + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B7F70 + str r0, [r1] +_081B7F64: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B7F6C: .4byte gUnknown_3005B60 +_081B7F70: .4byte sub_081B7F74 + thumb_func_end sub_081B7F40 + + thumb_func_start sub_081B7F74 +sub_081B7F74: @ 0x081B7F74 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08198D68 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + beq _081B7F9A + cmp r1, #0 + bgt _081B7F94 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081B8034 + b _081B8048 +_081B7F94: + cmp r1, #1 + beq _081B803A + b _081B8048 +_081B7F9A: + ldr r7, _081B7FCC + ldrh r4, [r7, #0xc] + adds r0, r4, #0 + bl sub_081B8090 + ldr r6, _081B7FD0 + ldrh r0, [r6] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B7FD8 + adds r0, r4, #0 + bl sub_081B80BC + ldrh r0, [r6] + bl sub_081B1B18 + ldr r0, _081B7FD4 + movs r1, #0 + bl sub_081B182C + b _081B8018 + .align 2, 0 +_081B7FCC: .4byte gUnknown_203CB94 +_081B7FD0: .4byte gUnknown_203CBC8 +_081B7FD4: .4byte gUnknown_2021C7C +_081B7FD8: + adds r0, r4, #0 + bl sub_080D4040 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B7FFC + ldr r0, _081B7FF4 + ldr r1, [r0] + ldr r0, _081B7FF8 + str r0, [r1, #4] + adds r0, r5, #0 + bl sub_081B0F90 + b _081B8048 + .align 2, 0 +_081B7FF4: .4byte gUnknown_203CB90 +_081B7FF8: .4byte sub_081B7DEC +_081B7FFC: + movs r1, #9 + ldrsb r1, [r7, r1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B8028 + adds r0, r0, r1 + adds r1, r4, #0 + bl sub_081B1A88 + ldrh r1, [r6] + adds r0, r4, #0 + movs r2, #1 + bl sub_081B1A38 +_081B8018: + ldr r1, _081B802C + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B8030 + str r1, [r0] + b _081B8048 + .align 2, 0 +_081B8028: .4byte gUnknown_2024190 +_081B802C: .4byte gUnknown_3005B60 +_081B8030: .4byte sub_081B7DA4 +_081B8034: + movs r0, #5 + bl sub_080A306C +_081B803A: + ldr r0, _081B8050 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B8054 + str r0, [r1] +_081B8048: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B8050: .4byte gUnknown_3005B60 +_081B8054: .4byte sub_081B7DA4 + thumb_func_end sub_081B7F74 + + thumb_func_start sub_081B8058 +sub_081B8058: @ 0x081B8058 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081B8084 + movs r1, #1 + bl sub_081B182C + movs r0, #2 + bl sub_08199654 + ldr r1, _081B8088 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081B808C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B8084: .4byte gUnknown_85C9C5C +_081B8088: .4byte gUnknown_3005B60 +_081B808C: .4byte sub_081B7DA4 + thumb_func_end sub_081B8058 + + thumb_func_start sub_081B8090 +sub_081B8090: @ 0x081B8090 + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _081B80AC + ldrb r0, [r0, #0xb] + cmp r0, #6 + bne _081B80B0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_080D6660 + b _081B80B8 + .align 2, 0 +_081B80AC: .4byte gUnknown_203CB94 +_081B80B0: + adds r0, r1, #0 + movs r1, #1 + bl sub_080D62BC +_081B80B8: + pop {r0} + bx r0 + thumb_func_end sub_081B8090 + + thumb_func_start sub_081B80BC +sub_081B80BC: @ 0x081B80BC + push {lr} + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + ldr r0, _081B80D4 + ldrb r0, [r0, #0xb] + cmp r0, #5 + beq _081B80D8 + adds r0, r1, #0 + movs r1, #1 + bl sub_080D6588 + b _081B80E0 + .align 2, 0 +_081B80D4: .4byte gUnknown_203CB94 +_081B80D8: + adds r0, r1, #0 + movs r1, #1 + bl sub_080D6140 +_081B80E0: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_081B80BC + + thumb_func_start sub_081B80E8 +sub_081B80E8: @ 0x081B80E8 + push {lr} + sub sp, #0xc + movs r0, #6 + str r0, [sp] + ldr r0, _081B810C + str r0, [sp, #4] + ldr r0, _081B8110 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #7 + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B810C: .4byte sub_081B1040 +_081B8110: .4byte sub_0816B968 + thumb_func_end sub_081B80E8 + + thumb_func_start sub_081B8114 +sub_081B8114: @ 0x081B8114 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081B8160 + movs r1, #9 + ldrsb r1, [r0, r1] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081B8164 + adds r5, r1, r0 + ldr r1, _081B8168 + movs r0, #0 + strb r0, [r1] + ldr r2, _081B816C + ldr r0, _081B8170 + ldrh r1, [r0] + adds r1, #6 + ldrh r0, [r0, #2] + adds r1, r1, r0 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081B8174 + adds r0, r0, r1 + ldr r1, [r2] + adds r4, r1, r0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + beq _081B817C + ldr r0, _081B8178 + movs r1, #1 + bl sub_081B182C + b _081B8192 + .align 2, 0 +_081B8160: .4byte gUnknown_203CB94 +_081B8164: .4byte gUnknown_2024190 +_081B8168: .4byte gUnknown_203CBB4 +_081B816C: .4byte gUnknown_3005AEC +_081B8170: .4byte gUnknown_203B984 +_081B8174: .4byte 0x00002BE0 +_081B8178: .4byte gUnknown_85C9D0C +_081B817C: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D3E90 + adds r0, r4, #0 + bl sub_080D3C3C + ldr r0, _081B81AC + movs r1, #1 + bl sub_081B182C +_081B8192: + movs r0, #2 + bl sub_08199654 + ldr r0, _081B81B0 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B81B4 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B81AC: .4byte gUnknown_85C9D32 +_081B81B0: .4byte gUnknown_3005B60 +_081B81B4: .4byte sub_081B7DA4 + thumb_func_end sub_081B8114 + + thumb_func_start sub_081B81B8 +sub_081B81B8: @ 0x081B81B8 + push {lr} + sub sp, #0xc + bl sub_081B81F8 + movs r0, #0 + str r0, [sp] + ldr r0, _081B81E8 + str r0, [sp, #4] + ldr r0, _081B81EC + ldr r0, [r0, #8] + str r0, [sp, #8] + movs r0, #4 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + ldr r1, _081B81F0 + ldr r0, _081B81F4 + str r0, [r1, #4] + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B81E8: .4byte sub_081B1040 +_081B81EC: .4byte gUnknown_3002360 +_081B81F0: .4byte gUnknown_203CB94 +_081B81F4: .4byte sub_081B843C + thumb_func_end sub_081B81B8 + + thumb_func_start sub_081B81F8 +sub_081B81F8: @ 0x081B81F8 + push {lr} + ldr r0, _081B8208 + movs r1, #0 + movs r2, #4 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_081B8208: .4byte gUnknown_203CBC4 + thumb_func_end sub_081B81F8 + + thumb_func_start sub_081B820C +sub_081B820C: @ 0x081B820C + push {r4, lr} + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B8228 + adds r0, r0, r1 + bl sub_081B824C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B822C + movs r0, #2 + b _081B8244 + .align 2, 0 +_081B8228: .4byte gUnknown_2024190 +_081B822C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081B8410 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B8242 + movs r0, #0 + b _081B8244 +_081B8242: + movs r0, #1 +_081B8244: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B820C + + thumb_func_start sub_081B824C +sub_081B824C: @ 0x081B824C + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081B82A8 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + bl sub_081B8528 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + bhi _081B82A8 + ldr r0, _081B82AC + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _081B82B0 + cmp r1, r0 + bne _081B828A + adds r0, r5, #0 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + bne _081B82A8 +_081B828A: + ldr r0, _081B82B4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + beq _081B82EA + cmp r0, #9 + bne _081B82B8 + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081B82EA +_081B82A8: + movs r0, #0 + b _081B82EC + .align 2, 0 +_081B82AC: .4byte gUnknown_3005AEC +_081B82B0: .4byte 0x0000191A +_081B82B4: .4byte 0x000040CF +_081B82B8: + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r3, _081B82F4 + lsls r1, r6, #1 + adds r0, r1, r3 + ldrh r0, [r0] + ldr r2, _081B82F8 + cmp r0, r2 + beq _081B82EA +_081B82D2: + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r4 + beq _081B82A8 + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r6, #1 + adds r0, r1, r3 + ldrh r0, [r0] + cmp r0, r2 + bne _081B82D2 +_081B82EA: + movs r0, #1 +_081B82EC: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081B82F4: .4byte gUnknown_85DD48E +_081B82F8: .4byte 0x0000FFFF + thumb_func_end sub_081B824C + + thumb_func_start sub_081B82FC +sub_081B82FC: @ 0x081B82FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + bl sub_081B84FC + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r1, r2, #0 + ldr r3, _081B8324 + adds r0, r2, r3 + subs r0, #1 + ldrb r0, [r0] + cmp r0, #0 + bne _081B833C + cmp r2, #1 + bne _081B8328 + movs r0, #0xe + b _081B83F8 + .align 2, 0 +_081B8324: .4byte gUnknown_203CBC4 +_081B8328: + ldr r0, _081B8338 + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + movs r0, #0x11 + b _081B83F8 + .align 2, 0 +_081B8338: .4byte gUnknown_2021C40 +_081B833C: + ldr r0, _081B8354 + bl sub_0809CF6C + lsls r0, r0, #0x18 + movs r1, #0xf8 + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081B8360 + b _081B83F6 + .align 2, 0 +_081B8354: .4byte 0x000040CF +_081B8358: + movs r0, #0x12 + b _081B83F8 +_081B835C: + movs r0, #0x13 + b _081B83F8 +_081B8360: + bl sub_081B84D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r5, #0 + b _081B83F0 +_081B836E: + ldr r3, _081B8408 + adds r4, r3, r5 + ldrb r0, [r4] + movs r1, #0x64 + muls r0, r1, r0 + subs r0, #0x64 + ldr r3, _081B840C + adds r0, r3, r0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + ldrb r0, [r4] + movs r1, #0x64 + muls r0, r1, r0 + subs r0, #0x64 + ldr r3, _081B840C + adds r0, r3, r0 + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r1, r5, #1 + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + mov sb, r1 + cmp r4, r8 + bhs _081B83E8 + movs r7, #0x64 +_081B83AE: + ldr r0, _081B8408 + adds r5, r0, r4 + ldrb r0, [r5] + muls r0, r7, r0 + subs r0, #0x64 + ldr r1, _081B840C + adds r0, r1, r0 + movs r1, #0xb + bl sub_0806A058 + cmp sl, r0 + beq _081B8358 + cmp r6, #0 + beq _081B83DE + ldrb r0, [r5] + muls r0, r7, r0 + subs r0, #0x64 + ldr r3, _081B840C + adds r0, r3, r0 + movs r1, #0xc + bl sub_0806A058 + cmp r6, r0 + beq _081B835C +_081B83DE: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, r8 + blo _081B83AE +_081B83E8: + mov r1, sb + lsls r0, r1, #0x18 + lsrs r5, r0, #0x18 + mov r0, r8 +_081B83F0: + subs r0, #1 + cmp r5, r0 + blt _081B836E +_081B83F6: + movs r0, #0xff +_081B83F8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081B8408: .4byte gUnknown_203CBC4 +_081B840C: .4byte gUnknown_2024190 + thumb_func_end sub_081B82FC + + thumb_func_start sub_081B8410 +sub_081B8410: @ 0x081B8410 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0 + ldr r3, _081B8428 +_081B841A: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r2 + bne _081B842C + movs r0, #1 + b _081B8438 + .align 2, 0 +_081B8428: .4byte gUnknown_203CBC4 +_081B842C: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _081B841A + movs r0, #0 +_081B8438: + pop {r1} + bx r1 + thumb_func_end sub_081B8410 + + thumb_func_start sub_081B843C +sub_081B843C: @ 0x081B843C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_081B82FC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0xff + beq _081B8474 + movs r0, #0x20 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081B2CD8 + ldr r0, _081B846C + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B8470 + str r0, [r1] + b _081B8480 + .align 2, 0 +_081B846C: .4byte gUnknown_3005B60 +_081B8470: .4byte sub_081B8488 +_081B8474: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081B0F90 +_081B8480: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B843C + + thumb_func_start sub_081B8488 +sub_081B8488: @ 0x081B8488 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081B84C4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081B84A2 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081B84BC +_081B84A2: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081B2CD8 + ldr r0, _081B84C8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B84CC + str r0, [r1] +_081B84BC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B84C4: .4byte gUnknown_3002360 +_081B84C8: .4byte gUnknown_3005B60 +_081B84CC: .4byte sub_081B1040 + thumb_func_end sub_081B8488 + + thumb_func_start sub_081B84D0 +sub_081B84D0: @ 0x081B84D0 + push {lr} + ldr r0, _081B84E8 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + beq _081B84EC + cmp r0, #9 + bne _081B84F0 + movs r0, #3 + b _081B84F4 + .align 2, 0 +_081B84E8: .4byte 0x000040CF +_081B84EC: + movs r0, #2 + b _081B84F4 +_081B84F0: + ldr r0, _081B84F8 + ldrb r0, [r0] +_081B84F4: + pop {r1} + bx r1 + .align 2, 0 +_081B84F8: .4byte gUnknown_2037282 + thumb_func_end sub_081B84D0 + + thumb_func_start sub_081B84FC +sub_081B84FC: @ 0x081B84FC + push {lr} + ldr r0, _081B8514 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + beq _081B8518 + cmp r0, #9 + bne _081B851C + movs r0, #1 + b _081B8520 + .align 2, 0 +_081B8514: .4byte 0x000040CF +_081B8518: + movs r0, #2 + b _081B8520 +_081B851C: + ldr r0, _081B8524 + ldrb r0, [r0] +_081B8520: + pop {r1} + bx r1 + .align 2, 0 +_081B8524: .4byte gUnknown_2037282 + thumb_func_end sub_081B84FC + + thumb_func_start sub_081B8528 +sub_081B8528: @ 0x081B8528 + push {lr} + ldr r0, _081B8540 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + beq _081B8544 + cmp r0, #9 + bne _081B8548 +_081B853C: + movs r0, #0x64 + b _081B8552 + .align 2, 0 +_081B8540: .4byte 0x000040CF +_081B8544: + movs r0, #0x1e + b _081B8552 +_081B8548: + ldr r0, _081B8558 + ldrh r0, [r0] + cmp r0, #0 + bne _081B853C + movs r0, #0x32 +_081B8552: + pop {r1} + bx r1 + .align 2, 0 +_081B8558: .4byte gUnknown_2037280 + thumb_func_end sub_081B8528 + + thumb_func_start sub_081B855C +sub_081B855C: @ 0x081B855C + push {lr} + ldr r0, _081B8578 + bl sub_0809CF6C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r2, #0xf8 + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _081B8580 + ldr r0, _081B857C + b _081B859A + .align 2, 0 +_081B8578: .4byte 0x000040CF +_081B857C: .4byte gUnknown_85CA21C +_081B8580: + cmp r1, #1 + bne _081B8598 + ldr r0, _081B8590 + ldrh r0, [r0] + cmp r0, #2 + bne _081B8598 + ldr r0, _081B8594 + b _081B859A + .align 2, 0 +_081B8590: .4byte gUnknown_2037282 +_081B8594: .4byte gUnknown_85CA229 +_081B8598: + ldr r0, _081B85A0 +_081B859A: + pop {r1} + bx r1 + .align 2, 0 +_081B85A0: .4byte gUnknown_85CA238 + thumb_func_end sub_081B855C + + thumb_func_start sub_081B85A4 +sub_081B85A4: @ 0x081B85A4 + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0 + str r2, [sp] + ldr r2, _081B85C8 + str r2, [sp, #4] + str r1, [sp, #8] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B85C8: .4byte sub_081B1040 + thumb_func_end sub_081B85A4 + + thumb_func_start sub_081B85CC +sub_081B85CC: @ 0x081B85CC + push {lr} + sub sp, #0xc + movs r0, #4 + str r0, [sp] + ldr r0, _081B85F0 + str r0, [sp, #4] + ldr r0, _081B85F4 + str r0, [sp, #8] + movs r0, #0 + movs r1, #0 + movs r2, #0xc + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B85F0: .4byte sub_081B1040 +_081B85F4: .4byte sub_08085B34 + thumb_func_end sub_081B85CC + + thumb_func_start sub_081B85F8 +sub_081B85F8: @ 0x081B85F8 + push {lr} + sub sp, #0xc + movs r0, #1 + str r0, [sp] + ldr r0, _081B861C + str r0, [sp, #4] + ldr r0, _081B8620 + str r0, [sp, #8] + movs r0, #0xb + movs r1, #0 + movs r2, #0xd + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B861C: .4byte sub_081B1040 +_081B8620: .4byte sub_08085B34 + thumb_func_end sub_081B85F8 + + thumb_func_start sub_081B8624 +sub_081B8624: @ 0x081B8624 + push {lr} + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B8634 + movs r0, #0 + b _081B8646 +_081B8634: + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081B8644 + movs r0, #1 + b _081B8646 +_081B8644: + movs r0, #2 +_081B8646: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081B8624 + + thumb_func_start sub_081B864C +sub_081B864C: @ 0x081B864C + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081B8624 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #0 + str r0, [sp] + ldr r0, _081B8688 + str r0, [sp, #4] + ldr r0, _081B868C + str r0, [sp, #8] + movs r0, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_081AFD10 + bl sub_080A8BBC + bl sub_081B8CD0 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B8688: .4byte sub_081B1040 +_081B868C: .4byte sub_0805995C + thumb_func_end sub_081B864C + + thumb_func_start sub_081B8690 +sub_081B8690: @ 0x081B8690 + push {lr} + sub sp, #0xc + bl sub_081B8624 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r0, #5 + str r0, [sp] + ldr r0, _081B86C4 + str r0, [sp, #4] + ldr r0, _081B86C8 + str r0, [sp, #8] + movs r0, #1 + movs r2, #3 + movs r3, #0 + bl sub_081AFD10 + bl sub_080A8BBC + bl sub_081B8CD0 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B86C4: .4byte sub_081B1040 +_081B86C8: .4byte sub_081B5EF4 + thumb_func_end sub_081B8690 + + thumb_func_start sub_081B86CC +sub_081B86CC: @ 0x081B86CC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081B86F4 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B8714 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081B8714 + ldr r0, _081B86F8 + ldrb r0, [r0, #0xb] + cmp r0, #1 + bne _081B86FC + movs r0, #3 + b _081B8716 + .align 2, 0 +_081B86F4: .4byte gUnknown_20241F4 +_081B86F8: .4byte gUnknown_203CB94 +_081B86FC: + ldr r0, _081B8710 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + bne _081B8714 + movs r0, #2 + b _081B8716 + .align 2, 0 +_081B8710: .4byte gUnknown_2022C90 +_081B8714: + movs r0, #7 +_081B8716: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081B86CC + + thumb_func_start sub_081B871C +sub_081B871C: @ 0x081B871C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B8764 + cmp r5, #1 + beq _081B8742 + cmp r5, #4 + beq _081B8742 + cmp r5, #5 + bne _081B8764 +_081B8742: + ldr r4, _081B8758 + bl sub_0806E684 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r0, _081B875C + ldr r1, _081B8760 + b _081B88E2 + .align 2, 0 +_081B8758: .4byte gUnknown_2021C40 +_081B875C: .4byte gUnknown_2021C7C +_081B8760: .4byte gUnknown_85C9B76 +_081B8764: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081B8788 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + bne _081B8798 + ldr r1, _081B878C + adds r0, r4, #0 + bl sub_081B1814 + ldr r0, _081B8790 + ldr r1, _081B8794 + b _081B88E2 + .align 2, 0 +_081B8788: .4byte gUnknown_2024190 +_081B878C: .4byte gUnknown_2021C40 +_081B8790: .4byte gUnknown_2021C7C +_081B8794: .4byte gUnknown_85C9B59 +_081B8798: + movs r4, #0 + b _081B87C4 +_081B879C: + adds r0, r4, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B87BE + adds r0, r5, #0 + bl sub_081B8BD8 + lsls r0, r0, #0x18 + ldr r2, _081B87EC + lsls r1, r4, #1 + adds r1, r1, r2 + lsrs r0, r0, #0x18 + ldrh r1, [r1] + cmp r0, r1 + beq _081B889C +_081B87BE: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081B87C4: + ldr r0, _081B87F0 + ldrb r0, [r0] + cmp r4, r0 + blo _081B879C + movs r7, #0x64 + adds r0, r5, #0 + muls r0, r7, r0 + ldr r1, _081B87F4 + mov r8, r1 + adds r6, r0, r1 + adds r0, r6, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + beq _081B8800 + ldr r0, _081B87F8 + ldr r1, _081B87FC + b _081B88E2 + .align 2, 0 +_081B87EC: .4byte gUnknown_2023D12 +_081B87F0: .4byte gUnknown_2023D10 +_081B87F4: .4byte gUnknown_2024190 +_081B87F8: .4byte gUnknown_2021C7C +_081B87FC: .4byte gUnknown_85C9B9D +_081B8800: + adds r0, r5, #0 + bl sub_081B8BD8 + ldr r1, _081B8824 + ldr r1, [r1] + adds r1, #0x8b + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + bne _081B8834 + ldr r1, _081B8828 + adds r0, r6, #0 + bl sub_081B1814 + ldr r0, _081B882C + ldr r1, _081B8830 + b _081B88E2 + .align 2, 0 +_081B8824: .4byte gUnknown_2024140 +_081B8828: .4byte gUnknown_2021C40 +_081B882C: .4byte gUnknown_2021C7C +_081B8830: .4byte gUnknown_85C9B43 +_081B8834: + ldr r0, _081B8844 + ldrb r0, [r0, #0xb] + cmp r0, #4 + bne _081B8848 + bl sub_0806E420 + b _081B88E6 + .align 2, 0 +_081B8844: .4byte gUnknown_203CB94 +_081B8848: + cmp r0, #2 + beq _081B88C0 + adds r0, r5, #0 + bl sub_081B8BD8 + ldr r1, _081B888C + strb r0, [r1] + ldr r1, _081B8890 + movs r0, #1 + strb r0, [r1] + ldr r1, _081B8894 + ldr r0, _081B8898 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081B8C8C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081B8C50 + adds r0, r4, #0 + muls r0, r7, r0 + add r0, r8 + adds r1, r6, #0 + bl sub_081B0F58 + movs r0, #1 + b _081B88E8 + .align 2, 0 +_081B888C: .4byte gUnknown_203CBB5 +_081B8890: .4byte gUnknown_203CBB4 +_081B8894: .4byte gUnknown_2023D12 +_081B8898: .4byte gUnknown_202415C +_081B889C: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081B88B0 + adds r0, r0, r1 + ldr r1, _081B88B4 + bl sub_081B1814 + ldr r0, _081B88B8 + ldr r1, _081B88BC + b _081B88E2 + .align 2, 0 +_081B88B0: .4byte gUnknown_2024190 +_081B88B4: .4byte gUnknown_2021C40 +_081B88B8: .4byte gUnknown_2021C7C +_081B88BC: .4byte gUnknown_85C9B2D +_081B88C0: + ldr r0, _081B88F4 + ldrb r0, [r0] + ldr r1, _081B88F8 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081B8C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r7, r0 + add r0, r8 + ldr r1, _081B88FC + bl sub_081B1814 + ldr r0, _081B8900 + ldr r1, _081B8904 +_081B88E2: + bl sub_08008BCC +_081B88E6: + movs r0, #0 +_081B88E8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081B88F4: .4byte gUnknown_202415C +_081B88F8: .4byte gUnknown_2023D12 +_081B88FC: .4byte gUnknown_2021C40 +_081B8900: .4byte gUnknown_2021C7C +_081B8904: .4byte gUnknown_85C9B1A + thumb_func_end sub_081B871C + + thumb_func_start sub_081B8908 +sub_081B8908: @ 0x081B8908 + push {r4, lr} + ldr r4, _081B8924 + bl sub_0806D288 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_081B8928 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B8924: .4byte gUnknown_203CBCC + thumb_func_end sub_081B8908 + + thumb_func_start sub_081B8928 +sub_081B8928: @ 0x081B8928 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B895E + cmp r4, #0 + beq _081B8950 + movs r0, #0x30 + strb r0, [r6] + movs r0, #0x45 + strb r0, [r6, #1] + movs r0, #0x12 + strb r0, [r6, #2] + b _081B89F8 +_081B8950: + movs r0, #3 + strb r0, [r6] + movs r0, #0x12 + strb r0, [r6, #1] + movs r0, #0x45 + strb r0, [r6, #2] + b _081B89F8 +_081B895E: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B899C + movs r5, #1 + movs r0, #0 + bl sub_080A631C + mov r2, sp + ldr r1, _081B8998 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r1 + ldrh r0, [r0] + strb r0, [r2] + movs r4, #0 + mov r1, sp +_081B8982: + ldrb r0, [r1] + cmp r4, r0 + beq _081B8990 + mov r2, sp + adds r0, r2, r5 + strb r4, [r0] + adds r5, #1 +_081B8990: + adds r4, #1 + cmp r4, #5 + ble _081B8982 + b _081B89E0 + .align 2, 0 +_081B8998: .4byte gUnknown_2023D12 +_081B899C: + movs r5, #2 + movs r0, #0 + bl sub_080A631C + mov r1, sp + ldr r4, _081B8A00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r0, [r0] + strb r0, [r1] + movs r0, #2 + bl sub_080A631C + mov r1, sp + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r0, [r0] + strb r0, [r1, #1] + movs r4, #0 +_081B89C6: + ldrb r0, [r1] + cmp r4, r0 + beq _081B89DA + ldrb r0, [r1, #1] + cmp r4, r0 + beq _081B89DA + mov r2, sp + adds r0, r2, r5 + strb r4, [r0] + adds r5, #1 +_081B89DA: + adds r4, #1 + cmp r4, #5 + ble _081B89C6 +_081B89E0: + movs r4, #0 + mov r3, sp +_081B89E4: + adds r0, r6, r4 + ldrb r1, [r3] + lsls r1, r1, #4 + ldrb r2, [r3, #1] + orrs r1, r2 + strb r1, [r0] + adds r3, #2 + adds r4, #1 + cmp r4, #2 + ble _081B89E4 +_081B89F8: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B8A00: .4byte gUnknown_2023D12 + thumb_func_end sub_081B8928 + + thumb_func_start sub_081B8A04 +sub_081B8A04: @ 0x081B8A04 + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r0, _081B8A24 + lsls r3, r2, #1 + adds r3, r3, r2 + adds r3, #0x60 + ldr r0, [r0] + adds r0, r0, r3 + bl sub_081B8A28 + pop {r0} + bx r0 + .align 2, 0 +_081B8A24: .4byte gUnknown_2024140 + thumb_func_end sub_081B8A04 + + thumb_func_start sub_081B8A28 +sub_081B8A28: @ 0x081B8A28 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r5, r0, #0 + adds r0, r2, #0 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B8A50 + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #2 + b _081B8A5C +_081B8A50: + movs r0, #1 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #3 +_081B8A5C: + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081B8A90 + cmp r7, #0 + beq _081B8A82 + movs r0, #0x30 + strb r0, [r5] + movs r0, #0x45 + strb r0, [r5, #1] + movs r0, #0x12 + strb r0, [r5, #2] + b _081B8B12 +_081B8A82: + movs r0, #3 + strb r0, [r5] + movs r0, #0x12 + strb r0, [r5, #1] + movs r0, #0x45 + strb r0, [r5, #2] + b _081B8B12 +_081B8A90: + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081B8AC8 + movs r3, #1 + mov r2, sp + ldr r1, _081B8AC4 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strb r0, [r2] + movs r4, #0 + mov r1, sp +_081B8AAC: + ldrb r0, [r1] + cmp r4, r0 + beq _081B8ABA + mov r2, sp + adds r0, r2, r3 + strb r4, [r0] + adds r3, #1 +_081B8ABA: + adds r4, #1 + cmp r4, #5 + ble _081B8AAC + b _081B8AFA + .align 2, 0 +_081B8AC4: .4byte gUnknown_2023D12 +_081B8AC8: + movs r3, #2 + mov r1, sp + ldr r2, _081B8B1C + lsls r0, r4, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + lsls r0, r6, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1, #1] + movs r4, #0 +_081B8AE0: + ldrb r0, [r1] + cmp r4, r0 + beq _081B8AF4 + ldrb r0, [r1, #1] + cmp r4, r0 + beq _081B8AF4 + mov r2, sp + adds r0, r2, r3 + strb r4, [r0] + adds r3, #1 +_081B8AF4: + adds r4, #1 + cmp r4, #5 + ble _081B8AE0 +_081B8AFA: + movs r4, #0 + mov r3, sp +_081B8AFE: + adds r0, r5, r4 + ldrb r1, [r3] + lsls r1, r1, #4 + ldrb r2, [r3, #1] + orrs r1, r2 + strb r1, [r0] + adds r3, #2 + adds r4, #1 + cmp r4, #2 + ble _081B8AFE +_081B8B12: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B8B1C: .4byte gUnknown_2023D12 + thumb_func_end sub_081B8A28 + + thumb_func_start sub_081B8B20 +sub_081B8B20: @ 0x081B8B20 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + movs r7, #0 + bl sub_081B0F20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B8BCE + ldr r0, _081B8B84 + lsls r1, r4, #1 + adds r1, r1, r4 + adds r1, #0x60 + ldr r0, [r0] + adds r4, r0, r1 + movs r2, #0 + add r6, sp + mov ip, r6 + movs r6, #0xf + mov r3, sp +_081B8B52: + adds r1, r4, r2 + ldrb r0, [r1] + lsrs r0, r0, #4 + strb r0, [r3] + adds r3, #1 + ldrb r1, [r1] + adds r0, r6, #0 + ands r0, r1 + strb r0, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #2 + ble _081B8B52 + mov r0, ip + ldrb r3, [r0] + movs r2, #0 + mov r0, sp + ldrb r0, [r0] + cmp r0, r5 + bne _081B8B88 + mov r0, sp + ldrb r7, [r0] + strb r3, [r0] + b _081B8B9C + .align 2, 0 +_081B8B84: .4byte gUnknown_2024140 +_081B8B88: + adds r2, #1 + cmp r2, #5 + bgt _081B8B9C + mov r0, sp + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, r5 + bne _081B8B88 + adds r7, r0, #0 + strb r3, [r1] +_081B8B9C: + cmp r2, #6 + beq _081B8BCE + mov r0, ip + strb r7, [r0] + mov r0, sp + ldrb r0, [r0] + lsls r0, r0, #4 + mov r1, sp + ldrb r1, [r1, #1] + orrs r0, r1 + strb r0, [r4] + mov r0, sp + ldrb r0, [r0, #2] + lsls r0, r0, #4 + mov r1, sp + ldrb r1, [r1, #3] + orrs r0, r1 + strb r0, [r4, #1] + mov r0, sp + ldrb r0, [r0, #4] + lsls r0, r0, #4 + mov r1, sp + ldrb r1, [r1, #5] + orrs r0, r1 + strb r0, [r4, #2] +_081B8BCE: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B8B20 + + thumb_func_start sub_081B8BD8 +sub_081B8BD8: @ 0x081B8BD8 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #1 + ands r1, r2 + lsrs r2, r0, #0x19 + cmp r1, #0 + beq _081B8BF8 + ldr r0, _081B8BF4 + adds r0, r2, r0 + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + b _081B8C00 + .align 2, 0 +_081B8BF4: .4byte gUnknown_203CBCC +_081B8BF8: + ldr r0, _081B8C08 + adds r0, r2, r0 + ldrb r0, [r0] + lsrs r1, r0, #4 +_081B8C00: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_081B8C08: .4byte gUnknown_203CBCC + thumb_func_end sub_081B8BD8 + + thumb_func_start sub_081B8C0C +sub_081B8C0C: @ 0x081B8C0C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + movs r1, #1 + ands r1, r3 + lsrs r3, r0, #0x19 + cmp r1, #0 + beq _081B8C34 + ldr r0, _081B8C30 + adds r0, r3, r0 + ldrb r2, [r0] + movs r1, #0xf0 + ands r1, r2 + orrs r1, r4 + strb r1, [r0] + b _081B8C44 + .align 2, 0 +_081B8C30: .4byte gUnknown_203CBCC +_081B8C34: + ldr r2, _081B8C4C + adds r2, r3, r2 + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + lsls r1, r4, #4 + orrs r0, r1 + strb r0, [r2] +_081B8C44: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B8C4C: .4byte gUnknown_203CBCC + thumb_func_end sub_081B8C0C + + thumb_func_start sub_081B8C50 +sub_081B8C50: @ 0x081B8C50 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + adds r0, r5, #0 + bl sub_081B8BD8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_081B8BD8 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_081B8C0C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081B8C0C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B8C50 + + thumb_func_start sub_081B8C8C +sub_081B8C8C: @ 0x081B8C8C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r3, #0 + movs r2, #0 + ldr r5, _081B8CB4 +_081B8C98: + adds r0, r3, r5 + ldrb r1, [r0] + lsrs r0, r1, #4 + cmp r0, r4 + beq _081B8CB0 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r0, #0xf + ands r0, r1 + cmp r0, r4 + bne _081B8CB8 +_081B8CB0: + adds r0, r2, #0 + b _081B8CCA + .align 2, 0 +_081B8CB4: .4byte gUnknown_203CBCC +_081B8CB8: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #2 + bls _081B8C98 + movs r0, #0 +_081B8CCA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081B8C8C + + thumb_func_start sub_081B8CD0 +sub_081B8CD0: @ 0x081B8CD0 + push {r4, r5, r6, lr} + movs r4, #0x96 + lsls r4, r4, #2 + adds r0, r4, #0 + bl sub_08000BC8 + adds r5, r0, #0 + ldr r1, _081B8D1C + adds r2, r4, #0 + bl memcpy + movs r4, #0 + movs r6, #0x64 +_081B8CEA: + adds r0, r4, #0 + bl sub_081B8C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + ldr r1, _081B8D1C + adds r0, r0, r1 + adds r1, r4, #0 + muls r1, r6, r1 + adds r1, r1, r5 + movs r2, #0x64 + bl memcpy + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081B8CEA + adds r0, r5, #0 + bl sub_08000BF0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B8D1C: .4byte gUnknown_2024190 + thumb_func_end sub_081B8CD0 + + thumb_func_start sub_081B8D20 +sub_081B8D20: @ 0x081B8D20 + push {r4, r5, r6, lr} + movs r4, #0x96 + lsls r4, r4, #2 + adds r0, r4, #0 + bl sub_08000BC8 + adds r5, r0, #0 + ldr r1, _081B8D6C + adds r2, r4, #0 + bl memcpy + movs r4, #0 + movs r6, #0x64 +_081B8D3A: + adds r0, r4, #0 + bl sub_081B8BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r6, r0 + ldr r1, _081B8D6C + adds r0, r0, r1 + adds r1, r4, #0 + muls r1, r6, r1 + adds r1, r1, r5 + movs r2, #0x64 + bl memcpy + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081B8D3A + adds r0, r5, #0 + bl sub_08000BF0 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B8D6C: .4byte gUnknown_2024190 + thumb_func_end sub_081B8D20 + + thumb_func_start sub_081B8D70 +sub_081B8D70: @ 0x081B8D70 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #1 + movs r7, #0x64 + ldr r0, _081B8DC8 + mov r8, r0 +_081B8D7E: + adds r0, r6, #0 + bl sub_081B8BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + muls r0, r7, r0 + mov r1, r8 + adds r5, r0, r1 + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081B8DCC + adds r0, r5, #0 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081B8DCC + movs r0, #0 + bl sub_081B8BD8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + adds r1, r6, #0 + bl sub_081B8C50 + adds r0, r4, #0 + muls r0, r7, r0 + add r0, r8 + adds r1, r5, #0 + bl sub_081B0F58 + b _081B8DD6 + .align 2, 0 +_081B8DC8: .4byte gUnknown_2024190 +_081B8DCC: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #5 + bls _081B8D7E +_081B8DD6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081B8D70 + + thumb_func_start sub_081B8DE0 +sub_081B8DE0: @ 0x081B8DE0 + push {lr} + ldr r0, _081B8DEC + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081B8DEC: .4byte sub_0805995C + thumb_func_end sub_081B8DE0 + + thumb_func_start sub_081B8DF0 +sub_081B8DF0: @ 0x081B8DF0 + push {lr} + sub sp, #0xc + movs r0, #0x7f + str r0, [sp] + ldr r0, _081B8E14 + str r0, [sp, #4] + ldr r0, _081B8E18 + ldr r0, [r0, #8] + str r0, [sp, #8] + movs r0, #5 + movs r1, #3 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B8E14: .4byte sub_081B8E1C +_081B8E18: .4byte gUnknown_3002360 + thumb_func_end sub_081B8DF0 + + thumb_func_start sub_081B8E1C +sub_081B8E1C: @ 0x081B8E1C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081B8E4C + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + adds r4, r4, r1 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r4, #8] + bl sub_081B8F34 + movs r1, #0x80 + lsls r1, r1, #9 + movs r0, #2 + movs r2, #0 + bl sub_08001D1C + ldr r0, _081B8E50 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B8E4C: .4byte gUnknown_3005B60 +_081B8E50: .4byte sub_081B8E54 + thumb_func_end sub_081B8E1C + + thumb_func_start sub_081B8E54 +sub_081B8E54: @ 0x081B8E54 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r6, r5, #2 + adds r0, r6, r5 + lsls r0, r0, #3 + ldr r1, _081B8EC8 + adds r4, r0, r1 + ldr r0, _081B8ECC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081B8EC0 + ldrh r0, [r4] + subs r0, #8 + strh r0, [r4] + adds r0, r5, #0 + bl sub_081B8F34 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081B8EC0 + movs r4, #3 + ldr r7, _081B8ED0 +_081B8E88: + subs r0, r4, #3 + lsls r0, r0, #5 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, #0 + beq _081B8EA4 + ldr r0, _081B8ED4 + ldr r1, [r0] + lsls r0, r4, #4 + adds r0, r0, r1 + ldrb r0, [r0, #9] + movs r1, #0 + bl sub_081B580C +_081B8EA4: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #5 + bls _081B8E88 + movs r0, #0x78 + bl sub_080A306C + ldr r0, _081B8ED8 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081B8EDC + str r0, [r1] +_081B8EC0: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B8EC8: .4byte gUnknown_3005B68 +_081B8ECC: .4byte gUnknown_2037C74 +_081B8ED0: .4byte gUnknown_2022C9C +_081B8ED4: .4byte gUnknown_203CBA8 +_081B8ED8: .4byte gUnknown_3005B60 +_081B8EDC: .4byte sub_081B8EE0 + thumb_func_end sub_081B8E54 + + thumb_func_start sub_081B8EE0 +sub_081B8EE0: @ 0x081B8EE0 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081B8F0C + adds r0, r0, r1 + ldrh r1, [r0] + adds r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x11 + cmp r1, r0 + bne _081B8F06 + adds r0, r2, #0 + bl sub_081B0F90 +_081B8F06: + pop {r0} + bx r0 + .align 2, 0 +_081B8F0C: .4byte gUnknown_3005B68 + thumb_func_end sub_081B8EE0 + + thumb_func_start sub_081B8F10 +sub_081B8F10: @ 0x081B8F10 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + cmp r1, #0 + blt _081B8F2A + ldr r1, _081B8F30 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strh r3, [r0, #0x24] +_081B8F2A: + pop {r0} + bx r0 + .align 2, 0 +_081B8F30: .4byte gUnknown_20205AC + thumb_func_end sub_081B8F10 + + thumb_func_start sub_081B8F34 +sub_081B8F34: @ 0x081B8F34 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081B8FBC + adds r5, r1, r0 + movs r6, #3 + ldr r7, _081B8FC0 +_081B8F48: + ldr r0, _081B8FC4 + subs r1, r6, #3 + lsls r1, r1, #5 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _081B8FA0 + ldr r0, [r7] + lsls r4, r6, #4 + adds r0, r4, r0 + ldrb r0, [r0, #9] + ldrh r1, [r5] + subs r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081B8F10 + ldr r0, [r7] + adds r0, r4, r0 + ldrb r0, [r0, #0xa] + ldrh r1, [r5] + subs r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081B8F10 + ldr r0, [r7] + adds r0, r4, r0 + ldrb r0, [r0, #0xb] + ldrh r1, [r5] + subs r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081B8F10 + ldr r0, [r7] + adds r4, r4, r0 + ldrb r0, [r4, #0xc] + ldrh r1, [r5] + subs r1, #8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081B8F10 +_081B8FA0: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #5 + bls _081B8F48 + movs r1, #0x80 + lsls r1, r1, #4 + movs r0, #2 + movs r2, #1 + bl sub_08001D1C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B8FBC: .4byte gUnknown_3005B68 +_081B8FC0: .4byte gUnknown_203CBA8 +_081B8FC4: .4byte gUnknown_2022C9C + thumb_func_end sub_081B8F34 + + thumb_func_start sub_081B8FC8 +sub_081B8FC8: @ 0x081B8FC8 + push {lr} + sub sp, #0xc + movs r0, #0xf + str r0, [sp] + ldr r0, _081B8FEC + str r0, [sp, #4] + ldr r0, _081B8FF0 + str r0, [sp, #8] + movs r0, #6 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B8FEC: .4byte sub_081B1040 +_081B8FF0: .4byte sub_081B9030 + thumb_func_end sub_081B8FC8 + + thumb_func_start sub_081B8FF4 +sub_081B8FF4: @ 0x081B8FF4 + push {lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081B9020 + ldr r1, _081B9024 + str r1, [r2] + movs r1, #0 + str r1, [sp] + ldr r1, _081B9028 + str r1, [sp, #4] + ldr r1, _081B902C + str r1, [sp, #8] + movs r1, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081AFD10 + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081B9020: .4byte gUnknown_3005B10 +_081B9024: .4byte sub_081B9068 +_081B9028: .4byte sub_081B1040 +_081B902C: .4byte sub_08085A30 + thumb_func_end sub_081B8FF4 + + thumb_func_start sub_081B9030 +sub_081B9030: @ 0x081B9030 + push {r4, lr} + ldr r4, _081B9058 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + cmp r0, #5 + bls _081B9046 + movs r0, #0xff + strh r0, [r4] +_081B9046: + ldr r0, _081B905C + ldr r1, _081B9060 + str r1, [r0] + ldr r0, _081B9064 + bl sub_08000540 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B9058: .4byte gUnknown_2037280 +_081B905C: .4byte gUnknown_3005B10 +_081B9060: .4byte sub_081B9068 +_081B9064: .4byte sub_08085A30 + thumb_func_end sub_081B9030 + + thumb_func_start sub_081B9068 +sub_081B9068: @ 0x081B9068 + push {lr} + bl sub_080AE99C + ldr r0, _081B907C + movs r1, #0xa + bl sub_080A8878 + movs r0, #1 + pop {r1} + bx r1 + .align 2, 0 +_081B907C: .4byte sub_081B9080 + thumb_func_end sub_081B9068 + + thumb_func_start sub_081B9080 +sub_081B9080: @ 0x081B9080 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_080AB6F8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081B909E + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080987E8 + bl sub_080988C4 +_081B909E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081B9080 + + thumb_func_start sub_081B90A4 +sub_081B90A4: @ 0x081B90A4 + push {lr} + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _081B90C0 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081B90C0: .4byte sub_081B90C4 + thumb_func_end sub_081B90A4 + + thumb_func_start sub_081B90C4 +sub_081B90C4: @ 0x081B90C4 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B9104 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081B90FC + bl sub_0808569C + str r4, [sp] + ldr r0, _081B9108 + str r0, [sp, #4] + ldr r0, _081B910C + str r0, [sp, #8] + movs r0, #2 + movs r1, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081AFD10 + adds r0, r5, #0 + bl sub_080A8964 +_081B90FC: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B9104: .4byte gUnknown_2037C74 +_081B9108: .4byte sub_081B1040 +_081B910C: .4byte sub_081B9110 + thumb_func_end sub_081B90C4 + + thumb_func_start sub_081B9110 +sub_081B9110: @ 0x081B9110 + push {lr} + bl sub_081B1024 + ldr r2, _081B913C + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _081B9126 + movs r0, #0xff + strb r0, [r2] +_081B9126: + ldr r1, _081B9140 + ldrb r0, [r2] + strh r0, [r1] + ldr r1, _081B9144 + ldr r0, _081B9148 + str r0, [r1] + ldr r0, _081B914C + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081B913C: .4byte gUnknown_2039BC4 +_081B9140: .4byte gUnknown_2037280 +_081B9144: .4byte gUnknown_3005B10 +_081B9148: .4byte sub_081B9068 +_081B914C: .4byte sub_08085A30 + thumb_func_end sub_081B9110 + + thumb_func_start sub_081B9150 +sub_081B9150: @ 0x081B9150 + push {lr} + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _081B916C + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081B916C: .4byte sub_081B9170 + thumb_func_end sub_081B9150 + + thumb_func_start sub_081B9170 +sub_081B9170: @ 0x081B9170 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B91B0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081B91A8 + bl sub_0808569C + str r4, [sp] + ldr r0, _081B91B4 + str r0, [sp, #4] + ldr r0, _081B91B8 + str r0, [sp, #8] + movs r0, #3 + movs r1, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081AFD10 + adds r0, r5, #0 + bl sub_080A8964 +_081B91A8: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B91B0: .4byte gUnknown_2037C74 +_081B91B4: .4byte sub_081B1040 +_081B91B8: .4byte sub_081B9030 + thumb_func_end sub_081B9170 + + thumb_func_start sub_081B91BC +sub_081B91BC: @ 0x081B91BC + push {lr} + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _081B91D8 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081B91D8: .4byte sub_081B91DC + thumb_func_end sub_081B91BC + + thumb_func_start sub_081B91DC +sub_081B91DC: @ 0x081B91DC + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B921C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081B9214 + bl sub_0808569C + str r4, [sp] + ldr r0, _081B9220 + str r0, [sp, #4] + ldr r0, _081B9224 + str r0, [sp, #8] + movs r0, #7 + movs r1, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081AFD10 + adds r0, r5, #0 + bl sub_080A8964 +_081B9214: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B921C: .4byte gUnknown_2037C74 +_081B9220: .4byte sub_081B1040 +_081B9224: .4byte sub_081B9228 + thumb_func_end sub_081B91DC + + thumb_func_start sub_081B9228 +sub_081B9228: @ 0x081B9228 + push {r4, r5, lr} + ldr r5, _081B9240 + bl sub_081B1024 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + cmp r0, #5 + bls _081B9244 + movs r0, #0xff + strh r0, [r5] + b _081B925A + .align 2, 0 +_081B9240: .4byte gUnknown_2037280 +_081B9244: + ldr r4, _081B926C + ldrh r1, [r5] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B9270 + adds r0, r0, r1 + bl sub_0806DCF0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] +_081B925A: + ldr r0, _081B9274 + ldr r1, _081B9278 + str r1, [r0] + ldr r0, _081B927C + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B926C: .4byte gUnknown_2037282 +_081B9270: .4byte gUnknown_2024190 +_081B9274: .4byte gUnknown_3005B10 +_081B9278: .4byte sub_081B9068 +_081B927C: .4byte sub_08085A30 + thumb_func_end sub_081B9228 + + thumb_func_start sub_081B9280 +sub_081B9280: @ 0x081B9280 + push {r4, r5, lr} + ldr r1, _081B9290 + movs r0, #0 + strh r0, [r1] + movs r4, #0 + adds r5, r1, #0 + b _081B929A + .align 2, 0 +_081B9290: .4byte gUnknown_2037290 +_081B9294: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081B929A: + cmp r4, #2 + bhi _081B92B4 + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081B92BC + adds r0, r0, r1 + movs r1, #0xc + bl sub_0806A058 + cmp r0, #0 + beq _081B9294 + movs r0, #1 + strh r0, [r5] +_081B92B4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B92BC: .4byte gUnknown_2024190 + thumb_func_end sub_081B9280 + + thumb_func_start sub_081B92C0 +sub_081B92C0: @ 0x081B92C0 + push {lr} + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _081B92DC + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081B92DC: .4byte sub_081B92E0 + thumb_func_end sub_081B92C0 + + thumb_func_start sub_081B92E0 +sub_081B92E0: @ 0x081B92E0 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081B9320 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081B9318 + bl sub_0808569C + str r4, [sp] + ldr r0, _081B9324 + str r0, [sp, #4] + ldr r0, _081B9328 + str r0, [sp, #8] + movs r0, #0xc + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_081AFD10 + adds r0, r5, #0 + bl sub_080A8964 +_081B9318: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B9320: .4byte gUnknown_2037C74 +_081B9324: .4byte sub_081B1040 +_081B9328: .4byte sub_081B9030 + thumb_func_end sub_081B92E0 + + thumb_func_start sub_081B932C +sub_081B932C: @ 0x081B932C + push {lr} + sub sp, #4 + ldr r1, _081B9358 + ldr r0, _081B935C + ldrb r2, [r0] + ldr r0, _081B9360 + ldrb r3, [r0] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _081B9364 + str r0, [sp] + movs r0, #3 + bl sub_081BF280 + ldr r1, _081B9368 + ldr r0, _081B936C + str r0, [r1] + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081B9358: .4byte gUnknown_2024190 +_081B935C: .4byte gUnknown_2037280 +_081B9360: .4byte gUnknown_202418D +_081B9364: .4byte sub_08085A30 +_081B9368: .4byte gUnknown_3005B0C +_081B936C: .4byte sub_080AEA64 + thumb_func_end sub_081B932C + + thumb_func_start sub_081B9370 +sub_081B9370: @ 0x081B9370 + push {r4, r5, lr} + ldr r1, _081B93AC + movs r0, #0 + strh r0, [r1] + movs r4, #0 + adds r5, r1, #0 +_081B937C: + ldr r0, _081B93B0 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B93B4 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0xd + bl sub_0806A058 + cmp r0, #0 + beq _081B939A + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_081B939A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081B937C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B93AC: .4byte gUnknown_2037290 +_081B93B0: .4byte gUnknown_2037280 +_081B93B4: .4byte gUnknown_2024190 + thumb_func_end sub_081B9370 + + thumb_func_start sub_081B93B8 +sub_081B93B8: @ 0x081B93B8 + push {r4, r5, lr} + ldr r0, _081B93F8 + ldrh r1, [r0] + movs r0, #0x64 + adds r5, r1, #0 + muls r5, r0, r5 + ldr r0, _081B93FC + adds r5, r5, r0 + ldr r0, _081B9400 + ldrh r1, [r0] + adds r1, #0xd + adds r0, r5, #0 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r1, _081B9404 + adds r0, r5, #0 + bl sub_081B1814 + ldr r0, _081B9408 + lsls r4, r4, #3 + ldr r1, _081B940C + adds r4, r4, r1 + adds r1, r4, #0 + bl sub_080088B8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B93F8: .4byte gUnknown_2037280 +_081B93FC: .4byte gUnknown_2024190 +_081B9400: .4byte gUnknown_2037282 +_081B9404: .4byte gUnknown_2021C40 +_081B9408: .4byte gUnknown_2021C54 +_081B940C: .4byte gUnknown_82EACC4 + thumb_func_end sub_081B93B8 + + thumb_func_start sub_081B9410 +sub_081B9410: @ 0x081B9410 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081B9470 + mov r8, r0 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _081B9474 + adds r0, r0, r5 + ldr r4, _081B9478 + ldrb r2, [r4] + movs r1, #0 + bl sub_08068D34 + mov r1, r8 + ldrh r0, [r1] + muls r0, r6, r0 + adds r0, r0, r5 + ldrb r1, [r4] + bl sub_0806B46C + ldrh r4, [r4] + cmp r4, #2 + bhi _081B9464 +_081B9442: + ldr r0, _081B9470 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B9474 + adds r0, r0, r1 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + adds r4, #1 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + bl sub_081B947C + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #2 + bls _081B9442 +_081B9464: + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081B9470: .4byte gUnknown_2037280 +_081B9474: .4byte gUnknown_2024190 +_081B9478: .4byte gUnknown_2037282 + thumb_func_end sub_081B9410 + + thumb_func_start sub_081B947C +sub_081B947C: @ 0x081B947C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + mov r8, r0 + adds r5, r1, #0 + adds r4, r2, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + adds r0, #0xd + str r0, [sp, #8] + mov r0, r8 + ldr r1, [sp, #8] + bl sub_0806A058 + mov r1, sp + adds r1, #2 + 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_0806A058 + 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_0806A058 + mov r1, sp + adds r1, #5 + 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_0806A058 + add r7, sp, #4 + mov sl, r7 + strb r0, [r7] + mov r0, r8 + movs r1, #0x15 + bl sub_0806A058 + mov r6, sp + adds r6, #6 + strb r0, [r6] + ldr r1, _081B9578 + adds r0, r5, r1 + ldrb r0, [r0] + mov sb, r0 + ldrb r0, [r6] + adds r2, r0, #0 + mov r3, sb + ands r2, r3 + lsls r5, r5, #1 + asrs r2, r5 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r4, r1 + ldrb r3, [r1] + adds r1, r0, #0 + ands r1, r3 + lsls r4, r4, #1 + asrs r1, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r7, sb + bics r0, r7 + strb r0, [r6] + ldrb r0, [r6] + bics r0, r3 + strb r0, [r6] + lsls r2, r4 + lsls r1, r5 + adds r2, r2, r1 + ldrb r0, [r6] + orrs r0, r2 + strb r0, [r6] + mov r0, r8 + ldr r1, [sp, #8] + mov r2, sp + bl sub_0806A774 + mov r0, r8 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x14] + bl sub_0806A774 + mov r0, r8 + ldr r1, [sp, #0x10] + mov r2, sl + bl sub_0806A774 + mov r0, r8 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x18] + bl sub_0806A774 + mov r0, r8 + movs r1, #0x15 + adds r2, r6, #0 + bl sub_0806A774 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B9578: .4byte gUnknown_82FA6AA + thumb_func_end sub_081B947C + + thumb_func_start sub_081B957C +sub_081B957C: @ 0x081B957C + push {lr} + ldr r0, _081B95A0 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B95A4 + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + adds r1, r0, #0 + cmp r1, #0 + beq _081B95AC + ldr r1, _081B95A8 + movs r0, #1 + strh r0, [r1] + b _081B95B0 + .align 2, 0 +_081B95A0: .4byte gUnknown_2037280 +_081B95A4: .4byte gUnknown_2024190 +_081B95A8: .4byte gUnknown_2037290 +_081B95AC: + ldr r0, _081B95B4 + strh r1, [r0] +_081B95B0: + pop {r0} + bx r0 + .align 2, 0 +_081B95B4: .4byte gUnknown_2037290 + thumb_func_end sub_081B957C + + thumb_func_start sub_081B95B8 +sub_081B95B8: @ 0x081B95B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _081B95E8 + movs r0, #0 + strh r0, [r1] + ldr r0, _081B95EC + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081B95F0 + adds r0, r0, r1 + ldr r1, _081B95F4 + ldrh r1, [r1] + adds r1, #0xd + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #0x39 + bne _081B963C + movs r6, #0 + b _081B9620 + .align 2, 0 +_081B95E8: .4byte gUnknown_2037290 +_081B95EC: .4byte gUnknown_2037280 +_081B95F0: .4byte gUnknown_2024190 +_081B95F4: .4byte gUnknown_2037282 +_081B95F8: + ldr r0, _081B9648 + ldrh r0, [r0] + cmp r6, r0 + beq _081B961E + movs r4, #0 + movs r0, #0x64 + adds r5, r6, #0 + muls r5, r0, r5 + ldr r7, _081B964C +_081B960A: + adds r1, r4, #0 + adds r1, #0xd + adds r0, r5, r7 + bl sub_0806A058 + cmp r0, #0x39 + beq _081B963C + adds r4, #1 + cmp r4, #3 + bls _081B960A +_081B961E: + adds r6, #1 +_081B9620: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r6, r0 + blo _081B95F8 + mov r0, r8 + bl sub_080D1C48 + cmp r0, #1 + beq _081B963C + ldr r1, _081B9650 + movs r0, #1 + strh r0, [r1] +_081B963C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B9648: .4byte gUnknown_2037280 +_081B964C: .4byte gUnknown_2024190 +_081B9650: .4byte gUnknown_2037290 + thumb_func_end sub_081B95B8 + + thumb_func_start sub_081B9654 +sub_081B9654: @ 0x081B9654 + push {lr} + ldr r1, _081B966C + ldr r0, _081B9670 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081B9654 + + thumb_func_start sub_081B9668 +sub_081B9668: @ 0x081B9668 + bx r0 + .align 2, 0 +_081B966C: .4byte gUnknown_85E196C +_081B9670: .4byte gUnknown_2037280 + thumb_func_end sub_081B9668 + + thumb_func_start sub_081B9674 +sub_081B9674: @ 0x081B9674 + push {lr} + ldr r1, _081B96B4 + ldr r0, [r1] + ldr r2, _081B96B8 + adds r0, r0, r2 + movs r2, #0 + strb r2, [r0] + ldr r1, [r1] + ldr r3, _081B96BC + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _081B96C0 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081B96C4 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + pop {r0} + bx r0 + .align 2, 0 +_081B96B4: .4byte gUnknown_3005AF0 +_081B96B8: .4byte 0x00000CA8 +_081B96BC: .4byte 0x00000CB2 +_081B96C0: .4byte 0x00000CA9 +_081B96C4: .4byte gUnknown_3005AEC + thumb_func_end sub_081B9674 + + thumb_func_start sub_081B96C8 +sub_081B96C8: @ 0x081B96C8 + ldr r1, _081B96D8 + ldr r0, _081B96DC + ldr r0, [r0] + ldr r2, _081B96E0 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_081B96D8: .4byte gUnknown_2037290 +_081B96DC: .4byte gUnknown_3005AF0 +_081B96E0: .4byte 0x00000E6A + thumb_func_end sub_081B96C8 + + thumb_func_start sub_081B96E4 +sub_081B96E4: @ 0x081B96E4 + ldr r0, _081B96F4 + ldr r0, [r0] + ldr r1, _081B96F8 + ldrh r1, [r1] + ldr r2, _081B96FC + adds r0, r0, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_081B96F4: .4byte gUnknown_3005AF0 +_081B96F8: .4byte gUnknown_2037284 +_081B96FC: .4byte 0x00000E6A + thumb_func_end sub_081B96E4 + + thumb_func_start sub_081B9700 +sub_081B9700: @ 0x081B9700 + push {r4, lr} + ldr r4, _081B972C + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0xff + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r0, #2 + adds r1, r1, r0 + lsrs r1, r1, #6 + strh r1, [r4] + ldrh r0, [r4] + movs r1, #0 + bl sub_08162528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B972C: .4byte gUnknown_203886A + thumb_func_end sub_081B9700 + + thumb_func_start sub_081B9730 +sub_081B9730: @ 0x081B9730 + push {lr} + ldr r3, _081B9750 + ldrh r1, [r3] + ldr r0, _081B9754 + cmp r1, r0 + bhi _081B974C + ldr r2, _081B9758 + movs r0, #0x34 + muls r1, r0, r1 + ldr r0, [r2] + adds r0, r0, r1 + adds r0, #0xc + bl sub_081637CC +_081B974C: + pop {r0} + bx r0 + .align 2, 0 +_081B9750: .4byte gUnknown_203886A +_081B9754: .4byte 0x0000012B +_081B9758: .4byte gUnknown_203B954 + thumb_func_end sub_081B9730 + + thumb_func_start sub_081B975C +sub_081B975C: @ 0x081B975C + push {r4, lr} + ldr r4, _081B9790 + ldr r0, [r4] + ldr r1, _081B9794 + ldrh r1, [r1] + ldr r2, _081B9798 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081B979C + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B9790: .4byte gUnknown_3005AF0 +_081B9794: .4byte gUnknown_2037282 +_081B9798: .4byte 0x00000CA8 +_081B979C: .4byte 0x00000CA9 + thumb_func_end sub_081B975C + + thumb_func_start sub_081B97A0 +sub_081B97A0: @ 0x081B97A0 + push {r4, r5, lr} + ldr r0, _081B97BC + ldr r4, [r0] + ldr r5, _081B97C0 + bl sub_0806F050 + ldrh r0, [r5] + ldr r1, _081B97C4 + adds r4, r4, r1 + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B97BC: .4byte gUnknown_3005AF0 +_081B97C0: .4byte gUnknown_85E198C +_081B97C4: .4byte 0x00000E6A + thumb_func_end sub_081B97A0 + + thumb_func_start sub_081B97C8 +sub_081B97C8: @ 0x081B97C8 + push {r4, r5, lr} + ldr r4, _081B9800 + ldr r0, [r4] + ldr r1, _081B9804 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _081B9810 + ldr r0, [r4] + ldr r1, _081B9804 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081B9808 + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081B9804 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081B980C + strh r5, [r0] + b _081B9816 + .align 2, 0 +_081B9800: .4byte gUnknown_3005AF0 +_081B9804: .4byte 0x00000E6A +_081B9808: .4byte gUnknown_2021C40 +_081B980C: .4byte gUnknown_2037290 +_081B9810: + ldr r1, _081B981C + movs r0, #0 + strh r0, [r1] +_081B9816: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B981C: .4byte gUnknown_2037290 + thumb_func_end sub_081B97C8 + + thumb_func_start sub_081B9820 +sub_081B9820: @ 0x081B9820 + push {lr} + ldr r1, _081B9838 + ldr r0, _081B983C + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081B9820 + + thumb_func_start sub_081B9834 +sub_081B9834: @ 0x081B9834 + bx r0 + .align 2, 0 +_081B9838: .4byte gUnknown_85E1990 +_081B983C: .4byte gUnknown_2037280 + thumb_func_end sub_081B9834 + + thumb_func_start sub_081B9840 +sub_081B9840: @ 0x081B9840 + push {lr} + ldr r1, _081B9880 + ldr r0, [r1] + ldr r2, _081B9884 + adds r0, r0, r2 + movs r2, #0 + strb r2, [r0] + ldr r1, [r1] + ldr r3, _081B9888 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _081B988C + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081B9890 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + pop {r0} + bx r0 + .align 2, 0 +_081B9880: .4byte gUnknown_3005AF0 +_081B9884: .4byte 0x00000CA8 +_081B9888: .4byte 0x00000CB2 +_081B988C: .4byte 0x00000CA9 +_081B9890: .4byte gUnknown_3005AEC + thumb_func_end sub_081B9840 + + thumb_func_start sub_081B9894 +sub_081B9894: @ 0x081B9894 + ldr r1, _081B98A4 + ldr r0, _081B98A8 + ldr r0, [r0] + ldr r2, _081B98AC + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_081B98A4: .4byte gUnknown_2037290 +_081B98A8: .4byte gUnknown_3005AF0 +_081B98AC: .4byte 0x00000E6C + thumb_func_end sub_081B9894 + + thumb_func_start sub_081B98B0 +sub_081B98B0: @ 0x081B98B0 + ldr r0, _081B98C0 + ldr r0, [r0] + ldr r1, _081B98C4 + ldrh r1, [r1] + ldr r2, _081B98C8 + adds r0, r0, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_081B98C0: .4byte gUnknown_3005AF0 +_081B98C4: .4byte gUnknown_2037284 +_081B98C8: .4byte 0x00000E6C + thumb_func_end sub_081B98B0 + + thumb_func_start sub_081B98CC +sub_081B98CC: @ 0x081B98CC + push {r4, lr} + ldr r4, _081B9900 + ldr r0, [r4] + ldr r1, _081B9904 + ldrh r1, [r1] + ldr r2, _081B9908 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081B990C + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B9900: .4byte gUnknown_3005AF0 +_081B9904: .4byte gUnknown_2037282 +_081B9908: .4byte 0x00000CA8 +_081B990C: .4byte 0x00000CA9 + thumb_func_end sub_081B98CC + + thumb_func_start sub_081B9910 +sub_081B9910: @ 0x081B9910 + push {r4, r5, lr} + ldr r0, _081B992C + ldr r4, [r0] + ldr r5, _081B9930 + bl sub_0806F050 + ldrh r0, [r5] + ldr r1, _081B9934 + adds r4, r4, r1 + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B992C: .4byte gUnknown_3005AF0 +_081B9930: .4byte gUnknown_85E19AC +_081B9934: .4byte 0x00000E6C + thumb_func_end sub_081B9910 + + thumb_func_start sub_081B9938 +sub_081B9938: @ 0x081B9938 + push {r4, r5, lr} + ldr r4, _081B9970 + ldr r0, [r4] + ldr r1, _081B9974 + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _081B9980 + ldr r0, [r4] + ldr r1, _081B9974 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081B9978 + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081B9974 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081B997C + strh r5, [r0] + b _081B9986 + .align 2, 0 +_081B9970: .4byte gUnknown_3005AF0 +_081B9974: .4byte 0x00000E6C +_081B9978: .4byte gUnknown_2021C40 +_081B997C: .4byte gUnknown_2037290 +_081B9980: + ldr r1, _081B998C + movs r0, #0 + strh r0, [r1] +_081B9986: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B998C: .4byte gUnknown_2037290 + thumb_func_end sub_081B9938 + + thumb_func_start sub_081B9990 +sub_081B9990: @ 0x081B9990 + push {lr} + ldr r0, _081B99A0 + ldr r1, _081B99A4 + ldrh r1, [r1] + bl sub_08162D24 + pop {r0} + bx r0 + .align 2, 0 +_081B99A0: .4byte gUnknown_2021C40 +_081B99A4: .4byte gUnknown_203886A + thumb_func_end sub_081B9990 + + thumb_func_start sub_081B99A8 +sub_081B99A8: @ 0x081B99A8 + push {lr} + ldr r1, _081B99C0 + ldr r0, _081B99C4 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r0} + thumb_func_end sub_081B99A8 + + thumb_func_start sub_081B99BC +sub_081B99BC: @ 0x081B99BC + bx r0 + .align 2, 0 +_081B99C0: .4byte gUnknown_85E19B0 +_081B99C4: .4byte gUnknown_2037280 + thumb_func_end sub_081B99BC + + thumb_func_start sub_081B99C8 +sub_081B99C8: @ 0x081B99C8 + push {lr} + ldr r1, _081B9A08 + ldr r0, [r1] + ldr r2, _081B9A0C + adds r0, r0, r2 + movs r2, #0 + strb r2, [r0] + ldr r1, [r1] + ldr r3, _081B9A10 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _081B9A14 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081B9A18 + ldr r0, [r0] + movs r1, #4 + ldrsb r1, [r0, r1] + movs r2, #5 + ldrsb r2, [r0, r2] + movs r3, #1 + rsbs r3, r3, #0 + movs r0, #0 + bl sub_080845B0 + pop {r0} + bx r0 + .align 2, 0 +_081B9A08: .4byte gUnknown_3005AF0 +_081B9A0C: .4byte 0x00000CA8 +_081B9A10: .4byte 0x00000CB2 +_081B9A14: .4byte 0x00000CA9 +_081B9A18: .4byte gUnknown_3005AEC + thumb_func_end sub_081B99C8 + + thumb_func_start sub_081B9A1C +sub_081B9A1C: @ 0x081B9A1C + ldr r1, _081B9A2C + ldr r0, _081B9A30 + ldr r0, [r0] + ldr r2, _081B9A34 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_081B9A2C: .4byte gUnknown_2037290 +_081B9A30: .4byte gUnknown_3005AF0 +_081B9A34: .4byte 0x00000E6E + thumb_func_end sub_081B9A1C + + thumb_func_start sub_081B9A38 +sub_081B9A38: @ 0x081B9A38 + ldr r0, _081B9A48 + ldr r0, [r0] + ldr r1, _081B9A4C + ldrh r1, [r1] + ldr r2, _081B9A50 + adds r0, r0, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_081B9A48: .4byte gUnknown_3005AF0 +_081B9A4C: .4byte gUnknown_2037284 +_081B9A50: .4byte 0x00000E6E + thumb_func_end sub_081B9A38 + + thumb_func_start sub_081B9A54 +sub_081B9A54: @ 0x081B9A54 + push {r4, lr} + ldr r4, _081B9A88 + ldr r0, [r4] + ldr r1, _081B9A8C + ldrh r1, [r1] + ldr r2, _081B9A90 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #7 + movs r1, #0 + bl sub_0809CF88 + ldr r1, [r4] + ldr r0, _081B9A94 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + bl sub_081A482C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081B9A88: .4byte gUnknown_3005AF0 +_081B9A8C: .4byte gUnknown_2037282 +_081B9A90: .4byte 0x00000CA8 +_081B9A94: .4byte 0x00000CA9 + thumb_func_end sub_081B9A54 + + thumb_func_start sub_081B9A98 +sub_081B9A98: @ 0x081B9A98 + push {r4, r5, lr} + ldr r0, _081B9AB4 + ldr r4, [r0] + ldr r5, _081B9AB8 + bl sub_0806F050 + ldrh r0, [r5] + ldr r1, _081B9ABC + adds r4, r4, r1 + strh r0, [r4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B9AB4: .4byte gUnknown_3005AF0 +_081B9AB8: .4byte gUnknown_85E19D8 +_081B9ABC: .4byte 0x00000E6E + thumb_func_end sub_081B9A98 + + thumb_func_start sub_081B9AC0 +sub_081B9AC0: @ 0x081B9AC0 + push {r4, r5, lr} + ldr r4, _081B9AF8 + ldr r0, [r4] + ldr r1, _081B9AFC + adds r0, r0, r1 + ldrh r0, [r0] + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #1 + bne _081B9B08 + ldr r0, [r4] + ldr r1, _081B9AFC + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _081B9B00 + bl sub_080D5EC8 + ldr r0, [r4] + ldr r1, _081B9AFC + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + ldr r0, _081B9B04 + strh r5, [r0] + b _081B9B0E + .align 2, 0 +_081B9AF8: .4byte gUnknown_3005AF0 +_081B9AFC: .4byte 0x00000E6E +_081B9B00: .4byte gUnknown_2021C40 +_081B9B04: .4byte gUnknown_2037290 +_081B9B08: + ldr r1, _081B9B14 + movs r0, #0 + strh r0, [r1] +_081B9B0E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081B9B14: .4byte gUnknown_2037290 + thumb_func_end sub_081B9AC0 + + thumb_func_start sub_081B9B18 +sub_081B9B18: @ 0x081B9B18 + push {lr} + bl sub_080676F0 + bl sub_0819A198 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B9B18 + + thumb_func_start sub_081B9B28 +sub_081B9B28: @ 0x081B9B28 + push {lr} + bl sub_0819D8E8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081B9B28 + + thumb_func_start sub_081B9B34 +sub_081B9B34: @ 0x081B9B34 + push {lr} + movs r2, #0 + ldr r1, _081B9B58 + ldrb r0, [r1, #0x14] + cmp r0, #8 + bne _081B9B52 + ldr r3, _081B9B5C + adds r0, r3, #0 + ldrh r1, [r1, #0x12] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _081B9B52 + movs r2, #1 +_081B9B52: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_081B9B58: .4byte gUnknown_2036FB8 +_081B9B5C: .4byte 0xFFFFFE7F + thumb_func_end sub_081B9B34 + + thumb_func_start sub_081B9B60 +sub_081B9B60: @ 0x081B9B60 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x3c + ldr r1, _081B9C58 + ldr r0, _081B9C5C + str r0, [r1] + add r0, sp, #0xc + mov sb, r0 + mov r1, sp + adds r1, #0x18 + str r1, [sp, #0x2c] + ldr r5, _081B9C60 + ldr r4, _081B9C64 + movs r2, #0 + adds r3, r1, #0 + mov r1, sb + mov r0, sp + movs r6, #5 + mov r8, r6 +_081B9B8C: + strh r2, [r0] + strh r2, [r1] + strh r2, [r3] + adds r3, #2 + adds r1, #2 + adds r0, #2 + movs r7, #1 + rsbs r7, r7, #0 + add r8, r7 + mov r6, r8 + cmp r6, #0 + bge _081B9B8C + str r4, [r5] + movs r7, #0 + mov sl, r7 + movs r0, #0 + mov r8, r0 + ldr r1, [sp, #0x2c] + str r1, [sp, #0x30] + mov r2, sp + str r2, [sp, #0x34] + lsls r6, r0, #1 + str r6, [sp, #0x24] + add r6, sb + str r6, [sp, #0x28] +_081B9BBE: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x46 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + movs r2, #0 + mov r7, r8 + adds r6, r2, r7 + cmp r2, r6 + bge _081B9C1C + ldr r1, [sp, #0x28] + ldrh r0, [r1] + cmp r0, r5 + beq _081B9C1C + ldr r0, _081B9C60 + ldr r1, [r0] + lsls r0, r5, #4 + adds r4, r0, r1 + ldrh r7, [r4] + mov ip, r7 + lsls r3, r2, #1 + ldr r1, [sp, #0x24] + add r1, sp + str r6, [sp, #0x38] +_081B9BF6: + ldrh r0, [r1] + cmp r0, ip + bne _081B9C06 + mov r0, sl + cmp r0, #0 + bne _081B9C1C + ldrh r7, [r4] + mov sl, r7 +_081B9C06: + adds r3, #2 + adds r1, #2 + adds r2, #1 + ldr r0, [sp, #0x38] + cmp r2, r0 + bge _081B9C1C + mov r7, sb + adds r0, r7, r3 + ldrh r0, [r0] + cmp r0, r5 + bne _081B9BF6 +_081B9C1C: + cmp r2, r6 + bne _081B9CBC + movs r2, #0 + cmp r2, r6 + bge _081B9C74 + ldr r0, _081B9C68 + mov ip, r0 + ldr r7, _081B9C60 + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x2c] + adds r4, r1, r0 +_081B9C32: + ldrh r3, [r4] + cmp r3, #0 + beq _081B9C6C + ldr r1, [r7] + lsls r0, r5, #4 + adds r1, r0, r1 + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + cmp r3, r0 + bne _081B9C6C + ldrh r0, [r1] + cmp r0, sl + bne _081B9C74 + movs r1, #0 + mov sl, r1 + b _081B9C74 + .align 2, 0 +_081B9C58: .4byte gUnknown_203B954 +_081B9C5C: .4byte gUnknown_85BC958 +_081B9C60: .4byte gUnknown_203B958 +_081B9C64: .4byte gUnknown_85BCF70 +_081B9C68: .4byte gUnknown_85ADBF4 +_081B9C6C: + adds r4, #2 + adds r2, #1 + cmp r2, r6 + blt _081B9C32 +_081B9C74: + cmp r2, r6 + bne _081B9CBC + ldr r0, _081B9CD4 + ldr r1, [r0] + mov r2, r8 + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + movs r6, #0xe7 + lsls r6, r6, #4 + adds r1, r1, r6 + strh r5, [r1] + ldr r0, _081B9CD8 + ldr r0, [r0] + lsls r1, r5, #4 + adds r1, r1, r0 + ldrh r0, [r1] + ldr r7, [sp, #0x34] + strh r0, [r7] + ldr r2, _081B9CDC + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r1, [sp, #0x30] + strh r0, [r1] + add r3, sb + strh r5, [r3] + adds r1, #2 + str r1, [sp, #0x30] + adds r2, r7, #0 + adds r2, #2 + str r2, [sp, #0x34] + movs r6, #1 + add r8, r6 +_081B9CBC: + mov r7, r8 + cmp r7, #6 + beq _081B9CC4 + b _081B9BBE +_081B9CC4: + add sp, #0x3c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B9CD4: .4byte gUnknown_3005AF0 +_081B9CD8: .4byte gUnknown_203B958 +_081B9CDC: .4byte gUnknown_85ADBF4 + thumb_func_end sub_081B9B60 + + thumb_func_start sub_081B9CE0 +sub_081B9CE0: @ 0x081B9CE0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + movs r0, #0 + mov sl, r0 + ldr r1, _081B9D8C + ldr r0, _081B9D90 + str r0, [r1] + ldr r1, _081B9D94 + ldr r0, _081B9D98 + str r0, [r1] + ldr r7, _081B9D9C + ldr r1, _081B9DA0 + mov r8, r1 +_081B9D02: + mov r2, sl + lsls r6, r2, #1 +_081B9D06: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x1e + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r5, #0 + ldr r1, [r7] + ldr r4, _081B9DA4 + adds r0, r1, r4 + ldrh r0, [r0] + cmp r5, r0 + bge _081B9D4A + ldr r2, _081B9DA8 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, r3 + beq _081B9D4A + ldr r0, _081B9D9C + ldr r1, [r0] + adds r0, r1, r4 + ldrh r2, [r0] + adds r4, #2 + adds r1, r1, r4 +_081B9D3C: + adds r1, #2 + adds r5, #1 + cmp r5, r2 + bge _081B9D4A + ldrh r0, [r1] + cmp r0, r3 + bne _081B9D3C +_081B9D4A: + ldr r0, [r7] + ldr r1, _081B9DA4 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r5, r0 + bne _081B9D06 + ldr r2, _081B9DAC + strh r3, [r2] + ldrh r3, [r2] + ldr r4, _081B9D8C + ldr r1, [r4] + movs r0, #0x34 + muls r0, r3, r0 + adds r0, r0, r1 + ldr r0, [r0, #0x30] + adds r1, r6, r0 + ldrh r0, [r1] + cmp r0, r8 + beq _081B9D7E + ldr r3, _081B9DA0 +_081B9D72: + adds r1, #2 + movs r6, #1 + add sl, r6 + ldrh r0, [r1] + cmp r0, r3 + bne _081B9D72 +_081B9D7E: + mov r0, sl + cmp r0, #8 + bgt _081B9DB0 + movs r1, #0 + mov sl, r1 + b _081B9D02 + .align 2, 0 +_081B9D8C: .4byte gUnknown_203B954 +_081B9D90: .4byte gUnknown_85BC958 +_081B9D94: .4byte gUnknown_203B958 +_081B9D98: .4byte gUnknown_85BCF70 +_081B9D9C: .4byte gUnknown_3005AF0 +_081B9DA0: .4byte 0x0000FFFF +_081B9DA4: .4byte 0x00000CB2 +_081B9DA8: .4byte 0x00000CB4 +_081B9DAC: .4byte gUnknown_203886A +_081B9DB0: + ldr r0, _081B9ED4 + ldr r1, [r0] + ldr r6, _081B9ED8 + adds r3, r1, r6 + ldrh r0, [r3] + cmp r0, #1 + bhi _081B9DCA + lsls r0, r0, #1 + ldr r3, _081B9EDC + adds r1, r1, r3 + adds r1, r1, r0 + ldrh r0, [r2] + strh r0, [r1] +_081B9DCA: + ldrh r1, [r2] + ldr r2, [r4] + movs r0, #0x34 + muls r0, r1, r0 + adds r0, r0, r2 + ldr r0, [r0, #0x30] + mov sb, r0 + movs r5, #0 + ldr r7, _081B9EE0 + mov r8, sp +_081B9DDE: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + bl __modsi3 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + strh r0, [r7] + movs r2, #0 + ldrh r0, [r7] + ldr r4, _081B9EE4 + ldr r3, [r4] + lsls r0, r0, #4 + adds r0, r0, r3 + ldr r1, _081B9ED4 + ldrh r6, [r0] + ldr r1, [r1] +_081B9E06: + movs r4, #0xe7 + lsls r4, r4, #4 + adds r0, r1, r4 + ldrh r0, [r0] + lsls r0, r0, #4 + adds r0, r0, r3 + ldrh r0, [r0] + cmp r6, r0 + beq _081B9E20 + adds r1, #0xc + adds r2, #1 + cmp r2, #5 + ble _081B9E06 +_081B9E20: + cmp r2, #6 + bne _081B9EC0 + movs r4, #0 + cmp r4, r5 + bge _081B9E50 + mov r0, sp + ldrh r0, [r0] + cmp r0, r6 + beq _081B9E50 + ldr r6, _081B9EE0 + ldr r3, _081B9EE4 + mov r2, sp +_081B9E38: + adds r2, #2 + adds r4, #1 + cmp r4, r5 + bge _081B9E50 + ldrh r0, [r6] + ldr r1, [r3] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r1, [r2] + ldrh r0, [r0] + cmp r1, r0 + bne _081B9E38 +_081B9E50: + cmp r4, r5 + bne _081B9EC0 + movs r4, #0 + cmp r4, r5 + bge _081B9E86 + ldr r6, _081B9EE8 + mov ip, r6 + add r3, sp, #8 +_081B9E60: + ldrh r2, [r3] + cmp r2, #0 + beq _081B9E7E + ldr r1, _081B9EE0 + ldrh r0, [r1] + ldr r6, _081B9EE4 + ldr r1, [r6] + lsls r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0, #0xa] + lsls r0, r0, #1 + add r0, ip + ldrh r0, [r0] + cmp r2, r0 + beq _081B9E86 +_081B9E7E: + adds r3, #2 + adds r4, #1 + cmp r4, r5 + blt _081B9E60 +_081B9E86: + cmp r4, r5 + bne _081B9EC0 + lsls r2, r5, #1 + ldrh r0, [r7] + ldr r1, _081B9EE4 + ldr r4, [r1] + lsls r0, r0, #4 + adds r0, r0, r4 + ldrh r0, [r0] + mov r3, r8 + strh r0, [r3] + add r1, sp, #8 + adds r1, r1, r2 + ldr r3, _081B9EE8 + ldrh r0, [r7] + lsls r0, r0, #4 + adds r0, r0, r4 + ldrb r0, [r0, #0xa] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + ldr r0, _081B9EEC + adds r2, r2, r0 + ldrh r0, [r7] + strh r0, [r2] + movs r4, #2 + add r8, r4 + adds r5, #1 +_081B9EC0: + cmp r5, #3 + bne _081B9DDE + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081B9ED4: .4byte gUnknown_3005AF0 +_081B9ED8: .4byte 0x00000CB2 +_081B9EDC: .4byte 0x00000CB4 +_081B9EE0: .4byte gUnknown_3001294 +_081B9EE4: .4byte gUnknown_203B958 +_081B9EE8: .4byte gUnknown_85ADBF4 +_081B9EEC: .4byte gUnknown_3005FD8 + thumb_func_end sub_081B9CE0 + + thumb_func_start sub_081B9EF0 +sub_081B9EF0: @ 0x081B9EF0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r6, #0 + adds r4, #0x14 + ldrb r0, [r6, #0x1c] + cmp r0, #6 + bls _081B9F00 + b _081BA300 +_081B9F00: + lsls r0, r0, #2 + ldr r1, _081B9F0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B9F0C: .4byte _081B9F10 +_081B9F10: @ jump table + .4byte _081B9F2C @ case 0 + .4byte _081BA1F4 @ case 1 + .4byte _081BA206 @ case 2 + .4byte _081BA230 @ case 3 + .4byte _081BA268 @ case 4 + .4byte _081BA2DC @ case 5 + .4byte _081BA2EE @ case 6 +_081B9F2C: + ldr r2, _081B9F80 + ldrh r1, [r2, #0x2c] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081B9F46 + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081B9F46 + movs r0, #0 + strb r0, [r6, #0x1e] +_081B9F46: + ldrb r1, [r6, #0x1e] + cmp r1, #0 + beq _081B9F88 + ldrb r0, [r6, #0x1d] + cmp r0, #0 + beq _081B9F88 + subs r0, r1, #1 + strb r0, [r6, #0x1e] + ldr r0, _081B9F84 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081B9F64 + b _081BA1AE +_081B9F64: + ldrh r1, [r2, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081B9F70 + b _081BA1AE +_081B9F70: + ldrb r0, [r4] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4] + movs r0, #0 + strb r0, [r6, #0x1e] + b _081BA1AE + .align 2, 0 +_081B9F80: .4byte gUnknown_3002360 +_081B9F84: .4byte gUnknown_30030B4 +_081B9F88: + ldr r2, _081B9F98 + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081B9F9C + movs r0, #3 + b _081B9F9E + .align 2, 0 +_081B9F98: .4byte gUnknown_30030B4 +_081B9F9C: + ldrb r0, [r6, #0x1d] +_081B9F9E: + strb r0, [r6, #0x1e] + ldr r0, [r6] + ldrb r3, [r0] + adds r0, #1 + str r0, [r6] + adds r0, r3, #0 + subs r0, #0xf8 + cmp r0, #7 + bls _081B9FB2 + b _081BA1CE +_081B9FB2: + lsls r0, r0, #2 + ldr r1, _081B9FBC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081B9FBC: .4byte _081B9FC0 +_081B9FC0: @ jump table + .4byte _081BA1C4 @ case 0 + .4byte _081BA1B2 @ case 1 + .4byte _081BA1A4 @ case 2 + .4byte _081BA1A0 @ case 3 + .4byte _081BA00E @ case 4 + .4byte _081BA008 @ case 5 + .4byte _081B9FE0 @ case 6 + .4byte _081BA300 @ case 7 +_081B9FE0: + ldrb r0, [r6, #6] + strb r0, [r6, #8] + ldrb r1, [r6, #5] + ldr r0, _081BA004 + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r6, #0xb] + ldrb r0, [r0, #5] + adds r1, r1, r0 + ldrb r0, [r6, #9] + adds r0, r0, r1 + strb r0, [r6, #9] +_081B9FFE: + movs r0, #2 + b _081BA302 + .align 2, 0 +_081BA004: .4byte gUnknown_3003020 +_081BA008: + ldr r0, [r6] + adds r0, #1 + b _081BA164 +_081BA00E: + ldr r0, [r6] + ldrb r3, [r0] + adds r0, #1 + str r0, [r6] + subs r0, r3, #1 + cmp r0, #0xf + bls _081BA01E + b _081BA1CE +_081BA01E: + lsls r0, r0, #2 + ldr r1, _081BA028 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BA028: .4byte _081BA02C +_081BA02C: @ jump table + .4byte _081BA06C @ case 0 + .4byte _081BA08E @ case 1 + .4byte _081BA0B2 @ case 2 + .4byte _081BA0CC @ case 3 + .4byte _081BA118 @ case 4 + .4byte _081BA11E @ case 5 + .4byte _081B9FFE @ case 6 + .4byte _081BA138 @ case 7 + .4byte _081BA148 @ case 8 + .4byte _081BA15C @ case 9 + .4byte _081BA160 @ case 10 + .4byte _081BA168 @ case 11 + .4byte _081BA172 @ case 12 + .4byte _081BA17E @ case 13 + .4byte _081BA18E @ case 14 + .4byte _081BA160 @ case 15 +_081BA06C: + ldr r2, [r6] + ldrb r1, [r2] + lsls r1, r1, #4 + ldrb r3, [r6, #0xc] + movs r0, #0xf + ands r0, r3 + orrs r0, r1 + strb r0, [r6, #0xc] + adds r2, #1 + str r2, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + ldrb r2, [r6, #0xd] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsrs r2, r2, #4 + b _081BA112 +_081BA08E: + ldr r1, [r6] + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + ldrb r3, [r6, #0xd] + movs r2, #0x10 + rsbs r2, r2, #0 + ands r2, r3 + orrs r2, r0 + strb r2, [r6, #0xd] + adds r1, #1 + str r1, [r6] + ldrb r0, [r6, #0xc] + lsrs r0, r0, #4 + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsrs r2, r2, #4 + b _081BA112 +_081BA0B2: + ldr r1, [r6] + ldrb r0, [r1] + lsls r0, r0, #4 + ldrb r3, [r6, #0xd] + movs r2, #0xf + ands r2, r3 + orrs r2, r0 + strb r2, [r6, #0xd] + adds r1, #1 + str r1, [r6] + ldrb r0, [r6, #0xc] + lsrs r0, r0, #4 + b _081BA10A +_081BA0CC: + ldr r3, [r6] + ldrb r1, [r3] + lsls r1, 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, #1 + str r5, [r6] + ldrb r3, [r3, #1] + adds r1, r2, #0 + ands r1, r3 + ldrb r4, [r6, #0xd] + movs r3, #0x10 + rsbs r3, r3, #0 + ands r3, r4 + orrs r3, r1 + strb r3, [r6, #0xd] + adds r4, r5, #1 + str r4, [r6] + ldrb r1, [r5, #1] + lsls r1, r1, #4 + ands r2, r3 + orrs r2, r1 + strb r2, [r6, #0xd] + adds r4, #1 + str r4, [r6] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c +_081BA10A: + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + lsls r2, r2, #0x18 + lsrs r2, r2, #0x1c +_081BA112: + bl sub_080046E4 + b _081B9FFE +_081BA118: + ldr r0, [r6] + adds r0, #1 + b _081BA164 +_081BA11E: + ldr r0, [r6] + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + ldrb r2, [r4] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldr r0, [r6] + adds r0, #1 + b _081BA164 +_081BA138: + ldr r0, [r6] + ldrb r1, [r0] + strb r1, [r6, #0x1e] + adds r0, #1 + str r0, [r6] + movs r0, #6 + strb r0, [r6, #0x1c] + b _081B9FFE +_081BA148: + movs r0, #1 + strb r0, [r6, #0x1c] + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081BA1AE + movs r0, #0 + strb r0, [r4, #2] + b _081BA1AE +_081BA15C: + movs r0, #5 + b _081BA2EA +_081BA160: + ldr r0, [r6] + adds r0, #2 +_081BA164: + str r0, [r6] + b _081B9FFE +_081BA168: + ldr r1, [r6] + adds r0, r1, #1 + str r0, [r6] + ldrb r3, [r1, #1] + b _081BA1CE +_081BA172: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, #6] + adds r0, r0, r2 + strb r0, [r6, #8] + b _081BA188 +_081BA17E: + ldr r1, [r6] + ldrb r0, [r1] + ldrb r2, [r6, #7] + adds r0, r0, r2 + strb r0, [r6, #9] +_081BA188: + adds r1, #1 + str r1, [r6] + b _081B9FFE +_081BA18E: + ldrb r0, [r6, #4] + ldrb r2, [r6, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + b _081B9FFE +_081BA1A0: + movs r0, #2 + b _081BA1A6 +_081BA1A4: + movs r0, #3 +_081BA1A6: + strb r0, [r6, #0x1c] + adds r0, r6, #0 + bl sub_080054A4 +_081BA1AE: + movs r0, #3 + b _081BA302 +_081BA1B2: + ldr r0, [r6] + ldrb r3, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r3, r1 + adds r0, #1 + str r0, [r6] + b _081BA1CE +_081BA1C4: + ldr r0, [r6] + adds r0, #1 + str r0, [r6] + movs r0, #0 + b _081BA302 +_081BA1CE: + adds r0, r3, #0 + bl sub_081BA308 + adds r0, r6, #0 + bl sub_08004850 + ldr r0, _081BA1F0 + adds r0, #0x80 + ldrb r1, [r6, #0xa] + ldrb r0, [r0] + adds r1, r1, r0 + ldrb r0, [r6, #8] + adds r0, r0, r1 + strb r0, [r6, #8] + movs r0, #0 + b _081BA302 + .align 2, 0 +_081BA1F0: .4byte gUnknown_3003030 +_081BA1F4: + adds r0, r6, #0 + bl sub_08005648 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081BA1AE + movs r0, #0 + strb r0, [r6, #0x1c] + b _081BA1AE +_081BA206: + adds r0, r6, #0 + bl sub_080055FC + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081BA1AE + ldrb r0, [r6, #4] + ldrb r2, [r6, #0xd] + lsls r2, r2, #0x1c + lsrs r1, r2, #4 + orrs r1, r2 + lsrs r1, r1, #0x18 + bl sub_08003B18 + ldrb r0, [r6, #6] + movs r1, #0 + strb r0, [r6, #8] + ldrb r0, [r6, #7] + strb r0, [r6, #9] + strb r1, [r6, #0x1c] + b _081BA1AE +_081BA230: + adds r0, r6, #0 + bl sub_080055FC + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081BA1AE + adds r0, r6, #0 + bl sub_080055AC + ldrb r1, [r6, #5] + ldr r0, _081BA264 + ldr r2, [r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r6, #0xb] + ldrb r0, [r0, #5] + adds r1, r1, r0 + strb r1, [r6, #0x1f] + ldrb r0, [r6, #6] + strb r0, [r6, #8] + movs r0, #4 + strb r0, [r6, #0x1c] + b _081BA1AE + .align 2, 0 +_081BA264: .4byte gUnknown_3003020 +_081BA268: + ldrb r2, [r6, #0x1f] + cmp r2, #0 + beq _081BA2D8 + ldr r4, _081BA29C + ldr r5, _081BA2A0 + ldr r0, [r5] + ldrb r0, [r0, #0x14] + lsls r1, r0, #0x1d + lsrs r0, r1, #0x1d + adds r0, r0, r4 + ldrb r0, [r0] + cmp r2, r0 + bhs _081BA2A4 + ldrb r0, [r6, #4] + ldrb r1, [r6, #0xd] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #0 + bl sub_08003B64 + movs r0, #0 + strb r0, [r6, #0x1f] + b _081BA2CE + .align 2, 0 +_081BA29C: .4byte gUnknown_85E19DC +_081BA2A0: .4byte gUnknown_3005AF0 +_081BA2A4: + ldrb r0, [r6, #4] + lsrs r1, r1, #0x1d + adds r1, r1, r4 + ldrb r2, [r1] + ldrb r1, [r6, #0xd] + lsls r1, r1, #0x1c + lsrs r3, r1, #4 + orrs r3, r1 + lsrs r3, r3, #0x18 + movs r1, #0 + bl sub_08003B64 + ldr r0, [r5] + ldrb r0, [r0, #0x14] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + adds r0, r0, r4 + ldrb r1, [r6, #0x1f] + ldrb r0, [r0] + subs r1, r1, r0 + strb r1, [r6, #0x1f] +_081BA2CE: + ldrb r0, [r6, #4] + movs r1, #2 + bl sub_08003528 + b _081BA1AE +_081BA2D8: + strb r2, [r6, #0x1c] + b _081BA1AE +_081BA2DC: + bl sub_080A3168 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081BA2EA + b _081BA1AE +_081BA2EA: + strb r0, [r6, #0x1c] + b _081BA1AE +_081BA2EE: + ldrb r0, [r6, #0x1e] + adds r1, r0, #0 + cmp r1, #0 + beq _081BA2FC + subs r0, #1 + strb r0, [r6, #0x1e] + b _081BA1AE +_081BA2FC: + strb r1, [r6, #0x1c] + b _081BA1AE +_081BA300: + movs r0, #1 +_081BA302: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081B9EF0 + + thumb_func_start sub_081BA308 +sub_081BA308: @ 0x081BA308 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r2, r0, #0x13 + lsls r2, r2, #9 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + lsrs r1, r1, #0xb + ldr r0, _081BA364 + adds r1, r1, r0 + adds r5, r2, r1 + ldr r4, _081BA368 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080047C8 + adds r0, r5, #0 + adds r0, #0x10 + adds r1, r4, #0 + adds r1, #0x20 + bl sub_080047C8 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r5, r1 + adds r1, r4, #0 + adds r1, #0x40 + bl sub_080047C8 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r5, r1 + adds r1, r4, #0 + adds r1, #0x60 + bl sub_080047C8 + adds r0, r4, #0 + adds r0, #0x80 + movs r1, #0x10 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BA364: .4byte gUnknown_85E19E0 +_081BA368: .4byte gUnknown_3003030 + thumb_func_end sub_081BA308 + + thumb_func_start sub_081BA36C +sub_081BA36C: @ 0x081BA36C + 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, _081BA398 + strh r1, [r0] + ldr r2, _081BA39C + ldr r3, _081BA3A0 + adds r0, r3, #0 + strh r0, [r2] + ldr r0, _081BA3A4 + strh r1, [r0] + bx lr + .align 2, 0 +_081BA398: .4byte 0x04000134 +_081BA39C: .4byte 0x04000128 +_081BA3A0: .4byte 0x00002003 +_081BA3A4: .4byte 0x0400012A + thumb_func_end sub_081BA36C + + thumb_func_start sub_081BA3A8 +sub_081BA3A8: @ 0x081BA3A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + bl sub_081BA8CC + cmp r0, #0 + beq _081BA3BE + b _081BA786 +_081BA3BE: + adds r0, r7, #0 + adds r0, #0x4a + ldrb r1, [r0] + mov sl, r0 + cmp r1, #0xf + bls _081BA3D2 + subs r0, r1, #1 + mov r1, sl + strb r0, [r1] + b _081BA786 +_081BA3D2: + adds r1, r7, #0 + adds r1, #0x48 + ldrb r0, [r1] + cmp r0, #0 + beq _081BA3FC + movs r0, #0 + strb r0, [r1] + ldr r0, _081BA3F8 + ldrh r0, [r0] + movs r5, #0xfc + ands r5, r0 + cmp r5, #8 + beq _081BA3FC + adds r0, r7, #0 + bl sub_081BA36C + movs r0, #8 + eors r0, r5 + b _081BA788 + .align 2, 0 +_081BA3F8: .4byte 0x04000128 +_081BA3FC: + ldrb r0, [r7, #0x18] + cmp r0, #0xdf + bls _081BA44E + adds r0, r7, #0 + bl sub_081BA8E0 + adds r5, r0, #0 + cmp r5, #0 + beq _081BA410 + b _081BA788 +_081BA410: + adds r0, r7, #0 + adds r0, #0x4b + ldrb r0, [r0] + cmp r0, #1 + bne _081BA42C + ldrb r0, [r7, #0x18] + cmp r0, #0xe1 + bls _081BA42C + adds r0, r7, #0 + bl sub_081BA8CC + cmp r0, #0 + bne _081BA42C + b _081BA776 +_081BA42C: + adds r0, r7, #0 + bl sub_081BA8CC + cmp r0, #0 + beq _081BA438 + b _081BA786 +_081BA438: + ldrh r0, [r7, #0x16] + cmp r0, #0 + bne _081BA448 + adds r0, r7, #0 + bl sub_081BA36C + movs r0, #0x71 + b _081BA788 +_081BA448: + subs r0, #1 + strh r0, [r7, #0x16] + b _081BA786 +_081BA44E: + ldrb r0, [r7, #0x18] + cmp r0, #2 + bne _081BA456 + b _081BA58C +_081BA456: + cmp r0, #2 + bgt _081BA464 + cmp r0, #0 + beq _081BA472 + cmp r0, #1 + beq _081BA52E + b _081BA6C4 +_081BA464: + cmp r0, #0xd0 + bne _081BA46A + b _081BA5D8 +_081BA46A: + cmp r0, #0xd1 + bne _081BA470 + b _081BA672 +_081BA470: + b _081BA6C4 +_081BA472: + movs r3, #0xe + movs r5, #3 + ldr r0, _081BA4B8 + ldrh r0, [r0, #6] + adds r1, r0, #0 + ldr r0, _081BA4BC + ldrb r2, [r7, #0x1e] + adds r6, r2, #0 + cmp r1, r0 + bne _081BA49A + adds r4, r1, #0 + ldr r1, _081BA4C0 +_081BA48A: + asrs r3, r3, #1 + subs r1, #2 + subs r5, #1 + cmp r5, #0 + beq _081BA49A + ldrh r0, [r1] + cmp r0, r4 + beq _081BA48A +_081BA49A: + movs r0, #0xe + ands r3, r0 + strb r3, [r7, #0x1d] + movs r5, #3 + ldr r0, _081BA4B8 + ldrh r0, [r0, #6] + adds r4, r0, #0 + asrs r0, r2, #3 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081BA4C8 + ldr r0, _081BA4C4 + b _081BA4EE + .align 2, 0 +_081BA4B8: .4byte 0x04000120 +_081BA4BC: .4byte 0x0000FFFF +_081BA4C0: .4byte 0x04000126 +_081BA4C4: .4byte 0x00007208 +_081BA4C8: + subs r5, #1 + cmp r5, #0 + beq _081BA4F4 + lsls r0, r5, #1 + ldr r1, _081BA51C + adds r0, r0, r1 + ldrh r0, [r0] + adds r4, r0, #0 + adds r0, r2, #0 + asrs r0, r5 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081BA4C8 + adds r0, r1, #0 + lsls r0, r5 + movs r1, #0xe4 + lsls r1, r1, #7 + orrs r0, r1 +_081BA4EE: + cmp r4, r0 + beq _081BA4C8 + movs r3, #0 +_081BA4F4: + adds r0, r3, #0 + ands r0, r6 + strb r0, [r7, #0x1e] + cmp r3, #0 + bne _081BA504 + movs r0, #0xf + mov r2, sl + strb r0, [r2] +_081BA504: + mov r1, sl + ldrb r0, [r1] + cmp r0, #0 + bne _081BA520 + ldrb r0, [r7, #0x1d] + ldrb r2, [r7, #0x1e] + cmp r0, r2 + beq _081BA526 + adds r0, r7, #0 + bl sub_081BA7E4 + b _081BA52E + .align 2, 0 +_081BA51C: .4byte 0x04000120 +_081BA520: + subs r0, #1 + mov r1, sl + strb r0, [r1] +_081BA526: + ldrb r1, [r7, #0x1e] + movs r2, #0xc4 + lsls r2, r2, #7 + b _081BA62E +_081BA52E: + adds r1, r7, #0 + adds r1, #0x49 + movs r0, #0 + strb r0, [r1] + movs r5, #3 + mov ip, r1 + ldr r3, _081BA584 +_081BA53C: + lsls r0, r5, #1 + ldr r2, _081BA588 + adds r0, r0, r2 + ldrh r0, [r0] + adds r4, r0, #0 + asrs r0, r4, #8 + subs r2, r5, #1 + cmp r0, #0x72 + bne _081BA566 + lsls r0, r2, #1 + adds r0, r0, r3 + strh r4, [r0] + movs r0, #0xff + ands r4, r0 + movs r0, #1 + lsls r0, r5 + cmp r4, r0 + bne _081BA566 + ldrb r0, [r1] + orrs r4, r0 + strb r4, [r1] +_081BA566: + adds r5, r2, #0 + cmp r5, #0 + bne _081BA53C + ldrb r0, [r7, #0x1d] + mov r1, ip + ldrb r1, [r1] + cmp r0, r1 + bne _081BA526 + movs r0, #2 + strb r0, [r7, #0x18] + mov r2, ip + ldrb r1, [r2] + movs r2, #0xc2 + lsls r2, r2, #7 + b _081BA62E + .align 2, 0 +_081BA584: .4byte gUnknown_3001298 +_081BA588: .4byte 0x04000120 +_081BA58C: + movs r5, #3 + movs r0, #0x49 + adds r0, r0, r7 + mov ip, r0 + mov r4, ip + movs r6, #1 + ldr r1, _081BA5D0 + mov sb, r1 + ldr r2, _081BA5D4 + mov r8, r2 +_081BA5A0: + ldrb r3, [r4] + adds r0, r3, #0 + asrs r0, r5 + ands r0, r6 + subs r2, r5, #1 + cmp r0, #0 + beq _081BA5C6 + lsls r0, r5, #1 + add r0, r8 + ldrh r1, [r0] + lsls r0, r2, #1 + add r0, sb + ldrh r0, [r0] + cmp r1, r0 + beq _081BA5C6 + adds r0, r6, #0 + lsls r0, r5 + eors r3, r0 + strb r3, [r4] +_081BA5C6: + adds r5, r2, #0 + cmp r5, #0 + bne _081BA5A0 + b _081BA72C + .align 2, 0 +_081BA5D0: .4byte gUnknown_3001298 +_081BA5D4: .4byte 0x04000120 +_081BA5D8: + movs r3, #1 + movs r5, #3 + movs r0, #0x49 + adds r0, r0, r7 + mov ip, r0 + adds r6, r7, #0 + adds r6, #0x19 + ldr r1, _081BA63C + mov r8, r1 +_081BA5EA: + lsls r0, r5, #1 + ldr r2, _081BA640 + adds r0, r0, r2 + ldrh r0, [r0] + adds r4, r0, #0 + subs r2, r5, #1 + adds r0, r6, r2 + strb r4, [r0] + mov r0, ip + ldrb r1, [r0] + asrs r1, r5 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _081BA61E + asrs r0, r4, #8 + subs r0, #0x72 + cmp r0, #1 + bls _081BA612 + b _081BA77C +_081BA612: + lsls r0, r2, #1 + add r0, r8 + ldrh r0, [r0] + cmp r4, r0 + bne _081BA61E + movs r3, #0 +_081BA61E: + adds r5, r2, #0 + cmp r5, #0 + bne _081BA5EA + cmp r3, #0 + bne _081BA644 + ldrb r1, [r7, #0x1c] + movs r2, #0xc6 + lsls r2, r2, #7 +_081BA62E: + adds r0, r2, #0 + orrs r1, r0 + adds r0, r7, #0 + bl sub_081BA798 + b _081BA788 + .align 2, 0 +_081BA63C: .4byte gUnknown_3001298 +_081BA640: .4byte 0x04000120 +_081BA644: + movs r0, #0xd1 + strb r0, [r7, #0x18] + movs r3, #0x11 + movs r5, #3 + adds r1, r6, #2 +_081BA64E: + ldrb r0, [r1] + adds r3, r3, r0 + subs r1, #1 + subs r5, #1 + cmp r5, #0 + bne _081BA64E + strb r3, [r7, #0x14] + movs r0, #0xff + ands r3, r0 + movs r1, #0xc8 + lsls r1, r1, #7 + adds r0, r1, #0 + orrs r3, r0 + adds r0, r7, #0 + adds r1, r3, #0 + bl sub_081BA798 + b _081BA788 +_081BA672: + movs r5, #3 + movs r2, #0x49 + ldrb r1, [r2, r7] + ldr r2, _081BA6B0 + movs r3, #1 +_081BA67C: + ldrh r0, [r2] + adds r4, r0, #0 + adds r0, r1, #0 + asrs r0, r5 + ands r0, r3 + cmp r0, #0 + beq _081BA690 + asrs r0, r4, #8 + cmp r0, #0x73 + bne _081BA77C +_081BA690: + subs r2, #2 + subs r5, #1 + cmp r5, #0 + bne _081BA67C + adds r0, r7, #0 + bl MultiBoot + adds r5, r0, #0 + cmp r5, #0 + bne _081BA6B4 + movs r0, #0xe0 + strb r0, [r7, #0x18] + adds r0, #0xb0 + strh r0, [r7, #0x16] + b _081BA786 + .align 2, 0 +_081BA6B0: .4byte 0x04000126 +_081BA6B4: + adds r0, r7, #0 + bl sub_081BA36C + movs r0, #0x1e + mov r1, sl + strb r0, [r1] + movs r0, #0x70 + b _081BA788 +_081BA6C4: + movs r5, #3 + movs r2, #0x49 + adds r2, r2, r7 + mov ip, r2 + mov r8, ip + movs r0, #1 + mov sb, r0 +_081BA6D2: + mov r1, r8 + ldrb r6, [r1] + adds r0, r6, #0 + asrs r0, r5 + mov r2, sb + ands r0, r2 + cmp r0, #0 + beq _081BA70C + lsls r0, r5, #1 + ldr r1, _081BA728 + adds r0, r0, r1 + ldrh r0, [r0] + adds r4, r0, #0 + asrs r2, r4, #8 + ldrb r0, [r7, #0x18] + lsrs r0, r0, #1 + movs r1, #0x62 + subs r1, r1, r0 + mov r3, sb + lsls r3, r5 + cmp r2, r1 + bne _081BA706 + movs r0, #0xff + ands r4, r0 + cmp r4, r3 + beq _081BA70C +_081BA706: + eors r6, r3 + mov r2, r8 + strb r6, [r2] +_081BA70C: + subs r5, #1 + cmp r5, #0 + bne _081BA6D2 + ldrb r0, [r7, #0x18] + cmp r0, #0xc4 + bne _081BA72C + mov r0, ip + ldrb r1, [r0] + movs r0, #0xe + ands r0, r1 + strb r0, [r7, #0x1e] + strb r5, [r7, #0x18] + b _081BA526 + .align 2, 0 +_081BA728: .4byte 0x04000120 +_081BA72C: + mov r1, ip + ldrb r0, [r1] + cmp r0, #0 + bne _081BA73E + adds r0, r7, #0 + bl sub_081BA36C + movs r0, #0x50 + b _081BA788 +_081BA73E: + ldrb r0, [r7, #0x18] + adds r0, #2 + strb r0, [r7, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc4 + bne _081BA74E + b _081BA526 +_081BA74E: + ldrb r0, [r7, #0x18] + ldr r1, [r7, #0x28] + adds r0, r0, r1 + subs r1, r0, #3 + ldrb r2, [r1] + lsls r2, r2, #8 + subs r0, #4 + ldrb r1, [r0] + orrs r1, r2 + adds r0, r7, #0 + bl sub_081BA798 + adds r5, r0, #0 + cmp r5, #0 + bne _081BA788 + adds r0, r7, #0 + adds r0, #0x4b + ldrb r0, [r0] + cmp r0, #1 + bne _081BA786 +_081BA776: + bl sub_081BA9E4 + b _081BA3D2 +_081BA77C: + adds r0, r7, #0 + bl sub_081BA36C + movs r0, #0x60 + b _081BA788 +_081BA786: + movs r0, #0 +_081BA788: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BA3A8 + + thumb_func_start sub_081BA798 +sub_081BA798: @ 0x081BA798 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldr r3, _081BA7C4 + ldrh r0, [r3] + movs r4, #0x8c + ands r4, r0 + cmp r4, #8 + bne _081BA7D0 + ldr r0, _081BA7C8 + strh r1, [r0] + ldr r1, _081BA7CC + adds r0, r1, #0 + strh r0, [r3] + adds r1, r2, #0 + adds r1, #0x48 + movs r0, #1 + strb r0, [r1] + movs r0, #0 + b _081BA7DC + .align 2, 0 +_081BA7C4: .4byte 0x04000128 +_081BA7C8: .4byte 0x0400012A +_081BA7CC: .4byte 0x00002083 +_081BA7D0: + adds r0, r2, #0 + bl sub_081BA36C + movs r0, #8 + eors r4, r0 + adds r0, r4, #0 +_081BA7DC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BA798 + + thumb_func_start sub_081BA7E4 +sub_081BA7E4: @ 0x081BA7E4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0x18] + cmp r0, #0 + beq _081BA7F6 + adds r0, r1, #0 + bl sub_081BA36C + b _081BA802 +_081BA7F6: + adds r2, r1, #0 + adds r2, #0x4a + strb r0, [r2] + strb r0, [r1, #0x1e] + movs r0, #1 + strb r0, [r1, #0x18] +_081BA802: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BA7E4 + + thumb_func_start sub_081BA808 +sub_081BA808: @ 0x081BA808 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, [sp, #0x14] + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r3, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _081BA844 + ldrb r0, [r4, #0x1e] + cmp r0, #0 + beq _081BA844 + adds r0, r4, #0 + adds r0, #0x4a + ldrb r0, [r0] + cmp r0, #0 + bne _081BA844 + str r6, [r4, #0x20] + adds r2, #0xf + movs r0, #0x10 + rsbs r0, r0, #0 + ands r2, r0 + subs r0, #0xf0 + adds r1, r2, r0 + ldr r0, _081BA84C + cmp r1, r0 + bls _081BA850 +_081BA844: + adds r0, r4, #0 + bl sub_081BA36C + b _081BA8C4 + .align 2, 0 +_081BA84C: .4byte 0x0003FF00 +_081BA850: + adds r0, r6, r2 + str r0, [r4, #0x24] + lsls r1, r7, #0x18 + movs r2, #0x80 + lsls r2, r2, #0x13 + adds r0, r1, r2 + asrs r0, r0, #0x18 + adds r2, r1, #0 + cmp r0, #8 + bhi _081BA8B0 + lsls r0, r0, #2 + ldr r1, _081BA870 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BA870: .4byte _081BA874 +_081BA874: @ jump table + .4byte _081BA898 @ case 0 + .4byte _081BA898 @ case 1 + .4byte _081BA898 @ case 2 + .4byte _081BA898 @ case 3 + .4byte _081BA8A2 @ case 4 + .4byte _081BA8A8 @ case 5 + .4byte _081BA8A8 @ case 6 + .4byte _081BA8A8 @ case 7 + .4byte _081BA8A8 @ case 8 +_081BA898: + lsls r3, r5, #3 + asrs r1, r2, #0x18 + movs r0, #3 + subs r0, r0, r1 + b _081BA8AE +_081BA8A2: + movs r0, #0x38 + adds r3, r5, #0 + b _081BA8AE +_081BA8A8: + lsls r3, r5, #3 + asrs r0, r2, #0x18 + subs r0, #1 +_081BA8AE: + orrs r3, r0 +_081BA8B0: + movs r0, #0x3f + ands r3, r0 + lsls r0, r3, #1 + movs r2, #0x7f + rsbs r2, r2, #0 + adds r1, r2, #0 + orrs r0, r1 + strb r0, [r4, #0x1c] + movs r0, #0xd0 + strb r0, [r4, #0x18] +_081BA8C4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BA808 + + thumb_func_start sub_081BA8CC +sub_081BA8CC: @ 0x081BA8CC + push {lr} + ldrb r0, [r0, #0x18] + cmp r0, #0xe9 + beq _081BA8D8 + movs r0, #0 + b _081BA8DA +_081BA8D8: + movs r0, #1 +_081BA8DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BA8CC + + thumb_func_start sub_081BA8E0 +sub_081BA8E0: @ 0x081BA8E0 + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0x18] + cmp r0, #0xe0 + beq _081BA8FC + cmp r0, #0xe0 + blt _081BA90C + cmp r0, #0xe8 + bgt _081BA90C + cmp r0, #0xe7 + blt _081BA90C + movs r4, #3 + ldrb r5, [r3, #0x1e] + b _081BA96C +_081BA8FC: + movs r1, #0 + movs r0, #0xe1 + strb r0, [r3, #0x18] + str r1, [r3, #4] + movs r0, #0x80 + lsls r0, r0, #0xd + str r0, [r3] + b _081BA95E +_081BA90C: + movs r4, #3 + ldrb r5, [r3, #0x1e] + movs r6, #1 + ldr r1, _081BA968 +_081BA914: + ldrh r0, [r1] + adds r2, r0, #0 + adds r0, r5, #0 + asrs r0, r4 + ands r0, r6 + cmp r0, #0 + beq _081BA928 + ldr r0, [r3, #4] + cmp r2, r0 + bne _081BA8FC +_081BA928: + subs r1, #2 + subs r4, #1 + cmp r4, #0 + bne _081BA914 + ldrb r0, [r3, #0x18] + adds r0, #1 + strb r0, [r3, #0x18] + ldr r1, [r3] + ldrh r0, [r3] + str r0, [r3, #4] + cmp r1, #0 + bne _081BA956 + ldr r0, [r3, #0x28] + adds r1, r0, #0 + adds r1, #0xac + ldrb r1, [r1] + adds r0, #0xad + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + str r1, [r3, #4] + lsls r1, r1, #5 + str r1, [r3] +_081BA956: + ldr r0, [r3] + lsrs r0, r0, #5 + str r0, [r3] +_081BA95C: + ldrh r1, [r3] +_081BA95E: + adds r0, r3, #0 + bl sub_081BA798 + b _081BA9C4 + .align 2, 0 +_081BA968: .4byte 0x04000126 +_081BA96C: + lsls r0, r4, #1 + ldr r1, _081BA9B4 + adds r0, r0, r1 + ldrh r0, [r0] + adds r2, r0, #0 + adds r0, r5, #0 + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _081BA988 + ldr r0, [r3, #4] + cmp r2, r0 + bne _081BA9B8 +_081BA988: + subs r4, #1 + cmp r4, #0 + bne _081BA96C + ldrb r0, [r3, #0x18] + adds r0, #1 + strb r0, [r3, #0x18] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe9 + beq _081BA9C2 + ldr r0, [r3, #0x28] + adds r1, r0, #0 + adds r1, #0xae + ldrb r1, [r1] + adds r0, #0xaf + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + str r1, [r3] + str r1, [r3, #4] + b _081BA95C + .align 2, 0 +_081BA9B4: .4byte 0x04000120 +_081BA9B8: + adds r0, r3, #0 + bl sub_081BA36C + movs r0, #0x71 + b _081BA9C4 +_081BA9C2: + movs r0, #0 +_081BA9C4: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BA8E0 + + thumb_func_start sub_081BA9CC +sub_081BA9CC: @ 0x081BA9CC + mov r2, pc + lsrs r2, r2, #0x18 + movs r1, #0xc + cmp r2, #2 + beq _081BA9DE + movs r1, #0xd + cmp r2, #8 + beq _081BA9DE + movs r1, #4 +_081BA9DE: + subs r0, r0, r1 + bgt _081BA9DE + bx lr + thumb_func_end sub_081BA9CC + + thumb_func_start sub_081BA9E4 +sub_081BA9E4: @ 0x081BA9E4 + push {r4, r5, lr} + movs r2, #0 + ldr r3, _081BAA18 + ldrh r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081BAA08 + ldr r5, _081BAA1C + movs r4, #0x80 +_081BA9F8: + adds r2, #1 + cmp r2, r5 + bgt _081BAA08 + ldrh r1, [r3] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _081BA9F8 +_081BAA08: + movs r0, #0x96 + lsls r0, r0, #2 + bl sub_081BA9CC + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BAA18: .4byte 0x04000128 +_081BAA1C: .4byte 0x0000795C + thumb_func_end sub_081BA9E4 + + thumb_func_start sub_081BAA20 +sub_081BAA20: @ 0x081BAA20 + push {r4, r5, r6, lr} + movs r6, #0x80 + lsls r6, r6, #0x13 + movs r2, #0 + strh r2, [r6] + ldr r1, _081BAA7C + strh r2, [r1] + adds r1, #2 + strh r2, [r1] + adds r1, #0x3e + strh r2, [r1] + ldr r5, _081BAA80 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + adds r0, r4, r5 + ldr r0, [r0] + movs r1, #0xc0 + lsls r1, r1, #0x13 + bl LZ77UnCompVram + adds r0, r5, #4 + adds r0, r4, r0 + ldr r0, [r0] + ldr r1, _081BAA84 + bl LZ77UnCompVram + adds r5, #8 + adds r4, r4, r5 + ldr r0, [r4] + movs r1, #0xa0 + lsls r1, r1, #0x13 + movs r4, #0x80 + lsls r4, r4, #1 + adds r2, r4, #0 + bl CpuSet + ldr r1, _081BAA88 + movs r2, #0xf8 + lsls r2, r2, #5 + adds r0, r2, #0 + strh r0, [r1] + strh r4, [r6] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BAA7C: .4byte 0x04000010 +_081BAA80: .4byte gUnknown_85E72E4 +_081BAA84: .4byte 0x0600F800 +_081BAA88: .4byte 0x04000008 + thumb_func_end sub_081BAA20 + + thumb_func_start sub_081BAA8C +sub_081BAA8C: @ 0x081BAA8C + bx lr + .align 2, 0 + thumb_func_end sub_081BAA8C + + thumb_func_start sub_081BAA90 +sub_081BAA90: @ 0x081BAA90 + ldr r1, _081BAAA0 + ldr r0, _081BAAA4 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BAAA8 + str r1, [r0] + bx lr + .align 2, 0 +_081BAAA0: .4byte gUnknown_3005AC0 +_081BAAA4: .4byte gUnknown_2023D08 +_081BAAA8: .4byte sub_081BAAAC + thumb_func_end sub_081BAA90 + + thumb_func_start sub_081BAAAC +sub_081BAAAC: @ 0x081BAAAC + push {lr} + ldr r2, _081BAAE0 + ldr r1, _081BAAE4 + ldr r0, _081BAAE8 + ldrb r3, [r0] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, [r2] + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _081BAAF8 + ldr r0, _081BAAEC + lsls r1, r3, #9 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0x38 + bhi _081BAAF4 + ldr r0, _081BAAF0 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + b _081BAAF8 + .align 2, 0 +_081BAAE0: .4byte gUnknown_2023D0C +_081BAAE4: .4byte gUnknown_82FACB4 +_081BAAE8: .4byte gUnknown_2023D08 +_081BAAEC: .4byte gUnknown_2022D08 +_081BAAF0: .4byte gUnknown_85E732C +_081BAAF4: + bl sub_081BB828 +_081BAAF8: + pop {r0} + bx r0 + thumb_func_end sub_081BAAAC + + thumb_func_start sub_081BAAFC +sub_081BAAFC: @ 0x081BAAFC + push {lr} + ldr r2, _081BAB24 + ldr r1, _081BAB28 + ldr r0, _081BAB2C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081BAB30 + cmp r1, r0 + bne _081BAB20 + bl sub_081BB828 +_081BAB20: + pop {r0} + bx r0 + .align 2, 0 +_081BAB24: .4byte gUnknown_20205AC +_081BAB28: .4byte gUnknown_2023E88 +_081BAB2C: .4byte gUnknown_2023D08 +_081BAB30: .4byte sub_08007140 + thumb_func_end sub_081BAAFC + + thumb_func_start sub_081BAB34 +sub_081BAB34: @ 0x081BAB34 + push {r4, r5, r6, lr} + ldr r6, _081BAB8C + ldr r5, _081BAB90 + ldr r4, _081BAB94 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, _081BAB98 + cmp r1, r0 + bne _081BAB84 + movs r0, #0 + bl sub_0805DBFC + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_0800730C + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + bl sub_081BB828 +_081BAB84: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BAB8C: .4byte gUnknown_20205AC +_081BAB90: .4byte gUnknown_2023E88 +_081BAB94: .4byte gUnknown_2023D08 +_081BAB98: .4byte sub_08007140 + thumb_func_end sub_081BAB34 + + thumb_func_start sub_081BAB9C +sub_081BAB9C: @ 0x081BAB9C + push {r4, lr} + ldr r4, _081BABDC + ldr r1, [r4] + ldr r3, _081BABE0 + ldrb r0, [r3] + ldr r2, [r1, #4] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r0, [r1, #9] + subs r0, #1 + strb r0, [r1, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _081BABD4 + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #9] + bl sub_081BB828 +_081BABD4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BABDC: .4byte gUnknown_2024174 +_081BABE0: .4byte gUnknown_2023D08 + thumb_func_end sub_081BAB9C + + thumb_func_start sub_081BABE4 +sub_081BABE4: @ 0x081BABE4 + push {r4, r5, r6, lr} + movs r6, #0 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BAC08 + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BAC3C + ldr r0, _081BAC28 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081BAC3C +_081BAC08: + ldr r2, _081BAC2C + ldr r1, _081BAC30 + ldr r0, _081BAC34 + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081BAC38 + cmp r1, r0 + bne _081BAC74 + b _081BAC72 + .align 2, 0 +_081BAC28: .4byte gUnknown_2022C90 +_081BAC2C: .4byte gUnknown_20205AC +_081BAC30: .4byte gUnknown_3005AD0 +_081BAC34: .4byte gUnknown_2023D08 +_081BAC38: .4byte sub_08007140 +_081BAC3C: + ldr r2, _081BACAC + ldr r5, _081BACB0 + ldr r0, _081BACB4 + ldrb r3, [r0] + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r2, #0 + adds r4, #0x1c + adds r0, r0, r4 + ldr r2, [r0] + ldr r0, _081BACB8 + cmp r2, r0 + bne _081BAC74 + movs r0, #2 + eors r3, r0 + adds r0, r3, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r0, [r0] + cmp r0, r2 + bne _081BAC74 +_081BAC72: + movs r6, #1 +_081BAC74: + bl sub_080A2F90 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BAC80 + movs r6, #0 +_081BAC80: + cmp r6, #0 + beq _081BACA6 + ldr r0, _081BACBC + ldr r0, [r0] + ldr r3, _081BACB4 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #9] + ldr r1, _081BACC0 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BACC4 + str r1, [r0] +_081BACA6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BACAC: .4byte gUnknown_20205AC +_081BACB0: .4byte gUnknown_3005AD0 +_081BACB4: .4byte gUnknown_2023D08 +_081BACB8: .4byte sub_08007140 +_081BACBC: .4byte gUnknown_2024174 +_081BACC0: .4byte gUnknown_3005AC0 +_081BACC4: .4byte sub_081BAB9C + thumb_func_end sub_081BABE4 + + thumb_func_start sub_081BACC8 +sub_081BACC8: @ 0x081BACC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _081BAE40 + mov ip, r0 + ldr r0, [r0] + ldr r7, _081BAE44 + ldrb r2, [r7] + ldr r3, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r4, r0, r3 + ldrb r1, [r4] + movs r5, #8 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081BACF4 + b _081BAE32 +_081BACF4: + movs r1, #2 + mov r8, r1 + adds r1, r2, #0 + mov r0, r8 + eors r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _081BAD16 + b _081BAE32 +_081BAD16: + ldr r1, _081BAE48 + mov sl, r1 + ldr r0, _081BAE4C + mov sb, r0 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r5, sl + adds r5, #0x1c + adds r0, r0, r5 + ldr r3, [r0] + ldr r0, _081BAE50 + cmp r3, r0 + bne _081BAE32 + ldr r0, _081BAE54 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + cmp r0, r3 + bne _081BAE32 + ldrb r0, [r4, #9] + adds r0, #1 + strb r0, [r4, #9] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BAE32 + mov r1, ip + ldr r0, [r1] + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r6, [r0, #9] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BADD0 + ldr r0, _081BAE58 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081BADD0 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + add r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + bl sub_08006E00 + ldr r4, _081BAE5C + ldrb r0, [r7] + mov r1, r8 + eors r1, r0 + adds r0, r1, r4 + ldrb r0, [r0] + ldr r2, _081BAE60 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _081BAE64 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + bl sub_08076320 + ldrb r0, [r7] + mov r1, r8 + eors r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 +_081BADD0: + ldr r1, _081BAE4C + ldr r4, _081BAE44 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081BAE48 + adds r0, r0, r1 + bl sub_08006E00 + ldr r5, _081BAE5C + ldrb r1, [r4] + adds r0, r1, r5 + ldrb r0, [r0] + ldr r2, _081BAE60 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _081BAE64 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r4] + bl sub_08076320 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r0, [r0] + bl sub_080723E0 + ldr r0, _081BAE40 + ldr r0, [r0] + ldr r2, [r0, #8] + ldrb r1, [r2, #9] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #9] + ldr r1, _081BAE68 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BAE6C + str r1, [r0] +_081BAE32: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BAE40: .4byte gUnknown_2024174 +_081BAE44: .4byte gUnknown_2023D08 +_081BAE48: .4byte gUnknown_20205AC +_081BAE4C: .4byte gUnknown_3005ADC +_081BAE50: .4byte sub_08007140 +_081BAE54: .4byte gUnknown_2023E88 +_081BAE58: .4byte gUnknown_2022C90 +_081BAE5C: .4byte gUnknown_3005AD0 +_081BAE60: .4byte gUnknown_2023D12 +_081BAE64: .4byte gUnknown_2024190 +_081BAE68: .4byte gUnknown_3005AC0 +_081BAE6C: .4byte sub_081BABE4 + thumb_func_end sub_081BACC8 + + thumb_func_start sub_081BAE70 +sub_081BAE70: @ 0x081BAE70 + push {lr} + ldr r2, _081BAEA4 + ldr r1, _081BAEA8 + ldr r0, _081BAEAC + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r2 + adds r0, r1, #0 + adds r0, #0x3f + ldrb r0, [r0] + lsls r0, r0, #0x1b + cmp r0, #0 + bge _081BAE9E + movs r2, #0x24 + ldrsh r0, [r1, r2] + cmp r0, #0 + bne _081BAE9E + bl sub_081BB828 +_081BAE9E: + pop {r0} + bx r0 + .align 2, 0 +_081BAEA4: .4byte gUnknown_20205AC +_081BAEA8: .4byte gUnknown_2023E88 +_081BAEAC: .4byte gUnknown_2023D08 + thumb_func_end sub_081BAE70 + + thumb_func_start sub_081BAEB0 +sub_081BAEB0: @ 0x081BAEB0 + push {r4, r5, r6, lr} + ldr r5, _081BAEF0 + ldrb r0, [r5] + ldr r6, _081BAEF4 + adds r1, r0, r6 + ldrb r1, [r1] + movs r2, #0 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r1, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081BAEF8 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r0, [r0] + movs r2, #0 + bl sub_080726F4 + b _081BAF12 + .align 2, 0 +_081BAEF0: .4byte gUnknown_2023D08 +_081BAEF4: .4byte gUnknown_3005AD0 +_081BAEF8: + ldr r2, _081BAF18 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081BAF1C + adds r0, r0, r2 + bl sub_0805E5AC + bl sub_081BB828 +_081BAF12: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BAF18: .4byte gUnknown_2023D12 +_081BAF1C: .4byte gUnknown_2024190 + thumb_func_end sub_081BAEB0 + + thumb_func_start sub_081BAF20 +sub_081BAF20: @ 0x081BAF20 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081BAF32 + bl sub_081BB828 +_081BAF32: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BAF20 + + thumb_func_start sub_081BAF38 +sub_081BAF38: @ 0x081BAF38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r1, _081BB038 + lsls r0, r0, #2 + add r0, sb + lsls r0, r0, #3 + adds r0, r0, r1 + mov r8, r0 + ldrb r0, [r0, #8] + mov sl, r0 + mov r1, r8 + ldrb r7, [r1, #0xc] + str r7, [sp, #8] + ldrh r2, [r1, #0xa] + str r2, [sp, #0xc] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BAF7E + ldr r1, _081BB03C + lsls r0, r7, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp sl, r0 + bne _081BAF7E + b _081BB094 +_081BAF7E: + movs r0, #0x64 + mov r1, sl + muls r1, r0, r1 + ldr r0, _081BB040 + adds r6, r1, r0 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #4] + ldr r3, _081BB044 + adds r4, #1 + lsls r4, r4, #2 + ldr r2, _081BB048 + lsls r1, r5, #3 + subs r1, r1, r5 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #0x13] + movs r1, #0xca + lsls r1, r1, #1 + muls r1, r2, r1 + adds r4, r4, r1 + adds r4, r4, r3 + ldr r2, [r4] + str r2, [sp] + ldr r3, [sp, #0xc] + lsls r1, r3, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r1 + cmp r0, r2 + blo _081BB06C + adds r0, r6, #0 + movs r1, #0x19 + mov r2, sp + bl sub_0806A774 + adds r0, r6, #0 + bl sub_0806884C + ldr r2, [sp] + add r0, sp, #4 + ldrh r0, [r0] + subs r2, r2, r0 + ldr r0, [sp, #0xc] + subs r2, r0, r2 + ldr r4, _081BB04C + ldrb r5, [r4] + strb r7, [r4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xb + bl sub_08033FB0 + strb r5, [r4] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BB054 + ldr r2, _081BB03C + lsls r0, r7, #1 + adds r0, r0, r2 + mov r1, sl + ldrh r0, [r0] + cmp r1, r0 + beq _081BB032 + movs r0, #2 + eors r7, r0 + lsls r0, r7, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _081BB054 +_081BB032: + ldr r0, _081BB050 + b _081BB096 + .align 2, 0 +_081BB038: .4byte gUnknown_3005B60 +_081BB03C: .4byte gUnknown_2023D12 +_081BB040: .4byte gUnknown_2024190 +_081BB044: .4byte gUnknown_82F00B4 +_081BB048: .4byte gUnknown_82F0D54 +_081BB04C: .4byte gUnknown_2023D08 +_081BB050: .4byte sub_081BB2C4 +_081BB054: + ldr r0, _081BB064 + mov r2, sb + lsls r1, r2, #2 + add r1, sb + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081BB068 + b _081BB098 + .align 2, 0 +_081BB064: .4byte gUnknown_3005B60 +_081BB068: .4byte sub_081BB3DC +_081BB06C: + str r0, [sp, #4] + add r2, sp, #4 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A774 + ldr r1, _081BB08C + ldr r3, [sp, #8] + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r1, _081BB090 + str r1, [r0] + mov r0, sb + bl sub_080A8964 + b _081BB09A + .align 2, 0 +_081BB08C: .4byte gUnknown_3005AC0 +_081BB090: .4byte sub_081BAF20 +_081BB094: + ldr r0, _081BB0AC +_081BB096: + mov r1, r8 +_081BB098: + str r0, [r1] +_081BB09A: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BB0AC: .4byte sub_081BB0B0 + thumb_func_end sub_081BAF38 + + thumb_func_start sub_081BB0B0 +sub_081BB0B0: @ 0x081BB0B0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081BB168 + lsls r2, r0, #2 + mov r8, r2 + add r8, r0 + mov r0, r8 + lsls r0, r0, #3 + mov r8, r0 + add r8, r1 + mov r2, r8 + ldrb r1, [r2, #8] + movs r0, #0xa + ldrsh r2, [r2, r0] + mov sb, r2 + mov r2, r8 + ldrb r2, [r2, #0xc] + mov sl, r2 + movs r0, #0x64 + adds r6, r1, #0 + muls r6, r0, r6 + ldr r0, _081BB16C + adds r6, r6, r0 + adds r0, r6, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + movs r1, #0xb + bl sub_0806A058 + adds r5, r0, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r6, #0 + movs r1, #0x19 + bl sub_0806A058 + adds r3, r0, #0 + ldr r6, _081BB170 + lsls r1, r4, #2 + ldr r2, _081BB174 + lsls r0, r5, #3 + subs r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r2, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r2, r0 + adds r1, r1, r0 + adds r1, r1, r6 + ldr r1, [r1] + subs r3, r3, r1 + adds r4, #1 + lsls r4, r4, #2 + adds r4, r4, r0 + adds r4, r4, r6 + ldr r2, [r4] + subs r2, r2, r1 + ldr r0, _081BB178 + add r0, sl + ldrb r1, [r0] + mov r0, sb + rsbs r0, r0, #0 + str r0, [sp] + mov r0, sl + bl sub_0807235C + movs r0, #0x21 + bl sub_080A306C + ldr r0, _081BB17C + mov r1, r8 + str r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BB168: .4byte gUnknown_3005B60 +_081BB16C: .4byte gUnknown_2024190 +_081BB170: .4byte gUnknown_82F00B4 +_081BB174: .4byte gUnknown_82F0D54 +_081BB178: .4byte gUnknown_3005AD0 +_081BB17C: .4byte sub_081BB180 + thumb_func_end sub_081BB0B0 + + thumb_func_start sub_081BB180 +sub_081BB180: @ 0x081BB180 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _081BB1AC + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r6, r0, r1 + ldrh r1, [r6, #0x1c] + movs r2, #0x1c + ldrsh r0, [r6, r2] + cmp r0, #0xc + bgt _081BB1B0 + adds r0, r1, #1 + strh r0, [r6, #0x1c] + b _081BB2AC + .align 2, 0 +_081BB1AC: .4byte gUnknown_3005B60 +_081BB1B0: + ldrb r0, [r6, #8] + mov sb, r0 + ldrh r2, [r6, #0xa] + mov sl, r2 + ldrb r7, [r6, #0xc] + ldr r5, _081BB278 + adds r5, r7, r5 + ldrb r1, [r5] + adds r0, r7, #0 + movs r2, #1 + movs r3, #0 + bl sub_08074630 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080723E0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + bne _081BB2AC + movs r0, #0x21 + bl m4aSongNumStop + movs r0, #0x64 + mov r1, sb + muls r1, r0, r1 + ldr r0, _081BB27C + adds r5, r1, r0 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r3, _081BB280 + adds r4, #1 + lsls r4, r4, #2 + ldr r2, _081BB284 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r1, r0 + adds r4, r4, r0 + adds r4, r4, r3 + ldr r1, [r4] + str r1, [sp] + mov r2, sl + lsls r0, r2, #0x10 + asrs r4, r0, #0x10 + ldr r0, [sp, #4] + adds r0, r0, r4 + cmp r0, r1 + blt _081BB290 + adds r0, r5, #0 + movs r1, #0x19 + mov r2, sp + bl sub_0806A774 + adds r0, r5, #0 + bl sub_0806884C + ldr r2, [sp] + add r0, sp, #4 + ldrh r0, [r0] + subs r2, r2, r0 + subs r2, r4, r2 + ldr r4, _081BB288 + ldrb r5, [r4] + strb r7, [r4] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + movs r0, #1 + movs r1, #0xb + bl sub_08033FB0 + strb r5, [r4] + ldr r0, _081BB28C + str r0, [r6] + b _081BB2AC + .align 2, 0 +_081BB278: .4byte gUnknown_3005AD0 +_081BB27C: .4byte gUnknown_2024190 +_081BB280: .4byte gUnknown_82F00B4 +_081BB284: .4byte gUnknown_82F0D54 +_081BB288: .4byte gUnknown_2023D08 +_081BB28C: .4byte sub_081BB2C4 +_081BB290: + str r0, [sp, #4] + add r2, sp, #4 + adds r0, r5, #0 + movs r1, #0x19 + bl sub_0806A774 + ldr r1, _081BB2BC + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r1, _081BB2C0 + str r1, [r0] + mov r0, r8 + bl sub_080A8964 +_081BB2AC: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BB2BC: .4byte gUnknown_3005AC0 +_081BB2C0: .4byte sub_081BAF20 + thumb_func_end sub_081BB180 + + thumb_func_start sub_081BB2C4 +sub_081BB2C4: @ 0x081BB2C4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081BB318 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r4, [r0, #0xc] + ldrb r6, [r0, #8] + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BB2F8 + ldr r1, _081BB31C + movs r0, #2 + adds r2, r4, #0 + eors r2, r0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r6, r0 + bne _081BB2F8 + adds r4, r2, #0 +_081BB2F8: + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805D6E0 + ldr r0, _081BB318 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081BB320 + str r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BB318: .4byte gUnknown_3005B60 +_081BB31C: .4byte gUnknown_2023D12 +_081BB320: .4byte sub_081BB324 + thumb_func_end sub_081BB2C4 + + thumb_func_start sub_081BB324 +sub_081BB324: @ 0x081BB324 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _081BB390 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrb r5, [r2, #0xc] + ldr r0, _081BB394 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081BB3C6 + ldrb r4, [r2, #8] + movs r0, #0x64 + adds r1, r4, #0 + muls r1, r0, r1 + ldr r0, _081BB398 + adds r7, r1, r0 + adds r0, r7, #0 + movs r1, #0x38 + bl sub_0806A058 + bl sub_080A63E8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BB3A4 + ldr r1, _081BB39C + movs r0, #2 + adds r2, r5, #0 + eors r2, r0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + bne _081BB3A4 + ldr r0, _081BB3A0 + adds r0, r2, r0 + ldrb r0, [r0] + adds r1, r7, #0 + movs r2, #0 + bl sub_080743F0 + b _081BB3B8 + .align 2, 0 +_081BB390: .4byte gUnknown_3005B60 +_081BB394: .4byte gUnknown_2024174 +_081BB398: .4byte gUnknown_2024190 +_081BB39C: .4byte gUnknown_2023D12 +_081BB3A0: .4byte gUnknown_3005AD0 +_081BB3A4: + ldr r0, _081BB3CC + adds r0, r5, r0 + ldrb r0, [r0] + movs r1, #0x64 + muls r1, r4, r1 + ldr r2, _081BB3D0 + adds r1, r1, r2 + movs r2, #0 + bl sub_080743F0 +_081BB3B8: + ldr r0, _081BB3D4 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081BB3D8 + str r0, [r1] +_081BB3C6: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BB3CC: .4byte gUnknown_3005AD0 +_081BB3D0: .4byte gUnknown_2024190 +_081BB3D4: .4byte gUnknown_3005B60 +_081BB3D8: .4byte sub_081BB3DC + thumb_func_end sub_081BB324 + + thumb_func_start sub_081BB3DC +sub_081BB3DC: @ 0x081BB3DC + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081BB418 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + adds r4, r4, r0 + ldrb r1, [r4, #8] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081BB41C + adds r0, r0, r1 + movs r1, #0x38 + bl sub_0806A058 + ldrb r0, [r4, #0xc] + ldr r1, _081BB420 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BB424 + str r1, [r0] + adds r0, r5, #0 + bl sub_080A8964 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BB418: .4byte gUnknown_3005B60 +_081BB41C: .4byte gUnknown_2024190 +_081BB420: .4byte gUnknown_3005AC0 +_081BB424: .4byte sub_081BAF20 + thumb_func_end sub_081BB3DC + + thumb_func_start sub_081BB428 +sub_081BB428: @ 0x081BB428 + push {r4, r5, r6, lr} + ldr r6, _081BB4AC + ldr r5, _081BB4B0 + ldr r4, _081BB4B4 + ldrb r2, [r4] + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r3, #0x26 + ldrsh r0, [r0, r3] + adds r1, r1, r0 + cmp r1, #0xa0 + ble _081BB4A4 + ldr r1, _081BB4B8 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081BB4BC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0805DB50 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r0, [r4] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + bl sub_08006E00 + ldr r1, _081BB4C0 + ldrb r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_081BB828 +_081BB4A4: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BB4AC: .4byte gUnknown_20205AC +_081BB4B0: .4byte gUnknown_2023E88 +_081BB4B4: .4byte gUnknown_2023D08 +_081BB4B8: .4byte gUnknown_2023D12 +_081BB4BC: .4byte gUnknown_2024190 +_081BB4C0: .4byte gUnknown_3005AD0 + thumb_func_end sub_081BB428 + + thumb_func_start sub_081BB4C4 +sub_081BB4C4: @ 0x081BB4C4 + push {r4, r5, r6, lr} + ldr r0, _081BB520 + ldr r0, [r0] + ldr r6, _081BB524 + ldrb r2, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081BB518 + ldr r5, _081BB528 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081BB52C + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _081BB530 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_081BB828 +_081BB518: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BB520: .4byte gUnknown_2024174 +_081BB524: .4byte gUnknown_2023D08 +_081BB528: .4byte gUnknown_2023E88 +_081BB52C: .4byte gUnknown_20205AC +_081BB530: .4byte gUnknown_3005AD0 + thumb_func_end sub_081BB4C4 + + thumb_func_start sub_081BB534 +sub_081BB534: @ 0x081BB534 + push {lr} + movs r0, #0 + bl sub_080046A8 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081BB546 + bl sub_081BB828 +_081BB546: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BB534 + + thumb_func_start sub_081BB54C +sub_081BB54C: @ 0x081BB54C + push {r4, lr} + ldr r1, _081BB588 + ldr r0, _081BB58C + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r0] + ldr r2, _081BB590 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r2 + movs r1, #0x30 + ldrsh r0, [r4, r1] + cmp r0, #0x20 + bne _081BB598 + movs r3, #0 + movs r0, #0 + strh r0, [r4, #0x30] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 + ands r0, r1 + strb r0, [r2] + ldr r0, _081BB594 + strb r3, [r0] + bl sub_081BB828 + b _081BB5C2 + .align 2, 0 +_081BB588: .4byte gUnknown_2023E88 +_081BB58C: .4byte gUnknown_2023D08 +_081BB590: .4byte gUnknown_20205AC +_081BB594: .4byte gUnknown_202415D +_081BB598: + ldrh r0, [r4, #0x30] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _081BB5BC + adds r3, r4, #0 + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081BB5BC: + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] +_081BB5C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081BB54C + + thumb_func_start sub_081BB5C8 +sub_081BB5C8: @ 0x081BB5C8 + push {r4, lr} + ldr r2, _081BB620 + ldr r0, _081BB624 + ldr r4, _081BB628 + ldrb r3, [r4] + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081BB62C + cmp r1, r0 + bne _081BB61A + adds r0, r3, #0 + bl sub_0805E024 + ldr r0, _081BB630 + ldr r0, [r0] + ldrb r2, [r4] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081BB60E + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 +_081BB60E: + ldr r0, _081BB634 + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _081BB638 + str r0, [r1] +_081BB61A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BB620: .4byte gUnknown_20205AC +_081BB624: .4byte gUnknown_3005AD0 +_081BB628: .4byte gUnknown_2023D08 +_081BB62C: .4byte sub_08007140 +_081BB630: .4byte gUnknown_2024174 +_081BB634: .4byte gUnknown_3005AC0 +_081BB638: .4byte sub_081BB63C + thumb_func_end sub_081BB5C8 + + thumb_func_start sub_081BB63C +sub_081BB63C: @ 0x081BB63C + push {lr} + ldr r0, _081BB67C + ldr r1, [r0] + ldr r0, _081BB680 + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081BB678 + ldr r2, _081BB684 + ldr r0, _081BB688 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081BB68C + cmp r1, r0 + bne _081BB678 + bl sub_081BB828 +_081BB678: + pop {r0} + bx r0 + .align 2, 0 +_081BB67C: .4byte gUnknown_2024174 +_081BB680: .4byte gUnknown_2023D08 +_081BB684: .4byte gUnknown_20205AC +_081BB688: .4byte gUnknown_2023E88 +_081BB68C: .4byte sub_08007140 + thumb_func_end sub_081BB63C + + thumb_func_start sub_081BB690 +sub_081BB690: @ 0x081BB690 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r3, _081BB758 + ldr r0, [r3] + ldr r7, _081BB75C + ldrb r1, [r7] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r1, [r2, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BB74C + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, [r3] + ldrb r2, [r7] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldr r4, _081BB760 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldr r0, _081BB764 + movs r1, #0xa + bl sub_080A8878 + ldr r0, _081BB768 + mov r8, r0 + ldrb r1, [r7] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r6, #0x64 + muls r0, r6, r0 + ldr r5, _081BB76C + adds r0, r0, r5 + bl sub_0805E5AC + ldr r1, _081BB770 + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081BB774 + adds r0, r0, r1 + movs r1, #0 + bl sub_08007EC0 + ldr r4, _081BB778 + ldrb r1, [r7] + adds r0, r1, r4 + ldrb r0, [r0] + lsls r1, r1, #1 + add r1, r8 + ldrh r1, [r1] + muls r1, r6, r1 + adds r1, r1, r5 + movs r2, #0 + bl sub_080743F0 + ldrb r0, [r7] + bl sub_08076320 + ldrb r0, [r7] + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_080723E0 + ldr r1, _081BB77C + ldrb r0, [r7] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BB780 + str r1, [r0] +_081BB74C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BB758: .4byte gUnknown_2024174 +_081BB75C: .4byte gUnknown_2023D08 +_081BB760: .4byte 0x000027F9 +_081BB764: .4byte sub_08058D10 +_081BB768: .4byte gUnknown_2023D12 +_081BB76C: .4byte gUnknown_2024190 +_081BB770: .4byte gUnknown_2023E88 +_081BB774: .4byte gUnknown_20205AC +_081BB778: .4byte gUnknown_3005AD0 +_081BB77C: .4byte gUnknown_3005AC0 +_081BB780: .4byte sub_081BB5C8 + thumb_func_end sub_081BB690 + + thumb_func_start sub_081BB784 +sub_081BB784: @ 0x081BB784 + push {r4, r5, r6, lr} + ldr r6, _081BB804 + ldr r0, [r6] + ldr r4, _081BB808 + ldrb r2, [r4] + ldr r1, [r0, #4] + lsls r3, r2, #1 + adds r0, r3, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _081BB7B6 + ldr r0, _081BB80C + adds r0, r3, r0 + ldrh r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + ldr r0, _081BB810 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08172CD4 +_081BB7B6: + ldr r5, _081BB814 + ldr r0, _081BB818 + ldrb r2, [r4] + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r3, r0, #2 + adds r0, r5, #0 + adds r0, #0x1c + adds r0, r3, r0 + ldr r1, [r0] + ldr r0, _081BB81C + cmp r1, r0 + bne _081BB7FC + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _081BB7FC + adds r0, r3, r5 + bl sub_08006E00 + ldr r1, _081BB820 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BB824 + str r1, [r0] +_081BB7FC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BB804: .4byte gUnknown_2024174 +_081BB808: .4byte gUnknown_2023D08 +_081BB80C: .4byte gUnknown_2023D12 +_081BB810: .4byte gUnknown_2024190 +_081BB814: .4byte gUnknown_20205AC +_081BB818: .4byte gUnknown_3005ADC +_081BB81C: .4byte sub_08007140 +_081BB820: .4byte gUnknown_3005AC0 +_081BB824: .4byte sub_081BB690 + thumb_func_end sub_081BB784 + + thumb_func_start sub_081BB828 +sub_081BB828: @ 0x081BB828 + push {r4, lr} + sub sp, #4 + ldr r1, _081BB868 + ldr r4, _081BB86C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BB870 + str r1, [r0] + ldr r0, _081BB874 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _081BB87C + bl sub_0800A02C + mov r1, sp + strb r0, [r1] + movs r0, #2 + movs r1, #4 + mov r2, sp + bl sub_0803318C + ldr r1, _081BB878 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r0, r0, r1 + movs r1, #0x38 + strb r1, [r0] + b _081BB88E + .align 2, 0 +_081BB868: .4byte gUnknown_3005AC0 +_081BB86C: .4byte gUnknown_2023D08 +_081BB870: .4byte sub_081BAAAC +_081BB874: .4byte gUnknown_2022C90 +_081BB878: .4byte gUnknown_2022D08 +_081BB87C: + ldr r2, _081BB898 + ldr r1, _081BB89C + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] +_081BB88E: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BB898: .4byte gUnknown_2023D0C +_081BB89C: .4byte gUnknown_82FACB4 + thumb_func_end sub_081BB828 + + thumb_func_start sub_081BB8A0 +sub_081BB8A0: @ 0x081BB8A0 + push {lr} + ldr r0, _081BB8C8 + ldr r2, [r0] + ldr r0, _081BB8CC + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081BB8C2 + bl sub_081BB828 +_081BB8C2: + pop {r0} + bx r0 + .align 2, 0 +_081BB8C8: .4byte gUnknown_2024174 +_081BB8CC: .4byte gUnknown_2023D08 + thumb_func_end sub_081BB8A0 + + thumb_func_start sub_081BB8D0 +sub_081BB8D0: @ 0x081BB8D0 + push {lr} + ldr r0, _081BB8F8 + ldr r2, [r0] + ldr r0, _081BB8FC + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081BB8F2 + bl sub_081BB828 +_081BB8F2: + pop {r0} + bx r0 + .align 2, 0 +_081BB8F8: .4byte gUnknown_2024174 +_081BB8FC: .4byte gUnknown_2023D08 + thumb_func_end sub_081BB8D0 + + thumb_func_start sub_081BB900 +sub_081BB900: @ 0x081BB900 + push {r4, r5, r6, lr} + sub sp, #0x100 + movs r6, #0 + ldr r1, _081BB92C + ldr r0, _081BB930 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _081BB938 + ldr r0, _081BB934 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, sp + bl sub_081BB974 + adds r6, r0, #0 + b _081BB95A + .align 2, 0 +_081BB92C: .4byte gUnknown_2022D08 +_081BB930: .4byte gUnknown_2023D08 +_081BB934: .4byte gUnknown_2023D12 +_081BB938: + ldrb r4, [r1] + movs r5, #0 +_081BB93C: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081BB952 + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + mov r2, sp + adds r1, r2, r6 + bl sub_081BB974 + adds r6, r6, r0 +_081BB952: + lsrs r4, r4, #1 + adds r5, #1 + cmp r5, #5 + ble _081BB93C +_081BB95A: + lsls r1, r6, #0x10 + lsrs r1, r1, #0x10 + movs r0, #1 + mov r2, sp + bl sub_08033E70 + bl sub_081BB828 + add sp, #0x100 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BB900 + + thumb_func_start sub_081BB974 +sub_081BB974: @ 0x081BB974 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x90 + adds r7, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r6, #0 + ldr r2, _081BB9A8 + ldr r3, _081BB9AC + ldrb r0, [r3] + lsls r0, r0, #9 + adds r1, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x3b + bls _081BB99E + bl _081BC10A +_081BB99E: + lsls r0, r0, #2 + ldr r1, _081BB9B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BB9A8: .4byte gUnknown_2022D08 +_081BB9AC: .4byte gUnknown_2023D08 +_081BB9B0: .4byte _081BB9B4 +_081BB9B4: @ jump table + .4byte _081BBAA4 @ case 0 + .4byte _081BBCC8 @ case 1 + .4byte _081BBCD8 @ case 2 + .4byte _081BBCE8 @ case 3 + .4byte _081BBD50 @ case 4 + .4byte _081BBD50 @ case 5 + .4byte _081BBD50 @ case 6 + .4byte _081BBD50 @ case 7 + .4byte _081BBD6C @ case 8 + .4byte _081BBDA8 @ case 9 + .4byte _081BBDA8 @ case 10 + .4byte _081BBDA8 @ case 11 + .4byte _081BBDA8 @ case 12 + .4byte _081BC10A @ case 13 + .4byte _081BC10A @ case 14 + .4byte _081BC10A @ case 15 + .4byte _081BC10A @ case 16 + .4byte _081BBDC4 @ case 17 + .4byte _081BBDD4 @ case 18 + .4byte _081BBE04 @ case 19 + .4byte _081BBE14 @ case 20 + .4byte _081BBE24 @ case 21 + .4byte _081BBE34 @ case 22 + .4byte _081BBE44 @ case 23 + .4byte _081BBE54 @ case 24 + .4byte _081BBE64 @ case 25 + .4byte _081BBE74 @ case 26 + .4byte _081BBE84 @ case 27 + .4byte _081BBE94 @ case 28 + .4byte _081BBEA4 @ case 29 + .4byte _081BBEB4 @ case 30 + .4byte _081BBEC4 @ case 31 + .4byte _081BBF14 @ case 32 + .4byte _081BBF24 @ case 33 + .4byte _081BBF34 @ case 34 + .4byte _081BBF44 @ case 35 + .4byte _081BBF54 @ case 36 + .4byte _081BBF64 @ case 37 + .4byte _081BBF74 @ case 38 + .4byte _081BBF84 @ case 39 + .4byte _081BBF94 @ case 40 + .4byte _081BBFC8 @ case 41 + .4byte _081BBFD8 @ case 42 + .4byte _081BBFE8 @ case 43 + .4byte _081BBFF8 @ case 44 + .4byte _081BC008 @ case 45 + .4byte _081BC018 @ case 46 + .4byte _081BC028 @ case 47 + .4byte _081BC038 @ case 48 + .4byte _081BC058 @ case 49 + .4byte _081BC068 @ case 50 + .4byte _081BC078 @ case 51 + .4byte _081BC088 @ case 52 + .4byte _081BC098 @ case 53 + .4byte _081BC0A8 @ case 54 + .4byte _081BC0B8 @ case 55 + .4byte _081BC0C8 @ case 56 + .4byte _081BC0D8 @ case 57 + .4byte _081BC0E8 @ case 58 + .4byte _081BC0F8 @ case 59 +_081BBAA4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BBCB8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + mov r1, sp + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2e] + movs r6, #0 + add r0, sp, #0x24 + mov sb, r0 + movs r1, #0x3b + add r1, sp + mov sl, 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, #5 + str r2, [sp, #0x84] + adds r0, #0x12 + str r0, [sp, #0x88] + mov r8, r4 + add r4, sp, #0xc +_081BBAF0: + adds r1, r6, #0 + adds r1, #0xd + mov r0, r8 + bl sub_0806A058 + strh r0, [r4] + adds r1, r6, #0 + adds r1, #0x11 + mov r0, r8 + bl sub_0806A058 + mov r2, sb + adds r1, r2, r6 + strb r0, [r1] + adds r4, #2 + adds r6, #1 + cmp r6, #3 + ble _081BBAF0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BBCB8 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sl + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + ldr r2, [sp, #0x80] + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [sp, #0x44] + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + mov r3, sp + movs r5, #0x1f + ands r0, r5 + ldrb r2, [r3, #0x14] + movs r1, #0x20 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + mov r3, sp + movs r6, #0x1f + ands r0, r6 + lsls r0, r0, #5 + ldrh r2, [r3, #0x14] + ldr r1, _081BBCBC + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x14] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #2 + ldrb r2, [r3, #0x15] + movs r1, #0x7d + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x15] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + movs r1, #0x1f + ands r1, r0 + lsls r1, r1, #0xf + ldr r0, [sp, #0x14] + ldr r2, _081BBCC0 + ands r0, r2 + orrs r0, r1 + str r0, [sp, #0x14] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + mov r3, sp + ands r0, r6 + lsls r0, r0, #4 + ldrh r2, [r3, #0x16] + ldr r1, _081BBCC4 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #0x16] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + mov r3, sp + ands r0, r5 + lsls r0, r0, #1 + ldrb r2, [r3, #0x17] + movs r1, #0x3f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [sp, #0x48] + adds r0, r4, #0 + movs r1, #0x37 + bl sub_0806A058 + str r0, [sp, #0x4c] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + ldr r1, [sp, #0x7c] + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x28] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0x2c] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + mov r1, sp + strh r0, [r1, #0xa] + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + mov r3, sp + movs r1, #1 + ands r0, r1 + lsls r0, r0, #6 + ldrb r2, [r3, #0x17] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x17] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + mov r3, sp + lsls r0, 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, #1 + bl sub_0806A058 + str r0, [sp, #0x54] + adds r0, r4, #0 + movs r1, #2 + ldr r2, [sp, #0x8c] + bl sub_0806A058 + ldr r0, [sp, #0x84] + ldr r1, [sp, #0x8c] + bl sub_08008828 + adds r0, r4, #0 + movs r1, #7 + ldr r2, [sp, #0x88] + bl sub_0806A058 + mov r2, sp + movs r6, #0 +_081BBCA8: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0x57 + bls _081BBCA8 + b _081BC10A + .align 2, 0 +_081BBCB8: .4byte gUnknown_2024190 +_081BBCBC: .4byte 0xFFFFFC1F +_081BBCC0: .4byte 0xFFF07FFF +_081BBCC4: .4byte 0xFFFFFE0F +_081BBCC8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBCD4 + adds r0, r0, r1 + movs r1, #0xb + b _081BC042 + .align 2, 0 +_081BBCD4: .4byte gUnknown_2024190 +_081BBCD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBCE4 + adds r0, r0, r1 + movs r1, #0xc + b _081BC042 + .align 2, 0 +_081BBCE4: .4byte gUnknown_2024190 +_081BBCE8: + movs r6, #0 + add r2, sp, #0x58 + mov sb, r2 + add r0, sp, #0x60 + mov sl, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081BBD4C + adds r4, r1, r0 + mov r8, sb +_081BBCFE: + adds r1, r6, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + mov r1, r8 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + mov r2, sl + adds r1, r2, r6 + strb r0, [r1] + movs r0, #2 + add r8, r0 + adds r6, #1 + cmp r6, #3 + ble _081BBCFE + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBD4C + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + mov r1, sb + strb r0, [r1, #0xc] + mov r2, sb + movs r6, #0 +_081BBD3C: + adds r0, r7, r6 + adds r1, r2, r6 + ldrb r1, [r1] + strb r1, [r0] + adds r6, #1 + cmp r6, #0xf + bls _081BBD3C + b _081BC10A + .align 2, 0 +_081BBD4C: .4byte gUnknown_2024190 +_081BBD50: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBD68 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #9 + b _081BC042 + .align 2, 0 +_081BBD68: .4byte gUnknown_2024190 +_081BBD6C: + movs r6, #0 + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r2, _081BBDA4 + mov r8, r2 +_081BBD78: + adds r1, r6, #0 + adds r1, #0x11 + mov r2, r8 + adds r0, r4, r2 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + cmp r6, #3 + ble _081BBD78 + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBDA4 + adds r0, r0, r1 + movs r1, #0x15 + bl sub_0806A058 + adds r1, r7, r6 + strb r0, [r1] + adds r6, #1 + b _081BC10A + .align 2, 0 +_081BBDA4: .4byte gUnknown_2024190 +_081BBDA8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBDC0 + adds r0, r0, r1 + ldrb r1, [r3] + lsls r1, r1, #9 + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + adds r1, #8 + b _081BC102 + .align 2, 0 +_081BBDC0: .4byte gUnknown_2024190 +_081BBDC4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBDD0 + adds r0, r0, r1 + movs r1, #1 + b _081BBDDE + .align 2, 0 +_081BBDD0: .4byte gUnknown_2024190 +_081BBDD4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE00 + adds r0, r0, r1 + movs r1, #0x19 +_081BBDDE: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + movs r6, #3 + b _081BC10A + .align 2, 0 +_081BBE00: .4byte gUnknown_2024190 +_081BBE04: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE10 + adds r0, r0, r1 + movs r1, #0x1a + b _081BC102 + .align 2, 0 +_081BBE10: .4byte gUnknown_2024190 +_081BBE14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE20 + adds r0, r0, r1 + movs r1, #0x1b + b _081BC102 + .align 2, 0 +_081BBE20: .4byte gUnknown_2024190 +_081BBE24: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE30 + adds r0, r0, r1 + movs r1, #0x1c + b _081BC102 + .align 2, 0 +_081BBE30: .4byte gUnknown_2024190 +_081BBE34: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE40 + adds r0, r0, r1 + movs r1, #0x1d + b _081BC102 + .align 2, 0 +_081BBE40: .4byte gUnknown_2024190 +_081BBE44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE50 + adds r0, r0, r1 + movs r1, #0x1e + b _081BC102 + .align 2, 0 +_081BBE50: .4byte gUnknown_2024190 +_081BBE54: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE60 + adds r0, r0, r1 + movs r1, #0x1f + b _081BC102 + .align 2, 0 +_081BBE60: .4byte gUnknown_2024190 +_081BBE64: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE70 + adds r0, r0, r1 + movs r1, #0x20 + b _081BC102 + .align 2, 0 +_081BBE70: .4byte gUnknown_2024190 +_081BBE74: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE80 + adds r0, r0, r1 + movs r1, #0x22 + b _081BC102 + .align 2, 0 +_081BBE80: .4byte gUnknown_2024190 +_081BBE84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBE90 + adds r0, r0, r1 + movs r1, #0x23 + b _081BC102 + .align 2, 0 +_081BBE90: .4byte gUnknown_2024190 +_081BBE94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBEA0 + adds r0, r0, r1 + movs r1, #0x24 + b _081BC102 + .align 2, 0 +_081BBEA0: .4byte gUnknown_2024190 +_081BBEA4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBEB0 + adds r0, r0, r1 + movs r1, #0x25 + b _081BC102 + .align 2, 0 +_081BBEB0: .4byte gUnknown_2024190 +_081BBEB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBEC0 + adds r0, r0, r1 + movs r1, #0x26 + b _081BC102 + .align 2, 0 +_081BBEC0: .4byte gUnknown_2024190 +_081BBEC4: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BBF10 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A058 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A058 + strb r0, [r7, #1] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A058 + strb r0, [r7, #2] + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A058 + strb r0, [r7, #3] + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A058 + strb r0, [r7, #4] + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0806A058 + strb r0, [r7, #5] + movs r6, #6 + b _081BC10A + .align 2, 0 +_081BBF10: .4byte gUnknown_2024190 +_081BBF14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF20 + adds r0, r0, r1 + movs r1, #0x27 + b _081BC102 + .align 2, 0 +_081BBF20: .4byte gUnknown_2024190 +_081BBF24: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF30 + adds r0, r0, r1 + movs r1, #0x28 + b _081BC102 + .align 2, 0 +_081BBF30: .4byte gUnknown_2024190 +_081BBF34: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF40 + adds r0, r0, r1 + movs r1, #0x29 + b _081BC102 + .align 2, 0 +_081BBF40: .4byte gUnknown_2024190 +_081BBF44: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF50 + adds r0, r0, r1 + movs r1, #0x2a + b _081BC102 + .align 2, 0 +_081BBF50: .4byte gUnknown_2024190 +_081BBF54: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF60 + adds r0, r0, r1 + movs r1, #0x2b + b _081BC102 + .align 2, 0 +_081BBF60: .4byte gUnknown_2024190 +_081BBF64: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF70 + adds r0, r0, r1 + movs r1, #0x2c + b _081BC102 + .align 2, 0 +_081BBF70: .4byte gUnknown_2024190 +_081BBF74: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF80 + adds r0, r0, r1 + movs r1, #0 + b _081BBF9E + .align 2, 0 +_081BBF80: .4byte gUnknown_2024190 +_081BBF84: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBF90 + adds r0, r0, r1 + movs r1, #9 + b _081BC042 + .align 2, 0 +_081BBF90: .4byte gUnknown_2024190 +_081BBF94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBFC4 + adds r0, r0, r1 + movs r1, #0x37 +_081BBF9E: + bl sub_0806A058 + adds r1, r0, #0 + strb r1, [r7] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r0, #0xff + lsls r0, r0, #0x10 + ands r0, r1 + lsrs r0, r0, #0x10 + strb r0, [r7, #2] + lsrs r0, r1, #0x18 + strb r0, [r7, #3] + movs r6, #4 + b _081BC10A + .align 2, 0 +_081BBFC4: .4byte gUnknown_2024190 +_081BBFC8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBFD4 + adds r0, r0, r1 + movs r1, #0x38 + b _081BC102 + .align 2, 0 +_081BBFD4: .4byte gUnknown_2024190 +_081BBFD8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBFE4 + adds r0, r0, r1 + movs r1, #0x39 + b _081BC042 + .align 2, 0 +_081BBFE4: .4byte gUnknown_2024190 +_081BBFE8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BBFF4 + adds r0, r0, r1 + movs r1, #0x3a + b _081BC042 + .align 2, 0 +_081BBFF4: .4byte gUnknown_2024190 +_081BBFF8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC004 + adds r0, r0, r1 + movs r1, #0x3b + b _081BC042 + .align 2, 0 +_081BC004: .4byte gUnknown_2024190 +_081BC008: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC014 + adds r0, r0, r1 + movs r1, #0x3c + b _081BC042 + .align 2, 0 +_081BC014: .4byte gUnknown_2024190 +_081BC018: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC024 + adds r0, r0, r1 + movs r1, #0x3d + b _081BC042 + .align 2, 0 +_081BC024: .4byte gUnknown_2024190 +_081BC028: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC034 + adds r0, r0, r1 + movs r1, #0x3e + b _081BC042 + .align 2, 0 +_081BC034: .4byte gUnknown_2024190 +_081BC038: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC054 + adds r0, r0, r1 + movs r1, #0x3f +_081BC042: + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + strb r0, [r7] + lsrs r0, r0, #8 + strb r0, [r7, #1] + movs r6, #2 + b _081BC10A + .align 2, 0 +_081BC054: .4byte gUnknown_2024190 +_081BC058: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC064 + adds r0, r0, r1 + movs r1, #0x16 + b _081BC102 + .align 2, 0 +_081BC064: .4byte gUnknown_2024190 +_081BC068: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC074 + adds r0, r0, r1 + movs r1, #0x17 + b _081BC102 + .align 2, 0 +_081BC074: .4byte gUnknown_2024190 +_081BC078: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC084 + adds r0, r0, r1 + movs r1, #0x18 + b _081BC102 + .align 2, 0 +_081BC084: .4byte gUnknown_2024190 +_081BC088: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC094 + adds r0, r0, r1 + movs r1, #0x21 + b _081BC102 + .align 2, 0 +_081BC094: .4byte gUnknown_2024190 +_081BC098: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0A4 + adds r0, r0, r1 + movs r1, #0x2f + b _081BC102 + .align 2, 0 +_081BC0A4: .4byte gUnknown_2024190 +_081BC0A8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0B4 + adds r0, r0, r1 + movs r1, #0x30 + b _081BC102 + .align 2, 0 +_081BC0B4: .4byte gUnknown_2024190 +_081BC0B8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0C4 + adds r0, r0, r1 + movs r1, #0x32 + b _081BC102 + .align 2, 0 +_081BC0C4: .4byte gUnknown_2024190 +_081BC0C8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0D4 + adds r0, r0, r1 + movs r1, #0x33 + b _081BC102 + .align 2, 0 +_081BC0D4: .4byte gUnknown_2024190 +_081BC0D8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0E4 + adds r0, r0, r1 + movs r1, #0x34 + b _081BC102 + .align 2, 0 +_081BC0E4: .4byte gUnknown_2024190 +_081BC0E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC0F4 + adds r0, r0, r1 + movs r1, #0x35 + b _081BC102 + .align 2, 0 +_081BC0F4: .4byte gUnknown_2024190 +_081BC0F8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC11C + adds r0, r0, r1 + movs r1, #0x36 +_081BC102: + bl sub_0806A058 + strb r0, [r7] + movs r6, #1 +_081BC10A: + adds r0, r6, #0 + add sp, #0x90 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081BC11C: .4byte gUnknown_2024190 + thumb_func_end sub_081BB974 + + thumb_func_start sub_081BC120 +sub_081BC120: @ 0x081BC120 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BC120 + + thumb_func_start sub_081BC12C +sub_081BC12C: @ 0x081BC12C + push {r4, r5, lr} + ldr r1, _081BC150 + ldr r0, _081BC154 + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + bne _081BC15C + ldr r0, _081BC158 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrb r0, [r1] + bl sub_081BC184 + b _081BC17A + .align 2, 0 +_081BC150: .4byte gUnknown_2022D08 +_081BC154: .4byte gUnknown_2023D08 +_081BC158: .4byte gUnknown_2023D12 +_081BC15C: + ldrb r4, [r1] + movs r5, #0 +_081BC160: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _081BC16E + adds r0, r5, #0 + bl sub_081BC184 +_081BC16E: + lsrs r4, r4, #1 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #5 + bls _081BC160 +_081BC17A: + bl sub_081BB828 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081BC12C + + thumb_func_start sub_081BC184 +sub_081BC184: @ 0x081BC184 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x34 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081BC1BC + ldrb r0, [r0] + lsls r0, r0, #9 + ldr r2, _081BC1C0 + adds r3, r0, r2 + adds r6, r3, #0 + subs r1, r2, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r7, r2, #0 + cmp r0, #0x3b + bls _081BC1B0 + bl _081BCB4A +_081BC1B0: + lsls r0, r0, #2 + ldr r1, _081BC1C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BC1BC: .4byte gUnknown_2023D08 +_081BC1C0: .4byte gUnknown_2022D0B +_081BC1C4: .4byte _081BC1C8 +_081BC1C8: @ jump table + .4byte _081BC2B8 @ case 0 + .4byte _081BC450 @ case 1 + .4byte _081BC470 @ case 2 + .4byte _081BC490 @ case 3 + .4byte _081BC4E8 @ case 4 + .4byte _081BC4E8 @ case 5 + .4byte _081BC4E8 @ case 6 + .4byte _081BC4E8 @ case 7 + .4byte _081BC510 @ case 8 + .4byte _081BC574 @ case 9 + .4byte _081BC574 @ case 10 + .4byte _081BC574 @ case 11 + .4byte _081BC574 @ case 12 + .4byte _081BCB4A @ case 13 + .4byte _081BCB4A @ case 14 + .4byte _081BCB4A @ case 15 + .4byte _081BCB4A @ case 16 + .4byte _081BC5A4 @ case 17 + .4byte _081BC5C4 @ case 18 + .4byte _081BC5E4 @ case 19 + .4byte _081BC604 @ case 20 + .4byte _081BC624 @ case 21 + .4byte _081BC644 @ case 22 + .4byte _081BC664 @ case 23 + .4byte _081BC684 @ case 24 + .4byte _081BC6A4 @ case 25 + .4byte _081BC6C4 @ case 26 + .4byte _081BC6E4 @ case 27 + .4byte _081BC704 @ case 28 + .4byte _081BC724 @ case 29 + .4byte _081BC744 @ case 30 + .4byte _081BC764 @ case 31 + .4byte _081BC7D4 @ case 32 + .4byte _081BC7F4 @ case 33 + .4byte _081BC814 @ case 34 + .4byte _081BC834 @ case 35 + .4byte _081BC854 @ case 36 + .4byte _081BC874 @ case 37 + .4byte _081BC894 @ case 38 + .4byte _081BC8B4 @ case 39 + .4byte _081BC8D4 @ case 40 + .4byte _081BC8F4 @ case 41 + .4byte _081BC914 @ case 42 + .4byte _081BC934 @ case 43 + .4byte _081BC954 @ case 44 + .4byte _081BC974 @ case 45 + .4byte _081BC994 @ case 46 + .4byte _081BC9B4 @ case 47 + .4byte _081BC9D4 @ case 48 + .4byte _081BC9F4 @ case 49 + .4byte _081BCA14 @ case 50 + .4byte _081BCA34 @ case 51 + .4byte _081BCA54 @ case 52 + .4byte _081BCA74 @ case 53 + .4byte _081BCA94 @ case 54 + .4byte _081BCAB4 @ case 55 + .4byte _081BCAD4 @ case 56 + .4byte _081BCAF4 @ case 57 + .4byte _081BCB14 @ case 58 + .4byte _081BCB34 @ case 59 +_081BC2B8: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BC44C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + adds r2, r6, #0 + bl sub_0806A774 + adds r2, r6, #0 + adds r2, #0x2e + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A774 + movs r0, #0 + mov r8, r0 + movs r0, #0x3b + adds r0, r0, r6 + mov sl, r0 + adds r0, r6, #0 + adds r0, #0x2b + str r0, [sp, #0x20] + adds r0, #0x19 + str r0, [sp, #0x28] + adds r0, #4 + str r0, [sp, #0x2c] + adds r0, #4 + str r0, [sp, #0x30] + subs r0, #0x22 + str r0, [sp, #0x1c] + subs r0, #2 + str r0, [sp, #0x18] + adds r0, #4 + str r0, [sp, #0x24] + adds r0, r6, #2 + str r0, [sp, #4] + adds r0, r6, #4 + str r0, [sp, #8] + adds r0, r6, #6 + str r0, [sp, #0xc] + adds r0, #2 + str r0, [sp, #0x10] + adds r0, #2 + str r0, [sp, #0x14] + mov sb, r4 + adds r7, r6, #0 + adds r7, #0x24 + adds r4, r6, #0 + adds r4, #0xc +_081BC31E: + mov r1, r8 + adds r1, #0xd + mov r0, sb + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + mov r0, sb + adds r2, r7, #0 + bl sub_0806A774 + adds r7, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _081BC31E + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BC44C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x15 + mov r2, sl + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x20 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x19 + ldr r2, [sp, #0x28] + bl sub_0806A774 + ldrb r0, [r6, #0x14] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1b + mov r1, sp + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x27 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x14] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x28 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x29 + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldr r0, [r6, #0x14] + lsls r0, r0, #0xc + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2a + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrh r0, [r6, #0x16] + lsls r0, r0, #0x17 + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2b + mov r2, sp + bl sub_0806A774 + mov r1, sp + ldrb r0, [r6, #0x17] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0 + ldr r2, [sp, #0x2c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x37 + ldr r2, [sp, #0x30] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x39 + ldr r2, [sp, #0x18] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3a + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3b + ldr r2, [sp, #4] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3c + ldr r2, [sp, #8] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3d + ldr r2, [sp, #0xc] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3e + ldr r2, [sp, #0x10] + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x3f + ldr r2, [sp, #0x14] + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC44C: .4byte gUnknown_2024190 +_081BC450: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC468 + adds r0, r0, r1 + ldr r1, _081BC46C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xb + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC468: .4byte gUnknown_2024190 +_081BC46C: .4byte gUnknown_2023D08 +_081BC470: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC488 + adds r0, r0, r1 + ldr r1, _081BC48C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0xc + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC488: .4byte gUnknown_2024190 +_081BC48C: .4byte gUnknown_2023D08 +_081BC490: + movs r0, #0 + mov r8, r0 + movs r0, #0xc + adds r0, r0, r3 + mov sb, r0 + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081BC4E4 + adds r7, r1, r0 + adds r6, r3, #0 + adds r6, #8 + adds r4, r3, #0 +_081BC4AA: + mov r1, r8 + adds r1, #0xd + adds r0, r7, #0 + adds r2, r4, #0 + bl sub_0806A774 + mov r1, r8 + adds r1, #0x11 + adds r0, r7, #0 + adds r2, r6, #0 + bl sub_0806A774 + adds r6, #1 + adds r4, #2 + movs r0, #1 + add r8, r0 + mov r0, r8 + cmp r0, #3 + ble _081BC4AA + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC4E4 + adds r0, r0, r1 + movs r1, #0x15 + mov r2, sb + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC4E4: .4byte gUnknown_2024190 +_081BC4E8: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC504 + adds r0, r0, r1 + ldr r3, _081BC508 + ldr r1, _081BC50C + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #9 + b _081BC58C + .align 2, 0 +_081BC504: .4byte gUnknown_2024190 +_081BC508: .4byte gUnknown_2022D08 +_081BC50C: .4byte gUnknown_2023D08 +_081BC510: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BC56C + adds r4, r4, r0 + ldr r5, _081BC570 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC56C: .4byte gUnknown_2024190 +_081BC570: .4byte gUnknown_2023D08 +_081BC574: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC598 + adds r0, r0, r1 + ldr r3, _081BC59C + ldr r1, _081BC5A0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r1, r3, #1 + adds r1, r2, r1 + ldrb r1, [r1] + adds r1, #8 +_081BC58C: + adds r3, #3 + adds r2, r2, r3 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC598: .4byte gUnknown_2024190 +_081BC59C: .4byte gUnknown_2022D08 +_081BC5A0: .4byte gUnknown_2023D08 +_081BC5A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC5BC + adds r0, r0, r1 + ldr r1, _081BC5C0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #1 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC5BC: .4byte gUnknown_2024190 +_081BC5C0: .4byte gUnknown_2023D08 +_081BC5C4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC5DC + adds r0, r0, r1 + ldr r1, _081BC5E0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x19 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC5DC: .4byte gUnknown_2024190 +_081BC5E0: .4byte gUnknown_2023D08 +_081BC5E4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC5FC + adds r0, r0, r1 + ldr r1, _081BC600 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1a + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC5FC: .4byte gUnknown_2024190 +_081BC600: .4byte gUnknown_2023D08 +_081BC604: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC61C + adds r0, r0, r1 + ldr r1, _081BC620 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1b + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC61C: .4byte gUnknown_2024190 +_081BC620: .4byte gUnknown_2023D08 +_081BC624: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC63C + adds r0, r0, r1 + ldr r1, _081BC640 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1c + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC63C: .4byte gUnknown_2024190 +_081BC640: .4byte gUnknown_2023D08 +_081BC644: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC65C + adds r0, r0, r1 + ldr r1, _081BC660 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1d + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC65C: .4byte gUnknown_2024190 +_081BC660: .4byte gUnknown_2023D08 +_081BC664: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC67C + adds r0, r0, r1 + ldr r1, _081BC680 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1e + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC67C: .4byte gUnknown_2024190 +_081BC680: .4byte gUnknown_2023D08 +_081BC684: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC69C + adds r0, r0, r1 + ldr r1, _081BC6A0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x1f + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC69C: .4byte gUnknown_2024190 +_081BC6A0: .4byte gUnknown_2023D08 +_081BC6A4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC6BC + adds r0, r0, r1 + ldr r1, _081BC6C0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x20 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC6BC: .4byte gUnknown_2024190 +_081BC6C0: .4byte gUnknown_2023D08 +_081BC6C4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC6DC + adds r0, r0, r1 + ldr r1, _081BC6E0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x22 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC6DC: .4byte gUnknown_2024190 +_081BC6E0: .4byte gUnknown_2023D08 +_081BC6E4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC6FC + adds r0, r0, r1 + ldr r1, _081BC700 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x23 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC6FC: .4byte gUnknown_2024190 +_081BC700: .4byte gUnknown_2023D08 +_081BC704: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC71C + adds r0, r0, r1 + ldr r1, _081BC720 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x24 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC71C: .4byte gUnknown_2024190 +_081BC720: .4byte gUnknown_2023D08 +_081BC724: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC73C + adds r0, r0, r1 + ldr r1, _081BC740 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x25 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC73C: .4byte gUnknown_2024190 +_081BC740: .4byte gUnknown_2023D08 +_081BC744: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC75C + adds r0, r0, r1 + ldr r1, _081BC760 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x26 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC75C: .4byte gUnknown_2024190 +_081BC760: .4byte gUnknown_2023D08 +_081BC764: + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081BC7CC + adds r4, r4, r0 + ldr r5, _081BC7D0 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r2, r2, r7 + adds r0, r4, #0 + movs r1, #0x27 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #1 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #2 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x29 + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #3 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2a + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #4 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0806A774 + ldrb r2, [r5] + lsls r2, r2, #9 + adds r0, r7, #5 + adds r2, r2, r0 + adds r0, r4, #0 + b _081BC884 + .align 2, 0 +_081BC7CC: .4byte gUnknown_2024190 +_081BC7D0: .4byte gUnknown_2023D08 +_081BC7D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC7EC + adds r0, r0, r1 + ldr r1, _081BC7F0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x27 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC7EC: .4byte gUnknown_2024190 +_081BC7F0: .4byte gUnknown_2023D08 +_081BC7F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC80C + adds r0, r0, r1 + ldr r1, _081BC810 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x28 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC80C: .4byte gUnknown_2024190 +_081BC810: .4byte gUnknown_2023D08 +_081BC814: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC82C + adds r0, r0, r1 + ldr r1, _081BC830 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x29 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC82C: .4byte gUnknown_2024190 +_081BC830: .4byte gUnknown_2023D08 +_081BC834: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC84C + adds r0, r0, r1 + ldr r1, _081BC850 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2a + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC84C: .4byte gUnknown_2024190 +_081BC850: .4byte gUnknown_2023D08 +_081BC854: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC86C + adds r0, r0, r1 + ldr r1, _081BC870 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2b + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC86C: .4byte gUnknown_2024190 +_081BC870: .4byte gUnknown_2023D08 +_081BC874: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC88C + adds r0, r0, r1 + ldr r1, _081BC890 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 +_081BC884: + movs r1, #0x2c + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC88C: .4byte gUnknown_2024190 +_081BC890: .4byte gUnknown_2023D08 +_081BC894: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC8AC + adds r0, r0, r1 + ldr r1, _081BC8B0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC8AC: .4byte gUnknown_2024190 +_081BC8B0: .4byte gUnknown_2023D08 +_081BC8B4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC8CC + adds r0, r0, r1 + ldr r1, _081BC8D0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #9 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC8CC: .4byte gUnknown_2024190 +_081BC8D0: .4byte gUnknown_2023D08 +_081BC8D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC8EC + adds r0, r0, r1 + ldr r1, _081BC8F0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x37 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC8EC: .4byte gUnknown_2024190 +_081BC8F0: .4byte gUnknown_2023D08 +_081BC8F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC90C + adds r0, r0, r1 + ldr r1, _081BC910 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x38 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC90C: .4byte gUnknown_2024190 +_081BC910: .4byte gUnknown_2023D08 +_081BC914: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC92C + adds r0, r0, r1 + ldr r1, _081BC930 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x39 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC92C: .4byte gUnknown_2024190 +_081BC930: .4byte gUnknown_2023D08 +_081BC934: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC94C + adds r0, r0, r1 + ldr r1, _081BC950 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3a + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC94C: .4byte gUnknown_2024190 +_081BC950: .4byte gUnknown_2023D08 +_081BC954: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC96C + adds r0, r0, r1 + ldr r1, _081BC970 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3b + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC96C: .4byte gUnknown_2024190 +_081BC970: .4byte gUnknown_2023D08 +_081BC974: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC98C + adds r0, r0, r1 + ldr r1, _081BC990 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3c + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC98C: .4byte gUnknown_2024190 +_081BC990: .4byte gUnknown_2023D08 +_081BC994: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC9AC + adds r0, r0, r1 + ldr r1, _081BC9B0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3d + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC9AC: .4byte gUnknown_2024190 +_081BC9B0: .4byte gUnknown_2023D08 +_081BC9B4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC9CC + adds r0, r0, r1 + ldr r1, _081BC9D0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3e + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC9CC: .4byte gUnknown_2024190 +_081BC9D0: .4byte gUnknown_2023D08 +_081BC9D4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BC9EC + adds r0, r0, r1 + ldr r1, _081BC9F0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x3f + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BC9EC: .4byte gUnknown_2024190 +_081BC9F0: .4byte gUnknown_2023D08 +_081BC9F4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCA0C + adds r0, r0, r1 + ldr r1, _081BCA10 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x16 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCA0C: .4byte gUnknown_2024190 +_081BCA10: .4byte gUnknown_2023D08 +_081BCA14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCA2C + adds r0, r0, r1 + ldr r1, _081BCA30 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x17 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCA2C: .4byte gUnknown_2024190 +_081BCA30: .4byte gUnknown_2023D08 +_081BCA34: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCA4C + adds r0, r0, r1 + ldr r1, _081BCA50 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x18 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCA4C: .4byte gUnknown_2024190 +_081BCA50: .4byte gUnknown_2023D08 +_081BCA54: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCA6C + adds r0, r0, r1 + ldr r1, _081BCA70 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x21 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCA6C: .4byte gUnknown_2024190 +_081BCA70: .4byte gUnknown_2023D08 +_081BCA74: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCA8C + adds r0, r0, r1 + ldr r1, _081BCA90 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x2f + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCA8C: .4byte gUnknown_2024190 +_081BCA90: .4byte gUnknown_2023D08 +_081BCA94: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCAAC + adds r0, r0, r1 + ldr r1, _081BCAB0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x30 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCAAC: .4byte gUnknown_2024190 +_081BCAB0: .4byte gUnknown_2023D08 +_081BCAB4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCACC + adds r0, r0, r1 + ldr r1, _081BCAD0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x32 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCACC: .4byte gUnknown_2024190 +_081BCAD0: .4byte gUnknown_2023D08 +_081BCAD4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCAEC + adds r0, r0, r1 + ldr r1, _081BCAF0 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x33 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCAEC: .4byte gUnknown_2024190 +_081BCAF0: .4byte gUnknown_2023D08 +_081BCAF4: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCB0C + adds r0, r0, r1 + ldr r1, _081BCB10 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x34 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCB0C: .4byte gUnknown_2024190 +_081BCB10: .4byte gUnknown_2023D08 +_081BCB14: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCB2C + adds r0, r0, r1 + ldr r1, _081BCB30 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x35 + bl sub_0806A774 + b _081BCB4A + .align 2, 0 +_081BCB2C: .4byte gUnknown_2024190 +_081BCB30: .4byte gUnknown_2023D08 +_081BCB34: + movs r0, #0x64 + muls r0, r5, r0 + ldr r1, _081BCB74 + adds r0, r0, r1 + ldr r1, _081BCB78 + ldrb r2, [r1] + lsls r2, r2, #9 + adds r2, r2, r7 + movs r1, #0x36 + bl sub_0806A774 +_081BCB4A: + ldr r2, _081BCB7C + ldr r0, _081BCB78 + ldrb r1, [r0] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081BCB74 + adds r0, r0, r2 + bl sub_0805E5AC + add sp, #0x34 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BCB74: .4byte gUnknown_2024190 +_081BCB78: .4byte gUnknown_2023D08 +_081BCB7C: .4byte gUnknown_2023D12 + thumb_func_end sub_081BC184 + + thumb_func_start sub_081BCB80 +sub_081BCB80: @ 0x081BCB80 + push {r4, r5, r6, r7, lr} + ldr r1, _081BCBE4 + ldr r7, _081BCBE8 + ldrb r2, [r7] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + adds r3, r1, #0 + muls r3, r0, r3 + ldr r4, _081BCBEC + lsls r2, r2, #9 + adds r0, r4, #1 + adds r0, r2, r0 + ldrb r0, [r0] + ldr r1, _081BCBF0 + adds r0, r0, r1 + adds r5, r3, r0 + movs r3, #0 + adds r0, r4, #2 + adds r2, r2, r0 + ldrb r2, [r2] + cmp r3, r2 + bhs _081BCBD8 + adds r6, r4, #0 + adds r2, r7, #0 + adds r4, r0, #0 +_081BCBB6: + adds r1, r5, r3 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, #3 + adds r0, r3, r0 + adds r0, r0, r6 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r0, [r2] + lsls r0, r0, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r3, r0 + blo _081BCBB6 +_081BCBD8: + bl sub_081BB828 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BCBE4: .4byte gUnknown_2023D12 +_081BCBE8: .4byte gUnknown_2023D08 +_081BCBEC: .4byte gUnknown_2022D08 +_081BCBF0: .4byte gUnknown_2024190 + thumb_func_end sub_081BCB80 + + thumb_func_start sub_081BCBF4 +sub_081BCBF4: @ 0x081BCBF4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081BCCE8 + mov r8, r0 + ldr r6, _081BCCEC + ldrb r1, [r6] + lsls r0, r1, #1 + add r0, r8 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _081BCCF0 + adds r0, r0, r4 + bl sub_0805D998 + ldrb r0, [r6] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0xb + bl sub_0806A058 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069BA8 + ldr r0, _081BCCF4 + mov r8, r0 + ldrb r0, [r6] + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldrb r0, [r6] + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _081BCCF8 + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r5, _081BCCFC + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BCD00 + strh r1, [r0, #0x24] + ldrb r2, [r6] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x2e] + ldrb r3, [r6] + adds r0, r3, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r2, [r6] + adds r4, r2, r4 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BCD04 + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_08007EC0 + ldr r1, _081BCD08 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BCD0C + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BCCE8: .4byte gUnknown_2023D12 +_081BCCEC: .4byte gUnknown_2023D08 +_081BCCF0: .4byte gUnknown_2024190 +_081BCCF4: .4byte gUnknown_2024640 +_081BCCF8: .4byte gUnknown_2023E88 +_081BCCFC: .4byte gUnknown_20205AC +_081BCD00: .4byte 0x0000FF10 +_081BCD04: .4byte gUnknown_2024188 +_081BCD08: .4byte gUnknown_3005AC0 +_081BCD0C: .4byte sub_081BAE70 + thumb_func_end sub_081BCBF4 + + thumb_func_start sub_081BCD10 +sub_081BCD10: @ 0x081BCD10 + push {r4, r5, r6, lr} + ldr r5, _081BCD68 + ldrb r0, [r5] + ldr r4, _081BCD6C + lsls r1, r0, #9 + adds r6, r4, #2 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_0805EBA0 + ldr r2, _081BCD70 + ldrb r0, [r5] + lsls r1, r0, #1 + adds r1, r1, r2 + lsls r0, r0, #9 + adds r4, #1 + adds r0, r0, r4 + ldrb r0, [r0] + strh r0, [r1] + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081BCD74 + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r5] + lsls r1, r0, #9 + adds r1, r1, r6 + ldrb r1, [r1] + bl sub_081BCD80 + ldr r1, _081BCD78 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BCD7C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BCD68: .4byte gUnknown_2023D08 +_081BCD6C: .4byte gUnknown_2022D08 +_081BCD70: .4byte gUnknown_2023D12 +_081BCD74: .4byte gUnknown_2024190 +_081BCD78: .4byte gUnknown_3005AC0 +_081BCD7C: .4byte sub_081BB784 + thumb_func_end sub_081BCD10 + + thumb_func_start sub_081BCD80 +sub_081BCD80: @ 0x081BCD80 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r6, #0 + bl sub_0805EBA0 + ldr r0, _081BCED4 + lsls r2, r6, #1 + adds r2, r2, r0 + ldr r0, _081BCED8 + lsls r1, r6, #9 + adds r0, #1 + adds r1, r1, r0 + ldrb r0, [r1] + strh r0, [r2] + ldrh r1, [r2] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081BCEDC + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + mov r8, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + ldr r0, _081BCEE0 + bl sub_0806F0C4 + ldr r1, _081BCEE4 + mov sb, r1 + add sb, r6 + mov r1, sb + strb r0, [r1] + adds r0, r6, #0 + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r0, r8 + bl sub_08069BA8 + ldr r0, _081BCEE8 + mov sl, r0 + adds r0, r6, #0 + movs r1, #2 + bl sub_080A5534 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + adds r0, r6, #0 + bl sub_080A5A00 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r6, #0 + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _081BCEEC + adds r4, r6, r4 + strb r0, [r4] + ldr r5, _081BCEF0 + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r4] + strh r1, [r0, #0x30] + mov r0, sb + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x32] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r6, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + mov r1, r8 + strh r1, [r0, #0x32] + ldrb r0, [r4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r3, r6, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BCEF4 + adds r6, r6, r1 + ldrb r1, [r6] + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081BCEF8 + str r1, [r0] + movs r0, #0 + movs r1, #0xff + bl sub_08074DF0 + mov r1, sb + ldrb r2, [r1] + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r5 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r1, #0x2e] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BCED4: .4byte gUnknown_2023D12 +_081BCED8: .4byte gUnknown_2022D08 +_081BCEDC: .4byte gUnknown_2024190 +_081BCEE0: .4byte sub_0805D330 +_081BCEE4: .4byte gUnknown_3005ADC +_081BCEE8: .4byte gUnknown_2024640 +_081BCEEC: .4byte gUnknown_2023E88 +_081BCEF0: .4byte gUnknown_20205AC +_081BCEF4: .4byte gUnknown_2024188 +_081BCEF8: .4byte sub_08007140 + thumb_func_end sub_081BCD80 + + thumb_func_start sub_081BCEFC +sub_081BCEFC: @ 0x081BCEFC + push {r4, r5, r6, lr} + ldr r1, _081BCF30 + ldr r6, _081BCF34 + ldrb r2, [r6] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r3, [r0] + cmp r3, #0 + bne _081BCF44 + ldr r0, _081BCF38 + ldr r0, [r0] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + strb r3, [r0, #4] + ldr r1, _081BCF3C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BCF40 + str r1, [r0] + b _081BCF7A + .align 2, 0 +_081BCF30: .4byte gUnknown_2022D08 +_081BCF34: .4byte gUnknown_2023D08 +_081BCF38: .4byte gUnknown_2024174 +_081BCF3C: .4byte gUnknown_3005AC0 +_081BCF40: .4byte sub_081BCF8C +_081BCF44: + ldr r5, _081BCF80 + adds r0, r2, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081BCF84 + adds r0, r0, r4 + bl sub_0800730C + ldrb r0, [r6] + adds r0, r0, r5 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + ldr r1, _081BCF88 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08072394 + bl sub_081BB828 +_081BCF7A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BCF80: .4byte gUnknown_2023E88 +_081BCF84: .4byte gUnknown_20205AC +_081BCF88: .4byte gUnknown_3005AD0 + thumb_func_end sub_081BCEFC + + thumb_func_start sub_081BCF8C +sub_081BCF8C: @ 0x081BCF8C + push {r4, r5, r6, lr} + ldr r6, _081BCFAC + ldr r4, [r6] + ldr r5, _081BCFB0 + ldrb r2, [r5] + ldr r1, [r4, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r3, r0, r1 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _081BCFB4 + cmp r0, #1 + beq _081BCFE2 + b _081BD00A + .align 2, 0 +_081BCFAC: .4byte gUnknown_2024174 +_081BCFB0: .4byte gUnknown_2023D08 +_081BCFB4: + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081BCFCE + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_081BCFCE: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _081BD00A +_081BCFE2: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081BD00A + strb r0, [r3, #4] + ldrb r2, [r5] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #1 + bl sub_0805D6E0 + ldr r1, _081BD010 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD014 + str r1, [r0] +_081BD00A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD010: .4byte gUnknown_3005AC0 +_081BD014: .4byte sub_081BB4C4 + thumb_func_end sub_081BCF8C + + thumb_func_start sub_081BD018 +sub_081BD018: @ 0x081BD018 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _081BD038 + ldrh r1, [r2] + ldr r0, _081BD03C + cmp r1, r0 + bne _081BD044 + movs r4, #7 + movs r0, #0x5a + mov sb, r0 + ldr r0, _081BD040 + ldrb r1, [r0, #0x1c] + b _081BD05A + .align 2, 0 +_081BD038: .4byte gUnknown_203886E +_081BD03C: .4byte 0x00000C03 +_081BD040: .4byte gUnknown_82D95BC +_081BD044: + ldrh r0, [r2] + bl sub_081629A4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x20 + mov sb, r0 + ldr r1, _081BD10C + lsls r0, r4, #2 + adds r0, r0, r1 + ldrb r1, [r0] +_081BD05A: + movs r0, #8 + subs r0, r0, r1 + lsls r0, r0, #0x12 + movs r1, #0xa0 + lsls r1, r1, #0xf + adds r0, r0, r1 + lsrs r7, r0, #0x10 + ldr r0, _081BD110 + ldrh r1, [r0] + ldr r0, _081BD114 + cmp r1, r0 + bne _081BD130 + ldr r5, _081BD118 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_0805DBA0 + ldrb r0, [r5] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08069C6C + ldr r6, _081BD11C + mov r8, sb + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r5] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + adds r0, r6, #0 + mov r1, r8 + adds r2, r4, #0 + bl sub_08006B0C + ldr r6, _081BD120 + ldrb r1, [r5] + adds r1, r1, r6 + strb r0, [r1] + ldr r4, _081BD124 + ldrb r3, [r5] + adds r0, r3, r6 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + lsls r3, r3, #4 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r3 + strb r0, [r1, #5] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081BD128 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x1c + adds r0, r0, r4 + ldr r1, _081BD12C + str r1, [r0] + b _081BD218 + .align 2, 0 +_081BD10C: .4byte gUnknown_82D8D70 +_081BD110: .4byte gUnknown_203886E +_081BD114: .4byte 0x00000C03 +_081BD118: .4byte gUnknown_2023D08 +_081BD11C: .4byte gUnknown_2024640 +_081BD120: .4byte gUnknown_2023E88 +_081BD124: .4byte gUnknown_20205AC +_081BD128: .4byte 0x0000FFFE +_081BD12C: .4byte sub_0805D3C8 +_081BD130: + adds r5, r4, #0 + ldr r6, _081BD234 + ldrb r1, [r6] + adds r0, r5, #0 + bl sub_0805DB54 + ldrb r0, [r6] + bl sub_080A630C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r5, #0 + bl sub_08069D00 + ldr r0, _081BD238 + mov r8, r0 + lsls r4, r7, #0x10 + asrs r4, r4, #0x10 + ldrb r0, [r6] + bl sub_080A7BAC + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r0, r8 + mov r1, sb + adds r2, r4, #0 + bl sub_08006B0C + ldr r4, _081BD23C + ldrb r1, [r6] + adds r1, r1, r4 + strb r0, [r1] + ldr r0, _081BD240 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrh r0, [r5, #4] + bl sub_0800851C + ldr r5, _081BD244 + ldrb r1, [r6] + adds r1, r1, r4 + ldrb r1, [r1] + lsls r2, r1, #4 + adds r2, r2, r1 + lsls r2, r2, #2 + adds r2, r2, r5 + lsls r0, r0, #4 + ldrb r3, [r2, #5] + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + strb r1, [r2, #5] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0xf0 + strh r1, [r0, #0x24] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x30 + strh r1, [r0, #0x26] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BD248 + strh r1, [r0, #0x2e] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081BD24C + str r1, [r0] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1, #1] + ldrb r0, [r6] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] +_081BD218: + ldr r1, _081BD250 + ldr r0, _081BD234 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD254 + str r1, [r0] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BD234: .4byte gUnknown_2023D08 +_081BD238: .4byte gUnknown_2024640 +_081BD23C: .4byte gUnknown_2023E88 +_081BD240: .4byte gUnknown_82D91CC +_081BD244: .4byte gUnknown_20205AC +_081BD248: .4byte 0x0000FFFE +_081BD24C: .4byte sub_0805D3C8 +_081BD250: .4byte gUnknown_3005AC0 +_081BD254: .4byte sub_081BAAFC + thumb_func_end sub_081BD018 + + thumb_func_start sub_081BD258 +sub_081BD258: @ 0x081BD258 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD258 + + thumb_func_start sub_081BD264 +sub_081BD264: @ 0x081BD264 + push {r4, r5, r6, lr} + ldr r6, _081BD2F0 + ldr r4, _081BD2F4 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _081BD2F8 + adds r0, r0, r5 + bl sub_080A6230 + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #0x23 + strh r1, [r0, #0x2e] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BD2FC + strh r1, [r0, #0x32] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r5, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081BD300 + str r1, [r0] + ldrb r0, [r4] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, _081BD304 + bl sub_080A5B9C + ldr r1, _081BD308 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD30C + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD2F0: .4byte gUnknown_2023E88 +_081BD2F4: .4byte gUnknown_2023D08 +_081BD2F8: .4byte gUnknown_20205AC +_081BD2FC: .4byte 0x0000FFD8 +_081BD300: .4byte sub_080A67B4 +_081BD304: .4byte sub_08007140 +_081BD308: .4byte gUnknown_3005AC0 +_081BD30C: .4byte sub_081BAB34 + thumb_func_end sub_081BD264 + + thumb_func_start sub_081BD310 +sub_081BD310: @ 0x081BD310 + push {r4, r5, r6, lr} + ldr r6, _081BD35C + ldr r4, [r6] + ldr r5, _081BD360 + ldrb r2, [r5] + ldr r0, [r4, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r3, r1, r0 + ldrb r0, [r3, #4] + cmp r0, #0 + bne _081BD364 + ldr r1, [r4] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081BD344 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_081BD344: + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #4] + adds r1, #1 + strb r1, [r0, #4] + b _081BD3DA + .align 2, 0 +_081BD35C: .4byte gUnknown_2024174 +_081BD360: .4byte gUnknown_2023D08 +_081BD364: + ldrb r1, [r3] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081BD3DA + strb r4, [r3, #4] + ldr r2, _081BD3E0 + ldrb r1, [r5] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081BD3E4 + adds r0, r0, r2 + bl sub_0805E5AC + movs r1, #0x40 + rsbs r1, r1, #0 + movs r0, #0x10 + bl sub_080A307C + ldr r2, _081BD3E8 + ldr r3, _081BD3EC + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r4, [r0, #0x30] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #5 + strh r1, [r0, #0x32] + ldrb r0, [r5] + adds r0, r0, r3 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _081BD3F0 + str r1, [r0] + ldr r1, _081BD3F4 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD3F8 + str r1, [r0] +_081BD3DA: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD3E0: .4byte gUnknown_2023D12 +_081BD3E4: .4byte gUnknown_2024190 +_081BD3E8: .4byte gUnknown_20205AC +_081BD3EC: .4byte gUnknown_2023E88 +_081BD3F0: .4byte sub_08039844 +_081BD3F4: .4byte gUnknown_3005AC0 +_081BD3F8: .4byte sub_081BB428 + thumb_func_end sub_081BD310 + + thumb_func_start sub_081BD3FC +sub_081BD3FC: @ 0x081BD3FC + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD3FC + + thumb_func_start sub_081BD408 +sub_081BD408: @ 0x081BD408 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD408 + + thumb_func_start sub_081BD414 +sub_081BD414: @ 0x081BD414 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD414 + + thumb_func_start sub_081BD420 +sub_081BD420: @ 0x081BD420 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD420 + + thumb_func_start sub_081BD42C +sub_081BD42C: @ 0x081BD42C + push {r4, r5, r6, lr} + ldr r6, _081BD510 + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BD43E + b _081BD552 +_081BD43E: + ldr r0, _081BD514 + mov ip, r0 + ldrb r2, [r6] + lsls r2, r2, #9 + adds r0, #1 + adds r0, r2, r0 + ldrb r0, [r0] + mov r1, ip + adds r1, #2 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + ldr r5, _081BD518 + mov r1, ip + adds r1, #3 + adds r2, r2, r1 + ldrb r1, [r2] + strb r1, [r5] + ldr r4, _081BD51C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #4 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #5 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r4, _081BD520 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #6 + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #7 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r3, r1 + mov r1, ip + adds r1, #8 + adds r1, r2, r1 + ldrb r1, [r1] + lsls r1, r1, #0x10 + orrs r3, r1 + mov r1, ip + adds r1, #9 + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #0x18 + orrs r3, r1 + str r3, [r4] + ldr r3, _081BD524 + ldrb r1, [r6] + lsls r1, r1, #9 + mov r2, ip + adds r2, #0xa + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r3] + ldr r4, _081BD528 + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0xc + adds r1, r2, r1 + ldrb r3, [r1] + mov r1, ip + adds r1, #0xd + adds r2, r2, r1 + ldrb r1, [r2] + lsls r1, r1, #8 + orrs r3, r1 + strh r3, [r4] + ldr r3, _081BD52C + ldrb r2, [r6] + lsls r2, r2, #9 + mov r1, ip + adds r1, #0x10 + adds r2, r2, r1 + str r2, [r3] + ldr r3, _081BD530 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r2] + str r2, [r1] + ldrb r1, [r5] + bl sub_0805D7A8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _081BD534 + bl sub_081BB828 + b _081BD552 + .align 2, 0 +_081BD510: .4byte gUnknown_2023D08 +_081BD514: .4byte gUnknown_2022D08 +_081BD518: .4byte gUnknown_20380D2 +_081BD51C: .4byte gUnknown_20380A8 +_081BD520: .4byte gUnknown_20380A4 +_081BD524: .4byte gUnknown_20380BA +_081BD528: .4byte gUnknown_20380BC +_081BD52C: .4byte gUnknown_20380A0 +_081BD530: .4byte gUnknown_2024160 +_081BD534: + ldr r0, _081BD558 + ldr r0, [r0] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #4] + ldr r1, _081BD55C + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD560 + str r1, [r0] +_081BD552: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD558: .4byte gUnknown_2024174 +_081BD55C: .4byte gUnknown_3005AC0 +_081BD560: .4byte sub_081BD564 + thumb_func_end sub_081BD42C + + thumb_func_start sub_081BD564 +sub_081BD564: @ 0x081BD564 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r2, _081BD5B0 + ldr r6, _081BD5B4 + ldrb r3, [r6] + lsls r1, r3, #9 + adds r0, r2, #1 + mov sl, r0 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, r2, #2 + mov sb, r5 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r4, r0 + adds r2, #0xb + adds r1, r1, r2 + ldrb r1, [r1] + mov r8, r1 + ldr r7, _081BD5B8 + ldr r5, [r7] + ldr r1, [r5, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + cmp r2, #1 + beq _081BD5FC + cmp r2, #1 + bgt _081BD5BC + cmp r2, #0 + beq _081BD5C6 + b _081BD6D8 + .align 2, 0 +_081BD5B0: .4byte gUnknown_2022D08 +_081BD5B4: .4byte gUnknown_2023D08 +_081BD5B8: .4byte gUnknown_2024174 +_081BD5BC: + cmp r2, #2 + beq _081BD626 + cmp r2, #3 + beq _081BD69C + b _081BD6D8 +_081BD5C6: + ldr r1, [r5] + lsls r0, r3, #2 + adds r1, r0, r1 + ldrb r2, [r1] + movs r0, #0xc + ands r0, r2 + cmp r0, #4 + bne _081BD5E8 + movs r0, #8 + orrs r0, r2 + strb r0, [r1] + ldrb r2, [r6] + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #5 + bl sub_0805D6E0 +_081BD5E8: + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strb r1, [r0, #4] + b _081BD6D8 +_081BD5FC: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _081BD6D8 + movs r0, #0 + bl sub_0805E7B8 + adds r0, r4, #0 + bl sub_080A32D8 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #2 + strb r1, [r0, #4] + b _081BD6D8 +_081BD626: + ldr r0, _081BD68C + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _081BD690 + ldrb r0, [r0] + cmp r0, #0 + bne _081BD6D8 + movs r0, #1 + bl sub_0805E7B8 + ldr r0, [r7] + ldrb r2, [r6] + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081BD674 + mov r0, r8 + cmp r0, #1 + bhi _081BD674 + adds r0, r2, #0 + adds r1, r2, #0 + movs r3, #6 + bl sub_0805D6E0 + ldr r0, [r7] + ldrb r1, [r6] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_081BD674: + ldr r0, _081BD694 + ldr r2, [r0] + ldr r0, _081BD698 + ldrb r1, [r0] + ldr r2, [r2, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strb r1, [r0, #4] + b _081BD6D8 + .align 2, 0 +_081BD68C: .4byte gUnknown_2038098 +_081BD690: .4byte gUnknown_203809D +_081BD694: .4byte gUnknown_2024174 +_081BD698: .4byte gUnknown_2023D08 +_081BD69C: + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081BD6D8 + bl sub_0805DFB0 + ldrb r0, [r6] + lsls r2, r0, #9 + mov r3, sl + adds r1, r2, r3 + ldrb r1, [r1] + add r2, sb + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + bl sub_0805E568 + ldr r0, [r7] + ldrb r1, [r6] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r4, [r0, #4] + bl sub_081BB828 +_081BD6D8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD564 + + thumb_func_start sub_081BD6E8 +sub_081BD6E8: @ 0x081BD6E8 + push {r4, lr} + ldr r0, _081BD720 + movs r1, #0 + strh r1, [r0] + ldr r0, _081BD724 + strh r1, [r0] + ldr r4, _081BD728 + ldrb r0, [r4] + lsls r0, r0, #9 + ldr r1, _081BD72C + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0814E184 + ldr r0, _081BD730 + movs r1, #0 + bl sub_0814FA04 + ldr r1, _081BD734 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD738 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BD720: .4byte gUnknown_2022AC8 +_081BD724: .4byte gUnknown_2022ACA +_081BD728: .4byte gUnknown_2023D08 +_081BD72C: .4byte gUnknown_2022D0A +_081BD730: .4byte gUnknown_2022AE0 +_081BD734: .4byte gUnknown_3005AC0 +_081BD738: .4byte sub_081BB534 + thumb_func_end sub_081BD6E8 + + thumb_func_start sub_081BD73C +sub_081BD73C: @ 0x081BD73C + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD73C + + thumb_func_start sub_081BD748 +sub_081BD748: @ 0x081BD748 + push {lr} + bl sub_08063464 + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD748 + + thumb_func_start sub_081BD758 +sub_081BD758: @ 0x081BD758 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD758 + + thumb_func_start sub_081BD764 +sub_081BD764: @ 0x081BD764 + push {r4, r5, r6, lr} + ldr r6, _081BD7F4 + ldrb r4, [r6] + lsls r4, r4, #9 + ldr r0, _081BD7F8 + adds r4, r4, r0 + movs r0, #0xf + bl sub_081309A4 + bl sub_08130BEC + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081BD7FC + lsls r0, r5, #1 + adds r4, r4, r0 + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #6] + movs r0, #0x12 + ands r0, r1 + cmp r0, #0 + beq _081BD79E + ldr r1, _081BD800 + ldrb r0, [r6] + strb r0, [r1] +_081BD79E: + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081BD7D8 + movs r0, #1 + bl sub_080A631C + ldr r4, _081BD800 + strb r0, [r4] + ldr r0, _081BD804 + ldrb r1, [r0] + ldr r2, _081BD808 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _081BD7D8 + movs r0, #3 + bl sub_080A631C + strb r0, [r4] +_081BD7D8: + ldr r0, _081BD800 + ldrb r2, [r0] + lsls r2, r2, #8 + orrs r2, r5 + movs r0, #1 + movs r1, #0xa + bl sub_08033FB0 + bl sub_081BB828 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD7F4: .4byte gUnknown_2023D08 +_081BD7F8: .4byte gUnknown_2022D0C +_081BD7FC: .4byte gUnknown_82ED220 +_081BD800: .4byte gUnknown_2023EB0 +_081BD804: .4byte gUnknown_2023EB4 +_081BD808: .4byte gUnknown_82FACB4 + thumb_func_end sub_081BD764 + + thumb_func_start sub_081BD80C +sub_081BD80C: @ 0x081BD80C + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD80C + + thumb_func_start sub_081BD818 +sub_081BD818: @ 0x081BD818 + push {r4, r5, r6, lr} + bl sub_08063674 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bne _081BD86C + movs r0, #0 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #2 + bl sub_080A631C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #3 + b _081BD840 +_081BD83E: + adds r4, #1 +_081BD840: + cmp r4, #5 + bgt _081BD86C + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081BD890 + adds r0, r0, r1 + movs r1, #0x39 + bl sub_0806A058 + cmp r0, #0 + beq _081BD83E + ldr r1, _081BD894 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _081BD83E + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq _081BD83E +_081BD86C: + ldr r0, _081BD898 + ldrb r0, [r0] + ldr r1, _081BD89C + ldr r1, [r1] + adds r0, r0, r1 + adds r0, #0x5c + strb r4, [r0] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + movs r0, #1 + movs r2, #0 + bl sub_08033FDC + bl sub_081BB828 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BD890: .4byte gUnknown_2024190 +_081BD894: .4byte gUnknown_2023D12 +_081BD898: .4byte gUnknown_2023D08 +_081BD89C: .4byte gUnknown_2024140 + thumb_func_end sub_081BD818 + + thumb_func_start sub_081BD8A0 +sub_081BD8A0: @ 0x081BD8A0 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BD8A0 + + thumb_func_start sub_081BD8AC +sub_081BD8AC: @ 0x081BD8AC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0 + bl sub_0805DDD4 + ldr r3, _081BD924 + ldr r0, _081BD928 + mov sb, r0 + ldrb r4, [r0] + lsls r2, r4, #9 + adds r0, r3, #2 + adds r0, r2, r0 + ldrb r1, [r0] + adds r3, #3 + adds r2, r2, r3 + ldrb r0, [r2] + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 + ldr r0, _081BD92C + cmp r7, r0 + beq _081BD93C + ldr r6, _081BD930 + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + movs r5, #0x64 + muls r0, r5, r0 + ldr r4, _081BD934 + adds r0, r0, r4 + movs r1, #0x3a + bl sub_0806A058 + mov r8, r0 + mov r1, sb + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + ldrh r0, [r0] + muls r0, r5, r0 + adds r0, r0, r4 + movs r1, #0x39 + bl sub_0806A058 + adds r3, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _081BD938 + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + mov r2, r8 + bl sub_0807235C + b _081BD966 + .align 2, 0 +_081BD924: .4byte gUnknown_2022D08 +_081BD928: .4byte gUnknown_2023D08 +_081BD92C: .4byte 0x00007FFF +_081BD930: .4byte gUnknown_2023D12 +_081BD934: .4byte gUnknown_2024190 +_081BD938: .4byte gUnknown_3005AD0 +_081BD93C: + ldr r1, _081BD984 + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081BD988 + adds r0, r0, r1 + movs r1, #0x3a + bl sub_0806A058 + adds r2, r0, #0 + mov r1, sb + ldrb r0, [r1] + ldr r1, _081BD98C + adds r1, r0, r1 + ldrb r1, [r1] + str r7, [sp] + movs r3, #0 + bl sub_0807235C +_081BD966: + ldr r1, _081BD990 + ldr r0, _081BD994 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BD998 + str r1, [r0] + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BD984: .4byte gUnknown_2023D12 +_081BD988: .4byte gUnknown_2024190 +_081BD98C: .4byte gUnknown_3005AD0 +_081BD990: .4byte gUnknown_3005AC0 +_081BD994: .4byte gUnknown_2023D08 +_081BD998: .4byte sub_081BAEB0 + thumb_func_end sub_081BD8AC + + thumb_func_start sub_081BD99C +sub_081BD99C: @ 0x081BD99C + push {r4, r5, r6, r7, lr} + ldr r5, _081BD9C8 + ldr r6, _081BD9CC + ldrb r0, [r6] + lsls r0, r0, #9 + adds r1, r5, #1 + adds r0, r0, r1 + ldrb r7, [r0] + movs r0, #0x64 + adds r1, r7, #0 + muls r1, r0, r1 + ldr r0, _081BD9D0 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + cmp r0, #0x63 + bls _081BD9D4 + bl sub_081BB828 + b _081BDA20 + .align 2, 0 +_081BD9C8: .4byte gUnknown_2022D08 +_081BD9CC: .4byte gUnknown_2023D08 +_081BD9D0: .4byte gUnknown_2024190 +_081BD9D4: + movs r0, #1 + bl sub_0805DDD4 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + ldrb r1, [r6] + lsls r1, r1, #9 + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r0, r5, #3 + adds r1, r1, r0 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + ldr r0, _081BDA28 + movs r1, #0xa + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081BDA2C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r7, [r1, #8] + strh r4, [r1, #0xa] + ldrb r0, [r6] + strh r0, [r1, #0xc] + ldr r1, _081BDA30 + ldrb r0, [r6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BDA34 + str r1, [r0] +_081BDA20: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BDA28: .4byte sub_081BAF38 +_081BDA2C: .4byte gUnknown_3005B60 +_081BDA30: .4byte gUnknown_3005AC0 +_081BDA34: .4byte sub_08057068 + thumb_func_end sub_081BD99C + + thumb_func_start sub_081BDA38 +sub_081BDA38: @ 0x081BDA38 + push {r4, lr} + ldr r4, _081BDA94 + ldrb r0, [r4] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BDA8C + ldr r0, _081BDA98 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + ldr r2, _081BDA9C + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + ldr r2, _081BDAA0 + adds r1, r1, r2 + movs r2, #9 + bl sub_080743F0 + ldrb r2, [r4] + ldr r0, _081BDAA4 + ldr r0, [r0] + ldr r0, [r0, #4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, _081BDAA8 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BDAAC + str r1, [r0] +_081BDA8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BDA94: .4byte gUnknown_2023D08 +_081BDA98: .4byte gUnknown_3005AD0 +_081BDA9C: .4byte gUnknown_2023D12 +_081BDAA0: .4byte gUnknown_2024190 +_081BDAA4: .4byte gUnknown_2024174 +_081BDAA8: .4byte gUnknown_3005AC0 +_081BDAAC: .4byte sub_081BB8A0 + thumb_func_end sub_081BDA38 + + thumb_func_start sub_081BDAB0 +sub_081BDAB0: @ 0x081BDAB0 + push {r4, r5, lr} + ldr r5, _081BDB08 + ldrb r0, [r5] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BDB00 + ldr r4, _081BDB0C + ldrb r3, [r5] + lsls r3, r3, #9 + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + adds r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #8 + orrs r1, r2 + adds r2, r4, #4 + adds r2, r3, r2 + ldrb r2, [r2] + lsls r2, r2, #0x10 + orrs r1, r2 + adds r4, #5 + adds r3, r3, r4 + ldrb r2, [r3] + lsls r2, r2, #0x18 + orrs r1, r2 + bl sub_0805D424 + ldr r1, _081BDB10 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BDB14 + str r1, [r0] +_081BDB00: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BDB08: .4byte gUnknown_2023D08 +_081BDB0C: .4byte gUnknown_2022D08 +_081BDB10: .4byte gUnknown_3005AC0 +_081BDB14: .4byte sub_081BB8A0 + thumb_func_end sub_081BDAB0 + + thumb_func_start sub_081BDB18 +sub_081BDB18: @ 0x081BDB18 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB18 + + thumb_func_start sub_081BDB24 +sub_081BDB24: @ 0x081BDB24 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB24 + + thumb_func_start sub_081BDB30 +sub_081BDB30: @ 0x081BDB30 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB30 + + thumb_func_start sub_081BDB3C +sub_081BDB3C: @ 0x081BDB3C + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB3C + + thumb_func_start sub_081BDB48 +sub_081BDB48: @ 0x081BDB48 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB48 + + thumb_func_start sub_081BDB54 +sub_081BDB54: @ 0x081BDB54 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB54 + + thumb_func_start sub_081BDB60 +sub_081BDB60: @ 0x081BDB60 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB60 + + thumb_func_start sub_081BDB6C +sub_081BDB6C: @ 0x081BDB6C + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB6C + + thumb_func_start sub_081BDB78 +sub_081BDB78: @ 0x081BDB78 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDB78 + + thumb_func_start sub_081BDB84 +sub_081BDB84: @ 0x081BDB84 + push {lr} + ldr r2, _081BDB9C + ldrb r1, [r2] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDB9C: .4byte gUnknown_20229C0 + thumb_func_end sub_081BDB84 + + thumb_func_start sub_081BDBA0 +sub_081BDBA0: @ 0x081BDBA0 + push {lr} + ldr r3, _081BDBCC + ldr r1, _081BDBD0 + ldr r0, _081BDBD4 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r3] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDBCC: .4byte gUnknown_20229C0 +_081BDBD0: .4byte gUnknown_2022D08 +_081BDBD4: .4byte gUnknown_2023D08 + thumb_func_end sub_081BDBA0 + + thumb_func_start sub_081BDBD8 +sub_081BDBD8: @ 0x081BDBD8 + push {lr} + ldr r2, _081BDBEC + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDBEC: .4byte gUnknown_20229C0 + thumb_func_end sub_081BDBD8 + + thumb_func_start sub_081BDBF0 +sub_081BDBF0: @ 0x081BDBF0 + push {lr} + ldr r3, _081BDC14 + ldr r1, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + ldrb r2, [r3] + movs r0, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDC14: .4byte gUnknown_20229C0 + thumb_func_end sub_081BDBF0 + + thumb_func_start sub_081BDC18 +sub_081BDC18: @ 0x081BDC18 + push {r4, lr} + ldr r3, _081BDC40 + ldr r2, _081BDC44 + ldr r4, _081BDC48 + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + bge _081BDC4C + bl sub_081BB828 + b _081BDC76 + .align 2, 0 +_081BDC40: .4byte gUnknown_20205AC +_081BDC44: .4byte gUnknown_2023E88 +_081BDC48: .4byte gUnknown_2023D08 +_081BDC4C: + ldr r1, _081BDC7C + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4] + adds r0, r0, r2 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #0 + strh r1, [r0, #0x30] + ldrb r0, [r4] + bl sub_080763FC + ldr r1, _081BDC80 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BDC84 + str r1, [r0] +_081BDC76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BDC7C: .4byte gUnknown_202415D +_081BDC80: .4byte gUnknown_3005AC0 +_081BDC84: .4byte sub_081BB54C + thumb_func_end sub_081BDC18 + + thumb_func_start sub_081BDC88 +sub_081BDC88: @ 0x081BDC88 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDC88 + + thumb_func_start sub_081BDC94 +sub_081BDC94: @ 0x081BDC94 + push {r4, lr} + ldr r4, _081BDCD0 + ldrb r0, [r4] + bl sub_080A62F8 + lsls r0, r0, #0x18 + movs r3, #0x3f + cmp r0, #0 + bne _081BDCA8 + movs r3, #0xc0 +_081BDCA8: + ldr r2, _081BDCD4 + ldrb r1, [r4] + lsls r1, r1, #9 + adds r0, r2, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + bl sub_080A307C + bl sub_081BB828 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BDCD0: .4byte gUnknown_2023D08 +_081BDCD4: .4byte gUnknown_2022D08 + thumb_func_end sub_081BDC94 + + thumb_func_start sub_081BDCD8 +sub_081BDCD8: @ 0x081BDCD8 + push {r4, r5, lr} + ldr r4, _081BDD0C + ldr r5, _081BDD10 + ldrb r0, [r5] + lsls r3, r0, #9 + adds r0, r4, #3 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _081BDD14 + bl sub_0805E67C + ldrb r1, [r5] + lsls r1, r1, #9 + adds r0, r4, #1 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r4, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A3040 + b _081BDD28 + .align 2, 0 +_081BDD0C: .4byte gUnknown_2022D08 +_081BDD10: .4byte gUnknown_2023D08 +_081BDD14: + adds r0, r4, #1 + adds r0, r3, r0 + ldrb r0, [r0] + adds r1, r4, #2 + adds r1, r3, r1 + ldrb r1, [r1] + lsls r1, r1, #8 + orrs r0, r1 + bl sub_080A29AC +_081BDD28: + bl sub_081BB828 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BDCD8 + + thumb_func_start sub_081BDD34 +sub_081BDD34: @ 0x081BDD34 + push {lr} + ldr r1, _081BDD68 + ldr r0, _081BDD6C + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081BDD70 + adds r0, r0, r1 + movs r1, #0xb + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x19 + rsbs r1, r1, #0 + movs r2, #5 + bl sub_080A2BAC + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDD68: .4byte gUnknown_2023D12 +_081BDD6C: .4byte gUnknown_2023D08 +_081BDD70: .4byte gUnknown_2024190 + thumb_func_end sub_081BDD34 + + thumb_func_start sub_081BDD74 +sub_081BDD74: @ 0x081BDD74 + push {lr} + ldr r1, _081BDD9C + ldr r0, _081BDDA0 + ldrb r0, [r0] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_08118A24 + ldr r2, _081BDDA4 + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BDD9C: .4byte gUnknown_2022D08 +_081BDDA0: .4byte gUnknown_2023D08 +_081BDDA4: .4byte gUnknown_20240A0 + thumb_func_end sub_081BDD74 + + thumb_func_start sub_081BDDA8 +sub_081BDDA8: @ 0x081BDDA8 + push {r4, r5, r6, lr} + ldr r6, _081BDE70 + ldr r5, _081BDE74 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081BDE78 + adds r0, r0, r4 + bl sub_080A6230 + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0x32 + strh r1, [r0, #0x2e] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081BDE7C + strh r1, [r0, #0x32] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrh r1, [r0, #0x22] + strh r1, [r0, #0x36] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081BDE80 + str r1, [r0] + ldrb r2, [r5] + adds r0, r2, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r2, [r0, #0x38] + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, _081BDE84 + bl sub_080A5B9C + ldrb r0, [r5] + adds r0, r0, r6 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #1 + bl sub_08007EC0 + ldr r0, _081BDE88 + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r2, _081BDE8C + ldrh r1, [r2] + ldr r0, _081BDE90 + cmp r1, r0 + bne _081BDE98 + ldr r0, _081BDE94 + ldr r0, [r0, #0x38] + lsls r4, r4, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC + b _081BDEB6 + .align 2, 0 +_081BDE70: .4byte gUnknown_2023E88 +_081BDE74: .4byte gUnknown_2023D08 +_081BDE78: .4byte gUnknown_20205AC +_081BDE7C: .4byte 0x0000FFD8 +_081BDE80: .4byte sub_080A67B4 +_081BDE84: .4byte sub_0805C81C +_081BDE88: .4byte 0x0000D6F9 +_081BDE8C: .4byte gUnknown_203886E +_081BDE90: .4byte 0x00000C03 +_081BDE94: .4byte gUnknown_82D961C +_081BDE98: + ldrh r0, [r2] + bl sub_081629A4 + lsls r0, r0, #0x18 + ldr r1, _081BDF38 + lsrs r0, r0, #0x15 + adds r0, r0, r1 + ldr r0, [r0] + lsls r4, r4, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r2, #0x20 + bl sub_080A11BC +_081BDEB6: + ldr r2, _081BDF3C + ldr r1, _081BDF40 + ldr r5, _081BDF44 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r2, [r1, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r4 + strb r0, [r1, #5] + ldr r0, _081BDF48 + movs r1, #5 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081BDF4C + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r4 + ldrb r0, [r5] + strh r0, [r1, #8] + ldr r3, _081BDF50 + ldr r0, [r3] + ldrb r2, [r5] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BDF1A + ldr r0, _081BDF54 + adds r0, r2, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r4 + ldr r1, _081BDF58 + str r1, [r0] +_081BDF1A: + ldr r0, [r3] + ldr r2, [r0, #8] + ldrb r0, [r2, #9] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #9] + ldr r1, _081BDF5C + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BDF60 + str r1, [r0] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BDF38: .4byte gUnknown_82D91CC +_081BDF3C: .4byte gUnknown_20205AC +_081BDF40: .4byte gUnknown_2023E88 +_081BDF44: .4byte gUnknown_2023D08 +_081BDF48: .4byte sub_081BDF64 +_081BDF4C: .4byte gUnknown_3005B60 +_081BDF50: .4byte gUnknown_2024174 +_081BDF54: .4byte gUnknown_2024158 +_081BDF58: .4byte sub_0807352C +_081BDF5C: .4byte gUnknown_3005AC0 +_081BDF60: .4byte sub_081BAA8C + thumb_func_end sub_081BDDA8 + + thumb_func_start sub_081BDF64 +sub_081BDF64: @ 0x081BDF64 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r1, _081BDF8C + lsls r0, r0, #2 + add r0, r8 + lsls r0, r0, #3 + adds r1, r0, r1 + ldrh r2, [r1, #0xa] + movs r3, #0xa + ldrsh r0, [r1, r3] + cmp r0, #0x17 + bgt _081BDF90 + adds r0, r2, #1 + strh r0, [r1, #0xa] + b _081BE04C + .align 2, 0 +_081BDF8C: .4byte gUnknown_3005B60 +_081BDF90: + ldr r7, _081BDFD0 + ldrb r0, [r7] + mov sb, r0 + ldrh r0, [r1, #8] + strb r0, [r7] + bl sub_080A63E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BDFB0 + ldr r0, _081BDFD4 + ldr r0, [r0] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081BDFE0 +_081BDFB0: + ldr r0, _081BDFD8 + ldrb r1, [r7] + lsls r2, r1, #9 + adds r0, #1 + adds r2, r2, r0 + ldr r0, _081BDFDC + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + strb r0, [r2] + ldrb r0, [r7] + movs r1, #0 + bl sub_081BCD80 + b _081BE034 + .align 2, 0 +_081BDFD0: .4byte gUnknown_2023D08 +_081BDFD4: .4byte gUnknown_2022C90 +_081BDFD8: .4byte gUnknown_2022D08 +_081BDFDC: .4byte gUnknown_2023D12 +_081BDFE0: + ldr r4, _081BE058 + ldrb r0, [r7] + lsls r1, r0, #9 + adds r4, #1 + adds r1, r1, r4 + ldr r5, _081BE05C + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r1, #0 + bl sub_081BCD80 + ldrb r0, [r7] + movs r6, #2 + eors r0, r6 + strb r0, [r7] + ldrb r0, [r7] + lsls r1, r0, #9 + adds r1, r1, r4 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r7] + lsls r0, r1, #1 + adds r0, r0, r5 + ldrh r2, [r0] + movs r0, #0x64 + muls r0, r2, r0 + ldr r2, _081BE060 + adds r0, r0, r2 + bl sub_0805D998 + ldrb r0, [r7] + movs r1, #0 + bl sub_081BCD80 + ldrb r0, [r7] + eors r0, r6 + strb r0, [r7] +_081BE034: + ldr r1, _081BE064 + ldr r2, _081BE068 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BE06C + str r1, [r0] + mov r3, sb + strb r3, [r2] + mov r0, r8 + bl sub_080A8964 +_081BE04C: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BE058: .4byte gUnknown_2022D08 +_081BE05C: .4byte gUnknown_2023D12 +_081BE060: .4byte gUnknown_2024190 +_081BE064: .4byte gUnknown_3005AC0 +_081BE068: .4byte gUnknown_2023D08 +_081BE06C: .4byte sub_081BACC8 + thumb_func_end sub_081BDF64 + + thumb_func_start sub_081BE070 +sub_081BE070: @ 0x081BE070 + push {r4, r5, r6, lr} + ldr r1, _081BE098 + ldr r0, _081BE09C + ldrb r2, [r0] + lsls r0, r2, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081BE0A0 + adds r0, r2, #0 + bl sub_080A62F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BE0A0 + bl sub_081BB828 + b _081BE114 + .align 2, 0 +_081BE098: .4byte gUnknown_2022D08 +_081BE09C: .4byte gUnknown_2023D08 +_081BE0A0: + ldr r6, _081BE11C + ldr r0, [r6] + ldr r5, _081BE120 + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrb r0, [r5] + lsls r3, r0, #9 + ldr r4, _081BE124 + adds r1, r3, r4 + subs r2, r4, #3 + adds r2, r3, r2 + ldrb r2, [r2] + subs r4, #2 + adds r3, r3, r4 + ldrb r3, [r3] + bl sub_08072ED8 + ldr r2, _081BE128 + ldrb r1, [r5] + adds r1, r1, r2 + movs r3, #0 + strb r0, [r1] + ldr r0, [r6] + ldrb r1, [r5] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strb r3, [r0, #5] + ldrb r2, [r5] + lsls r0, r2, #9 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _081BE108 + ldr r0, [r6] + ldr r1, [r0, #4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x5d + strb r1, [r0, #5] +_081BE108: + ldr r0, _081BE12C + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _081BE130 + str r0, [r1] +_081BE114: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BE11C: .4byte gUnknown_2024174 +_081BE120: .4byte gUnknown_2023D08 +_081BE124: .4byte gUnknown_2022D0C +_081BE128: .4byte gUnknown_2024158 +_081BE12C: .4byte gUnknown_3005AC0 +_081BE130: .4byte sub_081BE134 + thumb_func_end sub_081BE070 + + thumb_func_start sub_081BE134 +sub_081BE134: @ 0x081BE134 + push {r4, lr} + ldr r4, _081BE174 + ldr r0, [r4] + ldr r3, _081BE178 + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #5] + adds r2, r1, #1 + strb r2, [r0, #5] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x5c + bls _081BE16C + ldr r0, [r4] + ldrb r1, [r3] + ldr r2, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0, #5] + bl sub_081BB828 +_081BE16C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE174: .4byte gUnknown_2024174 +_081BE178: .4byte gUnknown_2023D08 + thumb_func_end sub_081BE134 + + thumb_func_start sub_081BE17C +sub_081BE17C: @ 0x081BE17C + push {lr} + ldr r0, _081BE1B8 + ldr r1, [r0] + ldr r0, _081BE1BC + ldrb r3, [r0] + ldr r1, [r1, #4] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BE1AE + ldr r2, _081BE1C0 + ldr r0, _081BE1C4 + adds r0, r3, r0 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _081BE1C8 + str r1, [r0] +_081BE1AE: + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 +_081BE1B8: .4byte gUnknown_2024174 +_081BE1BC: .4byte gUnknown_2023D08 +_081BE1C0: .4byte gUnknown_3005B60 +_081BE1C4: .4byte gUnknown_2024158 +_081BE1C8: .4byte sub_0807352C + thumb_func_end sub_081BE17C + + thumb_func_start sub_081BE1CC +sub_081BE1CC: @ 0x081BE1CC + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BE1CC + + thumb_func_start sub_081BE1D8 +sub_081BE1D8: @ 0x081BE1D8 + push {r4, lr} + ldr r4, _081BE228 + ldrb r0, [r4] + bl sub_080A6358 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BE21E + ldr r3, _081BE22C + ldr r0, _081BE230 + ldrb r1, [r4] + adds r0, r1, r0 + ldrb r0, [r0] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r0, _081BE234 + lsls r1, r1, #9 + adds r0, #1 + adds r1, r1, r0 + adds r2, #0x3e + movs r0, #1 + ldrb r1, [r1] + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + bl sub_0805E024 +_081BE21E: + bl sub_081BB828 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE228: .4byte gUnknown_2023D08 +_081BE22C: .4byte gUnknown_20205AC +_081BE230: .4byte gUnknown_2023E88 +_081BE234: .4byte gUnknown_2022D08 + thumb_func_end sub_081BE1D8 + + thumb_func_start sub_081BE238 +sub_081BE238: @ 0x081BE238 + push {r4, r5, r6, lr} + sub sp, #4 + ldr r6, _081BE27C + ldrb r0, [r6] + bl sub_0805D7AC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BE290 + ldr r5, _081BE280 + ldrb r2, [r6] + lsls r1, r2, #9 + adds r0, r5, #1 + adds r0, r1, r0 + ldrb r3, [r0] + adds r0, r5, #2 + adds r0, r1, r0 + ldrb r4, [r0] + adds r5, #3 + adds r1, r1, r5 + ldrb r0, [r1] + lsls r0, r0, #8 + orrs r4, r0 + str r4, [sp] + adds r0, r2, #0 + adds r1, r2, #0 + bl sub_0805D524 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BE284 + bl sub_081BB828 + b _081BE290 + .align 2, 0 +_081BE27C: .4byte gUnknown_2023D08 +_081BE280: .4byte gUnknown_2022D08 +_081BE284: + ldr r0, _081BE298 + ldrb r1, [r6] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, _081BE29C + str r0, [r1] +_081BE290: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BE298: .4byte gUnknown_3005AC0 +_081BE29C: .4byte sub_081BB8D0 + thumb_func_end sub_081BE238 + + thumb_func_start sub_081BE2A0 +sub_081BE2A0: @ 0x081BE2A0 + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BE2A0 + + thumb_func_start sub_081BE2AC +sub_081BE2AC: @ 0x081BE2AC + push {lr} + bl sub_081BB828 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BE2AC + + thumb_func_start sub_081BE2B8 +sub_081BE2B8: @ 0x081BE2B8 + push {r4, lr} + ldr r2, _081BE2F0 + ldr r1, _081BE2F4 + ldr r4, _081BE2F8 + ldrb r0, [r4] + lsls r0, r0, #9 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + movs r0, #5 + bl sub_080A2818 + movs r0, #3 + bl sub_080A1C58 + bl sub_081BB828 + ldr r1, _081BE2FC + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, _081BE300 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE2F0: .4byte gUnknown_2023FDE +_081BE2F4: .4byte gUnknown_2022D08 +_081BE2F8: .4byte gUnknown_2023D08 +_081BE2FC: .4byte gUnknown_3005AC0 +_081BE300: .4byte sub_080583C0 + thumb_func_end sub_081BE2B8 + + thumb_func_start sub_081BE304 +sub_081BE304: @ 0x081BE304 + bx lr + .align 2, 0 + thumb_func_end sub_081BE304 + + thumb_func_start sub_081BE308 +sub_081BE308: @ 0x081BE308 + push {lr} + ldr r0, _081BE328 + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xd0 + lsls r0, r0, #5 + cmp r1, r0 + bne _081BE32C + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081BE32E + .align 2, 0 +_081BE328: .4byte gUnknown_3005AEC +_081BE32C: + movs r0, #0 +_081BE32E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BE308 + + thumb_func_start sub_081BE334 +sub_081BE334: @ 0x081BE334 + push {lr} + ldr r0, _081BE344 + ldr r0, [r0] + adds r0, #4 + bl sub_08151E2C + pop {r0} + bx r0 + .align 2, 0 +_081BE344: .4byte gUnknown_203CBE4 + thumb_func_end sub_081BE334 + + thumb_func_start sub_081BE348 +sub_081BE348: @ 0x081BE348 + ldr r1, _081BE350 + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_081BE350: .4byte gUnknown_203CBE4 + thumb_func_end sub_081BE348 + + thumb_func_start sub_081BE354 +sub_081BE354: @ 0x081BE354 + push {r4, lr} + ldr r4, _081BE364 + ldr r0, [r4] + cmp r0, #0 + beq _081BE368 + movs r0, #0 + str r0, [r4] + b _081BE3B4 + .align 2, 0 +_081BE364: .4byte gUnknown_203CBE4 +_081BE368: + ldr r0, _081BE3BC + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xd0 + lsls r0, r0, #5 + cmp r1, r0 + bne _081BE3B4 + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BE3B4 + movs r0, #0xc8 + bl sub_08000BDC + str r0, [r4] + adds r0, #4 + bl sub_08151B18 + ldr r0, [r4] + adds r0, #4 + ldr r1, _081BE3C0 + bl sub_08151B44 + ldr r0, [r4] + adds r0, #4 + movs r1, #1 + movs r2, #1 + bl sub_08151C84 + ldr r0, _081BE3C4 + movs r1, #0xff + bl sub_080A8878 + ldr r1, [r4] + strb r0, [r1] +_081BE3B4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE3BC: .4byte gUnknown_3005AEC +_081BE3C0: .4byte gUnknown_85E7FD4 +_081BE3C4: .4byte sub_081BE334 + thumb_func_end sub_081BE354 + + thumb_func_start sub_081BE3C8 +sub_081BE3C8: @ 0x081BE3C8 + push {r4, lr} + ldr r0, _081BE42C + ldr r0, [r0] + ldrh r1, [r0, #4] + movs r0, #0xd0 + lsls r0, r0, #5 + cmp r1, r0 + bne _081BE424 + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BE424 + ldr r4, _081BE430 + ldr r0, [r4] + cmp r0, #0 + beq _081BE424 + ldr r0, _081BE434 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BE402 + ldr r0, [r4] + ldrb r0, [r0] + bl sub_080A8964 +_081BE402: + ldr r0, [r4] + adds r0, #4 + movs r1, #1 + movs r2, #1 + bl sub_08151D04 + ldr r0, [r4] + adds r0, #4 + movs r1, #1 + movs r2, #1 + bl sub_08151C2C + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_081BE424: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE42C: .4byte gUnknown_3005AEC +_081BE430: .4byte gUnknown_203CBE4 +_081BE434: .4byte sub_081BE334 + thumb_func_end sub_081BE3C8 + + thumb_func_start sub_081BE438 +sub_081BE438: @ 0x081BE438 + push {r4, lr} + ldr r0, _081BE450 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081BE454 + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D040 + b _081BE48A + .align 2, 0 +_081BE450: .4byte 0x000040CB +_081BE454: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + ands r4, r0 + movs r0, #0x9d + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BE470 + movs r4, #1 +_081BE470: + cmp r4, #0 + beq _081BE482 + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D018 + bl sub_081BE354 + b _081BE48A +_081BE482: + movs r0, #0xa7 + lsls r0, r0, #1 + bl sub_0809D040 +_081BE48A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081BE438 + + thumb_func_start sub_081BE490 +sub_081BE490: @ 0x081BE490 + push {lr} + ldr r0, _081BE4A0 + movs r1, #8 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081BE4A0: .4byte sub_081BE4A4 + thumb_func_end sub_081BE490 + + thumb_func_start sub_081BE4A4 +sub_081BE4A4: @ 0x081BE4A4 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081BE528 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #0x2d + mov r3, sp + bl sub_0808CEB8 + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, #3 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r4, _081BE52C + adds r2, r2, r4 + ldr r3, _081BE530 + ldrb r1, [r2, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x26] + adds r1, #4 + strh r1, [r0, #0x26] + ldr r0, _081BE534 + ldrb r0, [r0, #5] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + ldrb r2, [r2, #4] + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r4, #0x22 + ldrsh r2, [r0, r4] + movs r4, #0x26 + ldrsh r0, [r0, r4] + adds r2, r2, r0 + ldrb r1, [r1, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r3, #0x22 + ldrsh r1, [r0, r3] + movs r4, #0x26 + ldrsh r0, [r0, r4] + adds r1, r1, r0 + cmp r2, r1 + blt _081BE51E + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_081BE51E: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BE528: .4byte gUnknown_3005AEC +_081BE52C: .4byte gUnknown_2036FF0 +_081BE530: .4byte gUnknown_20205AC +_081BE534: .4byte gUnknown_2037230 + thumb_func_end sub_081BE4A4 + + thumb_func_start sub_081BE538 +sub_081BE538: @ 0x081BE538 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _081BE594 + movs r1, #9 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081BE598 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + movs r0, #0 + strh r4, [r1, #8] + strh r0, [r1, #0xa] + strh r5, [r1, #0xc] + strh r6, [r1, #0xe] + mov r0, r8 + strh r0, [r1, #0x10] + movs r0, #0 + bl sub_08089C24 + movs r0, #0xd6 + bl sub_080A306C + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BE594: .4byte sub_081BE59C +_081BE598: .4byte gUnknown_3005B60 + thumb_func_end sub_081BE538 + + thumb_func_start sub_081BE59C +sub_081BE59C: @ 0x081BE59C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081BE600 + adds r4, r0, r1 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r1, #2 + ldrsh r0, [r4, r1] + movs r2, #6 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, #0 + bne _081BE5F8 + strh r0, [r4, #2] + ldrh r0, [r4, #4] + subs r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4] + rsbs r0, r0, #0 + strh r0, [r4] + ldrh r0, [r4, #8] + rsbs r0, r0, #0 + strh r0, [r4, #8] + movs r1, #0 + ldrsh r0, [r4, r1] + movs r2, #8 + ldrsh r1, [r4, r2] + bl sub_08089C30 + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081BE5F8 + bl sub_081BE604 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_08089C48 +_081BE5F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BE600: .4byte gUnknown_3005B68 + thumb_func_end sub_081BE59C + + thumb_func_start sub_081BE604 +sub_081BE604: @ 0x081BE604 + push {lr} + ldr r0, _081BE628 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _081BE624 + ldr r0, _081BE62C + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081BE624: + pop {r0} + bx r0 + .align 2, 0 +_081BE628: .4byte sub_081BE65C +_081BE62C: .4byte gUnknown_3005B60 + thumb_func_end sub_081BE604 + + thumb_func_start sub_081BE630 +sub_081BE630: @ 0x081BE630 + push {lr} + ldr r0, _081BE654 + bl sub_08008254 + bl sub_081BE6BC + ldr r0, _081BE658 + movs r1, #8 + bl sub_080A8878 + movs r0, #2 + movs r1, #1 + movs r2, #0x10 + movs r3, #3 + bl sub_081BE538 + pop {r0} + bx r0 + .align 2, 0 +_081BE654: .4byte gUnknown_85E7F50 +_081BE658: .4byte sub_081BE65C + thumb_func_end sub_081BE630 + + thumb_func_start sub_081BE65C +sub_081BE65C: @ 0x081BE65C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r3, r1, #3 + ldr r4, _081BE694 + adds r2, r3, r4 + ldrh r0, [r2, #2] + adds r0, #1 + strh r0, [r2, #2] + lsls r0, r0, #0x10 + movs r1, #0xfa + lsls r1, r1, #0x12 + cmp r0, r1 + beq _081BE682 + ldrh r0, [r2] + cmp r0, #0x11 + bne _081BE68C +_081BE682: + adds r0, r4, #0 + subs r0, #8 + adds r0, r3, r0 + ldr r1, _081BE698 + str r1, [r0] +_081BE68C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE694: .4byte gUnknown_3005B68 +_081BE698: .4byte sub_081BE69C + thumb_func_end sub_081BE65C + + thumb_func_start sub_081BE69C +sub_081BE69C: @ 0x081BE69C + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xfa + lsls r0, r0, #4 + bl sub_08008280 + adds r0, r4, #0 + bl sub_080A8964 + bl sub_080988C4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081BE69C + + thumb_func_start sub_081BE6BC +sub_081BE6BC: @ 0x081BE6BC + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r5, _081BE764 + adds r7, r5, #2 + ldr r6, _081BE768 +_081BE6C6: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #1 + adds r1, r0, r5 + ldrh r1, [r1] + adds r1, #0x78 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r7 + movs r3, #0 + ldrsh r2, [r0, r3] + ldr r0, _081BE76C + movs r3, #8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r2, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + movs r1, #0xf + ands r2, r1 + strb r2, [r0, #5] + strh r4, [r0, #0x2e] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081BE6C6 + movs r4, #0 + ldr r5, _081BE764 + adds r7, r5, #2 + ldr r6, _081BE768 +_081BE714: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #1 + adds r1, r0, r5 + ldrh r1, [r1] + adds r1, #0x73 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + adds r0, r0, r7 + ldrh r2, [r0] + subs r2, #3 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldr r0, _081BE770 + movs r3, #8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r2, [r0, #5] + movs r3, #0xd + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + movs r1, #0xf + ands r2, r1 + strb r2, [r0, #5] + strh r4, [r0, #0x2e] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081BE714 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BE764: .4byte gUnknown_85E7F20 +_081BE768: .4byte gUnknown_20205AC +_081BE76C: .4byte gUnknown_85E801C +_081BE770: .4byte gUnknown_85E7FF0 + thumb_func_end sub_081BE6BC + + thumb_func_start sub_081BE774 +sub_081BE774: @ 0x081BE774 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x30] + adds r0, #2 + strh r0, [r4, #0x30] + movs r1, #0x30 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x26] + movs r0, #0x22 + ldrsh r3, [r4, r0] + movs r1, #0x26 + ldrsh r0, [r4, r1] + adds r3, r3, r0 + ldr r2, _081BE7BC + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r2, #4 + adds r0, r0, r2 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r3, r0 + ble _081BE7B6 + adds r0, r4, #0 + bl sub_08006E00 + bl sub_081BE604 +_081BE7B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE7BC: .4byte gUnknown_85E7F20 + thumb_func_end sub_081BE774 + + thumb_func_start sub_081BE7C0 +sub_081BE7C0: @ 0x081BE7C0 + push {r4, r5, lr} + movs r4, #0 + ldr r5, _081BE7EC +_081BE7C6: + lsls r2, r4, #2 + adds r2, r2, r5 + ldrb r0, [r2] + adds r0, #7 + ldrb r1, [r2, #1] + adds r1, #7 + ldrh r2, [r2, #2] + bl sub_08087C54 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x11 + bls _081BE7C6 + bl sub_08089598 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BE7EC: .4byte gUnknown_85E7F60 + thumb_func_end sub_081BE7C0 + + thumb_func_start sub_081BE7F0 +sub_081BE7F0: @ 0x081BE7F0 + push {lr} + ldr r0, _081BE800 + movs r1, #9 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081BE800: .4byte sub_081BE9EC + thumb_func_end sub_081BE7F0 + + thumb_func_start sub_081BE804 +sub_081BE804: @ 0x081BE804 + push {lr} + ldr r0, _081BE814 + movs r1, #9 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081BE814: .4byte sub_081BE890 + thumb_func_end sub_081BE804 + + thumb_func_start sub_081BE818 +sub_081BE818: @ 0x081BE818 + push {lr} + ldr r0, _081BE828 + movs r1, #9 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081BE828: .4byte sub_081BECC4 + thumb_func_end sub_081BE818 + + thumb_func_start sub_081BE82C +sub_081BE82C: @ 0x081BE82C + push {r4, lr} + ldr r4, _081BE84C + ldr r0, [r4] + ldrh r1, [r0] + movs r0, #0x10 + bl sub_08001144 + ldr r0, [r4] + ldrh r1, [r0, #2] + movs r0, #0x12 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BE84C: .4byte gUnknown_203CBE0 + thumb_func_end sub_081BE82C + + thumb_func_start sub_081BE850 +sub_081BE850: @ 0x081BE850 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081BE880 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r2, r1, r2 + ldrh r1, [r2, #8] + movs r3, #8 + ldrsh r0, [r2, r3] + cmp r0, #0 + bne _081BE888 + ldr r0, _081BE884 + ldr r1, [r0] + ldrh r0, [r1] + rsbs r0, r0, #0 + strh r0, [r1] + movs r0, #2 + strh r0, [r2, #8] + bl sub_081BE82C + b _081BE88C + .align 2, 0 +_081BE880: .4byte gUnknown_3005B60 +_081BE884: .4byte gUnknown_203CBE0 +_081BE888: + subs r0, r1, #1 + strh r0, [r2, #8] +_081BE88C: + pop {r0} + bx r0 + thumb_func_end sub_081BE850 + + thumb_func_start sub_081BE890 +sub_081BE890: @ 0x081BE890 + push {r4, r5, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r1, _081BE8B8 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #6 + bls _081BE8AC + b _081BE9DC +_081BE8AC: + lsls r0, r0, #2 + ldr r1, _081BE8BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BE8B8: .4byte gUnknown_3005B60 +_081BE8BC: .4byte _081BE8C0 +_081BE8C0: @ jump table + .4byte _081BE8DC @ case 0 + .4byte _081BE8EC @ case 1 + .4byte _081BE924 @ case 2 + .4byte _081BE94C @ case 3 + .4byte _081BE994 @ case 4 + .4byte _081BE99C @ case 5 + .4byte _081BE9B8 @ case 6 +_081BE8DC: + bl sub_080034D4 + movs r0, #0 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + b _081BE9A0 +_081BE8EC: + ldr r4, _081BE91C + movs r0, #0x92 + lsls r0, r0, #4 + bl sub_08000BDC + str r0, [r4] + ldr r4, _081BE920 + movs r0, #0x80 + lsls r0, r0, #4 + bl sub_08000BDC + str r0, [r4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + b _081BE974 + .align 2, 0 +_081BE91C: .4byte gUnknown_203CBD0 +_081BE920: .4byte gUnknown_203CBD4 +_081BE924: + ldr r0, _081BE944 + ldr r4, _081BE948 + ldr r1, [r4] + movs r2, #0x92 + lsls r2, r2, #3 + bl CpuSet + ldr r1, [r4] + movs r2, #0x92 + lsls r2, r2, #4 + movs r0, #0 + movs r3, #0 + bl sub_0800195C + b _081BE974 + .align 2, 0 +_081BE944: .4byte gUnknown_85E7430 +_081BE948: .4byte gUnknown_203CBD0 +_081BE94C: + ldr r0, _081BE988 + ldr r1, [r0] + movs r0, #0 + bl sub_0800212C + ldr r1, _081BE98C + movs r0, #6 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #0 + movs r2, #0xc + movs r3, #0x1d + bl sub_080023B4 + movs r0, #0 + bl sub_08002248 +_081BE974: + ldr r1, _081BE990 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #8] + adds r1, #1 + strh r1, [r0, #8] + b _081BE9DC + .align 2, 0 +_081BE988: .4byte gUnknown_203CBD4 +_081BE98C: .4byte gUnknown_85E7D50 +_081BE990: .4byte gUnknown_3005B60 +_081BE994: + movs r0, #0 + bl sub_08001B48 + b _081BE9A0 +_081BE99C: + bl sub_081BE7C0 +_081BE9A0: + ldr r0, _081BE9B4 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + b _081BE9DC + .align 2, 0 +_081BE9B4: .4byte gUnknown_3005B60 +_081BE9B8: + ldr r4, _081BE9E4 + movs r0, #4 + bl sub_08000BC8 + str r0, [r4] + movs r2, #0 + movs r1, #2 + strh r1, [r0] + strh r2, [r0, #2] + ldr r0, _081BE9E8 + movs r1, #0xa + bl sub_080A8878 + adds r0, r5, #0 + bl sub_080A8964 + bl sub_080988C4 +_081BE9DC: + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BE9E4: .4byte gUnknown_203CBE0 +_081BE9E8: .4byte sub_081BE850 + thumb_func_end sub_081BE890 + + thumb_func_start sub_081BE9EC +sub_081BE9EC: @ 0x081BE9EC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r1, _081BEA24 + lsls r0, r0, #2 + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r6, r1, #0 + cmp r0, #7 + bls _081BEA18 + b _081BEC9E +_081BEA18: + lsls r0, r0, #2 + ldr r1, _081BEA28 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BEA24: .4byte gUnknown_3005B60 +_081BEA28: .4byte _081BEA2C +_081BEA2C: @ jump table + .4byte _081BEA4C @ case 0 + .4byte _081BEC9E @ case 1 + .4byte _081BEA60 @ case 2 + .4byte _081BEC00 @ case 3 + .4byte _081BEC30 @ case 4 + .4byte _081BEC6C @ case 5 + .4byte _081BEC8C @ case 6 + .4byte _081BEC94 @ case 7 +_081BEA4C: + ldr r4, _081BEA5C + movs r0, #0xc0 + lsls r0, r0, #2 + bl sub_08000BDC + str r0, [r4] + b _081BEC9E + .align 2, 0 +_081BEA5C: .4byte gUnknown_203CBDC +_081BEA60: + mov r1, sl + lsls r0, r1, #2 + adds r1, r0, r1 + lsls r1, r1, #3 + adds r2, r1, r6 + ldrh r3, [r2, #0xe] + movs r4, #0xe + ldrsh r1, [r2, r4] + str r0, [sp, #8] + cmp r1, #0x5f + bgt _081BEB26 + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, #1 + ble _081BEB18 + lsls r0, r3, #0x18 + lsrs r4, r0, #0x18 + movs r0, #0x30 + bl sub_08000BC8 + ldr r3, _081BEBF0 + ldr r1, [r3] + lsls r2, r4, #3 + adds r1, r2, r1 + str r0, [r1] + movs r5, #0 + adds r4, r2, #0 +_081BEA96: + ldr r0, [r3] + adds r0, r4, r0 + ldr r0, [r0] + adds r0, r0, r5 + strb r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x2f + bls _081BEA96 + movs r5, #0 + ldr r7, _081BEBF0 + adds r6, r2, #0 +_081BEAB0: + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x30 + bl __umodsi3 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x30 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, [r7] + adds r1, r6, r1 + ldr r1, [r1] + adds r0, r1, r0 + ldrb r2, [r0] + adds r1, r1, r4 + ldrb r1, [r1] + strb r1, [r0] + ldr r0, [r7] + adds r0, r6, r0 + ldr r0, [r0] + adds r0, r0, r4 + strb r2, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0x2f + bls _081BEAB0 + ldr r0, _081BEBF4 + ldr r1, [sp, #8] + add r1, sl + lsls r1, r1, #3 + adds r2, r1, r0 + ldrh r3, [r2, #0xe] + movs r4, #0xe + ldrsh r1, [r2, r4] + adds r6, r0, #0 + cmp r1, #0x5f + bgt _081BEB14 + adds r0, r3, #1 + strh r0, [r2, #0xe] +_081BEB14: + movs r0, #0 + strh r0, [r2, #0xa] +_081BEB18: + ldr r1, [sp, #8] + add r1, sl + lsls r1, r1, #3 + adds r1, r1, r6 + ldrh r0, [r1, #0xa] + adds r0, #1 + strh r0, [r1, #0xa] +_081BEB26: + ldr r0, [sp, #8] + add r0, sl + lsls r0, r0, #3 + adds r0, r0, r6 + ldrb r4, [r0, #0xe] + ldrb r5, [r0, #0xc] + lsls r0, r4, #0x10 + cmp r5, r4 + bhs _081BEBCE + str r0, [sp, #0xc] +_081BEB3A: + movs r6, #0 + adds r0, r5, #1 + str r0, [sp, #4] + lsls r4, r5, #3 + movs r2, #0x5f + subs r1, r2, r5 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + mov sb, r0 +_081BEB4E: + ldr r0, _081BEBF8 + ldr r0, [r0] + ldr r7, _081BEBF0 + ldr r3, [r7] + adds r3, r4, r3 + ldrb r2, [r3, #4] + adds r1, r2, #1 + strb r1, [r3, #4] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, [r3] + adds r1, r1, r2 + ldrb r1, [r1] + add r1, sb + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r2, #1 + mov r8, r2 + str r2, [sp] + movs r2, #0 + movs r3, #0x30 + bl sub_081BEF54 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _081BEB4E + ldr r0, [r7] + adds r1, r4, r0 + ldrb r0, [r1, #4] + cmp r0, #0x2f + bls _081BEBC0 + ldr r0, [r1] + bl sub_08000BF0 + ldr r0, [r7] + adds r0, r4, r0 + movs r1, #0 + str r1, [r0] + ldr r1, [sp, #8] + add r1, sl + lsls r1, r1, #3 + ldr r4, _081BEBF4 + adds r1, r1, r4 + ldrh r0, [r1, #0xc] + adds r0, #1 + strh r0, [r1, #0xc] + mov r0, r8 + ands r5, r0 + cmp r5, #1 + bne _081BEBC0 + ldr r0, _081BEBFC + ldr r1, [r0] + ldrh r0, [r1, #2] + subs r0, #1 + strh r0, [r1, #2] +_081BEBC0: + ldr r1, [sp, #4] + lsls r0, r1, #0x10 + lsrs r5, r0, #0x10 + ldr r2, [sp, #0xc] + lsrs r0, r2, #0x10 + cmp r5, r0 + blo _081BEB3A +_081BEBCE: + ldr r0, _081BEBF8 + ldr r1, [r0] + movs r2, #0x92 + lsls r2, r2, #4 + movs r0, #0 + movs r3, #0 + bl sub_0800195C + ldr r0, _081BEBF0 + ldr r0, [r0] + movs r4, #0xbe + lsls r4, r4, #2 + adds r0, r0, r4 + ldrb r0, [r0, #4] + cmp r0, #0x2f + bhi _081BEC9E + b _081BECB0 + .align 2, 0 +_081BEBF0: .4byte gUnknown_203CBDC +_081BEBF4: .4byte gUnknown_3005B60 +_081BEBF8: .4byte gUnknown_203CBD0 +_081BEBFC: .4byte gUnknown_203CBE0 +_081BEC00: + movs r0, #0 + bl sub_08002160 + ldr r0, _081BEC28 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _081BEC18 + bl sub_080A8964 +_081BEC18: + ldr r0, _081BEC2C + ldr r1, [r0] + movs r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + bl sub_081BE82C + b _081BEC9E + .align 2, 0 +_081BEC28: .4byte sub_081BE850 +_081BEC2C: .4byte gUnknown_203CBE0 +_081BEC30: + ldr r4, _081BEC5C + ldr r0, [r4] + bl sub_08000BF0 + movs r5, #0 + str r5, [r4] + ldr r4, _081BEC60 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _081BEC64 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + ldr r4, _081BEC68 + ldr r0, [r4] + bl sub_08000BF0 + str r5, [r4] + b _081BEC9E + .align 2, 0 +_081BEC5C: .4byte gUnknown_203CBE0 +_081BEC60: .4byte gUnknown_203CBDC +_081BEC64: .4byte gUnknown_203CBD0 +_081BEC68: .4byte gUnknown_203CBD4 +_081BEC6C: + movs r0, #0xc + movs r1, #2 + bl sub_08001200 + movs r0, #8 + movs r1, #0 + bl sub_08001200 + movs r0, #0 + movs r1, #7 + movs r2, #0 + bl sub_08001B70 + bl sub_08196DC4 + b _081BEC9E +_081BEC8C: + movs r0, #0 + bl sub_08001B48 + b _081BEC9E +_081BEC94: + mov r0, sl + bl sub_080A8964 + bl sub_080988C4 +_081BEC9E: + ldr r0, _081BECC0 + mov r2, sl + lsls r1, r2, #2 + add r1, sl + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081BECB0: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BECC0: .4byte gUnknown_3005B60 + thumb_func_end sub_081BE9EC + + thumb_func_start sub_081BECC4 +sub_081BECC4: @ 0x081BECC4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x18 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r1, _081BECF4 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #8] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bls _081BECE8 + b _081BEEC4 +_081BECE8: + lsls r0, r0, #2 + ldr r1, _081BECF8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BECF4: .4byte gUnknown_3005B60 +_081BECF8: .4byte _081BECFC +_081BECFC: @ jump table + .4byte _081BED1C @ case 0 + .4byte _081BED50 @ case 1 + .4byte _081BED78 @ case 2 + .4byte _081BED8C @ case 3 + .4byte _081BEDE4 @ case 4 + .4byte _081BEE0C @ case 5 + .4byte _081BEE68 @ case 6 + .4byte _081BEEC0 @ case 7 +_081BED1C: + ldr r4, _081BED4C + movs r0, #0x14 + bl sub_08000BDC + str r0, [r4] + movs r0, #0x80 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1] + movs r0, #8 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #4] + movs r0, #0x80 + lsls r0, r0, #2 + bl sub_08000BDC + ldr r1, [r4] + str r0, [r1, #0xc] + movs r0, #0 + strh r0, [r1, #0x10] + b _081BEEC4 + .align 2, 0 +_081BED4C: .4byte gUnknown_203CBD8 +_081BED50: + ldr r0, _081BED70 + ldr r0, [r0] + ldr r1, [r0] + movs r5, #0 + ldr r2, _081BED74 +_081BED5A: + adds r0, r5, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r1, #1 + cmp r5, #0x7f + bls _081BED5A + b _081BEEC4 + .align 2, 0 +_081BED70: .4byte gUnknown_203CBD8 +_081BED74: .4byte gUnknown_85E7E00 +_081BED78: + ldr r0, _081BED88 + ldr r0, [r0] + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r1] + movs r0, #0x80 + strh r0, [r1, #4] + b _081BEEC4 + .align 2, 0 +_081BED88: .4byte gUnknown_203CBD8 +_081BED8C: + mov r1, sp + ldr r0, _081BEE00 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldr r4, _081BEE04 + ldr r0, [r4] + ldr r0, [r0, #4] + str r0, [sp, #0xc] + movs r2, #0x10 + rsbs r2, r2, #0 + mov r0, sp + movs r1, #0x80 + movs r3, #1 + bl sub_08006B0C + ldr r1, [r4] + movs r3, #0 + strb r0, [r1, #8] + ldr r2, _081BEE08 + ldr r0, [r4] + ldrb r1, [r0, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x28 + strb r3, [r0] + ldr r3, [r4] + ldrb r1, [r3, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + strh r1, [r0, #0x2e] + ldrb r1, [r3, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x30] +_081BEDE4: + movs r5, #0 + ldr r2, _081BEE04 +_081BEDE8: + ldr r0, [r2] + ldr r1, [r0, #0xc] + lsls r0, r5, #1 + adds r0, r0, r1 + strh r5, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0xff + bls _081BEDE8 + b _081BEEC4 + .align 2, 0 +_081BEE00: .4byte gUnknown_85E7FBC +_081BEE04: .4byte gUnknown_203CBD8 +_081BEE08: .4byte gUnknown_20205AC +_081BEE0C: + movs r5, #0 + movs r6, #0xff + ldr r0, _081BEE58 + mov r8, r0 +_081BEE14: + bl sub_0806F050 + adds r4, r6, #0 + ands r4, r0 + bl sub_0806F050 + adds r1, r6, #0 + ands r1, r0 + ldr r0, _081BEE5C + ldr r3, [r0] + ldr r0, [r3, #0xc] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r2, [r1] + lsls r4, r4, #1 + adds r4, r4, r0 + ldrh r0, [r4] + strh r0, [r1] + strh r2, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + bls _081BEE14 + ldr r2, _081BEE60 + ldrb r1, [r3, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _081BEE64 + str r1, [r0] + b _081BEEC4 + .align 2, 0 +_081BEE58: .4byte 0x000001FF +_081BEE5C: .4byte gUnknown_203CBD8 +_081BEE60: .4byte gUnknown_20205AC +_081BEE64: .4byte sub_081BEEE4 +_081BEE68: + ldr r3, _081BEEB4 + ldr r5, _081BEEB8 + ldr r0, [r5] + ldrb r1, [r0, #8] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r2, r0, #2 + adds r0, r3, #0 + adds r0, #0x1c + adds r0, r2, r0 + ldr r1, [r0] + ldr r0, _081BEEBC + cmp r1, r0 + bne _081BEED4 + adds r0, r2, r3 + bl sub_08006E00 + ldr r0, [r5] + ldr r0, [r0, #0xc] + bl sub_08000BF0 + ldr r0, [r5] + movs r4, #0 + str r4, [r0, #0xc] + ldr r0, [r0, #4] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0, #4] + ldr r0, [r0] + bl sub_08000BF0 + ldr r0, [r5] + str r4, [r0] + bl sub_08000BF0 + str r4, [r5] + b _081BEEC4 + .align 2, 0 +_081BEEB4: .4byte gUnknown_20205AC +_081BEEB8: .4byte gUnknown_203CBD8 +_081BEEBC: .4byte sub_08007140 +_081BEEC0: + bl sub_080988C4 +_081BEEC4: + ldr r0, _081BEEE0 + lsls r1, r7, #2 + adds r1, r1, r7 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081BEED4: + add sp, #0x18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BEEE0: .4byte gUnknown_3005B60 + thumb_func_end sub_081BECC4 + + thumb_func_start sub_081BEEE4 +sub_081BEEE4: @ 0x081BEEE4 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r0, _081BEEFC + ldr r0, [r0] + ldrh r0, [r0, #0x10] + cmp r0, #0xff + bls _081BEF04 + ldr r0, _081BEF00 + str r0, [r5, #0x1c] + b _081BEF4C + .align 2, 0 +_081BEEFC: .4byte gUnknown_203CBD8 +_081BEF00: .4byte sub_08007140 +_081BEF04: + ldrh r1, [r5, #0x22] + movs r2, #0x22 + ldrsh r0, [r5, r2] + cmp r0, #0x5f + ble _081BEF48 + movs r4, #0 +_081BEF10: + ldr r0, _081BEF44 + ldr r3, [r0] + ldr r0, [r3] + ldrh r1, [r3, #0x10] + adds r2, r1, #1 + strh r2, [r3, #0x10] + lsls r1, r1, #0x10 + ldr r2, [r3, #0xc] + lsrs r1, r1, #0xf + adds r1, r1, r2 + ldrh r1, [r1] + movs r2, #0 + str r2, [sp] + movs r3, #0x10 + bl sub_081BEF54 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #1 + bls _081BEF10 + adds r0, r5, #0 + movs r1, #0 + bl sub_08007EC0 + b _081BEF4C + .align 2, 0 +_081BEF44: .4byte gUnknown_203CBD8 +_081BEF48: + adds r0, r1, #1 + strh r0, [r5, #0x22] +_081BEF4C: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081BEEE4 + + thumb_func_start sub_081BEF54 +sub_081BEF54: @ 0x081BEF54 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + mov sl, r1 + adds r6, r2, #0 + mov r8, r3 + ldr r0, [sp, #0x28] + mov sb, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sl, r1 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + mov r8, r0 + lsrs r7, r0, #0x18 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + mov r0, sl + adds r1, r7, #0 + bl __divsi3 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r4, r5, #0x18 + ldr r3, _081BF01C + strh r4, [r3] + mov r0, sl + adds r1, r7, #0 + str r3, [sp, #4] + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r3, [sp, #4] + strh r2, [r3, #2] + movs r1, #7 + ands r4, r1 + ands r2, r1 + strh r4, [r3, #4] + strh r2, [r3, #6] + lsrs r0, r0, #0x1b + lsrs r5, r5, #0x1b + strh r0, [r3, #8] + strh r5, [r3, #0xa] + mov r1, r8 + lsrs r1, r1, #0x1b + lsls r1, r1, #6 + mov r8, r1 + mov r1, r8 + muls r1, r5, r1 + lsls r0, r0, #6 + adds r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + strh r1, [r3, #0xc] + lsls r4, r4, #3 + adds r4, r4, r2 + adds r1, r1, r4 + lsls r4, r1, #0x10 + lsrs r4, r4, #0x11 + strh r1, [r3, #0xe] + movs r1, #1 + mov r0, sl + ands r1, r0 + movs r2, #1 + eors r1, r2 + lsls r0, r1, #2 + lsls r6, r0 + eors r1, r2 + lsls r1, r1, #2 + movs r0, #0xf + lsls r0, r1 + orrs r6, r0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r1, sb + lsls r1, r1, #5 + mov sb, r1 + add sb, r4 + ldr r1, [sp] + add r1, sb + ldrb r0, [r1] + ands r6, r0 + strb r6, [r1] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BF01C: .4byte gUnknown_30012A0 + thumb_func_end sub_081BEF54 + + thumb_func_start sub_081BF020 +sub_081BF020: @ 0x081BF020 + push {r4, lr} + sub sp, #4 + ldr r0, _081BF094 + bl sub_080012A0 + movs r0, #1 + bl sub_08001274 + bl m4aSoundVSyncOff + movs r0, #0 + bl sub_080006F0 + movs r4, #0 + str r4, [sp] + ldr r0, _081BF098 + mov r1, sp + str r1, [r0] + movs r1, #0xc0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r1, _081BF09C + str r1, [r0, #8] + ldr r1, [r0, #8] + str r4, [sp] + mov r1, sp + str r1, [r0] + movs r1, #0xa0 + lsls r1, r1, #0x13 + str r1, [r0, #4] + ldr r1, _081BF0A0 + str r1, [r0, #8] + ldr r0, [r0, #8] + bl sub_0800668C + bl sub_080A8818 + bl sub_080B9710 + ldr r0, _081BF0A4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081BF0A8 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + ldr r0, _081BF0AC + bl sub_08000540 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BF094: .4byte 0x0000FFFF +_081BF098: .4byte 0x040000D4 +_081BF09C: .4byte 0x85006000 +_081BF0A0: .4byte 0x85000100 +_081BF0A4: .4byte sub_081BF0BC +_081BF0A8: .4byte gUnknown_3005B60 +_081BF0AC: .4byte sub_081BF0B0 + thumb_func_end sub_081BF020 + + thumb_func_start sub_081BF0B0 +sub_081BF0B0: @ 0x081BF0B0 + push {lr} + bl sub_080A89D4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BF0B0 + + thumb_func_start sub_081BF0BC +sub_081BF0BC: @ 0x081BF0BC + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081BF0E4 + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0xa + bls _081BF0D8 + b _081BF272 +_081BF0D8: + lsls r0, r0, #2 + ldr r1, _081BF0E8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BF0E4: .4byte gUnknown_3005B68 +_081BF0E8: .4byte _081BF0EC +_081BF0EC: @ jump table + .4byte _081BF118 @ case 0 + .4byte _081BF122 @ case 1 + .4byte _081BF140 @ case 2 + .4byte _081BF272 @ case 3 + .4byte _081BF15C @ case 4 + .4byte _081BF194 @ case 5 + .4byte _081BF200 @ case 6 + .4byte _081BF236 @ case 7 + .4byte _081BF23A @ case 8 + .4byte _081BF258 @ case 9 + .4byte _081BF262 @ case 10 +_081BF118: + movs r0, #5 + bl sub_081BAA20 + movs r0, #1 + b _081BF270 +_081BF122: + ldr r0, _081BF13C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081BF130 + b _081BF272 +_081BF130: + movs r0, #0 + bl sub_081BAA20 + movs r0, #2 + b _081BF270 + .align 2, 0 +_081BF13C: .4byte gUnknown_3002360 +_081BF140: + ldr r0, _081BF158 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081BF14E + b _081BF272 +_081BF14E: + movs r0, #1 + bl sub_081BAA20 + movs r0, #4 + b _081BF270 + .align 2, 0 +_081BF158: .4byte gUnknown_3002360 +_081BF15C: + ldr r0, _081BF180 + ldr r1, _081BF184 + str r1, [r0] + ldr r2, _081BF188 + ldr r0, _081BF18C + subs r0, r0, r1 + str r0, [r2] + ldr r0, _081BF190 + str r1, [r0, #0x28] + adds r1, r0, #0 + adds r1, #0x4b + movs r4, #0 + strb r4, [r1] + bl sub_081BA36C + strh r4, [r5, #2] + movs r0, #5 + b _081BF270 + .align 2, 0 +_081BF180: .4byte gUnknown_3006070 +_081BF184: .4byte gUnknown_8912454 +_081BF188: .4byte gUnknown_3006078 +_081BF18C: .4byte gUnknown_89158E0 +_081BF190: .4byte gUnknown_3006080 +_081BF194: + ldr r0, _081BF1DC + ldrb r6, [r0, #0x18] + adds r4, r0, #0 + cmp r6, #0 + bne _081BF1EC + ldr r0, [r4, #0x1c] + ldr r1, _081BF1E0 + ands r0, r1 + cmp r0, r1 + bne _081BF1EC + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb4 + ble _081BF1F0 + movs r0, #2 + bl sub_081BAA20 + ldr r0, _081BF1E4 + ldr r1, [r0] + adds r1, #0xc0 + ldr r0, _081BF1E8 + ldr r2, [r0] + subs r2, #0xc0 + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r3, #4 + bl sub_081BA808 + strh r6, [r5, #2] + movs r0, #6 + b _081BF270 + .align 2, 0 +_081BF1DC: .4byte gUnknown_3006080 +_081BF1E0: .4byte 0x00020200 +_081BF1E4: .4byte gUnknown_3006070 +_081BF1E8: .4byte gUnknown_3006078 +_081BF1EC: + movs r0, #0 + strh r0, [r5, #2] +_081BF1F0: + adds r0, r4, #0 + bl sub_081BA3A8 + ldr r1, _081BF1FC + str r0, [r1] + b _081BF272 + .align 2, 0 +_081BF1FC: .4byte gUnknown_3006074 +_081BF200: + ldr r4, _081BF220 + adds r0, r4, #0 + bl sub_081BA3A8 + ldr r1, _081BF224 + str r0, [r1] + adds r0, r4, #0 + bl sub_081BA8CC + cmp r0, #0 + beq _081BF228 + movs r0, #3 + bl sub_081BAA20 + movs r0, #7 + b _081BF270 + .align 2, 0 +_081BF220: .4byte gUnknown_3006080 +_081BF224: .4byte gUnknown_3006074 +_081BF228: + ldrb r1, [r4, #0x1e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081BF272 + movs r0, #9 + b _081BF270 +_081BF236: + movs r0, #8 + b _081BF270 +_081BF23A: + ldr r0, _081BF254 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BF272 + adds r0, r2, #0 + bl sub_080A8964 + bl sub_080008F4 + b _081BF272 + .align 2, 0 +_081BF254: .4byte gUnknown_3002360 +_081BF258: + movs r0, #4 + bl sub_081BAA20 + movs r0, #0xa + b _081BF270 +_081BF262: + ldr r0, _081BF27C + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BF272 + movs r0, #0 +_081BF270: + strh r0, [r5] +_081BF272: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BF27C: .4byte gUnknown_3002360 + thumb_func_end sub_081BF0BC + + thumb_func_start sub_081BF280 +sub_081BF280: @ 0x081BF280 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r1 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r4, _081BF2D0 + ldr r0, _081BF2D4 + bl sub_08000BDC + str r0, [r4] + ldr r1, _081BF2D8 + adds r0, r0, r1 + strb r7, [r0] + ldr r0, [r4] + mov r2, r8 + str r2, [r0] + adds r1, #2 + adds r0, r0, r1 + strb r5, [r0] + ldr r0, [r4] + ldr r2, _081BF2DC + adds r0, r0, r2 + strb r6, [r0] + ldr r1, [r4] + ldr r0, [sp, #0x18] + str r0, [r1, #4] + cmp r7, #2 + bne _081BF2E0 + subs r2, #2 + adds r1, r1, r2 + movs r0, #1 + b _081BF2E6 + .align 2, 0 +_081BF2D0: .4byte gUnknown_203CBE8 +_081BF2D4: .4byte 0x000040F8 +_081BF2D8: .4byte 0x000040BC +_081BF2DC: .4byte 0x000040BF +_081BF2E0: + ldr r0, _081BF2F8 + adds r1, r1, r0 + movs r0, #0 +_081BF2E6: + strb r0, [r1] + cmp r7, #1 + beq _081BF334 + cmp r7, #1 + bgt _081BF300 + cmp r7, #0 + beq _081BF310 + ldr r2, _081BF2FC + b _081BF382 + .align 2, 0 +_081BF2F8: .4byte 0x000040BD +_081BF2FC: .4byte gUnknown_203CBE8 +_081BF300: + cmp r7, #2 + beq _081BF310 + cmp r7, #3 + beq _081BF364 + ldr r2, _081BF30C + b _081BF382 + .align 2, 0 +_081BF30C: .4byte gUnknown_203CBE8 +_081BF310: + ldr r2, _081BF328 + ldr r0, [r2] + ldr r1, _081BF32C + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _081BF330 + adds r0, r0, r1 + movs r1, #3 + b _081BF380 + .align 2, 0 +_081BF328: .4byte gUnknown_203CBE8 +_081BF32C: .4byte 0x000040C1 +_081BF330: .4byte 0x000040C2 +_081BF334: + ldr r2, _081BF354 + ldr r0, [r2] + ldr r1, _081BF358 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _081BF35C + adds r0, r0, r1 + movs r1, #3 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _081BF360 + adds r0, r0, r1 + strb r7, [r0] + b _081BF382 + .align 2, 0 +_081BF354: .4byte gUnknown_203CBE8 +_081BF358: .4byte 0x000040C1 +_081BF35C: .4byte 0x000040C2 +_081BF360: .4byte 0x000040C8 +_081BF364: + ldr r2, _081BF3B8 + ldr r0, [r2] + ldr r1, _081BF3BC + adds r0, r0, r1 + movs r1, #2 + strb r1, [r0] + ldr r0, [r2] + ldr r1, _081BF3C0 + adds r0, r0, r1 + strb r7, [r0] + ldr r0, [r2] + adds r1, #1 + adds r0, r0, r1 + movs r1, #1 +_081BF380: + strb r1, [r0] +_081BF382: + ldr r0, [r2] + ldr r2, _081BF3BC + adds r1, r0, r2 + ldrb r1, [r1] + subs r2, #1 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #0xff + bl sub_081C4094 + ldr r0, _081BF3C4 + ldr r0, [r0] + cmp r0, #0 + bne _081BF3A6 + movs r0, #0 + movs r1, #0 + bl sub_0806ED30 +_081BF3A6: + ldr r0, _081BF3C8 + bl sub_08000540 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081BF3B8: .4byte gUnknown_203CBE8 +_081BF3BC: .4byte 0x000040C1 +_081BF3C0: .4byte 0x000040C2 +_081BF3C4: .4byte gUnknown_2024178 +_081BF3C8: .4byte sub_081BF444 + thumb_func_end sub_081BF280 + + thumb_func_start sub_081BF3CC +sub_081BF3CC: @ 0x081BF3CC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r6, [sp, #0x18] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x10 + lsrs r6, r6, #0x10 + str r3, [sp] + movs r0, #3 + mov r1, r8 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_081BF280 + ldr r0, _081BF40C + ldr r0, [r0] + ldr r1, _081BF410 + adds r0, r0, r1 + strh r6, [r0] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BF40C: .4byte gUnknown_203CBE8 +_081BF410: .4byte 0x000040C4 + thumb_func_end sub_081BF3CC + + thumb_func_start sub_081BF414 +sub_081BF414: @ 0x081BF414 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BF414 + + thumb_func_start sub_081BF430 +sub_081BF430: @ 0x081BF430 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BF430 + + thumb_func_start sub_081BF444 +sub_081BF444: @ 0x081BF444 + push {lr} +_081BF446: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BF46A + bl sub_081BF470 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BF46A + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BF446 +_081BF46A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081BF444 + + thumb_func_start sub_081BF470 +sub_081BF470: @ 0x081BF470 + push {r4, lr} + sub sp, #4 + ldr r0, _081BF490 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x18 + bls _081BF484 + b _081BF760 +_081BF484: + lsls r0, r0, #2 + ldr r1, _081BF494 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BF490: .4byte gUnknown_3002360 +_081BF494: .4byte _081BF498 +_081BF498: @ jump table + .4byte _081BF4FC @ case 0 + .4byte _081BF50A @ case 1 + .4byte _081BF51C @ case 2 + .4byte _081BF530 @ case 3 + .4byte _081BF544 @ case 4 + .4byte _081BF54A @ case 5 + .4byte _081BF564 @ case 6 + .4byte _081BF580 @ case 7 + .4byte _081BF586 @ case 8 + .4byte _081BF598 @ case 9 + .4byte _081BF5B8 @ case 10 + .4byte _081BF5DC @ case 11 + .4byte _081BF5E2 @ case 12 + .4byte _081BF5F4 @ case 13 + .4byte _081BF60C @ case 14 + .4byte _081BF620 @ case 15 + .4byte _081BF638 @ case 16 + .4byte _081BF658 @ case 17 + .4byte _081BF694 @ case 18 + .4byte _081BF6B0 @ case 19 + .4byte _081BF6C0 @ case 20 + .4byte _081BF6D4 @ case 21 + .4byte _081BF6DA @ case 22 + .4byte _081BF710 @ case 23 + .4byte _081BF72C @ case 24 +_081BF4FC: + bl sub_08121E58 + bl sub_08121D90 + bl sub_08199640 + b _081BF746 +_081BF50A: + bl sub_080B9710 + ldr r1, _081BF518 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF518: .4byte gUnknown_3002360 +_081BF51C: + bl sub_080A133C + ldr r2, _081BF52C + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + b _081BF744 + .align 2, 0 +_081BF52C: .4byte gUnknown_2037C74 +_081BF530: + bl sub_0800668C + ldr r1, _081BF540 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF540: .4byte gUnknown_3002360 +_081BF544: + bl sub_08008424 + b _081BF746 +_081BF54A: + bl sub_081BF784 + ldr r0, _081BF55C + ldr r0, [r0] + ldr r1, _081BF560 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081BF746 + .align 2, 0 +_081BF55C: .4byte gUnknown_203CBE8 +_081BF560: .4byte 0x000040F0 +_081BF564: + bl sub_081BF810 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BF570 + b _081BF778 +_081BF570: + ldr r1, _081BF57C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF57C: .4byte gUnknown_3002360 +_081BF580: + bl sub_081C1E88 + b _081BF746 +_081BF586: + bl sub_081C14D4 + ldr r1, _081BF594 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF594: .4byte gUnknown_3002360 +_081BF598: + ldr r4, _081BF5B0 + ldr r0, [r4] + adds r0, #0xc + bl sub_081BF9F8 + ldr r0, [r4] + ldr r1, _081BF5B4 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081BF746 + .align 2, 0 +_081BF5B0: .4byte gUnknown_203CBE8 +_081BF5B4: .4byte 0x000040F0 +_081BF5B8: + ldr r0, _081BF5D4 + ldr r0, [r0] + adds r0, #0xc + bl sub_081BFA50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081BF5CA + b _081BF778 +_081BF5CA: + ldr r1, _081BF5D8 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF5D4: .4byte gUnknown_203CBE8 +_081BF5D8: .4byte gUnknown_3002360 +_081BF5DC: + bl sub_081C1F1C + b _081BF746 +_081BF5E2: + bl sub_081C21CC + ldr r1, _081BF5F0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF5F0: .4byte gUnknown_3002360 +_081BF5F4: + ldr r0, _081BF604 + ldr r0, [r0] + ldr r1, _081BF608 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081C2690 + b _081BF746 + .align 2, 0 +_081BF604: .4byte gUnknown_203CBE8 +_081BF608: .4byte 0x000040C0 +_081BF60C: + bl sub_081BFC7C + ldr r1, _081BF61C + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF61C: .4byte gUnknown_3002360 +_081BF620: + ldr r0, _081BF630 + ldr r0, [r0] + ldr r1, _081BF634 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081C23D4 + b _081BF746 + .align 2, 0 +_081BF630: .4byte gUnknown_203CBE8 +_081BF634: .4byte 0x000040C0 +_081BF638: + bl sub_081C39B4 + bl sub_081C3AEC + ldr r0, _081BF650 + ldr r0, [r0] + ldr r1, _081BF654 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081BF746 + .align 2, 0 +_081BF650: .4byte gUnknown_203CBE8 +_081BF654: .4byte 0x000040F0 +_081BF658: + ldr r4, _081BF688 + ldr r1, [r4] + adds r0, r1, #0 + adds r0, #0xc + ldr r2, _081BF68C + adds r1, r1, r2 + bl sub_081C3E18 + ldr r1, [r4] + ldr r2, _081BF690 + adds r1, r1, r2 + strb r0, [r1] + ldr r1, [r4] + adds r2, r1, r2 + ldrb r0, [r2] + cmp r0, #0xff + bne _081BF67C + b _081BF778 +_081BF67C: + ldr r0, _081BF68C + adds r1, r1, r0 + movs r0, #0 + strh r0, [r1] + b _081BF746 + .align 2, 0 +_081BF688: .4byte gUnknown_203CBE8 +_081BF68C: .4byte 0x000040F0 +_081BF690: .4byte 0x000040D3 +_081BF694: + ldr r0, _081BF6A8 + ldr r0, [r0] + adds r0, #0xc + bl sub_081C418C + ldr r1, _081BF6AC + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF6A8: .4byte gUnknown_203CBE8 +_081BF6AC: .4byte gUnknown_3002360 +_081BF6B0: + ldr r0, _081BF6BC + ldr r0, [r0] + adds r0, #0xc + bl sub_081C4210 + b _081BF746 + .align 2, 0 +_081BF6BC: .4byte gUnknown_203CBE8 +_081BF6C0: + bl sub_081C4290 + ldr r1, _081BF6D0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF6D0: .4byte gUnknown_3002360 +_081BF6D4: + bl sub_081C3AA4 + b _081BF746 +_081BF6DA: + ldr r0, _081BF6F4 + ldr r0, [r0] + ldr r1, _081BF6F8 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + beq _081BF700 + ldr r0, _081BF6FC + movs r1, #0 + bl sub_080A8878 + b _081BF746 + .align 2, 0 +_081BF6F4: .4byte gUnknown_203CBE8 +_081BF6F8: .4byte 0x000040BC +_081BF6FC: .4byte sub_081BFE44 +_081BF700: + ldr r0, _081BF70C + movs r1, #0 + bl sub_080A8878 + b _081BF746 + .align 2, 0 +_081BF70C: .4byte sub_081C1050 +_081BF710: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r1, _081BF728 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + b _081BF74E + .align 2, 0 +_081BF728: .4byte gUnknown_3002360 +_081BF72C: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _081BF758 + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 +_081BF744: + strb r0, [r2, #8] +_081BF746: + ldr r1, _081BF75C + movs r2, #0x87 + lsls r2, r2, #3 + adds r1, r1, r2 +_081BF74E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081BF778 + .align 2, 0 +_081BF758: .4byte gUnknown_2037C74 +_081BF75C: .4byte gUnknown_3002360 +_081BF760: + ldr r0, _081BF770 + bl sub_080006F0 + ldr r0, _081BF774 + bl sub_08000540 + movs r0, #1 + b _081BF77A + .align 2, 0 +_081BF770: .4byte sub_081BF430 +_081BF774: .4byte sub_081BF414 +_081BF778: + movs r0, #0 +_081BF77A: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BF470 + + thumb_func_start sub_081BF784 +sub_081BF784: @ 0x081BF784 + push {r4, lr} + movs r0, #0 + bl sub_080017D4 + ldr r1, _081BF800 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _081BF804 + ldr r1, [r4] + ldr r0, _081BF808 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081BF80C + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + adds r1, #0xbc + movs r0, #3 + bl sub_0800212C + bl sub_08121E00 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BF800: .4byte gUnknown_85ECE88 +_081BF804: .4byte gUnknown_203CBE8 +_081BF808: .4byte 0x000020BC +_081BF80C: .4byte 0x000010BC + thumb_func_end sub_081BF784 + + thumb_func_start sub_081BF810 +sub_081BF810: @ 0x081BF810 + push {r4, lr} + sub sp, #4 + ldr r1, _081BF834 + ldr r0, [r1] + ldr r2, _081BF838 + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r4, r1, #0 + cmp r0, #0xc + bls _081BF828 + b _081BF9EC +_081BF828: + lsls r0, r0, #2 + ldr r1, _081BF83C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081BF834: .4byte gUnknown_203CBE8 +_081BF838: .4byte 0x000040F0 +_081BF83C: .4byte _081BF840 +_081BF840: @ jump table + .4byte _081BF874 @ case 0 + .4byte _081BF890 @ case 1 + .4byte _081BF8C0 @ case 2 + .4byte _081BF8D8 @ case 3 + .4byte _081BF8F0 @ case 4 + .4byte _081BF908 @ case 5 + .4byte _081BF920 @ case 6 + .4byte _081BF950 @ case 7 + .4byte _081BF95C @ case 8 + .4byte _081BF978 @ case 9 + .4byte _081BF984 @ case 10 + .4byte _081BF9A0 @ case 11 + .4byte _081BF9C4 @ case 12 +_081BF874: + bl sub_081996B8 + ldr r1, _081BF88C + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _081BF9A6 + .align 2, 0 +_081BF88C: .4byte gUnknown_8D97DD0 +_081BF890: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BF89E + b _081BF9EC +_081BF89E: + ldr r0, _081BF8B4 + ldr r4, _081BF8B8 + ldr r1, [r4] + adds r1, #0xbc + bl sub_08034370 + ldr r1, [r4] + ldr r2, _081BF8BC + adds r1, r1, r2 + b _081BF9AE + .align 2, 0 +_081BF8B4: .4byte gUnknown_8D9888C +_081BF8B8: .4byte gUnknown_203CBE8 +_081BF8BC: .4byte 0x000040F0 +_081BF8C0: + ldr r0, _081BF8D0 + ldr r1, [r4] + ldr r2, _081BF8D4 + adds r1, r1, r2 + bl sub_08034370 + ldr r1, [r4] + b _081BF9AA + .align 2, 0 +_081BF8D0: .4byte gUnknown_8D98E8C +_081BF8D4: .4byte 0x000008BC +_081BF8D8: + ldr r0, _081BF8E8 + ldr r1, [r4] + ldr r2, _081BF8EC + adds r1, r1, r2 + bl sub_08034370 + ldr r1, [r4] + b _081BF9AA + .align 2, 0 +_081BF8E8: .4byte gUnknown_8D98A44 +_081BF8EC: .4byte 0x000018BC +_081BF8F0: + ldr r0, _081BF900 + ldr r1, [r4] + ldr r2, _081BF904 + adds r1, r1, r2 + bl sub_08034370 + ldr r1, [r4] + b _081BF9AA + .align 2, 0 +_081BF900: .4byte gUnknown_8D98BA8 +_081BF904: .4byte 0x000028BC +_081BF908: + ldr r0, _081BF918 + ldr r1, [r4] + ldr r2, _081BF91C + adds r1, r1, r2 + bl sub_08034370 + ldr r1, [r4] + b _081BF9AA + .align 2, 0 +_081BF918: .4byte gUnknown_8D98D14 +_081BF91C: .4byte 0x000038BC +_081BF920: + ldr r0, _081BF940 + movs r2, #0x80 + lsls r2, r2, #1 + movs r1, #0 + bl sub_080A11BC + ldr r0, _081BF944 + movs r1, #0x81 + movs r2, #0x1e + bl sub_080A1200 + ldr r0, _081BF948 + ldr r1, [r0] + ldr r2, _081BF94C + adds r1, r1, r2 + b _081BF9AE + .align 2, 0 +_081BF940: .4byte gUnknown_8D9879C +_081BF944: .4byte gUnknown_8D85604 +_081BF948: .4byte gUnknown_203CBE8 +_081BF94C: .4byte 0x000040F0 +_081BF950: + ldr r0, _081BF958 + bl sub_08034388 + b _081BF9A6 + .align 2, 0 +_081BF958: .4byte gUnknown_85ED40C +_081BF95C: + ldr r0, _081BF96C + bl sub_08034388 + ldr r0, _081BF970 + ldr r1, [r0] + ldr r2, _081BF974 + adds r1, r1, r2 + b _081BF9AE + .align 2, 0 +_081BF96C: .4byte gUnknown_85ED4C4 +_081BF970: .4byte gUnknown_203CBE8 +_081BF974: .4byte 0x000040F0 +_081BF978: + ldr r0, _081BF980 + bl sub_08034388 + b _081BF9A6 + .align 2, 0 +_081BF980: .4byte gUnknown_85ED548 +_081BF984: + ldr r0, _081BF994 + bl sub_080343E4 + ldr r0, _081BF998 + ldr r1, [r0] + ldr r2, _081BF99C + adds r1, r1, r2 + b _081BF9AE + .align 2, 0 +_081BF994: .4byte gUnknown_85ED550 +_081BF998: .4byte gUnknown_203CBE8 +_081BF99C: .4byte 0x000040F0 +_081BF9A0: + ldr r0, _081BF9B8 + bl sub_080343E4 +_081BF9A6: + ldr r0, _081BF9BC + ldr r1, [r0] +_081BF9AA: + ldr r0, _081BF9C0 + adds r1, r1, r0 +_081BF9AE: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _081BF9EC + .align 2, 0 +_081BF9B8: .4byte gUnknown_85ED4CC +_081BF9BC: .4byte gUnknown_203CBE8 +_081BF9C0: .4byte 0x000040F0 +_081BF9C4: + ldr r0, _081BF9E0 + movs r1, #0xe8 + lsls r1, r1, #1 + movs r2, #0x60 + bl sub_080A11BC + ldr r0, _081BF9E4 + ldr r0, [r0] + ldr r1, _081BF9E8 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + movs r0, #1 + b _081BF9EE + .align 2, 0 +_081BF9E0: .4byte gUnknown_8D97C54 +_081BF9E4: .4byte gUnknown_203CBE8 +_081BF9E8: .4byte 0x000040F0 +_081BF9EC: + movs r0, #0 +_081BF9EE: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081BF810 + + thumb_func_start sub_081BF9F8 +sub_081BF9F8: @ 0x081BF9F8 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _081BFA24 + ldr r1, [r0] + ldr r2, _081BFA28 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _081BFA30 + ldr r2, [r1] + ldr r4, _081BFA2C + adds r0, r1, r4 + ldrb r1, [r0] + movs r0, #0x64 + muls r1, r0, r1 + adds r1, r1, r2 + adds r0, r3, #0 + movs r2, #0x64 + bl memcpy + b _081BFA46 + .align 2, 0 +_081BFA24: .4byte gUnknown_203CBE8 +_081BFA28: .4byte 0x000040BD +_081BFA2C: .4byte 0x000040BE +_081BFA30: + ldr r0, [r1] + ldr r2, _081BFA4C + adds r1, r1, r2 + ldrb r2, [r1] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r1, r3, #0 + bl sub_08068B44 +_081BFA46: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BFA4C: .4byte 0x000040BE + thumb_func_end sub_081BF9F8 + + thumb_func_start sub_081BFA50 +sub_081BFA50: @ 0x081BFA50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r0, _081BFA78 + ldr r6, [r0] + adds r5, r6, #0 + adds r5, #0x70 + ldr r1, _081BFA7C + adds r0, r6, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #1 + beq _081BFAF8 + cmp r0, #1 + bgt _081BFA80 + cmp r0, #0 + beq _081BFA8C + b _081BFC4A + .align 2, 0 +_081BFA78: .4byte gUnknown_203CBE8 +_081BFA7C: .4byte 0x000040F0 +_081BFA80: + cmp r0, #2 + beq _081BFB36 + cmp r0, #3 + bne _081BFA8A + b _081BFBF4 +_081BFA8A: + b _081BFC4A +_081BFA8C: + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x41 + bl sub_0806A058 + strh r0, [r5, #2] + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A058 + str r0, [r5, #0x10] + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + strb r0, [r5, #5] + adds r0, r4, #0 + movs r1, #0x2e + bl sub_0806A058 + strb r0, [r5, #8] + adds r0, r4, #0 + movs r1, #0xc + bl sub_0806A058 + strh r0, [r5, #0x2e] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r5, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xa5 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081BFAEC + movs r0, #1 + strb r0, [r5, #4] + b _081BFC58 +_081BFAEC: + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + strb r0, [r5, #4] + b _081BFC58 +_081BFAF8: + movs r5, #0 + adds r7, r6, #0 + adds r7, #0x8c + movs r0, #0xa4 + adds r0, r0, r6 + mov r8, r0 + adds r6, #0x84 +_081BFB06: + adds r1, r5, #0 + adds r1, #0xd + adds r0, r4, #0 + bl sub_0806A058 + strh r0, [r6] + adds r1, r5, #0 + adds r1, #0x11 + adds r0, r4, #0 + bl sub_0806A058 + adds r1, r7, r5 + strb r0, [r1] + adds r6, #2 + adds r5, #1 + cmp r5, #3 + bls _081BFB06 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0806A058 + mov r1, r8 + strb r0, [r1] + b _081BFC58 +_081BFB36: + ldr r1, [r6] + ldr r0, _081BFB98 + cmp r1, r0 + beq _081BFB48 + ldr r1, _081BFB9C + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _081BFBA0 +_081BFB48: + adds r0, r4, #0 + bl sub_0806CB34 + adds r1, r6, #0 + adds r1, #0xa3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5, #0x20] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r5, #0x22] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + strh r0, [r5, #0x24] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + strh r0, [r5, #0x26] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + strh r0, [r5, #0x28] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + strh r0, [r5, #0x2a] + adds r0, r4, #0 + movs r1, #0x3d + b _081BFBEC + .align 2, 0 +_081BFB98: .4byte gUnknown_2024190 +_081BFB9C: .4byte 0x000040BC +_081BFBA0: + adds r0, r4, #0 + bl sub_0806CB34 + adds r1, r6, #0 + adds r1, #0xa3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x39 + bl sub_0806A058 + strh r0, [r5, #0x20] + adds r0, r4, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r5, #0x22] + adds r0, r4, #0 + movs r1, #0x54 + bl sub_0806A058 + strh r0, [r5, #0x24] + adds r0, r4, #0 + movs r1, #0x55 + bl sub_0806A058 + strh r0, [r5, #0x26] + adds r0, r4, #0 + movs r1, #0x57 + bl sub_0806A058 + strh r0, [r5, #0x28] + adds r0, r4, #0 + movs r1, #0x58 + bl sub_0806A058 + strh r0, [r5, #0x2a] + adds r0, r4, #0 + movs r1, #0x56 +_081BFBEC: + bl sub_0806A058 + strh r0, [r5, #0x2c] + b _081BFC58 +_081BFBF4: + adds r2, r6, #0 + adds r2, #0xa6 + adds r0, r4, #0 + movs r1, #7 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_081B1D2C + strb r0, [r5, #7] + adds r0, r4, #0 + movs r1, #0x31 + bl sub_0806A058 + adds r1, r6, #0 + adds r1, #0xa2 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + str r0, [r5, #0x48] + adds r0, r4, #0 + movs r1, #0x23 + bl sub_0806A058 + strb r0, [r5, #9] + adds r0, r4, #0 + movs r1, #0x24 + bl sub_0806A058 + strb r0, [r5, #0xa] + adds r0, r4, #0 + movs r1, #0x25 + bl sub_0806A058 + strb r0, [r5, #0xb] + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0806A058 + strh r0, [r5, #0x30] + b _081BFC58 +_081BFC4A: + adds r0, r4, #0 + movs r1, #0x52 + bl sub_0806A058 + strb r0, [r5, #6] + movs r0, #1 + b _081BFC68 +_081BFC58: + ldr r0, _081BFC74 + ldr r1, [r0] + ldr r0, _081BFC78 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + movs r0, #0 +_081BFC68: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081BFC74: .4byte gUnknown_203CBE8 +_081BFC78: .4byte 0x000040F0 + thumb_func_end sub_081BFA50 + + thumb_func_start sub_081BFC7C +sub_081BFC7C: @ 0x081BFC7C + push {r4, r5, r6, lr} + ldr r6, _081BFCA8 + ldr r2, [r6] + ldr r1, _081BFCAC + adds r0, r2, r1 + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081BFCB0 + movs r0, #0 + movs r1, #0xff + bl sub_081C16D8 + movs r0, #0 + movs r1, #0xff + movs r2, #0 + bl sub_081C1830 + b _081BFD0C + .align 2, 0 +_081BFCA8: .4byte gUnknown_203CBE8 +_081BFCAC: .4byte 0x000040C0 +_081BFCB0: + ldr r1, _081BFD24 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #1 + adds r0, r2, #0 + adds r0, #0x84 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_081C1D40 + ldr r0, [r6] + ldr r5, _081BFD28 + adds r0, r0, r5 + movs r1, #3 + movs r2, #0 + bl sub_081C1AC8 + ldr r0, [r6] + ldr r4, _081BFD2C + adds r0, r0, r4 + movs r1, #1 + movs r2, #0 + bl sub_081C1AC8 + ldr r1, [r6] + adds r1, r1, r4 + movs r0, #1 + bl sub_0800212C + ldr r1, [r6] + adds r1, r1, r5 + movs r0, #2 + bl sub_0800212C + movs r1, #0x80 + lsls r1, r1, #9 + movs r0, #2 + movs r2, #1 + bl sub_08001D1C + movs r0, #0x13 + bl sub_08003774 + movs r0, #0xd + bl sub_08003774 +_081BFD0C: + ldr r0, _081BFD30 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #0 + bne _081BFD34 + movs r0, #0 + movs r1, #0xff + bl sub_081C19A8 + b _081BFD4A + .align 2, 0 +_081BFD24: .4byte 0x000040C6 +_081BFD28: .4byte 0x000020BC +_081BFD2C: .4byte 0x000030BC +_081BFD30: .4byte gUnknown_203CBE8 +_081BFD34: + ldr r2, _081BFD60 + adds r0, r1, r2 + ldrb r0, [r0] + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081BFD4A + movs r0, #0xd + bl sub_0800365C +_081BFD4A: + bl sub_081C1E58 + ldr r0, _081BFD64 + ldr r0, [r0] + adds r0, #0xc + bl sub_081C1B5C + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081BFD60: .4byte 0x000040C0 +_081BFD64: .4byte gUnknown_203CBE8 + thumb_func_end sub_081BFC7C + + thumb_func_start sub_081BFD68 +sub_081BFD68: @ 0x081BFD68 + push {lr} + bl sub_080034D4 + ldr r0, _081BFD7C + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_081BFD7C: .4byte gUnknown_203CBE8 + thumb_func_end sub_081BFD68 + + thumb_func_start sub_081BFD80 +sub_081BFD80: @ 0x081BFD80 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081BFDB0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081BFDB4 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081BFDB0: .4byte gUnknown_3005B60 +_081BFDB4: .4byte sub_081BFDB8 + thumb_func_end sub_081BFD80 + + thumb_func_start sub_081BFDB8 +sub_081BFDB8: @ 0x081BFDB8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BFE20 + ldr r0, _081BFE28 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081BFE20 + ldr r4, _081BFE2C + ldr r0, [r4] + ldr r0, [r0, #4] + bl sub_08000540 + ldr r1, _081BFE30 + ldr r0, [r4] + ldr r2, _081BFE34 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + bl sub_081C40A0 + bl sub_0800668C + bl sub_08008424 + bl sub_080A2F64 + ldr r0, _081BFE38 + ldr r1, _081BFE3C + movs r2, #0x80 + lsls r2, r2, #1 + bl m4aMPlayVolumeControl + ldr r0, _081BFE40 + ldr r0, [r0] + cmp r0, #0 + bne _081BFE16 + movs r0, #0 + bl sub_0806EF00 +_081BFE16: + bl sub_081BFD68 + adds r0, r5, #0 + bl sub_080A8964 +_081BFE20: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081BFE28: .4byte gUnknown_2037C74 +_081BFE2C: .4byte gUnknown_203CBE8 +_081BFE30: .4byte gUnknown_203CBEC +_081BFE34: .4byte 0x000040BE +_081BFE38: .4byte gUnknown_30074D0 +_081BFE3C: .4byte 0x0000FFFF +_081BFE40: .4byte gUnknown_2024178 + thumb_func_end sub_081BFDB8 + + thumb_func_start sub_081BFE44 +sub_081BFE44: @ 0x081BFE44 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081BFF32 + ldr r0, _081BFE7C + ldrb r1, [r0, #7] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _081BFF32 + ldr r5, _081BFE80 + ldrh r1, [r5, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081BFE84 + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r4, #0 + bl sub_081BFF38 + b _081BFF32 + .align 2, 0 +_081BFE7C: .4byte gUnknown_2037C74 +_081BFE80: .4byte gUnknown_3002360 +_081BFE84: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081BFE96 + adds r0, r4, #0 + movs r1, #1 + bl sub_081BFF38 + b _081BFF32 +_081BFE96: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081BFEAA + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BFEB6 +_081BFEAA: + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r4, #0 + bl sub_081C03C0 + b _081BFF32 +_081BFEB6: + ldrh r1, [r5, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081BFECC + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081BFED6 +_081BFECC: + adds r0, r4, #0 + movs r1, #1 + bl sub_081C03C0 + b _081BFF32 +_081BFED6: + ldrh r1, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081BFF1A + ldr r0, _081BFF04 + ldr r0, [r0] + ldr r1, _081BFF08 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081BFF32 + cmp r0, #0 + bne _081BFF0C + bl sub_081C40F8 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081BFD80 + b _081BFF32 + .align 2, 0 +_081BFF04: .4byte gUnknown_203CBE8 +_081BFF08: .4byte 0x000040C0 +_081BFF0C: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081C077C + b _081BFF32 +_081BFF1A: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081BFF32 + bl sub_081C40F8 + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081BFD80 +_081BFF32: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081BFE44 + + thumb_func_start sub_081BFF38 +sub_081BFF38: @ 0x081BFF38 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + adds r4, r5, #0 + ldr r1, _081BFF7C + ldr r3, [r1] + ldr r2, _081BFF80 + adds r0, r3, r2 + ldrb r0, [r0] + adds r6, r1, #0 + cmp r0, #0 + bne _081C0022 + ldr r1, _081BFF84 + adds r0, r3, r1 + ldrb r2, [r0] + cmp r2, #1 + bne _081BFFAC + adds r1, #3 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081BFF88 + lsls r1, r5, #0x18 + asrs r1, r1, #0x18 + movs r4, #2 + eors r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r0, r0, #0x1f + ands r4, r0 + b _081BFF90 + .align 2, 0 +_081BFF7C: .4byte gUnknown_203CBE8 +_081BFF80: .4byte 0x000040C3 +_081BFF84: .4byte 0x000040BD +_081BFF88: + movs r4, #3 + cmp r5, #1 + bne _081BFF90 + movs r4, #1 +_081BFF90: + ldr r2, [r6] + ldr r0, [r2] + ldr r3, _081BFFA8 + adds r1, r2, r3 + ldrb r1, [r1] + adds r3, #1 + adds r2, r2, r3 + ldrb r2, [r2] + adds r3, r4, #0 + bl sub_080D19EC + b _081BFFCA + .align 2, 0 +_081BFFA8: .4byte 0x000040BE +_081BFFAC: + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081BFFC2 + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + bl sub_081C02E8 + b _081BFFCA +_081BFFC2: + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + bl sub_081C022C +_081BFFCA: + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _081C0022 + movs r0, #5 + bl sub_080A306C + ldr r5, _081C0028 + ldr r0, [r5] + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #0 + beq _081C0008 + movs r0, #2 + movs r1, #1 + bl sub_081C3A28 + movs r0, #0xd + bl sub_08003774 + movs r0, #0 + bl sub_08199654 + movs r0, #0 + movs r1, #2 + bl sub_081C19A8 +_081C0008: + ldr r0, [r5] + ldr r1, _081C002C + adds r0, r0, r1 + movs r2, #0 + strb r4, [r0] + ldr r1, _081C0030 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r2, [r0, #8] + ldr r1, _081C0034 + str r1, [r0] +_081C0022: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C0028: .4byte gUnknown_203CBE8 +_081C002C: .4byte 0x000040BE +_081C0030: .4byte gUnknown_3005B60 +_081C0034: .4byte sub_081C0038 + thumb_func_end sub_081BFF38 + + thumb_func_start sub_081C0038 +sub_081C0038: @ 0x081C0038 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r4, r1, #3 + ldr r6, _081C005C + adds r5, r4, r6 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0xc + bls _081C0052 + b _081C01F0 +_081C0052: + lsls r0, r0, #2 + ldr r1, _081C0060 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C005C: .4byte gUnknown_3005B68 +_081C0060: .4byte _081C0064 +_081C0064: @ jump table + .4byte _081C0098 @ case 0 + .4byte _081C009E @ case 1 + .4byte _081C00B4 @ case 2 + .4byte _081C00DC @ case 3 + .4byte _081C00FC @ case 4 + .4byte _081C0114 @ case 5 + .4byte _081C0124 @ case 6 + .4byte _081C0134 @ case 7 + .4byte _081C015C @ case 8 + .4byte _081C01A0 @ case 9 + .4byte _081C01A6 @ case 10 + .4byte _081C01AC @ case 11 + .4byte _081C01C8 @ case 12 +_081C0098: + bl sub_080A2F64 + b _081C0220 +_081C009E: + bl sub_081C40A0 + ldr r0, _081C00AC + ldr r0, [r0] + ldr r1, _081C00B0 + b _081C00BA + .align 2, 0 +_081C00AC: .4byte gUnknown_203CBE8 +_081C00B0: .4byte 0x000040D3 +_081C00B4: + ldr r0, _081C00D0 + ldr r0, [r0] + ldr r1, _081C00D4 +_081C00BA: + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081C00D8 + adds r0, r0, r1 + bl sub_08007338 + b _081C0220 + .align 2, 0 +_081C00D0: .4byte gUnknown_203CBE8 +_081C00D4: .4byte 0x000040D4 +_081C00D8: .4byte gUnknown_20205AC +_081C00DC: + ldr r4, _081C00F4 + ldr r0, [r4] + adds r0, #0xc + bl sub_081BF9F8 + ldr r0, [r4] + ldr r1, _081C00F8 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081C0220 + .align 2, 0 +_081C00F4: .4byte gUnknown_203CBE8 +_081C00F8: .4byte 0x000040F0 +_081C00FC: + ldr r0, _081C0110 + ldr r0, [r0] + adds r0, #0xc + bl sub_081BFA50 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C010E + b _081C0226 +_081C010E: + b _081C0220 + .align 2, 0 +_081C0110: .4byte gUnknown_203CBE8 +_081C0114: + ldr r0, _081C0120 + ldr r0, [r0] + adds r0, #0xc + bl sub_081C41E8 + b _081C0220 + .align 2, 0 +_081C0120: .4byte gUnknown_203CBE8 +_081C0124: + ldr r0, _081C0130 + ldr r0, [r0] + adds r0, #0xc + bl sub_081C4210 + b _081C0220 + .align 2, 0 +_081C0130: .4byte gUnknown_203CBE8 +_081C0134: + ldr r4, _081C0158 + ldr r0, [r4] + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #0 + beq _081C014A + movs r1, #2 + rsbs r1, r1, #0 + movs r0, #0xa + bl sub_081C19A8 +_081C014A: + ldr r0, [r4] + adds r0, #0xc + bl sub_081C1B5C + movs r0, #0 + strh r0, [r5, #2] + b _081C0220 + .align 2, 0 +_081C0158: .4byte gUnknown_203CBE8 +_081C015C: + ldr r4, _081C0194 + ldr r0, [r4] + adds r0, #0xc + adds r1, r5, #2 + bl sub_081C3E18 + ldr r1, [r4] + ldr r2, _081C0198 + adds r1, r1, r2 + strb r0, [r1] + ldr r0, [r4] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _081C0226 + ldr r2, _081C019C + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + strh r1, [r0, #0x32] + bl sub_081C0758 + movs r0, #0 + strh r0, [r5, #2] + b _081C0220 + .align 2, 0 +_081C0194: .4byte gUnknown_203CBE8 +_081C0198: .4byte 0x000040D3 +_081C019C: .4byte gUnknown_20205AC +_081C01A0: + bl sub_081C3AA4 + b _081C0220 +_081C01A6: + bl sub_081C1F1C + b _081C0220 +_081C01AC: + ldr r0, _081C01C0 + ldr r0, [r0] + ldr r1, _081C01C4 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081C2690 + bl sub_081C1E58 + b _081C0220 + .align 2, 0 +_081C01C0: .4byte gUnknown_203CBE8 +_081C01C4: .4byte 0x000040C0 +_081C01C8: + ldr r2, _081C01E4 + ldr r0, _081C01E8 + ldr r0, [r0] + ldr r1, _081C01EC + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0 + strh r1, [r0, #0x32] + b _081C0220 + .align 2, 0 +_081C01E4: .4byte gUnknown_20205AC +_081C01E8: .4byte gUnknown_203CBE8 +_081C01EC: .4byte 0x000040D3 +_081C01F0: + bl sub_081221F8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C0226 + ldr r0, _081C0218 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081C0226 + strh r0, [r5] + adds r0, r6, #0 + subs r0, #8 + adds r0, r4, r0 + ldr r1, _081C021C + str r1, [r0] + b _081C0226 + .align 2, 0 +_081C0218: .4byte sub_081C1A24 +_081C021C: .4byte sub_081BFE44 +_081C0220: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_081C0226: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C0038 + + thumb_func_start sub_081C022C +sub_081C022C: @ 0x081C022C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r1, _081C0284 + ldr r2, [r1] + ldr r7, [r2] + ldr r3, _081C0288 + adds r0, r2, r3 + ldrb r0, [r0] + adds r5, r1, #0 + cmp r0, #0 + bne _081C0294 + lsls r0, r4, #0x18 + asrs r3, r0, #0x18 + movs r1, #1 + rsbs r1, r1, #0 + adds r6, r0, #0 + cmp r3, r1 + bne _081C025C + ldr r1, _081C028C + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081C02BC +_081C025C: + asrs r0, r6, #0x18 + cmp r0, #1 + bne _081C0274 + ldr r0, [r5] + ldr r2, _081C028C + adds r1, r0, r2 + ldr r3, _081C0290 + adds r0, r0, r3 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bhs _081C02BC +_081C0274: + ldr r0, [r5] + ldr r1, _081C028C + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r0, r4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + b _081C02E2 + .align 2, 0 +_081C0284: .4byte gUnknown_203CBE8 +_081C0288: .4byte 0x000040C0 +_081C028C: .4byte 0x000040BE +_081C0290: .4byte 0x000040BF +_081C0294: + ldr r3, _081C02C4 + adds r0, r2, r3 + ldrb r5, [r0] + lsls r6, r4, #0x18 +_081C029C: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + asrs r1, r6, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + asrs r4, r0, #0x18 + cmp r4, #0 + blt _081C02BC + ldr r0, _081C02C8 + ldr r0, [r0] + ldr r1, _081C02CC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r4, r0 + ble _081C02D0 +_081C02BC: + movs r0, #1 + rsbs r0, r0, #0 + b _081C02E2 + .align 2, 0 +_081C02C4: .4byte 0x000040BE +_081C02C8: .4byte gUnknown_203CBE8 +_081C02CC: .4byte 0x000040BF +_081C02D0: + movs r0, #0x64 + muls r0, r4, r0 + adds r0, r7, r0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081C029C + adds r0, r4, #0 +_081C02E2: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081C022C + + thumb_func_start sub_081C02E8 +sub_081C02E8: @ 0x081C02E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + ldr r6, _081C0368 + ldr r0, [r6] + ldr r1, [r0] + mov r8, r1 + movs r5, #0 + movs r2, #0 + ldr r3, _081C036C + movs r1, #0 + ldrsb r1, [r3, r1] + ldr r4, _081C0370 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r1, r0 + beq _081C0330 + adds r7, r3, #0 + adds r3, r4, #0 +_081C0314: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #5 + bhi _081C0330 + adds r0, r2, r7 + movs r1, #0 + ldrsb r1, [r0, r1] + ldr r0, [r6] + adds r0, r0, r3 + ldrb r0, [r0] + cmp r1, r0 + bne _081C0314 + adds r5, r2, #0 +_081C0330: + mov r0, ip + lsls r6, r0, #0x18 + ldr r7, _081C036C +_081C0336: + lsls r0, r5, #0x18 + asrs r0, r0, #0x18 + asrs r1, r6, #0x18 + adds r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r5, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #5 + bhi _081C0374 + asrs r0, r1, #0x18 + adds r0, r0, r7 + movs r4, #0 + ldrsb r4, [r0, r4] + movs r0, #0x64 + muls r0, r4, r0 + add r0, r8 + bl sub_081C0384 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C0336 + adds r0, r4, #0 + b _081C0378 + .align 2, 0 +_081C0368: .4byte gUnknown_203CBE8 +_081C036C: .4byte gUnknown_85ED064 +_081C0370: .4byte 0x000040BE +_081C0374: + movs r0, #1 + rsbs r0, r0, #0 +_081C0378: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C02E8 + + thumb_func_start sub_081C0384 +sub_081C0384: @ 0x081C0384 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xb + bl sub_0806A058 + cmp r0, #0 + beq _081C03B8 + ldr r0, _081C03B0 + ldr r0, [r0] + ldr r1, _081C03B4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081C03AC + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0806A058 + cmp r0, #0 + bne _081C03B8 +_081C03AC: + movs r0, #1 + b _081C03BA + .align 2, 0 +_081C03B0: .4byte gUnknown_203CBE8 +_081C03B4: .4byte 0x000040BE +_081C03B8: + movs r0, #0 +_081C03BA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C0384 + + thumb_func_start sub_081C03C0 +sub_081C03C0: @ 0x081C03C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + str r6, [sp] + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + str r3, [sp, #4] + ldr r0, _081C0468 + mov r8, r0 + ldr r2, [r0] + adds r1, r2, #0 + adds r1, #0x70 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r7, r0, #3 + ldr r0, _081C046C + mov sb, r0 + adds r0, r7, r0 + str r0, [sp, #8] + ldrb r1, [r1, #4] + mov sl, r1 + cmp r1, #0 + bne _081C04A2 + lsls r0, r3, #0x18 + asrs r5, r0, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + bne _081C0414 + ldr r1, _081C0470 + adds r0, r2, r1 + ldr r3, _081C0474 + adds r1, r2, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _081C04A2 +_081C0414: + cmp r5, #1 + bne _081C0428 + ldr r1, _081C0470 + adds r0, r2, r1 + ldr r3, _081C0478 + adds r1, r2, r3 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _081C04A2 +_081C0428: + movs r0, #5 + bl sub_080A306C + mov r1, r8 + ldr r0, [r1] + ldr r4, _081C0470 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_081C251C + mov r2, r8 + ldr r1, [r2] + adds r1, r1, r4 + ldrb r0, [r1] + ldr r3, [sp, #4] + adds r0, r0, r3 + strb r0, [r1] + mov r1, sl + ldr r0, [sp, #8] + strh r1, [r0] + cmp r5, #1 + bne _081C0480 + ldr r1, _081C047C + mov r0, sb + subs r0, #8 + adds r0, r7, r0 + ldr r2, [r0] + adds r0, r6, #0 + bl sub_080A8A44 + b _081C0490 + .align 2, 0 +_081C0468: .4byte gUnknown_203CBE8 +_081C046C: .4byte gUnknown_3005B68 +_081C0470: .4byte 0x000040C0 +_081C0474: .4byte 0x000040C1 +_081C0478: .4byte 0x000040C2 +_081C047C: .4byte sub_081C04C0 +_081C0480: + ldr r1, _081C04B4 + mov r0, sb + subs r0, #8 + adds r0, r7, r0 + ldr r2, [r0] + ldr r0, [sp] + bl sub_080A8A44 +_081C0490: + ldr r0, _081C04B8 + ldr r0, [r0] + ldr r2, _081C04BC + adds r0, r0, r2 + ldrb r0, [r0] + bl sub_081C26D8 + bl sub_081C3A70 +_081C04A2: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C04B4: .4byte sub_081C05F8 +_081C04B8: .4byte gUnknown_203CBE8 +_081C04BC: .4byte 0x000040C0 + thumb_func_end sub_081C03C0 + + thumb_func_start sub_081C04C0 +sub_081C04C0: @ 0x081C04C0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C0508 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081C055E + ldr r0, _081C050C + ldr r0, [r0] + ldr r3, _081C0510 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0 + bne _081C0514 + movs r0, #1 + strh r0, [r4, #2] + movs r0, #1 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #2 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #1 + bl sub_08199654 + b _081C0532 + .align 2, 0 +_081C0508: .4byte gUnknown_3005B68 +_081C050C: .4byte gUnknown_203CBE8 +_081C0510: .4byte 0x000040C9 +_081C0514: + movs r0, #2 + strh r0, [r4, #2] + movs r0, #2 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #1 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #2 + bl sub_08199654 +_081C0532: + ldrb r0, [r4, #2] + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + ldrb r0, [r4, #2] + ldr r1, _081C058C + ldr r1, [r1] + ldr r3, _081C0590 + adds r2, r1, r3 + ldrb r2, [r2] + lsls r2, r2, #0xc + adds r2, #0xbc + adds r1, r1, r2 + bl sub_0800212C + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 +_081C055E: + ldrb r0, [r4, #2] + movs r1, #0x80 + lsls r1, r1, #6 + movs r2, #1 + bl sub_08001D1C + ldrh r0, [r4] + adds r0, #0x20 + strh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _081C0586 + ldr r0, _081C0594 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081C0598 + str r0, [r1] +_081C0586: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C058C: .4byte gUnknown_203CBE8 +_081C0590: .4byte 0x000040C0 +_081C0594: .4byte gUnknown_3005B60 +_081C0598: .4byte sub_081C059C + thumb_func_end sub_081C04C0 + + thumb_func_start sub_081C059C +sub_081C059C: @ 0x081C059C + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #3 + ldr r0, _081C05E8 + adds r2, r2, r0 + ldr r5, _081C05EC + ldr r3, [r5] + ldr r0, _081C05F0 + adds r3, r3, r0 + ldrb r0, [r3] + movs r1, #1 + eors r0, r1 + movs r1, #0 + strb r0, [r3] + strh r1, [r2, #2] + strh r1, [r2] + bl sub_081C14D4 + ldr r0, [r5] + ldr r1, _081C05F4 + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081C23D4 + bl sub_081C3AA4 + bl sub_081C0758 + adds r0, r4, #0 + bl sub_080A8A78 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C05E8: .4byte gUnknown_3005B68 +_081C05EC: .4byte gUnknown_203CBE8 +_081C05F0: .4byte 0x000040C9 +_081C05F4: .4byte 0x000040C0 + thumb_func_end sub_081C059C + + thumb_func_start sub_081C05F8 +sub_081C05F8: @ 0x081C05F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C0624 + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081C0640 + ldr r0, _081C0628 + ldr r0, [r0] + ldr r1, _081C062C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081C0630 + movs r0, #2 + b _081C0632 + .align 2, 0 +_081C0624: .4byte gUnknown_3005B68 +_081C0628: .4byte gUnknown_203CBE8 +_081C062C: .4byte 0x000040C9 +_081C0630: + movs r0, #1 +_081C0632: + strh r0, [r4, #2] + ldrb r0, [r4, #2] + movs r1, #0x80 + lsls r1, r1, #9 + movs r2, #0 + bl sub_08001D1C +_081C0640: + ldrb r0, [r4, #2] + movs r1, #0x80 + lsls r1, r1, #6 + movs r2, #2 + bl sub_08001D1C + ldrh r0, [r4] + adds r0, #0x20 + strh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _081C0668 + ldr r0, _081C0670 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081C0674 + str r0, [r1] +_081C0668: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C0670: .4byte gUnknown_3005B60 +_081C0674: .4byte sub_081C0678 + thumb_func_end sub_081C05F8 + + thumb_func_start sub_081C0678 +sub_081C0678: @ 0x081C0678 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C06B4 + adds r4, r0, r1 + ldr r0, _081C06B8 + ldr r0, [r0] + ldr r1, _081C06BC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081C06C0 + movs r0, #1 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #2 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #2 + bl sub_08199654 + b _081C06DA + .align 2, 0 +_081C06B4: .4byte gUnknown_3005B68 +_081C06B8: .4byte gUnknown_203CBE8 +_081C06BC: .4byte 0x000040C9 +_081C06C0: + movs r0, #2 + movs r1, #7 + movs r2, #1 + bl sub_08001B70 + movs r0, #1 + movs r1, #7 + movs r2, #2 + bl sub_08001B70 + movs r0, #1 + bl sub_08199654 +_081C06DA: + ldr r6, _081C0748 + ldr r2, [r6] + ldr r7, _081C074C + adds r1, r2, r7 + ldrb r0, [r1] + cmp r0, #1 + bls _081C0704 + ldrb r0, [r4, #2] + ldrb r1, [r1] + lsls r1, r1, #0xc + ldr r3, _081C0750 + adds r1, r1, r3 + adds r1, r2, r1 + bl sub_0800212C + ldrb r0, [r4, #2] + movs r1, #0x80 + lsls r1, r1, #9 + movs r2, #0 + bl sub_08001D1C +_081C0704: + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r2, [r6] + ldr r0, _081C0754 + adds r2, r2, r0 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + movs r1, #0 + strb r0, [r2] + strh r1, [r4, #2] + strh r1, [r4] + bl sub_081C14D4 + ldr r0, [r6] + adds r0, r0, r7 + ldrb r0, [r0] + bl sub_081C23D4 + bl sub_081C3AA4 + bl sub_081C0758 + adds r0, r5, #0 + bl sub_080A8A78 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C0748: .4byte gUnknown_203CBE8 +_081C074C: .4byte 0x000040C0 +_081C0750: .4byte 0xFFFFF0BC +_081C0754: .4byte 0x000040C9 + thumb_func_end sub_081C0678 + + thumb_func_start sub_081C0758 +sub_081C0758: @ 0x081C0758 + push {lr} + ldr r0, _081C0774 + ldr r1, [r0] + ldr r2, _081C0778 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + bne _081C0770 + adds r0, r1, #0 + adds r0, #0xc + bl sub_081C1C00 +_081C0770: + pop {r0} + bx r0 + .align 2, 0 +_081C0774: .4byte gUnknown_203CBE8 +_081C0778: .4byte 0x000040C0 + thumb_func_end sub_081C0758 + + thumb_func_start sub_081C077C +sub_081C077C: @ 0x081C077C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _081C0854 + ldr r0, [r5] + ldr r2, _081C0858 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0] + ldr r1, [r5] + adds r2, r1, r2 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r6, [r1] + mov r8, r6 + movs r0, #0x13 + bl sub_08003774 + ldr r2, _081C085C + ldr r0, [r5] + ldr r1, _081C0860 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C07CA + movs r0, #0xd + bl sub_08003774 +_081C07CA: + movs r4, #3 + rsbs r4, r4, #0 + movs r0, #9 + adds r1, r4, #0 + bl sub_081C16D8 + movs r0, #9 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081C1830 + ldr r0, [r5] + ldr r1, _081C0864 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081C07F8 + movs r0, #5 + bl sub_08003774 + movs r0, #6 + bl sub_0800365C +_081C07F8: + ldr r0, [r5] + ldr r1, _081C0868 + adds r0, r0, r1 + movs r1, #3 + movs r2, #0 + bl sub_081C1AC8 + ldr r0, [r5] + ldr r1, _081C086C + adds r0, r0, r1 + movs r1, #1 + movs r2, #0 + bl sub_081C1AC8 + mov r0, r8 + bl sub_081C36D4 + bl sub_081C377C + bl sub_081C3D14 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #8 + bl sub_081C4300 + ldr r1, _081C0870 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C0874 + str r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C0854: .4byte gUnknown_203CBE8 +_081C0858: .4byte 0x000040C6 +_081C085C: .4byte gUnknown_20205AC +_081C0860: .4byte 0x000040D5 +_081C0864: .4byte 0x000040C8 +_081C0868: .4byte 0x000020BC +_081C086C: .4byte 0x000030BC +_081C0870: .4byte gUnknown_3005B60 +_081C0874: .4byte sub_081C0878 + thumb_func_end sub_081C077C + + thumb_func_start sub_081C0878 +sub_081C0878: @ 0x081C0878 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C08BC + adds r4, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C096E + ldr r0, _081C08C0 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081C08CC + movs r0, #4 + strh r0, [r4] + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _081C08C4 + ldr r2, [r0] + ldr r0, _081C08C8 + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_081C09A4 + b _081C096E + .align 2, 0 +_081C08BC: .4byte gUnknown_3005B68 +_081C08C0: .4byte gUnknown_3002360 +_081C08C4: .4byte gUnknown_203CBE8 +_081C08C8: .4byte 0x000040C6 +_081C08CC: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C08F4 + movs r0, #4 + strh r0, [r4] + ldr r0, _081C08EC + ldr r2, [r0] + ldr r0, _081C08F0 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C09A4 + b _081C096E + .align 2, 0 +_081C08EC: .4byte gUnknown_203CBE8 +_081C08F0: .4byte 0x000040C6 +_081C08F4: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C095A + ldr r0, _081C092C + ldr r1, [r0] + ldr r2, _081C0930 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #1 + beq _081C091C + subs r2, #4 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C0934 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + bne _081C0938 +_081C091C: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081C0B28 + b _081C096E + .align 2, 0 +_081C092C: .4byte gUnknown_203CBE8 +_081C0930: .4byte 0x000040C8 +_081C0934: .4byte 0x00FFFFFF +_081C0938: + bl sub_081C0974 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C0952 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081C0BD0 + b _081C096E +_081C0952: + movs r0, #0x20 + bl sub_080A306C + b _081C096E +_081C095A: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C096E + movs r0, #5 + bl sub_080A306C + adds r0, r6, #0 + bl sub_081C0B28 +_081C096E: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C0878 + + thumb_func_start sub_081C0974 +sub_081C0974: @ 0x081C0974 + push {lr} + movs r1, #1 + ldr r0, _081C0990 + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0x84 +_081C0980: + lsls r0, r1, #1 + adds r0, r2, r0 + ldrh r0, [r0] + cmp r0, #0 + beq _081C0994 + movs r0, #1 + b _081C09A0 + .align 2, 0 +_081C0990: .4byte gUnknown_203CBE8 +_081C0994: + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _081C0980 + movs r0, #0 +_081C09A0: + pop {r1} + bx r1 + thumb_func_end sub_081C0974 + + thumb_func_start sub_081C09A4 +sub_081C09A4: @ 0x081C09A4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r4, r1, #0 + mov r8, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + mov r0, r8 + ldrb r6, [r0] + movs r2, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + mov ip, r4 + movs r1, #0 + ldrsh r4, [r7, r1] + ldrb r0, [r7] + lsls r3, r0, #0x18 +_081C09D0: + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + add r0, ip + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, r4 + ble _081C09E4 + movs r6, #0 + b _081C09EA +_081C09E4: + cmp r0, #0 + bge _081C09EA + lsrs r6, r3, #0x18 +_081C09EA: + lsls r0, r6, #0x18 + asrs r1, r0, #0x18 + mov sb, r0 + cmp r1, #4 + bne _081C09F6 + b _081C0B00 +_081C09F6: + ldr r0, _081C0AEC + ldr r0, [r0] + lsls r1, r1, #1 + adds r0, #0x84 + adds r0, r0, r1 + ldrh r5, [r0] + cmp r5, #0 + bne _081C0A16 + lsls r0, r2, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r2, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #3 + ble _081C09D0 +_081C0A16: + adds r0, r5, #0 + bl sub_081C1D40 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + adds r0, r5, #0 + bl sub_081C36D4 + mov r1, r8 + ldrb r0, [r1] + cmp r0, #4 + bne _081C0A44 + ldr r0, _081C0AEC + ldr r0, [r0] + ldr r1, _081C0AF0 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _081C0A4C +_081C0A44: + movs r1, #2 + ldrsh r0, [r7, r1] + cmp r0, #1 + bne _081C0A92 +_081C0A4C: + movs r0, #0x13 + bl sub_08003774 + ldr r2, _081C0AF4 + ldr r0, _081C0AEC + ldr r0, [r0] + ldr r1, _081C0AF8 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C0A76 + movs r0, #0xd + bl sub_08003774 +_081C0A76: + movs r0, #0 + bl sub_08199654 + movs r4, #3 + rsbs r4, r4, #0 + movs r0, #9 + adds r1, r4, #0 + bl sub_081C16D8 + movs r0, #9 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081C1830 +_081C0A92: + mov r1, r8 + ldrb r0, [r1] + cmp r0, #4 + beq _081C0AD4 + mov r1, sb + asrs r0, r1, #0x18 + cmp r0, #4 + bne _081C0AD4 + ldr r0, _081C0AEC + ldr r0, [r0] + ldr r1, _081C0AF0 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + bne _081C0AD4 + movs r0, #0xe + bl sub_08003774 + movs r0, #0xf + bl sub_08003774 + movs r0, #0 + bl sub_08199654 + movs r0, #0 + movs r1, #3 + bl sub_081C16D8 + movs r0, #0 + movs r1, #3 + movs r2, #0 + bl sub_081C1830 +_081C0AD4: + mov r0, r8 + strb r6, [r0] + ldr r0, _081C0AEC + ldr r0, [r0] + ldr r1, _081C0AFC + adds r0, r0, r1 + cmp r8, r0 + bne _081C0B14 + movs r0, #8 + bl sub_081C4520 + b _081C0B1A + .align 2, 0 +_081C0AEC: .4byte gUnknown_203CBE8 +_081C0AF0: .4byte 0x000040C4 +_081C0AF4: .4byte gUnknown_20205AC +_081C0AF8: .4byte 0x000040D5 +_081C0AFC: .4byte 0x000040C6 +_081C0B00: + ldr r0, _081C0B0C + ldr r0, [r0] + ldr r1, _081C0B10 + adds r0, r0, r1 + ldrh r5, [r0] + b _081C0A16 + .align 2, 0 +_081C0B0C: .4byte gUnknown_203CBE8 +_081C0B10: .4byte 0x000040C4 +_081C0B14: + movs r0, #0x12 + bl sub_081C4520 +_081C0B1A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C09A4 + + thumb_func_start sub_081C0B28 +sub_081C0B28: @ 0x081C0B28 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r0, #8 + bl sub_081C4468 + movs r0, #6 + bl sub_08003774 + movs r0, #5 + bl sub_0800365C + movs r0, #0 + bl sub_081C36D4 + ldr r4, _081C0BB8 + ldr r0, [r4] + ldr r1, _081C0BBC + adds r0, r0, r1 + movs r1, #3 + movs r2, #1 + bl sub_081C1AC8 + ldr r0, [r4] + ldr r1, _081C0BC0 + adds r0, r0, r1 + movs r1, #1 + movs r2, #1 + bl sub_081C1AC8 + bl sub_081C3888 + ldr r0, [r4] + ldr r1, _081C0BC4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #4 + beq _081C0B92 + movs r0, #0xe + bl sub_08003774 + movs r0, #0xf + bl sub_08003774 + movs r0, #0 + movs r1, #3 + bl sub_081C16D8 + movs r0, #0 + movs r1, #3 + movs r2, #0 + bl sub_081C1830 +_081C0B92: + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + ldr r0, _081C0BC8 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081C0BCC + str r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C0BB8: .4byte gUnknown_203CBE8 +_081C0BBC: .4byte 0x000020BC +_081C0BC0: .4byte 0x000030BC +_081C0BC4: .4byte 0x000040C6 +_081C0BC8: .4byte gUnknown_3005B60 +_081C0BCC: .4byte sub_081BFE44 + thumb_func_end sub_081C0B28 + + thumb_func_start sub_081C0BD0 +sub_081C0BD0: @ 0x081C0BD0 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081C0C08 + ldr r0, [r0] + ldr r2, _081C0C0C + adds r1, r0, r2 + ldrb r1, [r1] + adds r2, #1 + adds r0, r0, r2 + strb r1, [r0] + movs r0, #1 + bl sub_081C448C + movs r0, #0x12 + bl sub_081C4300 + ldr r1, _081C0C10 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C0C14 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C0C08: .4byte gUnknown_203CBE8 +_081C0C0C: .4byte 0x000040C6 +_081C0C10: .4byte gUnknown_3005B60 +_081C0C14: .4byte sub_081C0C18 + thumb_func_end sub_081C0BD0 + + thumb_func_start sub_081C0C18 +sub_081C0C18: @ 0x081C0C18 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C0C5C + adds r4, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C0CDE + ldr r0, _081C0C60 + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081C0C6C + movs r0, #3 + strh r0, [r4] + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _081C0C64 + ldr r2, [r0] + ldr r0, _081C0C68 + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_081C09A4 + b _081C0CDE + .align 2, 0 +_081C0C5C: .4byte gUnknown_3005B68 +_081C0C60: .4byte gUnknown_3002360 +_081C0C64: .4byte gUnknown_203CBE8 +_081C0C68: .4byte 0x000040C7 +_081C0C6C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C0C94 + movs r0, #3 + strh r0, [r4] + ldr r0, _081C0C8C + ldr r2, [r0] + ldr r0, _081C0C90 + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C09A4 + b _081C0CDE + .align 2, 0 +_081C0C8C: .4byte gUnknown_203CBE8 +_081C0C90: .4byte 0x000040C7 +_081C0C94: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C0CCE + ldr r0, _081C0CBC + ldr r0, [r0] + ldr r2, _081C0CC0 + adds r1, r0, r2 + adds r2, #1 + adds r0, r0, r2 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _081C0CC4 + adds r0, r5, #0 + movs r1, #0 + bl sub_081C0CE4 + b _081C0CDE + .align 2, 0 +_081C0CBC: .4byte gUnknown_203CBE8 +_081C0CC0: .4byte 0x000040C6 +_081C0CC4: + adds r0, r5, #0 + movs r1, #1 + bl sub_081C0CE4 + b _081C0CDE +_081C0CCE: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C0CDE + adds r0, r6, #0 + movs r1, #0 + bl sub_081C0CE4 +_081C0CDE: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C0C18 + + thumb_func_start sub_081C0CE4 +sub_081C0CE4: @ 0x081C0CE4 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C448C + movs r0, #0x12 + bl sub_081C4468 + cmp r4, #1 + bne _081C0D98 + ldr r0, _081C0D34 + ldr r3, [r0] + ldr r1, _081C0D38 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081C0D44 + ldr r0, [r3] + ldr r2, _081C0D3C + adds r1, r3, r2 + ldrb r2, [r1] + movs r1, #0x64 + muls r1, r2, r1 + adds r0, r0, r1 + ldr r4, _081C0D40 + adds r1, r3, r4 + ldrb r1, [r1] + adds r4, #1 + adds r2, r3, r4 + ldrb r2, [r2] + bl sub_081C0DF0 + b _081C0D64 + .align 2, 0 +_081C0D34: .4byte gUnknown_203CBE8 +_081C0D38: .4byte 0x000040BD +_081C0D3C: .4byte 0x000040BE +_081C0D40: .4byte 0x000040C6 +_081C0D44: + ldr r0, [r3] + ldr r2, _081C0DD8 + adds r1, r3, r2 + ldrb r2, [r1] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r4, _081C0DDC + adds r1, r3, r4 + ldrb r1, [r1] + adds r4, #1 + adds r2, r3, r4 + ldrb r2, [r2] + bl sub_081C0F20 +_081C0D64: + ldr r5, _081C0DE0 + ldr r0, [r5] + adds r0, #0xc + bl sub_081BF9F8 + ldr r1, [r5] + ldr r6, _081C0DDC + adds r0, r1, r6 + ldrb r0, [r0] + ldr r4, _081C0DE4 + adds r1, r1, r4 + ldrb r1, [r1] + bl sub_081C38C4 + ldr r1, [r5] + adds r0, r1, r6 + ldrb r0, [r0] + adds r1, r1, r4 + ldrb r1, [r1] + bl sub_081C3D8C + ldr r0, [r5] + adds r4, r0, r4 + ldrb r1, [r4] + adds r0, r0, r6 + strb r1, [r0] +_081C0D98: + ldr r0, _081C0DE0 + ldr r1, [r0] + ldr r2, _081C0DDC + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r4, [r1] + adds r0, r4, #0 + bl sub_081C36D4 + adds r0, r4, #0 + bl sub_081C1D40 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + ldr r1, _081C0DE8 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C0DEC + str r1, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C0DD8: .4byte 0x000040BE +_081C0DDC: .4byte 0x000040C6 +_081C0DE0: .4byte gUnknown_203CBE8 +_081C0DE4: .4byte 0x000040C7 +_081C0DE8: .4byte gUnknown_3005B60 +_081C0DEC: .4byte sub_081C0878 + thumb_func_end sub_081C0CE4 + + thumb_func_start sub_081C0DF0 +sub_081C0DF0: @ 0x081C0DF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _081C0F18 + ldr r2, [r0] + lsls r0, r4, #1 + mov sl, r0 + adds r1, r2, #0 + adds r1, #0x84 + adds r0, r1, r0 + str r0, [sp, #8] + ldrh r0, [r0] + mov r3, sp + adds r3, #2 + str r3, [sp, #0x1c] + strh r0, [r3] + lsls r0, r6, #1 + mov sb, r0 + add r1, sb + str r1, [sp, #0xc] + ldrh r1, [r1] + mov r0, sp + strh r1, [r0] + adds r1, r2, #0 + adds r1, #0x8c + adds r3, r1, r4 + str r3, [sp, #0x10] + ldrb r0, [r3] + mov r3, sp + adds r3, #5 + str r3, [sp, #0x24] + strb r0, [r3] + adds r1, r1, r6 + str r1, [sp, #0x14] + ldrb r0, [r1] + mov r1, sp + adds r1, #4 + str r1, [sp, #0x20] + strb r0, [r1] + adds r2, #0xa4 + str r2, [sp, #0x18] + ldrb r0, [r2] + mov r5, sp + adds r5, #6 + strb r0, [r5] + ldr r1, _081C0F1C + adds r0, r4, r1 + ldrb r0, [r0] + mov r8, r0 + ldrb r0, [r5] + adds r2, r0, #0 + mov r3, r8 + ands r2, r3 + mov r3, sl + asrs r2, r3 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r6, r1 + ldrb r1, [r1] + mov ip, r1 + adds r1, r0, #0 + mov r3, ip + ands r1, r3 + mov r3, sb + asrs r1, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r3, r8 + bics r0, r3 + strb r0, [r5] + ldrb r0, [r5] + mov r3, ip + bics r0, r3 + strb r0, [r5] + mov r0, sb + lsls r2, r0 + mov r3, sl + lsls r1, r3 + adds r2, r2, r1 + ldrb r0, [r5] + orrs r0, r2 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0xd + adds r0, r7, #0 + mov r2, sp + bl sub_0806A774 + adds r1, r6, #0 + adds r1, #0xd + adds r0, r7, #0 + ldr r2, [sp, #0x1c] + bl sub_0806A774 + adds r4, #0x11 + adds r0, r7, #0 + adds r1, r4, #0 + ldr r2, [sp, #0x20] + bl sub_0806A774 + adds r6, #0x11 + adds r0, r7, #0 + adds r1, r6, #0 + ldr r2, [sp, #0x24] + bl sub_0806A774 + adds r0, r7, #0 + movs r1, #0x15 + adds r2, r5, #0 + bl sub_0806A774 + mov r0, sp + ldrh r0, [r0] + ldr r1, [sp, #8] + strh r0, [r1] + ldr r3, [sp, #0x1c] + ldrh r0, [r3] + ldr r1, [sp, #0xc] + strh r0, [r1] + ldr r3, [sp, #0x20] + ldrb r0, [r3] + ldr r1, [sp, #0x10] + strb r0, [r1] + ldr r3, [sp, #0x24] + ldrb r0, [r3] + ldr r1, [sp, #0x14] + strb r0, [r1] + ldrb r0, [r5] + ldr r3, [sp, #0x18] + strb r0, [r3] + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C0F18: .4byte gUnknown_203CBE8 +_081C0F1C: .4byte gUnknown_82FA6AA + thumb_func_end sub_081C0DF0 + + thumb_func_start sub_081C0F20 +sub_081C0F20: @ 0x081C0F20 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x28 + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + ldr r0, _081C1048 + ldr r2, [r0] + lsls r0, r4, #1 + mov sl, r0 + adds r1, r2, #0 + adds r1, #0x84 + adds r0, r1, r0 + str r0, [sp, #8] + ldrh r0, [r0] + mov r3, sp + adds r3, #2 + str r3, [sp, #0x1c] + strh r0, [r3] + lsls r0, r6, #1 + mov sb, r0 + add r1, sb + str r1, [sp, #0xc] + ldrh r1, [r1] + mov r0, sp + strh r1, [r0] + adds r1, r2, #0 + adds r1, #0x8c + adds r3, r1, r4 + str r3, [sp, #0x10] + ldrb r0, [r3] + mov r3, sp + adds r3, #5 + str r3, [sp, #0x24] + strb r0, [r3] + adds r1, r1, r6 + str r1, [sp, #0x14] + ldrb r0, [r1] + mov r1, sp + adds r1, #4 + str r1, [sp, #0x20] + strb r0, [r1] + adds r2, #0xa4 + str r2, [sp, #0x18] + ldrb r0, [r2] + mov r5, sp + adds r5, #6 + strb r0, [r5] + ldr r1, _081C104C + adds r0, r4, r1 + ldrb r0, [r0] + mov r8, r0 + ldrb r0, [r5] + adds r2, r0, #0 + mov r3, r8 + ands r2, r3 + mov r3, sl + asrs r2, r3 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r6, r1 + ldrb r1, [r1] + mov ip, r1 + adds r1, r0, #0 + mov r3, ip + ands r1, r3 + mov r3, sb + asrs r1, r3 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov r3, r8 + bics r0, r3 + strb r0, [r5] + ldrb r0, [r5] + mov r3, ip + bics r0, r3 + strb r0, [r5] + mov r0, sb + lsls r2, r0 + mov r3, sl + lsls r1, r3 + adds r2, r2, r1 + ldrb r0, [r5] + orrs r0, r2 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0xd + adds r0, r7, #0 + mov r2, sp + bl sub_0806A864 + adds r1, r6, #0 + adds r1, #0xd + adds r0, r7, #0 + ldr r2, [sp, #0x1c] + bl sub_0806A864 + adds r4, #0x11 + adds r0, r7, #0 + adds r1, r4, #0 + ldr r2, [sp, #0x20] + bl sub_0806A864 + adds r6, #0x11 + adds r0, r7, #0 + adds r1, r6, #0 + ldr r2, [sp, #0x24] + bl sub_0806A864 + adds r0, r7, #0 + movs r1, #0x15 + adds r2, r5, #0 + bl sub_0806A864 + mov r0, sp + ldrh r0, [r0] + ldr r1, [sp, #8] + strh r0, [r1] + ldr r3, [sp, #0x1c] + ldrh r0, [r3] + ldr r1, [sp, #0xc] + strh r0, [r1] + ldr r3, [sp, #0x20] + ldrb r0, [r3] + ldr r1, [sp, #0x10] + strb r0, [r1] + ldr r3, [sp, #0x24] + ldrb r0, [r3] + ldr r1, [sp, #0x14] + strb r0, [r1] + ldrb r0, [r5] + ldr r3, [sp, #0x18] + strb r0, [r3] + add sp, #0x28 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C1048: .4byte gUnknown_203CBE8 +_081C104C: .4byte gUnknown_82FA6AA + thumb_func_end sub_081C0F20 + + thumb_func_start sub_081C1050 +sub_081C1050: @ 0x081C1050 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081C3D14 + movs r0, #8 + bl sub_081C4300 + ldr r1, _081C1078 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C107C + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C1078: .4byte gUnknown_3005B60 +_081C107C: .4byte sub_081C1080 + thumb_func_end sub_081C1050 + + thumb_func_start sub_081C1080 +sub_081C1080: @ 0x081C1080 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C10D4 + adds r4, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C109E + b _081C11CE +_081C109E: + ldr r0, _081C10D8 + ldrb r1, [r0, #7] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081C10AE + b _081C11CE +_081C10AE: + ldr r6, _081C10DC + ldrh r1, [r6, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081C10E8 + movs r0, #4 + strh r0, [r4] + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _081C10E0 + ldr r2, [r0] + ldr r0, _081C10E4 + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_081C09A4 + b _081C11CE + .align 2, 0 +_081C10D4: .4byte gUnknown_3005B68 +_081C10D8: .4byte gUnknown_2037C74 +_081C10DC: .4byte gUnknown_3002360 +_081C10E0: .4byte gUnknown_203CBE8 +_081C10E4: .4byte 0x000040C6 +_081C10E8: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _081C1110 + movs r0, #4 + strh r0, [r4] + ldr r0, _081C1108 + ldr r2, [r0] + ldr r1, _081C110C + adds r2, r2, r1 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C09A4 + b _081C11CE + .align 2, 0 +_081C1108: .4byte gUnknown_203CBE8 +_081C110C: .4byte 0x000040C6 +_081C1110: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081C1124 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C1130 +_081C1124: + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r5, #0 + bl sub_081C03C0 + b _081C11CE +_081C1130: + ldrh r1, [r6, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081C1146 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081C1150 +_081C1146: + adds r0, r5, #0 + movs r1, #1 + bl sub_081C03C0 + b _081C11CE +_081C1150: + ldrh r1, [r6, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C11AA + bl sub_081C11DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C119C + bl sub_081C40F8 + movs r0, #5 + bl sub_080A306C + ldr r2, _081C118C + ldr r0, _081C1190 + ldr r0, [r0] + ldr r1, _081C1194 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2] + ldr r1, _081C1198 + ldrb r0, [r2] + strh r0, [r1] + adds r0, r5, #0 + bl sub_081BFD80 + b _081C11CE + .align 2, 0 +_081C118C: .4byte gUnknown_203CBED +_081C1190: .4byte gUnknown_203CBE8 +_081C1194: .4byte 0x000040C6 +_081C1198: .4byte gUnknown_2037282 +_081C119C: + movs r0, #0x20 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081C1228 + b _081C11CE +_081C11AA: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C11CE + bl sub_081C40F8 + movs r0, #5 + bl sub_080A306C + ldr r1, _081C11D4 + movs r0, #4 + strb r0, [r1] + ldr r1, _081C11D8 + movs r0, #4 + strh r0, [r1] + adds r0, r5, #0 + bl sub_081BFD80 +_081C11CE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C11D4: .4byte gUnknown_203CBED +_081C11D8: .4byte gUnknown_2037282 + thumb_func_end sub_081C1080 + + thumb_func_start sub_081C11DC +sub_081C11DC: @ 0x081C11DC + push {lr} + ldr r0, _081C1214 + ldr r2, [r0] + ldr r0, _081C1218 + adds r1, r2, r0 + ldrb r0, [r1] + cmp r0, #4 + beq _081C120E + ldr r3, _081C121C + adds r0, r2, r3 + ldrh r0, [r0] + cmp r0, #0 + beq _081C120E + ldrb r1, [r1] + lsls r1, r1, #1 + adds r0, r2, #0 + adds r0, #0x84 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_081B69CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C1220 +_081C120E: + movs r0, #1 + b _081C1222 + .align 2, 0 +_081C1214: .4byte gUnknown_203CBE8 +_081C1218: .4byte 0x000040C6 +_081C121C: .4byte 0x000040C4 +_081C1220: + movs r0, #0 +_081C1222: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C11DC + + thumb_func_start sub_081C1228 +sub_081C1228: @ 0x081C1228 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xe + bl sub_08003774 + movs r0, #0xf + bl sub_08003774 + movs r0, #0 + bl sub_08199654 + movs r0, #0 + movs r1, #3 + bl sub_081C16D8 + movs r0, #0 + movs r1, #3 + movs r2, #0 + bl sub_081C1830 + bl sub_081C3978 + ldr r1, _081C126C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C1270 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C126C: .4byte gUnknown_3005B60 +_081C1270: .4byte sub_081C1274 + thumb_func_end sub_081C1228 + + thumb_func_start sub_081C1274 +sub_081C1274: @ 0x081C1274 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #3 + mov r8, r0 + ldr r0, _081C12D0 + mov sb, r0 + mov r4, r8 + add r4, sb + ldr r0, _081C12D4 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C12A0 + b _081C14A8 +_081C12A0: + ldr r6, _081C12D8 + ldrh r1, [r6, #0x2e] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _081C12E4 + movs r0, #1 + strh r0, [r4, #2] + movs r0, #4 + strh r0, [r4] + movs r1, #1 + rsbs r1, r1, #0 + ldr r0, _081C12DC + ldr r2, [r0] + ldr r0, _081C12E0 + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_081C09A4 + movs r0, #0 + strh r0, [r4, #2] + b _081C149E + .align 2, 0 +_081C12D0: .4byte gUnknown_3005B68 +_081C12D4: .4byte sub_081C1754 +_081C12D8: .4byte gUnknown_3002360 +_081C12DC: .4byte gUnknown_203CBE8 +_081C12E0: .4byte 0x000040C6 +_081C12E4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C1310 + movs r0, #1 + strh r0, [r4, #2] + movs r0, #4 + strh r0, [r4] + ldr r0, _081C1308 + ldr r2, [r0] + ldr r1, _081C130C + adds r2, r2, r1 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C09A4 + strh r5, [r4, #2] + b _081C149E + .align 2, 0 +_081C1308: .4byte gUnknown_203CBE8 +_081C130C: .4byte 0x000040C6 +_081C1310: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081C1324 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C1398 +_081C1324: + ldr r4, _081C1380 + ldr r0, [r4] + ldr r2, _081C1384 + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #2 + bne _081C1334 + b _081C14A8 +_081C1334: + movs r0, #0x13 + bl sub_08003774 + ldr r2, _081C1388 + ldr r0, [r4] + ldr r1, _081C138C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C135C + movs r0, #0xd + bl sub_08003774 +_081C135C: + ldr r1, [r4] + ldr r2, _081C1390 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r5, [r1] + mov r0, sb + subs r0, #8 + add r0, r8 + ldr r1, _081C1394 + str r1, [r0] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r7, #0 + b _081C1402 + .align 2, 0 +_081C1380: .4byte gUnknown_203CBE8 +_081C1384: .4byte 0x000040C0 +_081C1388: .4byte gUnknown_20205AC +_081C138C: .4byte 0x000040D5 +_081C1390: .4byte 0x000040C6 +_081C1394: .4byte sub_081C1080 +_081C1398: + ldrh r1, [r6, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081C13AE + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081C1438 +_081C13AE: + ldr r4, _081C1420 + ldr r0, [r4] + ldr r1, _081C1424 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + beq _081C14A8 + movs r0, #0x13 + bl sub_08003774 + ldr r2, _081C1428 + ldr r0, [r4] + ldr r1, _081C142C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C13E4 + movs r0, #0xd + bl sub_08003774 +_081C13E4: + ldr r1, [r4] + ldr r2, _081C1430 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r5, [r1] + mov r0, sb + subs r0, #8 + add r0, r8 + ldr r1, _081C1434 + str r1, [r0] + adds r0, r7, #0 + movs r1, #1 +_081C1402: + bl sub_081C03C0 + movs r4, #2 + rsbs r4, r4, #0 + movs r0, #9 + adds r1, r4, #0 + bl sub_081C16D8 + movs r0, #9 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081C1830 + b _081C14A8 + .align 2, 0 +_081C1420: .4byte gUnknown_203CBE8 +_081C1424: .4byte 0x000040C0 +_081C1428: .4byte gUnknown_20205AC +_081C142C: .4byte 0x000040D5 +_081C1430: .4byte 0x000040C6 +_081C1434: .4byte sub_081C1080 +_081C1438: + ldrh r1, [r6, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081C14A8 + movs r0, #0x13 + bl sub_08003774 + ldr r2, _081C14B4 + ldr r4, _081C14B8 + ldr r0, [r4] + ldr r1, _081C14BC + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C146C + movs r0, #0xd + bl sub_08003774 +_081C146C: + ldr r1, [r4] + ldr r2, _081C14C0 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r5, [r1] + adds r0, r5, #0 + bl sub_081C36D4 + movs r0, #0 + bl sub_08199654 + movs r4, #3 + rsbs r4, r4, #0 + movs r0, #9 + adds r1, r4, #0 + bl sub_081C16D8 + movs r0, #9 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081C1830 +_081C149E: + mov r0, sb + subs r0, #8 + add r0, r8 + ldr r1, _081C14C4 + str r1, [r0] +_081C14A8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C14B4: .4byte gUnknown_20205AC +_081C14B8: .4byte gUnknown_203CBE8 +_081C14BC: .4byte 0x000040D5 +_081C14C0: .4byte 0x000040C6 +_081C14C4: .4byte sub_081C1080 + thumb_func_end sub_081C1274 + + thumb_func_start sub_081C14C8 +sub_081C14C8: @ 0x081C14C8 + ldr r0, _081C14D0 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081C14D0: .4byte gUnknown_203CBED + thumb_func_end sub_081C14C8 + + thumb_func_start sub_081C14D4 +sub_081C14D4: @ 0x081C14D4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + movs r0, #0x20 + bl sub_08000BC8 + adds r4, r0, #0 + movs r5, #0 +_081C14E2: + lsls r0, r5, #0x19 + lsrs r1, r0, #0x18 + adds r6, r1, #0 + ldr r0, _081C1504 + ldr r3, [r0] + ldr r2, _081C1508 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r5, r0 + bhs _081C150C + lsls r0, r1, #1 + adds r0, r0, r4 + movs r1, #0x40 + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #0x50 + b _081C1522 + .align 2, 0 +_081C1504: .4byte gUnknown_203CBE8 +_081C1508: .4byte 0x000040C1 +_081C150C: + ldr r7, _081C1528 + adds r0, r3, r7 + ldrb r2, [r0] + cmp r5, r2 + bls _081C152C + lsls r0, r1, #1 + adds r0, r0, r4 + movs r1, #0x4a + strh r1, [r0] + strh r1, [r0, #2] + movs r1, #0x5a +_081C1522: + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + b _081C15AC + .align 2, 0 +_081C1528: .4byte 0x000040C2 +_081C152C: + ldr r7, _081C154C + adds r0, r3, r7 + ldrb r0, [r0] + cmp r5, r0 + bhs _081C1550 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0x46 + strh r0, [r1] + movs r0, #0x47 + strh r0, [r1, #2] + movs r0, #0x56 + strh r0, [r1, #0x10] + movs r0, #0x57 + b _081C15AA + .align 2, 0 +_081C154C: .4byte 0x000040C0 +_081C1550: + cmp r5, r0 + bne _081C1580 + cmp r5, r2 + beq _081C156C + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0x41 + strh r0, [r1] + movs r0, #0x42 + strh r0, [r1, #2] + movs r0, #0x51 + strh r0, [r1, #0x10] + movs r0, #0x52 + b _081C15AA +_081C156C: + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0x4b + strh r0, [r1] + movs r0, #0x4c + strh r0, [r1, #2] + movs r0, #0x5b + strh r0, [r1, #0x10] + movs r0, #0x5c + b _081C15AA +_081C1580: + cmp r5, r2 + beq _081C1598 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0x43 + strh r0, [r1] + movs r0, #0x44 + strh r0, [r1, #2] + movs r0, #0x53 + strh r0, [r1, #0x10] + movs r0, #0x54 + b _081C15AA +_081C1598: + lsls r1, r6, #1 + adds r1, r1, r4 + movs r0, #0x48 + strh r0, [r1] + movs r0, #0x49 + strh r0, [r1, #2] + movs r0, #0x58 + strh r0, [r1, #0x10] + movs r0, #0x59 +_081C15AA: + strh r0, [r1, #0x12] +_081C15AC: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #3 + bls _081C14E2 + movs r0, #8 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #0x10 + str r0, [sp, #8] + movs r0, #3 + adds r1, r4, #0 + movs r2, #0xb + movs r3, #0 + bl sub_080023B4 + movs r0, #3 + bl sub_08199654 + adds r0, r4, #0 + bl sub_08000BF0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C14D4 + + thumb_func_start sub_081C15E4 +sub_081C15E4: @ 0x081C15E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + mov r8, r1 + lsls r2, r2, #0x18 + lsrs r6, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r5, r3, #0x18 + ldrb r1, [r4, #6] + ldrb r0, [r4, #7] + lsls r0, r0, #1 + muls r0, r1, r0 + bl sub_08000BC8 + adds r7, r0, #0 + mov r1, sp + ldrh r0, [r4, #4] + strh r0, [r1] + ldrb r1, [r4, #7] + ldrb r0, [r4, #6] + adds r2, r1, #0 + muls r2, r0, r2 + movs r0, #0x80 + lsls r0, r0, #0x11 + orrs r2, r0 + mov r0, sp + adds r1, r7, #0 + bl CpuSet + ldrb r0, [r4, #6] + cmp r0, r6 + beq _081C1694 + cmp r5, #0 + bne _081C1664 + movs r5, #0 + ldrb r0, [r4, #7] + cmp r5, r0 + bhs _081C1694 +_081C1634: + ldrb r2, [r4, #6] + adds r1, r2, #0 + muls r1, r5, r1 + adds r3, r6, r1 + lsls r3, r3, #1 + ldr r0, [r4] + adds r0, r0, r3 + lsls r1, r1, #1 + adds r1, r7, r1 + subs r2, r2, r6 + ldr r3, _081C1660 + ands r2, r3 + bl CpuSet + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r3, [r4, #7] + cmp r5, r3 + blo _081C1634 + b _081C1694 + .align 2, 0 +_081C1660: .4byte 0x001FFFFF +_081C1664: + movs r5, #0 + ldrb r0, [r4, #7] + cmp r5, r0 + bhs _081C1694 +_081C166C: + ldrb r2, [r4, #6] + adds r1, r2, #0 + muls r1, r5, r1 + lsls r3, r1, #1 + ldr r0, [r4] + adds r0, r0, r3 + adds r1, r6, r1 + lsls r1, r1, #1 + adds r1, r7, r1 + subs r2, r2, r6 + ldr r3, _081C1698 + ands r2, r3 + bl CpuSet + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldrb r3, [r4, #7] + cmp r5, r3 + blo _081C166C +_081C1694: + movs r5, #0 + b _081C16BE + .align 2, 0 +_081C1698: .4byte 0x001FFFFF +_081C169C: + ldrb r2, [r4, #6] + adds r0, r2, #0 + muls r0, r5, r0 + lsls r0, r0, #1 + adds r0, r7, r0 + ldrb r1, [r4, #9] + adds r1, r1, r5 + lsls r1, r1, #5 + ldrb r3, [r4, #8] + adds r1, r1, r3 + lsls r1, r1, #1 + add r1, r8 + bl CpuSet + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081C16BE: + ldrb r0, [r4, #7] + cmp r5, r0 + blo _081C169C + adds r0, r7, #0 + bl sub_08000BF0 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C15E4 + + thumb_func_start sub_081C16D8 +sub_081C16D8: @ 0x081C16D8 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, _081C1710 + ldrb r2, [r3, #6] + cmp r1, r2 + ble _081C16EE + adds r4, r2, #0 +_081C16EE: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _081C16FA + cmp r0, r2 + bne _081C171C +_081C16FA: + ldr r0, _081C1714 + ldr r1, [r0] + ldr r0, _081C1718 + adds r1, r1, r0 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r3, #0 + movs r3, #1 + bl sub_081C15E4 + b _081C1746 + .align 2, 0 +_081C1710: .4byte gUnknown_85ED04C +_081C1714: .4byte gUnknown_203CBE8 +_081C1718: .4byte 0x000020BC +_081C171C: + ldr r5, _081C174C + adds r0, r5, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _081C1738 + adds r0, r5, #0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_081C1738: + ldr r1, _081C1750 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + strh r6, [r0, #0xa] +_081C1746: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C174C: .4byte sub_081C1754 +_081C1750: .4byte gUnknown_3005B60 + thumb_func_end sub_081C16D8 + + thumb_func_start sub_081C1754 +sub_081C1754: @ 0x081C1754 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081C177C + adds r4, r0, r1 + ldrh r0, [r4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081C1784 + movs r0, #0 + strh r0, [r4, #2] + ldr r7, _081C1780 + b _081C1794 + .align 2, 0 +_081C177C: .4byte gUnknown_3005B68 +_081C1780: .4byte gUnknown_85ED04C +_081C1784: + movs r0, #2 + ldrsh r1, [r4, r0] + ldr r0, _081C17D0 + ldrb r2, [r0, #6] + adds r7, r0, #0 + cmp r1, r2 + ble _081C1794 + strh r2, [r4, #2] +_081C1794: + ldr r5, _081C17D4 + ldr r1, [r5] + ldr r0, _081C17D8 + adds r1, r1, r0 + ldrb r2, [r4, #2] + adds r0, r7, #0 + movs r3, #1 + bl sub_081C15E4 + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _081C17B4 + ldrb r7, [r7, #6] + cmp r0, r7 + blt _081C1814 +_081C17B4: + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _081C17E0 + ldr r0, [r5] + ldr r1, _081C17DC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _081C1808 + movs r0, #0xe + bl sub_0800365C + b _081C1808 + .align 2, 0 +_081C17D0: .4byte gUnknown_85ED04C +_081C17D4: .4byte gUnknown_203CBE8 +_081C17D8: .4byte 0x000020BC +_081C17DC: .4byte 0x000040C0 +_081C17E0: + ldr r2, _081C1828 + ldr r0, [r5] + ldr r1, _081C182C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C1802 + movs r0, #0xd + bl sub_0800365C +_081C1802: + movs r0, #0x13 + bl sub_0800365C +_081C1808: + movs r0, #0 + bl sub_08199654 + adds r0, r6, #0 + bl sub_080A8964 +_081C1814: + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C1828: .4byte gUnknown_20205AC +_081C182C: .4byte 0x000040D5 + thumb_func_end sub_081C1754 + + thumb_func_start sub_081C1830 +sub_081C1830: @ 0x081C1830 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + lsls r1, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + lsrs r4, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, _081C186C + ldrb r2, [r3, #6] + cmp r1, r2 + ble _081C184A + adds r4, r2, #0 +_081C184A: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _081C1856 + cmp r0, r2 + bne _081C1878 +_081C1856: + ldr r0, _081C1870 + ldr r1, [r0] + ldr r0, _081C1874 + adds r1, r1, r0 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r3, #0 + movs r3, #1 + bl sub_081C15E4 + b _081C18A4 + .align 2, 0 +_081C186C: .4byte gUnknown_85ED058 +_081C1870: .4byte gUnknown_203CBE8 +_081C1874: .4byte 0x000030BC +_081C1878: + ldr r5, _081C18AC + adds r0, r5, #0 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + bne _081C1894 + adds r0, r5, #0 + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_081C1894: + ldr r1, _081C18B0 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #8] + strh r7, [r0, #0xa] + strh r6, [r0, #0xc] +_081C18A4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C18AC: .4byte sub_081C18B4 +_081C18B0: .4byte gUnknown_3005B60 + thumb_func_end sub_081C1830 + + thumb_func_start sub_081C18B4 +sub_081C18B4: @ 0x081C18B4 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081C18DC + adds r4, r0, r1 + ldrh r0, [r4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081C18E4 + movs r0, #0 + strh r0, [r4, #2] + ldr r7, _081C18E0 + b _081C18F4 + .align 2, 0 +_081C18DC: .4byte gUnknown_3005B68 +_081C18E0: .4byte gUnknown_85ED058 +_081C18E4: + movs r0, #2 + ldrsh r1, [r4, r0] + ldr r0, _081C1944 + ldrb r2, [r0, #6] + adds r7, r0, #0 + cmp r1, r2 + ble _081C18F4 + strh r2, [r4, #2] +_081C18F4: + ldr r5, _081C1948 + ldr r1, [r5] + ldr r0, _081C194C + adds r1, r1, r0 + ldrb r2, [r4, #2] + adds r0, r7, #0 + movs r3, #1 + bl sub_081C15E4 + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _081C1914 + ldrb r7, [r7, #6] + cmp r0, r7 + blt _081C198C +_081C1914: + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _081C1958 + ldr r0, [r5] + ldr r1, _081C1950 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C193A + ldr r0, _081C1954 + bl sub_080A8AAC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C193A + movs r0, #0xf + bl sub_0800365C +_081C193A: + ldrh r0, [r4, #4] + bl sub_081C1D40 + b _081C1980 + .align 2, 0 +_081C1944: .4byte gUnknown_85ED058 +_081C1948: .4byte gUnknown_203CBE8 +_081C194C: .4byte 0x000030BC +_081C1950: .4byte 0x000040C0 +_081C1954: .4byte sub_081C04C0 +_081C1958: + ldr r2, _081C19A0 + ldr r0, [r5] + ldr r1, _081C19A4 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1d + cmp r0, #0 + blt _081C197A + movs r0, #0xd + bl sub_0800365C +_081C197A: + movs r0, #0x13 + bl sub_0800365C +_081C1980: + movs r0, #0 + bl sub_08199654 + adds r0, r6, #0 + bl sub_080A8964 +_081C198C: + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C19A0: .4byte gUnknown_20205AC +_081C19A4: .4byte 0x000040D5 + thumb_func_end sub_081C18B4 + + thumb_func_start sub_081C19A8 +sub_081C19A8: @ 0x081C19A8 + push {r4, r5, lr} + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + asrs r1, r1, #0x10 + ldr r3, _081C19F0 + ldrb r2, [r3, #6] + cmp r1, r2 + ble _081C19BE + adds r4, r2, #0 +_081C19BE: + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0 + beq _081C19CA + cmp r0, r2 + bne _081C19FC +_081C19CA: + ldr r5, _081C19F4 + ldr r1, [r5] + adds r1, #0xbc + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r3, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_081C15E4 + ldr r0, _081C19F8 + ldr r1, [r5] + adds r1, #0xbc + adds r2, r4, #0 + movs r3, #0 + bl sub_081C15E4 + b _081C1A16 + .align 2, 0 +_081C19F0: .4byte gUnknown_85ED034 +_081C19F4: .4byte gUnknown_203CBE8 +_081C19F8: .4byte gUnknown_85ED040 +_081C19FC: + ldr r0, _081C1A1C + movs r1, #8 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081C1A20 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + strh r5, [r1, #0xa] +_081C1A16: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C1A1C: .4byte sub_081C1A24 +_081C1A20: .4byte gUnknown_3005B60 + thumb_func_end sub_081C19A8 + + thumb_func_start sub_081C1A24 +sub_081C1A24: @ 0x081C1A24 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081C1A4C + adds r5, r0, r1 + ldrh r0, [r5] + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081C1A54 + movs r0, #0 + strh r0, [r5, #2] + ldr r7, _081C1A50 + b _081C1A64 + .align 2, 0 +_081C1A4C: .4byte gUnknown_3005B68 +_081C1A50: .4byte gUnknown_85ED034 +_081C1A54: + movs r0, #2 + ldrsh r1, [r5, r0] + ldr r0, _081C1ABC + ldrb r2, [r0, #6] + adds r7, r0, #0 + cmp r1, r2 + ble _081C1A64 + strh r2, [r5, #2] +_081C1A64: + ldr r4, _081C1AC0 + ldr r1, [r4] + adds r1, #0xbc + ldrb r2, [r5, #2] + adds r0, r7, #0 + movs r3, #0 + bl sub_081C15E4 + ldr r0, _081C1AC4 + ldr r1, [r4] + adds r1, #0xbc + ldrb r2, [r5, #2] + movs r3, #0 + bl sub_081C15E4 + movs r0, #3 + bl sub_08199654 + movs r1, #2 + ldrsh r0, [r5, r1] + cmp r0, #0 + ble _081C1A96 + ldrb r7, [r7, #6] + cmp r0, r7 + blt _081C1AB4 +_081C1A96: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _081C1AAE + bl sub_081C4290 + movs r0, #0xd + bl sub_0800365C + movs r0, #0 + bl sub_08199654 +_081C1AAE: + adds r0, r6, #0 + bl sub_080A8964 +_081C1AB4: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C1ABC: .4byte gUnknown_85ED034 +_081C1AC0: .4byte gUnknown_203CBE8 +_081C1AC4: .4byte gUnknown_85ED040 + thumb_func_end sub_081C1A24 + + thumb_func_start sub_081C1AC8 +sub_081C1AC8: @ 0x081C1AC8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r2, r2, #0x18 + lsls r1, r1, #0x1c + lsrs r4, r1, #0x10 + ldr r7, _081C1B10 + cmp r2, #0 + bne _081C1B18 + movs r3, #0 + ldr r5, _081C1B14 +_081C1ADC: + adds r2, r7, r3 + lsls r2, r2, #1 + adds r2, r2, r6 + lsls r0, r3, #1 + adds r0, r0, r5 + ldrh r1, [r0] + adds r1, r4, r1 + strh r1, [r2] + adds r0, r2, #0 + adds r0, #0x40 + strh r1, [r0] + adds r2, #0x80 + adds r0, r3, #0 + adds r0, #0x14 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + adds r0, r4, r0 + strh r0, [r2] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x13 + bls _081C1ADC + b _081C1B50 + .align 2, 0 +_081C1B10: .4byte 0x0000056A +_081C1B14: .4byte gUnknown_85ECFBC +_081C1B18: + movs r3, #0 + ldr r5, _081C1B58 +_081C1B1C: + adds r1, r7, r3 + lsls r1, r1, #1 + adds r1, r1, r6 + adds r0, r3, #0 + adds r0, #0x14 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + adds r0, r4, r0 + strh r0, [r1] + adds r2, r1, #0 + adds r2, #0x40 + adds r0, r3, #0 + adds r0, #0x28 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + adds r0, r4, r0 + strh r0, [r2] + adds r1, #0x80 + strh r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #0x13 + bls _081C1B1C +_081C1B50: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C1B58: .4byte gUnknown_85ECFBC + thumb_func_end sub_081C1AC8 + + thumb_func_start sub_081C1B5C +sub_081C1B5C: @ 0x081C1B5C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0806D810 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C1B90 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806D878 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C1B90 + ldr r0, _081C1B88 + ldr r0, [r0] + ldr r2, _081C1B8C + adds r1, r0, r2 + movs r2, #0x2c + b _081C1B9A + .align 2, 0 +_081C1B88: .4byte gUnknown_203CBE8 +_081C1B8C: .4byte 0x00000482 +_081C1B90: + ldr r0, _081C1BB0 + ldr r0, [r0] + ldr r2, _081C1BB4 + adds r1, r0, r2 + ldr r2, _081C1BB8 +_081C1B9A: + strh r2, [r1] + ldr r1, _081C1BBC + adds r0, r0, r1 + strh r2, [r0] + movs r0, #3 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C1BB0: .4byte gUnknown_203CBE8 +_081C1BB4: .4byte 0x00000482 +_081C1BB8: .4byte 0x0000081A +_081C1BBC: .4byte 0x00000C82 + thumb_func_end sub_081C1B5C + + thumb_func_start sub_081C1BC0 +sub_081C1BC0: @ 0x081C1BC0 + push {lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081C1BE0 + movs r0, #8 + str r0, [sp] + str r1, [sp, #4] + movs r0, #3 + movs r1, #1 + movs r2, #4 + movs r3, #8 + bl sub_081998C8 + b _081C1BF4 +_081C1BE0: + movs r0, #8 + str r0, [sp] + movs r0, #5 + str r0, [sp, #4] + movs r0, #3 + movs r1, #1 + movs r2, #4 + movs r3, #8 + bl sub_081998C8 +_081C1BF4: + movs r0, #3 + bl sub_08199654 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_081C1BC0 + + thumb_func_start sub_081C1C00 +sub_081C1C00: @ 0x081C1C00 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _081C1C68 + ldr r1, [r0] + adds r6, r1, #0 + adds r6, #0x70 + ldrb r1, [r6, #5] + mov r8, r0 + cmp r1, #0x63 + bhi _081C1C74 + ldr r5, _081C1C6C + adds r2, r1, #0 + adds r1, r2, #1 + lsls r1, r1, #2 + ldr r4, _081C1C70 + ldrh r3, [r6] + lsls r0, r3, #3 + subs r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r3, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r3, r0 + adds r1, r1, r0 + adds r1, r1, r5 + lsls r2, r2, #2 + adds r2, r2, r0 + adds r2, r2, r5 + ldr r1, [r1] + ldr r2, [r2] + subs r1, r1, r2 + ldr r0, [r6, #0x10] + subs r4, r0, r2 + lsls r0, r4, #6 + bl __udivsi3 + adds r6, r0, #0 + movs r7, #0 + adds r0, r7, #0 + orrs r0, r6 + cmp r0, #0 + bne _081C1C78 + cmp r4, #0 + beq _081C1C78 + movs r6, #1 + movs r7, #0 + b _081C1C78 + .align 2, 0 +_081C1C68: .4byte gUnknown_203CBE8 +_081C1C6C: .4byte gUnknown_82F00B4 +_081C1C70: .4byte gUnknown_82F0D54 +_081C1C74: + movs r6, #0 + movs r7, #0 +_081C1C78: + mov r1, r8 + ldr r0, [r1] + ldr r2, _081C1CA4 + adds r2, r2, r0 + mov sb, r2 + movs r0, #0 + mov ip, r0 + ldr r1, _081C1CA8 + mov sl, r1 +_081C1C8A: + cmp r7, #0 + bgt _081C1C96 + cmp r7, #0 + bne _081C1CB0 + cmp r6, #7 + bls _081C1CB0 +_081C1C96: + mov r2, ip + lsls r0, r2, #1 + add r0, sb + ldr r2, _081C1CAC + adds r1, r2, #0 + strh r1, [r0] + b _081C1CEA + .align 2, 0 +_081C1CA4: .4byte 0x00001D66 +_081C1CA8: .4byte 0x00002062 +_081C1CAC: .4byte 0x0000206A +_081C1CB0: + mov r1, ip + lsls r0, r1, #1 + add r0, sb + mov r8, r0 + adds r5, r7, #0 + adds r4, r6, #0 + cmp r7, #0 + bge _081C1CC8 + movs r4, #7 + movs r5, #0 + adds r4, r4, r6 + adcs r5, r7 +_081C1CC8: + lsls r3, r5, #0x1d + lsrs r2, r4, #3 + adds r0, r3, #0 + orrs r0, r2 + asrs r1, r5, #3 + lsrs r5, r0, #0x1d + lsls r4, r1, #3 + adds r3, r5, #0 + orrs r3, r4 + lsls r2, r0, #3 + adds r1, r7, #0 + adds r0, r6, #0 + subs r0, r0, r2 + sbcs r1, r3 + add r0, sl + mov r2, r8 + strh r0, [r2] +_081C1CEA: + movs r0, #8 + rsbs r0, r0, #0 + asrs r1, r0, #0x1f + adds r6, r6, r0 + adcs r7, r1 + cmp r7, #0 + bge _081C1CFC + movs r6, #0 + movs r7, #0 +_081C1CFC: + mov r0, ip + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov ip, r0 + cmp r0, #7 + bls _081C1C8A + movs r0, #1 + bl sub_08002194 + ldr r1, _081C1D24 + ldr r1, [r1] + ldr r2, _081C1D28 + adds r1, r1, r2 + cmp r0, r1 + bne _081C1D2C + movs r0, #1 + bl sub_08199654 + b _081C1D32 + .align 2, 0 +_081C1D24: .4byte gUnknown_203CBE8 +_081C1D28: .4byte 0x000010BC +_081C1D2C: + movs r0, #2 + bl sub_08199654 +_081C1D32: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C1C00 + + thumb_func_start sub_081C1D40 +sub_081C1D40: @ 0x081C1D40 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldr r0, _081C1DA4 + ldr r0, [r0] + ldr r1, _081C1DA8 + adds r5, r0, r1 + cmp r3, #0 + beq _081C1E44 + ldr r1, _081C1DAC + ldr r2, _081C1DB0 + lsls r3, r3, #3 + adds r0, r3, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r4, [r0, #1] + mov sb, r1 + mov r8, r2 + mov sl, r3 + cmp r4, #0xff + beq _081C1D80 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081C1D80: + movs r2, #0 + movs r6, #3 + movs r3, #0xf3 + lsls r3, r3, #2 +_081C1D88: + cmp r4, #0xff + beq _081C1DB8 + cmp r2, r4 + bhs _081C1DB8 + lsrs r0, r2, #2 + adds r1, r2, #0 + ands r1, r6 + lsls r0, r0, #5 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r0, r0, r3 + ldr r7, _081C1DB4 + b _081C1DCA + .align 2, 0 +_081C1DA4: .4byte gUnknown_203CBE8 +_081C1DA8: .4byte 0x000038BC +_081C1DAC: .4byte gUnknown_8566AE4 +_081C1DB0: .4byte gUnknown_8565FCC +_081C1DB4: .4byte 0x0000103A +_081C1DB8: + lsrs r0, r2, #2 + adds r1, r2, #0 + ands r1, r6 + lsls r0, r0, #5 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r0, r0, r3 + ldr r7, _081C1E18 +_081C1DCA: + adds r1, r7, #0 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _081C1D88 + mov r0, sl + add r0, r8 + ldrb r0, [r0] + lsls r0, r0, #2 + add r0, sb + ldrb r4, [r0, #2] + cmp r4, #0xff + beq _081C1DF4 + adds r0, r4, #0 + movs r1, #0xa + bl __udivsi3 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_081C1DF4: + movs r2, #0 + movs r6, #3 + ldr r3, _081C1E1C +_081C1DFA: + cmp r4, #0xff + beq _081C1E24 + cmp r2, r4 + bhs _081C1E24 + lsrs r0, r2, #2 + adds r1, r2, #0 + ands r1, r6 + lsls r0, r0, #5 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r0, r0, r3 + ldr r7, _081C1E20 + b _081C1E36 + .align 2, 0 +_081C1E18: .4byte 0x00001039 +_081C1E1C: .4byte 0x0000044C +_081C1E20: .4byte 0x0000103C +_081C1E24: + lsrs r0, r2, #2 + adds r1, r2, #0 + ands r1, r6 + lsls r0, r0, #5 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r5 + adds r0, r0, r3 + ldr r7, _081C1E54 +_081C1E36: + adds r1, r7, #0 + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _081C1DFA +_081C1E44: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C1E54: .4byte 0x0000103D + thumb_func_end sub_081C1D40 + + thumb_func_start sub_081C1E58 +sub_081C1E58: @ 0x081C1E58 + push {lr} + ldr r0, _081C1E74 + ldr r0, [r0] + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #0 + beq _081C1E78 + movs r1, #0x80 + lsls r1, r1, #9 + movs r0, #3 + movs r2, #0 + bl sub_08001D1C + b _081C1E82 + .align 2, 0 +_081C1E74: .4byte gUnknown_203CBE8 +_081C1E78: + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C +_081C1E82: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C1E58 + + thumb_func_start sub_081C1E88 +sub_081C1E88: @ 0x081C1E88 + push {r4, r5, lr} + ldr r0, _081C1ECC + bl sub_08003090 + bl sub_08004480 + movs r4, #0 +_081C1E96: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x13 + bls _081C1E96 + movs r4, #0 + ldr r5, _081C1ED0 + ldr r3, _081C1ED4 + movs r2, #0xff +_081C1EB0: + ldr r0, [r5] + adds r0, r0, r3 + adds r0, r0, r4 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081C1EB0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C1ECC: .4byte gUnknown_85ED06C +_081C1ED0: .4byte gUnknown_203CBE8 +_081C1ED4: .4byte 0x000040CB + thumb_func_end sub_081C1E88 + + thumb_func_start sub_081C1ED8 +sub_081C1ED8: @ 0x081C1ED8 + push {r4, r5, r6, lr} + sub sp, #0x14 + ldr r4, [sp, #0x24] + ldr r5, [sp, #0x28] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r6, #0 + str r6, [sp] + str r4, [sp, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + ldr r5, _081C1F18 + adds r4, r4, r5 + str r4, [sp, #8] + str r6, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + bl sub_08199B84 + add sp, #0x14 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C1F18: .4byte gUnknown_85ED17C + thumb_func_end sub_081C1ED8 + + thumb_func_start sub_081C1F1C +sub_081C1F1C: @ 0x081C1F1C + push {lr} + movs r0, #0x11 + movs r1, #0 + bl sub_08003B18 + movs r0, #0x12 + movs r1, #0 + bl sub_08003B18 + movs r0, #0x13 + movs r1, #0 + bl sub_08003B18 + ldr r0, _081C1F48 + ldr r0, [r0] + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #0 + bne _081C1F4C + bl sub_081C1F5C + b _081C1F50 + .align 2, 0 +_081C1F48: .4byte gUnknown_203CBE8 +_081C1F4C: + bl sub_081C20D8 +_081C1F50: + movs r0, #0 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C1F1C + + thumb_func_start sub_081C1F5C +sub_081C1F5C: @ 0x081C1F5C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r0, _081C1FCC + ldr r0, [r0] + movs r1, #0xc + adds r1, r1, r0 + mov r8, r1 + adds r7, r0, #0 + adds r7, #0x70 + ldrh r0, [r7] + bl sub_0806DE54 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _081C1FD0 + cmp r5, r0 + beq _081C2002 + ldr r6, _081C1FD4 + ldr r1, _081C1FD8 + adds r0, r6, #0 + bl sub_080088B8 + ldr r4, _081C1FDC + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #2 + movs r3, #3 + bl sub_080089D8 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080088D8 + mov r0, r8 + bl sub_0806E630 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _081C1FE0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x11 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #0 + bl sub_081C1BC0 + b _081C1FFA + .align 2, 0 +_081C1FCC: .4byte gUnknown_203CBE8 +_081C1FD0: .4byte 0x0000FFFF +_081C1FD4: .4byte gUnknown_2021C40 +_081C1FD8: .4byte gUnknown_85C9411 +_081C1FDC: .4byte gUnknown_2021C54 +_081C1FE0: + movs r0, #0 + str r0, [sp] + movs r0, #7 + str r0, [sp, #4] + movs r0, #0x11 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #1 + bl sub_081C1BC0 +_081C1FFA: + movs r0, #0x11 + bl sub_0800365C + b _081C2022 +_081C2002: + movs r0, #0x11 + bl sub_08003774 + mov r0, r8 + bl sub_0806E630 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C201C + movs r0, #0 + bl sub_081C1BC0 + b _081C2022 +_081C201C: + movs r0, #1 + bl sub_081C1BC0 +_081C2022: + ldr r6, _081C2078 + ldr r1, _081C207C + adds r0, r6, #0 + bl sub_080088B8 + ldr r4, _081C2080 + ldrb r1, [r7, #5] + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080088D8 + movs r4, #0 + str r4, [sp] + movs r5, #1 + str r5, [sp, #4] + movs r0, #0x12 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + mov r0, r8 + adds r1, r6, #0 + bl sub_081B1814 + ldrb r0, [r7, #5] + cmp r0, #9 + bhi _081C2084 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0x12 + adds r1, r6, #0 + movs r2, #0x18 + movs r3, #2 + bl sub_081C1ED8 + b _081C2094 + .align 2, 0 +_081C2078: .4byte gUnknown_2021C40 +_081C207C: .4byte gUnknown_85C940E +_081C2080: .4byte gUnknown_2021C54 +_081C2084: + str r4, [sp] + str r5, [sp, #4] + movs r0, #0x12 + adds r1, r6, #0 + movs r2, #0x20 + movs r3, #2 + bl sub_081C1ED8 +_081C2094: + ldrh r0, [r7, #2] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _081C20D4 + adds r1, r1, r0 + movs r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x13 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldrh r1, [r7, #2] + mov r0, r8 + bl sub_081C2120 + movs r0, #0x12 + bl sub_0800365C + movs r0, #0x13 + bl sub_0800365C + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C20D4: .4byte gUnknown_82EA31C + thumb_func_end sub_081C1F5C + + thumb_func_start sub_081C20D8 +sub_081C20D8: @ 0x081C20D8 + push {r4, lr} + sub sp, #8 + ldr r0, _081C2118 + ldr r0, [r0] + adds r0, #0xc + ldr r4, _081C211C + adds r1, r4, #0 + bl sub_081B1814 + movs r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + movs r0, #0x12 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #0x12 + bl sub_0800365C + movs r0, #0x11 + bl sub_08003774 + movs r0, #0x13 + bl sub_08003774 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2118: .4byte gUnknown_203CBE8 +_081C211C: .4byte gUnknown_2021C40 + thumb_func_end sub_081C20D8 + + thumb_func_start sub_081C2120 +sub_081C2120: @ 0x081C2120 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x20 + beq _081C218E + cmp r1, #0x1d + beq _081C218E + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _081C2158 + adds r0, r0, r1 + bl sub_0800893C + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r5, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081C215C + cmp r0, #0xfe + beq _081C2178 + b _081C218E + .align 2, 0 +_081C2158: .4byte gUnknown_82EA31C +_081C215C: + ldr r1, _081C2174 + lsls r2, r4, #0x1b + lsrs r2, r2, #0x18 + str r0, [sp] + movs r0, #3 + str r0, [sp, #4] + movs r0, #0x13 + movs r3, #2 + bl sub_081C1ED8 + b _081C218E + .align 2, 0 +_081C2174: .4byte gUnknown_85C940A +_081C2178: + ldr r1, _081C2198 + lsls r2, r4, #0x1b + lsrs r2, r2, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + movs r0, #0x13 + movs r3, #2 + bl sub_081C1ED8 +_081C218E: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C2198: .4byte gUnknown_85C940C + thumb_func_end sub_081C2120 + + thumb_func_start sub_081C219C +sub_081C219C: @ 0x081C219C + push {lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r1, #0x18 + ldr r2, _081C21C8 + cmp r1, #0 + bne _081C21AE + subs r2, #0x80 +_081C21AE: + movs r0, #0x10 + str r0, [sp] + str r0, [sp, #4] + adds r0, r3, #0 + adds r1, r2, #0 + movs r2, #0 + movs r3, #0 + bl sub_08003874 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C21C8: .4byte gUnknown_85ED223 + thumb_func_end sub_081C219C + + thumb_func_start sub_081C21CC +sub_081C21CC: @ 0x081C21CC + push {r4, r5, lr} + sub sp, #8 + ldr r1, _081C2374 + movs r4, #0 + str r4, [sp] + movs r5, #1 + str r5, [sp, #4] + movs r0, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C2378 + str r4, [sp] + str r5, [sp, #4] + movs r0, #1 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C237C + str r4, [sp] + str r5, [sp, #4] + movs r0, #2 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C2380 + str r4, [sp] + str r5, [sp, #4] + movs r0, #3 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #4 + movs r1, #0 + bl sub_081C219C + ldr r1, _081C2384 + str r4, [sp] + str r4, [sp, #4] + movs r0, #4 + movs r2, #0x10 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #5 + movs r1, #0 + bl sub_081C219C + ldr r1, _081C2388 + str r4, [sp] + str r4, [sp, #4] + movs r0, #5 + movs r2, #0x10 + movs r3, #2 + bl sub_081C1ED8 + movs r0, #6 + movs r1, #0 + bl sub_081C219C + ldr r1, _081C238C + str r4, [sp] + str r4, [sp, #4] + movs r0, #6 + movs r2, #0x10 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C2390 + str r4, [sp] + str r5, [sp, #4] + movs r0, #7 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C2394 + str r4, [sp] + str r5, [sp, #4] + movs r0, #8 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C2398 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0x10 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C239C + str r4, [sp] + str r4, [sp, #4] + movs r0, #9 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23A0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xa + movs r2, #8 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23A4 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xa + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + ldr r1, _081C23A8 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xa + movs r2, #0 + movs r3, #0x22 + bl sub_081C1ED8 + ldr r1, _081C23AC + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xb + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23B0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xb + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + ldr r1, _081C23B4 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xb + movs r2, #0 + movs r3, #0x22 + bl sub_081C1ED8 + ldr r1, _081C23B8 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xc + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23BC + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xc + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + ldr r1, _081C23C0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xd + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23C4 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xe + movs r2, #8 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23C8 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xe + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + ldr r1, _081C23CC + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xf + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C23D0 + str r4, [sp] + str r5, [sp, #4] + movs r0, #0xf + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C2374: .4byte gUnknown_85CA3E4 +_081C2378: .4byte gUnknown_85CA3EE +_081C237C: .4byte gUnknown_85CA3F8 +_081C2380: .4byte gUnknown_85CA3FF +_081C2384: .4byte gUnknown_85C93C8 +_081C2388: .4byte gUnknown_85CA407 +_081C238C: .4byte gUnknown_85CA3DF +_081C2390: .4byte gUnknown_85CA38E +_081C2394: .4byte gUnknown_85CA392 +_081C2398: .4byte gUnknown_85C941A +_081C239C: .4byte gUnknown_85CA39B +_081C23A0: .4byte gUnknown_85CA388 +_081C23A4: .4byte gUnknown_85CA36F +_081C23A8: .4byte gUnknown_85CA374 +_081C23AC: .4byte gUnknown_85CA379 +_081C23B0: .4byte gUnknown_85CA37E +_081C23B4: .4byte gUnknown_85CA383 +_081C23B8: .4byte gUnknown_85CA3BB +_081C23BC: .4byte gUnknown_85CA3C6 +_081C23C0: .4byte gUnknown_85CA3B5 +_081C23C4: .4byte gUnknown_85CA3A0 +_081C23C8: .4byte gUnknown_85CA3A5 +_081C23CC: .4byte gUnknown_85CA3AB +_081C23D0: .4byte gUnknown_85CA3B0 + thumb_func_end sub_081C21CC + + thumb_func_start sub_081C23D4 +sub_081C23D4: @ 0x081C23D4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r0, #0 + bl sub_08003774 + movs r0, #1 + bl sub_08003774 + movs r0, #2 + bl sub_08003774 + movs r0, #3 + bl sub_08003774 + cmp r4, #1 + beq _081C244C + cmp r4, #1 + bgt _081C2402 + cmp r4, #0 + beq _081C240C + b _081C24EA +_081C2402: + cmp r5, #2 + beq _081C2466 + cmp r5, #3 + beq _081C24A8 + b _081C24EA +_081C240C: + movs r0, #0 + bl sub_0800365C + movs r0, #4 + bl sub_0800365C + bl sub_081A698C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C2430 + bl sub_081B9B34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C2438 +_081C2430: + movs r0, #8 + bl sub_0800365C + b _081C2444 +_081C2438: + movs r0, #7 + bl sub_0800365C + movs r0, #0x10 + bl sub_0800365C +_081C2444: + movs r0, #9 + bl sub_0800365C + b _081C24EA +_081C244C: + movs r0, #1 + bl sub_0800365C + movs r0, #0xa + bl sub_0800365C + movs r0, #0xb + bl sub_0800365C + movs r0, #0xc + bl sub_0800365C + b _081C24EA +_081C2466: + movs r0, #2 + bl sub_0800365C + ldr r0, _081C2494 + ldr r1, [r0] + ldr r2, _081C2498 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C24A0 + adds r2, #8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C249C + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C24EA + movs r0, #0xe + bl sub_0800365C + b _081C24EA + .align 2, 0 +_081C2494: .4byte gUnknown_203CBE8 +_081C2498: .4byte 0x000040BC +_081C249C: .4byte 0x00FFFFFF +_081C24A0: + movs r0, #5 + bl sub_0800365C + b _081C24EA +_081C24A8: + movs r0, #3 + bl sub_0800365C + ldr r0, _081C24D8 + ldr r1, [r0] + ldr r2, _081C24DC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C24E4 + adds r2, #8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C24E0 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C24EA + movs r0, #0xf + bl sub_0800365C + b _081C24EA + .align 2, 0 +_081C24D8: .4byte gUnknown_203CBE8 +_081C24DC: .4byte 0x000040BC +_081C24E0: .4byte 0x00FFFFFF +_081C24E4: + movs r0, #5 + bl sub_0800365C +_081C24EA: + movs r4, #0 + ldr r5, _081C2514 +_081C24EE: + ldr r0, [r5] + ldr r1, _081C2518 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + bl sub_0800365C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081C24EE + movs r0, #0 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C2514: .4byte gUnknown_203CBE8 +_081C2518: .4byte 0x000040CB + thumb_func_end sub_081C23D4 + + thumb_func_start sub_081C251C +sub_081C251C: @ 0x081C251C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #1 + beq _081C2576 + cmp r0, #1 + bgt _081C2532 + cmp r0, #0 + beq _081C253C + b _081C2602 +_081C2532: + cmp r1, #2 + beq _081C258A + cmp r1, #3 + beq _081C25C8 + b _081C2602 +_081C253C: + movs r0, #4 + bl sub_08003774 + bl sub_081A698C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C255A + bl sub_081B9B34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C2562 +_081C255A: + movs r0, #8 + bl sub_08003774 + b _081C256E +_081C2562: + movs r0, #7 + bl sub_08003774 + movs r0, #0x10 + bl sub_08003774 +_081C256E: + movs r0, #9 + bl sub_08003774 + b _081C2602 +_081C2576: + movs r0, #0xa + bl sub_08003774 + movs r0, #0xb + bl sub_08003774 + movs r0, #0xc + bl sub_08003774 + b _081C2602 +_081C258A: + ldr r0, _081C25B4 + ldr r1, [r0] + ldr r2, _081C25B8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C25C0 + adds r2, #8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C25BC + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C2602 + movs r0, #0xe + bl sub_08003774 + b _081C2602 + .align 2, 0 +_081C25B4: .4byte gUnknown_203CBE8 +_081C25B8: .4byte 0x000040BC +_081C25BC: .4byte 0x00FFFFFF +_081C25C0: + movs r0, #5 + bl sub_08003774 + b _081C2602 +_081C25C8: + ldr r0, _081C25F0 + ldr r1, [r0] + ldr r2, _081C25F4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C25FC + adds r2, #8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C25F8 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C2602 + movs r0, #0xf + bl sub_08003774 + b _081C2602 + .align 2, 0 +_081C25F0: .4byte gUnknown_203CBE8 +_081C25F4: .4byte 0x000040BC +_081C25F8: .4byte 0x00FFFFFF +_081C25FC: + movs r0, #5 + bl sub_08003774 +_081C2602: + movs r4, #0 +_081C2604: + adds r0, r4, #0 + bl sub_081C265C + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081C2604 + movs r0, #0 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C251C + + thumb_func_start sub_081C2620 +sub_081C2620: @ 0x081C2620 + push {r4, lr} + adds r3, r0, #0 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + ldr r0, _081C2654 + ldr r4, _081C2658 + adds r1, r2, r4 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _081C264A + lsls r0, r2, #3 + adds r0, r3, r0 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08003B18 +_081C264A: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C2654: .4byte gUnknown_203CBE8 +_081C2658: .4byte 0x000040CB + thumb_func_end sub_081C2620 + + thumb_func_start sub_081C265C +sub_081C265C: @ 0x081C265C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C2688 + ldr r2, _081C268C + adds r0, r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081C2680 + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] +_081C2680: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2688: .4byte gUnknown_203CBE8 +_081C268C: .4byte 0x000040CB + thumb_func_end sub_081C265C + + thumb_func_start sub_081C2690 +sub_081C2690: @ 0x081C2690 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 +_081C2698: + ldr r0, _081C26CC + ldr r0, [r0] + ldr r1, _081C26D0 + adds r0, r0, r1 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0xff + beq _081C26AE + movs r1, #0 + bl sub_08003B18 +_081C26AE: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #7 + bls _081C2698 + ldr r0, _081C26D4 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + thumb_func_end sub_081C2690 + + thumb_func_start sub_081C26C4 +sub_081C26C4: @ 0x081C26C4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C26CC: .4byte gUnknown_203CBE8 +_081C26D0: .4byte 0x000040CB +_081C26D4: .4byte gUnknown_85ED2A4 + thumb_func_end sub_081C26C4 + + thumb_func_start sub_081C26D8 +sub_081C26D8: @ 0x081C26D8 + push {lr} + lsls r0, r0, #0x18 + ldr r1, _081C26F0 + lsrs r0, r0, #0x16 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x10 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081C26F0: .4byte gUnknown_85ED2B4 + thumb_func_end sub_081C26D8 + + thumb_func_start sub_081C26F4 +sub_081C26F4: @ 0x081C26F4 + push {lr} + ldr r0, _081C2714 + ldr r0, [r0] + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #0 + beq _081C2718 + bl sub_081C2C54 + bl sub_081C2C84 + bl sub_081C2CB4 + bl sub_081C2D28 + b _081C2730 + .align 2, 0 +_081C2714: .4byte gUnknown_203CBE8 +_081C2718: + bl sub_081C27B8 + bl sub_081C2828 + bl sub_081C288C + bl sub_081C28E0 + bl sub_081C2934 + bl sub_081C2A4C +_081C2730: + pop {r0} + bx r0 + thumb_func_end sub_081C26F4 + + thumb_func_start sub_081C2734 +sub_081C2734: @ 0x081C2734 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081C275C + adds r4, r0, r1 + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bhi _081C27AC + lsls r0, r0, #2 + ldr r1, _081C2760 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C275C: .4byte gUnknown_3005B68 +_081C2760: .4byte _081C2764 +_081C2764: @ jump table + .4byte _081C2780 @ case 0 + .4byte _081C2786 @ case 1 + .4byte _081C278C @ case 2 + .4byte _081C2792 @ case 3 + .4byte _081C2798 @ case 4 + .4byte _081C279E @ case 5 + .4byte _081C27A4 @ case 6 +_081C2780: + bl sub_081C27B8 + b _081C27AC +_081C2786: + bl sub_081C2828 + b _081C27AC +_081C278C: + bl sub_081C288C + b _081C27AC +_081C2792: + bl sub_081C28E0 + b _081C27AC +_081C2798: + bl sub_081C2934 + b _081C27AC +_081C279E: + bl sub_081C2A4C + b _081C27AC +_081C27A4: + adds r0, r2, #0 + bl sub_080A8964 + b _081C27B2 +_081C27AC: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081C27B2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C2734 + + thumb_func_start sub_081C27B8 +sub_081C27B8: @ 0x081C27B8 + push {lr} + sub sp, #8 + bl sub_081A698C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C2822 + bl sub_081B9B34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C2822 + ldr r0, _081C2804 + movs r1, #0 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldr r0, _081C2808 + ldr r0, [r0] + adds r2, r0, #0 + adds r2, #0xa2 + ldrb r2, [r2] + cmp r2, #0 + bne _081C280C + adds r1, r0, #0 + adds r1, #0xa6 + str r2, [sp] + movs r0, #5 + str r0, [sp, #4] + adds r0, r3, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + b _081C2822 + .align 2, 0 +_081C2804: .4byte gUnknown_85ED114 +_081C2808: .4byte gUnknown_203CBE8 +_081C280C: + adds r1, r0, #0 + adds r1, #0xa6 + movs r0, #0 + str r0, [sp] + movs r0, #6 + str r0, [sp, #4] + adds r0, r3, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 +_081C2822: + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_081C27B8 + + thumb_func_start sub_081C2828 +sub_081C2828: @ 0x081C2828 + push {r4, lr} + sub sp, #8 + bl sub_081A698C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C2876 + bl sub_081B9B34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C2876 + ldr r4, _081C2880 + ldr r0, _081C2884 + ldr r0, [r0] + adds r0, #0xb8 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #2 + movs r3, #5 + bl sub_080089D8 + ldr r0, _081C2888 + movs r1, #1 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 +_081C2876: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2880: .4byte gUnknown_2021C40 +_081C2884: .4byte gUnknown_203CBE8 +_081C2888: .4byte gUnknown_85ED114 + thumb_func_end sub_081C2828 + + thumb_func_start sub_081C288C +sub_081C288C: @ 0x081C288C + push {r4, lr} + sub sp, #8 + ldr r0, _081C28D4 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, #0x78 + ldrb r1, [r1] + bl sub_0806B15C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081C28D8 + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #3 + ldr r1, _081C28DC + adds r4, r4, r1 + movs r1, #0 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C28D4: .4byte gUnknown_203CBE8 +_081C28D8: .4byte gUnknown_85ED114 +_081C28DC: .4byte gUnknown_82EBDC4 + thumb_func_end sub_081C288C + + thumb_func_start sub_081C28E0 +sub_081C28E0: @ 0x081C28E0 + push {r4, lr} + sub sp, #8 + ldr r0, _081C2928 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, #0x78 + ldrb r1, [r1] + bl sub_0806B15C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081C292C + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #2 + subs r1, r1, r4 + ldr r2, _081C2930 + adds r1, r1, r2 + movs r2, #0 + str r2, [sp] + str r2, [sp, #4] + movs r3, #0x12 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2928: .4byte gUnknown_203CBE8 +_081C292C: .4byte gUnknown_85ED114 +_081C2930: .4byte gUnknown_82EC034 + thumb_func_end sub_081C28E0 + + thumb_func_start sub_081C2934 +sub_081C2934: @ 0x081C2934 + push {r4, r5, r6, lr} + ldr r0, _081C2984 + ldr r0, [r0] + adds r4, r0, #0 + adds r4, #0x70 + bl sub_081AF8C8 + ldr r1, _081C2988 + movs r0, #0 + bl sub_081AF8E4 + ldr r1, _081C298C + movs r0, #1 + bl sub_081AF8E4 + bl sub_081C2A78 + bl sub_081A698C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C297A + bl sub_081B9B34 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C297A + bl sub_081C2BFC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C2998 +_081C297A: + ldr r0, _081C2990 + ldr r1, _081C2994 + bl sub_081AF900 + b _081C2A3A + .align 2, 0 +_081C2984: .4byte gUnknown_203CBE8 +_081C2988: .4byte gUnknown_85ED2C4 +_081C298C: .4byte gUnknown_85ED2CB +_081C2990: .4byte gUnknown_2021C7C +_081C2994: .4byte gUnknown_85CA563 +_081C2998: + movs r0, #0x20 + bl sub_08000BC8 + adds r6, r0, #0 + movs r0, #0x20 + bl sub_08000BC8 + adds r5, r0, #0 + adds r0, r6, #0 + bl sub_081C2AC4 + ldrb r0, [r4, #9] + cmp r0, #0xd4 + bhi _081C29C4 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_0812461C + movs r0, #4 + adds r1, r5, #0 + bl sub_081AF8E4 +_081C29C4: + bl sub_081C2AF4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C2A00 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _081C29EC + ldrb r0, [r4, #9] + ldr r1, _081C29E4 + cmp r0, #0xd4 + bls _081C2A28 + ldr r1, _081C29E8 + b _081C2A28 + .align 2, 0 +_081C29E4: .4byte gUnknown_85CA4CC +_081C29E8: .4byte gUnknown_85CA593 +_081C29EC: + ldrb r0, [r4, #9] + ldr r1, _081C29F8 + cmp r0, #0xd4 + bls _081C2A28 + ldr r1, _081C29FC + b _081C2A28 + .align 2, 0 +_081C29F8: .4byte gUnknown_85CA4A6 +_081C29FC: .4byte gUnknown_85CA570 +_081C2A00: + ldrb r0, [r4, #9] + cmp r0, #0xff + bne _081C2A10 + ldr r1, _081C2A0C + b _081C2A28 + .align 2, 0 +_081C2A0C: .4byte gUnknown_85CA512 +_081C2A10: + cmp r0, #0xfe + beq _081C2A26 + bl sub_081C2BB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C2A26 + ldrb r0, [r4, #9] + ldr r1, _081C2A40 + cmp r0, #0xd4 + bls _081C2A28 +_081C2A26: + ldr r1, _081C2A44 +_081C2A28: + ldr r0, _081C2A48 + bl sub_081AF900 + adds r0, r6, #0 + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_08000BF0 +_081C2A3A: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C2A40: .4byte gUnknown_85CA53B +_081C2A44: .4byte gUnknown_85CA4F2 +_081C2A48: .4byte gUnknown_2021C7C + thumb_func_end sub_081C2934 + + thumb_func_start sub_081C2A4C +sub_081C2A4C: @ 0x081C2A4C + push {lr} + sub sp, #8 + ldr r0, _081C2A70 + movs r1, #3 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C2A74 + movs r2, #0 + str r2, [sp] + str r2, [sp, #4] + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C2A70: .4byte gUnknown_85ED114 +_081C2A74: .4byte gUnknown_2021C7C + thumb_func_end sub_081C2A4C + + thumb_func_start sub_081C2A78 +sub_081C2A78: @ 0x081C2A78 + push {r4, lr} + ldr r0, _081C2AA4 + ldr r4, [r0] + ldr r1, _081C2AA8 + adds r4, #0xa3 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + movs r0, #2 + bl sub_081AF8E4 + ldrb r0, [r4] + cmp r0, #5 + beq _081C2A9A + cmp r0, #0x15 + bne _081C2AB0 +_081C2A9A: + ldr r1, _081C2AAC + movs r0, #5 + bl sub_081AF8E4 + b _081C2AB8 + .align 2, 0 +_081C2AA4: .4byte gUnknown_203CBE8 +_081C2AA8: .4byte gUnknown_85ECE24 +_081C2AAC: .4byte gUnknown_85CA3D9 +_081C2AB0: + ldr r1, _081C2AC0 + movs r0, #5 + bl sub_081AF8E4 +_081C2AB8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2AC0: .4byte gUnknown_85CA3D8 + thumb_func_end sub_081C2A78 + + thumb_func_start sub_081C2AC4 +sub_081C2AC4: @ 0x081C2AC4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081C2AF0 + ldr r0, [r0] + adds r0, #0x7a + ldrb r1, [r0] + cmp r1, #0 + bne _081C2AD6 + movs r1, #5 +_081C2AD6: + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + movs r0, #3 + adds r1, r4, #0 + bl sub_081AF8E4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2AF0: .4byte gUnknown_203CBE8 + thumb_func_end sub_081C2AC4 + + thumb_func_start sub_081C2AF4 +sub_081C2AF4: @ 0x081C2AF4 + push {r4, r5, r6, lr} + ldr r0, _081C2B30 + ldr r0, [r0] + adds r6, r0, #0 + adds r6, #0x70 + ldr r1, [r0] + ldr r0, _081C2B34 + cmp r1, r0 + bne _081C2B40 + bl sub_0800A02C + movs r1, #1 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081C2B38 + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r0, r2, #4 + adds r0, r1, r0 + ldrh r4, [r0] + adds r0, r1, r2 + ldrb r5, [r0, #0x13] + ldr r0, _081C2B3C + adds r2, #8 + adds r1, r1, r2 + bl sub_080088B8 + b _081C2B56 + .align 2, 0 +_081C2B30: .4byte gUnknown_203CBE8 +_081C2B34: .4byte gUnknown_20243E8 +_081C2B38: .4byte gUnknown_20226A0 +_081C2B3C: .4byte gUnknown_2021C40 +_081C2B40: + bl sub_080F0AEC + adds r4, r0, #0 + ldr r0, _081C2B6C + ands r4, r0 + ldr r0, _081C2B70 + ldr r1, [r0] + ldrb r5, [r1, #8] + ldr r0, _081C2B74 + bl sub_080088B8 +_081C2B56: + adds r0, r6, #0 + adds r0, #0x32 + ldrb r0, [r0] + cmp r5, r0 + bne _081C2BA6 + ldr r0, [r6, #0x48] + ldr r1, _081C2B6C + ands r0, r1 + cmp r4, r0 + beq _081C2B7C + b _081C2BA6 + .align 2, 0 +_081C2B6C: .4byte 0x0000FFFF +_081C2B70: .4byte gUnknown_3005AF0 +_081C2B74: .4byte gUnknown_2021C40 +_081C2B78: + movs r0, #1 + b _081C2BA8 +_081C2B7C: + movs r2, #0 + ldr r4, _081C2BB0 + adds r3, r6, #0 + adds r3, #0x36 +_081C2B84: + adds r0, r2, r4 + ldrb r1, [r0] + cmp r1, #0xff + bne _081C2B94 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, #0xff + beq _081C2B78 +_081C2B94: + adds r0, r3, r2 + ldrb r0, [r0] + cmp r1, r0 + bne _081C2BA6 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xf + bls _081C2B84 +_081C2BA6: + movs r0, #0 +_081C2BA8: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081C2BB0: .4byte gUnknown_2021C40 + thumb_func_end sub_081C2AF4 + + thumb_func_start sub_081C2BB4 +sub_081C2BB4: @ 0x081C2BB4 + push {lr} + ldr r0, _081C2BCC + ldr r0, [r0] + adds r0, #0x70 + ldrb r0, [r0, #0xb] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _081C2BD0 + movs r0, #0 + b _081C2BD2 + .align 2, 0 +_081C2BCC: .4byte gUnknown_203CBE8 +_081C2BD0: + movs r0, #1 +_081C2BD2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C2BB4 + + thumb_func_start sub_081C2BD8 +sub_081C2BD8: @ 0x081C2BD8 + push {lr} + ldr r0, _081C2BF0 + ldr r0, [r0] + adds r0, #0x70 + ldrb r0, [r0, #0xb] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _081C2BF4 + movs r0, #0 + b _081C2BF6 + .align 2, 0 +_081C2BF0: .4byte gUnknown_203CBE8 +_081C2BF4: + movs r0, #1 +_081C2BF6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C2BD8 + + thumb_func_start sub_081C2BFC +sub_081C2BFC: @ 0x081C2BFC + push {lr} + ldr r0, _081C2C38 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _081C2C4C + ldr r0, _081C2C3C + ldr r1, _081C2C40 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C2C4C + ldr r0, _081C2C44 + ldr r0, [r0] + ldr r1, _081C2C48 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081C2C32 + cmp r0, #4 + beq _081C2C32 + cmp r0, #5 + bne _081C2C4C +_081C2C32: + movs r0, #1 + b _081C2C4E + .align 2, 0 +_081C2C38: .4byte gUnknown_2022C90 +_081C2C3C: .4byte gUnknown_3002360 +_081C2C40: .4byte 0x00000439 +_081C2C44: .4byte gUnknown_203CBE8 +_081C2C48: .4byte 0x000040BE +_081C2C4C: + movs r0, #0 +_081C2C4E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C2BFC + + thumb_func_start sub_081C2C54 +sub_081C2C54: @ 0x081C2C54 + push {lr} + sub sp, #8 + ldr r0, _081C2C7C + movs r1, #0 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C2C80 + movs r2, #0 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C2C7C: .4byte gUnknown_85ED114 +_081C2C80: .4byte gUnknown_85C93F9 + thumb_func_end sub_081C2C54 + + thumb_func_start sub_081C2C84 +sub_081C2C84: @ 0x081C2C84 + push {lr} + sub sp, #8 + ldr r0, _081C2CAC + movs r1, #1 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C2CB0 + movs r2, #0 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C2CAC: .4byte gUnknown_85ED114 +_081C2CB0: .4byte gUnknown_85C93F9 + thumb_func_end sub_081C2C84 + + thumb_func_start sub_081C2CB4 +sub_081C2CB4: @ 0x081C2CB4 + push {r4, lr} + sub sp, #8 + ldr r0, _081C2CCC + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x70 + adds r0, #0xa5 + ldrb r0, [r0] + cmp r0, #1 + bne _081C2CD4 + ldr r4, _081C2CD0 + b _081C2CF8 + .align 2, 0 +_081C2CCC: .4byte gUnknown_203CBE8 +_081C2CD0: .4byte gUnknown_85CA40C +_081C2CD4: + ldrh r0, [r1, #0x30] + cmp r0, #5 + bhi _081C2CE4 + ldr r4, _081C2CE0 + b _081C2CF8 + .align 2, 0 +_081C2CE0: .4byte gUnknown_85CA46B +_081C2CE4: + cmp r0, #0xa + bhi _081C2CF0 + ldr r4, _081C2CEC + b _081C2CF8 + .align 2, 0 +_081C2CEC: .4byte gUnknown_85CA448 +_081C2CF0: + ldr r4, _081C2D1C + cmp r0, #0x28 + bhi _081C2CF8 + ldr r4, _081C2D20 +_081C2CF8: + ldr r0, _081C2D24 + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2D1C: .4byte gUnknown_85CA40C +_081C2D20: .4byte gUnknown_85CA425 +_081C2D24: .4byte gUnknown_85ED114 + thumb_func_end sub_081C2CB4 + + thumb_func_start sub_081C2D28 +sub_081C2D28: @ 0x081C2D28 + push {r4, lr} + sub sp, #8 + ldr r0, _081C2D48 + ldr r0, [r0] + adds r4, r0, #0 + adds r4, #0x70 + adds r0, #0xa5 + ldrb r0, [r0] + cmp r0, #1 + beq _081C2D8C + ldrb r0, [r4, #9] + cmp r0, #0xff + bne _081C2D50 + ldr r4, _081C2D4C + b _081C2D8E + .align 2, 0 +_081C2D48: .4byte gUnknown_203CBE8 +_081C2D4C: .4byte gUnknown_85CA5D5 +_081C2D50: + bl sub_081C2BB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C2D64 + bl sub_081C2AF4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C2D6C +_081C2D64: + ldr r4, _081C2D68 + b _081C2D8E + .align 2, 0 +_081C2D68: .4byte gUnknown_85CA5F8 +_081C2D6C: + ldrb r0, [r4, #9] + cmp r0, #0xfd + bne _081C2D8C + bl sub_081C2BD8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081C2D84 + cmp r0, #1 + bne _081C2D8E + ldr r4, _081C2D88 + b _081C2D8E + .align 2, 0 +_081C2D84: .4byte gUnknown_85CA635 +_081C2D88: .4byte gUnknown_85CA616 +_081C2D8C: + ldr r4, _081C2DB4 +_081C2D8E: + ldr r0, _081C2DB8 + movs r1, #3 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2DB4: .4byte gUnknown_85CA5B6 +_081C2DB8: .4byte gUnknown_85ED114 + thumb_func_end sub_081C2D28 + + thumb_func_start sub_081C2DBC +sub_081C2DBC: @ 0x081C2DBC + push {lr} + bl sub_081C2E70 + bl sub_081C2F08 + bl sub_081C2F74 + bl sub_081C303C + bl sub_081C3068 + bl sub_081C30F0 + bl sub_081C311C + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C2DBC + + thumb_func_start sub_081C2DE0 +sub_081C2DE0: @ 0x081C2DE0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081C2E08 + adds r4, r0, r1 + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bhi _081C2E62 + lsls r0, r0, #2 + ldr r1, _081C2E0C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C2E08: .4byte gUnknown_3005B68 +_081C2E0C: .4byte _081C2E10 +_081C2E10: @ jump table + .4byte _081C2E30 @ case 0 + .4byte _081C2E36 @ case 1 + .4byte _081C2E3C @ case 2 + .4byte _081C2E42 @ case 3 + .4byte _081C2E48 @ case 4 + .4byte _081C2E4E @ case 5 + .4byte _081C2E54 @ case 6 + .4byte _081C2E5A @ case 7 +_081C2E30: + bl sub_081C2E70 + b _081C2E62 +_081C2E36: + bl sub_081C2F08 + b _081C2E62 +_081C2E3C: + bl sub_081C2F74 + b _081C2E62 +_081C2E42: + bl sub_081C303C + b _081C2E62 +_081C2E48: + bl sub_081C3068 + b _081C2E62 +_081C2E4E: + bl sub_081C30F0 + b _081C2E62 +_081C2E54: + bl sub_081C311C + b _081C2E62 +_081C2E5A: + adds r0, r2, #0 + bl sub_080A8964 + b _081C2E68 +_081C2E62: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081C2E68: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C2DE0 + + thumb_func_start sub_081C2E70 +sub_081C2E70: @ 0x081C2E70 + push {r4, lr} + sub sp, #8 + ldr r4, _081C2EAC + ldr r0, [r4] + adds r0, #0x9e + ldrh r0, [r0] + cmp r0, #0xaf + bne _081C2EB4 + bl sub_081B0F20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C2EB4 + ldr r0, [r4] + ldr r1, _081C2EB0 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081C2EA0 + cmp r0, #4 + beq _081C2EA0 + cmp r0, #5 + bne _081C2EB4 +_081C2EA0: + movs r0, #0xaf + bl sub_080D6C8C + adds r4, r0, #0 + b _081C2EDA + .align 2, 0 +_081C2EAC: .4byte gUnknown_203CBE8 +_081C2EB0: .4byte 0x000040BE +_081C2EB4: + ldr r0, _081C2EC8 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x9e + ldrh r0, [r1] + cmp r0, #0 + bne _081C2ED0 + ldr r4, _081C2ECC + b _081C2EDA + .align 2, 0 +_081C2EC8: .4byte gUnknown_203CBE8 +_081C2ECC: .4byte gUnknown_85C93ED +_081C2ED0: + ldrh r0, [r1] + ldr r4, _081C2F00 + adds r1, r4, #0 + bl sub_080D5EC8 +_081C2EDA: + ldr r0, _081C2F04 + movs r1, #0 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2F00: .4byte gUnknown_2021C40 +_081C2F04: .4byte gUnknown_85ED134 + thumb_func_end sub_081C2E70 + + thumb_func_start sub_081C2F08 +sub_081C2F08: @ 0x081C2F08 + push {r4, lr} + sub sp, #8 + ldr r0, _081C2F20 + ldr r0, [r0] + adds r1, r0, #0 + adds r1, #0x76 + ldrb r0, [r1] + cmp r0, #0 + bne _081C2F28 + ldr r4, _081C2F24 + b _081C2F3E + .align 2, 0 +_081C2F20: .4byte gUnknown_203CBE8 +_081C2F24: .4byte gUnknown_85C93ED +_081C2F28: + ldr r0, _081C2F64 + ldrb r1, [r1] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081C2F68 + ldr r1, _081C2F6C + adds r0, r4, #0 + bl sub_08008BCC +_081C2F3E: + ldr r0, _081C2F70 + movs r1, #1 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C2F64: .4byte gUnknown_2021C40 +_081C2F68: .4byte gUnknown_2021C7C +_081C2F6C: .4byte gUnknown_85CA3CF +_081C2F70: .4byte gUnknown_85ED134 + thumb_func_end sub_081C2F08 + + thumb_func_start sub_081C2F74 +sub_081C2F74: @ 0x081C2F74 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + movs r0, #8 + bl sub_08000BC8 + mov sb, r0 + movs r0, #8 + bl sub_08000BC8 + mov r8, r0 + movs r0, #8 + bl sub_08000BC8 + adds r6, r0, #0 + movs r0, #8 + bl sub_08000BC8 + adds r5, r0, #0 + ldr r4, _081C3030 + ldr r0, [r4] + adds r0, #0x90 + ldrh r1, [r0] + mov r0, sb + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r4] + adds r0, #0x92 + ldrh r1, [r0] + mov r0, r8 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r4] + adds r0, #0x94 + ldrh r1, [r0] + adds r0, r6, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r0, [r4] + adds r0, #0x96 + ldrh r1, [r0] + adds r0, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + mov r1, sb + bl sub_081AF8E4 + movs r0, #1 + mov r1, r8 + bl sub_081AF8E4 + movs r0, #2 + adds r1, r6, #0 + bl sub_081AF8E4 + movs r0, #3 + adds r1, r5, #0 + bl sub_081AF8E4 + ldr r0, _081C3034 + ldr r1, _081C3038 + bl sub_081AF900 + mov r0, sb + bl sub_08000BF0 + mov r0, r8 + bl sub_08000BF0 + adds r0, r6, #0 + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_08000BF0 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C3030: .4byte gUnknown_203CBE8 +_081C3034: .4byte gUnknown_2021C7C +_081C3038: .4byte gUnknown_85ED2D2 + thumb_func_end sub_081C2F74 + + thumb_func_start sub_081C303C +sub_081C303C: @ 0x081C303C + push {lr} + sub sp, #8 + ldr r0, _081C3060 + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C3064 + movs r2, #0 + str r2, [sp] + str r2, [sp, #4] + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C3060: .4byte gUnknown_85ED134 +_081C3064: .4byte gUnknown_2021C7C + thumb_func_end sub_081C303C + + thumb_func_start sub_081C3068 +sub_081C3068: @ 0x081C3068 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081C30D8 + mov r8, r0 + ldr r4, _081C30DC + ldr r0, [r4] + adds r0, #0x98 + ldrh r1, [r0] + mov r0, r8 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r6, _081C30E0 + ldr r0, [r4] + adds r0, #0x9a + ldrh r1, [r0] + adds r0, r6, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r5, _081C30E4 + ldr r0, [r4] + adds r0, #0x9c + ldrh r1, [r0] + adds r0, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + mov r1, r8 + bl sub_081AF8E4 + movs r0, #1 + adds r1, r6, #0 + bl sub_081AF8E4 + movs r0, #2 + adds r1, r5, #0 + bl sub_081AF8E4 + ldr r0, _081C30E8 + ldr r1, _081C30EC + bl sub_081AF900 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C30D8: .4byte gUnknown_2021C40 +_081C30DC: .4byte gUnknown_203CBE8 +_081C30E0: .4byte gUnknown_2021C54 +_081C30E4: .4byte gUnknown_2021C68 +_081C30E8: .4byte gUnknown_2021C7C +_081C30EC: .4byte gUnknown_85ED2DE + thumb_func_end sub_081C3068 + + thumb_func_start sub_081C30F0 +sub_081C30F0: @ 0x081C30F0 + push {lr} + sub sp, #8 + ldr r0, _081C3114 + movs r1, #3 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C3118 + movs r2, #0 + str r2, [sp] + str r2, [sp, #4] + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081C3114: .4byte gUnknown_85ED134 +_081C3118: .4byte gUnknown_2021C7C + thumb_func_end sub_081C30F0 + + thumb_func_start sub_081C311C +sub_081C311C: @ 0x081C311C + push {r4, r5, r6, r7, lr} + sub sp, #8 + ldr r0, _081C3194 + ldr r0, [r0] + adds r6, r0, #0 + adds r6, #0x70 + ldr r0, _081C3198 + movs r1, #4 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r5, _081C319C + ldr r1, [r6, #0x10] + adds r0, r5, #0 + movs r2, #1 + movs r3, #7 + bl sub_080089D8 + movs r4, #0 + str r4, [sp] + str r4, [sp, #4] + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #8 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C31A0 + str r4, [sp] + str r4, [sp, #4] + adds r0, r7, #0 + movs r2, #0 + movs r3, #0x12 + bl sub_081C1ED8 + ldrb r0, [r6, #5] + cmp r0, #0x63 + bhi _081C31AC + ldr r4, _081C31A4 + adds r1, r0, #0 + adds r1, #1 + lsls r1, r1, #2 + ldr r3, _081C31A8 + ldrh r2, [r6] + lsls r0, r2, #3 + subs r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r2, r0 + adds r1, r1, r0 + adds r1, r1, r4 + ldr r1, [r1] + ldr r0, [r6, #0x10] + subs r1, r1, r0 + b _081C31AE + .align 2, 0 +_081C3194: .4byte gUnknown_203CBE8 +_081C3198: .4byte gUnknown_85ED134 +_081C319C: .4byte gUnknown_2021C40 +_081C31A0: .4byte gUnknown_85CA38B +_081C31A4: .4byte gUnknown_82F00B4 +_081C31A8: .4byte gUnknown_82F0D54 +_081C31AC: + movs r1, #0 +_081C31AE: + ldr r4, _081C31D4 + adds r0, r4, #0 + movs r2, #1 + movs r3, #6 + bl sub_080089D8 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0x10 + movs r3, #0x12 + bl sub_081C1ED8 + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C31D4: .4byte gUnknown_2021C40 + thumb_func_end sub_081C311C + + thumb_func_start sub_081C31D8 +sub_081C31D8: @ 0x081C31D8 + push {r4, lr} + movs r0, #0 + bl sub_081C335C + movs r0, #1 + bl sub_081C335C + movs r0, #2 + bl sub_081C335C + movs r0, #3 + bl sub_081C335C + ldr r4, _081C3220 + ldr r0, [r4] + ldr r1, _081C3224 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C323E + bl sub_081C377C + ldr r1, [r4] + ldr r0, _081C3228 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #4 + bne _081C3230 + ldr r0, _081C322C + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _081C323E + bl sub_081C36D4 + b _081C323E + .align 2, 0 +_081C3220: .4byte gUnknown_203CBE8 +_081C3224: .4byte 0x000040BC +_081C3228: .4byte 0x000040C6 +_081C322C: .4byte 0x000040C4 +_081C3230: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r0, [r1] + bl sub_081C36D4 +_081C323E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C31D8 + + thumb_func_start sub_081C3244 +sub_081C3244: @ 0x081C3244 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081C326C + adds r4, r0, r1 + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #7 + bhi _081C3350 + lsls r0, r0, #2 + ldr r1, _081C3270 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C326C: .4byte gUnknown_3005B68 +_081C3270: .4byte _081C3274 +_081C3274: @ jump table + .4byte _081C3294 @ case 0 + .4byte _081C329C @ case 1 + .4byte _081C32A4 @ case 2 + .4byte _081C32AC @ case 3 + .4byte _081C32B4 @ case 4 + .4byte _081C32D0 @ case 5 + .4byte _081C3312 @ case 6 + .4byte _081C3348 @ case 7 +_081C3294: + movs r0, #0 + bl sub_081C335C + b _081C3350 +_081C329C: + movs r0, #1 + bl sub_081C335C + b _081C3350 +_081C32A4: + movs r0, #2 + bl sub_081C335C + b _081C3350 +_081C32AC: + movs r0, #3 + bl sub_081C335C + b _081C3350 +_081C32B4: + ldr r0, _081C32C8 + ldr r0, [r0] + ldr r1, _081C32CC + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C3350 + bl sub_081C377C + b _081C3350 + .align 2, 0 +_081C32C8: .4byte gUnknown_203CBE8 +_081C32CC: .4byte 0x000040BC +_081C32D0: + ldr r0, _081C32F4 + ldr r1, [r0] + ldr r2, _081C32F8 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C3350 + ldr r0, _081C32FC + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #4 + bne _081C3304 + ldr r2, _081C3300 + adds r0, r1, r2 + ldrh r0, [r0] + strh r0, [r4, #2] + b _081C3350 + .align 2, 0 +_081C32F4: .4byte gUnknown_203CBE8 +_081C32F8: .4byte 0x000040BC +_081C32FC: .4byte 0x000040C6 +_081C3300: .4byte 0x000040C4 +_081C3304: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r1, #0x84 + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r4, #2] + b _081C3350 +_081C3312: + ldr r0, _081C333C + ldr r1, [r0] + ldr r2, _081C3340 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #3 + bne _081C3350 + adds r2, #8 + adds r0, r1, r2 + ldr r0, [r0] + ldr r1, _081C3344 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C3350 + ldrh r0, [r4, #2] + bl sub_081C36D4 + b _081C3350 + .align 2, 0 +_081C333C: .4byte gUnknown_203CBE8 +_081C3340: .4byte 0x000040BC +_081C3344: .4byte 0x00FFFFFF +_081C3348: + adds r0, r2, #0 + bl sub_080A8964 + b _081C3356 +_081C3350: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081C3356: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C3244 + + thumb_func_start sub_081C335C +sub_081C335C: @ 0x081C335C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + ldr r0, _081C3438 + ldr r0, [r0] + mov r8, r0 + ldr r4, _081C343C + adds r0, r4, #0 + movs r1, #0 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + lsls r1, r7, #1 + mov r0, r8 + adds r0, #0x84 + adds r0, r0, r1 + ldrh r5, [r0] + cmp r5, #0 + beq _081C3454 + mov r0, r8 + adds r0, #0xa4 + ldrb r1, [r0] + adds r0, r5, #0 + adds r2, r7, #0 + bl sub_0806B424 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r1, r5, #3 + ldr r0, _081C3440 + adds r1, r1, r0 + lsls r4, r7, #4 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + mov r0, sb + movs r2, #0 + adds r3, r4, #0 + bl sub_081C1ED8 + ldr r1, _081C3444 + mov sb, r1 + mov r5, r8 + adds r5, #0x8c + adds r5, r5, r7 + ldrb r1, [r5] + mov r0, sb + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _081C3448 + mov r8, r0 + adds r1, r6, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + mov r1, sb + bl sub_081AF8E4 + movs r0, #1 + mov r1, r8 + bl sub_081AF8E4 + ldr r1, _081C344C + mov r8, r1 + ldr r1, _081C3450 + mov r0, r8 + bl sub_081AF900 + ldrb r0, [r5] + adds r1, r6, #0 + bl sub_0814FBFC + adds r0, #9 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, sl + mov r1, r8 + movs r2, #0 + adds r3, r4, #0 + bl sub_081C1ED8 + b _081C3480 + .align 2, 0 +_081C3438: .4byte gUnknown_203CBE8 +_081C343C: .4byte gUnknown_85ED15C +_081C3440: .4byte gUnknown_82EACC4 +_081C3444: .4byte gUnknown_2021C40 +_081C3448: .4byte gUnknown_2021C54 +_081C344C: .4byte gUnknown_2021C7C +_081C3450: .4byte gUnknown_85ED2E7 +_081C3454: + ldr r1, _081C3490 + lsls r4, r7, #4 + adds r4, #2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r5, [sp] + movs r0, #1 + str r0, [sp, #4] + mov r0, sb + movs r2, #0 + adds r3, r4, #0 + bl sub_081C1ED8 + ldr r1, _081C3494 + str r5, [sp] + movs r0, #0xc + str r0, [sp, #4] + mov r0, sl + movs r2, #8 + adds r3, r4, #0 + bl sub_081C1ED8 +_081C3480: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C3490: .4byte gUnknown_85C9401 +_081C3494: .4byte gUnknown_85C9403 + thumb_func_end sub_081C335C + + thumb_func_start sub_081C3498 +sub_081C3498: @ 0x081C3498 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _081C3538 + movs r0, #0x18 + str r0, [sp] + movs r0, #0x20 + str r0, [sp, #4] + movs r0, #0xe + movs r1, #0 + movs r2, #0x28 + movs r3, #0 + bl sub_08003A34 + ldr r2, _081C34D0 + lsls r1, r5, #1 + adds r0, r1, r5 + lsls r0, r0, #2 + adds r2, r0, r2 + ldrb r0, [r2, #1] + adds r6, r1, #0 + cmp r0, #1 + bhi _081C34D8 + ldr r1, _081C34D4 + b _081C34E8 + .align 2, 0 +_081C34D0: .4byte gUnknown_82ED220 +_081C34D4: .4byte gUnknown_85C9406 +_081C34D8: + ldr r4, _081C350C + ldrb r1, [r2, #1] + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r1, r4, #0 +_081C34E8: + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0xe + movs r2, #0x28 + movs r3, #2 + bl sub_081C1ED8 + ldr r1, _081C3510 + adds r0, r6, r5 + lsls r0, r0, #2 + adds r1, r0, r1 + ldrb r0, [r1, #3] + cmp r0, #0 + bne _081C3518 + ldr r1, _081C3514 + b _081C3528 + .align 2, 0 +_081C350C: .4byte gUnknown_2021C40 +_081C3510: .4byte gUnknown_82ED220 +_081C3514: .4byte gUnknown_85C9406 +_081C3518: + ldr r4, _081C3540 + ldrb r1, [r1, #3] + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + adds r1, r4, #0 +_081C3528: + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #0xe + movs r2, #0x28 + movs r3, #0x12 + bl sub_081C1ED8 +_081C3538: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C3540: .4byte gUnknown_2021C40 + thumb_func_end sub_081C3498 + + thumb_func_start sub_081C3544 +sub_081C3544: @ 0x081C3544 + push {r4, lr} + movs r0, #0 + bl sub_081C335C + movs r0, #1 + bl sub_081C335C + movs r0, #2 + bl sub_081C335C + movs r0, #3 + bl sub_081C335C + ldr r4, _081C3584 + ldr r0, [r4] + ldr r1, _081C3588 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C357C + bl sub_081C377C + ldr r0, [r4] + ldr r1, _081C358C + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_081C3668 +_081C357C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C3584: .4byte gUnknown_203CBE8 +_081C3588: .4byte 0x000040BC +_081C358C: .4byte 0x000040C6 + thumb_func_end sub_081C3544 + + thumb_func_start sub_081C3590 +sub_081C3590: @ 0x081C3590 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + ldr r1, _081C35B8 + adds r4, r0, r1 + ldrh r0, [r4] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #6 + bhi _081C365C + lsls r0, r0, #2 + ldr r1, _081C35BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C35B8: .4byte gUnknown_3005B68 +_081C35BC: .4byte _081C35C0 +_081C35C0: @ jump table + .4byte _081C35DC @ case 0 + .4byte _081C35E4 @ case 1 + .4byte _081C35EC @ case 2 + .4byte _081C35F4 @ case 3 + .4byte _081C35FC @ case 4 + .4byte _081C3618 @ case 5 + .4byte _081C3654 @ case 6 +_081C35DC: + movs r0, #0 + bl sub_081C335C + b _081C365C +_081C35E4: + movs r0, #1 + bl sub_081C335C + b _081C365C +_081C35EC: + movs r0, #2 + bl sub_081C335C + b _081C365C +_081C35F4: + movs r0, #3 + bl sub_081C335C + b _081C365C +_081C35FC: + ldr r0, _081C3610 + ldr r0, [r0] + ldr r1, _081C3614 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C365C + bl sub_081C377C + b _081C365C + .align 2, 0 +_081C3610: .4byte gUnknown_203CBE8 +_081C3614: .4byte 0x000040BC +_081C3618: + ldr r0, _081C3644 + ldr r2, [r0] + ldr r1, _081C3648 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #3 + bne _081C365C + adds r1, #8 + adds r0, r2, r1 + ldr r0, [r0] + ldr r1, _081C364C + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + beq _081C365C + ldr r1, _081C3650 + adds r0, r2, r1 + ldrb r0, [r0] + bl sub_081C3668 + b _081C365C + .align 2, 0 +_081C3644: .4byte gUnknown_203CBE8 +_081C3648: .4byte 0x000040BC +_081C364C: .4byte 0x00FFFFFF +_081C3650: .4byte 0x000040C6 +_081C3654: + adds r0, r2, #0 + bl sub_080A8964 + b _081C3662 +_081C365C: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081C3662: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C3590 + + thumb_func_start sub_081C3668 +sub_081C3668: @ 0x081C3668 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #4 + bne _081C3684 + ldr r0, _081C367C + ldr r0, [r0] + ldr r1, _081C3680 + b _081C368C + .align 2, 0 +_081C367C: .4byte gUnknown_203CBE8 +_081C3680: .4byte 0x000040C4 +_081C3684: + ldr r0, _081C36C4 + ldr r0, [r0] + lsls r1, r1, #1 + adds r0, #0x84 +_081C368C: + adds r0, r0, r1 + ldrh r4, [r0] + cmp r4, #0 + beq _081C36BC + ldr r0, _081C36C8 + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r3, _081C36CC + ldr r2, _081C36D0 + lsls r1, r4, #3 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + movs r2, #0 + str r2, [sp] + str r2, [sp, #4] + movs r3, #2 + bl sub_081C1ED8 +_081C36BC: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C36C4: .4byte gUnknown_203CBE8 +_081C36C8: .4byte gUnknown_85ED15C +_081C36CC: .4byte gUnknown_8560BB4 +_081C36D0: .4byte gUnknown_8565FCC + thumb_func_end sub_081C3668 + + thumb_func_start sub_081C36D4 +sub_081C36D4: @ 0x081C36D4 + push {r4, r5, r6, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r6, r4, #0 + ldr r0, _081C3728 + movs r1, #2 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #0 + bl sub_08003B18 + cmp r4, #0 + beq _081C3768 + ldr r0, _081C372C + ldr r0, [r0] + ldr r1, _081C3730 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _081C3738 + adds r0, r4, #0 + bl sub_081C3498 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #3 + ldr r0, _081C3734 + adds r1, r1, r0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + b _081C3758 + .align 2, 0 +_081C3728: .4byte gUnknown_85ED15C +_081C372C: .4byte gUnknown_203CBE8 +_081C3730: .4byte 0x000040C0 +_081C3734: .4byte gUnknown_85E7FFC +_081C3738: + ldr r2, _081C3760 + ldr r1, _081C3764 + lsls r0, r6, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 +_081C3758: + adds r0, r5, #0 + bl sub_0800365C + b _081C376E + .align 2, 0 +_081C3760: .4byte gUnknown_8560BB4 +_081C3764: .4byte gUnknown_8565FCC +_081C3768: + adds r0, r5, #0 + bl sub_08003774 +_081C376E: + movs r0, #0 + bl sub_08199654 + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C36D4 + + thumb_func_start sub_081C377C +sub_081C377C: @ 0x081C377C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + ldr r4, _081C37C4 + adds r0, r4, #0 + movs r1, #0 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r7, r6, #0 + adds r0, r4, #0 + movs r1, #1 + bl sub_081C2620 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _081C37C8 + ldr r1, [r0] + ldr r2, _081C37CC + adds r0, r1, r2 + ldrh r2, [r0] + cmp r2, #0 + bne _081C37D4 + ldr r1, _081C37D0 + str r2, [sp] + movs r0, #1 + str r0, [sp, #4] + adds r0, r6, #0 + movs r2, #0 + movs r3, #0x42 + bl sub_081C1ED8 + b _081C3866 + .align 2, 0 +_081C37C4: .4byte gUnknown_85ED15C +_081C37C8: .4byte gUnknown_203CBE8 +_081C37CC: .4byte 0x000040C4 +_081C37D0: .4byte gUnknown_85C93C4 +_081C37D4: + ldrh r5, [r0] + ldr r2, _081C37FC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #2 + bne _081C3804 + lsls r1, r5, #3 + ldr r0, _081C3800 + adds r1, r1, r0 + movs r0, #0 + str r0, [sp] + movs r0, #6 + str r0, [sp, #4] + adds r0, r6, #0 + movs r2, #0 + movs r3, #0x42 + bl sub_081C1ED8 + b _081C381C + .align 2, 0 +_081C37FC: .4byte 0x000040C0 +_081C3800: .4byte gUnknown_82EACC4 +_081C3804: + lsls r1, r5, #3 + ldr r0, _081C3874 + adds r1, r1, r0 + movs r0, #0 + str r0, [sp] + movs r0, #5 + str r0, [sp, #4] + adds r0, r7, #0 + movs r2, #0 + movs r3, #0x42 + bl sub_081C1ED8 +_081C381C: + ldr r4, _081C3878 + ldr r1, _081C387C + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0, #4] + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r4, #0 + bl sub_081AF8E4 + movs r0, #1 + adds r1, r4, #0 + bl sub_081AF8E4 + ldr r4, _081C3880 + ldr r1, _081C3884 + adds r0, r4, #0 + bl sub_081AF900 + movs r0, #0 + str r0, [sp] + movs r0, #0xc + str r0, [sp, #4] + mov r0, r8 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0x42 + bl sub_081C1ED8 +_081C3866: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C3874: .4byte gUnknown_82EACC4 +_081C3878: .4byte gUnknown_2021C40 +_081C387C: .4byte gUnknown_82ED220 +_081C3880: .4byte gUnknown_2021C7C +_081C3884: .4byte gUnknown_85ED2E7 + thumb_func_end sub_081C377C + + thumb_func_start sub_081C3888 +sub_081C3888: @ 0x081C3888 + push {r4, lr} + sub sp, #8 + ldr r0, _081C38C0 + movs r1, #0 + bl sub_081C2620 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x38 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0x42 + bl sub_08003A34 + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C38C0: .4byte gUnknown_85ED15C + thumb_func_end sub_081C3888 + + thumb_func_start sub_081C38C4 +sub_081C38C4: @ 0x081C38C4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r0 + mov sl, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + mov r0, sl + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + ldr r5, _081C3974 + adds r0, r5, #0 + movs r1, #0 + bl sub_081C2620 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_081C2620 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sb + lsls r6, r0, #4 + movs r0, #0x38 + mov r8, r0 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + adds r3, r6, #0 + bl sub_08003A34 + mov r0, sl + lsls r7, r0, #4 + mov r0, r8 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + adds r3, r7, #0 + bl sub_08003A34 + movs r4, #0x30 + str r4, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + adds r3, r6, #0 + bl sub_08003A34 + str r4, [sp] + movs r0, #0x10 + str r0, [sp, #4] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + adds r3, r7, #0 + bl sub_08003A34 + mov r0, sb + bl sub_081C335C + mov r0, sl + bl sub_081C335C + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C3974: .4byte gUnknown_85ED15C + thumb_func_end sub_081C38C4 + + thumb_func_start sub_081C3978 +sub_081C3978: @ 0x081C3978 + push {r4, lr} + sub sp, #8 + ldr r0, _081C39AC + movs r1, #2 + bl sub_081C2620 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + ldr r1, _081C39B0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C1ED8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C39AC: .4byte gUnknown_85ED15C +_081C39B0: .4byte gUnknown_85CA487 + thumb_func_end sub_081C3978 + + thumb_func_start sub_081C39B4 +sub_081C39B4: @ 0x081C39B4 + push {r4, r5, lr} + movs r2, #0 + ldr r5, _081C39DC + ldr r4, _081C39E0 + movs r3, #0xff +_081C39BE: + ldr r0, [r5] + adds r0, r0, r4 + adds r0, r0, r2 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x1b + bls _081C39BE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C39DC: .4byte gUnknown_203CBE8 +_081C39E0: .4byte 0x000040D3 + thumb_func_end sub_081C39B4 + + thumb_func_start sub_081C39E4 +sub_081C39E4: @ 0x081C39E4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081C3A1C + ldr r0, [r5] + ldr r1, _081C3A20 + adds r0, r0, r1 + adds r1, r0, r4 + ldrb r0, [r1] + cmp r0, #0xff + beq _081C3A16 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081C3A24 + adds r0, r0, r1 + bl sub_08006E00 + ldr r0, [r5] + ldr r1, _081C3A20 + adds r0, r0, r1 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_081C3A16: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C3A1C: .4byte gUnknown_203CBE8 +_081C3A20: .4byte 0x000040D3 +_081C3A24: .4byte gUnknown_20205AC + thumb_func_end sub_081C39E4 + + thumb_func_start sub_081C3A28 +sub_081C3A28: @ 0x081C3A28 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r3, _081C3A64 + ldr r2, _081C3A68 + ldr r2, [r2] + ldr r4, _081C3A6C + adds r2, r2, r4 + adds r2, r2, r0 + ldrb r0, [r2] + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + adds r2, #0x3e + movs r0, #1 + ands r1, r0 + lsls r1, r1, #2 + ldrb r3, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C3A64: .4byte gUnknown_20205AC +_081C3A68: .4byte gUnknown_203CBE8 +_081C3A6C: .4byte 0x000040D3 + thumb_func_end sub_081C3A28 + + thumb_func_start sub_081C3A70 +sub_081C3A70: @ 0x081C3A70 + push {r4, lr} + movs r4, #3 +_081C3A74: + ldr r0, _081C3A9C + ldr r0, [r0] + ldr r1, _081C3AA0 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xff + beq _081C3A8C + adds r0, r4, #0 + movs r1, #1 + bl sub_081C3A28 +_081C3A8C: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0x1b + bls _081C3A74 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C3A9C: .4byte gUnknown_203CBE8 +_081C3AA0: .4byte 0x000040D3 + thumb_func_end sub_081C3A70 + + thumb_func_start sub_081C3AA4 +sub_081C3AA4: @ 0x081C3AA4 + push {lr} + ldr r0, _081C3AC0 + ldr r0, [r0] + ldr r1, _081C3AC4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #2 + beq _081C3AD4 + cmp r0, #2 + bgt _081C3AC8 + cmp r0, #0 + beq _081C3ACE + b _081C3AE6 + .align 2, 0 +_081C3AC0: .4byte gUnknown_203CBE8 +_081C3AC4: .4byte 0x000040C0 +_081C3AC8: + cmp r0, #3 + beq _081C3ADE + b _081C3AE6 +_081C3ACE: + bl sub_081C3BC4 + b _081C3AE6 +_081C3AD4: + bl sub_081C3C44 + bl sub_081C3D14 + b _081C3AE6 +_081C3ADE: + bl sub_081C3CA8 + bl sub_081C3D14 +_081C3AE6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C3AA4 + + thumb_func_start sub_081C3AEC +sub_081C3AEC: @ 0x081C3AEC + push {r4, r5, lr} + movs r4, #3 + ldr r5, _081C3B30 +_081C3AF2: + ldr r0, [r5] + ldr r1, _081C3B34 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0xff + bne _081C3B16 + ldr r0, _081C3B38 + movs r1, #0 + movs r2, #0 + movs r3, #2 + bl sub_08006B0C + ldr r1, [r5] + ldr r2, _081C3B34 + adds r1, r1, r2 + adds r1, r1, r4 + strb r0, [r1] +_081C3B16: + adds r0, r4, #0 + movs r1, #1 + bl sub_081C3A28 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #7 + bls _081C3AF2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C3B30: .4byte gUnknown_203CBE8 +_081C3B34: .4byte 0x000040D3 +_081C3B38: .4byte gUnknown_85ED414 + thumb_func_end sub_081C3AEC + + thumb_func_start sub_081C3B3C +sub_081C3B3C: @ 0x081C3B3C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r0, _081C3BB4 + ldr r0, [r0] + ldr r1, _081C3BB8 + adds r0, r0, r1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _081C3BBC + adds r4, r4, r0 + adds r0, r4, #0 + adds r1, r5, #0 + str r3, [sp] + bl sub_08007EC0 + ldr r0, _081C3BC0 + adds r5, r5, r0 + ldrb r1, [r5] + lsls r1, r1, #4 + ldrb r2, [r4, #5] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #5] + adds r6, #0x10 + strh r6, [r4, #0x20] + movs r0, #8 + add r8, r0 + mov r1, r8 + strh r1, [r4, #0x22] + ldr r3, [sp] + adds r0, r3, #0 + movs r1, #0 + bl sub_081C3A28 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C3BB4: .4byte gUnknown_203CBE8 +_081C3BB8: .4byte 0x000040D3 +_081C3BBC: .4byte gUnknown_20205AC +_081C3BC0: .4byte gUnknown_85ED42C + thumb_func_end sub_081C3B3C + + thumb_func_start sub_081C3BC4 +sub_081C3BC4: @ 0x081C3BC4 + push {r4, r5, lr} + ldr r0, _081C3BEC + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0x70 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _081C3BF0 + movs r0, #9 + movs r1, #0x78 + movs r2, #0x30 + movs r3, #3 + bl sub_081C3B3C + movs r0, #4 + movs r1, #1 + bl sub_081C3A28 + b _081C3C3C + .align 2, 0 +_081C3BEC: .4byte gUnknown_203CBE8 +_081C3BF0: + ldr r4, _081C3C30 + ldrh r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r0, [r0, #6] + movs r1, #0x78 + movs r2, #0x30 + movs r3, #3 + bl sub_081C3B3C + ldrh r1, [r5] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r0, r4 + ldrb r0, [r1, #6] + ldrb r2, [r1, #7] + cmp r0, r2 + beq _081C3C34 + ldrb r0, [r1, #7] + movs r1, #0xa0 + movs r2, #0x30 + movs r3, #4 + bl sub_081C3B3C + movs r0, #4 + movs r1, #0 + bl sub_081C3A28 + b _081C3C3C + .align 2, 0 +_081C3C30: .4byte gUnknown_82F0D54 +_081C3C34: + movs r0, #4 + movs r1, #1 + bl sub_081C3A28 +_081C3C3C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C3BC4 + + thumb_func_start sub_081C3C44 +sub_081C3C44: @ 0x081C3C44 + push {r4, r5, r6, lr} + ldr r0, _081C3C84 + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0x70 + movs r4, #0 + ldr r6, _081C3C88 +_081C3C52: + lsls r0, r4, #1 + adds r1, r5, #0 + adds r1, #0x14 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _081C3C8C + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #2] + lsls r2, r4, #0x1c + movs r1, #0x80 + lsls r1, r1, #0x16 + adds r2, r2, r1 + lsrs r2, r2, #0x18 + adds r3, r4, #3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #0x57 + bl sub_081C3B3C + b _081C3C98 + .align 2, 0 +_081C3C84: .4byte gUnknown_203CBE8 +_081C3C88: .4byte gUnknown_82ED220 +_081C3C8C: + adds r0, r4, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081C3A28 +_081C3C98: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081C3C52 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C3C44 + + thumb_func_start sub_081C3CA8 +sub_081C3CA8: @ 0x081C3CA8 + push {r4, r5, lr} + ldr r0, _081C3CF0 + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0x70 + movs r4, #0 +_081C3CB4: + lsls r0, r4, #1 + adds r1, r5, #0 + adds r1, #0x14 + adds r2, r1, r0 + ldrh r0, [r2] + cmp r0, #0 + beq _081C3CF8 + ldr r1, _081C3CF4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #5 + movs r1, #0x90 + lsls r1, r1, #0x15 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + lsls r2, r4, #0x1c + movs r1, #0x80 + lsls r1, r1, #0x16 + adds r2, r2, r1 + lsrs r2, r2, #0x18 + adds r3, r4, #3 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r1, #0x57 + bl sub_081C3B3C + b _081C3D04 + .align 2, 0 +_081C3CF0: .4byte gUnknown_203CBE8 +_081C3CF4: .4byte gUnknown_8565FCC +_081C3CF8: + adds r0, r4, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_081C3A28 +_081C3D04: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081C3CB4 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C3CA8 + + thumb_func_start sub_081C3D14 +sub_081C3D14: @ 0x081C3D14 + push {lr} + ldr r0, _081C3D30 + ldr r1, [r0] + ldr r0, _081C3D34 + adds r3, r1, r0 + ldrh r0, [r3] + cmp r0, #0 + bne _081C3D38 + movs r0, #7 + movs r1, #1 + bl sub_081C3A28 + b _081C3D84 + .align 2, 0 +_081C3D30: .4byte gUnknown_203CBE8 +_081C3D34: .4byte 0x000040C4 +_081C3D38: + ldr r2, _081C3D5C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #2 + bne _081C3D64 + ldr r2, _081C3D60 + ldrh r1, [r3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #2] + movs r1, #0x57 + movs r2, #0x60 + movs r3, #7 + bl sub_081C3B3C + b _081C3D84 + .align 2, 0 +_081C3D5C: .4byte 0x000040C0 +_081C3D60: .4byte gUnknown_82ED220 +_081C3D64: + ldr r1, _081C3D88 + ldrh r0, [r3] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #5 + movs r1, #0x90 + lsls r1, r1, #0x15 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + movs r1, #0x57 + movs r2, #0x60 + movs r3, #7 + bl sub_081C3B3C +_081C3D84: + pop {r0} + bx r0 + .align 2, 0 +_081C3D88: .4byte gUnknown_8565FCC + thumb_func_end sub_081C3D14 + + thumb_func_start sub_081C3D8C +sub_081C3D8C: @ 0x081C3D8C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _081C3E0C + ldr r2, [r2] + adds r0, #3 + ldr r3, _081C3E10 + adds r2, r2, r3 + adds r0, r2, r0 + ldrb r0, [r0] + lsls r4, r0, #4 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r5, _081C3E14 + adds r4, r4, r5 + adds r1, #3 + adds r2, r2, r1 + ldrb r0, [r2] + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r5 + adds r5, r4, #0 + adds r5, #0x2a + ldrb r1, [r5] + adds r2, r3, #0 + adds r2, #0x2a + ldrb r0, [r2] + strb r0, [r5] + strb r1, [r2] + ldrb r6, [r4, #5] + lsrs r5, r6, #4 + ldrb r2, [r3, #5] + lsrs r2, r2, #4 + lsls r2, r2, #4 + movs r1, #0xf + adds r0, r1, #0 + ands r0, r6 + orrs r0, r2 + strb r0, [r4, #5] + lsls r5, r5, #4 + ldrb r0, [r3, #5] + ands r1, r0 + orrs r1, r5 + strb r1, [r3, #5] + adds r4, #0x3f + ldrb r0, [r4] + movs r2, #4 + orrs r0, r2 + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4] + adds r3, #0x3f + ldrb r0, [r3] + orrs r0, r2 + ands r0, r1 + strb r0, [r3] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C3E0C: .4byte gUnknown_203CBE8 +_081C3E10: .4byte 0x000040D3 +_081C3E14: .4byte gUnknown_20205AC + thumb_func_end sub_081C3D8C + + thumb_func_start sub_081C3E18 +sub_081C3E18: @ 0x081C3E18 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r6, r1, #0 + ldr r0, _081C3E40 + ldr r2, [r0] + adds r5, r2, #0 + adds r5, #0x70 + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _081C3E44 + cmp r0, #1 + bne _081C3E34 + b _081C3F58 +_081C3E34: + adds r0, r3, #0 + bl sub_081C3FBC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081C3F78 + .align 2, 0 +_081C3E40: .4byte gUnknown_203CBE8 +_081C3E44: + ldr r0, _081C3E78 + ldr r1, _081C3E7C + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C3EA4 + ldr r1, _081C3E80 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #3 + bl sub_08068438 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C3E8C + ldrh r2, [r5, #2] + lsls r0, r2, #3 + ldr r1, _081C3E84 + adds r0, r0, r1 + ldr r1, _081C3E88 + ldr r1, [r1] + ldr r1, [r1, #8] + b _081C3EEA + .align 2, 0 +_081C3E78: .4byte gUnknown_3002360 +_081C3E7C: .4byte 0x00000439 +_081C3E80: .4byte 0x000040BE +_081C3E84: .4byte gUnknown_82DDA1C +_081C3E88: .4byte gUnknown_2024178 +_081C3E8C: + ldrh r2, [r5, #2] + lsls r0, r2, #3 + ldr r1, _081C3E9C + adds r0, r0, r1 + ldr r1, _081C3EA0 + ldr r1, [r1] + ldr r1, [r1, #8] + b _081C3EC8 + .align 2, 0 +_081C3E9C: .4byte gUnknown_82DDA1C +_081C3EA0: .4byte gUnknown_2024178 +_081C3EA4: + ldr r0, _081C3ED0 + ldr r3, [r0] + cmp r3, #0 + beq _081C3EF8 + ldr r1, [r2] + ldr r0, _081C3ED4 + cmp r1, r0 + beq _081C3EBE + ldr r1, _081C3ED8 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _081C3EE0 +_081C3EBE: + ldrh r2, [r5, #2] + lsls r0, r2, #3 + ldr r1, _081C3EDC + adds r0, r0, r1 + ldr r1, [r3, #8] +_081C3EC8: + ldr r3, [r5, #0xc] + bl sub_08034954 + b _081C3F70 + .align 2, 0 +_081C3ED0: .4byte gUnknown_2024178 +_081C3ED4: .4byte gUnknown_2024190 +_081C3ED8: .4byte 0x000040BC +_081C3EDC: .4byte gUnknown_82DDA1C +_081C3EE0: + ldrh r2, [r5, #2] + lsls r0, r2, #3 + ldr r1, _081C3EF4 + adds r0, r0, r1 + ldr r1, [r3, #8] +_081C3EEA: + ldr r3, [r5, #0xc] + bl sub_080349A8 + b _081C3F70 + .align 2, 0 +_081C3EF4: .4byte gUnknown_82DDA1C +_081C3EF8: + ldr r1, [r2] + ldr r0, _081C3F28 + cmp r1, r0 + beq _081C3F0A + ldr r1, _081C3F2C + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #2 + bne _081C3F34 +_081C3F0A: + ldrh r4, [r5, #2] + lsls r4, r4, #3 + ldr r0, _081C3F30 + adds r4, r4, r0 + movs r0, #0 + movs r1, #1 + bl sub_0806EF7C + adds r1, r0, #0 + ldrh r2, [r5, #2] + ldr r3, [r5, #0xc] + adds r0, r4, #0 + bl sub_08034954 + b _081C3F70 + .align 2, 0 +_081C3F28: .4byte gUnknown_2024190 +_081C3F2C: .4byte 0x000040BC +_081C3F30: .4byte gUnknown_82DDA1C +_081C3F34: + ldrh r4, [r5, #2] + lsls r4, r4, #3 + ldr r0, _081C3F54 + adds r4, r4, r0 + movs r0, #0 + movs r1, #1 + bl sub_0806EF7C + adds r1, r0, #0 + ldrh r2, [r5, #2] + ldr r3, [r5, #0xc] + adds r0, r4, #0 + bl sub_080349A8 + b _081C3F70 + .align 2, 0 +_081C3F54: .4byte gUnknown_82DDA1C +_081C3F58: + ldrh r0, [r5, #2] + ldr r1, [r5, #0x48] + ldr r2, [r5, #0xc] + bl sub_0806E258 + adds r4, r0, #0 + bl sub_080343E4 + ldrh r0, [r4, #4] + movs r1, #1 + bl sub_08069BA8 +_081C3F70: + ldrh r0, [r6] + adds r0, #1 + strh r0, [r6] + movs r0, #0xff +_081C3F78: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C3E18 + + thumb_func_start sub_081C3F80 +sub_081C3F80: @ 0x081C3F80 + push {r4, lr} + ldr r0, _081C3FA8 + ldr r1, [r0] + adds r4, r1, #0 + adds r4, #0x70 + ldrb r0, [r4, #4] + cmp r0, #0 + bne _081C3FB6 + adds r0, r1, #0 + adds r0, #0xc + bl sub_0805ED2C + cmp r0, #1 + bne _081C3FAC + ldrh r0, [r4, #2] + movs r1, #0 + movs r2, #0 + bl sub_080A2BAC + b _081C3FB6 + .align 2, 0 +_081C3FA8: .4byte gUnknown_203CBE8 +_081C3FAC: + ldrh r0, [r4, #2] + movs r1, #0 + movs r2, #0xb + bl sub_080A2BAC +_081C3FB6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C3F80 + + thumb_func_start sub_081C3FBC +sub_081C3FBC: @ 0x081C3FBC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _081C4020 + ldr r6, [r0] + adds r6, #0x70 + ldr r0, _081C4024 + movs r1, #0x28 + movs r2, #0x40 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r4, r0, #4 + add r4, r8 + lsls r4, r4, #2 + ldr r5, _081C4028 + adds r7, r4, r5 + adds r0, r7, #0 + bl sub_0800730C + ldrh r0, [r6, #2] + movs r1, #0 + strh r0, [r7, #0x2e] + strh r1, [r7, #0x32] + adds r5, #0x1c + adds r4, r4, r5 + ldr r0, _081C402C + str r0, [r4] + ldrb r1, [r7, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r7, #5] + ldrh r0, [r6, #2] + bl sub_0806E2CC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C4030 + adds r0, r7, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _081C403E + .align 2, 0 +_081C4020: .4byte gUnknown_203CBE8 +_081C4024: .4byte gUnknown_2024640 +_081C4028: .4byte gUnknown_20205AC +_081C402C: .4byte sub_081C404C +_081C4030: + adds r2, r7, #0 + adds r2, #0x3f + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081C403E: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C3FBC + + thumb_func_start sub_081C404C +sub_081C404C: @ 0x081C404C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _081C408C + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0x70 + ldr r0, _081C4090 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081C4086 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _081C4086 + ldrh r0, [r4, #0x2e] + bl sub_0806E2CC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x30] + bl sub_081C3F80 + ldrh r1, [r4, #0x2e] + ldrb r2, [r5, #4] + adds r0, r4, #0 + bl sub_0806E898 +_081C4086: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C408C: .4byte gUnknown_203CBE8 +_081C4090: .4byte gUnknown_2037C74 + thumb_func_end sub_081C404C + + thumb_func_start sub_081C4094 +sub_081C4094: @ 0x081C4094 + ldr r1, _081C409C + strb r0, [r1] + bx lr + .align 2, 0 +_081C409C: .4byte gUnknown_203CBF0 + thumb_func_end sub_081C4094 + + thumb_func_start sub_081C40A0 +sub_081C40A0: @ 0x081C40A0 + push {r4, lr} + ldr r4, _081C40B8 + ldrb r0, [r4] + cmp r0, #0xff + beq _081C40B2 + bl sub_080A8964 + movs r0, #0xff + strb r0, [r4] +_081C40B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C40B8: .4byte gUnknown_203CBF0 + thumb_func_end sub_081C40A0 + + thumb_func_start sub_081C40BC +sub_081C40BC: @ 0x081C40BC + push {lr} + ldr r2, _081C40E0 + ldr r0, _081C40E4 + ldr r0, [r0] + ldr r1, _081C40E8 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081C40EC + cmp r1, r0 + beq _081C40F0 + movs r0, #1 + b _081C40F2 + .align 2, 0 +_081C40E0: .4byte gUnknown_20205AC +_081C40E4: .4byte gUnknown_203CBE8 +_081C40E8: .4byte 0x000040D3 +_081C40EC: .4byte sub_08007140 +_081C40F0: + movs r0, #0 +_081C40F2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C40BC + + thumb_func_start sub_081C40F8 +sub_081C40F8: @ 0x081C40F8 + push {r4, r5, r6, lr} + ldr r6, _081C4174 + ldr r5, _081C4178 + ldr r0, [r5] + ldr r4, _081C417C + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2c + ldrb r1, [r0] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081C4180 + str r1, [r0] + bl sub_0806E924 + ldr r0, [r5] + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #5] + lsrs r0, r0, #4 + lsls r3, r0, #4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + orrs r3, r0 + movs r2, #0 + ldr r5, _081C4184 + ldr r4, _081C4188 +_081C4154: + adds r0, r2, r3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xf + adds r1, r0, r5 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0xf + bls _081C4154 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C4174: .4byte gUnknown_20205AC +_081C4178: .4byte gUnknown_203CBE8 +_081C417C: .4byte 0x000040D3 +_081C4180: .4byte sub_08007140 +_081C4184: .4byte gUnknown_20373B4 +_081C4188: .4byte gUnknown_20377B4 + thumb_func_end sub_081C40F8 + + thumb_func_start sub_081C418C +sub_081C418C: @ 0x081C418C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r1, _081C41DC + ldr r2, _081C41E0 + adds r0, r1, #0 + bl sub_081204B4 + adds r4, r0, #0 + ldr r6, _081C41E4 + ldr r0, [r6] + str r4, [r0, #8] + cmp r4, #0 + beq _081C41D6 + adds r0, r5, #0 + movs r1, #8 + bl sub_0806A058 + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + ldr r1, [r6] + ldr r2, [r1, #8] + movs r0, #0x3c + strh r0, [r2, #0x20] + ldr r2, [r1, #8] + movs r0, #0x1a + strh r0, [r2, #0x22] + ldr r2, [r1, #8] + ldrb r1, [r2, #5] + subs r0, #0x27 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #5] +_081C41D6: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C41DC: .4byte 0x00007533 +_081C41E0: .4byte gUnknown_85ED570 +_081C41E4: .4byte gUnknown_203CBE8 + thumb_func_end sub_081C418C + + thumb_func_start sub_081C41E8 +sub_081C41E8: @ 0x081C41E8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081C4208 + ldr r0, [r0] + ldr r0, [r0, #8] + bl sub_08006E00 + ldr r0, _081C420C + bl sub_08008280 + adds r0, r4, #0 + bl sub_081C418C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C4208: .4byte gUnknown_203CBE8 +_081C420C: .4byte 0x00007533 + thumb_func_end sub_081C41E8 + + thumb_func_start sub_081C4210 +sub_081C4210: @ 0x081C4210 + push {r4, lr} + movs r1, #0x26 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_08170B68 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_08076480 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081C427C + adds r0, r0, r1 + movs r1, #0x10 + movs r2, #0x78 + movs r3, #0 + bl sub_08006B0C + ldr r2, _081C4280 + ldr r1, [r2] + ldr r3, _081C4284 + adds r1, r1, r3 + strb r0, [r1] + ldr r4, _081C4288 + ldr r2, [r2] + adds r2, r2, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081C428C + str r1, [r0] + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C427C: .4byte gUnknown_82FCF94 +_081C4280: .4byte gUnknown_203CBE8 +_081C4284: .4byte 0x000040D4 +_081C4288: .4byte gUnknown_20205AC +_081C428C: .4byte sub_08007140 + thumb_func_end sub_081C4210 + + thumb_func_start sub_081C4290 +sub_081C4290: @ 0x081C4290 + push {r4, r5, lr} + ldr r5, _081C42E0 + ldr r0, [r5] + ldr r1, _081C42E4 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _081C42AE + ldr r0, _081C42E8 + movs r1, #0x40 + movs r2, #0x90 + movs r3, #0 + bl sub_08006B0C + strb r0, [r4] +_081C42AE: + ldr r0, [r5] + adds r0, #0xc + bl sub_081B1D2C + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _081C42F0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081C42EC + adds r0, r0, r1 + subs r1, r2, #1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 + movs r0, #2 + movs r1, #0 + bl sub_081C3A28 + b _081C42F8 + .align 2, 0 +_081C42E0: .4byte gUnknown_203CBE8 +_081C42E4: .4byte 0x000040D5 +_081C42E8: .4byte gUnknown_85ED558 +_081C42EC: .4byte gUnknown_20205AC +_081C42F0: + movs r0, #2 + movs r1, #1 + bl sub_081C3A28 +_081C42F8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4290 + + thumb_func_start sub_081C4300 +sub_081C4300: @ 0x081C4300 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r0, _081C4368 + ldr r1, _081C436C + add r1, r8 + ldr r0, [r0] + adds r7, r0, r1 + ldr r1, _081C4370 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bls _081C43DA + movs r0, #0 + mov sb, r0 + mov r1, r8 + cmp r1, #8 + bne _081C4332 + movs r0, #1 + mov sb, r0 +_081C4332: + movs r5, #0 + ldr r6, _081C4374 + mov sl, r5 +_081C4338: + lsls r1, r5, #0x14 + movs r0, #0xb0 + lsls r0, r0, #0xf + adds r1, r1, r0 + asrs r1, r1, #0x10 + ldr r0, _081C4378 + movs r2, #0x28 + mov r3, sb + bl sub_08006B0C + adds r1, r7, r5 + strb r0, [r1] + adds r4, r1, #0 + cmp r5, #0 + bne _081C437C + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #4 + bl sub_08007EC0 + b _081C43A2 + .align 2, 0 +_081C4368: .4byte gUnknown_203CBE8 +_081C436C: .4byte 0x000040D3 +_081C4370: .4byte 0x000040C0 +_081C4374: .4byte gUnknown_20205AC +_081C4378: .4byte gUnknown_85ED4D4 +_081C437C: + cmp r5, #9 + bne _081C4392 + ldrb r1, [r7, #9] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #5 + bl sub_08007EC0 + b _081C43A2 +_081C4392: + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #6 + bl sub_08007EC0 +_081C43A2: + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081C43E8 + str r1, [r0] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, r8 + strh r1, [r0, #0x2e] + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + mov r1, sl + strh r1, [r0, #0x30] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _081C4338 +_081C43DA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C43E8: .4byte sub_081C43EC + thumb_func_end sub_081C4300 + + thumb_func_start sub_081C43EC +sub_081C43EC: @ 0x081C43EC + push {lr} + adds r3, r0, #0 + adds r0, #0x2a + ldrb r0, [r0] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _081C4424 + ldrh r0, [r3, #0x30] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strh r0, [r3, #0x30] + cmp r0, #0x18 + ble _081C4418 + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + b _081C4432 +_081C4418: + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + b _081C4430 +_081C4424: + movs r0, #0 + strh r0, [r3, #0x30] + adds r2, r3, #0 + adds r2, #0x3e + ldrb r1, [r2] + subs r0, #5 +_081C4430: + ands r0, r1 +_081C4432: + strb r0, [r2] + movs r1, #0x2e + ldrsh r0, [r3, r1] + cmp r0, #8 + bne _081C444C + ldr r0, _081C4444 + ldr r0, [r0] + ldr r1, _081C4448 + b _081C4452 + .align 2, 0 +_081C4444: .4byte gUnknown_203CBE8 +_081C4448: .4byte 0x000040C6 +_081C444C: + ldr r0, _081C4460 + ldr r0, [r0] + ldr r1, _081C4464 +_081C4452: + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #4 + strh r0, [r3, #0x26] + pop {r0} + bx r0 + .align 2, 0 +_081C4460: .4byte gUnknown_203CBE8 +_081C4464: .4byte 0x000040C7 + thumb_func_end sub_081C43EC + + thumb_func_start sub_081C4468 +sub_081C4468: @ 0x081C4468 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r4, #0 +_081C4470: + adds r0, r5, r4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081C39E4 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _081C4470 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4468 + + thumb_func_start sub_081C448C +sub_081C448C: @ 0x081C448C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r0, _081C44D0 + ldr r0, [r0] + ldr r1, _081C44D4 + adds r5, r0, r1 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #0x18 + movs r4, #0 + ldr r7, _081C44D8 + movs r2, #0x80 + lsls r2, r2, #0x13 + adds r2, r2, r0 + mov sb, r2 + lsrs r6, r0, #0x18 + movs r1, #0xa0 + lsls r1, r1, #0x13 + adds r1, r1, r0 + mov r8, r1 +_081C44BC: + cmp r4, #0 + bne _081C44DC + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r2, sb + b _081C44EC + .align 2, 0 +_081C44D0: .4byte gUnknown_203CBE8 +_081C44D4: .4byte 0x000040DB +_081C44D8: .4byte gUnknown_20205AC +_081C44DC: + cmp r4, #9 + bne _081C44F4 + ldrb r1, [r5, #9] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + mov r2, r8 +_081C44EC: + lsrs r1, r2, #0x18 + bl sub_08007EC0 + b _081C450A +_081C44F4: + adds r0, r5, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + adds r1, r6, #6 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_08007EC0 +_081C450A: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _081C44BC + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C448C + + thumb_func_start sub_081C4520 +sub_081C4520: @ 0x081C4520 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C456C + ldr r2, _081C4570 + adds r0, r0, r2 + ldr r1, [r1] + adds r5, r1, r0 + movs r3, #0 + ldr r4, _081C4574 + movs r7, #5 + rsbs r7, r7, #0 + movs r6, #0 +_081C453A: + adds r2, r5, r3 + ldrb r1, [r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + strh r6, [r0, #0x30] + ldrb r0, [r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r4 + adds r1, #0x3e + ldrb r2, [r1] + adds r0, r7, #0 + ands r0, r2 + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #9 + bls _081C453A + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C456C: .4byte gUnknown_203CBE8 +_081C4570: .4byte 0x000040D3 +_081C4574: .4byte gUnknown_20205AC + thumb_func_end sub_081C4520 + + thumb_func_start sub_081C4578 +sub_081C4578: @ 0x081C4578 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + ldr r4, _081C45D8 + movs r0, #4 + bl sub_08000BC8 + str r0, [r4] + ldr r1, [r5] + lsls r0, r1, #0x14 + lsrs r4, r0, #0x1e + cmp r4, #0 + bne _081C45E4 + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r1, #8 + movs r2, #0 + bl sub_08001B70 + ldr r3, [r5] + lsls r0, r3, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _081C45DC + lsls r3, r3, #0x16 + lsrs r3, r3, #0x18 + str r4, [sp] + movs r2, #0 + bl sub_08199728 + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _081C45E0 + movs r2, #1 + str r2, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, [r5] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x18 + str r4, [sp] + movs r2, #0x20 + movs r3, #0x20 + bl sub_081999D4 + b _081C4636 + .align 2, 0 +_081C45D8: .4byte gUnknown_203CBF4 +_081C45DC: .4byte gUnknown_85ED5F0 +_081C45E0: .4byte gUnknown_85EE344 +_081C45E4: + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r1, #8 + movs r2, #2 + bl sub_08001B70 + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #9 + movs r2, #1 + bl sub_08001B70 + ldr r3, [r5] + lsls r0, r3, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _081C4680 + lsls r3, r3, #0x16 + lsrs r3, r3, #0x18 + movs r2, #0 + str r2, [sp] + bl sub_08199728 + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldr r1, _081C4684 + movs r4, #1 + str r4, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, [r5] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x18 + str r4, [sp] + movs r2, #0x40 + movs r3, #0x40 + bl sub_081999D4 +_081C4636: + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #4 + movs r2, #1 + bl sub_08001B70 + ldr r0, _081C4688 + ldr r1, _081C468C + ldr r2, _081C4690 + bl CpuSet + ldr r0, _081C4694 + ldr r1, [r0] + ldr r0, [r5] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r1] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C4680: .4byte gUnknown_85EE658 +_081C4684: .4byte gUnknown_85EF3B4 +_081C4688: .4byte gUnknown_85ED590 +_081C468C: .4byte gUnknown_2037494 +_081C4690: .4byte 0x04000018 +_081C4694: .4byte gUnknown_203CBF4 + thumb_func_end sub_081C4578 + + thumb_func_start sub_081C4698 +sub_081C4698: @ 0x081C4698 + push {lr} + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C46A8 + movs r0, #1 + b _081C46B4 +_081C46A8: + ldr r0, _081C46B8 + ldr r0, [r0] + ldrb r0, [r0] + bl sub_08001B48 + movs r0, #0 +_081C46B4: + pop {r1} + bx r1 + .align 2, 0 +_081C46B8: .4byte gUnknown_203CBF4 + thumb_func_end sub_081C4698 + + thumb_func_start sub_081C46BC +sub_081C46BC: @ 0x081C46BC + push {r4, lr} + ldr r4, _081C46D4 + ldr r0, [r4] + cmp r0, #0 + beq _081C46CE + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_081C46CE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C46D4: .4byte gUnknown_203CBF4 + thumb_func_end sub_081C46BC + + thumb_func_start sub_081C46D8 +sub_081C46D8: @ 0x081C46D8 + push {lr} + adds r1, r0, #0 + ldr r0, _081C46F0 + ldr r0, [r0] + ldrb r0, [r0] + lsls r1, r1, #8 + movs r2, #0 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 +_081C46F0: .4byte gUnknown_203CBF4 + thumb_func_end sub_081C46D8 + + thumb_func_start sub_081C46F4 +sub_081C46F4: @ 0x081C46F4 + ldr r1, _081C4700 + movs r0, #0 + strh r0, [r1, #6] + strh r0, [r1, #8] + bx lr + .align 2, 0 +_081C4700: .4byte gUnknown_203CBFC + thumb_func_end sub_081C46F4 + + thumb_func_start sub_081C4704 +sub_081C4704: @ 0x081C4704 + push {lr} + ldr r1, _081C4714 + movs r0, #0 + bl sub_081C47A0 + pop {r0} + bx r0 + .align 2, 0 +_081C4714: .4byte sub_08085AFC + thumb_func_end sub_081C4704 + + thumb_func_start sub_081C4718 +sub_081C4718: @ 0x081C4718 + push {lr} + ldr r1, _081C4728 + movs r0, #1 + bl sub_081C47A0 + pop {r0} + bx r0 + .align 2, 0 +_081C4728: .4byte sub_0805996C + thumb_func_end sub_081C4718 + + thumb_func_start sub_081C472C +sub_081C472C: @ 0x081C472C + push {lr} + bl sub_080987DC + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + ldr r0, _081C4748 + movs r1, #0xa + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081C4748: .4byte sub_081C474C + thumb_func_end sub_081C472C + + thumb_func_start sub_081C474C +sub_081C474C: @ 0x081C474C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081C477C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081C4776 + bl sub_0808569C + ldr r0, _081C4780 + ldr r1, _081C4784 + str r1, [r0] + ldr r1, _081C4788 + movs r0, #3 + bl sub_081C47A0 + adds r0, r4, #0 + bl sub_080A8964 +_081C4776: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C477C: .4byte gUnknown_2037C74 +_081C4780: .4byte gUnknown_3005B10 +_081C4784: .4byte sub_081B9068 +_081C4788: .4byte sub_08085A30 + thumb_func_end sub_081C474C + + thumb_func_start sub_081C478C +sub_081C478C: @ 0x081C478C + push {lr} + ldr r0, _081C479C + ldr r1, [r0] + movs r0, #4 + bl sub_081C47A0 + pop {r0} + bx r0 + .align 2, 0 +_081C479C: .4byte gUnknown_203CBFC + thumb_func_end sub_081C478C + + thumb_func_start sub_081C47A0 +sub_081C47A0: @ 0x081C47A0 + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r6, _081C4804 + ldr r0, _081C4808 + bl sub_08000BDC + str r0, [r6] + cmp r4, #4 + beq _081C47BA + ldr r0, _081C480C + strb r4, [r0, #4] +_081C47BA: + cmp r5, #0 + beq _081C47C2 + ldr r0, _081C480C + str r5, [r0] +_081C47C2: + ldr r0, [r6] + movs r1, #0 + str r1, [r0] + ldr r1, _081C4810 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + ldr r0, [r6] + ldr r1, _081C4814 + adds r0, r0, r1 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r0] + ldr r0, [r6] + ldr r1, _081C4818 + adds r0, r0, r1 + movs r1, #0xff + movs r2, #0xb + bl memset + ldr r0, [r6] + ldr r1, _081C481C + adds r0, r0, r1 + movs r1, #0xff + movs r2, #5 + bl memset + ldr r0, _081C4820 + bl sub_08000540 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C4804: .4byte gUnknown_203CBF8 +_081C4808: .4byte 0x0000098C +_081C480C: .4byte gUnknown_203CBFC +_081C4810: .4byte 0x00000814 +_081C4814: .4byte 0x00000816 +_081C4818: .4byte 0x00000804 +_081C481C: .4byte 0x0000080F +_081C4820: .4byte sub_081C4854 + thumb_func_end sub_081C47A0 + + thumb_func_start sub_081C4824 +sub_081C4824: @ 0x081C4824 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4824 + + thumb_func_start sub_081C4840 +sub_081C4840: @ 0x081C4840 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4840 + + thumb_func_start sub_081C4854 +sub_081C4854: @ 0x081C4854 + push {lr} +_081C4856: + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C487A + bl sub_081C4880 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C487A + bl sub_081221B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C4856 +_081C487A: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4854 + + thumb_func_start sub_081C4880 +sub_081C4880: @ 0x081C4880 + push {lr} + sub sp, #4 + ldr r0, _081C48A0 + movs r1, #0x87 + lsls r1, r1, #3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x10 + bls _081C4894 + b _081C49C4 +_081C4894: + lsls r0, r0, #2 + ldr r1, _081C48A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C48A0: .4byte gUnknown_3002360 +_081C48A4: .4byte _081C48A8 +_081C48A8: @ jump table + .4byte _081C48EC @ case 0 + .4byte _081C48F6 @ case 1 + .4byte _081C48FC @ case 2 + .4byte _081C4902 @ case 3 + .4byte _081C4914 @ case 4 + .4byte _081C491A @ case 5 + .4byte _081C492A @ case 6 + .4byte _081C4944 @ case 7 + .4byte _081C4950 @ case 8 + .4byte _081C4956 @ case 9 + .4byte _081C4964 @ case 10 + .4byte _081C496A @ case 11 + .4byte _081C4970 @ case 12 + .4byte _081C4976 @ case 13 + .4byte _081C497C @ case 14 + .4byte _081C4982 @ case 15 + .4byte _081C4990 @ case 16 +_081C48EC: + bl sub_08121E58 + bl sub_08199640 + b _081C49AA +_081C48F6: + bl sub_080B9710 + b _081C49AA +_081C48FC: + bl sub_08008424 + b _081C49AA +_081C4902: + bl sub_080A133C + ldr r2, _081C4910 + ldrb r0, [r2, #8] + movs r1, #0x80 + orrs r0, r1 + b _081C49A8 + .align 2, 0 +_081C4910: .4byte gUnknown_2037C74 +_081C4914: + bl sub_0800668C + b _081C49AA +_081C491A: + bl sub_081221B8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C49AA + bl sub_080A8818 + b _081C49AA +_081C492A: + bl sub_081C49E4 + ldr r0, _081C493C + ldr r0, [r0] + ldr r1, _081C4940 + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + b _081C49AA + .align 2, 0 +_081C493C: .4byte gUnknown_203CBF8 +_081C4940: .4byte 0x00000984 +_081C4944: + bl sub_081C4A40 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C49DC + b _081C49AA +_081C4950: + bl sub_081C63F0 + b _081C49AA +_081C4956: + bl sub_081C5120 + bl sub_081C51B8 + bl sub_081C521C + b _081C49AA +_081C4964: + bl sub_081C4B1C + b _081C49AA +_081C496A: + bl sub_081C4EF4 + b _081C49AA +_081C4970: + bl sub_081C66B4 + b _081C49AA +_081C4976: + bl sub_081C4E70 + b _081C49AA +_081C497C: + bl sub_081C67CC + b _081C49AA +_081C4982: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + b _081C49AA +_081C4990: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r2, _081C49BC + ldrb r1, [r2, #8] + movs r0, #0x7f + ands r0, r1 +_081C49A8: + strb r0, [r2, #8] +_081C49AA: + ldr r1, _081C49C0 + movs r0, #0x87 + lsls r0, r0, #3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081C49DC + .align 2, 0 +_081C49BC: .4byte gUnknown_2037C74 +_081C49C0: .4byte gUnknown_3002360 +_081C49C4: + ldr r0, _081C49D4 + bl sub_080006F0 + ldr r0, _081C49D8 + bl sub_08000540 + movs r0, #1 + b _081C49DE + .align 2, 0 +_081C49D4: .4byte sub_081C4840 +_081C49D8: .4byte sub_081C4824 +_081C49DC: + movs r0, #0 +_081C49DE: + add sp, #4 + pop {r1} + bx r1 + thumb_func_end sub_081C4880 + + thumb_func_start sub_081C49E4 +sub_081C49E4: @ 0x081C49E4 + push {lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081C4A38 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r0, _081C4A3C + ldr r1, [r0] + adds r1, #4 + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #2 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 +_081C4A38: .4byte gUnknown_85EF704 +_081C4A3C: .4byte gUnknown_203CBF8 + thumb_func_end sub_081C49E4 + + thumb_func_start sub_081C4A40 +sub_081C4A40: @ 0x081C4A40 + push {r4, lr} + sub sp, #4 + ldr r4, _081C4A60 + ldr r0, [r4] + ldr r1, _081C4A64 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #4 + bhi _081C4AF8 + lsls r0, r0, #2 + ldr r1, _081C4A68 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C4A60: .4byte gUnknown_203CBF8 +_081C4A64: .4byte 0x00000984 +_081C4A68: .4byte _081C4A6C +_081C4A6C: @ jump table + .4byte _081C4A80 @ case 0 + .4byte _081C4A9C @ case 1 + .4byte _081C4AC0 @ case 2 + .4byte _081C4AD0 @ case 3 + .4byte _081C4ADC @ case 4 +_081C4A80: + bl sub_081996B8 + ldr r1, _081C4A98 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + b _081C4AE0 + .align 2, 0 +_081C4A98: .4byte gUnknown_8D9A7CC +_081C4A9C: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C4B10 + ldr r0, _081C4AB8 + ldr r4, _081C4ABC + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r1, [r4] + b _081C4AE4 + .align 2, 0 +_081C4AB8: .4byte gUnknown_8D9AFFC +_081C4ABC: .4byte gUnknown_203CBF8 +_081C4AC0: + ldr r0, _081C4ACC + movs r1, #0 + movs r2, #0x20 + bl sub_080A11BC + b _081C4AE0 + .align 2, 0 +_081C4ACC: .4byte gUnknown_8D9B13C +_081C4AD0: + ldr r0, _081C4AD8 + bl sub_08034388 + b _081C4AE0 + .align 2, 0 +_081C4AD8: .4byte gUnknown_85EF81C +_081C4ADC: + bl sub_081C6658 +_081C4AE0: + ldr r0, _081C4AF0 + ldr r1, [r0] +_081C4AE4: + ldr r0, _081C4AF4 + adds r1, r1, r0 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _081C4B10 + .align 2, 0 +_081C4AF0: .4byte gUnknown_203CBF8 +_081C4AF4: .4byte 0x00000984 +_081C4AF8: + bl sub_08122334 + ldr r0, [r4] + ldr r1, _081C4B0C + adds r0, r0, r1 + movs r1, #0 + strh r1, [r0] + movs r0, #1 + b _081C4B12 + .align 2, 0 +_081C4B0C: .4byte 0x00000984 +_081C4B10: + movs r0, #0 +_081C4B12: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C4A40 + + thumb_func_start sub_081C4B1C +sub_081C4B1C: @ 0x081C4B1C + push {r4, r5, r6, r7, lr} + ldr r0, _081C4BE4 + ldr r2, [r0] + ldr r1, _081C4BE8 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r3, _081C4BEC + adds r0, r0, r3 + adds r7, r2, r0 + movs r6, #0 + ldr r1, _081C4BF0 + ldr r0, [r1] + ldr r4, _081C4BF4 + adds r0, r0, r4 + ldrb r0, [r0] + subs r0, #1 + cmp r6, r0 + bge _081C4B8A + adds r5, r1, #0 +_081C4B4C: + lsls r1, r6, #1 + adds r4, r1, r6 + lsls r4, r4, #3 + ldr r0, _081C4BF8 + adds r4, r4, r0 + ldr r0, [r5] + adds r0, r0, r4 + adds r1, r1, r7 + ldrh r1, [r1] + bl sub_081C4C14 + ldr r1, [r5] + lsls r2, r6, #3 + ldr r3, _081C4BFC + adds r0, r1, r3 + adds r0, r0, r2 + adds r4, r1, r4 + str r4, [r0] + ldr r4, _081C4C00 + adds r0, r1, r4 + adds r0, r0, r2 + str r6, [r0] + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + ldr r0, _081C4BF4 + adds r1, r1, r0 + ldrb r0, [r1] + subs r0, #1 + cmp r6, r0 + blt _081C4B4C +_081C4B8A: + ldr r5, _081C4BF0 + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r1, _081C4BF8 + adds r4, r4, r1 + ldr r0, [r5] + adds r0, r0, r4 + ldr r1, _081C4C04 + bl sub_080088B8 + ldr r1, [r5] + lsls r2, r6, #3 + ldr r3, _081C4BFC + adds r0, r1, r3 + adds r0, r0, r2 + adds r4, r1, r4 + str r4, [r0] + ldr r4, _081C4C00 + adds r1, r1, r4 + adds r1, r1, r2 + movs r0, #2 + rsbs r0, r0, #0 + str r0, [r1] + ldr r2, _081C4C08 + adds r1, r2, #0 + ldr r0, _081C4C0C + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldr r1, [r5] + ldr r6, _081C4BF4 + adds r0, r1, r6 + ldrb r0, [r0] + strh r0, [r2, #0xc] + adds r3, r1, r3 + str r3, [r2] + ldr r7, _081C4C10 + adds r1, r1, r7 + ldrb r0, [r1] + strh r0, [r2, #0xe] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C4BE4: .4byte gUnknown_3005AF0 +_081C4BE8: .4byte 0x00000CA9 +_081C4BEC: .4byte 0x00000E2C +_081C4BF0: .4byte gUnknown_203CBF8 +_081C4BF4: .4byte 0x00000821 +_081C4BF8: .4byte 0x0000087C +_081C4BFC: .4byte 0x00000824 +_081C4C00: .4byte 0x00000828 +_081C4C04: .4byte gUnknown_85C9448 +_081C4C08: .4byte gUnknown_3006050 +_081C4C0C: .4byte gUnknown_85EF710 +_081C4C10: .4byte 0x00000822 + thumb_func_end sub_081C4B1C + + thumb_func_start sub_081C4C14 +sub_081C4C14: @ 0x081C4C14 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + adds r0, r4, #0 + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _081C4C58 + ldr r0, _081C4C4C + adds r1, r4, #0 + subs r1, #0x84 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r1, _081C4C50 + adds r0, r4, #0 + bl sub_080D5EC8 + ldr r1, _081C4C54 + adds r0, r5, #0 + bl sub_08008BCC + b _081C4C60 + .align 2, 0 +_081C4C4C: .4byte gUnknown_2021C40 +_081C4C50: .4byte gUnknown_2021C54 +_081C4C54: .4byte gUnknown_85C976F +_081C4C58: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080D5EC8 +_081C4C60: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C4C14 + + thumb_func_start sub_081C4C68 +sub_081C4C68: @ 0x081C4C68 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _081C4C7E + movs r0, #5 + bl sub_080A306C + bl sub_081C66E0 +_081C4C7E: + ldr r5, _081C4CD0 + ldr r1, [r5] + ldr r2, _081C4CD4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _081C4D0C + adds r2, #1 + adds r0, r1, r2 + ldrb r1, [r0] + movs r0, #1 + eors r0, r1 + bl sub_081C67B8 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081C4CE8 + ldr r0, _081C4CD8 + ldr r2, [r0] + lsls r3, r4, #1 + ldr r1, _081C4CDC + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + ldr r0, _081C4CE0 + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + ldr r1, [r5] + ldr r2, _081C4CE4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_081C6750 + b _081C4CF6 + .align 2, 0 +_081C4CD0: .4byte gUnknown_203CBF8 +_081C4CD4: .4byte 0x00000814 +_081C4CD8: .4byte gUnknown_3005AF0 +_081C4CDC: .4byte 0x00000CA9 +_081C4CE0: .4byte 0x00000E2C +_081C4CE4: .4byte 0x00000815 +_081C4CE8: + ldr r0, _081C4D14 + ldr r1, [r5] + ldr r2, _081C4D18 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_081C6750 +_081C4CF6: + ldr r0, _081C4D1C + ldr r1, [r0] + ldr r0, _081C4D18 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #1 + eors r0, r2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_081C4DD4 +_081C4D0C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C4D14: .4byte 0x0000FFFF +_081C4D18: .4byte 0x00000815 +_081C4D1C: .4byte gUnknown_203CBF8 + thumb_func_end sub_081C4C68 + + thumb_func_start sub_081C4D20 +sub_081C4D20: @ 0x081C4D20 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r5, r2, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081C4DB2 + ldr r0, _081C4D58 + ldr r0, [r0] + ldr r1, _081C4D5C + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0xff + beq _081C4D68 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _081C4D60 + adds r0, r5, #0 + movs r1, #1 + bl sub_081C52B4 + b _081C4D68 + .align 2, 0 +_081C4D58: .4byte gUnknown_203CBF8 +_081C4D5C: .4byte 0x00000814 +_081C4D60: + adds r0, r5, #0 + movs r1, #0xff + bl sub_081C52B4 +_081C4D68: + ldr r0, _081C4DBC + ldr r1, _081C4DC0 + ldr r3, [r1] + ldr r2, _081C4DC4 + adds r1, r3, r2 + ldrb r2, [r1] + lsls r2, r2, #0x1e + lsrs r2, r2, #0x1e + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r1, r4, r1 + ldr r2, _081C4DC8 + adds r3, r3, r2 + adds r3, r3, r1 + ldrb r1, [r3] + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081C4DCC + ldr r1, _081C4DD0 + adds r0, r4, #0 + bl sub_08008BCC + movs r1, #0 + str r1, [sp] + str r1, [sp, #4] + movs r0, #0xff + str r0, [sp, #8] + str r1, [sp, #0xc] + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x60 + adds r3, r5, #0 + bl sub_081C6454 +_081C4DB2: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C4DBC: .4byte gUnknown_2021C40 +_081C4DC0: .4byte gUnknown_3005AF0 +_081C4DC4: .4byte 0x00000CA9 +_081C4DC8: .4byte 0x00000E54 +_081C4DCC: .4byte gUnknown_2021C7C +_081C4DD0: .4byte gUnknown_85C943C + thumb_func_end sub_081C4D20 + + thumb_func_start sub_081C4DD4 +sub_081C4DD4: @ 0x081C4DD4 + push {r4, lr} + sub sp, #0x10 + adds r3, r0, #0 + movs r0, #2 + rsbs r0, r0, #0 + cmp r3, r0 + beq _081C4E18 + ldr r0, _081C4E0C + ldr r2, [r0] + lsls r3, r3, #1 + ldr r1, _081C4E10 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + ldr r0, _081C4E14 + adds r2, r2, r0 + adds r2, r2, r3 + ldrh r0, [r2] + bl sub_080D6D40 + adds r4, r0, #0 + b _081C4E34 + .align 2, 0 +_081C4E0C: .4byte gUnknown_3005AF0 +_081C4E10: .4byte 0x00000CA9 +_081C4E14: .4byte 0x00000E2C +_081C4E18: + ldr r0, _081C4E5C + ldr r2, _081C4E60 + ldr r1, _081C4E64 + ldrb r1, [r1, #4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_080088B8 + ldr r4, _081C4E68 + ldr r1, _081C4E6C + adds r0, r4, #0 + bl sub_08008BCC +_081C4E34: + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C4E5C: .4byte gUnknown_2021C40 +_081C4E60: .4byte gUnknown_85C9728 +_081C4E64: .4byte gUnknown_203CBFC +_081C4E68: .4byte gUnknown_2021C7C +_081C4E6C: .4byte gUnknown_85C9738 + thumb_func_end sub_081C4DD4 + + thumb_func_start sub_081C4E70 +sub_081C4E70: @ 0x081C4E70 + push {r4, lr} + sub sp, #0x10 + ldr r4, _081C4EB8 + ldr r1, [r4] + ldr r2, _081C4EBC + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _081C4EB0 + adds r2, #0xb + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, #1 + adds r1, r1, r2 + ldrb r1, [r1] + subs r0, r0, r1 + str r0, [sp] + ldr r0, _081C4EC0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _081C4EC4 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xac + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + ldr r1, [r4] + ldr r2, _081C4EBC + adds r1, r1, r2 + strb r0, [r1] +_081C4EB0: + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C4EB8: .4byte gUnknown_203CBF8 +_081C4EBC: .4byte 0x00000816 +_081C4EC0: .4byte 0x00000B5E +_081C4EC4: .4byte gUnknown_203CC04 + thumb_func_end sub_081C4E70 + + thumb_func_start sub_081C4EC8 +sub_081C4EC8: @ 0x081C4EC8 + push {r4, lr} + ldr r4, _081C4EEC + ldr r0, [r4] + ldr r2, _081C4EF0 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, #0xff + beq _081C4EE6 + bl sub_081AF2F8 + ldr r0, [r4] + ldr r1, _081C4EF0 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_081C4EE6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C4EEC: .4byte gUnknown_203CBF8 +_081C4EF0: .4byte 0x00000816 + thumb_func_end sub_081C4EC8 + + thumb_func_start sub_081C4EF4 +sub_081C4EF4: @ 0x081C4EF4 + push {r4, lr} + ldr r0, _081C4F24 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081C4F28 + adds r4, r4, r0 + ldr r0, _081C4F2C + ldr r2, _081C4F30 + ldrh r1, [r2, #8] + ldrh r2, [r2, #6] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C4F24: .4byte sub_081C53C4 +_081C4F28: .4byte gUnknown_3005B68 +_081C4F2C: .4byte gUnknown_3006050 +_081C4F30: .4byte gUnknown_203CBFC + thumb_func_end sub_081C4EF4 + + thumb_func_start sub_081C4F34 +sub_081C4F34: @ 0x081C4F34 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldr r2, _081C4F94 + ldr r6, [r2] + ldr r3, _081C4F98 + adds r2, r6, r3 + ldrb r3, [r2] + lsls r3, r3, #0x1e + lsrs r2, r3, #0x1e + lsls r4, r2, #2 + adds r4, r4, r2 + lsls r4, r4, #2 + ldr r2, _081C4F9C + adds r4, r4, r2 + adds r4, r6, r4 + lsrs r3, r3, #0x1e + lsls r2, r3, #2 + adds r2, r2, r3 + lsls r2, r2, #1 + ldr r3, _081C4FA0 + adds r2, r2, r3 + adds r6, r6, r2 + lsls r5, r0, #1 + adds r5, r5, r4 + ldrh r2, [r5] + mov r8, r2 + lsls r2, r1, #1 + adds r2, r2, r4 + ldrh r3, [r2] + strh r3, [r5] + mov r3, r8 + strh r3, [r2] + adds r0, r6, r0 + ldrb r2, [r0] + adds r6, r6, r1 + ldrb r1, [r6] + strb r1, [r0] + strb r2, [r6] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C4F94: .4byte gUnknown_3005AF0 +_081C4F98: .4byte 0x00000CA9 +_081C4F9C: .4byte 0x00000E2C +_081C4FA0: .4byte 0x00000E54 + thumb_func_end sub_081C4F34 + + thumb_func_start sub_081C4FA4 +sub_081C4FA4: @ 0x081C4FA4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r7, r4, #0 + lsls r1, r1, #0x18 + lsrs r5, r1, #0x18 + ldr r0, _081C501C + ldr r3, [r0] + ldr r1, _081C5020 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _081C5024 + adds r0, r0, r2 + adds r6, r3, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _081C5028 + adds r0, r0, r1 + adds r3, r3, r0 + cmp r4, r5 + beq _081C505E + lsls r0, r4, #1 + adds r0, r0, r6 + ldrh r0, [r0] + mov ip, r0 + adds r0, r3, r4 + ldrb r0, [r0] + mov r8, r0 + cmp r5, r4 + bls _081C502C + subs r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r2, r4, #0x10 + cmp r4, r5 + bge _081C5050 +_081C4FFE: + asrs r2, r2, #0x10 + lsls r0, r2, #1 + adds r0, r0, r6 + ldrh r1, [r0, #2] + strh r1, [r0] + adds r1, r3, r2 + ldrb r0, [r1, #1] + strb r0, [r1] + adds r2, #1 + lsls r2, r2, #0x10 + asrs r0, r2, #0x10 + cmp r0, r5 + blt _081C4FFE + b _081C5050 + .align 2, 0 +_081C501C: .4byte gUnknown_3005AF0 +_081C5020: .4byte 0x00000CA9 +_081C5024: .4byte 0x00000E2C +_081C5028: .4byte 0x00000E54 +_081C502C: + lsls r2, r7, #0x10 + cmp r7, r5 + ble _081C5050 +_081C5032: + asrs r2, r2, #0x10 + lsls r1, r2, #1 + adds r1, r1, r6 + subs r0, r1, #2 + ldrh r0, [r0] + strh r0, [r1] + adds r1, r3, r2 + subs r0, r1, #1 + ldrb r0, [r0] + strb r0, [r1] + subs r2, #1 + lsls r2, r2, #0x10 + asrs r0, r2, #0x10 + cmp r0, r5 + bgt _081C5032 +_081C5050: + lsls r0, r5, #1 + adds r0, r0, r6 + mov r2, ip + strh r2, [r0] + adds r0, r3, r5 + mov r1, r8 + strb r1, [r0] +_081C505E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C4FA4 + + thumb_func_start sub_081C5068 +sub_081C5068: @ 0x081C5068 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _081C5110 + ldr r3, [r0] + ldr r1, _081C5114 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r2, r1, #0x1e + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r2, _081C5118 + adds r0, r0, r2 + adds r0, r0, r3 + mov sb, r0 + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r4, _081C511C + adds r0, r0, r4 + adds r3, r3, r0 + mov r8, r3 + movs r5, #0 + movs r3, #0 +_081C50A0: + lsls r0, r5, #1 + mov r1, sb + adds r2, r0, r1 + ldrh r0, [r2] + mov r4, r8 + adds r1, r4, r5 + cmp r0, #0 + beq _081C50B6 + ldrb r0, [r1] + cmp r0, #0 + bne _081C50BA +_081C50B6: + strh r3, [r2] + strb r3, [r1] +_081C50BA: + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #9 + bls _081C50A0 + movs r5, #0 +_081C50C6: + adds r1, r5, #1 + lsls r0, r1, #0x18 + lsrs r4, r0, #0x18 + adds r7, r1, #0 + cmp r4, #9 + bhi _081C50FA + lsls r0, r5, #1 + mov r1, sb + adds r6, r0, r1 +_081C50D8: + ldrh r0, [r6] + cmp r0, #0 + beq _081C50E8 + mov r2, r8 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _081C50F0 +_081C50E8: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081C4F34 +_081C50F0: + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #9 + bls _081C50D8 +_081C50FA: + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #8 + bls _081C50C6 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C5110: .4byte gUnknown_3005AF0 +_081C5114: .4byte 0x00000CA9 +_081C5118: .4byte 0x00000E2C +_081C511C: .4byte 0x00000E54 + thumb_func_end sub_081C5068 + + thumb_func_start sub_081C5120 +sub_081C5120: @ 0x081C5120 + push {r4, r5, r6, lr} + ldr r0, _081C5190 + ldr r2, [r0] + ldr r1, _081C5194 + adds r0, r2, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081C5198 + adds r0, r0, r1 + adds r5, r2, r0 + bl sub_081C5068 + ldr r3, _081C519C + ldr r0, [r3] + ldr r2, _081C51A0 + adds r0, r0, r2 + movs r1, #0 + strb r1, [r0] + movs r4, #0 + adds r6, r3, #0 +_081C5150: + lsls r0, r4, #1 + adds r0, r0, r5 + ldrh r0, [r0] + ldr r3, _081C519C + cmp r0, #0 + beq _081C5166 + ldr r1, [r6] + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_081C5166: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #9 + bls _081C5150 + ldr r0, [r3] + ldr r2, _081C51A0 + adds r0, r0, r2 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, [r3] + adds r2, r0, r2 + ldrb r2, [r2] + cmp r2, #8 + bls _081C51A8 + ldr r2, _081C51A4 + adds r1, r0, r2 + movs r0, #8 + strb r0, [r1] + b _081C51AE + .align 2, 0 +_081C5190: .4byte gUnknown_3005AF0 +_081C5194: .4byte 0x00000CA9 +_081C5198: .4byte 0x00000E2C +_081C519C: .4byte gUnknown_203CBF8 +_081C51A0: .4byte 0x00000821 +_081C51A4: .4byte 0x00000822 +_081C51A8: + ldr r1, _081C51B4 + adds r0, r0, r1 + strb r2, [r0] +_081C51AE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C51B4: .4byte 0x00000822 + thumb_func_end sub_081C5120 + + thumb_func_start sub_081C51B8 +sub_081C51B8: @ 0x081C51B8 + push {r4, r5, lr} + ldr r0, _081C5200 + ldrh r1, [r0, #8] + adds r3, r0, #0 + ldr r4, _081C5204 + cmp r1, #0 + beq _081C51E0 + ldrh r0, [r3, #8] + ldr r1, [r4] + ldr r5, _081C5208 + adds r2, r1, r5 + ldrb r2, [r2] + adds r0, r0, r2 + subs r5, #1 + adds r1, r1, r5 + ldrb r1, [r1] + cmp r0, r1 + ble _081C51E0 + subs r0, r1, r2 + strh r0, [r3, #8] +_081C51E0: + adds r2, r3, #0 + ldrh r1, [r2, #8] + ldrh r0, [r2, #6] + adds r1, r1, r0 + ldr r0, [r4] + ldr r4, _081C520C + adds r0, r0, r4 + ldrb r0, [r0] + cmp r1, r0 + blt _081C5214 + adds r1, r0, #0 + cmp r1, #0 + bne _081C5210 + strh r1, [r2, #6] + b _081C5214 + .align 2, 0 +_081C5200: .4byte gUnknown_203CBFC +_081C5204: .4byte gUnknown_203CBF8 +_081C5208: .4byte 0x00000822 +_081C520C: .4byte 0x00000821 +_081C5210: + subs r0, #1 + strh r0, [r3, #6] +_081C5214: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C51B8 + + thumb_func_start sub_081C521C +sub_081C521C: @ 0x081C521C + push {r4, r5, r6, r7, lr} + ldr r0, _081C5284 + ldrh r1, [r0, #6] + adds r5, r0, #0 + cmp r1, #4 + bls _081C527C + movs r4, #0 + ldrh r0, [r5, #6] + subs r0, #4 + cmp r4, r0 + bgt _081C527C + ldrh r2, [r5, #8] + ldr r6, _081C5288 + ldr r0, [r6] + ldr r3, _081C528C + adds r1, r0, r3 + ldrb r1, [r1] + adds r2, r2, r1 + ldr r7, _081C5290 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r2, r0 + beq _081C527C + adds r3, r5, #0 +_081C524C: + ldrh r0, [r3, #6] + subs r0, #1 + strh r0, [r3, #6] + ldrh r0, [r3, #8] + adds r0, #1 + strh r0, [r3, #8] + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldrh r0, [r3, #6] + subs r0, #4 + cmp r4, r0 + bgt _081C527C + ldrh r2, [r5, #8] + ldr r1, [r6] + ldr r7, _081C528C + adds r0, r1, r7 + ldrb r0, [r0] + adds r2, r2, r0 + ldr r0, _081C5290 + adds r1, r1, r0 + ldrb r1, [r1] + cmp r2, r1 + bne _081C524C +_081C527C: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C5284: .4byte gUnknown_203CBFC +_081C5288: .4byte gUnknown_203CBF8 +_081C528C: .4byte 0x00000822 +_081C5290: .4byte 0x00000821 + thumb_func_end sub_081C521C + + thumb_func_start sub_081C5294 +sub_081C5294: @ 0x081C5294 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081AE564 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r4, #0 + bl sub_081C52B4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C5294 + + thumb_func_start sub_081C52B4 +sub_081C52B4: @ 0x081C52B4 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r2, r1, #0x18 + cmp r2, #0xff + bne _081C52F0 + movs r0, #1 + movs r1, #0 + bl sub_0800629C + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + movs r1, #1 + bl sub_0800629C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r4, [sp] + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_08003A34 + b _081C5304 +_081C52F0: + ldr r1, _081C530C + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r2, [sp, #0xc] + movs r2, #0 + adds r3, r5, #0 + bl sub_081C6454 +_081C5304: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C530C: .4byte gUnknown_85C9421 + thumb_func_end sub_081C52B4 + + thumb_func_start sub_081C5310 +sub_081C5310: @ 0x081C5310 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081C5340 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C5344 + str r1, [r0] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C5340: .4byte gUnknown_3005B60 +_081C5344: .4byte sub_081C5348 + thumb_func_end sub_081C5310 + + thumb_func_start sub_081C5348 +sub_081C5348: @ 0x081C5348 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C5380 + adds r2, r0, r1 + ldr r0, _081C5384 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081C53B8 + ldrb r0, [r2] + ldr r4, _081C5388 + subs r2, r4, #2 + adds r1, r4, #0 + bl sub_081AE3A0 + ldr r0, _081C538C + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _081C5390 + bl sub_08000540 + b _081C539A + .align 2, 0 +_081C5380: .4byte gUnknown_3005B68 +_081C5384: .4byte gUnknown_2037C74 +_081C5388: .4byte gUnknown_203CC04 +_081C538C: .4byte gUnknown_203CBF8 +_081C5390: + adds r0, r4, #0 + subs r0, #8 + ldr r0, [r0] + bl sub_08000540 +_081C539A: + bl sub_081C4EC8 + bl sub_0800668C + bl sub_08008424 + bl sub_080034D4 + ldr r0, _081C53C0 + ldr r0, [r0] + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_080A8964 +_081C53B8: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C53C0: .4byte gUnknown_203CBF8 + thumb_func_end sub_081C5348 + + thumb_func_start sub_081C53C4 +sub_081C53C4: @ 0x081C53C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C5440 + adds r7, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C53E6 + b _081C5512 +_081C53E6: + ldr r0, _081C5444 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C53F4 + b _081C5512 +_081C53F4: + ldr r0, _081C5448 + ldrh r1, [r0, #0x2e] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0 + beq _081C5458 + ldr r4, _081C544C + ldrb r0, [r4, #4] + cmp r0, #2 + bne _081C540E + b _081C5512 +_081C540E: + ldrb r0, [r7] + adds r1, r4, #0 + adds r1, #8 + adds r2, r4, #6 + bl sub_081AE538 + ldrh r1, [r4, #8] + ldrh r0, [r4, #6] + adds r1, r1, r0 + ldr r0, _081C5450 + ldr r0, [r0] + ldr r2, _081C5454 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #1 + cmp r1, r0 + beq _081C5512 + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081C5FDC + b _081C5512 + .align 2, 0 +_081C5440: .4byte gUnknown_3005B68 +_081C5444: .4byte gUnknown_2037C74 +_081C5448: .4byte gUnknown_3002360 +_081C544C: .4byte gUnknown_203CBFC +_081C5450: .4byte gUnknown_203CBF8 +_081C5454: .4byte 0x00000821 +_081C5458: + ldrb r0, [r7] + bl sub_081AE2DC + adds r6, r0, #0 + ldrb r0, [r7] + ldr r1, _081C5480 + mov r8, r1 + mov r2, r8 + subs r2, #2 + bl sub_081AE538 + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _081C5484 + adds r0, #1 + cmp r6, r0 + bne _081C549C + b _081C5512 + .align 2, 0 +_081C5480: .4byte gUnknown_203CC04 +_081C5484: + movs r0, #5 + bl sub_080A306C + ldr r0, _081C5498 + strh r4, [r0] + adds r0, r5, #0 + bl sub_081C5310 + b _081C5512 + .align 2, 0 +_081C5498: .4byte gUnknown_203CB48 +_081C549C: + movs r0, #5 + bl sub_080A306C + ldr r2, _081C54F8 + mov ip, r2 + ldr r0, _081C54FC + ldr r2, [r0] + lsls r3, r6, #1 + ldr r0, _081C5500 + adds r4, r2, r0 + ldrb r1, [r4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r3, r3, r0 + ldr r1, _081C5504 + adds r0, r2, r1 + adds r0, r0, r3 + ldrh r0, [r0] + mov r1, ip + strh r0, [r1] + strh r6, [r7, #2] + ldrb r1, [r4] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r6, r0 + ldr r1, _081C5508 + adds r2, r2, r1 + adds r2, r2, r0 + ldrb r0, [r2] + strh r0, [r7, #4] + mov r0, r8 + subs r0, #8 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _081C550C + adds r0, r5, #0 + bl sub_081C5F5C + b _081C5512 + .align 2, 0 +_081C54F8: .4byte gUnknown_203CB48 +_081C54FC: .4byte gUnknown_3005AF0 +_081C5500: .4byte 0x00000CA9 +_081C5504: .4byte 0x00000E2C +_081C5508: .4byte 0x00000E54 +_081C550C: + adds r0, r5, #0 + bl sub_081C551C +_081C5512: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C53C4 + + thumb_func_start sub_081C551C +sub_081C551C: @ 0x081C551C + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081C555C + adds r4, r4, r0 + bl sub_081C4EC8 + ldrb r0, [r4] + movs r1, #1 + bl sub_081C5294 + ldr r0, _081C5560 + ldrb r4, [r0, #4] + cmp r4, #1 + beq _081C5570 + cmp r4, #3 + beq _081C55C0 + ldr r0, _081C5564 + ldr r1, [r0] + ldr r0, _081C5568 + adds r2, r1, r0 + ldr r0, _081C556C + str r0, [r2] + movs r0, #0x82 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #4 + b _081C55D4 + .align 2, 0 +_081C555C: .4byte gUnknown_3005B68 +_081C5560: .4byte gUnknown_203CBFC +_081C5564: .4byte gUnknown_203CBF8 +_081C5568: .4byte 0x00000818 +_081C556C: .4byte gUnknown_85EF758 +_081C5570: + ldr r0, _081C558C + ldrh r0, [r0] + bl sub_080D6E20 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C559C + ldr r0, _081C5590 + ldr r1, [r0] + ldr r0, _081C5594 + adds r2, r1, r0 + ldr r0, _081C5598 + b _081C55CA + .align 2, 0 +_081C558C: .4byte gUnknown_203CB48 +_081C5590: .4byte gUnknown_203CBF8 +_081C5594: .4byte 0x00000818 +_081C5598: .4byte gUnknown_85EF75E +_081C559C: + ldr r0, _081C55B4 + ldr r0, [r0] + ldr r1, _081C55B8 + adds r2, r0, r1 + ldr r1, _081C55BC + str r1, [r2] + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r0, r1 + strb r4, [r0] + b _081C55D6 + .align 2, 0 +_081C55B4: .4byte gUnknown_203CBF8 +_081C55B8: .4byte 0x00000818 +_081C55BC: .4byte gUnknown_85EF760 +_081C55C0: + ldr r0, _081C561C + ldr r1, [r0] + ldr r0, _081C5620 + adds r2, r1, r0 + ldr r0, _081C5624 +_081C55CA: + str r0, [r2] + movs r0, #0x82 + lsls r0, r0, #4 + adds r1, r1, r0 + movs r0, #2 +_081C55D4: + strb r0, [r1] +_081C55D6: + ldr r0, _081C5628 + ldrh r0, [r0] + ldr r1, _081C562C + bl sub_080D5EC8 + ldr r4, _081C5630 + ldr r1, _081C5634 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + ldr r0, _081C561C + ldr r0, [r0] + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _081C5638 + movs r0, #0 + b _081C563E + .align 2, 0 +_081C561C: .4byte gUnknown_203CBF8 +_081C5620: .4byte 0x00000818 +_081C5624: .4byte gUnknown_85EF75C +_081C5628: .4byte gUnknown_203CB48 +_081C562C: .4byte gUnknown_2021C40 +_081C5630: .4byte gUnknown_2021C7C +_081C5634: .4byte gUnknown_85C9450 +_081C5638: + cmp r0, #2 + bne _081C564C + movs r0, #1 +_081C563E: + bl sub_081C64E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081C56A8 + b _081C565E +_081C564C: + movs r0, #2 + bl sub_081C64E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #2 + movs r2, #2 + bl sub_081C5724 +_081C565E: + ldr r0, _081C567C + ldr r0, [r0] + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #4 + bne _081C5688 + ldr r0, _081C5680 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081C5684 + b _081C5694 + .align 2, 0 +_081C567C: .4byte gUnknown_203CBF8 +_081C5680: .4byte gUnknown_3005B60 +_081C5684: .4byte sub_081C5810 +_081C5688: + ldr r0, _081C56A0 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081C56A4 +_081C5694: + str r0, [r1] + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C56A0: .4byte gUnknown_3005B60 +_081C56A4: .4byte sub_081C5794 + thumb_func_end sub_081C551C + + thumb_func_start sub_081C56A8 +sub_081C56A8: @ 0x081C56A8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + mov r8, r0 + str r0, [sp] + movs r0, #0x10 + str r0, [sp, #4] + ldr r6, _081C5718 + ldr r1, [r6] + movs r5, #0x82 + lsls r5, r5, #4 + adds r0, r1, r5 + ldrb r0, [r0] + str r0, [sp, #8] + ldr r0, _081C571C + str r0, [sp, #0xc] + ldr r0, _081C5720 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [sp, #0x10] + adds r0, r4, #0 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_081989B4 + movs r0, #1 + movs r1, #1 + bl sub_080061B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + str r0, [sp] + ldr r0, [r6] + adds r0, r0, r5 + ldrb r0, [r0] + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081984B0 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C5718: .4byte gUnknown_203CBF8 +_081C571C: .4byte gUnknown_85EF728 +_081C5720: .4byte 0x00000818 + thumb_func_end sub_081C56A8 + + thumb_func_start sub_081C5724 +sub_081C5724: @ 0x081C5724 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r0, #0x30 + mov r8, r0 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + ldr r0, _081C5788 + str r0, [sp, #0xc] + ldr r0, _081C578C + ldr r0, [r0] + ldr r1, _081C5790 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #0x10] + adds r0, r6, #0 + movs r1, #1 + movs r2, #8 + movs r3, #2 + bl sub_08198ECC + mov r0, r8 + str r0, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_081990E4 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C5788: .4byte gUnknown_85EF728 +_081C578C: .4byte gUnknown_203CBF8 +_081C5790: .4byte 0x00000818 + thumb_func_end sub_081C5724 + + thumb_func_start sub_081C5794 +sub_081C5794: @ 0x081C5794 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C57FC + bl sub_081986E8 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + movs r0, #2 + rsbs r0, r0, #0 + cmp r4, r0 + beq _081C57FC + adds r0, #1 + cmp r4, r0 + bne _081C57D4 + movs r0, #5 + bl sub_080A306C + ldr r0, _081C57D0 + ldr r1, [r0, #0x1c] + adds r0, r5, #0 + bl _call_via_r1 + b _081C57FC + .align 2, 0 +_081C57D0: .4byte gUnknown_85EF728 +_081C57D4: + movs r0, #5 + bl sub_080A306C + ldr r1, _081C5804 + ldr r0, _081C5808 + ldr r0, [r0] + ldr r2, _081C580C + adds r0, r0, r2 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r0] + cmp r1, #0 + beq _081C57FC + adds r0, r6, #0 + bl _call_via_r1 +_081C57FC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C5804: .4byte gUnknown_85EF728 +_081C5808: .4byte gUnknown_203CBF8 +_081C580C: .4byte 0x00000818 + thumb_func_end sub_081C5794 + + thumb_func_start sub_081C5810 +sub_081C5810: @ 0x081C5810 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C5824 + b _081C598C +_081C5824: + bl sub_08198670 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r5, _081C5868 + ldrh r1, [r5, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081C586C + lsls r0, r4, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bgt _081C5842 + b _081C598C +_081C5842: + subs r0, #2 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081C5998 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C5854 + b _081C598C +_081C5854: + movs r0, #5 + bl sub_080A306C + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + bl sub_08199250 + b _081C598C + .align 2, 0 +_081C5868: .4byte gUnknown_3002360 +_081C586C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C58B0 + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + ldr r0, _081C58AC + ldr r0, [r0] + movs r2, #0x82 + lsls r2, r2, #4 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #2 + cmp r1, r0 + blt _081C588C + b _081C598C +_081C588C: + adds r0, r1, #2 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081C5998 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C598C + movs r0, #5 + bl sub_080A306C + movs r0, #0 + movs r1, #1 + bl sub_08199250 + b _081C598C + .align 2, 0 +_081C58AC: .4byte gUnknown_203CBF8 +_081C58B0: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081C58C4 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C58EC +_081C58C4: + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C598C + subs r0, r1, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081C5998 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C598C + movs r0, #5 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + b _081C5926 +_081C58EC: + ldrh r1, [r5, #0x2e] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _081C5902 + bl sub_081220DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081C592E +_081C5902: + lsls r0, r4, #0x18 + asrs r1, r0, #0x18 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _081C598C + adds r0, r1, #1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_081C5998 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C598C + movs r0, #5 + bl sub_080A306C + movs r0, #1 +_081C5926: + movs r1, #0 + bl sub_08199250 + b _081C598C +_081C592E: + ldrh r1, [r5, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C5974 + movs r0, #5 + bl sub_080A306C + ldr r2, _081C5968 + ldr r0, _081C596C + ldr r0, [r0] + lsls r1, r4, #0x18 + asrs r1, r1, #0x18 + ldr r3, _081C5970 + adds r0, r0, r3 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r2, #4 + adds r0, r0, r2 + ldr r1, [r0] + cmp r1, #0 + beq _081C598C + adds r0, r6, #0 + bl _call_via_r1 + b _081C598C + .align 2, 0 +_081C5968: .4byte gUnknown_85EF728 +_081C596C: .4byte gUnknown_203CBF8 +_081C5970: .4byte 0x00000818 +_081C5974: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C598C + movs r0, #5 + bl sub_080A306C + ldr r0, _081C5994 + ldr r1, [r0, #0x1c] + adds r0, r6, #0 + bl _call_via_r1 +_081C598C: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C5994: .4byte gUnknown_85EF728 + thumb_func_end sub_081C5810 + + thumb_func_start sub_081C5998 +sub_081C5998: @ 0x081C5998 + push {lr} + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + blt _081C59CC + ldr r0, _081C59C4 + ldr r2, [r0] + movs r3, #0x82 + lsls r3, r3, #4 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r1, r0 + bgt _081C59CC + ldr r3, _081C59C8 + adds r0, r2, r3 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #5 + beq _081C59CC + movs r0, #1 + b _081C59CE + .align 2, 0 +_081C59C4: .4byte gUnknown_203CBF8 +_081C59C8: .4byte 0x00000818 +_081C59CC: + movs r0, #0 +_081C59CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C5998 + + thumb_func_start sub_081C59D4 +sub_081C59D4: @ 0x081C59D4 + push {lr} + ldr r0, _081C59F0 + ldr r0, [r0] + movs r1, #0x82 + lsls r1, r1, #4 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + bne _081C59F4 + movs r0, #0 + bl sub_081C652C + b _081C5A06 + .align 2, 0 +_081C59F0: .4byte gUnknown_203CBF8 +_081C59F4: + cmp r0, #2 + bne _081C5A00 + movs r0, #1 + bl sub_081C652C + b _081C5A06 +_081C5A00: + movs r0, #2 + bl sub_081C652C +_081C5A06: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C59D4 + + thumb_func_start sub_081C5A0C +sub_081C5A0C: @ 0x081C5A0C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081C5A48 + ldrh r0, [r4] + bl sub_080D6DB0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + beq _081C5A38 + cmp r0, #2 + beq _081C5A38 + cmp r0, #3 + beq _081C5A38 + ldrh r0, [r4] + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C5A54 +_081C5A38: + bl sub_081C59D4 + ldr r1, _081C5A4C + ldr r2, _081C5A50 + adds r0, r5, #0 + bl sub_081C6598 + b _081C5A7E + .align 2, 0 +_081C5A48: .4byte gUnknown_203CB48 +_081C5A4C: .4byte gUnknown_85C9556 +_081C5A50: .4byte sub_081C5F24 +_081C5A54: + ldrh r0, [r4] + bl sub_080D6DF8 + cmp r0, #0 + beq _081C5A7E + bl sub_081C59D4 + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + bl sub_08199654 + ldrh r0, [r4] + bl sub_080D6DF8 + adds r1, r0, #0 + adds r0, r5, #0 + bl _call_via_r1 +_081C5A7E: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C5A0C + + thumb_func_start sub_081C5A84 +sub_081C5A84: @ 0x081C5A84 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081C5AC4 + adds r4, r4, r0 + bl sub_081C59D4 + movs r1, #2 + ldrsh r0, [r4, r1] + bl sub_081C4DD4 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + ldrb r0, [r4] + movs r1, #0 + bl sub_081C5294 + adds r0, r5, #0 + bl sub_081C5AC8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5AC4: .4byte gUnknown_3005B68 + thumb_func_end sub_081C5A84 + + thumb_func_start sub_081C5AC8 +sub_081C5AC8: @ 0x081C5AC8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081C4E70 + ldr r1, _081C5AE8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081C5AEC + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C5AE8: .4byte gUnknown_3005B60 +_081C5AEC: .4byte sub_081C53C4 + thumb_func_end sub_081C5AC8 + + thumb_func_start sub_081C5AF0 +sub_081C5AF0: @ 0x081C5AF0 + push {r4, r5, r6, r7, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r6, r0, #3 + ldr r7, _081C5B1C + adds r4, r6, r7 + bl sub_081C59D4 + movs r0, #1 + strh r0, [r4, #0x10] + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _081C5B20 + adds r0, r5, #0 + bl sub_081C5B7C + b _081C5B60 + .align 2, 0 +_081C5B1C: .4byte gUnknown_3005B68 +_081C5B20: + ldr r0, _081C5B68 + ldrh r0, [r0] + ldr r1, _081C5B6C + bl sub_080D5EC8 + ldr r4, _081C5B70 + ldr r1, _081C5B74 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + bl sub_081C5C30 + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081C5B78 + str r1, [r0] +_081C5B60: + add sp, #0x10 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C5B68: .4byte gUnknown_203CB48 +_081C5B6C: .4byte gUnknown_2021C40 +_081C5B70: .4byte gUnknown_2021C7C +_081C5B74: .4byte gUnknown_85C9523 +_081C5B78: .4byte sub_081C5CC4 + thumb_func_end sub_081C5AF0 + + thumb_func_start sub_081C5B7C +sub_081C5B7C: @ 0x081C5B7C + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081C5BE0 + adds r4, r4, r0 + ldr r0, _081C5BE4 + ldrh r0, [r0] + ldr r1, _081C5BE8 + bl sub_080D5EC8 + ldr r0, _081C5BEC + movs r2, #0x10 + ldrsh r1, [r4, r2] + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081C5BF0 + ldr r1, _081C5BF4 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + ldr r1, _081C5BF8 + adds r0, r5, #0 + bl sub_081C656C + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5BE0: .4byte gUnknown_3005B68 +_081C5BE4: .4byte gUnknown_203CB48 +_081C5BE8: .4byte gUnknown_2021C40 +_081C5BEC: .4byte gUnknown_2021C54 +_081C5BF0: .4byte gUnknown_2021C7C +_081C5BF4: .4byte gUnknown_85C9540 +_081C5BF8: .4byte gUnknown_85EF764 + thumb_func_end sub_081C5B7C + + thumb_func_start sub_081C5BFC +sub_081C5BFC: @ 0x081C5BFC + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081C5C2C + adds r4, r4, r0 + movs r1, #2 + ldrsh r0, [r4, r1] + bl sub_081C4DD4 + ldrb r0, [r4] + movs r1, #0 + bl sub_081C5294 + adds r0, r5, #0 + bl sub_081C5AC8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5C2C: .4byte gUnknown_3005B68 + thumb_func_end sub_081C5BFC + + thumb_func_start sub_081C5C30 +sub_081C5C30: @ 0x081C5C30 + push {r4, lr} + sub sp, #0xc + ldr r0, _081C5C70 + movs r1, #1 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081C5C74 + ldr r1, _081C5C78 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #3 + bl sub_081C64AC + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + adds r2, r4, #0 + movs r3, #8 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C5C70: .4byte gUnknown_2021C40 +_081C5C74: .4byte gUnknown_2021C7C +_081C5C78: .4byte gUnknown_85C943C + thumb_func_end sub_081C5C30 + + thumb_func_start sub_081C5C7C +sub_081C5C7C: @ 0x081C5C7C + push {r4, lr} + sub sp, #0xc + adds r1, r0, #0 + ldr r0, _081C5CB8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081C5CBC + ldr r1, _081C5CC0 + adds r0, r4, #0 + bl sub_08008BCC + movs r0, #2 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #3 + movs r1, #1 + adds r2, r4, #0 + movs r3, #8 + bl sub_0800449C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C5CB8: .4byte gUnknown_2021C40 +_081C5CBC: .4byte gUnknown_2021C7C +_081C5CC0: .4byte gUnknown_85C943C + thumb_func_end sub_081C5C7C + + thumb_func_start sub_081C5CC4 +sub_081C5CC4: @ 0x081C5CC4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C5CF4 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x10 + ldrh r1, [r4, #4] + bl sub_08122040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C5CF8 + movs r1, #0x10 + ldrsh r0, [r4, r1] + bl sub_081C5C7C + b _081C5D54 + .align 2, 0 +_081C5CF4: .4byte gUnknown_3005B68 +_081C5CF8: + ldr r0, _081C5D28 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C5D2C + movs r0, #5 + bl sub_080A306C + movs r0, #3 + movs r1, #0 + bl sub_08198134 + movs r0, #3 + bl sub_08003774 + movs r0, #1 + bl sub_08199654 + adds r0, r5, #0 + bl sub_081C5B7C + b _081C5D54 + .align 2, 0 +_081C5D28: .4byte gUnknown_3002360 +_081C5D2C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C5D54 + movs r0, #5 + bl sub_080A306C + movs r0, #3 + movs r1, #0 + bl sub_08198134 + movs r0, #3 + bl sub_08003774 + movs r0, #1 + bl sub_08199654 + adds r0, r6, #0 + bl sub_081C5BFC +_081C5D54: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C5CC4 + + thumb_func_start sub_081C5D5C +sub_081C5D5C: @ 0x081C5D5C + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081C5DC0 + adds r6, r4, r5 + ldr r0, _081C5DC4 + ldrh r0, [r0] + ldr r1, _081C5DC8 + bl sub_080D5EC8 + ldr r0, _081C5DCC + movs r2, #0x10 + ldrsh r1, [r6, r2] + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + ldr r6, _081C5DD0 + ldr r1, _081C5DD4 + adds r0, r6, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081C5DD8 + str r0, [r4] + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C5DC0: .4byte gUnknown_3005B68 +_081C5DC4: .4byte gUnknown_203CB48 +_081C5DC8: .4byte gUnknown_2021C40 +_081C5DCC: .4byte gUnknown_2021C54 +_081C5DD0: .4byte gUnknown_2021C7C +_081C5DD4: .4byte gUnknown_85C9532 +_081C5DD8: .4byte sub_081C5DDC + thumb_func_end sub_081C5D5C + + thumb_func_start sub_081C5DDC +sub_081C5DDC: @ 0x081C5DDC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C5E44 + adds r4, r0, r1 + ldr r6, _081C5E48 + subs r7, r6, #2 + ldr r0, _081C5E4C + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _081C5E3E + movs r0, #5 + bl sub_080A306C + ldr r0, _081C5E50 + ldrh r0, [r0] + ldrh r1, [r4, #0x10] + bl sub_080D6B4C + ldrb r0, [r4] + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_081AE3A0 + bl sub_081C5120 + bl sub_081C51B8 + bl sub_081C4B1C + ldr r0, _081C5E54 + ldrh r1, [r6] + ldrh r2, [r7] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #0 + bl sub_08199654 + adds r0, r5, #0 + bl sub_081C5AC8 +_081C5E3E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C5E44: .4byte gUnknown_3005B68 +_081C5E48: .4byte gUnknown_203CC04 +_081C5E4C: .4byte gUnknown_3002360 +_081C5E50: .4byte gUnknown_203CB48 +_081C5E54: .4byte gUnknown_3006050 + thumb_func_end sub_081C5DDC + + thumb_func_start sub_081C5E58 +sub_081C5E58: @ 0x081C5E58 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + bl sub_081C59D4 + ldr r5, _081C5E80 + ldrh r0, [r5] + bl sub_080D4040 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081C5E8C + ldr r1, _081C5E84 + ldr r2, _081C5E88 + adds r0, r4, #0 + bl sub_081C6598 + b _081C5EB6 + .align 2, 0 +_081C5E80: .4byte gUnknown_203CB48 +_081C5E84: .4byte gUnknown_85C945C +_081C5E88: .4byte sub_081C5EFC +_081C5E8C: + ldrh r0, [r5] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C5EB0 + ldr r0, _081C5EA8 + ldr r1, [r0] + ldr r0, _081C5EAC + str r0, [r1] + adds r0, r4, #0 + bl sub_081C5310 + b _081C5EB6 + .align 2, 0 +_081C5EA8: .4byte gUnknown_203CBF8 +_081C5EAC: .4byte sub_081B7C00 +_081C5EB0: + adds r0, r6, #0 + bl sub_081C5EBC +_081C5EB6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C5E58 + + thumb_func_start sub_081C5EBC +sub_081C5EBC: @ 0x081C5EBC + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081C5EE8 + ldrh r0, [r0] + ldr r1, _081C5EEC + bl sub_080D5EC8 + ldr r5, _081C5EF0 + ldr r1, _081C5EF4 + adds r0, r5, #0 + bl sub_08008BCC + ldr r2, _081C5EF8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081C6598 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5EE8: .4byte gUnknown_203CB48 +_081C5EEC: .4byte gUnknown_2021C40 +_081C5EF0: .4byte gUnknown_2021C7C +_081C5EF4: .4byte gUnknown_85C948E +_081C5EF8: .4byte sub_081C5EFC + thumb_func_end sub_081C5EBC + + thumb_func_start sub_081C5EFC +sub_081C5EFC: @ 0x081C5EFC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081C5F20 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C5F1A + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081C5F24 +_081C5F1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C5F20: .4byte gUnknown_3002360 + thumb_func_end sub_081C5EFC + + thumb_func_start sub_081C5F24 +sub_081C5F24: @ 0x081C5F24 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r5, #2 + adds r4, r4, r5 + lsls r4, r4, #3 + ldr r0, _081C5F58 + adds r4, r4, r0 + bl sub_081C65DC + movs r1, #2 + ldrsh r0, [r4, r1] + bl sub_081C4DD4 + ldrb r0, [r4] + movs r1, #0 + bl sub_081C5294 + adds r0, r5, #0 + bl sub_081C5AC8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5F58: .4byte gUnknown_3005B68 + thumb_func_end sub_081C5F24 + + thumb_func_start sub_081C5F5C +sub_081C5F5C: @ 0x081C5F5C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r6, r4, #0 + ldr r5, _081C5F80 + ldrh r0, [r5] + bl sub_08122188 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C5F8C + ldr r1, _081C5F84 + ldr r2, _081C5F88 + adds r0, r4, #0 + bl sub_081C6598 + b _081C5FA6 + .align 2, 0 +_081C5F80: .4byte gUnknown_203CB48 +_081C5F84: .4byte gUnknown_85C945C +_081C5F88: .4byte sub_081C5EFC +_081C5F8C: + ldrh r0, [r5] + bl sub_080D6D68 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C5FA0 + adds r0, r4, #0 + bl sub_081C5310 + b _081C5FA6 +_081C5FA0: + adds r0, r6, #0 + bl sub_081C5EBC +_081C5FA6: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C5F5C + + thumb_func_start sub_081C5FAC +sub_081C5FAC: @ 0x081C5FAC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r4, _081C5FD8 + ldrh r0, [r4] + bl sub_080D6E44 + cmp r0, #0 + beq _081C5FD0 + bl sub_081C59D4 + ldrh r0, [r4] + bl sub_080D6E44 + adds r1, r0, #0 + adds r0, r5, #0 + bl _call_via_r1 +_081C5FD0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C5FD8: .4byte gUnknown_203CB48 + thumb_func_end sub_081C5FAC + + thumb_func_start sub_081C5FDC +sub_081C5FDC: @ 0x081C5FDC + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081C609C + mov sb, r0 + adds r1, r4, #0 + add r1, sb + mov r8, r1 + ldr r0, _081C60A0 + ldrh r1, [r0, #6] + ldrh r0, [r0, #8] + adds r1, r1, r0 + mov r2, r8 + strh r1, [r2, #2] + ldr r0, _081C60A4 + ldr r0, [r0] + ldr r2, _081C60A8 + adds r0, r0, r2 + movs r5, #0 + strb r1, [r0] + mov r1, r8 + ldrb r0, [r1] + movs r1, #0x10 + movs r2, #1 + bl sub_081AEE34 + ldr r0, _081C60AC + ldr r3, [r0] + mov r0, r8 + movs r1, #2 + ldrsh r2, [r0, r1] + lsls r2, r2, #1 + ldr r1, _081C60B0 + adds r0, r3, r1 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + ldr r0, _081C60B4 + adds r3, r3, r0 + adds r3, r3, r2 + ldrh r0, [r3] + ldr r1, _081C60B8 + bl sub_080D5EC8 + ldr r6, _081C60BC + ldr r1, _081C60C0 + adds r0, r6, #0 + bl sub_08008BCC + movs r0, #1 + movs r1, #0 + bl sub_08003B18 + str r5, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + movs r0, #1 + adds r1, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_081C6454 + mov r1, r8 + ldrb r0, [r1] + movs r1, #1 + bl sub_081C5294 + mov r2, r8 + ldrb r0, [r2, #2] + bl sub_081C680C + movs r0, #8 + rsbs r0, r0, #0 + add sb, r0 + add r4, sb + ldr r0, _081C60C4 + str r0, [r4] + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C609C: .4byte gUnknown_3005B68 +_081C60A0: .4byte gUnknown_203CBFC +_081C60A4: .4byte gUnknown_203CBF8 +_081C60A8: .4byte 0x00000814 +_081C60AC: .4byte gUnknown_3005AF0 +_081C60B0: .4byte 0x00000CA9 +_081C60B4: .4byte 0x00000E2C +_081C60B8: .4byte gUnknown_2021C40 +_081C60BC: .4byte gUnknown_2021C7C +_081C60C0: .4byte gUnknown_85C947F +_081C60C4: .4byte sub_081C60C8 + thumb_func_end sub_081C5FDC + + thumb_func_start sub_081C60C8 +sub_081C60C8: @ 0x081C60C8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C6104 + adds r4, r0, r1 + bl sub_081221F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081C6174 + ldr r7, _081C6108 + ldrh r1, [r7, #0x2e] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081C6110 + movs r0, #5 + bl sub_080A306C + ldrb r0, [r4] + ldr r1, _081C610C + subs r2, r1, #2 + bl sub_081AE538 + b _081C6158 + .align 2, 0 +_081C6104: .4byte gUnknown_3005B68 +_081C6108: .4byte gUnknown_3002360 +_081C610C: .4byte gUnknown_203CC04 +_081C6110: + ldrb r0, [r4] + bl sub_081AE2DC + adds r6, r0, #0 + ldrb r0, [r4] + ldr r4, _081C6144 + subs r2, r4, #2 + adds r1, r4, #0 + bl sub_081AE538 + movs r0, #0 + bl sub_081C67E8 + subs r4, #8 + ldrb r0, [r4, #6] + bl sub_081C680C + movs r0, #2 + rsbs r0, r0, #0 + cmp r6, r0 + beq _081C6148 + adds r0, #1 + cmp r6, r0 + bne _081C6168 + b _081C6174 + .align 2, 0 +_081C6144: .4byte gUnknown_203CC04 +_081C6148: + movs r0, #5 + bl sub_080A306C + ldrh r1, [r7, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C6160 +_081C6158: + adds r0, r5, #0 + bl sub_081C617C + b _081C6174 +_081C6160: + adds r0, r5, #0 + bl sub_081C622C + b _081C6174 +_081C6168: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081C617C +_081C6174: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C60C8 + + thumb_func_start sub_081C617C +sub_081C617C: @ 0x081C617C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081C61B8 + adds r5, r0, r1 + ldr r7, _081C61BC + subs r0, r7, #2 + mov r8, r0 + ldrh r0, [r0] + ldrh r1, [r7] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r3, #2 + ldrsh r1, [r5, r3] + cmp r1, r4 + beq _081C61AE + subs r0, r4, #1 + cmp r1, r0 + bne _081C61C0 +_081C61AE: + adds r0, r6, #0 + bl sub_081C622C + b _081C6214 + .align 2, 0 +_081C61B8: .4byte gUnknown_3005B68 +_081C61BC: .4byte gUnknown_203CC04 +_081C61C0: + ldrb r0, [r5, #2] + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_081C4FA4 + ldr r0, _081C6220 + ldr r0, [r0] + ldr r1, _081C6224 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + movs r0, #1 + bl sub_081C67E8 + ldrb r0, [r5] + adds r1, r7, #0 + mov r2, r8 + bl sub_081AE3A0 + movs r3, #2 + ldrsh r0, [r5, r3] + cmp r0, r4 + bge _081C61F8 + adds r1, r7, #0 + subs r1, #8 + ldrh r0, [r1, #6] + subs r0, #1 + strh r0, [r1, #6] +_081C61F8: + bl sub_081C4B1C + ldr r0, _081C6228 + ldrh r1, [r7] + mov r3, r8 + ldrh r2, [r3] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5] + adds r0, r6, #0 + bl sub_081C5AC8 +_081C6214: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C6220: .4byte gUnknown_203CBF8 +_081C6224: .4byte 0x00000814 +_081C6228: .4byte gUnknown_3006050 + thumb_func_end sub_081C617C + + thumb_func_start sub_081C622C +sub_081C622C: @ 0x081C622C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r0, #0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081C6298 + adds r4, r0, r1 + ldr r5, _081C629C + subs r7, r5, #2 + ldr r0, _081C62A0 + ldr r0, [r0] + ldr r1, _081C62A4 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + movs r0, #1 + bl sub_081C67E8 + ldrb r0, [r4] + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_081AE3A0 + movs r0, #2 + ldrsh r2, [r4, r0] + ldrh r0, [r5] + ldrh r1, [r7] + adds r0, r0, r1 + cmp r2, r0 + bge _081C6276 + adds r1, r5, #0 + subs r1, #8 + ldrh r0, [r1, #6] + subs r0, #1 + strh r0, [r1, #6] +_081C6276: + bl sub_081C4B1C + ldr r0, _081C62A8 + ldrh r1, [r5] + ldrh r2, [r7] + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + adds r0, r6, #0 + bl sub_081C5AC8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C6298: .4byte gUnknown_3005B68 +_081C629C: .4byte gUnknown_203CC04 +_081C62A0: .4byte gUnknown_203CBF8 +_081C62A4: .4byte 0x00000814 +_081C62A8: .4byte gUnknown_3006050 + thumb_func_end sub_081C622C + + thumb_func_start sub_081C62AC +sub_081C62AC: @ 0x081C62AC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + ldr r0, _081C6388 + mov sb, r0 + movs r0, #0x14 + bl sub_08000BC8 + adds r7, r0, #0 + movs r0, #0xa + bl sub_08000BC8 + adds r5, r0, #0 + ldr r1, _081C638C + mov r8, r1 + ldr r2, [r1] + ldr r4, _081C6390 + adds r0, r2, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r0, _081C6394 + adds r1, r1, r0 + adds r0, r7, #0 + movs r2, #0x14 + bl memcpy + mov r1, r8 + ldr r2, [r1] + adds r0, r2, r4 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldr r0, _081C6398 + adds r1, r1, r0 + adds r0, r5, #0 + movs r2, #0xa + bl memcpy + movs r6, #0 +_081C6310: + movs r0, #0x64 + muls r0, r6, r0 + add r0, sb + movs r1, #0xc + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r1, sp + strh r0, [r1] + cmp r0, #0 + beq _081C63A0 + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C63A0 + mov r1, r8 + ldr r2, [r1] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081C6394 + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #0x14 + bl memcpy + mov r0, r8 + ldr r2, [r0] + adds r0, r2, r4 + ldrb r1, [r0] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldr r1, _081C6398 + adds r0, r0, r1 + adds r1, r5, #0 + movs r2, #0xa + bl memcpy + adds r0, r7, #0 + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_08000BF0 + ldr r1, _081C639C + movs r0, #1 + strh r0, [r1] + b _081C63DE + .align 2, 0 +_081C6388: .4byte gUnknown_2024190 +_081C638C: .4byte gUnknown_3005AF0 +_081C6390: .4byte 0x00000CA9 +_081C6394: .4byte 0x00000E2C +_081C6398: .4byte 0x00000E54 +_081C639C: .4byte gUnknown_2037290 +_081C63A0: + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _081C6310 + movs r1, #0 + mov r0, sp + strh r1, [r0] + movs r6, #0 + movs r4, #0x64 +_081C63B4: + adds r0, r6, #0 + muls r0, r4, r0 + add r0, sb + movs r1, #0xc + mov r2, sp + bl sub_0806A774 + adds r0, r6, #1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #2 + bls _081C63B4 + ldr r1, _081C63EC + movs r0, #0 + strh r0, [r1] + adds r0, r7, #0 + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_08000BF0 +_081C63DE: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C63EC: .4byte gUnknown_2037290 + thumb_func_end sub_081C62AC + + thumb_func_start sub_081C63F0 +sub_081C63F0: @ 0x081C63F0 + push {r4, lr} + ldr r0, _081C644C + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + movs r0, #0 + movs r1, #0xa + movs r2, #0xd0 + bl sub_08098104 + ldr r0, _081C6450 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r4, #0 +_081C641C: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _081C641C + movs r0, #0 + bl sub_0800365C + movs r0, #1 + bl sub_0800365C + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C644C: .4byte gUnknown_85EF778 +_081C6450: .4byte gUnknown_85D7B04 + thumb_func_end sub_081C63F0 + + thumb_func_start sub_081C6454 +sub_081C6454: @ 0x081C6454 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x14 + ldr r4, [sp, #0x28] + ldr r6, [sp, #0x2c] + ldr r5, [sp, #0x30] + mov r8, r5 + ldr r5, [sp, #0x34] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + str r4, [sp] + str r6, [sp, #4] + lsls r4, r5, #1 + adds r4, r4, r5 + ldr r5, _081C64A8 + adds r4, r4, r5 + str r4, [sp, #8] + mov r4, r8 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + str r4, [sp, #0xc] + str r1, [sp, #0x10] + movs r1, #1 + bl sub_08199B84 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C64A8: .4byte gUnknown_85EF76C + thumb_func_end sub_081C6454 + + thumb_func_start sub_081C64AC +sub_081C64AC: @ 0x081C64AC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + movs r0, #1 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C64AC + + thumb_func_start sub_081C64C8 +sub_081C64C8: @ 0x081C64C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C64DC + ldr r1, [r1] + ldr r2, _081C64E0 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_081C64DC: .4byte gUnknown_203CBF8 +_081C64E0: .4byte 0x0000080F + thumb_func_end sub_081C64C8 + + thumb_func_start sub_081C64E4 +sub_081C64E4: @ 0x081C64E4 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081C6520 + ldr r3, _081C6524 + adds r1, r2, r3 + ldr r0, [r0] + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0xff + bne _081C6518 + lsls r0, r2, #3 + ldr r1, _081C6528 + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + movs r0, #1 + bl sub_08199654 +_081C6518: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C6520: .4byte gUnknown_203CBF8 +_081C6524: .4byte 0x0000080F +_081C6528: .4byte gUnknown_85EF7A0 + thumb_func_end sub_081C64E4 + + thumb_func_start sub_081C652C +sub_081C652C: @ 0x081C652C + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C6564 + ldr r2, _081C6568 + adds r0, r0, r2 + ldr r1, [r1] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + beq _081C655E + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #1 + bl sub_08199654 + movs r0, #0xff + strb r0, [r4] +_081C655E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C6564: .4byte gUnknown_203CBF8 +_081C6568: .4byte 0x0000080F + thumb_func_end sub_081C652C + + thumb_func_start sub_081C656C +sub_081C656C: @ 0x081C656C + push {lr} + sub sp, #0x10 + adds r3, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081C6594 + movs r2, #2 + str r2, [sp] + movs r2, #1 + str r2, [sp, #4] + movs r2, #0xe + str r2, [sp, #8] + str r3, [sp, #0xc] + movs r2, #1 + movs r3, #0 + bl sub_08121F84 + add sp, #0x10 + pop {r0} + bx r0 + .align 2, 0 +_081C6594: .4byte gUnknown_85EF7C0 + thumb_func_end sub_081C656C + + thumb_func_start sub_081C6598 +sub_081C6598: @ 0x081C6598 + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + movs r1, #0x11 + bl sub_08003B18 + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + str r1, [sp] + str r0, [sp, #4] + str r5, [sp, #8] + str r6, [sp, #0xc] + adds r0, r4, #0 + movs r1, #2 + movs r2, #0xa + movs r3, #0xd + bl sub_08121E6C + movs r0, #1 + bl sub_08199654 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6598 + + thumb_func_start sub_081C65DC +sub_081C65DC: @ 0x081C65DC + push {lr} + movs r0, #2 + movs r1, #0 + bl sub_08197EBC + movs r0, #2 + bl sub_08003774 + movs r0, #1 + bl sub_08199654 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C65DC + + thumb_func_start sub_081C65F8 +sub_081C65F8: @ 0x081C65F8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081C6648 + ldr r2, _081C664C + adds r1, r4, r2 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + beq _081C6640 + ldr r0, _081C6650 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081C6654 + adds r0, r0, r4 + bl sub_0800730C + ldrb r1, [r5] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0xff + strb r0, [r5] +_081C6640: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C6648: .4byte gUnknown_203CBF8 +_081C664C: .4byte 0x00000804 +_081C6650: .4byte 0x00001024 +_081C6654: .4byte gUnknown_20205AC + thumb_func_end sub_081C65F8 + + thumb_func_start sub_081C6658 +sub_081C6658: @ 0x081C6658 + push {r4, lr} + sub sp, #8 + movs r0, #0x40 + bl sub_08000BC8 + adds r4, r0, #0 + ldr r0, _081C66A0 + adds r1, r4, #0 + bl sub_08034370 + ldr r0, _081C66A4 + ldr r0, [r0] + ldr r1, _081C66A8 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x19 + adds r0, r4, r0 + str r0, [sp] + ldr r1, _081C66AC + ldr r0, [sp, #4] + ands r0, r1 + ldr r1, _081C66B0 + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_0800845C + adds r0, r4, #0 + bl sub_08000BF0 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C66A0: .4byte gUnknown_8D9AFC8 +_081C66A4: .4byte gUnknown_3005AF0 +_081C66A8: .4byte 0x00000CA9 +_081C66AC: .4byte 0xFFFF0000 +_081C66B0: .4byte 0x00001024 + thumb_func_end sub_081C6658 + + thumb_func_start sub_081C66B4 +sub_081C66B4: @ 0x081C66B4 + push {r4, lr} + ldr r0, _081C66D4 + ldr r4, [r0] + ldr r0, _081C66D8 + adds r4, r4, r0 + ldr r0, _081C66DC + movs r1, #0x44 + movs r2, #0x38 + movs r3, #0 + bl sub_08006B0C + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C66D4: .4byte gUnknown_203CBF8 +_081C66D8: .4byte 0x00000804 +_081C66DC: .4byte gUnknown_85EF824 + thumb_func_end sub_081C66B4 + + thumb_func_start sub_081C66E0 +sub_081C66E0: @ 0x081C66E0 + push {r4, lr} + ldr r0, _081C6718 + ldr r0, [r0] + ldr r1, _081C671C + adds r0, r0, r1 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081C6720 + adds r4, r0, r1 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081C6710 + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldr r0, _081C6724 + str r0, [r4, #0x1c] +_081C6710: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C6718: .4byte gUnknown_203CBF8 +_081C671C: .4byte 0x00000804 +_081C6720: .4byte gUnknown_20205AC +_081C6724: .4byte sub_081C6728 + thumb_func_end sub_081C66E0 + + thumb_func_start sub_081C6728 +sub_081C6728: @ 0x081C6728 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081C6744 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007F70 + ldr r0, _081C674C + str r0, [r4, #0x1c] +_081C6744: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C674C: .4byte sub_08007140 + thumb_func_end sub_081C6728 + + thumb_func_start sub_081C6750 +sub_081C6750: @ 0x081C6750 + push {r4, r5, r6, lr} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _081C67A8 + ldr r2, _081C67AC + adds r1, r4, r2 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, #0xff + bne _081C67A0 + ldr r0, _081C67B0 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + adds r0, r4, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081AFB48 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0x40 + beq _081C67A0 + strb r2, [r5] + ldr r1, _081C67B4 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0x18 + strh r1, [r0, #0x24] + movs r1, #0x58 + strh r1, [r0, #0x26] +_081C67A0: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C67A8: .4byte gUnknown_203CBF8 +_081C67AC: .4byte 0x00000805 +_081C67B0: .4byte 0x00001025 +_081C67B4: .4byte gUnknown_20205AC + thumb_func_end sub_081C6750 + + thumb_func_start sub_081C67B8 +sub_081C67B8: @ 0x081C67B8 + push {lr} + lsls r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #0x11 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + bl sub_081C65F8 + pop {r0} + bx r0 + thumb_func_end sub_081C67B8 + + thumb_func_start sub_081C67CC +sub_081C67CC: @ 0x081C67CC + push {lr} + ldr r0, _081C67E0 + ldr r0, [r0] + ldr r1, _081C67E4 + adds r0, r0, r1 + movs r1, #8 + bl sub_08122350 + pop {r0} + bx r0 + .align 2, 0 +_081C67E0: .4byte gUnknown_203CBF8 +_081C67E4: .4byte 0x00000807 + thumb_func_end sub_081C67CC + + thumb_func_start sub_081C67E8 +sub_081C67E8: @ 0x081C67E8 + push {lr} + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r0, _081C6804 + ldr r0, [r0] + ldr r1, _081C6808 + adds r0, r0, r1 + movs r1, #8 + bl sub_08122408 + pop {r0} + bx r0 + .align 2, 0 +_081C6804: .4byte gUnknown_203CBF8 +_081C6808: .4byte 0x00000807 + thumb_func_end sub_081C67E8 + + thumb_func_start sub_081C680C +sub_081C680C: @ 0x081C680C + push {lr} + adds r3, r0, #0 + lsls r3, r3, #0x18 + ldr r0, _081C6830 + ldr r0, [r0] + ldr r1, _081C6834 + adds r0, r0, r1 + lsrs r3, r3, #4 + movs r1, #0x80 + lsls r1, r1, #0xd + adds r3, r3, r1 + lsrs r3, r3, #0x10 + movs r1, #0x88 + movs r2, #0x78 + bl sub_08122454 + pop {r0} + bx r0 + .align 2, 0 +_081C6830: .4byte gUnknown_203CBF8 +_081C6834: .4byte 0x00000807 + thumb_func_end sub_081C680C + + thumb_func_start sub_081C6838 +sub_081C6838: @ 0x081C6838 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_080856F4 + cmp r0, #0 + bne _081C6850 + ldr r0, _081C684C + b _081C6852 + .align 2, 0 +_081C684C: .4byte sub_081C6930 +_081C6850: + ldr r0, _081C688C +_081C6852: + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_080A8B44 + ldr r1, _081C6890 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r2, _081C6894 + ldrb r1, [r2] + strh r1, [r0, #0xe] + ldrb r0, [r2] + adds r1, r0, #1 + strb r1, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #8 + orrs r0, r4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081C688C: .4byte sub_081C69A4 +_081C6890: .4byte gUnknown_3005B60 +_081C6894: .4byte gUnknown_203CC08 + thumb_func_end sub_081C6838 + + thumb_func_start sub_081C6898 +sub_081C6898: @ 0x081C6898 + push {lr} + ldr r1, _081C68CC + ands r1, r0 + lsrs r3, r0, #0x10 + ldr r2, _081C68D0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r1, r0, r2 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _081C68DC + ldr r2, [r1] + ldr r0, _081C68D4 + cmp r2, r0 + beq _081C68BE + ldr r0, _081C68D8 + cmp r2, r0 + bne _081C68DC +_081C68BE: + movs r2, #0xe + ldrsh r0, [r1, r2] + cmp r0, r3 + bne _081C68DC + movs r0, #1 + b _081C68DE + .align 2, 0 +_081C68CC: .4byte 0x0000FFFF +_081C68D0: .4byte gUnknown_3005B60 +_081C68D4: .4byte sub_081C6930 +_081C68D8: .4byte sub_081C69A4 +_081C68DC: + movs r0, #0 +_081C68DE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C6898 + + thumb_func_start sub_081C68E4 +sub_081C68E4: @ 0x081C68E4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + ldr r4, _081C6914 +_081C68EC: + ldrb r0, [r4, #4] + cmp r0, #0 + beq _081C6920 + ldr r1, [r4] + ldr r0, _081C6918 + cmp r1, r0 + beq _081C6900 + ldr r0, _081C691C + cmp r1, r0 + bne _081C6920 +_081C6900: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + movs r1, #1 + bl sub_080A8B7C + cmp r0, r6 + bne _081C6920 + movs r0, #1 + b _081C692A + .align 2, 0 +_081C6914: .4byte gUnknown_3005B60 +_081C6918: .4byte sub_081C6930 +_081C691C: .4byte sub_081C69A4 +_081C6920: + adds r4, #0x28 + adds r5, #1 + cmp r5, #0xf + ble _081C68EC + movs r0, #0 +_081C692A: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081C68E4 + + thumb_func_start sub_081C6930 +sub_081C6930: @ 0x081C6930 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + movs r1, #1 + bl sub_080A8B7C + adds r6, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C6964 + adds r4, r0, r1 + movs r7, #0 +_081C694C: + movs r1, #0 + ldrsh r0, [r4, r1] + bl _call_via_r6 + cmp r0, #4 + bhi _081C6996 + lsls r0, r0, #2 + ldr r1, _081C6968 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C6964: .4byte gUnknown_3005B68 +_081C6968: .4byte _081C696C +_081C696C: @ jump table + .4byte _081C6986 @ case 0 + .4byte _081C6980 @ case 1 + .4byte _081C699E @ case 2 + .4byte _081C699A @ case 3 + .4byte _081C698E @ case 4 +_081C6980: + ldrh r0, [r4] + adds r0, #1 + b _081C6998 +_081C6986: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081C699E +_081C698E: + adds r0, r5, #0 + bl sub_080A8964 + b _081C699E +_081C6996: + subs r0, #5 +_081C6998: + strh r0, [r4] +_081C699A: + cmp r7, #0 + beq _081C694C +_081C699E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C6930 + + thumb_func_start sub_081C69A4 +sub_081C69A4: @ 0x081C69A4 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + bl sub_08086EFC + cmp r0, #0 + bne _081C6A0A + adds r0, r5, #0 + movs r1, #1 + bl sub_080A8B7C + adds r2, r0, #0 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C69DC + adds r4, r0, r1 + movs r1, #0 + ldrsh r0, [r4, r1] + bl _call_via_r2 + cmp r0, #4 + bhi _081C6A06 + lsls r0, r0, #2 + ldr r1, _081C69E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C69DC: .4byte gUnknown_3005B68 +_081C69E0: .4byte _081C69E4 +_081C69E4: @ jump table + .4byte _081C69F8 @ case 0 + .4byte _081C69F8 @ case 1 + .4byte _081C6A0A @ case 2 + .4byte _081C6A0A @ case 3 + .4byte _081C69FE @ case 4 +_081C69F8: + ldrh r0, [r4] + adds r0, #1 + b _081C6A08 +_081C69FE: + adds r0, r5, #0 + bl sub_080A8964 + b _081C6A0A +_081C6A06: + subs r0, #5 +_081C6A08: + strh r0, [r4] +_081C6A0A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C69A4 + + thumb_func_start sub_081C6A10 +sub_081C6A10: @ 0x081C6A10 + push {r4, lr} + ldr r4, _081C6A28 + movs r0, #0x5c + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _081C6A30 + ldr r0, _081C6A2C + bl sub_08000540 + b _081C6A52 + .align 2, 0 +_081C6A28: .4byte gUnknown_203CC0C +_081C6A2C: .4byte sub_08085AFC +_081C6A30: + bl sub_081C6B20 + bl sub_080A8818 + movs r0, #0 + bl sub_080006F0 + ldr r0, _081C6A58 + movs r1, #0 + bl sub_080A8878 + ldr r0, _081C6A5C + bl sub_08000540 + ldr r0, _081C6A60 + bl sub_080006F0 +_081C6A52: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C6A58: .4byte sub_081C6BEC +_081C6A5C: .4byte sub_081C6BC0 +_081C6A60: .4byte sub_081C6BD8 + thumb_func_end sub_081C6A10 + + thumb_func_start sub_081C6A64 +sub_081C6A64: @ 0x081C6A64 + push {lr} + ldr r0, _081C6A78 + bl sub_08000540 + movs r0, #1 + movs r1, #0 + bl sub_080AB5CC + pop {r0} + bx r0 + .align 2, 0 +_081C6A78: .4byte sub_081C6A7C + thumb_func_end sub_081C6A64 + + thumb_func_start sub_081C6A7C +sub_081C6A7C: @ 0x081C6A7C + push {r4, lr} + bl sub_080A12E4 + ldr r0, _081C6AA4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081C6AE0 + ldr r4, _081C6AA8 + movs r0, #0x5c + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _081C6AB0 + ldr r0, _081C6AAC + bl sub_08000540 + b _081C6AE0 + .align 2, 0 +_081C6AA4: .4byte gUnknown_2037C74 +_081C6AA8: .4byte gUnknown_203CC0C +_081C6AAC: .4byte sub_08085B34 +_081C6AB0: + bl sub_081C6B20 + ldr r1, [r4] + movs r0, #1 + strh r0, [r1, #8] + bl sub_080A8818 + bl sub_0800668C + bl sub_08008424 + movs r0, #0 + bl sub_080006F0 + ldr r0, _081C6AE8 + movs r1, #0 + bl sub_080A8878 + ldr r0, _081C6AEC + bl sub_08000540 + ldr r0, _081C6AF0 + bl sub_080006F0 +_081C6AE0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C6AE8: .4byte sub_081C6BEC +_081C6AEC: .4byte sub_081C6BC0 +_081C6AF0: .4byte sub_081C6BD8 + thumb_func_end sub_081C6A7C + + thumb_func_start sub_081C6AF4 +sub_081C6AF4: @ 0x081C6AF4 + push {r4, lr} + movs r4, #0 +_081C6AF8: + adds r0, r4, #0 + bl sub_081C6E10 + adds r4, #1 + cmp r4, #0x12 + ble _081C6AF8 + ldr r4, _081C6B1C + ldr r0, [r4] + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] + bl sub_080005BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C6B1C: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6AF4 + + thumb_func_start sub_081C6B20 +sub_081C6B20: @ 0x081C6B20 + push {r4, r5, lr} + adds r5, r0, #0 + movs r2, #0 + movs r1, #0x12 + adds r0, #0x58 +_081C6B2A: + str r2, [r0] + subs r0, #4 + subs r1, #1 + cmp r1, #0 + bge _081C6B2A + movs r4, #0 + strh r4, [r5, #8] + str r4, [r5, #4] + bl sub_081C6B48 + str r0, [r5, #0xc] + str r4, [r5] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C6B20 + + thumb_func_start sub_081C6B48 +sub_081C6B48: @ 0x081C6B48 + push {r4, r5, r6, lr} + movs r5, #0 +_081C6B4C: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081C6BA8 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _081C6B7A + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _081C6B7A + adds r0, r4, #0 + movs r1, #0x52 + bl sub_0806A058 + cmp r0, #0 + bne _081C6BA2 +_081C6B7A: + adds r5, #1 + cmp r5, #5 + ble _081C6B4C + movs r4, #0 +_081C6B82: + movs r5, #0 + lsls r6, r4, #0x18 +_081C6B86: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080D1B10 + cmp r0, #0 + beq _081C6BAC + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r6, #0x18 + movs r2, #0x52 + bl sub_080D15D0 + cmp r0, #0 + beq _081C6BAC +_081C6BA2: + movs r0, #1 + b _081C6BBA + .align 2, 0 +_081C6BA8: .4byte gUnknown_2024190 +_081C6BAC: + adds r5, #1 + cmp r5, #0x1d + ble _081C6B86 + adds r4, #1 + cmp r4, #0xd + ble _081C6B82 + movs r0, #0 +_081C6BBA: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081C6B48 + + thumb_func_start sub_081C6BC0 +sub_081C6BC0: @ 0x081C6BC0 + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6BC0 + + thumb_func_start sub_081C6BD8 +sub_081C6BD8: @ 0x081C6BD8 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6BD8 + + thumb_func_start sub_081C6BEC +sub_081C6BEC: @ 0x081C6BEC + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081C6C10 + adds r7, r1, r0 + movs r1, #0 + ldrsh r0, [r7, r1] + cmp r0, #5 + bls _081C6C06 + b _081C6D22 +_081C6C06: + lsls r0, r0, #2 + ldr r1, _081C6C14 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C6C10: .4byte gUnknown_3005B68 +_081C6C14: .4byte _081C6C18 +_081C6C18: @ jump table + .4byte _081C6C30 @ case 0 + .4byte _081C6C3A @ case 1 + .4byte _081C6C50 @ case 2 + .4byte _081C6C5C @ case 3 + .4byte _081C6CDE @ case 4 + .4byte _081C6CEC @ case 5 +_081C6C30: + bl sub_081C6E84 + movs r0, #1 + strh r0, [r7] + b _081C6D22 +_081C6C3A: + bl sub_081C6EBC + cmp r0, #0 + bne _081C6D22 + ldr r0, _081C6C4C + bl sub_081C6D2C + b _081C6CA8 + .align 2, 0 +_081C6C4C: .4byte 0x000186A0 +_081C6C50: + bl sub_081C702C + cmp r0, #0 + bne _081C6D22 + movs r0, #3 + strh r0, [r7] +_081C6C5C: + bl sub_081C6DA0 + adds r6, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + beq _081C6CBC + ldr r0, _081C6CB0 + cmp r6, r0 + bls _081C6CC6 + ldr r4, _081C6CB4 + ldr r5, _081C6CB8 + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x18 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, [r5] + ldr r1, [r0, #4] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r4, #0x14 + adds r0, r0, r4 + ldr r0, [r0] + bl _call_via_r0 + adds r0, r6, #0 + bl sub_081C6D2C + cmp r0, #0 + beq _081C6CBC +_081C6CA8: + movs r0, #4 + strh r0, [r7] + b _081C6D22 + .align 2, 0 +_081C6CB0: .4byte 0x0001869F +_081C6CB4: .4byte gUnknown_85EF83C +_081C6CB8: .4byte gUnknown_203CC0C +_081C6CBC: + bl sub_081C6ED0 + movs r0, #5 + strh r0, [r7] + b _081C6D22 +_081C6CC6: + cmp r6, #0 + beq _081C6D22 + adds r0, r6, #0 + bl sub_081C7010 + bl sub_081C702C + cmp r0, #0 + beq _081C6D22 + movs r0, #2 + strh r0, [r7] + b _081C6D22 +_081C6CDE: + bl sub_081C6D94 + cmp r0, #0 + bne _081C6D22 + movs r0, #3 + strh r0, [r7] + b _081C6D22 +_081C6CEC: + bl sub_081C6EF8 + cmp r0, #0 + bne _081C6D22 + ldr r0, _081C6D14 + ldr r0, [r0] + ldrh r0, [r0, #8] + rsbs r4, r0, #0 + orrs r4, r0 + lsrs r4, r4, #0x1f + bl sub_081C8BDC + bl sub_081C6AF4 + cmp r4, #0 + beq _081C6D1C + ldr r0, _081C6D18 + bl sub_08000540 + b _081C6D22 + .align 2, 0 +_081C6D14: .4byte gUnknown_203CC0C +_081C6D18: .4byte sub_08085B34 +_081C6D1C: + ldr r0, _081C6D28 + bl sub_08000540 +_081C6D22: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C6D28: .4byte sub_08085AFC + thumb_func_end sub_081C6BEC + + thumb_func_start sub_081C6D2C +sub_081C6D2C: @ 0x081C6D2C + push {r4, r5, r6, lr} + ldr r1, _081C6D80 + adds r6, r0, r1 + bl sub_081C6DB4 + ldr r5, _081C6D84 + lsls r0, r6, #3 + subs r0, r0, r6 + lsls r4, r0, #2 + adds r0, r4, r5 + ldr r0, [r0] + bl _call_via_r0 + cmp r0, #0 + thumb_func_end sub_081C6D2C + + thumb_func_start sub_081C6D48 +sub_081C6D48: @ 0x081C6D48 + beq _081C6D8C + adds r0, r5, #0 + adds r0, #8 + adds r0, r4, r0 + ldr r0, [r0] + bl _call_via_r0 + cmp r0, #0 + beq _081C6D8C + adds r0, r5, #0 + adds r0, #0xc + adds r0, r4, r0 + ldr r0, [r0] + adds r1, r5, #0 + adds r1, #0x10 + adds r1, r4, r1 + ldr r1, [r1] + bl sub_081C6FF4 + ldr r0, _081C6D88 + ldr r1, [r0] + adds r0, r5, #4 + adds r0, r4, r0 + ldr r0, [r0] + str r0, [r1] + str r6, [r1, #4] + movs r0, #1 + b _081C6D8E + .align 2, 0 +_081C6D80: .4byte 0xFFFE7960 +_081C6D84: .4byte gUnknown_85EF83C +_081C6D88: .4byte gUnknown_203CC0C +_081C6D8C: + movs r0, #0 +_081C6D8E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081C6D48 + + thumb_func_start sub_081C6D94 +sub_081C6D94: @ 0x081C6D94 + push {lr} + bl sub_081C702C + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C6D94 + + thumb_func_start sub_081C6DA0 +sub_081C6DA0: @ 0x081C6DA0 + push {lr} + ldr r0, _081C6DB0 + ldr r0, [r0] + ldr r0, [r0] + bl _call_via_r0 + thumb_func_end sub_081C6DA0 + + thumb_func_start sub_081C6DAC +sub_081C6DAC: @ 0x081C6DAC + pop {r1} + bx r1 + .align 2, 0 +_081C6DB0: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6DAC + + thumb_func_start sub_081C6DB4 +sub_081C6DB4: @ 0x081C6DB4 + push {lr} + bl sub_080005BC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6DB4 + + thumb_func_start sub_081C6DC0 +sub_081C6DC0: @ 0x081C6DC0 + push {lr} + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6DC0 + + thumb_func_start sub_081C6DCC +sub_081C6DCC: @ 0x081C6DCC + push {lr} + ldr r0, _081C6DD8 + bl sub_080006F0 + pop {r0} + bx r0 + .align 2, 0 +_081C6DD8: .4byte sub_081C6BD8 + thumb_func_end sub_081C6DCC + + thumb_func_start sub_081C6DDC +sub_081C6DDC: @ 0x081C6DDC + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + bl sub_08000BC8 + ldr r1, _081C6DF8 + ldr r1, [r1] + lsls r4, r4, #2 + adds r1, #0x10 + adds r1, r1, r4 + str r0, [r1] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C6DF8: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6DDC + + thumb_func_start sub_081C6DFC +sub_081C6DFC: @ 0x081C6DFC + ldr r1, _081C6E0C + ldr r1, [r1] + lsls r0, r0, #2 + adds r1, #0x10 + adds r1, r1, r0 + ldr r0, [r1] + bx lr + .align 2, 0 +_081C6E0C: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6DFC + + thumb_func_start sub_081C6E10 +sub_081C6E10: @ 0x081C6E10 + push {r4, r5, lr} + ldr r5, _081C6E38 + ldr r1, [r5] + lsls r4, r0, #2 + adds r1, #0x10 + adds r1, r1, r4 + ldr r0, [r1] + cmp r0, #0 + beq _081C6E30 + bl sub_08000BF0 + ldr r0, [r5] + adds r0, #0x10 + adds r0, r0, r4 + movs r1, #0 + str r1, [r0] +_081C6E30: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C6E38: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E10 + + thumb_func_start sub_081C6E3C +sub_081C6E3C: @ 0x081C6E3C + ldr r0, _081C6E44 + ldr r0, [r0] + ldrh r0, [r0, #8] + bx lr + .align 2, 0 +_081C6E44: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E3C + + thumb_func_start sub_081C6E48 +sub_081C6E48: @ 0x081C6E48 + ldr r1, _081C6E50 + ldr r1, [r1] + strh r0, [r1, #8] + bx lr + .align 2, 0 +_081C6E50: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E48 + + thumb_func_start sub_081C6E54 +sub_081C6E54: @ 0x081C6E54 + push {lr} + adds r1, r0, #0 + cmp r1, #4 + bls _081C6E5E + movs r1, #0 +_081C6E5E: + ldr r0, _081C6E68 + ldr r0, [r0] + strh r1, [r0, #0xa] + pop {r0} + bx r0 + .align 2, 0 +_081C6E68: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E54 + + thumb_func_start sub_081C6E6C +sub_081C6E6C: @ 0x081C6E6C + ldr r0, _081C6E74 + ldr r0, [r0] + ldrh r0, [r0, #0xa] + bx lr + .align 2, 0 +_081C6E74: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E6C + + thumb_func_start sub_081C6E78 +sub_081C6E78: @ 0x081C6E78 + ldr r0, _081C6E80 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 +_081C6E80: .4byte gUnknown_203CC0C + thumb_func_end sub_081C6E78 + + thumb_func_start sub_081C6E84 +sub_081C6E84: @ 0x081C6E84 + push {r4, lr} + ldr r1, _081C6EAC + movs r0, #0 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C6EB4 + bl sub_0800668C + bl sub_08008424 + ldr r0, _081C6EB0 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #0xc] + movs r0, #1 + b _081C6EB6 + .align 2, 0 +_081C6EAC: .4byte 0x0000082C +_081C6EB0: .4byte sub_081C6F24 +_081C6EB4: + movs r0, #0 +_081C6EB6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C6E84 + + thumb_func_start sub_081C6EBC +sub_081C6EBC: @ 0x081C6EBC + push {lr} + movs r0, #0 + bl sub_081C6DFC + ldr r0, [r0, #0xc] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C6EBC + + thumb_func_start sub_081C6ED0 +sub_081C6ED0: @ 0x081C6ED0 + push {lr} + sub sp, #4 + movs r0, #0x6f + bl sub_080A306C + bl sub_081CA288 + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6ED0 + + thumb_func_start sub_081C6EF8 +sub_081C6EF8: @ 0x081C6EF8 + push {lr} + ldr r0, _081C6F0C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C6F10 + movs r0, #1 + b _081C6F1E + .align 2, 0 +_081C6F0C: .4byte gUnknown_2037C74 +_081C6F10: + bl sub_081C9180 + bl sub_081C7454 + bl sub_080034D4 + movs r0, #0 +_081C6F1E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C6EF8 + + thumb_func_start sub_081C6F24 +sub_081C6F24: @ 0x081C6F24 + push {r4, lr} + sub sp, #4 + cmp r0, #1 + beq _081C6F70 + cmp r0, #1 + bgt _081C6F36 + cmp r0, #0 + beq _081C6F40 + b _081C6FEA +_081C6F36: + cmp r0, #2 + beq _081C6FBC + cmp r0, #3 + beq _081C6FCE + b _081C6FEA +_081C6F40: + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + bl sub_080034D4 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081C6F6C + movs r0, #0 + movs r2, #1 + bl sub_08001800 + bl sub_08199A30 + bl sub_081996B8 + movs r0, #1 + b _081C6FEC + .align 2, 0 +_081C6F6C: .4byte gUnknown_85F13C8 +_081C6F70: + movs r0, #0 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r1, _081C6FB0 + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r4, #0x2c + movs r0, #0 + adds r1, r4, #0 + bl sub_0800212C + ldr r1, _081C6FB4 + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r0, _081C6FB8 + movs r1, #0 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #0 + bl sub_08002248 + movs r0, #0 + b _081C6FEC + .align 2, 0 +_081C6FB0: .4byte gUnknown_85EFA00 +_081C6FB4: .4byte gUnknown_85EFC2C +_081C6FB8: .4byte gUnknown_85EF9E0 +_081C6FBC: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C6FD8 + bl sub_081C7334 + movs r0, #0 + b _081C6FEC +_081C6FCE: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C6FDC +_081C6FD8: + movs r0, #2 + b _081C6FEC +_081C6FDC: + bl sub_081C73E8 + bl sub_081C74E8 + movs r0, #0 + bl sub_08001B48 +_081C6FEA: + movs r0, #4 +_081C6FEC: + add sp, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C6F24 + + thumb_func_start sub_081C6FF4 +sub_081C6FF4: @ 0x081C6FF4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + bl sub_081C6DFC + str r4, [r0] + str r5, [r0, #4] + movs r1, #0 + str r1, [r0, #8] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C6FF4 + + thumb_func_start sub_081C7010 +sub_081C7010: @ 0x081C7010 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + movs r1, #0 + str r1, [r0, #8] + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C7010 + + thumb_func_start sub_081C702C +sub_081C702C: @ 0x081C702C + push {lr} + movs r0, #0 + bl sub_081C6DFC + ldr r0, [r0, #4] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081C702C + + thumb_func_start sub_081C703C +sub_081C703C: @ 0x081C703C + bx r1 + .align 2, 0 + thumb_func_end sub_081C703C + + thumb_func_start sub_081C7040 +sub_081C7040: @ 0x081C7040 + push {r4, lr} + movs r0, #0 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C705C + movs r1, #4 + bl sub_081C6838 + str r0, [r4, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C705C: .4byte sub_081C7094 + thumb_func_end sub_081C7040 + + thumb_func_start sub_081C7060 +sub_081C7060: @ 0x081C7060 + push {r4, lr} + movs r0, #0 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C707C + movs r1, #4 + bl sub_081C6838 + str r0, [r4, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C707C: .4byte sub_081C70DC + thumb_func_end sub_081C7060 + + thumb_func_start sub_081C7080 +sub_081C7080: @ 0x081C7080 + push {lr} + movs r0, #0 + bl sub_081C6DFC + ldr r0, [r0, #0xc] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C7080 + + thumb_func_start sub_081C7094 +sub_081C7094: @ 0x081C7094 + push {lr} + cmp r0, #1 + beq _081C70AA + cmp r0, #1 + bgt _081C70A4 + cmp r0, #0 + beq _081C70AA + b _081C70D4 +_081C70A4: + cmp r0, #2 + beq _081C70AE + b _081C70D4 +_081C70AA: + movs r0, #0 + b _081C70D6 +_081C70AE: + movs r1, #0xc0 + lsls r1, r1, #1 + movs r0, #0 + movs r2, #1 + bl sub_08001E94 + ldr r1, _081C70C4 + cmp r0, r1 + bhi _081C70C8 + movs r0, #2 + b _081C70D6 + .align 2, 0 +_081C70C4: .4byte 0x00001FFF +_081C70C8: + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + movs r2, #0 + bl sub_08001E94 +_081C70D4: + movs r0, #4 +_081C70D6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C7094 + + thumb_func_start sub_081C70DC +sub_081C70DC: @ 0x081C70DC + push {lr} + movs r1, #0xc0 + lsls r1, r1, #1 + movs r0, #0 + movs r2, #2 + bl sub_08001E94 + cmp r0, #0 + ble _081C70F2 + movs r0, #2 + b _081C70FE +_081C70F2: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #4 +_081C70FE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C70DC + + thumb_func_start sub_081C7104 +sub_081C7104: @ 0x081C7104 + push {lr} + lsls r1, r1, #1 + ldr r3, _081C7118 + adds r1, r1, r3 + lsls r2, r2, #0xa + lsrs r2, r2, #0xb + bl CpuSet + pop {r0} + bx r0 + .align 2, 0 +_081C7118: .4byte gUnknown_20373B4 + thumb_func_end sub_081C7104 + + thumb_func_start sub_081C711C +sub_081C711C: @ 0x081C711C + push {r4, lr} + adds r4, r0, #0 + b _081C7134 +_081C7122: + lsls r0, r1, #4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r0, r2 + ldr r0, [r4] + movs r2, #0x20 + bl sub_081C7104 + adds r4, #8 +_081C7134: + ldr r0, [r4] + cmp r0, #0 + beq _081C7148 + ldrh r0, [r4, #4] + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0xff + bne _081C7122 +_081C7148: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C711C + + thumb_func_start sub_081C7150 +sub_081C7150: @ 0x081C7150 + push {lr} + sub sp, #4 + adds r3, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov r0, sp + strh r1, [r0] + lsls r3, r3, #5 + ldr r0, _081C7174 + adds r3, r3, r0 + ldr r2, _081C7178 + mov r0, sp + adds r1, r3, #0 + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081C7174: .4byte gUnknown_20379B4 +_081C7178: .4byte 0x01000010 + thumb_func_end sub_081C7150 + + thumb_func_start sub_081C717C +sub_081C717C: @ 0x081C717C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r0, [sp] + str r1, [sp, #4] + mov sl, r2 + str r3, [sp, #8] + ldr r0, [sp, #0x2c] + cmp r0, #0 + bne _081C71A4 + ldr r2, _081C71A0 + mov r1, sl + ands r2, r1 + ldr r0, [sp] + b _081C71B4 + .align 2, 0 +_081C71A0: .4byte 0x001FFFFF +_081C71A4: + ldr r2, [sp, #0x2c] + ldr r0, [sp, #8] + cmp r2, r0 + blt _081C71C0 + ldr r2, _081C71BC + mov r1, sl + ands r2, r1 + ldr r0, [sp, #4] +_081C71B4: + ldr r1, [sp, #0x30] + bl CpuSet + b _081C726E + .align 2, 0 +_081C71BC: .4byte 0x001FFFFF +_081C71C0: + movs r2, #1 + rsbs r2, r2, #0 + add sl, r2 + b _081C7266 +_081C71C8: + ldr r1, [sp] + ldrh r0, [r1] + movs r2, #0x1f + mov sb, r2 + mov r1, sb + ands r1, r0 + mov sb, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x15 + movs r1, #0x1f + ands r1, r2 + mov r8, r1 + lsrs r7, r0, #0x1a + movs r2, #0x1f + ands r7, r2 + ldr r0, [sp, #4] + ldrh r4, [r0] + movs r0, #0x1f + ands r0, r4 + mov r1, sb + subs r0, r0, r1 + lsls r0, r0, #8 + ldr r1, [sp, #8] + bl __divsi3 + ldr r2, [sp, #0x2c] + adds r6, r0, #0 + muls r6, r2, r6 + asrs r6, r6, #8 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x15 + movs r1, #0x1f + ands r0, r1 + mov r2, r8 + subs r0, r0, r2 + lsls r0, r0, #8 + ldr r1, [sp, #8] + bl __divsi3 + ldr r1, [sp, #0x2c] + adds r5, r0, #0 + muls r5, r1, r5 + asrs r5, r5, #8 + lsrs r4, r4, #0x1a + movs r2, #0x1f + ands r4, r2 + subs r4, r4, r7 + lsls r4, r4, #8 + adds r0, r4, #0 + ldr r1, [sp, #8] + bl __divsi3 + ldr r1, [sp, #0x2c] + muls r0, r1, r0 + asrs r0, r0, #8 + add r6, sb + movs r2, #0x1f + ands r6, r2 + add r5, r8 + ands r5, r2 + adds r0, r7, r0 + ands r0, r2 + lsls r0, r0, #0xa + lsls r5, r5, #5 + orrs r0, r5 + orrs r0, r6 + ldr r1, [sp, #0x30] + strh r0, [r1] + ldr r2, [sp] + adds r2, #2 + str r2, [sp] + ldr r0, [sp, #4] + adds r0, #2 + str r0, [sp, #4] + adds r1, #2 + str r1, [sp, #0x30] + movs r1, #1 + rsbs r1, r1, #0 + add sl, r1 +_081C7266: + movs r0, #1 + rsbs r0, r0, #0 + cmp sl, r0 + bne _081C71C8 +_081C726E: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C717C + + thumb_func_start sub_081C7280 +sub_081C7280: @ 0x081C7280 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + cmp r4, #1 + beq _081C72B0 + cmp r4, #1 + bgt _081C729A + cmp r4, #0 + beq _081C72A4 + b _081C72EC +_081C729A: + cmp r4, #2 + beq _081C72C4 + cmp r4, #3 + beq _081C72D8 + b _081C72EC +_081C72A4: + ldr r0, [r0, #0x14] + movs r1, #2 + rsbs r1, r1, #0 + str r4, [sp] + movs r2, #0 + b _081C72D0 +_081C72B0: + ldr r0, [r0, #0x14] + movs r1, #2 + rsbs r1, r1, #0 + movs r2, #0 + str r2, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + b _081C72EC +_081C72C4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #2 + rsbs r1, r1, #0 + movs r2, #0 + str r2, [sp] +_081C72D0: + movs r3, #0x10 + bl sub_080A139C + b _081C72EC +_081C72D8: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #2 + rsbs r1, r1, #0 + movs r2, #0 + str r2, [sp] + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C +_081C72EC: + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C7280 + + thumb_func_start sub_081C72F4 +sub_081C72F4: @ 0x081C72F4 + ldr r0, _081C72FC + ldrb r0, [r0, #7] + lsrs r0, r0, #7 + bx lr + .align 2, 0 +_081C72FC: .4byte gUnknown_2037C74 + thumb_func_end sub_081C72F4 + + thumb_func_start sub_081C7300 +sub_081C7300: @ 0x081C7300 + push {lr} + ldr r0, _081C7310 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + pop {r0} + bx r0 + .align 2, 0 +_081C7310: .4byte 0xFFFEFFFE + thumb_func_end sub_081C7300 + + thumb_func_start sub_081C7314 +sub_081C7314: @ 0x081C7314 + push {r4, r5, lr} + adds r5, r0, #0 + cmp r1, #0 + ble _081C732C + adds r4, r1, #0 +_081C731E: + adds r0, r5, #0 + adds r5, #4 + bl sub_080018C8 + subs r4, #1 + cmp r4, #0 + bne _081C731E +_081C732C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7314 + + thumb_func_start sub_081C7334 +sub_081C7334: @ 0x081C7334 + push {r4, lr} + movs r0, #0 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C7360 + bl sub_08003090 + movs r0, #0 + str r0, [r4, #0x10] + bl sub_081C73B8 + ldrb r0, [r4, #0x10] + bl sub_0800365C + ldrb r0, [r4, #0x10] + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C7360: .4byte gUnknown_85F13CC + thumb_func_end sub_081C7334 + + thumb_func_start sub_081C7364 +sub_081C7364: @ 0x081C7364 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, [r5, #0x10] + bl sub_081C73B8 + ldrb r0, [r5, #0x10] + ldr r1, _081C73A0 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r1, _081C73A4 + lsls r4, r4, #2 + adds r4, r4, r1 + ldr r1, [r4] + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C73A0: .4byte gUnknown_85F140C +_081C73A4: .4byte gUnknown_85F13DC + thumb_func_end sub_081C7364 + + thumb_func_start sub_081C73A8 +sub_081C73A8: @ 0x081C73A8 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C73A8 + + thumb_func_start sub_081C73B8 +sub_081C73B8: @ 0x081C73B8 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0x44 + bl sub_08003B18 + movs r0, #0x80 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + adds r0, r4, #0 + movs r1, #0x55 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C73B8 + + thumb_func_start sub_081C73E8 +sub_081C73E8: @ 0x081C73E8 + push {r4, r5, r6, lr} + movs r0, #0 + bl sub_081C6DFC + adds r6, r0, #0 + movs r5, #0 + ldr r4, _081C7444 +_081C73F6: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #0 + beq _081C73F6 + ldr r0, _081C7448 + bl sub_081C711C + movs r0, #0 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x80 + lsls r1, r1, #9 + lsls r1, r0 + movs r0, #2 + rsbs r0, r0, #0 + bics r0, r1 + str r0, [r6, #0x14] + ldr r0, _081C744C + movs r1, #0xdc + movs r2, #0xc + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081C7450 + adds r1, r1, r0 + str r1, [r6, #0x18] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C7444: .4byte gUnknown_85F1410 +_081C7448: .4byte gUnknown_85F1418 +_081C744C: .4byte gUnknown_85F14C8 +_081C7450: .4byte gUnknown_20205AC + thumb_func_end sub_081C73E8 + + thumb_func_start sub_081C7454 +sub_081C7454: @ 0x081C7454 + push {lr} + movs r0, #0 + bl sub_081C6DFC + ldr r0, [r0, #0x18] + bl sub_08006E00 + movs r0, #0 + bl sub_08008280 + movs r0, #0 + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7454 + + thumb_func_start sub_081C7474 +sub_081C7474: @ 0x081C7474 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_08001FD0 + lsrs r0, r0, #8 + rsbs r0, r0, #0 + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7474 + + thumb_func_start sub_081C748C +sub_081C748C: @ 0x081C748C + push {lr} + movs r0, #0 + bl sub_081C6DFC + ldr r0, [r0, #0x18] + ldr r1, _081C74A0 + str r1, [r0, #0x1c] + pop {r1} + bx r1 + .align 2, 0 +_081C74A0: .4byte sub_08007140 + thumb_func_end sub_081C748C + + thumb_func_start sub_081C74A4 +sub_081C74A4: @ 0x081C74A4 + push {r4, lr} + movs r0, #0 + bl sub_081C6DFC + ldr r2, [r0, #0x18] + movs r4, #0 + movs r1, #0xdc + strh r1, [r2, #0x20] + ldr r2, [r0, #0x18] + movs r1, #0xc + strh r1, [r2, #0x22] + ldr r2, [r0, #0x18] + ldr r1, _081C74E4 + str r1, [r2, #0x1c] + adds r2, #0x3e + ldrb r3, [r2] + movs r1, #5 + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r2] + ldr r3, [r0, #0x18] + ldrb r2, [r3, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3, #5] + ldr r0, [r0, #0x18] + adds r0, #0x43 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C74E4: .4byte sub_081C7474 + thumb_func_end sub_081C74A4 + + thumb_func_start sub_081C74E8 +sub_081C74E8: @ 0x081C74E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #0 + bl sub_081C6DFC + adds r6, r0, #0 + ldr r0, _081C75A4 + bl sub_08034388 + movs r0, #1 + bl sub_080084EC + movs r0, #2 + bl sub_080084EC + movs r5, #0 + ldr r0, _081C75A8 + mov r8, r0 + movs r7, #4 +_081C7510: + ldr r0, _081C75AC + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + lsls r4, r5, #2 + adds r2, r6, #0 + adds r2, #0x1c + adds r2, r2, r4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + str r0, [r2] + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + ldr r1, [r2] + lsls r0, r5, #6 + strh r0, [r1, #0x24] + ldr r0, _081C75B0 + movs r1, #0 + movs r2, #0 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r2, r6, #0 + adds r2, #0x24 + adds r2, r2, r4 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + str r0, [r2] + adds r0, #0x3e + ldrb r1, [r0] + orrs r1, r7 + strb r1, [r0] + ldr r1, [r2] + lsls r0, r5, #5 + strh r0, [r1, #0x24] + ldr r1, [r2] + movs r0, #0x12 + strh r0, [r1, #0x26] + ldr r3, [r2] + ldrh r2, [r3, #4] + lsls r1, r2, #0x16 + lsrs r1, r1, #0x16 + lsls r0, r5, #3 + adds r0, #0x40 + adds r1, r1, r0 + ldr r4, _081C75B4 + adds r0, r4, #0 + ands r1, r0 + ldr r4, _081C75B8 + adds r0, r4, #0 + ands r2, r0 + orrs r2, r1 + strh r2, [r3, #4] + adds r5, #1 + cmp r5, #1 + ble _081C7510 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C75A4: .4byte gUnknown_85F1428 +_081C75A8: .4byte gUnknown_20205AC +_081C75AC: .4byte gUnknown_85F14F0 +_081C75B0: .4byte gUnknown_85F1508 +_081C75B4: .4byte 0x000003FF +_081C75B8: .4byte 0xFFFFFC00 + thumb_func_end sub_081C74E8 + + thumb_func_start sub_081C75BC +sub_081C75BC: @ 0x081C75BC + push {lr} + cmp r0, #5 + bhi _081C75C8 + bl sub_081C7618 + b _081C75CE +_081C75C8: + subs r0, #6 + bl sub_081C76CC +_081C75CE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C75BC + + thumb_func_start sub_081C75D4 +sub_081C75D4: @ 0x081C75D4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #4 + bne _081C75F0 + movs r0, #2 + bl sub_08008338 + ldr r3, [r5, #0x20] + adds r0, #0x20 + b _081C75FA +_081C75F0: + movs r0, #2 + bl sub_08008338 + ldr r3, [r5, #0x20] + adds r0, #0x40 +_081C75FA: + ldr r2, _081C7610 + adds r1, r2, #0 + ands r0, r1 + ldrh r2, [r3, #4] + ldr r1, _081C7614 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C7610: .4byte 0x000003FF +_081C7614: .4byte 0xFFFFFC00 + thumb_func_end sub_081C75D4 + + thumb_func_start sub_081C7618 +sub_081C7618: @ 0x081C7618 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + cmp r6, #5 + bhi _081C76A8 + movs r0, #0 + bl sub_081C6DFC + mov sb, r0 + ldr r0, _081C76B4 + lsls r6, r6, #3 + adds r6, r6, r0 + ldrh r4, [r6, #6] + ldr r0, [r6] + mov r8, r0 + bl sub_080347CC + adds r5, r0, #0 + lsls r4, r4, #5 + ldr r0, _081C76B8 + adds r4, r4, r0 + movs r0, #1 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r1, r1, r2 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r4, _081C76BC + mov r0, r8 + adds r1, r4, #0 + bl LZ77UnCompWram + movs r0, #2 + bl sub_08008338 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xb + ldr r0, _081C76C0 + adds r1, r1, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + adds r2, r5, #0 + movs r3, #1 + bl sub_08000EF8 + movs r0, #2 + bl sub_08008338 + mov r1, sb + ldr r3, [r1, #0x20] + ldrh r1, [r6, #4] + adds r0, r0, r1 + ldr r2, _081C76C4 + adds r1, r2, #0 + ands r0, r1 + ldrh r2, [r3, #4] + ldr r1, _081C76C8 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #4] +_081C76A8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C76B4: .4byte gUnknown_85F1430 +_081C76B8: .4byte gUnknown_85F021C +_081C76BC: .4byte gUnknown_201C000 +_081C76C0: .4byte 0x06010000 +_081C76C4: .4byte 0x000003FF +_081C76C8: .4byte 0xFFFFFC00 + thumb_func_end sub_081C7618 + + thumb_func_start sub_081C76CC +sub_081C76CC: @ 0x081C76CC + push {r4, r5, r6, lr} + cmp r0, #6 + bhi _081C7732 + ldr r2, _081C7738 + lsls r1, r0, #3 + adds r0, r2, #4 + adds r0, r1, r0 + ldr r4, [r0] + adds r1, r1, r2 + ldr r6, [r1] + adds r0, r6, #0 + bl sub_080347CC + adds r5, r0, #0 + lsls r4, r4, #5 + ldr r0, _081C773C + adds r4, r4, r0 + movs r0, #2 + bl sub_0800851C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #4 + movs r0, #0x80 + lsls r0, r0, #0x11 + adds r1, r1, r0 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r4, _081C7740 + adds r0, r6, #0 + adds r1, r4, #0 + bl LZ77UnCompWram + movs r0, #2 + bl sub_08008338 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0xb + ldr r0, _081C7744 + adds r1, r1, r0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + adds r0, r4, #0 + adds r2, r5, #0 + movs r3, #1 + bl sub_08000EF8 +_081C7732: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C7738: .4byte gUnknown_85F1460 +_081C773C: .4byte gUnknown_85F021C +_081C7740: .4byte gUnknown_201D000 +_081C7744: .4byte 0x06010800 + thumb_func_end sub_081C76CC + + thumb_func_start sub_081C7748 +sub_081C7748: @ 0x081C7748 + push {lr} + adds r3, r0, #0 + movs r0, #0x10 + cmp r1, #0 + bne _081C7754 + movs r0, #0x30 +_081C7754: + cmp r3, #5 + bhi _081C7760 + adds r1, r2, #0 + bl sub_081C77E4 + b _081C7766 +_081C7760: + adds r1, r2, #0 + bl sub_081C7830 +_081C7766: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7748 + + thumb_func_start sub_081C776C +sub_081C776C: @ 0x081C776C + push {lr} + cmp r0, #5 + bhi _081C777A + adds r0, r1, #0 + bl sub_081C787C + b _081C7780 +_081C777A: + adds r0, r1, #0 + bl sub_081C78B8 +_081C7780: + pop {r0} + bx r0 + thumb_func_end sub_081C776C + + thumb_func_start sub_081C7784 +sub_081C7784: @ 0x081C7784 + push {r4, lr} + movs r0, #0 + bl sub_081C6DFC + movs r4, #4 + adds r2, r0, #0 + adds r2, #0x1c + movs r3, #1 +_081C7794: + ldr r1, [r2] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + ldr r1, [r2, #8] + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r4 + strb r0, [r1] + adds r2, #4 + subs r3, #1 + cmp r3, #0 + bge _081C7794 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7784 + + thumb_func_start sub_081C77B8 +sub_081C77B8: @ 0x081C77B8 + push {lr} + movs r0, #0 + bl sub_081C6DFC + adds r1, r0, #0 + ldr r0, [r1, #0x1c] + ldr r2, [r0, #0x1c] + ldr r0, _081C77D8 + cmp r2, r0 + bne _081C77DC + ldr r0, [r1, #0x24] + ldr r0, [r0, #0x1c] + cmp r0, r2 + bne _081C77DC + movs r0, #0 + b _081C77DE + .align 2, 0 +_081C77D8: .4byte sub_08007140 +_081C77DC: + movs r0, #1 +_081C77DE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C77B8 + + thumb_func_start sub_081C77E4 +sub_081C77E4: @ 0x081C77E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r4, r1, #0 + movs r0, #0 + bl sub_081C6DFC + cmp r4, #0 + bne _081C7800 + movs r7, #0x60 + rsbs r7, r7, #0 + movs r6, #0x20 + b _081C7806 +_081C7800: + movs r7, #0x80 + lsls r7, r7, #1 + movs r6, #0xa0 +_081C7806: + adds r4, r0, #0 + adds r4, #0x1c + movs r5, #1 +_081C780C: + ldr r0, [r4] + mov r1, r8 + strh r1, [r0, #0x22] + ldm r4!, {r0} + adds r1, r7, #0 + adds r2, r6, #0 + movs r3, #0xc + bl sub_081C78F4 + subs r5, #1 + cmp r5, #0 + bge _081C780C + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C77E4 + + thumb_func_start sub_081C7830 +sub_081C7830: @ 0x081C7830 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r4, r1, #0 + movs r0, #0 + bl sub_081C6DFC + cmp r4, #0 + bne _081C784C + movs r7, #0x60 + rsbs r7, r7, #0 + movs r6, #0x10 + b _081C7852 +_081C784C: + movs r7, #0x80 + lsls r7, r7, #1 + movs r6, #0xc0 +_081C7852: + adds r4, r0, #0 + adds r4, #0x24 + movs r5, #1 +_081C7858: + ldr r0, [r4] + mov r1, r8 + strh r1, [r0, #0x22] + ldm r4!, {r0} + adds r1, r7, #0 + adds r2, r6, #0 + movs r3, #0xc + bl sub_081C78F4 + subs r5, #1 + cmp r5, #0 + bge _081C7858 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7830 + + thumb_func_start sub_081C787C +sub_081C787C: @ 0x081C787C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + cmp r4, #0 + bne _081C7892 + movs r6, #0x20 + movs r5, #0x60 + rsbs r5, r5, #0 + b _081C7898 +_081C7892: + movs r6, #0xc0 + movs r5, #0x80 + lsls r5, r5, #1 +_081C7898: + adds r7, r0, #0 + adds r7, #0x1c + movs r4, #1 +_081C789E: + ldm r7!, {r0} + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0xc + bl sub_081C78F4 + subs r4, #1 + cmp r4, #0 + bge _081C789E + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C787C + + thumb_func_start sub_081C78B8 +sub_081C78B8: @ 0x081C78B8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_081C6DFC + cmp r4, #0 + bne _081C78CE + movs r6, #0x10 + movs r5, #0x60 + rsbs r5, r5, #0 + b _081C78D4 +_081C78CE: + movs r6, #0xc0 + movs r5, #0x80 + lsls r5, r5, #1 +_081C78D4: + adds r7, r0, #0 + adds r7, #0x24 + movs r4, #1 +_081C78DA: + ldm r7!, {r0} + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0xc + bl sub_081C78F4 + subs r4, #1 + cmp r4, #0 + bge _081C78DA + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C78B8 + + thumb_func_start sub_081C78F4 +sub_081C78F4: @ 0x081C78F4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + strh r0, [r4, #0x20] + lsls r1, r0, #4 + strh r1, [r4, #0x2e] + subs r0, r6, r0 + lsls r0, r0, #4 + adds r1, r5, #0 + bl __divsi3 + strh r0, [r4, #0x30] + strh r5, [r4, #0x32] + strh r6, [r4, #0x3c] + ldr r0, _081C7920 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C7920: .4byte sub_081C7924 + thumb_func_end sub_081C78F4 + + thumb_func_start sub_081C7924 +sub_081C7924: @ 0x081C7924 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x32] + movs r3, #0x32 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _081C796C + subs r0, r1, #1 + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + adds r0, #0x10 + lsls r0, r0, #0x10 + movs r1, #0x88 + lsls r1, r1, #0x11 + cmp r0, r1 + bls _081C795E + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _081C7974 +_081C795E: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _081C7974 +_081C796C: + ldrh r0, [r2, #0x3c] + strh r0, [r2, #0x20] + ldr r0, _081C7978 + str r0, [r2, #0x1c] +_081C7974: + pop {r0} + bx r0 + .align 2, 0 +_081C7978: .4byte sub_08007140 + thumb_func_end sub_081C7924 + + thumb_func_start sub_081C797C +sub_081C797C: @ 0x081C797C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + ldr r1, _081C79B8 + movs r0, #0x11 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C79C4 + ldr r1, _081C79BC + adds r0, r4, r1 + adds r1, r5, #0 + bl sub_081C8914 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + adds r3, r7, #0 + bl sub_081C8960 + cmp r0, #0 + beq _081C79C4 + ldr r0, _081C79C0 + movs r1, #6 + bl sub_081C6838 + movs r0, #1 + b _081C79C6 + .align 2, 0 +_081C79B8: .4byte 0x000008A4 +_081C79BC: .4byte 0x00000888 +_081C79C0: .4byte sub_081C79FC +_081C79C4: + movs r0, #0 +_081C79C6: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081C797C + + thumb_func_start sub_081C79CC +sub_081C79CC: @ 0x081C79CC + push {lr} + ldr r0, _081C79D8 + bl sub_081C68E4 + pop {r1} + bx r1 + .align 2, 0 +_081C79D8: .4byte sub_081C79FC + thumb_func_end sub_081C79CC + + thumb_func_start sub_081C79DC +sub_081C79DC: @ 0x081C79DC + push {r4, lr} + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C8794 + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0x11 + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C79DC + + thumb_func_start sub_081C79FC +sub_081C79FC: @ 0x081C79FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C7A68 + movs r0, #0x11 + bl sub_081C6DFC + adds r2, r0, #0 + cmp r4, #4 + bhi _081C7A7E + lsls r0, r4, #2 + ldr r1, _081C7A20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C7A20: .4byte _081C7A24 +_081C7A24: @ jump table + .4byte _081C7A38 @ case 0 + .4byte _081C7A42 @ case 1 + .4byte _081C7A4C @ case 2 + .4byte _081C7A60 @ case 3 + .4byte _081C7A74 @ case 4 +_081C7A38: + adds r0, r2, #0 + bl sub_081C7A8C + movs r0, #0 + b _081C7A80 +_081C7A42: + adds r0, r2, #0 + bl sub_081C7B04 + movs r0, #0 + b _081C7A80 +_081C7A4C: + ldr r1, _081C7A5C + adds r0, r2, r1 + adds r1, r2, #0 + bl sub_081C7B24 + movs r0, #0 + b _081C7A80 + .align 2, 0 +_081C7A5C: .4byte 0x00000888 +_081C7A60: + bl sub_081C7B88 + cmp r0, #0 + beq _081C7A6C +_081C7A68: + movs r0, #2 + b _081C7A80 +_081C7A6C: + bl sub_081C867C + movs r0, #1 + b _081C7A80 +_081C7A74: + ldr r1, _081C7A88 + adds r0, r2, r1 + adds r1, r2, #0 + bl sub_081C86A4 +_081C7A7E: + movs r0, #4 +_081C7A80: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C7A88: .4byte 0x00000888 + thumb_func_end sub_081C79FC + + thumb_func_start sub_081C7A8C +sub_081C7A8C: @ 0x081C7A8C + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + ldrb r4, [r5, #1] + lsls r4, r4, #0xc + ldrh r0, [r5, #6] + orrs r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrb r0, [r5] + ldrh r2, [r5, #6] + movs r1, #0x11 + movs r3, #1 + bl sub_08199A88 + ldrb r0, [r5] + ldrh r2, [r5, #6] + adds r2, #1 + movs r1, #0x44 + movs r3, #1 + bl sub_08199A88 + ldrb r0, [r5] + adds r1, r5, #0 + adds r1, #0x88 + bl sub_0800212C + ldrb r0, [r5] + movs r1, #0x20 + str r1, [sp] + str r1, [sp, #4] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + ldrb r0, [r5] + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldrb r0, [r5] + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + ldrb r0, [r5] + ldrb r1, [r5, #3] + lsls r1, r1, #0xb + movs r2, #2 + bl sub_08001E94 + ldrb r0, [r5] + bl sub_08002248 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7A8C + + thumb_func_start sub_081C7B04 +sub_081C7B04: @ 0x081C7B04 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #8] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #8] + bl sub_0800365C + ldrb r0, [r4, #8] + movs r1, #1 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C7B04 + + thumb_func_start sub_081C7B24 +sub_081C7B24: @ 0x081C7B24 + push {r4, r5, lr} + sub sp, #8 + adds r3, r0, #0 + adds r5, r1, #0 + ldrh r0, [r3, #2] + ldrh r4, [r3] + subs r2, r0, r4 + ldrh r0, [r3, #8] + cmp r2, r0 + ble _081C7B3A + adds r2, r0, #0 +_081C7B3A: + ldr r0, [r3, #0x10] + ldr r3, [r3, #0xc] + movs r1, #0 + str r1, [sp] + str r5, [sp, #4] + adds r1, r4, #0 + bl sub_081C7B54 + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C7B24 + + thumb_func_start sub_081C7B54 +sub_081C7B54: @ 0x081C7B54 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, [sp, #0x10] + cmp r2, #0 + beq _081C7B7E + adds r0, r5, #0 + muls r0, r3, r0 + adds r0, r4, r0 + str r0, [r1, #0x1c] + str r3, [r1, #0x18] + movs r0, #0 + strh r0, [r1, #0xc] + strh r2, [r1, #0xe] + str r5, [r1, #0x14] + ldr r0, [sp, #0xc] + str r0, [r1, #0x10] + ldr r0, _081C7B84 + movs r1, #5 + bl sub_081C6838 +_081C7B7E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C7B84: .4byte sub_081C7B98 + thumb_func_end sub_081C7B54 + + thumb_func_start sub_081C7B88 +sub_081C7B88: @ 0x081C7B88 + push {lr} + ldr r0, _081C7B94 + bl sub_081C68E4 + pop {r1} + bx r1 + .align 2, 0 +_081C7B94: .4byte sub_081C7B98 + thumb_func_end sub_081C7B88 + + thumb_func_start sub_081C7B98 +sub_081C7B98: @ 0x081C7B98 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r6, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r6, #0 + beq _081C7BB0 + cmp r6, #1 + beq _081C7C34 + b _081C7C42 +_081C7BB0: + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + ldr r1, [r4, #0x10] + adds r5, r0, r1 + movs r0, #0xf + ands r5, r0 + ldr r0, [r4, #0x1c] + adds r7, r4, #0 + adds r7, #0x48 + ldr r2, [r4, #0x34] + adds r1, r7, #0 + bl _call_via_r2 + ldr r3, [r4, #0x38] + cmp r3, #0 + beq _081C7BDC + ldrh r0, [r4, #8] + ldr r1, [r4, #0x14] + adds r2, r5, #0 + bl _call_via_r3 +_081C7BDC: + ldrb r0, [r4, #8] + lsls r1, r5, #4 + movs r2, #2 + orrs r1, r2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + adds r2, r7, #0 + movs r3, #0 + bl sub_0800449C + ldrh r0, [r4, #0xc] + adds r0, #1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrh r1, [r4, #0xe] + cmp r0, r1 + blo _081C7C22 + ldr r0, [r4, #0x38] + cmp r0, #0 + beq _081C7C16 + ldrb r0, [r4, #8] + movs r1, #3 + bl sub_08003528 + b _081C7C1E +_081C7C16: + ldrb r0, [r4, #8] + movs r1, #2 + bl sub_08003528 +_081C7C1E: + movs r0, #0 + b _081C7C44 +_081C7C22: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x18] + adds r0, r0, r1 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x14] + adds r0, #1 + str r0, [r4, #0x14] + movs r0, #3 + b _081C7C44 +_081C7C34: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C7C42 + movs r0, #2 + b _081C7C44 +_081C7C42: + movs r0, #4 +_081C7C44: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081C7B98 + + thumb_func_start sub_081C7C4C +sub_081C7C4C: @ 0x081C7C4C + push {lr} + movs r0, #0x11 + bl sub_081C6DFC + ldr r1, _081C7C64 + adds r0, r0, r1 + ldrh r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r1} + bx r1 + .align 2, 0 +_081C7C64: .4byte 0x00000888 + thumb_func_end sub_081C7C4C + + thumb_func_start sub_081C7C68 +sub_081C7C68: @ 0x081C7C68 + push {lr} + movs r0, #0x11 + bl sub_081C6DFC + ldr r1, _081C7C8C + adds r0, r0, r1 + movs r3, #0 + ldrh r1, [r0] + ldrh r2, [r0, #8] + adds r1, r1, r2 + ldrh r0, [r0, #2] + cmp r1, r0 + bge _081C7C84 + movs r3, #1 +_081C7C84: + adds r0, r3, #0 + pop {r1} + bx r1 + .align 2, 0 +_081C7C8C: .4byte 0x00000888 + thumb_func_end sub_081C7C68 + + thumb_func_start sub_081C7C90 +sub_081C7C90: @ 0x081C7C90 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r6, r0, #0 + adds r4, r1, #0 + movs r0, #0x11 + bl sub_081C6DFC + adds r7, r0, #0 + ldr r0, _081C7CC8 + adds r5, r7, r0 + cmp r6, #0 + bge _081C7CCC + ldrh r1, [r5] + adds r0, r1, r6 + cmp r0, #0 + bge _081C7CB2 + rsbs r6, r1, #0 +_081C7CB2: + cmp r4, #0 + beq _081C7CF6 + ldr r0, [r5, #0x10] + adds r1, r1, r6 + rsbs r2, r6, #0 + ldr r3, [r5, #0xc] + str r6, [sp] + str r7, [sp, #4] + bl sub_081C7B54 + b _081C7CF6 + .align 2, 0 +_081C7CC8: .4byte 0x00000888 +_081C7CCC: + cmp r4, #0 + beq _081C7CF6 + ldr r2, _081C7D0C + ldrh r1, [r5] + ldrh r0, [r5, #8] + adds r4, r1, r0 + str r4, [r2] + adds r0, r4, r6 + ldrh r1, [r5, #2] + cmp r0, r1 + blt _081C7CE4 + subs r6, r1, r4 +_081C7CE4: + ldr r0, [r5, #0x10] + ldr r3, [r5, #0xc] + ldrh r1, [r5, #8] + str r1, [sp] + str r7, [sp, #4] + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_081C7B54 +_081C7CF6: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_081C7D10 + ldrh r0, [r5] + adds r0, r0, r6 + strh r0, [r5] + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C7D0C: .4byte gUnknown_203CC10 + thumb_func_end sub_081C7C90 + + thumb_func_start sub_081C7D10 +sub_081C7D10: @ 0x081C7D10 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4] + bl sub_08001FD0 + str r0, [r4, #0x20] + lsls r1, r5, #0xc + adds r0, r0, r1 + str r0, [r4, #0x24] + cmp r5, #0 + ble _081C7D2C + movs r0, #1 + b _081C7D2E +_081C7D2C: + movs r0, #2 +_081C7D2E: + str r0, [r4, #0x30] + str r5, [r4, #0x2c] + ldr r0, _081C7D44 + movs r1, #6 + bl sub_081C6838 + str r0, [r4, #0x28] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C7D44: .4byte sub_081C7D48 + thumb_func_end sub_081C7D10 + + thumb_func_start sub_081C7D48 +sub_081C7D48: @ 0x081C7D48 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #0 + beq _081C7D60 + cmp r5, #1 + beq _081C7D6C + movs r0, #4 + b _081C7DD2 +_081C7D60: + bl sub_081C7B88 + cmp r0, #0 + bne _081C7DD0 + movs r0, #1 + b _081C7DD2 +_081C7D6C: + movs r6, #0 + ldrb r0, [r4] + bl sub_08001FD0 + adds r5, r0, #0 + ldrb r0, [r4] + movs r1, #0x80 + lsls r1, r1, #4 + ldr r2, [r4, #0x30] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + bl sub_08001E94 + adds r1, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #2 + bne _081C7DA0 + ldr r2, [r4, #0x24] + cmp r5, r2 + bgt _081C7D9A + ldr r0, [r4, #0x20] + cmp r5, r0 + bgt _081C7DB2 +_081C7D9A: + cmp r1, r2 + bgt _081C7DB2 + b _081C7DB6 +_081C7DA0: + ldr r2, [r4, #0x24] + cmp r5, r2 + blt _081C7DAC + ldr r0, [r4, #0x20] + cmp r5, r0 + blt _081C7DB2 +_081C7DAC: + cmp r1, r2 + blt _081C7DB2 + movs r6, #1 +_081C7DB2: + cmp r6, #0 + beq _081C7DD0 +_081C7DB6: + ldr r1, [r4, #0x2c] + ldrh r0, [r4, #0xa] + adds r0, r0, r1 + movs r1, #0xf + ands r0, r1 + strh r0, [r4, #0xa] + ldrb r0, [r4] + adds r1, r2, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #4 + b _081C7DD2 +_081C7DD0: + movs r0, #2 +_081C7DD2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081C7D48 + + thumb_func_start sub_081C7DD8 +sub_081C7DD8: @ 0x081C7DD8 + push {lr} + movs r0, #0x11 + bl sub_081C6DFC + ldr r0, [r0, #0x28] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C7DD8 + + thumb_func_start sub_081C7DEC +sub_081C7DEC: @ 0x081C7DEC + push {lr} + movs r0, #0x11 + bl sub_081C6DFC + ldr r1, _081C7DFC + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_081C7DFC: .4byte 0x00000888 + thumb_func_end sub_081C7DEC + + thumb_func_start sub_081C7E00 +sub_081C7E00: @ 0x081C7E00 + push {lr} + bl sub_081C7DEC + adds r1, r0, #0 + ldrh r0, [r1, #6] + cmp r0, #0 + beq _081C7E16 + subs r0, #1 + strh r0, [r1, #6] + movs r0, #1 + b _081C7E2E +_081C7E16: + bl sub_081C7C4C + cmp r0, #0 + bne _081C7E22 + movs r0, #0 + b _081C7E2E +_081C7E22: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #1 + bl sub_081C7C90 + movs r0, #2 +_081C7E2E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C7E00 + + thumb_func_start sub_081C7E34 +sub_081C7E34: @ 0x081C7E34 + push {lr} + bl sub_081C7DEC + adds r2, r0, #0 + ldrh r1, [r2] + ldrh r3, [r2, #6] + adds r1, r1, r3 + ldrh r0, [r2, #2] + subs r0, #1 + cmp r1, r0 + bge _081C7E62 + ldrh r0, [r2, #8] + subs r0, #1 + cmp r3, r0 + bge _081C7E5A + adds r0, r3, #1 + strh r0, [r2, #6] + movs r0, #1 + b _081C7E70 +_081C7E5A: + bl sub_081C7C68 + cmp r0, #0 + bne _081C7E66 +_081C7E62: + movs r0, #0 + b _081C7E70 +_081C7E66: + movs r0, #1 + movs r1, #1 + bl sub_081C7C90 + movs r0, #2 +_081C7E70: + pop {r1} + bx r1 + thumb_func_end sub_081C7E34 + + thumb_func_start sub_081C7E74 +sub_081C7E74: @ 0x081C7E74 + push {r4, lr} + bl sub_081C7DEC + adds r4, r0, #0 + bl sub_081C7C4C + adds r1, r0, #0 + cmp r1, #0 + beq _081C7EA0 + ldrh r0, [r4] + ldrh r1, [r4, #8] + cmp r0, r1 + blo _081C7E92 + ldrh r0, [r4, #8] + b _081C7E94 +_081C7E92: + ldrh r0, [r4] +_081C7E94: + rsbs r0, r0, #0 + movs r1, #1 + bl sub_081C7C90 + movs r0, #2 + b _081C7EAE +_081C7EA0: + ldrh r0, [r4, #6] + cmp r0, #0 + bne _081C7EAA + movs r0, #0 + b _081C7EAE +_081C7EAA: + strh r1, [r4, #6] + movs r0, #1 +_081C7EAE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C7E74 + + thumb_func_start sub_081C7EB4 +sub_081C7EB4: @ 0x081C7EB4 + push {r4, lr} + bl sub_081C7DEC + adds r4, r0, #0 + bl sub_081C7C68 + cmp r0, #0 + beq _081C7EDE + ldrh r0, [r4] + ldrh r3, [r4, #8] + adds r2, r0, r3 + ldrh r1, [r4, #4] + subs r0, r1, r0 + cmp r2, r1 + bgt _081C7ED4 + adds r0, r3, #0 +_081C7ED4: + movs r1, #1 + bl sub_081C7C90 + movs r0, #2 + b _081C7EFE +_081C7EDE: + ldrh r0, [r4, #2] + ldrh r1, [r4, #8] + cmp r0, r1 + blo _081C7EEC + ldrh r1, [r4, #6] + ldrh r0, [r4, #8] + b _081C7EF0 +_081C7EEC: + ldrh r1, [r4, #6] + ldrh r0, [r4, #2] +_081C7EF0: + subs r0, #1 + cmp r1, r0 + bge _081C7EFC + strh r0, [r4, #6] + movs r0, #1 + b _081C7EFE +_081C7EFC: + movs r0, #0 +_081C7EFE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C7EB4 + + thumb_func_start sub_081C7F04 +sub_081C7F04: @ 0x081C7F04 + push {lr} + bl sub_081C7DEC + adds r1, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #6] + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C7F04 + + thumb_func_start sub_081C7F18 +sub_081C7F18: @ 0x081C7F18 + push {lr} + bl sub_081C7DEC + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_081C7F18 + + thumb_func_start sub_081C7F24 +sub_081C7F24: @ 0x081C7F24 + push {r4, lr} + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C7F4C + adds r1, r4, r0 + movs r0, #0 + str r0, [r1] + ldr r0, _081C7F50 + movs r1, #6 + bl sub_081C6838 + movs r1, #0x8a + lsls r1, r1, #4 + adds r4, r4, r1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C7F4C: .4byte 0x0000089C +_081C7F50: .4byte sub_081C8018 + thumb_func_end sub_081C7F24 + + thumb_func_start sub_081C7F54 +sub_081C7F54: @ 0x081C7F54 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + movs r0, #0x11 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081C7F8C + adds r1, r5, r0 + ldrh r0, [r1] + adds r0, r0, r4 + movs r2, #0 + strh r0, [r1] + ldr r1, _081C7F90 + adds r0, r5, r1 + str r2, [r0] + ldr r0, _081C7F94 + movs r1, #6 + bl sub_081C6838 + movs r1, #0x8a + lsls r1, r1, #4 + adds r5, r5, r1 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C7F8C: .4byte 0x00000888 +_081C7F90: .4byte 0x0000089C +_081C7F94: .4byte sub_081C8100 + thumb_func_end sub_081C7F54 + + thumb_func_start sub_081C7F98 +sub_081C7F98: @ 0x081C7F98 + push {r4, lr} + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C7FC0 + adds r1, r4, r0 + movs r0, #0 + str r0, [r1] + ldr r0, _081C7FC4 + movs r1, #6 + bl sub_081C6838 + movs r1, #0x8a + lsls r1, r1, #4 + adds r4, r4, r1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C7FC0: .4byte 0x0000089C +_081C7FC4: .4byte sub_081C81D0 + thumb_func_end sub_081C7F98 + + thumb_func_start sub_081C7FC8 +sub_081C7FC8: @ 0x081C7FC8 + push {lr} + movs r0, #0x11 + bl sub_081C6DFC + movs r1, #0x8a + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_081C6898 + pop {r1} + bx r1 + thumb_func_end sub_081C7FC8 + + thumb_func_start sub_081C7FE0 +sub_081C7FE0: @ 0x081C7FE0 + push {r4, lr} + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C8014 + adds r2, r4, r0 + ldrh r0, [r4, #8] + ldrh r1, [r2] + ldrh r3, [r2, #6] + adds r1, r1, r3 + ldrh r2, [r4, #0xa] + adds r2, r2, r3 + movs r3, #0xf + ands r2, r3 + ldr r3, [r4, #0x38] + bl _call_via_r3 + ldrb r0, [r4, #8] + movs r1, #1 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C8014: .4byte 0x00000888 + thumb_func_end sub_081C7FE0 + + thumb_func_start sub_081C8018 +sub_081C8018: @ 0x081C8018 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #4 + bhi _081C80F4 + lsls r0, r5, #2 + ldr r1, _081C8034 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C8034: .4byte _081C8038 +_081C8038: @ jump table + .4byte _081C804C @ case 0 + .4byte _081C8054 @ case 1 + .4byte _081C8080 @ case 2 + .4byte _081C80C0 @ case 3 + .4byte _081C80E0 @ case 4 +_081C804C: + adds r0, r4, #0 + movs r1, #1 + bl sub_081C87BC +_081C8054: + ldr r0, _081C8078 + adds r5, r4, r0 + ldr r1, _081C807C + adds r0, r4, r1 + ldr r1, [r5] + ldrh r0, [r0] + cmp r1, r0 + beq _081C806C + adds r0, r4, #0 + movs r2, #1 + bl sub_081C8318 +_081C806C: + ldr r0, [r5] + adds r0, #1 + str r0, [r5] +_081C8072: + movs r0, #0 + b _081C80F6 + .align 2, 0 +_081C8078: .4byte 0x0000089C +_081C807C: .4byte 0x0000088E +_081C8080: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C80EA + ldr r2, _081C80A0 + adds r0, r4, r2 + subs r2, #0xc + adds r1, r4, r2 + ldr r3, [r0] + ldrh r1, [r1] + cmp r3, r1 + beq _081C80A4 + movs r0, #6 + b _081C80F6 + .align 2, 0 +_081C80A0: .4byte 0x0000089C +_081C80A4: + ldr r0, _081C80BC + adds r1, r4, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _081C8072 + adds r2, r0, #0 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_081C8318 + b _081C8072 + .align 2, 0 +_081C80BC: .4byte 0x0000088E +_081C80C0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C80EA + ldr r2, _081C80DC + adds r1, r4, r2 + ldrh r0, [r1] + cmp r0, #0 + beq _081C80F4 + movs r1, #0 + bl sub_081C7C90 + b _081C8072 + .align 2, 0 +_081C80DC: .4byte 0x0000088E +_081C80E0: + bl sub_081C7DD8 + adds r1, r0, #0 + cmp r1, #0 + beq _081C80EE +_081C80EA: + movs r0, #2 + b _081C80F6 +_081C80EE: + ldr r2, _081C80FC + adds r0, r4, r2 + strh r1, [r0] +_081C80F4: + movs r0, #4 +_081C80F6: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081C80FC: .4byte 0x0000088E + thumb_func_end sub_081C8018 + + thumb_func_start sub_081C8100 +sub_081C8100: @ 0x081C8100 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C811A + movs r0, #2 + b _081C81CA +_081C811A: + cmp r5, #7 + bhi _081C81C4 + lsls r0, r5, #2 + ldr r1, _081C8128 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C8128: .4byte _081C812C +_081C812C: @ jump table + .4byte _081C814C @ case 0 + .4byte _081C815C @ case 1 + .4byte _081C8166 @ case 2 + .4byte _081C8178 @ case 3 + .4byte _081C8182 @ case 4 + .4byte _081C8194 @ case 5 + .4byte _081C819E @ case 6 + .4byte _081C81B0 @ case 7 +_081C814C: + ldr r1, _081C8158 + adds r0, r4, r1 + adds r1, r4, #0 + bl sub_081C845C + b _081C81C8 + .align 2, 0 +_081C8158: .4byte 0x00000888 +_081C815C: + adds r0, r4, #0 + movs r1, #0 + bl sub_081C8564 + b _081C81C8 +_081C8166: + ldr r1, _081C8174 + adds r0, r4, r1 + adds r1, r4, #0 + movs r2, #0 + bl sub_081C85FC + b _081C81C8 + .align 2, 0 +_081C8174: .4byte 0x00000888 +_081C8178: + adds r0, r4, #0 + movs r1, #1 + bl sub_081C8564 + b _081C81C8 +_081C8182: + ldr r1, _081C8190 + adds r0, r4, r1 + adds r1, r4, #0 + movs r2, #1 + bl sub_081C85FC + b _081C81C8 + .align 2, 0 +_081C8190: .4byte 0x00000888 +_081C8194: + adds r0, r4, #0 + movs r1, #2 + bl sub_081C8564 + b _081C81C8 +_081C819E: + ldr r1, _081C81AC + adds r0, r4, r1 + adds r1, r4, #0 + movs r2, #2 + bl sub_081C85FC + b _081C81C8 + .align 2, 0 +_081C81AC: .4byte 0x00000888 +_081C81B0: + ldr r1, _081C81C0 + adds r0, r4, r1 + adds r1, r4, #0 + movs r2, #3 + bl sub_081C85FC + b _081C81C8 + .align 2, 0 +_081C81C0: .4byte 0x00000888 +_081C81C4: + movs r0, #4 + b _081C81CA +_081C81C8: + movs r0, #0 +_081C81CA: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081C8100 + + thumb_func_start sub_081C81D0 +sub_081C81D0: @ 0x081C81D0 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r5, r0, #0 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C824E + movs r0, #0x11 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C8200 + adds r6, r4, r0 + adds r2, r4, #0 + cmp r5, #6 + bls _081C81F4 + b _081C830C +_081C81F4: + lsls r0, r5, #2 + ldr r1, _081C8204 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C8200: .4byte 0x00000888 +_081C8204: .4byte _081C8208 +_081C8208: @ jump table + .4byte _081C8224 @ case 0 + .4byte _081C8230 @ case 1 + .4byte _081C8290 @ case 2 + .4byte _081C82A4 @ case 3 + .4byte _081C82BC @ case 4 + .4byte _081C82DC @ case 5 + .4byte _081C8304 @ case 6 +_081C8224: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_081C84F4 + movs r0, #0 + b _081C830E +_081C8230: + ldr r1, _081C8254 + adds r7, r4, r1 + ldr r0, [r7] + adds r1, r0, #1 + str r1, [r7] + movs r3, #0x89 + lsls r3, r3, #4 + adds r0, r4, r3 + ldrh r0, [r0] + cmp r1, r0 + bge _081C8258 + adds r0, r2, #0 + movs r2, #1 + bl sub_081C8318 +_081C824E: + movs r0, #2 + b _081C830E + .align 2, 0 +_081C8254: .4byte 0x0000089C +_081C8258: + movs r0, #0 + str r0, [r7] + ldrh r0, [r6, #2] + ldrh r1, [r6, #8] + cmp r0, r1 + bhi _081C826E + ldrh r0, [r6] + cmp r0, #0 + beq _081C82FA + adds r4, r0, #0 + b _081C827C +_081C826E: + ldrh r1, [r6] + ldrh r0, [r6, #8] + adds r4, r1, r0 + ldrh r1, [r6, #2] + cmp r4, r1 + ble _081C82FA + subs r4, r4, r1 +_081C827C: + rsbs r5, r4, #0 + adds r0, r2, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_081C8318 + strh r4, [r6, #6] + str r5, [r7] + movs r0, #0 + b _081C830E +_081C8290: + ldr r2, _081C82A0 + adds r0, r4, r2 + ldr r0, [r0] + movs r1, #0 + bl sub_081C7C90 + movs r0, #0 + b _081C830E + .align 2, 0 +_081C82A0: .4byte 0x0000089C +_081C82A4: + bl sub_081C7DD8 + adds r1, r0, #0 + cmp r1, #0 + bne _081C824E + ldr r3, _081C82B8 + adds r0, r4, r3 + str r1, [r0] +_081C82B4: + movs r0, #1 + b _081C830E + .align 2, 0 +_081C82B8: .4byte 0x0000089C +_081C82BC: + ldr r0, [r6, #0x10] + ldrh r1, [r6] + ldr r3, _081C82D8 + adds r2, r4, r3 + ldr r2, [r2] + adds r1, r1, r2 + ldr r3, [r6, #0xc] + str r2, [sp] + str r4, [sp, #4] + movs r2, #1 + bl sub_081C7B54 + movs r0, #0 + b _081C830E + .align 2, 0 +_081C82D8: .4byte 0x0000089C +_081C82DC: + bl sub_081C7B88 + cmp r0, #0 + bne _081C824E + ldr r0, _081C8300 + adds r1, r4, r0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldrh r1, [r6, #2] + cmp r0, r1 + bge _081C82B4 + ldrh r6, [r6, #8] + cmp r0, r6 + bge _081C82B4 +_081C82FA: + movs r0, #9 + b _081C830E + .align 2, 0 +_081C8300: .4byte 0x0000089C +_081C8304: + adds r0, r2, #0 + movs r1, #0 + bl sub_081C87BC +_081C830C: + movs r0, #4 +_081C830E: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C81D0 + + thumb_func_start sub_081C8318 +sub_081C8318: @ 0x081C8318 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + mov sb, r0 + adds r7, r1, #0 + adds r6, r2, #0 + ldrb r0, [r0, #8] + movs r1, #7 + bl sub_0800401C + mov sl, r0 + mov r1, sb + ldrb r0, [r1, #4] + lsls r3, r0, #6 + ldrh r0, [r1, #0xa] + adds r7, r0, r7 + movs r0, #0xf + ands r7, r0 + adds r0, r7, r6 + cmp r0, #0x10 + bgt _081C837C + ldr r0, _081C8374 + str r0, [sp] + adds r1, r7, #0 + muls r1, r3, r1 + add r1, sl + adds r2, r6, #0 + muls r2, r3, r2 + lsrs r2, r2, #2 + ldr r0, _081C8378 + ands r2, r0 + movs r0, #0x80 + lsls r0, r0, #0x11 + orrs r2, r0 + mov r0, sp + bl CpuFastSet + mov r1, sb + ldrb r0, [r1, #8] + movs r1, #2 + bl sub_08003528 + b _081C83C6 + .align 2, 0 +_081C8374: .4byte 0x11111111 +_081C8378: .4byte 0x001FFFFF +_081C837C: + movs r2, #0x10 + subs r2, r2, r7 + subs r0, r6, r2 + mov r8, r0 + ldr r1, _081C8404 + str r1, [sp, #4] + add r0, sp, #4 + adds r1, r7, #0 + muls r1, r3, r1 + add r1, sl + muls r2, r3, r2 + lsrs r2, r2, #2 + ldr r5, _081C8408 + ands r2, r5 + movs r4, #0x80 + lsls r4, r4, #0x11 + orrs r2, r4 + str r3, [sp, #0xc] + bl CpuFastSet + ldr r0, _081C8404 + str r0, [sp, #8] + add r0, sp, #8 + ldr r3, [sp, #0xc] + mov r2, r8 + muls r2, r3, r2 + lsrs r2, r2, #2 + ands r2, r5 + orrs r2, r4 + mov r1, sl + bl CpuFastSet + mov r1, sb + ldrb r0, [r1, #8] + movs r1, #2 + bl sub_08003528 +_081C83C6: + subs r6, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r6, r0 + beq _081C83E8 + movs r5, #0xf + adds r4, r0, #0 +_081C83D4: + mov r1, sb + ldrh r0, [r1, #8] + adds r1, r7, #0 + bl sub_081CB4B8 + adds r7, #1 + ands r7, r5 + subs r6, #1 + cmp r6, r4 + bne _081C83D4 +_081C83E8: + mov r1, sb + ldrb r0, [r1, #8] + movs r1, #1 + bl sub_08003528 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C8404: .4byte 0x11111111 +_081C8408: .4byte 0x001FFFFF + thumb_func_end sub_081C8318 + + thumb_func_start sub_081C840C +sub_081C840C: @ 0x081C840C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r5, #8] + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002194 + adds r2, r0, #0 + ldrh r0, [r5, #0xa] + lsls r0, r0, #6 + ldrb r1, [r5, #2] + adds r0, r0, r1 + lsls r0, r0, #1 + subs r0, #2 + adds r2, r2, r0 + cmp r4, #0 + beq _081C8440 + ldrb r0, [r5, #1] + lsls r0, r0, #0xc + ldrh r1, [r5, #6] + adds r1, #1 + b _081C8446 +_081C8440: + ldrb r0, [r5, #1] + lsls r0, r0, #0xc + ldrh r1, [r5, #6] +_081C8446: + orrs r0, r1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + strh r1, [r2] + adds r0, r2, #0 + adds r0, #0x40 + strh r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C840C + + thumb_func_start sub_081C845C +sub_081C845C: @ 0x081C845C + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, _081C84F0 + add r0, sp, #0xc + movs r2, #3 + bl memcpy + ldrh r1, [r5] + ldr r0, [r5, #0xc] + muls r1, r0, r1 + ldr r0, [r5, #0x10] + adds r0, r0, r1 + adds r6, r4, #0 + adds r6, #0x48 + ldr r2, [r4, #0x34] + adds r1, r6, #0 + bl _call_via_r2 + thumb_func_end sub_081C845C + + thumb_func_start sub_081C8484 +sub_081C8484: @ 0x081C8484 + ldrh r0, [r4, #8] + ldrh r1, [r5] + ldrh r2, [r4, #0xa] + ldr r3, [r4, #0x38] + bl _call_via_r3 + ldrb r0, [r4, #8] + ldrh r3, [r4, #0xa] + lsls r3, r3, #0x14 + lsrs r3, r3, #0x10 + ldrb r1, [r4, #4] + lsls r1, r1, #3 + str r1, [sp] + movs r1, #0x10 + str r1, [sp, #4] + movs r1, #0x44 + movs r2, #0 + bl sub_08003A34 + ldrb r0, [r4, #8] + ldrh r3, [r4, #0xa] + lsls r3, r3, #4 + adds r3, #2 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + add r1, sp, #0xc + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + movs r2, #0 + bl sub_08199AFC + adds r0, r4, #0 + movs r1, #1 + bl sub_081C840C + ldrh r0, [r4, #8] + ldrh r3, [r4, #0xa] + lsls r3, r3, #1 + ldrb r1, [r4, #4] + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r1, #3 + movs r2, #0 + bl sub_080035A8 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C84F0: .4byte gUnknown_85F15A8 + thumb_func_end sub_081C8484 + + thumb_func_start sub_081C84F4 +sub_081C84F4: @ 0x081C84F4 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r1, #0 + ldrh r2, [r0] + ldr r1, [r0, #0xc] + muls r1, r2, r1 + ldr r0, [r0, #0x10] + adds r0, r0, r1 + adds r5, r4, #0 + adds r5, #0x48 + ldr r2, [r4, #0x34] + adds r1, r5, #0 + bl _call_via_r2 + thumb_func_end sub_081C84F4 + + thumb_func_start sub_081C8510 +sub_081C8510: @ 0x081C8510 + ldrb r0, [r4, #8] + ldrh r3, [r4, #0xa] + lsls r3, r3, #0x14 + lsrs r3, r3, #0x10 + ldrb r1, [r4, #4] + lsls r1, r1, #3 + str r1, [sp] + movs r1, #0x10 + str r1, [sp, #4] + movs r1, #0x11 + movs r2, #0 + bl sub_08003A34 + ldrb r0, [r4, #8] + ldrh r1, [r4, #0xa] + lsls r1, r1, #4 + adds r1, #2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r5, #0 + movs r3, #0 + bl sub_0800449C + adds r0, r4, #0 + movs r1, #0 + bl sub_081C840C + ldrb r0, [r4, #8] + movs r1, #3 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C8510 + + thumb_func_start sub_081C8564 +sub_081C8564: @ 0x081C8564 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #0x1c + adds r6, r0, #0 + mov r8, r1 + add r1, sp, #0xc + ldr r0, _081C85F4 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + add r0, sp, #0x18 + mov sb, r0 + ldr r1, _081C85F8 + movs r2, #3 + bl memcpy + ldrh r4, [r6, #0xa] + mov r1, r8 + lsls r0, r1, #1 + adds r0, #1 + adds r4, r4, r0 + movs r0, #0xf + ands r4, r0 + ldrb r0, [r6, #8] + lsls r5, r4, #4 + adds r3, r5, #0 + ldrb r1, [r6, #4] + str r1, [sp] + movs r1, #0x10 + str r1, [sp, #4] + movs r1, #0x11 + movs r2, #0 + bl sub_08003A34 + ldrb r0, [r6, #8] + movs r1, #2 + orrs r5, r1 + mov r2, sb + str r2, [sp] + subs r1, #3 + str r1, [sp, #4] + mov r3, r8 + lsls r3, r3, #2 + mov r8, r3 + mov r1, sp + add r1, r8 + adds r1, #0xc + ldr r1, [r1] + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + adds r3, r5, #0 + bl sub_08199AFC + ldrh r0, [r6, #8] + lsls r4, r4, #1 + ldrb r1, [r6, #4] + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r2, #0 + adds r3, r4, #0 + bl sub_080035A8 + add sp, #0x1c + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C85F4: .4byte gUnknown_85F15AC +_081C85F8: .4byte gUnknown_85F15B8 + thumb_func_end sub_081C8564 + + thumb_func_start sub_081C85FC +sub_081C85FC: @ 0x081C85FC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + adds r5, r1, #0 + adds r1, r2, #0 + ldrh r3, [r5, #0xa] + ldr r2, _081C8630 + adds r2, r1, r2 + ldrb r2, [r2] + adds r7, r3, r2 + movs r2, #0xf + ands r7, r2 + ldrh r0, [r0] + bl sub_081CA77C + adds r6, r0, #0 + cmp r6, #0 + beq _081C8634 + adds r4, r5, #0 + adds r4, #0x48 + ldrb r3, [r5, #4] + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_08008E14 + b _081C8642 + .align 2, 0 +_081C8630: .4byte gUnknown_85F15BB +_081C8634: + adds r4, r5, #0 + adds r4, #0x48 + ldrb r2, [r5, #4] + adds r0, r4, #0 + movs r1, #0 + bl sub_08008DE8 +_081C8642: + cmp r6, #0 + beq _081C8674 + ldrb r0, [r5, #8] + lsls r1, r7, #4 + movs r2, #2 + orrs r1, r2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrh r0, [r5, #8] + lsls r3, r7, #1 + ldrb r1, [r5, #4] + str r1, [sp] + movs r1, #2 + str r1, [sp, #4] + movs r2, #0 + bl sub_080035A8 +_081C8674: + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C85FC + + thumb_func_start sub_081C867C +sub_081C867C: @ 0x081C867C + push {r4, r5, lr} + movs r5, #0 + ldr r4, _081C869C +_081C8682: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #0 + beq _081C8682 + ldr r0, _081C86A0 + bl sub_081C711C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C869C: .4byte gUnknown_85F15C0 +_081C86A0: .4byte gUnknown_85F15C8 + thumb_func_end sub_081C867C + + thumb_func_start sub_081C86A4 +sub_081C86A4: @ 0x081C86A4 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _081C8774 + ldrb r1, [r5, #2] + lsls r1, r1, #0x13 + ldr r2, _081C8778 + adds r1, r1, r2 + asrs r1, r1, #0x10 + ldrb r2, [r5, #3] + adds r2, #1 + lsls r2, r2, #3 + movs r3, #7 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r3, _081C877C + mov r8, r3 + add r0, r8 + str r0, [r5, #0x3c] + ldrb r6, [r5, #2] + lsls r6, r6, #3 + ldrb r0, [r5, #4] + subs r0, #1 + lsls r0, r0, #2 + ldr r1, _081C8780 + mov sl, r1 + adds r6, r6, r0 + ldrb r2, [r5, #3] + lsls r2, r2, #3 + ldrh r0, [r4, #8] + lsls r0, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r0, sl + adds r1, r6, #0 + movs r3, #7 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + add r2, r8 + str r2, [r5, #0x44] + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r1, r1, #0x16 + adds r1, #2 + ldr r0, _081C8784 + mov sb, r0 + mov r0, sb + ands r1, r0 + ldr r4, _081C8788 + adds r0, r4, #0 + ands r0, r3 + orrs r0, r1 + strh r0, [r2, #4] + ldr r1, [r5, #0x44] + ldr r0, _081C878C + str r0, [r1, #0x1c] + ldrb r2, [r5, #3] + lsls r2, r2, #3 + mov r0, sl + adds r1, r6, #0 + movs r3, #7 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + add r1, r8 + str r1, [r5, #0x40] + ldrh r2, [r1, #4] + lsls r0, r2, #0x16 + lsrs r0, r0, #0x16 + adds r0, #4 + mov r3, sb + ands r0, r3 + ands r4, r2 + orrs r4, r0 + strh r4, [r1, #4] + ldr r1, [r5, #0x40] + ldr r0, _081C8790 + str r0, [r1, #0x1c] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C8774: .4byte gUnknown_85F15E0 +_081C8778: .4byte 0xFFFC0000 +_081C877C: .4byte gUnknown_20205AC +_081C8780: .4byte gUnknown_85F1600 +_081C8784: .4byte 0x000003FF +_081C8788: .4byte 0xFFFFFC00 +_081C878C: .4byte sub_081C8854 +_081C8790: .4byte sub_081C88A8 + thumb_func_end sub_081C86A4 + + thumb_func_start sub_081C8794 +sub_081C8794: @ 0x081C8794 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x3c] + bl sub_08006E00 + ldr r0, [r4, #0x40] + bl sub_08006E00 + ldr r0, [r4, #0x44] + bl sub_08006E00 + movs r0, #0xa + bl sub_08008280 + movs r0, #0x14 + bl sub_08008564 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C8794 + + thumb_func_start sub_081C87BC +sub_081C87BC: @ 0x081C87BC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + cmp r4, #0 + beq _081C87DC + ldr r2, [r5, #0x3c] + ldr r1, _081C87D8 + str r1, [r2, #0x1c] + ldr r0, [r5, #0x40] + str r1, [r0, #0x1c] + ldr r0, [r5, #0x44] + str r1, [r0, #0x1c] + b _081C87EE + .align 2, 0 +_081C87D8: .4byte sub_08007140 +_081C87DC: + ldr r2, [r5, #0x3c] + ldr r0, _081C8828 + str r0, [r2, #0x1c] + ldr r1, [r5, #0x40] + ldr r0, _081C882C + str r0, [r1, #0x1c] + ldr r1, [r5, #0x44] + ldr r0, _081C8830 + str r0, [r1, #0x1c] +_081C87EE: + adds r3, r2, #0 + adds r3, #0x3e + movs r0, #1 + ands r4, r0 + lsls r4, r4, #2 + ldrb r2, [r3] + movs r1, #5 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r3] + ldr r2, [r5, #0x40] + adds r2, #0x3e + ldrb r3, [r2] + adds r0, r1, #0 + ands r0, r3 + orrs r0, r4 + strb r0, [r2] + ldr r0, [r5, #0x44] + adds r0, #0x3e + ldrb r2, [r0] + ands r1, r2 + orrs r1, r4 + strb r1, [r0] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C8828: .4byte sub_081C8834 +_081C882C: .4byte sub_081C88A8 +_081C8830: .4byte sub_081C8854 + thumb_func_end sub_081C87BC + + thumb_func_start sub_081C8834 +sub_081C8834: @ 0x081C8834 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + ldr r1, _081C8850 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #4 + strh r0, [r4, #0x26] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C8850: .4byte 0x0000088E + thumb_func_end sub_081C8834 + + thumb_func_start sub_081C8854 +sub_081C8854: @ 0x081C8854 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081C8876 + bl sub_081C7C68 + cmp r0, #0 + beq _081C8876 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + b _081C8880 +_081C8876: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 +_081C8880: + strb r0, [r2] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081C88A0 + movs r0, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strh r0, [r4, #0x30] + strh r0, [r4, #0x26] +_081C88A0: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C8854 + + thumb_func_start sub_081C88A8 +sub_081C88A8: @ 0x081C88A8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081C88CA + bl sub_081C7C4C + cmp r0, #0 + beq _081C88CA + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + b _081C88D4 +_081C88CA: + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 +_081C88D4: + strb r0, [r2] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081C88F6 + movs r0, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x30] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strh r0, [r4, #0x30] + rsbs r0, r0, #0 + strh r0, [r4, #0x26] +_081C88F6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C88A8 + + thumb_func_start sub_081C88FC +sub_081C88FC: @ 0x081C88FC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x11 + bl sub_081C6DFC + ldr r1, [r0, #0x40] + strh r4, [r1, #0x3c] + ldr r0, [r0, #0x44] + strh r4, [r0, #0x3c] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C88FC + + thumb_func_start sub_081C8914 +sub_081C8914: @ 0x081C8914 + push {r4, r5, lr} + adds r2, r0, #0 + ldr r0, [r1] + str r0, [r2, #0x10] + ldrh r4, [r1, #6] + movs r5, #0 + strh r4, [r2] + ldrh r3, [r1, #4] + strh r3, [r2, #2] + ldrb r0, [r1, #8] + str r0, [r2, #0xc] + ldrb r1, [r1, #0xc] + strh r1, [r2, #8] + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + blo _081C893E + strh r5, [r2] + strh r5, [r2, #4] + strh r4, [r2, #6] + b _081C895A +_081C893E: + subs r0, r3, r1 + strh r0, [r2, #4] + ldrh r1, [r2] + ldrh r0, [r2, #8] + adds r1, r1, r0 + ldrh r0, [r2, #2] + cmp r1, r0 + ble _081C8958 + subs r0, r1, r0 + strh r0, [r2, #6] + subs r0, r4, r0 + strh r0, [r2] + b _081C895A +_081C8958: + strh r5, [r2, #6] +_081C895A: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C8914 + + thumb_func_start sub_081C8960 +sub_081C8960: @ 0x081C8960 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #8 + adds r7, r0, #0 + ldr r4, [r1] + lsls r4, r4, #0x1e + lsrs r0, r4, #0x1e + movs r1, #0 + mov r8, r1 + strb r0, [r7] + strh r3, [r7, #6] + ldr r0, [r2, #0x10] + str r0, [r7, #0x34] + ldr r0, [r2, #0x14] + str r0, [r7, #0x38] + ldrb r5, [r2, #0xd] + strb r5, [r7, #1] + ldrb r1, [r2, #9] + strb r1, [r7, #2] + ldrb r0, [r2, #0xb] + strb r0, [r7, #3] + ldrb r2, [r2, #0xa] + strb r2, [r7, #4] + lsrs r4, r4, #0x1e + ldr r6, _081C89F0 + ldr r0, [sp] + ands r0, r6 + orrs r0, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x10 + ldr r4, _081C89F4 + ands r0, r4 + orrs r0, r1 + ldr r1, _081C89F8 + ands r0, r1 + lsls r2, r2, #0x18 + ldr r1, _081C89FC + ands r0, r1 + orrs r0, r2 + str r0, [sp] + ldr r0, [sp, #4] + ands r0, r6 + movs r1, #0x20 + orrs r0, r1 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x10 + ands r0, r4 + orrs r0, r5 + adds r3, #2 + lsls r3, r3, #0x10 + ldr r1, _081C8A00 + ands r0, r1 + orrs r0, r3 + str r0, [sp, #4] + mov r0, sp + bl sub_08003250 + strh r0, [r7, #8] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xff + beq _081C8A04 + mov r0, r8 + strh r0, [r7, #0xa] + mov r1, r8 + str r1, [r7, #0x3c] + str r1, [r7, #0x40] + str r1, [r7, #0x44] + movs r0, #1 + b _081C8A06 + .align 2, 0 +_081C89F0: .4byte 0xFFFFFF00 +_081C89F4: .4byte 0xFFFF00FF +_081C89F8: .4byte 0xFF00FFFF +_081C89FC: .4byte 0x00FFFFFF +_081C8A00: .4byte 0x0000FFFF +_081C8A04: + movs r0, #0 +_081C8A06: + add sp, #8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8960 + + thumb_func_start sub_081C8A14 +sub_081C8A14: @ 0x081C8A14 + push {r4, lr} + movs r0, #0x98 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + ldr r0, _081C8A40 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C8A36 + movs r4, #2 +_081C8A36: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C8A40: .4byte 0x0000089B + thumb_func_end sub_081C8A14 + + thumb_func_start sub_081C8A44 +sub_081C8A44: @ 0x081C8A44 + push {r4, lr} + movs r0, #1 + movs r1, #0x10 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C8A70 + bl sub_081C8A14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + strh r0, [r4] + strh r1, [r4, #2] + strh r1, [r4, #4] + strh r1, [r4, #6] + adds r0, r4, #0 + bl sub_081C8B48 + movs r0, #1 + b _081C8A72 +_081C8A70: + movs r0, #0 +_081C8A72: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C8A44 + + thumb_func_start sub_081C8A78 +sub_081C8A78: @ 0x081C8A78 + push {r4, lr} + movs r0, #1 + movs r1, #0x10 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C8AA6 + bl sub_081C8A14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + strh r0, [r4] + movs r0, #2 + strh r0, [r4, #2] + strh r0, [r4, #4] + strh r1, [r4, #6] + adds r0, r4, #0 + bl sub_081C8B48 + movs r0, #1 + b _081C8AA8 +_081C8AA6: + movs r0, #0 +_081C8AA8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8A78 + + thumb_func_start sub_081C8AB0 +sub_081C8AB0: @ 0x081C8AB0 + push {r4, lr} + movs r0, #1 + movs r1, #0x10 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C8ADA + bl sub_081C8A14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #3 + strh r0, [r4, #2] + strh r0, [r4, #4] + adds r0, r4, #0 + bl sub_081C8B48 + movs r0, #1 + b _081C8ADC +_081C8ADA: + movs r0, #0 +_081C8ADC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8AB0 + + thumb_func_start sub_081C8AE4 +sub_081C8AE4: @ 0x081C8AE4 + push {lr} + movs r0, #1 + movs r1, #0x10 + bl sub_081C6DDC + adds r2, r0, #0 + cmp r2, #0 + beq _081C8B0C + movs r0, #0 + movs r1, #3 + strh r1, [r2] + strh r0, [r2, #2] + movs r1, #5 + strh r1, [r2, #4] + strh r0, [r2, #6] + adds r0, r2, #0 + bl sub_081C8B48 + movs r0, #1 + b _081C8B0E +_081C8B0C: + movs r0, #0 +_081C8B0E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8AE4 + + thumb_func_start sub_081C8B14 +sub_081C8B14: @ 0x081C8B14 + push {r4, r5, lr} + movs r0, #1 + movs r1, #0x10 + bl sub_081C6DDC + adds r5, r0, #0 + cmp r5, #0 + beq _081C8B40 + movs r4, #0 + movs r0, #4 + strh r0, [r5] + bl sub_081C6E6C + strh r0, [r5, #2] + adds r0, #8 + strh r0, [r5, #4] + strh r4, [r5, #6] + adds r0, r5, #0 + bl sub_081C8B48 + movs r0, #1 + b _081C8B42 +_081C8B40: + movs r0, #0 +_081C8B42: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081C8B14 + + thumb_func_start sub_081C8B48 +sub_081C8B48: @ 0x081C8B48 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4] + cmp r0, #4 + bhi _081C8B8C + lsls r0, r0, #2 + ldr r1, _081C8B5C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C8B5C: .4byte _081C8B60 +_081C8B60: @ jump table + .4byte _081C8B74 @ case 0 + .4byte _081C8B7A @ case 1 + .4byte _081C8B7A @ case 2 + .4byte _081C8B80 @ case 3 + .4byte _081C8B88 @ case 4 +_081C8B74: + movs r0, #0 + bl sub_081C6E48 +_081C8B7A: + bl sub_081C8B98 + b _081C8B8A +_081C8B80: + ldr r0, _081C8B84 + b _081C8B8A + .align 2, 0 +_081C8B84: .4byte sub_081C8DE8 +_081C8B88: + ldr r0, _081C8B94 +_081C8B8A: + str r0, [r4, #0xc] +_081C8B8C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C8B94: .4byte sub_081C8EA8 + thumb_func_end sub_081C8B48 + + thumb_func_start sub_081C8B98 +sub_081C8B98: @ 0x081C8B98 + push {lr} + bl sub_081C6E3C + cmp r0, #1 + beq _081C8BB4 + cmp r0, #1 + blo _081C8BAA + cmp r0, #2 + beq _081C8BBC +_081C8BAA: + ldr r0, _081C8BB0 + b _081C8BBE + .align 2, 0 +_081C8BB0: .4byte sub_081C8BE8 +_081C8BB4: + ldr r0, _081C8BB8 + b _081C8BBE + .align 2, 0 +_081C8BB8: .4byte sub_081C8CCC +_081C8BBC: + ldr r0, _081C8BC4 +_081C8BBE: + pop {r1} + bx r1 + .align 2, 0 +_081C8BC4: .4byte sub_081C8D34 + thumb_func_end sub_081C8B98 + + thumb_func_start sub_081C8BC8 +sub_081C8BC8: @ 0x081C8BC8 + push {lr} + movs r0, #1 + bl sub_081C6DFC + ldr r1, [r0, #0xc] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8BC8 + + thumb_func_start sub_081C8BDC +sub_081C8BDC: @ 0x081C8BDC + push {lr} + movs r0, #1 + bl sub_081C6E10 + pop {r0} + bx r0 + thumb_func_end sub_081C8BDC + + thumb_func_start sub_081C8BE8 +sub_081C8BE8: @ 0x081C8BE8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + cmp r0, #0 + beq _081C8BF8 + movs r0, #1 + b _081C8CC6 +_081C8BF8: + ldr r2, _081C8C28 + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + beq _081C8CB4 + ldr r3, _081C8C2C + movs r0, #2 + ldrsh r1, [r4, r0] + ldrh r2, [r4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #4 + bhi _081C8CB4 + lsls r0, r0, #2 + ldr r1, _081C8C30 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C8C28: .4byte gUnknown_3002360 +_081C8C2C: .4byte gUnknown_85F161D +_081C8C30: .4byte _081C8C34 +_081C8C34: @ jump table + .4byte _081C8C48 @ case 0 + .4byte _081C8C68 @ case 1 + .4byte _081C8C80 @ case 2 + .4byte _081C8C8C @ case 3 + .4byte _081C8CC2 @ case 4 +_081C8C48: + ldr r0, _081C8C60 + ldr r0, [r0] + ldrb r1, [r0, #0x15] + movs r0, #8 + ands r0, r1 + movs r1, #1 + cmp r0, #0 + beq _081C8C5A + movs r1, #2 +_081C8C5A: + strh r1, [r4, #6] + ldr r1, _081C8C64 + b _081C8C9A + .align 2, 0 +_081C8C60: .4byte gUnknown_3005AF0 +_081C8C64: .4byte 0x000186A6 +_081C8C68: + movs r1, #0 + movs r0, #3 + strh r0, [r4] + strh r1, [r4, #2] + ldrb r0, [r3, #0x12] + strh r0, [r4, #4] + ldr r0, _081C8C7C + str r0, [r4, #0xc] + movs r0, #2 + b _081C8CC6 + .align 2, 0 +_081C8C7C: .4byte sub_081C8DE8 +_081C8C80: + movs r0, #6 + strh r0, [r4, #6] + ldr r1, _081C8C88 + b _081C8C9A + .align 2, 0 +_081C8C88: .4byte 0x000186AB +_081C8C8C: + bl sub_081C6E78 + cmp r0, #0 + beq _081C8CA8 + movs r0, #9 + strh r0, [r4, #6] + ldr r1, _081C8CA4 +_081C8C9A: + adds r0, r4, #0 + bl sub_081C8F5C + movs r0, #8 + b _081C8CC6 + .align 2, 0 +_081C8CA4: .4byte 0x000186AC +_081C8CA8: + ldr r0, _081C8CB0 + str r0, [r4, #0xc] + movs r0, #6 + b _081C8CC6 + .align 2, 0 +_081C8CB0: .4byte sub_081C8DAC +_081C8CB4: + ldrh r1, [r5, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081C8CC2 + movs r0, #0 + b _081C8CC6 +_081C8CC2: + movs r0, #1 + rsbs r0, r0, #0 +_081C8CC6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081C8BE8 + + thumb_func_start sub_081C8CCC +sub_081C8CCC: @ 0x081C8CCC + push {r4, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + cmp r0, #0 + beq _081C8CDC + movs r0, #1 + b _081C8D2C +_081C8CDC: + ldr r0, _081C8D10 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C8D1C + ldr r3, _081C8D14 + movs r0, #2 + ldrsh r1, [r4, r0] + ldrh r2, [r4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #2 + bne _081C8D24 + movs r0, #6 + strh r0, [r4, #6] + ldr r1, _081C8D18 + adds r0, r4, #0 + bl sub_081C8F5C + movs r0, #8 + b _081C8D2C + .align 2, 0 +_081C8D10: .4byte gUnknown_3002360 +_081C8D14: .4byte gUnknown_85F161D +_081C8D18: .4byte 0x000186AB +_081C8D1C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C8D2A +_081C8D24: + movs r0, #0x20 + bl sub_080A306C +_081C8D2A: + movs r0, #0 +_081C8D2C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8CCC + + thumb_func_start sub_081C8D34 +sub_081C8D34: @ 0x081C8D34 + push {r4, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + cmp r0, #0 + beq _081C8D44 + movs r0, #1 + b _081C8DA4 +_081C8D44: + ldr r0, _081C8D78 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C8D94 + ldr r3, _081C8D7C + movs r0, #2 + ldrsh r1, [r4, r0] + ldrh r2, [r4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #2 + beq _081C8D80 + cmp r0, #4 + beq _081C8DA0 + movs r0, #0x20 + bl sub_080A306C + movs r0, #0 + b _081C8DA4 + .align 2, 0 +_081C8D78: .4byte gUnknown_3002360 +_081C8D7C: .4byte gUnknown_85F161D +_081C8D80: + movs r0, #6 + strh r0, [r4, #6] + ldr r1, _081C8D90 + adds r0, r4, #0 + bl sub_081C8F5C + movs r0, #8 + b _081C8DA4 + .align 2, 0 +_081C8D90: .4byte 0x000186AB +_081C8D94: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081C8DA0 + movs r0, #0 + b _081C8DA4 +_081C8DA0: + movs r0, #1 + rsbs r0, r0, #0 +_081C8DA4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8D34 + + thumb_func_start sub_081C8DAC +sub_081C8DAC: @ 0x081C8DAC + push {r4, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + cmp r0, #0 + beq _081C8DC2 + bl sub_081C8B98 + str r0, [r4, #0xc] + movs r0, #1 + b _081C8DE0 +_081C8DC2: + ldr r0, _081C8DD4 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081C8DD8 + movs r0, #0 + b _081C8DE0 + .align 2, 0 +_081C8DD4: .4byte gUnknown_3002360 +_081C8DD8: + bl sub_081C8B98 + str r0, [r4, #0xc] + movs r0, #7 +_081C8DE0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C8DAC + + thumb_func_start sub_081C8DE8 +sub_081C8DE8: @ 0x081C8DE8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + adds r3, r0, #0 + cmp r3, #0 + beq _081C8DFA + movs r0, #1 + b _081C8EA2 +_081C8DFA: + ldr r2, _081C8E2C + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _081C8E64 + ldr r5, _081C8E30 + movs r1, #2 + ldrsh r0, [r4, r1] + ldrh r2, [r4] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r0, r5 + ldrb r0, [r0] + cmp r0, #6 + beq _081C8E3A + cmp r0, #6 + bgt _081C8E34 + cmp r0, #5 + beq _081C8E50 + b _081C8E64 + .align 2, 0 +_081C8E2C: .4byte gUnknown_3002360 +_081C8E30: .4byte gUnknown_85F161D +_081C8E34: + cmp r0, #7 + beq _081C8E90 + b _081C8E64 +_081C8E3A: + movs r0, #4 + strh r0, [r4] + strh r3, [r4, #2] + ldrb r0, [r5, #0x18] + strh r0, [r4, #4] + ldr r0, _081C8E4C + str r0, [r4, #0xc] + movs r0, #4 + b _081C8EA2 + .align 2, 0 +_081C8E4C: .4byte sub_081C8EA8 +_081C8E50: + strh r3, [r4, #6] + ldr r1, _081C8E60 + adds r0, r4, #0 + bl sub_081C8F5C + movs r0, #8 + b _081C8EA2 + .align 2, 0 +_081C8E60: .4byte 0x000186A7 +_081C8E64: + ldrh r1, [r6, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C8EA0 + movs r0, #2 + ldrsh r2, [r4, r0] + ldr r1, _081C8E88 + ldrh r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + beq _081C8E90 + strh r0, [r4, #2] + ldr r0, _081C8E8C + str r0, [r4, #0xc] + movs r0, #1 + b _081C8EA2 + .align 2, 0 +_081C8E88: .4byte gUnknown_85F1618 +_081C8E8C: .4byte sub_081C8F44 +_081C8E90: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081C8F6C + movs r0, #3 + b _081C8EA2 +_081C8EA0: + movs r0, #0 +_081C8EA2: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081C8DE8 + + thumb_func_start sub_081C8EA8 +sub_081C8EA8: @ 0x081C8EA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_081C8FC0 + cmp r0, #0 + beq _081C8EB8 + movs r0, #1 + b _081C8F3E +_081C8EB8: + ldr r0, _081C8EF4 + ldrh r1, [r0, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081C8F00 + ldr r3, _081C8EF8 + movs r0, #2 + ldrsh r1, [r4, r0] + ldrh r2, [r4] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r3 + ldrb r0, [r1] + cmp r0, #0xd + beq _081C8F2C + subs r0, #8 + bl sub_081C6E54 + ldr r1, _081C8EFC + adds r0, r4, #0 + bl sub_081C8F5C + movs r0, #3 + strh r0, [r4, #6] + movs r0, #8 + b _081C8F3E + .align 2, 0 +_081C8EF4: .4byte gUnknown_3002360 +_081C8EF8: .4byte gUnknown_85F161D +_081C8EFC: .4byte 0x000186A8 +_081C8F00: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081C8F3C + movs r0, #2 + ldrsh r2, [r4, r0] + ldr r1, _081C8F24 + ldrh r0, [r4] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, r0 + beq _081C8F2C + strh r0, [r4, #2] + ldr r0, _081C8F28 + str r0, [r4, #0xc] + movs r0, #1 + b _081C8F3E + .align 2, 0 +_081C8F24: .4byte gUnknown_85F1618 +_081C8F28: .4byte sub_081C8F50 +_081C8F2C: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081C8FA4 + movs r0, #5 + b _081C8F3E +_081C8F3C: + movs r0, #0 +_081C8F3E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C8EA8 + + thumb_func_start sub_081C8F44 +sub_081C8F44: @ 0x081C8F44 + push {lr} + bl sub_081C8F6C + movs r0, #3 + pop {r1} + bx r1 + thumb_func_end sub_081C8F44 + + thumb_func_start sub_081C8F50 +sub_081C8F50: @ 0x081C8F50 + push {lr} + bl sub_081C8FA4 + movs r0, #5 + pop {r1} + bx r1 + thumb_func_end sub_081C8F50 + + thumb_func_start sub_081C8F5C +sub_081C8F5C: @ 0x081C8F5C + str r1, [r0, #8] + ldr r1, _081C8F64 + str r1, [r0, #0xc] + bx lr + .align 2, 0 +_081C8F64: .4byte sub_081C8F68 + thumb_func_end sub_081C8F5C + + thumb_func_start sub_081C8F68 +sub_081C8F68: @ 0x081C8F68 + ldr r0, [r0, #8] + bx lr + thumb_func_end sub_081C8F68 + + thumb_func_start sub_081C8F6C +sub_081C8F6C: @ 0x081C8F6C + push {r4, lr} + adds r4, r0, #0 + bl sub_081C8A14 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + movs r0, #1 + strh r0, [r4, #2] + ldr r2, _081C8F9C + ldrh r1, [r4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #4] + ldr r0, _081C8FA0 + str r0, [r4, #0xc] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C8F9C: .4byte gUnknown_85F161D +_081C8FA0: .4byte sub_081C8BE8 + thumb_func_end sub_081C8F6C + + thumb_func_start sub_081C8FA4 +sub_081C8FA4: @ 0x081C8FA4 + movs r1, #3 + strh r1, [r0] + movs r1, #1 + strh r1, [r0, #2] + ldr r1, _081C8FB8 + ldrb r1, [r1, #0x13] + strh r1, [r0, #4] + ldr r1, _081C8FBC + str r1, [r0, #0xc] + bx lr + .align 2, 0 +_081C8FB8: .4byte gUnknown_85F161D +_081C8FBC: .4byte sub_081C8DE8 + thumb_func_end sub_081C8FA4 + + thumb_func_start sub_081C8FC0 +sub_081C8FC0: @ 0x081C8FC0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _081C8FEC + ldrh r1, [r0, #0x2e] + movs r0, #0x40 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #0 + beq _081C8FF4 + ldrh r0, [r4, #2] + subs r0, #1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + ldrh r3, [r4] + cmp r0, #0 + bge _081C9016 + ldr r0, _081C8FF0 + adds r0, r3, r0 + ldrb r0, [r0] + strh r0, [r4, #2] + b _081C9016 + .align 2, 0 +_081C8FEC: .4byte gUnknown_3002360 +_081C8FF0: .4byte gUnknown_85F1618 +_081C8FF4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081C9038 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r0, #2 + ldrsh r2, [r4, r0] + ldr r0, _081C9030 + ldrh r1, [r4] + adds r0, r1, r0 + adds r3, r1, #0 + ldrb r0, [r0] + cmp r2, r0 + ble _081C9016 + strh r5, [r4, #2] +_081C9016: + ldr r2, _081C9034 + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strh r0, [r4, #4] + movs r0, #1 + b _081C903A + .align 2, 0 +_081C9030: .4byte gUnknown_85F1618 +_081C9034: .4byte gUnknown_85F161D +_081C9038: + movs r0, #0 +_081C903A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081C8FC0 + + thumb_func_start sub_081C9040 +sub_081C9040: @ 0x081C9040 + push {lr} + movs r0, #1 + bl sub_081C6DFC + ldrh r0, [r0] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9040 + + thumb_func_start sub_081C9050 +sub_081C9050: @ 0x081C9050 + push {lr} + movs r0, #1 + bl sub_081C6DFC + movs r1, #2 + ldrsh r0, [r0, r1] + pop {r1} + bx r1 + thumb_func_end sub_081C9050 + + thumb_func_start sub_081C9060 +sub_081C9060: @ 0x081C9060 + push {lr} + movs r0, #1 + bl sub_081C6DFC + ldrh r0, [r0, #4] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9060 + + thumb_func_start sub_081C9070 +sub_081C9070: @ 0x081C9070 + push {lr} + movs r0, #1 + bl sub_081C6DFC + ldrh r0, [r0, #6] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9070 + + thumb_func_start sub_081C9080 +sub_081C9080: @ 0x081C9080 + push {r4, lr} + movs r4, #0 +_081C9084: + adds r0, r4, #0 + bl sub_081CA86C + ldr r1, _081C90B4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _081C90C0 + adds r0, r4, #0 + bl sub_081CA5B4 + cmp r0, #0 + beq _081C90C0 + ldr r0, _081C90B8 + ldr r0, [r0] + ldr r1, _081C90BC + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + beq _081C90C0 + movs r0, #1 + b _081C90C8 + .align 2, 0 +_081C90B4: .4byte gUnknown_2036FB8 +_081C90B8: .4byte gUnknown_3005AEC +_081C90BC: .4byte 0x000009CA +_081C90C0: + adds r4, #1 + cmp r4, #0x4d + ble _081C9084 + movs r0, #0 +_081C90C8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9080 + + thumb_func_start sub_081C90D0 +sub_081C90D0: @ 0x081C90D0 + push {lr} + bl sub_081C9104 + adds r1, r0, #0 + cmp r1, #0 + beq _081C90E4 + movs r0, #0 + strb r0, [r1, #0xd] + movs r0, #1 + b _081C90E6 +_081C90E4: + movs r0, #0 +_081C90E6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C90D0 + + thumb_func_start sub_081C90EC +sub_081C90EC: @ 0x081C90EC + push {lr} + bl sub_081C9104 + adds r1, r0, #0 + cmp r1, #0 + beq _081C90FE + movs r0, #1 + strb r0, [r1, #0xd] + b _081C9100 +_081C90FE: + movs r0, #0 +_081C9100: + pop {r1} + bx r1 + thumb_func_end sub_081C90EC + + thumb_func_start sub_081C9104 +sub_081C9104: @ 0x081C9104 + push {r4, lr} + ldr r1, _081C9130 + movs r0, #2 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081C9126 + movs r0, #0 + strb r0, [r4, #0xc] + ldr r0, _081C9134 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081C9138 + str r0, [r4] +_081C9126: + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081C9130: .4byte 0x0000088C +_081C9134: .4byte sub_081C91BC +_081C9138: .4byte sub_081C91A8 + thumb_func_end sub_081C9104 + + thumb_func_start sub_081C913C +sub_081C913C: @ 0x081C913C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #2 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081C9164 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081C9168 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C9164: .4byte gUnknown_85F2708 +_081C9168: .4byte sub_081C91A8 + thumb_func_end sub_081C913C + + thumb_func_start sub_081C916C +sub_081C916C: @ 0x081C916C + push {lr} + movs r0, #2 + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081C916C + + thumb_func_start sub_081C917C +sub_081C917C: @ 0x081C917C + bx r1 + .align 2, 0 + thumb_func_end sub_081C917C + + thumb_func_start sub_081C9180 +sub_081C9180: @ 0x081C9180 + push {r4, lr} + movs r0, #2 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C9FA0 + ldrb r0, [r4, #8] + bl sub_08003444 + bl sub_081C9798 + bl sub_081CA140 + movs r0, #2 + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081C9180 + + thumb_func_start sub_081C91A8 +sub_081C91A8: @ 0x081C91A8 + push {lr} + movs r0, #2 + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C91A8 + + thumb_func_start sub_081C91BC +sub_081C91BC: @ 0x081C91BC + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #2 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #9 + bls _081C91D0 + b _081C940C +_081C91D0: + lsls r0, r4, #2 + ldr r1, _081C91DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081C91DC: .4byte _081C91E0 +_081C91E0: @ jump table + .4byte _081C9208 @ case 0 + .4byte _081C9298 @ case 1 + .4byte _081C92DC @ case 2 + .4byte _081C9334 @ case 3 + .4byte _081C934A @ case 4 + .4byte _081C9350 @ case 5 + .4byte _081C9362 @ case 6 + .4byte _081C936C @ case 7 + .4byte _081C93BA @ case 8 + .4byte _081C93F8 @ case 9 +_081C9208: + ldr r0, _081C9288 + movs r1, #3 + bl sub_081C7314 + ldr r1, _081C928C + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r1, r5, #0 + adds r1, #0x8c + movs r0, #1 + bl sub_0800212C + ldr r1, _081C9290 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + ldr r0, _081C9294 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 +_081C9282: + movs r0, #0 + b _081C940E + .align 2, 0 +_081C9288: .4byte gUnknown_85F26FC +_081C928C: .4byte gUnknown_85F1730 +_081C9290: .4byte gUnknown_85F1780 +_081C9294: .4byte gUnknown_85F1710 +_081C9298: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081C92A6 + b _081C9408 +_081C92A6: + ldr r1, _081C92D0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081C92D4 + movs r0, #1 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _081C92D8 + movs r1, #0x20 + movs r2, #0x20 + bl sub_081C7104 + b _081C9282 + .align 2, 0 +_081C92D0: .4byte gUnknown_85F1858 +_081C92D4: .4byte gUnknown_85F1AE0 +_081C92D8: .4byte gUnknown_85F1838 +_081C92DC: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081C92EA + b _081C9408 +_081C92EA: + ldr r1, _081C9328 + str r0, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081C932C + movs r0, #1 + str r0, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _081C9330 + movs r1, #0x30 + movs r2, #0x20 + bl sub_081C7104 + bl sub_081C9040 + cmp r0, #3 + beq _081C9322 + bl sub_081C9040 + cmp r0, #4 + bne _081C9282 +_081C9322: + bl sub_081C9FFC + b _081C9282 + .align 2, 0 +_081C9328: .4byte gUnknown_85F165C +_081C932C: .4byte gUnknown_85F1670 +_081C9330: .4byte gUnknown_85F163C +_081C9334: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081C9408 + bl sub_081C9E8C + bl sub_081C9F80 +_081C9346: + movs r0, #1 + b _081C940E +_081C934A: + bl sub_081C9770 + b _081C9346 +_081C9350: + bl sub_081C9EC0 + bl sub_081C97D8 + bl sub_081C9DEC + bl sub_081C9874 + b _081C9282 +_081C9362: + bl sub_081C9F70 + cmp r0, #0 + bne _081C9408 + b _081C9346 +_081C936C: + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _081C938C + movs r0, #1 + bl sub_081C7280 + b _081C9398 +_081C938C: + movs r0, #0x6e + bl sub_080A306C + movs r0, #3 + bl sub_081C7280 +_081C9398: + bl sub_081C9040 + cmp r0, #3 + beq _081C93AA + cmp r0, #4 + bne _081C93B2 + movs r0, #7 + bl sub_081C75BC +_081C93AA: + movs r0, #1 + bl sub_081C75BC + b _081C9282 +_081C93B2: + movs r0, #0 + bl sub_081C75BC + b _081C9282 +_081C93BA: + bl sub_081C72F4 + cmp r0, #0 + bne _081C9408 + bl sub_081C9040 + cmp r0, #3 + beq _081C93D8 + cmp r0, #4 + bne _081C93E4 + movs r0, #7 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 +_081C93D8: + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 + b _081C93EE +_081C93E4: + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 +_081C93EE: + bl sub_081C99B8 + bl sub_081CA0D8 + b _081C9346 +_081C93F8: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9408 + bl sub_081C77B8 + cmp r0, #0 + beq _081C940C +_081C9408: + movs r0, #2 + b _081C940E +_081C940C: + movs r0, #4 +_081C940E: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C91BC + + thumb_func_start sub_081C9418 +sub_081C9418: @ 0x081C9418 + push {lr} + cmp r0, #0 + beq _081C9424 + cmp r0, #1 + beq _081C943A + b _081C944E +_081C9424: + bl sub_081CA1E8 + bl sub_081C9A24 + bl sub_081C9EC0 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + b _081C9450 +_081C943A: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C944A + bl sub_081C9F70 + cmp r0, #0 + beq _081C944E +_081C944A: + movs r0, #2 + b _081C9450 +_081C944E: + movs r0, #4 +_081C9450: + pop {r1} + bx r1 + thumb_func_end sub_081C9418 + + thumb_func_start sub_081C9454 +sub_081C9454: @ 0x081C9454 + push {lr} + cmp r0, #1 + beq _081C9488 + cmp r0, #1 + bgt _081C9464 + cmp r0, #0 + beq _081C946E + b _081C94E8 +_081C9464: + cmp r0, #2 + beq _081C94A6 + cmp r0, #3 + beq _081C94C0 + b _081C94E8 +_081C946E: + bl sub_081CA174 + bl sub_081C9A88 + movs r0, #0 + movs r1, #0 + bl sub_081C776C + movs r0, #5 + bl sub_080A306C + movs r0, #0 + b _081C94EA +_081C9488: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C94E0 + bl sub_081C77B8 + cmp r0, #0 + bne _081C94E0 + bl sub_081C9874 + movs r0, #1 + bl sub_081C75BC + movs r0, #0 + b _081C94EA +_081C94A6: + bl sub_081C99B8 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 + bl sub_081C9FC4 + bl sub_081C9EC0 + movs r0, #0 + b _081C94EA +_081C94C0: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C94E0 + bl sub_081C77B8 + cmp r0, #0 + bne _081C94E0 + bl sub_081CA048 + cmp r0, #0 + bne _081C94E0 + bl sub_081C9F70 + cmp r0, #0 + beq _081C94E4 +_081C94E0: + movs r0, #2 + b _081C94EA +_081C94E4: + bl sub_081CA184 +_081C94E8: + movs r0, #4 +_081C94EA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9454 + + thumb_func_start sub_081C94F0 +sub_081C94F0: @ 0x081C94F0 + push {lr} + cmp r0, #1 + beq _081C951E + cmp r0, #1 + bgt _081C9500 + cmp r0, #0 + beq _081C950A + b _081C957E +_081C9500: + cmp r0, #2 + beq _081C953C + cmp r0, #3 + beq _081C9556 + b _081C957E +_081C950A: + bl sub_081CA174 + bl sub_081C9A88 + movs r0, #1 + movs r1, #0 + bl sub_081C776C + movs r0, #0 + b _081C9580 +_081C951E: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9576 + bl sub_081C77B8 + cmp r0, #0 + bne _081C9576 + bl sub_081C9874 + movs r0, #0 + bl sub_081C75BC + movs r0, #0 + b _081C9580 +_081C953C: + bl sub_081C99B8 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 + bl sub_081CA010 + bl sub_081C9EC0 + movs r0, #0 + b _081C9580 +_081C9556: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9576 + bl sub_081C77B8 + cmp r0, #0 + bne _081C9576 + bl sub_081CA048 + cmp r0, #0 + bne _081C9576 + bl sub_081C9F70 + cmp r0, #0 + beq _081C957A +_081C9576: + movs r0, #2 + b _081C9580 +_081C957A: + bl sub_081CA184 +_081C957E: + movs r0, #4 +_081C9580: + pop {r1} + bx r1 + thumb_func_end sub_081C94F0 + + thumb_func_start sub_081C9584 +sub_081C9584: @ 0x081C9584 + push {lr} + cmp r0, #1 + beq _081C95B0 + cmp r0, #1 + bgt _081C9594 + cmp r0, #0 + beq _081C959E + b _081C95FC +_081C9594: + cmp r0, #2 + beq _081C95C6 + cmp r0, #3 + beq _081C95DC + b _081C95FC +_081C959E: + bl sub_081CA174 + bl sub_081C9A88 + movs r0, #5 + bl sub_080A306C + movs r0, #0 + b _081C95FE +_081C95B0: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C95F4 + movs r0, #7 + bl sub_081C75BC + bl sub_081C9874 + movs r0, #0 + b _081C95FE +_081C95C6: + bl sub_081C99B8 + movs r0, #7 + movs r1, #0 + movs r2, #0 + bl sub_081C7748 + bl sub_081C9EC0 + movs r0, #0 + b _081C95FE +_081C95DC: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C95F4 + bl sub_081C77B8 + cmp r0, #0 + bne _081C95F4 + bl sub_081CA048 + cmp r0, #0 + beq _081C95F8 +_081C95F4: + movs r0, #2 + b _081C95FE +_081C95F8: + bl sub_081CA184 +_081C95FC: + movs r0, #4 +_081C95FE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9584 + + thumb_func_start sub_081C9604 +sub_081C9604: @ 0x081C9604 + push {lr} + cmp r0, #1 + beq _081C9632 + cmp r0, #1 + bgt _081C9614 + cmp r0, #0 + beq _081C961E + b _081C966E +_081C9614: + cmp r0, #2 + beq _081C964A + cmp r0, #3 + beq _081C9656 + b _081C966E +_081C961E: + bl sub_081CA174 + bl sub_081C9A88 + movs r0, #7 + movs r1, #0 + bl sub_081C776C + movs r0, #0 + b _081C9670 +_081C9632: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9666 + bl sub_081C77B8 + cmp r0, #0 + bne _081C9666 + bl sub_081C9874 + movs r0, #0 + b _081C9670 +_081C964A: + bl sub_081C99B8 + bl sub_081C9EC0 + movs r0, #0 + b _081C9670 +_081C9656: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9666 + bl sub_081CA048 + cmp r0, #0 + beq _081C966A +_081C9666: + movs r0, #2 + b _081C9670 +_081C966A: + bl sub_081CA184 +_081C966E: + movs r0, #4 +_081C9670: + pop {r1} + bx r1 + thumb_func_end sub_081C9604 + + thumb_func_start sub_081C9674 +sub_081C9674: @ 0x081C9674 + push {lr} + cmp r0, #0 + beq _081C9680 + cmp r0, #1 + beq _081C968E + b _081C969C +_081C9680: + movs r0, #0x20 + bl sub_080A306C + bl sub_081C9F1C + movs r0, #0 + b _081C969E +_081C968E: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C969C + movs r0, #2 + b _081C969E +_081C969C: + movs r0, #4 +_081C969E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9674 + + thumb_func_start sub_081C96A4 +sub_081C96A4: @ 0x081C96A4 + push {lr} + cmp r0, #0 + beq _081C96B0 + cmp r0, #1 + beq _081C96BE + b _081C96CC +_081C96B0: + movs r0, #5 + bl sub_080A306C + bl sub_081C9EC0 + movs r0, #0 + b _081C96CE +_081C96BE: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081C96CC + movs r0, #2 + b _081C96CE +_081C96CC: + movs r0, #4 +_081C96CE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C96A4 + + thumb_func_start sub_081C96D4 +sub_081C96D4: @ 0x081C96D4 + push {lr} + cmp r0, #1 + beq _081C96FE + cmp r0, #1 + bgt _081C96E4 + cmp r0, #0 + beq _081C96EE + b _081C9768 +_081C96E4: + cmp r0, #2 + beq _081C9742 + cmp r0, #3 + beq _081C975C + b _081C9768 +_081C96EE: + bl sub_081C9070 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_081C7364 + movs r0, #0 + b _081C976A +_081C96FE: + bl sub_081C73A8 + cmp r0, #0 + bne _081C9764 + bl sub_081C7040 + bl sub_081CA174 + bl sub_081C9A88 + bl sub_081C9040 + cmp r0, #3 + beq _081C9726 + cmp r0, #4 + bne _081C9730 + movs r0, #7 + movs r1, #0 + bl sub_081C776C +_081C9726: + movs r0, #1 + movs r1, #0 + bl sub_081C776C + b _081C9738 +_081C9730: + movs r0, #0 + movs r1, #0 + bl sub_081C776C +_081C9738: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + b _081C976A +_081C9742: + bl sub_081C9AD0 + cmp r0, #0 + bne _081C9764 + bl sub_081C77B8 + cmp r0, #0 + bne _081C9764 + movs r0, #0 + bl sub_081C7280 + movs r0, #0 + b _081C976A +_081C975C: + bl sub_081C72F4 + cmp r0, #0 + beq _081C9768 +_081C9764: + movs r0, #2 + b _081C976A +_081C9768: + movs r0, #4 +_081C976A: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C96D4 + + thumb_func_start sub_081C9770 +sub_081C9770: @ 0x081C9770 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _081C9790 +_081C9776: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #1 + bls _081C9776 + ldr r0, _081C9794 + bl sub_081C711C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C9790: .4byte gUnknown_85F272C +_081C9794: .4byte gUnknown_85F273C + thumb_func_end sub_081C9770 + + thumb_func_start sub_081C9798 +sub_081C9798: @ 0x081C9798 + push {lr} + movs r0, #3 + bl sub_08008280 + movs r0, #1 + bl sub_08008280 + movs r0, #4 + bl sub_08008564 + movs r0, #5 + bl sub_08008564 + movs r0, #6 + bl sub_08008564 + movs r0, #7 + bl sub_08008564 + movs r0, #8 + bl sub_08008564 + movs r0, #3 + bl sub_08008564 + bl sub_081C9840 + bl sub_081C9E44 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9798 + + thumb_func_start sub_081C97D8 +sub_081C97D8: @ 0x081C97D8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #2 + bl sub_081C6DFC + movs r2, #0 + adds r0, #0x2c + mov r8, r0 +_081C97EA: + movs r4, #0 + lsls r0, r2, #2 + lsls r1, r2, #4 + adds r7, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #0x12 + movs r2, #0xa0 + lsls r2, r2, #0xe + adds r5, r0, r2 + mov r0, r8 + adds r6, r1, r0 +_081C9800: + ldr r0, _081C9838 + movs r1, #0x8c + asrs r2, r5, #0x10 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081C983C + adds r1, r1, r0 + stm r6!, {r1} + lsls r0, r4, #5 + strh r0, [r1, #0x24] + adds r4, #1 + cmp r4, #3 + ble _081C9800 + adds r2, r7, #0 + cmp r2, #5 + ble _081C97EA + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C9838: .4byte gUnknown_85F28B4 +_081C983C: .4byte gUnknown_20205AC + thumb_func_end sub_081C97D8 + + thumb_func_start sub_081C9840 +sub_081C9840: @ 0x081C9840 + push {r4, r5, r6, r7, lr} + movs r0, #2 + bl sub_081C6DFC + movs r1, #0 + adds r7, r0, #0 + adds r7, #0x2c +_081C984E: + lsls r0, r1, #4 + adds r6, r1, #1 + adds r4, r0, r7 + movs r5, #3 +_081C9856: + ldr r0, [r4] + bl sub_0800730C + ldm r4!, {r0} + bl sub_08006E00 + subs r5, #1 + cmp r5, #0 + bge _081C9856 + adds r1, r6, #0 + cmp r1, #5 + ble _081C984E + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081C9840 + + thumb_func_start sub_081C9874 +sub_081C9874: @ 0x081C9874 + push {lr} + bl sub_081C9040 + lsls r2, r0, #3 + subs r2, r2, r0 + lsls r2, r2, #2 + ldr r1, _081C9894 + adds r0, r2, r1 + subs r1, #4 + adds r2, r2, r1 + ldrh r1, [r2] + ldrh r2, [r2, #2] + bl sub_081C9898 + pop {r0} + bx r0 + .align 2, 0 +_081C9894: .4byte gUnknown_85F27AC + thumb_func_end sub_081C9874 + + thumb_func_start sub_081C9898 +sub_081C9898: @ 0x081C9898 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + adds r6, r0, #0 + str r1, [sp, #0x14] + str r2, [sp] + movs r0, #2 + bl sub_081C6DFC + mov sl, r0 + movs r0, #3 + bl sub_08008338 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] + movs r1, #0 +_081C98C0: + ldr r0, [r6] + cmp r0, #0 + beq _081C995C + movs r5, #0 + lsls r2, r1, #4 + mov r0, sl + adds r0, #0x2c + lsls r3, r1, #2 + mov sb, r3 + movs r4, #0x10 + add r4, sl + mov r8, r4 + adds r7, r6, #4 + str r7, [sp, #0xc] + ldr r3, [sp, #0x14] + ldr r4, [sp] + adds r3, r3, r4 + str r3, [sp, #8] + adds r1, #1 + str r1, [sp, #0x10] + adds r4, r2, r0 +_081C98EA: + ldr r3, [r4] + ldr r0, [r6] + ldrh r2, [r0] + ldr r7, [sp, #4] + adds r2, r2, r7 + lsls r0, r5, #3 + adds r2, r2, r0 + ldr r1, _081C9954 + adds r0, r1, #0 + ands r2, r0 + ldrh r0, [r3, #4] + ldr r7, _081C9958 + adds r1, r7, #0 + ands r0, r1 + orrs r0, r2 + strh r0, [r3, #4] + ldr r0, [r6] + ldrh r0, [r0, #2] + adds r0, #4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0800851C + ldr r3, [r4] + lsls r0, r0, #4 + ldrb r2, [r3, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #5] + ldr r2, [r4] + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4] + mov r1, sp + ldrh r1, [r1, #0x14] + strh r1, [r0, #0x22] + ldr r1, [r4] + movs r0, #0x8c + strh r0, [r1, #0x20] + ldm r4!, {r1} + lsls r0, r5, #5 + strh r0, [r1, #0x24] + adds r5, #1 + cmp r5, #3 + ble _081C98EA + mov r1, r8 + add r1, sb + movs r0, #1 + b _081C9998 + .align 2, 0 +_081C9954: .4byte 0x000003FF +_081C9958: .4byte 0xFFFFFC00 +_081C995C: + lsls r2, r1, #4 + mov r0, sl + adds r0, #0x2c + lsls r3, r1, #2 + mov sb, r3 + movs r4, #0x10 + add r4, sl + mov r8, r4 + adds r6, #4 + str r6, [sp, #0xc] + ldr r7, [sp, #0x14] + ldr r3, [sp] + adds r7, r7, r3 + str r7, [sp, #8] + adds r1, #1 + str r1, [sp, #0x10] + movs r3, #4 + adds r2, r2, r0 + movs r5, #3 +_081C9982: + ldm r2!, {r1} + adds r1, #0x3e + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + subs r5, #1 + cmp r5, #0 + bge _081C9982 + mov r1, r8 + add r1, sb + movs r0, #0 +_081C9998: + str r0, [r1] + ldr r6, [sp, #0xc] + ldr r4, [sp, #8] + str r4, [sp, #0x14] + ldr r1, [sp, #0x10] + cmp r1, #5 + ble _081C98C0 + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9898 + + thumb_func_start sub_081C99B8 +sub_081C99B8: @ 0x081C99B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #2 + bl sub_081C6DFC + adds r6, r0, #0 + bl sub_081C9050 + mov r8, r0 + movs r7, #0 + movs r5, #0 + adds r4, r6, #0 + adds r4, #0x2c +_081C99D4: + lsls r0, r5, #2 + adds r1, r6, #0 + adds r1, #0x10 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + beq _081C9A08 + adds r0, r7, #0 + adds r7, #1 + cmp r0, r8 + bne _081C99F0 + movs r2, #0x82 + strb r5, [r6, #0xb] + b _081C99F2 +_081C99F0: + movs r2, #0x8c +_081C99F2: + adds r0, r4, #0 + movs r1, #0x80 + lsls r1, r1, #1 + movs r3, #0xc + bl sub_081C9B08 + adds r0, r4, #0 + movs r1, #0 + bl sub_081C9BF4 + b _081C9A10 +_081C9A08: + adds r0, r4, #0 + movs r1, #1 + bl sub_081C9BF4 +_081C9A10: + adds r4, #0x10 + adds r5, #1 + cmp r5, #5 + ble _081C99D4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C99B8 + + thumb_func_start sub_081C9A24 +sub_081C9A24: @ 0x081C9A24 + push {r4, r5, lr} + movs r0, #2 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C9050 + adds r3, r0, #0 + movs r2, #0 + movs r5, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _081C9A44 + cmp r5, r3 + beq _081C9A5E +_081C9A42: + adds r5, #1 +_081C9A44: + adds r2, #1 + cmp r2, #5 + bgt _081C9A5E + lsls r0, r2, #2 + adds r1, r4, #0 + adds r1, #0x10 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + beq _081C9A44 + cmp r5, r3 + bne _081C9A42 + adds r5, r2, #0 +_081C9A5E: + ldrb r0, [r4, #0xb] + lsls r0, r0, #4 + adds r0, #0x2c + adds r0, r4, r0 + movs r1, #0x82 + movs r2, #0x8c + movs r3, #4 + bl sub_081C9B08 + lsls r0, r5, #4 + adds r0, #0x2c + adds r0, r4, r0 + movs r1, #0x8c + movs r2, #0x82 + movs r3, #4 + bl sub_081C9B08 + strb r5, [r4, #0xb] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081C9A24 + + thumb_func_start sub_081C9A88 +sub_081C9A88: @ 0x081C9A88 + push {r4, r5, r6, lr} + movs r0, #2 + bl sub_081C6DFC + adds r6, r0, #0 + movs r5, #0 + adds r4, r6, #0 + adds r4, #0x2c +_081C9A98: + lsls r0, r5, #2 + adds r1, r6, #0 + adds r1, #0x10 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + beq _081C9AC2 + ldrb r0, [r6, #0xb] + cmp r0, r5 + beq _081C9ABC + adds r0, r4, #0 + movs r1, #0x8c + movs r2, #0x80 + lsls r2, r2, #1 + movs r3, #8 + bl sub_081C9B08 + b _081C9AC2 +_081C9ABC: + adds r0, r4, #0 + bl sub_081C9B60 +_081C9AC2: + adds r4, #0x10 + adds r5, #1 + cmp r5, #5 + ble _081C9A98 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081C9A88 + + thumb_func_start sub_081C9AD0 +sub_081C9AD0: @ 0x081C9AD0 + push {r4, lr} + movs r0, #2 + bl sub_081C6DFC + adds r3, r0, #0 + movs r2, #0 + ldr r4, _081C9AFC + adds r1, r3, #0 + adds r1, #0x2c +_081C9AE2: + ldr r0, [r1] + ldr r0, [r0, #0x1c] + cmp r0, r4 + bne _081C9B00 + adds r1, #0x10 + adds r2, #1 + cmp r2, #5 + ble _081C9AE2 + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _081C9B00 + movs r0, #0 + b _081C9B02 + .align 2, 0 +_081C9AFC: .4byte sub_08007140 +_081C9B00: + movs r0, #1 +_081C9B02: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081C9AD0 + + thumb_func_start sub_081C9B08 +sub_081C9B08: @ 0x081C9B08 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov sb, r2 + adds r6, r3, #0 + ldr r0, _081C9B5C + mov r8, r0 + subs r0, r2, r5 + lsls r0, r0, #4 + adds r1, r6, #0 + bl __divsi3 + adds r3, r0, #0 + movs r1, #3 + lsls r2, r5, #4 +_081C9B2C: + ldr r0, [r4] + strh r5, [r0, #0x20] + ldr r0, [r4] + strh r6, [r0, #0x2e] + ldr r0, [r4] + strh r3, [r0, #0x30] + ldr r0, [r4] + strh r2, [r0, #0x32] + ldr r0, [r4] + mov r7, sb + strh r7, [r0, #0x3c] + ldm r4!, {r0} + mov r7, r8 + str r7, [r0, #0x1c] + subs r1, #1 + cmp r1, #0 + bge _081C9B2C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C9B5C: .4byte sub_081C9C20 + thumb_func_end sub_081C9B08 + + thumb_func_start sub_081C9B60 +sub_081C9B60: @ 0x081C9B60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r0, #2 + bl sub_081C6DFC + adds r7, r0, #0 + movs r5, #0 + mov r8, r5 +_081C9B74: + ldr r2, [r4] + ldrb r1, [r2, #1] + movs r3, #0xd + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r2, #1] + ldr r2, [r4] + ldrb r0, [r2, #1] + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #1] + ldr r1, [r4] + ldr r0, _081C9BE8 + str r0, [r1, #0x1c] + movs r6, #8 + strh r6, [r1, #0x2e] + ldr r0, [r4] + mov r1, r8 + strh r1, [r0, #0x30] + ldr r0, [r4] + strh r5, [r0, #0x3c] + ldr r0, [r4] + bl sub_08008140 + ldm r4!, {r0} + movs r1, #0 + bl sub_08007F70 + adds r5, #1 + cmp r5, #3 + ble _081C9B74 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldr r0, _081C9BEC + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081C9BF0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r6, [r1, #8] + ldrb r0, [r7, #0xc] + adds r0, #1 + strb r0, [r7, #0xc] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081C9BE8: .4byte sub_081C9C58 +_081C9BEC: .4byte sub_081C9D2C +_081C9BF0: .4byte gUnknown_3005B60 + thumb_func_end sub_081C9B60 + + thumb_func_start sub_081C9BF4 +sub_081C9BF4: @ 0x081C9BF4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + ands r1, r0 + lsls r4, r1, #2 + movs r6, #5 + rsbs r6, r6, #0 + movs r3, #3 +_081C9C04: + ldm r5!, {r0} + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r6, #0 + ands r1, r2 + orrs r1, r4 + strb r1, [r0] + subs r3, #1 + cmp r3, #0 + bge _081C9C04 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9BF4 + + thumb_func_start sub_081C9C20 +sub_081C9C20: @ 0x081C9C20 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + subs r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _081C9C46 + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + b _081C9C4E +_081C9C46: + ldrh r0, [r2, #0x3c] + strh r0, [r2, #0x20] + ldr r0, _081C9C54 + str r0, [r2, #0x1c] +_081C9C4E: + pop {r0} + bx r0 + .align 2, 0 +_081C9C54: .4byte sub_08007140 + thumb_func_end sub_081C9C20 + + thumb_func_start sub_081C9C58 +sub_081C9C58: @ 0x081C9C58 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _081C9D20 + movs r0, #0x30 + ldrsh r5, [r4, r0] + cmp r5, #0 + bne _081C9C8E + adds r0, r4, #0 + movs r1, #1 + bl sub_08007F70 + ldrh r0, [r4, #0x30] + adds r0, #1 + strh r0, [r4, #0x30] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x24] + ldrh r1, [r4, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x20] + strh r5, [r4, #0x24] + b _081C9D24 +_081C9C8E: + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r2, #0x32 + ldrsh r0, [r4, r2] + asrs r1, r0, #3 + adds r0, r1, #0 + subs r0, #0x20 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r1, r0, #1 + movs r2, #0x3c + ldrsh r0, [r4, r2] + cmp r0, #1 + beq _081C9CC4 + cmp r0, #1 + bgt _081C9CB6 + cmp r0, #0 + beq _081C9CC0 + b _081C9CD2 +_081C9CB6: + cmp r0, #2 + beq _081C9CC8 + cmp r0, #3 + beq _081C9CCC + b _081C9CD2 +_081C9CC0: + rsbs r1, r1, #0 + b _081C9CCC +_081C9CC4: + rsbs r0, r1, #0 + b _081C9CD0 +_081C9CC8: + strh r1, [r4, #0x24] + b _081C9CD2 +_081C9CCC: + lsls r0, r1, #1 + adds r0, r0, r1 +_081C9CD0: + strh r0, [r4, #0x24] +_081C9CD2: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081C9D24 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #3] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + bl sub_08008100 + ldrb r1, [r4, #1] + lsrs r1, r1, #6 + ldrb r2, [r4, #3] + lsrs r2, r2, #6 + adds r0, r4, #0 + movs r3, #0 + bl sub_08006F70 + ldrb r1, [r4, #1] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0xd + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4, #1] + ldr r0, _081C9D1C + str r0, [r4, #0x1c] + b _081C9D24 + .align 2, 0 +_081C9D1C: .4byte sub_08007140 +_081C9D20: + subs r0, r1, #1 + strh r0, [r4, #0x2e] +_081C9D24: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9C58 + + thumb_func_start sub_081C9D2C +sub_081C9D2C: @ 0x081C9D2C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081C9D54 + adds r4, r0, r1 + ldrh r0, [r4] + movs r1, #0 + ldrsh r2, [r4, r1] + cmp r2, #0 + bne _081C9DE0 + movs r0, #2 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _081C9D58 + cmp r1, #1 + beq _081C9D78 + b _081C9DE4 + .align 2, 0 +_081C9D54: .4byte gUnknown_3005B68 +_081C9D58: + movs r0, #0x10 + strh r0, [r4, #4] + strh r2, [r4, #6] + movs r1, #0xfc + lsls r1, r1, #6 + movs r0, #0x50 + bl sub_08001144 + movs r0, #0x52 + movs r1, #0x10 + bl sub_08001144 + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + b _081C9DE4 +_081C9D78: + ldrh r0, [r4, #8] + ands r1, r0 + cmp r1, #0 + beq _081C9D90 + ldrh r0, [r4, #4] + subs r0, #3 + strh r0, [r4, #4] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _081C9DA2 + strh r2, [r4, #4] + b _081C9DA2 +_081C9D90: + ldrh r0, [r4, #6] + adds r0, #3 + strh r0, [r4, #6] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x10 + ble _081C9DA2 + movs r0, #0x10 + strh r0, [r4, #6] +_081C9DA2: + ldrh r1, [r4, #6] + lsls r1, r1, #8 + ldrh r0, [r4, #4] + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xc + bne _081C9DE4 + movs r0, #2 + bl sub_081C6DFC + ldrb r1, [r0, #0xc] + subs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + adds r0, r5, #0 + bl sub_080A8964 + b _081C9DE4 +_081C9DE0: + subs r0, #1 + strh r0, [r4] +_081C9DE4: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9D2C + + thumb_func_start sub_081C9DEC +sub_081C9DEC: @ 0x081C9DEC + push {r4, lr} + movs r0, #2 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C9E24 + movs r1, #0x10 + movs r2, #0x60 + movs r3, #4 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081C9E28 + adds r1, r1, r0 + str r1, [r4, #0x28] + bl sub_081C9080 + cmp r0, #0 + beq _081C9E30 + ldr r1, [r4, #0x28] + ldr r0, _081C9E2C + str r0, [r1, #0x1c] + b _081C9E3C + .align 2, 0 +_081C9E24: .4byte gUnknown_85F28D4 +_081C9E28: .4byte gUnknown_20205AC +_081C9E2C: .4byte sub_081C9E58 +_081C9E30: + ldr r0, [r4, #0x28] + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_081C9E3C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9DEC + + thumb_func_start sub_081C9E44 +sub_081C9E44: @ 0x081C9E44 + push {lr} + movs r0, #2 + bl sub_081C6DFC + ldr r0, [r0, #0x28] + bl sub_08006E00 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9E44 + + thumb_func_start sub_081C9E58 +sub_081C9E58: @ 0x081C9E58 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #8 + ble _081C9E86 + movs r0, #0 + strh r0, [r3, #0x2e] + adds r3, #0x3e + ldrb r2, [r3] + lsls r0, r2, #0x1d + lsrs r0, r0, #0x1f + movs r1, #1 + eors r1, r0 + lsls r1, r1, #2 + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_081C9E86: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9E58 + + thumb_func_start sub_081C9E8C +sub_081C9E8C: @ 0x081C9E8C + push {r4, lr} + movs r0, #2 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C9EBC + bl sub_08003250 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + ldrb r0, [r4, #8] + movs r1, #0x66 + bl sub_08003B18 + ldrb r0, [r4, #8] + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C9EBC: .4byte gUnknown_85F2834 + thumb_func_end sub_081C9E8C + + thumb_func_start sub_081C9EC0 +sub_081C9EC0: @ 0x081C9EC0 + push {r4, r5, r6, lr} + sub sp, #0xc + movs r0, #2 + bl sub_081C6DFC + adds r5, r0, #0 + bl sub_081C9060 + ldr r1, _081C9F14 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + adds r1, r6, #0 + bl sub_08005DAC + adds r4, r0, #0 + ldrb r0, [r5, #8] + movs r1, #0x66 + bl sub_08003B18 + ldrb r0, [r5, #8] + movs r2, #0xb0 + subs r2, r2, r4 + lsrs r2, r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _081C9F18 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C9F14: .4byte gUnknown_85F283C +_081C9F18: .4byte gUnknown_85F2874 + thumb_func_end sub_081C9EC0 + + thumb_func_start sub_081C9F1C +sub_081C9F1C: @ 0x081C9F1C + push {r4, r5, r6, lr} + sub sp, #0xc + movs r0, #2 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r6, _081C9F68 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + adds r1, r6, #0 + bl sub_08005DAC + adds r4, r0, #0 + ldrb r0, [r5, #8] + movs r1, #0x66 + bl sub_08003B18 + ldrb r0, [r5, #8] + movs r2, #0xb0 + subs r2, r2, r4 + lsrs r2, r2, #1 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + ldr r1, _081C9F6C + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + movs r3, #2 + bl sub_08199AFC + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081C9F68: .4byte gUnknown_85CB5DC +_081C9F6C: .4byte gUnknown_85F2877 + thumb_func_end sub_081C9F1C + + thumb_func_start sub_081C9F70 +sub_081C9F70: @ 0x081C9F70 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081C9F70 + + thumb_func_start sub_081C9F80 +sub_081C9F80: @ 0x081C9F80 + push {r4, lr} + movs r0, #2 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, _081C9F9C + movs r1, #2 + bl sub_080A8878 + strb r0, [r4, #0xa] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081C9F9C: .4byte sub_081C9FB4 + thumb_func_end sub_081C9F80 + + thumb_func_start sub_081C9FA0 +sub_081C9FA0: @ 0x081C9FA0 + push {lr} + movs r0, #2 + bl sub_081C6DFC + ldrb r0, [r0, #0xa] + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081C9FA0 + + thumb_func_start sub_081C9FB4 +sub_081C9FB4: @ 0x081C9FB4 + push {lr} + movs r0, #3 + movs r1, #0x80 + movs r2, #1 + bl sub_08001D1C + pop {r0} + bx r0 + thumb_func_end sub_081C9FB4 + + thumb_func_start sub_081C9FC4 +sub_081C9FC4: @ 0x081C9FC4 + push {r4, r5, lr} + ldr r0, _081C9FF4 + movs r1, #3 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _081C9FF8 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_080A8B44 + adds r5, #0xc + adds r0, r4, #0 + movs r1, #3 + adds r2, r5, #0 + bl sub_080A8B44 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081C9FF4: .4byte sub_081CA05C +_081C9FF8: .4byte gUnknown_85F163E + thumb_func_end sub_081C9FC4 + + thumb_func_start sub_081C9FFC +sub_081C9FFC: @ 0x081C9FFC + push {lr} + ldr r0, _081CA00C + movs r1, #0x31 + movs r2, #4 + bl sub_081C7104 + pop {r0} + bx r0 + .align 2, 0 +_081CA00C: .4byte gUnknown_85F164A + thumb_func_end sub_081C9FFC + + thumb_func_start sub_081CA010 +sub_081CA010: @ 0x081CA010 + push {r4, r5, lr} + ldr r0, _081CA040 + movs r1, #3 + bl sub_080A8878 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _081CA044 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_080A8B44 + subs r5, #0xc + adds r0, r4, #0 + movs r1, #3 + adds r2, r5, #0 + bl sub_080A8B44 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CA040: .4byte sub_081CA05C +_081CA044: .4byte gUnknown_85F164A + thumb_func_end sub_081CA010 + + thumb_func_start sub_081CA048 +sub_081CA048: @ 0x081CA048 + push {lr} + ldr r0, _081CA058 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081CA058: .4byte sub_081CA05C + thumb_func_end sub_081CA048 + + thumb_func_start sub_081CA05C +sub_081CA05C: @ 0x081CA05C + push {r4, r5, r6, lr} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r4, r6, #2 + adds r4, r4, r6 + lsls r4, r4, #3 + ldr r0, _081CA0BC + adds r4, r4, r0 + adds r0, r6, #0 + movs r1, #1 + bl sub_080A8B7C + adds r5, r0, #0 + adds r0, r6, #0 + movs r1, #3 + bl sub_080A8B7C + adds r1, r0, #0 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + add r0, sp, #8 + str r0, [sp, #4] + adds r0, r5, #0 + movs r2, #2 + movs r3, #0xc + bl sub_081C717C + add r0, sp, #8 + movs r1, #0x31 + movs r2, #4 + bl sub_080A1200 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0xc + bne _081CA0B4 + adds r0, r6, #0 + bl sub_080A8964 +_081CA0B4: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CA0BC: .4byte gUnknown_3005B68 + thumb_func_end sub_081CA05C + + thumb_func_start sub_081CA0C0 +sub_081CA0C0: @ 0x081CA0C0 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CA0C0 + + thumb_func_start sub_081CA0D8 +sub_081CA0D8: @ 0x081CA0D8 + push {lr} + movs r0, #0x50 + movs r1, #0x90 + bl sub_08001144 + movs r0, #0x54 + movs r1, #0 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001200 + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001200 + movs r0, #0x4a + movs r1, #0x1f + bl sub_08001200 + movs r0, #0x44 + movs r1, #0xa0 + bl sub_08001200 + bl sub_080B9710 + bl sub_081CA1E8 + ldr r2, _081CA134 + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B9790 + ldr r0, _081CA138 + bl sub_081C6DC0 + ldr r0, _081CA13C + movs r1, #3 + bl sub_080A8878 + pop {r0} + bx r0 + .align 2, 0 +_081CA134: .4byte gUnknown_85F28EC +_081CA138: .4byte sub_081CA0C0 +_081CA13C: .4byte sub_081CA198 + thumb_func_end sub_081CA0D8 + + thumb_func_start sub_081CA140 +sub_081CA140: @ 0x081CA140 + push {lr} + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + bl sub_080B9710 + ldr r0, _081CA170 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + bl sub_081C6DCC + pop {r0} + bx r0 + .align 2, 0 +_081CA170: .4byte sub_081CA198 + thumb_func_end sub_081CA140 + + thumb_func_start sub_081CA174 +sub_081CA174: @ 0x081CA174 + push {lr} + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CA174 + + thumb_func_start sub_081CA184 +sub_081CA184: @ 0x081CA184 + push {lr} + bl sub_081CA1E8 + movs r0, #0x50 + movs r1, #0x90 + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CA184 + + thumb_func_start sub_081CA198 +sub_081CA198: @ 0x081CA198 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081CA1E0 + adds r2, r1, r0 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _081CA1DC + movs r0, #0 + strh r0, [r2] + ldrh r0, [r2, #2] + adds r0, #3 + movs r1, #0x7f + ands r0, r1 + strh r0, [r2, #2] + ldr r1, _081CA1E4 + movs r3, #2 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + lsls r1, r1, #0x10 + asrs r1, r1, #0x15 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x54 + bl sub_08001144 +_081CA1DC: + pop {r0} + bx r0 + .align 2, 0 +_081CA1E0: .4byte gUnknown_3005B68 +_081CA1E4: .4byte gUnknown_82FA8CC + thumb_func_end sub_081CA198 + + thumb_func_start sub_081CA1E8 +sub_081CA1E8: @ 0x081CA1E8 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + sub sp, #8 + bl sub_081C9040 + adds r4, r0, #0 + bl sub_081C9050 + ldr r2, _081CA274 + lsls r1, r4, #3 + subs r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r2, [r1, #2] + adds r4, r2, #0 + muls r4, r0, r4 + ldrh r1, [r1] + adds r4, r4, r1 + subs r4, #8 + mov r0, sp + movs r6, #0 + strh r6, [r0] + ldr r5, _081CA278 + ldr r0, _081CA27C + mov r8, r0 + mov r0, sp + adds r1, r5, #0 + mov r2, r8 + bl CpuSet + mov r0, sp + adds r0, #2 + strh r6, [r0] + movs r1, #0xf0 + lsls r1, r1, #3 + adds r1, r1, r5 + mov sb, r1 + mov r2, r8 + bl CpuSet + add r0, sp, #4 + ldr r1, _081CA280 + adds r6, r1, #0 + strh r6, [r0] + lsls r4, r4, #1 + adds r5, r4, r5 + ldr r1, _081CA284 + mov r8, r1 + adds r1, r5, #0 + mov r2, r8 + bl CpuSet + mov r0, sp + adds r0, #6 + strh r6, [r0] + add r4, sb + adds r1, r4, #0 + mov r2, r8 + bl CpuSet + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CA274: .4byte gUnknown_85F27A8 +_081CA278: .4byte gUnknown_20388C8 +_081CA27C: .4byte 0x010000A0 +_081CA280: .4byte 0x000072F0 +_081CA284: .4byte 0x01000010 + thumb_func_end sub_081CA1E8 + + thumb_func_start sub_081CA288 +sub_081CA288: @ 0x081CA288 + push {lr} + bl sub_081CA174 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CA288 + + thumb_func_start sub_081CA294 +sub_081CA294: @ 0x081CA294 + push {r4, lr} + movs r1, #0xd4 + lsls r1, r1, #1 + movs r0, #5 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CA2C8 + ldr r0, _081CA2C0 + str r0, [r4, #0x18] + movs r0, #0 + strh r0, [r4, #8] + str r0, [r4, #0x10] + ldr r0, _081CA2C4 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #0x14] + movs r0, #1 + b _081CA2CA + .align 2, 0 +_081CA2C0: .4byte sub_081CA2F0 +_081CA2C4: .4byte sub_081CA4CC +_081CA2C8: + movs r0, #0 +_081CA2CA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CA294 + + thumb_func_start sub_081CA2D0 +sub_081CA2D0: @ 0x081CA2D0 + push {lr} + movs r0, #5 + bl sub_081C6DFC + ldr r1, [r0, #0x18] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA2D0 + + thumb_func_start sub_081CA2E4 +sub_081CA2E4: @ 0x081CA2E4 + push {lr} + movs r0, #5 + bl sub_081C6E10 + pop {r0} + bx r0 + thumb_func_end sub_081CA2E4 + + thumb_func_start sub_081CA2F0 +sub_081CA2F0: @ 0x081CA2F0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _081CA304 + ldrh r1, [r3, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CA308 + movs r0, #2 + b _081CA3A0 + .align 2, 0 +_081CA304: .4byte gUnknown_3002360 +_081CA308: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CA314 + movs r0, #1 + b _081CA3A0 +_081CA314: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081CA320 + movs r0, #4 + b _081CA3A0 +_081CA320: + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _081CA330 + movs r0, #3 + b _081CA3A0 +_081CA330: + ldrh r1, [r3, #0x2e] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _081CA37C + ldr r0, _081CA364 + str r0, [r4, #0x18] + strh r2, [r4] + bl sub_081C7F04 + lsls r0, r0, #2 + adds r1, r4, r0 + ldrb r0, [r1, #0x1c] + cmp r0, #0 + beq _081CA35A + ldrh r0, [r1, #0x1e] + bl sub_081D0F04 + cmp r0, #0 + beq _081CA36C +_081CA35A: + ldr r0, _081CA368 + str r0, [r4, #4] + movs r0, #2 + strh r0, [r4, #2] + b _081CA372 + .align 2, 0 +_081CA364: .4byte sub_081CA3B0 +_081CA368: .4byte gUnknown_85F3E96 +_081CA36C: + ldr r0, _081CA378 + str r0, [r4, #4] + strh r5, [r4, #2] +_081CA372: + movs r0, #5 + b _081CA3A0 + .align 2, 0 +_081CA378: .4byte gUnknown_85F3E94 +_081CA37C: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081CA39E + bl sub_081C6E3C + cmp r0, #1 + beq _081CA398 + ldr r0, _081CA394 + str r0, [r4, #0x18] + movs r0, #0xf + b _081CA3A0 + .align 2, 0 +_081CA394: .4byte sub_081CA3A8 +_081CA398: + movs r0, #0x20 + bl sub_080A306C +_081CA39E: + movs r0, #0 +_081CA3A0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA2F0 + + thumb_func_start sub_081CA3A8 +sub_081CA3A8: @ 0x081CA3A8 + ldr r0, _081CA3AC + bx lr + .align 2, 0 +_081CA3AC: .4byte 0x000186A4 + thumb_func_end sub_081CA3A8 + + thumb_func_start sub_081CA3B0 +sub_081CA3B0: @ 0x081CA3B0 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _081CA3CC + ldrh r1, [r2, #0x2e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CA3D0 + ldrh r0, [r4] + cmp r0, #0 + beq _081CA3D0 + subs r0, #1 + b _081CA3E4 + .align 2, 0 +_081CA3CC: .4byte gUnknown_3002360 +_081CA3D0: + ldrh r1, [r2, #0x2e] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CA3EA + ldrh r0, [r4] + ldrh r1, [r4, #2] + cmp r0, r1 + bhs _081CA3EA + adds r0, #1 +_081CA3E4: + strh r0, [r4] + movs r0, #6 + b _081CA458 +_081CA3EA: + ldrh r1, [r2, #0x2e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081CA444 + ldrh r1, [r4] + ldr r0, [r4, #4] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081CA438 + cmp r0, #1 + bgt _081CA40A + cmp r0, #0 + beq _081CA410 + b _081CA444 +_081CA40A: + cmp r0, #2 + bne _081CA444 + b _081CA452 +_081CA410: + bl sub_081C6E3C + cmp r0, #1 + bne _081CA41E + movs r0, #2 + bl sub_081C6E48 +_081CA41E: + ldr r0, _081CA430 + str r0, [r4, #0x18] + bl sub_081CA974 + cmp r0, #0 + beq _081CA434 + movs r0, #9 + b _081CA458 + .align 2, 0 +_081CA430: .4byte sub_081CA4A4 +_081CA434: + movs r0, #8 + b _081CA458 +_081CA438: + ldr r0, _081CA440 + str r0, [r4, #0x18] + movs r0, #0xb + b _081CA458 + .align 2, 0 +_081CA440: .4byte sub_081CA464 +_081CA444: + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081CA452 + movs r0, #0 + b _081CA458 +_081CA452: + ldr r0, _081CA460 + str r0, [r4, #0x18] + movs r0, #7 +_081CA458: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CA460: .4byte sub_081CA2F0 + thumb_func_end sub_081CA3B0 + + thumb_func_start sub_081CA464 +sub_081CA464: @ 0x081CA464 + push {lr} + adds r3, r0, #0 + ldr r2, _081CA478 + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CA47C + movs r0, #0xc + b _081CA49C + .align 2, 0 +_081CA478: .4byte gUnknown_3002360 +_081CA47C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CA488 + movs r0, #0xd + b _081CA49C +_081CA488: + ldrh r1, [r2, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081CA496 + movs r0, #0 + b _081CA49C +_081CA496: + ldr r0, _081CA4A0 + str r0, [r3, #0x18] + movs r0, #0xe +_081CA49C: + pop {r1} + bx r1 + .align 2, 0 +_081CA4A0: .4byte sub_081CA2F0 + thumb_func_end sub_081CA464 + + thumb_func_start sub_081CA4A4 +sub_081CA4A4: @ 0x081CA4A4 + push {lr} + adds r2, r0, #0 + ldr r0, _081CA4B8 + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081CA4BC + movs r0, #0 + b _081CA4C2 + .align 2, 0 +_081CA4B8: .4byte gUnknown_3002360 +_081CA4BC: + ldr r0, _081CA4C8 + str r0, [r2, #0x18] + movs r0, #0xa +_081CA4C2: + pop {r1} + bx r1 + .align 2, 0 +_081CA4C8: .4byte sub_081CA2F0 + thumb_func_end sub_081CA4A4 + + thumb_func_start sub_081CA4CC +sub_081CA4CC: @ 0x081CA4CC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #5 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #1 + beq _081CA4F8 + cmp r5, #1 + bgt _081CA4E6 + cmp r5, #0 + beq _081CA4F0 + b _081CA5AC +_081CA4E6: + cmp r5, #2 + beq _081CA548 + cmp r5, #3 + beq _081CA5A8 + b _081CA5AC +_081CA4F0: + strh r5, [r4, #8] + strh r5, [r4, #0xa] +_081CA4F4: + movs r0, #1 + b _081CA5AE +_081CA4F8: + movs r6, #0 + ldrh r5, [r4, #8] +_081CA4FC: + adds r0, r5, #0 + bl sub_081D0D10 + cmp r0, #0 + beq _081CA52C + ldrh r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r4, r0 + strh r5, [r0, #0x1e] + ldrh r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r4, r0 + movs r1, #1 + strb r1, [r0, #0x1c] + adds r0, r5, #0 + bl sub_081D0DF8 + ldrh r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r4, r1 + strb r0, [r1, #0x1d] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] +_081CA52C: + ldrh r0, [r4, #8] + adds r1, r0, #1 + movs r2, #0 + strh r1, [r4, #8] + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x14 + bhi _081CA5A2 + adds r6, #1 + adds r5, #1 + cmp r6, #0x1d + ble _081CA4FC + movs r0, #3 + b _081CA5AE +_081CA548: + movs r6, #0 + ldrh r5, [r4, #8] + movs r7, #0 +_081CA54E: + ldrh r0, [r4, #8] + bl sub_081D12F4 + cmp r0, #0 + bne _081CA588 + ldrh r0, [r4, #8] + bl sub_081CA5B4 + cmp r0, #0 + beq _081CA588 + ldrh r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r4, r0 + ldrh r1, [r4, #8] + strh r1, [r0, #0x1e] + ldrh r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r4, r0 + strb r7, [r0, #0x1c] + adds r0, r5, #0 + bl sub_081CA86C + ldrh r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r4, r1 + strb r0, [r1, #0x1d] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] +_081CA588: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4d + bhi _081CA4F4 + adds r6, #1 + adds r5, #1 + cmp r6, #0x1d + ble _081CA54E + movs r0, #3 + b _081CA5AE +_081CA5A2: + strh r1, [r4, #0xc] + strh r2, [r4, #8] + b _081CA4F4 +_081CA5A8: + movs r0, #1 + str r0, [r4, #0x10] +_081CA5AC: + movs r0, #4 +_081CA5AE: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081CA4CC + + thumb_func_start sub_081CA5B4 +sub_081CA5B4: @ 0x081CA5B4 + push {lr} + cmp r0, #0x4d + ble _081CA5BE + movs r0, #0 + b _081CA5D0 +_081CA5BE: + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_081CA5D0: + pop {r1} + bx r1 + thumb_func_end sub_081CA5B4 + + thumb_func_start sub_081CA5D4 +sub_081CA5D4: @ 0x081CA5D4 + push {lr} + movs r0, #5 + bl sub_081C6DFC + ldr r0, [r0, #0x10] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA5D4 + + thumb_func_start sub_081CA5E4 +sub_081CA5E4: @ 0x081CA5E4 + push {lr} + movs r0, #5 + bl sub_081C6DFC + ldrh r0, [r0, #0xa] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA5E4 + + thumb_func_start sub_081CA5F4 +sub_081CA5F4: @ 0x081CA5F4 + push {lr} + movs r0, #5 + bl sub_081C6DFC + ldrh r0, [r0, #0xc] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA5F4 + + thumb_func_start sub_081CA604 +sub_081CA604: @ 0x081CA604 + push {lr} + movs r0, #5 + bl sub_081C6DFC + adds r1, r0, #0 + ldrh r0, [r1, #0xa] + ldrh r1, [r1, #0xc] + subs r0, r0, r1 + pop {r1} + bx r1 + thumb_func_end sub_081CA604 + + thumb_func_start sub_081CA618 +sub_081CA618: @ 0x081CA618 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_081C6DFC + adds r1, r0, #0 + ldrh r0, [r1, #0xc] + adds r4, r4, r0 + ldrh r0, [r1, #0xa] + cmp r4, r0 + bge _081CA636 + lsls r0, r4, #2 + adds r0, r1, r0 + ldrh r0, [r0, #0x1e] + b _081CA638 +_081CA636: + movs r0, #0x4e +_081CA638: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA618 + + thumb_func_start sub_081CA640 +sub_081CA640: @ 0x081CA640 + push {lr} + movs r0, #5 + bl sub_081C6DFC + adds r0, #0x1c + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA640 + + thumb_func_start sub_081CA650 +sub_081CA650: @ 0x081CA650 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_081C6DFC + lsls r4, r4, #2 + adds r0, r0, r4 + ldrb r0, [r0, #0x1d] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA650 + + thumb_func_start sub_081CA668 +sub_081CA668: @ 0x081CA668 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_081C6DFC + lsls r1, r4, #2 + adds r1, r0, r1 + ldrb r0, [r1, #0x1c] + cmp r0, #0 + bne _081CA680 + ldrh r4, [r1, #0x1e] + b _081CA688 +_081CA680: + ldrh r0, [r1, #0x1e] + bl sub_081D0F70 + adds r4, r0, #0 +_081CA688: + cmp r4, #0x4e + beq _081CA6A8 + ldr r0, _081CA6A0 + ldr r0, [r0] + ldr r1, _081CA6A4 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + b _081CA6AA + .align 2, 0 +_081CA6A0: .4byte gUnknown_3005AEC +_081CA6A4: .4byte 0x000009CA +_081CA6A8: + movs r0, #0 +_081CA6AA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CA668 + + thumb_func_start sub_081CA6B0 +sub_081CA6B0: @ 0x081CA6B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_081C6DFC + lsls r1, r4, #2 + adds r1, r0, r1 + ldrb r0, [r1, #0x1c] + cmp r0, #0 + bne _081CA6DC + ldrh r0, [r1, #0x1e] + bl sub_081D0CD8 + adds r4, r0, #0 + ldr r1, _081CA6D8 + lsls r0, r4, #5 + adds r0, r0, r1 + ldrb r0, [r0, #3] + b _081CA710 + .align 2, 0 +_081CA6D8: .4byte gUnknown_82E383C +_081CA6DC: + ldrh r5, [r1, #0x1e] + adds r0, r5, #0 + bl sub_081D0F70 + adds r4, r0, #0 + cmp r4, #0x4e + bne _081CA700 + adds r0, r5, #0 + bl sub_081D12CC + adds r4, r0, #0 + ldr r0, _081CA6FC + adds r0, r4, r0 + ldrb r0, [r0] + b _081CA710 + .align 2, 0 +_081CA6FC: .4byte gUnknown_82EFF00 +_081CA700: + adds r0, r4, #0 + bl sub_081D0CD8 + adds r4, r0, #0 + ldr r0, _081CA718 + lsls r1, r4, #5 + adds r1, r1, r0 + ldrb r0, [r1, #3] +_081CA710: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081CA718: .4byte gUnknown_82E383C + thumb_func_end sub_081CA6B0 + + thumb_func_start sub_081CA71C +sub_081CA71C: @ 0x081CA71C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #5 + bl sub_081C6DFC + adds r4, r0, #0 + movs r0, #0 + strb r0, [r6] + ldr r0, _081CA740 + ldrb r0, [r0, #0x17] + bl sub_0808555C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CA748 + ldr r0, _081CA744 + b _081CA772 + .align 2, 0 +_081CA740: .4byte gUnknown_2036FB8 +_081CA744: .4byte gUnknown_85F3E99 +_081CA748: + lsls r0, r5, #2 + adds r1, r4, r0 + ldrb r0, [r1, #0x1c] + cmp r0, #0 + bne _081CA768 + ldrh r0, [r1, #0x1e] + bl sub_081D0CD8 + ldr r1, _081CA764 + bl sub_081963AC + strb r0, [r6] + b _081CA770 + .align 2, 0 +_081CA764: .4byte gUnknown_2021C7C +_081CA768: + ldrh r0, [r1, #0x1e] + ldr r1, _081CA778 + bl sub_081D0FB8 +_081CA770: + ldr r0, _081CA778 +_081CA772: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081CA778: .4byte gUnknown_2021C7C + thumb_func_end sub_081CA71C + + thumb_func_start sub_081CA77C +sub_081CA77C: @ 0x081CA77C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #5 + bl sub_081C6DFC + lsls r4, r4, #2 + adds r4, r0, r4 + ldrb r0, [r4, #0x1c] + cmp r0, #0 + beq _081CA7A8 + ldrh r0, [r4, #0x1e] + bl sub_081D0F70 + adds r1, r0, #0 + cmp r1, #0x4e + bne _081CA7AA + ldrh r0, [r4, #0x1e] + adds r1, r5, #0 + bl sub_081D123C + b _081CA7B6 +_081CA7A8: + ldrh r1, [r4, #0x1e] +_081CA7AA: + ldr r2, _081CA7BC + lsls r0, r5, #2 + lsls r1, r1, #4 + adds r0, r0, r1 + adds r0, r0, r2 + ldr r0, [r0] +_081CA7B6: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081CA7BC: .4byte gUnknown_85F39B4 + thumb_func_end sub_081CA77C + + thumb_func_start sub_081CA7C0 +sub_081CA7C0: @ 0x081CA7C0 + push {lr} + movs r0, #5 + bl sub_081C6DFC + ldrh r0, [r0] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA7C0 + + thumb_func_start sub_081CA7D0 +sub_081CA7D0: @ 0x081CA7D0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + bl sub_081C6DFC + adds r1, r0, #0 + ldrh r0, [r1, #2] + cmp r0, r4 + blt _081CA7EA + ldr r0, [r1, #4] + adds r0, r0, r4 + ldrb r0, [r0] + b _081CA7EC +_081CA7EA: + movs r0, #3 +_081CA7EC: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA7D0 + + thumb_func_start sub_081CA7F4 +sub_081CA7F4: @ 0x081CA7F4 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xf + bl sub_08008DE8 + ldrb r0, [r4] + cmp r0, #0 + bne _081CA834 + ldrh r0, [r4, #2] + bl sub_081D0CD8 + lsls r0, r0, #5 + ldr r1, _081CA82C + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #0xb + muls r1, r2, r1 + ldr r2, _081CA830 + adds r1, r1, r2 + str r1, [sp] + adds r0, #4 + str r0, [sp, #4] + b _081CA83E + .align 2, 0 +_081CA82C: .4byte gUnknown_82E383C +_081CA830: .4byte gUnknown_82E3564 +_081CA834: + ldrh r0, [r4, #2] + add r2, sp, #4 + mov r1, sp + bl sub_081D1178 +_081CA83E: + ldr r1, [sp] + cmp r1, #0 + beq _081CA864 + ldr r0, [sp, #4] + cmp r0, #0 + beq _081CA864 + adds r0, r5, #0 + bl sub_080088B8 + movs r4, #0 + strb r4, [r0] + adds r0, r5, #0 + adds r0, #0xa + ldr r1, [sp, #4] + bl sub_080088B8 + strb r4, [r0] + movs r0, #0xff + strb r0, [r5, #0xf] +_081CA864: + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081CA7F4 + + thumb_func_start sub_081CA86C +sub_081CA86C: @ 0x081CA86C + push {lr} + ldr r1, _081CA884 + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r2, [r0, #0xa] + ldrh r1, [r0, #0xc] + adds r0, r2, #0 + bl sub_080843F8 + ldrb r0, [r0, #0x14] + pop {r1} + bx r1 + .align 2, 0 +_081CA884: .4byte gUnknown_852AD40 + thumb_func_end sub_081CA86C + + thumb_func_start sub_081CA888 +sub_081CA888: @ 0x081CA888 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #5 + bl sub_081C6DFC + adds r7, r0, #0 + movs r6, #1 + adds r5, #1 + ldrh r0, [r7, #0xa] + cmp r5, r0 + bge _081CA8C4 + lsls r0, r5, #2 + adds r0, #0x1c + adds r4, r0, r7 +_081CA8A4: + ldrb r0, [r4] + cmp r0, #0 + beq _081CA8B4 + ldrh r0, [r4, #2] + bl sub_081D0F04 + cmp r0, #0 + beq _081CA8B8 +_081CA8B4: + adds r0, r6, #0 + b _081CA8C6 +_081CA8B8: + adds r6, #1 + adds r4, #4 + adds r5, #1 + ldrh r0, [r7, #0xa] + cmp r5, r0 + blt _081CA8A4 +_081CA8C4: + movs r0, #0 +_081CA8C6: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081CA888 + + thumb_func_start sub_081CA8CC +sub_081CA8CC: @ 0x081CA8CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #5 + bl sub_081C6DFC + adds r1, r0, #0 + movs r6, #1 + rsbs r6, r6, #0 + subs r5, #1 + cmp r5, #0 + blt _081CA906 + lsls r0, r5, #2 + adds r0, #0x1c + adds r4, r0, r1 +_081CA8E8: + ldrb r0, [r4] + cmp r0, #0 + beq _081CA8F8 + ldrh r0, [r4, #2] + bl sub_081D0F04 + cmp r0, #0 + beq _081CA8FC +_081CA8F8: + adds r0, r6, #0 + b _081CA908 +_081CA8FC: + subs r6, #1 + subs r4, #4 + subs r5, #1 + cmp r5, #0 + bge _081CA8E8 +_081CA906: + movs r0, #0 +_081CA908: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA8CC + + thumb_func_start sub_081CA910 +sub_081CA910: @ 0x081CA910 + push {r4, lr} + movs r4, #0 +_081CA914: + adds r0, r4, #0 + bl sub_081CA5B4 + cmp r0, #0 + beq _081CA92E + ldr r0, _081CA95C + ldr r0, [r0] + ldr r1, _081CA960 + adds r0, r0, r1 + adds r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _081CA956 +_081CA92E: + adds r4, #1 + cmp r4, #0x4d + ble _081CA914 + movs r4, #0 +_081CA936: + adds r0, r4, #0 + bl sub_081D0D10 + cmp r0, #0 + beq _081CA964 + adds r0, r4, #0 + bl sub_081D0F70 + ldr r1, _081CA95C + ldr r1, [r1] + ldr r2, _081CA960 + adds r1, r1, r2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _081CA964 +_081CA956: + movs r0, #1 + b _081CA96C + .align 2, 0 +_081CA95C: .4byte gUnknown_3005AEC +_081CA960: .4byte 0x000009CA +_081CA964: + adds r4, #1 + cmp r4, #0x14 + ble _081CA936 + movs r0, #0 +_081CA96C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CA910 + + thumb_func_start sub_081CA974 +sub_081CA974: @ 0x081CA974 + push {r4, lr} + movs r0, #5 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C7F04 + adds r1, r0, #0 + lsls r0, r1, #2 + adds r4, r4, r0 + ldrb r0, [r4, #0x1c] + cmp r0, #0 + bne _081CA9BC + adds r0, r1, #0 + bl sub_081CA650 + ldr r1, _081CA9B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _081CA9FC + ldr r0, _081CA9B4 + ldr r0, [r0] + ldr r1, _081CA9B8 + adds r0, r0, r1 + ldrh r4, [r4, #0x1e] + adds r0, r0, r4 + ldrb r0, [r0] + b _081CA9EA + .align 2, 0 +_081CA9B0: .4byte gUnknown_2036FB8 +_081CA9B4: .4byte gUnknown_3005AEC +_081CA9B8: .4byte 0x000009CA +_081CA9BC: + ldrh r0, [r4, #0x1e] + cmp r0, #0xb + bne _081CA9FC + adds r0, r1, #0 + bl sub_081CA650 + ldr r1, _081CA9F4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _081CA9FC + ldr r0, _081CA9F8 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081CA9FC + movs r0, #0x5b + bl sub_0809D068 + lsls r0, r0, #0x18 +_081CA9EA: + cmp r0, #0 + bne _081CA9FC + movs r0, #1 + b _081CA9FE + .align 2, 0 +_081CA9F4: .4byte gUnknown_2036FB8 +_081CA9F8: .4byte 0x0000086B +_081CA9FC: + movs r0, #0 +_081CA9FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CA974 + + thumb_func_start sub_081CAA04 +sub_081CAA04: @ 0x081CAA04 + push {r4, lr} + ldr r1, _081CAA2C + movs r0, #6 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CAA38 + movs r0, #0 + strb r0, [r4, #0x19] + ldr r0, _081CAA30 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CAA34 + str r0, [r4] + movs r0, #1 + b _081CAA3A + .align 2, 0 +_081CAA2C: .4byte 0x00002048 +_081CAA30: .4byte sub_081CAAC8 +_081CAA34: .4byte sub_081CAAB4 +_081CAA38: + movs r0, #0 +_081CAA3A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CAA04 + + thumb_func_start sub_081CAA40 +sub_081CAA40: @ 0x081CAA40 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081CAA68 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081CAA6C + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CAA68: .4byte gUnknown_85F4138 +_081CAA6C: .4byte sub_081CAAB4 + thumb_func_end sub_081CAA40 + + thumb_func_start sub_081CAA70 +sub_081CAA70: @ 0x081CAA70 + push {lr} + movs r0, #6 + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081CAA70 + + thumb_func_start sub_081CAA80 +sub_081CAA80: @ 0x081CAA80 + bx r1 + .align 2, 0 + thumb_func_end sub_081CAA80 + + thumb_func_start sub_081CAA84 +sub_081CAA84: @ 0x081CAA84 + push {r4, lr} + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081CBA08 + bl sub_081CB38C + ldrb r0, [r4, #0x12] + bl sub_08003444 + ldrb r0, [r4, #0x10] + bl sub_08003444 + ldrb r0, [r4, #0x14] + bl sub_08003444 + movs r0, #6 + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CAA84 + + thumb_func_start sub_081CAAB4 +sub_081CAAB4: @ 0x081CAAB4 + push {lr} + movs r0, #6 + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAAB4 + + thumb_func_start sub_081CAAC8 +sub_081CAAC8: @ 0x081CAAC8 + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #7 + bls _081CAADC + b _081CACA8 +_081CAADC: + lsls r0, r4, #2 + ldr r1, _081CAAE8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CAAE8: .4byte _081CAAEC +_081CAAEC: @ jump table + .4byte _081CAB0C @ case 0 + .4byte _081CAB78 @ case 1 + .4byte _081CABC8 @ case 2 + .4byte _081CAC0C @ case 3 + .4byte _081CAC26 @ case 4 + .4byte _081CAC38 @ case 5 + .4byte _081CAC4A @ case 6 + .4byte _081CAC8E @ case 7 +_081CAB0C: + ldr r0, _081CAB64 + movs r1, #3 + bl sub_081C7314 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r1, _081CAB68 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _081CAB6C + adds r1, r5, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, _081CAB70 + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #2 + bl sub_08002248 + ldr r0, _081CAB74 + movs r1, #0x20 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #2 + b _081CABBC + .align 2, 0 +_081CAB64: .4byte gUnknown_85F412C +_081CAB68: .4byte gUnknown_85F3ED0 +_081CAB6C: .4byte 0x00001024 +_081CAB70: .4byte gUnknown_85F3F74 +_081CAB74: .4byte gUnknown_85F3EB0 +_081CAB78: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CAB84 + b _081CAC9E +_081CAB84: + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08199A88 + adds r1, r5, #0 + adds r1, #0x24 + movs r0, #1 + bl sub_0800212C + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + ldr r0, _081CABC4 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #1 +_081CABBC: + bl sub_08002248 + movs r0, #0 + b _081CACAA + .align 2, 0 +_081CABC4: .4byte gUnknown_85F4080 +_081CABC8: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081CAC9E + adds r0, r5, #0 + bl sub_081CB780 + ldr r1, _081CAC00 + str r4, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r0, _081CAC04 + movs r1, #0x30 + movs r2, #0x20 + bl sub_081C7104 + ldr r0, _081CAC08 + movs r1, #0x50 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #0 + b _081CACAA + .align 2, 0 +_081CAC00: .4byte gUnknown_85F4100 +_081CAC04: .4byte gUnknown_85F40A0 +_081CAC08: .4byte gUnknown_85F40C0 +_081CAC0C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CAC9E + bl sub_081CA5D4 + cmp r0, #0 + beq _081CAC9E + bl sub_081CB32C + movs r0, #0 + b _081CACAA +_081CAC26: + bl sub_081C79CC + cmp r0, #0 + bne _081CAC9E + adds r0, r5, #0 + bl sub_081CB4E8 + movs r0, #0 + b _081CACAA +_081CAC38: + adds r0, r5, #0 + bl sub_081CB530 + adds r0, r5, #0 + movs r1, #0 + bl sub_081CB640 + movs r0, #0 + b _081CACAA +_081CAC4A: + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + bl sub_081CB968 + movs r0, #3 + bl sub_081C75BC + movs r0, #3 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 + movs r0, #1 + bl sub_081C7280 + movs r0, #0 + b _081CACAA +_081CAC8E: + bl sub_081C72F4 + cmp r0, #0 + bne _081CAC9E + bl sub_081C77B8 + cmp r0, #0 + beq _081CACA2 +_081CAC9E: + movs r0, #2 + b _081CACAA +_081CACA2: + movs r0, #1 + bl sub_081CB3A8 +_081CACA8: + movs r0, #4 +_081CACAA: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAAC8 + + thumb_func_start sub_081CACB4 +sub_081CACB4: @ 0x081CACB4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CACF4 + cmp r4, #1 + bgt _081CACCE + cmp r4, #0 + beq _081CACD8 + b _081CAD16 +_081CACCE: + cmp r4, #2 + beq _081CACFC + cmp r4, #3 + beq _081CAD08 + b _081CAD16 +_081CACD8: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E34 + cmp r0, #1 + beq _081CACF0 + cmp r0, #1 + bgt _081CAD04 + cmp r0, #0 + bne _081CAD04 + b _081CAD16 +_081CACF0: + movs r0, #7 + b _081CAD18 +_081CACF4: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CAD12 +_081CACFC: + adds r0, r5, #0 + movs r1, #0 + bl sub_081CB640 +_081CAD04: + movs r0, #0 + b _081CAD18 +_081CAD08: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CAD16 +_081CAD12: + movs r0, #2 + b _081CAD18 +_081CAD16: + movs r0, #4 +_081CAD18: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CACB4 + + thumb_func_start sub_081CAD20 +sub_081CAD20: @ 0x081CAD20 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CAD60 + cmp r4, #1 + bgt _081CAD3A + cmp r4, #0 + beq _081CAD44 + b _081CAD82 +_081CAD3A: + cmp r4, #2 + beq _081CAD68 + cmp r4, #3 + beq _081CAD74 + b _081CAD82 +_081CAD44: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E00 + cmp r0, #1 + beq _081CAD5C + cmp r0, #1 + bgt _081CAD70 + cmp r0, #0 + bne _081CAD70 + b _081CAD82 +_081CAD5C: + movs r0, #7 + b _081CAD84 +_081CAD60: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CAD7E +_081CAD68: + adds r0, r5, #0 + movs r1, #0 + bl sub_081CB640 +_081CAD70: + movs r0, #0 + b _081CAD84 +_081CAD74: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CAD82 +_081CAD7E: + movs r0, #2 + b _081CAD84 +_081CAD82: + movs r0, #4 +_081CAD84: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAD20 + + thumb_func_start sub_081CAD8C +sub_081CAD8C: @ 0x081CAD8C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CADCC + cmp r4, #1 + bgt _081CADA6 + cmp r4, #0 + beq _081CADB0 + b _081CADEE +_081CADA6: + cmp r4, #2 + beq _081CADD4 + cmp r4, #3 + beq _081CADE0 + b _081CADEE +_081CADB0: + movs r0, #5 + bl sub_080A306C + bl sub_081C7EB4 + cmp r0, #1 + beq _081CADC8 + cmp r0, #1 + bgt _081CADDC + cmp r0, #0 + bne _081CADDC + b _081CADEE +_081CADC8: + movs r0, #7 + b _081CADF0 +_081CADCC: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CADEA +_081CADD4: + adds r0, r5, #0 + movs r1, #0 + bl sub_081CB640 +_081CADDC: + movs r0, #0 + b _081CADF0 +_081CADE0: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CADEE +_081CADEA: + movs r0, #2 + b _081CADF0 +_081CADEE: + movs r0, #4 +_081CADF0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAD8C + + thumb_func_start sub_081CADF8 +sub_081CADF8: @ 0x081CADF8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CAE38 + cmp r4, #1 + bgt _081CAE12 + cmp r4, #0 + beq _081CAE1C + b _081CAE5A +_081CAE12: + cmp r4, #2 + beq _081CAE40 + cmp r4, #3 + beq _081CAE4C + b _081CAE5A +_081CAE1C: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E74 + cmp r0, #1 + beq _081CAE34 + cmp r0, #1 + bgt _081CAE48 + cmp r0, #0 + bne _081CAE48 + b _081CAE5A +_081CAE34: + movs r0, #7 + b _081CAE5C +_081CAE38: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CAE56 +_081CAE40: + adds r0, r5, #0 + movs r1, #0 + bl sub_081CB640 +_081CAE48: + movs r0, #0 + b _081CAE5C +_081CAE4C: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CAE5A +_081CAE56: + movs r0, #2 + b _081CAE5C +_081CAE5A: + movs r0, #4 +_081CAE5C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CADF8 + + thumb_func_start sub_081CAE64 +sub_081CAE64: @ 0x081CAE64 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #0 + beq _081CAE7A + cmp r4, #1 + beq _081CAE90 + b _081CAE9E +_081CAE7A: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081CB6AC + movs r0, #7 + bl sub_081C7364 + movs r0, #0 + b _081CAEA0 +_081CAE90: + adds r0, r5, #0 + bl sub_081CB710 + cmp r0, #0 + beq _081CAE9E + movs r0, #2 + b _081CAEA0 +_081CAE9E: + movs r0, #4 +_081CAEA0: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAE64 + + thumb_func_start sub_081CAEA8 +sub_081CAEA8: @ 0x081CAEA8 + push {r4, lr} + movs r0, #5 + bl sub_080A306C + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081CA7C0 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_081CBA98 + movs r0, #4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CAEA8 + + thumb_func_start sub_081CAED0 +sub_081CAED0: @ 0x081CAED0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #0 + beq _081CAEE6 + cmp r4, #1 + beq _081CAEFC + b _081CAF0A +_081CAEE6: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081CB73C + movs r0, #6 + bl sub_081C7364 + movs r0, #0 + b _081CAF0C +_081CAEFC: + adds r0, r5, #0 + bl sub_081CB750 + cmp r0, #0 + beq _081CAF0A + movs r0, #2 + b _081CAF0C +_081CAF0A: + movs r0, #4 +_081CAF0C: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAED0 + + thumb_func_start sub_081CAF14 +sub_081CAF14: @ 0x081CAF14 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CAF48 + cmp r4, #1 + bgt _081CAF2E + cmp r4, #0 + beq _081CAF38 + b _081CAF8E +_081CAF2E: + cmp r4, #2 + beq _081CAF6C + cmp r4, #3 + beq _081CAF80 + b _081CAF8E +_081CAF38: + movs r0, #1 + bl sub_081C88FC + adds r0, r5, #0 + bl sub_081CB7A4 + movs r0, #0 + b _081CAF90 +_081CAF48: + adds r0, r5, #0 + bl sub_081CB81C + adds r4, r0, #0 + cmp r4, #0 + bne _081CAF8A + adds r0, r5, #0 + bl sub_081CB82C + ldr r0, _081CAF68 + bl sub_080A306C + strb r4, [r5, #0xe] + movs r0, #0 + b _081CAF90 + .align 2, 0 +_081CAF68: .4byte 0x00000107 +_081CAF6C: + adds r0, r5, #0 + bl sub_081CB854 + cmp r0, #0 + bne _081CAF8A + adds r0, r5, #0 + bl sub_081CB8AC + movs r0, #0 + b _081CAF90 +_081CAF80: + adds r0, r5, #0 + bl sub_081CB8E8 + cmp r0, #0 + beq _081CAF8E +_081CAF8A: + movs r0, #2 + b _081CAF90 +_081CAF8E: + movs r0, #4 +_081CAF90: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CAF14 + + thumb_func_start sub_081CAF98 +sub_081CAF98: @ 0x081CAF98 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CAFD2 + cmp r4, #1 + bgt _081CAFB2 + cmp r4, #0 + beq _081CAFB8 + b _081CAFF4 +_081CAFB2: + cmp r4, #2 + beq _081CAFE6 + b _081CAFF4 +_081CAFB8: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081CB7E8 + movs r0, #1 + bl sub_081C88FC + movs r0, #1 + strb r0, [r5, #0xe] + movs r0, #0 + b _081CAFF6 +_081CAFD2: + adds r0, r5, #0 + bl sub_081CB81C + cmp r0, #0 + bne _081CAFF0 + adds r0, r5, #0 + bl sub_081CB86C + movs r0, #0 + b _081CAFF6 +_081CAFE6: + adds r0, r5, #0 + bl sub_081CB894 + cmp r0, #0 + beq _081CAFF4 +_081CAFF0: + movs r0, #2 + b _081CAFF6 +_081CAFF4: + movs r0, #4 +_081CAFF6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CAF98 + + thumb_func_start sub_081CAFFC +sub_081CAFFC: @ 0x081CAFFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + movs r6, #0 + cmp r5, #6 + bhi _081CB0A8 + lsls r0, r5, #2 + ldr r1, _081CB018 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CB018: .4byte _081CB01C +_081CB01C: @ jump table + .4byte _081CB038 @ case 0 + .4byte _081CB04E @ case 1 + .4byte _081CB056 @ case 2 + .4byte _081CB064 @ case 3 + .4byte _081CB06C @ case 4 + .4byte _081CB080 @ case 5 + .4byte _081CB096 @ case 6 +_081CB038: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _081CB046 + movs r0, #0x84 + lsls r0, r0, #1 + bl sub_080A306C +_081CB046: + movs r0, #5 + bl sub_080A306C + b _081CB0A8 +_081CB04E: + adds r0, r4, #0 + bl sub_081CB930 + b _081CB0A8 +_081CB056: + adds r0, r4, #0 + bl sub_081CB958 + cmp r0, #0 + beq _081CB0A8 +_081CB060: + movs r6, #2 + b _081CB0A8 +_081CB064: + adds r0, r4, #0 + bl sub_081CB73C + b _081CB0A8 +_081CB06C: + adds r0, r4, #0 + bl sub_081CB750 + cmp r0, #0 + beq _081CB078 + movs r6, #2 +_081CB078: + movs r0, #6 + bl sub_081C7364 + b _081CB0A8 +_081CB080: + bl sub_081C73A8 + cmp r0, #0 + bne _081CB060 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _081CB0A0 + bl sub_081C7FE0 + movs r6, #1 + b _081CB0A8 +_081CB096: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CB060 +_081CB0A0: + movs r0, #0 + bl sub_081C88FC + movs r6, #4 +_081CB0A8: + adds r0, r6, #0 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081CAFFC + + thumb_func_start sub_081CB0B0 +sub_081CB0B0: @ 0x081CB0B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CB0E8 + cmp r4, #1 + bgt _081CB0CA + cmp r4, #0 + beq _081CB0D4 + b _081CB132 +_081CB0CA: + cmp r4, #2 + beq _081CB104 + cmp r4, #3 + beq _081CB114 + b _081CB132 +_081CB0D4: + movs r0, #5 + bl sub_080A306C + bl sub_081C7F24 + adds r0, r5, #0 + bl sub_081CB760 + movs r0, #0 + b _081CB134 +_081CB0E8: + bl sub_081C7FC8 + cmp r0, #0 + bne _081CB12E + adds r0, r5, #0 + bl sub_081CB750 + cmp r0, #0 + bne _081CB12E + movs r0, #8 + bl sub_081C7364 + movs r0, #0 + b _081CB134 +_081CB104: + movs r0, #0 + bl sub_081C7F54 + adds r0, r5, #0 + bl sub_081CBAF0 + movs r0, #0 + b _081CB134 +_081CB114: + bl sub_081C7FC8 + cmp r0, #0 + bne _081CB12E + adds r0, r5, #0 + bl sub_081CBB80 + cmp r0, #0 + bne _081CB12E + bl sub_081C73A8 + cmp r0, #0 + beq _081CB132 +_081CB12E: + movs r0, #2 + b _081CB134 +_081CB132: + movs r0, #4 +_081CB134: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CB0B0 + + thumb_func_start sub_081CB13C +sub_081CB13C: @ 0x081CB13C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #4 + bhi _081CB1D4 + lsls r0, r5, #2 + ldr r1, _081CB158 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CB158: .4byte _081CB15C +_081CB15C: @ jump table + .4byte _081CB170 @ case 0 + .4byte _081CB190 @ case 1 + .4byte _081CB1A8 @ case 2 + .4byte _081CB1B4 @ case 3 + .4byte _081CB1BE @ case 4 +_081CB170: + bl sub_081C7F18 + bl sub_081CA888 + adds r5, r0, #0 + cmp r5, #0 + beq _081CB1D4 + movs r0, #5 + bl sub_080A306C + strh r5, [r4, #0x16] + adds r0, r4, #0 + bl sub_081CBB74 + movs r0, #0 + b _081CB1D6 +_081CB190: + adds r0, r4, #0 + bl sub_081CBB80 + cmp r0, #0 + bne _081CB1D0 + movs r0, #0x16 + ldrsh r1, [r4, r0] + adds r0, r4, #0 + bl sub_081CB640 + movs r0, #0 + b _081CB1D6 +_081CB1A8: + movs r1, #0x16 + ldrsh r0, [r4, r1] + bl sub_081C7F54 + movs r0, #0 + b _081CB1D6 +_081CB1B4: + adds r0, r4, #0 + bl sub_081CBAF0 + movs r0, #0 + b _081CB1D6 +_081CB1BE: + bl sub_081C7FC8 + cmp r0, #0 + bne _081CB1D0 + adds r0, r4, #0 + bl sub_081CBB80 + cmp r0, #0 + beq _081CB1D4 +_081CB1D0: + movs r0, #2 + b _081CB1D6 +_081CB1D4: + movs r0, #4 +_081CB1D6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CB13C + + thumb_func_start sub_081CB1DC +sub_081CB1DC: @ 0x081CB1DC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CB210 + cmp r4, #1 + bgt _081CB1F6 + cmp r4, #0 + beq _081CB1FC + b _081CB240 +_081CB1F6: + cmp r4, #2 + beq _081CB232 + b _081CB240 +_081CB1FC: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081CBB74 + bl sub_081C7F98 + movs r0, #0 + b _081CB242 +_081CB210: + bl sub_081C7FC8 + cmp r0, #0 + bne _081CB23C + adds r0, r5, #0 + bl sub_081CBB80 + cmp r0, #0 + bne _081CB23C + movs r0, #6 + bl sub_081C7364 + adds r0, r5, #0 + bl sub_081CB530 + movs r0, #0 + b _081CB242 +_081CB232: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CB240 +_081CB23C: + movs r0, #2 + b _081CB242 +_081CB240: + movs r0, #4 +_081CB242: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CB1DC + + thumb_func_start sub_081CB248 +sub_081CB248: @ 0x081CB248 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #4 + bhi _081CB2E0 + lsls r0, r5, #2 + ldr r1, _081CB264 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CB264: .4byte _081CB268 +_081CB268: @ jump table + .4byte _081CB27C @ case 0 + .4byte _081CB29C @ case 1 + .4byte _081CB2B4 @ case 2 + .4byte _081CB2C0 @ case 3 + .4byte _081CB2CA @ case 4 +_081CB27C: + bl sub_081C7F18 + bl sub_081CA8CC + adds r5, r0, #0 + cmp r5, #0 + beq _081CB2E0 + movs r0, #5 + bl sub_080A306C + strh r5, [r4, #0x16] + adds r0, r4, #0 + bl sub_081CBB74 + movs r0, #0 + b _081CB2E2 +_081CB29C: + adds r0, r4, #0 + bl sub_081CBB80 + cmp r0, #0 + bne _081CB2DC + movs r0, #0x16 + ldrsh r1, [r4, r0] + adds r0, r4, #0 + bl sub_081CB640 + movs r0, #0 + b _081CB2E2 +_081CB2B4: + movs r1, #0x16 + ldrsh r0, [r4, r1] + bl sub_081C7F54 + movs r0, #0 + b _081CB2E2 +_081CB2C0: + adds r0, r4, #0 + bl sub_081CBAF0 + movs r0, #0 + b _081CB2E2 +_081CB2CA: + bl sub_081C7FC8 + cmp r0, #0 + bne _081CB2DC + adds r0, r4, #0 + bl sub_081CBB80 + cmp r0, #0 + beq _081CB2E0 +_081CB2DC: + movs r0, #2 + b _081CB2E2 +_081CB2E0: + movs r0, #4 +_081CB2E2: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CB248 + + thumb_func_start sub_081CB2E8 +sub_081CB2E8: @ 0x081CB2E8 + push {lr} + cmp r0, #0 + beq _081CB2F4 + cmp r0, #1 + beq _081CB30E + b _081CB326 +_081CB2F4: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081CB3A8 + movs r0, #0 + bl sub_081C7280 + bl sub_081C7060 + movs r0, #0 + b _081CB328 +_081CB30E: + bl sub_081C72F4 + cmp r0, #0 + bne _081CB31E + bl sub_081C7080 + cmp r0, #0 + beq _081CB322 +_081CB31E: + movs r0, #2 + b _081CB328 +_081CB322: + bl sub_081C7784 +_081CB326: + movs r0, #4 +_081CB328: + pop {r1} + bx r1 + thumb_func_end sub_081CB2E8 + + thumb_func_start sub_081CB32C +sub_081CB32C: @ 0x081CB32C + push {lr} + sub sp, #0x18 + bl sub_081CA640 + str r0, [sp] + bl sub_081CA5E4 + mov r1, sp + movs r2, #0 + strh r0, [r1, #4] + movs r0, #4 + strb r0, [r1, #8] + mov r0, sp + strh r2, [r0, #6] + movs r0, #0xe + strb r0, [r1, #9] + movs r0, #0xf + strb r0, [r1, #0xa] + movs r0, #1 + strb r0, [r1, #0xb] + movs r0, #8 + strb r0, [r1, #0xc] + movs r0, #3 + strb r0, [r1, #0xd] + ldr r0, _081CB37C + str r0, [sp, #0x10] + ldr r0, _081CB380 + str r0, [sp, #0x14] + ldr r0, _081CB384 + movs r2, #2 + bl sub_081C797C + ldr r0, _081CB388 + movs r1, #7 + bl sub_080A8878 + add sp, #0x18 + pop {r0} + bx r0 + .align 2, 0 +_081CB37C: .4byte sub_081CA7F4 +_081CB380: .4byte sub_081CB45C +_081CB384: .4byte gUnknown_85F4134 +_081CB388: .4byte sub_081CB3D4 + thumb_func_end sub_081CB32C + + thumb_func_start sub_081CB38C +sub_081CB38C: @ 0x081CB38C + push {lr} + bl sub_081C79DC + ldr r0, _081CB3A4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 + pop {r0} + bx r0 + .align 2, 0 +_081CB3A4: .4byte sub_081CB3D4 + thumb_func_end sub_081CB38C + + thumb_func_start sub_081CB3A8 +sub_081CB3A8: @ 0x081CB3A8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CB3CC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0xff + beq _081CB3C6 + ldr r1, _081CB3D0 + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + strh r4, [r0, #0x26] +_081CB3C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB3CC: .4byte sub_081CB3D4 +_081CB3D0: .4byte gUnknown_3005B60 + thumb_func_end sub_081CB3A8 + + thumb_func_start sub_081CB3D4 +sub_081CB3D4: @ 0x081CB3D4 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081CB440 + adds r2, r1, r0 + movs r1, #0x1e + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _081CB438 + ldrh r0, [r2] + adds r0, #4 + movs r1, #0x7f + ands r0, r1 + strh r0, [r2] + ldr r1, _081CB444 + movs r3, #0 + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #2] + ldr r0, _081CB448 + adds r1, r0, #0 + adds r1, #0x20 + movs r3, #2 + ldrsh r2, [r2, r3] + str r2, [sp] + ldr r4, _081CB44C + str r4, [sp, #4] + movs r2, #0x10 + movs r3, #0x10 + bl sub_081C717C + ldr r0, _081CB450 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081CB438 + ldr r1, _081CB454 + ldr r2, _081CB458 + adds r0, r4, #0 + bl CpuSet +_081CB438: + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB440: .4byte gUnknown_3005B68 +_081CB444: .4byte gUnknown_82FA8CC +_081CB448: .4byte gUnknown_85F40C0 +_081CB44C: .4byte gUnknown_2037454 +_081CB450: .4byte gUnknown_2037C74 +_081CB454: .4byte gUnknown_2037854 +_081CB458: .4byte 0x04000008 + thumb_func_end sub_081CB3D4 + + thumb_func_start sub_081CB45C +sub_081CB45C: @ 0x081CB45C + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r4, r2, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002194 + adds r6, r0, #0 + lsls r4, r4, #7 + adds r4, #0x3a + adds r6, r6, r4 + adds r0, r5, #0 + bl sub_081CA668 + cmp r0, #0 + beq _081CB4A0 + movs r1, #0xa0 + lsls r1, r1, #7 + adds r0, r1, #0 + strh r0, [r6] + adds r1, r6, #0 + adds r1, #0x40 + ldr r2, _081CB49C + adds r0, r2, #0 + strh r0, [r1] + b _081CB4AC + .align 2, 0 +_081CB49C: .4byte 0x00005001 +_081CB4A0: + ldr r0, _081CB4B4 + adds r1, r0, #0 + strh r1, [r6] + adds r0, r6, #0 + adds r0, #0x40 + strh r1, [r0] +_081CB4AC: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CB4B4: .4byte 0x00005002 + thumb_func_end sub_081CB45C + + thumb_func_start sub_081CB4B8 +sub_081CB4B8: @ 0x081CB4B8 + push {r4, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_0800401C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08002194 + lsls r4, r4, #7 + adds r4, #0x3a + adds r0, r0, r4 + ldr r2, _081CB4E4 + adds r1, r2, #0 + strh r1, [r0] + adds r0, #0x40 + strh r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB4E4: .4byte 0x00005002 + thumb_func_end sub_081CB4B8 + + thumb_func_start sub_081CB4E8 +sub_081CB4E8: @ 0x081CB4E8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CB528 + bl sub_08003250 + strh r0, [r4, #0x10] + ldr r0, _081CB52C + bl sub_08003250 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #0x10] + bl sub_0800365C + ldrb r0, [r4, #0x12] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #0x12] + bl sub_0800365C + ldrb r0, [r4, #0x10] + movs r1, #1 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB528: .4byte gUnknown_85F4178 +_081CB52C: .4byte gUnknown_85F4180 + thumb_func_end sub_081CB4E8 + + thumb_func_start sub_081CB530 +sub_081CB530: @ 0x081CB530 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x12] + movs r1, #0x11 + bl sub_08003B18 + ldrh r0, [r4, #0x12] + bl sub_081CB564 + ldrh r0, [r4, #0x12] + bl sub_081CB57C + ldrh r0, [r4, #0x12] + bl sub_081CB5A8 + ldrh r0, [r4, #0x12] + bl sub_081CB5C0 + ldrb r0, [r4, #0x12] + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CB530 + + thumb_func_start sub_081CB564 +sub_081CB564: @ 0x081CB564 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081CB578 + movs r2, #0 + bl sub_081CB5F8 + pop {r0} + bx r0 + .align 2, 0 +_081CB578: .4byte gUnknown_85CB6AE + thumb_func_end sub_081CB564 + + thumb_func_start sub_081CB57C +sub_081CB57C: @ 0x081CB57C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081CA5E4 + adds r1, r0, #0 + mov r0, sp + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r0, r4, #0 + mov r1, sp + movs r2, #1 + bl sub_081CB5F8 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CB57C + + thumb_func_start sub_081CB5A8 +sub_081CB5A8: @ 0x081CB5A8 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081CB5BC + movs r2, #2 + bl sub_081CB5F8 + pop {r0} + bx r0 + .align 2, 0 +_081CB5BC: .4byte gUnknown_85CB6B8 + thumb_func_end sub_081CB5A8 + + thumb_func_start sub_081CB5C0 +sub_081CB5C0: @ 0x081CB5C0 + push {r4, lr} + sub sp, #8 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #9 + bl sub_08084180 + adds r1, r0, #0 + ldr r0, _081CB5F4 + cmp r1, r0 + ble _081CB5D8 + adds r1, r0, #0 +_081CB5D8: + mov r0, sp + movs r2, #0 + movs r3, #5 + bl sub_080089D8 + adds r0, r4, #0 + mov r1, sp + movs r2, #3 + bl sub_081CB5F8 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB5F4: .4byte 0x0001869F + thumb_func_end sub_081CB5C0 + + thumb_func_start sub_081CB5F8 +sub_081CB5F8: @ 0x081CB5F8 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + bl sub_08005DAC + movs r3, #0x54 + subs r3, r3, r0 + lsls r4, r4, #4 + adds r4, #2 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r4, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_0800449C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081CB5F8 + + thumb_func_start sub_081CB640 +sub_081CB640: @ 0x081CB640 + push {r4, r5, lr} + sub sp, #0x1c + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_081C7F04 + adds r0, r0, r4 + bl sub_081CA650 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xd5 + beq _081CB664 + add r0, sp, #0xc + movs r2, #0 + bl sub_08124578 + b _081CB66C +_081CB664: + ldr r1, _081CB6A8 + add r0, sp, #0xc + bl sub_080088B8 +_081CB66C: + movs r2, #1 + rsbs r2, r2, #0 + movs r0, #1 + add r1, sp, #0xc + bl sub_08005DAC + movs r4, #0x54 + subs r4, r4, r0 + ldrb r0, [r5, #0x10] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5, #0x10] + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + add r2, sp, #0xc + adds r3, r4, #0 + bl sub_0800449C + add sp, #0x1c + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CB6A8: .4byte gUnknown_85CB808 + thumb_func_end sub_081CB640 + + thumb_func_start sub_081CB6AC +sub_081CB6AC: @ 0x081CB6AC + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + ldrb r0, [r5, #0x12] + movs r1, #0x11 + bl sub_08003B18 + movs r4, #0 + movs r6, #0x80 + lsls r6, r6, #0x12 + b _081CB6E8 +_081CB6C2: + ldrb r0, [r5, #0x12] + ldr r2, _081CB70C + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r2, [r1] + lsrs r1, r6, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0x14 + bl sub_0800449C + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r6, r6, r0 + adds r4, #1 +_081CB6E8: + cmp r4, #2 + bhi _081CB6FA + adds r0, r4, #0 + bl sub_081CA7D0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #3 + bne _081CB6C2 +_081CB6FA: + ldrb r0, [r5, #0x12] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CB70C: .4byte gUnknown_85F4188 + thumb_func_end sub_081CB6AC + + thumb_func_start sub_081CB710 +sub_081CB710: @ 0x081CB710 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CB722 + movs r0, #1 + b _081CB734 +_081CB722: + bl sub_081CA7C0 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_081CBA44 + movs r0, #0 +_081CB734: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CB710 + + thumb_func_start sub_081CB73C +sub_081CB73C: @ 0x081CB73C + push {r4, lr} + adds r4, r0, #0 + bl sub_081CBA84 + adds r0, r4, #0 + bl sub_081CB530 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CB73C + + thumb_func_start sub_081CB750 +sub_081CB750: @ 0x081CB750 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CB750 + + thumb_func_start sub_081CB760 +sub_081CB760: @ 0x081CB760 + push {r4, lr} + adds r4, r0, #0 + bl sub_081CBA84 + ldrb r0, [r4, #0x12] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #0x12] + movs r1, #2 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CB760 + + thumb_func_start sub_081CB780 +sub_081CB780: @ 0x081CB780 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CB7A0 + bl sub_08003250 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x14] + movs r1, #1 + movs r2, #4 + bl sub_08196D78 + bl sub_081C7300 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CB7A0: .4byte gUnknown_85F41A8 + thumb_func_end sub_081CB780 + + thumb_func_start sub_081CB7A4 +sub_081CB7A4: @ 0x081CB7A4 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x14] + movs r1, #1 + movs r2, #4 + bl sub_08196D78 + ldrh r0, [r4, #0x14] + movs r1, #1 + movs r2, #4 + bl sub_08196DB8 + ldrb r0, [r4, #0x14] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #0x14] + bl sub_0800365C + ldrb r0, [r4, #0x14] + movs r1, #3 + bl sub_08003528 + bl sub_081C748C + movs r2, #0 + movs r1, #0x18 + strh r1, [r0, #0x20] + movs r1, #0x70 + strh r1, [r0, #0x22] + strh r2, [r0, #0x26] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CB7A4 + + thumb_func_start sub_081CB7E8 +sub_081CB7E8: @ 0x081CB7E8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + movs r1, #1 + movs r2, #0x40 + bl sub_080981B4 + ldrb r0, [r4, #0x14] + movs r1, #1 + movs r2, #4 + bl sub_080981E0 + ldrb r0, [r4, #0x14] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r4, #0x14] + bl sub_0800365C + ldrb r0, [r4, #0x14] + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CB7E8 + + thumb_func_start sub_081CB81C +sub_081CB81C: @ 0x081CB81C + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CB81C + + thumb_func_start sub_081CB82C +sub_081CB82C: @ 0x081CB82C + push {lr} + sub sp, #0xc + ldrb r0, [r0, #0x14] + ldr r2, _081CB850 + movs r1, #2 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0x20 + bl sub_0800449C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081CB850: .4byte gUnknown_85F4194 + thumb_func_end sub_081CB82C + + thumb_func_start sub_081CB854 +sub_081CB854: @ 0x081CB854 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004630 + ldrb r0, [r4, #0x14] + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CB854 + + thumb_func_start sub_081CB86C +sub_081CB86C: @ 0x081CB86C + push {lr} + sub sp, #0xc + ldrb r0, [r0, #0x14] + ldr r2, _081CB890 + movs r1, #2 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0x20 + bl sub_0800449C + add sp, #0xc + pop {r0} + bx r0 + .align 2, 0 +_081CB890: .4byte gUnknown_85CB7A8 + thumb_func_end sub_081CB86C + + thumb_func_start sub_081CB894 +sub_081CB894: @ 0x081CB894 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004630 + ldrb r0, [r4, #0x14] + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CB894 + + thumb_func_start sub_081CB8AC +sub_081CB8AC: @ 0x081CB8AC + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + bl sub_081C7F04 + adds r1, r4, #0 + adds r1, #0xf + bl sub_081CA71C + adds r5, r0, #0 + bl sub_08197794 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r2, [r4, #0x14] + movs r1, #2 + str r1, [sp] + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + adds r0, r2, #0 + movs r1, #1 + adds r2, r5, #0 + movs r3, #0x20 + bl sub_0800449C + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081CB8AC + + thumb_func_start sub_081CB8E8 +sub_081CB8E8: @ 0x081CB8E8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CB904 + ldrh r1, [r0, #0x2c] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081CB90C + ldr r0, _081CB908 + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + b _081CB918 + .align 2, 0 +_081CB904: .4byte gUnknown_3002360 +_081CB908: .4byte gUnknown_30030B4 +_081CB90C: + ldr r2, _081CB92C + ldrb r1, [r2] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081CB918: + bl sub_08004630 + ldrb r0, [r4, #0x14] + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CB92C: .4byte gUnknown_30030B4 + thumb_func_end sub_081CB8E8 + + thumb_func_start sub_081CB930 +sub_081CB930: @ 0x081CB930 + push {lr} + sub sp, #8 + bl sub_081C74A4 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + movs r0, #1 + bl sub_08002248 + add sp, #8 + pop {r0} + bx r0 + thumb_func_end sub_081CB930 + + thumb_func_start sub_081CB958 +sub_081CB958: @ 0x081CB958 + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CB958 + + thumb_func_start sub_081CB968 +sub_081CB968: @ 0x081CB968 + push {r4, r5, r6, lr} + sub sp, #8 + movs r0, #6 + bl sub_081C6DFC + adds r6, r0, #0 + movs r5, #0 + ldr r4, _081CB9EC +_081CB978: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #0 + beq _081CB978 + ldr r0, _081CB9F0 + bl sub_081C711C + movs r0, #0 + str r0, [r6, #0x1c] + ldr r1, _081CB9F4 + adds r0, r6, r1 + str r0, [sp] + ldr r1, _081CB9F8 + ldr r0, [sp, #4] + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #4 + orrs r0, r1 + ldr r1, _081CB9FC + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [sp, #4] + mov r0, sp + bl sub_08008210 + ldr r2, _081CBA00 + adds r1, r6, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0xb + ldr r2, _081CBA04 + adds r0, r0, r2 + str r0, [r1] + movs r0, #0xd + bl sub_080084EC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x14 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r6, #0x1a] + bl sub_081CBAC4 + str r0, [r6, #0x20] + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CB9EC: .4byte gUnknown_85F41B0 +_081CB9F0: .4byte gUnknown_85F41B8 +_081CB9F4: .4byte 0x00001828 +_081CB9F8: .4byte 0xFFFF0000 +_081CB9FC: .4byte 0x0000FFFF +_081CBA00: .4byte 0x00001824 +_081CBA04: .4byte 0x06010000 + thumb_func_end sub_081CB968 + + thumb_func_start sub_081CBA08 +sub_081CBA08: @ 0x081CBA08 + push {r4, lr} + movs r0, #6 + bl sub_081C6DFC + adds r4, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _081CBA1C + bl sub_08006E00 +_081CBA1C: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _081CBA26 + bl sub_08006E00 +_081CBA26: + movs r0, #8 + bl sub_08008280 + movs r0, #7 + bl sub_08008280 + movs r0, #0xc + bl sub_08008564 + movs r0, #0xd + bl sub_08008564 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CBA08 + + thumb_func_start sub_081CBA44 +sub_081CBA44: @ 0x081CBA44 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _081CBA74 + ldr r0, _081CBA7C + movs r1, #8 + movs r2, #0x50 + movs r3, #5 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081CBA80 + adds r1, r1, r0 + str r1, [r4, #0x1c] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081CBA98 +_081CBA74: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CBA7C: .4byte gUnknown_85F41D0 +_081CBA80: .4byte gUnknown_20205AC + thumb_func_end sub_081CBA44 + + thumb_func_start sub_081CBA84 +sub_081CBA84: @ 0x081CBA84 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x1c] + bl sub_08006E00 + movs r0, #0 + str r0, [r4, #0x1c] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CBA84 + + thumb_func_start sub_081CBA98 +sub_081CBA98: @ 0x081CBA98 + ldr r0, [r0, #0x1c] + lsls r1, r1, #4 + strh r1, [r0, #0x26] + bx lr + thumb_func_end sub_081CBA98 + + thumb_func_start sub_081CBAA0 +sub_081CBAA0: @ 0x081CBAA0 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081CBAC0 + movs r0, #0 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x24] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strh r0, [r2, #0x24] +_081CBAC0: + pop {r0} + bx r0 + thumb_func_end sub_081CBAA0 + + thumb_func_start sub_081CBAC4 +sub_081CBAC4: @ 0x081CBAC4 + push {lr} + ldr r0, _081CBAE8 + movs r1, #0x2c + movs r2, #0x68 + movs r3, #6 + bl sub_08006B0C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081CBAEC + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_081CBAE8: .4byte gUnknown_85F41F0 +_081CBAEC: .4byte gUnknown_20205AC + thumb_func_end sub_081CBAC4 + + thumb_func_start sub_081CBAF0 +sub_081CBAF0: @ 0x081CBAF0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + bl sub_081C7F04 + bl sub_081CA6B0 + cmp r0, #0 + blt _081CBB54 + lsls r4, r0, #3 + ldr r0, _081CBB5C + adds r0, r4, r0 + ldr r1, _081CBB60 + adds r5, r7, r1 + adds r1, r5, #0 + movs r2, #0 + bl sub_08034448 + ldr r0, _081CBB64 + adds r4, r4, r0 + ldr r0, [r4] + ldr r1, _081CBB68 + adds r6, r7, r1 + adds r1, r6, #0 + bl LZ77UnCompWram + ldr r1, _081CBB6C + adds r0, r7, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r5, #0 + movs r3, #1 + bl sub_08000EF8 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r1, [r7, #0x1a] + adds r0, r6, #0 + movs r2, #0x20 + bl sub_080A1200 + ldr r1, [r7, #0x20] + movs r0, #0 + strh r0, [r1, #0x2e] + ldr r0, [r7, #0x20] + strh r4, [r0, #0x3c] + ldr r1, [r7, #0x20] + ldr r0, _081CBB70 + str r0, [r1, #0x1c] +_081CBB54: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CBB5C: .4byte gUnknown_82D8EE4 +_081CBB60: .4byte 0x00001828 +_081CBB64: .4byte gUnknown_82D91CC +_081CBB68: .4byte 0x00002028 +_081CBB6C: .4byte 0x00001824 +_081CBB70: .4byte sub_081CBB94 + thumb_func_end sub_081CBAF0 + + thumb_func_start sub_081CBB74 +sub_081CBB74: @ 0x081CBB74 + ldr r1, [r0, #0x20] + ldr r0, _081CBB7C + str r0, [r1, #0x1c] + bx lr + .align 2, 0 +_081CBB7C: .4byte sub_081CBBF8 + thumb_func_end sub_081CBB74 + + thumb_func_start sub_081CBB80 +sub_081CBB80: @ 0x081CBB80 + ldr r0, [r0, #0x20] + ldr r1, [r0, #0x1c] + ldr r0, _081CBB90 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_081CBB90: .4byte sub_08007140 + thumb_func_end sub_081CBB80 + + thumb_func_start sub_081CBB94 +sub_081CBB94: @ 0x081CBB94 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081CBBA6 + cmp r0, #1 + beq _081CBBD8 + b _081CBBEC +_081CBBA6: + movs r1, #0x3c + ldrsh r0, [r4, r1] + bl sub_08001034 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _081CBBEC + ldr r0, _081CBBD4 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _081CBBEC + .align 2, 0 +_081CBBD4: .4byte 0x0000FFB0 +_081CBBD8: + ldrh r0, [r4, #0x24] + adds r0, #8 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _081CBBEC + movs r0, #0 + strh r0, [r4, #0x24] + ldr r0, _081CBBF4 + str r0, [r4, #0x1c] +_081CBBEC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CBBF4: .4byte sub_08007140 + thumb_func_end sub_081CBB94 + + thumb_func_start sub_081CBBF8 +sub_081CBBF8: @ 0x081CBBF8 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x24] + subs r0, #8 + strh r0, [r3, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x50 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _081CBC1E + adds r2, r3, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _081CBC24 + str r0, [r3, #0x1c] +_081CBC1E: + pop {r0} + bx r0 + .align 2, 0 +_081CBC24: .4byte sub_08007140 + thumb_func_end sub_081CBBF8 + + thumb_func_start sub_081CBC28 +sub_081CBC28: @ 0x081CBC28 + push {r4, lr} + movs r0, #3 + movs r1, #0x14 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CBC44 + ldr r1, _081CBC48 + movs r0, #0x10 + bl sub_081C6DDC + cmp r0, #0 + bne _081CBC4C +_081CBC44: + movs r0, #0 + b _081CBC6E + .align 2, 0 +_081CBC48: .4byte 0x00000884 +_081CBC4C: + ldr r0, _081CBC60 + ldrb r0, [r0, #0x14] + bl sub_08124674 + str r0, [r4, #0xc] + cmp r0, #0 + bne _081CBC68 + ldr r0, _081CBC64 + b _081CBC6A + .align 2, 0 +_081CBC60: .4byte gUnknown_2036FB8 +_081CBC64: .4byte sub_081CBCBC +_081CBC68: + ldr r0, _081CBC74 +_081CBC6A: + str r0, [r4, #0x10] + movs r0, #1 +_081CBC6E: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CBC74: .4byte sub_081CBD08 + thumb_func_end sub_081CBC28 + + thumb_func_start sub_081CBC78 +sub_081CBC78: @ 0x081CBC78 + push {lr} + bl sub_08124664 + ldr r1, _081CBCA4 + ldr r3, [r1] + movs r1, #1 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r3, #0x15] + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x15] + movs r0, #0x10 + bl sub_081C6E10 + movs r0, #3 + bl sub_081C6E10 + pop {r0} + bx r0 + .align 2, 0 +_081CBCA4: .4byte gUnknown_3005AF0 + thumb_func_end sub_081CBC78 + + thumb_func_start sub_081CBCA8 +sub_081CBCA8: @ 0x081CBCA8 + push {lr} + movs r0, #3 + bl sub_081C6DFC + ldr r1, [r0, #0x10] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBCA8 + + thumb_func_start sub_081CBCBC +sub_081CBCBC: @ 0x081CBCBC + push {r4, lr} + adds r4, r0, #0 + bl sub_081230B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + beq _081CBCE0 + cmp r0, #4 + bgt _081CBCD6 + cmp r0, #3 + beq _081CBCDC + b _081CBD00 +_081CBCD6: + cmp r0, #5 + beq _081CBCF2 + b _081CBD00 +_081CBCDC: + movs r0, #1 + b _081CBD02 +_081CBCE0: + bl sub_08124664 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CBCEE + movs r0, #3 + b _081CBD02 +_081CBCEE: + movs r0, #2 + b _081CBD02 +_081CBCF2: + ldr r0, _081CBCFC + str r0, [r4, #0x10] + movs r0, #4 + b _081CBD02 + .align 2, 0 +_081CBCFC: .4byte sub_081CBD30 +_081CBD00: + movs r0, #0 +_081CBD02: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CBCBC + + thumb_func_start sub_081CBD08 +sub_081CBD08: @ 0x081CBD08 + push {lr} + adds r2, r0, #0 + ldr r0, _081CBD1C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081CBD20 + movs r0, #0 + b _081CBD26 + .align 2, 0 +_081CBD1C: .4byte gUnknown_3002360 +_081CBD20: + ldr r0, _081CBD2C + str r0, [r2, #0x10] + movs r0, #4 +_081CBD26: + pop {r1} + bx r1 + .align 2, 0 +_081CBD2C: .4byte sub_081CBD30 + thumb_func_end sub_081CBD08 + + thumb_func_start sub_081CBD30 +sub_081CBD30: @ 0x081CBD30 + ldr r0, _081CBD34 + bx lr + .align 2, 0 +_081CBD34: .4byte 0x000186A1 + thumb_func_end sub_081CBD30 + + thumb_func_start sub_081CBD38 +sub_081CBD38: @ 0x081CBD38 + push {lr} + movs r0, #3 + bl sub_081C6DFC + ldr r0, [r0, #0xc] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBD38 + + thumb_func_start sub_081CBD48 +sub_081CBD48: @ 0x081CBD48 + push {r4, lr} + ldr r1, _081CBD6C + movs r0, #4 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CBD78 + ldr r0, _081CBD70 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CBD74 + str r0, [r4] + movs r0, #1 + b _081CBD7A + .align 2, 0 +_081CBD6C: .4byte 0x00001948 +_081CBD70: .4byte sub_081CBE48 +_081CBD74: .4byte sub_081CBE10 +_081CBD78: + movs r0, #0 +_081CBD7A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CBD48 + + thumb_func_start sub_081CBD80 +sub_081CBD80: @ 0x081CBD80 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081CBDA8 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081CBDAC + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CBDA8: .4byte gUnknown_85F4D08 +_081CBDAC: .4byte sub_081CBE10 + thumb_func_end sub_081CBD80 + + thumb_func_start sub_081CBDB0 +sub_081CBDB0: @ 0x081CBDB0 + push {lr} + movs r0, #4 + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081CBDB0 + + thumb_func_start sub_081CBDC0 +sub_081CBDC0: @ 0x081CBDC0 + bx r1 + .align 2, 0 + thumb_func_end sub_081CBDC0 + + thumb_func_start sub_081CBDC4 +sub_081CBDC4: @ 0x081CBDC4 + push {r4, lr} + movs r0, #4 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_08123068 + bl sub_081CC140 + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0x10 + bl sub_081C6E10 + movs r0, #4 + bl sub_081C6E10 + bl sub_081C6DCC + movs r0, #0 + bl sub_0800194C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CBDC4 + + thumb_func_start sub_081CBDF8 +sub_081CBDF8: @ 0x081CBDF8 + push {lr} + bl sub_080A1288 + bl sub_08006EA0 + bl sub_08007144 + bl sub_081237C0 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CBDF8 + + thumb_func_start sub_081CBE10 +sub_081CBE10: @ 0x081CBE10 + push {lr} + movs r0, #4 + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBE10 + + thumb_func_start sub_081CBE24 +sub_081CBE24: @ 0x081CBE24 + push {lr} + bl sub_081CBD38 + cmp r0, #0 + bne _081CBE40 + ldr r0, _081CBE3C + ldr r0, [r0] + ldrb r0, [r0, #0x15] + lsrs r0, r0, #3 + movs r1, #1 + ands r0, r1 + b _081CBE42 + .align 2, 0 +_081CBE3C: .4byte gUnknown_3005AF0 +_081CBE40: + movs r0, #0 +_081CBE42: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBE24 + + thumb_func_start sub_081CBE48 +sub_081CBE48: @ 0x081CBE48 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #7 + bls _081CBE5A + b _081CBF92 +_081CBE5A: + lsls r0, r4, #2 + ldr r1, _081CBE64 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CBE64: .4byte _081CBE68 +_081CBE68: @ jump table + .4byte _081CBE88 @ case 0 + .4byte _081CBED8 @ case 1 + .4byte _081CBF0A @ case 2 + .4byte _081CBF12 @ case 3 + .4byte _081CBF22 @ case 4 + .4byte _081CBF36 @ case 5 + .4byte _081CBF58 @ case 6 + .4byte _081CBF7E @ case 7 +_081CBE88: + movs r0, #0 + bl sub_081C6DC0 + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + movs r0, #1 + bl sub_0800194C + ldr r4, _081CBED4 + adds r0, r4, #0 + movs r1, #2 + bl sub_081C7314 + movs r0, #0x10 + bl sub_081C6DFC + adds r5, r0, #0 + adds r4, #4 + bl sub_081CBE24 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08122D04 + bl sub_081CC114 +_081CBED0: + movs r0, #0 + b _081CBF94 + .align 2, 0 +_081CBED4: .4byte gUnknown_85F4CFC +_081CBED8: + bl sub_08122DBC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CBF8E + bl sub_081CBD38 + cmp r0, #0 + bne _081CBF00 + movs r0, #4 + movs r1, #9 + bl sub_08124294 + movs r0, #5 + movs r1, #0xa + bl sub_081240E0 + bl sub_08124558 + b _081CBED0 +_081CBF00: + movs r0, #0 + movs r1, #6 + bl sub_0812303C + b _081CBED0 +_081CBF0A: + bl sub_081CC450 +_081CBF0E: + movs r0, #1 + b _081CBF94 +_081CBF12: + bl sub_081CC464 + cmp r0, #0 + bne _081CBF8E + adds r0, r5, #0 + bl sub_081CC170 + b _081CBF0E +_081CBF22: + bl sub_081CC250 + cmp r0, #0 + bne _081CBF8E + adds r0, r5, #0 + bl sub_081CC260 + bl sub_081C7300 + b _081CBED0 +_081CBF36: + adds r0, r5, #0 + bl sub_081CC38C + cmp r0, #0 + bne _081CBF8E + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + ldr r0, _081CBF54 + bl sub_081C6DC0 + b _081CBED0 + .align 2, 0 +_081CBF54: .4byte sub_081CBDF8 +_081CBF58: + bl sub_081CBE24 + lsls r0, r0, #0x18 + movs r4, #5 + cmp r0, #0 + bne _081CBF66 + movs r4, #4 +_081CBF66: + adds r0, r4, #0 + bl sub_081C75BC + adds r0, r4, #0 + movs r1, #1 + movs r2, #1 + bl sub_081C7748 + movs r0, #1 + bl sub_081C7280 + b _081CBED0 +_081CBF7E: + bl sub_081C72F4 + cmp r0, #0 + bne _081CBF8E + bl sub_081C77B8 + cmp r0, #0 + beq _081CBF0E +_081CBF8E: + movs r0, #2 + b _081CBF94 +_081CBF92: + movs r0, #4 +_081CBF94: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBE48 + + thumb_func_start sub_081CBF9C +sub_081CBF9C: @ 0x081CBF9C + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + cmp r4, #0 + beq _081CBFB0 + cmp r4, #1 + beq _081CBFB8 + b _081CBFC4 +_081CBFB0: + bl sub_081CC260 + movs r0, #0 + b _081CBFC6 +_081CBFB8: + bl sub_081CC38C + cmp r0, #0 + beq _081CBFC4 + movs r0, #2 + b _081CBFC6 +_081CBFC4: + movs r0, #4 +_081CBFC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CBF9C + + thumb_func_start sub_081CBFCC +sub_081CBFCC: @ 0x081CBFCC + push {lr} + cmp r0, #1 + beq _081CBFF6 + cmp r0, #1 + bgt _081CBFDC + cmp r0, #0 + beq _081CBFE2 + b _081CC024 +_081CBFDC: + cmp r0, #2 + beq _081CC012 + b _081CC024 +_081CBFE2: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081CC39C + bl sub_08123424 + movs r0, #0 + b _081CC026 +_081CBFF6: + bl sub_08123520 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CC01A + bl sub_081CC3C8 + cmp r0, #0 + bne _081CC01A + movs r0, #1 + bl sub_081C7364 + movs r0, #0 + b _081CC026 +_081CC012: + bl sub_081C73A8 + cmp r0, #0 + beq _081CC01E +_081CC01A: + movs r0, #2 + b _081CC026 +_081CC01E: + movs r0, #4 + bl sub_081C75D4 +_081CC024: + movs r0, #4 +_081CC026: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CBFCC + + thumb_func_start sub_081CC02C +sub_081CC02C: @ 0x081CC02C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CC060 + cmp r4, #1 + bgt _081CC046 + cmp r4, #0 + beq _081CC050 + b _081CC0A6 +_081CC046: + cmp r4, #2 + beq _081CC078 + cmp r4, #3 + beq _081CC094 + b _081CC0A6 +_081CC050: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081CC260 + movs r0, #0 + b _081CC0A8 +_081CC060: + adds r0, r5, #0 + bl sub_081CC38C + cmp r0, #0 + bne _081CC09C + movs r0, #1 + bl sub_081CC39C + bl sub_08123424 + movs r0, #0 + b _081CC0A8 +_081CC078: + bl sub_08123520 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CC09C + bl sub_081CC3C8 + cmp r0, #0 + bne _081CC09C + movs r0, #2 + bl sub_081C7364 + movs r0, #0 + b _081CC0A8 +_081CC094: + bl sub_081C73A8 + cmp r0, #0 + beq _081CC0A0 +_081CC09C: + movs r0, #2 + b _081CC0A8 +_081CC0A0: + movs r0, #5 + bl sub_081C75D4 +_081CC0A6: + movs r0, #4 +_081CC0A8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CC02C + + thumb_func_start sub_081CC0B0 +sub_081CC0B0: @ 0x081CC0B0 + push {lr} + cmp r0, #1 + beq _081CC0D6 + cmp r0, #1 + bgt _081CC0C0 + cmp r0, #0 + beq _081CC0C6 + b _081CC10C +_081CC0C0: + cmp r0, #2 + beq _081CC0EA + b _081CC10C +_081CC0C6: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + movs r0, #0 + b _081CC10E +_081CC0D6: + bl sub_081C72F4 + cmp r0, #0 + bne _081CC0F2 + bl sub_081C7784 + bl sub_081C7060 + movs r0, #0 + b _081CC10E +_081CC0EA: + bl sub_081C7080 + cmp r0, #0 + beq _081CC0F6 +_081CC0F2: + movs r0, #2 + b _081CC10E +_081CC0F6: + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + movs r0, #0 + b _081CC10E +_081CC10C: + movs r0, #4 +_081CC10E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CC0B0 + + thumb_func_start sub_081CC114 +sub_081CC114: @ 0x081CC114 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _081CC138 +_081CC11A: + adds r0, r4, #0 + bl sub_08034388 + adds r4, #8 + adds r5, #1 + cmp r5, #0 + beq _081CC11A + ldr r0, _081CC13C + bl sub_081C711C + bl sub_081CC598 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CC138: .4byte gUnknown_85F4D1C +_081CC13C: .4byte gUnknown_85F4D24 + thumb_func_end sub_081CC114 + + thumb_func_start sub_081CC140 +sub_081CC140: @ 0x081CC140 + push {r4, r5, lr} + movs r0, #4 + bl sub_081C6DFC + adds r4, r0, #0 + movs r0, #6 + bl sub_08008280 + movs r0, #0xb + bl sub_08008564 + adds r5, r4, #0 + adds r5, #0xc + movs r4, #2 +_081CC15C: + ldm r5!, {r0} + bl sub_08006E00 + subs r4, #1 + cmp r4, #0 + bge _081CC15C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CC140 + + thumb_func_start sub_081CC170 +sub_081CC170: @ 0x081CC170 + push {r4, r5, lr} + sub sp, #8 + adds r5, r0, #0 + movs r0, #1 + movs r1, #0 + movs r2, #0x40 + movs r3, #1 + bl sub_08199A88 + movs r0, #1 + movs r1, #0x11 + movs r2, #0x41 + movs r3, #1 + bl sub_08199A88 + add r1, sp, #4 + movs r2, #0x82 + lsls r2, r2, #5 + adds r0, r2, #0 + strh r0, [r1] + adds r4, r5, #0 + adds r4, #0x18 + ldr r2, _081CC21C + adds r0, r1, #0 + adds r1, r4, #0 + bl CpuSet + movs r0, #1 + adds r1, r4, #0 + bl sub_0800212C + ldr r0, _081CC220 + bl sub_08003250 + movs r4, #0 + strh r0, [r5, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x42 + movs r2, #0x40 + bl sub_08098144 + ldrb r0, [r5, #8] + movs r1, #0x42 + movs r2, #4 + bl sub_080981E0 + ldr r1, _081CC224 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldrb r0, [r5, #8] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5, #8] + bl sub_0800365C + ldrb r0, [r5, #8] + movs r1, #3 + bl sub_08003528 + ldr r0, _081CC228 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + ldr r0, _081CC22C + movs r1, #0x30 + movs r2, #0x20 + bl sub_081C7104 + bl sub_08124664 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CC234 + ldr r1, _081CC230 + movs r0, #1 + movs r2, #0 + bl sub_08001E94 + b _081CC23E + .align 2, 0 +_081CC21C: .4byte 0x01000400 +_081CC220: .4byte gUnknown_85F4D34 +_081CC224: .4byte gUnknown_85F4248 +_081CC228: .4byte gUnknown_85F4208 +_081CC22C: .4byte gUnknown_85F4228 +_081CC230: .4byte 0xFFFFA000 +_081CC234: + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 +_081CC23E: + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081CC170 + + thumb_func_start sub_081CC250 +sub_081CC250: @ 0x081CC250 + push {lr} + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CC250 + + thumb_func_start sub_081CC260 +sub_081CC260: @ 0x081CC260 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + movs r0, #0x10 + bl sub_081C6DFC + adds r6, r0, #0 + ldrb r0, [r6, #2] + cmp r0, #4 + bls _081CC276 + b _081CC380 +_081CC276: + lsls r0, r0, #2 + ldr r1, _081CC280 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CC280: .4byte _081CC284 +_081CC284: @ jump table + .4byte _081CC35C @ case 0 + .4byte _081CC31C @ case 1 + .4byte _081CC298 @ case 2 + .4byte _081CC2D8 @ case 3 + .4byte _081CC31C @ case 4 +_081CC298: + ldrb r0, [r5, #8] + movs r4, #2 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0xc + bl sub_080037C4 + ldrb r0, [r5, #8] + adds r2, r6, #4 + str r4, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrh r1, [r6] + ldrb r2, [r6, #3] + adds r0, r5, #0 + bl sub_081CC4B0 + ldrb r0, [r5, #8] + movs r1, #3 + bl sub_08003528 + movs r0, #0 + bl sub_081CC6E4 + b _081CC380 +_081CC2D8: + ldrb r0, [r5, #8] + movs r4, #2 + str r4, [sp] + movs r1, #0 + movs r2, #0 + movs r3, #0xc + bl sub_080037C4 + ldrb r0, [r5, #8] + adds r2, r6, #4 + str r4, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r1, _081CC318 + movs r0, #0xc + str r0, [sp] + movs r0, #0xb + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x11 + movs r3, #6 + bl sub_080026E0 + b _081CC34C + .align 2, 0 +_081CC318: .4byte 0x00001041 +_081CC31C: + ldrb r0, [r5, #8] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5, #8] + bl sub_0800365C + ldrb r0, [r5, #8] + adds r2, r6, #4 + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldrh r1, [r6] + ldrb r2, [r6, #3] + adds r0, r5, #0 + bl sub_081CC528 +_081CC34C: + ldrb r0, [r5, #8] + movs r1, #3 + bl sub_08003528 + movs r0, #1 + bl sub_081CC6E4 + b _081CC380 +_081CC35C: + ldr r1, _081CC388 + movs r0, #0xc + str r0, [sp] + movs r0, #0xd + str r0, [sp, #4] + movs r0, #0x11 + str r0, [sp, #8] + movs r0, #1 + movs r2, #0x11 + movs r3, #4 + bl sub_080026E0 + movs r0, #1 + bl sub_08002248 + movs r0, #1 + bl sub_081CC6E4 +_081CC380: + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CC388: .4byte 0x00001041 + thumb_func_end sub_081CC260 + + thumb_func_start sub_081CC38C +sub_081CC38C: @ 0x081CC38C + push {lr} + bl sub_08001AEC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CC38C + + thumb_func_start sub_081CC39C +sub_081CC39C: @ 0x081CC39C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CC3C0 + movs r1, #3 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r2, _081CC3C4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r1, r1, r2 + strh r4, [r1, #8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CC3C0: .4byte sub_081CC3DC +_081CC3C4: .4byte gUnknown_3005B60 + thumb_func_end sub_081CC39C + + thumb_func_start sub_081CC3C8 +sub_081CC3C8: @ 0x081CC3C8 + push {lr} + ldr r0, _081CC3D8 + bl sub_080A8AAC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081CC3D8: .4byte sub_081CC3DC + thumb_func_end sub_081CC3C8 + + thumb_func_start sub_081CC3DC +sub_081CC3DC: @ 0x081CC3DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + ldr r1, _081CC41C + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _081CC420 + movs r1, #0x90 + lsls r1, r1, #3 + movs r0, #1 + movs r2, #1 + bl sub_08001E94 + cmp r0, #0 + blt _081CC416 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + adds r0, r4, #0 + bl sub_080A8964 +_081CC416: + bl sub_081CC6B8 + b _081CC444 + .align 2, 0 +_081CC41C: .4byte gUnknown_3005B60 +_081CC420: + movs r1, #0x90 + lsls r1, r1, #3 + movs r0, #1 + movs r2, #2 + bl sub_08001E94 + ldr r1, _081CC44C + cmp r0, r1 + bgt _081CC440 + movs r0, #1 + movs r2, #0 + bl sub_08001E94 + adds r0, r5, #0 + bl sub_080A8964 +_081CC440: + bl sub_081CC6B8 +_081CC444: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CC44C: .4byte 0xFFFFA000 + thumb_func_end sub_081CC3DC + + thumb_func_start sub_081CC450 +sub_081CC450: @ 0x081CC450 + push {lr} + ldr r0, _081CC460 + movs r1, #1 + bl sub_081C6838 + pop {r0} + bx r0 + .align 2, 0 +_081CC460: .4byte sub_081CC474 + thumb_func_end sub_081CC450 + + thumb_func_start sub_081CC464 +sub_081CC464: @ 0x081CC464 + push {lr} + ldr r0, _081CC470 + bl sub_081C68E4 + pop {r1} + bx r1 + .align 2, 0 +_081CC470: .4byte sub_081CC474 + thumb_func_end sub_081CC464 + + thumb_func_start sub_081CC474 +sub_081CC474: @ 0x081CC474 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + adds r2, r0, #0 + cmp r4, #0x15 + ble _081CC488 + movs r0, #4 + b _081CC4A2 +_081CC488: + ldr r0, _081CC4A8 + lsls r1, r4, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + movs r1, #0xc8 + muls r1, r4, r1 + ldr r3, _081CC4AC + adds r1, r1, r3 + adds r1, r2, r1 + bl LZ77UnCompWram + movs r0, #1 +_081CC4A2: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CC4A8: .4byte gUnknown_85F4D3C +_081CC4AC: .4byte 0x00000818 + thumb_func_end sub_081CC474 + + thumb_func_start sub_081CC4B0 +sub_081CC4B0: @ 0x081CC4B0 + push {r4, r5, r6, lr} + sub sp, #8 + adds r6, r0, #0 + adds r3, r1, #0 + movs r4, #0 + ldr r0, _081CC51C + ldrh r1, [r0] + adds r5, r0, #0 + cmp r1, r3 + bne _081CC4CA + ldrh r0, [r5, #2] + cmp r0, r2 + beq _081CC4E0 +_081CC4CA: + adds r4, #1 + cmp r4, #0x15 + bgt _081CC4E0 + lsls r0, r4, #3 + adds r1, r0, r5 + ldrh r0, [r1] + cmp r0, r3 + bne _081CC4CA + ldrh r0, [r1, #2] + cmp r0, r2 + bne _081CC4CA +_081CC4E0: + cmp r4, #0x16 + beq _081CC514 + ldr r1, _081CC520 + movs r0, #0xc + str r0, [sp] + movs r0, #0xb + str r0, [sp, #4] + movs r0, #1 + movs r2, #0x11 + movs r3, #6 + bl sub_080025E0 + movs r0, #0xc8 + adds r1, r4, #0 + muls r1, r0, r1 + ldr r0, _081CC524 + adds r1, r1, r0 + adds r1, r6, r1 + movs r0, #0xa + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + movs r2, #0x12 + movs r3, #6 + bl sub_080022B0 +_081CC514: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CC51C: .4byte gUnknown_85F4D3C +_081CC520: .4byte 0x00001041 +_081CC524: .4byte 0x00000818 + thumb_func_end sub_081CC4B0 + + thumb_func_start sub_081CC528 +sub_081CC528: @ 0x081CC528 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0xc + mov sb, r0 + movs r5, #0 + ldr r6, _081CC544 + movs r4, #0x90 + lsls r4, r4, #0x15 + lsls r1, r1, #0x18 + mov r8, r1 + lsls r7, r2, #0x18 + b _081CC574 + .align 2, 0 +_081CC544: .4byte gUnknown_2021C40 +_081CC548: + adds r0, r6, #0 + movs r2, #0 + movs r3, #0xc + bl sub_08008E14 + mov r1, sb + ldrb r0, [r1, #8] + lsrs r1, r4, #0x18 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r6, #0 + movs r3, #0 + bl sub_0800449C + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r4, r4, r0 + adds r5, #1 +_081CC574: + lsls r2, r5, #0x18 + lsrs r2, r2, #0x18 + mov r1, r8 + lsrs r0, r1, #0x18 + lsrs r1, r7, #0x18 + bl sub_08145DB4 + adds r1, r0, #0 + cmp r1, #0 + bne _081CC548 + add sp, #0xc + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CC528 + + thumb_func_start sub_081CC598 +sub_081CC598: @ 0x081CC598 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r0, #4 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_08124664 + lsls r0, r0, #0x18 + movs r2, #0x84 + cmp r0, #0 + bne _081CC5B4 + movs r2, #0xe4 +_081CC5B4: + movs r5, #0 + lsls r7, r2, #0x10 + adds r4, #0xc + mov r8, r4 + movs r6, #0x98 + lsls r6, r6, #0x10 +_081CC5C0: + asrs r1, r6, #0x10 + ldr r0, _081CC624 + asrs r2, r7, #0x10 + movs r3, #8 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + ldr r0, _081CC628 + adds r2, r2, r0 + movs r0, #0 + strh r0, [r2, #0x2e] + lsls r4, r5, #2 + strh r4, [r2, #0x30] + ldrh r3, [r2, #4] + lsls r1, r3, #0x16 + lsrs r0, r1, #0x16 + adds r1, r0, #0 + strh r0, [r2, #0x32] + movs r0, #0x96 + strh r0, [r2, #0x34] + strh r4, [r2, #0x36] + adds r1, r1, r4 + ldr r4, _081CC62C + adds r0, r4, #0 + ands r1, r0 + ldr r4, _081CC630 + adds r0, r4, #0 + ands r3, r0 + orrs r3, r1 + strh r3, [r2, #4] + mov r0, r8 + adds r0, #4 + mov r8, r0 + subs r0, #4 + stm r0!, {r2} + movs r4, #0x80 + lsls r4, r4, #0xe + adds r6, r6, r4 + adds r5, #1 + cmp r5, #2 + ble _081CC5C0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CC624: .4byte gUnknown_85F4DF4 +_081CC628: .4byte gUnknown_20205AC +_081CC62C: .4byte 0x000003FF +_081CC630: .4byte 0xFFFFFC00 + thumb_func_end sub_081CC598 + + thumb_func_start sub_081CC634 +sub_081CC634: @ 0x081CC634 + push {r4, r5, lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x34] + movs r1, #0x34 + ldrsh r4, [r3, r1] + cmp r4, #0 + beq _081CC646 + subs r0, #1 + b _081CC6AE +_081CC646: + ldrh r0, [r3, #0x2e] + adds r0, #1 + strh r0, [r3, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xb + ble _081CC656 + strh r4, [r3, #0x2e] +_081CC656: + ldrh r0, [r3, #0x30] + adds r0, #1 + strh r0, [r3, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _081CC666 + strh r4, [r3, #0x30] +_081CC666: + ldrh r5, [r3, #0x30] + ldrh r2, [r3, #0x32] + adds r1, r5, r2 + ldr r2, _081CC694 + adds r0, r2, #0 + ands r1, r0 + ldrh r2, [r3, #4] + ldr r0, _081CC698 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, #4] + ldrh r1, [r3, #0x38] + movs r2, #0x38 + ldrsh r0, [r3, r2] + cmp r0, #3 + bgt _081CC69C + movs r2, #0x2e + ldrsh r0, [r3, r2] + cmp r0, #0 + bne _081CC6B0 + adds r0, r1, #1 + strh r0, [r3, #0x38] + b _081CC6AC + .align 2, 0 +_081CC694: .4byte 0x000003FF +_081CC698: .4byte 0xFFFFFC00 +_081CC69C: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r3, r2] + cmp r0, r1 + bne _081CC6B0 + strh r4, [r3, #0x38] + strh r4, [r3, #0x2e] +_081CC6AC: + movs r0, #0x78 +_081CC6AE: + strh r0, [r3, #0x34] +_081CC6B0: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CC634 + + thumb_func_start sub_081CC6B8 +sub_081CC6B8: @ 0x081CC6B8 + push {r4, lr} + movs r0, #4 + bl sub_081C6DFC + adds r4, r0, #0 + movs r0, #1 + bl sub_08001FD0 + asrs r0, r0, #8 + movs r1, #0x84 + subs r1, r1, r0 + adds r4, #0xc + movs r2, #2 +_081CC6D2: + ldm r4!, {r0} + strh r1, [r0, #0x22] + subs r2, #1 + cmp r2, #0 + bge _081CC6D2 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CC6B8 + + thumb_func_start sub_081CC6E4 +sub_081CC6E4: @ 0x081CC6E4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #4 + bl sub_081C6DFC + movs r1, #1 + ands r4, r1 + lsls r5, r4, #2 + movs r6, #5 + rsbs r6, r6, #0 + adds r4, r0, #0 + adds r4, #0xc + movs r3, #2 +_081CC6FE: + ldm r4!, {r0} + adds r0, #0x3e + ldrb r2, [r0] + adds r1, r6, #0 + ands r1, r2 + orrs r1, r5 + strb r1, [r0] + subs r3, #1 + cmp r3, #0 + bge _081CC6FE + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081CC6E4 + + thumb_func_start sub_081CC718 +sub_081CC718: @ 0x081CC718 + push {r4, lr} + ldr r1, _081CC748 + movs r0, #0xb + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CC75C + ldr r1, _081CC74C + adds r0, r4, r1 + bl sub_081D151C + bl sub_081CD0D0 + ldr r1, _081CC750 + movs r0, #0x14 + strh r0, [r1] + ldr r0, _081CC754 + adds r1, r4, r0 + ldr r0, _081CC758 + str r0, [r1] + movs r0, #1 + b _081CC75E + .align 2, 0 +_081CC748: .4byte 0x0000678C +_081CC74C: .4byte 0x00006428 +_081CC750: .4byte gUnknown_3002350 +_081CC754: .4byte 0x00006304 +_081CC758: .4byte sub_081CC7CC +_081CC75C: + movs r0, #0 +_081CC75E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CC718 + + thumb_func_start sub_081CC764 +sub_081CC764: @ 0x081CC764 + push {r4, lr} + ldr r1, _081CC794 + movs r0, #0xb + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CC7A8 + ldr r1, _081CC798 + adds r0, r4, r1 + bl sub_081D151C + bl sub_081CD158 + ldr r1, _081CC79C + movs r0, #0x14 + strh r0, [r1] + ldr r0, _081CC7A0 + adds r1, r4, r0 + ldr r0, _081CC7A4 + str r0, [r1] + movs r0, #1 + b _081CC7AA + .align 2, 0 +_081CC794: .4byte 0x0000678C +_081CC798: .4byte 0x00006428 +_081CC79C: .4byte gUnknown_3002350 +_081CC7A0: .4byte 0x00006304 +_081CC7A4: .4byte sub_081CC7CC +_081CC7A8: + movs r0, #0 +_081CC7AA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CC764 + + thumb_func_start sub_081CC7B0 +sub_081CC7B0: @ 0x081CC7B0 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r2, _081CC7C8 + adds r1, r0, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 +_081CC7C8: .4byte 0x00006304 + thumb_func_end sub_081CC7B0 + + thumb_func_start sub_081CC7CC +sub_081CC7CC: @ 0x081CC7CC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_081CC924 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _081CC840 + ldr r0, _081CC824 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081CC810 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _081CC840 + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081CC830 + ldrh r1, [r5, #2] + ldrh r0, [r5] + subs r0, #1 + cmp r1, r0 + bne _081CC840 +_081CC810: + movs r0, #5 + bl sub_080A306C + ldr r0, _081CC828 + adds r1, r4, r0 + ldr r0, _081CC82C + str r0, [r1] + movs r2, #2 + b _081CC840 + .align 2, 0 +_081CC824: .4byte gUnknown_3002360 +_081CC828: .4byte 0x00006304 +_081CC82C: .4byte sub_081CC8DC +_081CC830: + movs r0, #5 + bl sub_080A306C + movs r2, #5 + ldr r0, _081CC848 + adds r1, r4, r0 + ldr r0, _081CC84C + str r0, [r1] +_081CC840: + adds r0, r2, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081CC848: .4byte 0x00006304 +_081CC84C: .4byte sub_081CC850 + thumb_func_end sub_081CC7CC + + thumb_func_start sub_081CC850 +sub_081CC850: @ 0x081CC850 + push {r4, r5, r6, lr} + sub sp, #4 + adds r6, r0, #0 + movs r4, #0 + bl sub_081200C4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CC8CA + bl sub_081CE648 + ldr r1, _081CC8A8 + adds r5, r6, r1 + movs r1, #0 + ldrsb r1, [r5, r1] + ldr r2, _081CC8AC + adds r4, r6, r2 + adds r1, r4, r1 + strb r0, [r1] + movs r0, #0x12 + bl sub_081C6DFC + ldrh r1, [r0, #2] + lsls r1, r1, #2 + adds r0, r0, r1 + ldrb r2, [r0, #4] + ldrb r3, [r0, #5] + movs r0, #0 + ldrsb r0, [r5, r0] + adds r4, r4, r0 + ldrb r1, [r4] + mov r0, sp + strb r1, [r0] + cmp r2, #0xe + bne _081CC8B4 + movs r0, #0x64 + muls r0, r3, r0 + ldr r1, _081CC8B0 + adds r0, r0, r1 + movs r1, #8 + mov r2, sp + bl sub_0806A774 + b _081CC8C0 + .align 2, 0 +_081CC8A8: .4byte 0x00006786 +_081CC8AC: .4byte 0x00006783 +_081CC8B0: .4byte gUnknown_2024190 +_081CC8B4: + adds r0, r2, #0 + adds r1, r3, #0 + movs r2, #8 + mov r3, sp + bl sub_080D1614 +_081CC8C0: + ldr r0, _081CC8D4 + adds r1, r6, r0 + ldr r0, _081CC8D8 + str r0, [r1] + movs r4, #6 +_081CC8CA: + adds r0, r4, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081CC8D4: .4byte 0x00006304 +_081CC8D8: .4byte sub_081CC7CC + thumb_func_end sub_081CC850 + + thumb_func_start sub_081CC8DC +sub_081CC8DC: @ 0x081CC8DC + push {lr} + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081CC8F4 + ldr r0, _081CC8F0 + b _081CC8F6 + .align 2, 0 +_081CC8F0: .4byte 0x000186AA +_081CC8F4: + ldr r0, _081CC8FC +_081CC8F6: + pop {r1} + bx r1 + .align 2, 0 +_081CC8FC: .4byte 0x000186A2 + thumb_func_end sub_081CC8DC + + thumb_func_start sub_081CC900 +sub_081CC900: @ 0x081CC900 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081CC91A + movs r0, #0x12 + bl sub_081C6E10 +_081CC91A: + movs r0, #0xb + bl sub_081C6E10 + pop {r0} + bx r0 + thumb_func_end sub_081CC900 + + thumb_func_start sub_081CC924 +sub_081CC924: @ 0x081CC924 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r2, r0, #0 + movs r3, #0 + ldr r0, _081CC95C + ldrh r1, [r0, #0x2c] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CC960 + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081CC950 + ldrh r0, [r2, #2] + cmp r0, #0 + beq _081CC98E +_081CC950: + movs r0, #5 + bl sub_080A306C + movs r0, #1 + b _081CC986 + .align 2, 0 +_081CC95C: .4byte gUnknown_3002360 +_081CC960: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CC98E + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081CC97E + ldrh r1, [r2, #2] + ldrh r0, [r2] + subs r0, #1 + cmp r1, r0 + bge _081CC98E +_081CC97E: + movs r0, #5 + bl sub_080A306C + movs r0, #0 +_081CC986: + bl sub_081CC998 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 +_081CC98E: + adds r0, r3, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CC924 + + thumb_func_start sub_081CC998 +sub_081CC998: @ 0x081CC998 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + movs r0, #0xb + bl sub_081C6DFC + adds r4, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r5, r0, #0 + mov r0, r8 + cmp r0, #0 + beq _081CC9C4 + ldr r1, _081CC9C0 + adds r0, r4, r1 + b _081CC9C8 + .align 2, 0 +_081CC9C0: .4byte 0x00006788 +_081CC9C4: + ldr r2, _081CCA08 + adds r0, r4, r2 +_081CC9C8: + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r7, r0, #0 + ldr r1, _081CCA0C + adds r0, r4, r1 + ldr r2, _081CCA10 + adds r1, r4, r2 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #2 + ldr r3, _081CCA14 + adds r1, r1, r3 + adds r1, r4, r1 + lsls r2, r7, #2 + adds r2, r2, r7 + lsls r2, r2, #2 + adds r2, r2, r3 + adds r2, r4, r2 + bl sub_081D15CC + ldrh r6, [r5, #2] + bl sub_081CD4BC + cmp r0, #0 + beq _081CCA18 + ldrh r1, [r5] + b _081CCA1C + .align 2, 0 +_081CCA08: .4byte 0x00006787 +_081CCA0C: .4byte 0x00006428 +_081CCA10: .4byte 0x00006786 +_081CCA14: .4byte 0x0000643C +_081CCA18: + ldrh r1, [r5] + subs r1, #1 +_081CCA1C: + eors r1, r6 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + adds r6, r0, #0 + mov r0, r8 + cmp r0, #0 + beq _081CCA72 + ldr r1, _081CCA60 + adds r2, r4, r1 + ldrb r0, [r2] + adds r1, #1 + adds r3, r4, r1 + strb r0, [r3] + ldr r0, _081CCA64 + adds r1, r4, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r7, [r1] + ldrb r1, [r3] + ldr r2, _081CCA68 + adds r0, r4, r2 + strb r1, [r0] + ldrh r0, [r5, #2] + cmp r0, #0 + bne _081CCA52 + ldrh r0, [r5] +_081CCA52: + subs r1, r0, #1 + strh r1, [r5, #2] + lsls r0, r1, #0x10 + cmp r0, #0 + beq _081CCA6C + subs r1, #1 + b _081CCAC4 + .align 2, 0 +_081CCA60: .4byte 0x00006787 +_081CCA64: .4byte 0x00006786 +_081CCA68: .4byte 0x00006789 +_081CCA6C: + ldrh r0, [r5] + subs r1, r0, #1 + b _081CCAC4 +_081CCA72: + ldr r0, _081CCAA0 + adds r2, r4, r0 + ldrb r0, [r2] + ldr r1, _081CCAA4 + adds r3, r4, r1 + strb r0, [r3] + ldr r0, _081CCAA8 + adds r1, r4, r0 + ldrb r0, [r1] + strb r0, [r2] + strb r7, [r1] + ldrb r1, [r3] + ldr r2, _081CCAAC + adds r0, r4, r2 + strb r1, [r0] + ldrh r1, [r5, #2] + ldrh r0, [r5] + subs r0, #1 + cmp r1, r0 + bge _081CCAB0 + adds r0, r1, #1 + b _081CCAB2 + .align 2, 0 +_081CCAA0: .4byte 0x00006788 +_081CCAA4: .4byte 0x00006787 +_081CCAA8: .4byte 0x00006786 +_081CCAAC: .4byte 0x00006789 +_081CCAB0: + movs r0, #0 +_081CCAB2: + strh r0, [r5, #2] + ldrh r1, [r5, #2] + ldrh r0, [r5] + subs r0, #1 + cmp r1, r0 + bge _081CCAC2 + adds r1, #1 + b _081CCAC4 +_081CCAC2: + movs r1, #0 +_081CCAC4: + ldr r2, _081CCAD8 + adds r0, r4, r2 + strh r1, [r0] + ldrh r4, [r5, #2] + bl sub_081CD4BC + cmp r0, #0 + beq _081CCADC + ldrh r1, [r5] + b _081CCAE0 + .align 2, 0 +_081CCAD8: .4byte 0x00006302 +_081CCADC: + ldrh r1, [r5] + subs r1, #1 +_081CCAE0: + eors r1, r4 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + cmp r6, #0 + bne _081CCAF0 + movs r0, #3 + b _081CCAFA +_081CCAF0: + cmp r0, #0 + beq _081CCAF8 + movs r0, #1 + b _081CCAFA +_081CCAF8: + movs r0, #4 +_081CCAFA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081CC998 + + thumb_func_start sub_081CCB04 +sub_081CCB04: @ 0x081CCB04 + push {r4, lr} + movs r0, #0xb + bl sub_081C6DFC + adds r4, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r2, r0, #0 + ldr r1, _081CCB2C + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #9 + bls _081CCB22 + b _081CCC70 +_081CCB22: + lsls r0, r0, #2 + ldr r1, _081CCB30 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CCB2C: .4byte 0x0000678A +_081CCB30: .4byte _081CCB34 +_081CCB34: @ jump table + .4byte _081CCB5C @ case 0 + .4byte _081CCB68 @ case 1 + .4byte _081CCB74 @ case 2 + .4byte _081CCB80 @ case 3 + .4byte _081CCBD0 @ case 4 + .4byte _081CCBE8 @ case 5 + .4byte _081CCC00 @ case 6 + .4byte _081CCC18 @ case 7 + .4byte _081CCC30 @ case 8 + .4byte _081CCC48 @ case 9 +_081CCB5C: + movs r1, #2 + ldrsh r0, [r2, r1] + movs r1, #0 + bl sub_081CCF84 + b _081CCC70 +_081CCB68: + movs r1, #2 + ldrsh r0, [r2, r1] + movs r1, #0 + bl sub_081CD17C + b _081CCC70 +_081CCB74: + movs r1, #2 + ldrsh r0, [r2, r1] + movs r1, #0 + bl sub_081CD2F8 + b _081CCC70 +_081CCB80: + ldrh r0, [r2] + cmp r0, #1 + bne _081CCBA8 + ldr r2, _081CCBA4 + adds r0, r4, r2 + movs r1, #0 + strb r1, [r0] + adds r2, #1 + adds r0, r4, r2 + strb r1, [r0] + adds r2, #1 + adds r0, r4, r2 + strb r1, [r0] + adds r2, #2 + adds r0, r4, r2 + strb r1, [r0] + movs r0, #1 + b _081CCC7C + .align 2, 0 +_081CCBA4: .4byte 0x00006786 +_081CCBA8: + ldr r0, _081CCBC4 + adds r1, r4, r0 + movs r0, #0 + strb r0, [r1] + ldr r2, _081CCBC8 + adds r1, r4, r2 + movs r0, #1 + strb r0, [r1] + ldr r0, _081CCBCC + adds r1, r4, r0 + movs r0, #2 + strb r0, [r1] + b _081CCC70 + .align 2, 0 +_081CCBC4: .4byte 0x00006786 +_081CCBC8: .4byte 0x00006787 +_081CCBCC: .4byte 0x00006788 +_081CCBD0: + ldrh r0, [r2, #2] + adds r0, #1 + ldrh r2, [r2] + cmp r0, r2 + blt _081CCBDC + movs r0, #0 +_081CCBDC: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + bl sub_081CCF84 + b _081CCC70 +_081CCBE8: + ldrh r0, [r2, #2] + adds r0, #1 + ldrh r2, [r2] + cmp r0, r2 + blt _081CCBF4 + movs r0, #0 +_081CCBF4: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + bl sub_081CD17C + b _081CCC70 +_081CCC00: + ldrh r0, [r2, #2] + adds r0, #1 + ldrh r2, [r2] + cmp r0, r2 + blt _081CCC0C + movs r0, #0 +_081CCC0C: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #1 + bl sub_081CD2F8 + b _081CCC70 +_081CCC18: + ldrh r0, [r2, #2] + subs r0, #1 + cmp r0, #0 + bge _081CCC24 + ldrh r0, [r2] + subs r0, #1 +_081CCC24: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #2 + bl sub_081CCF84 + b _081CCC70 +_081CCC30: + ldrh r0, [r2, #2] + subs r0, #1 + cmp r0, #0 + bge _081CCC3C + ldrh r0, [r2] + subs r0, #1 +_081CCC3C: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #2 + bl sub_081CD17C + b _081CCC70 +_081CCC48: + ldrh r0, [r2, #2] + subs r0, #1 + cmp r0, #0 + bge _081CCC54 + ldrh r0, [r2] + subs r0, #1 +_081CCC54: + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #2 + bl sub_081CD2F8 + ldr r2, _081CCC6C + adds r1, r4, r2 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _081CCC7C + .align 2, 0 +_081CCC6C: .4byte 0x0000678A +_081CCC70: + ldr r0, _081CCC84 + adds r1, r4, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 +_081CCC7C: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CCC84: .4byte 0x0000678A + thumb_func_end sub_081CCB04 + + thumb_func_start sub_081CCC88 +sub_081CCC88: @ 0x081CCC88 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + adds r5, r4, #0 + movs r0, #0xb + bl sub_081C6DFC + adds r1, r0, #0 + cmp r4, #1 + beq _081CCCC8 + cmp r4, #1 + bgt _081CCCA6 + cmp r4, #0 + beq _081CCCAC + b _081CCD04 +_081CCCA6: + cmp r5, #2 + beq _081CCCE4 + b _081CCD04 +_081CCCAC: + ldr r2, _081CCCC0 + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + ldr r2, _081CCCC4 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_081CCF84 + b _081CCD04 + .align 2, 0 +_081CCCC0: .4byte 0x00006302 +_081CCCC4: .4byte 0x00006789 +_081CCCC8: + ldr r2, _081CCCDC + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + ldr r2, _081CCCE0 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_081CD17C + b _081CCD04 + .align 2, 0 +_081CCCDC: .4byte 0x00006302 +_081CCCE0: .4byte 0x00006789 +_081CCCE4: + ldr r2, _081CCCFC + adds r0, r1, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + ldr r2, _081CCD00 + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_081CD2F8 + movs r0, #1 + b _081CCD06 + .align 2, 0 +_081CCCFC: .4byte 0x00006302 +_081CCD00: .4byte 0x00006789 +_081CCD04: + movs r0, #0 +_081CCD06: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CCC88 + + thumb_func_start sub_081CCD0C +sub_081CCD0C: @ 0x081CCD0C + push {r4, lr} + adds r4, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + b _081CCD24 +_081CCD16: + strb r3, [r4] + adds r1, #1 + adds r4, #1 + lsls r0, r2, #0x10 + ldr r2, _081CCD60 + adds r0, r0, r2 + lsrs r2, r0, #0x10 +_081CCD24: + ldrb r3, [r1] + adds r0, r3, #0 + cmp r0, #0xff + bne _081CCD16 + adds r1, r2, #0 + lsls r0, r1, #0x10 + ldr r2, _081CCD60 + adds r0, r0, r2 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + cmp r1, #0 + ble _081CCD52 + movs r3, #0 +_081CCD3E: + strb r3, [r4] + adds r4, #1 + adds r1, r2, #0 + lsls r0, r1, #0x10 + ldr r2, _081CCD60 + adds r0, r0, r2 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _081CCD3E +_081CCD52: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CCD60: .4byte 0xFFFF0000 + thumb_func_end sub_081CCD0C + + thumb_func_start sub_081CCD64 +sub_081CCD64: @ 0x081CCD64 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + mov sl, r2 + movs r0, #0x12 + bl sub_081C6DFC + lsls r4, r4, #2 + adds r0, r0, r4 + ldrb r4, [r0, #4] + mov r8, r4 + ldrb r6, [r0, #5] + mov sb, r6 + movs r0, #0xfc + strb r0, [r5] + adds r5, #1 + movs r0, #4 + strb r0, [r5] + adds r5, #1 + movs r0, #8 + strb r0, [r5] + adds r5, #1 + movs r0, #0 + strb r0, [r5] + adds r5, #1 + movs r0, #9 + strb r0, [r5] + adds r5, #1 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x2d + movs r3, #0 + bl sub_081D227C + cmp r0, #0 + beq _081CCDD0 + ldr r1, _081CCDCC + adds r0, r5, #0 + movs r2, #0 + movs r3, #0xc + bl sub_08008E14 + b _081CCF6C + .align 2, 0 +_081CCDCC: .4byte gUnknown_85C8C62 +_081CCDD0: + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #2 + adds r3, r5, #0 + bl sub_081D227C + adds r0, r5, #0 + bl sub_0800885C + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081D227C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r4, #0xe + bne _081CCE20 + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _081CCE1C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _081CCE3E + .align 2, 0 +_081CCE1C: .4byte gUnknown_2024190 +_081CCE20: + mov r0, r8 + mov r1, sb + bl sub_080D1934 + adds r4, r0, #0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_081CCE3E: + cmp r7, #0x1d + beq _081CCE46 + cmp r7, #0x20 + bne _081CCE5C +_081CCE46: + lsls r1, r7, #1 + adds r1, r1, r7 + lsls r1, r1, #1 + ldr r0, _081CCE64 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_0800895C + cmp r0, #0 + bne _081CCE5C + movs r6, #0xff +_081CCE5C: + adds r3, r5, #0 + movs r4, #0 + b _081CCE70 + .align 2, 0 +_081CCE64: .4byte gUnknown_82EA31C +_081CCE68: + adds r3, #1 + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081CCE70: + ldrb r0, [r3] + cmp r0, #0xff + bne _081CCE68 + adds r1, r4, #0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r1, #4 + bhi _081CCE94 + movs r2, #0 +_081CCE84: + strb r2, [r3] + adds r3, #1 + adds r1, r4, #0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r1, #4 + bls _081CCE84 +_081CCE94: + movs r0, #0 + strb r0, [r3] + adds r3, #1 + cmp r6, #0 + beq _081CCEA4 + cmp r6, #0xfe + beq _081CCECA + b _081CCEEE +_081CCEA4: + movs r1, #0xfc + strb r1, [r3] + adds r3, #1 + movs r0, #1 + strb r0, [r3] + adds r3, #1 + movs r0, #4 + strb r0, [r3] + adds r3, #1 + strb r1, [r3] + adds r3, #1 + movs r0, #3 + strb r0, [r3] + adds r3, #1 + movs r0, #5 + strb r0, [r3] + adds r3, #1 + movs r0, #0xb5 + b _081CCEEE +_081CCECA: + movs r1, #0xfc + strb r1, [r3] + adds r3, #1 + movs r0, #1 + strb r0, [r3] + adds r3, #1 + movs r0, #6 + strb r0, [r3] + adds r3, #1 + strb r1, [r3] + adds r3, #1 + movs r0, #3 + strb r0, [r3] + adds r3, #1 + movs r0, #7 + strb r0, [r3] + adds r3, #1 + movs r0, #0xb6 +_081CCEEE: + strb r0, [r3] + adds r3, #1 + movs r0, #0xfc + strb r0, [r3] + adds r3, #1 + movs r0, #4 + strb r0, [r3] + adds r3, #1 + movs r0, #8 + strb r0, [r3] + adds r3, #1 + movs r5, #0 + strb r5, [r3] + adds r3, #1 + movs r0, #9 + strb r0, [r3] + adds r3, #1 + movs r0, #0xba + strb r0, [r3] + adds r3, #1 + movs r0, #0xf9 + strb r0, [r3] + adds r3, #1 + movs r0, #5 + strb r0, [r3] + adds r3, #1 + adds r4, r3, #0 + adds r0, r4, #0 + mov r1, r8 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r3, r0, #0 + subs r4, r3, r4 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + strb r5, [r3] + adds r3, #1 + mov r0, sl + cmp r0, #0 + bne _081CCF66 + movs r0, #3 + subs r0, r0, r4 + lsls r0, r0, #0x10 + ldr r1, _081CCF7C + adds r0, r0, r1 + lsrs r4, r0, #0x10 + ldr r0, _081CCF80 + cmp r4, r0 + beq _081CCF66 + movs r2, #0 + adds r1, r0, #0 +_081CCF58: + strb r2, [r3] + adds r3, #1 + subs r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, r1 + bne _081CCF58 +_081CCF66: + movs r0, #0xff + strb r0, [r3] + adds r0, r3, #0 +_081CCF6C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081CCF7C: .4byte 0xFFFF0000 +_081CCF80: .4byte 0x0000FFFF + thumb_func_end sub_081CCD64 + + thumb_func_start sub_081CCF84 +sub_081CCF84: @ 0x081CCF84 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r6, r1, #0x18 + movs r0, #0xb + bl sub_081C6DFC + adds r5, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r7, r0, #0 + mov r1, r8 + lsls r0, r1, #0x10 + asrs r4, r0, #0x10 + bl sub_081CD4BC + cmp r0, #0 + beq _081CCFBA + ldrh r2, [r7] + cmp r4, r2 + bne _081CCFC2 + b _081CD060 +_081CCFBA: + ldrh r0, [r7] + subs r0, #1 + cmp r4, r0 + beq _081CD060 +_081CCFC2: + lsls r0, r6, #6 + ldr r1, _081CD024 + adds r0, r0, r1 + adds r0, r5, r0 + mov r2, r8 + lsls r4, r2, #0x10 + lsrs r1, r4, #0x10 + movs r2, #0 + bl sub_081CCD64 + asrs r4, r4, #0xe + adds r4, r7, r4 + ldrb r3, [r4, #4] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r4, r0, #3 + ldr r1, _081CD028 + adds r0, r5, r1 + adds r0, r0, r4 + movs r2, #0 + movs r1, #0xfc + strb r1, [r0] + ldr r1, _081CD02C + adds r0, r5, r1 + adds r0, r0, r4 + movs r1, #4 + strb r1, [r0] + ldr r1, _081CD030 + adds r0, r5, r1 + adds r0, r0, r4 + movs r1, #8 + strb r1, [r0] + ldr r1, _081CD034 + adds r0, r5, r1 + adds r0, r0, r4 + strb r2, [r0] + ldr r2, _081CD038 + adds r0, r5, r2 + adds r0, r0, r4 + movs r1, #9 + strb r1, [r0] + cmp r3, #0xe + bne _081CD044 + adds r0, r4, r5 + ldr r1, _081CD03C + adds r0, r0, r1 + ldr r1, _081CD040 + b _081CD054 + .align 2, 0 +_081CD024: .4byte 0x00006368 +_081CD028: .4byte 0x00006320 +_081CD02C: .4byte 0x00006321 +_081CD030: .4byte 0x00006322 +_081CD034: .4byte 0x00006323 +_081CD038: .4byte 0x00006324 +_081CD03C: .4byte 0x00006325 +_081CD040: .4byte gUnknown_85CB7C6 +_081CD044: + adds r4, r4, r5 + ldr r2, _081CD05C + adds r4, r4, r2 + adds r0, r3, #0 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 +_081CD054: + movs r2, #8 + bl sub_081CCD0C + b _081CD0BC + .align 2, 0 +_081CD05C: .4byte 0x00006325 +_081CD060: + movs r1, #0 + lsls r4, r6, #6 + lsls r0, r6, #1 + mov r8, r0 + adds r3, r4, #0 + ldr r0, _081CD0C8 + adds r2, r5, r0 + movs r7, #0 +_081CD070: + adds r0, r1, r3 + adds r0, r2, r0 + strb r7, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xb + bls _081CD070 + adds r1, r1, r4 + ldr r2, _081CD0C8 + adds r0, r5, r2 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + movs r1, #0 + mov r2, r8 + adds r0, r2, r6 + lsls r3, r0, #3 + ldr r0, _081CD0CC + adds r2, r5, r0 + movs r4, #0 +_081CD09A: + adds r0, r1, r3 + adds r0, r2, r0 + strb r4, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #7 + bls _081CD09A + mov r2, r8 + adds r0, r2, r6 + lsls r0, r0, #3 + adds r0, r1, r0 + ldr r2, _081CD0CC + adds r1, r5, r2 + adds r1, r1, r0 + movs r0, #0xff + strb r0, [r1] +_081CD0BC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CD0C8: .4byte 0x00006368 +_081CD0CC: .4byte 0x00006320 + thumb_func_end sub_081CCF84 + + thumb_func_start sub_081CD0D0 +sub_081CD0D0: @ 0x081CD0D0 + push {r4, r5, r6, r7, lr} + movs r0, #0xb + bl sub_081C6DFC + adds r7, r0, #0 + ldr r1, _081CD0F4 + movs r0, #0x12 + bl sub_081C6DDC + adds r6, r0, #0 + movs r0, #0xc6 + lsls r0, r0, #7 + adds r1, r7, r0 + movs r0, #0 + strb r0, [r1] + movs r4, #0 + movs r5, #0 + b _081CD124 + .align 2, 0 +_081CD0F4: .4byte 0x000006AC +_081CD0F8: + movs r0, #0x64 + muls r0, r4, r0 + ldr r1, _081CD150 + adds r0, r0, r1 + movs r1, #0x2d + bl sub_0806A058 + adds r2, r0, #0 + cmp r2, #0 + bne _081CD11E + lsls r1, r5, #2 + adds r1, r6, r1 + movs r0, #0xe + strb r0, [r1, #4] + strb r4, [r1, #5] + strh r2, [r1, #6] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_081CD11E: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081CD124: + bl sub_0806B004 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r4, r0 + blo _081CD0F8 + lsls r0, r5, #2 + adds r0, r6, r0 + movs r1, #0 + strb r1, [r0, #4] + strb r1, [r0, #5] + movs r2, #0 + strh r1, [r0, #6] + strh r1, [r6, #2] + adds r0, r5, #1 + strh r0, [r6] + ldr r1, _081CD154 + adds r0, r7, r1 + strb r2, [r0] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CD150: .4byte gUnknown_2024190 +_081CD154: .4byte 0x0000678A + thumb_func_end sub_081CD0D0 + + thumb_func_start sub_081CD158 +sub_081CD158: @ 0x081CD158 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + movs r1, #0xc6 + lsls r1, r1, #7 + adds r2, r0, r1 + movs r3, #0 + movs r1, #1 + strb r1, [r2] + ldr r1, _081CD178 + adds r0, r0, r1 + strb r3, [r0] + pop {r0} + bx r0 + .align 2, 0 +_081CD178: .4byte 0x0000678A + thumb_func_end sub_081CD158 + + thumb_func_start sub_081CD17C +sub_081CD17C: @ 0x081CD17C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r0, #0xb + bl sub_081C6DFC + mov r8, r0 + movs r0, #0x12 + bl sub_081C6DFC + adds r4, r0, #0 + lsls r0, r6, #0x10 + asrs r5, r0, #0x10 + bl sub_081CD4BC + cmp r0, #0 + beq _081CD1B2 + ldrh r0, [r4] + cmp r5, r0 + bne _081CD1BA + b _081CD2A8 +_081CD1B2: + ldrh r0, [r4] + subs r0, #1 + cmp r5, r0 + beq _081CD2A8 +_081CD1BA: + lsls r0, r6, #0x10 + asrs r0, r0, #0xe + adds r0, r4, r0 + ldrb r6, [r0, #4] + ldrb r7, [r0, #5] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x16 + movs r3, #0 + bl sub_081D227C + mov r1, sb + lsls r5, r1, #2 + adds r4, r5, r1 + ldr r1, _081CD25C + add r1, r8 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x2f + movs r3, #0 + bl sub_081D227C + ldr r1, _081CD260 + add r1, r8 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x21 + movs r3, #0 + bl sub_081D227C + ldr r1, _081CD264 + add r1, r8 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x18 + movs r3, #0 + bl sub_081D227C + ldr r1, _081CD268 + add r1, r8 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x17 + movs r3, #0 + bl sub_081D227C + ldr r1, _081CD26C + add r1, r8 + adds r1, r1, r4 + strb r0, [r1] + movs r0, #0xcf + lsls r0, r0, #7 + add r0, r8 + mov r2, sb + adds r4, r0, r2 + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x30 + movs r3, #0 + bl sub_081D227C + cmp r0, #0xff + beq _081CD270 + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #0x30 + movs r3, #0 + bl sub_081D227C + movs r1, #0x1d + bl __udivsi3 + b _081CD272 + .align 2, 0 +_081CD25C: .4byte 0x00006428 +_081CD260: .4byte 0x00006429 +_081CD264: .4byte 0x0000642A +_081CD268: .4byte 0x0000642B +_081CD26C: .4byte 0x0000642C +_081CD270: + movs r0, #9 +_081CD272: + strb r0, [r4] + adds r0, r6, #0 + adds r1, r7, #0 + movs r2, #8 + movs r3, #0 + bl sub_081D227C + ldr r1, _081CD2A0 + add r1, r8 + add r1, sb + strb r0, [r1] + mov r0, sb + adds r1, r5, r0 + ldr r2, _081CD2A4 + adds r0, r1, r2 + add r0, r8 + lsls r1, r1, #2 + adds r2, #0x14 + adds r1, r1, r2 + add r1, r8 + bl sub_081D1D70 + b _081CD2E0 + .align 2, 0 +_081CD2A0: .4byte 0x00006783 +_081CD2A4: .4byte 0x00006428 +_081CD2A8: + movs r2, #0 + mov r0, sb + lsls r5, r0, #2 + add r5, sb + ldr r4, _081CD2EC + add r4, r8 + lsls r3, r5, #2 + mov sb, r2 + ldr r7, _081CD2F0 + movs r6, #0x9b +_081CD2BC: + adds r0, r2, r5 + adds r0, r4, r0 + mov r1, sb + strb r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r3 + add r0, r8 + adds r1, r0, r7 + strh r6, [r1] + ldr r1, _081CD2F4 + adds r0, r0, r1 + movs r1, #0x5b + strh r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #4 + bls _081CD2BC +_081CD2E0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CD2EC: .4byte 0x00006428 +_081CD2F0: .4byte 0x0000643C +_081CD2F4: .4byte 0x0000643E + thumb_func_end sub_081CD17C + + thumb_func_start sub_081CD2F8 +sub_081CD2F8: @ 0x081CD2F8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + movs r0, #0xb + bl sub_081C6DFC + adds r7, r0, #0 + movs r0, #0x12 + bl sub_081C6DFC + adds r4, r0, #0 + lsls r0, r6, #0x10 + asrs r5, r0, #0x10 + bl sub_081CD4BC + cmp r0, #0 + beq _081CD32C + ldrh r0, [r4] + b _081CD330 +_081CD32C: + ldrh r0, [r4] + subs r0, #1 +_081CD330: + cmp r5, r0 + beq _081CD39E + lsls r0, r6, #0x10 + asrs r0, r0, #0xe + adds r0, r4, r0 + ldrb r5, [r0, #4] + ldrb r6, [r0, #5] + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x41 + movs r3, #0 + bl sub_081D227C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #1 + movs r3, #0 + bl sub_081D227C + mov r8, r0 + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0 + movs r3, #0 + bl sub_081D227C + adds r5, r0, #0 + lsls r0, r4, #3 + ldr r1, _081CD3AC + adds r0, r0, r1 + mov r2, sb + lsls r1, r2, #0xd + movs r2, #0xc0 + lsls r2, r2, #2 + adds r1, r1, r2 + adds r1, r7, r1 + movs r2, #1 + str r2, [sp] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080344AC + adds r0, r4, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0806E1CC + mov r2, sb + lsls r1, r2, #7 + adds r1, r7, r1 + bl LZ77UnCompWram +_081CD39E: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CD3AC: .4byte gUnknown_82DDA1C + thumb_func_end sub_081CD2F8 + + thumb_func_start sub_081CD3B0 +sub_081CD3B0: @ 0x081CD3B0 + push {lr} + movs r0, #0x12 + bl sub_081C6DFC + ldrh r0, [r0] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD3B0 + + thumb_func_start sub_081CD3C0 +sub_081CD3C0: @ 0x081CD3C0 + push {lr} + movs r0, #0x12 + bl sub_081C6DFC + ldrh r0, [r0, #2] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD3C0 + + thumb_func_start sub_081CD3D0 +sub_081CD3D0: @ 0x081CD3D0 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r1, _081CD3E0 + adds r0, r0, r1 + pop {r1} + bx r1 + .align 2, 0 +_081CD3E0: .4byte 0x00006428 + thumb_func_end sub_081CD3D0 + + thumb_func_start sub_081CD3E4 +sub_081CD3E4: @ 0x081CD3E4 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r1, _081CD3F8 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081CD3F8: .4byte 0x00006786 + thumb_func_end sub_081CD3E4 + + thumb_func_start sub_081CD3FC +sub_081CD3FC: @ 0x081CD3FC + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r1, _081CD410 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081CD410: .4byte 0x00006302 + thumb_func_end sub_081CD3FC + + thumb_func_start sub_081CD414 +sub_081CD414: @ 0x081CD414 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xb + bl sub_081C6DFC + lsls r4, r4, #0xd + movs r1, #0xc0 + lsls r1, r1, #2 + adds r4, r4, r1 + adds r0, r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD414 + + thumb_func_start sub_081CD434 +sub_081CD434: @ 0x081CD434 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xb + bl sub_081C6DFC + lsls r4, r4, #7 + adds r0, r0, r4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CD434 + + thumb_func_start sub_081CD44C +sub_081CD44C: @ 0x081CD44C + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r1, _081CD460 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081CD460: .4byte 0x00006789 + thumb_func_end sub_081CD44C + + thumb_func_start sub_081CD464 +sub_081CD464: @ 0x081CD464 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xb + bl sub_081C6DFC + lsls r4, r4, #6 + ldr r1, _081CD480 + adds r4, r4, r1 + adds r0, r0, r4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CD480: .4byte 0x00006368 + thumb_func_end sub_081CD464 + + thumb_func_start sub_081CD484 +sub_081CD484: @ 0x081CD484 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0xb + bl sub_081C6DFC + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #3 + ldr r2, _081CD4A4 + adds r1, r1, r2 + adds r0, r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CD4A4: .4byte 0x00006320 + thumb_func_end sub_081CD484 + + thumb_func_start sub_081CD4A8 +sub_081CD4A8: @ 0x081CD4A8 + push {lr} + movs r0, #0x12 + bl sub_081C6DFC + ldrh r1, [r0, #2] + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r0, [r0, #6] + pop {r1} + bx r1 + thumb_func_end sub_081CD4A8 + + thumb_func_start sub_081CD4BC +sub_081CD4BC: @ 0x081CD4BC + push {lr} + movs r0, #0xb + bl sub_081C6DFC + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081CD4D4 + movs r0, #0 + b _081CD4D6 +_081CD4D4: + movs r0, #1 +_081CD4D6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD4BC + + thumb_func_start sub_081CD4DC +sub_081CD4DC: @ 0x081CD4DC + push {lr} + movs r0, #0xb + bl sub_081C6DFC + adds r2, r0, #0 + movs r1, #0xc6 + lsls r1, r1, #7 + adds r0, r2, r1 + ldrb r0, [r0] + cmp r0, #1 + beq _081CD4F6 + movs r0, #0 + b _081CD506 +_081CD4F6: + ldr r3, _081CD50C + adds r0, r2, r3 + movs r1, #0 + ldrsb r1, [r0, r1] + subs r3, #3 + adds r0, r2, r3 + adds r0, r0, r1 + ldrb r0, [r0] +_081CD506: + pop {r1} + bx r1 + .align 2, 0 +_081CD50C: .4byte 0x00006786 + thumb_func_end sub_081CD4DC + + thumb_func_start sub_081CD510 +sub_081CD510: @ 0x081CD510 + push {lr} + movs r0, #0xb + bl sub_081C6DFC + ldr r2, _081CD530 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r2, #6 + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_081CD530: .4byte 0x00006786 + thumb_func_end sub_081CD510 + + thumb_func_start sub_081CD534 +sub_081CD534: @ 0x081CD534 + push {r4, lr} + ldr r1, _081CD56C + movs r0, #0xc + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CD584 + ldr r0, _081CD570 + adds r1, r4, r0 + movs r0, #0xff + strb r0, [r1] + ldr r0, _081CD574 + movs r1, #1 + bl sub_081C6838 + str r0, [r4] + ldr r0, _081CD578 + adds r1, r4, r0 + ldr r0, _081CD57C + str r0, [r1] + ldr r0, _081CD580 + adds r1, r4, r0 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _081CD586 + .align 2, 0 +_081CD56C: .4byte 0x000038AC +_081CD570: .4byte 0x00001816 +_081CD574: .4byte sub_081CD5F4 +_081CD578: .4byte 0x00001810 +_081CD57C: .4byte sub_081CD5E0 +_081CD580: .4byte 0x00002908 +_081CD584: + movs r0, #0 +_081CD586: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CD534 + + thumb_func_start sub_081CD58C +sub_081CD58C: @ 0x081CD58C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081CD5B8 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5] + ldr r0, _081CD5BC + adds r5, r5, r0 + ldr r0, _081CD5C0 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CD5B8: .4byte gUnknown_85F5990 +_081CD5BC: .4byte 0x00001810 +_081CD5C0: .4byte sub_081CD5E0 + thumb_func_end sub_081CD58C + + thumb_func_start sub_081CD5C4 +sub_081CD5C4: @ 0x081CD5C4 + push {lr} + movs r0, #0xc + bl sub_081C6DFC + ldr r1, _081CD5DC + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081CD5C4 + + thumb_func_start sub_081CD5D8 +sub_081CD5D8: @ 0x081CD5D8 + bx r1 + .align 2, 0 +_081CD5DC: .4byte 0x00001810 + thumb_func_end sub_081CD5D8 + + thumb_func_start sub_081CD5E0 +sub_081CD5E0: @ 0x081CD5E0 + push {lr} + movs r0, #0xc + bl sub_081C6DFC + ldr r0, [r0] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD5E0 + + thumb_func_start sub_081CD5F4 +sub_081CD5F4: @ 0x081CD5F4 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #0x14 + bls _081CD608 + b _081CDA24 +_081CD608: + lsls r0, r4, #2 + ldr r1, _081CD614 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CD614: .4byte _081CD618 +_081CD618: @ jump table + .4byte _081CD66C @ case 0 + .4byte _081CD678 @ case 1 + .4byte _081CD6F4 @ case 2 + .4byte _081CD718 @ case 3 + .4byte _081CD790 @ case 4 + .4byte _081CD7D4 @ case 5 + .4byte _081CD810 @ case 6 + .4byte _081CD878 @ case 7 + .4byte _081CD880 @ case 8 + .4byte _081CD886 @ case 9 + .4byte _081CD896 @ case 10 + .4byte _081CD8A6 @ case 11 + .4byte _081CD8B6 @ case 12 + .4byte _081CD8CC @ case 13 + .4byte _081CD928 @ case 14 + .4byte _081CD94C @ case 15 + .4byte _081CD978 @ case 16 + .4byte _081CD99C @ case 17 + .4byte _081CD9AA @ case 18 + .4byte _081CD9BA @ case 19 + .4byte _081CD9C2 @ case 20 +_081CD66C: + bl sub_081CCB04 + cmp r0, #1 + beq _081CD676 + b _081CDA20 +_081CD676: + b _081CD710 +_081CD678: + ldr r0, _081CD6E0 + movs r1, #3 + bl sub_081C7314 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #3 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldr r1, _081CD6E4 + movs r0, #0 + bl sub_08001144 + ldr r1, _081CD6E8 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081CD6EC + movs r0, #0x52 + bl sub_08001144 + ldr r1, _081CD6F0 + movs r0, #0 + str r0, [sp] + movs r0, #3 + b _081CD708 + .align 2, 0 +_081CD6E0: .4byte gUnknown_85F5964 +_081CD6E4: .4byte 0x00007940 +_081CD6E8: .4byte 0x00000844 +_081CD6EC: .4byte 0x0000040B +_081CD6F0: .4byte gUnknown_85F4E6C +_081CD6F4: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _081CD702 + b _081CDA20 +_081CD702: + ldr r1, _081CD714 + str r0, [sp] + movs r0, #2 +_081CD708: + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_081CD710: + movs r0, #0 + b _081CDA26 + .align 2, 0 +_081CD714: .4byte gUnknown_85F57EC +_081CD718: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CD724 + b _081CDA20 +_081CD724: + ldr r0, _081CD778 + adds r4, r5, #4 + adds r1, r4, #0 + bl LZ77UnCompVram + movs r0, #3 + adds r1, r4, #0 + bl sub_0800212C + bl sub_081CD4BC + cmp r0, #1 + bne _081CD752 + ldr r1, _081CD77C + movs r0, #9 + str r0, [sp] + movs r0, #4 + str r0, [sp, #4] + movs r0, #3 + movs r2, #0 + movs r3, #5 + bl sub_080022B0 +_081CD752: + movs r0, #3 + bl sub_08002248 + ldr r0, _081CD780 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + ldr r0, _081CD784 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_081C7104 + ldr r0, _081CD788 + adds r1, r5, r0 + ldr r0, _081CD78C + strh r0, [r1] + b _081CD710 + .align 2, 0 +_081CD778: .4byte gUnknown_85F5600 +_081CD77C: .4byte gUnknown_85F58FC +_081CD780: .4byte gUnknown_85F4E0C +_081CD784: .4byte gUnknown_85F4E4C +_081CD788: .4byte 0x00001814 +_081CD78C: .4byte 0x0000FFB0 +_081CD790: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CD79C + b _081CDA20 +_081CD79C: + ldr r0, _081CD7C8 + ldr r1, _081CD7CC + adds r4, r5, r1 + adds r1, r4, #0 + bl LZ77UnCompVram + movs r0, #2 + adds r1, r4, #0 + bl sub_0800212C + movs r0, #2 + bl sub_08002248 + ldr r0, _081CD7D0 + movs r1, #0x30 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #2 + bl sub_081D1824 + b _081CD710 + .align 2, 0 +_081CD7C8: .4byte gUnknown_85F5800 +_081CD7CC: .4byte 0x00001004 +_081CD7D0: .4byte gUnknown_85F4E2C +_081CD7D4: + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08199A88 + movs r0, #1 + movs r1, #0x11 + movs r2, #1 + movs r3, #1 + bl sub_08199A88 + movs r0, #0 + str r0, [sp, #8] + ldr r2, _081CD808 + adds r4, r5, r2 + ldr r2, _081CD80C + add r0, sp, #8 + adds r1, r4, #0 + bl CpuSet + movs r0, #1 + adds r1, r4, #0 + bl sub_0800212C + b _081CD710 + .align 2, 0 +_081CD808: .4byte 0x00000804 +_081CD80C: .4byte 0x05000200 +_081CD810: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CD81C + b _081CDA20 +_081CD81C: + ldr r0, _081CD85C + bl sub_08003250 + movs r2, #0xc1 + lsls r2, r2, #5 + adds r1, r5, r2 + strb r0, [r1] + bl sub_081CD4BC + cmp r0, #1 + bne _081CD856 + ldr r0, _081CD860 + bl sub_08003250 + ldr r2, _081CD864 + adds r1, r5, r2 + strb r0, [r1] + ldr r0, _081CD868 + bl sub_08003250 + ldr r2, _081CD86C + adds r1, r5, r2 + strb r0, [r1] + ldr r0, _081CD870 + bl sub_08003250 + ldr r2, _081CD874 + adds r1, r5, r2 + strb r0, [r1] +_081CD856: + bl sub_08004480 + b _081CD710 + .align 2, 0 +_081CD85C: .4byte gUnknown_85F5970 +_081CD860: .4byte gUnknown_85F5978 +_081CD864: .4byte 0x00001821 +_081CD868: .4byte gUnknown_85F5980 +_081CD86C: .4byte 0x00001822 +_081CD870: .4byte gUnknown_85F5988 +_081CD874: .4byte 0x00001823 +_081CD878: + movs r0, #0 + bl sub_081CE464 + b _081CD710 +_081CD880: + bl sub_081CE118 + b _081CD710 +_081CD886: + bl sub_081CD4BC + cmp r0, #1 + beq _081CD890 + b _081CD710 +_081CD890: + bl sub_081CE068 + b _081CD710 +_081CD896: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #0 + b _081CD8C4 +_081CD8A6: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #1 + b _081CD8C4 +_081CD8B6: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #2 +_081CD8C4: + movs r2, #1 + bl sub_081CDEB4 + b _081CD710 +_081CD8CC: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #3 + movs r2, #1 + bl sub_081CDEB4 + cmp r0, #1 + beq _081CD8E6 + b _081CDA20 +_081CD8E6: + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r5, r1 + ldrb r0, [r0] + bl sub_0800365C + bl sub_081CD4BC + cmp r0, #1 + beq _081CD8FC + b _081CD710 +_081CD8FC: + ldr r2, _081CD91C + adds r0, r5, r2 + ldrb r0, [r0] + bl sub_0800365C + ldr r1, _081CD920 + adds r0, r5, r1 + ldrb r0, [r0] + bl sub_0800365C + ldr r2, _081CD924 + adds r0, r5, r2 + ldrb r0, [r0] + bl sub_0800365C + b _081CD710 + .align 2, 0 +_081CD91C: .4byte 0x00001821 +_081CD920: .4byte 0x00001822 +_081CD924: .4byte 0x00001823 +_081CD928: + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B48 + bl sub_081CD4BC + cmp r0, #1 + beq _081CD944 + b _081CD710 +_081CD944: + movs r0, #4 + bl sub_081C7364 + b _081CD710 +_081CD94C: + movs r0, #1 + bl sub_081C7280 + bl sub_081CD4BC + cmp r0, #0 + beq _081CD95C + b _081CD710 +_081CD95C: + movs r0, #6 + bl sub_081C75BC + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 + movs r0, #6 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 + b _081CD710 +_081CD978: + bl sub_081C72F4 + cmp r0, #0 + bne _081CDA20 + bl sub_081CD4BC + cmp r0, #0 + bne _081CD990 + bl sub_081C77B8 + cmp r0, #0 + bne _081CDA20 +_081CD990: + ldr r0, _081CD998 + bl sub_081C6DC0 + b _081CD710 + .align 2, 0 +_081CD998: .4byte sub_081CE578 +_081CD99C: + bl sub_081CE5C4 + bl sub_081CD3D0 + bl sub_081D16F4 + b _081CD710 +_081CD9AA: + bl sub_081CD3D0 + bl sub_081D1704 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDA20 + b _081CD710 +_081CD9BA: + movs r0, #1 + bl sub_081CE5A8 + b _081CD710 +_081CD9C2: + bl sub_081CD3D0 + ldr r2, _081CDA14 + adds r1, r5, r2 + bl sub_081D27A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDA20 + ldr r0, _081CDA18 + adds r6, r5, r0 + adds r0, r6, #0 + bl sub_081D2A94 + bl sub_081CD4BC + cmp r0, #1 + beq _081CD9F8 + bl sub_081CD3C0 + adds r4, r0, #0 + bl sub_081CD3B0 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + cmp r4, r0 + beq _081CDA24 +_081CD9F8: + ldr r1, _081CDA1C + adds r0, r5, r1 + ldrb r4, [r0] + bl sub_081CD510 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081D2AB0 + b _081CDA24 + .align 2, 0 +_081CDA14: .4byte 0x00001814 +_081CDA18: .4byte 0x000028E0 +_081CDA1C: .4byte 0x00001816 +_081CDA20: + movs r0, #2 + b _081CDA26 +_081CDA24: + movs r0, #4 +_081CDA26: + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CD5F4 + + thumb_func_start sub_081CDA30 +sub_081CDA30: @ 0x081CDA30 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CDA68 + cmp r4, #1 + bgt _081CDA4A + cmp r4, #0 + beq _081CDA54 + b _081CDAD4 +_081CDA4A: + cmp r4, #2 + beq _081CDA88 + cmp r4, #3 + beq _081CDA9E + b _081CDAD4 +_081CDA54: + bl sub_081CE5FC + ldr r1, _081CDA64 + adds r0, r5, r1 + bl sub_081D2B50 + movs r0, #1 + b _081CDAD6 + .align 2, 0 +_081CDA64: .4byte 0x000028E0 +_081CDA68: + bl sub_081CD3D0 + ldr r2, _081CDA84 + adds r1, r5, r2 + bl sub_081D27D4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDAAE + movs r0, #0 + bl sub_081CE5A8 + movs r0, #1 + b _081CDAD6 + .align 2, 0 +_081CDA84: .4byte 0x00001814 +_081CDA88: + movs r0, #0 + bl sub_081C7280 + bl sub_081CD4BC + cmp r0, #0 + bne _081CDA9A + bl sub_081C7060 +_081CDA9A: + movs r0, #0 + b _081CDAD6 +_081CDA9E: + bl sub_081C72F4 + cmp r0, #0 + bne _081CDAAE + bl sub_081C7080 + cmp r0, #0 + beq _081CDAB2 +_081CDAAE: + movs r0, #2 + b _081CDAD6 +_081CDAB2: + ldr r1, _081CDAD0 + adds r0, r5, r1 + bl sub_081D2B7C + movs r0, #1 + bl sub_08001B5C + movs r0, #2 + bl sub_08001B5C + movs r0, #3 + bl sub_08001B5C + movs r0, #1 + b _081CDAD6 + .align 2, 0 +_081CDAD0: .4byte 0x000028E0 +_081CDAD4: + movs r0, #4 +_081CDAD6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CDA30 + + thumb_func_start sub_081CDADC +sub_081CDADC: @ 0x081CDADC + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r6, r0, #0 + bl sub_081CD3D0 + adds r2, r0, #0 + cmp r4, #9 + bls _081CDAF4 + b _081CDC30 +_081CDAF4: + lsls r0, r4, #2 + ldr r1, _081CDB00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CDB00: .4byte _081CDB04 +_081CDB04: @ jump table + .4byte _081CDB2C @ case 0 + .4byte _081CDB30 @ case 1 + .4byte _081CDB3A @ case 2 + .4byte _081CDB50 @ case 3 + .4byte _081CDB58 @ case 4 + .4byte _081CDB78 @ case 5 + .4byte _081CDB88 @ case 6 + .4byte _081CDB98 @ case 7 + .4byte _081CDBAE @ case 8 + .4byte _081CDBC8 @ case 9 +_081CDB2C: + movs r0, #0 + b _081CDB32 +_081CDB30: + movs r0, #1 +_081CDB32: + bl sub_081CCC88 +_081CDB36: + movs r0, #1 + b _081CDC32 +_081CDB3A: + movs r0, #2 + bl sub_081CCC88 + ldr r1, _081CDB4C + adds r0, r6, r1 + bl sub_081D2B50 + b _081CDB36 + .align 2, 0 +_081CDB4C: .4byte 0x000028E0 +_081CDB50: + adds r0, r2, #0 + bl sub_081D16BC + b _081CDB36 +_081CDB58: + ldr r1, _081CDB74 + adds r0, r6, r1 + bl sub_081D2780 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDC2C + bl sub_081CD3E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081CE464 + b _081CDB36 + .align 2, 0 +_081CDB74: .4byte 0x00001814 +_081CDB78: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #0 + b _081CDBA6 +_081CDB88: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #1 + b _081CDBA6 +_081CDB98: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #2 +_081CDBA6: + movs r2, #0 + bl sub_081CDEB4 + b _081CDB36 +_081CDBAE: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #3 + movs r2, #0 + bl sub_081CDEB4 + cmp r0, #1 + beq _081CDB36 + b _081CDC2C +_081CDBC8: + bl sub_081CD3D0 + adds r2, r0, #0 + ldr r0, _081CDC20 + adds r1, r6, r0 + adds r0, r2, #0 + bl sub_081D27A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDC2C + ldr r1, _081CDC24 + adds r0, r6, r1 + bl sub_081D2A94 + bl sub_081CD4BC + cmp r0, #1 + beq _081CDC00 + bl sub_081CD3C0 + adds r4, r0, #0 + bl sub_081CD3B0 + lsls r4, r4, #0x10 + lsls r0, r0, #0x10 + cmp r4, r0 + beq _081CDB36 +_081CDC00: + ldr r0, _081CDC24 + adds r5, r6, r0 + ldr r1, _081CDC28 + adds r0, r6, r1 + ldrb r4, [r0] + bl sub_081CD510 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_081D2AB0 + b _081CDB36 + .align 2, 0 +_081CDC20: .4byte 0x00001814 +_081CDC24: .4byte 0x000028E0 +_081CDC28: .4byte 0x00001816 +_081CDC2C: + movs r0, #2 + b _081CDC32 +_081CDC30: + movs r0, #4 +_081CDC32: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081CDADC + + thumb_func_start sub_081CDC38 +sub_081CDC38: @ 0x081CDC38 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #8 + bhi _081CDD3C + lsls r0, r4, #2 + ldr r1, _081CDC54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CDC54: .4byte _081CDC58 +_081CDC58: @ jump table + .4byte _081CDC7C @ case 0 + .4byte _081CDC80 @ case 1 + .4byte _081CDC84 @ case 2 + .4byte _081CDC8E @ case 3 + .4byte _081CDC9E @ case 4 + .4byte _081CDCAE @ case 5 + .4byte _081CDCBE @ case 6 + .4byte _081CDCD6 @ case 7 + .4byte _081CDCF2 @ case 8 +_081CDC7C: + movs r0, #0 + b _081CDC86 +_081CDC80: + movs r0, #1 + b _081CDC86 +_081CDC84: + movs r0, #2 +_081CDC86: + bl sub_081CCC88 + movs r0, #1 + b _081CDD3E +_081CDC8E: + bl sub_081CD3E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081CE464 + movs r0, #1 + b _081CDD3E +_081CDC9E: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #0 + b _081CDCCC +_081CDCAE: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #1 + b _081CDCCC +_081CDCBE: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #2 +_081CDCCC: + movs r2, #0 + bl sub_081CDEB4 + movs r0, #1 + b _081CDD3E +_081CDCD6: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #3 + movs r2, #0 + bl sub_081CDEB4 + cmp r0, #1 + bne _081CDD38 + movs r0, #1 + b _081CDD3E +_081CDCF2: + bl sub_081CD3D0 + ldr r2, _081CDD2C + adds r1, r5, r2 + bl sub_081D27A8 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CDD38 + ldr r0, _081CDD30 + adds r4, r5, r0 + adds r0, r4, #0 + bl sub_081D2A94 + ldr r1, _081CDD34 + adds r0, r5, r1 + ldrb r5, [r0] + bl sub_081CD510 + adds r2, r0, #0 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081D2AB0 + movs r0, #1 + b _081CDD3E + .align 2, 0 +_081CDD2C: .4byte 0x00001814 +_081CDD30: .4byte 0x000028E0 +_081CDD34: .4byte 0x00001816 +_081CDD38: + movs r0, #2 + b _081CDD3E +_081CDD3C: + movs r0, #4 +_081CDD3E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CDC38 + + thumb_func_start sub_081CDD44 +sub_081CDD44: @ 0x081CDD44 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #7 + bhi _081CDE12 + lsls r0, r4, #2 + ldr r1, _081CDD60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CDD60: .4byte _081CDD64 +_081CDD64: @ jump table + .4byte _081CDD84 @ case 0 + .4byte _081CDD88 @ case 1 + .4byte _081CDD92 @ case 2 + .4byte _081CDDA8 @ case 3 + .4byte _081CDDC0 @ case 4 + .4byte _081CDDD0 @ case 5 + .4byte _081CDDE0 @ case 6 + .4byte _081CDDF6 @ case 7 +_081CDD84: + movs r0, #0 + b _081CDD8A +_081CDD88: + movs r0, #1 +_081CDD8A: + bl sub_081CCC88 +_081CDD8E: + movs r0, #1 + b _081CDE14 +_081CDD92: + movs r0, #2 + bl sub_081CCC88 + ldr r1, _081CDDA4 + adds r0, r5, r1 + bl sub_081D2B50 + b _081CDD8E + .align 2, 0 +_081CDDA4: .4byte 0x000028E0 +_081CDDA8: + bl sub_081CD3D0 + ldr r2, _081CDDBC + adds r1, r5, r2 + bl sub_081D27D4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CDD8E + b _081CDE0E + .align 2, 0 +_081CDDBC: .4byte 0x00001814 +_081CDDC0: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #0 + b _081CDDEE +_081CDDD0: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #1 + b _081CDDEE +_081CDDE0: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #2 +_081CDDEE: + movs r2, #0 + bl sub_081CDEB4 + b _081CDD8E +_081CDDF6: + bl sub_081CD3E4 + adds r1, r0, #0 + lsls r1, r1, #0x18 + asrs r1, r1, #8 + lsrs r1, r1, #0x10 + movs r0, #3 + movs r2, #0 + bl sub_081CDEB4 + cmp r0, #1 + beq _081CDD8E +_081CDE0E: + movs r0, #2 + b _081CDE14 +_081CDE12: + movs r0, #4 +_081CDE14: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CDD44 + + thumb_func_start sub_081CDE1C +sub_081CDE1C: @ 0x081CDE1C + push {lr} + cmp r0, #1 + beq _081CDE46 + cmp r0, #1 + bgt _081CDE2C + cmp r0, #0 + beq _081CDE32 + b _081CDE5A +_081CDE2C: + cmp r0, #2 + beq _081CDE4E + b _081CDE5A +_081CDE32: + bl sub_081CD4DC + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xb0 + movs r2, #0x20 + bl sub_0811FFC4 +_081CDE42: + movs r0, #1 + b _081CDE5C +_081CDE46: + movs r0, #5 + bl sub_081C7364 + b _081CDE42 +_081CDE4E: + bl sub_081C73A8 + cmp r0, #1 + bne _081CDE42 + movs r0, #2 + b _081CDE5C +_081CDE5A: + movs r0, #4 +_081CDE5C: + pop {r1} + bx r1 + thumb_func_end sub_081CDE1C + + thumb_func_start sub_081CDE60 +sub_081CDE60: @ 0x081CDE60 + push {lr} + cmp r0, #1 + beq _081CDE7E + cmp r0, #1 + bgt _081CDE70 + cmp r0, #0 + beq _081CDE76 + b _081CDE92 +_081CDE70: + cmp r0, #2 + beq _081CDE86 + b _081CDE92 +_081CDE76: + bl sub_08120018 +_081CDE7A: + movs r0, #1 + b _081CDE94 +_081CDE7E: + movs r0, #4 + bl sub_081C7364 + b _081CDE7A +_081CDE86: + bl sub_081C73A8 + cmp r0, #1 + bne _081CDE7A + movs r0, #2 + b _081CDE94 +_081CDE92: + movs r0, #4 +_081CDE94: + pop {r1} + bx r1 + thumb_func_end sub_081CDE60 + + thumb_func_start sub_081CDE98 +sub_081CDE98: @ 0x081CDE98 + push {lr} + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r2, #1 + movs r3, #4 + bl sub_080089D8 + ldr r1, _081CDEB0 + bl sub_080088B8 + pop {r1} + bx r1 + .align 2, 0 +_081CDEB0: .4byte gUnknown_85CB7CE + thumb_func_end sub_081CDE98 + + thumb_func_start sub_081CDEB4 +sub_081CDEB4: @ 0x081CDEB4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + lsls r1, r1, #0x10 + lsrs r5, r1, #0x10 + lsls r2, r2, #0x18 + lsrs r4, r2, #0x18 + movs r0, #0xc + bl sub_081C6DFC + adds r6, r0, #0 + cmp r7, #1 + beq _081CDF10 + cmp r7, #1 + bgt _081CDEDA + cmp r7, #0 + beq _081CDEE4 + b _081CE05C +_081CDEDA: + cmp r7, #2 + beq _081CDF52 + cmp r7, #3 + beq _081CDFD4 + b _081CE05C +_081CDEE4: + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_08003B18 + bl sub_081CD4BC + cmp r0, #1 + beq _081CDEFC + b _081CE05C +_081CDEFC: + ldr r1, _081CDF0C + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #0 + bl sub_08003B18 + b _081CE05C + .align 2, 0 +_081CDF0C: .4byte 0x00001821 +_081CDF10: + bl sub_081CD3C0 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081CD3B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #1 + cmp r4, r0 + bne _081CDF32 + bl sub_081CD4BC + cmp r0, #1 + beq _081CDF32 + b _081CE05C +_081CDF32: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_081CD464 + adds r2, r0, #0 + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #2 + str r1, [sp] + movs r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + movs r1, #1 + b _081CDFC4 +_081CDF52: + bl sub_081CD4BC + cmp r0, #1 + beq _081CDF5C + b _081CE05C +_081CDF5C: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + bl sub_081CD484 + adds r2, r0, #0 + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #0x12 + str r1, [sp] + movs r5, #0 + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + movs r3, #0 + bl sub_0800449C + add r1, sp, #0xc + movs r0, #0xfc + strb r0, [r1] + movs r0, #4 + strb r0, [r1, #1] + movs r0, #8 + strb r0, [r1, #2] + adds r0, r1, #0 + strb r5, [r0, #3] + movs r0, #9 + strb r0, [r1, #4] + mov r4, sp + adds r4, #0x11 + bl sub_081CD4A8 + adds r1, r0, #0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + adds r0, r4, #0 + bl sub_081CDE98 + ldr r4, _081CDFCC + adds r0, r4, #0 + add r1, sp, #0xc + bl sub_08008BCC + ldr r1, _081CDFD0 + adds r0, r6, r1 + ldrb r0, [r0] + str r7, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r1, #1 + adds r2, r4, #0 +_081CDFC4: + movs r3, #0 + bl sub_0800449C + b _081CE05C + .align 2, 0 +_081CDFCC: .4byte gUnknown_2021C7C +_081CDFD0: .4byte 0x00001821 +_081CDFD4: + ldr r1, _081CDFE4 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081CDFE8 + cmp r0, #1 + beq _081CE024 + b _081CE05C + .align 2, 0 +_081CDFE4: .4byte 0x00002908 +_081CDFE8: + cmp r4, #0 + beq _081CDFFC + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + b _081CE00A +_081CDFFC: + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 +_081CE00A: + bl sub_081CD4BC + cmp r0, #1 + bne _081CE048 + ldr r0, _081CE020 + adds r1, r6, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _081CE05C + .align 2, 0 +_081CE020: .4byte 0x00002908 +_081CE024: + cmp r4, #0 + beq _081CE03C + ldr r1, _081CE038 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + b _081CE048 + .align 2, 0 +_081CE038: .4byte 0x00001821 +_081CE03C: + ldr r1, _081CE054 + adds r0, r6, r1 + ldrb r0, [r0] + movs r1, #2 + bl sub_08003528 +_081CE048: + ldr r0, _081CE058 + adds r1, r6, r0 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + b _081CE05E + .align 2, 0 +_081CE054: .4byte 0x00001821 +_081CE058: .4byte 0x00002908 +_081CE05C: + movs r0, #0 +_081CE05E: + add sp, #0x1c + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CDEB4 + + thumb_func_start sub_081CE068 +sub_081CE068: @ 0x081CE068 + push {r4, lr} + movs r0, #0xc + bl sub_081C6DFC + adds r4, r0, #0 + ldr r1, _081CE090 + adds r0, r4, r1 + ldrb r0, [r0] + movs r1, #3 + bl sub_08003528 + ldr r0, _081CE094 + adds r4, r4, r0 + ldrb r0, [r4] + movs r1, #3 + bl sub_08003528 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CE090: .4byte 0x00001822 +_081CE094: .4byte 0x00001823 + thumb_func_end sub_081CE068 + + thumb_func_start sub_081CE098 +sub_081CE098: @ 0x081CE098 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r4, [r5, r0] + bl sub_081CD3C0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r4, r0 + bne _081CE0B6 + adds r0, r5, #0 + movs r1, #0 + bl sub_08007EC0 + b _081CE0BE +_081CE0B6: + adds r0, r5, #0 + movs r1, #1 + bl sub_08007EC0 +_081CE0BE: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081CE098 + + thumb_func_start sub_081CE0C4 +sub_081CE0C4: @ 0x081CE0C4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_081CD3C0 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081CD3B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #1 + cmp r4, r0 + bne _081CE0E4 + movs r0, #0x65 + b _081CE0E6 +_081CE0E4: + movs r0, #0x66 +_081CE0E6: + bl sub_0800851C + lsls r0, r0, #4 + ldrb r2, [r5, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #5] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081CE0C4 + + thumb_func_start sub_081CE0FC +sub_081CE0FC: @ 0x081CE0FC + push {r4, lr} + adds r4, r0, #0 + bl sub_081CD4DC + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08007EC0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CE0FC + + thumb_func_start sub_081CE118 +sub_081CE118: @ 0x081CE118 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x58 + movs r0, #0xc + bl sub_081C6DFC + adds r6, r0, #0 + add r4, sp, #0x20 + add r5, sp, #0x38 + mov r0, sp + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_081D284C + bl sub_081CD4BC + adds r7, r4, #0 + mov sl, r5 + cmp r0, #1 + bne _081CE1AC + ldr r1, _081CE198 + adds r0, r6, r1 + movs r2, #0x6a + strh r2, [r0] + ldr r3, _081CE19C + adds r1, r6, r3 + strh r2, [r1] + bl sub_0811FE2C + bl sub_0811FFB0 + ldr r2, _081CE1A0 + movs r0, #0x69 + movs r1, #0x69 + bl sub_081204B4 + ldrb r1, [r0, #5] + movs r2, #0xc + orrs r1, r2 + strb r1, [r0, #5] + movs r1, #0xc0 + strh r1, [r0, #0x20] + movs r1, #0x20 + strh r1, [r0, #0x22] + ldr r1, _081CE1A4 + str r1, [r0, #0x1c] + ldr r2, _081CE1A8 + adds r1, r6, r2 + str r0, [r1] + movs r0, #0x69 + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + bl sub_081C7150 + add r3, sp, #0x50 + mov r8, r3 + b _081CE2FA + .align 2, 0 +_081CE198: .4byte 0x00001824 +_081CE19C: .4byte 0x00001826 +_081CE1A0: .4byte gUnknown_85F5944 +_081CE1A4: .4byte sub_081CE0FC +_081CE1A8: .4byte 0x000028DC +_081CE1AC: + mov r0, sp + bl sub_08008254 + mov r0, sl + bl sub_081C711C + movs r4, #0 + add r0, sp, #0x50 + mov r8, r0 + b _081CE21C +_081CE1C0: + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r1, #0x80 + lsls r1, r1, #0xc + adds r2, r2, r1 + asrs r2, r2, #0x10 + adds r0, r7, #0 + movs r1, #0xe2 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _081CE20C + ldr r2, _081CE200 + adds r0, r6, r2 + adds r0, r0, r4 + strb r3, [r0] + ldr r2, _081CE204 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r1, r0, r2 + strh r4, [r1, #0x2e] + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _081CE208 + str r1, [r0] + b _081CE216 + .align 2, 0 +_081CE200: .4byte 0x00001806 +_081CE204: .4byte gUnknown_20205AC +_081CE208: .4byte sub_081CE098 +_081CE20C: + ldr r3, _081CE274 + adds r0, r6, r3 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_081CE216: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081CE21C: + bl sub_081CD3B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #1 + cmp r4, r0 + blt _081CE1C0 + movs r0, #0x67 + strh r0, [r7] + ldr r0, _081CE278 + str r0, [r7, #0x14] + cmp r4, #5 + bhi _081CE290 + ldr r0, _081CE274 + adds r5, r6, r0 + ldr r1, _081CE27C + mov sb, r1 +_081CE23E: + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r3, #0x80 + lsls r3, r3, #0xc + adds r2, r2, r3 + asrs r2, r2, #0x10 + adds r0, r7, #0 + movs r1, #0xe6 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _081CE280 + adds r0, r5, r4 + strb r3, [r0] + lsls r1, r3, #4 + adds r1, r1, r3 + lsls r1, r1, #2 + add r1, sb + ldrb r2, [r1, #3] + movs r0, #0x3f + ands r0, r2 + strb r0, [r1, #3] + b _081CE286 + .align 2, 0 +_081CE274: .4byte 0x00001806 +_081CE278: .4byte sub_08007140 +_081CE27C: .4byte gUnknown_20205AC +_081CE280: + adds r1, r5, r4 + movs r0, #0xff + strb r0, [r1] +_081CE286: + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #5 + bls _081CE23E +_081CE290: + movs r0, #0x66 + strh r0, [r7] + ldr r0, _081CE2E4 + str r0, [r7, #0x14] + lsls r2, r4, #2 + adds r2, r2, r4 + lsls r2, r2, #0x12 + movs r0, #0x80 + lsls r0, r0, #0xc + adds r2, r2, r0 + asrs r2, r2, #0x10 + adds r0, r7, #0 + movs r1, #0xde + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0x40 + beq _081CE2F0 + ldr r1, _081CE2E8 + adds r0, r6, r1 + adds r0, r0, r4 + strb r3, [r0] + ldr r0, _081CE2EC + lsls r2, r3, #4 + adds r2, r2, r3 + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r3, [r2, #1] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r2, #1] + ldrb r0, [r2, #3] + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #3] + b _081CE2FA + .align 2, 0 +_081CE2E4: .4byte sub_081CE0C4 +_081CE2E8: .4byte 0x00001806 +_081CE2EC: .4byte gUnknown_20205AC +_081CE2F0: + ldr r2, _081CE324 + adds r0, r6, r2 + adds r0, r0, r4 + movs r1, #0xff + strb r1, [r0] +_081CE2FA: + mov r0, r8 + mov r1, sl + bl sub_081D28E0 + mov r0, r8 + bl sub_08008210 + movs r0, #0 + mov r3, sl + str r0, [r3, #8] + mov r0, sl + bl sub_081C711C + add sp, #0x58 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CE324: .4byte 0x00001806 + thumb_func_end sub_081CE118 + + thumb_func_start sub_081CE328 +sub_081CE328: @ 0x081CE328 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_081CD4BC + cmp r0, #1 + bne _081CE35C + ldr r1, _081CE358 + adds r0, r5, r1 + ldr r0, [r0] + bl sub_08006E00 + movs r0, #0x6a + bl sub_08008280 + movs r0, #0x69 + bl sub_08008280 + movs r0, #0x6a + bl sub_08008564 + movs r0, #0x69 + bl sub_08008564 + b _081CE39C + .align 2, 0 +_081CE358: .4byte 0x000028DC +_081CE35C: + movs r4, #0 +_081CE35E: + ldr r1, _081CE3C8 + adds r0, r5, r1 + adds r0, r0, r4 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081CE3CC + adds r0, r0, r1 + bl sub_08006E00 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #6 + bls _081CE35E + movs r0, #0x65 + bl sub_08008280 + movs r0, #0x66 + bl sub_08008280 + movs r0, #0x67 + bl sub_08008280 + movs r0, #0x65 + bl sub_08008564 + movs r0, #0x66 + bl sub_08008564 +_081CE39C: + ldr r0, _081CE3D0 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #0xff + beq _081CE3C2 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081CE3CC + adds r0, r0, r1 + bl sub_08006E00 + movs r0, #0x64 + bl sub_08008280 + movs r0, #0x64 + bl sub_08008564 +_081CE3C2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CE3C8: .4byte 0x00001806 +_081CE3CC: .4byte gUnknown_20205AC +_081CE3D0: .4byte 0x00001816 + thumb_func_end sub_081CE328 + + thumb_func_start sub_081CE3D4 +sub_081CE3D4: @ 0x081CE3D4 + push {r4, lr} + movs r0, #0xc + bl sub_081C6DFC + adds r4, r0, #0 + movs r1, #0xc1 + lsls r1, r1, #5 + adds r0, r4, r1 + ldrb r0, [r0] + bl sub_08003444 + bl sub_081CD4BC + cmp r0, #1 + bne _081CE420 + ldr r1, _081CE414 + adds r0, r4, r1 + ldrb r0, [r0] + bl sub_08003444 + ldr r1, _081CE418 + adds r0, r4, r1 + ldrb r0, [r0] + bl sub_08003444 + ldr r1, _081CE41C + adds r0, r4, r1 + ldrb r0, [r0] + bl sub_08003444 + b _081CE424 + .align 2, 0 +_081CE414: .4byte 0x00001821 +_081CE418: .4byte 0x00001822 +_081CE41C: .4byte 0x00001823 +_081CE420: + bl sub_081C7784 +_081CE424: + movs r1, #0x8a + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + adds r0, r4, #0 + bl sub_081CE328 + bl sub_081CE59C + movs r0, #0xc + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CE3D4 + + thumb_func_start sub_081CE444 +sub_081CE444: @ 0x081CE444 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xc + bl sub_081C6DFC + ldr r1, _081CE460 + adds r0, r0, r1 + ldrh r0, [r0] + adds r0, #0x26 + strh r0, [r4, #0x20] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CE460: .4byte 0x00001814 + thumb_func_end sub_081CE444 + + thumb_func_start sub_081CE464 +sub_081CE464: @ 0x081CE464 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x28 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0xc + bl sub_081C6DFC + mov r8, r0 + ldr r7, _081CE4E4 + add r7, r8 + ldrb r0, [r7] + cmp r0, #0xff + bne _081CE530 + add r5, sp, #0x18 + add r4, sp, #0x20 + adds r0, r5, #0 + mov r1, sp + adds r2, r4, #0 + bl sub_081D2800 + adds r0, r6, #0 + bl sub_081CD414 + str r0, [sp, #0x18] + adds r0, r6, #0 + bl sub_081CD434 + str r0, [sp, #0x20] + adds r0, r4, #0 + bl sub_0800845C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081CE4E8 + add r4, r8 + strh r0, [r4] + adds r0, r5, #0 + bl sub_08008210 + ldr r5, _081CE4EC + add r5, r8 + strh r0, [r5] + mov r0, sp + movs r1, #0x26 + movs r2, #0x68 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strb r0, [r7] + cmp r0, #0x40 + bne _081CE4F0 + movs r0, #0x64 + bl sub_08008280 + movs r0, #0x64 + bl sub_08008564 + movs r0, #0xff + strb r0, [r7] + b _081CE55A + .align 2, 0 +_081CE4E4: .4byte 0x00001816 +_081CE4E8: .4byte 0x00001818 +_081CE4EC: .4byte 0x0000181A +_081CE4F0: + strb r0, [r7] + ldr r2, _081CE520 + ldrb r1, [r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, _081CE524 + str r1, [r0] + ldr r1, _081CE528 + add r1, r8 + ldrh r0, [r5] + lsls r0, r0, #5 + ldr r2, _081CE52C + adds r0, r0, r2 + str r0, [r1] + ldrh r0, [r4] + lsls r0, r0, #4 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r0, r1 + strh r0, [r4] + b _081CE55A + .align 2, 0 +_081CE520: .4byte gUnknown_20205AC +_081CE524: .4byte sub_081CE444 +_081CE528: .4byte 0x0000181C +_081CE52C: .4byte 0x06010000 +_081CE530: + adds r0, r6, #0 + bl sub_081CD414 + ldr r1, _081CE568 + add r1, r8 + ldr r2, [r1] + ldr r1, _081CE56C + str r0, [r1] + str r2, [r1, #4] + ldr r0, _081CE570 + str r0, [r1, #8] + ldr r0, [r1, #8] + adds r0, r6, #0 + bl sub_081CD434 + ldr r1, _081CE574 + add r1, r8 + ldrh r1, [r1] + movs r2, #0x20 + bl sub_080A1200 +_081CE55A: + add sp, #0x28 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CE568: .4byte 0x0000181C +_081CE56C: .4byte 0x040000D4 +_081CE570: .4byte 0x80000400 +_081CE574: .4byte 0x00001818 + thumb_func_end sub_081CE464 + + thumb_func_start sub_081CE578 +sub_081CE578: @ 0x081CE578 + push {r4, lr} + bl sub_081CD3D0 + adds r4, r0, #0 + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + adds r0, r4, #0 + bl sub_081D1750 + bl sub_080B9800 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CE578 + + thumb_func_start sub_081CE59C +sub_081CE59C: @ 0x081CE59C + push {lr} + bl sub_081C6DCC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CE59C + + thumb_func_start sub_081CE5A8 +sub_081CE5A8: @ 0x081CE5A8 + push {lr} + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CE5B8 + movs r0, #2 + bl sub_08001B48 + b _081CE5BE +_081CE5B8: + movs r0, #2 + bl sub_08001B5C +_081CE5BE: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CE5A8 + + thumb_func_start sub_081CE5C4 +sub_081CE5C4: @ 0x081CE5C4 + push {r4, lr} + bl sub_081CD3D0 + adds r4, r0, #0 + bl sub_081CD3E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081CE5F8 + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x50 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, #0x14 + adds r2, r4, r2 + adds r0, r4, #0 + bl sub_081D15CC + adds r0, r4, #0 + bl sub_081D16BC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CE5F8: .4byte gUnknown_30012B0 + thumb_func_end sub_081CE5C4 + + thumb_func_start sub_081CE5FC +sub_081CE5FC: @ 0x081CE5FC + push {r4, r5, lr} + bl sub_081CD3D0 + adds r5, r0, #0 + bl sub_081CD4BC + cmp r0, #0 + bne _081CE624 + bl sub_081CD3C0 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081CD3B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + subs r0, #1 + cmp r4, r0 + beq _081CE640 +_081CE624: + bl sub_081CD3E4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, #0x14 + adds r1, r5, r1 + adds r2, r5, #0 + adds r2, #0x50 + adds r0, r5, #0 + bl sub_081D15CC +_081CE640: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CE5FC + + thumb_func_start sub_081CE648 +sub_081CE648: @ 0x081CE648 + push {r4, lr} + movs r0, #0xc + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081CD4BC + cmp r0, #1 + beq _081CE65E + movs r0, #0 + b _081CE664 +_081CE65E: + ldr r1, _081CE66C + adds r0, r4, r1 + ldrb r0, [r0] +_081CE664: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CE66C: .4byte 0x00001828 + thumb_func_end sub_081CE648 + + thumb_func_start sub_081CE670 +sub_081CE670: @ 0x081CE670 + push {r4, lr} + movs r0, #7 + movs r1, #0x24 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CE6C4 + ldr r1, _081CE6B4 + movs r0, #0x12 + bl sub_081C6DDC + str r0, [r4, #0x20] + cmp r0, #0 + beq _081CE6C4 + ldr r0, _081CE6B8 + str r0, [r4] + ldr r0, _081CE6BC + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + movs r0, #0 + str r0, [r4, #0x18] + bl sub_081C6E6C + ldr r1, _081CE6C0 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x14] + movs r0, #1 + b _081CE6C6 + .align 2, 0 +_081CE6B4: .4byte 0x000006AC +_081CE6B8: .4byte sub_081CE744 +_081CE6BC: .4byte sub_081CE850 +_081CE6C0: .4byte gUnknown_85F59AC +_081CE6C4: + movs r0, #0 +_081CE6C6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CE670 + + thumb_func_start sub_081CE6CC +sub_081CE6CC: @ 0x081CE6CC + push {r4, lr} + movs r0, #7 + movs r1, #0x24 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CE708 + movs r0, #0x12 + bl sub_081C6DFC + str r0, [r4, #0x20] + ldr r0, _081CE700 + str r0, [r4] + movs r0, #1 + str r0, [r4, #0x18] + bl sub_081C6E6C + ldr r1, _081CE704 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x14] + movs r0, #1 + b _081CE70A + .align 2, 0 +_081CE700: .4byte sub_081CE764 +_081CE704: .4byte gUnknown_85F59AC +_081CE708: + movs r0, #0 +_081CE70A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CE6CC + + thumb_func_start sub_081CE710 +sub_081CE710: @ 0x081CE710 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r1, [r0] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CE710 + + thumb_func_start sub_081CE724 +sub_081CE724: @ 0x081CE724 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r0, [r0, #0x1c] + cmp r0, #0 + bne _081CE738 + movs r0, #0x12 + bl sub_081C6E10 +_081CE738: + movs r0, #7 + bl sub_081C6E10 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CE724 + + thumb_func_start sub_081CE744 +sub_081CE744: @ 0x081CE744 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #4] + bl sub_081C6898 + cmp r0, #0 + bne _081CE756 + ldr r0, _081CE760 + str r0, [r4] +_081CE756: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CE760: .4byte sub_081CE764 + thumb_func_end sub_081CE744 + + thumb_func_start sub_081CE764 +sub_081CE764: @ 0x081CE764 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _081CE778 + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CE77C + movs r0, #1 + b _081CE7DA + .align 2, 0 +_081CE778: .4byte gUnknown_3002360 +_081CE77C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CE788 + movs r0, #2 + b _081CE7DA +_081CE788: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081CE796 + movs r0, #3 + b _081CE7DA +_081CE796: + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _081CE7A6 + movs r0, #4 + b _081CE7DA +_081CE7A6: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081CE7BC + str r2, [r4, #0x1c] + ldr r0, _081CE7B8 + str r0, [r4] + movs r0, #5 + b _081CE7DA + .align 2, 0 +_081CE7B8: .4byte sub_081CE7E4 +_081CE7BC: + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081CE7CA + movs r0, #0 + b _081CE7DA +_081CE7CA: + bl sub_081C7F04 + ldr r1, [r4, #0x20] + strh r0, [r1, #2] + str r5, [r4, #0x1c] + ldr r0, _081CE7E0 + str r0, [r4] + movs r0, #6 +_081CE7DA: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081CE7E0: .4byte sub_081CE7EC + thumb_func_end sub_081CE764 + + thumb_func_start sub_081CE7E4 +sub_081CE7E4: @ 0x081CE7E4 + ldr r0, _081CE7E8 + bx lr + .align 2, 0 +_081CE7E8: .4byte 0x000186A3 + thumb_func_end sub_081CE7E4 + + thumb_func_start sub_081CE7EC +sub_081CE7EC: @ 0x081CE7EC + ldr r0, _081CE7F0 + bx lr + .align 2, 0 +_081CE7F0: .4byte 0x000186A9 + thumb_func_end sub_081CE7EC + + thumb_func_start sub_081CE7F4 +sub_081CE7F4: @ 0x081CE7F4 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r0, [r0, #0x18] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CE7F4 + + thumb_func_start sub_081CE804 +sub_081CE804: @ 0x081CE804 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r0, [r0, #0x20] + adds r0, #4 + pop {r1} + bx r1 + thumb_func_end sub_081CE804 + + thumb_func_start sub_081CE814 +sub_081CE814: @ 0x081CE814 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r0, [r0, #0x20] + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_081CE814 + + thumb_func_start sub_081CE824 +sub_081CE824: @ 0x081CE824 + push {r4, lr} + movs r0, #7 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C7F04 + ldr r1, [r4, #0x20] + lsls r0, r0, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CE824 + + thumb_func_start sub_081CE840 +sub_081CE840: @ 0x081CE840 + push {lr} + movs r0, #7 + bl sub_081C6DFC + ldr r0, [r0, #0x20] + ldrh r0, [r0, #2] + pop {r1} + bx r1 + thumb_func_end sub_081CE840 + + thumb_func_start sub_081CE850 +sub_081CE850: @ 0x081CE850 + push {lr} + ldr r2, _081CE864 + lsls r1, r0, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 +_081CE864: .4byte gUnknown_85F59C0 + thumb_func_end sub_081CE850 + + thumb_func_start sub_081CE868 +sub_081CE868: @ 0x081CE868 + push {r4, r5, r6, lr} + sub sp, #4 + movs r0, #7 + bl sub_081C6DFC + adds r6, r0, #0 + ldr r0, [r6, #0x20] + movs r1, #0 + strh r1, [r0] + ldr r0, [r6, #0x20] + strh r1, [r0, #2] + ldr r1, _081CE8E8 + ldr r0, [sp] + ands r0, r1 + movs r1, #0xe + orrs r0, r1 + str r0, [sp] + movs r5, #0 +_081CE88C: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081CE8EC + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _081CE8DE + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _081CE8D8 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x10 + ldr r2, _081CE8F0 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + str r0, [sp] + ldr r1, [r6, #0x14] + adds r0, r4, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + ldr r2, _081CE8F4 + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + adds r0, r6, #0 + mov r1, sp + bl sub_081CE9F8 +_081CE8D8: + adds r5, #1 + cmp r5, #5 + ble _081CE88C +_081CE8DE: + movs r0, #1 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081CE8E8: .4byte 0xFFFFFF00 +_081CE8EC: .4byte gUnknown_2024190 +_081CE8F0: .4byte 0xFFFF00FF +_081CE8F4: .4byte 0x0000FFFF + thumb_func_end sub_081CE868 + + thumb_func_start sub_081CE8F8 +sub_081CE8F8: @ 0x081CE8F8 + push {lr} + movs r0, #7 + bl sub_081C6DFC + movs r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0xc] + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_081CE8F8 + + thumb_func_start sub_081CE90C +sub_081CE90C: @ 0x081CE90C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + movs r0, #7 + bl sub_081C6DFC + adds r6, r0, #0 + ldr r5, [r6, #0xc] + ldr r4, [r6, #0x10] + movs r0, #0 + mov r8, r0 + cmp r5, #0xd + bgt _081CE99C +_081CE928: + cmp r4, #0x1d + bgt _081CE994 + lsls r0, r5, #0x18 + lsrs r7, r0, #0x18 +_081CE930: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D1B10 + cmp r0, #0 + beq _081CE96E + ldr r1, _081CE984 + ldr r0, [sp] + ands r0, r1 + orrs r0, r7 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + lsls r3, r1, #8 + ldr r2, _081CE988 + ands r0, r2 + orrs r0, r3 + str r0, [sp] + ldr r2, [r6, #0x14] + adds r0, r7, #0 + bl sub_080D15D0 + lsls r0, r0, #0x10 + ldr r2, _081CE98C + ldr r1, [sp] + ands r1, r2 + orrs r1, r0 + str r1, [sp] + adds r0, r6, #0 + mov r1, sp + bl sub_081CE9F8 +_081CE96E: + movs r0, #1 + add r8, r0 + adds r4, #1 + mov r0, r8 + cmp r0, #0xe + ble _081CE990 + str r5, [r6, #0xc] + str r4, [r6, #0x10] + movs r0, #3 + b _081CE99E + .align 2, 0 +_081CE984: .4byte 0xFFFFFF00 +_081CE988: .4byte 0xFFFF00FF +_081CE98C: .4byte 0x0000FFFF +_081CE990: + cmp r4, #0x1d + ble _081CE930 +_081CE994: + movs r4, #0 + adds r5, #1 + cmp r5, #0xd + ble _081CE928 +_081CE99C: + movs r0, #1 +_081CE99E: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CE90C + + thumb_func_start sub_081CE9AC +sub_081CE9AC: @ 0x081CE9AC + push {r4, r5, r6, lr} + movs r0, #7 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, [r5, #0x20] + ldrh r6, [r0] + ldrh r4, [r0, #6] + movs r1, #1 + strh r1, [r0, #6] + movs r3, #1 + cmp r3, r6 + bge _081CE9EC +_081CE9C6: + ldr r2, [r5, #0x20] + lsls r0, r3, #2 + adds r1, r2, r0 + ldrh r0, [r1, #6] + cmp r0, r4 + bne _081CE9E0 + subs r0, r3, #1 + lsls r0, r0, #2 + adds r0, r2, r0 + ldrh r0, [r0, #6] + strh r0, [r1, #6] + adds r0, r3, #1 + b _081CE9E6 +_081CE9E0: + adds r4, r0, #0 + adds r0, r3, #1 + strh r0, [r1, #6] +_081CE9E6: + adds r3, r0, #0 + cmp r3, r6 + blt _081CE9C6 +_081CE9EC: + movs r0, #1 + str r0, [r5, #0x18] + movs r0, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081CE9AC + + thumb_func_start sub_081CE9F8 +sub_081CE9F8: @ 0x081CE9F8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + movs r1, #0 + ldr r0, [r5, #0x20] + ldrh r2, [r0] + lsrs r3, r2, #1 + cmp r2, r3 + beq _081CEA28 + adds r6, r0, #0 + ldrh r4, [r7, #2] +_081CEA0E: + lsls r0, r3, #2 + adds r0, r6, r0 + ldrh r0, [r0, #6] + cmp r4, r0 + bls _081CEA1C + adds r2, r3, #0 + b _081CEA1E +_081CEA1C: + adds r1, r3, #1 +_081CEA1E: + subs r0, r2, r1 + lsrs r0, r0, #1 + adds r3, r1, r0 + cmp r2, r3 + bne _081CEA0E +_081CEA28: + ldr r0, [r5, #0x20] + ldrh r2, [r0] + lsls r6, r3, #2 + cmp r2, r3 + bls _081CEA4C + lsls r0, r2, #2 + subs r4, r0, #4 +_081CEA36: + ldr r0, [r5, #0x20] + lsls r1, r2, #2 + adds r0, #4 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + subs r4, #4 + subs r2, #1 + cmp r2, r3 + bhi _081CEA36 +_081CEA4C: + ldr r0, [r5, #0x20] + adds r0, #4 + adds r0, r0, r6 + ldr r1, [r7] + str r1, [r0] + ldr r1, [r5, #0x20] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081CE9F8 + + thumb_func_start sub_081CEA64 +sub_081CEA64: @ 0x081CEA64 + push {r4, lr} + movs r1, #0x81 + lsls r1, r1, #4 + movs r0, #8 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CEA94 + ldr r0, _081CEA8C + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CEA90 + str r0, [r4] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #1 + b _081CEA96 + .align 2, 0 +_081CEA8C: .4byte sub_081CEB4C +_081CEA90: .4byte sub_081CEB18 +_081CEA94: + movs r0, #0 +_081CEA96: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CEA64 + + thumb_func_start sub_081CEA9C +sub_081CEA9C: @ 0x081CEA9C + push {r4, lr} + movs r1, #0x81 + lsls r1, r1, #4 + movs r0, #8 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CEACC + ldr r0, _081CEAC4 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CEAC8 + str r0, [r4] + movs r0, #1 + str r0, [r4, #0xc] + b _081CEACE + .align 2, 0 +_081CEAC4: .4byte sub_081CEB4C +_081CEAC8: .4byte sub_081CEB18 +_081CEACC: + movs r0, #0 +_081CEACE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CEA9C + + thumb_func_start sub_081CEAD4 +sub_081CEAD4: @ 0x081CEAD4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081CEAFC + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081CEB00 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CEAFC: .4byte gUnknown_85F5BA4 +_081CEB00: .4byte sub_081CEB18 + thumb_func_end sub_081CEAD4 + + thumb_func_start sub_081CEB04 +sub_081CEB04: @ 0x081CEB04 + push {lr} + movs r0, #8 + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081CEB04 + + thumb_func_start sub_081CEB14 +sub_081CEB14: @ 0x081CEB14 + bx r1 + .align 2, 0 + thumb_func_end sub_081CEB14 + + thumb_func_start sub_081CEB18 +sub_081CEB18: @ 0x081CEB18 + push {lr} + movs r0, #8 + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CEB18 + + thumb_func_start sub_081CEB2C +sub_081CEB2C: @ 0x081CEB2C + push {r4, lr} + movs r0, #8 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C79DC + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #8 + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CEB2C + + thumb_func_start sub_081CEB4C +sub_081CEB4C: @ 0x081CEB4C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #5 + bls _081CEB60 + b _081CECA2 +_081CEB60: + lsls r0, r4, #2 + ldr r1, _081CEB6C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CEB6C: .4byte _081CEB70 +_081CEB70: @ jump table + .4byte _081CEB88 @ case 0 + .4byte _081CEBE0 @ case 1 + .4byte _081CEBF4 @ case 2 + .4byte _081CEC14 @ case 3 + .4byte _081CEC2A @ case 4 + .4byte _081CEC8E @ case 5 +_081CEB88: + ldr r0, _081CEBD0 + movs r1, #2 + bl sub_081C7314 + ldr r1, _081CEBD4 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r1, r5, #0 + adds r1, #0x10 + movs r0, #1 + bl sub_0800212C + ldr r1, _081CEBD8 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + movs r0, #1 + bl sub_08002248 + ldr r0, _081CEBDC + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #1 + bl sub_08002248 +_081CEBCC: + movs r0, #0 + b _081CECA4 + .align 2, 0 +_081CEBD0: .4byte gUnknown_85F5B9C +_081CEBD4: .4byte gUnknown_85F59F0 +_081CEBD8: .4byte gUnknown_85F5AB8 +_081CEBDC: .4byte gUnknown_85F59D0 +_081CEBE0: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CEC9E + bl sub_081CE7F4 + cmp r0, #0 + beq _081CEC9E + b _081CEBCC +_081CEBF4: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CEC9E + ldr r0, _081CEC10 + movs r1, #0x20 + movs r2, #0x20 + bl sub_081C7104 + bl sub_081CEF4C + b _081CEBCC + .align 2, 0 +_081CEC10: .4byte gUnknown_85F5B7C +_081CEC14: + bl sub_081C79CC + cmp r0, #0 + bne _081CEC9E + adds r0, r5, #0 + bl sub_081CEEBC + movs r0, #3 + bl sub_081C7364 + b _081CEBCC +_081CEC2A: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CEC9E + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B5C + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _081CEC86 + bl sub_081C6E6C + adds r4, r0, #0 + adds r4, #8 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + bl sub_081C75BC + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 + movs r0, #1 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 +_081CEC86: + movs r0, #1 + bl sub_081C7280 + b _081CEBCC +_081CEC8E: + bl sub_081C72F4 + cmp r0, #0 + bne _081CEC9E + bl sub_081C77B8 + cmp r0, #0 + beq _081CECA2 +_081CEC9E: + movs r0, #2 + b _081CECA4 +_081CECA2: + movs r0, #4 +_081CECA4: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CEB4C + + thumb_func_start sub_081CECAC +sub_081CECAC: @ 0x081CECAC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CECEC + cmp r4, #1 + bgt _081CECC6 + cmp r4, #0 + beq _081CECD0 + b _081CED0C +_081CECC6: + cmp r4, #2 + beq _081CECF4 + cmp r4, #3 + beq _081CECFE + b _081CED0C +_081CECD0: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E00 + cmp r0, #1 + beq _081CECE8 + cmp r0, #1 + bgt _081CECFA + cmp r0, #0 + bne _081CECFA + b _081CED0C +_081CECE8: + movs r0, #7 + b _081CED0E +_081CECEC: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CED08 +_081CECF4: + adds r0, r5, #0 + bl sub_081CEEE8 +_081CECFA: + movs r0, #0 + b _081CED0E +_081CECFE: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CED0C +_081CED08: + movs r0, #2 + b _081CED0E +_081CED0C: + movs r0, #4 +_081CED0E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CECAC + + thumb_func_start sub_081CED14 +sub_081CED14: @ 0x081CED14 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CED54 + cmp r4, #1 + bgt _081CED2E + cmp r4, #0 + beq _081CED38 + b _081CED74 +_081CED2E: + cmp r4, #2 + beq _081CED5C + cmp r4, #3 + beq _081CED66 + b _081CED74 +_081CED38: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E34 + cmp r0, #1 + beq _081CED50 + cmp r0, #1 + bgt _081CED62 + cmp r0, #0 + bne _081CED62 + b _081CED74 +_081CED50: + movs r0, #7 + b _081CED76 +_081CED54: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CED70 +_081CED5C: + adds r0, r5, #0 + bl sub_081CEEE8 +_081CED62: + movs r0, #0 + b _081CED76 +_081CED66: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CED74 +_081CED70: + movs r0, #2 + b _081CED76 +_081CED74: + movs r0, #4 +_081CED76: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CED14 + + thumb_func_start sub_081CED7C +sub_081CED7C: @ 0x081CED7C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CEDBC + cmp r4, #1 + bgt _081CED96 + cmp r4, #0 + beq _081CEDA0 + b _081CEDDC +_081CED96: + cmp r4, #2 + beq _081CEDC4 + cmp r4, #3 + beq _081CEDCE + b _081CEDDC +_081CEDA0: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E74 + cmp r0, #1 + beq _081CEDB8 + cmp r0, #1 + bgt _081CEDCA + cmp r0, #0 + bne _081CEDCA + b _081CEDDC +_081CEDB8: + movs r0, #7 + b _081CEDDE +_081CEDBC: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CEDD8 +_081CEDC4: + adds r0, r5, #0 + bl sub_081CEEE8 +_081CEDCA: + movs r0, #0 + b _081CEDDE +_081CEDCE: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CEDDC +_081CEDD8: + movs r0, #2 + b _081CEDDE +_081CEDDC: + movs r0, #4 +_081CEDDE: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CED7C + + thumb_func_start sub_081CEDE4 +sub_081CEDE4: @ 0x081CEDE4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #8 + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CEE24 + cmp r4, #1 + bgt _081CEDFE + cmp r4, #0 + beq _081CEE08 + b _081CEE44 +_081CEDFE: + cmp r4, #2 + beq _081CEE2C + cmp r4, #3 + beq _081CEE36 + b _081CEE44 +_081CEE08: + movs r0, #5 + bl sub_080A306C + bl sub_081C7EB4 + cmp r0, #1 + beq _081CEE20 + cmp r0, #1 + bgt _081CEE32 + cmp r0, #0 + bne _081CEE32 + b _081CEE44 +_081CEE20: + movs r0, #7 + b _081CEE46 +_081CEE24: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CEE40 +_081CEE2C: + adds r0, r5, #0 + bl sub_081CEEE8 +_081CEE32: + movs r0, #0 + b _081CEE46 +_081CEE36: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CEE44 +_081CEE40: + movs r0, #2 + b _081CEE46 +_081CEE44: + movs r0, #4 +_081CEE46: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CEDE4 + + thumb_func_start sub_081CEE4C +sub_081CEE4C: @ 0x081CEE4C + push {lr} + cmp r0, #0 + beq _081CEE58 + cmp r0, #1 + beq _081CEE6C + b _081CEE84 +_081CEE58: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + bl sub_081C7060 + movs r0, #0 + b _081CEE86 +_081CEE6C: + bl sub_081C72F4 + cmp r0, #0 + bne _081CEE7C + bl sub_081C7080 + cmp r0, #0 + beq _081CEE80 +_081CEE7C: + movs r0, #2 + b _081CEE86 +_081CEE80: + bl sub_081C7784 +_081CEE84: + movs r0, #4 +_081CEE86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CEE4C + + thumb_func_start sub_081CEE8C +sub_081CEE8C: @ 0x081CEE8C + push {lr} + cmp r0, #0 + beq _081CEE98 + cmp r0, #1 + beq _081CEEA8 + b _081CEEB4 +_081CEE98: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + movs r0, #0 + b _081CEEB6 +_081CEEA8: + bl sub_081C72F4 + cmp r0, #0 + beq _081CEEB4 + movs r0, #2 + b _081CEEB6 +_081CEEB4: + movs r0, #4 +_081CEEB6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CEE8C + + thumb_func_start sub_081CEEBC +sub_081CEEBC: @ 0x081CEEBC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CEEE4 + bl sub_08003250 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + ldrb r0, [r4, #8] + movs r1, #1 + bl sub_08003528 + adds r0, r4, #0 + bl sub_081CEEE8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CEEE4: .4byte gUnknown_85F5BC0 + thumb_func_end sub_081CEEBC + + thumb_func_start sub_081CEEE8 +sub_081CEEE8: @ 0x081CEEE8 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + bl sub_081CE824 + adds r5, r0, #0 + bl sub_081AF8C8 + ldr r4, _081CEF40 + movs r0, #0 + adds r1, r4, #0 + bl sub_081AF8E4 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldr r4, _081CEF44 + ldr r1, _081CEF48 + adds r0, r4, #0 + bl sub_081AF900 + ldrb r0, [r6, #8] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r6, #8] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CEF40: .4byte gUnknown_2021C40 +_081CEF44: .4byte gUnknown_2021C54 +_081CEF48: .4byte gUnknown_85CB81B + thumb_func_end sub_081CEEE8 + + thumb_func_start sub_081CEF4C +sub_081CEF4C: @ 0x081CEF4C + push {r4, lr} + sub sp, #0x18 + bl sub_081CE804 + str r0, [sp] + bl sub_081CE814 + mov r1, sp + movs r4, #0 + strh r0, [r1, #4] + movs r0, #4 + strb r0, [r1, #8] + bl sub_081CE840 + mov r1, sp + strh r0, [r1, #6] + movs r0, #0xe + strb r0, [r1, #9] + movs r0, #0xf + strb r0, [r1, #0xa] + movs r0, #1 + strb r0, [r1, #0xb] + movs r0, #8 + strb r0, [r1, #0xc] + movs r0, #2 + strb r0, [r1, #0xd] + ldr r0, _081CEF98 + str r0, [sp, #0x10] + str r4, [sp, #0x14] + ldr r0, _081CEF9C + movs r2, #0 + bl sub_081C797C + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CEF98: .4byte sub_081CEFA0 +_081CEF9C: .4byte gUnknown_85F5BA0 + thumb_func_end sub_081CEF4C + + thumb_func_start sub_081CEFA0 +sub_081CEFA0: @ 0x081CEFA0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + bl sub_081AF8C8 + ldrb r0, [r4] + cmp r0, #0xe + bne _081CEFE8 + ldrb r1, [r4, #1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081CEFE0 + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + bl sub_08068B94 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081CEFE4 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806A058 + b _081CF00E + .align 2, 0 +_081CEFE0: .4byte gUnknown_2024190 +_081CEFE4: .4byte gUnknown_2021C68 +_081CEFE8: + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl sub_080D1934 + adds r4, r0, #0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + adds r0, r4, #0 + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081CF060 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806A1B4 +_081CF00E: + ldr r4, _081CF060 + adds r0, r4, #0 + bl sub_0800885C + ldr r6, _081CF064 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r5, _081CF068 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_08008E14 + movs r0, #0 + adds r1, r6, #0 + bl sub_081AF8E4 + movs r0, #1 + adds r1, r5, #0 + bl sub_081AF8E4 + cmp r7, #0xfe + beq _081CF070 + cmp r7, #0xfe + bgt _081CF078 + cmp r7, #0 + bne _081CF078 + ldr r1, _081CF06C + b _081CF07A + .align 2, 0 +_081CF060: .4byte gUnknown_2021C68 +_081CF064: .4byte gUnknown_2021C40 +_081CF068: .4byte gUnknown_2021C54 +_081CF06C: .4byte gUnknown_85CB7D6 +_081CF070: + ldr r1, _081CF074 + b _081CF07A + .align 2, 0 +_081CF074: .4byte gUnknown_85CB7EA +_081CF078: + ldr r1, _081CF08C +_081CF07A: + mov r0, r8 + bl sub_081AF900 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CF08C: .4byte gUnknown_85CB7FE + thumb_func_end sub_081CEFA0 + + thumb_func_start sub_081CF090 +sub_081CF090: @ 0x081CF090 + push {r4, lr} + movs r0, #9 + movs r1, #0x20 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CF0D0 + ldr r1, _081CF0C4 + movs r0, #0x12 + bl sub_081C6DDC + str r0, [r4, #0x1c] + cmp r0, #0 + beq _081CF0D0 + ldr r0, _081CF0C8 + str r0, [r4] + ldr r0, _081CF0CC + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #1 + b _081CF0D2 + .align 2, 0 +_081CF0C4: .4byte 0x000006AC +_081CF0C8: .4byte sub_081CF13C +_081CF0CC: .4byte sub_081CF248 +_081CF0D0: + movs r0, #0 +_081CF0D2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CF090 + + thumb_func_start sub_081CF0D8 +sub_081CF0D8: @ 0x081CF0D8 + push {r4, lr} + movs r0, #9 + movs r1, #0x20 + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CF100 + movs r0, #0x12 + bl sub_081C6DFC + str r0, [r4, #0x1c] + ldr r0, _081CF0FC + str r0, [r4] + movs r0, #1 + str r0, [r4, #0x14] + b _081CF102 + .align 2, 0 +_081CF0FC: .4byte sub_081CF15C +_081CF100: + movs r0, #0 +_081CF102: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CF0D8 + + thumb_func_start sub_081CF108 +sub_081CF108: @ 0x081CF108 + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r1, [r0] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF108 + + thumb_func_start sub_081CF11C +sub_081CF11C: @ 0x081CF11C + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r0, [r0, #0x18] + cmp r0, #0 + bne _081CF130 + movs r0, #0x12 + bl sub_081C6E10 +_081CF130: + movs r0, #9 + bl sub_081C6E10 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CF11C + + thumb_func_start sub_081CF13C +sub_081CF13C: @ 0x081CF13C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #4] + bl sub_081C6898 + cmp r0, #0 + bne _081CF14E + ldr r0, _081CF158 + str r0, [r4] +_081CF14E: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CF158: .4byte sub_081CF15C + thumb_func_end sub_081CF13C + + thumb_func_start sub_081CF15C +sub_081CF15C: @ 0x081CF15C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _081CF170 + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CF174 + movs r0, #1 + b _081CF1D2 + .align 2, 0 +_081CF170: .4byte gUnknown_3002360 +_081CF174: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CF180 + movs r0, #2 + b _081CF1D2 +_081CF180: + ldrh r1, [r2, #0x2e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081CF18E + movs r0, #3 + b _081CF1D2 +_081CF18E: + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0 + beq _081CF19E + movs r0, #4 + b _081CF1D2 +_081CF19E: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081CF1B4 + str r2, [r4, #0x18] + ldr r0, _081CF1B0 + str r0, [r4] + movs r0, #5 + b _081CF1D2 + .align 2, 0 +_081CF1B0: .4byte sub_081CF1DC +_081CF1B4: + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _081CF1C2 + movs r0, #0 + b _081CF1D2 +_081CF1C2: + bl sub_081C7F04 + ldr r1, [r4, #0x1c] + strh r0, [r1, #2] + str r5, [r4, #0x18] + ldr r0, _081CF1D8 + str r0, [r4] + movs r0, #6 +_081CF1D2: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081CF1D8: .4byte sub_081CF1E4 + thumb_func_end sub_081CF15C + + thumb_func_start sub_081CF1DC +sub_081CF1DC: @ 0x081CF1DC + ldr r0, _081CF1E0 + bx lr + .align 2, 0 +_081CF1E0: .4byte 0x000186A5 + thumb_func_end sub_081CF1DC + + thumb_func_start sub_081CF1E4 +sub_081CF1E4: @ 0x081CF1E4 + ldr r0, _081CF1E8 + bx lr + .align 2, 0 +_081CF1E8: .4byte 0x000186AD + thumb_func_end sub_081CF1E4 + + thumb_func_start sub_081CF1EC +sub_081CF1EC: @ 0x081CF1EC + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r0, [r0, #0x14] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF1EC + + thumb_func_start sub_081CF1FC +sub_081CF1FC: @ 0x081CF1FC + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r0, [r0, #0x1c] + adds r0, #4 + pop {r1} + bx r1 + thumb_func_end sub_081CF1FC + + thumb_func_start sub_081CF20C +sub_081CF20C: @ 0x081CF20C + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r0, [r0, #0x1c] + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_081CF20C + + thumb_func_start sub_081CF21C +sub_081CF21C: @ 0x081CF21C + push {r4, lr} + movs r0, #9 + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C7F04 + ldr r1, [r4, #0x1c] + lsls r0, r0, #2 + adds r1, r1, r0 + ldrh r0, [r1, #6] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CF21C + + thumb_func_start sub_081CF238 +sub_081CF238: @ 0x081CF238 + push {lr} + movs r0, #9 + bl sub_081C6DFC + ldr r0, [r0, #0x1c] + ldrh r0, [r0, #2] + pop {r1} + bx r1 + thumb_func_end sub_081CF238 + + thumb_func_start sub_081CF248 +sub_081CF248: @ 0x081CF248 + push {lr} + ldr r2, _081CF25C + lsls r1, r0, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 +_081CF25C: .4byte gUnknown_85F5BC8 + thumb_func_end sub_081CF248 + + thumb_func_start sub_081CF260 +sub_081CF260: @ 0x081CF260 + push {r4, r5, r6, lr} + sub sp, #4 + movs r0, #9 + bl sub_081C6DFC + adds r6, r0, #0 + ldr r0, [r6, #0x1c] + movs r1, #0 + strh r1, [r0] + ldr r0, [r6, #0x1c] + strh r1, [r0, #2] + ldr r1, _081CF2F0 + ldr r0, [sp] + ands r0, r1 + movs r1, #0xe + orrs r0, r1 + str r0, [sp] + movs r5, #0 +_081CF284: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081CF2F4 + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _081CF2E4 + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _081CF2DE + adds r0, r4, #0 + movs r1, #4 + bl sub_0806A058 + cmp r0, #0 + bne _081CF2DE + adds r0, r4, #0 + movs r1, #0x52 + bl sub_0806A058 + adds r3, r0, #0 + cmp r3, #0 + beq _081CF2DE + lsls r1, r5, #0x18 + lsrs r1, r1, #0x10 + ldr r2, _081CF2F8 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + lsls r2, r3, #0x10 + ldr r1, _081CF2FC + ands r0, r1 + orrs r0, r2 + str r0, [sp] + adds r0, r6, #0 + mov r1, sp + bl sub_081CF3C0 +_081CF2DE: + adds r5, #1 + cmp r5, #5 + ble _081CF284 +_081CF2E4: + movs r0, #1 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081CF2F0: .4byte 0xFFFFFF00 +_081CF2F4: .4byte gUnknown_2024190 +_081CF2F8: .4byte 0xFFFF00FF +_081CF2FC: .4byte 0x0000FFFF + thumb_func_end sub_081CF260 + + thumb_func_start sub_081CF300 +sub_081CF300: @ 0x081CF300 + push {lr} + movs r0, #9 + bl sub_081C6DFC + movs r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0xc] + movs r0, #1 + pop {r1} + bx r1 + thumb_func_end sub_081CF300 + + thumb_func_start sub_081CF314 +sub_081CF314: @ 0x081CF314 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #9 + bl sub_081C6DFC + mov r8, r0 + ldr r7, [r0, #0xc] + ldr r6, [r0, #0x10] + movs r0, #0 + mov sb, r0 + cmp r7, #0xd + bgt _081CF3A8 + b _081CF39C +_081CF334: + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080D1B10 + cmp r0, #0 + beq _081CF37A + lsls r0, r7, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r6, #0x18 + lsrs r4, r0, #0x18 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x52 + bl sub_080D15D0 + adds r3, r0, #0 + cmp r3, #0 + beq _081CF37A + ldr r1, _081CF390 + ldr r0, [sp] + ands r0, r1 + orrs r0, r5 + lsls r2, r4, #8 + ldr r1, _081CF394 + ands r0, r1 + orrs r0, r2 + lsls r2, r3, #0x10 + ldr r1, _081CF398 + ands r0, r1 + orrs r0, r2 + str r0, [sp] + mov r0, r8 + mov r1, sp + bl sub_081CF3C0 +_081CF37A: + movs r1, #1 + add sb, r1 + adds r6, #1 + mov r0, sb + cmp r0, #0xe + ble _081CF39C + mov r1, r8 + str r7, [r1, #0xc] + str r6, [r1, #0x10] + movs r0, #3 + b _081CF3B0 + .align 2, 0 +_081CF390: .4byte 0xFFFFFF00 +_081CF394: .4byte 0xFFFF00FF +_081CF398: .4byte 0x0000FFFF +_081CF39C: + cmp r6, #0x1d + ble _081CF334 + movs r6, #0 + adds r7, #1 + cmp r7, #0xd + ble _081CF39C +_081CF3A8: + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + movs r0, #4 +_081CF3B0: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF314 + + thumb_func_start sub_081CF3C0 +sub_081CF3C0: @ 0x081CF3C0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + movs r1, #0 + ldr r0, [r5, #0x1c] + ldrh r2, [r0] + lsrs r3, r2, #1 + cmp r2, r3 + beq _081CF3F0 + adds r6, r0, #0 + ldrh r4, [r7, #2] +_081CF3D6: + lsls r0, r3, #2 + adds r0, r6, r0 + ldrh r0, [r0, #6] + cmp r4, r0 + bls _081CF3E4 + adds r2, r3, #0 + b _081CF3E6 +_081CF3E4: + adds r1, r3, #1 +_081CF3E6: + subs r0, r2, r1 + lsrs r0, r0, #1 + adds r3, r1, r0 + cmp r2, r3 + bne _081CF3D6 +_081CF3F0: + ldr r0, [r5, #0x1c] + ldrh r2, [r0] + lsls r6, r3, #2 + cmp r2, r3 + bls _081CF414 + lsls r0, r2, #2 + subs r4, r0, #4 +_081CF3FE: + ldr r0, [r5, #0x1c] + lsls r1, r2, #2 + adds r0, #4 + adds r1, r0, r1 + adds r0, r0, r4 + ldr r0, [r0] + str r0, [r1] + subs r4, #4 + subs r2, #1 + cmp r2, r3 + bhi _081CF3FE +_081CF414: + ldr r0, [r5, #0x1c] + adds r0, #4 + adds r0, r0, r6 + ldr r1, [r7] + str r1, [r0] + ldr r1, [r5, #0x1c] + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081CF3C0 + + thumb_func_start sub_081CF42C +sub_081CF42C: @ 0x081CF42C + push {r4, r5, r6, lr} + movs r5, #0 +_081CF430: + movs r0, #0x64 + adds r1, r5, #0 + muls r1, r0, r1 + ldr r0, _081CF48C + adds r4, r1, r0 + adds r0, r4, #0 + movs r1, #5 + bl sub_0806A058 + cmp r0, #0 + beq _081CF45E + adds r0, r4, #0 + movs r1, #6 + bl sub_0806A058 + cmp r0, #0 + bne _081CF45E + adds r0, r4, #0 + movs r1, #0x53 + bl sub_0806A058 + cmp r0, #0 + bne _081CF486 +_081CF45E: + adds r5, #1 + cmp r5, #5 + ble _081CF430 + movs r5, #0 +_081CF466: + movs r4, #0 + lsls r6, r5, #0x18 +_081CF46A: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080D1B10 + cmp r0, #0 + beq _081CF490 + lsls r1, r4, #0x18 + lsrs r1, r1, #0x18 + lsrs r0, r6, #0x18 + movs r2, #0x53 + bl sub_080D15D0 + cmp r0, #0 + beq _081CF490 +_081CF486: + movs r0, #1 + b _081CF49E + .align 2, 0 +_081CF48C: .4byte gUnknown_2024190 +_081CF490: + adds r4, #1 + cmp r4, #0x1d + ble _081CF46A + adds r5, #1 + cmp r5, #0xd + ble _081CF466 + movs r0, #0 +_081CF49E: + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081CF42C + + thumb_func_start sub_081CF4A4 +sub_081CF4A4: @ 0x081CF4A4 + push {r4, lr} + movs r1, #0x81 + lsls r1, r1, #4 + movs r0, #0xa + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CF4D4 + ldr r0, _081CF4CC + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CF4D0 + str r0, [r4] + movs r0, #0 + str r0, [r4, #0xc] + movs r0, #1 + b _081CF4D6 + .align 2, 0 +_081CF4CC: .4byte sub_081CF58C +_081CF4D0: .4byte sub_081CF558 +_081CF4D4: + movs r0, #0 +_081CF4D6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CF4A4 + + thumb_func_start sub_081CF4DC +sub_081CF4DC: @ 0x081CF4DC + push {r4, lr} + movs r1, #0x81 + lsls r1, r1, #4 + movs r0, #0xa + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CF50C + ldr r0, _081CF504 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081CF508 + str r0, [r4] + movs r0, #1 + str r0, [r4, #0xc] + b _081CF50E + .align 2, 0 +_081CF504: .4byte sub_081CF58C +_081CF508: .4byte sub_081CF558 +_081CF50C: + movs r0, #0 +_081CF50E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CF4DC + + thumb_func_start sub_081CF514 +sub_081CF514: @ 0x081CF514 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081CF53C + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081CF540 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CF53C: .4byte gUnknown_85F5DA8 +_081CF540: .4byte sub_081CF558 + thumb_func_end sub_081CF514 + + thumb_func_start sub_081CF544 +sub_081CF544: @ 0x081CF544 + push {lr} + movs r0, #0xa + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081CF544 + + thumb_func_start sub_081CF554 +sub_081CF554: @ 0x081CF554 + bx r1 + .align 2, 0 + thumb_func_end sub_081CF554 + + thumb_func_start sub_081CF558 +sub_081CF558: @ 0x081CF558 + push {lr} + movs r0, #0xa + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF558 + + thumb_func_start sub_081CF56C +sub_081CF56C: @ 0x081CF56C + push {r4, lr} + movs r0, #0xa + bl sub_081C6DFC + adds r4, r0, #0 + bl sub_081C79DC + ldrb r0, [r4, #8] + bl sub_08003444 + movs r0, #0xa + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081CF56C + + thumb_func_start sub_081CF58C +sub_081CF58C: @ 0x081CF58C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #5 + bls _081CF5A0 + b _081CF6C6 +_081CF5A0: + lsls r0, r4, #2 + ldr r1, _081CF5AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081CF5AC: .4byte _081CF5B0 +_081CF5B0: @ jump table + .4byte _081CF5C8 @ case 0 + .4byte _081CF61C @ case 1 + .4byte _081CF64A @ case 2 + .4byte _081CF668 @ case 3 + .4byte _081CF678 @ case 4 + .4byte _081CF6B2 @ case 5 +_081CF5C8: + ldr r0, _081CF60C + movs r1, #2 + bl sub_081C7314 + ldr r1, _081CF610 + movs r0, #0 + str r0, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r1, r5, #0 + adds r1, #0x10 + movs r0, #1 + bl sub_0800212C + ldr r1, _081CF614 + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r0, _081CF618 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #1 + bl sub_08002248 +_081CF606: + movs r0, #0 + b _081CF6C8 + .align 2, 0 +_081CF60C: .4byte gUnknown_85F5DA0 +_081CF610: .4byte gUnknown_85F5BF4 +_081CF614: .4byte gUnknown_85F5CBC +_081CF618: .4byte gUnknown_85F5BD4 +_081CF61C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CF6C2 + bl sub_081CF1EC + cmp r0, #0 + beq _081CF6C2 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + bl sub_08001B48 + b _081CF606 +_081CF64A: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CF6C2 + ldr r0, _081CF664 + movs r1, #0x20 + movs r2, #0x20 + bl sub_081C7104 + bl sub_081CF9A4 + b _081CF606 + .align 2, 0 +_081CF664: .4byte gUnknown_85F5D80 +_081CF668: + bl sub_081C79CC + cmp r0, #0 + bne _081CF6C2 + adds r0, r5, #0 + bl sub_081CF8E0 + b _081CF606 +_081CF678: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081CF6C2 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B5C + movs r0, #9 + bl sub_081C7364 + movs r0, #1 + bl sub_081C7280 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _081CF606 + movs r0, #2 + bl sub_081C75BC + movs r0, #2 + movs r1, #1 + movs r2, #0 + bl sub_081C7748 + b _081CF606 +_081CF6B2: + bl sub_081C72F4 + cmp r0, #0 + bne _081CF6C2 + bl sub_081C77B8 + cmp r0, #0 + beq _081CF6C6 +_081CF6C2: + movs r0, #2 + b _081CF6C8 +_081CF6C6: + movs r0, #4 +_081CF6C8: + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CF58C + + thumb_func_start sub_081CF6D0 +sub_081CF6D0: @ 0x081CF6D0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CF710 + cmp r4, #1 + bgt _081CF6EA + cmp r4, #0 + beq _081CF6F4 + b _081CF730 +_081CF6EA: + cmp r4, #2 + beq _081CF718 + cmp r4, #3 + beq _081CF722 + b _081CF730 +_081CF6F4: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E00 + cmp r0, #1 + beq _081CF70C + cmp r0, #1 + bgt _081CF71E + cmp r0, #0 + bne _081CF71E + b _081CF730 +_081CF70C: + movs r0, #7 + b _081CF732 +_081CF710: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CF72C +_081CF718: + adds r0, r5, #0 + bl sub_081CF95C +_081CF71E: + movs r0, #0 + b _081CF732 +_081CF722: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CF730 +_081CF72C: + movs r0, #2 + b _081CF732 +_081CF730: + movs r0, #4 +_081CF732: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CF6D0 + + thumb_func_start sub_081CF738 +sub_081CF738: @ 0x081CF738 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CF778 + cmp r4, #1 + bgt _081CF752 + cmp r4, #0 + beq _081CF75C + b _081CF798 +_081CF752: + cmp r4, #2 + beq _081CF780 + cmp r4, #3 + beq _081CF78A + b _081CF798 +_081CF75C: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E34 + cmp r0, #1 + beq _081CF774 + cmp r0, #1 + bgt _081CF786 + cmp r0, #0 + bne _081CF786 + b _081CF798 +_081CF774: + movs r0, #7 + b _081CF79A +_081CF778: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CF794 +_081CF780: + adds r0, r5, #0 + bl sub_081CF95C +_081CF786: + movs r0, #0 + b _081CF79A +_081CF78A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CF798 +_081CF794: + movs r0, #2 + b _081CF79A +_081CF798: + movs r0, #4 +_081CF79A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CF738 + + thumb_func_start sub_081CF7A0 +sub_081CF7A0: @ 0x081CF7A0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CF7E0 + cmp r4, #1 + bgt _081CF7BA + cmp r4, #0 + beq _081CF7C4 + b _081CF800 +_081CF7BA: + cmp r4, #2 + beq _081CF7E8 + cmp r4, #3 + beq _081CF7F2 + b _081CF800 +_081CF7C4: + movs r0, #5 + bl sub_080A306C + bl sub_081C7E74 + cmp r0, #1 + beq _081CF7DC + cmp r0, #1 + bgt _081CF7EE + cmp r0, #0 + bne _081CF7EE + b _081CF800 +_081CF7DC: + movs r0, #7 + b _081CF802 +_081CF7E0: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CF7FC +_081CF7E8: + adds r0, r5, #0 + bl sub_081CF95C +_081CF7EE: + movs r0, #0 + b _081CF802 +_081CF7F2: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CF800 +_081CF7FC: + movs r0, #2 + b _081CF802 +_081CF800: + movs r0, #4 +_081CF802: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CF7A0 + + thumb_func_start sub_081CF808 +sub_081CF808: @ 0x081CF808 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081CF848 + cmp r4, #1 + bgt _081CF822 + cmp r4, #0 + beq _081CF82C + b _081CF868 +_081CF822: + cmp r4, #2 + beq _081CF850 + cmp r4, #3 + beq _081CF85A + b _081CF868 +_081CF82C: + movs r0, #5 + bl sub_080A306C + bl sub_081C7EB4 + cmp r0, #1 + beq _081CF844 + cmp r0, #1 + bgt _081CF856 + cmp r0, #0 + bne _081CF856 + b _081CF868 +_081CF844: + movs r0, #7 + b _081CF86A +_081CF848: + bl sub_081C7DD8 + cmp r0, #0 + bne _081CF864 +_081CF850: + adds r0, r5, #0 + bl sub_081CF95C +_081CF856: + movs r0, #0 + b _081CF86A +_081CF85A: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081CF868 +_081CF864: + movs r0, #2 + b _081CF86A +_081CF868: + movs r0, #4 +_081CF86A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CF808 + + thumb_func_start sub_081CF870 +sub_081CF870: @ 0x081CF870 + push {lr} + cmp r0, #0 + beq _081CF87C + cmp r0, #1 + beq _081CF890 + b _081CF8A8 +_081CF87C: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + bl sub_081C7060 + movs r0, #0 + b _081CF8AA +_081CF890: + bl sub_081C72F4 + cmp r0, #0 + bne _081CF8A0 + bl sub_081C7080 + cmp r0, #0 + beq _081CF8A4 +_081CF8A0: + movs r0, #2 + b _081CF8AA +_081CF8A4: + bl sub_081C7784 +_081CF8A8: + movs r0, #4 +_081CF8AA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF870 + + thumb_func_start sub_081CF8B0 +sub_081CF8B0: @ 0x081CF8B0 + push {lr} + cmp r0, #0 + beq _081CF8BC + cmp r0, #1 + beq _081CF8CC + b _081CF8D8 +_081CF8BC: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + movs r0, #0 + b _081CF8DA +_081CF8CC: + bl sub_081C72F4 + cmp r0, #0 + beq _081CF8D8 + movs r0, #2 + b _081CF8DA +_081CF8D8: + movs r0, #4 +_081CF8DA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CF8B0 + + thumb_func_start sub_081CF8E0 +sub_081CF8E0: @ 0x081CF8E0 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r5, r0, #0 + ldr r0, _081CF94C + bl sub_08003250 + movs r6, #0 + strh r0, [r5, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + bl sub_081CF20C + adds r1, r0, #0 + ldr r4, _081CF950 + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r4, #0 + bl sub_081AF8E4 + ldr r4, _081CF954 + ldr r1, _081CF958 + adds r0, r4, #0 + bl sub_081AF900 + ldrb r0, [r5, #8] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + str r6, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r5, #8] + movs r1, #1 + bl sub_08003528 + adds r0, r5, #0 + bl sub_081CF95C + add sp, #0xc + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081CF94C: .4byte gUnknown_85F5DC4 +_081CF950: .4byte gUnknown_2021C40 +_081CF954: .4byte gUnknown_2021C54 +_081CF958: .4byte gUnknown_85F5DCC + thumb_func_end sub_081CF8E0 + + thumb_func_start sub_081CF95C +sub_081CF95C: @ 0x081CF95C + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + bl sub_081C7F04 + adds r1, r0, #0 + ldr r4, _081CF9A0 + adds r1, #1 + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldrb r0, [r5, #8] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r5, #8] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081CF9A0: .4byte gUnknown_2021C40 + thumb_func_end sub_081CF95C + + thumb_func_start sub_081CF9A4 +sub_081CF9A4: @ 0x081CF9A4 + push {r4, lr} + sub sp, #0x18 + bl sub_081CF1FC + str r0, [sp] + bl sub_081CF20C + mov r1, sp + movs r4, #0 + strh r0, [r1, #4] + movs r0, #4 + strb r0, [r1, #8] + bl sub_081CF238 + mov r1, sp + strh r0, [r1, #6] + movs r0, #0xe + strb r0, [r1, #9] + movs r0, #0x10 + strb r0, [r1, #0xa] + movs r0, #1 + strb r0, [r1, #0xb] + movs r0, #8 + strb r0, [r1, #0xc] + movs r0, #2 + strb r0, [r1, #0xd] + ldr r0, _081CF9F0 + str r0, [sp, #0x10] + str r4, [sp, #0x14] + ldr r0, _081CF9F4 + movs r2, #0 + bl sub_081C797C + add sp, #0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081CF9F0: .4byte sub_081CF9F8 +_081CF9F4: .4byte gUnknown_85F5DA4 + thumb_func_end sub_081CF9A4 + + thumb_func_start sub_081CF9F8 +sub_081CF9F8: @ 0x081CF9F8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r1 + adds r7, r0, #0 + bl sub_081AF8C8 + ldrb r0, [r7] + cmp r0, #0xe + bne _081CFA44 + ldrb r1, [r7, #1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081CFA3C + adds r4, r4, r0 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + bl sub_08068B94 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081CFA40 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806A058 + b _081CFA6A + .align 2, 0 +_081CFA3C: .4byte gUnknown_2024190 +_081CFA40: .4byte gUnknown_2021C68 +_081CFA44: + ldrb r0, [r7] + ldrb r1, [r7, #1] + bl sub_080D1934 + adds r4, r0, #0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r2, _081CFAD0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806A1B4 +_081CFA6A: + ldr r4, _081CFAD0 + adds r0, r4, #0 + bl sub_0800885C + ldr r0, _081CFAD4 + mov r8, r0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r5, _081CFAD8 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_08008E14 + ldrh r1, [r7, #2] + adds r0, r4, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + movs r0, #0 + mov r1, r8 + bl sub_081AF8E4 + movs r0, #1 + adds r1, r5, #0 + bl sub_081AF8E4 + movs r0, #2 + adds r1, r4, #0 + bl sub_081AF8E4 + cmp r6, #0xfe + beq _081CFAE0 + cmp r6, #0xfe + bgt _081CFAE8 + cmp r6, #0 + bne _081CFAE8 + ldr r1, _081CFADC + b _081CFAEA + .align 2, 0 +_081CFAD0: .4byte gUnknown_2021C68 +_081CFAD4: .4byte gUnknown_2021C40 +_081CFAD8: .4byte gUnknown_2021C54 +_081CFADC: .4byte gUnknown_85F5DD3 +_081CFAE0: + ldr r1, _081CFAE4 + b _081CFAEA + .align 2, 0 +_081CFAE4: .4byte gUnknown_85F5DEB +_081CFAE8: + ldr r1, _081CFAFC +_081CFAEA: + mov r0, sb + bl sub_081AF900 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081CFAFC: .4byte gUnknown_85F5E03 + thumb_func_end sub_081CF9F8 + + thumb_func_start sub_081CFB00 +sub_081CFB00: @ 0x081CFB00 + push {r4, lr} + movs r0, #0xd + movs r1, #0x9c + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081CFB48 + movs r0, #0x12 + bl sub_081C6DFC + str r0, [r4, #8] + cmp r0, #0 + beq _081CFB48 + adds r0, r4, #0 + bl sub_081CFEC4 + adds r1, r4, #0 + adds r1, #0x98 + ldr r0, _081CFB3C + str r0, [r1] + ldr r1, _081CFB40 + movs r0, #3 + strh r0, [r1] + ldr r1, _081CFB44 + movs r0, #0xa + strh r0, [r1] + movs r0, #1 + b _081CFB4A + .align 2, 0 +_081CFB3C: .4byte sub_081CFB74 +_081CFB40: .4byte gUnknown_300279C +_081CFB44: .4byte gUnknown_3002350 +_081CFB48: + movs r0, #0 +_081CFB4A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081CFB00 + + thumb_func_start sub_081CFB50 +sub_081CFB50: @ 0x081CFB50 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + adds r1, r0, #0 + adds r1, #0x98 + ldr r1, [r1] + bl _call_via_r1 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFB50 + + thumb_func_start sub_081CFB68 +sub_081CFB68: @ 0x081CFB68 + push {lr} + movs r0, #0xd + bl sub_081C6E10 + pop {r0} + bx r0 + thumb_func_end sub_081CFB68 + + thumb_func_start sub_081CFB74 +sub_081CFB74: @ 0x081CFB74 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _081CFB90 + ldrh r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CFB94 + ldr r3, [r4, #8] + ldrh r0, [r3, #2] + cmp r0, #0 + beq _081CFB94 + subs r0, #1 + b _081CFBAC + .align 2, 0 +_081CFB90: .4byte gUnknown_3002360 +_081CFB94: + ldrh r1, [r2, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CFBBC + ldr r3, [r4, #8] + ldrh r1, [r3, #2] + ldrh r0, [r3] + subs r0, #1 + cmp r1, r0 + bge _081CFBBC + adds r0, r1, #1 +_081CFBAC: + movs r1, #0 + strh r0, [r3, #2] + strh r1, [r4, #0xc] + adds r0, r4, #0 + bl sub_081CFEC4 + movs r0, #1 + b _081CFBEE +_081CFBBC: + ldrh r2, [r2, #0x2e] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _081CFBD8 + adds r1, r4, #0 + adds r1, #0x98 + ldr r0, _081CFBD4 + str r0, [r1] + movs r0, #2 + b _081CFBEE + .align 2, 0 +_081CFBD4: .4byte sub_081CFBF8 +_081CFBD8: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + bne _081CFBE4 + movs r0, #0 + b _081CFBEE +_081CFBE4: + adds r1, r4, #0 + adds r1, #0x98 + ldr r0, _081CFBF4 + str r0, [r1] + movs r0, #5 +_081CFBEE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CFBF4: .4byte sub_081CFC84 + thumb_func_end sub_081CFB74 + + thumb_func_start sub_081CFBF8 +sub_081CFBF8: @ 0x081CFBF8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081CFC58 + ldrh r1, [r0, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _081CFC12 + adds r0, r4, #0 + bl sub_081CFC8C + cmp r0, #0 + bne _081CFC54 +_081CFC12: + ldr r0, _081CFC58 + ldrh r1, [r0, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _081CFC28 + adds r0, r4, #0 + bl sub_081CFCCC + cmp r0, #0 + bne _081CFC54 +_081CFC28: + ldr r0, _081CFC58 + ldrh r1, [r0, #0x30] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081CFC3E + adds r0, r4, #0 + bl sub_081CFD14 + cmp r0, #0 + bne _081CFC54 +_081CFC3E: + ldr r0, _081CFC58 + ldrh r1, [r0, #0x30] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081CFC5C + adds r0, r4, #0 + bl sub_081CFD38 + cmp r0, #0 + beq _081CFC5C +_081CFC54: + movs r0, #3 + b _081CFC7A + .align 2, 0 +_081CFC58: .4byte gUnknown_3002360 +_081CFC5C: + ldr r0, _081CFC6C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081CFC70 + movs r0, #0 + b _081CFC7A + .align 2, 0 +_081CFC6C: .4byte gUnknown_3002360 +_081CFC70: + adds r1, r4, #0 + adds r1, #0x98 + ldr r0, _081CFC80 + str r0, [r1] + movs r0, #4 +_081CFC7A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081CFC80: .4byte sub_081CFB74 + thumb_func_end sub_081CFBF8 + + thumb_func_start sub_081CFC84 +sub_081CFC84: @ 0x081CFC84 + ldr r0, _081CFC88 + bx lr + .align 2, 0 +_081CFC88: .4byte 0x000186AE + thumb_func_end sub_081CFC84 + + thumb_func_start sub_081CFC8C +sub_081CFC8C: @ 0x081CFC8C + push {r4, lr} + adds r1, r0, #0 + ldrh r0, [r1, #0xc] + adds r2, r0, #0 + cmp r2, #0x18 + bhi _081CFCA0 + cmp r2, #8 + bls _081CFCC2 + subs r0, #9 + b _081CFCBC +_081CFCA0: + ldrh r3, [r1, #0x10] + adds r2, r3, #0 + cmp r2, #0 + beq _081CFCC2 + ldrh r0, [r1, #0xc] + subs r0, #0x1b + ldrh r4, [r1, #0xe] + adds r0, r0, r4 + strh r0, [r1, #0xc] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r2 + blo _081CFCBE + subs r0, r3, #1 +_081CFCBC: + strh r0, [r1, #0xc] +_081CFCBE: + movs r0, #1 + b _081CFCC4 +_081CFCC2: + movs r0, #0 +_081CFCC4: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFC8C + + thumb_func_start sub_081CFCCC +sub_081CFCCC: @ 0x081CFCCC + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0xc] + adds r1, r0, #0 + cmp r1, #0x18 + bhi _081CFD0C + ldrh r3, [r2, #0xe] + cmp r1, r3 + bhs _081CFCF0 + adds r0, #9 + strh r0, [r2, #0xc] + ldrh r1, [r2, #0x10] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, r1 + blo _081CFD08 + subs r0, r1, #1 + b _081CFD06 +_081CFCF0: + ldrh r0, [r2, #0x12] + cmp r0, #0 + beq _081CFD0C + ldrh r1, [r2, #0xc] + ldrh r0, [r2, #0xe] + subs r0, r1, r0 + ldrh r1, [r2, #0x12] + cmp r0, r1 + blt _081CFD04 + subs r0, r1, #1 +_081CFD04: + adds r0, #0x1b +_081CFD06: + strh r0, [r2, #0xc] +_081CFD08: + movs r0, #1 + b _081CFD0E +_081CFD0C: + movs r0, #0 +_081CFD0E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFCCC + + thumb_func_start sub_081CFD14 +sub_081CFD14: @ 0x081CFD14 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r4, [r5, #0xc] + adds r0, r4, #0 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081CFD2C + movs r0, #0 + b _081CFD32 +_081CFD2C: + subs r0, r4, #1 + strh r0, [r5, #0xc] + movs r0, #1 +_081CFD32: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CFD14 + + thumb_func_start sub_081CFD38 +sub_081CFD38: @ 0x081CFD38 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r4, [r5, #0xc] + adds r0, r4, #0 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #7 + bgt _081CFD6C + cmp r4, #0x1a + bhi _081CFD5C + ldrh r0, [r5, #0x10] + subs r0, #1 + cmp r4, r0 + bge _081CFD6C + b _081CFD64 +_081CFD5C: + ldrh r0, [r5, #0x12] + subs r0, #1 + cmp r1, r0 + bge _081CFD6C +_081CFD64: + adds r0, r4, #1 + strh r0, [r5, #0xc] + movs r0, #1 + b _081CFD6E +_081CFD6C: + movs r0, #0 +_081CFD6E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081CFD38 + + thumb_func_start sub_081CFD74 +sub_081CFD74: @ 0x081CFD74 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + ldr r0, [r0, #8] + ldrh r0, [r0, #2] + pop {r1} + bx r1 + thumb_func_end sub_081CFD74 + + thumb_func_start sub_081CFD84 +sub_081CFD84: @ 0x081CFD84 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + ldr r0, [r0, #8] + ldrh r0, [r0] + pop {r1} + bx r1 + thumb_func_end sub_081CFD84 + + thumb_func_start sub_081CFD94 +sub_081CFD94: @ 0x081CFD94 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r0, #0xd + bl sub_081C6DFC + ldr r1, [r0, #8] + ldrh r0, [r1, #2] + lsls r0, r0, #2 + adds r0, #4 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xe + bne _081CFDE0 + ldrb r1, [r1, #1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081CFDDC + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A058 + adds r0, r4, #0 + bl sub_08068B94 + strb r0, [r7] + adds r0, r4, #0 + bl sub_08069AF4 + strb r0, [r6] + b _081CFE02 + .align 2, 0 +_081CFDDC: .4byte gUnknown_2024190 +_081CFDE0: + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_080D1934 + adds r4, r0, #0 + bl sub_08069B04 + strb r0, [r6] + adds r0, r4, #0 + bl sub_08068C00 + strb r0, [r7] + adds r0, r4, #0 + movs r1, #2 + adds r2, r5, #0 + bl sub_0806A1B4 +_081CFE02: + adds r0, r5, #0 + bl sub_0800885C + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081CFD94 + + thumb_func_start sub_081CFE10 +sub_081CFE10: @ 0x081CFE10 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + movs r0, #0xd + bl sub_081C6DFC + ldr r1, [r0, #8] + ldrh r0, [r1, #2] + lsls r0, r0, #2 + adds r0, #4 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xe + bne _081CFE5C + ldrb r1, [r1, #1] + movs r0, #0x64 + adds r4, r1, #0 + muls r4, r0, r4 + ldr r0, _081CFE58 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xb + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A058 + str r0, [r6] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A058 + b _081CFE80 + .align 2, 0 +_081CFE58: .4byte gUnknown_2024190 +_081CFE5C: + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_080D1934 + adds r4, r0, #0 + movs r1, #0xb + bl sub_0806A1B4 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806A1B4 + str r0, [r6] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806A1B4 +_081CFE80: + str r0, [r7] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081CFE10 + + thumb_func_start sub_081CFE88 +sub_081CFE88: @ 0x081CFE88 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + ldr r1, [r0, #8] + ldrh r0, [r1, #2] + lsls r0, r0, #2 + adds r0, #4 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xe + beq _081CFEAA + ldrb r1, [r1, #1] + movs r2, #0x52 + bl sub_080D15D0 + b _081CFEBA +_081CFEAA: + ldrb r1, [r1, #1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081CFEC0 + adds r0, r0, r1 + movs r1, #0x52 + bl sub_0806A058 +_081CFEBA: + pop {r1} + bx r1 + .align 2, 0 +_081CFEC0: .4byte gUnknown_2024190 + thumb_func_end sub_081CFE88 + + thumb_func_start sub_081CFEC4 +sub_081CFEC4: @ 0x081CFEC4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + ldr r0, [r5, #8] + ldrh r1, [r0, #2] + lsls r1, r1, #2 + adds r1, #4 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0xe + bne _081CFEF8 + ldrb r1, [r1, #1] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081CFEF4 + adds r0, r0, r1 + movs r1, #0x53 + bl sub_0806A058 + b _081CFF02 + .align 2, 0 +_081CFEF4: .4byte gUnknown_2024190 +_081CFEF8: + ldrb r0, [r1] + ldrb r1, [r1, #1] + movs r2, #0x53 + bl sub_080D15D0 +_081CFF02: + mov ip, r0 + movs r0, #0 + strh r0, [r5, #0x10] + strh r0, [r5, #0x12] + movs r6, #0 + ldr r0, _081CFF58 + mov sb, r0 + mov sl, sb +_081CFF12: + lsls r2, r6, #2 + mov r3, sb + adds r1, r2, r3 + movs r0, #1 + ldrb r3, [r1] + lsls r0, r3 + subs r4, r0, #1 + mov r0, ip + ands r4, r0 + ldrb r0, [r1, #3] + adds r7, r2, #0 + cmp r0, #0 + bne _081CFF5C + movs r3, #0 + adds r6, #1 + mov r8, r6 + cmp r3, r4 + bge _081CFF86 + adds r6, r5, #0 + adds r6, #0x14 + mov r1, sl + adds r0, r7, r1 + ldrb r2, [r0, #2] +_081CFF40: + ldrh r0, [r5, #0x10] + adds r1, r0, #1 + strh r1, [r5, #0x10] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r6, r0 + adds r1, r2, r3 + str r1, [r0] + adds r3, #1 + cmp r3, r4 + blt _081CFF40 + b _081CFF86 + .align 2, 0 +_081CFF58: .4byte gUnknown_85F5E14 +_081CFF5C: + movs r3, #0 + adds r6, #1 + mov r8, r6 + cmp r3, r4 + bge _081CFF86 + adds r6, r5, #0 + adds r6, #0x78 + mov r1, sl + adds r0, r7, r1 + ldrb r2, [r0, #2] +_081CFF70: + ldrh r0, [r5, #0x12] + adds r1, r0, #1 + strh r1, [r5, #0x12] + lsls r0, r0, #0x10 + lsrs r0, r0, #0xe + adds r0, r6, r0 + adds r1, r2, r3 + str r1, [r0] + adds r3, #1 + cmp r3, r4 + blt _081CFF70 +_081CFF86: + mov r3, sb + adds r0, r7, r3 + mov r1, ip + ldrb r0, [r0] + lsrs r1, r0 + mov ip, r1 + mov r6, r8 + cmp r6, #0x10 + bls _081CFF12 + ldrh r0, [r5, #0x10] + cmp r0, #0 + beq _081CFFB0 + subs r0, #1 + movs r1, #9 + bl __divsi3 + lsls r1, r0, #3 + adds r1, r1, r0 + movs r0, #0 + strh r1, [r5, #0xe] + b _081CFFB4 +_081CFFB0: + strh r0, [r5, #0xe] + movs r0, #0x1b +_081CFFB4: + strh r0, [r5, #0xc] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081CFEC4 + + thumb_func_start sub_081CFFC4 +sub_081CFFC4: @ 0x081CFFC4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xd + bl sub_081C6DFC + ldrh r1, [r0, #0x10] + str r1, [r4] + adds r0, #0x14 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFFC4 + + thumb_func_start sub_081CFFDC +sub_081CFFDC: @ 0x081CFFDC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xd + bl sub_081C6DFC + ldrh r1, [r0, #0x12] + str r1, [r4] + adds r0, #0x78 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFFDC + + thumb_func_start sub_081CFFF4 +sub_081CFFF4: @ 0x081CFFF4 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + ldrh r0, [r0, #0xc] + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081CFFF4 + + thumb_func_start sub_081D0004 +sub_081D0004: @ 0x081D0004 + push {lr} + movs r0, #0xd + bl sub_081C6DFC + adds r1, r0, #0 + ldrh r0, [r1, #0xc] + cmp r0, #0x18 + ble _081D001C + subs r0, #0x1b + lsls r0, r0, #2 + adds r1, #0x78 + b _081D0020 +_081D001C: + lsls r0, r0, #2 + adds r1, #0x14 +_081D0020: + adds r1, r1, r0 + ldr r0, [r1] + pop {r1} + bx r1 + thumb_func_end sub_081D0004 + + thumb_func_start sub_081D0028 +sub_081D0028: @ 0x081D0028 + push {r4, lr} + ldr r1, _081D004C + movs r0, #0xe + bl sub_081C6DDC + adds r4, r0, #0 + cmp r4, #0 + beq _081D0058 + ldr r0, _081D0050 + movs r1, #1 + bl sub_081C6838 + str r0, [r4, #4] + ldr r0, _081D0054 + str r0, [r4] + movs r0, #1 + b _081D005A + .align 2, 0 +_081D004C: .4byte 0x0000101C +_081D0050: .4byte sub_081D011C +_081D0054: .4byte sub_081D0108 +_081D0058: + movs r0, #0 +_081D005A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D0028 + + thumb_func_start sub_081D0060 +sub_081D0060: @ 0x081D0060 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r5, r0, #0 + ldr r0, _081D0088 + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #1 + bl sub_081C6838 + str r0, [r5, #4] + ldr r0, _081D008C + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D0088: .4byte gUnknown_85F721C +_081D008C: .4byte sub_081D0108 + thumb_func_end sub_081D0060 + + thumb_func_start sub_081D0090 +sub_081D0090: @ 0x081D0090 + push {lr} + movs r0, #0xe + bl sub_081C6DFC + ldr r0, [r0] + bl _call_via_r0 + pop {r1} + thumb_func_end sub_081D0090 + + thumb_func_start sub_081D00A0 +sub_081D00A0: @ 0x081D00A0 + bx r1 + .align 2, 0 + thumb_func_end sub_081D00A0 + + thumb_func_start sub_081D00A4 +sub_081D00A4: @ 0x081D00A4 + push {r4, lr} + movs r0, #0xe + bl sub_081C6DFC + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_08003444 + ldrb r0, [r4, #8] + bl sub_08003444 + ldrb r0, [r4, #0xc] + bl sub_08003444 + ldrb r0, [r4, #0xe] + bl sub_08003444 + adds r0, r4, #0 + bl sub_081D0894 + movs r0, #9 + bl sub_08008280 + movs r0, #0xf + bl sub_08008564 + movs r0, #0x10 + bl sub_08008564 + movs r0, #0x11 + bl sub_08008564 + movs r0, #0x12 + bl sub_08008564 + movs r0, #0x13 + bl sub_08008564 + ldr r0, [r4, #0x14] + bl sub_0800730C + ldr r0, [r4, #0x14] + bl sub_08006E00 + movs r0, #0xe + bl sub_081C6E10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081D00A4 + + thumb_func_start sub_081D0108 +sub_081D0108: @ 0x081D0108 + push {lr} + movs r0, #0xe + bl sub_081C6DFC + ldr r0, [r0, #4] + bl sub_081C6898 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0108 + + thumb_func_start sub_081D011C +sub_081D011C: @ 0x081D011C + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #9 + bls _081D0130 + b _081D02F8 +_081D0130: + lsls r0, r4, #2 + ldr r1, _081D013C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D013C: .4byte _081D0140 +_081D0140: @ jump table + .4byte _081D0168 @ case 0 + .4byte _081D01B4 @ case 1 + .4byte _081D0224 @ case 2 + .4byte _081D0238 @ case 3 + .4byte _081D024C @ case 4 + .4byte _081D0260 @ case 5 + .4byte _081D0274 @ case 6 + .4byte _081D0288 @ case 7 + .4byte _081D0298 @ case 8 + .4byte _081D02EC @ case 9 +_081D0168: + ldr r0, _081D01A4 + movs r1, #2 + bl sub_081C7314 + ldr r1, _081D01A8 + movs r0, #0 + str r0, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + adds r1, r5, #0 + adds r1, #0x1c + movs r0, #2 + bl sub_0800212C + ldr r1, _081D01AC + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_080021CC + ldr r0, _081D01B0 + movs r1, #0x10 + movs r2, #0x20 + bl sub_081C7104 + b _081D026A + .align 2, 0 +_081D01A4: .4byte gUnknown_85F7214 +_081D01A8: .4byte gUnknown_85F64AC +_081D01AC: .4byte gUnknown_85F65A8 +_081D01B0: .4byte gUnknown_85F648C +_081D01B4: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _081D01C2 + b _081D02F4 +_081D01C2: + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #1 + bl sub_08199A88 + ldr r1, _081D0214 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #1 + bl sub_08199728 + ldr r0, _081D0218 + adds r1, r5, r0 + movs r0, #1 + bl sub_0800212C + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + ldr r0, _081D021C + movs r1, #0x20 + movs r2, #0xa0 + bl sub_081C7104 + ldr r0, _081D0220 + movs r1, #0xa0 + movs r2, #0x20 + bl sub_081C7104 + movs r0, #1 + b _081D026C + .align 2, 0 +_081D0214: .4byte gUnknown_85F6734 +_081D0218: .4byte 0x0000081C +_081D021C: .4byte gUnknown_85F6674 +_081D0220: .4byte gUnknown_85F6714 +_081D0224: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 + adds r0, r5, #0 + bl sub_081D0510 + movs r0, #0 + b _081D02FA +_081D0238: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 + adds r0, r5, #0 + bl sub_081D067C + movs r0, #0 + b _081D02FA +_081D024C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 + adds r0, r5, #0 + bl sub_081D076C + movs r0, #0 + b _081D02FA +_081D0260: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 +_081D026A: + movs r0, #2 +_081D026C: + bl sub_08002248 + movs r0, #0 + b _081D02FA +_081D0274: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 + adds r0, r5, #0 + bl sub_081D0864 + movs r0, #1 + b _081D02FA +_081D0288: + adds r0, r5, #0 + bl sub_081D09F4 + movs r0, #0xa + bl sub_081C7364 + movs r0, #0 + b _081D02FA +_081D0298: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D02F4 + adds r0, r5, #0 + bl sub_081D0B18 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #2 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B5C + movs r0, #1 + bl sub_081C7280 + movs r0, #0 + b _081D02FA +_081D02EC: + bl sub_081C72F4 + cmp r0, #0 + beq _081D02F8 +_081D02F4: + movs r0, #2 + b _081D02FA +_081D02F8: + movs r0, #4 +_081D02FA: + add sp, #8 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D011C + + thumb_func_start sub_081D0304 +sub_081D0304: @ 0x081D0304 + push {lr} + cmp r0, #0 + beq _081D0310 + cmp r0, #1 + beq _081D0320 + b _081D032C +_081D0310: + movs r0, #5 + bl sub_080A306C + movs r0, #0 + bl sub_081C7280 + movs r0, #0 + b _081D032E +_081D0320: + bl sub_081C72F4 + cmp r0, #0 + beq _081D032C + movs r0, #2 + b _081D032E +_081D032C: + movs r0, #4 +_081D032E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0304 + + thumb_func_start sub_081D0334 +sub_081D0334: @ 0x081D0334 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r4, r0, #0 + cmp r5, #6 + bhi _081D03D4 + lsls r0, r5, #2 + ldr r1, _081D0350 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D0350: .4byte _081D0354 +_081D0354: @ jump table + .4byte _081D0370 @ case 0 + .4byte _081D0380 @ case 1 + .4byte _081D0394 @ case 2 + .4byte _081D039E @ case 3 + .4byte _081D03A8 @ case 4 + .4byte _081D03B2 @ case 5 + .4byte _081D03C6 @ case 6 +_081D0370: + movs r0, #5 + bl sub_080A306C + adds r0, r4, #0 + bl sub_081D08F4 + movs r0, #0 + b _081D03D6 +_081D0380: + adds r0, r4, #0 + bl sub_081D0950 + cmp r0, #0 + bne _081D03D0 + adds r0, r4, #0 + bl sub_081D06A0 + movs r0, #1 + b _081D03D6 +_081D0394: + adds r0, r4, #0 + bl sub_081D09F4 + movs r0, #1 + b _081D03D6 +_081D039E: + adds r0, r4, #0 + bl sub_081D081C + movs r0, #1 + b _081D03D6 +_081D03A8: + adds r0, r4, #0 + bl sub_081D0534 + movs r0, #1 + b _081D03D6 +_081D03B2: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D03D0 + adds r0, r4, #0 + bl sub_081D0918 + movs r0, #0 + b _081D03D6 +_081D03C6: + adds r0, r4, #0 + bl sub_081D0950 + cmp r0, #0 + beq _081D03D4 +_081D03D0: + movs r0, #2 + b _081D03D6 +_081D03D4: + movs r0, #4 +_081D03D6: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D0334 + + thumb_func_start sub_081D03DC +sub_081D03DC: @ 0x081D03DC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081D040C + cmp r4, #1 + bgt _081D03F6 + cmp r4, #0 + beq _081D03FC + b _081D0434 +_081D03F6: + cmp r4, #2 + beq _081D0426 + b _081D0434 +_081D03FC: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081D0B64 + movs r0, #0 + b _081D0436 +_081D040C: + adds r0, r5, #0 + bl sub_081D0C40 + cmp r0, #0 + bne _081D0430 + adds r0, r5, #0 + bl sub_081D05AC + movs r0, #0xb + bl sub_081C7364 + movs r0, #0 + b _081D0436 +_081D0426: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D0434 +_081D0430: + movs r0, #2 + b _081D0436 +_081D0434: + movs r0, #4 +_081D0436: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D03DC + + thumb_func_start sub_081D043C +sub_081D043C: @ 0x081D043C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081D0470 + cmp r4, #1 + bgt _081D0456 + cmp r4, #0 + beq _081D0460 + b _081D04A6 +_081D0456: + cmp r4, #2 + beq _081D0484 + cmp r4, #3 + beq _081D0498 + b _081D04A6 +_081D0460: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081D0C1C + movs r0, #0 + b _081D04A8 +_081D0470: + adds r0, r5, #0 + bl sub_081D0C40 + cmp r0, #0 + bne _081D04A2 + adds r0, r5, #0 + bl sub_081D0B64 + movs r0, #0 + b _081D04A8 +_081D0484: + adds r0, r5, #0 + bl sub_081D0C40 + cmp r0, #0 + bne _081D04A2 + adds r0, r5, #0 + bl sub_081D05AC + movs r0, #0 + b _081D04A8 +_081D0498: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D04A6 +_081D04A2: + movs r0, #2 + b _081D04A8 +_081D04A6: + movs r0, #4 +_081D04A8: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D043C + + thumb_func_start sub_081D04B0 +sub_081D04B0: @ 0x081D04B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xe + bl sub_081C6DFC + adds r5, r0, #0 + cmp r4, #1 + beq _081D04E0 + cmp r4, #1 + bgt _081D04CA + cmp r4, #0 + beq _081D04D0 + b _081D0508 +_081D04CA: + cmp r4, #2 + beq _081D04FA + b _081D0508 +_081D04D0: + movs r0, #5 + bl sub_080A306C + adds r0, r5, #0 + bl sub_081D0C1C + movs r0, #0 + b _081D050A +_081D04E0: + adds r0, r5, #0 + bl sub_081D0C40 + cmp r0, #0 + bne _081D0504 + adds r0, r5, #0 + bl sub_081D0534 + movs r0, #0xa + bl sub_081C7364 + movs r0, #0 + b _081D050A +_081D04FA: + bl sub_08001AEC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D0508 +_081D0504: + movs r0, #2 + b _081D050A +_081D0508: + movs r0, #4 +_081D050A: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D04B0 + + thumb_func_start sub_081D0510 +sub_081D0510: @ 0x081D0510 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081D0530 + bl sub_08003250 + strh r0, [r4, #0xa] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + adds r0, r4, #0 + bl sub_081D0534 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D0530: .4byte gUnknown_85F7234 + thumb_func_end sub_081D0510 + + thumb_func_start sub_081D0534 +sub_081D0534: @ 0x081D0534 + push {r4, r5, lr} + sub sp, #0x10 + adds r5, r0, #0 + ldr r1, _081D059C + add r0, sp, #0xc + movs r2, #3 + bl memcpy + ldr r4, _081D05A0 + bl sub_081CFE88 + adds r1, r0, #0 + adds r0, r4, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r4, #0 + bl sub_081AF8E4 + ldr r4, _081D05A4 + ldr r1, _081D05A8 + adds r0, r4, #0 + bl sub_081AF900 + ldrb r0, [r5, #0xa] + movs r1, #0x44 + bl sub_08003B18 + ldrb r0, [r5, #0xa] + add r1, sp, #0xc + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r2, #0 + movs r3, #2 + bl sub_08199AFC + ldrb r0, [r5, #0xa] + movs r1, #2 + bl sub_08003528 + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D059C: .4byte gUnknown_85F723C +_081D05A0: .4byte gUnknown_2021C40 +_081D05A4: .4byte gUnknown_2021C7C +_081D05A8: .4byte gUnknown_85CB821 + thumb_func_end sub_081D0534 + + thumb_func_start sub_081D05AC +sub_081D05AC: @ 0x081D05AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r7, r0, #0 + bl sub_081D0004 + adds r5, r0, #0 + ldr r1, _081D0608 + add r0, sp, #0xc + movs r2, #3 + bl memcpy + ldrb r0, [r7, #0xa] + movs r1, #0x44 + bl sub_08003B18 + cmp r5, #0x18 + bhi _081D0610 + lsls r1, r5, #3 + ldr r0, _081D060C + adds r6, r1, r0 + movs r5, #0x80 + lsls r5, r5, #0x12 + movs r4, #1 +_081D05DE: + ldrb r0, [r7, #0xa] + lsrs r3, r5, #0x18 + add r1, sp, #0xc + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + ldm r6!, {r1} + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + bl sub_08199AFC + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r5, r5, r0 + subs r4, #1 + cmp r4, #0 + bge _081D05DE + b _081D065A + .align 2, 0 +_081D0608: .4byte gUnknown_85F723C +_081D060C: .4byte gUnknown_85F5F60 +_081D0610: + ldr r0, _081D0670 + ldr r0, [r0] + adds r0, r0, r5 + ldr r1, _081D0674 + adds r0, r0, r1 + ldrb r5, [r0] + cmp r5, #0 + beq _081D0662 + subs r5, #1 + movs r4, #0 + ldr r0, _081D0678 + mov r8, r0 + movs r6, #0x80 + lsls r6, r6, #0x12 +_081D062C: + ldrb r0, [r7, #0xa] + lsrs r3, r6, #0x18 + add r1, sp, #0xc + str r1, [sp] + movs r1, #1 + rsbs r1, r1, #0 + str r1, [sp, #4] + lsls r1, r4, #2 + lsls r2, r5, #3 + adds r1, r1, r2 + add r1, r8 + ldr r1, [r1] + str r1, [sp, #8] + movs r1, #1 + movs r2, #0 + bl sub_08199AFC + movs r0, #0x80 + lsls r0, r0, #0x15 + adds r6, r6, r0 + adds r4, #1 + cmp r4, #1 + ble _081D062C +_081D065A: + ldrb r0, [r7, #0xa] + movs r1, #2 + bl sub_08003528 +_081D0662: + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D0670: .4byte gUnknown_3005AEC +_081D0674: .4byte 0x0000318F +_081D0678: .4byte gUnknown_85F628C + thumb_func_end sub_081D05AC + + thumb_func_start sub_081D067C +sub_081D067C: @ 0x081D067C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081D069C + bl sub_08003250 + strh r0, [r4, #8] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0800365C + adds r0, r4, #0 + bl sub_081D06A0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D069C: .4byte gUnknown_85F7240 + thumb_func_end sub_081D067C + + thumb_func_start sub_081D06A0 +sub_081D06A0: @ 0x081D06A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + adds r7, r0, #0 + ldr r4, _081D070C + movs r0, #0xd + add r0, sp + mov r8, r0 + adds r0, r4, #0 + add r1, sp, #0xc + mov r2, r8 + bl sub_081CFD94 + ldr r6, _081D0710 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_08008E14 + add r0, sp, #0xc + ldrb r1, [r0] + adds r0, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + ldr r5, _081D0714 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_08008E14 + bl sub_081AF8C8 + movs r0, #0 + adds r1, r6, #0 + bl sub_081AF8E4 + movs r0, #1 + adds r1, r5, #0 + bl sub_081AF8E4 + mov r1, r8 + ldrb r0, [r1] + cmp r0, #0 + beq _081D071C + cmp r0, #0xfe + beq _081D0724 + ldr r1, _081D0718 + b _081D0726 + .align 2, 0 +_081D070C: .4byte gUnknown_2021C68 +_081D0710: .4byte gUnknown_2021C40 +_081D0714: .4byte gUnknown_2021C54 +_081D0718: .4byte gUnknown_85CB7FE +_081D071C: + ldr r1, _081D0720 + b _081D0726 + .align 2, 0 +_081D0720: .4byte gUnknown_85CB7D6 +_081D0724: + ldr r1, _081D0764 +_081D0726: + ldr r4, _081D0768 + adds r0, r4, #0 + bl sub_081AF900 + ldrb r0, [r7, #8] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r7, #8] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r7, #8] + movs r1, #2 + bl sub_08003528 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D0764: .4byte gUnknown_85CB7EA +_081D0768: .4byte gUnknown_2021C7C + thumb_func_end sub_081D06A0 + + thumb_func_start sub_081D076C +sub_081D076C: @ 0x081D076C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081D07B4 + adds r0, r4, #0 + bl sub_08003250 + strh r0, [r5, #0xc] + adds r4, #8 + adds r0, r4, #0 + bl sub_08003250 + strh r0, [r5, #0xe] + ldrb r0, [r5, #0xc] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5, #0xe] + movs r1, #0x11 + bl sub_08003B18 + ldrb r0, [r5, #0xc] + bl sub_0800365C + ldrb r0, [r5, #0xe] + bl sub_0800365C + ldrh r0, [r5, #0xe] + bl sub_081D07B8 + adds r0, r5, #0 + bl sub_081D081C + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D07B4: .4byte gUnknown_85F7248 + thumb_func_end sub_081D076C + + thumb_func_start sub_081D07B8 +sub_081D07B8: @ 0x081D07B8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0xc + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08003B18 + ldr r6, _081D0818 + movs r0, #0 + mov r8, r0 + movs r0, #0xba + strb r0, [r6] + adds r5, r6, #1 + bl sub_081CFD84 + adds r1, r0, #0 + adds r0, r5, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + movs r0, #2 + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + mov r0, r8 + str r0, [sp, #8] + adds r0, r4, #0 + movs r1, #1 + adds r2, r6, #0 + movs r3, #0 + bl sub_0800449C + adds r0, r4, #0 + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D0818: .4byte gUnknown_2021C40 + thumb_func_end sub_081D07B8 + + thumb_func_start sub_081D081C +sub_081D081C: @ 0x081D081C + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + bl sub_081CFD74 + adds r1, r0, #0 + adds r1, #1 + ldr r4, _081D0860 + adds r0, r4, #0 + movs r2, #1 + movs r3, #3 + bl sub_080089D8 + ldrb r0, [r5, #0xc] + movs r1, #2 + str r1, [sp] + movs r1, #0xff + str r1, [sp, #4] + movs r1, #0 + str r1, [sp, #8] + movs r1, #1 + adds r2, r4, #0 + movs r3, #0 + bl sub_0800449C + ldrb r0, [r5, #0xc] + movs r1, #2 + bl sub_08003528 + add sp, #0xc + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D0860: .4byte gUnknown_2021C40 + thumb_func_end sub_081D081C + + thumb_func_start sub_081D0864 +sub_081D0864: @ 0x081D0864 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + add r1, sp, #4 + add r2, sp, #8 + mov r0, sp + bl sub_081CFE10 + bl sub_0818CCF8 + movs r0, #0x28 + movs r1, #0x68 + bl sub_081D08A0 + strh r0, [r4, #0x10] + movs r0, #0xf + movs r1, #0 + bl sub_081C7150 + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D0864 + + thumb_func_start sub_081D0894 +sub_081D0894: @ 0x081D0894 + push {lr} + ldrh r0, [r0, #0x10] + bl sub_0818D54C + pop {r0} + bx r0 + thumb_func_end sub_081D0894 + + thumb_func_start sub_081D08A0 +sub_081D08A0: @ 0x081D08A0 + push {lr} + sub sp, #0x1c + add r1, sp, #0x14 + add r2, sp, #0x18 + add r0, sp, #0x10 + bl sub_081CFE10 + add r0, sp, #0x10 + ldrh r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + movs r3, #0x28 + str r3, [sp] + movs r3, #0x68 + str r3, [sp, #4] + movs r3, #0xf + str r3, [sp, #8] + ldr r3, _081D08EC + str r3, [sp, #0xc] + movs r3, #1 + bl sub_0818D504 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _081D08F0 + lsls r2, r0, #4 + adds r2, r2, r0 + lsls r2, r2, #2 + adds r2, r2, r1 + ldrb r3, [r2, #5] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r3 + strb r1, [r2, #5] + add sp, #0x1c + pop {r1} + bx r1 + .align 2, 0 +_081D08EC: .4byte 0x0000FFFF +_081D08F0: .4byte gUnknown_20205AC + thumb_func_end sub_081D08A0 + + thumb_func_start sub_081D08F4 +sub_081D08F4: @ 0x081D08F4 + push {lr} + ldrh r1, [r0, #0x10] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081D0914 + adds r0, r0, r1 + movs r2, #0x20 + rsbs r2, r2, #0 + movs r1, #0x28 + movs r3, #6 + bl sub_081D0974 + pop {r0} + bx r0 + .align 2, 0 +_081D0914: .4byte gUnknown_20205AC + thumb_func_end sub_081D08F4 + + thumb_func_start sub_081D0918 +sub_081D0918: @ 0x081D0918 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x10] + bl sub_0818D54C + movs r5, #0x20 + rsbs r5, r5, #0 + adds r0, r5, #0 + movs r1, #0x68 + bl sub_081D08A0 + strh r0, [r4, #0x10] + ldrh r1, [r4, #0x10] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081D094C + adds r0, r0, r1 + adds r1, r5, #0 + movs r2, #0x28 + movs r3, #6 + bl sub_081D0974 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D094C: .4byte gUnknown_20205AC + thumb_func_end sub_081D0918 + + thumb_func_start sub_081D0950 +sub_081D0950: @ 0x081D0950 + ldr r2, _081D096C + ldrh r1, [r0, #0x10] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081D0970 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_081D096C: .4byte gUnknown_20205AC +_081D0970: .4byte sub_08007140 + thumb_func_end sub_081D0950 + + thumb_func_start sub_081D0974 +sub_081D0974: @ 0x081D0974 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r2, #0 + adds r5, r3, #0 + subs r0, r6, r1 + strh r1, [r4, #0x20] + lsls r1, r1, #4 + strh r1, [r4, #0x2e] + lsls r0, r0, #4 + adds r1, r5, #0 + bl __udivsi3 + strh r0, [r4, #0x30] + strh r5, [r4, #0x32] + strh r6, [r4, #0x34] + ldr r0, _081D099C + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D099C: .4byte sub_081D09A0 + thumb_func_end sub_081D0974 + + thumb_func_start sub_081D09A0 +sub_081D09A0: @ 0x081D09A0 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x32] + movs r3, #0x32 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _081D09E4 + subs r0, r1, #1 + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x30] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r2, #0x20] + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _081D09D6 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + b _081D09EC +_081D09D6: + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _081D09EC +_081D09E4: + ldrh r0, [r2, #0x34] + strh r0, [r2, #0x20] + ldr r0, _081D09F0 + str r0, [r2, #0x1c] +_081D09EC: + pop {r0} + bx r0 + .align 2, 0 +_081D09F0: .4byte sub_08007140 + thumb_func_end sub_081D09A0 + + thumb_func_start sub_081D09F4 +sub_081D09F4: @ 0x081D09F4 + push {r4, r5, r6, lr} + bl sub_081D0A6C + ldr r5, _081D0A64 + adds r0, r5, #0 + bl sub_081CFFC4 + adds r6, r0, #0 + ldr r2, _081D0A68 + movs r1, #0 + str r1, [r2] + ldr r0, [r5] + cmp r1, r0 + bhs _081D0A26 + adds r4, r2, #0 +_081D0A12: + ldr r0, [r4] + ldm r6!, {r1} + bl sub_081D0A8C + ldr r1, [r4] + adds r1, #1 + str r1, [r4] + ldr r0, [r5] + cmp r1, r0 + blo _081D0A12 +_081D0A26: + ldr r4, _081D0A64 + adds r0, r4, #0 + bl sub_081CFFDC + adds r6, r0, #0 + ldr r2, _081D0A68 + movs r1, #0 + str r1, [r2] + ldr r0, [r4] + cmp r1, r0 + bhs _081D0A56 + adds r4, r2, #0 +_081D0A3E: + ldr r0, [r4] + adds r0, #0x1b + ldm r6!, {r1} + bl sub_081D0A8C + ldr r1, [r4] + adds r1, #1 + str r1, [r4] + ldr r0, _081D0A64 + ldr r0, [r0] + cmp r1, r0 + blo _081D0A3E +_081D0A56: + movs r0, #1 + bl sub_08002248 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D0A64: .4byte gUnknown_30012B4 +_081D0A68: .4byte gUnknown_30012B8 + thumb_func_end sub_081D09F4 + + thumb_func_start sub_081D0A6C +sub_081D0A6C: @ 0x081D0A6C + push {lr} + sub sp, #8 + movs r0, #0x20 + str r0, [sp] + movs r0, #0x14 + str r0, [sp, #4] + movs r0, #1 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_080025E0 + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D0A6C + + thumb_func_start sub_081D0A8C +sub_081D0A8C: @ 0x081D0A8C + push {r4, r5, r6, lr} + sub sp, #0x10 + adds r4, r0, #0 + adds r6, r1, #0 + movs r1, #9 + bl __umodsi3 + adds r5, r0, #0 + lsls r5, r5, #1 + adds r5, #0xb + adds r0, r4, #0 + movs r1, #9 + bl __udivsi3 + adds r4, r0, #0 + lsls r4, r4, #1 + adds r4, #4 + add r0, sp, #8 + adds r1, r6, #0 + bl sub_081D0AD8 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #2 + str r0, [sp] + str r0, [sp, #4] + movs r0, #1 + add r1, sp, #8 + adds r2, r5, #0 + adds r3, r4, #0 + bl sub_080022B0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081D0A8C + + thumb_func_start sub_081D0AD8 +sub_081D0AD8: @ 0x081D0AD8 + push {r4, r5, lr} + ldr r2, _081D0B14 + lsls r1, r1, #2 + adds r1, r1, r2 + ldrh r3, [r1, #2] + adds r3, #2 + lsls r3, r3, #0x10 + ldrh r1, [r1] + lsls r1, r1, #1 + adds r1, #1 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + lsrs r3, r3, #4 + adds r2, r1, #0 + orrs r2, r3 + strh r2, [r0] + movs r5, #0x80 + lsls r5, r5, #3 + adds r4, r5, #0 + orrs r2, r4 + strh r2, [r0, #2] + adds r1, #1 + orrs r1, r3 + strh r1, [r0, #4] + orrs r1, r4 + strh r1, [r0, #6] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D0B14: .4byte gUnknown_85F7258 + thumb_func_end sub_081D0AD8 + + thumb_func_start sub_081D0B18 +sub_081D0B18: @ 0x081D0B18 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _081D0B54 + bl sub_08034388 + ldr r0, _081D0B58 + bl sub_081C711C + ldr r0, _081D0B5C + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081D0B60 + adds r1, r1, r0 + str r1, [r4, #0x14] + adds r1, #0x3e + ldrb r0, [r1] + movs r2, #4 + orrs r0, r2 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D0B54: .4byte gUnknown_85F72D8 +_081D0B58: .4byte gUnknown_85F72E0 +_081D0B5C: .4byte gUnknown_85F7364 +_081D0B60: .4byte gUnknown_20205AC + thumb_func_end sub_081D0B18 + + thumb_func_start sub_081D0B64 +sub_081D0B64: @ 0x081D0B64 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + bl sub_081CFFF4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r4, #0 + movs r1, #9 + bl __modsi3 + adds r5, r0, #0 + lsls r5, r5, #4 + adds r5, #0x60 + adds r0, r4, #0 + movs r1, #9 + bl __divsi3 + lsls r0, r0, #4 + adds r0, #0x28 + ldr r1, [r6, #0x14] + movs r2, #0 + mov r8, r2 + strh r5, [r1, #0x20] + ldr r1, [r6, #0x14] + strh r0, [r1, #0x22] + bl sub_081D0004 + adds r4, r0, #0 + movs r0, #9 + bl sub_08008338 + ldr r3, [r6, #0x14] + ldr r1, _081D0C0C + lsls r4, r4, #2 + adds r4, r4, r1 + ldrh r1, [r4] + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r2, _081D0C10 + adds r1, r2, #0 + ands r0, r1 + ldrh r2, [r3, #4] + ldr r1, _081D0C14 + ands r1, r2 + orrs r1, r0 + strh r1, [r3, #4] + ldrh r0, [r4, #2] + adds r0, #0xf + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0800851C + ldr r3, [r6, #0x14] + lsls r0, r0, #4 + ldrb r2, [r3, #5] + movs r1, #0xf + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #5] + ldr r0, [r6, #0x14] + movs r1, #1 + bl sub_08007F70 + ldr r1, [r6, #0x14] + adds r1, #0x3e + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, [r6, #0x14] + mov r1, r8 + strh r1, [r0, #0x2e] + ldr r1, [r6, #0x14] + ldr r0, _081D0C18 + str r0, [r1, #0x1c] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D0C0C: .4byte gUnknown_85F7258 +_081D0C10: .4byte 0x000003FF +_081D0C14: .4byte 0xFFFFFC00 +_081D0C18: .4byte sub_081D0C54 + thumb_func_end sub_081D0B64 + + thumb_func_start sub_081D0C1C +sub_081D0C1C: @ 0x081D0C1C + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x14] + movs r0, #1 + strh r0, [r1, #0x2e] + ldr r0, [r4, #0x14] + movs r1, #2 + bl sub_08007F70 + ldr r1, [r4, #0x14] + ldr r0, _081D0C3C + str r0, [r1, #0x1c] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D0C3C: .4byte sub_081D0C54 + thumb_func_end sub_081D0C1C + + thumb_func_start sub_081D0C40 +sub_081D0C40: @ 0x081D0C40 + ldr r0, [r0, #0x14] + ldr r1, [r0, #0x1c] + ldr r0, _081D0C50 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_081D0C50: .4byte sub_08007140 + thumb_func_end sub_081D0C40 + + thumb_func_start sub_081D0C54 +sub_081D0C54: @ 0x081D0C54 + push {lr} + adds r3, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _081D0C86 + movs r0, #0x3e + adds r0, r0, r3 + mov ip, r0 + movs r0, #1 + ldrh r1, [r3, #0x2e] + ands r1, r0 + lsls r1, r1, #2 + mov r0, ip + ldrb r2, [r0] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, _081D0C8C + str r0, [r3, #0x1c] +_081D0C86: + pop {r0} + bx r0 + .align 2, 0 +_081D0C8C: .4byte sub_08007140 + thumb_func_end sub_081D0C54 + + thumb_func_start sub_081D0C90 +sub_081D0C90: @ 0x081D0C90 + push {lr} + ldrb r0, [r0] + cmp r0, #5 + bhi _081D0CC0 + lsls r0, r0, #2 + ldr r1, _081D0CA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D0CA4: .4byte _081D0CA8 +_081D0CA8: @ jump table + .4byte _081D0CC0 @ case 0 + .4byte _081D0CC4 @ case 1 + .4byte _081D0CC8 @ case 2 + .4byte _081D0CD0 @ case 3 + .4byte _081D0CCC @ case 4 + .4byte _081D0CC4 @ case 5 +_081D0CC0: + movs r0, #0 + b _081D0CD2 +_081D0CC4: + movs r0, #1 + b _081D0CD2 +_081D0CC8: + movs r0, #2 + b _081D0CD2 +_081D0CCC: + movs r0, #3 + b _081D0CD2 +_081D0CD0: + movs r0, #4 +_081D0CD2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0C90 + + thumb_func_start sub_081D0CD8 +sub_081D0CD8: @ 0x081D0CD8 + ldr r1, _081D0CE4 + lsls r0, r0, #4 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_081D0CE4: .4byte gUnknown_852AD40 + thumb_func_end sub_081D0CD8 + + thumb_func_start sub_081D0CE8 +sub_081D0CE8: @ 0x081D0CE8 + push {lr} + adds r3, r0, #0 + movs r1, #0 + ldr r2, _081D0CFC +_081D0CF0: + ldrh r0, [r2] + cmp r0, r3 + bne _081D0D00 + adds r0, r1, #0 + b _081D0D0C + .align 2, 0 +_081D0CFC: .4byte gUnknown_852AD40 +_081D0D00: + adds r2, #0x10 + adds r1, #1 + cmp r1, #0x4d + ble _081D0CF0 + movs r0, #1 + rsbs r0, r0, #0 +_081D0D0C: + pop {r1} + bx r1 + thumb_func_end sub_081D0CE8 + + thumb_func_start sub_081D0D10 +sub_081D0D10: @ 0x081D0D10 + push {r4, lr} + cmp r0, #0x14 + bhi _081D0D3C + ldr r1, _081D0D34 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D0D38 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _081D0D3E + .align 2, 0 +_081D0D34: .4byte gUnknown_85F79B4 +_081D0D38: .4byte gUnknown_85F7A08 +_081D0D3C: + movs r0, #0 +_081D0D3E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D0D10 + + thumb_func_start sub_081D0D44 +sub_081D0D44: @ 0x081D0D44 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #2] + ldr r0, _081D0D5C + cmp r1, r0 + beq _081D0D60 + adds r0, r1, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081D0D62 + .align 2, 0 +_081D0D5C: .4byte 0x0000FFFF +_081D0D60: + movs r0, #1 +_081D0D62: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0D44 + + thumb_func_start sub_081D0D68 +sub_081D0D68: @ 0x081D0D68 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #2] + ldr r0, _081D0D80 + cmp r1, r0 + beq _081D0D84 + adds r0, r1, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081D0D86 + .align 2, 0 +_081D0D80: .4byte 0x0000FFFF +_081D0D84: + movs r0, #1 +_081D0D86: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0D68 + + thumb_func_start sub_081D0D8C +sub_081D0D8C: @ 0x081D0D8C + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #2] + ldr r0, _081D0DA4 + cmp r1, r0 + beq _081D0DA8 + adds r0, r1, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081D0DAA + .align 2, 0 +_081D0DA4: .4byte 0x0000FFFF +_081D0DA8: + movs r0, #1 +_081D0DAA: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0D8C + + thumb_func_start sub_081D0DB0 +sub_081D0DB0: @ 0x081D0DB0 + push {lr} + adds r2, r0, #0 + ldr r0, _081D0DC4 + ldr r1, [r0] + ldrb r0, [r2, #1] + ldrb r1, [r1, #8] + cmp r0, r1 + beq _081D0DC8 + movs r0, #0 + b _081D0DE2 + .align 2, 0 +_081D0DC4: .4byte gUnknown_3005AF0 +_081D0DC8: + ldrh r1, [r2, #2] + ldr r0, _081D0DDC + cmp r1, r0 + beq _081D0DE0 + adds r0, r1, #0 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081D0DE2 + .align 2, 0 +_081D0DDC: .4byte 0x0000FFFF +_081D0DE0: + movs r0, #1 +_081D0DE2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0DB0 + + thumb_func_start sub_081D0DE8 +sub_081D0DE8: @ 0x081D0DE8 + push {lr} + ldrh r0, [r0, #2] + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + thumb_func_end sub_081D0DE8 + + thumb_func_start sub_081D0DF8 +sub_081D0DF8: @ 0x081D0DF8 + push {r4, lr} + cmp r0, #0x14 + bhi _081D0E28 + ldr r1, _081D0E20 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D0E24 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + b _081D0E2A + .align 2, 0 +_081D0E20: .4byte gUnknown_85F79B4 +_081D0E24: .4byte gUnknown_85F7A1C +_081D0E28: + movs r0, #0 +_081D0E2A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D0DF8 + + thumb_func_start sub_081D0E30 +sub_081D0E30: @ 0x081D0E30 + ldrb r0, [r0, #1] + bx lr + thumb_func_end sub_081D0E30 + + thumb_func_start sub_081D0E34 +sub_081D0E34: @ 0x081D0E34 + ldrb r0, [r0, #1] + bx lr + thumb_func_end sub_081D0E34 + + thumb_func_start sub_081D0E38 +sub_081D0E38: @ 0x081D0E38 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r6, #0 + ldr r7, _081D0E44 + b _081D0E4A + .align 2, 0 +_081D0E44: .4byte 0x0000FFFF +_081D0E48: + adds r6, #1 +_081D0E4A: + ldr r0, [r5, #0x10] + lsls r4, r6, #2 + adds r1, r4, r0 + ldrh r0, [r1] + cmp r0, r7 + beq _081D0E60 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D0E48 +_081D0E60: + ldr r0, [r5, #0x10] + adds r0, r4, r0 + ldrb r0, [r0, #2] + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D0E38 + + thumb_func_start sub_081D0E6C +sub_081D0E6C: @ 0x081D0E6C + movs r0, #0xd5 + bx lr + thumb_func_end sub_081D0E6C + + thumb_func_start sub_081D0E70 +sub_081D0E70: @ 0x081D0E70 + movs r0, #0xd5 + bx lr + thumb_func_end sub_081D0E70 + + thumb_func_start sub_081D0E74 +sub_081D0E74: @ 0x081D0E74 + push {r4, lr} + cmp r0, #0x14 + bhi _081D0EA0 + ldr r1, _081D0E98 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D0E9C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _081D0EA2 + .align 2, 0 +_081D0E98: .4byte gUnknown_85F79B4 +_081D0E9C: .4byte gUnknown_85F7A30 +_081D0EA0: + movs r0, #0 +_081D0EA2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D0E74 + + thumb_func_start sub_081D0EA8 +sub_081D0EA8: @ 0x081D0EA8 + movs r0, #0 + bx lr + thumb_func_end sub_081D0EA8 + + thumb_func_start sub_081D0EAC +sub_081D0EAC: @ 0x081D0EAC + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #4] + cmp r0, #0x48 + bhi _081D0ED4 + ldr r0, _081D0ECC + ldr r0, [r0] + ldr r2, _081D0ED0 + adds r0, r0, r2 + ldrh r1, [r1, #4] + adds r0, r0, r1 + ldrb r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + b _081D0ED6 + .align 2, 0 +_081D0ECC: .4byte gUnknown_3005AEC +_081D0ED0: .4byte 0x000009CA +_081D0ED4: + movs r0, #0 +_081D0ED6: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D0EAC + + thumb_func_start sub_081D0EDC +sub_081D0EDC: @ 0x081D0EDC + ldr r1, _081D0EF4 + ldr r1, [r1] + ldr r2, _081D0EF8 + adds r1, r1, r2 + ldrh r0, [r0, #4] + adds r1, r1, r0 + ldrb r1, [r1] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_081D0EF4: .4byte gUnknown_3005AEC +_081D0EF8: .4byte 0x000009CA + thumb_func_end sub_081D0EDC + + thumb_func_start sub_081D0EFC +sub_081D0EFC: @ 0x081D0EFC + movs r0, #0 + bx lr + thumb_func_end sub_081D0EFC + + thumb_func_start sub_081D0F00 +sub_081D0F00: @ 0x081D0F00 + movs r0, #0 + bx lr + thumb_func_end sub_081D0F00 + + thumb_func_start sub_081D0F04 +sub_081D0F04: @ 0x081D0F04 + push {r4, r5, lr} + adds r5, r0, #0 + cmp r5, #0x14 + bhi _081D0F4E + ldr r1, _081D0F34 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + adds r2, r0, #0 + ldr r1, _081D0F38 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + cmp r0, #0 + beq _081D0F3C +_081D0F2E: + movs r0, #1 + b _081D0F50 + .align 2, 0 +_081D0F34: .4byte gUnknown_85F79B4 +_081D0F38: .4byte gUnknown_85F7A44 +_081D0F3C: + movs r2, #0 + ldr r1, _081D0F58 +_081D0F40: + ldrh r0, [r1] + cmp r0, r5 + beq _081D0F2E + adds r1, #0x18 + adds r2, #1 + cmp r2, #3 + bls _081D0F40 +_081D0F4E: + movs r0, #0 +_081D0F50: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D0F58: .4byte gUnknown_85F7A94 + thumb_func_end sub_081D0F04 + + thumb_func_start sub_081D0F5C +sub_081D0F5C: @ 0x081D0F5C + movs r0, #0 + bx lr + thumb_func_end sub_081D0F5C + + thumb_func_start sub_081D0F60 +sub_081D0F60: @ 0x081D0F60 + movs r0, #1 + bx lr + thumb_func_end sub_081D0F60 + + thumb_func_start sub_081D0F64 +sub_081D0F64: @ 0x081D0F64 + movs r0, #1 + bx lr + thumb_func_end sub_081D0F64 + + thumb_func_start sub_081D0F68 +sub_081D0F68: @ 0x081D0F68 + movs r0, #0 + bx lr + thumb_func_end sub_081D0F68 + + thumb_func_start sub_081D0F6C +sub_081D0F6C: @ 0x081D0F6C + movs r0, #0 + bx lr + thumb_func_end sub_081D0F6C + + thumb_func_start sub_081D0F70 +sub_081D0F70: @ 0x081D0F70 + push {r4, lr} + cmp r0, #0x14 + bhi _081D0F9C + ldr r1, _081D0F94 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D0F98 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _081D0F9E + .align 2, 0 +_081D0F94: .4byte gUnknown_85F79B4 +_081D0F98: .4byte gUnknown_85F7A58 +_081D0F9C: + movs r0, #0x4e +_081D0F9E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D0F70 + + thumb_func_start sub_081D0FA4 +sub_081D0FA4: @ 0x081D0FA4 + movs r0, #0x4e + bx lr + thumb_func_end sub_081D0FA4 + + thumb_func_start sub_081D0FA8 +sub_081D0FA8: @ 0x081D0FA8 + ldrh r0, [r0, #4] + bx lr + thumb_func_end sub_081D0FA8 + + thumb_func_start sub_081D0FAC +sub_081D0FAC: @ 0x081D0FAC + ldrh r0, [r0, #4] + bx lr + thumb_func_end sub_081D0FAC + + thumb_func_start sub_081D0FB0 +sub_081D0FB0: @ 0x081D0FB0 + movs r0, #0x4e + bx lr + thumb_func_end sub_081D0FB0 + + thumb_func_start sub_081D0FB4 +sub_081D0FB4: @ 0x081D0FB4 + movs r0, #0x4e + bx lr + thumb_func_end sub_081D0FB4 + + thumb_func_start sub_081D0FB8 +sub_081D0FB8: @ 0x081D0FB8 + push {r4, r5, lr} + adds r5, r1, #0 + cmp r0, #0x14 + bhi _081D0FDE + ldr r1, _081D0FE4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D0FE8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl _call_via_r2 +_081D0FDE: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D0FE4: .4byte gUnknown_85F79B4 +_081D0FE8: .4byte gUnknown_85F7A6C + thumb_func_end sub_081D0FB8 + + thumb_func_start sub_081D0FEC +sub_081D0FEC: @ 0x081D0FEC + push {lr} + ldr r0, [r0, #0xc] + bl sub_081D103C + pop {r0} + bx r0 + thumb_func_end sub_081D0FEC + + thumb_func_start sub_081D0FF8 +sub_081D0FF8: @ 0x081D0FF8 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r3] + cmp r0, #5 + beq _081D100C + ldr r0, [r3, #0x10] + bl sub_081D103C + b _081D1014 +_081D100C: + ldr r0, [r3, #0x10] + ldrh r1, [r3, #4] + bl sub_081D109C +_081D1014: + pop {r0} + bx r0 + thumb_func_end sub_081D0FF8 + + thumb_func_start sub_081D1018 +sub_081D1018: @ 0x081D1018 + push {lr} + ldr r0, [r0, #0xc] + bl sub_081D103C + pop {r0} + bx r0 + thumb_func_end sub_081D1018 + + thumb_func_start sub_081D1024 +sub_081D1024: @ 0x081D1024 + push {lr} + ldr r0, [r0, #0xc] + bl sub_081D103C + pop {r0} + bx r0 + thumb_func_end sub_081D1024 + + thumb_func_start sub_081D1030 +sub_081D1030: @ 0x081D1030 + push {lr} + adds r0, r1, #0 + bl sub_08196C74 + pop {r0} + bx r0 + thumb_func_end sub_081D1030 + + thumb_func_start sub_081D103C +sub_081D103C: @ 0x081D103C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + movs r5, #0 + ldr r7, _081D1050 + adds r4, r6, #0 + b _081D1058 + .align 2, 0 +_081D1050: .4byte 0x0000FFFF +_081D1054: + adds r4, #8 + adds r5, #1 +_081D1058: + ldr r0, [r4] + cmp r0, #0 + beq _081D106E + ldrh r0, [r4, #4] + cmp r0, r7 + beq _081D1054 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D1054 +_081D106E: + cmp r5, #0 + beq _081D1074 + subs r5, #1 +_081D1074: + lsls r0, r5, #3 + adds r4, r0, r6 + ldrh r1, [r4, #6] + ldr r0, _081D1098 + cmp r1, r0 + beq _081D1086 + adds r0, r1, #0 + bl sub_0809D018 +_081D1086: + ldr r1, [r4] + mov r0, r8 + bl sub_08008BCC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D1098: .4byte 0x0000FFFF + thumb_func_end sub_081D103C + + thumb_func_start sub_081D109C +sub_081D109C: @ 0x081D109C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + mov sl, r2 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r5, #0 + ldr r0, [r6] + cmp r0, #0 + beq _081D10E6 + ldrh r0, [r6, #4] + ldr r1, _081D1114 + cmp r0, r1 + beq _081D1124 + ldr r0, _081D1118 + mov sb, r0 + mov r8, r1 + adds r4, r6, #0 +_081D10C6: + ldrh r0, [r4, #4] + cmp r0, sb + beq _081D10D6 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D10E6 +_081D10D6: + adds r4, #8 + adds r5, #1 + ldr r0, [r4] + cmp r0, #0 + beq _081D10E6 + ldrh r0, [r4, #4] + cmp r0, r8 + bne _081D10C6 +_081D10E6: + lsls r0, r5, #3 + adds r0, r0, r6 + ldrh r1, [r0, #4] + ldr r0, _081D1114 + cmp r1, r0 + beq _081D1124 + cmp r5, #0 + beq _081D10F8 + subs r5, #1 +_081D10F8: + lsls r0, r5, #3 + adds r4, r0, r6 + ldrh r1, [r4, #6] + ldr r0, _081D1118 + cmp r1, r0 + beq _081D110A + adds r0, r1, #0 + bl sub_0809D018 +_081D110A: + ldr r1, [r4] + mov r0, sl + bl sub_08008BCC + b _081D115C + .align 2, 0 +_081D1114: .4byte 0x0000FFFE +_081D1118: .4byte 0x0000FFFF +_081D111C: + adds r5, #2 + b _081D1150 +_081D1120: + adds r5, #3 + b _081D1150 +_081D1124: + ldr r0, _081D116C + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D1150 + ldr r0, _081D1170 + ldr r0, [r0] + ldr r1, _081D1174 + adds r0, r0, r1 + adds r0, r0, r7 + ldrb r0, [r0] + cmp r0, #0 + bne _081D111C + adds r0, r7, #0 + bl sub_080B1C04 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _081D1120 + adds r5, #1 +_081D1150: + lsls r0, r5, #3 + adds r0, r0, r6 + ldr r1, [r0] + mov r0, sl + bl sub_08008BCC +_081D115C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D116C: .4byte 0x00000864 +_081D1170: .4byte gUnknown_3005AEC +_081D1174: .4byte 0x000009CA + thumb_func_end sub_081D109C + + thumb_func_start sub_081D1178 +sub_081D1178: @ 0x081D1178 + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r6, r2, #0 + cmp r0, #0x14 + bhi _081D11A2 + ldr r1, _081D11A8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r4, #0 + bl sub_081D0C90 + ldr r1, _081D11AC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl _call_via_r3 +_081D11A2: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D11A8: .4byte gUnknown_85F79B4 +_081D11AC: .4byte gUnknown_85F7A80 + thumb_func_end sub_081D1178 + + thumb_func_start sub_081D11B0 +sub_081D11B0: @ 0x081D11B0 + ldr r3, [r0, #4] + str r3, [r1] + ldr r0, [r0, #8] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end sub_081D11B0 + + thumb_func_start sub_081D11BC +sub_081D11BC: @ 0x081D11BC + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _081D11D0 + ldrh r0, [r4, #4] + bl sub_081D120C + b _081D11D2 +_081D11D0: + str r0, [r2] +_081D11D2: + ldr r0, [r4, #8] + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081D11BC + + thumb_func_start sub_081D11DC +sub_081D11DC: @ 0x081D11DC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrh r0, [r4, #4] + bl sub_081D120C + ldr r0, [r4, #8] + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D11DC + + thumb_func_start sub_081D11F4 +sub_081D11F4: @ 0x081D11F4 + ldr r3, [r0, #4] + str r3, [r1] + ldr r0, [r0, #8] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end sub_081D11F4 + + thumb_func_start sub_081D1200 +sub_081D1200: @ 0x081D1200 + ldr r3, [r0, #4] + str r3, [r1] + ldr r0, [r0, #8] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end sub_081D1200 + + thumb_func_start sub_081D120C +sub_081D120C: @ 0x081D120C + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_081D0CD8 + lsls r0, r0, #5 + ldr r1, _081D1234 + adds r0, r0, r1 + ldrb r2, [r0, #1] + movs r1, #0xb + muls r1, r2, r1 + ldr r2, _081D1238 + adds r1, r1, r2 + str r1, [r4] + adds r0, #4 + str r0, [r5] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D1234: .4byte gUnknown_82E383C +_081D1238: .4byte gUnknown_82E3564 + thumb_func_end sub_081D120C + + thumb_func_start sub_081D123C +sub_081D123C: @ 0x081D123C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + movs r5, #0 + ldr r2, _081D12B4 + movs r0, #8 + adds r0, r0, r2 + mov sb, r0 +_081D1250: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _081D12B8 + adds r4, r5, #1 + lsls r1, r1, #2 + mov r8, r1 + cmp r4, #3 + bhi _081D12A4 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _081D12A4 + ldr r7, _081D12B4 +_081D1278: + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r1, r7, #4 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D12A4 + adds r5, r4, #0 + adds r4, r5, #1 + cmp r4, #3 + bhi _081D12A4 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r7 + ldrh r0, [r0] + cmp r0, r6 + beq _081D1278 +_081D12A4: + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #3 + add r0, r8 + add r0, sb + ldr r0, [r0] + b _081D12C0 + .align 2, 0 +_081D12B4: .4byte gUnknown_85F7A94 +_081D12B8: + adds r5, #1 + cmp r5, #3 + bls _081D1250 + movs r0, #0 +_081D12C0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D123C + + thumb_func_start sub_081D12CC +sub_081D12CC: @ 0x081D12CC + push {lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _081D12E0 +_081D12D4: + ldrh r0, [r1] + cmp r0, r3 + bne _081D12E4 + ldrh r0, [r1, #2] + b _081D12F0 + .align 2, 0 +_081D12E0: .4byte gUnknown_85F7A94 +_081D12E4: + adds r1, #0x18 + adds r2, #1 + cmp r2, #3 + bls _081D12D4 + movs r0, #1 + rsbs r0, r0, #0 +_081D12F0: + pop {r1} + bx r1 + thumb_func_end sub_081D12CC + + thumb_func_start sub_081D12F4 +sub_081D12F4: @ 0x081D12F4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 +_081D12FA: + adds r0, r4, #0 + bl sub_081D0F70 + cmp r0, #0x4e + beq _081D130C + cmp r0, r5 + bne _081D130C + movs r0, #1 + b _081D1314 +_081D130C: + adds r4, #1 + cmp r4, #0x14 + ble _081D12FA + movs r0, #0 +_081D1314: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D12F4 + + thumb_func_start sub_081D131C +sub_081D131C: @ 0x081D131C + push {lr} + ldr r0, _081D133C + ldrh r0, [r0] + bl sub_081D0CE8 + cmp r0, #0 + blt _081D1338 + movs r1, #0xae + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + bl sub_0809D018 +_081D1338: + pop {r0} + bx r0 + .align 2, 0 +_081D133C: .4byte gUnknown_2037280 + thumb_func_end sub_081D131C + + thumb_func_start sub_081D1340 +sub_081D1340: @ 0x081D1340 + push {r4, lr} + lsls r0, r0, #0x18 + ldr r4, _081D1358 + lsrs r0, r0, #0x15 + adds r0, #8 + bl sub_08000BC8 + str r0, [r4] + cmp r0, #0 + bne _081D135C + movs r0, #0 + b _081D1376 + .align 2, 0 +_081D1358: .4byte gUnknown_203CC18 +_081D135C: + movs r2, #0 + ldr r4, _081D137C + movs r3, #0xff +_081D1362: + adds r0, r2, r4 + ldrb r1, [r0] + orrs r1, r3 + strb r1, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #2 + bls _081D1362 + movs r0, #1 +_081D1376: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D137C: .4byte gUnknown_203CC14 + thumb_func_end sub_081D1340 + + thumb_func_start sub_081D1380 +sub_081D1380: @ 0x081D1380 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + ldr r0, _081D13AC + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, #0xff + bne _081D13A4 + lsls r0, r1, #3 + ldr r1, _081D13B0 + adds r0, r0, r1 + bl sub_08003250 + strb r0, [r4] + ldrb r0, [r4] + movs r1, #0 + bl sub_08197638 +_081D13A4: + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D13AC: .4byte gUnknown_203CC14 +_081D13B0: .4byte gUnknown_85F7AF4 + thumb_func_end sub_081D1380 + + thumb_func_start sub_081D13B4 +sub_081D13B4: @ 0x081D13B4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081D13E0 + adds r4, r4, r0 + ldrb r0, [r4] + movs r1, #0 + bl sub_08198134 + ldrb r0, [r4] + bl sub_08003774 + ldrb r0, [r4] + bl sub_08003444 + movs r0, #0xff + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D13E0: .4byte gUnknown_203CC14 + thumb_func_end sub_081D13B4 + + thumb_func_start sub_081D13E4 +sub_081D13E4: @ 0x081D13E4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081D13F0 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081D13F0: .4byte gUnknown_203CC14 + thumb_func_end sub_081D13E4 + + thumb_func_start sub_081D13F4 +sub_081D13F4: @ 0x081D13F4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + movs r3, #0 + ldr r0, _081D14A8 + mov r8, r0 + ldr r1, _081D14AC + mov sb, r1 + ldr r6, _081D14B0 + ldr r0, _081D14B4 + mov sl, r0 + ldrb r1, [r7, #5] + cmp r3, r1 + bhs _081D1440 + mov ip, r8 + ldr r5, _081D14B8 + ldr r4, _081D14BC +_081D141C: + mov r0, ip + ldr r2, [r0] + lsls r0, r3, #3 + adds r2, r0, r2 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r5] + adds r1, r1, r0 + adds r1, #0x12 + str r1, [r2] + str r3, [r2, #4] + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrb r1, [r7, #5] + cmp r3, r1 + blo _081D141C +_081D1440: + mov r0, r8 + ldr r2, [r0] + lsls r0, r3, #3 + adds r0, r0, r2 + mov r1, sb + str r1, [r0] + movs r1, #2 + rsbs r1, r1, #0 + str r1, [r0, #4] + str r2, [r6] + ldrb r0, [r7, #5] + adds r0, #1 + movs r4, #0 + movs r5, #0 + strh r0, [r6, #0xc] + mov r1, sl + ldrb r0, [r1, #1] + strb r0, [r6, #0x10] + strb r4, [r6, #0x11] + movs r0, #1 + movs r1, #0 + bl sub_080061B4 + strb r0, [r6, #0x12] + strb r4, [r6, #0x13] + movs r0, #8 + strh r0, [r6, #0xe] + movs r0, #0x2a + strb r0, [r6, #0x14] + movs r0, #0x31 + strb r0, [r6, #0x15] + ldr r0, _081D14C0 + str r0, [r6, #4] + str r5, [r6, #8] + movs r0, #1 + strb r0, [r6, #0x17] + movs r0, #0 + strb r0, [r6, #0x16] + ldrh r1, [r7, #2] + ldrh r2, [r7] + adds r0, r6, #0 + bl sub_081AE25C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081D14A8: .4byte gUnknown_203CC18 +_081D14AC: .4byte gUnknown_85C93C8 +_081D14B0: .4byte gUnknown_3006050 +_081D14B4: .4byte gUnknown_203CC14 +_081D14B8: .4byte gUnknown_3005AEC +_081D14BC: .4byte 0x00002CB8 +_081D14C0: .4byte sub_081D14C4 + thumb_func_end sub_081D13F4 + + thumb_func_start sub_081D14C4 +sub_081D14C4: @ 0x081D14C4 + push {lr} + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _081D14D4 + movs r0, #5 + bl sub_080A306C +_081D14D4: + pop {r0} + bx r0 + thumb_func_end sub_081D14C4 + + thumb_func_start sub_081D14D8 +sub_081D14D8: @ 0x081D14D8 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + ldrb r0, [r4, #5] + ldrb r1, [r4, #4] + subs r0, r0, r1 + adds r0, #1 + str r0, [sp] + movs r0, #0x6e + str r0, [sp, #4] + str r0, [sp, #8] + adds r0, r4, #2 + str r0, [sp, #0xc] + movs r0, #2 + movs r1, #0xc8 + movs r2, #0xc + movs r3, #0x94 + bl sub_081AF178 + strb r0, [r4, #9] + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081D14D8 + + thumb_func_start sub_081D1508 +sub_081D1508: @ 0x081D1508 + push {lr} + ldr r0, _081D1518 + ldr r0, [r0] + bl sub_08000BF0 + pop {r0} + bx r0 + .align 2, 0 +_081D1518: .4byte gUnknown_203CC18 + thumb_func_end sub_081D1508 + + thumb_func_start sub_081D151C +sub_081D151C: @ 0x081D151C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r3, r0, #0 + movs r6, #0 + movs r7, #0 +_081D152E: + movs r2, #0 + lsls r5, r6, #2 + adds r0, r6, #1 + mov sl, r0 + adds r4, r5, #0 +_081D1538: + lsls r0, r2, #2 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, r3, r0 + adds r1, r0, #0 + adds r1, #0x64 + strh r7, [r1] + adds r0, #0x66 + strh r7, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #9 + bls _081D1538 + movs r2, #0 + mov sb, r2 + str r5, [sp] + movs r1, #0x9b + mov r8, r1 + movs r4, #0x5b + mov ip, r4 +_081D1564: + lsls r0, r2, #2 + adds r0, r0, r2 + adds r1, r6, r0 + adds r1, r3, r1 + mov r4, sb + strb r4, [r1] + lsls r0, r0, #2 + ldr r1, [sp] + adds r0, r1, r0 + adds r0, r3, r0 + mov r4, r8 + strh r4, [r0, #0x14] + mov r1, ip + strh r1, [r0, #0x16] + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _081D1564 + adds r1, r3, r5 + movs r2, #0x96 + lsls r2, r2, #1 + adds r0, r1, r2 + strh r7, [r0] + movs r4, #0x97 + lsls r4, r4, #1 + adds r0, r1, r4 + strh r7, [r0] + mov r1, sl + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #4 + bls _081D152E + movs r2, #0xd5 + lsls r2, r2, #2 + adds r0, r3, r2 + movs r1, #0 + strb r1, [r0] + ldr r4, _081D15C8 + adds r0, r3, r4 + strh r1, [r0] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D15C8: .4byte 0x00000352 + thumb_func_end sub_081D151C + + thumb_func_start sub_081D15CC +sub_081D15CC: @ 0x081D15CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov r8, r0 + str r1, [sp] + mov sb, r2 + movs r7, #0 +_081D15E0: + lsls r4, r7, #2 + ldr r1, [sp] + adds r0, r4, r1 + ldrh r1, [r0] + lsls r5, r1, #8 + mov r2, sb + adds r0, r4, r2 + ldrh r0, [r0] + subs r0, r0, r1 + lsls r0, r0, #8 + movs r1, #0xa + bl __divsi3 + adds r6, r0, #0 + movs r3, #0 + adds r7, #1 + mov sl, r7 + mov ip, r4 +_081D1604: + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + add r0, ip + add r0, r8 + asrs r2, r5, #8 + asrs r1, r5, #7 + movs r7, #1 + ands r1, r7 + adds r2, r2, r1 + adds r0, #0x64 + strh r2, [r0] + adds r5, r5, r6 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #8 + bls _081D1604 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r4, r0 + add r0, r8 + mov r1, sb + adds r2, r4, r1 + ldrh r1, [r2] + adds r0, #0x64 + strh r1, [r0] + ldr r7, [sp] + adds r0, r4, r7 + ldrh r1, [r0, #2] + lsls r5, r1, #8 + ldrh r0, [r2, #2] + subs r0, r0, r1 + lsls r0, r0, #8 + movs r1, #0xa + bl __divsi3 + adds r6, r0, #0 + movs r3, #0 + str r4, [sp, #4] + movs r0, #1 + mov ip, r0 +_081D165A: + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, [sp, #4] + adds r0, r1, r0 + add r0, r8 + asrs r2, r5, #8 + asrs r1, r5, #7 + mov r7, ip + ands r1, r7 + adds r2, r2, r1 + adds r0, #0x66 + strh r2, [r0] + adds r5, r5, r6 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #8 + bls _081D165A + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r4, r0 + add r0, r8 + mov r2, sb + adds r1, r4, r2 + ldrh r1, [r1, #2] + adds r0, #0x66 + strh r1, [r0] + mov r7, sl + lsls r0, r7, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #4 + bls _081D15E0 + ldr r1, _081D16B8 + add r1, r8 + movs r0, #0 + strh r0, [r1] + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D16B8: .4byte 0x00000352 + thumb_func_end sub_081D15CC + + thumb_func_start sub_081D16BC +sub_081D16BC: @ 0x081D16BC + push {r4, lr} + adds r1, r0, #0 + ldr r0, _081D16D0 + adds r4, r1, r0 + ldrh r0, [r4] + cmp r0, #9 + bls _081D16D4 + movs r0, #0 + b _081D16EE + .align 2, 0 +_081D16D0: .4byte 0x00000352 +_081D16D4: + adds r0, r1, #0 + bl sub_081D1878 + ldrh r1, [r4] + adds r1, #1 + strh r1, [r4] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0xa + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_081D16EE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D16BC + + thumb_func_start sub_081D16F4 +sub_081D16F4: @ 0x081D16F4 + ldr r1, _081D1700 + adds r0, r0, r1 + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_081D1700: .4byte 0x00000355 + thumb_func_end sub_081D16F4 + + thumb_func_start sub_081D1704 +sub_081D1704: @ 0x081D1704 + push {r4, r5, lr} + sub sp, #0xc + ldr r1, _081D1718 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _081D171C + cmp r0, #1 + beq _081D172A + b _081D1742 + .align 2, 0 +_081D1718: .4byte 0x00000355 +_081D171C: + bl sub_080B9750 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #1 + b _081D1744 +_081D172A: + mov r0, sp + ldr r1, _081D174C + ldm r1!, {r2, r3, r5} + stm r0!, {r2, r3, r5} + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl sub_080B9790 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] +_081D1742: + movs r0, #0 +_081D1744: + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D174C: .4byte gUnknown_85F7B0C + thumb_func_end sub_081D1704 + + thumb_func_start sub_081D1750 +sub_081D1750: @ 0x081D1750 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r6, r0, #0 + movs r1, #0xd5 + lsls r1, r1, #2 + adds r0, r6, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _081D1806 + adds r0, r6, #0 + bl sub_081D1AEC + adds r0, r6, #0 + bl sub_081D1C48 + movs r7, #0 + ldr r5, _081D1818 + mov ip, r5 + movs r0, #0xf0 + lsls r0, r0, #3 + add r0, ip + mov sb, r0 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r1, r6, r1 + str r1, [sp] + ldr r5, _081D181C + mov r8, r5 + movs r0, #0xa1 + lsls r0, r0, #1 + adds r0, r6, r0 + str r0, [sp, #4] + movs r1, #0x92 + lsls r1, r1, #2 + adds r1, r6, r1 + str r1, [sp, #8] + ldr r5, _081D1820 + adds r5, r5, r6 + mov sl, r5 +_081D17A6: + adds r2, r7, #0 + adds r2, #0x37 + lsls r3, r2, #2 + mov r0, sb + adds r0, r3, r0 + str r0, [sp, #0xc] + add r3, ip + lsls r4, r7, #2 + ldr r1, [sp] + adds r0, r1, r4 + ldrh r0, [r0] + lsls r0, r0, #8 + ldr r5, [sp, #4] + adds r1, r5, r4 + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r3] + mov r1, r8 + ands r0, r1 + ldr r5, [sp, #0xc] + strh r0, [r5] + lsls r2, r2, #1 + adds r2, #1 + lsls r2, r2, #1 + mov r0, sb + adds r3, r2, r0 + add r2, ip + ldr r1, [sp, #8] + adds r0, r1, r4 + ldrh r0, [r0] + lsls r0, r0, #8 + add r4, sl + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r2] + mov r5, r8 + ands r0, r5 + strh r0, [r3] + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0x41 + bls _081D17A6 + movs r0, #0xd5 + lsls r0, r0, #2 + adds r1, r6, r0 + movs r0, #0 + strb r0, [r1] +_081D1806: + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D1818: .4byte gUnknown_20388C8 +_081D181C: .4byte 0x0000FFFF +_081D1820: .4byte 0x0000024A + thumb_func_end sub_081D1750 + + thumb_func_start sub_081D1824 +sub_081D1824: @ 0x081D1824 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _081D1830 + movs r1, #0 +_081D1830: + movs r0, #1 + lsls r0, r1 + movs r5, #0x1f + bics r5, r0 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + movs r0, #0x42 + movs r1, #0x9b + bl sub_08001144 + ldr r4, _081D1870 + movs r0, #0x44 + adds r1, r4, #0 + bl sub_08001144 + movs r0, #0x46 + adds r1, r4, #0 + bl sub_08001144 + ldr r1, _081D1874 + movs r0, #0x48 + bl sub_08001144 + movs r0, #0x4a + adds r1, r5, #0 + bl sub_08001144 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D1870: .4byte 0x00003879 +_081D1874: .4byte 0x00003F3F + thumb_func_end sub_081D1824 + + thumb_func_start sub_081D1878 +sub_081D1878: @ 0x081D1878 + push {r4, r5, r6, r7, lr} + mov ip, r0 + movs r4, #0 + movs r7, #0x96 + lsls r7, r7, #1 + add r7, ip + ldr r6, _081D18BC + add r6, ip + mov r5, ip + adds r5, #0x64 +_081D188C: + lsls r2, r4, #2 + adds r3, r7, r2 + ldrh r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r2, r0 + adds r2, r5, r2 + ldr r0, [r2] + str r0, [r3] + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #4 + bls _081D188C + movs r1, #0xd5 + lsls r1, r1, #2 + add r1, ip + movs r0, #1 + strb r0, [r1] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D18BC: .4byte 0x00000352 + thumb_func_end sub_081D1878 + + thumb_func_start sub_081D18C0 +sub_081D18C0: @ 0x081D18C0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + str r0, [sp] + adds r6, r1, #0 + adds r5, r2, #0 + str r3, [sp, #4] + ldr r0, [sp, #0x38] + ldr r7, [sp, #0x3c] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r0, #0 + str r0, [sp, #0xc] + ldrh r0, [r5, #2] + ldrh r1, [r3, #2] + cmp r0, r1 + bhs _081D18FA + adds r2, r0, #0 + mov sl, r2 + ldrh r0, [r3, #2] + ldrh r1, [r5] + lsls r4, r1, #0xa + ldrh r3, [r3] + str r3, [sp, #8] + b _081D190E +_081D18FA: + ldrh r0, [r5, #2] + ldr r1, [sp, #4] + ldrh r1, [r1, #2] + mov sl, r1 + ldr r2, [sp, #4] + ldrh r1, [r2] + lsls r4, r1, #0xa + ldrh r3, [r5] + str r3, [sp, #8] + mov r2, sl +_081D190E: + subs r0, r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r0, #0 + beq _081D1926 + subs r0, r3, r1 + lsls r0, r0, #0xa + mov r1, r8 + bl __divsi3 + str r0, [sp, #0xc] +_081D1926: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r7, #0 + bne _081D1970 + mov r0, sl + subs r0, #0x38 + lsls r0, r0, #2 + adds r6, r6, r0 + movs r5, #0 + mov r3, sb + lsls r3, r3, #1 + mov ip, r3 + ldr r0, [sp, #8] + add r0, sb + str r0, [sp, #0x10] + cmp r7, r8 + bhs _081D19FE + movs r7, #1 +_081D1950: + adds r2, r3, r6 + asrs r1, r4, #0xa + asrs r0, r4, #9 + ands r0, r7 + adds r1, r1, r0 + add r1, sb + strh r1, [r2] + ldr r1, [sp, #0xc] + adds r4, r4, r1 + adds r6, #4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + blo _081D1950 + b _081D19FE +_081D1970: + ldr r2, [sp, #0xc] + cmp r2, #0 + ble _081D1A08 + mov r0, sl + subs r0, #0x38 + lsls r0, r0, #2 + adds r7, r7, r0 + movs r5, #0 + mov r3, sb + lsls r3, r3, #1 + mov ip, r3 + ldr r0, [sp, #8] + add r0, sb + str r0, [sp, #0x10] + cmp r5, r8 + bhs _081D19C2 + ldr r0, _081D1A04 + cmp r4, r0 + bgt _081D19C2 + mov r1, ip + str r1, [sp, #0x14] +_081D199A: + ldr r3, [sp, #0x14] + adds r2, r3, r7 + asrs r1, r4, #0xa + asrs r0, r4, #9 + movs r3, #1 + ands r0, r3 + adds r1, r1, r0 + add r1, sb + strh r1, [r2] + ldr r0, [sp, #0xc] + adds r4, r4, r0 + adds r7, #4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + bhs _081D19C2 + ldr r1, _081D1A04 + cmp r4, r1 + ble _081D199A +_081D19C2: + mov r2, sl + adds r1, r2, r5 + ldr r3, [sp] + movs r2, #0xd4 + lsls r2, r2, #2 + adds r0, r3, r2 + strh r1, [r0] + ldrh r0, [r0] + subs r0, #0x38 + lsls r0, r0, #2 + adds r6, r6, r0 + cmp r5, r8 + bhs _081D19FE + mov r3, ip + movs r7, #1 +_081D19E0: + adds r2, r3, r6 + asrs r1, r4, #0xa + asrs r0, r4, #9 + ands r0, r7 + adds r1, r1, r0 + add r1, sb + strh r1, [r2] + ldr r0, [sp, #0xc] + adds r4, r4, r0 + adds r6, #4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + blo _081D19E0 +_081D19FE: + subs r0, r6, #4 + b _081D1AD4 + .align 2, 0 +_081D1A04: .4byte 0x00026BFF +_081D1A08: + ldr r1, [sp, #0xc] + cmp r1, #0 + bge _081D1AAC + mov r0, sl + subs r0, #0x38 + lsls r0, r0, #2 + adds r6, r6, r0 + movs r5, #0 + mov r2, sb + lsls r2, r2, #1 + mov ip, r2 + ldr r3, [sp, #8] + add r3, sb + str r3, [sp, #0x10] + cmp r5, r8 + bhs _081D1A66 + adds r3, r2, r6 + asrs r1, r4, #0xa + asrs r0, r4, #9 + movs r2, #1 + ands r0, r2 + adds r1, r1, r0 + add r1, sb + strh r1, [r3] + b _081D1A5C +_081D1A3A: + ldr r0, [sp, #0xc] + adds r4, r4, r0 + adds r6, #4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + bhs _081D1A66 + mov r1, ip + adds r3, r1, r6 + asrs r2, r4, #0xa + asrs r0, r4, #9 + movs r1, #1 + ands r0, r1 + adds r2, r2, r0 + add r2, sb + strh r2, [r3] +_081D1A5C: + ldr r0, _081D1AA8 + cmp r4, r0 + bgt _081D1A3A + movs r0, #0x9b + strh r0, [r3] +_081D1A66: + mov r2, sl + adds r1, r2, r5 + ldr r3, [sp] + movs r2, #0xd4 + lsls r2, r2, #2 + adds r0, r3, r2 + strh r1, [r0] + ldrh r0, [r0] + subs r0, #0x38 + lsls r0, r0, #2 + adds r7, r7, r0 + cmp r5, r8 + bhs _081D1AA2 + mov r3, ip + movs r6, #1 +_081D1A84: + adds r2, r3, r7 + asrs r1, r4, #0xa + asrs r0, r4, #9 + ands r0, r6 + adds r1, r1, r0 + add r1, sb + strh r1, [r2] + ldr r0, [sp, #0xc] + adds r4, r4, r0 + adds r7, #4 + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, r8 + blo _081D1A84 +_081D1AA2: + subs r0, r7, #4 + b _081D1AD4 + .align 2, 0 +_081D1AA8: .4byte 0x00026BFF +_081D1AAC: + ldr r1, [sp] + movs r2, #0xd4 + lsls r2, r2, #2 + adds r0, r1, r2 + mov r3, sl + strh r3, [r0] + mov r0, sl + subs r0, #0x38 + lsls r0, r0, #2 + adds r6, r6, r0 + adds r7, r7, r0 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r6, #2] + ldr r1, [sp, #4] + ldrh r0, [r1] + strh r0, [r7] + movs r0, #0x9b + strh r0, [r7, #2] + b _081D1ADC +_081D1AD4: + add r0, ip + mov r2, sp + ldrh r2, [r2, #0x10] + strh r2, [r0] +_081D1ADC: + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D18C0 + + thumb_func_start sub_081D1AEC +sub_081D1AEC: @ 0x081D1AEC + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r4, r0, #0 + movs r0, #0x97 + lsls r0, r0, #1 + adds r2, r4, r0 + movs r3, #0x99 + lsls r3, r3, #1 + adds r1, r4, r3 + ldrh r0, [r2] + ldrh r3, [r1] + cmp r0, r3 + bhs _081D1B28 + adds r7, r0, #0 + movs r0, #0xa0 + lsls r0, r0, #1 + adds r1, r4, r0 + movs r3, #0x96 + lsls r3, r3, #1 + adds r2, r4, r3 + subs r0, #0x10 + adds r3, r4, r0 + movs r0, #1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r4, #0 + bl sub_081D18C0 + b _081D1B48 +_081D1B28: + ldrh r7, [r1] + movs r2, #0xa0 + lsls r2, r2, #1 + adds r1, r4, r2 + movs r3, #0x98 + lsls r3, r3, #1 + adds r2, r4, r3 + movs r0, #0x96 + lsls r0, r0, #1 + adds r3, r4, r0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + bl sub_081D18C0 +_081D1B48: + movs r1, #0xa0 + lsls r1, r1, #1 + adds r5, r4, r1 + movs r3, #0x98 + lsls r3, r3, #1 + adds r2, r4, r3 + movs r0, #0x9a + lsls r0, r0, #1 + adds r6, r4, r0 + movs r0, #1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r4, #0 + adds r1, r5, #0 + adds r3, r6, #0 + bl sub_081D18C0 + movs r2, #0 + movs r1, #0x9b + lsls r1, r1, #1 + adds r0, r4, r1 + movs r3, #0x9d + lsls r3, r3, #1 + adds r1, r4, r3 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bhi _081D1B84 + movs r2, #1 +_081D1B84: + movs r0, #0x9c + lsls r0, r0, #1 + adds r3, r4, r0 + str r2, [sp] + movs r1, #0x92 + lsls r1, r1, #2 + adds r0, r4, r1 + str r0, [sp, #4] + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_081D18C0 + movs r2, #0x38 + cmp r2, r7 + bhs _081D1BC6 + adds r6, r5, #0 + movs r3, #0 + movs r0, #0xa1 + lsls r0, r0, #1 + adds r5, r4, r0 +_081D1BAE: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r1, r6, r0 + strh r3, [r1] + adds r0, r5, r0 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r7 + blo _081D1BAE +_081D1BC6: + movs r1, #0x97 + lsls r1, r1, #1 + adds r0, r4, r1 + ldrh r2, [r0] + movs r3, #0xd4 + lsls r3, r3, #2 + adds r0, r4, r3 + ldrh r1, [r0] + cmp r2, r1 + bhi _081D1BFA + movs r1, #0xa0 + lsls r1, r1, #1 + adds r3, r4, r1 + movs r5, #0x9b + adds r1, r0, #0 +_081D1BE4: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r0, r3, r0 + strh r5, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r1] + cmp r2, r0 + bls _081D1BE4 +_081D1BFA: + movs r2, #0x9b + lsls r2, r2, #1 + adds r1, r4, r2 + movs r3, #0xd4 + lsls r3, r3, #2 + adds r0, r4, r3 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bhs _081D1C10 + adds r0, r1, #0 +_081D1C10: + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x79 + bhi _081D1C40 + movs r0, #0xa0 + lsls r0, r0, #1 + adds r5, r4, r0 + movs r3, #0 + movs r1, #0xa1 + lsls r1, r1, #1 + adds r4, r4, r1 +_081D1C28: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r1, r5, r0 + strh r3, [r1] + adds r0, r4, r0 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x79 + bls _081D1C28 +_081D1C40: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D1AEC + + thumb_func_start sub_081D1C48 +sub_081D1C48: @ 0x081D1C48 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r4, r0, #0 + movs r0, #0x97 + lsls r0, r0, #1 + adds r2, r4, r0 + movs r3, #0x9f + lsls r3, r3, #1 + adds r1, r4, r3 + ldrh r0, [r2] + ldrh r3, [r1] + cmp r0, r3 + bhs _081D1C84 + adds r7, r0, #0 + movs r0, #0x92 + lsls r0, r0, #2 + adds r1, r4, r0 + movs r3, #0x96 + lsls r3, r3, #1 + adds r2, r4, r3 + movs r0, #0x9e + lsls r0, r0, #1 + adds r3, r4, r0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + bl sub_081D18C0 + b _081D1CA6 +_081D1C84: + ldrh r7, [r1] + movs r2, #0x92 + lsls r2, r2, #2 + adds r1, r4, r2 + movs r3, #0x9e + lsls r3, r3, #1 + adds r2, r4, r3 + movs r0, #0x96 + lsls r0, r0, #1 + adds r3, r4, r0 + movs r0, #1 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + adds r0, r4, #0 + bl sub_081D18C0 +_081D1CA6: + movs r1, #0x92 + lsls r1, r1, #2 + adds r5, r4, r1 + movs r3, #0x9e + lsls r3, r3, #1 + adds r2, r4, r3 + movs r0, #0x9c + lsls r0, r0, #1 + adds r3, r4, r0 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081D18C0 + movs r2, #0x38 + cmp r2, r7 + bhs _081D1CEC + adds r6, r5, #0 + movs r3, #0 + ldr r1, _081D1D6C + adds r5, r4, r1 +_081D1CD4: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r1, r6, r0 + strh r3, [r1] + adds r0, r5, r0 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, r7 + blo _081D1CD4 +_081D1CEC: + movs r2, #0x97 + lsls r2, r2, #1 + adds r0, r4, r2 + ldrh r2, [r0] + movs r3, #0xd4 + lsls r3, r3, #2 + adds r0, r4, r3 + ldrh r1, [r0] + cmp r2, r1 + bhi _081D1D1E + ldr r1, _081D1D6C + adds r3, r4, r1 + movs r5, #0x9b + adds r1, r0, #0 +_081D1D08: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r0, r3, r0 + strh r5, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldrh r0, [r1] + cmp r2, r0 + bls _081D1D08 +_081D1D1E: + movs r1, #0x9d + lsls r1, r1, #1 + adds r0, r4, r1 + ldrh r0, [r0] + adds r1, r0, #1 + movs r2, #0xd4 + lsls r2, r2, #2 + adds r0, r4, r2 + ldrh r0, [r0] + cmp r0, r1 + bge _081D1D36 + adds r0, r1, #0 +_081D1D36: + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x79 + bhi _081D1D62 + movs r3, #0x92 + lsls r3, r3, #2 + adds r5, r4, r3 + movs r3, #0 + ldr r0, _081D1D6C + adds r4, r4, r0 +_081D1D4A: + adds r0, r2, #0 + subs r0, #0x38 + lsls r0, r0, #2 + adds r1, r5, r0 + strh r3, [r1] + adds r0, r4, r0 + strh r3, [r0] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #0x79 + bls _081D1D4A +_081D1D62: + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D1D6C: .4byte 0x0000024A + thumb_func_end sub_081D1C48 + + thumb_func_start sub_081D1D70 +sub_081D1D70: @ 0x081D1D70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + mov r8, r1 + ldr r1, _081D1E38 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r2, [r0] + adds r6, #1 + movs r0, #0x9b + mov r3, r8 + strh r0, [r3] + movs r0, #0x5b + subs r0, r0, r2 + strh r0, [r3, #2] + movs r7, #0x40 + movs r0, #0 + mov ip, r0 + movs r2, #1 + mov sb, r2 + ldr r3, _081D1E3C + mov sl, r3 +_081D1DA2: + adds r0, r7, #0 + adds r0, #0x33 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + mov r1, ip + lsls r0, r1, #0x18 + movs r2, #0xff + lsls r2, r2, #0x18 + adds r0, r0, r2 + lsrs r3, r0, #0x18 + mov ip, r3 + cmp r0, #0 + bge _081D1DC0 + movs r0, #4 + mov ip, r0 +_081D1DC0: + mov r1, ip + lsls r0, r1, #0x18 + asrs r4, r0, #0x18 + cmp r4, #2 + bne _081D1DD0 + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 +_081D1DD0: + ldrb r0, [r6] + ldr r2, _081D1E38 + adds r0, r0, r2 + ldrb r2, [r0] + adds r6, #1 + lsls r0, r4, #2 + mov r1, r8 + adds r3, r0, r1 + adds r0, r7, #0 + adds r0, #0x40 + lsls r0, r0, #1 + add r0, sl + movs r1, #0 + ldrsh r0, [r0, r1] + muls r0, r2, r0 + asrs r5, r0, #8 + adds r0, r5, #0 + adds r0, #0x9b + strh r0, [r3] + lsls r0, r7, #1 + add r0, sl + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r2, #0 + muls r1, r0, r1 + asrs r1, r1, #8 + movs r0, #0x5b + subs r0, r0, r1 + strh r0, [r3, #2] + cmp r4, #2 + bgt _081D1E1C + cmp r2, #0x20 + bne _081D1E16 + cmp r4, #2 + beq _081D1E1C +_081D1E16: + adds r0, r5, #0 + adds r0, #0x9c + strh r0, [r3] +_081D1E1C: + mov r0, sb + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sb, r0 + cmp r0, #4 + bls _081D1DA2 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D1E38: .4byte gUnknown_85F7B18 +_081D1E3C: .4byte gUnknown_82FA8CC + thumb_func_end sub_081D1D70 + + thumb_func_start sub_081D1E40 +sub_081D1E40: @ 0x081D1E40 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081D1E90 + bl sub_08003090 + bl sub_08004480 + movs r0, #0 + movs r1, #1 + movs r2, #0xe0 + bl sub_080981B4 + ldr r0, _081D1E94 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + movs r4, #0 +_081D1E66: + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08003B18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #4 + bls _081D1E66 + cmp r5, #0 + bne _081D1E98 + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + b _081D1EAA + .align 2, 0 +_081D1E90: .4byte gUnknown_85F7C18 +_081D1E94: .4byte gUnknown_85D7B04 +_081D1E98: + movs r0, #1 + bl sub_0800365C + movs r0, #1 + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 +_081D1EAA: + movs r0, #2 + bl sub_0800365C + movs r0, #3 + bl sub_0800365C + movs r0, #2 + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + movs r0, #3 + movs r1, #0 + movs r2, #1 + movs r3, #0xe + bl sub_08197F44 + bl sub_081D1EE0 + movs r0, #1 + bl sub_08199654 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D1E40 + + thumb_func_start sub_081D1EE0 +sub_081D1EE0: @ 0x081D1EE0 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + sub sp, #0xc + ldr r2, _081D1FB8 + movs r0, #2 + mov sb, r0 + str r0, [sp] + movs r5, #0xff + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0x30 + bl sub_0800449C + ldr r0, _081D1FBC + mov sl, r0 + movs r0, #0x1a + mov r8, r0 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + mov r2, sl + movs r3, #0 + bl sub_0800449C + ldr r2, _081D1FC0 + mov r0, r8 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0x50 + bl sub_0800449C + ldr r2, _081D1FC4 + movs r6, #0x2a + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #8 + bl sub_0800449C + ldr r2, _081D1FC8 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0x48 + bl sub_0800449C + ldr r2, _081D1FCC + mov r0, sb + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x2c + bl sub_0800449C + mov r0, r8 + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + mov r2, sl + movs r3, #0 + bl sub_0800449C + ldr r2, _081D1FD0 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r2, _081D1FD4 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x50 + bl sub_0800449C + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D1FB8: .4byte gUnknown_85F7C50 +_081D1FBC: .4byte gUnknown_85F7C5F +_081D1FC0: .4byte gUnknown_85F7C68 +_081D1FC4: .4byte gUnknown_85F7C64 +_081D1FC8: .4byte gUnknown_85F7C6E +_081D1FCC: .4byte gUnknown_85F7C57 +_081D1FD0: .4byte gUnknown_85F7C75 +_081D1FD4: .4byte gUnknown_85F7C7A + thumb_func_end sub_081D1EE0 + + thumb_func_start sub_081D1FD8 +sub_081D1FD8: @ 0x081D1FD8 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r3, _081D1FF8 + adds r2, r3, #0 + ldr r1, _081D1FFC + ldm r1!, {r5, r6, r7} + stm r2!, {r5, r6, r7} + ldm r1!, {r5, r6, r7} + stm r2!, {r5, r6, r7} + strh r4, [r3, #0xc] + str r0, [r3] + cmp r4, #5 + bhi _081D2000 + strh r4, [r3, #0xe] + b _081D2004 + .align 2, 0 +_081D1FF8: .4byte gUnknown_3006050 +_081D1FFC: .4byte gUnknown_85F7C80 +_081D2000: + movs r0, #6 + strh r0, [r3, #0xe] +_081D2004: + ldrb r0, [r3, #0xe] + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D1FD8 + + thumb_func_start sub_081D200C +sub_081D200C: @ 0x081D200C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x14 + adds r7, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #1 + beq _081D2024 + movs r0, #5 + bl sub_080A306C +_081D2024: + movs r6, #0x20 + str r6, [sp] + movs r4, #0x10 + str r4, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x20 + movs r3, #0x1a + bl sub_08003A34 + movs r5, #0x18 + str r5, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x78 + movs r3, #0x1a + bl sub_08003A34 + str r4, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x20 + movs r3, #0x2a + bl sub_08003A34 + str r5, [sp] + str r4, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0x78 + movs r3, #0x2a + bl sub_08003A34 + movs r5, #0x90 + str r5, [sp] + str r6, [sp, #4] + movs r0, #0 + movs r1, #0x11 + movs r2, #0 + movs r3, #0x42 + bl sub_08003A34 + movs r0, #0x28 + str r0, [sp] + str r4, [sp, #4] + movs r0, #1 + movs r1, #0x11 + movs r2, #0x20 + movs r3, #0x1a + bl sub_08003A34 + str r5, [sp] + str r6, [sp, #4] + movs r0, #1 + movs r1, #0x11 + movs r2, #0 + movs r3, #0x42 + bl sub_08003A34 + movs r0, #2 + rsbs r0, r0, #0 + cmp r7, r0 + bne _081D20B8 + movs r0, #0 + movs r1, #2 + bl sub_08003528 + movs r0, #1 + movs r1, #2 + bl sub_08003528 + b _081D21E4 +_081D20B8: + ldr r1, _081D20F4 + lsls r4, r7, #1 + adds r0, r4, r7 + lsls r0, r0, #2 + adds r5, r0, r1 + ldrb r0, [r5, #2] + lsls r2, r0, #2 + adds r2, r2, r0 + ldr r0, _081D20F8 + adds r2, r2, r0 + movs r0, #0x1a + str r0, [sp] + movs r0, #0xff + str r0, [sp, #4] + movs r0, #0 + str r0, [sp, #8] + movs r1, #1 + movs r3, #0x20 + bl sub_0800449C + ldrb r0, [r5, #1] + adds r6, r4, #0 + cmp r0, #1 + bhi _081D2100 + ldr r1, _081D20FC + add r0, sp, #0xc + bl sub_080088B8 + b _081D210C + .align 2, 0 +_081D20F4: .4byte gUnknown_82ED220 +_081D20F8: .4byte gUnknown_82EBC88 +_081D20FC: .4byte gUnknown_85C9406 +_081D2100: + ldrb r1, [r5, #1] + add r0, sp, #0xc + movs r2, #0 + movs r3, #3 + bl sub_080089D8 +_081D210C: + movs r0, #0x1a + str r0, [sp] + movs r5, #0xff + str r5, [sp, #4] + movs r4, #0 + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x78 + bl sub_0800449C + ldr r1, _081D215C + adds r0, r6, r7 + lsls r0, r0, #2 + adds r6, r0, r1 + ldrb r1, [r6, #4] + add r0, sp, #0xc + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + movs r0, #0x2a + str r0, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x20 + bl sub_0800449C + ldrb r0, [r6, #3] + cmp r0, #0 + bne _081D2164 + ldr r1, _081D2160 + add r0, sp, #0xc + bl sub_080088B8 + b _081D2170 + .align 2, 0 +_081D215C: .4byte gUnknown_82ED220 +_081D2160: .4byte gUnknown_85C9406 +_081D2164: + ldrb r1, [r6, #3] + add r0, sp, #0xc + movs r2, #0 + movs r3, #3 + bl sub_080089D8 +_081D2170: + movs r0, #0x2a + str r0, [sp] + movs r0, #0xff + mov r8, r0 + str r0, [sp, #4] + movs r5, #0 + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + add r2, sp, #0xc + movs r3, #0x78 + bl sub_0800449C + lsls r4, r7, #3 + subs r2, r4, r7 + lsls r2, r2, #3 + ldr r0, _081D21F8 + adds r2, r2, r0 + movs r6, #0x42 + str r6, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r3, #0 + bl sub_0800449C + ldr r1, _081D21FC + ldr r0, _081D2200 + adds r4, r4, r0 + ldrb r0, [r4, #1] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1b + adds r0, r0, r1 + ldr r2, [r0] + movs r0, #0x1a + str r0, [sp] + mov r0, r8 + str r0, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0x20 + bl sub_0800449C + ldr r1, _081D2204 + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + str r6, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + movs r1, #1 + movs r3, #0 + bl sub_0800449C +_081D21E4: + adds r0, r7, #0 + bl sub_08161280 + add sp, #0x14 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D21F8: .4byte gUnknown_85E7FFC +_081D21FC: .4byte gUnknown_8560CAC +_081D2200: .4byte gUnknown_8565FCC +_081D2204: .4byte gUnknown_8560BB4 + thumb_func_end sub_081D200C + + thumb_func_start sub_081D2208 +sub_081D2208: @ 0x081D2208 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + movs r0, #3 + movs r1, #0x11 + bl sub_08003B18 + ldr r2, _081D224C + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + bl sub_08197794 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + movs r0, #0 + str r0, [sp] + movs r0, #2 + str r0, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #3 + str r0, [sp, #0xc] + movs r1, #1 + adds r2, r4, #0 + bl sub_08196E2C + add sp, #0x10 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D224C: .4byte gUnknown_30030B4 + thumb_func_end sub_081D2208 + + thumb_func_start sub_081D2250 +sub_081D2250: @ 0x081D2250 + push {lr} + bl sub_08004630 + movs r0, #3 + bl sub_080046A8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + pop {r1} + bx r1 + thumb_func_end sub_081D2250 + + thumb_func_start sub_081D2264 +sub_081D2264: @ 0x081D2264 + push {lr} + ldr r0, _081D2278 + movs r1, #1 + movs r2, #1 + movs r3, #0xe + bl sub_08198D44 + pop {r0} + bx r0 + .align 2, 0 +_081D2278: .4byte gUnknown_85F7C48 + thumb_func_end sub_081D2264 + + thumb_func_start sub_081D227C +sub_081D227C: @ 0x081D227C + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r0, #0xe + bne _081D22BC + cmp r2, #2 + beq _081D2292 + cmp r2, #7 + bne _081D22A8 +_081D2292: + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D22A4 + adds r0, r0, r1 + adds r1, r2, #0 + adds r2, r3, #0 + bl sub_0806A058 + b _081D22DE + .align 2, 0 +_081D22A4: .4byte gUnknown_2024190 +_081D22A8: + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D22B8 + adds r0, r0, r1 + adds r1, r2, #0 + bl sub_0806A058 + b _081D22DE + .align 2, 0 +_081D22B8: .4byte gUnknown_2024190 +_081D22BC: + cmp r2, #2 + beq _081D22C4 + cmp r2, #7 + bne _081D22D2 +_081D22C4: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080D1770 + b _081D22DE +_081D22D2: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080D15D0 +_081D22DE: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D227C + + thumb_func_start sub_081D22E4 +sub_081D22E4: @ 0x081D22E4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + lsls r2, r2, #0x10 + lsrs r6, r2, #0x10 + movs r0, #0xfc + strb r0, [r5] + adds r5, #1 + movs r0, #4 + strb r0, [r5] + adds r5, #1 + movs r0, #8 + strb r0, [r5] + adds r5, #1 + movs r0, #0 + strb r0, [r5] + adds r5, #1 + movs r0, #9 + strb r0, [r5] + adds r5, #1 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0x2d + movs r3, #0 + bl sub_081D227C + cmp r0, #0 + beq _081D2334 + ldr r1, _081D2330 + adds r0, r5, #0 + movs r2, #0 + movs r3, #0xc + bl sub_08008E14 + b _081D24A2 + .align 2, 0 +_081D2330: .4byte gUnknown_85C8C62 +_081D2334: + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #2 + adds r3, r5, #0 + bl sub_081D227C + adds r0, r5, #0 + bl sub_0800885C + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0xb + movs r3, #0 + bl sub_081D227C + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r4, #0xe + bne _081D2384 + movs r0, #0x64 + adds r4, r6, #0 + muls r4, r0, r4 + ldr r0, _081D2380 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + adds r0, r4, #0 + bl sub_08069AF4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + b _081D23A6 + .align 2, 0 +_081D2380: .4byte gUnknown_2024190 +_081D2384: + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + bl sub_080D1934 + adds r4, r0, #0 + bl sub_08069B04 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + adds r0, r4, #0 + bl sub_08068C00 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 +_081D23A6: + cmp r7, #0x1d + beq _081D23AE + cmp r7, #0x20 + bne _081D23C4 +_081D23AE: + lsls r1, r7, #1 + adds r1, r1, r7 + lsls r1, r1, #1 + ldr r0, _081D23CC + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_0800895C + cmp r0, #0 + bne _081D23C4 + movs r6, #0xff +_081D23C4: + adds r3, r5, #0 + movs r2, #0 + b _081D23D8 + .align 2, 0 +_081D23CC: .4byte gUnknown_82EA31C +_081D23D0: + adds r3, #1 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_081D23D8: + ldrb r0, [r3] + cmp r0, #0xff + bne _081D23D0 + adds r1, r2, #0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r1, #4 + bhi _081D23FC + movs r4, #0 +_081D23EC: + strb r4, [r3] + adds r3, #1 + adds r1, r2, #0 + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r1, #4 + bls _081D23EC +_081D23FC: + movs r0, #0 + strb r0, [r3] + adds r3, #1 + cmp r6, #0 + beq _081D240C + cmp r6, #0xfe + beq _081D2432 + b _081D2456 +_081D240C: + movs r1, #0xfc + strb r1, [r3] + adds r3, #1 + movs r0, #1 + strb r0, [r3] + adds r3, #1 + movs r0, #4 + strb r0, [r3] + adds r3, #1 + strb r1, [r3] + adds r3, #1 + movs r0, #3 + strb r0, [r3] + adds r3, #1 + movs r0, #5 + strb r0, [r3] + adds r3, #1 + movs r0, #0xb5 + b _081D2456 +_081D2432: + movs r1, #0xfc + strb r1, [r3] + adds r3, #1 + movs r0, #1 + strb r0, [r3] + adds r3, #1 + movs r0, #6 + strb r0, [r3] + adds r3, #1 + strb r1, [r3] + adds r3, #1 + movs r0, #3 + strb r0, [r3] + adds r3, #1 + movs r0, #7 + strb r0, [r3] + adds r3, #1 + movs r0, #0xb6 +_081D2456: + strb r0, [r3] + adds r3, #1 + movs r0, #0xfc + strb r0, [r3] + adds r3, #1 + movs r0, #4 + strb r0, [r3] + adds r3, #1 + movs r0, #8 + strb r0, [r3] + adds r3, #1 + movs r4, #0 + strb r4, [r3] + adds r3, #1 + movs r0, #9 + strb r0, [r3] + adds r3, #1 + movs r0, #0xba + strb r0, [r3] + adds r3, #1 + movs r0, #0xf9 + strb r0, [r3] + adds r3, #1 + movs r0, #5 + strb r0, [r3] + adds r3, #1 + adds r0, r3, #0 + mov r1, r8 + movs r2, #0 + movs r3, #3 + bl sub_080089D8 + adds r3, r0, #0 + strb r4, [r3] + adds r3, #1 + movs r0, #0xff + strb r0, [r3] + adds r0, r3, #0 +_081D24A2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D22E4 + + thumb_func_start sub_081D24AC +sub_081D24AC: @ 0x081D24AC + push {r4, lr} + adds r4, r0, #0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + b _081D24C4 +_081D24B6: + strb r3, [r4] + adds r1, #1 + adds r4, #1 + lsls r0, r2, #0x10 + ldr r2, _081D2500 + adds r0, r0, r2 + lsrs r2, r0, #0x10 +_081D24C4: + ldrb r3, [r1] + adds r0, r3, #0 + cmp r0, #0xff + bne _081D24B6 + adds r1, r2, #0 + lsls r0, r1, #0x10 + ldr r2, _081D2500 + adds r0, r0, r2 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + cmp r1, #0 + ble _081D24F2 + movs r3, #0 +_081D24DE: + strb r3, [r4] + adds r4, #1 + adds r1, r2, #0 + lsls r0, r1, #0x10 + ldr r2, _081D2500 + adds r0, r0, r2 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + cmp r1, #0 + bgt _081D24DE +_081D24F2: + movs r0, #0xff + strb r0, [r4] + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D2500: .4byte 0xFFFF0000 + thumb_func_end sub_081D24AC + + thumb_func_start sub_081D2504 +sub_081D2504: @ 0x081D2504 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r4, [sp, #0x1c] + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r4, r4, #0x18 + cmp r4, #0 + bne _081D252C + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081D252C: + cmp r2, r0 + beq _081D2572 + adds r0, r6, #0 + adds r1, r7, #0 + adds r2, r3, #0 + bl sub_081D22E4 + movs r0, #0xfc + strb r0, [r5] + movs r0, #4 + strb r0, [r5, #1] + movs r0, #8 + strb r0, [r5, #2] + movs r0, #0 + strb r0, [r5, #3] + movs r0, #9 + strb r0, [r5, #4] + cmp r7, #0xe + bne _081D255C + adds r0, r5, #5 + ldr r1, _081D2558 + b _081D256A + .align 2, 0 +_081D2558: .4byte gUnknown_85CB7C6 +_081D255C: + adds r4, r5, #5 + lsls r0, r7, #0x18 + lsrs r0, r0, #0x18 + bl sub_080D1970 + adds r1, r0, #0 + adds r0, r4, #0 +_081D256A: + movs r2, #8 + bl sub_081D24AC + b _081D25A2 +_081D2572: + movs r1, #0 + movs r2, #0 +_081D2576: + adds r0, r6, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0xb + bls _081D2576 + adds r1, r6, r1 + movs r0, #0xff + strb r0, [r1] + movs r1, #0 + movs r2, #0 +_081D258E: + adds r0, r5, r1 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #7 + bls _081D258E + adds r1, r5, r1 + movs r0, #0xff + strb r0, [r1] +_081D25A2: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D2504 + + thumb_func_start sub_081D25A8 +sub_081D25A8: @ 0x081D25A8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + mov sl, r1 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + ldr r4, [sp, #0x28] + ldr r5, [sp, #0x2c] + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r6, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r4, r4, #0x10 + lsrs r0, r4, #0x10 + lsls r5, r5, #0x18 + cmp r5, #0 + bne _081D25E0 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081D25E0: + cmp r2, r0 + beq _081D268C + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x16 + movs r3, #0 + bl sub_081D227C + mov r1, sb + lsls r5, r1, #2 + adds r4, r5, r1 + mov r2, r8 + adds r1, r2, r4 + strb r0, [r1] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x2f + movs r3, #0 + bl sub_081D227C + mov r1, r8 + adds r1, #1 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x21 + movs r3, #0 + bl sub_081D227C + mov r1, r8 + adds r1, #2 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x18 + movs r3, #0 + bl sub_081D227C + mov r1, r8 + adds r1, #3 + adds r1, r1, r4 + strb r0, [r1] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x17 + movs r3, #0 + bl sub_081D227C + mov r1, r8 + adds r1, #4 + adds r1, r1, r4 + strb r0, [r1] + mov r4, sl + add r4, sb + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x30 + movs r3, #0 + bl sub_081D227C + cmp r0, #0xff + beq _081D2674 + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x30 + movs r3, #0 + bl sub_081D227C + movs r1, #0x1d + bl __udivsi3 + b _081D2676 +_081D2674: + movs r0, #9 +_081D2676: + strb r0, [r4] + mov r0, sb + adds r1, r5, r0 + mov r2, r8 + adds r0, r2, r1 + lsls r1, r1, #2 + adds r1, #0x14 + add r1, r8 + bl sub_081D1D70 + b _081D26B6 +_081D268C: + movs r2, #0 + mov r0, sb + lsls r5, r0, #2 + adds r1, r5, r0 + movs r6, #0 + lsls r3, r1, #2 + movs r5, #0x9b + movs r4, #0x5b +_081D269C: + adds r0, r2, r1 + add r0, r8 + strb r6, [r0] + lsls r0, r2, #2 + adds r0, r0, r3 + add r0, r8 + strh r5, [r0, #0x14] + strh r4, [r0, #0x16] + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + cmp r2, #4 + bls _081D269C +_081D26B6: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D25A8 + + thumb_func_start sub_081D26C4 +sub_081D26C4: @ 0x081D26C4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + mov r8, r0 + mov sb, r1 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + ldr r4, [sp, #0x28] + lsls r2, r2, #0x10 + lsrs r7, r2, #0x10 + lsls r3, r3, #0x10 + lsrs r5, r3, #0x10 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + lsls r4, r4, #0x18 + cmp r4, #0 + bne _081D26F4 + subs r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_081D26F4: + cmp r2, r0 + beq _081D274A + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #0x41 + movs r3, #0 + bl sub_081D227C + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #1 + movs r3, #0 + bl sub_081D227C + adds r6, r0, #0 + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #0 + bl sub_081D227C + adds r5, r0, #0 + lsls r0, r4, #3 + ldr r1, _081D2758 + adds r0, r0, r1 + movs r1, #1 + str r1, [sp] + mov r1, r8 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080344AC + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0806E1CC + mov r1, sb + bl LZ77UnCompWram +_081D274A: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2758: .4byte gUnknown_82DDA1C + thumb_func_end sub_081D26C4 + + thumb_func_start sub_081D275C +sub_081D275C: @ 0x081D275C + push {lr} + adds r1, r0, #0 + ldrh r0, [r1] + adds r0, #0x18 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _081D2770 + movs r0, #0 + strh r0, [r1] +_081D2770: + movs r0, #0 + ldrsh r1, [r1, r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D275C + + thumb_func_start sub_081D2780 +sub_081D2780: @ 0x081D2780 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1] + subs r0, #0x18 + strh r0, [r1] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x50 + rsbs r2, r2, #0 + cmp r0, r2 + bge _081D2798 + strh r2, [r1] +_081D2798: + movs r0, #0 + ldrsh r1, [r1, r0] + eors r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r1} + bx r1 + thumb_func_end sub_081D2780 + + thumb_func_start sub_081D27A8 +sub_081D27A8: @ 0x081D27A8 + push {r4, r5, lr} + adds r5, r1, #0 + bl sub_081D16BC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_081D275C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + cmp r4, #0 + bne _081D27CA + cmp r0, #0 + beq _081D27CC +_081D27CA: + movs r1, #1 +_081D27CC: + adds r0, r1, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D27A8 + + thumb_func_start sub_081D27D4 +sub_081D27D4: @ 0x081D27D4 + push {r4, r5, lr} + adds r5, r1, #0 + bl sub_081D16BC + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + adds r0, r5, #0 + bl sub_081D2780 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0 + cmp r4, #0 + bne _081D27F6 + cmp r0, #0 + beq _081D27F8 +_081D27F6: + movs r1, #1 +_081D27F8: + adds r0, r1, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D27D4 + + thumb_func_start sub_081D2800 +sub_081D2800: @ 0x081D2800 + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r3, _081D2840 + ldr r4, [r3] + ldr r5, [r3, #4] + str r4, [sp, #0x18] + str r5, [sp, #0x1c] + mov r4, sp + ldr r3, _081D2844 + ldm r3!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + ldm r3!, {r5, r6, r7} + stm r4!, {r5, r6, r7} + ldr r3, _081D2848 + ldr r4, [r3, #4] + ldr r3, [r3] + ldr r5, [sp, #0x18] + ldr r6, [sp, #0x1c] + str r5, [r0] + str r6, [r0, #4] + mov r0, sp + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + ldm r0!, {r5, r6, r7} + stm r1!, {r5, r6, r7} + str r3, [r2] + str r4, [r2, #4] + add sp, #0x20 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2840: .4byte gUnknown_85FA898 +_081D2844: .4byte gUnknown_85FA8A0 +_081D2848: .4byte gUnknown_85FA8B8 + thumb_func_end sub_081D2800 + + thumb_func_start sub_081D284C +sub_081D284C: @ 0x081D284C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x50 + adds r5, r0, #0 + mov ip, r1 + mov r8, r2 + mov r1, sp + ldr r0, _081D28D4 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} + ldm r0!, {r3, r4} + stm r1!, {r3, r4} + add r3, sp, #0x20 + adds r1, r3, #0 + ldr r0, _081D28D8 + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + add r2, sp, #0x38 + adds r1, r2, #0 + ldr r0, _081D28DC + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + ldm r0!, {r4, r6, r7} + stm r1!, {r4, r6, r7} + movs r4, #0 +_081D2888: + lsls r0, r4, #3 + add r0, sp + ldr r1, [r0, #4] + ldr r0, [r0] + stm r5!, {r0, r1} + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081D2888 + mov r1, ip + adds r0, r2, #0 + ldm r0!, {r2, r4, r5} + stm r1!, {r2, r4, r5} + ldm r0!, {r2, r6, r7} + stm r1!, {r2, r6, r7} + movs r4, #0 +_081D28AA: + lsls r0, r4, #3 + adds r0, r3, r0 + ldr r1, [r0, #4] + ldr r0, [r0] + mov r5, r8 + adds r5, #8 + mov r8, r5 + subs r5, #8 + stm r5!, {r0, r1} + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #2 + bls _081D28AA + add sp, #0x50 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D28D4: .4byte gUnknown_85FA8C0 +_081D28D8: .4byte gUnknown_85FA8E0 +_081D28DC: .4byte gUnknown_85FA8F8 + thumb_func_end sub_081D284C + + thumb_func_start sub_081D28E0 +sub_081D28E0: @ 0x081D28E0 + push {r4, r5, lr} + ldr r2, _081D28FC + ldr r4, [r2] + ldr r5, [r2, #4] + ldr r2, _081D2900 + ldr r3, [r2, #4] + ldr r2, [r2] + str r4, [r0] + str r5, [r0, #4] + str r2, [r1] + str r3, [r1, #4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D28FC: .4byte gUnknown_85FA910 +_081D2900: .4byte gUnknown_85FA918 + thumb_func_end sub_081D28E0 + + thumb_func_start sub_081D2904 +sub_081D2904: @ 0x081D2904 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x30] + adds r0, #1 + strh r0, [r1, #0x30] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x3c + ble _081D2920 + movs r0, #0 + strh r0, [r1, #0x30] + adds r0, r1, #0 + bl sub_081D2A38 +_081D2920: + pop {r0} + bx r0 + thumb_func_end sub_081D2904 + + thumb_func_start sub_081D2924 +sub_081D2924: @ 0x081D2924 + push {lr} + adds r2, r0, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081D293C + movs r0, #0 + strh r0, [r2, #0x30] + ldr r0, _081D2940 + str r0, [r2, #0x1c] +_081D293C: + pop {r0} + bx r0 + .align 2, 0 +_081D2940: .4byte sub_081D2904 + thumb_func_end sub_081D2924 + + thumb_func_start sub_081D2944 +sub_081D2944: @ 0x081D2944 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x36 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081D2988 + adds r3, r1, r0 + cmp r3, #0 + beq _081D2990 + ldrh r1, [r3, #0x24] + ldrh r2, [r3, #0x20] + adds r1, r1, r2 + ldr r2, _081D298C + movs r5, #0x2e + ldrsh r0, [r4, r5] + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrh r1, [r3, #0x26] + ldrh r3, [r3, #0x22] + adds r1, r1, r3 + movs r3, #0x2e + ldrsh r0, [r4, r3] + lsls r0, r0, #2 + adds r2, #2 + adds r0, r0, r2 + ldrh r0, [r0] + adds r0, r0, r1 + b _081D29AE + .align 2, 0 +_081D2988: .4byte gUnknown_20205AC +_081D298C: .4byte gUnknown_85FA97C +_081D2990: + ldr r1, _081D29B8 + movs r5, #0x2e + ldrsh r0, [r4, r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + adds r0, #0x28 + strh r0, [r4, #0x20] + movs r2, #0x2e + ldrsh r0, [r4, r2] + lsls r0, r0, #2 + adds r1, #2 + adds r0, r0, r1 + ldrh r0, [r0] + adds r0, #0x68 +_081D29AE: + strh r0, [r4, #0x22] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D29B8: .4byte gUnknown_85FA97C + thumb_func_end sub_081D2944 + + thumb_func_start sub_081D29BC +sub_081D29BC: @ 0x081D29BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r2 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r1, r1, #0x18 + lsrs r7, r1, #0x18 + movs r5, #0 +_081D29CE: + lsls r0, r5, #2 + mov r1, r8 + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, #0 + beq _081D2A20 + strh r5, [r0, #0x2e] + ldr r1, [r4] + lsls r0, r5, #4 + adds r0, #1 + strh r0, [r1, #0x30] + ldr r0, [r4] + strh r6, [r0, #0x32] + ldr r0, [r4] + strh r5, [r0, #0x34] + cmp r7, #0 + beq _081D29F4 + cmp r6, #9 + beq _081D2A00 +_081D29F4: + ldr r1, [r4] + ldr r0, _081D29FC + str r0, [r1, #0x1c] + b _081D2A20 + .align 2, 0 +_081D29FC: .4byte sub_081D2B94 +_081D2A00: + ldr r0, [r4] + bl sub_081D2944 + ldr r0, [r4] + bl sub_081D2C18 + ldr r2, [r4] + ldr r0, _081D2A34 + str r0, [r2, #0x1c] + adds r2, #0x3e + ldrb r0, [r2] + movs r3, #5 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2] +_081D2A20: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + cmp r5, #9 + bls _081D29CE + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2A34: .4byte sub_081D2924 + thumb_func_end sub_081D29BC + + thumb_func_start sub_081D2A38 +sub_081D2A38: @ 0x081D2A38 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r3, #0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r0, #1 + cmp r3, r0 + bge _081D2A84 + ldr r5, _081D2A8C + movs r7, #0x1c + adds r7, r7, r5 + mov ip, r7 + ldr r6, _081D2A90 +_081D2A58: + lsls r1, r2, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r2, r1, r5 + movs r7, #0x2e + ldrsh r0, [r2, r7] + lsls r0, r0, #4 + adds r0, #1 + strh r0, [r2, #0x30] + add r1, ip + str r6, [r1] + ldrh r0, [r2, #0x38] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r0, #1 + cmp r3, r0 + blt _081D2A58 +_081D2A84: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2A8C: .4byte gUnknown_20205AC +_081D2A90: .4byte sub_081D2B94 + thumb_func_end sub_081D2A38 + + thumb_func_start sub_081D2A94 +sub_081D2A94: @ 0x081D2A94 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r3, #0 +_081D2A9C: + lsls r0, r1, #2 + adds r0, r0, r2 + str r3, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #9 + bls _081D2A9C + pop {r0} + bx r0 + thumb_func_end sub_081D2A94 + + thumb_func_start sub_081D2AB0 +sub_081D2AB0: @ 0x081D2AB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sl, r1 + lsls r2, r2, #0x18 + movs r0, #0 + mov sb, r0 + lsrs r7, r2, #0x18 + movs r5, #0 + adds r0, r7, #1 + cmp sb, r0 + bge _081D2B2E +_081D2AD2: + ldr r0, _081D2B18 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r6, r3, #0 + cmp r3, #0x40 + beq _081D2B2E + lsls r0, r5, #2 + mov r1, r8 + adds r4, r0, r1 + lsls r0, r3, #4 + adds r0, r0, r3 + lsls r0, r0, #2 + ldr r1, _081D2B1C + adds r0, r0, r1 + str r0, [r4] + adds r0, #0x3e + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + ldr r0, [r4] + mov r1, sl + strh r1, [r0, #0x36] + cmp r5, #0 + beq _081D2B20 + subs r0, r4, #4 + ldr r0, [r0] + strh r3, [r0, #0x38] + b _081D2B22 + .align 2, 0 +_081D2B18: .4byte gUnknown_85FA964 +_081D2B1C: .4byte gUnknown_20205AC +_081D2B20: + mov sb, r6 +_081D2B22: + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r7, #1 + cmp r5, r0 + blt _081D2AD2 +_081D2B2E: + lsls r0, r7, #2 + add r0, r8 + ldr r0, [r0] + mov r1, sb + strh r1, [r0, #0x38] + adds r0, r7, #0 + movs r1, #1 + mov r2, r8 + bl sub_081D29BC + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D2AB0 + + thumb_func_start sub_081D2B50 +sub_081D2B50: @ 0x081D2B50 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 +_081D2B56: + cmp r5, #9 + bhi _081D2B74 + lsls r0, r5, #2 + adds r4, r0, r6 + ldr r0, [r4] + cmp r0, #0 + beq _081D2B74 + bl sub_08006E00 + movs r0, #0 + str r0, [r4] + adds r0, r5, #1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _081D2B56 +_081D2B74: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D2B50 + + thumb_func_start sub_081D2B7C +sub_081D2B7C: @ 0x081D2B7C + push {lr} + bl sub_081D2B50 + movs r0, #0x68 + bl sub_08008280 + movs r0, #0x68 + bl sub_08008564 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D2B7C + + thumb_func_start sub_081D2B94 +sub_081D2B94: @ 0x081D2B94 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x30] + movs r2, #0x30 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _081D2BC2 + subs r0, r1, #1 + strh r0, [r4, #0x30] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081D2C0C + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EF4 + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_081D2BC2: + adds r0, r4, #0 + bl sub_081D2944 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081D2C0C + adds r2, r4, #0 + adds r2, #0x3e + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x34 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _081D2C08 + cmp r1, #9 + bne _081D2C00 + adds r0, r4, #0 + bl sub_081D2C18 + ldr r0, _081D2BFC + b _081D2C0A + .align 2, 0 +_081D2BFC: .4byte sub_081D2924 +_081D2C00: + ldr r0, _081D2C04 + b _081D2C0A + .align 2, 0 +_081D2C04: .4byte sub_081D2904 +_081D2C08: + ldr r0, _081D2C14 +_081D2C0A: + str r0, [r4, #0x1c] +_081D2C0C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D2C14: .4byte sub_08007140 + thumb_func_end sub_081D2B94 + + thumb_func_start sub_081D2C18 +sub_081D2C18: @ 0x081D2C18 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrh r0, [r6, #0x38] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r5, #0 + movs r2, #0x32 + ldrsh r0, [r6, r2] + adds r0, #1 + cmp r5, r0 + bge _081D2C66 + movs r0, #5 + rsbs r0, r0, #0 + adds r7, r0, #0 +_081D2C34: + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + ldr r0, _081D2C6C + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08007EF4 + adds r1, r4, #0 + adds r1, #0x3e + ldrb r0, [r1] + ands r0, r7 + strb r0, [r1] + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + movs r2, #0x32 + ldrsh r0, [r6, r2] + adds r0, #1 + cmp r5, r0 + blt _081D2C34 +_081D2C66: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2C6C: .4byte gUnknown_20205AC + thumb_func_end sub_081D2C18 + + thumb_func_start sub_081D2C70 +sub_081D2C70: @ 0x081D2C70 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + mov r8, r0 + adds r6, r1, #0 + adds r5, r2, #0 + adds r4, r3, #0 + ldr r3, [sp, #0x4c] + ldr r0, [sp, #0x50] + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r1, sb + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r4, #4 + orrs r1, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r3, [sp, #0x28] + bl sub_08003B18 + add r2, sp, #0xc + ldrh r0, [r5] + ldrh r1, [r6] + subs r0, r0, r1 + strh r0, [r2] + ldrh r0, [r5, #2] + ldrh r1, [r6, #2] + subs r0, r0, r1 + strh r0, [r2, #2] + ldrh r0, [r5, #4] + ldrh r1, [r6, #4] + subs r0, r0, r1 + strh r0, [r2, #4] + ldrh r0, [r5, #8] + ldrh r1, [r6, #8] + subs r0, r0, r1 + strh r0, [r2, #6] + ldrh r0, [r5, #0xa] + ldrh r1, [r6, #0xa] + subs r0, r0, r1 + strh r0, [r2, #8] + ldrh r0, [r5, #6] + ldrh r1, [r6, #6] + subs r0, r0, r1 + strh r0, [r2, #0xa] + add r0, sp, #0x24 + strb r4, [r0] + ldr r3, [sp, #0x28] + strb r3, [r0, #1] + mov r1, sb + strb r1, [r0, #2] + movs r7, #0 + mov sl, r0 + movs r0, #1 + rsbs r0, r0, #0 + mov sb, r0 + add r6, sp, #0x18 +_081D2CFA: + lsls r0, r7, #4 + subs r0, r0, r7 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + mov r1, sl + str r1, [sp] + mov r0, sb + str r0, [sp, #4] + ldr r1, _081D2DA8 + lsls r0, r7, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + mov r0, r8 + movs r1, #1 + movs r2, #0 + adds r3, r5, #0 + bl sub_08199AFC + lsls r0, r7, #1 + mov r4, sp + adds r4, r4, r0 + adds r4, #0xc + movs r1, #0 + ldrsh r0, [r4, r1] + ldr r1, _081D2DAC + cmp r0, #0 + blt _081D2D34 + ldr r1, _081D2DB0 +_081D2D34: + adds r0, r6, #0 + bl sub_080088B8 + mov r0, sl + str r0, [sp] + mov r1, sb + str r1, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #1 + movs r2, #0x36 + adds r3, r5, #0 + bl sub_08199AFC + movs r0, #0 + ldrsh r1, [r4, r0] + adds r0, r1, #0 + cmp r1, #0 + bge _081D2D5C + rsbs r0, r1, #0 +_081D2D5C: + movs r4, #8 + cmp r0, #9 + bgt _081D2D64 + movs r4, #0x10 +_081D2D64: + cmp r1, #0 + bge _081D2D6A + rsbs r1, r1, #0 +_081D2D6A: + adds r0, r6, #0 + movs r2, #0 + movs r3, #2 + bl sub_080089D8 + adds r2, r4, #0 + adds r2, #0x36 + mov r1, sl + str r1, [sp] + mov r0, sb + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, r8 + movs r1, #1 + adds r3, r5, #0 + bl sub_08199AFC + adds r0, r7, #1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #5 + bls _081D2CFA + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2DA8: .4byte gUnknown_85FA9CC +_081D2DAC: .4byte gUnknown_85FA9C7 +_081D2DB0: .4byte gUnknown_85FA9C4 + thumb_func_end sub_081D2C70 + + thumb_func_start sub_081D2DB4 +sub_081D2DB4: @ 0x081D2DB4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, 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, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r4, #4 + orrs r1, r4 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + str r2, [sp, #0x28] + bl sub_08003B18 + add r1, sp, #0xc + ldrh r0, [r5] + strh r0, [r1] + ldrh r0, [r5, #2] + strh r0, [r1, #2] + ldrh r0, [r5, #4] + strh r0, [r1, #4] + ldrh r0, [r5, #8] + strh r0, [r1, #6] + ldrh r0, [r5, #0xa] + strh r0, [r1, #8] + ldrh r0, [r5, #6] + strh r0, [r1, #0xa] + add r0, sp, #0x24 + strb r4, [r0] + strb r6, [r0, #1] + ldr r2, [sp, #0x28] + strb r2, [r0, #2] + movs r6, #0 + add r1, sp, #0x18 + mov sb, r1 + mov r7, r8 + mov sl, r0 + movs r2, #1 + rsbs r2, r2, #0 + mov r8, r2 +_081D2E1E: + lsls r1, r6, #1 + mov r0, sp + adds r0, r0, r1 + adds r0, #0xc + movs r2, #0 + ldrsh r0, [r0, r2] + movs r5, #3 + cmp r0, #0x63 + bgt _081D2E38 + movs r5, #1 + cmp r0, #9 + ble _081D2E38 + movs r5, #2 +_081D2E38: + mov r0, sp + adds r0, r0, r1 + adds r0, #0xc + movs r2, #0 + ldrsh r1, [r0, r2] + mov r0, sb + movs r2, #0 + adds r3, r5, #0 + bl sub_080089D8 + movs r4, #3 + subs r4, r4, r5 + lsls r4, r4, #0x13 + lsrs r4, r4, #0x10 + lsls r5, r6, #4 + subs r5, r5, r6 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + mov r0, sl + str r0, [sp] + mov r1, r8 + str r1, [sp, #4] + ldr r1, _081D2EB4 + lsls r0, r6, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + movs r2, #0 + adds r3, r5, #0 + bl sub_08199AFC + adds r4, #0x36 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r2, sl + str r2, [sp] + mov r0, r8 + str r0, [sp, #4] + mov r1, sb + str r1, [sp, #8] + adds r0, r7, #0 + movs r1, #1 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_08199AFC + adds r0, r6, #1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #5 + bls _081D2E1E + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D2EB4: .4byte gUnknown_85FA9CC + thumb_func_end sub_081D2DB4 + + thumb_func_start sub_081D2EB8 +sub_081D2EB8: @ 0x081D2EB8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x3a + bl sub_0806A058 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0x3b + bl sub_0806A058 + strh r0, [r5, #2] + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0806A058 + strh r0, [r5, #4] + adds r0, r4, #0 + movs r1, #0x3d + bl sub_0806A058 + strh r0, [r5, #6] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_0806A058 + strh r0, [r5, #8] + adds r0, r4, #0 + movs r1, #0x3f + bl sub_0806A058 + strh r0, [r5, #0xa] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D2EB8 + + thumb_func_start sub_081D2F00 +sub_081D2F00: @ 0x081D2F00 + push {lr} + ldr r0, _081D2F20 + ldr r0, [r0] + ldr r1, _081D2F24 + adds r0, r0, r1 + ldrb r1, [r0] + adds r2, r1, #1 + adds r0, r2, #0 + asrs r0, r0, #8 + lsls r0, r0, #8 + subs r0, r2, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {r1} + bx r1 + .align 2, 0 +_081D2F20: .4byte gUnknown_3005AEC +_081D2F24: .4byte 0x00003D6D + thumb_func_end sub_081D2F00 + + thumb_func_start sub_081D2F28 +sub_081D2F28: @ 0x081D2F28 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0x9b + lsls r5, r5, #2 + adds r1, r5, #0 + bl sub_0806F3F0 + adds r4, r4, r5 + ldr r1, [r4] + cmp r0, r1 + bne _081D2F42 + movs r0, #1 + b _081D2F44 +_081D2F42: + movs r0, #0 +_081D2F44: + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D2F28 + + thumb_func_start sub_081D2F4C +sub_081D2F4C: @ 0x081D2F4C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldrb r5, [r7] + subs r0, r5, #1 + cmp r0, #7 + bhi _081D2F94 + movs r6, #0 + cmp r6, r5 + bhs _081D2F78 + adds r4, r7, #0 + adds r4, #8 +_081D2F62: + adds r0, r4, #0 + bl sub_081D2F28 + cmp r0, #0 + beq _081D2F94 + movs r0, #0x9c + lsls r0, r0, #2 + adds r4, r4, r0 + adds r6, #1 + cmp r6, r5 + blo _081D2F62 +_081D2F78: + adds r0, r7, #0 + adds r0, #8 + lsls r1, r5, #2 + adds r1, r1, r5 + lsls r1, r1, #3 + subs r1, r1, r5 + lsls r1, r1, #4 + bl sub_0806F3F0 + ldr r1, [r7, #4] + cmp r0, r1 + bne _081D2F94 + movs r0, #1 + b _081D2F96 +_081D2F94: + movs r0, #0 +_081D2F96: + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D2F4C + + thumb_func_start sub_081D2F9C +sub_081D2F9C: @ 0x081D2F9C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + subs r0, #1 + cmp r0, #7 + bhi _081D2FBE + adds r0, r4, #0 + adds r0, #8 + movs r1, #0xec + lsls r1, r1, #4 + bl sub_0806F3F0 + ldr r1, [r4, #4] + cmp r0, r1 + bne _081D2FBE + movs r0, #1 + b _081D2FC0 +_081D2FBE: + movs r0, #0 +_081D2FC0: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D2F9C + + thumb_func_start sub_081D2FC8 +sub_081D2FC8: @ 0x081D2FC8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov r8, r0 + mov sb, r1 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _081D2FEA + ldr r0, _081D3080 + ldr r2, _081D3084 + movs r1, #0xe1 + movs r3, #1 + bl AGBAssert +_081D2FEA: + mov r1, r8 + ldrb r0, [r1, #1] + cmp r0, #0 + beq _081D2FFE + ldr r0, _081D3080 + ldr r2, _081D3088 + movs r1, #0xe2 + movs r3, #1 + bl AGBAssert +_081D2FFE: + movs r2, #0x80 + lsls r2, r2, #5 + mov r0, sb + movs r1, #0 + bl memset + mov r1, r8 + ldrb r0, [r1] + mov r1, sb + strb r0, [r1] + bl sub_081D2F00 + mov r1, sb + strb r0, [r1, #1] + mov r1, r8 + ldrb r0, [r1] + adds r0, #1 + asrs r0, r0, #1 + mov r1, sb + strb r0, [r1, #2] + movs r5, #0 + adds r1, #8 + str r1, [sp] + mov r0, r8 + ldrb r0, [r0] + cmp r5, r0 + bge _081D30C6 + mov r7, r8 + adds r7, #0xc + mov r6, r8 + movs r1, #0xa8 + lsls r1, r1, #1 + add r1, r8 + mov sl, r1 +_081D3042: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _081D308C + lsrs r0, r5, #0x1f + adds r0, r5, r0 + asrs r0, r0, #1 + lsls r4, r0, #4 + subs r4, r4, r0 + lsls r4, r4, #2 + subs r4, r4, r0 + lsls r4, r4, #4 + add r4, sb + ldrb r0, [r6, #8] + strb r0, [r4, #8] + movs r1, #0xa5 + lsls r1, r1, #2 + adds r0, r4, r1 + mov r1, sl + movs r2, #0x92 + lsls r2, r2, #1 + bl memcpy + adds r4, #0xc + adds r0, r4, #0 + adds r1, r7, #0 + movs r2, #0xa2 + lsls r2, r2, #1 + bl memcpy + b _081D30B2 + .align 2, 0 +_081D3080: .4byte gUnknown_85FAEF4 +_081D3084: .4byte gUnknown_85FAF04 +_081D3088: .4byte gUnknown_85FAF18 +_081D308C: + lsrs r1, r5, #0x1f + adds r1, r5, r1 + asrs r1, r1, #1 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + lsls r0, r0, #4 + add r0, sb + ldrb r1, [r6, #8] + strb r1, [r0, #9] + movs r1, #0xa8 + lsls r1, r1, #1 + adds r0, r0, r1 + adds r1, r7, #0 + movs r2, #0xa2 + lsls r2, r2, #1 + bl memcpy +_081D30B2: + movs r0, #0x9c + lsls r0, r0, #2 + adds r7, r7, r0 + adds r6, r6, r0 + add sl, r0 + adds r5, #1 + mov r1, r8 + ldrb r1, [r1] + cmp r5, r1 + blt _081D3042 +_081D30C6: + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _081D30FC + lsrs r2, r5, #0x1f + adds r2, r5, r2 + asrs r2, r2, #1 + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + add r0, sb + movs r1, #0xa8 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r3, _081D3118 + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + movs r2, #0xa2 + lsls r2, r2, #1 + bl memcpy +_081D30FC: + movs r1, #0xec + lsls r1, r1, #4 + ldr r0, [sp] + bl sub_0806F3F0 + mov r1, sb + str r0, [r1, #4] + movs r0, #0x1e + bl sub_08153570 + cmp r0, #1 + bne _081D311C + movs r0, #1 + b _081D311E + .align 2, 0 +_081D3118: .4byte gUnknown_85FA9E4 +_081D311C: + movs r0, #0 +_081D311E: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D2FC8 + + thumb_func_start sub_081D3130 +sub_081D3130: @ 0x081D3130 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081D2FC8 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D3130 + + thumb_func_start sub_081D3158 +sub_081D3158: @ 0x081D3158 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x1e + bl sub_08153518 + cmp r0, #1 + bne _081D3184 + ldr r2, _081D3180 + adds r0, r5, #0 + adds r1, r4, #0 + bl memcpy + adds r0, r5, #0 + bl sub_081D2F9C + cmp r0, #0 + beq _081D3184 + movs r0, #1 + b _081D3186 + .align 2, 0 +_081D3180: .4byte 0x00000EC8 +_081D3184: + movs r0, #0 +_081D3186: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D3158 + + thumb_func_start sub_081D318C +sub_081D318C: @ 0x081D318C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_081D3158 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08000BF0 + adds r0, r4, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D318C + + thumb_func_start sub_081D31B4 +sub_081D31B4: @ 0x081D31B4 + push {r4, r5, lr} + movs r0, #0x80 + lsls r0, r0, #5 + bl sub_08000BDC + adds r4, r0, #0 + bl sub_081D318C + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08000BF0 + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D31B4 + + thumb_func_start sub_081D31D4 +sub_081D31D4: @ 0x081D31D4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r6, r0, #0 + adds r5, r1, #0 + bl sub_081D3820 + movs r7, #2 + ldr r4, _081D3214 +_081D31E4: + bl sub_081D37F0 + ldr r0, _081D3218 + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081D31F6 + strb r7, [r4] +_081D31F6: + movs r0, #1 + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_081D33F0 + adds r1, r0, #0 + ldr r0, _081D321C + strh r1, [r0] + movs r0, #0x13 + ands r0, r1 + cmp r0, #0x10 + bne _081D3220 + movs r4, #0 + b _081D3242 + .align 2, 0 +_081D3214: .4byte gUnknown_30031E4 +_081D3218: .4byte gUnknown_30012DA +_081D321C: .4byte gUnknown_30012DC +_081D3220: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081D322C + movs r4, #1 + b _081D3242 +_081D322C: + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _081D3240 + strb r0, [r4] + bl VBlankIntrWait + b _081D31E4 +_081D3240: + movs r4, #2 +_081D3242: + movs r0, #0 + str r0, [sp] + ldr r1, _081D3260 + ldr r2, _081D3264 + mov r0, sp + bl CpuSet + bl sub_081D3874 + adds r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081D3260: .4byte gUnknown_30012C0 +_081D3264: .4byte 0x05000006 + thumb_func_end sub_081D31D4 + + thumb_func_start sub_081D3268 +sub_081D3268: @ 0x081D3268 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + bl sub_081D3820 + movs r6, #2 + ldr r4, _081D32A8 +_081D3276: + bl sub_081D37F0 + ldr r0, _081D32AC + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081D3288 + strb r6, [r4] +_081D3288: + movs r0, #0 + movs r1, #0 + movs r2, #0 + adds r3, r5, #0 + bl sub_081D33F0 + adds r1, r0, #0 + ldr r0, _081D32B0 + strh r1, [r0] + movs r0, #0x13 + ands r0, r1 + cmp r0, #0x10 + bne _081D32B4 + movs r4, #0 + b _081D32D6 + .align 2, 0 +_081D32A8: .4byte gUnknown_30031E4 +_081D32AC: .4byte gUnknown_30012DA +_081D32B0: .4byte gUnknown_30012DC +_081D32B4: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081D32C0 + movs r4, #1 + b _081D32D6 +_081D32C0: + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + bne _081D32D4 + strb r0, [r4] + bl VBlankIntrWait + b _081D3276 +_081D32D4: + movs r4, #2 +_081D32D6: + movs r0, #0 + str r0, [sp] + ldr r1, _081D32F4 + ldr r2, _081D32F8 + mov r0, sp + bl CpuSet + bl sub_081D3874 + adds r0, r4, #0 + add sp, #4 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D32F4: .4byte gUnknown_30012C0 +_081D32F8: .4byte 0x05000006 + thumb_func_end sub_081D3268 + + thumb_func_start sub_081D32FC +sub_081D32FC: @ 0x081D32FC + push {r4, lr} + ldr r4, _081D3328 + movs r3, #0 + strh r3, [r4] + ldr r2, _081D332C + ldrh r1, [r2] + ldr r0, _081D3330 + ands r0, r1 + strh r0, [r2] + movs r0, #1 + strh r0, [r4] + ldr r0, _081D3334 + strh r3, [r0] + subs r0, #0x1a + strh r3, [r0] + ldr r1, _081D3338 + movs r0, #0xc0 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D3328: .4byte 0x04000208 +_081D332C: .4byte 0x04000200 +_081D3330: .4byte 0x0000FF3F +_081D3334: .4byte 0x04000128 +_081D3338: .4byte 0x04000202 + thumb_func_end sub_081D32FC + + thumb_func_start sub_081D333C +sub_081D333C: @ 0x081D333C + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r5, _081D3394 + movs r4, #0 + strh r4, [r5] + ldr r3, _081D3398 + ldrh r1, [r3] + ldr r0, _081D339C + ands r0, r1 + strh r0, [r3] + movs r6, #1 + strh r6, [r5] + ldr r0, _081D33A0 + strh r4, [r0] + ldr r2, _081D33A4 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r1, #0 + strh r0, [r2] + ldrh r0, [r2] + ldr r7, _081D33A8 + 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, _081D33AC + ldrb r0, [r1, #1] + cmp r0, #0 + bne _081D338A + str r0, [sp] + ldr r2, _081D33B0 + mov r0, sp + bl CpuSet +_081D338A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D3394: .4byte 0x04000208 +_081D3398: .4byte 0x04000200 +_081D339C: .4byte 0x0000FF3F +_081D33A0: .4byte 0x04000134 +_081D33A4: .4byte 0x04000128 +_081D33A8: .4byte 0x00004003 +_081D33AC: .4byte gUnknown_30012C0 +_081D33B0: .4byte 0x05000006 + thumb_func_end sub_081D333C + + thumb_func_start sub_081D33B4 +sub_081D33B4: @ 0x081D33B4 + ldr r0, _081D33DC + movs r3, #0 + strh r3, [r0] + ldr r2, _081D33E0 + movs r1, #0xa0 + lsls r1, r1, #7 + adds r0, r1, #0 + strh r0, [r2] + ldrh r0, [r2] + movs r1, #8 + orrs r0, r1 + strh r0, [r2] + ldr r0, _081D33E4 + strb r3, [r0] + ldr r0, _081D33E8 + strh r3, [r0] + ldr r1, _081D33EC + movs r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_081D33DC: .4byte 0x04000134 +_081D33E0: .4byte 0x04000128 +_081D33E4: .4byte gUnknown_30031E4 +_081D33E8: .4byte gUnknown_30012DE +_081D33EC: .4byte gUnknown_30012E0 + thumb_func_end sub_081D33B4 + + thumb_func_start sub_081D33F0 +sub_081D33F0: @ 0x081D33F0 + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081D3410 + ldrb r0, [r0, #1] + cmp r0, #6 + bls _081D3406 + b _081D354C +_081D3406: + lsls r0, r0, #2 + ldr r1, _081D3414 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D3410: .4byte gUnknown_30012C0 +_081D3414: .4byte _081D3418 +_081D3418: @ jump table + .4byte _081D3434 @ case 0 + .4byte _081D3448 @ case 1 + .4byte _081D3468 @ case 2 + .4byte _081D347C @ case 3 + .4byte _081D34F4 @ case 4 + .4byte _081D3504 @ case 5 + .4byte _081D353C @ case 6 +_081D3434: + bl sub_081D333C + ldr r1, _081D3444 + movs r0, #1 + strb r0, [r1, #2] + strb r0, [r1, #1] + b _081D354C + .align 2, 0 +_081D3444: .4byte gUnknown_30012C0 +_081D3448: + adds r0, r2, #0 + bl sub_081D3568 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081D3458 + bl sub_081D37BC +_081D3458: + ldr r0, _081D3464 + ldrb r0, [r0] + cmp r0, #2 + beq _081D3462 + b _081D354C +_081D3462: + b _081D3484 + .align 2, 0 +_081D3464: .4byte gUnknown_30031E4 +_081D3468: + bl sub_081D33B4 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_081D359C + ldr r1, _081D3490 + movs r0, #3 + strb r0, [r1, #1] +_081D347C: + ldr r0, _081D3494 + ldrb r0, [r0] + cmp r0, #2 + bne _081D3498 +_081D3484: + ldr r1, _081D3490 + strb r0, [r1, #4] + movs r0, #6 + strb r0, [r1, #1] + b _081D354C + .align 2, 0 +_081D3490: .4byte gUnknown_30012C0 +_081D3494: .4byte gUnknown_30031E4 +_081D3498: + ldr r2, _081D34D8 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + ldr r1, _081D34DC + ldr r0, [r1] + adds r3, r0, #1 + str r3, [r1] + ldr r1, _081D34E0 + ldrb r0, [r1] + cmp r0, #0 + bne _081D34BC + cmp r3, #0x3c + bls _081D34BC + movs r0, #1 + strb r0, [r1, #4] + movs r0, #6 + strb r0, [r1, #1] +_081D34BC: + ldr r4, _081D34E0 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _081D354C + ldrb r0, [r4] + cmp r0, #0 + beq _081D34E4 + ldrh r0, [r2] + cmp r0, #2 + bls _081D34E4 + bl sub_081D37BC + movs r0, #2 + b _081D354A + .align 2, 0 +_081D34D8: .4byte gUnknown_30012DE +_081D34DC: .4byte gUnknown_30012E0 +_081D34E0: .4byte gUnknown_30012C0 +_081D34E4: + bl sub_081D37BC + ldr r1, _081D34F0 + movs r0, #2 + strb r0, [r1, #2] + b _081D354C + .align 2, 0 +_081D34F0: .4byte gUnknown_30012C0 +_081D34F4: + bl sub_081D333C + ldr r1, _081D3500 + movs r0, #5 + strb r0, [r1, #1] + b _081D354C + .align 2, 0 +_081D3500: .4byte gUnknown_30012C0 +_081D3504: + ldr r0, _081D3534 + ldrb r0, [r0] + cmp r0, #1 + bne _081D3518 + ldr r0, _081D3538 + ldrh r0, [r0] + cmp r0, #2 + bls _081D3518 + bl sub_081D37BC +_081D3518: + ldr r1, _081D3538 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x3c + bls _081D354C + ldr r0, _081D3534 + movs r1, #1 + strb r1, [r0, #4] + movs r1, #6 + strb r1, [r0, #1] + b _081D354C + .align 2, 0 +_081D3534: .4byte gUnknown_30012C0 +_081D3538: .4byte gUnknown_30012DE +_081D353C: + ldr r4, _081D3564 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _081D354C + bl sub_081D32FC + movs r0, #0 +_081D354A: + strb r0, [r4, #2] +_081D354C: + ldr r2, _081D3564 + ldrb r0, [r2, #2] + ldrb r1, [r2, #4] + lsls r1, r1, #2 + orrs r0, r1 + ldrb r1, [r2, #3] + lsls r1, r1, #4 + orrs r0, r1 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D3564: .4byte gUnknown_30012C0 + thumb_func_end sub_081D33F0 + + thumb_func_start sub_081D3568 +sub_081D3568: @ 0x081D3568 + push {lr} + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r0, _081D3584 + ldr r0, [r0] + movs r1, #0xc + ands r0, r1 + cmp r0, #8 + bne _081D358C + cmp r2, #0 + beq _081D358C + ldr r1, _081D3588 + movs r0, #1 + b _081D3590 + .align 2, 0 +_081D3584: .4byte 0x04000128 +_081D3588: .4byte gUnknown_30012C0 +_081D358C: + ldr r1, _081D3598 + movs r0, #0 +_081D3590: + strb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_081D3598: .4byte gUnknown_30012C0 + thumb_func_end sub_081D3568 + + thumb_func_start sub_081D359C +sub_081D359C: @ 0x081D359C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r3, _081D35C8 + ldrb r0, [r3] + cmp r0, #0 + beq _081D35D4 + ldr r2, _081D35CC + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + strh r0, [r2] + str r5, [r3, #8] + ldr r0, _081D35D0 + str r4, [r0] + lsrs r0, r4, #2 + adds r0, #1 + str r0, [r3, #0x10] + bl sub_081D35E8 + b _081D35DC + .align 2, 0 +_081D35C8: .4byte gUnknown_30012C0 +_081D35CC: .4byte 0x04000128 +_081D35D0: .4byte 0x04000120 +_081D35D4: + ldr r1, _081D35E4 + ldrh r0, [r1] + strh r0, [r1] + str r2, [r3, #8] +_081D35DC: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D35E4: .4byte 0x04000128 + thumb_func_end sub_081D359C + + thumb_func_start sub_081D35E8 +sub_081D35E8: @ 0x081D35E8 + ldr r1, _081D360C + ldr r2, _081D3610 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _081D3614 + movs r2, #0x40 + strh r2, [r0] + ldr r3, _081D3618 + movs r0, #0 + strh r0, [r3] + adds r1, #0xf4 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + movs r0, #1 + strh r0, [r3] + bx lr + .align 2, 0 +_081D360C: .4byte 0x0400010C +_081D3610: .4byte 0x0000FDA7 +_081D3614: .4byte 0x0400010E +_081D3618: .4byte 0x04000208 + thumb_func_end sub_081D35E8 + + thumb_func_start sub_081D361C +sub_081D361C: @ 0x081D361C + push {lr} + bl sub_081D37CC + bl sub_081D37BC + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D361C + + thumb_func_start sub_081D362C +sub_081D362C: @ 0x081D362C + push {r4, r5, r6, lr} + sub sp, #8 + ldr r2, _081D3644 + ldrb r0, [r2, #1] + adds r3, r2, #0 + cmp r0, #3 + beq _081D36B4 + cmp r0, #3 + bgt _081D3648 + cmp r0, #1 + beq _081D3650 + b _081D37AA + .align 2, 0 +_081D3644: .4byte gUnknown_30012C0 +_081D3648: + cmp r0, #5 + bne _081D364E + b _081D377C +_081D364E: + b _081D37AA +_081D3650: + ldr r1, _081D3680 + ldr r2, _081D3684 + adds r0, r2, #0 + strh r0, [r1] + ldr r0, _081D3688 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + movs r1, #0 + movs r2, #0 + movs r4, #0 + ldr r6, _081D3684 + ldr r5, _081D368C +_081D366C: + lsls r0, r1, #1 + add r0, sp + ldrh r0, [r0] + cmp r0, r6 + bne _081D3690 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + b _081D369A + .align 2, 0 +_081D3680: .4byte 0x0400012A +_081D3684: .4byte 0x0000CCD0 +_081D3688: .4byte 0x04000120 +_081D368C: .4byte 0x0000FFFF +_081D3690: + cmp r0, r5 + beq _081D369A + adds r0, r4, #1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_081D369A: + adds r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #3 + bls _081D366C + cmp r2, #2 + beq _081D36AA + b _081D37AA +_081D36AA: + cmp r4, #0 + beq _081D36B0 + b _081D37AA +_081D36B0: + strb r2, [r3, #1] + b _081D37AA +_081D36B4: + ldr r0, _081D36F0 + ldr r4, [r0] + ldr r0, [r2, #0xc] + cmp r0, #0 + bne _081D36CA + ldrb r0, [r2] + cmp r0, #0 + bne _081D36CA + lsrs r0, r4, #2 + adds r0, #1 + str r0, [r2, #0x10] +_081D36CA: + ldrb r0, [r3] + cmp r0, #1 + bne _081D3700 + ldr r1, [r3, #0xc] + ldr r0, [r3, #0x10] + cmp r1, r0 + bge _081D36F4 + ldr r2, _081D36F0 + ldr r0, [r3, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2] + ldr r0, [r3, #0x14] + ldr r1, [r1] + adds r0, r0, r1 + str r0, [r3, #0x14] + b _081D373A + .align 2, 0 +_081D36F0: .4byte 0x04000120 +_081D36F4: + ldr r1, _081D36FC + ldr r0, [r3, #0x14] + b _081D3738 + .align 2, 0 +_081D36FC: .4byte 0x04000120 +_081D3700: + ldr r1, [r3, #0xc] + cmp r1, #0 + ble _081D3720 + ldr r0, [r3, #0x10] + adds r0, #1 + cmp r1, r0 + bge _081D3720 + ldr r0, [r3, #8] + lsls r1, r1, #2 + adds r1, r1, r0 + subs r1, #4 + str r4, [r1] + ldr r0, [r3, #0x14] + adds r0, r0, r4 + str r0, [r3, #0x14] + b _081D3734 +_081D3720: + ldr r0, [r3, #0xc] + cmp r0, #0 + beq _081D3734 + ldr r0, [r3, #0x14] + cmp r0, r4 + bne _081D3730 + movs r0, #1 + b _081D3732 +_081D3730: + movs r0, #2 +_081D3732: + strb r0, [r3, #3] +_081D3734: + ldr r1, _081D375C + movs r0, #0 +_081D3738: + str r0, [r1] +_081D373A: + ldr r1, [r3, #0xc] + adds r1, #1 + str r1, [r3, #0xc] + ldr r0, [r3, #0x10] + adds r0, #2 + cmp r1, r0 + bge _081D376A + ldrb r0, [r3] + cmp r0, #0 + beq _081D3764 + ldr r0, _081D3760 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] + b _081D37AA + .align 2, 0 +_081D375C: .4byte gUnknown_30012E0 +_081D3760: .4byte 0x0400010E +_081D3764: + bl sub_081D37BC + b _081D37AA +_081D376A: + movs r0, #0 + movs r1, #4 + strb r1, [r3, #1] + ldr r1, _081D3778 + strh r0, [r1] + b _081D37AA + .align 2, 0 +_081D3778: .4byte gUnknown_30012DE +_081D377C: + ldrb r3, [r2] + cmp r3, #0 + bne _081D3788 + ldr r1, _081D37B4 + ldrb r0, [r2, #3] + strh r0, [r1] +_081D3788: + ldr r0, _081D37B8 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, #4] + mov r0, sp + ldrh r1, [r0, #2] + subs r0, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _081D37AA + cmp r3, #1 + bne _081D37A6 + strb r1, [r2, #3] +_081D37A6: + movs r0, #6 + strb r0, [r2, #1] +_081D37AA: + add sp, #8 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D37B4: .4byte 0x0400012A +_081D37B8: .4byte 0x04000120 + thumb_func_end sub_081D362C + + thumb_func_start sub_081D37BC +sub_081D37BC: @ 0x081D37BC + ldr r0, _081D37C8 + ldrh r1, [r0] + movs r2, #0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_081D37C8: .4byte 0x04000128 + thumb_func_end sub_081D37BC + + thumb_func_start sub_081D37CC +sub_081D37CC: @ 0x081D37CC + ldr r2, _081D37E0 + ldrh r1, [r2] + ldr r0, _081D37E4 + ands r0, r1 + strh r0, [r2] + ldr r1, _081D37E8 + ldr r2, _081D37EC + adds r0, r2, #0 + strh r0, [r1] + bx lr + .align 2, 0 +_081D37E0: .4byte 0x0400010E +_081D37E4: .4byte 0x0000FF7F +_081D37E8: .4byte 0x0400010C +_081D37EC: .4byte 0x0000FDA7 + thumb_func_end sub_081D37CC + + thumb_func_start sub_081D37F0 +sub_081D37F0: @ 0x081D37F0 + push {r4, lr} + ldr r0, _081D3810 + ldrh r0, [r0] + ldr r2, _081D3814 + adds r1, r2, #0 + eors r1, r0 + ldr r4, _081D3818 + ldr r3, _081D381C + 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 +_081D3810: .4byte 0x04000130 +_081D3814: .4byte 0x000003FF +_081D3818: .4byte gUnknown_30012DA +_081D381C: .4byte gUnknown_30012D8 + thumb_func_end sub_081D37F0 + + thumb_func_start sub_081D3820 +sub_081D3820: @ 0x081D3820 + ldr r1, _081D384C + ldr r0, _081D3850 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081D3854 + ldr r0, _081D3858 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081D385C + ldr r0, _081D3860 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081D3864 + ldr r0, _081D3868 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _081D386C + ldr r0, _081D3870 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_081D384C: .4byte gUnknown_30012E4 +_081D3850: .4byte 0x04000208 +_081D3854: .4byte gUnknown_30012E6 +_081D3858: .4byte 0x04000200 +_081D385C: .4byte gUnknown_30012E8 +_081D3860: .4byte 0x0400010E +_081D3864: .4byte gUnknown_30012EA +_081D3868: .4byte 0x04000128 +_081D386C: .4byte gUnknown_30012EC +_081D3870: .4byte 0x04000134 + thumb_func_end sub_081D3820 + + thumb_func_start sub_081D3874 +sub_081D3874: @ 0x081D3874 + ldr r1, _081D38A0 + ldr r0, _081D38A4 + ldrh r0, [r0] + strh r0, [r1] + subs r1, #8 + ldr r0, _081D38A8 + ldrh r0, [r0] + strh r0, [r1] + subs r1, #0xf2 + ldr r0, _081D38AC + ldrh r0, [r0] + strh r0, [r1] + adds r1, #0x1a + ldr r0, _081D38B0 + ldrh r0, [r0] + strh r0, [r1] + adds r1, #0xc + ldr r0, _081D38B4 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_081D38A0: .4byte 0x04000208 +_081D38A4: .4byte gUnknown_30012E4 +_081D38A8: .4byte gUnknown_30012E6 +_081D38AC: .4byte gUnknown_30012E8 +_081D38B0: .4byte gUnknown_30012EA +_081D38B4: .4byte gUnknown_30012EC + thumb_func_end sub_081D3874 + + thumb_func_start sub_081D38B8 +sub_081D38B8: @ 0x081D38B8 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + ldr r1, _081D38D0 + ldr r2, _081D38D4 + mov r0, sp + bl CpuSet + add sp, #4 + pop {r0} + bx r0 + .align 2, 0 +_081D38D0: .4byte gUnknown_30012C0 +_081D38D4: .4byte 0x05000006 + thumb_func_end sub_081D38B8 + + thumb_func_start sub_081D38D8 +sub_081D38D8: @ 0x081D38D8 + push {lr} + sub sp, #4 + ldr r0, _081D38F8 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r2, [r0, #4] + movs r0, #1 + mov r3, sp + bl sub_0808CEB8 + mov r0, sp + ldrb r0, [r0] + add sp, #4 + pop {r1} + bx r1 + .align 2, 0 +_081D38F8: .4byte gUnknown_3005AEC + thumb_func_end sub_081D38D8 + + thumb_func_start sub_081D38FC +sub_081D38FC: @ 0x081D38FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + bl sub_081D38D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r2, _081D39A0 + adds r5, r1, r2 + ldr r4, _081D39A4 + ldr r3, _081D39A8 + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x14] + ldrh r1, [r5, #0x10] + subs r0, r0, r1 + strh r0, [r4] + ldr r4, _081D39AC + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r0, [r0, #0x16] + ldrh r1, [r5, #0x12] + subs r0, r0, r1 + strh r0, [r4] + movs r0, #0 + mov r8, r0 + ldr r2, _081D39B0 + movs r1, #0 +_081D394A: + mov r3, r8 + adds r0, r3, r2 + strb r1, [r0] + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #3 + bls _081D394A + ldr r2, _081D39A0 + ldr r0, _081D39A8 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, r0, r2 + movs r4, #0x14 + ldrsh r1, [r2, r4] + movs r6, #0x10 + ldrsh r0, [r2, r6] + cmp r1, r0 + bne _081D3984 + movs r0, #0x16 + ldrsh r1, [r2, r0] + movs r3, #0x12 + ldrsh r0, [r2, r3] + cmp r1, r0 + beq _081D39D6 +_081D3984: + ldr r0, _081D39B4 + bl sub_0809CF6C + lsls r0, r0, #0x10 + movs r1, #0xe0 + lsls r1, r1, #0xb + ands r1, r0 + cmp r1, #0 + bne _081D39B8 + ldrb r1, [r5, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + b _081D39BE + .align 2, 0 +_081D39A0: .4byte gUnknown_2036FF0 +_081D39A4: .4byte gUnknown_30012F0 +_081D39A8: .4byte gUnknown_2037230 +_081D39AC: .4byte gUnknown_30012F2 +_081D39B0: .4byte gUnknown_30012F4 +_081D39B4: .4byte 0x0000403A +_081D39B8: + ldrb r0, [r5, #1] + movs r1, #0x20 + orrs r0, r1 +_081D39BE: + strb r0, [r5, #1] + ldr r0, _081D39DC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #9 + bl __umodsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081D39E0 +_081D39D6: + movs r0, #0 + b _081D3E96 + .align 2, 0 +_081D39DC: .4byte 0x0000403A +_081D39E0: + movs r4, #0 + mov r8, r4 + ldr r6, _081D3A30 + mov sl, r6 +_081D39E8: + ldr r3, _081D3A34 + ldrb r1, [r3, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, sl + adds r4, r0, r1 + mov r2, r8 + lsls r1, r2, #2 + ldr r6, _081D3A38 + adds r0, r1, r6 + movs r6, #0x14 + ldrsh r2, [r4, r6] + movs r6, #0 + ldrsh r0, [r0, r6] + ldr r6, _081D3A30 + mov sb, r6 + mov ip, r3 + adds r7, r1, #0 + cmp r2, r0 + beq _081D3A14 + b _081D3B1E +_081D3A14: + movs r3, #0 + ldr r1, _081D3A3C + adds r0, r7, r1 + movs r2, #0x16 + ldrsh r1, [r4, r2] + movs r4, #0 + ldrsh r2, [r0, r4] + cmp r1, r2 + bge _081D3A40 + movs r6, #0x12 + ldrsh r0, [r5, r6] + cmp r0, r2 + bgt _081D3A4A + b _081D3B1E + .align 2, 0 +_081D3A30: .4byte gUnknown_2036FF0 +_081D3A34: .4byte gUnknown_2037230 +_081D3A38: .4byte gUnknown_85FAF28 +_081D3A3C: .4byte gUnknown_85FAF2A +_081D3A40: + movs r1, #0x12 + ldrsh r0, [r5, r1] + cmp r0, r2 + blt _081D3A4A + movs r3, #1 +_081D3A4A: + cmp r3, #0 + bne _081D3B1E + ldr r0, _081D3A8C + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + ble _081D3A90 + movs r3, #0x10 + ldrsh r2, [r5, r3] + adds r2, #1 + mov r4, ip + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r6, #0x14 + ldrsh r0, [r0, r6] + cmp r2, r0 + bne _081D3AC6 + ldrh r0, [r5, #0x10] + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r5, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3AC6 +_081D3A88: + movs r0, #4 + b _081D3E96 + .align 2, 0 +_081D3A8C: .4byte gUnknown_30012F0 +_081D3A90: + cmp r0, #0 + bge _081D3AC6 + movs r3, #0x10 + ldrsh r2, [r5, r3] + subs r2, #1 + mov r4, ip + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r6, #0x14 + ldrsh r0, [r0, r6] + cmp r2, r0 + bne _081D3AC6 + ldrh r0, [r5, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r5, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3AC6 + b _081D3C2A +_081D3AC6: + ldr r0, _081D3B00 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + movs r3, #0x10 + ldrsh r1, [r5, r3] + movs r4, #0x14 + ldrsh r0, [r0, r4] + cmp r1, r0 + bne _081D3B1E + ldr r0, _081D3B04 + movs r6, #0 + ldrsh r0, [r0, r6] + cmp r0, #0 + ble _081D3B08 + adds r0, r1, #0 + ldrh r1, [r5, #0x12] + subs r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3B1E +_081D3AFC: + movs r0, #2 + b _081D3E96 + .align 2, 0 +_081D3B00: .4byte gUnknown_2037230 +_081D3B04: .4byte gUnknown_30012F2 +_081D3B08: + movs r2, #0x10 + ldrsh r0, [r5, r2] + ldrh r1, [r5, #0x12] + adds r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D3BB8 +_081D3B1E: + ldr r2, _081D3B60 + ldrb r1, [r2, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r3, sl + adds r4, r0, r3 + ldr r6, _081D3B64 + ldr r1, _081D3B68 + adds r0, r7, r1 + movs r3, #0x16 + ldrsh r1, [r4, r3] + movs r3, #0 + ldrsh r0, [r0, r3] + ldr r3, _081D3B6C + mov sb, r3 + mov ip, r2 + cmp r1, r0 + beq _081D3B46 + b _081D3C50 +_081D3B46: + movs r3, #0 + adds r0, r7, r6 + movs r6, #0x14 + ldrsh r1, [r4, r6] + movs r4, #0 + ldrsh r2, [r0, r4] + cmp r1, r2 + bge _081D3B70 + movs r6, #0x10 + ldrsh r0, [r5, r6] + cmp r0, r2 + bgt _081D3B7A + b _081D3C50 + .align 2, 0 +_081D3B60: .4byte gUnknown_2037230 +_081D3B64: .4byte gUnknown_85FAF28 +_081D3B68: .4byte gUnknown_85FAF2A +_081D3B6C: .4byte gUnknown_2036FF0 +_081D3B70: + movs r1, #0x10 + ldrsh r0, [r5, r1] + cmp r0, r2 + blt _081D3B7A + movs r3, #1 +_081D3B7A: + cmp r3, #0 + bne _081D3C50 + ldr r0, _081D3BBC + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + ble _081D3BC0 + movs r3, #0x12 + ldrsh r2, [r5, r3] + adds r2, #1 + mov r4, ip + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r6, #0x16 + ldrsh r0, [r0, r6] + cmp r2, r0 + bne _081D3BF6 + movs r1, #0x10 + ldrsh r0, [r5, r1] + ldrh r1, [r5, #0x12] + adds r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3BF6 +_081D3BB8: + movs r0, #1 + b _081D3E96 + .align 2, 0 +_081D3BBC: .4byte gUnknown_30012F2 +_081D3BC0: + cmp r0, #0 + bge _081D3BF6 + movs r3, #0x12 + ldrsh r2, [r5, r3] + subs r2, #1 + mov r4, ip + ldrb r1, [r4, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sb + movs r6, #0x16 + ldrsh r0, [r0, r6] + cmp r2, r0 + bne _081D3BF6 + movs r1, #0x10 + ldrsh r0, [r5, r1] + ldrh r1, [r5, #0x12] + subs r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3BF6 + b _081D3AFC +_081D3BF6: + ldr r0, _081D3C30 + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, sl + movs r2, #0x12 + ldrsh r1, [r5, r2] + movs r3, #0x16 + ldrsh r0, [r0, r3] + cmp r1, r0 + bne _081D3C50 + ldr r0, _081D3C34 + movs r4, #0 + ldrsh r0, [r0, r4] + cmp r0, #0 + ble _081D3C38 + ldrh r0, [r5, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3C50 +_081D3C2A: + movs r0, #3 + b _081D3E96 + .align 2, 0 +_081D3C30: .4byte gUnknown_2037230 +_081D3C34: .4byte gUnknown_30012F0 +_081D3C38: + ldrh r0, [r5, #0x10] + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r5, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3C50 + b _081D3A88 +_081D3C50: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #3 + bhi _081D3C60 + b _081D39E8 +_081D3C60: + adds r0, r5, #0 + movs r1, #0 + bl sub_081D4294 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3C9C + adds r0, r5, #0 + movs r1, #1 + bl sub_081D42D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3C84 + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3C84: + adds r0, r5, #0 + movs r1, #1 + bl sub_081D4360 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D3C94 + b _081D3AFC +_081D3C94: + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3C9C: + adds r0, r5, #0 + movs r1, #0 + bl sub_081D431C + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3CD8 + adds r0, r5, #0 + movs r1, #1 + bl sub_081D42D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3CC0 + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3CC0: + adds r0, r5, #0 + movs r1, #1 + bl sub_081D4360 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D3CD0 + b _081D3BB8 +_081D3CD0: + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3CD8: + adds r0, r5, #0 + movs r1, #0 + bl sub_081D42D8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3D14 + adds r0, r5, #0 + movs r1, #1 + bl sub_081D4294 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3CFC + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3CFC: + adds r0, r5, #0 + movs r1, #1 + bl sub_081D431C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D3D0C + b _081D3A88 +_081D3D0C: + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3D14: + adds r0, r5, #0 + movs r1, #0 + bl sub_081D4360 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3D50 + adds r0, r5, #0 + movs r1, #1 + bl sub_081D4294 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3D38 + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3D38: + adds r0, r5, #0 + movs r1, #1 + bl sub_081D431C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D3D48 + b _081D3C2A +_081D3D48: + movs r0, #2 + bl sub_081D43A4 + b _081D3E92 +_081D3D50: + ldr r0, _081D3EA4 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + bne _081D3DEE + ldr r2, _081D3EA8 + ldr r0, _081D3EAC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r4, #0x12 + ldrsh r1, [r0, r4] + ldrh r2, [r5, #0x12] + movs r6, #0x12 + ldrsh r0, [r5, r6] + cmp r1, r0 + ble _081D3D8C + movs r1, #0x10 + ldrsh r0, [r5, r1] + subs r1, r2, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3D8C + b _081D3AFC +_081D3D8C: + ldr r2, _081D3EA8 + ldr r0, _081D3EAC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0x12 + ldrsh r1, [r0, r2] + ldrh r2, [r5, #0x12] + movs r3, #0x12 + ldrsh r0, [r5, r3] + cmp r1, r0 + bge _081D3DBE + movs r4, #0x10 + ldrsh r0, [r5, r4] + adds r1, r2, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3DBE + b _081D3BB8 +_081D3DBE: + movs r6, #0x10 + ldrsh r0, [r5, r6] + ldrh r1, [r5, #0x12] + subs r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3DD6 + b _081D3AFC +_081D3DD6: + movs r1, #0x10 + ldrsh r0, [r5, r1] + ldrh r1, [r5, #0x12] + adds r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3DEE + b _081D3BB8 +_081D3DEE: + ldr r0, _081D3EB0 + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _081D3E8C + ldr r2, _081D3EA8 + ldr r0, _081D3EAC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0x10 + ldrsh r1, [r0, r3] + ldrh r2, [r5, #0x10] + movs r4, #0x10 + ldrsh r0, [r5, r4] + cmp r1, r0 + ble _081D3E2A + subs r0, r2, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x12 + ldrsh r1, [r5, r6] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3E2A + b _081D3C2A +_081D3E2A: + ldr r2, _081D3EA8 + ldr r0, _081D3EAC + ldrb r1, [r0, #5] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r2, #0x10 + ldrsh r1, [r0, r2] + ldrh r2, [r5, #0x10] + movs r3, #0x10 + ldrsh r0, [r5, r3] + cmp r1, r0 + bge _081D3E5C + adds r0, r2, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0x12 + ldrsh r1, [r5, r4] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3E5C + b _081D3A88 +_081D3E5C: + ldrh r0, [r5, #0x10] + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x12 + ldrsh r1, [r5, r6] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3E74 + b _081D3A88 +_081D3E74: + ldrh r0, [r5, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r5, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D3E8C + b _081D3C2A +_081D3E8C: + movs r0, #0 + bl sub_081D3F10 +_081D3E92: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_081D3E96: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081D3EA4: .4byte gUnknown_30012F2 +_081D3EA8: .4byte gUnknown_2036FF0 +_081D3EAC: .4byte gUnknown_2037230 +_081D3EB0: .4byte gUnknown_30012F0 + thumb_func_end sub_081D38FC + + thumb_func_start sub_081D3EB4 +sub_081D3EB4: @ 0x081D3EB4 + push {r4, lr} + lsls r0, r0, #0x10 + lsls r1, r1, #0x10 + lsrs r4, r1, #0x10 + ldr r3, _081D3EE8 + ldr r1, _081D3EEC + ldrb r2, [r1, #5] + lsls r1, r2, #3 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r2, r1, r3 + movs r3, #0x10 + ldrsh r1, [r2, r3] + lsrs r3, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _081D3EF0 + movs r0, #0x12 + ldrsh r1, [r2, r0] + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bne _081D3EF0 + movs r0, #0 + b _081D3F08 + .align 2, 0 +_081D3EE8: .4byte gUnknown_2036FF0 +_081D3EEC: .4byte gUnknown_2037230 +_081D3EF0: + lsls r0, r3, #0x10 + asrs r0, r0, #0x10 + lsls r1, r4, #0x10 + asrs r1, r1, #0x10 + bl sub_08087C20 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080887C8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 +_081D3F08: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D3EB4 + + thumb_func_start sub_081D3F10 +sub_081D3F10: @ 0x081D3F10 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r5, #0 + bl sub_081D38D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081D3FEC + adds r4, r1, r0 + movs r1, #0 + ldr r3, _081D3FF0 + movs r2, #0 +_081D3F30: + adds r0, r1, r3 + strb r2, [r0] + adds r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #3 + bls _081D3F30 + movs r1, #0x10 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x12] + subs r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081D3F68 + cmp r6, #2 + beq _081D3F68 + ldr r0, _081D3FF0 + adds r0, r5, r0 + movs r1, #2 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081D3F68: + ldrh r0, [r4, #0x10] + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081D3F92 + cmp r6, #4 + beq _081D3F92 + ldr r0, _081D3FF0 + adds r0, r5, r0 + movs r1, #4 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081D3F92: + movs r1, #0x10 + ldrsh r0, [r4, r1] + ldrh r1, [r4, #0x12] + adds r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #1 + bne _081D3FBA + cmp r6, #1 + beq _081D3FBA + ldr r0, _081D3FF0 + adds r0, r5, r0 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081D3FBA: + ldrh r0, [r4, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x12 + ldrsh r1, [r4, r2] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081D3FE4 + cmp r6, #3 + beq _081D3FE4 + ldr r0, _081D3FF0 + adds r0, r5, r0 + movs r1, #3 + strb r1, [r0] + adds r0, r5, #1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 +_081D3FE4: + cmp r5, #1 + bhi _081D3FF4 + ldr r0, _081D3FF0 + b _081D4008 + .align 2, 0 +_081D3FEC: .4byte gUnknown_2036FF0 +_081D3FF0: .4byte gUnknown_30012F4 +_081D3FF4: + ldr r4, _081D4010 + ldr r0, _081D4014 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + bl __modsi3 + adds r0, r0, r4 +_081D4008: + ldrb r0, [r0] + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D4010: .4byte gUnknown_30012F4 +_081D4014: .4byte 0x0000403A + thumb_func_end sub_081D3F10 + + thumb_func_start sub_081D4018 +sub_081D4018: @ 0x081D4018 + push {r4, lr} + ldr r4, _081D4048 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081D404C + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _081D4050 + cmp r1, r0 + bne _081D4060 + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _081D4054 + cmp r2, r0 + bls _081D4058 + adds r0, r4, #0 + movs r1, #0 + bl sub_0809CF88 + b _081D4060 + .align 2, 0 +_081D4048: .4byte 0x0000403A +_081D404C: .4byte gUnknown_3005AEC +_081D4050: .4byte 0x0000391A +_081D4054: .4byte 0x0000270E +_081D4058: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0809CF88 +_081D4060: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D4018 + + thumb_func_start sub_081D4068 +sub_081D4068: @ 0x081D4068 + push {lr} + adds r2, r0, #0 + ldr r0, _081D4084 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _081D4088 + cmp r1, r0 + bne _081D408C + ldrb r0, [r2, #5] + cmp r0, #0xe5 + bne _081D408C + movs r0, #1 + b _081D408E + .align 2, 0 +_081D4084: .4byte gUnknown_3005AEC +_081D4088: .4byte 0x0000391A +_081D408C: + movs r0, #0 +_081D408E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D4068 + + thumb_func_start sub_081D4094 +sub_081D4094: @ 0x081D4094 + push {lr} + ldr r0, _081D40C4 + ldr r0, [r0] + ldrh r1, [r0, #4] + ldr r0, _081D40C8 + cmp r1, r0 + bne _081D40D0 + movs r0, #0xe5 + lsls r0, r0, #1 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081D40D0 + ldr r0, _081D40CC + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _081D40D0 + movs r0, #1 + b _081D40D2 + .align 2, 0 +_081D40C4: .4byte gUnknown_3005AEC +_081D40C8: .4byte 0x0000391A +_081D40CC: .4byte 0x000002CE +_081D40D0: + movs r0, #0 +_081D40D2: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D4094 + + thumb_func_start sub_081D40D8 +sub_081D40D8: @ 0x081D40D8 + push {r4, lr} + ldr r4, _081D4100 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + ldr r1, _081D4104 + cmp r0, r1 + beq _081D4108 + adds r0, r4, #0 + bl sub_0809CF6C + lsls r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #0xa + ands r1, r0 + cmp r1, #0 + bne _081D4108 + movs r0, #1 + b _081D410A + .align 2, 0 +_081D4100: .4byte 0x0000403A +_081D4104: .4byte 0xFFFF0000 +_081D4108: + movs r0, #0 +_081D410A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D40D8 + + thumb_func_start sub_081D4110 +sub_081D4110: @ 0x081D4110 + push {r4, r5, r6, lr} + sub sp, #4 + bl sub_081D38D8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _081D416C + adds r5, r1, r0 + ldrb r1, [r5, #1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #1] + ldr r0, _081D4170 + ldrh r4, [r0] + cmp r4, #1 + bne _081D4178 + ldrb r0, [r5, #3] + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #3] + ldr r3, _081D4174 + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x42 + ldrb r2, [r0] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + adds r0, #0x43 + strb r4, [r0] + b _081D4244 + .align 2, 0 +_081D416C: .4byte gUnknown_2036FF0 +_081D4170: .4byte gUnknown_2037280 +_081D4174: .4byte gUnknown_20205AC +_081D4178: + ldr r0, _081D424C + ldr r1, _081D4250 + bl sub_0809CF88 + ldrb r0, [r5, #3] + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #3] + ldr r6, _081D4254 + ldrb r1, [r5, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x42 + ldrb r2, [r0] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0] + ldr r0, _081D4258 + ldrh r0, [r0] + cmp r0, #2 + beq _081D41BA + ldrb r0, [r5, #4] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r1, #0x43 + movs r0, #1 + strb r0, [r1] +_081D41BA: + ldr r4, _081D425C + adds r0, r4, #0 + bl sub_0800845C + ldrh r0, [r4, #4] + bl sub_0800851C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080AB714 + ldrh r1, [r5, #0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r5, #0x12] + mov r4, sp + adds r4, #2 + strh r0, [r4] + mov r0, sp + adds r1, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_08092A50 + ldr r0, _081D4260 + ldr r0, [r0, #0x3c] + mov r1, sp + movs r2, #0 + ldrsh r1, [r1, r2] + movs r3, #0 + ldrsh r2, [r4, r3] + ldrb r4, [r5, #4] + lsls r3, r4, #4 + adds r3, r3, r4 + lsls r3, r3, #2 + adds r3, r3, r6 + adds r3, #0x43 + ldrb r3, [r3] + subs r3, #1 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + bl sub_08006B60 + ldr r1, _081D4264 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + beq _081D4244 + ldrb r0, [r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r6 + adds r3, r1, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r2, #2 + orrs r0, r2 + strb r0, [r3] + ldrb r2, [r1, #5] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strb r0, [r1, #5] + ldr r0, _081D4268 + str r0, [r1, #0x1c] +_081D4244: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D424C: .4byte 0x0000403A +_081D4250: .4byte 0x0000FFFF +_081D4254: .4byte gUnknown_20205AC +_081D4258: .4byte gUnknown_2037294 +_081D425C: .4byte gUnknown_84E4E1C +_081D4260: .4byte gUnknown_84DDE4C +_081D4264: .4byte gUnknown_203CC1C +_081D4268: .4byte sub_08007140 + thumb_func_end sub_081D4110 + + thumb_func_start sub_081D426C +sub_081D426C: @ 0x081D426C + push {lr} + ldr r1, _081D428C + ldrb r0, [r1] + cmp r0, #0x40 + beq _081D4286 + adds r1, r0, #0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081D4290 + adds r0, r0, r1 + bl sub_08006E00 +_081D4286: + pop {r0} + bx r0 + .align 2, 0 +_081D428C: .4byte gUnknown_203CC1C +_081D4290: .4byte gUnknown_20205AC + thumb_func_end sub_081D426C + + thumb_func_start sub_081D4294 +sub_081D4294: @ 0x081D4294 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _081D42C8 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _081D42D0 + movs r1, #0x10 + ldrsh r0, [r2, r1] + ldrh r1, [r2, #0x12] + subs r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D42D0 + ldr r0, _081D42CC + adds r0, r4, r0 + movs r1, #2 + strb r1, [r0] + movs r0, #1 + b _081D42D2 + .align 2, 0 +_081D42C8: .4byte gUnknown_30012F2 +_081D42CC: .4byte gUnknown_30012F4 +_081D42D0: + movs r0, #0 +_081D42D2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D4294 + + thumb_func_start sub_081D42D8 +sub_081D42D8: @ 0x081D42D8 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _081D430C + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _081D4314 + ldrh r0, [r2, #0x10] + adds r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x12 + ldrsh r1, [r2, r3] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4314 + ldr r0, _081D4310 + adds r0, r4, r0 + movs r1, #4 + strb r1, [r0] + movs r0, #1 + b _081D4316 + .align 2, 0 +_081D430C: .4byte gUnknown_30012F0 +_081D4310: .4byte gUnknown_30012F4 +_081D4314: + movs r0, #0 +_081D4316: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D42D8 + + thumb_func_start sub_081D431C +sub_081D431C: @ 0x081D431C + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _081D4350 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _081D4358 + movs r1, #0x10 + ldrsh r0, [r2, r1] + ldrh r1, [r2, #0x12] + adds r1, #1 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4358 + ldr r0, _081D4354 + adds r0, r4, r0 + movs r1, #1 + strb r1, [r0] + movs r0, #1 + b _081D435A + .align 2, 0 +_081D4350: .4byte gUnknown_30012F2 +_081D4354: .4byte gUnknown_30012F4 +_081D4358: + movs r0, #0 +_081D435A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D431C + + thumb_func_start sub_081D4360 +sub_081D4360: @ 0x081D4360 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #0x18 + lsrs r4, r1, #0x18 + ldr r0, _081D4394 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + ble _081D439C + ldrh r0, [r2, #0x10] + subs r0, #1 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x12 + ldrsh r1, [r2, r3] + bl sub_081D3EB4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D439C + ldr r0, _081D4398 + adds r0, r4, r0 + movs r1, #3 + strb r1, [r0] + movs r0, #1 + b _081D439E + .align 2, 0 +_081D4394: .4byte gUnknown_30012F0 +_081D4398: .4byte gUnknown_30012F4 +_081D439C: + movs r0, #0 +_081D439E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D4360 + + thumb_func_start sub_081D43A4 +sub_081D43A4: @ 0x081D43A4 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r5, _081D43C8 + ldr r0, _081D43CC + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r4, #0 + bl __modsi3 + adds r0, r0, r5 + ldrb r0, [r0] + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D43C8: .4byte gUnknown_30012F4 +_081D43CC: .4byte 0x0000403A + thumb_func_end sub_081D43A4 + + thumb_func_start sub_081D43D0 +sub_081D43D0: @ 0x081D43D0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + mov r1, sp + ldr r4, _081D4424 + ldrh r0, [r4] + strh r0, [r1] + movs r0, #0 + strh r0, [r4] + ldr r1, _081D4428 + ldr r0, _081D442C + str r0, [r1, #4] + ldr r0, _081D4430 + str r0, [r1, #8] + bl sub_081D3820 + bl sub_081D38B8 + ldr r2, _081D4434 + ldrh r0, [r2] + movs r1, #4 + orrs r0, r1 + strh r0, [r2] + mov r0, sp + ldrh r0, [r0] + strh r0, [r4] + movs r0, #0 + strh r0, [r5] + str r6, [r5, #4] + mov r0, r8 + str r0, [r5, #8] + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D4424: .4byte 0x04000208 +_081D4428: .4byte gUnknown_30027B0 +_081D442C: .4byte sub_081D362C +_081D4430: .4byte sub_081D361C +_081D4434: .4byte 0x04000200 + thumb_func_end sub_081D43D0 + + thumb_func_start sub_081D4438 +sub_081D4438: @ 0x081D4438 + push {r4, lr} + sub sp, #4 + mov r1, sp + ldr r4, _081D4464 + ldrh r0, [r4] + strh r0, [r1] + movs r0, #0 + strh r0, [r4] + bl sub_081D38B8 + bl sub_081D3874 + bl sub_08000714 + mov r0, sp + ldrh r0, [r0] + strh r0, [r4] + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4464: .4byte 0x04000208 + thumb_func_end sub_081D4438 + + thumb_func_start sub_081D4468 +sub_081D4468: @ 0x081D4468 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + ldr r1, [r4, #4] + ldr r2, [r4, #8] + movs r0, #1 + movs r3, #0 + bl sub_081D33F0 + adds r1, r0, #0 + strh r1, [r4] + movs r0, #0x13 + ands r0, r1 + cmp r0, #0x10 + bne _081D4488 + movs r5, #1 +_081D4488: + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081D4492 + movs r5, #2 +_081D4492: + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081D449C + movs r5, #3 +_081D449C: + ldr r1, _081D44AC + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D44AC: .4byte gUnknown_30031E4 + thumb_func_end sub_081D4468 + + thumb_func_start sub_081D44B0 +sub_081D44B0: @ 0x081D44B0 + push {lr} + ldr r0, _081D44D4 + movs r2, #0x80 + lsls r2, r2, #6 + movs r1, #0 + bl memset + ldr r1, _081D44D8 + ldr r2, _081D44DC + adds r0, r2, #0 + strh r0, [r1] + bl sub_080092D0 + movs r0, #1 + bl sub_0800AE0C + pop {r0} + bx r0 + .align 2, 0 +_081D44D4: .4byte gUnknown_201C000 +_081D44D8: .4byte gUnknown_202267E +_081D44DC: .4byte 0x00005503 + thumb_func_end sub_081D44B0 + + thumb_func_start sub_081D44E0 +sub_081D44E0: @ 0x081D44E0 + push {lr} + sub sp, #0xc + mov r1, sp + ldr r2, _081D4524 + ldrh r0, [r2] + strh r0, [r1] + movs r0, #0 + strh r0, [r2] + ldr r0, _081D4528 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, sp + ldrh r0, [r0] + strh r0, [r2] + add r2, sp, #4 + ldrh r1, [r2] + ldr r0, _081D452C + cmp r1, r0 + bne _081D4538 + ldrh r1, [r2, #2] + ldr r0, _081D4530 + cmp r1, r0 + bne _081D4538 + ldrh r1, [r2, #4] + ldr r0, _081D4534 + cmp r1, r0 + bne _081D4538 + ldrh r0, [r2, #6] + cmp r0, r1 + bne _081D4538 + movs r0, #1 + b _081D453A + .align 2, 0 +_081D4524: .4byte 0x04000208 +_081D4528: .4byte gUnknown_3003214 +_081D452C: .4byte 0x0000B9A0 +_081D4530: .4byte 0x0000CCD0 +_081D4534: .4byte 0x0000FFFF +_081D4538: + movs r0, #0 +_081D453A: + add sp, #0xc + pop {r1} + bx r1 + thumb_func_end sub_081D44E0 + + thumb_func_start sub_081D4540 +sub_081D4540: @ 0x081D4540 + push {lr} + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D455C + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081D455C + movs r0, #1 + b _081D455E +_081D455C: + movs r0, #0 +_081D455E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D4540 + + thumb_func_start sub_081D4564 +sub_081D4564: @ 0x081D4564 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4] + subs r0, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _081D4588 + bl sub_0800AE18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4588 + movs r0, #0 + strb r0, [r4] + movs r0, #3 + b _081D468E +_081D4588: + ldrb r0, [r4] + cmp r0, #5 + bls _081D4590 + b _081D468C +_081D4590: + lsls r0, r0, #2 + ldr r1, _081D459C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D459C: .4byte _081D45A0 +_081D45A0: @ jump table + .4byte _081D45B8 @ case 0 + .4byte _081D45D4 @ case 1 + .4byte _081D45EC @ case 2 + .4byte _081D4620 @ case 3 + .4byte _081D466C @ case 4 + .4byte _081D4678 @ case 5 +_081D45B8: + bl sub_0800A780 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4608 + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081D4608 + movs r0, #1 + strb r0, [r4] + b _081D468C +_081D45D4: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #5 + bls _081D468C + movs r0, #0 + strh r0, [r5] + movs r0, #2 + strb r0, [r4] + b _081D468C +_081D45EC: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _081D4608 + movs r0, #0x49 + bl sub_080A306C + bl sub_0800A1E4 + movs r0, #0 + strh r0, [r5] + b _081D4666 +_081D4608: + ldr r0, _081D461C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081D468C + movs r0, #0 + strb r0, [r4] + movs r0, #1 + b _081D468E + .align 2, 0 +_081D461C: .4byte gUnknown_3002360 +_081D4620: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bls _081D4636 + movs r0, #0 + strb r0, [r4] + movs r0, #5 + b _081D468E +_081D4636: + bl sub_0800ADFC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D468C + ldr r0, _081D465C + ldrb r0, [r0] + cmp r0, #0 + beq _081D4666 + bl sub_08009E00 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4660 + movs r0, #0 + strb r0, [r4] + movs r0, #2 + b _081D468E + .align 2, 0 +_081D465C: .4byte gUnknown_30031C4 +_081D4660: + movs r0, #4 + strb r0, [r4] + b _081D468C +_081D4666: + movs r0, #3 + strb r0, [r4] + b _081D468C +_081D466C: + movs r0, #0 + bl sub_0800A7B8 + movs r0, #5 + strb r0, [r4] + b _081D468C +_081D4678: + ldr r0, _081D4688 + ldrb r0, [r0] + cmp r0, #0 + bne _081D468C + strb r0, [r4] + movs r0, #4 + b _081D468E + .align 2, 0 +_081D4688: .4byte gUnknown_30031C4 +_081D468C: + movs r0, #0 +_081D468E: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081D4564 + + thumb_func_start sub_081D4694 +sub_081D4694: @ 0x081D4694 + push {r4, lr} + ldr r0, _081D46D4 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081D46D8 + adds r4, r4, r0 + movs r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #9] + 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, #2] + strh r0, [r4, #4] + strh r0, [r4, #6] + strb r1, [r4, #0xe] + movs r0, #0x40 + bl sub_08000BDC + str r0, [r4, #0x10] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D46D4: .4byte sub_081D4704 +_081D46D8: .4byte gUnknown_3005B68 + thumb_func_end sub_081D4694 + + thumb_func_start sub_081D46DC +sub_081D46DC: @ 0x081D46DC + movs r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_081D46DC + + thumb_func_start sub_081D46E4 +sub_081D46E4: @ 0x081D46E4 + push {lr} + adds r2, r0, #0 + lsls r1, r1, #0x10 + ldrh r0, [r2] + adds r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, r1 + bhi _081D46FA + movs r0, #0 + b _081D4700 +_081D46FA: + movs r0, #0 + strh r0, [r2] + movs r0, #1 +_081D4700: + pop {r1} + bx r1 + thumb_func_end sub_081D46E4 + + thumb_func_start sub_081D4704 +sub_081D4704: @ 0x081D4704 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081D4728 + adds r4, r0, r1 + ldrb r0, [r4, #8] + cmp r0, #0x1a + bls _081D471C + b _081D4B0A +_081D471C: + lsls r0, r0, #2 + ldr r1, _081D472C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D4728: .4byte gUnknown_3005B68 +_081D472C: .4byte _081D4730 +_081D4730: @ jump table + .4byte _081D479C @ case 0 + .4byte _081D47B8 @ case 1 + .4byte _081D47C8 @ case 2 + .4byte _081D47DC @ case 3 + .4byte _081D47EC @ case 4 + .4byte _081D4818 @ case 5 + .4byte _081D4850 @ case 6 + .4byte _081D48CC @ case 7 + .4byte _081D48E8 @ case 8 + .4byte _081D4910 @ case 9 + .4byte _081D492C @ case 10 + .4byte _081D495C @ case 11 + .4byte _081D4972 @ case 12 + .4byte _081D4988 @ case 13 + .4byte _081D49EA @ case 14 + .4byte _081D4A10 @ case 15 + .4byte _081D4A28 @ case 16 + .4byte _081D4A46 @ case 17 + .4byte _081D4A72 @ case 18 + .4byte _081D4A98 @ case 19 + .4byte _081D4AC8 @ case 20 + .4byte _081D4AD4 @ case 21 + .4byte _081D4AE0 @ case 22 + .4byte _081D4AB0 @ case 23 + .4byte _081D4B0A @ case 24 + .4byte _081D4B0A @ case 25 + .4byte _081D4AF8 @ case 26 +_081D479C: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D47B4 + bl sub_080183A4 + cmp r0, #0 + bne _081D47AC + b _081D4B0A +_081D47AC: + movs r0, #1 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D47B4: .4byte gUnknown_85CCEEC +_081D47B8: + bl sub_081D44B0 + adds r0, r4, #0 + bl sub_081D46DC + movs r0, #2 + strb r0, [r4, #8] + b _081D4B0A +_081D47C8: + adds r0, r4, #0 + movs r1, #0xa + bl sub_081D46E4 + cmp r0, #0 + bne _081D47D6 + b _081D4B0A +_081D47D6: + movs r0, #3 + strb r0, [r4, #8] + b _081D4B0A +_081D47DC: + bl sub_081D4540 + cmp r0, #0 + beq _081D47E6 + b _081D497C +_081D47E6: + bl sub_08009384 + b _081D48DC +_081D47EC: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D4810 + bl sub_080183A4 + cmp r0, #0 + bne _081D47FC + b _081D4B0A +_081D47FC: + ldr r0, _081D4814 + bl sub_0801832C + adds r0, r4, #0 + bl sub_081D46DC + movs r0, #5 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4810: .4byte gUnknown_85CCF0B +_081D4814: .4byte gUnknown_85CCF2A +_081D4818: + adds r0, r4, #0 + movs r1, #0x5a + bl sub_081D46E4 + cmp r0, #0 + beq _081D482E + bl sub_081D44B0 + movs r0, #6 + strb r0, [r4, #8] + b _081D4B0A +_081D482E: + ldr r0, _081D484C + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _081D483C + b _081D4B0A +_081D483C: + adds r0, r4, #0 + bl sub_081D46DC + movs r0, #5 + bl sub_080A306C + b _081D49DA + .align 2, 0 +_081D484C: .4byte gUnknown_3002360 +_081D4850: + ldr r0, _081D4870 + ldrh r1, [r0, #0x2e] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _081D4874 + movs r0, #5 + bl sub_080A306C + bl sub_08009384 + adds r0, r4, #0 + bl sub_081D46DC + b _081D49DA + .align 2, 0 +_081D4870: .4byte gUnknown_3002360 +_081D4874: + bl sub_0800A770 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _081D4890 + adds r0, r4, #0 + bl sub_081D46DC + bl sub_08009384 + movs r0, #7 + strb r0, [r4, #8] + b _081D4B0A +_081D4890: + bl sub_081D44E0 + cmp r0, #0 + beq _081D48AE + movs r0, #5 + bl sub_080A306C + bl sub_08009384 + adds r0, r4, #0 + bl sub_081D46DC + movs r0, #8 + strb r0, [r4, #8] + b _081D4B0A +_081D48AE: + adds r0, r4, #0 + movs r1, #0xa + bl sub_081D46E4 + cmp r0, #0 + bne _081D48BC + b _081D4B0A +_081D48BC: + bl sub_08009384 + bl sub_081D44B0 + adds r0, r4, #0 + bl sub_081D46DC + b _081D4B0A +_081D48CC: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D48E4 + bl sub_080183A4 + cmp r0, #0 + bne _081D48DC + b _081D4B0A +_081D48DC: + movs r0, #4 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D48E4: .4byte gUnknown_85CCF72 +_081D48E8: + ldr r0, _081D4900 + bl sub_0801832C + ldr r0, _081D4904 + ldr r1, _081D4908 + ldr r2, _081D490C + subs r1, r1, r2 + bl sub_081D43D0 + movs r0, #9 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4900: .4byte gUnknown_85CCFAD +_081D4904: .4byte gUnknown_3006110 +_081D4908: .4byte gUnknown_8912454 +_081D490C: .4byte gUnknown_890F374 +_081D4910: + ldr r0, _081D4928 + bl sub_081D4468 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D4920 + b _081D4B0A +_081D4920: + movs r0, #0xa + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4928: .4byte gUnknown_3006110 +_081D492C: + ldr r0, _081D4954 + bl sub_081D4438 + ldrb r0, [r4, #0xe] + cmp r0, #3 + bne _081D493A + b _081D4A40 +_081D493A: + cmp r0, #1 + beq _081D4940 + b _081D4AEE +_081D4940: + adds r0, r4, #0 + bl sub_081D46DC + ldr r0, _081D4958 + bl sub_0801832C + movs r0, #0xb + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4954: .4byte gUnknown_3006110 +_081D4958: .4byte gUnknown_85CD036 +_081D495C: + movs r1, #0xd2 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_081D46E4 + cmp r0, #0 + bne _081D496C + b _081D4B0A +_081D496C: + movs r0, #0xc + strb r0, [r4, #8] + b _081D4B0A +_081D4972: + bl sub_081D44B0 + ldr r0, _081D4984 + bl sub_0801832C +_081D497C: + movs r0, #0xd + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4984: .4byte gUnknown_85CCFF2 +_081D4988: + adds r0, r4, #0 + adds r0, #9 + adds r1, r4, #0 + bl sub_081D4564 + cmp r0, #5 + bls _081D4998 + b _081D4B0A +_081D4998: + lsls r0, r0, #2 + ldr r1, _081D49A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D49A4: .4byte _081D49A8 +_081D49A8: @ jump table + .4byte _081D4B0A @ case 0 + .4byte _081D49D0 @ case 1 + .4byte _081D49C0 @ case 2 + .4byte _081D49F4 @ case 3 + .4byte _081D49F4 @ case 4 + .4byte _081D49E0 @ case 5 +_081D49C0: + ldr r0, _081D49CC + bl sub_0801832C + movs r0, #0xe + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D49CC: .4byte gUnknown_85CCFAD +_081D49D0: + movs r0, #5 + bl sub_080A306C + bl sub_08009384 +_081D49DA: + movs r0, #0x17 + strb r0, [r4, #8] + b _081D4B0A +_081D49E0: + bl sub_08009384 + movs r0, #0x15 + strb r0, [r4, #8] + b _081D4B0A +_081D49EA: + bl sub_0800AE18 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D49FA +_081D49F4: + bl sub_08009384 + b _081D4A40 +_081D49FA: + bl sub_0800A114 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D4A06 + b _081D4B0A +_081D4A06: + bl sub_0800A178 + movs r0, #0xf + strb r0, [r4, #8] + b _081D4B0A +_081D4A10: + ldr r0, _081D4A24 + bl sub_081D2F4C + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + bl sub_0800A7B8 + movs r0, #0x10 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4A24: .4byte gUnknown_201C000 +_081D4A28: + ldr r0, _081D4A3C + ldrb r0, [r0] + cmp r0, #0 + bne _081D4B0A + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _081D4A40 + movs r0, #0x11 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4A3C: .4byte gUnknown_30031C4 +_081D4A40: + movs r0, #0x14 + strb r0, [r4, #8] + b _081D4B0A +_081D4A46: + ldr r0, _081D4A64 + bl sub_081D3130 + cmp r0, #0 + beq _081D4A6C + ldr r0, _081D4A68 + bl sub_0801832C + adds r0, r4, #0 + bl sub_081D46DC + movs r0, #0x12 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4A64: .4byte gUnknown_201C000 +_081D4A68: .4byte gUnknown_85CD010 +_081D4A6C: + movs r0, #0x16 + strb r0, [r4, #8] + b _081D4B0A +_081D4A72: + adds r0, r4, #0 + movs r1, #0x78 + bl sub_081D46E4 + cmp r0, #0 + beq _081D4B0A + ldr r0, _081D4A94 + bl sub_0801832C + movs r0, #0xb9 + lsls r0, r0, #1 + bl sub_080A29AC + movs r0, #0x13 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4A94: .4byte gUnknown_85CD01D +_081D4A98: + bl sub_080A29E8 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D4B0A + ldr r0, _081D4AAC + ldrh r1, [r0, #0x2e] + movs r0, #3 + ands r0, r1 + b _081D4ABA + .align 2, 0 +_081D4AAC: .4byte gUnknown_3002360 +_081D4AB0: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D4AC4 + bl sub_080183A4 +_081D4ABA: + cmp r0, #0 + beq _081D4B0A + movs r0, #0x1a + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4AC4: .4byte gUnknown_85CCF81 +_081D4AC8: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D4AD0 + b _081D4AE6 + .align 2, 0 +_081D4AD0: .4byte gUnknown_85CCFB9 +_081D4AD4: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D4ADC + b _081D4AE6 + .align 2, 0 +_081D4ADC: .4byte gUnknown_85CCFD5 +_081D4AE0: + adds r0, r4, #0 + adds r0, #9 + ldr r1, _081D4AF4 +_081D4AE6: + bl sub_080183A4 + cmp r0, #0 + beq _081D4B0A +_081D4AEE: + movs r0, #0 + strb r0, [r4, #8] + b _081D4B0A + .align 2, 0 +_081D4AF4: .4byte gUnknown_85CD043 +_081D4AF8: + ldr r0, [r4, #0x10] + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_080A8964 + ldr r0, _081D4B10 + bl sub_08000540 +_081D4B0A: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D4B10: .4byte sub_08018138 + thumb_func_end sub_081D4704 + + thumb_func_start sub_081D4B14 +sub_081D4B14: @ 0x081D4B14 + push {lr} + bl sub_081D4D0C + ldr r1, _081D4B34 + ldr r0, _081D4B38 + ldrh r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_081D4D64 + pop {r0} + bx r0 + .align 2, 0 +_081D4B34: .4byte gUnknown_85FB91C +_081D4B38: .4byte gUnknown_2037280 + thumb_func_end sub_081D4B14 + + thumb_func_start sub_081D4B3C +sub_081D4B3C: @ 0x081D4B3C + push {r4, lr} + ldr r4, _081D4B70 + ldr r1, [r4] + ldr r3, _081D4B74 + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1] + ldr r1, [r4] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081D4B78 + ldr r0, [r0] + ldr r1, _081D4B7C + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4B70: .4byte gUnknown_3005AF0 +_081D4B74: .4byte 0x00000EF9 +_081D4B78: .4byte gUnknown_3005AEC +_081D4B7C: .4byte 0x00003D68 + thumb_func_end sub_081D4B3C + + thumb_func_start sub_081D4B80 +sub_081D4B80: @ 0x081D4B80 + ldr r0, _081D4B8C + ldrb r0, [r0, #0x12] + adds r0, #0x61 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bx lr + .align 2, 0 +_081D4B8C: .4byte gUnknown_2036FB8 + thumb_func_end sub_081D4B80 + + thumb_func_start sub_081D4B90 +sub_081D4B90: @ 0x081D4B90 + lsls r0, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + ldr r2, _081D4BAC + ldr r1, _081D4BB0 + ldr r1, [r1] + adds r1, #0x10 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, r0, r2 + ldrb r0, [r0] + bx lr + .align 2, 0 +_081D4BAC: .4byte gUnknown_82EFF52 +_081D4BB0: .4byte gUnknown_203CC24 + thumb_func_end sub_081D4B90 + + thumb_func_start sub_081D4BB4 +sub_081D4BB4: @ 0x081D4BB4 + push {r4, lr} + adds r4, r0, #0 + lsls r1, r1, #0x18 + movs r0, #0xff + lsls r0, r0, #0x18 + adds r1, r1, r0 + movs r3, #0 + ldr r0, _081D4BE0 + ldr r0, [r0] + lsrs r1, r1, #0x15 + adds r2, r1, r0 +_081D4BCA: + adds r1, r4, r3 + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r3, #1 + cmp r3, #7 + ble _081D4BCA + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4BE0: .4byte gUnknown_203CC24 + thumb_func_end sub_081D4BB4 + + thumb_func_start sub_081D4BE4 +sub_081D4BE4: @ 0x081D4BE4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081D4D0C + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081D4C28 + ldr r3, [r0] + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + ldrb r2, [r3] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r3, r3, r1 + ldrb r4, [r3, #0x18] + bl sub_081D4D64 + ldr r0, _081D4C2C + adds r4, r4, r0 + ldrb r0, [r4] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D4C28: .4byte gUnknown_203CC20 +_081D4C2C: .4byte gUnknown_82EFF00 + thumb_func_end sub_081D4BE4 + + thumb_func_start sub_081D4C30 +sub_081D4C30: @ 0x081D4C30 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + bl sub_081D4D0C + ldr r4, _081D4CE0 + movs r0, #0x14 + bl sub_08000BDC + str r0, [r4] + movs r6, #0 + ldr r0, _081D4CE4 + mov sl, r0 +_081D4C4E: + movs r5, #0 + lsls r1, r6, #2 + mov r8, r1 + adds r0, r6, #1 + mov sb, r0 + adds r0, r1, r6 + lsls r0, r0, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + mov ip, r0 + lsls r7, r6, #3 +_081D4C64: + ldr r1, _081D4CE0 + ldr r4, [r1] + adds r0, r5, r7 + adds r4, r4, r0 + mov r0, sl + ldr r2, [r0] + mov r1, ip + adds r3, r5, r1 + ldrb r1, [r2] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + lsls r0, r0, #4 + adds r3, r3, r0 + adds r2, #0x10 + adds r2, r2, r3 + ldrb r0, [r2] + strb r0, [r4] + adds r5, #1 + cmp r5, #7 + ble _081D4C64 + ldr r0, _081D4CE0 + ldr r4, [r0] + adds r4, #0x10 + adds r4, r4, r6 + mov r1, sl + ldr r3, [r1] + mov r0, r8 + adds r1, r0, r6 + lsls r1, r1, #4 + adds r1, r1, r6 + lsls r1, r1, #2 + ldrb r2, [r3] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r3, r3, r1 + ldrb r0, [r3, #0x18] + strb r0, [r4] + mov r6, sb + cmp r6, #1 + ble _081D4C4E + ldr r1, _081D4CE8 + ldr r0, [r1] + ldr r1, _081D4CEC + adds r0, r0, r1 + bl sub_080008DC + bl sub_081D4D64 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D4CE0: .4byte gUnknown_203CC24 +_081D4CE4: .4byte gUnknown_203CC20 +_081D4CE8: .4byte gUnknown_3005AEC +_081D4CEC: .4byte 0x00003D64 + thumb_func_end sub_081D4C30 + + thumb_func_start sub_081D4CF0 +sub_081D4CF0: @ 0x081D4CF0 + push {r4, lr} + ldr r4, _081D4D08 + ldr r0, [r4] + cmp r0, #0 + beq _081D4D02 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_081D4D02: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4D08: .4byte gUnknown_203CC24 + thumb_func_end sub_081D4CF0 + + thumb_func_start sub_081D4D0C +sub_081D4D0C: @ 0x081D4D0C + push {r4, lr} + ldr r4, _081D4D38 + ldr r0, [r4] + cmp r0, #0 + bne _081D4D54 + ldr r0, _081D4D3C + bl sub_08000BDC + str r0, [r4] + ldr r1, _081D4D40 + ldrb r1, [r1, #0x12] + adds r1, #0x61 + strb r1, [r0] + bl sub_081D31B4 + cmp r0, #1 + bne _081D4D44 + ldr r0, [r4] + adds r0, #4 + bl sub_081D318C + b _081D4D54 + .align 2, 0 +_081D4D38: .4byte gUnknown_203CC20 +_081D4D3C: .4byte 0x00000ECC +_081D4D40: .4byte gUnknown_2036FB8 +_081D4D44: + ldr r0, _081D4D5C + ldr r1, [r4] + adds r1, #4 + ldr r2, _081D4D60 + bl CpuSet + bl sub_081D5360 +_081D4D54: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4D5C: .4byte gUnknown_85FAF38 +_081D4D60: .4byte 0x040003B2 + thumb_func_end sub_081D4D0C + + thumb_func_start sub_081D4D64 +sub_081D4D64: @ 0x081D4D64 + push {r4, lr} + ldr r4, _081D4D7C + ldr r0, [r4] + cmp r0, #0 + beq _081D4D76 + bl sub_08000BF0 + movs r0, #0 + str r0, [r4] +_081D4D76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D4D7C: .4byte gUnknown_203CC20 + thumb_func_end sub_081D4D64 + + thumb_func_start sub_081D4D80 +sub_081D4D80: @ 0x081D4D80 + push {r4, r5, r6, lr} + adds r4, r1, #0 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r6, r5, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081D4D0C + bl sub_081D4B80 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + cmp r5, #3 + beq _081D4DE4 + cmp r5, #3 + bgt _081D4DAE + cmp r5, #2 + beq _081D4DB8 + b _081D4E60 +_081D4DAE: + cmp r6, #4 + beq _081D4E10 + cmp r6, #5 + beq _081D4E3C + b _081D4E60 +_081D4DB8: + ldr r1, _081D4DE0 + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r0, #0xc + ldr r1, [r1] + adds r1, r1, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x10 + bl sub_081637CC + b _081D4E60 + .align 2, 0 +_081D4DE0: .4byte gUnknown_203CC20 +_081D4DE4: + ldr r1, _081D4E0C + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r0, #0xc + ldr r1, [r1] + adds r1, r1, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x1c + bl sub_081637CC + b _081D4E60 + .align 2, 0 +_081D4E0C: .4byte gUnknown_203CC20 +_081D4E10: + ldr r1, _081D4E38 + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r0, #0xc + ldr r1, [r1] + adds r1, r1, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x28 + bl sub_081637CC + b _081D4E60 + .align 2, 0 +_081D4E38: .4byte gUnknown_203CC20 +_081D4E3C: + ldr r1, _081D4E6C + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r0, #0xc + ldr r1, [r1] + adds r1, r1, r0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #4 + adds r0, r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + adds r0, #0x34 + bl sub_081637CC +_081D4E60: + bl sub_081D4D64 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D4E6C: .4byte gUnknown_203CC20 + thumb_func_end sub_081D4D80 + + thumb_func_start sub_081D4E70 +sub_081D4E70: @ 0x081D4E70 + push {r4, r5, r6, lr} + bl sub_081D5360 + bl sub_081D31B4 + cmp r0, #0 + bne _081D4E98 + ldr r3, _081D4E90 + ldr r1, [r3] + ldr r0, _081D4E94 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x20 + orrs r0, r2 + b _081D4EA8 + .align 2, 0 +_081D4E90: .4byte gUnknown_3005AEC +_081D4E94: .4byte 0x00003D6E +_081D4E98: + ldr r3, _081D4F14 + ldr r1, [r3] + ldr r0, _081D4F18 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r0, r2 +_081D4EA8: + strb r0, [r1] + adds r6, r3, #0 + ldr r0, [r6] + ldr r1, _081D4F1C + adds r0, r0, r1 + movs r5, #0 + strb r5, [r0] + ldr r0, [r6] + ldr r4, _081D4F20 + adds r0, r0, r4 + bl sub_080008DC + ldr r1, [r6] + adds r4, r1, r4 + str r5, [r4] + ldr r3, _081D4F18 + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #5 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r6] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r1, [r6] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081D4F24 + ldr r0, [r0] + movs r1, #0xee + lsls r1, r1, #4 + adds r0, r0, r1 + strb r5, [r0] + ldr r0, _081D4F28 + strb r5, [r0] + ldr r1, [r6] + adds r1, r1, r3 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D4F14: .4byte gUnknown_3005AEC +_081D4F18: .4byte 0x00003D6E +_081D4F1C: .4byte 0x00003D6C +_081D4F20: .4byte 0x00003D64 +_081D4F24: .4byte gUnknown_3005AF0 +_081D4F28: .4byte gUnknown_2023FDE + thumb_func_end sub_081D4E70 + + thumb_func_start sub_081D4F2C +sub_081D4F2C: @ 0x081D4F2C + push {lr} + bl sub_080008E8 + ldr r3, _081D4F6C + movs r0, #0 + strh r0, [r3] + ldr r0, _081D4F70 + ldr r0, [r0] + ldr r1, _081D4F74 + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _081D4F4E + movs r0, #1 + strh r0, [r3] +_081D4F4E: + ldrb r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + bne _081D4F5E + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] +_081D4F5E: + ldrb r0, [r2] + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_081D4F6C: .4byte gUnknown_2037290 +_081D4F70: .4byte gUnknown_3005AEC +_081D4F74: .4byte 0x00003D6E + thumb_func_end sub_081D4F2C + + thumb_func_start sub_081D4F78 +sub_081D4F78: @ 0x081D4F78 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_081D5F98 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _081D4FB0 + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #4 + bne _081D4FA6 + ldr r0, _081D4FB4 + mov r8, r0 + ldr r0, [r0] + ldr r7, _081D4FB8 + adds r0, r0, r7 + ldrb r0, [r0] + movs r6, #1 + adds r4, r6, #0 + ands r4, r0 + cmp r4, #0 + beq _081D4FC0 +_081D4FA6: + ldr r1, _081D4FBC + movs r0, #2 + strh r0, [r1] + b _081D5014 + .align 2, 0 +_081D4FB0: .4byte gUnknown_203CC20 +_081D4FB4: .4byte gUnknown_3005AEC +_081D4FB8: .4byte 0x00003D6E +_081D4FBC: .4byte gUnknown_2037290 +_081D4FC0: + adds r0, r5, #0 + movs r1, #1 + bl sub_080D6140 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081D5010 + ldr r1, _081D5000 + adds r0, r5, #0 + bl sub_080D5EC8 + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r7 + ldrb r0, [r1] + movs r2, #1 + orrs r0, r2 + strb r0, [r1] + ldr r0, _081D5004 + ldr r1, [r0] + ldr r0, _081D5008 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081D500C + strh r4, [r0] + b _081D5014 + .align 2, 0 +_081D5000: .4byte gUnknown_2021C54 +_081D5004: .4byte gUnknown_3005AF0 +_081D5008: .4byte 0x00000EF9 +_081D500C: .4byte gUnknown_2037290 +_081D5010: + ldr r0, _081D5020 + strh r6, [r0] +_081D5014: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D5020: .4byte gUnknown_2037290 + thumb_func_end sub_081D4F78 + + thumb_func_start sub_081D5024 +sub_081D5024: @ 0x081D5024 + push {r4, r5, lr} + ldr r5, _081D5044 + ldr r2, [r5] + ldr r1, _081D5048 + adds r0, r2, r1 + ldrb r1, [r0] + movs r3, #2 + adds r0, r3, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _081D5050 + ldr r0, _081D504C + strh r3, [r0] + b _081D5086 + .align 2, 0 +_081D5044: .4byte gUnknown_3005AEC +_081D5048: .4byte 0x00003D6E +_081D504C: .4byte gUnknown_2037290 +_081D5050: + ldr r3, _081D5074 + adds r0, r2, r3 + bl sub_081D56E8 + ldr r2, [r5] + ldr r3, _081D5078 + adds r1, r2, r3 + ldr r1, [r1] + cmp r0, r1 + bls _081D5080 + adds r3, #4 + adds r0, r2, r3 + bl sub_081D56EC + ldr r0, _081D507C + strh r4, [r0] + b _081D5086 + .align 2, 0 +_081D5074: .4byte 0x00003D68 +_081D5078: .4byte 0x00003D64 +_081D507C: .4byte gUnknown_2037290 +_081D5080: + ldr r1, _081D509C + movs r0, #1 + strh r0, [r1] +_081D5086: + ldr r0, _081D50A0 + ldr r1, [r0] + ldr r0, _081D50A4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D509C: .4byte gUnknown_2037290 +_081D50A0: .4byte gUnknown_3005AEC +_081D50A4: .4byte 0x00003D6E + thumb_func_end sub_081D5024 + + thumb_func_start sub_081D50A8 +sub_081D50A8: @ 0x081D50A8 + push {lr} + ldr r0, _081D50D0 + ldr r2, [r0] + ldr r1, _081D50D4 + adds r0, r2, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _081D50E6 + ldr r0, _081D50D8 + adds r2, r2, r0 + ldr r1, [r2] + ldr r0, _081D50DC + cmp r1, r0 + bls _081D50E0 + adds r0, #1 + str r0, [r2] + b _081D50E6 + .align 2, 0 +_081D50D0: .4byte gUnknown_3005AEC +_081D50D4: .4byte 0x00003D6E +_081D50D8: .4byte 0x00003D64 +_081D50DC: .4byte 0x00034BBE +_081D50E0: + adds r0, r2, #0 + bl sub_080008DC +_081D50E6: + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D50A8 + + thumb_func_start sub_081D50EC +sub_081D50EC: @ 0x081D50EC + ldr r0, _081D5100 + ldr r1, [r0] + ldr r0, _081D5104 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #8 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081D5100: .4byte gUnknown_3005AEC +_081D5104: .4byte 0x00003D6E + thumb_func_end sub_081D50EC + + thumb_func_start sub_081D5108 +sub_081D5108: @ 0x081D5108 + push {lr} + ldr r0, _081D512C + ldr r0, [r0] + ldr r1, _081D5130 + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081D5138 + movs r0, #9 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r1, _081D5134 + movs r0, #0 + b _081D5158 + .align 2, 0 +_081D512C: .4byte gUnknown_3005AEC +_081D5130: .4byte 0x00003D6E +_081D5134: .4byte gUnknown_2037290 +_081D5138: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _081D5154 + movs r0, #0x11 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r1, _081D5150 + movs r0, #1 + b _081D5158 + .align 2, 0 +_081D5150: .4byte gUnknown_2037290 +_081D5154: + ldr r1, _081D5160 + movs r0, #2 +_081D5158: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081D5160: .4byte gUnknown_2037290 + thumb_func_end sub_081D5108 + + thumb_func_start sub_081D5164 +sub_081D5164: @ 0x081D5164 + push {r4, r5, r6, r7, lr} + ldr r0, _081D51D8 + ldr r0, [r0] + ldr r1, _081D51DC + adds r0, r0, r1 + ldr r7, [r0] + ldr r0, _081D51E0 + cmp r7, r0 + ble _081D5178 + ldr r7, _081D51E4 +_081D5178: + movs r4, #0xe1 + lsls r4, r4, #4 + adds r0, r7, #0 + adds r1, r4, #0 + bl __divsi3 + adds r6, r0, #0 + adds r0, r7, #0 + adds r1, r4, #0 + bl __modsi3 + adds r7, r0, #0 + movs r1, #0x3c + bl __divsi3 + adds r5, r0, #0 + adds r0, r7, #0 + movs r1, #0x3c + bl __modsi3 + adds r7, r0, #0 + movs r0, #0xa8 + muls r0, r7, r0 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + ldr r0, _081D51E8 + adds r1, r6, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _081D51EC + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _081D51F0 + adds r1, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D51D8: .4byte gUnknown_3005AEC +_081D51DC: .4byte 0x00003D64 +_081D51E0: .4byte 0x00034BBE +_081D51E4: .4byte 0x00034BBF +_081D51E8: .4byte gUnknown_2021C40 +_081D51EC: .4byte gUnknown_2021C54 +_081D51F0: .4byte gUnknown_2021C68 + thumb_func_end sub_081D5164 + + thumb_func_start sub_081D51F4 +sub_081D51F4: @ 0x081D51F4 + push {lr} + bl sub_081D4D0C + ldr r0, _081D5218 + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #4 + beq _081D5224 + ldr r0, _081D521C + ldrb r1, [r1, #6] + movs r2, #0 + movs r3, #1 + bl sub_080089D8 + ldr r1, _081D5220 + movs r0, #0 + b _081D5228 + .align 2, 0 +_081D5218: .4byte gUnknown_203CC20 +_081D521C: .4byte gUnknown_2021C40 +_081D5220: .4byte gUnknown_2037290 +_081D5224: + ldr r1, _081D5234 + movs r0, #1 +_081D5228: + strh r0, [r1] + bl sub_081D4D64 + pop {r0} + bx r0 + .align 2, 0 +_081D5234: .4byte gUnknown_2037290 + thumb_func_end sub_081D51F4 + + thumb_func_start sub_081D5238 +sub_081D5238: @ 0x081D5238 + push {r4, lr} + bl sub_081D4D0C + ldr r0, _081D5260 + ldrh r1, [r0, #0x12] + movs r0, #0xcf + lsls r0, r0, #1 + cmp r1, r0 + bne _081D526C + ldr r0, _081D5264 + bl sub_0809CF6C + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + bne _081D526C + ldr r0, _081D5268 + strh r1, [r0] + b _081D52E2 + .align 2, 0 +_081D5260: .4byte gUnknown_2036FB8 +_081D5264: .4byte 0x000040D6 +_081D5268: .4byte gUnknown_2037290 +_081D526C: + ldr r4, _081D52C4 + ldr r3, [r4] + ldr r0, _081D52C8 + adds r2, r3, r0 + ldr r0, _081D52CC + ldr r1, [r0] + ldrb r0, [r2] + ldrb r1, [r1, #5] + cmp r0, r1 + bne _081D5296 + ldr r1, _081D52D0 + adds r0, r3, r1 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081D52DC + bl sub_081D31B4 + cmp r0, #0 + bne _081D52DC +_081D5296: + ldr r1, [r4] + ldr r0, _081D52D0 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x10 + orrs r0, r2 + strb r0, [r1] + ldr r1, _081D52D4 + movs r0, #1 + strh r0, [r1] + ldr r0, _081D52D8 + ldrh r1, [r0, #0x12] + movs r0, #0xcf + lsls r0, r0, #1 + cmp r1, r0 + bne _081D52E2 + ldr r0, [r4] + movs r1, #9 + strh r1, [r0] + movs r1, #6 + strh r1, [r0, #2] + b _081D52E2 + .align 2, 0 +_081D52C4: .4byte gUnknown_3005AEC +_081D52C8: .4byte 0x00003D6D +_081D52CC: .4byte gUnknown_203CC20 +_081D52D0: .4byte 0x00003D6E +_081D52D4: .4byte gUnknown_2037290 +_081D52D8: .4byte gUnknown_2036FB8 +_081D52DC: + ldr r1, _081D52EC + movs r0, #0 + strh r0, [r1] +_081D52E2: + bl sub_081D4D64 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D52EC: .4byte gUnknown_2037290 + thumb_func_end sub_081D5238 + + thumb_func_start sub_081D52F0 +sub_081D52F0: @ 0x081D52F0 + push {lr} + ldr r0, _081D5320 + bl sub_0809CF6C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081D531A + ldr r0, _081D5324 + ldr r0, [r0] + ldr r1, _081D5328 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _081D531A + bl sub_081D5A38 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D532C +_081D531A: + movs r0, #0 + b _081D532E + .align 2, 0 +_081D5320: .4byte 0x000040D6 +_081D5324: .4byte gUnknown_3005AEC +_081D5328: .4byte 0x00003D6E +_081D532C: + movs r0, #1 +_081D532E: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D52F0 + + thumb_func_start sub_081D5334 +sub_081D5334: @ 0x081D5334 + push {lr} + bl sub_081D52F0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081D534C + ldr r0, _081D5348 + strh r1, [r0] + b _081D5352 + .align 2, 0 +_081D5348: .4byte gUnknown_2037290 +_081D534C: + ldr r1, _081D5358 + movs r0, #1 + strh r0, [r1] +_081D5352: + pop {r0} + bx r0 + .align 2, 0 +_081D5358: .4byte gUnknown_2037290 + thumb_func_end sub_081D5334 + + thumb_func_start sub_081D535C +sub_081D535C: @ 0x081D535C + bx lr + .align 2, 0 + thumb_func_end sub_081D535C + + thumb_func_start sub_081D5360 +sub_081D5360: @ 0x081D5360 + push {r4, lr} + ldr r4, _081D53AC + ldr r0, [r4] + ldr r1, _081D53B0 + adds r2, r0, r1 + ldr r0, _081D53B4 + ldr r0, [r0] + ldrb r1, [r0, #5] + ldrb r0, [r2] + cmp r0, r1 + beq _081D53A6 + strb r1, [r2] + ldr r0, [r4] + ldr r1, _081D53B8 + adds r0, r0, r1 + ldr r1, _081D53BC + bl sub_081D56EC + ldr r1, [r4] + ldr r0, _081D53C0 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] + ldr r0, _081D53C4 + ldr r1, [r0] + ldr r0, _081D53C8 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x80 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r1] +_081D53A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D53AC: .4byte gUnknown_3005AEC +_081D53B0: .4byte 0x00003D6D +_081D53B4: .4byte gUnknown_203CC20 +_081D53B8: .4byte 0x00003D68 +_081D53BC: .4byte 0x00034BBF +_081D53C0: .4byte 0x00003D6E +_081D53C4: .4byte gUnknown_3005AF0 +_081D53C8: .4byte 0x00000EF9 + thumb_func_end sub_081D5360 + + thumb_func_start sub_081D53CC +sub_081D53CC: @ 0x081D53CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + ldr r1, _081D5560 + add r0, sp, #0xc + movs r2, #0xa + bl memcpy + bl sub_081D4D0C + movs r0, #0xd8 + str r0, [sp] + movs r0, #0x90 + str r0, [sp, #4] + movs r0, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08003A34 + bl sub_081D5360 + ldr r7, _081D5564 + str r7, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r0, _081D5568 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x44 + movs r3, #0 + bl sub_08199AFC + str r7, [sp] + movs r1, #0 + str r1, [sp, #4] + ldr r0, _081D556C + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0 + movs r3, #0x78 + bl sub_08199AFC + ldr r0, _081D5570 + ldr r0, [r0] + ldrb r0, [r0, #6] + str r0, [sp, #0x18] + ldr r0, _081D5574 + ldr r0, [r0] + ldr r2, _081D5578 + adds r0, r0, r2 + bl sub_081D56E8 + adds r4, r0, #0 + movs r5, #0xe1 + lsls r5, 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, r0 + movs r1, #0x64 + bl __divsi3 + adds r4, r0, #0 + ldr r0, _081D557C + adds r1, r6, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _081D5580 + adds r1, r5, #0 + movs r2, #1 + movs r3, #2 + bl sub_080089D8 + ldr r0, _081D5584 + adds r1, r4, #0 + movs r2, #2 + movs r3, #2 + bl sub_080089D8 + ldr r4, _081D5588 + ldr r1, _081D558C + adds r0, r4, #0 + bl sub_08008BCC + str r7, [sp] + movs r0, #0 + str r0, [sp, #4] + str r4, [sp, #8] + movs r1, #1 + movs r2, #0x30 + movs r3, #0x84 + bl sub_08199AFC + ldr r0, _081D5590 + ldr r0, [r0] + ldr r1, _081D5594 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D54C8 + b _081D5648 +_081D54C8: + movs r4, #0 + ldr r2, [sp, #0x18] + cmp r4, r2 + blt _081D54D2 + b _081D56C2 +_081D54D2: + movs r0, #0x1a + adds r3, r4, #0 + muls r3, r0, r3 + adds r3, #0xe + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + ldr r6, _081D5564 + str r6, [sp] + movs r0, #0 + str r0, [sp, #4] + ldr r1, _081D5598 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0xc + bl sub_08199AFC + ldr r0, _081D5574 + ldr r0, [r0] + ldr r1, _081D5578 + adds r0, r0, r1 + bl sub_081D56E8 + ldr r1, _081D559C + cmp r0, r1 + bne _081D55A0 + movs r5, #0 + lsls r2, r4, #1 + mov r8, r2 + add r0, sp, #0x10 + mov sb, r0 + adds r4, #1 + mov sl, r4 + adds r7, r6, #0 + movs r6, #0 +_081D551E: + mov r1, r8 + adds r0, r1, r5 + movs r1, #0xd + adds r4, r0, #0 + muls r4, r1, r4 + adds r4, #0xe + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r7, [sp] + str r6, [sp, #4] + add r2, sp, #0xc + str r2, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x24 + adds r3, r4, #0 + bl sub_08199AFC + str r7, [sp] + str r6, [sp, #4] + mov r0, sb + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x90 + adds r3, r4, #0 + bl sub_08199AFC + adds r5, #1 + cmp r5, #1 + ble _081D551E + b _081D562C + .align 2, 0 +_081D5560: .4byte gUnknown_85FB960 +_081D5564: .4byte gUnknown_85FB8E0 +_081D5568: .4byte gUnknown_85FB8E3 +_081D556C: .4byte gUnknown_85FB8EA +_081D5570: .4byte gUnknown_203CC20 +_081D5574: .4byte gUnknown_3005AEC +_081D5578: .4byte 0x00003D68 +_081D557C: .4byte gUnknown_2021C40 +_081D5580: .4byte gUnknown_2021C54 +_081D5584: .4byte gUnknown_2021C68 +_081D5588: .4byte gUnknown_2021C7C +_081D558C: .4byte gUnknown_85FB8F1 +_081D5590: .4byte gUnknown_3005AF0 +_081D5594: .4byte 0x00000EF9 +_081D5598: .4byte gUnknown_85FB90C +_081D559C: .4byte 0x00034BBF +_081D55A0: + movs r5, #0 + lsls r1, r4, #1 + mov r8, r1 + lsls r0, r4, #4 + adds r2, r4, #1 + mov sl, r2 + movs r7, #4 + movs r6, #0 + subs r0, r0, r4 + lsls r0, r0, #2 + subs r0, r0, r4 + lsls r0, r0, #4 + mov sb, r0 + adds r0, #0xc + str r0, [sp, #0x1c] +_081D55BE: + ldr r1, _081D5638 + ldr r0, [r1] + mov r2, sb + adds r1, r6, r2 + adds r0, r0, r1 + ldrb r0, [r0, #0x18] + ldr r1, _081D563C + adds r0, r0, r1 + ldrb r2, [r0] + mov r0, r8 + adds r1, r0, r5 + movs r0, #0xd + adds r4, r1, #0 + muls r4, r0, r4 + adds r4, #0xe + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r1, _081D5640 + str r1, [sp] + movs r0, #0 + str r0, [sp, #4] + movs r0, #0xb + muls r0, r2, r0 + ldr r1, _081D5644 + adds r0, r0, r1 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x24 + adds r3, r4, #0 + bl sub_08199AFC + ldr r1, _081D5640 + str r1, [sp] + movs r2, #0 + str r2, [sp, #4] + ldr r1, _081D5638 + ldr r0, [r1] + ldr r2, [sp, #0x1c] + adds r0, r0, r2 + adds r0, r0, r7 + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x90 + adds r3, r4, #0 + bl sub_08199AFC + movs r0, #0xa2 + lsls r0, r0, #1 + adds r7, r7, r0 + adds r6, r6, r0 + adds r5, #1 + cmp r5, #1 + ble _081D55BE +_081D562C: + mov r4, sl + ldr r1, [sp, #0x18] + cmp r4, r1 + bge _081D5636 + b _081D54D2 +_081D5636: + b _081D56C2 + .align 2, 0 +_081D5638: .4byte gUnknown_203CC20 +_081D563C: .4byte gUnknown_82EFF52 +_081D5640: .4byte gUnknown_85FB8E0 +_081D5644: .4byte gUnknown_82E3564 +_081D5648: + movs r4, #0 + add r2, sp, #0x10 + mov sb, r2 + movs r6, #0 +_081D5650: + movs r0, #0x1a + adds r3, r4, #0 + muls r3, r0, r3 + adds r3, #0xe + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + str r7, [sp] + str r6, [sp, #4] + ldr r1, _081D56E4 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0xc + bl sub_08199AFC + movs r5, #0 + lsls r0, r4, #1 + mov r8, r0 + adds r4, #1 + mov sl, r4 +_081D567E: + mov r1, r8 + adds r0, r1, r5 + movs r1, #0xd + adds r4, r0, #0 + muls r4, r1, r4 + adds r4, #0xe + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + str r7, [sp] + str r6, [sp, #4] + add r2, sp, #0xc + str r2, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x24 + adds r3, r4, #0 + bl sub_08199AFC + str r7, [sp] + str r6, [sp, #4] + mov r0, sb + str r0, [sp, #8] + movs r0, #0 + movs r1, #1 + movs r2, #0x90 + adds r3, r4, #0 + bl sub_08199AFC + adds r5, #1 + cmp r5, #1 + ble _081D567E + mov r4, sl + cmp r4, #1 + ble _081D5650 +_081D56C2: + movs r0, #0 + bl sub_0800365C + movs r0, #0 + movs r1, #3 + bl sub_08003528 + bl sub_081D4D64 + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D56E4: .4byte gUnknown_85FB90C + thumb_func_end sub_081D53CC + + thumb_func_start sub_081D56E8 +sub_081D56E8: @ 0x081D56E8 + ldr r0, [r0] + bx lr + thumb_func_end sub_081D56E8 + + thumb_func_start sub_081D56EC +sub_081D56EC: @ 0x081D56EC + str r1, [r0] + bx lr + thumb_func_end sub_081D56EC + + thumb_func_start sub_081D56F0 +sub_081D56F0: @ 0x081D56F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _081D5818 + ldr r0, [r0] + movs r1, #0xc7 + lsls r1, r1, #4 + adds r1, r0, r1 + str r1, [sp, #4] + bl sub_081D5840 + cmp r0, #0 + beq _081D5806 + bl sub_081D4D0C + movs r7, #0 + ldr r4, _081D581C + ldr r3, _081D5820 + ldr r0, _081D5824 + adds r2, r0, #0 +_081D571E: + ldr r1, [r4] + lsls r0, r7, #1 + adds r1, r1, r3 + adds r1, r1, r0 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + adds r0, r7, #1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #1 + bls _081D571E + movs r0, #0 + str r0, [sp] + ldr r0, _081D5818 + ldr r1, [r0] + movs r2, #0xc7 + lsls r2, r2, #4 + adds r1, r1, r2 + ldr r2, _081D5828 + mov r0, sp + bl CpuSet + bl sub_081D4B80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + movs r7, #0 + ldr r3, _081D582C + mov sl, r3 +_081D575C: + lsls r4, r7, #1 + mov r8, r4 + adds r5, r4, r7 + lsls r5, r5, #3 + ldr r0, [sp, #4] + adds r5, r5, r0 + adds r1, r5, #0 + ldr r0, _081D5830 + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + ldm r0!, {r2, r3, r4} + stm r1!, {r2, r3, r4} + adds r6, r7, #1 + strb r6, [r5] + mov r0, sl + ldr r1, [r0] + lsls r0, r7, #2 + adds r0, r0, r7 + lsls r0, r0, #4 + adds r0, r0, r7 + lsls r0, r0, #2 + mov r2, sb + lsls r4, r2, #4 + subs r4, r4, r2 + lsls r4, r4, #2 + subs r4, r4, r2 + lsls r4, r4, #4 + adds r0, r0, r4 + adds r1, r1, r0 + ldrb r0, [r1, #0x18] + bl sub_08165EC4 + strb r0, [r5, #1] + mov r0, sl + ldr r3, [r0] + adds r0, r7, r4 + movs r2, #0xee + lsls r2, r2, #2 + adds r1, r3, r2 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0xf + ands r0, r2 + strh r0, [r5, #4] + ldrb r0, [r1] + lsrs r0, r0, #4 + movs r1, #0xf + ands r0, r1 + adds r0, #5 + strh r0, [r5, #6] + lsls r1, r7, #0x1a + lsrs r1, r1, #0x18 + adds r3, r3, r4 + ldr r2, _081D5834 + adds r3, r3, r2 + ldrb r0, [r3] + asrs r0, r1 + movs r3, #0xf + ands r0, r3 + adds r0, #7 + strb r0, [r5, #9] + mov r2, sl + ldr r0, [r2] + adds r0, r0, r4 + ldr r3, _081D5838 + adds r0, r0, r3 + ldrb r0, [r0] + asrs r0, r1 + movs r1, #0xf + ands r0, r1 + strh r0, [r5, #0xe] + ldr r0, _081D583C + str r0, [r5, #0x10] + ldr r0, _081D581C + ldr r0, [r0] + ldr r4, _081D5820 + adds r0, r0, r4 + add r0, r8 + strh r6, [r0] + lsls r6, r6, #0x18 + lsrs r7, r6, #0x18 + cmp r7, #1 + bls _081D575C + bl sub_081D4D64 +_081D5806: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D5818: .4byte gUnknown_3005AEC +_081D581C: .4byte gUnknown_3005AF0 +_081D5820: .4byte 0x00000CB4 +_081D5824: .4byte 0x0000FFFF +_081D5828: .4byte 0x05000180 +_081D582C: .4byte gUnknown_203CC20 +_081D5830: .4byte gUnknown_85FB96C +_081D5834: .4byte 0x000003BA +_081D5838: .4byte 0x000003BB +_081D583C: .4byte gUnknown_8276D0C + thumb_func_end sub_081D56F0 + + thumb_func_start sub_081D5840 +sub_081D5840: @ 0x081D5840 + push {r4, r5, lr} + sub sp, #4 + movs r5, #1 + bl sub_081D4D0C + ldr r4, _081D589C + ldr r3, [r4] + ldr r0, _081D58A0 + adds r2, r3, r0 + ldr r0, _081D58A4 + ldr r1, [r0] + ldrb r0, [r2] + ldrb r1, [r1, #5] + cmp r0, r1 + bne _081D5874 + ldr r1, _081D58A8 + adds r0, r3, r1 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081D588E + bl sub_081D31B4 + cmp r0, #0 + bne _081D588E +_081D5874: + movs r0, #0 + str r0, [sp] + ldr r1, [r4] + movs r0, #0xc7 + lsls r0, r0, #4 + adds r1, r1, r0 + ldr r2, _081D58AC + mov r0, sp + bl CpuSet + bl sub_0808CD80 + movs r5, #0 +_081D588E: + bl sub_081D4D64 + adds r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D589C: .4byte gUnknown_3005AEC +_081D58A0: .4byte 0x00003D6D +_081D58A4: .4byte gUnknown_203CC20 +_081D58A8: .4byte 0x00003D6E +_081D58AC: .4byte 0x05000180 + thumb_func_end sub_081D5840 + + thumb_func_start sub_081D58B0 +sub_081D58B0: @ 0x081D58B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r4, _081D5908 + ldr r4, [r4] + mov ip, r4 + lsls r4, r2, #1 + lsls r5, r0, #4 + subs r5, r5, r0 + lsls r5, r5, #2 + subs r5, r5, r0 + lsls r5, r5, #4 + adds r4, r4, r5 + movs r0, #0xe6 + lsls r0, r0, #2 + add r0, ip + adds r0, r0, r4 + ldrh r0, [r0] + movs r4, #0xf + subs r4, r4, r1 + asrs r0, r4 + movs r4, #1 + ands r0, r4 + muls r2, r3, r2 + adds r2, r2, r1 + adds r2, r2, r5 + movs r1, #0xa6 + lsls r1, r1, #2 + add r1, ip + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #0x80 + lsls r2, r2, #2 + adds r3, r2, #0 + movs r2, #0xc0 + lsls r2, r2, #6 + lsls r0, r0, #0xa + orrs r0, r2 + orrs r1, r3 + orrs r0, r1 + pop {r4, r5} + pop {r1} + bx r1 + .align 2, 0 +_081D5908: .4byte gUnknown_203CC20 + thumb_func_end sub_081D58B0 + + thumb_func_start sub_081D590C +sub_081D590C: @ 0x081D590C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + bl sub_081D5A38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + cmp r0, #6 + bne _081D592A + bl sub_080876D8 + b _081D59FC +_081D592A: + bl sub_081D4D0C + ldr r0, _081D5964 + ldr r3, [r0] + ldr r0, _081D5968 + adds r2, r3, r0 + ldr r0, _081D596C + ldr r1, [r0] + ldrb r0, [r2] + ldrb r1, [r1, #5] + cmp r0, r1 + bne _081D5958 + ldr r1, _081D5970 + adds r0, r3, r1 + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _081D5974 + bl sub_081D31B4 + cmp r0, #0 + bne _081D5974 +_081D5958: + bl sub_080989C8 + bl sub_081D4D64 + b _081D59FC + .align 2, 0 +_081D5964: .4byte gUnknown_3005AEC +_081D5968: .4byte 0x00003D6D +_081D596C: .4byte gUnknown_203CC20 +_081D5970: .4byte 0x00003D6E +_081D5974: + mov r0, sb + cmp r0, #5 + bne _081D5984 + bl sub_080876D8 + bl sub_081D4D64 + b _081D59FC +_081D5984: + bl sub_081D4B80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sb, r0 + ldr r0, _081D5A08 + ldr r0, [r0] + ldr r2, [r0, #0xc] + ldr r1, _081D5A0C + str r4, [r1, #8] + movs r0, #0x1f + str r0, [r1] + movs r0, #0x23 + str r0, [r1, #4] + movs r1, #0xe0 + lsls r1, r1, #1 + adds r3, r4, r1 + movs r6, #4 +_081D59A8: + adds r4, r2, #0 + adds r4, #0x20 + adds r1, r3, #0 + movs r5, #0xf +_081D59B0: + ldrh r0, [r2] + strh r0, [r1] + adds r2, #2 + adds r1, #2 + subs r5, #1 + cmp r5, #0 + bge _081D59B0 + adds r3, #0x3e + adds r2, r4, #0 + subs r6, #1 + cmp r6, #0 + bge _081D59A8 + movs r6, #0 +_081D59CA: + movs r5, #0 + movs r0, #0x3e + adds r0, r0, r3 + mov r8, r0 + adds r7, r6, #1 + adds r4, r3, #0 +_081D59D6: + mov r0, sb + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #0x10 + bl sub_081D58B0 + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #0xf + ble _081D59D6 + mov r3, r8 + adds r6, r7, #0 + cmp r6, #0xf + ble _081D59CA + bl sub_080989C8 + bl sub_081D4D64 +_081D59FC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D5A08: .4byte gUnknown_2036FB8 +_081D5A0C: .4byte gUnknown_3005B20 + thumb_func_end sub_081D590C + + thumb_func_start sub_081D5A10 +sub_081D5A10: @ 0x081D5A10 + push {lr} + ldr r1, _081D5A30 + ldr r2, _081D5A34 + adds r0, r2, #0 + ldrh r1, [r1, #0x12] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0 + cmp r0, #3 + bhi _081D5A28 + movs r1, #1 +_081D5A28: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 +_081D5A30: .4byte gUnknown_2036FB8 +_081D5A34: .4byte 0xFFFFFE61 + thumb_func_end sub_081D5A10 + + thumb_func_start sub_081D5A38 +sub_081D5A38: @ 0x081D5A38 + push {lr} + ldr r0, _081D5A48 + ldrh r2, [r0, #0x12] + ldr r0, _081D5A4C + cmp r2, r0 + bne _081D5A50 + movs r1, #1 + b _081D5A94 + .align 2, 0 +_081D5A48: .4byte gUnknown_2036FB8 +_081D5A4C: .4byte 0x0000019F +_081D5A50: + movs r0, #0xd0 + lsls r0, r0, #1 + cmp r2, r0 + bne _081D5A5C + movs r1, #2 + b _081D5A94 +_081D5A5C: + ldr r0, _081D5A68 + cmp r2, r0 + bne _081D5A6C + movs r1, #3 + b _081D5A94 + .align 2, 0 +_081D5A68: .4byte 0x000001A1 +_081D5A6C: + movs r0, #0xd1 + lsls r0, r0, #1 + cmp r2, r0 + bne _081D5A78 + movs r1, #4 + b _081D5A94 +_081D5A78: + ldr r0, _081D5A84 + cmp r2, r0 + bne _081D5A88 + movs r1, #5 + b _081D5A94 + .align 2, 0 +_081D5A84: .4byte 0x000001A3 +_081D5A88: + movs r0, #0xcf + lsls r0, r0, #1 + movs r1, #0 + cmp r2, r0 + bne _081D5A94 + movs r1, #6 +_081D5A94: + adds r0, r1, #0 + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D5A38 + + thumb_func_start sub_081D5A9C +sub_081D5A9C: @ 0x081D5A9C + push {lr} + ldr r0, _081D5AB4 + ldrh r1, [r0, #0x12] + ldr r0, _081D5AB8 + movs r2, #0 + cmp r1, r0 + bne _081D5AAC + movs r2, #1 +_081D5AAC: + adds r0, r2, #0 + pop {r1} + bx r1 + .align 2, 0 +_081D5AB4: .4byte gUnknown_2036FB8 +_081D5AB8: .4byte 0x000001A3 + thumb_func_end sub_081D5A9C + + thumb_func_start sub_081D5ABC +sub_081D5ABC: @ 0x081D5ABC + push {lr} + movs r0, #0x1a + movs r1, #0x40 + bl sub_080843F8 + ldr r0, [r0, #4] + ldr r0, [r0, #8] + adds r0, #8 + pop {r1} + bx r1 + thumb_func_end sub_081D5ABC + + thumb_func_start sub_081D5AD0 +sub_081D5AD0: @ 0x081D5AD0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081D5AE8 + ldr r0, _081D5AE4 + ldr r0, [r0, #4] + ldr r0, [r0, #8] + adds r0, #8 + b _081D5B12 + .align 2, 0 +_081D5AE4: .4byte gUnknown_2036FB8 +_081D5AE8: + bl sub_081D5E30 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + movs r1, #0xff + lsls r1, r1, #0x18 + adds r0, r0, r1 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _081D5AFE + movs r2, #4 +_081D5AFE: + ldr r1, _081D5B18 + subs r0, r2, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x1a + bl sub_080843F8 + ldr r0, [r0, #4] + ldr r0, [r0, #8] +_081D5B12: + pop {r1} + bx r1 + .align 2, 0 +_081D5B18: .4byte gUnknown_85FB984 + thumb_func_end sub_081D5AD0 + + thumb_func_start sub_081D5B1C +sub_081D5B1C: @ 0x081D5B1C + lsls r0, r0, #0x18 + ldr r1, _081D5B30 + ldr r1, [r1] + lsrs r0, r0, #0x17 + adds r1, r1, r0 + ldr r0, _081D5B34 + adds r1, r1, r0 + ldrh r0, [r1] + bx lr + .align 2, 0 +_081D5B30: .4byte gUnknown_3005AF0 +_081D5B34: .4byte 0x00000CB2 + thumb_func_end sub_081D5B1C + + thumb_func_start sub_081D5B38 +sub_081D5B38: @ 0x081D5B38 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + bl sub_081D4B80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + ldr r2, _081D5B78 + lsls r1, r4, #3 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r2 + adds r0, #0xff + ldrb r1, [r1, #8] + adds r0, r0, r1 + lsls r0, r0, #0x18 + ldr r1, _081D5B7C + ldr r1, [r1] + movs r2, #0xee + lsls r2, r2, #4 + adds r1, r1, r2 + ldr r2, _081D5B80 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r0, [r0] + ldrb r1, [r1] + ands r0, r1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D5B78: .4byte gUnknown_2036FF0 +_081D5B7C: .4byte gUnknown_3005AF0 +_081D5B80: .4byte gUnknown_82FACB4 + thumb_func_end sub_081D5B38 + + thumb_func_start sub_081D5B84 +sub_081D5B84: @ 0x081D5B84 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_081D4B80 + lsls r0, r0, #0x19 + lsrs r4, r0, #0x18 + movs r3, #0 + ldr r0, _081D5BCC + mov r8, r0 + ldr r6, _081D5BD0 + ldr r1, _081D5BD4 + mov ip, r1 + adds r5, r6, #0 +_081D5BA0: + ldr r2, [r5] + lsls r0, r3, #1 + ldr r7, _081D5BD8 + adds r1, r2, r7 + adds r1, r1, r0 + ldrh r0, [r1] + mov r1, r8 + ldrh r1, [r1] + cmp r0, r1 + bne _081D5BDC + movs r7, #0xee + lsls r7, r7, #4 + adds r2, r2, r7 + adds r0, r4, r3 + lsls r0, r0, #2 + add r0, ip + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + b _081D5BE6 + .align 2, 0 +_081D5BCC: .4byte gUnknown_203886A +_081D5BD0: .4byte gUnknown_3005AF0 +_081D5BD4: .4byte gUnknown_82FACB4 +_081D5BD8: .4byte 0x00000CB4 +_081D5BDC: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _081D5BA0 +_081D5BE6: + ldr r0, _081D5C24 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _081D5C3E + movs r3, #0 + ldr r5, _081D5C28 + ldr r0, _081D5C2C + mov r8, r0 +_081D5BFC: + ldr r2, [r6] + lsls r0, r3, #1 + ldr r7, _081D5C30 + adds r1, r2, r7 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r1, [r5] + cmp r0, r1 + bne _081D5C34 + movs r7, #0xee + lsls r7, r7, #4 + adds r2, r2, r7 + adds r0, r4, r3 + lsls r0, r0, #2 + add r0, r8 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + b _081D5C3E + .align 2, 0 +_081D5C24: .4byte gUnknown_2022C90 +_081D5C28: .4byte gUnknown_203886C +_081D5C2C: .4byte gUnknown_82FACB4 +_081D5C30: .4byte 0x00000CB4 +_081D5C34: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #1 + bls _081D5BFC +_081D5C3E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D5B84 + + thumb_func_start sub_081D5C48 +sub_081D5C48: @ 0x081D5C48 + ldr r0, _081D5C4C + bx lr + .align 2, 0 +_081D5C4C: .4byte gUnknown_8276D0C + thumb_func_end sub_081D5C48 + + thumb_func_start sub_081D5C50 +sub_081D5C50: @ 0x081D5C50 + push {lr} + ldr r0, _081D5C64 + ldrh r1, [r0] + movs r0, #5 + bl sub_081D4D80 + bl sub_08097C40 + pop {r0} + bx r0 + .align 2, 0 +_081D5C64: .4byte gUnknown_2037292 + thumb_func_end sub_081D5C50 + + thumb_func_start sub_081D5C68 +sub_081D5C68: @ 0x081D5C68 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + subs r1, r0, #1 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _081D5D06 + lsls r0, r1, #0x18 + lsrs r6, r0, #0x18 + bl sub_081D4D0C + bl sub_08165AC0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov sl, r0 + bl sub_081D4B80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + mov r5, sb + adds r0, r5, #3 + cmp r5, r0 + bge _081D5D02 + ldr r1, _081D5D14 + lsls r0, r6, #1 + adds r0, r0, r6 + adds r7, r0, r1 +_081D5CB2: + ldrb r2, [r7] + movs r0, #0x64 + adds r4, r5, #0 + muls r4, r0, r4 + ldr r0, _081D5D18 + adds r4, r4, r0 + mov r1, r8 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + lsls r0, r0, #4 + adds r0, #0xc + ldr r3, _081D5D1C + ldr r1, [r3] + adds r1, r1, r0 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #4 + adds r0, r0, r6 + lsls r0, r0, #2 + adds r0, #4 + adds r1, r1, r0 + movs r0, #0x2c + muls r0, r2, r0 + adds r0, #0x3c + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08067D80 + adds r0, r4, #0 + mov r1, sl + bl sub_081D5DCC + adds r5, #1 + adds r7, #1 + mov r0, sb + adds r0, #3 + cmp r5, r0 + blt _081D5CB2 +_081D5D02: + bl sub_081D4D64 +_081D5D06: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D5D14: .4byte gUnknown_85FB994 +_081D5D18: .4byte gUnknown_20243E8 +_081D5D1C: .4byte gUnknown_203CC20 + thumb_func_end sub_081D5C68 + + thumb_func_start sub_081D5D20 +sub_081D5D20: @ 0x081D5D20 + push {lr} + bl sub_08067710 + ldr r0, _081D5D34 + ldrh r0, [r0] + movs r1, #0 + bl sub_081D5C68 + pop {r0} + bx r0 + .align 2, 0 +_081D5D34: .4byte gUnknown_203886A + thumb_func_end sub_081D5D20 + + thumb_func_start sub_081D5D38 +sub_081D5D38: @ 0x081D5D38 + push {lr} + bl sub_08067710 + ldr r0, _081D5D58 + ldrh r0, [r0] + movs r1, #0 + bl sub_081D5C68 + ldr r0, _081D5D5C + ldrh r0, [r0] + movs r1, #3 + bl sub_081D5C68 + pop {r0} + bx r0 + .align 2, 0 +_081D5D58: .4byte gUnknown_203886A +_081D5D5C: .4byte gUnknown_203886C + thumb_func_end sub_081D5D38 + + thumb_func_start sub_081D5D60 +sub_081D5D60: @ 0x081D5D60 + movs r0, #7 + bx lr + thumb_func_end sub_081D5D60 + + thumb_func_start sub_081D5D64 +sub_081D5D64: @ 0x081D5D64 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + bl sub_081D4D0C + subs r4, #1 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081D5DB0 + ldr r3, [r0] + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #4 + adds r1, r1, r4 + lsls r1, r1, #2 + ldrb r2, [r3] + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r3, r3, r1 + ldrb r4, [r3, #0x18] + bl sub_081D4D64 + movs r2, #0 + ldr r0, _081D5DB4 + adds r4, r4, r0 + ldrb r3, [r4] + ldr r1, _081D5DB8 +_081D5DA4: + ldrb r0, [r1] + cmp r0, r3 + bne _081D5DBC + ldrb r0, [r1, #1] + b _081D5DC6 + .align 2, 0 +_081D5DB0: .4byte gUnknown_203CC20 +_081D5DB4: .4byte gUnknown_82EFF52 +_081D5DB8: .4byte gUnknown_85FB6A0 +_081D5DBC: + adds r1, #4 + adds r2, #1 + cmp r2, #0x35 + bls _081D5DA4 + movs r0, #0 +_081D5DC6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D5D64 + + thumb_func_start sub_081D5DCC +sub_081D5DCC: @ 0x081D5DCC + push {r4, r5, lr} + sub sp, #8 + adds r4, r0, #0 + mov r0, sp + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0806A058 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r5, _081D5E28 + mov r1, sp + ldrb r2, [r1] + lsls r2, r2, #2 + ldr r3, _081D5E2C + lsls r1, r0, #3 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r3 + ldrb r1, [r1, #0x13] + movs r0, #0xca + lsls r0, r0, #1 + muls r0, r1, r0 + adds r2, r2, r0 + adds r2, r2, r5 + ldr r0, [r2] + str r0, [sp, #4] + add r2, sp, #4 + adds r0, r4, #0 + movs r1, #0x19 + bl sub_0806A774 + adds r0, r4, #0 + movs r1, #0x38 + mov r2, sp + bl sub_0806A774 + adds r0, r4, #0 + bl sub_0806884C + add sp, #8 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D5E28: .4byte gUnknown_82F00B4 +_081D5E2C: .4byte gUnknown_82F0D54 + thumb_func_end sub_081D5DCC + + thumb_func_start sub_081D5E30 +sub_081D5E30: @ 0x081D5E30 + push {r4, lr} + bl sub_081D4D0C + ldr r0, _081D5E48 + ldr r0, [r0] + ldrb r4, [r0, #6] + bl sub_081D4D64 + adds r0, r4, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D5E48: .4byte gUnknown_203CC20 + thumb_func_end sub_081D5E30 + + thumb_func_start sub_081D5E4C +sub_081D5E4C: @ 0x081D5E4C + ldr r0, _081D5E5C + ldr r0, [r0] + movs r1, #0xee + lsls r1, r1, #4 + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] + bx lr + .align 2, 0 +_081D5E5C: .4byte gUnknown_3005AF0 + thumb_func_end sub_081D5E4C + + thumb_func_start sub_081D5E60 +sub_081D5E60: @ 0x081D5E60 + push {lr} + bl sub_081D5ED4 + cmp r0, #1 + bne _081D5E74 + ldr r0, _081D5E78 + movs r1, #0x70 + movs r2, #0x20 + bl sub_080A1200 +_081D5E74: + pop {r0} + bx r0 + .align 2, 0 +_081D5E78: .4byte gUnknown_85FB8C0 + thumb_func_end sub_081D5E60 + + thumb_func_start sub_081D5E7C +sub_081D5E7C: @ 0x081D5E7C + ldr r1, _081D5E90 + ldr r0, _081D5E94 + ldr r0, [r0] + ldr r2, _081D5E98 + adds r0, r0, r2 + ldrb r0, [r0] + lsrs r0, r0, #7 + strh r0, [r1] + bx lr + .align 2, 0 +_081D5E90: .4byte gUnknown_2037290 +_081D5E94: .4byte gUnknown_3005AF0 +_081D5E98: .4byte 0x00000EF9 + thumb_func_end sub_081D5E7C + + thumb_func_start sub_081D5E9C +sub_081D5E9C: @ 0x081D5E9C + ldr r0, _081D5EB0 + ldr r1, [r0] + ldr r0, _081D5EB4 + adds r1, r1, r0 + ldrb r0, [r1] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081D5EB0: .4byte gUnknown_3005AF0 +_081D5EB4: .4byte 0x00000EF9 + thumb_func_end sub_081D5E9C + + thumb_func_start sub_081D5EB8 +sub_081D5EB8: @ 0x081D5EB8 + ldr r0, _081D5ECC + ldr r1, [r0] + ldr r0, _081D5ED0 + adds r1, r1, r0 + ldrb r2, [r1] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_081D5ECC: .4byte gUnknown_3005AF0 +_081D5ED0: .4byte 0x00000EF9 + thumb_func_end sub_081D5EB8 + + thumb_func_start sub_081D5ED4 +sub_081D5ED4: @ 0x081D5ED4 + push {lr} + bl sub_081D52F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D5F00 + bl sub_081D5A38 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + beq _081D5F00 + bl sub_081D5238 + ldr r0, _081D5EFC + ldrh r0, [r0] + cmp r0, #0 + beq _081D5F00 + movs r0, #1 + b _081D5F02 + .align 2, 0 +_081D5EFC: .4byte gUnknown_2037290 +_081D5F00: + movs r0, #0 +_081D5F02: + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D5ED4 + + thumb_func_start sub_081D5F08 +sub_081D5F08: @ 0x081D5F08 + push {lr} + ldr r0, _081D5F24 + ldr r0, [r0] + ldr r1, _081D5F28 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _081D5F30 + ldr r1, _081D5F2C + movs r0, #0 + b _081D5F34 + .align 2, 0 +_081D5F24: .4byte gUnknown_3005AEC +_081D5F28: .4byte 0x00003D6E +_081D5F2C: .4byte gUnknown_2037290 +_081D5F30: + ldr r1, _081D5F3C + movs r0, #1 +_081D5F34: + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_081D5F3C: .4byte gUnknown_2037290 + thumb_func_end sub_081D5F08 + + thumb_func_start sub_081D5F40 +sub_081D5F40: @ 0x081D5F40 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + movs r3, #0 + movs r4, #0 + ldr r0, _081D5F94 + ldr r6, [r0] + movs r5, #0x1f +_081D5F50: + lsls r1, r4, #4 + subs r1, r1, r4 + lsls r1, r1, #2 + subs r1, r1, r4 + lsls r1, r1, #4 + adds r1, r6, r1 + ldrb r2, [r1, #0xc] + adds r0, r5, #0 + ands r0, r2 + eors r3, r0 + ldrb r1, [r1, #0xd] + adds r0, r5, #0 + ands r0, r1 + eors r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + adds r0, r4, #1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #3 + bls _081D5F50 + movs r1, #5 + cmp r7, #0 + beq _081D5F82 + movs r1, #0xa +_081D5F82: + adds r0, r3, #0 + bl __umodsi3 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r0, r3, #0 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081D5F94: .4byte gUnknown_203CC20 + thumb_func_end sub_081D5F40 + + thumb_func_start sub_081D5F98 +sub_081D5F98: @ 0x081D5F98 + push {r4, lr} + movs r3, #0 + movs r2, #0 + ldr r0, _081D5FF0 + ldr r4, [r0] +_081D5FA2: + lsls r0, r2, #4 + subs r0, r0, r2 + lsls r0, r0, #2 + subs r0, r0, r2 + lsls r0, r0, #4 + adds r0, r4, r0 + ldrb r1, [r0, #0xc] + adds r1, r3, r1 + ldrb r0, [r0, #0xd] + adds r3, r1, r0 + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #3 + bls _081D5FA2 + adds r0, r3, #0 + cmp r0, #0 + bge _081D5FC8 + adds r0, #0xff +_081D5FC8: + asrs r4, r0, #8 + lsrs r0, r0, #0x1f + adds r0, r4, r0 + asrs r0, r0, #1 + lsls r0, r0, #1 + subs r4, r4, r0 + ldr r0, _081D5FF4 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D5FF8 + ldr r0, _081D5FF0 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #8 + bne _081D5FF8 + movs r0, #1 + b _081D5FFA + .align 2, 0 +_081D5FF0: .4byte gUnknown_203CC20 +_081D5FF4: .4byte 0x00000864 +_081D5FF8: + movs r0, #0 +_081D5FFA: + bl sub_081D5F40 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + ldr r1, _081D6050 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _081D6054 + ldr r0, [r0] + ldr r1, _081D6058 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0xe1 + lsls r1, r1, #4 + bl __divsi3 + movs r1, #0 + cmp r0, #0xb + ble _081D6042 + movs r1, #1 + cmp r0, #0xc + ble _081D6042 + movs r1, #2 + cmp r0, #0xd + ble _081D6042 + movs r1, #3 + cmp r0, #0xf + ble _081D6042 + movs r1, #5 + cmp r0, #0x11 + bgt _081D6042 + movs r1, #4 +_081D6042: + lsls r0, r1, #1 + adds r0, r0, r4 + ldrh r0, [r0] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_081D6050: .4byte gUnknown_85FB8B8 +_081D6054: .4byte gUnknown_3005AEC +_081D6058: .4byte 0x00003D64 + thumb_func_end sub_081D5F98 + + thumb_func_start sub_081D605C +sub_081D605C: @ 0x081D605C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _081D609C + ldr r0, _081D60A0 + bl sub_08000BDC + str r0, [r6] + ldr r1, _081D60A4 + adds r0, r0, r1 + strb r4, [r0] + ldr r0, [r6] + mov r1, r8 + str r1, [r0] + ldr r1, _081D60A8 + adds r0, r0, r1 + strb r5, [r0] + ldr r0, _081D60AC + bl sub_08000540 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D609C: .4byte gUnknown_203CC2C +_081D60A0: .4byte 0x00002018 +_081D60A4: .4byte 0x00002006 +_081D60A8: .4byte 0x00002007 +_081D60AC: .4byte sub_081D60B0 + thumb_func_end sub_081D605C + + thumb_func_start sub_081D60B0 +sub_081D60B0: @ 0x081D60B0 + push {lr} + bl sub_08121E58 + bl sub_08199640 + bl sub_080B9710 + bl sub_08008424 + bl sub_080A133C + bl sub_0800668C + bl sub_080A8818 + movs r0, #0 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1238 + ldr r1, _081D60FC + ldr r0, _081D6100 + ldr r0, [r0] + ldr r2, _081D6104 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0 + bl sub_080A8878 + ldr r0, _081D6108 + bl sub_08000540 + pop {r0} + bx r0 + .align 2, 0 +_081D60FC: .4byte gUnknown_85FB99C +_081D6100: .4byte gUnknown_203CC2C +_081D6104: .4byte 0x00002006 +_081D6108: .4byte sub_081D610C + thumb_func_end sub_081D60B0 + + thumb_func_start sub_081D610C +sub_081D610C: @ 0x081D610C + push {lr} + bl sub_080A89D4 + bl sub_080066D8 + bl sub_08006724 + bl sub_08199668 + bl sub_080A12E4 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D610C + + thumb_func_start sub_081D6128 +sub_081D6128: @ 0x081D6128 + push {lr} + bl sub_08006EA0 + bl sub_08007144 + bl sub_080A1288 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D6128 + + thumb_func_start sub_081D613C +sub_081D613C: @ 0x081D613C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + ldr r0, _081D6174 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D616C + bl sub_0800668C + bl sub_08008424 + ldr r4, _081D6178 + ldr r0, [r4] + ldr r0, [r0] + bl sub_08000540 + ldr r0, [r4] + bl sub_08000BF0 + adds r0, r5, #0 + bl sub_080A8964 +_081D616C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D6174: .4byte gUnknown_2037C74 +_081D6178: .4byte gUnknown_203CC2C + thumb_func_end sub_081D613C + + thumb_func_start sub_081D617C +sub_081D617C: @ 0x081D617C + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + adds r6, r3, #0 + ldr r0, _081D61B0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081D61EE + ldr r2, _081D61B4 + ldr r1, [r2] + ldr r4, _081D61B8 + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, #1 + bne _081D61C4 + ldr r0, _081D61BC + lsls r1, r3, #2 + adds r1, r1, r3 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081D61C0 + b _081D61EC + .align 2, 0 +_081D61B0: .4byte gUnknown_2037C74 +_081D61B4: .4byte gUnknown_203CC2C +_081D61B8: .4byte 0x00002007 +_081D61BC: .4byte gUnknown_3005B60 +_081D61C0: .4byte sub_081D613C +_081D61C4: + ldr r4, _081D61F4 + adds r1, r1, r4 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r2, [r2] + ldr r1, _081D61F8 + adds r0, r2, r1 + strh r5, [r0] + ldr r0, _081D61FC + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r3, _081D6200 + adds r2, r2, r4 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r3 + ldr r0, [r0] +_081D61EC: + str r0, [r1] +_081D61EE: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D61F4: .4byte 0x00002006 +_081D61F8: .4byte 0x00002004 +_081D61FC: .4byte gUnknown_3005B60 +_081D6200: .4byte gUnknown_85FB99C + thumb_func_end sub_081D617C + + thumb_func_start sub_081D6204 +sub_081D6204: @ 0x081D6204 + push {lr} + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0 + bl sub_08001144 + movs r0, #0x40 + movs r1, #0xf0 + bl sub_08001144 + ldr r1, _081D6234 + movs r0, #0x44 + bl sub_08001144 + ldr r0, _081D6238 + movs r1, #0 + strh r1, [r0] + ldr r0, _081D623C + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_081D6234: .4byte 0x00001888 +_081D6238: .4byte gUnknown_20373B4 +_081D623C: .4byte gUnknown_20377B4 + thumb_func_end sub_081D6204 + + thumb_func_start sub_081D6240 +sub_081D6240: @ 0x081D6240 + push {lr} + movs r0, #0x48 + movs r1, #0x3f + bl sub_08001144 + movs r0, #0x4a + movs r1, #0x3f + bl sub_08001144 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D6240 + + thumb_func_start sub_081D6258 +sub_081D6258: @ 0x081D6258 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r4, r0, #0 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081D6288 + adds r5, r0, r1 + bl sub_081D6E48 + ldr r0, _081D628C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D62BA + movs r0, #0 + ldrsh r1, [r5, r0] + cmp r1, #0x40 + bne _081D6290 + bl sub_081D6D74 + b _081D62B4 + .align 2, 0 +_081D6288: .4byte gUnknown_3005B68 +_081D628C: .4byte gUnknown_2037C74 +_081D6290: + cmp r1, #0x90 + bne _081D629A + bl sub_081D6DBC + b _081D62B4 +_081D629A: + cmp r1, #0x94 + beq _081D62B0 + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D62B4 + adds r0, r4, #0 + movs r1, #0 + bl sub_081D6EF0 + b _081D62BA +_081D62B0: + bl sub_081D6E04 +_081D62B4: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] +_081D62BA: + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081D6258 + + thumb_func_start sub_081D62C0 +sub_081D62C0: @ 0x081D62C0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081D6348 + mov r8, r0 + movs r1, #0x58 + movs r2, #0x48 + movs r3, #3 + bl sub_08006B0C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _081D634C + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r0, r6, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, _081D6350 + str r1, [r0] + adds r0, r6, #0 + adds r0, #0x2e + adds r4, r4, r0 + mov r0, r8 + movs r1, #0x38 + movs r2, #0x68 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r0, _081D6354 + movs r1, #0x4b + movs r2, #0x65 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #2] + ldr r0, _081D6358 + movs r1, #0x6d + movs r2, #0x72 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #4] + movs r0, #0 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007EC0 + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D6348: .4byte gUnknown_85FBA28 +_081D634C: .4byte gUnknown_20205AC +_081D6350: .4byte sub_081D635C +_081D6354: .4byte gUnknown_85FBA4C +_081D6358: .4byte gUnknown_85FBA70 + thumb_func_end sub_081D62C0 + + thumb_func_start sub_081D635C +sub_081D635C: @ 0x081D635C + push {r4, lr} + adds r3, r0, #0 + movs r0, #0x2e + adds r0, r0, r3 + mov ip, r0 + ldrh r0, [r0, #0xa] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + mov r1, ip + strh r0, [r1, #0xa] + cmp r0, #0 + bne _081D63C0 + ldrh r1, [r3, #0x20] + movs r2, #0x20 + ldrsh r0, [r3, r2] + cmp r0, #0x48 + beq _081D63C0 + subs r0, r1, #1 + strh r0, [r3, #0x20] + ldr r2, _081D63D4 + movs r4, #0x2e + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] +_081D63C0: + adds r0, r3, #0 + adds r0, #0x2b + ldrb r3, [r0] + cmp r3, #1 + beq _081D6420 + cmp r3, #1 + bgt _081D63D8 + cmp r3, #0 + beq _081D63E2 + b _081D64A4 + .align 2, 0 +_081D63D4: .4byte gUnknown_20205AC +_081D63D8: + cmp r3, #2 + beq _081D6460 + cmp r3, #3 + beq _081D6420 + b _081D64A4 +_081D63E2: + ldr r2, _081D641C + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + b _081D649A + .align 2, 0 +_081D641C: .4byte gUnknown_20205AC +_081D6420: + ldr r2, _081D6458 + mov r0, ip + movs r3, #2 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D645C + strh r1, [r0, #0x24] + mov r4, ip + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0 + strh r3, [r0, #0x26] + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + rsbs r1, r1, #0 + b _081D6494 + .align 2, 0 +_081D6458: .4byte gUnknown_20205AC +_081D645C: .4byte 0x0000FFFF +_081D6460: + ldr r2, _081D64AC + mov r3, ip + movs r4, #2 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D64B0 + strh r1, [r0, #0x24] + movs r0, #2 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #1 + strh r3, [r0, #0x26] + mov r4, ip + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D64B4 +_081D6494: + strh r1, [r0, #0x24] + movs r0, #4 + ldrsh r1, [r4, r0] +_081D649A: + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] +_081D64A4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D64AC: .4byte gUnknown_20205AC +_081D64B0: .4byte 0x0000FFFF +_081D64B4: .4byte 0x0000FFFE + thumb_func_end sub_081D635C + + thumb_func_start sub_081D64B8 +sub_081D64B8: @ 0x081D64B8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r5, _081D6648 + adds r0, r5, #0 + movs r1, #0x88 + movs r2, #0x60 + movs r3, #1 + bl sub_08006B0C + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r6, _081D664C + lsls r4, r0, #4 + add r4, r8 + lsls r4, r4, #2 + adds r0, r6, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, _081D6650 + str r1, [r0] + adds r0, r6, #0 + adds r0, #0x2e + adds r4, r4, r0 + adds r0, r5, #0 + movs r1, #0xa8 + movs r2, #0x60 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4] + adds r0, r5, #0 + movs r1, #0x88 + movs r2, #0x70 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + adds r0, r5, #0 + movs r1, #0xa8 + movs r2, #0x70 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #0x88 + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + orrs r0, r1 + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #0xa8 + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #4] + adds r0, r5, #0 + movs r1, #0x68 + movs r2, #0x80 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + orrs r0, r1 + strh r0, [r4, #4] + adds r0, r5, #0 + movs r1, #0x88 + movs r2, #0x80 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #6] + adds r0, r5, #0 + movs r1, #0xb8 + movs r2, #0x80 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + orrs r0, r1 + strh r0, [r4, #6] + ldr r0, _081D6654 + movs r1, #0xd0 + movs r2, #0x84 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #8] + ldr r0, _081D6658 + movs r1, #0xc8 + movs r2, #0x78 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #8] + orrs r0, r1 + strh r0, [r4, #8] + ldrh r1, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #2 + bl sub_08007EC0 + ldrh r1, [r4, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #3 + bl sub_08007EC0 + ldrb r1, [r4, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #4 + bl sub_08007EC0 + ldrh r1, [r4, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #5 + bl sub_08007EC0 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #6 + bl sub_08007EC0 + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #7 + bl sub_08007EC0 + ldrb r1, [r4, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #8 + bl sub_08007EC0 + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D6648: .4byte gUnknown_85FBB18 +_081D664C: .4byte gUnknown_20205AC +_081D6650: .4byte sub_081D665C +_081D6654: .4byte gUnknown_85FBB48 +_081D6658: .4byte gUnknown_85FBB60 + thumb_func_end sub_081D64B8 + + thumb_func_start sub_081D665C +sub_081D665C: @ 0x081D665C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x2e + ldrh r0, [r3, #0xa] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strh r0, [r3, #0xa] + ldr r7, _081D676C + cmp r0, #0 + bne _081D674A + ldrh r1, [r4, #0x20] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x98 + beq _081D674A + adds r0, r1, #1 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r4, #0x2e] + movs r2, #0xff + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #2] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #4] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #6] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #8] + ands r2, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] +_081D674A: + adds r6, r7, #0 + movs r5, #0xff + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2b + ldrb r2, [r0] + cmp r2, #1 + beq _081D681C + cmp r2, #1 + bgt _081D6770 + cmp r2, #0 + beq _081D677C + b _081D6904 + .align 2, 0 +_081D676C: .4byte gUnknown_20205AC +_081D6770: + cmp r2, #2 + bne _081D6776 + b _081D68A4 +_081D6776: + cmp r2, #3 + beq _081D681C + b _081D6904 +_081D677C: + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #2] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #4] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #6] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + ands r1, r5 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + b _081D6902 +_081D681C: + movs r2, #1 + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #8] + b _081D68FA +_081D68A4: + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r0, [r3] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r0, [r3, #2] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + ands r1, r5 +_081D68FA: + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 +_081D6902: + strh r2, [r0, #0x26] +_081D6904: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D665C + + thumb_func_start sub_081D690C +sub_081D690C: @ 0x081D690C + push {lr} + bl sub_081D6128 + bl sub_080B9800 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D690C + + thumb_func_start sub_081D691C +sub_081D691C: @ 0x081D691C + push {r4, lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081D6998 + movs r0, #0 + movs r2, #3 + bl sub_08001800 + ldr r4, _081D699C + ldr r1, [r4] + adds r1, #4 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D69A0 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D69A4 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D6998: .4byte gUnknown_85FBB84 +_081D699C: .4byte gUnknown_203CC2C +_081D69A0: .4byte 0x00000804 +_081D69A4: .4byte 0x00001004 + thumb_func_end sub_081D691C + + thumb_func_start sub_081D69A8 +sub_081D69A8: @ 0x081D69A8 + push {r4, lr} + sub sp, #4 + bl sub_081996B8 + ldr r1, _081D6A30 + movs r0, #0 + str r0, [sp] + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_081D69BE: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D69BE + ldr r0, _081D6A34 + ldr r4, _081D6A38 + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r0, _081D6A3C + ldr r1, [r4] + ldr r2, _081D6A40 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D6A44 + ldr r1, [r4] + ldr r2, _081D6A48 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D6A4C + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + ldr r0, _081D6A50 + bl sub_08034388 + ldr r0, _081D6A54 + bl sub_08034388 + ldr r0, _081D6A58 + bl sub_08034388 + ldr r0, _081D6A5C + bl sub_08034388 + ldr r0, _081D6A60 + bl sub_08034388 + ldr r0, _081D6A64 + bl sub_08034388 + ldr r0, _081D6A68 + bl sub_080343E4 + ldr r0, _081D6A6C + bl sub_080343E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D6A30: .4byte gUnknown_8DA3668 +_081D6A34: .4byte gUnknown_8DA3C30 +_081D6A38: .4byte gUnknown_203CC2C +_081D6A3C: .4byte gUnknown_8DA3ACC +_081D6A40: .4byte 0x00000804 +_081D6A44: .4byte gUnknown_8DA3D30 +_081D6A48: .4byte 0x00001004 +_081D6A4C: .4byte gUnknown_8DA3A90 +_081D6A50: .4byte gUnknown_85FBBC0 +_081D6A54: .4byte gUnknown_85FBBF4 +_081D6A58: .4byte gUnknown_85FBC20 +_081D6A5C: .4byte gUnknown_85FBCD0 +_081D6A60: .4byte gUnknown_85FBD10 +_081D6A64: .4byte gUnknown_85FBD30 +_081D6A68: .4byte gUnknown_85FBBC8 +_081D6A6C: .4byte gUnknown_85FBCD8 + thumb_func_end sub_081D69A8 + + thumb_func_start sub_081D6A70 +sub_081D6A70: @ 0x081D6A70 + push {r4, r5, r6, r7, lr} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r6, r1, #3 + ldr r7, _081D6AE8 + adds r5, r6, r7 + bl sub_080B9750 + bl sub_081D691C + bl sub_081D69A8 + movs r4, #0 + str r4, [sp, #4] + ldr r1, _081D6AEC + ldr r2, _081D6AF0 + add r0, sp, #4 + bl CpuFastSet + ldr r2, _081D6AF4 + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl sub_080B9790 + strh r4, [r5] + ldr r0, _081D6AF8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #2] + ldr r0, _081D6AFC + ldr r0, [r0] + ldr r1, _081D6B00 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081D6B08 + bl sub_081D62C0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #4] + bl sub_081D64B8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #6] + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081D6B04 + str r1, [r0] + b _081D6B2A + .align 2, 0 +_081D6AE8: .4byte gUnknown_3005B68 +_081D6AEC: .4byte gUnknown_20388C8 +_081D6AF0: .4byte 0x010003C0 +_081D6AF4: .4byte gUnknown_85FBB78 +_081D6AF8: .4byte sub_081D6B64 +_081D6AFC: .4byte gUnknown_203CC2C +_081D6B00: .4byte 0x00002006 +_081D6B04: .4byte sub_081D6258 +_081D6B08: + bl sub_081D6FA0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #4] + bl sub_081D71F8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #6] + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081D6B5C + str r1, [r0] + bl sub_080A27F8 +_081D6B2A: + movs r4, #1 + rsbs r4, r4, #0 + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + movs r0, #0 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + ldr r0, _081D6B60 + bl sub_080006F0 + movs r0, #0x53 + bl sub_080A306C + add sp, #8 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D6B5C: .4byte sub_081D6CA8 +_081D6B60: .4byte sub_081D690C + thumb_func_end sub_081D6A70 + + thumb_func_start sub_081D6B64 +sub_081D6B64: @ 0x081D6B64 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D6B9C + adds r3, r1, r0 + movs r1, #0x18 + ldr r7, _081D6BA0 + ldr r4, _081D6BA4 + movs r0, #0xf0 + lsls r0, r0, #3 + adds r5, r4, r0 +_081D6B80: + lsls r0, r1, #0x10 + asrs r1, r0, #0x10 + adds r6, r0, #0 + cmp r1, #0x2f + bgt _081D6BA8 + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3] + b _081D6C06 + .align 2, 0 +_081D6B9C: .4byte gUnknown_3005B68 +_081D6BA0: .4byte gUnknown_203CC2C +_081D6BA4: .4byte gUnknown_20388C8 +_081D6BA8: + cmp r1, #0x3f + bgt _081D6BBC + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3, #2] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #2] + b _081D6C06 +_081D6BBC: + cmp r1, #0x4b + bgt _081D6BD0 + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3, #4] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #4] + b _081D6C06 +_081D6BD0: + cmp r1, #0x53 + bgt _081D6BE4 + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3, #6] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #6] + b _081D6C06 +_081D6BE4: + cmp r1, #0x57 + bgt _081D6BF8 + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3, #8] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #8] + b _081D6C06 +_081D6BF8: + lsls r1, r1, #1 + adds r2, r1, r4 + ldrh r0, [r3, #0xa] + lsrs r0, r0, #8 + strh r0, [r2] + adds r1, r1, r5 + ldrh r0, [r3, #0xa] +_081D6C06: + lsrs r0, r0, #8 + strh r0, [r1] + movs r1, #0x80 + lsls r1, r1, #9 + adds r0, r6, r1 + lsrs r1, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x5b + ble _081D6B80 + ldr r0, [r7] + ldr r1, _081D6C5C + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081D6C60 + movs r1, #0xe0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + movs r1, #0xc0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #2] + adds r0, r0, r1 + strh r0, [r3, #2] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #4] + adds r0, r0, r1 + strh r0, [r3, #4] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #6] + adds r0, r0, r1 + strh r0, [r3, #6] + ldrh r0, [r3, #8] + adds r0, #0xc0 + b _081D6C9A + .align 2, 0 +_081D6C5C: .4byte 0x00002006 +_081D6C60: + movs r1, #0xc0 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + movs r1, #0xa0 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r1, [r3, #2] + adds r0, r0, r1 + strh r0, [r3, #2] + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r1, [r3, #4] + adds r0, r0, r1 + strh r0, [r3, #4] + movs r1, #0xc0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #6] + adds r0, r0, r1 + strh r0, [r3, #6] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #8] + adds r0, r0, r1 +_081D6C9A: + strh r0, [r3, #8] + ldrh r0, [r3, #0xa] + adds r0, #0x80 + strh r0, [r3, #0xa] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D6B64 + + thumb_func_start sub_081D6CA8 +sub_081D6CA8: @ 0x081D6CA8 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r7, _081D6CE0 + adds r4, r0, r7 + bl sub_081D6E48 + ldr r0, _081D6CE4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _081D6D6A + movs r0, #0 + ldrsh r1, [r4, r0] + cmp r1, #0x20 + beq _081D6CD8 + cmp r1, #0x70 + bne _081D6CE8 +_081D6CD8: + bl sub_081D6D74 + b _081D6D64 + .align 2, 0 +_081D6CE0: .4byte gUnknown_3005B68 +_081D6CE4: .4byte gUnknown_2037C74 +_081D6CE8: + cmp r1, #0xd8 + bne _081D6CF2 + bl sub_081D6DBC + b _081D6D64 +_081D6CF2: + cmp r1, #0xdc + bne _081D6CFC + bl sub_081D6E04 + b _081D6D64 +_081D6CFC: + movs r0, #0xbe + lsls r0, r0, #1 + cmp r1, r0 + beq _081D6D14 + adds r0, #0x20 + cmp r1, r0 + bne _081D6D64 + adds r0, r5, #0 + movs r1, #2 + bl sub_081D6EF0 + b _081D6D6A +_081D6D14: + movs r1, #0x91 + lsls r1, r1, #2 + movs r0, #0x50 + bl sub_08001144 + adds r2, r7, #0 + subs r2, #8 + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _081D6D70 + str r1, [r0] + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + strh r6, [r0, #8] + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r4, #4] + strh r1, [r0, #0xc] + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldrh r1, [r4, #6] + strh r1, [r0, #0xe] + bl sub_080B9710 +_081D6D64: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081D6D6A: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D6D70: .4byte sub_081D6E68 + thumb_func_end sub_081D6CA8 + + thumb_func_start sub_081D6D74 +sub_081D6D74: @ 0x081D6D74 + push {r4, lr} + sub sp, #0xc + movs r0, #0x57 + bl sub_080A306C + ldr r0, _081D6DB0 + ldr r1, _081D6DB4 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + ldr r0, _081D6DB8 + str r4, [sp] + str r4, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D6DB0: .4byte 0x00007FFF +_081D6DB4: .4byte 0x0000FFFF +_081D6DB8: .4byte 0xFFFF0000 + thumb_func_end sub_081D6D74 + + thumb_func_start sub_081D6DBC +sub_081D6DBC: @ 0x081D6DBC + push {r4, lr} + sub sp, #0xc + movs r0, #0x57 + bl sub_080A306C + ldr r0, _081D6DF8 + ldr r1, _081D6DFC + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080A250C + ldr r0, _081D6E00 + str r4, [sp] + str r4, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080A250C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D6DF8: .4byte 0x00007FFF +_081D6DFC: .4byte 0x0000FFFF +_081D6E00: .4byte 0xFFFF0000 + thumb_func_end sub_081D6DBC + + thumb_func_start sub_081D6E04 +sub_081D6E04: @ 0x081D6E04 + push {r4, lr} + sub sp, #0xc + ldr r0, _081D6E3C + ldr r1, _081D6E40 + str r1, [sp] + movs r4, #0 + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #4 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + ldr r0, _081D6E44 + str r4, [sp] + str r4, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #4 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + add sp, #0xc + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D6E3C: .4byte 0x00007FFF +_081D6E40: .4byte 0x0000FFFF +_081D6E44: .4byte 0xFFFF0000 + thumb_func_end sub_081D6E04 + + thumb_func_start sub_081D6E48 +sub_081D6E48: @ 0x081D6E48 + push {lr} + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #2 + movs r2, #1 + bl sub_08001D1C + movs r1, #0x80 + lsls r1, r1, #4 + movs r0, #2 + movs r2, #2 + bl sub_08001E94 + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D6E48 + + thumb_func_start sub_081D6E68 +sub_081D6E68: @ 0x081D6E68 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D6EE8 + adds r5, r1, r0 + movs r0, #4 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081D6EEC + adds r0, r0, r4 + bl sub_081D719C + movs r0, #6 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_081D7650 + movs r0, #1 + bl sub_08001FD0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + movs r0, #1 + bl sub_08001FD0 + cmp r0, #0 + beq _081D6EB6 + movs r0, #0x80 + lsls r0, r0, #8 + cmp r4, r0 + bls _081D6EC2 +_081D6EB6: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #1 + movs r2, #2 + bl sub_08001E94 +_081D6EC2: + ldrh r2, [r5] + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0x10 + beq _081D6EE2 + adds r2, #1 + strh r2, [r5] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_081D6EE2: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D6EE8: .4byte gUnknown_3005B68 +_081D6EEC: .4byte gUnknown_20205AC + thumb_func_end sub_081D6E68 + + thumb_func_start sub_081D6EF0 +sub_081D6EF0: @ 0x081D6EF0 + push {r4, r5, lr} + sub sp, #4 + adds r5, r0, #0 + adds r4, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0x54 + bl sub_080A306C + movs r0, #1 + rsbs r0, r0, #0 + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + movs r1, #0 + str r1, [sp] + adds r1, r4, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081D6F34 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081D6F38 + str r1, [r0] + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D6F34: .4byte gUnknown_3005B60 +_081D6F38: .4byte sub_081D6F3C + thumb_func_end sub_081D6EF0 + + thumb_func_start sub_081D6F3C +sub_081D6F3C: @ 0x081D6F3C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r6, r1, #3 + ldr r7, _081D6F94 + adds r5, r6, r7 + bl sub_081D6E48 + ldr r0, _081D6F98 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _081D6F8E + ldrb r0, [r5, #2] + bl sub_080A8964 + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r0, #0 + bl sub_080006F0 + bl sub_080B9710 + bl sub_0800668C + bl sub_08008424 + strh r4, [r5] + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081D6F9C + str r1, [r0] +_081D6F8E: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D6F94: .4byte gUnknown_3005B68 +_081D6F98: .4byte gUnknown_2037C74 +_081D6F9C: .4byte sub_081D617C + thumb_func_end sub_081D6F3C + + thumb_func_start sub_081D6FA0 +sub_081D6FA0: @ 0x081D6FA0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081D7028 + mov r8, r0 + movs r1, #0x62 + movs r2, #0x48 + movs r3, #3 + bl sub_08006B0C + adds r5, r0, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r6, _081D702C + lsls r4, r5, #4 + adds r4, r4, r5 + lsls r4, r4, #2 + adds r0, r6, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, _081D7030 + str r1, [r0] + adds r0, r6, #0 + adds r0, #0x2e + adds r4, r4, r0 + mov r0, r8 + movs r1, #0x42 + movs r2, #0x68 + movs r3, #3 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4] + ldr r0, _081D7034 + movs r1, #0x55 + movs r2, #0x65 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #2] + ldr r0, _081D7038 + movs r1, #0x77 + movs r2, #0x72 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #4] + movs r0, #0 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007EC0 + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D7028: .4byte gUnknown_85FBBD0 +_081D702C: .4byte gUnknown_20205AC +_081D7030: .4byte sub_081D703C +_081D7034: .4byte gUnknown_85FBBFC +_081D7038: .4byte gUnknown_85FBC28 + thumb_func_end sub_081D6FA0 + + thumb_func_start sub_081D703C +sub_081D703C: @ 0x081D703C + push {r4, lr} + adds r3, r0, #0 + movs r0, #0x2e + adds r0, r0, r3 + mov ip, r0 + ldrh r0, [r0, #0xa] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + mov r1, ip + strh r0, [r1, #0xa] + movs r1, #7 + ands r1, r0 + cmp r1, #0 + bne _081D70A4 + ldrh r1, [r3, #0x20] + movs r2, #0x20 + ldrsh r0, [r3, r2] + cmp r0, #0x48 + beq _081D70A4 + subs r0, r1, #1 + strh r0, [r3, #0x20] + ldr r2, _081D70B8 + movs r4, #0x2e + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #1 + strh r1, [r0, #0x20] +_081D70A4: + adds r0, r3, #0 + adds r0, #0x2b + ldrb r3, [r0] + cmp r3, #1 + beq _081D7104 + cmp r3, #1 + bgt _081D70BC + cmp r3, #0 + beq _081D70C6 + b _081D7188 + .align 2, 0 +_081D70B8: .4byte gUnknown_20205AC +_081D70BC: + cmp r3, #2 + beq _081D7144 + cmp r3, #3 + beq _081D7104 + b _081D7188 +_081D70C6: + ldr r2, _081D7100 + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + mov r0, ip + movs r4, #2 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + mov r0, ip + movs r4, #4 + ldrsh r1, [r0, r4] + b _081D717E + .align 2, 0 +_081D7100: .4byte gUnknown_20205AC +_081D7104: + ldr r2, _081D713C + mov r0, ip + movs r3, #2 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D7140 + strh r1, [r0, #0x24] + mov r4, ip + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #0 + strh r3, [r0, #0x26] + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #1 + rsbs r1, r1, #0 + b _081D7178 + .align 2, 0 +_081D713C: .4byte gUnknown_20205AC +_081D7140: .4byte 0x0000FFFF +_081D7144: + ldr r2, _081D7190 + mov r3, ip + movs r4, #2 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D7194 + strh r1, [r0, #0x24] + movs r0, #2 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r3, #1 + strh r3, [r0, #0x26] + mov r4, ip + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D7198 +_081D7178: + strh r1, [r0, #0x24] + movs r0, #4 + ldrsh r1, [r4, r0] +_081D717E: + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x26] +_081D7188: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D7190: .4byte gUnknown_20205AC +_081D7194: .4byte 0x0000FFFF +_081D7198: .4byte 0x0000FFFE + thumb_func_end sub_081D703C + + thumb_func_start sub_081D719C +sub_081D719C: @ 0x081D719C + push {r4, lr} + adds r1, r0, #0 + adds r3, r1, #0 + adds r3, #0x2e + ldrh r2, [r1, #0x22] + movs r4, #0x22 + ldrsh r0, [r1, r4] + cmp r0, #0xa0 + bgt _081D71EC + adds r0, r2, #0 + adds r0, #8 + strh r0, [r1, #0x22] + ldr r2, _081D71F4 + movs r0, #0x2e + ldrsh r1, [r1, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + movs r4, #2 + ldrsh r1, [r3, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + movs r0, #4 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] +_081D71EC: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D71F4: .4byte gUnknown_20205AC + thumb_func_end sub_081D719C + + thumb_func_start sub_081D71F8 +sub_081D71F8: @ 0x081D71F8 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r5, _081D7388 + adds r0, r5, #0 + movs r1, #0x7e + movs r2, #0x60 + movs r3, #1 + bl sub_08006B0C + mov r8, r0 + mov r0, r8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + ldr r6, _081D738C + lsls r4, r0, #4 + add r4, r8 + lsls r4, r4, #2 + adds r0, r6, #0 + adds r0, #0x1c + adds r0, r4, r0 + ldr r1, _081D7390 + str r1, [r0] + adds r0, r6, #0 + adds r0, #0x2e + adds r4, r4, r0 + adds r0, r5, #0 + movs r1, #0x9e + movs r2, #0x60 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4] + adds r0, r5, #0 + movs r1, #0x7e + movs r2, #0x70 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4] + orrs r0, r1 + strh r0, [r4] + adds r0, r5, #0 + movs r1, #0x9e + movs r2, #0x70 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #0x7e + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #2] + orrs r0, r1 + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #0x9e + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #4] + adds r0, r5, #0 + movs r1, #0x5e + movs r2, #0x80 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #4] + orrs r0, r1 + strh r0, [r4, #4] + adds r0, r5, #0 + movs r1, #0x7e + movs r2, #0x80 + movs r3, #2 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #6] + adds r0, r5, #0 + movs r1, #0xae + movs r2, #0x80 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #6] + orrs r0, r1 + strh r0, [r4, #6] + ldr r0, _081D7394 + movs r1, #0xc6 + movs r2, #0x84 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #8 + strh r0, [r4, #8] + ldr r0, _081D7398 + movs r1, #0xbe + movs r2, #0x78 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrh r1, [r4, #8] + orrs r0, r1 + strh r0, [r4, #8] + ldrh r1, [r4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #1 + bl sub_08007EC0 + ldrb r1, [r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #2 + bl sub_08007EC0 + ldrh r1, [r4, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #3 + bl sub_08007EC0 + ldrb r1, [r4, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #4 + bl sub_08007EC0 + ldrh r1, [r4, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #5 + bl sub_08007EC0 + ldrb r1, [r4, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #6 + bl sub_08007EC0 + ldrh r1, [r4, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #7 + bl sub_08007EC0 + ldrb r1, [r4, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + movs r1, #8 + bl sub_08007EC0 + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D7388: .4byte gUnknown_85FBCE0 +_081D738C: .4byte gUnknown_20205AC +_081D7390: .4byte sub_081D739C +_081D7394: .4byte gUnknown_85FBD18 +_081D7398: .4byte gUnknown_85FBD38 + thumb_func_end sub_081D71F8 + + thumb_func_start sub_081D739C +sub_081D739C: @ 0x081D739C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x2e + ldrh r0, [r3, #0xa] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + strh r0, [r3, #0xa] + movs r1, #7 + ands r1, r0 + ldr r7, _081D74B0 + cmp r1, #0 + bne _081D748E + ldrh r1, [r4, #0x20] + movs r2, #0x20 + ldrsh r0, [r4, r2] + cmp r0, #0x98 + beq _081D748E + adds r0, r1, #1 + strh r0, [r4, #0x20] + ldrh r1, [r4, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r4, #0x2e] + movs r2, #0xff + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #2] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #4] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #6] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] + ldrh r0, [r3, #8] + ands r2, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r7 + ldrh r1, [r0, #0x20] + adds r1, #1 + strh r1, [r0, #0x20] +_081D748E: + adds r6, r7, #0 + movs r5, #0xff + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + adds r0, #0x2b + ldrb r2, [r0] + cmp r2, #1 + beq _081D7560 + cmp r2, #1 + bgt _081D74B4 + cmp r2, #0 + beq _081D74C0 + b _081D7648 + .align 2, 0 +_081D74B0: .4byte gUnknown_20205AC +_081D74B4: + cmp r2, #2 + bne _081D74BA + b _081D75E8 +_081D74BA: + cmp r2, #3 + beq _081D7560 + b _081D7648 +_081D74C0: + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #2] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #4] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r0, [r3, #6] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + ands r1, r5 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + b _081D7646 +_081D7560: + movs r2, #1 + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #6] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrb r1, [r3, #8] + b _081D763E +_081D75E8: + strh r2, [r4, #0x26] + ldrh r1, [r3] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r0, [r3] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r0, [r3, #2] + adds r1, r5, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 + strh r2, [r0, #0x26] + ldrh r1, [r3, #8] + ands r1, r5 +_081D763E: + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r7 +_081D7646: + strh r2, [r0, #0x26] +_081D7648: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D739C + + thumb_func_start sub_081D7650 +sub_081D7650: @ 0x081D7650 + push {lr} + adds r2, r0, #0 + movs r0, #0x2e + adds r0, r0, r2 + mov ip, r0 + ldrh r1, [r2, #0x22] + movs r3, #0x22 + ldrsh r0, [r2, r3] + cmp r0, #0xa0 + bgt _081D7744 + adds r0, r1, #0 + adds r0, #8 + strh r0, [r2, #0x22] + ldr r3, _081D7748 + ldrh r1, [r2, #0x2e] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + ldrh r0, [r2, #0x2e] + movs r2, #0xff + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r0, ip + ldrh r1, [r0, #2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r1, ip + ldrh r0, [r1, #2] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r0, ip + ldrh r1, [r0, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r1, ip + ldrh r0, [r1, #4] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r0, ip + ldrh r1, [r0, #6] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r1, ip + ldrh r0, [r1, #6] + adds r1, r2, #0 + ands r1, r0 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r0, ip + ldrh r1, [r0, #8] + lsls r1, r1, #0x10 + asrs r1, r1, #0x18 + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] + mov r1, ip + ldrh r0, [r1, #8] + ands r2, r0 + lsls r0, r2, #4 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x22] + adds r1, #8 + strh r1, [r0, #0x22] +_081D7744: + pop {r0} + bx r0 + .align 2, 0 +_081D7748: .4byte gUnknown_20205AC + thumb_func_end sub_081D7650 + + thumb_func_start sub_081D774C +sub_081D774C: @ 0x081D774C + push {r4, lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081D77C8 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r4, _081D77CC + ldr r1, [r4] + adds r1, #4 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D77D0 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D77D4 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D77C8: .4byte gUnknown_85FBD50 +_081D77CC: .4byte gUnknown_203CC2C +_081D77D0: .4byte 0x00000804 +_081D77D4: .4byte 0x00001004 + thumb_func_end sub_081D774C + + thumb_func_start sub_081D77D8 +sub_081D77D8: @ 0x081D77D8 + push {r4, lr} + sub sp, #4 + bl sub_081996B8 + ldr r1, _081D7858 + movs r4, #0 + str r4, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D785C + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D7860 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_081D780C: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D780C + ldr r0, _081D7864 + ldr r4, _081D7868 + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r0, _081D786C + ldr r1, [r4] + ldr r2, _081D7870 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D7874 + ldr r1, [r4] + ldr r2, _081D7878 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D787C + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + ldr r0, _081D7880 + bl sub_08034388 + ldr r0, _081D7884 + bl sub_080343E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D7858: .4byte gUnknown_8DA3668 +_081D785C: .4byte gUnknown_8DA5218 +_081D7860: .4byte gUnknown_8DA3F3C +_081D7864: .4byte gUnknown_8DA3C30 +_081D7868: .4byte gUnknown_203CC2C +_081D786C: .4byte gUnknown_8DA6360 +_081D7870: .4byte 0x00000804 +_081D7874: .4byte gUnknown_8DA5094 +_081D7878: .4byte 0x00001004 +_081D787C: .4byte gUnknown_8DA5050 +_081D7880: .4byte gUnknown_85FBD8C +_081D7884: .4byte gUnknown_85FBD94 + thumb_func_end sub_081D77D8 + + thumb_func_start sub_081D7888 +sub_081D7888: @ 0x081D7888 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081D78E8 + adds r6, r4, r5 + movs r0, #0xe8 + lsls r0, r0, #1 + bl sub_080A27D8 + bl sub_081D774C + bl sub_081D77D8 + movs r1, #0x94 + lsls r1, r1, #2 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081D78EC + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _081D78F0 + bl sub_080006F0 + ldr r0, _081D78F4 + movs r1, #0 + bl sub_080A8878 + movs r0, #0 + strh r0, [r6] + strh r0, [r6, #2] + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081D78F8 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D78E8: .4byte gUnknown_3005B68 +_081D78EC: .4byte 0x00000808 +_081D78F0: .4byte sub_081D6128 +_081D78F4: .4byte sub_081D7AE0 +_081D78F8: .4byte sub_081D78FC + thumb_func_end sub_081D7888 + + thumb_func_start sub_081D78FC +sub_081D78FC: @ 0x081D78FC + push {r4, r5, r6, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081D7920 + adds r4, r0, r1 + movs r0, #0 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _081D7966 + cmp r5, #1 + bgt _081D7924 + cmp r5, #0 + beq _081D7930 + b _081D7A96 + .align 2, 0 +_081D7920: .4byte gUnknown_3005B68 +_081D7924: + cmp r5, #2 + beq _081D79E0 + cmp r5, #3 + bne _081D792E + b _081D7A60 +_081D792E: + b _081D7A96 +_081D7930: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #8 + bne _081D7960 + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + strh r5, [r4, #4] + movs r0, #0x1e + strh r0, [r4, #6] + strh r5, [r4, #8] + movs r0, #7 + strh r0, [r4, #0xa] + strh r5, [r4, #2] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081D7A96 +_081D7960: + adds r0, r1, #1 + strh r0, [r4, #2] + b _081D7A96 +_081D7966: + ldrh r1, [r4, #6] + ldrh r3, [r4, #4] + adds r0, r1, r3 + strh r0, [r4, #4] + ldrh r2, [r4, #0xa] + ldrh r3, [r4, #8] + adds r0, r2, r3 + strh r0, [r4, #8] + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + cmp r0, #3 + ble _081D7982 + subs r0, r1, #3 + strh r0, [r4, #6] +_081D7982: + lsls r0, r2, #0x10 + cmp r0, #0 + beq _081D798C + subs r0, r2, #1 + strh r0, [r4, #0xa] +_081D798C: + movs r1, #4 + ldrsh r0, [r4, r1] + cmp r0, #0xff + ble _081D79B4 + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r2, #0 + strh r0, [r4, #4] + movs r1, #0 + strh r1, [r4, #6] + movs r0, #0xc + strh r0, [r4, #0xc] + movs r3, #1 + rsbs r3, r3, #0 + adds r0, r3, #0 + strh r0, [r4, #0xe] + strh r1, [r4, #2] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] +_081D79B4: + movs r1, #0xf0 + lsls r1, r1, #7 + movs r2, #0xc0 + lsls r2, r2, #5 + ldrh r0, [r4, #8] + adds r0, #0x20 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #4] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #2 + movs r3, #0x78 + bl sub_0800200C + b _081D7A96 +_081D79E0: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] + movs r1, #0xf0 + lsls r1, r1, #7 + movs r2, #0xc0 + lsls r2, r2, #5 + ldrh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x12 + adds r0, #0x20 + ldrh r3, [r4, #8] + adds r0, r0, r3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #4] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #8] + movs r5, #0 + str r5, [sp, #0xc] + movs r0, #2 + movs r3, #0x78 + bl sub_0800200C + ldrh r0, [r4, #0xe] + ldrh r1, [r4, #0xc] + adds r0, r0, r1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0xc + beq _081D7A30 + movs r0, #0xc + rsbs r0, r0, #0 + cmp r1, r0 + bne _081D7A96 +_081D7A30: + movs r2, #0xe + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4, #0xe] + movs r3, #2 + ldrsh r1, [r4, r3] + ldr r0, _081D7A5C + cmp r1, r0 + ble _081D7A96 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #6 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + b _081D7A96 + .align 2, 0 +_081D7A5C: .4byte 0x00000127 +_081D7A60: + ldrh r0, [r4, #4] + adds r0, #0x10 + strh r0, [r4, #4] + movs r1, #0xf0 + lsls r1, r1, #7 + movs r2, #0xc0 + lsls r2, r2, #5 + ldrh r0, [r4, #8] + adds r0, #0x20 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #4] + movs r3, #4 + ldrsh r0, [r4, r3] + str r0, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #2 + movs r3, #0x78 + bl sub_0800200C + adds r0, r6, #0 + bl sub_081D7AA0 +_081D7A96: + add sp, #0x10 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D78FC + + thumb_func_start sub_081D7AA0 +sub_081D7AA0: @ 0x081D7AA0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081D7AD4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D7ACE + movs r0, #0 + bl sub_080006F0 + bl sub_0800668C + bl sub_08008424 + ldr r0, _081D7AD8 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081D7ADC + str r0, [r1] +_081D7ACE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D7AD4: .4byte gUnknown_2037C74 +_081D7AD8: .4byte gUnknown_3005B60 +_081D7ADC: .4byte sub_081D617C + thumb_func_end sub_081D7AA0 + + thumb_func_start sub_081D7AE0 +sub_081D7AE0: @ 0x081D7AE0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081D7B7C + adds r4, r0, r1 + ldrh r1, [r4, #2] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081D7B90 + ldr r0, _081D7B80 + ldr r3, _081D7B84 + movs r1, #0 + ldrsh r2, [r4, r1] + lsls r2, r2, #1 + adds r1, r2, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + lsls r1, r1, #0x12 + movs r6, #0xf0 + lsls r6, r6, #0xf + adds r1, r1, r6 + asrs r1, r1, #0x10 + adds r3, #1 + adds r2, r2, r3 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r2, r2, #0x12 + movs r3, #0xa0 + lsls r3, r3, #0xf + adds r2, r2, r3 + asrs r2, r2, #0x10 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081D7B88 + lsls r3, r0, #4 + adds r3, r3, r0 + lsls r3, r3, #2 + adds r3, r3, r1 + movs r0, #0 + ldrsb r0, [r4, r0] + strh r0, [r3, #0x2e] + ldrb r2, [r3, #1] + movs r1, #0xd + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + movs r2, #3 + orrs r0, r2 + strb r0, [r3, #1] + ldrb r0, [r3, #5] + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r3, #5] + adds r0, r3, #0 + bl sub_08008140 + ldrh r1, [r4] + movs r6, #0 + ldrsh r0, [r4, r6] + cmp r0, #9 + bne _081D7B8C + adds r0, r5, #0 + bl sub_080A8964 + b _081D7B96 + .align 2, 0 +_081D7B7C: .4byte gUnknown_3005B68 +_081D7B80: .4byte gUnknown_85FBD9C +_081D7B84: .4byte gUnknown_85FBDB4 +_081D7B88: .4byte gUnknown_20205AC +_081D7B8C: + adds r0, r1, #1 + strh r0, [r4] +_081D7B90: + ldrh r0, [r4, #2] + adds r0, #1 + strh r0, [r4, #2] +_081D7B96: + pop {r4, r5, r6} + pop {r0} + bx r0 + thumb_func_end sub_081D7AE0 + + thumb_func_start sub_081D7B9C +sub_081D7B9C: @ 0x081D7B9C + push {lr} + adds r2, r0, #0 + movs r1, #0x30 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _081D7BAC + strh r0, [r2, #0x24] + b _081D7BD6 +_081D7BAC: + ldr r1, _081D7BE8 + movs r3, #0x2e + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r2, #0x24] + adds r0, r0, r3 + strh r0, [r2, #0x24] + movs r3, #0x2e + ldrsh r0, [r2, r3] + lsls r0, r0, #1 + adds r1, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x26] + adds r0, r0, r1 +_081D7BD6: + strh r0, [r2, #0x26] + ldrh r0, [r2, #0x30] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + strh r0, [r2, #0x30] + pop {r0} + bx r0 + .align 2, 0 +_081D7BE8: .4byte gUnknown_85FBDB4 + thumb_func_end sub_081D7B9C + + thumb_func_start sub_081D7BEC +sub_081D7BEC: @ 0x081D7BEC + push {r4, lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081D7C80 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _081D7C84 + ldr r1, [r4] + adds r1, #4 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D7C88 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D7C8C + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D7C90 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + bl sub_08121E00 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + movs r1, #0x82 + lsls r1, r1, #5 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D7C80: .4byte gUnknown_85FBDC8 +_081D7C84: .4byte gUnknown_203CC2C +_081D7C88: .4byte 0x00000804 +_081D7C8C: .4byte 0x00001004 +_081D7C90: .4byte 0x00001804 + thumb_func_end sub_081D7BEC + + thumb_func_start sub_081D7C94 +sub_081D7C94: @ 0x081D7C94 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + bl sub_081996B8 + ldr r1, _081D7D40 + movs r4, #0 + str r4, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D7D44 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + add r7, sp, #8 +_081D7CBC: + bl sub_081996DC + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _081D7CBC + ldr r0, _081D7D48 + ldr r5, _081D7D4C + ldr r1, [r5] + adds r1, #4 + bl sub_08034370 + ldr r0, _081D7D50 + ldr r1, [r5] + ldr r4, _081D7D54 + adds r1, r1, r4 + bl sub_08034370 + str r6, [sp, #4] + ldr r1, [r5] + ldr r0, _081D7D58 + adds r1, r1, r0 + ldr r2, _081D7D5C + add r0, sp, #4 + bl CpuFastSet + ldr r1, [r5] + adds r4, r1, r4 + ldr r0, _081D7D60 + adds r1, r1, r0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r4, #0 + bl CpuFastSet + str r6, [sp, #8] + ldr r1, [r5] + ldr r0, _081D7D64 + adds r1, r1, r0 + ldr r2, _081D7D68 + adds r0, r7, #0 + bl CpuFastSet + ldr r0, _081D7D6C + movs r1, #0 + movs r2, #0x40 + bl sub_080A11BC + ldr r0, _081D7D70 + ldr r1, _081D7D74 + strh r1, [r0] + ldr r0, _081D7D78 + strh r1, [r0] + ldr r0, _081D7D7C + bl sub_08034388 + ldr r0, _081D7D80 + bl sub_08034388 + ldr r0, _081D7D84 + bl sub_080343E4 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D7D40: .4byte gUnknown_8DA77D0 +_081D7D44: .4byte gUnknown_8DA6C64 +_081D7D48: .4byte gUnknown_8DA7D54 +_081D7D4C: .4byte gUnknown_203CC2C +_081D7D50: .4byte gUnknown_8DA7A2C +_081D7D54: .4byte 0x00001804 +_081D7D58: .4byte 0x00001004 +_081D7D5C: .4byte 0x01000200 +_081D7D60: .4byte 0x00000804 +_081D7D64: .4byte 0x00000904 +_081D7D68: .4byte 0x010000D0 +_081D7D6C: .4byte gUnknown_8DA79EC +_081D7D70: .4byte gUnknown_20373B4 +_081D7D74: .4byte 0x00007FFF +_081D7D78: .4byte gUnknown_20377B4 +_081D7D7C: .4byte gUnknown_85FBDF8 +_081D7D80: .4byte gUnknown_85FBE00 +_081D7D84: .4byte gUnknown_85FBE08 + thumb_func_end sub_081D7C94 + + thumb_func_start sub_081D7D88 +sub_081D7D88: @ 0x081D7D88 + push {r4, r5, lr} + movs r0, #6 + bl sub_080011D0 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + adds r1, r2, #0 + subs r1, #0x18 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x6f + bhi _081D7DC8 + ldr r0, _081D7DB8 + ldr r0, [r0] + ldr r3, _081D7DBC + adds r0, r0, r3 + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r1, r0 + bgt _081D7DC8 + ldr r1, _081D7DC0 + ldr r3, _081D7DC4 + b _081D7DCE + .align 2, 0 +_081D7DB8: .4byte gUnknown_203CC2C +_081D7DBC: .4byte 0x00002008 +_081D7DC0: .4byte 0x04000052 +_081D7DC4: .4byte 0x00000D08 +_081D7DC8: + ldr r1, _081D7DF4 + movs r3, #0x80 + lsls r3, r3, #5 +_081D7DCE: + adds r0, r3, #0 + strh r0, [r1] + cmp r2, #0 + bne _081D7E1C + ldr r0, _081D7DF8 + ldr r1, [r0] + ldr r2, _081D7DFC + adds r3, r1, r2 + ldrh r4, [r3] + movs r1, #0 + ldrsh r2, [r3, r1] + ldr r1, _081D7E00 + adds r5, r0, #0 + cmp r2, r1 + bgt _081D7E10 + cmp r2, #0x27 + bgt _081D7E04 + adds r0, r4, #4 + b _081D7E0E + .align 2, 0 +_081D7DF4: .4byte 0x04000052 +_081D7DF8: .4byte gUnknown_203CC2C +_081D7DFC: .4byte 0x00002008 +_081D7E00: .4byte 0x00001FFF +_081D7E04: + cmp r2, #0x4f + bgt _081D7E0C + adds r0, r4, #2 + b _081D7E0E +_081D7E0C: + adds r0, r4, #1 +_081D7E0E: + strh r0, [r3] +_081D7E10: + ldr r1, [r5] + ldr r2, _081D7E24 + adds r1, r1, r2 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_081D7E1C: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D7E24: .4byte 0x0000200A + thumb_func_end sub_081D7D88 + + thumb_func_start sub_081D7E28 +sub_081D7E28: @ 0x081D7E28 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r6, _081D7E9C + adds r5, r4, r6 + bl sub_081D7BEC + bl sub_081D7C94 + ldr r1, _081D7EA0 + movs r0, #0x50 + bl sub_08001200 + movs r0, #0x80 + lsls r0, r0, #5 + mov r8, r0 + movs r0, #0x52 + mov r1, r8 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _081D7EA4 + bl sub_080006F0 + ldr r0, _081D7EA8 + ldr r0, [r0] + ldr r1, _081D7EAC + adds r2, r0, r1 + movs r1, #0 + strh r1, [r2] + ldr r2, _081D7EB0 + adds r0, r0, r2 + strh r1, [r0] + strh r1, [r5] + strh r1, [r5, #2] + strh r1, [r5, #4] + strh r1, [r5, #6] + mov r0, r8 + strh r0, [r5, #8] + subs r6, #8 + adds r4, r4, r6 + ldr r0, _081D7EB4 + str r0, [r4] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D7E9C: .4byte gUnknown_3005B68 +_081D7EA0: .4byte 0x00001E41 +_081D7EA4: .4byte sub_081D6128 +_081D7EA8: .4byte gUnknown_203CC2C +_081D7EAC: .4byte 0x00002008 +_081D7EB0: .4byte 0x0000200A +_081D7EB4: .4byte sub_081D7EB8 + thumb_func_end sub_081D7E28 + + thumb_func_start sub_081D7EB8 +sub_081D7EB8: @ 0x081D7EB8 + push {r4, r5, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + ldr r1, _081D7EDC + adds r5, r0, r1 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #4 + bhi _081D7FB0 + lsls r0, r0, #2 + ldr r1, _081D7EE0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D7EDC: .4byte gUnknown_3005B68 +_081D7EE0: .4byte _081D7EE4 +_081D7EE4: @ jump table + .4byte _081D7EF8 @ case 0 + .4byte _081D7F18 @ case 1 + .4byte _081D7F56 @ case 2 + .4byte _081D7F76 @ case 3 + .4byte _081D7F92 @ case 4 +_081D7EF8: + ldrh r1, [r5, #2] + movs r2, #2 + ldrsh r0, [r5, r2] + cmp r0, #8 + bne _081D7F70 + movs r0, #1 + rsbs r0, r0, #0 + movs r4, #0 + str r4, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + strh r4, [r5, #2] + b _081D7F8A +_081D7F18: + ldr r0, _081D7F48 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _081D7FB0 + ldrh r2, [r5, #2] + movs r3, #2 + ldrsh r0, [r5, r3] + cmp r0, #0xa + bne _081D7F50 + strh r1, [r5, #2] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + ldr r0, _081D7F4C + bl sub_080006FC + movs r0, #3 + bl sub_08001274 + b _081D7FB0 + .align 2, 0 +_081D7F48: .4byte gUnknown_2037C74 +_081D7F4C: .4byte sub_081D7D88 +_081D7F50: + adds r0, r2, #1 + strh r0, [r5, #2] + b _081D7FB0 +_081D7F56: + ldrh r1, [r5, #2] + movs r2, #2 + ldrsh r0, [r5, r2] + cmp r0, #0x50 + bne _081D7F70 + movs r0, #0 + strh r0, [r5, #2] + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + bl sub_081D8008 + b _081D7FB0 +_081D7F70: + adds r0, r1, #1 + strh r0, [r5, #2] + b _081D7FB0 +_081D7F76: + ldrh r0, [r5, #2] + adds r0, #1 + strh r0, [r5, #2] + lsls r0, r0, #0x10 + movs r1, #0xb8 + lsls r1, r1, #0x11 + cmp r0, r1 + bne _081D7FB0 + movs r0, #0 + strh r0, [r5, #2] +_081D7F8A: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _081D7FB0 +_081D7F92: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081D7FB8 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081D7FBC + str r1, [r0] +_081D7FB0: + add sp, #4 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D7FB8: .4byte gUnknown_3005B60 +_081D7FBC: .4byte sub_081D7FC0 + thumb_func_end sub_081D7EB8 + + thumb_func_start sub_081D7FC0 +sub_081D7FC0: @ 0x081D7FC0 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + ldr r0, _081D7FFC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D7FF4 + movs r0, #0 + bl sub_080006F0 + movs r0, #0 + bl sub_080006FC + bl sub_0800668C + bl sub_08008424 + ldr r0, _081D8000 + lsls r1, r4, #2 + adds r1, r1, r4 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081D8004 + str r0, [r1] +_081D7FF4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D7FFC: .4byte gUnknown_2037C74 +_081D8000: .4byte gUnknown_3005B60 +_081D8004: .4byte sub_081D617C + thumb_func_end sub_081D7FC0 + + thumb_func_start sub_081D8008 +sub_081D8008: @ 0x081D8008 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _081D8078 + movs r1, #0xa0 + movs r2, #0 + movs r3, #0 + bl sub_08006B0C + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + lsls r5, r6, #4 + adds r5, r5, r6 + lsls r5, r5, #2 + ldr r4, _081D807C + adds r0, r5, r4 + mov r8, r0 + ldr r0, _081D8080 + movs r2, #0x30 + rsbs r2, r2, #0 + movs r1, #0xb8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1] + adds r3, r4, #0 + subs r3, #0x2e + subs r4, #0x12 + adds r4, r5, r4 + ldr r0, _081D8084 + str r0, [r4] + adds r5, r5, r3 + ldrb r0, [r5, #5] + movs r2, #0xc + orrs r0, r2 + strb r0, [r5, #5] + movs r4, #0 + ldrsh r1, [r1, r4] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #5] + orrs r1, r2 + strb r1, [r0, #5] + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 +_081D8078: .4byte gUnknown_85FBE10 +_081D807C: .4byte gUnknown_20205DA +_081D8080: .4byte gUnknown_85FBE28 +_081D8084: .4byte sub_081D8088 + thumb_func_end sub_081D8008 + + thumb_func_start sub_081D8088 +sub_081D8088: @ 0x081D8088 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x2e + movs r0, #4 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _081D80A0 + movs r0, #0xc + strh r0, [r4, #6] + movs r0, #8 + b _081D80FE +_081D80A0: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D80B0 + movs r0, #9 + strh r0, [r4, #6] + movs r0, #7 + b _081D80FE +_081D80B0: + movs r0, #0x86 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D80C0 + movs r0, #8 + strh r0, [r4, #6] + movs r0, #6 + b _081D80FE +_081D80C0: + movs r0, #0x8c + lsls r0, r0, #1 + cmp r1, r0 + bne _081D80D0 + movs r0, #7 + strh r0, [r4, #6] + movs r0, #5 + b _081D80FE +_081D80D0: + movs r0, #0x92 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D80E0 + movs r0, #6 + strh r0, [r4, #6] + movs r0, #4 + b _081D80FE +_081D80E0: + movs r0, #0x98 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D80F0 + movs r0, #5 + strh r0, [r4, #6] + movs r0, #3 + b _081D80FE +_081D80F0: + movs r0, #0xa0 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D8100 + movs r0, #4 + strh r0, [r4, #6] + movs r0, #2 +_081D80FE: + strh r0, [r4, #8] +_081D8100: + movs r1, #4 + ldrsh r0, [r4, r1] + movs r2, #6 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, #0 + bne _081D812A + ldrh r0, [r5, #0x24] + subs r0, #1 + strh r0, [r5, #0x24] + ldr r2, _081D8160 + movs r0, #0 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x24] + subs r1, #1 + strh r1, [r0, #0x24] +_081D812A: + movs r1, #4 + ldrsh r0, [r4, r1] + movs r2, #8 + ldrsh r1, [r4, r2] + bl __modsi3 + cmp r0, #0 + bne _081D8154 + ldrh r0, [r5, #0x26] + adds r0, #1 + strh r0, [r5, #0x26] + ldr r2, _081D8160 + movs r0, #0 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x26] + adds r1, #1 + strh r1, [r0, #0x26] +_081D8154: + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D8160: .4byte gUnknown_20205AC + thumb_func_end sub_081D8088 + + thumb_func_start sub_081D8164 +sub_081D8164: @ 0x081D8164 + push {r4, lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081D81F8 + movs r0, #0 + movs r2, #4 + bl sub_08001800 + ldr r4, _081D81FC + ldr r1, [r4] + adds r1, #4 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D8200 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D8204 + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D8208 + adds r1, r1, r0 + movs r0, #3 + bl sub_0800212C + bl sub_08121E00 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r0, #3 + bl sub_08199654 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #3 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D81F8: .4byte gUnknown_85FBE40 +_081D81FC: .4byte gUnknown_203CC2C +_081D8200: .4byte 0x00000804 +_081D8204: .4byte 0x00001004 +_081D8208: .4byte 0x00001804 + thumb_func_end sub_081D8164 + + thumb_func_start sub_081D820C +sub_081D820C: @ 0x081D820C + push {r4, lr} + sub sp, #4 + bl sub_081996B8 + ldr r1, _081D828C + movs r4, #0 + str r4, [sp] + movs r0, #1 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D8290 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D8294 + str r4, [sp] + movs r0, #3 + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_081D8240: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D8240 + ldr r0, _081D8298 + ldr r4, _081D829C + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r0, _081D82A0 + ldr r1, [r4] + ldr r2, _081D82A4 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D82A8 + ldr r1, [r4] + ldr r2, _081D82AC + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D82B0 + ldr r1, [r4] + ldr r2, _081D82B4 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D82B8 + movs r1, #0 + movs r2, #0x80 + bl sub_080A11BC + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D828C: .4byte gUnknown_8DA8364 +_081D8290: .4byte gUnknown_8DA8154 +_081D8294: .4byte gUnknown_8DA7ED8 +_081D8298: .4byte gUnknown_8DA9014 +_081D829C: .4byte gUnknown_203CC2C +_081D82A0: .4byte gUnknown_8DA8DE8 +_081D82A4: .4byte 0x00000804 +_081D82A8: .4byte gUnknown_8DA825C +_081D82AC: .4byte 0x00001004 +_081D82B0: .4byte gUnknown_8DA8014 +_081D82B4: .4byte 0x00001804 +_081D82B8: .4byte gUnknown_8DA912C + thumb_func_end sub_081D820C + + thumb_func_start sub_081D82BC +sub_081D82BC: @ 0x081D82BC + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081D830C + adds r6, r4, r5 + bl sub_081D8164 + bl sub_081D820C + bl sub_081D6204 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _081D8310 + bl sub_080006F0 + movs r0, #0 + strh r0, [r6] + strh r0, [r6, #2] + ldr r0, _081D8314 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #4] + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081D8318 + str r0, [r4] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D830C: .4byte gUnknown_3005B68 +_081D8310: .4byte sub_081D6128 +_081D8314: .4byte sub_081D8414 +_081D8318: .4byte sub_081D831C + thumb_func_end sub_081D82BC + + thumb_func_start sub_081D831C +sub_081D831C: @ 0x081D831C + push {r4, r5, r6, lr} + sub sp, #4 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + ldr r1, _081D836C + adds r4, r0, r1 + bl sub_081D84F0 + ldrh r1, [r4, #6] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _081D8352 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + bgt _081D8352 + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0x59 + bgt _081D8352 + movs r0, #0x67 + bl sub_080A306C +_081D8352: + ldrh r0, [r4, #6] + adds r0, #1 + strh r0, [r4, #6] + movs r0, #0 + ldrsh r5, [r4, r0] + cmp r5, #1 + beq _081D8398 + cmp r5, #1 + bgt _081D8370 + cmp r5, #0 + beq _081D837A + b _081D8402 + .align 2, 0 +_081D836C: .4byte gUnknown_3005B68 +_081D8370: + cmp r5, #2 + beq _081D83C8 + cmp r5, #3 + beq _081D83E4 + b _081D8402 +_081D837A: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #8 + bne _081D83DE + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + strh r5, [r4, #2] + b _081D83D6 +_081D8398: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0x7f + bne _081D83DE + movs r0, #0 + strh r0, [r4, #2] + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + ldr r2, _081D83C0 + movs r0, #4 + ldrsh r1, [r4, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r2 + ldr r1, _081D83C4 + b _081D8400 + .align 2, 0 +_081D83C0: .4byte gUnknown_3005B60 +_081D83C4: .4byte sub_081D8468 +_081D83C8: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0xc + bne _081D83DE + movs r0, #0 + strh r0, [r4, #2] +_081D83D6: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081D8402 +_081D83DE: + adds r0, r1, #1 + strh r0, [r4, #2] + b _081D8402 +_081D83E4: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldr r1, _081D840C + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + ldr r1, _081D8410 +_081D8400: + str r1, [r0] +_081D8402: + add sp, #4 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D840C: .4byte gUnknown_3005B60 +_081D8410: .4byte sub_081D8528 + thumb_func_end sub_081D831C + + thumb_func_start sub_081D8414 +sub_081D8414: @ 0x081D8414 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D8464 + adds r5, r1, r0 + ldrh r1, [r5, #0x1e] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081D8458 + bl sub_0806F050 + movs r4, #7 + adds r1, r4, #0 + ands r1, r0 + subs r1, #4 + lsls r1, r1, #8 + movs r0, #1 + movs r2, #0 + bl sub_08001D1C + bl sub_0806F050 + ands r4, r0 + subs r4, #4 + lsls r4, r4, #8 + movs r0, #1 + adds r1, r4, #0 + movs r2, #0 + bl sub_08001E94 +_081D8458: + ldrh r0, [r5, #0x1e] + adds r0, #1 + strh r0, [r5, #0x1e] + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D8464: .4byte gUnknown_3005B68 + thumb_func_end sub_081D8414 + + thumb_func_start sub_081D8468 +sub_081D8468: @ 0x081D8468 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D84A8 + adds r4, r1, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081D84AC + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #1 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + movs r0, #0xa + strh r0, [r4, #2] + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r1, #0 + b _081D84E6 + .align 2, 0 +_081D84A8: .4byte gUnknown_3005B68 +_081D84AC: + cmp r0, #1 + bne _081D84E8 + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r1, r1, #8 + movs r0, #1 + movs r2, #2 + bl sub_08001D1C + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r1, r1, #8 + movs r0, #1 + movs r2, #1 + bl sub_08001E94 + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + adds r0, r0, r1 + strh r0, [r4, #2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa + rsbs r1, r1, #0 + cmp r0, r1 + bne _081D84E8 + movs r1, #4 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 +_081D84E6: + strh r0, [r4, #4] +_081D84E8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D8468 + + thumb_func_start sub_081D84F0 +sub_081D84F0: @ 0x081D84F0 + push {r4, lr} + movs r4, #0x80 + lsls r4, r4, #3 + movs r0, #2 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001D1C + movs r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + movs r4, #0x80 + lsls r4, r4, #4 + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_08001D1C + movs r0, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_08001E94 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081D84F0 + + thumb_func_start sub_081D8528 +sub_081D8528: @ 0x081D8528 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r5, r1, #3 + ldr r6, _081D8568 + adds r4, r5, r6 + bl sub_081D84F0 + ldr r0, _081D856C + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081D8562 + movs r0, #0 + bl sub_080006F0 + bl sub_081D6240 + ldrb r0, [r4, #4] + bl sub_080A8964 + adds r0, r6, #0 + subs r0, #8 + adds r0, r5, r0 + ldr r1, _081D8570 + str r1, [r0] +_081D8562: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D8568: .4byte gUnknown_3005B68 +_081D856C: .4byte gUnknown_2037C74 +_081D8570: .4byte sub_081D617C + thumb_func_end sub_081D8528 + + thumb_func_start sub_081D8574 +sub_081D8574: @ 0x081D8574 + push {r4, lr} + bl sub_08121D90 + movs r0, #0 + bl sub_080017D4 + ldr r1, _081D85F0 + movs r0, #1 + movs r2, #3 + bl sub_08001800 + ldr r4, _081D85F4 + ldr r1, [r4] + adds r1, #4 + movs r0, #0 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D85F8 + adds r1, r1, r0 + movs r0, #1 + bl sub_0800212C + ldr r1, [r4] + ldr r0, _081D85FC + adds r1, r1, r0 + movs r0, #2 + bl sub_0800212C + bl sub_08121E00 + movs r0, #0 + bl sub_08199654 + movs r0, #1 + bl sub_08199654 + movs r0, #2 + bl sub_08199654 + movs r1, #0xc1 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001144 + movs r0, #0 + bl sub_08001B48 + movs r0, #1 + bl sub_08001B48 + movs r0, #2 + bl sub_08001B48 + movs r0, #0x50 + movs r1, #0 + bl sub_08001144 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D85F0: .4byte gUnknown_85FC004 +_081D85F4: .4byte gUnknown_203CC2C +_081D85F8: .4byte 0x00000804 +_081D85FC: .4byte 0x00001004 + thumb_func_end sub_081D8574 + + thumb_func_start sub_081D8600 +sub_081D8600: @ 0x081D8600 + push {r4, lr} + sub sp, #4 + bl sub_081996B8 + ldr r1, _081D86A4 + movs r4, #0 + str r4, [sp] + movs r0, #2 + movs r2, #0 + movs r3, #0 + bl sub_08199728 + ldr r1, _081D86A8 + str r4, [sp] + movs r0, #0 + movs r2, #0 + movs r3, #0 + bl sub_08199728 +_081D8626: + bl sub_081996DC + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D8626 + ldr r0, _081D86AC + ldr r4, _081D86B0 + ldr r1, [r4] + ldr r2, _081D86B4 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D86B8 + ldr r1, [r4] + adds r1, #4 + bl sub_08034370 + ldr r0, _081D86BC + ldr r1, [r4] + ldr r2, _081D86C0 + adds r1, r1, r2 + bl sub_08034370 + ldr r0, _081D86C4 + movs r1, #0 + movs r2, #0x60 + bl sub_080A11BC + ldr r0, _081D86C8 + bl sub_08034388 + ldr r0, _081D86CC + bl sub_08034388 + ldr r0, _081D86D0 + bl sub_08034388 + ldr r0, _081D86D4 + bl sub_08034388 + ldr r0, _081D86D8 + bl sub_08034388 + ldr r0, _081D86DC + bl sub_08034388 + ldr r0, _081D86E0 + bl sub_080343E4 + ldr r0, _081D86E4 + bl sub_080343E4 + ldr r0, _081D86E8 + bl sub_080343E4 + ldr r0, _081D86EC + bl sub_080343E4 + add sp, #4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D86A4: .4byte gUnknown_8DAADCC +_081D86A8: .4byte gUnknown_8DAAB5C +_081D86AC: .4byte gUnknown_8DAB0FC +_081D86B0: .4byte gUnknown_203CC2C +_081D86B4: .4byte 0x00000804 +_081D86B8: .4byte gUnknown_8DAAEC4 +_081D86BC: .4byte gUnknown_8DAB240 +_081D86C0: .4byte 0x00001004 +_081D86C4: .4byte gUnknown_8DAB294 +_081D86C8: .4byte gUnknown_85FBF24 +_081D86CC: .4byte gUnknown_85FBF2C +_081D86D0: .4byte gUnknown_85FBF34 +_081D86D4: .4byte gUnknown_85FBF3C +_081D86D8: .4byte gUnknown_85FBF44 +_081D86DC: .4byte gUnknown_85FBF4C +_081D86E0: .4byte gUnknown_85FBF54 +_081D86E4: .4byte gUnknown_85FBF5C +_081D86E8: .4byte gUnknown_85FBF64 +_081D86EC: .4byte gUnknown_85FBF6C + thumb_func_end sub_081D8600 + + thumb_func_start sub_081D86F0 +sub_081D86F0: @ 0x081D86F0 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r5, _081D87A4 + adds r6, r4, r5 + bl sub_081D8574 + bl sub_081D8600 + bl sub_081D6204 + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001220 + ldr r1, _081D87A8 + movs r0, #0x50 + bl sub_08001144 + ldr r1, _081D87AC + movs r0, #0x52 + bl sub_08001144 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_080A22E8 + ldr r0, _081D87B0 + bl sub_080006F0 + movs r0, #0 + strh r0, [r6] + strh r0, [r6, #2] + subs r5, #8 + adds r4, r4, r5 + ldr r0, _081D87B4 + str r0, [r4] + ldr r0, _081D87B8 + movs r1, #0 + bl sub_080A8878 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #4] + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #0 + strh r2, [r0, #8] + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r2, [r0, #0xa] + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r2, [r0, #0xc] + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + movs r2, #1 + strh r2, [r0, #0xe] + movs r0, #4 + ldrsh r1, [r6, r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #3 + adds r0, r0, r5 + strh r2, [r0, #0x10] + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D87A4: .4byte gUnknown_3005B68 +_081D87A8: .4byte 0x00000241 +_081D87AC: .4byte 0x00000E09 +_081D87B0: .4byte sub_081D6128 +_081D87B4: .4byte sub_081D87BC +_081D87B8: .4byte sub_081D88EC + thumb_func_end sub_081D86F0 + + thumb_func_start sub_081D87BC +sub_081D87BC: @ 0x081D87BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r7, r0, #3 + ldr r0, _081D87E8 + mov r8, r0 + adds r4, r7, r0 + movs r1, #0 + ldrsh r5, [r4, r1] + cmp r5, #1 + beq _081D881A + cmp r5, #1 + bgt _081D87EC + cmp r5, #0 + beq _081D87F6 + b _081D88DC + .align 2, 0 +_081D87E8: .4byte gUnknown_3005B68 +_081D87EC: + cmp r5, #2 + beq _081D885A + cmp r5, #3 + beq _081D88C0 + b _081D88DC +_081D87F6: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #8 + bne _081D8854 + adds r0, r6, #0 + bl sub_081D89E4 + movs r0, #1 + rsbs r0, r0, #0 + str r5, [sp] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A139C + strh r5, [r4, #2] + b _081D886C +_081D881A: + ldr r2, _081D884C + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #0x1c + adds r0, r0, r2 + ldr r1, [r0] + ldr r0, _081D8850 + cmp r1, r0 + bne _081D88DC + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0x40 + bne _081D8854 + adds r0, r6, #0 + bl sub_081D8E10 + adds r0, r6, #0 + bl sub_081D8D14 + b _081D8868 + .align 2, 0 +_081D884C: .4byte gUnknown_20205AC +_081D8850: .4byte sub_081D911C +_081D8854: + adds r0, r1, #1 + strh r0, [r4, #2] + b _081D88DC +_081D885A: + ldrh r2, [r4, #2] + movs r0, #2 + ldrsh r1, [r4, r0] + movs r0, #0xe0 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D8874 +_081D8868: + movs r0, #0 + strh r0, [r4, #2] +_081D886C: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081D88DC +_081D8874: + adds r0, r2, #1 + strh r0, [r4, #2] + movs r1, #2 + ldrsh r0, [r4, r1] + movs r1, #0x90 + bl __modsi3 + lsls r0, r0, #0x10 + asrs r4, r0, #0x10 + cmp r4, #0 + bne _081D88DC + ldr r0, _081D88B4 + ldr r1, _081D88B8 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + ldr r0, _081D88BC + str r4, [sp] + str r4, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0 + movs r2, #0x10 + movs r3, #0 + bl sub_080A250C + b _081D88DC + .align 2, 0 +_081D88B4: .4byte 0x0000FFFE +_081D88B8: .4byte 0x0000FFFF +_081D88BC: .4byte 0xFFFF0000 +_081D88C0: + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #0 + str r1, [sp] + movs r1, #4 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + mov r0, r8 + subs r0, #8 + adds r0, r7, r0 + ldr r1, _081D88E8 + str r1, [r0] +_081D88DC: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D88E8: .4byte sub_081D8970 + thumb_func_end sub_081D87BC + + thumb_func_start sub_081D88EC +sub_081D88EC: @ 0x081D88EC + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D896C + adds r4, r1, r0 + ldrh r1, [r4] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _081D8960 + ldrh r1, [r4, #2] + adds r1, #0xe + lsls r1, r1, #8 + movs r2, #0xf8 + lsls r2, r2, #5 + adds r0, r2, #0 + ands r1, r0 + ldrh r0, [r4, #4] + adds r0, #9 + movs r2, #0xf + ands r0, r2 + orrs r1, r0 + movs r0, #0x52 + bl sub_08001144 + ldrh r1, [r4, #2] + ldrh r0, [r4, #6] + subs r1, r1, r0 + strh r1, [r4, #2] + ldrh r0, [r4, #8] + ldrh r2, [r4, #4] + adds r0, r0, r2 + strh r0, [r4, #4] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + beq _081D8944 + cmp r1, #0 + bne _081D894C +_081D8944: + movs r1, #6 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #6] +_081D894C: + movs r2, #4 + ldrsh r0, [r4, r2] + cmp r0, #3 + beq _081D8958 + cmp r0, #0 + bne _081D8960 +_081D8958: + movs r1, #8 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + strh r0, [r4, #8] +_081D8960: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D896C: .4byte gUnknown_3005B68 + thumb_func_end sub_081D88EC + + thumb_func_start sub_081D8970 +sub_081D8970: @ 0x081D8970 + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r6, r1, #3 + ldr r7, _081D89CC + adds r4, r6, r7 + ldr r0, _081D89D0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _081D89DC + bl sub_080A27F8 + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081D89B4 + movs r0, #0 + bl sub_080006F0 + bl sub_081D6240 + bl sub_0800668C + bl sub_08008424 + ldrb r0, [r4, #4] + bl sub_080A8964 +_081D89B4: + ldrh r1, [r4, #2] + movs r2, #2 + ldrsh r0, [r4, r2] + cmp r0, #0x20 + bne _081D89D8 + strh r5, [r4, #2] + adds r0, r7, #0 + subs r0, #8 + adds r0, r6, r0 + ldr r1, _081D89D4 + str r1, [r0] + b _081D89DC + .align 2, 0 +_081D89CC: .4byte gUnknown_3005B68 +_081D89D0: .4byte gUnknown_2037C74 +_081D89D4: .4byte sub_081D617C +_081D89D8: + adds r0, r1, #1 + strh r0, [r4, #2] +_081D89DC: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D8970 + + thumb_func_start sub_081D89E4 +sub_081D89E4: @ 0x081D89E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r4, r0, #2 + adds r4, r4, r0 + lsls r4, r4, #3 + ldr r0, _081D8B94 + adds r4, r4, r0 + ldr r0, _081D8B98 + movs r1, #0x40 + movs r2, #0x78 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #6] + movs r0, #6 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _081D8B9C + mov sl, r1 + adds r7, r0, r1 + ldr r0, _081D8BA0 + movs r1, #0x10 + movs r2, #0x82 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7] + movs r2, #0x2e + rsbs r2, r2, #0 + add r2, sl + mov r8, r2 + movs r1, #6 + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + movs r6, #0xd + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r2 + movs r2, #4 + mov sb, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + movs r1, #0 + ldrsh r0, [r7, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + adds r0, r6, #0 + ands r0, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + ldr r5, _081D8BA4 + adds r0, r5, #0 + movs r1, #0xa0 + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #8] + movs r0, #8 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, sl + adds r7, r0, r1 + adds r0, r5, #0 + movs r1, #0xc0 + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7] + adds r0, r5, #0 + movs r1, #0xe0 + movs r2, #0x80 + movs r3, #1 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #2] + movs r2, #8 + ldrsh r0, [r4, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + adds r0, r6, #0 + ands r0, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + movs r1, #0 + ldrsh r0, [r7, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + adds r0, r6, #0 + ands r0, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + movs r1, #2 + ldrsh r0, [r7, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + adds r0, r6, #0 + ands r0, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + movs r0, #0 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + movs r1, #1 + bl sub_08007EC0 + movs r2, #2 + ldrsh r1, [r7, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + movs r1, #2 + bl sub_08007EC0 + ldr r0, _081D8BA8 + movs r2, #0x41 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0xa] + movs r0, #0xa + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + mov r1, sl + adds r7, r0, r1 + ldr r0, _081D8BAC + movs r2, #0x71 + rsbs r2, r2, #0 + movs r1, #0x78 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7] + movs r2, #0xa + ldrsh r0, [r4, r2] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + add r1, r8 + ldrb r2, [r1, #5] + adds r0, r6, #0 + ands r0, r2 + mov r2, sb + orrs r0, r2 + strb r0, [r1, #5] + movs r0, #0 + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + ldrb r1, [r0, #5] + ands r6, r1 + orrs r6, r2 + strb r6, [r0, #5] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D8B94: .4byte gUnknown_3005B68 +_081D8B98: .4byte gUnknown_85FBF74 +_081D8B9C: .4byte gUnknown_20205DA +_081D8BA0: .4byte gUnknown_85FBF8C +_081D8BA4: .4byte gUnknown_85FBFA4 +_081D8BA8: .4byte gUnknown_85FBFBC +_081D8BAC: .4byte gUnknown_85FBFD4 + thumb_func_end sub_081D89E4 + + thumb_func_start sub_081D8BB0 +sub_081D8BB0: @ 0x081D8BB0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + ldr r0, _081D8C68 + adds r2, r2, r0 + ldr r3, _081D8C6C + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + movs r1, #0x1c + adds r1, r1, r3 + mov r8, r1 + add r0, r8 + ldr r6, _081D8C70 + str r6, [r0] + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r4, #0 + strh r4, [r0, #0x36] + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x38] + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r5, #4 + strh r5, [r0, #0x3a] + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x3c] + movs r0, #8 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + add r0, r8 + str r6, [r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x36] + movs r0, #8 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r4, [r0, #0x38] + movs r0, #8 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r5, [r0, #0x3a] + movs r0, #8 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #1 + strh r1, [r0, #0x3c] + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D8C68: .4byte gUnknown_3005B68 +_081D8C6C: .4byte gUnknown_20205AC +_081D8C70: .4byte sub_081D8C74 + thumb_func_end sub_081D8BB0 + + thumb_func_start sub_081D8C74 +sub_081D8C74: @ 0x081D8C74 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x36] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _081D8D08 + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081D8CAC + ldrh r0, [r4, #0x20] + ldrh r3, [r4, #0x3a] + subs r0, r0, r3 + strh r0, [r4, #0x20] + ldr r2, _081D8CA8 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, r1, r3 + b _081D8CDA + .align 2, 0 +_081D8CA8: .4byte gUnknown_20205AC +_081D8CAC: + ldrh r2, [r4, #0x3a] + ldrh r1, [r4, #0x20] + adds r0, r2, r1 + strh r0, [r4, #0x20] + ldr r3, _081D8D00 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r0, #0x20] + adds r2, r2, r1 + strh r2, [r0, #0x20] + movs r2, #0x30 + ldrsh r1, [r4, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrh r1, [r4, #0x3a] + ldrh r2, [r0, #0x20] + adds r1, r1, r2 +_081D8CDA: + strh r1, [r0, #0x20] + ldrh r1, [r4, #0x38] + adds r1, #1 + movs r2, #0 + strh r1, [r4, #0x38] + ldrh r0, [r4, #0x3a] + subs r0, r0, r1 + strh r0, [r4, #0x3a] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #3 + bne _081D8D08 + strh r2, [r4, #0x36] + strh r2, [r4, #0x38] + strh r2, [r4, #0x3a] + ldr r0, _081D8D04 + str r0, [r4, #0x1c] + b _081D8D0E + .align 2, 0 +_081D8D00: .4byte gUnknown_20205AC +_081D8D04: .4byte sub_08007140 +_081D8D08: + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] +_081D8D0E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_081D8C74 + + thumb_func_start sub_081D8D14 +sub_081D8D14: @ 0x081D8D14 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #3 + ldr r0, _081D8D50 + adds r2, r2, r0 + ldr r3, _081D8D54 + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x1c + adds r0, r0, r1 + ldr r1, _081D8D58 + str r1, [r0] + movs r0, #6 + ldrsh r1, [r2, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + movs r1, #1 + bl sub_08007EC0 + pop {r0} + bx r0 + .align 2, 0 +_081D8D50: .4byte gUnknown_3005B68 +_081D8D54: .4byte gUnknown_20205AC +_081D8D58: .4byte sub_081D8D5C + thumb_func_end sub_081D8D14 + + thumb_func_start sub_081D8D5C +sub_081D8D5C: @ 0x081D8D5C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + beq _081D8DC4 + cmp r0, #1 + bgt _081D8D72 + cmp r0, #0 + beq _081D8D7C + b _081D8E00 +_081D8D72: + cmp r0, #2 + beq _081D8D7C + cmp r0, #3 + beq _081D8DC4 + b _081D8E00 +_081D8D7C: + adds r0, r4, #0 + adds r0, #0x2c + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + movs r1, #0xc + bl __umodsi3 + lsls r0, r0, #0x18 + ldr r2, _081D8DC0 + cmp r0, #0 + bne _081D8DAC + ldrh r0, [r4, #0x20] + subs r0, #2 + strh r0, [r4, #0x20] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x20] + subs r1, #2 + strh r1, [r0, #0x20] +_081D8DAC: + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r2 + movs r0, #0 + strh r0, [r1, #0x26] + b _081D8E00 + .align 2, 0 +_081D8DC0: .4byte gUnknown_20205AC +_081D8DC4: + ldr r2, _081D8E08 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, _081D8E0C + strh r1, [r0, #0x26] + adds r0, r4, #0 + adds r0, #0x2c + ldrb r1, [r0] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1a + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _081D8E00 + ldrh r0, [r4, #0x22] + adds r0, #1 + strh r0, [r4, #0x22] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrh r1, [r0, #0x22] + adds r1, #1 + strh r1, [r0, #0x22] +_081D8E00: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D8E08: .4byte gUnknown_20205AC +_081D8E0C: .4byte 0x0000FFFE + thumb_func_end sub_081D8D5C + + thumb_func_start sub_081D8E10 +sub_081D8E10: @ 0x081D8E10 + push {r4, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _081D8E58 + adds r1, r1, r0 + movs r0, #8 + ldrsh r1, [r1, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r2, _081D8E5C + adds r4, r0, r2 + subs r2, #0x12 + adds r0, r0, r2 + ldr r3, _081D8E60 + str r3, [r0] + movs r0, #0 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + str r3, [r0] + movs r0, #2 + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + str r3, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D8E58: .4byte gUnknown_3005B68 +_081D8E5C: .4byte gUnknown_20205DA +_081D8E60: .4byte sub_081D8E64 + thumb_func_end sub_081D8E10 + + thumb_func_start sub_081D8E64 +sub_081D8E64: @ 0x081D8E64 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrh r1, [r7, #0x36] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _081D8E8C + ldrh r1, [r7, #0x24] + movs r2, #0x24 + ldrsh r0, [r7, r2] + cmp r0, #1 + bne _081D8E88 + ldr r0, _081D8E84 + b _081D8E8A + .align 2, 0 +_081D8E84: .4byte 0x0000FFFF +_081D8E88: + movs r0, #1 +_081D8E8A: + strh r0, [r7, #0x24] +_081D8E8C: + movs r1, #0x38 + ldrsh r0, [r7, r1] + cmp r0, #0x80 + bne _081D8F0A + ldr r2, _081D8F2C + mov r8, r2 + mov r0, r8 + movs r1, #0x98 + movs r2, #0x84 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x3c] + ldr r5, _081D8F30 + movs r1, #0x3c + ldrsh r0, [r7, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldrb r2, [r1, #5] + movs r4, #0xd + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r2 + movs r6, #4 + orrs r0, r6 + strb r0, [r1, #5] + mov r0, r8 + movs r1, #0xe0 + movs r2, #0x84 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r7, #0x3c] + movs r2, #0x3c + ldrsh r1, [r7, r2] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #5] + ands r4, r1 + orrs r4, r6 + strb r4, [r0, #5] + movs r0, #0x3c + ldrsh r1, [r7, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + adds r0, #0x3f + ldrb r1, [r0] + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + ldrh r0, [r7, #0x38] + adds r0, #1 + strh r0, [r7, #0x38] +_081D8F0A: + ldrh r1, [r7, #0x38] + movs r2, #0x38 + ldrsh r0, [r7, r2] + cmp r0, #0x7f + ble _081D8F34 + movs r1, #0x26 + ldrsh r0, [r7, r1] + cmp r0, #0x20 + beq _081D8F38 + ldrh r0, [r7, #0x3a] + adds r0, #1 + strh r0, [r7, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + strh r0, [r7, #0x26] + b _081D8F38 + .align 2, 0 +_081D8F2C: .4byte gUnknown_85FBFEC +_081D8F30: .4byte gUnknown_20205AC +_081D8F34: + adds r0, r1, #1 + strh r0, [r7, #0x38] +_081D8F38: + ldrh r0, [r7, #0x36] + movs r1, #0x3f + ands r0, r1 + cmp r0, #0 + bne _081D8F48 + movs r0, #0xa5 + bl sub_080A306C +_081D8F48: + ldrh r0, [r7, #0x36] + adds r0, #1 + strh r0, [r7, #0x36] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D8E64 + + thumb_func_start sub_081D8F58 +sub_081D8F58: @ 0x081D8F58 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x3c + ldrsh r1, [r4, r0] + cmp r1, #0x40 + bgt _081D8FC8 + ldrh r0, [r4, #0x26] + adds r0, #2 + strh r0, [r4, #0x26] + ldr r5, _081D8FC0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + adds r1, #2 + strh r1, [r0, #0x26] + movs r1, #0x3c + ldrsh r0, [r4, r1] + cmp r0, #0x40 + beq _081D8F88 + b _081D90DA +_081D8F88: + movs r3, #0x30 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_081D91A4 + movs r2, #5 + strh r2, [r4, #0x36] + ldr r0, _081D8FC4 + strh r0, [r4, #0x38] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + movs r1, #3 + strh r1, [r0, #0x36] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + strh r2, [r0, #0x38] + b _081D90DA + .align 2, 0 +_081D8FC0: .4byte gUnknown_20205AC +_081D8FC4: .4byte 0x0000FFFF +_081D8FC8: + cmp r1, #0x6f + bgt _081D8FFA + adds r0, r4, #0 + bl sub_081D911C + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081D8FE0 + movs r0, #0x68 + bl sub_080A306C +_081D8FE0: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + bne _081D90DA + adds r0, r4, #0 + movs r1, #2 + movs r2, #0x30 + movs r3, #0x10 + bl sub_081D91A4 + b _081D90DA +_081D8FFA: + cmp r1, #0x70 + bne _081D9028 + ldr r2, _081D9024 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #7 + strh r1, [r0, #0x36] + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #3 + strh r1, [r0, #0x38] + b _081D902E + .align 2, 0 +_081D9024: .4byte gUnknown_20205AC +_081D9028: + ldr r0, _081D9038 + cmp r1, r0 + bgt _081D903C +_081D902E: + adds r0, r4, #0 + bl sub_081D911C + b _081D90DA + .align 2, 0 +_081D9038: .4byte 0x00000147 +_081D903C: + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + bne _081D9088 + adds r0, r4, #0 + bl sub_081D911C + adds r0, r4, #0 + movs r1, #3 + movs r2, #0x30 + movs r3, #0x10 + bl sub_081D91A4 + movs r3, #1 + strh r3, [r4, #0x24] + ldr r2, _081D9080 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + movs r0, #0xcb + lsls r0, r0, #1 + movs r1, #0 + bl sub_080A2B3C + ldr r0, _081D9084 + movs r1, #0 + bl sub_080A8878 + b _081D90DA + .align 2, 0 +_081D9080: .4byte gUnknown_20205AC +_081D9084: .4byte sub_081D91F0 +_081D9088: + movs r0, #0xb0 + lsls r0, r0, #1 + cmp r1, r0 + beq _081D90CC + adds r0, #0x18 + cmp r1, r0 + bne _081D90DA + movs r3, #0 + strh r3, [r4, #0x24] + ldr r2, _081D90C4 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + strh r3, [r0, #0x24] + adds r0, r4, #0 + bl sub_081D911C + adds r0, r4, #0 + movs r1, #2 + movs r2, #0x30 + movs r3, #0x10 + bl sub_081D91A4 + ldr r0, _081D90C8 + str r0, [r4, #0x1c] + b _081D910E + .align 2, 0 +_081D90C4: .4byte gUnknown_20205AC +_081D90C8: .4byte sub_081D911C +_081D90CC: + ldr r0, _081D9114 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_081D8BB0 +_081D90DA: + ldrh r2, [r4, #0x3c] + movs r0, #0x3c + ldrsh r1, [r4, r0] + movs r0, #0xa4 + lsls r0, r0, #1 + cmp r1, r0 + ble _081D9108 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _081D9108 + movs r1, #0x24 + ldrsh r2, [r4, r1] + rsbs r2, r2, #0 + strh r2, [r4, #0x24] + ldr r3, _081D9118 + movs r0, #0x2e + ldrsh r1, [r4, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + strh r2, [r0, #0x24] +_081D9108: + ldrh r0, [r4, #0x3c] + adds r0, #1 + strh r0, [r4, #0x3c] +_081D910E: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D9114: .4byte sub_081D87BC +_081D9118: .4byte gUnknown_20205AC + thumb_func_end sub_081D8F58 + + thumb_func_start sub_081D911C +sub_081D911C: @ 0x081D911C + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r5, _081D917C + adds r4, r0, r5 + ldrh r1, [r3, #0x3a] + ldrh r0, [r4, #0x36] + ands r0, r1 + cmp r0, #0 + bne _081D9198 + ldrh r2, [r3, #0x36] + ldrh r1, [r3, #0x26] + adds r0, r2, r1 + strh r0, [r3, #0x26] + movs r7, #0x2e + ldrsh r1, [r3, r7] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrh r1, [r0, #0x26] + adds r2, r2, r1 + strh r2, [r0, #0x26] + ldrh r0, [r3, #0x38] + ldrh r2, [r3, #0x36] + adds r0, r0, r2 + strh r0, [r3, #0x36] + lsls r0, r0, #0x10 + asrs r5, r0, #0x10 + ldrh r6, [r4, #0x38] + movs r7, #0x38 + ldrsh r2, [r4, r7] + cmp r5, r2 + bge _081D9172 + movs r0, #0x36 + ldrsh r1, [r3, r0] + adds r0, r2, #0 + cmn r1, r0 + bgt _081D9198 +_081D9172: + cmp r5, r2 + ble _081D9180 + strh r6, [r3, #0x36] + b _081D9190 + .align 2, 0 +_081D917C: .4byte gUnknown_20205AC +_081D9180: + movs r0, #0x36 + ldrsh r1, [r3, r0] + movs r2, #0x38 + ldrsh r0, [r4, r2] + cmn r1, r0 + bge _081D9190 + rsbs r0, r6, #0 + strh r0, [r3, #0x36] +_081D9190: + movs r7, #0x38 + ldrsh r0, [r3, r7] + rsbs r0, r0, #0 + strh r0, [r3, #0x38] +_081D9198: + ldrh r0, [r3, #0x3a] + adds r0, #1 + strh r0, [r3, #0x3a] + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D911C + + thumb_func_start sub_081D91A4 +sub_081D91A4: @ 0x081D91A4 + push {r4, r5, lr} + adds r5, r1, #0 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + movs r4, #0x2e + ldrsh r1, [r0, r4] + lsls r4, r1, #4 + adds r4, r4, r1 + lsls r4, r4, #2 + ldr r1, _081D91EC + adds r4, r4, r1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + ldrh r1, [r0, #0x20] + adds r2, r2, r1 + strh r2, [r4, #0x20] + lsls r3, r3, #0x10 + asrs r3, r3, #0x10 + ldrh r1, [r0, #0x22] + adds r3, r3, r1 + strh r3, [r4, #0x22] + ldrh r1, [r0, #0x24] + strh r1, [r4, #0x24] + ldrh r1, [r0, #0x26] + strh r1, [r4, #0x26] + adds r1, r5, #0 + bl sub_08007EC0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08007EC0 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D91EC: .4byte gUnknown_20205AC + thumb_func_end sub_081D91A4 + + thumb_func_start sub_081D91F0 +sub_081D91F0: @ 0x081D91F0 + push {r4, r5, lr} + sub sp, #0x10 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r0, r0, #3 + ldr r1, _081D9214 + adds r4, r0, r1 + movs r0, #0 + ldrsh r1, [r4, r0] + cmp r1, #1 + beq _081D9248 + cmp r1, #1 + bgt _081D9218 + cmp r1, #0 + beq _081D921E + b _081D92F0 + .align 2, 0 +_081D9214: .4byte gUnknown_3005B68 +_081D9218: + cmp r1, #2 + beq _081D92E0 + b _081D92F0 +_081D921E: + movs r2, #0x80 + lsls r2, r2, #7 + movs r0, #0x40 + str r0, [sp] + adds r0, #0xc0 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + movs r0, #2 + adds r1, r2, #0 + movs r3, #0x78 + bl sub_0800200C + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001200 + movs r0, #0x10 + strh r0, [r4, #8] + b _081D925E +_081D9248: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #8 + bne _081D9256 + movs r0, #0x12 + bl sub_080A306C +_081D9256: + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #2 + bne _081D9266 +_081D925E: + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + b _081D92F0 +_081D9266: + ldrh r5, [r4, #8] + ldrh r1, [r4, #2] + adds r0, r5, r1 + strh r0, [r4, #2] + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r3, #6 + ldrsh r0, [r4, r3] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _081D9290 + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + cmp r0, #4 + beq _081D9290 + subs r0, r5, #2 + strh r0, [r4, #8] +_081D9290: + ldrh r0, [r4, #6] + adds r0, #1 + strh r0, [r4, #6] + movs r2, #0x80 + lsls r2, r2, #7 + movs r0, #0x40 + str r0, [sp] + ldrh r0, [r4, #2] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r3, #0 + subs r0, r1, r0 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + str r0, [sp, #4] + ldrh r0, [r4, #2] + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + str r1, [sp, #8] + movs r5, #0 + str r5, [sp, #0xc] + movs r0, #2 + adds r1, r2, #0 + movs r3, #0x78 + bl sub_0800200C + movs r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #0xff + ble _081D92F0 + strh r5, [r4, #2] + strh r5, [r4, #6] + strh r5, [r4, #0xa] + movs r0, #0x10 + strh r0, [r4, #8] + ldrh r0, [r4, #4] + adds r0, #1 + strh r0, [r4, #4] + b _081D92F0 +_081D92E0: + movs r1, #0x80 + lsls r1, r1, #3 + movs r0, #0 + bl sub_08001220 + adds r0, r5, #0 + bl sub_080A8964 +_081D92F0: + add sp, #0x10 + pop {r4, r5} + pop {r0} + bx r0 + thumb_func_end sub_081D91F0 + + thumb_func_start sub_081D92F8 +sub_081D92F8: @ 0x081D92F8 + push {r4, lr} + bl sub_080D1E18 + cmp r0, #0 + bne _081D9318 + ldr r4, _081D9314 + bl sub_080D1DE8 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #1 + b _081D931A + .align 2, 0 +_081D9314: .4byte gUnknown_2021C40 +_081D9318: + movs r0, #0 +_081D931A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081D92F8 + + thumb_func_start sub_081D9320 +sub_081D9320: @ 0x081D9320 + push {r4, lr} + sub sp, #8 + ldr r4, _081D9350 + bl sub_080D1DE8 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + movs r0, #0 + str r0, [sp] + ldr r0, _081D9354 + str r0, [sp, #4] + movs r0, #4 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_080E2244 + add sp, #8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D9350: .4byte gUnknown_2021C54 +_081D9354: .4byte sub_081D9358 + thumb_func_end sub_081D9320 + + thumb_func_start sub_081D9358 +sub_081D9358: @ 0x081D9358 + push {r4, r5, lr} + ldr r4, _081D9378 + ldr r5, _081D937C + adds r0, r5, #0 + bl sub_081D93D4 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #1 + beq _081D93A4 + cmp r0, #1 + bgt _081D9380 + cmp r0, #0 + beq _081D939E + b _081D93A4 + .align 2, 0 +_081D9378: .4byte gUnknown_2037280 +_081D937C: .4byte gUnknown_2021C54 +_081D9380: + cmp r0, #2 + bne _081D93A4 + bl sub_080D1E18 + cmp r0, #0 + beq _081D9398 + ldr r0, _081D9394 + bl sub_080D1DFC + b _081D93A4 + .align 2, 0 +_081D9394: .4byte gUnknown_85FC010 +_081D9398: + movs r0, #1 + strh r0, [r4] + b _081D93A4 +_081D939E: + adds r0, r5, #0 + bl sub_080D1DFC +_081D93A4: + ldr r4, _081D93C4 + bl sub_080D1DE8 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080088B8 + ldr r1, _081D93C8 + ldr r0, _081D93CC + str r0, [r1] + ldr r0, _081D93D0 + bl sub_08000540 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081D93C4: .4byte gUnknown_2021C40 +_081D93C8: .4byte gUnknown_3005B0C +_081D93CC: .4byte sub_080AEA64 +_081D93D0: .4byte sub_08085A30 + thumb_func_end sub_081D9358 + + thumb_func_start sub_081D93D4 +sub_081D93D4: @ 0x081D93D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4] + cmp r0, #0xff + bne _081D93E2 + movs r0, #2 + b _081D93F8 +_081D93E2: + bl sub_080D1DE8 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800895C + cmp r0, #0 + beq _081D93F6 + movs r0, #0 + b _081D93F8 +_081D93F6: + movs r0, #1 +_081D93F8: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D93D4 + + thumb_func_start sub_081D9400 +sub_081D9400: @ 0x081D9400 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0x10 + ldr r0, _081D9474 + ldr r0, [r0] + adds r0, #0xa + bl sub_08083C64 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldr r0, _081D9478 + mov r8, r0 + bl sub_080D1DE8 + mov r7, sp + adds r7, #0xa + add r6, sp, #0xc + mov r5, sp + adds r5, #0xd + str r4, [sp] + str r0, [sp, #4] + add r0, sp, #8 + adds r1, r7, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_081D947C + mov r1, r8 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _081D945A + ldrb r0, [r5] + bl sub_080D1D5C + ldrb r0, [r6] + bl sub_080D1D90 + add r0, sp, #8 + ldrh r0, [r0] + ldrh r1, [r7] + bl sub_080D1DC4 +_081D945A: + mov r1, r8 + ldrh r0, [r1] + bl sub_080D1D20 + mov r1, r8 + ldrb r0, [r1] + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081D9474: .4byte gUnknown_3005AF0 +_081D9478: .4byte gUnknown_2037290 + thumb_func_end sub_081D9400 + + thumb_func_start sub_081D947C +sub_081D947C: @ 0x081D947C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x2c + str r0, [sp, #0x1c] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r3, [sp, #0x28] + ldr r0, [sp, #0x4c] + ldr r6, [sp, #0x50] + lsls r5, r0, #0x10 + lsrs r0, r5, #0x10 + mov sl, r0 + adds r0, r6, #0 + bl sub_0800893C + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc + bne _081D9562 + movs r4, #0 + add r7, sp, #0x10 + lsrs r5, r5, #0x18 + mov sb, r5 + adds r2, r7, #0 +_081D94B2: + adds r1, r2, r4 + adds r0, r6, r4 + ldrb r0, [r0] + subs r0, #1 + strb r0, [r1] + adds r4, #1 + cmp r4, #0xb + ble _081D94B2 + movs r6, #2 + movs r5, #0 + movs r1, #6 + mov r8, r1 + movs r4, #0xb +_081D94CC: + mov r0, r8 + str r0, [sp] + add r0, sp, #4 + adds r1, r7, #0 + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_081D9640 + adds r6, #8 + adds r5, #6 + subs r4, #1 + cmp r4, #0 + bge _081D94CC + add r0, sp, #4 + movs r1, #9 + movs r2, #0x15 + bl sub_081D9574 + add r0, sp, #4 + ldrb r0, [r0, #8] + movs r2, #0xf + ands r2, r0 + add r0, sp, #4 + movs r1, #8 + bl sub_081D9574 + add r0, sp, #4 + ldrb r2, [r0, #8] + lsrs r2, r2, #4 + movs r1, #8 + bl sub_081D95C0 + add r0, sp, #4 + ldrb r2, [r0, #6] + adds r1, r0, #0 + ldrb r0, [r0] + ldrb r1, [r1, #2] + eors r0, r1 + add r1, sp, #4 + ldrb r4, [r1, #4] + eors r0, r4 + mov r1, sb + eors r0, r1 + cmp r2, r0 + bne _081D9562 + add r0, sp, #4 + ldrb r3, [r0, #7] + adds r2, r0, #0 + ldrb r1, [r0, #1] + ldrb r0, [r2, #3] + eors r1, r0 + adds r0, r2, #0 + ldrb r2, [r0, #5] + eors r1, r2 + movs r0, #0xff + mov r5, sl + ands r0, r5 + eors r1, r0 + cmp r3, r1 + bne _081D9562 + add r0, sp, #4 + ldrh r0, [r0] + ldr r1, [sp, #0x1c] + strh r0, [r1] + mov r0, sp + adds r0, #6 + ldrh r0, [r0] + ldr r5, [sp, #0x20] + strh r0, [r5] + ldr r0, [sp, #0x24] + strb r4, [r0] + ldr r1, [sp, #0x28] + strb r2, [r1] + movs r0, #1 + b _081D9564 +_081D9562: + movs r0, #0 +_081D9564: + add sp, #0x2c + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + thumb_func_end sub_081D947C + + thumb_func_start sub_081D9574 +sub_081D9574: @ 0x081D9574 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + mov ip, r1 + subs r3, r2, #1 + cmp r2, #0 + beq _081D95BA +_081D9580: + ldrb r1, [r7] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x1f + mov r2, ip + subs r2, #1 + subs r5, r3, #1 + cmp r2, #0 + blt _081D95B0 + movs r6, #0x80 + adds r3, r2, r7 +_081D9598: + ldrb r1, [r3] + adds r0, r6, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsls r1, r1, #1 + orrs r4, r1 + strb r4, [r3] + lsrs r4, r0, #0x1f + subs r3, #1 + subs r2, #1 + cmp r2, #0 + bge _081D9598 +_081D95B0: + adds r3, r5, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r3, r0 + bne _081D9580 +_081D95BA: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D9574 + + thumb_func_start sub_081D95C0 +sub_081D95C0: @ 0x081D95C0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + lsls r2, r2, #0x18 + lsrs r3, r2, #0x18 + lsls r0, r3, #4 + orrs r3, r0 + lsls r0, r3, #0x18 + lsrs r3, r0, #0x18 + movs r4, #0 + cmp r4, r5 + bhs _081D95E8 +_081D95D8: + adds r2, r6, r4 + ldrb r1, [r2] + adds r0, r3, #0 + eors r0, r1 + strb r0, [r2] + adds r4, #1 + cmp r4, r5 + blo _081D95D8 +_081D95E8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D95C0 + + thumb_func_start sub_081D95F0 +sub_081D95F0: @ 0x081D95F0 + push {lr} + lsrs r3, r1, #3 + movs r2, #7 + ands r2, r1 + movs r1, #0x80 + asrs r1, r2 + adds r0, r0, r3 + ldrb r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _081D9608 + movs r0, #1 +_081D9608: + pop {r1} + bx r1 + thumb_func_end sub_081D95F0 + + thumb_func_start sub_081D960C +sub_081D960C: @ 0x081D960C + lsrs r3, r1, #3 + movs r2, #7 + ands r2, r1 + movs r1, #0x80 + asrs r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r0, r3 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_081D960C + + thumb_func_start sub_081D9624 +sub_081D9624: @ 0x081D9624 + lsrs r3, r1, #3 + movs r2, #7 + ands r2, r1 + movs r1, #0x80 + asrs r1, r2 + mvns r1, r1 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r0, r3 + ldrb r2, [r0] + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end sub_081D9624 + + thumb_func_start sub_081D9640 +sub_081D9640: @ 0x081D9640 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + mov sb, r1 + adds r1, r2, #0 + mov r8, r3 + ldr r7, [sp, #0x1c] + movs r5, #0 + cmp r5, r7 + bhs _081D9684 + adds r4, r1, #0 +_081D965A: + mov r0, r8 + adds r1, r0, r5 + mov r0, sb + bl sub_081D95F0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9674 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081D960C + b _081D967C +_081D9674: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_081D9624 +_081D967C: + adds r4, #1 + adds r5, #1 + cmp r5, r7 + blo _081D965A +_081D9684: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + thumb_func_end sub_081D9640 + + thumb_func_start sub_081D9690 +sub_081D9690: @ 0x081D9690 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r1, _081D96B4 + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r0, r0, #3 + adds r0, r0, r1 + movs r1, #0x1a + ldrsh r0, [r0, r1] + cmp r0, #4 + bhi _081D9750 + lsls r0, r0, #2 + ldr r1, _081D96B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081D96B4: .4byte gUnknown_3005B60 +_081D96B8: .4byte _081D96BC +_081D96BC: @ jump table + .4byte _081D96D0 @ case 0 + .4byte _081D96F0 @ case 1 + .4byte _081D9710 @ case 2 + .4byte _081D9730 @ case 3 + .4byte _081D9750 @ case 4 +_081D96D0: + ldr r4, _081D96E4 + ldr r0, _081D96E8 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D96EC + adds r0, r0, r1 + movs r1, #0x32 + b _081D9760 + .align 2, 0 +_081D96E4: .4byte gUnknown_2039BD1 +_081D96E8: .4byte gUnknown_2039BC4 +_081D96EC: .4byte gUnknown_2024190 +_081D96F0: + ldr r4, _081D9704 + ldr r0, _081D9708 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D970C + adds r0, r0, r1 + movs r1, #0x33 + b _081D9760 + .align 2, 0 +_081D9704: .4byte gUnknown_2039BD1 +_081D9708: .4byte gUnknown_2039BC4 +_081D970C: .4byte gUnknown_2024190 +_081D9710: + ldr r4, _081D9724 + ldr r0, _081D9728 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D972C + adds r0, r0, r1 + movs r1, #0x34 + b _081D9760 + .align 2, 0 +_081D9724: .4byte gUnknown_2039BD1 +_081D9728: .4byte gUnknown_2039BC4 +_081D972C: .4byte gUnknown_2024190 +_081D9730: + ldr r4, _081D9744 + ldr r0, _081D9748 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D974C + adds r0, r0, r1 + movs r1, #0x35 + b _081D9760 + .align 2, 0 +_081D9744: .4byte gUnknown_2039BD1 +_081D9748: .4byte gUnknown_2039BC4 +_081D974C: .4byte gUnknown_2024190 +_081D9750: + ldr r4, _081D97A0 + ldr r0, _081D97A4 + ldrb r1, [r0] + movs r0, #0x64 + muls r0, r1, r0 + ldr r1, _081D97A8 + adds r0, r0, r1 + movs r1, #0x36 +_081D9760: + bl sub_0806A058 + strb r0, [r4] + ldr r5, _081D97AC + ldr r4, _081D97B0 + ldrb r0, [r4] + lsls r0, r0, #6 + adds r0, r0, r5 + ldr r1, _081D97A0 + ldrb r1, [r1] + adds r0, #0x2c + strb r1, [r0] + ldr r0, _081D97B4 + bl sub_0809D068 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + rsbs r0, r0, #0 + lsrs r0, r0, #0x1f + ldrb r1, [r4] + lsls r1, r1, #6 + adds r1, r1, r5 + adds r1, #0x2d + strb r0, [r1] + ldr r1, _081D97B8 + ldr r2, _081D97BC + adds r0, r6, #0 + bl sub_080A8A44 + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D97A0: .4byte gUnknown_2039BD1 +_081D97A4: .4byte gUnknown_2039BC4 +_081D97A8: .4byte gUnknown_2024190 +_081D97AC: .4byte gUnknown_2039AA0 +_081D97B0: .4byte gUnknown_2039BC5 +_081D97B4: .4byte 0x00000864 +_081D97B8: .4byte sub_081D9A0C +_081D97BC: .4byte sub_081D97C0 + thumb_func_end sub_081D9690 + + thumb_func_start sub_081D97C0 +sub_081D97C0: @ 0x081D97C0 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081D97D4 + ldr r2, _081D97D8 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_081D97D4: .4byte sub_081D9AD4 +_081D97D8: .4byte sub_081D97DC + thumb_func_end sub_081D97C0 + + thumb_func_start sub_081D97DC +sub_081D97DC: @ 0x081D97DC + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081D97F0 + ldr r2, _081D97F4 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_081D97F0: .4byte sub_081D9B78 +_081D97F4: .4byte sub_081D97F8 + thumb_func_end sub_081D97DC + + thumb_func_start sub_081D97F8 +sub_081D97F8: @ 0x081D97F8 + push {lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r1, _081D980C + ldr r2, _081D9810 + bl sub_080A8A44 + pop {r0} + bx r0 + .align 2, 0 +_081D980C: .4byte sub_081D9C48 +_081D9810: .4byte sub_081D9814 + thumb_func_end sub_081D97F8 + + thumb_func_start sub_081D9814 +sub_081D9814: @ 0x081D9814 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #8 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + movs r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r3, #0 + ldr r5, _081D9894 + mov r8, r5 + ldr r0, _081D9898 + mov ip, r0 + add r1, sp, #4 + mov sb, r1 + ldrb r4, [r5] + cmp r3, r4 + bhs _081D985E + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r4, r0, #3 + ldr r7, _081D989C +_081D9844: + mov r0, sp + adds r2, r0, r3 + adds r1, r3, #1 + lsls r0, r1, #1 + adds r0, r0, r4 + adds r0, r0, r7 + ldrh r0, [r0] + strb r0, [r2] + lsls r1, r1, #0x18 + lsrs r3, r1, #0x18 + ldrb r1, [r5] + cmp r3, r1 + blo _081D9844 +_081D985E: + movs r3, #0 + mov r4, r8 + ldrb r0, [r4] + cmp r3, r0 + bhs _081D9882 + adds r4, r0, #0 + mov r2, sp +_081D986C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r4 + bhs _081D9882 + mov r7, sp + adds r1, r7, r3 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + beq _081D986C +_081D9882: + mov r0, r8 + ldrb r0, [r0] + cmp r3, r0 + bne _081D98A0 + movs r0, #0 + mov r1, ip + strh r0, [r1] + b _081D98A6 + .align 2, 0 +_081D9894: .4byte gUnknown_2039BD0 +_081D9898: .4byte gUnknown_2037280 +_081D989C: .4byte gUnknown_3005B68 +_081D98A0: + movs r0, #1 + mov r4, ip + strh r0, [r4] +_081D98A6: + movs r3, #0 + mov r7, r8 + mov r0, r8 + ldrb r0, [r0] + cmp r3, r0 + bhs _081D98D6 + mov r4, sb + lsls r0, r6, #2 + adds r0, r0, r6 + lsls r2, r0, #3 + ldr r5, _081D9934 +_081D98BC: + adds r1, r4, r3 + adds r0, r3, #5 + lsls r0, r0, #1 + adds r0, r0, r2 + adds r0, r0, r5 + ldrh r0, [r0] + strb r0, [r1] + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + ldrb r1, [r7] + cmp r3, r1 + blo _081D98BC +_081D98D6: + mov r4, r8 + ldrb r0, [r4] + cmp r0, #4 + beq _081D9964 + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D9964 + ldr r0, _081D9938 + adds r1, r0, #0 + adds r1, #0x2c + ldrb r2, [r1] + movs r3, #1 + ldrb r1, [r4] + adds r5, r0, #0 + cmp r3, r1 + bhs _081D9918 + adds r4, r5, #0 + mov r7, r8 + ldrb r1, [r7] +_081D9900: + lsls r0, r3, #6 + adds r0, r0, r4 + adds r0, #0x2c + ldrb r7, [r0] + cmp r2, r7 + bhs _081D990E + ldrb r2, [r0] +_081D990E: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, r1 + blo _081D9900 +_081D9918: + cmp r2, #0 + beq _081D9922 + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 +_081D9922: + movs r4, #1 + movs r3, #0 + mov r0, r8 + ldrb r0, [r0] + cmp r3, r0 + bhs _081D9958 + adds r0, r5, #0 + b _081D994E + .align 2, 0 +_081D9934: .4byte gUnknown_3005B68 +_081D9938: .4byte gUnknown_2039AA0 +_081D993C: + adds r0, r3, #1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + mov r1, r8 + ldrb r1, [r1] + cmp r3, r1 + bhs _081D9958 + lsls r0, r3, #6 + adds r0, r0, r5 +_081D994E: + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + bne _081D993C + movs r4, #0 +_081D9958: + mov r0, sp + ldrb r0, [r0] + adds r1, r2, #0 + adds r2, r4, #0 + bl sub_080DA460 +_081D9964: + mov r0, sb + bl sub_080F8F64 + ldr r1, _081D9984 + strb r0, [r1] + ldr r0, _081D9988 + ldrb r0, [r0] + cmp r0, #3 + bhi _081D9994 + ldr r1, _081D998C + ldr r2, _081D9990 + adds r0, r6, #0 + bl sub_080A8A44 + b _081D99A2 + .align 2, 0 +_081D9984: .4byte gUnknown_2039BCB +_081D9988: .4byte gUnknown_2039BD0 +_081D998C: .4byte sub_081D9D18 +_081D9990: .4byte sub_081D99B8 +_081D9994: + ldr r0, _081D99B0 + lsls r1, r6, #2 + adds r1, r1, r6 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _081D99B4 + str r0, [r1] +_081D99A2: + add sp, #8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D99B0: .4byte gUnknown_3005B60 +_081D99B4: .4byte sub_081D99B8 + thumb_func_end sub_081D9814 + + thumb_func_start sub_081D99B8 +sub_081D99B8: @ 0x081D99B8 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldr r0, _081D99D8 + ldrb r0, [r0] + bl sub_080DA800 + ldr r1, _081D99DC + ldr r2, _081D99E0 + adds r0, r4, #0 + bl sub_080A8A44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D99D8: .4byte gUnknown_2039BCC +_081D99DC: .4byte sub_080FD794 +_081D99E0: .4byte sub_081D99E4 + thumb_func_end sub_081D99B8 + + thumb_func_start sub_081D99E4 +sub_081D99E4: @ 0x081D99E4 + push {r4, lr} + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + movs r0, #0 + bl sub_080DC5BC + ldr r1, _081D9A04 + ldr r2, _081D9A08 + adds r0, r4, #0 + bl sub_080A8A44 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081D9A04: .4byte sub_080FD824 +_081D9A08: .4byte sub_080F8F98 + thumb_func_end sub_081D99E4 + + thumb_func_start sub_081D9A0C +sub_081D9A0C: @ 0x081D9A0C + push {r4, r5, r6, r7, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r7, r5, #2 + adds r0, r7, r5 + lsls r4, r0, #3 + ldr r6, _081D9A48 + adds r0, r4, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _081D9ABE + adds r0, r6, #0 + subs r0, #8 + adds r4, r4, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081D9A4C + cmp r0, #1 + beq _081D9A7C + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r5, #0 + bl sub_080A8A78 + b _081D9ABE + .align 2, 0 +_081D9A48: .4byte gUnknown_3005B68 +_081D9A4C: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9ABE + ldr r0, _081D9A74 + ldrb r0, [r0] + lsls r0, r0, #6 + ldr r1, _081D9A78 + adds r0, r0, r1 + movs r1, #0x40 + bl sub_080FCD64 + cmp r0, #1 + bne _081D9ABE + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081D9ABE + .align 2, 0 +_081D9A74: .4byte gUnknown_2039BC5 +_081D9A78: .4byte gUnknown_2039AA0 +_081D9A7C: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9ABE + movs r4, #0 + ldr r0, _081D9A90 + adds r6, r7, #0 + b _081D9AAA + .align 2, 0 +_081D9A90: .4byte gUnknown_2039BD0 +_081D9A94: + lsls r0, r4, #6 + ldr r1, _081D9AC4 + adds r0, r0, r1 + lsls r1, r4, #8 + ldr r2, _081D9AC8 + adds r1, r1, r2 + movs r2, #0x40 + bl memcpy + adds r4, #1 + ldr r0, _081D9ACC +_081D9AAA: + ldrb r0, [r0] + cmp r4, r0 + blt _081D9A94 + ldr r0, _081D9AD0 + adds r1, r6, r5 + lsls r1, r1, #3 + adds r1, r1, r0 + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081D9ABE: + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D9AC4: .4byte gUnknown_2039AA0 +_081D9AC8: .4byte gUnknown_202207C +_081D9ACC: .4byte gUnknown_2039BD0 +_081D9AD0: .4byte gUnknown_3005B60 + thumb_func_end sub_081D9A0C + + thumb_func_start sub_081D9AD4 +sub_081D9AD4: @ 0x081D9AD4 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r5, r0, #3 + ldr r6, _081D9B10 + adds r0, r5, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _081D9B64 + adds r0, r6, #0 + subs r0, #8 + adds r5, r5, r0 + movs r1, #8 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _081D9B14 + cmp r0, #1 + beq _081D9B3C + movs r0, #0 + strh r0, [r5, #8] + strh r0, [r5, #0x20] + adds r0, r4, #0 + bl sub_080A8A78 + b _081D9B64 + .align 2, 0 +_081D9B10: .4byte gUnknown_3005B68 +_081D9B14: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D9B5E + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9B64 + ldr r0, _081D9B38 + movs r1, #4 + bl sub_080FCD64 + cmp r0, #1 + bne _081D9B64 + b _081D9B5E + .align 2, 0 +_081D9B38: .4byte gUnknown_3005AE0 +_081D9B3C: + movs r0, #0 + bl sub_080FCDA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9B64 + ldr r0, _081D9B6C + ldr r4, _081D9B70 + adds r1, r4, #0 + movs r2, #4 + bl memcpy + ldr r0, _081D9B74 + adds r1, r4, #0 + movs r2, #4 + bl memcpy +_081D9B5E: + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] +_081D9B64: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D9B6C: .4byte gUnknown_3005AE0 +_081D9B70: .4byte gUnknown_202207C +_081D9B74: .4byte gUnknown_3005E18 + thumb_func_end sub_081D9AD4 + + thumb_func_start sub_081D9B78 +sub_081D9B78: @ 0x081D9B78 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + mov sb, r0 + adds r0, r0, r6 + lsls r5, r0, #3 + ldr r1, _081D9BC4 + mov r8, r1 + adds r0, r5, r1 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _081D9C2E + movs r0, #8 + rsbs r0, r0, #0 + add r0, r8 + mov sl, r0 + adds r4, r5, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081D9BC8 + cmp r0, #1 + beq _081D9BEA + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r6, #0 + bl sub_080A8A78 + b _081D9C2E + .align 2, 0 +_081D9BC4: .4byte gUnknown_3005B68 +_081D9BC8: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9C2E + add r0, sp, #8 + movs r1, #0x6e + strh r1, [r0] + movs r1, #2 + bl sub_080FCD64 + cmp r0, #1 + bne _081D9C2E + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081D9C2E +_081D9BEA: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9C2E + movs r1, #0 + ldr r7, _081D9C40 + ldrb r0, [r7] + cmp r1, r0 + bge _081D9C20 + mov r0, r8 + adds r0, #0xa + adds r3, r5, r0 + ldr r4, _081D9C44 + mov r2, sp + movs r5, #0x80 + lsls r5, r5, #1 +_081D9C0C: + ldrh r0, [r4] + strh r0, [r2] + strh r0, [r3] + adds r3, #2 + adds r4, r4, r5 + adds r2, #2 + adds r1, #1 + ldrb r0, [r7] + cmp r1, r0 + blt _081D9C0C +_081D9C20: + mov r0, sb + adds r1, r0, r6 + lsls r1, r1, #3 + add r1, sl + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081D9C2E: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D9C40: .4byte gUnknown_2039BD0 +_081D9C44: .4byte gUnknown_202207C + thumb_func_end sub_081D9B78 + + thumb_func_start sub_081D9C48 +sub_081D9C48: @ 0x081D9C48 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + lsls r0, r6, #2 + mov sb, r0 + adds r0, r0, r6 + lsls r5, r0, #3 + ldr r1, _081D9C94 + mov r8, r1 + adds r0, r5, r1 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _081D9CFE + movs r0, #8 + rsbs r0, r0, #0 + add r0, r8 + mov sl, r0 + adds r4, r5, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081D9C98 + cmp r0, #1 + beq _081D9CBA + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r6, #0 + bl sub_080A8A78 + b _081D9CFE + .align 2, 0 +_081D9C94: .4byte gUnknown_3005B68 +_081D9C98: + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9CFE + ldrh r1, [r4, #0x1a] + add r0, sp, #8 + strh r1, [r0] + movs r1, #2 + bl sub_080FCD64 + cmp r0, #1 + bne _081D9CFE + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081D9CFE +_081D9CBA: + bl sub_080FCDCC + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9CFE + movs r1, #0 + ldr r7, _081D9D10 + ldrb r0, [r7] + cmp r1, r0 + bge _081D9CF0 + mov r0, r8 + adds r0, #2 + adds r3, r5, r0 + ldr r4, _081D9D14 + mov r2, sp + movs r5, #0x80 + lsls r5, r5, #1 +_081D9CDC: + ldrh r0, [r4] + strh r0, [r2] + strh r0, [r3] + adds r3, #2 + adds r4, r4, r5 + adds r2, #2 + adds r1, #1 + ldrb r0, [r7] + cmp r1, r0 + blt _081D9CDC +_081D9CF0: + mov r0, sb + adds r1, r0, r6 + lsls r1, r1, #3 + add r1, sl + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] +_081D9CFE: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 +_081D9D10: .4byte gUnknown_2039BD0 +_081D9D14: .4byte gUnknown_202207C + thumb_func_end sub_081D9C48 + + thumb_func_start sub_081D9D18 +sub_081D9D18: @ 0x081D9D18 + push {r4, r5, r6, lr} + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + lsls r0, r5, #2 + adds r0, r0, r5 + lsls r4, r0, #3 + ldr r6, _081D9D54 + adds r0, r4, r6 + adds r0, #0x18 + bl sub_080FCEE0 + cmp r0, #0 + beq _081D9DB8 + adds r0, r6, #0 + subs r0, #8 + adds r4, r4, r0 + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081D9D58 + cmp r0, #1 + beq _081D9D90 + movs r0, #0 + strh r0, [r4, #8] + strh r0, [r4, #0x20] + adds r0, r5, #0 + bl sub_080A8A78 + b _081D9DB8 + .align 2, 0 +_081D9D54: .4byte gUnknown_3005B68 +_081D9D58: + bl sub_0800A02C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D9DB2 + bl sub_0800A0E4 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9DB8 + ldr r0, _081D9D88 + ldrb r2, [r0] + lsls r0, r2, #6 + ldr r1, _081D9D8C + adds r0, r0, r1 + movs r1, #4 + subs r1, r1, r2 + lsls r1, r1, #0x16 + lsrs r1, r1, #0x10 + bl sub_080FCD64 + cmp r0, #1 + bne _081D9DB8 + b _081D9DB2 + .align 2, 0 +_081D9D88: .4byte gUnknown_2039BD0 +_081D9D8C: .4byte gUnknown_2039AA0 +_081D9D90: + movs r0, #0 + bl sub_080FCDA0 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9DB8 + ldr r0, _081D9DC0 + ldrb r3, [r0] + lsls r0, r3, #6 + ldr r1, _081D9DC4 + adds r0, r0, r1 + ldr r1, _081D9DC8 + movs r2, #4 + subs r2, r2, r3 + lsls r2, r2, #6 + bl memcpy +_081D9DB2: + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081D9DB8: + pop {r4, r5, r6} + pop {r0} + bx r0 + .align 2, 0 +_081D9DC0: .4byte gUnknown_2039BD0 +_081D9DC4: .4byte gUnknown_2039AA0 +_081D9DC8: .4byte gUnknown_202207C + thumb_func_end sub_081D9D18 + + thumb_func_start sub_081D9DCC +sub_081D9DCC: @ 0x081D9DCC + push {lr} + ldr r0, _081D9E08 + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9E1A + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x64 + bl __umodsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1e + bhi _081D9E1A + movs r0, #0x5b + bl sub_0809D068 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _081D9E10 + ldr r0, _081D9E0C + movs r1, #8 + movs r2, #5 + bl sub_081D9E24 + b _081D9E1A + .align 2, 0 +_081D9E08: .4byte 0x00000864 +_081D9E0C: .4byte gUnknown_85FC01C +_081D9E10: + ldr r0, _081D9E20 + movs r1, #7 + movs r2, #1 + bl sub_081D9E24 +_081D9E1A: + pop {r0} + bx r0 + .align 2, 0 +_081D9E20: .4byte gUnknown_85FC02C + thumb_func_end sub_081D9DCC + + thumb_func_start sub_081D9E24 +sub_081D9E24: @ 0x081D9E24 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r0 + adds r7, r1, #0 + mov sl, r2 + movs r6, #0 + movs r0, #5 + mov r8, r0 + movs r5, #0 + cmp r5, r7 + bhs _081D9E6C + mov r4, sb +_081D9E44: + ldr r0, _081D9EF8 + ldr r0, [r0] + ldrh r1, [r4] + ldr r2, _081D9EFC + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081D9E64 + adds r0, r1, #0 + bl sub_081D9F1C + cmp r8, r0 + ble _081D9E62 + mov r8, r0 +_081D9E62: + adds r6, #1 +_081D9E64: + adds r4, #2 + adds r5, #1 + cmp r5, r7 + blo _081D9E44 +_081D9E6C: + cmp r6, #0 + beq _081D9F0A + cmp r8, sl + bhi _081D9F0A + movs r6, #0 + movs r5, #0 + cmp r5, r7 + bhs _081D9EA4 + mov r4, sb +_081D9E7E: + ldr r0, _081D9EF8 + ldr r0, [r0] + ldrh r1, [r4] + ldr r2, _081D9EFC + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081D9E9C + adds r0, r1, #0 + bl sub_081D9F1C + cmp r0, r8 + bne _081D9E9C + adds r6, #1 +_081D9E9C: + adds r4, #2 + adds r5, #1 + cmp r5, r7 + blo _081D9E7E +_081D9EA4: + cmp r6, #0 + beq _081D9F0A + bl sub_0806F050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl __modsi3 + adds r6, r0, #0 + movs r5, #0 + cmp r5, r7 + bhs _081D9F0A + ldr r2, _081D9EF8 + ldr r3, _081D9EFC + mov r4, sb +_081D9EC4: + ldr r0, [r2] + ldrh r1, [r4] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + bne _081D9F02 + adds r0, r1, #0 + str r2, [sp] + str r3, [sp, #4] + bl sub_081D9F1C + ldr r2, [sp] + ldr r3, [sp, #4] + cmp r0, r8 + bne _081D9F02 + cmp r6, #0 + bne _081D9F00 + ldr r0, [r2] + adds r0, r0, r3 + ldrh r4, [r4] + adds r0, r0, r4 + mov r1, r8 + strb r1, [r0] + b _081D9F0A + .align 2, 0 +_081D9EF8: .4byte gUnknown_3005AEC +_081D9EFC: .4byte 0x000009CA +_081D9F00: + subs r6, #1 +_081D9F02: + adds r4, #2 + adds r5, #1 + cmp r5, r7 + blo _081D9EC4 +_081D9F0A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081D9E24 + + thumb_func_start sub_081D9F1C +sub_081D9F1C: @ 0x081D9F1C + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r6, _081D9F3C +_081D9F24: + lsls r0, r4, #1 + lsls r1, r5, #4 + adds r0, r0, r1 + adds r0, r0, r6 + ldrh r0, [r0] + bl sub_080B108C + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081D9F40 + adds r0, r4, #0 + b _081D9F48 + .align 2, 0 +_081D9F3C: .4byte gUnknown_852AD40 +_081D9F40: + adds r4, #1 + cmp r4, #4 + ble _081D9F24 + movs r0, #5 +_081D9F48: + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081D9F1C + + thumb_func_start sub_081D9F50 +sub_081D9F50: @ 0x081D9F50 + push {lr} + sub sp, #8 + add r1, sp, #4 + mov r0, sp + bl sub_0814A018 + ldr r0, _081D9F88 + ldr r1, [sp, #4] + bl LZ77UnCompVram + ldr r0, _081D9F8C + ldr r1, [sp] + bl LZ77UnCompVram + ldr r0, _081D9F90 + movs r1, #0xf0 + movs r2, #0x20 + bl sub_080A1200 + ldr r0, _081D9F94 + bl sub_08034388 + ldr r0, _081D9F98 + bl sub_0800845C + add sp, #8 + pop {r0} + bx r0 + .align 2, 0 +_081D9F88: .4byte gUnknown_85FC03C +_081D9F8C: .4byte gUnknown_85FC218 +_081D9F90: .4byte gUnknown_85FC824 +_081D9F94: .4byte gUnknown_85FCA0C +_081D9F98: .4byte gUnknown_85FCA14 + thumb_func_end sub_081D9F50 + + thumb_func_start sub_081D9F9C +sub_081D9F9C: @ 0x081D9F9C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + ldr r4, [sp, #0x2c] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + str r2, [sp] + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov sl, r3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + mov sb, r1 + lsls r4, r4, #0x18 + lsrs r7, r4, #0x18 + ldr r0, _081D9FF4 + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r7, #1 + beq _081DA020 + cmp r7, #1 + bgt _081D9FF8 + cmp r7, #0 + beq _081DA008 + b _081D9FFC + .align 2, 0 +_081D9FF4: .4byte gUnknown_85FCA40 +_081D9FF8: + cmp r7, #2 + beq _081DA034 +_081D9FFC: + ldr r6, _081DA004 + lsls r3, r5, #4 + b _081DA048 + .align 2, 0 +_081DA004: .4byte gUnknown_20205AC +_081DA008: + ldr r2, _081DA01C + lsls r3, r5, #4 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x78 + strh r1, [r0, #0x2e] + movs r1, #0x2d + b _081DA044 + .align 2, 0 +_081DA01C: .4byte gUnknown_20205AC +_081DA020: + ldr r2, _081DA030 + lsls r3, r5, #4 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x59 + b _081DA040 + .align 2, 0 +_081DA030: .4byte gUnknown_20205AC +_081DA034: + ldr r2, _081DA090 + lsls r3, r5, #4 + adds r0, r3, r5 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x97 +_081DA040: + strh r1, [r0, #0x2e] + movs r1, #0x61 +_081DA044: + strh r1, [r0, #0x30] + adds r6, r2, #0 +_081DA048: + adds r4, r3, r5 + lsls r4, r4, #2 + adds r0, r4, r6 + mov r2, r8 + lsls r1, r2, #0x18 + asrs r1, r1, #0x18 + movs r2, #0 + strh r1, [r0, #0x32] + mov r3, sb + lsls r1, r3, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0x34] + mov r1, sp + ldrh r1, [r1] + strh r1, [r0, #0x3a] + mov r3, sl + strh r3, [r0, #0x3c] + strh r2, [r0, #0x36] + strh r2, [r0, #0x38] + adds r1, r7, #0 + bl sub_08007EC0 + adds r0, r6, #0 + adds r0, #0x1c + adds r4, r4, r0 + ldr r0, _081DA094 + str r0, [r4] + adds r0, r5, #0 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081DA090: .4byte gUnknown_20205AC +_081DA094: .4byte sub_081DA098 + thumb_func_end sub_081D9F9C + + thumb_func_start sub_081DA098 +sub_081DA098: @ 0x081DA098 + push {r4, r5, lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x2e + movs r0, #0x20 + ldrsh r1, [r3, r0] + movs r4, #0x2e + ldrsh r0, [r3, r4] + cmp r1, r0 + bne _081DA0C4 + movs r5, #0x22 + ldrsh r1, [r3, r5] + movs r4, #2 + ldrsh r0, [r2, r4] + cmp r1, r0 + bne _081DA0C4 + ldr r0, _081DA0C0 + str r0, [r3, #0x1c] + b _081DA104 + .align 2, 0 +_081DA0C0: .4byte sub_08007140 +_081DA0C4: + ldrh r4, [r2, #8] + movs r5, #8 + ldrsh r1, [r2, r5] + movs r5, #0xc + ldrsh r0, [r2, r5] + cmp r1, r0 + bne _081DA0E0 + ldrh r0, [r2, #4] + ldrh r1, [r3, #0x20] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r3, #0x20] + strh r1, [r2, #8] + b _081DA0E4 +_081DA0E0: + adds r0, r4, #1 + strh r0, [r2, #8] +_081DA0E4: + ldrh r4, [r2, #0xa] + movs r5, #0xa + ldrsh r1, [r2, r5] + movs r5, #0xe + ldrsh r0, [r2, r5] + cmp r1, r0 + bne _081DA100 + ldrh r0, [r2, #6] + ldrh r1, [r3, #0x22] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r3, #0x22] + strh r1, [r2, #0xa] + b _081DA104 +_081DA100: + adds r0, r4, #1 + strh r0, [r2, #0xa] +_081DA104: + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 + thumb_func_end sub_081DA098 + + thumb_func_start sub_081DA10C +sub_081DA10C: @ 0x081DA10C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r6, r0, #0 + mov r8, r1 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r4, [sp, #0x34] + ldr r5, [sp, #0x38] + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + str r2, [sp] + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + str r3, [sp, #4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov sb, r1 + lsls r4, r4, #0x10 + lsrs r7, r4, #0x10 + lsls r5, r5, #0x18 + lsrs r5, r5, #0x18 + ldr r0, _081DA170 + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + mov r1, r8 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r8, r1 + adds r1, r6, #0 + mov r2, r8 + movs r3, #0 + bl sub_08006B0C + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r5, #1 + beq _081DA19C + cmp r5, #1 + bgt _081DA174 + cmp r5, #0 + beq _081DA184 + b _081DA178 + .align 2, 0 +_081DA170: .4byte gUnknown_85FCA40 +_081DA174: + cmp r5, #2 + beq _081DA1B0 +_081DA178: + ldr r2, _081DA180 + lsls r3, r6, #4 + b _081DA1C2 + .align 2, 0 +_081DA180: .4byte gUnknown_20205AC +_081DA184: + ldr r2, _081DA198 + lsls r3, r6, #4 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x78 + strh r1, [r0, #0x2e] + movs r1, #0x2d + b _081DA1C0 + .align 2, 0 +_081DA198: .4byte gUnknown_20205AC +_081DA19C: + ldr r2, _081DA1AC + lsls r3, r6, #4 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x59 + b _081DA1BC + .align 2, 0 +_081DA1AC: .4byte gUnknown_20205AC +_081DA1B0: + ldr r2, _081DA204 + lsls r3, r6, #4 + adds r0, r3, r6 + lsls r0, r0, #2 + adds r0, r0, r2 + movs r1, #0x97 +_081DA1BC: + strh r1, [r0, #0x2e] + movs r1, #0x61 +_081DA1C0: + strh r1, [r0, #0x30] +_081DA1C2: + adds r4, r3, r6 + lsls r4, r4, #2 + adds r0, r4, r2 + mov r3, sp + ldrh r3, [r3] + strh r3, [r0, #0x32] + mov r1, sp + ldrh r1, [r1, #4] + strh r1, [r0, #0x34] + mov r3, sl + strh r3, [r0, #0x36] + mov r1, sb + strh r1, [r0, #0x38] + strh r7, [r0, #0x3a] + adds r1, r5, #0 + str r2, [sp, #8] + bl sub_08007EC0 + ldr r2, [sp, #8] + adds r0, r2, #0 + adds r0, #0x1c + adds r4, r4, r0 + ldr r0, _081DA208 + str r0, [r4] + adds r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7} + pop {r1} + bx r1 + .align 2, 0 +_081DA204: .4byte gUnknown_20205AC +_081DA208: .4byte sub_081DA20C + thumb_func_end sub_081DA10C + + thumb_func_start sub_081DA20C +sub_081DA20C: @ 0x081DA20C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + bl sub_0806EFF4 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x36 + ldrsh r1, [r4, r2] + muls r0, r1, r0 + asrs r0, r0, #0xc + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + bl sub_0806F038 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r3, #0x36 + ldrsh r1, [r4, r3] + muls r0, r1, r0 + asrs r0, r0, #0xc + strh r0, [r4, #0x26] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x34 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + movs r1, #0xb4 + lsls r1, r1, #1 + bl __modsi3 + strh r0, [r4, #0x32] + ldrh r2, [r4, #0x36] + movs r3, #0x36 + ldrsh r1, [r4, r3] + movs r3, #0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _081DA262 + ldrh r0, [r4, #0x3a] + adds r0, r2, r0 + strh r0, [r4, #0x36] + b _081DA266 +_081DA262: + ldr r0, _081DA26C + str r0, [r4, #0x1c] +_081DA266: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081DA26C: .4byte sub_08007140 + thumb_func_end sub_081DA20C + + thumb_func_start sub_081DA270 +sub_081DA270: @ 0x081DA270 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _081DA2BC + adds r0, r4, #0 + bl sub_08008280 + adds r0, r4, #0 + bl sub_08008564 + movs r0, #0x10 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r4, _081DA2C0 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0x12 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + movs r0, #0x14 + ldrsh r1, [r5, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r4 + bl sub_08006E00 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA2BC: .4byte 0x00002E90 +_081DA2C0: .4byte gUnknown_20205AC + thumb_func_end sub_081DA270 + + thumb_func_start sub_081DA2C4 +sub_081DA2C4: @ 0x081DA2C4 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r2, _081DA30C + movs r0, #0x10 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r5, r2, #0 + adds r5, #0x1c + adds r0, r0, r5 + ldr r4, [r0] + ldr r0, _081DA310 + cmp r4, r0 + bne _081DA314 + movs r0, #0x12 + ldrsh r1, [r3, r0] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r2, [r0] + cmp r2, r4 + bne _081DA314 + movs r1, #0x14 + ldrsh r0, [r3, r1] + lsls r1, r0, #4 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r1, r1, r5 + ldr r0, [r1] + cmp r0, r2 + bne _081DA314 + movs r0, #1 + b _081DA316 + .align 2, 0 +_081DA30C: .4byte gUnknown_20205AC +_081DA310: .4byte sub_08007140 +_081DA314: + movs r0, #0 +_081DA316: + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081DA2C4 + + thumb_func_start sub_081DA31C +sub_081DA31C: @ 0x081DA31C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _081DA370 + bl sub_081D9F50 + ldr r1, _081DA36C + movs r0, #0x50 + bl sub_08001144 + movs r1, #0x80 + lsls r1, r1, #5 + movs r0, #0x52 + bl sub_08001144 + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001D1C + movs r0, #0 + movs r1, #0 + movs r2, #0 + bl sub_08001E94 + movs r1, #0xa0 + lsls r1, r1, #3 + movs r0, #0 + movs r2, #2 + bl sub_08001E94 + movs r0, #0 + strh r0, [r4, #0xa] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + movs r0, #1 + b _081DA396 + .align 2, 0 +_081DA36C: .4byte 0x00003F41 +_081DA370: + movs r1, #0x80 + lsls r1, r1, #6 + movs r0, #0 + bl sub_08001220 + movs r1, #0x80 + lsls r1, r1, #7 + movs r0, #0 + bl sub_08001220 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #0 + bl sub_08001220 + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 +_081DA396: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_081DA31C + + thumb_func_start sub_081DA39C +sub_081DA39C: @ 0x081DA39C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0xc + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _081DA3B4 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #0 + bl sub_08001200 +_081DA3B4: + ldrh r1, [r4, #0xc] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r0, #0x10 + bne _081DA3E8 + ldrh r1, [r4, #0xe] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r0, #0x1f + bne _081DA3E2 + movs r1, #1 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + adds r0, r1, #0 + movs r2, #0 + movs r3, #0x10 + bl sub_080A139C + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] + b _081DA400 +_081DA3E2: + adds r0, r1, #1 + strh r0, [r4, #0xe] + b _081DA400 +_081DA3E8: + adds r0, r1, #1 + strh r0, [r4, #0xc] + ldrh r1, [r4, #0xc] + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + movs r0, #0x52 + bl sub_08001144 +_081DA400: + movs r0, #0 + add sp, #4 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA39C + + thumb_func_start sub_081DA40C +sub_081DA40C: @ 0x081DA40C + push {r4, lr} + adds r4, r0, #0 + bl sub_081DA2C4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _081DA422 + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081DA422: + movs r0, #0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA40C + + thumb_func_start sub_081DA42C +sub_081DA42C: @ 0x081DA42C + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA45C + ldr r2, _081DA460 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA43E: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA43E + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA45C: .4byte gUnknown_85FCA58 +_081DA460: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA42C + + thumb_func_start sub_081DA464 +sub_081DA464: @ 0x081DA464 + push {r4, r5, r6, lr} + sub sp, #0xc + adds r6, r0, #0 + movs r1, #0x33 + rsbs r1, r1, #0 + movs r0, #0 + str r0, [sp] + movs r5, #2 + str r5, [sp, #4] + str r0, [sp, #8] + movs r0, #0x78 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x10] + movs r0, #7 + rsbs r0, r0, #0 + str r5, [sp] + movs r4, #2 + rsbs r4, r4, #0 + str r4, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0xc1 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x12] + str r4, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #0xf7 + movs r1, #0xc1 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r6, #0x14] + ldrh r0, [r6, #8] + adds r0, #1 + strh r0, [r6, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5, r6} + pop {r1} + bx r1 + thumb_func_end sub_081DA464 + + thumb_func_start sub_081DA4D0 +sub_081DA4D0: @ 0x081DA4D0 + push {lr} + adds r2, r0, #0 + ldr r0, _081DA4FC + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA4F4 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA500 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA4F4: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA4FC: .4byte gUnknown_2037C74 +_081DA500: .4byte sub_081DA42C + thumb_func_end sub_081DA4D0 + + thumb_func_start sub_081DA504 +sub_081DA504: @ 0x081DA504 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA534 + ldr r2, _081DA538 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA516: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA516 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA534: .4byte gUnknown_85FCA6C +_081DA538: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA504 + + thumb_func_start sub_081DA53C +sub_081DA53C: @ 0x081DA53C + push {r4, r5, lr} + sub sp, #0xc + adds r5, r0, #0 + movs r0, #0 + str r0, [sp] + movs r4, #4 + rsbs r4, r4, #0 + str r4, [sp, #4] + str r0, [sp, #8] + movs r0, #0x78 + movs r1, #0xc5 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x10] + str r4, [sp] + movs r4, #2 + str r4, [sp, #4] + movs r0, #1 + str r0, [sp, #8] + movs r0, #0xf1 + movs r1, #0x3b + movs r2, #0 + movs r3, #1 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x12] + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #4 + str r1, [sp] + str r4, [sp, #4] + str r4, [sp, #8] + movs r1, #0x3b + movs r2, #0 + movs r3, #1 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r5, #0x14] + ldrh r0, [r5, #8] + adds r0, #1 + strh r0, [r5, #8] + movs r0, #0 + add sp, #0xc + pop {r4, r5} + pop {r1} + bx r1 + thumb_func_end sub_081DA53C + + thumb_func_start sub_081DA5A8 +sub_081DA5A8: @ 0x081DA5A8 + push {lr} + adds r2, r0, #0 + ldr r0, _081DA5D4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA5CC + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA5D8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA5CC: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA5D4: .4byte gUnknown_2037C74 +_081DA5D8: .4byte sub_081DA504 + thumb_func_end sub_081DA5A8 + + thumb_func_start sub_081DA5DC +sub_081DA5DC: @ 0x081DA5DC + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA60C + ldr r2, _081DA610 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA5EE: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA5EE + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA60C: .4byte gUnknown_85FCA80 +_081DA610: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA5DC + + thumb_func_start sub_081DA614 +sub_081DA614: @ 0x081DA614 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x10 + mov r8, r0 + movs r6, #0x80 + str r6, [sp] + movs r4, #0 + str r4, [sp, #4] + movs r5, #4 + rsbs r5, r5, #0 + str r5, [sp, #8] + str r4, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x2d + movs r2, #0xc + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x10] + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0x59 + movs r1, #0x61 + movs r2, #0xfc + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x12] + str r6, [sp] + str r4, [sp, #4] + str r5, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + movs r0, #0x97 + movs r1, #0x61 + movs r2, #0x84 + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x14] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA614 + + thumb_func_start sub_081DA694 +sub_081DA694: @ 0x081DA694 + push {lr} + adds r2, r0, #0 + ldr r0, _081DA6C0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA6B8 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA6C4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA6B8: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA6C0: .4byte gUnknown_2037C74 +_081DA6C4: .4byte sub_081DA5DC + thumb_func_end sub_081DA694 + + thumb_func_start sub_081DA6C8 +sub_081DA6C8: @ 0x081DA6C8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA6F8 + ldr r2, _081DA6FC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA6DA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA6DA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA6F8: .4byte gUnknown_85FCA94 +_081DA6FC: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA6C8 + + thumb_func_start sub_081DA700 +sub_081DA700: @ 0x081DA700 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x10 + mov r8, r0 + movs r2, #0x8e + lsls r2, r2, #1 + movs r6, #0x83 + str r6, [sp] + movs r5, #0x23 + str r5, [sp, #4] + movs r4, #3 + rsbs r4, r4, #0 + str r4, [sp, #8] + movs r0, #0 + str r0, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x50 + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x10] + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x50 + movs r2, #0x2c + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x12] + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + movs r0, #0x79 + movs r1, #0x50 + movs r2, #0xa4 + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r1, r8 + strh r0, [r1, #0x14] + ldrh r0, [r1, #8] + adds r0, #1 + strh r0, [r1, #8] + movs r0, #0 + add sp, #0x10 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA700 + + thumb_func_start sub_081DA784 +sub_081DA784: @ 0x081DA784 + push {lr} + adds r2, r0, #0 + ldr r0, _081DA7B0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA7A8 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA7B4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA7A8: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA7B0: .4byte gUnknown_2037C74 +_081DA7B4: .4byte sub_081DA6C8 + thumb_func_end sub_081DA784 + + thumb_func_start sub_081DA7B8 +sub_081DA7B8: @ 0x081DA7B8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA7E8 + ldr r2, _081DA7EC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA7CA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA7CA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA7E8: .4byte gUnknown_85FCAA8 +_081DA7EC: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA7B8 + + thumb_func_start sub_081DA7F0 +sub_081DA7F0: @ 0x081DA7F0 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0xa + ldrsh r2, [r4, r0] + cmp r2, #0 + bne _081DA81C + movs r1, #0x33 + rsbs r1, r1, #0 + str r2, [sp] + movs r0, #4 + str r0, [sp, #4] + str r2, [sp, #8] + movs r0, #0x78 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x10] + b _081DA86A +_081DA81C: + cmp r2, #0x10 + bne _081DA842 + movs r0, #7 + rsbs r0, r0, #0 + movs r1, #4 + str r1, [sp] + subs r1, #8 + str r1, [sp, #4] + movs r1, #1 + str r1, [sp, #8] + movs r1, #0xc1 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + b _081DA86A +_081DA842: + cmp r2, #0x20 + bne _081DA86A + movs r0, #4 + rsbs r0, r0, #0 + str r0, [sp] + str r0, [sp, #4] + movs r0, #2 + str r0, [sp, #8] + movs r0, #0xf7 + movs r1, #0xc1 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081DA86A: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA7F0 + + thumb_func_start sub_081DA87C +sub_081DA87C: @ 0x081DA87C + push {lr} + adds r2, r0, #0 + ldr r0, _081DA8A8 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA8A0 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA8AC + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA8A0: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA8A8: .4byte gUnknown_2037C74 +_081DA8AC: .4byte sub_081DA7B8 + thumb_func_end sub_081DA87C + + thumb_func_start sub_081DA8B0 +sub_081DA8B0: @ 0x081DA8B0 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA8E0 + ldr r2, _081DA8E4 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA8C2: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA8C2 + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA8E0: .4byte gUnknown_85FCABC +_081DA8E4: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA8B0 + + thumb_func_start sub_081DA8E8 +sub_081DA8E8: @ 0x081DA8E8 + push {r4, lr} + sub sp, #0xc + adds r4, r0, #0 + movs r0, #0xa + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _081DA914 + str r1, [sp] + movs r0, #8 + rsbs r0, r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + movs r0, #0x78 + movs r1, #0xc5 + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x10] + b _081DA962 +_081DA914: + cmp r1, #0x10 + bne _081DA938 + movs r0, #8 + rsbs r0, r0, #0 + str r0, [sp] + movs r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + movs r0, #0xf1 + movs r1, #0x4e + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + b _081DA962 +_081DA938: + cmp r1, #0x20 + bne _081DA962 + movs r0, #1 + rsbs r0, r0, #0 + movs r1, #8 + str r1, [sp] + movs r1, #1 + str r1, [sp, #4] + movs r1, #2 + str r1, [sp, #8] + movs r1, #0x4e + movs r2, #0 + movs r3, #0 + bl sub_081D9F9C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081DA962: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 + add sp, #0xc + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA8E8 + + thumb_func_start sub_081DA974 +sub_081DA974: @ 0x081DA974 + push {lr} + adds r2, r0, #0 + ldr r0, _081DA9A0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DA998 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DA9A4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DA998: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DA9A0: .4byte gUnknown_2037C74 +_081DA9A4: .4byte sub_081DA8B0 + thumb_func_end sub_081DA974 + + thumb_func_start sub_081DA9A8 +sub_081DA9A8: @ 0x081DA9A8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DA9D8 + ldr r2, _081DA9DC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DA9BA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DA9BA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DA9D8: .4byte gUnknown_85FCAD0 +_081DA9DC: .4byte gUnknown_3005B60 + thumb_func_end sub_081DA9A8 + + thumb_func_start sub_081DA9E0 +sub_081DA9E0: @ 0x081DA9E0 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + movs r0, #0xa + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _081DAA0E + movs r0, #0x80 + str r0, [sp] + str r1, [sp, #4] + subs r0, #0x84 + str r0, [sp, #8] + str r1, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x2d + movs r2, #0xc + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x10] + b _081DAA62 +_081DAA0E: + cmp r1, #0x10 + bne _081DAA36 + movs r0, #0x80 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + subs r0, #4 + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0x59 + movs r1, #0x61 + movs r2, #0xfc + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + b _081DAA62 +_081DAA36: + cmp r1, #0x20 + bne _081DAA62 + movs r0, #0x80 + str r0, [sp] + movs r0, #0 + str r0, [sp, #4] + subs r0, #4 + str r0, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + movs r0, #0x97 + movs r1, #0x61 + movs r2, #0x84 + movs r3, #4 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081DAA62: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DA9E0 + + thumb_func_start sub_081DAA74 +sub_081DAA74: @ 0x081DAA74 + push {lr} + adds r2, r0, #0 + ldr r0, _081DAAA0 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DAA98 + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DAAA4 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DAA98: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DAAA0: .4byte gUnknown_2037C74 +_081DAAA4: .4byte sub_081DA9A8 + thumb_func_end sub_081DAA74 + + thumb_func_start sub_081DAAA8 +sub_081DAAA8: @ 0x081DAAA8 + push {r4, r5, lr} + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldr r5, _081DAAD8 + ldr r2, _081DAADC + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #3 + adds r4, r1, r2 +_081DAABA: + movs r1, #8 + ldrsh r0, [r4, r1] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _081DAABA + pop {r4, r5} + pop {r0} + bx r0 + .align 2, 0 +_081DAAD8: .4byte gUnknown_85FCAE4 +_081DAADC: .4byte gUnknown_3005B60 + thumb_func_end sub_081DAAA8 + + thumb_func_start sub_081DAAE0 +sub_081DAAE0: @ 0x081DAAE0 + push {r4, lr} + sub sp, #0x10 + adds r4, r0, #0 + movs r0, #0xa + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _081DAB12 + movs r2, #0x8e + lsls r2, r2, #1 + movs r0, #0x83 + str r0, [sp] + movs r0, #0x23 + str r0, [sp, #4] + subs r0, #0x26 + str r0, [sp, #8] + str r1, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x50 + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x10] + b _081DAB66 +_081DAB12: + cmp r1, #0x10 + bne _081DAB3A + movs r0, #0x83 + str r0, [sp] + movs r0, #0x23 + str r0, [sp, #4] + subs r0, #0x26 + str r0, [sp, #8] + movs r0, #1 + str r0, [sp, #0xc] + movs r0, #0x78 + movs r1, #0x50 + movs r2, #0x2c + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x12] + b _081DAB66 +_081DAB3A: + cmp r1, #0x20 + bne _081DAB66 + movs r0, #0x83 + str r0, [sp] + movs r0, #0x23 + str r0, [sp, #4] + subs r0, #0x26 + str r0, [sp, #8] + movs r0, #2 + str r0, [sp, #0xc] + movs r0, #0x79 + movs r1, #0x50 + movs r2, #0xa4 + movs r3, #8 + bl sub_081DA10C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + strh r0, [r4, #0x14] + ldrh r0, [r4, #8] + adds r0, #1 + strh r0, [r4, #8] +_081DAB66: + ldrh r0, [r4, #0xa] + adds r0, #1 + strh r0, [r4, #0xa] + movs r0, #0 + add sp, #0x10 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end sub_081DAAE0 + + thumb_func_start sub_081DAB78 +sub_081DAB78: @ 0x081DAB78 + push {lr} + adds r2, r0, #0 + ldr r0, _081DABA4 + ldrb r1, [r0, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _081DAB9C + adds r0, r2, #0 + bl sub_081DA270 + ldr r0, _081DABA8 + bl sub_080A8AE4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_080A8964 +_081DAB9C: + movs r0, #0 + pop {r1} + bx r1 + .align 2, 0 +_081DABA4: .4byte gUnknown_2037C74 +_081DABA8: .4byte sub_081DAAA8 + thumb_func_end sub_081DAB78 diff --git a/asm/siirtc.s b/asm/siirtc.s new file mode 100644 index 0000000..fe8d64b --- /dev/null +++ b/asm/siirtc.s @@ -0,0 +1,1191 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .text + .syntax unified + + thumb_func_start SiiRtcUnprotect +SiiRtcUnprotect: @ 0x082906D8 + push {r7, lr} + mov r7, sp + bl sub_08290F78 + ldr r0, _082906EC + movs r1, #0 + strb r1, [r0] + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_082906EC: .4byte gUnknown_3001A76 + thumb_func_end SiiRtcUnprotect + + thumb_func_start SiiRtcProtect +SiiRtcProtect: @ 0x082906F0 + push {r7, lr} + mov r7, sp + bl sub_08290F8C + ldr r0, _08290704 + movs r1, #1 + strb r1, [r0] + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_08290704: .4byte gUnknown_3001A76 + thumb_func_end SiiRtcProtect + + thumb_func_start SiiRtcProbe +SiiRtcProbe: @ 0x08290708 + push {r7, lr} + sub sp, #0x10 + mov r7, sp + adds r1, r7, #4 + adds r0, r1, #0 + bl SiiRtcGetStatus + lsls r1, r0, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0 + bne _08290722 + movs r0, #0 + b _082907D6 +_08290722: + adds r0, r7, #0 + movs r1, #0 + strb r1, [r0] + adds r0, r7, #4 + ldrb r1, [r0, #7] + movs r2, #0xc0 + adds r0, r1, #0 + ands r0, r2 + adds r2, r0, #0 + lsls r1, r2, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0x80 + beq _08290752 + adds r0, r7, #4 + ldrb r1, [r0, #7] + movs r2, #0xc0 + adds r0, r1, #0 + ands r0, r2 + adds r2, r0, #0 + lsls r1, r2, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0 + bne _08290770 + b _08290752 +_08290752: + bl SiiRtcReset + lsls r1, r0, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0 + bne _08290762 + movs r0, #0 + b _082907D6 +_08290762: + adds r1, r7, #0 + adds r0, r7, #0 + adds r1, r7, #0 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] +_08290770: + adds r1, r7, #4 + adds r0, r1, #0 + bl SiiRtcGetTime + adds r0, r7, #4 + ldrb r1, [r0, #6] + movs r2, #0x80 + adds r0, r1, #0 + ands r0, r2 + adds r2, r0, #0 + lsls r1, r2, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0 + beq _082907BE + bl SiiRtcReset + lsls r1, r0, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0 + bne _082907B0 + adds r0, r7, #0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r1, r0, #0 + movs r2, #0xf + adds r0, r1, #0 + bics r0, r2 + adds r1, r0, #0 + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + adds r0, r1, #0 + b _082907D6 +_082907B0: + adds r1, r7, #0 + adds r0, r7, #0 + adds r1, r7, #0 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] +_082907BE: + adds r0, r7, #0 + ldrb r1, [r0] + lsls r0, r1, #4 + adds r1, r0, #0 + movs r2, #1 + adds r0, r1, #0 + orrs r0, r2 + adds r1, r0, #0 + lsls r0, r1, #0x18 + lsrs r1, r0, #0x18 + adds r0, r1, #0 + b _082907D6 +_082907D6: + add sp, #0x10 + pop {r7} + pop {r1} + bx r1 + .align 2, 0 + thumb_func_end SiiRtcProbe + + thumb_func_start SiiRtcReset +SiiRtcReset: @ 0x082907E0 + push {r7, lr} + sub sp, #0x10 + mov r7, sp + ldr r0, _082907F4 + ldrb r1, [r0] + cmp r1, #1 + bne _082907F8 + movs r0, #0 + b _0829085C + .align 2, 0 +_082907F4: .4byte gUnknown_3001A76 +_082907F8: + ldr r0, _08290850 + movs r1, #1 + strb r1, [r0] + ldr r0, _08290854 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290854 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290858 + movs r1, #7 + strh r1, [r0] + movs r0, #0x60 + bl sub_08290DA8 + ldr r0, _08290854 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290854 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290850 + movs r1, #0 + strb r1, [r0] + adds r0, r7, #4 + ldrb r1, [r0, #7] + movs r2, #0 + ands r1, r2 + adds r2, r1, #0 + movs r3, #0x40 + adds r1, r2, #0 + orrs r1, r3 + adds r2, r1, #0 + strb r2, [r0, #7] + adds r1, r7, #4 + adds r0, r1, #0 + bl SiiRtcSetStatus + adds r1, r7, #0 + strb r0, [r1] + adds r0, r7, #0 + ldrb r1, [r0] + adds r0, r1, #0 + b _0829085C + .align 2, 0 +_08290850: .4byte gUnknown_3001A76 +_08290854: .4byte 0x080000C4 +_08290858: .4byte 0x080000C6 +_0829085C: + add sp, #0x10 + pop {r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcReset + + thumb_func_start SiiRtcGetStatus +SiiRtcGetStatus: @ 0x08290864 + push {r4, r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _08290878 + ldrb r1, [r0] + cmp r1, #1 + bne _0829087C + movs r0, #0 + b _08290928 + .align 2, 0 +_08290878: .4byte gUnknown_3001A76 +_0829087C: + ldr r0, _0829091C + movs r1, #1 + strb r1, [r0] + ldr r0, _08290920 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290920 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290924 + movs r1, #7 + strh r1, [r0] + movs r0, #0x63 + bl sub_08290DA8 + ldr r0, _08290924 + movs r1, #5 + strh r1, [r0] + bl sub_08290EEC + adds r1, r7, #4 + strb r0, [r1] + ldr r0, [r7] + adds r1, r7, #4 + ldrb r2, [r1] + movs r3, #0xc0 + adds r1, r2, #0 + ands r1, r3 + adds r2, r7, #4 + ldrb r3, [r2] + movs r4, #0x20 + adds r2, r3, #0 + ands r2, r4 + adds r4, r2, #0 + lsls r3, r4, #0x18 + lsrs r2, r3, #0x18 + lsrs r3, r2, #3 + adds r2, r3, #0 + orrs r1, r2 + adds r2, r7, #4 + ldrb r3, [r2] + movs r4, #8 + adds r2, r3, #0 + ands r2, r4 + adds r4, r2, #0 + lsls r3, r4, #0x18 + lsrs r2, r3, #0x18 + lsrs r3, r2, #2 + adds r2, r3, #0 + orrs r1, r2 + adds r2, r7, #4 + ldrb r3, [r2] + movs r4, #2 + adds r2, r3, #0 + ands r2, r4 + adds r4, r2, #0 + lsls r3, r4, #0x18 + lsrs r2, r3, #0x18 + lsrs r3, r2, #1 + adds r2, r3, #0 + orrs r1, r2 + ldrb r2, [r0, #7] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strb r1, [r0, #7] + ldr r0, _08290920 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290920 + movs r1, #1 + strh r1, [r0] + ldr r0, _0829091C + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290928 + .align 2, 0 +_0829091C: .4byte gUnknown_3001A76 +_08290920: .4byte 0x080000C4 +_08290924: .4byte 0x080000C6 +_08290928: + add sp, #8 + pop {r4, r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcGetStatus + + thumb_func_start SiiRtcSetStatus +SiiRtcSetStatus: @ 0x08290930 + push {r4, r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _08290944 + ldrb r1, [r0] + cmp r1, #1 + bne _08290948 + movs r0, #0 + b _082909D0 + .align 2, 0 +_08290944: .4byte gUnknown_3001A76 +_08290948: + ldr r0, _082909C4 + movs r1, #1 + strb r1, [r0] + ldr r0, _082909C8 + movs r1, #1 + strh r1, [r0] + ldr r0, _082909C8 + movs r1, #5 + strh r1, [r0] + adds r0, r7, #4 + ldr r1, [r7] + ldrb r2, [r1, #7] + movs r3, #4 + adds r1, r2, #0 + ands r1, r3 + adds r2, r1, #0 + lsls r1, r2, #3 + ldr r2, [r7] + ldrb r3, [r2, #7] + movs r4, #2 + adds r2, r3, #0 + ands r2, r4 + adds r3, r2, #0 + lsls r2, r3, #2 + adds r3, r2, #0 + movs r4, #0x40 + adds r2, r3, #0 + orrs r2, r4 + orrs r1, r2 + ldr r2, [r7] + ldrb r3, [r2, #7] + movs r4, #1 + adds r2, r3, #0 + ands r2, r4 + adds r3, r2, #0 + lsls r2, r3, #1 + orrs r1, r2 + adds r2, r1, #0 + strb r2, [r0] + ldr r0, _082909CC + movs r1, #7 + strh r1, [r0] + movs r0, #0x62 + bl sub_08290DA8 + adds r0, r7, #4 + ldrb r1, [r0] + adds r0, r1, #0 + bl sub_08290E4C + ldr r0, _082909C8 + movs r1, #1 + strh r1, [r0] + ldr r0, _082909C8 + movs r1, #1 + strh r1, [r0] + ldr r0, _082909C4 + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _082909D0 + .align 2, 0 +_082909C4: .4byte gUnknown_3001A76 +_082909C8: .4byte 0x080000C4 +_082909CC: .4byte 0x080000C6 +_082909D0: + add sp, #8 + pop {r4, r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcSetStatus + + thumb_func_start SiiRtcGetDateTime +SiiRtcGetDateTime: @ 0x082909D8 + push {r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _082909EC + ldrb r1, [r0] + cmp r1, #1 + bne _082909F0 + movs r0, #0 + b _08290A80 + .align 2, 0 +_082909EC: .4byte gUnknown_3001A76 +_082909F0: + ldr r0, _08290A24 + movs r1, #1 + strb r1, [r0] + ldr r0, _08290A28 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290A28 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290A2C + movs r1, #7 + strh r1, [r0] + movs r0, #0x65 + bl sub_08290DA8 + ldr r0, _08290A2C + movs r1, #5 + strh r1, [r0] + adds r0, r7, #4 + movs r1, #0 + strb r1, [r0] +_08290A1A: + adds r0, r7, #4 + ldrb r1, [r0] + cmp r1, #6 + bls _08290A30 + b _08290A4E + .align 2, 0 +_08290A24: .4byte gUnknown_3001A76 +_08290A28: .4byte 0x080000C4 +_08290A2C: .4byte 0x080000C6 +_08290A30: + bl sub_08290EEC + adds r1, r7, #4 + ldrb r2, [r1] + ldr r3, [r7] + adds r1, r2, r3 + strb r0, [r1] + adds r1, r7, #4 + adds r0, r7, #4 + adds r1, r7, #4 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290A1A +_08290A4E: + ldr r1, [r7] + adds r0, r1, #4 + ldr r2, [r7] + adds r1, r2, #4 + ldrb r2, [r1] + movs r3, #0x7f + adds r1, r2, #0 + ands r1, r3 + adds r2, r1, #0 + strb r2, [r0] + ldr r0, _08290A78 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290A78 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290A7C + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290A80 + .align 2, 0 +_08290A78: .4byte 0x080000C4 +_08290A7C: .4byte gUnknown_3001A76 +_08290A80: + add sp, #8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcGetDateTime + + thumb_func_start SiiRtcSetDateTime +SiiRtcSetDateTime: @ 0x08290A88 + push {r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _08290A9C + ldrb r1, [r0] + cmp r1, #1 + bne _08290AA0 + movs r0, #0 + b _08290B1C + .align 2, 0 +_08290A9C: .4byte gUnknown_3001A76 +_08290AA0: + ldr r0, _08290AD0 + movs r1, #1 + strb r1, [r0] + ldr r0, _08290AD4 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290AD4 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290AD8 + movs r1, #7 + strh r1, [r0] + movs r0, #0x64 + bl sub_08290DA8 + adds r0, r7, #4 + movs r1, #0 + strb r1, [r0] +_08290AC4: + adds r0, r7, #4 + ldrb r1, [r0] + cmp r1, #6 + bls _08290ADC + b _08290AFC + .align 2, 0 +_08290AD0: .4byte gUnknown_3001A76 +_08290AD4: .4byte 0x080000C4 +_08290AD8: .4byte 0x080000C6 +_08290ADC: + adds r0, r7, #4 + ldrb r1, [r0] + ldr r2, [r7] + adds r0, r1, r2 + ldrb r1, [r0] + adds r0, r1, #0 + bl sub_08290E4C + adds r1, r7, #4 + adds r0, r7, #4 + adds r1, r7, #4 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290AC4 +_08290AFC: + ldr r0, _08290B14 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290B14 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290B18 + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290B1C + .align 2, 0 +_08290B14: .4byte 0x080000C4 +_08290B18: .4byte gUnknown_3001A76 +_08290B1C: + add sp, #8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcSetDateTime + + thumb_func_start SiiRtcGetTime +SiiRtcGetTime: @ 0x08290B24 + push {r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _08290B38 + ldrb r1, [r0] + cmp r1, #1 + bne _08290B3C + movs r0, #0 + b _08290BD0 + .align 2, 0 +_08290B38: .4byte gUnknown_3001A76 +_08290B3C: + ldr r0, _08290B70 + movs r1, #1 + strb r1, [r0] + ldr r0, _08290B74 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290B74 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290B78 + movs r1, #7 + strh r1, [r0] + movs r0, #0x67 + bl sub_08290DA8 + ldr r0, _08290B78 + movs r1, #5 + strh r1, [r0] + adds r0, r7, #4 + movs r1, #0 + strb r1, [r0] +_08290B66: + adds r0, r7, #4 + ldrb r1, [r0] + cmp r1, #2 + bls _08290B7C + b _08290B9C + .align 2, 0 +_08290B70: .4byte gUnknown_3001A76 +_08290B74: .4byte 0x080000C4 +_08290B78: .4byte 0x080000C6 +_08290B7C: + bl sub_08290EEC + adds r1, r7, #4 + ldrb r2, [r1] + ldr r3, [r7] + adds r1, r2, r3 + adds r2, r1, #4 + strb r0, [r2] + adds r1, r7, #4 + adds r0, r7, #4 + adds r1, r7, #4 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290B66 +_08290B9C: + ldr r1, [r7] + adds r0, r1, #4 + ldr r2, [r7] + adds r1, r2, #4 + ldrb r2, [r1] + movs r3, #0x7f + adds r1, r2, #0 + ands r1, r3 + adds r2, r1, #0 + strb r2, [r0] + ldr r0, _08290BC8 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290BC8 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290BCC + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290BD0 + .align 2, 0 +_08290BC8: .4byte 0x080000C4 +_08290BCC: .4byte gUnknown_3001A76 +_08290BD0: + add sp, #8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcGetTime + + thumb_func_start SiiRtcSetTime +SiiRtcSetTime: @ 0x08290BD8 + push {r7, lr} + sub sp, #8 + mov r7, sp + str r0, [r7] + ldr r0, _08290BEC + ldrb r1, [r0] + cmp r1, #1 + bne _08290BF0 + movs r0, #0 + b _08290C6C + .align 2, 0 +_08290BEC: .4byte gUnknown_3001A76 +_08290BF0: + ldr r0, _08290C20 + movs r1, #1 + strb r1, [r0] + ldr r0, _08290C24 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290C24 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290C28 + movs r1, #7 + strh r1, [r0] + movs r0, #0x66 + bl sub_08290DA8 + adds r0, r7, #4 + movs r1, #0 + strb r1, [r0] +_08290C14: + adds r0, r7, #4 + ldrb r1, [r0] + cmp r1, #2 + bls _08290C2C + b _08290C4E + .align 2, 0 +_08290C20: .4byte gUnknown_3001A76 +_08290C24: .4byte 0x080000C4 +_08290C28: .4byte 0x080000C6 +_08290C2C: + adds r0, r7, #4 + ldrb r1, [r0] + ldr r2, [r7] + adds r0, r1, r2 + adds r1, r0, #4 + ldrb r2, [r1] + adds r0, r2, #0 + bl sub_08290E4C + adds r1, r7, #4 + adds r0, r7, #4 + adds r1, r7, #4 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290C14 +_08290C4E: + ldr r0, _08290C64 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290C64 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290C68 + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290C6C + .align 2, 0 +_08290C64: .4byte 0x080000C4 +_08290C68: .4byte gUnknown_3001A76 +_08290C6C: + add sp, #8 + pop {r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcSetTime + + thumb_func_start SiiRtcSetAlarm +SiiRtcSetAlarm: @ 0x08290C74 + push {r4, r7, lr} + sub sp, #0xc + mov r7, sp + str r0, [r7] + ldr r0, _08290C88 + ldrb r1, [r0] + cmp r1, #1 + bne _08290C8C + movs r0, #0 + b _08290DA0 + .align 2, 0 +_08290C88: .4byte gUnknown_3001A76 +_08290C8C: + ldr r0, _08290CF4 + movs r1, #1 + strb r1, [r0] + adds r0, r7, #0 + adds r0, #8 + ldr r1, [r7] + ldrb r2, [r1, #8] + movs r3, #0xf + adds r1, r2, #0 + ands r1, r3 + ldr r2, [r7] + ldrb r3, [r2, #8] + lsrs r2, r3, #4 + adds r3, r2, #0 + movs r4, #0xf + adds r2, r3, #0 + ands r2, r4 + adds r4, r2, #0 + lsls r3, r4, #0x18 + lsrs r2, r3, #0x18 + adds r4, r2, #0 + lsls r3, r4, #2 + adds r3, r3, r2 + lsls r2, r3, #1 + adds r1, r1, r2 + ldrb r2, [r0] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strb r1, [r0] + adds r0, r7, #0 + adds r0, #8 + ldrb r1, [r0] + cmp r1, #0xb + bhi _08290CF8 + adds r0, r7, #0 + adds r0, #8 + ldr r1, [r7] + ldrb r2, [r0] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + ldrb r1, [r1, #8] + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strb r1, [r0] + b _08290D16 + .align 2, 0 +_08290CF4: .4byte gUnknown_3001A76 +_08290CF8: + adds r0, r7, #0 + adds r0, #8 + ldr r1, [r7] + ldrb r2, [r1, #8] + movs r3, #0x80 + adds r1, r2, #0 + orrs r1, r3 + ldrb r2, [r0] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strb r1, [r0] +_08290D16: + adds r0, r7, #0 + adds r0, #8 + ldr r1, [r7] + ldrb r2, [r0, #1] + movs r3, #0 + ands r2, r3 + adds r3, r2, #0 + ldrb r1, [r1, #9] + adds r2, r3, #0 + orrs r2, r1 + adds r1, r2, #0 + strb r1, [r0, #1] + ldr r0, _08290D58 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290D58 + movs r1, #5 + strh r1, [r0] + ldr r0, _08290D5C + movs r1, #7 + strh r1, [r0] + movs r0, #0x68 + bl sub_08290DA8 + adds r0, r7, #4 + movs r1, #0 + strb r1, [r0] +_08290D4C: + adds r0, r7, #4 + ldrb r1, [r0] + cmp r1, #1 + bls _08290D60 + b _08290D82 + .align 2, 0 +_08290D58: .4byte 0x080000C4 +_08290D5C: .4byte 0x080000C6 +_08290D60: + adds r0, r7, #0 + adds r0, #8 + adds r1, r7, #4 + ldrb r2, [r1] + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r1, #0 + bl sub_08290E4C + adds r1, r7, #4 + adds r0, r7, #4 + adds r1, r7, #4 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290D4C +_08290D82: + ldr r0, _08290D98 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290D98 + movs r1, #1 + strh r1, [r0] + ldr r0, _08290D9C + movs r1, #0 + strb r1, [r0] + movs r0, #1 + b _08290DA0 + .align 2, 0 +_08290D98: .4byte 0x080000C4 +_08290D9C: .4byte gUnknown_3001A76 +_08290DA0: + add sp, #0xc + pop {r4, r7} + pop {r1} + bx r1 + thumb_func_end SiiRtcSetAlarm + + thumb_func_start sub_08290DA8 +sub_08290DA8: @ 0x08290DA8 + push {r4, r5, r7, lr} + sub sp, #4 + mov r7, sp + adds r1, r0, #0 + adds r2, r7, #0 + strb r1, [r2] + adds r1, r7, #1 + movs r2, #0 + strb r2, [r1] +_08290DBA: + adds r1, r7, #1 + ldrb r2, [r1] + cmp r2, #7 + bls _08290DC4 + b _08290E44 +_08290DC4: + adds r1, r7, #2 + adds r3, r7, #0 + ldrb r2, [r3] + adds r3, r7, #1 + ldrb r4, [r3] + movs r5, #7 + subs r3, r5, r4 + asrs r2, r3 + adds r3, r2, #0 + movs r4, #1 + adds r2, r3, #0 + ands r2, r4 + adds r3, r2, #0 + strb r3, [r1] + ldr r1, _08290E40 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290E40 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290E40 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290E40 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #5 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + adds r2, r7, #1 + adds r1, r7, #1 + adds r2, r7, #1 + ldrb r3, [r2] + adds r2, r3, #1 + adds r3, r2, #0 + strb r3, [r1] + b _08290DBA + .align 2, 0 +_08290E40: .4byte 0x080000C4 +_08290E44: + add sp, #4 + pop {r4, r5, r7} + pop {r1} + bx r1 + thumb_func_end sub_08290DA8 + + thumb_func_start sub_08290E4C +sub_08290E4C: @ 0x08290E4C + push {r4, r7, lr} + sub sp, #4 + mov r7, sp + adds r1, r0, #0 + adds r2, r7, #0 + strb r1, [r2] + adds r1, r7, #1 + movs r2, #0 + strb r2, [r1] +_08290E5E: + adds r1, r7, #1 + ldrb r2, [r1] + cmp r2, #7 + bls _08290E68 + b _08290EE4 +_08290E68: + adds r1, r7, #2 + adds r3, r7, #0 + ldrb r2, [r3] + adds r3, r7, #1 + ldrb r4, [r3] + asrs r2, r4 + adds r3, r2, #0 + movs r4, #1 + adds r2, r3, #0 + ands r2, r4 + adds r3, r2, #0 + strb r3, [r1] + ldr r1, _08290EE0 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290EE0 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290EE0 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #4 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + ldr r1, _08290EE0 + adds r2, r7, #2 + ldrb r3, [r2] + adds r2, r3, #0 + lsls r3, r2, #1 + adds r2, r3, #0 + movs r3, #5 + orrs r2, r3 + adds r3, r2, #0 + strh r3, [r1] + adds r2, r7, #1 + adds r1, r7, #1 + adds r2, r7, #1 + ldrb r3, [r2] + adds r2, r3, #1 + adds r3, r2, #0 + strb r3, [r1] + b _08290E5E + .align 2, 0 +_08290EE0: .4byte 0x080000C4 +_08290EE4: + add sp, #4 + pop {r4, r7} + pop {r1} + bx r1 + thumb_func_end sub_08290E4C + + thumb_func_start sub_08290EEC +sub_08290EEC: @ 0x08290EEC + push {r7, lr} + sub sp, #4 + mov r7, sp + adds r0, r7, #0 + movs r1, #0 + strb r1, [r0] +_08290EF8: + adds r0, r7, #0 + ldrb r1, [r0] + cmp r1, #7 + bls _08290F02 + b _08290F68 +_08290F02: + ldr r0, _08290F64 + movs r1, #4 + strh r1, [r0] + ldr r0, _08290F64 + movs r1, #4 + strh r1, [r0] + ldr r0, _08290F64 + movs r1, #4 + strh r1, [r0] + ldr r0, _08290F64 + movs r1, #4 + strh r1, [r0] + ldr r0, _08290F64 + movs r1, #4 + strh r1, [r0] + ldr r0, _08290F64 + movs r1, #5 + strh r1, [r0] + adds r0, r7, #1 + ldr r1, _08290F64 + ldrh r2, [r1] + movs r3, #2 + adds r1, r2, #0 + ands r1, r3 + adds r3, r1, #0 + lsls r2, r3, #0x10 + lsrs r1, r2, #0x10 + lsrs r2, r1, #1 + adds r1, r2, #0 + strb r1, [r0] + adds r0, r7, #2 + adds r1, r7, #2 + ldrb r2, [r1] + lsrs r1, r2, #1 + adds r2, r7, #1 + ldrb r3, [r2] + lsls r2, r3, #7 + orrs r1, r2 + adds r2, r1, #0 + strb r2, [r0] + adds r1, r7, #0 + adds r0, r7, #0 + adds r1, r7, #0 + ldrb r2, [r1] + adds r1, r2, #1 + adds r2, r1, #0 + strb r2, [r0] + b _08290EF8 + .align 2, 0 +_08290F64: .4byte 0x080000C4 +_08290F68: + adds r0, r7, #2 + ldrb r1, [r0] + adds r0, r1, #0 + b _08290F70 +_08290F70: + add sp, #4 + pop {r7} + pop {r1} + bx r1 + thumb_func_end sub_08290EEC + + thumb_func_start sub_08290F78 +sub_08290F78: @ 0x08290F78 + push {r7, lr} + mov r7, sp + ldr r0, _08290F88 + movs r1, #1 + strh r1, [r0] + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_08290F88: .4byte 0x080000C8 + thumb_func_end sub_08290F78 + + thumb_func_start sub_08290F8C +sub_08290F8C: @ 0x08290F8C + push {r7, lr} + mov r7, sp + ldr r0, _08290F9C + movs r1, #0 + strh r1, [r0] + pop {r7} + pop {r0} + bx r0 + .align 2, 0 +_08290F9C: .4byte 0x080000C8 + thumb_func_end sub_08290F8C diff --git a/asmdiff.sh b/asmdiff.sh new file mode 100644 index 0000000..2405d1f --- /dev/null +++ b/asmdiff.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +OBJDUMP="tools/binutils/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" +OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" +$OBJDUMP $OPTIONS baserom_jp.gba > baserom_jp.dump +$OBJDUMP $OPTIONS pokeemerald_jp.gba > pokeemerald_jp.dump +diff -u baserom_jp.dump pokeemerald_jp.dump | less diff --git a/build_tools.sh b/build_tools.sh new file mode 100755 index 0000000..b11a9a1 --- /dev/null +++ b/build_tools.sh @@ -0,0 +1,12 @@ +#!/bin/sh +make -C tools/gbagfx CXX=${1:-g++} +make -C tools/scaninc CXX=${1:-g++} +make -C tools/preproc CXX=${1:-g++} +make -C tools/bin2c CXX=${1:-g++} +make -C tools/rsfont CXX=${1:-g++} +make -C tools/aif2pcm CXX=${1:-g++} +make -C tools/ramscrgen CXX=${1:-g++} +make -C tools/gbafix CXX=${1:-g++} +make -C tools/mid2agb CXX=${1:-g++} +make -C tools/mapjson CXX=${1:-g++} +make -C tools/jsonproc CXX=${1:-g++} diff --git a/constants/berry_constants.inc b/constants/berry_constants.inc new file mode 100644 index 0000000..2ecd7ac --- /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 0000000..7c74c8e --- /dev/null +++ b/constants/constants.inc @@ -0,0 +1,6 @@ + .include "constants/gba_constants.inc" + .include "constants/global.inc" + .include "constants/contest_constants.inc" + .include "constants/pokemon_data_constants.inc" + .include "constants/berry_constants.inc" + .include "constants/contest_move_effects.inc" diff --git a/constants/contest_constants.inc b/constants/contest_constants.inc new file mode 100644 index 0000000..e971764 --- /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 0000000..b19e050 --- /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 0000000..9d59c8f --- /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/global.inc b/constants/global.inc new file mode 100644 index 0000000..621ba2a --- /dev/null +++ b/constants/global.inc @@ -0,0 +1,22 @@ + .set TRUE, 1 + .set FALSE, 0 + + .set NULL, 0 + + .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 diff --git a/constants/m4a_constants.inc b/constants/m4a_constants.inc new file mode 100644 index 0000000..62ca5bb --- /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/pokemon_data_constants.inc b/constants/pokemon_data_constants.inc new file mode 100644 index 0000000..646bd6d --- /dev/null +++ b/constants/pokemon_data_constants.inc @@ -0,0 +1,35 @@ + .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 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/data/data.s b/data/data.s new file mode 100644 index 0000000..5e6e367 --- /dev/null +++ b/data/data.s @@ -0,0 +1,17717 @@ + .section .rodata + .globl gUnknown_829BDA4 +gUnknown_829BDA4: @ 0x829BDA4 + .incbin "baserom_jp.gba", 0x29bda4, 0x1 + + .globl gUnknown_829BDA5 +gUnknown_829BDA5: @ 0x829BDA5 + .incbin "baserom_jp.gba", 0x29bda5, 0x17 + + .globl gUnknown_829BDBC +gUnknown_829BDBC: @ 0x829BDBC + .incbin "baserom_jp.gba", 0x29bdbc, 0x38 + + .globl gUnknown_829BDF4 +gUnknown_829BDF4: @ 0x829BDF4 + .incbin "baserom_jp.gba", 0x29bdf4, 0x14 + + .globl gUnknown_829BE08 +gUnknown_829BE08: @ 0x829BE08 + .incbin "baserom_jp.gba", 0x29be08, 0x4 + + .globl gUnknown_829BE0C +gUnknown_829BE0C: @ 0x829BE0C + .incbin "baserom_jp.gba", 0x29be0c, 0xc + + .globl gUnknown_829BE18 +gUnknown_829BE18: @ 0x829BE18 + .incbin "baserom_jp.gba", 0x29be18, 0x28 + + .globl gUnknown_829BE40 +gUnknown_829BE40: @ 0x829BE40 + .incbin "baserom_jp.gba", 0x29be40, 0x14 + + .globl gUnknown_829BE54 +gUnknown_829BE54: @ 0x829BE54 + .incbin "baserom_jp.gba", 0x29be54, 0x2c + + .globl gUnknown_829BE80 +gUnknown_829BE80: @ 0x829BE80 + .incbin "baserom_jp.gba", 0x29be80, 0x2c + + .globl gUnknown_829BEAC +gUnknown_829BEAC: @ 0x829BEAC + .incbin "baserom_jp.gba", 0x29beac, 0x4 + + .globl gUnknown_829BEB0 +gUnknown_829BEB0: @ 0x829BEB0 + .incbin "baserom_jp.gba", 0x29beb0, 0x8 + + .globl gUnknown_829BEB8 +gUnknown_829BEB8: @ 0x829BEB8 + .incbin "baserom_jp.gba", 0x29beb8, 0x100 + + .globl gUnknown_829BFB8 +gUnknown_829BFB8: @ 0x829BFB8 + .incbin "baserom_jp.gba", 0x29bfb8, 0xc0 + + .globl gUnknown_829C078 +gUnknown_829C078: @ 0x829C078 + .incbin "baserom_jp.gba", 0x29c078, 0x5c0 + + .globl gUnknown_829C638 +gUnknown_829C638: @ 0x829C638 + .incbin "baserom_jp.gba", 0x29c638, 0x4 + + .globl gUnknown_829C63C +gUnknown_829C63C: @ 0x829C63C + .incbin "baserom_jp.gba", 0x29c63c, 0x4 + + .globl gUnknown_829C640 +gUnknown_829C640: @ 0x829C640 + .incbin "baserom_jp.gba", 0x29c640, 0x30 + + .globl gUnknown_829C670 +gUnknown_829C670: @ 0x829C670 + .incbin "baserom_jp.gba", 0x29c670, 0x34 + + .globl gUnknown_829C6A4 +gUnknown_829C6A4: @ 0x829C6A4 + .incbin "baserom_jp.gba", 0x29c6a4, 0x800 + + .globl gUnknown_829CEA4 +gUnknown_829CEA4: @ 0x829CEA4 + .incbin "baserom_jp.gba", 0x29cea4, 0x60 + + .globl gUnknown_829CF04 +gUnknown_829CF04: @ 0x829CF04 + .incbin "baserom_jp.gba", 0x29cf04, 0x10 + + .globl gUnknown_829CF14 +gUnknown_829CF14: @ 0x829CF14 + .incbin "baserom_jp.gba", 0x29cf14, 0x4000 + + .globl gUnknown_82A0F14 +gUnknown_82A0F14: @ 0x82A0F14 + .incbin "baserom_jp.gba", 0x2a0f14, 0x4000 + + .globl gUnknown_82A4F14 +gUnknown_82A4F14: @ 0x82A4F14 + .incbin "baserom_jp.gba", 0x2a4f14, 0x8000 + + .globl gUnknown_82ACF14 +gUnknown_82ACF14: @ 0x82ACF14 + .incbin "baserom_jp.gba", 0x2acf14, 0x118 + + .globl gUnknown_82AD02C +gUnknown_82AD02C: @ 0x82AD02C + .incbin "baserom_jp.gba", 0x2ad02c, 0x8000 + + .globl gUnknown_82B502C +gUnknown_82B502C: @ 0x82B502C + .incbin "baserom_jp.gba", 0x2b502c, 0x118 + + .globl gUnknown_82B5144 +gUnknown_82B5144: @ 0x82B5144 + .incbin "baserom_jp.gba", 0x2b5144, 0x8000 + + .globl gUnknown_82BD144 +gUnknown_82BD144: @ 0x82BD144 + .incbin "baserom_jp.gba", 0x2bd144, 0x118 + + .globl gUnknown_82BD25C +gUnknown_82BD25C: @ 0x82BD25C + .incbin "baserom_jp.gba", 0x2bd25c, 0x203d + + .globl gUnknown_82BF299 +gUnknown_82BF299: @ 0x82BF299 + .incbin "baserom_jp.gba", 0x2bf299, 0x1b + + .globl gUnknown_82BF2B4 +gUnknown_82BF2B4: @ 0x82BF2B4 + .incbin "baserom_jp.gba", 0x2bf2b4, 0x44 + + .globl gUnknown_82BF2F8 +gUnknown_82BF2F8: @ 0x82BF2F8 + .incbin "baserom_jp.gba", 0x2bf2f8, 0xc + + .globl gUnknown_82BF304 +gUnknown_82BF304: @ 0x82BF304 + .incbin "baserom_jp.gba", 0x2bf304, 0xc + + .globl gUnknown_82BF310 +gUnknown_82BF310: @ 0x82BF310 + .incbin "baserom_jp.gba", 0x2bf310, 0x4 + + .globl gUnknown_82BF314 +gUnknown_82BF314: @ 0x82BF314 + .incbin "baserom_jp.gba", 0x2bf314, 0x18 + + .globl gUnknown_82BF32C +gUnknown_82BF32C: @ 0x82BF32C + .incbin "baserom_jp.gba", 0x2bf32c, 0x8 + + .globl gUnknown_82BF334 +gUnknown_82BF334: @ 0x82BF334 + .incbin "baserom_jp.gba", 0x2bf334, 0x8 + + .globl gUnknown_82BF33C +gUnknown_82BF33C: @ 0x82BF33C + .incbin "baserom_jp.gba", 0x2bf33c, 0x10 + + .globl gUnknown_82BF34C +gUnknown_82BF34C: @ 0x82BF34C + .incbin "baserom_jp.gba", 0x2bf34c, 0x10 + + .globl gUnknown_82BF35C +gUnknown_82BF35C: @ 0x82BF35C + .incbin "baserom_jp.gba", 0x2bf35c, 0x60 + + .globl gUnknown_82BF3BC +gUnknown_82BF3BC: @ 0x82BF3BC + .incbin "baserom_jp.gba", 0x2bf3bc, 0x70 + + .globl gUnknown_82BF42C +gUnknown_82BF42C: @ 0x82BF42C + .incbin "baserom_jp.gba", 0x2bf42c, 0x8 + + .globl gUnknown_82BF434 +gUnknown_82BF434: @ 0x82BF434 + .incbin "baserom_jp.gba", 0x2bf434, 0x8 + + .globl gUnknown_82BF43C +gUnknown_82BF43C: @ 0x82BF43C + .incbin "baserom_jp.gba", 0x2bf43c, 0x10 + + .globl gUnknown_82BF44C +gUnknown_82BF44C: @ 0x82BF44C + .incbin "baserom_jp.gba", 0x2bf44c, 0x28 + + .globl gUnknown_82BF474 +gUnknown_82BF474: @ 0x82BF474 + .incbin "baserom_jp.gba", 0x2bf474, 0x4 + + .globl gUnknown_82BF478 +gUnknown_82BF478: @ 0x82BF478 + .incbin "baserom_jp.gba", 0x2bf478, 0x8 + + .globl gUnknown_82BF480 +gUnknown_82BF480: @ 0x82BF480 + .incbin "baserom_jp.gba", 0x2bf480, 0x38 + + .globl gUnknown_82BF4B8 +gUnknown_82BF4B8: @ 0x82BF4B8 + .incbin "baserom_jp.gba", 0x2bf4b8, 0x20 + + .globl gUnknown_82BF4D8 +gUnknown_82BF4D8: @ 0x82BF4D8 + .incbin "baserom_jp.gba", 0x2bf4d8, 0x4a8 + + .globl gUnknown_82BF980 +gUnknown_82BF980: @ 0x82BF980 + .incbin "baserom_jp.gba", 0x2bf980, 0x1ec + + .globl gUnknown_82BFB6C +gUnknown_82BFB6C: @ 0x82BFB6C + .incbin "baserom_jp.gba", 0x2bfb6c, 0x20 + + .globl gUnknown_82BFB8C +gUnknown_82BFB8C: @ 0x82BFB8C + .incbin "baserom_jp.gba", 0x2bfb8c, 0x274 + + .globl gUnknown_82BFE00 +gUnknown_82BFE00: @ 0x82BFE00 + .incbin "baserom_jp.gba", 0x2bfe00, 0x50 + + .globl gUnknown_82BFE50 +gUnknown_82BFE50: @ 0x82BFE50 + .incbin "baserom_jp.gba", 0x2bfe50, 0x12 + + .globl gUnknown_82BFE62 +gUnknown_82BFE62: @ 0x82BFE62 + .incbin "baserom_jp.gba", 0x2bfe62, 0x2b + + .globl gUnknown_82BFE8D +gUnknown_82BFE8D: @ 0x82BFE8D + .incbin "baserom_jp.gba", 0x2bfe8d, 0x12 + + .globl gUnknown_82BFE9F +gUnknown_82BFE9F: @ 0x82BFE9F + .incbin "baserom_jp.gba", 0x2bfe9f, 0x19 + + .globl gUnknown_82BFEB8 +gUnknown_82BFEB8: @ 0x82BFEB8 + .incbin "baserom_jp.gba", 0x2bfeb8, 0x40 + + .globl gUnknown_82BFEF8 +gUnknown_82BFEF8: @ 0x82BFEF8 + .incbin "baserom_jp.gba", 0x2bfef8, 0x28 + + .globl gUnknown_82BFF20 +gUnknown_82BFF20: @ 0x82BFF20 + .incbin "baserom_jp.gba", 0x2bff20, 0x4 + + .globl gUnknown_82BFF24 +gUnknown_82BFF24: @ 0x82BFF24 + .incbin "baserom_jp.gba", 0x2bff24, 0x10 + + .globl gUnknown_82BFF34 +gUnknown_82BFF34: @ 0x82BFF34 + .incbin "baserom_jp.gba", 0x2bff34, 0x18 + + .globl gUnknown_82BFF4C +gUnknown_82BFF4C: @ 0x82BFF4C + .incbin "baserom_jp.gba", 0x2bff4c, 0x8 + + .globl gUnknown_82BFF54 +gUnknown_82BFF54: @ 0x82BFF54 + .incbin "baserom_jp.gba", 0x2bff54, 0x20 + + .globl gUnknown_82BFF74 +gUnknown_82BFF74: @ 0x82BFF74 + .incbin "baserom_jp.gba", 0x2bff74, 0x14c + + .globl gUnknown_82C00C0 +gUnknown_82C00C0: @ 0x82C00C0 + .incbin "baserom_jp.gba", 0x2c00c0, 0x100 + + .globl gUnknown_82C01C0 +gUnknown_82C01C0: @ 0x82C01C0 + .incbin "baserom_jp.gba", 0x2c01c0, 0x100 + + .globl gUnknown_82C02C0 +gUnknown_82C02C0: @ 0x82C02C0 + .incbin "baserom_jp.gba", 0x2c02c0, 0x70 + + .globl gUnknown_82C0330 +gUnknown_82C0330: @ 0x82C0330 + .incbin "baserom_jp.gba", 0x2c0330, 0x8 + + .globl gUnknown_82C0338 +gUnknown_82C0338: @ 0x82C0338 + .incbin "baserom_jp.gba", 0x2c0338, 0x8 + + .globl gUnknown_82C0340 +gUnknown_82C0340: @ 0x82C0340 + .incbin "baserom_jp.gba", 0x2c0340, 0x18 + + .globl gUnknown_82C0358 +gUnknown_82C0358: @ 0x82C0358 + .incbin "baserom_jp.gba", 0x2c0358, 0x18 + + .globl gUnknown_82C0370 +gUnknown_82C0370: @ 0x82C0370 + .incbin "baserom_jp.gba", 0x2c0370, 0x8 + + .globl gUnknown_82C0378 +gUnknown_82C0378: @ 0x82C0378 + .incbin "baserom_jp.gba", 0x2c0378, 0x64 + + .globl gUnknown_82C03DC +gUnknown_82C03DC: @ 0x82C03DC + .incbin "baserom_jp.gba", 0x2c03dc, 0x9 + + .globl gUnknown_82C03E5 +gUnknown_82C03E5: @ 0x82C03E5 + .incbin "baserom_jp.gba", 0x2c03e5, 0x10 + + .globl gUnknown_82C03F5 +gUnknown_82C03F5: @ 0x82C03F5 + .incbin "baserom_jp.gba", 0x2c03f5, 0x13 + + .globl gUnknown_82C0408 +gUnknown_82C0408: @ 0x82C0408 + .incbin "baserom_jp.gba", 0x2c0408, 0x28 + + .globl gUnknown_82C0430 +gUnknown_82C0430: @ 0x82C0430 + .incbin "baserom_jp.gba", 0x2c0430, 0x100 + + .globl gUnknown_82C0530 +gUnknown_82C0530: @ 0x82C0530 + .incbin "baserom_jp.gba", 0x2c0530, 0xc + + .globl gUnknown_82C053C +gUnknown_82C053C: @ 0x82C053C + .incbin "baserom_jp.gba", 0x2c053c, 0x8 + + .globl gUnknown_82C0544 +gUnknown_82C0544: @ 0x82C0544 + .incbin "baserom_jp.gba", 0x2c0544, 0x14 + + .globl gUnknown_82C0558 +gUnknown_82C0558: @ 0x82C0558 + .incbin "baserom_jp.gba", 0x2c0558, 0xc + + .globl gUnknown_82C0564 +gUnknown_82C0564: @ 0x82C0564 + .incbin "baserom_jp.gba", 0x2c0564, 0x14 + + .globl gUnknown_82C0578 +gUnknown_82C0578: @ 0x82C0578 + .incbin "baserom_jp.gba", 0x2c0578, 0x18 + + .globl gUnknown_82C0590 +gUnknown_82C0590: @ 0x82C0590 + .incbin "baserom_jp.gba", 0x2c0590, 0x18 + + .globl gUnknown_82C05A8 +gUnknown_82C05A8: @ 0x82C05A8 + .incbin "baserom_jp.gba", 0x2c05a8, 0x1f + + .globl gUnknown_82C05C7 +gUnknown_82C05C7: @ 0x82C05C7 + .incbin "baserom_jp.gba", 0x2c05c7, 0x10 + + .globl gUnknown_82C05D7 +gUnknown_82C05D7: @ 0x82C05D7 + .incbin "baserom_jp.gba", 0x2c05d7, 0xd + + .globl gUnknown_82C05E4 +gUnknown_82C05E4: @ 0x82C05E4 + .incbin "baserom_jp.gba", 0x2c05e4, 0x60 + + .globl gUnknown_82C0644 +gUnknown_82C0644: @ 0x82C0644 + .incbin "baserom_jp.gba", 0x2c0644, 0x4 + + .globl gUnknown_82C0648 +gUnknown_82C0648: @ 0x82C0648 + .incbin "baserom_jp.gba", 0x2c0648, 0x4 + + .globl gUnknown_82C064C +gUnknown_82C064C: @ 0x82C064C + .incbin "baserom_jp.gba", 0x2c064c, 0x20 + + .globl gUnknown_82C066C +gUnknown_82C066C: @ 0x82C066C + .incbin "baserom_jp.gba", 0x2c066c, 0x30 + + .globl gUnknown_82C069C +gUnknown_82C069C: @ 0x82C069C + .incbin "baserom_jp.gba", 0x2c069c, 0x1c + + .globl gUnknown_82C06B8 +gUnknown_82C06B8: @ 0x82C06B8 + .incbin "baserom_jp.gba", 0x2c06b8, 0x188 + + .globl gUnknown_82C0840 +gUnknown_82C0840: @ 0x82C0840 + .incbin "baserom_jp.gba", 0x2c0840, 0x64 + + .globl gUnknown_82C08A4 +gUnknown_82C08A4: @ 0x82C08A4 + .incbin "baserom_jp.gba", 0x2c08a4, 0x20 + + .globl gUnknown_82C08C4 +gUnknown_82C08C4: @ 0x82C08C4 + .incbin "baserom_jp.gba", 0x2c08c4, 0x18 + + .globl gUnknown_82C08DC +gUnknown_82C08DC: @ 0x82C08DC + .incbin "baserom_jp.gba", 0x2c08dc, 0x1c + + .globl gUnknown_82C08F8 +gUnknown_82C08F8: @ 0x82C08F8 + .incbin "baserom_jp.gba", 0x2c08f8, 0x1c + + .globl gUnknown_82C0914 +gUnknown_82C0914: @ 0x82C0914 + .incbin "baserom_jp.gba", 0x2c0914, 0x18 + + .globl gUnknown_82C092C +gUnknown_82C092C: @ 0x82C092C + .incbin "baserom_jp.gba", 0x2c092c, 0x1c + + .globl gUnknown_82C0948 +gUnknown_82C0948: @ 0x82C0948 + .incbin "baserom_jp.gba", 0x2c0948, 0x58 + + .globl gUnknown_82C09A0 +gUnknown_82C09A0: @ 0x82C09A0 + .incbin "baserom_jp.gba", 0x2c09a0, 0x8 + + .globl gUnknown_82C09A8 +gUnknown_82C09A8: @ 0x82C09A8 + .incbin "baserom_jp.gba", 0x2c09a8, 0x38 + + .globl gUnknown_82C09E0 +gUnknown_82C09E0: @ 0x82C09E0 + .incbin "baserom_jp.gba", 0x2c09e0, 0x18 + + .globl gUnknown_82C09F8 +gUnknown_82C09F8: @ 0x82C09F8 + .incbin "baserom_jp.gba", 0x2c09f8, 0x18 + + .globl gUnknown_82C0A10 +gUnknown_82C0A10: @ 0x82C0A10 + .incbin "baserom_jp.gba", 0x2c0a10, 0x3c + + .globl gUnknown_82C0A4C +gUnknown_82C0A4C: @ 0x82C0A4C + .incbin "baserom_jp.gba", 0x2c0a4c, 0x18 + + .globl gUnknown_82C0A64 +gUnknown_82C0A64: @ 0x82C0A64 + .incbin "baserom_jp.gba", 0x2c0a64, 0x20 + + .globl gUnknown_82C0A84 +gUnknown_82C0A84: @ 0x82C0A84 + .incbin "baserom_jp.gba", 0x2c0a84, 0x28 + + .globl gUnknown_82C0AAC +gUnknown_82C0AAC: @ 0x82C0AAC + .incbin "baserom_jp.gba", 0x2c0aac, 0x1c + + .globl gUnknown_82C0AC8 +gUnknown_82C0AC8: @ 0x82C0AC8 + .incbin "baserom_jp.gba", 0x2c0ac8, 0x1c + + .globl gUnknown_82C0AE4 +gUnknown_82C0AE4: @ 0x82C0AE4 + .incbin "baserom_jp.gba", 0x2c0ae4, 0x38 + + .globl gUnknown_82C0B1C +gUnknown_82C0B1C: @ 0x82C0B1C + .incbin "baserom_jp.gba", 0x2c0b1c, 0x64 + + .globl gUnknown_82C0B80 +gUnknown_82C0B80: @ 0x82C0B80 + .incbin "baserom_jp.gba", 0x2c0b80, 0x158 + + .globl gUnknown_82C0CD8 +gUnknown_82C0CD8: @ 0x82C0CD8 + .incbin "baserom_jp.gba", 0x2c0cd8, 0x64 + + .globl gUnknown_82C0D3C +gUnknown_82C0D3C: @ 0x82C0D3C + .incbin "baserom_jp.gba", 0x2c0d3c, 0x7c + + .globl gUnknown_82C0DB8 +gUnknown_82C0DB8: @ 0x82C0DB8 + .incbin "baserom_jp.gba", 0x2c0db8, 0x2c + + .globl gUnknown_82C0DE4 +gUnknown_82C0DE4: @ 0x82C0DE4 + .incbin "baserom_jp.gba", 0x2c0de4, 0x8 + + .globl gUnknown_82C0DEC +gUnknown_82C0DEC: @ 0x82C0DEC + .incbin "baserom_jp.gba", 0x2c0dec, 0x30 + + .globl gUnknown_82C0E1C +gUnknown_82C0E1C: @ 0x82C0E1C + .incbin "baserom_jp.gba", 0x2c0e1c, 0x24 + + .globl gUnknown_82C0E40 +gUnknown_82C0E40: @ 0x82C0E40 + .incbin "baserom_jp.gba", 0x2c0e40, 0x28 + + .globl gUnknown_82C0E68 +gUnknown_82C0E68: @ 0x82C0E68 + .incbin "baserom_jp.gba", 0x2c0e68, 0x40 + + .globl gUnknown_82C0EA8 +gUnknown_82C0EA8: @ 0x82C0EA8 + .incbin "baserom_jp.gba", 0x2c0ea8, 0x2c + + .globl gUnknown_82C0ED4 +gUnknown_82C0ED4: @ 0x82C0ED4 + .incbin "baserom_jp.gba", 0x2c0ed4, 0xc + + .globl gUnknown_82C0EE0 +gUnknown_82C0EE0: @ 0x82C0EE0 + .incbin "baserom_jp.gba", 0x2c0ee0, 0x14 + + .globl gUnknown_82C0EF4 +gUnknown_82C0EF4: @ 0x82C0EF4 + .incbin "baserom_jp.gba", 0x2c0ef4, 0x10 + + .globl gUnknown_82C0F04 +gUnknown_82C0F04: @ 0x82C0F04 + .incbin "baserom_jp.gba", 0x2c0f04, 0xcc + + .globl gUnknown_82C0FD0 +gUnknown_82C0FD0: @ 0x82C0FD0 + .incbin "baserom_jp.gba", 0x2c0fd0, 0x10 + + .globl gUnknown_82C0FE0 +gUnknown_82C0FE0: @ 0x82C0FE0 + .incbin "baserom_jp.gba", 0x2c0fe0, 0xc4 + + .globl gUnknown_82C10A4 +gUnknown_82C10A4: @ 0x82C10A4 + .incbin "baserom_jp.gba", 0x2c10a4, 0xe4 + + .globl gUnknown_82C1188 +gUnknown_82C1188: @ 0x82C1188 + .incbin "baserom_jp.gba", 0x2c1188, 0x9c + + .globl gUnknown_82C1224 +gUnknown_82C1224: @ 0x82C1224 + .incbin "baserom_jp.gba", 0x2c1224, 0x58 + + .globl gUnknown_82C127C +gUnknown_82C127C: @ 0x82C127C + .incbin "baserom_jp.gba", 0x2c127c, 0x40 + + .globl gUnknown_82C12BC +gUnknown_82C12BC: @ 0x82C12BC + .incbin "baserom_jp.gba", 0x2c12bc, 0x8 + + .globl gUnknown_82C12C4 +gUnknown_82C12C4: @ 0x82C12C4 + .incbin "baserom_jp.gba", 0x2c12c4, 0x20 + + .globl gUnknown_82C12E4 +gUnknown_82C12E4: @ 0x82C12E4 + .incbin "baserom_jp.gba", 0x2c12e4, 0x2c + + .globl gUnknown_82C1310 +gUnknown_82C1310: @ 0x82C1310 + .incbin "baserom_jp.gba", 0x2c1310, 0x54 + + .globl gUnknown_82C1364 +gUnknown_82C1364: @ 0x82C1364 + .incbin "baserom_jp.gba", 0x2c1364, 0x60 + + .globl gUnknown_82C13C4 +gUnknown_82C13C4: @ 0x82C13C4 + .incbin "baserom_jp.gba", 0x2c13c4, 0xd4 + + .globl gUnknown_82C1498 +gUnknown_82C1498: @ 0x82C1498 + .incbin "baserom_jp.gba", 0x2c1498, 0xcc + + .globl gUnknown_82C1564 +gUnknown_82C1564: @ 0x82C1564 + .incbin "baserom_jp.gba", 0x2c1564, 0x84 + + .globl gUnknown_82C15E8 +gUnknown_82C15E8: @ 0x82C15E8 + .incbin "baserom_jp.gba", 0x2c15e8, 0x80 + + .globl gUnknown_82C1668 +gUnknown_82C1668: @ 0x82C1668 + .incbin "baserom_jp.gba", 0x2c1668, 0x20 + + .globl gUnknown_82C1688 +gUnknown_82C1688: @ 0x82C1688 + .incbin "baserom_jp.gba", 0x2c1688, 0x14 + + .globl gUnknown_82C169C +gUnknown_82C169C: @ 0x82C169C + .incbin "baserom_jp.gba", 0x2c169c, 0x44 + + .globl gUnknown_82C16E0 +gUnknown_82C16E0: @ 0x82C16E0 + .incbin "baserom_jp.gba", 0x2c16e0, 0xec + + .globl gUnknown_82C17CC +gUnknown_82C17CC: @ 0x82C17CC + .incbin "baserom_jp.gba", 0x2c17cc, 0x1c + + .globl gUnknown_82C17E8 +gUnknown_82C17E8: @ 0x82C17E8 + .incbin "baserom_jp.gba", 0x2c17e8, 0x20 + + .globl gUnknown_82C1808 +gUnknown_82C1808: @ 0x82C1808 + .incbin "baserom_jp.gba", 0x2c1808, 0x14 + + .globl gUnknown_82C181C +gUnknown_82C181C: @ 0x82C181C + .incbin "baserom_jp.gba", 0x2c181c, 0x14 + + .globl gUnknown_82C1830 +gUnknown_82C1830: @ 0x82C1830 + .incbin "baserom_jp.gba", 0x2c1830, 0x14 + + .globl gUnknown_82C1844 +gUnknown_82C1844: @ 0x82C1844 + .incbin "baserom_jp.gba", 0x2c1844, 0x20 + + .globl gUnknown_82C1864 +gUnknown_82C1864: @ 0x82C1864 + .incbin "baserom_jp.gba", 0x2c1864, 0x1c + + .globl gUnknown_82C1880 +gUnknown_82C1880: @ 0x82C1880 + .incbin "baserom_jp.gba", 0x2c1880, 0x4c + + .globl gUnknown_82C18CC +gUnknown_82C18CC: @ 0x82C18CC + .incbin "baserom_jp.gba", 0x2c18cc, 0x4c + + .globl gUnknown_82C1918 +gUnknown_82C1918: @ 0x82C1918 + .incbin "baserom_jp.gba", 0x2c1918, 0x20 + + .globl gUnknown_82C1938 +gUnknown_82C1938: @ 0x82C1938 + .incbin "baserom_jp.gba", 0x2c1938, 0x60 + + .globl gUnknown_82C1998 +gUnknown_82C1998: @ 0x82C1998 + .incbin "baserom_jp.gba", 0x2c1998, 0x14 + + .globl gUnknown_82C19AC +gUnknown_82C19AC: @ 0x82C19AC + .incbin "baserom_jp.gba", 0x2c19ac, 0xc + + .globl gUnknown_82C19B8 +gUnknown_82C19B8: @ 0x82C19B8 + .incbin "baserom_jp.gba", 0x2c19b8, 0x14 + + .globl gUnknown_82C19CC +gUnknown_82C19CC: @ 0x82C19CC + .incbin "baserom_jp.gba", 0x2c19cc, 0x218 + + .globl gUnknown_82C1BE4 +gUnknown_82C1BE4: @ 0x82C1BE4 + .incbin "baserom_jp.gba", 0x2c1be4, 0x58 + + .globl gUnknown_82C1C3C +gUnknown_82C1C3C: @ 0x82C1C3C + .incbin "baserom_jp.gba", 0x2c1c3c, 0x44 + + .globl gUnknown_82C1C80 +gUnknown_82C1C80: @ 0x82C1C80 + .incbin "baserom_jp.gba", 0x2c1c80, 0x14 + + .globl gUnknown_82C1C94 +gUnknown_82C1C94: @ 0x82C1C94 + .incbin "baserom_jp.gba", 0x2c1c94, 0x24 + + .globl gUnknown_82C1CB8 +gUnknown_82C1CB8: @ 0x82C1CB8 + .incbin "baserom_jp.gba", 0x2c1cb8, 0x78 + + .globl gUnknown_82C1D30 +gUnknown_82C1D30: @ 0x82C1D30 + .incbin "baserom_jp.gba", 0x2c1d30, 0x30 + + .globl gUnknown_82C1D60 +gUnknown_82C1D60: @ 0x82C1D60 + .incbin "baserom_jp.gba", 0x2c1d60, 0xf8 + + .globl gUnknown_82C1E58 +gUnknown_82C1E58: @ 0x82C1E58 + .incbin "baserom_jp.gba", 0x2c1e58, 0xb0 + + .globl gUnknown_82C1F08 +gUnknown_82C1F08: @ 0x82C1F08 + .incbin "baserom_jp.gba", 0x2c1f08, 0x14 + + .globl gUnknown_82C1F1C +gUnknown_82C1F1C: @ 0x82C1F1C + .incbin "baserom_jp.gba", 0x2c1f1c, 0x38 + + .globl gUnknown_82C1F54 +gUnknown_82C1F54: @ 0x82C1F54 + .incbin "baserom_jp.gba", 0x2c1f54, 0x50 + + .globl gUnknown_82C1FA4 +gUnknown_82C1FA4: @ 0x82C1FA4 + .incbin "baserom_jp.gba", 0x2c1fa4, 0x8 + + .globl gUnknown_82C1FAC +gUnknown_82C1FAC: @ 0x82C1FAC + .incbin "baserom_jp.gba", 0x2c1fac, 0x18 + + .globl gUnknown_82C1FC4 +gUnknown_82C1FC4: @ 0x82C1FC4 + .incbin "baserom_jp.gba", 0x2c1fc4, 0x8 + + .globl gUnknown_82C1FCC +gUnknown_82C1FCC: @ 0x82C1FCC + .incbin "baserom_jp.gba", 0x2c1fcc, 0x58 + + .globl gUnknown_82C2024 +gUnknown_82C2024: @ 0x82C2024 + .incbin "baserom_jp.gba", 0x2c2024, 0x8 + + .globl gUnknown_82C202C +gUnknown_82C202C: @ 0x82C202C + .incbin "baserom_jp.gba", 0x2c202c, 0x8 + + .globl gUnknown_82C2034 +gUnknown_82C2034: @ 0x82C2034 + .incbin "baserom_jp.gba", 0x2c2034, 0x30 + + .globl gUnknown_82C2064 +gUnknown_82C2064: @ 0x82C2064 + .incbin "baserom_jp.gba", 0x2c2064, 0x18 + + .globl gUnknown_82C207C +gUnknown_82C207C: @ 0x82C207C + .incbin "baserom_jp.gba", 0x2c207c, 0x8 + + .globl gUnknown_82C2084 +gUnknown_82C2084: @ 0x82C2084 + .incbin "baserom_jp.gba", 0x2c2084, 0x88 + + .globl gUnknown_82C210C +gUnknown_82C210C: @ 0x82C210C + .incbin "baserom_jp.gba", 0x2c210c, 0x18 + + .globl gUnknown_82C2124 +gUnknown_82C2124: @ 0x82C2124 + .incbin "baserom_jp.gba", 0x2c2124, 0x28 + + .globl gUnknown_82C214C +gUnknown_82C214C: @ 0x82C214C + .incbin "baserom_jp.gba", 0x2c214c, 0x18 + + .globl gUnknown_82C2164 +gUnknown_82C2164: @ 0x82C2164 + .incbin "baserom_jp.gba", 0x2c2164, 0x20 + + .globl gUnknown_82C2184 +gUnknown_82C2184: @ 0x82C2184 + .incbin "baserom_jp.gba", 0x2c2184, 0x18 + + .globl gUnknown_82C219C +gUnknown_82C219C: @ 0x82C219C + .incbin "baserom_jp.gba", 0x2c219c, 0x98 + + .globl gUnknown_82C2234 +gUnknown_82C2234: @ 0x82C2234 + .incbin "baserom_jp.gba", 0x2c2234, 0x18 + + .globl gUnknown_82C224C +gUnknown_82C224C: @ 0x82C224C + .incbin "baserom_jp.gba", 0x2c224c, 0x8 + + .globl gUnknown_82C2254 +gUnknown_82C2254: @ 0x82C2254 + .incbin "baserom_jp.gba", 0x2c2254, 0x58 + + .globl gUnknown_82C22AC +gUnknown_82C22AC: @ 0x82C22AC + .incbin "baserom_jp.gba", 0x2c22ac, 0xb8 + + .globl gUnknown_82C2364 +gUnknown_82C2364: @ 0x82C2364 + .incbin "baserom_jp.gba", 0x2c2364, 0x7c + + .globl gUnknown_82C23E0 +gUnknown_82C23E0: @ 0x82C23E0 + .incbin "baserom_jp.gba", 0x2c23e0, 0x58 + + .globl gUnknown_82C2438 +gUnknown_82C2438: @ 0x82C2438 + .incbin "baserom_jp.gba", 0x2c2438, 0x1c + + .globl gUnknown_82C2454 +gUnknown_82C2454: @ 0x82C2454 + .incbin "baserom_jp.gba", 0x2c2454, 0x20 + + .globl gUnknown_82C2474 +gUnknown_82C2474: @ 0x82C2474 + .incbin "baserom_jp.gba", 0x2c2474, 0x30 + + .globl gUnknown_82C24A4 +gUnknown_82C24A4: @ 0x82C24A4 + .incbin "baserom_jp.gba", 0x2c24a4, 0x10 + + .globl gUnknown_82C24B4 +gUnknown_82C24B4: @ 0x82C24B4 + .incbin "baserom_jp.gba", 0x2c24b4, 0x20 + + .globl gUnknown_82C24D4 +gUnknown_82C24D4: @ 0x82C24D4 + .incbin "baserom_jp.gba", 0x2c24d4, 0x8 + + .globl gUnknown_82C24DC +gUnknown_82C24DC: @ 0x82C24DC + .incbin "baserom_jp.gba", 0x2c24dc, 0x8 + + .globl gUnknown_82C24E4 +gUnknown_82C24E4: @ 0x82C24E4 + .incbin "baserom_jp.gba", 0x2c24e4, 0x8 + + .globl gUnknown_82C24EC +gUnknown_82C24EC: @ 0x82C24EC + .incbin "baserom_jp.gba", 0x2c24ec, 0x8 + + .globl gUnknown_82C24F4 +gUnknown_82C24F4: @ 0x82C24F4 + .incbin "baserom_jp.gba", 0x2c24f4, 0x8 + + .globl gUnknown_82C24FC +gUnknown_82C24FC: @ 0x82C24FC + .incbin "baserom_jp.gba", 0x2c24fc, 0x8 + + .globl gUnknown_82C2504 +gUnknown_82C2504: @ 0x82C2504 + .incbin "baserom_jp.gba", 0x2c2504, 0x8 + + .globl gUnknown_82C250C +gUnknown_82C250C: @ 0x82C250C + .incbin "baserom_jp.gba", 0x2c250c, 0x30 + + .globl gUnknown_82C253C +gUnknown_82C253C: @ 0x82C253C + .incbin "baserom_jp.gba", 0x2c253c, 0x18 + + .globl gUnknown_82C2554 +gUnknown_82C2554: @ 0x82C2554 + .incbin "baserom_jp.gba", 0x2c2554, 0x18 + + .globl gUnknown_82C256C +gUnknown_82C256C: @ 0x82C256C + .incbin "baserom_jp.gba", 0x2c256c, 0x88 + + .globl gUnknown_82C25F4 +gUnknown_82C25F4: @ 0x82C25F4 + .incbin "baserom_jp.gba", 0x2c25f4, 0x18 + + .globl gUnknown_82C260C +gUnknown_82C260C: @ 0x82C260C + .incbin "baserom_jp.gba", 0x2c260c, 0x18 + + .globl gUnknown_82C2624 +gUnknown_82C2624: @ 0x82C2624 + .incbin "baserom_jp.gba", 0x2c2624, 0x18 + + .globl gUnknown_82C263C +gUnknown_82C263C: @ 0x82C263C + .incbin "baserom_jp.gba", 0x2c263c, 0x88 + + .globl gUnknown_82C26C4 +gUnknown_82C26C4: @ 0x82C26C4 + .incbin "baserom_jp.gba", 0x2c26c4, 0x24 + + .globl gUnknown_82C26E8 +gUnknown_82C26E8: @ 0x82C26E8 + .incbin "baserom_jp.gba", 0x2c26e8, 0x28 + + .globl gUnknown_82C2710 +gUnknown_82C2710: @ 0x82C2710 + .incbin "baserom_jp.gba", 0x2c2710, 0x1c + + .globl gUnknown_82C272C +gUnknown_82C272C: @ 0x82C272C + .incbin "baserom_jp.gba", 0x2c272c, 0x40 + + .globl gUnknown_82C276C +gUnknown_82C276C: @ 0x82C276C + .incbin "baserom_jp.gba", 0x2c276c, 0x10 + + .globl gUnknown_82C277C +gUnknown_82C277C: @ 0x82C277C + .incbin "baserom_jp.gba", 0x2c277c, 0x14 + + .globl gUnknown_82C2790 +gUnknown_82C2790: @ 0x82C2790 + .incbin "baserom_jp.gba", 0x2c2790, 0x10 + + .globl gUnknown_82C27A0 +gUnknown_82C27A0: @ 0x82C27A0 + .incbin "baserom_jp.gba", 0x2c27a0, 0x14 + + .globl gUnknown_82C27B4 +gUnknown_82C27B4: @ 0x82C27B4 + .incbin "baserom_jp.gba", 0x2c27b4, 0x28 + + .globl gUnknown_82C27DC +gUnknown_82C27DC: @ 0x82C27DC + .incbin "baserom_jp.gba", 0x2c27dc, 0x28 + + .globl gUnknown_82C2804 +gUnknown_82C2804: @ 0x82C2804 + .incbin "baserom_jp.gba", 0x2c2804, 0x1c + + .globl gUnknown_82C2820 +gUnknown_82C2820: @ 0x82C2820 + .incbin "baserom_jp.gba", 0x2c2820, 0x18 + + .globl gUnknown_82C2838 +gUnknown_82C2838: @ 0x82C2838 + .incbin "baserom_jp.gba", 0x2c2838, 0x1c + + .globl gUnknown_82C2854 +gUnknown_82C2854: @ 0x82C2854 + .incbin "baserom_jp.gba", 0x2c2854, 0x18 + + .globl gUnknown_82C286C +gUnknown_82C286C: @ 0x82C286C + .incbin "baserom_jp.gba", 0x2c286c, 0x18 + + .globl gUnknown_82C2884 +gUnknown_82C2884: @ 0x82C2884 + .incbin "baserom_jp.gba", 0x2c2884, 0x1c + + .globl gUnknown_82C28A0 +gUnknown_82C28A0: @ 0x82C28A0 + .incbin "baserom_jp.gba", 0x2c28a0, 0x18 + + .globl gUnknown_82C28B8 +gUnknown_82C28B8: @ 0x82C28B8 + .incbin "baserom_jp.gba", 0x2c28b8, 0x18 + + .globl gUnknown_82C28D0 +gUnknown_82C28D0: @ 0x82C28D0 + .incbin "baserom_jp.gba", 0x2c28d0, 0x18 + + .globl gUnknown_82C28E8 +gUnknown_82C28E8: @ 0x82C28E8 + .incbin "baserom_jp.gba", 0x2c28e8, 0x1c + + .globl gUnknown_82C2904 +gUnknown_82C2904: @ 0x82C2904 + .incbin "baserom_jp.gba", 0x2c2904, 0x20 + + .globl gUnknown_82C2924 +gUnknown_82C2924: @ 0x82C2924 + .incbin "baserom_jp.gba", 0x2c2924, 0x20 + + .globl gUnknown_82C2944 +gUnknown_82C2944: @ 0x82C2944 + .incbin "baserom_jp.gba", 0x2c2944, 0x1c + + .globl gUnknown_82C2960 +gUnknown_82C2960: @ 0x82C2960 + .incbin "baserom_jp.gba", 0x2c2960, 0x14 + + .globl gUnknown_82C2974 +gUnknown_82C2974: @ 0x82C2974 + .incbin "baserom_jp.gba", 0x2c2974, 0x10 + + .globl gUnknown_82C2984 +gUnknown_82C2984: @ 0x82C2984 + .incbin "baserom_jp.gba", 0x2c2984, 0x10 + + .globl gUnknown_82C2994 +gUnknown_82C2994: @ 0x82C2994 + .incbin "baserom_jp.gba", 0x2c2994, 0x18 + + .globl gUnknown_82C29AC +gUnknown_82C29AC: @ 0x82C29AC + .incbin "baserom_jp.gba", 0x2c29ac, 0x14 + + .globl gUnknown_82C29C0 +gUnknown_82C29C0: @ 0x82C29C0 + .incbin "baserom_jp.gba", 0x2c29c0, 0x18 + + .globl gUnknown_82C29D8 +gUnknown_82C29D8: @ 0x82C29D8 + .incbin "baserom_jp.gba", 0x2c29d8, 0x14 + + .globl gUnknown_82C29EC +gUnknown_82C29EC: @ 0x82C29EC + .incbin "baserom_jp.gba", 0x2c29ec, 0x14 + + .globl gUnknown_82C2A00 +gUnknown_82C2A00: @ 0x82C2A00 + .incbin "baserom_jp.gba", 0x2c2a00, 0x14 + + .globl gUnknown_82C2A14 +gUnknown_82C2A14: @ 0x82C2A14 + .incbin "baserom_jp.gba", 0x2c2a14, 0x1c + + .globl gUnknown_82C2A30 +gUnknown_82C2A30: @ 0x82C2A30 + .incbin "baserom_jp.gba", 0x2c2a30, 0x18 + + .globl gUnknown_82C2A48 +gUnknown_82C2A48: @ 0x82C2A48 + .incbin "baserom_jp.gba", 0x2c2a48, 0x18 + + .globl gUnknown_82C2A60 +gUnknown_82C2A60: @ 0x82C2A60 + .incbin "baserom_jp.gba", 0x2c2a60, 0x18 + + .globl gUnknown_82C2A78 +gUnknown_82C2A78: @ 0x82C2A78 + .incbin "baserom_jp.gba", 0x2c2a78, 0x1c + + .globl gUnknown_82C2A94 +gUnknown_82C2A94: @ 0x82C2A94 + .incbin "baserom_jp.gba", 0x2c2a94, 0x20 + + .globl gUnknown_82C2AB4 +gUnknown_82C2AB4: @ 0x82C2AB4 + .incbin "baserom_jp.gba", 0x2c2ab4, 0x18 + + .globl gUnknown_82C2ACC +gUnknown_82C2ACC: @ 0x82C2ACC + .incbin "baserom_jp.gba", 0x2c2acc, 0x20 + + .globl gUnknown_82C2AEC +gUnknown_82C2AEC: @ 0x82C2AEC + .incbin "baserom_jp.gba", 0x2c2aec, 0x1c + + .globl gUnknown_82C2B08 +gUnknown_82C2B08: @ 0x82C2B08 + .incbin "baserom_jp.gba", 0x2c2b08, 0x20 + + .globl gUnknown_82C2B28 +gUnknown_82C2B28: @ 0x82C2B28 + .incbin "baserom_jp.gba", 0x2c2b28, 0x10 + + .globl gUnknown_82C2B38 +gUnknown_82C2B38: @ 0x82C2B38 + .incbin "baserom_jp.gba", 0x2c2b38, 0xc + + .globl gUnknown_82C2B44 +gUnknown_82C2B44: @ 0x82C2B44 + .incbin "baserom_jp.gba", 0x2c2b44, 0xc + + .globl gUnknown_82C2B50 +gUnknown_82C2B50: @ 0x82C2B50 + .incbin "baserom_jp.gba", 0x2c2b50, 0x14 + + .globl gUnknown_82C2B64 +gUnknown_82C2B64: @ 0x82C2B64 + .incbin "baserom_jp.gba", 0x2c2b64, 0x8 + + .globl gUnknown_82C2B6C +gUnknown_82C2B6C: @ 0x82C2B6C + .incbin "baserom_jp.gba", 0x2c2b6c, 0x10 + + .globl gUnknown_82C2B7C +gUnknown_82C2B7C: @ 0x82C2B7C + .incbin "baserom_jp.gba", 0x2c2b7c, 0x14 + + .globl gUnknown_82C2B90 +gUnknown_82C2B90: @ 0x82C2B90 + .incbin "baserom_jp.gba", 0x2c2b90, 0x20 + + .globl gUnknown_82C2BB0 +gUnknown_82C2BB0: @ 0x82C2BB0 + .incbin "baserom_jp.gba", 0x2c2bb0, 0xa + + .globl gUnknown_82C2BBA +gUnknown_82C2BBA: @ 0x82C2BBA + .incbin "baserom_jp.gba", 0x2c2bba, 0x5 + + .globl gUnknown_82C2BBF +gUnknown_82C2BBF: @ 0x82C2BBF + .incbin "baserom_jp.gba", 0x2c2bbf, 0x5 + + .globl gUnknown_82C2BC4 +gUnknown_82C2BC4: @ 0x82C2BC4 + .incbin "baserom_jp.gba", 0x2c2bc4, 0x18 + + .globl gUnknown_82C2BDC +gUnknown_82C2BDC: @ 0x82C2BDC + .incbin "baserom_jp.gba", 0x2c2bdc, 0x14 + + .globl gUnknown_82C2BF0 +gUnknown_82C2BF0: @ 0x82C2BF0 + .incbin "baserom_jp.gba", 0x2c2bf0, 0x4 + + .globl gUnknown_82C2BF4 +gUnknown_82C2BF4: @ 0x82C2BF4 + .incbin "baserom_jp.gba", 0x2c2bf4, 0x15 + + .globl gUnknown_82C2C09 +gUnknown_82C2C09: @ 0x82C2C09 + .incbin "baserom_jp.gba", 0x2c2c09, 0x2 + + .globl gUnknown_82C2C0B +gUnknown_82C2C0B: @ 0x82C2C0B + .incbin "baserom_jp.gba", 0x2c2c0b, 0x5 + + .globl gUnknown_82C2C10 +gUnknown_82C2C10: @ 0x82C2C10 + .incbin "baserom_jp.gba", 0x2c2c10, 0x200 + + .globl gUnknown_82C2E10 +gUnknown_82C2E10: @ 0x82C2E10 + .incbin "baserom_jp.gba", 0x2c2e10, 0x210 + + .globl gUnknown_82C3020 +gUnknown_82C3020: @ 0x82C3020 + .incbin "baserom_jp.gba", 0x2c3020, 0x194 + + .globl gUnknown_82C31B4 +gUnknown_82C31B4: @ 0x82C31B4 + .incbin "baserom_jp.gba", 0x2c31b4, 0x8 + + .globl gUnknown_82C31BC +gUnknown_82C31BC: @ 0x82C31BC + .incbin "baserom_jp.gba", 0x2c31bc, 0x64 + + .globl gUnknown_82C3220 +gUnknown_82C3220: @ 0x82C3220 + .incbin "baserom_jp.gba", 0x2c3220, 0x18 + + .globl gUnknown_82C3238 +gUnknown_82C3238: @ 0x82C3238 + .incbin "baserom_jp.gba", 0x2c3238, 0x14 + + .globl gUnknown_82C324C +gUnknown_82C324C: @ 0x82C324C + .incbin "baserom_jp.gba", 0x2c324c, 0x60 + + .globl gUnknown_82C32AC +gUnknown_82C32AC: @ 0x82C32AC + .incbin "baserom_jp.gba", 0x2c32ac, 0x4 + + .globl gUnknown_82C32B0 +gUnknown_82C32B0: @ 0x82C32B0 + .incbin "baserom_jp.gba", 0x2c32b0, 0x10 + + .globl gUnknown_82C32C0 +gUnknown_82C32C0: @ 0x82C32C0 + .incbin "baserom_jp.gba", 0x2c32c0, 0x3 + + .globl gUnknown_82C32C3 +gUnknown_82C32C3: @ 0x82C32C3 + .incbin "baserom_jp.gba", 0x2c32c3, 0x1e + + .globl gUnknown_82C32E1 +gUnknown_82C32E1: @ 0x82C32E1 + .incbin "baserom_jp.gba", 0x2c32e1, 0x12 + + .globl gUnknown_82C32F3 +gUnknown_82C32F3: @ 0x82C32F3 + .incbin "baserom_jp.gba", 0x2c32f3, 0x11 + + .globl gUnknown_82C3304 +gUnknown_82C3304: @ 0x82C3304 + .incbin "baserom_jp.gba", 0x2c3304, 0x28 + + .globl gUnknown_82C332C +gUnknown_82C332C: @ 0x82C332C + .incbin "baserom_jp.gba", 0x2c332c, 0xc + + .globl gUnknown_82C3338 +gUnknown_82C3338: @ 0x82C3338 + .incbin "baserom_jp.gba", 0x2c3338, 0x4 + + .globl gUnknown_82C333C +gUnknown_82C333C: @ 0x82C333C + .incbin "baserom_jp.gba", 0x2c333c, 0x8 + + .globl gUnknown_82C3344 +gUnknown_82C3344: @ 0x82C3344 + .incbin "baserom_jp.gba", 0x2c3344, 0x4 + + .globl gUnknown_82C3348 +gUnknown_82C3348: @ 0x82C3348 + .incbin "baserom_jp.gba", 0x2c3348, 0xee4 + + .globl gUnknown_82C422C +gUnknown_82C422C: @ 0x82C422C + .incbin "baserom_jp.gba", 0x2c422c, 0x8 + + .globl gUnknown_82C4234 +gUnknown_82C4234: @ 0x82C4234 + .incbin "baserom_jp.gba", 0x2c4234, 0x40 + + .globl gUnknown_82C4274 +gUnknown_82C4274: @ 0x82C4274 + .incbin "baserom_jp.gba", 0x2c4274, 0x18 + + .globl gUnknown_82C428C +gUnknown_82C428C: @ 0x82C428C + .incbin "baserom_jp.gba", 0x2c428c, 0x80 + + .globl gUnknown_82C430C +gUnknown_82C430C: @ 0x82C430C + .incbin "baserom_jp.gba", 0x2c430c, 0x8 + + .globl gUnknown_82C4314 +gUnknown_82C4314: @ 0x82C4314 + .incbin "baserom_jp.gba", 0x2c4314, 0x10 + + .globl gUnknown_82C4324 +gUnknown_82C4324: @ 0x82C4324 + .incbin "baserom_jp.gba", 0x2c4324, 0x6d0 + + .globl gUnknown_82C49F4 +gUnknown_82C49F4: @ 0x82C49F4 + .incbin "baserom_jp.gba", 0x2c49f4, 0x80 + + .globl gUnknown_82C4A74 +gUnknown_82C4A74: @ 0x82C4A74 + .incbin "baserom_jp.gba", 0x2c4a74, 0x10 + + .globl gUnknown_82C4A84 +gUnknown_82C4A84: @ 0x82C4A84 + .incbin "baserom_jp.gba", 0x2c4a84, 0x1c + + .globl gUnknown_82C4AA0 +gUnknown_82C4AA0: @ 0x82C4AA0 + .incbin "baserom_jp.gba", 0x2c4aa0, 0x18 + + .globl gUnknown_82C4AB8 +gUnknown_82C4AB8: @ 0x82C4AB8 + .incbin "baserom_jp.gba", 0x2c4ab8, 0x14 + + .globl gUnknown_82C4ACC +gUnknown_82C4ACC: @ 0x82C4ACC + .incbin "baserom_jp.gba", 0x2c4acc, 0x30 + + .globl gUnknown_82C4AFC +gUnknown_82C4AFC: @ 0x82C4AFC + .incbin "baserom_jp.gba", 0x2c4afc, 0x14 + + .globl gUnknown_82C4B10 +gUnknown_82C4B10: @ 0x82C4B10 + .incbin "baserom_jp.gba", 0x2c4b10, 0x24 + + .globl gUnknown_82C4B34 +gUnknown_82C4B34: @ 0x82C4B34 + .incbin "baserom_jp.gba", 0x2c4b34, 0x38 + + .globl gUnknown_82C4B6C +gUnknown_82C4B6C: @ 0x82C4B6C + .incbin "baserom_jp.gba", 0x2c4b6c, 0x3f4 + + .globl gUnknown_82C4F60 +gUnknown_82C4F60: @ 0x82C4F60 + .incbin "baserom_jp.gba", 0x2c4f60, 0x60 + + .globl gUnknown_82C4FC0 +gUnknown_82C4FC0: @ 0x82C4FC0 + .incbin "baserom_jp.gba", 0x2c4fc0, 0x90 + + .globl gUnknown_82C5050 +gUnknown_82C5050: @ 0x82C5050 + .incbin "baserom_jp.gba", 0x2c5050, 0x10 + + .globl gUnknown_82C5060 +gUnknown_82C5060: @ 0x82C5060 + .incbin "baserom_jp.gba", 0x2c5060, 0x4 + + .globl gUnknown_82C5064 +gUnknown_82C5064: @ 0x82C5064 + .incbin "baserom_jp.gba", 0x2c5064, 0x28 + + .globl gUnknown_82C508C +gUnknown_82C508C: @ 0x82C508C + .incbin "baserom_jp.gba", 0x2c508c, 0x5 + + .globl gUnknown_82C5091 +gUnknown_82C5091: @ 0x82C5091 + .incbin "baserom_jp.gba", 0x2c5091, 0xef + + .globl gUnknown_82C5180 +gUnknown_82C5180: @ 0x82C5180 + .incbin "baserom_jp.gba", 0x2c5180, 0xa0 + + .globl gUnknown_82C5220 +gUnknown_82C5220: @ 0x82C5220 + .incbin "baserom_jp.gba", 0x2c5220, 0x20 + + .globl gUnknown_82C5240 +gUnknown_82C5240: @ 0x82C5240 + .incbin "baserom_jp.gba", 0x2c5240, 0x5c + + .globl gUnknown_82C529C +gUnknown_82C529C: @ 0x82C529C + .incbin "baserom_jp.gba", 0x2c529c, 0xac + + .globl gUnknown_82C5348 +gUnknown_82C5348: @ 0x82C5348 + .incbin "baserom_jp.gba", 0x2c5348, 0x20 + + .globl gUnknown_82C5368 +gUnknown_82C5368: @ 0x82C5368 + .incbin "baserom_jp.gba", 0x2c5368, 0x20 + + .globl gUnknown_82C5388 +gUnknown_82C5388: @ 0x82C5388 + .incbin "baserom_jp.gba", 0x2c5388, 0x234 + + .globl gUnknown_82C55BC +gUnknown_82C55BC: @ 0x82C55BC + .incbin "baserom_jp.gba", 0x2c55bc, 0xf8 + + .globl gUnknown_82C56B4 +gUnknown_82C56B4: @ 0x82C56B4 + .incbin "baserom_jp.gba", 0x2c56b4, 0x20 + + .globl gUnknown_82C56D4 +gUnknown_82C56D4: @ 0x82C56D4 + .incbin "baserom_jp.gba", 0x2c56d4, 0x20 + + .globl gUnknown_82C56F4 +gUnknown_82C56F4: @ 0x82C56F4 + .incbin "baserom_jp.gba", 0x2c56f4, 0x10 + + .globl gUnknown_82C5704 +gUnknown_82C5704: @ 0x82C5704 + .incbin "baserom_jp.gba", 0x2c5704, 0x28 + + .globl gUnknown_82C572C +gUnknown_82C572C: @ 0x82C572C + .incbin "baserom_jp.gba", 0x2c572c, 0xa8 + + .globl gUnknown_82C57D4 +gUnknown_82C57D4: @ 0x82C57D4 + .incbin "baserom_jp.gba", 0x2c57d4, 0x84 + + .globl gUnknown_82C5858 +gUnknown_82C5858: @ 0x82C5858 + .incbin "baserom_jp.gba", 0x2c5858, 0x32 + + .globl gUnknown_82C588A +gUnknown_82C588A: @ 0x82C588A + .incbin "baserom_jp.gba", 0x2c588a, 0x4c2 + + .globl gUnknown_82C5D4C +gUnknown_82C5D4C: @ 0x82C5D4C + .incbin "baserom_jp.gba", 0x2c5d4c, 0x28 + + .globl gUnknown_82C5D74 +gUnknown_82C5D74: @ 0x82C5D74 + .incbin "baserom_jp.gba", 0x2c5d74, 0x40 + + .globl gUnknown_82C5DB4 +gUnknown_82C5DB4: @ 0x82C5DB4 + .incbin "baserom_jp.gba", 0x2c5db4, 0x20 + + .globl gUnknown_82C5DD4 +gUnknown_82C5DD4: @ 0x82C5DD4 + .incbin "baserom_jp.gba", 0x2c5dd4, 0x18 + + .globl gUnknown_82C5DEC +gUnknown_82C5DEC: @ 0x82C5DEC + .incbin "baserom_jp.gba", 0x2c5dec, 0x58 + + .globl gUnknown_82C5E44 +gUnknown_82C5E44: @ 0x82C5E44 + .incbin "baserom_jp.gba", 0x2c5e44, 0x18 + + .globl gUnknown_82C5E5C +gUnknown_82C5E5C: @ 0x82C5E5C + .incbin "baserom_jp.gba", 0x2c5e5c, 0x18 + + .globl gUnknown_82C5E74 +gUnknown_82C5E74: @ 0x82C5E74 + .incbin "baserom_jp.gba", 0x2c5e74, 0x8 + + .globl gUnknown_82C5E7C +gUnknown_82C5E7C: @ 0x82C5E7C + .incbin "baserom_jp.gba", 0x2c5e7c, 0x8 + + .globl gUnknown_82C5E84 +gUnknown_82C5E84: @ 0x82C5E84 + .incbin "baserom_jp.gba", 0x2c5e84, 0x24 + + .globl gUnknown_82C5EA8 +gUnknown_82C5EA8: @ 0x82C5EA8 + .incbin "baserom_jp.gba", 0x2c5ea8, 0x14 + + .globl gUnknown_82C5EBC +gUnknown_82C5EBC: @ 0x82C5EBC + .incbin "baserom_jp.gba", 0x2c5ebc, 0x24 + + .globl gUnknown_82C5EE0 +gUnknown_82C5EE0: @ 0x82C5EE0 + .incbin "baserom_jp.gba", 0x2c5ee0, 0x4 + + .globl gUnknown_82C5EE4 +gUnknown_82C5EE4: @ 0x82C5EE4 + .incbin "baserom_jp.gba", 0x2c5ee4, 0xc + + .globl gUnknown_82C5EF0 +gUnknown_82C5EF0: @ 0x82C5EF0 + .incbin "baserom_jp.gba", 0x2c5ef0, 0x3 + + .globl gUnknown_82C5EF3 +gUnknown_82C5EF3: @ 0x82C5EF3 + .incbin "baserom_jp.gba", 0x2c5ef3, 0x3 + + .globl gUnknown_82C5EF6 +gUnknown_82C5EF6: @ 0x82C5EF6 + .incbin "baserom_jp.gba", 0x2c5ef6, 0x3 + + .globl gUnknown_82C5EF9 +gUnknown_82C5EF9: @ 0x82C5EF9 + .incbin "baserom_jp.gba", 0x2c5ef9, 0x6 + + .globl gUnknown_82C5EFF +gUnknown_82C5EFF: @ 0x82C5EFF + .incbin "baserom_jp.gba", 0x2c5eff, 0x5 + + .globl gUnknown_82C5F04 +gUnknown_82C5F04: @ 0x82C5F04 + .incbin "baserom_jp.gba", 0x2c5f04, 0x8 + + .globl gUnknown_82C5F0C +gUnknown_82C5F0C: @ 0x82C5F0C + .incbin "baserom_jp.gba", 0x2c5f0c, 0x50 + + .globl gUnknown_82C5F5C +gUnknown_82C5F5C: @ 0x82C5F5C + .incbin "baserom_jp.gba", 0x2c5f5c, 0x8 + + .globl gUnknown_82C5F64 +gUnknown_82C5F64: @ 0x82C5F64 + .incbin "baserom_jp.gba", 0x2c5f64, 0x20 + + .globl gUnknown_82C5F84 +gUnknown_82C5F84: @ 0x82C5F84 + .incbin "baserom_jp.gba", 0x2c5f84, 0x180 + + .globl gUnknown_82C6104 +gUnknown_82C6104: @ 0x82C6104 + .incbin "baserom_jp.gba", 0x2c6104, 0x13d0 + + .globl gUnknown_82C74D4 +gUnknown_82C74D4: @ 0x82C74D4 + .incbin "baserom_jp.gba", 0x2c74d4, 0x130 + + .globl gUnknown_82C7604 +gUnknown_82C7604: @ 0x82C7604 + .incbin "baserom_jp.gba", 0x2c7604, 0x198 + + .globl gUnknown_82C779C +gUnknown_82C779C: @ 0x82C779C + .incbin "baserom_jp.gba", 0x2c779c, 0x228 + + .globl gUnknown_82C79C4 +gUnknown_82C79C4: @ 0x82C79C4 + .incbin "baserom_jp.gba", 0x2c79c4, 0x44 + + .globl gUnknown_82C7A08 +gUnknown_82C7A08: @ 0x82C7A08 + .incbin "baserom_jp.gba", 0x2c7a08, 0x14 + + .globl gUnknown_82C7A1C +gUnknown_82C7A1C: @ 0x82C7A1C + .incbin "baserom_jp.gba", 0x2c7a1c, 0x3c + + .globl gUnknown_82C7A58 +gUnknown_82C7A58: @ 0x82C7A58 + .incbin "baserom_jp.gba", 0x2c7a58, 0x1 + + .globl gUnknown_82C7A59 +gUnknown_82C7A59: @ 0x82C7A59 + .incbin "baserom_jp.gba", 0x2c7a59, 0x5 + + .globl gUnknown_82C7A5E +gUnknown_82C7A5E: @ 0x82C7A5E + .incbin "baserom_jp.gba", 0x2c7a5e, 0x1 + + .globl gUnknown_82C7A5F +gUnknown_82C7A5F: @ 0x82C7A5F + .incbin "baserom_jp.gba", 0x2c7a5f, 0x15 + + .globl gUnknown_82C7A74 +gUnknown_82C7A74: @ 0x82C7A74 + .incbin "baserom_jp.gba", 0x2c7a74, 0xc + + .globl gUnknown_82C7A80 +gUnknown_82C7A80: @ 0x82C7A80 + .incbin "baserom_jp.gba", 0x2c7a80, 0x28 + + .globl gUnknown_82C7AA8 +gUnknown_82C7AA8: @ 0x82C7AA8 + .incbin "baserom_jp.gba", 0x2c7aa8, 0xf0 + + .globl gUnknown_82C7B98 +gUnknown_82C7B98: @ 0x82C7B98 + .incbin "baserom_jp.gba", 0x2c7b98, 0x18 + + .globl gUnknown_82C7BB0 +gUnknown_82C7BB0: @ 0x82C7BB0 + .incbin "baserom_jp.gba", 0x2c7bb0, 0x18 + + .globl gUnknown_82C7BC8 +gUnknown_82C7BC8: @ 0x82C7BC8 + .incbin "baserom_jp.gba", 0x2c7bc8, 0x18 + + .globl gUnknown_82C7BE0 +gUnknown_82C7BE0: @ 0x82C7BE0 + .incbin "baserom_jp.gba", 0x2c7be0, 0x18 + + .globl gUnknown_82C7BF8 +gUnknown_82C7BF8: @ 0x82C7BF8 + .incbin "baserom_jp.gba", 0x2c7bf8, 0x18 + + .globl gUnknown_82C7C10 +gUnknown_82C7C10: @ 0x82C7C10 + .incbin "baserom_jp.gba", 0x2c7c10, 0x30 + + .globl gUnknown_82C7C40 +gUnknown_82C7C40: @ 0x82C7C40 + .incbin "baserom_jp.gba", 0x2c7c40, 0x18 + + .globl gUnknown_82C7C58 +gUnknown_82C7C58: @ 0x82C7C58 + .incbin "baserom_jp.gba", 0x2c7c58, 0x68 + + .globl gUnknown_82C7CC0 +gUnknown_82C7CC0: @ 0x82C7CC0 + .incbin "baserom_jp.gba", 0x2c7cc0, 0x10 + + .globl gUnknown_82C7CD0 +gUnknown_82C7CD0: @ 0x82C7CD0 + .incbin "baserom_jp.gba", 0x2c7cd0, 0x4 + + .globl gUnknown_82C7CD4 +gUnknown_82C7CD4: @ 0x82C7CD4 + .incbin "baserom_jp.gba", 0x2c7cd4, 0x54 + + .globl gUnknown_82C7D28 +gUnknown_82C7D28: @ 0x82C7D28 + .incbin "baserom_jp.gba", 0x2c7d28, 0x113 + + .globl gUnknown_82C7E3B +gUnknown_82C7E3B: @ 0x82C7E3B + .incbin "baserom_jp.gba", 0x2c7e3b, 0x4b + + .globl gUnknown_82C7E86 +gUnknown_82C7E86: @ 0x82C7E86 + .incbin "baserom_jp.gba", 0x2c7e86, 0x4e + + .globl gUnknown_82C7ED4 +gUnknown_82C7ED4: @ 0x82C7ED4 + .incbin "baserom_jp.gba", 0x2c7ed4, 0x37 + + .globl gUnknown_82C7F0B +gUnknown_82C7F0B: @ 0x82C7F0B + .incbin "baserom_jp.gba", 0x2c7f0b, 0x3409 + + .globl gUnknown_82CB314 +gUnknown_82CB314: @ 0x82CB314 + .incbin "baserom_jp.gba", 0x2cb314, 0xc + + .globl gUnknown_82CB320 +gUnknown_82CB320: @ 0x82CB320 + .incbin "baserom_jp.gba", 0x2cb320, 0x8 + + .globl gUnknown_82CB328 +gUnknown_82CB328: @ 0x82CB328 + .incbin "baserom_jp.gba", 0x2cb328, 0x8 + + .globl gUnknown_82CB330 +gUnknown_82CB330: @ 0x82CB330 + .incbin "baserom_jp.gba", 0x2cb330, 0x20 + + .globl gUnknown_82CB350 +gUnknown_82CB350: @ 0x82CB350 + .incbin "baserom_jp.gba", 0x2cb350, 0x30 + + .globl gUnknown_82CB380 +gUnknown_82CB380: @ 0x82CB380 + .incbin "baserom_jp.gba", 0x2cb380, 0x30 + + .globl gUnknown_82CB3B0 +gUnknown_82CB3B0: @ 0x82CB3B0 + .incbin "baserom_jp.gba", 0x2cb3b0, 0x8 + + .globl gUnknown_82CB3B8 +gUnknown_82CB3B8: @ 0x82CB3B8 + .incbin "baserom_jp.gba", 0x2cb3b8, 0x8 + + .globl gUnknown_82CB3C0 +gUnknown_82CB3C0: @ 0x82CB3C0 + .incbin "baserom_jp.gba", 0x2cb3c0, 0xc + + .globl gUnknown_82CB3CC +gUnknown_82CB3CC: @ 0x82CB3CC + .incbin "baserom_jp.gba", 0x2cb3cc, 0x4 + + .globl gUnknown_82CB3D0 +gUnknown_82CB3D0: @ 0x82CB3D0 + .incbin "baserom_jp.gba", 0x2cb3d0, 0x6 + + .globl gUnknown_82CB3D6 +gUnknown_82CB3D6: @ 0x82CB3D6 + .incbin "baserom_jp.gba", 0x2cb3d6, 0x6 + + .globl gUnknown_82CB3DC +gUnknown_82CB3DC: @ 0x82CB3DC + .incbin "baserom_jp.gba", 0x2cb3dc, 0x40 + + .globl gUnknown_82CB41C +gUnknown_82CB41C: @ 0x82CB41C + .incbin "baserom_jp.gba", 0x2cb41c, 0x14 + + .globl gUnknown_82CB430 +gUnknown_82CB430: @ 0x82CB430 + .incbin "baserom_jp.gba", 0x2cb430, 0x18 + + .globl gUnknown_82CB448 +gUnknown_82CB448: @ 0x82CB448 + .incbin "baserom_jp.gba", 0x2cb448, 0x10 + + .globl gUnknown_82CB458 +gUnknown_82CB458: @ 0x82CB458 + .incbin "baserom_jp.gba", 0x2cb458, 0x8 + + .globl gUnknown_82CB460 +gUnknown_82CB460: @ 0x82CB460 + .incbin "baserom_jp.gba", 0x2cb460, 0x10 + + .globl gUnknown_82CB470 +gUnknown_82CB470: @ 0x82CB470 + .incbin "baserom_jp.gba", 0x2cb470, 0x8 + + .globl gUnknown_82CB478 +gUnknown_82CB478: @ 0x82CB478 + .incbin "baserom_jp.gba", 0x2cb478, 0x204 + + .globl gUnknown_82CB67C +gUnknown_82CB67C: @ 0x82CB67C + .incbin "baserom_jp.gba", 0x2cb67c, 0xc0 + + .globl gUnknown_82CB73C +gUnknown_82CB73C: @ 0x82CB73C + .incbin "baserom_jp.gba", 0x2cb73c, 0x1d4 + + .globl gUnknown_82CB910 +gUnknown_82CB910: @ 0x82CB910 + .incbin "baserom_jp.gba", 0x2cb910, 0x890 + + .globl gUnknown_82CC1A0 +gUnknown_82CC1A0: @ 0x82CC1A0 + .incbin "baserom_jp.gba", 0x2cc1a0, 0xdcc + + .globl gUnknown_82CCF6C +gUnknown_82CCF6C: @ 0x82CCF6C + .incbin "baserom_jp.gba", 0x2ccf6c, 0x94 + + .globl gUnknown_82CD000 +gUnknown_82CD000: @ 0x82CD000 + .incbin "baserom_jp.gba", 0x2cd000, 0x148 + + .globl gUnknown_82CD148 +gUnknown_82CD148: @ 0x82CD148 + .incbin "baserom_jp.gba", 0x2cd148, 0x121c + + .globl gUnknown_82CE364 +gUnknown_82CE364: @ 0x82CE364 + .incbin "baserom_jp.gba", 0x2ce364, 0x26c + + .globl gUnknown_82CE5D0 +gUnknown_82CE5D0: @ 0x82CE5D0 + .incbin "baserom_jp.gba", 0x2ce5d0, 0x250 + + .globl gUnknown_82CE820 +gUnknown_82CE820: @ 0x82CE820 + .incbin "baserom_jp.gba", 0x2ce820, 0x24c + + .globl gUnknown_82CEA6C +gUnknown_82CEA6C: @ 0x82CEA6C + .incbin "baserom_jp.gba", 0x2cea6c, 0x48 + + .globl gUnknown_82CEAB4 +gUnknown_82CEAB4: @ 0x82CEAB4 + .incbin "baserom_jp.gba", 0x2ceab4, 0xb0 + + .globl gUnknown_82CEB64 +gUnknown_82CEB64: @ 0x82CEB64 + .incbin "baserom_jp.gba", 0x2ceb64, 0x8 + + .globl gUnknown_82CEB6C +gUnknown_82CEB6C: @ 0x82CEB6C + .incbin "baserom_jp.gba", 0x2ceb6c, 0x8 + + .globl gUnknown_82CEB74 +gUnknown_82CEB74: @ 0x82CEB74 + .incbin "baserom_jp.gba", 0x2ceb74, 0x8 + + .globl gUnknown_82CEB7C +gUnknown_82CEB7C: @ 0x82CEB7C + .incbin "baserom_jp.gba", 0x2ceb7c, 0x24 + + .globl gUnknown_82CEBA0 +gUnknown_82CEBA0: @ 0x82CEBA0 + .incbin "baserom_jp.gba", 0x2ceba0, 0x8 + + .globl gUnknown_82CEBA8 +gUnknown_82CEBA8: @ 0x82CEBA8 + .incbin "baserom_jp.gba", 0x2ceba8, 0x8 + + .globl gUnknown_82CEBB0 +gUnknown_82CEBB0: @ 0x82CEBB0 + .incbin "baserom_jp.gba", 0x2cebb0, 0x18 + + .globl gUnknown_82CEBC8 +gUnknown_82CEBC8: @ 0x82CEBC8 + .incbin "baserom_jp.gba", 0x2cebc8, 0x18 + + .globl gUnknown_82CEBE0 +gUnknown_82CEBE0: @ 0x82CEBE0 + .incbin "baserom_jp.gba", 0x2cebe0, 0x2 + + .globl gUnknown_82CEBE2 +gUnknown_82CEBE2: @ 0x82CEBE2 + .incbin "baserom_jp.gba", 0x2cebe2, 0xa + + .globl gUnknown_82CEBEC +gUnknown_82CEBEC: @ 0x82CEBEC + .incbin "baserom_jp.gba", 0x2cebec, 0x8 + + .globl gUnknown_82CEBF4 +gUnknown_82CEBF4: @ 0x82CEBF4 + .incbin "baserom_jp.gba", 0x2cebf4, 0x18 + + .globl gUnknown_82CEC0C +gUnknown_82CEC0C: @ 0x82CEC0C + .incbin "baserom_jp.gba", 0x2cec0c, 0x3 + + .globl gUnknown_82CEC0F +gUnknown_82CEC0F: @ 0x82CEC0F + .incbin "baserom_jp.gba", 0x2cec0f, 0x45 + + .globl gUnknown_82CEC54 +gUnknown_82CEC54: @ 0x82CEC54 + .incbin "baserom_jp.gba", 0x2cec54, 0x14 + + .globl gUnknown_82CEC68 +gUnknown_82CEC68: @ 0x82CEC68 + .incbin "baserom_jp.gba", 0x2cec68, 0x14 + + .globl gUnknown_82CEC7C +gUnknown_82CEC7C: @ 0x82CEC7C + .incbin "baserom_jp.gba", 0x2cec7c, 0x8 + + .globl gUnknown_82CEC84 +gUnknown_82CEC84: @ 0x82CEC84 + .incbin "baserom_jp.gba", 0x2cec84, 0xa + + .globl gUnknown_82CEC8E +gUnknown_82CEC8E: @ 0x82CEC8E + .incbin "baserom_jp.gba", 0x2cec8e, 0xa + + .globl gUnknown_82CEC98 +gUnknown_82CEC98: @ 0x82CEC98 + .incbin "baserom_jp.gba", 0x2cec98, 0x50 + + .globl gUnknown_82CECE8 +gUnknown_82CECE8: @ 0x82CECE8 + .incbin "baserom_jp.gba", 0x2cece8, 0x8 + + .globl gUnknown_82CECF0 +gUnknown_82CECF0: @ 0x82CECF0 + .incbin "baserom_jp.gba", 0x2cecf0, 0x190 + + .globl gUnknown_82CEE80 +gUnknown_82CEE80: @ 0x82CEE80 + .incbin "baserom_jp.gba", 0x2cee80, 0x24 + + .globl gUnknown_82CEEA4 +gUnknown_82CEEA4: @ 0x82CEEA4 + .incbin "baserom_jp.gba", 0x2ceea4, 0x24 + + .globl gUnknown_82CEEC8 +gUnknown_82CEEC8: @ 0x82CEEC8 + .incbin "baserom_jp.gba", 0x2ceec8, 0x10 + + .globl gUnknown_82CEED8 +gUnknown_82CEED8: @ 0x82CEED8 + .incbin "baserom_jp.gba", 0x2ceed8, 0x8 + + .globl gUnknown_82CEEE0 +gUnknown_82CEEE0: @ 0x82CEEE0 + .incbin "baserom_jp.gba", 0x2ceee0, 0x8 + + .globl gUnknown_82CEEE8 +gUnknown_82CEEE8: @ 0x82CEEE8 + .incbin "baserom_jp.gba", 0x2ceee8, 0x90 + + .globl gUnknown_82CEF78 +gUnknown_82CEF78: @ 0x82CEF78 + .incbin "baserom_jp.gba", 0x2cef78, 0x18 + + .globl gUnknown_82CEF90 +gUnknown_82CEF90: @ 0x82CEF90 + .incbin "baserom_jp.gba", 0x2cef90, 0x10 + + .globl gUnknown_82CEFA0 +gUnknown_82CEFA0: @ 0x82CEFA0 + .incbin "baserom_jp.gba", 0x2cefa0, 0x6f4 + + .globl gUnknown_82CF694 +gUnknown_82CF694: @ 0x82CF694 + .incbin "baserom_jp.gba", 0x2cf694, 0x28 + + .globl gUnknown_82CF6BC +gUnknown_82CF6BC: @ 0x82CF6BC + .incbin "baserom_jp.gba", 0x2cf6bc, 0x10 + + .globl gUnknown_82CF6CC +gUnknown_82CF6CC: @ 0x82CF6CC + .incbin "baserom_jp.gba", 0x2cf6cc, 0x18 + + .globl gUnknown_82CF6E4 +gUnknown_82CF6E4: @ 0x82CF6E4 + .incbin "baserom_jp.gba", 0x2cf6e4, 0x50 + + .globl gUnknown_82CF734 +gUnknown_82CF734: @ 0x82CF734 + .incbin "baserom_jp.gba", 0x2cf734, 0x10 + + .globl gUnknown_82CF744 +gUnknown_82CF744: @ 0x82CF744 + .incbin "baserom_jp.gba", 0x2cf744, 0x154 + + .globl gUnknown_82CF898 +gUnknown_82CF898: @ 0x82CF898 + .incbin "baserom_jp.gba", 0x2cf898, 0x18 + + .globl gUnknown_82CF8B0 +gUnknown_82CF8B0: @ 0x82CF8B0 + .incbin "baserom_jp.gba", 0x2cf8b0, 0x20 + + .globl gUnknown_82CF8D0 +gUnknown_82CF8D0: @ 0x82CF8D0 + .incbin "baserom_jp.gba", 0x2cf8d0, 0x20 + + .globl gUnknown_82CF8F0 +gUnknown_82CF8F0: @ 0x82CF8F0 + .incbin "baserom_jp.gba", 0x2cf8f0, 0x22c + + .globl gUnknown_82CFB1C +gUnknown_82CFB1C: @ 0x82CFB1C + .incbin "baserom_jp.gba", 0x2cfb1c, 0x1b0 + + .globl gUnknown_82CFCCC +gUnknown_82CFCCC: @ 0x82CFCCC + .incbin "baserom_jp.gba", 0x2cfccc, 0x20 + + .globl gUnknown_82CFCEC +gUnknown_82CFCEC: @ 0x82CFCEC + .incbin "baserom_jp.gba", 0x2cfcec, 0x950 + + .globl gUnknown_82D063C +gUnknown_82D063C: @ 0x82D063C + .incbin "baserom_jp.gba", 0x2d063c, 0x3b8 + + .globl gUnknown_82D09F4 +gUnknown_82D09F4: @ 0x82D09F4 + .incbin "baserom_jp.gba", 0x2d09f4, 0x20 + + .globl gUnknown_82D0A14 +gUnknown_82D0A14: @ 0x82D0A14 + .incbin "baserom_jp.gba", 0x2d0a14, 0xab0 + + .globl gUnknown_82D14C4 +gUnknown_82D14C4: @ 0x82D14C4 + .incbin "baserom_jp.gba", 0x2d14c4, 0x52c + + .globl gUnknown_82D19F0 +gUnknown_82D19F0: @ 0x82D19F0 + .incbin "baserom_jp.gba", 0x2d19f0, 0x10 + + .globl gUnknown_82D1A00 +gUnknown_82D1A00: @ 0x82D1A00 + .incbin "baserom_jp.gba", 0x2d1a00, 0x18 + + .globl gUnknown_82D1A18 +gUnknown_82D1A18: @ 0x82D1A18 + .incbin "baserom_jp.gba", 0x2d1a18, 0x50 + + .globl gUnknown_82D1A68 +gUnknown_82D1A68: @ 0x82D1A68 + .incbin "baserom_jp.gba", 0x2d1a68, 0x3 + + .globl gUnknown_82D1A6B +gUnknown_82D1A6B: @ 0x82D1A6B + .incbin "baserom_jp.gba", 0x2d1a6b, 0xd + + .globl gUnknown_82D1A78 +gUnknown_82D1A78: @ 0x82D1A78 + .incbin "baserom_jp.gba", 0x2d1a78, 0x8 + + .globl gUnknown_82D1A80 +gUnknown_82D1A80: @ 0x82D1A80 + .incbin "baserom_jp.gba", 0x2d1a80, 0x40 + + .globl gUnknown_82D1AC0 +gUnknown_82D1AC0: @ 0x82D1AC0 + .incbin "baserom_jp.gba", 0x2d1ac0, 0x2c + + .globl gUnknown_82D1AEC +gUnknown_82D1AEC: @ 0x82D1AEC + .incbin "baserom_jp.gba", 0x2d1aec, 0x10 + + .globl gUnknown_82D1AFC +gUnknown_82D1AFC: @ 0x82D1AFC + .incbin "baserom_jp.gba", 0x2d1afc, 0x8 + + .globl gUnknown_82D1B04 +gUnknown_82D1B04: @ 0x82D1B04 + .incbin "baserom_jp.gba", 0x2d1b04, 0x450 + + .globl gUnknown_82D1F54 +gUnknown_82D1F54: @ 0x82D1F54 + .incbin "baserom_jp.gba", 0x2d1f54, 0x10 + + .globl gUnknown_82D1F64 +gUnknown_82D1F64: @ 0x82D1F64 + .incbin "baserom_jp.gba", 0x2d1f64, 0x58 + + .globl gUnknown_82D1FBC +gUnknown_82D1FBC: @ 0x82D1FBC + .incbin "baserom_jp.gba", 0x2d1fbc, 0x18 + + .globl gUnknown_82D1FD4 +gUnknown_82D1FD4: @ 0x82D1FD4 + .incbin "baserom_jp.gba", 0x2d1fd4, 0x484 + + .globl gUnknown_82D2458 +gUnknown_82D2458: @ 0x82D2458 + .incbin "baserom_jp.gba", 0x2d2458, 0x8 + + .globl gUnknown_82D2460 +gUnknown_82D2460: @ 0x82D2460 + .incbin "baserom_jp.gba", 0x2d2460, 0xbc + + .globl gUnknown_82D251C +gUnknown_82D251C: @ 0x82D251C + .incbin "baserom_jp.gba", 0x2d251c, 0x18 + + .globl gUnknown_82D2534 +gUnknown_82D2534: @ 0x82D2534 + .incbin "baserom_jp.gba", 0x2d2534, 0x18 + + .globl gUnknown_82D254C +gUnknown_82D254C: @ 0x82D254C + .incbin "baserom_jp.gba", 0x2d254c, 0xc + + .globl gUnknown_82D2558 +gUnknown_82D2558: @ 0x82D2558 + .incbin "baserom_jp.gba", 0x2d2558, 0x30 + + .globl gUnknown_82D2588 +gUnknown_82D2588: @ 0x82D2588 + .incbin "baserom_jp.gba", 0x2d2588, 0x40 + + .globl gUnknown_82D25C8 +gUnknown_82D25C8: @ 0x82D25C8 + .incbin "baserom_jp.gba", 0x2d25c8, 0x1b4 + + .globl gUnknown_82D277C +gUnknown_82D277C: @ 0x82D277C + .incbin "baserom_jp.gba", 0x2d277c, 0x12a + + .globl gUnknown_82D28A6 +gUnknown_82D28A6: @ 0x82D28A6 + .incbin "baserom_jp.gba", 0x2d28a6, 0x2 + + .globl gUnknown_82D28A8 +gUnknown_82D28A8: @ 0x82D28A8 + .incbin "baserom_jp.gba", 0x2d28a8, 0xe + + .globl gUnknown_82D28B6 +gUnknown_82D28B6: @ 0x82D28B6 + .incbin "baserom_jp.gba", 0x2d28b6, 0x12 + + .globl gUnknown_82D28C8 +gUnknown_82D28C8: @ 0x82D28C8 + .incbin "baserom_jp.gba", 0x2d28c8, 0x10 + + .globl gUnknown_82D28D8 +gUnknown_82D28D8: @ 0x82D28D8 + .incbin "baserom_jp.gba", 0x2d28d8, 0x28 + + .globl gUnknown_82D2900 +gUnknown_82D2900: @ 0x82D2900 + .incbin "baserom_jp.gba", 0x2d2900, 0x10 + + .globl gUnknown_82D2910 +gUnknown_82D2910: @ 0x82D2910 + .incbin "baserom_jp.gba", 0x2d2910, 0x8 + + .globl gUnknown_82D2918 +gUnknown_82D2918: @ 0x82D2918 + .incbin "baserom_jp.gba", 0x2d2918, 0x18 + + .globl gUnknown_82D2930 +gUnknown_82D2930: @ 0x82D2930 + .incbin "baserom_jp.gba", 0x2d2930, 0x20 + + .globl gUnknown_82D2950 +gUnknown_82D2950: @ 0x82D2950 + .incbin "baserom_jp.gba", 0x2d2950, 0x20 + + .globl gUnknown_82D2970 +gUnknown_82D2970: @ 0x82D2970 + .incbin "baserom_jp.gba", 0x2d2970, 0x3 + + .globl gUnknown_82D2973 +gUnknown_82D2973: @ 0x82D2973 + .incbin "baserom_jp.gba", 0x2d2973, 0x5 + + .globl gUnknown_82D2978 +gUnknown_82D2978: @ 0x82D2978 + .incbin "baserom_jp.gba", 0x2d2978, 0x8 + + .globl gUnknown_82D2980 +gUnknown_82D2980: @ 0x82D2980 + .incbin "baserom_jp.gba", 0x2d2980, 0x4 + + .globl gUnknown_82D2984 +gUnknown_82D2984: @ 0x82D2984 + .incbin "baserom_jp.gba", 0x2d2984, 0x20 + + .globl gUnknown_82D29A4 +gUnknown_82D29A4: @ 0x82D29A4 + .incbin "baserom_jp.gba", 0x2d29a4, 0x4 + + .globl gUnknown_82D29A8 +gUnknown_82D29A8: @ 0x82D29A8 + .incbin "baserom_jp.gba", 0x2d29a8, 0x10 + + .globl gUnknown_82D29B8 +gUnknown_82D29B8: @ 0x82D29B8 + .incbin "baserom_jp.gba", 0x2d29b8, 0x50 + + .globl gUnknown_82D2A08 +gUnknown_82D2A08: @ 0x82D2A08 + .incbin "baserom_jp.gba", 0x2d2a08, 0x50 + + .globl gUnknown_82D2A58 +gUnknown_82D2A58: @ 0x82D2A58 + .incbin "baserom_jp.gba", 0x2d2a58, 0x450 + + .globl gUnknown_82D2EA8 +gUnknown_82D2EA8: @ 0x82D2EA8 + .incbin "baserom_jp.gba", 0x2d2ea8, 0x7c + + .globl gUnknown_82D2F24 +gUnknown_82D2F24: @ 0x82D2F24 + .incbin "baserom_jp.gba", 0x2d2f24, 0x2c + + .globl gUnknown_82D2F50 +gUnknown_82D2F50: @ 0x82D2F50 + .incbin "baserom_jp.gba", 0x2d2f50, 0x4c + + .globl gUnknown_82D2F9C +gUnknown_82D2F9C: @ 0x82D2F9C + .incbin "baserom_jp.gba", 0x2d2f9c, 0x162c + + .globl gUnknown_82D45C8 +gUnknown_82D45C8: @ 0x82D45C8 + .incbin "baserom_jp.gba", 0x2d45c8, 0x6e0 + + .globl gUnknown_82D4CA8 +gUnknown_82D4CA8: @ 0x82D4CA8 + .incbin "baserom_jp.gba", 0x2d4ca8, 0xdc0 + + .globl gUnknown_82D5A68 +gUnknown_82D5A68: @ 0x82D5A68 + .incbin "baserom_jp.gba", 0x2d5a68, 0x6e0 + + .globl gUnknown_82D6148 +gUnknown_82D6148: @ 0x82D6148 + .incbin "baserom_jp.gba", 0x2d6148, 0xdc0 + + .globl gUnknown_82D6F08 +gUnknown_82D6F08: @ 0x82D6F08 + .incbin "baserom_jp.gba", 0x2d6f08, 0xdc0 + + .globl gUnknown_82D7CC8 +gUnknown_82D7CC8: @ 0x82D7CC8 + .incbin "baserom_jp.gba", 0x2d7cc8, 0xf34 + + .globl gUnknown_82D8BFC +gUnknown_82D8BFC: @ 0x82D8BFC + .incbin "baserom_jp.gba", 0x2d8bfc, 0x174 + + .globl gUnknown_82D8D70 +gUnknown_82D8D70: @ 0x82D8D70 + .incbin "baserom_jp.gba", 0x2d8d70, 0x174 + + .globl gUnknown_82D8EE4 +gUnknown_82D8EE4: @ 0x82D8EE4 + .incbin "baserom_jp.gba", 0x2d8ee4, 0x2e8 + + .globl gUnknown_82D91CC +gUnknown_82D91CC: @ 0x82D91CC + .incbin "baserom_jp.gba", 0x2d91cc, 0x3d0 + + .globl gUnknown_82D959C +gUnknown_82D959C: @ 0x82D959C + .incbin "baserom_jp.gba", 0x2d959c, 0x20 + + .globl gUnknown_82D95BC +gUnknown_82D95BC: @ 0x82D95BC + .incbin "baserom_jp.gba", 0x2d95bc, 0x20 + + .globl gUnknown_82D95DC +gUnknown_82D95DC: @ 0x82D95DC + .incbin "baserom_jp.gba", 0x2d95dc, 0x40 + + .globl gUnknown_82D961C +gUnknown_82D961C: @ 0x82D961C + .incbin "baserom_jp.gba", 0x2d961c, 0x40 + + .globl gUnknown_82D965C +gUnknown_82D965C: @ 0x82D965C + .incbin "baserom_jp.gba", 0x2d965c, 0x3ce0 + + .globl gUnknown_82DD33C +gUnknown_82DD33C: @ 0x82DD33C + .incbin "baserom_jp.gba", 0x2dd33c, 0x6e0 + + .globl gUnknown_82DDA1C +gUnknown_82DDA1C: @ 0x82DDA1C + .incbin "baserom_jp.gba", 0x2dda1c, 0x5b48 + + .globl gUnknown_82E3564 +gUnknown_82E3564: @ 0x82E3564 + .incbin "baserom_jp.gba", 0x2e3564, 0x2d8 + + .globl gUnknown_82E383C +gUnknown_82E383C: @ 0x82E383C + .incbin "baserom_jp.gba", 0x2e383c, 0x4 + + .globl gUnknown_82E3840 +gUnknown_82E3840: @ 0x82E3840 + .incbin "baserom_jp.gba", 0x2e3840, 0x6 + + .globl gUnknown_82E3846 +gUnknown_82E3846: @ 0x82E3846 + .incbin "baserom_jp.gba", 0x2e3846, 0x647a + + .globl gUnknown_82E9CC0 +gUnknown_82E9CC0: @ 0x82E9CC0 + .incbin "baserom_jp.gba", 0x2e9cc0, 0x40 + + .globl gUnknown_82E9D00 +gUnknown_82E9D00: @ 0x82E9D00 + .incbin "baserom_jp.gba", 0x2e9d00, 0x61c + + .globl gUnknown_82EA31C +gUnknown_82EA31C: @ 0x82EA31C + .incbin "baserom_jp.gba", 0x2ea31c, 0x9a8 + + .globl gUnknown_82EACC4 +gUnknown_82EACC4: @ 0x82EACC4 + .incbin "baserom_jp.gba", 0x2eacc4, 0xb64 + + .globl gUnknown_82EB828 +gUnknown_82EB828: @ 0x82EB828 + .incbin "baserom_jp.gba", 0x2eb828, 0x18 + + .globl gUnknown_82EB840 +gUnknown_82EB840: @ 0x82EB840 + .incbin "baserom_jp.gba", 0x2eb840, 0x18 + + .globl gUnknown_82EB858 +gUnknown_82EB858: @ 0x82EB858 + .incbin "baserom_jp.gba", 0x2eb858, 0x8 + + .globl gUnknown_82EB860 +gUnknown_82EB860: @ 0x82EB860 + .incbin "baserom_jp.gba", 0x2eb860, 0x198 + + .globl gUnknown_82EB9F8 +gUnknown_82EB9F8: @ 0x82EB9F8 + .incbin "baserom_jp.gba", 0x2eb9f8, 0x8 + + .globl gUnknown_82EBA00 +gUnknown_82EBA00: @ 0x82EBA00 + .incbin "baserom_jp.gba", 0x2eba00, 0xc8 + + .globl gUnknown_82EBAC8 +gUnknown_82EBAC8: @ 0x82EBAC8 + .incbin "baserom_jp.gba", 0x2ebac8, 0x18 + + .globl gUnknown_82EBAE0 +gUnknown_82EBAE0: @ 0x82EBAE0 + .incbin "baserom_jp.gba", 0x2ebae0, 0x50 + + .globl gUnknown_82EBB30 +gUnknown_82EBB30: @ 0x82EBB30 + .incbin "baserom_jp.gba", 0x2ebb30, 0x8 + + .globl gUnknown_82EBB38 +gUnknown_82EBB38: @ 0x82EBB38 + .incbin "baserom_jp.gba", 0x2ebb38, 0x150 + + .globl gUnknown_82EBC88 +gUnknown_82EBC88: @ 0x82EBC88 + .incbin "baserom_jp.gba", 0x2ebc88, 0x5c + + .globl gUnknown_82EBCE4 +gUnknown_82EBCE4: @ 0x82EBCE4 + .incbin "baserom_jp.gba", 0x2ebce4, 0xe0 + + .globl gUnknown_82EBDC4 +gUnknown_82EBDC4: @ 0x82EBDC4 + .incbin "baserom_jp.gba", 0x2ebdc4, 0x270 + + .globl gUnknown_82EC034 +gUnknown_82EC034: @ 0x82EC034 + .incbin "baserom_jp.gba", 0x2ec034, 0x5cc + + .globl gUnknown_82EC600 +gUnknown_82EC600: @ 0x82EC600 + .incbin "baserom_jp.gba", 0x2ec600, 0x38 + + .globl gUnknown_82EC638 +gUnknown_82EC638: @ 0x82EC638 + .incbin "baserom_jp.gba", 0x2ec638, 0x2c + + .globl gUnknown_82EC664 +gUnknown_82EC664: @ 0x82EC664 + .incbin "baserom_jp.gba", 0x2ec664, 0xf + + .globl gUnknown_82EC673 +gUnknown_82EC673: @ 0x82EC673 + .incbin "baserom_jp.gba", 0x2ec673, 0x4 + + .globl gUnknown_82EC677 +gUnknown_82EC677: @ 0x82EC677 + .incbin "baserom_jp.gba", 0x2ec677, 0x5 + + .globl gUnknown_82EC67C +gUnknown_82EC67C: @ 0x82EC67C + .incbin "baserom_jp.gba", 0x2ec67c, 0x18 + + .globl gUnknown_82EC694 +gUnknown_82EC694: @ 0x82EC694 + .incbin "baserom_jp.gba", 0x2ec694, 0x3e4 + + .globl gUnknown_82ECA78 +gUnknown_82ECA78: @ 0x82ECA78 + .incbin "baserom_jp.gba", 0x2eca78, 0x34 + + .globl gUnknown_82ECAAC +gUnknown_82ECAAC: @ 0x82ECAAC + .incbin "baserom_jp.gba", 0x2ecaac, 0xc + + .globl gUnknown_82ECAB8 +gUnknown_82ECAB8: @ 0x82ECAB8 + .incbin "baserom_jp.gba", 0x2ecab8, 0xf0 + + .globl gUnknown_82ECBA8 +gUnknown_82ECBA8: @ 0x82ECBA8 + .incbin "baserom_jp.gba", 0x2ecba8, 0xa4 + + .globl gUnknown_82ECC4C +gUnknown_82ECC4C: @ 0x82ECC4C + .incbin "baserom_jp.gba", 0x2ecc4c, 0x20 + + .globl gUnknown_82ECC6C +gUnknown_82ECC6C: @ 0x82ECC6C + .incbin "baserom_jp.gba", 0x2ecc6c, 0xd8 + + .globl gUnknown_82ECD44 +gUnknown_82ECD44: @ 0x82ECD44 + .incbin "baserom_jp.gba", 0x2ecd44, 0x18 + + .globl gUnknown_82ECD5C +gUnknown_82ECD5C: @ 0x82ECD5C + .incbin "baserom_jp.gba", 0x2ecd5c, 0x8 + + .globl gUnknown_82ECD64 +gUnknown_82ECD64: @ 0x82ECD64 + .incbin "baserom_jp.gba", 0x2ecd64, 0x28 + + .globl gUnknown_82ECD8C +gUnknown_82ECD8C: @ 0x82ECD8C + .incbin "baserom_jp.gba", 0x2ecd8c, 0xc + + .globl gUnknown_82ECD98 +gUnknown_82ECD98: @ 0x82ECD98 + .incbin "baserom_jp.gba", 0x2ecd98, 0x14 + + .globl gUnknown_82ECDAC +gUnknown_82ECDAC: @ 0x82ECDAC + .incbin "baserom_jp.gba", 0x2ecdac, 0x18 + + .globl gUnknown_82ECDC4 +gUnknown_82ECDC4: @ 0x82ECDC4 + .incbin "baserom_jp.gba", 0x2ecdc4, 0x24 + + .globl gUnknown_82ECDE8 +gUnknown_82ECDE8: @ 0x82ECDE8 + .incbin "baserom_jp.gba", 0x2ecde8, 0x16 + + .globl gUnknown_82ECDFE +gUnknown_82ECDFE: @ 0x82ECDFE + .incbin "baserom_jp.gba", 0x2ecdfe, 0x9 + + .globl gUnknown_82ECE07 +gUnknown_82ECE07: @ 0x82ECE07 + .incbin "baserom_jp.gba", 0x2ece07, 0xa + + .globl gUnknown_82ECE11 +gUnknown_82ECE11: @ 0x82ECE11 + .incbin "baserom_jp.gba", 0x2ece11, 0x7 + + .globl gUnknown_82ECE18 +gUnknown_82ECE18: @ 0x82ECE18 + .incbin "baserom_jp.gba", 0x2ece18, 0x64 + + .globl gUnknown_82ECE7C +gUnknown_82ECE7C: @ 0x82ECE7C + .incbin "baserom_jp.gba", 0x2ece7c, 0x20 + + .globl gUnknown_82ECE9C +gUnknown_82ECE9C: @ 0x82ECE9C + .incbin "baserom_jp.gba", 0x2ece9c, 0xe4 + + .globl gUnknown_82ECF80 +gUnknown_82ECF80: @ 0x82ECF80 + .incbin "baserom_jp.gba", 0x2ecf80, 0xc + + .globl gUnknown_82ECF8C +gUnknown_82ECF8C: @ 0x82ECF8C + .incbin "baserom_jp.gba", 0x2ecf8c, 0x1c + + .globl gUnknown_82ECFA8 +gUnknown_82ECFA8: @ 0x82ECFA8 + .incbin "baserom_jp.gba", 0x2ecfa8, 0x8 + + .globl gUnknown_82ECFB0 +gUnknown_82ECFB0: @ 0x82ECFB0 + .incbin "baserom_jp.gba", 0x2ecfb0, 0x60 + + .globl gUnknown_82ED010 +gUnknown_82ED010: @ 0x82ED010 + .incbin "baserom_jp.gba", 0x2ed010, 0x18 + + .globl gUnknown_82ED028 +gUnknown_82ED028: @ 0x82ED028 + .incbin "baserom_jp.gba", 0x2ed028, 0x10 + + .globl gUnknown_82ED038 +gUnknown_82ED038: @ 0x82ED038 + .incbin "baserom_jp.gba", 0x2ed038, 0x18 + + .globl gUnknown_82ED050 +gUnknown_82ED050: @ 0x82ED050 + .incbin "baserom_jp.gba", 0x2ed050, 0xec + + .globl gUnknown_82ED13C +gUnknown_82ED13C: @ 0x82ED13C + .incbin "baserom_jp.gba", 0x2ed13c, 0xe4 + + .globl gUnknown_82ED220 +gUnknown_82ED220: @ 0x82ED220 + .incbin "baserom_jp.gba", 0x2ed220, 0x4 + + .globl gUnknown_82ED224 +gUnknown_82ED224: @ 0x82ED224 + .incbin "baserom_jp.gba", 0x2ed224, 0x10b0 + + .globl gUnknown_82EE2D4 +gUnknown_82EE2D4: @ 0x82EE2D4 + .incbin "baserom_jp.gba", 0x2ee2d4, 0x336 + + .globl gUnknown_82EE60A +gUnknown_82EE60A: @ 0x82EE60A + .incbin "baserom_jp.gba", 0x2ee60a, 0x336 + + .globl gUnknown_82EE940 +gUnknown_82EE940: @ 0x82EE940 + .incbin "baserom_jp.gba", 0x2ee940, 0x338 + + .globl gUnknown_82EEC78 +gUnknown_82EEC78: @ 0x82EEC78 + .incbin "baserom_jp.gba", 0x2eec78, 0x2 + + .globl gUnknown_82EEC7A +gUnknown_82EEC7A: @ 0x82EEC7A + .incbin "baserom_jp.gba", 0x2eec7a, 0x29a + + .globl gUnknown_82EEF14 +gUnknown_82EEF14: @ 0x82EEF14 + .incbin "baserom_jp.gba", 0x2eef14, 0x28c + + .globl gUnknown_82EF1A0 +gUnknown_82EF1A0: @ 0x82EF1A0 + .incbin "baserom_jp.gba", 0x2ef1a0, 0x80 + + .globl gUnknown_82EF220 +gUnknown_82EF220: @ 0x82EF220 + .incbin "baserom_jp.gba", 0x2ef220, 0xce0 + + .globl gUnknown_82EFF00 +gUnknown_82EFF00: @ 0x82EFF00 + .incbin "baserom_jp.gba", 0x2eff00, 0x52 + + .globl gUnknown_82EFF52 +gUnknown_82EFF52: @ 0x82EFF52 + .incbin "baserom_jp.gba", 0x2eff52, 0x52 + + .globl gUnknown_82EFFA4 +gUnknown_82EFFA4: @ 0x82EFFA4 + .incbin "baserom_jp.gba", 0x2effa4, 0x110 + + .globl gUnknown_82F00B4 +gUnknown_82F00B4: @ 0x82F00B4 + .incbin "baserom_jp.gba", 0x2f00b4, 0xca0 + + .globl gUnknown_82F0D54 +gUnknown_82F0D54: @ 0x82F0D54 + .incbin "baserom_jp.gba", 0x2f0d54, 0xc + + .globl gUnknown_82F0D60 +gUnknown_82F0D60: @ 0x82F0D60 + .incbin "baserom_jp.gba", 0x2f0d60, 0x2 + + .globl gUnknown_82F0D62 +gUnknown_82F0D62: @ 0x82F0D62 + .incbin "baserom_jp.gba", 0x2f0d62, 0x3 + + .globl gUnknown_82F0D65 +gUnknown_82F0D65: @ 0x82F0D65 + .incbin "baserom_jp.gba", 0x2f0d65, 0x4f3f + + .globl gUnknown_82F5CA4 +gUnknown_82F5CA4: @ 0x82F5CA4 + .incbin "baserom_jp.gba", 0x2f5ca4, 0x4060 + + .globl gUnknown_82F9D04 +gUnknown_82F9D04: @ 0x82F9D04 + .incbin "baserom_jp.gba", 0x2f9d04, 0x670 + + .globl gUnknown_82FA374 +gUnknown_82FA374: @ 0x82FA374 + .incbin "baserom_jp.gba", 0x2fa374, 0x19b + + .globl gUnknown_82FA50F +gUnknown_82FA50F: @ 0x82FA50F + .incbin "baserom_jp.gba", 0x2fa50f, 0x19b + + .globl gUnknown_82FA6AA +gUnknown_82FA6AA: @ 0x82FA6AA + .incbin "baserom_jp.gba", 0x2fa6aa, 0x4 + + .globl gUnknown_82FA6AE +gUnknown_82FA6AE: @ 0x82FA6AE + .incbin "baserom_jp.gba", 0x2fa6ae, 0x4 + + .globl gUnknown_82FA6B2 +gUnknown_82FA6B2: @ 0x82FA6B2 + .incbin "baserom_jp.gba", 0x2fa6b2, 0x4 + + .globl gUnknown_82FA6B6 +gUnknown_82FA6B6: @ 0x82FA6B6 + .incbin "baserom_jp.gba", 0x2fa6b6, 0x20 + + .globl gUnknown_82FA6D6 +gUnknown_82FA6D6: @ 0x82FA6D6 + .incbin "baserom_jp.gba", 0x2fa6d6, 0xc + + .globl gUnknown_82FA6E2 +gUnknown_82FA6E2: @ 0x82FA6E2 + .incbin "baserom_jp.gba", 0x2fa6e2, 0x20 + + .globl gUnknown_82FA702 +gUnknown_82FA702: @ 0x82FA702 + .incbin "baserom_jp.gba", 0x2fa702, 0x22 + + .globl gUnknown_82FA724 +gUnknown_82FA724: @ 0x82FA724 + .incbin "baserom_jp.gba", 0x2fa724, 0x60 + + .globl gUnknown_82FA784 +gUnknown_82FA784: @ 0x82FA784 + .incbin "baserom_jp.gba", 0x2fa784, 0xc0 + + .globl gUnknown_82FA844 +gUnknown_82FA844: @ 0x82FA844 + .incbin "baserom_jp.gba", 0x2fa844, 0xa + + .globl gUnknown_82FA84E +gUnknown_82FA84E: @ 0x82FA84E + .incbin "baserom_jp.gba", 0x2fa84e, 0x6 + + .globl gUnknown_82FA854 +gUnknown_82FA854: @ 0x82FA854 + .incbin "baserom_jp.gba", 0x2fa854, 0x6 + + .globl gUnknown_82FA85A +gUnknown_82FA85A: @ 0x82FA85A + .incbin "baserom_jp.gba", 0x2fa85a, 0x1c + + .globl gUnknown_82FA876 +gUnknown_82FA876: @ 0x82FA876 + .incbin "baserom_jp.gba", 0x2fa876, 0x12 + + .globl gUnknown_82FA888 +gUnknown_82FA888: @ 0x82FA888 + .incbin "baserom_jp.gba", 0x2fa888, 0x2 + + .globl gUnknown_82FA88A +gUnknown_82FA88A: @ 0x82FA88A + .incbin "baserom_jp.gba", 0x2fa88a, 0x2a + + .globl gUnknown_82FA8B4 +gUnknown_82FA8B4: @ 0x82FA8B4 + .incbin "baserom_jp.gba", 0x2fa8b4, 0x18 + + .globl gUnknown_82FA8CC +gUnknown_82FA8CC: @ 0x82FA8CC + .incbin "baserom_jp.gba", 0x2fa8cc, 0x280 + + .globl gUnknown_82FAB4C +gUnknown_82FAB4C: @ 0x82FAB4C + .incbin "baserom_jp.gba", 0x2fab4c, 0x168 + + .globl gUnknown_82FACB4 +gUnknown_82FACB4: @ 0x82FACB4 + .incbin "baserom_jp.gba", 0x2facb4, 0x80 + + .globl gUnknown_82FAD34 +gUnknown_82FAD34: @ 0x82FAD34 + .incbin "baserom_jp.gba", 0x2fad34, 0x18 + + .globl gUnknown_82FAD4C +gUnknown_82FAD4C: @ 0x82FAD4C + .incbin "baserom_jp.gba", 0x2fad4c, 0x18 + + .globl gUnknown_82FAD64 +gUnknown_82FAD64: @ 0x82FAD64 + .incbin "baserom_jp.gba", 0x2fad64, 0xa00 + + .globl gUnknown_82FB764 +gUnknown_82FB764: @ 0x82FB764 + .incbin "baserom_jp.gba", 0x2fb764, 0x8e8 + + .globl gUnknown_82FC04C +gUnknown_82FC04C: @ 0x82FC04C + .incbin "baserom_jp.gba", 0x2fc04c, 0x20 + + .globl gUnknown_82FC06C +gUnknown_82FC06C: @ 0x82FC06C + .incbin "baserom_jp.gba", 0x2fc06c, 0x7c + + .globl gUnknown_82FC0E8 +gUnknown_82FC0E8: @ 0x82FC0E8 + .incbin "baserom_jp.gba", 0x2fc0e8, 0x10 + + .globl gUnknown_82FC0F8 +gUnknown_82FC0F8: @ 0x82FC0F8 + .incbin "baserom_jp.gba", 0x2fc0f8, 0x2 + + .globl gUnknown_82FC0FA +gUnknown_82FC0FA: @ 0x82FC0FA + .incbin "baserom_jp.gba", 0x2fc0fa, 0x4 + + .globl gUnknown_82FC0FE +gUnknown_82FC0FE: @ 0x82FC0FE + .incbin "baserom_jp.gba", 0x2fc0fe, 0x8de + + .globl gUnknown_82FC9DC +gUnknown_82FC9DC: @ 0x82FC9DC + .incbin "baserom_jp.gba", 0x2fc9dc, 0x8 + + .globl gUnknown_82FC9E4 +gUnknown_82FC9E4: @ 0x82FC9E4 + .incbin "baserom_jp.gba", 0x2fc9e4, 0x8 + + .globl gUnknown_82FC9EC +gUnknown_82FC9EC: @ 0x82FC9EC + .incbin "baserom_jp.gba", 0x2fc9ec, 0x8 + + .globl gUnknown_82FC9F4 +gUnknown_82FC9F4: @ 0x82FC9F4 + .incbin "baserom_jp.gba", 0x2fc9f4, 0x50 + + .globl gUnknown_82FCA44 +gUnknown_82FCA44: @ 0x82FCA44 + .incbin "baserom_jp.gba", 0x2fca44, 0x18 + + .globl gUnknown_82FCA5C +gUnknown_82FCA5C: @ 0x82FCA5C + .incbin "baserom_jp.gba", 0x2fca5c, 0x8 + + .globl gUnknown_82FCA64 +gUnknown_82FCA64: @ 0x82FCA64 + .incbin "baserom_jp.gba", 0x2fca64, 0x10 + + .globl gUnknown_82FCA74 +gUnknown_82FCA74: @ 0x82FCA74 + .incbin "baserom_jp.gba", 0x2fca74, 0x8 + + .globl gUnknown_82FCA7C +gUnknown_82FCA7C: @ 0x82FCA7C + .incbin "baserom_jp.gba", 0x2fca7c, 0x4c + + .globl gUnknown_82FCAC8 +gUnknown_82FCAC8: @ 0x82FCAC8 + .incbin "baserom_jp.gba", 0x2fcac8, 0x8 + + .globl gUnknown_82FCAD0 +gUnknown_82FCAD0: @ 0x82FCAD0 + .incbin "baserom_jp.gba", 0x2fcad0, 0x8 + + .globl gUnknown_82FCAD8 +gUnknown_82FCAD8: @ 0x82FCAD8 + .incbin "baserom_jp.gba", 0x2fcad8, 0x8 + + .globl gUnknown_82FCAE0 +gUnknown_82FCAE0: @ 0x82FCAE0 + .incbin "baserom_jp.gba", 0x2fcae0, 0x8 + + .globl gUnknown_82FCAE8 +gUnknown_82FCAE8: @ 0x82FCAE8 + .incbin "baserom_jp.gba", 0x2fcae8, 0x8 + + .globl gUnknown_82FCAF0 +gUnknown_82FCAF0: @ 0x82FCAF0 + .incbin "baserom_jp.gba", 0x2fcaf0, 0x8 + + .globl gUnknown_82FCAF8 +gUnknown_82FCAF8: @ 0x82FCAF8 + .incbin "baserom_jp.gba", 0x2fcaf8, 0x8 + + .globl gUnknown_82FCB00 +gUnknown_82FCB00: @ 0x82FCB00 + .incbin "baserom_jp.gba", 0x2fcb00, 0x20 + + .globl gUnknown_82FCB20 +gUnknown_82FCB20: @ 0x82FCB20 + .incbin "baserom_jp.gba", 0x2fcb20, 0x18 + + .globl gUnknown_82FCB38 +gUnknown_82FCB38: @ 0x82FCB38 + .incbin "baserom_jp.gba", 0x2fcb38, 0x30 + + .globl gUnknown_82FCB68 +gUnknown_82FCB68: @ 0x82FCB68 + .incbin "baserom_jp.gba", 0x2fcb68, 0x30 + + .globl gUnknown_82FCB98 +gUnknown_82FCB98: @ 0x82FCB98 + .incbin "baserom_jp.gba", 0x2fcb98, 0x20 + + .globl gUnknown_82FCBB8 +gUnknown_82FCBB8: @ 0x82FCBB8 + .incbin "baserom_jp.gba", 0x2fcbb8, 0xcc + + .globl gUnknown_82FCC84 +gUnknown_82FCC84: @ 0x82FCC84 + .incbin "baserom_jp.gba", 0x2fcc84, 0x38 + + .globl gUnknown_82FCCBC +gUnknown_82FCCBC: @ 0x82FCCBC + .incbin "baserom_jp.gba", 0x2fccbc, 0x8 + + .globl gUnknown_82FCCC4 +gUnknown_82FCCC4: @ 0x82FCCC4 + .incbin "baserom_jp.gba", 0x2fccc4, 0x68 + + .globl gUnknown_82FCD2C +gUnknown_82FCD2C: @ 0x82FCD2C + .incbin "baserom_jp.gba", 0x2fcd2c, 0x8 + + .globl gUnknown_82FCD34 +gUnknown_82FCD34: @ 0x82FCD34 + .incbin "baserom_jp.gba", 0x2fcd34, 0x8 + + .globl gUnknown_82FCD3C +gUnknown_82FCD3C: @ 0x82FCD3C + .incbin "baserom_jp.gba", 0x2fcd3c, 0x8 + + .globl gUnknown_82FCD44 +gUnknown_82FCD44: @ 0x82FCD44 + .incbin "baserom_jp.gba", 0x2fcd44, 0x18 + + .globl gUnknown_82FCD5C +gUnknown_82FCD5C: @ 0x82FCD5C + .incbin "baserom_jp.gba", 0x2fcd5c, 0x30 + + .globl gUnknown_82FCD8C +gUnknown_82FCD8C: @ 0x82FCD8C + .incbin "baserom_jp.gba", 0x2fcd8c, 0x30 + + .globl gUnknown_82FCDBC +gUnknown_82FCDBC: @ 0x82FCDBC + .incbin "baserom_jp.gba", 0x2fcdbc, 0x1e + + .globl gUnknown_82FCDDA +gUnknown_82FCDDA: @ 0x82FCDDA + .incbin "baserom_jp.gba", 0x2fcdda, 0x14 + + .globl gUnknown_82FCDEE +gUnknown_82FCDEE: @ 0x82FCDEE + .incbin "baserom_jp.gba", 0x2fcdee, 0x14 + + .globl gUnknown_82FCE02 +gUnknown_82FCE02: @ 0x82FCE02 + .incbin "baserom_jp.gba", 0x2fce02, 0xa + + .globl gUnknown_82FCE0C +gUnknown_82FCE0C: @ 0x82FCE0C + .incbin "baserom_jp.gba", 0x2fce0c, 0x60 + + .globl gUnknown_82FCE6C +gUnknown_82FCE6C: @ 0x82FCE6C + .incbin "baserom_jp.gba", 0x2fce6c, 0x128 + + .globl gUnknown_82FCF94 +gUnknown_82FCF94: @ 0x82FCF94 + .incbin "baserom_jp.gba", 0x2fcf94, 0x138 + + .globl gUnknown_82FD0CC +gUnknown_82FD0CC: @ 0x82FD0CC + .incbin "baserom_jp.gba", 0x2fd0cc, 0x80 + + .globl gUnknown_82FD14C +gUnknown_82FD14C: @ 0x82FD14C + .incbin "baserom_jp.gba", 0x2fd14c, 0x1280 + + .globl gUnknown_82FE3CC +gUnknown_82FE3CC: @ 0x82FE3CC + .incbin "baserom_jp.gba", 0x2fe3cc, 0x800 + + .globl gUnknown_82FEBCC +gUnknown_82FEBCC: @ 0x82FEBCC + .incbin "baserom_jp.gba", 0x2febcc, 0x1fe + + .globl gUnknown_82FEDCA +gUnknown_82FEDCA: @ 0x82FEDCA + .incbin "baserom_jp.gba", 0x2fedca, 0x1fe + + .globl gUnknown_82FEFC8 +gUnknown_82FEFC8: @ 0x82FEFC8 + .incbin "baserom_jp.gba", 0x2fefc8, 0x800 + + .globl gUnknown_82FF7C8 +gUnknown_82FF7C8: @ 0x82FF7C8 + .incbin "baserom_jp.gba", 0x2ff7c8, 0x800 + + .globl gUnknown_82FFFC8 +gUnknown_82FFFC8: @ 0x82FFFC8 + .incbin "baserom_jp.gba", 0x2fffc8, 0x86c + + .globl gUnknown_8300834 +gUnknown_8300834: @ 0x8300834 + .incbin "baserom_jp.gba", 0x300834, 0x8 + + .globl gUnknown_830083C +gUnknown_830083C: @ 0x830083C + .incbin "baserom_jp.gba", 0x30083c, 0x50 + + .globl gUnknown_830088C +gUnknown_830088C: @ 0x830088C + .incbin "baserom_jp.gba", 0x30088c, 0x18 + + .globl gUnknown_83008A4 +gUnknown_83008A4: @ 0x83008A4 + .incbin "baserom_jp.gba", 0x3008a4, 0x38 + + .globl gUnknown_83008DC +gUnknown_83008DC: @ 0x83008DC + .incbin "baserom_jp.gba", 0x3008dc, 0x8 + + .globl gUnknown_83008E4 +gUnknown_83008E4: @ 0x83008E4 + .incbin "baserom_jp.gba", 0x3008e4, 0x138 + + .globl gUnknown_8300A1C +gUnknown_8300A1C: @ 0x8300A1C + .incbin "baserom_jp.gba", 0x300a1c, 0x1a + + .globl gUnknown_8300A36 +gUnknown_8300A36: @ 0x8300A36 + .incbin "baserom_jp.gba", 0x300a36, 0x18 + + .globl gUnknown_8300A4E +gUnknown_8300A4E: @ 0x8300A4E + .incbin "baserom_jp.gba", 0x300a4e, 0x3c + + .globl gUnknown_8300A8A +gUnknown_8300A8A: @ 0x8300A8A + .incbin "baserom_jp.gba", 0x300a8a, 0xb + + .globl gUnknown_8300A95 +gUnknown_8300A95: @ 0x8300A95 + .incbin "baserom_jp.gba", 0x300a95, 0x2 + + .globl gUnknown_8300A97 +gUnknown_8300A97: @ 0x8300A97 + .incbin "baserom_jp.gba", 0x300a97, 0x2 + + .globl gUnknown_8300A99 +gUnknown_8300A99: @ 0x8300A99 + .incbin "baserom_jp.gba", 0x300a99, 0x2 + + .globl gUnknown_8300A9B +gUnknown_8300A9B: @ 0x8300A9B + .incbin "baserom_jp.gba", 0x300a9b, 0x3 + + .globl gUnknown_8300A9E +gUnknown_8300A9E: @ 0x8300A9E + .incbin "baserom_jp.gba", 0x300a9e, 0x2 + + .globl gUnknown_8300AA0 +gUnknown_8300AA0: @ 0x8300AA0 + .incbin "baserom_jp.gba", 0x300aa0, 0x2 + + .globl gUnknown_8300AA2 +gUnknown_8300AA2: @ 0x8300AA2 + .incbin "baserom_jp.gba", 0x300aa2, 0x3 + + .globl gUnknown_8300AA5 +gUnknown_8300AA5: @ 0x8300AA5 + .incbin "baserom_jp.gba", 0x300aa5, 0x4 + + .globl gUnknown_8300AA9 +gUnknown_8300AA9: @ 0x8300AA9 + .incbin "baserom_jp.gba", 0x300aa9, 0x5 + + .globl gUnknown_8300AAE +gUnknown_8300AAE: @ 0x8300AAE + .incbin "baserom_jp.gba", 0x300aae, 0x3 + + .globl gUnknown_8300AB1 +gUnknown_8300AB1: @ 0x8300AB1 + .incbin "baserom_jp.gba", 0x300ab1, 0x4b + + .globl gUnknown_8300AFC +gUnknown_8300AFC: @ 0x8300AFC + .incbin "baserom_jp.gba", 0x300afc, 0x2c + + .globl gUnknown_8300B28 +gUnknown_8300B28: @ 0x8300B28 + .incbin "baserom_jp.gba", 0x300b28, 0xb4 + + .globl gUnknown_8300BDC +gUnknown_8300BDC: @ 0x8300BDC + .incbin "baserom_jp.gba", 0x300bdc, 0x24 + + .globl gUnknown_8300C00 +gUnknown_8300C00: @ 0x8300C00 + .incbin "baserom_jp.gba", 0x300c00, 0x4 + + .globl gUnknown_8300C04 +gUnknown_8300C04: @ 0x8300C04 + .incbin "baserom_jp.gba", 0x300c04, 0x10 + + .globl gUnknown_8300C14 +gUnknown_8300C14: @ 0x8300C14 + .incbin "baserom_jp.gba", 0x300c14, 0x98 + + .globl gUnknown_8300CAC +gUnknown_8300CAC: @ 0x8300CAC + .incbin "baserom_jp.gba", 0x300cac, 0x94 + + .globl gUnknown_8300D40 +gUnknown_8300D40: @ 0x8300D40 + .incbin "baserom_jp.gba", 0x300d40, 0x2024 + + .globl gUnknown_8302D64 +gUnknown_8302D64: @ 0x8302D64 + .incbin "baserom_jp.gba", 0x302d64, 0x1fa0 + + .globl gUnknown_8304D04 +gUnknown_8304D04: @ 0x8304D04 + .incbin "baserom_jp.gba", 0x304d04, 0x1020 + + .globl gUnknown_8305D24 +gUnknown_8305D24: @ 0x8305D24 + .incbin "baserom_jp.gba", 0x305d24, 0x60 + + .globl gUnknown_8305D84 +gUnknown_8305D84: @ 0x8305D84 + .incbin "baserom_jp.gba", 0x305d84, 0x1420 + + .globl gUnknown_83071A4 +gUnknown_83071A4: @ 0x83071A4 + .incbin "baserom_jp.gba", 0x3071a4, 0x2840 + + .globl gUnknown_83099E4 +gUnknown_83099E4: @ 0x83099E4 + .incbin "baserom_jp.gba", 0x3099e4, 0x100 + + .globl gUnknown_8309AE4 +gUnknown_8309AE4: @ 0x8309AE4 + .incbin "baserom_jp.gba", 0x309ae4, 0x100 + + .globl gUnknown_8309BE4 +gUnknown_8309BE4: @ 0x8309BE4 + .incbin "baserom_jp.gba", 0x309be4, 0x1000 + + .globl gUnknown_830ABE4 +gUnknown_830ABE4: @ 0x830ABE4 + .incbin "baserom_jp.gba", 0x30abe4, 0x1000 + + .globl gUnknown_830BBE4 +gUnknown_830BBE4: @ 0x830BBE4 + .incbin "baserom_jp.gba", 0x30bbe4, 0x100 + + .globl gUnknown_830BCE4 +gUnknown_830BCE4: @ 0x830BCE4 + .incbin "baserom_jp.gba", 0x30bce4, 0x200 + + .globl gUnknown_830BEE4 +gUnknown_830BEE4: @ 0x830BEE4 + .incbin "baserom_jp.gba", 0x30bee4, 0x200 + + .globl gUnknown_830C0E4 +gUnknown_830C0E4: @ 0x830C0E4 + .incbin "baserom_jp.gba", 0x30c0e4, 0x20 + + .globl gUnknown_830C104 +gUnknown_830C104: @ 0x830C104 + .incbin "baserom_jp.gba", 0x30c104, 0x690 + + .globl gUnknown_830C794 +gUnknown_830C794: @ 0x830C794 + .incbin "baserom_jp.gba", 0x30c794, 0x7c8 + + .globl gUnknown_830CF5C +gUnknown_830CF5C: @ 0x830CF5C + .incbin "baserom_jp.gba", 0x30cf5c, 0x8 + + .globl gUnknown_830CF64 +gUnknown_830CF64: @ 0x830CF64 + .incbin "baserom_jp.gba", 0x30cf64, 0x8 + + .globl gUnknown_830CF6C +gUnknown_830CF6C: @ 0x830CF6C + .incbin "baserom_jp.gba", 0x30cf6c, 0x48 + + .globl gUnknown_830CFB4 +gUnknown_830CFB4: @ 0x830CFB4 + .incbin "baserom_jp.gba", 0x30cfb4, 0x8 + + .globl gUnknown_830CFBC +gUnknown_830CFBC: @ 0x830CFBC + .incbin "baserom_jp.gba", 0x30cfbc, 0x8 + + .globl gUnknown_830CFC4 +gUnknown_830CFC4: @ 0x830CFC4 + .incbin "baserom_jp.gba", 0x30cfc4, 0x8 + + .globl gUnknown_830CFCC +gUnknown_830CFCC: @ 0x830CFCC + .incbin "baserom_jp.gba", 0x30cfcc, 0x38 + + .globl gUnknown_830D004 +gUnknown_830D004: @ 0x830D004 + .incbin "baserom_jp.gba", 0x30d004, 0x8 + + .globl gUnknown_830D00C +gUnknown_830D00C: @ 0x830D00C + .incbin "baserom_jp.gba", 0x30d00c, 0x2c + + .globl gUnknown_830D038 +gUnknown_830D038: @ 0x830D038 + .incbin "baserom_jp.gba", 0x30d038, 0x8 + + .globl gUnknown_830D040 +gUnknown_830D040: @ 0x830D040 + .incbin "baserom_jp.gba", 0x30d040, 0x70 + + .globl gUnknown_830D0B0 +gUnknown_830D0B0: @ 0x830D0B0 + .incbin "baserom_jp.gba", 0x30d0b0, 0x8 + + .globl gUnknown_830D0B8 +gUnknown_830D0B8: @ 0x830D0B8 + .incbin "baserom_jp.gba", 0x30d0b8, 0x18 + + .globl gUnknown_830D0D0 +gUnknown_830D0D0: @ 0x830D0D0 + .incbin "baserom_jp.gba", 0x30d0d0, 0x18 + + .globl gUnknown_830D0E8 +gUnknown_830D0E8: @ 0x830D0E8 + .incbin "baserom_jp.gba", 0x30d0e8, 0x28 + + .globl gUnknown_830D110 +gUnknown_830D110: @ 0x830D110 + .incbin "baserom_jp.gba", 0x30d110, 0x4 + + .globl gUnknown_830D114 +gUnknown_830D114: @ 0x830D114 + .incbin "baserom_jp.gba", 0x30d114, 0xf0 + + .globl gUnknown_830D204 +gUnknown_830D204: @ 0x830D204 + .incbin "baserom_jp.gba", 0x30d204, 0x3c + + .globl gUnknown_830D240 +gUnknown_830D240: @ 0x830D240 + .incbin "baserom_jp.gba", 0x30d240, 0xf + + .globl gUnknown_830D24F +gUnknown_830D24F: @ 0x830D24F + .incbin "baserom_jp.gba", 0x30d24f, 0x9 + + .globl gUnknown_830D258 +gUnknown_830D258: @ 0x830D258 + .incbin "baserom_jp.gba", 0x30d258, 0x12 + + .globl gUnknown_830D26A +gUnknown_830D26A: @ 0x830D26A + .incbin "baserom_jp.gba", 0x30d26a, 0x12 + + .globl gUnknown_830D27C +gUnknown_830D27C: @ 0x830D27C + .incbin "baserom_jp.gba", 0x30d27c, 0x10 + + .globl gUnknown_830D28C +gUnknown_830D28C: @ 0x830D28C + .incbin "baserom_jp.gba", 0x30d28c, 0x8 + + .globl gUnknown_830D294 +gUnknown_830D294: @ 0x830D294 + .incbin "baserom_jp.gba", 0x30d294, 0x10 + + .globl gUnknown_830D2A4 +gUnknown_830D2A4: @ 0x830D2A4 + .incbin "baserom_jp.gba", 0x30d2a4, 0x6c + + .globl gUnknown_830D310 +gUnknown_830D310: @ 0x830D310 + .incbin "baserom_jp.gba", 0x30d310, 0x44 + + .globl gUnknown_830D354 +gUnknown_830D354: @ 0x830D354 + .incbin "baserom_jp.gba", 0x30d354, 0x20 + + .globl gUnknown_830D374 +gUnknown_830D374: @ 0x830D374 + .incbin "baserom_jp.gba", 0x30d374, 0x400 + + .globl gUnknown_830D774 +gUnknown_830D774: @ 0x830D774 + .incbin "baserom_jp.gba", 0x30d774, 0x1f3a + + .globl gUnknown_830F6AE +gUnknown_830F6AE: @ 0x830F6AE + .incbin "baserom_jp.gba", 0x30f6ae, 0x4d + + .globl gUnknown_830F6FB +gUnknown_830F6FB: @ 0x830F6FB + .incbin "baserom_jp.gba", 0x30f6fb, 0x2 + + .globl gUnknown_830F6FD +gUnknown_830F6FD: @ 0x830F6FD + .incbin "baserom_jp.gba", 0x30f6fd, 0x51 + + .globl gUnknown_830F74E +gUnknown_830F74E: @ 0x830F74E + .incbin "baserom_jp.gba", 0x30f74e, 0x12 + + .globl gUnknown_830F760 +gUnknown_830F760: @ 0x830F760 + .incbin "baserom_jp.gba", 0x30f760, 0x6 + + .globl gUnknown_830F766 +gUnknown_830F766: @ 0x830F766 + .incbin "baserom_jp.gba", 0x30f766, 0x6 + + .globl gUnknown_830F76C +gUnknown_830F76C: @ 0x830F76C + .incbin "baserom_jp.gba", 0x30f76c, 0x22 + + .globl gUnknown_830F78E +gUnknown_830F78E: @ 0x830F78E + .incbin "baserom_jp.gba", 0x30f78e, 0xd + + .globl gUnknown_830F79B +gUnknown_830F79B: @ 0x830F79B + .incbin "baserom_jp.gba", 0x30f79b, 0x17 + + .globl gUnknown_830F7B2 +gUnknown_830F7B2: @ 0x830F7B2 + .incbin "baserom_jp.gba", 0x30f7b2, 0x26 + + .globl gUnknown_830F7D8 +gUnknown_830F7D8: @ 0x830F7D8 + .incbin "baserom_jp.gba", 0x30f7d8, 0x15 + + .globl gUnknown_830F7ED +gUnknown_830F7ED: @ 0x830F7ED + .incbin "baserom_jp.gba", 0x30f7ed, 0x1b + + .globl gUnknown_830F808 +gUnknown_830F808: @ 0x830F808 + .incbin "baserom_jp.gba", 0x30f808, 0x17 + + .globl gUnknown_830F81F +gUnknown_830F81F: @ 0x830F81F + .incbin "baserom_jp.gba", 0x30f81f, 0xe + + .globl gUnknown_830F82D +gUnknown_830F82D: @ 0x830F82D + .incbin "baserom_jp.gba", 0x30f82d, 0x3 + + .globl gUnknown_830F830 +gUnknown_830F830: @ 0x830F830 + .incbin "baserom_jp.gba", 0x30f830, 0x4 + + .globl gUnknown_830F834 +gUnknown_830F834: @ 0x830F834 + .incbin "baserom_jp.gba", 0x30f834, 0x3 + + .globl gUnknown_830F837 +gUnknown_830F837: @ 0x830F837 + .incbin "baserom_jp.gba", 0x30f837, 0x4 + + .globl gUnknown_830F83B +gUnknown_830F83B: @ 0x830F83B + .incbin "baserom_jp.gba", 0x30f83b, 0x8 + + .globl gUnknown_830F843 +gUnknown_830F843: @ 0x830F843 + .incbin "baserom_jp.gba", 0x30f843, 0x4 + + .globl gUnknown_830F847 +gUnknown_830F847: @ 0x830F847 + .incbin "baserom_jp.gba", 0x30f847, 0x2 + + .globl gUnknown_830F849 +gUnknown_830F849: @ 0x830F849 + .incbin "baserom_jp.gba", 0x30f849, 0x4 + + .globl gUnknown_830F84D +gUnknown_830F84D: @ 0x830F84D + .incbin "baserom_jp.gba", 0x30f84d, 0x6 + + .globl gUnknown_830F853 +gUnknown_830F853: @ 0x830F853 + .incbin "baserom_jp.gba", 0x30f853, 0x4 + + .globl gUnknown_830F857 +gUnknown_830F857: @ 0x830F857 + .incbin "baserom_jp.gba", 0x30f857, 0x9 + + .globl gUnknown_830F860 +gUnknown_830F860: @ 0x830F860 + .incbin "baserom_jp.gba", 0x30f860, 0x4 + + .globl gUnknown_830F864 +gUnknown_830F864: @ 0x830F864 + .incbin "baserom_jp.gba", 0x30f864, 0xc + + .globl gUnknown_830F870 +gUnknown_830F870: @ 0x830F870 + .incbin "baserom_jp.gba", 0x30f870, 0x38 + + .globl gUnknown_830F8A8 +gUnknown_830F8A8: @ 0x830F8A8 + .incbin "baserom_jp.gba", 0x30f8a8, 0x8 + + .globl gUnknown_830F8B0 +gUnknown_830F8B0: @ 0x830F8B0 + .incbin "baserom_jp.gba", 0x30f8b0, 0x8 + + .globl gUnknown_830F8B8 +gUnknown_830F8B8: @ 0x830F8B8 + .incbin "baserom_jp.gba", 0x30f8b8, 0x8 + + .globl gUnknown_830F8C0 +gUnknown_830F8C0: @ 0x830F8C0 + .incbin "baserom_jp.gba", 0x30f8c0, 0xc + + .globl gUnknown_830F8CC +gUnknown_830F8CC: @ 0x830F8CC + .incbin "baserom_jp.gba", 0x30f8cc, 0x8 + + .globl gUnknown_830F8D4 +gUnknown_830F8D4: @ 0x830F8D4 + .incbin "baserom_jp.gba", 0x30f8d4, 0x3 + + .globl gUnknown_830F8D7 +gUnknown_830F8D7: @ 0x830F8D7 + .incbin "baserom_jp.gba", 0x30f8d7, 0x5 + + .globl gUnknown_830F8DC +gUnknown_830F8DC: @ 0x830F8DC + .incbin "baserom_jp.gba", 0x30f8dc, 0xd4 + + .globl gUnknown_830F9B0 +gUnknown_830F9B0: @ 0x830F9B0 + .incbin "baserom_jp.gba", 0x30f9b0, 0x8 + + .globl gUnknown_830F9B8 +gUnknown_830F9B8: @ 0x830F9B8 + .incbin "baserom_jp.gba", 0x30f9b8, 0x8 + + .globl gUnknown_830F9C0 +gUnknown_830F9C0: @ 0x830F9C0 + .incbin "baserom_jp.gba", 0x30f9c0, 0x8 + + .globl gUnknown_830F9C8 +gUnknown_830F9C8: @ 0x830F9C8 + .incbin "baserom_jp.gba", 0x30f9c8, 0x60 + + .globl gUnknown_830FA28 +gUnknown_830FA28: @ 0x830FA28 + .incbin "baserom_jp.gba", 0x30fa28, 0x8 + + .globl gUnknown_830FA30 +gUnknown_830FA30: @ 0x830FA30 + .incbin "baserom_jp.gba", 0x30fa30, 0x98 + + .globl gUnknown_830FAC8 +gUnknown_830FAC8: @ 0x830FAC8 + .incbin "baserom_jp.gba", 0x30fac8, 0x8 + + .globl gUnknown_830FAD0 +gUnknown_830FAD0: @ 0x830FAD0 + .incbin "baserom_jp.gba", 0x30fad0, 0x44 + + .globl gUnknown_830FB14 +gUnknown_830FB14: @ 0x830FB14 + .incbin "baserom_jp.gba", 0x30fb14, 0x8 + + .globl gUnknown_830FB1C +gUnknown_830FB1C: @ 0x830FB1C + .incbin "baserom_jp.gba", 0x30fb1c, 0x2c + + .globl gUnknown_830FB48 +gUnknown_830FB48: @ 0x830FB48 + .incbin "baserom_jp.gba", 0x30fb48, 0x8 + + .globl gUnknown_830FB50 +gUnknown_830FB50: @ 0x830FB50 + .incbin "baserom_jp.gba", 0x30fb50, 0x18 + + .globl gUnknown_830FB68 +gUnknown_830FB68: @ 0x830FB68 + .incbin "baserom_jp.gba", 0x30fb68, 0x28 + + .globl gUnknown_830FB90 +gUnknown_830FB90: @ 0x830FB90 + .incbin "baserom_jp.gba", 0x30fb90, 0x1e + + .globl gUnknown_830FBAE +gUnknown_830FBAE: @ 0x830FBAE + .incbin "baserom_jp.gba", 0x30fbae, 0x5 + + .globl gUnknown_830FBB3 +gUnknown_830FBB3: @ 0x830FBB3 + .incbin "baserom_jp.gba", 0x30fbb3, 0x5 + + .globl gUnknown_830FBB8 +gUnknown_830FBB8: @ 0x830FBB8 + .incbin "baserom_jp.gba", 0x30fbb8, 0x10 + + .globl gUnknown_830FBC8 +gUnknown_830FBC8: @ 0x830FBC8 + .incbin "baserom_jp.gba", 0x30fbc8, 0x61 + + .globl gUnknown_830FC29 +gUnknown_830FC29: @ 0x830FC29 + .incbin "baserom_jp.gba", 0x30fc29, 0x5 + + .globl gUnknown_830FC2E +gUnknown_830FC2E: @ 0x830FC2E + .incbin "baserom_jp.gba", 0x30fc2e, 0x5 + + .globl gUnknown_830FC33 +gUnknown_830FC33: @ 0x830FC33 + .incbin "baserom_jp.gba", 0x30fc33, 0x5 + + .globl gUnknown_830FC38 +gUnknown_830FC38: @ 0x830FC38 + .incbin "baserom_jp.gba", 0x30fc38, 0x18 + + .globl gUnknown_830FC50 +gUnknown_830FC50: @ 0x830FC50 + .incbin "baserom_jp.gba", 0x30fc50, 0x10 + + .globl gUnknown_830FC60 +gUnknown_830FC60: @ 0x830FC60 + .incbin "baserom_jp.gba", 0x30fc60, 0x8 + + .globl gUnknown_830FC68 +gUnknown_830FC68: @ 0x830FC68 + .incbin "baserom_jp.gba", 0x30fc68, 0x20 + + .globl gUnknown_830FC88 +gUnknown_830FC88: @ 0x830FC88 + .incbin "baserom_jp.gba", 0x30fc88, 0x28 + + .globl gUnknown_830FCB0 +gUnknown_830FCB0: @ 0x830FCB0 + .incbin "baserom_jp.gba", 0x30fcb0, 0x48 + + .globl gUnknown_830FCF8 +gUnknown_830FCF8: @ 0x830FCF8 + .incbin "baserom_jp.gba", 0x30fcf8, 0x10 + + .globl gUnknown_830FD08 +gUnknown_830FD08: @ 0x830FD08 + .incbin "baserom_jp.gba", 0x30fd08, 0xc + + .globl gUnknown_830FD14 +gUnknown_830FD14: @ 0x830FD14 + .incbin "baserom_jp.gba", 0x30fd14, 0xc + + .globl gUnknown_830FD20 +gUnknown_830FD20: @ 0x830FD20 + .incbin "baserom_jp.gba", 0x30fd20, 0x2c + + .globl gUnknown_830FD4C +gUnknown_830FD4C: @ 0x830FD4C + .incbin "baserom_jp.gba", 0x30fd4c, 0xa8348 + + .globl gUnknown_83B8094 +gUnknown_83B8094: @ 0x83B8094 + .incbin "baserom_jp.gba", 0x3b8094, 0x4 + + .globl gUnknown_83B8098 +gUnknown_83B8098: @ 0x83B8098 + .incbin "baserom_jp.gba", 0x3b8098, 0xa215c + + .globl gUnknown_845A1F4 +gUnknown_845A1F4: @ 0x845A1F4 + .incbin "baserom_jp.gba", 0x45a1f4, 0x47a4 + + .globl gUnknown_845E998 +gUnknown_845E998: @ 0x845E998 + .incbin "baserom_jp.gba", 0x45e998, 0x980 + + .globl gUnknown_845F318 +gUnknown_845F318: @ 0x845F318 + .incbin "baserom_jp.gba", 0x45f318, 0x4 + + .globl gUnknown_845F31C +gUnknown_845F31C: @ 0x845F31C + .incbin "baserom_jp.gba", 0x45f31c, 0x10090 + + .globl gUnknown_846F3AC +gUnknown_846F3AC: @ 0x846F3AC + .incbin "baserom_jp.gba", 0x46f3ac, 0x14 + + .globl gUnknown_846F3C0 +gUnknown_846F3C0: @ 0x846F3C0 + .incbin "baserom_jp.gba", 0x46f3c0, 0x14 + + .globl gUnknown_846F3D4 +gUnknown_846F3D4: @ 0x846F3D4 + .incbin "baserom_jp.gba", 0x46f3d4, 0x1c0 + + .globl gUnknown_846F594 +gUnknown_846F594: @ 0x846F594 + .incbin "baserom_jp.gba", 0x46f594, 0x288 + + .globl gUnknown_846F81C +gUnknown_846F81C: @ 0x846F81C + .incbin "baserom_jp.gba", 0x46f81c, 0x48 + + .globl gUnknown_846F864 +gUnknown_846F864: @ 0x846F864 + .incbin "baserom_jp.gba", 0x46f864, 0x4c + + .globl gUnknown_846F8B0 +gUnknown_846F8B0: @ 0x846F8B0 + .incbin "baserom_jp.gba", 0x46f8b0, 0xc + + .globl gUnknown_846F8BC +gUnknown_846F8BC: @ 0x846F8BC + .incbin "baserom_jp.gba", 0x46f8bc, 0x14 + + .globl gUnknown_846F8D0 +gUnknown_846F8D0: @ 0x846F8D0 + .incbin "baserom_jp.gba", 0x46f8d0, 0x8 + + .globl gUnknown_846F8D8 +gUnknown_846F8D8: @ 0x846F8D8 + .incbin "baserom_jp.gba", 0x46f8d8, 0x20 + + .globl gUnknown_846F8F8 +gUnknown_846F8F8: @ 0x846F8F8 + .incbin "baserom_jp.gba", 0x46f8f8, 0x10 + + .globl gUnknown_846F908 +gUnknown_846F908: @ 0x846F908 + .incbin "baserom_jp.gba", 0x46f908, 0x10 + + .globl gUnknown_846F918 +gUnknown_846F918: @ 0x846F918 + .incbin "baserom_jp.gba", 0x46f918, 0x10 + + .globl gUnknown_846F928 +gUnknown_846F928: @ 0x846F928 + .incbin "baserom_jp.gba", 0x46f928, 0x2 + + .globl gUnknown_846F92A +gUnknown_846F92A: @ 0x846F92A + .incbin "baserom_jp.gba", 0x46f92a, 0x2 + + .globl gUnknown_846F92C +gUnknown_846F92C: @ 0x846F92C + .incbin "baserom_jp.gba", 0x46f92c, 0x14 + + .globl gUnknown_846F940 +gUnknown_846F940: @ 0x846F940 + .incbin "baserom_jp.gba", 0x46f940, 0x10 + + .globl gUnknown_846F950 +gUnknown_846F950: @ 0x846F950 + .incbin "baserom_jp.gba", 0x46f950, 0xc + + .globl gUnknown_846F95C +gUnknown_846F95C: @ 0x846F95C + .incbin "baserom_jp.gba", 0x46f95c, 0x4 + + .globl gUnknown_846F960 +gUnknown_846F960: @ 0x846F960 + .incbin "baserom_jp.gba", 0x46f960, 0x10 + + .globl gUnknown_846F970 +gUnknown_846F970: @ 0x846F970 + .incbin "baserom_jp.gba", 0x46f970, 0x4 + + .globl gUnknown_846F974 +gUnknown_846F974: @ 0x846F974 + .incbin "baserom_jp.gba", 0x46f974, 0x8 + + .globl gUnknown_846F97C +gUnknown_846F97C: @ 0x846F97C + .incbin "baserom_jp.gba", 0x46f97c, 0x40 + + .globl gUnknown_846F9BC +gUnknown_846F9BC: @ 0x846F9BC + .incbin "baserom_jp.gba", 0x46f9bc, 0x6 + + .globl gUnknown_846F9C2 +gUnknown_846F9C2: @ 0x846F9C2 + .incbin "baserom_jp.gba", 0x46f9c2, 0x6 + + .globl gUnknown_846F9C8 +gUnknown_846F9C8: @ 0x846F9C8 + .incbin "baserom_jp.gba", 0x46f9c8, 0x2 + + .globl gUnknown_846F9CA +gUnknown_846F9CA: @ 0x846F9CA + .incbin "baserom_jp.gba", 0x46f9ca, 0xc + + .globl gUnknown_846F9D6 +gUnknown_846F9D6: @ 0x846F9D6 + .incbin "baserom_jp.gba", 0x46f9d6, 0x6 + + .globl gUnknown_846F9DC +gUnknown_846F9DC: @ 0x846F9DC + .incbin "baserom_jp.gba", 0x46f9dc, 0xc + + .globl gUnknown_846F9E8 +gUnknown_846F9E8: @ 0x846F9E8 + .incbin "baserom_jp.gba", 0x46f9e8, 0xf + + .globl gUnknown_846F9F7 +gUnknown_846F9F7: @ 0x846F9F7 + .incbin "baserom_jp.gba", 0x46f9f7, 0xc + + .globl gUnknown_846FA03 +gUnknown_846FA03: @ 0x846FA03 + .incbin "baserom_jp.gba", 0x46fa03, 0x10 + + .globl gUnknown_846FA13 +gUnknown_846FA13: @ 0x846FA13 + .incbin "baserom_jp.gba", 0x46fa13, 0x5 + + .globl gUnknown_846FA18 +gUnknown_846FA18: @ 0x846FA18 + .incbin "baserom_jp.gba", 0x46fa18, 0x10 + + .globl gUnknown_846FA28 +gUnknown_846FA28: @ 0x846FA28 + .incbin "baserom_jp.gba", 0x46fa28, 0x18 + + .globl gUnknown_846FA40 +gUnknown_846FA40: @ 0x846FA40 + .incbin "baserom_jp.gba", 0x46fa40, 0x120c + + .globl gUnknown_8470C4C +gUnknown_8470C4C: @ 0x8470C4C + .incbin "baserom_jp.gba", 0x470c4c, 0x1220 + + .globl gUnknown_8471E6C +gUnknown_8471E6C: @ 0x8471E6C + .incbin "baserom_jp.gba", 0x471e6c, 0xa860 + + .globl gUnknown_847C6CC +gUnknown_847C6CC: @ 0x847C6CC + .incbin "baserom_jp.gba", 0x47c6cc, 0x1240 + + .globl gUnknown_847D90C +gUnknown_847D90C: @ 0x847D90C + .incbin "baserom_jp.gba", 0x47d90c, 0x5ff80 + + .globl gUnknown_84DD88C +gUnknown_84DD88C: @ 0x84DD88C + .incbin "baserom_jp.gba", 0x4dd88c, 0x144 + + .globl gUnknown_84DD9D0 +gUnknown_84DD9D0: @ 0x84DD9D0 + .incbin "baserom_jp.gba", 0x4dd9d0, 0x51 + + .globl gUnknown_84DDA21 +gUnknown_84DDA21: @ 0x84DDA21 + .incbin "baserom_jp.gba", 0x4dda21, 0x53 + + .globl gUnknown_84DDA74 +gUnknown_84DDA74: @ 0x84DDA74 + .incbin "baserom_jp.gba", 0x4dda74, 0x3bc + + .globl gUnknown_84DDE30 +gUnknown_84DDE30: @ 0x84DDE30 + .incbin "baserom_jp.gba", 0x4dde30, 0x1c + + .globl gUnknown_84DDE4C +gUnknown_84DDE4C: @ 0x84DDE4C + .incbin "baserom_jp.gba", 0x4dde4c, 0x3ab4 + + .globl gUnknown_84E1900 +gUnknown_84E1900: @ 0x84E1900 + .incbin "baserom_jp.gba", 0x4e1900, 0x271c + + .globl gUnknown_84E401C +gUnknown_84E401C: @ 0x84E401C + .incbin "baserom_jp.gba", 0x4e401c, 0x138 + + .globl gUnknown_84E4154 +gUnknown_84E4154: @ 0x84E4154 + .incbin "baserom_jp.gba", 0x4e4154, 0x78 + + .globl gUnknown_84E41CC +gUnknown_84E41CC: @ 0x84E41CC + .incbin "baserom_jp.gba", 0x4e41cc, 0xc0 + + .globl gUnknown_84E428C +gUnknown_84E428C: @ 0x84E428C + .incbin "baserom_jp.gba", 0x4e428c, 0x978 + + .globl gUnknown_84E4C04 +gUnknown_84E4C04: @ 0x84E4C04 + .incbin "baserom_jp.gba", 0x4e4c04, 0xac + + .globl gUnknown_84E4CB0 +gUnknown_84E4CB0: @ 0x84E4CB0 + .incbin "baserom_jp.gba", 0x4e4cb0, 0xac + + .globl gUnknown_84E4D5C +gUnknown_84E4D5C: @ 0x84E4D5C + .incbin "baserom_jp.gba", 0x4e4d5c, 0xc0 + + .globl gUnknown_84E4E1C +gUnknown_84E4E1C: @ 0x84E4E1C + .incbin "baserom_jp.gba", 0x4e4e1c, 0xd14 + + .globl gUnknown_84E5B30 +gUnknown_84E5B30: @ 0x84E5B30 + .incbin "baserom_jp.gba", 0x4e5b30, 0x10 + + .globl gUnknown_84E5B40 +gUnknown_84E5B40: @ 0x84E5B40 + .incbin "baserom_jp.gba", 0x4e5b40, 0x8 + + .globl gUnknown_84E5B48 +gUnknown_84E5B48: @ 0x84E5B48 + .incbin "baserom_jp.gba", 0x4e5b48, 0x1c + + .globl gUnknown_84E5B64 +gUnknown_84E5B64: @ 0x84E5B64 + .incbin "baserom_jp.gba", 0x4e5b64, 0x4 + + .globl gUnknown_84E5B68 +gUnknown_84E5B68: @ 0x84E5B68 + .incbin "baserom_jp.gba", 0x4e5b68, 0x2c + + .globl gUnknown_84E5B94 +gUnknown_84E5B94: @ 0x84E5B94 + .incbin "baserom_jp.gba", 0x4e5b94, 0x14 + + .globl gUnknown_84E5BA8 +gUnknown_84E5BA8: @ 0x84E5BA8 + .incbin "baserom_jp.gba", 0x4e5ba8, 0x1c + + .globl gUnknown_84E5BC4 +gUnknown_84E5BC4: @ 0x84E5BC4 + .incbin "baserom_jp.gba", 0x4e5bc4, 0x4 + + .globl gUnknown_84E5BC8 +gUnknown_84E5BC8: @ 0x84E5BC8 + .incbin "baserom_jp.gba", 0x4e5bc8, 0x1c + + .globl gUnknown_84E5BE4 +gUnknown_84E5BE4: @ 0x84E5BE4 + .incbin "baserom_jp.gba", 0x4e5be4, 0x4 + + .globl gUnknown_84E5BE8 +gUnknown_84E5BE8: @ 0x84E5BE8 + .incbin "baserom_jp.gba", 0x4e5be8, 0xc + + .globl gUnknown_84E5BF4 +gUnknown_84E5BF4: @ 0x84E5BF4 + .incbin "baserom_jp.gba", 0x4e5bf4, 0x14 + + .globl gUnknown_84E5C08 +gUnknown_84E5C08: @ 0x84E5C08 + .incbin "baserom_jp.gba", 0x4e5c08, 0x14 + + .globl gUnknown_84E5C1C +gUnknown_84E5C1C: @ 0x84E5C1C + .incbin "baserom_jp.gba", 0x4e5c1c, 0x14 + + .globl gUnknown_84E5C30 +gUnknown_84E5C30: @ 0x84E5C30 + .incbin "baserom_jp.gba", 0x4e5c30, 0x14 + + .globl gUnknown_84E5C44 +gUnknown_84E5C44: @ 0x84E5C44 + .incbin "baserom_jp.gba", 0x4e5c44, 0x4 + + .globl gUnknown_84E5C48 +gUnknown_84E5C48: @ 0x84E5C48 + .incbin "baserom_jp.gba", 0x4e5c48, 0x14 + + .globl gUnknown_84E5C5C +gUnknown_84E5C5C: @ 0x84E5C5C + .incbin "baserom_jp.gba", 0x4e5c5c, 0x4 + + .globl gUnknown_84E5C60 +gUnknown_84E5C60: @ 0x84E5C60 + .incbin "baserom_jp.gba", 0x4e5c60, 0x14 + + .globl gUnknown_84E5C74 +gUnknown_84E5C74: @ 0x84E5C74 + .incbin "baserom_jp.gba", 0x4e5c74, 0x4 + + .globl gUnknown_84E5C78 +gUnknown_84E5C78: @ 0x84E5C78 + .incbin "baserom_jp.gba", 0x4e5c78, 0x14 + + .globl gUnknown_84E5C8C +gUnknown_84E5C8C: @ 0x84E5C8C + .incbin "baserom_jp.gba", 0x4e5c8c, 0x4 + + .globl gUnknown_84E5C90 +gUnknown_84E5C90: @ 0x84E5C90 + .incbin "baserom_jp.gba", 0x4e5c90, 0x14 + + .globl gUnknown_84E5CA4 +gUnknown_84E5CA4: @ 0x84E5CA4 + .incbin "baserom_jp.gba", 0x4e5ca4, 0x4 + + .globl gUnknown_84E5CA8 +gUnknown_84E5CA8: @ 0x84E5CA8 + .incbin "baserom_jp.gba", 0x4e5ca8, 0x14 + + .globl gUnknown_84E5CBC +gUnknown_84E5CBC: @ 0x84E5CBC + .incbin "baserom_jp.gba", 0x4e5cbc, 0x4 + + .globl gUnknown_84E5CC0 +gUnknown_84E5CC0: @ 0x84E5CC0 + .incbin "baserom_jp.gba", 0x4e5cc0, 0x14 + + .globl gUnknown_84E5CD4 +gUnknown_84E5CD4: @ 0x84E5CD4 + .incbin "baserom_jp.gba", 0x4e5cd4, 0x4 + + .globl gUnknown_84E5CD8 +gUnknown_84E5CD8: @ 0x84E5CD8 + .incbin "baserom_jp.gba", 0x4e5cd8, 0x14 + + .globl gUnknown_84E5CEC +gUnknown_84E5CEC: @ 0x84E5CEC + .incbin "baserom_jp.gba", 0x4e5cec, 0x4 + + .globl gUnknown_84E5CF0 +gUnknown_84E5CF0: @ 0x84E5CF0 + .incbin "baserom_jp.gba", 0x4e5cf0, 0x10 + + .globl gUnknown_84E5D00 +gUnknown_84E5D00: @ 0x84E5D00 + .incbin "baserom_jp.gba", 0x4e5d00, 0x8 + + .globl gUnknown_84E5D08 +gUnknown_84E5D08: @ 0x84E5D08 + .incbin "baserom_jp.gba", 0x4e5d08, 0x10 + + .globl gUnknown_84E5D18 +gUnknown_84E5D18: @ 0x84E5D18 + .incbin "baserom_jp.gba", 0x4e5d18, 0x8 + + .globl gUnknown_84E5D20 +gUnknown_84E5D20: @ 0x84E5D20 + .incbin "baserom_jp.gba", 0x4e5d20, 0x10 + + .globl gUnknown_84E5D30 +gUnknown_84E5D30: @ 0x84E5D30 + .incbin "baserom_jp.gba", 0x4e5d30, 0xc + + .globl gUnknown_84E5D3C +gUnknown_84E5D3C: @ 0x84E5D3C + .incbin "baserom_jp.gba", 0x4e5d3c, 0x4 + + .globl gUnknown_84E5D40 +gUnknown_84E5D40: @ 0x84E5D40 + .incbin "baserom_jp.gba", 0x4e5d40, 0xc + + .globl gUnknown_84E5D4C +gUnknown_84E5D4C: @ 0x84E5D4C + .incbin "baserom_jp.gba", 0x4e5d4c, 0x4 + + .globl gUnknown_84E5D50 +gUnknown_84E5D50: @ 0x84E5D50 + .incbin "baserom_jp.gba", 0x4e5d50, 0xc + + .globl gUnknown_84E5D5C +gUnknown_84E5D5C: @ 0x84E5D5C + .incbin "baserom_jp.gba", 0x4e5d5c, 0x4 + + .globl gUnknown_84E5D60 +gUnknown_84E5D60: @ 0x84E5D60 + .incbin "baserom_jp.gba", 0x4e5d60, 0xc + + .globl gUnknown_84E5D6C +gUnknown_84E5D6C: @ 0x84E5D6C + .incbin "baserom_jp.gba", 0x4e5d6c, 0x4 + + .globl gUnknown_84E5D70 +gUnknown_84E5D70: @ 0x84E5D70 + .incbin "baserom_jp.gba", 0x4e5d70, 0xc + + .globl gUnknown_84E5D7C +gUnknown_84E5D7C: @ 0x84E5D7C + .incbin "baserom_jp.gba", 0x4e5d7c, 0x4 + + .globl gUnknown_84E5D80 +gUnknown_84E5D80: @ 0x84E5D80 + .incbin "baserom_jp.gba", 0x4e5d80, 0xc + + .globl gUnknown_84E5D8C +gUnknown_84E5D8C: @ 0x84E5D8C + .incbin "baserom_jp.gba", 0x4e5d8c, 0x4 + + .globl gUnknown_84E5D90 +gUnknown_84E5D90: @ 0x84E5D90 + .incbin "baserom_jp.gba", 0x4e5d90, 0xc + + .globl gUnknown_84E5D9C +gUnknown_84E5D9C: @ 0x84E5D9C + .incbin "baserom_jp.gba", 0x4e5d9c, 0xc + + .globl gUnknown_84E5DA8 +gUnknown_84E5DA8: @ 0x84E5DA8 + .incbin "baserom_jp.gba", 0x4e5da8, 0x4 + + .globl gUnknown_84E5DAC +gUnknown_84E5DAC: @ 0x84E5DAC + .incbin "baserom_jp.gba", 0x4e5dac, 0xc + + .globl gUnknown_84E5DB8 +gUnknown_84E5DB8: @ 0x84E5DB8 + .incbin "baserom_jp.gba", 0x4e5db8, 0x4 + + .globl gUnknown_84E5DBC +gUnknown_84E5DBC: @ 0x84E5DBC + .incbin "baserom_jp.gba", 0x4e5dbc, 0xc + + .globl gUnknown_84E5DC8 +gUnknown_84E5DC8: @ 0x84E5DC8 + .incbin "baserom_jp.gba", 0x4e5dc8, 0x4 + + .globl gUnknown_84E5DCC +gUnknown_84E5DCC: @ 0x84E5DCC + .incbin "baserom_jp.gba", 0x4e5dcc, 0xc + + .globl gUnknown_84E5DD8 +gUnknown_84E5DD8: @ 0x84E5DD8 + .incbin "baserom_jp.gba", 0x4e5dd8, 0x4 + + .globl gUnknown_84E5DDC +gUnknown_84E5DDC: @ 0x84E5DDC + .incbin "baserom_jp.gba", 0x4e5ddc, 0xc + + .globl gUnknown_84E5DE8 +gUnknown_84E5DE8: @ 0x84E5DE8 + .incbin "baserom_jp.gba", 0x4e5de8, 0x4 + + .globl gUnknown_84E5DEC +gUnknown_84E5DEC: @ 0x84E5DEC + .incbin "baserom_jp.gba", 0x4e5dec, 0xc + + .globl gUnknown_84E5DF8 +gUnknown_84E5DF8: @ 0x84E5DF8 + .incbin "baserom_jp.gba", 0x4e5df8, 0x4 + + .globl gUnknown_84E5DFC +gUnknown_84E5DFC: @ 0x84E5DFC + .incbin "baserom_jp.gba", 0x4e5dfc, 0xc + + .globl gUnknown_84E5E08 +gUnknown_84E5E08: @ 0x84E5E08 + .incbin "baserom_jp.gba", 0x4e5e08, 0x4 + + .globl gUnknown_84E5E0C +gUnknown_84E5E0C: @ 0x84E5E0C + .incbin "baserom_jp.gba", 0x4e5e0c, 0xc + + .globl gUnknown_84E5E18 +gUnknown_84E5E18: @ 0x84E5E18 + .incbin "baserom_jp.gba", 0x4e5e18, 0x4 + + .globl gUnknown_84E5E1C +gUnknown_84E5E1C: @ 0x84E5E1C + .incbin "baserom_jp.gba", 0x4e5e1c, 0xc + + .globl gUnknown_84E5E28 +gUnknown_84E5E28: @ 0x84E5E28 + .incbin "baserom_jp.gba", 0x4e5e28, 0x4 + + .globl gUnknown_84E5E2C +gUnknown_84E5E2C: @ 0x84E5E2C + .incbin "baserom_jp.gba", 0x4e5e2c, 0xc + + .globl gUnknown_84E5E38 +gUnknown_84E5E38: @ 0x84E5E38 + .incbin "baserom_jp.gba", 0x4e5e38, 0x4 + + .globl gUnknown_84E5E3C +gUnknown_84E5E3C: @ 0x84E5E3C + .incbin "baserom_jp.gba", 0x4e5e3c, 0xc + + .globl gUnknown_84E5E48 +gUnknown_84E5E48: @ 0x84E5E48 + .incbin "baserom_jp.gba", 0x4e5e48, 0x4 + + .globl gUnknown_84E5E4C +gUnknown_84E5E4C: @ 0x84E5E4C + .incbin "baserom_jp.gba", 0x4e5e4c, 0xc + + .globl gUnknown_84E5E58 +gUnknown_84E5E58: @ 0x84E5E58 + .incbin "baserom_jp.gba", 0x4e5e58, 0x4 + + .globl gUnknown_84E5E5C +gUnknown_84E5E5C: @ 0x84E5E5C + .incbin "baserom_jp.gba", 0x4e5e5c, 0xc + + .globl gUnknown_84E5E68 +gUnknown_84E5E68: @ 0x84E5E68 + .incbin "baserom_jp.gba", 0x4e5e68, 0x4 + + .globl gUnknown_84E5E6C +gUnknown_84E5E6C: @ 0x84E5E6C + .incbin "baserom_jp.gba", 0x4e5e6c, 0xc + + .globl gUnknown_84E5E78 +gUnknown_84E5E78: @ 0x84E5E78 + .incbin "baserom_jp.gba", 0x4e5e78, 0x4 + + .globl gUnknown_84E5E7C +gUnknown_84E5E7C: @ 0x84E5E7C + .incbin "baserom_jp.gba", 0x4e5e7c, 0xc + + .globl gUnknown_84E5E88 +gUnknown_84E5E88: @ 0x84E5E88 + .incbin "baserom_jp.gba", 0x4e5e88, 0x4 + + .globl gUnknown_84E5E8C +gUnknown_84E5E8C: @ 0x84E5E8C + .incbin "baserom_jp.gba", 0x4e5e8c, 0xc + + .globl gUnknown_84E5E98 +gUnknown_84E5E98: @ 0x84E5E98 + .incbin "baserom_jp.gba", 0x4e5e98, 0x4 + + .globl gUnknown_84E5E9C +gUnknown_84E5E9C: @ 0x84E5E9C + .incbin "baserom_jp.gba", 0x4e5e9c, 0xc + + .globl gUnknown_84E5EA8 +gUnknown_84E5EA8: @ 0x84E5EA8 + .incbin "baserom_jp.gba", 0x4e5ea8, 0x4 + + .globl gUnknown_84E5EAC +gUnknown_84E5EAC: @ 0x84E5EAC + .incbin "baserom_jp.gba", 0x4e5eac, 0xc + + .globl gUnknown_84E5EB8 +gUnknown_84E5EB8: @ 0x84E5EB8 + .incbin "baserom_jp.gba", 0x4e5eb8, 0x2c + + .globl gUnknown_84E5EE4 +gUnknown_84E5EE4: @ 0x84E5EE4 + .incbin "baserom_jp.gba", 0x4e5ee4, 0xc + + .globl gUnknown_84E5EF0 +gUnknown_84E5EF0: @ 0x84E5EF0 + .incbin "baserom_jp.gba", 0x4e5ef0, 0x4 + + .globl gUnknown_84E5EF4 +gUnknown_84E5EF4: @ 0x84E5EF4 + .incbin "baserom_jp.gba", 0x4e5ef4, 0x8 + + .globl gUnknown_84E5EFC +gUnknown_84E5EFC: @ 0x84E5EFC + .incbin "baserom_jp.gba", 0x4e5efc, 0x8 + + .globl gUnknown_84E5F04 +gUnknown_84E5F04: @ 0x84E5F04 + .incbin "baserom_jp.gba", 0x4e5f04, 0x8 + + .globl gUnknown_84E5F0C +gUnknown_84E5F0C: @ 0x84E5F0C + .incbin "baserom_jp.gba", 0x4e5f0c, 0x8 + + .globl gUnknown_84E5F14 +gUnknown_84E5F14: @ 0x84E5F14 + .incbin "baserom_jp.gba", 0x4e5f14, 0xc + + .globl gUnknown_84E5F20 +gUnknown_84E5F20: @ 0x84E5F20 + .incbin "baserom_jp.gba", 0x4e5f20, 0x9 + + .globl gUnknown_84E5F29 +gUnknown_84E5F29: @ 0x84E5F29 + .incbin "baserom_jp.gba", 0x4e5f29, 0x9 + + .globl gUnknown_84E5F32 +gUnknown_84E5F32: @ 0x84E5F32 + .incbin "baserom_jp.gba", 0x4e5f32, 0x9 + + .globl gUnknown_84E5F3B +gUnknown_84E5F3B: @ 0x84E5F3B + .incbin "baserom_jp.gba", 0x4e5f3b, 0x9 + + .globl gUnknown_84E5F44 +gUnknown_84E5F44: @ 0x84E5F44 + .incbin "baserom_jp.gba", 0x4e5f44, 0x9 + + .globl gUnknown_84E5F4D +gUnknown_84E5F4D: @ 0x84E5F4D + .incbin "baserom_jp.gba", 0x4e5f4d, 0x9 + + .globl gUnknown_84E5F56 +gUnknown_84E5F56: @ 0x84E5F56 + .incbin "baserom_jp.gba", 0x4e5f56, 0x9 + + .globl gUnknown_84E5F5F +gUnknown_84E5F5F: @ 0x84E5F5F + .incbin "baserom_jp.gba", 0x4e5f5f, 0x9 + + .globl gUnknown_84E5F68 +gUnknown_84E5F68: @ 0x84E5F68 + .incbin "baserom_jp.gba", 0x4e5f68, 0x9 + + .globl gUnknown_84E5F71 +gUnknown_84E5F71: @ 0x84E5F71 + .incbin "baserom_jp.gba", 0x4e5f71, 0x9 + + .globl gUnknown_84E5F7A +gUnknown_84E5F7A: @ 0x84E5F7A + .incbin "baserom_jp.gba", 0x4e5f7a, 0x9 + + .globl gUnknown_84E5F83 +gUnknown_84E5F83: @ 0x84E5F83 + .incbin "baserom_jp.gba", 0x4e5f83, 0x9 + + .globl gUnknown_84E5F8C +gUnknown_84E5F8C: @ 0x84E5F8C + .incbin "baserom_jp.gba", 0x4e5f8c, 0x9 + + .globl gUnknown_84E5F95 +gUnknown_84E5F95: @ 0x84E5F95 + .incbin "baserom_jp.gba", 0x4e5f95, 0x9 + + .globl gUnknown_84E5F9E +gUnknown_84E5F9E: @ 0x84E5F9E + .incbin "baserom_jp.gba", 0x4e5f9e, 0x9 + + .globl gUnknown_84E5FA7 +gUnknown_84E5FA7: @ 0x84E5FA7 + .incbin "baserom_jp.gba", 0x4e5fa7, 0x9 + + .globl gUnknown_84E5FB0 +gUnknown_84E5FB0: @ 0x84E5FB0 + .incbin "baserom_jp.gba", 0x4e5fb0, 0x10 + + .globl gUnknown_84E5FC0 +gUnknown_84E5FC0: @ 0x84E5FC0 + .incbin "baserom_jp.gba", 0x4e5fc0, 0x10 + + .globl gUnknown_84E5FD0 +gUnknown_84E5FD0: @ 0x84E5FD0 + .incbin "baserom_jp.gba", 0x4e5fd0, 0x24 + + .globl gUnknown_84E5FF4 +gUnknown_84E5FF4: @ 0x84E5FF4 + .incbin "baserom_jp.gba", 0x4e5ff4, 0x5 + + .globl gUnknown_84E5FF9 +gUnknown_84E5FF9: @ 0x84E5FF9 + .incbin "baserom_jp.gba", 0x4e5ff9, 0x5 + + .globl gUnknown_84E5FFE +gUnknown_84E5FFE: @ 0x84E5FFE + .incbin "baserom_jp.gba", 0x4e5ffe, 0x5 + + .globl gUnknown_84E6003 +gUnknown_84E6003: @ 0x84E6003 + .incbin "baserom_jp.gba", 0x4e6003, 0x5 + + .globl gUnknown_84E6008 +gUnknown_84E6008: @ 0x84E6008 + .incbin "baserom_jp.gba", 0x4e6008, 0x5 + + .globl gUnknown_84E600D +gUnknown_84E600D: @ 0x84E600D + .incbin "baserom_jp.gba", 0x4e600d, 0x5 + + .globl gUnknown_84E6012 +gUnknown_84E6012: @ 0x84E6012 + .incbin "baserom_jp.gba", 0x4e6012, 0x5 + + .globl gUnknown_84E6017 +gUnknown_84E6017: @ 0x84E6017 + .incbin "baserom_jp.gba", 0x4e6017, 0x5 + + .globl gUnknown_84E601C +gUnknown_84E601C: @ 0x84E601C + .incbin "baserom_jp.gba", 0x4e601c, 0x5 + + .globl gUnknown_84E6021 +gUnknown_84E6021: @ 0x84E6021 + .incbin "baserom_jp.gba", 0x4e6021, 0x5 + + .globl gUnknown_84E6026 +gUnknown_84E6026: @ 0x84E6026 + .incbin "baserom_jp.gba", 0x4e6026, 0x5 + + .globl gUnknown_84E602B +gUnknown_84E602B: @ 0x84E602B + .incbin "baserom_jp.gba", 0x4e602b, 0x5 + + .globl gUnknown_84E6030 +gUnknown_84E6030: @ 0x84E6030 + .incbin "baserom_jp.gba", 0x4e6030, 0x5 + + .globl gUnknown_84E6035 +gUnknown_84E6035: @ 0x84E6035 + .incbin "baserom_jp.gba", 0x4e6035, 0x5 + + .globl gUnknown_84E603A +gUnknown_84E603A: @ 0x84E603A + .incbin "baserom_jp.gba", 0x4e603a, 0x5 + + .globl gUnknown_84E603F +gUnknown_84E603F: @ 0x84E603F + .incbin "baserom_jp.gba", 0x4e603f, 0x5 + + .globl gUnknown_84E6044 +gUnknown_84E6044: @ 0x84E6044 + .incbin "baserom_jp.gba", 0x4e6044, 0x5 + + .globl gUnknown_84E6049 +gUnknown_84E6049: @ 0x84E6049 + .incbin "baserom_jp.gba", 0x4e6049, 0x5 + + .globl gUnknown_84E604E +gUnknown_84E604E: @ 0x84E604E + .incbin "baserom_jp.gba", 0x4e604e, 0x5 + + .globl gUnknown_84E6053 +gUnknown_84E6053: @ 0x84E6053 + .incbin "baserom_jp.gba", 0x4e6053, 0x5 + + .globl gUnknown_84E6058 +gUnknown_84E6058: @ 0x84E6058 + .incbin "baserom_jp.gba", 0x4e6058, 0x5 + + .globl gUnknown_84E605D +gUnknown_84E605D: @ 0x84E605D + .incbin "baserom_jp.gba", 0x4e605d, 0x5 + + .globl gUnknown_84E6062 +gUnknown_84E6062: @ 0x84E6062 + .incbin "baserom_jp.gba", 0x4e6062, 0x5 + + .globl gUnknown_84E6067 +gUnknown_84E6067: @ 0x84E6067 + .incbin "baserom_jp.gba", 0x4e6067, 0x5 + + .globl gUnknown_84E606C +gUnknown_84E606C: @ 0x84E606C + .incbin "baserom_jp.gba", 0x4e606c, 0x5 + + .globl gUnknown_84E6071 +gUnknown_84E6071: @ 0x84E6071 + .incbin "baserom_jp.gba", 0x4e6071, 0x5 + + .globl gUnknown_84E6076 +gUnknown_84E6076: @ 0x84E6076 + .incbin "baserom_jp.gba", 0x4e6076, 0x5 + + .globl gUnknown_84E607B +gUnknown_84E607B: @ 0x84E607B + .incbin "baserom_jp.gba", 0x4e607b, 0x8 + + .globl gUnknown_84E6083 +gUnknown_84E6083: @ 0x84E6083 + .incbin "baserom_jp.gba", 0x4e6083, 0x10 + + .globl gUnknown_84E6093 +gUnknown_84E6093: @ 0x84E6093 + .incbin "baserom_jp.gba", 0x4e6093, 0x11 + + .globl gUnknown_84E60A4 +gUnknown_84E60A4: @ 0x84E60A4 + .incbin "baserom_jp.gba", 0x4e60a4, 0x298 + + .globl gUnknown_84E633C +gUnknown_84E633C: @ 0x84E633C + .incbin "baserom_jp.gba", 0x4e633c, 0xd4 + + .globl gUnknown_84E6410 +gUnknown_84E6410: @ 0x84E6410 + .incbin "baserom_jp.gba", 0x4e6410, 0x6 + + .globl gUnknown_84E6416 +gUnknown_84E6416: @ 0x84E6416 + .incbin "baserom_jp.gba", 0x4e6416, 0x61a + + .globl gUnknown_84E6A30 +gUnknown_84E6A30: @ 0x84E6A30 + .incbin "baserom_jp.gba", 0x4e6a30, 0x8 + + .globl gUnknown_84E6A38 +gUnknown_84E6A38: @ 0x84E6A38 + .incbin "baserom_jp.gba", 0x4e6a38, 0x18 + + .globl gUnknown_84E6A50 +gUnknown_84E6A50: @ 0x84E6A50 + .incbin "baserom_jp.gba", 0x4e6a50, 0x18 + + .globl gUnknown_84E6A68 +gUnknown_84E6A68: @ 0x84E6A68 + .incbin "baserom_jp.gba", 0x4e6a68, 0x10 + + .globl gUnknown_84E6A78 +gUnknown_84E6A78: @ 0x84E6A78 + .incbin "baserom_jp.gba", 0x4e6a78, 0x10 + + .globl gUnknown_84E6A88 +gUnknown_84E6A88: @ 0x84E6A88 + .incbin "baserom_jp.gba", 0x4e6a88, 0x10 + + .globl gUnknown_84E6A98 +gUnknown_84E6A98: @ 0x84E6A98 + .incbin "baserom_jp.gba", 0x4e6a98, 0x10 + + .globl gUnknown_84E6AA8 +gUnknown_84E6AA8: @ 0x84E6AA8 + .incbin "baserom_jp.gba", 0x4e6aa8, 0xc + + .globl gUnknown_84E6AB4 +gUnknown_84E6AB4: @ 0x84E6AB4 + .incbin "baserom_jp.gba", 0x4e6ab4, 0x4 + + .globl gUnknown_84E6AB8 +gUnknown_84E6AB8: @ 0x84E6AB8 + .incbin "baserom_jp.gba", 0x4e6ab8, 0x10 + + .globl gUnknown_84E6AC8 +gUnknown_84E6AC8: @ 0x84E6AC8 + .incbin "baserom_jp.gba", 0x4e6ac8, 0xe0 + + .globl gUnknown_84E6BA8 +gUnknown_84E6BA8: @ 0x84E6BA8 + .incbin "baserom_jp.gba", 0x4e6ba8, 0x14 + + .globl gUnknown_84E6BBC +gUnknown_84E6BBC: @ 0x84E6BBC + .incbin "baserom_jp.gba", 0x4e6bbc, 0xa + + .globl gUnknown_84E6BC6 +gUnknown_84E6BC6: @ 0x84E6BC6 + .incbin "baserom_jp.gba", 0x4e6bc6, 0x48 + + .globl gUnknown_84E6C0E +gUnknown_84E6C0E: @ 0x84E6C0E + .incbin "baserom_jp.gba", 0x4e6c0e, 0x7a + + .globl gUnknown_84E6C88 +gUnknown_84E6C88: @ 0x84E6C88 + .incbin "baserom_jp.gba", 0x4e6c88, 0xc + + .globl gUnknown_84E6C94 +gUnknown_84E6C94: @ 0x84E6C94 + .incbin "baserom_jp.gba", 0x4e6c94, 0x6 + + .globl gUnknown_84E6C9A +gUnknown_84E6C9A: @ 0x84E6C9A + .incbin "baserom_jp.gba", 0x4e6c9a, 0x4 + + .globl gUnknown_84E6C9E +gUnknown_84E6C9E: @ 0x84E6C9E + .incbin "baserom_jp.gba", 0x4e6c9e, 0x6 + + .globl gUnknown_84E6CA4 +gUnknown_84E6CA4: @ 0x84E6CA4 + .incbin "baserom_jp.gba", 0x4e6ca4, 0x4 + + .globl gUnknown_84E6CA8 +gUnknown_84E6CA8: @ 0x84E6CA8 + .incbin "baserom_jp.gba", 0x4e6ca8, 0xc + + .globl gUnknown_84E6CB4 +gUnknown_84E6CB4: @ 0x84E6CB4 + .incbin "baserom_jp.gba", 0x4e6cb4, 0x2c + + .globl gUnknown_84E6CE0 +gUnknown_84E6CE0: @ 0x84E6CE0 + .incbin "baserom_jp.gba", 0x4e6ce0, 0x1680 + + .globl gUnknown_84E8360 +gUnknown_84E8360: @ 0x84E8360 + .incbin "baserom_jp.gba", 0x4e8360, 0x280 + + .globl gUnknown_84E85E0 +gUnknown_84E85E0: @ 0x84E85E0 + .incbin "baserom_jp.gba", 0x4e85e0, 0x1c0 + + .globl gUnknown_84E87A0 +gUnknown_84E87A0: @ 0x84E87A0 + .incbin "baserom_jp.gba", 0x4e87a0, 0xa0 + + .globl gUnknown_84E8840 +gUnknown_84E8840: @ 0x84E8840 + .incbin "baserom_jp.gba", 0x4e8840, 0x20 + + .globl gUnknown_84E8860 +gUnknown_84E8860: @ 0x84E8860 + .incbin "baserom_jp.gba", 0x4e8860, 0xa0 + + .globl gUnknown_84E8900 +gUnknown_84E8900: @ 0x84E8900 + .incbin "baserom_jp.gba", 0x4e8900, 0x4 + + .globl gUnknown_84E8904 +gUnknown_84E8904: @ 0x84E8904 + .incbin "baserom_jp.gba", 0x4e8904, 0x14 + + .globl gUnknown_84E8918 +gUnknown_84E8918: @ 0x84E8918 + .incbin "baserom_jp.gba", 0x4e8918, 0xc + + .globl gUnknown_84E8924 +gUnknown_84E8924: @ 0x84E8924 + .incbin "baserom_jp.gba", 0x4e8924, 0x68 + + .globl gUnknown_84E898C +gUnknown_84E898C: @ 0x84E898C + .incbin "baserom_jp.gba", 0x4e898c, 0x20 + + .globl gUnknown_84E89AC +gUnknown_84E89AC: @ 0x84E89AC + .incbin "baserom_jp.gba", 0x4e89ac, 0x20 + + .globl gUnknown_84E89CC +gUnknown_84E89CC: @ 0x84E89CC + .incbin "baserom_jp.gba", 0x4e89cc, 0x20 + + .globl gUnknown_84E89EC +gUnknown_84E89EC: @ 0x84E89EC + .incbin "baserom_jp.gba", 0x4e89ec, 0x20 + + .globl gUnknown_84E8A0C +gUnknown_84E8A0C: @ 0x84E8A0C + .incbin "baserom_jp.gba", 0x4e8a0c, 0x34 + + .globl gUnknown_84E8A40 +gUnknown_84E8A40: @ 0x84E8A40 + .incbin "baserom_jp.gba", 0x4e8a40, 0x8 + + .globl gUnknown_84E8A48 +gUnknown_84E8A48: @ 0x84E8A48 + .incbin "baserom_jp.gba", 0x4e8a48, 0x4 + + .globl gUnknown_84E8A4C +gUnknown_84E8A4C: @ 0x84E8A4C + .incbin "baserom_jp.gba", 0x4e8a4c, 0x18 + + .globl gUnknown_84E8A64 +gUnknown_84E8A64: @ 0x84E8A64 + .incbin "baserom_jp.gba", 0x4e8a64, 0x8 + + .globl gUnknown_84E8A6C +gUnknown_84E8A6C: @ 0x84E8A6C + .incbin "baserom_jp.gba", 0x4e8a6c, 0x3 + + .globl gUnknown_84E8A6F +gUnknown_84E8A6F: @ 0x84E8A6F + .incbin "baserom_jp.gba", 0x4e8a6f, 0x2 + + .globl gUnknown_84E8A71 +gUnknown_84E8A71: @ 0x84E8A71 + .incbin "baserom_jp.gba", 0x4e8a71, 0xa3 + + .globl gUnknown_84E8B14 +gUnknown_84E8B14: @ 0x84E8B14 + .incbin "baserom_jp.gba", 0x4e8b14, 0x2c + + .globl gUnknown_84E8B40 +gUnknown_84E8B40: @ 0x84E8B40 + .incbin "baserom_jp.gba", 0x4e8b40, 0x44 + + .globl gUnknown_84E8B84 +gUnknown_84E8B84: @ 0x84E8B84 + .incbin "baserom_jp.gba", 0x4e8b84, 0x10 + + .globl gUnknown_84E8B94 +gUnknown_84E8B94: @ 0x84E8B94 + .incbin "baserom_jp.gba", 0x4e8b94, 0x8 + + .globl gUnknown_84E8B9C +gUnknown_84E8B9C: @ 0x84E8B9C + .incbin "baserom_jp.gba", 0x4e8b9c, 0x60 + + .globl gUnknown_84E8BFC +gUnknown_84E8BFC: @ 0x84E8BFC + .incbin "baserom_jp.gba", 0x4e8bfc, 0x20 + + .globl gUnknown_84E8C1C +gUnknown_84E8C1C: @ 0x84E8C1C + .incbin "baserom_jp.gba", 0x4e8c1c, 0x8 + + .globl gUnknown_84E8C24 +gUnknown_84E8C24: @ 0x84E8C24 + .incbin "baserom_jp.gba", 0x4e8c24, 0x8 + + .globl gUnknown_84E8C2C +gUnknown_84E8C2C: @ 0x84E8C2C + .incbin "baserom_jp.gba", 0x4e8c2c, 0x68 + + .globl gUnknown_84E8C94 +gUnknown_84E8C94: @ 0x84E8C94 + .incbin "baserom_jp.gba", 0x4e8c94, 0x4 + + .globl gUnknown_84E8C98 +gUnknown_84E8C98: @ 0x84E8C98 + .incbin "baserom_jp.gba", 0x4e8c98, 0x10 + + .globl gUnknown_84E8CA8 +gUnknown_84E8CA8: @ 0x84E8CA8 + .incbin "baserom_jp.gba", 0x4e8ca8, 0x8 + + .globl gUnknown_84E8CB0 +gUnknown_84E8CB0: @ 0x84E8CB0 + .incbin "baserom_jp.gba", 0x4e8cb0, 0x7 + + .globl gUnknown_84E8CB7 +gUnknown_84E8CB7: @ 0x84E8CB7 + .incbin "baserom_jp.gba", 0x4e8cb7, 0x9 + + .globl gUnknown_84E8CC0 +gUnknown_84E8CC0: @ 0x84E8CC0 + .incbin "baserom_jp.gba", 0x4e8cc0, 0x8 + + .globl gUnknown_84E8CC8 +gUnknown_84E8CC8: @ 0x84E8CC8 + .incbin "baserom_jp.gba", 0x4e8cc8, 0x1a8 + + .globl gUnknown_84E8E70 +gUnknown_84E8E70: @ 0x84E8E70 + .incbin "baserom_jp.gba", 0x4e8e70, 0xb60 + + .globl gUnknown_84E99D0 +gUnknown_84E99D0: @ 0x84E99D0 + .incbin "baserom_jp.gba", 0x4e99d0, 0x908 + + .globl gUnknown_84EA2D8 +gUnknown_84EA2D8: @ 0x84EA2D8 + .incbin "baserom_jp.gba", 0x4ea2d8, 0x9a8 + + .globl gUnknown_84EAC80 +gUnknown_84EAC80: @ 0x84EAC80 + .incbin "baserom_jp.gba", 0x4eac80, 0x8e0 + + .globl gUnknown_84EB560 +gUnknown_84EB560: @ 0x84EB560 + .incbin "baserom_jp.gba", 0x4eb560, 0x320 + + .globl gUnknown_84EB880 +gUnknown_84EB880: @ 0x84EB880 + .incbin "baserom_jp.gba", 0x4eb880, 0x510 + + .globl gUnknown_84EBD90 +gUnknown_84EBD90: @ 0x84EBD90 + .incbin "baserom_jp.gba", 0x4ebd90, 0x210 + + .globl gUnknown_84EBFA0 +gUnknown_84EBFA0: @ 0x84EBFA0 + .incbin "baserom_jp.gba", 0x4ebfa0, 0xb50 + + .globl gUnknown_84ECAF0 +gUnknown_84ECAF0: @ 0x84ECAF0 + .incbin "baserom_jp.gba", 0x4ecaf0, 0x210 + + .globl gUnknown_84ECD00 +gUnknown_84ECD00: @ 0x84ECD00 + .incbin "baserom_jp.gba", 0x4ecd00, 0x810 + + .globl gUnknown_84ED510 +gUnknown_84ED510: @ 0x84ED510 + .incbin "baserom_jp.gba", 0x4ed510, 0x540 + + .globl gUnknown_84EDA50 +gUnknown_84EDA50: @ 0x84EDA50 + .incbin "baserom_jp.gba", 0x4eda50, 0x20 + + .globl gUnknown_84EDA70 +gUnknown_84EDA70: @ 0x84EDA70 + .incbin "baserom_jp.gba", 0x4eda70, 0x20 + + .globl gUnknown_84EDA90 +gUnknown_84EDA90: @ 0x84EDA90 + .incbin "baserom_jp.gba", 0x4eda90, 0x30 + + .globl gUnknown_84EDAC0 +gUnknown_84EDAC0: @ 0x84EDAC0 + .incbin "baserom_jp.gba", 0x4edac0, 0x30 + + .globl gUnknown_84EDAF0 +gUnknown_84EDAF0: @ 0x84EDAF0 + .incbin "baserom_jp.gba", 0x4edaf0, 0x10 + + .globl gUnknown_84EDB00 +gUnknown_84EDB00: @ 0x84EDB00 + .incbin "baserom_jp.gba", 0x4edb00, 0x410 + + .globl gUnknown_84EDF10 +gUnknown_84EDF10: @ 0x84EDF10 + .incbin "baserom_jp.gba", 0x4edf10, 0x20 + + .globl gUnknown_84EDF30 +gUnknown_84EDF30: @ 0x84EDF30 + .incbin "baserom_jp.gba", 0x4edf30, 0x140 + + .globl gUnknown_84EE070 +gUnknown_84EE070: @ 0x84EE070 + .incbin "baserom_jp.gba", 0x4ee070, 0x428 + + .globl gUnknown_84EE498 +gUnknown_84EE498: @ 0x84EE498 + .incbin "baserom_jp.gba", 0x4ee498, 0x430 + + .globl gUnknown_84EE8C8 +gUnknown_84EE8C8: @ 0x84EE8C8 + .incbin "baserom_jp.gba", 0x4ee8c8, 0x20 + + .globl gUnknown_84EE8E8 +gUnknown_84EE8E8: @ 0x84EE8E8 + .incbin "baserom_jp.gba", 0x4ee8e8, 0x320 + + .globl gUnknown_84EEC08 +gUnknown_84EEC08: @ 0x84EEC08 + .incbin "baserom_jp.gba", 0x4eec08, 0x310 + + .globl gUnknown_84EEF18 +gUnknown_84EEF18: @ 0x84EEF18 + .incbin "baserom_jp.gba", 0x4eef18, 0x310 + + .globl gUnknown_84EF228 +gUnknown_84EF228: @ 0x84EF228 + .incbin "baserom_jp.gba", 0x4ef228, 0x210 + + .globl gUnknown_84EF438 +gUnknown_84EF438: @ 0x84EF438 + .incbin "baserom_jp.gba", 0x4ef438, 0x110 + + .globl gUnknown_84EF548 +gUnknown_84EF548: @ 0x84EF548 + .incbin "baserom_jp.gba", 0x4ef548, 0xc08 + + .globl gUnknown_84F0150 +gUnknown_84F0150: @ 0x84F0150 + .incbin "baserom_jp.gba", 0x4f0150, 0xc + + .globl gUnknown_84F015C +gUnknown_84F015C: @ 0x84F015C + .incbin "baserom_jp.gba", 0x4f015c, 0x1ac + + .globl gUnknown_84F0308 +gUnknown_84F0308: @ 0x84F0308 + .incbin "baserom_jp.gba", 0x4f0308, 0x10 + + .globl gUnknown_84F0318 +gUnknown_84F0318: @ 0x84F0318 + .incbin "baserom_jp.gba", 0x4f0318, 0x428 + + .globl gUnknown_84F0740 +gUnknown_84F0740: @ 0x84F0740 + .incbin "baserom_jp.gba", 0x4f0740, 0x268 + + .globl gUnknown_84F09A8 +gUnknown_84F09A8: @ 0x84F09A8 + .incbin "baserom_jp.gba", 0x4f09a8, 0x8028 + + .globl gUnknown_84F89D0 +gUnknown_84F89D0: @ 0x84F89D0 + .incbin "baserom_jp.gba", 0x4f89d0, 0x45a0 + + .globl gUnknown_84FCF70 +gUnknown_84FCF70: @ 0x84FCF70 + .incbin "baserom_jp.gba", 0x4fcf70, 0xc + + .globl gUnknown_84FCF7C +gUnknown_84FCF7C: @ 0x84FCF7C + .incbin "baserom_jp.gba", 0x4fcf7c, 0xc + + .globl gUnknown_84FCF88 +gUnknown_84FCF88: @ 0x84FCF88 + .incbin "baserom_jp.gba", 0x4fcf88, 0x10 + + .globl gUnknown_84FCF98 +gUnknown_84FCF98: @ 0x84FCF98 + .incbin "baserom_jp.gba", 0x4fcf98, 0x10 + + .globl gUnknown_84FCFA8 +gUnknown_84FCFA8: @ 0x84FCFA8 + .incbin "baserom_jp.gba", 0x4fcfa8, 0x20 + + .globl gUnknown_84FCFC8 +gUnknown_84FCFC8: @ 0x84FCFC8 + .incbin "baserom_jp.gba", 0x4fcfc8, 0x288 + + .globl gUnknown_84FD250 +gUnknown_84FD250: @ 0x84FD250 + .incbin "baserom_jp.gba", 0x4fd250, 0x1d0 + + .globl gUnknown_84FD420 +gUnknown_84FD420: @ 0x84FD420 + .incbin "baserom_jp.gba", 0x4fd420, 0x270 + + .globl gUnknown_84FD690 +gUnknown_84FD690: @ 0x84FD690 + .incbin "baserom_jp.gba", 0x4fd690, 0x308 + + .globl gUnknown_84FD998 +gUnknown_84FD998: @ 0x84FD998 + .incbin "baserom_jp.gba", 0x4fd998, 0x120 + + .globl gUnknown_84FDAB8 +gUnknown_84FDAB8: @ 0x84FDAB8 + .incbin "baserom_jp.gba", 0x4fdab8, 0x270 + + .globl gUnknown_84FDD28 +gUnknown_84FDD28: @ 0x84FDD28 + .incbin "baserom_jp.gba", 0x4fdd28, 0x270 + + .globl gUnknown_84FDF98 +gUnknown_84FDF98: @ 0x84FDF98 + .incbin "baserom_jp.gba", 0x4fdf98, 0x308 + + .globl gUnknown_84FE2A0 +gUnknown_84FE2A0: @ 0x84FE2A0 + .incbin "baserom_jp.gba", 0x4fe2a0, 0x120 + + .globl gUnknown_84FE3C0 +gUnknown_84FE3C0: @ 0x84FE3C0 + .incbin "baserom_jp.gba", 0x4fe3c0, 0xa0 + + .globl gUnknown_84FE460 +gUnknown_84FE460: @ 0x84FE460 + .incbin "baserom_jp.gba", 0x4fe460, 0x144 + + .globl gUnknown_84FE5A4 +gUnknown_84FE5A4: @ 0x84FE5A4 + .incbin "baserom_jp.gba", 0x4fe5a4, 0xc0 + + .globl gUnknown_84FE664 +gUnknown_84FE664: @ 0x84FE664 + .incbin "baserom_jp.gba", 0x4fe664, 0x20 + + .globl gUnknown_84FE684 +gUnknown_84FE684: @ 0x84FE684 + .incbin "baserom_jp.gba", 0x4fe684, 0x10 + + .globl gUnknown_84FE694 +gUnknown_84FE694: @ 0x84FE694 + .incbin "baserom_jp.gba", 0x4fe694, 0x4 + + .globl gUnknown_84FE698 +gUnknown_84FE698: @ 0x84FE698 + .incbin "baserom_jp.gba", 0x4fe698, 0x4 + + .globl gUnknown_84FE69C +gUnknown_84FE69C: @ 0x84FE69C + .incbin "baserom_jp.gba", 0x4fe69c, 0x30 + + .globl gUnknown_84FE6CC +gUnknown_84FE6CC: @ 0x84FE6CC + .incbin "baserom_jp.gba", 0x4fe6cc, 0x18fd0 + + .globl gUnknown_851769C +gUnknown_851769C: @ 0x851769C + .incbin "baserom_jp.gba", 0x51769c, 0x8 + + .globl gUnknown_85176A4 +gUnknown_85176A4: @ 0x85176A4 + .incbin "baserom_jp.gba", 0x5176a4, 0x18 + + .globl gUnknown_85176BC +gUnknown_85176BC: @ 0x85176BC + .incbin "baserom_jp.gba", 0x5176bc, 0x3e4 + + .globl gUnknown_8517AA0 +gUnknown_8517AA0: @ 0x8517AA0 + .incbin "baserom_jp.gba", 0x517aa0, 0xb8 + + .globl gUnknown_8517B58 +gUnknown_8517B58: @ 0x8517B58 + .incbin "baserom_jp.gba", 0x517b58, 0xc0 + + .globl gUnknown_8517C18 +gUnknown_8517C18: @ 0x8517C18 + .incbin "baserom_jp.gba", 0x517c18, 0x1e9c + + .globl gUnknown_8519AB4 +gUnknown_8519AB4: @ 0x8519AB4 + .incbin "baserom_jp.gba", 0x519ab4, 0x7e4 + + .globl gUnknown_851A298 +gUnknown_851A298: @ 0x851A298 + .incbin "baserom_jp.gba", 0x51a298, 0x450 + + .globl gUnknown_851A6E8 +gUnknown_851A6E8: @ 0x851A6E8 + .incbin "baserom_jp.gba", 0x51a6e8, 0x2e4 + + .globl gUnknown_851A9CC +gUnknown_851A9CC: @ 0x851A9CC + .incbin "baserom_jp.gba", 0x51a9cc, 0x240 + + .globl gUnknown_851AC0C +gUnknown_851AC0C: @ 0x851AC0C + .incbin "baserom_jp.gba", 0x51ac0c, 0xa8 + + .globl gUnknown_851ACB4 +gUnknown_851ACB4: @ 0x851ACB4 + .incbin "baserom_jp.gba", 0x51acb4, 0x18 + + .globl gUnknown_851ACCC +gUnknown_851ACCC: @ 0x851ACCC + .incbin "baserom_jp.gba", 0x51accc, 0x18 + + .globl gUnknown_851ACE4 +gUnknown_851ACE4: @ 0x851ACE4 + .incbin "baserom_jp.gba", 0x51ace4, 0x90 + + .globl gUnknown_851AD74 +gUnknown_851AD74: @ 0x851AD74 + .incbin "baserom_jp.gba", 0x51ad74, 0x18 + + .globl gUnknown_851AD8C +gUnknown_851AD8C: @ 0x851AD8C + .incbin "baserom_jp.gba", 0x51ad8c, 0x10 + + .globl gUnknown_851AD9C +gUnknown_851AD9C: @ 0x851AD9C + .incbin "baserom_jp.gba", 0x51ad9c, 0x24 + + .globl gUnknown_851ADC0 +gUnknown_851ADC0: @ 0x851ADC0 + .incbin "baserom_jp.gba", 0x51adc0, 0x18 + + .globl gUnknown_851ADD8 +gUnknown_851ADD8: @ 0x851ADD8 + .incbin "baserom_jp.gba", 0x51add8, 0x10 + + .globl gUnknown_851ADE8 +gUnknown_851ADE8: @ 0x851ADE8 + .incbin "baserom_jp.gba", 0x51ade8, 0xc000 + + .globl gUnknown_8526DE8 +gUnknown_8526DE8: @ 0x8526DE8 + .incbin "baserom_jp.gba", 0x526de8, 0x4 + + .globl gUnknown_8526DEC +gUnknown_8526DEC: @ 0x8526DEC + .incbin "baserom_jp.gba", 0x526dec, 0xf0 + + .globl gUnknown_8526EDC +gUnknown_8526EDC: @ 0x8526EDC + .incbin "baserom_jp.gba", 0x526edc, 0x10 + + .globl gUnknown_8526EEC +gUnknown_8526EEC: @ 0x8526EEC + .incbin "baserom_jp.gba", 0x526eec, 0x20 + + .globl gUnknown_8526F0C +gUnknown_8526F0C: @ 0x8526F0C + .incbin "baserom_jp.gba", 0x526f0c, 0x20 + + .globl gUnknown_8526F2C +gUnknown_8526F2C: @ 0x8526F2C + .incbin "baserom_jp.gba", 0x526f2c, 0x20 + + .globl gUnknown_8526F4C +gUnknown_8526F4C: @ 0x8526F4C + .incbin "baserom_jp.gba", 0x526f4c, 0x820 + + .globl gUnknown_852776C +gUnknown_852776C: @ 0x852776C + .incbin "baserom_jp.gba", 0x52776c, 0x3080 + + .globl gUnknown_852A7EC +gUnknown_852A7EC: @ 0x852A7EC + .incbin "baserom_jp.gba", 0x52a7ec, 0xc + + .globl gUnknown_852A7F8 +gUnknown_852A7F8: @ 0x852A7F8 + .incbin "baserom_jp.gba", 0x52a7f8, 0x1c + + .globl gUnknown_852A814 +gUnknown_852A814: @ 0x852A814 + .incbin "baserom_jp.gba", 0x52a814, 0x18 + + .globl gUnknown_852A82C +gUnknown_852A82C: @ 0x852A82C + .incbin "baserom_jp.gba", 0x52a82c, 0x9c + + .globl gUnknown_852A8C8 +gUnknown_852A8C8: @ 0x852A8C8 + .incbin "baserom_jp.gba", 0x52a8c8, 0x18 + + .globl gUnknown_852A8E0 +gUnknown_852A8E0: @ 0x852A8E0 + .incbin "baserom_jp.gba", 0x52a8e0, 0x8 + + .globl gUnknown_852A8E8 +gUnknown_852A8E8: @ 0x852A8E8 + .incbin "baserom_jp.gba", 0x52a8e8, 0x8 + + .globl gUnknown_852A8F0 +gUnknown_852A8F0: @ 0x852A8F0 + .incbin "baserom_jp.gba", 0x52a8f0, 0x38 + + .globl gUnknown_852A928 +gUnknown_852A928: @ 0x852A928 + .incbin "baserom_jp.gba", 0x52a928, 0x8c + + .globl gUnknown_852A9B4 +gUnknown_852A9B4: @ 0x852A9B4 + .incbin "baserom_jp.gba", 0x52a9b4, 0x18 + + .globl gUnknown_852A9CC +gUnknown_852A9CC: @ 0x852A9CC + .incbin "baserom_jp.gba", 0x52a9cc, 0x8 + + .globl gUnknown_852A9D4 +gUnknown_852A9D4: @ 0x852A9D4 + .incbin "baserom_jp.gba", 0x52a9d4, 0x20 + + .globl gUnknown_852A9F4 +gUnknown_852A9F4: @ 0x852A9F4 + .incbin "baserom_jp.gba", 0x52a9f4, 0x18 + + .globl gUnknown_852AA0C +gUnknown_852AA0C: @ 0x852AA0C + .incbin "baserom_jp.gba", 0x52aa0c, 0x1c + + .globl gUnknown_852AA28 +gUnknown_852AA28: @ 0x852AA28 + .incbin "baserom_jp.gba", 0x52aa28, 0x38 + + .globl gUnknown_852AA60 +gUnknown_852AA60: @ 0x852AA60 + .incbin "baserom_jp.gba", 0x52aa60, 0x18 + + .globl gUnknown_852AA78 +gUnknown_852AA78: @ 0x852AA78 + .incbin "baserom_jp.gba", 0x52aa78, 0x8 + + .globl gUnknown_852AA80 +gUnknown_852AA80: @ 0x852AA80 + .incbin "baserom_jp.gba", 0x52aa80, 0xc + + .globl gUnknown_852AA8C +gUnknown_852AA8C: @ 0x852AA8C + .incbin "baserom_jp.gba", 0x52aa8c, 0x8 + + .globl gUnknown_852AA94 +gUnknown_852AA94: @ 0x852AA94 + .incbin "baserom_jp.gba", 0x52aa94, 0x8 + + .globl gUnknown_852AA9C +gUnknown_852AA9C: @ 0x852AA9C + .incbin "baserom_jp.gba", 0x52aa9c, 0x44 + + .globl gUnknown_852AAE0 +gUnknown_852AAE0: @ 0x852AAE0 + .incbin "baserom_jp.gba", 0x52aae0, 0x18 + + .globl gUnknown_852AAF8 +gUnknown_852AAF8: @ 0x852AAF8 + .incbin "baserom_jp.gba", 0x52aaf8, 0x4 + + .globl gUnknown_852AAFC +gUnknown_852AAFC: @ 0x852AAFC + .incbin "baserom_jp.gba", 0x52aafc, 0x4 + + .globl gUnknown_852AB00 +gUnknown_852AB00: @ 0x852AB00 + .incbin "baserom_jp.gba", 0x52ab00, 0x14 + + .globl gUnknown_852AB14 +gUnknown_852AB14: @ 0x852AB14 + .incbin "baserom_jp.gba", 0x52ab14, 0x4 + + .globl gUnknown_852AB18 +gUnknown_852AB18: @ 0x852AB18 + .incbin "baserom_jp.gba", 0x52ab18, 0xc + + .globl gUnknown_852AB24 +gUnknown_852AB24: @ 0x852AB24 + .incbin "baserom_jp.gba", 0x52ab24, 0x8 + + .globl gUnknown_852AB2C +gUnknown_852AB2C: @ 0x852AB2C + .incbin "baserom_jp.gba", 0x52ab2c, 0x8 + + .globl gUnknown_852AB34 +gUnknown_852AB34: @ 0x852AB34 + .incbin "baserom_jp.gba", 0x52ab34, 0xc + + .globl gUnknown_852AB40 +gUnknown_852AB40: @ 0x852AB40 + .incbin "baserom_jp.gba", 0x52ab40, 0x3 + + .globl gUnknown_852AB43 +gUnknown_852AB43: @ 0x852AB43 + .incbin "baserom_jp.gba", 0x52ab43, 0x5 + + .globl gUnknown_852AB48 +gUnknown_852AB48: @ 0x852AB48 + .incbin "baserom_jp.gba", 0x52ab48, 0x48 + + .globl gUnknown_852AB90 +gUnknown_852AB90: @ 0x852AB90 + .incbin "baserom_jp.gba", 0x52ab90, 0x48 + + .globl gUnknown_852ABD8 +gUnknown_852ABD8: @ 0x852ABD8 + .incbin "baserom_jp.gba", 0x52abd8, 0x48 + + .globl gUnknown_852AC20 +gUnknown_852AC20: @ 0x852AC20 + .incbin "baserom_jp.gba", 0x52ac20, 0x48 + + .globl gUnknown_852AC68 +gUnknown_852AC68: @ 0x852AC68 + .incbin "baserom_jp.gba", 0x52ac68, 0x48 + + .globl gUnknown_852ACB0 +gUnknown_852ACB0: @ 0x852ACB0 + .incbin "baserom_jp.gba", 0x52acb0, 0x48 + + .globl gUnknown_852ACF8 +gUnknown_852ACF8: @ 0x852ACF8 + .incbin "baserom_jp.gba", 0x52acf8, 0x48 + + .globl gUnknown_852AD40 +gUnknown_852AD40: @ 0x852AD40 + .incbin "baserom_jp.gba", 0x52ad40, 0x4e0 + + .globl gUnknown_852B220 +gUnknown_852B220: @ 0x852B220 + .incbin "baserom_jp.gba", 0x52b220, 0x10 + + .globl gUnknown_852B230 +gUnknown_852B230: @ 0x852B230 + .incbin "baserom_jp.gba", 0x52b230, 0xc + + .globl gUnknown_852B23C +gUnknown_852B23C: @ 0x852B23C + .incbin "baserom_jp.gba", 0x52b23c, 0x3 + + .globl gUnknown_852B23F +gUnknown_852B23F: @ 0x852B23F + .incbin "baserom_jp.gba", 0x52b23f, 0x199 + + .globl gUnknown_852B3D8 +gUnknown_852B3D8: @ 0x852B3D8 + .incbin "baserom_jp.gba", 0x52b3d8, 0x10 + + .globl gUnknown_852B3E8 +gUnknown_852B3E8: @ 0x852B3E8 + .incbin "baserom_jp.gba", 0x52b3e8, 0x30 + + .globl gUnknown_852B418 +gUnknown_852B418: @ 0x852B418 + .incbin "baserom_jp.gba", 0x52b418, 0x48 + + .globl gUnknown_852B460 +gUnknown_852B460: @ 0x852B460 + .incbin "baserom_jp.gba", 0x52b460, 0x18 + + .globl gUnknown_852B478 +gUnknown_852B478: @ 0x852B478 + .incbin "baserom_jp.gba", 0x52b478, 0x257c + + .globl gUnknown_852D9F4 +gUnknown_852D9F4: @ 0x852D9F4 + .incbin "baserom_jp.gba", 0x52d9f4, 0xb4c + + .globl gUnknown_852E540 +gUnknown_852E540: @ 0x852E540 + .incbin "baserom_jp.gba", 0x52e540, 0x180 + + .globl gUnknown_852E6C0 +gUnknown_852E6C0: @ 0x852E6C0 + .incbin "baserom_jp.gba", 0x52e6c0, 0x64 + + .globl gUnknown_852E724 +gUnknown_852E724: @ 0x852E724 + .incbin "baserom_jp.gba", 0x52e724, 0x4 + + .globl gUnknown_852E728 +gUnknown_852E728: @ 0x852E728 + .incbin "baserom_jp.gba", 0x52e728, 0x73d4 + + .globl gUnknown_8535AFC +gUnknown_8535AFC: @ 0x8535AFC + .incbin "baserom_jp.gba", 0x535afc, 0x200 + + .globl gUnknown_8535CFC +gUnknown_8535CFC: @ 0x8535CFC + .incbin "baserom_jp.gba", 0x535cfc, 0x20 + + .globl gUnknown_8535D1C +gUnknown_8535D1C: @ 0x8535D1C + .incbin "baserom_jp.gba", 0x535d1c, 0x280 + + .globl gUnknown_8535F9C +gUnknown_8535F9C: @ 0x8535F9C + .incbin "baserom_jp.gba", 0x535f9c, 0x80 + + .globl gUnknown_853601C +gUnknown_853601C: @ 0x853601C + .incbin "baserom_jp.gba", 0x53601c, 0x20 + + .globl gUnknown_853603C +gUnknown_853603C: @ 0x853603C + .incbin "baserom_jp.gba", 0x53603c, 0x280 + + .globl gUnknown_85362BC +gUnknown_85362BC: @ 0x85362BC + .incbin "baserom_jp.gba", 0x5362bc, 0x20 + + .globl gUnknown_85362DC +gUnknown_85362DC: @ 0x85362DC + .incbin "baserom_jp.gba", 0x5362dc, 0xbc0 + + .globl gUnknown_8536E9C +gUnknown_8536E9C: @ 0x8536E9C + .incbin "baserom_jp.gba", 0x536e9c, 0x20 + + .globl gUnknown_8536EBC +gUnknown_8536EBC: @ 0x8536EBC + .incbin "baserom_jp.gba", 0x536ebc, 0x20 + + .globl gUnknown_8536EDC +gUnknown_8536EDC: @ 0x8536EDC + .incbin "baserom_jp.gba", 0x536edc, 0x14 + + .globl gUnknown_8536EF0 +gUnknown_8536EF0: @ 0x8536EF0 + .incbin "baserom_jp.gba", 0x536ef0, 0x68 + + .globl gUnknown_8536F58 +gUnknown_8536F58: @ 0x8536F58 + .incbin "baserom_jp.gba", 0x536f58, 0x18 + + .globl gUnknown_8536F70 +gUnknown_8536F70: @ 0x8536F70 + .incbin "baserom_jp.gba", 0x536f70, 0x40 + + .globl gUnknown_8536FB0 +gUnknown_8536FB0: @ 0x8536FB0 + .incbin "baserom_jp.gba", 0x536fb0, 0x18 + + .globl gUnknown_8536FC8 +gUnknown_8536FC8: @ 0x8536FC8 + .incbin "baserom_jp.gba", 0x536fc8, 0x18 + + .globl gUnknown_8536FE0 +gUnknown_8536FE0: @ 0x8536FE0 + .incbin "baserom_jp.gba", 0x536fe0, 0x18 + + .globl gUnknown_8536FF8 +gUnknown_8536FF8: @ 0x8536FF8 + .incbin "baserom_jp.gba", 0x536ff8, 0x18 + + .globl gUnknown_8537010 +gUnknown_8537010: @ 0x8537010 + .incbin "baserom_jp.gba", 0x537010, 0x10 + + .globl gUnknown_8537020 +gUnknown_8537020: @ 0x8537020 + .incbin "baserom_jp.gba", 0x537020, 0x10 + + .globl gUnknown_8537030 +gUnknown_8537030: @ 0x8537030 + .incbin "baserom_jp.gba", 0x537030, 0x20 + + .globl gUnknown_8537050 +gUnknown_8537050: @ 0x8537050 + .incbin "baserom_jp.gba", 0x537050, 0x18 + + .globl gUnknown_8537068 +gUnknown_8537068: @ 0x8537068 + .incbin "baserom_jp.gba", 0x537068, 0x4 + + .globl gUnknown_853706C +gUnknown_853706C: @ 0x853706C + .incbin "baserom_jp.gba", 0x53706c, 0x4 + + .globl gUnknown_8537070 +gUnknown_8537070: @ 0x8537070 + .incbin "baserom_jp.gba", 0x537070, 0x4 + + .globl gUnknown_8537074 +gUnknown_8537074: @ 0x8537074 + .incbin "baserom_jp.gba", 0x537074, 0x1c + + .globl gUnknown_8537090 +gUnknown_8537090: @ 0x8537090 + .incbin "baserom_jp.gba", 0x537090, 0x18 + + .globl gUnknown_85370A8 +gUnknown_85370A8: @ 0x85370A8 + .incbin "baserom_jp.gba", 0x5370a8, 0x1c + + .globl gUnknown_85370C4 +gUnknown_85370C4: @ 0x85370C4 + .incbin "baserom_jp.gba", 0x5370c4, 0x14 + + .globl gUnknown_85370D8 +gUnknown_85370D8: @ 0x85370D8 + .incbin "baserom_jp.gba", 0x5370d8, 0xc + + .globl gUnknown_85370E4 +gUnknown_85370E4: @ 0x85370E4 + .incbin "baserom_jp.gba", 0x5370e4, 0x18 + + .globl gUnknown_85370FC +gUnknown_85370FC: @ 0x85370FC + .incbin "baserom_jp.gba", 0x5370fc, 0x10 + + .globl gUnknown_853710C +gUnknown_853710C: @ 0x853710C + .incbin "baserom_jp.gba", 0x53710c, 0x14 + + .globl gUnknown_8537120 +gUnknown_8537120: @ 0x8537120 + .incbin "baserom_jp.gba", 0x537120, 0x8 + + .globl gUnknown_8537128 +gUnknown_8537128: @ 0x8537128 + .incbin "baserom_jp.gba", 0x537128, 0x8 + + .globl gUnknown_8537130 +gUnknown_8537130: @ 0x8537130 + .incbin "baserom_jp.gba", 0x537130, 0x8 + + .globl gUnknown_8537138 +gUnknown_8537138: @ 0x8537138 + .incbin "baserom_jp.gba", 0x537138, 0x10 + + .globl gUnknown_8537148 +gUnknown_8537148: @ 0x8537148 + .incbin "baserom_jp.gba", 0x537148, 0xc + + .globl gUnknown_8537154 +gUnknown_8537154: @ 0x8537154 + .incbin "baserom_jp.gba", 0x537154, 0x1c + + .globl gUnknown_8537170 +gUnknown_8537170: @ 0x8537170 + .incbin "baserom_jp.gba", 0x537170, 0x1c + + .globl gUnknown_853718C +gUnknown_853718C: @ 0x853718C + .incbin "baserom_jp.gba", 0x53718c, 0x14 + + .globl gUnknown_85371A0 +gUnknown_85371A0: @ 0x85371A0 + .incbin "baserom_jp.gba", 0x5371a0, 0x54 + + .globl gUnknown_85371F4 +gUnknown_85371F4: @ 0x85371F4 + .incbin "baserom_jp.gba", 0x5371f4, 0x8 + + .globl gUnknown_85371FC +gUnknown_85371FC: @ 0x85371FC + .incbin "baserom_jp.gba", 0x5371fc, 0x1c + + .globl gUnknown_8537218 +gUnknown_8537218: @ 0x8537218 + .incbin "baserom_jp.gba", 0x537218, 0x24 + + .globl gUnknown_853723C +gUnknown_853723C: @ 0x853723C + .incbin "baserom_jp.gba", 0x53723c, 0x5c + + .globl gUnknown_8537298 +gUnknown_8537298: @ 0x8537298 + .incbin "baserom_jp.gba", 0x537298, 0x18 + + .globl gUnknown_85372B0 +gUnknown_85372B0: @ 0x85372B0 + .incbin "baserom_jp.gba", 0x5372b0, 0x60 + + .globl gUnknown_8537310 +gUnknown_8537310: @ 0x8537310 + .incbin "baserom_jp.gba", 0x537310, 0x40 + + .globl gUnknown_8537350 +gUnknown_8537350: @ 0x8537350 + .incbin "baserom_jp.gba", 0x537350, 0x1c + + .globl gUnknown_853736C +gUnknown_853736C: @ 0x853736C + .incbin "baserom_jp.gba", 0x53736c, 0xa + + .globl gUnknown_8537376 +gUnknown_8537376: @ 0x8537376 + .incbin "baserom_jp.gba", 0x537376, 0xa + + .globl gUnknown_8537380 +gUnknown_8537380: @ 0x8537380 + .incbin "baserom_jp.gba", 0x537380, 0xa + + .globl gUnknown_853738A +gUnknown_853738A: @ 0x853738A + .incbin "baserom_jp.gba", 0x53738a, 0x9 + + .globl gUnknown_8537393 +gUnknown_8537393: @ 0x8537393 + .incbin "baserom_jp.gba", 0x537393, 0xa + + .globl gUnknown_853739D +gUnknown_853739D: @ 0x853739D + .incbin "baserom_jp.gba", 0x53739d, 0xb + + .globl gUnknown_85373A8 +gUnknown_85373A8: @ 0x85373A8 + .incbin "baserom_jp.gba", 0x5373a8, 0xb + + .globl gUnknown_85373B3 +gUnknown_85373B3: @ 0x85373B3 + .incbin "baserom_jp.gba", 0x5373b3, 0xb + + .globl gUnknown_85373BE +gUnknown_85373BE: @ 0x85373BE + .incbin "baserom_jp.gba", 0x5373be, 0xb + + .globl gUnknown_85373C9 +gUnknown_85373C9: @ 0x85373C9 + .incbin "baserom_jp.gba", 0x5373c9, 0xa + + .globl gUnknown_85373D3 +gUnknown_85373D3: @ 0x85373D3 + .incbin "baserom_jp.gba", 0x5373d3, 0x7 + + .globl gUnknown_85373DA +gUnknown_85373DA: @ 0x85373DA + .incbin "baserom_jp.gba", 0x5373da, 0xb + + .globl gUnknown_85373E5 +gUnknown_85373E5: @ 0x85373E5 + .incbin "baserom_jp.gba", 0x5373e5, 0x9 + + .globl gUnknown_85373EE +gUnknown_85373EE: @ 0x85373EE + .incbin "baserom_jp.gba", 0x5373ee, 0xe + + .globl gUnknown_85373FC +gUnknown_85373FC: @ 0x85373FC + .incbin "baserom_jp.gba", 0x5373fc, 0x18 + + .globl gUnknown_8537414 +gUnknown_8537414: @ 0x8537414 + .incbin "baserom_jp.gba", 0x537414, 0x8 + + .globl gUnknown_853741C +gUnknown_853741C: @ 0x853741C + .incbin "baserom_jp.gba", 0x53741c, 0x6 + + .globl gUnknown_8537422 +gUnknown_8537422: @ 0x8537422 + .incbin "baserom_jp.gba", 0x537422, 0x60 + + .globl gUnknown_8537482 +gUnknown_8537482: @ 0x8537482 + .incbin "baserom_jp.gba", 0x537482, 0x60 + + .globl gUnknown_85374E2 +gUnknown_85374E2: @ 0x85374E2 + .incbin "baserom_jp.gba", 0x5374e2, 0xc0 + + .globl gUnknown_85375A2 +gUnknown_85375A2: @ 0x85375A2 + .incbin "baserom_jp.gba", 0x5375a2, 0xbe + + .globl gUnknown_8537660 +gUnknown_8537660: @ 0x8537660 + .incbin "baserom_jp.gba", 0x537660, 0xd0 + + .globl gUnknown_8537730 +gUnknown_8537730: @ 0x8537730 + .incbin "baserom_jp.gba", 0x537730, 0xd4 + + .globl gUnknown_8537804 +gUnknown_8537804: @ 0x8537804 + .incbin "baserom_jp.gba", 0x537804, 0x150 + + .globl gUnknown_8537954 +gUnknown_8537954: @ 0x8537954 + .incbin "baserom_jp.gba", 0x537954, 0xbc + + .globl gUnknown_8537A10 +gUnknown_8537A10: @ 0x8537A10 + .incbin "baserom_jp.gba", 0x537a10, 0x134 + + .globl gUnknown_8537B44 +gUnknown_8537B44: @ 0x8537B44 + .incbin "baserom_jp.gba", 0x537b44, 0xec + + .globl gUnknown_8537C30 +gUnknown_8537C30: @ 0x8537C30 + .incbin "baserom_jp.gba", 0x537c30, 0xf4 + + .globl gUnknown_8537D24 +gUnknown_8537D24: @ 0x8537D24 + .incbin "baserom_jp.gba", 0x537d24, 0x90 + + .globl gUnknown_8537DB4 +gUnknown_8537DB4: @ 0x8537DB4 + .incbin "baserom_jp.gba", 0x537db4, 0xd8 + + .globl gUnknown_8537E8C +gUnknown_8537E8C: @ 0x8537E8C + .incbin "baserom_jp.gba", 0x537e8c, 0x1168 + + .globl gUnknown_8538FF4 +gUnknown_8538FF4: @ 0x8538FF4 + .incbin "baserom_jp.gba", 0x538ff4, 0x336 + + .globl gUnknown_853932A +gUnknown_853932A: @ 0x853932A + .incbin "baserom_jp.gba", 0x53932a, 0x304 + + .globl gUnknown_853962E +gUnknown_853962E: @ 0x853962E + .incbin "baserom_jp.gba", 0x53962e, 0x4b6 + + .globl gUnknown_8539AE4 +gUnknown_8539AE4: @ 0x8539AE4 + .incbin "baserom_jp.gba", 0x539ae4, 0x18 + + .globl gUnknown_8539AFC +gUnknown_8539AFC: @ 0x8539AFC + .incbin "baserom_jp.gba", 0x539afc, 0x18 + + .globl gUnknown_8539B14 +gUnknown_8539B14: @ 0x8539B14 + .incbin "baserom_jp.gba", 0x539b14, 0x18 + + .globl gUnknown_8539B2C +gUnknown_8539B2C: @ 0x8539B2C + .incbin "baserom_jp.gba", 0x539b2c, 0x18 + + .globl gUnknown_8539B44 +gUnknown_8539B44: @ 0x8539B44 + .incbin "baserom_jp.gba", 0x539b44, 0x18 + + .globl gUnknown_8539B5C +gUnknown_8539B5C: @ 0x8539B5C + .incbin "baserom_jp.gba", 0x539b5c, 0x18 + + .globl gUnknown_8539B74 +gUnknown_8539B74: @ 0x8539B74 + .incbin "baserom_jp.gba", 0x539b74, 0x18 + + .globl gUnknown_8539B8C +gUnknown_8539B8C: @ 0x8539B8C + .incbin "baserom_jp.gba", 0x539b8c, 0x18 + + .globl gUnknown_8539BA4 +gUnknown_8539BA4: @ 0x8539BA4 + .incbin "baserom_jp.gba", 0x539ba4, 0x18 + + .globl gUnknown_8539BBC +gUnknown_8539BBC: @ 0x8539BBC + .incbin "baserom_jp.gba", 0x539bbc, 0x10 + + .globl gUnknown_8539BCC +gUnknown_8539BCC: @ 0x8539BCC + .incbin "baserom_jp.gba", 0x539bcc, 0x10 + + .globl gUnknown_8539BDC +gUnknown_8539BDC: @ 0x8539BDC + .incbin "baserom_jp.gba", 0x539bdc, 0x5 + + .globl gUnknown_8539BE1 +gUnknown_8539BE1: @ 0x8539BE1 + .incbin "baserom_jp.gba", 0x539be1, 0x7 + + .globl gUnknown_8539BE8 +gUnknown_8539BE8: @ 0x8539BE8 + .incbin "baserom_jp.gba", 0x539be8, 0x10 + + .globl gUnknown_8539BF8 +gUnknown_8539BF8: @ 0x8539BF8 + .incbin "baserom_jp.gba", 0x539bf8, 0x10 + + .globl gUnknown_8539C08 +gUnknown_8539C08: @ 0x8539C08 + .incbin "baserom_jp.gba", 0x539c08, 0x6 + + .globl gUnknown_8539C0E +gUnknown_8539C0E: @ 0x8539C0E + .incbin "baserom_jp.gba", 0x539c0e, 0x42 + + .globl gUnknown_8539C50 +gUnknown_8539C50: @ 0x8539C50 + .incbin "baserom_jp.gba", 0x539c50, 0x6a4c + + .globl gUnknown_854069C +gUnknown_854069C: @ 0x854069C + .incbin "baserom_jp.gba", 0x54069c, 0x2a54 + + .globl gUnknown_85430F0 +gUnknown_85430F0: @ 0x85430F0 + .incbin "baserom_jp.gba", 0x5430f0, 0x20 + + .globl gUnknown_8543110 +gUnknown_8543110: @ 0x8543110 + .incbin "baserom_jp.gba", 0x543110, 0x10 + + .globl gUnknown_8543120 +gUnknown_8543120: @ 0x8543120 + .incbin "baserom_jp.gba", 0x543120, 0x28 + + .globl gUnknown_8543148 +gUnknown_8543148: @ 0x8543148 + .incbin "baserom_jp.gba", 0x543148, 0x8 + + .globl gUnknown_8543150 +gUnknown_8543150: @ 0x8543150 + .incbin "baserom_jp.gba", 0x543150, 0x18 + + .globl gUnknown_8543168 +gUnknown_8543168: @ 0x8543168 + .incbin "baserom_jp.gba", 0x543168, 0x676 + + .globl gUnknown_85437DE +gUnknown_85437DE: @ 0x85437DE + .incbin "baserom_jp.gba", 0x5437de, 0x7e + + .globl gUnknown_854385C +gUnknown_854385C: @ 0x854385C + .incbin "baserom_jp.gba", 0x54385c, 0x58c + + .globl gUnknown_8543DE8 +gUnknown_8543DE8: @ 0x8543DE8 + .incbin "baserom_jp.gba", 0x543de8, 0x19c + + .globl gUnknown_8543F84 +gUnknown_8543F84: @ 0x8543F84 + .incbin "baserom_jp.gba", 0x543f84, 0x188 + + .globl gUnknown_854410C +gUnknown_854410C: @ 0x854410C + .incbin "baserom_jp.gba", 0x54410c, 0x28 + + .globl gUnknown_8544134 +gUnknown_8544134: @ 0x8544134 + .incbin "baserom_jp.gba", 0x544134, 0x18 + + .globl gUnknown_854414C +gUnknown_854414C: @ 0x854414C + .incbin "baserom_jp.gba", 0x54414c, 0x54 + + .globl gUnknown_85441A0 +gUnknown_85441A0: @ 0x85441A0 + .incbin "baserom_jp.gba", 0x5441a0, 0x1c + + .globl gUnknown_85441BC +gUnknown_85441BC: @ 0x85441BC + .incbin "baserom_jp.gba", 0x5441bc, 0x1c + + .globl gUnknown_85441D8 +gUnknown_85441D8: @ 0x85441D8 + .incbin "baserom_jp.gba", 0x5441d8, 0x1c + + .globl gUnknown_85441F4 +gUnknown_85441F4: @ 0x85441F4 + .incbin "baserom_jp.gba", 0x5441f4, 0x1c + + .globl gUnknown_8544210 +gUnknown_8544210: @ 0x8544210 + .incbin "baserom_jp.gba", 0x544210, 0x18 + + .globl gUnknown_8544228 +gUnknown_8544228: @ 0x8544228 + .incbin "baserom_jp.gba", 0x544228, 0x38 + + .globl gUnknown_8544260 +gUnknown_8544260: @ 0x8544260 + .incbin "baserom_jp.gba", 0x544260, 0x58 + + .globl gUnknown_85442B8 +gUnknown_85442B8: @ 0x85442B8 + .incbin "baserom_jp.gba", 0x5442b8, 0x60 + + .globl gUnknown_8544318 +gUnknown_8544318: @ 0x8544318 + .incbin "baserom_jp.gba", 0x544318, 0x98 + + .globl gUnknown_85443B0 +gUnknown_85443B0: @ 0x85443B0 + .incbin "baserom_jp.gba", 0x5443b0, 0x2 + + .globl gUnknown_85443B2 +gUnknown_85443B2: @ 0x85443B2 + .incbin "baserom_jp.gba", 0x5443b2, 0x6 + + .globl gUnknown_85443B8 +gUnknown_85443B8: @ 0x85443B8 + .incbin "baserom_jp.gba", 0x5443b8, 0x14 + + .globl gUnknown_85443CC +gUnknown_85443CC: @ 0x85443CC + .incbin "baserom_jp.gba", 0x5443cc, 0x30 + + .globl gUnknown_85443FC +gUnknown_85443FC: @ 0x85443FC + .incbin "baserom_jp.gba", 0x5443fc, 0x10 + + .globl gUnknown_854440C +gUnknown_854440C: @ 0x854440C + .incbin "baserom_jp.gba", 0x54440c, 0x10 + + .globl gUnknown_854441C +gUnknown_854441C: @ 0x854441C + .incbin "baserom_jp.gba", 0x54441c, 0x740 + + .globl gUnknown_8544B5C +gUnknown_8544B5C: @ 0x8544B5C + .incbin "baserom_jp.gba", 0x544b5c, 0x6c0 + + .globl gUnknown_854521C +gUnknown_854521C: @ 0x854521C + .incbin "baserom_jp.gba", 0x54521c, 0x174 + + .globl gUnknown_8545390 +gUnknown_8545390: @ 0x8545390 + .incbin "baserom_jp.gba", 0x545390, 0x1a0 + + .globl gUnknown_8545530 +gUnknown_8545530: @ 0x8545530 + .incbin "baserom_jp.gba", 0x545530, 0x1b8 + + .globl gUnknown_85456E8 +gUnknown_85456E8: @ 0x85456E8 + .incbin "baserom_jp.gba", 0x5456e8, 0xdc + + .globl gUnknown_85457C4 +gUnknown_85457C4: @ 0x85457C4 + .incbin "baserom_jp.gba", 0x5457c4, 0x12c + + .globl gUnknown_85458F0 +gUnknown_85458F0: @ 0x85458F0 + .incbin "baserom_jp.gba", 0x5458f0, 0x180 + + .globl gUnknown_8545A70 +gUnknown_8545A70: @ 0x8545A70 + .incbin "baserom_jp.gba", 0x545a70, 0x18c + + .globl gUnknown_8545BFC +gUnknown_8545BFC: @ 0x8545BFC + .incbin "baserom_jp.gba", 0x545bfc, 0x98 + + .globl gUnknown_8545C94 +gUnknown_8545C94: @ 0x8545C94 + .incbin "baserom_jp.gba", 0x545c94, 0x478 + + .globl gUnknown_854610C +gUnknown_854610C: @ 0x854610C + .incbin "baserom_jp.gba", 0x54610c, 0x20 + + .globl gUnknown_854612C +gUnknown_854612C: @ 0x854612C + .incbin "baserom_jp.gba", 0x54612c, 0x20 + + .globl gUnknown_854614C +gUnknown_854614C: @ 0x854614C + .incbin "baserom_jp.gba", 0x54614c, 0x20 + + .globl gUnknown_854616C +gUnknown_854616C: @ 0x854616C + .incbin "baserom_jp.gba", 0x54616c, 0x20 + + .globl gUnknown_854618C +gUnknown_854618C: @ 0x854618C + .incbin "baserom_jp.gba", 0x54618c, 0x20 + + .globl gUnknown_85461AC +gUnknown_85461AC: @ 0x85461AC + .incbin "baserom_jp.gba", 0x5461ac, 0x20 + + .globl gUnknown_85461CC +gUnknown_85461CC: @ 0x85461CC + .incbin "baserom_jp.gba", 0x5461cc, 0x20 + + .globl gUnknown_85461EC +gUnknown_85461EC: @ 0x85461EC + .incbin "baserom_jp.gba", 0x5461ec, 0x20 + + .globl gUnknown_854620C +gUnknown_854620C: @ 0x854620C + .incbin "baserom_jp.gba", 0x54620c, 0x20 + + .globl gUnknown_854622C +gUnknown_854622C: @ 0x854622C + .incbin "baserom_jp.gba", 0x54622c, 0x248 + + .globl gUnknown_8546474 +gUnknown_8546474: @ 0x8546474 + .incbin "baserom_jp.gba", 0x546474, 0x2a0 + + .globl gUnknown_8546714 +gUnknown_8546714: @ 0x8546714 + .incbin "baserom_jp.gba", 0x546714, 0x10 + + .globl gUnknown_8546724 +gUnknown_8546724: @ 0x8546724 + .incbin "baserom_jp.gba", 0x546724, 0x20 + + .globl gUnknown_8546744 +gUnknown_8546744: @ 0x8546744 + .incbin "baserom_jp.gba", 0x546744, 0x14 + + .globl gUnknown_8546758 +gUnknown_8546758: @ 0x8546758 + .incbin "baserom_jp.gba", 0x546758, 0x14 + + .globl gUnknown_854676C +gUnknown_854676C: @ 0x854676C + .incbin "baserom_jp.gba", 0x54676c, 0x3 + + .globl gUnknown_854676F +gUnknown_854676F: @ 0x854676F + .incbin "baserom_jp.gba", 0x54676f, 0x6 + + .globl gUnknown_8546775 +gUnknown_8546775: @ 0x8546775 + .incbin "baserom_jp.gba", 0x546775, 0x3 + + .globl gUnknown_8546778 +gUnknown_8546778: @ 0x8546778 + .incbin "baserom_jp.gba", 0x546778, 0x8 + + .globl gUnknown_8546780 +gUnknown_8546780: @ 0x8546780 + .incbin "baserom_jp.gba", 0x546780, 0x8 + + .globl gUnknown_8546788 +gUnknown_8546788: @ 0x8546788 + .incbin "baserom_jp.gba", 0x546788, 0x18 + + .globl gUnknown_85467A0 +gUnknown_85467A0: @ 0x85467A0 + .incbin "baserom_jp.gba", 0x5467a0, 0x2 + + .globl gUnknown_85467A2 +gUnknown_85467A2: @ 0x85467A2 + .incbin "baserom_jp.gba", 0x5467a2, 0x2 + + .globl gUnknown_85467A4 +gUnknown_85467A4: @ 0x85467A4 + .incbin "baserom_jp.gba", 0x5467a4, 0x8 + + .globl gUnknown_85467AC +gUnknown_85467AC: @ 0x85467AC + .incbin "baserom_jp.gba", 0x5467ac, 0x2 + + .globl gUnknown_85467AE +gUnknown_85467AE: @ 0x85467AE + .incbin "baserom_jp.gba", 0x5467ae, 0x2 + + .globl gUnknown_85467B0 +gUnknown_85467B0: @ 0x85467B0 + .incbin "baserom_jp.gba", 0x5467b0, 0x2 + + .globl gUnknown_85467B2 +gUnknown_85467B2: @ 0x85467B2 + .incbin "baserom_jp.gba", 0x5467b2, 0x2 + + .globl gUnknown_85467B4 +gUnknown_85467B4: @ 0x85467B4 + .incbin "baserom_jp.gba", 0x5467b4, 0x2 + + .globl gUnknown_85467B6 +gUnknown_85467B6: @ 0x85467B6 + .incbin "baserom_jp.gba", 0x5467b6, 0x2 + + .globl gUnknown_85467B8 +gUnknown_85467B8: @ 0x85467B8 + .incbin "baserom_jp.gba", 0x5467b8, 0x9 + + .globl gUnknown_85467C1 +gUnknown_85467C1: @ 0x85467C1 + .incbin "baserom_jp.gba", 0x5467c1, 0x3 + + .globl gUnknown_85467C4 +gUnknown_85467C4: @ 0x85467C4 + .incbin "baserom_jp.gba", 0x5467c4, 0xc + + .globl gUnknown_85467D0 +gUnknown_85467D0: @ 0x85467D0 + .incbin "baserom_jp.gba", 0x5467d0, 0x6 + + .globl gUnknown_85467D6 +gUnknown_85467D6: @ 0x85467D6 + .incbin "baserom_jp.gba", 0x5467d6, 0x6 + + .globl gUnknown_85467DC +gUnknown_85467DC: @ 0x85467DC + .incbin "baserom_jp.gba", 0x5467dc, 0x4 + + .globl gUnknown_85467E0 +gUnknown_85467E0: @ 0x85467E0 + .incbin "baserom_jp.gba", 0x5467e0, 0x4 + + .globl gUnknown_85467E4 +gUnknown_85467E4: @ 0x85467E4 + .incbin "baserom_jp.gba", 0x5467e4, 0x1c0 + + .globl gUnknown_85469A4 +gUnknown_85469A4: @ 0x85469A4 + .incbin "baserom_jp.gba", 0x5469a4, 0x17c4 + + .globl gUnknown_8548168 +gUnknown_8548168: @ 0x8548168 + .incbin "baserom_jp.gba", 0x548168, 0x14a8 + + .globl gUnknown_8549610 +gUnknown_8549610: @ 0x8549610 + .incbin "baserom_jp.gba", 0x549610, 0x2e8 + + .globl gUnknown_85498F8 +gUnknown_85498F8: @ 0x85498F8 + .incbin "baserom_jp.gba", 0x5498f8, 0x260 + + .globl gUnknown_8549B58 +gUnknown_8549B58: @ 0x8549B58 + .incbin "baserom_jp.gba", 0x549b58, 0x260 + + .globl gUnknown_8549DB8 +gUnknown_8549DB8: @ 0x8549DB8 + .incbin "baserom_jp.gba", 0x549db8, 0x18 + + .globl gUnknown_8549DD0 +gUnknown_8549DD0: @ 0x8549DD0 + .incbin "baserom_jp.gba", 0x549dd0, 0x18 + + .globl gUnknown_8549DE8 +gUnknown_8549DE8: @ 0x8549DE8 + .incbin "baserom_jp.gba", 0x549de8, 0x38 + + .globl gUnknown_8549E20 +gUnknown_8549E20: @ 0x8549E20 + .incbin "baserom_jp.gba", 0x549e20, 0xffc + + .globl gUnknown_854AE1C +gUnknown_854AE1C: @ 0x854AE1C + .incbin "baserom_jp.gba", 0x54ae1c, 0xe8 + + .globl gUnknown_854AF04 +gUnknown_854AF04: @ 0x854AF04 + .incbin "baserom_jp.gba", 0x54af04, 0x8 + + .globl gUnknown_854AF0C +gUnknown_854AF0C: @ 0x854AF0C + .incbin "baserom_jp.gba", 0x54af0c, 0xc + + .globl gUnknown_854AF18 +gUnknown_854AF18: @ 0x854AF18 + .incbin "baserom_jp.gba", 0x54af18, 0xc + + .globl gUnknown_854AF24 +gUnknown_854AF24: @ 0x854AF24 + .incbin "baserom_jp.gba", 0x54af24, 0x28 + + .globl gUnknown_854AF4C +gUnknown_854AF4C: @ 0x854AF4C + .incbin "baserom_jp.gba", 0x54af4c, 0x20 + + .globl gUnknown_854AF6C +gUnknown_854AF6C: @ 0x854AF6C + .incbin "baserom_jp.gba", 0x54af6c, 0x3 + + .globl gUnknown_854AF6F +gUnknown_854AF6F: @ 0x854AF6F + .incbin "baserom_jp.gba", 0x54af6f, 0x3 + + .globl gUnknown_854AF72 +gUnknown_854AF72: @ 0x854AF72 + .incbin "baserom_jp.gba", 0x54af72, 0x6 + + .globl gUnknown_854AF78 +gUnknown_854AF78: @ 0x854AF78 + .incbin "baserom_jp.gba", 0x54af78, 0x68 + + .globl gUnknown_854AFE0 +gUnknown_854AFE0: @ 0x854AFE0 + .incbin "baserom_jp.gba", 0x54afe0, 0x18 + + .globl gUnknown_854AFF8 +gUnknown_854AFF8: @ 0x854AFF8 + .incbin "baserom_jp.gba", 0x54aff8, 0x10 + + .globl gUnknown_854B008 +gUnknown_854B008: @ 0x854B008 + .incbin "baserom_jp.gba", 0x54b008, 0xd0 + + .globl gUnknown_854B0D8 +gUnknown_854B0D8: @ 0x854B0D8 + .incbin "baserom_jp.gba", 0x54b0d8, 0x30 + + .globl gUnknown_854B108 +gUnknown_854B108: @ 0x854B108 + .incbin "baserom_jp.gba", 0x54b108, 0x18 + + .globl gUnknown_854B120 +gUnknown_854B120: @ 0x854B120 + .incbin "baserom_jp.gba", 0x54b120, 0x18 + + .globl gUnknown_854B138 +gUnknown_854B138: @ 0x854B138 + .incbin "baserom_jp.gba", 0x54b138, 0x3c + + .globl gUnknown_854B174 +gUnknown_854B174: @ 0x854B174 + .incbin "baserom_jp.gba", 0x54b174, 0x70 + + .globl gUnknown_854B1E4 +gUnknown_854B1E4: @ 0x854B1E4 + .incbin "baserom_jp.gba", 0x54b1e4, 0x28 + + .globl gUnknown_854B20C +gUnknown_854B20C: @ 0x854B20C + .incbin "baserom_jp.gba", 0x54b20c, 0x28 + + .globl gUnknown_854B234 +gUnknown_854B234: @ 0x854B234 + .incbin "baserom_jp.gba", 0x54b234, 0x24 + + .globl gUnknown_854B258 +gUnknown_854B258: @ 0x854B258 + .incbin "baserom_jp.gba", 0x54b258, 0x4 + + .globl gUnknown_854B25C +gUnknown_854B25C: @ 0x854B25C + .incbin "baserom_jp.gba", 0x54b25c, 0x20 + + .globl gUnknown_854B27C +gUnknown_854B27C: @ 0x854B27C + .incbin "baserom_jp.gba", 0x54b27c, 0x800 + + .globl gUnknown_854BA7C +gUnknown_854BA7C: @ 0x854BA7C + .incbin "baserom_jp.gba", 0x54ba7c, 0x180 + + .globl gUnknown_854BBFC +gUnknown_854BBFC: @ 0x854BBFC + .incbin "baserom_jp.gba", 0x54bbfc, 0x98 + + .globl gUnknown_854BC94 +gUnknown_854BC94: @ 0x854BC94 + .incbin "baserom_jp.gba", 0x54bc94, 0x12c + + .globl gUnknown_854BDC0 +gUnknown_854BDC0: @ 0x854BDC0 + .incbin "baserom_jp.gba", 0x54bdc0, 0xfc + + .globl gUnknown_854BEBC +gUnknown_854BEBC: @ 0x854BEBC + .incbin "baserom_jp.gba", 0x54bebc, 0x40 + + .globl gUnknown_854BEFC +gUnknown_854BEFC: @ 0x854BEFC + .incbin "baserom_jp.gba", 0x54befc, 0x20 + + .globl gUnknown_854BF1C +gUnknown_854BF1C: @ 0x854BF1C + .incbin "baserom_jp.gba", 0x54bf1c, 0x20 + + .globl gUnknown_854BF3C +gUnknown_854BF3C: @ 0x854BF3C + .incbin "baserom_jp.gba", 0x54bf3c, 0x20 + + .globl gUnknown_854BF5C +gUnknown_854BF5C: @ 0x854BF5C + .incbin "baserom_jp.gba", 0x54bf5c, 0x20 + + .globl gUnknown_854BF7C +gUnknown_854BF7C: @ 0x854BF7C + .incbin "baserom_jp.gba", 0x54bf7c, 0x20 + + .globl gUnknown_854BF9C +gUnknown_854BF9C: @ 0x854BF9C + .incbin "baserom_jp.gba", 0x54bf9c, 0x6c0 + + .globl gUnknown_854C65C +gUnknown_854C65C: @ 0x854C65C + .incbin "baserom_jp.gba", 0x54c65c, 0xb0 + + .globl gUnknown_854C70C +gUnknown_854C70C: @ 0x854C70C + .incbin "baserom_jp.gba", 0x54c70c, 0x48 + + .globl gUnknown_854C754 +gUnknown_854C754: @ 0x854C754 + .incbin "baserom_jp.gba", 0x54c754, 0x18 + + .globl gUnknown_854C76C +gUnknown_854C76C: @ 0x854C76C + .incbin "baserom_jp.gba", 0x54c76c, 0x238 + + .globl gUnknown_854C9A4 +gUnknown_854C9A4: @ 0x854C9A4 + .incbin "baserom_jp.gba", 0x54c9a4, 0x20 + + .globl gUnknown_854C9C4 +gUnknown_854C9C4: @ 0x854C9C4 + .incbin "baserom_jp.gba", 0x54c9c4, 0x20 + + .globl gUnknown_854C9E4 +gUnknown_854C9E4: @ 0x854C9E4 + .incbin "baserom_jp.gba", 0x54c9e4, 0x10 + + .globl gUnknown_854C9F4 +gUnknown_854C9F4: @ 0x854C9F4 + .incbin "baserom_jp.gba", 0x54c9f4, 0x8 + + .globl gUnknown_854C9FC +gUnknown_854C9FC: @ 0x854C9FC + .incbin "baserom_jp.gba", 0x54c9fc, 0x8 + + .globl gUnknown_854CA04 +gUnknown_854CA04: @ 0x854CA04 + .incbin "baserom_jp.gba", 0x54ca04, 0x18 + + .globl gUnknown_854CA1C +gUnknown_854CA1C: @ 0x854CA1C + .incbin "baserom_jp.gba", 0x54ca1c, 0xf8 + + .globl gUnknown_854CB14 +gUnknown_854CB14: @ 0x854CB14 + .incbin "baserom_jp.gba", 0x54cb14, 0x58 + + .globl gUnknown_854CB6C +gUnknown_854CB6C: @ 0x854CB6C + .incbin "baserom_jp.gba", 0x54cb6c, 0x18 + + .globl gUnknown_854CB84 +gUnknown_854CB84: @ 0x854CB84 + .incbin "baserom_jp.gba", 0x54cb84, 0x48 + + .globl gUnknown_854CBCC +gUnknown_854CBCC: @ 0x854CBCC + .incbin "baserom_jp.gba", 0x54cbcc, 0x4c58 + + .globl gUnknown_8551824 +gUnknown_8551824: @ 0x8551824 + .incbin "baserom_jp.gba", 0x551824, 0x44 + + .globl gUnknown_8551868 +gUnknown_8551868: @ 0x8551868 + .incbin "baserom_jp.gba", 0x551868, 0x41d8 + + .globl gUnknown_8555A40 +gUnknown_8555A40: @ 0x8555A40 + .incbin "baserom_jp.gba", 0x555a40, 0xc0 + + .globl gUnknown_8555B00 +gUnknown_8555B00: @ 0x8555B00 + .incbin "baserom_jp.gba", 0x555b00, 0x7c + + .globl gUnknown_8555B7C +gUnknown_8555B7C: @ 0x8555B7C + .incbin "baserom_jp.gba", 0x555b7c, 0x28 + + .globl gUnknown_8555BA4 +gUnknown_8555BA4: @ 0x8555BA4 + .incbin "baserom_jp.gba", 0x555ba4, 0x38 + + .globl gUnknown_8555BDC +gUnknown_8555BDC: @ 0x8555BDC + .incbin "baserom_jp.gba", 0x555bdc, 0x8b8 + + .globl gUnknown_8556494 +gUnknown_8556494: @ 0x8556494 + .incbin "baserom_jp.gba", 0x556494, 0xc + + .globl gUnknown_85564A0 +gUnknown_85564A0: @ 0x85564A0 + .incbin "baserom_jp.gba", 0x5564a0, 0x18 + + .globl gUnknown_85564B8 +gUnknown_85564B8: @ 0x85564B8 + .incbin "baserom_jp.gba", 0x5564b8, 0x28 + + .globl gUnknown_85564E0 +gUnknown_85564E0: @ 0x85564E0 + .incbin "baserom_jp.gba", 0x5564e0, 0x18 + + .globl gUnknown_85564F8 +gUnknown_85564F8: @ 0x85564F8 + .incbin "baserom_jp.gba", 0x5564f8, 0x54 + + .globl gUnknown_855654C +gUnknown_855654C: @ 0x855654C + .incbin "baserom_jp.gba", 0x55654c, 0x18 + + .globl gUnknown_8556564 +gUnknown_8556564: @ 0x8556564 + .incbin "baserom_jp.gba", 0x556564, 0x18 + + .globl gUnknown_855657C +gUnknown_855657C: @ 0x855657C + .incbin "baserom_jp.gba", 0x55657c, 0x9c + + .globl gUnknown_8556618 +gUnknown_8556618: @ 0x8556618 + .incbin "baserom_jp.gba", 0x556618, 0x8 + + .globl gUnknown_8556620 +gUnknown_8556620: @ 0x8556620 + .incbin "baserom_jp.gba", 0x556620, 0x14c + + .globl gUnknown_855676C +gUnknown_855676C: @ 0x855676C + .incbin "baserom_jp.gba", 0x55676c, 0x18 + + .globl gUnknown_8556784 +gUnknown_8556784: @ 0x8556784 + .incbin "baserom_jp.gba", 0x556784, 0x20 + + .globl gUnknown_85567A4 +gUnknown_85567A4: @ 0x85567A4 + .incbin "baserom_jp.gba", 0x5567a4, 0x60 + + .globl gUnknown_8556804 +gUnknown_8556804: @ 0x8556804 + .incbin "baserom_jp.gba", 0x556804, 0x6e0 + + .globl gUnknown_8556EE4 +gUnknown_8556EE4: @ 0x8556EE4 + .incbin "baserom_jp.gba", 0x556ee4, 0x1b8 + + .globl gUnknown_855709C +gUnknown_855709C: @ 0x855709C + .incbin "baserom_jp.gba", 0x55709c, 0x30 + + .globl gUnknown_85570CC +gUnknown_85570CC: @ 0x85570CC + .incbin "baserom_jp.gba", 0x5570cc, 0x44 + + .globl gUnknown_8557110 +gUnknown_8557110: @ 0x8557110 + .incbin "baserom_jp.gba", 0x557110, 0x34 + + .globl gUnknown_8557144 +gUnknown_8557144: @ 0x8557144 + .incbin "baserom_jp.gba", 0x557144, 0x8 + + .globl gUnknown_855714C +gUnknown_855714C: @ 0x855714C + .incbin "baserom_jp.gba", 0x55714c, 0x18 + + .globl gUnknown_8557164 +gUnknown_8557164: @ 0x8557164 + .incbin "baserom_jp.gba", 0x557164, 0x2 + + .globl gUnknown_8557166 +gUnknown_8557166: @ 0x8557166 + .incbin "baserom_jp.gba", 0x557166, 0x62 + + .globl gUnknown_85571C8 +gUnknown_85571C8: @ 0x85571C8 + .incbin "baserom_jp.gba", 0x5571c8, 0x18 + + .globl gUnknown_85571E0 +gUnknown_85571E0: @ 0x85571E0 + .incbin "baserom_jp.gba", 0x5571e0, 0x1680 + + .globl gUnknown_8558860 +gUnknown_8558860: @ 0x8558860 + .incbin "baserom_jp.gba", 0x558860, 0x1680 + + .globl gUnknown_8559EE0 +gUnknown_8559EE0: @ 0x8559EE0 + .incbin "baserom_jp.gba", 0x559ee0, 0xc0 + + .globl gUnknown_8559FA0 +gUnknown_8559FA0: @ 0x8559FA0 + .incbin "baserom_jp.gba", 0x559fa0, 0x20 + + .globl gUnknown_8559FC0 +gUnknown_8559FC0: @ 0x8559FC0 + .incbin "baserom_jp.gba", 0x559fc0, 0xb4 + + .globl gUnknown_855A074 +gUnknown_855A074: @ 0x855A074 + .incbin "baserom_jp.gba", 0x55a074, 0x5f0 + + .globl gUnknown_855A664 +gUnknown_855A664: @ 0x855A664 + .incbin "baserom_jp.gba", 0x55a664, 0x8 + + .globl gUnknown_855A66C +gUnknown_855A66C: @ 0x855A66C + .incbin "baserom_jp.gba", 0x55a66c, 0x8 + + .globl gUnknown_855A674 +gUnknown_855A674: @ 0x855A674 + .incbin "baserom_jp.gba", 0x55a674, 0x8 + + .globl gUnknown_855A67C +gUnknown_855A67C: @ 0x855A67C + .incbin "baserom_jp.gba", 0x55a67c, 0x4c + + .globl gUnknown_855A6C8 +gUnknown_855A6C8: @ 0x855A6C8 + .incbin "baserom_jp.gba", 0x55a6c8, 0x4 + + .globl gUnknown_855A6CC +gUnknown_855A6CC: @ 0x855A6CC + .incbin "baserom_jp.gba", 0x55a6cc, 0x4 + + .globl gUnknown_855A6D0 +gUnknown_855A6D0: @ 0x855A6D0 + .incbin "baserom_jp.gba", 0x55a6d0, 0x8 + + .globl gUnknown_855A6D8 +gUnknown_855A6D8: @ 0x855A6D8 + .incbin "baserom_jp.gba", 0x55a6d8, 0x8 + + .globl gUnknown_855A6E0 +gUnknown_855A6E0: @ 0x855A6E0 + .incbin "baserom_jp.gba", 0x55a6e0, 0x3c + + .globl gUnknown_855A71C +gUnknown_855A71C: @ 0x855A71C + .incbin "baserom_jp.gba", 0x55a71c, 0x90 + + .globl gUnknown_855A7AC +gUnknown_855A7AC: @ 0x855A7AC + .incbin "baserom_jp.gba", 0x55a7ac, 0x18 + + .globl gUnknown_855A7C4 +gUnknown_855A7C4: @ 0x855A7C4 + .incbin "baserom_jp.gba", 0x55a7c4, 0x158 + + .globl gUnknown_855A91C +gUnknown_855A91C: @ 0x855A91C + .incbin "baserom_jp.gba", 0x55a91c, 0x8 + + .globl gUnknown_855A924 +gUnknown_855A924: @ 0x855A924 + .incbin "baserom_jp.gba", 0x55a924, 0x1c + + .globl gUnknown_855A940 +gUnknown_855A940: @ 0x855A940 + .incbin "baserom_jp.gba", 0x55a940, 0x25a8 + + .globl gUnknown_855CEE8 +gUnknown_855CEE8: @ 0x855CEE8 + .incbin "baserom_jp.gba", 0x55cee8, 0x3ae8 + + .globl gUnknown_85609D0 +gUnknown_85609D0: @ 0x85609D0 + .incbin "baserom_jp.gba", 0x5609d0, 0x4 + + .globl gUnknown_85609D4 +gUnknown_85609D4: @ 0x85609D4 + .incbin "baserom_jp.gba", 0x5609d4, 0x4 + + .globl gUnknown_85609D8 +gUnknown_85609D8: @ 0x85609D8 + .incbin "baserom_jp.gba", 0x5609d8, 0x5c + + .globl gUnknown_8560A34 +gUnknown_8560A34: @ 0x8560A34 + .incbin "baserom_jp.gba", 0x560a34, 0x18 + + .globl gUnknown_8560A4C +gUnknown_8560A4C: @ 0x8560A4C + .incbin "baserom_jp.gba", 0x560a4c, 0x20 + + .globl gUnknown_8560A6C +gUnknown_8560A6C: @ 0x8560A6C + .incbin "baserom_jp.gba", 0x560a6c, 0x10 + + .globl gUnknown_8560A7C +gUnknown_8560A7C: @ 0x8560A7C + .incbin "baserom_jp.gba", 0x560a7c, 0x68 + + .globl gUnknown_8560AE4 +gUnknown_8560AE4: @ 0x8560AE4 + .incbin "baserom_jp.gba", 0x560ae4, 0x30 + + .globl gUnknown_8560B14 +gUnknown_8560B14: @ 0x8560B14 + .incbin "baserom_jp.gba", 0x560b14, 0x8 + + .globl gUnknown_8560B1C +gUnknown_8560B1C: @ 0x8560B1C + .incbin "baserom_jp.gba", 0x560b1c, 0x10 + + .globl gUnknown_8560B2C +gUnknown_8560B2C: @ 0x8560B2C + .incbin "baserom_jp.gba", 0x560b2c, 0x20 + + .globl gUnknown_8560B4C +gUnknown_8560B4C: @ 0x8560B4C + .incbin "baserom_jp.gba", 0x560b4c, 0x18 + + .globl gUnknown_8560B64 +gUnknown_8560B64: @ 0x8560B64 + .incbin "baserom_jp.gba", 0x560b64, 0x8 + + .globl gUnknown_8560B6C +gUnknown_8560B6C: @ 0x8560B6C + .incbin "baserom_jp.gba", 0x560b6c, 0x8 + + .globl gUnknown_8560B74 +gUnknown_8560B74: @ 0x8560B74 + .incbin "baserom_jp.gba", 0x560b74, 0x8 + + .globl gUnknown_8560B7C +gUnknown_8560B7C: @ 0x8560B7C + .incbin "baserom_jp.gba", 0x560b7c, 0x18 + + .globl gUnknown_8560B94 +gUnknown_8560B94: @ 0x8560B94 + .incbin "baserom_jp.gba", 0x560b94, 0x20 + + .globl gUnknown_8560BB4 +gUnknown_8560BB4: @ 0x8560BB4 + .incbin "baserom_jp.gba", 0x560bb4, 0xf8 + + .globl gUnknown_8560CAC +gUnknown_8560CAC: @ 0x8560CAC + .incbin "baserom_jp.gba", 0x560cac, 0x48 + + .globl gUnknown_8560CF4 +gUnknown_8560CF4: @ 0x8560CF4 + .incbin "baserom_jp.gba", 0x560cf4, 0x80 + + .globl gUnknown_8560D74 +gUnknown_8560D74: @ 0x8560D74 + .incbin "baserom_jp.gba", 0x560d74, 0xf8 + + .globl gUnknown_8560E6C +gUnknown_8560E6C: @ 0x8560E6C + .incbin "baserom_jp.gba", 0x560e6c, 0x14 + + .globl gUnknown_8560E80 +gUnknown_8560E80: @ 0x8560E80 + .incbin "baserom_jp.gba", 0x560e80, 0x18 + + .globl gUnknown_8560E98 +gUnknown_8560E98: @ 0x8560E98 + .incbin "baserom_jp.gba", 0x560e98, 0x10 + + .globl gUnknown_8560EA8 +gUnknown_8560EA8: @ 0x8560EA8 + .incbin "baserom_jp.gba", 0x560ea8, 0x80 + + .globl gUnknown_8560F28 +gUnknown_8560F28: @ 0x8560F28 + .incbin "baserom_jp.gba", 0x560f28, 0x100 + + .globl gUnknown_8561028 +gUnknown_8561028: @ 0x8561028 + .incbin "baserom_jp.gba", 0x561028, 0x1800 + + .globl gUnknown_8562828 +gUnknown_8562828: @ 0x8562828 + .incbin "baserom_jp.gba", 0x562828, 0x60 + + .globl gUnknown_8562888 +gUnknown_8562888: @ 0x8562888 + .incbin "baserom_jp.gba", 0x562888, 0x20 + + .globl gUnknown_85628A8 +gUnknown_85628A8: @ 0x85628A8 + .incbin "baserom_jp.gba", 0x5628a8, 0x68 + + .globl gUnknown_8562910 +gUnknown_8562910: @ 0x8562910 + .incbin "baserom_jp.gba", 0x562910, 0x60 + + .globl gUnknown_8562970 +gUnknown_8562970: @ 0x8562970 + .incbin "baserom_jp.gba", 0x562970, 0x1c + + .globl gUnknown_856298C +gUnknown_856298C: @ 0x856298C + .incbin "baserom_jp.gba", 0x56298c, 0x8 + + .globl gUnknown_8562994 +gUnknown_8562994: @ 0x8562994 + .incbin "baserom_jp.gba", 0x562994, 0x18 + + .globl gUnknown_85629AC +gUnknown_85629AC: @ 0x85629AC + .incbin "baserom_jp.gba", 0x5629ac, 0x10 + + .globl gUnknown_85629BC +gUnknown_85629BC: @ 0x85629BC + .incbin "baserom_jp.gba", 0x5629bc, 0x8 + + .globl gUnknown_85629C4 +gUnknown_85629C4: @ 0x85629C4 + .incbin "baserom_jp.gba", 0x5629c4, 0x8 + + .globl gUnknown_85629CC +gUnknown_85629CC: @ 0x85629CC + .incbin "baserom_jp.gba", 0x5629cc, 0x18 + + .globl gUnknown_85629E4 +gUnknown_85629E4: @ 0x85629E4 + .incbin "baserom_jp.gba", 0x5629e4, 0x10 + + .globl gUnknown_85629F4 +gUnknown_85629F4: @ 0x85629F4 + .incbin "baserom_jp.gba", 0x5629f4, 0x38 + + .globl gUnknown_8562A2C +gUnknown_8562A2C: @ 0x8562A2C + .incbin "baserom_jp.gba", 0x562a2c, 0x8 + + .globl gUnknown_8562A34 +gUnknown_8562A34: @ 0x8562A34 + .incbin "baserom_jp.gba", 0x562a34, 0xa + + .globl gUnknown_8562A3E +gUnknown_8562A3E: @ 0x8562A3E + .incbin "baserom_jp.gba", 0x562a3e, 0x6 + + .globl gUnknown_8562A44 +gUnknown_8562A44: @ 0x8562A44 + .incbin "baserom_jp.gba", 0x562a44, 0x6 + + .globl gUnknown_8562A4A +gUnknown_8562A4A: @ 0x8562A4A + .incbin "baserom_jp.gba", 0x562a4a, 0x6 + + .globl gUnknown_8562A50 +gUnknown_8562A50: @ 0x8562A50 + .incbin "baserom_jp.gba", 0x562a50, 0x6 + + .globl gUnknown_8562A56 +gUnknown_8562A56: @ 0x8562A56 + .incbin "baserom_jp.gba", 0x562a56, 0x6 + + .globl gUnknown_8562A5C +gUnknown_8562A5C: @ 0x8562A5C + .incbin "baserom_jp.gba", 0x562a5c, 0x6 + + .globl gUnknown_8562A62 +gUnknown_8562A62: @ 0x8562A62 + .incbin "baserom_jp.gba", 0x562a62, 0x6d2 + + .globl gUnknown_8563134 +gUnknown_8563134: @ 0x8563134 + .incbin "baserom_jp.gba", 0x563134, 0x1c + + .globl gUnknown_8563150 +gUnknown_8563150: @ 0x8563150 + .incbin "baserom_jp.gba", 0x563150, 0x4b4 + + .globl gUnknown_8563604 +gUnknown_8563604: @ 0x8563604 + .incbin "baserom_jp.gba", 0x563604, 0xac + + .globl gUnknown_85636B0 +gUnknown_85636B0: @ 0x85636B0 + .incbin "baserom_jp.gba", 0x5636b0, 0xb68 + + .globl gUnknown_8564218 +gUnknown_8564218: @ 0x8564218 + .incbin "baserom_jp.gba", 0x564218, 0x388 + + .globl gUnknown_85645A0 +gUnknown_85645A0: @ 0x85645A0 + .incbin "baserom_jp.gba", 0x5645a0, 0x78 + + .globl gUnknown_8564618 +gUnknown_8564618: @ 0x8564618 + .incbin "baserom_jp.gba", 0x564618, 0x8 + + .globl gUnknown_8564620 +gUnknown_8564620: @ 0x8564620 + .incbin "baserom_jp.gba", 0x564620, 0x1c + + .globl gUnknown_856463C +gUnknown_856463C: @ 0x856463C + .incbin "baserom_jp.gba", 0x56463c, 0x10 + + .globl gUnknown_856464C +gUnknown_856464C: @ 0x856464C + .incbin "baserom_jp.gba", 0x56464c, 0x10 + + .globl gUnknown_856465C +gUnknown_856465C: @ 0x856465C + .incbin "baserom_jp.gba", 0x56465c, 0x10 + + .globl gUnknown_856466C +gUnknown_856466C: @ 0x856466C + .incbin "baserom_jp.gba", 0x56466c, 0x14 + + .globl gUnknown_8564680 +gUnknown_8564680: @ 0x8564680 + .incbin "baserom_jp.gba", 0x564680, 0xc + + .globl gUnknown_856468C +gUnknown_856468C: @ 0x856468C + .incbin "baserom_jp.gba", 0x56468c, 0xb8c + + .globl gUnknown_8565218 +gUnknown_8565218: @ 0x8565218 + .incbin "baserom_jp.gba", 0x565218, 0x40 + + .globl gUnknown_8565258 +gUnknown_8565258: @ 0x8565258 + .incbin "baserom_jp.gba", 0x565258, 0xc0 + + .globl gUnknown_8565318 +gUnknown_8565318: @ 0x8565318 + .incbin "baserom_jp.gba", 0x565318, 0x20c + + .globl gUnknown_8565524 +gUnknown_8565524: @ 0x8565524 + .incbin "baserom_jp.gba", 0x565524, 0xdc + + .globl gUnknown_8565600 +gUnknown_8565600: @ 0x8565600 + .incbin "baserom_jp.gba", 0x565600, 0xc8 + + .globl gUnknown_85656C8 +gUnknown_85656C8: @ 0x85656C8 + .incbin "baserom_jp.gba", 0x5656c8, 0x190 + + .globl gUnknown_8565858 +gUnknown_8565858: @ 0x8565858 + .incbin "baserom_jp.gba", 0x565858, 0x48 + + .globl gUnknown_85658A0 +gUnknown_85658A0: @ 0x85658A0 + .incbin "baserom_jp.gba", 0x5658a0, 0x21 + + .globl gUnknown_85658C1 +gUnknown_85658C1: @ 0x85658C1 + .incbin "baserom_jp.gba", 0x5658c1, 0x13b + + .globl gUnknown_85659FC +gUnknown_85659FC: @ 0x85659FC + .incbin "baserom_jp.gba", 0x5659fc, 0x10 + + .globl gUnknown_8565A0C +gUnknown_8565A0C: @ 0x8565A0C + .incbin "baserom_jp.gba", 0x565a0c, 0x30 + + .globl gUnknown_8565A3C +gUnknown_8565A3C: @ 0x8565A3C + .incbin "baserom_jp.gba", 0x565a3c, 0x6 + + .globl gUnknown_8565A42 +gUnknown_8565A42: @ 0x8565A42 + .incbin "baserom_jp.gba", 0x565a42, 0x6 + + .globl gUnknown_8565A48 +gUnknown_8565A48: @ 0x8565A48 + .incbin "baserom_jp.gba", 0x565a48, 0x8 + + .globl gUnknown_8565A50 +gUnknown_8565A50: @ 0x8565A50 + .incbin "baserom_jp.gba", 0x565a50, 0x10 + + .globl gUnknown_8565A60 +gUnknown_8565A60: @ 0x8565A60 + .incbin "baserom_jp.gba", 0x565a60, 0x8 + + .globl gUnknown_8565A68 +gUnknown_8565A68: @ 0x8565A68 + .incbin "baserom_jp.gba", 0x565a68, 0x8 + + .globl gUnknown_8565A70 +gUnknown_8565A70: @ 0x8565A70 + .incbin "baserom_jp.gba", 0x565a70, 0x4 + + .globl gUnknown_8565A74 +gUnknown_8565A74: @ 0x8565A74 + .incbin "baserom_jp.gba", 0x565a74, 0x10 + + .globl gUnknown_8565A84 +gUnknown_8565A84: @ 0x8565A84 + .incbin "baserom_jp.gba", 0x565a84, 0x6 + + .globl gUnknown_8565A8A +gUnknown_8565A8A: @ 0x8565A8A + .incbin "baserom_jp.gba", 0x565a8a, 0x6 + + .globl gUnknown_8565A90 +gUnknown_8565A90: @ 0x8565A90 + .incbin "baserom_jp.gba", 0x565a90, 0x14 + + .globl gUnknown_8565AA4 +gUnknown_8565AA4: @ 0x8565AA4 + .incbin "baserom_jp.gba", 0x565aa4, 0x10 + + .globl gUnknown_8565AB4 +gUnknown_8565AB4: @ 0x8565AB4 + .incbin "baserom_jp.gba", 0x565ab4, 0xc + + .globl gUnknown_8565AC0 +gUnknown_8565AC0: @ 0x8565AC0 + .incbin "baserom_jp.gba", 0x565ac0, 0xa + + .globl gUnknown_8565ACA +gUnknown_8565ACA: @ 0x8565ACA + .incbin "baserom_jp.gba", 0x565aca, 0xa + + .globl gUnknown_8565AD4 +gUnknown_8565AD4: @ 0x8565AD4 + .incbin "baserom_jp.gba", 0x565ad4, 0x8 + + .globl gUnknown_8565ADC +gUnknown_8565ADC: @ 0x8565ADC + .incbin "baserom_jp.gba", 0x565adc, 0x8 + + .globl gUnknown_8565AE4 +gUnknown_8565AE4: @ 0x8565AE4 + .incbin "baserom_jp.gba", 0x565ae4, 0x14 + + .globl gUnknown_8565AF8 +gUnknown_8565AF8: @ 0x8565AF8 + .incbin "baserom_jp.gba", 0x565af8, 0x8 + + .globl gUnknown_8565B00 +gUnknown_8565B00: @ 0x8565B00 + .incbin "baserom_jp.gba", 0x565b00, 0x6 + + .globl gUnknown_8565B06 +gUnknown_8565B06: @ 0x8565B06 + .incbin "baserom_jp.gba", 0x565b06, 0xbb + + .globl gUnknown_8565BC1 +gUnknown_8565BC1: @ 0x8565BC1 + .incbin "baserom_jp.gba", 0x565bc1, 0xba + + .globl gUnknown_8565C7B +gUnknown_8565C7B: @ 0x8565C7B + .incbin "baserom_jp.gba", 0x565c7b, 0x11 + + .globl gUnknown_8565C8C +gUnknown_8565C8C: @ 0x8565C8C + .incbin "baserom_jp.gba", 0x565c8c, 0x4 + + .globl gUnknown_8565C90 +gUnknown_8565C90: @ 0x8565C90 + .incbin "baserom_jp.gba", 0x565c90, 0xc + + .globl gUnknown_8565C9C +gUnknown_8565C9C: @ 0x8565C9C + .incbin "baserom_jp.gba", 0x565c9c, 0x18 + + .globl gUnknown_8565CB4 +gUnknown_8565CB4: @ 0x8565CB4 + .incbin "baserom_jp.gba", 0x565cb4, 0x34 + + .globl gUnknown_8565CE8 +gUnknown_8565CE8: @ 0x8565CE8 + .incbin "baserom_jp.gba", 0x565ce8, 0x80 + + .globl gUnknown_8565D68 +gUnknown_8565D68: @ 0x8565D68 + .incbin "baserom_jp.gba", 0x565d68, 0x8 + + .globl gUnknown_8565D70 +gUnknown_8565D70: @ 0x8565D70 + .incbin "baserom_jp.gba", 0x565d70, 0x18 + + .globl gUnknown_8565D88 +gUnknown_8565D88: @ 0x8565D88 + .incbin "baserom_jp.gba", 0x565d88, 0x8 + + .globl gUnknown_8565D90 +gUnknown_8565D90: @ 0x8565D90 + .incbin "baserom_jp.gba", 0x565d90, 0x48 + + .globl gUnknown_8565DD8 +gUnknown_8565DD8: @ 0x8565DD8 + .incbin "baserom_jp.gba", 0x565dd8, 0x18 + + .globl gUnknown_8565DF0 +gUnknown_8565DF0: @ 0x8565DF0 + .incbin "baserom_jp.gba", 0x565df0, 0x18 + + .globl gUnknown_8565E08 +gUnknown_8565E08: @ 0x8565E08 + .incbin "baserom_jp.gba", 0x565e08, 0x18 + + .globl gUnknown_8565E20 +gUnknown_8565E20: @ 0x8565E20 + .incbin "baserom_jp.gba", 0x565e20, 0x18 + + .globl gUnknown_8565E38 +gUnknown_8565E38: @ 0x8565E38 + .incbin "baserom_jp.gba", 0x565e38, 0x18 + + .globl gUnknown_8565E50 +gUnknown_8565E50: @ 0x8565E50 + .incbin "baserom_jp.gba", 0x565e50, 0x18 + + .globl gUnknown_8565E68 +gUnknown_8565E68: @ 0x8565E68 + .incbin "baserom_jp.gba", 0x565e68, 0x18 + + .globl gUnknown_8565E80 +gUnknown_8565E80: @ 0x8565E80 + .incbin "baserom_jp.gba", 0x565e80, 0x18 + + .globl gUnknown_8565E98 +gUnknown_8565E98: @ 0x8565E98 + .incbin "baserom_jp.gba", 0x565e98, 0x18 + + .globl gUnknown_8565EB0 +gUnknown_8565EB0: @ 0x8565EB0 + .incbin "baserom_jp.gba", 0x565eb0, 0x30 + + .globl gUnknown_8565EE0 +gUnknown_8565EE0: @ 0x8565EE0 + .incbin "baserom_jp.gba", 0x565ee0, 0x68 + + .globl gUnknown_8565F48 +gUnknown_8565F48: @ 0x8565F48 + .incbin "baserom_jp.gba", 0x565f48, 0x5c + + .globl gUnknown_8565FA4 +gUnknown_8565FA4: @ 0x8565FA4 + .incbin "baserom_jp.gba", 0x565fa4, 0x18 + + .globl gUnknown_8565FBC +gUnknown_8565FBC: @ 0x8565FBC + .incbin "baserom_jp.gba", 0x565fbc, 0x8 + + .globl gUnknown_8565FC4 +gUnknown_8565FC4: @ 0x8565FC4 + .incbin "baserom_jp.gba", 0x565fc4, 0x8 + + .globl gUnknown_8565FCC +gUnknown_8565FCC: @ 0x8565FCC + .incbin "baserom_jp.gba", 0x565fcc, 0xb18 + + .globl gUnknown_8566AE4 +gUnknown_8566AE4: @ 0x8566AE4 + .incbin "baserom_jp.gba", 0x566ae4, 0xc0 + + .globl gUnknown_8566BA4 +gUnknown_8566BA4: @ 0x8566BA4 + .incbin "baserom_jp.gba", 0x566ba4, 0x40 + + .globl gUnknown_8566BE4 +gUnknown_8566BE4: @ 0x8566BE4 + .incbin "baserom_jp.gba", 0x566be4, 0xc0 + + .globl gUnknown_8566CA4 +gUnknown_8566CA4: @ 0x8566CA4 + .incbin "baserom_jp.gba", 0x566ca4, 0xd + + .globl gUnknown_8566CB1 +gUnknown_8566CB1: @ 0x8566CB1 + .incbin "baserom_jp.gba", 0x566cb1, 0x16 + + .globl gUnknown_8566CC7 +gUnknown_8566CC7: @ 0x8566CC7 + .incbin "baserom_jp.gba", 0x566cc7, 0x2 + + .globl gUnknown_8566CC9 +gUnknown_8566CC9: @ 0x8566CC9 + .incbin "baserom_jp.gba", 0x566cc9, 0x6 + + .globl gUnknown_8566CCF +gUnknown_8566CCF: @ 0x8566CCF + .incbin "baserom_jp.gba", 0x566ccf, 0x24 + + .globl gUnknown_8566CF3 +gUnknown_8566CF3: @ 0x8566CF3 + .incbin "baserom_jp.gba", 0x566cf3, 0x6 + + .globl gUnknown_8566CF9 +gUnknown_8566CF9: @ 0x8566CF9 + .incbin "baserom_jp.gba", 0x566cf9, 0xf + + .globl gUnknown_8566D08 +gUnknown_8566D08: @ 0x8566D08 + .incbin "baserom_jp.gba", 0x566d08, 0x4 + + .globl gUnknown_8566D0C +gUnknown_8566D0C: @ 0x8566D0C + .incbin "baserom_jp.gba", 0x566d0c, 0x20 + + .globl gUnknown_8566D2C +gUnknown_8566D2C: @ 0x8566D2C + .incbin "baserom_jp.gba", 0x566d2c, 0x16 + + .globl gUnknown_8566D42 +gUnknown_8566D42: @ 0x8566D42 + .incbin "baserom_jp.gba", 0x566d42, 0x4 + + .globl gUnknown_8566D46 +gUnknown_8566D46: @ 0x8566D46 + .incbin "baserom_jp.gba", 0x566d46, 0x4 + + .globl gUnknown_8566D4A +gUnknown_8566D4A: @ 0x8566D4A + .incbin "baserom_jp.gba", 0x566d4a, 0xc + + .globl gUnknown_8566D56 +gUnknown_8566D56: @ 0x8566D56 + .incbin "baserom_jp.gba", 0x566d56, 0xe + + .globl gUnknown_8566D64 +gUnknown_8566D64: @ 0x8566D64 + .incbin "baserom_jp.gba", 0x566d64, 0x10 + + .globl gUnknown_8566D74 +gUnknown_8566D74: @ 0x8566D74 + .incbin "baserom_jp.gba", 0x566d74, 0xa + + .globl gUnknown_8566D7E +gUnknown_8566D7E: @ 0x8566D7E + .incbin "baserom_jp.gba", 0x566d7e, 0xb + + .globl gUnknown_8566D89 +gUnknown_8566D89: @ 0x8566D89 + .incbin "baserom_jp.gba", 0x566d89, 0xa + + .globl gUnknown_8566D93 +gUnknown_8566D93: @ 0x8566D93 + .incbin "baserom_jp.gba", 0x566d93, 0xa + + .globl gUnknown_8566D9D +gUnknown_8566D9D: @ 0x8566D9D + .incbin "baserom_jp.gba", 0x566d9d, 0xa + + .globl gUnknown_8566DA7 +gUnknown_8566DA7: @ 0x8566DA7 + .incbin "baserom_jp.gba", 0x566da7, 0xa + + .globl gUnknown_8566DB1 +gUnknown_8566DB1: @ 0x8566DB1 + .incbin "baserom_jp.gba", 0x566db1, 0xa + + .globl gUnknown_8566DBB +gUnknown_8566DBB: @ 0x8566DBB + .incbin "baserom_jp.gba", 0x566dbb, 0xa + + .globl gUnknown_8566DC5 +gUnknown_8566DC5: @ 0x8566DC5 + .incbin "baserom_jp.gba", 0x566dc5, 0xa + + .globl gUnknown_8566DCF +gUnknown_8566DCF: @ 0x8566DCF + .incbin "baserom_jp.gba", 0x566dcf, 0xa + + .globl gUnknown_8566DD9 +gUnknown_8566DD9: @ 0x8566DD9 + .incbin "baserom_jp.gba", 0x566dd9, 0xa + + .globl gUnknown_8566DE3 +gUnknown_8566DE3: @ 0x8566DE3 + .incbin "baserom_jp.gba", 0x566de3, 0x9 + + .globl gUnknown_8566DEC +gUnknown_8566DEC: @ 0x8566DEC + .incbin "baserom_jp.gba", 0x566dec, 0x9 + + .globl gUnknown_8566DF5 +gUnknown_8566DF5: @ 0x8566DF5 + .incbin "baserom_jp.gba", 0x566df5, 0xb + + .globl gUnknown_8566E00 +gUnknown_8566E00: @ 0x8566E00 + .incbin "baserom_jp.gba", 0x566e00, 0x40 + + .globl gUnknown_8566E40 +gUnknown_8566E40: @ 0x8566E40 + .incbin "baserom_jp.gba", 0x566e40, 0x18 + + .globl gUnknown_8566E58 +gUnknown_8566E58: @ 0x8566E58 + .incbin "baserom_jp.gba", 0x566e58, 0x5 + + .globl gUnknown_8566E5D +gUnknown_8566E5D: @ 0x8566E5D + .incbin "baserom_jp.gba", 0x566e5d, 0x3 + + .globl gUnknown_8566E60 +gUnknown_8566E60: @ 0x8566E60 + .incbin "baserom_jp.gba", 0x566e60, 0x4 + + .globl gUnknown_8566E64 +gUnknown_8566E64: @ 0x8566E64 + .incbin "baserom_jp.gba", 0x566e64, 0x5 + + .globl gUnknown_8566E69 +gUnknown_8566E69: @ 0x8566E69 + .incbin "baserom_jp.gba", 0x566e69, 0x148f + + .globl gUnknown_85682F8 +gUnknown_85682F8: @ 0x85682F8 + .incbin "baserom_jp.gba", 0x5682f8, 0x438 + + .globl gUnknown_8568730 +gUnknown_8568730: @ 0x8568730 + .incbin "baserom_jp.gba", 0x568730, 0x348 + + .globl gUnknown_8568A78 +gUnknown_8568A78: @ 0x8568A78 + .incbin "baserom_jp.gba", 0x568a78, 0x1c + + .globl gUnknown_8568A94 +gUnknown_8568A94: @ 0x8568A94 + .incbin "baserom_jp.gba", 0x568a94, 0x60 + + .globl gUnknown_8568AF4 +gUnknown_8568AF4: @ 0x8568AF4 + .incbin "baserom_jp.gba", 0x568af4, 0x10 + + .globl gUnknown_8568B04 +gUnknown_8568B04: @ 0x8568B04 + .incbin "baserom_jp.gba", 0x568b04, 0x8 + + .globl gUnknown_8568B0C +gUnknown_8568B0C: @ 0x8568B0C + .incbin "baserom_jp.gba", 0x568b0c, 0xc + + .globl gUnknown_8568B18 +gUnknown_8568B18: @ 0x8568B18 + .incbin "baserom_jp.gba", 0x568b18, 0x8 + + .globl gUnknown_8568B20 +gUnknown_8568B20: @ 0x8568B20 + .incbin "baserom_jp.gba", 0x568b20, 0x8 + + .globl gUnknown_8568B28 +gUnknown_8568B28: @ 0x8568B28 + .incbin "baserom_jp.gba", 0x568b28, 0x18 + + .globl gUnknown_8568B40 +gUnknown_8568B40: @ 0x8568B40 + .incbin "baserom_jp.gba", 0x568b40, 0x3c + + .globl gUnknown_8568B7C +gUnknown_8568B7C: @ 0x8568B7C + .incbin "baserom_jp.gba", 0x568b7c, 0xe + + .globl gUnknown_8568B8A +gUnknown_8568B8A: @ 0x8568B8A + .incbin "baserom_jp.gba", 0x568b8a, 0xe + + .globl gUnknown_8568B98 +gUnknown_8568B98: @ 0x8568B98 + .incbin "baserom_jp.gba", 0x568b98, 0x1c + + .globl gUnknown_8568BB4 +gUnknown_8568BB4: @ 0x8568BB4 + .incbin "baserom_jp.gba", 0x568bb4, 0x14 + + .globl gUnknown_8568BC8 +gUnknown_8568BC8: @ 0x8568BC8 + .incbin "baserom_jp.gba", 0x568bc8, 0x14 + + .globl gUnknown_8568BDC +gUnknown_8568BDC: @ 0x8568BDC + .incbin "baserom_jp.gba", 0x568bdc, 0x14 + + .globl gUnknown_8568BF0 +gUnknown_8568BF0: @ 0x8568BF0 + .incbin "baserom_jp.gba", 0x568bf0, 0xc + + .globl gUnknown_8568BFC +gUnknown_8568BFC: @ 0x8568BFC + .incbin "baserom_jp.gba", 0x568bfc, 0x20 + + .globl gUnknown_8568C1C +gUnknown_8568C1C: @ 0x8568C1C + .incbin "baserom_jp.gba", 0x568c1c, 0x18 + + .globl gUnknown_8568C34 +gUnknown_8568C34: @ 0x8568C34 + .incbin "baserom_jp.gba", 0x568c34, 0x14 + + .globl gUnknown_8568C48 +gUnknown_8568C48: @ 0x8568C48 + .incbin "baserom_jp.gba", 0x568c48, 0x4 + + .globl gUnknown_8568C4C +gUnknown_8568C4C: @ 0x8568C4C + .incbin "baserom_jp.gba", 0x568c4c, 0x30 + + .globl gUnknown_8568C7C +gUnknown_8568C7C: @ 0x8568C7C + .incbin "baserom_jp.gba", 0x568c7c, 0x34 + + .globl gUnknown_8568CB0 +gUnknown_8568CB0: @ 0x8568CB0 + .incbin "baserom_jp.gba", 0x568cb0, 0x24 + + .globl gUnknown_8568CD4 +gUnknown_8568CD4: @ 0x8568CD4 + .incbin "baserom_jp.gba", 0x568cd4, 0x18 + + .globl gUnknown_8568CEC +gUnknown_8568CEC: @ 0x8568CEC + .incbin "baserom_jp.gba", 0x568cec, 0x3c + + .globl gUnknown_8568D28 +gUnknown_8568D28: @ 0x8568D28 + .incbin "baserom_jp.gba", 0x568d28, 0x84 + + .globl gUnknown_8568DAC +gUnknown_8568DAC: @ 0x8568DAC + .incbin "baserom_jp.gba", 0x568dac, 0x20 + + .globl gUnknown_8568DCC +gUnknown_8568DCC: @ 0x8568DCC + .incbin "baserom_jp.gba", 0x568dcc, 0x18 + + .globl gUnknown_8568DE4 +gUnknown_8568DE4: @ 0x8568DE4 + .incbin "baserom_jp.gba", 0x568de4, 0x4c + + .globl gUnknown_8568E30 +gUnknown_8568E30: @ 0x8568E30 + .incbin "baserom_jp.gba", 0x568e30, 0x10 + + .globl gUnknown_8568E40 +gUnknown_8568E40: @ 0x8568E40 + .incbin "baserom_jp.gba", 0x568e40, 0x1c + + .globl gUnknown_8568E5C +gUnknown_8568E5C: @ 0x8568E5C + .incbin "baserom_jp.gba", 0x568e5c, 0x8 + + .globl gUnknown_8568E64 +gUnknown_8568E64: @ 0x8568E64 + .incbin "baserom_jp.gba", 0x568e64, 0xc + + .globl gUnknown_8568E70 +gUnknown_8568E70: @ 0x8568E70 + .incbin "baserom_jp.gba", 0x568e70, 0x2c + + .globl gUnknown_8568E9C +gUnknown_8568E9C: @ 0x8568E9C + .incbin "baserom_jp.gba", 0x568e9c, 0x1c + + .globl gUnknown_8568EB8 +gUnknown_8568EB8: @ 0x8568EB8 + .incbin "baserom_jp.gba", 0x568eb8, 0xc + + .globl gUnknown_8568EC4 +gUnknown_8568EC4: @ 0x8568EC4 + .incbin "baserom_jp.gba", 0x568ec4, 0x10 + + .globl gUnknown_8568ED4 +gUnknown_8568ED4: @ 0x8568ED4 + .incbin "baserom_jp.gba", 0x568ed4, 0x34 + + .globl gUnknown_8568F08 +gUnknown_8568F08: @ 0x8568F08 + .incbin "baserom_jp.gba", 0x568f08, 0x38 + + .globl gUnknown_8568F40 +gUnknown_8568F40: @ 0x8568F40 + .incbin "baserom_jp.gba", 0x568f40, 0x4 + + .globl gUnknown_8568F44 +gUnknown_8568F44: @ 0x8568F44 + .incbin "baserom_jp.gba", 0x568f44, 0x1c + + .globl gUnknown_8568F60 +gUnknown_8568F60: @ 0x8568F60 + .incbin "baserom_jp.gba", 0x568f60, 0x30 + + .globl gUnknown_8568F90 +gUnknown_8568F90: @ 0x8568F90 + .incbin "baserom_jp.gba", 0x568f90, 0x40 + + .globl gUnknown_8568FD0 +gUnknown_8568FD0: @ 0x8568FD0 + .incbin "baserom_jp.gba", 0x568fd0, 0x4c + + .globl gUnknown_856901C +gUnknown_856901C: @ 0x856901C + .incbin "baserom_jp.gba", 0x56901c, 0x24 + + .globl gUnknown_8569040 +gUnknown_8569040: @ 0x8569040 + .incbin "baserom_jp.gba", 0x569040, 0xac + + .globl gUnknown_85690EC +gUnknown_85690EC: @ 0x85690EC + .incbin "baserom_jp.gba", 0x5690ec, 0x2c + + .globl gUnknown_8569118 +gUnknown_8569118: @ 0x8569118 + .incbin "baserom_jp.gba", 0x569118, 0x24 + + .globl gUnknown_856913C +gUnknown_856913C: @ 0x856913C + .incbin "baserom_jp.gba", 0x56913c, 0x20 + + .globl gUnknown_856915C +gUnknown_856915C: @ 0x856915C + .incbin "baserom_jp.gba", 0x56915c, 0x20 + + .globl gUnknown_856917C +gUnknown_856917C: @ 0x856917C + .incbin "baserom_jp.gba", 0x56917c, 0x20 + + .globl gUnknown_856919C +gUnknown_856919C: @ 0x856919C + .incbin "baserom_jp.gba", 0x56919c, 0xa0 + + .globl gUnknown_856923C +gUnknown_856923C: @ 0x856923C + .incbin "baserom_jp.gba", 0x56923c, 0x68 + + .globl gUnknown_85692A4 +gUnknown_85692A4: @ 0x85692A4 + .incbin "baserom_jp.gba", 0x5692a4, 0x18 + + .globl gUnknown_85692BC +gUnknown_85692BC: @ 0x85692BC + .incbin "baserom_jp.gba", 0x5692bc, 0x40 + + .globl gUnknown_85692FC +gUnknown_85692FC: @ 0x85692FC + .incbin "baserom_jp.gba", 0x5692fc, 0x10 + + .globl gUnknown_856930C +gUnknown_856930C: @ 0x856930C + .incbin "baserom_jp.gba", 0x56930c, 0x18 + + .globl gUnknown_8569324 +gUnknown_8569324: @ 0x8569324 + .incbin "baserom_jp.gba", 0x569324, 0x8 + + .globl gUnknown_856932C +gUnknown_856932C: @ 0x856932C + .incbin "baserom_jp.gba", 0x56932c, 0x8 + + .globl gUnknown_8569334 +gUnknown_8569334: @ 0x8569334 + .incbin "baserom_jp.gba", 0x569334, 0x20 + + .globl gUnknown_8569354 +gUnknown_8569354: @ 0x8569354 + .incbin "baserom_jp.gba", 0x569354, 0x20 + + .globl gUnknown_8569374 +gUnknown_8569374: @ 0x8569374 + .incbin "baserom_jp.gba", 0x569374, 0x20 + + .globl gUnknown_8569394 +gUnknown_8569394: @ 0x8569394 + .incbin "baserom_jp.gba", 0x569394, 0x20 + + .globl gUnknown_85693B4 +gUnknown_85693B4: @ 0x85693B4 + .incbin "baserom_jp.gba", 0x5693b4, 0x20 + + .globl gUnknown_85693D4 +gUnknown_85693D4: @ 0x85693D4 + .incbin "baserom_jp.gba", 0x5693d4, 0x14 + + .globl gUnknown_85693E8 +gUnknown_85693E8: @ 0x85693E8 + .incbin "baserom_jp.gba", 0x5693e8, 0x14 + + .globl gUnknown_85693FC +gUnknown_85693FC: @ 0x85693FC + .incbin "baserom_jp.gba", 0x5693fc, 0x14 + + .globl gUnknown_8569410 +gUnknown_8569410: @ 0x8569410 + .incbin "baserom_jp.gba", 0x569410, 0x14 + + .globl gUnknown_8569424 +gUnknown_8569424: @ 0x8569424 + .incbin "baserom_jp.gba", 0x569424, 0x14 + + .globl gUnknown_8569438 +gUnknown_8569438: @ 0x8569438 + .incbin "baserom_jp.gba", 0x569438, 0x14 + + .globl gUnknown_856944C +gUnknown_856944C: @ 0x856944C + .incbin "baserom_jp.gba", 0x56944c, 0x10 + + .globl gUnknown_856945C +gUnknown_856945C: @ 0x856945C + .incbin "baserom_jp.gba", 0x56945c, 0x50 + + .globl gUnknown_85694AC +gUnknown_85694AC: @ 0x85694AC + .incbin "baserom_jp.gba", 0x5694ac, 0x18 + + .globl gUnknown_85694C4 +gUnknown_85694C4: @ 0x85694C4 + .incbin "baserom_jp.gba", 0x5694c4, 0x8 + + .globl gUnknown_85694CC +gUnknown_85694CC: @ 0x85694CC + .incbin "baserom_jp.gba", 0x5694cc, 0x4 + + .globl gUnknown_85694D0 +gUnknown_85694D0: @ 0x85694D0 + .incbin "baserom_jp.gba", 0x5694d0, 0x80 + + .globl gUnknown_8569550 +gUnknown_8569550: @ 0x8569550 + .incbin "baserom_jp.gba", 0x569550, 0x2 + + .globl gUnknown_8569552 +gUnknown_8569552: @ 0x8569552 + .incbin "baserom_jp.gba", 0x569552, 0xc92 + + .globl gUnknown_856A1E4 +gUnknown_856A1E4: @ 0x856A1E4 + .incbin "baserom_jp.gba", 0x56a1e4, 0x18 + + .globl gUnknown_856A1FC +gUnknown_856A1FC: @ 0x856A1FC + .incbin "baserom_jp.gba", 0x56a1fc, 0x18 + + .globl gUnknown_856A214 +gUnknown_856A214: @ 0x856A214 + .incbin "baserom_jp.gba", 0x56a214, 0x5c + + .globl gUnknown_856A270 +gUnknown_856A270: @ 0x856A270 + .incbin "baserom_jp.gba", 0x56a270, 0x1d8 + + .globl gUnknown_856A448 +gUnknown_856A448: @ 0x856A448 + .incbin "baserom_jp.gba", 0x56a448, 0x1c + + .globl gUnknown_856A464 +gUnknown_856A464: @ 0x856A464 + .incbin "baserom_jp.gba", 0x56a464, 0x18 + + .globl gUnknown_856A47C +gUnknown_856A47C: @ 0x856A47C + .incbin "baserom_jp.gba", 0x56a47c, 0x13 + + .globl gUnknown_856A48F +gUnknown_856A48F: @ 0x856A48F + .incbin "baserom_jp.gba", 0x56a48f, 0x2 + + .globl gUnknown_856A491 +gUnknown_856A491: @ 0x856A491 + .incbin "baserom_jp.gba", 0x56a491, 0x3 + + .globl gUnknown_856A494 +gUnknown_856A494: @ 0x856A494 + .incbin "baserom_jp.gba", 0x56a494, 0x40 + + .globl gUnknown_856A4D4 +gUnknown_856A4D4: @ 0x856A4D4 + .incbin "baserom_jp.gba", 0x56a4d4, 0x3468 + + .globl gUnknown_856D93C +gUnknown_856D93C: @ 0x856D93C + .incbin "baserom_jp.gba", 0x56d93c, 0x270 + + .globl gUnknown_856DBAC +gUnknown_856DBAC: @ 0x856DBAC + .incbin "baserom_jp.gba", 0x56dbac, 0x18 + + .globl gUnknown_856DBC4 +gUnknown_856DBC4: @ 0x856DBC4 + .incbin "baserom_jp.gba", 0x56dbc4, 0x18 + + .globl gUnknown_856DBDC +gUnknown_856DBDC: @ 0x856DBDC + .incbin "baserom_jp.gba", 0x56dbdc, 0x10 + + .globl gUnknown_856DBEC +gUnknown_856DBEC: @ 0x856DBEC + .incbin "baserom_jp.gba", 0x56dbec, 0x10 + + .globl gUnknown_856DBFC +gUnknown_856DBFC: @ 0x856DBFC + .incbin "baserom_jp.gba", 0x56dbfc, 0x10 + + .globl gUnknown_856DC0C +gUnknown_856DC0C: @ 0x856DC0C + .incbin "baserom_jp.gba", 0x56dc0c, 0x10 + + .globl gUnknown_856DC1C +gUnknown_856DC1C: @ 0x856DC1C + .incbin "baserom_jp.gba", 0x56dc1c, 0x20 + + .globl gUnknown_856DC3C +gUnknown_856DC3C: @ 0x856DC3C + .incbin "baserom_jp.gba", 0x56dc3c, 0x20 + + .globl gUnknown_856DC5C +gUnknown_856DC5C: @ 0x856DC5C + .incbin "baserom_jp.gba", 0x56dc5c, 0x60 + + .globl gUnknown_856DCBC +gUnknown_856DCBC: @ 0x856DCBC + .incbin "baserom_jp.gba", 0x56dcbc, 0xc + + .globl gUnknown_856DCC8 +gUnknown_856DCC8: @ 0x856DCC8 + .incbin "baserom_jp.gba", 0x56dcc8, 0x4 + + .globl gUnknown_856DCCC +gUnknown_856DCCC: @ 0x856DCCC + .incbin "baserom_jp.gba", 0x56dccc, 0x128 + + .globl gUnknown_856DDF4 +gUnknown_856DDF4: @ 0x856DDF4 + .incbin "baserom_jp.gba", 0x56ddf4, 0x4f0 + + .globl gUnknown_856E2E4 +gUnknown_856E2E4: @ 0x856E2E4 + .incbin "baserom_jp.gba", 0x56e2e4, 0x78 + + .globl gUnknown_856E35C +gUnknown_856E35C: @ 0x856E35C + .incbin "baserom_jp.gba", 0x56e35c, 0x100 + + .globl gUnknown_856E45C +gUnknown_856E45C: @ 0x856E45C + .incbin "baserom_jp.gba", 0x56e45c, 0x458 + + .globl gUnknown_856E8B4 +gUnknown_856E8B4: @ 0x856E8B4 + .incbin "baserom_jp.gba", 0x56e8b4, 0x1ec + + .globl gUnknown_856EAA0 +gUnknown_856EAA0: @ 0x856EAA0 + .incbin "baserom_jp.gba", 0x56eaa0, 0x30 + + .globl gUnknown_856EAD0 +gUnknown_856EAD0: @ 0x856EAD0 + .incbin "baserom_jp.gba", 0x56ead0, 0x134 + + .globl gUnknown_856EC04 +gUnknown_856EC04: @ 0x856EC04 + .incbin "baserom_jp.gba", 0x56ec04, 0xf4 + + .globl gUnknown_856ECF8 +gUnknown_856ECF8: @ 0x856ECF8 + .incbin "baserom_jp.gba", 0x56ecf8, 0x29c + + .globl gUnknown_856EF94 +gUnknown_856EF94: @ 0x856EF94 + .incbin "baserom_jp.gba", 0x56ef94, 0xf0 + + .globl gUnknown_856F084 +gUnknown_856F084: @ 0x856F084 + .incbin "baserom_jp.gba", 0x56f084, 0x148 + + .globl gUnknown_856F1CC +gUnknown_856F1CC: @ 0x856F1CC + .incbin "baserom_jp.gba", 0x56f1cc, 0x20 + + .globl gUnknown_856F1EC +gUnknown_856F1EC: @ 0x856F1EC + .incbin "baserom_jp.gba", 0x56f1ec, 0x9c + + .globl gUnknown_856F288 +gUnknown_856F288: @ 0x856F288 + .incbin "baserom_jp.gba", 0x56f288, 0x20c + + .globl gUnknown_856F494 +gUnknown_856F494: @ 0x856F494 + .incbin "baserom_jp.gba", 0x56f494, 0x2c + + .globl gUnknown_856F4C0 +gUnknown_856F4C0: @ 0x856F4C0 + .incbin "baserom_jp.gba", 0x56f4c0, 0x18 + + .globl gUnknown_856F4D8 +gUnknown_856F4D8: @ 0x856F4D8 + .incbin "baserom_jp.gba", 0x56f4d8, 0x5c + + .globl gUnknown_856F534 +gUnknown_856F534: @ 0x856F534 + .incbin "baserom_jp.gba", 0x56f534, 0x38 + + .globl gUnknown_856F56C +gUnknown_856F56C: @ 0x856F56C + .incbin "baserom_jp.gba", 0x56f56c, 0x210 + + .globl gUnknown_856F77C +gUnknown_856F77C: @ 0x856F77C + .incbin "baserom_jp.gba", 0x56f77c, 0x1488 + + .globl gUnknown_8570C04 +gUnknown_8570C04: @ 0x8570C04 + .incbin "baserom_jp.gba", 0x570c04, 0x248 + + .globl gUnknown_8570E4C +gUnknown_8570E4C: @ 0x8570E4C + .incbin "baserom_jp.gba", 0x570e4c, 0xa8 + + .globl gUnknown_8570EF4 +gUnknown_8570EF4: @ 0x8570EF4 + .incbin "baserom_jp.gba", 0x570ef4, 0x2a4 + + .globl gUnknown_8571198 +gUnknown_8571198: @ 0x8571198 + .incbin "baserom_jp.gba", 0x571198, 0x18 + + .globl gUnknown_85711B0 +gUnknown_85711B0: @ 0x85711B0 + .incbin "baserom_jp.gba", 0x5711b0, 0x2 + + .globl gUnknown_85711B2 +gUnknown_85711B2: @ 0x85711B2 + .incbin "baserom_jp.gba", 0x5711b2, 0xb6 + + .globl gUnknown_8571268 +gUnknown_8571268: @ 0x8571268 + .incbin "baserom_jp.gba", 0x571268, 0x10 + + .globl gUnknown_8571278 +gUnknown_8571278: @ 0x8571278 + .incbin "baserom_jp.gba", 0x571278, 0x2c + + .globl gUnknown_85712A4 +gUnknown_85712A4: @ 0x85712A4 + .incbin "baserom_jp.gba", 0x5712a4, 0x168 + + .globl gUnknown_857140C +gUnknown_857140C: @ 0x857140C + .incbin "baserom_jp.gba", 0x57140c, 0x18 + + .globl gUnknown_8571424 +gUnknown_8571424: @ 0x8571424 + .incbin "baserom_jp.gba", 0x571424, 0x18 + + .globl gUnknown_857143C +gUnknown_857143C: @ 0x857143C + .incbin "baserom_jp.gba", 0x57143c, 0x50 + + .globl gUnknown_857148C +gUnknown_857148C: @ 0x857148C + .incbin "baserom_jp.gba", 0x57148c, 0x158 + + .globl gUnknown_85715E4 +gUnknown_85715E4: @ 0x85715E4 + .incbin "baserom_jp.gba", 0x5715e4, 0x30 + + .globl gUnknown_8571614 +gUnknown_8571614: @ 0x8571614 + .incbin "baserom_jp.gba", 0x571614, 0x138 + + .globl gUnknown_857174C +gUnknown_857174C: @ 0x857174C + .incbin "baserom_jp.gba", 0x57174c, 0xf4 + + .globl gUnknown_8571840 +gUnknown_8571840: @ 0x8571840 + .incbin "baserom_jp.gba", 0x571840, 0x2c + + .globl gUnknown_857186C +gUnknown_857186C: @ 0x857186C + .incbin "baserom_jp.gba", 0x57186c, 0x2c + + .globl gUnknown_8571898 +gUnknown_8571898: @ 0x8571898 + .incbin "baserom_jp.gba", 0x571898, 0x78 + + .globl gUnknown_8571910 +gUnknown_8571910: @ 0x8571910 + .incbin "baserom_jp.gba", 0x571910, 0xa14 + + .globl gUnknown_8572324 +gUnknown_8572324: @ 0x8572324 + .incbin "baserom_jp.gba", 0x572324, 0x1c + + .globl gUnknown_8572340 +gUnknown_8572340: @ 0x8572340 + .incbin "baserom_jp.gba", 0x572340, 0x20 + + .globl gUnknown_8572360 +gUnknown_8572360: @ 0x8572360 + .incbin "baserom_jp.gba", 0x572360, 0x18 + + .globl gUnknown_8572378 +gUnknown_8572378: @ 0x8572378 + .incbin "baserom_jp.gba", 0x572378, 0xd0 + + .globl gUnknown_8572448 +gUnknown_8572448: @ 0x8572448 + .incbin "baserom_jp.gba", 0x572448, 0x35c + + .globl gUnknown_85727A4 +gUnknown_85727A4: @ 0x85727A4 + .incbin "baserom_jp.gba", 0x5727a4, 0x50 + + .globl gUnknown_85727F4 +gUnknown_85727F4: @ 0x85727F4 + .incbin "baserom_jp.gba", 0x5727f4, 0x18 + + .globl gUnknown_857280C +gUnknown_857280C: @ 0x857280C + .incbin "baserom_jp.gba", 0x57280c, 0x18 + + .globl gUnknown_8572824 +gUnknown_8572824: @ 0x8572824 + .incbin "baserom_jp.gba", 0x572824, 0x178 + + .globl gUnknown_857299C +gUnknown_857299C: @ 0x857299C + .incbin "baserom_jp.gba", 0x57299c, 0x78 + + .globl gUnknown_8572A14 +gUnknown_8572A14: @ 0x8572A14 + .incbin "baserom_jp.gba", 0x572a14, 0x528 + + .globl gUnknown_8572F3C +gUnknown_8572F3C: @ 0x8572F3C + .incbin "baserom_jp.gba", 0x572f3c, 0x30 + + .globl gUnknown_8572F6C +gUnknown_8572F6C: @ 0x8572F6C + .incbin "baserom_jp.gba", 0x572f6c, 0x60 + + .globl gUnknown_8572FCC +gUnknown_8572FCC: @ 0x8572FCC + .incbin "baserom_jp.gba", 0x572fcc, 0x30 + + .globl gUnknown_8572FFC +gUnknown_8572FFC: @ 0x8572FFC + .incbin "baserom_jp.gba", 0x572ffc, 0x2 + + .globl gUnknown_8572FFE +gUnknown_8572FFE: @ 0x8572FFE + .incbin "baserom_jp.gba", 0x572ffe, 0x4 + + .globl gUnknown_8573002 +gUnknown_8573002: @ 0x8573002 + .incbin "baserom_jp.gba", 0x573002, 0x6 + + .globl gUnknown_8573008 +gUnknown_8573008: @ 0x8573008 + .incbin "baserom_jp.gba", 0x573008, 0x28 + + .globl gUnknown_8573030 +gUnknown_8573030: @ 0x8573030 + .incbin "baserom_jp.gba", 0x573030, 0x10 + + .globl gUnknown_8573040 +gUnknown_8573040: @ 0x8573040 + .incbin "baserom_jp.gba", 0x573040, 0xc + + .globl gUnknown_857304C +gUnknown_857304C: @ 0x857304C + .incbin "baserom_jp.gba", 0x57304c, 0x34 + + .globl gUnknown_8573080 +gUnknown_8573080: @ 0x8573080 + .incbin "baserom_jp.gba", 0x573080, 0x1c + + .globl gUnknown_857309C +gUnknown_857309C: @ 0x857309C + .incbin "baserom_jp.gba", 0x57309c, 0x8 + + .globl gUnknown_85730A4 +gUnknown_85730A4: @ 0x85730A4 + .incbin "baserom_jp.gba", 0x5730a4, 0x70 + + .globl gUnknown_8573114 +gUnknown_8573114: @ 0x8573114 + .incbin "baserom_jp.gba", 0x573114, 0x20 + + .globl gUnknown_8573134 +gUnknown_8573134: @ 0x8573134 + .incbin "baserom_jp.gba", 0x573134, 0x1f8 + + .globl gUnknown_857332C +gUnknown_857332C: @ 0x857332C + .incbin "baserom_jp.gba", 0x57332c, 0x8 + + .globl gUnknown_8573334 +gUnknown_8573334: @ 0x8573334 + .incbin "baserom_jp.gba", 0x573334, 0x8 + + .globl gUnknown_857333C +gUnknown_857333C: @ 0x857333C + .incbin "baserom_jp.gba", 0x57333c, 0xb28 + + .globl gUnknown_8573E64 +gUnknown_8573E64: @ 0x8573E64 + .incbin "baserom_jp.gba", 0x573e64, 0x20 + + .globl gUnknown_8573E84 +gUnknown_8573E84: @ 0x8573E84 + .incbin "baserom_jp.gba", 0x573e84, 0x260 + + .globl gUnknown_85740E4 +gUnknown_85740E4: @ 0x85740E4 + .incbin "baserom_jp.gba", 0x5740e4, 0x158 + + .globl gUnknown_857423C +gUnknown_857423C: @ 0x857423C + .incbin "baserom_jp.gba", 0x57423c, 0x20 + + .globl gUnknown_857425C +gUnknown_857425C: @ 0x857425C + .incbin "baserom_jp.gba", 0x57425c, 0x20 + + .globl gUnknown_857427C +gUnknown_857427C: @ 0x857427C + .incbin "baserom_jp.gba", 0x57427c, 0xc8 + + .globl gUnknown_8574344 +gUnknown_8574344: @ 0x8574344 + .incbin "baserom_jp.gba", 0x574344, 0x8 + + .globl gUnknown_857434C +gUnknown_857434C: @ 0x857434C + .incbin "baserom_jp.gba", 0x57434c, 0xc + + .globl gUnknown_8574358 +gUnknown_8574358: @ 0x8574358 + .incbin "baserom_jp.gba", 0x574358, 0x24 + + .globl gUnknown_857437C +gUnknown_857437C: @ 0x857437C + .incbin "baserom_jp.gba", 0x57437c, 0x10 + + .globl gUnknown_857438C +gUnknown_857438C: @ 0x857438C + .incbin "baserom_jp.gba", 0x57438c, 0x20 + + .globl gUnknown_85743AC +gUnknown_85743AC: @ 0x85743AC + .incbin "baserom_jp.gba", 0x5743ac, 0x8 + + .globl gUnknown_85743B4 +gUnknown_85743B4: @ 0x85743B4 + .incbin "baserom_jp.gba", 0x5743b4, 0x8 + + .globl gUnknown_85743BC +gUnknown_85743BC: @ 0x85743BC + .incbin "baserom_jp.gba", 0x5743bc, 0x10 + + .globl gUnknown_85743CC +gUnknown_85743CC: @ 0x85743CC + .incbin "baserom_jp.gba", 0x5743cc, 0x20 + + .globl gUnknown_85743EC +gUnknown_85743EC: @ 0x85743EC + .incbin "baserom_jp.gba", 0x5743ec, 0x28 + + .globl gUnknown_8574414 +gUnknown_8574414: @ 0x8574414 + .incbin "baserom_jp.gba", 0x574414, 0x28 + + .globl gUnknown_857443C +gUnknown_857443C: @ 0x857443C + .incbin "baserom_jp.gba", 0x57443c, 0x50 + + .globl gUnknown_857448C +gUnknown_857448C: @ 0x857448C + .incbin "baserom_jp.gba", 0x57448c, 0x68 + + .globl gUnknown_85744F4 +gUnknown_85744F4: @ 0x85744F4 + .incbin "baserom_jp.gba", 0x5744f4, 0x20 + + .globl gUnknown_8574514 +gUnknown_8574514: @ 0x8574514 + .incbin "baserom_jp.gba", 0x574514, 0x40 + + .globl gUnknown_8574554 +gUnknown_8574554: @ 0x8574554 + .incbin "baserom_jp.gba", 0x574554, 0x18 + + .globl gUnknown_857456C +gUnknown_857456C: @ 0x857456C + .incbin "baserom_jp.gba", 0x57456c, 0x47a8 + + .globl gUnknown_8578D14 +gUnknown_8578D14: @ 0x8578D14 + .incbin "baserom_jp.gba", 0x578d14, 0xff0 + + .globl gUnknown_8579D04 +gUnknown_8579D04: @ 0x8579D04 + .incbin "baserom_jp.gba", 0x579d04, 0x1d4 + + .globl gUnknown_8579ED8 +gUnknown_8579ED8: @ 0x8579ED8 + .incbin "baserom_jp.gba", 0x579ed8, 0x58 + + .globl gUnknown_8579F30 +gUnknown_8579F30: @ 0x8579F30 + .incbin "baserom_jp.gba", 0x579f30, 0x4 + + .globl gUnknown_8579F34 +gUnknown_8579F34: @ 0x8579F34 + .incbin "baserom_jp.gba", 0x579f34, 0x4 + + .globl gUnknown_8579F38 +gUnknown_8579F38: @ 0x8579F38 + .incbin "baserom_jp.gba", 0x579f38, 0x20 + + .globl gUnknown_8579F58 +gUnknown_8579F58: @ 0x8579F58 + .incbin "baserom_jp.gba", 0x579f58, 0x320 + + .globl gUnknown_857A278 +gUnknown_857A278: @ 0x857A278 + .incbin "baserom_jp.gba", 0x57a278, 0x20 + + .globl gUnknown_857A298 +gUnknown_857A298: @ 0x857A298 + .incbin "baserom_jp.gba", 0x57a298, 0x808 + + .globl gUnknown_857AAA0 +gUnknown_857AAA0: @ 0x857AAA0 + .incbin "baserom_jp.gba", 0x57aaa0, 0x8 + + .globl gUnknown_857AAA8 +gUnknown_857AAA8: @ 0x857AAA8 + .incbin "baserom_jp.gba", 0x57aaa8, 0x58 + + .globl gUnknown_857AB00 +gUnknown_857AB00: @ 0x857AB00 + .incbin "baserom_jp.gba", 0x57ab00, 0x38 + + .globl gUnknown_857AB38 +gUnknown_857AB38: @ 0x857AB38 + .incbin "baserom_jp.gba", 0x57ab38, 0x8 + + .globl gUnknown_857AB40 +gUnknown_857AB40: @ 0x857AB40 + .incbin "baserom_jp.gba", 0x57ab40, 0x88 + + .globl gUnknown_857ABC8 +gUnknown_857ABC8: @ 0x857ABC8 + .incbin "baserom_jp.gba", 0x57abc8, 0x40 + + .globl gUnknown_857AC08 +gUnknown_857AC08: @ 0x857AC08 + .incbin "baserom_jp.gba", 0x57ac08, 0xc + + .globl gUnknown_857AC14 +gUnknown_857AC14: @ 0x857AC14 + .incbin "baserom_jp.gba", 0x57ac14, 0x20 + + .globl gUnknown_857AC34 +gUnknown_857AC34: @ 0x857AC34 + .incbin "baserom_jp.gba", 0x57ac34, 0x20 + + .globl gUnknown_857AC54 +gUnknown_857AC54: @ 0x857AC54 + .incbin "baserom_jp.gba", 0x57ac54, 0x18 + + .globl gUnknown_857AC6C +gUnknown_857AC6C: @ 0x857AC6C + .incbin "baserom_jp.gba", 0x57ac6c, 0x230 + + .globl gUnknown_857AE9C +gUnknown_857AE9C: @ 0x857AE9C + .incbin "baserom_jp.gba", 0x57ae9c, 0x10 + + .globl gUnknown_857AEAC +gUnknown_857AEAC: @ 0x857AEAC + .incbin "baserom_jp.gba", 0x57aeac, 0x8 + + .globl gUnknown_857AEB4 +gUnknown_857AEB4: @ 0x857AEB4 + .incbin "baserom_jp.gba", 0x57aeb4, 0xc + + .globl gUnknown_857AEC0 +gUnknown_857AEC0: @ 0x857AEC0 + .incbin "baserom_jp.gba", 0x57aec0, 0x18 + + .globl gUnknown_857AED8 +gUnknown_857AED8: @ 0x857AED8 + .incbin "baserom_jp.gba", 0x57aed8, 0x4 + + .globl gUnknown_857AEDC +gUnknown_857AEDC: @ 0x857AEDC + .incbin "baserom_jp.gba", 0x57aedc, 0x8 + + .globl gUnknown_857AEE4 +gUnknown_857AEE4: @ 0x857AEE4 + .incbin "baserom_jp.gba", 0x57aee4, 0xfc + + .globl gUnknown_857AFE0 +gUnknown_857AFE0: @ 0x857AFE0 + .incbin "baserom_jp.gba", 0x57afe0, 0x74 + + .globl gUnknown_857B054 +gUnknown_857B054: @ 0x857B054 + .incbin "baserom_jp.gba", 0x57b054, 0x60 + + .globl gUnknown_857B0B4 +gUnknown_857B0B4: @ 0x857B0B4 + .incbin "baserom_jp.gba", 0x57b0b4, 0x30 + + .globl gUnknown_857B0E4 +gUnknown_857B0E4: @ 0x857B0E4 + .incbin "baserom_jp.gba", 0x57b0e4, 0x8 + + .globl gUnknown_857B0EC +gUnknown_857B0EC: @ 0x857B0EC + .incbin "baserom_jp.gba", 0x57b0ec, 0x8 + + .globl gUnknown_857B0F4 +gUnknown_857B0F4: @ 0x857B0F4 + .incbin "baserom_jp.gba", 0x57b0f4, 0x10 + + .globl gUnknown_857B104 +gUnknown_857B104: @ 0x857B104 + .incbin "baserom_jp.gba", 0x57b104, 0x8 + + .globl gUnknown_857B10C +gUnknown_857B10C: @ 0x857B10C + .incbin "baserom_jp.gba", 0x57b10c, 0xd0 + + .globl gUnknown_857B1DC +gUnknown_857B1DC: @ 0x857B1DC + .incbin "baserom_jp.gba", 0x57b1dc, 0x44 + + .globl gUnknown_857B220 +gUnknown_857B220: @ 0x857B220 + .incbin "baserom_jp.gba", 0x57b220, 0xec + + .globl gUnknown_857B30C +gUnknown_857B30C: @ 0x857B30C + .incbin "baserom_jp.gba", 0x57b30c, 0x40 + + .globl gUnknown_857B34C +gUnknown_857B34C: @ 0x857B34C + .incbin "baserom_jp.gba", 0x57b34c, 0xd64 + + .globl gUnknown_857C0B0 +gUnknown_857C0B0: @ 0x857C0B0 + .incbin "baserom_jp.gba", 0x57c0b0, 0x34c + + .globl gUnknown_857C3FC +gUnknown_857C3FC: @ 0x857C3FC + .incbin "baserom_jp.gba", 0x57c3fc, 0x20 + + .globl gUnknown_857C41C +gUnknown_857C41C: @ 0x857C41C + .incbin "baserom_jp.gba", 0x57c41c, 0x80 + + .globl gUnknown_857C49C +gUnknown_857C49C: @ 0x857C49C + .incbin "baserom_jp.gba", 0x57c49c, 0x20 + + .globl gUnknown_857C4BC +gUnknown_857C4BC: @ 0x857C4BC + .incbin "baserom_jp.gba", 0x57c4bc, 0x80 + + .globl gUnknown_857C53C +gUnknown_857C53C: @ 0x857C53C + .incbin "baserom_jp.gba", 0x57c53c, 0x830 + + .globl gUnknown_857CD6C +gUnknown_857CD6C: @ 0x857CD6C + .incbin "baserom_jp.gba", 0x57cd6c, 0x6a8 + + .globl gUnknown_857D414 +gUnknown_857D414: @ 0x857D414 + .incbin "baserom_jp.gba", 0x57d414, 0x60 + + .globl gUnknown_857D474 +gUnknown_857D474: @ 0x857D474 + .incbin "baserom_jp.gba", 0x57d474, 0x6 + + .globl gUnknown_857D47A +gUnknown_857D47A: @ 0x857D47A + .incbin "baserom_jp.gba", 0x57d47a, 0x22 + + .globl gUnknown_857D49C +gUnknown_857D49C: @ 0x857D49C + .incbin "baserom_jp.gba", 0x57d49c, 0x20 + + .globl gUnknown_857D4BC +gUnknown_857D4BC: @ 0x857D4BC + .incbin "baserom_jp.gba", 0x57d4bc, 0x34 + + .globl gUnknown_857D4F0 +gUnknown_857D4F0: @ 0x857D4F0 + .incbin "baserom_jp.gba", 0x57d4f0, 0x8 + + .globl gUnknown_857D4F8 +gUnknown_857D4F8: @ 0x857D4F8 + .incbin "baserom_jp.gba", 0x57d4f8, 0x18 + + .globl gUnknown_857D510 +gUnknown_857D510: @ 0x857D510 + .incbin "baserom_jp.gba", 0x57d510, 0x10 + + .globl gUnknown_857D520 +gUnknown_857D520: @ 0x857D520 + .incbin "baserom_jp.gba", 0x57d520, 0x4 + + .globl gUnknown_857D524 +gUnknown_857D524: @ 0x857D524 + .incbin "baserom_jp.gba", 0x57d524, 0x4 + + .globl gUnknown_857D528 +gUnknown_857D528: @ 0x857D528 + .incbin "baserom_jp.gba", 0x57d528, 0x20 + + .globl gUnknown_857D548 +gUnknown_857D548: @ 0x857D548 + .incbin "baserom_jp.gba", 0x57d548, 0x38 + + .globl gUnknown_857D580 +gUnknown_857D580: @ 0x857D580 + .incbin "baserom_jp.gba", 0x57d580, 0xd8 + + .globl gUnknown_857D658 +gUnknown_857D658: @ 0x857D658 + .incbin "baserom_jp.gba", 0x57d658, 0xd4 + + .globl gUnknown_857D72C +gUnknown_857D72C: @ 0x857D72C + .incbin "baserom_jp.gba", 0x57d72c, 0xa0 + + .globl gUnknown_857D7CC +gUnknown_857D7CC: @ 0x857D7CC + .incbin "baserom_jp.gba", 0x57d7cc, 0x8 + + .globl gUnknown_857D7D4 +gUnknown_857D7D4: @ 0x857D7D4 + .incbin "baserom_jp.gba", 0x57d7d4, 0xc + + .globl gUnknown_857D7E0 +gUnknown_857D7E0: @ 0x857D7E0 + .incbin "baserom_jp.gba", 0x57d7e0, 0x20 + + .globl gUnknown_857D800 +gUnknown_857D800: @ 0x857D800 + .incbin "baserom_jp.gba", 0x57d800, 0x8 + + .globl gUnknown_857D808 +gUnknown_857D808: @ 0x857D808 + .incbin "baserom_jp.gba", 0x57d808, 0x64 + + .globl gUnknown_857D86C +gUnknown_857D86C: @ 0x857D86C + .incbin "baserom_jp.gba", 0x57d86c, 0x18 + + .globl gUnknown_857D884 +gUnknown_857D884: @ 0x857D884 + .incbin "baserom_jp.gba", 0x57d884, 0x344c + + .globl gUnknown_8580CD0 +gUnknown_8580CD0: @ 0x8580CD0 + .incbin "baserom_jp.gba", 0x580cd0, 0x1 + + .globl gUnknown_8580CD1 +gUnknown_8580CD1: @ 0x8580CD1 + .incbin "baserom_jp.gba", 0x580cd1, 0x17 + + .globl gUnknown_8580CE8 +gUnknown_8580CE8: @ 0x8580CE8 + .incbin "baserom_jp.gba", 0x580ce8, 0xd24 + + .globl gUnknown_8581A0C +gUnknown_8581A0C: @ 0x8581A0C + .incbin "baserom_jp.gba", 0x581a0c, 0x20 + + .globl gUnknown_8581A2C +gUnknown_8581A2C: @ 0x8581A2C + .incbin "baserom_jp.gba", 0x581a2c, 0x20 + + .globl gUnknown_8581A4C +gUnknown_8581A4C: @ 0x8581A4C + .incbin "baserom_jp.gba", 0x581a4c, 0x10 + + .globl gUnknown_8581A5C +gUnknown_8581A5C: @ 0x8581A5C + .incbin "baserom_jp.gba", 0x581a5c, 0x18 + + .globl gUnknown_8581A74 +gUnknown_8581A74: @ 0x8581A74 + .incbin "baserom_jp.gba", 0x581a74, 0x20 + + .globl gUnknown_8581A94 +gUnknown_8581A94: @ 0x8581A94 + .incbin "baserom_jp.gba", 0x581a94, 0x20 + + .globl gUnknown_8581AB4 +gUnknown_8581AB4: @ 0x8581AB4 + .incbin "baserom_jp.gba", 0x581ab4, 0x18 + + .globl gUnknown_8581ACC +gUnknown_8581ACC: @ 0x8581ACC + .incbin "baserom_jp.gba", 0x581acc, 0x5c8 + + .globl gUnknown_8582094 +gUnknown_8582094: @ 0x8582094 + .incbin "baserom_jp.gba", 0x582094, 0xa0 + + .globl gUnknown_8582134 +gUnknown_8582134: @ 0x8582134 + .incbin "baserom_jp.gba", 0x582134, 0x3c + + .globl gUnknown_8582170 +gUnknown_8582170: @ 0x8582170 + .incbin "baserom_jp.gba", 0x582170, 0x18 + + .globl gUnknown_8582188 +gUnknown_8582188: @ 0x8582188 + .incbin "baserom_jp.gba", 0x582188, 0x18 + + .globl gUnknown_85821A0 +gUnknown_85821A0: @ 0x85821A0 + .incbin "baserom_jp.gba", 0x5821a0, 0x8 + + .globl gUnknown_85821A8 +gUnknown_85821A8: @ 0x85821A8 + .incbin "baserom_jp.gba", 0x5821a8, 0x8 + + .globl gUnknown_85821B0 +gUnknown_85821B0: @ 0x85821B0 + .incbin "baserom_jp.gba", 0x5821b0, 0x8 + + .globl gUnknown_85821B8 +gUnknown_85821B8: @ 0x85821B8 + .incbin "baserom_jp.gba", 0x5821b8, 0x10 + + .globl gUnknown_85821C8 +gUnknown_85821C8: @ 0x85821C8 + .incbin "baserom_jp.gba", 0x5821c8, 0x8 + + .globl gUnknown_85821D0 +gUnknown_85821D0: @ 0x85821D0 + .incbin "baserom_jp.gba", 0x5821d0, 0x8 + + .globl gUnknown_85821D8 +gUnknown_85821D8: @ 0x85821D8 + .incbin "baserom_jp.gba", 0x5821d8, 0x54 + + .globl gUnknown_858222C +gUnknown_858222C: @ 0x858222C + .incbin "baserom_jp.gba", 0x58222c, 0x8 + + .globl gUnknown_8582234 +gUnknown_8582234: @ 0x8582234 + .incbin "baserom_jp.gba", 0x582234, 0x88 + + .globl gUnknown_85822BC +gUnknown_85822BC: @ 0x85822BC + .incbin "baserom_jp.gba", 0x5822bc, 0x8 + + .globl gUnknown_85822C4 +gUnknown_85822C4: @ 0x85822C4 + .incbin "baserom_jp.gba", 0x5822c4, 0x24 + + .globl gUnknown_85822E8 +gUnknown_85822E8: @ 0x85822E8 + .incbin "baserom_jp.gba", 0x5822e8, 0x18 + + .globl gUnknown_8582300 +gUnknown_8582300: @ 0x8582300 + .incbin "baserom_jp.gba", 0x582300, 0x20a8 + + .globl gUnknown_85843A8 +gUnknown_85843A8: @ 0x85843A8 + .incbin "baserom_jp.gba", 0x5843a8, 0x10 + + .globl gUnknown_85843B8 +gUnknown_85843B8: @ 0x85843B8 + .incbin "baserom_jp.gba", 0x5843b8, 0x10 + + .globl gUnknown_85843C8 +gUnknown_85843C8: @ 0x85843C8 + .incbin "baserom_jp.gba", 0x5843c8, 0x8 + + .globl gUnknown_85843D0 +gUnknown_85843D0: @ 0x85843D0 + .incbin "baserom_jp.gba", 0x5843d0, 0x4 + + .globl gUnknown_85843D4 +gUnknown_85843D4: @ 0x85843D4 + .incbin "baserom_jp.gba", 0x5843d4, 0x74 + + .globl gUnknown_8584448 +gUnknown_8584448: @ 0x8584448 + .incbin "baserom_jp.gba", 0x584448, 0xc + + .globl gUnknown_8584454 +gUnknown_8584454: @ 0x8584454 + .incbin "baserom_jp.gba", 0x584454, 0x14 + + .globl gUnknown_8584468 +gUnknown_8584468: @ 0x8584468 + .incbin "baserom_jp.gba", 0x584468, 0xc + + .globl gUnknown_8584474 +gUnknown_8584474: @ 0x8584474 + .incbin "baserom_jp.gba", 0x584474, 0xc + + .globl gUnknown_8584480 +gUnknown_8584480: @ 0x8584480 + .incbin "baserom_jp.gba", 0x584480, 0xc + + .globl gUnknown_858448C +gUnknown_858448C: @ 0x858448C + .incbin "baserom_jp.gba", 0x58448c, 0xc + + .globl gUnknown_8584498 +gUnknown_8584498: @ 0x8584498 + .incbin "baserom_jp.gba", 0x584498, 0xc + + .globl gUnknown_85844A4 +gUnknown_85844A4: @ 0x85844A4 + .incbin "baserom_jp.gba", 0x5844a4, 0xc + + .globl gUnknown_85844B0 +gUnknown_85844B0: @ 0x85844B0 + .incbin "baserom_jp.gba", 0x5844b0, 0xc + + .globl gUnknown_85844BC +gUnknown_85844BC: @ 0x85844BC + .incbin "baserom_jp.gba", 0x5844bc, 0xc + + .globl gUnknown_85844C8 +gUnknown_85844C8: @ 0x85844C8 + .incbin "baserom_jp.gba", 0x5844c8, 0xc + + .globl gUnknown_85844D4 +gUnknown_85844D4: @ 0x85844D4 + .incbin "baserom_jp.gba", 0x5844d4, 0x8 + + .globl gUnknown_85844DC +gUnknown_85844DC: @ 0x85844DC + .incbin "baserom_jp.gba", 0x5844dc, 0x10 + + .globl gUnknown_85844EC +gUnknown_85844EC: @ 0x85844EC + .incbin "baserom_jp.gba", 0x5844ec, 0x2 + + .globl gUnknown_85844EE +gUnknown_85844EE: @ 0x85844EE + .incbin "baserom_jp.gba", 0x5844ee, 0xa + + .globl gUnknown_85844F8 +gUnknown_85844F8: @ 0x85844F8 + .incbin "baserom_jp.gba", 0x5844f8, 0x4c + + .globl gUnknown_8584544 +gUnknown_8584544: @ 0x8584544 + .incbin "baserom_jp.gba", 0x584544, 0x4 + + .globl gUnknown_8584548 +gUnknown_8584548: @ 0x8584548 + .incbin "baserom_jp.gba", 0x584548, 0x8 + + .globl gUnknown_8584550 +gUnknown_8584550: @ 0x8584550 + .incbin "baserom_jp.gba", 0x584550, 0x8 + + .globl gUnknown_8584558 +gUnknown_8584558: @ 0x8584558 + .incbin "baserom_jp.gba", 0x584558, 0x3c + + .globl gUnknown_8584594 +gUnknown_8584594: @ 0x8584594 + .incbin "baserom_jp.gba", 0x584594, 0x4 + + .globl gUnknown_8584598 +gUnknown_8584598: @ 0x8584598 + .incbin "baserom_jp.gba", 0x584598, 0x2 + + .globl gUnknown_858459A +gUnknown_858459A: @ 0x858459A + .incbin "baserom_jp.gba", 0x58459a, 0x8 + + .globl gUnknown_85845A2 +gUnknown_85845A2: @ 0x85845A2 + .incbin "baserom_jp.gba", 0x5845a2, 0x8 + + .globl gUnknown_85845AA +gUnknown_85845AA: @ 0x85845AA + .incbin "baserom_jp.gba", 0x5845aa, 0x8 + + .globl gUnknown_85845B2 +gUnknown_85845B2: @ 0x85845B2 + .incbin "baserom_jp.gba", 0x5845b2, 0x10 + + .globl gUnknown_85845C2 +gUnknown_85845C2: @ 0x85845C2 + .incbin "baserom_jp.gba", 0x5845c2, 0x10 + + .globl gUnknown_85845D2 +gUnknown_85845D2: @ 0x85845D2 + .incbin "baserom_jp.gba", 0x5845d2, 0x10 + + .globl gUnknown_85845E2 +gUnknown_85845E2: @ 0x85845E2 + .incbin "baserom_jp.gba", 0x5845e2, 0x10 + + .globl gUnknown_85845F2 +gUnknown_85845F2: @ 0x85845F2 + .incbin "baserom_jp.gba", 0x5845f2, 0x3f + + .globl gUnknown_8584631 +gUnknown_8584631: @ 0x8584631 + .incbin "baserom_jp.gba", 0x584631, 0x7 + + .globl gUnknown_8584638 +gUnknown_8584638: @ 0x8584638 + .incbin "baserom_jp.gba", 0x584638, 0xc + + .globl gUnknown_8584644 +gUnknown_8584644: @ 0x8584644 + .incbin "baserom_jp.gba", 0x584644, 0x12 + + .globl gUnknown_8584656 +gUnknown_8584656: @ 0x8584656 + .incbin "baserom_jp.gba", 0x584656, 0x12 + + .globl gUnknown_8584668 +gUnknown_8584668: @ 0x8584668 + .incbin "baserom_jp.gba", 0x584668, 0x1e + + .globl gUnknown_8584686 +gUnknown_8584686: @ 0x8584686 + .incbin "baserom_jp.gba", 0x584686, 0x66 + + .globl gUnknown_85846EC +gUnknown_85846EC: @ 0x85846EC + .incbin "baserom_jp.gba", 0x5846ec, 0x66 + + .globl gUnknown_8584752 +gUnknown_8584752: @ 0x8584752 + .incbin "baserom_jp.gba", 0x584752, 0xa + + .globl gUnknown_858475C +gUnknown_858475C: @ 0x858475C + .incbin "baserom_jp.gba", 0x58475c, 0x14 + + .globl gUnknown_8584770 +gUnknown_8584770: @ 0x8584770 + .incbin "baserom_jp.gba", 0x584770, 0xa + + .globl gUnknown_858477A +gUnknown_858477A: @ 0x858477A + .incbin "baserom_jp.gba", 0x58477a, 0x8 + + .globl gUnknown_8584782 +gUnknown_8584782: @ 0x8584782 + .incbin "baserom_jp.gba", 0x584782, 0x6 + + .globl gUnknown_8584788 +gUnknown_8584788: @ 0x8584788 + .incbin "baserom_jp.gba", 0x584788, 0xa + + .globl gUnknown_8584792 +gUnknown_8584792: @ 0x8584792 + .incbin "baserom_jp.gba", 0x584792, 0x8 + + .globl gUnknown_858479A +gUnknown_858479A: @ 0x858479A + .incbin "baserom_jp.gba", 0x58479a, 0x12 + + .globl gUnknown_85847AC +gUnknown_85847AC: @ 0x85847AC + .incbin "baserom_jp.gba", 0x5847ac, 0x12 + + .globl gUnknown_85847BE +gUnknown_85847BE: @ 0x85847BE + .incbin "baserom_jp.gba", 0x5847be, 0x8e + + .globl gUnknown_858484C +gUnknown_858484C: @ 0x858484C + .incbin "baserom_jp.gba", 0x58484c, 0x13c + + .globl gUnknown_8584988 +gUnknown_8584988: @ 0x8584988 + .incbin "baserom_jp.gba", 0x584988, 0x1c + + .globl gUnknown_85849A4 +gUnknown_85849A4: @ 0x85849A4 + .incbin "baserom_jp.gba", 0x5849a4, 0x2c0 + + .globl gUnknown_8584C64 +gUnknown_8584C64: @ 0x8584C64 + .incbin "baserom_jp.gba", 0x584c64, 0x18 + + .globl gUnknown_8584C7C +gUnknown_8584C7C: @ 0x8584C7C + .incbin "baserom_jp.gba", 0x584c7c, 0x18 + + .globl gUnknown_8584C94 +gUnknown_8584C94: @ 0x8584C94 + .incbin "baserom_jp.gba", 0x584c94, 0x18 + + .globl gUnknown_8584CAC +gUnknown_8584CAC: @ 0x8584CAC + .incbin "baserom_jp.gba", 0x584cac, 0x18 + + .globl gUnknown_8584CC4 +gUnknown_8584CC4: @ 0x8584CC4 + .incbin "baserom_jp.gba", 0x584cc4, 0x18 + + .globl gUnknown_8584CDC +gUnknown_8584CDC: @ 0x8584CDC + .incbin "baserom_jp.gba", 0x584cdc, 0x18 + + .globl gUnknown_8584CF4 +gUnknown_8584CF4: @ 0x8584CF4 + .incbin "baserom_jp.gba", 0x584cf4, 0x18 + + .globl gUnknown_8584D0C +gUnknown_8584D0C: @ 0x8584D0C + .incbin "baserom_jp.gba", 0x584d0c, 0x18 + + .globl gUnknown_8584D24 +gUnknown_8584D24: @ 0x8584D24 + .incbin "baserom_jp.gba", 0x584d24, 0x18 + + .globl gUnknown_8584D3C +gUnknown_8584D3C: @ 0x8584D3C + .incbin "baserom_jp.gba", 0x584d3c, 0x18 + + .globl gUnknown_8584D54 +gUnknown_8584D54: @ 0x8584D54 + .incbin "baserom_jp.gba", 0x584d54, 0x18 + + .globl gUnknown_8584D6C +gUnknown_8584D6C: @ 0x8584D6C + .incbin "baserom_jp.gba", 0x584d6c, 0x18 + + .globl gUnknown_8584D84 +gUnknown_8584D84: @ 0x8584D84 + .incbin "baserom_jp.gba", 0x584d84, 0x18 + + .globl gUnknown_8584D9C +gUnknown_8584D9C: @ 0x8584D9C + .incbin "baserom_jp.gba", 0x584d9c, 0x18 + + .globl gUnknown_8584DB4 +gUnknown_8584DB4: @ 0x8584DB4 + .incbin "baserom_jp.gba", 0x584db4, 0x168 + + .globl gUnknown_8584F1C +gUnknown_8584F1C: @ 0x8584F1C + .incbin "baserom_jp.gba", 0x584f1c, 0x28 + + .globl gUnknown_8584F44 +gUnknown_8584F44: @ 0x8584F44 + .incbin "baserom_jp.gba", 0x584f44, 0x20 + + .globl gUnknown_8584F64 +gUnknown_8584F64: @ 0x8584F64 + .incbin "baserom_jp.gba", 0x584f64, 0x14 + + .globl gUnknown_8584F78 +gUnknown_8584F78: @ 0x8584F78 + .incbin "baserom_jp.gba", 0x584f78, 0x1c + + .globl gUnknown_8584F94 +gUnknown_8584F94: @ 0x8584F94 + .incbin "baserom_jp.gba", 0x584f94, 0x18 + + .globl gUnknown_8584FAC +gUnknown_8584FAC: @ 0x8584FAC + .incbin "baserom_jp.gba", 0x584fac, 0x14 + + .globl gUnknown_8584FC0 +gUnknown_8584FC0: @ 0x8584FC0 + .incbin "baserom_jp.gba", 0x584fc0, 0x228 + + .globl gUnknown_85851E8 +gUnknown_85851E8: @ 0x85851E8 + .incbin "baserom_jp.gba", 0x5851e8, 0x68 + + .globl gUnknown_8585250 +gUnknown_8585250: @ 0x8585250 + .incbin "baserom_jp.gba", 0x585250, 0x68 + + .globl gUnknown_85852B8 +gUnknown_85852B8: @ 0x85852B8 + .incbin "baserom_jp.gba", 0x5852b8, 0xb0 + + .globl gUnknown_8585368 +gUnknown_8585368: @ 0x8585368 + .incbin "baserom_jp.gba", 0x585368, 0xe4 + + .globl gUnknown_858544C +gUnknown_858544C: @ 0x858544C + .incbin "baserom_jp.gba", 0x58544c, 0xc0 + + .globl gUnknown_858550C +gUnknown_858550C: @ 0x858550C + .incbin "baserom_jp.gba", 0x58550c, 0x14 + + .globl gUnknown_8585520 +gUnknown_8585520: @ 0x8585520 + .incbin "baserom_jp.gba", 0x585520, 0x14 + + .globl gUnknown_8585534 +gUnknown_8585534: @ 0x8585534 + .incbin "baserom_jp.gba", 0x585534, 0x5 + + .globl gUnknown_8585539 +gUnknown_8585539: @ 0x8585539 + .incbin "baserom_jp.gba", 0x585539, 0x6 + + .globl gUnknown_858553F +gUnknown_858553F: @ 0x858553F + .incbin "baserom_jp.gba", 0x58553f, 0x65 + + .globl gUnknown_85855A4 +gUnknown_85855A4: @ 0x85855A4 + .incbin "baserom_jp.gba", 0x5855a4, 0xc + + .globl gUnknown_85855B0 +gUnknown_85855B0: @ 0x85855B0 + .incbin "baserom_jp.gba", 0x5855b0, 0x64 + + .globl gUnknown_8585614 +gUnknown_8585614: @ 0x8585614 + .incbin "baserom_jp.gba", 0x585614, 0x10 + + .globl gUnknown_8585624 +gUnknown_8585624: @ 0x8585624 + .incbin "baserom_jp.gba", 0x585624, 0x4 + + .globl gUnknown_8585628 +gUnknown_8585628: @ 0x8585628 + .incbin "baserom_jp.gba", 0x585628, 0x20 + + .globl gUnknown_8585648 +gUnknown_8585648: @ 0x8585648 + .incbin "baserom_jp.gba", 0x585648, 0x48 + + .globl gUnknown_8585690 +gUnknown_8585690: @ 0x8585690 + .incbin "baserom_jp.gba", 0x585690, 0x768 + + .globl gUnknown_8585DF8 +gUnknown_8585DF8: @ 0x8585DF8 + .incbin "baserom_jp.gba", 0x585df8, 0x1154 + + .globl gUnknown_8586F4C +gUnknown_8586F4C: @ 0x8586F4C + .incbin "baserom_jp.gba", 0x586f4c, 0xba0 + + .globl gUnknown_8587AEC +gUnknown_8587AEC: @ 0x8587AEC + .incbin "baserom_jp.gba", 0x587aec, 0x4b0 + + .globl gUnknown_8587F9C +gUnknown_8587F9C: @ 0x8587F9C + .incbin "baserom_jp.gba", 0x587f9c, 0x1b8 + + .globl gUnknown_8588154 +gUnknown_8588154: @ 0x8588154 + .incbin "baserom_jp.gba", 0x588154, 0x4b0 + + .globl gUnknown_8588604 +gUnknown_8588604: @ 0x8588604 + .incbin "baserom_jp.gba", 0x588604, 0x2 + + .globl gUnknown_8588606 +gUnknown_8588606: @ 0x8588606 + .incbin "baserom_jp.gba", 0x588606, 0xc + + .globl gUnknown_8588612 +gUnknown_8588612: @ 0x8588612 + .incbin "baserom_jp.gba", 0x588612, 0x15 + + .globl gUnknown_8588627 +gUnknown_8588627: @ 0x8588627 + .incbin "baserom_jp.gba", 0x588627, 0x1a + + .globl gUnknown_8588641 +gUnknown_8588641: @ 0x8588641 + .incbin "baserom_jp.gba", 0x588641, 0x10 + + .globl gUnknown_8588651 +gUnknown_8588651: @ 0x8588651 + .incbin "baserom_jp.gba", 0x588651, 0x5b + + .globl gUnknown_85886AC +gUnknown_85886AC: @ 0x85886AC + .incbin "baserom_jp.gba", 0x5886ac, 0x200 + + .globl gUnknown_85888AC +gUnknown_85888AC: @ 0x85888AC + .incbin "baserom_jp.gba", 0x5888ac, 0x1084 + + .globl gUnknown_8589930 +gUnknown_8589930: @ 0x8589930 + .incbin "baserom_jp.gba", 0x589930, 0xc30 + + .globl gUnknown_858A560 +gUnknown_858A560: @ 0x858A560 + .incbin "baserom_jp.gba", 0x58a560, 0xb38 + + .globl gUnknown_858B098 +gUnknown_858B098: @ 0x858B098 + .incbin "baserom_jp.gba", 0x58b098, 0xfb8 + + .globl gUnknown_858C050 +gUnknown_858C050: @ 0x858C050 + .incbin "baserom_jp.gba", 0x58c050, 0x1130 + + .globl gUnknown_858D180 +gUnknown_858D180: @ 0x858D180 + .incbin "baserom_jp.gba", 0x58d180, 0x604 + + .globl gUnknown_858D784 +gUnknown_858D784: @ 0x858D784 + .incbin "baserom_jp.gba", 0x58d784, 0x50c + + .globl gUnknown_858DC90 +gUnknown_858DC90: @ 0x858DC90 + .incbin "baserom_jp.gba", 0x58dc90, 0x50c + + .globl gUnknown_858E19C +gUnknown_858E19C: @ 0x858E19C + .incbin "baserom_jp.gba", 0x58e19c, 0x50c + + .globl gUnknown_858E6A8 +gUnknown_858E6A8: @ 0x858E6A8 + .incbin "baserom_jp.gba", 0x58e6a8, 0x50c + + .globl gUnknown_858EBB4 +gUnknown_858EBB4: @ 0x858EBB4 + .incbin "baserom_jp.gba", 0x58ebb4, 0x50c + + .globl gUnknown_858F0C0 +gUnknown_858F0C0: @ 0x858F0C0 + .incbin "baserom_jp.gba", 0x58f0c0, 0x510 + + .globl gUnknown_858F5D0 +gUnknown_858F5D0: @ 0x858F5D0 + .incbin "baserom_jp.gba", 0x58f5d0, 0x14 + + .globl gUnknown_858F5E4 +gUnknown_858F5E4: @ 0x858F5E4 + .incbin "baserom_jp.gba", 0x58f5e4, 0x14 + + .globl gUnknown_858F5F8 +gUnknown_858F5F8: @ 0x858F5F8 + .incbin "baserom_jp.gba", 0x58f5f8, 0x4 + + .globl gUnknown_858F5FC +gUnknown_858F5FC: @ 0x858F5FC + .incbin "baserom_jp.gba", 0x58f5fc, 0x8 + + .globl gUnknown_858F604 +gUnknown_858F604: @ 0x858F604 + .incbin "baserom_jp.gba", 0x58f604, 0x3c + + .globl gUnknown_858F640 +gUnknown_858F640: @ 0x858F640 + .incbin "baserom_jp.gba", 0x58f640, 0x8 + + .globl gUnknown_858F648 +gUnknown_858F648: @ 0x858F648 + .incbin "baserom_jp.gba", 0x58f648, 0x4 + + .globl gUnknown_858F64C +gUnknown_858F64C: @ 0x858F64C + .incbin "baserom_jp.gba", 0x58f64c, 0x18c + + .globl gUnknown_858F7D8 +gUnknown_858F7D8: @ 0x858F7D8 + .incbin "baserom_jp.gba", 0x58f7d8, 0x1c + + .globl gUnknown_858F7F4 +gUnknown_858F7F4: @ 0x858F7F4 + .incbin "baserom_jp.gba", 0x58f7f4, 0x10 + + .globl gUnknown_858F804 +gUnknown_858F804: @ 0x858F804 + .incbin "baserom_jp.gba", 0x58f804, 0x4 + + .globl gUnknown_858F808 +gUnknown_858F808: @ 0x858F808 + .incbin "baserom_jp.gba", 0x58f808, 0x8 + + .globl gUnknown_858F810 +gUnknown_858F810: @ 0x858F810 + .incbin "baserom_jp.gba", 0x58f810, 0x2 + + .globl gUnknown_858F812 +gUnknown_858F812: @ 0x858F812 + .incbin "baserom_jp.gba", 0x58f812, 0x7e + + .globl gUnknown_858F890 +gUnknown_858F890: @ 0x858F890 + .incbin "baserom_jp.gba", 0x58f890, 0x18c + + .globl gUnknown_858FA1C +gUnknown_858FA1C: @ 0x858FA1C + .incbin "baserom_jp.gba", 0x58fa1c, 0x1f8 + + .globl gUnknown_858FC14 +gUnknown_858FC14: @ 0x858FC14 + .incbin "baserom_jp.gba", 0x58fc14, 0xfc8 + + .globl gUnknown_8590BDC +gUnknown_8590BDC: @ 0x8590BDC + .incbin "baserom_jp.gba", 0x590bdc, 0x10 + + .globl gUnknown_8590BEC +gUnknown_8590BEC: @ 0x8590BEC + .incbin "baserom_jp.gba", 0x590bec, 0x8 + + .globl gUnknown_8590BF4 +gUnknown_8590BF4: @ 0x8590BF4 + .incbin "baserom_jp.gba", 0x590bf4, 0x8 + + .globl gUnknown_8590BFC +gUnknown_8590BFC: @ 0x8590BFC + .incbin "baserom_jp.gba", 0x590bfc, 0x6 + + .globl gUnknown_8590C02 +gUnknown_8590C02: @ 0x8590C02 + .incbin "baserom_jp.gba", 0x590c02, 0x6 + + .globl gUnknown_8590C08 +gUnknown_8590C08: @ 0x8590C08 + .incbin "baserom_jp.gba", 0x590c08, 0x8 + + .globl gUnknown_8590C10 +gUnknown_8590C10: @ 0x8590C10 + .incbin "baserom_jp.gba", 0x590c10, 0xc + + .globl gUnknown_8590C1C +gUnknown_8590C1C: @ 0x8590C1C + .incbin "baserom_jp.gba", 0x590c1c, 0x1c + + .globl gUnknown_8590C38 +gUnknown_8590C38: @ 0x8590C38 + .incbin "baserom_jp.gba", 0x590c38, 0xa8 + + .globl gUnknown_8590CE0 +gUnknown_8590CE0: @ 0x8590CE0 + .incbin "baserom_jp.gba", 0x590ce0, 0x8 + + .globl gUnknown_8590CE8 +gUnknown_8590CE8: @ 0x8590CE8 + .incbin "baserom_jp.gba", 0x590ce8, 0x10 + + .globl gUnknown_8590CF8 +gUnknown_8590CF8: @ 0x8590CF8 + .incbin "baserom_jp.gba", 0x590cf8, 0x10 + + .globl gUnknown_8590D08 +gUnknown_8590D08: @ 0x8590D08 + .incbin "baserom_jp.gba", 0x590d08, 0x18 + + .globl gUnknown_8590D20 +gUnknown_8590D20: @ 0x8590D20 + .incbin "baserom_jp.gba", 0x590d20, 0x18 + + .globl gUnknown_8590D38 +gUnknown_8590D38: @ 0x8590D38 + .incbin "baserom_jp.gba", 0x590d38, 0x18 + + .globl gUnknown_8590D50 +gUnknown_8590D50: @ 0x8590D50 + .incbin "baserom_jp.gba", 0x590d50, 0x18 + + .globl gUnknown_8590D68 +gUnknown_8590D68: @ 0x8590D68 + .incbin "baserom_jp.gba", 0x590d68, 0x20 + + .globl gUnknown_8590D88 +gUnknown_8590D88: @ 0x8590D88 + .incbin "baserom_jp.gba", 0x590d88, 0x20 + + .globl gUnknown_8590DA8 +gUnknown_8590DA8: @ 0x8590DA8 + .incbin "baserom_jp.gba", 0x590da8, 0x2cc + + .globl gUnknown_8591074 +gUnknown_8591074: @ 0x8591074 + .incbin "baserom_jp.gba", 0x591074, 0x298 + + .globl gUnknown_859130C +gUnknown_859130C: @ 0x859130C + .incbin "baserom_jp.gba", 0x59130c, 0x8f8 + + .globl gUnknown_8591C04 +gUnknown_8591C04: @ 0x8591C04 + .incbin "baserom_jp.gba", 0x591c04, 0x11 + + .globl gUnknown_8591C15 +gUnknown_8591C15: @ 0x8591C15 + .incbin "baserom_jp.gba", 0x591c15, 0x5 + + .globl gUnknown_8591C1A +gUnknown_8591C1A: @ 0x8591C1A + .incbin "baserom_jp.gba", 0x591c1a, 0x6 + + .globl gUnknown_8591C20 +gUnknown_8591C20: @ 0x8591C20 + .incbin "baserom_jp.gba", 0x591c20, 0x8 + + .globl gUnknown_8591C28 +gUnknown_8591C28: @ 0x8591C28 + .incbin "baserom_jp.gba", 0x591c28, 0x18 + + .globl gUnknown_8591C40 +gUnknown_8591C40: @ 0x8591C40 + .incbin "baserom_jp.gba", 0x591c40, 0x8 + + .globl gUnknown_8591C48 +gUnknown_8591C48: @ 0x8591C48 + .incbin "baserom_jp.gba", 0x591c48, 0xc + + .globl gUnknown_8591C54 +gUnknown_8591C54: @ 0x8591C54 + .incbin "baserom_jp.gba", 0x591c54, 0x10 + + .globl gUnknown_8591C64 +gUnknown_8591C64: @ 0x8591C64 + .incbin "baserom_jp.gba", 0x591c64, 0x38 + + .globl gUnknown_8591C9C +gUnknown_8591C9C: @ 0x8591C9C + .incbin "baserom_jp.gba", 0x591c9c, 0x18 + + .globl gUnknown_8591CB4 +gUnknown_8591CB4: @ 0x8591CB4 + .incbin "baserom_jp.gba", 0x591cb4, 0x38 + + .globl gUnknown_8591CEC +gUnknown_8591CEC: @ 0x8591CEC + .incbin "baserom_jp.gba", 0x591cec, 0x18 + + .globl gUnknown_8591D04 +gUnknown_8591D04: @ 0x8591D04 + .incbin "baserom_jp.gba", 0x591d04, 0x18 + + .globl gUnknown_8591D1C +gUnknown_8591D1C: @ 0x8591D1C + .incbin "baserom_jp.gba", 0x591d1c, 0x2d0 + + .globl gUnknown_8591FEC +gUnknown_8591FEC: @ 0x8591FEC + .incbin "baserom_jp.gba", 0x591fec, 0x80 + + .globl gUnknown_859206C +gUnknown_859206C: @ 0x859206C + .incbin "baserom_jp.gba", 0x59206c, 0xc + + .globl gUnknown_8592078 +gUnknown_8592078: @ 0x8592078 + .incbin "baserom_jp.gba", 0x592078, 0x3c + + .globl gUnknown_85920B4 +gUnknown_85920B4: @ 0x85920B4 + .incbin "baserom_jp.gba", 0x5920b4, 0x30 + + .globl gUnknown_85920E4 +gUnknown_85920E4: @ 0x85920E4 + .incbin "baserom_jp.gba", 0x5920e4, 0x3 + + .globl gUnknown_85920E7 +gUnknown_85920E7: @ 0x85920E7 + .incbin "baserom_jp.gba", 0x5920e7, 0x2 + + .globl gUnknown_85920E9 +gUnknown_85920E9: @ 0x85920E9 + .incbin "baserom_jp.gba", 0x5920e9, 0x2 + + .globl gUnknown_85920EB +gUnknown_85920EB: @ 0x85920EB + .incbin "baserom_jp.gba", 0x5920eb, 0x5 + + .globl gUnknown_85920F0 +gUnknown_85920F0: @ 0x85920F0 + .incbin "baserom_jp.gba", 0x5920f0, 0x4c + + .globl gUnknown_859213C +gUnknown_859213C: @ 0x859213C + .incbin "baserom_jp.gba", 0x59213c, 0x4 + + .globl gUnknown_8592140 +gUnknown_8592140: @ 0x8592140 + .incbin "baserom_jp.gba", 0x592140, 0x8 + + .globl gUnknown_8592148 +gUnknown_8592148: @ 0x8592148 + .incbin "baserom_jp.gba", 0x592148, 0x8 + + .globl gUnknown_8592150 +gUnknown_8592150: @ 0x8592150 + .incbin "baserom_jp.gba", 0x592150, 0x18 + + .globl gUnknown_8592168 +gUnknown_8592168: @ 0x8592168 + .incbin "baserom_jp.gba", 0x592168, 0x4 + + .globl gUnknown_859216C +gUnknown_859216C: @ 0x859216C + .incbin "baserom_jp.gba", 0x59216c, 0x28 + + .globl gUnknown_8592194 +gUnknown_8592194: @ 0x8592194 + .incbin "baserom_jp.gba", 0x592194, 0x60 + + .globl gUnknown_85921F4 +gUnknown_85921F4: @ 0x85921F4 + .incbin "baserom_jp.gba", 0x5921f4, 0x8 + + .globl gUnknown_85921FC +gUnknown_85921FC: @ 0x85921FC + .incbin "baserom_jp.gba", 0x5921fc, 0x18 + + .globl gUnknown_8592214 +gUnknown_8592214: @ 0x8592214 + .incbin "baserom_jp.gba", 0x592214, 0x88 + + .globl gUnknown_859229C +gUnknown_859229C: @ 0x859229C + .incbin "baserom_jp.gba", 0x59229c, 0x20 + + .globl gUnknown_85922BC +gUnknown_85922BC: @ 0x85922BC + .incbin "baserom_jp.gba", 0x5922bc, 0x20 + + .globl gUnknown_85922DC +gUnknown_85922DC: @ 0x85922DC + .incbin "baserom_jp.gba", 0x5922dc, 0x10 + + .globl gUnknown_85922EC +gUnknown_85922EC: @ 0x85922EC + .incbin "baserom_jp.gba", 0x5922ec, 0x10 + + .globl gUnknown_85922FC +gUnknown_85922FC: @ 0x85922FC + .incbin "baserom_jp.gba", 0x5922fc, 0x1e0 + + .globl gUnknown_85924DC +gUnknown_85924DC: @ 0x85924DC + .incbin "baserom_jp.gba", 0x5924dc, 0xb4 + + .globl gUnknown_8592590 +gUnknown_8592590: @ 0x8592590 + .incbin "baserom_jp.gba", 0x592590, 0x18 + + .globl gUnknown_85925A8 +gUnknown_85925A8: @ 0x85925A8 + .incbin "baserom_jp.gba", 0x5925a8, 0x4 + + .globl gUnknown_85925AC +gUnknown_85925AC: @ 0x85925AC + .incbin "baserom_jp.gba", 0x5925ac, 0x8 + + .globl gUnknown_85925B4 +gUnknown_85925B4: @ 0x85925B4 + .incbin "baserom_jp.gba", 0x5925b4, 0x10 + + .globl gUnknown_85925C4 +gUnknown_85925C4: @ 0x85925C4 + .incbin "baserom_jp.gba", 0x5925c4, 0x6 + + .globl gUnknown_85925CA +gUnknown_85925CA: @ 0x85925CA + .incbin "baserom_jp.gba", 0x5925ca, 0xa + + .globl gUnknown_85925D4 +gUnknown_85925D4: @ 0x85925D4 + .incbin "baserom_jp.gba", 0x5925d4, 0xc + + .globl gUnknown_85925E0 +gUnknown_85925E0: @ 0x85925E0 + .incbin "baserom_jp.gba", 0x5925e0, 0xc + + .globl gUnknown_85925EC +gUnknown_85925EC: @ 0x85925EC + .incbin "baserom_jp.gba", 0x5925ec, 0xc + + .globl gUnknown_85925F8 +gUnknown_85925F8: @ 0x85925F8 + .incbin "baserom_jp.gba", 0x5925f8, 0xc + + .globl gUnknown_8592604 +gUnknown_8592604: @ 0x8592604 + .incbin "baserom_jp.gba", 0x592604, 0x4 + + .globl gUnknown_8592608 +gUnknown_8592608: @ 0x8592608 + .incbin "baserom_jp.gba", 0x592608, 0x8 + + .globl gUnknown_8592610 +gUnknown_8592610: @ 0x8592610 + .incbin "baserom_jp.gba", 0x592610, 0x40 + + .globl gUnknown_8592650 +gUnknown_8592650: @ 0x8592650 + .incbin "baserom_jp.gba", 0x592650, 0x12 + + .globl gUnknown_8592662 +gUnknown_8592662: @ 0x8592662 + .incbin "baserom_jp.gba", 0x592662, 0x12 + + .globl gUnknown_8592674 +gUnknown_8592674: @ 0x8592674 + .incbin "baserom_jp.gba", 0x592674, 0x9 + + .globl gUnknown_859267D +gUnknown_859267D: @ 0x859267D + .incbin "baserom_jp.gba", 0x59267d, 0x9 + + .globl gUnknown_8592686 +gUnknown_8592686: @ 0x8592686 + .incbin "baserom_jp.gba", 0x592686, 0x26 + + .globl gUnknown_85926AC +gUnknown_85926AC: @ 0x85926AC + .incbin "baserom_jp.gba", 0x5926ac, 0x78 + + .globl gUnknown_8592724 +gUnknown_8592724: @ 0x8592724 + .incbin "baserom_jp.gba", 0x592724, 0x14 + + .globl gUnknown_8592738 +gUnknown_8592738: @ 0x8592738 + .incbin "baserom_jp.gba", 0x592738, 0x14 + + .globl gUnknown_859274C +gUnknown_859274C: @ 0x859274C + .incbin "baserom_jp.gba", 0x59274c, 0x340 + + .globl gUnknown_8592A8C +gUnknown_8592A8C: @ 0x8592A8C + .incbin "baserom_jp.gba", 0x592a8c, 0x10 + + .globl gUnknown_8592A9C +gUnknown_8592A9C: @ 0x8592A9C + .incbin "baserom_jp.gba", 0x592a9c, 0x64 + + .globl gUnknown_8592B00 +gUnknown_8592B00: @ 0x8592B00 + .incbin "baserom_jp.gba", 0x592b00, 0x30 + + .globl gUnknown_8592B30 +gUnknown_8592B30: @ 0x8592B30 + .incbin "baserom_jp.gba", 0x592b30, 0x30 + + .globl gUnknown_8592B60 +gUnknown_8592B60: @ 0x8592B60 + .incbin "baserom_jp.gba", 0x592b60, 0x18 + + .globl gUnknown_8592B78 +gUnknown_8592B78: @ 0x8592B78 + .incbin "baserom_jp.gba", 0x592b78, 0x8 + + .globl gUnknown_8592B80 +gUnknown_8592B80: @ 0x8592B80 + .incbin "baserom_jp.gba", 0x592b80, 0x8 + + .globl gUnknown_8592B88 +gUnknown_8592B88: @ 0x8592B88 + .incbin "baserom_jp.gba", 0x592b88, 0x16 + + .globl gUnknown_8592B9E +gUnknown_8592B9E: @ 0x8592B9E + .incbin "baserom_jp.gba", 0x592b9e, 0xc + + .globl gUnknown_8592BAA +gUnknown_8592BAA: @ 0x8592BAA + .incbin "baserom_jp.gba", 0x592baa, 0xe + + .globl gUnknown_8592BB8 +gUnknown_8592BB8: @ 0x8592BB8 + .incbin "baserom_jp.gba", 0x592bb8, 0x14 + + .globl gUnknown_8592BCC +gUnknown_8592BCC: @ 0x8592BCC + .incbin "baserom_jp.gba", 0x592bcc, 0x2c + + .globl gUnknown_8592BF8 +gUnknown_8592BF8: @ 0x8592BF8 + .incbin "baserom_jp.gba", 0x592bf8, 0x18 + + .globl gUnknown_8592C10 +gUnknown_8592C10: @ 0x8592C10 + .incbin "baserom_jp.gba", 0x592c10, 0x1c + + .globl gUnknown_8592C2C +gUnknown_8592C2C: @ 0x8592C2C + .incbin "baserom_jp.gba", 0x592c2c, 0x28 + + .globl gUnknown_8592C54 +gUnknown_8592C54: @ 0x8592C54 + .incbin "baserom_jp.gba", 0x592c54, 0x14 + + .globl gUnknown_8592C68 +gUnknown_8592C68: @ 0x8592C68 + .incbin "baserom_jp.gba", 0x592c68, 0x14 + + .globl gUnknown_8592C7C +gUnknown_8592C7C: @ 0x8592C7C + .incbin "baserom_jp.gba", 0x592c7c, 0x8 + + .globl gUnknown_8592C84 +gUnknown_8592C84: @ 0x8592C84 + .incbin "baserom_jp.gba", 0x592c84, 0x2c + + .globl gUnknown_8592CB0 +gUnknown_8592CB0: @ 0x8592CB0 + .incbin "baserom_jp.gba", 0x592cb0, 0x2c + + .globl gUnknown_8592CDC +gUnknown_8592CDC: @ 0x8592CDC + .incbin "baserom_jp.gba", 0x592cdc, 0x160 + + .globl gUnknown_8592E3C +gUnknown_8592E3C: @ 0x8592E3C + .incbin "baserom_jp.gba", 0x592e3c, 0x16 + + .globl gUnknown_8592E52 +gUnknown_8592E52: @ 0x8592E52 + .incbin "baserom_jp.gba", 0x592e52, 0xa + + .globl gUnknown_8592E5C +gUnknown_8592E5C: @ 0x8592E5C + .incbin "baserom_jp.gba", 0x592e5c, 0x10 + + .globl gUnknown_8592E6C +gUnknown_8592E6C: @ 0x8592E6C + .incbin "baserom_jp.gba", 0x592e6c, 0x10 + + .globl gUnknown_8592E7C +gUnknown_8592E7C: @ 0x8592E7C + .incbin "baserom_jp.gba", 0x592e7c, 0x24 + + .globl gUnknown_8592EA0 +gUnknown_8592EA0: @ 0x8592EA0 + .incbin "baserom_jp.gba", 0x592ea0, 0x2c + + .globl gUnknown_8592ECC +gUnknown_8592ECC: @ 0x8592ECC + .incbin "baserom_jp.gba", 0x592ecc, 0x4 + + .globl gUnknown_8592ED0 +gUnknown_8592ED0: @ 0x8592ED0 + .incbin "baserom_jp.gba", 0x592ed0, 0x8 + + .globl gUnknown_8592ED8 +gUnknown_8592ED8: @ 0x8592ED8 + .incbin "baserom_jp.gba", 0x592ed8, 0x8 + + .globl gUnknown_8592EE0 +gUnknown_8592EE0: @ 0x8592EE0 + .incbin "baserom_jp.gba", 0x592ee0, 0xc0 + + .globl gUnknown_8592FA0 +gUnknown_8592FA0: @ 0x8592FA0 + .incbin "baserom_jp.gba", 0x592fa0, 0x20 + + .globl gUnknown_8592FC0 +gUnknown_8592FC0: @ 0x8592FC0 + .incbin "baserom_jp.gba", 0x592fc0, 0x800 + + .globl gUnknown_85937C0 +gUnknown_85937C0: @ 0x85937C0 + .incbin "baserom_jp.gba", 0x5937c0, 0x8 + + .globl gUnknown_85937C8 +gUnknown_85937C8: @ 0x85937C8 + .incbin "baserom_jp.gba", 0x5937c8, 0x10 + + .globl gUnknown_85937D8 +gUnknown_85937D8: @ 0x85937D8 + .incbin "baserom_jp.gba", 0x5937d8, 0x8 + + .globl gUnknown_85937E0 +gUnknown_85937E0: @ 0x85937E0 + .incbin "baserom_jp.gba", 0x5937e0, 0xf + + .globl gUnknown_85937EF +gUnknown_85937EF: @ 0x85937EF + .incbin "baserom_jp.gba", 0x5937ef, 0x12 + + .globl gUnknown_8593801 +gUnknown_8593801: @ 0x8593801 + .incbin "baserom_jp.gba", 0x593801, 0x10 + + .globl gUnknown_8593811 +gUnknown_8593811: @ 0x8593811 + .incbin "baserom_jp.gba", 0x593811, 0x6 + + .globl gUnknown_8593817 +gUnknown_8593817: @ 0x8593817 + .incbin "baserom_jp.gba", 0x593817, 0x5 + + .globl gUnknown_859381C +gUnknown_859381C: @ 0x859381C + .incbin "baserom_jp.gba", 0x59381c, 0x20 + + .globl gUnknown_859383C +gUnknown_859383C: @ 0x859383C + .incbin "baserom_jp.gba", 0x59383c, 0x134 + + .globl gUnknown_8593970 +gUnknown_8593970: @ 0x8593970 + .incbin "baserom_jp.gba", 0x593970, 0x2 + + .globl gUnknown_8593972 +gUnknown_8593972: @ 0x8593972 + .incbin "baserom_jp.gba", 0x593972, 0x6 + + .globl gUnknown_8593978 +gUnknown_8593978: @ 0x8593978 + .incbin "baserom_jp.gba", 0x593978, 0xc + + .globl gUnknown_8593984 +gUnknown_8593984: @ 0x8593984 + .incbin "baserom_jp.gba", 0x593984, 0x1c + + .globl gUnknown_85939A0 +gUnknown_85939A0: @ 0x85939A0 + .incbin "baserom_jp.gba", 0x5939a0, 0x4 + + .globl gUnknown_85939A4 +gUnknown_85939A4: @ 0x85939A4 + .incbin "baserom_jp.gba", 0x5939a4, 0x8 + + .globl gUnknown_85939AC +gUnknown_85939AC: @ 0x85939AC + .incbin "baserom_jp.gba", 0x5939ac, 0x10 + + .globl gUnknown_85939BC +gUnknown_85939BC: @ 0x85939BC + .incbin "baserom_jp.gba", 0x5939bc, 0xb8 + + .globl gUnknown_8593A74 +gUnknown_8593A74: @ 0x8593A74 + .incbin "baserom_jp.gba", 0x593a74, 0x10 + + .globl gUnknown_8593A84 +gUnknown_8593A84: @ 0x8593A84 + .incbin "baserom_jp.gba", 0x593a84, 0x38 + + .globl gUnknown_8593ABC +gUnknown_8593ABC: @ 0x8593ABC + .incbin "baserom_jp.gba", 0x593abc, 0x1e4 + + .globl gUnknown_8593CA0 +gUnknown_8593CA0: @ 0x8593CA0 + .incbin "baserom_jp.gba", 0x593ca0, 0x6f8 + + .globl gUnknown_8594398 +gUnknown_8594398: @ 0x8594398 + .incbin "baserom_jp.gba", 0x594398, 0x4e4 + + .globl gUnknown_859487C +gUnknown_859487C: @ 0x859487C + .incbin "baserom_jp.gba", 0x59487c, 0x4d4 + + .globl gUnknown_8594D50 +gUnknown_8594D50: @ 0x8594D50 + .incbin "baserom_jp.gba", 0x594d50, 0x6a0 + + .globl gUnknown_85953F0 +gUnknown_85953F0: @ 0x85953F0 + .incbin "baserom_jp.gba", 0x5953f0, 0x40 + + .globl gUnknown_8595430 +gUnknown_8595430: @ 0x8595430 + .incbin "baserom_jp.gba", 0x595430, 0x45 + + .globl gUnknown_8595475 +gUnknown_8595475: @ 0x8595475 + .incbin "baserom_jp.gba", 0x595475, 0x10 + + .globl gUnknown_8595485 +gUnknown_8595485: @ 0x8595485 + .incbin "baserom_jp.gba", 0x595485, 0x323 + + .globl gUnknown_85957A8 +gUnknown_85957A8: @ 0x85957A8 + .incbin "baserom_jp.gba", 0x5957a8, 0x200 + + .globl gUnknown_85959A8 +gUnknown_85959A8: @ 0x85959A8 + .incbin "baserom_jp.gba", 0x5959a8, 0x1a4 + + .globl gUnknown_8595B4C +gUnknown_8595B4C: @ 0x8595B4C + .incbin "baserom_jp.gba", 0x595b4c, 0x1a0 + + .globl gUnknown_8595CEC +gUnknown_8595CEC: @ 0x8595CEC + .incbin "baserom_jp.gba", 0x595cec, 0xc + + .globl gUnknown_8595CF8 +gUnknown_8595CF8: @ 0x8595CF8 + .incbin "baserom_jp.gba", 0x595cf8, 0x8 + + .globl gUnknown_8595D00 +gUnknown_8595D00: @ 0x8595D00 + .incbin "baserom_jp.gba", 0x595d00, 0xc + + .globl gUnknown_8595D0C +gUnknown_8595D0C: @ 0x8595D0C + .incbin "baserom_jp.gba", 0x595d0c, 0x184 + + .globl gUnknown_8595E90 +gUnknown_8595E90: @ 0x8595E90 + .incbin "baserom_jp.gba", 0x595e90, 0x4 + + .globl gUnknown_8595E94 +gUnknown_8595E94: @ 0x8595E94 + .incbin "baserom_jp.gba", 0x595e94, 0x5c + + .globl gUnknown_8595EF0 +gUnknown_8595EF0: @ 0x8595EF0 + .incbin "baserom_jp.gba", 0x595ef0, 0x4 + + .globl gUnknown_8595EF4 +gUnknown_8595EF4: @ 0x8595EF4 + .incbin "baserom_jp.gba", 0x595ef4, 0x40 + + .globl gUnknown_8595F34 +gUnknown_8595F34: @ 0x8595F34 + .incbin "baserom_jp.gba", 0x595f34, 0x68 + + .globl gUnknown_8595F9C +gUnknown_8595F9C: @ 0x8595F9C + .incbin "baserom_jp.gba", 0x595f9c, 0x20 + + .globl gUnknown_8595FBC +gUnknown_8595FBC: @ 0x8595FBC + .incbin "baserom_jp.gba", 0x595fbc, 0x8 + + .globl gUnknown_8595FC4 +gUnknown_8595FC4: @ 0x8595FC4 + .incbin "baserom_jp.gba", 0x595fc4, 0x8 + + .globl gUnknown_8595FCC +gUnknown_8595FCC: @ 0x8595FCC + .incbin "baserom_jp.gba", 0x595fcc, 0x6 + + .globl gUnknown_8595FD2 +gUnknown_8595FD2: @ 0x8595FD2 + .incbin "baserom_jp.gba", 0x595fd2, 0x4 + + .globl gUnknown_8595FD6 +gUnknown_8595FD6: @ 0x8595FD6 + .incbin "baserom_jp.gba", 0x595fd6, 0xa + + .globl gUnknown_8595FE0 +gUnknown_8595FE0: @ 0x8595FE0 + .incbin "baserom_jp.gba", 0x595fe0, 0x10 + + .globl gUnknown_8595FF0 +gUnknown_8595FF0: @ 0x8595FF0 + .incbin "baserom_jp.gba", 0x595ff0, 0xc + + .globl gUnknown_8595FFC +gUnknown_8595FFC: @ 0x8595FFC + .incbin "baserom_jp.gba", 0x595ffc, 0xf3c + + .globl gUnknown_8596F38 +gUnknown_8596F38: @ 0x8596F38 + .incbin "baserom_jp.gba", 0x596f38, 0x98 + + .globl gUnknown_8596FD0 +gUnknown_8596FD0: @ 0x8596FD0 + .incbin "baserom_jp.gba", 0x596fd0, 0x6c + + .globl gUnknown_859703C +gUnknown_859703C: @ 0x859703C + .incbin "baserom_jp.gba", 0x59703c, 0x8 + + .globl gUnknown_8597044 +gUnknown_8597044: @ 0x8597044 + .incbin "baserom_jp.gba", 0x597044, 0x78 + + .globl gUnknown_85970BC +gUnknown_85970BC: @ 0x85970BC + .incbin "baserom_jp.gba", 0x5970bc, 0x60 + + .globl gUnknown_859711C +gUnknown_859711C: @ 0x859711C + .incbin "baserom_jp.gba", 0x59711c, 0x48 + + .globl gUnknown_8597164 +gUnknown_8597164: @ 0x8597164 + .incbin "baserom_jp.gba", 0x597164, 0x60 + + .globl gUnknown_85971C4 +gUnknown_85971C4: @ 0x85971C4 + .incbin "baserom_jp.gba", 0x5971c4, 0x140 + + .globl gUnknown_8597304 +gUnknown_8597304: @ 0x8597304 + .incbin "baserom_jp.gba", 0x597304, 0x94 + + .globl gUnknown_8597398 +gUnknown_8597398: @ 0x8597398 + .incbin "baserom_jp.gba", 0x597398, 0x18 + + .globl gUnknown_85973B0 +gUnknown_85973B0: @ 0x85973B0 + .incbin "baserom_jp.gba", 0x5973b0, 0x18 + + .globl gUnknown_85973C8 +gUnknown_85973C8: @ 0x85973C8 + .incbin "baserom_jp.gba", 0x5973c8, 0x18 + + .globl gUnknown_85973E0 +gUnknown_85973E0: @ 0x85973E0 + .incbin "baserom_jp.gba", 0x5973e0, 0x18 + + .globl gUnknown_85973F8 +gUnknown_85973F8: @ 0x85973F8 + .incbin "baserom_jp.gba", 0x5973f8, 0x20 + + .globl gUnknown_8597418 +gUnknown_8597418: @ 0x8597418 + .incbin "baserom_jp.gba", 0x597418, 0xc4 + + .globl gUnknown_85974DC +gUnknown_85974DC: @ 0x85974DC + .incbin "baserom_jp.gba", 0x5974dc, 0x20 + + .globl gUnknown_85974FC +gUnknown_85974FC: @ 0x85974FC + .incbin "baserom_jp.gba", 0x5974fc, 0x8 + + .globl gUnknown_8597504 +gUnknown_8597504: @ 0x8597504 + .incbin "baserom_jp.gba", 0x597504, 0x28 + + .globl gUnknown_859752C +gUnknown_859752C: @ 0x859752C + .incbin "baserom_jp.gba", 0x59752c, 0x80 + + .globl gUnknown_85975AC +gUnknown_85975AC: @ 0x85975AC + .incbin "baserom_jp.gba", 0x5975ac, 0x18 + + .globl gUnknown_85975C4 +gUnknown_85975C4: @ 0x85975C4 + .incbin "baserom_jp.gba", 0x5975c4, 0x30 + + .globl gUnknown_85975F4 +gUnknown_85975F4: @ 0x85975F4 + .incbin "baserom_jp.gba", 0x5975f4, 0x7c + + .globl gUnknown_8597670 +gUnknown_8597670: @ 0x8597670 + .incbin "baserom_jp.gba", 0x597670, 0x30 + + .globl gUnknown_85976A0 +gUnknown_85976A0: @ 0x85976A0 + .incbin "baserom_jp.gba", 0x5976a0, 0x18 + + .globl gUnknown_85976B8 +gUnknown_85976B8: @ 0x85976B8 + .incbin "baserom_jp.gba", 0x5976b8, 0x6 + + .globl gUnknown_85976BE +gUnknown_85976BE: @ 0x85976BE + .incbin "baserom_jp.gba", 0x5976be, 0x8 + + .globl gUnknown_85976C6 +gUnknown_85976C6: @ 0x85976C6 + .incbin "baserom_jp.gba", 0x5976c6, 0x8 + + .globl gUnknown_85976CE +gUnknown_85976CE: @ 0x85976CE + .incbin "baserom_jp.gba", 0x5976ce, 0x14 + + .globl gUnknown_85976E2 +gUnknown_85976E2: @ 0x85976E2 + .incbin "baserom_jp.gba", 0x5976e2, 0x18 + + .globl gUnknown_85976FA +gUnknown_85976FA: @ 0x85976FA + .incbin "baserom_jp.gba", 0x5976fa, 0x2 + + .globl gUnknown_85976FC +gUnknown_85976FC: @ 0x85976FC + .incbin "baserom_jp.gba", 0x5976fc, 0x8d0 + + .globl gUnknown_8597FCC +gUnknown_8597FCC: @ 0x8597FCC + .incbin "baserom_jp.gba", 0x597fcc, 0x20 + + .globl gUnknown_8597FEC +gUnknown_8597FEC: @ 0x8597FEC + .incbin "baserom_jp.gba", 0x597fec, 0x338 + + .globl gUnknown_8598324 +gUnknown_8598324: @ 0x8598324 + .incbin "baserom_jp.gba", 0x598324, 0x480 + + .globl gUnknown_85987A4 +gUnknown_85987A4: @ 0x85987A4 + .incbin "baserom_jp.gba", 0x5987a4, 0x20 + + .globl gUnknown_85987C4 +gUnknown_85987C4: @ 0x85987C4 + .incbin "baserom_jp.gba", 0x5987c4, 0x20 + + .globl gUnknown_85987E4 +gUnknown_85987E4: @ 0x85987E4 + .incbin "baserom_jp.gba", 0x5987e4, 0x2 + + .globl gUnknown_85987E6 +gUnknown_85987E6: @ 0x85987E6 + .incbin "baserom_jp.gba", 0x5987e6, 0x36 + + .globl gUnknown_859881C +gUnknown_859881C: @ 0x859881C + .incbin "baserom_jp.gba", 0x59881c, 0x18 + + .globl gUnknown_8598834 +gUnknown_8598834: @ 0x8598834 + .incbin "baserom_jp.gba", 0x598834, 0x10 + + .globl gUnknown_8598844 +gUnknown_8598844: @ 0x8598844 + .incbin "baserom_jp.gba", 0x598844, 0x424 + + .globl gUnknown_8598C68 +gUnknown_8598C68: @ 0x8598C68 + .incbin "baserom_jp.gba", 0x598c68, 0x178 + + .globl gUnknown_8598DE0 +gUnknown_8598DE0: @ 0x8598DE0 + .incbin "baserom_jp.gba", 0x598de0, 0x580 + + .globl gUnknown_8599360 +gUnknown_8599360: @ 0x8599360 + .incbin "baserom_jp.gba", 0x599360, 0x240 + + .globl gUnknown_85995A0 +gUnknown_85995A0: @ 0x85995A0 + .incbin "baserom_jp.gba", 0x5995a0, 0x11e0 + + .globl gUnknown_859A780 +gUnknown_859A780: @ 0x859A780 + .incbin "baserom_jp.gba", 0x59a780, 0x1e0 + + .globl gUnknown_859A960 +gUnknown_859A960: @ 0x859A960 + .incbin "baserom_jp.gba", 0x59a960, 0x20 + + .globl gUnknown_859A980 +gUnknown_859A980: @ 0x859A980 + .incbin "baserom_jp.gba", 0x59a980, 0x378 + + .globl gUnknown_859ACF8 +gUnknown_859ACF8: @ 0x859ACF8 + .incbin "baserom_jp.gba", 0x59acf8, 0x25c + + .globl gUnknown_859AF54 +gUnknown_859AF54: @ 0x859AF54 + .incbin "baserom_jp.gba", 0x59af54, 0x48c + + .globl gUnknown_859B3E0 +gUnknown_859B3E0: @ 0x859B3E0 + .incbin "baserom_jp.gba", 0x59b3e0, 0x2e4 + + .globl gUnknown_859B6C4 +gUnknown_859B6C4: @ 0x859B6C4 + .incbin "baserom_jp.gba", 0x59b6c4, 0x6a0 + + .globl gUnknown_859BD64 +gUnknown_859BD64: @ 0x859BD64 + .incbin "baserom_jp.gba", 0x59bd64, 0x20 + + .globl gUnknown_859BD84 +gUnknown_859BD84: @ 0x859BD84 + .incbin "baserom_jp.gba", 0x59bd84, 0x20 + + .globl gUnknown_859BDA4 +gUnknown_859BDA4: @ 0x859BDA4 + .incbin "baserom_jp.gba", 0x59bda4, 0x20 + + .globl gUnknown_859BDC4 +gUnknown_859BDC4: @ 0x859BDC4 + .incbin "baserom_jp.gba", 0x59bdc4, 0x800 + + .globl gUnknown_859C5C4 +gUnknown_859C5C4: @ 0x859C5C4 + .incbin "baserom_jp.gba", 0x59c5c4, 0x800 + + .globl gUnknown_859CDC4 +gUnknown_859CDC4: @ 0x859CDC4 + .incbin "baserom_jp.gba", 0x59cdc4, 0x820 + + .globl gUnknown_859D5E4 +gUnknown_859D5E4: @ 0x859D5E4 + .incbin "baserom_jp.gba", 0x59d5e4, 0x6b4 + + .globl gUnknown_859DC98 +gUnknown_859DC98: @ 0x859DC98 + .incbin "baserom_jp.gba", 0x59dc98, 0x334 + + .globl gUnknown_859DFCC +gUnknown_859DFCC: @ 0x859DFCC + .incbin "baserom_jp.gba", 0x59dfcc, 0x56c + + .globl gUnknown_859E538 +gUnknown_859E538: @ 0x859E538 + .incbin "baserom_jp.gba", 0x59e538, 0x318 + + .globl gUnknown_859E850 +gUnknown_859E850: @ 0x859E850 + .incbin "baserom_jp.gba", 0x59e850, 0x140 + + .globl gUnknown_859E990 +gUnknown_859E990: @ 0x859E990 + .incbin "baserom_jp.gba", 0x59e990, 0x1c0 + + .globl gUnknown_859EB50 +gUnknown_859EB50: @ 0x859EB50 + .incbin "baserom_jp.gba", 0x59eb50, 0x200 + + .globl gUnknown_859ED50 +gUnknown_859ED50: @ 0x859ED50 + .incbin "baserom_jp.gba", 0x59ed50, 0x200 + + .globl gUnknown_859EF50 +gUnknown_859EF50: @ 0x859EF50 + .incbin "baserom_jp.gba", 0x59ef50, 0xa0 + + .globl gUnknown_859EFF0 +gUnknown_859EFF0: @ 0x859EFF0 + .incbin "baserom_jp.gba", 0x59eff0, 0x160 + + .globl gUnknown_859F150 +gUnknown_859F150: @ 0x859F150 + .incbin "baserom_jp.gba", 0x59f150, 0x7540 + + .globl gUnknown_85A6690 +gUnknown_85A6690: @ 0x85A6690 + .incbin "baserom_jp.gba", 0x5a6690, 0x1000 + + .globl gUnknown_85A7690 +gUnknown_85A7690: @ 0x85A7690 + .incbin "baserom_jp.gba", 0x5a7690, 0x20 + + .globl gUnknown_85A76B0 +gUnknown_85A76B0: @ 0x85A76B0 + .incbin "baserom_jp.gba", 0x5a76b0, 0x68c + + .globl gUnknown_85A7D3C +gUnknown_85A7D3C: @ 0x85A7D3C + .incbin "baserom_jp.gba", 0x5a7d3c, 0x2ec + + .globl gUnknown_85A8028 +gUnknown_85A8028: @ 0x85A8028 + .incbin "baserom_jp.gba", 0x5a8028, 0x20 + + .globl gUnknown_85A8048 +gUnknown_85A8048: @ 0x85A8048 + .incbin "baserom_jp.gba", 0x5a8048, 0x15c + + .globl gUnknown_85A81A4 +gUnknown_85A81A4: @ 0x85A81A4 + .incbin "baserom_jp.gba", 0x5a81a4, 0x100 + + .globl gUnknown_85A82A4 +gUnknown_85A82A4: @ 0x85A82A4 + .incbin "baserom_jp.gba", 0x5a82a4, 0xb0 + + .globl gUnknown_85A8354 +gUnknown_85A8354: @ 0x85A8354 + .incbin "baserom_jp.gba", 0x5a8354, 0x84 + + .globl gUnknown_85A83D8 +gUnknown_85A83D8: @ 0x85A83D8 + .incbin "baserom_jp.gba", 0x5a83d8, 0x20 + + .globl gUnknown_85A83F8 +gUnknown_85A83F8: @ 0x85A83F8 + .incbin "baserom_jp.gba", 0x5a83f8, 0xa8 + + .globl gUnknown_85A84A0 +gUnknown_85A84A0: @ 0x85A84A0 + .incbin "baserom_jp.gba", 0x5a84a0, 0xa8 + + .globl gUnknown_85A8548 +gUnknown_85A8548: @ 0x85A8548 + .incbin "baserom_jp.gba", 0x5a8548, 0x10 + + .globl gUnknown_85A8558 +gUnknown_85A8558: @ 0x85A8558 + .incbin "baserom_jp.gba", 0x5a8558, 0xc + + .globl gUnknown_85A8564 +gUnknown_85A8564: @ 0x85A8564 + .incbin "baserom_jp.gba", 0x5a8564, 0x8 + + .globl gUnknown_85A856C +gUnknown_85A856C: @ 0x85A856C + .incbin "baserom_jp.gba", 0x5a856c, 0x8 + + .globl gUnknown_85A8574 +gUnknown_85A8574: @ 0x85A8574 + .incbin "baserom_jp.gba", 0x5a8574, 0x1c + + .globl gUnknown_85A8590 +gUnknown_85A8590: @ 0x85A8590 + .incbin "baserom_jp.gba", 0x5a8590, 0x1c + + .globl gUnknown_85A85AC +gUnknown_85A85AC: @ 0x85A85AC + .incbin "baserom_jp.gba", 0x5a85ac, 0x18 + + .globl gUnknown_85A85C4 +gUnknown_85A85C4: @ 0x85A85C4 + .incbin "baserom_jp.gba", 0x5a85c4, 0x18 + + .globl gUnknown_85A85DC +gUnknown_85A85DC: @ 0x85A85DC + .incbin "baserom_jp.gba", 0x5a85dc, 0x18 + + .globl gUnknown_85A85F4 +gUnknown_85A85F4: @ 0x85A85F4 + .incbin "baserom_jp.gba", 0x5a85f4, 0x18 + + .globl gUnknown_85A860C +gUnknown_85A860C: @ 0x85A860C + .incbin "baserom_jp.gba", 0x5a860c, 0x20 + + .globl gUnknown_85A862C +gUnknown_85A862C: @ 0x85A862C + .incbin "baserom_jp.gba", 0x5a862c, 0xc + + .globl gUnknown_85A8638 +gUnknown_85A8638: @ 0x85A8638 + .incbin "baserom_jp.gba", 0x5a8638, 0x4 + + .globl gUnknown_85A863C +gUnknown_85A863C: @ 0x85A863C + .incbin "baserom_jp.gba", 0x5a863c, 0xa + + .globl gUnknown_85A8646 +gUnknown_85A8646: @ 0x85A8646 + .incbin "baserom_jp.gba", 0x5a8646, 0x6 + + .globl gUnknown_85A864C +gUnknown_85A864C: @ 0x85A864C + .incbin "baserom_jp.gba", 0x5a864c, 0x1c + + .globl gUnknown_85A8668 +gUnknown_85A8668: @ 0x85A8668 + .incbin "baserom_jp.gba", 0x5a8668, 0x8 + + .globl gUnknown_85A8670 +gUnknown_85A8670: @ 0x85A8670 + .incbin "baserom_jp.gba", 0x5a8670, 0xc + + .globl gUnknown_85A867C +gUnknown_85A867C: @ 0x85A867C + .incbin "baserom_jp.gba", 0x5a867c, 0x28 + + .globl gUnknown_85A86A4 +gUnknown_85A86A4: @ 0x85A86A4 + .incbin "baserom_jp.gba", 0x5a86a4, 0x6 + + .globl gUnknown_85A86AA +gUnknown_85A86AA: @ 0x85A86AA + .incbin "baserom_jp.gba", 0x5a86aa, 0x14 + + .globl gUnknown_85A86BE +gUnknown_85A86BE: @ 0x85A86BE + .incbin "baserom_jp.gba", 0x5a86be, 0x16 + + .globl gUnknown_85A86D4 +gUnknown_85A86D4: @ 0x85A86D4 + .incbin "baserom_jp.gba", 0x5a86d4, 0x1c + + .globl gUnknown_85A86F0 +gUnknown_85A86F0: @ 0x85A86F0 + .incbin "baserom_jp.gba", 0x5a86f0, 0x4 + + .globl gUnknown_85A86F4 +gUnknown_85A86F4: @ 0x85A86F4 + .incbin "baserom_jp.gba", 0x5a86f4, 0x4 + + .globl gUnknown_85A86F8 +gUnknown_85A86F8: @ 0x85A86F8 + .incbin "baserom_jp.gba", 0x5a86f8, 0xc + + .globl gUnknown_85A8704 +gUnknown_85A8704: @ 0x85A8704 + .incbin "baserom_jp.gba", 0x5a8704, 0x10 + + .globl gUnknown_85A8714 +gUnknown_85A8714: @ 0x85A8714 + .incbin "baserom_jp.gba", 0x5a8714, 0x2 + + .globl gUnknown_85A8716 +gUnknown_85A8716: @ 0x85A8716 + .incbin "baserom_jp.gba", 0x5a8716, 0x6 + + .globl gUnknown_85A871C +gUnknown_85A871C: @ 0x85A871C + .incbin "baserom_jp.gba", 0x5a871c, 0xc + + .globl gUnknown_85A8728 +gUnknown_85A8728: @ 0x85A8728 + .incbin "baserom_jp.gba", 0x5a8728, 0x8 + + .globl gUnknown_85A8730 +gUnknown_85A8730: @ 0x85A8730 + .incbin "baserom_jp.gba", 0x5a8730, 0x4 + + .globl gUnknown_85A8734 +gUnknown_85A8734: @ 0x85A8734 + .incbin "baserom_jp.gba", 0x5a8734, 0xb4 + + .globl gUnknown_85A87E8 +gUnknown_85A87E8: @ 0x85A87E8 + .incbin "baserom_jp.gba", 0x5a87e8, 0x8 + + .globl gUnknown_85A87F0 +gUnknown_85A87F0: @ 0x85A87F0 + .incbin "baserom_jp.gba", 0x5a87f0, 0x20 + + .globl gUnknown_85A8810 +gUnknown_85A8810: @ 0x85A8810 + .incbin "baserom_jp.gba", 0x5a8810, 0x2c + + .globl gUnknown_85A883C +gUnknown_85A883C: @ 0x85A883C + .incbin "baserom_jp.gba", 0x5a883c, 0x14 + + .globl gUnknown_85A8850 +gUnknown_85A8850: @ 0x85A8850 + .incbin "baserom_jp.gba", 0x5a8850, 0x10 + + .globl gUnknown_85A8860 +gUnknown_85A8860: @ 0x85A8860 + .incbin "baserom_jp.gba", 0x5a8860, 0xc + + .globl gUnknown_85A886C +gUnknown_85A886C: @ 0x85A886C + .incbin "baserom_jp.gba", 0x5a886c, 0x14 + + .globl gUnknown_85A8880 +gUnknown_85A8880: @ 0x85A8880 + .incbin "baserom_jp.gba", 0x5a8880, 0x46 + + .globl gUnknown_85A88C6 +gUnknown_85A88C6: @ 0x85A88C6 + .incbin "baserom_jp.gba", 0x5a88c6, 0xe + + .globl gUnknown_85A88D4 +gUnknown_85A88D4: @ 0x85A88D4 + .incbin "baserom_jp.gba", 0x5a88d4, 0x44 + + .globl gUnknown_85A8918 +gUnknown_85A8918: @ 0x85A8918 + .incbin "baserom_jp.gba", 0x5a8918, 0x6c + + .globl gUnknown_85A8984 +gUnknown_85A8984: @ 0x85A8984 + .incbin "baserom_jp.gba", 0x5a8984, 0x108 + + .globl gUnknown_85A8A8C +gUnknown_85A8A8C: @ 0x85A8A8C + .incbin "baserom_jp.gba", 0x5a8a8c, 0x14 + + .globl gUnknown_85A8AA0 +gUnknown_85A8AA0: @ 0x85A8AA0 + .incbin "baserom_jp.gba", 0x5a8aa0, 0x30 + + .globl gUnknown_85A8AD0 +gUnknown_85A8AD0: @ 0x85A8AD0 + .incbin "baserom_jp.gba", 0x5a8ad0, 0x4b0 + + .globl gUnknown_85A8F80 +gUnknown_85A8F80: @ 0x85A8F80 + .incbin "baserom_jp.gba", 0x5a8f80, 0x500 + + .globl gUnknown_85A9480 +gUnknown_85A9480: @ 0x85A9480 + .incbin "baserom_jp.gba", 0x5a9480, 0x18 + + .globl gUnknown_85A9498 +gUnknown_85A9498: @ 0x85A9498 + .incbin "baserom_jp.gba", 0x5a9498, 0x10 + + .globl gUnknown_85A94A8 +gUnknown_85A94A8: @ 0x85A94A8 + .incbin "baserom_jp.gba", 0x5a94a8, 0x10 + + .globl gUnknown_85A94B8 +gUnknown_85A94B8: @ 0x85A94B8 + .incbin "baserom_jp.gba", 0x5a94b8, 0x14 + + .globl gUnknown_85A94CC +gUnknown_85A94CC: @ 0x85A94CC + .incbin "baserom_jp.gba", 0x5a94cc, 0x14 + + .globl gUnknown_85A94E0 +gUnknown_85A94E0: @ 0x85A94E0 + .incbin "baserom_jp.gba", 0x5a94e0, 0x23 + + .globl gUnknown_85A9503 +gUnknown_85A9503: @ 0x85A9503 + .incbin "baserom_jp.gba", 0x5a9503, 0x41 + + .globl gUnknown_85A9544 +gUnknown_85A9544: @ 0x85A9544 + .incbin "baserom_jp.gba", 0x5a9544, 0x7d1 + + .globl gUnknown_85A9D15 +gUnknown_85A9D15: @ 0x85A9D15 + .incbin "baserom_jp.gba", 0x5a9d15, 0x24 + + .globl gUnknown_85A9D39 +gUnknown_85A9D39: @ 0x85A9D39 + .incbin "baserom_jp.gba", 0x5a9d39, 0xaa6 + + .globl gUnknown_85AA7DF +gUnknown_85AA7DF: @ 0x85AA7DF + .incbin "baserom_jp.gba", 0x5aa7df, 0x98 + + .globl gUnknown_85AA877 +gUnknown_85AA877: @ 0x85AA877 + .incbin "baserom_jp.gba", 0x5aa877, 0x1d + + .globl gUnknown_85AA894 +gUnknown_85AA894: @ 0x85AA894 + .incbin "baserom_jp.gba", 0x5aa894, 0xdc + + .globl gUnknown_85AA970 +gUnknown_85AA970: @ 0x85AA970 + .incbin "baserom_jp.gba", 0x5aa970, 0x56 + + .globl gUnknown_85AA9C6 +gUnknown_85AA9C6: @ 0x85AA9C6 + .incbin "baserom_jp.gba", 0x5aa9c6, 0x10 + + .globl gUnknown_85AA9D6 +gUnknown_85AA9D6: @ 0x85AA9D6 + .incbin "baserom_jp.gba", 0x5aa9d6, 0x14 + + .globl gUnknown_85AA9EA +gUnknown_85AA9EA: @ 0x85AA9EA + .incbin "baserom_jp.gba", 0x5aa9ea, 0x10 + + .globl gUnknown_85AA9FA +gUnknown_85AA9FA: @ 0x85AA9FA + .incbin "baserom_jp.gba", 0x5aa9fa, 0x14 + + .globl gUnknown_85AAA0E +gUnknown_85AAA0E: @ 0x85AAA0E + .incbin "baserom_jp.gba", 0x5aaa0e, 0x12 + + .globl gUnknown_85AAA20 +gUnknown_85AAA20: @ 0x85AAA20 + .incbin "baserom_jp.gba", 0x5aaa20, 0x16 + + .globl gUnknown_85AAA36 +gUnknown_85AAA36: @ 0x85AAA36 + .incbin "baserom_jp.gba", 0x5aaa36, 0xf + + .globl gUnknown_85AAA45 +gUnknown_85AAA45: @ 0x85AAA45 + .incbin "baserom_jp.gba", 0x5aaa45, 0x2dd + + .globl gUnknown_85AAD22 +gUnknown_85AAD22: @ 0x85AAD22 + .incbin "baserom_jp.gba", 0x5aad22, 0xea + + .globl gUnknown_85AAE0C +gUnknown_85AAE0C: @ 0x85AAE0C + .incbin "baserom_jp.gba", 0x5aae0c, 0x16 + + .globl gUnknown_85AAE22 +gUnknown_85AAE22: @ 0x85AAE22 + .incbin "baserom_jp.gba", 0x5aae22, 0x14 + + .globl gUnknown_85AAE36 +gUnknown_85AAE36: @ 0x85AAE36 + .incbin "baserom_jp.gba", 0x5aae36, 0x18 + + .globl gUnknown_85AAE4E +gUnknown_85AAE4E: @ 0x85AAE4E + .incbin "baserom_jp.gba", 0x5aae4e, 0x1a + + .globl gUnknown_85AAE68 +gUnknown_85AAE68: @ 0x85AAE68 + .incbin "baserom_jp.gba", 0x5aae68, 0x17 + + .globl gUnknown_85AAE7F +gUnknown_85AAE7F: @ 0x85AAE7F + .incbin "baserom_jp.gba", 0x5aae7f, 0x12 + + .globl gUnknown_85AAE91 +gUnknown_85AAE91: @ 0x85AAE91 + .incbin "baserom_jp.gba", 0x5aae91, 0x16 + + .globl gUnknown_85AAEA7 +gUnknown_85AAEA7: @ 0x85AAEA7 + .incbin "baserom_jp.gba", 0x5aaea7, 0x13 + + .globl gUnknown_85AAEBA +gUnknown_85AAEBA: @ 0x85AAEBA + .incbin "baserom_jp.gba", 0x5aaeba, 0x17 + + .globl gUnknown_85AAED1 +gUnknown_85AAED1: @ 0x85AAED1 + .incbin "baserom_jp.gba", 0x5aaed1, 0x13 + + .globl gUnknown_85AAEE4 +gUnknown_85AAEE4: @ 0x85AAEE4 + .incbin "baserom_jp.gba", 0x5aaee4, 0xf + + .globl gUnknown_85AAEF3 +gUnknown_85AAEF3: @ 0x85AAEF3 + .incbin "baserom_jp.gba", 0x5aaef3, 0x13 + + .globl gUnknown_85AAF06 +gUnknown_85AAF06: @ 0x85AAF06 + .incbin "baserom_jp.gba", 0x5aaf06, 0x1e + + .globl gUnknown_85AAF24 +gUnknown_85AAF24: @ 0x85AAF24 + .incbin "baserom_jp.gba", 0x5aaf24, 0xf + + .globl gUnknown_85AAF33 +gUnknown_85AAF33: @ 0x85AAF33 + .incbin "baserom_jp.gba", 0x5aaf33, 0xf + + .globl gUnknown_85AAF42 +gUnknown_85AAF42: @ 0x85AAF42 + .incbin "baserom_jp.gba", 0x5aaf42, 0x9 + + .globl gUnknown_85AAF4B +gUnknown_85AAF4B: @ 0x85AAF4B + .incbin "baserom_jp.gba", 0x5aaf4b, 0xd + + .globl gUnknown_85AAF58 +gUnknown_85AAF58: @ 0x85AAF58 + .incbin "baserom_jp.gba", 0x5aaf58, 0x9 + + .globl gUnknown_85AAF61 +gUnknown_85AAF61: @ 0x85AAF61 + .incbin "baserom_jp.gba", 0x5aaf61, 0xb + + .globl gUnknown_85AAF6C +gUnknown_85AAF6C: @ 0x85AAF6C + .incbin "baserom_jp.gba", 0x5aaf6c, 0xa + + .globl gUnknown_85AAF76 +gUnknown_85AAF76: @ 0x85AAF76 + .incbin "baserom_jp.gba", 0x5aaf76, 0x18 + + .globl gUnknown_85AAF8E +gUnknown_85AAF8E: @ 0x85AAF8E + .incbin "baserom_jp.gba", 0x5aaf8e, 0x18 + + .globl gUnknown_85AAFA6 +gUnknown_85AAFA6: @ 0x85AAFA6 + .incbin "baserom_jp.gba", 0x5aafa6, 0xe + + .globl gUnknown_85AAFB4 +gUnknown_85AAFB4: @ 0x85AAFB4 + .incbin "baserom_jp.gba", 0x5aafb4, 0x8 + + .globl gUnknown_85AAFBC +gUnknown_85AAFBC: @ 0x85AAFBC + .incbin "baserom_jp.gba", 0x5aafbc, 0xd + + .globl gUnknown_85AAFC9 +gUnknown_85AAFC9: @ 0x85AAFC9 + .incbin "baserom_jp.gba", 0x5aafc9, 0xf + + .globl gUnknown_85AAFD8 +gUnknown_85AAFD8: @ 0x85AAFD8 + .incbin "baserom_jp.gba", 0x5aafd8, 0x13 + + .globl gUnknown_85AAFEB +gUnknown_85AAFEB: @ 0x85AAFEB + .incbin "baserom_jp.gba", 0x5aafeb, 0xf + + .globl gUnknown_85AAFFA +gUnknown_85AAFFA: @ 0x85AAFFA + .incbin "baserom_jp.gba", 0x5aaffa, 0xf + + .globl gUnknown_85AB009 +gUnknown_85AB009: @ 0x85AB009 + .incbin "baserom_jp.gba", 0x5ab009, 0x6 + + .globl gUnknown_85AB00F +gUnknown_85AB00F: @ 0x85AB00F + .incbin "baserom_jp.gba", 0x5ab00f, 0x7 + + .globl gUnknown_85AB016 +gUnknown_85AB016: @ 0x85AB016 + .incbin "baserom_jp.gba", 0x5ab016, 0x5 + + .globl gUnknown_85AB01B +gUnknown_85AB01B: @ 0x85AB01B + .incbin "baserom_jp.gba", 0x5ab01b, 0x5 + + .globl gUnknown_85AB020 +gUnknown_85AB020: @ 0x85AB020 + .incbin "baserom_jp.gba", 0x5ab020, 0x5 + + .globl gUnknown_85AB025 +gUnknown_85AB025: @ 0x85AB025 + .incbin "baserom_jp.gba", 0x5ab025, 0x5 + + .globl gUnknown_85AB02A +gUnknown_85AB02A: @ 0x85AB02A + .incbin "baserom_jp.gba", 0x5ab02a, 0x5 + + .globl gUnknown_85AB02F +gUnknown_85AB02F: @ 0x85AB02F + .incbin "baserom_jp.gba", 0x5ab02f, 0x5 + + .globl gUnknown_85AB034 +gUnknown_85AB034: @ 0x85AB034 + .incbin "baserom_jp.gba", 0x5ab034, 0x8 + + .globl gUnknown_85AB03C +gUnknown_85AB03C: @ 0x85AB03C + .incbin "baserom_jp.gba", 0x5ab03c, 0x8 + + .globl gUnknown_85AB044 +gUnknown_85AB044: @ 0x85AB044 + .incbin "baserom_jp.gba", 0x5ab044, 0x4 + + .globl gUnknown_85AB048 +gUnknown_85AB048: @ 0x85AB048 + .incbin "baserom_jp.gba", 0x5ab048, 0x6 + + .globl gUnknown_85AB04E +gUnknown_85AB04E: @ 0x85AB04E + .incbin "baserom_jp.gba", 0x5ab04e, 0x7 + + .globl gUnknown_85AB055 +gUnknown_85AB055: @ 0x85AB055 + .incbin "baserom_jp.gba", 0x5ab055, 0x37 + + .globl gUnknown_85AB08C +gUnknown_85AB08C: @ 0x85AB08C + .incbin "baserom_jp.gba", 0x5ab08c, 0x44 + + .globl gUnknown_85AB0D0 +gUnknown_85AB0D0: @ 0x85AB0D0 + .incbin "baserom_jp.gba", 0x5ab0d0, 0x155 + + .globl gUnknown_85AB225 +gUnknown_85AB225: @ 0x85AB225 + .incbin "baserom_jp.gba", 0x5ab225, 0x5 + + .globl gUnknown_85AB22A +gUnknown_85AB22A: @ 0x85AB22A + .incbin "baserom_jp.gba", 0x5ab22a, 0x5e + + .globl gUnknown_85AB288 +gUnknown_85AB288: @ 0x85AB288 + .incbin "baserom_jp.gba", 0x5ab288, 0x5 + + .globl gUnknown_85AB28D +gUnknown_85AB28D: @ 0x85AB28D + .incbin "baserom_jp.gba", 0x5ab28d, 0x130 + + .globl gUnknown_85AB3BD +gUnknown_85AB3BD: @ 0x85AB3BD + .incbin "baserom_jp.gba", 0x5ab3bd, 0x1f + + .globl gUnknown_85AB3DC +gUnknown_85AB3DC: @ 0x85AB3DC + .incbin "baserom_jp.gba", 0x5ab3dc, 0x5c4 + + .globl gUnknown_85AB9A0 +gUnknown_85AB9A0: @ 0x85AB9A0 + .incbin "baserom_jp.gba", 0x5ab9a0, 0x14e + + .globl gUnknown_85ABAEE +gUnknown_85ABAEE: @ 0x85ABAEE + .incbin "baserom_jp.gba", 0x5abaee, 0xe + + .globl gUnknown_85ABAFC +gUnknown_85ABAFC: @ 0x85ABAFC + .incbin "baserom_jp.gba", 0x5abafc, 0x13 + + .globl gUnknown_85ABB0F +gUnknown_85ABB0F: @ 0x85ABB0F + .incbin "baserom_jp.gba", 0x5abb0f, 0x19 + + .globl gUnknown_85ABB28 +gUnknown_85ABB28: @ 0x85ABB28 + .incbin "baserom_jp.gba", 0x5abb28, 0x16 + + .globl gUnknown_85ABB3E +gUnknown_85ABB3E: @ 0x85ABB3E + .incbin "baserom_jp.gba", 0x5abb3e, 0x5 + + .globl gUnknown_85ABB43 +gUnknown_85ABB43: @ 0x85ABB43 + .incbin "baserom_jp.gba", 0x5abb43, 0xa + + .globl gUnknown_85ABB4D +gUnknown_85ABB4D: @ 0x85ABB4D + .incbin "baserom_jp.gba", 0x5abb4d, 0xa + + .globl gUnknown_85ABB57 +gUnknown_85ABB57: @ 0x85ABB57 + .incbin "baserom_jp.gba", 0x5abb57, 0xb + + .globl gUnknown_85ABB62 +gUnknown_85ABB62: @ 0x85ABB62 + .incbin "baserom_jp.gba", 0x5abb62, 0x10 + + .globl gUnknown_85ABB72 +gUnknown_85ABB72: @ 0x85ABB72 + .incbin "baserom_jp.gba", 0x5abb72, 0x14 + + .globl gUnknown_85ABB86 +gUnknown_85ABB86: @ 0x85ABB86 + .incbin "baserom_jp.gba", 0x5abb86, 0x15 + + .globl gUnknown_85ABB9B +gUnknown_85ABB9B: @ 0x85ABB9B + .incbin "baserom_jp.gba", 0x5abb9b, 0x6 + + .globl gUnknown_85ABBA1 +gUnknown_85ABBA1: @ 0x85ABBA1 + .incbin "baserom_jp.gba", 0x5abba1, 0x28 + + .globl gUnknown_85ABBC9 +gUnknown_85ABBC9: @ 0x85ABBC9 + .incbin "baserom_jp.gba", 0x5abbc9, 0xf + + .globl gUnknown_85ABBD8 +gUnknown_85ABBD8: @ 0x85ABBD8 + .incbin "baserom_jp.gba", 0x5abbd8, 0x60 + + .globl gUnknown_85ABC38 +gUnknown_85ABC38: @ 0x85ABC38 + .incbin "baserom_jp.gba", 0x5abc38, 0xb + + .globl gUnknown_85ABC43 +gUnknown_85ABC43: @ 0x85ABC43 + .incbin "baserom_jp.gba", 0x5abc43, 0x8 + + .globl gUnknown_85ABC4B +gUnknown_85ABC4B: @ 0x85ABC4B + .incbin "baserom_jp.gba", 0x5abc4b, 0x5 + + .globl gUnknown_85ABC50 +gUnknown_85ABC50: @ 0x85ABC50 + .incbin "baserom_jp.gba", 0x5abc50, 0x4 + + .globl gUnknown_85ABC54 +gUnknown_85ABC54: @ 0x85ABC54 + .incbin "baserom_jp.gba", 0x5abc54, 0x3 + + .globl gUnknown_85ABC57 +gUnknown_85ABC57: @ 0x85ABC57 + .incbin "baserom_jp.gba", 0x5abc57, 0x4 + + .globl gUnknown_85ABC5B +gUnknown_85ABC5B: @ 0x85ABC5B + .incbin "baserom_jp.gba", 0x5abc5b, 0x3 + + .globl gUnknown_85ABC5E +gUnknown_85ABC5E: @ 0x85ABC5E + .incbin "baserom_jp.gba", 0x5abc5e, 0x4 + + .globl gUnknown_85ABC62 +gUnknown_85ABC62: @ 0x85ABC62 + .incbin "baserom_jp.gba", 0x5abc62, 0x5 + + .globl gUnknown_85ABC67 +gUnknown_85ABC67: @ 0x85ABC67 + .incbin "baserom_jp.gba", 0x5abc67, 0x5 + + .globl gUnknown_85ABC6C +gUnknown_85ABC6C: @ 0x85ABC6C + .incbin "baserom_jp.gba", 0x5abc6c, 0x2 + + .globl gUnknown_85ABC6E +gUnknown_85ABC6E: @ 0x85ABC6E + .incbin "baserom_jp.gba", 0x5abc6e, 0x2 + + .globl gUnknown_85ABC70 +gUnknown_85ABC70: @ 0x85ABC70 + .incbin "baserom_jp.gba", 0x5abc70, 0x2 + + .globl gUnknown_85ABC72 +gUnknown_85ABC72: @ 0x85ABC72 + .incbin "baserom_jp.gba", 0x5abc72, 0x3 + + .globl gUnknown_85ABC75 +gUnknown_85ABC75: @ 0x85ABC75 + .incbin "baserom_jp.gba", 0x5abc75, 0x3 + + .globl gUnknown_85ABC78 +gUnknown_85ABC78: @ 0x85ABC78 + .incbin "baserom_jp.gba", 0x5abc78, 0x6 + + .globl gUnknown_85ABC7E +gUnknown_85ABC7E: @ 0x85ABC7E + .incbin "baserom_jp.gba", 0x5abc7e, 0x4 + + .globl gUnknown_85ABC82 +gUnknown_85ABC82: @ 0x85ABC82 + .incbin "baserom_jp.gba", 0x5abc82, 0x6 + + .globl gUnknown_85ABC88 +gUnknown_85ABC88: @ 0x85ABC88 + .incbin "baserom_jp.gba", 0x5abc88, 0x6 + + .globl gUnknown_85ABC8E +gUnknown_85ABC8E: @ 0x85ABC8E + .incbin "baserom_jp.gba", 0x5abc8e, 0x8 + + .globl gUnknown_85ABC96 +gUnknown_85ABC96: @ 0x85ABC96 + .incbin "baserom_jp.gba", 0x5abc96, 0x2 + + .globl gUnknown_85ABC98 +gUnknown_85ABC98: @ 0x85ABC98 + .incbin "baserom_jp.gba", 0x5abc98, 0x2 + + .globl gUnknown_85ABC9A +gUnknown_85ABC9A: @ 0x85ABC9A + .incbin "baserom_jp.gba", 0x5abc9a, 0x7e + + .globl gUnknown_85ABD18 +gUnknown_85ABD18: @ 0x85ABD18 + .incbin "baserom_jp.gba", 0x5abd18, 0x24 + + .globl gUnknown_85ABD3C +gUnknown_85ABD3C: @ 0x85ABD3C + .incbin "baserom_jp.gba", 0x5abd3c, 0x5e + + .globl gUnknown_85ABD9A +gUnknown_85ABD9A: @ 0x85ABD9A + .incbin "baserom_jp.gba", 0x5abd9a, 0x3 + + .globl gUnknown_85ABD9D +gUnknown_85ABD9D: @ 0x85ABD9D + .incbin "baserom_jp.gba", 0x5abd9d, 0x3 + + .globl gUnknown_85ABDA0 +gUnknown_85ABDA0: @ 0x85ABDA0 + .incbin "baserom_jp.gba", 0x5abda0, 0x3 + + .globl gUnknown_85ABDA3 +gUnknown_85ABDA3: @ 0x85ABDA3 + .incbin "baserom_jp.gba", 0x5abda3, 0x4 + + .globl gUnknown_85ABDA7 +gUnknown_85ABDA7: @ 0x85ABDA7 + .incbin "baserom_jp.gba", 0x5abda7, 0x3 + + .globl gUnknown_85ABDAA +gUnknown_85ABDAA: @ 0x85ABDAA + .incbin "baserom_jp.gba", 0x5abdaa, 0x4 + + .globl gUnknown_85ABDAE +gUnknown_85ABDAE: @ 0x85ABDAE + .incbin "baserom_jp.gba", 0x5abdae, 0xd + + .globl gUnknown_85ABDBB +gUnknown_85ABDBB: @ 0x85ABDBB + .incbin "baserom_jp.gba", 0x5abdbb, 0x26 + + .globl gUnknown_85ABDE1 +gUnknown_85ABDE1: @ 0x85ABDE1 + .incbin "baserom_jp.gba", 0x5abde1, 0x13 + + .globl gUnknown_85ABDF4 +gUnknown_85ABDF4: @ 0x85ABDF4 + .incbin "baserom_jp.gba", 0x5abdf4, 0x1f + + .globl gUnknown_85ABE13 +gUnknown_85ABE13: @ 0x85ABE13 + .incbin "baserom_jp.gba", 0x5abe13, 0x1c + + .globl gUnknown_85ABE2F +gUnknown_85ABE2F: @ 0x85ABE2F + .incbin "baserom_jp.gba", 0x5abe2f, 0x21d + + .globl gUnknown_85AC04C +gUnknown_85AC04C: @ 0x85AC04C + .incbin "baserom_jp.gba", 0x5ac04c, 0x65 + + .globl gUnknown_85AC0B1 +gUnknown_85AC0B1: @ 0x85AC0B1 + .incbin "baserom_jp.gba", 0x5ac0b1, 0x15 + + .globl gUnknown_85AC0C6 +gUnknown_85AC0C6: @ 0x85AC0C6 + .incbin "baserom_jp.gba", 0x5ac0c6, 0x17 + + .globl gUnknown_85AC0DD +gUnknown_85AC0DD: @ 0x85AC0DD + .incbin "baserom_jp.gba", 0x5ac0dd, 0x1e + + .globl gUnknown_85AC0FB +gUnknown_85AC0FB: @ 0x85AC0FB + .incbin "baserom_jp.gba", 0x5ac0fb, 0x1d + + .globl gUnknown_85AC118 +gUnknown_85AC118: @ 0x85AC118 + .incbin "baserom_jp.gba", 0x5ac118, 0x15 + + .globl gUnknown_85AC12D +gUnknown_85AC12D: @ 0x85AC12D + .incbin "baserom_jp.gba", 0x5ac12d, 0x19 + + .globl gUnknown_85AC146 +gUnknown_85AC146: @ 0x85AC146 + .incbin "baserom_jp.gba", 0x5ac146, 0x322 + + .globl gUnknown_85AC468 +gUnknown_85AC468: @ 0x85AC468 + .incbin "baserom_jp.gba", 0x5ac468, 0x8 + + .globl gUnknown_85AC470 +gUnknown_85AC470: @ 0x85AC470 + .incbin "baserom_jp.gba", 0x5ac470, 0x4 + + .globl gUnknown_85AC474 +gUnknown_85AC474: @ 0x85AC474 + .incbin "baserom_jp.gba", 0x5ac474, 0x10 + + .globl gUnknown_85AC484 +gUnknown_85AC484: @ 0x85AC484 + .incbin "baserom_jp.gba", 0x5ac484, 0x158 + + .globl gUnknown_85AC5DC +gUnknown_85AC5DC: @ 0x85AC5DC + .incbin "baserom_jp.gba", 0x5ac5dc, 0x184 + + .globl gUnknown_85AC760 +gUnknown_85AC760: @ 0x85AC760 + .incbin "baserom_jp.gba", 0x5ac760, 0x1c4 + + .globl gUnknown_85AC924 +gUnknown_85AC924: @ 0x85AC924 + .incbin "baserom_jp.gba", 0x5ac924, 0x14 + + .globl gUnknown_85AC938 +gUnknown_85AC938: @ 0x85AC938 + .incbin "baserom_jp.gba", 0x5ac938, 0x24 + + .globl gUnknown_85AC95C +gUnknown_85AC95C: @ 0x85AC95C + .incbin "baserom_jp.gba", 0x5ac95c, 0x20 + + .globl gUnknown_85AC97C +gUnknown_85AC97C: @ 0x85AC97C + .incbin "baserom_jp.gba", 0x5ac97c, 0x28 + + .globl gUnknown_85AC9A4 +gUnknown_85AC9A4: @ 0x85AC9A4 + .incbin "baserom_jp.gba", 0x5ac9a4, 0x30 + + .globl gUnknown_85AC9D4 +gUnknown_85AC9D4: @ 0x85AC9D4 + .incbin "baserom_jp.gba", 0x5ac9d4, 0x18 + + .globl gUnknown_85AC9EC +gUnknown_85AC9EC: @ 0x85AC9EC + .incbin "baserom_jp.gba", 0x5ac9ec, 0x2 + + .globl gUnknown_85AC9EE +gUnknown_85AC9EE: @ 0x85AC9EE + .incbin "baserom_jp.gba", 0x5ac9ee, 0x4 + + .globl gUnknown_85AC9F2 +gUnknown_85AC9F2: @ 0x85AC9F2 + .incbin "baserom_jp.gba", 0x5ac9f2, 0x8 + + .globl gUnknown_85AC9FA +gUnknown_85AC9FA: @ 0x85AC9FA + .incbin "baserom_jp.gba", 0x5ac9fa, 0x6 + + .globl gUnknown_85ACA00 +gUnknown_85ACA00: @ 0x85ACA00 + .incbin "baserom_jp.gba", 0x5aca00, 0x8 + + .globl gUnknown_85ACA08 +gUnknown_85ACA08: @ 0x85ACA08 + .incbin "baserom_jp.gba", 0x5aca08, 0x38 + + .globl gUnknown_85ACA40 +gUnknown_85ACA40: @ 0x85ACA40 + .incbin "baserom_jp.gba", 0x5aca40, 0x6 + + .globl gUnknown_85ACA46 +gUnknown_85ACA46: @ 0x85ACA46 + .incbin "baserom_jp.gba", 0x5aca46, 0x4 + + .globl gUnknown_85ACA4A +gUnknown_85ACA4A: @ 0x85ACA4A + .incbin "baserom_jp.gba", 0x5aca4a, 0xa + + .globl gUnknown_85ACA54 +gUnknown_85ACA54: @ 0x85ACA54 + .incbin "baserom_jp.gba", 0x5aca54, 0x8 + + .globl gUnknown_85ACA5C +gUnknown_85ACA5C: @ 0x85ACA5C + .incbin "baserom_jp.gba", 0x5aca5c, 0xc + + .globl gUnknown_85ACA68 +gUnknown_85ACA68: @ 0x85ACA68 + .incbin "baserom_jp.gba", 0x5aca68, 0xa + + .globl gUnknown_85ACA72 +gUnknown_85ACA72: @ 0x85ACA72 + .incbin "baserom_jp.gba", 0x5aca72, 0x96 + + .globl gUnknown_85ACB08 +gUnknown_85ACB08: @ 0x85ACB08 + .incbin "baserom_jp.gba", 0x5acb08, 0x220 + + .globl gUnknown_85ACD28 +gUnknown_85ACD28: @ 0x85ACD28 + .incbin "baserom_jp.gba", 0x5acd28, 0x380 + + .globl gUnknown_85AD0A8 +gUnknown_85AD0A8: @ 0x85AD0A8 + .incbin "baserom_jp.gba", 0x5ad0a8, 0xb0 + + .globl gUnknown_85AD158 +gUnknown_85AD158: @ 0x85AD158 + .incbin "baserom_jp.gba", 0x5ad158, 0x38 + + .globl gUnknown_85AD190 +gUnknown_85AD190: @ 0x85AD190 + .incbin "baserom_jp.gba", 0x5ad190, 0x18 + + .globl gUnknown_85AD1A8 +gUnknown_85AD1A8: @ 0x85AD1A8 + .incbin "baserom_jp.gba", 0x5ad1a8, 0x18 + + .globl gUnknown_85AD1C0 +gUnknown_85AD1C0: @ 0x85AD1C0 + .incbin "baserom_jp.gba", 0x5ad1c0, 0x28 + + .globl gUnknown_85AD1E8 +gUnknown_85AD1E8: @ 0x85AD1E8 + .incbin "baserom_jp.gba", 0x5ad1e8, 0x50 + + .globl gUnknown_85AD238 +gUnknown_85AD238: @ 0x85AD238 + .incbin "baserom_jp.gba", 0x5ad238, 0x30 + + .globl gUnknown_85AD268 +gUnknown_85AD268: @ 0x85AD268 + .incbin "baserom_jp.gba", 0x5ad268, 0x2c + + .globl gUnknown_85AD294 +gUnknown_85AD294: @ 0x85AD294 + .incbin "baserom_jp.gba", 0x5ad294, 0x18 + + .globl gUnknown_85AD2AC +gUnknown_85AD2AC: @ 0x85AD2AC + .incbin "baserom_jp.gba", 0x5ad2ac, 0x4 + + .globl gUnknown_85AD2B0 +gUnknown_85AD2B0: @ 0x85AD2B0 + .incbin "baserom_jp.gba", 0x5ad2b0, 0x8 + + .globl gUnknown_85AD2B8 +gUnknown_85AD2B8: @ 0x85AD2B8 + .incbin "baserom_jp.gba", 0x5ad2b8, 0x140 + + .globl gUnknown_85AD3F8 +gUnknown_85AD3F8: @ 0x85AD3F8 + .incbin "baserom_jp.gba", 0x5ad3f8, 0x15c + + .globl gUnknown_85AD554 +gUnknown_85AD554: @ 0x85AD554 + .incbin "baserom_jp.gba", 0x5ad554, 0x20 + + .globl gUnknown_85AD574 +gUnknown_85AD574: @ 0x85AD574 + .incbin "baserom_jp.gba", 0x5ad574, 0x18 + + .globl gUnknown_85AD58C +gUnknown_85AD58C: @ 0x85AD58C + .incbin "baserom_jp.gba", 0x5ad58c, 0x68 + + .globl gUnknown_85AD5F4 +gUnknown_85AD5F4: @ 0x85AD5F4 + .incbin "baserom_jp.gba", 0x5ad5f4, 0x60 + + .globl gUnknown_85AD654 +gUnknown_85AD654: @ 0x85AD654 + .incbin "baserom_jp.gba", 0x5ad654, 0x30 + + .globl gUnknown_85AD684 +gUnknown_85AD684: @ 0x85AD684 + .incbin "baserom_jp.gba", 0x5ad684, 0x14c + + .globl gUnknown_85AD7D0 +gUnknown_85AD7D0: @ 0x85AD7D0 + .incbin "baserom_jp.gba", 0x5ad7d0, 0x1d0 + + .globl gUnknown_85AD9A0 +gUnknown_85AD9A0: @ 0x85AD9A0 + .incbin "baserom_jp.gba", 0x5ad9a0, 0x12 + + .globl gUnknown_85AD9B2 +gUnknown_85AD9B2: @ 0x85AD9B2 + .incbin "baserom_jp.gba", 0x5ad9b2, 0xe + + .globl gUnknown_85AD9C0 +gUnknown_85AD9C0: @ 0x85AD9C0 + .incbin "baserom_jp.gba", 0x5ad9c0, 0x14 + + .globl gUnknown_85AD9D4 +gUnknown_85AD9D4: @ 0x85AD9D4 + .incbin "baserom_jp.gba", 0x5ad9d4, 0x53 + + .globl gUnknown_85ADA27 +gUnknown_85ADA27: @ 0x85ADA27 + .incbin "baserom_jp.gba", 0x5ada27, 0x1b + + .globl gUnknown_85ADA42 +gUnknown_85ADA42: @ 0x85ADA42 + .incbin "baserom_jp.gba", 0x5ada42, 0x25 + + .globl gUnknown_85ADA67 +gUnknown_85ADA67: @ 0x85ADA67 + .incbin "baserom_jp.gba", 0x5ada67, 0x48 + + .globl gUnknown_85ADAAF +gUnknown_85ADAAF: @ 0x85ADAAF + .incbin "baserom_jp.gba", 0x5adaaf, 0x1a + + .globl gUnknown_85ADAC9 +gUnknown_85ADAC9: @ 0x85ADAC9 + .incbin "baserom_jp.gba", 0x5adac9, 0x2b + + .globl gUnknown_85ADAF4 +gUnknown_85ADAF4: @ 0x85ADAF4 + .incbin "baserom_jp.gba", 0x5adaf4, 0x8 + + .globl gUnknown_85ADAFC +gUnknown_85ADAFC: @ 0x85ADAFC + .incbin "baserom_jp.gba", 0x5adafc, 0x8 + + .globl gUnknown_85ADB04 +gUnknown_85ADB04: @ 0x85ADB04 + .incbin "baserom_jp.gba", 0x5adb04, 0x10 + + .globl gUnknown_85ADB14 +gUnknown_85ADB14: @ 0x85ADB14 + .incbin "baserom_jp.gba", 0x5adb14, 0x40 + + .globl gUnknown_85ADB54 +gUnknown_85ADB54: @ 0x85ADB54 + .incbin "baserom_jp.gba", 0x5adb54, 0x18 + + .globl gUnknown_85ADB6C +gUnknown_85ADB6C: @ 0x85ADB6C + .incbin "baserom_jp.gba", 0x5adb6c, 0x8 + + .globl gUnknown_85ADB74 +gUnknown_85ADB74: @ 0x85ADB74 + .incbin "baserom_jp.gba", 0x5adb74, 0x80 + + .globl gUnknown_85ADBF4 +gUnknown_85ADBF4: @ 0x85ADBF4 + .incbin "baserom_jp.gba", 0x5adbf4, 0x6e1c + + .globl gUnknown_85B4A10 +gUnknown_85B4A10: @ 0x85B4A10 + .incbin "baserom_jp.gba", 0x5b4a10, 0x3cf0 + + .globl gUnknown_85B8700 +gUnknown_85B8700: @ 0x85B8700 + .incbin "baserom_jp.gba", 0x5b8700, 0x3720 + + .globl gUnknown_85BBE20 +gUnknown_85BBE20: @ 0x85BBE20 + .incbin "baserom_jp.gba", 0x5bbe20, 0x1e + + .globl gUnknown_85BBE3E +gUnknown_85BBE3E: @ 0x85BBE3E + .incbin "baserom_jp.gba", 0x5bbe3e, 0x14 + + .globl gUnknown_85BBE52 +gUnknown_85BBE52: @ 0x85BBE52 + .incbin "baserom_jp.gba", 0x5bbe52, 0x1e + + .globl gUnknown_85BBE70 +gUnknown_85BBE70: @ 0x85BBE70 + .incbin "baserom_jp.gba", 0x5bbe70, 0x14 + + .globl gUnknown_85BBE84 +gUnknown_85BBE84: @ 0x85BBE84 + .incbin "baserom_jp.gba", 0x5bbe84, 0x5c0 + + .globl gUnknown_85BC444 +gUnknown_85BC444: @ 0x85BC444 + .incbin "baserom_jp.gba", 0x5bc444, 0x190 + + .globl gUnknown_85BC5D4 +gUnknown_85BC5D4: @ 0x85BC5D4 + .incbin "baserom_jp.gba", 0x5bc5d4, 0x40 + + .globl gUnknown_85BC614 +gUnknown_85BC614: @ 0x85BC614 + .incbin "baserom_jp.gba", 0x5bc614, 0x5 + + .globl gUnknown_85BC619 +gUnknown_85BC619: @ 0x85BC619 + .incbin "baserom_jp.gba", 0x5bc619, 0x7 + + .globl gUnknown_85BC620 +gUnknown_85BC620: @ 0x85BC620 + .incbin "baserom_jp.gba", 0x5bc620, 0x338 + + .globl gUnknown_85BC958 +gUnknown_85BC958: @ 0x85BC958 + .incbin "baserom_jp.gba", 0x5bc958, 0x618 + + .globl gUnknown_85BCF70 +gUnknown_85BCF70: @ 0x85BCF70 + .incbin "baserom_jp.gba", 0x5bcf70, 0x5e4 + + .globl gUnknown_85BD554 +gUnknown_85BD554: @ 0x85BD554 + .incbin "baserom_jp.gba", 0x5bd554, 0x618 + + .globl gUnknown_85BDB6C +gUnknown_85BDB6C: @ 0x85BDB6C + .incbin "baserom_jp.gba", 0x5bdb6c, 0x45c + + .globl gUnknown_85BDFC8 +gUnknown_85BDFC8: @ 0x85BDFC8 + .incbin "baserom_jp.gba", 0x5bdfc8, 0x618 + + .globl gUnknown_85BE5E0 +gUnknown_85BE5E0: @ 0x85BE5E0 + .incbin "baserom_jp.gba", 0x5be5e0, 0x2d0 + + .globl gUnknown_85BE8B0 +gUnknown_85BE8B0: @ 0x85BE8B0 + .incbin "baserom_jp.gba", 0x5be8b0, 0x40 + + .globl gUnknown_85BE8F0 +gUnknown_85BE8F0: @ 0x85BE8F0 + .incbin "baserom_jp.gba", 0x5be8f0, 0x20 + + .globl gUnknown_85BE910 +gUnknown_85BE910: @ 0x85BE910 + .incbin "baserom_jp.gba", 0x5be910, 0x20 + + .globl gUnknown_85BE930 +gUnknown_85BE930: @ 0x85BE930 + .incbin "baserom_jp.gba", 0x5be930, 0xa + + .globl gUnknown_85BE93A +gUnknown_85BE93A: @ 0x85BE93A + .incbin "baserom_jp.gba", 0x5be93a, 0x4 + + .globl gUnknown_85BE93E +gUnknown_85BE93E: @ 0x85BE93E + .incbin "baserom_jp.gba", 0x5be93e, 0x20 + + .globl gUnknown_85BE95E +gUnknown_85BE95E: @ 0x85BE95E + .incbin "baserom_jp.gba", 0x5be95e, 0x28 + + .globl gUnknown_85BE986 +gUnknown_85BE986: @ 0x85BE986 + .incbin "baserom_jp.gba", 0x5be986, 0xc + + .globl gUnknown_85BE992 +gUnknown_85BE992: @ 0x85BE992 + .incbin "baserom_jp.gba", 0x5be992, 0x22e + + .globl gUnknown_85BEBC0 +gUnknown_85BEBC0: @ 0x85BEBC0 + .incbin "baserom_jp.gba", 0x5bebc0, 0xcc0 + + .globl gUnknown_85BF880 +gUnknown_85BF880: @ 0x85BF880 + .incbin "baserom_jp.gba", 0x5bf880, 0x40 + + .globl gUnknown_85BF8C0 +gUnknown_85BF8C0: @ 0x85BF8C0 + .incbin "baserom_jp.gba", 0x5bf8c0, 0xe0 + + .globl gUnknown_85BF9A0 +gUnknown_85BF9A0: @ 0x85BF9A0 + .incbin "baserom_jp.gba", 0x5bf9a0, 0xac + + .globl gUnknown_85BFA4C +gUnknown_85BFA4C: @ 0x85BFA4C + .incbin "baserom_jp.gba", 0x5bfa4c, 0x60 + + .globl gUnknown_85BFAAC +gUnknown_85BFAAC: @ 0x85BFAAC + .incbin "baserom_jp.gba", 0x5bfaac, 0x784 + + .globl gUnknown_85C0230 +gUnknown_85C0230: @ 0x85C0230 + .incbin "baserom_jp.gba", 0x5c0230, 0x1e0 + + .globl gUnknown_85C0410 +gUnknown_85C0410: @ 0x85C0410 + .incbin "baserom_jp.gba", 0x5c0410, 0x78 + + .globl gUnknown_85C0488 +gUnknown_85C0488: @ 0x85C0488 + .incbin "baserom_jp.gba", 0x5c0488, 0x50c + + .globl gUnknown_85C0994 +gUnknown_85C0994: @ 0x85C0994 + .incbin "baserom_jp.gba", 0x5c0994, 0x14 + + .globl gUnknown_85C09A8 +gUnknown_85C09A8: @ 0x85C09A8 + .incbin "baserom_jp.gba", 0x5c09a8, 0x5 + + .globl gUnknown_85C09AD +gUnknown_85C09AD: @ 0x85C09AD + .incbin "baserom_jp.gba", 0x5c09ad, 0x3 + + .globl gUnknown_85C09B0 +gUnknown_85C09B0: @ 0x85C09B0 + .incbin "baserom_jp.gba", 0x5c09b0, 0x10 + + .globl gUnknown_85C09C0 +gUnknown_85C09C0: @ 0x85C09C0 + .incbin "baserom_jp.gba", 0x5c09c0, 0x20 + + .globl gUnknown_85C09E0 +gUnknown_85C09E0: @ 0x85C09E0 + .incbin "baserom_jp.gba", 0x5c09e0, 0x8 + + .globl gUnknown_85C09E8 +gUnknown_85C09E8: @ 0x85C09E8 + .incbin "baserom_jp.gba", 0x5c09e8, 0x14 + + .globl gUnknown_85C09FC +gUnknown_85C09FC: @ 0x85C09FC + .incbin "baserom_jp.gba", 0x5c09fc, 0x8 + + .globl gUnknown_85C0A04 +gUnknown_85C0A04: @ 0x85C0A04 + .incbin "baserom_jp.gba", 0x5c0a04, 0x8 + + .globl gUnknown_85C0A0C +gUnknown_85C0A0C: @ 0x85C0A0C + .incbin "baserom_jp.gba", 0x5c0a0c, 0x34 + + .globl gUnknown_85C0A40 +gUnknown_85C0A40: @ 0x85C0A40 + .incbin "baserom_jp.gba", 0x5c0a40, 0x44 + + .globl gUnknown_85C0A84 +gUnknown_85C0A84: @ 0x85C0A84 + .incbin "baserom_jp.gba", 0x5c0a84, 0x18 + + .globl gUnknown_85C0A9C +gUnknown_85C0A9C: @ 0x85C0A9C + .incbin "baserom_jp.gba", 0x5c0a9c, 0x8 + + .globl gUnknown_85C0AA4 +gUnknown_85C0AA4: @ 0x85C0AA4 + .incbin "baserom_jp.gba", 0x5c0aa4, 0xe4 + + .globl gUnknown_85C0B88 +gUnknown_85C0B88: @ 0x85C0B88 + .incbin "baserom_jp.gba", 0x5c0b88, 0x10 + + .globl gUnknown_85C0B98 +gUnknown_85C0B98: @ 0x85C0B98 + .incbin "baserom_jp.gba", 0x5c0b98, 0x20 + + .globl gUnknown_85C0BB8 +gUnknown_85C0BB8: @ 0x85C0BB8 + .incbin "baserom_jp.gba", 0x5c0bb8, 0x4 + + .globl gUnknown_85C0BBC +gUnknown_85C0BBC: @ 0x85C0BBC + .incbin "baserom_jp.gba", 0x5c0bbc, 0x4 + + .globl gUnknown_85C0BC0 +gUnknown_85C0BC0: @ 0x85C0BC0 + .incbin "baserom_jp.gba", 0x5c0bc0, 0x20 + + .globl gUnknown_85C0BE0 +gUnknown_85C0BE0: @ 0x85C0BE0 + .incbin "baserom_jp.gba", 0x5c0be0, 0x8 + + .globl gUnknown_85C0BE8 +gUnknown_85C0BE8: @ 0x85C0BE8 + .incbin "baserom_jp.gba", 0x5c0be8, 0x20 + + .globl gUnknown_85C0C08 +gUnknown_85C0C08: @ 0x85C0C08 + .incbin "baserom_jp.gba", 0x5c0c08, 0x8 + + .globl gUnknown_85C0C10 +gUnknown_85C0C10: @ 0x85C0C10 + .incbin "baserom_jp.gba", 0x5c0c10, 0x8 + + .globl gUnknown_85C0C18 +gUnknown_85C0C18: @ 0x85C0C18 + .incbin "baserom_jp.gba", 0x5c0c18, 0x8 + + .globl gUnknown_85C0C20 +gUnknown_85C0C20: @ 0x85C0C20 + .incbin "baserom_jp.gba", 0x5c0c20, 0x8 + + .globl gUnknown_85C0C28 +gUnknown_85C0C28: @ 0x85C0C28 + .incbin "baserom_jp.gba", 0x5c0c28, 0x18 + + .globl gUnknown_85C0C40 +gUnknown_85C0C40: @ 0x85C0C40 + .incbin "baserom_jp.gba", 0x5c0c40, 0x28 + + .globl gUnknown_85C0C68 +gUnknown_85C0C68: @ 0x85C0C68 + .incbin "baserom_jp.gba", 0x5c0c68, 0x8 + + .globl gUnknown_85C0C70 +gUnknown_85C0C70: @ 0x85C0C70 + .incbin "baserom_jp.gba", 0x5c0c70, 0x4 + + .globl gUnknown_85C0C74 +gUnknown_85C0C74: @ 0x85C0C74 + .incbin "baserom_jp.gba", 0x5c0c74, 0x20 + + .globl gUnknown_85C0C94 +gUnknown_85C0C94: @ 0x85C0C94 + .incbin "baserom_jp.gba", 0x5c0c94, 0x264 + + .globl gUnknown_85C0EF8 +gUnknown_85C0EF8: @ 0x85C0EF8 + .incbin "baserom_jp.gba", 0x5c0ef8, 0x780 + + .globl gUnknown_85C1678 +gUnknown_85C1678: @ 0x85C1678 + .incbin "baserom_jp.gba", 0x5c1678, 0x200 + + .globl gUnknown_85C1878 +gUnknown_85C1878: @ 0x85C1878 + .incbin "baserom_jp.gba", 0x5c1878, 0x3b4 + + .globl gUnknown_85C1C2C +gUnknown_85C1C2C: @ 0x85C1C2C + .incbin "baserom_jp.gba", 0x5c1c2c, 0x334 + + .globl gUnknown_85C1F60 +gUnknown_85C1F60: @ 0x85C1F60 + .incbin "baserom_jp.gba", 0x5c1f60, 0x2f0 + + .globl gUnknown_85C2250 +gUnknown_85C2250: @ 0x85C2250 + .incbin "baserom_jp.gba", 0x5c2250, 0x218 + + .globl gUnknown_85C2468 +gUnknown_85C2468: @ 0x85C2468 + .incbin "baserom_jp.gba", 0x5c2468, 0x2170 + + .globl gUnknown_85C45D8 +gUnknown_85C45D8: @ 0x85C45D8 + .incbin "baserom_jp.gba", 0x5c45d8, 0x200 + + .globl gUnknown_85C47D8 +gUnknown_85C47D8: @ 0x85C47D8 + .incbin "baserom_jp.gba", 0x5c47d8, 0x130 + + .globl gUnknown_85C4908 +gUnknown_85C4908: @ 0x85C4908 + .incbin "baserom_jp.gba", 0x5c4908, 0x1220 + + .globl gUnknown_85C5B28 +gUnknown_85C5B28: @ 0x85C5B28 + .incbin "baserom_jp.gba", 0x5c5b28, 0x10 + + .globl gUnknown_85C5B38 +gUnknown_85C5B38: @ 0x85C5B38 + .incbin "baserom_jp.gba", 0x5c5b38, 0x34 + + .globl gUnknown_85C5B6C +gUnknown_85C5B6C: @ 0x85C5B6C + .incbin "baserom_jp.gba", 0x5c5b6c, 0x18 + + .globl gUnknown_85C5B84 +gUnknown_85C5B84: @ 0x85C5B84 + .incbin "baserom_jp.gba", 0x5c5b84, 0x18 + + .globl gUnknown_85C5B9C +gUnknown_85C5B9C: @ 0x85C5B9C + .incbin "baserom_jp.gba", 0x5c5b9c, 0x20 + + .globl gUnknown_85C5BBC +gUnknown_85C5BBC: @ 0x85C5BBC + .incbin "baserom_jp.gba", 0x5c5bbc, 0x38 + + .globl gUnknown_85C5BF4 +gUnknown_85C5BF4: @ 0x85C5BF4 + .incbin "baserom_jp.gba", 0x5c5bf4, 0x64 + + .globl gUnknown_85C5C58 +gUnknown_85C5C58: @ 0x85C5C58 + .incbin "baserom_jp.gba", 0x5c5c58, 0x38 + + .globl gUnknown_85C5C90 +gUnknown_85C5C90: @ 0x85C5C90 + .incbin "baserom_jp.gba", 0x5c5c90, 0x18 + + .globl gUnknown_85C5CA8 +gUnknown_85C5CA8: @ 0x85C5CA8 + .incbin "baserom_jp.gba", 0x5c5ca8, 0x10 + + .globl gUnknown_85C5CB8 +gUnknown_85C5CB8: @ 0x85C5CB8 + .incbin "baserom_jp.gba", 0x5c5cb8, 0x48 + + .globl gUnknown_85C5D00 +gUnknown_85C5D00: @ 0x85C5D00 + .incbin "baserom_jp.gba", 0x5c5d00, 0x18 + + .globl gUnknown_85C5D18 +gUnknown_85C5D18: @ 0x85C5D18 + .incbin "baserom_jp.gba", 0x5c5d18, 0x24 + + .globl gUnknown_85C5D3C +gUnknown_85C5D3C: @ 0x85C5D3C + .incbin "baserom_jp.gba", 0x5c5d3c, 0x10 + + .globl gUnknown_85C5D4C +gUnknown_85C5D4C: @ 0x85C5D4C + .incbin "baserom_jp.gba", 0x5c5d4c, 0x10 + + .globl gUnknown_85C5D5C +gUnknown_85C5D5C: @ 0x85C5D5C + .incbin "baserom_jp.gba", 0x5c5d5c, 0x6c + + .globl gUnknown_85C5DC8 +gUnknown_85C5DC8: @ 0x85C5DC8 + .incbin "baserom_jp.gba", 0x5c5dc8, 0x50 + + .globl gUnknown_85C5E18 +gUnknown_85C5E18: @ 0x85C5E18 + .incbin "baserom_jp.gba", 0x5c5e18, 0x60 + + .globl gUnknown_85C5E78 +gUnknown_85C5E78: @ 0x85C5E78 + .incbin "baserom_jp.gba", 0x5c5e78, 0xd0 + + .globl gUnknown_85C5F48 +gUnknown_85C5F48: @ 0x85C5F48 + .incbin "baserom_jp.gba", 0x5c5f48, 0xb4 + + .globl gUnknown_85C5FFC +gUnknown_85C5FFC: @ 0x85C5FFC + .incbin "baserom_jp.gba", 0x5c5ffc, 0x14 + + .globl gUnknown_85C6010 +gUnknown_85C6010: @ 0x85C6010 + .incbin "baserom_jp.gba", 0x5c6010, 0x30 + + .globl gUnknown_85C6040 +gUnknown_85C6040: @ 0x85C6040 + .incbin "baserom_jp.gba", 0x5c6040, 0x18 + + .globl gUnknown_85C6058 +gUnknown_85C6058: @ 0x85C6058 + .incbin "baserom_jp.gba", 0x5c6058, 0x20 + + .globl gUnknown_85C6078 +gUnknown_85C6078: @ 0x85C6078 + .incbin "baserom_jp.gba", 0x5c6078, 0x18 + + .globl gUnknown_85C6090 +gUnknown_85C6090: @ 0x85C6090 + .incbin "baserom_jp.gba", 0x5c6090, 0x10 + + .globl gUnknown_85C60A0 +gUnknown_85C60A0: @ 0x85C60A0 + .incbin "baserom_jp.gba", 0x5c60a0, 0x10 + + .globl gUnknown_85C60B0 +gUnknown_85C60B0: @ 0x85C60B0 + .incbin "baserom_jp.gba", 0x5c60b0, 0x34 + + .globl gUnknown_85C60E4 +gUnknown_85C60E4: @ 0x85C60E4 + .incbin "baserom_jp.gba", 0x5c60e4, 0x18 + + .globl gUnknown_85C60FC +gUnknown_85C60FC: @ 0x85C60FC + .incbin "baserom_jp.gba", 0x5c60fc, 0x10 + + .globl gUnknown_85C610C +gUnknown_85C610C: @ 0x85C610C + .incbin "baserom_jp.gba", 0x5c610c, 0x10 + + .globl gUnknown_85C611C +gUnknown_85C611C: @ 0x85C611C + .incbin "baserom_jp.gba", 0x5c611c, 0x8 + + .globl gUnknown_85C6124 +gUnknown_85C6124: @ 0x85C6124 + .incbin "baserom_jp.gba", 0x5c6124, 0x8 + + .globl gUnknown_85C612C +gUnknown_85C612C: @ 0x85C612C + .incbin "baserom_jp.gba", 0x5c612c, 0x18 + + .globl gUnknown_85C6144 +gUnknown_85C6144: @ 0x85C6144 + .incbin "baserom_jp.gba", 0x5c6144, 0xc + + .globl gUnknown_85C6150 +gUnknown_85C6150: @ 0x85C6150 + .incbin "baserom_jp.gba", 0x5c6150, 0x60 + + .globl gUnknown_85C61B0 +gUnknown_85C61B0: @ 0x85C61B0 + .incbin "baserom_jp.gba", 0x5c61b0, 0xc0 + + .globl gUnknown_85C6270 +gUnknown_85C6270: @ 0x85C6270 + .incbin "baserom_jp.gba", 0x5c6270, 0xc + + .globl gUnknown_85C627C +gUnknown_85C627C: @ 0x85C627C + .incbin "baserom_jp.gba", 0x5c627c, 0x30 + + .globl gUnknown_85C62AC +gUnknown_85C62AC: @ 0x85C62AC + .incbin "baserom_jp.gba", 0x5c62ac, 0x60 + + .globl gUnknown_85C630C +gUnknown_85C630C: @ 0x85C630C + .incbin "baserom_jp.gba", 0x5c630c, 0xc0 + + .globl gUnknown_85C63CC +gUnknown_85C63CC: @ 0x85C63CC + .incbin "baserom_jp.gba", 0x5c63cc, 0x64 + + .globl gUnknown_85C6430 +gUnknown_85C6430: @ 0x85C6430 + .incbin "baserom_jp.gba", 0x5c6430, 0xc + + .globl gUnknown_85C643C +gUnknown_85C643C: @ 0x85C643C + .incbin "baserom_jp.gba", 0x5c643c, 0x8 + + .globl gUnknown_85C6444 +gUnknown_85C6444: @ 0x85C6444 + .incbin "baserom_jp.gba", 0x5c6444, 0x4 + + .globl gUnknown_85C6448 +gUnknown_85C6448: @ 0x85C6448 + .incbin "baserom_jp.gba", 0x5c6448, 0x8 + + .globl gUnknown_85C6450 +gUnknown_85C6450: @ 0x85C6450 + .incbin "baserom_jp.gba", 0x5c6450, 0x10 + + .globl gUnknown_85C6460 +gUnknown_85C6460: @ 0x85C6460 + .incbin "baserom_jp.gba", 0x5c6460, 0x10 + + .globl gUnknown_85C6470 +gUnknown_85C6470: @ 0x85C6470 + .incbin "baserom_jp.gba", 0x5c6470, 0x6 + + .globl gUnknown_85C6476 +gUnknown_85C6476: @ 0x85C6476 + .incbin "baserom_jp.gba", 0x5c6476, 0x2a + + .globl gUnknown_85C64A0 +gUnknown_85C64A0: @ 0x85C64A0 + .incbin "baserom_jp.gba", 0x5c64a0, 0x18 + + .globl gUnknown_85C64B8 +gUnknown_85C64B8: @ 0x85C64B8 + .incbin "baserom_jp.gba", 0x5c64b8, 0xd4 + + .globl gUnknown_85C658C +gUnknown_85C658C: @ 0x85C658C + .incbin "baserom_jp.gba", 0x5c658c, 0x18 + + .globl gUnknown_85C65A4 +gUnknown_85C65A4: @ 0x85C65A4 + .incbin "baserom_jp.gba", 0x5c65a4, 0x20 + + .globl gUnknown_85C65C4 +gUnknown_85C65C4: @ 0x85C65C4 + .incbin "baserom_jp.gba", 0x5c65c4, 0x1cc + + .globl gUnknown_85C6790 +gUnknown_85C6790: @ 0x85C6790 + .incbin "baserom_jp.gba", 0x5c6790, 0x1c + + .globl gUnknown_85C67AC +gUnknown_85C67AC: @ 0x85C67AC + .incbin "baserom_jp.gba", 0x5c67ac, 0x80 + + .globl gUnknown_85C682C +gUnknown_85C682C: @ 0x85C682C + .incbin "baserom_jp.gba", 0x5c682c, 0x43c + + .globl gUnknown_85C6C68 +gUnknown_85C6C68: @ 0x85C6C68 + .incbin "baserom_jp.gba", 0x5c6c68, 0xf + + .globl gUnknown_85C6C77 +gUnknown_85C6C77: @ 0x85C6C77 + .incbin "baserom_jp.gba", 0x5c6c77, 0xf + + .globl gUnknown_85C6C86 +gUnknown_85C6C86: @ 0x85C6C86 + .incbin "baserom_jp.gba", 0x5c6c86, 0xf + + .globl gUnknown_85C6C95 +gUnknown_85C6C95: @ 0x85C6C95 + .incbin "baserom_jp.gba", 0x5c6c95, 0xf + + .globl gUnknown_85C6CA4 +gUnknown_85C6CA4: @ 0x85C6CA4 + .incbin "baserom_jp.gba", 0x5c6ca4, 0x8ec + + .globl gUnknown_85C7590 +gUnknown_85C7590: @ 0x85C7590 + .incbin "baserom_jp.gba", 0x5c7590, 0x384 + + .globl gUnknown_85C7914 +gUnknown_85C7914: @ 0x85C7914 + .incbin "baserom_jp.gba", 0x5c7914, 0x4 + + .globl gUnknown_85C7918 +gUnknown_85C7918: @ 0x85C7918 + .incbin "baserom_jp.gba", 0x5c7918, 0x10 + + .globl gUnknown_85C7928 +gUnknown_85C7928: @ 0x85C7928 + .incbin "baserom_jp.gba", 0x5c7928, 0x54 + + .globl gUnknown_85C797C +gUnknown_85C797C: @ 0x85C797C + .incbin "baserom_jp.gba", 0x5c797c, 0x40 + + .globl gUnknown_85C79BC +gUnknown_85C79BC: @ 0x85C79BC + .incbin "baserom_jp.gba", 0x5c79bc, 0xc + + .globl gUnknown_85C79C8 +gUnknown_85C79C8: @ 0x85C79C8 + .incbin "baserom_jp.gba", 0x5c79c8, 0x10 + + .globl gUnknown_85C79D8 +gUnknown_85C79D8: @ 0x85C79D8 + .incbin "baserom_jp.gba", 0x5c79d8, 0x3c + + .globl gUnknown_85C7A14 +gUnknown_85C7A14: @ 0x85C7A14 + .incbin "baserom_jp.gba", 0x5c7a14, 0x18 + + .globl gUnknown_85C7A2C +gUnknown_85C7A2C: @ 0x85C7A2C + .incbin "baserom_jp.gba", 0x5c7a2c, 0x8 + + .globl gUnknown_85C7A34 +gUnknown_85C7A34: @ 0x85C7A34 + .incbin "baserom_jp.gba", 0x5c7a34, 0x40 + + .globl gUnknown_85C7A74 +gUnknown_85C7A74: @ 0x85C7A74 + .incbin "baserom_jp.gba", 0x5c7a74, 0x73c + + .globl gUnknown_85C81B0 +gUnknown_85C81B0: @ 0x85C81B0 + .incbin "baserom_jp.gba", 0x5c81b0, 0x9f8 + + .globl gUnknown_85C8BA8 +gUnknown_85C8BA8: @ 0x85C8BA8 + .incbin "baserom_jp.gba", 0x5c8ba8, 0x6 + + .globl gUnknown_85C8BAE +gUnknown_85C8BAE: @ 0x85C8BAE + .incbin "baserom_jp.gba", 0x5c8bae, 0x3 + + .globl gUnknown_85C8BB1 +gUnknown_85C8BB1: @ 0x85C8BB1 + .incbin "baserom_jp.gba", 0x5c8bb1, 0x5 + + .globl gUnknown_85C8BB6 +gUnknown_85C8BB6: @ 0x85C8BB6 + .incbin "baserom_jp.gba", 0x5c8bb6, 0x5 + + .globl gUnknown_85C8BBB +gUnknown_85C8BBB: @ 0x85C8BBB + .incbin "baserom_jp.gba", 0x5c8bbb, 0x37 + + .globl gUnknown_85C8BF2 +gUnknown_85C8BF2: @ 0x85C8BF2 + .incbin "baserom_jp.gba", 0x5c8bf2, 0xe + + .globl gUnknown_85C8C00 +gUnknown_85C8C00: @ 0x85C8C00 + .incbin "baserom_jp.gba", 0x5c8c00, 0x8 + + .globl gUnknown_85C8C08 +gUnknown_85C8C08: @ 0x85C8C08 + .incbin "baserom_jp.gba", 0x5c8c08, 0x8 + + .globl gUnknown_85C8C10 +gUnknown_85C8C10: @ 0x85C8C10 + .incbin "baserom_jp.gba", 0x5c8c10, 0x10 + + .globl gUnknown_85C8C20 +gUnknown_85C8C20: @ 0x85C8C20 + .incbin "baserom_jp.gba", 0x5c8c20, 0x4 + + .globl gUnknown_85C8C24 +gUnknown_85C8C24: @ 0x85C8C24 + .incbin "baserom_jp.gba", 0x5c8c24, 0x1 + + .globl gUnknown_85C8C25 +gUnknown_85C8C25: @ 0x85C8C25 + .incbin "baserom_jp.gba", 0x5c8c25, 0x3 + + .globl gUnknown_85C8C28 +gUnknown_85C8C28: @ 0x85C8C28 + .incbin "baserom_jp.gba", 0x5c8c28, 0xe + + .globl gUnknown_85C8C36 +gUnknown_85C8C36: @ 0x85C8C36 + .incbin "baserom_jp.gba", 0x5c8c36, 0x6 + + .globl gUnknown_85C8C3C +gUnknown_85C8C3C: @ 0x85C8C3C + .incbin "baserom_jp.gba", 0x5c8c3c, 0x4 + + .globl gUnknown_85C8C40 +gUnknown_85C8C40: @ 0x85C8C40 + .incbin "baserom_jp.gba", 0x5c8c40, 0x4 + + .globl gUnknown_85C8C44 +gUnknown_85C8C44: @ 0x85C8C44 + .incbin "baserom_jp.gba", 0x5c8c44, 0x5 + + .globl gUnknown_85C8C49 +gUnknown_85C8C49: @ 0x85C8C49 + .incbin "baserom_jp.gba", 0x5c8c49, 0x5 + + .globl gUnknown_85C8C4E +gUnknown_85C8C4E: @ 0x85C8C4E + .incbin "baserom_jp.gba", 0x5c8c4e, 0x6 + + .globl gUnknown_85C8C54 +gUnknown_85C8C54: @ 0x85C8C54 + .incbin "baserom_jp.gba", 0x5c8c54, 0x6 + + .globl gUnknown_85C8C5A +gUnknown_85C8C5A: @ 0x85C8C5A + .incbin "baserom_jp.gba", 0x5c8c5a, 0x4 + + .globl gUnknown_85C8C5E +gUnknown_85C8C5E: @ 0x85C8C5E + .incbin "baserom_jp.gba", 0x5c8c5e, 0x4 + + .globl gUnknown_85C8C62 +gUnknown_85C8C62: @ 0x85C8C62 + .incbin "baserom_jp.gba", 0x5c8c62, 0x4 + + .globl gUnknown_85C8C66 +gUnknown_85C8C66: @ 0x85C8C66 + .incbin "baserom_jp.gba", 0x5c8c66, 0xa + + .globl gUnknown_85C8C70 +gUnknown_85C8C70: @ 0x85C8C70 + .incbin "baserom_jp.gba", 0x5c8c70, 0xc + + .globl gUnknown_85C8C7C +gUnknown_85C8C7C: @ 0x85C8C7C + .incbin "baserom_jp.gba", 0x5c8c7c, 0xb + + .globl gUnknown_85C8C87 +gUnknown_85C8C87: @ 0x85C8C87 + .incbin "baserom_jp.gba", 0x5c8c87, 0xa + + .globl gUnknown_85C8C91 +gUnknown_85C8C91: @ 0x85C8C91 + .incbin "baserom_jp.gba", 0x5c8c91, 0xb + + .globl gUnknown_85C8C9C +gUnknown_85C8C9C: @ 0x85C8C9C + .incbin "baserom_jp.gba", 0x5c8c9c, 0xb + + .globl gUnknown_85C8CA7 +gUnknown_85C8CA7: @ 0x85C8CA7 + .incbin "baserom_jp.gba", 0x5c8ca7, 0xa + + .globl gUnknown_85C8CB1 +gUnknown_85C8CB1: @ 0x85C8CB1 + .incbin "baserom_jp.gba", 0x5c8cb1, 0x16 + + .globl gUnknown_85C8CC7 +gUnknown_85C8CC7: @ 0x85C8CC7 + .incbin "baserom_jp.gba", 0x5c8cc7, 0x24 + + .globl gUnknown_85C8CEB +gUnknown_85C8CEB: @ 0x85C8CEB + .incbin "baserom_jp.gba", 0x5c8ceb, 0x59 + + .globl gUnknown_85C8D44 +gUnknown_85C8D44: @ 0x85C8D44 + .incbin "baserom_jp.gba", 0x5c8d44, 0x27 + + .globl gUnknown_85C8D6B +gUnknown_85C8D6B: @ 0x85C8D6B + .incbin "baserom_jp.gba", 0x5c8d6b, 0x15 + + .globl gUnknown_85C8D80 +gUnknown_85C8D80: @ 0x85C8D80 + .incbin "baserom_jp.gba", 0x5c8d80, 0x13 + + .globl gUnknown_85C8D93 +gUnknown_85C8D93: @ 0x85C8D93 + .incbin "baserom_jp.gba", 0x5c8d93, 0x59 + + .globl gUnknown_85C8DEC +gUnknown_85C8DEC: @ 0x85C8DEC + .incbin "baserom_jp.gba", 0x5c8dec, 0x7c + + .globl gUnknown_85C8E68 +gUnknown_85C8E68: @ 0x85C8E68 + .incbin "baserom_jp.gba", 0x5c8e68, 0x14 + + .globl gUnknown_85C8E7C +gUnknown_85C8E7C: @ 0x85C8E7C + .incbin "baserom_jp.gba", 0x5c8e7c, 0x10 + + .globl gUnknown_85C8E8C +gUnknown_85C8E8C: @ 0x85C8E8C + .incbin "baserom_jp.gba", 0x5c8e8c, 0xfc + + .globl gUnknown_85C8F88 +gUnknown_85C8F88: @ 0x85C8F88 + .incbin "baserom_jp.gba", 0x5c8f88, 0x1a + + .globl gUnknown_85C8FA2 +gUnknown_85C8FA2: @ 0x85C8FA2 + .incbin "baserom_jp.gba", 0x5c8fa2, 0xa + + .globl gUnknown_85C8FAC +gUnknown_85C8FAC: @ 0x85C8FAC + .incbin "baserom_jp.gba", 0x5c8fac, 0x7 + + .globl gUnknown_85C8FB3 +gUnknown_85C8FB3: @ 0x85C8FB3 + .incbin "baserom_jp.gba", 0x5c8fb3, 0x8 + + .globl gUnknown_85C8FBB +gUnknown_85C8FBB: @ 0x85C8FBB + .incbin "baserom_jp.gba", 0x5c8fbb, 0xa + + .globl gUnknown_85C8FC5 +gUnknown_85C8FC5: @ 0x85C8FC5 + .incbin "baserom_jp.gba", 0x5c8fc5, 0x7 + + .globl gUnknown_85C8FCC +gUnknown_85C8FCC: @ 0x85C8FCC + .incbin "baserom_jp.gba", 0x5c8fcc, 0x8 + + .globl gUnknown_85C8FD4 +gUnknown_85C8FD4: @ 0x85C8FD4 + .incbin "baserom_jp.gba", 0x5c8fd4, 0x2 + + .globl gUnknown_85C8FD6 +gUnknown_85C8FD6: @ 0x85C8FD6 + .incbin "baserom_jp.gba", 0x5c8fd6, 0x5 + + .globl gUnknown_85C8FDB +gUnknown_85C8FDB: @ 0x85C8FDB + .incbin "baserom_jp.gba", 0x5c8fdb, 0x2 + + .globl gUnknown_85C8FDD +gUnknown_85C8FDD: @ 0x85C8FDD + .incbin "baserom_jp.gba", 0x5c8fdd, 0xa + + .globl gUnknown_85C8FE7 +gUnknown_85C8FE7: @ 0x85C8FE7 + .incbin "baserom_jp.gba", 0x5c8fe7, 0x15 + + .globl gUnknown_85C8FFC +gUnknown_85C8FFC: @ 0x85C8FFC + .incbin "baserom_jp.gba", 0x5c8ffc, 0xe + + .globl gUnknown_85C900A +gUnknown_85C900A: @ 0x85C900A + .incbin "baserom_jp.gba", 0x5c900a, 0x13 + + .globl gUnknown_85C901D +gUnknown_85C901D: @ 0x85C901D + .incbin "baserom_jp.gba", 0x5c901d, 0x27c + + .globl gUnknown_85C9299 +gUnknown_85C9299: @ 0x85C9299 + .incbin "baserom_jp.gba", 0x5c9299, 0x4 + + .globl gUnknown_85C929D +gUnknown_85C929D: @ 0x85C929D + .incbin "baserom_jp.gba", 0x5c929d, 0x74 + + .globl gUnknown_85C9311 +gUnknown_85C9311: @ 0x85C9311 + .incbin "baserom_jp.gba", 0x5c9311, 0x17 + + .globl gUnknown_85C9328 +gUnknown_85C9328: @ 0x85C9328 + .incbin "baserom_jp.gba", 0x5c9328, 0xf + + .globl gUnknown_85C9337 +gUnknown_85C9337: @ 0x85C9337 + .incbin "baserom_jp.gba", 0x5c9337, 0x14 + + .globl gUnknown_85C934B +gUnknown_85C934B: @ 0x85C934B + .incbin "baserom_jp.gba", 0x5c934b, 0x4 + + .globl gUnknown_85C934F +gUnknown_85C934F: @ 0x85C934F + .incbin "baserom_jp.gba", 0x5c934f, 0xa + + .globl gUnknown_85C9359 +gUnknown_85C9359: @ 0x85C9359 + .incbin "baserom_jp.gba", 0x5c9359, 0x4 + + .globl gUnknown_85C935D +gUnknown_85C935D: @ 0x85C935D + .incbin "baserom_jp.gba", 0x5c935d, 0x6 + + .globl gUnknown_85C9363 +gUnknown_85C9363: @ 0x85C9363 + .incbin "baserom_jp.gba", 0x5c9363, 0x23 + + .globl gUnknown_85C9386 +gUnknown_85C9386: @ 0x85C9386 + .incbin "baserom_jp.gba", 0x5c9386, 0xd + + .globl gUnknown_85C9393 +gUnknown_85C9393: @ 0x85C9393 + .incbin "baserom_jp.gba", 0x5c9393, 0x5 + + .globl gUnknown_85C9398 +gUnknown_85C9398: @ 0x85C9398 + .incbin "baserom_jp.gba", 0x5c9398, 0x23 + + .globl gUnknown_85C93BB +gUnknown_85C93BB: @ 0x85C93BB + .incbin "baserom_jp.gba", 0x5c93bb, 0x9 + + .globl gUnknown_85C93C4 +gUnknown_85C93C4: @ 0x85C93C4 + .incbin "baserom_jp.gba", 0x5c93c4, 0x4 + + .globl gUnknown_85C93C8 +gUnknown_85C93C8: @ 0x85C93C8 + .incbin "baserom_jp.gba", 0x5c93c8, 0x8 + + .globl gUnknown_85C93D0 +gUnknown_85C93D0: @ 0x85C93D0 + .incbin "baserom_jp.gba", 0x5c93d0, 0x1d + + .globl gUnknown_85C93ED +gUnknown_85C93ED: @ 0x85C93ED + .incbin "baserom_jp.gba", 0x5c93ed, 0x8 + + .globl gUnknown_85C93F5 +gUnknown_85C93F5: @ 0x85C93F5 + .incbin "baserom_jp.gba", 0x5c93f5, 0x4 + + .globl gUnknown_85C93F9 +gUnknown_85C93F9: @ 0x85C93F9 + .incbin "baserom_jp.gba", 0x5c93f9, 0x6 + + .globl gUnknown_85C93FF +gUnknown_85C93FF: @ 0x85C93FF + .incbin "baserom_jp.gba", 0x5c93ff, 0x2 + + .globl gUnknown_85C9401 +gUnknown_85C9401: @ 0x85C9401 + .incbin "baserom_jp.gba", 0x5c9401, 0x2 + + .globl gUnknown_85C9403 +gUnknown_85C9403: @ 0x85C9403 + .incbin "baserom_jp.gba", 0x5c9403, 0x3 + + .globl gUnknown_85C9406 +gUnknown_85C9406: @ 0x85C9406 + .incbin "baserom_jp.gba", 0x5c9406, 0x4 + + .globl gUnknown_85C940A +gUnknown_85C940A: @ 0x85C940A + .incbin "baserom_jp.gba", 0x5c940a, 0x2 + + .globl gUnknown_85C940C +gUnknown_85C940C: @ 0x85C940C + .incbin "baserom_jp.gba", 0x5c940c, 0x2 + + .globl gUnknown_85C940E +gUnknown_85C940E: @ 0x85C940E + .incbin "baserom_jp.gba", 0x5c940e, 0x3 + + .globl gUnknown_85C9411 +gUnknown_85C9411: @ 0x85C9411 + .incbin "baserom_jp.gba", 0x5c9411, 0x9 + + .globl gUnknown_85C941A +gUnknown_85C941A: @ 0x85C941A + .incbin "baserom_jp.gba", 0x5c941a, 0x5 + + .globl gUnknown_85C941F +gUnknown_85C941F: @ 0x85C941F + .incbin "baserom_jp.gba", 0x5c941f, 0x2 + + .globl gUnknown_85C9421 +gUnknown_85C9421: @ 0x85C9421 + .incbin "baserom_jp.gba", 0x5c9421, 0x2 + + .globl gUnknown_85C9423 +gUnknown_85C9423: @ 0x85C9423 + .incbin "baserom_jp.gba", 0x5c9423, 0xb + + .globl gUnknown_85C942E +gUnknown_85C942E: @ 0x85C942E + .incbin "baserom_jp.gba", 0x5c942e, 0xe + + .globl gUnknown_85C943C +gUnknown_85C943C: @ 0x85C943C + .incbin "baserom_jp.gba", 0x5c943c, 0x4 + + .globl gUnknown_85C9440 +gUnknown_85C9440: @ 0x85C9440 + .incbin "baserom_jp.gba", 0x5c9440, 0x3 + + .globl gUnknown_85C9443 +gUnknown_85C9443: @ 0x85C9443 + .incbin "baserom_jp.gba", 0x5c9443, 0x5 + + .globl gUnknown_85C9448 +gUnknown_85C9448: @ 0x85C9448 + .incbin "baserom_jp.gba", 0x5c9448, 0x8 + + .globl gUnknown_85C9450 +gUnknown_85C9450: @ 0x85C9450 + .incbin "baserom_jp.gba", 0x5c9450, 0xc + + .globl gUnknown_85C945C +gUnknown_85C945C: @ 0x85C945C + .incbin "baserom_jp.gba", 0x5c945c, 0x16 + + .globl gUnknown_85C9472 +gUnknown_85C9472: @ 0x85C9472 + .incbin "baserom_jp.gba", 0x5c9472, 0xd + + .globl gUnknown_85C947F +gUnknown_85C947F: @ 0x85C947F + .incbin "baserom_jp.gba", 0x5c947f, 0xf + + .globl gUnknown_85C948E +gUnknown_85C948E: @ 0x85C948E + .incbin "baserom_jp.gba", 0x5c948e, 0x13 + + .globl gUnknown_85C94A1 +gUnknown_85C94A1: @ 0x85C94A1 + .incbin "baserom_jp.gba", 0x5c94a1, 0x18 + + .globl gUnknown_85C94B9 +gUnknown_85C94B9: @ 0x85C94B9 + .incbin "baserom_jp.gba", 0x5c94b9, 0x11 + + .globl gUnknown_85C94CA +gUnknown_85C94CA: @ 0x85C94CA + .incbin "baserom_jp.gba", 0x5c94ca, 0x10 + + .globl gUnknown_85C94DA +gUnknown_85C94DA: @ 0x85C94DA + .incbin "baserom_jp.gba", 0x5c94da, 0x11 + + .globl gUnknown_85C94EB +gUnknown_85C94EB: @ 0x85C94EB + .incbin "baserom_jp.gba", 0x5c94eb, 0x1b + + .globl gUnknown_85C9506 +gUnknown_85C9506: @ 0x85C9506 + .incbin "baserom_jp.gba", 0x5c9506, 0x1d + + .globl gUnknown_85C9523 +gUnknown_85C9523: @ 0x85C9523 + .incbin "baserom_jp.gba", 0x5c9523, 0xf + + .globl gUnknown_85C9532 +gUnknown_85C9532: @ 0x85C9532 + .incbin "baserom_jp.gba", 0x5c9532, 0xe + + .globl gUnknown_85C9540 +gUnknown_85C9540: @ 0x85C9540 + .incbin "baserom_jp.gba", 0x5c9540, 0x16 + + .globl gUnknown_85C9556 +gUnknown_85C9556: @ 0x85C9556 + .incbin "baserom_jp.gba", 0x5c9556, 0x29 + + .globl gUnknown_85C957F +gUnknown_85C957F: @ 0x85C957F + .incbin "baserom_jp.gba", 0x5c957f, 0xf + + .globl gUnknown_85C958E +gUnknown_85C958E: @ 0x85C958E + .incbin "baserom_jp.gba", 0x5c958e, 0x28 + + .globl gUnknown_85C95B6 +gUnknown_85C95B6: @ 0x85C95B6 + .incbin "baserom_jp.gba", 0x5c95b6, 0x1d + + .globl gUnknown_85C95D3 +gUnknown_85C95D3: @ 0x85C95D3 + .incbin "baserom_jp.gba", 0x5c95d3, 0x1d + + .globl gUnknown_85C95F0 +gUnknown_85C95F0: @ 0x85C95F0 + .incbin "baserom_jp.gba", 0x5c95f0, 0x10 + + .globl gUnknown_85C9600 +gUnknown_85C9600: @ 0x85C9600 + .incbin "baserom_jp.gba", 0x5c9600, 0xe + + .globl gUnknown_85C960E +gUnknown_85C960E: @ 0x85C960E + .incbin "baserom_jp.gba", 0x5c960e, 0xf + + .globl gUnknown_85C961D +gUnknown_85C961D: @ 0x85C961D + .incbin "baserom_jp.gba", 0x5c961d, 0x27 + + .globl gUnknown_85C9644 +gUnknown_85C9644: @ 0x85C9644 + .incbin "baserom_jp.gba", 0x5c9644, 0x10 + + .globl gUnknown_85C9654 +gUnknown_85C9654: @ 0x85C9654 + .incbin "baserom_jp.gba", 0x5c9654, 0x21 + + .globl gUnknown_85C9675 +gUnknown_85C9675: @ 0x85C9675 + .incbin "baserom_jp.gba", 0x5c9675, 0x24 + + .globl gUnknown_85C9699 +gUnknown_85C9699: @ 0x85C9699 + .incbin "baserom_jp.gba", 0x5c9699, 0x24 + + .globl gUnknown_85C96BD +gUnknown_85C96BD: @ 0x85C96BD + .incbin "baserom_jp.gba", 0x5c96bd, 0x11 + + .globl gUnknown_85C96CE +gUnknown_85C96CE: @ 0x85C96CE + .incbin "baserom_jp.gba", 0x5c96ce, 0x2a + + .globl gUnknown_85C96F8 +gUnknown_85C96F8: @ 0x85C96F8 + .incbin "baserom_jp.gba", 0x5c96f8, 0x30 + + .globl gUnknown_85C9728 +gUnknown_85C9728: @ 0x85C9728 + .incbin "baserom_jp.gba", 0x5c9728, 0x10 + + .globl gUnknown_85C9738 +gUnknown_85C9738: @ 0x85C9738 + .incbin "baserom_jp.gba", 0x5c9738, 0xa + + .globl gUnknown_85C9742 +gUnknown_85C9742: @ 0x85C9742 + .incbin "baserom_jp.gba", 0x5c9742, 0x2d + + .globl gUnknown_85C976F +gUnknown_85C976F: @ 0x85C976F + .incbin "baserom_jp.gba", 0x5c976f, 0x7 + + .globl gUnknown_85C9776 +gUnknown_85C9776: @ 0x85C9776 + .incbin "baserom_jp.gba", 0x5c9776, 0x7 + + .globl gUnknown_85C977D +gUnknown_85C977D: @ 0x85C977D + .incbin "baserom_jp.gba", 0x5c977d, 0x5 + + .globl gUnknown_85C9782 +gUnknown_85C9782: @ 0x85C9782 + .incbin "baserom_jp.gba", 0x5c9782, 0x4 + + .globl gUnknown_85C9786 +gUnknown_85C9786: @ 0x85C9786 + .incbin "baserom_jp.gba", 0x5c9786, 0x2f + + .globl gUnknown_85C97B5 +gUnknown_85C97B5: @ 0x85C97B5 + .incbin "baserom_jp.gba", 0x5c97b5, 0x8 + + .globl gUnknown_85C97BD +gUnknown_85C97BD: @ 0x85C97BD + .incbin "baserom_jp.gba", 0x5c97bd, 0x81 + + .globl gUnknown_85C983E +gUnknown_85C983E: @ 0x85C983E + .incbin "baserom_jp.gba", 0x5c983e, 0x4 + + .globl gUnknown_85C9842 +gUnknown_85C9842: @ 0x85C9842 + .incbin "baserom_jp.gba", 0x5c9842, 0x4 + + .globl gUnknown_85C9846 +gUnknown_85C9846: @ 0x85C9846 + .incbin "baserom_jp.gba", 0x5c9846, 0x4 + + .globl gUnknown_85C984A +gUnknown_85C984A: @ 0x85C984A + .incbin "baserom_jp.gba", 0x5c984a, 0x4 + + .globl gUnknown_85C984E +gUnknown_85C984E: @ 0x85C984E + .incbin "baserom_jp.gba", 0x5c984e, 0xe + + .globl gUnknown_85C985C +gUnknown_85C985C: @ 0x85C985C + .incbin "baserom_jp.gba", 0x5c985c, 0x8 + + .globl gUnknown_85C9864 +gUnknown_85C9864: @ 0x85C9864 + .incbin "baserom_jp.gba", 0x5c9864, 0x5 + + .globl gUnknown_85C9869 +gUnknown_85C9869: @ 0x85C9869 + .incbin "baserom_jp.gba", 0x5c9869, 0x12 + + .globl gUnknown_85C987B +gUnknown_85C987B: @ 0x85C987B + .incbin "baserom_jp.gba", 0x5c987b, 0xa + + .globl gUnknown_85C9885 +gUnknown_85C9885: @ 0x85C9885 + .incbin "baserom_jp.gba", 0x5c9885, 0xf + + .globl gUnknown_85C9894 +gUnknown_85C9894: @ 0x85C9894 + .incbin "baserom_jp.gba", 0x5c9894, 0x15 + + .globl gUnknown_85C98A9 +gUnknown_85C98A9: @ 0x85C98A9 + .incbin "baserom_jp.gba", 0x5c98a9, 0x2c + + .globl gUnknown_85C98D5 +gUnknown_85C98D5: @ 0x85C98D5 + .incbin "baserom_jp.gba", 0x5c98d5, 0xb + + .globl gUnknown_85C98E0 +gUnknown_85C98E0: @ 0x85C98E0 + .incbin "baserom_jp.gba", 0x5c98e0, 0xc + + .globl gUnknown_85C98EC +gUnknown_85C98EC: @ 0x85C98EC + .incbin "baserom_jp.gba", 0x5c98ec, 0x17 + + .globl gUnknown_85C9903 +gUnknown_85C9903: @ 0x85C9903 + .incbin "baserom_jp.gba", 0x5c9903, 0x1c + + .globl gUnknown_85C991F +gUnknown_85C991F: @ 0x85C991F + .incbin "baserom_jp.gba", 0x5c991f, 0x17 + + .globl gUnknown_85C9936 +gUnknown_85C9936: @ 0x85C9936 + .incbin "baserom_jp.gba", 0x5c9936, 0x15 + + .globl gUnknown_85C994B +gUnknown_85C994B: @ 0x85C994B + .incbin "baserom_jp.gba", 0x5c994b, 0x17 + + .globl gUnknown_85C9962 +gUnknown_85C9962: @ 0x85C9962 + .incbin "baserom_jp.gba", 0x5c9962, 0x14 + + .globl gUnknown_85C9976 +gUnknown_85C9976: @ 0x85C9976 + .incbin "baserom_jp.gba", 0x5c9976, 0x22 + + .globl gUnknown_85C9998 +gUnknown_85C9998: @ 0x85C9998 + .incbin "baserom_jp.gba", 0x5c9998, 0x20 + + .globl gUnknown_85C99B8 +gUnknown_85C99B8: @ 0x85C99B8 + .incbin "baserom_jp.gba", 0x5c99b8, 0x10 + + .globl gUnknown_85C99C8 +gUnknown_85C99C8: @ 0x85C99C8 + .incbin "baserom_jp.gba", 0x5c99c8, 0x16 + + .globl gUnknown_85C99DE +gUnknown_85C99DE: @ 0x85C99DE + .incbin "baserom_jp.gba", 0x5c99de, 0x17 + + .globl gUnknown_85C99F5 +gUnknown_85C99F5: @ 0x85C99F5 + .incbin "baserom_jp.gba", 0x5c99f5, 0x20 + + .globl gUnknown_85C9A15 +gUnknown_85C9A15: @ 0x85C9A15 + .incbin "baserom_jp.gba", 0x5c9a15, 0x18 + + .globl gUnknown_85C9A2D +gUnknown_85C9A2D: @ 0x85C9A2D + .incbin "baserom_jp.gba", 0x5c9a2d, 0x1a + + .globl gUnknown_85C9A47 +gUnknown_85C9A47: @ 0x85C9A47 + .incbin "baserom_jp.gba", 0x5c9a47, 0x16 + + .globl gUnknown_85C9A5D +gUnknown_85C9A5D: @ 0x85C9A5D + .incbin "baserom_jp.gba", 0x5c9a5d, 0xf + + .globl gUnknown_85C9A6C +gUnknown_85C9A6C: @ 0x85C9A6C + .incbin "baserom_jp.gba", 0x5c9a6c, 0x1c + + .globl gUnknown_85C9A88 +gUnknown_85C9A88: @ 0x85C9A88 + .incbin "baserom_jp.gba", 0x5c9a88, 0x15 + + .globl gUnknown_85C9A9D +gUnknown_85C9A9D: @ 0x85C9A9D + .incbin "baserom_jp.gba", 0x5c9a9d, 0x4a + + .globl gUnknown_85C9AE7 +gUnknown_85C9AE7: @ 0x85C9AE7 + .incbin "baserom_jp.gba", 0x5c9ae7, 0x6 + + .globl gUnknown_85C9AED +gUnknown_85C9AED: @ 0x85C9AED + .incbin "baserom_jp.gba", 0x5c9aed, 0x5 + + .globl gUnknown_85C9AF2 +gUnknown_85C9AF2: @ 0x85C9AF2 + .incbin "baserom_jp.gba", 0x5c9af2, 0x5 + + .globl gUnknown_85C9AF7 +gUnknown_85C9AF7: @ 0x85C9AF7 + .incbin "baserom_jp.gba", 0x5c9af7, 0x10 + + .globl gUnknown_85C9B07 +gUnknown_85C9B07: @ 0x85C9B07 + .incbin "baserom_jp.gba", 0x5c9b07, 0x13 + + .globl gUnknown_85C9B1A +gUnknown_85C9B1A: @ 0x85C9B1A + .incbin "baserom_jp.gba", 0x5c9b1a, 0x13 + + .globl gUnknown_85C9B2D +gUnknown_85C9B2D: @ 0x85C9B2D + .incbin "baserom_jp.gba", 0x5c9b2d, 0x16 + + .globl gUnknown_85C9B43 +gUnknown_85C9B43: @ 0x85C9B43 + .incbin "baserom_jp.gba", 0x5c9b43, 0x16 + + .globl gUnknown_85C9B59 +gUnknown_85C9B59: @ 0x85C9B59 + .incbin "baserom_jp.gba", 0x5c9b59, 0x1d + + .globl gUnknown_85C9B76 +gUnknown_85C9B76: @ 0x85C9B76 + .incbin "baserom_jp.gba", 0x5c9b76, 0x27 + + .globl gUnknown_85C9B9D +gUnknown_85C9B9D: @ 0x85C9B9D + .incbin "baserom_jp.gba", 0x5c9b9d, 0x1a + + .globl gUnknown_85C9BB7 +gUnknown_85C9BB7: @ 0x85C9BB7 + .incbin "baserom_jp.gba", 0x5c9bb7, 0x1e + + .globl gUnknown_85C9BD5 +gUnknown_85C9BD5: @ 0x85C9BD5 + .incbin "baserom_jp.gba", 0x5c9bd5, 0x1c + + .globl gUnknown_85C9BF1 +gUnknown_85C9BF1: @ 0x85C9BF1 + .incbin "baserom_jp.gba", 0x5c9bf1, 0x19 + + .globl gUnknown_85C9C0A +gUnknown_85C9C0A: @ 0x85C9C0A + .incbin "baserom_jp.gba", 0x5c9c0a, 0x16 + + .globl gUnknown_85C9C20 +gUnknown_85C9C20: @ 0x85C9C20 + .incbin "baserom_jp.gba", 0x5c9c20, 0x19 + + .globl gUnknown_85C9C39 +gUnknown_85C9C39: @ 0x85C9C39 + .incbin "baserom_jp.gba", 0x5c9c39, 0x23 + + .globl gUnknown_85C9C5C +gUnknown_85C9C5C: @ 0x85C9C5C + .incbin "baserom_jp.gba", 0x5c9c5c, 0x1a + + .globl gUnknown_85C9C76 +gUnknown_85C9C76: @ 0x85C9C76 + .incbin "baserom_jp.gba", 0x5c9c76, 0x10 + + .globl gUnknown_85C9C86 +gUnknown_85C9C86: @ 0x85C9C86 + .incbin "baserom_jp.gba", 0x5c9c86, 0x27 + + .globl gUnknown_85C9CAD +gUnknown_85C9CAD: @ 0x85C9CAD + .incbin "baserom_jp.gba", 0x5c9cad, 0x19 + + .globl gUnknown_85C9CC6 +gUnknown_85C9CC6: @ 0x85C9CC6 + .incbin "baserom_jp.gba", 0x5c9cc6, 0x14 + + .globl gUnknown_85C9CDA +gUnknown_85C9CDA: @ 0x85C9CDA + .incbin "baserom_jp.gba", 0x5c9cda, 0x15 + + .globl gUnknown_85C9CEF +gUnknown_85C9CEF: @ 0x85C9CEF + .incbin "baserom_jp.gba", 0x5c9cef, 0x1d + + .globl gUnknown_85C9D0C +gUnknown_85C9D0C: @ 0x85C9D0C + .incbin "baserom_jp.gba", 0x5c9d0c, 0x26 + + .globl gUnknown_85C9D32 +gUnknown_85C9D32: @ 0x85C9D32 + .incbin "baserom_jp.gba", 0x5c9d32, 0x15 + + .globl gUnknown_85C9D47 +gUnknown_85C9D47: @ 0x85C9D47 + .incbin "baserom_jp.gba", 0x5c9d47, 0x21 + + .globl gUnknown_85C9D68 +gUnknown_85C9D68: @ 0x85C9D68 + .incbin "baserom_jp.gba", 0x5c9d68, 0x14 + + .globl gUnknown_85C9D7C +gUnknown_85C9D7C: @ 0x85C9D7C + .incbin "baserom_jp.gba", 0x5c9d7c, 0x25 + + .globl gUnknown_85C9DA1 +gUnknown_85C9DA1: @ 0x85C9DA1 + .incbin "baserom_jp.gba", 0x5c9da1, 0x51 + + .globl gUnknown_85C9DF2 +gUnknown_85C9DF2: @ 0x85C9DF2 + .incbin "baserom_jp.gba", 0x5c9df2, 0x1b + + .globl gUnknown_85C9E0D +gUnknown_85C9E0D: @ 0x85C9E0D + .incbin "baserom_jp.gba", 0x5c9e0d, 0x16 + + .globl gUnknown_85C9E23 +gUnknown_85C9E23: @ 0x85C9E23 + .incbin "baserom_jp.gba", 0x5c9e23, 0x12 + + .globl gUnknown_85C9E35 +gUnknown_85C9E35: @ 0x85C9E35 + .incbin "baserom_jp.gba", 0x5c9e35, 0x44 + + .globl gUnknown_85C9E79 +gUnknown_85C9E79: @ 0x85C9E79 + .incbin "baserom_jp.gba", 0x5c9e79, 0x16 + + .globl gUnknown_85C9E8F +gUnknown_85C9E8F: @ 0x85C9E8F + .incbin "baserom_jp.gba", 0x5c9e8f, 0x17 + + .globl gUnknown_85C9EA6 +gUnknown_85C9EA6: @ 0x85C9EA6 + .incbin "baserom_jp.gba", 0x5c9ea6, 0x1a + + .globl gUnknown_85C9EC0 +gUnknown_85C9EC0: @ 0x85C9EC0 + .incbin "baserom_jp.gba", 0x5c9ec0, 0x14 + + .globl gUnknown_85C9ED4 +gUnknown_85C9ED4: @ 0x85C9ED4 + .incbin "baserom_jp.gba", 0x5c9ed4, 0xe + + .globl gUnknown_85C9EE2 +gUnknown_85C9EE2: @ 0x85C9EE2 + .incbin "baserom_jp.gba", 0x5c9ee2, 0x10 + + .globl gUnknown_85C9EF2 +gUnknown_85C9EF2: @ 0x85C9EF2 + .incbin "baserom_jp.gba", 0x5c9ef2, 0x14 + + .globl gUnknown_85C9F06 +gUnknown_85C9F06: @ 0x85C9F06 + .incbin "baserom_jp.gba", 0x5c9f06, 0x25 + + .globl gUnknown_85C9F2B +gUnknown_85C9F2B: @ 0x85C9F2B + .incbin "baserom_jp.gba", 0x5c9f2b, 0x10 + + .globl gUnknown_85C9F3B +gUnknown_85C9F3B: @ 0x85C9F3B + .incbin "baserom_jp.gba", 0x5c9f3b, 0x13 + + .globl gUnknown_85C9F4E +gUnknown_85C9F4E: @ 0x85C9F4E + .incbin "baserom_jp.gba", 0x5c9f4e, 0x11 + + .globl gUnknown_85C9F5F +gUnknown_85C9F5F: @ 0x85C9F5F + .incbin "baserom_jp.gba", 0x5c9f5f, 0x19 + + .globl gUnknown_85C9F78 +gUnknown_85C9F78: @ 0x85C9F78 + .incbin "baserom_jp.gba", 0x5c9f78, 0x23 + + .globl gUnknown_85C9F9B +gUnknown_85C9F9B: @ 0x85C9F9B + .incbin "baserom_jp.gba", 0x5c9f9b, 0x26 + + .globl gUnknown_85C9FC1 +gUnknown_85C9FC1: @ 0x85C9FC1 + .incbin "baserom_jp.gba", 0x5c9fc1, 0x26 + + .globl gUnknown_85C9FE7 +gUnknown_85C9FE7: @ 0x85C9FE7 + .incbin "baserom_jp.gba", 0x5c9fe7, 0x10 + + .globl gUnknown_85C9FF7 +gUnknown_85C9FF7: @ 0x85C9FF7 + .incbin "baserom_jp.gba", 0x5c9ff7, 0x10 + + .globl gUnknown_85CA007 +gUnknown_85CA007: @ 0x85CA007 + .incbin "baserom_jp.gba", 0x5ca007, 0x11 + + .globl gUnknown_85CA018 +gUnknown_85CA018: @ 0x85CA018 + .incbin "baserom_jp.gba", 0x5ca018, 0x1e3 + + .globl gUnknown_85CA1FB +gUnknown_85CA1FB: @ 0x85CA1FB + .incbin "baserom_jp.gba", 0x5ca1fb, 0x15 + + .globl gUnknown_85CA210 +gUnknown_85CA210: @ 0x85CA210 + .incbin "baserom_jp.gba", 0x5ca210, 0xc + + .globl gUnknown_85CA21C +gUnknown_85CA21C: @ 0x85CA21C + .incbin "baserom_jp.gba", 0x5ca21c, 0xd + + .globl gUnknown_85CA229 +gUnknown_85CA229: @ 0x85CA229 + .incbin "baserom_jp.gba", 0x5ca229, 0xf + + .globl gUnknown_85CA238 +gUnknown_85CA238: @ 0x85CA238 + .incbin "baserom_jp.gba", 0x5ca238, 0xe + + .globl gUnknown_85CA246 +gUnknown_85CA246: @ 0x85CA246 + .incbin "baserom_jp.gba", 0x5ca246, 0x16 + + .globl gUnknown_85CA25C +gUnknown_85CA25C: @ 0x85CA25C + .incbin "baserom_jp.gba", 0x5ca25c, 0x17 + + .globl gUnknown_85CA273 +gUnknown_85CA273: @ 0x85CA273 + .incbin "baserom_jp.gba", 0x5ca273, 0x3 + + .globl gUnknown_85CA276 +gUnknown_85CA276: @ 0x85CA276 + .incbin "baserom_jp.gba", 0x5ca276, 0x1e + + .globl gUnknown_85CA294 +gUnknown_85CA294: @ 0x85CA294 + .incbin "baserom_jp.gba", 0x5ca294, 0x20 + + .globl gUnknown_85CA2B4 +gUnknown_85CA2B4: @ 0x85CA2B4 + .incbin "baserom_jp.gba", 0x5ca2b4, 0x18 + + .globl gUnknown_85CA2CC +gUnknown_85CA2CC: @ 0x85CA2CC + .incbin "baserom_jp.gba", 0x5ca2cc, 0xa3 + + .globl gUnknown_85CA36F +gUnknown_85CA36F: @ 0x85CA36F + .incbin "baserom_jp.gba", 0x5ca36f, 0x5 + + .globl gUnknown_85CA374 +gUnknown_85CA374: @ 0x85CA374 + .incbin "baserom_jp.gba", 0x5ca374, 0x5 + + .globl gUnknown_85CA379 +gUnknown_85CA379: @ 0x85CA379 + .incbin "baserom_jp.gba", 0x5ca379, 0x5 + + .globl gUnknown_85CA37E +gUnknown_85CA37E: @ 0x85CA37E + .incbin "baserom_jp.gba", 0x5ca37e, 0x5 + + .globl gUnknown_85CA383 +gUnknown_85CA383: @ 0x85CA383 + .incbin "baserom_jp.gba", 0x5ca383, 0x5 + + .globl gUnknown_85CA388 +gUnknown_85CA388: @ 0x85CA388 + .incbin "baserom_jp.gba", 0x5ca388, 0x3 + + .globl gUnknown_85CA38B +gUnknown_85CA38B: @ 0x85CA38B + .incbin "baserom_jp.gba", 0x5ca38b, 0x3 + + .globl gUnknown_85CA38E +gUnknown_85CA38E: @ 0x85CA38E + .incbin "baserom_jp.gba", 0x5ca38e, 0x4 + + .globl gUnknown_85CA392 +gUnknown_85CA392: @ 0x85CA392 + .incbin "baserom_jp.gba", 0x5ca392, 0x9 + + .globl gUnknown_85CA39B +gUnknown_85CA39B: @ 0x85CA39B + .incbin "baserom_jp.gba", 0x5ca39b, 0x5 + + .globl gUnknown_85CA3A0 +gUnknown_85CA3A0: @ 0x85CA3A0 + .incbin "baserom_jp.gba", 0x5ca3a0, 0x5 + + .globl gUnknown_85CA3A5 +gUnknown_85CA3A5: @ 0x85CA3A5 + .incbin "baserom_jp.gba", 0x5ca3a5, 0x6 + + .globl gUnknown_85CA3AB +gUnknown_85CA3AB: @ 0x85CA3AB + .incbin "baserom_jp.gba", 0x5ca3ab, 0x5 + + .globl gUnknown_85CA3B0 +gUnknown_85CA3B0: @ 0x85CA3B0 + .incbin "baserom_jp.gba", 0x5ca3b0, 0x5 + + .globl gUnknown_85CA3B5 +gUnknown_85CA3B5: @ 0x85CA3B5 + .incbin "baserom_jp.gba", 0x5ca3b5, 0x6 + + .globl gUnknown_85CA3BB +gUnknown_85CA3BB: @ 0x85CA3BB + .incbin "baserom_jp.gba", 0x5ca3bb, 0xb + + .globl gUnknown_85CA3C6 +gUnknown_85CA3C6: @ 0x85CA3C6 + .incbin "baserom_jp.gba", 0x5ca3c6, 0x9 + + .globl gUnknown_85CA3CF +gUnknown_85CA3CF: @ 0x85CA3CF + .incbin "baserom_jp.gba", 0x5ca3cf, 0x9 + + .globl gUnknown_85CA3D8 +gUnknown_85CA3D8: @ 0x85CA3D8 + .incbin "baserom_jp.gba", 0x5ca3d8, 0x1 + + .globl gUnknown_85CA3D9 +gUnknown_85CA3D9: @ 0x85CA3D9 + .incbin "baserom_jp.gba", 0x5ca3d9, 0x6 + + .globl gUnknown_85CA3DF +gUnknown_85CA3DF: @ 0x85CA3DF + .incbin "baserom_jp.gba", 0x5ca3df, 0x5 + + .globl gUnknown_85CA3E4 +gUnknown_85CA3E4: @ 0x85CA3E4 + .incbin "baserom_jp.gba", 0x5ca3e4, 0xa + + .globl gUnknown_85CA3EE +gUnknown_85CA3EE: @ 0x85CA3EE + .incbin "baserom_jp.gba", 0x5ca3ee, 0xa + + .globl gUnknown_85CA3F8 +gUnknown_85CA3F8: @ 0x85CA3F8 + .incbin "baserom_jp.gba", 0x5ca3f8, 0x7 + + .globl gUnknown_85CA3FF +gUnknown_85CA3FF: @ 0x85CA3FF + .incbin "baserom_jp.gba", 0x5ca3ff, 0x8 + + .globl gUnknown_85CA407 +gUnknown_85CA407: @ 0x85CA407 + .incbin "baserom_jp.gba", 0x5ca407, 0x5 + + .globl gUnknown_85CA40C +gUnknown_85CA40C: @ 0x85CA40C + .incbin "baserom_jp.gba", 0x5ca40c, 0x19 + + .globl gUnknown_85CA425 +gUnknown_85CA425: @ 0x85CA425 + .incbin "baserom_jp.gba", 0x5ca425, 0x23 + + .globl gUnknown_85CA448 +gUnknown_85CA448: @ 0x85CA448 + .incbin "baserom_jp.gba", 0x5ca448, 0x23 + + .globl gUnknown_85CA46B +gUnknown_85CA46B: @ 0x85CA46B + .incbin "baserom_jp.gba", 0x5ca46b, 0x1c + + .globl gUnknown_85CA487 +gUnknown_85CA487: @ 0x85CA487 + .incbin "baserom_jp.gba", 0x5ca487, 0x1f + + .globl gUnknown_85CA4A6 +gUnknown_85CA4A6: @ 0x85CA4A6 + .incbin "baserom_jp.gba", 0x5ca4a6, 0x26 + + .globl gUnknown_85CA4CC +gUnknown_85CA4CC: @ 0x85CA4CC + .incbin "baserom_jp.gba", 0x5ca4cc, 0x26 + + .globl gUnknown_85CA4F2 +gUnknown_85CA4F2: @ 0x85CA4F2 + .incbin "baserom_jp.gba", 0x5ca4f2, 0x20 + + .globl gUnknown_85CA512 +gUnknown_85CA512: @ 0x85CA512 + .incbin "baserom_jp.gba", 0x5ca512, 0x29 + + .globl gUnknown_85CA53B +gUnknown_85CA53B: @ 0x85CA53B + .incbin "baserom_jp.gba", 0x5ca53b, 0x28 + + .globl gUnknown_85CA563 +gUnknown_85CA563: @ 0x85CA563 + .incbin "baserom_jp.gba", 0x5ca563, 0xd + + .globl gUnknown_85CA570 +gUnknown_85CA570: @ 0x85CA570 + .incbin "baserom_jp.gba", 0x5ca570, 0x23 + + .globl gUnknown_85CA593 +gUnknown_85CA593: @ 0x85CA593 + .incbin "baserom_jp.gba", 0x5ca593, 0x23 + + .globl gUnknown_85CA5B6 +gUnknown_85CA5B6: @ 0x85CA5B6 + .incbin "baserom_jp.gba", 0x5ca5b6, 0x1f + + .globl gUnknown_85CA5D5 +gUnknown_85CA5D5: @ 0x85CA5D5 + .incbin "baserom_jp.gba", 0x5ca5d5, 0x23 + + .globl gUnknown_85CA5F8 +gUnknown_85CA5F8: @ 0x85CA5F8 + .incbin "baserom_jp.gba", 0x5ca5f8, 0x1e + + .globl gUnknown_85CA616 +gUnknown_85CA616: @ 0x85CA616 + .incbin "baserom_jp.gba", 0x5ca616, 0x1f + + .globl gUnknown_85CA635 +gUnknown_85CA635: @ 0x85CA635 + .incbin "baserom_jp.gba", 0x5ca635, 0x1f + + .globl gUnknown_85CA654 +gUnknown_85CA654: @ 0x85CA654 + .incbin "baserom_jp.gba", 0x5ca654, 0x4 + + .globl gUnknown_85CA658 +gUnknown_85CA658: @ 0x85CA658 + .incbin "baserom_jp.gba", 0x5ca658, 0x1e + + .globl gUnknown_85CA676 +gUnknown_85CA676: @ 0x85CA676 + .incbin "baserom_jp.gba", 0x5ca676, 0x12 + + .globl gUnknown_85CA688 +gUnknown_85CA688: @ 0x85CA688 + .incbin "baserom_jp.gba", 0x5ca688, 0x1c + + .globl gUnknown_85CA6A4 +gUnknown_85CA6A4: @ 0x85CA6A4 + .incbin "baserom_jp.gba", 0x5ca6a4, 0x22 + + .globl gUnknown_85CA6C6 +gUnknown_85CA6C6: @ 0x85CA6C6 + .incbin "baserom_jp.gba", 0x5ca6c6, 0x45 + + .globl gUnknown_85CA70B +gUnknown_85CA70B: @ 0x85CA70B + .incbin "baserom_jp.gba", 0x5ca70b, 0x34 + + .globl gUnknown_85CA73F +gUnknown_85CA73F: @ 0x85CA73F + .incbin "baserom_jp.gba", 0x5ca73f, 0x3 + + .globl gUnknown_85CA742 +gUnknown_85CA742: @ 0x85CA742 + .incbin "baserom_jp.gba", 0x5ca742, 0x3 + + .globl gUnknown_85CA745 +gUnknown_85CA745: @ 0x85CA745 + .incbin "baserom_jp.gba", 0x5ca745, 0xb + + .globl gUnknown_85CA750 +gUnknown_85CA750: @ 0x85CA750 + .incbin "baserom_jp.gba", 0x5ca750, 0xc + + .globl gUnknown_85CA75C +gUnknown_85CA75C: @ 0x85CA75C + .incbin "baserom_jp.gba", 0x5ca75c, 0xc + + .globl gUnknown_85CA768 +gUnknown_85CA768: @ 0x85CA768 + .incbin "baserom_jp.gba", 0x5ca768, 0xe + + .globl gUnknown_85CA776 +gUnknown_85CA776: @ 0x85CA776 + .incbin "baserom_jp.gba", 0x5ca776, 0x23 + + .globl gUnknown_85CA799 +gUnknown_85CA799: @ 0x85CA799 + .incbin "baserom_jp.gba", 0x5ca799, 0x40 + + .globl gUnknown_85CA7D9 +gUnknown_85CA7D9: @ 0x85CA7D9 + .incbin "baserom_jp.gba", 0x5ca7d9, 0x19 + + .globl gUnknown_85CA7F2 +gUnknown_85CA7F2: @ 0x85CA7F2 + .incbin "baserom_jp.gba", 0x5ca7f2, 0x20 + + .globl gUnknown_85CA812 +gUnknown_85CA812: @ 0x85CA812 + .incbin "baserom_jp.gba", 0x5ca812, 0x17 + + .globl gUnknown_85CA829 +gUnknown_85CA829: @ 0x85CA829 + .incbin "baserom_jp.gba", 0x5ca829, 0xc + + .globl gUnknown_85CA835 +gUnknown_85CA835: @ 0x85CA835 + .incbin "baserom_jp.gba", 0x5ca835, 0xd + + .globl gUnknown_85CA842 +gUnknown_85CA842: @ 0x85CA842 + .incbin "baserom_jp.gba", 0x5ca842, 0x10 + + .globl gUnknown_85CA852 +gUnknown_85CA852: @ 0x85CA852 + .incbin "baserom_jp.gba", 0x5ca852, 0x15 + + .globl gUnknown_85CA867 +gUnknown_85CA867: @ 0x85CA867 + .incbin "baserom_jp.gba", 0x5ca867, 0x13 + + .globl gUnknown_85CA87A +gUnknown_85CA87A: @ 0x85CA87A + .incbin "baserom_jp.gba", 0x5ca87a, 0x3b + + .globl gUnknown_85CA8B5 +gUnknown_85CA8B5: @ 0x85CA8B5 + .incbin "baserom_jp.gba", 0x5ca8b5, 0x12 + + .globl gUnknown_85CA8C7 +gUnknown_85CA8C7: @ 0x85CA8C7 + .incbin "baserom_jp.gba", 0x5ca8c7, 0xa + + .globl gUnknown_85CA8D1 +gUnknown_85CA8D1: @ 0x85CA8D1 + .incbin "baserom_jp.gba", 0x5ca8d1, 0x47 + + .globl gUnknown_85CA918 +gUnknown_85CA918: @ 0x85CA918 + .incbin "baserom_jp.gba", 0x5ca918, 0xd + + .globl gUnknown_85CA925 +gUnknown_85CA925: @ 0x85CA925 + .incbin "baserom_jp.gba", 0x5ca925, 0x13 + + .globl gUnknown_85CA938 +gUnknown_85CA938: @ 0x85CA938 + .incbin "baserom_jp.gba", 0x5ca938, 0x11 + + .globl gUnknown_85CA949 +gUnknown_85CA949: @ 0x85CA949 + .incbin "baserom_jp.gba", 0x5ca949, 0x2d + + .globl gUnknown_85CA976 +gUnknown_85CA976: @ 0x85CA976 + .incbin "baserom_jp.gba", 0x5ca976, 0x12 + + .globl gUnknown_85CA988 +gUnknown_85CA988: @ 0x85CA988 + .incbin "baserom_jp.gba", 0x5ca988, 0x12 + + .globl gUnknown_85CA99A +gUnknown_85CA99A: @ 0x85CA99A + .incbin "baserom_jp.gba", 0x5ca99a, 0x19 + + .globl gUnknown_85CA9B3 +gUnknown_85CA9B3: @ 0x85CA9B3 + .incbin "baserom_jp.gba", 0x5ca9b3, 0xf + + .globl gUnknown_85CA9C2 +gUnknown_85CA9C2: @ 0x85CA9C2 + .incbin "baserom_jp.gba", 0x5ca9c2, 0x1c + + .globl gUnknown_85CA9DE +gUnknown_85CA9DE: @ 0x85CA9DE + .incbin "baserom_jp.gba", 0x5ca9de, 0x3 + + .globl gUnknown_85CA9E1 +gUnknown_85CA9E1: @ 0x85CA9E1 + .incbin "baserom_jp.gba", 0x5ca9e1, 0x3 + + .globl gUnknown_85CA9E4 +gUnknown_85CA9E4: @ 0x85CA9E4 + .incbin "baserom_jp.gba", 0x5ca9e4, 0x4 + + .globl gUnknown_85CA9E8 +gUnknown_85CA9E8: @ 0x85CA9E8 + .incbin "baserom_jp.gba", 0x5ca9e8, 0x4 + + .globl gUnknown_85CA9EC +gUnknown_85CA9EC: @ 0x85CA9EC + .incbin "baserom_jp.gba", 0x5ca9ec, 0x4 + + .globl gUnknown_85CA9F0 +gUnknown_85CA9F0: @ 0x85CA9F0 + .incbin "baserom_jp.gba", 0x5ca9f0, 0x3 + + .globl gUnknown_85CA9F3 +gUnknown_85CA9F3: @ 0x85CA9F3 + .incbin "baserom_jp.gba", 0x5ca9f3, 0x4 + + .globl gUnknown_85CA9F7 +gUnknown_85CA9F7: @ 0x85CA9F7 + .incbin "baserom_jp.gba", 0x5ca9f7, 0xe1 + + .globl gUnknown_85CAAD8 +gUnknown_85CAAD8: @ 0x85CAAD8 + .incbin "baserom_jp.gba", 0x5caad8, 0x3 + + .globl gUnknown_85CAADB +gUnknown_85CAADB: @ 0x85CAADB + .incbin "baserom_jp.gba", 0x5caadb, 0x32 + + .globl gUnknown_85CAB0D +gUnknown_85CAB0D: @ 0x85CAB0D + .incbin "baserom_jp.gba", 0x5cab0d, 0x6 + + .globl gUnknown_85CAB13 +gUnknown_85CAB13: @ 0x85CAB13 + .incbin "baserom_jp.gba", 0x5cab13, 0x171 + + .globl gUnknown_85CAC84 +gUnknown_85CAC84: @ 0x85CAC84 + .incbin "baserom_jp.gba", 0x5cac84, 0x6 + + .globl gUnknown_85CAC8A +gUnknown_85CAC8A: @ 0x85CAC8A + .incbin "baserom_jp.gba", 0x5cac8a, 0x6 + + .globl gUnknown_85CAC90 +gUnknown_85CAC90: @ 0x85CAC90 + .incbin "baserom_jp.gba", 0x5cac90, 0x5 + + .globl gUnknown_85CAC95 +gUnknown_85CAC95: @ 0x85CAC95 + .incbin "baserom_jp.gba", 0x5cac95, 0x5 + + .globl gUnknown_85CAC9A +gUnknown_85CAC9A: @ 0x85CAC9A + .incbin "baserom_jp.gba", 0x5cac9a, 0x52 + + .globl gUnknown_85CACEC +gUnknown_85CACEC: @ 0x85CACEC + .incbin "baserom_jp.gba", 0x5cacec, 0x9 + + .globl gUnknown_85CACF5 +gUnknown_85CACF5: @ 0x85CACF5 + .incbin "baserom_jp.gba", 0x5cacf5, 0x9 + + .globl gUnknown_85CACFE +gUnknown_85CACFE: @ 0x85CACFE + .incbin "baserom_jp.gba", 0x5cacfe, 0x8 + + .globl gUnknown_85CAD06 +gUnknown_85CAD06: @ 0x85CAD06 + .incbin "baserom_jp.gba", 0x5cad06, 0x7 + + .globl gUnknown_85CAD0D +gUnknown_85CAD0D: @ 0x85CAD0D + .incbin "baserom_jp.gba", 0x5cad0d, 0xa1 + + .globl gUnknown_85CADAE +gUnknown_85CADAE: @ 0x85CADAE + .incbin "baserom_jp.gba", 0x5cadae, 0x4 + + .globl gUnknown_85CADB2 +gUnknown_85CADB2: @ 0x85CADB2 + .incbin "baserom_jp.gba", 0x5cadb2, 0x5 + + .globl gUnknown_85CADB7 +gUnknown_85CADB7: @ 0x85CADB7 + .incbin "baserom_jp.gba", 0x5cadb7, 0x4 + + .globl gUnknown_85CADBB +gUnknown_85CADBB: @ 0x85CADBB + .incbin "baserom_jp.gba", 0x5cadbb, 0xb + + .globl gUnknown_85CADC6 +gUnknown_85CADC6: @ 0x85CADC6 + .incbin "baserom_jp.gba", 0x5cadc6, 0x5 + + .globl gUnknown_85CADCB +gUnknown_85CADCB: @ 0x85CADCB + .incbin "baserom_jp.gba", 0x5cadcb, 0x5 + + .globl gUnknown_85CADD0 +gUnknown_85CADD0: @ 0x85CADD0 + .incbin "baserom_jp.gba", 0x5cadd0, 0x23e + + .globl gUnknown_85CB00E +gUnknown_85CB00E: @ 0x85CB00E + .incbin "baserom_jp.gba", 0x5cb00e, 0xa + + .globl gUnknown_85CB018 +gUnknown_85CB018: @ 0x85CB018 + .incbin "baserom_jp.gba", 0x5cb018, 0x9 + + .globl gUnknown_85CB021 +gUnknown_85CB021: @ 0x85CB021 + .incbin "baserom_jp.gba", 0x5cb021, 0x4 + + .globl gUnknown_85CB025 +gUnknown_85CB025: @ 0x85CB025 + .incbin "baserom_jp.gba", 0x5cb025, 0x5 + + .globl gUnknown_85CB02A +gUnknown_85CB02A: @ 0x85CB02A + .incbin "baserom_jp.gba", 0x5cb02a, 0x7 + + .globl gUnknown_85CB031 +gUnknown_85CB031: @ 0x85CB031 + .incbin "baserom_jp.gba", 0x5cb031, 0x7 + + .globl gUnknown_85CB038 +gUnknown_85CB038: @ 0x85CB038 + .incbin "baserom_jp.gba", 0x5cb038, 0x4 + + .globl gUnknown_85CB03C +gUnknown_85CB03C: @ 0x85CB03C + .incbin "baserom_jp.gba", 0x5cb03c, 0x83 + + .globl gUnknown_85CB0BF +gUnknown_85CB0BF: @ 0x85CB0BF + .incbin "baserom_jp.gba", 0x5cb0bf, 0x9 + + .globl gUnknown_85CB0C8 +gUnknown_85CB0C8: @ 0x85CB0C8 + .incbin "baserom_jp.gba", 0x5cb0c8, 0xf1 + + .globl gUnknown_85CB1B9 +gUnknown_85CB1B9: @ 0x85CB1B9 + .incbin "baserom_jp.gba", 0x5cb1b9, 0x37b + + .globl gUnknown_85CB534 +gUnknown_85CB534: @ 0x85CB534 + .incbin "baserom_jp.gba", 0x5cb534, 0x28 + + .globl gUnknown_85CB55C +gUnknown_85CB55C: @ 0x85CB55C + .incbin "baserom_jp.gba", 0x5cb55c, 0x28 + + .globl gUnknown_85CB584 +gUnknown_85CB584: @ 0x85CB584 + .incbin "baserom_jp.gba", 0x5cb584, 0x58 + + .globl gUnknown_85CB5DC +gUnknown_85CB5DC: @ 0x85CB5DC + .incbin "baserom_jp.gba", 0x5cb5dc, 0xd2 + + .globl gUnknown_85CB6AE +gUnknown_85CB6AE: @ 0x85CB6AE + .incbin "baserom_jp.gba", 0x5cb6ae, 0xa + + .globl gUnknown_85CB6B8 +gUnknown_85CB6B8: @ 0x85CB6B8 + .incbin "baserom_jp.gba", 0x5cb6b8, 0xea + + .globl gUnknown_85CB7A2 +gUnknown_85CB7A2: @ 0x85CB7A2 + .incbin "baserom_jp.gba", 0x5cb7a2, 0x6 + + .globl gUnknown_85CB7A8 +gUnknown_85CB7A8: @ 0x85CB7A8 + .incbin "baserom_jp.gba", 0x5cb7a8, 0x1e + + .globl gUnknown_85CB7C6 +gUnknown_85CB7C6: @ 0x85CB7C6 + .incbin "baserom_jp.gba", 0x5cb7c6, 0x8 + + .globl gUnknown_85CB7CE +gUnknown_85CB7CE: @ 0x85CB7CE + .incbin "baserom_jp.gba", 0x5cb7ce, 0x8 + + .globl gUnknown_85CB7D6 +gUnknown_85CB7D6: @ 0x85CB7D6 + .incbin "baserom_jp.gba", 0x5cb7d6, 0x14 + + .globl gUnknown_85CB7EA +gUnknown_85CB7EA: @ 0x85CB7EA + .incbin "baserom_jp.gba", 0x5cb7ea, 0x14 + + .globl gUnknown_85CB7FE +gUnknown_85CB7FE: @ 0x85CB7FE + .incbin "baserom_jp.gba", 0x5cb7fe, 0xa + + .globl gUnknown_85CB808 +gUnknown_85CB808: @ 0x85CB808 + .incbin "baserom_jp.gba", 0x5cb808, 0x13 + + .globl gUnknown_85CB81B +gUnknown_85CB81B: @ 0x85CB81B + .incbin "baserom_jp.gba", 0x5cb81b, 0x6 + + .globl gUnknown_85CB821 +gUnknown_85CB821: @ 0x85CB821 + .incbin "baserom_jp.gba", 0x5cb821, 0x242 + + .globl gUnknown_85CBA63 +gUnknown_85CBA63: @ 0x85CBA63 + .incbin "baserom_jp.gba", 0x5cba63, 0xe + + .globl gUnknown_85CBA71 +gUnknown_85CBA71: @ 0x85CBA71 + .incbin "baserom_jp.gba", 0x5cba71, 0x36 + + .globl gUnknown_85CBAA7 +gUnknown_85CBAA7: @ 0x85CBAA7 + .incbin "baserom_jp.gba", 0x5cbaa7, 0xf + + .globl gUnknown_85CBAB6 +gUnknown_85CBAB6: @ 0x85CBAB6 + .incbin "baserom_jp.gba", 0x5cbab6, 0x65 + + .globl gUnknown_85CBB1B +gUnknown_85CBB1B: @ 0x85CBB1B + .incbin "baserom_jp.gba", 0x5cbb1b, 0x14 + + .globl gUnknown_85CBB2F +gUnknown_85CBB2F: @ 0x85CBB2F + .incbin "baserom_jp.gba", 0x5cbb2f, 0x1f + + .globl gUnknown_85CBB4E +gUnknown_85CBB4E: @ 0x85CBB4E + .incbin "baserom_jp.gba", 0x5cbb4e, 0x114 + + .globl gUnknown_85CBC62 +gUnknown_85CBC62: @ 0x85CBC62 + .incbin "baserom_jp.gba", 0x5cbc62, 0xb + + .globl gUnknown_85CBC6D +gUnknown_85CBC6D: @ 0x85CBC6D + .incbin "baserom_jp.gba", 0x5cbc6d, 0xe + + .globl gUnknown_85CBC7B +gUnknown_85CBC7B: @ 0x85CBC7B + .incbin "baserom_jp.gba", 0x5cbc7b, 0xa + + .globl gUnknown_85CBC85 +gUnknown_85CBC85: @ 0x85CBC85 + .incbin "baserom_jp.gba", 0x5cbc85, 0x26 + + .globl gUnknown_85CBCAB +gUnknown_85CBCAB: @ 0x85CBCAB + .incbin "baserom_jp.gba", 0x5cbcab, 0xc + + .globl gUnknown_85CBCB7 +gUnknown_85CBCB7: @ 0x85CBCB7 + .incbin "baserom_jp.gba", 0x5cbcb7, 0x19 + + .globl gUnknown_85CBCD0 +gUnknown_85CBCD0: @ 0x85CBCD0 + .incbin "baserom_jp.gba", 0x5cbcd0, 0x10 + + .globl gUnknown_85CBCE0 +gUnknown_85CBCE0: @ 0x85CBCE0 + .incbin "baserom_jp.gba", 0x5cbce0, 0xf + + .globl gUnknown_85CBCEF +gUnknown_85CBCEF: @ 0x85CBCEF + .incbin "baserom_jp.gba", 0x5cbcef, 0x23 + + .globl gUnknown_85CBD12 +gUnknown_85CBD12: @ 0x85CBD12 + .incbin "baserom_jp.gba", 0x5cbd12, 0x2b + + .globl gUnknown_85CBD3D +gUnknown_85CBD3D: @ 0x85CBD3D + .incbin "baserom_jp.gba", 0x5cbd3d, 0xd + + .globl gUnknown_85CBD4A +gUnknown_85CBD4A: @ 0x85CBD4A + .incbin "baserom_jp.gba", 0x5cbd4a, 0xd + + .globl gUnknown_85CBD57 +gUnknown_85CBD57: @ 0x85CBD57 + .incbin "baserom_jp.gba", 0x5cbd57, 0x14 + + .globl gUnknown_85CBD6B +gUnknown_85CBD6B: @ 0x85CBD6B + .incbin "baserom_jp.gba", 0x5cbd6b, 0x47 + + .globl gUnknown_85CBDB2 +gUnknown_85CBDB2: @ 0x85CBDB2 + .incbin "baserom_jp.gba", 0x5cbdb2, 0x45 + + .globl gUnknown_85CBDF7 +gUnknown_85CBDF7: @ 0x85CBDF7 + .incbin "baserom_jp.gba", 0x5cbdf7, 0x29 + + .globl gUnknown_85CBE20 +gUnknown_85CBE20: @ 0x85CBE20 + .incbin "baserom_jp.gba", 0x5cbe20, 0x30 + + .globl gUnknown_85CBE50 +gUnknown_85CBE50: @ 0x85CBE50 + .incbin "baserom_jp.gba", 0x5cbe50, 0x40 + + .globl gUnknown_85CBE90 +gUnknown_85CBE90: @ 0x85CBE90 + .incbin "baserom_jp.gba", 0x5cbe90, 0x2a + + .globl gUnknown_85CBEBA +gUnknown_85CBEBA: @ 0x85CBEBA + .incbin "baserom_jp.gba", 0x5cbeba, 0x7 + + .globl gUnknown_85CBEC1 +gUnknown_85CBEC1: @ 0x85CBEC1 + .incbin "baserom_jp.gba", 0x5cbec1, 0x6 + + .globl gUnknown_85CBEC7 +gUnknown_85CBEC7: @ 0x85CBEC7 + .incbin "baserom_jp.gba", 0x5cbec7, 0x4 + + .globl gUnknown_85CBECB +gUnknown_85CBECB: @ 0x85CBECB + .incbin "baserom_jp.gba", 0x5cbecb, 0x1e + + .globl gUnknown_85CBEE9 +gUnknown_85CBEE9: @ 0x85CBEE9 + .incbin "baserom_jp.gba", 0x5cbee9, 0x10 + + .globl gUnknown_85CBEF9 +gUnknown_85CBEF9: @ 0x85CBEF9 + .incbin "baserom_jp.gba", 0x5cbef9, 0x10 + + .globl gUnknown_85CBF09 +gUnknown_85CBF09: @ 0x85CBF09 + .incbin "baserom_jp.gba", 0x5cbf09, 0x13 + + .globl gUnknown_85CBF1C +gUnknown_85CBF1C: @ 0x85CBF1C + .incbin "baserom_jp.gba", 0x5cbf1c, 0x27 + + .globl gUnknown_85CBF43 +gUnknown_85CBF43: @ 0x85CBF43 + .incbin "baserom_jp.gba", 0x5cbf43, 0xf + + .globl gUnknown_85CBF52 +gUnknown_85CBF52: @ 0x85CBF52 + .incbin "baserom_jp.gba", 0x5cbf52, 0x17 + + .globl gUnknown_85CBF69 +gUnknown_85CBF69: @ 0x85CBF69 + .incbin "baserom_jp.gba", 0x5cbf69, 0x1d + + .globl gUnknown_85CBF86 +gUnknown_85CBF86: @ 0x85CBF86 + .incbin "baserom_jp.gba", 0x5cbf86, 0x27 + + .globl gUnknown_85CBFAD +gUnknown_85CBFAD: @ 0x85CBFAD + .incbin "baserom_jp.gba", 0x5cbfad, 0x5 + + .globl gUnknown_85CBFB2 +gUnknown_85CBFB2: @ 0x85CBFB2 + .incbin "baserom_jp.gba", 0x5cbfb2, 0x6 + + .globl gUnknown_85CBFB8 +gUnknown_85CBFB8: @ 0x85CBFB8 + .incbin "baserom_jp.gba", 0x5cbfb8, 0x3 + + .globl gUnknown_85CBFBB +gUnknown_85CBFBB: @ 0x85CBFBB + .incbin "baserom_jp.gba", 0x5cbfbb, 0x5 + + .globl gUnknown_85CBFC0 +gUnknown_85CBFC0: @ 0x85CBFC0 + .incbin "baserom_jp.gba", 0x5cbfc0, 0x5 + + .globl gUnknown_85CBFC5 +gUnknown_85CBFC5: @ 0x85CBFC5 + .incbin "baserom_jp.gba", 0x5cbfc5, 0x5 + + .globl gUnknown_85CBFCA +gUnknown_85CBFCA: @ 0x85CBFCA + .incbin "baserom_jp.gba", 0x5cbfca, 0x4 + + .globl gUnknown_85CBFCE +gUnknown_85CBFCE: @ 0x85CBFCE + .incbin "baserom_jp.gba", 0x5cbfce, 0x5 + + .globl gUnknown_85CBFD3 +gUnknown_85CBFD3: @ 0x85CBFD3 + .incbin "baserom_jp.gba", 0x5cbfd3, 0x3 + + .globl gUnknown_85CBFD6 +gUnknown_85CBFD6: @ 0x85CBFD6 + .incbin "baserom_jp.gba", 0x5cbfd6, 0x3 + + .globl gUnknown_85CBFD9 +gUnknown_85CBFD9: @ 0x85CBFD9 + .incbin "baserom_jp.gba", 0x5cbfd9, 0x3 + + .globl gUnknown_85CBFDC +gUnknown_85CBFDC: @ 0x85CBFDC + .incbin "baserom_jp.gba", 0x5cbfdc, 0x3 + + .globl gUnknown_85CBFDF +gUnknown_85CBFDF: @ 0x85CBFDF + .incbin "baserom_jp.gba", 0x5cbfdf, 0x4 + + .globl gUnknown_85CBFE3 +gUnknown_85CBFE3: @ 0x85CBFE3 + .incbin "baserom_jp.gba", 0x5cbfe3, 0x5 + + .globl gUnknown_85CBFE8 +gUnknown_85CBFE8: @ 0x85CBFE8 + .incbin "baserom_jp.gba", 0x5cbfe8, 0x4 + + .globl gUnknown_85CBFEC +gUnknown_85CBFEC: @ 0x85CBFEC + .incbin "baserom_jp.gba", 0x5cbfec, 0x323 + + .globl gUnknown_85CC30F +gUnknown_85CC30F: @ 0x85CC30F + .incbin "baserom_jp.gba", 0x5cc30f, 0xc + + .globl gUnknown_85CC31B +gUnknown_85CC31B: @ 0x85CC31B + .incbin "baserom_jp.gba", 0x5cc31b, 0x4 + + .globl gUnknown_85CC31F +gUnknown_85CC31F: @ 0x85CC31F + .incbin "baserom_jp.gba", 0x5cc31f, 0x4 + + .globl gUnknown_85CC323 +gUnknown_85CC323: @ 0x85CC323 + .incbin "baserom_jp.gba", 0x5cc323, 0x6 + + .globl gUnknown_85CC329 +gUnknown_85CC329: @ 0x85CC329 + .incbin "baserom_jp.gba", 0x5cc329, 0x6 + + .globl gUnknown_85CC32F +gUnknown_85CC32F: @ 0x85CC32F + .incbin "baserom_jp.gba", 0x5cc32f, 0x2 + + .globl gUnknown_85CC331 +gUnknown_85CC331: @ 0x85CC331 + .incbin "baserom_jp.gba", 0x5cc331, 0x8 + + .globl gUnknown_85CC339 +gUnknown_85CC339: @ 0x85CC339 + .incbin "baserom_jp.gba", 0x5cc339, 0x3 + + .globl gUnknown_85CC33C +gUnknown_85CC33C: @ 0x85CC33C + .incbin "baserom_jp.gba", 0x5cc33c, 0x5 + + .globl gUnknown_85CC341 +gUnknown_85CC341: @ 0x85CC341 + .incbin "baserom_jp.gba", 0x5cc341, 0xf + + .globl gUnknown_85CC350 +gUnknown_85CC350: @ 0x85CC350 + .incbin "baserom_jp.gba", 0x5cc350, 0xa + + .globl gUnknown_85CC35A +gUnknown_85CC35A: @ 0x85CC35A + .incbin "baserom_jp.gba", 0x5cc35a, 0x1f + + .globl gUnknown_85CC379 +gUnknown_85CC379: @ 0x85CC379 + .incbin "baserom_jp.gba", 0x5cc379, 0xa + + .globl gUnknown_85CC383 +gUnknown_85CC383: @ 0x85CC383 + .incbin "baserom_jp.gba", 0x5cc383, 0xd + + .globl gUnknown_85CC390 +gUnknown_85CC390: @ 0x85CC390 + .incbin "baserom_jp.gba", 0x5cc390, 0xe + + .globl gUnknown_85CC39E +gUnknown_85CC39E: @ 0x85CC39E + .incbin "baserom_jp.gba", 0x5cc39e, 0x9 + + .globl gUnknown_85CC3A7 +gUnknown_85CC3A7: @ 0x85CC3A7 + .incbin "baserom_jp.gba", 0x5cc3a7, 0x18 + + .globl gUnknown_85CC3BF +gUnknown_85CC3BF: @ 0x85CC3BF + .incbin "baserom_jp.gba", 0x5cc3bf, 0x10 + + .globl gUnknown_85CC3CF +gUnknown_85CC3CF: @ 0x85CC3CF + .incbin "baserom_jp.gba", 0x5cc3cf, 0xa + + .globl gUnknown_85CC3D9 +gUnknown_85CC3D9: @ 0x85CC3D9 + .incbin "baserom_jp.gba", 0x5cc3d9, 0x11 + + .globl gUnknown_85CC3EA +gUnknown_85CC3EA: @ 0x85CC3EA + .incbin "baserom_jp.gba", 0x5cc3ea, 0xe + + .globl gUnknown_85CC3F8 +gUnknown_85CC3F8: @ 0x85CC3F8 + .incbin "baserom_jp.gba", 0x5cc3f8, 0xb + + .globl gUnknown_85CC403 +gUnknown_85CC403: @ 0x85CC403 + .incbin "baserom_jp.gba", 0x5cc403, 0x15 + + .globl gUnknown_85CC418 +gUnknown_85CC418: @ 0x85CC418 + .incbin "baserom_jp.gba", 0x5cc418, 0x67 + + .globl gUnknown_85CC47F +gUnknown_85CC47F: @ 0x85CC47F + .incbin "baserom_jp.gba", 0x5cc47f, 0x7 + + .globl gUnknown_85CC486 +gUnknown_85CC486: @ 0x85CC486 + .incbin "baserom_jp.gba", 0x5cc486, 0x6 + + .globl gUnknown_85CC48C +gUnknown_85CC48C: @ 0x85CC48C + .incbin "baserom_jp.gba", 0x5cc48c, 0x7 + + .globl gUnknown_85CC493 +gUnknown_85CC493: @ 0x85CC493 + .incbin "baserom_jp.gba", 0x5cc493, 0x4 + + .globl gUnknown_85CC497 +gUnknown_85CC497: @ 0x85CC497 + .incbin "baserom_jp.gba", 0x5cc497, 0x6 + + .globl gUnknown_85CC49D +gUnknown_85CC49D: @ 0x85CC49D + .incbin "baserom_jp.gba", 0x5cc49d, 0x3 + + .globl gUnknown_85CC4A0 +gUnknown_85CC4A0: @ 0x85CC4A0 + .incbin "baserom_jp.gba", 0x5cc4a0, 0x3 + + .globl gUnknown_85CC4A3 +gUnknown_85CC4A3: @ 0x85CC4A3 + .incbin "baserom_jp.gba", 0x5cc4a3, 0xb + + .globl gUnknown_85CC4AE +gUnknown_85CC4AE: @ 0x85CC4AE + .incbin "baserom_jp.gba", 0x5cc4ae, 0xc + + .globl gUnknown_85CC4BA +gUnknown_85CC4BA: @ 0x85CC4BA + .incbin "baserom_jp.gba", 0x5cc4ba, 0xc + + .globl gUnknown_85CC4C6 +gUnknown_85CC4C6: @ 0x85CC4C6 + .incbin "baserom_jp.gba", 0x5cc4c6, 0xf + + .globl gUnknown_85CC4D5 +gUnknown_85CC4D5: @ 0x85CC4D5 + .incbin "baserom_jp.gba", 0x5cc4d5, 0xb + + .globl gUnknown_85CC4E0 +gUnknown_85CC4E0: @ 0x85CC4E0 + .incbin "baserom_jp.gba", 0x5cc4e0, 0x4 + + .globl gUnknown_85CC4E4 +gUnknown_85CC4E4: @ 0x85CC4E4 + .incbin "baserom_jp.gba", 0x5cc4e4, 0x6 + + .globl gUnknown_85CC4EA +gUnknown_85CC4EA: @ 0x85CC4EA + .incbin "baserom_jp.gba", 0x5cc4ea, 0x4 + + .globl gUnknown_85CC4EE +gUnknown_85CC4EE: @ 0x85CC4EE + .incbin "baserom_jp.gba", 0x5cc4ee, 0x2 + + .globl gUnknown_85CC4F0 +gUnknown_85CC4F0: @ 0x85CC4F0 + .incbin "baserom_jp.gba", 0x5cc4f0, 0x5 + + .globl gUnknown_85CC4F5 +gUnknown_85CC4F5: @ 0x85CC4F5 + .incbin "baserom_jp.gba", 0x5cc4f5, 0x5 + + .globl gUnknown_85CC4FA +gUnknown_85CC4FA: @ 0x85CC4FA + .incbin "baserom_jp.gba", 0x5cc4fa, 0x169 + + .globl gUnknown_85CC663 +gUnknown_85CC663: @ 0x85CC663 + .incbin "baserom_jp.gba", 0x5cc663, 0xf + + .globl gUnknown_85CC672 +gUnknown_85CC672: @ 0x85CC672 + .incbin "baserom_jp.gba", 0x5cc672, 0xf7 + + .globl gUnknown_85CC769 +gUnknown_85CC769: @ 0x85CC769 + .incbin "baserom_jp.gba", 0x5cc769, 0x6 + + .globl gUnknown_85CC76F +gUnknown_85CC76F: @ 0x85CC76F + .incbin "baserom_jp.gba", 0x5cc76f, 0x5 + + .globl gUnknown_85CC774 +gUnknown_85CC774: @ 0x85CC774 + .incbin "baserom_jp.gba", 0x5cc774, 0x5 + + .globl gUnknown_85CC779 +gUnknown_85CC779: @ 0x85CC779 + .incbin "baserom_jp.gba", 0x5cc779, 0x5 + + .globl gUnknown_85CC77E +gUnknown_85CC77E: @ 0x85CC77E + .incbin "baserom_jp.gba", 0x5cc77e, 0x5 + + .globl gUnknown_85CC783 +gUnknown_85CC783: @ 0x85CC783 + .incbin "baserom_jp.gba", 0x5cc783, 0x4 + + .globl gUnknown_85CC787 +gUnknown_85CC787: @ 0x85CC787 + .incbin "baserom_jp.gba", 0x5cc787, 0x5 + + .globl gUnknown_85CC78C +gUnknown_85CC78C: @ 0x85CC78C + .incbin "baserom_jp.gba", 0x5cc78c, 0x6 + + .globl gUnknown_85CC792 +gUnknown_85CC792: @ 0x85CC792 + .incbin "baserom_jp.gba", 0x5cc792, 0x6 + + .globl gUnknown_85CC798 +gUnknown_85CC798: @ 0x85CC798 + .incbin "baserom_jp.gba", 0x5cc798, 0xdc + + .globl gUnknown_85CC874 +gUnknown_85CC874: @ 0x85CC874 + .incbin "baserom_jp.gba", 0x5cc874, 0x14 + + .globl gUnknown_85CC888 +gUnknown_85CC888: @ 0x85CC888 + .incbin "baserom_jp.gba", 0x5cc888, 0x140 + + .globl gUnknown_85CC9C8 +gUnknown_85CC9C8: @ 0x85CC9C8 + .incbin "baserom_jp.gba", 0x5cc9c8, 0xc + + .globl gUnknown_85CC9D4 +gUnknown_85CC9D4: @ 0x85CC9D4 + .incbin "baserom_jp.gba", 0x5cc9d4, 0x1c + + .globl gUnknown_85CC9F0 +gUnknown_85CC9F0: @ 0x85CC9F0 + .incbin "baserom_jp.gba", 0x5cc9f0, 0x4 + + .globl gUnknown_85CC9F4 +gUnknown_85CC9F4: @ 0x85CC9F4 + .incbin "baserom_jp.gba", 0x5cc9f4, 0x8 + + .globl gUnknown_85CC9FC +gUnknown_85CC9FC: @ 0x85CC9FC + .incbin "baserom_jp.gba", 0x5cc9fc, 0x8 + + .globl gUnknown_85CCA04 +gUnknown_85CCA04: @ 0x85CCA04 + .incbin "baserom_jp.gba", 0x5cca04, 0x4 + + .globl gUnknown_85CCA08 +gUnknown_85CCA08: @ 0x85CCA08 + .incbin "baserom_jp.gba", 0x5cca08, 0x4 + + .globl gUnknown_85CCA0C +gUnknown_85CCA0C: @ 0x85CCA0C + .incbin "baserom_jp.gba", 0x5cca0c, 0x8 + + .globl gUnknown_85CCA14 +gUnknown_85CCA14: @ 0x85CCA14 + .incbin "baserom_jp.gba", 0x5cca14, 0x4 + + .globl gUnknown_85CCA18 +gUnknown_85CCA18: @ 0x85CCA18 + .incbin "baserom_jp.gba", 0x5cca18, 0x8 + + .globl gUnknown_85CCA20 +gUnknown_85CCA20: @ 0x85CCA20 + .incbin "baserom_jp.gba", 0x5cca20, 0x8 + + .globl gUnknown_85CCA28 +gUnknown_85CCA28: @ 0x85CCA28 + .incbin "baserom_jp.gba", 0x5cca28, 0x8 + + .globl gUnknown_85CCA30 +gUnknown_85CCA30: @ 0x85CCA30 + .incbin "baserom_jp.gba", 0x5cca30, 0x10 + + .globl gUnknown_85CCA40 +gUnknown_85CCA40: @ 0x85CCA40 + .incbin "baserom_jp.gba", 0x5cca40, 0x30 + + .globl gUnknown_85CCA70 +gUnknown_85CCA70: @ 0x85CCA70 + .incbin "baserom_jp.gba", 0x5cca70, 0xc + + .globl gUnknown_85CCA7C +gUnknown_85CCA7C: @ 0x85CCA7C + .incbin "baserom_jp.gba", 0x5cca7c, 0x10 + + .globl gUnknown_85CCA8C +gUnknown_85CCA8C: @ 0x85CCA8C + .incbin "baserom_jp.gba", 0x5cca8c, 0x7 + + .globl gUnknown_85CCA93 +gUnknown_85CCA93: @ 0x85CCA93 + .incbin "baserom_jp.gba", 0x5cca93, 0xb + + .globl gUnknown_85CCA9E +gUnknown_85CCA9E: @ 0x85CCA9E + .incbin "baserom_jp.gba", 0x5cca9e, 0xa + + .globl gUnknown_85CCAA8 +gUnknown_85CCAA8: @ 0x85CCAA8 + .incbin "baserom_jp.gba", 0x5ccaa8, 0x215 + + .globl gUnknown_85CCCBD +gUnknown_85CCCBD: @ 0x85CCCBD + .incbin "baserom_jp.gba", 0x5cccbd, 0xa + + .globl gUnknown_85CCCC7 +gUnknown_85CCCC7: @ 0x85CCCC7 + .incbin "baserom_jp.gba", 0x5cccc7, 0xd + + .globl gUnknown_85CCCD4 +gUnknown_85CCCD4: @ 0x85CCCD4 + .incbin "baserom_jp.gba", 0x5cccd4, 0xd + + .globl gUnknown_85CCCE1 +gUnknown_85CCCE1: @ 0x85CCCE1 + .incbin "baserom_jp.gba", 0x5ccce1, 0xd + + .globl gUnknown_85CCCEE +gUnknown_85CCCEE: @ 0x85CCCEE + .incbin "baserom_jp.gba", 0x5cccee, 0x7 + + .globl gUnknown_85CCCF5 +gUnknown_85CCCF5: @ 0x85CCCF5 + .incbin "baserom_jp.gba", 0x5cccf5, 0x3f + + .globl gUnknown_85CCD34 +gUnknown_85CCD34: @ 0x85CCD34 + .incbin "baserom_jp.gba", 0x5ccd34, 0x11 + + .globl gUnknown_85CCD45 +gUnknown_85CCD45: @ 0x85CCD45 + .incbin "baserom_jp.gba", 0x5ccd45, 0x15 + + .globl gUnknown_85CCD5A +gUnknown_85CCD5A: @ 0x85CCD5A + .incbin "baserom_jp.gba", 0x5ccd5a, 0xe + + .globl gUnknown_85CCD68 +gUnknown_85CCD68: @ 0x85CCD68 + .incbin "baserom_jp.gba", 0x5ccd68, 0x1e + + .globl gUnknown_85CCD86 +gUnknown_85CCD86: @ 0x85CCD86 + .incbin "baserom_jp.gba", 0x5ccd86, 0x19 + + .globl gUnknown_85CCD9F +gUnknown_85CCD9F: @ 0x85CCD9F + .incbin "baserom_jp.gba", 0x5ccd9f, 0xc + + .globl gUnknown_85CCDAB +gUnknown_85CCDAB: @ 0x85CCDAB + .incbin "baserom_jp.gba", 0x5ccdab, 0x12 + + .globl gUnknown_85CCDBD +gUnknown_85CCDBD: @ 0x85CCDBD + .incbin "baserom_jp.gba", 0x5ccdbd, 0xe + + .globl gUnknown_85CCDCB +gUnknown_85CCDCB: @ 0x85CCDCB + .incbin "baserom_jp.gba", 0x5ccdcb, 0x1c + + .globl gUnknown_85CCDE7 +gUnknown_85CCDE7: @ 0x85CCDE7 + .incbin "baserom_jp.gba", 0x5ccde7, 0x3 + + .globl gUnknown_85CCDEA +gUnknown_85CCDEA: @ 0x85CCDEA + .incbin "baserom_jp.gba", 0x5ccdea, 0xe + + .globl gUnknown_85CCDF8 +gUnknown_85CCDF8: @ 0x85CCDF8 + .incbin "baserom_jp.gba", 0x5ccdf8, 0x3 + + .globl gUnknown_85CCDFB +gUnknown_85CCDFB: @ 0x85CCDFB + .incbin "baserom_jp.gba", 0x5ccdfb, 0x3 + + .globl gUnknown_85CCDFE +gUnknown_85CCDFE: @ 0x85CCDFE + .incbin "baserom_jp.gba", 0x5ccdfe, 0x38 + + .globl gUnknown_85CCE36 +gUnknown_85CCE36: @ 0x85CCE36 + .incbin "baserom_jp.gba", 0x5cce36, 0x1c + + .globl gUnknown_85CCE52 +gUnknown_85CCE52: @ 0x85CCE52 + .incbin "baserom_jp.gba", 0x5cce52, 0x13 + + .globl gUnknown_85CCE65 +gUnknown_85CCE65: @ 0x85CCE65 + .incbin "baserom_jp.gba", 0x5cce65, 0xc + + .globl gUnknown_85CCE71 +gUnknown_85CCE71: @ 0x85CCE71 + .incbin "baserom_jp.gba", 0x5cce71, 0xe + + .globl gUnknown_85CCE7F +gUnknown_85CCE7F: @ 0x85CCE7F + .incbin "baserom_jp.gba", 0x5cce7f, 0x1a + + .globl gUnknown_85CCE99 +gUnknown_85CCE99: @ 0x85CCE99 + .incbin "baserom_jp.gba", 0x5cce99, 0xc + + .globl gUnknown_85CCEA5 +gUnknown_85CCEA5: @ 0x85CCEA5 + .incbin "baserom_jp.gba", 0x5ccea5, 0x14 + + .globl gUnknown_85CCEB9 +gUnknown_85CCEB9: @ 0x85CCEB9 + .incbin "baserom_jp.gba", 0x5cceb9, 0x3 + + .globl gUnknown_85CCEBC +gUnknown_85CCEBC: @ 0x85CCEBC + .incbin "baserom_jp.gba", 0x5ccebc, 0x3 + + .globl gUnknown_85CCEBF +gUnknown_85CCEBF: @ 0x85CCEBF + .incbin "baserom_jp.gba", 0x5ccebf, 0x3 + + .globl gUnknown_85CCEC2 +gUnknown_85CCEC2: @ 0x85CCEC2 + .incbin "baserom_jp.gba", 0x5ccec2, 0x3 + + .globl gUnknown_85CCEC5 +gUnknown_85CCEC5: @ 0x85CCEC5 + .incbin "baserom_jp.gba", 0x5ccec5, 0x8 + + .globl gUnknown_85CCECD +gUnknown_85CCECD: @ 0x85CCECD + .incbin "baserom_jp.gba", 0x5ccecd, 0x8 + + .globl gUnknown_85CCED5 +gUnknown_85CCED5: @ 0x85CCED5 + .incbin "baserom_jp.gba", 0x5cced5, 0xa + + .globl gUnknown_85CCEDF +gUnknown_85CCEDF: @ 0x85CCEDF + .incbin "baserom_jp.gba", 0x5ccedf, 0xd + + .globl gUnknown_85CCEEC +gUnknown_85CCEEC: @ 0x85CCEEC + .incbin "baserom_jp.gba", 0x5cceec, 0x1f + + .globl gUnknown_85CCF0B +gUnknown_85CCF0B: @ 0x85CCF0B + .incbin "baserom_jp.gba", 0x5ccf0b, 0x1f + + .globl gUnknown_85CCF2A +gUnknown_85CCF2A: @ 0x85CCF2A + .incbin "baserom_jp.gba", 0x5ccf2a, 0x48 + + .globl gUnknown_85CCF72 +gUnknown_85CCF72: @ 0x85CCF72 + .incbin "baserom_jp.gba", 0x5ccf72, 0xf + + .globl gUnknown_85CCF81 +gUnknown_85CCF81: @ 0x85CCF81 + .incbin "baserom_jp.gba", 0x5ccf81, 0x2c + + .globl gUnknown_85CCFAD +gUnknown_85CCFAD: @ 0x85CCFAD + .incbin "baserom_jp.gba", 0x5ccfad, 0xc + + .globl gUnknown_85CCFB9 +gUnknown_85CCFB9: @ 0x85CCFB9 + .incbin "baserom_jp.gba", 0x5ccfb9, 0x1c + + .globl gUnknown_85CCFD5 +gUnknown_85CCFD5: @ 0x85CCFD5 + .incbin "baserom_jp.gba", 0x5ccfd5, 0x1d + + .globl gUnknown_85CCFF2 +gUnknown_85CCFF2: @ 0x85CCFF2 + .incbin "baserom_jp.gba", 0x5ccff2, 0x1e + + .globl gUnknown_85CD010 +gUnknown_85CD010: @ 0x85CD010 + .incbin "baserom_jp.gba", 0x5cd010, 0xd + + .globl gUnknown_85CD01D +gUnknown_85CD01D: @ 0x85CD01D + .incbin "baserom_jp.gba", 0x5cd01d, 0x19 + + .globl gUnknown_85CD036 +gUnknown_85CD036: @ 0x85CD036 + .incbin "baserom_jp.gba", 0x5cd036, 0xd + + .globl gUnknown_85CD043 +gUnknown_85CD043: @ 0x85CD043 + .incbin "baserom_jp.gba", 0x5cd043, 0x25 + + .globl gUnknown_85CD068 +gUnknown_85CD068: @ 0x85CD068 + .incbin "baserom_jp.gba", 0x5cd068, 0x10 + + .globl gUnknown_85CD078 +gUnknown_85CD078: @ 0x85CD078 + .incbin "baserom_jp.gba", 0x5cd078, 0x20 + + .globl gUnknown_85CD098 +gUnknown_85CD098: @ 0x85CD098 + .incbin "baserom_jp.gba", 0x5cd098, 0x8 + + .globl gUnknown_85CD0A0 +gUnknown_85CD0A0: @ 0x85CD0A0 + .incbin "baserom_jp.gba", 0x5cd0a0, 0x28 + + .globl gUnknown_85CD0C8 +gUnknown_85CD0C8: @ 0x85CD0C8 + .incbin "baserom_jp.gba", 0x5cd0c8, 0x14 + + .globl gUnknown_85CD0DC +gUnknown_85CD0DC: @ 0x85CD0DC + .incbin "baserom_jp.gba", 0x5cd0dc, 0x22 + + .globl gUnknown_85CD0FE +gUnknown_85CD0FE: @ 0x85CD0FE + .incbin "baserom_jp.gba", 0x5cd0fe, 0x25 + + .globl gUnknown_85CD123 +gUnknown_85CD123: @ 0x85CD123 + .incbin "baserom_jp.gba", 0x5cd123, 0x10 + + .globl gUnknown_85CD133 +gUnknown_85CD133: @ 0x85CD133 + .incbin "baserom_jp.gba", 0x5cd133, 0x26 + + .globl gUnknown_85CD159 +gUnknown_85CD159: @ 0x85CD159 + .incbin "baserom_jp.gba", 0x5cd159, 0x46 + + .globl gUnknown_85CD19F +gUnknown_85CD19F: @ 0x85CD19F + .incbin "baserom_jp.gba", 0x5cd19f, 0x65 + + .globl gUnknown_85CD204 +gUnknown_85CD204: @ 0x85CD204 + .incbin "baserom_jp.gba", 0x5cd204, 0x4 + + .globl gUnknown_85CD208 +gUnknown_85CD208: @ 0x85CD208 + .incbin "baserom_jp.gba", 0x5cd208, 0x18 + + .globl gUnknown_85CD220 +gUnknown_85CD220: @ 0x85CD220 + .incbin "baserom_jp.gba", 0x5cd220, 0x8 + + .globl gUnknown_85CD228 +gUnknown_85CD228: @ 0x85CD228 + .incbin "baserom_jp.gba", 0x5cd228, 0xc + + .globl gUnknown_85CD234 +gUnknown_85CD234: @ 0x85CD234 + .incbin "baserom_jp.gba", 0x5cd234, 0x8 + + .globl gUnknown_85CD23C +gUnknown_85CD23C: @ 0x85CD23C + .incbin "baserom_jp.gba", 0x5cd23c, 0x8 + + .globl gUnknown_85CD244 +gUnknown_85CD244: @ 0x85CD244 + .incbin "baserom_jp.gba", 0x5cd244, 0x8 + + .globl gUnknown_85CD24C +gUnknown_85CD24C: @ 0x85CD24C + .incbin "baserom_jp.gba", 0x5cd24c, 0x18 + + .globl gUnknown_85CD264 +gUnknown_85CD264: @ 0x85CD264 + .incbin "baserom_jp.gba", 0x5cd264, 0x20 + + .globl gUnknown_85CD284 +gUnknown_85CD284: @ 0x85CD284 + .incbin "baserom_jp.gba", 0x5cd284, 0x90 + + .globl gUnknown_85CD314 +gUnknown_85CD314: @ 0x85CD314 + .incbin "baserom_jp.gba", 0x5cd314, 0x48 + + .globl gUnknown_85CD35C +gUnknown_85CD35C: @ 0x85CD35C + .incbin "baserom_jp.gba", 0x5cd35c, 0x32 + + .globl gUnknown_85CD38E +gUnknown_85CD38E: @ 0x85CD38E + .incbin "baserom_jp.gba", 0x5cd38e, 0x12 + + .globl gUnknown_85CD3A0 +gUnknown_85CD3A0: @ 0x85CD3A0 + .incbin "baserom_jp.gba", 0x5cd3a0, 0x5fc + + .globl gUnknown_85CD99C +gUnknown_85CD99C: @ 0x85CD99C + .incbin "baserom_jp.gba", 0x5cd99c, 0x54 + + .globl gUnknown_85CD9F0 +gUnknown_85CD9F0: @ 0x85CD9F0 + .incbin "baserom_jp.gba", 0x5cd9f0, 0x8 + + .globl gUnknown_85CD9F8 +gUnknown_85CD9F8: @ 0x85CD9F8 + .incbin "baserom_jp.gba", 0x5cd9f8, 0x10 + + .globl gUnknown_85CDA08 +gUnknown_85CDA08: @ 0x85CDA08 + .incbin "baserom_jp.gba", 0x5cda08, 0x48 + + .globl gUnknown_85CDA50 +gUnknown_85CDA50: @ 0x85CDA50 + .incbin "baserom_jp.gba", 0x5cda50, 0xb4 + + .globl gUnknown_85CDB04 +gUnknown_85CDB04: @ 0x85CDB04 + .incbin "baserom_jp.gba", 0x5cdb04, 0x4 + + .globl gUnknown_85CDB08 +gUnknown_85CDB08: @ 0x85CDB08 + .incbin "baserom_jp.gba", 0x5cdb08, 0x4 + + .globl gUnknown_85CDB0C +gUnknown_85CDB0C: @ 0x85CDB0C + .incbin "baserom_jp.gba", 0x5cdb0c, 0x34 + + .globl gUnknown_85CDB40 +gUnknown_85CDB40: @ 0x85CDB40 + .incbin "baserom_jp.gba", 0x5cdb40, 0x8 + + .globl gUnknown_85CDB48 +gUnknown_85CDB48: @ 0x85CDB48 + .incbin "baserom_jp.gba", 0x5cdb48, 0x18 + + .globl gUnknown_85CDB60 +gUnknown_85CDB60: @ 0x85CDB60 + .incbin "baserom_jp.gba", 0x5cdb60, 0x1a + + .globl gUnknown_85CDB7A +gUnknown_85CDB7A: @ 0x85CDB7A + .incbin "baserom_jp.gba", 0x5cdb7a, 0x16 + + .globl gUnknown_85CDB90 +gUnknown_85CDB90: @ 0x85CDB90 + .incbin "baserom_jp.gba", 0x5cdb90, 0x8 + + .globl gUnknown_85CDB98 +gUnknown_85CDB98: @ 0x85CDB98 + .incbin "baserom_jp.gba", 0x5cdb98, 0x10 + + .globl gUnknown_85CDBA8 +gUnknown_85CDBA8: @ 0x85CDBA8 + .incbin "baserom_jp.gba", 0x5cdba8, 0x8 + + .globl gUnknown_85CDBB0 +gUnknown_85CDBB0: @ 0x85CDBB0 + .incbin "baserom_jp.gba", 0x5cdbb0, 0x20 + + .globl gUnknown_85CDBD0 +gUnknown_85CDBD0: @ 0x85CDBD0 + .incbin "baserom_jp.gba", 0x5cdbd0, 0x20 + + .globl gUnknown_85CDBF0 +gUnknown_85CDBF0: @ 0x85CDBF0 + .incbin "baserom_jp.gba", 0x5cdbf0, 0x20 + + .globl gUnknown_85CDC10 +gUnknown_85CDC10: @ 0x85CDC10 + .incbin "baserom_jp.gba", 0x5cdc10, 0x480 + + .globl gUnknown_85CE090 +gUnknown_85CE090: @ 0x85CE090 + .incbin "baserom_jp.gba", 0x5ce090, 0x13c + + .globl gUnknown_85CE1CC +gUnknown_85CE1CC: @ 0x85CE1CC + .incbin "baserom_jp.gba", 0x5ce1cc, 0x60 + + .globl gUnknown_85CE22C +gUnknown_85CE22C: @ 0x85CE22C + .incbin "baserom_jp.gba", 0x5ce22c, 0x60 + + .globl gUnknown_85CE28C +gUnknown_85CE28C: @ 0x85CE28C + .incbin "baserom_jp.gba", 0x5ce28c, 0x5dc + + .globl gUnknown_85CE868 +gUnknown_85CE868: @ 0x85CE868 + .incbin "baserom_jp.gba", 0x5ce868, 0x2d0 + + .globl gUnknown_85CEB38 +gUnknown_85CEB38: @ 0x85CEB38 + .incbin "baserom_jp.gba", 0x5ceb38, 0x20 + + .globl gUnknown_85CEB58 +gUnknown_85CEB58: @ 0x85CEB58 + .incbin "baserom_jp.gba", 0x5ceb58, 0x20 + + .globl gUnknown_85CEB78 +gUnknown_85CEB78: @ 0x85CEB78 + .incbin "baserom_jp.gba", 0x5ceb78, 0x13c + + .globl gUnknown_85CECB4 +gUnknown_85CECB4: @ 0x85CECB4 + .incbin "baserom_jp.gba", 0x5cecb4, 0x20 + + .globl gUnknown_85CECD4 +gUnknown_85CECD4: @ 0x85CECD4 + .incbin "baserom_jp.gba", 0x5cecd4, 0x20 + + .globl gUnknown_85CECF4 +gUnknown_85CECF4: @ 0x85CECF4 + .incbin "baserom_jp.gba", 0x5cecf4, 0x688 + + .globl gUnknown_85CF37C +gUnknown_85CF37C: @ 0x85CF37C + .incbin "baserom_jp.gba", 0x5cf37c, 0x304 + + .globl gUnknown_85CF680 +gUnknown_85CF680: @ 0x85CF680 + .incbin "baserom_jp.gba", 0x5cf680, 0x16c + + .globl gUnknown_85CF7EC +gUnknown_85CF7EC: @ 0x85CF7EC + .incbin "baserom_jp.gba", 0x5cf7ec, 0x40 + + .globl gUnknown_85CF82C +gUnknown_85CF82C: @ 0x85CF82C + .incbin "baserom_jp.gba", 0x5cf82c, 0x1ec + + .globl gUnknown_85CFA18 +gUnknown_85CFA18: @ 0x85CFA18 + .incbin "baserom_jp.gba", 0x5cfa18, 0x20 + + .globl gUnknown_85CFA38 +gUnknown_85CFA38: @ 0x85CFA38 + .incbin "baserom_jp.gba", 0x5cfa38, 0x2ae4 + + .globl gUnknown_85D251C +gUnknown_85D251C: @ 0x85D251C + .incbin "baserom_jp.gba", 0x5d251c, 0x18 + + .globl gUnknown_85D2534 +gUnknown_85D2534: @ 0x85D2534 + .incbin "baserom_jp.gba", 0x5d2534, 0x30 + + .globl gUnknown_85D2564 +gUnknown_85D2564: @ 0x85D2564 + .incbin "baserom_jp.gba", 0x5d2564, 0x10 + + .globl gUnknown_85D2574 +gUnknown_85D2574: @ 0x85D2574 + .incbin "baserom_jp.gba", 0x5d2574, 0x48 + + .globl gUnknown_85D25BC +gUnknown_85D25BC: @ 0x85D25BC + .incbin "baserom_jp.gba", 0x5d25bc, 0x28 + + .globl gUnknown_85D25E4 +gUnknown_85D25E4: @ 0x85D25E4 + .incbin "baserom_jp.gba", 0x5d25e4, 0xc + + .globl gUnknown_85D25F0 +gUnknown_85D25F0: @ 0x85D25F0 + .incbin "baserom_jp.gba", 0x5d25f0, 0x60 + + .globl gUnknown_85D2650 +gUnknown_85D2650: @ 0x85D2650 + .incbin "baserom_jp.gba", 0x5d2650, 0x18 + + .globl gUnknown_85D2668 +gUnknown_85D2668: @ 0x85D2668 + .incbin "baserom_jp.gba", 0x5d2668, 0x4 + + .globl gUnknown_85D266C +gUnknown_85D266C: @ 0x85D266C + .incbin "baserom_jp.gba", 0x5d266c, 0x50 + + .globl gUnknown_85D26BC +gUnknown_85D26BC: @ 0x85D26BC + .incbin "baserom_jp.gba", 0x5d26bc, 0x18 + + .globl gUnknown_85D26D4 +gUnknown_85D26D4: @ 0x85D26D4 + .incbin "baserom_jp.gba", 0x5d26d4, 0x38 + + .globl gUnknown_85D270C +gUnknown_85D270C: @ 0x85D270C + .incbin "baserom_jp.gba", 0x5d270c, 0x18 + + .globl gUnknown_85D2724 +gUnknown_85D2724: @ 0x85D2724 + .incbin "baserom_jp.gba", 0x5d2724, 0x38 + + .globl gUnknown_85D275C +gUnknown_85D275C: @ 0x85D275C + .incbin "baserom_jp.gba", 0x5d275c, 0x18 + + .globl gUnknown_85D2774 +gUnknown_85D2774: @ 0x85D2774 + .incbin "baserom_jp.gba", 0x5d2774, 0x18 + + .globl gUnknown_85D278C +gUnknown_85D278C: @ 0x85D278C + .incbin "baserom_jp.gba", 0x5d278c, 0x10 + + .globl gUnknown_85D279C +gUnknown_85D279C: @ 0x85D279C + .incbin "baserom_jp.gba", 0x5d279c, 0x10 + + .globl gUnknown_85D27AC +gUnknown_85D27AC: @ 0x85D27AC + .incbin "baserom_jp.gba", 0x5d27ac, 0x20 + + .globl gUnknown_85D27CC +gUnknown_85D27CC: @ 0x85D27CC + .incbin "baserom_jp.gba", 0x5d27cc, 0x10 + + .globl gUnknown_85D27DC +gUnknown_85D27DC: @ 0x85D27DC + .incbin "baserom_jp.gba", 0x5d27dc, 0x28 + + .globl gUnknown_85D2804 +gUnknown_85D2804: @ 0x85D2804 + .incbin "baserom_jp.gba", 0x5d2804, 0x10 + + .globl gUnknown_85D2814 +gUnknown_85D2814: @ 0x85D2814 + .incbin "baserom_jp.gba", 0x5d2814, 0x10 + + .globl gUnknown_85D2824 +gUnknown_85D2824: @ 0x85D2824 + .incbin "baserom_jp.gba", 0x5d2824, 0x30 + + .globl gUnknown_85D2854 +gUnknown_85D2854: @ 0x85D2854 + .incbin "baserom_jp.gba", 0x5d2854, 0x28 + + .globl gUnknown_85D287C +gUnknown_85D287C: @ 0x85D287C + .incbin "baserom_jp.gba", 0x5d287c, 0x10 + + .globl gUnknown_85D288C +gUnknown_85D288C: @ 0x85D288C + .incbin "baserom_jp.gba", 0x5d288c, 0x50 + + .globl gUnknown_85D28DC +gUnknown_85D28DC: @ 0x85D28DC + .incbin "baserom_jp.gba", 0x5d28dc, 0x10 + + .globl gUnknown_85D28EC +gUnknown_85D28EC: @ 0x85D28EC + .incbin "baserom_jp.gba", 0x5d28ec, 0x24 + + .globl gUnknown_85D2910 +gUnknown_85D2910: @ 0x85D2910 + .incbin "baserom_jp.gba", 0x5d2910, 0x18 + + .globl gUnknown_85D2928 +gUnknown_85D2928: @ 0x85D2928 + .incbin "baserom_jp.gba", 0x5d2928, 0x198 + + .globl gUnknown_85D2AC0 +gUnknown_85D2AC0: @ 0x85D2AC0 + .incbin "baserom_jp.gba", 0x5d2ac0, 0x8c + + .globl gUnknown_85D2B4C +gUnknown_85D2B4C: @ 0x85D2B4C + .incbin "baserom_jp.gba", 0x5d2b4c, 0x3c0 + + .globl gUnknown_85D2F0C +gUnknown_85D2F0C: @ 0x85D2F0C + .incbin "baserom_jp.gba", 0x5d2f0c, 0x388 + + .globl gUnknown_85D3294 +gUnknown_85D3294: @ 0x85D3294 + .incbin "baserom_jp.gba", 0x5d3294, 0x70 + + .globl gUnknown_85D3304 +gUnknown_85D3304: @ 0x85D3304 + .incbin "baserom_jp.gba", 0x5d3304, 0x24 + + .globl gUnknown_85D3328 +gUnknown_85D3328: @ 0x85D3328 + .incbin "baserom_jp.gba", 0x5d3328, 0x19c + + .globl gUnknown_85D34C4 +gUnknown_85D34C4: @ 0x85D34C4 + .incbin "baserom_jp.gba", 0x5d34c4, 0x1c + + .globl gUnknown_85D34E0 +gUnknown_85D34E0: @ 0x85D34E0 + .incbin "baserom_jp.gba", 0x5d34e0, 0x8 + + .globl gUnknown_85D34E8 +gUnknown_85D34E8: @ 0x85D34E8 + .incbin "baserom_jp.gba", 0x5d34e8, 0x25c + + .globl gUnknown_85D3744 +gUnknown_85D3744: @ 0x85D3744 + .incbin "baserom_jp.gba", 0x5d3744, 0x4b + + .globl gUnknown_85D378F +gUnknown_85D378F: @ 0x85D378F + .incbin "baserom_jp.gba", 0x5d378f, 0x39 + + .globl gUnknown_85D37C8 +gUnknown_85D37C8: @ 0x85D37C8 + .incbin "baserom_jp.gba", 0x5d37c8, 0x8 + + .globl gUnknown_85D37D0 +gUnknown_85D37D0: @ 0x85D37D0 + .incbin "baserom_jp.gba", 0x5d37d0, 0x1e + + .globl gUnknown_85D37EE +gUnknown_85D37EE: @ 0x85D37EE + .incbin "baserom_jp.gba", 0x5d37ee, 0x30 + + .globl gUnknown_85D381E +gUnknown_85D381E: @ 0x85D381E + .incbin "baserom_jp.gba", 0x5d381e, 0xbe + + .globl gUnknown_85D38DC +gUnknown_85D38DC: @ 0x85D38DC + .incbin "baserom_jp.gba", 0x5d38dc, 0xc + + .globl gUnknown_85D38E8 +gUnknown_85D38E8: @ 0x85D38E8 + .incbin "baserom_jp.gba", 0x5d38e8, 0x8 + + .globl gUnknown_85D38F0 +gUnknown_85D38F0: @ 0x85D38F0 + .incbin "baserom_jp.gba", 0x5d38f0, 0xe4 + + .globl gUnknown_85D39D4 +gUnknown_85D39D4: @ 0x85D39D4 + .incbin "baserom_jp.gba", 0x5d39d4, 0xe4 + + .globl gUnknown_85D3AB8 +gUnknown_85D3AB8: @ 0x85D3AB8 + .incbin "baserom_jp.gba", 0x5d3ab8, 0xc + + .globl gUnknown_85D3AC4 +gUnknown_85D3AC4: @ 0x85D3AC4 + .incbin "baserom_jp.gba", 0x5d3ac4, 0x8 + + .globl gUnknown_85D3ACC +gUnknown_85D3ACC: @ 0x85D3ACC + .incbin "baserom_jp.gba", 0x5d3acc, 0x8 + + .globl gUnknown_85D3AD4 +gUnknown_85D3AD4: @ 0x85D3AD4 + .incbin "baserom_jp.gba", 0x5d3ad4, 0xa + + .globl gUnknown_85D3ADE +gUnknown_85D3ADE: @ 0x85D3ADE + .incbin "baserom_jp.gba", 0x5d3ade, 0x126 + + .globl gUnknown_85D3C04 +gUnknown_85D3C04: @ 0x85D3C04 + .incbin "baserom_jp.gba", 0x5d3c04, 0x40 + + .globl gUnknown_85D3C44 +gUnknown_85D3C44: @ 0x85D3C44 + .incbin "baserom_jp.gba", 0x5d3c44, 0x20 + + .globl gUnknown_85D3C64 +gUnknown_85D3C64: @ 0x85D3C64 + .incbin "baserom_jp.gba", 0x5d3c64, 0x40 + + .globl gUnknown_85D3CA4 +gUnknown_85D3CA4: @ 0x85D3CA4 + .incbin "baserom_jp.gba", 0x5d3ca4, 0xc8 + + .globl gUnknown_85D3D6C +gUnknown_85D3D6C: @ 0x85D3D6C + .incbin "baserom_jp.gba", 0x5d3d6c, 0x18 + + .globl gUnknown_85D3D84 +gUnknown_85D3D84: @ 0x85D3D84 + .incbin "baserom_jp.gba", 0x5d3d84, 0xc + + .globl gUnknown_85D3D90 +gUnknown_85D3D90: @ 0x85D3D90 + .incbin "baserom_jp.gba", 0x5d3d90, 0x20 + + .globl gUnknown_85D3DB0 +gUnknown_85D3DB0: @ 0x85D3DB0 + .incbin "baserom_jp.gba", 0x5d3db0, 0x2c + + .globl gUnknown_85D3DDC +gUnknown_85D3DDC: @ 0x85D3DDC + .incbin "baserom_jp.gba", 0x5d3ddc, 0x14 + + .globl gUnknown_85D3DF0 +gUnknown_85D3DF0: @ 0x85D3DF0 + .incbin "baserom_jp.gba", 0x5d3df0, 0xc + + .globl gUnknown_85D3DFC +gUnknown_85D3DFC: @ 0x85D3DFC + .incbin "baserom_jp.gba", 0x5d3dfc, 0x1630 + + .globl gUnknown_85D542C +gUnknown_85D542C: @ 0x85D542C + .incbin "baserom_jp.gba", 0x5d542c, 0x269 + + .globl gUnknown_85D5695 +gUnknown_85D5695: @ 0x85D5695 + .incbin "baserom_jp.gba", 0x5d5695, 0x283 + + .globl gUnknown_85D5918 +gUnknown_85D5918: @ 0x85D5918 + .incbin "baserom_jp.gba", 0x5d5918, 0x10 + + .globl gUnknown_85D5928 +gUnknown_85D5928: @ 0x85D5928 + .incbin "baserom_jp.gba", 0x5d5928, 0x10 + + .globl gUnknown_85D5938 +gUnknown_85D5938: @ 0x85D5938 + .incbin "baserom_jp.gba", 0x5d5938, 0x20 + + .globl gUnknown_85D5958 +gUnknown_85D5958: @ 0x85D5958 + .incbin "baserom_jp.gba", 0x5d5958, 0x98 + + .globl gUnknown_85D59F0 +gUnknown_85D59F0: @ 0x85D59F0 + .incbin "baserom_jp.gba", 0x5d59f0, 0xc + + .globl gUnknown_85D59FC +gUnknown_85D59FC: @ 0x85D59FC + .incbin "baserom_jp.gba", 0x5d59fc, 0x58 + + .globl gUnknown_85D5A54 +gUnknown_85D5A54: @ 0x85D5A54 + .incbin "baserom_jp.gba", 0x5d5a54, 0x30 + + .globl gUnknown_85D5A84 +gUnknown_85D5A84: @ 0x85D5A84 + .incbin "baserom_jp.gba", 0x5d5a84, 0x48 + + .globl gUnknown_85D5ACC +gUnknown_85D5ACC: @ 0x85D5ACC + .incbin "baserom_jp.gba", 0x5d5acc, 0x18 + + .globl gUnknown_85D5AE4 +gUnknown_85D5AE4: @ 0x85D5AE4 + .incbin "baserom_jp.gba", 0x5d5ae4, 0x18 + + .globl gUnknown_85D5AFC +gUnknown_85D5AFC: @ 0x85D5AFC + .incbin "baserom_jp.gba", 0x5d5afc, 0x10 + + .globl gUnknown_85D5B0C +gUnknown_85D5B0C: @ 0x85D5B0C + .incbin "baserom_jp.gba", 0x5d5b0c, 0x5c + + .globl gUnknown_85D5B68 +gUnknown_85D5B68: @ 0x85D5B68 + .incbin "baserom_jp.gba", 0x5d5b68, 0x10 + + .globl gUnknown_85D5B78 +gUnknown_85D5B78: @ 0x85D5B78 + .incbin "baserom_jp.gba", 0x5d5b78, 0x10 + + .globl gUnknown_85D5B88 +gUnknown_85D5B88: @ 0x85D5B88 + .incbin "baserom_jp.gba", 0x5d5b88, 0x40 + + .globl gUnknown_85D5BC8 +gUnknown_85D5BC8: @ 0x85D5BC8 + .incbin "baserom_jp.gba", 0x5d5bc8, 0x10 + + .globl gUnknown_85D5BD8 +gUnknown_85D5BD8: @ 0x85D5BD8 + .incbin "baserom_jp.gba", 0x5d5bd8, 0x40 + + .globl gUnknown_85D5C18 +gUnknown_85D5C18: @ 0x85D5C18 + .incbin "baserom_jp.gba", 0x5d5c18, 0x4 + + .globl gUnknown_85D5C1C +gUnknown_85D5C1C: @ 0x85D5C1C + .incbin "baserom_jp.gba", 0x5d5c1c, 0x20 + + .globl gUnknown_85D5C3C +gUnknown_85D5C3C: @ 0x85D5C3C + .incbin "baserom_jp.gba", 0x5d5c3c, 0x10 + + .globl gUnknown_85D5C4C +gUnknown_85D5C4C: @ 0x85D5C4C + .incbin "baserom_jp.gba", 0x5d5c4c, 0x44 + + .globl gUnknown_85D5C90 +gUnknown_85D5C90: @ 0x85D5C90 + .incbin "baserom_jp.gba", 0x5d5c90, 0x80 + + .globl gUnknown_85D5D10 +gUnknown_85D5D10: @ 0x85D5D10 + .incbin "baserom_jp.gba", 0x5d5d10, 0xac + + .globl gUnknown_85D5DBC +gUnknown_85D5DBC: @ 0x85D5DBC + .incbin "baserom_jp.gba", 0x5d5dbc, 0x3 + + .globl gUnknown_85D5DBF +gUnknown_85D5DBF: @ 0x85D5DBF + .incbin "baserom_jp.gba", 0x5d5dbf, 0x3 + + .globl gUnknown_85D5DC2 +gUnknown_85D5DC2: @ 0x85D5DC2 + .incbin "baserom_jp.gba", 0x5d5dc2, 0x3 + + .globl gUnknown_85D5DC5 +gUnknown_85D5DC5: @ 0x85D5DC5 + .incbin "baserom_jp.gba", 0x5d5dc5, 0x7 + + .globl gUnknown_85D5DCC +gUnknown_85D5DCC: @ 0x85D5DCC + .incbin "baserom_jp.gba", 0x5d5dcc, 0x3c + + .globl gUnknown_85D5E08 +gUnknown_85D5E08: @ 0x85D5E08 + .incbin "baserom_jp.gba", 0x5d5e08, 0x1c + + .globl gUnknown_85D5E24 +gUnknown_85D5E24: @ 0x85D5E24 + .incbin "baserom_jp.gba", 0x5d5e24, 0x3 + + .globl gUnknown_85D5E27 +gUnknown_85D5E27: @ 0x85D5E27 + .incbin "baserom_jp.gba", 0x5d5e27, 0x3 + + .globl gUnknown_85D5E2A +gUnknown_85D5E2A: @ 0x85D5E2A + .incbin "baserom_jp.gba", 0x5d5e2a, 0x3 + + .globl gUnknown_85D5E2D +gUnknown_85D5E2D: @ 0x85D5E2D + .incbin "baserom_jp.gba", 0x5d5e2d, 0x3 + + .globl gUnknown_85D5E30 +gUnknown_85D5E30: @ 0x85D5E30 + .incbin "baserom_jp.gba", 0x5d5e30, 0x10 + + .globl gUnknown_85D5E40 +gUnknown_85D5E40: @ 0x85D5E40 + .incbin "baserom_jp.gba", 0x5d5e40, 0x2 + + .globl gUnknown_85D5E42 +gUnknown_85D5E42: @ 0x85D5E42 + .incbin "baserom_jp.gba", 0x5d5e42, 0x2b + + .globl gUnknown_85D5E6D +gUnknown_85D5E6D: @ 0x85D5E6D + .incbin "baserom_jp.gba", 0x5d5e6d, 0x1 + + .globl gUnknown_85D5E6E +gUnknown_85D5E6E: @ 0x85D5E6E + .incbin "baserom_jp.gba", 0x5d5e6e, 0x1f + + .globl gUnknown_85D5E8D +gUnknown_85D5E8D: @ 0x85D5E8D + .incbin "baserom_jp.gba", 0x5d5e8d, 0x8ff + + .globl gUnknown_85D678C +gUnknown_85D678C: @ 0x85D678C + .incbin "baserom_jp.gba", 0x5d678c, 0x100 + + .globl gUnknown_85D688C +gUnknown_85D688C: @ 0x85D688C + .incbin "baserom_jp.gba", 0x5d688c, 0x40 + + .globl gUnknown_85D68CC +gUnknown_85D68CC: @ 0x85D68CC + .incbin "baserom_jp.gba", 0x5d68cc, 0x28 + + .globl gUnknown_85D68F4 +gUnknown_85D68F4: @ 0x85D68F4 + .incbin "baserom_jp.gba", 0x5d68f4, 0xc + + .globl gUnknown_85D6900 +gUnknown_85D6900: @ 0x85D6900 + .incbin "baserom_jp.gba", 0x5d6900, 0x14 + + .globl gUnknown_85D6914 +gUnknown_85D6914: @ 0x85D6914 + .incbin "baserom_jp.gba", 0x5d6914, 0x10 + + .globl gUnknown_85D6924 +gUnknown_85D6924: @ 0x85D6924 + .incbin "baserom_jp.gba", 0x5d6924, 0x10 + + .globl gUnknown_85D6934 +gUnknown_85D6934: @ 0x85D6934 + .incbin "baserom_jp.gba", 0x5d6934, 0xb68 + + .globl gUnknown_85D749C +gUnknown_85D749C: @ 0x85D749C + .incbin "baserom_jp.gba", 0x5d749c, 0xc + + .globl gUnknown_85D74A8 +gUnknown_85D74A8: @ 0x85D74A8 + .incbin "baserom_jp.gba", 0x5d74a8, 0x8 + + .globl gUnknown_85D74B0 +gUnknown_85D74B0: @ 0x85D74B0 + .incbin "baserom_jp.gba", 0x5d74b0, 0x18 + + .globl gUnknown_85D74C8 +gUnknown_85D74C8: @ 0x85D74C8 + .incbin "baserom_jp.gba", 0x5d74c8, 0x20 + + .globl gUnknown_85D74E8 +gUnknown_85D74E8: @ 0x85D74E8 + .incbin "baserom_jp.gba", 0x5d74e8, 0x100 + + .globl gUnknown_85D75E8 +gUnknown_85D75E8: @ 0x85D75E8 + .incbin "baserom_jp.gba", 0x5d75e8, 0x20 + + .globl gUnknown_85D7608 +gUnknown_85D7608: @ 0x85D7608 + .incbin "baserom_jp.gba", 0x5d7608, 0x3e4 + + .globl gUnknown_85D79EC +gUnknown_85D79EC: @ 0x85D79EC + .incbin "baserom_jp.gba", 0x5d79ec, 0x8 + + .globl gUnknown_85D79F4 +gUnknown_85D79F4: @ 0x85D79F4 + .incbin "baserom_jp.gba", 0x5d79f4, 0x20 + + .globl gUnknown_85D7A14 +gUnknown_85D7A14: @ 0x85D7A14 + .incbin "baserom_jp.gba", 0x5d7a14, 0x8 + + .globl gUnknown_85D7A1C +gUnknown_85D7A1C: @ 0x85D7A1C + .incbin "baserom_jp.gba", 0x5d7a1c, 0xc + + .globl gUnknown_85D7A28 +gUnknown_85D7A28: @ 0x85D7A28 + .incbin "baserom_jp.gba", 0x5d7a28, 0x2c + + .globl gUnknown_85D7A54 +gUnknown_85D7A54: @ 0x85D7A54 + .incbin "baserom_jp.gba", 0x5d7a54, 0x30 + + .globl gUnknown_85D7A84 +gUnknown_85D7A84: @ 0x85D7A84 + .incbin "baserom_jp.gba", 0x5d7a84, 0x1c + + .globl gUnknown_85D7AA0 +gUnknown_85D7AA0: @ 0x85D7AA0 + .incbin "baserom_jp.gba", 0x5d7aa0, 0x10 + + .globl gUnknown_85D7AB0 +gUnknown_85D7AB0: @ 0x85D7AB0 + .incbin "baserom_jp.gba", 0x5d7ab0, 0x54 + + .globl gUnknown_85D7B04 +gUnknown_85D7B04: @ 0x85D7B04 + .incbin "baserom_jp.gba", 0x5d7b04, 0x20 + + .globl gUnknown_85D7B24 +gUnknown_85D7B24: @ 0x85D7B24 + .incbin "baserom_jp.gba", 0x5d7b24, 0x4 + + .globl gUnknown_85D7B28 +gUnknown_85D7B28: @ 0x85D7B28 + .incbin "baserom_jp.gba", 0x5d7b28, 0x10 + + .globl gUnknown_85D7B38 +gUnknown_85D7B38: @ 0x85D7B38 + .incbin "baserom_jp.gba", 0x5d7b38, 0x8 + + .globl gUnknown_85D7B40 +gUnknown_85D7B40: @ 0x85D7B40 + .incbin "baserom_jp.gba", 0x5d7b40, 0x8 + + .globl gUnknown_85D7B48 +gUnknown_85D7B48: @ 0x85D7B48 + .incbin "baserom_jp.gba", 0x5d7b48, 0x20 + + .globl gUnknown_85D7B68 +gUnknown_85D7B68: @ 0x85D7B68 + .incbin "baserom_jp.gba", 0x5d7b68, 0x4 + + .globl gUnknown_85D7B6C +gUnknown_85D7B6C: @ 0x85D7B6C + .incbin "baserom_jp.gba", 0x5d7b6c, 0x4 + + .globl gUnknown_85D7B70 +gUnknown_85D7B70: @ 0x85D7B70 + .incbin "baserom_jp.gba", 0x5d7b70, 0x68 + + .globl gUnknown_85D7BD8 +gUnknown_85D7BD8: @ 0x85D7BD8 + .incbin "baserom_jp.gba", 0x5d7bd8, 0x20 + + .globl gUnknown_85D7BF8 +gUnknown_85D7BF8: @ 0x85D7BF8 + .incbin "baserom_jp.gba", 0x5d7bf8, 0x20 + + .globl gUnknown_85D7C18 +gUnknown_85D7C18: @ 0x85D7C18 + .incbin "baserom_jp.gba", 0x5d7c18, 0x20 + + .globl gUnknown_85D7C38 +gUnknown_85D7C38: @ 0x85D7C38 + .incbin "baserom_jp.gba", 0x5d7c38, 0x2000 + + .globl gUnknown_85D9C38 +gUnknown_85D9C38: @ 0x85D9C38 + .incbin "baserom_jp.gba", 0x5d9c38, 0x1100 + + .globl gUnknown_85DAD38 +gUnknown_85DAD38: @ 0x85DAD38 + .incbin "baserom_jp.gba", 0x5dad38, 0x440 + + .globl gUnknown_85DB178 +gUnknown_85DB178: @ 0x85DB178 + .incbin "baserom_jp.gba", 0x5db178, 0x800 + + .globl gUnknown_85DB978 +gUnknown_85DB978: @ 0x85DB978 + .incbin "baserom_jp.gba", 0x5db978, 0x100 + + .globl gUnknown_85DBA78 +gUnknown_85DBA78: @ 0x85DBA78 + .incbin "baserom_jp.gba", 0x5dba78, 0x60 + + .globl gUnknown_85DBAD8 +gUnknown_85DBAD8: @ 0x85DBAD8 + .incbin "baserom_jp.gba", 0x5dbad8, 0x40 + + .globl gUnknown_85DBB18 +gUnknown_85DBB18: @ 0x85DBB18 + .incbin "baserom_jp.gba", 0x5dbb18, 0x20 + + .globl gUnknown_85DBB38 +gUnknown_85DBB38: @ 0x85DBB38 + .incbin "baserom_jp.gba", 0x5dbb38, 0x28 + + .globl gUnknown_85DBB60 +gUnknown_85DBB60: @ 0x85DBB60 + .incbin "baserom_jp.gba", 0x5dbb60, 0x10 + + .globl gUnknown_85DBB70 +gUnknown_85DBB70: @ 0x85DBB70 + .incbin "baserom_jp.gba", 0x5dbb70, 0x28 + + .globl gUnknown_85DBB98 +gUnknown_85DBB98: @ 0x85DBB98 + .incbin "baserom_jp.gba", 0x5dbb98, 0x9 + + .globl gUnknown_85DBBA1 +gUnknown_85DBBA1: @ 0x85DBBA1 + .incbin "baserom_jp.gba", 0x5dbba1, 0x14 + + .globl gUnknown_85DBBB5 +gUnknown_85DBBB5: @ 0x85DBBB5 + .incbin "baserom_jp.gba", 0x5dbbb5, 0x14 + + .globl gUnknown_85DBBC9 +gUnknown_85DBBC9: @ 0x85DBBC9 + .incbin "baserom_jp.gba", 0x5dbbc9, 0x14 + + .globl gUnknown_85DBBDD +gUnknown_85DBBDD: @ 0x85DBBDD + .incbin "baserom_jp.gba", 0x5dbbdd, 0x7 + + .globl gUnknown_85DBBE4 +gUnknown_85DBBE4: @ 0x85DBBE4 + .incbin "baserom_jp.gba", 0x5dbbe4, 0x7 + + .globl gUnknown_85DBBEB +gUnknown_85DBBEB: @ 0x85DBBEB + .incbin "baserom_jp.gba", 0x5dbbeb, 0x7 + + .globl gUnknown_85DBBF2 +gUnknown_85DBBF2: @ 0x85DBBF2 + .incbin "baserom_jp.gba", 0x5dbbf2, 0x4 + + .globl gUnknown_85DBBF6 +gUnknown_85DBBF6: @ 0x85DBBF6 + .incbin "baserom_jp.gba", 0x5dbbf6, 0x14 + + .globl gUnknown_85DBC0A +gUnknown_85DBC0A: @ 0x85DBC0A + .incbin "baserom_jp.gba", 0x5dbc0a, 0x3 + + .globl gUnknown_85DBC0D +gUnknown_85DBC0D: @ 0x85DBC0D + .incbin "baserom_jp.gba", 0x5dbc0d, 0x4 + + .globl gUnknown_85DBC11 +gUnknown_85DBC11: @ 0x85DBC11 + .incbin "baserom_jp.gba", 0x5dbc11, 0x13 + + .globl gUnknown_85DBC24 +gUnknown_85DBC24: @ 0x85DBC24 + .incbin "baserom_jp.gba", 0x5dbc24, 0xc + + .globl gUnknown_85DBC30 +gUnknown_85DBC30: @ 0x85DBC30 + .incbin "baserom_jp.gba", 0x5dbc30, 0xc + + .globl gUnknown_85DBC3C +gUnknown_85DBC3C: @ 0x85DBC3C + .incbin "baserom_jp.gba", 0x5dbc3c, 0x38 + + .globl gUnknown_85DBC74 +gUnknown_85DBC74: @ 0x85DBC74 + .incbin "baserom_jp.gba", 0x5dbc74, 0xa + + .globl gUnknown_85DBC7E +gUnknown_85DBC7E: @ 0x85DBC7E + .incbin "baserom_jp.gba", 0x5dbc7e, 0x3 + + .globl gUnknown_85DBC81 +gUnknown_85DBC81: @ 0x85DBC81 + .incbin "baserom_jp.gba", 0x5dbc81, 0x15f + + .globl gUnknown_85DBDE0 +gUnknown_85DBDE0: @ 0x85DBDE0 + .incbin "baserom_jp.gba", 0x5dbde0, 0x18 + + .globl gUnknown_85DBDF8 +gUnknown_85DBDF8: @ 0x85DBDF8 + .incbin "baserom_jp.gba", 0x5dbdf8, 0x18 + + .globl gUnknown_85DBE10 +gUnknown_85DBE10: @ 0x85DBE10 + .incbin "baserom_jp.gba", 0x5dbe10, 0x18 + + .globl gUnknown_85DBE28 +gUnknown_85DBE28: @ 0x85DBE28 + .incbin "baserom_jp.gba", 0x5dbe28, 0x18 + + .globl gUnknown_85DBE40 +gUnknown_85DBE40: @ 0x85DBE40 + .incbin "baserom_jp.gba", 0x5dbe40, 0x18 + + .globl gUnknown_85DBE58 +gUnknown_85DBE58: @ 0x85DBE58 + .incbin "baserom_jp.gba", 0x5dbe58, 0x50 + + .globl gUnknown_85DBEA8 +gUnknown_85DBEA8: @ 0x85DBEA8 + .incbin "baserom_jp.gba", 0x5dbea8, 0x10 + + .globl gUnknown_85DBEB8 +gUnknown_85DBEB8: @ 0x85DBEB8 + .incbin "baserom_jp.gba", 0x5dbeb8, 0x184 + + .globl gUnknown_85DC03C +gUnknown_85DC03C: @ 0x85DC03C + .incbin "baserom_jp.gba", 0x5dc03c, 0x18 + + .globl gUnknown_85DC054 +gUnknown_85DC054: @ 0x85DC054 + .incbin "baserom_jp.gba", 0x5dc054, 0x18 + + .globl gUnknown_85DC06C +gUnknown_85DC06C: @ 0x85DC06C + .incbin "baserom_jp.gba", 0x5dc06c, 0x18 + + .globl gUnknown_85DC084 +gUnknown_85DC084: @ 0x85DC084 + .incbin "baserom_jp.gba", 0x5dc084, 0x18 + + .globl gUnknown_85DC09C +gUnknown_85DC09C: @ 0x85DC09C + .incbin "baserom_jp.gba", 0x5dc09c, 0x18 + + .globl gUnknown_85DC0B4 +gUnknown_85DC0B4: @ 0x85DC0B4 + .incbin "baserom_jp.gba", 0x5dc0b4, 0xe + + .globl gUnknown_85DC0C2 +gUnknown_85DC0C2: @ 0x85DC0C2 + .incbin "baserom_jp.gba", 0x5dc0c2, 0x13 + + .globl gUnknown_85DC0D5 +gUnknown_85DC0D5: @ 0x85DC0D5 + .incbin "baserom_jp.gba", 0x5dc0d5, 0x13 + + .globl gUnknown_85DC0E8 +gUnknown_85DC0E8: @ 0x85DC0E8 + .incbin "baserom_jp.gba", 0x5dc0e8, 0x5 + + .globl gUnknown_85DC0ED +gUnknown_85DC0ED: @ 0x85DC0ED + .incbin "baserom_jp.gba", 0x5dc0ed, 0x7 + + .globl gUnknown_85DC0F4 +gUnknown_85DC0F4: @ 0x85DC0F4 + .incbin "baserom_jp.gba", 0x5dc0f4, 0x7 + + .globl gUnknown_85DC0FB +gUnknown_85DC0FB: @ 0x85DC0FB + .incbin "baserom_jp.gba", 0x5dc0fb, 0x11 + + .globl gUnknown_85DC10C +gUnknown_85DC10C: @ 0x85DC10C + .incbin "baserom_jp.gba", 0x5dc10c, 0x3 + + .globl gUnknown_85DC10F +gUnknown_85DC10F: @ 0x85DC10F + .incbin "baserom_jp.gba", 0x5dc10f, 0x4 + + .globl gUnknown_85DC113 +gUnknown_85DC113: @ 0x85DC113 + .incbin "baserom_jp.gba", 0x5dc113, 0x9 + + .globl gUnknown_85DC11C +gUnknown_85DC11C: @ 0x85DC11C + .incbin "baserom_jp.gba", 0x5dc11c, 0x5 + + .globl gUnknown_85DC121 +gUnknown_85DC121: @ 0x85DC121 + .incbin "baserom_jp.gba", 0x5dc121, 0x5 + + .globl gUnknown_85DC126 +gUnknown_85DC126: @ 0x85DC126 + .incbin "baserom_jp.gba", 0x5dc126, 0x5 + + .globl gUnknown_85DC12B +gUnknown_85DC12B: @ 0x85DC12B + .incbin "baserom_jp.gba", 0x5dc12b, 0x11 + + .globl gUnknown_85DC13C +gUnknown_85DC13C: @ 0x85DC13C + .incbin "baserom_jp.gba", 0x5dc13c, 0x5 + + .globl gUnknown_85DC141 +gUnknown_85DC141: @ 0x85DC141 + .incbin "baserom_jp.gba", 0x5dc141, 0x17 + + .globl gUnknown_85DC158 +gUnknown_85DC158: @ 0x85DC158 + .incbin "baserom_jp.gba", 0x5dc158, 0xc + + .globl gUnknown_85DC164 +gUnknown_85DC164: @ 0x85DC164 + .incbin "baserom_jp.gba", 0x5dc164, 0x10 + + .globl gUnknown_85DC174 +gUnknown_85DC174: @ 0x85DC174 + .incbin "baserom_jp.gba", 0x5dc174, 0x50 + + .globl gUnknown_85DC1C4 +gUnknown_85DC1C4: @ 0x85DC1C4 + .incbin "baserom_jp.gba", 0x5dc1c4, 0xa + + .globl gUnknown_85DC1CE +gUnknown_85DC1CE: @ 0x85DC1CE + .incbin "baserom_jp.gba", 0x5dc1ce, 0x3 + + .globl gUnknown_85DC1D1 +gUnknown_85DC1D1: @ 0x85DC1D1 + .incbin "baserom_jp.gba", 0x5dc1d1, 0x3 + + .globl gUnknown_85DC1D4 +gUnknown_85DC1D4: @ 0x85DC1D4 + .incbin "baserom_jp.gba", 0x5dc1d4, 0x20 + + .globl gUnknown_85DC1F4 +gUnknown_85DC1F4: @ 0x85DC1F4 + .incbin "baserom_jp.gba", 0x5dc1f4, 0x28 + + .globl gUnknown_85DC21C +gUnknown_85DC21C: @ 0x85DC21C + .incbin "baserom_jp.gba", 0x5dc21c, 0xc + + .globl gUnknown_85DC228 +gUnknown_85DC228: @ 0x85DC228 + .incbin "baserom_jp.gba", 0x5dc228, 0x16 + + .globl gUnknown_85DC23E +gUnknown_85DC23E: @ 0x85DC23E + .incbin "baserom_jp.gba", 0x5dc23e, 0x2de + + .globl gUnknown_85DC51C +gUnknown_85DC51C: @ 0x85DC51C + .incbin "baserom_jp.gba", 0x5dc51c, 0x100 + + .globl gUnknown_85DC61C +gUnknown_85DC61C: @ 0x85DC61C + .incbin "baserom_jp.gba", 0x5dc61c, 0x80 + + .globl gUnknown_85DC69C +gUnknown_85DC69C: @ 0x85DC69C + .incbin "baserom_jp.gba", 0x5dc69c, 0x140 + + .globl gUnknown_85DC7DC +gUnknown_85DC7DC: @ 0x85DC7DC + .incbin "baserom_jp.gba", 0x5dc7dc, 0x80 + + .globl gUnknown_85DC85C +gUnknown_85DC85C: @ 0x85DC85C + .incbin "baserom_jp.gba", 0x5dc85c, 0x80 + + .globl gUnknown_85DC8DC +gUnknown_85DC8DC: @ 0x85DC8DC + .incbin "baserom_jp.gba", 0x5dc8dc, 0x80 + + .globl gUnknown_85DC95C +gUnknown_85DC95C: @ 0x85DC95C + .incbin "baserom_jp.gba", 0x5dc95c, 0x40 + + .globl gUnknown_85DC99C +gUnknown_85DC99C: @ 0x85DC99C + .incbin "baserom_jp.gba", 0x5dc99c, 0x163 + + .globl gUnknown_85DCAFF +gUnknown_85DCAFF: @ 0x85DCAFF + .incbin "baserom_jp.gba", 0x5dcaff, 0xd + + .globl gUnknown_85DCB0C +gUnknown_85DCB0C: @ 0x85DCB0C + .incbin "baserom_jp.gba", 0x5dcb0c, 0x68 + + .globl gUnknown_85DCB74 +gUnknown_85DCB74: @ 0x85DCB74 + .incbin "baserom_jp.gba", 0x5dcb74, 0x8 + + .globl gUnknown_85DCB7C +gUnknown_85DCB7C: @ 0x85DCB7C + .incbin "baserom_jp.gba", 0x5dcb7c, 0x1c + + .globl gUnknown_85DCB98 +gUnknown_85DCB98: @ 0x85DCB98 + .incbin "baserom_jp.gba", 0x5dcb98, 0xc + + .globl gUnknown_85DCBA4 +gUnknown_85DCBA4: @ 0x85DCBA4 + .incbin "baserom_jp.gba", 0x5dcba4, 0x33c + + .globl gUnknown_85DCEE0 +gUnknown_85DCEE0: @ 0x85DCEE0 + .incbin "baserom_jp.gba", 0x5dcee0, 0x348 + + .globl gUnknown_85DD228 +gUnknown_85DD228: @ 0x85DD228 + .incbin "baserom_jp.gba", 0x5dd228, 0x1c + + .globl gUnknown_85DD244 +gUnknown_85DD244: @ 0x85DD244 + .incbin "baserom_jp.gba", 0x5dd244, 0x5c + + .globl gUnknown_85DD2A0 +gUnknown_85DD2A0: @ 0x85DD2A0 + .incbin "baserom_jp.gba", 0x5dd2a0, 0x8 + + .globl gUnknown_85DD2A8 +gUnknown_85DD2A8: @ 0x85DD2A8 + .incbin "baserom_jp.gba", 0x5dd2a8, 0x8 + + .globl gUnknown_85DD2B0 +gUnknown_85DD2B0: @ 0x85DD2B0 + .incbin "baserom_jp.gba", 0x5dd2b0, 0x8 + + .globl gUnknown_85DD2B8 +gUnknown_85DD2B8: @ 0x85DD2B8 + .incbin "baserom_jp.gba", 0x5dd2b8, 0x8 + + .globl gUnknown_85DD2C0 +gUnknown_85DD2C0: @ 0x85DD2C0 + .incbin "baserom_jp.gba", 0x5dd2c0, 0x8 + + .globl gUnknown_85DD2C8 +gUnknown_85DD2C8: @ 0x85DD2C8 + .incbin "baserom_jp.gba", 0x5dd2c8, 0x8 + + .globl gUnknown_85DD2D0 +gUnknown_85DD2D0: @ 0x85DD2D0 + .incbin "baserom_jp.gba", 0x5dd2d0, 0x8 + + .globl gUnknown_85DD2D8 +gUnknown_85DD2D8: @ 0x85DD2D8 + .incbin "baserom_jp.gba", 0x5dd2d8, 0x8 + + .globl gUnknown_85DD2E0 +gUnknown_85DD2E0: @ 0x85DD2E0 + .incbin "baserom_jp.gba", 0x5dd2e0, 0x8 + + .globl gUnknown_85DD2E8 +gUnknown_85DD2E8: @ 0x85DD2E8 + .incbin "baserom_jp.gba", 0x5dd2e8, 0x4 + + .globl gUnknown_85DD2EC +gUnknown_85DD2EC: @ 0x85DD2EC + .incbin "baserom_jp.gba", 0x5dd2ec, 0x17 + + .globl gUnknown_85DD303 +gUnknown_85DD303: @ 0x85DD303 + .incbin "baserom_jp.gba", 0x5dd303, 0x17 + + .globl gUnknown_85DD31A +gUnknown_85DD31A: @ 0x85DD31A + .incbin "baserom_jp.gba", 0x5dd31a, 0x17 + + .globl gUnknown_85DD331 +gUnknown_85DD331: @ 0x85DD331 + .incbin "baserom_jp.gba", 0x5dd331, 0x19 + + .globl gUnknown_85DD34A +gUnknown_85DD34A: @ 0x85DD34A + .incbin "baserom_jp.gba", 0x5dd34a, 0x19 + + .globl gUnknown_85DD363 +gUnknown_85DD363: @ 0x85DD363 + .incbin "baserom_jp.gba", 0x5dd363, 0x18 + + .globl gUnknown_85DD37B +gUnknown_85DD37B: @ 0x85DD37B + .incbin "baserom_jp.gba", 0x5dd37b, 0x16 + + .globl gUnknown_85DD391 +gUnknown_85DD391: @ 0x85DD391 + .incbin "baserom_jp.gba", 0x5dd391, 0x15 + + .globl gUnknown_85DD3A6 +gUnknown_85DD3A6: @ 0x85DD3A6 + .incbin "baserom_jp.gba", 0x5dd3a6, 0x11 + + .globl gUnknown_85DD3B7 +gUnknown_85DD3B7: @ 0x85DD3B7 + .incbin "baserom_jp.gba", 0x5dd3b7, 0x15 + + .globl gUnknown_85DD3CC +gUnknown_85DD3CC: @ 0x85DD3CC + .incbin "baserom_jp.gba", 0x5dd3cc, 0x17 + + .globl gUnknown_85DD3E3 +gUnknown_85DD3E3: @ 0x85DD3E3 + .incbin "baserom_jp.gba", 0x5dd3e3, 0x16 + + .globl gUnknown_85DD3F9 +gUnknown_85DD3F9: @ 0x85DD3F9 + .incbin "baserom_jp.gba", 0x5dd3f9, 0x15 + + .globl gUnknown_85DD40E +gUnknown_85DD40E: @ 0x85DD40E + .incbin "baserom_jp.gba", 0x5dd40e, 0x7 + + .globl gUnknown_85DD415 +gUnknown_85DD415: @ 0x85DD415 + .incbin "baserom_jp.gba", 0x5dd415, 0x8 + + .globl gUnknown_85DD41D +gUnknown_85DD41D: @ 0x85DD41D + .incbin "baserom_jp.gba", 0x5dd41d, 0x8 + + .globl gUnknown_85DD425 +gUnknown_85DD425: @ 0x85DD425 + .incbin "baserom_jp.gba", 0x5dd425, 0x5 + + .globl gUnknown_85DD42A +gUnknown_85DD42A: @ 0x85DD42A + .incbin "baserom_jp.gba", 0x5dd42a, 0x5 + + .globl gUnknown_85DD42F +gUnknown_85DD42F: @ 0x85DD42F + .incbin "baserom_jp.gba", 0x5dd42f, 0x9 + + .globl gUnknown_85DD438 +gUnknown_85DD438: @ 0x85DD438 + .incbin "baserom_jp.gba", 0x5dd438, 0xa + + .globl gUnknown_85DD442 +gUnknown_85DD442: @ 0x85DD442 + .incbin "baserom_jp.gba", 0x5dd442, 0x5 + + .globl gUnknown_85DD447 +gUnknown_85DD447: @ 0x85DD447 + .incbin "baserom_jp.gba", 0x5dd447, 0x6 + + .globl gUnknown_85DD44D +gUnknown_85DD44D: @ 0x85DD44D + .incbin "baserom_jp.gba", 0x5dd44d, 0xb + + .globl gUnknown_85DD458 +gUnknown_85DD458: @ 0x85DD458 + .incbin "baserom_jp.gba", 0x5dd458, 0x9 + + .globl gUnknown_85DD461 +gUnknown_85DD461: @ 0x85DD461 + .incbin "baserom_jp.gba", 0x5dd461, 0x9 + + .globl gUnknown_85DD46A +gUnknown_85DD46A: @ 0x85DD46A + .incbin "baserom_jp.gba", 0x5dd46a, 0x7 + + .globl gUnknown_85DD471 +gUnknown_85DD471: @ 0x85DD471 + .incbin "baserom_jp.gba", 0x5dd471, 0x5 + + .globl gUnknown_85DD476 +gUnknown_85DD476: @ 0x85DD476 + .incbin "baserom_jp.gba", 0x5dd476, 0x9 + + .globl gUnknown_85DD47F +gUnknown_85DD47F: @ 0x85DD47F + .incbin "baserom_jp.gba", 0x5dd47f, 0xf + + .globl gUnknown_85DD48E +gUnknown_85DD48E: @ 0x85DD48E + .incbin "baserom_jp.gba", 0x5dd48e, 0x16 + + .globl gUnknown_85DD4A4 +gUnknown_85DD4A4: @ 0x85DD4A4 + .incbin "baserom_jp.gba", 0x5dd4a4, 0x60 + + .globl gUnknown_85DD504 +gUnknown_85DD504: @ 0x85DD504 + .incbin "baserom_jp.gba", 0x5dd504, 0x38 + + .globl gUnknown_85DD53C +gUnknown_85DD53C: @ 0x85DD53C + .incbin "baserom_jp.gba", 0x5dd53c, 0x28 + + .globl gUnknown_85DD564 +gUnknown_85DD564: @ 0x85DD564 + .incbin "baserom_jp.gba", 0x5dd564, 0x6 + + .globl gUnknown_85DD56A +gUnknown_85DD56A: @ 0x85DD56A + .incbin "baserom_jp.gba", 0x5dd56a, 0x7e + + .globl gUnknown_85DD5E8 +gUnknown_85DD5E8: @ 0x85DD5E8 + .incbin "baserom_jp.gba", 0x5dd5e8, 0x8 + + .globl gUnknown_85DD5F0 +gUnknown_85DD5F0: @ 0x85DD5F0 + .incbin "baserom_jp.gba", 0x5dd5f0, 0x8 + + .globl gUnknown_85DD5F8 +gUnknown_85DD5F8: @ 0x85DD5F8 + .incbin "baserom_jp.gba", 0x5dd5f8, 0x19c + + .globl gUnknown_85DD794 +gUnknown_85DD794: @ 0x85DD794 + .incbin "baserom_jp.gba", 0x5dd794, 0x18 + + .globl gUnknown_85DD7AC +gUnknown_85DD7AC: @ 0x85DD7AC + .incbin "baserom_jp.gba", 0x5dd7ac, 0x10 + + .globl gUnknown_85DD7BC +gUnknown_85DD7BC: @ 0x85DD7BC + .incbin "baserom_jp.gba", 0x5dd7bc, 0x1c + + .globl gUnknown_85DD7D8 +gUnknown_85DD7D8: @ 0x85DD7D8 + .incbin "baserom_jp.gba", 0x5dd7d8, 0xc + + .globl gUnknown_85DD7E4 +gUnknown_85DD7E4: @ 0x85DD7E4 + .incbin "baserom_jp.gba", 0x5dd7e4, 0x14 + + .globl gUnknown_85DD7F8 +gUnknown_85DD7F8: @ 0x85DD7F8 + .incbin "baserom_jp.gba", 0x5dd7f8, 0x144 + + .globl gUnknown_85DD93C +gUnknown_85DD93C: @ 0x85DD93C + .incbin "baserom_jp.gba", 0x5dd93c, 0x1c + + .globl gUnknown_85DD958 +gUnknown_85DD958: @ 0x85DD958 + .incbin "baserom_jp.gba", 0x5dd958, 0x44 + + .globl gUnknown_85DD99C +gUnknown_85DD99C: @ 0x85DD99C + .incbin "baserom_jp.gba", 0x5dd99c, 0x10 + + .globl gUnknown_85DD9AC +gUnknown_85DD9AC: @ 0x85DD9AC + .incbin "baserom_jp.gba", 0x5dd9ac, 0x10 + + .globl gUnknown_85DD9BC +gUnknown_85DD9BC: @ 0x85DD9BC + .incbin "baserom_jp.gba", 0x5dd9bc, 0x10 + + .globl gUnknown_85DD9CC +gUnknown_85DD9CC: @ 0x85DD9CC + .incbin "baserom_jp.gba", 0x5dd9cc, 0x180 + + .globl gUnknown_85DDB4C +gUnknown_85DDB4C: @ 0x85DDB4C + .incbin "baserom_jp.gba", 0x5ddb4c, 0x8 + + .globl gUnknown_85DDB54 +gUnknown_85DDB54: @ 0x85DDB54 + .incbin "baserom_jp.gba", 0x5ddb54, 0xc8 + + .globl gUnknown_85DDC1C +gUnknown_85DDC1C: @ 0x85DDC1C + .incbin "baserom_jp.gba", 0x5ddc1c, 0x1f8 + + .globl gUnknown_85DDE14 +gUnknown_85DDE14: @ 0x85DDE14 + .incbin "baserom_jp.gba", 0x5dde14, 0x1c + + .globl gUnknown_85DDE30 +gUnknown_85DDE30: @ 0x85DDE30 + .incbin "baserom_jp.gba", 0x5dde30, 0x74 + + .globl gUnknown_85DDEA4 +gUnknown_85DDEA4: @ 0x85DDEA4 + .incbin "baserom_jp.gba", 0x5ddea4, 0x9 + + .globl gUnknown_85DDEAD +gUnknown_85DDEAD: @ 0x85DDEAD + .incbin "baserom_jp.gba", 0x5ddead, 0x13 + + .globl gUnknown_85DDEC0 +gUnknown_85DDEC0: @ 0x85DDEC0 + .incbin "baserom_jp.gba", 0x5ddec0, 0x8 + + .globl gUnknown_85DDEC8 +gUnknown_85DDEC8: @ 0x85DDEC8 + .incbin "baserom_jp.gba", 0x5ddec8, 0x8 + + .globl gUnknown_85DDED0 +gUnknown_85DDED0: @ 0x85DDED0 + .incbin "baserom_jp.gba", 0x5dded0, 0x4 + + .globl gUnknown_85DDED4 +gUnknown_85DDED4: @ 0x85DDED4 + .incbin "baserom_jp.gba", 0x5dded4, 0x4 + + .globl gUnknown_85DDED8 +gUnknown_85DDED8: @ 0x85DDED8 + .incbin "baserom_jp.gba", 0x5dded8, 0x4 + + .globl gUnknown_85DDEDC +gUnknown_85DDEDC: @ 0x85DDEDC + .incbin "baserom_jp.gba", 0x5ddedc, 0x4 + + .globl gUnknown_85DDEE0 +gUnknown_85DDEE0: @ 0x85DDEE0 + .incbin "baserom_jp.gba", 0x5ddee0, 0x2 + + .globl gUnknown_85DDEE2 +gUnknown_85DDEE2: @ 0x85DDEE2 + .incbin "baserom_jp.gba", 0x5ddee2, 0x2 + + .globl gUnknown_85DDEE4 +gUnknown_85DDEE4: @ 0x85DDEE4 + .incbin "baserom_jp.gba", 0x5ddee4, 0x2 + + .globl gUnknown_85DDEE6 +gUnknown_85DDEE6: @ 0x85DDEE6 + .incbin "baserom_jp.gba", 0x5ddee6, 0x782 + + .globl gUnknown_85DE668 +gUnknown_85DE668: @ 0x85DE668 + .incbin "baserom_jp.gba", 0x5de668, 0x7d0 + + .globl gUnknown_85DEE38 +gUnknown_85DEE38: @ 0x85DEE38 + .incbin "baserom_jp.gba", 0x5dee38, 0x50 + + .globl gUnknown_85DEE88 +gUnknown_85DEE88: @ 0x85DEE88 + .incbin "baserom_jp.gba", 0x5dee88, 0x5 + + .globl gUnknown_85DEE8D +gUnknown_85DEE8D: @ 0x85DEE8D + .incbin "baserom_jp.gba", 0x5dee8d, 0xfb + + .globl gUnknown_85DEF88 +gUnknown_85DEF88: @ 0x85DEF88 + .incbin "baserom_jp.gba", 0x5def88, 0x44 + + .globl gUnknown_85DEFCC +gUnknown_85DEFCC: @ 0x85DEFCC + .incbin "baserom_jp.gba", 0x5defcc, 0x8 + + .globl gUnknown_85DEFD4 +gUnknown_85DEFD4: @ 0x85DEFD4 + .incbin "baserom_jp.gba", 0x5defd4, 0x190 + + .globl gUnknown_85DF164 +gUnknown_85DF164: @ 0x85DF164 + .incbin "baserom_jp.gba", 0x5df164, 0x190 + + .globl gUnknown_85DF2F4 +gUnknown_85DF2F4: @ 0x85DF2F4 + .incbin "baserom_jp.gba", 0x5df2f4, 0x7e + + .globl gUnknown_85DF372 +gUnknown_85DF372: @ 0x85DF372 + .incbin "baserom_jp.gba", 0x5df372, 0xa + + .globl gUnknown_85DF37C +gUnknown_85DF37C: @ 0x85DF37C + .incbin "baserom_jp.gba", 0x5df37c, 0xd8 + + .globl gUnknown_85DF454 +gUnknown_85DF454: @ 0x85DF454 + .incbin "baserom_jp.gba", 0x5df454, 0x2a4 + + .globl gUnknown_85DF6F8 +gUnknown_85DF6F8: @ 0x85DF6F8 + .incbin "baserom_jp.gba", 0x5df6f8, 0x18 + + .globl gUnknown_85DF710 +gUnknown_85DF710: @ 0x85DF710 + .incbin "baserom_jp.gba", 0x5df710, 0x8 + + .globl gUnknown_85DF718 +gUnknown_85DF718: @ 0x85DF718 + .incbin "baserom_jp.gba", 0x5df718, 0x48 + + .globl gUnknown_85DF760 +gUnknown_85DF760: @ 0x85DF760 + .incbin "baserom_jp.gba", 0x5df760, 0xc + + .globl gUnknown_85DF76C +gUnknown_85DF76C: @ 0x85DF76C + .incbin "baserom_jp.gba", 0x5df76c, 0x12 + + .globl gUnknown_85DF77E +gUnknown_85DF77E: @ 0x85DF77E + .incbin "baserom_jp.gba", 0x5df77e, 0x40 + + .globl gUnknown_85DF7BE +gUnknown_85DF7BE: @ 0x85DF7BE + .incbin "baserom_jp.gba", 0x5df7be, 0xa + + .globl gUnknown_85DF7C8 +gUnknown_85DF7C8: @ 0x85DF7C8 + .incbin "baserom_jp.gba", 0x5df7c8, 0xc + + .globl gUnknown_85DF7D4 +gUnknown_85DF7D4: @ 0x85DF7D4 + .incbin "baserom_jp.gba", 0x5df7d4, 0x18 + + .globl gUnknown_85DF7EC +gUnknown_85DF7EC: @ 0x85DF7EC + .incbin "baserom_jp.gba", 0x5df7ec, 0x78 + + .globl gUnknown_85DF864 +gUnknown_85DF864: @ 0x85DF864 + .incbin "baserom_jp.gba", 0x5df864, 0x4 + + .globl gUnknown_85DF868 +gUnknown_85DF868: @ 0x85DF868 + .incbin "baserom_jp.gba", 0x5df868, 0x4 + + .globl gUnknown_85DF86C +gUnknown_85DF86C: @ 0x85DF86C + .incbin "baserom_jp.gba", 0x5df86c, 0x4 + + .globl gUnknown_85DF870 +gUnknown_85DF870: @ 0x85DF870 + .incbin "baserom_jp.gba", 0x5df870, 0x4 + + .globl gUnknown_85DF874 +gUnknown_85DF874: @ 0x85DF874 + .incbin "baserom_jp.gba", 0x5df874, 0x6 + + .globl gUnknown_85DF87A +gUnknown_85DF87A: @ 0x85DF87A + .incbin "baserom_jp.gba", 0x5df87a, 0x2 + + .globl gUnknown_85DF87C +gUnknown_85DF87C: @ 0x85DF87C + .incbin "baserom_jp.gba", 0x5df87c, 0x2 + + .globl gUnknown_85DF87E +gUnknown_85DF87E: @ 0x85DF87E + .incbin "baserom_jp.gba", 0x5df87e, 0x1 + + .globl gUnknown_85DF87F +gUnknown_85DF87F: @ 0x85DF87F + .incbin "baserom_jp.gba", 0x5df87f, 0x4 + + .globl gUnknown_85DF883 +gUnknown_85DF883: @ 0x85DF883 + .incbin "baserom_jp.gba", 0x5df883, 0x2 + + .globl gUnknown_85DF885 +gUnknown_85DF885: @ 0x85DF885 + .incbin "baserom_jp.gba", 0x5df885, 0x2 + + .globl gUnknown_85DF887 +gUnknown_85DF887: @ 0x85DF887 + .incbin "baserom_jp.gba", 0x5df887, 0x5 + + .globl gUnknown_85DF88C +gUnknown_85DF88C: @ 0x85DF88C + .incbin "baserom_jp.gba", 0x5df88c, 0x30 + + .globl gUnknown_85DF8BC +gUnknown_85DF8BC: @ 0x85DF8BC + .incbin "baserom_jp.gba", 0x5df8bc, 0x8 + + .globl gUnknown_85DF8C4 +gUnknown_85DF8C4: @ 0x85DF8C4 + .incbin "baserom_jp.gba", 0x5df8c4, 0x8 + + .globl gUnknown_85DF8CC +gUnknown_85DF8CC: @ 0x85DF8CC + .incbin "baserom_jp.gba", 0x5df8cc, 0x10 + + .globl gUnknown_85DF8DC +gUnknown_85DF8DC: @ 0x85DF8DC + .incbin "baserom_jp.gba", 0x5df8dc, 0xc0 + + .globl gUnknown_85DF99C +gUnknown_85DF99C: @ 0x85DF99C + .incbin "baserom_jp.gba", 0x5df99c, 0x80 + + .globl gUnknown_85DFA1C +gUnknown_85DFA1C: @ 0x85DFA1C + .incbin "baserom_jp.gba", 0x5dfa1c, 0x10 + + .globl gUnknown_85DFA2C +gUnknown_85DFA2C: @ 0x85DFA2C + .incbin "baserom_jp.gba", 0x5dfa2c, 0x38 + + .globl gUnknown_85DFA64 +gUnknown_85DFA64: @ 0x85DFA64 + .incbin "baserom_jp.gba", 0x5dfa64, 0x50 + + .globl gUnknown_85DFAB4 +gUnknown_85DFAB4: @ 0x85DFAB4 + .incbin "baserom_jp.gba", 0x5dfab4, 0x48 + + .globl gUnknown_85DFAFC +gUnknown_85DFAFC: @ 0x85DFAFC + .incbin "baserom_jp.gba", 0x5dfafc, 0x18 + + .globl gUnknown_85DFB14 +gUnknown_85DFB14: @ 0x85DFB14 + .incbin "baserom_jp.gba", 0x5dfb14, 0x4 + + .globl gUnknown_85DFB18 +gUnknown_85DFB18: @ 0x85DFB18 + .incbin "baserom_jp.gba", 0x5dfb18, 0x4 + + .globl gUnknown_85DFB1C +gUnknown_85DFB1C: @ 0x85DFB1C + .incbin "baserom_jp.gba", 0x5dfb1c, 0x4 + + .globl gUnknown_85DFB20 +gUnknown_85DFB20: @ 0x85DFB20 + .incbin "baserom_jp.gba", 0x5dfb20, 0x4 + + .globl gUnknown_85DFB24 +gUnknown_85DFB24: @ 0x85DFB24 + .incbin "baserom_jp.gba", 0x5dfb24, 0x4 + + .globl gUnknown_85DFB28 +gUnknown_85DFB28: @ 0x85DFB28 + .incbin "baserom_jp.gba", 0x5dfb28, 0x4 + + .globl gUnknown_85DFB2C +gUnknown_85DFB2C: @ 0x85DFB2C + .incbin "baserom_jp.gba", 0x5dfb2c, 0x4 + + .globl gUnknown_85DFB30 +gUnknown_85DFB30: @ 0x85DFB30 + .incbin "baserom_jp.gba", 0x5dfb30, 0x18 + + .globl gUnknown_85DFB48 +gUnknown_85DFB48: @ 0x85DFB48 + .incbin "baserom_jp.gba", 0x5dfb48, 0x18 + + .globl gUnknown_85DFB60 +gUnknown_85DFB60: @ 0x85DFB60 + .incbin "baserom_jp.gba", 0x5dfb60, 0x20 + + .globl gUnknown_85DFB80 +gUnknown_85DFB80: @ 0x85DFB80 + .incbin "baserom_jp.gba", 0x5dfb80, 0x70 + + .globl gUnknown_85DFBF0 +gUnknown_85DFBF0: @ 0x85DFBF0 + .incbin "baserom_jp.gba", 0x5dfbf0, 0x40 + + .globl gUnknown_85DFC30 +gUnknown_85DFC30: @ 0x85DFC30 + .incbin "baserom_jp.gba", 0x5dfc30, 0x44 + + .globl gUnknown_85DFC74 +gUnknown_85DFC74: @ 0x85DFC74 + .incbin "baserom_jp.gba", 0x5dfc74, 0x4e + + .globl gUnknown_85DFCC2 +gUnknown_85DFCC2: @ 0x85DFCC2 + .incbin "baserom_jp.gba", 0x5dfcc2, 0x4 + + .globl gUnknown_85DFCC6 +gUnknown_85DFCC6: @ 0x85DFCC6 + .incbin "baserom_jp.gba", 0x5dfcc6, 0x2 + + .globl gUnknown_85DFCC8 +gUnknown_85DFCC8: @ 0x85DFCC8 + .incbin "baserom_jp.gba", 0x5dfcc8, 0xbe4 + + .globl gUnknown_85E08AC +gUnknown_85E08AC: @ 0x85E08AC + .incbin "baserom_jp.gba", 0x5e08ac, 0x18 + + .globl gUnknown_85E08C4 +gUnknown_85E08C4: @ 0x85E08C4 + .incbin "baserom_jp.gba", 0x5e08c4, 0x3c + + .globl gUnknown_85E0900 +gUnknown_85E0900: @ 0x85E0900 + .incbin "baserom_jp.gba", 0x5e0900, 0x670 + + .globl gUnknown_85E0F70 +gUnknown_85E0F70: @ 0x85E0F70 + .incbin "baserom_jp.gba", 0x5e0f70, 0x2c + + .globl gUnknown_85E0F9C +gUnknown_85E0F9C: @ 0x85E0F9C + .incbin "baserom_jp.gba", 0x5e0f9c, 0x20 + + .globl gUnknown_85E0FBC +gUnknown_85E0FBC: @ 0x85E0FBC + .incbin "baserom_jp.gba", 0x5e0fbc, 0xc0 + + .globl gUnknown_85E107C +gUnknown_85E107C: @ 0x85E107C + .incbin "baserom_jp.gba", 0x5e107c, 0x1c + + .globl gUnknown_85E1098 +gUnknown_85E1098: @ 0x85E1098 + .incbin "baserom_jp.gba", 0x5e1098, 0x1c + + .globl gUnknown_85E10B4 +gUnknown_85E10B4: @ 0x85E10B4 + .incbin "baserom_jp.gba", 0x5e10b4, 0x14 + + .globl gUnknown_85E10C8 +gUnknown_85E10C8: @ 0x85E10C8 + .incbin "baserom_jp.gba", 0x5e10c8, 0x40 + + .globl gUnknown_85E1108 +gUnknown_85E1108: @ 0x85E1108 + .incbin "baserom_jp.gba", 0x5e1108, 0x40 + + .globl gUnknown_85E1148 +gUnknown_85E1148: @ 0x85E1148 + .incbin "baserom_jp.gba", 0x5e1148, 0x40 + + .globl gUnknown_85E1188 +gUnknown_85E1188: @ 0x85E1188 + .incbin "baserom_jp.gba", 0x5e1188, 0x38 + + .globl gUnknown_85E11C0 +gUnknown_85E11C0: @ 0x85E11C0 + .incbin "baserom_jp.gba", 0x5e11c0, 0x8 + + .globl gUnknown_85E11C8 +gUnknown_85E11C8: @ 0x85E11C8 + .incbin "baserom_jp.gba", 0x5e11c8, 0x8 + + .globl gUnknown_85E11D0 +gUnknown_85E11D0: @ 0x85E11D0 + .incbin "baserom_jp.gba", 0x5e11d0, 0x8 + + .globl gUnknown_85E11D8 +gUnknown_85E11D8: @ 0x85E11D8 + .incbin "baserom_jp.gba", 0x5e11d8, 0x8 + + .globl gUnknown_85E11E0 +gUnknown_85E11E0: @ 0x85E11E0 + .incbin "baserom_jp.gba", 0x5e11e0, 0x8 + + .globl gUnknown_85E11E8 +gUnknown_85E11E8: @ 0x85E11E8 + .incbin "baserom_jp.gba", 0x5e11e8, 0x8 + + .globl gUnknown_85E11F0 +gUnknown_85E11F0: @ 0x85E11F0 + .incbin "baserom_jp.gba", 0x5e11f0, 0x8 + + .globl gUnknown_85E11F8 +gUnknown_85E11F8: @ 0x85E11F8 + .incbin "baserom_jp.gba", 0x5e11f8, 0x8 + + .globl gUnknown_85E1200 +gUnknown_85E1200: @ 0x85E1200 + .incbin "baserom_jp.gba", 0x5e1200, 0x8 + + .globl gUnknown_85E1208 +gUnknown_85E1208: @ 0x85E1208 + .incbin "baserom_jp.gba", 0x5e1208, 0x8 + + .globl gUnknown_85E1210 +gUnknown_85E1210: @ 0x85E1210 + .incbin "baserom_jp.gba", 0x5e1210, 0x8 + + .globl gUnknown_85E1218 +gUnknown_85E1218: @ 0x85E1218 + .incbin "baserom_jp.gba", 0x5e1218, 0x8 + + .globl gUnknown_85E1220 +gUnknown_85E1220: @ 0x85E1220 + .incbin "baserom_jp.gba", 0x5e1220, 0x8 + + .globl gUnknown_85E1228 +gUnknown_85E1228: @ 0x85E1228 + .incbin "baserom_jp.gba", 0x5e1228, 0x18 + + .globl gUnknown_85E1240 +gUnknown_85E1240: @ 0x85E1240 + .incbin "baserom_jp.gba", 0x5e1240, 0x46 + + .globl gUnknown_85E1286 +gUnknown_85E1286: @ 0x85E1286 + .incbin "baserom_jp.gba", 0x5e1286, 0x46 + + .globl gUnknown_85E12CC +gUnknown_85E12CC: @ 0x85E12CC + .incbin "baserom_jp.gba", 0x5e12cc, 0x36 + + .globl gUnknown_85E1302 +gUnknown_85E1302: @ 0x85E1302 + .incbin "baserom_jp.gba", 0x5e1302, 0x36 + + .globl gUnknown_85E1338 +gUnknown_85E1338: @ 0x85E1338 + .incbin "baserom_jp.gba", 0x5e1338, 0x36 + + .globl gUnknown_85E136E +gUnknown_85E136E: @ 0x85E136E + .incbin "baserom_jp.gba", 0x5e136e, 0x2 + + .globl gUnknown_85E1370 +gUnknown_85E1370: @ 0x85E1370 + .incbin "baserom_jp.gba", 0x5e1370, 0x2 + + .globl gUnknown_85E1372 +gUnknown_85E1372: @ 0x85E1372 + .incbin "baserom_jp.gba", 0x5e1372, 0x3 + + .globl gUnknown_85E1375 +gUnknown_85E1375: @ 0x85E1375 + .incbin "baserom_jp.gba", 0x5e1375, 0x3 + + .globl gUnknown_85E1378 +gUnknown_85E1378: @ 0x85E1378 + .incbin "baserom_jp.gba", 0x5e1378, 0x3 + + .globl gUnknown_85E137B +gUnknown_85E137B: @ 0x85E137B + .incbin "baserom_jp.gba", 0x5e137b, 0x2 + + .globl gUnknown_85E137D +gUnknown_85E137D: @ 0x85E137D + .incbin "baserom_jp.gba", 0x5e137d, 0x2 + + .globl gUnknown_85E137F +gUnknown_85E137F: @ 0x85E137F + .incbin "baserom_jp.gba", 0x5e137f, 0x2 + + .globl gUnknown_85E1381 +gUnknown_85E1381: @ 0x85E1381 + .incbin "baserom_jp.gba", 0x5e1381, 0x2 + + .globl gUnknown_85E1383 +gUnknown_85E1383: @ 0x85E1383 + .incbin "baserom_jp.gba", 0x5e1383, 0x2 + + .globl gUnknown_85E1385 +gUnknown_85E1385: @ 0x85E1385 + .incbin "baserom_jp.gba", 0x5e1385, 0x3 + + .globl gUnknown_85E1388 +gUnknown_85E1388: @ 0x85E1388 + .incbin "baserom_jp.gba", 0x5e1388, 0x3 + + .globl gUnknown_85E138B +gUnknown_85E138B: @ 0x85E138B + .incbin "baserom_jp.gba", 0x5e138b, 0x3 + + .globl gUnknown_85E138E +gUnknown_85E138E: @ 0x85E138E + .incbin "baserom_jp.gba", 0x5e138e, 0x3 + + .globl gUnknown_85E1391 +gUnknown_85E1391: @ 0x85E1391 + .incbin "baserom_jp.gba", 0x5e1391, 0x3 + + .globl gUnknown_85E1394 +gUnknown_85E1394: @ 0x85E1394 + .incbin "baserom_jp.gba", 0x5e1394, 0x3 + + .globl gUnknown_85E1397 +gUnknown_85E1397: @ 0x85E1397 + .incbin "baserom_jp.gba", 0x5e1397, 0x3 + + .globl gUnknown_85E139A +gUnknown_85E139A: @ 0x85E139A + .incbin "baserom_jp.gba", 0x5e139a, 0x3 + + .globl gUnknown_85E139D +gUnknown_85E139D: @ 0x85E139D + .incbin "baserom_jp.gba", 0x5e139d, 0x3 + + .globl gUnknown_85E13A0 +gUnknown_85E13A0: @ 0x85E13A0 + .incbin "baserom_jp.gba", 0x5e13a0, 0x3 + + .globl gUnknown_85E13A3 +gUnknown_85E13A3: @ 0x85E13A3 + .incbin "baserom_jp.gba", 0x5e13a3, 0x3 + + .globl gUnknown_85E13A6 +gUnknown_85E13A6: @ 0x85E13A6 + .incbin "baserom_jp.gba", 0x5e13a6, 0x3 + + .globl gUnknown_85E13A9 +gUnknown_85E13A9: @ 0x85E13A9 + .incbin "baserom_jp.gba", 0x5e13a9, 0x3 + + .globl gUnknown_85E13AC +gUnknown_85E13AC: @ 0x85E13AC + .incbin "baserom_jp.gba", 0x5e13ac, 0x6c + + .globl gUnknown_85E1418 +gUnknown_85E1418: @ 0x85E1418 + .incbin "baserom_jp.gba", 0x5e1418, 0xa8 + + .globl gUnknown_85E14C0 +gUnknown_85E14C0: @ 0x85E14C0 + .incbin "baserom_jp.gba", 0x5e14c0, 0x130 + + .globl gUnknown_85E15F0 +gUnknown_85E15F0: @ 0x85E15F0 + .incbin "baserom_jp.gba", 0x5e15f0, 0x38 + + .globl gUnknown_85E1628 +gUnknown_85E1628: @ 0x85E1628 + .incbin "baserom_jp.gba", 0x5e1628, 0xe + + .globl gUnknown_85E1636 +gUnknown_85E1636: @ 0x85E1636 + .incbin "baserom_jp.gba", 0x5e1636, 0x1e + + .globl gUnknown_85E1654 +gUnknown_85E1654: @ 0x85E1654 + .incbin "baserom_jp.gba", 0x5e1654, 0x70 + + .globl gUnknown_85E16C4 +gUnknown_85E16C4: @ 0x85E16C4 + .incbin "baserom_jp.gba", 0x5e16c4, 0xa4 + + .globl gUnknown_85E1768 +gUnknown_85E1768: @ 0x85E1768 + .incbin "baserom_jp.gba", 0x5e1768, 0x8 + + .globl gUnknown_85E1770 +gUnknown_85E1770: @ 0x85E1770 + .incbin "baserom_jp.gba", 0x5e1770, 0x8 + + .globl gUnknown_85E1778 +gUnknown_85E1778: @ 0x85E1778 + .incbin "baserom_jp.gba", 0x5e1778, 0x38 + + .globl gUnknown_85E17B0 +gUnknown_85E17B0: @ 0x85E17B0 + .incbin "baserom_jp.gba", 0x5e17b0, 0x8 + + .globl gUnknown_85E17B8 +gUnknown_85E17B8: @ 0x85E17B8 + .incbin "baserom_jp.gba", 0x5e17b8, 0x8 + + .globl gUnknown_85E17C0 +gUnknown_85E17C0: @ 0x85E17C0 + .incbin "baserom_jp.gba", 0x5e17c0, 0x68 + + .globl gUnknown_85E1828 +gUnknown_85E1828: @ 0x85E1828 + .incbin "baserom_jp.gba", 0x5e1828, 0x8 + + .globl gUnknown_85E1830 +gUnknown_85E1830: @ 0x85E1830 + .incbin "baserom_jp.gba", 0x5e1830, 0x80 + + .globl gUnknown_85E18B0 +gUnknown_85E18B0: @ 0x85E18B0 + .incbin "baserom_jp.gba", 0x5e18b0, 0x8 + + .globl gUnknown_85E18B8 +gUnknown_85E18B8: @ 0x85E18B8 + .incbin "baserom_jp.gba", 0x5e18b8, 0x8 + + .globl gUnknown_85E18C0 +gUnknown_85E18C0: @ 0x85E18C0 + .incbin "baserom_jp.gba", 0x5e18c0, 0x18 + + .globl gUnknown_85E18D8 +gUnknown_85E18D8: @ 0x85E18D8 + .incbin "baserom_jp.gba", 0x5e18d8, 0x20 + + .globl gUnknown_85E18F8 +gUnknown_85E18F8: @ 0x85E18F8 + .incbin "baserom_jp.gba", 0x5e18f8, 0x74 + + .globl gUnknown_85E196C +gUnknown_85E196C: @ 0x85E196C + .incbin "baserom_jp.gba", 0x5e196c, 0x20 + + .globl gUnknown_85E198C +gUnknown_85E198C: @ 0x85E198C + .incbin "baserom_jp.gba", 0x5e198c, 0x4 + + .globl gUnknown_85E1990 +gUnknown_85E1990: @ 0x85E1990 + .incbin "baserom_jp.gba", 0x5e1990, 0x1c + + .globl gUnknown_85E19AC +gUnknown_85E19AC: @ 0x85E19AC + .incbin "baserom_jp.gba", 0x5e19ac, 0x4 + + .globl gUnknown_85E19B0 +gUnknown_85E19B0: @ 0x85E19B0 + .incbin "baserom_jp.gba", 0x5e19b0, 0x28 + + .globl gUnknown_85E19D8 +gUnknown_85E19D8: @ 0x85E19D8 + .incbin "baserom_jp.gba", 0x5e19d8, 0x4 + + .globl gUnknown_85E19DC +gUnknown_85E19DC: @ 0x85E19DC + .incbin "baserom_jp.gba", 0x5e19dc, 0x4 + + .globl gUnknown_85E19E0 +gUnknown_85E19E0: @ 0x85E19E0 + .incbin "baserom_jp.gba", 0x5e19e0, 0x5904 + + .globl gUnknown_85E72E4 +gUnknown_85E72E4: @ 0x85E72E4 + .incbin "baserom_jp.gba", 0x5e72e4, 0x48 + + .globl gUnknown_85E732C +gUnknown_85E732C: @ 0x85E732C + .incbin "baserom_jp.gba", 0x5e732c, 0x104 + + .globl gUnknown_85E7430 +gUnknown_85E7430: @ 0x85E7430 + .incbin "baserom_jp.gba", 0x5e7430, 0x920 + + .globl gUnknown_85E7D50 +gUnknown_85E7D50: @ 0x85E7D50 + .incbin "baserom_jp.gba", 0x5e7d50, 0xb0 + + .globl gUnknown_85E7E00 +gUnknown_85E7E00: @ 0x85E7E00 + .incbin "baserom_jp.gba", 0x5e7e00, 0x120 + + .globl gUnknown_85E7F20 +gUnknown_85E7F20: @ 0x85E7F20 + .incbin "baserom_jp.gba", 0x5e7f20, 0x30 + + .globl gUnknown_85E7F50 +gUnknown_85E7F50: @ 0x85E7F50 + .incbin "baserom_jp.gba", 0x5e7f50, 0x10 + + .globl gUnknown_85E7F60 +gUnknown_85E7F60: @ 0x85E7F60 + .incbin "baserom_jp.gba", 0x5e7f60, 0x5c + + .globl gUnknown_85E7FBC +gUnknown_85E7FBC: @ 0x85E7FBC + .incbin "baserom_jp.gba", 0x5e7fbc, 0x18 + + .globl gUnknown_85E7FD4 +gUnknown_85E7FD4: @ 0x85E7FD4 + .incbin "baserom_jp.gba", 0x5e7fd4, 0x1c + + .globl gUnknown_85E7FF0 +gUnknown_85E7FF0: @ 0x85E7FF0 + .incbin "baserom_jp.gba", 0x5e7ff0, 0xc + + .globl gUnknown_85E7FFC +gUnknown_85E7FFC: @ 0x85E7FFC + .incbin "baserom_jp.gba", 0x5e7ffc, 0x20 + + .globl gUnknown_85E801C +gUnknown_85E801C: @ 0x85E801C + .incbin "baserom_jp.gba", 0x5e801c, 0x4e08 + + .globl gUnknown_85ECE24 +gUnknown_85ECE24: @ 0x85ECE24 + .incbin "baserom_jp.gba", 0x5ece24, 0x64 + + .globl gUnknown_85ECE88 +gUnknown_85ECE88: @ 0x85ECE88 + .incbin "baserom_jp.gba", 0x5ece88, 0x134 + + .globl gUnknown_85ECFBC +gUnknown_85ECFBC: @ 0x85ECFBC + .incbin "baserom_jp.gba", 0x5ecfbc, 0x78 + + .globl gUnknown_85ED034 +gUnknown_85ED034: @ 0x85ED034 + .incbin "baserom_jp.gba", 0x5ed034, 0xc + + .globl gUnknown_85ED040 +gUnknown_85ED040: @ 0x85ED040 + .incbin "baserom_jp.gba", 0x5ed040, 0xc + + .globl gUnknown_85ED04C +gUnknown_85ED04C: @ 0x85ED04C + .incbin "baserom_jp.gba", 0x5ed04c, 0xc + + .globl gUnknown_85ED058 +gUnknown_85ED058: @ 0x85ED058 + .incbin "baserom_jp.gba", 0x5ed058, 0xc + + .globl gUnknown_85ED064 +gUnknown_85ED064: @ 0x85ED064 + .incbin "baserom_jp.gba", 0x5ed064, 0x8 + + .globl gUnknown_85ED06C +gUnknown_85ED06C: @ 0x85ED06C + .incbin "baserom_jp.gba", 0x5ed06c, 0xa8 + + .globl gUnknown_85ED114 +gUnknown_85ED114: @ 0x85ED114 + .incbin "baserom_jp.gba", 0x5ed114, 0x20 + + .globl gUnknown_85ED134 +gUnknown_85ED134: @ 0x85ED134 + .incbin "baserom_jp.gba", 0x5ed134, 0x28 + + .globl gUnknown_85ED15C +gUnknown_85ED15C: @ 0x85ED15C + .incbin "baserom_jp.gba", 0x5ed15c, 0x20 + + .globl gUnknown_85ED17C +gUnknown_85ED17C: @ 0x85ED17C + .incbin "baserom_jp.gba", 0x5ed17c, 0xa7 + + .globl gUnknown_85ED223 +gUnknown_85ED223: @ 0x85ED223 + .incbin "baserom_jp.gba", 0x5ed223, 0x81 + + .globl gUnknown_85ED2A4 +gUnknown_85ED2A4: @ 0x85ED2A4 + .incbin "baserom_jp.gba", 0x5ed2a4, 0x10 + + .globl gUnknown_85ED2B4 +gUnknown_85ED2B4: @ 0x85ED2B4 + .incbin "baserom_jp.gba", 0x5ed2b4, 0x10 + + .globl gUnknown_85ED2C4 +gUnknown_85ED2C4: @ 0x85ED2C4 + .incbin "baserom_jp.gba", 0x5ed2c4, 0x7 + + .globl gUnknown_85ED2CB +gUnknown_85ED2CB: @ 0x85ED2CB + .incbin "baserom_jp.gba", 0x5ed2cb, 0x7 + + .globl gUnknown_85ED2D2 +gUnknown_85ED2D2: @ 0x85ED2D2 + .incbin "baserom_jp.gba", 0x5ed2d2, 0xc + + .globl gUnknown_85ED2DE +gUnknown_85ED2DE: @ 0x85ED2DE + .incbin "baserom_jp.gba", 0x5ed2de, 0x9 + + .globl gUnknown_85ED2E7 +gUnknown_85ED2E7: @ 0x85ED2E7 + .incbin "baserom_jp.gba", 0x5ed2e7, 0x125 + + .globl gUnknown_85ED40C +gUnknown_85ED40C: @ 0x85ED40C + .incbin "baserom_jp.gba", 0x5ed40c, 0x8 + + .globl gUnknown_85ED414 +gUnknown_85ED414: @ 0x85ED414 + .incbin "baserom_jp.gba", 0x5ed414, 0x18 + + .globl gUnknown_85ED42C +gUnknown_85ED42C: @ 0x85ED42C + .incbin "baserom_jp.gba", 0x5ed42c, 0x98 + + .globl gUnknown_85ED4C4 +gUnknown_85ED4C4: @ 0x85ED4C4 + .incbin "baserom_jp.gba", 0x5ed4c4, 0x8 + + .globl gUnknown_85ED4CC +gUnknown_85ED4CC: @ 0x85ED4CC + .incbin "baserom_jp.gba", 0x5ed4cc, 0x8 + + .globl gUnknown_85ED4D4 +gUnknown_85ED4D4: @ 0x85ED4D4 + .incbin "baserom_jp.gba", 0x5ed4d4, 0x74 + + .globl gUnknown_85ED548 +gUnknown_85ED548: @ 0x85ED548 + .incbin "baserom_jp.gba", 0x5ed548, 0x8 + + .globl gUnknown_85ED550 +gUnknown_85ED550: @ 0x85ED550 + .incbin "baserom_jp.gba", 0x5ed550, 0x8 + + .globl gUnknown_85ED558 +gUnknown_85ED558: @ 0x85ED558 + .incbin "baserom_jp.gba", 0x5ed558, 0x18 + + .globl gUnknown_85ED570 +gUnknown_85ED570: @ 0x85ED570 + .incbin "baserom_jp.gba", 0x5ed570, 0x20 + + .globl gUnknown_85ED590 +gUnknown_85ED590: @ 0x85ED590 + .incbin "baserom_jp.gba", 0x5ed590, 0x60 + + .globl gUnknown_85ED5F0 +gUnknown_85ED5F0: @ 0x85ED5F0 + .incbin "baserom_jp.gba", 0x5ed5f0, 0xd54 + + .globl gUnknown_85EE344 +gUnknown_85EE344: @ 0x85EE344 + .incbin "baserom_jp.gba", 0x5ee344, 0x314 + + .globl gUnknown_85EE658 +gUnknown_85EE658: @ 0x85EE658 + .incbin "baserom_jp.gba", 0x5ee658, 0xd5c + + .globl gUnknown_85EF3B4 +gUnknown_85EF3B4: @ 0x85EF3B4 + .incbin "baserom_jp.gba", 0x5ef3b4, 0x350 + + .globl gUnknown_85EF704 +gUnknown_85EF704: @ 0x85EF704 + .incbin "baserom_jp.gba", 0x5ef704, 0xc + + .globl gUnknown_85EF710 +gUnknown_85EF710: @ 0x85EF710 + .incbin "baserom_jp.gba", 0x5ef710, 0x18 + + .globl gUnknown_85EF728 +gUnknown_85EF728: @ 0x85EF728 + .incbin "baserom_jp.gba", 0x5ef728, 0x30 + + .globl gUnknown_85EF758 +gUnknown_85EF758: @ 0x85EF758 + .incbin "baserom_jp.gba", 0x5ef758, 0x4 + + .globl gUnknown_85EF75C +gUnknown_85EF75C: @ 0x85EF75C + .incbin "baserom_jp.gba", 0x5ef75c, 0x2 + + .globl gUnknown_85EF75E +gUnknown_85EF75E: @ 0x85EF75E + .incbin "baserom_jp.gba", 0x5ef75e, 0x2 + + .globl gUnknown_85EF760 +gUnknown_85EF760: @ 0x85EF760 + .incbin "baserom_jp.gba", 0x5ef760, 0x4 + + .globl gUnknown_85EF764 +gUnknown_85EF764: @ 0x85EF764 + .incbin "baserom_jp.gba", 0x5ef764, 0x8 + + .globl gUnknown_85EF76C +gUnknown_85EF76C: @ 0x85EF76C + .incbin "baserom_jp.gba", 0x5ef76c, 0xc + + .globl gUnknown_85EF778 +gUnknown_85EF778: @ 0x85EF778 + .incbin "baserom_jp.gba", 0x5ef778, 0x28 + + .globl gUnknown_85EF7A0 +gUnknown_85EF7A0: @ 0x85EF7A0 + .incbin "baserom_jp.gba", 0x5ef7a0, 0x20 + + .globl gUnknown_85EF7C0 +gUnknown_85EF7C0: @ 0x85EF7C0 + .incbin "baserom_jp.gba", 0x5ef7c0, 0x5c + + .globl gUnknown_85EF81C +gUnknown_85EF81C: @ 0x85EF81C + .incbin "baserom_jp.gba", 0x5ef81c, 0x8 + + .globl gUnknown_85EF824 +gUnknown_85EF824: @ 0x85EF824 + .incbin "baserom_jp.gba", 0x5ef824, 0x18 + + .globl gUnknown_85EF83C +gUnknown_85EF83C: @ 0x85EF83C + .incbin "baserom_jp.gba", 0x5ef83c, 0x1a4 + + .globl gUnknown_85EF9E0 +gUnknown_85EF9E0: @ 0x85EF9E0 + .incbin "baserom_jp.gba", 0x5ef9e0, 0x20 + + .globl gUnknown_85EFA00 +gUnknown_85EFA00: @ 0x85EFA00 + .incbin "baserom_jp.gba", 0x5efa00, 0x22c + + .globl gUnknown_85EFC2C +gUnknown_85EFC2C: @ 0x85EFC2C + .incbin "baserom_jp.gba", 0x5efc2c, 0x5f0 + + .globl gUnknown_85F021C +gUnknown_85F021C: @ 0x85F021C + .incbin "baserom_jp.gba", 0x5f021c, 0x11ac + + .globl gUnknown_85F13C8 +gUnknown_85F13C8: @ 0x85F13C8 + .incbin "baserom_jp.gba", 0x5f13c8, 0x4 + + .globl gUnknown_85F13CC +gUnknown_85F13CC: @ 0x85F13CC + .incbin "baserom_jp.gba", 0x5f13cc, 0x10 + + .globl gUnknown_85F13DC +gUnknown_85F13DC: @ 0x85F13DC + .incbin "baserom_jp.gba", 0x5f13dc, 0x30 + + .globl gUnknown_85F140C +gUnknown_85F140C: @ 0x85F140C + .incbin "baserom_jp.gba", 0x5f140c, 0x4 + + .globl gUnknown_85F1410 +gUnknown_85F1410: @ 0x85F1410 + .incbin "baserom_jp.gba", 0x5f1410, 0x8 + + .globl gUnknown_85F1418 +gUnknown_85F1418: @ 0x85F1418 + .incbin "baserom_jp.gba", 0x5f1418, 0x10 + + .globl gUnknown_85F1428 +gUnknown_85F1428: @ 0x85F1428 + .incbin "baserom_jp.gba", 0x5f1428, 0x8 + + .globl gUnknown_85F1430 +gUnknown_85F1430: @ 0x85F1430 + .incbin "baserom_jp.gba", 0x5f1430, 0x30 + + .globl gUnknown_85F1460 +gUnknown_85F1460: @ 0x85F1460 + .incbin "baserom_jp.gba", 0x5f1460, 0x68 + + .globl gUnknown_85F14C8 +gUnknown_85F14C8: @ 0x85F14C8 + .incbin "baserom_jp.gba", 0x5f14c8, 0x28 + + .globl gUnknown_85F14F0 +gUnknown_85F14F0: @ 0x85F14F0 + .incbin "baserom_jp.gba", 0x5f14f0, 0x18 + + .globl gUnknown_85F1508 +gUnknown_85F1508: @ 0x85F1508 + .incbin "baserom_jp.gba", 0x5f1508, 0xa0 + + .globl gUnknown_85F15A8 +gUnknown_85F15A8: @ 0x85F15A8 + .incbin "baserom_jp.gba", 0x5f15a8, 0x4 + + .globl gUnknown_85F15AC +gUnknown_85F15AC: @ 0x85F15AC + .incbin "baserom_jp.gba", 0x5f15ac, 0xc + + .globl gUnknown_85F15B8 +gUnknown_85F15B8: @ 0x85F15B8 + .incbin "baserom_jp.gba", 0x5f15b8, 0x3 + + .globl gUnknown_85F15BB +gUnknown_85F15BB: @ 0x85F15BB + .incbin "baserom_jp.gba", 0x5f15bb, 0x5 + + .globl gUnknown_85F15C0 +gUnknown_85F15C0: @ 0x85F15C0 + .incbin "baserom_jp.gba", 0x5f15c0, 0x8 + + .globl gUnknown_85F15C8 +gUnknown_85F15C8: @ 0x85F15C8 + .incbin "baserom_jp.gba", 0x5f15c8, 0x18 + + .globl gUnknown_85F15E0 +gUnknown_85F15E0: @ 0x85F15E0 + .incbin "baserom_jp.gba", 0x5f15e0, 0x20 + + .globl gUnknown_85F1600 +gUnknown_85F1600: @ 0x85F1600 + .incbin "baserom_jp.gba", 0x5f1600, 0x18 + + .globl gUnknown_85F1618 +gUnknown_85F1618: @ 0x85F1618 + .incbin "baserom_jp.gba", 0x5f1618, 0x5 + + .globl gUnknown_85F161D +gUnknown_85F161D: @ 0x85F161D + .incbin "baserom_jp.gba", 0x5f161d, 0x1f + + .globl gUnknown_85F163C +gUnknown_85F163C: @ 0x85F163C + .incbin "baserom_jp.gba", 0x5f163c, 0x2 + + .globl gUnknown_85F163E +gUnknown_85F163E: @ 0x85F163E + .incbin "baserom_jp.gba", 0x5f163e, 0xc + + .globl gUnknown_85F164A +gUnknown_85F164A: @ 0x85F164A + .incbin "baserom_jp.gba", 0x5f164a, 0x12 + + .globl gUnknown_85F165C +gUnknown_85F165C: @ 0x85F165C + .incbin "baserom_jp.gba", 0x5f165c, 0x14 + + .globl gUnknown_85F1670 +gUnknown_85F1670: @ 0x85F1670 + .incbin "baserom_jp.gba", 0x5f1670, 0xa0 + + .globl gUnknown_85F1710 +gUnknown_85F1710: @ 0x85F1710 + .incbin "baserom_jp.gba", 0x5f1710, 0x20 + + .globl gUnknown_85F1730 +gUnknown_85F1730: @ 0x85F1730 + .incbin "baserom_jp.gba", 0x5f1730, 0x50 + + .globl gUnknown_85F1780 +gUnknown_85F1780: @ 0x85F1780 + .incbin "baserom_jp.gba", 0x5f1780, 0xb8 + + .globl gUnknown_85F1838 +gUnknown_85F1838: @ 0x85F1838 + .incbin "baserom_jp.gba", 0x5f1838, 0x20 + + .globl gUnknown_85F1858 +gUnknown_85F1858: @ 0x85F1858 + .incbin "baserom_jp.gba", 0x5f1858, 0x288 + + .globl gUnknown_85F1AE0 +gUnknown_85F1AE0: @ 0x85F1AE0 + .incbin "baserom_jp.gba", 0x5f1ae0, 0xc1c + + .globl gUnknown_85F26FC +gUnknown_85F26FC: @ 0x85F26FC + .incbin "baserom_jp.gba", 0x5f26fc, 0xc + + .globl gUnknown_85F2708 +gUnknown_85F2708: @ 0x85F2708 + .incbin "baserom_jp.gba", 0x5f2708, 0x24 + + .globl gUnknown_85F272C +gUnknown_85F272C: @ 0x85F272C + .incbin "baserom_jp.gba", 0x5f272c, 0x10 + + .globl gUnknown_85F273C +gUnknown_85F273C: @ 0x85F273C + .incbin "baserom_jp.gba", 0x5f273c, 0x6c + + .globl gUnknown_85F27A8 +gUnknown_85F27A8: @ 0x85F27A8 + .incbin "baserom_jp.gba", 0x5f27a8, 0x4 + + .globl gUnknown_85F27AC +gUnknown_85F27AC: @ 0x85F27AC + .incbin "baserom_jp.gba", 0x5f27ac, 0x88 + + .globl gUnknown_85F2834 +gUnknown_85F2834: @ 0x85F2834 + .incbin "baserom_jp.gba", 0x5f2834, 0x8 + + .globl gUnknown_85F283C +gUnknown_85F283C: @ 0x85F283C + .incbin "baserom_jp.gba", 0x5f283c, 0x38 + + .globl gUnknown_85F2874 +gUnknown_85F2874: @ 0x85F2874 + .incbin "baserom_jp.gba", 0x5f2874, 0x3 + + .globl gUnknown_85F2877 +gUnknown_85F2877: @ 0x85F2877 + .incbin "baserom_jp.gba", 0x5f2877, 0x3d + + .globl gUnknown_85F28B4 +gUnknown_85F28B4: @ 0x85F28B4 + .incbin "baserom_jp.gba", 0x5f28b4, 0x20 + + .globl gUnknown_85F28D4 +gUnknown_85F28D4: @ 0x85F28D4 + .incbin "baserom_jp.gba", 0x5f28d4, 0x18 + + .globl gUnknown_85F28EC +gUnknown_85F28EC: @ 0x85F28EC + .incbin "baserom_jp.gba", 0x5f28ec, 0x10c8 + + .globl gUnknown_85F39B4 +gUnknown_85F39B4: @ 0x85F39B4 + .incbin "baserom_jp.gba", 0x5f39b4, 0x4e0 + + .globl gUnknown_85F3E94 +gUnknown_85F3E94: @ 0x85F3E94 + .incbin "baserom_jp.gba", 0x5f3e94, 0x2 + + .globl gUnknown_85F3E96 +gUnknown_85F3E96: @ 0x85F3E96 + .incbin "baserom_jp.gba", 0x5f3e96, 0x3 + + .globl gUnknown_85F3E99 +gUnknown_85F3E99: @ 0x85F3E99 + .incbin "baserom_jp.gba", 0x5f3e99, 0x17 + + .globl gUnknown_85F3EB0 +gUnknown_85F3EB0: @ 0x85F3EB0 + .incbin "baserom_jp.gba", 0x5f3eb0, 0x20 + + .globl gUnknown_85F3ED0 +gUnknown_85F3ED0: @ 0x85F3ED0 + .incbin "baserom_jp.gba", 0x5f3ed0, 0xa4 + + .globl gUnknown_85F3F74 +gUnknown_85F3F74: @ 0x85F3F74 + .incbin "baserom_jp.gba", 0x5f3f74, 0x10c + + .globl gUnknown_85F4080 +gUnknown_85F4080: @ 0x85F4080 + .incbin "baserom_jp.gba", 0x5f4080, 0x20 + + .globl gUnknown_85F40A0 +gUnknown_85F40A0: @ 0x85F40A0 + .incbin "baserom_jp.gba", 0x5f40a0, 0x20 + + .globl gUnknown_85F40C0 +gUnknown_85F40C0: @ 0x85F40C0 + .incbin "baserom_jp.gba", 0x5f40c0, 0x40 + + .globl gUnknown_85F4100 +gUnknown_85F4100: @ 0x85F4100 + .incbin "baserom_jp.gba", 0x5f4100, 0x2c + + .globl gUnknown_85F412C +gUnknown_85F412C: @ 0x85F412C + .incbin "baserom_jp.gba", 0x5f412c, 0x8 + + .globl gUnknown_85F4134 +gUnknown_85F4134: @ 0x85F4134 + .incbin "baserom_jp.gba", 0x5f4134, 0x4 + + .globl gUnknown_85F4138 +gUnknown_85F4138: @ 0x85F4138 + .incbin "baserom_jp.gba", 0x5f4138, 0x40 + + .globl gUnknown_85F4178 +gUnknown_85F4178: @ 0x85F4178 + .incbin "baserom_jp.gba", 0x5f4178, 0x8 + + .globl gUnknown_85F4180 +gUnknown_85F4180: @ 0x85F4180 + .incbin "baserom_jp.gba", 0x5f4180, 0x8 + + .globl gUnknown_85F4188 +gUnknown_85F4188: @ 0x85F4188 + .incbin "baserom_jp.gba", 0x5f4188, 0xc + + .globl gUnknown_85F4194 +gUnknown_85F4194: @ 0x85F4194 + .incbin "baserom_jp.gba", 0x5f4194, 0x14 + + .globl gUnknown_85F41A8 +gUnknown_85F41A8: @ 0x85F41A8 + .incbin "baserom_jp.gba", 0x5f41a8, 0x8 + + .globl gUnknown_85F41B0 +gUnknown_85F41B0: @ 0x85F41B0 + .incbin "baserom_jp.gba", 0x5f41b0, 0x8 + + .globl gUnknown_85F41B8 +gUnknown_85F41B8: @ 0x85F41B8 + .incbin "baserom_jp.gba", 0x5f41b8, 0x18 + + .globl gUnknown_85F41D0 +gUnknown_85F41D0: @ 0x85F41D0 + .incbin "baserom_jp.gba", 0x5f41d0, 0x20 + + .globl gUnknown_85F41F0 +gUnknown_85F41F0: @ 0x85F41F0 + .incbin "baserom_jp.gba", 0x5f41f0, 0x18 + + .globl gUnknown_85F4208 +gUnknown_85F4208: @ 0x85F4208 + .incbin "baserom_jp.gba", 0x5f4208, 0x20 + + .globl gUnknown_85F4228 +gUnknown_85F4228: @ 0x85F4228 + .incbin "baserom_jp.gba", 0x5f4228, 0x20 + + .globl gUnknown_85F4248 +gUnknown_85F4248: @ 0x85F4248 + .incbin "baserom_jp.gba", 0x5f4248, 0xab4 + + .globl gUnknown_85F4CFC +gUnknown_85F4CFC: @ 0x85F4CFC + .incbin "baserom_jp.gba", 0x5f4cfc, 0xc + + .globl gUnknown_85F4D08 +gUnknown_85F4D08: @ 0x85F4D08 + .incbin "baserom_jp.gba", 0x5f4d08, 0x14 + + .globl gUnknown_85F4D1C +gUnknown_85F4D1C: @ 0x85F4D1C + .incbin "baserom_jp.gba", 0x5f4d1c, 0x8 + + .globl gUnknown_85F4D24 +gUnknown_85F4D24: @ 0x85F4D24 + .incbin "baserom_jp.gba", 0x5f4d24, 0x10 + + .globl gUnknown_85F4D34 +gUnknown_85F4D34: @ 0x85F4D34 + .incbin "baserom_jp.gba", 0x5f4d34, 0x8 + + .globl gUnknown_85F4D3C +gUnknown_85F4D3C: @ 0x85F4D3C + .incbin "baserom_jp.gba", 0x5f4d3c, 0xb8 + + .globl gUnknown_85F4DF4 +gUnknown_85F4DF4: @ 0x85F4DF4 + .incbin "baserom_jp.gba", 0x5f4df4, 0x18 + + .globl gUnknown_85F4E0C +gUnknown_85F4E0C: @ 0x85F4E0C + .incbin "baserom_jp.gba", 0x5f4e0c, 0x20 + + .globl gUnknown_85F4E2C +gUnknown_85F4E2C: @ 0x85F4E2C + .incbin "baserom_jp.gba", 0x5f4e2c, 0x20 + + .globl gUnknown_85F4E4C +gUnknown_85F4E4C: @ 0x85F4E4C + .incbin "baserom_jp.gba", 0x5f4e4c, 0x20 + + .globl gUnknown_85F4E6C +gUnknown_85F4E6C: @ 0x85F4E6C + .incbin "baserom_jp.gba", 0x5f4e6c, 0x794 + + .globl gUnknown_85F5600 +gUnknown_85F5600: @ 0x85F5600 + .incbin "baserom_jp.gba", 0x5f5600, 0x1ec + + .globl gUnknown_85F57EC +gUnknown_85F57EC: @ 0x85F57EC + .incbin "baserom_jp.gba", 0x5f57ec, 0x14 + + .globl gUnknown_85F5800 +gUnknown_85F5800: @ 0x85F5800 + .incbin "baserom_jp.gba", 0x5f5800, 0xfc + + .globl gUnknown_85F58FC +gUnknown_85F58FC: @ 0x85F58FC + .incbin "baserom_jp.gba", 0x5f58fc, 0x48 + + .globl gUnknown_85F5944 +gUnknown_85F5944: @ 0x85F5944 + .incbin "baserom_jp.gba", 0x5f5944, 0x20 + + .globl gUnknown_85F5964 +gUnknown_85F5964: @ 0x85F5964 + .incbin "baserom_jp.gba", 0x5f5964, 0xc + + .globl gUnknown_85F5970 +gUnknown_85F5970: @ 0x85F5970 + .incbin "baserom_jp.gba", 0x5f5970, 0x8 + + .globl gUnknown_85F5978 +gUnknown_85F5978: @ 0x85F5978 + .incbin "baserom_jp.gba", 0x5f5978, 0x8 + + .globl gUnknown_85F5980 +gUnknown_85F5980: @ 0x85F5980 + .incbin "baserom_jp.gba", 0x5f5980, 0x8 + + .globl gUnknown_85F5988 +gUnknown_85F5988: @ 0x85F5988 + .incbin "baserom_jp.gba", 0x5f5988, 0x8 + + .globl gUnknown_85F5990 +gUnknown_85F5990: @ 0x85F5990 + .incbin "baserom_jp.gba", 0x5f5990, 0x1c + + .globl gUnknown_85F59AC +gUnknown_85F59AC: @ 0x85F59AC + .incbin "baserom_jp.gba", 0x5f59ac, 0x14 + + .globl gUnknown_85F59C0 +gUnknown_85F59C0: @ 0x85F59C0 + .incbin "baserom_jp.gba", 0x5f59c0, 0x10 + + .globl gUnknown_85F59D0 +gUnknown_85F59D0: @ 0x85F59D0 + .incbin "baserom_jp.gba", 0x5f59d0, 0x20 + + .globl gUnknown_85F59F0 +gUnknown_85F59F0: @ 0x85F59F0 + .incbin "baserom_jp.gba", 0x5f59f0, 0xc8 + + .globl gUnknown_85F5AB8 +gUnknown_85F5AB8: @ 0x85F5AB8 + .incbin "baserom_jp.gba", 0x5f5ab8, 0xc4 + + .globl gUnknown_85F5B7C +gUnknown_85F5B7C: @ 0x85F5B7C + .incbin "baserom_jp.gba", 0x5f5b7c, 0x20 + + .globl gUnknown_85F5B9C +gUnknown_85F5B9C: @ 0x85F5B9C + .incbin "baserom_jp.gba", 0x5f5b9c, 0x4 + + .globl gUnknown_85F5BA0 +gUnknown_85F5BA0: @ 0x85F5BA0 + .incbin "baserom_jp.gba", 0x5f5ba0, 0x4 + + .globl gUnknown_85F5BA4 +gUnknown_85F5BA4: @ 0x85F5BA4 + .incbin "baserom_jp.gba", 0x5f5ba4, 0x1c + + .globl gUnknown_85F5BC0 +gUnknown_85F5BC0: @ 0x85F5BC0 + .incbin "baserom_jp.gba", 0x5f5bc0, 0x8 + + .globl gUnknown_85F5BC8 +gUnknown_85F5BC8: @ 0x85F5BC8 + .incbin "baserom_jp.gba", 0x5f5bc8, 0xc + + .globl gUnknown_85F5BD4 +gUnknown_85F5BD4: @ 0x85F5BD4 + .incbin "baserom_jp.gba", 0x5f5bd4, 0x20 + + .globl gUnknown_85F5BF4 +gUnknown_85F5BF4: @ 0x85F5BF4 + .incbin "baserom_jp.gba", 0x5f5bf4, 0xc8 + + .globl gUnknown_85F5CBC +gUnknown_85F5CBC: @ 0x85F5CBC + .incbin "baserom_jp.gba", 0x5f5cbc, 0xc4 + + .globl gUnknown_85F5D80 +gUnknown_85F5D80: @ 0x85F5D80 + .incbin "baserom_jp.gba", 0x5f5d80, 0x20 + + .globl gUnknown_85F5DA0 +gUnknown_85F5DA0: @ 0x85F5DA0 + .incbin "baserom_jp.gba", 0x5f5da0, 0x4 + + .globl gUnknown_85F5DA4 +gUnknown_85F5DA4: @ 0x85F5DA4 + .incbin "baserom_jp.gba", 0x5f5da4, 0x4 + + .globl gUnknown_85F5DA8 +gUnknown_85F5DA8: @ 0x85F5DA8 + .incbin "baserom_jp.gba", 0x5f5da8, 0x1c + + .globl gUnknown_85F5DC4 +gUnknown_85F5DC4: @ 0x85F5DC4 + .incbin "baserom_jp.gba", 0x5f5dc4, 0x8 + + .globl gUnknown_85F5DCC +gUnknown_85F5DCC: @ 0x85F5DCC + .incbin "baserom_jp.gba", 0x5f5dcc, 0x7 + + .globl gUnknown_85F5DD3 +gUnknown_85F5DD3: @ 0x85F5DD3 + .incbin "baserom_jp.gba", 0x5f5dd3, 0x18 + + .globl gUnknown_85F5DEB +gUnknown_85F5DEB: @ 0x85F5DEB + .incbin "baserom_jp.gba", 0x5f5deb, 0x18 + + .globl gUnknown_85F5E03 +gUnknown_85F5E03: @ 0x85F5E03 + .incbin "baserom_jp.gba", 0x5f5e03, 0x11 + + .globl gUnknown_85F5E14 +gUnknown_85F5E14: @ 0x85F5E14 + .incbin "baserom_jp.gba", 0x5f5e14, 0x14c + + .globl gUnknown_85F5F60 +gUnknown_85F5F60: @ 0x85F5F60 + .incbin "baserom_jp.gba", 0x5f5f60, 0x32c + + .globl gUnknown_85F628C +gUnknown_85F628C: @ 0x85F628C + .incbin "baserom_jp.gba", 0x5f628c, 0x200 + + .globl gUnknown_85F648C +gUnknown_85F648C: @ 0x85F648C + .incbin "baserom_jp.gba", 0x5f648c, 0x20 + + .globl gUnknown_85F64AC +gUnknown_85F64AC: @ 0x85F64AC + .incbin "baserom_jp.gba", 0x5f64ac, 0xfc + + .globl gUnknown_85F65A8 +gUnknown_85F65A8: @ 0x85F65A8 + .incbin "baserom_jp.gba", 0x5f65a8, 0xcc + + .globl gUnknown_85F6674 +gUnknown_85F6674: @ 0x85F6674 + .incbin "baserom_jp.gba", 0x5f6674, 0xa0 + + .globl gUnknown_85F6714 +gUnknown_85F6714: @ 0x85F6714 + .incbin "baserom_jp.gba", 0x5f6714, 0x20 + + .globl gUnknown_85F6734 +gUnknown_85F6734: @ 0x85F6734 + .incbin "baserom_jp.gba", 0x5f6734, 0xae0 + + .globl gUnknown_85F7214 +gUnknown_85F7214: @ 0x85F7214 + .incbin "baserom_jp.gba", 0x5f7214, 0x8 + + .globl gUnknown_85F721C +gUnknown_85F721C: @ 0x85F721C + .incbin "baserom_jp.gba", 0x5f721c, 0x18 + + .globl gUnknown_85F7234 +gUnknown_85F7234: @ 0x85F7234 + .incbin "baserom_jp.gba", 0x5f7234, 0x8 + + .globl gUnknown_85F723C +gUnknown_85F723C: @ 0x85F723C + .incbin "baserom_jp.gba", 0x5f723c, 0x4 + + .globl gUnknown_85F7240 +gUnknown_85F7240: @ 0x85F7240 + .incbin "baserom_jp.gba", 0x5f7240, 0x8 + + .globl gUnknown_85F7248 +gUnknown_85F7248: @ 0x85F7248 + .incbin "baserom_jp.gba", 0x5f7248, 0x10 + + .globl gUnknown_85F7258 +gUnknown_85F7258: @ 0x85F7258 + .incbin "baserom_jp.gba", 0x5f7258, 0x80 + + .globl gUnknown_85F72D8 +gUnknown_85F72D8: @ 0x85F72D8 + .incbin "baserom_jp.gba", 0x5f72d8, 0x8 + + .globl gUnknown_85F72E0 +gUnknown_85F72E0: @ 0x85F72E0 + .incbin "baserom_jp.gba", 0x5f72e0, 0x84 + + .globl gUnknown_85F7364 +gUnknown_85F7364: @ 0x85F7364 + .incbin "baserom_jp.gba", 0x5f7364, 0x650 + + .globl gUnknown_85F79B4 +gUnknown_85F79B4: @ 0x85F79B4 + .incbin "baserom_jp.gba", 0x5f79b4, 0x54 + + .globl gUnknown_85F7A08 +gUnknown_85F7A08: @ 0x85F7A08 + .incbin "baserom_jp.gba", 0x5f7a08, 0x14 + + .globl gUnknown_85F7A1C +gUnknown_85F7A1C: @ 0x85F7A1C + .incbin "baserom_jp.gba", 0x5f7a1c, 0x14 + + .globl gUnknown_85F7A30 +gUnknown_85F7A30: @ 0x85F7A30 + .incbin "baserom_jp.gba", 0x5f7a30, 0x14 + + .globl gUnknown_85F7A44 +gUnknown_85F7A44: @ 0x85F7A44 + .incbin "baserom_jp.gba", 0x5f7a44, 0x14 + + .globl gUnknown_85F7A58 +gUnknown_85F7A58: @ 0x85F7A58 + .incbin "baserom_jp.gba", 0x5f7a58, 0x14 + + .globl gUnknown_85F7A6C +gUnknown_85F7A6C: @ 0x85F7A6C + .incbin "baserom_jp.gba", 0x5f7a6c, 0x14 + + .globl gUnknown_85F7A80 +gUnknown_85F7A80: @ 0x85F7A80 + .incbin "baserom_jp.gba", 0x5f7a80, 0x14 + + .globl gUnknown_85F7A94 +gUnknown_85F7A94: @ 0x85F7A94 + .incbin "baserom_jp.gba", 0x5f7a94, 0x60 + + .globl gUnknown_85F7AF4 +gUnknown_85F7AF4: @ 0x85F7AF4 + .incbin "baserom_jp.gba", 0x5f7af4, 0x18 + + .globl gUnknown_85F7B0C +gUnknown_85F7B0C: @ 0x85F7B0C + .incbin "baserom_jp.gba", 0x5f7b0c, 0xc + + .globl gUnknown_85F7B18 +gUnknown_85F7B18: @ 0x85F7B18 + .incbin "baserom_jp.gba", 0x5f7b18, 0x100 + + .globl gUnknown_85F7C18 +gUnknown_85F7C18: @ 0x85F7C18 + .incbin "baserom_jp.gba", 0x5f7c18, 0x30 + + .globl gUnknown_85F7C48 +gUnknown_85F7C48: @ 0x85F7C48 + .incbin "baserom_jp.gba", 0x5f7c48, 0x8 + + .globl gUnknown_85F7C50 +gUnknown_85F7C50: @ 0x85F7C50 + .incbin "baserom_jp.gba", 0x5f7c50, 0x7 + + .globl gUnknown_85F7C57 +gUnknown_85F7C57: @ 0x85F7C57 + .incbin "baserom_jp.gba", 0x5f7c57, 0x8 + + .globl gUnknown_85F7C5F +gUnknown_85F7C5F: @ 0x85F7C5F + .incbin "baserom_jp.gba", 0x5f7c5f, 0x5 + + .globl gUnknown_85F7C64 +gUnknown_85F7C64: @ 0x85F7C64 + .incbin "baserom_jp.gba", 0x5f7c64, 0x4 + + .globl gUnknown_85F7C68 +gUnknown_85F7C68: @ 0x85F7C68 + .incbin "baserom_jp.gba", 0x5f7c68, 0x6 + + .globl gUnknown_85F7C6E +gUnknown_85F7C6E: @ 0x85F7C6E + .incbin "baserom_jp.gba", 0x5f7c6e, 0x7 + + .globl gUnknown_85F7C75 +gUnknown_85F7C75: @ 0x85F7C75 + .incbin "baserom_jp.gba", 0x5f7c75, 0x5 + + .globl gUnknown_85F7C7A +gUnknown_85F7C7A: @ 0x85F7C7A + .incbin "baserom_jp.gba", 0x5f7c7a, 0x6 + + .globl gUnknown_85F7C80 +gUnknown_85F7C80: @ 0x85F7C80 + .incbin "baserom_jp.gba", 0x5f7c80, 0x2c18 + + .globl gUnknown_85FA898 +gUnknown_85FA898: @ 0x85FA898 + .incbin "baserom_jp.gba", 0x5fa898, 0x8 + + .globl gUnknown_85FA8A0 +gUnknown_85FA8A0: @ 0x85FA8A0 + .incbin "baserom_jp.gba", 0x5fa8a0, 0x18 + + .globl gUnknown_85FA8B8 +gUnknown_85FA8B8: @ 0x85FA8B8 + .incbin "baserom_jp.gba", 0x5fa8b8, 0x8 + + .globl gUnknown_85FA8C0 +gUnknown_85FA8C0: @ 0x85FA8C0 + .incbin "baserom_jp.gba", 0x5fa8c0, 0x20 + + .globl gUnknown_85FA8E0 +gUnknown_85FA8E0: @ 0x85FA8E0 + .incbin "baserom_jp.gba", 0x5fa8e0, 0x18 + + .globl gUnknown_85FA8F8 +gUnknown_85FA8F8: @ 0x85FA8F8 + .incbin "baserom_jp.gba", 0x5fa8f8, 0x18 + + .globl gUnknown_85FA910 +gUnknown_85FA910: @ 0x85FA910 + .incbin "baserom_jp.gba", 0x5fa910, 0x8 + + .globl gUnknown_85FA918 +gUnknown_85FA918: @ 0x85FA918 + .incbin "baserom_jp.gba", 0x5fa918, 0x4c + + .globl gUnknown_85FA964 +gUnknown_85FA964: @ 0x85FA964 + .incbin "baserom_jp.gba", 0x5fa964, 0x18 + + .globl gUnknown_85FA97C +gUnknown_85FA97C: @ 0x85FA97C + .incbin "baserom_jp.gba", 0x5fa97c, 0x48 + + .globl gUnknown_85FA9C4 +gUnknown_85FA9C4: @ 0x85FA9C4 + .incbin "baserom_jp.gba", 0x5fa9c4, 0x3 + + .globl gUnknown_85FA9C7 +gUnknown_85FA9C7: @ 0x85FA9C7 + .incbin "baserom_jp.gba", 0x5fa9c7, 0x5 + + .globl gUnknown_85FA9CC +gUnknown_85FA9CC: @ 0x85FA9CC + .incbin "baserom_jp.gba", 0x5fa9cc, 0x18 + + .globl gUnknown_85FA9E4 +gUnknown_85FA9E4: @ 0x85FA9E4 + .incbin "baserom_jp.gba", 0x5fa9e4, 0x510 + + .globl gUnknown_85FAEF4 +gUnknown_85FAEF4: @ 0x85FAEF4 + .incbin "baserom_jp.gba", 0x5faef4, 0x10 + + .globl gUnknown_85FAF04 +gUnknown_85FAF04: @ 0x85FAF04 + .incbin "baserom_jp.gba", 0x5faf04, 0x14 + + .globl gUnknown_85FAF18 +gUnknown_85FAF18: @ 0x85FAF18 + .incbin "baserom_jp.gba", 0x5faf18, 0x10 + + .globl gUnknown_85FAF28 +gUnknown_85FAF28: @ 0x85FAF28 + .incbin "baserom_jp.gba", 0x5faf28, 0x2 + + .globl gUnknown_85FAF2A +gUnknown_85FAF2A: @ 0x85FAF2A + .incbin "baserom_jp.gba", 0x5faf2a, 0xe + + .globl gUnknown_85FAF38 +gUnknown_85FAF38: @ 0x85FAF38 + .incbin "baserom_jp.gba", 0x5faf38, 0x768 + + .globl gUnknown_85FB6A0 +gUnknown_85FB6A0: @ 0x85FB6A0 + .incbin "baserom_jp.gba", 0x5fb6a0, 0x218 + + .globl gUnknown_85FB8B8 +gUnknown_85FB8B8: @ 0x85FB8B8 + .incbin "baserom_jp.gba", 0x5fb8b8, 0x8 + + .globl gUnknown_85FB8C0 +gUnknown_85FB8C0: @ 0x85FB8C0 + .incbin "baserom_jp.gba", 0x5fb8c0, 0x20 + + .globl gUnknown_85FB8E0 +gUnknown_85FB8E0: @ 0x85FB8E0 + .incbin "baserom_jp.gba", 0x5fb8e0, 0x3 + + .globl gUnknown_85FB8E3 +gUnknown_85FB8E3: @ 0x85FB8E3 + .incbin "baserom_jp.gba", 0x5fb8e3, 0x7 + + .globl gUnknown_85FB8EA +gUnknown_85FB8EA: @ 0x85FB8EA + .incbin "baserom_jp.gba", 0x5fb8ea, 0x7 + + .globl gUnknown_85FB8F1 +gUnknown_85FB8F1: @ 0x85FB8F1 + .incbin "baserom_jp.gba", 0x5fb8f1, 0x1b + + .globl gUnknown_85FB90C +gUnknown_85FB90C: @ 0x85FB90C + .incbin "baserom_jp.gba", 0x5fb90c, 0x10 + + .globl gUnknown_85FB91C +gUnknown_85FB91C: @ 0x85FB91C + .incbin "baserom_jp.gba", 0x5fb91c, 0x44 + + .globl gUnknown_85FB960 +gUnknown_85FB960: @ 0x85FB960 + .incbin "baserom_jp.gba", 0x5fb960, 0xc + + .globl gUnknown_85FB96C +gUnknown_85FB96C: @ 0x85FB96C + .incbin "baserom_jp.gba", 0x5fb96c, 0x18 + + .globl gUnknown_85FB984 +gUnknown_85FB984: @ 0x85FB984 + .incbin "baserom_jp.gba", 0x5fb984, 0x10 + + .globl gUnknown_85FB994 +gUnknown_85FB994: @ 0x85FB994 + .incbin "baserom_jp.gba", 0x5fb994, 0x8 + + .globl gUnknown_85FB99C +gUnknown_85FB99C: @ 0x85FB99C + .incbin "baserom_jp.gba", 0x5fb99c, 0x8c + + .globl gUnknown_85FBA28 +gUnknown_85FBA28: @ 0x85FBA28 + .incbin "baserom_jp.gba", 0x5fba28, 0x24 + + .globl gUnknown_85FBA4C +gUnknown_85FBA4C: @ 0x85FBA4C + .incbin "baserom_jp.gba", 0x5fba4c, 0x24 + + .globl gUnknown_85FBA70 +gUnknown_85FBA70: @ 0x85FBA70 + .incbin "baserom_jp.gba", 0x5fba70, 0xa8 + + .globl gUnknown_85FBB18 +gUnknown_85FBB18: @ 0x85FBB18 + .incbin "baserom_jp.gba", 0x5fbb18, 0x30 + + .globl gUnknown_85FBB48 +gUnknown_85FBB48: @ 0x85FBB48 + .incbin "baserom_jp.gba", 0x5fbb48, 0x18 + + .globl gUnknown_85FBB60 +gUnknown_85FBB60: @ 0x85FBB60 + .incbin "baserom_jp.gba", 0x5fbb60, 0x18 + + .globl gUnknown_85FBB78 +gUnknown_85FBB78: @ 0x85FBB78 + .incbin "baserom_jp.gba", 0x5fbb78, 0xc + + .globl gUnknown_85FBB84 +gUnknown_85FBB84: @ 0x85FBB84 + .incbin "baserom_jp.gba", 0x5fbb84, 0x3c + + .globl gUnknown_85FBBC0 +gUnknown_85FBBC0: @ 0x85FBBC0 + .incbin "baserom_jp.gba", 0x5fbbc0, 0x8 + + .globl gUnknown_85FBBC8 +gUnknown_85FBBC8: @ 0x85FBBC8 + .incbin "baserom_jp.gba", 0x5fbbc8, 0x8 + + .globl gUnknown_85FBBD0 +gUnknown_85FBBD0: @ 0x85FBBD0 + .incbin "baserom_jp.gba", 0x5fbbd0, 0x24 + + .globl gUnknown_85FBBF4 +gUnknown_85FBBF4: @ 0x85FBBF4 + .incbin "baserom_jp.gba", 0x5fbbf4, 0x8 + + .globl gUnknown_85FBBFC +gUnknown_85FBBFC: @ 0x85FBBFC + .incbin "baserom_jp.gba", 0x5fbbfc, 0x24 + + .globl gUnknown_85FBC20 +gUnknown_85FBC20: @ 0x85FBC20 + .incbin "baserom_jp.gba", 0x5fbc20, 0x8 + + .globl gUnknown_85FBC28 +gUnknown_85FBC28: @ 0x85FBC28 + .incbin "baserom_jp.gba", 0x5fbc28, 0xa8 + + .globl gUnknown_85FBCD0 +gUnknown_85FBCD0: @ 0x85FBCD0 + .incbin "baserom_jp.gba", 0x5fbcd0, 0x8 + + .globl gUnknown_85FBCD8 +gUnknown_85FBCD8: @ 0x85FBCD8 + .incbin "baserom_jp.gba", 0x5fbcd8, 0x8 + + .globl gUnknown_85FBCE0 +gUnknown_85FBCE0: @ 0x85FBCE0 + .incbin "baserom_jp.gba", 0x5fbce0, 0x30 + + .globl gUnknown_85FBD10 +gUnknown_85FBD10: @ 0x85FBD10 + .incbin "baserom_jp.gba", 0x5fbd10, 0x8 + + .globl gUnknown_85FBD18 +gUnknown_85FBD18: @ 0x85FBD18 + .incbin "baserom_jp.gba", 0x5fbd18, 0x18 + + .globl gUnknown_85FBD30 +gUnknown_85FBD30: @ 0x85FBD30 + .incbin "baserom_jp.gba", 0x5fbd30, 0x8 + + .globl gUnknown_85FBD38 +gUnknown_85FBD38: @ 0x85FBD38 + .incbin "baserom_jp.gba", 0x5fbd38, 0x18 + + .globl gUnknown_85FBD50 +gUnknown_85FBD50: @ 0x85FBD50 + .incbin "baserom_jp.gba", 0x5fbd50, 0x3c + + .globl gUnknown_85FBD8C +gUnknown_85FBD8C: @ 0x85FBD8C + .incbin "baserom_jp.gba", 0x5fbd8c, 0x8 + + .globl gUnknown_85FBD94 +gUnknown_85FBD94: @ 0x85FBD94 + .incbin "baserom_jp.gba", 0x5fbd94, 0x8 + + .globl gUnknown_85FBD9C +gUnknown_85FBD9C: @ 0x85FBD9C + .incbin "baserom_jp.gba", 0x5fbd9c, 0x18 + + .globl gUnknown_85FBDB4 +gUnknown_85FBDB4: @ 0x85FBDB4 + .incbin "baserom_jp.gba", 0x5fbdb4, 0x14 + + .globl gUnknown_85FBDC8 +gUnknown_85FBDC8: @ 0x85FBDC8 + .incbin "baserom_jp.gba", 0x5fbdc8, 0x30 + + .globl gUnknown_85FBDF8 +gUnknown_85FBDF8: @ 0x85FBDF8 + .incbin "baserom_jp.gba", 0x5fbdf8, 0x8 + + .globl gUnknown_85FBE00 +gUnknown_85FBE00: @ 0x85FBE00 + .incbin "baserom_jp.gba", 0x5fbe00, 0x8 + + .globl gUnknown_85FBE08 +gUnknown_85FBE08: @ 0x85FBE08 + .incbin "baserom_jp.gba", 0x5fbe08, 0x8 + + .globl gUnknown_85FBE10 +gUnknown_85FBE10: @ 0x85FBE10 + .incbin "baserom_jp.gba", 0x5fbe10, 0x18 + + .globl gUnknown_85FBE28 +gUnknown_85FBE28: @ 0x85FBE28 + .incbin "baserom_jp.gba", 0x5fbe28, 0x18 + + .globl gUnknown_85FBE40 +gUnknown_85FBE40: @ 0x85FBE40 + .incbin "baserom_jp.gba", 0x5fbe40, 0xe4 + + .globl gUnknown_85FBF24 +gUnknown_85FBF24: @ 0x85FBF24 + .incbin "baserom_jp.gba", 0x5fbf24, 0x8 + + .globl gUnknown_85FBF2C +gUnknown_85FBF2C: @ 0x85FBF2C + .incbin "baserom_jp.gba", 0x5fbf2c, 0x8 + + .globl gUnknown_85FBF34 +gUnknown_85FBF34: @ 0x85FBF34 + .incbin "baserom_jp.gba", 0x5fbf34, 0x8 + + .globl gUnknown_85FBF3C +gUnknown_85FBF3C: @ 0x85FBF3C + .incbin "baserom_jp.gba", 0x5fbf3c, 0x8 + + .globl gUnknown_85FBF44 +gUnknown_85FBF44: @ 0x85FBF44 + .incbin "baserom_jp.gba", 0x5fbf44, 0x8 + + .globl gUnknown_85FBF4C +gUnknown_85FBF4C: @ 0x85FBF4C + .incbin "baserom_jp.gba", 0x5fbf4c, 0x8 + + .globl gUnknown_85FBF54 +gUnknown_85FBF54: @ 0x85FBF54 + .incbin "baserom_jp.gba", 0x5fbf54, 0x8 + + .globl gUnknown_85FBF5C +gUnknown_85FBF5C: @ 0x85FBF5C + .incbin "baserom_jp.gba", 0x5fbf5c, 0x8 + + .globl gUnknown_85FBF64 +gUnknown_85FBF64: @ 0x85FBF64 + .incbin "baserom_jp.gba", 0x5fbf64, 0x8 + + .globl gUnknown_85FBF6C +gUnknown_85FBF6C: @ 0x85FBF6C + .incbin "baserom_jp.gba", 0x5fbf6c, 0x8 + + .globl gUnknown_85FBF74 +gUnknown_85FBF74: @ 0x85FBF74 + .incbin "baserom_jp.gba", 0x5fbf74, 0x18 + + .globl gUnknown_85FBF8C +gUnknown_85FBF8C: @ 0x85FBF8C + .incbin "baserom_jp.gba", 0x5fbf8c, 0x18 + + .globl gUnknown_85FBFA4 +gUnknown_85FBFA4: @ 0x85FBFA4 + .incbin "baserom_jp.gba", 0x5fbfa4, 0x18 + + .globl gUnknown_85FBFBC +gUnknown_85FBFBC: @ 0x85FBFBC + .incbin "baserom_jp.gba", 0x5fbfbc, 0x18 + + .globl gUnknown_85FBFD4 +gUnknown_85FBFD4: @ 0x85FBFD4 + .incbin "baserom_jp.gba", 0x5fbfd4, 0x18 + + .globl gUnknown_85FBFEC +gUnknown_85FBFEC: @ 0x85FBFEC + .incbin "baserom_jp.gba", 0x5fbfec, 0x18 + + .globl gUnknown_85FC004 +gUnknown_85FC004: @ 0x85FC004 + .incbin "baserom_jp.gba", 0x5fc004, 0xc + + .globl gUnknown_85FC010 +gUnknown_85FC010: @ 0x85FC010 + .incbin "baserom_jp.gba", 0x5fc010, 0xc + + .globl gUnknown_85FC01C +gUnknown_85FC01C: @ 0x85FC01C + .incbin "baserom_jp.gba", 0x5fc01c, 0x10 + + .globl gUnknown_85FC02C +gUnknown_85FC02C: @ 0x85FC02C + .incbin "baserom_jp.gba", 0x5fc02c, 0x10 + + .globl gUnknown_85FC03C +gUnknown_85FC03C: @ 0x85FC03C + .incbin "baserom_jp.gba", 0x5fc03c, 0x1dc + + .globl gUnknown_85FC218 +gUnknown_85FC218: @ 0x85FC218 + .incbin "baserom_jp.gba", 0x5fc218, 0x60c + + .globl gUnknown_85FC824 +gUnknown_85FC824: @ 0x85FC824 + .incbin "baserom_jp.gba", 0x5fc824, 0x1e8 + + .globl gUnknown_85FCA0C +gUnknown_85FCA0C: @ 0x85FCA0C + .incbin "baserom_jp.gba", 0x5fca0c, 0x8 + + .globl gUnknown_85FCA14 +gUnknown_85FCA14: @ 0x85FCA14 + .incbin "baserom_jp.gba", 0x5fca14, 0x2c + + .globl gUnknown_85FCA40 +gUnknown_85FCA40: @ 0x85FCA40 + .incbin "baserom_jp.gba", 0x5fca40, 0x18 + + .globl gUnknown_85FCA58 +gUnknown_85FCA58: @ 0x85FCA58 + .incbin "baserom_jp.gba", 0x5fca58, 0x14 + + .globl gUnknown_85FCA6C +gUnknown_85FCA6C: @ 0x85FCA6C + .incbin "baserom_jp.gba", 0x5fca6c, 0x14 + + .globl gUnknown_85FCA80 +gUnknown_85FCA80: @ 0x85FCA80 + .incbin "baserom_jp.gba", 0x5fca80, 0x14 + + .globl gUnknown_85FCA94 +gUnknown_85FCA94: @ 0x85FCA94 + .incbin "baserom_jp.gba", 0x5fca94, 0x14 + + .globl gUnknown_85FCAA8 +gUnknown_85FCAA8: @ 0x85FCAA8 + .incbin "baserom_jp.gba", 0x5fcaa8, 0x14 + + .globl gUnknown_85FCABC +gUnknown_85FCABC: @ 0x85FCABC + .incbin "baserom_jp.gba", 0x5fcabc, 0x14 + + .globl gUnknown_85FCAD0 +gUnknown_85FCAD0: @ 0x85FCAD0 + .incbin "baserom_jp.gba", 0x5fcad0, 0x14 + + .globl gUnknown_85FCAE4 +gUnknown_85FCAE4: @ 0x85FCAE4 + .incbin "baserom_jp.gba", 0x5fcae4, 0x14 + + .globl gUnknown_85FCAF8 +gUnknown_85FCAF8: @ 0x85FCAF8 + .incbin "baserom_jp.gba", 0x5fcaf8, 0x21 + + .globl gUnknown_85FCB19 +gUnknown_85FCB19: @ 0x85FCB19 + .incbin "baserom_jp.gba", 0x5fcb19, 0x13 + + .globl gUnknown_85FCB2C +gUnknown_85FCB2C: @ 0x85FCB2C + .incbin "baserom_jp.gba", 0x5fcb2c, 0x11 + + .globl gUnknown_85FCB3D +gUnknown_85FCB3D: @ 0x85FCB3D + .incbin "baserom_jp.gba", 0x5fcb3d, 0x1c + + .globl gUnknown_85FCB59 +gUnknown_85FCB59: @ 0x85FCB59 + .incbin "baserom_jp.gba", 0x5fcb59, 0x17 + + .globl gUnknown_85FCB70 +gUnknown_85FCB70: @ 0x85FCB70 + .incbin "baserom_jp.gba", 0x5fcb70, 0x13 + + .globl gUnknown_85FCB83 +gUnknown_85FCB83: @ 0x85FCB83 + .incbin "baserom_jp.gba", 0x5fcb83, 0xd + + .globl gUnknown_85FCB90 +gUnknown_85FCB90: @ 0x85FCB90 + .incbin "baserom_jp.gba", 0x5fcb90, 0x1a + + .globl gUnknown_85FCBAA +gUnknown_85FCBAA: @ 0x85FCBAA + .incbin "baserom_jp.gba", 0x5fcbaa, 0x34 + + .globl gUnknown_85FCBDE +gUnknown_85FCBDE: @ 0x85FCBDE + .incbin "baserom_jp.gba", 0x5fcbde, 0x922 + + .globl gUnknown_85FD500 +gUnknown_85FD500: @ 0x85FD500 + .incbin "baserom_jp.gba", 0x5fd500, 0x90 + + .globl gUnknown_85FD590 +gUnknown_85FD590: @ 0x85FD590 + .incbin "baserom_jp.gba", 0x5fd590, 0x10 + + .globl gUnknown_85FD5A0 +gUnknown_85FD5A0: @ 0x85FD5A0 + .incbin "baserom_jp.gba", 0x5fd5a0, 0xb4 + + .globl gUnknown_85FD654 +gUnknown_85FD654: @ 0x85FD654 + .incbin "baserom_jp.gba", 0x5fd654, 0x30 + + .globl gUnknown_85FD684 +gUnknown_85FD684: @ 0x85FD684 + .incbin "baserom_jp.gba", 0x5fd684, 0x18 + + .globl gUnknown_85FD69C +gUnknown_85FD69C: @ 0x85FD69C + .incbin "baserom_jp.gba", 0x5fd69c, 0x84 + + .globl gUnknown_85FD720 +gUnknown_85FD720: @ 0x85FD720 + .incbin "baserom_jp.gba", 0x5fd720, 0x18 + + .globl gUnknown_85FD738 +gUnknown_85FD738: @ 0x85FD738 + .incbin "baserom_jp.gba", 0x5fd738, 0x3c + + .globl gUnknown_85FD774 +gUnknown_85FD774: @ 0x85FD774 + .incbin "baserom_jp.gba", 0x5fd774, 0x10 + + .globl gUnknown_85FD784 +gUnknown_85FD784: @ 0x85FD784 + .incbin "baserom_jp.gba", 0x5fd784, 0x34 + + .globl gUnknown_85FD7B8 +gUnknown_85FD7B8: @ 0x85FD7B8 + .incbin "baserom_jp.gba", 0x5fd7b8, 0x34 + + .globl gUnknown_85FD7EC +gUnknown_85FD7EC: @ 0x85FD7EC + .incbin "baserom_jp.gba", 0x5fd7ec, 0x28028 + + .globl gUnknown_8625814 +gUnknown_8625814: @ 0x8625814 + .incbin "baserom_jp.gba", 0x625814, 0x600 + + .globl gUnknown_8625E14 +gUnknown_8625E14: @ 0x8625E14 + .incbin "baserom_jp.gba", 0x625e14, 0x600 + + .globl gUnknown_8626414 +gUnknown_8626414: @ 0x8626414 + .incbin "baserom_jp.gba", 0x626414, 0x600 + + .globl gUnknown_8626A14 +gUnknown_8626A14: @ 0x8626A14 + .incbin "baserom_jp.gba", 0x626a14, 0x30 + + .globl gUnknown_8626A44 +gUnknown_8626A44: @ 0x8626A44 + .incbin "baserom_jp.gba", 0x626a44, 0x600 + + .globl gUnknown_8627044 +gUnknown_8627044: @ 0x8627044 + .incbin "baserom_jp.gba", 0x627044, 0x600 + + .globl gUnknown_8627644 +gUnknown_8627644: @ 0x8627644 + .incbin "baserom_jp.gba", 0x627644, 0x600 + + .globl gUnknown_8627C44 +gUnknown_8627C44: @ 0x8627C44 + .incbin "baserom_jp.gba", 0x627c44, 0x14638 + + .globl gUnknown_863C27C +gUnknown_863C27C: @ 0x863C27C + .incbin "baserom_jp.gba", 0x63c27c, 0x30 + + .globl gUnknown_863C2AC +gUnknown_863C2AC: @ 0x863C2AC + .incbin "baserom_jp.gba", 0x63c2ac, 0x27e2bc + + .globl gUnknown_88BA568 +gUnknown_88BA568: @ 0x88BA568 + .incbin "baserom_jp.gba", 0x8ba568, 0x547ec + + .globl gUnknown_890ED54 +gUnknown_890ED54: @ 0x890ED54 + .incbin "baserom_jp.gba", 0x90ed54, 0x150 + + .globl gUnknown_890EEA4 +gUnknown_890EEA4: @ 0x890EEA4 + .incbin "baserom_jp.gba", 0x90eea4, 0x2c + + .globl gUnknown_890EED0 +gUnknown_890EED0: @ 0x890EED0 + .incbin "baserom_jp.gba", 0x90eed0, 0xc + + .globl gUnknown_890EEDC +gUnknown_890EEDC: @ 0x890EEDC + .incbin "baserom_jp.gba", 0x90eedc, 0x18 + + .globl gUnknown_890EEF4 +gUnknown_890EEF4: @ 0x890EEF4 + .incbin "baserom_jp.gba", 0x90eef4, 0x34 + + .globl gUnknown_890EF28 +gUnknown_890EF28: @ 0x890EF28 + .incbin "baserom_jp.gba", 0x90ef28, 0x30 + + .globl gUnknown_890EF58 +gUnknown_890EF58: @ 0x890EF58 + .incbin "baserom_jp.gba", 0x90ef58, 0x100 + + .globl gUnknown_890F058 +gUnknown_890F058: @ 0x890F058 + .incbin "baserom_jp.gba", 0x90f058, 0x104 + + .globl gUnknown_890F15C +gUnknown_890F15C: @ 0x890F15C + .incbin "baserom_jp.gba", 0x90f15c, 0x10 + + .globl gUnknown_890F16C +gUnknown_890F16C: @ 0x890F16C + .incbin "baserom_jp.gba", 0x90f16c, 0x10 + + .globl gUnknown_890F17C +gUnknown_890F17C: @ 0x890F17C + .incbin "baserom_jp.gba", 0x90f17c, 0x4 + + .globl gUnknown_890F180 +gUnknown_890F180: @ 0x890F180 + .incbin "baserom_jp.gba", 0x90f180, 0x4 + + .globl gUnknown_890F184 +gUnknown_890F184: @ 0x890F184 + .incbin "baserom_jp.gba", 0x90f184, 0x14 + + .globl gUnknown_890F198 +gUnknown_890F198: @ 0x890F198 + .incbin "baserom_jp.gba", 0x90f198, 0x8 + + .globl gUnknown_890F1A0 +gUnknown_890F1A0: @ 0x890F1A0 + .incbin "baserom_jp.gba", 0x90f1a0, 0x14 + + .globl gUnknown_890F1B4 +gUnknown_890F1B4: @ 0x890F1B4 + .incbin "baserom_jp.gba", 0x90f1b4, 0x1c + + .globl gUnknown_890F1D0 +gUnknown_890F1D0: @ 0x890F1D0 + .incbin "baserom_jp.gba", 0x90f1d0, 0x4 + + .globl gUnknown_890F1D4 +gUnknown_890F1D4: @ 0x890F1D4 + .incbin "baserom_jp.gba", 0x90f1d4, 0x4 + + .globl gUnknown_890F1D8 +gUnknown_890F1D8: @ 0x890F1D8 + .incbin "baserom_jp.gba", 0x90f1d8, 0xc + + .globl gUnknown_890F1E4 +gUnknown_890F1E4: @ 0x890F1E4 + .incbin "baserom_jp.gba", 0x90f1e4, 0x4 + + .globl gUnknown_890F1E8 +gUnknown_890F1E8: @ 0x890F1E8 + .incbin "baserom_jp.gba", 0x90f1e8, 0x4 + + .globl gUnknown_890F1EC +gUnknown_890F1EC: @ 0x890F1EC + .incbin "baserom_jp.gba", 0x90f1ec, 0x30 + + .globl gUnknown_890F21C +gUnknown_890F21C: @ 0x890F21C + .incbin "baserom_jp.gba", 0x90f21c, 0x8 + + .globl gUnknown_890F224 +gUnknown_890F224: @ 0x890F224 + .incbin "baserom_jp.gba", 0x90f224, 0x4 + + .globl gUnknown_890F228 +gUnknown_890F228: @ 0x890F228 + .incbin "baserom_jp.gba", 0x90f228, 0xc + + .globl gUnknown_890F234 +gUnknown_890F234: @ 0x890F234 + .incbin "baserom_jp.gba", 0x90f234, 0xc8 + + .globl gUnknown_890F2FC +gUnknown_890F2FC: @ 0x890F2FC + .incbin "baserom_jp.gba", 0x90f2fc, 0x50 + + .globl gUnknown_890F34C +gUnknown_890F34C: @ 0x890F34C + .incbin "baserom_jp.gba", 0x90f34c, 0x4 + + .globl gUnknown_890F350 +gUnknown_890F350: @ 0x890F350 + .incbin "baserom_jp.gba", 0x90f350, 0x24 + + .globl gUnknown_890F374 +gUnknown_890F374: @ 0x890F374 + .incbin "baserom_jp.gba", 0x90f374, 0x30e0 + + .globl gUnknown_8912454 +gUnknown_8912454: @ 0x8912454 + .incbin "baserom_jp.gba", 0x912454, 0x348c + + .globl gUnknown_89158E0 +gUnknown_89158E0: @ 0x89158E0 + .incbin "baserom_jp.gba", 0x9158e0, 0x2eac0c + + .globl gUnknown_8C004EC +gUnknown_8C004EC: @ 0x8C004EC + .incbin "baserom_jp.gba", 0xc004ec, 0x44 + + .globl gUnknown_8C00530 +gUnknown_8C00530: @ 0x8C00530 + .incbin "baserom_jp.gba", 0xc00530, 0x1dd8 + + .globl gUnknown_8C02308 +gUnknown_8C02308: @ 0x8C02308 + .incbin "baserom_jp.gba", 0xc02308, 0x70f0 + + .globl gUnknown_8C093F8 +gUnknown_8C093F8: @ 0x8C093F8 + .incbin "baserom_jp.gba", 0xc093f8, 0x87ec + + .globl gUnknown_8C11BE4 +gUnknown_8C11BE4: @ 0x8C11BE4 + .incbin "baserom_jp.gba", 0xc11be4, 0x52b4 + + .globl gUnknown_8C16E98 +gUnknown_8C16E98: @ 0x8C16E98 + .incbin "baserom_jp.gba", 0xc16e98, 0x118 + + .globl gUnknown_8C16FB0 +gUnknown_8C16FB0: @ 0x8C16FB0 + .incbin "baserom_jp.gba", 0xc16fb0, 0x1c8 + + .globl gUnknown_8C17178 +gUnknown_8C17178: @ 0x8C17178 + .incbin "baserom_jp.gba", 0xc17178, 0x810 + + .globl gUnknown_8C17988 +gUnknown_8C17988: @ 0x8C17988 + .incbin "baserom_jp.gba", 0xc17988, 0x130 + + .globl gUnknown_8C17AB8 +gUnknown_8C17AB8: @ 0x8C17AB8 + .incbin "baserom_jp.gba", 0xc17ab8, 0xb98 + + .globl gUnknown_8C18650 +gUnknown_8C18650: @ 0x8C18650 + .incbin "baserom_jp.gba", 0xc18650, 0x107c + + .globl gUnknown_8C196CC +gUnknown_8C196CC: @ 0x8C196CC + .incbin "baserom_jp.gba", 0xc196cc, 0x868 + + .globl gUnknown_8C19F34 +gUnknown_8C19F34: @ 0x8C19F34 + .incbin "baserom_jp.gba", 0xc19f34, 0x114 + + .globl gUnknown_8C1A048 +gUnknown_8C1A048: @ 0x8C1A048 + .incbin "baserom_jp.gba", 0xc1a048, 0x12c + + .globl gUnknown_8C1A174 +gUnknown_8C1A174: @ 0x8C1A174 + .incbin "baserom_jp.gba", 0xc1a174, 0x188 + + .globl gUnknown_8C1A2FC +gUnknown_8C1A2FC: @ 0x8C1A2FC + .incbin "baserom_jp.gba", 0xc1a2fc, 0x2404 + + .globl gUnknown_8C1C700 +gUnknown_8C1C700: @ 0x8C1C700 + .incbin "baserom_jp.gba", 0xc1c700, 0x9f4 + + .globl gUnknown_8C1D0F4 +gUnknown_8C1D0F4: @ 0x8C1D0F4 + .incbin "baserom_jp.gba", 0xc1d0f4, 0x13c + + .globl gUnknown_8C1D230 +gUnknown_8C1D230: @ 0x8C1D230 + .incbin "baserom_jp.gba", 0xc1d230, 0x28 + + .globl gUnknown_8C1D258 +gUnknown_8C1D258: @ 0x8C1D258 + .incbin "baserom_jp.gba", 0xc1d258, 0x34b4 + + .globl gUnknown_8C2070C +gUnknown_8C2070C: @ 0x8C2070C + .incbin "baserom_jp.gba", 0xc2070c, 0x1c + + .globl gUnknown_8C20728 +gUnknown_8C20728: @ 0x8C20728 + .incbin "baserom_jp.gba", 0xc20728, 0x1f8c + + .globl gUnknown_8C226B4 +gUnknown_8C226B4: @ 0x8C226B4 + .incbin "baserom_jp.gba", 0xc226b4, 0xcd0 + + .globl gUnknown_8C23384 +gUnknown_8C23384: @ 0x8C23384 + .incbin "baserom_jp.gba", 0xc23384, 0xa70 + + .globl gUnknown_8C23DF4 +gUnknown_8C23DF4: @ 0x8C23DF4 + .incbin "baserom_jp.gba", 0xc23df4, 0x28 + + .globl gUnknown_8C23E1C +gUnknown_8C23E1C: @ 0x8C23E1C + .incbin "baserom_jp.gba", 0xc23e1c, 0xc58 + + .globl gUnknown_8C24A74 +gUnknown_8C24A74: @ 0x8C24A74 + .incbin "baserom_jp.gba", 0xc24a74, 0x28 + + .globl gUnknown_8C24A9C +gUnknown_8C24A9C: @ 0x8C24A9C + .incbin "baserom_jp.gba", 0xc24a9c, 0x5c3c + + .globl gUnknown_8C2A6D8 +gUnknown_8C2A6D8: @ 0x8C2A6D8 + .incbin "baserom_jp.gba", 0xc2a6d8, 0xa0 + + .globl gUnknown_8C2A778 +gUnknown_8C2A778: @ 0x8C2A778 + .incbin "baserom_jp.gba", 0xc2a778, 0x18 + + .globl gUnknown_8C2A790 +gUnknown_8C2A790: @ 0x8C2A790 + .incbin "baserom_jp.gba", 0xc2a790, 0x27d0 + + .globl gUnknown_8C2CF60 +gUnknown_8C2CF60: @ 0x8C2CF60 + .incbin "baserom_jp.gba", 0xc2cf60, 0x24 + + .globl gUnknown_8C2CF84 +gUnknown_8C2CF84: @ 0x8C2CF84 + .incbin "baserom_jp.gba", 0xc2cf84, 0x240 + + .globl gUnknown_8C2D1C4 +gUnknown_8C2D1C4: @ 0x8C2D1C4 + .incbin "baserom_jp.gba", 0xc2d1c4, 0x600 + + .globl gUnknown_8C2D7C4 +gUnknown_8C2D7C4: @ 0x8C2D7C4 + .incbin "baserom_jp.gba", 0xc2d7c4, 0x210 + + .globl gUnknown_8C2D9D4 +gUnknown_8C2D9D4: @ 0x8C2D9D4 + .incbin "baserom_jp.gba", 0xc2d9d4, 0x11c + + .globl gUnknown_8C2DAF0 +gUnknown_8C2DAF0: @ 0x8C2DAF0 + .incbin "baserom_jp.gba", 0xc2daf0, 0x11c + + .globl gUnknown_8C2DC0C +gUnknown_8C2DC0C: @ 0x8C2DC0C + .incbin "baserom_jp.gba", 0xc2dc0c, 0x20 + + .globl gUnknown_8C2DC2C +gUnknown_8C2DC2C: @ 0x8C2DC2C + .incbin "baserom_jp.gba", 0xc2dc2c, 0x20 + + .globl gUnknown_8C2DC4C +gUnknown_8C2DC4C: @ 0x8C2DC4C + .incbin "baserom_jp.gba", 0xc2dc4c, 0x20 + + .globl gUnknown_8C2DC6C +gUnknown_8C2DC6C: @ 0x8C2DC6C + .incbin "baserom_jp.gba", 0xc2dc6c, 0x20 + + .globl gUnknown_8C2DC8C +gUnknown_8C2DC8C: @ 0x8C2DC8C + .incbin "baserom_jp.gba", 0xc2dc8c, 0x20 + + .globl gUnknown_8C2DCAC +gUnknown_8C2DCAC: @ 0x8C2DCAC + .incbin "baserom_jp.gba", 0xc2dcac, 0x20 + + .globl gUnknown_8C2DCCC +gUnknown_8C2DCCC: @ 0x8C2DCCC + .incbin "baserom_jp.gba", 0xc2dccc, 0x20 + + .globl gUnknown_8C2DCEC +gUnknown_8C2DCEC: @ 0x8C2DCEC + .incbin "baserom_jp.gba", 0xc2dcec, 0x20 + + .globl gUnknown_8C2DD0C +gUnknown_8C2DD0C: @ 0x8C2DD0C + .incbin "baserom_jp.gba", 0xc2dd0c, 0x13c + + .globl gUnknown_8C2DE48 +gUnknown_8C2DE48: @ 0x8C2DE48 + .incbin "baserom_jp.gba", 0xc2de48, 0x20 + + .globl gUnknown_8C2DE68 +gUnknown_8C2DE68: @ 0x8C2DE68 + .incbin "baserom_jp.gba", 0xc2de68, 0xc8c + + .globl gUnknown_8C2EAF4 +gUnknown_8C2EAF4: @ 0x8C2EAF4 + .incbin "baserom_jp.gba", 0xc2eaf4, 0x4c + + .globl gUnknown_8C2EB40 +gUnknown_8C2EB40: @ 0x8C2EB40 + .incbin "baserom_jp.gba", 0xc2eb40, 0x114c0 + + .globl gUnknown_8C40000 +gUnknown_8C40000: @ 0x8C40000 + .incbin "baserom_jp.gba", 0xc40000, 0x10000 + + .globl gUnknown_8C50000 +gUnknown_8C50000: @ 0x8C50000 + .incbin "baserom_jp.gba", 0xc50000, 0x127994 + + .globl gUnknown_8D77994 +gUnknown_8D77994: @ 0x8D77994 + .incbin "baserom_jp.gba", 0xd77994, 0xe8 + + .globl gUnknown_8D77A7C +gUnknown_8D77A7C: @ 0x8D77A7C + .incbin "baserom_jp.gba", 0xd77a7c, 0x10c + + .globl gUnknown_8D77B88 +gUnknown_8D77B88: @ 0x8D77B88 + .incbin "baserom_jp.gba", 0xd77b88, 0x28 + + .globl gUnknown_8D77BB0 +gUnknown_8D77BB0: @ 0x8D77BB0 + .incbin "baserom_jp.gba", 0xd77bb0, 0x25fc + + .globl gUnknown_8D7A1AC +gUnknown_8D7A1AC: @ 0x8D7A1AC + .incbin "baserom_jp.gba", 0xd7a1ac, 0x618 + + .globl gUnknown_8D7A7C4 +gUnknown_8D7A7C4: @ 0x8D7A7C4 + .incbin "baserom_jp.gba", 0xd7a7c4, 0x13f4 + + .globl gUnknown_8D7BBB8 +gUnknown_8D7BBB8: @ 0x8D7BBB8 + .incbin "baserom_jp.gba", 0xd7bbb8, 0x640 + + .globl gUnknown_8D7C1F8 +gUnknown_8D7C1F8: @ 0x8D7C1F8 + .incbin "baserom_jp.gba", 0xd7c1f8, 0x2ec + + .globl gUnknown_8D7C4E4 +gUnknown_8D7C4E4: @ 0x8D7C4E4 + .incbin "baserom_jp.gba", 0xd7c4e4, 0x5ac + + .globl gUnknown_8D7CA90 +gUnknown_8D7CA90: @ 0x8D7CA90 + .incbin "baserom_jp.gba", 0xd7ca90, 0x3c + + .globl gUnknown_8D7CACC +gUnknown_8D7CACC: @ 0x8D7CACC + .incbin "baserom_jp.gba", 0xd7cacc, 0x2b0 + + .globl gUnknown_8D7CD7C +gUnknown_8D7CD7C: @ 0x8D7CD7C + .incbin "baserom_jp.gba", 0xd7cd7c, 0x608 + + .globl gUnknown_8D7D384 +gUnknown_8D7D384: @ 0x8D7D384 + .incbin "baserom_jp.gba", 0xd7d384, 0x2b0 + + .globl gUnknown_8D7D634 +gUnknown_8D7D634: @ 0x8D7D634 + .incbin "baserom_jp.gba", 0xd7d634, 0x674 + + .globl gUnknown_8D7DCA8 +gUnknown_8D7DCA8: @ 0x8D7DCA8 + .incbin "baserom_jp.gba", 0xd7dca8, 0x2f0 + + .globl gUnknown_8D7DF98 +gUnknown_8D7DF98: @ 0x8D7DF98 + .incbin "baserom_jp.gba", 0xd7df98, 0x3c + + .globl gUnknown_8D7DFD4 +gUnknown_8D7DFD4: @ 0x8D7DFD4 + .incbin "baserom_jp.gba", 0xd7dfd4, 0x58 + + .globl gUnknown_8D7E02C +gUnknown_8D7E02C: @ 0x8D7E02C + .incbin "baserom_jp.gba", 0xd7e02c, 0x3c + + .globl gUnknown_8D7E068 +gUnknown_8D7E068: @ 0x8D7E068 + .incbin "baserom_jp.gba", 0xd7e068, 0x3c + + .globl gUnknown_8D7E0A4 +gUnknown_8D7E0A4: @ 0x8D7E0A4 + .incbin "baserom_jp.gba", 0xd7e0a4, 0x60 + + .globl gUnknown_8D7E104 +gUnknown_8D7E104: @ 0x8D7E104 + .incbin "baserom_jp.gba", 0xd7e104, 0x6c + + .globl gUnknown_8D7E170 +gUnknown_8D7E170: @ 0x8D7E170 + .incbin "baserom_jp.gba", 0xd7e170, 0x50 + + .globl gUnknown_8D7E1C0 +gUnknown_8D7E1C0: @ 0x8D7E1C0 + .incbin "baserom_jp.gba", 0xd7e1c0, 0x48 + + .globl gUnknown_8D7E208 +gUnknown_8D7E208: @ 0x8D7E208 + .incbin "baserom_jp.gba", 0xd7e208, 0x44 + + .globl gUnknown_8D7E24C +gUnknown_8D7E24C: @ 0x8D7E24C + .incbin "baserom_jp.gba", 0xd7e24c, 0x50 + + .globl gUnknown_8D7E29C +gUnknown_8D7E29C: @ 0x8D7E29C + .incbin "baserom_jp.gba", 0xd7e29c, 0x3c + + .globl gUnknown_8D7E2D8 +gUnknown_8D7E2D8: @ 0x8D7E2D8 + .incbin "baserom_jp.gba", 0xd7e2d8, 0x17c4 + + .globl gUnknown_8D7FA9C +gUnknown_8D7FA9C: @ 0x8D7FA9C + .incbin "baserom_jp.gba", 0xd7fa9c, 0x4cc + + .globl gUnknown_8D7FF68 +gUnknown_8D7FF68: @ 0x8D7FF68 + .incbin "baserom_jp.gba", 0xd7ff68, 0x174c + + .globl gUnknown_8D816B4 +gUnknown_8D816B4: @ 0x8D816B4 + .incbin "baserom_jp.gba", 0xd816b4, 0x81c + + .globl gUnknown_8D81ED0 +gUnknown_8D81ED0: @ 0x8D81ED0 + .incbin "baserom_jp.gba", 0xd81ed0, 0x2a8 + + .globl gUnknown_8D82178 +gUnknown_8D82178: @ 0x8D82178 + .incbin "baserom_jp.gba", 0xd82178, 0x410 + + .globl gUnknown_8D82588 +gUnknown_8D82588: @ 0x8D82588 + .incbin "baserom_jp.gba", 0xd82588, 0x124 + + .globl gUnknown_8D826AC +gUnknown_8D826AC: @ 0x8D826AC + .incbin "baserom_jp.gba", 0xd826ac, 0x668 + + .globl gUnknown_8D82D14 +gUnknown_8D82D14: @ 0x8D82D14 + .incbin "baserom_jp.gba", 0xd82d14, 0x2a0 + + .globl gUnknown_8D82FB4 +gUnknown_8D82FB4: @ 0x8D82FB4 + .incbin "baserom_jp.gba", 0xd82fb4, 0x5ec + + .globl gUnknown_8D835A0 +gUnknown_8D835A0: @ 0x8D835A0 + .incbin "baserom_jp.gba", 0xd835a0, 0x404 + + .globl gUnknown_8D839A4 +gUnknown_8D839A4: @ 0x8D839A4 + .incbin "baserom_jp.gba", 0xd839a4, 0x22c + + .globl gUnknown_8D83BD0 +gUnknown_8D83BD0: @ 0x8D83BD0 + .incbin "baserom_jp.gba", 0xd83bd0, 0x110 + + .globl gUnknown_8D83CE0 +gUnknown_8D83CE0: @ 0x8D83CE0 + .incbin "baserom_jp.gba", 0xd83ce0, 0x114 + + .globl gUnknown_8D83DF4 +gUnknown_8D83DF4: @ 0x8D83DF4 + .incbin "baserom_jp.gba", 0xd83df4, 0xc14 + + .globl gUnknown_8D84A08 +gUnknown_8D84A08: @ 0x8D84A08 + .incbin "baserom_jp.gba", 0xd84a08, 0x590 + + .globl gUnknown_8D84F98 +gUnknown_8D84F98: @ 0x8D84F98 + .incbin "baserom_jp.gba", 0xd84f98, 0x3a4 + + .globl gUnknown_8D8533C +gUnknown_8D8533C: @ 0x8D8533C + .incbin "baserom_jp.gba", 0xd8533c, 0xec + + .globl gUnknown_8D85428 +gUnknown_8D85428: @ 0x8D85428 + .incbin "baserom_jp.gba", 0xd85428, 0x84 + + .globl gUnknown_8D854AC +gUnknown_8D854AC: @ 0x8D854AC + .incbin "baserom_jp.gba", 0xd854ac, 0x120 + + .globl gUnknown_8D855CC +gUnknown_8D855CC: @ 0x8D855CC + .incbin "baserom_jp.gba", 0xd855cc, 0x18 + + .globl gUnknown_8D855E4 +gUnknown_8D855E4: @ 0x8D855E4 + .incbin "baserom_jp.gba", 0xd855e4, 0x20 + + .globl gUnknown_8D85604 +gUnknown_8D85604: @ 0x8D85604 + .incbin "baserom_jp.gba", 0xd85604, 0x2 + + .globl gUnknown_8D85606 +gUnknown_8D85606: @ 0x8D85606 + .incbin "baserom_jp.gba", 0xd85606, 0xa6 + + .globl gUnknown_8D856AC +gUnknown_8D856AC: @ 0x8D856AC + .incbin "baserom_jp.gba", 0xd856ac, 0xe0 + + .globl gUnknown_8D8578C +gUnknown_8D8578C: @ 0x8D8578C + .incbin "baserom_jp.gba", 0xd8578c, 0x274 + + .globl gUnknown_8D85A00 +gUnknown_8D85A00: @ 0x8D85A00 + .incbin "baserom_jp.gba", 0xd85a00, 0x234 + + .globl gUnknown_8D85C34 +gUnknown_8D85C34: @ 0x8D85C34 + .incbin "baserom_jp.gba", 0xd85c34, 0x20 + + .globl gUnknown_8D85C54 +gUnknown_8D85C54: @ 0x8D85C54 + .incbin "baserom_jp.gba", 0xd85c54, 0x20 + + .globl gUnknown_8D85C74 +gUnknown_8D85C74: @ 0x8D85C74 + .incbin "baserom_jp.gba", 0xd85c74, 0x40 + + .globl gUnknown_8D85CB4 +gUnknown_8D85CB4: @ 0x8D85CB4 + .incbin "baserom_jp.gba", 0xd85cb4, 0x182 + + .globl gUnknown_8D85E36 +gUnknown_8D85E36: @ 0x8D85E36 + .incbin "baserom_jp.gba", 0xd85e36, 0xa + + .globl gUnknown_8D85E40 +gUnknown_8D85E40: @ 0x8D85E40 + .incbin "baserom_jp.gba", 0xd85e40, 0x16 + + .globl gUnknown_8D85E56 +gUnknown_8D85E56: @ 0x8D85E56 + .incbin "baserom_jp.gba", 0xd85e56, 0xa + + .globl gUnknown_8D85E60 +gUnknown_8D85E60: @ 0x8D85E60 + .incbin "baserom_jp.gba", 0xd85e60, 0x2618 + + .globl gUnknown_8D88478 +gUnknown_8D88478: @ 0x8D88478 + .incbin "baserom_jp.gba", 0xd88478, 0x8ac + + .globl gUnknown_8D88D24 +gUnknown_8D88D24: @ 0x8D88D24 + .incbin "baserom_jp.gba", 0xd88d24, 0x4e4 + + .globl gUnknown_8D89208 +gUnknown_8D89208: @ 0x8D89208 + .incbin "baserom_jp.gba", 0xd89208, 0x898 + + .globl gUnknown_8D89AA0 +gUnknown_8D89AA0: @ 0x8D89AA0 + .incbin "baserom_jp.gba", 0xd89aa0, 0x4c0 + + .globl gUnknown_8D89F60 +gUnknown_8D89F60: @ 0x8D89F60 + .incbin "baserom_jp.gba", 0xd89f60, 0x89c + + .globl gUnknown_8D8A7FC +gUnknown_8D8A7FC: @ 0x8D8A7FC + .incbin "baserom_jp.gba", 0xd8a7fc, 0x11c + + .globl gUnknown_8D8A918 +gUnknown_8D8A918: @ 0x8D8A918 + .incbin "baserom_jp.gba", 0xd8a918, 0x120 + + .globl gUnknown_8D8AA38 +gUnknown_8D8AA38: @ 0x8D8AA38 + .incbin "baserom_jp.gba", 0xd8aa38, 0x72c + + .globl gUnknown_8D8B164 +gUnknown_8D8B164: @ 0x8D8B164 + .incbin "baserom_jp.gba", 0xd8b164, 0x2c0 + + .globl gUnknown_8D8B424 +gUnknown_8D8B424: @ 0x8D8B424 + .incbin "baserom_jp.gba", 0xd8b424, 0x2a8 + + .globl gUnknown_8D8B6CC +gUnknown_8D8B6CC: @ 0x8D8B6CC + .incbin "baserom_jp.gba", 0xd8b6cc, 0x38c + + .globl gUnknown_8D8BA58 +gUnknown_8D8BA58: @ 0x8D8BA58 + .incbin "baserom_jp.gba", 0xd8ba58, 0x6f8 + + .globl gUnknown_8D8C150 +gUnknown_8D8C150: @ 0x8D8C150 + .incbin "baserom_jp.gba", 0xd8c150, 0x6cc + + .globl gUnknown_8D8C81C +gUnknown_8D8C81C: @ 0x8D8C81C + .incbin "baserom_jp.gba", 0xd8c81c, 0x490 + + .globl gUnknown_8D8CCAC +gUnknown_8D8CCAC: @ 0x8D8CCAC + .incbin "baserom_jp.gba", 0xd8ccac, 0x748 + + .globl gUnknown_8D8D3F4 +gUnknown_8D8D3F4: @ 0x8D8D3F4 + .incbin "baserom_jp.gba", 0xd8d3f4, 0x17c + + .globl gUnknown_8D8D570 +gUnknown_8D8D570: @ 0x8D8D570 + .incbin "baserom_jp.gba", 0xd8d570, 0x52c + + .globl gUnknown_8D8DA9C +gUnknown_8D8DA9C: @ 0x8D8DA9C + .incbin "baserom_jp.gba", 0xd8da9c, 0xee0 + + .globl gUnknown_8D8E97C +gUnknown_8D8E97C: @ 0x8D8E97C + .incbin "baserom_jp.gba", 0xd8e97c, 0x80 + + .globl gUnknown_8D8E9FC +gUnknown_8D8E9FC: @ 0x8D8E9FC + .incbin "baserom_jp.gba", 0xd8e9fc, 0x1dc + + .globl gUnknown_8D8EBD8 +gUnknown_8D8EBD8: @ 0x8D8EBD8 + .incbin "baserom_jp.gba", 0xd8ebd8, 0xf78 + + .globl gUnknown_8D8FB50 +gUnknown_8D8FB50: @ 0x8D8FB50 + .incbin "baserom_jp.gba", 0xd8fb50, 0x19fc + + .globl gUnknown_8D9154C +gUnknown_8D9154C: @ 0x8D9154C + .incbin "baserom_jp.gba", 0xd9154c, 0x820 + + .globl gUnknown_8D91D6C +gUnknown_8D91D6C: @ 0x8D91D6C + .incbin "baserom_jp.gba", 0xd91d6c, 0xa34 + + .globl gUnknown_8D927A0 +gUnknown_8D927A0: @ 0x8D927A0 + .incbin "baserom_jp.gba", 0xd927a0, 0xaf4 + + .globl gUnknown_8D93294 +gUnknown_8D93294: @ 0x8D93294 + .incbin "baserom_jp.gba", 0xd93294, 0x2b8 + + .globl gUnknown_8D9354C +gUnknown_8D9354C: @ 0x8D9354C + .incbin "baserom_jp.gba", 0xd9354c, 0x1e4 + + .globl gUnknown_8D93730 +gUnknown_8D93730: @ 0x8D93730 + .incbin "baserom_jp.gba", 0xd93730, 0x1e4 + + .globl gUnknown_8D93914 +gUnknown_8D93914: @ 0x8D93914 + .incbin "baserom_jp.gba", 0xd93914, 0x1158 + + .globl gUnknown_8D94A6C +gUnknown_8D94A6C: @ 0x8D94A6C + .incbin "baserom_jp.gba", 0xd94a6c, 0x1320 + + .globl gUnknown_8D95D8C +gUnknown_8D95D8C: @ 0x8D95D8C + .incbin "baserom_jp.gba", 0xd95d8c, 0x28 + + .globl gUnknown_8D95DB4 +gUnknown_8D95DB4: @ 0x8D95DB4 + .incbin "baserom_jp.gba", 0xd95db4, 0x2d0 + + .globl gUnknown_8D96084 +gUnknown_8D96084: @ 0x8D96084 + .incbin "baserom_jp.gba", 0xd96084, 0x2d4 + + .globl gUnknown_8D96358 +gUnknown_8D96358: @ 0x8D96358 + .incbin "baserom_jp.gba", 0xd96358, 0x448 + + .globl gUnknown_8D967A0 +gUnknown_8D967A0: @ 0x8D967A0 + .incbin "baserom_jp.gba", 0xd967a0, 0x2c8 + + .globl gUnknown_8D96A68 +gUnknown_8D96A68: @ 0x8D96A68 + .incbin "baserom_jp.gba", 0xd96a68, 0xec + + .globl gUnknown_8D96B54 +gUnknown_8D96B54: @ 0x8D96B54 + .incbin "baserom_jp.gba", 0xd96b54, 0x1100 + + .globl gUnknown_8D97C54 +gUnknown_8D97C54: @ 0x8D97C54 + .incbin "baserom_jp.gba", 0xd97c54, 0x17c + + .globl gUnknown_8D97DD0 +gUnknown_8D97DD0: @ 0x8D97DD0 + .incbin "baserom_jp.gba", 0xd97dd0, 0x9cc + + .globl gUnknown_8D9879C +gUnknown_8D9879C: @ 0x8D9879C + .incbin "baserom_jp.gba", 0xd9879c, 0xf0 + + .globl gUnknown_8D9888C +gUnknown_8D9888C: @ 0x8D9888C + .incbin "baserom_jp.gba", 0xd9888c, 0x1b8 + + .globl gUnknown_8D98A44 +gUnknown_8D98A44: @ 0x8D98A44 + .incbin "baserom_jp.gba", 0xd98a44, 0x164 + + .globl gUnknown_8D98BA8 +gUnknown_8D98BA8: @ 0x8D98BA8 + .incbin "baserom_jp.gba", 0xd98ba8, 0x16c + + .globl gUnknown_8D98D14 +gUnknown_8D98D14: @ 0x8D98D14 + .incbin "baserom_jp.gba", 0xd98d14, 0x178 + + .globl gUnknown_8D98E8C +gUnknown_8D98E8C: @ 0x8D98E8C + .incbin "baserom_jp.gba", 0xd98e8c, 0x18a8 + + .globl gUnknown_8D9A734 +gUnknown_8D9A734: @ 0x8D9A734 + .incbin "baserom_jp.gba", 0xd9a734, 0x4c + + .globl gUnknown_8D9A780 +gUnknown_8D9A780: @ 0x8D9A780 + .incbin "baserom_jp.gba", 0xd9a780, 0x4c + + .globl gUnknown_8D9A7CC +gUnknown_8D9A7CC: @ 0x8D9A7CC + .incbin "baserom_jp.gba", 0xd9a7cc, 0x2b8 + + .globl gUnknown_8D9AA84 +gUnknown_8D9AA84: @ 0x8D9AA84 + .incbin "baserom_jp.gba", 0xd9aa84, 0x544 + + .globl gUnknown_8D9AFC8 +gUnknown_8D9AFC8: @ 0x8D9AFC8 + .incbin "baserom_jp.gba", 0xd9afc8, 0x34 + + .globl gUnknown_8D9AFFC +gUnknown_8D9AFFC: @ 0x8D9AFFC + .incbin "baserom_jp.gba", 0xd9affc, 0x140 + + .globl gUnknown_8D9B13C +gUnknown_8D9B13C: @ 0x8D9B13C + .incbin "baserom_jp.gba", 0xd9b13c, 0x78 + + .globl gUnknown_8D9B1B4 +gUnknown_8D9B1B4: @ 0x8D9B1B4 + .incbin "baserom_jp.gba", 0xd9b1b4, 0x10c + + .globl gUnknown_8D9B2C0 +gUnknown_8D9B2C0: @ 0x8D9B2C0 + .incbin "baserom_jp.gba", 0xd9b2c0, 0x28 + + .globl gUnknown_8D9B2E8 +gUnknown_8D9B2E8: @ 0x8D9B2E8 + .incbin "baserom_jp.gba", 0xd9b2e8, 0x1cc + + .globl gUnknown_8D9B4B4 +gUnknown_8D9B4B4: @ 0x8D9B4B4 + .incbin "baserom_jp.gba", 0xd9b4b4, 0x208 + + .globl gUnknown_8D9B6BC +gUnknown_8D9B6BC: @ 0x8D9B6BC + .incbin "baserom_jp.gba", 0xd9b6bc, 0x358 + + .globl gUnknown_8D9BA14 +gUnknown_8D9BA14: @ 0x8D9BA14 + .incbin "baserom_jp.gba", 0xd9ba14, 0x27c + + .globl gUnknown_8D9BC90 +gUnknown_8D9BC90: @ 0x8D9BC90 + .incbin "baserom_jp.gba", 0xd9bc90, 0x100 + + .globl gUnknown_8D9BD90 +gUnknown_8D9BD90: @ 0x8D9BD90 + .incbin "baserom_jp.gba", 0xd9bd90, 0x41c + + .globl gUnknown_8D9C1AC +gUnknown_8D9C1AC: @ 0x8D9C1AC + .incbin "baserom_jp.gba", 0xd9c1ac, 0xa8 + + .globl gUnknown_8D9C254 +gUnknown_8D9C254: @ 0x8D9C254 + .incbin "baserom_jp.gba", 0xd9c254, 0x190 + + .globl gUnknown_8D9C3E4 +gUnknown_8D9C3E4: @ 0x8D9C3E4 + .incbin "baserom_jp.gba", 0xd9c3e4, 0x7284 + + .globl gUnknown_8DA3668 +gUnknown_8DA3668: @ 0x8DA3668 + .incbin "baserom_jp.gba", 0xda3668, 0x428 + + .globl gUnknown_8DA3A90 +gUnknown_8DA3A90: @ 0x8DA3A90 + .incbin "baserom_jp.gba", 0xda3a90, 0x3c + + .globl gUnknown_8DA3ACC +gUnknown_8DA3ACC: @ 0x8DA3ACC + .incbin "baserom_jp.gba", 0xda3acc, 0x164 + + .globl gUnknown_8DA3C30 +gUnknown_8DA3C30: @ 0x8DA3C30 + .incbin "baserom_jp.gba", 0xda3c30, 0x100 + + .globl gUnknown_8DA3D30 +gUnknown_8DA3D30: @ 0x8DA3D30 + .incbin "baserom_jp.gba", 0xda3d30, 0x20c + + .globl gUnknown_8DA3F3C +gUnknown_8DA3F3C: @ 0x8DA3F3C + .incbin "baserom_jp.gba", 0xda3f3c, 0x1114 + + .globl gUnknown_8DA5050 +gUnknown_8DA5050: @ 0x8DA5050 + .incbin "baserom_jp.gba", 0xda5050, 0x44 + + .globl gUnknown_8DA5094 +gUnknown_8DA5094: @ 0x8DA5094 + .incbin "baserom_jp.gba", 0xda5094, 0x184 + + .globl gUnknown_8DA5218 +gUnknown_8DA5218: @ 0x8DA5218 + .incbin "baserom_jp.gba", 0xda5218, 0x1148 + + .globl gUnknown_8DA6360 +gUnknown_8DA6360: @ 0x8DA6360 + .incbin "baserom_jp.gba", 0xda6360, 0x904 + + .globl gUnknown_8DA6C64 +gUnknown_8DA6C64: @ 0x8DA6C64 + .incbin "baserom_jp.gba", 0xda6c64, 0xb6c + + .globl gUnknown_8DA77D0 +gUnknown_8DA77D0: @ 0x8DA77D0 + .incbin "baserom_jp.gba", 0xda77d0, 0x21c + + .globl gUnknown_8DA79EC +gUnknown_8DA79EC: @ 0x8DA79EC + .incbin "baserom_jp.gba", 0xda79ec, 0x40 + + .globl gUnknown_8DA7A2C +gUnknown_8DA7A2C: @ 0x8DA7A2C + .incbin "baserom_jp.gba", 0xda7a2c, 0x328 + + .globl gUnknown_8DA7D54 +gUnknown_8DA7D54: @ 0x8DA7D54 + .incbin "baserom_jp.gba", 0xda7d54, 0x184 + + .globl gUnknown_8DA7ED8 +gUnknown_8DA7ED8: @ 0x8DA7ED8 + .incbin "baserom_jp.gba", 0xda7ed8, 0x13c + + .globl gUnknown_8DA8014 +gUnknown_8DA8014: @ 0x8DA8014 + .incbin "baserom_jp.gba", 0xda8014, 0x140 + + .globl gUnknown_8DA8154 +gUnknown_8DA8154: @ 0x8DA8154 + .incbin "baserom_jp.gba", 0xda8154, 0x108 + + .globl gUnknown_8DA825C +gUnknown_8DA825C: @ 0x8DA825C + .incbin "baserom_jp.gba", 0xda825c, 0x108 + + .globl gUnknown_8DA8364 +gUnknown_8DA8364: @ 0x8DA8364 + .incbin "baserom_jp.gba", 0xda8364, 0xa84 + + .globl gUnknown_8DA8DE8 +gUnknown_8DA8DE8: @ 0x8DA8DE8 + .incbin "baserom_jp.gba", 0xda8de8, 0x22c + + .globl gUnknown_8DA9014 +gUnknown_8DA9014: @ 0x8DA9014 + .incbin "baserom_jp.gba", 0xda9014, 0x118 + + .globl gUnknown_8DA912C +gUnknown_8DA912C: @ 0x8DA912C + .incbin "baserom_jp.gba", 0xda912c, 0x1a30 + + .globl gUnknown_8DAAB5C +gUnknown_8DAAB5C: @ 0x8DAAB5C + .incbin "baserom_jp.gba", 0xdaab5c, 0x270 + + .globl gUnknown_8DAADCC +gUnknown_8DAADCC: @ 0x8DAADCC + .incbin "baserom_jp.gba", 0xdaadcc, 0xf8 + + .globl gUnknown_8DAAEC4 +gUnknown_8DAAEC4: @ 0x8DAAEC4 + .incbin "baserom_jp.gba", 0xdaaec4, 0x238 + + .globl gUnknown_8DAB0FC +gUnknown_8DAB0FC: @ 0x8DAB0FC + .incbin "baserom_jp.gba", 0xdab0fc, 0x144 + + .globl gUnknown_8DAB240 +gUnknown_8DAB240: @ 0x8DAB240 + .incbin "baserom_jp.gba", 0xdab240, 0x54 + + .globl gUnknown_8DAB294 +gUnknown_8DAB294: @ 0x8DAB294 + .incbin "baserom_jp.gba", 0xdab294, 0xf52c + + .globl gUnknown_8DBA7C0 +gUnknown_8DBA7C0: @ 0x8DBA7C0 + .incbin "baserom_jp.gba", 0xdba7c0, 0xa0 + + .globl gUnknown_8DBA860 +gUnknown_8DBA860: @ 0x8DBA860 + .incbin "baserom_jp.gba", 0xdba860, 0x1d30 + + .globl gUnknown_8DBC590 +gUnknown_8DBC590: @ 0x8DBC590 + .incbin "baserom_jp.gba", 0xdbc590, 0x72c + + .globl gUnknown_8DBCCBC +gUnknown_8DBCCBC: @ 0x8DBCCBC + .incbin "baserom_jp.gba", 0xdbccbc, 0x243344 + diff --git a/data/event_scripts.s b/data/event_scripts.s new file mode 100644 index 0000000..f256122 --- /dev/null +++ b/data/event_scripts.s @@ -0,0 +1,1656 @@ + + .section script_data, "aw", %progbits + .globl gUnknown_81DABAC +gUnknown_81DABAC: @ 0x81DABAC + .incbin "baserom_jp.gba", 0x1dabac, 0x384 + + .globl gUnknown_81DAF30 +gUnknown_81DAF30: @ 0x81DAF30 + .incbin "baserom_jp.gba", 0x1daf30, 0x4 + + .globl gUnknown_81DAF34 +gUnknown_81DAF34: @ 0x81DAF34 + .incbin "baserom_jp.gba", 0x1daf34, 0x58 + + .globl gUnknown_81DAF8C +gUnknown_81DAF8C: @ 0x81DAF8C + .incbin "baserom_jp.gba", 0x1daf8c, 0x830 + + .globl gUnknown_81DB7BC +gUnknown_81DB7BC: @ 0x81DB7BC + .incbin "baserom_jp.gba", 0x1db7bc, 0x2c + + .globl gUnknown_81DB7E8 +gUnknown_81DB7E8: @ 0x81DB7E8 + .incbin "baserom_jp.gba", 0x1db7e8, 0x260b + + .globl gUnknown_81DDDF3 +gUnknown_81DDDF3: @ 0x81DDDF3 + .incbin "baserom_jp.gba", 0x1dddf3, 0x4a04 + + .globl gUnknown_81E27F7 +gUnknown_81E27F7: @ 0x81E27F7 + .incbin "baserom_jp.gba", 0x1e27f7, 0xaab6 + + .globl gUnknown_81ED2AD +gUnknown_81ED2AD: @ 0x81ED2AD + .incbin "baserom_jp.gba", 0x1ed2ad, 0x2f0f + + .globl gUnknown_81F01BC +gUnknown_81F01BC: @ 0x81F01BC + .incbin "baserom_jp.gba", 0x1f01bc, 0x32 + + .globl gUnknown_81F01EE +gUnknown_81F01EE: @ 0x81F01EE + .incbin "baserom_jp.gba", 0x1f01ee, 0xbb1 + + .globl gUnknown_81F0D9F +gUnknown_81F0D9F: @ 0x81F0D9F + .incbin "baserom_jp.gba", 0x1f0d9f, 0x3c + + .globl gUnknown_81F0DDB +gUnknown_81F0DDB: @ 0x81F0DDB + .incbin "baserom_jp.gba", 0x1f0ddb, 0xc96 + + .globl gUnknown_81F1A71 +gUnknown_81F1A71: @ 0x81F1A71 + .incbin "baserom_jp.gba", 0x1f1a71, 0x1099f + + .globl gUnknown_8202410 +gUnknown_8202410: @ 0x8202410 + .incbin "baserom_jp.gba", 0x202410, 0xb672 + + .globl gUnknown_820DA82 +gUnknown_820DA82: @ 0x820DA82 + .incbin "baserom_jp.gba", 0x20da82, 0xf + + .globl gUnknown_820DA91 +gUnknown_820DA91: @ 0x820DA91 + .incbin "baserom_jp.gba", 0x20da91, 0xe + + .globl gUnknown_820DA9F +gUnknown_820DA9F: @ 0x820DA9F + .incbin "baserom_jp.gba", 0x20da9f, 0xdd55 + + .globl gUnknown_821B7F4 +gUnknown_821B7F4: @ 0x821B7F4 + .incbin "baserom_jp.gba", 0x21b7f4, 0x54a + + .globl gUnknown_821BD3E +gUnknown_821BD3E: @ 0x821BD3E + .incbin "baserom_jp.gba", 0x21bd3e, 0x166c + + .globl gUnknown_821D3AA +gUnknown_821D3AA: @ 0x821D3AA + .incbin "baserom_jp.gba", 0x21d3aa, 0x2d + + .globl gUnknown_821D3D7 +gUnknown_821D3D7: @ 0x821D3D7 + .incbin "baserom_jp.gba", 0x21d3d7, 0xa1 + + .globl gUnknown_821D478 +gUnknown_821D478: @ 0x821D478 + .incbin "baserom_jp.gba", 0x21d478, 0x60 + + .globl gUnknown_821D4D8 +gUnknown_821D4D8: @ 0x821D4D8 + .incbin "baserom_jp.gba", 0x21d4d8, 0x9b + + .globl gUnknown_821D573 +gUnknown_821D573: @ 0x821D573 + .incbin "baserom_jp.gba", 0x21d573, 0x8 + + .globl gUnknown_821D57B +gUnknown_821D57B: @ 0x821D57B + .incbin "baserom_jp.gba", 0x21d57b, 0x94c + + .globl gUnknown_821DEC7 +gUnknown_821DEC7: @ 0x821DEC7 + .incbin "baserom_jp.gba", 0x21dec7, 0x45b7 + + .globl gUnknown_822247E +gUnknown_822247E: @ 0x822247E + .incbin "baserom_jp.gba", 0x22247e, 0x61b + + .globl gUnknown_8222A99 +gUnknown_8222A99: @ 0x8222A99 + .incbin "baserom_jp.gba", 0x222a99, 0x42ba + + .globl gUnknown_8226D53 +gUnknown_8226D53: @ 0x8226D53 + .incbin "baserom_jp.gba", 0x226d53, 0xe + + .globl gUnknown_8226D61 +gUnknown_8226D61: @ 0x8226D61 + .incbin "baserom_jp.gba", 0x226d61, 0x6950 + + .globl gUnknown_822D6B1 +gUnknown_822D6B1: @ 0x822D6B1 + .incbin "baserom_jp.gba", 0x22d6b1, 0x67 + + .globl gUnknown_822D718 +gUnknown_822D718: @ 0x822D718 + .incbin "baserom_jp.gba", 0x22d718, 0x1b + + .globl gUnknown_822D733 +gUnknown_822D733: @ 0x822D733 + .incbin "baserom_jp.gba", 0x22d733, 0x1e + + .globl gUnknown_822D751 +gUnknown_822D751: @ 0x822D751 + .incbin "baserom_jp.gba", 0x22d751, 0x11 + + .globl gUnknown_822D762 +gUnknown_822D762: @ 0x822D762 + .incbin "baserom_jp.gba", 0x22d762, 0x2d + + .globl gUnknown_822D78F +gUnknown_822D78F: @ 0x822D78F + .incbin "baserom_jp.gba", 0x22d78f, 0xde1a + + .globl gUnknown_823B5A9 +gUnknown_823B5A9: @ 0x823B5A9 + .incbin "baserom_jp.gba", 0x23b5a9, 0x1a52 + + .globl gUnknown_823CFFB +gUnknown_823CFFB: @ 0x823CFFB + .incbin "baserom_jp.gba", 0x23cffb, 0x53f3 + + .globl gUnknown_82423EE +gUnknown_82423EE: @ 0x82423EE + .incbin "baserom_jp.gba", 0x2423ee, 0xe + + .globl gUnknown_82423FC +gUnknown_82423FC: @ 0x82423FC + .incbin "baserom_jp.gba", 0x2423fc, 0x28 + + .globl gUnknown_8242424 +gUnknown_8242424: @ 0x8242424 + .incbin "baserom_jp.gba", 0x242424, 0x38 + + .globl gUnknown_824245C +gUnknown_824245C: @ 0x824245C + .incbin "baserom_jp.gba", 0x24245c, 0xf + + .globl gUnknown_824246B +gUnknown_824246B: @ 0x824246B + .incbin "baserom_jp.gba", 0x24246b, 0x27 + + .globl gUnknown_8242492 +gUnknown_8242492: @ 0x8242492 + .incbin "baserom_jp.gba", 0x242492, 0x1e6 + + .globl gUnknown_8242678 +gUnknown_8242678: @ 0x8242678 + .incbin "baserom_jp.gba", 0x242678, 0x279 + + .globl gUnknown_82428F1 +gUnknown_82428F1: @ 0x82428F1 + .incbin "baserom_jp.gba", 0x2428f1, 0xb + + .globl gUnknown_82428FC +gUnknown_82428FC: @ 0x82428FC + .incbin "baserom_jp.gba", 0x2428fc, 0x44d + + .globl gUnknown_8242D49 +gUnknown_8242D49: @ 0x8242D49 + .incbin "baserom_jp.gba", 0x242d49, 0xd5 + + .globl gUnknown_8242E1E +gUnknown_8242E1E: @ 0x8242E1E + .incbin "baserom_jp.gba", 0x242e1e, 0x10e + + .globl gUnknown_8242F2C +gUnknown_8242F2C: @ 0x8242F2C + .incbin "baserom_jp.gba", 0x242f2c, 0x1ef + + .globl gUnknown_824311B +gUnknown_824311B: @ 0x824311B + .incbin "baserom_jp.gba", 0x24311b, 0x536 + + .globl gUnknown_8243651 +gUnknown_8243651: @ 0x8243651 + .incbin "baserom_jp.gba", 0x243651, 0x9 + + .globl gUnknown_824365A +gUnknown_824365A: @ 0x824365A + .incbin "baserom_jp.gba", 0x24365a, 0x9 + + .globl gUnknown_8243663 +gUnknown_8243663: @ 0x8243663 + .incbin "baserom_jp.gba", 0x243663, 0x9 + + .globl gUnknown_824366C +gUnknown_824366C: @ 0x824366C + .incbin "baserom_jp.gba", 0x24366c, 0x9 + + .globl gUnknown_8243675 +gUnknown_8243675: @ 0x8243675 + .incbin "baserom_jp.gba", 0x243675, 0x9 + + .globl gUnknown_824367E +gUnknown_824367E: @ 0x824367E + .incbin "baserom_jp.gba", 0x24367e, 0x9 + + .globl gUnknown_8243687 +gUnknown_8243687: @ 0x8243687 + .incbin "baserom_jp.gba", 0x243687, 0x46 + + .globl gUnknown_82436CD +gUnknown_82436CD: @ 0x82436CD + .incbin "baserom_jp.gba", 0x2436cd, 0xa10 + + .globl gUnknown_82440DD +gUnknown_82440DD: @ 0x82440DD + .incbin "baserom_jp.gba", 0x2440dd, 0x9 + + .globl gUnknown_82440E6 +gUnknown_82440E6: @ 0x82440E6 + .incbin "baserom_jp.gba", 0x2440e6, 0x15f + + .globl gUnknown_8244245 +gUnknown_8244245: @ 0x8244245 + .incbin "baserom_jp.gba", 0x244245, 0x504 + + .globl gUnknown_8244749 +gUnknown_8244749: @ 0x8244749 + .incbin "baserom_jp.gba", 0x244749, 0x5c7 + + .globl gUnknown_8244D10 +gUnknown_8244D10: @ 0x8244D10 + .incbin "baserom_jp.gba", 0x244d10, 0x13 + + .globl gUnknown_8244D23 +gUnknown_8244D23: @ 0x8244D23 + .incbin "baserom_jp.gba", 0x244d23, 0x17a + + .globl gUnknown_8244E9D +gUnknown_8244E9D: @ 0x8244E9D + .incbin "baserom_jp.gba", 0x244e9d, 0x3b + + .globl gUnknown_8244ED8 +gUnknown_8244ED8: @ 0x8244ED8 + .incbin "baserom_jp.gba", 0x244ed8, 0x297 + + .globl gUnknown_824516F +gUnknown_824516F: @ 0x824516F + .incbin "baserom_jp.gba", 0x24516f, 0xfe + + .globl gUnknown_824526D +gUnknown_824526D: @ 0x824526D + .incbin "baserom_jp.gba", 0x24526d, 0x107 + + .globl gUnknown_8245374 +gUnknown_8245374: @ 0x8245374 + .incbin "baserom_jp.gba", 0x245374, 0xe1 + + .globl gUnknown_8245455 +gUnknown_8245455: @ 0x8245455 + .incbin "baserom_jp.gba", 0x245455, 0xfb + + .globl gUnknown_8245550 +gUnknown_8245550: @ 0x8245550 + .incbin "baserom_jp.gba", 0x245550, 0x10c + + .globl gUnknown_824565C +gUnknown_824565C: @ 0x824565C + .incbin "baserom_jp.gba", 0x24565c, 0xe2 + + .globl gUnknown_824573E +gUnknown_824573E: @ 0x824573E + .incbin "baserom_jp.gba", 0x24573e, 0xdb + + .globl gUnknown_8245819 +gUnknown_8245819: @ 0x8245819 + .incbin "baserom_jp.gba", 0x245819, 0xdb + + .globl gUnknown_82458F4 +gUnknown_82458F4: @ 0x82458F4 + .incbin "baserom_jp.gba", 0x2458f4, 0x112 + + .globl gUnknown_8245A06 +gUnknown_8245A06: @ 0x8245A06 + .incbin "baserom_jp.gba", 0x245a06, 0x9a + + .globl gUnknown_8245AA0 +gUnknown_8245AA0: @ 0x8245AA0 + .incbin "baserom_jp.gba", 0x245aa0, 0x95 + + .globl gUnknown_8245B35 +gUnknown_8245B35: @ 0x8245B35 + .incbin "baserom_jp.gba", 0x245b35, 0x59 + + .globl gUnknown_8245B8E +gUnknown_8245B8E: @ 0x8245B8E + .incbin "baserom_jp.gba", 0x245b8e, 0x59 + + .globl gUnknown_8245BE7 +gUnknown_8245BE7: @ 0x8245BE7 + .incbin "baserom_jp.gba", 0x245be7, 0x7f + + .globl gUnknown_8245C66 +gUnknown_8245C66: @ 0x8245C66 + .incbin "baserom_jp.gba", 0x245c66, 0x155 + + .globl gUnknown_8245DBB +gUnknown_8245DBB: @ 0x8245DBB + .incbin "baserom_jp.gba", 0x245dbb, 0x13 + + .globl gUnknown_8245DCE +gUnknown_8245DCE: @ 0x8245DCE + .incbin "baserom_jp.gba", 0x245dce, 0xf + + .globl gUnknown_8245DDD +gUnknown_8245DDD: @ 0x8245DDD + .incbin "baserom_jp.gba", 0x245ddd, 0x7d8 + + .globl gUnknown_82465B5 +gUnknown_82465B5: @ 0x82465B5 + .incbin "baserom_jp.gba", 0x2465b5, 0x4 + + .globl gUnknown_82465B9 +gUnknown_82465B9: @ 0x82465B9 + .incbin "baserom_jp.gba", 0x2465b9, 0xa8b + + .globl gUnknown_8247044 +gUnknown_8247044: @ 0x8247044 + .incbin "baserom_jp.gba", 0x247044, 0xf + + .globl gUnknown_8247053 +gUnknown_8247053: @ 0x8247053 + .incbin "baserom_jp.gba", 0x247053, 0xa + + .globl gUnknown_824705D +gUnknown_824705D: @ 0x824705D + .incbin "baserom_jp.gba", 0x24705d, 0xa + + .globl gUnknown_8247067 +gUnknown_8247067: @ 0x8247067 + .incbin "baserom_jp.gba", 0x247067, 0x1b + + .globl gUnknown_8247082 +gUnknown_8247082: @ 0x8247082 + .incbin "baserom_jp.gba", 0x247082, 0x1b + + .globl gUnknown_824709D +gUnknown_824709D: @ 0x824709D + .incbin "baserom_jp.gba", 0x24709d, 0x1b + + .globl gUnknown_82470B8 +gUnknown_82470B8: @ 0x82470B8 + .incbin "baserom_jp.gba", 0x2470b8, 0x1c + + .globl gUnknown_82470D4 +gUnknown_82470D4: @ 0x82470D4 + .incbin "baserom_jp.gba", 0x2470d4, 0xa + + .globl gUnknown_82470DE +gUnknown_82470DE: @ 0x82470DE + .incbin "baserom_jp.gba", 0x2470de, 0x1e + + .globl gUnknown_82470FC +gUnknown_82470FC: @ 0x82470FC + .incbin "baserom_jp.gba", 0x2470fc, 0x15 + + .globl gUnknown_8247111 +gUnknown_8247111: @ 0x8247111 + .incbin "baserom_jp.gba", 0x247111, 0x15 + + .globl gUnknown_8247126 +gUnknown_8247126: @ 0x8247126 + .incbin "baserom_jp.gba", 0x247126, 0x15 + + .globl gUnknown_824713B +gUnknown_824713B: @ 0x824713B + .incbin "baserom_jp.gba", 0x24713b, 0x22 + + .globl gUnknown_824715D +gUnknown_824715D: @ 0x824715D + .incbin "baserom_jp.gba", 0x24715d, 0xf + + .globl gUnknown_824716C +gUnknown_824716C: @ 0x824716C + .incbin "baserom_jp.gba", 0x24716c, 0xf + + .globl gUnknown_824717B +gUnknown_824717B: @ 0x824717B + .incbin "baserom_jp.gba", 0x24717b, 0x53 + + .globl gUnknown_82471CE +gUnknown_82471CE: @ 0x82471CE + .incbin "baserom_jp.gba", 0x2471ce, 0x1a + + .globl gUnknown_82471E8 +gUnknown_82471E8: @ 0x82471E8 + .incbin "baserom_jp.gba", 0x2471e8, 0xa + + .globl gUnknown_82471F2 +gUnknown_82471F2: @ 0x82471F2 + .incbin "baserom_jp.gba", 0x2471f2, 0x677 + + .globl gUnknown_8247869 +gUnknown_8247869: @ 0x8247869 + .incbin "baserom_jp.gba", 0x247869, 0x410 + + .globl gUnknown_8247C79 +gUnknown_8247C79: @ 0x8247C79 + .incbin "baserom_jp.gba", 0x247c79, 0x1e + + .globl gUnknown_8247C97 +gUnknown_8247C97: @ 0x8247C97 + .incbin "baserom_jp.gba", 0x247c97, 0x1e + + .globl gUnknown_8247CB5 +gUnknown_8247CB5: @ 0x8247CB5 + .incbin "baserom_jp.gba", 0x247cb5, 0x25 + + .globl gUnknown_8247CDA +gUnknown_8247CDA: @ 0x8247CDA + .incbin "baserom_jp.gba", 0x247cda, 0x363d + + .globl gUnknown_824B317 +gUnknown_824B317: @ 0x824B317 + .incbin "baserom_jp.gba", 0x24b317, 0x16 + + .globl gUnknown_824B32D +gUnknown_824B32D: @ 0x824B32D + .incbin "baserom_jp.gba", 0x24b32d, 0x19 + + .globl gUnknown_824B346 +gUnknown_824B346: @ 0x824B346 + .incbin "baserom_jp.gba", 0x24b346, 0xe + + .globl gUnknown_824B354 +gUnknown_824B354: @ 0x824B354 + .incbin "baserom_jp.gba", 0x24b354, 0x1b + + .globl gUnknown_824B36F +gUnknown_824B36F: @ 0x824B36F + .incbin "baserom_jp.gba", 0x24b36f, 0x960 + + .globl gUnknown_824BCCF +gUnknown_824BCCF: @ 0x824BCCF + .incbin "baserom_jp.gba", 0x24bccf, 0x23 + + .globl gUnknown_824BCF2 +gUnknown_824BCF2: @ 0x824BCF2 + .incbin "baserom_jp.gba", 0x24bcf2, 0x26 + + .globl gUnknown_824BD18 +gUnknown_824BD18: @ 0x824BD18 + .incbin "baserom_jp.gba", 0x24bd18, 0x26 + + .globl gUnknown_824BD3E +gUnknown_824BD3E: @ 0x824BD3E + .incbin "baserom_jp.gba", 0x24bd3e, 0x183 + + .globl gUnknown_824BEC1 +gUnknown_824BEC1: @ 0x824BEC1 + .incbin "baserom_jp.gba", 0x24bec1, 0xfd + + .globl gUnknown_824BFBE +gUnknown_824BFBE: @ 0x824BFBE + .incbin "baserom_jp.gba", 0x24bfbe, 0x28 + + .globl gUnknown_824BFE6 +gUnknown_824BFE6: @ 0x824BFE6 + .incbin "baserom_jp.gba", 0x24bfe6, 0x22 + + .globl gUnknown_824C008 +gUnknown_824C008: @ 0x824C008 + .incbin "baserom_jp.gba", 0x24c008, 0x21 + + .globl gUnknown_824C029 +gUnknown_824C029: @ 0x824C029 + .incbin "baserom_jp.gba", 0x24c029, 0x21 + + .globl gUnknown_824C04A +gUnknown_824C04A: @ 0x824C04A + .incbin "baserom_jp.gba", 0x24c04a, 0x47 + + .globl gUnknown_824C091 +gUnknown_824C091: @ 0x824C091 + .incbin "baserom_jp.gba", 0x24c091, 0x20 + + .globl gUnknown_824C0B1 +gUnknown_824C0B1: @ 0x824C0B1 + .incbin "baserom_jp.gba", 0x24c0b1, 0x21 + + .globl gUnknown_824C0D2 +gUnknown_824C0D2: @ 0x824C0D2 + .incbin "baserom_jp.gba", 0x24c0d2, 0x5 + + .globl gUnknown_824C0D7 +gUnknown_824C0D7: @ 0x824C0D7 + .incbin "baserom_jp.gba", 0x24c0d7, 0x5 + + .globl gUnknown_824C0DC +gUnknown_824C0DC: @ 0x824C0DC + .incbin "baserom_jp.gba", 0x24c0dc, 0x5 + + .globl gUnknown_824C0E1 +gUnknown_824C0E1: @ 0x824C0E1 + .incbin "baserom_jp.gba", 0x24c0e1, 0x5 + + .globl gUnknown_824C0E6 +gUnknown_824C0E6: @ 0x824C0E6 + .incbin "baserom_jp.gba", 0x24c0e6, 0x5a + + .globl gUnknown_824C140 +gUnknown_824C140: @ 0x824C140 + .incbin "baserom_jp.gba", 0x24c140, 0xb5 + + .globl gUnknown_824C1F5 +gUnknown_824C1F5: @ 0x824C1F5 + .incbin "baserom_jp.gba", 0x24c1f5, 0xb + + .globl gUnknown_824C200 +gUnknown_824C200: @ 0x824C200 + .incbin "baserom_jp.gba", 0x24c200, 0x27b + + .globl gUnknown_824C47B +gUnknown_824C47B: @ 0x824C47B + .incbin "baserom_jp.gba", 0x24c47b, 0xa197 + + .globl gUnknown_8256612 +gUnknown_8256612: @ 0x8256612 + .incbin "baserom_jp.gba", 0x256612, 0xb4 + + .globl gUnknown_82566C6 +gUnknown_82566C6: @ 0x82566C6 + .incbin "baserom_jp.gba", 0x2566c6, 0xd1 + + .globl gUnknown_8256797 +gUnknown_8256797: @ 0x8256797 + .incbin "baserom_jp.gba", 0x256797, 0xc6 + + .globl gUnknown_825685D +gUnknown_825685D: @ 0x825685D + .incbin "baserom_jp.gba", 0x25685d, 0x3a + + .globl gUnknown_8256897 +gUnknown_8256897: @ 0x8256897 + .incbin "baserom_jp.gba", 0x256897, 0x53 + + .globl gUnknown_82568EA +gUnknown_82568EA: @ 0x82568EA + .incbin "baserom_jp.gba", 0x2568ea, 0x4b + + .globl gUnknown_8256935 +gUnknown_8256935: @ 0x8256935 + .incbin "baserom_jp.gba", 0x256935, 0xdf + + .globl gUnknown_8256A14 +gUnknown_8256A14: @ 0x8256A14 + .incbin "baserom_jp.gba", 0x256a14, 0x1075 + + .globl gUnknown_8257A89 +gUnknown_8257A89: @ 0x8257A89 + .incbin "baserom_jp.gba", 0x257a89, 0x459 + + .globl gUnknown_8257EE2 +gUnknown_8257EE2: @ 0x8257EE2 + .incbin "baserom_jp.gba", 0x257ee2, 0x6ed + + .globl gUnknown_82585CF +gUnknown_82585CF: @ 0x82585CF + .incbin "baserom_jp.gba", 0x2585cf, 0xe4d + + .globl gUnknown_825941C +gUnknown_825941C: @ 0x825941C + .incbin "baserom_jp.gba", 0x25941c, 0x3 + + .globl gUnknown_825941F +gUnknown_825941F: @ 0x825941F + .incbin "baserom_jp.gba", 0x25941f, 0x8f74 + + .globl gUnknown_8262393 +gUnknown_8262393: @ 0x8262393 + .incbin "baserom_jp.gba", 0x262393, 0x17 + + .globl gUnknown_82623AA +gUnknown_82623AA: @ 0x82623AA + .incbin "baserom_jp.gba", 0x2623aa, 0x23 + + .globl gUnknown_82623CD +gUnknown_82623CD: @ 0x82623CD + .incbin "baserom_jp.gba", 0x2623cd, 0x1b + + .globl gUnknown_82623E8 +gUnknown_82623E8: @ 0x82623E8 + .incbin "baserom_jp.gba", 0x2623e8, 0x11 + + .globl gUnknown_82623F9 +gUnknown_82623F9: @ 0x82623F9 + .incbin "baserom_jp.gba", 0x2623f9, 0x11 + + .globl gUnknown_826240A +gUnknown_826240A: @ 0x826240A + .incbin "baserom_jp.gba", 0x26240a, 0x8e9 + + .globl gUnknown_8262CF3 +gUnknown_8262CF3: @ 0x8262CF3 + .incbin "baserom_jp.gba", 0x262cf3, 0x25 + + .globl gUnknown_8262D18 +gUnknown_8262D18: @ 0x8262D18 + .incbin "baserom_jp.gba", 0x262d18, 0xb + + .globl gUnknown_8262D23 +gUnknown_8262D23: @ 0x8262D23 + .incbin "baserom_jp.gba", 0x262d23, 0x1c + + .globl gUnknown_8262D3F +gUnknown_8262D3F: @ 0x8262D3F + .incbin "baserom_jp.gba", 0x262d3f, 0x27 + + .globl gUnknown_8262D66 +gUnknown_8262D66: @ 0x8262D66 + .incbin "baserom_jp.gba", 0x262d66, 0x6 + + .globl gUnknown_8262D6C +gUnknown_8262D6C: @ 0x8262D6C + .incbin "baserom_jp.gba", 0x262d6c, 0x8 + + .globl gUnknown_8262D74 +gUnknown_8262D74: @ 0x8262D74 + .incbin "baserom_jp.gba", 0x262d74, 0x5 + + .globl gUnknown_8262D79 +gUnknown_8262D79: @ 0x8262D79 + .incbin "baserom_jp.gba", 0x262d79, 0x1d + + .globl gUnknown_8262D96 +gUnknown_8262D96: @ 0x8262D96 + .incbin "baserom_jp.gba", 0x262d96, 0xd + + .globl gUnknown_8262DA3 +gUnknown_8262DA3: @ 0x8262DA3 + .incbin "baserom_jp.gba", 0x262da3, 0xd + + .globl gUnknown_8262DB0 +gUnknown_8262DB0: @ 0x8262DB0 + .incbin "baserom_jp.gba", 0x262db0, 0x25 + + .globl gUnknown_8262DD5 +gUnknown_8262DD5: @ 0x8262DD5 + .incbin "baserom_jp.gba", 0x262dd5, 0x20 + + .globl gUnknown_8262DF5 +gUnknown_8262DF5: @ 0x8262DF5 + .incbin "baserom_jp.gba", 0x262df5, 0x44 + + .globl gUnknown_8262E39 +gUnknown_8262E39: @ 0x8262E39 + .incbin "baserom_jp.gba", 0x262e39, 0x26 + + .globl gUnknown_8262E5F +gUnknown_8262E5F: @ 0x8262E5F + .incbin "baserom_jp.gba", 0x262e5f, 0x22 + + .globl gUnknown_8262E81 +gUnknown_8262E81: @ 0x8262E81 + .incbin "baserom_jp.gba", 0x262e81, 0x25 + + .globl gUnknown_8262EA6 +gUnknown_8262EA6: @ 0x8262EA6 + .incbin "baserom_jp.gba", 0x262ea6, 0x29 + + .globl gUnknown_8262ECF +gUnknown_8262ECF: @ 0x8262ECF + .incbin "baserom_jp.gba", 0x262ecf, 0x26 + + .globl gUnknown_8262EF5 +gUnknown_8262EF5: @ 0x8262EF5 + .incbin "baserom_jp.gba", 0x262ef5, 0x23 + + .globl gUnknown_8262F18 +gUnknown_8262F18: @ 0x8262F18 + .incbin "baserom_jp.gba", 0x262f18, 0x27 + + .globl gUnknown_8262F3F +gUnknown_8262F3F: @ 0x8262F3F + .incbin "baserom_jp.gba", 0x262f3f, 0x22 + + .globl gUnknown_8262F61 +gUnknown_8262F61: @ 0x8262F61 + .incbin "baserom_jp.gba", 0x262f61, 0x29 + + .globl gUnknown_8262F8A +gUnknown_8262F8A: @ 0x8262F8A + .incbin "baserom_jp.gba", 0x262f8a, 0x23 + + .globl gUnknown_8262FAD +gUnknown_8262FAD: @ 0x8262FAD + .incbin "baserom_jp.gba", 0x262fad, 0x34 + + .globl gUnknown_8262FE1 +gUnknown_8262FE1: @ 0x8262FE1 + .incbin "baserom_jp.gba", 0x262fe1, 0x2b + + .globl gUnknown_826300C +gUnknown_826300C: @ 0x826300C + .incbin "baserom_jp.gba", 0x26300c, 0x26 + + .globl gUnknown_8263032 +gUnknown_8263032: @ 0x8263032 + .incbin "baserom_jp.gba", 0x263032, 0x1e + + .globl gUnknown_8263050 +gUnknown_8263050: @ 0x8263050 + .incbin "baserom_jp.gba", 0x263050, 0x22 + + .globl gUnknown_8263072 +gUnknown_8263072: @ 0x8263072 + .incbin "baserom_jp.gba", 0x263072, 0x23 + + .globl gUnknown_8263095 +gUnknown_8263095: @ 0x8263095 + .incbin "baserom_jp.gba", 0x263095, 0x32 + + .globl gUnknown_82630C7 +gUnknown_82630C7: @ 0x82630C7 + .incbin "baserom_jp.gba", 0x2630c7, 0x29 + + .globl gUnknown_82630F0 +gUnknown_82630F0: @ 0x82630F0 + .incbin "baserom_jp.gba", 0x2630f0, 0x1c + + .globl gUnknown_826310C +gUnknown_826310C: @ 0x826310C + .incbin "baserom_jp.gba", 0x26310c, 0x21 + + .globl gUnknown_826312D +gUnknown_826312D: @ 0x826312D + .incbin "baserom_jp.gba", 0x26312d, 0x22 + + .globl gUnknown_826314F +gUnknown_826314F: @ 0x826314F + .incbin "baserom_jp.gba", 0x26314f, 0x1b + + .globl gUnknown_826316A +gUnknown_826316A: @ 0x826316A + .incbin "baserom_jp.gba", 0x26316a, 0x11d5 + + .globl gUnknown_826433F +gUnknown_826433F: @ 0x826433F + .incbin "baserom_jp.gba", 0x26433f, 0x19 + + .globl gUnknown_8264358 +gUnknown_8264358: @ 0x8264358 + .incbin "baserom_jp.gba", 0x264358, 0x12957 + + .globl gUnknown_8276CAF +gUnknown_8276CAF: @ 0x8276CAF + .incbin "baserom_jp.gba", 0x276caf, 0x5d + + .globl gUnknown_8276D0C +gUnknown_8276D0C: @ 0x8276D0C + .incbin "baserom_jp.gba", 0x276d0c, 0x31 + + .globl gUnknown_8276D3D +gUnknown_8276D3D: @ 0x8276D3D + .incbin "baserom_jp.gba", 0x276d3d, 0x21b + + .globl gUnknown_8276F58 +gUnknown_8276F58: @ 0x8276F58 + .incbin "baserom_jp.gba", 0x276f58, 0x1f + + .globl gUnknown_8276F77 +gUnknown_8276F77: @ 0x8276F77 + .incbin "baserom_jp.gba", 0x276f77, 0x20 + + .globl gUnknown_8276F97 +gUnknown_8276F97: @ 0x8276F97 + .incbin "baserom_jp.gba", 0x276f97, 0x24 + + .globl gUnknown_8276FBB +gUnknown_8276FBB: @ 0x8276FBB + .incbin "baserom_jp.gba", 0x276fbb, 0x18 + + .globl gUnknown_8276FD3 +gUnknown_8276FD3: @ 0x8276FD3 + .incbin "baserom_jp.gba", 0x276fd3, 0x75 + + .globl gUnknown_8277048 +gUnknown_8277048: @ 0x8277048 + .incbin "baserom_jp.gba", 0x277048, 0x29 + + .globl gUnknown_8277071 +gUnknown_8277071: @ 0x8277071 + .incbin "baserom_jp.gba", 0x277071, 0x24 + + .globl gUnknown_8277095 +gUnknown_8277095: @ 0x8277095 + .incbin "baserom_jp.gba", 0x277095, 0x6d + + .globl gUnknown_8277102 +gUnknown_8277102: @ 0x8277102 + .incbin "baserom_jp.gba", 0x277102, 0xf2 + + .globl gUnknown_82771F4 +gUnknown_82771F4: @ 0x82771F4 + .incbin "baserom_jp.gba", 0x2771f4, 0xc + + .globl gUnknown_8277200 +gUnknown_8277200: @ 0x8277200 + .incbin "baserom_jp.gba", 0x277200, 0x13 + + .globl gUnknown_8277213 +gUnknown_8277213: @ 0x8277213 + .incbin "baserom_jp.gba", 0x277213, 0x11 + + .globl gUnknown_8277224 +gUnknown_8277224: @ 0x8277224 + .incbin "baserom_jp.gba", 0x277224, 0x9 + + .globl gUnknown_827722D +gUnknown_827722D: @ 0x827722D + .incbin "baserom_jp.gba", 0x27722d, 0x38 + + .globl gUnknown_8277265 +gUnknown_8277265: @ 0x8277265 + .incbin "baserom_jp.gba", 0x277265, 0x8b + + .globl gUnknown_82772F0 +gUnknown_82772F0: @ 0x82772F0 + .incbin "baserom_jp.gba", 0x2772f0, 0x8 + + .globl gUnknown_82772F8 +gUnknown_82772F8: @ 0x82772F8 + .incbin "baserom_jp.gba", 0x2772f8, 0x590 + + .globl gUnknown_8277888 +gUnknown_8277888: @ 0x8277888 + .incbin "baserom_jp.gba", 0x277888, 0x24 + + .globl gUnknown_82778AC +gUnknown_82778AC: @ 0x82778AC + .incbin "baserom_jp.gba", 0x2778ac, 0x5c + + .globl gUnknown_8277908 +gUnknown_8277908: @ 0x8277908 + .incbin "baserom_jp.gba", 0x277908, 0xf328 + + .globl gUnknown_8286C30 +gUnknown_8286C30: @ 0x8286C30 + .incbin "baserom_jp.gba", 0x286c30, 0x388 + + .globl gUnknown_8286FB8 +gUnknown_8286FB8: @ 0x8286FB8 + .incbin "baserom_jp.gba", 0x286fb8, 0x1e + + .globl gUnknown_8286FD6 +gUnknown_8286FD6: @ 0x8286FD6 + .incbin "baserom_jp.gba", 0x286fd6, 0x12 + + .globl gUnknown_8286FE8 +gUnknown_8286FE8: @ 0x8286FE8 + .incbin "baserom_jp.gba", 0x286fe8, 0x274 + + .globl gUnknown_828725C +gUnknown_828725C: @ 0x828725C + .incbin "baserom_jp.gba", 0x28725c, 0x91 + + .globl gUnknown_82872ED +gUnknown_82872ED: @ 0x82872ED + .incbin "baserom_jp.gba", 0x2872ed, 0x6fd + + .globl gUnknown_82879EA +gUnknown_82879EA: @ 0x82879EA + .incbin "baserom_jp.gba", 0x2879ea, 0xa7f + + .globl gUnknown_8288469 +gUnknown_8288469: @ 0x8288469 + .incbin "baserom_jp.gba", 0x288469, 0x1a + + .globl gUnknown_8288483 +gUnknown_8288483: @ 0x8288483 + .incbin "baserom_jp.gba", 0x288483, 0x21 + + .globl gUnknown_82884A4 +gUnknown_82884A4: @ 0x82884A4 + .incbin "baserom_jp.gba", 0x2884a4, 0x88e + + .globl gUnknown_8288D32 +gUnknown_8288D32: @ 0x8288D32 + .incbin "baserom_jp.gba", 0x288d32, 0xd + + .globl gUnknown_8288D3F +gUnknown_8288D3F: @ 0x8288D3F + .incbin "baserom_jp.gba", 0x288d3f, 0xd + + .globl gUnknown_8288D4C +gUnknown_8288D4C: @ 0x8288D4C + .incbin "baserom_jp.gba", 0x288d4c, 0x9 + + .globl gUnknown_8288D55 +gUnknown_8288D55: @ 0x8288D55 + .incbin "baserom_jp.gba", 0x288d55, 0x160 + + .globl gUnknown_8288EB5 +gUnknown_8288EB5: @ 0x8288EB5 + .incbin "baserom_jp.gba", 0x288eb5, 0x3d + + .globl gUnknown_8288EF2 +gUnknown_8288EF2: @ 0x8288EF2 + .incbin "baserom_jp.gba", 0x288ef2, 0x3 + + .globl gUnknown_8288EF5 +gUnknown_8288EF5: @ 0x8288EF5 + .incbin "baserom_jp.gba", 0x288ef5, 0x9e + + .globl gUnknown_8288F93 +gUnknown_8288F93: @ 0x8288F93 + .incbin "baserom_jp.gba", 0x288f93, 0x2a + + .globl gUnknown_8288FBD +gUnknown_8288FBD: @ 0x8288FBD + .incbin "baserom_jp.gba", 0x288fbd, 0x52 + + .globl gUnknown_828900F +gUnknown_828900F: @ 0x828900F + .incbin "baserom_jp.gba", 0x28900f, 0x54 + + .globl gUnknown_8289063 +gUnknown_8289063: @ 0x8289063 + .incbin "baserom_jp.gba", 0x289063, 0xe + + .globl gUnknown_8289071 +gUnknown_8289071: @ 0x8289071 + .incbin "baserom_jp.gba", 0x289071, 0x7 + + .globl gUnknown_8289078 +gUnknown_8289078: @ 0x8289078 + .incbin "baserom_jp.gba", 0x289078, 0x7 + + .globl gUnknown_828907F +gUnknown_828907F: @ 0x828907F + .incbin "baserom_jp.gba", 0x28907f, 0x7 + + .globl gUnknown_8289086 +gUnknown_8289086: @ 0x8289086 + .incbin "baserom_jp.gba", 0x289086, 0x4 + + .globl gUnknown_828908A +gUnknown_828908A: @ 0x828908A + .incbin "baserom_jp.gba", 0x28908a, 0x9 + + .globl gUnknown_8289093 +gUnknown_8289093: @ 0x8289093 + .incbin "baserom_jp.gba", 0x289093, 0x6 + + .globl gUnknown_8289099 +gUnknown_8289099: @ 0x8289099 + .incbin "baserom_jp.gba", 0x289099, 0x4 + + .globl gUnknown_828909D +gUnknown_828909D: @ 0x828909D + .incbin "baserom_jp.gba", 0x28909d, 0xa4 + + .globl gUnknown_8289141 +gUnknown_8289141: @ 0x8289141 + .incbin "baserom_jp.gba", 0x289141, 0x4 + + .globl gUnknown_8289145 +gUnknown_8289145: @ 0x8289145 + .incbin "baserom_jp.gba", 0x289145, 0x6f + + .globl gUnknown_82891B4 +gUnknown_82891B4: @ 0x82891B4 + .incbin "baserom_jp.gba", 0x2891b4, 0x1b + + .globl gUnknown_82891CF +gUnknown_82891CF: @ 0x82891CF + .incbin "baserom_jp.gba", 0x2891cf, 0x82 + + .globl gUnknown_8289251 +gUnknown_8289251: @ 0x8289251 + .incbin "baserom_jp.gba", 0x289251, 0x9 + + .globl gUnknown_828925A +gUnknown_828925A: @ 0x828925A + .incbin "baserom_jp.gba", 0x28925a, 0xe + + .globl gUnknown_8289268 +gUnknown_8289268: @ 0x8289268 + .incbin "baserom_jp.gba", 0x289268, 0x7 + + .globl gUnknown_828926F +gUnknown_828926F: @ 0x828926F + .incbin "baserom_jp.gba", 0x28926f, 0x13 + + .globl gUnknown_8289282 +gUnknown_8289282: @ 0x8289282 + .incbin "baserom_jp.gba", 0x289282, 0x11 + + .globl gUnknown_8289293 +gUnknown_8289293: @ 0x8289293 + .incbin "baserom_jp.gba", 0x289293, 0xa + + .globl gUnknown_828929D +gUnknown_828929D: @ 0x828929D + .incbin "baserom_jp.gba", 0x28929d, 0x5c + + .globl gUnknown_82892F9 +gUnknown_82892F9: @ 0x82892F9 + .incbin "baserom_jp.gba", 0x2892f9, 0xb + + .globl gUnknown_8289304 +gUnknown_8289304: @ 0x8289304 + .incbin "baserom_jp.gba", 0x289304, 0x48 + + .globl gUnknown_828934C +gUnknown_828934C: @ 0x828934C + .incbin "baserom_jp.gba", 0x28934c, 0x14 + + .globl gUnknown_8289360 +gUnknown_8289360: @ 0x8289360 + .incbin "baserom_jp.gba", 0x289360, 0x2b + + .globl gUnknown_828938B +gUnknown_828938B: @ 0x828938B + .incbin "baserom_jp.gba", 0x28938b, 0xa + + .globl gUnknown_8289395 +gUnknown_8289395: @ 0x8289395 + .incbin "baserom_jp.gba", 0x289395, 0x7 + + .globl gUnknown_828939C +gUnknown_828939C: @ 0x828939C + .incbin "baserom_jp.gba", 0x28939c, 0xb + + .globl gUnknown_82893A7 +gUnknown_82893A7: @ 0x82893A7 + .incbin "baserom_jp.gba", 0x2893a7, 0x4 + + .globl gUnknown_82893AB +gUnknown_82893AB: @ 0x82893AB + .incbin "baserom_jp.gba", 0x2893ab, 0x7 + + .globl gUnknown_82893B2 +gUnknown_82893B2: @ 0x82893B2 + .incbin "baserom_jp.gba", 0x2893b2, 0xd + + .globl gUnknown_82893BF +gUnknown_82893BF: @ 0x82893BF + .incbin "baserom_jp.gba", 0x2893bf, 0x7 + + .globl gUnknown_82893C6 +gUnknown_82893C6: @ 0x82893C6 + .incbin "baserom_jp.gba", 0x2893c6, 0x1b + + .globl gUnknown_82893E1 +gUnknown_82893E1: @ 0x82893E1 + .incbin "baserom_jp.gba", 0x2893e1, 0x37 + + .globl gUnknown_8289418 +gUnknown_8289418: @ 0x8289418 + .incbin "baserom_jp.gba", 0x289418, 0x37 + + .globl gUnknown_828944F +gUnknown_828944F: @ 0x828944F + .incbin "baserom_jp.gba", 0x28944f, 0x3e + + .globl gUnknown_828948D +gUnknown_828948D: @ 0x828948D + .incbin "baserom_jp.gba", 0x28948d, 0x1b + + .globl gUnknown_82894A8 +gUnknown_82894A8: @ 0x82894A8 + .incbin "baserom_jp.gba", 0x2894a8, 0x7 + + .globl gUnknown_82894AF +gUnknown_82894AF: @ 0x82894AF + .incbin "baserom_jp.gba", 0x2894af, 0x9c + + .globl gUnknown_828954B +gUnknown_828954B: @ 0x828954B + .incbin "baserom_jp.gba", 0x28954b, 0x2 + + .globl gUnknown_828954D +gUnknown_828954D: @ 0x828954D + .incbin "baserom_jp.gba", 0x28954d, 0x11 + + .globl gUnknown_828955E +gUnknown_828955E: @ 0x828955E + .incbin "baserom_jp.gba", 0x28955e, 0x7 + + .globl gUnknown_8289565 +gUnknown_8289565: @ 0x8289565 + .incbin "baserom_jp.gba", 0x289565, 0x7 + + .globl gUnknown_828956C +gUnknown_828956C: @ 0x828956C + .incbin "baserom_jp.gba", 0x28956c, 0x8e + + .globl gUnknown_82895FA +gUnknown_82895FA: @ 0x82895FA + .incbin "baserom_jp.gba", 0x2895fa, 0x4 + + .globl gUnknown_82895FE +gUnknown_82895FE: @ 0x82895FE + .incbin "baserom_jp.gba", 0x2895fe, 0x4 + + .globl gUnknown_8289602 +gUnknown_8289602: @ 0x8289602 + .incbin "baserom_jp.gba", 0x289602, 0xf + + .globl gUnknown_8289611 +gUnknown_8289611: @ 0x8289611 + .incbin "baserom_jp.gba", 0x289611, 0xf + + .globl gUnknown_8289620 +gUnknown_8289620: @ 0x8289620 + .incbin "baserom_jp.gba", 0x289620, 0x8 + + .globl gUnknown_8289628 +gUnknown_8289628: @ 0x8289628 + .incbin "baserom_jp.gba", 0x289628, 0x4 + + .globl gUnknown_828962C +gUnknown_828962C: @ 0x828962C + .incbin "baserom_jp.gba", 0x28962c, 0xb + + .globl gUnknown_8289637 +gUnknown_8289637: @ 0x8289637 + .incbin "baserom_jp.gba", 0x289637, 0x8 + + .globl gUnknown_828963F +gUnknown_828963F: @ 0x828963F + .incbin "baserom_jp.gba", 0x28963f, 0x37 + + .globl gUnknown_8289676 +gUnknown_8289676: @ 0x8289676 + .incbin "baserom_jp.gba", 0x289676, 0x29 + + .globl gUnknown_828969F +gUnknown_828969F: @ 0x828969F + .incbin "baserom_jp.gba", 0x28969f, 0x51 + + .globl gUnknown_82896F0 +gUnknown_82896F0: @ 0x82896F0 + .incbin "baserom_jp.gba", 0x2896f0, 0xe + + .globl gUnknown_82896FE +gUnknown_82896FE: @ 0x82896FE + .incbin "baserom_jp.gba", 0x2896fe, 0xb + + .globl gUnknown_8289709 +gUnknown_8289709: @ 0x8289709 + .incbin "baserom_jp.gba", 0x289709, 0x4 + + .globl gUnknown_828970D +gUnknown_828970D: @ 0x828970D + .incbin "baserom_jp.gba", 0x28970d, 0x8 + + .globl gUnknown_8289715 +gUnknown_8289715: @ 0x8289715 + .incbin "baserom_jp.gba", 0x289715, 0x7 + + .globl gUnknown_828971C +gUnknown_828971C: @ 0x828971C + .incbin "baserom_jp.gba", 0x28971c, 0x18 + + .globl gUnknown_8289734 +gUnknown_8289734: @ 0x8289734 + .incbin "baserom_jp.gba", 0x289734, 0x1b + + .globl gUnknown_828974F +gUnknown_828974F: @ 0x828974F + .incbin "baserom_jp.gba", 0x28974f, 0x7 + + .globl gUnknown_8289756 +gUnknown_8289756: @ 0x8289756 + .incbin "baserom_jp.gba", 0x289756, 0x7 + + .globl gUnknown_828975D +gUnknown_828975D: @ 0x828975D + .incbin "baserom_jp.gba", 0x28975d, 0x2a + + .globl gUnknown_8289787 +gUnknown_8289787: @ 0x8289787 + .incbin "baserom_jp.gba", 0x289787, 0x14 + + .globl gUnknown_828979B +gUnknown_828979B: @ 0x828979B + .incbin "baserom_jp.gba", 0x28979b, 0xd + + .globl gUnknown_82897A8 +gUnknown_82897A8: @ 0x82897A8 + .incbin "baserom_jp.gba", 0x2897a8, 0x14 + + .globl gUnknown_82897BC +gUnknown_82897BC: @ 0x82897BC + .incbin "baserom_jp.gba", 0x2897bc, 0x9 + + .globl gUnknown_82897C5 +gUnknown_82897C5: @ 0x82897C5 + .incbin "baserom_jp.gba", 0x2897c5, 0x22 + + .globl gUnknown_82897E7 +gUnknown_82897E7: @ 0x82897E7 + .incbin "baserom_jp.gba", 0x2897e7, 0xb + + .globl gUnknown_82897F2 +gUnknown_82897F2: @ 0x82897F2 + .incbin "baserom_jp.gba", 0x2897f2, 0xd + + .globl gUnknown_82897FF +gUnknown_82897FF: @ 0x82897FF + .incbin "baserom_jp.gba", 0x2897ff, 0xb + + .globl gUnknown_828980A +gUnknown_828980A: @ 0x828980A + .incbin "baserom_jp.gba", 0x28980a, 0x9 + + .globl gUnknown_8289813 +gUnknown_8289813: @ 0x8289813 + .incbin "baserom_jp.gba", 0x289813, 0x10 + + .globl gUnknown_8289823 +gUnknown_8289823: @ 0x8289823 + .incbin "baserom_jp.gba", 0x289823, 0xb + + .globl gUnknown_828982E +gUnknown_828982E: @ 0x828982E + .incbin "baserom_jp.gba", 0x28982e, 0x9 + + .globl gUnknown_8289837 +gUnknown_8289837: @ 0x8289837 + .incbin "baserom_jp.gba", 0x289837, 0xe + + .globl gUnknown_8289845 +gUnknown_8289845: @ 0x8289845 + .incbin "baserom_jp.gba", 0x289845, 0x43 + + .globl gUnknown_8289888 +gUnknown_8289888: @ 0x8289888 + .incbin "baserom_jp.gba", 0x289888, 0x7 + + .globl gUnknown_828988F +gUnknown_828988F: @ 0x828988F + .incbin "baserom_jp.gba", 0x28988f, 0x7 + + .globl gUnknown_8289896 +gUnknown_8289896: @ 0x8289896 + .incbin "baserom_jp.gba", 0x289896, 0x12 + + .globl gUnknown_82898A8 +gUnknown_82898A8: @ 0x82898A8 + .incbin "baserom_jp.gba", 0x2898a8, 0x7 + + .globl gUnknown_82898AF +gUnknown_82898AF: @ 0x82898AF + .incbin "baserom_jp.gba", 0x2898af, 0xd + + .globl gUnknown_82898BC +gUnknown_82898BC: @ 0x82898BC + .incbin "baserom_jp.gba", 0x2898bc, 0xb + + .globl gUnknown_82898C7 +gUnknown_82898C7: @ 0x82898C7 + .incbin "baserom_jp.gba", 0x2898c7, 0x11 + + .globl gUnknown_82898D8 +gUnknown_82898D8: @ 0x82898D8 + .incbin "baserom_jp.gba", 0x2898d8, 0x11 + + .globl gUnknown_82898E9 +gUnknown_82898E9: @ 0x82898E9 + .incbin "baserom_jp.gba", 0x2898e9, 0x17 + + .globl gUnknown_8289900 +gUnknown_8289900: @ 0x8289900 + .incbin "baserom_jp.gba", 0x289900, 0xaa + + .globl gUnknown_82899AA +gUnknown_82899AA: @ 0x82899AA + .incbin "baserom_jp.gba", 0x2899aa, 0xe + + .globl gUnknown_82899B8 +gUnknown_82899B8: @ 0x82899B8 + .incbin "baserom_jp.gba", 0x2899b8, 0x14 + + .globl gUnknown_82899CC +gUnknown_82899CC: @ 0x82899CC + .incbin "baserom_jp.gba", 0x2899cc, 0xe + + .globl gUnknown_82899DA +gUnknown_82899DA: @ 0x82899DA + .incbin "baserom_jp.gba", 0x2899da, 0xa + + .globl gUnknown_82899E4 +gUnknown_82899E4: @ 0x82899E4 + .incbin "baserom_jp.gba", 0x2899e4, 0x14 + + .globl gUnknown_82899F8 +gUnknown_82899F8: @ 0x82899F8 + .incbin "baserom_jp.gba", 0x2899f8, 0x14 + + .globl gUnknown_8289A0C +gUnknown_8289A0C: @ 0x8289A0C + .incbin "baserom_jp.gba", 0x289a0c, 0x25 + + .globl gUnknown_8289A31 +gUnknown_8289A31: @ 0x8289A31 + .incbin "baserom_jp.gba", 0x289a31, 0xf + + .globl gUnknown_8289A40 +gUnknown_8289A40: @ 0x8289A40 + .incbin "baserom_jp.gba", 0x289a40, 0x9 + + .globl gUnknown_8289A49 +gUnknown_8289A49: @ 0x8289A49 + .incbin "baserom_jp.gba", 0x289a49, 0x69 + + .globl gUnknown_8289AB2 +gUnknown_8289AB2: @ 0x8289AB2 + .incbin "baserom_jp.gba", 0x289ab2, 0x14 + + .globl gUnknown_8289AC6 +gUnknown_8289AC6: @ 0x8289AC6 + .incbin "baserom_jp.gba", 0x289ac6, 0x14 + + .globl gUnknown_8289ADA +gUnknown_8289ADA: @ 0x8289ADA + .incbin "baserom_jp.gba", 0x289ada, 0xe + + .globl gUnknown_8289AE8 +gUnknown_8289AE8: @ 0x8289AE8 + .incbin "baserom_jp.gba", 0x289ae8, 0xe + + .globl gUnknown_8289AF6 +gUnknown_8289AF6: @ 0x8289AF6 + .incbin "baserom_jp.gba", 0x289af6, 0x1 + + .globl gUnknown_8289AF7 +gUnknown_8289AF7: @ 0x8289AF7 + .incbin "baserom_jp.gba", 0x289af7, 0x22 + + .globl gUnknown_8289B19 +gUnknown_8289B19: @ 0x8289B19 + .incbin "baserom_jp.gba", 0x289b19, 0x1 + + .globl gUnknown_8289B1A +gUnknown_8289B1A: @ 0x8289B1A + .incbin "baserom_jp.gba", 0x289b1a, 0x15 + + .globl gUnknown_8289B2F +gUnknown_8289B2F: @ 0x8289B2F + .incbin "baserom_jp.gba", 0x289b2f, 0x1 + + .globl gUnknown_8289B30 +gUnknown_8289B30: @ 0x8289B30 + .incbin "baserom_jp.gba", 0x289b30, 0x1f + + .globl gUnknown_8289B4F +gUnknown_8289B4F: @ 0x8289B4F + .incbin "baserom_jp.gba", 0x289b4f, 0xa + + .globl gUnknown_8289B59 +gUnknown_8289B59: @ 0x8289B59 + .incbin "baserom_jp.gba", 0x289b59, 0xc + + .globl gUnknown_8289B65 +gUnknown_8289B65: @ 0x8289B65 + .incbin "baserom_jp.gba", 0x289b65, 0xc + + .globl gUnknown_8289B71 +gUnknown_8289B71: @ 0x8289B71 + .incbin "baserom_jp.gba", 0x289b71, 0xc + + .globl gUnknown_8289B7D +gUnknown_8289B7D: @ 0x8289B7D + .incbin "baserom_jp.gba", 0x289b7d, 0xe + + .globl gUnknown_8289B8B +gUnknown_8289B8B: @ 0x8289B8B + .incbin "baserom_jp.gba", 0x289b8b, 0x1c + + .globl gUnknown_8289BA7 +gUnknown_8289BA7: @ 0x8289BA7 + .incbin "baserom_jp.gba", 0x289ba7, 0x10 + + .globl gUnknown_8289BB7 +gUnknown_8289BB7: @ 0x8289BB7 + .incbin "baserom_jp.gba", 0x289bb7, 0x10 + + .globl gUnknown_8289BC7 +gUnknown_8289BC7: @ 0x8289BC7 + .incbin "baserom_jp.gba", 0x289bc7, 0xe + + .globl gUnknown_8289BD5 +gUnknown_8289BD5: @ 0x8289BD5 + .incbin "baserom_jp.gba", 0x289bd5, 0x7 + + .globl gUnknown_8289BDC +gUnknown_8289BDC: @ 0x8289BDC + .incbin "baserom_jp.gba", 0x289bdc, 0x1b + + .globl gUnknown_8289BF7 +gUnknown_8289BF7: @ 0x8289BF7 + .incbin "baserom_jp.gba", 0x289bf7, 0xd + + .globl gUnknown_8289C04 +gUnknown_8289C04: @ 0x8289C04 + .incbin "baserom_jp.gba", 0x289c04, 0x3 + + .globl gUnknown_8289C07 +gUnknown_8289C07: @ 0x8289C07 + .incbin "baserom_jp.gba", 0x289c07, 0x3 + + .globl gUnknown_8289C0A +gUnknown_8289C0A: @ 0x8289C0A + .incbin "baserom_jp.gba", 0x289c0a, 0xa + + .globl gUnknown_8289C14 +gUnknown_8289C14: @ 0x8289C14 + .incbin "baserom_jp.gba", 0x289c14, 0x9 + + .globl gUnknown_8289C1D +gUnknown_8289C1D: @ 0x8289C1D + .incbin "baserom_jp.gba", 0x289c1d, 0x10 + + .globl gUnknown_8289C2D +gUnknown_8289C2D: @ 0x8289C2D + .incbin "baserom_jp.gba", 0x289c2d, 0x8 + + .globl gUnknown_8289C35 +gUnknown_8289C35: @ 0x8289C35 + .incbin "baserom_jp.gba", 0x289c35, 0x2c + + .globl gUnknown_8289C61 +gUnknown_8289C61: @ 0x8289C61 + .incbin "baserom_jp.gba", 0x289c61, 0x17 + + .globl gUnknown_8289C78 +gUnknown_8289C78: @ 0x8289C78 + .incbin "baserom_jp.gba", 0x289c78, 0xb + + .globl gUnknown_8289C83 +gUnknown_8289C83: @ 0x8289C83 + .incbin "baserom_jp.gba", 0x289c83, 0xb + + .globl gUnknown_8289C8E +gUnknown_8289C8E: @ 0x8289C8E + .incbin "baserom_jp.gba", 0x289c8e, 0x6 + + .globl gUnknown_8289C94 +gUnknown_8289C94: @ 0x8289C94 + .incbin "baserom_jp.gba", 0x289c94, 0x12 + + .globl gUnknown_8289CA6 +gUnknown_8289CA6: @ 0x8289CA6 + .incbin "baserom_jp.gba", 0x289ca6, 0x6 + + .globl gUnknown_8289CAC +gUnknown_8289CAC: @ 0x8289CAC + .incbin "baserom_jp.gba", 0x289cac, 0x12 + + .globl gUnknown_8289CBE +gUnknown_8289CBE: @ 0x8289CBE + .incbin "baserom_jp.gba", 0x289cbe, 0x6 + + .globl gUnknown_8289CC4 +gUnknown_8289CC4: @ 0x8289CC4 + .incbin "baserom_jp.gba", 0x289cc4, 0x12 + + .globl gUnknown_8289CD6 +gUnknown_8289CD6: @ 0x8289CD6 + .incbin "baserom_jp.gba", 0x289cd6, 0x6 + + .globl gUnknown_8289CDC +gUnknown_8289CDC: @ 0x8289CDC + .incbin "baserom_jp.gba", 0x289cdc, 0x12 + + .globl gUnknown_8289CEE +gUnknown_8289CEE: @ 0x8289CEE + .incbin "baserom_jp.gba", 0x289cee, 0x6 + + .globl gUnknown_8289CF4 +gUnknown_8289CF4: @ 0x8289CF4 + .incbin "baserom_jp.gba", 0x289cf4, 0x12 + + .globl gUnknown_8289D06 +gUnknown_8289D06: @ 0x8289D06 + .incbin "baserom_jp.gba", 0x289d06, 0x6 + + .globl gUnknown_8289D0C +gUnknown_8289D0C: @ 0x8289D0C + .incbin "baserom_jp.gba", 0x289d0c, 0x10 + + .globl gUnknown_8289D1C +gUnknown_8289D1C: @ 0x8289D1C + .incbin "baserom_jp.gba", 0x289d1c, 0x6 + + .globl gUnknown_8289D22 +gUnknown_8289D22: @ 0x8289D22 + .incbin "baserom_jp.gba", 0x289d22, 0x14 + + .globl gUnknown_8289D36 +gUnknown_8289D36: @ 0x8289D36 + .incbin "baserom_jp.gba", 0x289d36, 0x6 + + .globl gUnknown_8289D3C +gUnknown_8289D3C: @ 0x8289D3C + .incbin "baserom_jp.gba", 0x289d3c, 0x10 + + .globl gUnknown_8289D4C +gUnknown_8289D4C: @ 0x8289D4C + .incbin "baserom_jp.gba", 0x289d4c, 0x1d + + .globl gUnknown_8289D69 +gUnknown_8289D69: @ 0x8289D69 + .incbin "baserom_jp.gba", 0x289d69, 0x10 + + .globl gUnknown_8289D79 +gUnknown_8289D79: @ 0x8289D79 + .incbin "baserom_jp.gba", 0x289d79, 0x6 + + .globl gUnknown_8289D7F +gUnknown_8289D7F: @ 0x8289D7F + .incbin "baserom_jp.gba", 0x289d7f, 0x1b + + .globl gUnknown_8289D9A +gUnknown_8289D9A: @ 0x8289D9A + .incbin "baserom_jp.gba", 0x289d9a, 0x4 + + .globl gUnknown_8289D9E +gUnknown_8289D9E: @ 0x8289D9E + .incbin "baserom_jp.gba", 0x289d9e, 0xe + + .globl gUnknown_8289DAC +gUnknown_8289DAC: @ 0x8289DAC + .incbin "baserom_jp.gba", 0x289dac, 0x2a + + .globl gUnknown_8289DD6 +gUnknown_8289DD6: @ 0x8289DD6 + .incbin "baserom_jp.gba", 0x289dd6, 0x1b + + .globl gUnknown_8289DF1 +gUnknown_8289DF1: @ 0x8289DF1 + .incbin "baserom_jp.gba", 0x289df1, 0x10 + + .globl gUnknown_8289E01 +gUnknown_8289E01: @ 0x8289E01 + .incbin "baserom_jp.gba", 0x289e01, 0x4 + + .globl gUnknown_8289E05 +gUnknown_8289E05: @ 0x8289E05 + .incbin "baserom_jp.gba", 0x289e05, 0x4 + + .globl gUnknown_8289E09 +gUnknown_8289E09: @ 0x8289E09 + .incbin "baserom_jp.gba", 0x289e09, 0x3d + + .globl gUnknown_8289E46 +gUnknown_8289E46: @ 0x8289E46 + .incbin "baserom_jp.gba", 0x289e46, 0x35 + + .globl gUnknown_8289E7B +gUnknown_8289E7B: @ 0x8289E7B + .incbin "baserom_jp.gba", 0x289e7b, 0xc7 + + .globl gUnknown_8289F42 +gUnknown_8289F42: @ 0x8289F42 + .incbin "baserom_jp.gba", 0x289f42, 0x7 + + .globl gUnknown_8289F49 +gUnknown_8289F49: @ 0x8289F49 + .incbin "baserom_jp.gba", 0x289f49, 0x7 + + .globl gUnknown_8289F50 +gUnknown_8289F50: @ 0x8289F50 + .incbin "baserom_jp.gba", 0x289f50, 0xc + + .globl gUnknown_8289F5C +gUnknown_8289F5C: @ 0x8289F5C + .incbin "baserom_jp.gba", 0x289f5c, 0x334 + + .globl gUnknown_828A290 +gUnknown_828A290: @ 0x828A290 + .incbin "baserom_jp.gba", 0x28a290, 0x34 + + .globl gUnknown_828A2C4 +gUnknown_828A2C4: @ 0x828A2C4 + .incbin "baserom_jp.gba", 0x28a2c4, 0x18 + + .globl gUnknown_828A2DC +gUnknown_828A2DC: @ 0x828A2DC + .incbin "baserom_jp.gba", 0x28a2dc, 0x4 + + .globl gUnknown_828A2E0 +gUnknown_828A2E0: @ 0x828A2E0 + .incbin "baserom_jp.gba", 0x28a2e0, 0x2c + + .globl gUnknown_828A30C +gUnknown_828A30C: @ 0x828A30C + .incbin "baserom_jp.gba", 0x28a30c, 0x46 + + .globl gUnknown_828A352 +gUnknown_828A352: @ 0x828A352 + .incbin "baserom_jp.gba", 0x28a352, 0xa + + .globl gUnknown_828A35C +gUnknown_828A35C: @ 0x828A35C + .incbin "baserom_jp.gba", 0x28a35c, 0x2e + + .globl gUnknown_828A38A +gUnknown_828A38A: @ 0x828A38A + .incbin "baserom_jp.gba", 0x28a38a, 0xf6 + + .globl gUnknown_828A480 +gUnknown_828A480: @ 0x828A480 + .incbin "baserom_jp.gba", 0x28a480, 0x2458 + + .globl gUnknown_828C8D8 +gUnknown_828C8D8: @ 0x828C8D8 + .incbin "baserom_jp.gba", 0x28c8d8, 0x9dc + + .globl gUnknown_828D2B4 +gUnknown_828D2B4: @ 0x828D2B4 + .incbin "baserom_jp.gba", 0x28d2b4, 0x44 + + .globl gUnknown_828D2F8 +gUnknown_828D2F8: @ 0x828D2F8 diff --git a/emerald_jp.cfg b/emerald_jp.cfg new file mode 100644 index 0000000..b50cf3c --- /dev/null +++ b/emerald_jp.cfg @@ -0,0 +1,16022 @@ +arm_func 0x8000000 _start +arm_func 0x8000204 _init +arm_func 0x8000234 _init.ret +arm_func 0x8000248 _intr +arm_func 0x8000374 _intr.ret +thumb_func 0x80003a4 AgbMain +thumb_func 0x80004d8 UpdateLinkAndCallCallbacks +thumb_func 0x800051c InitMainCallbacks +thumb_func 0x8000540 +thumb_func 0x8000554 +thumb_func 0x8000560 +thumb_func 0x8000588 +thumb_func 0x8000594 +thumb_func 0x80005bc +thumb_func 0x80005e4 +thumb_func 0x8000684 +thumb_func 0x80006f0 +thumb_func 0x80006fc +thumb_func 0x8000708 +thumb_func 0x8000714 +thumb_func 0x800072c +thumb_func 0x8000738 +thumb_func 0x8000800 +thumb_func 0x8000814 +thumb_func 0x8000844 +thumb_func 0x8000878 +thumb_func 0x80008a8 nullsub_29 +thumb_func 0x80008ac +thumb_func 0x80008dc +thumb_func 0x80008e8 +thumb_func 0x80008f4 +thumb_func 0x8000964 +thumb_func 0x8000988 +thumb_func 0x80009a4 +thumb_func 0x80009b8 +thumb_func 0x8000a34 +thumb_func 0x8000b14 +thumb_func 0x8000b54 +thumb_func 0x8000bac +thumb_func 0x8000bc8 +thumb_func 0x8000bdc +thumb_func 0x8000bf0 +thumb_func 0x8000c04 +thumb_func 0x8000c18 +thumb_func 0x8000c48 +thumb_func 0x8000c80 +thumb_func 0x8000ef8 +thumb_func 0x8000f90 +thumb_func 0x8001034 +thumb_func 0x8001074 +thumb_func 0x80010cc +thumb_func 0x8001110 +thumb_func 0x8001144 +thumb_func 0x80011d0 +thumb_func 0x8001200 +thumb_func 0x8001220 +thumb_func 0x8001240 +thumb_func 0x8001274 +thumb_func 0x80012a0 +thumb_func 0x80012cc +thumb_func 0x8001308 +thumb_func 0x8001320 +thumb_func 0x800133c +thumb_func 0x800134c +thumb_func 0x800136c +thumb_func 0x8001398 +thumb_func 0x80014c4 +thumb_func 0x8001578 +thumb_func 0x8001600 +thumb_func 0x800167c +thumb_func 0x80016b0 +thumb_func 0x80016d4 +thumb_func 0x80016f0 +thumb_func 0x80017bc +thumb_func 0x80017d0 +thumb_func 0x80017d4 +thumb_func 0x8001800 +thumb_func 0x80018c8 +thumb_func 0x800194c +thumb_func 0x800195c +thumb_func 0x8001a14 +thumb_func 0x8001a64 +thumb_func 0x8001aec +thumb_func 0x8001b48 +thumb_func 0x8001b5c +thumb_func 0x8001b70 +thumb_func 0x8001c34 +thumb_func 0x8001d1c +thumb_func 0x8001e58 +thumb_func 0x8001e94 +thumb_func 0x8001fd0 +thumb_func 0x800200c +thumb_func 0x800204c +thumb_func 0x800212c +thumb_func 0x8002160 +thumb_func 0x8002194 +thumb_func 0x80021cc +thumb_func 0x8002248 +thumb_func 0x80022b0 +thumb_func 0x80023b4 +thumb_func 0x80023f8 +thumb_func 0x80025e0 +thumb_func 0x80026e0 +thumb_func 0x800271c +thumb_func 0x80028c8 +thumb_func 0x8002938 +thumb_func 0x8002990 +thumb_func 0x80029c8 +thumb_func 0x8002a24 +thumb_func 0x8002a78 +thumb_func 0x8002a8c +thumb_func 0x8002ab8 +thumb_func 0x8002afc +thumb_func 0x8002cdc +thumb_func 0x8002d98 +thumb_func 0x8002fe8 +thumb_func 0x800308c nullsub_420 +thumb_func 0x8003090 +thumb_func 0x8003250 +thumb_func 0x80033a8 +thumb_func 0x8003444 +thumb_func 0x80034d4 +thumb_func 0x8003528 +thumb_func 0x80035a8 +thumb_func 0x800365c +thumb_func 0x80036bc +thumb_func 0x8003774 +thumb_func 0x80037c4 +thumb_func 0x8003874 +thumb_func 0x80038ac +thumb_func 0x800396c +thumb_func 0x8003a34 +thumb_func 0x8003ac0 +thumb_func 0x8003b18 +thumb_func 0x8003b64 +thumb_func 0x8003f28 +thumb_func 0x8003f78 +thumb_func 0x800401c +thumb_func 0x8004100 +thumb_func 0x800412c nullsub_301 +thumb_func 0x8004130 +thumb_func 0x8004238 +thumb_func 0x8004278 +thumb_func 0x8004304 +thumb_func 0x80043d0 +thumb_func 0x8004448 +thumb_func 0x8004474 +thumb_func 0x8004480 +thumb_func 0x800449c +thumb_func 0x8004548 +thumb_func 0x8004630 +thumb_func 0x80046a8 +thumb_func 0x80046b8 +thumb_func 0x80046e4 +thumb_func 0x8004798 +thumb_func 0x80047b8 +thumb_func 0x80047c8 +thumb_func 0x8004808 +thumb_func 0x8004850 +thumb_func 0x8004e50 +thumb_func 0x8005358 +thumb_func 0x800538c +thumb_func 0x80053c4 +thumb_func 0x80053fc +thumb_func 0x8005434 +thumb_func 0x800546c +thumb_func 0x80054a4 +thumb_func 0x80054d4 +thumb_func 0x80055ac +thumb_func 0x80055e0 +thumb_func 0x80055fc +thumb_func 0x8005648 +thumb_func 0x800568c +thumb_func 0x8005760 +thumb_func 0x8005c48 +thumb_func 0x8005d7c +thumb_func 0x8005dac +thumb_func 0x8005f7c +thumb_func 0x8006124 +thumb_func 0x8006174 +thumb_func 0x8006184 +thumb_func 0x8006194 +thumb_func 0x80061a4 +thumb_func 0x80061b4 +thumb_func 0x800629c +thumb_func 0x80062b4 +thumb_func 0x8006300 +thumb_func 0x8006304 +thumb_func 0x8006350 +thumb_func 0x8006354 +thumb_func 0x80063f8 +thumb_func 0x8006418 +thumb_func 0x80064b4 +thumb_func 0x80064b8 +thumb_func 0x800655c +thumb_func 0x800657c +thumb_func 0x8006620 +thumb_func 0x8006640 +thumb_func 0x800668c +thumb_func 0x80066d8 +thumb_func 0x8006724 +thumb_func 0x8006770 +thumb_func 0x8006834 +thumb_func 0x8006874 +thumb_func 0x8006a34 +thumb_func 0x8006a80 +thumb_func 0x8006b0c +thumb_func 0x8006b60 +thumb_func 0x8006bcc +thumb_func 0x8006c14 +thumb_func 0x8006d6c +thumb_func 0x8006e00 +thumb_func 0x8006e68 +thumb_func 0x8006ea0 +thumb_func 0x8006ed0 +thumb_func 0x8006f10 +thumb_func 0x8006f3c +thumb_func 0x8006f5c +thumb_func 0x8006f70 +thumb_func 0x8006fb4 +thumb_func 0x80070d0 +thumb_func 0x8007140 nullsub_141 +thumb_func 0x8007144 +thumb_func 0x80071a0 +thumb_func 0x8007204 +thumb_func 0x8007254 +thumb_func 0x800727c +thumb_func 0x80072a4 +thumb_func 0x80072e0 +thumb_func 0x80072fc +thumb_func 0x800730c +thumb_func 0x8007338 +thumb_func 0x8007358 +thumb_func 0x80073a0 +thumb_func 0x8007490 +thumb_func 0x8007530 +thumb_func 0x80075dc +thumb_func 0x80075f4 +thumb_func 0x80076bc +thumb_func 0x80076dc +thumb_func 0x8007714 +thumb_func 0x8007734 +thumb_func 0x80077a8 +thumb_func 0x800783c +thumb_func 0x80078f0 +thumb_func 0x8007924 +thumb_func 0x8007958 +thumb_func 0x8007994 +thumb_func 0x80079c4 +thumb_func 0x8007a30 +thumb_func 0x8007a7c +thumb_func 0x8007ab8 +thumb_func 0x8007af0 +thumb_func 0x8007b10 +thumb_func 0x8007b30 +thumb_func 0x8007b40 +thumb_func 0x8007b6c +thumb_func 0x8007c08 +thumb_func 0x8007c7c +thumb_func 0x8007c98 +thumb_func 0x8007cc0 +thumb_func 0x8007ce8 +thumb_func 0x8007d0c +thumb_func 0x8007d34 +thumb_func 0x8007d64 +thumb_func 0x8007dfc +thumb_func 0x8007e14 +thumb_func 0x8007e80 +thumb_func 0x8007ec0 +thumb_func 0x8007ed8 +thumb_func 0x8007ef4 +thumb_func 0x8007f70 +thumb_func 0x8007f9c +thumb_func 0x8007fd0 +thumb_func 0x8008008 +thumb_func 0x800803c +thumb_func 0x8008094 +thumb_func 0x80080c8 +thumb_func 0x8008100 +thumb_func 0x8008140 +thumb_func 0x8008190 +thumb_func 0x8008210 +thumb_func 0x8008254 +thumb_func 0x8008280 +thumb_func 0x80082f8 +thumb_func 0x8008338 +thumb_func 0x8008364 +thumb_func 0x8008390 +thumb_func 0x80083dc +thumb_func 0x8008424 +thumb_func 0x800845c +thumb_func 0x80084a8 +thumb_func 0x80084d4 +thumb_func 0x80084ec +thumb_func 0x800851c +thumb_func 0x8008554 +thumb_func 0x8008564 +thumb_func 0x800858c +thumb_func 0x8008598 +thumb_func 0x8008604 +thumb_func 0x8008828 +thumb_func 0x800885c +thumb_func 0x8008888 +thumb_func 0x80088b8 +thumb_func 0x80088d8 +thumb_func 0x80088f0 +thumb_func 0x8008920 +thumb_func 0x800893c +thumb_func 0x800895c +thumb_func 0x8008980 +thumb_func 0x80089ac +thumb_func 0x80089d8 +thumb_func 0x8008a78 +thumb_func 0x8008b18 +thumb_func 0x8008bcc +thumb_func 0x8008cb8 +thumb_func 0x8008d18 +thumb_func 0x8008d20 +thumb_func 0x8008d2c +thumb_func 0x8008d34 +thumb_func 0x8008d3c +thumb_func 0x8008d44 +thumb_func 0x8008d68 +thumb_func 0x8008d8c +thumb_func 0x8008d94 +thumb_func 0x8008d9c +thumb_func 0x8008da4 +thumb_func 0x8008dac +thumb_func 0x8008db4 +thumb_func 0x8008dbc +thumb_func 0x8008dc4 +thumb_func 0x8008de8 +thumb_func 0x8008e14 +thumb_func 0x8008e68 +thumb_func 0x8008e78 +thumb_func 0x8008eb8 +thumb_func 0x8008ed8 +thumb_func 0x8008f14 +thumb_func 0x8008f38 +thumb_func 0x8008f68 +thumb_func 0x8008fa0 +thumb_func 0x8008fb0 +thumb_func 0x8009088 +thumb_func 0x800910c +thumb_func 0x80091c4 +thumb_func 0x80091d4 +thumb_func 0x8009258 +thumb_func 0x800926c +thumb_func 0x8009298 +thumb_func 0x80092d0 +thumb_func 0x8009384 +thumb_func 0x80093b4 +thumb_func 0x800949c +thumb_func 0x8009558 +thumb_func 0x800957c +thumb_func 0x80095f4 +thumb_func 0x800963c +thumb_func 0x8009928 +thumb_func 0x8009ab0 +thumb_func 0x8009ad4 +thumb_func 0x8009b08 +thumb_func 0x8009b24 +thumb_func 0x8009b44 +thumb_func 0x8009b64 +thumb_func 0x8009b90 +thumb_func 0x8009bd4 +thumb_func 0x8009c04 +thumb_func 0x8009c28 +thumb_func 0x8009c40 +thumb_func 0x8009c70 +thumb_func 0x8009c8c +thumb_func 0x8009e00 +thumb_func 0x8009e68 +thumb_func 0x8009e80 +thumb_func 0x8009ea4 +thumb_func 0x8009eb8 +thumb_func 0x8009f28 +thumb_func 0x8009f4c +thumb_func 0x8009fb0 +thumb_func 0x8009fbc +thumb_func 0x8009fdc +thumb_func 0x800a010 +thumb_func 0x800a01c +thumb_func 0x800a02c +thumb_func 0x800a054 +thumb_func 0x800a070 +thumb_func 0x800a09c +thumb_func 0x800a0e4 +thumb_func 0x800a114 +thumb_func 0x800a14c +thumb_func 0x800a178 +thumb_func 0x800a1b0 +thumb_func 0x800a1e4 +thumb_func 0x800a20c +thumb_func 0x800a23c +thumb_func 0x800a274 +thumb_func 0x800a2ac +thumb_func 0x800a300 +thumb_func 0x800a3a0 +thumb_func 0x800a3e8 +thumb_func 0x800a414 +thumb_func 0x800a558 +thumb_func 0x800a56c +thumb_func 0x800a59c +thumb_func 0x800a5c8 +thumb_func 0x800a60c +thumb_func 0x800a618 +thumb_func 0x800a624 +thumb_func 0x800a6b8 +thumb_func 0x800a6dc +thumb_func 0x800a75c +thumb_func 0x800a770 +thumb_func 0x800a780 +thumb_func 0x800a7ac +thumb_func 0x800a7b8 +thumb_func 0x800a7f8 +thumb_func 0x800a844 +thumb_func 0x800a870 +thumb_func 0x800a8d4 +thumb_func 0x800a90c +thumb_func 0x800a938 +thumb_func 0x800a990 +thumb_func 0x800a9f4 +thumb_func 0x800aa0c +thumb_func 0x800ab5c +thumb_func 0x800ac14 +thumb_func 0x800ac7c +thumb_func 0x800adc4 +thumb_func 0x800add4 +thumb_func 0x800adfc +thumb_func 0x800ae0c +thumb_func 0x800ae18 +thumb_func 0x800ae24 +thumb_func 0x800ae80 +thumb_func 0x800aee0 +thumb_func 0x800af5c +thumb_func 0x800af78 +thumb_func 0x800af94 +thumb_func 0x800afb0 +thumb_func 0x800afd8 +thumb_func 0x800afec +thumb_func 0x800aff8 +thumb_func 0x800b050 +thumb_func 0x800b0e4 +thumb_func 0x800b0f4 +thumb_func 0x800b220 +thumb_func 0x800b24c +thumb_func 0x800b27c +thumb_func 0x800b364 +thumb_func 0x800b474 +thumb_func 0x800b4e4 +thumb_func 0x800b4f4 +thumb_func 0x800b57c +thumb_func 0x800b58c +thumb_func 0x800b688 +thumb_func 0x800b7a0 +thumb_func 0x800b854 +thumb_func 0x800b888 +thumb_func 0x800b8b8 +thumb_func 0x800b90c +thumb_func 0x800b97c +thumb_func 0x800b9c8 +thumb_func 0x800ba08 +thumb_func 0x800ba5c +thumb_func 0x800ba88 +thumb_func 0x800babc +thumb_func 0x800bb04 +thumb_func 0x800bb10 +thumb_func 0x800bbe8 +thumb_func 0x800bccc +thumb_func 0x800bd38 +thumb_func 0x800be28 +thumb_func 0x800bfec +thumb_func 0x800c008 +thumb_func 0x800c200 +thumb_func 0x800c270 +thumb_func 0x800c96c +thumb_func 0x800c9f0 +thumb_func 0x800cc14 +thumb_func 0x800ccc8 +thumb_func 0x800cd24 +thumb_func 0x800cd50 +thumb_func 0x800cdc8 +thumb_func 0x800cdf0 +thumb_func 0x800ce14 +thumb_func 0x800cef0 +thumb_func 0x800cfe8 +thumb_func 0x800d000 +thumb_func 0x800d00c +thumb_func 0x800d050 +thumb_func 0x800d08c +thumb_func 0x800d0cc +thumb_func 0x800d0ec +thumb_func 0x800d114 +thumb_func 0x800d184 +thumb_func 0x800d1e0 +thumb_func 0x800d23c +thumb_func 0x800d294 +thumb_func 0x800d348 +thumb_func 0x800d3f4 +thumb_func 0x800d4a8 +thumb_func 0x800d534 +thumb_func 0x800d594 +thumb_func 0x800d5e4 +thumb_func 0x800d650 +thumb_func 0x800d6c4 +thumb_func 0x800d780 +thumb_func 0x800d7b4 +thumb_func 0x800d7e8 +thumb_func 0x800d860 +thumb_func 0x800d948 +thumb_func 0x800da00 +thumb_func 0x800da5c +thumb_func 0x800da80 +thumb_func 0x800db50 +thumb_func 0x800dbb4 +thumb_func 0x800dbf0 +thumb_func 0x800dc28 +thumb_func 0x800dc40 +thumb_func 0x800de44 +thumb_func 0x800de54 +thumb_func 0x800de74 +thumb_func 0x800e004 +thumb_func 0x800e070 +thumb_func 0x800e0c0 nullsub_5 +thumb_func 0x800e0c4 nullsub_4 +thumb_func 0x800e0c8 +thumb_func 0x800e194 +thumb_func 0x800e1c4 +thumb_func 0x800e20c +thumb_func 0x800e340 +thumb_func 0x800e350 +thumb_func 0x800e410 +thumb_func 0x800e578 +thumb_func 0x800e5c0 +thumb_func 0x800e608 +thumb_func 0x800e7d0 +thumb_func 0x800e7e8 +thumb_func 0x800e7f4 +thumb_func 0x800e87c +thumb_func 0x800e894 +thumb_func 0x800e938 +thumb_func 0x800e954 +thumb_func 0x800e97c +thumb_func 0x800e9c0 +thumb_func 0x800e9dc +thumb_func 0x800e9f8 +thumb_func 0x800ea18 +thumb_func 0x800ea3c +thumb_func 0x800ea48 +thumb_func 0x800ea70 +thumb_func 0x800ead4 +thumb_func 0x800eb08 +thumb_func 0x800eb78 +thumb_func 0x800ebb8 +thumb_func 0x800eca0 +thumb_func 0x800ef58 +thumb_func 0x800efb0 +thumb_func 0x800f0f8 +thumb_func 0x800f1bc +thumb_func 0x800f1e8 +thumb_func 0x800f20c +thumb_func 0x800f254 +thumb_func 0x800f29c +thumb_func 0x800f2a4 +thumb_func 0x800f2c4 +thumb_func 0x800f2f8 +thumb_func 0x800f304 +thumb_func 0x800f334 +thumb_func 0x800f350 +thumb_func 0x800f744 +thumb_func 0x800f76c +thumb_func 0x800f7a8 +thumb_func 0x800f7bc +thumb_func 0x800f7f8 +thumb_func 0x800f934 +thumb_func 0x800f968 +thumb_func 0x800fa4c +thumb_func 0x800fab0 +thumb_func 0x800fb28 +thumb_func 0x800fc00 +thumb_func 0x800fc1c +thumb_func 0x800fc48 +thumb_func 0x800fc68 +thumb_func 0x800fc98 +thumb_func 0x800fccc +thumb_func 0x800fd2c +thumb_func 0x800fd64 +thumb_func 0x800fd94 +thumb_func 0x800fdb8 +thumb_func 0x800fe58 +thumb_func 0x800fe90 +thumb_func 0x800ff34 +thumb_func 0x800ff54 +thumb_func 0x800ff8c +thumb_func 0x800ffb0 +thumb_func 0x800ffd0 +thumb_func 0x800fff4 +thumb_func 0x8010000 +thumb_func 0x8010028 +thumb_func 0x8010040 +thumb_func 0x80100ec +thumb_func 0x801014c +thumb_func 0x8010188 +thumb_func 0x80101d4 +thumb_func 0x8010214 +thumb_func 0x8010250 +thumb_func 0x80102a0 +thumb_func 0x801034c +thumb_func 0x80104e8 +thumb_func 0x8010514 +thumb_func 0x8010568 +thumb_func 0x80105a4 +thumb_func 0x80107fc +thumb_func 0x80108a4 +thumb_func 0x8010990 +thumb_func 0x80109b0 +thumb_func 0x8010a0c +thumb_func 0x8010a38 +thumb_func 0x8010a50 +thumb_func 0x8010a74 +thumb_func 0x8010a90 +thumb_func 0x8010abc +thumb_func 0x8010afc +thumb_func 0x8010b2c +thumb_func 0x8010b58 +thumb_func 0x8010b80 +thumb_func 0x8010ba8 +thumb_func 0x8010c60 +thumb_func 0x8010c90 +thumb_func 0x8010ca0 +thumb_func 0x8010ccc +thumb_func 0x8010cec +thumb_func 0x8010cfc +thumb_func 0x8010ef4 +thumb_func 0x80110dc +thumb_func 0x8011118 +thumb_func 0x8011164 +thumb_func 0x8011540 +thumb_func 0x8011554 +thumb_func 0x8011564 +thumb_func 0x8011570 +thumb_func 0x801158c +thumb_func 0x801159c +thumb_func 0x80115a8 +thumb_func 0x80115b4 +thumb_func 0x80115d4 +thumb_func 0x80115e8 +thumb_func 0x801167c +thumb_func 0x8011690 +thumb_func 0x80116bc +thumb_func 0x80116e4 +thumb_func 0x80116fc +thumb_func 0x8011748 +thumb_func 0x8011770 +thumb_func 0x80117c4 +thumb_func 0x80117d0 +thumb_func 0x8011858 +thumb_func 0x80118ac +thumb_func 0x80118cc +thumb_func 0x8011918 +thumb_func 0x8011980 +thumb_func 0x80119e0 +thumb_func 0x8011ab4 +thumb_func 0x8011af8 +thumb_func 0x8011b88 +thumb_func 0x8011c74 +thumb_func 0x8011d10 +thumb_func 0x8011d2c +thumb_func 0x8011d68 +thumb_func 0x8011d88 +thumb_func 0x8011fac +thumb_func 0x8011fc0 +thumb_func 0x8011fd4 nullsub_31 +thumb_func 0x8011fd8 +thumb_func 0x80120a8 +thumb_func 0x8012134 +thumb_func 0x80121d4 +thumb_func 0x8012244 +thumb_func 0x8012288 +thumb_func 0x8012a64 +thumb_func 0x8012ac4 +thumb_func 0x8012b78 +thumb_func 0x8012bb4 +thumb_func 0x8012c60 +thumb_func 0x8012d0c +thumb_func 0x8012d7c +thumb_func 0x8012dd8 +thumb_func 0x8012e9c +thumb_func 0x8012fa8 +thumb_func 0x8012fec +thumb_func 0x8013690 +thumb_func 0x80136dc +thumb_func 0x8013748 +thumb_func 0x8013784 +thumb_func 0x8013890 +thumb_func 0x80138c4 +thumb_func 0x80138fc +thumb_func 0x801394c +thumb_func 0x8013a68 +thumb_func 0x8013a80 +thumb_func 0x8013a98 +thumb_func 0x8013be8 +thumb_func 0x8013cac +thumb_func 0x8013d18 +thumb_func 0x8013d98 +thumb_func 0x8013e0c +thumb_func 0x8013e8c +thumb_func 0x8013eec +thumb_func 0x8013f14 +thumb_func 0x8014298 +thumb_func 0x80144cc +thumb_func 0x80144e0 +thumb_func 0x8014508 +thumb_func 0x8014548 +thumb_func 0x8014a04 +thumb_func 0x8014a50 +thumb_func 0x8014db0 +thumb_func 0x8014dfc +thumb_func 0x8015114 +thumb_func 0x8015160 +thumb_func 0x801516c +thumb_func 0x8015194 +thumb_func 0x80151b8 +thumb_func 0x80151d0 +thumb_func 0x80151e8 +thumb_func 0x8016398 +thumb_func 0x80163b0 +thumb_func 0x80163f0 +thumb_func 0x8016448 +thumb_func 0x8016490 +thumb_func 0x80165e4 +thumb_func 0x8016610 +thumb_func 0x80167b0 +thumb_func 0x8016900 +thumb_func 0x8016934 +thumb_func 0x8016a2c +thumb_func 0x8016a54 +thumb_func 0x8016ad0 +thumb_func 0x8016b00 +thumb_func 0x8016b30 +thumb_func 0x8016b5c +thumb_func 0x8016b74 +thumb_func 0x8016bc8 +thumb_func 0x8016c28 +thumb_func 0x8016c78 +thumb_func 0x8016c88 +thumb_func 0x8016d5c +thumb_func 0x8016e74 +thumb_func 0x8016e98 +thumb_func 0x8016ea4 +thumb_func 0x8017044 +thumb_func 0x80170b0 +thumb_func 0x80170f4 +thumb_func 0x801713c +thumb_func 0x80171a8 +thumb_func 0x80171f8 +thumb_func 0x801727c +thumb_func 0x8017360 +thumb_func 0x80173fc +thumb_func 0x8017440 +thumb_func 0x8017468 +thumb_func 0x8017484 +thumb_func 0x80175ec nullsub_30 +thumb_func 0x80175f0 +thumb_func 0x80176b0 +thumb_func 0x8017770 +thumb_func 0x80177b8 +thumb_func 0x80177c4 +thumb_func 0x801785c +thumb_func 0x80178c0 +thumb_func 0x8017960 +thumb_func 0x8017a94 +thumb_func 0x8017ac0 +thumb_func 0x8017ae0 +thumb_func 0x8017b38 +thumb_func 0x8017b4c +thumb_func 0x8017b5c +thumb_func 0x8017ba4 +thumb_func 0x8017bdc +thumb_func 0x8017c48 +thumb_func 0x8017c88 +thumb_func 0x8017c98 +thumb_func 0x8017cdc +thumb_func 0x8017ebc +thumb_func 0x8017ed0 +thumb_func 0x8017ee8 +thumb_func 0x80180e4 +thumb_func 0x8018110 +thumb_func 0x8018138 +thumb_func 0x8018180 +thumb_func 0x801822c +thumb_func 0x8018240 +thumb_func 0x80182e0 +thumb_func 0x801832c +thumb_func 0x8018388 +thumb_func 0x80183a4 +thumb_func 0x8018438 +thumb_func 0x8018460 +thumb_func 0x8018488 +thumb_func 0x80184c8 +thumb_func 0x80184fc +thumb_func 0x8018560 +thumb_func 0x80186b4 +thumb_func 0x8018804 +thumb_func 0x8018818 +thumb_func 0x8018874 +thumb_func 0x801888c +thumb_func 0x80188b8 +thumb_func 0x80188dc +thumb_func 0x80188fc +thumb_func 0x8018974 +thumb_func 0x8018aa4 +thumb_func 0x8018b0c +thumb_func 0x8018bdc +thumb_func 0x8018c14 +thumb_func 0x8018c5c +thumb_func 0x8019328 +thumb_func 0x8019330 +thumb_func 0x8019350 +thumb_func 0x8019370 +thumb_func 0x8019388 +thumb_func 0x80193d8 +thumb_func 0x8019428 +thumb_func 0x8019444 +thumb_func 0x801945c +thumb_func 0x8019474 +thumb_func 0x8019490 +thumb_func 0x80194b0 +thumb_func 0x80194d0 +thumb_func 0x8019548 +thumb_func 0x80195b4 +thumb_func 0x801960c +thumb_func 0x8019668 +thumb_func 0x8019720 +thumb_func 0x801976c +thumb_func 0x80197ac +thumb_func 0x8019838 +thumb_func 0x8019878 +thumb_func 0x80198bc +thumb_func 0x80198d8 +thumb_func 0x801990c +thumb_func 0x80199a0 +thumb_func 0x80199c8 +thumb_func 0x8019a00 +thumb_func 0x8019a28 +thumb_func 0x8019a40 +thumb_func 0x8019ac8 +thumb_func 0x8019b00 +thumb_func 0x8019c08 +thumb_func 0x8019ccc +thumb_func 0x8019cec +thumb_func 0x8019d2c +thumb_func 0x8019d3c +thumb_func 0x8019d60 +thumb_func 0x8019e68 +thumb_func 0x8019e88 +thumb_func 0x8019eac +thumb_func 0x8019ed0 +thumb_func 0x8019ee4 +thumb_func 0x8019ef4 +thumb_func 0x801a03c +thumb_func 0x801a074 +thumb_func 0x801a0b8 +thumb_func 0x801a168 +thumb_func 0x801a384 +thumb_func 0x801a434 +thumb_func 0x801a4dc +thumb_func 0x801a504 +thumb_func 0x801a5a8 +thumb_func 0x801a63c +thumb_func 0x801a6b0 +thumb_func 0x801a714 +thumb_func 0x801a728 +thumb_func 0x801aaac +thumb_func 0x801aae0 +thumb_func 0x801aaf4 +thumb_func 0x801ab08 +thumb_func 0x801ab1c +thumb_func 0x801ab30 +thumb_func 0x801ab44 +thumb_func 0x801ab50 +thumb_func 0x801aba0 +thumb_func 0x801abe4 +thumb_func 0x801abf8 +thumb_func 0x801ac1c +thumb_func 0x801ac50 +thumb_func 0x801ac74 +thumb_func 0x801acb0 +thumb_func 0x801ace4 +thumb_func 0x801ad40 +thumb_func 0x801ad8c +thumb_func 0x801adc8 +thumb_func 0x801adf0 +thumb_func 0x801ae28 +thumb_func 0x801ae5c +thumb_func 0x801ae80 +thumb_func 0x801ae98 +thumb_func 0x801aeb8 +thumb_func 0x801aef8 +thumb_func 0x801af20 +thumb_func 0x801af64 +thumb_func 0x801af8c +thumb_func 0x801afc8 +thumb_func 0x801b040 +thumb_func 0x801b160 +thumb_func 0x801b1ac +thumb_func 0x801b1c8 +thumb_func 0x801b208 +thumb_func 0x801b230 +thumb_func 0x801b244 +thumb_func 0x801b2b0 +thumb_func 0x801b354 +thumb_func 0x801b458 +thumb_func 0x801b464 +thumb_func 0x801b4a8 +thumb_func 0x801b524 +thumb_func 0x801b550 +thumb_func 0x801b5b8 +thumb_func 0x801b5d8 +thumb_func 0x801b670 +thumb_func 0x801b69c +thumb_func 0x801b8b0 +thumb_func 0x801b9f0 +thumb_func 0x801bca4 +thumb_func 0x801c04c +thumb_func 0x801c17c +thumb_func 0x801c224 +thumb_func 0x801c280 +thumb_func 0x801c2ac +thumb_func 0x801c588 +thumb_func 0x801c754 +thumb_func 0x801c794 +thumb_func 0x801c7d4 +thumb_func 0x801c8b4 +thumb_func 0x801c95c +thumb_func 0x801ca6c +thumb_func 0x801cb24 +thumb_func 0x801cb48 +thumb_func 0x801cb6c +thumb_func 0x801cba8 +thumb_func 0x801cbfc +thumb_func 0x801cc20 +thumb_func 0x801cc60 +thumb_func 0x801cc6c +thumb_func 0x801cc84 +thumb_func 0x801cc8c +thumb_func 0x801cc90 +thumb_func 0x801ccac +thumb_func 0x801ccc8 +thumb_func 0x801d240 +thumb_func 0x801d294 +thumb_func 0x801d2b8 +thumb_func 0x801d2f4 +thumb_func 0x801d304 +thumb_func 0x801d310 +thumb_func 0x801d31c +thumb_func 0x801d36c +thumb_func 0x801d390 +thumb_func 0x801d3ac +thumb_func 0x801d3e0 +thumb_func 0x801d408 +thumb_func 0x801d40c +thumb_func 0x801d42c +thumb_func 0x801d44c +thumb_func 0x801d620 +thumb_func 0x801d638 +thumb_func 0x801d670 +thumb_func 0x801d6a4 +thumb_func 0x801d6d0 +thumb_func 0x801d6dc +thumb_func 0x801d6e8 +thumb_func 0x801d714 +thumb_func 0x801d738 +thumb_func 0x801d748 +thumb_func 0x801d764 +thumb_func 0x801d788 +thumb_func 0x801d798 +thumb_func 0x801d86c +thumb_func 0x801d978 +thumb_func 0x801d9d0 +thumb_func 0x801d9ec +thumb_func 0x801da30 +thumb_func 0x801dabc +thumb_func 0x801dadc +thumb_func 0x801dae8 +thumb_func 0x801db20 +thumb_func 0x801db54 +thumb_func 0x801dbbc +thumb_func 0x801dbf4 +thumb_func 0x801dc54 +thumb_func 0x801dc78 +thumb_func 0x801dd44 +thumb_func 0x801dd5c +thumb_func 0x801dd78 +thumb_func 0x801ddc0 +thumb_func 0x801ddd0 +thumb_func 0x801de54 +thumb_func 0x801df44 +thumb_func 0x801e064 +thumb_func 0x801e284 +thumb_func 0x801e3e8 +thumb_func 0x801e48c +thumb_func 0x801e588 +thumb_func 0x801e65c +thumb_func 0x801e79c +thumb_func 0x801e9f8 +thumb_func 0x801ea08 +thumb_func 0x801eab8 +thumb_func 0x801eb74 +thumb_func 0x801eba0 +thumb_func 0x801ebd4 +thumb_func 0x801ebf0 +thumb_func 0x801ec20 +thumb_func 0x801ec3c +thumb_func 0x801ec7c +thumb_func 0x801ec94 +thumb_func 0x801ecb8 +thumb_func 0x801ece8 +thumb_func 0x801ed2c +thumb_func 0x801ed34 +thumb_func 0x801ed5c +thumb_func 0x801ed8c +thumb_func 0x801edb8 +thumb_func 0x801ede0 +thumb_func 0x801ee08 +thumb_func 0x801eeb0 +thumb_func 0x801eebc +thumb_func 0x801eed0 +thumb_func 0x801eedc +thumb_func 0x801eeec +thumb_func 0x801ef14 +thumb_func 0x801ef44 +thumb_func 0x801ef80 +thumb_func 0x801ef8c +thumb_func 0x801ef98 +thumb_func 0x801efa4 +thumb_func 0x801efe0 +thumb_func 0x801efec +thumb_func 0x801f0c4 +thumb_func 0x801f2e0 +thumb_func 0x801f344 +thumb_func 0x801f354 +thumb_func 0x801f384 +thumb_func 0x801f390 +thumb_func 0x801f3c8 +thumb_func 0x801f3fc +thumb_func 0x801f454 +thumb_func 0x801f468 +thumb_func 0x801f508 +thumb_func 0x801f540 +thumb_func 0x801f578 +thumb_func 0x801f5e4 +thumb_func 0x801f5f0 +thumb_func 0x801f63c +thumb_func 0x801f680 +thumb_func 0x801f6ec +thumb_func 0x801f794 +thumb_func 0x801f83c +thumb_func 0x801f878 +thumb_func 0x801f954 +thumb_func 0x801f980 +thumb_func 0x801f9c4 +thumb_func 0x801fa08 +thumb_func 0x801fa5c +thumb_func 0x801faac +thumb_func 0x801fafc +thumb_func 0x801fb40 +thumb_func 0x801fb98 +thumb_func 0x801fbe8 +thumb_func 0x801fbec +thumb_func 0x801fce4 +thumb_func 0x801fd0c +thumb_func 0x801fd30 +thumb_func 0x801fd40 +thumb_func 0x801febc +thumb_func 0x801fef0 +thumb_func 0x801ff14 +thumb_func 0x801ff40 +thumb_func 0x801ff88 +thumb_func 0x8020048 +thumb_func 0x8020090 +thumb_func 0x80200d8 +thumb_func 0x802012c +thumb_func 0x8020140 +thumb_func 0x802019c +thumb_func 0x8020254 +thumb_func 0x80202a0 +thumb_func 0x80202d0 +thumb_func 0x8020320 +thumb_func 0x802039c +thumb_func 0x80203c0 +thumb_func 0x80203ec +thumb_func 0x8020404 +thumb_func 0x802045c +thumb_func 0x802048c +thumb_func 0x80204dc +thumb_func 0x8020534 +thumb_func 0x80205ac +thumb_func 0x80205ec +thumb_func 0x8020604 +thumb_func 0x8020638 +thumb_func 0x8020658 +thumb_func 0x80206c4 +thumb_func 0x80206f8 +thumb_func 0x8020734 +thumb_func 0x8020780 +thumb_func 0x80207d4 +thumb_func 0x802080c +thumb_func 0x8020838 +thumb_func 0x8020898 +thumb_func 0x8020918 +thumb_func 0x8020924 +thumb_func 0x8020988 +thumb_func 0x8020aa4 +thumb_func 0x8020b38 +thumb_func 0x8020b58 +thumb_func 0x8020b68 +thumb_func 0x8020b74 +thumb_func 0x8020c90 +thumb_func 0x8020ca4 +thumb_func 0x8020cbc +thumb_func 0x8020ce0 +thumb_func 0x8020d74 +thumb_func 0x8021038 +thumb_func 0x802117c +thumb_func 0x80211b4 +thumb_func 0x80211d4 +thumb_func 0x8021338 +thumb_func 0x80213d8 +thumb_func 0x8021410 +thumb_func 0x8021604 +thumb_func 0x8021674 +thumb_func 0x80216f8 +thumb_func 0x8021758 +thumb_func 0x8021abc +thumb_func 0x8021ddc +thumb_func 0x8021f9c +thumb_func 0x8021fc0 +thumb_func 0x8022230 +thumb_func 0x8022284 +thumb_func 0x80222b4 +thumb_func 0x80222e8 +thumb_func 0x8022360 +thumb_func 0x8022434 +thumb_func 0x8022494 +thumb_func 0x80226c4 +thumb_func 0x8022784 +thumb_func 0x80227b0 +thumb_func 0x80227f8 +thumb_func 0x802288c +thumb_func 0x8022950 +thumb_func 0x80229bc +thumb_func 0x8022a14 +thumb_func 0x8022a78 +thumb_func 0x8022b80 +thumb_func 0x8022ba0 +thumb_func 0x8022bc0 +thumb_func 0x8022c10 +thumb_func 0x8022c68 +thumb_func 0x8022c80 +thumb_func 0x8022ddc +thumb_func 0x8022f24 +thumb_func 0x8023058 +thumb_func 0x8023108 +thumb_func 0x80232e0 +thumb_func 0x8023444 +thumb_func 0x80235ec +thumb_func 0x8023684 +thumb_func 0x802372c +thumb_func 0x80237c4 +thumb_func 0x8023954 +thumb_func 0x8023a40 +thumb_func 0x8023e10 +thumb_func 0x8023efc +thumb_func 0x8023ff0 +thumb_func 0x80240a8 +thumb_func 0x8024184 +thumb_func 0x802420c +thumb_func 0x80242d0 +thumb_func 0x8024330 +thumb_func 0x8024340 +thumb_func 0x80243d0 +thumb_func 0x8024410 +thumb_func 0x8024434 +thumb_func 0x8024448 +thumb_func 0x802445c +thumb_func 0x8024478 +thumb_func 0x80244a0 +thumb_func 0x80244cc +thumb_func 0x802450c +thumb_func 0x8024548 +thumb_func 0x8024588 +thumb_func 0x80245a0 +thumb_func 0x80245f8 +thumb_func 0x8024654 +thumb_func 0x8024678 +thumb_func 0x80246e0 +thumb_func 0x8024704 +thumb_func 0x80247e4 +thumb_func 0x80247f8 +thumb_func 0x8024990 +thumb_func 0x8024b14 +thumb_func 0x8024b2c +thumb_func 0x8024b4c +thumb_func 0x8024b64 +thumb_func 0x8024b84 +thumb_func 0x8024bc8 +thumb_func 0x8024c00 +thumb_func 0x8024cd8 +thumb_func 0x8024d00 +thumb_func 0x8024dc4 +thumb_func 0x8024e9c +thumb_func 0x8024f20 +thumb_func 0x8024f38 +thumb_func 0x8024f60 +thumb_func 0x8024ff8 +thumb_func 0x80250ec +thumb_func 0x8025238 +thumb_func 0x802540c +thumb_func 0x8025474 +thumb_func 0x8025520 +thumb_func 0x8025664 +thumb_func 0x80256d8 +thumb_func 0x80257c4 +thumb_func 0x80259d4 +thumb_func 0x8025acc +thumb_func 0x8025b18 +thumb_func 0x8025bd4 +thumb_func 0x8025ca0 +thumb_func 0x8025d10 +thumb_func 0x8025e0c +thumb_func 0x8025f94 +thumb_func 0x8025fac +thumb_func 0x8025fc0 +thumb_func 0x8025fd4 +thumb_func 0x8025fe4 +thumb_func 0x8026008 +thumb_func 0x802602c +thumb_func 0x8026088 +thumb_func 0x80260ec +thumb_func 0x80263fc +thumb_func 0x80264e4 +thumb_func 0x8026748 +thumb_func 0x8026848 +thumb_func 0x8026888 +thumb_func 0x80268b4 +thumb_func 0x80268e8 +thumb_func 0x802691c +thumb_func 0x8026978 +thumb_func 0x80269e8 +thumb_func 0x8026a10 +thumb_func 0x8026a50 +thumb_func 0x8026adc +thumb_func 0x8026b4c +thumb_func 0x8026b70 +thumb_func 0x8026c30 +thumb_func 0x8026cac +thumb_func 0x8026cdc +thumb_func 0x8026ff4 +thumb_func 0x8027064 +thumb_func 0x80270a8 +thumb_func 0x80271b0 +thumb_func 0x802721c +thumb_func 0x802725c +thumb_func 0x80272d8 +thumb_func 0x8027314 +thumb_func 0x80273c8 +thumb_func 0x80273ec +thumb_func 0x8027410 +thumb_func 0x8027420 +thumb_func 0x8027460 +thumb_func 0x8027480 +thumb_func 0x8027508 +thumb_func 0x802754c +thumb_func 0x8027590 +thumb_func 0x802760c +thumb_func 0x80276fc +thumb_func 0x802771c +thumb_func 0x8027788 +thumb_func 0x80277e8 +thumb_func 0x80277f8 +thumb_func 0x8027808 +thumb_func 0x802781c +thumb_func 0x802786c +thumb_func 0x802788c +thumb_func 0x802792c +thumb_func 0x8027a4c +thumb_func 0x8027a64 +thumb_func 0x8027afc +thumb_func 0x8027b28 +thumb_func 0x8027b5c +thumb_func 0x8027e90 +thumb_func 0x8028018 +thumb_func 0x8028044 +thumb_func 0x802807c +thumb_func 0x80280a0 +thumb_func 0x80280d4 +thumb_func 0x8028134 +thumb_func 0x80281d4 +thumb_func 0x80281f8 +thumb_func 0x8028230 +thumb_func 0x8028268 +thumb_func 0x80282d8 +thumb_func 0x8028340 +thumb_func 0x8028380 +thumb_func 0x80283b8 +thumb_func 0x80283e0 +thumb_func 0x802840c nullsub_33 +thumb_func 0x8028410 +thumb_func 0x8028460 +thumb_func 0x8028510 +thumb_func 0x8028554 +thumb_func 0x8028600 +thumb_func 0x8028714 +thumb_func 0x8028760 +thumb_func 0x80287b4 +thumb_func 0x80288ac +thumb_func 0x8028924 +thumb_func 0x802895c +thumb_func 0x80289a8 +thumb_func 0x80289d0 +thumb_func 0x80289fc +thumb_func 0x8028a20 +thumb_func 0x8028a70 +thumb_func 0x8028b28 +thumb_func 0x8028b78 +thumb_func 0x8028bb0 +thumb_func 0x8028bf4 +thumb_func 0x8028c40 +thumb_func 0x8028cf8 +thumb_func 0x8028d24 +thumb_func 0x8028d58 +thumb_func 0x8028d68 +thumb_func 0x8028da0 +thumb_func 0x8028ea0 +thumb_func 0x8028fa0 +thumb_func 0x8029000 +thumb_func 0x802900c +thumb_func 0x8029040 +thumb_func 0x8029064 +thumb_func 0x802916c +thumb_func 0x80293d4 +thumb_func 0x80295a4 +thumb_func 0x8029d28 +thumb_func 0x802a074 +thumb_func 0x802a148 +thumb_func 0x802a228 +thumb_func 0x802a27c +thumb_func 0x802a3f0 +thumb_func 0x802a41c nullsub_341 +thumb_func 0x802a420 +thumb_func 0x802a450 +thumb_func 0x802a464 +thumb_func 0x802a488 +thumb_func 0x802a49c +thumb_func 0x802a5dc +thumb_func 0x802a69c +thumb_func 0x802a73c +thumb_func 0x802a754 +thumb_func 0x802a788 +thumb_func 0x802a814 +thumb_func 0x802a88c +thumb_func 0x802a8f4 +thumb_func 0x802a920 +thumb_func 0x802a94c +thumb_func 0x802a960 +thumb_func 0x802a978 +thumb_func 0x802a994 +thumb_func 0x802ab08 +thumb_func 0x802ab44 +thumb_func 0x802ab98 +thumb_func 0x802ac74 +thumb_func 0x802acfc +thumb_func 0x802ad38 +thumb_func 0x802ad6c +thumb_func 0x802ae88 +thumb_func 0x802aef0 +thumb_func 0x802af3c +thumb_func 0x802af90 +thumb_func 0x802afc8 +thumb_func 0x802b010 +thumb_func 0x802b05c +thumb_func 0x802b0a8 +thumb_func 0x802b0c8 +thumb_func 0x802b164 +thumb_func 0x802b1c0 +thumb_func 0x802b25c +thumb_func 0x802b2bc +thumb_func 0x802b31c +thumb_func 0x802b358 +thumb_func 0x802b3ac +thumb_func 0x802b3f8 +thumb_func 0x802b414 +thumb_func 0x802b4d4 +thumb_func 0x802b5c0 +thumb_func 0x802b658 +thumb_func 0x802b74c +thumb_func 0x802b878 +thumb_func 0x802b954 +thumb_func 0x802ba24 +thumb_func 0x802ba78 +thumb_func 0x802bb54 +thumb_func 0x802bb74 +thumb_func 0x802bb94 +thumb_func 0x802bbd8 +thumb_func 0x802bc3c +thumb_func 0x802bc70 +thumb_func 0x802bd8c +thumb_func 0x802bdac +thumb_func 0x802bdd0 +thumb_func 0x802bddc +thumb_func 0x802be08 +thumb_func 0x802be24 +thumb_func 0x802be58 +thumb_func 0x802be80 +thumb_func 0x802beb0 +thumb_func 0x802bed0 +thumb_func 0x802bf34 +thumb_func 0x802bf54 +thumb_func 0x802bf64 +thumb_func 0x802bf74 +thumb_func 0x802c08c +thumb_func 0x802c130 +thumb_func 0x802c22c +thumb_func 0x802c2d0 +thumb_func 0x802c30c +thumb_func 0x802c344 +thumb_func 0x802c37c +thumb_func 0x802c3a4 +thumb_func 0x802c400 +thumb_func 0x802c430 +thumb_func 0x802c474 +thumb_func 0x802c484 +thumb_func 0x802c494 +thumb_func 0x802c4b0 +thumb_func 0x802c4d4 +thumb_func 0x802c4fc +thumb_func 0x802c50c +thumb_func 0x802c52c +thumb_func 0x802c574 +thumb_func 0x802c5a0 +thumb_func 0x802c5b0 +thumb_func 0x802c5bc +thumb_func 0x802c5dc +thumb_func 0x802c5fc +thumb_func 0x802c614 +thumb_func 0x802c668 +thumb_func 0x802c6b0 +thumb_func 0x802c6c8 +thumb_func 0x802c808 +thumb_func 0x802c870 +thumb_func 0x802c8e4 +thumb_func 0x802c90c +thumb_func 0x802c934 +thumb_func 0x802c97c +thumb_func 0x802c9a4 +thumb_func 0x802c9fc +thumb_func 0x802ca30 +thumb_func 0x802ca64 +thumb_func 0x802ca8c +thumb_func 0x802cac8 +thumb_func 0x802cb3c +thumb_func 0x802cb90 +thumb_func 0x802cc44 +thumb_func 0x802cd38 +thumb_func 0x802cd5c +thumb_func 0x802cd68 +thumb_func 0x802cda0 +thumb_func 0x802cdb0 +thumb_func 0x802cdbc +thumb_func 0x802cde4 +thumb_func 0x802cdfc +thumb_func 0x802ce20 +thumb_func 0x802ce44 +thumb_func 0x802cfd8 +thumb_func 0x802d044 +thumb_func 0x802d0b0 +thumb_func 0x802d13c +thumb_func 0x802d1e8 +thumb_func 0x802d28c +thumb_func 0x802d2d8 +thumb_func 0x802d37c +thumb_func 0x802d420 +thumb_func 0x802d458 +thumb_func 0x802d47c +thumb_func 0x802d4dc +thumb_func 0x802d574 +thumb_func 0x802d5ec +thumb_func 0x802d664 +thumb_func 0x802d704 +thumb_func 0x802d734 +thumb_func 0x802d77c +thumb_func 0x802d78c +thumb_func 0x802d808 +thumb_func 0x802d884 +thumb_func 0x802d8f0 +thumb_func 0x802d978 +thumb_func 0x802d994 +thumb_func 0x802d9c4 +thumb_func 0x802da00 +thumb_func 0x802da5c +thumb_func 0x802da6c +thumb_func 0x802da80 +thumb_func 0x802da98 +thumb_func 0x802dab0 +thumb_func 0x802dac4 +thumb_func 0x802dad8 +thumb_func 0x802daec +thumb_func 0x802db00 +thumb_func 0x802db14 +thumb_func 0x802dbd0 +thumb_func 0x802dc68 +thumb_func 0x802dccc +thumb_func 0x802dd04 +thumb_func 0x802dd50 +thumb_func 0x802dd88 +thumb_func 0x802dda4 +thumb_func 0x802ddc8 +thumb_func 0x802de18 +thumb_func 0x802de30 +thumb_func 0x802deb4 +thumb_func 0x802df2c +thumb_func 0x802df5c +thumb_func 0x802dfc8 +thumb_func 0x802e024 +thumb_func 0x802e034 +thumb_func 0x802e04c +thumb_func 0x802e0a0 +thumb_func 0x802e0bc +thumb_func 0x802e0dc +thumb_func 0x802e17c +thumb_func 0x802e284 +thumb_func 0x802e2a0 +thumb_func 0x802e2ec +thumb_func 0x802e320 +thumb_func 0x802e334 +thumb_func 0x802e3c0 +thumb_func 0x802e4a0 +thumb_func 0x802e52c +thumb_func 0x802e59c +thumb_func 0x802e6b4 +thumb_func 0x802e714 +thumb_func 0x802e788 +thumb_func 0x802e7e8 +thumb_func 0x802e7fc +thumb_func 0x802e8fc +thumb_func 0x802ea30 +thumb_func 0x802ea94 +thumb_func 0x802eac0 +thumb_func 0x802ebb4 +thumb_func 0x802ec0c +thumb_func 0x802ec60 +thumb_func 0x802ed30 +thumb_func 0x802ed48 +thumb_func 0x802ed5c +thumb_func 0x802ed84 +thumb_func 0x802edb8 +thumb_func 0x802ee44 +thumb_func 0x802ee80 +thumb_func 0x802eee0 +thumb_func 0x802eeec +thumb_func 0x802ef1c +thumb_func 0x802ef34 +thumb_func 0x802ef4c +thumb_func 0x802ef60 +thumb_func 0x802f05c +thumb_func 0x802f070 +thumb_func 0x802f0a8 +thumb_func 0x802f0e0 +thumb_func 0x802f0f8 +thumb_func 0x802f130 +thumb_func 0x802f168 +thumb_func 0x802f1ec +thumb_func 0x802f218 +thumb_func 0x802f22c +thumb_func 0x802f260 +thumb_func 0x802f2c8 +thumb_func 0x802f300 +thumb_func 0x802f314 +thumb_func 0x802f32c +thumb_func 0x802f340 +thumb_func 0x802f34c +thumb_func 0x802f358 +thumb_func 0x802f53c +thumb_func 0x802f718 +thumb_func 0x802f76c +thumb_func 0x802f80c +thumb_func 0x802f860 +thumb_func 0x802fdb0 +thumb_func 0x802fde0 +thumb_func 0x802ff4c +thumb_func 0x802ff7c +thumb_func 0x8030284 +thumb_func 0x80302e4 +thumb_func 0x80303d8 +thumb_func 0x80304f0 +thumb_func 0x803058c +thumb_func 0x80305f0 +thumb_func 0x8030668 +thumb_func 0x803070c +thumb_func 0x803076c +thumb_func 0x80307b0 +thumb_func 0x8030854 +thumb_func 0x803090c +thumb_func 0x8030958 +thumb_func 0x80309d0 +thumb_func 0x8030a14 +thumb_func 0x8030ac4 +thumb_func 0x8030b08 +thumb_func 0x8030b48 +thumb_func 0x8030b78 +thumb_func 0x8030c14 +thumb_func 0x8030cbc +thumb_func 0x8030d14 +thumb_func 0x8030d54 +thumb_func 0x8030d80 +thumb_func 0x8030dd0 +thumb_func 0x8030e44 +thumb_func 0x8030e84 +thumb_func 0x8030ec8 +thumb_func 0x8030f60 +thumb_func 0x8030f98 +thumb_func 0x803107c +thumb_func 0x8031124 +thumb_func 0x8031204 +thumb_func 0x80312c0 +thumb_func 0x80312fc +thumb_func 0x8031370 +thumb_func 0x80313b8 +thumb_func 0x8031614 nullsub_35 +thumb_func 0x8031618 +thumb_func 0x8031634 +thumb_func 0x803166c +thumb_func 0x803179c +thumb_func 0x803180c +thumb_func 0x803187c +thumb_func 0x80318ec +thumb_func 0x803195c +thumb_func 0x80319c8 +thumb_func 0x8031a08 +thumb_func 0x8031a74 +thumb_func 0x8031ab4 +thumb_func 0x8031b20 +thumb_func 0x8031b30 +thumb_func 0x8031b84 +thumb_func 0x8031be8 +thumb_func 0x8031c00 +thumb_func 0x8031c4c +thumb_func 0x8031cb0 +thumb_func 0x8031d28 +thumb_func 0x8031d9c +thumb_func 0x8031de4 +thumb_func 0x8031f48 +thumb_func 0x8031f90 +thumb_func 0x8031fd8 +thumb_func 0x8032010 +thumb_func 0x8032098 +thumb_func 0x80320c4 +thumb_func 0x803213c +thumb_func 0x8032174 +thumb_func 0x80324b4 +thumb_func 0x80324ec +thumb_func 0x8032534 +thumb_func 0x8032600 +thumb_func 0x80326bc +thumb_func 0x8032b58 +thumb_func 0x8032ee8 +thumb_func 0x8033050 +thumb_func 0x80330dc +thumb_func 0x803318c +thumb_func 0x803330c +thumb_func 0x80334e0 +thumb_func 0x80335f4 +thumb_func 0x803374c +thumb_func 0x8033770 +thumb_func 0x8033798 +thumb_func 0x80337d8 +thumb_func 0x8033818 +thumb_func 0x8033838 +thumb_func 0x803385c +thumb_func 0x803387c +thumb_func 0x803389c +thumb_func 0x80338bc +thumb_func 0x80338dc +thumb_func 0x80338fc +thumb_func 0x803391c +thumb_func 0x803393c +thumb_func 0x803395c +thumb_func 0x80339a4 +thumb_func 0x8033a7c +thumb_func 0x8033b74 +thumb_func 0x8033c3c +thumb_func 0x8033c68 +thumb_func 0x8033c88 +thumb_func 0x8033cc4 +thumb_func 0x8033cf8 +thumb_func 0x8033d34 +thumb_func 0x8033d54 +thumb_func 0x8033d8c +thumb_func 0x8033dc0 +thumb_func 0x8033e14 +thumb_func 0x8033e50 +thumb_func 0x8033e70 +thumb_func 0x8033eb8 +thumb_func 0x8033f20 +thumb_func 0x8033f68 +thumb_func 0x8033fb0 +thumb_func 0x8033fdc +thumb_func 0x8034014 +thumb_func 0x8034040 +thumb_func 0x803406c +thumb_func 0x803408c +thumb_func 0x80340ac +thumb_func 0x80340cc +thumb_func 0x80340ec +thumb_func 0x803410c +thumb_func 0x803412c +thumb_func 0x8034158 +thumb_func 0x8034184 +thumb_func 0x80341a4 +thumb_func 0x80341c4 +thumb_func 0x80341e4 +thumb_func 0x803422c +thumb_func 0x803424c +thumb_func 0x803426c +thumb_func 0x8034290 +thumb_func 0x80342bc +thumb_func 0x8034300 +thumb_func 0x8034320 +thumb_func 0x8034370 +thumb_func 0x803437c +thumb_func 0x8034388 +thumb_func 0x80343bc +thumb_func 0x80343e4 +thumb_func 0x8034418 +thumb_func 0x8034448 +thumb_func 0x8034480 +thumb_func 0x80344ac +thumb_func 0x8034568 +thumb_func 0x8034574 +thumb_func 0x80347cc +thumb_func 0x80347e0 +thumb_func 0x803481c +thumb_func 0x8034860 +thumb_func 0x8034898 +thumb_func 0x8034954 +thumb_func 0x8034980 +thumb_func 0x80349a8 +thumb_func 0x80349d4 +thumb_func 0x8034a88 +thumb_func 0x8034aac +thumb_func 0x8034b20 +thumb_func 0x8034b6c +thumb_func 0x8034d54 +thumb_func 0x8034e9c +thumb_func 0x8034f08 +thumb_func 0x8034fbc +thumb_func 0x8035118 +thumb_func 0x8035234 +thumb_func 0x80352d4 +thumb_func 0x8035370 +thumb_func 0x80353c8 +thumb_func 0x803540c +thumb_func 0x8035450 +thumb_func 0x8035460 +thumb_func 0x80354a0 +thumb_func 0x80354b0 +thumb_func 0x8035528 +thumb_func 0x8035564 +thumb_func 0x80355c8 +thumb_func 0x80358f8 +thumb_func 0x8035938 +thumb_func 0x8035aa0 +thumb_func 0x8035bc8 +thumb_func 0x8035fb8 +thumb_func 0x8036224 +thumb_func 0x80365b4 +thumb_func 0x8036628 +thumb_func 0x80368b0 +thumb_func 0x8036998 +thumb_func 0x8036a5c +thumb_func 0x8036d0c +thumb_func 0x8036e00 +thumb_func 0x8037274 +thumb_func 0x8037770 +thumb_func 0x803782c +thumb_func 0x8037a7c +thumb_func 0x8037b44 +thumb_func 0x80380fc +thumb_func 0x8038178 +thumb_func 0x80381c0 +thumb_func 0x8038204 +thumb_func 0x8038214 +thumb_func 0x80382c4 +thumb_func 0x80386b8 +thumb_func 0x80386dc +thumb_func 0x80387b4 nullsub_34 +thumb_func 0x80387b8 +thumb_func 0x8038828 +thumb_func 0x8038848 +thumb_func 0x8038a18 +thumb_func 0x8038bc8 +thumb_func 0x8038be8 +thumb_func 0x8038e94 +thumb_func 0x8038f5c +thumb_func 0x8039030 +thumb_func 0x8039050 +thumb_func 0x8039420 +thumb_func 0x8039450 +thumb_func 0x803947c +thumb_func 0x80394d8 +thumb_func 0x80394fc nullsub_37 +thumb_func 0x8039500 +thumb_func 0x8039514 +thumb_func 0x8039578 +thumb_func 0x803968c +thumb_func 0x803971c +thumb_func 0x8039738 +thumb_func 0x8039770 +thumb_func 0x803979c +thumb_func 0x80397f8 +thumb_func 0x8039804 +thumb_func 0x8039834 +thumb_func 0x8039840 nullsub_38 +thumb_func 0x8039844 +thumb_func 0x803986c +thumb_func 0x803998c +thumb_func 0x8039a3c +thumb_func 0x8039a88 +thumb_func 0x8039aa4 +thumb_func 0x8039ac8 +thumb_func 0x8039ae0 +thumb_func 0x8039b0c nullsub_39 +thumb_func 0x8039b10 +thumb_func 0x8039b34 +thumb_func 0x8039b40 +thumb_func 0x8039b84 +thumb_func 0x8039ec8 +thumb_func 0x803a3a0 +thumb_func 0x803a804 +thumb_func 0x803a878 +thumb_func 0x803a8c8 +thumb_func 0x803abc4 +thumb_func 0x803ad64 +thumb_func 0x803ad9c +thumb_func 0x803adc4 +thumb_func 0x803ae20 +thumb_func 0x803aea0 +thumb_func 0x803af58 +thumb_func 0x803aff0 +thumb_func 0x803b010 +thumb_func 0x803b070 +thumb_func 0x803b10c +thumb_func 0x803b1dc +thumb_func 0x803b26c +thumb_func 0x803b548 +thumb_func 0x803b600 +thumb_func 0x803b7cc +thumb_func 0x803b9e4 +thumb_func 0x803bab8 +thumb_func 0x803c9fc +thumb_func 0x803ca3c +thumb_func 0x803cb20 +thumb_func 0x803cb54 +thumb_func 0x803cf2c +thumb_func 0x803d1c4 +thumb_func 0x803d2e4 +thumb_func 0x803d334 +thumb_func 0x803d45c +thumb_func 0x803d488 +thumb_func 0x803d504 +thumb_func 0x803d700 +thumb_func 0x803d7e0 +thumb_func 0x803d8c4 +thumb_func 0x803d918 +thumb_func 0x803da80 +thumb_func 0x803daf4 +thumb_func 0x803db88 +thumb_func 0x803dbb0 +thumb_func 0x803dc58 +thumb_func 0x803dccc +thumb_func 0x803dcf8 +thumb_func 0x803e4a8 +thumb_func 0x803e54c +thumb_func 0x803e860 +thumb_func 0x803ea88 +thumb_func 0x803ebe8 +thumb_func 0x803ec30 +thumb_func 0x803ec90 +thumb_func 0x803ed60 +thumb_func 0x803ee30 +thumb_func 0x803ee6c +thumb_func 0x803eee4 +thumb_func 0x803ef0c +thumb_func 0x803ef40 +thumb_func 0x803f00c +thumb_func 0x803f0c0 +thumb_func 0x803f188 +thumb_func 0x803f2bc +thumb_func 0x803f3d0 +thumb_func 0x803f440 +thumb_func 0x803f490 +thumb_func 0x803f4e0 +thumb_func 0x803f54c +thumb_func 0x803f5a4 +thumb_func 0x803f5c8 +thumb_func 0x803f62c +thumb_func 0x803f6b0 +thumb_func 0x803f718 +thumb_func 0x803f73c +thumb_func 0x803f764 +thumb_func 0x803f78c +thumb_func 0x803fb0c +thumb_func 0x803fd08 +thumb_func 0x803fd70 +thumb_func 0x803fe10 +thumb_func 0x8040564 +thumb_func 0x8040fa4 +thumb_func 0x8041368 +thumb_func 0x804165c +thumb_func 0x80416ac +thumb_func 0x8042034 +thumb_func 0x80422fc +thumb_func 0x8042468 +thumb_func 0x8044098 +thumb_func 0x80440d8 +thumb_func 0x804411c +thumb_func 0x80454a8 +thumb_func 0x80454f4 +thumb_func 0x8045520 +thumb_func 0x8045884 +thumb_func 0x80458fc +thumb_func 0x8045c3c +thumb_func 0x8045fec +thumb_func 0x804607c +thumb_func 0x80460ec +thumb_func 0x8046158 +thumb_func 0x80462a0 +thumb_func 0x8046628 +thumb_func 0x804667c +thumb_func 0x8046858 +thumb_func 0x80469cc +thumb_func 0x8046abc +thumb_func 0x8046ba0 +thumb_func 0x8046c78 +thumb_func 0x8046ee8 +thumb_func 0x804716c +thumb_func 0x8047224 +thumb_func 0x80473fc +thumb_func 0x80474f8 +thumb_func 0x8047534 +thumb_func 0x80476e4 +thumb_func 0x8047870 +thumb_func 0x8047a08 +thumb_func 0x8047a28 +thumb_func 0x8047b04 +thumb_func 0x8047efc +thumb_func 0x8047f50 +thumb_func 0x8048020 +thumb_func 0x80481d0 +thumb_func 0x8048210 +thumb_func 0x8048254 +thumb_func 0x80482b0 +thumb_func 0x8048304 +thumb_func 0x8048368 +thumb_func 0x80483a0 +thumb_func 0x8049614 +thumb_func 0x8049700 +thumb_func 0x8049710 +thumb_func 0x8049720 +thumb_func 0x804979c +thumb_func 0x8049a80 +thumb_func 0x8049abc +thumb_func 0x8049b44 +thumb_func 0x8049bbc +thumb_func 0x8049c34 +thumb_func 0x8049d1c +thumb_func 0x8049d94 +thumb_func 0x8049e8c +thumb_func 0x8049f10 +thumb_func 0x8049f6c +thumb_func 0x804a900 +thumb_func 0x804ab60 +thumb_func 0x804aba0 +thumb_func 0x804abb8 +thumb_func 0x804abd0 +thumb_func 0x804ac18 +thumb_func 0x804ac38 +thumb_func 0x804acd8 +thumb_func 0x804ad80 +thumb_func 0x804ae34 +thumb_func 0x804aebc +thumb_func 0x804af40 +thumb_func 0x804af68 +thumb_func 0x804af94 +thumb_func 0x804afc0 +thumb_func 0x804b014 +thumb_func 0x804b080 +thumb_func 0x804b0ac +thumb_func 0x804b0e4 +thumb_func 0x804b128 +thumb_func 0x804b154 +thumb_func 0x804b18c +thumb_func 0x804b1d0 +thumb_func 0x804b210 +thumb_func 0x804b230 +thumb_func 0x804b288 +thumb_func 0x804b294 +thumb_func 0x804b2d4 +thumb_func 0x804b2ec +thumb_func 0x804b328 +thumb_func 0x804b358 +thumb_func 0x804b3b4 +thumb_func 0x804b400 +thumb_func 0x804b41c +thumb_func 0x804b4e0 +thumb_func 0x804b5ac +thumb_func 0x804b608 +thumb_func 0x804b7fc +thumb_func 0x804c224 +thumb_func 0x804c474 +thumb_func 0x804c4c4 +thumb_func 0x804c534 +thumb_func 0x804c718 +thumb_func 0x804c7e0 +thumb_func 0x804cb40 +thumb_func 0x804cbb8 +thumb_func 0x804d450 +thumb_func 0x804d6dc +thumb_func 0x804d9d8 +thumb_func 0x804da08 +thumb_func 0x804da44 +thumb_func 0x804da80 +thumb_func 0x804dab0 +thumb_func 0x804dae8 +thumb_func 0x804db1c +thumb_func 0x804dc68 +thumb_func 0x804dff8 +thumb_func 0x804e138 +thumb_func 0x804e1c8 +thumb_func 0x804e2f0 +thumb_func 0x804e37c +thumb_func 0x804e430 +thumb_func 0x804e480 +thumb_func 0x804e4b0 +thumb_func 0x804e578 +thumb_func 0x804e5a8 +thumb_func 0x804e60c +thumb_func 0x804e69c +thumb_func 0x804e744 +thumb_func 0x804e7d8 +thumb_func 0x804e8bc +thumb_func 0x804e8f4 +thumb_func 0x804ea70 +thumb_func 0x804eae0 +thumb_func 0x804eb1c +thumb_func 0x804ed18 +thumb_func 0x804ed5c +thumb_func 0x804ed94 +thumb_func 0x804ede4 +thumb_func 0x804ee38 +thumb_func 0x804ef50 +thumb_func 0x804ef90 +thumb_func 0x804f05c +thumb_func 0x804f0a4 +thumb_func 0x804f0e0 +thumb_func 0x804f0f8 +thumb_func 0x804f118 +thumb_func 0x804f14c +thumb_func 0x804f180 +thumb_func 0x804f1a8 +thumb_func 0x804f1c0 +thumb_func 0x804f204 +thumb_func 0x804f2b0 +thumb_func 0x804f360 +thumb_func 0x804f3b8 +thumb_func 0x804f998 +thumb_func 0x804fad4 +thumb_func 0x804fbf0 +thumb_func 0x804fc50 +thumb_func 0x804fcf4 +thumb_func 0x804fd70 +thumb_func 0x804fed8 +thumb_func 0x804ff2c +thumb_func 0x804fff8 +thumb_func 0x80500b8 +thumb_func 0x8050138 +thumb_func 0x8050208 +thumb_func 0x8050250 +thumb_func 0x8050260 +thumb_func 0x80502fc +thumb_func 0x8050378 +thumb_func 0x80503f4 +thumb_func 0x8050514 +thumb_func 0x80505f8 +thumb_func 0x805062c +thumb_func 0x8050ab0 +thumb_func 0x8050afc +thumb_func 0x8050b50 +thumb_func 0x8050bc0 +thumb_func 0x8050c00 +thumb_func 0x8050c4c +thumb_func 0x8050c74 +thumb_func 0x8050d3c +thumb_func 0x8051034 +thumb_func 0x80511d8 +thumb_func 0x8051274 +thumb_func 0x8051340 +thumb_func 0x8051694 +thumb_func 0x80516d0 +thumb_func 0x8051728 +thumb_func 0x80518a0 +thumb_func 0x8051a58 +thumb_func 0x8051b68 +thumb_func 0x8051c10 +thumb_func 0x8051c6c +thumb_func 0x8051e0c +thumb_func 0x8051ec8 +thumb_func 0x8051f10 +thumb_func 0x80520ec +thumb_func 0x8052194 +thumb_func 0x80521c4 +thumb_func 0x8052218 +thumb_func 0x8052310 +thumb_func 0x8052408 +thumb_func 0x805254c +thumb_func 0x8052680 +thumb_func 0x8052744 +thumb_func 0x8052944 +thumb_func 0x805299c +thumb_func 0x8052b58 +thumb_func 0x8052b94 +thumb_func 0x8052bbc +thumb_func 0x8052c28 +thumb_func 0x8052d60 +thumb_func 0x8052d90 +thumb_func 0x8052df0 +thumb_func 0x8052e08 +thumb_func 0x8052e70 +thumb_func 0x8053048 +thumb_func 0x805332c +thumb_func 0x80533b0 +thumb_func 0x805343c +thumb_func 0x805346c +thumb_func 0x8053524 +thumb_func 0x80536a0 +thumb_func 0x8053708 +thumb_func 0x80537bc +thumb_func 0x8053840 +thumb_func 0x805390c +thumb_func 0x80539b4 +thumb_func 0x8053ad8 +thumb_func 0x8053c6c +thumb_func 0x8053cc4 +thumb_func 0x8053d44 +thumb_func 0x8053d8c +thumb_func 0x8053ed8 +thumb_func 0x8053f08 +thumb_func 0x8054010 +thumb_func 0x8054134 +thumb_func 0x80541a8 +thumb_func 0x80542f4 +thumb_func 0x8054504 +thumb_func 0x8054588 +thumb_func 0x8054618 +thumb_func 0x8054658 +thumb_func 0x80546b0 +thumb_func 0x805474c +thumb_func 0x8054798 +thumb_func 0x80547fc +thumb_func 0x8054870 +thumb_func 0x80548f4 +thumb_func 0x805494c +thumb_func 0x80549a8 +thumb_func 0x8054a1c +thumb_func 0x8054ac4 +thumb_func 0x8054d58 +thumb_func 0x8054dd0 +thumb_func 0x8054ea4 +thumb_func 0x8054efc +thumb_func 0x8054f5c +thumb_func 0x8054fcc +thumb_func 0x8055038 +thumb_func 0x805509c +thumb_func 0x8055134 +thumb_func 0x805523c +thumb_func 0x8055294 +thumb_func 0x805532c +thumb_func 0x80554ac +thumb_func 0x8055530 +thumb_func 0x80555ac +thumb_func 0x8055688 +thumb_func 0x8055704 +thumb_func 0x8055758 +thumb_func 0x8055810 +thumb_func 0x8055a0c +thumb_func 0x8055a74 +thumb_func 0x8055ab4 +thumb_func 0x8055b6c +thumb_func 0x8055c24 +thumb_func 0x8055ccc +thumb_func 0x8055d7c +thumb_func 0x8055e40 +thumb_func 0x8055e94 +thumb_func 0x8055f10 +thumb_func 0x80562b8 +thumb_func 0x8056460 +thumb_func 0x80564dc +thumb_func 0x805664c +thumb_func 0x8056784 +thumb_func 0x80567bc +thumb_func 0x80567fc +thumb_func 0x8056a88 +thumb_func 0x8056ab8 +thumb_func 0x8056ae0 +thumb_func 0x8056aec +thumb_func 0x8056b08 +thumb_func 0x8056b38 +thumb_func 0x8056c38 +thumb_func 0x8056d04 +thumb_func 0x8056dec +thumb_func 0x8056e6c +thumb_func 0x8057068 nullsub_401 +thumb_func 0x805706c +thumb_func 0x805709c +thumb_func 0x8057114 +thumb_func 0x8057164 +thumb_func 0x8057198 +thumb_func 0x8057400 +thumb_func 0x8057434 +thumb_func 0x805780c +thumb_func 0x8057bcc +thumb_func 0x8057d48 +thumb_func 0x8058308 +thumb_func 0x80583c0 +thumb_func 0x8058454 +thumb_func 0x805848c +thumb_func 0x80584c4 +thumb_func 0x8058534 +thumb_func 0x805857c +thumb_func 0x8058750 +thumb_func 0x8058aec +thumb_func 0x8058bd0 +thumb_func 0x8058c3c +thumb_func 0x8058d10 +thumb_func 0x8058d40 +thumb_func 0x8058db0 +thumb_func 0x8058dc8 +thumb_func 0x8058f40 +thumb_func 0x8059010 +thumb_func 0x8059154 +thumb_func 0x80591b4 +thumb_func 0x805926c +thumb_func 0x80592b8 +thumb_func 0x8059354 +thumb_func 0x80593c4 +thumb_func 0x80593dc +thumb_func 0x8059438 +thumb_func 0x80594b4 +thumb_func 0x80594f0 +thumb_func 0x805952c +thumb_func 0x8059568 +thumb_func 0x80595e4 +thumb_func 0x80596bc +thumb_func 0x8059734 +thumb_func 0x805976c +thumb_func 0x80597e0 +thumb_func 0x805983c +thumb_func 0x8059884 +thumb_func 0x80598c8 +thumb_func 0x8059910 +thumb_func 0x805995c +thumb_func 0x805996c +thumb_func 0x805997c +thumb_func 0x80599ac +thumb_func 0x80599dc +thumb_func 0x8059a10 +thumb_func 0x8059a84 +thumb_func 0x805a230 +thumb_func 0x805a2b8 +thumb_func 0x805a310 +thumb_func 0x805ad0c +thumb_func 0x805ad80 +thumb_func 0x805ade8 +thumb_func 0x805ae74 +thumb_func 0x805aff0 +thumb_func 0x805b080 +thumb_func 0x805b10c +thumb_func 0x805b480 +thumb_func 0x805b614 +thumb_func 0x805b6d4 +thumb_func 0x805b7c0 +thumb_func 0x805b7e0 +thumb_func 0x805b834 +thumb_func 0x805b894 +thumb_func 0x805b8c4 +thumb_func 0x805ba18 +thumb_func 0x805bb9c +thumb_func 0x805bbfc +thumb_func 0x805bc20 +thumb_func 0x805bc60 +thumb_func 0x805bccc +thumb_func 0x805bd30 +thumb_func 0x805bd74 +thumb_func 0x805bdc4 +thumb_func 0x805be2c +thumb_func 0x805be64 +thumb_func 0x805bec8 +thumb_func 0x805c008 +thumb_func 0x805c02c +thumb_func 0x805c144 +thumb_func 0x805c1e0 +thumb_func 0x805c258 +thumb_func 0x805c2c0 +thumb_func 0x805c32c +thumb_func 0x805c338 +thumb_func 0x805c3ec +thumb_func 0x805c41c +thumb_func 0x805c428 +thumb_func 0x805c43c +thumb_func 0x805c450 +thumb_func 0x805c464 +thumb_func 0x805c478 +thumb_func 0x805c494 +thumb_func 0x805c4cc +thumb_func 0x805c4e4 +thumb_func 0x805c50c +thumb_func 0x805c57c +thumb_func 0x805c588 +thumb_func 0x805c5cc +thumb_func 0x805c628 +thumb_func 0x805c668 +thumb_func 0x805c69c +thumb_func 0x805c81c +thumb_func 0x805c884 +thumb_func 0x805c990 +thumb_func 0x805ca54 +thumb_func 0x805ca9c +thumb_func 0x805caec +thumb_func 0x805cb10 +thumb_func 0x805cb70 +thumb_func 0x805cbe4 +thumb_func 0x805cc48 +thumb_func 0x805ccb0 +thumb_func 0x805cd30 nullsub_41 +thumb_func 0x805cd34 +thumb_func 0x805cd74 +thumb_func 0x805cdb8 +thumb_func 0x805d0c4 +thumb_func 0x805d210 +thumb_func 0x805d330 +thumb_func 0x805d38c +thumb_func 0x805d3c8 +thumb_func 0x805d408 +thumb_func 0x805d424 +thumb_func 0x805d524 +thumb_func 0x805d664 +thumb_func 0x805d674 +thumb_func 0x805d6bc +thumb_func 0x805d6e0 +thumb_func 0x805d750 +thumb_func 0x805d760 +thumb_func 0x805d7a8 +thumb_func 0x805d7ac +thumb_func 0x805d828 +thumb_func 0x805d998 +thumb_func 0x805db4c nullsub_40 +thumb_func 0x805db50 nullsub_9 +thumb_func 0x805db54 +thumb_func 0x805dba0 +thumb_func 0x805dbfc nullsub_8 +thumb_func 0x805dc00 +thumb_func 0x805dc18 +thumb_func 0x805dca8 +thumb_func 0x805ddd4 +thumb_func 0x805ddf4 +thumb_func 0x805df6c +thumb_func 0x805df94 +thumb_func 0x805dfb0 +thumb_func 0x805e024 +thumb_func 0x805e064 +thumb_func 0x805e3f8 +thumb_func 0x805e510 +thumb_func 0x805e568 +thumb_func 0x805e590 +thumb_func 0x805e5ac +thumb_func 0x805e67c +thumb_func 0x805e6d0 +thumb_func 0x805e704 +thumb_func 0x805e7b8 +thumb_func 0x805e8a0 +thumb_func 0x805e98c +thumb_func 0x805ea64 +thumb_func 0x805ea70 +thumb_func 0x805eafc +thumb_func 0x805eb30 +thumb_func 0x805eba0 +thumb_func 0x805ebd8 +thumb_func 0x805ecb0 +thumb_func 0x805ed2c +thumb_func 0x805ed7c nullsub_18 +thumb_func 0x805ed80 +thumb_func 0x805ed9c +thumb_func 0x805edec +thumb_func 0x805ee24 +thumb_func 0x805ee5c +thumb_func 0x805eec4 +thumb_func 0x805ef0c +thumb_func 0x805f14c +thumb_func 0x805f580 +thumb_func 0x805f65c +thumb_func 0x805f6b0 +thumb_func 0x805f6f4 +thumb_func 0x805f768 +thumb_func 0x805f780 +thumb_func 0x805f7fc +thumb_func 0x805f86c +thumb_func 0x805f8ec +thumb_func 0x805f9dc +thumb_func 0x805faa4 +thumb_func 0x805fad4 +thumb_func 0x805fb04 +thumb_func 0x805fb7c +thumb_func 0x805fbf0 +thumb_func 0x806039c +thumb_func 0x8060424 +thumb_func 0x806047c +thumb_func 0x8060d9c +thumb_func 0x8060e10 +thumb_func 0x8060f68 +thumb_func 0x8060fc8 +thumb_func 0x8061158 +thumb_func 0x80611f0 +thumb_func 0x806127c +thumb_func 0x80614c0 +thumb_func 0x80616d4 +thumb_func 0x8061780 +thumb_func 0x806182c +thumb_func 0x8061838 +thumb_func 0x8061844 +thumb_func 0x8061850 +thumb_func 0x806185c +thumb_func 0x8061994 +thumb_func 0x8061b18 +thumb_func 0x8061b74 +thumb_func 0x8061b80 +thumb_func 0x8061b90 +thumb_func 0x8061b9c +thumb_func 0x8061d40 +thumb_func 0x8061d6c +thumb_func 0x8061e6c +thumb_func 0x8061e78 +thumb_func 0x8061f68 +thumb_func 0x8061f74 +thumb_func 0x8061fec +thumb_func 0x8062054 +thumb_func 0x8062060 +thumb_func 0x806206c +thumb_func 0x8062078 +thumb_func 0x8062084 +thumb_func 0x8062090 +thumb_func 0x806209c +thumb_func 0x80620a8 +thumb_func 0x80620b4 +thumb_func 0x80620c0 +thumb_func 0x80620dc +thumb_func 0x8062114 +thumb_func 0x806212c +thumb_func 0x8062154 +thumb_func 0x80621c4 +thumb_func 0x80621d0 +thumb_func 0x8062214 +thumb_func 0x8062270 +thumb_func 0x80622ac +thumb_func 0x80622e0 +thumb_func 0x80623f0 +thumb_func 0x806240c +thumb_func 0x80624fc +thumb_func 0x8062610 +thumb_func 0x8062658 +thumb_func 0x80626a8 +thumb_func 0x80626b4 +thumb_func 0x8062714 +thumb_func 0x806277c +thumb_func 0x8062788 +thumb_func 0x8062794 +thumb_func 0x80627d8 nullsub_43 +thumb_func 0x80627dc +thumb_func 0x806283c +thumb_func 0x8062a38 +thumb_func 0x8062ca4 +thumb_func 0x8062da0 +thumb_func 0x8062f00 +thumb_func 0x8062f48 +thumb_func 0x80631f8 +thumb_func 0x8063464 +thumb_func 0x80635ec +thumb_func 0x8063674 +thumb_func 0x8063a68 +thumb_func 0x8063ac4 +thumb_func 0x8063f74 nullsub_11 +thumb_func 0x8063f78 +thumb_func 0x8063f94 +thumb_func 0x8063fe4 +thumb_func 0x806401c +thumb_func 0x8064054 +thumb_func 0x80640bc +thumb_func 0x8064104 +thumb_func 0x8064318 +thumb_func 0x80646e8 +thumb_func 0x80647a4 +thumb_func 0x80647f8 +thumb_func 0x806483c +thumb_func 0x80648b0 +thumb_func 0x80648c8 +thumb_func 0x8064944 +thumb_func 0x80649b4 +thumb_func 0x8064a34 +thumb_func 0x8064b24 +thumb_func 0x8064bec +thumb_func 0x8064c1c +thumb_func 0x8064c4c +thumb_func 0x8064cc4 +thumb_func 0x8064d38 +thumb_func 0x80654e4 +thumb_func 0x80654f0 +thumb_func 0x8065548 +thumb_func 0x8065e68 +thumb_func 0x8065edc +thumb_func 0x806602c +thumb_func 0x8066078 +thumb_func 0x8066208 +thumb_func 0x80662a0 +thumb_func 0x806632c +thumb_func 0x806663c +thumb_func 0x8066778 +thumb_func 0x8066824 +thumb_func 0x80668d0 +thumb_func 0x80668dc +thumb_func 0x80668e8 +thumb_func 0x80668f4 +thumb_func 0x8066900 +thumb_func 0x8066a54 +thumb_func 0x8066bd8 +thumb_func 0x8066c30 +thumb_func 0x8066c3c +thumb_func 0x8066c48 +thumb_func 0x8066c54 +thumb_func 0x8066c60 +thumb_func 0x8066c6c +thumb_func 0x8066c78 +thumb_func 0x8066c84 +thumb_func 0x8066d74 +thumb_func 0x8066d80 +thumb_func 0x8066df8 +thumb_func 0x8066e60 +thumb_func 0x8066e6c +thumb_func 0x8066e78 +thumb_func 0x8066e84 +thumb_func 0x8066e90 +thumb_func 0x8066e9c +thumb_func 0x8066ea8 +thumb_func 0x8066eb4 +thumb_func 0x8066ec0 +thumb_func 0x8066ecc +thumb_func 0x8066ee8 +thumb_func 0x8066f20 +thumb_func 0x8066f38 +thumb_func 0x8066f60 +thumb_func 0x8066fd0 +thumb_func 0x8066fdc +thumb_func 0x8067020 +thumb_func 0x806707c +thumb_func 0x80670b8 +thumb_func 0x80670ec +thumb_func 0x80671fc +thumb_func 0x80672e0 +thumb_func 0x80672fc +thumb_func 0x8067410 +thumb_func 0x8067458 +thumb_func 0x80674a8 +thumb_func 0x80674b4 +thumb_func 0x8067514 +thumb_func 0x8067588 +thumb_func 0x80675a8 +thumb_func 0x80675b4 +thumb_func 0x8067654 nullsub_441 +thumb_func 0x8067658 +thumb_func 0x8067670 +thumb_func 0x80676f0 +thumb_func 0x8067710 +thumb_func 0x8067730 +thumb_func 0x80677a0 +thumb_func 0x8067a74 +thumb_func 0x8067adc +thumb_func 0x8067bdc +thumb_func 0x8067c44 +thumb_func 0x8067c84 +thumb_func 0x8067cf8 +thumb_func 0x8067d80 +thumb_func 0x8067ed0 +thumb_func 0x8068080 +thumb_func 0x8068174 +thumb_func 0x806823c +thumb_func 0x80683e8 +thumb_func 0x8068438 +thumb_func 0x8068550 +thumb_func 0x80685e4 +thumb_func 0x8068688 +thumb_func 0x80686f0 +thumb_func 0x8068758 +thumb_func 0x80687b8 +thumb_func 0x806884c +thumb_func 0x8068b44 +thumb_func 0x8068b94 +thumb_func 0x8068c00 +thumb_func 0x8068c6c +thumb_func 0x8068c80 +thumb_func 0x8068cf0 +thumb_func 0x8068d34 +thumb_func 0x8068d74 +thumb_func 0x8068da4 +thumb_func 0x8068db0 +thumb_func 0x8068e58 +thumb_func 0x8068f64 +thumb_func 0x8069010 +thumb_func 0x80690bc +thumb_func 0x806992c +thumb_func 0x8069a18 +thumb_func 0x8069a74 +thumb_func 0x8069af4 +thumb_func 0x8069b04 +thumb_func 0x8069b60 +thumb_func 0x8069ba8 +thumb_func 0x8069c6c +thumb_func 0x8069d00 +thumb_func 0x8069d68 +thumb_func 0x8069d8c +thumb_func 0x8069db0 +thumb_func 0x806a058 +thumb_func 0x806a1b4 +thumb_func 0x806a774 +thumb_func 0x806a864 +thumb_func 0x806aed0 +thumb_func 0x806aedc +thumb_func 0x806af58 +thumb_func 0x806b004 +thumb_func 0x806b048 +thumb_func 0x806b08c +thumb_func 0x806b100 +thumb_func 0x806b15c +thumb_func 0x806b1a0 +thumb_func 0x806b1d4 +thumb_func 0x806b2f8 +thumb_func 0x806b338 +thumb_func 0x806b378 +thumb_func 0x806b3ac +thumb_func 0x806b3dc +thumb_func 0x806b424 +thumb_func 0x806b46c +thumb_func 0x806b4a8 +thumb_func 0x806b4c0 +thumb_func 0x806b7c8 +thumb_func 0x806b7ec +thumb_func 0x806c830 +thumb_func 0x806c8a0 +thumb_func 0x806c9e8 +thumb_func 0x806ca3c +thumb_func 0x806cb34 +thumb_func 0x806cb4c +thumb_func 0x806cb5c +thumb_func 0x806ce84 +thumb_func 0x806ced0 +thumb_func 0x806cf1c +thumb_func 0x806cf68 +thumb_func 0x806cf8c +thumb_func 0x806cfb0 +thumb_func 0x806cfd4 +thumb_func 0x806d008 +thumb_func 0x806d128 +thumb_func 0x806d23c +thumb_func 0x806d288 +thumb_func 0x806d2c8 +thumb_func 0x806d300 +thumb_func 0x806d324 +thumb_func 0x806d36c +thumb_func 0x806d3cc +thumb_func 0x806d570 +thumb_func 0x806d720 +thumb_func 0x806d748 +thumb_func 0x806d810 +thumb_func 0x806d878 +thumb_func 0x806d8d8 +thumb_func 0x806d958 +thumb_func 0x806da08 +thumb_func 0x806daa0 +thumb_func 0x806daf8 +thumb_func 0x806db48 +thumb_func 0x806dc98 +thumb_func 0x806dcf0 +thumb_func 0x806de54 +thumb_func 0x806de8c +thumb_func 0x806dea8 +thumb_func 0x806dec0 +thumb_func 0x806e0d8 +thumb_func 0x806e0f4 +thumb_func 0x806e120 +thumb_func 0x806e158 +thumb_func 0x806e194 +thumb_func 0x806e1cc +thumb_func 0x806e220 +thumb_func 0x806e258 +thumb_func 0x806e290 +thumb_func 0x806e2cc +thumb_func 0x806e2e4 +thumb_func 0x806e30c +thumb_func 0x806e334 +thumb_func 0x806e360 +thumb_func 0x806e3b0 +thumb_func 0x806e3bc +thumb_func 0x806e420 +thumb_func 0x806e4cc +thumb_func 0x806e4f4 +thumb_func 0x806e630 +thumb_func 0x806e65c +thumb_func 0x806e684 +thumb_func 0x806e6fc +thumb_func 0x806e738 +thumb_func 0x806e778 +thumb_func 0x806e7cc +thumb_func 0x806e898 +thumb_func 0x806e924 +thumb_func 0x806e940 +thumb_func 0x806e994 +thumb_func 0x806ea10 +thumb_func 0x806ea7c +thumb_func 0x806ea8c +thumb_func 0x806eaa8 +thumb_func 0x806eb08 +thumb_func 0x806eb38 +thumb_func 0x806eb58 +thumb_func 0x806eb88 +thumb_func 0x806ebe4 +thumb_func 0x806ec80 +thumb_func 0x806ed30 +thumb_func 0x806ef00 +thumb_func 0x806ef7c +thumb_func 0x806efb8 +thumb_func 0x806efd4 +thumb_func 0x806eff4 +thumb_func 0x806f038 +thumb_func 0x806f050 +thumb_func 0x806f07c +thumb_func 0x806f094 +thumb_func 0x806f0a4 +thumb_func 0x806f0c4 +thumb_func 0x806f100 +thumb_func 0x806f108 +thumb_func 0x806f118 +thumb_func 0x806f144 +thumb_func 0x806f190 +thumb_func 0x806f32c +thumb_func 0x806f354 +thumb_func 0x806f3ac +thumb_func 0x806f3f0 +thumb_func 0x806f410 +thumb_func 0x806f4b0 +thumb_func 0x806f4d0 +thumb_func 0x806f4f0 +thumb_func 0x806f520 +thumb_func 0x806f58c +thumb_func 0x806f5bc +thumb_func 0x806f64c +thumb_func 0x806f670 +thumb_func 0x806f6a0 +thumb_func 0x806f6fc +thumb_func 0x806f750 +thumb_func 0x806f7f4 +thumb_func 0x806f81c +thumb_func 0x806f844 +thumb_func 0x806f880 +thumb_func 0x806f8ac +thumb_func 0x806f8e0 +thumb_func 0x806f918 +thumb_func 0x806f930 +thumb_func 0x806f95c +thumb_func 0x806f988 +thumb_func 0x806f9d8 +thumb_func 0x806fa08 +thumb_func 0x806fa28 +thumb_func 0x806fa5c +thumb_func 0x806fadc +thumb_func 0x806fb6c +thumb_func 0x806fc10 +thumb_func 0x806fc38 +thumb_func 0x806fc54 +thumb_func 0x806fc70 +thumb_func 0x806fcb8 +thumb_func 0x806fe20 +thumb_func 0x806fec8 +thumb_func 0x8070168 +thumb_func 0x8070180 +thumb_func 0x807019c +thumb_func 0x80701fc +thumb_func 0x8070244 +thumb_func 0x8070320 +thumb_func 0x80703ac +thumb_func 0x807044c +thumb_func 0x80704d0 +thumb_func 0x80704ec +thumb_func 0x80705f8 +thumb_func 0x8070618 +thumb_func 0x807062c +thumb_func 0x8070680 +thumb_func 0x80706bc +thumb_func 0x80706d8 +thumb_func 0x8070720 +thumb_func 0x8070744 +thumb_func 0x8070774 +thumb_func 0x8070894 +thumb_func 0x80708b4 +thumb_func 0x80708f4 +thumb_func 0x8070970 +thumb_func 0x80709c0 +thumb_func 0x80709dc +thumb_func 0x8070a60 +thumb_func 0x8070ac4 +thumb_func 0x8070b38 +thumb_func 0x8070b74 +thumb_func 0x8070bd8 +thumb_func 0x8070c24 +thumb_func 0x8070ce0 +thumb_func 0x8070d50 +thumb_func 0x8070d68 +thumb_func 0x8070ed0 +thumb_func 0x8070f90 +thumb_func 0x8070fa4 +thumb_func 0x807101c +thumb_func 0x8071044 +thumb_func 0x8071134 +thumb_func 0x8071148 +thumb_func 0x8071168 +thumb_func 0x80711a8 +thumb_func 0x8071400 +thumb_func 0x8071440 +thumb_func 0x8071498 +thumb_func 0x8071844 +thumb_func 0x807189c +thumb_func 0x8071900 +thumb_func 0x80719b4 +thumb_func 0x80719d8 +thumb_func 0x8071a58 +thumb_func 0x8071af8 +thumb_func 0x8071b50 +thumb_func 0x8071ba4 +thumb_func 0x8071c24 +thumb_func 0x8071c9c +thumb_func 0x8071cf0 +thumb_func 0x8071d14 +thumb_func 0x8071d18 +thumb_func 0x8071eb8 +thumb_func 0x8071eec +thumb_func 0x8072214 +thumb_func 0x80722b4 +thumb_func 0x80722c4 +thumb_func 0x8072334 +thumb_func 0x807235c +thumb_func 0x8072394 +thumb_func 0x80723e0 +thumb_func 0x8072434 +thumb_func 0x8072454 +thumb_func 0x8072494 nullsub_7 +thumb_func 0x8072498 +thumb_func 0x8072528 +thumb_func 0x80725a4 +thumb_func 0x80726f4 +thumb_func 0x80727fc +thumb_func 0x80729d0 +thumb_func 0x8072c10 +thumb_func 0x8072ed8 +thumb_func 0x807352c +thumb_func 0x8073704 +thumb_func 0x8073760 +thumb_func 0x8073894 +thumb_func 0x8073974 +thumb_func 0x807398c +thumb_func 0x80739c0 +thumb_func 0x8073a54 +thumb_func 0x8073ac4 +thumb_func 0x8073ae4 +thumb_func 0x8073d80 +thumb_func 0x8073e68 +thumb_func 0x8074118 +thumb_func 0x80741e0 +thumb_func 0x8074320 +thumb_func 0x80743f0 +thumb_func 0x8074630 +thumb_func 0x807472c +thumb_func 0x8074948 +thumb_func 0x8074a1c +thumb_func 0x8074ab8 +thumb_func 0x8074b18 +thumb_func 0x8074b78 +thumb_func 0x8074bc4 +thumb_func 0x8074bf0 +thumb_func 0x8074c24 +thumb_func 0x8074d78 +thumb_func 0x8074dbc +thumb_func 0x8074df0 +thumb_func 0x8074e58 +thumb_func 0x8075028 +thumb_func 0x80750dc +thumb_func 0x80750e8 +thumb_func 0x8075154 +thumb_func 0x80751ec +thumb_func 0x8075240 +thumb_func 0x8075338 +thumb_func 0x8075378 +thumb_func 0x80754c4 +thumb_func 0x807571c +thumb_func 0x80759bc +thumb_func 0x80759dc +thumb_func 0x8075b00 +thumb_func 0x8075bbc +thumb_func 0x8075c0c +thumb_func 0x8075d7c +thumb_func 0x8075da0 +thumb_func 0x8075e00 +thumb_func 0x8075e28 +thumb_func 0x8075e40 +thumb_func 0x8075f2c +thumb_func 0x8075fe8 +thumb_func 0x8076124 +thumb_func 0x80761dc +thumb_func 0x8076284 +thumb_func 0x80762f8 +thumb_func 0x8076314 +thumb_func 0x8076320 +thumb_func 0x80763b0 +thumb_func 0x80763d4 +thumb_func 0x80763fc +thumb_func 0x8076440 +thumb_func 0x8076480 +thumb_func 0x80764f0 +thumb_func 0x807651c +thumb_func 0x8076570 +thumb_func 0x807659c +thumb_func 0x80765c0 +thumb_func 0x80765e4 +thumb_func 0x8076634 +thumb_func 0x807672c +thumb_func 0x807673c +thumb_func 0x8076750 +thumb_func 0x8076764 +thumb_func 0x8076780 +thumb_func 0x8076794 +thumb_func 0x80767dc +thumb_func 0x8076824 +thumb_func 0x807686c +thumb_func 0x80768b4 +thumb_func 0x80768c4 +thumb_func 0x80768d4 +thumb_func 0x80769e8 +thumb_func 0x8076b08 +thumb_func 0x8076b20 +thumb_func 0x8076b38 +thumb_func 0x8076b78 +thumb_func 0x8076bb4 +thumb_func 0x8076bc4 +thumb_func 0x8076c08 +thumb_func 0x8076c18 +thumb_func 0x8076c3c +thumb_func 0x8076c68 +thumb_func 0x8076c90 +thumb_func 0x8076c9c +thumb_func 0x8076cac +thumb_func 0x8076db4 +thumb_func 0x8076dd8 +thumb_func 0x8077558 +thumb_func 0x8077ae4 +thumb_func 0x8077af8 +thumb_func 0x8077b34 +thumb_func 0x8077b90 +thumb_func 0x8077c24 +thumb_func 0x8077c80 +thumb_func 0x8077d50 +thumb_func 0x8077e00 +thumb_func 0x8077e20 +thumb_func 0x8078120 +thumb_func 0x80781c4 +thumb_func 0x80782e4 +thumb_func 0x80783e0 +thumb_func 0x80785e0 +thumb_func 0x80785f4 +thumb_func 0x8078618 +thumb_func 0x8078650 +thumb_func 0x807869c +thumb_func 0x807875c +thumb_func 0x80787a0 +thumb_func 0x8078900 +thumb_func 0x8078958 +thumb_func 0x8078a3c +thumb_func 0x8078a64 +thumb_func 0x8078adc +thumb_func 0x8078b7c +thumb_func 0x8078c20 +thumb_func 0x8078ca4 +thumb_func 0x8078cec +thumb_func 0x8078d64 +thumb_func 0x8078da0 +thumb_func 0x8078dcc +thumb_func 0x8078e1c +thumb_func 0x8078ea4 +thumb_func 0x8078ee0 +thumb_func 0x8078f64 +thumb_func 0x8078f90 +thumb_func 0x8078fc0 +thumb_func 0x8079090 +thumb_func 0x80790c8 +thumb_func 0x807946c +thumb_func 0x8079564 +thumb_func 0x8079644 +thumb_func 0x8079690 +thumb_func 0x8079740 +thumb_func 0x807987c +thumb_func 0x80798e0 +thumb_func 0x80799ac +thumb_func 0x80799c0 +thumb_func 0x8079a38 +thumb_func 0x8079a5c +thumb_func 0x8079a80 +thumb_func 0x8079ad4 +thumb_func 0x8079afc +thumb_func 0x8079bd4 +thumb_func 0x8079c28 +thumb_func 0x8079d3c +thumb_func 0x8079d98 +thumb_func 0x8079ee0 +thumb_func 0x8079fb4 +thumb_func 0x807a028 +thumb_func 0x807a064 +thumb_func 0x807a198 +thumb_func 0x807a22c +thumb_func 0x807a250 +thumb_func 0x807a340 +thumb_func 0x807a388 +thumb_func 0x807a498 +thumb_func 0x807a4bc +thumb_func 0x807a4ec +thumb_func 0x807a52c +thumb_func 0x807a550 +thumb_func 0x807a574 +thumb_func 0x807a598 +thumb_func 0x807a628 +thumb_func 0x807a680 +thumb_func 0x807a698 +thumb_func 0x807a6c0 +thumb_func 0x807a738 +thumb_func 0x807a758 +thumb_func 0x807a8ac +thumb_func 0x807ab9c +thumb_func 0x807abb0 +thumb_func 0x807abcc +thumb_func 0x807acc8 +thumb_func 0x807ae9c +thumb_func 0x807aefc +thumb_func 0x807af08 +thumb_func 0x807aff0 +thumb_func 0x807b044 +thumb_func 0x807b064 +thumb_func 0x807b4cc +thumb_func 0x807b510 +thumb_func 0x807b600 +thumb_func 0x807b624 +thumb_func 0x807ca00 +thumb_func 0x807de4c +thumb_func 0x807df14 +thumb_func 0x807df94 +thumb_func 0x807e010 +thumb_func 0x807e084 +thumb_func 0x807e0e4 +thumb_func 0x807e174 +thumb_func 0x807e1c4 +thumb_func 0x807e228 +thumb_func 0x807e3b4 +thumb_func 0x807e40c +thumb_func 0x807e448 +thumb_func 0x807e464 +thumb_func 0x807e504 +thumb_func 0x807e588 +thumb_func 0x807eaa0 +thumb_func 0x807eb1c +thumb_func 0x807eb48 +thumb_func 0x807eb84 +thumb_func 0x807ebd4 +thumb_func 0x807ebe0 +thumb_func 0x807ec48 +thumb_func 0x807ed1c +thumb_func 0x807edd4 +thumb_func 0x807ee9c +thumb_func 0x807f170 +thumb_func 0x807f19c +thumb_func 0x807f210 +thumb_func 0x807f408 +thumb_func 0x807f46c +thumb_func 0x807f4b8 +thumb_func 0x807f500 +thumb_func 0x807f740 +thumb_func 0x807f79c +thumb_func 0x807f7c8 +thumb_func 0x807f84c +thumb_func 0x807f88c +thumb_func 0x807f9ac +thumb_func 0x807fa20 +thumb_func 0x807ff90 +thumb_func 0x808002c +thumb_func 0x808007c +thumb_func 0x8080154 +thumb_func 0x80801c4 +thumb_func 0x80802f0 +thumb_func 0x8080814 +thumb_func 0x808083c +thumb_func 0x8080888 +thumb_func 0x80808c0 +thumb_func 0x80809ec +thumb_func 0x8080b14 +thumb_func 0x8080c40 +thumb_func 0x8080ca4 +thumb_func 0x8080d8c +thumb_func 0x8080ecc +thumb_func 0x8080f10 +thumb_func 0x8081160 +thumb_func 0x80812b4 +thumb_func 0x808137c nullsub_101 +thumb_func 0x8081380 +thumb_func 0x80813d4 +thumb_func 0x80815cc +thumb_func 0x80815d8 +thumb_func 0x80815e4 +thumb_func 0x80815f0 +thumb_func 0x80815fc +thumb_func 0x8081820 +thumb_func 0x808183c +thumb_func 0x80819b0 +thumb_func 0x80819e4 +thumb_func 0x8081f18 +thumb_func 0x8082060 +thumb_func 0x8082340 +thumb_func 0x80824f0 +thumb_func 0x80826d0 +thumb_func 0x8082734 +thumb_func 0x8082744 +thumb_func 0x8082810 +thumb_func 0x8082858 +thumb_func 0x80828a0 +thumb_func 0x8082984 +thumb_func 0x80829b8 +thumb_func 0x80829f8 +thumb_func 0x8082a2c +thumb_func 0x8082adc +thumb_func 0x8082b5c +thumb_func 0x8082b8c +thumb_func 0x8082c2c +thumb_func 0x8082c4c +thumb_func 0x8082cd8 +thumb_func 0x8082d04 +thumb_func 0x8082d28 +thumb_func 0x8082d50 +thumb_func 0x8082d9c +thumb_func 0x8082e14 +thumb_func 0x8082e34 +thumb_func 0x8082e6c +thumb_func 0x80832a0 +thumb_func 0x8083350 +thumb_func 0x80833a8 +thumb_func 0x80834fc +thumb_func 0x80837c8 +thumb_func 0x80838c4 +thumb_func 0x808391c +thumb_func 0x8083a5c +thumb_func 0x8083b04 +thumb_func 0x8083b6c +thumb_func 0x8083b90 +thumb_func 0x8083bb8 +thumb_func 0x8083bc4 +thumb_func 0x8083c2c +thumb_func 0x8083c54 +thumb_func 0x8083c64 +thumb_func 0x8083c7c +thumb_func 0x8083c98 +thumb_func 0x8083cc4 +thumb_func 0x8083d18 +thumb_func 0x8083d48 +thumb_func 0x8083d88 +thumb_func 0x8083dd4 +thumb_func 0x8083df4 +thumb_func 0x8083e04 +thumb_func 0x8083e28 +thumb_func 0x8083f54 +thumb_func 0x8083fa8 +thumb_func 0x8083fe8 +thumb_func 0x8084024 +thumb_func 0x808406c +thumb_func 0x80840a8 +thumb_func 0x8084110 +thumb_func 0x8084130 +thumb_func 0x808414c +thumb_func 0x8084180 +thumb_func 0x80841b8 +thumb_func 0x80841ec +thumb_func 0x808421c +thumb_func 0x8084268 +thumb_func 0x8084298 +thumb_func 0x80842d4 +thumb_func 0x8084308 +thumb_func 0x8084330 +thumb_func 0x8084358 +thumb_func 0x808439c +thumb_func 0x80843bc +thumb_func 0x80843f8 +thumb_func 0x8084410 +thumb_func 0x8084434 +thumb_func 0x8084484 +thumb_func 0x80844c4 +thumb_func 0x8084540 +thumb_func 0x8084554 +thumb_func 0x8084590 +thumb_func 0x80845b0 +thumb_func 0x80845e4 +thumb_func 0x808461c +thumb_func 0x8084634 +thumb_func 0x808466c +thumb_func 0x8084684 +thumb_func 0x80846c4 +thumb_func 0x808473c +thumb_func 0x808477c +thumb_func 0x8084794 +thumb_func 0x80847d0 +thumb_func 0x80847e8 +thumb_func 0x8084824 +thumb_func 0x808487c +thumb_func 0x8084894 +thumb_func 0x80848d4 +thumb_func 0x8084914 +thumb_func 0x8084928 +thumb_func 0x8084960 +thumb_func 0x80849c0 +thumb_func 0x80849e0 +thumb_func 0x8084a00 +thumb_func 0x8084ac8 +thumb_func 0x8084bd0 +thumb_func 0x8084be0 +thumb_func 0x8084c3c +thumb_func 0x8084c94 +thumb_func 0x8084cf4 +thumb_func 0x8084db8 +thumb_func 0x8084ddc +thumb_func 0x8084dfc +thumb_func 0x8084e54 +thumb_func 0x8084e7c +thumb_func 0x8084e8c +thumb_func 0x8084ea8 +thumb_func 0x8084eb4 +thumb_func 0x8084ec0 +thumb_func 0x8084f1c +thumb_func 0x8084f50 +thumb_func 0x8084f80 +thumb_func 0x8084fc4 +thumb_func 0x808503c +thumb_func 0x80850a0 +thumb_func 0x80850e0 +thumb_func 0x80850ec +thumb_func 0x808515c +thumb_func 0x8085168 +thumb_func 0x8085178 +thumb_func 0x8085200 +thumb_func 0x808522c +thumb_func 0x8085258 +thumb_func 0x8085278 +thumb_func 0x8085308 +thumb_func 0x8085318 +thumb_func 0x8085324 +thumb_func 0x80853a4 +thumb_func 0x8085494 +thumb_func 0x80854dc +thumb_func 0x80854f4 +thumb_func 0x808550c +thumb_func 0x8085524 +thumb_func 0x8085538 +thumb_func 0x808555c +thumb_func 0x808557c +thumb_func 0x8085598 +thumb_func 0x80855c0 +thumb_func 0x80855e8 +thumb_func 0x8085610 +thumb_func 0x808569c +thumb_func 0x80856e8 +thumb_func 0x80856f4 +thumb_func 0x8085714 +thumb_func 0x808576c +thumb_func 0x808578c +thumb_func 0x80857b8 +thumb_func 0x80857c4 +thumb_func 0x80857f0 +thumb_func 0x80857fc +thumb_func 0x8085808 +thumb_func 0x8085860 +thumb_func 0x80858c0 +thumb_func 0x8085934 +thumb_func 0x8085964 +thumb_func 0x808598c +thumb_func 0x80859dc +thumb_func 0x8085a00 +thumb_func 0x8085a30 +thumb_func 0x8085a5c +thumb_func 0x8085a80 +thumb_func 0x8085aa8 +thumb_func 0x8085afc +thumb_func 0x8085b18 +thumb_func 0x8085b34 +thumb_func 0x8085b50 +thumb_func 0x8085b6c +thumb_func 0x8085b98 +thumb_func 0x8085c80 +thumb_func 0x8085ce4 +thumb_func 0x8085cf4 +thumb_func 0x8085d14 +thumb_func 0x8085d5c +thumb_func 0x8085e80 +thumb_func 0x8085f9c +thumb_func 0x8085ffc +thumb_func 0x8086114 +thumb_func 0x808612c +thumb_func 0x808613c +thumb_func 0x80861c4 +thumb_func 0x80861dc +thumb_func 0x80862ec +thumb_func 0x8086340 +thumb_func 0x8086368 +thumb_func 0x80863cc +thumb_func 0x80863e4 +thumb_func 0x8086410 +thumb_func 0x808642c +thumb_func 0x8086448 +thumb_func 0x8086478 +thumb_func 0x8086500 +thumb_func 0x808653c +thumb_func 0x8086590 +thumb_func 0x80865a4 +thumb_func 0x80865b4 +thumb_func 0x80865c8 +thumb_func 0x80865f4 +thumb_func 0x808660c +thumb_func 0x8086644 +thumb_func 0x808667c +thumb_func 0x808689c +thumb_func 0x8086904 +thumb_func 0x8086970 +thumb_func 0x80869cc +thumb_func 0x8086a00 +thumb_func 0x8086a14 +thumb_func 0x8086a50 +thumb_func 0x8086a5c +thumb_func 0x8086a80 +thumb_func 0x8086aa4 +thumb_func 0x8086ac8 +thumb_func 0x8086ad4 +thumb_func 0x8086b10 +thumb_func 0x8086b24 +thumb_func 0x8086b28 +thumb_func 0x8086b60 +thumb_func 0x8086b74 +thumb_func 0x8086b78 +thumb_func 0x8086be0 +thumb_func 0x8086bec +thumb_func 0x8086c00 +thumb_func 0x8086c14 +thumb_func 0x8086c28 +thumb_func 0x8086c3c +thumb_func 0x8086ca4 +thumb_func 0x8086cbc +thumb_func 0x8086cd4 +thumb_func 0x8086cec +thumb_func 0x8086d18 +thumb_func 0x8086de4 +thumb_func 0x8086e74 +thumb_func 0x8086e80 +thumb_func 0x8086e94 +thumb_func 0x8086eb0 +thumb_func 0x8086ecc +thumb_func 0x8086ee8 +thumb_func 0x8086efc +thumb_func 0x8086f2c +thumb_func 0x8086f98 +thumb_func 0x8086fd0 +thumb_func 0x8086ff4 +thumb_func 0x8087028 +thumb_func 0x8087030 +thumb_func 0x8087044 +thumb_func 0x8087054 +thumb_func 0x8087100 +thumb_func 0x8087140 +thumb_func 0x8087170 +thumb_func 0x80871bc +thumb_func 0x80871dc +thumb_func 0x8087204 +thumb_func 0x8087224 +thumb_func 0x8087248 +thumb_func 0x8087270 +thumb_func 0x80872d0 +thumb_func 0x808733c +thumb_func 0x808735c +thumb_func 0x8087360 +thumb_func 0x8087380 +thumb_func 0x8087384 +thumb_func 0x80873ec +thumb_func 0x8087404 +thumb_func 0x808740c +thumb_func 0x8087444 +thumb_func 0x80874a4 +thumb_func 0x8087530 +thumb_func 0x80875f0 +thumb_func 0x80876a8 +thumb_func 0x80876b8 +thumb_func 0x80876d8 +thumb_func 0x8087710 +thumb_func 0x8087748 +thumb_func 0x8087778 +thumb_func 0x80877d4 +thumb_func 0x808782c +thumb_func 0x80878b8 +thumb_func 0x808791c +thumb_func 0x8087984 +thumb_func 0x80879e4 +thumb_func 0x8087a44 +thumb_func 0x8087aa8 +thumb_func 0x8087b14 +thumb_func 0x8087b88 +thumb_func 0x8087c20 +thumb_func 0x8087c38 +thumb_func 0x8087c54 +thumb_func 0x8087c9c +thumb_func 0x8087cd4 +thumb_func 0x8087d28 +thumb_func 0x8087d9c +thumb_func 0x8087dd8 +thumb_func 0x8087e00 +thumb_func 0x8087f28 +thumb_func 0x8088000 +thumb_func 0x80880ec +thumb_func 0x8088114 +thumb_func 0x808815c +thumb_func 0x80881e0 +thumb_func 0x80882b4 +thumb_func 0x808830c +thumb_func 0x8088370 +thumb_func 0x808839c +thumb_func 0x80883b0 +thumb_func 0x80883f0 +thumb_func 0x80884a0 +thumb_func 0x80884bc +thumb_func 0x80884d4 +thumb_func 0x80884e4 +thumb_func 0x80884f8 +thumb_func 0x8088554 +thumb_func 0x8088598 +thumb_func 0x80885dc +thumb_func 0x8088620 nullsub_13 +thumb_func 0x8088624 nullsub_45 +thumb_func 0x8088628 +thumb_func 0x80886b4 +thumb_func 0x80886c8 +thumb_func 0x80886dc +thumb_func 0x80886f0 +thumb_func 0x8088700 +thumb_func 0x8088710 +thumb_func 0x8088738 +thumb_func 0x8088750 +thumb_func 0x8088754 +thumb_func 0x8088778 +thumb_func 0x808878c +thumb_func 0x80887a0 +thumb_func 0x80887b4 +thumb_func 0x80887c8 +thumb_func 0x80887e4 +thumb_func 0x80887fc +thumb_func 0x8088810 +thumb_func 0x8088838 +thumb_func 0x808884c +thumb_func 0x8088860 +thumb_func 0x8088878 +thumb_func 0x8088894 +thumb_func 0x80888a8 +thumb_func 0x80888bc +thumb_func 0x80888d8 +thumb_func 0x80888ec +thumb_func 0x8088910 +thumb_func 0x8088924 +thumb_func 0x8088938 +thumb_func 0x8088950 +thumb_func 0x808896c +thumb_func 0x80889b0 +thumb_func 0x80889f0 +thumb_func 0x8088a04 +thumb_func 0x8088a18 +thumb_func 0x8088a2c +thumb_func 0x8088a40 +thumb_func 0x8088a54 +thumb_func 0x8088a68 +thumb_func 0x8088a7c +thumb_func 0x8088a90 +thumb_func 0x8088aa4 +thumb_func 0x8088ab8 +thumb_func 0x8088acc +thumb_func 0x8088ae0 +thumb_func 0x8088af4 +thumb_func 0x8088b08 +thumb_func 0x8088b1c +thumb_func 0x8088b30 +thumb_func 0x8088b4c +thumb_func 0x8088b60 +thumb_func 0x8088b74 +thumb_func 0x8088ba0 +thumb_func 0x8088bc0 +thumb_func 0x8088bd8 +thumb_func 0x8088bec +thumb_func 0x8088c00 +thumb_func 0x8088c14 +thumb_func 0x8088c28 +thumb_func 0x8088c3c +thumb_func 0x8088c50 +thumb_func 0x8088c64 +thumb_func 0x8088c78 +thumb_func 0x8088c8c +thumb_func 0x8088ca0 +thumb_func 0x8088cb4 +thumb_func 0x8088cc8 +thumb_func 0x8088cdc +thumb_func 0x8088cf0 +thumb_func 0x8088d04 +thumb_func 0x8088d18 +thumb_func 0x8088d2c +thumb_func 0x8088d40 +thumb_func 0x8088d54 +thumb_func 0x8088d68 +thumb_func 0x8088d7c +thumb_func 0x8088d98 +thumb_func 0x8088dac +thumb_func 0x8088dc0 +thumb_func 0x8088dd4 +thumb_func 0x8088de8 +thumb_func 0x8088dfc +thumb_func 0x8088e10 +thumb_func 0x8088e38 +thumb_func 0x8088e74 +thumb_func 0x8088e90 +thumb_func 0x8088ebc +thumb_func 0x8088eec +thumb_func 0x8088f00 +thumb_func 0x8088f14 +thumb_func 0x8088f34 +thumb_func 0x8088f4c +thumb_func 0x8088f68 +thumb_func 0x8088f7c +thumb_func 0x8088f90 +thumb_func 0x8088fac +thumb_func 0x8088fc4 +thumb_func 0x8088ff0 +thumb_func 0x8089014 +thumb_func 0x8089038 +thumb_func 0x8089058 +thumb_func 0x8089078 +thumb_func 0x808908c +thumb_func 0x80890a0 +thumb_func 0x80890b4 +thumb_func 0x80890c8 +thumb_func 0x80890dc +thumb_func 0x80890f0 +thumb_func 0x8089104 +thumb_func 0x8089118 +thumb_func 0x8089134 +thumb_func 0x8089148 +thumb_func 0x808915c +thumb_func 0x8089170 +thumb_func 0x8089184 +thumb_func 0x8089198 +thumb_func 0x80891ac +thumb_func 0x80891c0 +thumb_func 0x80891d4 +thumb_func 0x80891e8 +thumb_func 0x80891fc +thumb_func 0x8089210 +thumb_func 0x8089224 +thumb_func 0x8089238 +thumb_func 0x8089268 +thumb_func 0x808927c +thumb_func 0x8089290 +thumb_func 0x80892a4 +thumb_func 0x80892b8 +thumb_func 0x80892cc +thumb_func 0x80892e0 +thumb_func 0x80892f4 +thumb_func 0x8089308 +thumb_func 0x808931c +thumb_func 0x8089334 +thumb_func 0x808935c +thumb_func 0x8089380 +thumb_func 0x8089394 +thumb_func 0x80893a8 +thumb_func 0x80893bc +thumb_func 0x80893d0 +thumb_func 0x80893e4 +thumb_func 0x80893f8 +thumb_func 0x808940c +thumb_func 0x8089420 +thumb_func 0x8089434 +thumb_func 0x8089450 +thumb_func 0x808946c +thumb_func 0x8089480 +thumb_func 0x8089494 +thumb_func 0x80894a8 +thumb_func 0x80894bc +thumb_func 0x80894cc +thumb_func 0x80894e8 +thumb_func 0x80894f8 +thumb_func 0x8089508 +thumb_func 0x808956c +thumb_func 0x8089598 +thumb_func 0x80895c4 +thumb_func 0x8089648 +thumb_func 0x8089694 +thumb_func 0x80896f4 +thumb_func 0x8089740 +thumb_func 0x8089798 +thumb_func 0x8089804 +thumb_func 0x8089840 +thumb_func 0x8089874 +thumb_func 0x80898dc +thumb_func 0x8089a10 +thumb_func 0x8089a58 +thumb_func 0x8089a80 +thumb_func 0x8089a98 +thumb_func 0x8089ad8 +thumb_func 0x8089be8 +thumb_func 0x8089c24 +thumb_func 0x8089c30 +thumb_func 0x8089c48 +thumb_func 0x8089c78 +thumb_func 0x8089cc4 +thumb_func 0x8089d64 +thumb_func 0x8089d9c +thumb_func 0x8089ddc +thumb_func 0x8089e94 +thumb_func 0x8089ecc +thumb_func 0x8089f54 +thumb_func 0x8089fb8 +thumb_func 0x8089ff0 +thumb_func 0x808a004 +thumb_func 0x808a028 +thumb_func 0x808a08c +thumb_func 0x808a098 +thumb_func 0x808a0d8 +thumb_func 0x808a130 +thumb_func 0x808a170 +thumb_func 0x808a1a0 +thumb_func 0x808a1b8 +thumb_func 0x808a1e4 +thumb_func 0x808a210 +thumb_func 0x808a248 +thumb_func 0x808a280 +thumb_func 0x808a294 +thumb_func 0x808a2c8 +thumb_func 0x808a2fc +thumb_func 0x808a320 +thumb_func 0x808a324 +thumb_func 0x808a39c +thumb_func 0x808a400 +thumb_func 0x808a424 +thumb_func 0x808a45c +thumb_func 0x808a478 +thumb_func 0x808a48c +thumb_func 0x808a49c +thumb_func 0x808a4f8 +thumb_func 0x808a544 +thumb_func 0x808a5bc +thumb_func 0x808a5f0 +thumb_func 0x808a604 +thumb_func 0x808a61c +thumb_func 0x808a634 +thumb_func 0x808a64c +thumb_func 0x808a664 +thumb_func 0x808a67c +thumb_func 0x808a694 +thumb_func 0x808a6ac +thumb_func 0x808a6c4 +thumb_func 0x808a6fc +thumb_func 0x808a714 +thumb_func 0x808a72c +thumb_func 0x808a744 +thumb_func 0x808a75c +thumb_func 0x808a768 +thumb_func 0x808a774 +thumb_func 0x808a7cc +thumb_func 0x808a7f4 +thumb_func 0x808a7fc +thumb_func 0x808a840 +thumb_func 0x808a854 +thumb_func 0x808a864 +thumb_func 0x808a920 +thumb_func 0x808a98c +thumb_func 0x808a9f8 +thumb_func 0x808aac8 +thumb_func 0x808ab20 +thumb_func 0x808ab78 +thumb_func 0x808ab9c +thumb_func 0x808ac48 +thumb_func 0x808ac88 +thumb_func 0x808ad30 +thumb_func 0x808ad4c +thumb_func 0x808ada0 nullsub_44 +thumb_func 0x808ada4 +thumb_func 0x808add0 +thumb_func 0x808ae04 +thumb_func 0x808ae3c +thumb_func 0x808ae98 +thumb_func 0x808aecc +thumb_func 0x808aedc +thumb_func 0x808af20 +thumb_func 0x808af7c +thumb_func 0x808afa0 +thumb_func 0x808afc4 +thumb_func 0x808afe8 +thumb_func 0x808b004 +thumb_func 0x808b020 +thumb_func 0x808b048 +thumb_func 0x808b084 +thumb_func 0x808b09c +thumb_func 0x808b0b4 +thumb_func 0x808b0cc +thumb_func 0x808b0e4 +thumb_func 0x808b0fc +thumb_func 0x808b120 +thumb_func 0x808b138 +thumb_func 0x808b15c +thumb_func 0x808b174 +thumb_func 0x808b18c +thumb_func 0x808b1a4 +thumb_func 0x808b1c8 +thumb_func 0x808b20c +thumb_func 0x808b224 +thumb_func 0x808b23c +thumb_func 0x808b254 +thumb_func 0x808b278 +thumb_func 0x808b29c +thumb_func 0x808b2c0 +thumb_func 0x808b2e4 +thumb_func 0x808b308 +thumb_func 0x808b320 +thumb_func 0x808b338 +thumb_func 0x808b350 +thumb_func 0x808b3cc +thumb_func 0x808b410 +thumb_func 0x808b440 +thumb_func 0x808b59c +thumb_func 0x808b5bc +thumb_func 0x808b5d8 +thumb_func 0x808b5f4 +thumb_func 0x808b624 +thumb_func 0x808b634 +thumb_func 0x808b640 +thumb_func 0x808b64c +thumb_func 0x808b658 +thumb_func 0x808b6a0 +thumb_func 0x808b6b8 +thumb_func 0x808b6d0 +thumb_func 0x808b6e0 +thumb_func 0x808b6f0 +thumb_func 0x808b70c +thumb_func 0x808b738 +thumb_func 0x808b764 +thumb_func 0x808b7b4 +thumb_func 0x808b7d8 +thumb_func 0x808b864 +thumb_func 0x808b878 +thumb_func 0x808b890 +thumb_func 0x808b8d0 +thumb_func 0x808b914 +thumb_func 0x808b944 +thumb_func 0x808ba0c +thumb_func 0x808ba78 +thumb_func 0x808bac0 +thumb_func 0x808bb18 +thumb_func 0x808bb8c +thumb_func 0x808bbe4 +thumb_func 0x808bc74 +thumb_func 0x808bcb0 +thumb_func 0x808bd08 +thumb_func 0x808bd28 +thumb_func 0x808bde8 +thumb_func 0x808be3c +thumb_func 0x808be5c +thumb_func 0x808be8c +thumb_func 0x808bea8 +thumb_func 0x808bf14 +thumb_func 0x808bf34 +thumb_func 0x808bf64 +thumb_func 0x808bf80 +thumb_func 0x808bfa8 +thumb_func 0x808c020 +thumb_func 0x808c060 +thumb_func 0x808c0b4 +thumb_func 0x808c10c +thumb_func 0x808c178 +thumb_func 0x808c1f0 +thumb_func 0x808c224 +thumb_func 0x808c25c +thumb_func 0x808c27c +thumb_func 0x808c314 +thumb_func 0x808c338 +thumb_func 0x808c384 +thumb_func 0x808c424 +thumb_func 0x808c4d4 +thumb_func 0x808c514 +thumb_func 0x808c56c +thumb_func 0x808c5d4 +thumb_func 0x808c618 +thumb_func 0x808c704 +thumb_func 0x808c774 +thumb_func 0x808c7e4 +thumb_func 0x808c7fc +thumb_func 0x808c89c +thumb_func 0x808c8e8 +thumb_func 0x808c9e4 +thumb_func 0x808c9f0 +thumb_func 0x808ca04 +thumb_func 0x808cb04 +thumb_func 0x808cb24 +thumb_func 0x808cb38 +thumb_func 0x808cb58 +thumb_func 0x808cb6c +thumb_func 0x808ccfc +thumb_func 0x808cd60 +thumb_func 0x808cd80 +thumb_func 0x808cda8 +thumb_func 0x808cdc0 +thumb_func 0x808ce64 +thumb_func 0x808ce94 +thumb_func 0x808ceb8 +thumb_func 0x808cee4 +thumb_func 0x808cf28 +thumb_func 0x808cf78 +thumb_func 0x808cfb4 +thumb_func 0x808d0ec +thumb_func 0x808d180 +thumb_func 0x808d220 +thumb_func 0x808d234 +thumb_func 0x808d27c +thumb_func 0x808d2c8 +thumb_func 0x808d2fc +thumb_func 0x808d4b0 +thumb_func 0x808d578 +thumb_func 0x808d5b4 +thumb_func 0x808d61c +thumb_func 0x808d66c +thumb_func 0x808d6a0 +thumb_func 0x808d6c0 +thumb_func 0x808d6d8 +thumb_func 0x808d77c +thumb_func 0x808d8f0 +thumb_func 0x808d9fc +thumb_func 0x808da5c +thumb_func 0x808dadc +thumb_func 0x808db28 +thumb_func 0x808dcfc +thumb_func 0x808dd34 +thumb_func 0x808dd68 +thumb_func 0x808de74 +thumb_func 0x808deb4 +thumb_func 0x808df04 +thumb_func 0x808df44 +thumb_func 0x808df64 +thumb_func 0x808e004 +thumb_func 0x808e04c +thumb_func 0x808e068 +thumb_func 0x808e0b8 +thumb_func 0x808e0cc +thumb_func 0x808e0fc +thumb_func 0x808e154 +thumb_func 0x808e19c +thumb_func 0x808e1f0 +thumb_func 0x808e204 +thumb_func 0x808e230 +thumb_func 0x808e264 +thumb_func 0x808e28c +thumb_func 0x808e2c4 +thumb_func 0x808e2f0 +thumb_func 0x808e338 +thumb_func 0x808e3a8 +thumb_func 0x808e420 +thumb_func 0x808e434 +thumb_func 0x808e454 +thumb_func 0x808e464 +thumb_func 0x808e478 +thumb_func 0x808e518 +thumb_func 0x808e56c +thumb_func 0x808e580 +thumb_func 0x808e5e8 +thumb_func 0x808e650 +thumb_func 0x808e678 +thumb_func 0x808e6a4 +thumb_func 0x808e6e8 +thumb_func 0x808e710 +thumb_func 0x808e74c +thumb_func 0x808e784 +thumb_func 0x808e7b4 +thumb_func 0x808e7fc +thumb_func 0x808e818 +thumb_func 0x808e834 +thumb_func 0x808e84c +thumb_func 0x808e85c +thumb_func 0x808e8c0 +thumb_func 0x808e930 +thumb_func 0x808e974 +thumb_func 0x808e98c +thumb_func 0x808e9b0 +thumb_func 0x808e9c8 +thumb_func 0x808e9f0 +thumb_func 0x808ea2c +thumb_func 0x808ea44 +thumb_func 0x808ea80 +thumb_func 0x808ea98 +thumb_func 0x808eaec +thumb_func 0x808eb24 +thumb_func 0x808eb78 +thumb_func 0x808eb98 +thumb_func 0x808ebac +thumb_func 0x808ebc4 +thumb_func 0x808ebfc +thumb_func 0x808ec68 +thumb_func 0x808ecd0 +thumb_func 0x808ed50 +thumb_func 0x808ed74 +thumb_func 0x808ed78 +thumb_func 0x808ed9c +thumb_func 0x808edb0 +thumb_func 0x808edbc +thumb_func 0x808edd0 +thumb_func 0x808edfc +thumb_func 0x808ee38 +thumb_func 0x808ee58 +thumb_func 0x808eea4 +thumb_func 0x808eed4 +thumb_func 0x808eefc +thumb_func 0x808ef78 +thumb_func 0x808efa8 +thumb_func 0x808efb8 +thumb_func 0x808efcc +thumb_func 0x808f028 +thumb_func 0x808f084 +thumb_func 0x808f0e0 +thumb_func 0x808f13c +thumb_func 0x808f178 +thumb_func 0x808f1b4 +thumb_func 0x808f1f0 +thumb_func 0x808f22c +thumb_func 0x808f2b4 +thumb_func 0x808f2d8 +thumb_func 0x808f2ec +thumb_func 0x808f2f8 +thumb_func 0x808f30c +thumb_func 0x808f338 +thumb_func 0x808f37c +thumb_func 0x808f3ac +thumb_func 0x808f3f4 +thumb_func 0x808f418 +thumb_func 0x808f42c +thumb_func 0x808f438 +thumb_func 0x808f44c +thumb_func 0x808f478 +thumb_func 0x808f4b4 +thumb_func 0x808f4d4 +thumb_func 0x808f520 +thumb_func 0x808f550 +thumb_func 0x808f578 +thumb_func 0x808f59c +thumb_func 0x808f5b0 +thumb_func 0x808f5bc +thumb_func 0x808f5d0 +thumb_func 0x808f5fc +thumb_func 0x808f638 +thumb_func 0x808f658 +thumb_func 0x808f6a4 +thumb_func 0x808f6d4 +thumb_func 0x808f6fc +thumb_func 0x808f720 +thumb_func 0x808f734 +thumb_func 0x808f740 +thumb_func 0x808f76c +thumb_func 0x808f78c +thumb_func 0x808f79c +thumb_func 0x808f7e0 +thumb_func 0x808f7f4 +thumb_func 0x808f800 +thumb_func 0x808f8b8 +thumb_func 0x808f8d8 +thumb_func 0x808f924 +thumb_func 0x808f974 +thumb_func 0x808f9c0 +thumb_func 0x808f9e4 +thumb_func 0x808f9f8 +thumb_func 0x808fa04 +thumb_func 0x808fa18 +thumb_func 0x808fa44 +thumb_func 0x808fa88 +thumb_func 0x808fab8 +thumb_func 0x808fb00 +thumb_func 0x808fb24 +thumb_func 0x808fb38 +thumb_func 0x808fb44 +thumb_func 0x808fb58 +thumb_func 0x808fb84 +thumb_func 0x808fbc8 +thumb_func 0x808fbf8 +thumb_func 0x808fc40 +thumb_func 0x808fc64 +thumb_func 0x808fc78 +thumb_func 0x808fc84 +thumb_func 0x808fc98 +thumb_func 0x808fcc4 +thumb_func 0x808fd08 +thumb_func 0x808fd38 +thumb_func 0x808fd80 +thumb_func 0x808fda4 +thumb_func 0x808fdb8 +thumb_func 0x808fdc4 +thumb_func 0x808fdd8 +thumb_func 0x808fe04 +thumb_func 0x808fe48 +thumb_func 0x808fe78 +thumb_func 0x808fec0 +thumb_func 0x808fee4 +thumb_func 0x808fef8 +thumb_func 0x808ff04 +thumb_func 0x808ff18 +thumb_func 0x808ff44 +thumb_func 0x808ff88 +thumb_func 0x808ffb8 +thumb_func 0x8090000 +thumb_func 0x8090024 +thumb_func 0x8090038 +thumb_func 0x8090044 +thumb_func 0x8090058 +thumb_func 0x8090084 +thumb_func 0x80900c8 +thumb_func 0x80900f8 +thumb_func 0x8090140 +thumb_func 0x8090164 +thumb_func 0x8090178 +thumb_func 0x8090184 +thumb_func 0x8090198 +thumb_func 0x80901c4 +thumb_func 0x8090208 +thumb_func 0x8090238 +thumb_func 0x8090280 +thumb_func 0x80902a4 +thumb_func 0x80902b8 +thumb_func 0x80902c4 +thumb_func 0x80902d8 +thumb_func 0x8090304 +thumb_func 0x8090348 +thumb_func 0x8090378 +thumb_func 0x80903c0 +thumb_func 0x80903e4 +thumb_func 0x80903f8 +thumb_func 0x8090404 +thumb_func 0x8090418 +thumb_func 0x8090444 +thumb_func 0x8090488 +thumb_func 0x80904b8 +thumb_func 0x8090500 +thumb_func 0x8090524 +thumb_func 0x8090538 +thumb_func 0x8090544 +thumb_func 0x8090558 +thumb_func 0x8090584 +thumb_func 0x80905c8 +thumb_func 0x80905f8 +thumb_func 0x8090640 +thumb_func 0x8090664 +thumb_func 0x8090678 +thumb_func 0x8090684 +thumb_func 0x80906b0 +thumb_func 0x80906d4 +thumb_func 0x8090700 +thumb_func 0x8090744 +thumb_func 0x8090768 +thumb_func 0x809077c +thumb_func 0x8090788 +thumb_func 0x80907b4 +thumb_func 0x80907d8 +thumb_func 0x8090804 +thumb_func 0x8090848 +thumb_func 0x809086c +thumb_func 0x8090880 +thumb_func 0x809088c +thumb_func 0x80908a0 +thumb_func 0x80908d8 +thumb_func 0x8090990 +thumb_func 0x80909b8 +thumb_func 0x80909cc +thumb_func 0x8090a80 +thumb_func 0x8090aa8 +thumb_func 0x8090acc +thumb_func 0x8090ae0 +thumb_func 0x8090aec +thumb_func 0x8090b34 +thumb_func 0x8090b58 +thumb_func 0x8090b6c +thumb_func 0x8090b78 +thumb_func 0x8090bc0 +thumb_func 0x8090be4 +thumb_func 0x8090bf8 +thumb_func 0x8090c04 +thumb_func 0x8090c4c +thumb_func 0x8090c70 +thumb_func 0x8090c84 +thumb_func 0x8090c90 +thumb_func 0x8090cd8 +thumb_func 0x8090cfc +thumb_func 0x8090d10 +thumb_func 0x8090d1c +thumb_func 0x8090d64 +thumb_func 0x8090d88 +thumb_func 0x8090d9c +thumb_func 0x8090da8 +thumb_func 0x8090df0 +thumb_func 0x8090e14 +thumb_func 0x8090e28 +thumb_func 0x8090e34 +thumb_func 0x8090e7c +thumb_func 0x8090ea0 +thumb_func 0x8090eb4 +thumb_func 0x8090ec0 +thumb_func 0x8090f08 +thumb_func 0x8090f2c +thumb_func 0x8090f40 +thumb_func 0x8090f4c +thumb_func 0x8090f94 +thumb_func 0x8090fb8 +thumb_func 0x8090fcc +thumb_func 0x8090fd8 +thumb_func 0x8091020 +thumb_func 0x8091044 +thumb_func 0x8091058 +thumb_func 0x8091064 +thumb_func 0x80910ac +thumb_func 0x80910d0 +thumb_func 0x80910e4 +thumb_func 0x80910f0 +thumb_func 0x8091138 +thumb_func 0x809115c +thumb_func 0x8091170 +thumb_func 0x809117c +thumb_func 0x80911c4 +thumb_func 0x80911e8 +thumb_func 0x80911fc +thumb_func 0x8091208 +thumb_func 0x8091250 +thumb_func 0x8091274 +thumb_func 0x8091288 +thumb_func 0x8091294 +thumb_func 0x80912dc +thumb_func 0x8091300 +thumb_func 0x8091314 +thumb_func 0x8091320 +thumb_func 0x8091368 +thumb_func 0x809138c +thumb_func 0x80913a0 +thumb_func 0x80913ac +thumb_func 0x80913f4 +thumb_func 0x8091418 +thumb_func 0x809142c +thumb_func 0x8091438 +thumb_func 0x8091480 +thumb_func 0x80914a4 +thumb_func 0x80914b8 +thumb_func 0x80914c4 +thumb_func 0x809150c +thumb_func 0x8091530 +thumb_func 0x8091544 +thumb_func 0x8091550 +thumb_func 0x8091598 +thumb_func 0x80915bc +thumb_func 0x80915d0 +thumb_func 0x80915dc +thumb_func 0x8091624 +thumb_func 0x8091648 +thumb_func 0x809165c +thumb_func 0x8091668 +thumb_func 0x80916b0 +thumb_func 0x80916d4 +thumb_func 0x80916e8 +thumb_func 0x80916f4 +thumb_func 0x809173c +thumb_func 0x8091760 +thumb_func 0x8091774 +thumb_func 0x8091780 +thumb_func 0x80917c8 +thumb_func 0x80917ec +thumb_func 0x8091800 +thumb_func 0x809180c +thumb_func 0x8091830 +thumb_func 0x8091890 +thumb_func 0x80918b8 +thumb_func 0x80918bc +thumb_func 0x8091904 +thumb_func 0x8091a14 +thumb_func 0x8091acc +thumb_func 0x8091b84 +thumb_func 0x8091c3c +thumb_func 0x8091c84 +thumb_func 0x8091d3c +thumb_func 0x8091e04 +thumb_func 0x8091e28 +thumb_func 0x8091e3c +thumb_func 0x8091e48 +thumb_func 0x8091eac +thumb_func 0x8091f1c +thumb_func 0x8091f28 +thumb_func 0x8091f98 +thumb_func 0x8091ffc +thumb_func 0x8092010 +thumb_func 0x809201c +thumb_func 0x8092028 +thumb_func 0x8092044 +thumb_func 0x8092068 +thumb_func 0x809207c +thumb_func 0x8092088 +thumb_func 0x80920b4 +thumb_func 0x80920d8 +thumb_func 0x80920ec +thumb_func 0x80920f8 +thumb_func 0x8092124 +thumb_func 0x8092148 +thumb_func 0x809215c +thumb_func 0x8092168 +thumb_func 0x8092194 +thumb_func 0x80921b8 +thumb_func 0x80921cc +thumb_func 0x80921d8 +thumb_func 0x8092204 +thumb_func 0x8092228 +thumb_func 0x809223c +thumb_func 0x8092248 +thumb_func 0x809227c +thumb_func 0x809229c +thumb_func 0x80922ac +thumb_func 0x80922cc +thumb_func 0x80922dc +thumb_func 0x80922ec +thumb_func 0x80922fc +thumb_func 0x809230c +thumb_func 0x809231c +thumb_func 0x809232c +thumb_func 0x809233c +thumb_func 0x809234c +thumb_func 0x809235c +thumb_func 0x809236c +thumb_func 0x809237c +thumb_func 0x809238c +thumb_func 0x809239c +thumb_func 0x80923ac +thumb_func 0x80923bc +thumb_func 0x80923e0 +thumb_func 0x8092428 +thumb_func 0x8092468 +thumb_func 0x809249c +thumb_func 0x80924e8 +thumb_func 0x80924f8 +thumb_func 0x8092538 +thumb_func 0x80925fc +thumb_func 0x80926c8 +thumb_func 0x8092738 +thumb_func 0x8092790 +thumb_func 0x809280c +thumb_func 0x8092860 +thumb_func 0x80928ac +thumb_func 0x80928d0 +thumb_func 0x80928f8 +thumb_func 0x8092960 +thumb_func 0x80929a8 +thumb_func 0x8092a50 +thumb_func 0x8092a9c +thumb_func 0x8092adc +thumb_func 0x8092afc +thumb_func 0x8092b14 +thumb_func 0x8092b30 +thumb_func 0x8092b78 +thumb_func 0x8092b94 +thumb_func 0x8092bac +thumb_func 0x8092be0 +thumb_func 0x8092bf4 +thumb_func 0x8092c18 +thumb_func 0x8092c30 +thumb_func 0x8092ca0 +thumb_func 0x8092ccc +thumb_func 0x8092cf8 +thumb_func 0x8092d24 +thumb_func 0x8092d50 +thumb_func 0x8092d7c +thumb_func 0x8092da8 +thumb_func 0x8092dd4 +thumb_func 0x8092e00 +thumb_func 0x8092e2c +thumb_func 0x8092e58 +thumb_func 0x8092e84 +thumb_func 0x8092eb0 +thumb_func 0x8092edc +thumb_func 0x8092f08 +thumb_func 0x8092f34 +thumb_func 0x8092f60 +thumb_func 0x8092f8c +thumb_func 0x8092fb8 +thumb_func 0x8092fe4 +thumb_func 0x8093010 +thumb_func 0x809303c +thumb_func 0x8093068 +thumb_func 0x8093094 +thumb_func 0x80930c0 +thumb_func 0x80930ec +thumb_func 0x8093118 +thumb_func 0x8093144 +thumb_func 0x8093170 +thumb_func 0x80931a4 +thumb_func 0x80931bc +thumb_func 0x80931fc +thumb_func 0x809321c +thumb_func 0x8093234 +thumb_func 0x8093258 +thumb_func 0x8093274 +thumb_func 0x809327c +thumb_func 0x80932c0 +thumb_func 0x80932d0 +thumb_func 0x80932e0 +thumb_func 0x80932f0 +thumb_func 0x8093300 +thumb_func 0x809339c +thumb_func 0x80933f8 +thumb_func 0x8093428 +thumb_func 0x8093460 +thumb_func 0x80934d0 +thumb_func 0x80934fc +thumb_func 0x8093534 +thumb_func 0x8093554 +thumb_func 0x8093574 +thumb_func 0x8093594 +thumb_func 0x80935b4 +thumb_func 0x80935d4 +thumb_func 0x80935f4 +thumb_func 0x8093614 +thumb_func 0x8093634 +thumb_func 0x8093654 +thumb_func 0x8093674 +thumb_func 0x8093694 +thumb_func 0x80936b4 +thumb_func 0x80936d4 +thumb_func 0x80936f4 +thumb_func 0x8093714 +thumb_func 0x8093734 +thumb_func 0x8093754 +thumb_func 0x8093774 +thumb_func 0x8093794 +thumb_func 0x80937b4 +thumb_func 0x80937d4 +thumb_func 0x80937f4 +thumb_func 0x8093814 +thumb_func 0x8093834 +thumb_func 0x8093854 +thumb_func 0x8093874 +thumb_func 0x8093894 +thumb_func 0x80938b4 +thumb_func 0x80938d4 +thumb_func 0x80938f4 +thumb_func 0x8093914 +thumb_func 0x8093934 +thumb_func 0x80939f0 +thumb_func 0x8093a34 +thumb_func 0x8093af8 +thumb_func 0x8093b0c +thumb_func 0x8093b20 +thumb_func 0x8093b38 +thumb_func 0x8093b50 +thumb_func 0x8093ba0 +thumb_func 0x8093bcc +thumb_func 0x8093bf8 +thumb_func 0x8093c24 +thumb_func 0x8093c50 +thumb_func 0x8093c7c +thumb_func 0x8093ca8 +thumb_func 0x8093cd4 +thumb_func 0x8093d00 +thumb_func 0x8093d08 +thumb_func 0x8093d24 +thumb_func 0x8093d44 +thumb_func 0x8093d64 +thumb_func 0x8093d84 +thumb_func 0x8093da4 +thumb_func 0x8093dc4 +thumb_func 0x8093de4 +thumb_func 0x8093e04 +thumb_func 0x8093e24 +thumb_func 0x8093e44 +thumb_func 0x8093e64 +thumb_func 0x8093e84 +thumb_func 0x8093ea4 +thumb_func 0x8093ec4 +thumb_func 0x8093f0c +thumb_func 0x8093f34 +thumb_func 0x8093f70 +thumb_func 0x8093fa8 +thumb_func 0x8093fe0 +thumb_func 0x8094018 +thumb_func 0x8094050 +thumb_func 0x8094088 +thumb_func 0x80940c0 +thumb_func 0x80940f8 +thumb_func 0x8094130 +thumb_func 0x8094168 +thumb_func 0x80941a0 +thumb_func 0x80941d8 +thumb_func 0x8094210 +thumb_func 0x8094248 +thumb_func 0x8094280 +thumb_func 0x80942b8 +thumb_func 0x80942f0 +thumb_func 0x8094310 +thumb_func 0x8094330 +thumb_func 0x8094350 +thumb_func 0x8094370 +thumb_func 0x8094390 +thumb_func 0x80943b0 +thumb_func 0x80943d0 +thumb_func 0x80943f0 +thumb_func 0x8094410 +thumb_func 0x8094430 +thumb_func 0x8094450 +thumb_func 0x8094470 +thumb_func 0x8094490 +thumb_func 0x80944b0 +thumb_func 0x80944d0 +thumb_func 0x80944f0 +thumb_func 0x8094510 +thumb_func 0x8094530 +thumb_func 0x8094550 +thumb_func 0x8094570 +thumb_func 0x8094590 +thumb_func 0x80945b0 +thumb_func 0x80945d0 +thumb_func 0x80945f0 +thumb_func 0x8094610 +thumb_func 0x8094630 +thumb_func 0x8094650 +thumb_func 0x8094670 +thumb_func 0x8094690 +thumb_func 0x80946b0 +thumb_func 0x80946d0 +thumb_func 0x80946f0 +thumb_func 0x809471c +thumb_func 0x8094734 +thumb_func 0x8094754 +thumb_func 0x8094788 +thumb_func 0x80947a8 +thumb_func 0x80947d0 +thumb_func 0x80947f0 +thumb_func 0x8094818 +thumb_func 0x8094838 +thumb_func 0x8094860 +thumb_func 0x8094880 +thumb_func 0x80948a8 +thumb_func 0x8094904 +thumb_func 0x8094968 +thumb_func 0x8094978 +thumb_func 0x8094988 +thumb_func 0x80949b4 +thumb_func 0x80949e0 +thumb_func 0x8094a0c +thumb_func 0x8094a38 +thumb_func 0x8094a64 +thumb_func 0x8094a90 +thumb_func 0x8094abc +thumb_func 0x8094ae8 +thumb_func 0x8094b14 +thumb_func 0x8094b40 +thumb_func 0x8094b6c +thumb_func 0x8094b98 +thumb_func 0x8094bc4 +thumb_func 0x8094bf0 +thumb_func 0x8094c1c +thumb_func 0x8094c48 +thumb_func 0x8094c74 +thumb_func 0x8094ca0 +thumb_func 0x8094ccc +thumb_func 0x8094cf8 +thumb_func 0x8094d24 +thumb_func 0x8094d50 +thumb_func 0x8094d7c +thumb_func 0x8094da8 +thumb_func 0x8094dc0 +thumb_func 0x8094dd0 +thumb_func 0x8094de0 +thumb_func 0x8094df0 +thumb_func 0x8094e00 +thumb_func 0x8094e2c +thumb_func 0x8094e3c +thumb_func 0x8094e4c +thumb_func 0x8094e70 +thumb_func 0x8094e94 +thumb_func 0x8094eb8 +thumb_func 0x8094efc +thumb_func 0x8094f1c +thumb_func 0x8094f38 +thumb_func 0x8094f5c +thumb_func 0x8094f98 +thumb_func 0x8094fb4 +thumb_func 0x8094fd8 +thumb_func 0x8095014 +thumb_func 0x8095024 +thumb_func 0x8095034 +thumb_func 0x8095064 +thumb_func 0x8095094 +thumb_func 0x80950a0 +thumb_func 0x80950b0 +thumb_func 0x80950e4 +thumb_func 0x8095110 +thumb_func 0x8095144 +thumb_func 0x8095170 +thumb_func 0x80951a4 +thumb_func 0x80951d0 +thumb_func 0x8095204 +thumb_func 0x8095230 +thumb_func 0x8095270 +thumb_func 0x8095280 +thumb_func 0x8095290 +thumb_func 0x80952a0 +thumb_func 0x80952b0 +thumb_func 0x80952d4 +thumb_func 0x80952f8 +thumb_func 0x809531c +thumb_func 0x8095340 +thumb_func 0x8095364 +thumb_func 0x8095388 +thumb_func 0x80953ac +thumb_func 0x80953d0 +thumb_func 0x80953f4 +thumb_func 0x8095418 +thumb_func 0x809543c +thumb_func 0x8095460 +thumb_func 0x809547c +thumb_func 0x80954b4 +thumb_func 0x80954d4 +thumb_func 0x80954f4 +thumb_func 0x8095538 +thumb_func 0x8095564 +thumb_func 0x8095590 +thumb_func 0x80955bc +thumb_func 0x80955e8 +thumb_func 0x8095614 +thumb_func 0x8095640 +thumb_func 0x809566c +thumb_func 0x8095698 +thumb_func 0x80956c4 +thumb_func 0x80956f0 +thumb_func 0x809571c +thumb_func 0x8095748 +thumb_func 0x8095774 +thumb_func 0x80957a0 +thumb_func 0x80957cc +thumb_func 0x80957f8 +thumb_func 0x8095824 +thumb_func 0x8095850 +thumb_func 0x809587c +thumb_func 0x80958a8 +thumb_func 0x80958d4 +thumb_func 0x8095900 +thumb_func 0x809592c +thumb_func 0x8095958 +thumb_func 0x8095990 +thumb_func 0x80959c8 +thumb_func 0x8095a00 +thumb_func 0x8095a38 +thumb_func 0x8095a70 +thumb_func 0x8095a90 +thumb_func 0x8095ab0 +thumb_func 0x8095ad0 +thumb_func 0x8095af0 +thumb_func 0x8095b10 +thumb_func 0x8095b30 +thumb_func 0x8095b50 +thumb_func 0x8095b70 +thumb_func 0x8095ba0 +thumb_func 0x8095bc0 +thumb_func 0x8095be0 +thumb_func 0x8095c00 +thumb_func 0x8095c20 +thumb_func 0x8095c40 +thumb_func 0x8095c60 +thumb_func 0x8095c80 +thumb_func 0x8095ca0 +thumb_func 0x8095cd8 +thumb_func 0x8095cf8 +thumb_func 0x8095d18 +thumb_func 0x8095d38 +thumb_func 0x8095d58 +thumb_func 0x8095d78 +thumb_func 0x8095d98 +thumb_func 0x8095db8 +thumb_func 0x8095dd8 +thumb_func 0x8095dec +thumb_func 0x8095e04 +thumb_func 0x8095e28 +thumb_func 0x8095e2c +thumb_func 0x8095e3c +thumb_func 0x8095e58 +thumb_func 0x8095e88 +thumb_func 0x8095ea0 +thumb_func 0x8095f80 +thumb_func 0x8095fa8 +thumb_func 0x8095ff0 +thumb_func 0x8096048 +thumb_func 0x8096098 +thumb_func 0x80960c0 +thumb_func 0x809611c +thumb_func 0x809613c +thumb_func 0x809615c +thumb_func 0x809617c +thumb_func 0x809619c +thumb_func 0x80961dc +thumb_func 0x809622c +thumb_func 0x8096290 +thumb_func 0x80962c0 +thumb_func 0x80962e0 +thumb_func 0x8096330 +thumb_func 0x8096380 +thumb_func 0x80963a0 +thumb_func 0x80963fc +thumb_func 0x809654c +thumb_func 0x809657c +thumb_func 0x80965d8 +thumb_func 0x8096634 +thumb_func 0x8096670 +thumb_func 0x80966cc +thumb_func 0x8096718 +thumb_func 0x8096728 +thumb_func 0x809677c +thumb_func 0x80967c4 +thumb_func 0x80967e0 +thumb_func 0x8096800 +thumb_func 0x809684c +thumb_func 0x8096898 +thumb_func 0x80968e4 +thumb_func 0x8096930 +thumb_func 0x809693c +thumb_func 0x8096948 +thumb_func 0x8096958 +thumb_func 0x8096984 +thumb_func 0x80969b0 nullsub_47 +thumb_func 0x80969b4 +thumb_func 0x8096a04 +thumb_func 0x8096a54 +thumb_func 0x8096a60 +thumb_func 0x8096a70 +thumb_func 0x8096a80 +thumb_func 0x8096ad8 +thumb_func 0x8096b00 +thumb_func 0x8096b30 +thumb_func 0x8096b60 +thumb_func 0x8096b90 +thumb_func 0x8096ba0 +thumb_func 0x8096bb0 +thumb_func 0x8096bd0 +thumb_func 0x8096c2c +thumb_func 0x8096c64 +thumb_func 0x8096c80 +thumb_func 0x8096ccc +thumb_func 0x8096d20 +thumb_func 0x8096d74 +thumb_func 0x8096e04 +thumb_func 0x8096e40 +thumb_func 0x8096e84 +thumb_func 0x8096eec +thumb_func 0x8096f1c +thumb_func 0x8096f3c +thumb_func 0x8096f60 +thumb_func 0x8096f88 +thumb_func 0x8096fac +thumb_func 0x8096fd0 +thumb_func 0x8096fe4 +thumb_func 0x809704c +thumb_func 0x809705c +thumb_func 0x8097098 +thumb_func 0x80970ac +thumb_func 0x80970c0 +thumb_func 0x80970c8 +thumb_func 0x8097190 +thumb_func 0x80971ac +thumb_func 0x80971cc +thumb_func 0x8097254 +thumb_func 0x80972e8 +thumb_func 0x80972ec +thumb_func 0x8097304 +thumb_func 0x809732c +thumb_func 0x8097344 +thumb_func 0x8097438 +thumb_func 0x8097460 +thumb_func 0x809749c +thumb_func 0x80974e8 +thumb_func 0x8097524 +thumb_func 0x80975b4 +thumb_func 0x80975fc +thumb_func 0x8097634 +thumb_func 0x8097664 +thumb_func 0x80976a0 +thumb_func 0x80976d8 +thumb_func 0x8097724 +thumb_func 0x8097758 +thumb_func 0x8097780 +thumb_func 0x809779c +thumb_func 0x80977d8 +thumb_func 0x8097878 +thumb_func 0x8097900 +thumb_func 0x809792c +thumb_func 0x809796c +thumb_func 0x80979cc +thumb_func 0x80979fc +thumb_func 0x8097a48 +thumb_func 0x8097a58 +thumb_func 0x8097a7c +thumb_func 0x8097a90 +thumb_func 0x8097aac +thumb_func 0x8097ab0 +thumb_func 0x8097adc +thumb_func 0x8097b44 +thumb_func 0x8097b58 +thumb_func 0x8097b74 +thumb_func 0x8097b9c +thumb_func 0x8097bc0 +thumb_func 0x8097c00 +thumb_func 0x8097c28 +thumb_func 0x8097c40 +thumb_func 0x8097c64 +thumb_func 0x8097c8c +thumb_func 0x8097c9c +thumb_func 0x8097cb8 +thumb_func 0x8097cc4 +thumb_func 0x8097ce0 +thumb_func 0x8097cfc +thumb_func 0x8097d10 +thumb_func 0x8097d2c +thumb_func 0x8097d4c +thumb_func 0x8097d70 +thumb_func 0x8097d88 +thumb_func 0x8097e04 +thumb_func 0x8097e28 +thumb_func 0x8097e7c +thumb_func 0x8097eac +thumb_func 0x8097efc +thumb_func 0x8097f24 +thumb_func 0x8097f44 +thumb_func 0x8097fb8 +thumb_func 0x80980bc +thumb_func 0x80980e0 +thumb_func 0x8098104 +thumb_func 0x8098144 +thumb_func 0x809815c +thumb_func 0x80981b4 +thumb_func 0x80981e0 +thumb_func 0x8098368 +thumb_func 0x8098504 +thumb_func 0x80985a0 +thumb_func 0x80985ec +thumb_func 0x80985f4 +thumb_func 0x8098640 +thumb_func 0x809867c +thumb_func 0x8098688 +thumb_func 0x8098690 +thumb_func 0x8098698 +thumb_func 0x8098720 +thumb_func 0x8098748 +thumb_func 0x809876c +thumb_func 0x8098770 +thumb_func 0x8098784 +thumb_func 0x8098794 +thumb_func 0x80987ac +thumb_func 0x80987dc +thumb_func 0x80987e8 +thumb_func 0x80987f4 +thumb_func 0x8098800 +thumb_func 0x809881c +thumb_func 0x8098844 +thumb_func 0x8098880 +thumb_func 0x80988b8 +thumb_func 0x80988c4 +thumb_func 0x80988d8 +thumb_func 0x8098910 +thumb_func 0x8098950 +thumb_func 0x8098968 +thumb_func 0x80989c8 +thumb_func 0x80989d4 +thumb_func 0x80989e0 +thumb_func 0x80989ec +thumb_func 0x80989f8 +thumb_func 0x8098a04 +thumb_func 0x8098a20 +thumb_func 0x8098a34 +thumb_func 0x8098a58 +thumb_func 0x8098a84 +thumb_func 0x8098b10 +thumb_func 0x8098b80 +thumb_func 0x8098bcc +thumb_func 0x8098c28 +thumb_func 0x8098c54 +thumb_func 0x8098c58 nullsub_48 +thumb_func 0x8098c5c +thumb_func 0x8098c68 +thumb_func 0x8098c80 +thumb_func 0x8098c94 +thumb_func 0x8098ca0 +thumb_func 0x8098cc8 +thumb_func 0x8098cd4 +thumb_func 0x8098ce0 +thumb_func 0x8098ce4 +thumb_func 0x8098cf0 +thumb_func 0x8098d08 +thumb_func 0x8098d14 +thumb_func 0x8098d2c +thumb_func 0x8098d68 +thumb_func 0x8098da4 +thumb_func 0x8098dc0 +thumb_func 0x8098de4 +thumb_func 0x8098e08 +thumb_func 0x8098e4c +thumb_func 0x8098e90 +thumb_func 0x8098ec0 +thumb_func 0x8098ef0 +thumb_func 0x8098f3c +thumb_func 0x8098f88 +thumb_func 0x8098f9c +thumb_func 0x8098fb4 +thumb_func 0x8098fcc +thumb_func 0x8098ff0 +thumb_func 0x8099014 +thumb_func 0x809902c +thumb_func 0x8099048 +thumb_func 0x809906c +thumb_func 0x809908c +thumb_func 0x80990a8 +thumb_func 0x80990cc +thumb_func 0x80990f8 +thumb_func 0x8099124 +thumb_func 0x8099144 +thumb_func 0x8099174 +thumb_func 0x809919c +thumb_func 0x80991c8 +thumb_func 0x80991f4 +thumb_func 0x8099214 +thumb_func 0x8099238 +thumb_func 0x8099268 +thumb_func 0x809929c +thumb_func 0x80992c4 +thumb_func 0x80992f4 +thumb_func 0x8099328 +thumb_func 0x809936c +thumb_func 0x80993b0 +thumb_func 0x80993f4 +thumb_func 0x8099438 +thumb_func 0x8099464 +thumb_func 0x80994a8 +thumb_func 0x80994ec +thumb_func 0x8099518 +thumb_func 0x8099544 +thumb_func 0x8099570 +thumb_func 0x809959c +thumb_func 0x80995b0 +thumb_func 0x80995c4 +thumb_func 0x80995e0 +thumb_func 0x80995f8 +thumb_func 0x8099614 +thumb_func 0x8099630 +thumb_func 0x8099650 +thumb_func 0x8099678 +thumb_func 0x80996a8 +thumb_func 0x809971c +thumb_func 0x809973c +thumb_func 0x8099760 +thumb_func 0x8099798 +thumb_func 0x80997a4 +thumb_func 0x80997dc +thumb_func 0x80997f8 +thumb_func 0x8099804 +thumb_func 0x8099810 +thumb_func 0x8099828 +thumb_func 0x8099844 +thumb_func 0x80998cc +thumb_func 0x8099954 +thumb_func 0x80999dc +thumb_func 0x8099a50 +thumb_func 0x8099ad8 +thumb_func 0x8099b60 +thumb_func 0x8099be0 +thumb_func 0x8099c64 +thumb_func 0x8099ce4 +thumb_func 0x8099d64 +thumb_func 0x8099de4 +thumb_func 0x8099e20 +thumb_func 0x8099e3c +thumb_func 0x8099e50 +thumb_func 0x8099e68 +thumb_func 0x8099e7c +thumb_func 0x8099e90 +thumb_func 0x8099ea0 +thumb_func 0x8099eb4 +thumb_func 0x8099ee4 +thumb_func 0x8099ef8 +thumb_func 0x8099f04 +thumb_func 0x8099f18 +thumb_func 0x8099f4c +thumb_func 0x8099f70 +thumb_func 0x8099fb4 +thumb_func 0x8099ff8 +thumb_func 0x809a020 +thumb_func 0x809a074 +thumb_func 0x809a0c8 +thumb_func 0x809a0f0 +thumb_func 0x809a120 +thumb_func 0x809a148 +thumb_func 0x809a178 +thumb_func 0x809a1e0 +thumb_func 0x809a238 +thumb_func 0x809a260 +thumb_func 0x809a290 +thumb_func 0x809a2c0 +thumb_func 0x809a2fc +thumb_func 0x809a32c +thumb_func 0x809a364 +thumb_func 0x809a398 +thumb_func 0x809a3c0 +thumb_func 0x809a430 +thumb_func 0x809a44c +thumb_func 0x809a474 +thumb_func 0x809a4cc +thumb_func 0x809a504 +thumb_func 0x809a55c +thumb_func 0x809a578 +thumb_func 0x809a594 +thumb_func 0x809a5c4 +thumb_func 0x809a600 +thumb_func 0x809a614 +thumb_func 0x809a620 +thumb_func 0x809a648 +thumb_func 0x809a65c +thumb_func 0x809a688 +thumb_func 0x809a6c4 +thumb_func 0x809a714 +thumb_func 0x809a718 +thumb_func 0x809a768 +thumb_func 0x809a774 +thumb_func 0x809a780 +thumb_func 0x809a7b0 +thumb_func 0x809a7d0 +thumb_func 0x809a7f4 +thumb_func 0x809a8e4 +thumb_func 0x809a8f0 +thumb_func 0x809a90c +thumb_func 0x809a950 +thumb_func 0x809a9a0 +thumb_func 0x809a9e8 +thumb_func 0x809aa1c +thumb_func 0x809aa60 +thumb_func 0x809aa9c +thumb_func 0x809aae0 +thumb_func 0x809ab20 +thumb_func 0x809ab48 +thumb_func 0x809ab6c +thumb_func 0x809aba0 +thumb_func 0x809abdc +thumb_func 0x809ac5c +thumb_func 0x809ac88 +thumb_func 0x809acb4 +thumb_func 0x809ad30 +thumb_func 0x809ad64 +thumb_func 0x809ad98 +thumb_func 0x809add8 +thumb_func 0x809ae14 +thumb_func 0x809ae20 +thumb_func 0x809ae50 +thumb_func 0x809ae78 +thumb_func 0x809ae8c +thumb_func 0x809aea8 +thumb_func 0x809aebc +thumb_func 0x809aec8 +thumb_func 0x809aedc +thumb_func 0x809aef0 +thumb_func 0x809af14 +thumb_func 0x809af30 +thumb_func 0x809af4c +thumb_func 0x809af80 +thumb_func 0x809af90 +thumb_func 0x809afa4 +thumb_func 0x809afb8 +thumb_func 0x809afcc +thumb_func 0x809aff4 +thumb_func 0x809b030 +thumb_func 0x809b05c +thumb_func 0x809b06c +thumb_func 0x809b07c +thumb_func 0x809b08c +thumb_func 0x809b0a4 +thumb_func 0x809b0cc +thumb_func 0x809b0fc +thumb_func 0x809b11c +thumb_func 0x809b148 +thumb_func 0x809b164 +thumb_func 0x809b17c +thumb_func 0x809b1b4 +thumb_func 0x809b1c8 +thumb_func 0x809b248 +thumb_func 0x809b2a0 +thumb_func 0x809b2e4 +thumb_func 0x809b2fc +thumb_func 0x809b310 +thumb_func 0x809b354 +thumb_func 0x809b398 +thumb_func 0x809b3d4 +thumb_func 0x809b3d8 +thumb_func 0x809b3f8 +thumb_func 0x809b430 +thumb_func 0x809b468 +thumb_func 0x809b48c +thumb_func 0x809b498 +thumb_func 0x809b4b4 +thumb_func 0x809b4c0 +thumb_func 0x809b4d4 +thumb_func 0x809b51c +thumb_func 0x809b554 +thumb_func 0x809b58c +thumb_func 0x809b5b4 +thumb_func 0x809b648 +thumb_func 0x809b68c +thumb_func 0x809b6a8 +thumb_func 0x809b6e4 +thumb_func 0x809b720 +thumb_func 0x809b72c +thumb_func 0x809b7b4 +thumb_func 0x809b7e0 +thumb_func 0x809b8ec +thumb_func 0x809ba54 +thumb_func 0x809ba6c +thumb_func 0x809baa8 +thumb_func 0x809bad4 +thumb_func 0x809bb48 +thumb_func 0x809bba0 +thumb_func 0x809bc5c +thumb_func 0x809bd30 +thumb_func 0x809be10 +thumb_func 0x809c0c4 +thumb_func 0x809c140 +thumb_func 0x809c174 +thumb_func 0x809c1b4 +thumb_func 0x809c210 +thumb_func 0x809c244 +thumb_func 0x809c2cc +thumb_func 0x809c408 +thumb_func 0x809c41c +thumb_func 0x809c458 +thumb_func 0x809c46c +thumb_func 0x809c4b4 +thumb_func 0x809c4c0 +thumb_func 0x809c510 +thumb_func 0x809c574 +thumb_func 0x809c66c +thumb_func 0x809c70c +thumb_func 0x809c764 +thumb_func 0x809c788 +thumb_func 0x809c850 +thumb_func 0x809c8dc +thumb_func 0x809c924 +thumb_func 0x809c964 +thumb_func 0x809c9cc +thumb_func 0x809c9f4 +thumb_func 0x809ca44 +thumb_func 0x809cac0 +thumb_func 0x809cb58 +thumb_func 0x809cb94 +thumb_func 0x809cbd8 +thumb_func 0x809cc1c +thumb_func 0x809cc78 +thumb_func 0x809cc98 +thumb_func 0x809ccc0 +thumb_func 0x809cd04 +thumb_func 0x809cd48 +thumb_func 0x809cd58 +thumb_func 0x809cd68 +thumb_func 0x809cd7c +thumb_func 0x809cd8c +thumb_func 0x809cd9c +thumb_func 0x809cdb0 +thumb_func 0x809ce48 +thumb_func 0x809ceb0 +thumb_func 0x809cecc +thumb_func 0x809ceec +thumb_func 0x809cf20 +thumb_func 0x809cf6c +thumb_func 0x809cf88 +thumb_func 0x809cfa8 +thumb_func 0x809cfc4 +thumb_func 0x809d018 +thumb_func 0x809d040 +thumb_func 0x809d068 +thumb_func 0x809d094 +thumb_func 0x809d0a0 +thumb_func 0x809d0ac +thumb_func 0x809d0b8 +thumb_func 0x809d0c4 +thumb_func 0x809d0d0 +thumb_func 0x809d0dc +thumb_func 0x809d0e8 +thumb_func 0x809d0f4 +thumb_func 0x809d100 +thumb_func 0x809d10c +thumb_func 0x809d118 +thumb_func 0x809d124 +thumb_func 0x809d130 +thumb_func 0x809d164 +thumb_func 0x809d190 +thumb_func 0x809d1e0 +thumb_func 0x809d214 +thumb_func 0x809d280 +thumb_func 0x809d2c8 +thumb_func 0x809d304 nullsub_49 +thumb_func 0x809d308 +thumb_func 0x809d360 +thumb_func 0x809d3e8 +thumb_func 0x809d40c +thumb_func 0x809d430 +thumb_func 0x809d454 +thumb_func 0x809d4f0 +thumb_func 0x809d58c +thumb_func 0x809d700 +thumb_func 0x809d764 +thumb_func 0x809d7c8 +thumb_func 0x809d9e0 +thumb_func 0x809da24 +thumb_func 0x809da5c +thumb_func 0x809daa0 +thumb_func 0x809dafc +thumb_func 0x809dc8c +thumb_func 0x809dd68 +thumb_func 0x809dda4 +thumb_func 0x809deb4 +thumb_func 0x809df10 +thumb_func 0x809e050 +thumb_func 0x809e088 +thumb_func 0x809e0c0 +thumb_func 0x809e130 +thumb_func 0x809e18c +thumb_func 0x809e1a0 +thumb_func 0x809e1c0 +thumb_func 0x809e2dc +thumb_func 0x809e3dc +thumb_func 0x809e464 +thumb_func 0x809e478 +thumb_func 0x809e49c +thumb_func 0x809e58c +thumb_func 0x809e610 +thumb_func 0x809e678 +thumb_func 0x809e690 +thumb_func 0x809e6c0 +thumb_func 0x809e7d8 +thumb_func 0x809e860 +thumb_func 0x809e920 +thumb_func 0x809e968 +thumb_func 0x809e984 +thumb_func 0x809e998 +thumb_func 0x809e9d0 +thumb_func 0x809ead8 +thumb_func 0x809ecf4 +thumb_func 0x809ed18 +thumb_func 0x809ed88 +thumb_func 0x809eda4 +thumb_func 0x809ee10 +thumb_func 0x809ee40 +thumb_func 0x809ee7c +thumb_func 0x809eeb8 +thumb_func 0x809eedc +thumb_func 0x809ef0c +thumb_func 0x809ef2c +thumb_func 0x809efa0 +thumb_func 0x809f04c +thumb_func 0x809f098 +thumb_func 0x809f16c +thumb_func 0x809f270 +thumb_func 0x809f28c +thumb_func 0x809f2a8 +thumb_func 0x809f2d8 +thumb_func 0x809f2f0 +thumb_func 0x809f30c +thumb_func 0x809f374 +thumb_func 0x809f39c +thumb_func 0x809f48c +thumb_func 0x809f4c8 +thumb_func 0x809f4fc +thumb_func 0x809f530 +thumb_func 0x809f564 +thumb_func 0x809f5d4 +thumb_func 0x809f5f8 +thumb_func 0x809f63c +thumb_func 0x809f64c +thumb_func 0x809f660 +thumb_func 0x809f698 +thumb_func 0x809f6ac +thumb_func 0x809f6cc +thumb_func 0x809f700 +thumb_func 0x809f71c +thumb_func 0x809f774 +thumb_func 0x809f790 +thumb_func 0x809f7ac +thumb_func 0x809f800 +thumb_func 0x809f824 +thumb_func 0x809f858 +thumb_func 0x809f870 +thumb_func 0x809f8a8 +thumb_func 0x809f8ec +thumb_func 0x809f8fc +thumb_func 0x809f908 +thumb_func 0x809f914 +thumb_func 0x809f948 +thumb_func 0x809f978 +thumb_func 0x809f9c4 +thumb_func 0x809f9e0 +thumb_func 0x809fa54 +thumb_func 0x809fa8c +thumb_func 0x809faa8 +thumb_func 0x809fac4 +thumb_func 0x809fb0c +thumb_func 0x809fb24 +thumb_func 0x809fb88 +thumb_func 0x809fbb0 +thumb_func 0x809fbd4 +thumb_func 0x809fbfc +thumb_func 0x809fc18 +thumb_func 0x809fc34 +thumb_func 0x809fc60 +thumb_func 0x809fc7c +thumb_func 0x809fcb0 +thumb_func 0x809fcbc +thumb_func 0x809fdec +thumb_func 0x809fe18 +thumb_func 0x809fe28 +thumb_func 0x809ff8c +thumb_func 0x80a0150 +thumb_func 0x80a016c +thumb_func 0x80a0194 +thumb_func 0x80a01dc +thumb_func 0x80a01fc +thumb_func 0x80a020c +thumb_func 0x80a021c +thumb_func 0x80a0248 +thumb_func 0x80a0298 +thumb_func 0x80a02e0 +thumb_func 0x80a02f4 +thumb_func 0x80a0300 +thumb_func 0x80a0370 +thumb_func 0x80a03ac +thumb_func 0x80a03e8 +thumb_func 0x80a0410 +thumb_func 0x80a0438 +thumb_func 0x80a047c +thumb_func 0x80a0494 +thumb_func 0x80a04bc +thumb_func 0x80a04e4 +thumb_func 0x80a050c +thumb_func 0x80a0534 +thumb_func 0x80a055c +thumb_func 0x80a0588 +thumb_func 0x80a05b4 +thumb_func 0x80a05e0 +thumb_func 0x80a0610 +thumb_func 0x80a063c +thumb_func 0x80a0664 +thumb_func 0x80a068c +thumb_func 0x80a06b4 +thumb_func 0x80a06dc +thumb_func 0x80a0708 +thumb_func 0x80a0738 +thumb_func 0x80a0764 +thumb_func 0x80a0790 +thumb_func 0x80a07bc +thumb_func 0x80a07e0 +thumb_func 0x80a0804 +thumb_func 0x80a0830 +thumb_func 0x80a0854 +thumb_func 0x80a0880 +thumb_func 0x80a08ac +thumb_func 0x80a08d8 +thumb_func 0x80a0904 +thumb_func 0x80a0980 +thumb_func 0x80a0998 +thumb_func 0x80a09b0 +thumb_func 0x80a0a24 +thumb_func 0x80a0a50 +thumb_func 0x80a0ac4 +thumb_func 0x80a0af4 +thumb_func 0x80a0b0c +thumb_func 0x80a0b28 +thumb_func 0x80a0b44 +thumb_func 0x80a0b5c +thumb_func 0x80a0b74 +thumb_func 0x80a0b9c +thumb_func 0x80a0be4 +thumb_func 0x80a0c0c +thumb_func 0x80a0c34 +thumb_func 0x80a0c5c +thumb_func 0x80a0cfc +thumb_func 0x80a0d38 +thumb_func 0x80a0d60 +thumb_func 0x80a0d88 +thumb_func 0x80a0dc0 +thumb_func 0x80a0de8 +thumb_func 0x80a0e10 +thumb_func 0x80a0e38 +thumb_func 0x80a0e60 +thumb_func 0x80a0e88 +thumb_func 0x80a0ea0 +thumb_func 0x80a0eb8 +thumb_func 0x80a0ee4 +thumb_func 0x80a0efc +thumb_func 0x80a0f20 +thumb_func 0x80a0f38 +thumb_func 0x80a0f50 +thumb_func 0x80a0f78 +thumb_func 0x80a0fc0 +thumb_func 0x80a0fe8 +thumb_func 0x80a1010 +thumb_func 0x80a1038 +thumb_func 0x80a1060 +thumb_func 0x80a1088 +thumb_func 0x80a10b4 +thumb_func 0x80a10e0 +thumb_func 0x80a114c +thumb_func 0x80a11bc +thumb_func 0x80a1200 +thumb_func 0x80a1238 +thumb_func 0x80a1288 +thumb_func 0x80a12e4 +thumb_func 0x80a133c +thumb_func 0x80a135c +thumb_func 0x80a139c +thumb_func 0x80a14e4 +thumb_func 0x80a152c +thumb_func 0x80a15a4 +thumb_func 0x80a1708 +thumb_func 0x80a17c8 +thumb_func 0x80a1820 +thumb_func 0x80a183c +thumb_func 0x80a1898 +thumb_func 0x80a1910 +thumb_func 0x80a193c +thumb_func 0x80a196c +thumb_func 0x80a19a0 +thumb_func 0x80a1ae0 +thumb_func 0x80a1b28 +thumb_func 0x80a1bfc +thumb_func 0x80a1c58 +thumb_func 0x80a1c7c +thumb_func 0x80a1d00 +thumb_func 0x80a2078 +thumb_func 0x80a2114 +thumb_func 0x80a2230 +thumb_func 0x80a2284 +thumb_func 0x80a22e8 +thumb_func 0x80a2324 +thumb_func 0x80a2358 +thumb_func 0x80a23a8 +thumb_func 0x80a2408 +thumb_func 0x80a2474 +thumb_func 0x80a250c +thumb_func 0x80a25c0 +thumb_func 0x80a25fc +thumb_func 0x80a2604 +thumb_func 0x80a261c +thumb_func 0x80a269c +thumb_func 0x80a26b0 +thumb_func 0x80a27a8 +thumb_func 0x80a27cc +thumb_func 0x80a27d8 +thumb_func 0x80a27f8 +thumb_func 0x80a2818 +thumb_func 0x80a2850 +thumb_func 0x80a2884 +thumb_func 0x80a28c8 +thumb_func 0x80a2904 +thumb_func 0x80a2928 +thumb_func 0x80a295c +thumb_func 0x80a2994 +thumb_func 0x80a29ac +thumb_func 0x80a29e8 +thumb_func 0x80a2a08 +thumb_func 0x80a2a38 +thumb_func 0x80a2a5c +thumb_func 0x80a2ab0 +thumb_func 0x80a2ac8 +thumb_func 0x80a2af0 +thumb_func 0x80a2b08 +thumb_func 0x80a2b20 +thumb_func 0x80a2b3c +thumb_func 0x80a2b88 +thumb_func 0x80a2bac +thumb_func 0x80a2c0c +thumb_func 0x80a2c70 +thumb_func 0x80a2ccc +thumb_func 0x80a2d14 +thumb_func 0x80a2f40 +thumb_func 0x80a2f64 +thumb_func 0x80a2f7c +thumb_func 0x80a2f90 +thumb_func 0x80a2fb4 +thumb_func 0x80a2fd4 +thumb_func 0x80a301c +thumb_func 0x80a3040 +thumb_func 0x80a306c +thumb_func 0x80a307c +thumb_func 0x80a30d0 +thumb_func 0x80a3104 +thumb_func 0x80a3138 +thumb_func 0x80a3168 +thumb_func 0x80a31ac +thumb_func 0x80a31d4 +thumb_func 0x80a31fc +thumb_func 0x80a32d8 +thumb_func 0x80a3310 +thumb_func 0x80a34c4 +thumb_func 0x80a34e4 +thumb_func 0x80a3500 +thumb_func 0x80a351c +thumb_func 0x80a354c +thumb_func 0x80a3580 +thumb_func 0x80a35ac +thumb_func 0x80a35c0 +thumb_func 0x80a35ec +thumb_func 0x80a3654 +thumb_func 0x80a36a0 +thumb_func 0x80a3794 +thumb_func 0x80a3810 +thumb_func 0x80a3850 +thumb_func 0x80a3884 nullsub_501 +thumb_func 0x80a3888 nullsub_51 +thumb_func 0x80a388c +thumb_func 0x80a3994 +thumb_func 0x80a39bc +thumb_func 0x80a3aa0 +thumb_func 0x80a3bd8 +thumb_func 0x80a3c54 +thumb_func 0x80a3f68 +thumb_func 0x80a3fe8 +thumb_func 0x80a4044 +thumb_func 0x80a40a0 +thumb_func 0x80a4178 +thumb_func 0x80a4248 +thumb_func 0x80a42e0 +thumb_func 0x80a43a4 +thumb_func 0x80a4478 +thumb_func 0x80a4510 +thumb_func 0x80a4548 +thumb_func 0x80a4570 +thumb_func 0x80a4594 +thumb_func 0x80a45c8 +thumb_func 0x80a45dc +thumb_func 0x80a4610 +thumb_func 0x80a4650 +thumb_func 0x80a4694 +thumb_func 0x80a46b8 +thumb_func 0x80a46e0 +thumb_func 0x80a4724 +thumb_func 0x80a47bc +thumb_func 0x80a4890 +thumb_func 0x80a4958 +thumb_func 0x80a4974 +thumb_func 0x80a49b8 +thumb_func 0x80a49ec +thumb_func 0x80a4a20 +thumb_func 0x80a4a40 +thumb_func 0x80a4b40 +thumb_func 0x80a4bb4 +thumb_func 0x80a4bdc +thumb_func 0x80a4c1c +thumb_func 0x80a4c54 +thumb_func 0x80a4c80 +thumb_func 0x80a4d40 +thumb_func 0x80a4dd0 +thumb_func 0x80a4e64 +thumb_func 0x80a4f24 +thumb_func 0x80a4fac +thumb_func 0x80a5008 +thumb_func 0x80a507c +thumb_func 0x80a50c0 +thumb_func 0x80a5134 +thumb_func 0x80a51b8 +thumb_func 0x80a520c +thumb_func 0x80a524c +thumb_func 0x80a52a4 +thumb_func 0x80a52d4 +thumb_func 0x80a5348 +thumb_func 0x80a5384 +thumb_func 0x80a53c4 +thumb_func 0x80a5474 +thumb_func 0x80a550c +thumb_func 0x80a5534 +thumb_func 0x80a5680 +thumb_func 0x80a5868 +thumb_func 0x80a58d4 +thumb_func 0x80a5974 +thumb_func 0x80a5a00 +thumb_func 0x80a5a14 +thumb_func 0x80a5a58 +thumb_func 0x80a5b08 +thumb_func 0x80a5b9c +thumb_func 0x80a5ba4 +thumb_func 0x80a5bb4 +thumb_func 0x80a5c14 +thumb_func 0x80a5c90 +thumb_func 0x80a5d18 +thumb_func 0x80a5d78 +thumb_func 0x80a5d98 +thumb_func 0x80a5db4 +thumb_func 0x80a5e04 +thumb_func 0x80a5e34 +thumb_func 0x80a5e70 +thumb_func 0x80a5eb4 +thumb_func 0x80a5ef8 +thumb_func 0x80a5f48 +thumb_func 0x80a5fa4 +thumb_func 0x80a6014 +thumb_func 0x80a6028 +thumb_func 0x80a606c +thumb_func 0x80a6084 +thumb_func 0x80a60a0 +thumb_func 0x80a60bc +thumb_func 0x80a60dc +thumb_func 0x80a6100 +thumb_func 0x80a612c +thumb_func 0x80a619c +thumb_func 0x80a61c8 +thumb_func 0x80a61fc +thumb_func 0x80a6230 +thumb_func 0x80a6248 +thumb_func 0x80a6294 +thumb_func 0x80a62f8 +thumb_func 0x80a630c +thumb_func 0x80a631c +thumb_func 0x80a6358 +thumb_func 0x80a63e8 +thumb_func 0x80a63f8 +thumb_func 0x80a6458 +thumb_func 0x80a64c4 +thumb_func 0x80a6530 +thumb_func 0x80a6588 +thumb_func 0x80a65d8 +thumb_func 0x80a6610 +thumb_func 0x80a6628 +thumb_func 0x80a665c +thumb_func 0x80a6674 +thumb_func 0x80a66b4 +thumb_func 0x80a66dc +thumb_func 0x80a671c +thumb_func 0x80a67b4 +thumb_func 0x80a67dc +thumb_func 0x80a6804 +thumb_func 0x80a6860 +thumb_func 0x80a687c +thumb_func 0x80a689c +thumb_func 0x80a68c8 +thumb_func 0x80a68f0 +thumb_func 0x80a6988 +thumb_func 0x80a69b0 +thumb_func 0x80a6a0c +thumb_func 0x80a6a28 +thumb_func 0x80a6a54 +thumb_func 0x80a6a7c +thumb_func 0x80a6b00 +thumb_func 0x80a6b38 +thumb_func 0x80a6c0c +thumb_func 0x80a6c68 +thumb_func 0x80a6ca8 +thumb_func 0x80a6d64 +thumb_func 0x80a6da4 +thumb_func 0x80a6dbc +thumb_func 0x80a6dd4 +thumb_func 0x80a6e74 +thumb_func 0x80a6f8c +thumb_func 0x80a7074 +thumb_func 0x80a707c +thumb_func 0x80a7090 +thumb_func 0x80a70e8 +thumb_func 0x80a7174 +thumb_func 0x80a71e4 +thumb_func 0x80a7200 +thumb_func 0x80a72b0 +thumb_func 0x80a7324 +thumb_func 0x80a733c +thumb_func 0x80a73c4 +thumb_func 0x80a7460 +thumb_func 0x80a74bc +thumb_func 0x80a74e4 +thumb_func 0x80a757c +thumb_func 0x80a75c4 +thumb_func 0x80a75fc +thumb_func 0x80a7734 +thumb_func 0x80a7788 +thumb_func 0x80a77e0 +thumb_func 0x80a7910 +thumb_func 0x80a7918 +thumb_func 0x80a7924 +thumb_func 0x80a7990 +thumb_func 0x80a7a08 +thumb_func 0x80a7a3c +thumb_func 0x80a7b40 +thumb_func 0x80a7bac +thumb_func 0x80a7bf0 +thumb_func 0x80a7c2c +thumb_func 0x80a7c5c +thumb_func 0x80a7ed8 +thumb_func 0x80a7ee4 +thumb_func 0x80a81ec +thumb_func 0x80a8290 +thumb_func 0x80a8334 +thumb_func 0x80a83b4 +thumb_func 0x80a842c +thumb_func 0x80a848c +thumb_func 0x80a8574 +thumb_func 0x80a8640 +thumb_func 0x80a86c4 +thumb_func 0x80a86f8 +thumb_func 0x80a8750 +thumb_func 0x80a87ac +thumb_func 0x80a8818 +thumb_func 0x80a8878 +thumb_func 0x80a88cc +thumb_func 0x80a8964 +thumb_func 0x80a89d4 +thumb_func 0x80a8a04 +thumb_func 0x80a8a40 nullsub_50 +thumb_func 0x80a8a44 +thumb_func 0x80a8a78 +thumb_func 0x80a8aac +thumb_func 0x80a8ae4 +thumb_func 0x80a8b14 +thumb_func 0x80a8b44 +thumb_func 0x80a8b7c +thumb_func 0x80a8bbc nullsub_10 +thumb_func 0x80a8bc0 +thumb_func 0x80a8c04 +thumb_func 0x80a8ebc +thumb_func 0x80a8edc +thumb_func 0x80a8fd0 +thumb_func 0x80a93a4 +thumb_func 0x80a9538 +thumb_func 0x80a967c +thumb_func 0x80a970c +thumb_func 0x80a9740 +thumb_func 0x80a97bc +thumb_func 0x80a9898 +thumb_func 0x80a98e8 +thumb_func 0x80a9998 +thumb_func 0x80a99ec +thumb_func 0x80a9a54 +thumb_func 0x80a9c2c +thumb_func 0x80a9c7c +thumb_func 0x80a9c8c +thumb_func 0x80a9cd4 +thumb_func 0x80a9d3c +thumb_func 0x80a9d7c +thumb_func 0x80a9db4 +thumb_func 0x80a9e10 +thumb_func 0x80a9e6c +thumb_func 0x80a9f1c +thumb_func 0x80a9f44 +thumb_func 0x80aa048 +thumb_func 0x80aa06c +thumb_func 0x80aa400 +thumb_func 0x80aa418 +thumb_func 0x80aa528 +thumb_func 0x80aa650 +thumb_func 0x80aa7b4 +thumb_func 0x80aa7d0 +thumb_func 0x80aa7ec +thumb_func 0x80aa808 +thumb_func 0x80aa824 +thumb_func 0x80aa844 +thumb_func 0x80aa8a0 +thumb_func 0x80aa994 +thumb_func 0x80aaa00 +thumb_func 0x80aaa2c +thumb_func 0x80aaa5c +thumb_func 0x80aaaac +thumb_func 0x80aab4c +thumb_func 0x80aab68 +thumb_func 0x80aab88 nullsub_53 +thumb_func 0x80aab8c +thumb_func 0x80aab90 +thumb_func 0x80aaca4 +thumb_func 0x80aad30 +thumb_func 0x80aae48 +thumb_func 0x80aaea8 +thumb_func 0x80aaf00 +thumb_func 0x80aaf3c nullsub_19 +thumb_func 0x80aaf40 +thumb_func 0x80ab144 +thumb_func 0x80ab28c +thumb_func 0x80ab3ac +thumb_func 0x80ab4c8 +thumb_func 0x80ab4fc +thumb_func 0x80ab544 +thumb_func 0x80ab578 +thumb_func 0x80ab5cc +thumb_func 0x80ab6f8 +thumb_func 0x80ab714 +thumb_func 0x80ab7fc +thumb_func 0x80ab81c +thumb_func 0x80ab848 +thumb_func 0x80ab878 +thumb_func 0x80ab880 +thumb_func 0x80ab8a0 +thumb_func 0x80ab8dc +thumb_func 0x80ab8ec +thumb_func 0x80ab918 +thumb_func 0x80aba20 +thumb_func 0x80aba60 +thumb_func 0x80abaa4 +thumb_func 0x80abb70 +thumb_func 0x80abc08 +thumb_func 0x80abc18 +thumb_func 0x80abc74 +thumb_func 0x80abcb8 +thumb_func 0x80abccc +thumb_func 0x80abce0 +thumb_func 0x80abcf4 +thumb_func 0x80abd24 +thumb_func 0x80abd34 +thumb_func 0x80abd80 +thumb_func 0x80abdb0 +thumb_func 0x80abe10 +thumb_func 0x80abe58 +thumb_func 0x80abe7c +thumb_func 0x80abe88 nullsub_541 +thumb_func 0x80abe8c +thumb_func 0x80abe90 +thumb_func 0x80abf5c +thumb_func 0x80abfb0 +thumb_func 0x80abfcc +thumb_func 0x80ac000 +thumb_func 0x80ac030 +thumb_func 0x80ac114 +thumb_func 0x80ac118 +thumb_func 0x80ac12c +thumb_func 0x80ac224 +thumb_func 0x80ac290 +thumb_func 0x80ac2c0 +thumb_func 0x80ac320 +thumb_func 0x80ac3ac +thumb_func 0x80ac480 +thumb_func 0x80ac584 +thumb_func 0x80ac5b0 +thumb_func 0x80ac664 +thumb_func 0x80ac674 +thumb_func 0x80ac7a8 +thumb_func 0x80ac834 +thumb_func 0x80ac888 +thumb_func 0x80ac8d8 +thumb_func 0x80ac944 +thumb_func 0x80ac980 +thumb_func 0x80ac9e4 +thumb_func 0x80aca60 +thumb_func 0x80acacc +thumb_func 0x80acb00 +thumb_func 0x80acbac +thumb_func 0x80acc08 +thumb_func 0x80acd40 +thumb_func 0x80acdb4 +thumb_func 0x80acde4 +thumb_func 0x80ace50 +thumb_func 0x80ace80 +thumb_func 0x80ad20c +thumb_func 0x80ad2b8 +thumb_func 0x80ad2f4 +thumb_func 0x80ad35c +thumb_func 0x80ad3bc +thumb_func 0x80ad3ec +thumb_func 0x80ad4ac +thumb_func 0x80ad548 +thumb_func 0x80ad5a8 +thumb_func 0x80ad664 +thumb_func 0x80ad6b8 +thumb_func 0x80ad714 +thumb_func 0x80ad744 +thumb_func 0x80ad7f0 +thumb_func 0x80ad858 +thumb_func 0x80ad868 +thumb_func 0x80ad910 +thumb_func 0x80ad964 +thumb_func 0x80ad9e0 +thumb_func 0x80ada64 +thumb_func 0x80ada94 +thumb_func 0x80adaf8 +thumb_func 0x80adb58 +thumb_func 0x80adbec +thumb_func 0x80adca4 +thumb_func 0x80adcf8 +thumb_func 0x80add58 +thumb_func 0x80addd8 +thumb_func 0x80ade08 +thumb_func 0x80ade84 +thumb_func 0x80adee8 +thumb_func 0x80adf20 +thumb_func 0x80adfa0 +thumb_func 0x80ae034 +thumb_func 0x80ae0f4 +thumb_func 0x80ae1f4 +thumb_func 0x80ae254 +thumb_func 0x80ae278 +thumb_func 0x80ae2ec +thumb_func 0x80ae31c +thumb_func 0x80ae328 nullsub_55 +thumb_func 0x80ae32c +thumb_func 0x80ae330 +thumb_func 0x80ae384 +thumb_func 0x80ae3b4 +thumb_func 0x80ae428 +thumb_func 0x80ae444 +thumb_func 0x80ae4cc +thumb_func 0x80ae530 +thumb_func 0x80ae590 +thumb_func 0x80ae5a4 +thumb_func 0x80ae624 +thumb_func 0x80ae678 +thumb_func 0x80ae6a8 +thumb_func 0x80ae6b8 +thumb_func 0x80ae6ec +thumb_func 0x80ae704 +thumb_func 0x80ae71c +thumb_func 0x80ae780 +thumb_func 0x80ae7e4 +thumb_func 0x80ae8b8 +thumb_func 0x80ae8d8 +thumb_func 0x80ae8f8 +thumb_func 0x80ae91c +thumb_func 0x80ae93c +thumb_func 0x80ae988 +thumb_func 0x80ae99c +thumb_func 0x80ae9b0 +thumb_func 0x80ae9f0 +thumb_func 0x80aea08 +thumb_func 0x80aea24 +thumb_func 0x80aea44 +thumb_func 0x80aea64 +thumb_func 0x80aea84 +thumb_func 0x80aeaa0 +thumb_func 0x80aeb10 +thumb_func 0x80aeb30 +thumb_func 0x80aebb0 +thumb_func 0x80aec10 +thumb_func 0x80aec30 +thumb_func 0x80aec94 +thumb_func 0x80aecac +thumb_func 0x80aecc4 +thumb_func 0x80aece4 +thumb_func 0x80aed08 +thumb_func 0x80aed34 +thumb_func 0x80aee4c +thumb_func 0x80aef0c +thumb_func 0x80aef5c +thumb_func 0x80aef84 +thumb_func 0x80aefa0 +thumb_func 0x80aefac +thumb_func 0x80aefd0 +thumb_func 0x80aefec +thumb_func 0x80af00c +thumb_func 0x80af018 +thumb_func 0x80af030 +thumb_func 0x80af068 +thumb_func 0x80af098 +thumb_func 0x80af0cc +thumb_func 0x80af0f0 +thumb_func 0x80af108 +thumb_func 0x80af124 +thumb_func 0x80af134 +thumb_func 0x80af144 +thumb_func 0x80af178 +thumb_func 0x80af1b4 +thumb_func 0x80af1dc +thumb_func 0x80af244 +thumb_func 0x80af268 +thumb_func 0x80af2f4 +thumb_func 0x80af308 +thumb_func 0x80af384 +thumb_func 0x80af4f0 +thumb_func 0x80af55c +thumb_func 0x80af594 +thumb_func 0x80af5c0 +thumb_func 0x80af64c +thumb_func 0x80af678 +thumb_func 0x80af704 +thumb_func 0x80af7c8 +thumb_func 0x80af88c +thumb_func 0x80af8b4 +thumb_func 0x80af8d8 +thumb_func 0x80af938 +thumb_func 0x80af998 +thumb_func 0x80af9e4 +thumb_func 0x80afa20 +thumb_func 0x80afa5c +thumb_func 0x80afab8 +thumb_func 0x80afb40 +thumb_func 0x80afb64 +thumb_func 0x80afb88 +thumb_func 0x80afbc4 +thumb_func 0x80afc14 +thumb_func 0x80afe30 +thumb_func 0x80afe88 +thumb_func 0x80afeb0 +thumb_func 0x80afec8 +thumb_func 0x80afeec +thumb_func 0x80aff58 +thumb_func 0x80aff94 +thumb_func 0x80affac +thumb_func 0x80affb8 +thumb_func 0x80b0028 +thumb_func 0x80b0078 +thumb_func 0x80b00b0 +thumb_func 0x80b0100 +thumb_func 0x80b0124 +thumb_func 0x80b0168 +thumb_func 0x80b01a4 +thumb_func 0x80b01e8 +thumb_func 0x80b0230 +thumb_func 0x80b0314 +thumb_func 0x80b0370 +thumb_func 0x80b03f4 +thumb_func 0x80b0468 +thumb_func 0x80b04cc +thumb_func 0x80b0620 +thumb_func 0x80b0684 +thumb_func 0x80b06e4 +thumb_func 0x80b07b8 +thumb_func 0x80b0824 +thumb_func 0x80b08f8 +thumb_func 0x80b0a24 +thumb_func 0x80b0a44 +thumb_func 0x80b0a94 +thumb_func 0x80b0af0 +thumb_func 0x80b0b04 +thumb_func 0x80b0b20 +thumb_func 0x80b0b3c +thumb_func 0x80b0b54 +thumb_func 0x80b0b60 +thumb_func 0x80b0b64 +thumb_func 0x80b0b7c +thumb_func 0x80b0b94 +thumb_func 0x80b0bd4 +thumb_func 0x80b0be8 +thumb_func 0x80b0c5c +thumb_func 0x80b0ce4 +thumb_func 0x80b0d1c +thumb_func 0x80b0f18 +thumb_func 0x80b0f5c +thumb_func 0x80b0f90 +thumb_func 0x80b0fa4 +thumb_func 0x80b0fc4 +thumb_func 0x80b0ff8 +thumb_func 0x80b1004 +thumb_func 0x80b104c +thumb_func 0x80b1078 +thumb_func 0x80b108c +thumb_func 0x80b10a4 +thumb_func 0x80b10b8 +thumb_func 0x80b10cc +thumb_func 0x80b1204 +thumb_func 0x80b1280 +thumb_func 0x80b12d8 +thumb_func 0x80b1300 +thumb_func 0x80b13e4 +thumb_func 0x80b13fc +thumb_func 0x80b144c +thumb_func 0x80b145c +thumb_func 0x80b1558 +thumb_func 0x80b1568 +thumb_func 0x80b1590 +thumb_func 0x80b15cc +thumb_func 0x80b15f0 +thumb_func 0x80b1604 +thumb_func 0x80b1618 +thumb_func 0x80b163c +thumb_func 0x80b1680 +thumb_func 0x80b16a8 +thumb_func 0x80b16e8 +thumb_func 0x80b1780 +thumb_func 0x80b17ac +thumb_func 0x80b17f4 +thumb_func 0x80b1824 +thumb_func 0x80b1860 +thumb_func 0x80b189c +thumb_func 0x80b18f0 +thumb_func 0x80b1948 +thumb_func 0x80b1978 +thumb_func 0x80b19a8 +thumb_func 0x80b19e0 +thumb_func 0x80b1a14 +thumb_func 0x80b1a48 +thumb_func 0x80b1a74 +thumb_func 0x80b1aa0 +thumb_func 0x80b1ae0 +thumb_func 0x80b1b00 +thumb_func 0x80b1b20 +thumb_func 0x80b1b3c +thumb_func 0x80b1b58 +thumb_func 0x80b1b8c +thumb_func 0x80b1ba8 +thumb_func 0x80b1bc4 +thumb_func 0x80b1c04 +thumb_func 0x80b1c58 +thumb_func 0x80b1c9c +thumb_func 0x80b1cf8 +thumb_func 0x80b1d18 +thumb_func 0x80b1d54 +thumb_func 0x80b1dd4 +thumb_func 0x80b1e08 +thumb_func 0x80b1e54 +thumb_func 0x80b1ea8 +thumb_func 0x80b1edc +thumb_func 0x80b1f10 +thumb_func 0x80b1f64 +thumb_func 0x80b1fe8 +thumb_func 0x80b2038 +thumb_func 0x80b20e0 +thumb_func 0x80b2184 +thumb_func 0x80b21f4 +thumb_func 0x80b22e4 +thumb_func 0x80b23d0 +thumb_func 0x80b2470 +thumb_func 0x80b250c +thumb_func 0x80b258c +thumb_func 0x80b25c8 +thumb_func 0x80b2608 +thumb_func 0x80b2648 +thumb_func 0x80b2680 +thumb_func 0x80b2728 +thumb_func 0x80b2750 +thumb_func 0x80b2784 +thumb_func 0x80b27ac +thumb_func 0x80b27d4 +thumb_func 0x80b27fc +thumb_func 0x80b28f0 +thumb_func 0x80b2940 +thumb_func 0x80b2994 +thumb_func 0x80b29cc +thumb_func 0x80b2a00 +thumb_func 0x80b2a0c +thumb_func 0x80b2a60 +thumb_func 0x80b2b68 +thumb_func 0x80b2cfc +thumb_func 0x80b2d68 +thumb_func 0x80b2e48 +thumb_func 0x80b2e78 +thumb_func 0x80b2e84 +thumb_func 0x80b2f30 +thumb_func 0x80b2f58 +thumb_func 0x80b2ff0 +thumb_func 0x80b3080 +thumb_func 0x80b30ac +thumb_func 0x80b30c0 nullsub_54 +thumb_func 0x80b30c4 +thumb_func 0x80b3100 +thumb_func 0x80b3118 +thumb_func 0x80b3130 +thumb_func 0x80b3188 +thumb_func 0x80b3204 +thumb_func 0x80b3228 +thumb_func 0x80b3250 +thumb_func 0x80b331c +thumb_func 0x80b3340 +thumb_func 0x80b3458 +thumb_func 0x80b3548 +thumb_func 0x80b35f8 +thumb_func 0x80b363c +thumb_func 0x80b3680 +thumb_func 0x80b36c4 +thumb_func 0x80b3708 +thumb_func 0x80b37c4 +thumb_func 0x80b3820 +thumb_func 0x80b3870 +thumb_func 0x80b38d0 +thumb_func 0x80b38d4 +thumb_func 0x80b3918 +thumb_func 0x80b3958 +thumb_func 0x80b39b4 +thumb_func 0x80b3a70 +thumb_func 0x80b3ab4 +thumb_func 0x80b3ae8 +thumb_func 0x80b3b04 +thumb_func 0x80b3b38 +thumb_func 0x80b3b90 +thumb_func 0x80b3c04 +thumb_func 0x80b3c20 +thumb_func 0x80b3cd0 +thumb_func 0x80b3d04 +thumb_func 0x80b3d14 +thumb_func 0x80b3d28 +thumb_func 0x80b3d78 +thumb_func 0x80b3db0 +thumb_func 0x80b3de8 +thumb_func 0x80b3e30 +thumb_func 0x80b3e7c +thumb_func 0x80b3f14 +thumb_func 0x80b3f38 +thumb_func 0x80b3f60 +thumb_func 0x80b4010 +thumb_func 0x80b401c +thumb_func 0x80b40dc +thumb_func 0x80b41f0 +thumb_func 0x80b4210 +thumb_func 0x80b4220 +thumb_func 0x80b42dc +thumb_func 0x80b4330 +thumb_func 0x80b43cc +thumb_func 0x80b4450 +thumb_func 0x80b44d0 +thumb_func 0x80b45c0 +thumb_func 0x80b46a4 +thumb_func 0x80b477c +thumb_func 0x80b47b4 +thumb_func 0x80b4834 +thumb_func 0x80b489c +thumb_func 0x80b48c8 +thumb_func 0x80b4994 +thumb_func 0x80b49b8 +thumb_func 0x80b49e0 +thumb_func 0x80b4c64 +thumb_func 0x80b4cd0 +thumb_func 0x80b4e54 +thumb_func 0x80b4e8c +thumb_func 0x80b4ef8 +thumb_func 0x80b4f84 +thumb_func 0x80b4fc8 +thumb_func 0x80b5024 +thumb_func 0x80b508c +thumb_func 0x80b50e8 +thumb_func 0x80b51a8 +thumb_func 0x80b5208 +thumb_func 0x80b5248 +thumb_func 0x80b5270 +thumb_func 0x80b52a0 +thumb_func 0x80b52b8 +thumb_func 0x80b52cc +thumb_func 0x80b52e0 +thumb_func 0x80b52f4 +thumb_func 0x80b5308 +thumb_func 0x80b530c +thumb_func 0x80b5334 +thumb_func 0x80b5358 +thumb_func 0x80b537c +thumb_func 0x80b5394 +thumb_func 0x80b53c4 +thumb_func 0x80b53ec +thumb_func 0x80b5404 +thumb_func 0x80b5414 +thumb_func 0x80b5420 +thumb_func 0x80b5444 +thumb_func 0x80b545c +thumb_func 0x80b54c0 +thumb_func 0x80b5518 +thumb_func 0x80b553c +thumb_func 0x80b5568 +thumb_func 0x80b5598 +thumb_func 0x80b55c4 +thumb_func 0x80b5664 +thumb_func 0x80b569c +thumb_func 0x80b56dc +thumb_func 0x80b5740 +thumb_func 0x80b57c8 +thumb_func 0x80b57f4 +thumb_func 0x80b5880 +thumb_func 0x80b58f8 +thumb_func 0x80b593c +thumb_func 0x80b5960 nullsub_57 +thumb_func 0x80b596c +thumb_func 0x80b59a8 +thumb_func 0x80b59e4 +thumb_func 0x80b5a0c +thumb_func 0x80b5a4c +thumb_func 0x80b5a88 +thumb_func 0x80b5aac nullsub_58 +thumb_func 0x80b5ab8 +thumb_func 0x80b5b2c +thumb_func 0x80b5b5c +thumb_func 0x80b5b84 +thumb_func 0x80b5bc4 +thumb_func 0x80b5c18 +thumb_func 0x80b5c34 +thumb_func 0x80b5ccc +thumb_func 0x80b5d00 +thumb_func 0x80b5e40 +thumb_func 0x80b5f34 +thumb_func 0x80b5f50 +thumb_func 0x80b5f58 +thumb_func 0x80b5f7c nullsub_201 +thumb_func 0x80b5f80 +thumb_func 0x80b5fa8 +thumb_func 0x80b6004 +thumb_func 0x80b6044 +thumb_func 0x80b60c8 +thumb_func 0x80b6134 +thumb_func 0x80b6154 +thumb_func 0x80b617c +thumb_func 0x80b61fc +thumb_func 0x80b6264 +thumb_func 0x80b62c0 +thumb_func 0x80b62ec +thumb_func 0x80b6324 +thumb_func 0x80b63cc +thumb_func 0x80b63e8 +thumb_func 0x80b645c +thumb_func 0x80b6514 +thumb_func 0x80b6530 +thumb_func 0x80b6570 +thumb_func 0x80b65a4 +thumb_func 0x80b65e0 +thumb_func 0x80b6618 +thumb_func 0x80b6638 +thumb_func 0x80b66a8 +thumb_func 0x80b66cc +thumb_func 0x80b66dc +thumb_func 0x80b6700 +thumb_func 0x80b6710 +thumb_func 0x80b675c +thumb_func 0x80b67a8 +thumb_func 0x80b67b8 +thumb_func 0x80b680c +thumb_func 0x80b6834 +thumb_func 0x80b686c +thumb_func 0x80b68e8 +thumb_func 0x80b6928 +thumb_func 0x80b6988 +thumb_func 0x80b69c8 +thumb_func 0x80b6a28 +thumb_func 0x80b6a4c +thumb_func 0x80b6aa4 +thumb_func 0x80b6adc +thumb_func 0x80b6b0c +thumb_func 0x80b6b28 +thumb_func 0x80b6b48 +thumb_func 0x80b6b84 +thumb_func 0x80b6ba8 +thumb_func 0x80b6bd0 +thumb_func 0x80b6c28 +thumb_func 0x80b6c64 +thumb_func 0x80b6c9c +thumb_func 0x80b6cb0 +thumb_func 0x80b6cd8 +thumb_func 0x80b6d30 +thumb_func 0x80b6d48 +thumb_func 0x80b6da4 +thumb_func 0x80b6ddc +thumb_func 0x80b6e10 +thumb_func 0x80b6e5c +thumb_func 0x80b6f50 +thumb_func 0x80b6f6c +thumb_func 0x80b6fc0 +thumb_func 0x80b6fe8 +thumb_func 0x80b7044 +thumb_func 0x80b7074 +thumb_func 0x80b70c0 +thumb_func 0x80b7114 +thumb_func 0x80b714c +thumb_func 0x80b71b0 +thumb_func 0x80b71cc +thumb_func 0x80b71e4 +thumb_func 0x80b7240 +thumb_func 0x80b7270 +thumb_func 0x80b72ec +thumb_func 0x80b7324 +thumb_func 0x80b734c +thumb_func 0x80b73a0 +thumb_func 0x80b7404 +thumb_func 0x80b7420 +thumb_func 0x80b743c +thumb_func 0x80b746c +thumb_func 0x80b748c +thumb_func 0x80b75a0 +thumb_func 0x80b75ec +thumb_func 0x80b761c +thumb_func 0x80b7640 +thumb_func 0x80b7720 +thumb_func 0x80b7734 +thumb_func 0x80b7764 +thumb_func 0x80b778c +thumb_func 0x80b781c +thumb_func 0x80b78f0 +thumb_func 0x80b7958 +thumb_func 0x80b79a8 +thumb_func 0x80b79d8 +thumb_func 0x80b7a64 +thumb_func 0x80b7b68 +thumb_func 0x80b7bf4 +thumb_func 0x80b7c50 +thumb_func 0x80b7cac +thumb_func 0x80b7cdc +thumb_func 0x80b7d50 +thumb_func 0x80b7db8 +thumb_func 0x80b7e44 +thumb_func 0x80b7e74 +thumb_func 0x80b7ec8 +thumb_func 0x80b7f10 +thumb_func 0x80b7f64 +thumb_func 0x80b7f8c +thumb_func 0x80b7fcc +thumb_func 0x80b800c +thumb_func 0x80b803c +thumb_func 0x80b8078 +thumb_func 0x80b80e4 +thumb_func 0x80b8134 +thumb_func 0x80b8164 +thumb_func 0x80b819c +thumb_func 0x80b81bc +thumb_func 0x80b8238 +thumb_func 0x80b8260 +thumb_func 0x80b8280 +thumb_func 0x80b8290 +thumb_func 0x80b8348 +thumb_func 0x80b83b8 +thumb_func 0x80b8418 +thumb_func 0x80b845c +thumb_func 0x80b8478 +thumb_func 0x80b849c +thumb_func 0x80b84dc +thumb_func 0x80b850c +thumb_func 0x80b856c +thumb_func 0x80b85b8 +thumb_func 0x80b8600 +thumb_func 0x80b867c +thumb_func 0x80b86f0 +thumb_func 0x80b8824 +thumb_func 0x80b8880 +thumb_func 0x80b88fc +thumb_func 0x80b892c +thumb_func 0x80b895c +thumb_func 0x80b89b4 +thumb_func 0x80b89f8 +thumb_func 0x80b8a50 +thumb_func 0x80b8a94 +thumb_func 0x80b8ae8 +thumb_func 0x80b8b70 +thumb_func 0x80b8bcc +thumb_func 0x80b8bec +thumb_func 0x80b8c1c +thumb_func 0x80b8c60 +thumb_func 0x80b8c7c +thumb_func 0x80b8cb8 +thumb_func 0x80b8cd4 +thumb_func 0x80b8d94 +thumb_func 0x80b8e08 +thumb_func 0x80b8eec +thumb_func 0x80b8f18 +thumb_func 0x80b8f2c +thumb_func 0x80b8f5c +thumb_func 0x80b9010 +thumb_func 0x80b907c +thumb_func 0x80b90d0 +thumb_func 0x80b9148 +thumb_func 0x80b9180 +thumb_func 0x80b91b8 +thumb_func 0x80b9234 +thumb_func 0x80b9294 +thumb_func 0x80b9328 +thumb_func 0x80b9340 +thumb_func 0x80b9370 +thumb_func 0x80b9380 +thumb_func 0x80b93ac +thumb_func 0x80b9434 +thumb_func 0x80b947c +thumb_func 0x80b9510 +thumb_func 0x80b9580 +thumb_func 0x80b9634 +thumb_func 0x80b9710 +thumb_func 0x80b9750 +thumb_func 0x80b9790 +thumb_func 0x80b9800 +thumb_func 0x80b988c +thumb_func 0x80b98ac +thumb_func 0x80b98cc +thumb_func 0x80b9a94 +thumb_func 0x80b9adc +thumb_func 0x80b9c08 +thumb_func 0x80b9c20 +thumb_func 0x80b9c34 +thumb_func 0x80b9f94 +thumb_func 0x80b9fc4 +thumb_func 0x80ba1bc +thumb_func 0x80ba260 +thumb_func 0x80ba290 +thumb_func 0x80ba2c0 +thumb_func 0x80ba334 +thumb_func 0x80ba390 +thumb_func 0x80ba3e4 +thumb_func 0x80ba40c +thumb_func 0x80ba468 +thumb_func 0x80ba490 +thumb_func 0x80ba4ec +thumb_func 0x80ba51c +thumb_func 0x80ba584 +thumb_func 0x80ba634 +thumb_func 0x80ba724 +thumb_func 0x80ba780 +thumb_func 0x80ba800 +thumb_func 0x80ba834 +thumb_func 0x80ba890 +thumb_func 0x80baa0c +thumb_func 0x80baa94 +thumb_func 0x80baaac +thumb_func 0x80baac0 +thumb_func 0x80bac70 +thumb_func 0x80baeb0 +thumb_func 0x80baec8 +thumb_func 0x80baf10 +thumb_func 0x80bb164 +thumb_func 0x80bb1b4 +thumb_func 0x80bb330 +thumb_func 0x80bb3b0 +thumb_func 0x80bb458 +thumb_func 0x80bb524 +thumb_func 0x80bb5ac +thumb_func 0x80bb5f4 +thumb_func 0x80bb7e4 +thumb_func 0x80bb834 +thumb_func 0x80bba10 +thumb_func 0x80bba9c +thumb_func 0x80bbb18 +thumb_func 0x80bbbb8 +thumb_func 0x80bbc50 +thumb_func 0x80bbf80 +thumb_func 0x80bbfcc +thumb_func 0x80bc010 +thumb_func 0x80bc568 +thumb_func 0x80bc5c0 +thumb_func 0x80bc890 +thumb_func 0x80bc930 +thumb_func 0x80bc978 +thumb_func 0x80bca2c +thumb_func 0x80bca54 +thumb_func 0x80bcba4 +thumb_func 0x80bcd48 +thumb_func 0x80bce3c +thumb_func 0x80bd070 +thumb_func 0x80bd0d0 +thumb_func 0x80bd1e0 +thumb_func 0x80bd22c +thumb_func 0x80bd26c +thumb_func 0x80bd31c +thumb_func 0x80bdbe8 nullsub_59 +thumb_func 0x80bdbec +thumb_func 0x80bdc10 +thumb_func 0x80bdc80 +thumb_func 0x80bdda4 +thumb_func 0x80bddf8 +thumb_func 0x80bdef8 +thumb_func 0x80bdf20 +thumb_func 0x80bdfd4 +thumb_func 0x80be07c +thumb_func 0x80be0c0 +thumb_func 0x80be168 +thumb_func 0x80be19c +thumb_func 0x80be1c8 +thumb_func 0x80be634 +thumb_func 0x80be678 +thumb_func 0x80be854 +thumb_func 0x80be8bc +thumb_func 0x80be8f4 +thumb_func 0x80be930 +thumb_func 0x80bea38 +thumb_func 0x80bea70 +thumb_func 0x80bead4 +thumb_func 0x80bee68 +thumb_func 0x80bf02c +thumb_func 0x80bf098 +thumb_func 0x80bf0c8 +thumb_func 0x80bf46c +thumb_func 0x80bf534 +thumb_func 0x80bf598 +thumb_func 0x80bf5b0 +thumb_func 0x80bf5c8 +thumb_func 0x80bf638 +thumb_func 0x80bf6b0 +thumb_func 0x80bf6f4 +thumb_func 0x80bf9e4 +thumb_func 0x80bfa88 +thumb_func 0x80bfb28 +thumb_func 0x80bfb68 +thumb_func 0x80bfb80 +thumb_func 0x80bfbbc +thumb_func 0x80bfd4c +thumb_func 0x80bfd9c +thumb_func 0x80bfdf4 +thumb_func 0x80bfe3c +thumb_func 0x80bfe70 +thumb_func 0x80bfe9c +thumb_func 0x80bff08 +thumb_func 0x80bffe0 +thumb_func 0x80c0020 +thumb_func 0x80c00a0 +thumb_func 0x80c0150 +thumb_func 0x80c01c8 +thumb_func 0x80c0288 +thumb_func 0x80c0318 +thumb_func 0x80c0364 +thumb_func 0x80c03c0 +thumb_func 0x80c03f4 +thumb_func 0x80c0450 +thumb_func 0x80c0488 +thumb_func 0x80c07b4 +thumb_func 0x80c07cc +thumb_func 0x80c0810 +thumb_func 0x80c0850 +thumb_func 0x80c0a9c +thumb_func 0x80c0ae0 +thumb_func 0x80c0b20 +thumb_func 0x80c0c3c +thumb_func 0x80c0c7c +thumb_func 0x80c0f24 +thumb_func 0x80c0fcc +thumb_func 0x80c1058 +thumb_func 0x80c1104 +thumb_func 0x80c117c +thumb_func 0x80c137c +thumb_func 0x80c13b4 +thumb_func 0x80c13dc +thumb_func 0x80c1440 +thumb_func 0x80c1538 +thumb_func 0x80c1684 +thumb_func 0x80c16b8 +thumb_func 0x80c175c +thumb_func 0x80c1838 +thumb_func 0x80c1918 +thumb_func 0x80c19bc +thumb_func 0x80c1a5c +thumb_func 0x80c1af0 +thumb_func 0x80c1b38 +thumb_func 0x80c1b84 +thumb_func 0x80c1c38 +thumb_func 0x80c1cbc +thumb_func 0x80c1d00 +thumb_func 0x80c1d3c +thumb_func 0x80c1d54 +thumb_func 0x80c1d8c +thumb_func 0x80c2104 +thumb_func 0x80c22b4 +thumb_func 0x80c2414 +thumb_func 0x80c242c +thumb_func 0x80c2470 +thumb_func 0x80c24b4 +thumb_func 0x80c24f4 +thumb_func 0x80c2650 +thumb_func 0x80c26d4 +thumb_func 0x80c2750 +thumb_func 0x80c27c0 +thumb_func 0x80c28a4 +thumb_func 0x80c2918 +thumb_func 0x80c297c +thumb_func 0x80c29b8 +thumb_func 0x80c2a34 +thumb_func 0x80c2a44 +thumb_func 0x80c2a68 +thumb_func 0x80c2ae0 +thumb_func 0x80c2b78 +thumb_func 0x80c2ba4 +thumb_func 0x80c2c5c +thumb_func 0x80c2d14 +thumb_func 0x80c2e20 +thumb_func 0x80c2e40 +thumb_func 0x80c2f5c +thumb_func 0x80c310c +thumb_func 0x80c31fc +thumb_func 0x80c323c +thumb_func 0x80c32c0 +thumb_func 0x80c3330 +thumb_func 0x80c33a0 +thumb_func 0x80c340c +thumb_func 0x80c34b8 +thumb_func 0x80c34e4 +thumb_func 0x80c3584 +thumb_func 0x80c35c0 +thumb_func 0x80c364c +thumb_func 0x80c3684 +thumb_func 0x80c3710 +thumb_func 0x80c3760 +thumb_func 0x80c37ec +thumb_func 0x80c3828 +thumb_func 0x80c38b4 +thumb_func 0x80c395c +thumb_func 0x80c3a70 +thumb_func 0x80c3b0c +thumb_func 0x80c3be4 +thumb_func 0x80c3c6c +thumb_func 0x80c3cc8 +thumb_func 0x80c3ce4 +thumb_func 0x80c3e84 +thumb_func 0x80c3ef4 +thumb_func 0x80c3f64 +thumb_func 0x80c4080 +thumb_func 0x80c41fc +thumb_func 0x80c4238 +thumb_func 0x80c424c +thumb_func 0x80c4274 +thumb_func 0x80c4294 +thumb_func 0x80c42cc +thumb_func 0x80c430c +thumb_func 0x80c443c +thumb_func 0x80c4550 +thumb_func 0x80c45b8 +thumb_func 0x80c46e4 +thumb_func 0x80c4710 +thumb_func 0x80c4798 +thumb_func 0x80c47ec +thumb_func 0x80c4858 +thumb_func 0x80c48d0 +thumb_func 0x80c48f4 +thumb_func 0x80c49cc +thumb_func 0x80c4ac0 +thumb_func 0x80c4ad4 +thumb_func 0x80c4aec +thumb_func 0x80c4be0 +thumb_func 0x80c4c0c +thumb_func 0x80c4c3c +thumb_func 0x80c4ca8 +thumb_func 0x80c4d34 +thumb_func 0x80c4d48 +thumb_func 0x80c4d6c +thumb_func 0x80c4d80 +thumb_func 0x80c5008 +thumb_func 0x80c50f8 +thumb_func 0x80c5164 +thumb_func 0x80c51d0 +thumb_func 0x80c5230 +thumb_func 0x80c52a0 +thumb_func 0x80c5344 +thumb_func 0x80c54d4 +thumb_func 0x80c56b4 +thumb_func 0x80c57bc +thumb_func 0x80c5844 +thumb_func 0x80c59f0 +thumb_func 0x80c5b88 +thumb_func 0x80c5bc8 +thumb_func 0x80c5ce8 +thumb_func 0x80c5d3c nullsub_601 +thumb_func 0x80c5d40 +thumb_func 0x80c5d84 +thumb_func 0x80c5db8 +thumb_func 0x80c5f98 +thumb_func 0x80c60a8 +thumb_func 0x80c61d4 +thumb_func 0x80c6260 +thumb_func 0x80c6480 +thumb_func 0x80c655c +thumb_func 0x80c666c +thumb_func 0x80c66a4 +thumb_func 0x80c6738 +thumb_func 0x80c682c +thumb_func 0x80c6860 +thumb_func 0x80c6894 +thumb_func 0x80c68dc +thumb_func 0x80c6938 +thumb_func 0x80c6950 +thumb_func 0x80c6988 +thumb_func 0x80c69b4 +thumb_func 0x80c6a30 +thumb_func 0x80c6af4 +thumb_func 0x80c6e04 +thumb_func 0x80c6e34 +thumb_func 0x80c6e88 +thumb_func 0x80c6f10 +thumb_func 0x80c6f3c +thumb_func 0x80c7008 +thumb_func 0x80c7080 +thumb_func 0x80c7128 +thumb_func 0x80c716c +thumb_func 0x80c717c +thumb_func 0x80c7188 +thumb_func 0x80c71f0 +thumb_func 0x80c73d0 +thumb_func 0x80c743c +thumb_func 0x80c7470 +thumb_func 0x80c74a0 +thumb_func 0x80c7528 +thumb_func 0x80c7590 +thumb_func 0x80c75c4 +thumb_func 0x80c75f0 +thumb_func 0x80c7610 +thumb_func 0x80c7688 +thumb_func 0x80c76ec +thumb_func 0x80c7734 +thumb_func 0x80c77b8 +thumb_func 0x80c77e8 +thumb_func 0x80c781c +thumb_func 0x80c7844 +thumb_func 0x80c7a48 +thumb_func 0x80c7a94 +thumb_func 0x80c7b48 +thumb_func 0x80c8044 +thumb_func 0x80c8084 +thumb_func 0x80c8100 +thumb_func 0x80c842c +thumb_func 0x80c8488 +thumb_func 0x80c84e4 +thumb_func 0x80c852c +thumb_func 0x80c8614 +thumb_func 0x80c8750 +thumb_func 0x80c8940 +thumb_func 0x80c89c4 +thumb_func 0x80c8a78 +thumb_func 0x80c8b34 +thumb_func 0x80c8c4c +thumb_func 0x80c8d34 +thumb_func 0x80c8de8 +thumb_func 0x80c8f0c +thumb_func 0x80c8f54 +thumb_func 0x80c8fc8 +thumb_func 0x80c90c0 +thumb_func 0x80c9274 +thumb_func 0x80c9364 +thumb_func 0x80c93c4 +thumb_func 0x80c9424 +thumb_func 0x80c9484 +thumb_func 0x80c95b8 +thumb_func 0x80c96ec +thumb_func 0x80c97e0 +thumb_func 0x80c983c +thumb_func 0x80c9860 +thumb_func 0x80c989c +thumb_func 0x80c98b8 +thumb_func 0x80c9918 +thumb_func 0x80c993c +thumb_func 0x80c994c +thumb_func 0x80c99c8 +thumb_func 0x80c9a38 +thumb_func 0x80c9aa4 +thumb_func 0x80c9ad4 +thumb_func 0x80c9b2c +thumb_func 0x80c9b44 +thumb_func 0x80c9b8c +thumb_func 0x80c9cc0 +thumb_func 0x80c9d70 +thumb_func 0x80c9ec0 +thumb_func 0x80c9f68 +thumb_func 0x80ca038 +thumb_func 0x80ca070 +thumb_func 0x80ca0ec +thumb_func 0x80ca12c +thumb_func 0x80ca1e8 +thumb_func 0x80ca224 +thumb_func 0x80ca250 +thumb_func 0x80ca278 +thumb_func 0x80ca2d8 +thumb_func 0x80ca30c +thumb_func 0x80ca384 +thumb_func 0x80ca3b0 +thumb_func 0x80ca3d4 +thumb_func 0x80ca444 +thumb_func 0x80ca480 +thumb_func 0x80ca4bc +thumb_func 0x80ca600 +thumb_func 0x80ca638 +thumb_func 0x80ca64c +thumb_func 0x80ca680 +thumb_func 0x80ca714 +thumb_func 0x80ca720 +thumb_func 0x80ca778 +thumb_func 0x80ca820 +thumb_func 0x80ca838 +thumb_func 0x80ca89c +thumb_func 0x80ca9b4 +thumb_func 0x80caa64 +thumb_func 0x80caaa8 +thumb_func 0x80caaec +thumb_func 0x80cab24 +thumb_func 0x80cab6c +thumb_func 0x80cad40 +thumb_func 0x80cadf8 +thumb_func 0x80caf64 +thumb_func 0x80cafec +thumb_func 0x80cb020 +thumb_func 0x80cb05c +thumb_func 0x80cb1c4 +thumb_func 0x80cb230 +thumb_func 0x80cb244 +thumb_func 0x80cb2b0 +thumb_func 0x80cb338 +thumb_func 0x80cb364 +thumb_func 0x80cb3dc +thumb_func 0x80cb410 +thumb_func 0x80cb450 +thumb_func 0x80cb488 +thumb_func 0x80cb520 +thumb_func 0x80cb5d0 +thumb_func 0x80cb638 +thumb_func 0x80cb788 +thumb_func 0x80cb84c +thumb_func 0x80cb894 +thumb_func 0x80cb8d8 +thumb_func 0x80cb914 +thumb_func 0x80cb948 +thumb_func 0x80cb974 +thumb_func 0x80cb998 +thumb_func 0x80cba54 +thumb_func 0x80cbaa4 +thumb_func 0x80cbb88 +thumb_func 0x80cbba0 +thumb_func 0x80cbbd0 +thumb_func 0x80cbbe4 +thumb_func 0x80cbcd8 +thumb_func 0x80cbdc0 +thumb_func 0x80cbeb8 +thumb_func 0x80cbef4 +thumb_func 0x80cbf24 +thumb_func 0x80cc014 +thumb_func 0x80cc274 +thumb_func 0x80cc2b0 +thumb_func 0x80cc354 +thumb_func 0x80cc3c4 +thumb_func 0x80cc57c +thumb_func 0x80cc76c +thumb_func 0x80cc7bc +thumb_func 0x80cc7f0 +thumb_func 0x80cc828 +thumb_func 0x80cc898 +thumb_func 0x80cc8a8 +thumb_func 0x80cc934 +thumb_func 0x80cc9d4 +thumb_func 0x80cca24 +thumb_func 0x80cca8c +thumb_func 0x80ccb64 +thumb_func 0x80ccbe8 +thumb_func 0x80ccc68 +thumb_func 0x80cccc0 +thumb_func 0x80ccd80 +thumb_func 0x80ccdd0 +thumb_func 0x80ccf28 +thumb_func 0x80ccf88 +thumb_func 0x80cd110 +thumb_func 0x80cd2e4 +thumb_func 0x80cd41c +thumb_func 0x80cd474 +thumb_func 0x80cd488 +thumb_func 0x80cd494 +thumb_func 0x80cd4a8 +thumb_func 0x80cd4b4 +thumb_func 0x80cd4e0 +thumb_func 0x80cd528 +thumb_func 0x80cd538 +thumb_func 0x80cd548 +thumb_func 0x80cd5d8 +thumb_func 0x80cd654 +thumb_func 0x80cd730 +thumb_func 0x80cd740 +thumb_func 0x80cd750 +thumb_func 0x80cd784 +thumb_func 0x80cd7b4 +thumb_func 0x80cd828 +thumb_func 0x80cd888 +thumb_func 0x80cd894 +thumb_func 0x80cd908 +thumb_func 0x80cd964 +thumb_func 0x80cd98c +thumb_func 0x80cda18 +thumb_func 0x80cdaa8 +thumb_func 0x80cdacc +thumb_func 0x80cdb24 +thumb_func 0x80cdb54 +thumb_func 0x80cdba0 +thumb_func 0x80cdbcc +thumb_func 0x80cdc1c +thumb_func 0x80cdd98 +thumb_func 0x80cddfc +thumb_func 0x80cdfdc +thumb_func 0x80ce00c +thumb_func 0x80ce064 +thumb_func 0x80ce160 +thumb_func 0x80ce188 +thumb_func 0x80ce224 +thumb_func 0x80ce2ac +thumb_func 0x80ce2e8 +thumb_func 0x80ce34c +thumb_func 0x80ce358 +thumb_func 0x80ce374 +thumb_func 0x80ce3a0 +thumb_func 0x80ce3bc +thumb_func 0x80ce458 +thumb_func 0x80ce47c +thumb_func 0x80ce948 +thumb_func 0x80ce984 +thumb_func 0x80cebf0 +thumb_func 0x80ced2c +thumb_func 0x80cee40 +thumb_func 0x80cf060 +thumb_func 0x80cf154 +thumb_func 0x80cf268 +thumb_func 0x80cf2b4 +thumb_func 0x80cf2d8 +thumb_func 0x80cf300 +thumb_func 0x80cf3c0 +thumb_func 0x80cf470 +thumb_func 0x80cf490 +thumb_func 0x80cf640 +thumb_func 0x80cf684 +thumb_func 0x80cf690 +thumb_func 0x80cf6d0 +thumb_func 0x80cf6f4 +thumb_func 0x80cf700 +thumb_func 0x80cf724 +thumb_func 0x80cf748 +thumb_func 0x80cf76c +thumb_func 0x80cf7b0 +thumb_func 0x80cf814 +thumb_func 0x80cf84c +thumb_func 0x80cf948 +thumb_func 0x80cf94c +thumb_func 0x80cf9dc +thumb_func 0x80cfa04 +thumb_func 0x80cfa58 +thumb_func 0x80cfa70 +thumb_func 0x80cfa84 +thumb_func 0x80cfaec +thumb_func 0x80cfbe4 +thumb_func 0x80cfc50 +thumb_func 0x80cfcc0 +thumb_func 0x80cfd40 +thumb_func 0x80cfd68 +thumb_func 0x80cfe20 +thumb_func 0x80cfecc +thumb_func 0x80cff70 +thumb_func 0x80cffa8 +thumb_func 0x80cffe0 +thumb_func 0x80d0018 +thumb_func 0x80d0050 +thumb_func 0x80d00d4 +thumb_func 0x80d0124 +thumb_func 0x80d0134 +thumb_func 0x80d016c +thumb_func 0x80d0244 +thumb_func 0x80d02bc +thumb_func 0x80d034c +thumb_func 0x80d03fc +thumb_func 0x80d0444 +thumb_func 0x80d0460 +thumb_func 0x80d0500 +thumb_func 0x80d062c +thumb_func 0x80d06f0 +thumb_func 0x80d0730 +thumb_func 0x80d07d8 +thumb_func 0x80d084c +thumb_func 0x80d0920 +thumb_func 0x80d09b4 +thumb_func 0x80d0a34 +thumb_func 0x80d0a6c +thumb_func 0x80d0ab8 +thumb_func 0x80d0b1c +thumb_func 0x80d0b58 +thumb_func 0x80d0b74 +thumb_func 0x80d0b88 +thumb_func 0x80d0bc4 +thumb_func 0x80d0c10 +thumb_func 0x80d0c64 +thumb_func 0x80d0cac +thumb_func 0x80d0dc4 +thumb_func 0x80d0e74 +thumb_func 0x80d0ea4 +thumb_func 0x80d0fe0 +thumb_func 0x80d1034 +thumb_func 0x80d1044 +thumb_func 0x80d1054 +thumb_func 0x80d10b8 +thumb_func 0x80d10ec +thumb_func 0x80d1184 +thumb_func 0x80d1254 +thumb_func 0x80d12e8 +thumb_func 0x80d1314 +thumb_func 0x80d1378 +thumb_func 0x80d13b4 +thumb_func 0x80d1434 +thumb_func 0x80d14d0 +thumb_func 0x80d156c +thumb_func 0x80d15a4 nullsub_61 +thumb_func 0x80d15a8 nullsub_60 +thumb_func 0x80d15ac +thumb_func 0x80d15b8 +thumb_func 0x80d15d0 +thumb_func 0x80d1614 +thumb_func 0x80d1658 +thumb_func 0x80d1678 +thumb_func 0x80d169c +thumb_func 0x80d16e4 +thumb_func 0x80d1730 +thumb_func 0x80d1770 +thumb_func 0x80d17b8 +thumb_func 0x80d17f8 +thumb_func 0x80d1838 +thumb_func 0x80d18b8 +thumb_func 0x80d18f4 +thumb_func 0x80d1934 +thumb_func 0x80d1970 +thumb_func 0x80d1998 +thumb_func 0x80d19c0 +thumb_func 0x80d19ec +thumb_func 0x80d1ab8 +thumb_func 0x80d1b10 +thumb_func 0x80d1b70 +thumb_func 0x80d1bdc +thumb_func 0x80d1c48 +thumb_func 0x80d1ccc +thumb_func 0x80d1d20 +thumb_func 0x80d1d34 +thumb_func 0x80d1d48 +thumb_func 0x80d1d5c +thumb_func 0x80d1d7c +thumb_func 0x80d1d90 +thumb_func 0x80d1db0 +thumb_func 0x80d1dc4 +thumb_func 0x80d1de8 +thumb_func 0x80d1dfc +thumb_func 0x80d1e18 +thumb_func 0x80d1e3c +thumb_func 0x80d1e90 +thumb_func 0x80d1ea4 +thumb_func 0x80d1ee4 +thumb_func 0x80d1fe0 +thumb_func 0x80d2010 +thumb_func 0x80d204c +thumb_func 0x80d2094 +thumb_func 0x80d21b8 +thumb_func 0x80d2200 +thumb_func 0x80d2298 +thumb_func 0x80d2330 +thumb_func 0x80d2344 +thumb_func 0x80d238c +thumb_func 0x80d2428 +thumb_func 0x80d2460 +thumb_func 0x80d24bc +thumb_func 0x80d2564 +thumb_func 0x80d2618 +thumb_func 0x80d26a8 +thumb_func 0x80d26e8 +thumb_func 0x80d2724 +thumb_func 0x80d277c +thumb_func 0x80d2798 +thumb_func 0x80d27a4 +thumb_func 0x80d27c8 +thumb_func 0x80d2808 +thumb_func 0x80d283c +thumb_func 0x80d2860 +thumb_func 0x80d2890 +thumb_func 0x80d28b4 +thumb_func 0x80d28c0 +thumb_func 0x80d28ec +thumb_func 0x80d2920 +thumb_func 0x80d2940 +thumb_func 0x80d2950 +thumb_func 0x80d297c +thumb_func 0x80d2a54 +thumb_func 0x80d2b2c +thumb_func 0x80d2b68 +thumb_func 0x80d2b88 +thumb_func 0x80d2be0 +thumb_func 0x80d2c2c +thumb_func 0x80d2c4c +thumb_func 0x80d2c94 +thumb_func 0x80d2ca8 +thumb_func 0x80d2d14 +thumb_func 0x80d2d50 +thumb_func 0x80d2d84 +thumb_func 0x80d2da8 +thumb_func 0x80d2dcc +thumb_func 0x80d2dfc +thumb_func 0x80d2e24 +thumb_func 0x80d2e5c +thumb_func 0x80d2e6c +thumb_func 0x80d2e7c +thumb_func 0x80d2ebc +thumb_func 0x80d2f00 +thumb_func 0x80d2f44 +thumb_func 0x80d2fb8 +thumb_func 0x80d32f0 +thumb_func 0x80d330c +thumb_func 0x80d333c +thumb_func 0x80d335c +thumb_func 0x80d338c +thumb_func 0x80d33a0 +thumb_func 0x80d34b0 +thumb_func 0x80d35a8 +thumb_func 0x80d35fc +thumb_func 0x80d3794 +thumb_func 0x80d3a00 +thumb_func 0x80d3a14 +thumb_func 0x80d3a70 +thumb_func 0x80d3adc +thumb_func 0x80d3b58 +thumb_func 0x80d3bf4 +thumb_func 0x80d3c0c +thumb_func 0x80d3c3c +thumb_func 0x80d3c90 +thumb_func 0x80d3cc0 +thumb_func 0x80d3e4c +thumb_func 0x80d3e6c +thumb_func 0x80d3e90 +thumb_func 0x80d3f00 +thumb_func 0x80d3f04 +thumb_func 0x80d3f64 +thumb_func 0x80d3f84 +thumb_func 0x80d4040 +thumb_func 0x80d4058 +thumb_func 0x80d4068 +thumb_func 0x80d4100 +thumb_func 0x80d41f8 +thumb_func 0x80d4234 +thumb_func 0x80d42fc +thumb_func 0x80d4464 +thumb_func 0x80d452c +thumb_func 0x80d4584 +thumb_func 0x80d45bc +thumb_func 0x80d4618 +thumb_func 0x80d4648 +thumb_func 0x80d4690 +thumb_func 0x80d46b8 +thumb_func 0x80d4710 +thumb_func 0x80d4734 +thumb_func 0x80d4798 +thumb_func 0x80d47bc +thumb_func 0x80d481c +thumb_func 0x80d4830 +thumb_func 0x80d484c +thumb_func 0x80d4870 +thumb_func 0x80d489c +thumb_func 0x80d48f4 +thumb_func 0x80d4958 +thumb_func 0x80d4990 +thumb_func 0x80d49a0 +thumb_func 0x80d4a10 +thumb_func 0x80d4a30 +thumb_func 0x80d4aa4 +thumb_func 0x80d4b54 +thumb_func 0x80d4c40 +thumb_func 0x80d4d08 +thumb_func 0x80d4d8c +thumb_func 0x80d4ec8 +thumb_func 0x80d4f10 +thumb_func 0x80d4f28 +thumb_func 0x80d4fbc +thumb_func 0x80d503c +thumb_func 0x80d50b4 +thumb_func 0x80d50e4 +thumb_func 0x80d5158 +thumb_func 0x80d517c +thumb_func 0x80d51c8 +thumb_func 0x80d51ec +thumb_func 0x80d52a8 +thumb_func 0x80d5318 +thumb_func 0x80d53cc +thumb_func 0x80d54a4 +thumb_func 0x80d54d4 +thumb_func 0x80d5568 +thumb_func 0x80d55cc +thumb_func 0x80d5634 +thumb_func 0x80d56f0 +thumb_func 0x80d573c +thumb_func 0x80d57c0 +thumb_func 0x80d58e8 +thumb_func 0x80d5940 +thumb_func 0x80d59b8 +thumb_func 0x80d5ab0 +thumb_func 0x80d5b8c +thumb_func 0x80d5c0c +thumb_func 0x80d5cf0 +thumb_func 0x80d5dd8 +thumb_func 0x80d5df0 +thumb_func 0x80d5e08 +thumb_func 0x80d5e0c +thumb_func 0x80d5e10 +thumb_func 0x80d5e68 +thumb_func 0x80d5e74 +thumb_func 0x80d5ec8 +thumb_func 0x80d5f04 +thumb_func 0x80d5f3c +thumb_func 0x80d5fdc +thumb_func 0x80d6018 +thumb_func 0x80d6140 +thumb_func 0x80d62bc +thumb_func 0x80d6480 +thumb_func 0x80d6494 +thumb_func 0x80d64c4 +thumb_func 0x80d64fc +thumb_func 0x80d6534 +thumb_func 0x80d6588 +thumb_func 0x80d6660 +thumb_func 0x80d669c +thumb_func 0x80d66f4 +thumb_func 0x80d672c +thumb_func 0x80d6748 +thumb_func 0x80d6770 +thumb_func 0x80d677c +thumb_func 0x80d67cc +thumb_func 0x80d6844 +thumb_func 0x80d68ac +thumb_func 0x80d68d4 +thumb_func 0x80d6924 +thumb_func 0x80d699c +thumb_func 0x80d6a1c +thumb_func 0x80d6b4c +thumb_func 0x80d6c74 +thumb_func 0x80d6c8c +thumb_func 0x80d6cb0 +thumb_func 0x80d6cd4 +thumb_func 0x80d6cf8 +thumb_func 0x80d6d1c +thumb_func 0x80d6d40 +thumb_func 0x80d6d68 +thumb_func 0x80d6d8c +thumb_func 0x80d6db0 +thumb_func 0x80d6dd4 +thumb_func 0x80d6df8 +thumb_func 0x80d6e20 +thumb_func 0x80d6e44 +thumb_func 0x80d6e6c +thumb_func 0x80d6e94 nullsub_63 +thumb_func 0x80d6e98 +thumb_func 0x80d6ea4 +thumb_func 0x80d6f50 +thumb_func 0x80d6fc8 +thumb_func 0x80d7010 +thumb_func 0x80d7058 +thumb_func 0x80d70a8 +thumb_func 0x80d71b4 +thumb_func 0x80d7288 +thumb_func 0x80d7350 +thumb_func 0x80d74a8 +thumb_func 0x80d74e0 +thumb_func 0x80d75d8 +thumb_func 0x80d75f4 +thumb_func 0x80d7614 +thumb_func 0x80d7670 +thumb_func 0x80d78f4 +thumb_func 0x80d7934 +thumb_func 0x80d7a68 +thumb_func 0x80d7aa8 +thumb_func 0x80d7b68 +thumb_func 0x80d7c50 +thumb_func 0x80d7cbc +thumb_func 0x80d7e40 +thumb_func 0x80d8038 +thumb_func 0x80d8064 +thumb_func 0x80d8090 +thumb_func 0x80d8128 +thumb_func 0x80d8158 +thumb_func 0x80d8200 +thumb_func 0x80d824c +thumb_func 0x80d8284 +thumb_func 0x80d8334 +thumb_func 0x80d9900 +thumb_func 0x80d9924 +thumb_func 0x80d9954 +thumb_func 0x80d9988 +thumb_func 0x80d9a4c +thumb_func 0x80d9a7c +thumb_func 0x80d9b0c +thumb_func 0x80d9b38 +thumb_func 0x80d9b7c +thumb_func 0x80d9bbc +thumb_func 0x80d9c54 +thumb_func 0x80d9c8c +thumb_func 0x80d9cbc +thumb_func 0x80d9ce4 +thumb_func 0x80d9d0c +thumb_func 0x80d9da4 +thumb_func 0x80d9dd8 +thumb_func 0x80d9ea4 +thumb_func 0x80d9ef0 +thumb_func 0x80d9f30 +thumb_func 0x80d9f90 +thumb_func 0x80d9fdc +thumb_func 0x80da020 +thumb_func 0x80da064 +thumb_func 0x80da074 +thumb_func 0x80da094 +thumb_func 0x80da0b8 +thumb_func 0x80da330 +thumb_func 0x80da460 +thumb_func 0x80da58c +thumb_func 0x80da624 +thumb_func 0x80da664 +thumb_func 0x80da68c +thumb_func 0x80da6a4 +thumb_func 0x80da6f8 +thumb_func 0x80da710 +thumb_func 0x80da744 +thumb_func 0x80da800 +thumb_func 0x80da828 +thumb_func 0x80da884 +thumb_func 0x80da8d8 +thumb_func 0x80daa0c +thumb_func 0x80daa20 +thumb_func 0x80daa50 +thumb_func 0x80daad4 +thumb_func 0x80dac44 +thumb_func 0x80dace8 +thumb_func 0x80dad14 +thumb_func 0x80dad1c +thumb_func 0x80dae00 +thumb_func 0x80daeac +thumb_func 0x80daefc +thumb_func 0x80dafe8 +thumb_func 0x80db000 +thumb_func 0x80db01c +thumb_func 0x80db07c +thumb_func 0x80db0a8 +thumb_func 0x80db17c +thumb_func 0x80db1cc +thumb_func 0x80db204 +thumb_func 0x80db40c +thumb_func 0x80db444 +thumb_func 0x80db47c +thumb_func 0x80db498 +thumb_func 0x80db4b0 +thumb_func 0x80db638 +thumb_func 0x80db694 +thumb_func 0x80db6cc +thumb_func 0x80db6f4 +thumb_func 0x80db72c +thumb_func 0x80db760 +thumb_func 0x80db78c +thumb_func 0x80db858 +thumb_func 0x80dba20 +thumb_func 0x80dba6c +thumb_func 0x80dbb10 +thumb_func 0x80dbb28 +thumb_func 0x80dbb6c +thumb_func 0x80dbbb0 +thumb_func 0x80dbbf4 +thumb_func 0x80dbc54 +thumb_func 0x80dbcf8 +thumb_func 0x80dbd4c +thumb_func 0x80dbd94 +thumb_func 0x80dbdd8 +thumb_func 0x80dbe08 +thumb_func 0x80dbe8c +thumb_func 0x80dbf50 +thumb_func 0x80dbf80 +thumb_func 0x80dbfc8 +thumb_func 0x80dbfe0 +thumb_func 0x80dc034 +thumb_func 0x80dc118 +thumb_func 0x80dc150 +thumb_func 0x80dc2dc +thumb_func 0x80dc318 +thumb_func 0x80dc334 +thumb_func 0x80dc34c +thumb_func 0x80dc3e8 +thumb_func 0x80dc43c +thumb_func 0x80dc46c +thumb_func 0x80dc4ac +thumb_func 0x80dc5bc +thumb_func 0x80dc7b0 +thumb_func 0x80dc7e4 +thumb_func 0x80dcb38 +thumb_func 0x80dcb54 +thumb_func 0x80dcb70 +thumb_func 0x80dcbc0 +thumb_func 0x80dccc4 +thumb_func 0x80dccf4 +thumb_func 0x80dce40 +thumb_func 0x80dce84 +thumb_func 0x80dd0a4 +thumb_func 0x80dd154 +thumb_func 0x80dd184 +thumb_func 0x80dd1c4 +thumb_func 0x80dd270 +thumb_func 0x80dd2d0 +thumb_func 0x80dd34c +thumb_func 0x80dd3b0 +thumb_func 0x80dd440 +thumb_func 0x80dd484 +thumb_func 0x80dd50c +thumb_func 0x80dd548 +thumb_func 0x80dd570 +thumb_func 0x80dd594 +thumb_func 0x80dd634 +thumb_func 0x80dd6e4 +thumb_func 0x80dd76c +thumb_func 0x80dd854 +thumb_func 0x80dd890 +thumb_func 0x80dd94c +thumb_func 0x80dd988 +thumb_func 0x80ddab4 +thumb_func 0x80ddb88 +thumb_func 0x80ddbc8 +thumb_func 0x80ddc0c +thumb_func 0x80ddd24 +thumb_func 0x80ddd58 +thumb_func 0x80dddc0 +thumb_func 0x80dde00 +thumb_func 0x80ddef8 +thumb_func 0x80ddf98 +thumb_func 0x80ddfb0 +thumb_func 0x80ddfc8 +thumb_func 0x80de114 +thumb_func 0x80de140 +thumb_func 0x80de184 +thumb_func 0x80de1c0 +thumb_func 0x80de20c +thumb_func 0x80de2d4 +thumb_func 0x80de338 +thumb_func 0x80de3c0 +thumb_func 0x80de418 +thumb_func 0x80de454 +thumb_func 0x80de468 +thumb_func 0x80de47c +thumb_func 0x80de4b0 +thumb_func 0x80de6b0 +thumb_func 0x80de748 +thumb_func 0x80de788 +thumb_func 0x80de958 +thumb_func 0x80dec00 +thumb_func 0x80dede0 +thumb_func 0x80dee2c +thumb_func 0x80deff0 +thumb_func 0x80df098 +thumb_func 0x80df0a4 +thumb_func 0x80df0d4 +thumb_func 0x80df11c +thumb_func 0x80df158 +thumb_func 0x80df194 +thumb_func 0x80df1b4 +thumb_func 0x80df1f0 +thumb_func 0x80df22c +thumb_func 0x80df244 +thumb_func 0x80df290 +thumb_func 0x80df2b0 +thumb_func 0x80df2cc +thumb_func 0x80df2e0 +thumb_func 0x80df448 +thumb_func 0x80df478 +thumb_func 0x80df554 +thumb_func 0x80df594 +thumb_func 0x80df670 +thumb_func 0x80df70c +thumb_func 0x80df768 +thumb_func 0x80df794 +thumb_func 0x80df7c8 +thumb_func 0x80df860 +thumb_func 0x80df8b0 +thumb_func 0x80df968 +thumb_func 0x80df9ac +thumb_func 0x80df9e8 +thumb_func 0x80dfa2c +thumb_func 0x80dfa68 +thumb_func 0x80dfab4 +thumb_func 0x80dfac8 +thumb_func 0x80dfbb4 +thumb_func 0x80dfc78 +thumb_func 0x80dfca0 +thumb_func 0x80dfe34 +thumb_func 0x80dff58 +thumb_func 0x80dff84 +thumb_func 0x80dffcc +thumb_func 0x80e000c +thumb_func 0x80e01f0 +thumb_func 0x80e02d4 +thumb_func 0x80e03f8 +thumb_func 0x80e0428 +thumb_func 0x80e04d4 +thumb_func 0x80e0558 +thumb_func 0x80e05c4 +thumb_func 0x80e05ec +thumb_func 0x80e0638 +thumb_func 0x80e06b4 +thumb_func 0x80e06fc +thumb_func 0x80e0730 +thumb_func 0x80e0750 +thumb_func 0x80e07d0 +thumb_func 0x80e07f4 +thumb_func 0x80e0814 +thumb_func 0x80e0834 +thumb_func 0x80e0990 +thumb_func 0x80e0a58 +thumb_func 0x80e0aa4 +thumb_func 0x80e0abc +thumb_func 0x80e0ad0 +thumb_func 0x80e0b04 +thumb_func 0x80e0b30 +thumb_func 0x80e0b5c +thumb_func 0x80e0b78 +thumb_func 0x80e0bc8 +thumb_func 0x80e0c0c +thumb_func 0x80e0c28 +thumb_func 0x80e0c84 +thumb_func 0x80e0cbc +thumb_func 0x80e0ce0 +thumb_func 0x80e0d14 +thumb_func 0x80e0dbc +thumb_func 0x80e0e68 +thumb_func 0x80e0ed0 +thumb_func 0x80e0ef8 +thumb_func 0x80e0f14 +thumb_func 0x80e0f34 +thumb_func 0x80e0f5c +thumb_func 0x80e0f84 +thumb_func 0x80e0fa4 +thumb_func 0x80e0fbc +thumb_func 0x80e0ff8 +thumb_func 0x80e1010 +thumb_func 0x80e1064 +thumb_func 0x80e1090 +thumb_func 0x80e10a8 +thumb_func 0x80e10c0 +thumb_func 0x80e1154 +thumb_func 0x80e1164 +thumb_func 0x80e119c +thumb_func 0x80e11e8 +thumb_func 0x80e121c +thumb_func 0x80e122c +thumb_func 0x80e12c8 +thumb_func 0x80e1318 +thumb_func 0x80e1378 +thumb_func 0x80e13bc +thumb_func 0x80e13fc +thumb_func 0x80e14cc +thumb_func 0x80e1568 +thumb_func 0x80e1618 +thumb_func 0x80e1650 +thumb_func 0x80e166c +thumb_func 0x80e16e0 +thumb_func 0x80e17ec +thumb_func 0x80e1850 +thumb_func 0x80e1880 +thumb_func 0x80e1a0c +thumb_func 0x80e1a40 +thumb_func 0x80e1a70 +thumb_func 0x80e1d6c +thumb_func 0x80e1d8c +thumb_func 0x80e1df4 +thumb_func 0x80e1eb8 +thumb_func 0x80e1ef0 +thumb_func 0x80e1f10 +thumb_func 0x80e1f6c +thumb_func 0x80e1f88 +thumb_func 0x80e2070 +thumb_func 0x80e20a0 +thumb_func 0x80e21f8 +thumb_func 0x80e2244 +thumb_func 0x80e22d0 +thumb_func 0x80e2374 +thumb_func 0x80e246c +thumb_func 0x80e24ac +thumb_func 0x80e265c +thumb_func 0x80e2678 +thumb_func 0x80e270c +thumb_func 0x80e2734 +thumb_func 0x80e2758 +thumb_func 0x80e2788 +thumb_func 0x80e27b8 +thumb_func 0x80e28f0 +thumb_func 0x80e292c +thumb_func 0x80e293c +thumb_func 0x80e296c +thumb_func 0x80e29dc +thumb_func 0x80e2a10 +thumb_func 0x80e2a78 +thumb_func 0x80e2b98 +thumb_func 0x80e2bd4 +thumb_func 0x80e2c14 +thumb_func 0x80e2c6c +thumb_func 0x80e2c8c +thumb_func 0x80e2cc4 +thumb_func 0x80e2ce4 +thumb_func 0x80e2d0c +thumb_func 0x80e2da0 +thumb_func 0x80e2e34 +thumb_func 0x80e2e50 +thumb_func 0x80e2e78 +thumb_func 0x80e2eec +thumb_func 0x80e2fa4 +thumb_func 0x80e3018 +thumb_func 0x80e3040 +thumb_func 0x80e3060 +thumb_func 0x80e3144 +thumb_func 0x80e3190 +thumb_func 0x80e31ec +thumb_func 0x80e3208 +thumb_func 0x80e329c +thumb_func 0x80e32e4 +thumb_func 0x80e3310 +thumb_func 0x80e3320 +thumb_func 0x80e3378 +thumb_func 0x80e33bc +thumb_func 0x80e33e8 +thumb_func 0x80e3414 +thumb_func 0x80e344c +thumb_func 0x80e3510 +thumb_func 0x80e3544 +thumb_func 0x80e356c +thumb_func 0x80e35c0 +thumb_func 0x80e35c4 +thumb_func 0x80e3638 +thumb_func 0x80e3678 +thumb_func 0x80e36d8 +thumb_func 0x80e3750 +thumb_func 0x80e3820 +thumb_func 0x80e383c nullsub_641 +thumb_func 0x80e384c nullsub_65 +thumb_func 0x80e3850 +thumb_func 0x80e38ac +thumb_func 0x80e38ec +thumb_func 0x80e3948 +thumb_func 0x80e3988 +thumb_func 0x80e39e4 +thumb_func 0x80e3a30 +thumb_func 0x80e3a58 +thumb_func 0x80e3a7c +thumb_func 0x80e3ab8 +thumb_func 0x80e3ad0 +thumb_func 0x80e3ae4 +thumb_func 0x80e3b08 +thumb_func 0x80e3b34 +thumb_func 0x80e3b64 +thumb_func 0x80e3b6c +thumb_func 0x80e3bd0 +thumb_func 0x80e3bf4 +thumb_func 0x80e3d50 +thumb_func 0x80e3da4 +thumb_func 0x80e3e24 +thumb_func 0x80e3e3c nullsub_64 +thumb_func 0x80e3e4c +thumb_func 0x80e3e68 nullsub_67 +thumb_func 0x80e3e78 nullsub_68 +thumb_func 0x80e3e7c +thumb_func 0x80e3eec +thumb_func 0x80e3f20 +thumb_func 0x80e3f74 +thumb_func 0x80e3fb8 +thumb_func 0x80e4018 +thumb_func 0x80e40a8 +thumb_func 0x80e4110 +thumb_func 0x80e414c +thumb_func 0x80e4188 +thumb_func 0x80e41b0 +thumb_func 0x80e4208 +thumb_func 0x80e4248 +thumb_func 0x80e4318 +thumb_func 0x80e437c +thumb_func 0x80e43ec +thumb_func 0x80e4450 +thumb_func 0x80e4460 +thumb_func 0x80e4490 +thumb_func 0x80e44a4 +thumb_func 0x80e4510 +thumb_func 0x80e45d0 +thumb_func 0x80e4648 +thumb_func 0x80e46e4 +thumb_func 0x80e474c +thumb_func 0x80e4764 +thumb_func 0x80e4778 +thumb_func 0x80e4788 +thumb_func 0x80e4810 +thumb_func 0x80e4830 +thumb_func 0x80e4868 +thumb_func 0x80e4890 +thumb_func 0x80e48b8 +thumb_func 0x80e48e0 +thumb_func 0x80e4908 +thumb_func 0x80e491c +thumb_func 0x80e4930 +thumb_func 0x80e4948 +thumb_func 0x80e4980 +thumb_func 0x80e49a4 +thumb_func 0x80e49c8 +thumb_func 0x80e49e8 +thumb_func 0x80e4a08 +thumb_func 0x80e4a74 +thumb_func 0x80e4ab0 +thumb_func 0x80e4ac8 +thumb_func 0x80e4b60 +thumb_func 0x80e4b88 +thumb_func 0x80e4bd0 +thumb_func 0x80e4bf0 +thumb_func 0x80e4c58 nullsub_21 +thumb_func 0x80e4c5c +thumb_func 0x80e4c8c +thumb_func 0x80e4cbc +thumb_func 0x80e4d10 +thumb_func 0x80e4d3c +thumb_func 0x80e4d6c +thumb_func 0x80e4d98 +thumb_func 0x80e4dc8 +thumb_func 0x80e4e40 +thumb_func 0x80e4ebc +thumb_func 0x80e4ef4 +thumb_func 0x80e4fa8 +thumb_func 0x80e5068 +thumb_func 0x80e5114 +thumb_func 0x80e514c +thumb_func 0x80e518c +thumb_func 0x80e51ac +thumb_func 0x80e51cc +thumb_func 0x80e51ec +thumb_func 0x80e520c +thumb_func 0x80e522c +thumb_func 0x80e52b0 +thumb_func 0x80e54b0 +thumb_func 0x80e5558 +thumb_func 0x80e55e0 +thumb_func 0x80e5638 +thumb_func 0x80e5690 +thumb_func 0x80e5740 +thumb_func 0x80e57c0 +thumb_func 0x80e5844 +thumb_func 0x80e58f8 +thumb_func 0x80e59e8 +thumb_func 0x80e5a94 +thumb_func 0x80e5b10 +thumb_func 0x80e5b74 +thumb_func 0x80e5bc4 +thumb_func 0x80e5cfc +thumb_func 0x80e5e40 nullsub_20 +thumb_func 0x80e5e44 +thumb_func 0x80e5f54 +thumb_func 0x80e5f98 +thumb_func 0x80e6044 +thumb_func 0x80e60c8 +thumb_func 0x80e6110 +thumb_func 0x80e61a4 +thumb_func 0x80e6208 +thumb_func 0x80e6318 +thumb_func 0x80e634c +thumb_func 0x80e6390 +thumb_func 0x80e63c4 +thumb_func 0x80e63d4 +thumb_func 0x80e647c +thumb_func 0x80e6530 +thumb_func 0x80e6604 +thumb_func 0x80e6738 +thumb_func 0x80e68cc +thumb_func 0x80e6900 +thumb_func 0x80e6934 +thumb_func 0x80e6afc +thumb_func 0x80e6d44 +thumb_func 0x80e6e08 +thumb_func 0x80e6f44 +thumb_func 0x80e6f78 +thumb_func 0x80e6fac +thumb_func 0x80e6fd4 +thumb_func 0x80e6fe0 +thumb_func 0x80e6fe8 +thumb_func 0x80e6ff8 +thumb_func 0x80e7008 +thumb_func 0x80e709c +thumb_func 0x80e711c +thumb_func 0x80e71e4 +thumb_func 0x80e726c +thumb_func 0x80e7274 +thumb_func 0x80e72fc +thumb_func 0x80e7324 +thumb_func 0x80e7330 +thumb_func 0x80e7750 +thumb_func 0x80e77e0 +thumb_func 0x80e78f8 +thumb_func 0x80e7a48 +thumb_func 0x80e7c04 +thumb_func 0x80e7c50 +thumb_func 0x80e7d60 +thumb_func 0x80e8068 +thumb_func 0x80e80b4 +thumb_func 0x80e810c +thumb_func 0x80e8194 +thumb_func 0x80e81e0 +thumb_func 0x80e823c +thumb_func 0x80e8290 +thumb_func 0x80e82dc +thumb_func 0x80e82f4 +thumb_func 0x80e8320 +thumb_func 0x80e84a4 +thumb_func 0x80e85f4 +thumb_func 0x80e8688 +thumb_func 0x80e8878 +thumb_func 0x80e88a8 +thumb_func 0x80e88e8 +thumb_func 0x80e8928 +thumb_func 0x80e8978 +thumb_func 0x80e89ec +thumb_func 0x80e8aa0 +thumb_func 0x80e8d68 +thumb_func 0x80e8fa4 +thumb_func 0x80e900c +thumb_func 0x80e90c0 +thumb_func 0x80e91e4 +thumb_func 0x80e9284 +thumb_func 0x80e9410 +thumb_func 0x80e94b8 +thumb_func 0x80e9560 +thumb_func 0x80e96a8 +thumb_func 0x80e96c8 +thumb_func 0x80e96dc +thumb_func 0x80e9734 +thumb_func 0x80e9750 +thumb_func 0x80e977c +thumb_func 0x80e97b4 +thumb_func 0x80e97e4 +thumb_func 0x80e97f8 +thumb_func 0x80e9854 +thumb_func 0x80e9884 +thumb_func 0x80e9924 +thumb_func 0x80e993c +thumb_func 0x80e99d8 +thumb_func 0x80e9a80 +thumb_func 0x80e9aa4 +thumb_func 0x80e9b6c +thumb_func 0x80e9c28 +thumb_func 0x80e9c5c +thumb_func 0x80e9cf4 +thumb_func 0x80e9d28 +thumb_func 0x80e9d54 +thumb_func 0x80e9d94 +thumb_func 0x80e9df8 +thumb_func 0x80e9e84 +thumb_func 0x80e9ea0 +thumb_func 0x80e9ec4 +thumb_func 0x80e9fd4 +thumb_func 0x80ea218 +thumb_func 0x80ea274 +thumb_func 0x80ea2a8 +thumb_func 0x80ea308 +thumb_func 0x80ea320 +thumb_func 0x80ea344 +thumb_func 0x80ea3c8 +thumb_func 0x80ea3e4 +thumb_func 0x80ea420 +thumb_func 0x80ea46c +thumb_func 0x80ea48c +thumb_func 0x80ea4d8 +thumb_func 0x80ea50c +thumb_func 0x80ea574 +thumb_func 0x80ea6f0 +thumb_func 0x80ea720 +thumb_func 0x80ea730 +thumb_func 0x80ea7d0 +thumb_func 0x80ea808 +thumb_func 0x80ea83c +thumb_func 0x80ea88c +thumb_func 0x80ea8d4 +thumb_func 0x80ea8e8 +thumb_func 0x80ea8fc +thumb_func 0x80ea98c +thumb_func 0x80eaa4c +thumb_func 0x80eaa60 +thumb_func 0x80eaaa4 +thumb_func 0x80eaaf0 +thumb_func 0x80eab80 +thumb_func 0x80eabf8 +thumb_func 0x80eac44 +thumb_func 0x80eacb4 +thumb_func 0x80eacd4 +thumb_func 0x80ead68 +thumb_func 0x80ead84 +thumb_func 0x80eadd4 +thumb_func 0x80eae18 +thumb_func 0x80eae54 +thumb_func 0x80eae98 +thumb_func 0x80eaf2c +thumb_func 0x80eaf54 +thumb_func 0x80eaf9c +thumb_func 0x80eb02c +thumb_func 0x80eb470 +thumb_func 0x80eb4cc +thumb_func 0x80eb4fc +thumb_func 0x80eb548 +thumb_func 0x80eb588 +thumb_func 0x80eb5d0 +thumb_func 0x80eb610 +thumb_func 0x80eb65c +thumb_func 0x80eb6e8 +thumb_func 0x80eb798 +thumb_func 0x80eb7cc +thumb_func 0x80eb84c +thumb_func 0x80eb904 +thumb_func 0x80eb984 +thumb_func 0x80eba80 +thumb_func 0x80ebaa4 +thumb_func 0x80ebae0 +thumb_func 0x80ebb64 +thumb_func 0x80ebd2c +thumb_func 0x80ebd4c +thumb_func 0x80ebdb8 +thumb_func 0x80ebe30 +thumb_func 0x80ebe68 +thumb_func 0x80ebea0 +thumb_func 0x80ebf08 +thumb_func 0x80ebf70 +thumb_func 0x80ebfd8 +thumb_func 0x80ec038 +thumb_func 0x80ec10c +thumb_func 0x80ec580 +thumb_func 0x80ec6c8 +thumb_func 0x80eca1c +thumb_func 0x80eca80 +thumb_func 0x80ecadc +thumb_func 0x80ecb94 +thumb_func 0x80ecbe4 +thumb_func 0x80ecc6c +thumb_func 0x80eccd0 +thumb_func 0x80eccec +thumb_func 0x80ecd08 +thumb_func 0x80ecd2c +thumb_func 0x80ecd74 +thumb_func 0x80ecdbc +thumb_func 0x80ecebc +thumb_func 0x80ecfe8 +thumb_func 0x80ed088 +thumb_func 0x80ed0a4 +thumb_func 0x80ed0d0 +thumb_func 0x80ed0e8 +thumb_func 0x80ed12c +thumb_func 0x80ed178 +thumb_func 0x80ed25c +thumb_func 0x80ed2c8 +thumb_func 0x80ed438 +thumb_func 0x80ed490 +thumb_func 0x80ed57c +thumb_func 0x80ed5a4 +thumb_func 0x80ed5cc +thumb_func 0x80ed694 +thumb_func 0x80ed784 +thumb_func 0x80ed870 +thumb_func 0x80ed900 +thumb_func 0x80ed950 +thumb_func 0x80ed990 +thumb_func 0x80ed9d0 +thumb_func 0x80eda10 +thumb_func 0x80edab0 +thumb_func 0x80edb90 +thumb_func 0x80edbe4 +thumb_func 0x80edcac +thumb_func 0x80edd80 +thumb_func 0x80ede68 +thumb_func 0x80edf64 +thumb_func 0x80ee010 +thumb_func 0x80ee07c +thumb_func 0x80ee0ec +thumb_func 0x80ee144 +thumb_func 0x80ee234 nullsub_14 +thumb_func 0x80ee238 +thumb_func 0x80ee328 +thumb_func 0x80ee3a8 +thumb_func 0x80ee3d4 +thumb_func 0x80ee444 +thumb_func 0x80ee470 +thumb_func 0x80ee4c8 +thumb_func 0x80ee55c +thumb_func 0x80ee568 +thumb_func 0x80ee5a0 +thumb_func 0x80ee664 +thumb_func 0x80ee780 +thumb_func 0x80ee808 +thumb_func 0x80ee898 +thumb_func 0x80ee990 +thumb_func 0x80ee9a4 +thumb_func 0x80ee9b8 +thumb_func 0x80eead4 +thumb_func 0x80eec24 +thumb_func 0x80eeca4 +thumb_func 0x80eedec +thumb_func 0x80eee7c +thumb_func 0x80eef6c +thumb_func 0x80eeffc +thumb_func 0x80ef0bc +thumb_func 0x80ef1b4 +thumb_func 0x80ef244 +thumb_func 0x80ef2d8 +thumb_func 0x80ef330 +thumb_func 0x80ef3e0 +thumb_func 0x80ef588 +thumb_func 0x80ef69c +thumb_func 0x80ef6f8 +thumb_func 0x80ef784 +thumb_func 0x80ef7a8 +thumb_func 0x80ef7cc +thumb_func 0x80ef7f0 +thumb_func 0x80ef814 +thumb_func 0x80ef838 +thumb_func 0x80ef864 +thumb_func 0x80ef88c +thumb_func 0x80ef934 +thumb_func 0x80ef960 +thumb_func 0x80ef97c +thumb_func 0x80ef9bc +thumb_func 0x80efa24 +thumb_func 0x80efa70 +thumb_func 0x80efb3c +thumb_func 0x80efb98 +thumb_func 0x80efbe8 +thumb_func 0x80efc24 +thumb_func 0x80efcc0 +thumb_func 0x80efd54 +thumb_func 0x80efe10 +thumb_func 0x80efe44 +thumb_func 0x80efe74 +thumb_func 0x80eff10 +thumb_func 0x80eff70 +thumb_func 0x80f0004 +thumb_func 0x80f0054 +thumb_func 0x80f00bc +thumb_func 0x80f0150 +thumb_func 0x80f01c8 +thumb_func 0x80f0208 +thumb_func 0x80f02a0 +thumb_func 0x80f02ac +thumb_func 0x80f02b8 +thumb_func 0x80f02f8 +thumb_func 0x80f0304 +thumb_func 0x80f0310 +thumb_func 0x80f0350 +thumb_func 0x80f0390 +thumb_func 0x80f03e4 +thumb_func 0x80f03fc +thumb_func 0x80f0428 +thumb_func 0x80f04d4 +thumb_func 0x80f0514 +thumb_func 0x80f0578 +thumb_func 0x80f05cc +thumb_func 0x80f05f8 +thumb_func 0x80f0628 +thumb_func 0x80f0648 +thumb_func 0x80f0694 +thumb_func 0x80f06cc +thumb_func 0x80f0820 +thumb_func 0x80f0864 +thumb_func 0x80f08a8 +thumb_func 0x80f0964 +thumb_func 0x80f0990 +thumb_func 0x80f0a14 +thumb_func 0x80f0a38 +thumb_func 0x80f0a68 +thumb_func 0x80f0aac +thumb_func 0x80f0aec +thumb_func 0x80f0b0c +thumb_func 0x80f0b70 +thumb_func 0x80f0c84 +thumb_func 0x80f0cb4 +thumb_func 0x80f0e34 +thumb_func 0x80f0f78 +thumb_func 0x80f105c +thumb_func 0x80f10c4 +thumb_func 0x80f1144 +thumb_func 0x80f11ac +thumb_func 0x80f11e4 +thumb_func 0x80f15dc +thumb_func 0x80f1600 +thumb_func 0x80f1640 +thumb_func 0x80f1694 +thumb_func 0x80f16e0 +thumb_func 0x80f1758 +thumb_func 0x80f183c +thumb_func 0x80f1934 +thumb_func 0x80f1960 +thumb_func 0x80f19a8 +thumb_func 0x80f19c8 +thumb_func 0x80f1a00 +thumb_func 0x80f1a40 +thumb_func 0x80f1ce4 +thumb_func 0x80f1d28 +thumb_func 0x80f1ed8 +thumb_func 0x80f2164 +thumb_func 0x80f23ec +thumb_func 0x80f2620 +thumb_func 0x80f28fc +thumb_func 0x80f2b50 +thumb_func 0x80f2cb8 +thumb_func 0x80f2ee8 +thumb_func 0x80f3080 +thumb_func 0x80f3174 nullsub_15 +thumb_func 0x80f3178 +thumb_func 0x80f31e8 +thumb_func 0x80f39cc +thumb_func 0x80f3c00 +thumb_func 0x80f3eac +thumb_func 0x80f40a4 +thumb_func 0x80f4180 +thumb_func 0x80f4260 +thumb_func 0x80f4470 +thumb_func 0x80f45e0 +thumb_func 0x80f46e0 +thumb_func 0x80f488c +thumb_func 0x80f4bbc +thumb_func 0x80f4e0c +thumb_func 0x80f4ea0 +thumb_func 0x80f50ac +thumb_func 0x80f51e0 +thumb_func 0x80f537c +thumb_func 0x80f55b0 +thumb_func 0x80f5858 +thumb_func 0x80f59a4 +thumb_func 0x80f59d0 +thumb_func 0x80f5a10 +thumb_func 0x80f5d54 +thumb_func 0x80f5ed0 +thumb_func 0x80f5f74 +thumb_func 0x80f5fb0 +thumb_func 0x80f5fbc +thumb_func 0x80f6114 +thumb_func 0x80f626c +thumb_func 0x80f62f8 +thumb_func 0x80f6318 +thumb_func 0x80f6418 +thumb_func 0x80f643c +thumb_func 0x80f64fc +thumb_func 0x80f66f0 +thumb_func 0x80f672c +thumb_func 0x80f6748 +thumb_func 0x80f678c +thumb_func 0x80f6880 +thumb_func 0x80f6918 +thumb_func 0x80f699c +thumb_func 0x80f6a34 +thumb_func 0x80f6c28 +thumb_func 0x80f6ed8 +thumb_func 0x80f6f40 +thumb_func 0x80f6fa0 +thumb_func 0x80f6fe8 +thumb_func 0x80f7044 +thumb_func 0x80f70d8 +thumb_func 0x80f7114 +thumb_func 0x80f71dc +thumb_func 0x80f7288 +thumb_func 0x80f72c0 +thumb_func 0x80f730c +thumb_func 0x80f739c +thumb_func 0x80f760c +thumb_func 0x80f76e8 +thumb_func 0x80f7708 +thumb_func 0x80f7760 +thumb_func 0x80f77ac +thumb_func 0x80f77d4 +thumb_func 0x80f7848 +thumb_func 0x80f7880 +thumb_func 0x80f78e8 +thumb_func 0x80f79b8 +thumb_func 0x80f7a3c +thumb_func 0x80f7ba0 +thumb_func 0x80f7bf4 +thumb_func 0x80f7c6c +thumb_func 0x80f7d4c +thumb_func 0x80f7dcc +thumb_func 0x80f7e38 +thumb_func 0x80f7eb0 +thumb_func 0x80f7f00 +thumb_func 0x80f7ff8 +thumb_func 0x80f8070 +thumb_func 0x80f80b4 +thumb_func 0x80f8110 +thumb_func 0x80f8310 +thumb_func 0x80f8538 +thumb_func 0x80f8684 +thumb_func 0x80f86f4 +thumb_func 0x80f8760 +thumb_func 0x80f87c0 +thumb_func 0x80f880c +thumb_func 0x80f888c +thumb_func 0x80f8af4 +thumb_func 0x80f8b18 +thumb_func 0x80f8b3c +thumb_func 0x80f8b84 +thumb_func 0x80f8ba4 +thumb_func 0x80f8bd4 +thumb_func 0x80f8c14 +thumb_func 0x80f8c54 +thumb_func 0x80f8c64 +thumb_func 0x80f8c90 +thumb_func 0x80f8cbc +thumb_func 0x80f8cdc +thumb_func 0x80f8d08 +thumb_func 0x80f8d34 +thumb_func 0x80f8d48 +thumb_func 0x80f8d8c +thumb_func 0x80f8dec +thumb_func 0x80f8e08 +thumb_func 0x80f8e24 +thumb_func 0x80f8e40 +thumb_func 0x80f8f3c +thumb_func 0x80f8f64 +thumb_func 0x80f8f98 +thumb_func 0x80f901c +thumb_func 0x80f9044 +thumb_func 0x80f9068 +thumb_func 0x80f90a4 +thumb_func 0x80f90e0 +thumb_func 0x80f90f4 +thumb_func 0x80f916c +thumb_func 0x80f9178 +thumb_func 0x80f91d0 +thumb_func 0x80f9200 +thumb_func 0x80f935c +thumb_func 0x80f936c +thumb_func 0x80f938c +thumb_func 0x80f9424 +thumb_func 0x80f950c +thumb_func 0x80f95b4 +thumb_func 0x80f95b8 +thumb_func 0x80f9748 +thumb_func 0x80f9778 +thumb_func 0x80f9830 +thumb_func 0x80f9878 +thumb_func 0x80f98cc +thumb_func 0x80f98ec +thumb_func 0x80f9918 +thumb_func 0x80f996c +thumb_func 0x80f999c +thumb_func 0x80f99c4 +thumb_func 0x80f99e4 +thumb_func 0x80f99f0 +thumb_func 0x80f9a10 +thumb_func 0x80f9ad4 +thumb_func 0x80f9b58 +thumb_func 0x80f9b88 +thumb_func 0x80f9bb0 +thumb_func 0x80f9c00 +thumb_func 0x80f9c30 +thumb_func 0x80f9c90 +thumb_func 0x80f9cc8 +thumb_func 0x80f9cf0 +thumb_func 0x80f9d20 +thumb_func 0x80f9d48 +thumb_func 0x80f9d78 +thumb_func 0x80f9df8 +thumb_func 0x80f9e1c +thumb_func 0x80f9e50 +thumb_func 0x80f9e9c +thumb_func 0x80f9ee4 +thumb_func 0x80f9fbc +thumb_func 0x80f9fd4 +thumb_func 0x80fa058 +thumb_func 0x80fa0fc +thumb_func 0x80fa12c +thumb_func 0x80fa1a0 +thumb_func 0x80fa1f0 +thumb_func 0x80fa280 +thumb_func 0x80fa2ec +thumb_func 0x80fa300 +thumb_func 0x80fa31c +thumb_func 0x80fa344 +thumb_func 0x80fa358 +thumb_func 0x80fa374 +thumb_func 0x80fa3a0 +thumb_func 0x80fa43c +thumb_func 0x80fa464 +thumb_func 0x80fa48c +thumb_func 0x80fa4a0 +thumb_func 0x80fa4b4 +thumb_func 0x80fa500 +thumb_func 0x80fa66c +thumb_func 0x80fa7cc +thumb_func 0x80fa7e8 +thumb_func 0x80fa874 +thumb_func 0x80fa94c +thumb_func 0x80fa96c +thumb_func 0x80fa998 +thumb_func 0x80fa9ac +thumb_func 0x80fa9fc +thumb_func 0x80faa18 +thumb_func 0x80faa48 +thumb_func 0x80faa58 +thumb_func 0x80faa78 +thumb_func 0x80faaa4 +thumb_func 0x80faab8 +thumb_func 0x80fab48 +thumb_func 0x80fab74 +thumb_func 0x80fabac +thumb_func 0x80fabbc +thumb_func 0x80fabdc +thumb_func 0x80fac08 +thumb_func 0x80fac1c +thumb_func 0x80fac6c +thumb_func 0x80fac88 +thumb_func 0x80facb8 +thumb_func 0x80facc8 +thumb_func 0x80fad10 +thumb_func 0x80fadec +thumb_func 0x80fae54 +thumb_func 0x80fae9c +thumb_func 0x80faf1c +thumb_func 0x80faf6c +thumb_func 0x80faf70 nullsub_69 +thumb_func 0x80faf74 +thumb_func 0x80fafc4 +thumb_func 0x80fb004 +thumb_func 0x80fb05c +thumb_func 0x80fb1e0 +thumb_func 0x80fb214 +thumb_func 0x80fb240 +thumb_func 0x80fb2ec +thumb_func 0x80fb414 +thumb_func 0x80fb494 +thumb_func 0x80fb4d8 +thumb_func 0x80fb4e8 +thumb_func 0x80fb654 +thumb_func 0x80fb6a8 +thumb_func 0x80fb718 +thumb_func 0x80fb730 +thumb_func 0x80fb744 +thumb_func 0x80fb760 +thumb_func 0x80fb7d4 +thumb_func 0x80fb844 +thumb_func 0x80fb868 +thumb_func 0x80fb87c +thumb_func 0x80fb8e4 +thumb_func 0x80fb920 +thumb_func 0x80fb94c +thumb_func 0x80fb968 +thumb_func 0x80fba1c +thumb_func 0x80fbb30 +thumb_func 0x80fbbdc +thumb_func 0x80fbd50 +thumb_func 0x80fbdb0 +thumb_func 0x80fbe0c +thumb_func 0x80fbe58 +thumb_func 0x80fbf5c +thumb_func 0x80fbfd8 +thumb_func 0x80fc014 +thumb_func 0x80fc058 +thumb_func 0x80fc088 +thumb_func 0x80fc0c4 +thumb_func 0x80fc0e0 +thumb_func 0x80fc100 +thumb_func 0x80fc13c +thumb_func 0x80fc198 +thumb_func 0x80fc26c +thumb_func 0x80fc354 +thumb_func 0x80fc3d4 +thumb_func 0x80fc470 +thumb_func 0x80fc480 +thumb_func 0x80fc54c +thumb_func 0x80fc624 +thumb_func 0x80fc678 +thumb_func 0x80fc6ac +thumb_func 0x80fc700 +thumb_func 0x80fc718 +thumb_func 0x80fc740 +thumb_func 0x80fc760 +thumb_func 0x80fc844 +thumb_func 0x80fc910 +thumb_func 0x80fc924 +thumb_func 0x80fc934 +thumb_func 0x80fc944 +thumb_func 0x80fc984 +thumb_func 0x80fc9bc +thumb_func 0x80fc9f0 +thumb_func 0x80fca00 +thumb_func 0x80fca98 +thumb_func 0x80fcab4 +thumb_func 0x80fcac8 +thumb_func 0x80fcb58 +thumb_func 0x80fcbf8 +thumb_func 0x80fcc28 +thumb_func 0x80fcc58 +thumb_func 0x80fccf0 +thumb_func 0x80fcd24 +thumb_func 0x80fcd64 +thumb_func 0x80fcda0 +thumb_func 0x80fcdcc +thumb_func 0x80fcdf0 +thumb_func 0x80fce30 +thumb_func 0x80fce4c +thumb_func 0x80fcee0 +thumb_func 0x80fcf2c +thumb_func 0x80fd058 +thumb_func 0x80fd0e8 +thumb_func 0x80fd1ec +thumb_func 0x80fd24c +thumb_func 0x80fd320 +thumb_func 0x80fd4dc +thumb_func 0x80fd69c +thumb_func 0x80fd794 +thumb_func 0x80fd824 +thumb_func 0x80fd8b4 +thumb_func 0x80fd930 +thumb_func 0x80fd978 +thumb_func 0x80fd990 +thumb_func 0x80fd9b8 +thumb_func 0x80fda1c +thumb_func 0x80fda34 +thumb_func 0x80fda4c +thumb_func 0x80fda70 +thumb_func 0x80fdaa8 +thumb_func 0x80fdacc +thumb_func 0x80fdaec +thumb_func 0x80fdbac +thumb_func 0x80fdbe8 +thumb_func 0x80fdc7c +thumb_func 0x80fdcbc +thumb_func 0x80fdce4 +thumb_func 0x80fdd0c +thumb_func 0x80fdd58 +thumb_func 0x80fde20 +thumb_func 0x80fde44 +thumb_func 0x80fdf28 +thumb_func 0x80fdf84 +thumb_func 0x80fe01c +thumb_func 0x80fe134 +thumb_func 0x80fe204 +thumb_func 0x80fe278 +thumb_func 0x80fe2e8 +thumb_func 0x80fe330 +thumb_func 0x80fe3c0 +thumb_func 0x80fe440 +thumb_func 0x80fe454 +thumb_func 0x80fe488 +thumb_func 0x80fe4f8 +thumb_func 0x80fe564 +thumb_func 0x80fe5c8 +thumb_func 0x80fe5f8 +thumb_func 0x80fe65c +thumb_func 0x80fe680 +thumb_func 0x80fe6d0 +thumb_func 0x80fe6f4 +thumb_func 0x80fe710 +thumb_func 0x80fe72c +thumb_func 0x80fe748 +thumb_func 0x80fe764 +thumb_func 0x80fe780 +thumb_func 0x80fe79c +thumb_func 0x80fe7e4 +thumb_func 0x80fe810 +thumb_func 0x80fe874 +thumb_func 0x80fe88c +thumb_func 0x80fe8a8 +thumb_func 0x80fe90c +thumb_func 0x80fe974 +thumb_func 0x80fe9b4 +thumb_func 0x80fea20 +thumb_func 0x80fea84 +thumb_func 0x80feb0c +thumb_func 0x80feb28 +thumb_func 0x80feb64 +thumb_func 0x80feb84 +thumb_func 0x80febc8 +thumb_func 0x80febe4 +thumb_func 0x80fec58 +thumb_func 0x80fec90 +thumb_func 0x80fed08 +thumb_func 0x80fed9c +thumb_func 0x80fede0 +thumb_func 0x80fedfc +thumb_func 0x80fee18 +thumb_func 0x80fee34 +thumb_func 0x80feea0 +thumb_func 0x80fefcc +thumb_func 0x80ff070 +thumb_func 0x80ff090 +thumb_func 0x80ff0e8 +thumb_func 0x80ff130 +thumb_func 0x80ff180 +thumb_func 0x80ff1d8 +thumb_func 0x80ff234 +thumb_func 0x80ff2a8 +thumb_func 0x80ff328 +thumb_func 0x80ff378 +thumb_func 0x80ff394 +thumb_func 0x80ff44c +thumb_func 0x80ff498 +thumb_func 0x80ff508 +thumb_func 0x80ff540 +thumb_func 0x80ff578 +thumb_func 0x80ff5c4 +thumb_func 0x80ff66c +thumb_func 0x80ff6c8 +thumb_func 0x80ff71c +thumb_func 0x80ff794 +thumb_func 0x80ff7e8 +thumb_func 0x80ff84c +thumb_func 0x80ff894 +thumb_func 0x80ff8e0 +thumb_func 0x80ff944 +thumb_func 0x80ffa10 +thumb_func 0x80ffab8 +thumb_func 0x80ffb0c +thumb_func 0x80ffbc4 +thumb_func 0x80ffc00 +thumb_func 0x80ffc3c +thumb_func 0x80ffca8 +thumb_func 0x80ffd8c +thumb_func 0x80ffe1c +thumb_func 0x80ffee8 +thumb_func 0x80fffb8 +thumb_func 0x810003c +thumb_func 0x810012c +thumb_func 0x8100184 +thumb_func 0x8100208 +thumb_func 0x8100230 +thumb_func 0x81002d4 +thumb_func 0x8100304 +thumb_func 0x8100368 +thumb_func 0x81003e0 +thumb_func 0x8100444 +thumb_func 0x81004c0 +thumb_func 0x8100504 +thumb_func 0x810057c +thumb_func 0x810060c +thumb_func 0x81006a8 +thumb_func 0x8100714 +thumb_func 0x81007cc +thumb_func 0x8100810 +thumb_func 0x8100978 +thumb_func 0x8100d54 +thumb_func 0x8100d74 +thumb_func 0x8100e24 +thumb_func 0x8100e90 +thumb_func 0x8100f9c +thumb_func 0x8101014 +thumb_func 0x81010e8 +thumb_func 0x81011f0 +thumb_func 0x810122c +thumb_func 0x8101248 +thumb_func 0x81012a0 +thumb_func 0x81012e4 +thumb_func 0x8101330 +thumb_func 0x81013d8 +thumb_func 0x810151c +thumb_func 0x8101588 +thumb_func 0x810166c +thumb_func 0x81016d0 +thumb_func 0x8101740 +thumb_func 0x8101824 +thumb_func 0x810191c +thumb_func 0x8101988 +thumb_func 0x8101ae8 +thumb_func 0x8101b5c +thumb_func 0x8101bac +thumb_func 0x8101c90 +thumb_func 0x8101cf0 +thumb_func 0x8101d44 +thumb_func 0x8101db0 +thumb_func 0x8101dfc +thumb_func 0x8101e24 +thumb_func 0x8101ed4 +thumb_func 0x8101f08 +thumb_func 0x8101fc4 +thumb_func 0x8102070 +thumb_func 0x8102098 +thumb_func 0x81020e8 +thumb_func 0x8102190 +thumb_func 0x81021e8 +thumb_func 0x8102238 +thumb_func 0x81022c4 +thumb_func 0x8102314 +thumb_func 0x8102338 +thumb_func 0x81023d4 +thumb_func 0x81023e0 +thumb_func 0x81023f0 +thumb_func 0x81024e4 +thumb_func 0x810257c +thumb_func 0x810273c +thumb_func 0x8102790 +thumb_func 0x81027f8 +thumb_func 0x8102840 +thumb_func 0x8102894 +thumb_func 0x81028cc +thumb_func 0x81028dc +thumb_func 0x8102928 +thumb_func 0x810298c +thumb_func 0x81029cc +thumb_func 0x8102a1c +thumb_func 0x8102ab8 +thumb_func 0x8102b24 +thumb_func 0x8102b9c +thumb_func 0x8102bcc +thumb_func 0x8102c30 +thumb_func 0x8102c84 +thumb_func 0x8102cf8 +thumb_func 0x8102d30 +thumb_func 0x8102d78 +thumb_func 0x8102d90 +thumb_func 0x8102dd4 +thumb_func 0x8102e10 +thumb_func 0x8102ef8 +thumb_func 0x8103094 +thumb_func 0x81031bc +thumb_func 0x8103204 +thumb_func 0x8103330 +thumb_func 0x810338c +thumb_func 0x810341c +thumb_func 0x8103438 +thumb_func 0x81034f0 +thumb_func 0x8103524 +thumb_func 0x81035dc +thumb_func 0x8103634 +thumb_func 0x8103700 +thumb_func 0x8103790 +thumb_func 0x8103808 +thumb_func 0x8103878 +thumb_func 0x8103900 +thumb_func 0x810395c +thumb_func 0x81039b4 +thumb_func 0x8103a20 +thumb_func 0x8103a58 +thumb_func 0x8103aa0 +thumb_func 0x8103ad4 +thumb_func 0x8103b50 +thumb_func 0x8103b70 +thumb_func 0x8103be0 +thumb_func 0x8103c40 +thumb_func 0x8103c7c +thumb_func 0x8103c98 +thumb_func 0x8103ce8 +thumb_func 0x8103d28 +thumb_func 0x8103d8c +thumb_func 0x8103ddc +thumb_func 0x8103e70 +thumb_func 0x8103ea8 +thumb_func 0x8103ed0 +thumb_func 0x8103ef0 +thumb_func 0x8103f2c +thumb_func 0x8104028 +thumb_func 0x81040cc +thumb_func 0x81040f0 +thumb_func 0x8104118 +thumb_func 0x810421c +thumb_func 0x8104250 +thumb_func 0x81042f4 +thumb_func 0x8104434 +thumb_func 0x810445c +thumb_func 0x8104540 +thumb_func 0x8104838 +thumb_func 0x8104868 +thumb_func 0x81048d8 +thumb_func 0x810498c +thumb_func 0x81049a4 +thumb_func 0x8104a14 +thumb_func 0x8104a6c +thumb_func 0x8104af0 +thumb_func 0x8104b54 +thumb_func 0x8104bb4 +thumb_func 0x8104c48 +thumb_func 0x8104c64 +thumb_func 0x8104d0c +thumb_func 0x8104d80 +thumb_func 0x8104de4 +thumb_func 0x8104e00 +thumb_func 0x8104e64 +thumb_func 0x8104ec4 +thumb_func 0x8104f1c +thumb_func 0x8105050 +thumb_func 0x8105140 +thumb_func 0x8105188 +thumb_func 0x81051e8 +thumb_func 0x8105304 +thumb_func 0x8105340 +thumb_func 0x810536c +thumb_func 0x81053fc +thumb_func 0x8105488 +thumb_func 0x81054c8 +thumb_func 0x81054f4 +thumb_func 0x8105578 +thumb_func 0x81056c4 +thumb_func 0x81057a4 +thumb_func 0x810586c +thumb_func 0x81058c8 +thumb_func 0x8105a14 +thumb_func 0x8105ad4 +thumb_func 0x8105af4 +thumb_func 0x8105d38 +thumb_func 0x8105d88 +thumb_func 0x8105dcc +thumb_func 0x8105e44 +thumb_func 0x8105e6c +thumb_func 0x8105ee4 +thumb_func 0x8105f24 +thumb_func 0x8105f6c +thumb_func 0x8105fac +thumb_func 0x8105fcc +thumb_func 0x8106008 +thumb_func 0x8106060 +thumb_func 0x81060c8 +thumb_func 0x81061ec +thumb_func 0x8106230 +thumb_func 0x81062fc +thumb_func 0x8106358 +thumb_func 0x8106498 +thumb_func 0x8106504 +thumb_func 0x81065b0 +thumb_func 0x81065d8 +thumb_func 0x8106638 +thumb_func 0x81066b0 +thumb_func 0x8106700 +thumb_func 0x8106780 +thumb_func 0x81067d4 +thumb_func 0x8106870 +thumb_func 0x8106900 +thumb_func 0x8106990 +thumb_func 0x81069dc +thumb_func 0x8106a14 +thumb_func 0x8106a9c +thumb_func 0x8106acc +thumb_func 0x8106b38 +thumb_func 0x8106bf8 +thumb_func 0x8106d48 +thumb_func 0x8106e3c +thumb_func 0x8106f8c +thumb_func 0x8106fec +thumb_func 0x81070c8 +thumb_func 0x810711c +thumb_func 0x8107164 +thumb_func 0x8107194 +thumb_func 0x81071ec +thumb_func 0x8107208 +thumb_func 0x8107220 +thumb_func 0x81072b4 +thumb_func 0x8107320 +thumb_func 0x81073a4 +thumb_func 0x81074d0 +thumb_func 0x8107520 +thumb_func 0x81075ac +thumb_func 0x81075e0 +thumb_func 0x8107624 +thumb_func 0x8107650 +thumb_func 0x8107718 +thumb_func 0x8107750 +thumb_func 0x81077b0 +thumb_func 0x8107868 +thumb_func 0x810788c +thumb_func 0x81078fc +thumb_func 0x8107994 +thumb_func 0x81079b8 +thumb_func 0x81079d8 +thumb_func 0x8107a6c +thumb_func 0x8107a78 +thumb_func 0x8107ab0 +thumb_func 0x8107bd0 +thumb_func 0x8107c58 +thumb_func 0x8107c80 +thumb_func 0x8107c9c +thumb_func 0x8107d34 +thumb_func 0x8107d78 +thumb_func 0x8107dbc +thumb_func 0x8107e3c +thumb_func 0x8107ec4 +thumb_func 0x8107f18 +thumb_func 0x8107f44 +thumb_func 0x8107f80 +thumb_func 0x8107ff4 +thumb_func 0x8108010 +thumb_func 0x81080e4 +thumb_func 0x8108120 +thumb_func 0x810815c +thumb_func 0x81081a4 +thumb_func 0x81083d4 +thumb_func 0x8108514 +thumb_func 0x81085a8 +thumb_func 0x8108884 +thumb_func 0x81088e8 +thumb_func 0x8108934 +thumb_func 0x8108990 +thumb_func 0x8108bd4 +thumb_func 0x8108c58 +thumb_func 0x8108d6c +thumb_func 0x8108e18 +thumb_func 0x8108e7c +thumb_func 0x8108f6c +thumb_func 0x8109010 +thumb_func 0x81090bc +thumb_func 0x8109134 +thumb_func 0x81091c8 +thumb_func 0x8109310 +thumb_func 0x810937c +thumb_func 0x81093e4 +thumb_func 0x8109430 +thumb_func 0x8109458 +thumb_func 0x81094a4 +thumb_func 0x81094e4 +thumb_func 0x810952c +thumb_func 0x81095a4 +thumb_func 0x8109718 +thumb_func 0x8109758 +thumb_func 0x810979c +thumb_func 0x810980c +thumb_func 0x8109878 +thumb_func 0x81098b4 +thumb_func 0x8109928 +thumb_func 0x81099bc +thumb_func 0x81099e8 +thumb_func 0x8109a50 +thumb_func 0x8109a6c +thumb_func 0x8109a94 +thumb_func 0x8109aec +thumb_func 0x8109b64 +thumb_func 0x8109b88 +thumb_func 0x8109bb4 +thumb_func 0x8109bf4 +thumb_func 0x8109c34 +thumb_func 0x8109c5c +thumb_func 0x8109cb0 +thumb_func 0x8109d20 +thumb_func 0x810a004 +thumb_func 0x810a13c +thumb_func 0x810a180 +thumb_func 0x810a1d4 +thumb_func 0x810a1f0 +thumb_func 0x810a260 +thumb_func 0x810a2b4 +thumb_func 0x810a34c +thumb_func 0x810a49c +thumb_func 0x810a500 +thumb_func 0x810a60c +thumb_func 0x810a67c +thumb_func 0x810a8b0 +thumb_func 0x810a8e4 +thumb_func 0x810a9f8 +thumb_func 0x810aa48 +thumb_func 0x810aa64 +thumb_func 0x810aaa8 +thumb_func 0x810aac4 +thumb_func 0x810ab58 +thumb_func 0x810acbc +thumb_func 0x810ad44 +thumb_func 0x810adbc +thumb_func 0x810ae0c +thumb_func 0x810ae78 +thumb_func 0x810af3c +thumb_func 0x810afac +thumb_func 0x810b02c +thumb_func 0x810b084 +thumb_func 0x810b22c +thumb_func 0x810b27c +thumb_func 0x810b300 +thumb_func 0x810b34c +thumb_func 0x810b3c8 +thumb_func 0x810b4dc +thumb_func 0x810b510 +thumb_func 0x810b528 +thumb_func 0x810b580 +thumb_func 0x810b5e8 +thumb_func 0x810b648 +thumb_func 0x810b6ac +thumb_func 0x810b81c +thumb_func 0x810b9a4 +thumb_func 0x810ba40 +thumb_func 0x810ba8c +thumb_func 0x810baec +thumb_func 0x810bc80 +thumb_func 0x810bd6c +thumb_func 0x810bdac +thumb_func 0x810be64 +thumb_func 0x810bed4 +thumb_func 0x810bf14 +thumb_func 0x810c098 +thumb_func 0x810c0fc +thumb_func 0x810c13c +thumb_func 0x810c1c4 +thumb_func 0x810c238 +thumb_func 0x810c274 +thumb_func 0x810c3b0 +thumb_func 0x810c418 +thumb_func 0x810c49c +thumb_func 0x810c4e4 +thumb_func 0x810c628 +thumb_func 0x810c698 +thumb_func 0x810c720 +thumb_func 0x810c858 +thumb_func 0x810c8f0 +thumb_func 0x810c9b4 +thumb_func 0x810cb40 +thumb_func 0x810cb74 +thumb_func 0x810cc40 +thumb_func 0x810cdb0 +thumb_func 0x810cf24 +thumb_func 0x810d168 +thumb_func 0x810d184 +thumb_func 0x810d234 +thumb_func 0x810d3a8 +thumb_func 0x810d48c +thumb_func 0x810d4d8 +thumb_func 0x810d56c +thumb_func 0x810d59c +thumb_func 0x810d600 +thumb_func 0x810d64c +thumb_func 0x810d67c +thumb_func 0x810d6b8 +thumb_func 0x810d704 +thumb_func 0x810d730 +thumb_func 0x810d780 +thumb_func 0x810d908 +thumb_func 0x810d95c +thumb_func 0x810d9b4 +thumb_func 0x810da04 +thumb_func 0x810da90 +thumb_func 0x810dac8 +thumb_func 0x810db00 +thumb_func 0x810db34 +thumb_func 0x810db58 +thumb_func 0x810dbb0 +thumb_func 0x810dbcc +thumb_func 0x810dc5c +thumb_func 0x810dccc +thumb_func 0x810dd44 +thumb_func 0x810de2c +thumb_func 0x810de58 +thumb_func 0x810def8 +thumb_func 0x810df64 +thumb_func 0x810dfc0 +thumb_func 0x810e080 +thumb_func 0x810e0c4 +thumb_func 0x810e1b0 +thumb_func 0x810e1d4 +thumb_func 0x810e260 +thumb_func 0x810e2cc +thumb_func 0x810e30c +thumb_func 0x810e3fc +thumb_func 0x810e460 +thumb_func 0x810e47c +thumb_func 0x810e504 +thumb_func 0x810e520 +thumb_func 0x810e574 +thumb_func 0x810e5a0 +thumb_func 0x810e614 +thumb_func 0x810e67c +thumb_func 0x810e6c0 +thumb_func 0x810e6e8 +thumb_func 0x810e728 +thumb_func 0x810e768 +thumb_func 0x810e7f8 +thumb_func 0x810e878 +thumb_func 0x810e894 +thumb_func 0x810e98c +thumb_func 0x810e9d4 +thumb_func 0x810ea18 +thumb_func 0x810ea9c +thumb_func 0x810eb18 +thumb_func 0x810eb64 +thumb_func 0x810ed70 +thumb_func 0x810f29c +thumb_func 0x810f2f0 +thumb_func 0x810f390 +thumb_func 0x810f3d8 +thumb_func 0x810f484 +thumb_func 0x810f4e4 +thumb_func 0x810f578 +thumb_func 0x810f5c0 +thumb_func 0x810f620 +thumb_func 0x810f664 +thumb_func 0x810f748 +thumb_func 0x810f7f8 +thumb_func 0x810f854 +thumb_func 0x810f868 +thumb_func 0x810f8d4 +thumb_func 0x810f990 +thumb_func 0x810f9d4 +thumb_func 0x810fa3c +thumb_func 0x810fb90 +thumb_func 0x810fc18 +thumb_func 0x810fc50 +thumb_func 0x810fcbc +thumb_func 0x810fd74 +thumb_func 0x810fddc +thumb_func 0x810fe84 +thumb_func 0x810ff00 +thumb_func 0x810ff90 +thumb_func 0x810ffc4 +thumb_func 0x8110024 +thumb_func 0x8110060 +thumb_func 0x811008c +thumb_func 0x81100e8 +thumb_func 0x8110190 +thumb_func 0x8110224 +thumb_func 0x81103b0 +thumb_func 0x81103f8 +thumb_func 0x8110440 +thumb_func 0x811058c +thumb_func 0x8110640 +thumb_func 0x8110664 +thumb_func 0x8110784 +thumb_func 0x8110884 +thumb_func 0x8110984 +thumb_func 0x8110a90 +thumb_func 0x8110bb8 +thumb_func 0x8110c88 +thumb_func 0x8110d34 +thumb_func 0x8110dcc +thumb_func 0x8110e04 +thumb_func 0x8110e80 +thumb_func 0x8110ecc +thumb_func 0x8110ef4 +thumb_func 0x8110f50 +thumb_func 0x8110f70 +thumb_func 0x81110a0 +thumb_func 0x811111c +thumb_func 0x81111e4 +thumb_func 0x8111240 +thumb_func 0x81112c0 +thumb_func 0x8111304 +thumb_func 0x8111388 +thumb_func 0x81113d0 +thumb_func 0x811141c +thumb_func 0x8111500 +thumb_func 0x811169c +thumb_func 0x8111780 +thumb_func 0x81117c4 +thumb_func 0x81118f4 +thumb_func 0x8111a64 +thumb_func 0x8111b6c +thumb_func 0x8111bac +thumb_func 0x8111bd8 +thumb_func 0x8111c18 +thumb_func 0x8111c68 +thumb_func 0x8111c94 +thumb_func 0x8111cec +thumb_func 0x8111d3c +thumb_func 0x8111d7c +thumb_func 0x8111de0 +thumb_func 0x8111e5c +thumb_func 0x8111ec4 +thumb_func 0x8111f38 +thumb_func 0x8111fb4 +thumb_func 0x8112044 +thumb_func 0x8112064 +thumb_func 0x81120dc +thumb_func 0x8112164 +thumb_func 0x81121bc +thumb_func 0x8112230 +thumb_func 0x81122d8 +thumb_func 0x81123ec +thumb_func 0x8112404 +thumb_func 0x81124a0 +thumb_func 0x81125c8 +thumb_func 0x81126a0 +thumb_func 0x81126bc nullsub_701 +thumb_func 0x81126c8 +thumb_func 0x811292c +thumb_func 0x81129c0 +thumb_func 0x8112ab4 +thumb_func 0x8112bd4 +thumb_func 0x8112c14 +thumb_func 0x8112e30 +thumb_func 0x8112fa8 +thumb_func 0x811305c +thumb_func 0x81131e4 +thumb_func 0x8113240 +thumb_func 0x811329c +thumb_func 0x811331c +thumb_func 0x8113394 +thumb_func 0x81133c8 +thumb_func 0x811349c +thumb_func 0x81134bc +thumb_func 0x8113560 +thumb_func 0x81136ec +thumb_func 0x81137b0 +thumb_func 0x8113808 +thumb_func 0x81138b4 +thumb_func 0x8113950 +thumb_func 0x8113a04 +thumb_func 0x8113a74 +thumb_func 0x8113aa0 +thumb_func 0x8113b30 +thumb_func 0x8113c38 +thumb_func 0x8113d08 +thumb_func 0x8113dc4 +thumb_func 0x8113e3c +thumb_func 0x8113eec +thumb_func 0x8113f38 +thumb_func 0x8113fac +thumb_func 0x8114034 +thumb_func 0x811406c +thumb_func 0x81140d8 +thumb_func 0x8114124 +thumb_func 0x81141a0 +thumb_func 0x811422c +thumb_func 0x8114268 +thumb_func 0x81142a8 +thumb_func 0x81142e0 +thumb_func 0x81143e0 +thumb_func 0x81143fc +thumb_func 0x81145b0 +thumb_func 0x81146c8 +thumb_func 0x8114918 +thumb_func 0x8114a94 +thumb_func 0x8114bc4 +thumb_func 0x8114c10 +thumb_func 0x8114cc0 +thumb_func 0x8114d0c +thumb_func 0x8114d48 +thumb_func 0x8114f98 +thumb_func 0x81150ec +thumb_func 0x81151b0 +thumb_func 0x81151e4 +thumb_func 0x811524c +thumb_func 0x81152b0 +thumb_func 0x81152cc +thumb_func 0x8115340 +thumb_func 0x81153d0 +thumb_func 0x8115460 +thumb_func 0x811549c +thumb_func 0x811550c +thumb_func 0x811554c +thumb_func 0x8115704 +thumb_func 0x8115764 +thumb_func 0x81157a4 +thumb_func 0x8115828 +thumb_func 0x8115930 +thumb_func 0x81159f0 +thumb_func 0x8115a78 +thumb_func 0x8115a94 +thumb_func 0x8115b2c +thumb_func 0x8115bfc +thumb_func 0x8115cf4 +thumb_func 0x8115dd8 +thumb_func 0x8115e50 +thumb_func 0x8115e78 +thumb_func 0x8115f20 +thumb_func 0x8115f7c +thumb_func 0x8115fe8 +thumb_func 0x811604c +thumb_func 0x811608c +thumb_func 0x81160d4 +thumb_func 0x81160f4 +thumb_func 0x8116148 +thumb_func 0x81161d4 +thumb_func 0x8116204 +thumb_func 0x8116254 +thumb_func 0x81162a4 +thumb_func 0x81162f4 +thumb_func 0x811635c +thumb_func 0x8116418 +thumb_func 0x8116468 +thumb_func 0x81164d0 +thumb_func 0x8116520 +thumb_func 0x811657c +thumb_func 0x81165e4 +thumb_func 0x8116650 +thumb_func 0x8116708 +thumb_func 0x8116760 +thumb_func 0x81167e4 +thumb_func 0x81168f4 +thumb_func 0x8116998 +thumb_func 0x8116a44 +thumb_func 0x8116af4 +thumb_func 0x8116b48 +thumb_func 0x8116bd8 +thumb_func 0x8116c20 +thumb_func 0x8116c70 +thumb_func 0x8116ca8 +thumb_func 0x8116d40 +thumb_func 0x8116db0 +thumb_func 0x8116df8 +thumb_func 0x8116e34 +thumb_func 0x8116e70 +thumb_func 0x8116eb4 +thumb_func 0x8116fac +thumb_func 0x8117098 +thumb_func 0x81170c4 +thumb_func 0x8117108 +thumb_func 0x81171b0 +thumb_func 0x81171f0 +thumb_func 0x8117210 +thumb_func 0x8117248 +thumb_func 0x8117320 +thumb_func 0x8117364 +thumb_func 0x81175b4 +thumb_func 0x8117704 +thumb_func 0x8117754 +thumb_func 0x811793c +thumb_func 0x8117b3c +thumb_func 0x8117ce4 +thumb_func 0x8117d50 +thumb_func 0x8117e14 +thumb_func 0x8117e60 +thumb_func 0x8117eb0 +thumb_func 0x8117f28 +thumb_func 0x8117fa4 +thumb_func 0x8117fd0 +thumb_func 0x8117ffc +thumb_func 0x8118034 +thumb_func 0x81180a4 +thumb_func 0x81182b0 +thumb_func 0x8118474 +thumb_func 0x8118494 +thumb_func 0x81184c0 +thumb_func 0x81184f0 +thumb_func 0x811858c +thumb_func 0x8118628 +thumb_func 0x81186b0 +thumb_func 0x81186e4 +thumb_func 0x8118714 +thumb_func 0x8118760 +thumb_func 0x8118780 +thumb_func 0x81187b0 +thumb_func 0x8118820 +thumb_func 0x811887c +thumb_func 0x8118990 +thumb_func 0x8118a24 +thumb_func 0x8118adc +thumb_func 0x8118b3c +thumb_func 0x8118d88 +thumb_func 0x8119094 +thumb_func 0x8119310 +thumb_func 0x81195b8 +thumb_func 0x811980c +thumb_func 0x81198e4 +thumb_func 0x81199b4 +thumb_func 0x81199ec +thumb_func 0x8119a10 +thumb_func 0x8119a1c +thumb_func 0x8119a74 +thumb_func 0x8119a88 +thumb_func 0x8119ad0 +thumb_func 0x8119b94 +thumb_func 0x8119c18 +thumb_func 0x8119c44 +thumb_func 0x8119c50 +thumb_func 0x8119c7c +thumb_func 0x8119d18 +thumb_func 0x8119d90 +thumb_func 0x8119e30 +thumb_func 0x8119ed8 +thumb_func 0x8119fb4 +thumb_func 0x811a010 +thumb_func 0x811a034 +thumb_func 0x811a044 +thumb_func 0x811a080 +thumb_func 0x811a110 +thumb_func 0x811a14c +thumb_func 0x811a188 +thumb_func 0x811a1c4 +thumb_func 0x811a200 +thumb_func 0x811a274 +thumb_func 0x811a2e4 +thumb_func 0x811a2f4 +thumb_func 0x811a384 +thumb_func 0x811a414 +thumb_func 0x811a48c +thumb_func 0x811a4b4 +thumb_func 0x811a51c +thumb_func 0x811a580 +thumb_func 0x811a5d0 +thumb_func 0x811a60c +thumb_func 0x811a648 +thumb_func 0x811a688 +thumb_func 0x811a6f4 +thumb_func 0x811a740 +thumb_func 0x811a768 +thumb_func 0x811a7a0 +thumb_func 0x811a7c4 +thumb_func 0x811a814 +thumb_func 0x811a848 +thumb_func 0x811a894 +thumb_func 0x811a8d0 +thumb_func 0x811a920 +thumb_func 0x811a964 +thumb_func 0x811a978 +thumb_func 0x811a988 +thumb_func 0x811a9d8 +thumb_func 0x811aa2c +thumb_func 0x811aa5c +thumb_func 0x811aac8 +thumb_func 0x811aae0 +thumb_func 0x811aaf4 +thumb_func 0x811ab10 +thumb_func 0x811ab4c +thumb_func 0x811ac78 +thumb_func 0x811ad20 +thumb_func 0x811ad40 +thumb_func 0x811b034 +thumb_func 0x811b0a8 +thumb_func 0x811b0b8 +thumb_func 0x811b0dc +thumb_func 0x811b0f4 +thumb_func 0x811b11c +thumb_func 0x811b140 +thumb_func 0x811b164 +thumb_func 0x811b188 +thumb_func 0x811b1ac +thumb_func 0x811b2d0 +thumb_func 0x811b2ec +thumb_func 0x811b384 +thumb_func 0x811b4d4 +thumb_func 0x811b614 +thumb_func 0x811b6d0 +thumb_func 0x811b75c +thumb_func 0x811b7bc +thumb_func 0x811b810 +thumb_func 0x811b85c +thumb_func 0x811b88c +thumb_func 0x811b8b8 +thumb_func 0x811b8c8 +thumb_func 0x811b920 +thumb_func 0x811b954 +thumb_func 0x811b984 +thumb_func 0x811ba34 +thumb_func 0x811ba74 +thumb_func 0x811ba80 +thumb_func 0x811bafc +thumb_func 0x811bb0c +thumb_func 0x811bb38 +thumb_func 0x811bb64 +thumb_func 0x811bbb4 +thumb_func 0x811bbe8 +thumb_func 0x811bc24 +thumb_func 0x811bc58 +thumb_func 0x811bc7c +thumb_func 0x811bcbc +thumb_func 0x811bcf8 +thumb_func 0x811bd38 +thumb_func 0x811be04 +thumb_func 0x811be94 +thumb_func 0x811bf14 +thumb_func 0x811bf38 +thumb_func 0x811bf64 +thumb_func 0x811c098 +thumb_func 0x811c0b8 +thumb_func 0x811c0d8 +thumb_func 0x811c140 +thumb_func 0x811c160 +thumb_func 0x811c17c +thumb_func 0x811c1a4 +thumb_func 0x811c1cc +thumb_func 0x811c220 +thumb_func 0x811c240 +thumb_func 0x811c260 +thumb_func 0x811c26c +thumb_func 0x811c28c +thumb_func 0x811c298 +thumb_func 0x811c2a4 +thumb_func 0x811c2b0 +thumb_func 0x811c2bc +thumb_func 0x811c2c8 +thumb_func 0x811c2d4 +thumb_func 0x811c30c +thumb_func 0x811c344 +thumb_func 0x811c38c +thumb_func 0x811c3a0 +thumb_func 0x811c3b4 +thumb_func 0x811c3c0 +thumb_func 0x811c3cc +thumb_func 0x811c3e0 +thumb_func 0x811c3ec +thumb_func 0x811c3f8 +thumb_func 0x811c3fc +thumb_func 0x811c430 +thumb_func 0x811c474 +thumb_func 0x811c480 +thumb_func 0x811c4c0 +thumb_func 0x811c4cc +thumb_func 0x811c4f8 +thumb_func 0x811c530 +thumb_func 0x811c568 +thumb_func 0x811c5b4 +thumb_func 0x811c5f4 +thumb_func 0x811c644 +thumb_func 0x811c68c +thumb_func 0x811c724 +thumb_func 0x811c744 +thumb_func 0x811c764 +thumb_func 0x811c79c +thumb_func 0x811c820 +thumb_func 0x811c850 +thumb_func 0x811c868 +thumb_func 0x811c9fc +thumb_func 0x811ca18 +thumb_func 0x811ca30 +thumb_func 0x811cb94 +thumb_func 0x811cbcc +thumb_func 0x811cc88 +thumb_func 0x811ccb8 +thumb_func 0x811ccfc +thumb_func 0x811cd40 +thumb_func 0x811cd84 +thumb_func 0x811cdcc +thumb_func 0x811ce08 +thumb_func 0x811ced4 +thumb_func 0x811cf74 +thumb_func 0x811d034 +thumb_func 0x811d040 +thumb_func 0x811d088 +thumb_func 0x811d0e4 +thumb_func 0x811d1a4 +thumb_func 0x811d250 +thumb_func 0x811d310 +thumb_func 0x811d3cc +thumb_func 0x811d3d8 +thumb_func 0x811d44c +thumb_func 0x811d4bc +thumb_func 0x811d544 +thumb_func 0x811d5c8 +thumb_func 0x811d608 +thumb_func 0x811d648 +thumb_func 0x811d688 +thumb_func 0x811d6c8 +thumb_func 0x811d708 +thumb_func 0x811d748 +thumb_func 0x811d7b4 +thumb_func 0x811d814 +thumb_func 0x811d87c +thumb_func 0x811d8e0 +thumb_func 0x811d920 +thumb_func 0x811d990 +thumb_func 0x811d9d8 +thumb_func 0x811dae4 +thumb_func 0x811db10 +thumb_func 0x811dba8 +thumb_func 0x811dcac +thumb_func 0x811de14 +thumb_func 0x811de8c +thumb_func 0x811dea0 +thumb_func 0x811dedc +thumb_func 0x811defc +thumb_func 0x811df70 +thumb_func 0x811dfac +thumb_func 0x811dfbc +thumb_func 0x811dfe0 +thumb_func 0x811e004 +thumb_func 0x811e048 +thumb_func 0x811e07c +thumb_func 0x811e164 +thumb_func 0x811e1c8 +thumb_func 0x811e1e0 +thumb_func 0x811e2b8 +thumb_func 0x811e2f0 +thumb_func 0x811e43c +thumb_func 0x811e598 +thumb_func 0x811e5c0 +thumb_func 0x811e624 +thumb_func 0x811e65c +thumb_func 0x811e670 +thumb_func 0x811e6a4 +thumb_func 0x811e6d8 +thumb_func 0x811e734 +thumb_func 0x811e76c +thumb_func 0x811e7a0 +thumb_func 0x811e7c0 +thumb_func 0x811e7d8 +thumb_func 0x811e814 +thumb_func 0x811e838 +thumb_func 0x811e890 +thumb_func 0x811e904 +thumb_func 0x811e9d0 +thumb_func 0x811ea24 +thumb_func 0x811ea54 +thumb_func 0x811ea90 +thumb_func 0x811eacc +thumb_func 0x811eaf8 +thumb_func 0x811eb64 +thumb_func 0x811ebf8 +thumb_func 0x811ec1c +thumb_func 0x811eca8 +thumb_func 0x811ecc4 +thumb_func 0x811ed04 +thumb_func 0x811ed20 +thumb_func 0x811ed98 +thumb_func 0x811edfc +thumb_func 0x811ee2c +thumb_func 0x811ee6c +thumb_func 0x811eee0 +thumb_func 0x811ef44 +thumb_func 0x811ef74 +thumb_func 0x811f044 +thumb_func 0x811f088 +thumb_func 0x811f0c0 +thumb_func 0x811f12c +thumb_func 0x811f180 +thumb_func 0x811f1cc +thumb_func 0x811f25c +thumb_func 0x811f2a4 +thumb_func 0x811f318 +thumb_func 0x811f370 +thumb_func 0x811f3ac +thumb_func 0x811f44c +thumb_func 0x811f478 +thumb_func 0x811f4a0 +thumb_func 0x811f4d0 +thumb_func 0x811f4fc +thumb_func 0x811f570 +thumb_func 0x811f5d8 +thumb_func 0x811f5e8 +thumb_func 0x811f664 +thumb_func 0x811f7e8 +thumb_func 0x811f814 +thumb_func 0x811f830 +thumb_func 0x811f908 +thumb_func 0x811f914 +thumb_func 0x811f93c +thumb_func 0x811f980 +thumb_func 0x811f990 +thumb_func 0x811f9c8 +thumb_func 0x811faa0 +thumb_func 0x811fad0 +thumb_func 0x811fb08 +thumb_func 0x811fb1c +thumb_func 0x811fc10 +thumb_func 0x811fc80 +thumb_func 0x811fcb8 +thumb_func 0x811fd8c +thumb_func 0x811fdb4 +thumb_func 0x811fde0 +thumb_func 0x811fe10 +thumb_func 0x811fe2c +thumb_func 0x811fe38 +thumb_func 0x811fe80 +thumb_func 0x811ffb0 +thumb_func 0x811ffc4 +thumb_func 0x8120018 +thumb_func 0x81200c4 +thumb_func 0x81201a0 +thumb_func 0x812045c nullsub_71 +thumb_func 0x8120460 +thumb_func 0x812049c +thumb_func 0x81204b4 +thumb_func 0x81204d4 +thumb_func 0x81204f4 +thumb_func 0x81205a4 +thumb_func 0x81205c0 +thumb_func 0x8120618 +thumb_func 0x812063c +thumb_func 0x8120648 +thumb_func 0x8120674 +thumb_func 0x8120680 +thumb_func 0x81206e8 +thumb_func 0x81206fc +thumb_func 0x8120714 +thumb_func 0x8120730 +thumb_func 0x81207a0 +thumb_func 0x8120820 +thumb_func 0x8120838 +thumb_func 0x8120854 +thumb_func 0x812086c +thumb_func 0x81208a4 +thumb_func 0x81208dc +thumb_func 0x81209bc +thumb_func 0x8120b08 +thumb_func 0x8120b20 +thumb_func 0x8120b38 +thumb_func 0x8120b44 +thumb_func 0x8120b50 +thumb_func 0x8120ba0 +thumb_func 0x8120bd0 +thumb_func 0x8120bdc +thumb_func 0x8120be8 +thumb_func 0x8120c2c +thumb_func 0x8120e18 +thumb_func 0x8120e2c +thumb_func 0x8120e90 +thumb_func 0x8120f54 +thumb_func 0x8120f9c +thumb_func 0x8120fc0 +thumb_func 0x8120fd4 +thumb_func 0x8121000 +thumb_func 0x812100c +thumb_func 0x8121018 +thumb_func 0x8121024 +thumb_func 0x8121054 +thumb_func 0x8121078 +thumb_func 0x8121098 +thumb_func 0x81210c8 +thumb_func 0x81210f8 +thumb_func 0x8121128 +thumb_func 0x81211b0 +thumb_func 0x8121204 +thumb_func 0x81212c4 +thumb_func 0x8121320 +thumb_func 0x81213ec +thumb_func 0x8121478 +thumb_func 0x812148c +thumb_func 0x81214a0 +thumb_func 0x81214c8 +thumb_func 0x8121514 +thumb_func 0x8121540 +thumb_func 0x8121568 +thumb_func 0x8121688 +thumb_func 0x8121a60 +thumb_func 0x8121a8c +thumb_func 0x8121b64 +thumb_func 0x8121c60 +thumb_func 0x8121c74 +thumb_func 0x8121c94 +thumb_func 0x8121ca0 +thumb_func 0x8121cc4 +thumb_func 0x8121d00 +thumb_func 0x8121d90 +thumb_func 0x8121e00 +thumb_func 0x8121e58 +thumb_func 0x8121e6c +thumb_func 0x8121f10 +thumb_func 0x8121f2c +thumb_func 0x8121f58 +thumb_func 0x8121f84 +thumb_func 0x8121fe8 +thumb_func 0x8122040 +thumb_func 0x81220dc +thumb_func 0x8122118 +thumb_func 0x8122154 +thumb_func 0x8122188 +thumb_func 0x81221b8 +thumb_func 0x81221dc +thumb_func 0x81221f8 +thumb_func 0x8122218 +thumb_func 0x8122268 +thumb_func 0x81222a4 +thumb_func 0x8122334 +thumb_func 0x8122350 +thumb_func 0x81223bc +thumb_func 0x8122408 +thumb_func 0x8122454 +thumb_func 0x81224e0 +thumb_func 0x812258c +thumb_func 0x81226e4 +thumb_func 0x8122810 +thumb_func 0x8122888 +thumb_func 0x81229a4 +thumb_func 0x81229d4 +thumb_func 0x8122a3c +thumb_func 0x8122a64 +thumb_func 0x8122b34 +thumb_func 0x8122bbc +thumb_func 0x8122bfc +thumb_func 0x8122c28 +thumb_func 0x8122c68 +thumb_func 0x8122ca0 +thumb_func 0x8122cc8 +thumb_func 0x8122ce8 +thumb_func 0x8122d04 +thumb_func 0x8122d94 +thumb_func 0x8122dbc +thumb_func 0x812303c +thumb_func 0x8123068 +thumb_func 0x81230b8 +thumb_func 0x81230c4 +thumb_func 0x81230d0 +thumb_func 0x812319c +thumb_func 0x8123260 +thumb_func 0x8123340 +thumb_func 0x8123424 +thumb_func 0x8123520 +thumb_func 0x81236d0 +thumb_func 0x8123798 +thumb_func 0x81237c0 +thumb_func 0x8123830 +thumb_func 0x8123878 +thumb_func 0x81238b8 +thumb_func 0x8123c0c +thumb_func 0x8123d64 +thumb_func 0x8123ea8 +thumb_func 0x8123ec0 +thumb_func 0x8123f10 +thumb_func 0x8123f3c +thumb_func 0x8123f80 +thumb_func 0x8123fa8 +thumb_func 0x8123fbc +thumb_func 0x8124044 +thumb_func 0x8124094 +thumb_func 0x81240dc nullsub_70 +thumb_func 0x81240e0 +thumb_func 0x8124244 +thumb_func 0x8124274 +thumb_func 0x8124284 +thumb_func 0x8124294 +thumb_func 0x81243bc +thumb_func 0x81243e8 +thumb_func 0x8124468 +thumb_func 0x81244f8 +thumb_func 0x8124504 +thumb_func 0x8124558 +thumb_func 0x8124578 +thumb_func 0x81245e8 +thumb_func 0x812461c +thumb_func 0x812463c +thumb_func 0x8124664 +thumb_func 0x8124674 +thumb_func 0x812469c +thumb_func 0x81248cc +thumb_func 0x81248e0 +thumb_func 0x81248f0 +thumb_func 0x8124900 +thumb_func 0x8124910 +thumb_func 0x8124a58 +thumb_func 0x8124abc +thumb_func 0x8124bcc +thumb_func 0x8124ca4 +thumb_func 0x8124cfc +thumb_func 0x8124d4c +thumb_func 0x8124df4 +thumb_func 0x8124f14 +thumb_func 0x81250a0 +thumb_func 0x8125158 +thumb_func 0x8125218 +thumb_func 0x8125238 +thumb_func 0x81252d0 +thumb_func 0x812538c +thumb_func 0x8125430 +thumb_func 0x81254c8 +thumb_func 0x8125618 +thumb_func 0x81256b0 +thumb_func 0x81257e0 +thumb_func 0x8125888 +thumb_func 0x812593c +thumb_func 0x8125b10 +thumb_func 0x8125b44 +thumb_func 0x8125b80 +thumb_func 0x8125c50 +thumb_func 0x8125c80 +thumb_func 0x8125cb0 +thumb_func 0x8125cdc +thumb_func 0x8125e00 +thumb_func 0x8125f20 +thumb_func 0x8126040 +thumb_func 0x812618c +thumb_func 0x8126258 +thumb_func 0x8126300 +thumb_func 0x812631c +thumb_func 0x8126358 +thumb_func 0x812638c +thumb_func 0x81264e4 +thumb_func 0x812659c +thumb_func 0x812664c +thumb_func 0x81266fc +thumb_func 0x81267ac +thumb_func 0x8126820 +thumb_func 0x81268f0 +thumb_func 0x8126924 +thumb_func 0x8126950 +thumb_func 0x81269bc +thumb_func 0x81269f8 +thumb_func 0x8126a28 +thumb_func 0x8126a84 +thumb_func 0x8126aa0 +thumb_func 0x8126af4 +thumb_func 0x8126b48 +thumb_func 0x8126bd0 +thumb_func 0x8126c10 +thumb_func 0x8126c6c +thumb_func 0x8126cd8 +thumb_func 0x8126d34 +thumb_func 0x8126d6c +thumb_func 0x8126d94 +thumb_func 0x8126dc4 +thumb_func 0x8126e1c +thumb_func 0x8126e78 +thumb_func 0x8126f20 +thumb_func 0x8127010 +thumb_func 0x8127040 +thumb_func 0x81270a0 +thumb_func 0x8127138 +thumb_func 0x8127154 +thumb_func 0x8127184 +thumb_func 0x81271c0 +thumb_func 0x8127208 +thumb_func 0x8127220 +thumb_func 0x812723c +thumb_func 0x8127280 +thumb_func 0x81272b0 +thumb_func 0x81272e8 +thumb_func 0x8127404 +thumb_func 0x8127430 +thumb_func 0x8127450 +thumb_func 0x81274b0 +thumb_func 0x8127504 +thumb_func 0x8127530 +thumb_func 0x812754c +thumb_func 0x81275cc +thumb_func 0x81275f8 +thumb_func 0x81276c4 +thumb_func 0x81276f0 +thumb_func 0x8127758 +thumb_func 0x812776c +thumb_func 0x8127798 +thumb_func 0x81277c4 +thumb_func 0x8127964 +thumb_func 0x8127974 +thumb_func 0x81279c4 +thumb_func 0x81279e0 +thumb_func 0x8127a0c +thumb_func 0x8127a3c +thumb_func 0x8127a7c +thumb_func 0x8127ab4 +thumb_func 0x8127b04 +thumb_func 0x8127b40 +thumb_func 0x8127d08 +thumb_func 0x8127dec +thumb_func 0x8127f0c +thumb_func 0x8127f3c +thumb_func 0x8128034 +thumb_func 0x81280ec +thumb_func 0x812817c +thumb_func 0x8128240 +thumb_func 0x8128394 +thumb_func 0x81283ec +thumb_func 0x812845c +thumb_func 0x8128484 +thumb_func 0x81284cc +thumb_func 0x8128514 +thumb_func 0x8128928 +thumb_func 0x81289ac +thumb_func 0x81289cc +thumb_func 0x8128a8c +thumb_func 0x8128b60 +thumb_func 0x8128b80 +thumb_func 0x8128b9c +thumb_func 0x8128bcc +thumb_func 0x8128c44 +thumb_func 0x8128cb4 +thumb_func 0x8128cf0 +thumb_func 0x8128d94 +thumb_func 0x8128dc0 +thumb_func 0x8128df8 +thumb_func 0x8128fb8 +thumb_func 0x8129000 +thumb_func 0x8129028 +thumb_func 0x8129048 +thumb_func 0x8129068 +thumb_func 0x8129184 +thumb_func 0x81291ac +thumb_func 0x81291c8 +thumb_func 0x812923c +thumb_func 0x81292b0 +thumb_func 0x81292c8 +thumb_func 0x8129314 +thumb_func 0x81293bc +thumb_func 0x8129480 +thumb_func 0x81294a4 +thumb_func 0x81295b4 +thumb_func 0x81296d4 +thumb_func 0x81296f0 +thumb_func 0x8129798 +thumb_func 0x81297e4 +thumb_func 0x81298dc +thumb_func 0x812999c +thumb_func 0x81299cc +thumb_func 0x8129aac +thumb_func 0x8129b24 +thumb_func 0x8129bbc +thumb_func 0x8129be8 +thumb_func 0x8129c64 +thumb_func 0x8129d54 +thumb_func 0x8129d7c +thumb_func 0x8129e04 +thumb_func 0x8129e6c +thumb_func 0x8129f18 +thumb_func 0x8129fc0 +thumb_func 0x812a050 +thumb_func 0x812a0f4 +thumb_func 0x812a1ac +thumb_func 0x812a1cc +thumb_func 0x812a1fc +thumb_func 0x812a21c +thumb_func 0x812a238 +thumb_func 0x812a268 +thumb_func 0x812a2d0 +thumb_func 0x812a340 +thumb_func 0x812a378 +thumb_func 0x812a3a8 +thumb_func 0x812a3d4 +thumb_func 0x812a3e0 +thumb_func 0x812a468 +thumb_func 0x812a488 +thumb_func 0x812a4ec +thumb_func 0x812a550 +thumb_func 0x812a598 +thumb_func 0x812a680 +thumb_func 0x812a698 +thumb_func 0x812a6e4 +thumb_func 0x812a720 +thumb_func 0x812a75c nullsub_73 +thumb_func 0x812a760 +thumb_func 0x812a7ac +thumb_func 0x812a7cc +thumb_func 0x812a820 +thumb_func 0x812a844 +thumb_func 0x812a8d4 +thumb_func 0x812a9bc +thumb_func 0x812a9dc +thumb_func 0x812aa58 +thumb_func 0x812aa88 +thumb_func 0x812aaa0 +thumb_func 0x812aab8 +thumb_func 0x812aad8 +thumb_func 0x812ab14 +thumb_func 0x812ab48 +thumb_func 0x812ab70 +thumb_func 0x812abb8 +thumb_func 0x812abd8 +thumb_func 0x812ac08 +thumb_func 0x812ad04 +thumb_func 0x812ad44 +thumb_func 0x812ad70 +thumb_func 0x812ad90 +thumb_func 0x812ae04 +thumb_func 0x812ae34 +thumb_func 0x812ae5c +thumb_func 0x812ae98 +thumb_func 0x812aed4 +thumb_func 0x812b00c +thumb_func 0x812b02c +thumb_func 0x812b0a4 +thumb_func 0x812b0e8 +thumb_func 0x812b118 +thumb_func 0x812b140 +thumb_func 0x812b168 +thumb_func 0x812b1c0 +thumb_func 0x812b224 +thumb_func 0x812b264 +thumb_func 0x812b290 +thumb_func 0x812b2d0 +thumb_func 0x812b2fc +thumb_func 0x812b33c +thumb_func 0x812b4fc +thumb_func 0x812b56c +thumb_func 0x812b58c +thumb_func 0x812b5c0 +thumb_func 0x812b5fc +thumb_func 0x812b644 +thumb_func 0x812b6dc +thumb_func 0x812b710 +thumb_func 0x812b770 +thumb_func 0x812b79c +thumb_func 0x812b838 +thumb_func 0x812b86c +thumb_func 0x812b8e0 +thumb_func 0x812b9b0 +thumb_func 0x812ba7c +thumb_func 0x812bacc +thumb_func 0x812baec +thumb_func 0x812bb0c +thumb_func 0x812bb44 +thumb_func 0x812bb78 +thumb_func 0x812bc30 +thumb_func 0x812bc54 +thumb_func 0x812bca8 +thumb_func 0x812bcf8 +thumb_func 0x812bd38 +thumb_func 0x812bd80 +thumb_func 0x812bde4 +thumb_func 0x812be1c +thumb_func 0x812be6c +thumb_func 0x812beb4 +thumb_func 0x812beec +thumb_func 0x812bf14 +thumb_func 0x812bf3c +thumb_func 0x812bf74 +thumb_func 0x812bf78 +thumb_func 0x812bf98 +thumb_func 0x812c02c +thumb_func 0x812c0f0 +thumb_func 0x812c148 +thumb_func 0x812c180 +thumb_func 0x812c194 +thumb_func 0x812c1d4 +thumb_func 0x812c228 +thumb_func 0x812c248 +thumb_func 0x812c2a0 +thumb_func 0x812c3b0 +thumb_func 0x812c3c8 +thumb_func 0x812c3d8 +thumb_func 0x812c424 +thumb_func 0x812c4cc +thumb_func 0x812c510 +thumb_func 0x812c56c +thumb_func 0x812c5ec +thumb_func 0x812c618 +thumb_func 0x812c638 +thumb_func 0x812c650 nullsub_741 +thumb_func 0x812c65c +thumb_func 0x812c6dc +thumb_func 0x812c75c +thumb_func 0x812c864 +thumb_func 0x812c88c +thumb_func 0x812c8bc +thumb_func 0x812c90c +thumb_func 0x812c924 nullsub_75 +thumb_func 0x812c930 +thumb_func 0x812ca18 +thumb_func 0x812cb90 +thumb_func 0x812cd50 +thumb_func 0x812cd84 +thumb_func 0x812cda8 +thumb_func 0x812cdb4 +thumb_func 0x812cde8 +thumb_func 0x812ce04 +thumb_func 0x812ce3c +thumb_func 0x812ce64 +thumb_func 0x812ce8c +thumb_func 0x812cec8 +thumb_func 0x812cf04 +thumb_func 0x812cf44 +thumb_func 0x812cf7c +thumb_func 0x812cfc8 +thumb_func 0x812cffc +thumb_func 0x812d034 +thumb_func 0x812d0c0 +thumb_func 0x812d0f0 +thumb_func 0x812d138 +thumb_func 0x812d198 +thumb_func 0x812d1b8 +thumb_func 0x812d1ec +thumb_func 0x812d21c +thumb_func 0x812d240 +thumb_func 0x812d270 nullsub_74 +thumb_func 0x812d274 +thumb_func 0x812d29c +thumb_func 0x812d31c +thumb_func 0x812d3a4 +thumb_func 0x812d3c4 +thumb_func 0x812d4bc +thumb_func 0x812d4dc +thumb_func 0x812d4fc +thumb_func 0x812d52c +thumb_func 0x812d5a4 +thumb_func 0x812d61c +thumb_func 0x812d64c +thumb_func 0x812d6fc +thumb_func 0x812d750 +thumb_func 0x812d784 +thumb_func 0x812d7f4 +thumb_func 0x812d880 +thumb_func 0x812d930 +thumb_func 0x812d960 +thumb_func 0x812d9b4 +thumb_func 0x812da30 +thumb_func 0x812da7c +thumb_func 0x812daa0 +thumb_func 0x812db14 +thumb_func 0x812db9c +thumb_func 0x812dbcc +thumb_func 0x812dc18 +thumb_func 0x812dc60 +thumb_func 0x812dc90 +thumb_func 0x812dcc4 +thumb_func 0x812dce4 +thumb_func 0x812dd14 +thumb_func 0x812dd38 +thumb_func 0x812dd58 +thumb_func 0x812dd88 +thumb_func 0x812ddd4 +thumb_func 0x812de24 +thumb_func 0x812de40 +thumb_func 0x812de58 +thumb_func 0x812de8c +thumb_func 0x812dea4 +thumb_func 0x812def4 +thumb_func 0x812df78 +thumb_func 0x812dfec +thumb_func 0x812e064 +thumb_func 0x812e0c0 +thumb_func 0x812e0f0 nullsub_77 +thumb_func 0x812e0f4 +thumb_func 0x812e164 +thumb_func 0x812e1d8 +thumb_func 0x812e240 +thumb_func 0x812e2b8 +thumb_func 0x812e310 +thumb_func 0x812e34c +thumb_func 0x812e3f8 +thumb_func 0x812e434 +thumb_func 0x812e484 +thumb_func 0x812e5b8 +thumb_func 0x812e660 +thumb_func 0x812e6d4 +thumb_func 0x812e71c +thumb_func 0x812e7dc +thumb_func 0x812e83c +thumb_func 0x812e8d4 +thumb_func 0x812e908 +thumb_func 0x812e944 +thumb_func 0x812e9f8 +thumb_func 0x812ea54 +thumb_func 0x812ea8c +thumb_func 0x812eac0 +thumb_func 0x812eb58 +thumb_func 0x812ebbc +thumb_func 0x812ebdc +thumb_func 0x812ec30 +thumb_func 0x812ec74 +thumb_func 0x812ec80 +thumb_func 0x812eca4 +thumb_func 0x812ed30 +thumb_func 0x812ed9c +thumb_func 0x812edd0 +thumb_func 0x812ee24 +thumb_func 0x812eeb8 +thumb_func 0x812eedc +thumb_func 0x812ef10 +thumb_func 0x812ef64 +thumb_func 0x812ef7c +thumb_func 0x812efa8 +thumb_func 0x812efec +thumb_func 0x812f088 +thumb_func 0x812f090 +thumb_func 0x812f114 +thumb_func 0x812f12c +thumb_func 0x812f144 +thumb_func 0x812f160 +thumb_func 0x812f1c8 +thumb_func 0x812f22c +thumb_func 0x812f2dc +thumb_func 0x812f37c +thumb_func 0x812f3c4 +thumb_func 0x812f480 +thumb_func 0x812f524 +thumb_func 0x812f5f0 +thumb_func 0x812f658 +thumb_func 0x812f790 nullsub_78 +thumb_func 0x812f794 +thumb_func 0x812f7a4 +thumb_func 0x812f7d0 +thumb_func 0x812f7f4 +thumb_func 0x812f8b0 +thumb_func 0x812f918 +thumb_func 0x812f968 +thumb_func 0x812f978 +thumb_func 0x812f9a4 +thumb_func 0x812fa9c +thumb_func 0x812fb18 +thumb_func 0x812fb4c +thumb_func 0x812fbfc +thumb_func 0x812fde0 +thumb_func 0x812fe24 +thumb_func 0x812fe30 +thumb_func 0x812fe44 +thumb_func 0x812fe90 +thumb_func 0x8130000 +thumb_func 0x81300d0 +thumb_func 0x8130144 +thumb_func 0x8130244 +thumb_func 0x8130290 +thumb_func 0x81302d8 +thumb_func 0x8130328 +thumb_func 0x8130340 +thumb_func 0x81303d8 +thumb_func 0x8130488 +thumb_func 0x81306e0 +thumb_func 0x8130724 +thumb_func 0x8130790 +thumb_func 0x81307b8 +thumb_func 0x81308dc +thumb_func 0x8130920 +thumb_func 0x81309a4 +thumb_func 0x8130bec +thumb_func 0x8130c10 +thumb_func 0x8130d28 +thumb_func 0x8130f7c +thumb_func 0x81310a8 +thumb_func 0x8131124 +thumb_func 0x813114c +thumb_func 0x8131164 +thumb_func 0x813117c +thumb_func 0x8131194 +thumb_func 0x81311ac +thumb_func 0x81311ec +thumb_func 0x813122c +thumb_func 0x813126c +thumb_func 0x81312ac +thumb_func 0x81312f0 +thumb_func 0x8131358 +thumb_func 0x81313c0 +thumb_func 0x8131428 +thumb_func 0x8131490 +thumb_func 0x8131504 +thumb_func 0x8131578 +thumb_func 0x81315ec +thumb_func 0x8131660 +thumb_func 0x81316d0 +thumb_func 0x8131740 +thumb_func 0x81317bc +thumb_func 0x8131838 +thumb_func 0x8131874 +thumb_func 0x81318b0 +thumb_func 0x81318ec +thumb_func 0x8131928 +thumb_func 0x813197c +thumb_func 0x81319d0 +thumb_func 0x8131a24 +thumb_func 0x8131a78 +thumb_func 0x8131abc +thumb_func 0x8131b00 +thumb_func 0x8131b68 +thumb_func 0x8131bd4 +thumb_func 0x8131c40 +thumb_func 0x8131cb0 +thumb_func 0x8131d20 +thumb_func 0x8131d90 +thumb_func 0x8131db4 +thumb_func 0x8131ea4 +thumb_func 0x8131ee8 +thumb_func 0x8131f50 +thumb_func 0x8131f7c +thumb_func 0x8132180 +thumb_func 0x81321d8 +thumb_func 0x8132214 +thumb_func 0x8132250 +thumb_func 0x813229c +thumb_func 0x81322e8 nullsub_23 +thumb_func 0x81322ec nullsub_241 +thumb_func 0x81322f0 +thumb_func 0x81323ec +thumb_func 0x8132408 +thumb_func 0x8132434 +thumb_func 0x8132550 +thumb_func 0x8132648 +thumb_func 0x8132734 +thumb_func 0x8132804 nullsub_25 +thumb_func 0x8132808 nullsub_24 +thumb_func 0x813280c +thumb_func 0x81328ec +thumb_func 0x81329c8 +thumb_func 0x8132a34 +thumb_func 0x8132a80 +thumb_func 0x8132acc +thumb_func 0x8132b34 +thumb_func 0x8132b9c +thumb_func 0x8132c04 +thumb_func 0x8132c6c +thumb_func 0x8132d68 +thumb_func 0x8132e4c +thumb_func 0x8132f7c +thumb_func 0x8133054 +thumb_func 0x813314c +thumb_func 0x8133230 +thumb_func 0x81332b8 +thumb_func 0x8133348 +thumb_func 0x813335c +thumb_func 0x81333bc +thumb_func 0x81333d0 +thumb_func 0x8133448 +thumb_func 0x81334c8 +thumb_func 0x8133520 +thumb_func 0x813356c +thumb_func 0x81335b8 +thumb_func 0x81335e0 +thumb_func 0x813362c +thumb_func 0x8133658 +thumb_func 0x8133684 +thumb_func 0x81336b0 +thumb_func 0x81336fc nullsub_79 +thumb_func 0x8133700 nullsub_801 +thumb_func 0x8133704 nullsub_81 +thumb_func 0x8133708 nullsub_80 +thumb_func 0x813370c nullsub_83 +thumb_func 0x8133710 nullsub_841 +thumb_func 0x8133714 +thumb_func 0x8133744 +thumb_func 0x8133764 +thumb_func 0x8133788 +thumb_func 0x8133860 +thumb_func 0x81338b0 +thumb_func 0x8133900 +thumb_func 0x8133950 +thumb_func 0x81339a0 +thumb_func 0x81339c4 +thumb_func 0x81339ec +thumb_func 0x8133a2c +thumb_func 0x8133a94 +thumb_func 0x8133aac +thumb_func 0x8133b9c +thumb_func 0x8133c00 +thumb_func 0x8133c80 +thumb_func 0x8133c9c +thumb_func 0x8133cd4 +thumb_func 0x8133d40 +thumb_func 0x8133d54 +thumb_func 0x8133dd8 +thumb_func 0x8133df4 +thumb_func 0x8133e78 +thumb_func 0x8133e94 +thumb_func 0x8133eb0 +thumb_func 0x8133ec4 +thumb_func 0x8134198 +thumb_func 0x81341b4 +thumb_func 0x8134214 +thumb_func 0x81342f8 +thumb_func 0x8134348 +thumb_func 0x81343b8 +thumb_func 0x8134464 +thumb_func 0x8134480 +thumb_func 0x813464c +thumb_func 0x8134688 +thumb_func 0x81346b0 +thumb_func 0x81346d8 +thumb_func 0x8134724 +thumb_func 0x8134784 +thumb_func 0x81347bc +thumb_func 0x81347fc +thumb_func 0x8134810 +thumb_func 0x81349d4 +thumb_func 0x8134a3c +thumb_func 0x8134b8c +thumb_func 0x8134ce8 +thumb_func 0x8134d04 +thumb_func 0x8134d34 +thumb_func 0x8134e10 +thumb_func 0x8134e84 +thumb_func 0x8134ef8 +thumb_func 0x8134f3c +thumb_func 0x8134f64 +thumb_func 0x8134f94 +thumb_func 0x8134fcc +thumb_func 0x8135004 +thumb_func 0x8135028 +thumb_func 0x8135050 +thumb_func 0x81350a0 +thumb_func 0x813513c +thumb_func 0x8135184 +thumb_func 0x8135200 +thumb_func 0x8135298 +thumb_func 0x8135330 +thumb_func 0x81353d4 +thumb_func 0x8135478 +thumb_func 0x81354cc +thumb_func 0x81354f0 +thumb_func 0x8135580 +thumb_func 0x81355cc +thumb_func 0x8135670 +thumb_func 0x81356a8 +thumb_func 0x8135718 +thumb_func 0x8135738 +thumb_func 0x8135768 +thumb_func 0x8135780 +thumb_func 0x81357b4 +thumb_func 0x81357d4 +thumb_func 0x8135810 +thumb_func 0x8135850 +thumb_func 0x8135944 +thumb_func 0x8135958 +thumb_func 0x813596c +thumb_func 0x8135988 +thumb_func 0x813599c +thumb_func 0x81359c8 +thumb_func 0x8135c2c +thumb_func 0x8135c88 +thumb_func 0x8135d74 +thumb_func 0x8135dcc +thumb_func 0x8135df8 +thumb_func 0x8135e60 +thumb_func 0x8135f30 +thumb_func 0x8135fb4 +thumb_func 0x8136010 +thumb_func 0x8136150 +thumb_func 0x8136180 +thumb_func 0x81361f0 +thumb_func 0x813628c +thumb_func 0x813629c +thumb_func 0x8136320 +thumb_func 0x8136384 +thumb_func 0x81363fc +thumb_func 0x8136458 +thumb_func 0x8136484 +thumb_func 0x81364b0 +thumb_func 0x813652c +thumb_func 0x8136564 +thumb_func 0x8136608 +thumb_func 0x813675c +thumb_func 0x8136894 +thumb_func 0x8136978 +thumb_func 0x8136a50 +thumb_func 0x8136ac0 +thumb_func 0x8136ae4 +thumb_func 0x8136b10 +thumb_func 0x8136b24 +thumb_func 0x8136bb8 +thumb_func 0x8136be8 +thumb_func 0x8136c30 +thumb_func 0x8136cc4 +thumb_func 0x8136cfc +thumb_func 0x8136d9c +thumb_func 0x8136e00 +thumb_func 0x8136e58 +thumb_func 0x8136e90 +thumb_func 0x8136ef8 +thumb_func 0x8136f14 +thumb_func 0x8136f4c +thumb_func 0x8136f64 +thumb_func 0x8136f9c +thumb_func 0x8136fd8 +thumb_func 0x813700c +thumb_func 0x8137054 +thumb_func 0x81370b4 +thumb_func 0x81370d8 +thumb_func 0x8137124 +thumb_func 0x813716c +thumb_func 0x81371e8 +thumb_func 0x8137224 +thumb_func 0x8137244 +thumb_func 0x813725c +thumb_func 0x8137270 +thumb_func 0x8137374 +thumb_func 0x81373d0 +thumb_func 0x8137418 +thumb_func 0x8137460 +thumb_func 0x8137474 +thumb_func 0x8137490 +thumb_func 0x8137534 +thumb_func 0x813757c +thumb_func 0x81375e4 +thumb_func 0x8137618 +thumb_func 0x813762c +thumb_func 0x8137648 +thumb_func 0x81376e8 +thumb_func 0x813774c +thumb_func 0x81377a4 +thumb_func 0x81378ec +thumb_func 0x8137900 +thumb_func 0x813792c +thumb_func 0x8137954 +thumb_func 0x8137974 +thumb_func 0x81379ac +thumb_func 0x81379f8 +thumb_func 0x8137a48 +thumb_func 0x8137a68 +thumb_func 0x8137a7c +thumb_func 0x8137a90 +thumb_func 0x8137abc +thumb_func 0x8137b08 +thumb_func 0x8137c80 +thumb_func 0x8137c98 +thumb_func 0x8137cac +thumb_func 0x8137ccc +thumb_func 0x8137d04 +thumb_func 0x8137d24 +thumb_func 0x8137d38 +thumb_func 0x8137d5c +thumb_func 0x8137d7c +thumb_func 0x8137da4 +thumb_func 0x8137dcc +thumb_func 0x8137edc +thumb_func 0x8137f0c +thumb_func 0x8137f6c +thumb_func 0x8137fb4 +thumb_func 0x8138000 +thumb_func 0x8138020 +thumb_func 0x8138030 +thumb_func 0x813806c +thumb_func 0x8138148 +thumb_func 0x8138190 +thumb_func 0x81381d8 +thumb_func 0x8138220 +thumb_func 0x8138268 +thumb_func 0x81382b0 +thumb_func 0x8138310 +thumb_func 0x813849c +thumb_func 0x8138560 +thumb_func 0x81385b0 +thumb_func 0x81387c0 +thumb_func 0x8138954 +thumb_func 0x8138980 +thumb_func 0x81389e8 +thumb_func 0x8138b14 +thumb_func 0x8138b30 +thumb_func 0x8138b40 +thumb_func 0x8138b60 +thumb_func 0x8138b80 +thumb_func 0x8138bb8 +thumb_func 0x8138bf0 +thumb_func 0x8138bfc +thumb_func 0x8138c38 +thumb_func 0x8138c4c +thumb_func 0x8138c74 +thumb_func 0x8138cf4 +thumb_func 0x8138d04 +thumb_func 0x8138d14 +thumb_func 0x8138d58 +thumb_func 0x8138d80 +thumb_func 0x8138df8 +thumb_func 0x8138e90 +thumb_func 0x8138e9c +thumb_func 0x8138f30 +thumb_func 0x8138f74 +thumb_func 0x8138f9c +thumb_func 0x813901c +thumb_func 0x8139044 +thumb_func 0x813905c +thumb_func 0x8139074 +thumb_func 0x81390a0 +thumb_func 0x81390cc +thumb_func 0x81390f8 +thumb_func 0x8139124 +thumb_func 0x8139150 +thumb_func 0x81391c8 +thumb_func 0x813921c +thumb_func 0x8139240 +thumb_func 0x8139270 +thumb_func 0x8139298 +thumb_func 0x81392a8 +thumb_func 0x81392b8 +thumb_func 0x813931c +thumb_func 0x8139344 +thumb_func 0x8139368 +thumb_func 0x8139390 +thumb_func 0x81393b8 +thumb_func 0x81393e0 +thumb_func 0x8139438 +thumb_func 0x813946c +thumb_func 0x81394cc +thumb_func 0x81394dc +thumb_func 0x8139548 +thumb_func 0x81395a0 +thumb_func 0x81395b0 +thumb_func 0x81395d0 +thumb_func 0x813962c +thumb_func 0x8139690 +thumb_func 0x81396a4 +thumb_func 0x81396b8 +thumb_func 0x81396d8 +thumb_func 0x81396f8 +thumb_func 0x8139750 +thumb_func 0x8139778 nullsub_85 +thumb_func 0x813977c +thumb_func 0x81397c4 +thumb_func 0x81397e0 +thumb_func 0x8139824 +thumb_func 0x81398cc +thumb_func 0x8139938 +thumb_func 0x8139980 +thumb_func 0x81399c0 +thumb_func 0x81399f4 +thumb_func 0x8139a08 +thumb_func 0x8139a68 +thumb_func 0x8139aec +thumb_func 0x8139b68 +thumb_func 0x8139bd4 +thumb_func 0x8139c4c +thumb_func 0x8139c68 +thumb_func 0x8139cbc +thumb_func 0x8139dd4 +thumb_func 0x8139ebc +thumb_func 0x8139f0c +thumb_func 0x8139f30 +thumb_func 0x8139f5c +thumb_func 0x813a0bc +thumb_func 0x813a164 +thumb_func 0x813a318 +thumb_func 0x813a434 +thumb_func 0x813a474 +thumb_func 0x813a4f4 +thumb_func 0x813a578 +thumb_func 0x813a608 +thumb_func 0x813a638 +thumb_func 0x813a66c +thumb_func 0x813a69c +thumb_func 0x813a740 +thumb_func 0x813a770 nullsub_84 +thumb_func 0x813a774 +thumb_func 0x813a7c0 +thumb_func 0x813a7fc +thumb_func 0x813a828 +thumb_func 0x813a85c +thumb_func 0x813a880 +thumb_func 0x813a904 +thumb_func 0x813a98c +thumb_func 0x813a9d4 +thumb_func 0x813a9f0 +thumb_func 0x813aa1c +thumb_func 0x813aa50 +thumb_func 0x813aa64 +thumb_func 0x813aa90 +thumb_func 0x813aaac +thumb_func 0x813ac20 +thumb_func 0x813ac90 +thumb_func 0x813acc8 +thumb_func 0x813ad2c +thumb_func 0x813ad6c +thumb_func 0x813adf0 +thumb_func 0x813ae0c +thumb_func 0x813aeec +thumb_func 0x813af80 +thumb_func 0x813b000 +thumb_func 0x813b014 +thumb_func 0x813b0ec +thumb_func 0x813b198 +thumb_func 0x813b1bc +thumb_func 0x813b208 +thumb_func 0x813b23c +thumb_func 0x813b248 +thumb_func 0x813b254 +thumb_func 0x813b298 +thumb_func 0x813b31c +thumb_func 0x813b3ac +thumb_func 0x813b3e8 +thumb_func 0x813b4bc +thumb_func 0x813b4c8 +thumb_func 0x813b518 +thumb_func 0x813b54c +thumb_func 0x813b56c +thumb_func 0x813b5a0 +thumb_func 0x813b5b4 +thumb_func 0x813b810 +thumb_func 0x813b844 +thumb_func 0x813b85c +thumb_func 0x813b8b8 +thumb_func 0x813b8e8 +thumb_func 0x813b9a0 +thumb_func 0x813b9d8 +thumb_func 0x813b9f8 +thumb_func 0x813ba48 +thumb_func 0x813ba68 +thumb_func 0x813ba98 +thumb_func 0x813bb14 +thumb_func 0x813bbac +thumb_func 0x813bc38 +thumb_func 0x813bce0 +thumb_func 0x813bd20 +thumb_func 0x813bd98 +thumb_func 0x813bdbc +thumb_func 0x813bdec +thumb_func 0x813be68 +thumb_func 0x813bf34 +thumb_func 0x813bf68 +thumb_func 0x813bf84 +thumb_func 0x813bfa0 +thumb_func 0x813bfb8 +thumb_func 0x813bfe8 +thumb_func 0x813c01c +thumb_func 0x813c02c +thumb_func 0x813c060 +thumb_func 0x813c0dc +thumb_func 0x813c140 +thumb_func 0x813c17c +thumb_func 0x813c204 +thumb_func 0x813c220 +thumb_func 0x813c248 +thumb_func 0x813c270 +thumb_func 0x813c2ac +thumb_func 0x813c300 +thumb_func 0x813c384 +thumb_func 0x813c4b0 +thumb_func 0x813c57c +thumb_func 0x813c598 +thumb_func 0x813c5c8 +thumb_func 0x813c608 +thumb_func 0x813c640 +thumb_func 0x813c684 +thumb_func 0x813c6b0 +thumb_func 0x813c7e8 +thumb_func 0x813c804 +thumb_func 0x813c85c +thumb_func 0x813c86c +thumb_func 0x813c8b4 +thumb_func 0x813c8c8 +thumb_func 0x813c8e0 +thumb_func 0x813c8f8 +thumb_func 0x813ca30 +thumb_func 0x813ca44 +thumb_func 0x813cb1c +thumb_func 0x813cce0 +thumb_func 0x813cd40 +thumb_func 0x813ce10 +thumb_func 0x813ce24 +thumb_func 0x813ceb0 +thumb_func 0x813cee8 +thumb_func 0x813d2cc +thumb_func 0x813d360 +thumb_func 0x813d4dc +thumb_func 0x813d530 +thumb_func 0x813d6a4 +thumb_func 0x813d7b8 +thumb_func 0x813d7d4 +thumb_func 0x813d928 +thumb_func 0x813d9ac +thumb_func 0x813d9ec +thumb_func 0x813dab4 +thumb_func 0x813dac4 +thumb_func 0x813db44 +thumb_func 0x813db90 +thumb_func 0x813de80 +thumb_func 0x813e074 +thumb_func 0x813e2d8 +thumb_func 0x813e4a8 +thumb_func 0x813e4c4 +thumb_func 0x813e4e0 +thumb_func 0x813e638 +thumb_func 0x813f280 +thumb_func 0x813fda0 nullsub_87 +thumb_func 0x813fda4 +thumb_func 0x813fe2c +thumb_func 0x813feb4 +thumb_func 0x813ff6c +thumb_func 0x813ffb0 +thumb_func 0x8140088 +thumb_func 0x81400c8 +thumb_func 0x81401c8 +thumb_func 0x81401fc +thumb_func 0x814023c +thumb_func 0x81402a8 +thumb_func 0x81402d0 +thumb_func 0x8140300 +thumb_func 0x814032c +thumb_func 0x8140450 +thumb_func 0x81404e0 +thumb_func 0x8140538 +thumb_func 0x8140694 +thumb_func 0x81408dc +thumb_func 0x8140970 +thumb_func 0x81409dc +thumb_func 0x8140a30 +thumb_func 0x8140a5c +thumb_func 0x8140a80 +thumb_func 0x8140c2c +thumb_func 0x8140c54 +thumb_func 0x8140c98 +thumb_func 0x8140d70 +thumb_func 0x8140e34 +thumb_func 0x8141034 +thumb_func 0x814108c +thumb_func 0x8141108 +thumb_func 0x81411c4 +thumb_func 0x8141254 +thumb_func 0x814140c +thumb_func 0x8141624 +thumb_func 0x814169c +thumb_func 0x814179c +thumb_func 0x8141840 +thumb_func 0x81418c8 +thumb_func 0x8141964 +thumb_func 0x8141a4c +thumb_func 0x8141ae0 +thumb_func 0x8141b88 +thumb_func 0x8141c20 +thumb_func 0x8141dd4 +thumb_func 0x8141eac +thumb_func 0x8141f44 +thumb_func 0x8141fc0 +thumb_func 0x8142044 +thumb_func 0x81420bc +thumb_func 0x8142138 +thumb_func 0x8142198 +thumb_func 0x81422b0 +thumb_func 0x814234c +thumb_func 0x81425c4 +thumb_func 0x8142820 +thumb_func 0x81428dc +thumb_func 0x814298c +thumb_func 0x81429ac +thumb_func 0x81429e0 +thumb_func 0x8142a44 +thumb_func 0x8142a68 +thumb_func 0x8142ab8 +thumb_func 0x8142b50 +thumb_func 0x8142c94 +thumb_func 0x8142cd8 +thumb_func 0x8142d2c +thumb_func 0x8142d9c +thumb_func 0x8142f08 +thumb_func 0x8142f3c +thumb_func 0x8143048 +thumb_func 0x8143104 +thumb_func 0x814321c +thumb_func 0x81432b0 +thumb_func 0x814334c +thumb_func 0x81433e0 +thumb_func 0x81435e0 +thumb_func 0x81436e0 +thumb_func 0x814379c +thumb_func 0x81437f8 +thumb_func 0x81439d8 +thumb_func 0x81439e8 +thumb_func 0x8143a68 +thumb_func 0x8143a94 +thumb_func 0x8143b0c +thumb_func 0x8143b94 +thumb_func 0x8143be0 +thumb_func 0x8143c14 +thumb_func 0x8143c50 +thumb_func 0x8143d5c +thumb_func 0x8143dc8 +thumb_func 0x8143ee0 +thumb_func 0x8144070 +thumb_func 0x814411c +thumb_func 0x81441f4 +thumb_func 0x8144234 +thumb_func 0x8144274 +thumb_func 0x8144330 +thumb_func 0x81444dc +thumb_func 0x81445e0 +thumb_func 0x81446a4 +thumb_func 0x8144778 +thumb_func 0x81447a8 +thumb_func 0x8144984 +thumb_func 0x8144af0 +thumb_func 0x8144d3c +thumb_func 0x8144d9c +thumb_func 0x8144e60 +thumb_func 0x8144f2c +thumb_func 0x8145060 +thumb_func 0x814507c +thumb_func 0x81450fc +thumb_func 0x81451a4 +thumb_func 0x81452e4 +thumb_func 0x8145360 +thumb_func 0x8145420 +thumb_func 0x8145528 +thumb_func 0x8145600 +thumb_func 0x8145654 +thumb_func 0x8145674 +thumb_func 0x81456d8 +thumb_func 0x8145714 +thumb_func 0x8145774 +thumb_func 0x81458e0 +thumb_func 0x81458f0 +thumb_func 0x814591c +thumb_func 0x81459e0 +thumb_func 0x8145a38 +thumb_func 0x8145bf0 +thumb_func 0x8145c20 +thumb_func 0x8145c6c +thumb_func 0x8145cd4 +thumb_func 0x8145cf0 +thumb_func 0x8145d18 +thumb_func 0x8145d40 +thumb_func 0x8145d8c +thumb_func 0x8145db4 +thumb_func 0x8145e08 +thumb_func 0x8145e84 +thumb_func 0x8145ecc +thumb_func 0x8145eec +thumb_func 0x8145f34 +thumb_func 0x8145f44 +thumb_func 0x8145f9c +thumb_func 0x8145fb4 +thumb_func 0x8145fd0 +thumb_func 0x8145fe0 +thumb_func 0x814602c +thumb_func 0x8146068 +thumb_func 0x81460a0 +thumb_func 0x81460f0 +thumb_func 0x8146124 +thumb_func 0x814614c +thumb_func 0x814617c +thumb_func 0x81461cc +thumb_func 0x8146204 +thumb_func 0x8146238 +thumb_func 0x8146298 +thumb_func 0x81462c4 +thumb_func 0x81462fc +thumb_func 0x8146368 +thumb_func 0x81463e0 +thumb_func 0x8146418 +thumb_func 0x8146444 +thumb_func 0x814647c +thumb_func 0x81464e0 +thumb_func 0x8146570 +thumb_func 0x81465a8 +thumb_func 0x81465d4 +thumb_func 0x814660c +thumb_func 0x8146644 +thumb_func 0x814667c +thumb_func 0x81466b4 +thumb_func 0x81466ec +thumb_func 0x8146724 +thumb_func 0x814675c +thumb_func 0x81467cc +thumb_func 0x8146820 +thumb_func 0x8146874 +thumb_func 0x81468c0 +thumb_func 0x8146914 +thumb_func 0x81469a4 +thumb_func 0x81469ec +thumb_func 0x8146a34 +thumb_func 0x8146a8c +thumb_func 0x8146ae4 +thumb_func 0x8146b3c +thumb_func 0x8146b88 +thumb_func 0x8146be4 +thumb_func 0x8146c3c +thumb_func 0x8146c68 +thumb_func 0x8146cb8 +thumb_func 0x8146d4c +thumb_func 0x8146de0 +thumb_func 0x8146e50 +thumb_func 0x8146e6c +thumb_func 0x8146e98 +thumb_func 0x8146eb8 +thumb_func 0x8146f80 +thumb_func 0x8146ffc +thumb_func 0x8147028 +thumb_func 0x8147054 +thumb_func 0x814708c +thumb_func 0x81470d8 +thumb_func 0x8147164 +thumb_func 0x8147190 +thumb_func 0x81471fc +thumb_func 0x81472c4 +thumb_func 0x81472fc +thumb_func 0x8147364 +thumb_func 0x81473f4 +thumb_func 0x81474e8 +thumb_func 0x8147570 +thumb_func 0x8147670 +thumb_func 0x8147708 +thumb_func 0x8147748 +thumb_func 0x81477d8 +thumb_func 0x8147810 +thumb_func 0x8147868 +thumb_func 0x8147948 +thumb_func 0x8147980 +thumb_func 0x81479ac +thumb_func 0x81479e4 +thumb_func 0x8147a3c +thumb_func 0x8147ad8 +thumb_func 0x8147b18 +thumb_func 0x8147ba4 +thumb_func 0x8147bc4 +thumb_func 0x8147be4 +thumb_func 0x8147c04 +thumb_func 0x8147c24 +thumb_func 0x8147c44 +thumb_func 0x8147c7c +thumb_func 0x8147ce4 +thumb_func 0x8147da4 +thumb_func 0x8147e90 +thumb_func 0x8147f0c +thumb_func 0x8147f48 +thumb_func 0x8148000 +thumb_func 0x81480c8 +thumb_func 0x8148100 +thumb_func 0x814814c +thumb_func 0x814818c +thumb_func 0x8148220 +thumb_func 0x81482a0 +thumb_func 0x81482d8 +thumb_func 0x8148440 +thumb_func 0x8148468 +thumb_func 0x814846c +thumb_func 0x81484b8 +thumb_func 0x81484ec +thumb_func 0x8148518 +thumb_func 0x8148544 +thumb_func 0x814855c +thumb_func 0x8148578 +thumb_func 0x8148590 +thumb_func 0x81485c8 +thumb_func 0x8148650 +thumb_func 0x814871c +thumb_func 0x814875c +thumb_func 0x81487e8 +thumb_func 0x8148820 +thumb_func 0x8148858 +thumb_func 0x8148924 +thumb_func 0x8148b94 +thumb_func 0x8148bd4 +thumb_func 0x8148c14 +thumb_func 0x8148c4c +thumb_func 0x8148c84 +thumb_func 0x8148ce8 +thumb_func 0x8148da8 +thumb_func 0x8148e2c +thumb_func 0x8148f14 +thumb_func 0x8148f4c +thumb_func 0x814900c +thumb_func 0x81490c8 +thumb_func 0x8149108 +thumb_func 0x8149200 +thumb_func 0x8149238 +thumb_func 0x8149288 +thumb_func 0x81492e4 +thumb_func 0x814933c +thumb_func 0x8149374 +thumb_func 0x8149418 +thumb_func 0x8149448 +thumb_func 0x8149498 +thumb_func 0x81494d0 +thumb_func 0x81494fc +thumb_func 0x814952c +thumb_func 0x81495c8 +thumb_func 0x8149638 +thumb_func 0x8149670 +thumb_func 0x81496e8 +thumb_func 0x814975c +thumb_func 0x8149798 +thumb_func 0x8149800 +thumb_func 0x8149834 +thumb_func 0x81498c4 +thumb_func 0x8149900 +thumb_func 0x8149924 +thumb_func 0x8149a1c +thumb_func 0x8149a54 +thumb_func 0x8149aa8 +thumb_func 0x8149b00 +thumb_func 0x8149b2c +thumb_func 0x8149b64 +thumb_func 0x8149bc8 +thumb_func 0x8149c44 +thumb_func 0x8149d20 +thumb_func 0x8149d8c +thumb_func 0x8149da8 +thumb_func 0x8149e38 +thumb_func 0x8149e9c +thumb_func 0x8149ebc +thumb_func 0x8149ef4 +thumb_func 0x8149f50 +thumb_func 0x8149fc8 +thumb_func 0x8149fec +thumb_func 0x814a000 +thumb_func 0x814a018 +thumb_func 0x814a044 +thumb_func 0x814a058 +thumb_func 0x814a0d4 +thumb_func 0x814a26c +thumb_func 0x814a2e8 +thumb_func 0x814a3e4 +thumb_func 0x814a434 +thumb_func 0x814a47c +thumb_func 0x814a4b4 +thumb_func 0x814a4ec +thumb_func 0x814a594 +thumb_func 0x814a5c0 +thumb_func 0x814a610 +thumb_func 0x814a744 +thumb_func 0x814a78c +thumb_func 0x814a7b0 +thumb_func 0x814a7e8 +thumb_func 0x814a820 +thumb_func 0x814a858 +thumb_func 0x814a8e8 +thumb_func 0x814a958 +thumb_func 0x814aa20 +thumb_func 0x814aac4 +thumb_func 0x814ab44 +thumb_func 0x814ab78 +thumb_func 0x814ac60 +thumb_func 0x814aca4 +thumb_func 0x814acf8 +thumb_func 0x814ae08 +thumb_func 0x814ae74 +thumb_func 0x814ae98 +thumb_func 0x814af00 +thumb_func 0x814af6c nullsub_88 +thumb_func 0x814af70 +thumb_func 0x814af8c +thumb_func 0x814afdc +thumb_func 0x814b014 +thumb_func 0x814b07c +thumb_func 0x814b0c4 +thumb_func 0x814b1a8 +thumb_func 0x814b350 +thumb_func 0x814b390 +thumb_func 0x814b400 +thumb_func 0x814b49c +thumb_func 0x814b50c +thumb_func 0x814b524 +thumb_func 0x814b5a0 +thumb_func 0x814b614 +thumb_func 0x814b668 +thumb_func 0x814b75c +thumb_func 0x814b800 +thumb_func 0x814b878 +thumb_func 0x814b8a8 +thumb_func 0x814b8d8 +thumb_func 0x814b94c +thumb_func 0x814c0f8 +thumb_func 0x814c104 +thumb_func 0x814c15c +thumb_func 0x814cb58 +thumb_func 0x814cbcc +thumb_func 0x814cce8 +thumb_func 0x814cd58 +thumb_func 0x814ced4 +thumb_func 0x814cf64 +thumb_func 0x814cff0 +thumb_func 0x814d1a4 +thumb_func 0x814d1b0 +thumb_func 0x814d25c +thumb_func 0x814d348 +thumb_func 0x814d354 +thumb_func 0x814d360 +thumb_func 0x814d36c +thumb_func 0x814d378 +thumb_func 0x814d4cc +thumb_func 0x814d650 +thumb_func 0x814d6a8 +thumb_func 0x814d6b4 +thumb_func 0x814d6c0 +thumb_func 0x814d6cc +thumb_func 0x814d6d8 +thumb_func 0x814d6e4 +thumb_func 0x814d6f0 +thumb_func 0x814d6fc +thumb_func 0x814d7ec +thumb_func 0x814d7f8 +thumb_func 0x814d870 +thumb_func 0x814d8d8 +thumb_func 0x814d8e4 +thumb_func 0x814d8f0 +thumb_func 0x814d8fc +thumb_func 0x814d908 +thumb_func 0x814d914 +thumb_func 0x814d920 +thumb_func 0x814d92c +thumb_func 0x814d938 +thumb_func 0x814d944 +thumb_func 0x814d960 +thumb_func 0x814d998 +thumb_func 0x814d9b0 +thumb_func 0x814d9d8 +thumb_func 0x814da48 +thumb_func 0x814da54 +thumb_func 0x814da98 +thumb_func 0x814daf4 +thumb_func 0x814db34 +thumb_func 0x814db68 +thumb_func 0x814dd8c +thumb_func 0x814de98 +thumb_func 0x814df5c +thumb_func 0x814dfa4 +thumb_func 0x814dff4 +thumb_func 0x814e000 +thumb_func 0x814e060 +thumb_func 0x814e0d4 +thumb_func 0x814e0f4 +thumb_func 0x814e100 +thumb_func 0x814e180 nullsub_89 +thumb_func 0x814e184 +thumb_func 0x814e7a0 +thumb_func 0x814e7b0 +thumb_func 0x814f664 +thumb_func 0x814f910 +thumb_func 0x814f968 +thumb_func 0x814fa04 +thumb_func 0x814fb80 +thumb_func 0x814fbfc +thumb_func 0x814fc4c +thumb_func 0x814fc78 +thumb_func 0x814fca4 +thumb_func 0x8150218 +thumb_func 0x8150234 +thumb_func 0x81503c0 +thumb_func 0x815052c +thumb_func 0x8150640 +thumb_func 0x81507dc +thumb_func 0x8150840 nullsub_901 +thumb_func 0x8150844 +thumb_func 0x8150924 +thumb_func 0x8150a44 +thumb_func 0x8150ad0 +thumb_func 0x8150b48 +thumb_func 0x8150d04 +thumb_func 0x8151064 +thumb_func 0x8151138 +thumb_func 0x8151194 +thumb_func 0x81511f0 +thumb_func 0x8151364 +thumb_func 0x81514a4 +thumb_func 0x8151510 +thumb_func 0x815152c +thumb_func 0x8151550 +thumb_func 0x815158c +thumb_func 0x81515b0 +thumb_func 0x81515d8 +thumb_func 0x8151600 +thumb_func 0x8151618 +thumb_func 0x8151638 +thumb_func 0x8151654 +thumb_func 0x8151668 +thumb_func 0x81516ec +thumb_func 0x8151720 +thumb_func 0x8151928 +thumb_func 0x81519b8 +thumb_func 0x8151a24 +thumb_func 0x8151a78 +thumb_func 0x8151b18 +thumb_func 0x8151b44 +thumb_func 0x8151bb0 +thumb_func 0x8151c2c +thumb_func 0x8151c84 +thumb_func 0x8151d04 +thumb_func 0x8151e2c +thumb_func 0x8151fe4 +thumb_func 0x8152034 +thumb_func 0x8152084 +thumb_func 0x8152110 +thumb_func 0x815219c +thumb_func 0x8152230 +thumb_func 0x81522b0 +thumb_func 0x81523d0 +thumb_func 0x8152414 +thumb_func 0x8152450 +thumb_func 0x81524a0 +thumb_func 0x81525ac +thumb_func 0x815262c +thumb_func 0x815265c +thumb_func 0x8152678 +thumb_func 0x81526dc +thumb_func 0x815277c +thumb_func 0x815286c +thumb_func 0x81528e4 +thumb_func 0x8152910 +thumb_func 0x815296c +thumb_func 0x81529b0 +thumb_func 0x8152a10 +thumb_func 0x8152a5c +thumb_func 0x8152bfc +thumb_func 0x8152c94 +thumb_func 0x8152d20 +thumb_func 0x8152d60 +thumb_func 0x8152e18 +thumb_func 0x815302c +thumb_func 0x815309c +thumb_func 0x81530b4 +thumb_func 0x81530e0 +thumb_func 0x8153154 +thumb_func 0x8153274 +thumb_func 0x81532bc +thumb_func 0x81532e8 +thumb_func 0x815331c +thumb_func 0x8153344 +thumb_func 0x815336c +thumb_func 0x81533b0 +thumb_func 0x815340c +thumb_func 0x8153498 +thumb_func 0x8153518 +thumb_func 0x8153570 +thumb_func 0x81535c4 +thumb_func 0x8153708 +thumb_func 0x8153740 +thumb_func 0x815375c +thumb_func 0x815378c +thumb_func 0x81537ac +thumb_func 0x81537c0 +thumb_func 0x81537dc +thumb_func 0x8153800 +thumb_func 0x815380c +thumb_func 0x8153834 +thumb_func 0x8153880 +thumb_func 0x81538ac +thumb_func 0x8153910 +thumb_func 0x8153960 +thumb_func 0x815396c +thumb_func 0x81539bc nullsub_91 +thumb_func 0x81539c0 +thumb_func 0x81539d0 +thumb_func 0x8153a08 +thumb_func 0x8153a24 +thumb_func 0x8153aec +thumb_func 0x8153b20 +thumb_func 0x8153b88 +thumb_func 0x8153bac +thumb_func 0x8153bd8 +thumb_func 0x8153c04 +thumb_func 0x8153d10 +thumb_func 0x8153d58 +thumb_func 0x8153d7c +thumb_func 0x8153dc4 +thumb_func 0x8153e10 +thumb_func 0x8153ed4 +thumb_func 0x8153ee8 +thumb_func 0x8153f58 +thumb_func 0x8153fb4 +thumb_func 0x8153fe4 +thumb_func 0x8154164 +thumb_func 0x81541b4 +thumb_func 0x81541d4 +thumb_func 0x815427c +thumb_func 0x8154320 +thumb_func 0x81543e8 +thumb_func 0x815448c +thumb_func 0x8154594 +thumb_func 0x8154604 +thumb_func 0x8154694 +thumb_func 0x815473c +thumb_func 0x8154838 +thumb_func 0x81548a8 +thumb_func 0x815494c +thumb_func 0x8154a40 +thumb_func 0x8154ab4 +thumb_func 0x8154b28 +thumb_func 0x8154b9c +thumb_func 0x8154bb8 +thumb_func 0x8154bdc +thumb_func 0x8154c28 +thumb_func 0x8154ccc +thumb_func 0x8154d58 +thumb_func 0x8154dc8 +thumb_func 0x8154e38 +thumb_func 0x8154ef0 +thumb_func 0x8154f90 +thumb_func 0x8154ff0 +thumb_func 0x8155094 +thumb_func 0x815512c +thumb_func 0x8155198 +thumb_func 0x8155204 +thumb_func 0x8155270 +thumb_func 0x81552dc +thumb_func 0x8155310 +thumb_func 0x815539c +thumb_func 0x81553b8 +thumb_func 0x81553e8 +thumb_func 0x8155448 +thumb_func 0x8155470 +thumb_func 0x81554e8 +thumb_func 0x8155514 +thumb_func 0x8155540 +thumb_func 0x8155574 +thumb_func 0x815557c +thumb_func 0x8155588 +thumb_func 0x8155594 +thumb_func 0x81555ec +thumb_func 0x8155624 +thumb_func 0x81556b8 +thumb_func 0x815573c +thumb_func 0x815578c +thumb_func 0x81557cc +thumb_func 0x815583c +thumb_func 0x81558f8 +thumb_func 0x81559c4 +thumb_func 0x8155a28 +thumb_func 0x8155a68 +thumb_func 0x8155adc +thumb_func 0x8155aec +thumb_func 0x8155afc +thumb_func 0x8155b0c +thumb_func 0x8155bc4 +thumb_func 0x8155cb4 +thumb_func 0x8155cdc +thumb_func 0x8155d18 +thumb_func 0x8155d8c +thumb_func 0x8155ddc +thumb_func 0x8155de4 +thumb_func 0x8155ebc +thumb_func 0x81560d0 +thumb_func 0x815610c +thumb_func 0x8156138 +thumb_func 0x8156200 +thumb_func 0x8156260 +thumb_func 0x81562ec +thumb_func 0x81563e8 +thumb_func 0x8156418 +thumb_func 0x815646c +thumb_func 0x815648c +thumb_func 0x81564d0 +thumb_func 0x8156514 +thumb_func 0x8156558 +thumb_func 0x815659c +thumb_func 0x81565c0 +thumb_func 0x8156604 +thumb_func 0x8156648 +thumb_func 0x815668c +thumb_func 0x81566d0 +thumb_func 0x81566f8 +thumb_func 0x815673c +thumb_func 0x8156780 +thumb_func 0x81567c4 +thumb_func 0x8156808 +thumb_func 0x8156848 +thumb_func 0x815688c +thumb_func 0x81568d0 +thumb_func 0x8156914 +thumb_func 0x8156958 +thumb_func 0x8156984 +thumb_func 0x81569d4 +thumb_func 0x8156a24 +thumb_func 0x8156a74 +thumb_func 0x8156ac4 +thumb_func 0x8156af0 +thumb_func 0x8156b40 +thumb_func 0x8156b90 +thumb_func 0x8156be0 +thumb_func 0x8156c30 +thumb_func 0x8156c54 +thumb_func 0x8156c98 +thumb_func 0x8156cdc +thumb_func 0x8156d20 +thumb_func 0x8156d68 +thumb_func 0x8156db0 +thumb_func 0x8156df8 +thumb_func 0x8156e40 +thumb_func 0x8156e80 +thumb_func 0x8156ec4 +thumb_func 0x8156f08 +thumb_func 0x8156f54 +thumb_func 0x8156f98 +thumb_func 0x8156fdc +thumb_func 0x8157068 +thumb_func 0x81570b0 +thumb_func 0x815713c +thumb_func 0x8157184 +thumb_func 0x81571e0 +thumb_func 0x8157224 +thumb_func 0x8157268 +thumb_func 0x81572ac +thumb_func 0x81572f0 +thumb_func 0x815734c +thumb_func 0x8157390 +thumb_func 0x81573d4 +thumb_func 0x8157418 +thumb_func 0x815745c +thumb_func 0x81574b4 +thumb_func 0x81574f8 +thumb_func 0x815753c +thumb_func 0x8157580 +thumb_func 0x81575c4 +thumb_func 0x815763c +thumb_func 0x8157684 +thumb_func 0x81576cc +thumb_func 0x8157744 +thumb_func 0x815778c +thumb_func 0x81577d4 +thumb_func 0x8157834 +thumb_func 0x815787c +thumb_func 0x81578c4 +thumb_func 0x8157908 +thumb_func 0x815794c +thumb_func 0x8157990 +thumb_func 0x81579d4 +thumb_func 0x8157a18 +thumb_func 0x8157a74 +thumb_func 0x8157ab8 +thumb_func 0x8157afc +thumb_func 0x8157b40 +thumb_func 0x8157b84 +thumb_func 0x8157bd0 +thumb_func 0x8157c18 +thumb_func 0x8157c60 +thumb_func 0x8157c9c +thumb_func 0x8157ce4 +thumb_func 0x8157d2c +thumb_func 0x8157d78 +thumb_func 0x8157dc0 +thumb_func 0x8157e08 +thumb_func 0x8157e50 +thumb_func 0x8157e98 +thumb_func 0x8157edc +thumb_func 0x8157f24 +thumb_func 0x8157f6c +thumb_func 0x8157fb4 +thumb_func 0x8157ffc +thumb_func 0x8158044 +thumb_func 0x8158088 +thumb_func 0x81580cc +thumb_func 0x8158110 +thumb_func 0x8158154 +thumb_func 0x8158190 +thumb_func 0x81581d4 +thumb_func 0x8158218 +thumb_func 0x815825c +thumb_func 0x81582a0 +thumb_func 0x81582f4 +thumb_func 0x8158338 +thumb_func 0x815837c +thumb_func 0x81583a8 +thumb_func 0x81583d8 +thumb_func 0x8158410 +thumb_func 0x8158444 +thumb_func 0x8158478 +thumb_func 0x81584c8 +thumb_func 0x8158518 +thumb_func 0x8158568 +thumb_func 0x81585b8 +thumb_func 0x815860c +thumb_func 0x8158660 +thumb_func 0x81586b4 +thumb_func 0x8158708 +thumb_func 0x8158758 +thumb_func 0x81587a8 +thumb_func 0x81587c8 +thumb_func 0x81587f8 +thumb_func 0x815881c +thumb_func 0x8158844 +thumb_func 0x8158884 +thumb_func 0x81588e0 +thumb_func 0x8158928 +thumb_func 0x8158970 +thumb_func 0x81589dc +thumb_func 0x8158a24 +thumb_func 0x8158a6c +thumb_func 0x8158ad4 +thumb_func 0x8158b40 +thumb_func 0x8158b94 +thumb_func 0x8158c28 +thumb_func 0x8158c44 +thumb_func 0x8158cc8 +thumb_func 0x8158dd8 +thumb_func 0x8158f30 +thumb_func 0x8158fb4 +thumb_func 0x8158ff4 +thumb_func 0x8159078 +thumb_func 0x815914c +thumb_func 0x8159180 +thumb_func 0x81591b4 +thumb_func 0x815922c +thumb_func 0x8159244 +thumb_func 0x81592a4 nullsub_90 +thumb_func 0x81592a8 +thumb_func 0x81592c4 +thumb_func 0x8159314 +thumb_func 0x8159498 +thumb_func 0x81594d0 +thumb_func 0x81594e8 +thumb_func 0x8159520 +thumb_func 0x8159560 +thumb_func 0x815959c +thumb_func 0x81595d4 +thumb_func 0x8159610 +thumb_func 0x8159640 +thumb_func 0x81596b8 +thumb_func 0x81596e8 +thumb_func 0x81596f4 +thumb_func 0x8159700 +thumb_func 0x815970c +thumb_func 0x8159718 +thumb_func 0x8159724 +thumb_func 0x8159730 +thumb_func 0x815973c +thumb_func 0x815981c +thumb_func 0x8159828 +thumb_func 0x8159834 +thumb_func 0x8159840 +thumb_func 0x815984c +thumb_func 0x81598a0 +thumb_func 0x8159900 +thumb_func 0x815990c +thumb_func 0x8159918 +thumb_func 0x815996c +thumb_func 0x8159990 +thumb_func 0x81599d0 +thumb_func 0x8159a38 +thumb_func 0x8159a44 +thumb_func 0x8159a50 +thumb_func 0x8159a90 +thumb_func 0x8159a9c +thumb_func 0x8159aa8 +thumb_func 0x8159ab4 +thumb_func 0x8159ac0 +thumb_func 0x8159afc +thumb_func 0x8159b08 +thumb_func 0x8159b14 +thumb_func 0x8159b20 +thumb_func 0x8159b2c +thumb_func 0x8159b38 +thumb_func 0x8159b44 +thumb_func 0x8159b50 +thumb_func 0x8159b5c +thumb_func 0x8159b68 +thumb_func 0x8159b74 +thumb_func 0x8159b80 +thumb_func 0x8159b8c +thumb_func 0x8159b98 +thumb_func 0x8159ba4 +thumb_func 0x8159bb0 +thumb_func 0x8159bbc +thumb_func 0x8159c00 +thumb_func 0x8159c5c +thumb_func 0x8159c98 +thumb_func 0x8159ccc +thumb_func 0x8159d28 +thumb_func 0x8159d34 +thumb_func 0x8159d40 +thumb_func 0x8159d4c +thumb_func 0x8159d58 +thumb_func 0x8159db4 +thumb_func 0x8159dc0 +thumb_func 0x8159dcc +thumb_func 0x8159e28 nullsub_93 +thumb_func 0x8159e2c +thumb_func 0x8159e4c +thumb_func 0x8159e68 +thumb_func 0x8159e98 +thumb_func 0x8159f28 +thumb_func 0x8159fcc +thumb_func 0x815a010 +thumb_func 0x815a050 +thumb_func 0x815a09c +thumb_func 0x815a0ec +thumb_func 0x815a130 +thumb_func 0x815a170 +thumb_func 0x815a190 +thumb_func 0x815a22c +thumb_func 0x815a258 +thumb_func 0x815a2e8 +thumb_func 0x815a32c +thumb_func 0x815a3d8 +thumb_func 0x815a440 +thumb_func 0x815a468 +thumb_func 0x815a504 +thumb_func 0x815a52c +thumb_func 0x815a600 +thumb_func 0x815a678 +thumb_func 0x815a6a8 +thumb_func 0x815a6ec +thumb_func 0x815a728 +thumb_func 0x815a7e8 +thumb_func 0x815a804 +thumb_func 0x815a840 +thumb_func 0x815a870 +thumb_func 0x815a8dc +thumb_func 0x815a9a8 +thumb_func 0x815a9e0 +thumb_func 0x815aa98 +thumb_func 0x815ab0c +thumb_func 0x815ab28 +thumb_func 0x815abc8 +thumb_func 0x815ac0c +thumb_func 0x815ac88 +thumb_func 0x815acec +thumb_func 0x815ae14 +thumb_func 0x815af2c +thumb_func 0x815af90 +thumb_func 0x815b178 +thumb_func 0x815b1b8 +thumb_func 0x815b274 +thumb_func 0x815b2d0 +thumb_func 0x815b3d8 +thumb_func 0x815b410 +thumb_func 0x815b4ac +thumb_func 0x815b50c +thumb_func 0x815b598 +thumb_func 0x815b5f0 +thumb_func 0x815b648 +thumb_func 0x815b6b4 +thumb_func 0x815b70c +thumb_func 0x815ba54 +thumb_func 0x815ba94 +thumb_func 0x815bac0 +thumb_func 0x815bd40 +thumb_func 0x815be80 +thumb_func 0x815bf30 +thumb_func 0x815bf8c +thumb_func 0x815bfe0 +thumb_func 0x815c2e4 +thumb_func 0x815c33c +thumb_func 0x815c3b4 +thumb_func 0x815c484 +thumb_func 0x815c5ec +thumb_func 0x815c63c +thumb_func 0x815c6ac +thumb_func 0x815c700 +thumb_func 0x815c898 +thumb_func 0x815c95c +thumb_func 0x815cac4 +thumb_func 0x815cb70 +thumb_func 0x815cbd0 +thumb_func 0x815cc48 +thumb_func 0x815ccf0 +thumb_func 0x815cd38 +thumb_func 0x815ce14 +thumb_func 0x815d09c +thumb_func 0x815d0f8 +thumb_func 0x815d17c +thumb_func 0x815d2d4 +thumb_func 0x815d588 +thumb_func 0x815d5d0 +thumb_func 0x815d668 +thumb_func 0x815d6d0 +thumb_func 0x815d6f0 +thumb_func 0x815d740 +thumb_func 0x815d7ac +thumb_func 0x815d814 +thumb_func 0x815d95c +thumb_func 0x815dacc +thumb_func 0x815dbe0 +thumb_func 0x815dc84 +thumb_func 0x815dd1c +thumb_func 0x815ddf8 +thumb_func 0x815de48 +thumb_func 0x815dea0 +thumb_func 0x815df08 +thumb_func 0x815df54 +thumb_func 0x815e014 +thumb_func 0x815e04c +thumb_func 0x815e144 +thumb_func 0x815e284 +thumb_func 0x815e33c +thumb_func 0x815e37c +thumb_func 0x815e3b4 +thumb_func 0x815e504 +thumb_func 0x815e610 +thumb_func 0x815e6bc +thumb_func 0x815e778 +thumb_func 0x815e7d0 +thumb_func 0x815e88c +thumb_func 0x815e8f4 +thumb_func 0x815e94c +thumb_func 0x815e998 +thumb_func 0x815eb80 +thumb_func 0x815ec1c +thumb_func 0x815edbc +thumb_func 0x815ee40 +thumb_func 0x815f044 +thumb_func 0x815f0c4 +thumb_func 0x815f144 +thumb_func 0x815f268 +thumb_func 0x815f3c4 +thumb_func 0x815f428 +thumb_func 0x815f558 +thumb_func 0x815f6d4 +thumb_func 0x815f6fc +thumb_func 0x815f7d8 +thumb_func 0x815f82c +thumb_func 0x815fdb8 +thumb_func 0x815fefc +thumb_func 0x816009c +thumb_func 0x8160114 +thumb_func 0x8160218 +thumb_func 0x8160270 +thumb_func 0x81602e0 +thumb_func 0x816032c +thumb_func 0x8160428 +thumb_func 0x816047c +thumb_func 0x81604c4 +thumb_func 0x816055c +thumb_func 0x8160570 +thumb_func 0x816059c +thumb_func 0x81605d8 +thumb_func 0x8160678 +thumb_func 0x8160724 +thumb_func 0x8160764 +thumb_func 0x8160784 +thumb_func 0x81607a0 +thumb_func 0x8160dc8 +thumb_func 0x8160e08 +thumb_func 0x8160e70 +thumb_func 0x8160f74 +thumb_func 0x8160f94 +thumb_func 0x8160fd0 +thumb_func 0x81610c4 +thumb_func 0x816114c +thumb_func 0x8161198 +thumb_func 0x8161280 +thumb_func 0x816140c +thumb_func 0x8161464 +thumb_func 0x81614ac +thumb_func 0x8161570 +thumb_func 0x81615c4 +thumb_func 0x8161628 +thumb_func 0x8161688 +thumb_func 0x81616bc +thumb_func 0x81616f8 +thumb_func 0x8161784 +thumb_func 0x81617b8 +thumb_func 0x81617d4 +thumb_func 0x816181c +thumb_func 0x8161868 +thumb_func 0x81618b4 +thumb_func 0x81618ec +thumb_func 0x816194c +thumb_func 0x81619e4 +thumb_func 0x8161a24 +thumb_func 0x8161a48 +thumb_func 0x8161a74 +thumb_func 0x8161aa8 +thumb_func 0x8161bd0 +thumb_func 0x8161bec +thumb_func 0x8161c14 +thumb_func 0x8161c68 +thumb_func 0x8161cfc +thumb_func 0x8161d3c +thumb_func 0x8161df0 +thumb_func 0x8161e2c +thumb_func 0x8161e60 +thumb_func 0x8161e78 +thumb_func 0x8161e88 +thumb_func 0x8161e9c nullsub_941 +thumb_func 0x8161ea8 +thumb_func 0x8161f68 +thumb_func 0x8162008 +thumb_func 0x81620d4 +thumb_func 0x8162140 +thumb_func 0x8162304 +thumb_func 0x816245c +thumb_func 0x81624c8 +thumb_func 0x8162528 +thumb_func 0x81626a0 +thumb_func 0x81626b0 +thumb_func 0x81627a4 +thumb_func 0x81629a4 +thumb_func 0x8162adc +thumb_func 0x8162c38 +thumb_func 0x8162d24 +thumb_func 0x8162e90 +thumb_func 0x8162f68 +thumb_func 0x8162f8c +thumb_func 0x8162fc0 +thumb_func 0x8162fe4 +thumb_func 0x8163364 +thumb_func 0x8163444 +thumb_func 0x81634b0 +thumb_func 0x81634f4 +thumb_func 0x81636bc +thumb_func 0x81637cc +thumb_func 0x816383c +thumb_func 0x81638d4 +thumb_func 0x81639b4 +thumb_func 0x81639ec +thumb_func 0x8163db8 +thumb_func 0x8163e0c +thumb_func 0x8163f68 +thumb_func 0x8164000 nullsub_95 +thumb_func 0x8164004 nullsub_94 +thumb_func 0x8164008 +thumb_func 0x81640b0 +thumb_func 0x81641c8 +thumb_func 0x81645e4 +thumb_func 0x8164718 +thumb_func 0x8164a54 +thumb_func 0x8164cac +thumb_func 0x8164cc4 +thumb_func 0x8164ce4 +thumb_func 0x8164da4 +thumb_func 0x8164e3c +thumb_func 0x8164e60 +thumb_func 0x8164e84 +thumb_func 0x8164e98 +thumb_func 0x8164ec8 +thumb_func 0x8164fd8 +thumb_func 0x81650c0 +thumb_func 0x81650e0 +thumb_func 0x8165100 +thumb_func 0x8165130 +thumb_func 0x81651a4 +thumb_func 0x81651c8 +thumb_func 0x81651dc +thumb_func 0x81651f8 +thumb_func 0x8165248 +thumb_func 0x8165280 +thumb_func 0x81656c8 +thumb_func 0x8165820 +thumb_func 0x8165924 +thumb_func 0x8165944 +thumb_func 0x816595c +thumb_func 0x81659c4 +thumb_func 0x8165a4c +thumb_func 0x8165a9c +thumb_func 0x8165ac0 +thumb_func 0x8165b14 +thumb_func 0x8165b4c +thumb_func 0x8165b84 +thumb_func 0x8165c24 +thumb_func 0x8165cb0 +thumb_func 0x8165ec4 +thumb_func 0x8165f30 +thumb_func 0x8165f94 +thumb_func 0x8166010 +thumb_func 0x8166058 +thumb_func 0x81660cc +thumb_func 0x81660dc +thumb_func 0x8166110 +thumb_func 0x8166128 +thumb_func 0x8166138 +thumb_func 0x816614c +thumb_func 0x8166178 +thumb_func 0x816618c +thumb_func 0x8166370 +thumb_func 0x8166440 +thumb_func 0x8166628 +thumb_func 0x8166704 +thumb_func 0x8166840 +thumb_func 0x81669f8 +thumb_func 0x8166b50 +thumb_func 0x8166bf0 +thumb_func 0x8166c30 +thumb_func 0x8166ce8 +thumb_func 0x8166d5c +thumb_func 0x8166d98 +thumb_func 0x8166db4 +thumb_func 0x8166dd8 +thumb_func 0x8166e28 +thumb_func 0x8166e58 +thumb_func 0x8166f08 +thumb_func 0x8166f88 +thumb_func 0x816706c +thumb_func 0x81670a8 +thumb_func 0x81670e8 +thumb_func 0x8167128 +thumb_func 0x816713c +thumb_func 0x81671e0 +thumb_func 0x8167224 +thumb_func 0x81672c0 +thumb_func 0x8167340 +thumb_func 0x816740c +thumb_func 0x8167564 +thumb_func 0x8167734 +thumb_func 0x81679a4 +thumb_func 0x8167aa8 +thumb_func 0x8167cac +thumb_func 0x8167dac +thumb_func 0x8167e50 +thumb_func 0x8167f70 +thumb_func 0x8167f88 +thumb_func 0x8167fbc +thumb_func 0x8167ffc +thumb_func 0x8168050 +thumb_func 0x816809c +thumb_func 0x8168130 +thumb_func 0x816817c +thumb_func 0x81681bc nullsub_97 +thumb_func 0x81681c0 +thumb_func 0x81681fc +thumb_func 0x816824c +thumb_func 0x8168374 +thumb_func 0x81683ac +thumb_func 0x81683c4 +thumb_func 0x81683dc +thumb_func 0x8168418 +thumb_func 0x8168454 +thumb_func 0x8168620 +thumb_func 0x816873c +thumb_func 0x81687ac +thumb_func 0x8168828 +thumb_func 0x8168898 +thumb_func 0x81688d0 +thumb_func 0x8168900 +thumb_func 0x8168978 +thumb_func 0x81689a8 +thumb_func 0x8168a1c +thumb_func 0x81691c8 +thumb_func 0x81691d4 +thumb_func 0x816922c +thumb_func 0x8169c28 +thumb_func 0x8169c34 +thumb_func 0x8169c40 +thumb_func 0x8169c4c +thumb_func 0x8169cd0 +thumb_func 0x8169d9c +thumb_func 0x8169e68 +thumb_func 0x8169e74 +thumb_func 0x8169e80 +thumb_func 0x8169e8c +thumb_func 0x8169ee0 +thumb_func 0x8169f40 +thumb_func 0x8169f4c +thumb_func 0x816a074 +thumb_func 0x816a1c0 +thumb_func 0x816a214 +thumb_func 0x816a238 +thumb_func 0x816a278 +thumb_func 0x816a2e0 +thumb_func 0x816a2ec +thumb_func 0x816a384 +thumb_func 0x816a3c4 +thumb_func 0x816a3d0 +thumb_func 0x816a3dc +thumb_func 0x816a4dc +thumb_func 0x816a4e8 +thumb_func 0x816a4f4 +thumb_func 0x816a500 +thumb_func 0x816a50c +thumb_func 0x816a518 +thumb_func 0x816a524 +thumb_func 0x816a530 +thumb_func 0x816a53c +thumb_func 0x816a548 +thumb_func 0x816a554 +thumb_func 0x816a560 +thumb_func 0x816a56c +thumb_func 0x816a578 +thumb_func 0x816a584 +thumb_func 0x816a590 +thumb_func 0x816a59c +thumb_func 0x816a60c +thumb_func 0x816a618 +thumb_func 0x816a648 +thumb_func 0x816a6a4 +thumb_func 0x816a6e0 +thumb_func 0x816a714 +thumb_func 0x816a888 +thumb_func 0x816aa0c +thumb_func 0x816aa80 +thumb_func 0x816ab04 +thumb_func 0x816ab10 +thumb_func 0x816ab1c +thumb_func 0x816ab28 +thumb_func 0x816ab84 +thumb_func 0x816ab90 +thumb_func 0x816ab9c +thumb_func 0x816abf8 nullsub_98 +thumb_func 0x816abfc +thumb_func 0x816ac60 +thumb_func 0x816aca0 +thumb_func 0x816ace0 +thumb_func 0x816adb0 +thumb_func 0x816ae78 +thumb_func 0x816ae94 +thumb_func 0x816aec0 +thumb_func 0x816af50 +thumb_func 0x816af60 +thumb_func 0x816afa8 +thumb_func 0x816b040 +thumb_func 0x816b06c +thumb_func 0x816b0ec +thumb_func 0x816b114 +thumb_func 0x816b140 +thumb_func 0x816b160 +thumb_func 0x816b18c +thumb_func 0x816b1bc +thumb_func 0x816b208 +thumb_func 0x816b254 +thumb_func 0x816b2c8 +thumb_func 0x816b2e4 +thumb_func 0x816b300 +thumb_func 0x816b334 +thumb_func 0x816b370 +thumb_func 0x816b41c +thumb_func 0x816b488 +thumb_func 0x816b544 +thumb_func 0x816b5a4 +thumb_func 0x816b5e8 +thumb_func 0x816b66c +thumb_func 0x816b6b8 +thumb_func 0x816b6e4 +thumb_func 0x816b740 +thumb_func 0x816b760 +thumb_func 0x816b7a4 +thumb_func 0x816b7d4 +thumb_func 0x816b7f0 +thumb_func 0x816b818 +thumb_func 0x816b858 +thumb_func 0x816b8ec +thumb_func 0x816b8fc +thumb_func 0x816b938 +thumb_func 0x816b968 +thumb_func 0x816b988 +thumb_func 0x816b9f8 +thumb_func 0x816ba14 +thumb_func 0x816ba54 +thumb_func 0x816ba98 +thumb_func 0x816babc +thumb_func 0x816bb04 +thumb_func 0x816bb44 +thumb_func 0x816bc08 +thumb_func 0x816bc1c +thumb_func 0x816bc84 +thumb_func 0x816bd24 +thumb_func 0x816bd94 +thumb_func 0x816bdd0 +thumb_func 0x816bdec +thumb_func 0x816be14 +thumb_func 0x816be94 +thumb_func 0x816befc +thumb_func 0x816bf44 +thumb_func 0x816bf74 +thumb_func 0x816bf8c +thumb_func 0x816c070 +thumb_func 0x816c108 +thumb_func 0x816c154 +thumb_func 0x816c1ec +thumb_func 0x816c268 +thumb_func 0x816c314 +thumb_func 0x816c3b8 +thumb_func 0x816c4a8 +thumb_func 0x816c4d4 +thumb_func 0x816c534 +thumb_func 0x816c630 +thumb_func 0x816c70c +thumb_func 0x816c7c8 +thumb_func 0x816c8a4 +thumb_func 0x816c8d8 +thumb_func 0x816c914 +thumb_func 0x816c984 +thumb_func 0x816c9d0 +thumb_func 0x816c9f8 +thumb_func 0x816ca10 +thumb_func 0x816ca64 +thumb_func 0x816ca80 +thumb_func 0x816cac8 +thumb_func 0x816cad8 +thumb_func 0x816cc90 +thumb_func 0x816ccf0 +thumb_func 0x816ccfc +thumb_func 0x816cf10 +thumb_func 0x816cf74 +thumb_func 0x816d084 +thumb_func 0x816d11c +thumb_func 0x816d138 +thumb_func 0x816d23c +thumb_func 0x816d270 +thumb_func 0x816d2c8 +thumb_func 0x816d434 +thumb_func 0x816d5cc +thumb_func 0x816d600 +thumb_func 0x816d7a4 +thumb_func 0x816d8cc +thumb_func 0x816d990 +thumb_func 0x816da48 +thumb_func 0x816dae0 +thumb_func 0x816db0c +thumb_func 0x816dbbc +thumb_func 0x816dc60 +thumb_func 0x816dcb4 +thumb_func 0x816dcd0 +thumb_func 0x816dd10 +thumb_func 0x816df74 +thumb_func 0x816dfdc +thumb_func 0x816e084 +thumb_func 0x816e13c +thumb_func 0x816e4b8 +thumb_func 0x816e530 +thumb_func 0x816e598 +thumb_func 0x816e66c +thumb_func 0x816e738 +thumb_func 0x816e77c +thumb_func 0x816e7c0 +thumb_func 0x816e89c +thumb_func 0x816e928 +thumb_func 0x816ea50 +thumb_func 0x816eb04 +thumb_func 0x816eb98 +thumb_func 0x816ec74 +thumb_func 0x816ec8c +thumb_func 0x816eea4 +thumb_func 0x816ef0c +thumb_func 0x816efc4 +thumb_func 0x816f08c +thumb_func 0x816f0fc +thumb_func 0x816f188 +thumb_func 0x816f238 +thumb_func 0x816f250 +thumb_func 0x816f398 +thumb_func 0x816f444 +thumb_func 0x816f4b4 +thumb_func 0x816f534 +thumb_func 0x816f5b4 +thumb_func 0x816f7b8 +thumb_func 0x816f894 +thumb_func 0x816f91c +thumb_func 0x816fb3c +thumb_func 0x816fbb0 +thumb_func 0x816fcd4 +thumb_func 0x816fe38 +thumb_func 0x816fef0 +thumb_func 0x816ff84 +thumb_func 0x816ffbc +thumb_func 0x8170058 +thumb_func 0x817006c +thumb_func 0x8170088 +thumb_func 0x8170214 +thumb_func 0x817025c +thumb_func 0x8170444 +thumb_func 0x8170618 +thumb_func 0x8170704 +thumb_func 0x8170730 +thumb_func 0x81707d0 +thumb_func 0x81707f0 +thumb_func 0x817081c +thumb_func 0x81708e8 +thumb_func 0x8170994 +thumb_func 0x8170ae0 +thumb_func 0x8170b08 +thumb_func 0x8170b30 +thumb_func 0x8170b68 +thumb_func 0x8170be8 +thumb_func 0x8170cd4 +thumb_func 0x8170d10 +thumb_func 0x8170e14 +thumb_func 0x8170e8c +thumb_func 0x8170ee8 +thumb_func 0x8170f18 +thumb_func 0x8170fcc +thumb_func 0x8171024 +thumb_func 0x8171170 +thumb_func 0x81711b4 +thumb_func 0x81712b8 +thumb_func 0x8171304 +thumb_func 0x8171598 +thumb_func 0x81715bc +thumb_func 0x81715dc +thumb_func 0x81716bc +thumb_func 0x81717a4 +thumb_func 0x81717d0 +thumb_func 0x8171890 +thumb_func 0x81718c8 +thumb_func 0x8171990 +thumb_func 0x8171a90 +thumb_func 0x8171acc +thumb_func 0x8171b44 +thumb_func 0x8171b7c +thumb_func 0x8171c04 +thumb_func 0x8171c34 +thumb_func 0x8171d4c +thumb_func 0x8171d6c +thumb_func 0x8171da8 +thumb_func 0x8171eac +thumb_func 0x8171fb0 +thumb_func 0x81720b0 +thumb_func 0x81721b8 +thumb_func 0x81722ec +thumb_func 0x8172344 +thumb_func 0x8172440 +thumb_func 0x81724a0 +thumb_func 0x81725cc +thumb_func 0x81726c4 +thumb_func 0x8172728 +thumb_func 0x81727cc +thumb_func 0x8172894 +thumb_func 0x8172924 +thumb_func 0x8172974 +thumb_func 0x81729d4 +thumb_func 0x8172b7c +thumb_func 0x8172c80 +thumb_func 0x8172cb4 +thumb_func 0x8172cd4 +thumb_func 0x8172dd0 +thumb_func 0x8172f94 +thumb_func 0x8172fe0 +thumb_func 0x8173034 +thumb_func 0x8173094 +thumb_func 0x81730c8 +thumb_func 0x81730f0 +thumb_func 0x8173180 +thumb_func 0x81731b8 +thumb_func 0x81731e4 +thumb_func 0x8173240 +thumb_func 0x8173298 +thumb_func 0x8173300 +thumb_func 0x8173330 +thumb_func 0x8173344 +thumb_func 0x8173360 +thumb_func 0x8173478 +thumb_func 0x81734bc +thumb_func 0x8173500 +thumb_func 0x81736a0 +thumb_func 0x81737a8 +thumb_func 0x8173840 +thumb_func 0x8173870 +thumb_func 0x817388c +thumb_func 0x81739a4 +thumb_func 0x8173a18 +thumb_func 0x8173b08 +thumb_func 0x8173ba4 +thumb_func 0x8173c88 +thumb_func 0x8173cc8 +thumb_func 0x8173d68 +thumb_func 0x8173e0c +thumb_func 0x8173e44 +thumb_func 0x8173e94 +thumb_func 0x8173f68 +thumb_func 0x8173f78 +thumb_func 0x8174108 +thumb_func 0x81741d0 +thumb_func 0x81743e0 +thumb_func 0x817450c +thumb_func 0x817467c +thumb_func 0x81746d4 +thumb_func 0x8174784 +thumb_func 0x81747ec +thumb_func 0x817481c +thumb_func 0x817487c +thumb_func 0x8174b74 +thumb_func 0x8174dc8 +thumb_func 0x8174e74 +thumb_func 0x8174eb0 +thumb_func 0x8174f28 +thumb_func 0x8175024 +thumb_func 0x81750a8 +thumb_func 0x8175100 +thumb_func 0x8175184 +thumb_func 0x81751c4 +thumb_func 0x81751f8 +thumb_func 0x8175268 +thumb_func 0x81753cc +thumb_func 0x81753e0 +thumb_func 0x817544c +thumb_func 0x81754a8 +thumb_func 0x81754c0 +thumb_func 0x817553c +thumb_func 0x817564c +thumb_func 0x817567c +thumb_func 0x8175710 +thumb_func 0x8175750 +thumb_func 0x81757ac +thumb_func 0x81757ec +thumb_func 0x81759a4 +thumb_func 0x81759ec +thumb_func 0x8175a24 +thumb_func 0x8175a9c +thumb_func 0x8175ae4 +thumb_func 0x8175b40 +thumb_func 0x8175bd4 +thumb_func 0x8175bf0 +thumb_func 0x8175cac +thumb_func 0x8175f1c +thumb_func 0x8176024 +thumb_func 0x817615c +thumb_func 0x817642c +thumb_func 0x8176488 +thumb_func 0x81768b8 +thumb_func 0x8176aa8 +thumb_func 0x8176b24 +thumb_func 0x8176c04 +thumb_func 0x8176c48 +thumb_func 0x8176ccc +thumb_func 0x8176d74 +thumb_func 0x8176e1c +thumb_func 0x8176edc +thumb_func 0x81770b0 +thumb_func 0x8177144 +thumb_func 0x8177214 +thumb_func 0x81773e4 +thumb_func 0x8177410 +thumb_func 0x8177458 +thumb_func 0x817746c +thumb_func 0x8177618 +thumb_func 0x81776a0 +thumb_func 0x81776c8 +thumb_func 0x81776f0 +thumb_func 0x8177700 +thumb_func 0x8177714 +thumb_func 0x8177894 +thumb_func 0x81778ac +thumb_func 0x81778dc +thumb_func 0x8177924 +thumb_func 0x8177960 +thumb_func 0x8177a2c +thumb_func 0x8177a84 +thumb_func 0x8177ab4 +thumb_func 0x8177afc +thumb_func 0x8177b3c +thumb_func 0x8177b58 +thumb_func 0x8177b6c +thumb_func 0x8177b98 +thumb_func 0x8177cfc +thumb_func 0x8177d70 +thumb_func 0x8177ef0 +thumb_func 0x8177f34 +thumb_func 0x8177f78 +thumb_func 0x8177fcc +thumb_func 0x8177fe8 +thumb_func 0x817804c +thumb_func 0x8178108 +thumb_func 0x8178188 +thumb_func 0x81781bc +thumb_func 0x81781f0 +thumb_func 0x8178224 +thumb_func 0x8178254 +thumb_func 0x81782bc +thumb_func 0x817844c +thumb_func 0x8178488 +thumb_func 0x81784c8 +thumb_func 0x817850c +thumb_func 0x8178564 +thumb_func 0x81785e0 +thumb_func 0x8178664 +thumb_func 0x81787fc +thumb_func 0x8178810 +thumb_func 0x817882c +thumb_func 0x81788f8 +thumb_func 0x8178930 +thumb_func 0x8178d7c +thumb_func 0x8178dfc +thumb_func 0x8178e48 +thumb_func 0x8178e80 +thumb_func 0x8178e94 +thumb_func 0x8179140 +thumb_func 0x8179248 +thumb_func 0x8179298 +thumb_func 0x81792e0 +thumb_func 0x817930c +thumb_func 0x81793cc +thumb_func 0x817940c +thumb_func 0x8179464 +thumb_func 0x81794a0 +thumb_func 0x81794f4 +thumb_func 0x8179564 +thumb_func 0x81795b4 nullsub_17 +thumb_func 0x81795b8 +thumb_func 0x81795f4 +thumb_func 0x8179630 +thumb_func 0x8179694 +thumb_func 0x81796ec +thumb_func 0x8179708 +thumb_func 0x8179718 +thumb_func 0x8179788 +thumb_func 0x81797d0 +thumb_func 0x81797ec +thumb_func 0x81797fc +thumb_func 0x817986c nullsub_99 +thumb_func 0x8179870 +thumb_func 0x81798bc +thumb_func 0x8179a20 +thumb_func 0x8179a3c +thumb_func 0x8179a50 +thumb_func 0x8179c28 +thumb_func 0x8179c54 +thumb_func 0x8179cac +thumb_func 0x8179e64 +thumb_func 0x8179ea4 +thumb_func 0x8179ee8 +thumb_func 0x817a020 +thumb_func 0x817a04c +thumb_func 0x817a07c +thumb_func 0x817a178 +thumb_func 0x817a1d8 +thumb_func 0x817a210 +thumb_func 0x817a2ec +thumb_func 0x817a320 +thumb_func 0x817a35c +thumb_func 0x817a3b0 +thumb_func 0x817a424 +thumb_func 0x817a458 +thumb_func 0x817a484 +thumb_func 0x817a4ec +thumb_func 0x817a7d4 +thumb_func 0x817a89c +thumb_func 0x817a8f4 +thumb_func 0x817a90c +thumb_func 0x817aa20 +thumb_func 0x817ab80 +thumb_func 0x817ab9c +thumb_func 0x817ac00 +thumb_func 0x817ac80 +thumb_func 0x817aca4 +thumb_func 0x817acb4 +thumb_func 0x817acc0 +thumb_func 0x817ae94 +thumb_func 0x817aeec +thumb_func 0x817af24 +thumb_func 0x817b010 +thumb_func 0x817b088 +thumb_func 0x817b268 +thumb_func 0x817b29c +thumb_func 0x817b318 +thumb_func 0x817b400 +thumb_func 0x817b4ec +thumb_func 0x817b558 +thumb_func 0x817b62c +thumb_func 0x817b648 +thumb_func 0x817b664 +thumb_func 0x817b680 nullsub_1001 +thumb_func 0x817b684 +thumb_func 0x817b6f4 +thumb_func 0x817b74c +thumb_func 0x817b7a4 nullsub_101 +thumb_func 0x817b7a8 +thumb_func 0x817b808 +thumb_func 0x817b884 +thumb_func 0x817b900 nullsub_100 +thumb_func 0x817b904 +thumb_func 0x817b93c +thumb_func 0x817b9f8 +thumb_func 0x817ba54 +thumb_func 0x817bac8 +thumb_func 0x817bb30 +thumb_func 0x817bb78 +thumb_func 0x817bbe0 +thumb_func 0x817bcb0 +thumb_func 0x817bd38 +thumb_func 0x817bd54 +thumb_func 0x817bd84 +thumb_func 0x817bdd4 +thumb_func 0x817be44 +thumb_func 0x817be74 +thumb_func 0x817be8c +thumb_func 0x817bec0 +thumb_func 0x817bf18 +thumb_func 0x817bf28 +thumb_func 0x817bf40 +thumb_func 0x817bf74 +thumb_func 0x817bff4 +thumb_func 0x817c004 +thumb_func 0x817c034 +thumb_func 0x817c094 +thumb_func 0x817c120 +thumb_func 0x817c140 +thumb_func 0x817c170 +thumb_func 0x817c1d0 +thumb_func 0x817c25c nullsub_103 +thumb_func 0x817c260 +thumb_func 0x817c3ac +thumb_func 0x817c3d0 +thumb_func 0x817c420 +thumb_func 0x817c53c +thumb_func 0x817c5ec +thumb_func 0x817c69c +thumb_func 0x817c6b0 +thumb_func 0x817c704 +thumb_func 0x817c768 +thumb_func 0x817c7a8 +thumb_func 0x817c7c8 +thumb_func 0x817c7f8 +thumb_func 0x817c808 +thumb_func 0x817df64 +thumb_func 0x817dfa8 +thumb_func 0x817e1d8 +thumb_func 0x817e2a0 +thumb_func 0x817e530 AddMovePoints +thumb_func 0x817e92c AddPointsOnFainting +thumb_func 0x817ed78 +thumb_func 0x817f0c8 +thumb_func 0x817f154 +thumb_func 0x817f1e8 +thumb_func 0x817f240 +thumb_func 0x817f298 nullsub_27 +thumb_func 0x817f29c +thumb_func 0x817f320 +thumb_func 0x817f344 +thumb_func 0x817f3f0 +thumb_func 0x817f424 +thumb_func 0x817f440 +thumb_func 0x817f4b8 +thumb_func 0x817f4c4 +thumb_func 0x817f51c +thumb_func 0x817f580 +thumb_func 0x817f5b8 +thumb_func 0x817f5d0 +thumb_func 0x817f604 +thumb_func 0x817f628 +thumb_func 0x817f6b4 +thumb_func 0x817f744 +thumb_func 0x817f7a8 +thumb_func 0x817f808 +thumb_func 0x817f824 +thumb_func 0x817f884 +thumb_func 0x817f8a0 +thumb_func 0x817f918 +thumb_func 0x817f934 +thumb_func 0x817fa10 +thumb_func 0x817facc +thumb_func 0x817fb70 +thumb_func 0x817fb88 +thumb_func 0x817fbd0 +thumb_func 0x817fbf0 +thumb_func 0x817fc34 +thumb_func 0x817fc50 +thumb_func 0x817fcdc +thumb_func 0x817fdac +thumb_func 0x817fde8 +thumb_func 0x817fe64 +thumb_func 0x817fe9c +thumb_func 0x817ff3c +thumb_func 0x817ff7c +thumb_func 0x817ffe0 +thumb_func 0x81800bc +thumb_func 0x81801c8 +thumb_func 0x818024c +thumb_func 0x8180268 +thumb_func 0x8180320 +thumb_func 0x81803a4 +thumb_func 0x8180440 +thumb_func 0x818045c +thumb_func 0x8180500 +thumb_func 0x818051c +thumb_func 0x81805c0 +thumb_func 0x81806b8 +thumb_func 0x81806d4 +thumb_func 0x8180784 +thumb_func 0x81807ac +thumb_func 0x81808fc +thumb_func 0x8180938 +thumb_func 0x81809a4 +thumb_func 0x8180a08 +thumb_func 0x8180a70 +thumb_func 0x8180adc +thumb_func 0x8180b48 +thumb_func 0x8180b60 +thumb_func 0x8180b94 +thumb_func 0x8180bf0 +thumb_func 0x8180c6c +thumb_func 0x8180cd4 +thumb_func 0x8180d08 +thumb_func 0x8180d24 +thumb_func 0x8180d7c +thumb_func 0x8180dd8 +thumb_func 0x8180e54 +thumb_func 0x8180eb8 +thumb_func 0x8180ed0 +thumb_func 0x8180f14 +thumb_func 0x8180f70 +thumb_func 0x8180fa4 +thumb_func 0x8180fbc +thumb_func 0x8180ff0 +thumb_func 0x8181050 +thumb_func 0x818108c +thumb_func 0x81810c0 +thumb_func 0x8181200 +thumb_func 0x818121c +thumb_func 0x81812c4 +thumb_func 0x8181380 +thumb_func 0x818144c +thumb_func 0x8181480 +thumb_func 0x818154c +thumb_func 0x8181580 +thumb_func 0x81815b4 +thumb_func 0x818161c +thumb_func 0x8181640 +thumb_func 0x81816bc +thumb_func 0x818180c +thumb_func 0x8181840 +thumb_func 0x8181924 +thumb_func 0x8181968 +thumb_func 0x81819f8 +thumb_func 0x8181ad8 +thumb_func 0x8181b94 +thumb_func 0x8181c5c +thumb_func 0x8181c90 +thumb_func 0x8181d3c +thumb_func 0x8181da4 +thumb_func 0x8181dc0 +thumb_func 0x8181dfc +thumb_func 0x8181e6c +thumb_func 0x8181ec8 +thumb_func 0x8181f8c +thumb_func 0x8181fa8 +thumb_func 0x8182018 +thumb_func 0x8182078 +thumb_func 0x81820f4 +thumb_func 0x818215c +thumb_func 0x818221c +thumb_func 0x818234c +thumb_func 0x81823f4 +thumb_func 0x8182488 +thumb_func 0x81824a4 +thumb_func 0x81824f4 +thumb_func 0x81825a4 +thumb_func 0x8182610 +thumb_func 0x81826a8 +thumb_func 0x81826dc +thumb_func 0x8182774 +thumb_func 0x81827a8 +thumb_func 0x8182858 +thumb_func 0x8182918 +thumb_func 0x81829d0 +thumb_func 0x8182ac4 +thumb_func 0x8182bd0 +thumb_func 0x8182bec +thumb_func 0x8182c08 +thumb_func 0x8182c24 +thumb_func 0x8182c60 +thumb_func 0x8182c70 +thumb_func 0x8182c80 +thumb_func 0x8182cac +thumb_func 0x8182ccc +thumb_func 0x8182ce8 +thumb_func 0x8182d28 +thumb_func 0x8182d68 +thumb_func 0x8182d84 +thumb_func 0x8182da0 +thumb_func 0x8182dbc +thumb_func 0x8182df4 +thumb_func 0x8182e2c +thumb_func 0x8182e64 +thumb_func 0x8182ea8 +thumb_func 0x8182edc +thumb_func 0x8182f14 +thumb_func 0x8182f48 +thumb_func 0x8182f80 +thumb_func 0x8182fb4 +thumb_func 0x8182fec +thumb_func 0x8183040 +thumb_func 0x8183060 +thumb_func 0x8183080 +thumb_func 0x8183174 +thumb_func 0x8183294 +thumb_func 0x81832c4 +thumb_func 0x81833f0 +thumb_func 0x8183420 +thumb_func 0x81834c4 +thumb_func 0x81834e4 +thumb_func 0x8183504 +thumb_func 0x8183520 +thumb_func 0x8183584 +thumb_func 0x81835e8 +thumb_func 0x8183608 +thumb_func 0x8183628 +thumb_func 0x8183648 +thumb_func 0x8183688 +thumb_func 0x81837e8 +thumb_func 0x8183818 +thumb_func 0x818390c +thumb_func 0x81839f8 +thumb_func 0x8183ab8 +thumb_func 0x8183ad8 +thumb_func 0x8183af8 +thumb_func 0x8183b18 +thumb_func 0x8183b9c +thumb_func 0x8183bd4 +thumb_func 0x8183c0c +thumb_func 0x8183c40 +thumb_func 0x8183c74 +thumb_func 0x8183ca8 +thumb_func 0x8183cdc +thumb_func 0x8183d04 +thumb_func 0x8183d2c +thumb_func 0x8183d5c +thumb_func 0x8183d8c +thumb_func 0x8183dc0 +thumb_func 0x8183df0 +thumb_func 0x8183e24 +thumb_func 0x8183e54 +thumb_func 0x8183ef4 +thumb_func 0x8183f1c +thumb_func 0x8183f44 +thumb_func 0x8183f70 +thumb_func 0x818403c +thumb_func 0x8184068 +thumb_func 0x8184094 +thumb_func 0x81840c0 +thumb_func 0x81840e8 +thumb_func 0x8184110 +thumb_func 0x818413c +thumb_func 0x8184188 +thumb_func 0x818420c +thumb_func 0x8184290 +thumb_func 0x8184314 +thumb_func 0x81843fc +thumb_func 0x8184428 +thumb_func 0x8184454 +thumb_func 0x8184480 +thumb_func 0x81844bc +thumb_func 0x81844ec +thumb_func 0x8184524 +thumb_func 0x8184564 +thumb_func 0x8184598 +thumb_func 0x81845c4 +thumb_func 0x81845f0 +thumb_func 0x818461c +thumb_func 0x8184644 +thumb_func 0x81846e0 +thumb_func 0x8184718 +thumb_func 0x8184750 +thumb_func 0x818478c +thumb_func 0x81847e0 +thumb_func 0x8184880 +thumb_func 0x81848e8 +thumb_func 0x8184950 +thumb_func 0x81849b8 +thumb_func 0x8184a24 +thumb_func 0x8184a8c +thumb_func 0x8184af4 +thumb_func 0x8184b5c +thumb_func 0x8184bc8 +thumb_func 0x8184c34 +thumb_func 0x8184c50 +thumb_func 0x8184d04 +thumb_func 0x8184e1c +thumb_func 0x8184e68 +thumb_func 0x8184eb4 +thumb_func 0x8184f30 +thumb_func 0x8184f3c +thumb_func 0x8185008 +thumb_func 0x81850d8 +thumb_func 0x81850f0 +thumb_func 0x8185110 +thumb_func 0x8185150 +thumb_func 0x8185198 +thumb_func 0x8185810 +thumb_func 0x8185844 +thumb_func 0x818586c +thumb_func 0x81858d8 +thumb_func 0x818591c +thumb_func 0x8185b7c +thumb_func 0x8185be4 +thumb_func 0x8185bf8 +thumb_func 0x8185c04 +thumb_func 0x8185c10 +thumb_func 0x8185c54 +thumb_func 0x8185c98 +thumb_func 0x8185cdc +thumb_func 0x8185ce8 +thumb_func 0x8185d04 +thumb_func 0x8185d10 +thumb_func 0x8185d1c +thumb_func 0x8185d28 +thumb_func 0x8185d94 +thumb_func 0x8186190 +thumb_func 0x818619c +thumb_func 0x81861a8 +thumb_func 0x81861c0 +thumb_func 0x81861e0 +thumb_func 0x81861ec +thumb_func 0x81861f8 +thumb_func 0x818620c +thumb_func 0x8186214 nullsub_1041 +thumb_func 0x8186218 +thumb_func 0x8186234 +thumb_func 0x8186284 +thumb_func 0x81862bc +thumb_func 0x81862f4 +thumb_func 0x818635c +thumb_func 0x81863a4 +thumb_func 0x8186598 +thumb_func 0x8186974 +thumb_func 0x8186a30 +thumb_func 0x8186a84 +thumb_func 0x8186ac8 +thumb_func 0x8186b3c +thumb_func 0x8186b54 +thumb_func 0x8186bd0 +thumb_func 0x8186c40 +thumb_func 0x8186cc0 +thumb_func 0x8186db0 +thumb_func 0x8186e78 +thumb_func 0x8186ea8 +thumb_func 0x8186ed8 +thumb_func 0x8186f50 +thumb_func 0x8186fc4 +thumb_func 0x8187770 +thumb_func 0x818777c +thumb_func 0x81877d4 +thumb_func 0x81880f4 +thumb_func 0x8188168 +thumb_func 0x81882b8 +thumb_func 0x8188304 +thumb_func 0x8188494 +thumb_func 0x818852c +thumb_func 0x81885b8 +thumb_func 0x818876c +thumb_func 0x8188778 +thumb_func 0x8188824 +thumb_func 0x81888d0 +thumb_func 0x81888dc +thumb_func 0x81888e8 +thumb_func 0x81888f4 +thumb_func 0x8188900 +thumb_func 0x8188a38 +thumb_func 0x8188bbc +thumb_func 0x8188c10 +thumb_func 0x8188c1c +thumb_func 0x8188c40 +thumb_func 0x8188c4c +thumb_func 0x8188ca8 +thumb_func 0x8188cb4 +thumb_func 0x8188cf0 +thumb_func 0x8188cfc +thumb_func 0x8188dec +thumb_func 0x8188df8 +thumb_func 0x8188e70 +thumb_func 0x8188ed8 +thumb_func 0x8188ee4 +thumb_func 0x8188ef0 +thumb_func 0x8188efc +thumb_func 0x8188f08 +thumb_func 0x8188f14 +thumb_func 0x8188f20 +thumb_func 0x8188f2c +thumb_func 0x8188f38 +thumb_func 0x8188f44 +thumb_func 0x8188f60 +thumb_func 0x8188f98 +thumb_func 0x8188fb0 +thumb_func 0x8188fd8 +thumb_func 0x8189048 +thumb_func 0x8189054 +thumb_func 0x8189098 +thumb_func 0x81890f4 +thumb_func 0x8189130 +thumb_func 0x8189164 +thumb_func 0x8189274 +thumb_func 0x8189358 +thumb_func 0x8189374 +thumb_func 0x8189488 +thumb_func 0x81894d0 +thumb_func 0x8189520 +thumb_func 0x818952c +thumb_func 0x818958c +thumb_func 0x81895f4 +thumb_func 0x8189600 +thumb_func 0x818960c +thumb_func 0x8189670 nullsub_105 +thumb_func 0x8189674 nullsub_104 +thumb_func 0x8189678 +thumb_func 0x8189694 +thumb_func 0x81896e4 +thumb_func 0x818971c +thumb_func 0x8189784 +thumb_func 0x81897cc +thumb_func 0x8189a6c +thumb_func 0x8189d90 +thumb_func 0x8189dd0 +thumb_func 0x8189e40 +thumb_func 0x8189edc +thumb_func 0x8189f4c +thumb_func 0x8189f64 +thumb_func 0x8189fe0 +thumb_func 0x818a054 +thumb_func 0x818a0a8 +thumb_func 0x818a19c +thumb_func 0x818a240 +thumb_func 0x818a2b8 +thumb_func 0x818a2e8 +thumb_func 0x818a318 +thumb_func 0x818a38c +thumb_func 0x818ab38 +thumb_func 0x818ab44 +thumb_func 0x818ab9c +thumb_func 0x818b598 +thumb_func 0x818b60c +thumb_func 0x818b728 +thumb_func 0x818b798 +thumb_func 0x818b914 +thumb_func 0x818b9a4 +thumb_func 0x818ba30 +thumb_func 0x818bcd8 +thumb_func 0x818bce4 +thumb_func 0x818bd90 +thumb_func 0x818be7c +thumb_func 0x818be88 +thumb_func 0x818be94 +thumb_func 0x818bea0 +thumb_func 0x818beac +thumb_func 0x818bfe4 +thumb_func 0x818c168 +thumb_func 0x818c1bc +thumb_func 0x818c1c8 +thumb_func 0x818c204 +thumb_func 0x818c258 +thumb_func 0x818c264 +thumb_func 0x818c2c0 +thumb_func 0x818c2cc +thumb_func 0x818c308 +thumb_func 0x818c314 +thumb_func 0x818c414 +thumb_func 0x818c420 +thumb_func 0x818c498 +thumb_func 0x818c500 +thumb_func 0x818c50c +thumb_func 0x818c518 +thumb_func 0x818c524 +thumb_func 0x818c530 +thumb_func 0x818c53c +thumb_func 0x818c548 +thumb_func 0x818c554 +thumb_func 0x818c560 +thumb_func 0x818c56c +thumb_func 0x818c588 +thumb_func 0x818c5c0 +thumb_func 0x818c5d8 +thumb_func 0x818c600 +thumb_func 0x818c670 +thumb_func 0x818c67c +thumb_func 0x818c6c0 +thumb_func 0x818c71c +thumb_func 0x818c75c +thumb_func 0x818c790 +thumb_func 0x818c950 +thumb_func 0x818ca5c +thumb_func 0x818cb20 +thumb_func 0x818cb68 +thumb_func 0x818cbb8 +thumb_func 0x818cbc4 +thumb_func 0x818cc24 +thumb_func 0x818cc8c +thumb_func 0x818cc98 +thumb_func 0x818cca4 +thumb_func 0x818ccf0 nullsub_107 +thumb_func 0x818ccf4 nullsub_108 +thumb_func 0x818ccf8 +thumb_func 0x818cd20 +thumb_func 0x818cdc8 +thumb_func 0x818cdf0 +thumb_func 0x818ceac +thumb_func 0x818ceec +thumb_func 0x818cf18 +thumb_func 0x818d0b0 +thumb_func 0x818d110 +thumb_func 0x818d2dc +thumb_func 0x818d388 +thumb_func 0x818d3f8 +thumb_func 0x818d4a4 +thumb_func 0x818d504 +thumb_func 0x818d54c +thumb_func 0x818d560 +thumb_func 0x818d590 +thumb_func 0x818d5d8 +thumb_func 0x818d61c +thumb_func 0x818d630 +thumb_func 0x818d664 +thumb_func 0x818d6a8 +thumb_func 0x818d6d8 +thumb_func 0x818d6ec +thumb_func 0x818d75c +thumb_func 0x818d7a4 +thumb_func 0x818d7d8 +thumb_func 0x818d818 +thumb_func 0x818d830 +thumb_func 0x818d84c +thumb_func 0x818d8a8 +thumb_func 0x818d8f0 +thumb_func 0x818d914 +thumb_func 0x818d948 +thumb_func 0x818d958 +thumb_func 0x818d98c +thumb_func 0x818d9c8 +thumb_func 0x818d9e4 +thumb_func 0x818da10 +thumb_func 0x818da30 +thumb_func 0x818da60 +thumb_func 0x818da84 +thumb_func 0x818da90 +thumb_func 0x818db50 +thumb_func 0x818db68 +thumb_func 0x818db94 +thumb_func 0x818dbac +thumb_func 0x818dbe8 +thumb_func 0x818dc00 +thumb_func 0x818dc0c +thumb_func 0x818dc74 +thumb_func 0x818dd10 +thumb_func 0x818dd44 +thumb_func 0x818dd78 +thumb_func 0x818dda4 +thumb_func 0x818de50 +thumb_func 0x818deb4 +thumb_func 0x818ded0 +thumb_func 0x818def4 +thumb_func 0x818df34 +thumb_func 0x818df58 +thumb_func 0x818df64 +thumb_func 0x818dfb4 +thumb_func 0x818dfd8 +thumb_func 0x818dff8 +thumb_func 0x818e018 +thumb_func 0x818e03c +thumb_func 0x818e048 +thumb_func 0x818e08c +thumb_func 0x818e0d8 +thumb_func 0x818e0ec +thumb_func 0x818e100 +thumb_func 0x818e16c +thumb_func 0x818e194 +thumb_func 0x818e1c0 +thumb_func 0x818e1cc +thumb_func 0x818e260 +thumb_func 0x818e294 +thumb_func 0x818e2d0 +thumb_func 0x818e30c +thumb_func 0x818e360 +thumb_func 0x818e3f0 +thumb_func 0x818e43c +thumb_func 0x818e478 +thumb_func 0x818e4a4 +thumb_func 0x818e4c4 +thumb_func 0x818e4dc +thumb_func 0x818e510 +thumb_func 0x818e53c +thumb_func 0x818e570 +thumb_func 0x818e588 +thumb_func 0x818e59c +thumb_func 0x818e5bc +thumb_func 0x818e5ec +thumb_func 0x818e608 +thumb_func 0x818e61c nullsub_109 +thumb_func 0x818e628 +thumb_func 0x818e6e0 +thumb_func 0x818e984 +thumb_func 0x818ec88 +thumb_func 0x818f37c +thumb_func 0x818f560 +thumb_func 0x818f60c +thumb_func 0x818f63c +thumb_func 0x818f67c +thumb_func 0x818f6d0 +thumb_func 0x818f838 +thumb_func 0x818f8d4 +thumb_func 0x818f918 +thumb_func 0x818fa14 +thumb_func 0x818fb10 +thumb_func 0x818fc1c +thumb_func 0x818fdc4 +thumb_func 0x818fdfc +thumb_func 0x818fef4 +thumb_func 0x818ff08 +thumb_func 0x818ff40 +thumb_func 0x818ff54 +thumb_func 0x818ff98 +thumb_func 0x8190014 +thumb_func 0x819005c +thumb_func 0x81903ec +thumb_func 0x8190454 +thumb_func 0x81904bc +thumb_func 0x8190528 +thumb_func 0x8190594 +thumb_func 0x81905ac +thumb_func 0x8190628 +thumb_func 0x81906a4 +thumb_func 0x8190720 +thumb_func 0x819079c +thumb_func 0x81908c8 +thumb_func 0x8190930 +thumb_func 0x8191e78 +thumb_func 0x819213c +thumb_func 0x8192b3c +thumb_func 0x8192d7c +thumb_func 0x8193484 +thumb_func 0x81934c0 +thumb_func 0x819353c +thumb_func 0x81937bc +thumb_func 0x8193920 +thumb_func 0x819395c +thumb_func 0x8193ab0 +thumb_func 0x8193e00 +thumb_func 0x8194490 +thumb_func 0x81944f4 +thumb_func 0x8194754 +thumb_func 0x8194770 +thumb_func 0x81947ec +thumb_func 0x81948e4 +thumb_func 0x8194948 +thumb_func 0x8194968 +thumb_func 0x8194a44 +thumb_func 0x8194ab4 +thumb_func 0x8194ac0 +thumb_func 0x8194af8 +thumb_func 0x8194b58 +thumb_func 0x8194f58 +thumb_func 0x8194fa0 +thumb_func 0x8194fe8 +thumb_func 0x8195038 +thumb_func 0x8195498 +thumb_func 0x8195510 +thumb_func 0x8195524 +thumb_func 0x8195538 +thumb_func 0x8195560 +thumb_func 0x8195574 nullsub_1101 +thumb_func 0x8195580 +thumb_func 0x8195638 +thumb_func 0x81956e4 +thumb_func 0x81957b0 +thumb_func 0x8195820 +thumb_func 0x8195850 +thumb_func 0x819587c +thumb_func 0x81958e4 +thumb_func 0x8195928 +thumb_func 0x81959b8 +thumb_func 0x8195a10 +thumb_func 0x8195a34 +thumb_func 0x8195a58 +thumb_func 0x8195a8c +thumb_func 0x8195ad8 +thumb_func 0x8195b40 +thumb_func 0x8195b68 +thumb_func 0x8195bcc +thumb_func 0x8195bf8 +thumb_func 0x8195c34 +thumb_func 0x8195c80 +thumb_func 0x8195c94 +thumb_func 0x8195ca8 +thumb_func 0x8195ce0 +thumb_func 0x8195d2c +thumb_func 0x8195df0 +thumb_func 0x8195e74 +thumb_func 0x8195eb0 +thumb_func 0x8195ed8 +thumb_func 0x8195f30 +thumb_func 0x8195f90 +thumb_func 0x8195ff0 +thumb_func 0x819605c +thumb_func 0x81961d8 +thumb_func 0x8196248 +thumb_func 0x8196294 +thumb_func 0x8196310 +thumb_func 0x819632c +thumb_func 0x8196348 +thumb_func 0x8196374 +thumb_func 0x81963ac +thumb_func 0x8196444 +thumb_func 0x8196464 +thumb_func 0x8196490 +thumb_func 0x81964bc +thumb_func 0x8196510 +thumb_func 0x81965e0 +thumb_func 0x81965fc +thumb_func 0x819662c +thumb_func 0x8196644 +thumb_func 0x8196698 +thumb_func 0x81966b4 +thumb_func 0x819674c +thumb_func 0x8196794 +thumb_func 0x819686c +thumb_func 0x81968e8 +thumb_func 0x8196908 +thumb_func 0x8196940 +thumb_func 0x8196968 +thumb_func 0x81969f8 +thumb_func 0x8196b84 +thumb_func 0x8196c74 +thumb_func 0x8196d78 +thumb_func 0x8196db8 +thumb_func 0x8196dc4 +thumb_func 0x8196de8 +thumb_func 0x8196df4 +thumb_func 0x8196e18 +thumb_func 0x8196e2c +thumb_func 0x8196eb8 +thumb_func 0x8196f04 +thumb_func 0x8196f50 +thumb_func 0x8196f98 +thumb_func 0x8196fb8 +thumb_func 0x8196ff0 +thumb_func 0x8197028 +thumb_func 0x8197060 +thumb_func 0x8197098 +thumb_func 0x81971e8 +thumb_func 0x81975a0 +thumb_func 0x81975e8 +thumb_func 0x8197638 +thumb_func 0x8197650 +thumb_func 0x8197680 +thumb_func 0x8197694 +thumb_func 0x81976ac +thumb_func 0x81976b4 +thumb_func 0x81976d0 +thumb_func 0x8197714 +thumb_func 0x819773c +thumb_func 0x8197768 +thumb_func 0x8197794 +thumb_func 0x81977c8 +thumb_func 0x819780c +thumb_func 0x8197818 +thumb_func 0x8197834 +thumb_func 0x819783c +thumb_func 0x8197844 +thumb_func 0x819787c +thumb_func 0x8197888 +thumb_func 0x81978a4 +thumb_func 0x81978f0 +thumb_func 0x8197924 +thumb_func 0x819796c +thumb_func 0x81979bc +thumb_func 0x8197ebc +thumb_func 0x8197ef4 +thumb_func 0x8197f44 +thumb_func 0x8197f8c +thumb_func 0x8197fdc +thumb_func 0x8198134 +thumb_func 0x819816c +thumb_func 0x81981b4 +thumb_func 0x8198244 +thumb_func 0x81982e8 +thumb_func 0x81983dc +thumb_func 0x81983f4 +thumb_func 0x8198418 +thumb_func 0x819844c +thumb_func 0x81984b0 +thumb_func 0x81984f0 +thumb_func 0x819854c +thumb_func 0x81985e8 +thumb_func 0x819862c +thumb_func 0x8198670 +thumb_func 0x819867c +thumb_func 0x81986e8 +thumb_func 0x8198768 +thumb_func 0x81987d4 +thumb_func 0x8198850 +thumb_func 0x81988cc +thumb_func 0x8198964 +thumb_func 0x81989b4 +thumb_func 0x8198ac8 +thumb_func 0x8198b34 +thumb_func 0x8198b60 +thumb_func 0x8198bb4 +thumb_func 0x8198c08 +thumb_func 0x8198d44 +thumb_func 0x8198d68 +thumb_func 0x8198d88 +thumb_func 0x8198da4 +thumb_func 0x8198e64 +thumb_func 0x8198ecc +thumb_func 0x8199008 +thumb_func 0x8199068 +thumb_func 0x81990e4 +thumb_func 0x8199170 +thumb_func 0x8199250 +thumb_func 0x8199314 +thumb_func 0x81993a0 +thumb_func 0x8199450 +thumb_func 0x81994f4 +thumb_func 0x81995a0 +thumb_func 0x8199640 +thumb_func 0x8199654 +thumb_func 0x8199668 +thumb_func 0x81996b8 +thumb_func 0x81996dc +thumb_func 0x8199728 +thumb_func 0x81997a0 +thumb_func 0x819981c +thumb_func 0x8199858 +thumb_func 0x8199888 +thumb_func 0x81998c8 +thumb_func 0x8199954 +thumb_func 0x81999d4 +thumb_func 0x8199a30 +thumb_func 0x8199a88 +thumb_func 0x8199afc +thumb_func 0x8199b84 +thumb_func 0x8199c0c +thumb_func 0x8199cbc +thumb_func 0x8199d18 +thumb_func 0x8199ef4 +thumb_func 0x8199f14 +thumb_func 0x8199f54 +thumb_func 0x8199f90 +thumb_func 0x8199fdc +thumb_func 0x819a0ec +thumb_func 0x819a168 +thumb_func 0x819a184 +thumb_func 0x819a198 +thumb_func 0x819a1b4 +thumb_func 0x819a64c +thumb_func 0x819a6b8 +thumb_func 0x819a7e0 +thumb_func 0x819a848 +thumb_func 0x819a8b0 +thumb_func 0x819a918 +thumb_func 0x819a980 +thumb_func 0x819aa4c +thumb_func 0x819aaa8 +thumb_func 0x819ac08 +thumb_func 0x819accc +thumb_func 0x819adc4 +thumb_func 0x819b018 +thumb_func 0x819b124 +thumb_func 0x819b2dc +thumb_func 0x819b404 +thumb_func 0x819b4e4 +thumb_func 0x819b574 +thumb_func 0x819b5f8 +thumb_func 0x819b654 +thumb_func 0x819b688 +thumb_func 0x819b708 +thumb_func 0x819b76c +thumb_func 0x819b7a0 +thumb_func 0x819b84c +thumb_func 0x819b8a8 +thumb_func 0x819b8c0 +thumb_func 0x819b8d4 +thumb_func 0x819b940 +thumb_func 0x819b970 +thumb_func 0x819b974 +thumb_func 0x819b99c +thumb_func 0x819ba58 +thumb_func 0x819bb08 +thumb_func 0x819bb1c +thumb_func 0x819bc14 +thumb_func 0x819bd28 +thumb_func 0x819bde8 +thumb_func 0x819beb8 +thumb_func 0x819bfbc +thumb_func 0x819c19c +thumb_func 0x819c250 +thumb_func 0x819c2b8 +thumb_func 0x819c31c +thumb_func 0x819c384 +thumb_func 0x819c4c8 +thumb_func 0x819c4e4 +thumb_func 0x819c4f8 +thumb_func 0x819c5f4 +thumb_func 0x819c6f0 +thumb_func 0x819c804 +thumb_func 0x819c8c4 +thumb_func 0x819c90c +thumb_func 0x819c95c +thumb_func 0x819c9bc +thumb_func 0x819ca1c +thumb_func 0x819cb28 +thumb_func 0x819cc3c +thumb_func 0x819cd4c +thumb_func 0x819ce14 +thumb_func 0x819d00c +thumb_func 0x819d270 +thumb_func 0x819d458 +thumb_func 0x819d6d4 +thumb_func 0x819d8c0 +thumb_func 0x819d8e8 +thumb_func 0x819d904 +thumb_func 0x819ddc8 +thumb_func 0x819e240 +thumb_func 0x819e310 +thumb_func 0x819e39c +thumb_func 0x819e3f0 +thumb_func 0x819e460 +thumb_func 0x819e4c8 +thumb_func 0x819e540 +thumb_func 0x819e5f4 +thumb_func 0x819e64c +thumb_func 0x819e6e8 +thumb_func 0x819e76c +thumb_func 0x819e7c8 +thumb_func 0x819e7fc +thumb_func 0x819e844 +thumb_func 0x819e864 +thumb_func 0x819e898 +thumb_func 0x819e93c +thumb_func 0x819e970 +thumb_func 0x819e9e4 +thumb_func 0x819ea40 +thumb_func 0x819eab0 +thumb_func 0x819eb18 +thumb_func 0x819eb80 +thumb_func 0x819ebf0 +thumb_func 0x819ed38 +thumb_func 0x819ee50 +thumb_func 0x819ef34 +thumb_func 0x819ef8c +thumb_func 0x819efb8 +thumb_func 0x819f000 +thumb_func 0x819f020 +thumb_func 0x819f070 +thumb_func 0x819f098 +thumb_func 0x819f0c8 +thumb_func 0x819f0f8 +thumb_func 0x819f1a0 +thumb_func 0x819f1f0 +thumb_func 0x819f2e4 +thumb_func 0x819f330 +thumb_func 0x819f374 +thumb_func 0x819f488 +thumb_func 0x819f4ec +thumb_func 0x819f540 +thumb_func 0x819f588 +thumb_func 0x819f6a0 +thumb_func 0x819f7cc +thumb_func 0x819f888 +thumb_func 0x819f928 +thumb_func 0x819f934 +thumb_func 0x819f978 +thumb_func 0x819fa88 +thumb_func 0x819faa0 +thumb_func 0x819fb18 +thumb_func 0x819fb38 +thumb_func 0x819fbd0 +thumb_func 0x819fc3c +thumb_func 0x819fe70 +thumb_func 0x81a0070 +thumb_func 0x81a00c4 +thumb_func 0x81a0160 +thumb_func 0x81a026c +thumb_func 0x81a03c4 +thumb_func 0x81a05d4 +thumb_func 0x81a064c +thumb_func 0x81a06b0 +thumb_func 0x81a06cc +thumb_func 0x81a0724 +thumb_func 0x81a0738 nullsub_111 +thumb_func 0x81a0744 +thumb_func 0x81a0804 +thumb_func 0x81a082c +thumb_func 0x81a0840 +thumb_func 0x81a084c +thumb_func 0x81a0858 +thumb_func 0x81a087c +thumb_func 0x81a0898 +thumb_func 0x81a08e8 +thumb_func 0x81a08fc +thumb_func 0x81a0938 +thumb_func 0x81a0b64 +thumb_func 0x81a0b88 +thumb_func 0x81a0c08 +thumb_func 0x81a0c48 +thumb_func 0x81a0c9c +thumb_func 0x81a0ebc +thumb_func 0x81a0ed4 +thumb_func 0x81a1104 +thumb_func 0x81a1124 +thumb_func 0x81a1130 +thumb_func 0x81a127c +thumb_func 0x81a1344 +thumb_func 0x81a1418 +thumb_func 0x81a14b0 +thumb_func 0x81a1544 +thumb_func 0x81a1550 +thumb_func 0x81a155c +thumb_func 0x81a1584 +thumb_func 0x81a15d4 +thumb_func 0x81a1604 +thumb_func 0x81a1628 +thumb_func 0x81a163c nullsub_110 +thumb_func 0x81a1648 +thumb_func 0x81a16d8 +thumb_func 0x81a1810 +thumb_func 0x81a197c +thumb_func 0x81a19c4 +thumb_func 0x81a19d0 +thumb_func 0x81a19e0 +thumb_func 0x81a1a40 +thumb_func 0x81a1acc +thumb_func 0x81a1af4 +thumb_func 0x81a1b8c +thumb_func 0x81a1bc4 +thumb_func 0x81a1bf4 +thumb_func 0x81a1c9c +thumb_func 0x81a1ddc +thumb_func 0x81a1e0c +thumb_func 0x81a1ea0 +thumb_func 0x81a1f30 +thumb_func 0x81a20d0 +thumb_func 0x81a2168 +thumb_func 0x81a21a0 +thumb_func 0x81a21d0 +thumb_func 0x81a2250 +thumb_func 0x81a2360 +thumb_func 0x81a238c +thumb_func 0x81a2420 +thumb_func 0x81a2490 +thumb_func 0x81a25fc +thumb_func 0x81a2698 +thumb_func 0x81a26d0 +thumb_func 0x81a26fc +thumb_func 0x81a2758 +thumb_func 0x81a2844 +thumb_func 0x81a2924 +thumb_func 0x81a2974 +thumb_func 0x81a29a4 +thumb_func 0x81a29d4 +thumb_func 0x81a2a78 +thumb_func 0x81a2b9c +thumb_func 0x81a2c38 +thumb_func 0x81a2c70 +thumb_func 0x81a2c9c +thumb_func 0x81a2cfc +thumb_func 0x81a2de4 +thumb_func 0x81a2f90 +thumb_func 0x81a337c +thumb_func 0x81a33a0 +thumb_func 0x81a3460 +thumb_func 0x81a36a0 +thumb_func 0x81a375c +thumb_func 0x81a3864 +thumb_func 0x81a3898 +thumb_func 0x81a38c8 +thumb_func 0x81a38fc +thumb_func 0x81a3ac8 +thumb_func 0x81a3af0 +thumb_func 0x81a3b38 +thumb_func 0x81a3b68 +thumb_func 0x81a3c0c +thumb_func 0x81a3cf0 +thumb_func 0x81a3eb0 +thumb_func 0x81a3ebc +thumb_func 0x81a4034 +thumb_func 0x81a409c +thumb_func 0x81a40c8 +thumb_func 0x81a4108 +thumb_func 0x81a4208 +thumb_func 0x81a4220 +thumb_func 0x81a42f4 +thumb_func 0x81a43f8 +thumb_func 0x81a44cc +thumb_func 0x81a45b0 +thumb_func 0x81a469c +thumb_func 0x81a46e4 +thumb_func 0x81a4710 +thumb_func 0x81a482c +thumb_func 0x81a48ac +thumb_func 0x81a48f8 +thumb_func 0x81a4944 +thumb_func 0x81a49a8 +thumb_func 0x81a49c8 +thumb_func 0x81a49f4 +thumb_func 0x81a4be0 +thumb_func 0x81a4c20 +thumb_func 0x81a4c50 +thumb_func 0x81a4ca0 +thumb_func 0x81a4ce0 +thumb_func 0x81a4d2c +thumb_func 0x81a4d98 +thumb_func 0x81a4e28 +thumb_func 0x81a4e3c nullsub_113 +thumb_func 0x81a4e48 +thumb_func 0x81a5148 +thumb_func 0x81a5288 +thumb_func 0x81a52a4 +thumb_func 0x81a52d8 +thumb_func 0x81a5308 +thumb_func 0x81a53d4 +thumb_func 0x81a545c +thumb_func 0x81a54a4 +thumb_func 0x81a5554 +thumb_func 0x81a55ec +thumb_func 0x81a56b4 +thumb_func 0x81a56f8 +thumb_func 0x81a5778 +thumb_func 0x81a57d0 +thumb_func 0x81a57e8 +thumb_func 0x81a5ad8 +thumb_func 0x81a5c0c +thumb_func 0x81a5c20 nullsub_1141 +thumb_func 0x81a5c2c +thumb_func 0x81a5d40 +thumb_func 0x81a5dec +thumb_func 0x81a5ed4 +thumb_func 0x81a5f18 nullsub_115 +thumb_func 0x81a5f1c nullsub_114 +thumb_func 0x81a5f20 +thumb_func 0x81a5f30 +thumb_func 0x81a5f3c +thumb_func 0x81a5f48 +thumb_func 0x81a6150 +thumb_func 0x81a6164 +thumb_func 0x81a625c +thumb_func 0x81a6584 +thumb_func 0x81a67a0 +thumb_func 0x81a6884 +thumb_func 0x81a693c +thumb_func 0x81a698c +thumb_func 0x81a69b4 +thumb_func 0x81a6a40 +thumb_func 0x81a6a68 +thumb_func 0x81a6c88 +thumb_func 0x81a6d08 +thumb_func 0x81a6d4c +thumb_func 0x81a6dbc +thumb_func 0x81a6dd4 +thumb_func 0x81a6de8 nullsub_117 +thumb_func 0x81a6df4 +thumb_func 0x81a6e08 +thumb_func 0x81a6ec0 +thumb_func 0x81a6fc8 +thumb_func 0x81a7138 +thumb_func 0x81a716c +thumb_func 0x81a7180 +thumb_func 0x81a718c +thumb_func 0x81a7198 +thumb_func 0x81a71e0 nullsub_118 +thumb_func 0x81a71e4 nullsub_119 +thumb_func 0x81a71e8 +thumb_func 0x81a724c +thumb_func 0x81a7260 +thumb_func 0x81a7288 +thumb_func 0x81a7300 +thumb_func 0x81a7314 +thumb_func 0x81a73a8 +thumb_func 0x81a73fc +thumb_func 0x81a74a8 +thumb_func 0x81a76f4 +thumb_func 0x81a776c +thumb_func 0x81a78d8 +thumb_func 0x81a7904 +thumb_func 0x81a7910 +thumb_func 0x81a7a80 +thumb_func 0x81a7ad4 +thumb_func 0x81a7b0c +thumb_func 0x81a7b68 +thumb_func 0x81a7be0 +thumb_func 0x81a7c44 +thumb_func 0x81a7c64 +thumb_func 0x81a7cb8 +thumb_func 0x81a7e10 +thumb_func 0x81a7e28 +thumb_func 0x81a7e5c +thumb_func 0x81a7fdc +thumb_func 0x81a7ffc +thumb_func 0x81a8024 +thumb_func 0x81a80f4 +thumb_func 0x81a8234 +thumb_func 0x81a826c +thumb_func 0x81a82d4 +thumb_func 0x81a8310 +thumb_func 0x81a83bc +thumb_func 0x81a83d8 +thumb_func 0x81a841c +thumb_func 0x81a8440 +thumb_func 0x81a8514 +thumb_func 0x81a8568 +thumb_func 0x81a85b0 +thumb_func 0x81a8630 +thumb_func 0x81a868c +thumb_func 0x81a86b4 +thumb_func 0x81a86dc +thumb_func 0x81a8720 +thumb_func 0x81a8878 +thumb_func 0x81a8ae0 +thumb_func 0x81a8b14 +thumb_func 0x81a8bfc +thumb_func 0x81a8c10 nullsub_1201 +thumb_func 0x81a8c1c +thumb_func 0x81a8cb8 +thumb_func 0x81a8dc8 +thumb_func 0x81a8eb4 +thumb_func 0x81a8efc +thumb_func 0x81a8f7c +thumb_func 0x81a8fd4 +thumb_func 0x81a9010 +thumb_func 0x81a9140 +thumb_func 0x81a918c +thumb_func 0x81a919c +thumb_func 0x81a9390 +thumb_func 0x81a93e4 +thumb_func 0x81a93fc +thumb_func 0x81a94d4 +thumb_func 0x81a9540 +thumb_func 0x81a9554 +thumb_func 0x81a95a0 +thumb_func 0x81a95ac +thumb_func 0x81a9710 +thumb_func 0x81a9820 +thumb_func 0x81a983c +thumb_func 0x81a987c +thumb_func 0x81a98bc +thumb_func 0x81a997c +thumb_func 0x81a9ba0 +thumb_func 0x81a9bb8 +thumb_func 0x81a9be4 +thumb_func 0x81a9c08 +thumb_func 0x81a9c40 +thumb_func 0x81a9c54 +thumb_func 0x81a9c74 +thumb_func 0x81a9c94 +thumb_func 0x81a9cb4 +thumb_func 0x81a9cf8 +thumb_func 0x81a9d08 +thumb_func 0x81a9df0 +thumb_func 0x81a9f50 +thumb_func 0x81aa070 +thumb_func 0x81aa0b4 +thumb_func 0x81aa110 +thumb_func 0x81aa250 +thumb_func 0x81aa3c0 +thumb_func 0x81aa4d8 +thumb_func 0x81aa588 +thumb_func 0x81aa6e4 +thumb_func 0x81aa75c +thumb_func 0x81aa7b8 +thumb_func 0x81aa7f4 +thumb_func 0x81aa858 +thumb_func 0x81aa8e8 +thumb_func 0x81aa914 +thumb_func 0x81aa928 +thumb_func 0x81aa954 +thumb_func 0x81aa968 +thumb_func 0x81aa978 +thumb_func 0x81aa98c +thumb_func 0x81aa9a0 +thumb_func 0x81aa9c8 +thumb_func 0x81aa9e8 +thumb_func 0x81aaa08 +thumb_func 0x81aaad4 +thumb_func 0x81aaaf0 +thumb_func 0x81aab04 +thumb_func 0x81aab30 +thumb_func 0x81aadc0 +thumb_func 0x81aae2c +thumb_func 0x81aaf60 +thumb_func 0x81aaf88 +thumb_func 0x81aafb0 +thumb_func 0x81ab10c +thumb_func 0x81ab1c0 +thumb_func 0x81ab290 +thumb_func 0x81ab414 +thumb_func 0x81ab4a0 +thumb_func 0x81ab4e8 +thumb_func 0x81ab508 +thumb_func 0x81ab568 +thumb_func 0x81ab5d0 +thumb_func 0x81ab600 +thumb_func 0x81ab648 +thumb_func 0x81ab674 +thumb_func 0x81ab6a4 +thumb_func 0x81ab6dc +thumb_func 0x81ab754 +thumb_func 0x81ab818 +thumb_func 0x81ab834 +thumb_func 0x81ab870 +thumb_func 0x81ab88c +thumb_func 0x81ab8d8 +thumb_func 0x81ab8f8 +thumb_func 0x81ab968 +thumb_func 0x81ab9e8 +thumb_func 0x81aba50 +thumb_func 0x81abab4 +thumb_func 0x81abc58 +thumb_func 0x81abc9c +thumb_func 0x81abcfc +thumb_func 0x81abd34 +thumb_func 0x81abec0 +thumb_func 0x81ac000 +thumb_func 0x81ac030 +thumb_func 0x81ac084 +thumb_func 0x81ac0ac +thumb_func 0x81ac184 +thumb_func 0x81ac25c +thumb_func 0x81ac354 +thumb_func 0x81ac408 +thumb_func 0x81ac8bc +thumb_func 0x81ac938 +thumb_func 0x81ac9a8 +thumb_func 0x81ac9fc +thumb_func 0x81aca70 +thumb_func 0x81acbf4 +thumb_func 0x81acc30 +thumb_func 0x81acc74 +thumb_func 0x81accec +thumb_func 0x81acd80 +thumb_func 0x81ace08 +thumb_func 0x81ace3c +thumb_func 0x81acec4 +thumb_func 0x81acf48 +thumb_func 0x81acfe4 +thumb_func 0x81ad070 +thumb_func 0x81ad0e8 +thumb_func 0x81ad104 +thumb_func 0x81ad148 +thumb_func 0x81ad170 +thumb_func 0x81ad190 +thumb_func 0x81ad1d4 +thumb_func 0x81ad204 +thumb_func 0x81ad214 +thumb_func 0x81ad2ac +thumb_func 0x81ad318 +thumb_func 0x81ad3d4 +thumb_func 0x81ad478 +thumb_func 0x81ad4dc +thumb_func 0x81ad4f4 +thumb_func 0x81ad528 +thumb_func 0x81ad57c +thumb_func 0x81ad5a8 +thumb_func 0x81ad660 +thumb_func 0x81ad6dc +thumb_func 0x81ad7d4 +thumb_func 0x81ad800 +thumb_func 0x81ad890 +thumb_func 0x81ad928 +thumb_func 0x81ada18 +thumb_func 0x81ada60 +thumb_func 0x81ada7c +thumb_func 0x81adb0c +thumb_func 0x81adb7c +thumb_func 0x81adba4 +thumb_func 0x81adc44 +thumb_func 0x81adc78 +thumb_func 0x81adc98 +thumb_func 0x81adcc8 +thumb_func 0x81adce8 +thumb_func 0x81add0c +thumb_func 0x81add2c +thumb_func 0x81add94 +thumb_func 0x81addfc +thumb_func 0x81ade14 +thumb_func 0x81ade5c +thumb_func 0x81ade9c +thumb_func 0x81aded0 +thumb_func 0x81adf10 +thumb_func 0x81adf40 +thumb_func 0x81adf7c +thumb_func 0x81adf8c +thumb_func 0x81adfd4 +thumb_func 0x81ae130 nullsub_121 +thumb_func 0x81ae134 +thumb_func 0x81ae25c +thumb_func 0x81ae288 +thumb_func 0x81ae2dc +thumb_func 0x81ae3a0 +thumb_func 0x81ae3e4 +thumb_func 0x81ae428 +thumb_func 0x81ae46c +thumb_func 0x81ae4a8 +thumb_func 0x81ae510 +thumb_func 0x81ae538 +thumb_func 0x81ae564 +thumb_func 0x81ae5ac +thumb_func 0x81ae68c +thumb_func 0x81ae740 +thumb_func 0x81ae7f8 +thumb_func 0x81ae8f0 +thumb_func 0x81ae950 +thumb_func 0x81ae9d8 +thumb_func 0x81aeac8 +thumb_func 0x81aec00 +thumb_func 0x81aecd8 +thumb_func 0x81aed00 +thumb_func 0x81aed50 +thumb_func 0x81aed64 +thumb_func 0x81aee34 +thumb_func 0x81aef3c +thumb_func 0x81aefc8 +thumb_func 0x81af058 +thumb_func 0x81af178 +thumb_func 0x81af1dc +thumb_func 0x81af274 +thumb_func 0x81af2f8 +thumb_func 0x81af358 +thumb_func 0x81af374 +thumb_func 0x81af39c +thumb_func 0x81af3bc nullsub_28 +thumb_func 0x81af3c0 +thumb_func 0x81af3fc +thumb_func 0x81af500 +thumb_func 0x81af66c +thumb_func 0x81af6b0 +thumb_func 0x81af708 +thumb_func 0x81af734 nullsub_120 +thumb_func 0x81af738 +thumb_func 0x81af840 +thumb_func 0x81af878 +thumb_func 0x81af8c8 +thumb_func 0x81af8e4 +thumb_func 0x81af900 +thumb_func 0x81af94c +thumb_func 0x81af95c +thumb_func 0x81af9a4 +thumb_func 0x81af9b4 +thumb_func 0x81af9c4 +thumb_func 0x81af9d4 +thumb_func 0x81afa04 +thumb_func 0x81afa34 +thumb_func 0x81afa64 +thumb_func 0x81afa78 +thumb_func 0x81afaa8 +thumb_func 0x81afabc +thumb_func 0x81afafc +thumb_func 0x81afb1c +thumb_func 0x81afb48 +thumb_func 0x81afc0c +thumb_func 0x81afcd4 +thumb_func 0x81afd10 +thumb_func 0x81afe88 +thumb_func 0x81afea4 +thumb_func 0x81afeb8 +thumb_func 0x81afee4 +thumb_func 0x81b0194 +thumb_func 0x81b01d0 +thumb_func 0x81b0204 +thumb_func 0x81b0228 +thumb_func 0x81b02a0 +thumb_func 0x81b0398 +thumb_func 0x81b03cc +thumb_func 0x81b0418 +thumb_func 0x81b04b8 +thumb_func 0x81b0620 +thumb_func 0x81b06e8 +thumb_func 0x81b0774 +thumb_func 0x81b07e0 +thumb_func 0x81b0838 +thumb_func 0x81b0870 +thumb_func 0x81b089c +thumb_func 0x81b08d4 +thumb_func 0x81b096c +thumb_func 0x81b09c4 +thumb_func 0x81b0a70 +thumb_func 0x81b0aa4 +thumb_func 0x81b0ab8 +thumb_func 0x81b0bc4 +thumb_func 0x81b0bf8 +thumb_func 0x81b0c9c +thumb_func 0x81b0dc8 +thumb_func 0x81b0e5c +thumb_func 0x81b0edc +thumb_func 0x81b0f20 +thumb_func 0x81b0f58 +thumb_func 0x81b0f90 +thumb_func 0x81b0fc8 +thumb_func 0x81b1024 +thumb_func 0x81b1030 +thumb_func 0x81b1040 +thumb_func 0x81b10bc +thumb_func 0x81b10dc +thumb_func 0x81b1274 +thumb_func 0x81b12a0 +thumb_func 0x81b1330 +thumb_func 0x81b13a4 +thumb_func 0x81b13d8 +thumb_func 0x81b1430 +thumb_func 0x81b14c8 +thumb_func 0x81b1524 +thumb_func 0x81b162c +thumb_func 0x81b17d0 +thumb_func 0x81b1814 +thumb_func 0x81b182c +thumb_func 0x81b185c +thumb_func 0x81b18a4 +thumb_func 0x81b18b8 +thumb_func 0x81b18ec +thumb_func 0x81b1954 +thumb_func 0x81b19a0 +thumb_func 0x81b19ec +thumb_func 0x81b1a38 +thumb_func 0x81b1a88 +thumb_func 0x81b1ad0 +thumb_func 0x81b1b18 +thumb_func 0x81b1b30 +thumb_func 0x81b1be8 +thumb_func 0x81b1c78 +thumb_func 0x81b1ce4 +thumb_func 0x81b1d2c +thumb_func 0x81b1d6c +thumb_func 0x81b1e04 +thumb_func 0x81b1e34 +thumb_func 0x81b1e5c +thumb_func 0x81b1e7c +thumb_func 0x81b1ee0 +thumb_func 0x81b1f18 +thumb_func 0x81b1f4c +thumb_func 0x81b1fa8 +thumb_func 0x81b2030 +thumb_func 0x81b2040 +thumb_func 0x81b206c +thumb_func 0x81b20f8 +thumb_func 0x81b2200 +thumb_func 0x81b2214 +thumb_func 0x81b22f4 +thumb_func 0x81b2358 +thumb_func 0x81b23bc +thumb_func 0x81b23e4 +thumb_func 0x81b26d8 +thumb_func 0x81b270c +thumb_func 0x81b2764 +thumb_func 0x81b27dc +thumb_func 0x81b2828 +thumb_func 0x81b2890 +thumb_func 0x81b2970 +thumb_func 0x81b29d8 +thumb_func 0x81b2a08 +thumb_func 0x81b2a70 +thumb_func 0x81b2abc +thumb_func 0x81b2af8 +thumb_func 0x81b2c3c +thumb_func 0x81b2cb0 +thumb_func 0x81b2cd8 +thumb_func 0x81b2dd0 +thumb_func 0x81b2e34 +thumb_func 0x81b2f90 +thumb_func 0x81b2fdc +thumb_func 0x81b3004 +thumb_func 0x81b3034 +thumb_func 0x81b3054 +thumb_func 0x81b30b4 +thumb_func 0x81b31dc +thumb_func 0x81b32a8 +thumb_func 0x81b339c +thumb_func 0x81b33d0 +thumb_func 0x81b349c +thumb_func 0x81b34c8 +thumb_func 0x81b3534 +thumb_func 0x81b357c +thumb_func 0x81b35d8 +thumb_func 0x81b3778 +thumb_func 0x81b37e0 +thumb_func 0x81b38ac +thumb_func 0x81b3900 +thumb_func 0x81b3960 +thumb_func 0x81b39e8 +thumb_func 0x81b3b00 +thumb_func 0x81b3bb0 +thumb_func 0x81b3c7c +thumb_func 0x81b3d1c +thumb_func 0x81b3d74 +thumb_func 0x81b3dd4 +thumb_func 0x81b3e38 +thumb_func 0x81b3e64 +thumb_func 0x81b3e90 +thumb_func 0x81b3f70 +thumb_func 0x81b3ff0 +thumb_func 0x81b4048 +thumb_func 0x81b407c +thumb_func 0x81b419c +thumb_func 0x81b41cc +thumb_func 0x81b4218 +thumb_func 0x81b42c4 +thumb_func 0x81b433c +thumb_func 0x81b43c4 +thumb_func 0x81b4480 +thumb_func 0x81b4548 +thumb_func 0x81b457c +thumb_func 0x81b4628 +thumb_func 0x81b46a8 +thumb_func 0x81b470c +thumb_func 0x81b4738 +thumb_func 0x81b4780 +thumb_func 0x81b47c0 +thumb_func 0x81b480c +thumb_func 0x81b4840 +thumb_func 0x81b4900 +thumb_func 0x81b4934 +thumb_func 0x81b4a18 +thumb_func 0x81b4acc +thumb_func 0x81b4b2c +thumb_func 0x81b4c28 +thumb_func 0x81b4c48 +thumb_func 0x81b4d4c +thumb_func 0x81b4d68 +thumb_func 0x81b4e74 +thumb_func 0x81b4f84 +thumb_func 0x81b509c +thumb_func 0x81b50d0 +thumb_func 0x81b5110 +thumb_func 0x81b5314 +thumb_func 0x81b5344 +thumb_func 0x81b5378 +thumb_func 0x81b53d8 +thumb_func 0x81b53f0 +thumb_func 0x81b542c +thumb_func 0x81b5454 +thumb_func 0x81b547c +thumb_func 0x81b54a4 +thumb_func 0x81b54c0 +thumb_func 0x81b5504 +thumb_func 0x81b5524 +thumb_func 0x81b5548 +thumb_func 0x81b5574 +thumb_func 0x81b5590 +thumb_func 0x81b55f8 +thumb_func 0x81b5614 +thumb_func 0x81b5654 +thumb_func 0x81b56cc +thumb_func 0x81b572c +thumb_func 0x81b57d8 +thumb_func 0x81b580c +thumb_func 0x81b587c +thumb_func 0x81b58a8 +thumb_func 0x81b58b4 +thumb_func 0x81b58e8 +thumb_func 0x81b5934 +thumb_func 0x81b5950 +thumb_func 0x81b59d0 +thumb_func 0x81b59ec +thumb_func 0x81b5a90 +thumb_func 0x81b5b14 +thumb_func 0x81b5b6c +thumb_func 0x81b5b94 +thumb_func 0x81b5bd4 +thumb_func 0x81b5c14 +thumb_func 0x81b5c38 +thumb_func 0x81b5c5c +thumb_func 0x81b5ce0 +thumb_func 0x81b5d04 +thumb_func 0x81b5d38 +thumb_func 0x81b5d84 +thumb_func 0x81b5d9c +thumb_func 0x81b5e00 +thumb_func 0x81b5e1c +thumb_func 0x81b5ef4 +thumb_func 0x81b5f20 +thumb_func 0x81b5f70 +thumb_func 0x81b5fb0 +thumb_func 0x81b6170 +thumb_func 0x81b61a4 +thumb_func 0x81b61c0 +thumb_func 0x81b6228 +thumb_func 0x81b63cc +thumb_func 0x81b6434 +thumb_func 0x81b6468 +thumb_func 0x81b65bc +thumb_func 0x81b663c +thumb_func 0x81b66b0 +thumb_func 0x81b677c +thumb_func 0x81b67c4 +thumb_func 0x81b6848 +thumb_func 0x81b687c +thumb_func 0x81b68b4 +thumb_func 0x81b6978 +thumb_func 0x81b69b4 +thumb_func 0x81b69cc +thumb_func 0x81b69fc +thumb_func 0x81b6a2c +thumb_func 0x81b6a50 +thumb_func 0x81b6a7c +thumb_func 0x81b6b68 +thumb_func 0x81b6c10 +thumb_func 0x81b6c48 +thumb_func 0x81b6ca4 +thumb_func 0x81b6cd8 +thumb_func 0x81b6d38 +thumb_func 0x81b6d68 +thumb_func 0x81b6da0 +thumb_func 0x81b6dcc +thumb_func 0x81b6e04 +thumb_func 0x81b6e84 +thumb_func 0x81b6ee0 +thumb_func 0x81b6f44 +thumb_func 0x81b6f78 +thumb_func 0x81b7090 +thumb_func 0x81b70b0 +thumb_func 0x81b71f8 +thumb_func 0x81b7280 +thumb_func 0x81b72e0 +thumb_func 0x81b7328 +thumb_func 0x81b7374 +thumb_func 0x81b73b0 +thumb_func 0x81b7458 +thumb_func 0x81b74bc +thumb_func 0x81b7528 +thumb_func 0x81b75b8 +thumb_func 0x81b7644 +thumb_func 0x81b768c +thumb_func 0x81b76cc +thumb_func 0x81b77f0 +thumb_func 0x81b78b4 +thumb_func 0x81b7918 +thumb_func 0x81b7990 +thumb_func 0x81b7af0 +thumb_func 0x81b7bd4 +thumb_func 0x81b7c00 +thumb_func 0x81b7c4c +thumb_func 0x81b7ce4 +thumb_func 0x81b7d28 +thumb_func 0x81b7da4 +thumb_func 0x81b7dec +thumb_func 0x81b7e48 +thumb_func 0x81b7ed0 +thumb_func 0x81b7f40 +thumb_func 0x81b7f74 +thumb_func 0x81b8058 +thumb_func 0x81b8090 +thumb_func 0x81b80bc +thumb_func 0x81b80e8 +thumb_func 0x81b8114 +thumb_func 0x81b81b8 +thumb_func 0x81b81f8 +thumb_func 0x81b820c +thumb_func 0x81b824c +thumb_func 0x81b82fc +thumb_func 0x81b8410 +thumb_func 0x81b843c +thumb_func 0x81b8488 +thumb_func 0x81b84d0 +thumb_func 0x81b84fc +thumb_func 0x81b8528 +thumb_func 0x81b855c +thumb_func 0x81b85a4 +thumb_func 0x81b85cc +thumb_func 0x81b85f8 +thumb_func 0x81b8624 +thumb_func 0x81b864c +thumb_func 0x81b8690 +thumb_func 0x81b86cc +thumb_func 0x81b871c +thumb_func 0x81b8908 +thumb_func 0x81b8928 +thumb_func 0x81b8a04 +thumb_func 0x81b8a28 +thumb_func 0x81b8b20 +thumb_func 0x81b8bd8 +thumb_func 0x81b8c0c +thumb_func 0x81b8c50 +thumb_func 0x81b8c8c +thumb_func 0x81b8cd0 +thumb_func 0x81b8d20 +thumb_func 0x81b8d70 +thumb_func 0x81b8de0 +thumb_func 0x81b8df0 +thumb_func 0x81b8e1c +thumb_func 0x81b8e54 +thumb_func 0x81b8ee0 +thumb_func 0x81b8f10 +thumb_func 0x81b8f34 +thumb_func 0x81b8fc8 +thumb_func 0x81b8ff4 +thumb_func 0x81b9030 +thumb_func 0x81b9068 +thumb_func 0x81b9080 +thumb_func 0x81b90a4 +thumb_func 0x81b90c4 +thumb_func 0x81b9110 +thumb_func 0x81b9150 +thumb_func 0x81b9170 +thumb_func 0x81b91bc +thumb_func 0x81b91dc +thumb_func 0x81b9228 +thumb_func 0x81b9280 +thumb_func 0x81b92c0 +thumb_func 0x81b92e0 +thumb_func 0x81b932c +thumb_func 0x81b9370 +thumb_func 0x81b93b8 +thumb_func 0x81b9410 +thumb_func 0x81b947c +thumb_func 0x81b957c +thumb_func 0x81b95b8 +thumb_func 0x81b9654 +thumb_func 0x81b9668 nullsub_123 +thumb_func 0x81b9674 +thumb_func 0x81b96c8 +thumb_func 0x81b96e4 +thumb_func 0x81b9700 +thumb_func 0x81b9730 +thumb_func 0x81b975c +thumb_func 0x81b97a0 +thumb_func 0x81b97c8 +thumb_func 0x81b9820 +thumb_func 0x81b9834 nullsub_1241 +thumb_func 0x81b9840 +thumb_func 0x81b9894 +thumb_func 0x81b98b0 +thumb_func 0x81b98cc +thumb_func 0x81b9910 +thumb_func 0x81b9938 +thumb_func 0x81b9990 +thumb_func 0x81b99a8 +thumb_func 0x81b99bc nullsub_125 +thumb_func 0x81b99c8 +thumb_func 0x81b9a1c +thumb_func 0x81b9a38 +thumb_func 0x81b9a54 +thumb_func 0x81b9a98 +thumb_func 0x81b9ac0 +thumb_func 0x81b9b18 +thumb_func 0x81b9b28 +thumb_func 0x81b9b34 +thumb_func 0x81b9b60 +thumb_func 0x81b9ce0 +thumb_func 0x81b9ef0 +thumb_func 0x81ba308 +thumb_func 0x81ba36c +thumb_func 0x81ba3a8 +thumb_func 0x81ba798 +thumb_func 0x81ba7e4 +thumb_func 0x81ba808 +thumb_func 0x81ba8cc +thumb_func 0x81ba8e0 +thumb_func 0x81ba9cc +thumb_func 0x81ba9e4 +thumb_func 0x81baa20 +thumb_func 0x81baa8c nullsub_124 +thumb_func 0x81baa90 +thumb_func 0x81baaac +thumb_func 0x81baafc +thumb_func 0x81bab34 +thumb_func 0x81bab9c +thumb_func 0x81babe4 +thumb_func 0x81bacc8 +thumb_func 0x81bae70 +thumb_func 0x81baeb0 +thumb_func 0x81baf20 +thumb_func 0x81baf38 +thumb_func 0x81bb0b0 +thumb_func 0x81bb180 +thumb_func 0x81bb2c4 +thumb_func 0x81bb324 +thumb_func 0x81bb3dc +thumb_func 0x81bb428 +thumb_func 0x81bb4c4 +thumb_func 0x81bb534 +thumb_func 0x81bb54c +thumb_func 0x81bb5c8 +thumb_func 0x81bb63c +thumb_func 0x81bb690 +thumb_func 0x81bb784 +thumb_func 0x81bb828 +thumb_func 0x81bb8a0 +thumb_func 0x81bb8d0 +thumb_func 0x81bb900 +thumb_func 0x81bb974 +thumb_func 0x81bc120 +thumb_func 0x81bc12c +thumb_func 0x81bc184 +thumb_func 0x81bcb80 +thumb_func 0x81bcbf4 +thumb_func 0x81bcd10 +thumb_func 0x81bcd80 +thumb_func 0x81bcefc +thumb_func 0x81bcf8c +thumb_func 0x81bd018 +thumb_func 0x81bd258 +thumb_func 0x81bd264 +thumb_func 0x81bd310 +thumb_func 0x81bd3fc +thumb_func 0x81bd408 +thumb_func 0x81bd414 +thumb_func 0x81bd420 +thumb_func 0x81bd42c +thumb_func 0x81bd564 +thumb_func 0x81bd6e8 +thumb_func 0x81bd73c +thumb_func 0x81bd748 +thumb_func 0x81bd758 +thumb_func 0x81bd764 +thumb_func 0x81bd80c +thumb_func 0x81bd818 +thumb_func 0x81bd8a0 +thumb_func 0x81bd8ac +thumb_func 0x81bd99c +thumb_func 0x81bda38 +thumb_func 0x81bdab0 +thumb_func 0x81bdb18 +thumb_func 0x81bdb24 +thumb_func 0x81bdb30 +thumb_func 0x81bdb3c +thumb_func 0x81bdb48 +thumb_func 0x81bdb54 +thumb_func 0x81bdb60 +thumb_func 0x81bdb6c +thumb_func 0x81bdb78 +thumb_func 0x81bdb84 +thumb_func 0x81bdba0 +thumb_func 0x81bdbd8 +thumb_func 0x81bdbf0 +thumb_func 0x81bdc18 +thumb_func 0x81bdc88 +thumb_func 0x81bdc94 +thumb_func 0x81bdcd8 +thumb_func 0x81bdd34 +thumb_func 0x81bdd74 +thumb_func 0x81bdda8 +thumb_func 0x81bdf64 +thumb_func 0x81be070 +thumb_func 0x81be134 +thumb_func 0x81be17c +thumb_func 0x81be1cc +thumb_func 0x81be1d8 +thumb_func 0x81be238 +thumb_func 0x81be2a0 +thumb_func 0x81be2ac +thumb_func 0x81be2b8 +thumb_func 0x81be304 nullsub_127 +thumb_func 0x81be308 +thumb_func 0x81be334 +thumb_func 0x81be348 +thumb_func 0x81be354 +thumb_func 0x81be3c8 +thumb_func 0x81be438 +thumb_func 0x81be490 +thumb_func 0x81be4a4 +thumb_func 0x81be538 +thumb_func 0x81be59c +thumb_func 0x81be604 +thumb_func 0x81be630 +thumb_func 0x81be65c +thumb_func 0x81be69c +thumb_func 0x81be6bc +thumb_func 0x81be774 +thumb_func 0x81be7c0 +thumb_func 0x81be7f0 +thumb_func 0x81be804 +thumb_func 0x81be818 +thumb_func 0x81be82c +thumb_func 0x81be850 +thumb_func 0x81be890 +thumb_func 0x81be9ec +thumb_func 0x81becc4 +thumb_func 0x81beee4 +thumb_func 0x81bef54 +thumb_func 0x81bf020 +thumb_func 0x81bf0b0 +thumb_func 0x81bf0bc +thumb_func 0x81bf280 +thumb_func 0x81bf3cc +thumb_func 0x81bf414 +thumb_func 0x81bf430 +thumb_func 0x81bf444 +thumb_func 0x81bf470 +thumb_func 0x81bf784 +thumb_func 0x81bf810 +thumb_func 0x81bf9f8 +thumb_func 0x81bfa50 +thumb_func 0x81bfc7c +thumb_func 0x81bfd68 +thumb_func 0x81bfd80 +thumb_func 0x81bfdb8 +thumb_func 0x81bfe44 +thumb_func 0x81bff38 +thumb_func 0x81c0038 +thumb_func 0x81c022c +thumb_func 0x81c02e8 +thumb_func 0x81c0384 +thumb_func 0x81c03c0 +thumb_func 0x81c04c0 +thumb_func 0x81c059c +thumb_func 0x81c05f8 +thumb_func 0x81c0678 +thumb_func 0x81c0758 +thumb_func 0x81c077c +thumb_func 0x81c0878 +thumb_func 0x81c0974 +thumb_func 0x81c09a4 +thumb_func 0x81c0b28 +thumb_func 0x81c0bd0 +thumb_func 0x81c0c18 +thumb_func 0x81c0ce4 +thumb_func 0x81c0df0 +thumb_func 0x81c0f20 +thumb_func 0x81c1050 +thumb_func 0x81c1080 +thumb_func 0x81c11dc +thumb_func 0x81c1228 +thumb_func 0x81c1274 +thumb_func 0x81c14c8 +thumb_func 0x81c14d4 +thumb_func 0x81c15e4 +thumb_func 0x81c16d8 +thumb_func 0x81c1754 +thumb_func 0x81c1830 +thumb_func 0x81c18b4 +thumb_func 0x81c19a8 +thumb_func 0x81c1a24 +thumb_func 0x81c1ac8 +thumb_func 0x81c1b5c +thumb_func 0x81c1bc0 +thumb_func 0x81c1c00 +thumb_func 0x81c1d40 +thumb_func 0x81c1e58 +thumb_func 0x81c1e88 +thumb_func 0x81c1ed8 +thumb_func 0x81c1f1c +thumb_func 0x81c1f5c +thumb_func 0x81c20d8 +thumb_func 0x81c2120 +thumb_func 0x81c219c +thumb_func 0x81c21cc +thumb_func 0x81c23d4 +thumb_func 0x81c251c +thumb_func 0x81c2620 +thumb_func 0x81c265c +thumb_func 0x81c2690 +thumb_func 0x81c26c4 +thumb_func 0x81c26d8 +thumb_func 0x81c26f4 +thumb_func 0x81c2734 +thumb_func 0x81c27b8 +thumb_func 0x81c2828 +thumb_func 0x81c288c +thumb_func 0x81c28e0 +thumb_func 0x81c2934 +thumb_func 0x81c2a4c +thumb_func 0x81c2a78 +thumb_func 0x81c2ac4 +thumb_func 0x81c2af4 +thumb_func 0x81c2bb4 +thumb_func 0x81c2bd8 +thumb_func 0x81c2bfc +thumb_func 0x81c2c54 +thumb_func 0x81c2c84 +thumb_func 0x81c2cb4 +thumb_func 0x81c2d28 +thumb_func 0x81c2dbc +thumb_func 0x81c2de0 +thumb_func 0x81c2e70 +thumb_func 0x81c2f08 +thumb_func 0x81c2f74 +thumb_func 0x81c303c +thumb_func 0x81c3068 +thumb_func 0x81c30f0 +thumb_func 0x81c311c +thumb_func 0x81c31d8 +thumb_func 0x81c3244 +thumb_func 0x81c335c +thumb_func 0x81c3498 +thumb_func 0x81c3544 +thumb_func 0x81c3590 +thumb_func 0x81c3668 +thumb_func 0x81c36d4 +thumb_func 0x81c377c +thumb_func 0x81c3888 +thumb_func 0x81c38c4 +thumb_func 0x81c3978 +thumb_func 0x81c39b4 +thumb_func 0x81c39e4 +thumb_func 0x81c3a28 +thumb_func 0x81c3a70 +thumb_func 0x81c3aa4 +thumb_func 0x81c3aec +thumb_func 0x81c3b3c +thumb_func 0x81c3bc4 +thumb_func 0x81c3c44 +thumb_func 0x81c3ca8 +thumb_func 0x81c3d14 +thumb_func 0x81c3d8c +thumb_func 0x81c3e18 +thumb_func 0x81c3f80 +thumb_func 0x81c3fbc +thumb_func 0x81c404c +thumb_func 0x81c4094 +thumb_func 0x81c40a0 +thumb_func 0x81c40bc +thumb_func 0x81c40f8 +thumb_func 0x81c418c +thumb_func 0x81c41e8 +thumb_func 0x81c4210 +thumb_func 0x81c4290 +thumb_func 0x81c4300 +thumb_func 0x81c43ec +thumb_func 0x81c4468 +thumb_func 0x81c448c +thumb_func 0x81c4520 +thumb_func 0x81c4578 +thumb_func 0x81c4698 +thumb_func 0x81c46bc +thumb_func 0x81c46d8 +thumb_func 0x81c46f4 +thumb_func 0x81c4704 +thumb_func 0x81c4718 +thumb_func 0x81c472c +thumb_func 0x81c474c +thumb_func 0x81c478c +thumb_func 0x81c47a0 +thumb_func 0x81c4824 +thumb_func 0x81c4840 +thumb_func 0x81c4854 +thumb_func 0x81c4880 +thumb_func 0x81c49e4 +thumb_func 0x81c4a40 +thumb_func 0x81c4b1c +thumb_func 0x81c4c14 +thumb_func 0x81c4c68 +thumb_func 0x81c4d20 +thumb_func 0x81c4dd4 +thumb_func 0x81c4e70 +thumb_func 0x81c4ec8 +thumb_func 0x81c4ef4 +thumb_func 0x81c4f34 +thumb_func 0x81c4fa4 +thumb_func 0x81c5068 +thumb_func 0x81c5120 +thumb_func 0x81c51b8 +thumb_func 0x81c521c +thumb_func 0x81c5294 +thumb_func 0x81c52b4 +thumb_func 0x81c5310 +thumb_func 0x81c5348 +thumb_func 0x81c53c4 +thumb_func 0x81c551c +thumb_func 0x81c56a8 +thumb_func 0x81c5724 +thumb_func 0x81c5794 +thumb_func 0x81c5810 +thumb_func 0x81c5998 +thumb_func 0x81c59d4 +thumb_func 0x81c5a0c +thumb_func 0x81c5a84 +thumb_func 0x81c5ac8 +thumb_func 0x81c5af0 +thumb_func 0x81c5b7c +thumb_func 0x81c5bfc +thumb_func 0x81c5c30 +thumb_func 0x81c5c7c +thumb_func 0x81c5cc4 +thumb_func 0x81c5d5c +thumb_func 0x81c5ddc +thumb_func 0x81c5e58 +thumb_func 0x81c5ebc +thumb_func 0x81c5efc +thumb_func 0x81c5f24 +thumb_func 0x81c5f5c +thumb_func 0x81c5fac +thumb_func 0x81c5fdc +thumb_func 0x81c60c8 +thumb_func 0x81c617c +thumb_func 0x81c622c +thumb_func 0x81c62ac +thumb_func 0x81c63f0 +thumb_func 0x81c6454 +thumb_func 0x81c64ac +thumb_func 0x81c64c8 +thumb_func 0x81c64e4 +thumb_func 0x81c652c +thumb_func 0x81c656c +thumb_func 0x81c6598 +thumb_func 0x81c65dc +thumb_func 0x81c65f8 +thumb_func 0x81c6658 +thumb_func 0x81c66b4 +thumb_func 0x81c66e0 +thumb_func 0x81c6728 +thumb_func 0x81c6750 +thumb_func 0x81c67b8 +thumb_func 0x81c67cc +thumb_func 0x81c67e8 +thumb_func 0x81c680c +thumb_func 0x81c6838 +thumb_func 0x81c6898 +thumb_func 0x81c68e4 +thumb_func 0x81c6930 +thumb_func 0x81c69a4 +thumb_func 0x81c6a10 +thumb_func 0x81c6a64 +thumb_func 0x81c6a7c +thumb_func 0x81c6af4 +thumb_func 0x81c6b20 +thumb_func 0x81c6b48 +thumb_func 0x81c6bc0 +thumb_func 0x81c6bd8 +thumb_func 0x81c6bec +thumb_func 0x81c6d2c +thumb_func 0x81c6d48 +thumb_func 0x81c6d94 +thumb_func 0x81c6da0 +thumb_func 0x81c6dac nullsub_128 +thumb_func 0x81c6db4 +thumb_func 0x81c6dc0 +thumb_func 0x81c6dcc +thumb_func 0x81c6ddc +thumb_func 0x81c6dfc +thumb_func 0x81c6e10 +thumb_func 0x81c6e3c +thumb_func 0x81c6e48 +thumb_func 0x81c6e54 +thumb_func 0x81c6e6c +thumb_func 0x81c6e78 +thumb_func 0x81c6e84 +thumb_func 0x81c6ebc +thumb_func 0x81c6ed0 +thumb_func 0x81c6ef8 +thumb_func 0x81c6f24 +thumb_func 0x81c6ff4 +thumb_func 0x81c7010 +thumb_func 0x81c702c +thumb_func 0x81c703c nullsub_129 +thumb_func 0x81c7040 +thumb_func 0x81c7060 +thumb_func 0x81c7080 +thumb_func 0x81c7094 +thumb_func 0x81c70dc +thumb_func 0x81c7104 +thumb_func 0x81c711c +thumb_func 0x81c7150 +thumb_func 0x81c717c +thumb_func 0x81c7280 +thumb_func 0x81c72f4 +thumb_func 0x81c7300 +thumb_func 0x81c7314 +thumb_func 0x81c7334 +thumb_func 0x81c7364 +thumb_func 0x81c73a8 +thumb_func 0x81c73b8 +thumb_func 0x81c73e8 +thumb_func 0x81c7454 +thumb_func 0x81c7474 +thumb_func 0x81c748c +thumb_func 0x81c74a4 +thumb_func 0x81c74e8 +thumb_func 0x81c75bc +thumb_func 0x81c75d4 +thumb_func 0x81c7618 +thumb_func 0x81c76cc +thumb_func 0x81c7748 +thumb_func 0x81c776c +thumb_func 0x81c7784 +thumb_func 0x81c77b8 +thumb_func 0x81c77e4 +thumb_func 0x81c7830 +thumb_func 0x81c787c +thumb_func 0x81c78b8 +thumb_func 0x81c78f4 +thumb_func 0x81c7924 +thumb_func 0x81c797c +thumb_func 0x81c79cc +thumb_func 0x81c79dc +thumb_func 0x81c79fc +thumb_func 0x81c7a8c +thumb_func 0x81c7b04 +thumb_func 0x81c7b24 +thumb_func 0x81c7b54 +thumb_func 0x81c7b88 +thumb_func 0x81c7b98 +thumb_func 0x81c7c4c +thumb_func 0x81c7c68 +thumb_func 0x81c7c90 +thumb_func 0x81c7d10 +thumb_func 0x81c7d48 +thumb_func 0x81c7dd8 +thumb_func 0x81c7dec +thumb_func 0x81c7e00 +thumb_func 0x81c7e34 +thumb_func 0x81c7e74 +thumb_func 0x81c7eb4 +thumb_func 0x81c7f04 +thumb_func 0x81c7f18 +thumb_func 0x81c7f24 +thumb_func 0x81c7f54 +thumb_func 0x81c7f98 +thumb_func 0x81c7fc8 +thumb_func 0x81c7fe0 +thumb_func 0x81c8018 +thumb_func 0x81c8100 +thumb_func 0x81c81d0 +thumb_func 0x81c8318 +thumb_func 0x81c840c +thumb_func 0x81c845c +thumb_func 0x81c8484 +thumb_func 0x81c84f4 +thumb_func 0x81c8510 +thumb_func 0x81c8564 +thumb_func 0x81c85fc +thumb_func 0x81c867c +thumb_func 0x81c86a4 +thumb_func 0x81c8794 +thumb_func 0x81c87bc +thumb_func 0x81c8834 +thumb_func 0x81c8854 +thumb_func 0x81c88a8 +thumb_func 0x81c88fc +thumb_func 0x81c8914 +thumb_func 0x81c8960 +thumb_func 0x81c8a14 +thumb_func 0x81c8a44 +thumb_func 0x81c8a78 +thumb_func 0x81c8ab0 +thumb_func 0x81c8ae4 +thumb_func 0x81c8b14 +thumb_func 0x81c8b48 +thumb_func 0x81c8b98 +thumb_func 0x81c8bc8 +thumb_func 0x81c8bdc +thumb_func 0x81c8be8 +thumb_func 0x81c8ccc +thumb_func 0x81c8d34 +thumb_func 0x81c8dac +thumb_func 0x81c8de8 +thumb_func 0x81c8ea8 +thumb_func 0x81c8f44 +thumb_func 0x81c8f50 +thumb_func 0x81c8f5c +thumb_func 0x81c8f68 +thumb_func 0x81c8f6c +thumb_func 0x81c8fa4 +thumb_func 0x81c8fc0 +thumb_func 0x81c9040 +thumb_func 0x81c9050 +thumb_func 0x81c9060 +thumb_func 0x81c9070 +thumb_func 0x81c9080 +thumb_func 0x81c90d0 +thumb_func 0x81c90ec +thumb_func 0x81c9104 +thumb_func 0x81c913c +thumb_func 0x81c916c +thumb_func 0x81c917c nullsub_1301 +thumb_func 0x81c9180 +thumb_func 0x81c91a8 +thumb_func 0x81c91bc +thumb_func 0x81c9418 +thumb_func 0x81c9454 +thumb_func 0x81c94f0 +thumb_func 0x81c9584 +thumb_func 0x81c9604 +thumb_func 0x81c9674 +thumb_func 0x81c96a4 +thumb_func 0x81c96d4 +thumb_func 0x81c9770 +thumb_func 0x81c9798 +thumb_func 0x81c97d8 +thumb_func 0x81c9840 +thumb_func 0x81c9874 +thumb_func 0x81c9898 +thumb_func 0x81c99b8 +thumb_func 0x81c9a24 +thumb_func 0x81c9a88 +thumb_func 0x81c9ad0 +thumb_func 0x81c9b08 +thumb_func 0x81c9b60 +thumb_func 0x81c9bf4 +thumb_func 0x81c9c20 +thumb_func 0x81c9c58 +thumb_func 0x81c9d2c +thumb_func 0x81c9dec +thumb_func 0x81c9e44 +thumb_func 0x81c9e58 +thumb_func 0x81c9e8c +thumb_func 0x81c9ec0 +thumb_func 0x81c9f1c +thumb_func 0x81c9f70 +thumb_func 0x81c9f80 +thumb_func 0x81c9fa0 +thumb_func 0x81c9fb4 +thumb_func 0x81c9fc4 +thumb_func 0x81c9ffc +thumb_func 0x81ca010 +thumb_func 0x81ca048 +thumb_func 0x81ca05c +thumb_func 0x81ca0c0 +thumb_func 0x81ca0d8 +thumb_func 0x81ca140 +thumb_func 0x81ca174 +thumb_func 0x81ca184 +thumb_func 0x81ca198 +thumb_func 0x81ca1e8 +thumb_func 0x81ca288 +thumb_func 0x81ca294 +thumb_func 0x81ca2d0 +thumb_func 0x81ca2e4 +thumb_func 0x81ca2f0 +thumb_func 0x81ca3a8 +thumb_func 0x81ca3b0 +thumb_func 0x81ca464 +thumb_func 0x81ca4a4 +thumb_func 0x81ca4cc +thumb_func 0x81ca5b4 +thumb_func 0x81ca5d4 +thumb_func 0x81ca5e4 +thumb_func 0x81ca5f4 +thumb_func 0x81ca604 +thumb_func 0x81ca618 +thumb_func 0x81ca640 +thumb_func 0x81ca650 +thumb_func 0x81ca668 +thumb_func 0x81ca6b0 +thumb_func 0x81ca71c +thumb_func 0x81ca77c +thumb_func 0x81ca7c0 +thumb_func 0x81ca7d0 +thumb_func 0x81ca7f4 +thumb_func 0x81ca86c +thumb_func 0x81ca888 +thumb_func 0x81ca8cc +thumb_func 0x81ca910 +thumb_func 0x81ca974 +thumb_func 0x81caa04 +thumb_func 0x81caa40 +thumb_func 0x81caa70 +thumb_func 0x81caa80 nullsub_131 +thumb_func 0x81caa84 +thumb_func 0x81caab4 +thumb_func 0x81caac8 +thumb_func 0x81cacb4 +thumb_func 0x81cad20 +thumb_func 0x81cad8c +thumb_func 0x81cadf8 +thumb_func 0x81cae64 +thumb_func 0x81caea8 +thumb_func 0x81caed0 +thumb_func 0x81caf14 +thumb_func 0x81caf98 +thumb_func 0x81caffc +thumb_func 0x81cb0b0 +thumb_func 0x81cb13c +thumb_func 0x81cb1dc +thumb_func 0x81cb248 +thumb_func 0x81cb2e8 +thumb_func 0x81cb32c +thumb_func 0x81cb38c +thumb_func 0x81cb3a8 +thumb_func 0x81cb3d4 +thumb_func 0x81cb45c +thumb_func 0x81cb4b8 +thumb_func 0x81cb4e8 +thumb_func 0x81cb530 +thumb_func 0x81cb564 +thumb_func 0x81cb57c +thumb_func 0x81cb5a8 +thumb_func 0x81cb5c0 +thumb_func 0x81cb5f8 +thumb_func 0x81cb640 +thumb_func 0x81cb6ac +thumb_func 0x81cb710 +thumb_func 0x81cb73c +thumb_func 0x81cb750 +thumb_func 0x81cb760 +thumb_func 0x81cb780 +thumb_func 0x81cb7a4 +thumb_func 0x81cb7e8 +thumb_func 0x81cb81c +thumb_func 0x81cb82c +thumb_func 0x81cb854 +thumb_func 0x81cb86c +thumb_func 0x81cb894 +thumb_func 0x81cb8ac +thumb_func 0x81cb8e8 +thumb_func 0x81cb930 +thumb_func 0x81cb958 +thumb_func 0x81cb968 +thumb_func 0x81cba08 +thumb_func 0x81cba44 +thumb_func 0x81cba84 +thumb_func 0x81cba98 +thumb_func 0x81cbaa0 +thumb_func 0x81cbac4 +thumb_func 0x81cbaf0 +thumb_func 0x81cbb74 +thumb_func 0x81cbb80 +thumb_func 0x81cbb94 +thumb_func 0x81cbbf8 +thumb_func 0x81cbc28 +thumb_func 0x81cbc78 +thumb_func 0x81cbca8 +thumb_func 0x81cbcbc +thumb_func 0x81cbd08 +thumb_func 0x81cbd30 +thumb_func 0x81cbd38 +thumb_func 0x81cbd48 +thumb_func 0x81cbd80 +thumb_func 0x81cbdb0 +thumb_func 0x81cbdc0 nullsub_130 +thumb_func 0x81cbdc4 +thumb_func 0x81cbdf8 +thumb_func 0x81cbe10 +thumb_func 0x81cbe24 +thumb_func 0x81cbe48 +thumb_func 0x81cbf9c +thumb_func 0x81cbfcc +thumb_func 0x81cc02c +thumb_func 0x81cc0b0 +thumb_func 0x81cc114 +thumb_func 0x81cc140 +thumb_func 0x81cc170 +thumb_func 0x81cc250 +thumb_func 0x81cc260 +thumb_func 0x81cc38c +thumb_func 0x81cc39c +thumb_func 0x81cc3c8 +thumb_func 0x81cc3dc +thumb_func 0x81cc450 +thumb_func 0x81cc464 +thumb_func 0x81cc474 +thumb_func 0x81cc4b0 +thumb_func 0x81cc528 +thumb_func 0x81cc598 +thumb_func 0x81cc634 +thumb_func 0x81cc6b8 +thumb_func 0x81cc6e4 +thumb_func 0x81cc718 +thumb_func 0x81cc764 +thumb_func 0x81cc7b0 +thumb_func 0x81cc7cc +thumb_func 0x81cc850 +thumb_func 0x81cc8dc +thumb_func 0x81cc900 +thumb_func 0x81cc924 +thumb_func 0x81cc998 +thumb_func 0x81ccb04 +thumb_func 0x81ccc88 +thumb_func 0x81ccd0c +thumb_func 0x81ccd64 +thumb_func 0x81ccf84 +thumb_func 0x81cd0d0 +thumb_func 0x81cd158 +thumb_func 0x81cd17c +thumb_func 0x81cd2f8 +thumb_func 0x81cd3b0 +thumb_func 0x81cd3c0 +thumb_func 0x81cd3d0 +thumb_func 0x81cd3e4 +thumb_func 0x81cd3fc +thumb_func 0x81cd414 +thumb_func 0x81cd434 +thumb_func 0x81cd44c +thumb_func 0x81cd464 +thumb_func 0x81cd484 +thumb_func 0x81cd4a8 +thumb_func 0x81cd4bc +thumb_func 0x81cd4dc +thumb_func 0x81cd510 +thumb_func 0x81cd534 +thumb_func 0x81cd58c +thumb_func 0x81cd5c4 +thumb_func 0x81cd5d8 nullsub_133 +thumb_func 0x81cd5e0 +thumb_func 0x81cd5f4 +thumb_func 0x81cda30 +thumb_func 0x81cdadc +thumb_func 0x81cdc38 +thumb_func 0x81cdd44 +thumb_func 0x81cde1c +thumb_func 0x81cde60 +thumb_func 0x81cde98 +thumb_func 0x81cdeb4 +thumb_func 0x81ce068 +thumb_func 0x81ce098 +thumb_func 0x81ce0c4 +thumb_func 0x81ce0fc +thumb_func 0x81ce118 +thumb_func 0x81ce328 +thumb_func 0x81ce3d4 +thumb_func 0x81ce444 +thumb_func 0x81ce464 +thumb_func 0x81ce578 +thumb_func 0x81ce59c +thumb_func 0x81ce5a8 +thumb_func 0x81ce5c4 +thumb_func 0x81ce5fc +thumb_func 0x81ce648 +thumb_func 0x81ce670 +thumb_func 0x81ce6cc +thumb_func 0x81ce710 +thumb_func 0x81ce724 +thumb_func 0x81ce744 +thumb_func 0x81ce764 +thumb_func 0x81ce7e4 +thumb_func 0x81ce7ec +thumb_func 0x81ce7f4 +thumb_func 0x81ce804 +thumb_func 0x81ce814 +thumb_func 0x81ce824 +thumb_func 0x81ce840 +thumb_func 0x81ce850 +thumb_func 0x81ce868 +thumb_func 0x81ce8f8 +thumb_func 0x81ce90c +thumb_func 0x81ce9ac +thumb_func 0x81ce9f8 +thumb_func 0x81cea64 +thumb_func 0x81cea9c +thumb_func 0x81cead4 +thumb_func 0x81ceb04 +thumb_func 0x81ceb14 nullsub_1341 +thumb_func 0x81ceb18 +thumb_func 0x81ceb2c +thumb_func 0x81ceb4c +thumb_func 0x81cecac +thumb_func 0x81ced14 +thumb_func 0x81ced7c +thumb_func 0x81cede4 +thumb_func 0x81cee4c +thumb_func 0x81cee8c +thumb_func 0x81ceebc +thumb_func 0x81ceee8 +thumb_func 0x81cef4c +thumb_func 0x81cefa0 +thumb_func 0x81cf090 +thumb_func 0x81cf0d8 +thumb_func 0x81cf108 +thumb_func 0x81cf11c +thumb_func 0x81cf13c +thumb_func 0x81cf15c +thumb_func 0x81cf1dc +thumb_func 0x81cf1e4 +thumb_func 0x81cf1ec +thumb_func 0x81cf1fc +thumb_func 0x81cf20c +thumb_func 0x81cf21c +thumb_func 0x81cf238 +thumb_func 0x81cf248 +thumb_func 0x81cf260 +thumb_func 0x81cf300 +thumb_func 0x81cf314 +thumb_func 0x81cf3c0 +thumb_func 0x81cf42c +thumb_func 0x81cf4a4 +thumb_func 0x81cf4dc +thumb_func 0x81cf514 +thumb_func 0x81cf544 +thumb_func 0x81cf554 nullsub_135 +thumb_func 0x81cf558 +thumb_func 0x81cf56c +thumb_func 0x81cf58c +thumb_func 0x81cf6d0 +thumb_func 0x81cf738 +thumb_func 0x81cf7a0 +thumb_func 0x81cf808 +thumb_func 0x81cf870 +thumb_func 0x81cf8b0 +thumb_func 0x81cf8e0 +thumb_func 0x81cf95c +thumb_func 0x81cf9a4 +thumb_func 0x81cf9f8 +thumb_func 0x81cfb00 +thumb_func 0x81cfb50 +thumb_func 0x81cfb68 +thumb_func 0x81cfb74 +thumb_func 0x81cfbf8 +thumb_func 0x81cfc84 +thumb_func 0x81cfc8c +thumb_func 0x81cfccc +thumb_func 0x81cfd14 +thumb_func 0x81cfd38 +thumb_func 0x81cfd74 +thumb_func 0x81cfd84 +thumb_func 0x81cfd94 +thumb_func 0x81cfe10 +thumb_func 0x81cfe88 +thumb_func 0x81cfec4 +thumb_func 0x81cffc4 +thumb_func 0x81cffdc +thumb_func 0x81cfff4 +thumb_func 0x81d0004 +thumb_func 0x81d0028 +thumb_func 0x81d0060 +thumb_func 0x81d0090 +thumb_func 0x81d00a0 nullsub_134 +thumb_func 0x81d00a4 +thumb_func 0x81d0108 +thumb_func 0x81d011c +thumb_func 0x81d0304 +thumb_func 0x81d0334 +thumb_func 0x81d03dc +thumb_func 0x81d043c +thumb_func 0x81d04b0 +thumb_func 0x81d0510 +thumb_func 0x81d0534 +thumb_func 0x81d05ac +thumb_func 0x81d067c +thumb_func 0x81d06a0 +thumb_func 0x81d076c +thumb_func 0x81d07b8 +thumb_func 0x81d081c +thumb_func 0x81d0864 +thumb_func 0x81d0894 +thumb_func 0x81d08a0 +thumb_func 0x81d08f4 +thumb_func 0x81d0918 +thumb_func 0x81d0950 +thumb_func 0x81d0974 +thumb_func 0x81d09a0 +thumb_func 0x81d09f4 +thumb_func 0x81d0a6c +thumb_func 0x81d0a8c +thumb_func 0x81d0ad8 +thumb_func 0x81d0b18 +thumb_func 0x81d0b64 +thumb_func 0x81d0c1c +thumb_func 0x81d0c40 +thumb_func 0x81d0c54 +thumb_func 0x81d0c90 +thumb_func 0x81d0cd8 +thumb_func 0x81d0ce8 +thumb_func 0x81d0d10 +thumb_func 0x81d0d44 +thumb_func 0x81d0d68 +thumb_func 0x81d0d8c +thumb_func 0x81d0db0 +thumb_func 0x81d0de8 +thumb_func 0x81d0df8 +thumb_func 0x81d0e30 +thumb_func 0x81d0e34 +thumb_func 0x81d0e38 +thumb_func 0x81d0e6c +thumb_func 0x81d0e70 +thumb_func 0x81d0e74 +thumb_func 0x81d0ea8 nullsub_137 +thumb_func 0x81d0eac +thumb_func 0x81d0edc +thumb_func 0x81d0efc +thumb_func 0x81d0f00 nullsub_138 +thumb_func 0x81d0f04 +thumb_func 0x81d0f5c +thumb_func 0x81d0f60 nullsub_139 +thumb_func 0x81d0f64 nullsub_1401 +thumb_func 0x81d0f68 nullsub_141 +thumb_func 0x81d0f6c nullsub_140 +thumb_func 0x81d0f70 +thumb_func 0x81d0fa4 +thumb_func 0x81d0fa8 +thumb_func 0x81d0fac +thumb_func 0x81d0fb0 +thumb_func 0x81d0fb4 +thumb_func 0x81d0fb8 +thumb_func 0x81d0fec +thumb_func 0x81d0ff8 +thumb_func 0x81d1018 +thumb_func 0x81d1024 +thumb_func 0x81d1030 +thumb_func 0x81d103c +thumb_func 0x81d109c +thumb_func 0x81d1178 +thumb_func 0x81d11b0 +thumb_func 0x81d11bc +thumb_func 0x81d11dc +thumb_func 0x81d11f4 +thumb_func 0x81d1200 +thumb_func 0x81d120c +thumb_func 0x81d123c +thumb_func 0x81d12cc +thumb_func 0x81d12f4 +thumb_func 0x81d131c +thumb_func 0x81d1340 +thumb_func 0x81d1380 +thumb_func 0x81d13b4 +thumb_func 0x81d13e4 +thumb_func 0x81d13f4 +thumb_func 0x81d14c4 +thumb_func 0x81d14d8 +thumb_func 0x81d1508 +thumb_func 0x81d151c +thumb_func 0x81d15cc +thumb_func 0x81d16bc +thumb_func 0x81d16f4 +thumb_func 0x81d1704 +thumb_func 0x81d1750 +thumb_func 0x81d1824 +thumb_func 0x81d1878 +thumb_func 0x81d18c0 +thumb_func 0x81d1aec +thumb_func 0x81d1c48 +thumb_func 0x81d1d70 +thumb_func 0x81d1e40 +thumb_func 0x81d1ee0 +thumb_func 0x81d1fd8 +thumb_func 0x81d200c +thumb_func 0x81d2208 +thumb_func 0x81d2250 +thumb_func 0x81d2264 +thumb_func 0x81d227c +thumb_func 0x81d22e4 +thumb_func 0x81d24ac +thumb_func 0x81d2504 +thumb_func 0x81d25a8 +thumb_func 0x81d26c4 +thumb_func 0x81d275c +thumb_func 0x81d2780 +thumb_func 0x81d27a8 +thumb_func 0x81d27d4 +thumb_func 0x81d2800 +thumb_func 0x81d284c +thumb_func 0x81d28e0 +thumb_func 0x81d2904 +thumb_func 0x81d2924 +thumb_func 0x81d2944 +thumb_func 0x81d29bc +thumb_func 0x81d2a38 +thumb_func 0x81d2a94 +thumb_func 0x81d2ab0 +thumb_func 0x81d2b50 +thumb_func 0x81d2b7c +thumb_func 0x81d2b94 +thumb_func 0x81d2c18 +thumb_func 0x81d2c70 +thumb_func 0x81d2db4 +thumb_func 0x81d2eb8 +thumb_func 0x81d2f00 +thumb_func 0x81d2f28 +thumb_func 0x81d2f4c +thumb_func 0x81d2f9c +thumb_func 0x81d2fc8 +thumb_func 0x81d3130 +thumb_func 0x81d3158 +thumb_func 0x81d318c +thumb_func 0x81d31b4 +thumb_func 0x81d31d4 +thumb_func 0x81d3268 +thumb_func 0x81d32fc +thumb_func 0x81d333c +thumb_func 0x81d33b4 +thumb_func 0x81d33f0 +thumb_func 0x81d3568 +thumb_func 0x81d359c +thumb_func 0x81d35e8 +thumb_func 0x81d361c +thumb_func 0x81d362c +thumb_func 0x81d37bc +thumb_func 0x81d37cc +thumb_func 0x81d37f0 +thumb_func 0x81d3820 +thumb_func 0x81d3874 +thumb_func 0x81d38b8 +thumb_func 0x81d38d8 +thumb_func 0x81d38fc +thumb_func 0x81d3eb4 +thumb_func 0x81d3f10 +thumb_func 0x81d4018 +thumb_func 0x81d4068 +thumb_func 0x81d4094 +thumb_func 0x81d40d8 +thumb_func 0x81d4110 +thumb_func 0x81d426c +thumb_func 0x81d4294 +thumb_func 0x81d42d8 +thumb_func 0x81d431c +thumb_func 0x81d4360 +thumb_func 0x81d43a4 +thumb_func 0x81d43d0 +thumb_func 0x81d4438 +thumb_func 0x81d4468 +thumb_func 0x81d44b0 +thumb_func 0x81d44e0 +thumb_func 0x81d4540 +thumb_func 0x81d4564 +thumb_func 0x81d4694 +thumb_func 0x81d46dc +thumb_func 0x81d46e4 +thumb_func 0x81d4704 +thumb_func 0x81d4b14 +thumb_func 0x81d4b3c +thumb_func 0x81d4b80 +thumb_func 0x81d4b90 +thumb_func 0x81d4bb4 +thumb_func 0x81d4be4 +thumb_func 0x81d4c30 +thumb_func 0x81d4cf0 +thumb_func 0x81d4d0c +thumb_func 0x81d4d64 +thumb_func 0x81d4d80 +thumb_func 0x81d4e70 +thumb_func 0x81d4f2c +thumb_func 0x81d4f78 +thumb_func 0x81d5024 +thumb_func 0x81d50a8 +thumb_func 0x81d50ec +thumb_func 0x81d5108 +thumb_func 0x81d5164 +thumb_func 0x81d51f4 +thumb_func 0x81d5238 +thumb_func 0x81d52f0 +thumb_func 0x81d5334 +thumb_func 0x81d535c nullsub_143 +thumb_func 0x81d5360 +thumb_func 0x81d53cc +thumb_func 0x81d56e8 +thumb_func 0x81d56ec +thumb_func 0x81d56f0 +thumb_func 0x81d5840 +thumb_func 0x81d58b0 +thumb_func 0x81d590c +thumb_func 0x81d5a10 +thumb_func 0x81d5a38 +thumb_func 0x81d5a9c +thumb_func 0x81d5abc +thumb_func 0x81d5ad0 +thumb_func 0x81d5b1c +thumb_func 0x81d5b38 +thumb_func 0x81d5b84 +thumb_func 0x81d5c48 +thumb_func 0x81d5c50 +thumb_func 0x81d5c68 +thumb_func 0x81d5d20 +thumb_func 0x81d5d38 +thumb_func 0x81d5d60 +thumb_func 0x81d5d64 +thumb_func 0x81d5dcc +thumb_func 0x81d5e30 +thumb_func 0x81d5e4c +thumb_func 0x81d5e60 +thumb_func 0x81d5e7c +thumb_func 0x81d5e9c +thumb_func 0x81d5eb8 +thumb_func 0x81d5ed4 +thumb_func 0x81d5f08 +thumb_func 0x81d5f40 +thumb_func 0x81d5f98 +thumb_func 0x81d605c +thumb_func 0x81d60b0 +thumb_func 0x81d610c +thumb_func 0x81d6128 +thumb_func 0x81d613c +thumb_func 0x81d617c +thumb_func 0x81d6204 +thumb_func 0x81d6240 +thumb_func 0x81d6258 +thumb_func 0x81d62c0 +thumb_func 0x81d635c +thumb_func 0x81d64b8 +thumb_func 0x81d665c +thumb_func 0x81d690c +thumb_func 0x81d691c +thumb_func 0x81d69a8 +thumb_func 0x81d6a70 +thumb_func 0x81d6b64 +thumb_func 0x81d6ca8 +thumb_func 0x81d6d74 +thumb_func 0x81d6dbc +thumb_func 0x81d6e04 +thumb_func 0x81d6e48 +thumb_func 0x81d6e68 +thumb_func 0x81d6ef0 +thumb_func 0x81d6f3c +thumb_func 0x81d6fa0 +thumb_func 0x81d703c +thumb_func 0x81d719c +thumb_func 0x81d71f8 +thumb_func 0x81d739c +thumb_func 0x81d7650 +thumb_func 0x81d774c +thumb_func 0x81d77d8 +thumb_func 0x81d7888 +thumb_func 0x81d78fc +thumb_func 0x81d7aa0 +thumb_func 0x81d7ae0 +thumb_func 0x81d7b9c +thumb_func 0x81d7bec +thumb_func 0x81d7c94 +thumb_func 0x81d7d88 +thumb_func 0x81d7e28 +thumb_func 0x81d7eb8 +thumb_func 0x81d7fc0 +thumb_func 0x81d8008 +thumb_func 0x81d8088 +thumb_func 0x81d8164 +thumb_func 0x81d820c +thumb_func 0x81d82bc +thumb_func 0x81d831c +thumb_func 0x81d8414 +thumb_func 0x81d8468 +thumb_func 0x81d84f0 +thumb_func 0x81d8528 +thumb_func 0x81d8574 +thumb_func 0x81d8600 +thumb_func 0x81d86f0 +thumb_func 0x81d87bc +thumb_func 0x81d88ec +thumb_func 0x81d8970 +thumb_func 0x81d89e4 +thumb_func 0x81d8bb0 +thumb_func 0x81d8c74 +thumb_func 0x81d8d14 +thumb_func 0x81d8d5c +thumb_func 0x81d8e10 +thumb_func 0x81d8e64 +thumb_func 0x81d8f58 +thumb_func 0x81d911c +thumb_func 0x81d91a4 +thumb_func 0x81d91f0 +thumb_func 0x81d92f8 +thumb_func 0x81d9320 +thumb_func 0x81d9358 +thumb_func 0x81d93d4 +thumb_func 0x81d9400 +thumb_func 0x81d947c +thumb_func 0x81d9574 +thumb_func 0x81d95c0 +thumb_func 0x81d95f0 +thumb_func 0x81d960c +thumb_func 0x81d9624 +thumb_func 0x81d9640 +thumb_func 0x81d9690 +thumb_func 0x81d97c0 +thumb_func 0x81d97dc +thumb_func 0x81d97f8 +thumb_func 0x81d9814 +thumb_func 0x81d99b8 +thumb_func 0x81d99e4 +thumb_func 0x81d9a0c +thumb_func 0x81d9ad4 +thumb_func 0x81d9b78 +thumb_func 0x81d9c48 +thumb_func 0x81d9d18 +thumb_func 0x81d9dcc +thumb_func 0x81d9e24 +thumb_func 0x81d9f1c +thumb_func 0x81d9f50 +thumb_func 0x81d9f9c +thumb_func 0x81da098 +thumb_func 0x81da10c +thumb_func 0x81da20c +thumb_func 0x81da270 +thumb_func 0x81da2c4 +thumb_func 0x81da31c +thumb_func 0x81da39c +thumb_func 0x81da40c +thumb_func 0x81da42c +thumb_func 0x81da464 +thumb_func 0x81da4d0 +thumb_func 0x81da504 +thumb_func 0x81da53c +thumb_func 0x81da5a8 +thumb_func 0x81da5dc +thumb_func 0x81da614 +thumb_func 0x81da694 +thumb_func 0x81da6c8 +thumb_func 0x81da700 +thumb_func 0x81da784 +thumb_func 0x81da7b8 +thumb_func 0x81da7f0 +thumb_func 0x81da87c +thumb_func 0x81da8b0 +thumb_func 0x81da8e8 +thumb_func 0x81da974 +thumb_func 0x81da9a8 +thumb_func 0x81da9e0 +thumb_func 0x81daa74 +thumb_func 0x81daaa8 +thumb_func 0x81daae0 +thumb_func 0x81dab78 +# gcnmultiboot +thumb_func 0x0828d2f8 GameCubeMultiBoot_Hash +thumb_func 0x0828d30c GameCubeMultiBoot_Main +thumb_func 0x0828d40c GameCubeMultiBoot_ExecuteProgram +thumb_func 0x0828d420 GameCubeMultiBoot_Init +thumb_func 0x0828d46a GameCubeMultiBoot_HandleSerialInterrupt +thumb_func 0x0828d4ac GcMbIntrHandler_CheckGameCodeSent +thumb_func 0x0828d4b8 GcMbIntrHandler_CheckHandshakeResponse +thumb_func 0x0828d4cc GcMbIntrHandler_ReceiveKeyA +thumb_func 0x0828d50c GcMbIntrHandler_CheckKeyBSent +thumb_func 0x0828d518 GcMbIntrHandler_CheckImageSizeResponse +thumb_func 0x0828d53c GcMbIntrHandler_CheckImageResponse +thumb_func 0x0828d568 GcMbIntrHandler_CheckCounter2Sent +thumb_func 0x0828d578 GcMbIntrHandler_CheckKeyCDerivationSent +thumb_func 0x0828d584 GcMbIntrHandler_CheckBootKeyResponse +thumb_func 0x0828d598 GcMbIntrHandler_StopUnconditionally +thumb_func 0x0828d59a GameCubeMultiBoot_Quit +# m4a +thumb_func 0x0828d5d4 umul3232H32 +arm_func 0x0828d5d8 __umul3232H32 +thumb_func 0x0828d5e4 SoundMain +thumb_func 0x0828d668 SoundMainRAM +arm_func 0x0828D674 SoundMainRAM_Reverb +arm_func 0x0828D804 +arm_func 0x0828da24 +arm_func 0x0828dce0 +thumb_func 0x0828dd6c SoundMainBTM +thumb_func 0x0828dd84 RealClearChain +thumb_func 0x0828dda4 ply_fine +thumb_func 0x0828ddd4 MPlayJumpTableCopy +thumb_func 0x0828de08 ld_r3_tp_adr_i +thumb_func 0x0828de14 ply_goto +thumb_func 0x0828de34 ply_patt +thumb_func 0x0828de50 ply_pend +thumb_func 0x0828de64 ply_rept +thumb_func 0x0828de94 ply_prio +thumb_func 0x0828dea0 ply_tempo +thumb_func 0x0828deb4 ply_keysh +thumb_func 0x0828dec8 ply_voice +thumb_func 0x0828def8 ply_vol +thumb_func 0x0828df0c ply_pan +thumb_func 0x0828df20 ply_bend +thumb_func 0x0828df34 ply_bendr +thumb_func 0x0828df48 ply_lfodl +thumb_func 0x0828df54 ply_modt +thumb_func 0x0828df6c ply_tune +thumb_func 0x0828df80 ply_port +thumb_func 0x0828df98 m4aSoundVSync +thumb_func 0x0828dfe4 MPlayMain +thumb_func 0x0828e24c TrackStop +thumb_func 0x0828e290 ChnVolSetAsm +thumb_func 0x0828e2c0 ply_note +thumb_func 0x0828e4c4 ply_endtie +thumb_func 0x0828e504 clear_modM +thumb_func 0x0828e52c ply_lfos +thumb_func 0x0828e540 ply_mod +thumb_func 0x0828e554 MidiKeyToFreq +thumb_func 0x0828e5b8 UnusedDummyFunc +thumb_func 0x0828e5bc MPlayContinue +thumb_func 0x0828e5d8 MPlayFadeOut +thumb_func 0x0828e5f8 m4aSoundInit +thumb_func 0x0828e6ac m4aSoundMain +thumb_func 0x0828e6b8 m4aSongNumStart +thumb_func 0x0828e6e4 m4aSongNumStartOrChange +thumb_func 0x0828e730 m4aSongNumStartOrContinue +thumb_func 0x0828e784 m4aSongNumStop +thumb_func 0x0828e7b8 m4aSongNumContinue +thumb_func 0x0828e7ec m4aMPlayAllStop +thumb_func 0x0828e830 m4aMPlayContinue +thumb_func 0x0828e83c m4aMPlayAllContinue +thumb_func 0x0828e880 m4aMPlayFadeOut +thumb_func 0x0828e890 m4aMPlayFadeOutTemporarily +thumb_func 0x0828e8b0 m4aMPlayFadeIn +thumb_func 0x0828e8d8 m4aMPlayImmInit +thumb_func 0x0828e920 MPlayExtender +thumb_func 0x0828ea38 MusicPlayerJumpTableCopy +thumb_func 0x0828ea3c ClearChain +thumb_func 0x0828ea50 Clear64byte +thumb_func 0x0828ea64 SoundInit +thumb_func 0x0828eb5c SampleFreqSet +thumb_func 0x0828ec00 m4aSoundMode +thumb_func 0x0828ec98 SoundClear +thumb_func 0x0828ecec m4aSoundVSyncOff +thumb_func 0x0828ed68 m4aSoundVSyncOn +thumb_func 0x0828eda4 MPlayOpen +thumb_func 0x0828ee1c MPlayStart +thumb_func 0x0828ef00 m4aMPlayStop +thumb_func 0x0828ef40 FadeOutBody +thumb_func 0x0828f008 TrkVolPitSet +thumb_func 0x0828f0bc MidiKeyToCgbFreq +thumb_func 0x0828f164 CgbOscOff +thumb_func 0x0828f1b4 CgbModVol +thumb_func 0x0828f230 CgbSound +thumb_func 0x0828f67c m4aMPlayTempoControl +thumb_func 0x0828f6a4 m4aMPlayVolumeControl +thumb_func 0x0828f70c m4aMPlayPitchControl +thumb_func 0x0828f780 m4aMPlayPanpotControl +thumb_func 0x0828f7e8 ClearModM +thumb_func 0x0828f808 m4aMPlayModDepthSet +thumb_func 0x0828f87c m4aMPlayLFOSpeedSet +thumb_func 0x0828f8f0 ply_memacc +thumb_func 0x0828fa48 ply_xcmd +thumb_func 0x0828fa68 ply_xxx +thumb_func 0x0828fa7c ply_xwave +thumb_func 0x0828fac4 ply_xtype +thumb_func 0x0828fad8 ply_xatta +thumb_func 0x0828faec ply_xdeca +thumb_func 0x0828fb00 ply_xsust +thumb_func 0x0828fb14 ply_xrele +thumb_func 0x0828fb28 ply_xiecv +thumb_func 0x0828fb34 ply_xiecl +thumb_func 0x0828fb40 ply_xleng +thumb_func 0x0828fb54 ply_xswee +thumb_func 0x0828fb68 ply_xcmd_0C +thumb_func 0x0828fbb0 ply_xcmd_0D +thumb_func 0x0828fbf8 DummyFunc +thumb_func 0x0828fbfc SetPokemonCryTone +thumb_func 0x0828fccc SetPokemonCryVolume +thumb_func 0x0828fce0 SetPokemonCryPanpot +thumb_func 0x0828fcf8 SetPokemonCryPitch +thumb_func 0x0828fd30 SetPokemonCryLength +thumb_func 0x0828fd3c SetPokemonCryRelease +thumb_func 0x0828fd48 SetPokemonCryProgress +thumb_func 0x0828fd54 IsPokemonCryPlaying +thumb_func 0x0828fd6c SetPokemonCryChorus +thumb_func 0x0828fd98 SetPokemonCryStereo +thumb_func 0x0828fdd8 SetPokemonCryPriority +# agb_flash +thumb_func 0x0828fde4 SwitchFlashBank +thumb_func 0x0828fe08 ReadFlashId +thumb_func 0x0828fea4 FlashTimerIntr +thumb_func 0x0828fecc SetFlashTimerIntr +thumb_func 0x0828ff08 StartFlashTimer +thumb_func 0x0828ffb0 StopFlashTimer +thumb_func 0x0828fff4 ReadFlash1 +thumb_func 0x0828fff8 SetReadFlash1 +thumb_func 0x08290038 ReadFlash_Core +thumb_func 0x0829005c ReadFlash +thumb_func 0x082900f8 VerifyFlashSector_Core +thumb_func 0x08290128 VerifyFlashSector +thumb_func 0x082901c0 VerifyFlashSectorNBytes +thumb_func 0x08290258 ProgramFlashSectorAndVerify +thumb_func 0x0829029c ProgramFlashSectorAndVerifyNBytes +thumb_func 0x082902e4 IdentifyFlash +thumb_func 0x08290384 WaitForFlashWrite_Common +thumb_func 0x08290424 EraseFlashChip_MX +thumb_func 0x08290498 EraseFlashSector_MX +thumb_func 0x08290568 ProgramFlashByte_MX +thumb_func 0x08290634 ProgramFlashSector_MX +# siirtc +thumb_func 0x082906d8 SiiRtcUnprotect +thumb_func 0x082906f0 SiiRtcProtect +thumb_func 0x08290708 SiiRtcProbe +thumb_func 0x082907e0 SiiRtcReset +thumb_func 0x08290864 SiiRtcGetStatus +thumb_func 0x08290930 SiiRtcSetStatus +thumb_func 0x082909d8 SiiRtcGetDateTime +thumb_func 0x08290a88 SiiRtcSetDateTime +thumb_func 0x08290b24 SiiRtcGetTime +thumb_func 0x08290bd8 SiiRtcSetTime +thumb_func 0x08290c74 SiiRtcSetAlarm +# rfu +thumb_func 0x08290fa0 STWI_init_all +thumb_func 0x08291078 STWI_init_timer +thumb_func 0x082910b4 AgbRFU_SoftReset +thumb_func 0x08291168 STWI_set_MS_mode +thumb_func 0x0829117c STWI_read_status +thumb_func 0x082911dc STWI_init_Callback_M +thumb_func 0x082911e8 STWI_init_Callback_S +thumb_func 0x082911f4 STWI_set_Callback_M +thumb_func 0x08291200 STWI_set_Callback_S +thumb_func 0x0829120c STWI_set_Callback_ID +thumb_func 0x08291218 STWI_poll_CommandEnd +thumb_func 0x08291240 STWI_send_ResetREQ +thumb_func 0x08291264 STWI_send_LinkStatusREQ +thumb_func 0x08291288 STWI_send_VersionStatusREQ +thumb_func 0x082912ac STWI_send_SystemStatusREQ +thumb_func 0x082912d0 STWI_send_SlotStatusREQ +thumb_func 0x082912f4 STWI_send_ConfigStatusREQ +thumb_func 0x08291318 STWI_send_GameConfigREQ +thumb_func 0x08291370 STWI_send_SystemConfigREQ +thumb_func 0x082913b0 STWI_send_SC_StartREQ +thumb_func 0x082913d4 STWI_send_SC_PollingREQ +thumb_func 0x082913f8 STWI_send_SC_EndREQ +thumb_func 0x0829141c STWI_send_SP_StartREQ +thumb_func 0x08291440 STWI_send_SP_PollingREQ +thumb_func 0x08291464 STWI_send_SP_EndREQ +thumb_func 0x08291488 STWI_send_CP_StartREQ +thumb_func 0x082914b8 STWI_send_CP_PollingREQ +thumb_func 0x082914dc STWI_send_CP_EndREQ +thumb_func 0x08291500 STWI_send_DataTxREQ +thumb_func 0x08291548 STWI_send_DataTxAndChangeREQ +thumb_func 0x08291590 STWI_send_DataRxREQ +thumb_func 0x082915b4 STWI_send_MS_ChangeREQ +thumb_func 0x082915d8 STWI_send_DataReadyAndChangeREQ +thumb_func 0x08291628 STWI_send_DisconnectedAndChangeREQ +thumb_func 0x08291668 STWI_send_ResumeRetransmitAndChangeREQ +thumb_func 0x0829168c STWI_send_DisconnectREQ +thumb_func 0x082916bc STWI_send_TestModeREQ +thumb_func 0x082916f4 STWI_send_CPR_StartREQ +thumb_func 0x08291730 STWI_send_CPR_PollingREQ +thumb_func 0x08291754 STWI_send_CPR_EndREQ +thumb_func 0x08291778 STWI_send_StopModeREQ +thumb_func 0x0829179c STWI_intr_timer +thumb_func 0x08291800 STWI_set_timer +thumb_func 0x082918ac STWI_stop_timer +thumb_func 0x082918d8 STWI_init +thumb_func 0x082919b0 STWI_start_Command +thumb_func 0x08291a24 STWI_restart_Command +thumb_func 0x08291aa4 STWI_reset_ClockCounter +arm_func 0x08291adc IntrSIO32 +arm_func 0x08291b0c +arm_func 0x0829209c +arm_func 0x08291b40 sio32intr_clock_master +arm_func 0x08291dd0 sio32intr_clock_slave +arm_func 0x082921dc handshake_wait +arm_func 0x08292244 STWI_set_timer_in_RAM +arm_func 0x08292354 STWI_stop_timer_in_RAM +arm_func 0x082923a4 STWI_init_slave +arm_func 0x08292430 +arm_func 0x08292434 +arm_func 0x08292438 +thumb_func 0x0829243c rfu_initializeAPI +thumb_func 0x08292564 rfu_STC_clearAPIVariables +thumb_func 0x082925ec rfu_REQ_PARENT_resumeRetransmitAndChange +thumb_func 0x08292600 rfu_UNI_PARENT_getDRAC_ACK +thumb_func 0x08292648 rfu_setTimerInterrupt +thumb_func 0x0829265c rfu_getSTWIRecvBuffer +thumb_func 0x0829266c rfu_setMSCCallback +thumb_func 0x08292678 rfu_setREQCallback +thumb_func 0x08292694 rfu_enableREQCallback +thumb_func 0x082926c0 rfu_STC_REQ_callback +thumb_func 0x08292700 rfu_CB_defaultCallback +thumb_func 0x08292770 rfu_waitREQComplete +thumb_func 0x08292784 rfu_REQ_RFUStatus +thumb_func 0x08292798 rfu_getRFUStatus +thumb_func 0x082927d4 +thumb_func 0x082927e4 +thumb_func 0x0829284c rfu_REQ_stopMode +thumb_func 0x082928f4 rfu_CB_stopMode +thumb_func 0x08292920 rfu_REQBN_softReset_and_checkID +thumb_func 0x0829295c rfu_REQ_reset +thumb_func 0x08292970 rfu_CB_reset +thumb_func 0x08292994 rfu_REQ_configSystem +thumb_func 0x082929fc rfu_REQ_configGameData +thumb_func 0x08292a88 rfu_CB_configGameData +thumb_func 0x08292b24 rfu_REQ_startSearchChild +thumb_func 0x08292b94 rfu_CB_startSearchChild +thumb_func 0x08292bbc rfu_STC_clearLinkStatus +thumb_func 0x08292c20 rfu_REQ_pollSearchChild +thumb_func 0x08292c34 rfu_REQ_endSearchChild +thumb_func 0x08292c48 rfu_CB_pollAndEndSearchChild +thumb_func 0x08292cd0 rfu_STC_readChildList +thumb_func 0x08292d8c rfu_REQ_startSearchParent +thumb_func 0x08292da0 rfu_CB_startSearchParent +thumb_func 0x08292dc4 rfu_REQ_pollSearchParent +thumb_func 0x08292dd8 +thumb_func 0x08292dfc rfu_REQ_endSearchParent +thumb_func 0x08292e10 rfu_STC_readParentCandidateList +thumb_func 0x08292f20 rfu_REQ_startConnectParent +thumb_func 0x08292f88 rfu_REQ_pollConnectParent +thumb_func 0x08292f9c rfu_CB_pollConnectParent +thumb_func 0x082930bc rfu_getConnectParentStatus +thumb_func 0x082930f0 rfu_REQ_endConnectParent +thumb_func 0x08293128 rfu_syncVBlank +thumb_func 0x08293208 rfu_REQBN_watchLink +thumb_func 0x082935f4 rfu_STC_removeLinkData +thumb_func 0x082936b4 rfu_REQ_disconnect +thumb_func 0x08293744 rfu_CB_disconnect +thumb_func 0x08293824 rfu_REQ_CHILD_startConnectRecovery +thumb_func 0x08293880 rfu_REQ_CHILD_pollConnectRecovery +thumb_func 0x08293894 rfu_CB_CHILD_pollConnectRecovery +thumb_func 0x08293938 rfu_CHILD_getConnectRecoveryStatus +thumb_func 0x08293968 rfu_REQ_CHILD_endConnectRecovery +thumb_func 0x0829397c +thumb_func 0x08293992 +thumb_func 0x082939ac rfu_REQ_changeMasterSlave +thumb_func 0x082939d8 rfu_getMasterSlave +thumb_func 0x08293a10 rfu_clearAllSlot +thumb_func 0x08293ab0 rfu_STC_releaseFrame +thumb_func 0x08293b1c rfu_clearSlot +thumb_func 0x08293cd8 rfu_setRecvBuffer +thumb_func 0x08293d38 rfu_NI_setSendData +thumb_func 0x08293d64 rfu_UNI_setSendData +thumb_func 0x08293da0 rfu_NI_CHILD_setSendGameName +thumb_func 0x08293dd4 rfu_STC_setSendData_org +thumb_func 0x08293fdc rfu_changeSendTarget +thumb_func 0x08294144 rfu_NI_stopReceivingData +thumb_func 0x082941bc rfu_UNI_changeAndReadySendData +thumb_func 0x08294250 rfu_UNI_readySendData +thumb_func 0x0829427c rfu_UNI_clearRecvNewDataFlag +thumb_func 0x0829429c rfu_REQ_sendData +thumb_func 0x082943e0 rfu_CB_sendData +thumb_func 0x08294478 rfu_CB_sendData2 +thumb_func 0x08294488 +thumb_func 0x082944b0 rfu_constructSendLLFrame +thumb_func 0x082945e8 rfu_STC_NI_constructLLSF +thumb_func 0x082947a8 rfu_STC_UNI_constructLLSF +thumb_func 0x0829487c rfu_REQ_recvData +thumb_func 0x082948bc rfu_CB_recvData +thumb_func 0x082949a8 rfu_STC_PARENT_analyzeRecvPacket +thumb_func 0x08294a40 rfu_STC_CHILD_analyzeRecvPacket +thumb_func 0x08294a98 rfu_STC_analyzeLLSF +thumb_func 0x08294cdc rfu_STC_UNI_receive +thumb_func 0x08294d90 rfu_STC_NI_receive_Sender +thumb_func 0x08294f7c rfu_STC_NI_receive_Receiver +thumb_func 0x082950f8 rfu_STC_NI_initSlot_asRecvControllData +thumb_func 0x08295188 rfu_STC_NI_initSlot_asRecvDataEntity +thumb_func 0x08295240 rfu_NI_checkCommFailCounter +thumb_func 0x082952dc rfu_REQ_noise +thumb_func 0x082952f4 +thumb_func 0x082953a8 +thumb_func 0x0829541c +thumb_func 0x08295510 +thumb_func 0x0829552a +# isabgprn +thumb_func 0x8295600 AGBPrintInit +thumb_func 0x8295688 AGBPutcInternal +thumb_func 0x8295774 AGBPutc +thumb_func 0x82957d4 AGBPrint +thumb_func 0x8295830 AGBPrintf +thumb_func 0x8295874 AGBPrintTransferDataInternal +thumb_func 0x829594c AGBPrintFlush1Block +thumb_func 0x829595c AGBPrintFlush +thumb_func 0x829596c AGBAssert +# libgcc +thumb_func 0x082959b0 ArcTan2 +thumb_func 0x082959b4 BgAffineSet +thumb_func 0x082959b8 CpuFastSet +thumb_func 0x082959bc CpuSet +thumb_func 0x082959c0 Div +thumb_func 0x082959c4 LZ77UnCompVram +thumb_func 0x082959c8 LZ77UnCompWram +thumb_func 0x082959cc MultiBoot +thumb_func 0x082959d4 ObjAffineSet +thumb_func 0x082959d8 RLUnCompVram +thumb_func 0x082959dc RLUnCompWram +thumb_func 0x082959e0 RegisterRamReset +thumb_func 0x082959e4 SoftReset +thumb_func 0x082959fc Sqrt +thumb_func 0x08295a00 VBlankIntrWait +thumb_func 0x08295a08 _call_via_r0 +thumb_func 0x08295a0c _call_via_r1 +thumb_func 0x08295a10 _call_via_r2 +thumb_func 0x08295a14 _call_via_r3 +thumb_func 0x08295a18 _call_via_r4 +thumb_func 0x08295a1c _call_via_r5 +thumb_func 0x08295a20 _call_via_r6 +thumb_func 0x08295a24 _call_via_r7 +thumb_func 0x08295a28 _call_via_r8 +thumb_func 0x08295a2c _call_via_r9 +thumb_func 0x08295a30 _call_via_sl +thumb_func 0x08295a34 _call_via_fp +thumb_func 0x08295a38 _call_via_ip +thumb_func 0x08295a3c _call_via_sp +thumb_func 0x08295a40 _call_via_lr +thumb_func 0x08295a44 __divdi3 +thumb_func 0x08295e78 __divsi3 +thumb_func 0x08295f0c __div0 +thumb_func 0x08295f10 __fixunsdfsi +thumb_func 0x08295f54 __fixunssfsi +thumb_func 0x08295f88 __modsi3 +thumb_func 0x08296058 __muldi3 +thumb_func 0x082960c8 __udivdi3 +thumb_func 0x082964a0 __udivsi3 +thumb_func 0x08296518 __umodsi3 +thumb_func 0x082965d8 __pack_d +thumb_func 0x08296720 __unpack_d +thumb_func 0x08296a64 __adddf3 +thumb_func 0x08296a94 __subdf3 +thumb_func 0x08296acc __muldf3 +thumb_func 0x08296d74 __divdf3 +thumb_func 0x08296efc __fpcmp_parts_d +thumb_func 0x08296ffc __cmpdf2 +thumb_func 0x08297028 __eqdf2 +thumb_func 0x08297074 __nedf2 +thumb_func 0x082970c0 __gtdf2 +thumb_func 0x0829710c __gedf2 +thumb_func 0x08297158 __ltdf2 +thumb_func 0x082971a4 __ledf2 +thumb_func 0x082971f0 __floatsidf +thumb_func 0x0829726c __fixdfsi +thumb_func 0x082972e0 __negdf2 +thumb_func 0x08297308 __make_dp +thumb_func 0x08297330 __truncdfsf2 +thumb_func 0x08297374 __pack_f +thumb_func 0x0829742c __unpack_f +thumb_func 0x08297624 __addsf3 +thumb_func 0x08297650 __subsf3 +thumb_func 0x08297684 __mulsf3 +thumb_func 0x082977e8 __divsf3 +thumb_func 0x082978d4 __fpcmp_parts_f +thumb_func 0x082979b8 __cmpsf2 +thumb_func 0x082979e0 __eqsf2 +thumb_func 0x08297a28 __nesf2 +thumb_func 0x08297a70 __gtsf2 +thumb_func 0x08297ab8 __gesf2 +thumb_func 0x08297b00 __ltsf2 +thumb_func 0x08297b48 __lesf2 +thumb_func 0x08297b90 __floatsisf +thumb_func 0x08297bf0 __fixsfsi +thumb_func 0x08297c58 __negsf2 +thumb_func 0x08297c7c __make_fp +thumb_func 0x08297c94 __extendsfdf2 +thumb_func 0x08297cc0 __lshrdi3 +thumb_func 0x08297cf4 __negdi2 +thumb_func 0x08297d0c memcpy +thumb_func 0x08297d6c memset +# libc +thumb_func 0x08297D0C memcpy +thumb_func 0x08297D6C memset +thumb_func 0x08297dc0 strcmp +thumb_func 0x08297e1c strcpy +thumb_func 0x08297e68 vsprintf +thumb_func 0x08297f30 vfprintf +thumb_func 0x08297f44 _vfprintf_r +thumb_func 0x08299008 __swsetup +thumb_func 0x08299210 _dtoa_r +thumb_func 0x08299f08 fflush +thumb_func 0x08299fd4 __sfmoreglue +thumb_func 0x0829a004 __sfp +thumb_func 0x0829a078 _cleanup_r +thumb_func 0x0829a088 _cleanup +thumb_func 0x0829a098 __sinit +thumb_func 0x0829a0f8 _free_r +thumb_func 0x0829a2b8 _malloc_trim_r +thumb_func 0x0829a378 __sfvwrite +thumb_func 0x0829a5a4 _fwalk +thumb_func 0x0829a5e4 _setlocale_r +thumb_func 0x0829a620 _localeconv_r +thumb_func 0x0829a628 setlocale +thumb_func 0x0829a640 localeconv +thumb_func 0x0829a650 __smakebuf +thumb_func 0x0829a888 _malloc_r +thumb_func 0x0829ac48 _mbtowc_r +thumb_func 0x0829ac74 memchr +thumb_func 0x0829acf4 memmove +thumb_func 0x0829ad7c __malloc_lock +thumb_func 0x0829ad80 __malloc_unlock +thumb_func 0x0829ad84 _Balloc +thumb_func 0x0829addc _Bfree +thumb_func 0x0829adf4 _multadd +thumb_func 0x0829ae8c _s2b +thumb_func 0x0829af10 _hi0bits +thumb_func 0x0829af68 _lo0bits +thumb_func 0x0829afec _i2b +thumb_func 0x0829b000 _multiply +thumb_func 0x0829b16c _pow5mult +thumb_func 0x0829b204 _lshift +thumb_func 0x0829b2a4 __mcmp +thumb_func 0x0829b2e4 __mdiff +thumb_func 0x0829b3d4 _ulp +thumb_func 0x0829b420 _b2d +thumb_func 0x0829b4dc _d2b +thumb_func 0x0829b5c4 _ratio +thumb_func 0x0829b614 _mprec_log10 +thumb_func 0x0829b654 isinf +thumb_func 0x0829b678 isnan +thumb_func 0x0829b698 _sbrk_r +thumb_func 0x0829b6c4 __sread +thumb_func 0x0829b6f8 __swrite +thumb_func 0x0829b738 __sseek +thumb_func 0x0829b778 __sclose +thumb_func 0x0829b788 strlen +thumb_func 0x0829b838 initialise_monitor_handles +thumb_func 0x0829b8e8 _swiread +thumb_func 0x0829b90c _read +thumb_func 0x0829b954 _swilseek +thumb_func 0x0829b9d8 _lseek +thumb_func 0x0829b9e4 _swiwrite +thumb_func 0x0829ba08 _write +thumb_func 0x0829ba54 _swiopen +thumb_func 0x0829baf4 _open +thumb_func 0x0829bb08 _swiclose +thumb_func 0x0829bb3c _close +thumb_func 0x0829bb48 _exit +thumb_func 0x0829bb68 _kill +thumb_func 0x0829bb88 _getpid +thumb_func 0x0829bb8c _sbrk +thumb_func 0x0829bbc8 _fstat +thumb_func 0x0829bbd4 _unlink +thumb_func 0x0829bbdc _raise +thumb_func 0x0829bbe0 _gettimeofday +thumb_func 0x0829bc0c _times +thumb_func 0x0829bc30 _write_r +thumb_func 0x0829bc60 _calloc_r +thumb_func 0x0829bcb8 _close_r +thumb_func 0x0829bce4 __errno +thumb_func 0x0829bcf0 _fstat_r +thumb_func 0x0829bd1c abort +thumb_func 0x0829bd3c isatty +thumb_func 0x0829bd40 alarm +thumb_func 0x0829bd44 _lseek_r +thumb_func 0x0829bd74 _read_r diff --git a/graph_search.py b/graph_search.py new file mode 100644 index 0000000..80dadfc --- /dev/null +++ b/graph_search.py @@ -0,0 +1,306 @@ +import re +import os +import struct +import subprocess +import random +from collections import defaultdict +from typing import List, Dict, Tuple, Set + +US_PATH = '../pokeemerald' + + +def elf_funcs(elf_path: str, unknown=True) -> Dict[str, Tuple[int, int]]: # Find all functions in an ELF file + p = subprocess.run(f'readelf -s -W {elf_path}', stdout=subprocess.PIPE, encoding='utf-8', + shell=True) + lines = p.stdout.split('\n') + elf_reg = re.compile(r'\s*\d+:\s([a-fA-F0-9]{8})\s+(\d+)\s+(\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s+(\w+)') + symbols = {} # Map function names to (address, size tuples) + for line in lines: + m = elf_reg.match(line) + if m and m.group(3) == 'FUNC': # Collect functions + addr, size, dtype, bind, vis, ndx, name = m.groups() + is_unknown = name[:4] == 'sub_' + if unknown is not None and is_unknown != unknown: + continue + addr = int(addr, 16) + size = int(size) + symbols[name] = (addr-1, size) + if unknown is True: + unk_str = 'unknown ' + elif unknown is False: + unk_str = 'known ' + else: + unk_str = '' + print(f'Found {len(symbols)} {unk_str}functions') + return symbols + + +# Builds an "instruction graph" +# Maps instructions to a dictionary +# That dictionary maps following instructions, to the places they follow at +# So if you have: +# 0 MOV r0, r1 +# 2 BX lr +# {(MOV r0, r1): {(BX lr): {2}}} +def build_graph(rom: str, symbols: Dict[str, Tuple[int, int]]) -> Dict[int, Dict[int, Set[int]]]: + graph = defaultdict(lambda: defaultdict(set)) + with open(rom, 'rb') as f: + count = 0 + print('Graphed 0 functions', end='') + for name, (addr, size) in symbols.items(): + f.seek(addr & 0xfffffe) + data = f.read(size) + instrs = [t[0] for t in struct.iter_unpack(' Dict[int, int]: # Calculate the size of *addresses*. Crude asf + with open(map_path, 'r') as f: + lines = list(line for line in f) + sizes = {} # Maps addresses to their sizes + reg = re.compile(r'\s*(0x[\da-fA-F]+)') + for l1, l2 in zip(lines[:-1], lines[1:]): + m1 = reg.match(l1) + if not m1: + continue + m2 = reg.match(l2) + if not m2: + continue + addr1, addr2 = int(m1.group(1), 16), int(m2.group(1), 16) + if not addr1 & 0xff000000 == addr2 & 0xff000000 == 0x08000000: # Only pay attention to ROM addresses + continue + size = addr2 - addr1 + sizes[addr1] = size + return sizes + + +def asm_funcs(asm_path: str, sizes: Dict[int, int], unknown=True) -> Dict[str, Tuple[int, int]]: + reg = re.compile(r'(\w+): @ (0x[\da-fA-F]+)') + symbols = {} # Maps names to (address, size) tuples + with open(asm_path, 'r') as f: + for line in f: + m = reg.match(line) + if m: + is_unknown = m.group(1).startswith('sub_') + if unknown != is_unknown: # Only want certain functions + continue + addr = int(m.group(2), 16) + if addr not in sizes: + continue + symbols[m.group(1)] = (addr, sizes[addr]) + print(f'Found {len(symbols)} {"unknown" if unknown else "known"} JP functions') + return symbols + + +def match_instrs(instrs: List[int], graph): # Match a sequence of instructions + matches = [] + if not instrs: + return [] + for base in graph[None][instrs[0]]: + last = instrs[0] + # print(f'Try: {base:08x}') + match_len = 1 + for match_len, instr in enumerate(instrs[1:], 1): + addr = base + 2*match_len + potential = graph[last][instr] + # print(f'{instr:04x} {addr:08x} {not sequence_break}') + if addr not in potential: # Sequence is broken + break + last = instr + matches.append((match_len, base)) + matches.sort(reverse=True) # Get the best match + if len(instrs) >= 10 and matches and len(instrs)-1 == matches[0][0]: # Perfect match + if not any(t[0] == matches[0][0] for t in matches[1:]): # No other perfect matches + return matches[:1] + return matches + + +def decode(instrs: List[int]): # Primitive, unfinished THUMB decoder + for op in instrs: + print(f'{op:04x}', end=' ') + if op & 0xf800 == 0x1800: # Add/subtract + opcode = (op >> 9) & 3 + codes = ('ADD', 'SUB', 'ADD', 'SUB') + val = (op >> 6) & 7 + rs = (op >> 3) & 7 + rd = op & 7 + flag = 'r' if opcode < 2 else '#' + print(f'{codes[opcode]} r{rd},r{rs},{flag}{val}') + elif op & 0xe000 == 0: # Move shifted register + opcode = (op >> 11) & 3 + codes = ('LSL', 'LSR', 'ASR') + offset = (op >> 6) & 31 + rs = (op >> 3) & 7 + rd = op & 7 + print(f'{codes[opcode]} r{rd},r{rs},#{offset}') + elif op & 0xe000 == 0x2000: # Add/sub immediate + opcode = (op >> 11) & 3 + codes = ('MOV', 'CMP', 'ADD', 'SUB') + rd = (op >> 8) & 7 + nn = op & 255 + print(f'{codes[opcode]} r{rd},#{nn}') + elif op & 0xfc00 == 0x4000: # ALU ops + opcode = (op >> 6) & 15 + codes = ('AND', 'EOR', 'LSL', 'LSR', 'ASR', 'ADC', 'SBC', 'ROR', + 'TST', 'NEG', 'CMP', 'CMN', 'ORR', 'MUL', 'BIC', 'MVN') + rs = (op >> 3) & 7 + rd = op & 7 + print(f'{codes[opcode]} r{rd}, r{rs}') + elif op & 0xf800 == 0x4800: # Load PC-relative + r = (op >> 8) & 7 + print(f'LDR r{r} PC+{4*(op & 255)}') + elif op & 0xf200 == 0x5200: # Load register offset + opcode = (op >> 10) & 3 + codes = ('STR', 'STB', 'LDR', 'LDB') + ro = (op >> 6) & 7 + rb = (op >> 3) & 7 + rd = op & 7 + print(f'{codes[opcode]} r{rd},[r{rb},r{ro}]') + elif op & 0xe000 == 0x6000: # Load immediate offset + opcode = (op >> 11) & 3 + codes = ('STR', 'LDR', 'STB', 'LDB') + nn = (op >> 6) & 31 + if opcode < 2: + nn *= 4 + rb = (op >> 3) & 7 + rd = op & 7 + print(f'{codes[opcode]} r{rd},[r{rb},#{nn}]') + elif op & 0xfc00 == 0x4400: # High register ops + opcode = (op >> 8) & 3 + codes = ('ADD', 'CMP', 'MOV', 'NOP', 'BX') + MSBd = (op >> 7) & 1 + MSBs = (op >> 6) & 1 + rs = (op >> 3) & 7 + rd = op & 7 + rs |= MSBs << 3 + rd += MSBd << 3 + if opcode == 3: + flag = 'BLX' if MSBd else 'BX' + print(f'{flag} r{rs}') + else: + print(f'{codes[opcode]} r{rd},r{rs}') + else: + print() + + +def match_iter(instrs, graph, slices=10): # Iteratively try to find a match + matches = match_instrs(instrs, graph) # Try to match the entire sequence first + if len(matches) == 1: # One perfect match + return matches[0][1] + elif not matches: # No match anywhere + return None + potential = {t[1] for t in matches} # All potential matches + for _ in range(slices): # Slice the list randomly and search for matches + start = random.randint(1, len(instrs)) + end = random.randint(1, len(instrs)) + if start == end: + end += 1 + elif end < start: + start, end = end, start + matches = match_instrs(instrs[start:end], graph) + min_len = max((end - start) // 2, 1) + new_set = {t[1]-2*start for t in matches if t[0] >= min_len} + potential = potential & new_set # Take intersection of old and new locations + if not potential: + return None + elif len(potential) == 1: + addr = potential.pop() + return addr + return None + + +def match_loop(rom: str, unknown, known: dict, graph) -> Dict[str, str]: # Interactive + rv_known = {addr: name for name, (addr, size) in known.items()} + print(f'Pool: {len(rv_known)}') + keys = list(unknown.keys()) + random.shuffle(keys) + unk_exp = re.compile(r'sub_[\dA-Fa-f]+') + replace: Dict[str, str] = {} # Maps old names to new names + # print('At any time, type "quit" to quit and replace all correct names') + match_count = 0 + print('Matched 0 functions', end='', flush=True) + with open(rom, 'rb') as f: + for name in keys: + addr, size = unknown[name] + if not size: + continue + f.seek(addr & 0xfffffe) + data = f.read(size) + instrs = [t[0] for t in struct.iter_unpack(' + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile new file mode 100644 index 0000000..af7d19f --- /dev/null +++ b/tools/aif2pcm/Makefile @@ -0,0 +1,18 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -Wno-switch -Werror -std=c11 -O2 + +LIBS = -lm + +SRCS = main.c extended.c + +.PHONY: all clean + +all: aif2pcm + @: + +aif2pcm: $(SRCS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) + +clean: + $(RM) aif2pcm aif2pcm.exe diff --git a/tools/aif2pcm/extended.c b/tools/aif2pcm/extended.c new file mode 100644 index 0000000..9444916 --- /dev/null +++ b/tools/aif2pcm/extended.c @@ -0,0 +1,172 @@ +/* $Id: extended.c,v 1.8 2006/12/23 11:17:49 toad32767 Exp $ */ +/*- + * Copyright (c) 2005, 2006 by Marco Trillo + * + * Permission is hereby granted, free of charge, to any + * person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the + * Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the + * Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice + * shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS + * OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +/* + * Infinite & NAN values + * for non-IEEE systems + */ +#ifndef HUGE_VAL +#ifdef HUGE +#define INFINITE_VALUE HUGE +#define NAN_VALUE HUGE +#endif +#else +#define INFINITE_VALUE HUGE_VAL +#define NAN_VALUE HUGE_VAL +#endif + +/* + * IEEE 754 Extended Precision + * + * Implementation here is the 80-bit extended precision + * format of Motorola 68881, Motorola 68882 and Motorola + * 68040 FPUs, as well as Intel 80x87 FPUs. + * + * See: + * http://www.freescale.com/files/32bit/doc/fact_sheet/BR509.pdf + */ +/* + * Exponent range: [-16383,16383] + * Precision for mantissa: 64 bits with no hidden bit + * Bias: 16383 + */ + +/* + * Write IEEE Extended Precision Numbers + */ +void +ieee754_write_extended(double in, uint8_t* out) +{ + int sgn, exp, shift; + double fraction, t; + unsigned int lexp, hexp; + unsigned long low, high; + + if (in == 0.0) { + memset(out, 0, 10); + return; + } + if (in < 0.0) { + in = fabs(in); + sgn = 1; + } else + sgn = 0; + + fraction = frexp(in, &exp); + + if (exp == 0 || exp > 16384) { + if (exp > 16384) /* infinite value */ + low = high = 0; + else { + low = 0x80000000; + high = 0; + } + exp = 32767; + goto done; + } + fraction = ldexp(fraction, 32); + t = floor(fraction); + low = (unsigned long) t; + fraction -= t; + t = floor(ldexp(fraction, 32)); + high = (unsigned long) t; + + /* Convert exponents < -16382 to -16382 (then they will be + * stored as -16383) */ + if (exp < -16382) { + shift = 0 - exp - 16382; + high >>= shift; + high |= (low << (32 - shift)); + low >>= shift; + exp = -16382; + } + exp += 16383 - 1; /* bias */ + +done: + lexp = ((unsigned int) exp) >> 8; + hexp = ((unsigned int) exp) & 0xFF; + + /* big endian */ + out[0] = ((uint8_t) sgn) << 7; + out[0] |= (uint8_t) lexp; + out[1] = (uint8_t) hexp; + out[2] = (uint8_t) (low >> 24); + out[3] = (uint8_t) ((low >> 16) & 0xFF); + out[4] = (uint8_t) ((low >> 8) & 0xFF); + out[5] = (uint8_t) (low & 0xFF); + out[6] = (uint8_t) (high >> 24); + out[7] = (uint8_t) ((high >> 16) & 0xFF); + out[8] = (uint8_t) ((high >> 8) & 0xFF); + out[9] = (uint8_t) (high & 0xFF); + + return; +} + + +/* + * Read IEEE Extended Precision Numbers + */ +double +ieee754_read_extended(uint8_t* in) +{ + int sgn, exp; + unsigned long low, high; + double out; + + /* Extract the components from the big endian buffer */ + sgn = (int) (in[0] >> 7); + exp = ((int) (in[0] & 0x7F) << 8) | ((int) in[1]); + low = (((unsigned long) in[2]) << 24) + | (((unsigned long) in[3]) << 16) + | (((unsigned long) in[4]) << 8) | (unsigned long) in[5]; + high = (((unsigned long) in[6]) << 24) + | (((unsigned long) in[7]) << 16) + | (((unsigned long) in[8]) << 8) | (unsigned long) in[9]; + + if (exp == 0 && low == 0 && high == 0) + return (sgn ? -0.0 : 0.0); + + switch (exp) { + case 32767: + if (low == 0 && high == 0) + return (sgn ? -INFINITE_VALUE : INFINITE_VALUE); + else + return (sgn ? -NAN_VALUE : NAN_VALUE); + default: + exp -= 16383; /* unbias exponent */ + + } + + out = ldexp((double) low, -31 + exp); + out += ldexp((double) high, -63 + exp); + + return (sgn ? -out : out); +} diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c new file mode 100644 index 0000000..51dbf1b --- /dev/null +++ b/tools/aif2pcm/main.c @@ -0,0 +1,830 @@ +// Copyright(c) 2016 huderlem +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include +#include +#include +#include +#include +#include + +/* extended.c */ +void ieee754_write_extended (double, uint8_t*); +double ieee754_read_extended (uint8_t*); + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +typedef struct { + unsigned long num_samples; + uint8_t *samples; + uint8_t midi_note; + bool has_loop; + unsigned long loop_offset; + double sample_rate; + unsigned long real_num_samples; +} AifData; + +struct Bytes { + unsigned long length; + uint8_t *data; +}; + +struct Bytes *read_bytearray(const char *filename) +{ + struct Bytes *bytes = malloc(sizeof(struct Bytes)); + FILE *f = fopen(filename, "rb"); + if (!f) + { + FATAL_ERROR("Failed to open '%s' for reading!\n", filename); + } + fseek(f, 0, SEEK_END); + bytes->length = ftell(f); + fseek(f, 0, SEEK_SET); + bytes->data = malloc(bytes->length); + unsigned long read = fread(bytes->data, bytes->length, 1, f); + fclose(f); + if (read <= 0) + { + FATAL_ERROR("Failed to read data from '%s'!\n", filename); + } + return bytes; +} + +void write_bytearray(const char *filename, struct Bytes *bytes) +{ + FILE *f = fopen(filename, "wb"); + if (!f) + { + FATAL_ERROR("Failed to open '%s' for writing!\n", filename); + } + fwrite(bytes->data, bytes->length, 1, f); + fclose(f); +} + +void free_bytearray(struct Bytes *bytes) +{ + free(bytes->data); + free(bytes); +} + +char *get_file_extension(char *filename) +{ + char *index = strrchr(filename, '.'); + if (!index || index == filename) + { + return NULL; + } + return index + 1; +} + +char *new_file_extension(char *filename, char *ext) +{ + char *index = strrchr(filename, '.'); + if (!index || index == filename) + { + index = filename + strlen(filename); + } + int length = index - filename; + char *new_filename = malloc(length + 1 + strlen(ext) + 1); + if (new_filename) + { + strcpy(new_filename, filename); + new_filename[length] = '.'; + strcpy(new_filename + length + 1, ext); + } + return new_filename; +} + +void read_aif(struct Bytes *aif, AifData *aif_data) +{ + aif_data->has_loop = false; + aif_data->num_samples = 0; + + unsigned long pos = 0; + char chunk_name[5]; chunk_name[4] = '\0'; + char chunk_type[5]; chunk_type[4] = '\0'; + + // Check for FORM Chunk + memcpy(chunk_name, &aif->data[pos], 4); + pos += 4; + if (strcmp(chunk_name, "FORM") != 0) + { + FATAL_ERROR("Input .aif file has invalid header Chunk '%s'!\n", chunk_name); + } + + // Read size of whole file. + unsigned long whole_chunk_size = aif->data[pos++] << 24; + whole_chunk_size |= (aif->data[pos++] << 16); + whole_chunk_size |= (aif->data[pos++] << 8); + whole_chunk_size |= (uint8_t)aif->data[pos++]; + + unsigned long expected_whole_chunk_size = aif->length - 8; + if (whole_chunk_size != expected_whole_chunk_size) + { + FATAL_ERROR("FORM Chunk ckSize '%lu' doesn't match actual size '%lu'!\n", whole_chunk_size, expected_whole_chunk_size); + } + + // Check for AIFF Form Type + memcpy(chunk_type, &aif->data[pos], 4); + pos += 4; + if (strcmp(chunk_type, "AIFF") != 0) + { + FATAL_ERROR("FORM Type is '%s', but it must be AIFF!", chunk_type); + } + + unsigned long num_sample_frames = 0; + + // Read all the Chunks to populate the AifData struct. + while ((pos + 8) < aif->length) + { + // Read Chunk id + memcpy(chunk_name, &aif->data[pos], 4); + pos += 4; + + unsigned long chunk_size = (aif->data[pos++] << 24); + chunk_size |= (aif->data[pos++] << 16); + chunk_size |= (aif->data[pos++] << 8); + chunk_size |= aif->data[pos++]; + + if ((pos + chunk_size) > aif->length) + { + FATAL_ERROR("%s chunk at 0x%lx reached end of file before finishing\n", chunk_name, pos); + } + + if (strcmp(chunk_name, "COMM") == 0) + { + short num_channels = (aif->data[pos++] << 8); + num_channels |= (uint8_t)aif->data[pos++]; + if (num_channels != 1) + { + FATAL_ERROR("numChannels (%d) in the COMM Chunk must be 1!\n", num_channels); + } + + num_sample_frames = (aif->data[pos++] << 24); + num_sample_frames |= (aif->data[pos++] << 16); + num_sample_frames |= (aif->data[pos++] << 8); + num_sample_frames |= (uint8_t)aif->data[pos++]; + + short sample_size = (aif->data[pos++] << 8); + sample_size |= (uint8_t)aif->data[pos++]; + if (sample_size != 8) + { + FATAL_ERROR("sampleSize (%d) in the COMM Chunk must be 8!\n", sample_size); + } + + double sample_rate = ieee754_read_extended((uint8_t*)(aif->data + pos)); + pos += 10; + + aif_data->sample_rate = sample_rate; + + if (aif_data->num_samples == 0) + { + aif_data->num_samples = num_sample_frames; + } + } + else if (strcmp(chunk_name, "MARK") == 0) + { + unsigned short num_markers = (aif->data[pos++] << 8); + num_markers |= (uint8_t)aif->data[pos++]; + + // Read each marker and look for the "START" marker. + for (int i = 0; i < num_markers; i++) + { + unsigned short marker_id = (aif->data[pos++] << 8); + marker_id |= (uint8_t)aif->data[pos++]; + + unsigned long marker_position = (aif->data[pos++] << 24); + marker_position |= (aif->data[pos++] << 16); + marker_position |= (aif->data[pos++] << 8); + marker_position |= (uint8_t)aif->data[pos++]; + + // Marker id is a pascal-style string. + uint8_t marker_name_size = aif->data[pos++]; + char *marker_name = (char *)malloc((marker_name_size + 1) * sizeof(char)); + memcpy(marker_name, &aif->data[pos], marker_name_size); + marker_name[marker_name_size] = '\0'; + pos += marker_name_size; + + if (strcmp(marker_name, "START") == 0) + { + aif_data->loop_offset = marker_position; + aif_data->has_loop = true; + } + else if (strcmp(marker_name, "END") == 0) + { + if (!aif_data->has_loop) { + aif_data->loop_offset = marker_position; + aif_data->has_loop = true; + } + aif_data->num_samples = marker_position; + } + + free(marker_name); + } + } + else if (strcmp(chunk_name, "INST") == 0) + { + uint8_t midi_note = (uint8_t)aif->data[pos++]; + + aif_data->midi_note = midi_note; + + // Skip over data we don't need. + pos += 19; + } + else if (strcmp(chunk_name, "SSND") == 0) + { + // SKip offset and blockSize + pos += 8; + + unsigned long num_samples = chunk_size - 8; + uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t)); + memcpy(sample_data, &aif->data[pos], num_samples); + + aif_data->samples = sample_data; + aif_data->real_num_samples = num_samples; + pos += chunk_size - 8; + } + else + { + // Skip over unsupported chunks. + pos += chunk_size; + } + } +} + +// This is a table of deltas between sample values in compressed PCM data. +const int gDeltaEncodingTable[] = { + 0, 1, 4, 9, 16, 25, 36, 49, + -64, -49, -36, -25, -16, -9, -4, -1, +}; + +struct Bytes *delta_decompress(struct Bytes *delta, unsigned int expected_length) +{ + struct Bytes *pcm = malloc(sizeof(struct Bytes)); + pcm->length = expected_length; + pcm->data = malloc(pcm->length + 0x40); + + uint8_t hi, lo; + unsigned int i = 0; + unsigned int j = 0; + int k; + int8_t base; + while (i < delta->length) + { + base = (int8_t)delta->data[i++]; + pcm->data[j++] = (uint8_t)base; + if (i >= delta->length) + { + break; + } + if (j >= pcm->length) + { + break; + } + lo = delta->data[i] & 0xf; + base += gDeltaEncodingTable[lo]; + pcm->data[j++] = base; + i++; + if (i >= delta->length) + { + break; + } + if (j >= pcm->length) + { + break; + } + for (k = 0; k < 31; k++) + { + hi = (delta->data[i] >> 4) & 0xf; + base += gDeltaEncodingTable[hi]; + pcm->data[j++] = base; + if (j >= pcm->length) + { + break; + } + lo = delta->data[i] & 0xf; + base += gDeltaEncodingTable[lo]; + pcm->data[j++] = base; + i++; + if (i >= delta->length) + { + break; + } + if (j >= pcm->length) + { + break; + } + } + if (j >= pcm->length) + { + break; + } + } + + pcm->length = j; + return pcm; +} + +int get_delta_index(uint8_t sample, uint8_t prev_sample) +{ + int best_error = INT_MAX; + int best_index = -1; + + for (int i = 0; i < 16; i++) + { + uint8_t new_sample = prev_sample + gDeltaEncodingTable[i]; + int error = sample > new_sample ? sample - new_sample : new_sample - sample; + + if (error < best_error) + { + best_error = error; + best_index = i; + } + } + + return best_index; +} + +struct Bytes *delta_compress(struct Bytes *pcm) +{ + struct Bytes *delta = malloc(sizeof(struct Bytes)); + // estimate the length so we can malloc + int num_blocks = pcm->length / 64; + delta->length = num_blocks * 33; + + int extra = pcm->length % 64; + if (extra) + { + delta->length += 1; + extra -= 1; + } + if (extra) + { + delta->length += 1; + extra -= 1; + } + if (extra) + { + delta->length += (extra + 1) / 2; + } + + delta->data = malloc(delta->length + 33); + + unsigned int i = 0; + unsigned int j = 0; + int k; + uint8_t base; + int delta_index; + + while (i < pcm->length) + { + base = pcm->data[i++]; + delta->data[j++] = base; + + if (i >= pcm->length) + { + break; + } + delta_index = get_delta_index(pcm->data[i++], base); + base += gDeltaEncodingTable[delta_index]; + delta->data[j++] = delta_index; + + for (k = 0; k < 31; k++) + { + if (i >= pcm->length) + { + break; + } + delta_index = get_delta_index(pcm->data[i++], base); + base += gDeltaEncodingTable[delta_index]; + delta->data[j] = (delta_index << 4); + + if (i >= pcm->length) + { + break; + } + delta_index = get_delta_index(pcm->data[i++], base); + base += gDeltaEncodingTable[delta_index]; + delta->data[j++] |= delta_index; + } + } + + delta->length = j; + + return delta; +} + +#define STORE_U32_LE(dest, value) \ +do { \ + *(dest) = (value) & 0xff; \ + *((dest) + 1) = ((value) >> 8) & 0xff; \ + *((dest) + 2) = ((value) >> 16) & 0xff; \ + *((dest) + 3) = ((value) >> 24) & 0xff; \ +} while (0) + +#define LOAD_U32_LE(var, src) \ +do { \ + (var) = *(src); \ + (var) |= (*((src) + 1) << 8); \ + (var) |= (*((src) + 2) << 16); \ + (var) |= (*((src) + 3) << 24); \ +} while (0) + +// Reads an .aif file and produces a .pcm file containing an array of 8-bit samples. +void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress) +{ + struct Bytes *aif = read_bytearray(aif_filename); + AifData aif_data = {0,0,0,0,0,0,0}; + read_aif(aif, &aif_data); + + int header_size = 0x10; + struct Bytes *pcm; + struct Bytes output = {0,0}; + + if (compress) + { + struct Bytes *input = malloc(sizeof(struct Bytes)); + input->data = aif_data.samples; + input->length = aif_data.real_num_samples; + pcm = delta_compress(input); + free(input); + } + else + { + pcm = malloc(sizeof(struct Bytes)); + pcm->data = aif_data.samples; + pcm->length = aif_data.real_num_samples; + } + output.length = header_size + pcm->length; + output.data = malloc(output.length); + + uint32_t pitch_adjust = (uint32_t)(aif_data.sample_rate * 1024); + uint32_t loop_offset = (uint32_t)(aif_data.loop_offset); + uint32_t adjusted_num_samples = (uint32_t)(aif_data.num_samples - 1); + uint32_t flags = 0; + if (aif_data.has_loop) flags |= 0x40000000; + if (compress) flags |= 1; + STORE_U32_LE(output.data + 0, flags); + STORE_U32_LE(output.data + 4, pitch_adjust); + STORE_U32_LE(output.data + 8, loop_offset); + STORE_U32_LE(output.data + 12, adjusted_num_samples); + memcpy(&output.data[header_size], pcm->data, pcm->length); + write_bytearray(pcm_filename, &output); + + free(aif->data); + free(aif); + free(pcm); + free(output.data); + free(aif_data.samples); +} + +// Reads a .pcm file containing an array of 8-bit samples and produces an .aif file. +// See http://www-mmsp.ece.mcgill.ca/documents/audioformats/aiff/Docs/AIFF-1.3.pdf for .aif file specification. +void pcm2aif(const char *pcm_filename, const char *aif_filename, uint32_t base_note) +{ + struct Bytes *pcm = read_bytearray(pcm_filename); + + AifData *aif_data = malloc(sizeof(AifData)); + + uint32_t flags; + LOAD_U32_LE(flags, pcm->data + 0); + aif_data->has_loop = flags & 0x40000000; + bool compressed = flags & 1; + + uint32_t pitch_adjust; + LOAD_U32_LE(pitch_adjust, pcm->data + 4); + aif_data->sample_rate = pitch_adjust / 1024.0; + + LOAD_U32_LE(aif_data->loop_offset, pcm->data + 8); + LOAD_U32_LE(aif_data->num_samples, pcm->data + 12); + aif_data->num_samples += 1; + + if (compressed) + { + struct Bytes *delta = pcm; + uint8_t *pcm_data = pcm->data; + delta->length -= 0x10; + delta->data += 0x10; + pcm = delta_decompress(delta, aif_data->num_samples); + free(pcm_data); + free(delta); + } + else + { + pcm->length -= 0x10; + pcm->data += 0x10; + } + + aif_data->samples = malloc(pcm->length); + memcpy(aif_data->samples, pcm->data, pcm->length); + + struct Bytes *aif = malloc(sizeof(struct Bytes)); + aif->length = 54 + 60 + pcm->length; + aif->data = malloc(aif->length); + + long pos = 0; + + // First, write the FORM header chunk. + // FORM Chunk ckID + aif->data[pos++] = 'F'; + aif->data[pos++] = 'O'; + aif->data[pos++] = 'R'; + aif->data[pos++] = 'M'; + + // FORM Chunk ckSize + unsigned long form_size = pos; + unsigned long data_size = aif->length - 8; + aif->data[pos++] = ((data_size >> 24) & 0xFF); + aif->data[pos++] = ((data_size >> 16) & 0xFF); + aif->data[pos++] = ((data_size >> 8) & 0xFF); + aif->data[pos++] = (data_size & 0xFF); + + // FORM Chunk formType + aif->data[pos++] = 'A'; + aif->data[pos++] = 'I'; + aif->data[pos++] = 'F'; + aif->data[pos++] = 'F'; + + // Next, write the Common Chunk + // Common Chunk ckID + aif->data[pos++] = 'C'; + aif->data[pos++] = 'O'; + aif->data[pos++] = 'M'; + aif->data[pos++] = 'M'; + + // Common Chunk ckSize + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 18; + + // Common Chunk numChannels + aif->data[pos++] = 0; + aif->data[pos++] = 1; // 1 channel + + // Common Chunk numSampleFrames + aif->data[pos++] = ((aif_data->num_samples >> 24) & 0xFF); + aif->data[pos++] = ((aif_data->num_samples >> 16) & 0xFF); + aif->data[pos++] = ((aif_data->num_samples >> 8) & 0xFF); + aif->data[pos++] = (aif_data->num_samples & 0xFF); + + // Common Chunk sampleSize + aif->data[pos++] = 0; + aif->data[pos++] = 8; // 8 bits per sample + + // Common Chunk sampleRate + //double sample_rate = pitch_adjust / 1024.0; + uint8_t sample_rate_buffer[10]; + ieee754_write_extended(aif_data->sample_rate, sample_rate_buffer); + for (int i = 0; i < 10; i++) + { + aif->data[pos++] = sample_rate_buffer[i]; + } + + if (aif_data->has_loop) + { + + // Marker Chunk ckID + aif->data[pos++] = 'M'; + aif->data[pos++] = 'A'; + aif->data[pos++] = 'R'; + aif->data[pos++] = 'K'; + + // Marker Chunk ckSize + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 12 + (aif_data->has_loop ? 12 : 0); + + // Marker Chunk numMarkers + aif->data[pos++] = 0; + aif->data[pos++] = (aif_data->has_loop ? 2 : 1); + + // Marker loop start + aif->data[pos++] = 0; + aif->data[pos++] = 1; // id = 1 + + long loop_start = aif_data->loop_offset; + aif->data[pos++] = ((loop_start >> 24) & 0xFF); + aif->data[pos++] = ((loop_start >> 16) & 0xFF); + aif->data[pos++] = ((loop_start >> 8) & 0xFF); + aif->data[pos++] = (loop_start & 0xFF); // position + + aif->data[pos++] = 5; // pascal-style string length + aif->data[pos++] = 'S'; + aif->data[pos++] = 'T'; + aif->data[pos++] = 'A'; + aif->data[pos++] = 'R'; + aif->data[pos++] = 'T'; // markerName + + // Marker loop end + aif->data[pos++] = 0; + aif->data[pos++] = (aif_data->has_loop ? 2 : 1); // id = 2 + + long loop_end = aif_data->num_samples; + aif->data[pos++] = ((loop_end >> 24) & 0xFF); + aif->data[pos++] = ((loop_end >> 16) & 0xFF); + aif->data[pos++] = ((loop_end >> 8) & 0xFF); + aif->data[pos++] = (loop_end & 0xFF); // position + + aif->data[pos++] = 3; // pascal-style string length + aif->data[pos++] = 'E'; + aif->data[pos++] = 'N'; + aif->data[pos++] = 'D'; + } + + // Instrument Chunk ckID + aif->data[pos++] = 'I'; + aif->data[pos++] = 'N'; + aif->data[pos++] = 'S'; + aif->data[pos++] = 'T'; + + // Instrument Chunk ckSize + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 20; + + aif->data[pos++] = base_note; // baseNote + aif->data[pos++] = 0; // detune + aif->data[pos++] = 0; // lowNote + aif->data[pos++] = 127; // highNote + aif->data[pos++] = 1; // lowVelocity + aif->data[pos++] = 127; // highVelocity + aif->data[pos++] = 0; // gain (hi) + aif->data[pos++] = 0; // gain (lo) + + // Instrument Chunk sustainLoop + aif->data[pos++] = 0; + aif->data[pos++] = 1; // playMode = ForwardLooping + + aif->data[pos++] = 0; + aif->data[pos++] = 1; // beginLoop marker id + + aif->data[pos++] = 0; + aif->data[pos++] = 2; // endLoop marker id + + // Instrument Chunk releaseLoop + aif->data[pos++] = 0; + aif->data[pos++] = 1; // playMode = ForwardLooping + + aif->data[pos++] = 0; + aif->data[pos++] = 1; // beginLoop marker id + + aif->data[pos++] = 0; + aif->data[pos++] = 2; // endLoop marker id + + // Finally, write the Sound Data Chunk + // Sound Data Chunk ckID + aif->data[pos++] = 'S'; + aif->data[pos++] = 'S'; + aif->data[pos++] = 'N'; + aif->data[pos++] = 'D'; + + // Sound Data Chunk ckSize + unsigned long sound_data_size = pcm->length + 8; + aif->data[pos++] = ((sound_data_size >> 24) & 0xFF); + aif->data[pos++] = ((sound_data_size >> 16) & 0xFF); + aif->data[pos++] = ((sound_data_size >> 8) & 0xFF); + aif->data[pos++] = (sound_data_size & 0xFF); + + // Sound Data Chunk offset + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + + // Sound Data Chunk blockSize + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + aif->data[pos++] = 0; + + // Sound Data Chunk soundData + for (unsigned int i = 0; i < aif_data->loop_offset; i++) + { + aif->data[pos++] = aif_data->samples[i]; + } + + int j = 0; + for (unsigned int i = aif_data->loop_offset; i < pcm->length; i++) + { + int pcm_index = aif_data->loop_offset + (j++ % (pcm->length - aif_data->loop_offset)); + aif->data[pos++] = aif_data->samples[pcm_index]; + } + + aif->length = pos; + + // Go back and rewrite ckSize + data_size = aif->length - 8; + aif->data[form_size + 0] = ((data_size >> 24) & 0xFF); + aif->data[form_size + 1] = ((data_size >> 16) & 0xFF); + aif->data[form_size + 2] = ((data_size >> 8) & 0xFF); + aif->data[form_size + 3] = (data_size & 0xFF); + + write_bytearray(aif_filename, aif); + + free(aif->data); + free(aif); +} + +void usage(void) +{ + fprintf(stderr, "Usage: aif2pcm bin_file [aif_file]\n"); + fprintf(stderr, " aif2pcm aif_file [bin_file] [--compress]\n"); +} + +int main(int argc, char **argv) +{ + if (argc < 2) + { + usage(); + exit(1); + } + + char *input_file = argv[1]; + char *extension = get_file_extension(input_file); + char *output_file; + bool compressed = false; + + if (argc > 3) + { + for (int i = 3; i < argc; i++) + { + if (strcmp(argv[i], "--compress") == 0) + { + compressed = true; + } + } + } + + if (strcmp(extension, "aif") == 0 || strcmp(extension, "aiff") == 0) + { + if (argc >= 3) + { + output_file = argv[2]; + aif2pcm(input_file, output_file, compressed); + } + else + { + output_file = new_file_extension(input_file, "bin"); + aif2pcm(input_file, output_file, compressed); + free(output_file); + } + } + else if (strcmp(extension, "bin") == 0) + { + if (argc >= 3) + { + output_file = argv[2]; + pcm2aif(input_file, output_file, 60); + } + else + { + output_file = new_file_extension(input_file, "aif"); + pcm2aif(input_file, output_file, 60); + free(output_file); + } + } + else + { + FATAL_ERROR("Input file must be .aif or .bin: '%s'\n", input_file); + } + + return 0; +} diff --git a/tools/bin2c/.gitignore b/tools/bin2c/.gitignore new file mode 100644 index 0000000..366f3d3 --- /dev/null +++ b/tools/bin2c/.gitignore @@ -0,0 +1 @@ +bin2c diff --git a/tools/bin2c/LICENSE b/tools/bin2c/LICENSE new file mode 100644 index 0000000..534d153 --- /dev/null +++ b/tools/bin2c/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile new file mode 100644 index 0000000..ab11e1b --- /dev/null +++ b/tools/bin2c/Makefile @@ -0,0 +1,16 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 + +.PHONY: all clean + +SRCS = bin2c.c + +all: bin2c + @: + +bin2c: $(SRCS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) bin2c bin2c.exe diff --git a/tools/bin2c/bin2c.c b/tools/bin2c/bin2c.c new file mode 100644 index 0000000..b4bd437 --- /dev/null +++ b/tools/bin2c/bin2c.c @@ -0,0 +1,201 @@ +// Copyright(c) 2015-2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include +#include +#include +#include + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +unsigned char *ReadWholeFile(char *path, int *size) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + fseek(fp, 0, SEEK_END); + + *size = ftell(fp); + + unsigned char *buffer = malloc(*size); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path); + + rewind(fp); + + if (fread(buffer, *size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path); + + fclose(fp); + + return buffer; +} + +int ExtractData(unsigned char *buffer, int offset, int size) +{ + switch (size) + { + case 1: + return buffer[offset]; + case 2: + return (buffer[offset + 1] << 8) + | buffer[offset]; + case 4: + return (buffer[offset + 3] << 24) + | (buffer[offset + 2] << 16) + | (buffer[offset + 1] << 8) + | buffer[offset]; + default: + FATAL_ERROR("Invalid size passed to ExtractData.\n"); + } +} + +int main(int argc, char **argv) +{ + if (argc < 3) + FATAL_ERROR("Usage: bin2c INPUT_FILE VAR_NAME [OPTIONS...]\n"); + + int fileSize; + unsigned char *buffer = ReadWholeFile(argv[1], &fileSize); + char *var_name = argv[2]; + int col = 1; + int pad = 0; + int size = 1; + bool isSigned = false; + bool isStatic = false; + bool isDecimal = false; + + for (int i = 3; i < argc; i++) + { + if (!strcmp(argv[i], "-col")) + { + i++; + + if (i >= argc) + FATAL_ERROR("Missing argument after '-col'.\n"); + + col = atoi(argv[i]); + } + else if (!strcmp(argv[i], "-pad")) + { + i++; + + if (i >= argc) + FATAL_ERROR("Missing argument after '-pad'.\n"); + + pad = atoi(argv[i]); + } + else if (!strcmp(argv[i], "-size")) + { + i++; + + if (i >= argc) + FATAL_ERROR("Missing argument after '-size'.\n"); + + size = atoi(argv[i]); + + if (size != 1 && size != 2 && size != 4) + FATAL_ERROR("Size must be 1, 2, or 4.\n"); + } + else if (!strcmp(argv[i], "-signed")) + { + isSigned = true; + isDecimal = true; + } + else if (!strcmp(argv[i], "-static")) + { + isStatic = true; + } + else if (!strcmp(argv[i], "-decimal")) + { + isDecimal = true; + } + else + { + FATAL_ERROR("Unrecognized option '%s'.\n", argv[i]); + } + } + + if ((fileSize & (size - 1)) != 0) + FATAL_ERROR("Size %d doesn't evenly divide file size %d.\n", size, fileSize); + + printf("// Generated file. Do not edit.\n\n"); + + if (isStatic) + printf("static "); + + printf("const "); + + if (isSigned) + printf("s%d ", 8 * size); + else + printf("u%d ", 8 * size); + + printf("%s[] =\n{", var_name); + + int count = fileSize / size; + int offset = 0; + + for (int i = 0; i < count; i++) + { + if (i % col == 0) + printf("\n "); + + int data = ExtractData(buffer, offset, size); + offset += size; + + if (isDecimal) + { + if (isSigned) + printf("%*d, ", pad, data); + else + printf("%*uu, ", pad, data); + } + else + { + printf("%#*xu, ", pad, data); + } + } + + printf("\n};\n"); + + return 0; +} diff --git a/tools/gbafix/.gitignore b/tools/gbafix/.gitignore new file mode 100644 index 0000000..3cebf8a --- /dev/null +++ b/tools/gbafix/.gitignore @@ -0,0 +1,2 @@ +gbafix +README diff --git a/tools/gbafix/COPYING b/tools/gbafix/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/tools/gbafix/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tools/gbafix/Makefile b/tools/gbafix/Makefile new file mode 100644 index 0000000..5b410da --- /dev/null +++ b/tools/gbafix/Makefile @@ -0,0 +1,13 @@ +CC = gcc +.PHONY: all clean + +SRCS = gbafix.c + +all: gbafix + @: + +gbafix: $(SRCS) + $(CC) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) gbafix gbafix.exe diff --git a/tools/gbafix/elf.h b/tools/gbafix/elf.h new file mode 100644 index 0000000..79d3b97 --- /dev/null +++ b/tools/gbafix/elf.h @@ -0,0 +1,3147 @@ +/* +From musl include/elf.h + +Copyright © 2005-2014 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef _ELF_H +#define _ELF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0 0 +#define ELFMAG0 0x7f + +#define EI_MAG1 1 +#define ELFMAG1 'E' + +#define EI_MAG2 2 +#define ELFMAG2 'L' + +#define EI_MAG3 3 +#define ELFMAG3 'F' + + +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define EI_CLASS 4 +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define EI_DATA 5 +#define ELFDATANONE 0 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 +#define ELFDATANUM 3 + +#define EI_VERSION 6 + + +#define EI_OSABI 7 +#define ELFOSABI_NONE 0 +#define ELFOSABI_SYSV 0 +#define ELFOSABI_HPUX 1 +#define ELFOSABI_NETBSD 2 +#define ELFOSABI_LINUX 3 +#define ELFOSABI_GNU 3 +#define ELFOSABI_SOLARIS 6 +#define ELFOSABI_AIX 7 +#define ELFOSABI_IRIX 8 +#define ELFOSABI_FREEBSD 9 +#define ELFOSABI_TRU64 10 +#define ELFOSABI_MODESTO 11 +#define ELFOSABI_OPENBSD 12 +#define ELFOSABI_ARM 97 +#define ELFOSABI_STANDALONE 255 + +#define EI_ABIVERSION 8 + +#define EI_PAD 9 + + + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_NUM 5 +#define ET_LOOS 0xfe00 +#define ET_HIOS 0xfeff +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + + + +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_860 7 +#define EM_MIPS 8 +#define EM_S370 9 +#define EM_MIPS_RS3_LE 10 + +#define EM_PARISC 15 +#define EM_VPP500 17 +#define EM_SPARC32PLUS 18 +#define EM_960 19 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 + +#define EM_V800 36 +#define EM_FR20 37 +#define EM_RH32 38 +#define EM_RCE 39 +#define EM_ARM 40 +#define EM_FAKE_ALPHA 41 +#define EM_SH 42 +#define EM_SPARCV9 43 +#define EM_TRICORE 44 +#define EM_ARC 45 +#define EM_H8_300 46 +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_H8_500 49 +#define EM_IA_64 50 +#define EM_MIPS_X 51 +#define EM_COLDFIRE 52 +#define EM_68HC12 53 +#define EM_MMA 54 +#define EM_PCP 55 +#define EM_NCPU 56 +#define EM_NDR1 57 +#define EM_STARCORE 58 +#define EM_ME16 59 +#define EM_ST100 60 +#define EM_TINYJ 61 +#define EM_X86_64 62 +#define EM_PDSP 63 + +#define EM_FX66 66 +#define EM_ST9PLUS 67 +#define EM_ST7 68 +#define EM_68HC16 69 +#define EM_68HC11 70 +#define EM_68HC08 71 +#define EM_68HC05 72 +#define EM_SVX 73 +#define EM_ST19 74 +#define EM_VAX 75 +#define EM_CRIS 76 +#define EM_JAVELIN 77 +#define EM_FIREPATH 78 +#define EM_ZSP 79 +#define EM_MMIX 80 +#define EM_HUANY 81 +#define EM_PRISM 82 +#define EM_AVR 83 +#define EM_FR30 84 +#define EM_D10V 85 +#define EM_D30V 86 +#define EM_V850 87 +#define EM_M32R 88 +#define EM_MN10300 89 +#define EM_MN10200 90 +#define EM_PJ 91 +#define EM_OR1K 92 +#define EM_OPENRISC 92 +#define EM_ARC_A5 93 +#define EM_ARC_COMPACT 93 +#define EM_XTENSA 94 +#define EM_VIDEOCORE 95 +#define EM_TMM_GPP 96 +#define EM_NS32K 97 +#define EM_TPC 98 +#define EM_SNP1K 99 +#define EM_ST200 100 +#define EM_IP2K 101 +#define EM_MAX 102 +#define EM_CR 103 +#define EM_F2MC16 104 +#define EM_MSP430 105 +#define EM_BLACKFIN 106 +#define EM_SE_C33 107 +#define EM_SEP 108 +#define EM_ARCA 109 +#define EM_UNICORE 110 +#define EM_EXCESS 111 +#define EM_DXP 112 +#define EM_ALTERA_NIOS2 113 +#define EM_CRX 114 +#define EM_XGATE 115 +#define EM_C166 116 +#define EM_M16C 117 +#define EM_DSPIC30F 118 +#define EM_CE 119 +#define EM_M32C 120 +#define EM_TSK3000 131 +#define EM_RS08 132 +#define EM_SHARC 133 +#define EM_ECOG2 134 +#define EM_SCORE7 135 +#define EM_DSP24 136 +#define EM_VIDEOCORE3 137 +#define EM_LATTICEMICO32 138 +#define EM_SE_C17 139 +#define EM_TI_C6000 140 +#define EM_TI_C2000 141 +#define EM_TI_C5500 142 +#define EM_TI_ARP32 143 +#define EM_TI_PRU 144 +#define EM_MMDSP_PLUS 160 +#define EM_CYPRESS_M8C 161 +#define EM_R32C 162 +#define EM_TRIMEDIA 163 +#define EM_QDSP6 164 +#define EM_8051 165 +#define EM_STXP7X 166 +#define EM_NDS32 167 +#define EM_ECOG1X 168 +#define EM_MAXQ30 169 +#define EM_XIMO16 170 +#define EM_MANIK 171 +#define EM_CRAYNV2 172 +#define EM_RX 173 +#define EM_METAG 174 +#define EM_MCST_ELBRUS 175 +#define EM_ECOG16 176 +#define EM_CR16 177 +#define EM_ETPU 178 +#define EM_SLE9X 179 +#define EM_L10M 180 +#define EM_K10M 181 +#define EM_AARCH64 183 +#define EM_AVR32 185 +#define EM_STM8 186 +#define EM_TILE64 187 +#define EM_TILEPRO 188 +#define EM_MICROBLAZE 189 +#define EM_CUDA 190 +#define EM_TILEGX 191 +#define EM_CLOUDSHIELD 192 +#define EM_COREA_1ST 193 +#define EM_COREA_2ND 194 +#define EM_ARC_COMPACT2 195 +#define EM_OPEN8 196 +#define EM_RL78 197 +#define EM_VIDEOCORE5 198 +#define EM_78KOR 199 +#define EM_56800EX 200 +#define EM_BA1 201 +#define EM_BA2 202 +#define EM_XCORE 203 +#define EM_MCHP_PIC 204 +#define EM_KM32 210 +#define EM_KMX32 211 +#define EM_EMX16 212 +#define EM_EMX8 213 +#define EM_KVARC 214 +#define EM_CDP 215 +#define EM_COGE 216 +#define EM_COOL 217 +#define EM_NORC 218 +#define EM_CSR_KALIMBA 219 +#define EM_Z80 220 +#define EM_VISIUM 221 +#define EM_FT32 222 +#define EM_MOXIE 223 +#define EM_AMDGPU 224 +#define EM_RISCV 243 +#define EM_BPF 247 +#define EM_NUM 248 + +#define EM_ALPHA 0x9026 + +#define EV_NONE 0 +#define EV_CURRENT 1 +#define EV_NUM 2 + +typedef struct { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_BEFORE 0xff00 + +#define SHN_AFTER 0xff01 + +#define SHN_HIPROC 0xff1f +#define SHN_LOOS 0xff20 +#define SHN_HIOS 0xff3f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + + + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_NUM 19 +#define SHT_LOOS 0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_CHECKSUM 0x6ffffff8 +#define SHT_LOSUNW 0x6ffffffa +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_GNU_verdef 0x6ffffffd +#define SHT_GNU_verneed 0x6ffffffe +#define SHT_GNU_versym 0x6fffffff +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0x8fffffff + +#define SHF_WRITE (1 << 0) +#define SHF_ALLOC (1 << 1) +#define SHF_EXECINSTR (1 << 2) +#define SHF_MERGE (1 << 4) +#define SHF_STRINGS (1 << 5) +#define SHF_INFO_LINK (1 << 6) +#define SHF_LINK_ORDER (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP (1 << 9) +#define SHF_TLS (1 << 10) +#define SHF_COMPRESSED (1 << 11) +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 +#define SHF_ORDERED (1 << 30) +#define SHF_EXCLUDE (1U << 31) + +typedef struct { + Elf32_Word ch_type; + Elf32_Word ch_size; + Elf32_Word ch_addralign; +} Elf32_Chdr; + +typedef struct { + Elf64_Word ch_type; + Elf64_Word ch_reserved; + Elf64_Xword ch_size; + Elf64_Xword ch_addralign; +} Elf64_Chdr; + +#define ELFCOMPRESS_ZLIB 1 +#define ELFCOMPRESS_LOOS 0x60000000 +#define ELFCOMPRESS_HIOS 0x6fffffff +#define ELFCOMPRESS_LOPROC 0x70000000 +#define ELFCOMPRESS_HIPROC 0x7fffffff + + +#define GRP_COMDAT 0x1 + +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +typedef struct { + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF 0xffff +#define SYMINFO_BT_PARENT 0xfffe +#define SYMINFO_BT_LOWRESERVE 0xff00 + +#define SYMINFO_FLG_DIRECT 0x0001 +#define SYMINFO_FLG_PASSTHRU 0x0002 +#define SYMINFO_FLG_COPY 0x0004 +#define SYMINFO_FLG_LAZYLOAD 0x0008 + +#define SYMINFO_NONE 0 +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val) ((val) & 0xf) +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_NUM 3 +#define STB_LOOS 10 +#define STB_GNU_UNIQUE 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_NUM 7 +#define STT_LOOS 10 +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#define STN_UNDEF 0 + +#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) +#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 +#define STV_PROTECTED 3 + + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val) ((val) >> 8) +#define ELF32_R_TYPE(val) ((val) & 0xff) +#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + + + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_NUM 8 +#define PT_LOOS 0x60000000 +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa +#define PT_SUNWSTACK 0x6ffffffb +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + + +#define PN_XNUM 0xffff + + +#define PF_X (1 << 0) +#define PF_W (1 << 1) +#define PF_R (1 << 2) +#define PF_MASKOS 0x0ff00000 +#define PF_MASKPROC 0xf0000000 + + + +#define NT_PRSTATUS 1 +#define NT_FPREGSET 2 +#define NT_PRPSINFO 3 +#define NT_PRXREG 4 +#define NT_TASKSTRUCT 4 +#define NT_PLATFORM 5 +#define NT_AUXV 6 +#define NT_GWINDOWS 7 +#define NT_ASRS 8 +#define NT_PSTATUS 10 +#define NT_PSINFO 13 +#define NT_PRCRED 14 +#define NT_UTSNAME 15 +#define NT_LWPSTATUS 16 +#define NT_LWPSINFO 17 +#define NT_PRFPXREG 20 +#define NT_SIGINFO 0x53494749 +#define NT_FILE 0x46494c45 +#define NT_PRXFPREG 0x46e62b7f +#define NT_PPC_VMX 0x100 +#define NT_PPC_SPE 0x101 +#define NT_PPC_VSX 0x102 +#define NT_386_TLS 0x200 +#define NT_386_IOPERM 0x201 +#define NT_X86_XSTATE 0x202 +#define NT_S390_HIGH_GPRS 0x300 +#define NT_S390_TIMER 0x301 +#define NT_S390_TODCMP 0x302 +#define NT_S390_TODPREG 0x303 +#define NT_S390_CTRS 0x304 +#define NT_S390_PREFIX 0x305 +#define NT_S390_LAST_BREAK 0x306 +#define NT_S390_SYSTEM_CALL 0x307 +#define NT_S390_TDB 0x308 +#define NT_ARM_VFP 0x400 +#define NT_ARM_TLS 0x401 +#define NT_ARM_HW_BREAK 0x402 +#define NT_ARM_HW_WATCH 0x403 +#define NT_ARM_SYSTEM_CALL 0x404 +#define NT_ARM_SVE 0x405 +#define NT_METAG_CBUF 0x500 +#define NT_METAG_RPIPE 0x501 +#define NT_METAG_TLS 0x502 +#define NT_VERSION 1 + + + + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + + + +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_NUM 34 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff +#define DT_PROCNUM DT_MIPS_NUM + +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM 0x6ffffdf8 +#define DT_PLTPADSZ 0x6ffffdf9 +#define DT_MOVEENT 0x6ffffdfa +#define DT_MOVESZ 0x6ffffdfb +#define DT_FEATURE_1 0x6ffffdfc +#define DT_POSFLAG_1 0x6ffffdfd + +#define DT_SYMINSZ 0x6ffffdfe +#define DT_SYMINENT 0x6ffffdff +#define DT_VALRNGHI 0x6ffffdff +#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_TLSDESC_PLT 0x6ffffef6 +#define DT_TLSDESC_GOT 0x6ffffef7 +#define DT_GNU_CONFLICT 0x6ffffef8 +#define DT_GNU_LIBLIST 0x6ffffef9 +#define DT_CONFIG 0x6ffffefa +#define DT_DEPAUDIT 0x6ffffefb +#define DT_AUDIT 0x6ffffefc +#define DT_PLTPAD 0x6ffffefd +#define DT_MOVETAB 0x6ffffefe +#define DT_SYMINFO 0x6ffffeff +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM 0x6ffffff0 + +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa + + +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc + +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe + +#define DT_VERNEEDNUM 0x6fffffff +#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY 0x7ffffffd +#define DT_FILTER 0x7fffffff +#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM 3 + + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + + + +#define DF_1_NOW 0x00000001 +#define DF_1_GLOBAL 0x00000002 +#define DF_1_GROUP 0x00000004 +#define DF_1_NODELETE 0x00000008 +#define DF_1_LOADFLTR 0x00000010 +#define DF_1_INITFIRST 0x00000020 +#define DF_1_NOOPEN 0x00000040 +#define DF_1_ORIGIN 0x00000080 +#define DF_1_DIRECT 0x00000100 +#define DF_1_TRANS 0x00000200 +#define DF_1_INTERPOSE 0x00000400 +#define DF_1_NODEFLIB 0x00000800 +#define DF_1_NODUMP 0x00001000 +#define DF_1_CONFALT 0x00002000 +#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_DISPRELDNE 0x00008000 +#define DF_1_DISPRELPND 0x00010000 +#define DF_1_NODIRECT 0x00020000 +#define DF_1_IGNMULDEF 0x00040000 +#define DF_1_NOKSYMS 0x00080000 +#define DF_1_NOHDR 0x00100000 +#define DF_1_EDITED 0x00200000 +#define DF_1_NORELOC 0x00400000 +#define DF_1_SYMINTPOSE 0x00800000 +#define DF_1_GLOBAUDIT 0x01000000 +#define DF_1_SINGLETON 0x02000000 + +#define DTF_1_PARINIT 0x00000001 +#define DTF_1_CONFEXP 0x00000002 + + +#define DF_P1_LAZYLOAD 0x00000001 +#define DF_P1_GROUPPERM 0x00000002 + + + + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE 0 +#define VER_DEF_CURRENT 1 +#define VER_DEF_NUM 2 + + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_LORESERVE 0xff00 +#define VER_NDX_ELIMINATE 0xff01 + + + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + + + + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM 2 + + + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK 0x2 + + + +typedef struct { + uint32_t a_type; + union { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + uint64_t a_type; + union { + uint64_t a_val; + } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL 0 +#define AT_IGNORE 1 +#define AT_EXECFD 2 +#define AT_PHDR 3 +#define AT_PHENT 4 +#define AT_PHNUM 5 +#define AT_PAGESZ 6 +#define AT_BASE 7 +#define AT_FLAGS 8 +#define AT_ENTRY 9 +#define AT_NOTELF 10 +#define AT_UID 11 +#define AT_EUID 12 +#define AT_GID 13 +#define AT_EGID 14 +#define AT_CLKTCK 17 + + +#define AT_PLATFORM 15 +#define AT_HWCAP 16 + + + + +#define AT_FPUCW 18 + + +#define AT_DCACHEBSIZE 19 +#define AT_ICACHEBSIZE 20 +#define AT_UCACHEBSIZE 21 + + + +#define AT_IGNOREPPC 22 + +#define AT_SECURE 23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM 25 + +#define AT_HWCAP2 26 + +#define AT_EXECFN 31 + + + +#define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 + + + +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 + + + + +typedef struct { + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS "SUNW Solaris" + + +#define ELF_NOTE_GNU "GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT 1 + + +#define NT_GNU_ABI_TAG 1 +#define ELF_NOTE_ABI NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX 0 +#define ELF_NOTE_OS_GNU 1 +#define ELF_NOTE_OS_SOLARIS2 2 +#define ELF_NOTE_OS_FREEBSD 3 + +#define NT_GNU_BUILD_ID 3 +#define NT_GNU_GOLD_VERSION 4 + + + +typedef struct { + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info) ((info) >> 8) +#define ELF32_M_SIZE(info) ((unsigned char) (info)) +#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info) ELF32_M_SYM (info) +#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) + +#define EF_CPU32 0x00810000 + +#define R_68K_NONE 0 +#define R_68K_32 1 +#define R_68K_16 2 +#define R_68K_8 3 +#define R_68K_PC32 4 +#define R_68K_PC16 5 +#define R_68K_PC8 6 +#define R_68K_GOT32 7 +#define R_68K_GOT16 8 +#define R_68K_GOT8 9 +#define R_68K_GOT32O 10 +#define R_68K_GOT16O 11 +#define R_68K_GOT8O 12 +#define R_68K_PLT32 13 +#define R_68K_PLT16 14 +#define R_68K_PLT8 15 +#define R_68K_PLT32O 16 +#define R_68K_PLT16O 17 +#define R_68K_PLT8O 18 +#define R_68K_COPY 19 +#define R_68K_GLOB_DAT 20 +#define R_68K_JMP_SLOT 21 +#define R_68K_RELATIVE 22 +#define R_68K_NUM 23 + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_GOT32X 43 +#define R_386_NUM 44 + + + + + +#define STT_SPARC_REGISTER 13 + + + +#define EF_SPARCV9_MM 3 +#define EF_SPARCV9_TSO 0 +#define EF_SPARCV9_PSO 1 +#define EF_SPARCV9_RMO 2 +#define EF_SPARC_LEDATA 0x800000 +#define EF_SPARC_EXT_MASK 0xFFFF00 +#define EF_SPARC_32PLUS 0x000100 +#define EF_SPARC_SUN_US1 0x000200 +#define EF_SPARC_HAL_R1 0x000400 +#define EF_SPARC_SUN_US3 0x000800 + + + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 + + + +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 + +#define R_SPARC_NUM 253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM 2 + + +#define EF_MIPS_NOREORDER 1 +#define EF_MIPS_PIC 2 +#define EF_MIPS_CPIC 4 +#define EF_MIPS_XGOT 8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2 32 +#define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_FP64 512 +#define EF_MIPS_NAN2008 1024 +#define EF_MIPS_ARCH 0xf0000000 + + + +#define EF_MIPS_ARCH_1 0x00000000 +#define EF_MIPS_ARCH_2 0x10000000 +#define EF_MIPS_ARCH_3 0x20000000 +#define EF_MIPS_ARCH_4 0x30000000 +#define EF_MIPS_ARCH_5 0x40000000 +#define EF_MIPS_ARCH_32 0x50000000 +#define EF_MIPS_ARCH_64 0x60000000 +#define EF_MIPS_ARCH_32R2 0x70000000 +#define EF_MIPS_ARCH_64R2 0x80000000 + + +#define E_MIPS_ARCH_1 0x00000000 +#define E_MIPS_ARCH_2 0x10000000 +#define E_MIPS_ARCH_3 0x20000000 +#define E_MIPS_ARCH_4 0x30000000 +#define E_MIPS_ARCH_5 0x40000000 +#define E_MIPS_ARCH_32 0x50000000 +#define E_MIPS_ARCH_64 0x60000000 + + + +#define SHN_MIPS_ACOMMON 0xff00 +#define SHN_MIPS_TEXT 0xff01 +#define SHN_MIPS_DATA 0xff02 +#define SHN_MIPS_SCOMMON 0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_SHDR 0x70000010 +#define SHT_MIPS_FDESC 0x70000011 +#define SHT_MIPS_EXTSYM 0x70000012 +#define SHT_MIPS_DENSE 0x70000013 +#define SHT_MIPS_PDESC 0x70000014 +#define SHT_MIPS_LOCSYM 0x70000015 +#define SHT_MIPS_AUXSYM 0x70000016 +#define SHT_MIPS_OPTSYM 0x70000017 +#define SHT_MIPS_LOCSTR 0x70000018 +#define SHT_MIPS_LINE 0x70000019 +#define SHT_MIPS_RFDESC 0x7000001a +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL 0x10000000 +#define SHF_MIPS_MERGE 0x20000000 +#define SHF_MIPS_ADDR 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL 0x04000000 +#define SHF_MIPS_NAMES 0x02000000 +#define SHF_MIPS_NODUPE 0x01000000 + + + + + +#define STO_MIPS_DEFAULT 0x0 +#define STO_MIPS_INTERNAL 0x1 +#define STO_MIPS_HIDDEN 0x2 +#define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 +#define STO_MIPS_SC_ALIGN_UNUSED 0xff + + +#define STB_MIPS_SPLIT_COMMON 13 + + + +typedef union { + struct { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct { + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL 0 +#define ODK_REGINFO 1 +#define ODK_EXCEPTIONS 2 +#define ODK_PAD 3 +#define ODK_HWPATCH 4 +#define ODK_FILL 5 +#define ODK_TAGS 6 +#define ODK_HWAND 7 +#define ODK_HWOR 8 + + + +#define OEX_FPU_MIN 0x1f +#define OEX_FPU_MAX 0x1f00 +#define OEX_PAGE0 0x10000 +#define OEX_SMM 0x20000 +#define OEX_FPDBUG 0x40000 +#define OEX_PRECISEFP OEX_FPDBUG +#define OEX_DISMISS 0x80000 + +#define OEX_FPU_INVAL 0x10 +#define OEX_FPU_DIV0 0x08 +#define OEX_FPU_OFLO 0x04 +#define OEX_FPU_UFLO 0x02 +#define OEX_FPU_INEX 0x01 + + + +#define OHW_R4KEOP 0x1 +#define OHW_R8KPFETCH 0x2 +#define OHW_R5KEOP 0x4 +#define OHW_R5KCVTL 0x8 + +#define OPAD_PREFIX 0x1 +#define OPAD_POSTFIX 0x2 +#define OPAD_SYMBOL 0x4 + + + +typedef struct { + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED 0x00000001 +#define OHWA1_R4KEOP_CLEAN 0x00000002 + + + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 +#define R_MIPS_GPREL16 7 +#define R_MIPS_LITERAL 8 +#define R_MIPS_GOT16 9 +#define R_MIPS_PC16 10 +#define R_MIPS_CALL16 11 +#define R_MIPS_GPREL32 12 + +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_DTPMOD32 38 +#define R_MIPS_TLS_DTPREL32 39 +#define R_MIPS_TLS_DTPMOD64 40 +#define R_MIPS_TLS_DTPREL64 41 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_TLS_LDM 43 +#define R_MIPS_TLS_DTPREL_HI16 44 +#define R_MIPS_TLS_DTPREL_LO16 45 +#define R_MIPS_TLS_GOTTPREL 46 +#define R_MIPS_TLS_TPREL32 47 +#define R_MIPS_TLS_TPREL64 48 +#define R_MIPS_TLS_TPREL_HI16 49 +#define R_MIPS_TLS_TPREL_LO16 50 +#define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_MIPS_NUM 128 + + + +#define PT_MIPS_REGINFO 0x70000000 +#define PT_MIPS_RTPROC 0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 +#define PT_MIPS_ABIFLAGS 0x70000003 + + + +#define PF_MIPS_LOCAL 0x10000000 + + + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM 0x70000007 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 + +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC 0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM 0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX 0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 + +#define DT_MIPS_PLTGOT 0x70000032 + +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_RLD_MAP_REL 0x70000035 +#define DT_MIPS_NUM 0x36 + + + +#define RHF_NONE 0 +#define RHF_QUICKSTART (1 << 0) +#define RHF_NOTPOT (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE (1 << 3) +#define RHF_SGI_ONLY (1 << 4) +#define RHF_GUARANTEE_INIT (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS (1 << 6) +#define RHF_GUARANTEE_START_INIT (1 << 7) +#define RHF_PIXIE (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD (1 << 9) +#define RHF_REQUICKSTART (1 << 10) +#define RHF_REQUICKSTARTED (1 << 11) +#define RHF_CORD (1 << 12) +#define RHF_NO_UNRES_UNDEF (1 << 13) +#define RHF_RLD_ORDER_SAFE (1 << 14) + + + +typedef struct { + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct { + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE 0 +#define LL_EXACT_MATCH (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR (1 << 2) +#define LL_EXPORTS (1 << 3) +#define LL_DELAY_LOAD (1 << 4) +#define LL_DELTA (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + +typedef struct { + Elf32_Half version; + unsigned char isa_level; + unsigned char isa_rev; + unsigned char gpr_size; + unsigned char cpr1_size; + unsigned char cpr2_size; + unsigned char fp_abi; + Elf32_Word isa_ext; + Elf32_Word ases; + Elf32_Word flags1; + Elf32_Word flags2; +} Elf_MIPS_ABIFlags_v0; + +#define MIPS_AFL_REG_NONE 0x00 +#define MIPS_AFL_REG_32 0x01 +#define MIPS_AFL_REG_64 0x02 +#define MIPS_AFL_REG_128 0x03 + +#define MIPS_AFL_ASE_DSP 0x00000001 +#define MIPS_AFL_ASE_DSPR2 0x00000002 +#define MIPS_AFL_ASE_EVA 0x00000004 +#define MIPS_AFL_ASE_MCU 0x00000008 +#define MIPS_AFL_ASE_MDMX 0x00000010 +#define MIPS_AFL_ASE_MIPS3D 0x00000020 +#define MIPS_AFL_ASE_MT 0x00000040 +#define MIPS_AFL_ASE_SMARTMIPS 0x00000080 +#define MIPS_AFL_ASE_VIRT 0x00000100 +#define MIPS_AFL_ASE_MSA 0x00000200 +#define MIPS_AFL_ASE_MIPS16 0x00000400 +#define MIPS_AFL_ASE_MICROMIPS 0x00000800 +#define MIPS_AFL_ASE_XPA 0x00001000 +#define MIPS_AFL_ASE_MASK 0x00001fff + +#define MIPS_AFL_EXT_XLR 1 +#define MIPS_AFL_EXT_OCTEON2 2 +#define MIPS_AFL_EXT_OCTEONP 3 +#define MIPS_AFL_EXT_LOONGSON_3A 4 +#define MIPS_AFL_EXT_OCTEON 5 +#define MIPS_AFL_EXT_5900 6 +#define MIPS_AFL_EXT_4650 7 +#define MIPS_AFL_EXT_4010 8 +#define MIPS_AFL_EXT_4100 9 +#define MIPS_AFL_EXT_3900 10 +#define MIPS_AFL_EXT_10000 11 +#define MIPS_AFL_EXT_SB1 12 +#define MIPS_AFL_EXT_4111 13 +#define MIPS_AFL_EXT_4120 14 +#define MIPS_AFL_EXT_5400 15 +#define MIPS_AFL_EXT_5500 16 +#define MIPS_AFL_EXT_LOONGSON_2E 17 +#define MIPS_AFL_EXT_LOONGSON_2F 18 + +#define MIPS_AFL_FLAGS1_ODDSPREG 1 + +enum +{ + Val_GNU_MIPS_ABI_FP_ANY = 0, + Val_GNU_MIPS_ABI_FP_DOUBLE = 1, + Val_GNU_MIPS_ABI_FP_SINGLE = 2, + Val_GNU_MIPS_ABI_FP_SOFT = 3, + Val_GNU_MIPS_ABI_FP_OLD_64 = 4, + Val_GNU_MIPS_ABI_FP_XX = 5, + Val_GNU_MIPS_ABI_FP_64 = 6, + Val_GNU_MIPS_ABI_FP_64A = 7, + Val_GNU_MIPS_ABI_FP_MAX = 7 +}; + + + + +#define EF_PARISC_TRAPNIL 0x00010000 +#define EF_PARISC_EXT 0x00020000 +#define EF_PARISC_LSB 0x00040000 +#define EF_PARISC_WIDE 0x00080000 +#define EF_PARISC_NO_KABP 0x00100000 + +#define EF_PARISC_LAZYSWAP 0x00400000 +#define EF_PARISC_ARCH 0x0000ffff + + + +#define EFA_PARISC_1_0 0x020b +#define EFA_PARISC_1_1 0x0210 +#define EFA_PARISC_2_0 0x0214 + + + +#define SHN_PARISC_ANSI_COMMON 0xff00 + +#define SHN_PARISC_HUGE_COMMON 0xff01 + + + +#define SHT_PARISC_EXT 0x70000000 +#define SHT_PARISC_UNWIND 0x70000001 +#define SHT_PARISC_DOC 0x70000002 + + + +#define SHF_PARISC_SHORT 0x20000000 +#define SHF_PARISC_HUGE 0x40000000 +#define SHF_PARISC_SBP 0x80000000 + + + +#define STT_PARISC_MILLICODE 13 + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + + + +#define R_PARISC_NONE 0 +#define R_PARISC_DIR32 1 +#define R_PARISC_DIR21L 2 +#define R_PARISC_DIR17R 3 +#define R_PARISC_DIR17F 4 +#define R_PARISC_DIR14R 6 +#define R_PARISC_PCREL32 9 +#define R_PARISC_PCREL21L 10 +#define R_PARISC_PCREL17R 11 +#define R_PARISC_PCREL17F 12 +#define R_PARISC_PCREL14R 14 +#define R_PARISC_DPREL21L 18 +#define R_PARISC_DPREL14R 22 +#define R_PARISC_GPREL21L 26 +#define R_PARISC_GPREL14R 30 +#define R_PARISC_LTOFF21L 34 +#define R_PARISC_LTOFF14R 38 +#define R_PARISC_SECREL32 41 +#define R_PARISC_SEGBASE 48 +#define R_PARISC_SEGREL32 49 +#define R_PARISC_PLTOFF21L 50 +#define R_PARISC_PLTOFF14R 54 +#define R_PARISC_LTOFF_FPTR32 57 +#define R_PARISC_LTOFF_FPTR21L 58 +#define R_PARISC_LTOFF_FPTR14R 62 +#define R_PARISC_FPTR64 64 +#define R_PARISC_PLABEL32 65 +#define R_PARISC_PLABEL21L 66 +#define R_PARISC_PLABEL14R 70 +#define R_PARISC_PCREL64 72 +#define R_PARISC_PCREL22F 74 +#define R_PARISC_PCREL14WR 75 +#define R_PARISC_PCREL14DR 76 +#define R_PARISC_PCREL16F 77 +#define R_PARISC_PCREL16WF 78 +#define R_PARISC_PCREL16DF 79 +#define R_PARISC_DIR64 80 +#define R_PARISC_DIR14WR 83 +#define R_PARISC_DIR14DR 84 +#define R_PARISC_DIR16F 85 +#define R_PARISC_DIR16WF 86 +#define R_PARISC_DIR16DF 87 +#define R_PARISC_GPREL64 88 +#define R_PARISC_GPREL14WR 91 +#define R_PARISC_GPREL14DR 92 +#define R_PARISC_GPREL16F 93 +#define R_PARISC_GPREL16WF 94 +#define R_PARISC_GPREL16DF 95 +#define R_PARISC_LTOFF64 96 +#define R_PARISC_LTOFF14WR 99 +#define R_PARISC_LTOFF14DR 100 +#define R_PARISC_LTOFF16F 101 +#define R_PARISC_LTOFF16WF 102 +#define R_PARISC_LTOFF16DF 103 +#define R_PARISC_SECREL64 104 +#define R_PARISC_SEGREL64 112 +#define R_PARISC_PLTOFF14WR 115 +#define R_PARISC_PLTOFF14DR 116 +#define R_PARISC_PLTOFF16F 117 +#define R_PARISC_PLTOFF16WF 118 +#define R_PARISC_PLTOFF16DF 119 +#define R_PARISC_LTOFF_FPTR64 120 +#define R_PARISC_LTOFF_FPTR14WR 123 +#define R_PARISC_LTOFF_FPTR14DR 124 +#define R_PARISC_LTOFF_FPTR16F 125 +#define R_PARISC_LTOFF_FPTR16WF 126 +#define R_PARISC_LTOFF_FPTR16DF 127 +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 +#define R_PARISC_IPLT 129 +#define R_PARISC_EPLT 130 +#define R_PARISC_TPREL32 153 +#define R_PARISC_TPREL21L 154 +#define R_PARISC_TPREL14R 158 +#define R_PARISC_LTOFF_TP21L 162 +#define R_PARISC_LTOFF_TP14R 166 +#define R_PARISC_LTOFF_TP14F 167 +#define R_PARISC_TPREL64 216 +#define R_PARISC_TPREL14WR 219 +#define R_PARISC_TPREL14DR 220 +#define R_PARISC_TPREL16F 221 +#define R_PARISC_TPREL16WF 222 +#define R_PARISC_TPREL16DF 223 +#define R_PARISC_LTOFF_TP64 224 +#define R_PARISC_LTOFF_TP14WR 227 +#define R_PARISC_LTOFF_TP14DR 228 +#define R_PARISC_LTOFF_TP16F 229 +#define R_PARISC_LTOFF_TP16WF 230 +#define R_PARISC_LTOFF_TP16DF 231 +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 +#define R_PARISC_TLS_GD14R 235 +#define R_PARISC_TLS_GDCALL 236 +#define R_PARISC_TLS_LDM21L 237 +#define R_PARISC_TLS_LDM14R 238 +#define R_PARISC_TLS_LDMCALL 239 +#define R_PARISC_TLS_LDO21L 240 +#define R_PARISC_TLS_LDO14R 241 +#define R_PARISC_TLS_DTPMOD32 242 +#define R_PARISC_TLS_DTPMOD64 243 +#define R_PARISC_TLS_DTPOFF32 244 +#define R_PARISC_TLS_DTPOFF64 245 +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE 255 + + + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + + + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + + + + + + +#define EF_ALPHA_32BIT 1 +#define EF_ALPHA_CANRELAX 2 + + + + +#define SHT_ALPHA_DEBUG 0x70000001 +#define SHT_ALPHA_REGINFO 0x70000002 + + + +#define SHF_ALPHA_GPREL 0x10000000 + + +#define STO_ALPHA_NOPV 0x80 +#define STO_ALPHA_STD_GPLOAD 0x88 + + + +#define R_ALPHA_NONE 0 +#define R_ALPHA_REFLONG 1 +#define R_ALPHA_REFQUAD 2 +#define R_ALPHA_GPREL32 3 +#define R_ALPHA_LITERAL 4 +#define R_ALPHA_LITUSE 5 +#define R_ALPHA_GPDISP 6 +#define R_ALPHA_BRADDR 7 +#define R_ALPHA_HINT 8 +#define R_ALPHA_SREL16 9 +#define R_ALPHA_SREL32 10 +#define R_ALPHA_SREL64 11 +#define R_ALPHA_GPRELHIGH 17 +#define R_ALPHA_GPRELLOW 18 +#define R_ALPHA_GPREL16 19 +#define R_ALPHA_COPY 24 +#define R_ALPHA_GLOB_DAT 25 +#define R_ALPHA_JMP_SLOT 26 +#define R_ALPHA_RELATIVE 27 +#define R_ALPHA_TLS_GD_HI 28 +#define R_ALPHA_TLSGD 29 +#define R_ALPHA_TLS_LDM 30 +#define R_ALPHA_DTPMOD64 31 +#define R_ALPHA_GOTDTPREL 32 +#define R_ALPHA_DTPREL64 33 +#define R_ALPHA_DTPRELHI 34 +#define R_ALPHA_DTPRELLO 35 +#define R_ALPHA_DTPREL16 36 +#define R_ALPHA_GOTTPREL 37 +#define R_ALPHA_TPREL64 38 +#define R_ALPHA_TPRELHI 39 +#define R_ALPHA_TPRELLO 40 +#define R_ALPHA_TPREL16 41 + +#define R_ALPHA_NUM 46 + + +#define LITUSE_ALPHA_ADDR 0 +#define LITUSE_ALPHA_BASE 1 +#define LITUSE_ALPHA_BYTOFF 2 +#define LITUSE_ALPHA_JSR 3 +#define LITUSE_ALPHA_TLS_GD 4 +#define LITUSE_ALPHA_TLS_LDM 5 + + +#define DT_ALPHA_PLTRO (DT_LOPROC + 0) +#define DT_ALPHA_NUM 1 + + + + +#define EF_PPC_EMB 0x80000000 + + +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + + + +#define R_PPC_NONE 0 +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + + +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 +#define R_PPC_GOT_DTPREL16 91 +#define R_PPC_GOT_DTPREL16_LO 92 +#define R_PPC_GOT_DTPREL16_HI 93 +#define R_PPC_GOT_DTPREL16_HA 94 +#define R_PPC_TLSGD 95 +#define R_PPC_TLSLD 96 + + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + + +#define R_PPC_DIAB_SDA21_LO 180 +#define R_PPC_DIAB_SDA21_HI 181 +#define R_PPC_DIAB_SDA21_HA 182 +#define R_PPC_DIAB_RELSDA_LO 183 +#define R_PPC_DIAB_RELSDA_HI 184 +#define R_PPC_DIAB_RELSDA_HA 185 + + +#define R_PPC_IRELATIVE 248 + + +#define R_PPC_REL16 249 +#define R_PPC_REL16_LO 250 +#define R_PPC_REL16_HI 251 +#define R_PPC_REL16_HA 252 + + + +#define R_PPC_TOC16 255 + + +#define DT_PPC_GOT (DT_LOPROC + 0) +#define DT_PPC_OPT (DT_LOPROC + 1) +#define DT_PPC_NUM 2 + +#define PPC_OPT_TLS 1 + + +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 +#define R_PPC64_ADDR24 R_PPC_ADDR24 +#define R_PPC64_ADDR16 R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA +#define R_PPC64_ADDR14 R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 +#define R_PPC64_REL14 R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_PLTGOT16 52 +#define R_PPC64_PLTGOT16_LO 53 +#define R_PPC64_PLTGOT16_HI 54 +#define R_PPC64_PLTGOT16_HA 55 + +#define R_PPC64_ADDR16_DS 56 +#define R_PPC64_ADDR16_LO_DS 57 +#define R_PPC64_GOT16_DS 58 +#define R_PPC64_GOT16_LO_DS 59 +#define R_PPC64_PLT16_LO_DS 60 +#define R_PPC64_SECTOFF_DS 61 +#define R_PPC64_SECTOFF_LO_DS 62 +#define R_PPC64_TOC16_DS 63 +#define R_PPC64_TOC16_LO_DS 64 +#define R_PPC64_PLTGOT16_DS 65 +#define R_PPC64_PLTGOT16_LO_DS 66 + + +#define R_PPC64_TLS 67 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL16 69 +#define R_PPC64_TPREL16_LO 70 +#define R_PPC64_TPREL16_HI 71 +#define R_PPC64_TPREL16_HA 72 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL16 74 +#define R_PPC64_DTPREL16_LO 75 +#define R_PPC64_DTPREL16_HI 76 +#define R_PPC64_DTPREL16_HA 77 +#define R_PPC64_DTPREL64 78 +#define R_PPC64_GOT_TLSGD16 79 +#define R_PPC64_GOT_TLSGD16_LO 80 +#define R_PPC64_GOT_TLSGD16_HI 81 +#define R_PPC64_GOT_TLSGD16_HA 82 +#define R_PPC64_GOT_TLSLD16 83 +#define R_PPC64_GOT_TLSLD16_LO 84 +#define R_PPC64_GOT_TLSLD16_HI 85 +#define R_PPC64_GOT_TLSLD16_HA 86 +#define R_PPC64_GOT_TPREL16_DS 87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI 89 +#define R_PPC64_GOT_TPREL16_HA 90 +#define R_PPC64_GOT_DTPREL16_DS 91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI 93 +#define R_PPC64_GOT_DTPREL16_HA 94 +#define R_PPC64_TPREL16_DS 95 +#define R_PPC64_TPREL16_LO_DS 96 +#define R_PPC64_TPREL16_HIGHER 97 +#define R_PPC64_TPREL16_HIGHERA 98 +#define R_PPC64_TPREL16_HIGHEST 99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS 101 +#define R_PPC64_DTPREL16_LO_DS 102 +#define R_PPC64_DTPREL16_HIGHER 103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 +#define R_PPC64_TLSGD 107 +#define R_PPC64_TLSLD 108 +#define R_PPC64_TOCSAVE 109 +#define R_PPC64_ADDR16_HIGH 110 +#define R_PPC64_ADDR16_HIGHA 111 +#define R_PPC64_TPREL16_HIGH 112 +#define R_PPC64_TPREL16_HIGHA 113 +#define R_PPC64_DTPREL16_HIGH 114 +#define R_PPC64_DTPREL16_HIGHA 115 + + +#define R_PPC64_JMP_IREL 247 +#define R_PPC64_IRELATIVE 248 +#define R_PPC64_REL16 249 +#define R_PPC64_REL16_LO 250 +#define R_PPC64_REL16_HI 251 +#define R_PPC64_REL16_HA 252 + +#define EF_PPC64_ABI 3 + +#define DT_PPC64_GLINK (DT_LOPROC + 0) +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_OPT (DT_LOPROC + 3) +#define DT_PPC64_NUM 4 + +#define PPC64_OPT_TLS 1 +#define PPC64_OPT_MULTI_TOC 2 + +#define STO_PPC64_LOCAL_BIT 5 +#define STO_PPC64_LOCAL_MASK 0xe0 +#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc) + + +#define EF_ARM_RELEXEC 0x01 +#define EF_ARM_HASENTRY 0x02 +#define EF_ARM_INTERWORK 0x04 +#define EF_ARM_APCS_26 0x08 +#define EF_ARM_APCS_FLOAT 0x10 +#define EF_ARM_PIC 0x20 +#define EF_ARM_ALIGN8 0x40 +#define EF_ARM_NEW_ABI 0x80 +#define EF_ARM_OLD_ABI 0x100 +#define EF_ARM_SOFT_FLOAT 0x200 +#define EF_ARM_VFP_FLOAT 0x400 +#define EF_ARM_MAVERICK_FLOAT 0x800 + +#define EF_ARM_ABI_FLOAT_SOFT 0x200 +#define EF_ARM_ABI_FLOAT_HARD 0x400 + + +#define EF_ARM_SYMSARESORTED 0x04 +#define EF_ARM_DYNSYMSUSESEGIDX 0x08 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_EABIMASK 0XFF000000 + + +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_LE8 0x00400000 + +#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 + + +#define STT_ARM_TFUNC STT_LOPROC +#define STT_ARM_16BIT STT_HIPROC + + +#define SHF_ARM_ENTRYSECT 0x10000000 +#define SHF_ARM_COMDEF 0x80000000 + + + +#define PF_ARM_SB 0x10000000 + +#define PF_ARM_PI 0x20000000 +#define PF_ARM_ABS 0x40000000 + + +#define PT_ARM_EXIDX (PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX (SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) + +#define R_AARCH64_NONE 0 +#define R_AARCH64_P32_ABS32 1 +#define R_AARCH64_P32_COPY 180 +#define R_AARCH64_P32_GLOB_DAT 181 +#define R_AARCH64_P32_JUMP_SLOT 182 +#define R_AARCH64_P32_RELATIVE 183 +#define R_AARCH64_P32_TLS_DTPMOD 184 +#define R_AARCH64_P32_TLS_DTPREL 185 +#define R_AARCH64_P32_TLS_TPREL 186 +#define R_AARCH64_P32_TLSDESC 187 +#define R_AARCH64_P32_IRELATIVE 188 +#define R_AARCH64_ABS64 257 +#define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 +#define R_AARCH64_COPY 1024 +#define R_AARCH64_GLOB_DAT 1025 +#define R_AARCH64_JUMP_SLOT 1026 +#define R_AARCH64_RELATIVE 1027 +#define R_AARCH64_TLS_DTPMOD 1028 +#define R_AARCH64_TLS_DTPMOD64 1028 +#define R_AARCH64_TLS_DTPREL 1029 +#define R_AARCH64_TLS_DTPREL64 1029 +#define R_AARCH64_TLS_TPREL 1030 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 + + +#define R_ARM_NONE 0 +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_TLS_DESC 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 +#define R_ARM_TLS_DTPOFF32 18 +#define R_ARM_TLS_TPOFF32 19 +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 +#define R_ARM_GOTOFF 24 +#define R_ARM_GOTPC 25 +#define R_ARM_GOT32 26 +#define R_ARM_PLT32 27 +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_ALU_PCREL_7_0 32 +#define R_ARM_ALU_PCREL_15_8 33 +#define R_ARM_ALU_PCREL_23_15 34 +#define R_ARM_LDR_SBREL_11_0 35 +#define R_ARM_ALU_SBREL_19_12 36 +#define R_ARM_ALU_SBREL_27_20 37 +#define R_ARM_TARGET1 38 +#define R_ARM_SBREL31 39 +#define R_ARM_V4BX 40 +#define R_ARM_TARGET2 41 +#define R_ARM_PREL31 42 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 +#define R_ARM_THM_JUMP6 52 +#define R_ARM_THM_ALU_PREL_11_0 53 +#define R_ARM_THM_PC12 54 +#define R_ARM_ABS32_NOI 55 +#define R_ARM_REL32_NOI 56 +#define R_ARM_ALU_PC_G0_NC 57 +#define R_ARM_ALU_PC_G0 58 +#define R_ARM_ALU_PC_G1_NC 59 +#define R_ARM_ALU_PC_G1 60 +#define R_ARM_ALU_PC_G2 61 +#define R_ARM_LDR_PC_G1 62 +#define R_ARM_LDR_PC_G2 63 +#define R_ARM_LDRS_PC_G0 64 +#define R_ARM_LDRS_PC_G1 65 +#define R_ARM_LDRS_PC_G2 66 +#define R_ARM_LDC_PC_G0 67 +#define R_ARM_LDC_PC_G1 68 +#define R_ARM_LDC_PC_G2 69 +#define R_ARM_ALU_SB_G0_NC 70 +#define R_ARM_ALU_SB_G0 71 +#define R_ARM_ALU_SB_G1_NC 72 +#define R_ARM_ALU_SB_G1 73 +#define R_ARM_ALU_SB_G2 74 +#define R_ARM_LDR_SB_G0 75 +#define R_ARM_LDR_SB_G1 76 +#define R_ARM_LDR_SB_G2 77 +#define R_ARM_LDRS_SB_G0 78 +#define R_ARM_LDRS_SB_G1 79 +#define R_ARM_LDRS_SB_G2 80 +#define R_ARM_LDC_SB_G0 81 +#define R_ARM_LDC_SB_G1 82 +#define R_ARM_LDC_SB_G2 83 +#define R_ARM_MOVW_BREL_NC 84 +#define R_ARM_MOVT_BREL 85 +#define R_ARM_MOVW_BREL 86 +#define R_ARM_THM_MOVW_BREL_NC 87 +#define R_ARM_THM_MOVT_BREL 88 +#define R_ARM_THM_MOVW_BREL 89 +#define R_ARM_TLS_GOTDESC 90 +#define R_ARM_TLS_CALL 91 +#define R_ARM_TLS_DESCSEQ 92 +#define R_ARM_THM_TLS_CALL 93 +#define R_ARM_PLT32_ABS 94 +#define R_ARM_GOT_ABS 95 +#define R_ARM_GOT_PREL 96 +#define R_ARM_GOT_BREL12 97 +#define R_ARM_GOTOFF12 98 +#define R_ARM_GOTRELAX 99 +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_THM_PC11 102 +#define R_ARM_THM_PC9 103 +#define R_ARM_TLS_GD32 104 + +#define R_ARM_TLS_LDM32 105 + +#define R_ARM_TLS_LDO32 106 + +#define R_ARM_TLS_IE32 107 + +#define R_ARM_TLS_LE32 108 +#define R_ARM_TLS_LDO12 109 +#define R_ARM_TLS_LE12 110 +#define R_ARM_TLS_IE12GP 111 +#define R_ARM_ME_TOO 128 +#define R_ARM_THM_TLS_DESCSEQ 129 +#define R_ARM_THM_TLS_DESCSEQ16 129 +#define R_ARM_THM_TLS_DESCSEQ32 130 +#define R_ARM_THM_GOT_BREL12 131 +#define R_ARM_IRELATIVE 160 +#define R_ARM_RXPC25 249 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS22 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +#define R_ARM_NUM 256 + + + + +#define EF_IA_64_MASKOS 0x0000000f +#define EF_IA_64_ABI64 0x00000010 +#define EF_IA_64_ARCH 0xff000000 + + +#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) +#define PT_IA_64_UNWIND (PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV 0x80000000 + + +#define SHT_IA_64_EXT (SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT 0x10000000 +#define SHF_IA_64_NORECOV 0x20000000 + + +#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) +#define DT_IA_64_NUM 1 + + +#define R_IA64_NONE 0x00 +#define R_IA64_IMM14 0x21 +#define R_IA64_IMM22 0x22 +#define R_IA64_IMM64 0x23 +#define R_IA64_DIR32MSB 0x24 +#define R_IA64_DIR32LSB 0x25 +#define R_IA64_DIR64MSB 0x26 +#define R_IA64_DIR64LSB 0x27 +#define R_IA64_GPREL22 0x2a +#define R_IA64_GPREL64I 0x2b +#define R_IA64_GPREL32MSB 0x2c +#define R_IA64_GPREL32LSB 0x2d +#define R_IA64_GPREL64MSB 0x2e +#define R_IA64_GPREL64LSB 0x2f +#define R_IA64_LTOFF22 0x32 +#define R_IA64_LTOFF64I 0x33 +#define R_IA64_PLTOFF22 0x3a +#define R_IA64_PLTOFF64I 0x3b +#define R_IA64_PLTOFF64MSB 0x3e +#define R_IA64_PLTOFF64LSB 0x3f +#define R_IA64_FPTR64I 0x43 +#define R_IA64_FPTR32MSB 0x44 +#define R_IA64_FPTR32LSB 0x45 +#define R_IA64_FPTR64MSB 0x46 +#define R_IA64_FPTR64LSB 0x47 +#define R_IA64_PCREL60B 0x48 +#define R_IA64_PCREL21B 0x49 +#define R_IA64_PCREL21M 0x4a +#define R_IA64_PCREL21F 0x4b +#define R_IA64_PCREL32MSB 0x4c +#define R_IA64_PCREL32LSB 0x4d +#define R_IA64_PCREL64MSB 0x4e +#define R_IA64_PCREL64LSB 0x4f +#define R_IA64_LTOFF_FPTR22 0x52 +#define R_IA64_LTOFF_FPTR64I 0x53 +#define R_IA64_LTOFF_FPTR32MSB 0x54 +#define R_IA64_LTOFF_FPTR32LSB 0x55 +#define R_IA64_LTOFF_FPTR64MSB 0x56 +#define R_IA64_LTOFF_FPTR64LSB 0x57 +#define R_IA64_SEGREL32MSB 0x5c +#define R_IA64_SEGREL32LSB 0x5d +#define R_IA64_SEGREL64MSB 0x5e +#define R_IA64_SEGREL64LSB 0x5f +#define R_IA64_SECREL32MSB 0x64 +#define R_IA64_SECREL32LSB 0x65 +#define R_IA64_SECREL64MSB 0x66 +#define R_IA64_SECREL64LSB 0x67 +#define R_IA64_REL32MSB 0x6c +#define R_IA64_REL32LSB 0x6d +#define R_IA64_REL64MSB 0x6e +#define R_IA64_REL64LSB 0x6f +#define R_IA64_LTV32MSB 0x74 +#define R_IA64_LTV32LSB 0x75 +#define R_IA64_LTV64MSB 0x76 +#define R_IA64_LTV64LSB 0x77 +#define R_IA64_PCREL21BI 0x79 +#define R_IA64_PCREL22 0x7a +#define R_IA64_PCREL64I 0x7b +#define R_IA64_IPLTMSB 0x80 +#define R_IA64_IPLTLSB 0x81 +#define R_IA64_COPY 0x84 +#define R_IA64_SUB 0x85 +#define R_IA64_LTOFF22X 0x86 +#define R_IA64_LDXMOV 0x87 +#define R_IA64_TPREL14 0x91 +#define R_IA64_TPREL22 0x92 +#define R_IA64_TPREL64I 0x93 +#define R_IA64_TPREL64MSB 0x96 +#define R_IA64_TPREL64LSB 0x97 +#define R_IA64_LTOFF_TPREL22 0x9a +#define R_IA64_DTPMOD64MSB 0xa6 +#define R_IA64_DTPMOD64LSB 0xa7 +#define R_IA64_LTOFF_DTPMOD22 0xaa +#define R_IA64_DTPREL14 0xb1 +#define R_IA64_DTPREL22 0xb2 +#define R_IA64_DTPREL64I 0xb3 +#define R_IA64_DTPREL32MSB 0xb4 +#define R_IA64_DTPREL32LSB 0xb5 +#define R_IA64_DTPREL64MSB 0xb6 +#define R_IA64_DTPREL64LSB 0xb7 +#define R_IA64_LTOFF_DTPREL22 0xba + + +#define EF_SH_MACH_MASK 0x1f +#define EF_SH_UNKNOWN 0x0 +#define EF_SH1 0x1 +#define EF_SH2 0x2 +#define EF_SH3 0x3 +#define EF_SH_DSP 0x4 +#define EF_SH3_DSP 0x5 +#define EF_SH4AL_DSP 0x6 +#define EF_SH3E 0x8 +#define EF_SH4 0x9 +#define EF_SH2E 0xb +#define EF_SH4A 0xc +#define EF_SH2A 0xd +#define EF_SH4_NOFPU 0x10 +#define EF_SH4A_NOFPU 0x11 +#define EF_SH4_NOMMU_NOFPU 0x12 +#define EF_SH2A_NOFPU 0x13 +#define EF_SH3_NOMMU 0x14 +#define EF_SH2A_SH4_NOFPU 0x15 +#define EF_SH2A_SH3_NOFPU 0x16 +#define EF_SH2A_SH4 0x17 +#define EF_SH2A_SH3E 0x18 + +#define R_SH_NONE 0 +#define R_SH_DIR32 1 +#define R_SH_REL32 2 +#define R_SH_DIR8WPN 3 +#define R_SH_IND12W 4 +#define R_SH_DIR8WPL 5 +#define R_SH_DIR8WPZ 6 +#define R_SH_DIR8BP 7 +#define R_SH_DIR8W 8 +#define R_SH_DIR8L 9 +#define R_SH_SWITCH16 25 +#define R_SH_SWITCH32 26 +#define R_SH_USES 27 +#define R_SH_COUNT 28 +#define R_SH_ALIGN 29 +#define R_SH_CODE 30 +#define R_SH_DATA 31 +#define R_SH_LABEL 32 +#define R_SH_SWITCH8 33 +#define R_SH_GNU_VTINHERIT 34 +#define R_SH_GNU_VTENTRY 35 +#define R_SH_TLS_GD_32 144 +#define R_SH_TLS_LD_32 145 +#define R_SH_TLS_LDO_32 146 +#define R_SH_TLS_IE_32 147 +#define R_SH_TLS_LE_32 148 +#define R_SH_TLS_DTPMOD32 149 +#define R_SH_TLS_DTPOFF32 150 +#define R_SH_TLS_TPOFF32 151 +#define R_SH_GOT32 160 +#define R_SH_PLT32 161 +#define R_SH_COPY 162 +#define R_SH_GLOB_DAT 163 +#define R_SH_JMP_SLOT 164 +#define R_SH_RELATIVE 165 +#define R_SH_GOTOFF 166 +#define R_SH_GOTPC 167 +#define R_SH_GOT20 201 +#define R_SH_GOTOFF20 202 +#define R_SH_GOTFUNCDESC 203 +#define R_SH_GOTFUNCDEST20 204 +#define R_SH_GOTOFFFUNCDESC 205 +#define R_SH_GOTOFFFUNCDEST20 206 +#define R_SH_FUNCDESC 207 +#define R_SH_FUNCDESC_VALUE 208 + +#define R_SH_NUM 256 + + + +#define R_390_NONE 0 +#define R_390_8 1 +#define R_390_12 2 +#define R_390_16 3 +#define R_390_32 4 +#define R_390_PC32 5 +#define R_390_GOT12 6 +#define R_390_GOT32 7 +#define R_390_PLT32 8 +#define R_390_COPY 9 +#define R_390_GLOB_DAT 10 +#define R_390_JMP_SLOT 11 +#define R_390_RELATIVE 12 +#define R_390_GOTOFF32 13 +#define R_390_GOTPC 14 +#define R_390_GOT16 15 +#define R_390_PC16 16 +#define R_390_PC16DBL 17 +#define R_390_PLT16DBL 18 +#define R_390_PC32DBL 19 +#define R_390_PLT32DBL 20 +#define R_390_GOTPCDBL 21 +#define R_390_64 22 +#define R_390_PC64 23 +#define R_390_GOT64 24 +#define R_390_PLT64 25 +#define R_390_GOTENT 26 +#define R_390_GOTOFF16 27 +#define R_390_GOTOFF64 28 +#define R_390_GOTPLT12 29 +#define R_390_GOTPLT16 30 +#define R_390_GOTPLT32 31 +#define R_390_GOTPLT64 32 +#define R_390_GOTPLTENT 33 +#define R_390_PLTOFF16 34 +#define R_390_PLTOFF32 35 +#define R_390_PLTOFF64 36 +#define R_390_TLS_LOAD 37 +#define R_390_TLS_GDCALL 38 + +#define R_390_TLS_LDCALL 39 + +#define R_390_TLS_GD32 40 + +#define R_390_TLS_GD64 41 + +#define R_390_TLS_GOTIE12 42 + +#define R_390_TLS_GOTIE32 43 + +#define R_390_TLS_GOTIE64 44 + +#define R_390_TLS_LDM32 45 + +#define R_390_TLS_LDM64 46 + +#define R_390_TLS_IE32 47 + +#define R_390_TLS_IE64 48 + +#define R_390_TLS_IEENT 49 + +#define R_390_TLS_LE32 50 + +#define R_390_TLS_LE64 51 + +#define R_390_TLS_LDO32 52 + +#define R_390_TLS_LDO64 53 + +#define R_390_TLS_DTPMOD 54 +#define R_390_TLS_DTPOFF 55 +#define R_390_TLS_TPOFF 56 + +#define R_390_20 57 +#define R_390_GOT20 58 +#define R_390_GOTPLT20 59 +#define R_390_TLS_GOTIE20 60 + + +#define R_390_NUM 61 + + + +#define R_CRIS_NONE 0 +#define R_CRIS_8 1 +#define R_CRIS_16 2 +#define R_CRIS_32 3 +#define R_CRIS_8_PCREL 4 +#define R_CRIS_16_PCREL 5 +#define R_CRIS_32_PCREL 6 +#define R_CRIS_GNU_VTINHERIT 7 +#define R_CRIS_GNU_VTENTRY 8 +#define R_CRIS_COPY 9 +#define R_CRIS_GLOB_DAT 10 +#define R_CRIS_JUMP_SLOT 11 +#define R_CRIS_RELATIVE 12 +#define R_CRIS_16_GOT 13 +#define R_CRIS_32_GOT 14 +#define R_CRIS_16_GOTPLT 15 +#define R_CRIS_32_GOTPLT 16 +#define R_CRIS_32_GOTREL 17 +#define R_CRIS_32_PLT_GOTREL 18 +#define R_CRIS_32_PLT_PCREL 19 + +#define R_CRIS_NUM 20 + + + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 + +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 + +#define R_X86_64_TLSLD 20 + +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 + +#define R_X86_64_TPOFF32 23 +#define R_X86_64_PC64 24 +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 + +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 +#define R_X86_64_RELATIVE64 38 +#define R_X86_64_GOTPCRELX 41 +#define R_X86_64_REX_GOTPCRELX 42 +#define R_X86_64_NUM 43 + + + +#define R_MN10300_NONE 0 +#define R_MN10300_32 1 +#define R_MN10300_16 2 +#define R_MN10300_8 3 +#define R_MN10300_PCREL32 4 +#define R_MN10300_PCREL16 5 +#define R_MN10300_PCREL8 6 +#define R_MN10300_GNU_VTINHERIT 7 +#define R_MN10300_GNU_VTENTRY 8 +#define R_MN10300_24 9 +#define R_MN10300_GOTPC32 10 +#define R_MN10300_GOTPC16 11 +#define R_MN10300_GOTOFF32 12 +#define R_MN10300_GOTOFF24 13 +#define R_MN10300_GOTOFF16 14 +#define R_MN10300_PLT32 15 +#define R_MN10300_PLT16 16 +#define R_MN10300_GOT32 17 +#define R_MN10300_GOT24 18 +#define R_MN10300_GOT16 19 +#define R_MN10300_COPY 20 +#define R_MN10300_GLOB_DAT 21 +#define R_MN10300_JMP_SLOT 22 +#define R_MN10300_RELATIVE 23 + +#define R_MN10300_NUM 24 + + + +#define R_M32R_NONE 0 +#define R_M32R_16 1 +#define R_M32R_32 2 +#define R_M32R_24 3 +#define R_M32R_10_PCREL 4 +#define R_M32R_18_PCREL 5 +#define R_M32R_26_PCREL 6 +#define R_M32R_HI16_ULO 7 +#define R_M32R_HI16_SLO 8 +#define R_M32R_LO16 9 +#define R_M32R_SDA16 10 +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 + +#define R_M32R_16_RELA 33 +#define R_M32R_32_RELA 34 +#define R_M32R_24_RELA 35 +#define R_M32R_10_PCREL_RELA 36 +#define R_M32R_18_PCREL_RELA 37 +#define R_M32R_26_PCREL_RELA 38 +#define R_M32R_HI16_ULO_RELA 39 +#define R_M32R_HI16_SLO_RELA 40 +#define R_M32R_LO16_RELA 41 +#define R_M32R_SDA16_RELA 42 +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 +#define R_M32R_REL32 45 + +#define R_M32R_GOT24 48 +#define R_M32R_26_PLTREL 49 +#define R_M32R_COPY 50 +#define R_M32R_GLOB_DAT 51 +#define R_M32R_JMP_SLOT 52 +#define R_M32R_RELATIVE 53 +#define R_M32R_GOTOFF 54 +#define R_M32R_GOTPC24 55 +#define R_M32R_GOT16_HI_ULO 56 + +#define R_M32R_GOT16_HI_SLO 57 + +#define R_M32R_GOT16_LO 58 +#define R_M32R_GOTPC_HI_ULO 59 + +#define R_M32R_GOTPC_HI_SLO 60 + +#define R_M32R_GOTPC_LO 61 + +#define R_M32R_GOTOFF_HI_ULO 62 + +#define R_M32R_GOTOFF_HI_SLO 63 + +#define R_M32R_GOTOFF_LO 64 +#define R_M32R_NUM 256 + +#define R_MICROBLAZE_NONE 0 +#define R_MICROBLAZE_32 1 +#define R_MICROBLAZE_32_PCREL 2 +#define R_MICROBLAZE_64_PCREL 3 +#define R_MICROBLAZE_32_PCREL_LO 4 +#define R_MICROBLAZE_64 5 +#define R_MICROBLAZE_32_LO 6 +#define R_MICROBLAZE_SRO32 7 +#define R_MICROBLAZE_SRW32 8 +#define R_MICROBLAZE_64_NONE 9 +#define R_MICROBLAZE_32_SYM_OP_SYM 10 +#define R_MICROBLAZE_GNU_VTINHERIT 11 +#define R_MICROBLAZE_GNU_VTENTRY 12 +#define R_MICROBLAZE_GOTPC_64 13 +#define R_MICROBLAZE_GOT_64 14 +#define R_MICROBLAZE_PLT_64 15 +#define R_MICROBLAZE_REL 16 +#define R_MICROBLAZE_JUMP_SLOT 17 +#define R_MICROBLAZE_GLOB_DAT 18 +#define R_MICROBLAZE_GOTOFF_64 19 +#define R_MICROBLAZE_GOTOFF_32 20 +#define R_MICROBLAZE_COPY 21 +#define R_MICROBLAZE_TLS 22 +#define R_MICROBLAZE_TLSGD 23 +#define R_MICROBLAZE_TLSLD 24 +#define R_MICROBLAZE_TLSDTPMOD32 25 +#define R_MICROBLAZE_TLSDTPREL32 26 +#define R_MICROBLAZE_TLSDTPREL64 27 +#define R_MICROBLAZE_TLSGOTTPREL32 28 +#define R_MICROBLAZE_TLSTPREL32 29 + +#define DT_NIOS2_GP 0x70000002 + +#define R_NIOS2_NONE 0 +#define R_NIOS2_S16 1 +#define R_NIOS2_U16 2 +#define R_NIOS2_PCREL16 3 +#define R_NIOS2_CALL26 4 +#define R_NIOS2_IMM5 5 +#define R_NIOS2_CACHE_OPX 6 +#define R_NIOS2_IMM6 7 +#define R_NIOS2_IMM8 8 +#define R_NIOS2_HI16 9 +#define R_NIOS2_LO16 10 +#define R_NIOS2_HIADJ16 11 +#define R_NIOS2_BFD_RELOC_32 12 +#define R_NIOS2_BFD_RELOC_16 13 +#define R_NIOS2_BFD_RELOC_8 14 +#define R_NIOS2_GPREL 15 +#define R_NIOS2_GNU_VTINHERIT 16 +#define R_NIOS2_GNU_VTENTRY 17 +#define R_NIOS2_UJMP 18 +#define R_NIOS2_CJMP 19 +#define R_NIOS2_CALLR 20 +#define R_NIOS2_ALIGN 21 +#define R_NIOS2_GOT16 22 +#define R_NIOS2_CALL16 23 +#define R_NIOS2_GOTOFF_LO 24 +#define R_NIOS2_GOTOFF_HA 25 +#define R_NIOS2_PCREL_LO 26 +#define R_NIOS2_PCREL_HA 27 +#define R_NIOS2_TLS_GD16 28 +#define R_NIOS2_TLS_LDM16 29 +#define R_NIOS2_TLS_LDO16 30 +#define R_NIOS2_TLS_IE16 31 +#define R_NIOS2_TLS_LE16 32 +#define R_NIOS2_TLS_DTPMOD 33 +#define R_NIOS2_TLS_DTPREL 34 +#define R_NIOS2_TLS_TPREL 35 +#define R_NIOS2_COPY 36 +#define R_NIOS2_GLOB_DAT 37 +#define R_NIOS2_JUMP_SLOT 38 +#define R_NIOS2_RELATIVE 39 +#define R_NIOS2_GOTOFF 40 +#define R_NIOS2_CALL26_NOAT 41 +#define R_NIOS2_GOT_LO 42 +#define R_NIOS2_GOT_HA 43 +#define R_NIOS2_CALL_LO 44 +#define R_NIOS2_CALL_HA 45 + +#define R_OR1K_NONE 0 +#define R_OR1K_32 1 +#define R_OR1K_16 2 +#define R_OR1K_8 3 +#define R_OR1K_LO_16_IN_INSN 4 +#define R_OR1K_HI_16_IN_INSN 5 +#define R_OR1K_INSN_REL_26 6 +#define R_OR1K_GNU_VTENTRY 7 +#define R_OR1K_GNU_VTINHERIT 8 +#define R_OR1K_32_PCREL 9 +#define R_OR1K_16_PCREL 10 +#define R_OR1K_8_PCREL 11 +#define R_OR1K_GOTPC_HI16 12 +#define R_OR1K_GOTPC_LO16 13 +#define R_OR1K_GOT16 14 +#define R_OR1K_PLT26 15 +#define R_OR1K_GOTOFF_HI16 16 +#define R_OR1K_GOTOFF_LO16 17 +#define R_OR1K_COPY 18 +#define R_OR1K_GLOB_DAT 19 +#define R_OR1K_JMP_SLOT 20 +#define R_OR1K_RELATIVE 21 +#define R_OR1K_TLS_GD_HI16 22 +#define R_OR1K_TLS_GD_LO16 23 +#define R_OR1K_TLS_LDM_HI16 24 +#define R_OR1K_TLS_LDM_LO16 25 +#define R_OR1K_TLS_LDO_HI16 26 +#define R_OR1K_TLS_LDO_LO16 27 +#define R_OR1K_TLS_IE_HI16 28 +#define R_OR1K_TLS_IE_LO16 29 +#define R_OR1K_TLS_LE_HI16 30 +#define R_OR1K_TLS_LE_LO16 31 +#define R_OR1K_TLS_TPOFF 32 +#define R_OR1K_TLS_DTPOFF 33 +#define R_OR1K_TLS_DTPMOD 34 + +#define R_BPF_NONE 0 +#define R_BPF_MAP_FD 1 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c new file mode 100644 index 0000000..9088cdc --- /dev/null +++ b/tools/gbafix/gbafix.c @@ -0,0 +1,317 @@ +/* + "$Id: gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $" + + DevkitPro GBA ROM fix utility + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. + + Please report all bugs and problems through the bug tracker at + "http://sourceforge.net/tracker/?group_id=114505&atid=668551". + + "$Header: /lvm/shared/ds/ds/cvs/devkitpro-cvsbackup/tools/gba/gbatools/gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $" + +*/ +//--------------------------------------------------------------------------------- +// gbafix.c +//--------------------------------------------------------------------------------- +/* + Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome) + Validates header of GBA roms. + + History + ------- + v1.07 - added support for ELF input, (PikalaxALT) + v1.06 - added output silencing, (Diegoisawesome) + v1.05 - added debug offset argument, (Diegoisawesome) + v1.04 - converted to plain C, (WinterMute) + v1.03 - header.fixed, header.device_type + v1.02 - redefined the options (rgbfix style), checksum=0 + v1.01 - fix in parameters + v1.00 - logo, complement +*/ + +#pragma pack(1) + +#include +#include +#include +#include +#include "elf.h" + +#define VER "1.07" +#define ARGV argv[arg] +#define VALUE (ARGV+2) +#define NUMBER strtoul(VALUE, NULL, 0) + +typedef struct +{ + uint32_t start_code; // B instruction + uint8_t logo[0xA0-0x04]; // logo data + uint8_t title[0xC]; // game title name + uint32_t game_code; // + uint16_t maker_code; // + uint8_t fixed; // 0x96 + uint8_t unit_code; // 0x00 + uint8_t device_type; // 0x00 + uint8_t unused[7]; // + uint8_t game_version; // 0x00 + uint8_t complement; // 800000A0..800000BC + uint16_t checksum; // 0x0000 +} Header; + + +Header header; + +unsigned short checksum_without_header = 0; + +const Header good_header = +{ + // start_code + 0xEA00002E, + // logo + { 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84,0x82,0x0A,0x84,0xE4,0x09,0xAD, + 0x11,0x24,0x8B,0x98,0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09,0xCE,0x20, + 0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC,0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF, + 0x85,0xF4,0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0,0x13,0x72,0xA7,0xFC, + 0x9F,0x84,0x4D,0x73,0xA3,0xCA,0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76, + 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38,0x84,0x00,0x40,0xA7,0x0E,0xFD, + 0xFF,0x52,0xFE,0x03,0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6,0x80,0x25, + 0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2,0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44, + 0x78,0x00,0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63,0x87,0xF0,0x3C,0xAF, + 0xD6,0x25,0xE4,0x8B,0x38,0x0A,0xAC,0x72,0x21,0xD4,0xF8,0x07 } , + // title + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + // game code + 0x00000000, + // maker code + 0x3130, + // fixed + 0x96, + // unit_code + 0x00, + // device type + 0x00, + // unused + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + // game version + 0x00, + // complement + 0x00, + // checksum + 0x0000 +}; + +//--------------------------------------------------------------------------------- +char HeaderComplement() +/*--------------------------------------------------------------------------------- + Calculate Header complement check +---------------------------------------------------------------------------------*/ +{ + int n; + char c = 0; + char *p = (char *)&header + 0xA0; + for (n=0; n<0xBD-0xA0; n++) + { + c += *p++; + } + return -(0x19+c); +} + + +//--------------------------------------------------------------------------------- +int main(int argc, char *argv[]) +//--------------------------------------------------------------------------------- +{ + int arg; + char *argfile = 0; + FILE *infile; + int silent = 0; + int schedule_pad = 0; + + int size,bit; + + // show syntax + if (argc <= 1) + { + printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n"); + printf("Syntax: gbafix [-p] [-t[title]] [-c] [-m] [-r] [-d] [--silent]\n"); + printf("\n"); + printf("parameters:\n"); + printf(" -p Pad to next exact power of 2. No minimum size!\n"); + printf(" -t[] Patch title. Stripped filename if none given.\n"); + printf(" -c<game_code> Patch game code (four characters)\n"); + printf(" -m<maker_code> Patch maker code (two characters)\n"); + printf(" -r<version> Patch game version (number)\n"); + printf(" -d<debug> Enable debugging handler and set debug entry point (0 or 1)\n"); + printf(" --silent Silence non-error output\n"); + return -1; + } + + // get filename + for (arg=1; arg<argc; arg++) + { + if (ARGV[0] != '-') { argfile=ARGV; } + if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; } + } + + // check filename + if (!argfile) + { + fprintf(stderr, "Filename needed!\n"); + return -1; + } + + uint32_t sh_offset = 0; + + // read file + infile = fopen(argfile, "r+b"); + if (!infile) { fprintf(stderr, "Error opening input file!\n"); return -1; } + fseek(infile, sh_offset, SEEK_SET); + fread(&header, sizeof(header), 1, infile); + + // elf check + Elf32_Shdr secHeader; + if (memcmp(&header, ELFMAG, 4) == 0) { + Elf32_Ehdr *elfHeader = (Elf32_Ehdr *)&header; + fseek(infile, elfHeader->e_shoff, SEEK_SET); + int i; + for (i = 0; i < elfHeader->e_shnum; i++) { + fread(&secHeader, sizeof(Elf32_Shdr), 1, infile); + if (secHeader.sh_type == SHT_PROGBITS && secHeader.sh_addr == elfHeader->e_entry) break; + } + if (i == elfHeader->e_shnum) { fprintf(stderr, "Error finding entry point!\n"); return 1; } + fseek(infile, secHeader.sh_offset, SEEK_SET); + sh_offset = secHeader.sh_offset; + fread(&header, sizeof(header), 1, infile); + } + + // fix some data + memcpy(header.logo, good_header.logo, sizeof(header.logo)); + memcpy(&header.fixed, &good_header.fixed, sizeof(header.fixed)); + memcpy(&header.device_type, &good_header.device_type, sizeof(header.device_type)); + + // parse command line + for (arg=1; arg<argc; arg++) + { + if ((ARGV[0] == '-')) + { + switch (ARGV[1]) + { + case 'p': // pad + { + schedule_pad = 1; + break; + } + + case 't': // title + { + char title[256]; + memset(title, 0, sizeof(title)); + if (VALUE[0]) + { + strncpy(title, VALUE, sizeof(header.title)); + } + else + { + // use filename + char s[256], *begin=s, *t; strcpy(s, argfile); + t = strrchr(s, '\\'); if (t) begin = t+1; + t = strrchr(s, '/'); if (t) begin = t+1; + t = strrchr(s, '.'); if (t) *t = 0; + strncpy(title, begin, sizeof(header.title)); + if (!silent) printf("%s\n",begin); + } + memcpy(header.title, title, sizeof(header.title)); // copy + break; + } + + case 'c': // game code + { + //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; } + //header.game_code = NUMBER; + header.game_code = VALUE[0] | VALUE[1]<<8 | VALUE[2]<<16 | VALUE[3]<<24; + break; + } + + case 'm': // maker code + { + //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; } + //header.maker_code = (unsigned short)NUMBER; + header.maker_code = VALUE[0] | VALUE[1]<<8; + break; + } + + case 'v': // ignored, compatability with other gbafix + { + break; + } + + case 'r': // version + { + if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; } + header.game_version = (unsigned char)NUMBER; + break; + } + + case 'd': // debug + { + if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; } + header.logo[0x9C-0x04] = 0xA5; // debug enable + header.device_type = (unsigned char)((NUMBER & 1) << 7); // debug handler entry point + break; + } + case '-': // long arguments + { + if (strncmp("silent", &ARGV[2], 6) == 0) { continue; } + break; + } + default: + { + printf("Invalid option: %s\n", ARGV); + } + } + } + } + + // update complement check & total checksum + header.complement = 0; + header.checksum = 0; // must be 0 + header.complement = HeaderComplement(); + //header.checksum = checksum_without_header + HeaderChecksum(); + + if (schedule_pad) { + if (sh_offset != 0) { + fprintf(stderr, "Warning: Cannot safely pad an ELF\n"); + } else { + fseek(infile, 0, SEEK_END); + size = ftell(infile); + for (bit=31; bit>=0; bit--) if (size & (1<<bit)) break; + if (size != (1<<bit)) + { + int todo = (1<<(bit+1)) - size; + while (todo--) fputc(0xFF, infile); + } + } + } + + fseek(infile, sh_offset, SEEK_SET); + fwrite(&header, sizeof(header), 1, infile); + fclose(infile); + + if (!silent) printf("ROM fixed!\n"); + + return 0; +} diff --git a/tools/gbagfx/.gitignore b/tools/gbagfx/.gitignore new file mode 100644 index 0000000..dbbb3f0 --- /dev/null +++ b/tools/gbagfx/.gitignore @@ -0,0 +1 @@ +gbagfx diff --git a/tools/gbagfx/LICENSE b/tools/gbagfx/LICENSE new file mode 100644 index 0000000..b66bf81 --- /dev/null +++ b/tools/gbagfx/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile new file mode 100644 index 0000000..339585b --- /dev/null +++ b/tools/gbagfx/Makefile @@ -0,0 +1,18 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK + +LIBS = -lpng -lz + +SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c + +.PHONY: all clean + +all: gbagfx + @: + +gbagfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) + +clean: + $(RM) gbagfx gbagfx.exe diff --git a/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c new file mode 100644 index 0000000..cdfa39a --- /dev/null +++ b/tools/gbagfx/convert_png.c @@ -0,0 +1,254 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <setjmp.h> +#include <png.h> +#include "global.h" +#include "convert_png.h" +#include "gfx.h" + +static FILE *PngReadOpen(char *path, png_structp *pngStruct, png_infop *pngInfo) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + unsigned char sig[8]; + + if (fread(sig, 8, 1, fp) != 1) + FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path); + + if (png_sig_cmp(sig, 0, 8)) + FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path); + + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + FATAL_ERROR("Failed to create PNG read struct.\n"); + + png_infop info_ptr = png_create_info_struct(png_ptr); + + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path); + + png_init_io(png_ptr, fp); + png_set_sig_bytes(png_ptr, 8); + png_read_info(png_ptr, info_ptr); + + *pngStruct = png_ptr; + *pngInfo = info_ptr; + + return fp; +} + +static unsigned char *ConvertBitDepth(unsigned char *src, int srcBitDepth, int destBitDepth, int numPixels) +{ + // Round the number of bits up to the next 8 and divide by 8 to get the number of bytes. + int srcSize = ((numPixels * srcBitDepth + 7) & ~7) / 8; + int destSize = ((numPixels * destBitDepth + 7) & ~7) / 8; + unsigned char *output = calloc(destSize, 1); + unsigned char *dest = output; + int i; + int j; + int destBit = 8 - destBitDepth; + + for (i = 0; i < srcSize; i++) + { + unsigned char srcByte = src[i]; + + for (j = 8 - srcBitDepth; j >= 0; j -= srcBitDepth) + { + unsigned char pixel = (srcByte >> j) % (1 << srcBitDepth); + + if (pixel >= (1 << destBitDepth)) + FATAL_ERROR("Image exceeds the maximum color value for a %ibpp image.\n", destBitDepth); + *dest |= pixel << destBit; + destBit -= destBitDepth; + if (destBit < 0) + { + dest++; + destBit = 8 - destBitDepth; + } + } + } + + return output; +} + +void ReadPng(char *path, struct Image *image) +{ + png_structp png_ptr; + png_infop info_ptr; + + FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr); + + int bit_depth = png_get_bit_depth(png_ptr, info_ptr); + + int color_type = png_get_color_type(png_ptr, info_ptr); + + if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE) + FATAL_ERROR("\"%s\" has an unsupported color type.\n", path); + + // Check if the image has a palette so that we can tell if the colors need to be inverted later. + // Don't read the palette because it's not needed for now. + image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE); + + image->width = png_get_image_width(png_ptr, info_ptr); + image->height = png_get_image_height(png_ptr, info_ptr); + + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + + image->pixels = malloc(image->height * rowbytes); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate pixel buffer.\n"); + + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); + + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error reading from \"%s\".\n", path); + + png_read_image(png_ptr, row_pointers); + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + + free(row_pointers); + fclose(fp); + + if (bit_depth != image->bitDepth) + { + unsigned char *src = image->pixels; + + if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && bit_depth != 8) + FATAL_ERROR("Bit depth of image must be 1, 2, 4, or 8.\n"); + image->pixels = ConvertBitDepth(image->pixels, bit_depth, image->bitDepth, image->width * image->height); + free(src); + image->bitDepth = bit_depth; + } +} + +void ReadPngPalette(char *path, struct Palette *palette) +{ + png_structp png_ptr; + png_infop info_ptr; + png_colorp colors; + int numColors; + + FILE *fp = PngReadOpen(path, &png_ptr, &info_ptr); + + if (png_get_color_type(png_ptr, info_ptr) != PNG_COLOR_TYPE_PALETTE) + FATAL_ERROR("The image \"%s\" does not contain a palette.\n", path); + + if (png_get_PLTE(png_ptr, info_ptr, &colors, &numColors) != PNG_INFO_PLTE) + FATAL_ERROR("Failed to retrieve palette from \"%s\".\n", path); + + if (numColors > 256) + FATAL_ERROR("Images with more than 256 colors are not supported.\n"); + + palette->numColors = numColors; + for (int i = 0; i < numColors; i++) { + palette->colors[i].red = colors[i].red; + palette->colors[i].green = colors[i].green; + palette->colors[i].blue = colors[i].blue; + } + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + + fclose(fp); +} + +void SetPngPalette(png_structp png_ptr, png_infop info_ptr, struct Palette *palette) +{ + png_colorp colors = malloc(palette->numColors * sizeof(png_color)); + + if (colors == NULL) + FATAL_ERROR("Failed to allocate PNG palette.\n"); + + for (int i = 0; i < palette->numColors; i++) { + colors[i].red = palette->colors[i].red; + colors[i].green = palette->colors[i].green; + colors[i].blue = palette->colors[i].blue; + } + + png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors); + + free(colors); +} + +void WritePng(char *path, struct Image *image) +{ + FILE *fp = fopen(path, "wb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + FATAL_ERROR("Failed to create PNG write struct.\n"); + + png_infop info_ptr = png_create_info_struct(png_ptr); + + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path); + + png_init_io(png_ptr, fp); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing header for \"%s\".\n", path); + + int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY; + + png_set_IHDR(png_ptr, info_ptr, image->width, image->height, + image->bitDepth, color_type, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + + if (image->hasPalette) { + SetPngPalette(png_ptr, info_ptr, &image->palette); + + if (image->hasTransparency) { + png_byte trans = 0; + png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0); + } + } + + png_write_info(png_ptr, info_ptr); + + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); + + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing \"%s\".\n", path); + + png_write_image(png_ptr, row_pointers); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error ending write of \"%s\".\n", path); + + png_write_end(png_ptr, NULL); + + fclose(fp); + + png_destroy_write_struct(&png_ptr, &info_ptr); + free(row_pointers); +} diff --git a/tools/gbagfx/convert_png.h b/tools/gbagfx/convert_png.h new file mode 100644 index 0000000..caf081b --- /dev/null +++ b/tools/gbagfx/convert_png.h @@ -0,0 +1,12 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef CONVERT_PNG_H +#define CONVERT_PNG_H + +#include "gfx.h" + +void ReadPng(char *path, struct Image *image); +void WritePng(char *path, struct Image *image); +void ReadPngPalette(char *path, struct Palette *palette); + +#endif // CONVERT_PNG_H diff --git a/tools/gbagfx/font.c b/tools/gbagfx/font.c new file mode 100644 index 0000000..0dd6fbc --- /dev/null +++ b/tools/gbagfx/font.c @@ -0,0 +1,326 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> +#include "global.h" +#include "font.h" +#include "gfx.h" +#include "util.h" + +unsigned char gFontPalette[][3] = { + {0x90, 0xC8, 0xFF}, // bg (saturated blue that contrasts well with the shadow color) + {0x38, 0x38, 0x38}, // fg (dark grey) + {0xD8, 0xD8, 0xD8}, // shadow (light grey) + {0xFF, 0xFF, 0xFF} // box (white) +}; + +static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + unsigned int srcPixelsOffset = 0; + + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) { + unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + srcPixelsOffset += 2; + } + } + } + } +} + +static void ConvertToLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + unsigned int destPixelsOffset = 0; + + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) { + unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + destPixelsOffset += 2; + } + } + } + } +} + +static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + unsigned int glyphIndex = (row * 16) + column; + + for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) { + unsigned int pixelsX = column * 8; + unsigned int srcPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile; + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i; + unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + srcPixelsOffset += 2; + } + } + } + } +} + +static void ConvertToHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + unsigned int glyphIndex = (row * 16) + column; + + for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) { + unsigned int pixelsX = column * 8; + unsigned int destPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile; + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i; + unsigned int srcPixelsOffset = (pixelsY * 32) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + destPixelsOffset += 2; + } + } + } + } +} + +static void ConvertFromFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + unsigned int glyphIndex = (row * 16) + column; + + for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) { + unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); + unsigned int srcPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1); + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + srcPixelsOffset += 2; + } + } + } + } +} + +static void ConvertToFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows) +{ + for (unsigned int row = 0; row < numRows; row++) { + for (unsigned int column = 0; column < 16; column++) { + unsigned int glyphIndex = (row * 16) + column; + + for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) { + unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); + unsigned int destPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1); + + for (unsigned int i = 0; i < 8; i++) { + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4); + + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; + dest[destPixelsOffset + 1] = src[srcPixelsOffset]; + + destPixelsOffset += 2; + } + } + } + } +} + +static void SetFontPalette(struct Image *image) +{ + image->hasPalette = true; + + image->palette.numColors = 4; + + for (int i = 0; i < image->palette.numColors; i++) { + image->palette.colors[i].red = gFontPalette[i][0]; + image->palette.colors[i].green = gFontPalette[i][1]; + image->palette.colors[i].blue = gFontPalette[i][2]; + } + + image->hasTransparency = false; +} + +void ReadLatinFont(char *path, struct Image *image) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + int numGlyphs = fileSize / 64; + + if (numGlyphs % 16 != 0) + FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); + + int numRows = numGlyphs / 16; + + image->width = 256; + image->height = numRows * 16; + image->bitDepth = 2; + image->pixels = malloc(fileSize); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertFromLatinFont(buffer, image->pixels, numRows); + + free(buffer); + + SetFontPalette(image); +} + +void WriteLatinFont(char *path, struct Image *image) +{ + if (image->width != 256) + FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width); + + if (image->height % 16 != 0) + FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height); + + int numRows = image->height / 16; + int bufferSize = numRows * 16 * 64; + unsigned char *buffer = malloc(bufferSize); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertToLatinFont(image->pixels, buffer, numRows); + + WriteWholeFile(path, buffer, bufferSize); + + free(buffer); +} + +void ReadHalfwidthJapaneseFont(char *path, struct Image *image) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + int glyphSize = 32; + + if (fileSize % glyphSize != 0) + FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize); + + int numGlyphs = fileSize / glyphSize; + + if (numGlyphs % 16 != 0) + FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); + + int numRows = numGlyphs / 16; + + image->width = 128; + image->height = numRows * 16; + image->bitDepth = 2; + image->pixels = malloc(fileSize); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertFromHalfwidthJapaneseFont(buffer, image->pixels, numRows); + + free(buffer); + + SetFontPalette(image); +} + +void WriteHalfwidthJapaneseFont(char *path, struct Image *image) +{ + if (image->width != 128) + FATAL_ERROR("The width of the font image (%d) is not 128.\n", image->width); + + if (image->height % 16 != 0) + FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height); + + int numRows = image->height / 16; + int bufferSize = numRows * 16 * 32; + unsigned char *buffer = malloc(bufferSize); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertToHalfwidthJapaneseFont(image->pixels, buffer, numRows); + + WriteWholeFile(path, buffer, bufferSize); + + free(buffer); +} + +void ReadFullwidthJapaneseFont(char *path, struct Image *image) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + int numGlyphs = fileSize / 64; + + if (numGlyphs % 16 != 0) + FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); + + int numRows = numGlyphs / 16; + + image->width = 256; + image->height = numRows * 16; + image->bitDepth = 2; + image->pixels = malloc(fileSize); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertFromFullwidthJapaneseFont(buffer, image->pixels, numRows); + + free(buffer); + + SetFontPalette(image); +} + +void WriteFullwidthJapaneseFont(char *path, struct Image *image) +{ + if (image->width != 256) + FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width); + + if (image->height % 16 != 0) + FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height); + + int numRows = image->height / 16; + int bufferSize = numRows * 16 * 64; + unsigned char *buffer = malloc(bufferSize); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + ConvertToFullwidthJapaneseFont(image->pixels, buffer, numRows); + + WriteWholeFile(path, buffer, bufferSize); + + free(buffer); +} diff --git a/tools/gbagfx/font.h b/tools/gbagfx/font.h new file mode 100644 index 0000000..45086d0 --- /dev/null +++ b/tools/gbagfx/font.h @@ -0,0 +1,16 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef FONT_H +#define FONT_H + +#include <stdbool.h> +#include "gfx.h" + +void ReadLatinFont(char *path, struct Image *image); +void WriteLatinFont(char *path, struct Image *image); +void ReadHalfwidthJapaneseFont(char *path, struct Image *image); +void WriteHalfwidthJapaneseFont(char *path, struct Image *image); +void ReadFullwidthJapaneseFont(char *path, struct Image *image); +void WriteFullwidthJapaneseFont(char *path, struct Image *image); + +#endif // FONT_H diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c new file mode 100644 index 0000000..f927dee --- /dev/null +++ b/tools/gbagfx/gfx.c @@ -0,0 +1,344 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> +#include "global.h" +#include "gfx.h" +#include "util.h" + +#define GET_GBA_PAL_RED(x) (((x) >> 0) & 0x1F) +#define GET_GBA_PAL_GREEN(x) (((x) >> 5) & 0x1F) +#define GET_GBA_PAL_BLUE(x) (((x) >> 10) & 0x1F) + +#define SET_GBA_PAL(r, g, b) (((b) << 10) | ((g) << 5) | (r)) + +#define UPCONVERT_BIT_DEPTH(x) (((x) * 255) / 31) + +#define DOWNCONVERT_BIT_DEPTH(x) ((x) / 8) + +static void AdvanceMetatilePosition(int *subTileX, int *subTileY, int *metatileX, int *metatileY, int metatilesWide, int metatileWidth, int metatileHeight) +{ + (*subTileX)++; + if (*subTileX == metatileWidth) { + *subTileX = 0; + (*subTileY)++; + if (*subTileY == metatileHeight) { + *subTileY = 0; + (*metatileX)++; + if (*metatileX == metatilesWide) { + *metatileX = 0; + (*metatileY)++; + } + } + } +} + +static void ConvertFromTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = metatilesWide * metatileWidth; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int destY = (metatileY * metatileHeight + subTileY) * 8 + j; + int destX = metatileX * metatileWidth + subTileX; + unsigned char srcPixelOctet = *src++; + unsigned char *destPixelOctet = &dest[destY * pitch + destX]; + + for (int k = 0; k < 8; k++) { + *destPixelOctet <<= 1; + *destPixelOctet |= (srcPixelOctet & 1) ^ invertColors; + srcPixelOctet >>= 1; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +static void ConvertFromTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = (metatilesWide * metatileWidth) * 4; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int destY = (metatileY * metatileHeight + subTileY) * 8 + j; + + for (int k = 0; k < 4; k++) { + int destX = (metatileX * metatileWidth + subTileX) * 4 + k; + unsigned char srcPixelPair = *src++; + unsigned char leftPixel = srcPixelPair & 0xF; + unsigned char rightPixel = srcPixelPair >> 4; + + if (invertColors) { + leftPixel = 15 - leftPixel; + rightPixel = 15 - rightPixel; + } + + dest[destY * pitch + destX] = (leftPixel << 4) | rightPixel; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +static void ConvertFromTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = (metatilesWide * metatileWidth) * 8; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int destY = (metatileY * metatileHeight + subTileY) * 8 + j; + + for (int k = 0; k < 8; k++) { + int destX = (metatileX * metatileWidth + subTileX) * 8 + k; + unsigned char srcPixel = *src++; + + if (invertColors) + srcPixel = 255 - srcPixel; + + dest[destY * pitch + destX] = srcPixel; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +static void ConvertToTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = metatilesWide * metatileWidth; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int srcY = (metatileY * metatileHeight + subTileY) * 8 + j; + int srcX = metatileX * metatileWidth + subTileX; + unsigned char srcPixelOctet = src[srcY * pitch + srcX]; + unsigned char *destPixelOctet = dest++; + + for (int k = 0; k < 8; k++) { + *destPixelOctet <<= 1; + *destPixelOctet |= (srcPixelOctet & 1) ^ invertColors; + srcPixelOctet >>= 1; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +static void ConvertToTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = (metatilesWide * metatileWidth) * 4; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int srcY = (metatileY * metatileHeight + subTileY) * 8 + j; + + for (int k = 0; k < 4; k++) { + int srcX = (metatileX * metatileWidth + subTileX) * 4 + k; + unsigned char srcPixelPair = src[srcY * pitch + srcX]; + unsigned char leftPixel = srcPixelPair >> 4; + unsigned char rightPixel = srcPixelPair & 0xF; + + if (invertColors) { + leftPixel = 15 - leftPixel; + rightPixel = 15 - rightPixel; + } + + *dest++ = (rightPixel << 4) | leftPixel; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +static void ConvertToTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int metatilesWide, int metatileWidth, int metatileHeight, bool invertColors) +{ + int subTileX = 0; + int subTileY = 0; + int metatileX = 0; + int metatileY = 0; + int pitch = (metatilesWide * metatileWidth) * 8; + + for (int i = 0; i < numTiles; i++) { + for (int j = 0; j < 8; j++) { + int srcY = (metatileY * metatileHeight + subTileY) * 8 + j; + + for (int k = 0; k < 8; k++) { + int srcX = (metatileX * metatileWidth + subTileX) * 8 + k; + unsigned char srcPixel = src[srcY * pitch + srcX]; + + if (invertColors) + srcPixel = 255 - srcPixel; + + *dest++ = srcPixel; + } + } + + AdvanceMetatilePosition(&subTileX, &subTileY, &metatileX, &metatileY, metatilesWide, metatileWidth, metatileHeight); + } +} + +void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) +{ + int tileSize = bitDepth * 8; + + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + int numTiles = fileSize / tileSize; + + int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth; + + if (tilesWidth % metatileWidth != 0) + FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth); + + if (tilesHeight % metatileHeight != 0) + FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight); + + image->width = tilesWidth * 8; + image->height = tilesHeight * 8; + image->bitDepth = bitDepth; + image->pixels = calloc(tilesWidth * tilesHeight, tileSize); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for pixels.\n"); + + int metatilesWide = tilesWidth / metatileWidth; + + switch (bitDepth) { + case 1: + ConvertFromTiles1Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + case 4: + ConvertFromTiles4Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + case 8: + ConvertFromTiles8Bpp(buffer, image->pixels, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + } + + free(buffer); +} + +void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors) +{ + int tileSize = bitDepth * 8; + + if (image->width % 8 != 0) + FATAL_ERROR("The width in pixels (%d) isn't a multiple of 8.\n", image->width); + + if (image->height % 8 != 0) + FATAL_ERROR("The height in pixels (%d) isn't a multiple of 8.\n", image->height); + + int tilesWidth = image->width / 8; + int tilesHeight = image->height / 8; + + if (tilesWidth % metatileWidth != 0) + FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth); + + if (tilesHeight % metatileHeight != 0) + FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight); + + int maxNumTiles = tilesWidth * tilesHeight; + + if (numTiles == 0) + numTiles = maxNumTiles; + else if (numTiles > maxNumTiles) + FATAL_ERROR("The specified number of tiles (%d) is greater than the maximum possible value (%d).\n", numTiles, maxNumTiles); + + int bufferSize = numTiles * tileSize; + unsigned char *buffer = malloc(bufferSize); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for pixels.\n"); + + int metatilesWide = tilesWidth / metatileWidth; + + switch (bitDepth) { + case 1: + ConvertToTiles1Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + case 4: + ConvertToTiles4Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + case 8: + ConvertToTiles8Bpp(image->pixels, buffer, numTiles, metatilesWide, metatileWidth, metatileHeight, invertColors); + break; + } + + WriteWholeFile(path, buffer, bufferSize); + + free(buffer); +} + +void FreeImage(struct Image *image) +{ + free(image->pixels); + image->pixels = NULL; +} + +void ReadGbaPalette(char *path, struct Palette *palette) +{ + int fileSize; + unsigned char *data = ReadWholeFile(path, &fileSize); + + if (fileSize % 2 != 0) + FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize); + + palette->numColors = fileSize / 2; + + for (int i = 0; i < palette->numColors; i++) { + uint16_t paletteEntry = (data[i * 2 + 1] << 8) | data[i * 2]; + palette->colors[i].red = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_RED(paletteEntry)); + palette->colors[i].green = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_GREEN(paletteEntry)); + palette->colors[i].blue = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_BLUE(paletteEntry)); + } + + free(data); +} + +void WriteGbaPalette(char *path, struct Palette *palette) +{ + FILE *fp = fopen(path, "wb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + + for (int i = 0; i < palette->numColors; i++) { + unsigned char red = DOWNCONVERT_BIT_DEPTH(palette->colors[i].red); + unsigned char green = DOWNCONVERT_BIT_DEPTH(palette->colors[i].green); + unsigned char blue = DOWNCONVERT_BIT_DEPTH(palette->colors[i].blue); + + uint16_t paletteEntry = SET_GBA_PAL(red, green, blue); + + fputc(paletteEntry & 0xFF, fp); + fputc(paletteEntry >> 8, fp); + } + + fclose(fp); +} diff --git a/tools/gbagfx/gfx.h b/tools/gbagfx/gfx.h new file mode 100644 index 0000000..5355ced --- /dev/null +++ b/tools/gbagfx/gfx.h @@ -0,0 +1,36 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef GFX_H +#define GFX_H + +#include <stdint.h> +#include <stdbool.h> + +struct Color { + unsigned char red; + unsigned char green; + unsigned char blue; +}; + +struct Palette { + struct Color colors[256]; + int numColors; +}; + +struct Image { + int width; + int height; + int bitDepth; + unsigned char *pixels; + bool hasPalette; + struct Palette palette; + bool hasTransparency; +}; + +void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); +void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors); +void FreeImage(struct Image *image); +void ReadGbaPalette(char *path, struct Palette *palette); +void WriteGbaPalette(char *path, struct Palette *palette); + +#endif // GFX_H diff --git a/tools/gbagfx/global.h b/tools/gbagfx/global.h new file mode 100644 index 0000000..65dd351 --- /dev/null +++ b/tools/gbagfx/global.h @@ -0,0 +1,31 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef GLOBAL_H +#define GLOBAL_H + +#include <stdio.h> +#include <stdlib.h> + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#define UNUSED + +#else + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#define UNUSED __attribute__((__unused__)) + +#endif // _MSC_VER + +#endif // GLOBAL_H diff --git a/tools/gbagfx/jasc_pal.c b/tools/gbagfx/jasc_pal.c new file mode 100644 index 0000000..e5ba9c3 --- /dev/null +++ b/tools/gbagfx/jasc_pal.c @@ -0,0 +1,172 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <string.h> +#include "global.h" +#include "gfx.h" +#include "util.h" + +// Read/write Paint Shop Pro palette files. + +// Format of a Paint Shop Pro palette file, line by line: +// "JASC-PAL\r\n" (signature) +// "0100\r\n" (version; seems to always be "0100") +// "<NUMBER_OF_COLORS>\r\n" (number of colors in decimal) +// +// <NUMBER_OF_COLORS> times: +// "<RED> <GREEN> <BLUE>\r\n" (color entry) +// +// Each color component is a decimal number from 0 to 255. +// Examples: +// Black - "0 0 0\r\n" +// Blue - "0 0 255\r\n" +// Brown - "150 75 0\r\n" + +#define MAX_LINE_LENGTH 11 + +void ReadJascPaletteLine(FILE *fp, char *line) +{ + int c; + int length = 0; + + for (;;) + { + c = fgetc(fp); + + if (c == '\r') + { + c = fgetc(fp); + + if (c != '\n') + FATAL_ERROR("CR line endings aren't supported.\n"); + + line[length] = 0; + + return; + } + + if (c == '\n') + FATAL_ERROR("LF line endings aren't supported.\n"); + + if (c == EOF) + FATAL_ERROR("Unexpected EOF. No CRLF at end of file.\n"); + + if (c == 0) + FATAL_ERROR("NUL character in file.\n"); + + if (length == MAX_LINE_LENGTH) + { + line[length] = 0; + FATAL_ERROR("The line \"%s\" is too long.\n", line); + } + + line[length++] = c; + } +} + +void ReadJascPalette(char *path, struct Palette *palette) +{ + char line[MAX_LINE_LENGTH + 1]; + + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open JASC-PAL file \"%s\" for reading.\n", path); + + ReadJascPaletteLine(fp, line); + + if (strcmp(line, "JASC-PAL") != 0) + FATAL_ERROR("Invalid JASC-PAL signature.\n"); + + ReadJascPaletteLine(fp, line); + + if (strcmp(line, "0100") != 0) + FATAL_ERROR("Unsuported JASC-PAL version.\n"); + + ReadJascPaletteLine(fp, line); + + if (!ParseNumber(line, NULL, 10, &palette->numColors)) + FATAL_ERROR("Failed to parse number of colors.\n"); + + if (palette->numColors < 1 || palette->numColors > 256) + FATAL_ERROR("%d is an invalid number of colors. The number of colors must be in the range [1, 256].\n", palette->numColors); + + for (int i = 0; i < palette->numColors; i++) + { + ReadJascPaletteLine(fp, line); + + char *s = line; + char *end; + + int red; + int green; + int blue; + + if (!ParseNumber(s, &end, 10, &red)) + FATAL_ERROR("Failed to parse red color component.\n"); + + s = end; + + if (*s != ' ') + FATAL_ERROR("Expected a space after red color component.\n"); + + s++; + + if (*s < '0' || *s > '9') + FATAL_ERROR("Expected only a space between red and green color components.\n"); + + if (!ParseNumber(s, &end, 10, &green)) + FATAL_ERROR("Failed to parse green color component.\n"); + + s = end; + + if (*s != ' ') + FATAL_ERROR("Expected a space after green color component.\n"); + + s++; + + if (*s < '0' || *s > '9') + FATAL_ERROR("Expected only a space between green and blue color components.\n"); + + if (!ParseNumber(s, &end, 10, &blue)) + FATAL_ERROR("Failed to parse blue color component.\n"); + + if (*end != 0) + FATAL_ERROR("Garbage after blue color component.\n"); + + if (red < 0 || red > 255) + FATAL_ERROR("Red color component (%d) is outside the range [0, 255].\n", red); + + if (green < 0 || green > 255) + FATAL_ERROR("Green color component (%d) is outside the range [0, 255].\n", green); + + if (blue < 0 || blue > 255) + FATAL_ERROR("Blue color component (%d) is outside the range [0, 255].\n", blue); + + palette->colors[i].red = red; + palette->colors[i].green = green; + palette->colors[i].blue = blue; + } + + if (fgetc(fp) != EOF) + FATAL_ERROR("Garbage after color data.\n"); + + fclose(fp); +} + +void WriteJascPalette(char *path, struct Palette *palette) +{ + FILE *fp = fopen(path, "wb"); + + fputs("JASC-PAL\r\n", fp); + fputs("0100\r\n", fp); + fprintf(fp, "%d\r\n", palette->numColors); + + for (int i = 0; i < palette->numColors; i++) + { + struct Color *color = &palette->colors[i]; + fprintf(fp, "%d %d %d\r\n", color->red, color->green, color->blue); + } + + fclose(fp); +} diff --git a/tools/gbagfx/jasc_pal.h b/tools/gbagfx/jasc_pal.h new file mode 100644 index 0000000..b60b31f --- /dev/null +++ b/tools/gbagfx/jasc_pal.h @@ -0,0 +1,9 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef JASC_PAL_H +#define JASC_PAL_H + +void ReadJascPalette(char *path, struct Palette *palette); +void WriteJascPalette(char *path, struct Palette *palette); + +#endif // JASC_PAL_H diff --git a/tools/gbagfx/lz.c b/tools/gbagfx/lz.c new file mode 100644 index 0000000..c2ba3e3 --- /dev/null +++ b/tools/gbagfx/lz.c @@ -0,0 +1,155 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdlib.h> +#include <stdbool.h> +#include "global.h" +#include "lz.h" + +unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize) +{ + if (srcSize < 4) + goto fail; + + int destSize = (src[3] << 16) | (src[2] << 8) | src[1]; + + unsigned char *dest = malloc(destSize); + + if (dest == NULL) + goto fail; + + int srcPos = 4; + int destPos = 0; + + for (;;) { + if (srcPos >= srcSize) + goto fail; + + unsigned char flags = src[srcPos++]; + + for (int i = 0; i < 8; i++) { + if (flags & 0x80) { + if (srcPos + 1 >= srcSize) + goto fail; + + int blockSize = (src[srcPos] >> 4) + 3; + int blockDistance = (((src[srcPos] & 0xF) << 8) | src[srcPos + 1]) + 1; + + srcPos += 2; + + int blockPos = destPos - blockDistance; + + // Some Ruby/Sapphire tilesets overflow. + if (destPos + blockSize > destSize) { + blockSize = destSize - destPos; + fprintf(stderr, "Destination buffer overflow.\n"); + } + + if (blockPos < 0) + goto fail; + + for (int j = 0; j < blockSize; j++) + dest[destPos++] = dest[blockPos + j]; + } else { + if (srcPos >= srcSize || destPos >= destSize) + goto fail; + + dest[destPos++] = src[srcPos++]; + } + + if (destPos == destSize) { + *uncompressedSize = destSize; + return dest; + } + + flags <<= 1; + } + } + +fail: + FATAL_ERROR("Fatal error while decompressing LZ file.\n"); +} + +unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize) +{ + const int minDistance = 2; // for compatibility with LZ77UnCompVram() + + if (srcSize <= 0) + goto fail; + + int worstCaseDestSize = 4 + srcSize + ((srcSize + 7) / 8); + + // Round up to the next multiple of four. + worstCaseDestSize = (worstCaseDestSize + 3) & ~3; + + unsigned char *dest = malloc(worstCaseDestSize); + + if (dest == NULL) + goto fail; + + // header + dest[0] = 0x10; // LZ compression type + dest[1] = (unsigned char)srcSize; + dest[2] = (unsigned char)(srcSize >> 8); + dest[3] = (unsigned char)(srcSize >> 16); + + int srcPos = 0; + int destPos = 4; + + for (;;) { + unsigned char *flags = &dest[destPos++]; + *flags = 0; + + for (int i = 0; i < 8; i++) { + int bestBlockDistance = 0; + int bestBlockSize = 0; + int blockDistance = minDistance; + + while (blockDistance <= srcPos && blockDistance <= 0x1000) { + int blockStart = srcPos - blockDistance; + int blockSize = 0; + + while (blockSize < 18 + && srcPos + blockSize < srcSize + && src[blockStart + blockSize] == src[srcPos + blockSize]) + blockSize++; + + if (blockSize > bestBlockSize) { + bestBlockDistance = blockDistance; + bestBlockSize = blockSize; + + if (blockSize == 18) + break; + } + + blockDistance++; + } + + if (bestBlockSize >= 3) { + *flags |= (0x80 >> i); + srcPos += bestBlockSize; + bestBlockSize -= 3; + bestBlockDistance--; + dest[destPos++] = (bestBlockSize << 4) | ((unsigned int)bestBlockDistance >> 8); + dest[destPos++] = (unsigned char)bestBlockDistance; + } else { + dest[destPos++] = src[srcPos++]; + } + + if (srcPos == srcSize) { + // Pad to multiple of 4 bytes. + int remainder = destPos % 4; + + if (remainder != 0) { + for (int i = 0; i < 4 - remainder; i++) + dest[destPos++] = 0; + } + + *compressedSize = destPos; + return dest; + } + } + } + +fail: + FATAL_ERROR("Fatal error while compressing LZ file.\n"); +} diff --git a/tools/gbagfx/lz.h b/tools/gbagfx/lz.h new file mode 100644 index 0000000..164d622 --- /dev/null +++ b/tools/gbagfx/lz.h @@ -0,0 +1,9 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef LZ_H +#define LZ_H + +unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize); +unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize); + +#endif // LZ_H diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c new file mode 100644 index 0000000..86b0afa --- /dev/null +++ b/tools/gbagfx/main.c @@ -0,0 +1,465 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <string.h> +#include <stdbool.h> +#include "global.h" +#include "util.h" +#include "options.h" +#include "gfx.h" +#include "convert_png.h" +#include "jasc_pal.h" +#include "lz.h" +#include "rl.h" +#include "font.h" + +struct CommandHandler +{ + const char *inputFileExtension; + const char *outputFileExtension; + void(*function)(char *inputPath, char *outputPath, int argc, char **argv); +}; + +void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions *options) +{ + struct Image image; + + if (options->paletteFilePath != NULL) + { + ReadGbaPalette(options->paletteFilePath, &image.palette); + image.hasPalette = true; + } + else + { + image.hasPalette = false; + } + + ReadImage(inputPath, options->width, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); + + image.hasTransparency = options->hasTransparency; + + WritePng(outputPath, &image); + + FreeImage(&image); +} + +void ConvertPngToGba(char *inputPath, char *outputPath, struct PngToGbaOptions *options) +{ + struct Image image; + + image.bitDepth = options->bitDepth; + + ReadPng(inputPath, &image); + + WriteImage(outputPath, options->numTiles, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette); + + FreeImage(&image); +} + +void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **argv) +{ + char *inputFileExtension = GetFileExtension(inputPath); + struct GbaToPngOptions options; + options.paletteFilePath = NULL; + options.bitDepth = inputFileExtension[0] - '0'; + options.hasTransparency = false; + options.width = 1; + options.metatileWidth = 1; + options.metatileHeight = 1; + + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-palette") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No palette file path following \"-palette\".\n"); + + i++; + + options.paletteFilePath = argv[i]; + } + else if (strcmp(option, "-object") == 0) + { + options.hasTransparency = true; + } + else if (strcmp(option, "-width") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No width following \"-width\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.width)) + FATAL_ERROR("Failed to parse width.\n"); + + if (options.width < 1) + FATAL_ERROR("Width must be positive.\n"); + } + else if (strcmp(option, "-mwidth") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No metatile width value following \"-mwidth\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.metatileWidth)) + FATAL_ERROR("Failed to parse metatile width.\n"); + + if (options.metatileWidth < 1) + FATAL_ERROR("metatile width must be positive.\n"); + } + else if (strcmp(option, "-mheight") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No metatile height value following \"-mheight\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.metatileHeight)) + FATAL_ERROR("Failed to parse metatile height.\n"); + + if (options.metatileHeight < 1) + FATAL_ERROR("metatile height must be positive.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + if (options.metatileWidth > options.width) + options.width = options.metatileWidth; + + ConvertGbaToPng(inputPath, outputPath, &options); +} + +void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **argv) +{ + char *outputFileExtension = GetFileExtension(outputPath); + int bitDepth = outputFileExtension[0] - '0'; + struct PngToGbaOptions options; + options.numTiles = 0; + options.bitDepth = bitDepth; + options.metatileWidth = 1; + options.metatileHeight = 1; + + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-num_tiles") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No number of tiles following \"-num_tiles\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.numTiles)) + FATAL_ERROR("Failed to parse number of tiles.\n"); + + if (options.numTiles < 1) + FATAL_ERROR("Number of tiles must be positive.\n"); + } + else if (strcmp(option, "-mwidth") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No metatile width value following \"-mwidth\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.metatileWidth)) + FATAL_ERROR("Failed to parse metatile width.\n"); + + if (options.metatileWidth < 1) + FATAL_ERROR("metatile width must be positive.\n"); + } + else if (strcmp(option, "-mheight") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No metatile height value following \"-mheight\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &options.metatileHeight)) + FATAL_ERROR("Failed to parse metatile height.\n"); + + if (options.metatileHeight < 1) + FATAL_ERROR("metatile height must be positive.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + ConvertPngToGba(inputPath, outputPath, &options); +} + +void HandlePngToGbaPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Palette palette; + + ReadPngPalette(inputPath, &palette); + WriteGbaPalette(outputPath, &palette); +} + +void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Palette palette; + + ReadGbaPalette(inputPath, &palette); + WriteJascPalette(outputPath, &palette); +} + +void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv) +{ + int numColors = 0; + + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-num_colors") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No number of colors following \"-num_colors\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &numColors)) + FATAL_ERROR("Failed to parse number of colors.\n"); + + if (numColors < 1) + FATAL_ERROR("Number of colors must be positive.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + struct Palette palette; + + ReadJascPalette(inputPath, &palette); + + if (numColors != 0) + palette.numColors = numColors; + + WriteGbaPalette(outputPath, &palette); +} + +void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + ReadLatinFont(inputPath, &image); + WritePng(outputPath, &image); + + FreeImage(&image); +} + +void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + image.bitDepth = 2; + + ReadPng(inputPath, &image); + WriteLatinFont(outputPath, &image); + + FreeImage(&image); +} + +void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + ReadHalfwidthJapaneseFont(inputPath, &image); + WritePng(outputPath, &image); + + FreeImage(&image); +} + +void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + image.bitDepth = 2; + + ReadPng(inputPath, &image); + WriteHalfwidthJapaneseFont(outputPath, &image); + + FreeImage(&image); +} + +void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + ReadFullwidthJapaneseFont(inputPath, &image); + WritePng(outputPath, &image); + + FreeImage(&image); +} + +void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + struct Image image; + + image.bitDepth = 2; + + ReadPng(inputPath, &image); + WriteFullwidthJapaneseFont(outputPath, &image); + + FreeImage(&image); +} + +void HandleLZCompressCommand(char *inputPath, char *outputPath, int argc, char **argv) +{ + int overflowSize = 0; + + for (int i = 3; i < argc; i++) + { + char *option = argv[i]; + + if (strcmp(option, "-overflow") == 0) + { + if (i + 1 >= argc) + FATAL_ERROR("No size following \"-overflow\".\n"); + + i++; + + if (!ParseNumber(argv[i], NULL, 10, &overflowSize)) + FATAL_ERROR("Failed to parse overflow size.\n"); + + if (overflowSize < 1) + FATAL_ERROR("Overflow size must be positive.\n"); + } + else + { + FATAL_ERROR("Unrecognized option \"%s\".\n", option); + } + } + + // The overflow option allows a quirk in some of Ruby/Sapphire's tilesets + // to be reproduced. It works by appending a number of zeros to the data + // before compressing it and then amending the LZ header's size field to + // reflect the expected size. This will cause an overflow when decompressing + // the data. + + int fileSize; + unsigned char *buffer = ReadWholeFileZeroPadded(inputPath, &fileSize, overflowSize); + + int compressedSize; + unsigned char *compressedData = LZCompress(buffer, fileSize + overflowSize, &compressedSize); + + compressedData[1] = (unsigned char)fileSize; + compressedData[2] = (unsigned char)(fileSize >> 8); + compressedData[3] = (unsigned char)(fileSize >> 16); + + free(buffer); + + WriteWholeFile(outputPath, compressedData, compressedSize); + + free(compressedData); +} + +void HandleLZDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(inputPath, &fileSize); + + int uncompressedSize; + unsigned char *uncompressedData = LZDecompress(buffer, fileSize, &uncompressedSize); + + free(buffer); + + WriteWholeFile(outputPath, uncompressedData, uncompressedSize); + + free(uncompressedData); +} + +void HandleRLCompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(inputPath, &fileSize); + + int compressedSize; + unsigned char *compressedData = RLCompress(buffer, fileSize, &compressedSize); + + free(buffer); + + WriteWholeFile(outputPath, compressedData, compressedSize); + + free(compressedData); +} + +void HandleRLDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(inputPath, &fileSize); + + int uncompressedSize; + unsigned char *uncompressedData = RLDecompress(buffer, fileSize, &uncompressedSize); + + free(buffer); + + WriteWholeFile(outputPath, uncompressedData, uncompressedSize); + + free(uncompressedData); +} + +int main(int argc, char **argv) +{ + if (argc < 3) + FATAL_ERROR("Usage: gbagfx INPUT_PATH OUTPUT_PATH [options...]\n"); + + struct CommandHandler handlers[] = + { + { "1bpp", "png", HandleGbaToPngCommand }, + { "4bpp", "png", HandleGbaToPngCommand }, + { "8bpp", "png", HandleGbaToPngCommand }, + { "png", "1bpp", HandlePngToGbaCommand }, + { "png", "4bpp", HandlePngToGbaCommand }, + { "png", "8bpp", HandlePngToGbaCommand }, + { "png", "gbapal", HandlePngToGbaPaletteCommand }, + { "gbapal", "pal", HandleGbaToJascPaletteCommand }, + { "pal", "gbapal", HandleJascToGbaPaletteCommand }, + { "latfont", "png", HandleLatinFontToPngCommand }, + { "png", "latfont", HandlePngToLatinFontCommand }, + { "hwjpnfont", "png", HandleHalfwidthJapaneseFontToPngCommand }, + { "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand }, + { "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand }, + { "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand }, + { NULL, "lz", HandleLZCompressCommand }, + { "lz", NULL, HandleLZDecompressCommand }, + { NULL, "rl", HandleRLCompressCommand }, + { "rl", NULL, HandleRLDecompressCommand }, + { NULL, NULL, NULL } + }; + + char *inputPath = argv[1]; + char *outputPath = argv[2]; + char *inputFileExtension = GetFileExtension(inputPath); + char *outputFileExtension = GetFileExtension(outputPath); + + if (inputFileExtension == NULL) + FATAL_ERROR("Input file \"%s\" has no extension.\n", inputPath); + + if (outputFileExtension == NULL) + FATAL_ERROR("Output file \"%s\" has no extension.\n", outputPath); + + for (int i = 0; handlers[i].function != NULL; i++) + { + if ((handlers[i].inputFileExtension == NULL || strcmp(handlers[i].inputFileExtension, inputFileExtension) == 0) + && (handlers[i].outputFileExtension == NULL || strcmp(handlers[i].outputFileExtension, outputFileExtension) == 0)) + { + handlers[i].function(inputPath, outputPath, argc, argv); + return 0; + } + } + + FATAL_ERROR("Don't know how to convert \"%s\" to \"%s\".\n", inputPath, outputPath); +} diff --git a/tools/gbagfx/options.h b/tools/gbagfx/options.h new file mode 100644 index 0000000..2ff3967 --- /dev/null +++ b/tools/gbagfx/options.h @@ -0,0 +1,24 @@ +// Copyright (c) 2018 huderlem + +#ifndef OPTIONS_H +#define OPTIONS_H + +#include <stdbool.h> + +struct GbaToPngOptions { + char *paletteFilePath; + int bitDepth; + bool hasTransparency; + int width; + int metatileWidth; + int metatileHeight; +}; + +struct PngToGbaOptions { + int numTiles; + int bitDepth; + int metatileWidth; + int metatileHeight; +}; + +#endif // OPTIONS_H diff --git a/tools/gbagfx/rl.c b/tools/gbagfx/rl.c new file mode 100644 index 0000000..968c934 --- /dev/null +++ b/tools/gbagfx/rl.c @@ -0,0 +1,149 @@ +// Copyright (c) 2016 YamaArashi + +#include <stdlib.h> +#include <stdbool.h> +#include "global.h" +#include "rl.h" + +unsigned char *RLDecompress(unsigned char *src, int srcSize, int *uncompressedSize) +{ + if (srcSize < 4) + goto fail; + + int destSize = (src[3] << 16) | (src[2] << 8) | src[1]; + + unsigned char *dest = malloc(destSize); + + if (dest == NULL) + goto fail; + + int srcPos = 4; + int destPos = 0; + + for (;;) + { + if (srcPos >= srcSize) + goto fail; + + unsigned char flags = src[srcPos++]; + bool compressed = ((flags & 0x80) != 0); + + if (compressed) + { + int length = (flags & 0x7F) + 3; + unsigned char data = src[srcPos++]; + + if (destPos + length > destSize) + goto fail; + + for (int i = 0; i < length; i++) + dest[destPos++] = data; + } + else + { + int length = (flags & 0x7F) + 1; + + if (destPos + length > destSize) + goto fail; + + for (int i = 0; i < length; i++) + dest[destPos++] = src[srcPos++]; + } + + if (destPos == destSize) + { + *uncompressedSize = destSize; + return dest; + } + } + +fail: + FATAL_ERROR("Fatal error while decompressing RL file.\n"); +} + +unsigned char *RLCompress(unsigned char *src, int srcSize, int *compressedSize) +{ + if (srcSize <= 0) + goto fail; + + int worstCaseDestSize = 4 + srcSize * 2; + + // Round up to the next multiple of four. + worstCaseDestSize = (worstCaseDestSize + 3) & ~3; + + unsigned char *dest = malloc(worstCaseDestSize); + + if (dest == NULL) + goto fail; + + // header + dest[0] = 0x30; // RL compression type + dest[1] = (unsigned char)srcSize; + dest[2] = (unsigned char)(srcSize >> 8); + dest[3] = (unsigned char)(srcSize >> 16); + + int srcPos = 0; + int destPos = 4; + + for (;;) + { + bool compress = false; + int uncompressedStart = srcPos; + int uncompressedLength = 0; + + while (srcPos < srcSize && uncompressedLength < (0x7F + 1)) + { + compress = (srcPos + 2 < srcSize && src[srcPos] == src[srcPos + 1] && src[srcPos] == src[srcPos + 2]); + + if (compress) + break; + + srcPos++; + uncompressedLength++; + } + + if (uncompressedLength > 0) + { + dest[destPos++] = uncompressedLength - 1; + + for (int i = 0; i < uncompressedLength; i++) + dest[destPos++] = src[uncompressedStart + i]; + } + + if (compress) + { + unsigned char data = src[srcPos]; + int compressedLength = 0; + + while (compressedLength < (0x7F + 3) + && srcPos + compressedLength < srcSize + && src[srcPos + compressedLength] == data) + { + compressedLength++; + } + + dest[destPos++] = 0x80 | (compressedLength - 3); + dest[destPos++] = data; + + srcPos += compressedLength; + } + + if (srcPos == srcSize) + { + // Pad to multiple of 4 bytes. + int remainder = destPos % 4; + + if (remainder != 0) + { + for (int i = 0; i < 4 - remainder; i++) + dest[destPos++] = 0; + } + + *compressedSize = destPos; + return dest; + } + } + +fail: + FATAL_ERROR("Fatal error while compressing RL file.\n"); +} diff --git a/tools/gbagfx/rl.h b/tools/gbagfx/rl.h new file mode 100644 index 0000000..02ad8d6 --- /dev/null +++ b/tools/gbagfx/rl.h @@ -0,0 +1,9 @@ +// Copyright (c) 2016 YamaArashi + +#ifndef RL_H +#define RL_H + +unsigned char *RLDecompress(unsigned char *src, int srcSize, int *uncompressedSize); +unsigned char *RLCompress(unsigned char *src, int srcSize, int *compressedSize); + +#endif // RL_H diff --git a/tools/gbagfx/util.c b/tools/gbagfx/util.c new file mode 100644 index 0000000..87abeb3 --- /dev/null +++ b/tools/gbagfx/util.c @@ -0,0 +1,124 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <errno.h> +#include <limits.h> +#include "global.h" +#include "util.h" + +bool ParseNumber(char *s, char **end, int radix, int *intValue) +{ + char *localEnd; + + if (end == NULL) + end = &localEnd; + + errno = 0; + + const long longValue = strtol(s, end, radix); + + if (*end == s) + return false; // not a number + + if ((longValue == LONG_MIN || longValue == LONG_MAX) && errno == ERANGE) + return false; + + if (longValue > INT_MAX) + return false; + + if (longValue < INT_MIN) + return false; + + *intValue = (int)longValue; + + return true; +} + +char *GetFileExtension(char *path) +{ + char *extension = path; + + while (*extension != 0) + extension++; + + while (extension > path && *extension != '.') + extension--; + + if (extension == path) + return NULL; + + extension++; + + if (*extension == 0) + return NULL; + + return extension; +} + +unsigned char *ReadWholeFile(char *path, int *size) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + fseek(fp, 0, SEEK_END); + + *size = ftell(fp); + + unsigned char *buffer = malloc(*size); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path); + + rewind(fp); + + if (fread(buffer, *size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path); + + fclose(fp); + + return buffer; +} + +unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + fseek(fp, 0, SEEK_END); + + *size = ftell(fp); + + unsigned char *buffer = calloc(*size + padAmount, 1); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path); + + rewind(fp); + + if (fread(buffer, *size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path); + + fclose(fp); + + return buffer; +} + +void WriteWholeFile(char *path, void *buffer, int bufferSize) +{ + FILE *fp = fopen(path, "wb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + + if (fwrite(buffer, bufferSize, 1, fp) != 1) + FATAL_ERROR("Failed to write to \"%s\".\n", path); + + fclose(fp); +} diff --git a/tools/gbagfx/util.h b/tools/gbagfx/util.h new file mode 100644 index 0000000..6d7a9c2 --- /dev/null +++ b/tools/gbagfx/util.h @@ -0,0 +1,14 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef UTIL_H +#define UTIL_H + +#include <stdbool.h> + +bool ParseNumber(char *s, char **end, int radix, int *intValue); +char *GetFileExtension(char *path); +unsigned char *ReadWholeFile(char *path, int *size); +unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount); +void WriteWholeFile(char *path, void *buffer, int bufferSize); + +#endif // UTIL_H diff --git a/tools/jsonproc/.gitignore b/tools/jsonproc/.gitignore new file mode 100644 index 0000000..a613cf2 --- /dev/null +++ b/tools/jsonproc/.gitignore @@ -0,0 +1 @@ +jsonproc diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile new file mode 100644 index 0000000..721da10 --- /dev/null +++ b/tools/jsonproc/Makefile @@ -0,0 +1,20 @@ +CXX := g++ + +CXXFLAGS := -Wall -std=c++11 -O2 + +INCLUDES := -I . + +SRCS := jsonproc.cpp + +HEADERS := jsonproc.h inja.hpp nlohmann/json.hpp + +.PHONY: all clean + +all: jsonproc + @: + +jsonproc: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) jsonproc jsonproc.exe diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp new file mode 100644 index 0000000..3b72635 --- /dev/null +++ b/tools/jsonproc/inja.hpp @@ -0,0 +1,3396 @@ +// MIT License + +// Copyright (c) 2018 lbersch + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + + +// --- + + +// Copyright (c) 2009-2018 FIRST +// All rights reserved. + +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of the FIRST nor the +// names of its contributors may be used to endorse or promote products +// derived from this software without specific prior written permission. + +// THIS SOFTWARE IS PROVIDED BY FIRST AND CONTRIBUTORS``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef PANTOR_INJA_HPP +#define PANTOR_INJA_HPP + +#include <functional> +#include <iostream> +#include <map> +#include <memory> +#include <sstream> +#include <string> +#include <vector> + +#include <nlohmann/json.hpp> + +// #include "environment.hpp" +#ifndef PANTOR_INJA_ENVIRONMENT_HPP +#define PANTOR_INJA_ENVIRONMENT_HPP + +#include <memory> +#include <fstream> +#include <sstream> +#include <string> + +#include <nlohmann/json.hpp> + +// #include "config.hpp" +#ifndef PANTOR_INJA_CONFIG_HPP +#define PANTOR_INJA_CONFIG_HPP + +#include <functional> +#include <string> + +// #include "string_view.hpp" +// Copyright 2017-2019 by Martin Moene +// +// string-view lite, a C++17-like string_view for C++98 and later. +// For more information see https://github.com/martinmoene/string-view-lite +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + + +#ifndef NONSTD_SV_LITE_H_INCLUDED +#define NONSTD_SV_LITE_H_INCLUDED + +#define string_view_lite_MAJOR 1 +#define string_view_lite_MINOR 1 +#define string_view_lite_PATCH 0 + +#define string_view_lite_VERSION nssv_STRINGIFY(string_view_lite_MAJOR) "." nssv_STRINGIFY(string_view_lite_MINOR) "." nssv_STRINGIFY(string_view_lite_PATCH) + +#define nssv_STRINGIFY( x ) nssv_STRINGIFY_( x ) +#define nssv_STRINGIFY_( x ) #x + +// string-view lite configuration: + +#define nssv_STRING_VIEW_DEFAULT 0 +#define nssv_STRING_VIEW_NONSTD 1 +#define nssv_STRING_VIEW_STD 2 + +#if !defined( nssv_CONFIG_SELECT_STRING_VIEW ) +# define nssv_CONFIG_SELECT_STRING_VIEW ( nssv_HAVE_STD_STRING_VIEW ? nssv_STRING_VIEW_STD : nssv_STRING_VIEW_NONSTD ) +#endif + +#if defined( nssv_CONFIG_SELECT_STD_STRING_VIEW ) || defined( nssv_CONFIG_SELECT_NONSTD_STRING_VIEW ) +# error nssv_CONFIG_SELECT_STD_STRING_VIEW and nssv_CONFIG_SELECT_NONSTD_STRING_VIEW are deprecated and removed, please use nssv_CONFIG_SELECT_STRING_VIEW=nssv_STRING_VIEW_... +#endif + +#ifndef nssv_CONFIG_STD_SV_OPERATOR +# define nssv_CONFIG_STD_SV_OPERATOR 0 +#endif + +#ifndef nssv_CONFIG_USR_SV_OPERATOR +# define nssv_CONFIG_USR_SV_OPERATOR 1 +#endif + +#ifdef nssv_CONFIG_CONVERSION_STD_STRING +# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS nssv_CONFIG_CONVERSION_STD_STRING +# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS nssv_CONFIG_CONVERSION_STD_STRING +#endif + +#ifndef nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS +# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS 1 +#endif + +#ifndef nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS +# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS 1 +#endif + +// Control presence of exception handling (try and auto discover): + +#ifndef nssv_CONFIG_NO_EXCEPTIONS +# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND) +# define nssv_CONFIG_NO_EXCEPTIONS 0 +# else +# define nssv_CONFIG_NO_EXCEPTIONS 1 +# endif +#endif + +// C++ language version detection (C++20 is speculative): +// Note: VC14.0/1900 (VS2015) lacks too much from C++14. + +#ifndef nssv_CPLUSPLUS +# if defined(_MSVC_LANG ) && !defined(__clang__) +# define nssv_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG ) +# else +# define nssv_CPLUSPLUS __cplusplus +# endif +#endif + +#define nssv_CPP98_OR_GREATER ( nssv_CPLUSPLUS >= 199711L ) +#define nssv_CPP11_OR_GREATER ( nssv_CPLUSPLUS >= 201103L ) +#define nssv_CPP11_OR_GREATER_ ( nssv_CPLUSPLUS >= 201103L ) +#define nssv_CPP14_OR_GREATER ( nssv_CPLUSPLUS >= 201402L ) +#define nssv_CPP17_OR_GREATER ( nssv_CPLUSPLUS >= 201703L ) +#define nssv_CPP20_OR_GREATER ( nssv_CPLUSPLUS >= 202000L ) + +// use C++17 std::string_view if available and requested: + +#if nssv_CPP17_OR_GREATER && defined(__has_include ) +# if __has_include( <string_view> ) +# define nssv_HAVE_STD_STRING_VIEW 1 +# else +# define nssv_HAVE_STD_STRING_VIEW 0 +# endif +#else +# define nssv_HAVE_STD_STRING_VIEW 0 +#endif + +#define nssv_USES_STD_STRING_VIEW ( (nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_STD) || ((nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_DEFAULT) && nssv_HAVE_STD_STRING_VIEW) ) + +#define nssv_HAVE_STARTS_WITH ( nssv_CPP20_OR_GREATER || !nssv_USES_STD_STRING_VIEW ) +#define nssv_HAVE_ENDS_WITH nssv_HAVE_STARTS_WITH + +// +// Use C++17 std::string_view: +// + +#if nssv_USES_STD_STRING_VIEW + +#include <string_view> + +// Extensions for std::string: + +#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS + +namespace nonstd { + +template< class CharT, class Traits, class Allocator = std::allocator<CharT> > +std::basic_string<CharT, Traits, Allocator> +to_string( std::basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() ) +{ + return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a ); +} + +template< class CharT, class Traits, class Allocator > +std::basic_string_view<CharT, Traits> +to_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) +{ + return std::basic_string_view<CharT, Traits>( s.data(), s.size() ); +} + +// Literal operators sv and _sv: + +#if nssv_CONFIG_STD_SV_OPERATOR + +using namespace std::literals::string_view_literals; + +#endif + +#if nssv_CONFIG_USR_SV_OPERATOR + +inline namespace literals { +inline namespace string_view_literals { + + +constexpr std::string_view operator "" _sv( const char* str, size_t len ) noexcept // (1) +{ + return std::string_view{ str, len }; +} + +constexpr std::u16string_view operator "" _sv( const char16_t* str, size_t len ) noexcept // (2) +{ + return std::u16string_view{ str, len }; +} + +constexpr std::u32string_view operator "" _sv( const char32_t* str, size_t len ) noexcept // (3) +{ + return std::u32string_view{ str, len }; +} + +constexpr std::wstring_view operator "" _sv( const wchar_t* str, size_t len ) noexcept // (4) +{ + return std::wstring_view{ str, len }; +} + +}} // namespace literals::string_view_literals + +#endif // nssv_CONFIG_USR_SV_OPERATOR + +} // namespace nonstd + +#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS + +namespace nonstd { + +using std::string_view; +using std::wstring_view; +using std::u16string_view; +using std::u32string_view; +using std::basic_string_view; + +// literal "sv" and "_sv", see above + +using std::operator==; +using std::operator!=; +using std::operator<; +using std::operator<=; +using std::operator>; +using std::operator>=; + +using std::operator<<; + +} // namespace nonstd + +#else // nssv_HAVE_STD_STRING_VIEW + +// +// Before C++17: use string_view lite: +// + +// Compiler versions: +// +// MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0) +// MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002) +// MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003) +// MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) +// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) +// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) +// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) +// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) +// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) +// MSVC++ 14.1 _MSC_VER >= 1910 (Visual Studio 2017) + +#if defined(_MSC_VER ) && !defined(__clang__) +# define nssv_COMPILER_MSVC_VER (_MSC_VER ) +# define nssv_COMPILER_MSVC_VERSION (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) ) +#else +# define nssv_COMPILER_MSVC_VER 0 +# define nssv_COMPILER_MSVC_VERSION 0 +#endif + +#define nssv_COMPILER_VERSION( major, minor, patch ) (10 * ( 10 * major + minor) + patch) + +#if defined(__clang__) +# define nssv_COMPILER_CLANG_VERSION nssv_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__) +#else +# define nssv_COMPILER_CLANG_VERSION 0 +#endif + +#if defined(__GNUC__) && !defined(__clang__) +# define nssv_COMPILER_GNUC_VERSION nssv_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#else +# define nssv_COMPILER_GNUC_VERSION 0 +#endif + +// half-open range [lo..hi): +#define nssv_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) ) + +// Presence of language and library features: + +#ifdef _HAS_CPP0X +# define nssv_HAS_CPP0X _HAS_CPP0X +#else +# define nssv_HAS_CPP0X 0 +#endif + +// Unless defined otherwise below, consider VC14 as C++11 for variant-lite: + +#if nssv_COMPILER_MSVC_VER >= 1900 +# undef nssv_CPP11_OR_GREATER +# define nssv_CPP11_OR_GREATER 1 +#endif + +#define nssv_CPP11_90 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1500) +#define nssv_CPP11_100 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1600) +#define nssv_CPP11_110 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1700) +#define nssv_CPP11_120 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1800) +#define nssv_CPP11_140 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1900) +#define nssv_CPP11_141 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1910) + +#define nssv_CPP14_000 (nssv_CPP14_OR_GREATER) +#define nssv_CPP17_000 (nssv_CPP17_OR_GREATER) + +// Presence of C++11 language features: + +#define nssv_HAVE_CONSTEXPR_11 nssv_CPP11_140 +#define nssv_HAVE_EXPLICIT_CONVERSION nssv_CPP11_140 +#define nssv_HAVE_INLINE_NAMESPACE nssv_CPP11_140 +#define nssv_HAVE_NOEXCEPT nssv_CPP11_140 +#define nssv_HAVE_NULLPTR nssv_CPP11_100 +#define nssv_HAVE_REF_QUALIFIER nssv_CPP11_140 +#define nssv_HAVE_UNICODE_LITERALS nssv_CPP11_140 +#define nssv_HAVE_USER_DEFINED_LITERALS nssv_CPP11_140 +#define nssv_HAVE_WCHAR16_T nssv_CPP11_100 +#define nssv_HAVE_WCHAR32_T nssv_CPP11_100 + +#if ! ( ( nssv_CPP11 && nssv_COMPILER_CLANG_VERSION ) || nssv_BETWEEN( nssv_COMPILER_CLANG_VERSION, 300, 400 ) ) +# define nssv_HAVE_STD_DEFINED_LITERALS nssv_CPP11_140 +#endif + +// Presence of C++14 language features: + +#define nssv_HAVE_CONSTEXPR_14 nssv_CPP14_000 + +// Presence of C++17 language features: + +#define nssv_HAVE_NODISCARD nssv_CPP17_000 + +// Presence of C++ library features: + +#define nssv_HAVE_STD_HASH nssv_CPP11_120 + +// C++ feature usage: + +#if nssv_HAVE_CONSTEXPR_11 +# define nssv_constexpr constexpr +#else +# define nssv_constexpr /*constexpr*/ +#endif + +#if nssv_HAVE_CONSTEXPR_14 +# define nssv_constexpr14 constexpr +#else +# define nssv_constexpr14 /*constexpr*/ +#endif + +#if nssv_HAVE_EXPLICIT_CONVERSION +# define nssv_explicit explicit +#else +# define nssv_explicit /*explicit*/ +#endif + +#if nssv_HAVE_INLINE_NAMESPACE +# define nssv_inline_ns inline +#else +# define nssv_inline_ns /*inline*/ +#endif + +#if nssv_HAVE_NOEXCEPT +# define nssv_noexcept noexcept +#else +# define nssv_noexcept /*noexcept*/ +#endif + +//#if nssv_HAVE_REF_QUALIFIER +//# define nssv_ref_qual & +//# define nssv_refref_qual && +//#else +//# define nssv_ref_qual /*&*/ +//# define nssv_refref_qual /*&&*/ +//#endif + +#if nssv_HAVE_NULLPTR +# define nssv_nullptr nullptr +#else +# define nssv_nullptr NULL +#endif + +#if nssv_HAVE_NODISCARD +# define nssv_nodiscard [[nodiscard]] +#else +# define nssv_nodiscard /*[[nodiscard]]*/ +#endif + +// Additional includes: + +#include <algorithm> +#include <cassert> +#include <iterator> +#include <limits> +#include <ostream> +#include <string> // std::char_traits<> + +#if ! nssv_CONFIG_NO_EXCEPTIONS +# include <stdexcept> +#endif + +#if nssv_CPP11_OR_GREATER +# include <type_traits> +#endif + +// Clang, GNUC, MSVC warning suppression macros: + +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wreserved-user-defined-literal" +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wuser-defined-literals" +#elif defined(__GNUC__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wliteral-suffix" +#endif // __clang__ + +#if nssv_COMPILER_MSVC_VERSION >= 140 +# define nssv_SUPPRESS_MSGSL_WARNING(expr) [[gsl::suppress(expr)]] +# define nssv_SUPPRESS_MSVC_WARNING(code, descr) __pragma(warning(suppress: code) ) +# define nssv_DISABLE_MSVC_WARNINGS(codes) __pragma(warning(push)) __pragma(warning(disable: codes)) +#else +# define nssv_SUPPRESS_MSGSL_WARNING(expr) +# define nssv_SUPPRESS_MSVC_WARNING(code, descr) +# define nssv_DISABLE_MSVC_WARNINGS(codes) +#endif + +#if defined(__clang__) +# define nssv_RESTORE_WARNINGS() _Pragma("clang diagnostic pop") +#elif defined(__GNUC__) +# define nssv_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop") +#elif nssv_COMPILER_MSVC_VERSION >= 140 +# define nssv_RESTORE_WARNINGS() __pragma(warning(pop )) +#else +# define nssv_RESTORE_WARNINGS() +#endif + +// Suppress the following MSVC (GSL) warnings: +// - C4455, non-gsl : 'operator ""sv': literal suffix identifiers that do not +// start with an underscore are reserved +// - C26472, gsl::t.1 : don't use a static_cast for arithmetic conversions; +// use brace initialization, gsl::narrow_cast or gsl::narow +// - C26481: gsl::b.1 : don't use pointer arithmetic. Use span instead + +nssv_DISABLE_MSVC_WARNINGS( 4455 26481 26472 ) +//nssv_DISABLE_CLANG_WARNINGS( "-Wuser-defined-literals" ) +//nssv_DISABLE_GNUC_WARNINGS( -Wliteral-suffix ) + +namespace nonstd { namespace sv_lite { + +template +< + class CharT, + class Traits = std::char_traits<CharT> +> +class basic_string_view; + +// +// basic_string_view: +// + +template +< + class CharT, + class Traits /* = std::char_traits<CharT> */ +> +class basic_string_view +{ +public: + // Member types: + + typedef Traits traits_type; + typedef CharT value_type; + + typedef CharT * pointer; + typedef CharT const * const_pointer; + typedef CharT & reference; + typedef CharT const & const_reference; + + typedef const_pointer iterator; + typedef const_pointer const_iterator; + typedef std::reverse_iterator< const_iterator > reverse_iterator; + typedef std::reverse_iterator< const_iterator > const_reverse_iterator; + + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + // 24.4.2.1 Construction and assignment: + + nssv_constexpr basic_string_view() nssv_noexcept + : data_( nssv_nullptr ) + , size_( 0 ) + {} + +#if nssv_CPP11_OR_GREATER + nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept = default; +#else + nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept + : data_( other.data_) + , size_( other.size_) + {} +#endif + + nssv_constexpr basic_string_view( CharT const * s, size_type count ) + : data_( s ) + , size_( count ) + {} + + nssv_constexpr basic_string_view( CharT const * s) + : data_( s ) + , size_( Traits::length(s) ) + {} + + // Assignment: + +#if nssv_CPP11_OR_GREATER + nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept = default; +#else + nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept + { + data_ = other.data_; + size_ = other.size_; + return *this; + } +#endif + + // 24.4.2.2 Iterator support: + + nssv_constexpr const_iterator begin() const nssv_noexcept { return data_; } + nssv_constexpr const_iterator end() const nssv_noexcept { return data_ + size_; } + + nssv_constexpr const_iterator cbegin() const nssv_noexcept { return begin(); } + nssv_constexpr const_iterator cend() const nssv_noexcept { return end(); } + + nssv_constexpr const_reverse_iterator rbegin() const nssv_noexcept { return const_reverse_iterator( end() ); } + nssv_constexpr const_reverse_iterator rend() const nssv_noexcept { return const_reverse_iterator( begin() ); } + + nssv_constexpr const_reverse_iterator crbegin() const nssv_noexcept { return rbegin(); } + nssv_constexpr const_reverse_iterator crend() const nssv_noexcept { return rend(); } + + // 24.4.2.3 Capacity: + + nssv_constexpr size_type size() const nssv_noexcept { return size_; } + nssv_constexpr size_type length() const nssv_noexcept { return size_; } + nssv_constexpr size_type max_size() const nssv_noexcept { return (std::numeric_limits< size_type >::max)(); } + + // since C++20 + nssv_nodiscard nssv_constexpr bool empty() const nssv_noexcept + { + return 0 == size_; + } + + // 24.4.2.4 Element access: + + nssv_constexpr const_reference operator[]( size_type pos ) const + { + return data_at( pos ); + } + + nssv_constexpr14 const_reference at( size_type pos ) const + { +#if nssv_CONFIG_NO_EXCEPTIONS + assert( pos < size() ); +#else + if ( pos >= size() ) + { + throw std::out_of_range("nonst::string_view::at()"); + } +#endif + return data_at( pos ); + } + + nssv_constexpr const_reference front() const { return data_at( 0 ); } + nssv_constexpr const_reference back() const { return data_at( size() - 1 ); } + + nssv_constexpr const_pointer data() const nssv_noexcept { return data_; } + + // 24.4.2.5 Modifiers: + + nssv_constexpr14 void remove_prefix( size_type n ) + { + assert( n <= size() ); + data_ += n; + size_ -= n; + } + + nssv_constexpr14 void remove_suffix( size_type n ) + { + assert( n <= size() ); + size_ -= n; + } + + nssv_constexpr14 void swap( basic_string_view & other ) nssv_noexcept + { + using std::swap; + swap( data_, other.data_ ); + swap( size_, other.size_ ); + } + + // 24.4.2.6 String operations: + + size_type copy( CharT * dest, size_type n, size_type pos = 0 ) const + { +#if nssv_CONFIG_NO_EXCEPTIONS + assert( pos <= size() ); +#else + if ( pos > size() ) + { + throw std::out_of_range("nonst::string_view::copy()"); + } +#endif + const size_type rlen = (std::min)( n, size() - pos ); + + (void) Traits::copy( dest, data() + pos, rlen ); + + return rlen; + } + + nssv_constexpr14 basic_string_view substr( size_type pos = 0, size_type n = npos ) const + { +#if nssv_CONFIG_NO_EXCEPTIONS + assert( pos <= size() ); +#else + if ( pos > size() ) + { + throw std::out_of_range("nonst::string_view::substr()"); + } +#endif + return basic_string_view( data() + pos, (std::min)( n, size() - pos ) ); + } + + // compare(), 6x: + + nssv_constexpr14 int compare( basic_string_view other ) const nssv_noexcept // (1) + { + if ( const int result = Traits::compare( data(), other.data(), (std::min)( size(), other.size() ) ) ) + return result; + + return size() == other.size() ? 0 : size() < other.size() ? -1 : 1; + } + + nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other ) const // (2) + { + return substr( pos1, n1 ).compare( other ); + } + + nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other, size_type pos2, size_type n2 ) const // (3) + { + return substr( pos1, n1 ).compare( other.substr( pos2, n2 ) ); + } + + nssv_constexpr int compare( CharT const * s ) const // (4) + { + return compare( basic_string_view( s ) ); + } + + nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s ) const // (5) + { + return substr( pos1, n1 ).compare( basic_string_view( s ) ); + } + + nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s, size_type n2 ) const // (6) + { + return substr( pos1, n1 ).compare( basic_string_view( s, n2 ) ); + } + + // 24.4.2.7 Searching: + + // starts_with(), 3x, since C++20: + + nssv_constexpr bool starts_with( basic_string_view v ) const nssv_noexcept // (1) + { + return size() >= v.size() && compare( 0, v.size(), v ) == 0; + } + + nssv_constexpr bool starts_with( CharT c ) const nssv_noexcept // (2) + { + return starts_with( basic_string_view( &c, 1 ) ); + } + + nssv_constexpr bool starts_with( CharT const * s ) const // (3) + { + return starts_with( basic_string_view( s ) ); + } + + // ends_with(), 3x, since C++20: + + nssv_constexpr bool ends_with( basic_string_view v ) const nssv_noexcept // (1) + { + return size() >= v.size() && compare( size() - v.size(), npos, v ) == 0; + } + + nssv_constexpr bool ends_with( CharT c ) const nssv_noexcept // (2) + { + return ends_with( basic_string_view( &c, 1 ) ); + } + + nssv_constexpr bool ends_with( CharT const * s ) const // (3) + { + return ends_with( basic_string_view( s ) ); + } + + // find(), 4x: + + nssv_constexpr14 size_type find( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1) + { + return assert( v.size() == 0 || v.data() != nssv_nullptr ) + , pos >= size() + ? npos + : to_pos( std::search( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) ); + } + + nssv_constexpr14 size_type find( CharT c, size_type pos = 0 ) const nssv_noexcept // (2) + { + return find( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr14 size_type find( CharT const * s, size_type pos, size_type n ) const // (3) + { + return find( basic_string_view( s, n ), pos ); + } + + nssv_constexpr14 size_type find( CharT const * s, size_type pos = 0 ) const // (4) + { + return find( basic_string_view( s ), pos ); + } + + // rfind(), 4x: + + nssv_constexpr14 size_type rfind( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1) + { + if ( size() < v.size() ) + return npos; + + if ( v.empty() ) + return (std::min)( size(), pos ); + + const_iterator last = cbegin() + (std::min)( size() - v.size(), pos ) + v.size(); + const_iterator result = std::find_end( cbegin(), last, v.cbegin(), v.cend(), Traits::eq ); + + return result != last ? size_type( result - cbegin() ) : npos; + } + + nssv_constexpr14 size_type rfind( CharT c, size_type pos = npos ) const nssv_noexcept // (2) + { + return rfind( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr14 size_type rfind( CharT const * s, size_type pos, size_type n ) const // (3) + { + return rfind( basic_string_view( s, n ), pos ); + } + + nssv_constexpr14 size_type rfind( CharT const * s, size_type pos = npos ) const // (4) + { + return rfind( basic_string_view( s ), pos ); + } + + // find_first_of(), 4x: + + nssv_constexpr size_type find_first_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1) + { + return pos >= size() + ? npos + : to_pos( std::find_first_of( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) ); + } + + nssv_constexpr size_type find_first_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2) + { + return find_first_of( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr size_type find_first_of( CharT const * s, size_type pos, size_type n ) const // (3) + { + return find_first_of( basic_string_view( s, n ), pos ); + } + + nssv_constexpr size_type find_first_of( CharT const * s, size_type pos = 0 ) const // (4) + { + return find_first_of( basic_string_view( s ), pos ); + } + + // find_last_of(), 4x: + + nssv_constexpr size_type find_last_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1) + { + return empty() + ? npos + : pos >= size() + ? find_last_of( v, size() - 1 ) + : to_pos( std::find_first_of( const_reverse_iterator( cbegin() + pos + 1 ), crend(), v.cbegin(), v.cend(), Traits::eq ) ); + } + + nssv_constexpr size_type find_last_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2) + { + return find_last_of( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr size_type find_last_of( CharT const * s, size_type pos, size_type count ) const // (3) + { + return find_last_of( basic_string_view( s, count ), pos ); + } + + nssv_constexpr size_type find_last_of( CharT const * s, size_type pos = npos ) const // (4) + { + return find_last_of( basic_string_view( s ), pos ); + } + + // find_first_not_of(), 4x: + + nssv_constexpr size_type find_first_not_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1) + { + return pos >= size() + ? npos + : to_pos( std::find_if( cbegin() + pos, cend(), not_in_view( v ) ) ); + } + + nssv_constexpr size_type find_first_not_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2) + { + return find_first_not_of( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos, size_type count ) const // (3) + { + return find_first_not_of( basic_string_view( s, count ), pos ); + } + + nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos = 0 ) const // (4) + { + return find_first_not_of( basic_string_view( s ), pos ); + } + + // find_last_not_of(), 4x: + + nssv_constexpr size_type find_last_not_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1) + { + return empty() + ? npos + : pos >= size() + ? find_last_not_of( v, size() - 1 ) + : to_pos( std::find_if( const_reverse_iterator( cbegin() + pos + 1 ), crend(), not_in_view( v ) ) ); + } + + nssv_constexpr size_type find_last_not_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2) + { + return find_last_not_of( basic_string_view( &c, 1 ), pos ); + } + + nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos, size_type count ) const // (3) + { + return find_last_not_of( basic_string_view( s, count ), pos ); + } + + nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos = npos ) const // (4) + { + return find_last_not_of( basic_string_view( s ), pos ); + } + + // Constants: + +#if nssv_CPP17_OR_GREATER + static nssv_constexpr size_type npos = size_type(-1); +#elif nssv_CPP11_OR_GREATER + enum : size_type { npos = size_type(-1) }; +#else + enum { npos = size_type(-1) }; +#endif + +private: + struct not_in_view + { + const basic_string_view v; + + nssv_constexpr not_in_view( basic_string_view v ) : v( v ) {} + + nssv_constexpr bool operator()( CharT c ) const + { + return npos == v.find_first_of( c ); + } + }; + + nssv_constexpr size_type to_pos( const_iterator it ) const + { + return it == cend() ? npos : size_type( it - cbegin() ); + } + + nssv_constexpr size_type to_pos( const_reverse_iterator it ) const + { + return it == crend() ? npos : size_type( crend() - it - 1 ); + } + + nssv_constexpr const_reference data_at( size_type pos ) const + { +#if nssv_BETWEEN( nssv_COMPILER_GNUC_VERSION, 1, 500 ) + return data_[pos]; +#else + return assert( pos < size() ), data_[pos]; +#endif + } + +private: + const_pointer data_; + size_type size_; + +public: +#if nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS + + template< class Allocator > + basic_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) nssv_noexcept + : data_( s.data() ) + , size_( s.size() ) + {} + +#if nssv_HAVE_EXPLICIT_CONVERSION + + template< class Allocator > + explicit operator std::basic_string<CharT, Traits, Allocator>() const + { + return to_string( Allocator() ); + } + +#endif // nssv_HAVE_EXPLICIT_CONVERSION + +#if nssv_CPP11_OR_GREATER + + template< class Allocator = std::allocator<CharT> > + std::basic_string<CharT, Traits, Allocator> + to_string( Allocator const & a = Allocator() ) const + { + return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a ); + } + +#else + + std::basic_string<CharT, Traits> + to_string() const + { + return std::basic_string<CharT, Traits>( begin(), end() ); + } + + template< class Allocator > + std::basic_string<CharT, Traits, Allocator> + to_string( Allocator const & a ) const + { + return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a ); + } + +#endif // nssv_CPP11_OR_GREATER + +#endif // nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS +}; + +// +// Non-member functions: +// + +// 24.4.3 Non-member comparison functions: +// lexicographically compare two string views (function template): + +template< class CharT, class Traits > +nssv_constexpr bool operator== ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) == 0 ; } + +template< class CharT, class Traits > +nssv_constexpr bool operator!= ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) != 0 ; } + +template< class CharT, class Traits > +nssv_constexpr bool operator< ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) < 0 ; } + +template< class CharT, class Traits > +nssv_constexpr bool operator<= ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) <= 0 ; } + +template< class CharT, class Traits > +nssv_constexpr bool operator> ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) > 0 ; } + +template< class CharT, class Traits > +nssv_constexpr bool operator>= ( + basic_string_view <CharT, Traits> lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.compare( rhs ) >= 0 ; } + +// Let S be basic_string_view<CharT, Traits>, and sv be an instance of S. +// Implementations shall provide sufficient additional overloads marked +// constexpr and noexcept so that an object t with an implicit conversion +// to S can be compared according to Table 67. + +#if nssv_CPP11_OR_GREATER && ! nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 100, 141 ) + +#define nssv_BASIC_STRING_VIEW_I(T,U) typename std::decay< basic_string_view<T,U> >::type + +#if nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 140, 150 ) +# define nssv_MSVC_ORDER(x) , int=x +#else +# define nssv_MSVC_ORDER(x) /*, int=x*/ +#endif + +// == + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator==( + basic_string_view <CharT, Traits> lhs, + nssv_BASIC_STRING_VIEW_I(CharT, Traits) rhs ) nssv_noexcept +{ return lhs.compare( rhs ) == 0; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator==( + nssv_BASIC_STRING_VIEW_I(CharT, Traits) lhs, + basic_string_view <CharT, Traits> rhs ) nssv_noexcept +{ return lhs.size() == rhs.size() && lhs.compare( rhs ) == 0; } + +// != + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator!= ( + basic_string_view < CharT, Traits > lhs, + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept +{ return lhs.size() != rhs.size() || lhs.compare( rhs ) != 0 ; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator!= ( + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs, + basic_string_view < CharT, Traits > rhs ) nssv_noexcept +{ return lhs.compare( rhs ) != 0 ; } + +// < + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator< ( + basic_string_view < CharT, Traits > lhs, + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept +{ return lhs.compare( rhs ) < 0 ; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator< ( + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs, + basic_string_view < CharT, Traits > rhs ) nssv_noexcept +{ return lhs.compare( rhs ) < 0 ; } + +// <= + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator<= ( + basic_string_view < CharT, Traits > lhs, + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept +{ return lhs.compare( rhs ) <= 0 ; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator<= ( + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs, + basic_string_view < CharT, Traits > rhs ) nssv_noexcept +{ return lhs.compare( rhs ) <= 0 ; } + +// > + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator> ( + basic_string_view < CharT, Traits > lhs, + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept +{ return lhs.compare( rhs ) > 0 ; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator> ( + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs, + basic_string_view < CharT, Traits > rhs ) nssv_noexcept +{ return lhs.compare( rhs ) > 0 ; } + +// >= + +template< class CharT, class Traits nssv_MSVC_ORDER(1) > +nssv_constexpr bool operator>= ( + basic_string_view < CharT, Traits > lhs, + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept +{ return lhs.compare( rhs ) >= 0 ; } + +template< class CharT, class Traits nssv_MSVC_ORDER(2) > +nssv_constexpr bool operator>= ( + nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs, + basic_string_view < CharT, Traits > rhs ) nssv_noexcept +{ return lhs.compare( rhs ) >= 0 ; } + +#undef nssv_MSVC_ORDER +#undef nssv_BASIC_STRING_VIEW_I + +#endif // nssv_CPP11_OR_GREATER + +// 24.4.4 Inserters and extractors: + +namespace detail { + +template< class Stream > +void write_padding( Stream & os, std::streamsize n ) +{ + for ( std::streamsize i = 0; i < n; ++i ) + os.rdbuf()->sputc( os.fill() ); +} + +template< class Stream, class View > +Stream & write_to_stream( Stream & os, View const & sv ) +{ + typename Stream::sentry sentry( os ); + + if ( !os ) + return os; + + const std::streamsize length = static_cast<std::streamsize>( sv.length() ); + + // Whether, and how, to pad: + const bool pad = ( length < os.width() ); + const bool left_pad = pad && ( os.flags() & std::ios_base::adjustfield ) == std::ios_base::right; + + if ( left_pad ) + write_padding( os, os.width() - length ); + + // Write span characters: + os.rdbuf()->sputn( sv.begin(), length ); + + if ( pad && !left_pad ) + write_padding( os, os.width() - length ); + + // Reset output stream width: + os.width( 0 ); + + return os; +} + +} // namespace detail + +template< class CharT, class Traits > +std::basic_ostream<CharT, Traits> & +operator<<( + std::basic_ostream<CharT, Traits>& os, + basic_string_view <CharT, Traits> sv ) +{ + return detail::write_to_stream( os, sv ); +} + +// Several typedefs for common character types are provided: + +typedef basic_string_view<char> string_view; +typedef basic_string_view<wchar_t> wstring_view; +#if nssv_HAVE_WCHAR16_T +typedef basic_string_view<char16_t> u16string_view; +typedef basic_string_view<char32_t> u32string_view; +#endif + +}} // namespace nonstd::sv_lite + +// +// 24.4.6 Suffix for basic_string_view literals: +// + +#if nssv_HAVE_USER_DEFINED_LITERALS + +namespace nonstd { +nssv_inline_ns namespace literals { +nssv_inline_ns namespace string_view_literals { + +#if nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS + +nssv_constexpr nonstd::sv_lite::string_view operator "" sv( const char* str, size_t len ) nssv_noexcept // (1) +{ + return nonstd::sv_lite::string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::u16string_view operator "" sv( const char16_t* str, size_t len ) nssv_noexcept // (2) +{ + return nonstd::sv_lite::u16string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::u32string_view operator "" sv( const char32_t* str, size_t len ) nssv_noexcept // (3) +{ + return nonstd::sv_lite::u32string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::wstring_view operator "" sv( const wchar_t* str, size_t len ) nssv_noexcept // (4) +{ + return nonstd::sv_lite::wstring_view{ str, len }; +} + +#endif // nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS + +#if nssv_CONFIG_USR_SV_OPERATOR + +nssv_constexpr nonstd::sv_lite::string_view operator "" _sv( const char* str, size_t len ) nssv_noexcept // (1) +{ + return nonstd::sv_lite::string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::u16string_view operator "" _sv( const char16_t* str, size_t len ) nssv_noexcept // (2) +{ + return nonstd::sv_lite::u16string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::u32string_view operator "" _sv( const char32_t* str, size_t len ) nssv_noexcept // (3) +{ + return nonstd::sv_lite::u32string_view{ str, len }; +} + +nssv_constexpr nonstd::sv_lite::wstring_view operator "" _sv( const wchar_t* str, size_t len ) nssv_noexcept // (4) +{ + return nonstd::sv_lite::wstring_view{ str, len }; +} + +#endif // nssv_CONFIG_USR_SV_OPERATOR + +}}} // namespace nonstd::literals::string_view_literals + +#endif + +// +// Extensions for std::string: +// + +#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS + +namespace nonstd { +namespace sv_lite { + +// Exclude MSVC 14 (19.00): it yields ambiguous to_string(): + +#if nssv_CPP11_OR_GREATER && nssv_COMPILER_MSVC_VERSION != 140 + +template< class CharT, class Traits, class Allocator = std::allocator<CharT> > +std::basic_string<CharT, Traits, Allocator> +to_string( basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() ) +{ + return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a ); +} + +#else + +template< class CharT, class Traits > +std::basic_string<CharT, Traits> +to_string( basic_string_view<CharT, Traits> v ) +{ + return std::basic_string<CharT, Traits>( v.begin(), v.end() ); +} + +template< class CharT, class Traits, class Allocator > +std::basic_string<CharT, Traits, Allocator> +to_string( basic_string_view<CharT, Traits> v, Allocator const & a ) +{ + return std::basic_string<CharT, Traits, Allocator>( v.begin(), v.end(), a ); +} + +#endif // nssv_CPP11_OR_GREATER + +template< class CharT, class Traits, class Allocator > +basic_string_view<CharT, Traits> +to_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) +{ + return basic_string_view<CharT, Traits>( s.data(), s.size() ); +} + +}} // namespace nonstd::sv_lite + +#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS + +// +// make types and algorithms available in namespace nonstd: +// + +namespace nonstd { + +using sv_lite::basic_string_view; +using sv_lite::string_view; +using sv_lite::wstring_view; + +#if nssv_HAVE_WCHAR16_T +using sv_lite::u16string_view; +#endif +#if nssv_HAVE_WCHAR32_T +using sv_lite::u32string_view; +#endif + +// literal "sv" + +using sv_lite::operator==; +using sv_lite::operator!=; +using sv_lite::operator<; +using sv_lite::operator<=; +using sv_lite::operator>; +using sv_lite::operator>=; + +using sv_lite::operator<<; + +#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS +using sv_lite::to_string; +using sv_lite::to_string_view; +#endif + +} // namespace nonstd + +// 24.4.5 Hash support (C++11): + +// Note: The hash value of a string view object is equal to the hash value of +// the corresponding string object. + +#if nssv_HAVE_STD_HASH + +#include <functional> + +namespace std { + +template<> +struct hash< nonstd::string_view > +{ +public: + std::size_t operator()( nonstd::string_view v ) const nssv_noexcept + { + return std::hash<std::string>()( std::string( v.data(), v.size() ) ); + } +}; + +template<> +struct hash< nonstd::wstring_view > +{ +public: + std::size_t operator()( nonstd::wstring_view v ) const nssv_noexcept + { + return std::hash<std::wstring>()( std::wstring( v.data(), v.size() ) ); + } +}; + +template<> +struct hash< nonstd::u16string_view > +{ +public: + std::size_t operator()( nonstd::u16string_view v ) const nssv_noexcept + { + return std::hash<std::u16string>()( std::u16string( v.data(), v.size() ) ); + } +}; + +template<> +struct hash< nonstd::u32string_view > +{ +public: + std::size_t operator()( nonstd::u32string_view v ) const nssv_noexcept + { + return std::hash<std::u32string>()( std::u32string( v.data(), v.size() ) ); + } +}; + +} // namespace std + +#endif // nssv_HAVE_STD_HASH + +nssv_RESTORE_WARNINGS() + +#endif // nssv_HAVE_STD_STRING_VIEW +#endif // NONSTD_SV_LITE_H_INCLUDED + + + +namespace inja { + +enum class ElementNotation { + Dot, + Pointer +}; + +struct LexerConfig { + std::string statement_open {"{%"}; + std::string statement_close {"%}"}; + std::string line_statement {"##"}; + std::string expression_open {"{{"}; + std::string expression_close {"}}"}; + std::string comment_open {"{#"}; + std::string comment_close {"#}"}; + std::string open_chars {"#{"}; + + void update_open_chars() { + open_chars = ""; + if (open_chars.find(line_statement[0]) == std::string::npos) { + open_chars += line_statement[0]; + } + if (open_chars.find(statement_open[0]) == std::string::npos) { + open_chars += statement_open[0]; + } + if (open_chars.find(expression_open[0]) == std::string::npos) { + open_chars += expression_open[0]; + } + if (open_chars.find(comment_open[0]) == std::string::npos) { + open_chars += comment_open[0]; + } + } +}; + +struct ParserConfig { + ElementNotation notation {ElementNotation::Dot}; +}; + +} + +#endif // PANTOR_INJA_CONFIG_HPP + +// #include "function_storage.hpp" +#ifndef PANTOR_INJA_FUNCTION_STORAGE_HPP +#define PANTOR_INJA_FUNCTION_STORAGE_HPP + +// #include "bytecode.hpp" +#ifndef PANTOR_INJA_BYTECODE_HPP +#define PANTOR_INJA_BYTECODE_HPP + +#include <utility> + +#include <nlohmann/json.hpp> + +// #include "string_view.hpp" + + + +namespace inja { + +using namespace nlohmann; + + +struct Bytecode { + enum class Op : uint8_t { + Nop, + // print StringRef (always immediate) + PrintText, + // print value + PrintValue, + // push value onto stack (always immediate) + Push, + + // builtin functions + // result is pushed to stack + // args specify number of arguments + // all functions can take their "last" argument either immediate + // or popped off stack (e.g. if immediate, it's like the immediate was + // just pushed to the stack) + Not, + And, + Or, + In, + Equal, + Greater, + GreaterEqual, + Less, + LessEqual, + Different, + DivisibleBy, + Even, + First, + Float, + Int, + Last, + Length, + Lower, + Max, + Min, + Odd, + Range, + Result, + Round, + Sort, + Upper, + Exists, + ExistsInObject, + IsBoolean, + IsNumber, + IsInteger, + IsFloat, + IsObject, + IsArray, + IsString, + Default, + + // include another template + // value is the template name + Include, + + // callback function + // str is the function name (this means it cannot be a lookup) + // args specify number of arguments + // as with builtin functions, "last" argument can be immediate + Callback, + + // unconditional jump + // args is the index of the bytecode to jump to. + Jump, + + // conditional jump + // value popped off stack is checked for truthyness + // if false, args is the index of the bytecode to jump to. + // if true, no action is taken (falls through) + ConditionalJump, + + // start loop + // value popped off stack is what is iterated over + // args is index of bytecode after end loop (jumped to if iterable is + // empty) + // immediate value is key name (for maps) + // str is value name + StartLoop, + + // end a loop + // args is index of the first bytecode in the loop body + EndLoop, + }; + + enum Flag { + // location of value for value-taking ops (mask) + ValueMask = 0x03, + // pop value off stack + ValuePop = 0x00, + // value is immediate rather than on stack + ValueImmediate = 0x01, + // lookup immediate str (dot notation) + ValueLookupDot = 0x02, + // lookup immediate str (json pointer notation) + ValueLookupPointer = 0x03, + }; + + Op op {Op::Nop}; + uint32_t args: 30; + uint32_t flags: 2; + + json value; + std::string str; + + Bytecode(): args(0), flags(0) {} + explicit Bytecode(Op op, unsigned int args = 0): op(op), args(args), flags(0) {} + explicit Bytecode(Op op, nonstd::string_view str, unsigned int flags): op(op), args(0), flags(flags), str(str) {} + explicit Bytecode(Op op, json&& value, unsigned int flags): op(op), args(0), flags(flags), value(std::move(value)) {} +}; + +} // namespace inja + +#endif // PANTOR_INJA_BYTECODE_HPP + +// #include "string_view.hpp" + + + +namespace inja { + +using namespace nlohmann; + +using Arguments = std::vector<const json*>; +using CallbackFunction = std::function<json(Arguments& args)>; + +class FunctionStorage { + public: + void add_builtin(nonstd::string_view name, unsigned int num_args, Bytecode::Op op) { + auto& data = get_or_new(name, num_args); + data.op = op; + } + + void add_callback(nonstd::string_view name, unsigned int num_args, const CallbackFunction& function) { + auto& data = get_or_new(name, num_args); + data.function = function; + } + + Bytecode::Op find_builtin(nonstd::string_view name, unsigned int num_args) const { + if (auto ptr = get(name, num_args)) { + return ptr->op; + } + return Bytecode::Op::Nop; + } + + CallbackFunction find_callback(nonstd::string_view name, unsigned int num_args) const { + if (auto ptr = get(name, num_args)) { + return ptr->function; + } + return nullptr; + } + + private: + struct FunctionData { + unsigned int num_args {0}; + Bytecode::Op op {Bytecode::Op::Nop}; // for builtins + CallbackFunction function; // for callbacks + }; + + FunctionData& get_or_new(nonstd::string_view name, unsigned int num_args) { + auto &vec = m_map[static_cast<std::string>(name)]; + for (auto &i: vec) { + if (i.num_args == num_args) return i; + } + vec.emplace_back(); + vec.back().num_args = num_args; + return vec.back(); + } + + const FunctionData* get(nonstd::string_view name, unsigned int num_args) const { + auto it = m_map.find(static_cast<std::string>(name)); + if (it == m_map.end()) return nullptr; + for (auto &&i: it->second) { + if (i.num_args == num_args) return &i; + } + return nullptr; + } + + std::map<std::string, std::vector<FunctionData>> m_map; +}; + +} + +#endif // PANTOR_INJA_FUNCTION_STORAGE_HPP + +// #include "parser.hpp" +#ifndef PANTOR_INJA_PARSER_HPP +#define PANTOR_INJA_PARSER_HPP + +#include <limits> + +// #include "bytecode.hpp" + +// #include "config.hpp" + +// #include "function_storage.hpp" + +// #include "lexer.hpp" +#ifndef PANTOR_INJA_LEXER_HPP +#define PANTOR_INJA_LEXER_HPP + +#include <cctype> +#include <locale> + +// #include "config.hpp" + +// #include "token.hpp" +#ifndef PANTOR_INJA_TOKEN_HPP +#define PANTOR_INJA_TOKEN_HPP + +// #include "string_view.hpp" + + + +namespace inja { + +struct Token { + enum class Kind { + Text, + ExpressionOpen, // {{ + ExpressionClose, // }} + LineStatementOpen, // ## + LineStatementClose, // \n + StatementOpen, // {% + StatementClose, // %} + CommentOpen, // {# + CommentClose, // #} + Id, // this, this.foo + Number, // 1, 2, -1, 5.2, -5.3 + String, // "this" + Comma, // , + Colon, // : + LeftParen, // ( + RightParen, // ) + LeftBracket, // [ + RightBracket, // ] + LeftBrace, // { + RightBrace, // } + Equal, // == + GreaterThan, // > + GreaterEqual, // >= + LessThan, // < + LessEqual, // <= + NotEqual, // != + Unknown, + Eof + } kind {Kind::Unknown}; + + nonstd::string_view text; + + constexpr Token() = default; + constexpr Token(Kind kind, nonstd::string_view text): kind(kind), text(text) {} + + std::string describe() const { + switch (kind) { + case Kind::Text: + return "<text>"; + case Kind::LineStatementClose: + return "<eol>"; + case Kind::Eof: + return "<eof>"; + default: + return static_cast<std::string>(text); + } + } +}; + +} + +#endif // PANTOR_INJA_TOKEN_HPP + +// #include "utils.hpp" +#ifndef PANTOR_INJA_UTILS_HPP +#define PANTOR_INJA_UTILS_HPP + +#include <stdexcept> + +// #include "string_view.hpp" + + + +namespace inja { + +inline void inja_throw(const std::string& type, const std::string& message) { + throw std::runtime_error("[inja.exception." + type + "] " + message); +} + +namespace string_view { + inline nonstd::string_view slice(nonstd::string_view view, size_t start, size_t end) { + start = std::min(start, view.size()); + end = std::min(std::max(start, end), view.size()); + return view.substr(start, end - start); // StringRef(Data + Start, End - Start); + } + + inline std::pair<nonstd::string_view, nonstd::string_view> split(nonstd::string_view view, char Separator) { + size_t idx = view.find(Separator); + if (idx == nonstd::string_view::npos) { + return std::make_pair(view, nonstd::string_view()); + } + return std::make_pair(slice(view, 0, idx), slice(view, idx + 1, nonstd::string_view::npos)); + } + + inline bool starts_with(nonstd::string_view view, nonstd::string_view prefix) { + return (view.size() >= prefix.size() && view.compare(0, prefix.size(), prefix) == 0); + } +} // namespace string + +} // namespace inja + +#endif // PANTOR_INJA_UTILS_HPP + + + +namespace inja { + +class Lexer { + enum class State { + Text, + ExpressionStart, + ExpressionBody, + LineStart, + LineBody, + StatementStart, + StatementBody, + CommentStart, + CommentBody + } m_state; + + const LexerConfig& m_config; + nonstd::string_view m_in; + size_t m_tok_start; + size_t m_pos; + + public: + explicit Lexer(const LexerConfig& config) : m_config(config) {} + + void start(nonstd::string_view in) { + m_in = in; + m_tok_start = 0; + m_pos = 0; + m_state = State::Text; + } + + Token scan() { + m_tok_start = m_pos; + + again: + if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof); + + switch (m_state) { + default: + case State::Text: { + // fast-scan to first open character + size_t open_start = m_in.substr(m_pos).find_first_of(m_config.open_chars); + if (open_start == nonstd::string_view::npos) { + // didn't find open, return remaining text as text token + m_pos = m_in.size(); + return make_token(Token::Kind::Text); + } + m_pos += open_start; + + // try to match one of the opening sequences, and get the close + nonstd::string_view open_str = m_in.substr(m_pos); + if (inja::string_view::starts_with(open_str, m_config.expression_open)) { + m_state = State::ExpressionStart; + } else if (inja::string_view::starts_with(open_str, m_config.statement_open)) { + m_state = State::StatementStart; + } else if (inja::string_view::starts_with(open_str, m_config.comment_open)) { + m_state = State::CommentStart; + } else if ((m_pos == 0 || m_in[m_pos - 1] == '\n') && + inja::string_view::starts_with(open_str, m_config.line_statement)) { + m_state = State::LineStart; + } else { + m_pos += 1; // wasn't actually an opening sequence + goto again; + } + if (m_pos == m_tok_start) goto again; // don't generate empty token + return make_token(Token::Kind::Text); + } + case State::ExpressionStart: { + m_state = State::ExpressionBody; + m_pos += m_config.expression_open.size(); + return make_token(Token::Kind::ExpressionOpen); + } + case State::LineStart: { + m_state = State::LineBody; + m_pos += m_config.line_statement.size(); + return make_token(Token::Kind::LineStatementOpen); + } + case State::StatementStart: { + m_state = State::StatementBody; + m_pos += m_config.statement_open.size(); + return make_token(Token::Kind::StatementOpen); + } + case State::CommentStart: { + m_state = State::CommentBody; + m_pos += m_config.comment_open.size(); + return make_token(Token::Kind::CommentOpen); + } + case State::ExpressionBody: + return scan_body(m_config.expression_close, Token::Kind::ExpressionClose); + case State::LineBody: + return scan_body("\n", Token::Kind::LineStatementClose); + case State::StatementBody: + return scan_body(m_config.statement_close, Token::Kind::StatementClose); + case State::CommentBody: { + // fast-scan to comment close + size_t end = m_in.substr(m_pos).find(m_config.comment_close); + if (end == nonstd::string_view::npos) { + m_pos = m_in.size(); + return make_token(Token::Kind::Eof); + } + // return the entire comment in the close token + m_state = State::Text; + m_pos += end + m_config.comment_close.size(); + return make_token(Token::Kind::CommentClose); + } + } + } + + const LexerConfig& get_config() const { return m_config; } + + private: + Token scan_body(nonstd::string_view close, Token::Kind closeKind) { + again: + // skip whitespace (except for \n as it might be a close) + if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof); + char ch = m_in[m_tok_start]; + if (ch == ' ' || ch == '\t' || ch == '\r') { + m_tok_start += 1; + goto again; + } + + // check for close + if (inja::string_view::starts_with(m_in.substr(m_tok_start), close)) { + m_state = State::Text; + m_pos = m_tok_start + close.size(); + return make_token(closeKind); + } + + // skip \n + if (ch == '\n') { + m_tok_start += 1; + goto again; + } + + m_pos = m_tok_start + 1; + if (std::isalpha(ch)) return scan_id(); + switch (ch) { + case ',': + return make_token(Token::Kind::Comma); + case ':': + return make_token(Token::Kind::Colon); + case '(': + return make_token(Token::Kind::LeftParen); + case ')': + return make_token(Token::Kind::RightParen); + case '[': + return make_token(Token::Kind::LeftBracket); + case ']': + return make_token(Token::Kind::RightBracket); + case '{': + return make_token(Token::Kind::LeftBrace); + case '}': + return make_token(Token::Kind::RightBrace); + case '>': + if (m_pos < m_in.size() && m_in[m_pos] == '=') { + m_pos += 1; + return make_token(Token::Kind::GreaterEqual); + } + return make_token(Token::Kind::GreaterThan); + case '<': + if (m_pos < m_in.size() && m_in[m_pos] == '=') { + m_pos += 1; + return make_token(Token::Kind::LessEqual); + } + return make_token(Token::Kind::LessThan); + case '=': + if (m_pos < m_in.size() && m_in[m_pos] == '=') { + m_pos += 1; + return make_token(Token::Kind::Equal); + } + return make_token(Token::Kind::Unknown); + case '!': + if (m_pos < m_in.size() && m_in[m_pos] == '=') { + m_pos += 1; + return make_token(Token::Kind::NotEqual); + } + return make_token(Token::Kind::Unknown); + case '\"': + return scan_string(); + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '-': + return scan_number(); + case '_': + return scan_id(); + default: + return make_token(Token::Kind::Unknown); + } + } + + Token scan_id() { + for (;;) { + if (m_pos >= m_in.size()) { + break; + } + char ch = m_in[m_pos]; + if (!std::isalnum(ch) && ch != '.' && ch != '/' && ch != '_' && ch != '-') { + break; + } + m_pos += 1; + } + return make_token(Token::Kind::Id); + } + + Token scan_number() { + for (;;) { + if (m_pos >= m_in.size()) { + break; + } + char ch = m_in[m_pos]; + // be very permissive in lexer (we'll catch errors when conversion happens) + if (!std::isdigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && ch != '+' && ch != '-') { + break; + } + m_pos += 1; + } + return make_token(Token::Kind::Number); + } + + Token scan_string() { + bool escape {false}; + for (;;) { + if (m_pos >= m_in.size()) break; + char ch = m_in[m_pos++]; + if (ch == '\\') { + escape = true; + } else if (!escape && ch == m_in[m_tok_start]) { + break; + } else { + escape = false; + } + } + return make_token(Token::Kind::String); + } + + Token make_token(Token::Kind kind) const { + return Token(kind, string_view::slice(m_in, m_tok_start, m_pos)); + } +}; + +} + +#endif // PANTOR_INJA_LEXER_HPP + +// #include "template.hpp" +#ifndef PANTOR_INJA_TEMPLATE_HPP +#define PANTOR_INJA_TEMPLATE_HPP + +#include <string> +#include <vector> + +// #include "bytecode.hpp" + + + +namespace inja { + +struct Template { + std::vector<Bytecode> bytecodes; + std::string content; +}; + +using TemplateStorage = std::map<std::string, Template>; + +} + +#endif // PANTOR_INJA_TEMPLATE_HPP + +// #include "token.hpp" + +// #include "utils.hpp" + + +#include <nlohmann/json.hpp> + + +namespace inja { + +class ParserStatic { + ParserStatic() { + functions.add_builtin("default", 2, Bytecode::Op::Default); + functions.add_builtin("divisibleBy", 2, Bytecode::Op::DivisibleBy); + functions.add_builtin("even", 1, Bytecode::Op::Even); + functions.add_builtin("first", 1, Bytecode::Op::First); + functions.add_builtin("float", 1, Bytecode::Op::Float); + functions.add_builtin("int", 1, Bytecode::Op::Int); + functions.add_builtin("last", 1, Bytecode::Op::Last); + functions.add_builtin("length", 1, Bytecode::Op::Length); + functions.add_builtin("lower", 1, Bytecode::Op::Lower); + functions.add_builtin("max", 1, Bytecode::Op::Max); + functions.add_builtin("min", 1, Bytecode::Op::Min); + functions.add_builtin("odd", 1, Bytecode::Op::Odd); + functions.add_builtin("range", 1, Bytecode::Op::Range); + functions.add_builtin("round", 2, Bytecode::Op::Round); + functions.add_builtin("sort", 1, Bytecode::Op::Sort); + functions.add_builtin("upper", 1, Bytecode::Op::Upper); + functions.add_builtin("exists", 1, Bytecode::Op::Exists); + functions.add_builtin("existsIn", 2, Bytecode::Op::ExistsInObject); + functions.add_builtin("isBoolean", 1, Bytecode::Op::IsBoolean); + functions.add_builtin("isNumber", 1, Bytecode::Op::IsNumber); + functions.add_builtin("isInteger", 1, Bytecode::Op::IsInteger); + functions.add_builtin("isFloat", 1, Bytecode::Op::IsFloat); + functions.add_builtin("isObject", 1, Bytecode::Op::IsObject); + functions.add_builtin("isArray", 1, Bytecode::Op::IsArray); + functions.add_builtin("isString", 1, Bytecode::Op::IsString); + } + + public: + ParserStatic(const ParserStatic&) = delete; + ParserStatic& operator=(const ParserStatic&) = delete; + + static const ParserStatic& get_instance() { + static ParserStatic inst; + return inst; + } + + FunctionStorage functions; +}; + +class Parser { + public: + explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& included_templates): m_config(parser_config), m_lexer(lexer_config), m_included_templates(included_templates), m_static(ParserStatic::get_instance()) { } + + bool parse_expression(Template& tmpl) { + if (!parse_expression_and(tmpl)) return false; + if (m_tok.kind != Token::Kind::Id || m_tok.text != "or") return true; + get_next_token(); + if (!parse_expression_and(tmpl)) return false; + append_function(tmpl, Bytecode::Op::Or, 2); + return true; + } + + bool parse_expression_and(Template& tmpl) { + if (!parse_expression_not(tmpl)) return false; + if (m_tok.kind != Token::Kind::Id || m_tok.text != "and") return true; + get_next_token(); + if (!parse_expression_not(tmpl)) return false; + append_function(tmpl, Bytecode::Op::And, 2); + return true; + } + + bool parse_expression_not(Template& tmpl) { + if (m_tok.kind == Token::Kind::Id && m_tok.text == "not") { + get_next_token(); + if (!parse_expression_not(tmpl)) return false; + append_function(tmpl, Bytecode::Op::Not, 1); + return true; + } else { + return parse_expression_comparison(tmpl); + } + } + + bool parse_expression_comparison(Template& tmpl) { + if (!parse_expression_datum(tmpl)) return false; + Bytecode::Op op; + switch (m_tok.kind) { + case Token::Kind::Id: + if (m_tok.text == "in") + op = Bytecode::Op::In; + else + return true; + break; + case Token::Kind::Equal: + op = Bytecode::Op::Equal; + break; + case Token::Kind::GreaterThan: + op = Bytecode::Op::Greater; + break; + case Token::Kind::LessThan: + op = Bytecode::Op::Less; + break; + case Token::Kind::LessEqual: + op = Bytecode::Op::LessEqual; + break; + case Token::Kind::GreaterEqual: + op = Bytecode::Op::GreaterEqual; + break; + case Token::Kind::NotEqual: + op = Bytecode::Op::Different; + break; + default: + return true; + } + get_next_token(); + if (!parse_expression_datum(tmpl)) return false; + append_function(tmpl, op, 2); + return true; + } + + bool parse_expression_datum(Template& tmpl) { + nonstd::string_view json_first; + size_t bracket_level = 0; + size_t brace_level = 0; + + for (;;) { + switch (m_tok.kind) { + case Token::Kind::LeftParen: { + get_next_token(); + if (!parse_expression(tmpl)) return false; + if (m_tok.kind != Token::Kind::RightParen) { + inja_throw("parser_error", "unmatched '('"); + } + get_next_token(); + return true; + } + case Token::Kind::Id: + get_peek_token(); + if (m_peek_tok.kind == Token::Kind::LeftParen) { + // function call, parse arguments + Token func_token = m_tok; + get_next_token(); // id + get_next_token(); // leftParen + unsigned int num_args = 0; + if (m_tok.kind == Token::Kind::RightParen) { + // no args + get_next_token(); + } else { + for (;;) { + if (!parse_expression(tmpl)) { + inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'"); + } + num_args += 1; + if (m_tok.kind == Token::Kind::RightParen) { + get_next_token(); + break; + } + if (m_tok.kind != Token::Kind::Comma) { + inja_throw("parser_error", "expected ')' or ',', got '" + m_tok.describe() + "'"); + } + get_next_token(); + } + } + + auto op = m_static.functions.find_builtin(func_token.text, num_args); + + if (op != Bytecode::Op::Nop) { + // swap arguments for default(); see comment in RenderTo() + if (op == Bytecode::Op::Default) + std::swap(tmpl.bytecodes.back(), *(tmpl.bytecodes.rbegin() + 1)); + append_function(tmpl, op, num_args); + return true; + } else { + append_callback(tmpl, func_token.text, num_args); + return true; + } + } else if (m_tok.text == "true" || m_tok.text == "false" || m_tok.text == "null") { + // true, false, null are json literals + if (brace_level == 0 && bracket_level == 0) { + json_first = m_tok.text; + goto returnJson; + } + break; + } else { + // normal literal (json read) + tmpl.bytecodes.emplace_back( + Bytecode::Op::Push, m_tok.text, + m_config.notation == ElementNotation::Pointer ? Bytecode::Flag::ValueLookupPointer : Bytecode::Flag::ValueLookupDot); + get_next_token(); + return true; + } + // json passthrough + case Token::Kind::Number: + case Token::Kind::String: + if (brace_level == 0 && bracket_level == 0) { + json_first = m_tok.text; + goto returnJson; + } + break; + case Token::Kind::Comma: + case Token::Kind::Colon: + if (brace_level == 0 && bracket_level == 0) { + inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'"); + } + break; + case Token::Kind::LeftBracket: + if (brace_level == 0 && bracket_level == 0) { + json_first = m_tok.text; + } + bracket_level += 1; + break; + case Token::Kind::LeftBrace: + if (brace_level == 0 && bracket_level == 0) { + json_first = m_tok.text; + } + brace_level += 1; + break; + case Token::Kind::RightBracket: + if (bracket_level == 0) { + inja_throw("parser_error", "unexpected ']'"); + } + --bracket_level; + if (brace_level == 0 && bracket_level == 0) goto returnJson; + break; + case Token::Kind::RightBrace: + if (brace_level == 0) { + inja_throw("parser_error", "unexpected '}'"); + } + --brace_level; + if (brace_level == 0 && bracket_level == 0) goto returnJson; + break; + default: + if (brace_level != 0) { + inja_throw("parser_error", "unmatched '{'"); + } + if (bracket_level != 0) { + inja_throw("parser_error", "unmatched '['"); + } + return false; + } + + get_next_token(); + } + + returnJson: + // bridge across all intermediate tokens + nonstd::string_view json_text(json_first.data(), m_tok.text.data() - json_first.data() + m_tok.text.size()); + tmpl.bytecodes.emplace_back(Bytecode::Op::Push, json::parse(json_text), Bytecode::Flag::ValueImmediate); + get_next_token(); + return true; + } + + bool parse_statement(Template& tmpl, nonstd::string_view path) { + if (m_tok.kind != Token::Kind::Id) return false; + + if (m_tok.text == "if") { + get_next_token(); + + // evaluate expression + if (!parse_expression(tmpl)) return false; + + // start a new if block on if stack + m_if_stack.emplace_back(tmpl.bytecodes.size()); + + // conditional jump; destination will be filled in by else or endif + tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump); + } else if (m_tok.text == "endif") { + if (m_if_stack.empty()) { + inja_throw("parser_error", "endif without matching if"); + } + auto& if_data = m_if_stack.back(); + get_next_token(); + + // previous conditional jump jumps here + if (if_data.prev_cond_jump != std::numeric_limits<unsigned int>::max()) { + tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size(); + } + + // update all previous unconditional jumps to here + for (unsigned int i: if_data.uncond_jumps) { + tmpl.bytecodes[i].args = tmpl.bytecodes.size(); + } + + // pop if stack + m_if_stack.pop_back(); + } else if (m_tok.text == "else") { + if (m_if_stack.empty()) + inja_throw("parser_error", "else without matching if"); + auto& if_data = m_if_stack.back(); + get_next_token(); + + // end previous block with unconditional jump to endif; destination will be + // filled in by endif + if_data.uncond_jumps.push_back(tmpl.bytecodes.size()); + tmpl.bytecodes.emplace_back(Bytecode::Op::Jump); + + // previous conditional jump jumps here + tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size(); + if_data.prev_cond_jump = std::numeric_limits<unsigned int>::max(); + + // chained else if + if (m_tok.kind == Token::Kind::Id && m_tok.text == "if") { + get_next_token(); + + // evaluate expression + if (!parse_expression(tmpl)) return false; + + // update "previous jump" + if_data.prev_cond_jump = tmpl.bytecodes.size(); + + // conditional jump; destination will be filled in by else or endif + tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump); + } + } else if (m_tok.text == "for") { + get_next_token(); + + // options: for a in arr; for a, b in obj + if (m_tok.kind != Token::Kind::Id) + inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'"); + Token value_token = m_tok; + get_next_token(); + + Token key_token; + if (m_tok.kind == Token::Kind::Comma) { + get_next_token(); + if (m_tok.kind != Token::Kind::Id) + inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'"); + key_token = std::move(value_token); + value_token = m_tok; + get_next_token(); + } + + if (m_tok.kind != Token::Kind::Id || m_tok.text != "in") + inja_throw("parser_error", + "expected 'in', got '" + m_tok.describe() + "'"); + get_next_token(); + + if (!parse_expression(tmpl)) return false; + + m_loop_stack.push_back(tmpl.bytecodes.size()); + + tmpl.bytecodes.emplace_back(Bytecode::Op::StartLoop); + if (!key_token.text.empty()) { + tmpl.bytecodes.back().value = key_token.text; + } + tmpl.bytecodes.back().str = static_cast<std::string>(value_token.text); + } else if (m_tok.text == "endfor") { + get_next_token(); + if (m_loop_stack.empty()) { + inja_throw("parser_error", "endfor without matching for"); + } + + // update loop with EndLoop index (for empty case) + tmpl.bytecodes[m_loop_stack.back()].args = tmpl.bytecodes.size(); + + tmpl.bytecodes.emplace_back(Bytecode::Op::EndLoop); + tmpl.bytecodes.back().args = m_loop_stack.back() + 1; // loop body + m_loop_stack.pop_back(); + } else if (m_tok.text == "include") { + get_next_token(); + + if (m_tok.kind != Token::Kind::String) { + inja_throw("parser_error", "expected string, got '" + m_tok.describe() + "'"); + } + + // build the relative path + json json_name = json::parse(m_tok.text); + std::string pathname = static_cast<std::string>(path); + pathname += json_name.get_ref<const std::string&>(); + if (pathname.compare(0, 2, "./") == 0) { + pathname.erase(0, 2); + } + // sys::path::remove_dots(pathname, true, sys::path::Style::posix); + + Template include_template = parse_template(pathname); + m_included_templates.emplace(pathname, include_template); + + // generate a reference bytecode + tmpl.bytecodes.emplace_back(Bytecode::Op::Include, json(pathname), Bytecode::Flag::ValueImmediate); + + get_next_token(); + } else { + return false; + } + return true; + } + + void append_function(Template& tmpl, Bytecode::Op op, unsigned int num_args) { + // we can merge with back-to-back push + if (!tmpl.bytecodes.empty()) { + Bytecode& last = tmpl.bytecodes.back(); + if (last.op == Bytecode::Op::Push) { + last.op = op; + last.args = num_args; + return; + } + } + + // otherwise just add it to the end + tmpl.bytecodes.emplace_back(op, num_args); + } + + void append_callback(Template& tmpl, nonstd::string_view name, unsigned int num_args) { + // we can merge with back-to-back push value (not lookup) + if (!tmpl.bytecodes.empty()) { + Bytecode& last = tmpl.bytecodes.back(); + if (last.op == Bytecode::Op::Push && + (last.flags & Bytecode::Flag::ValueMask) == Bytecode::Flag::ValueImmediate) { + last.op = Bytecode::Op::Callback; + last.args = num_args; + last.str = static_cast<std::string>(name); + return; + } + } + + // otherwise just add it to the end + tmpl.bytecodes.emplace_back(Bytecode::Op::Callback, num_args); + tmpl.bytecodes.back().str = static_cast<std::string>(name); + } + + void parse_into(Template& tmpl, nonstd::string_view path) { + m_lexer.start(tmpl.content); + + for (;;) { + get_next_token(); + switch (m_tok.kind) { + case Token::Kind::Eof: + if (!m_if_stack.empty()) inja_throw("parser_error", "unmatched if"); + if (!m_loop_stack.empty()) inja_throw("parser_error", "unmatched for"); + return; + case Token::Kind::Text: + tmpl.bytecodes.emplace_back(Bytecode::Op::PrintText, m_tok.text, 0u); + break; + case Token::Kind::StatementOpen: + get_next_token(); + if (!parse_statement(tmpl, path)) { + inja_throw("parser_error", "expected statement, got '" + m_tok.describe() + "'"); + } + if (m_tok.kind != Token::Kind::StatementClose) { + inja_throw("parser_error", "expected statement close, got '" + m_tok.describe() + "'"); + } + break; + case Token::Kind::LineStatementOpen: + get_next_token(); + parse_statement(tmpl, path); + if (m_tok.kind != Token::Kind::LineStatementClose && + m_tok.kind != Token::Kind::Eof) { + inja_throw("parser_error", "expected line statement close, got '" + m_tok.describe() + "'"); + } + break; + case Token::Kind::ExpressionOpen: + get_next_token(); + if (!parse_expression(tmpl)) { + inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'"); + } + append_function(tmpl, Bytecode::Op::PrintValue, 1); + if (m_tok.kind != Token::Kind::ExpressionClose) { + inja_throw("parser_error", "expected expression close, got '" + m_tok.describe() + "'"); + } + break; + case Token::Kind::CommentOpen: + get_next_token(); + if (m_tok.kind != Token::Kind::CommentClose) { + inja_throw("parser_error", "expected comment close, got '" + m_tok.describe() + "'"); + } + break; + default: + inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'"); + break; + } + } + } + + Template parse(nonstd::string_view input, nonstd::string_view path) { + Template result; + result.content = static_cast<std::string>(input); + parse_into(result, path); + return result; + } + + Template parse(nonstd::string_view input) { + return parse(input, "./"); + } + + Template parse_template(nonstd::string_view filename) { + Template result; + result.content = load_file(filename); + + nonstd::string_view path = filename.substr(0, filename.find_last_of("/\\") + 1); + // StringRef path = sys::path::parent_path(filename); + Parser(m_config, m_lexer.get_config(), m_included_templates).parse_into(result, path); + return result; + } + + std::string load_file(nonstd::string_view filename) { + std::ifstream file(static_cast<std::string>(filename)); + std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); + return text; + } + + private: + const ParserConfig& m_config; + Lexer m_lexer; + Token m_tok; + Token m_peek_tok; + bool m_have_peek_tok {false}; + TemplateStorage& m_included_templates; + const ParserStatic& m_static; + + struct IfData { + unsigned int prev_cond_jump; + std::vector<unsigned int> uncond_jumps; + + explicit IfData(unsigned int condJump): prev_cond_jump(condJump) {} + }; + + std::vector<IfData> m_if_stack; + std::vector<unsigned int> m_loop_stack; + + void get_next_token() { + if (m_have_peek_tok) { + m_tok = m_peek_tok; + m_have_peek_tok = false; + } else { + m_tok = m_lexer.scan(); + } + } + + void get_peek_token() { + if (!m_have_peek_tok) { + m_peek_tok = m_lexer.scan(); + m_have_peek_tok = true; + } + } +}; + +} // namespace inja + +#endif // PANTOR_INJA_PARSER_HPP + +// #include "polyfill.hpp" +#ifndef PANTOR_INJA_POLYFILL_HPP +#define PANTOR_INJA_POLYFILL_HPP + + +#if __cplusplus < 201402L + +#include <cstddef> +#include <type_traits> +#include <utility> + + +namespace stdinja { + template<class T> struct _Unique_if { + typedef std::unique_ptr<T> _Single_object; + }; + + template<class T> struct _Unique_if<T[]> { + typedef std::unique_ptr<T[]> _Unknown_bound; + }; + + template<class T, size_t N> struct _Unique_if<T[N]> { + typedef void _Known_bound; + }; + + template<class T, class... Args> + typename _Unique_if<T>::_Single_object + make_unique(Args&&... args) { + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); + } + + template<class T> + typename _Unique_if<T>::_Unknown_bound + make_unique(size_t n) { + typedef typename std::remove_extent<T>::type U; + return std::unique_ptr<T>(new U[n]()); + } + + template<class T, class... Args> + typename _Unique_if<T>::_Known_bound + make_unique(Args&&...) = delete; +} + +#else + +namespace stdinja = std; + +#endif // memory */ + + +#endif // PANTOR_INJA_POLYFILL_HPP + +// #include "renderer.hpp" +#ifndef PANTOR_INJA_RENDERER_HPP +#define PANTOR_INJA_RENDERER_HPP + +#include <algorithm> +#include <numeric> + +#include <nlohmann/json.hpp> + +// #include "bytecode.hpp" + +// #include "template.hpp" + +// #include "utils.hpp" + + + +namespace inja { + +inline nonstd::string_view convert_dot_to_json_pointer(nonstd::string_view dot, std::string& out) { + out.clear(); + do { + nonstd::string_view part; + std::tie(part, dot) = string_view::split(dot, '.'); + out.push_back('/'); + out.append(part.begin(), part.end()); + } while (!dot.empty()); + return nonstd::string_view(out.data(), out.size()); +} + +class Renderer { + std::vector<const json*>& get_args(const Bytecode& bc) { + m_tmp_args.clear(); + + bool has_imm = ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop); + + // get args from stack + unsigned int pop_args = bc.args; + if (has_imm) { + pop_args -= 1; + } + + for (auto i = std::prev(m_stack.end(), pop_args); i != m_stack.end(); i++) { + m_tmp_args.push_back(&(*i)); + } + + // get immediate arg + if (has_imm) { + m_tmp_args.push_back(get_imm(bc)); + } + + return m_tmp_args; + } + + void pop_args(const Bytecode& bc) { + unsigned int popArgs = bc.args; + if ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop) { + popArgs -= 1; + } + for (unsigned int i = 0; i < popArgs; ++i) { + m_stack.pop_back(); + } + } + + const json* get_imm(const Bytecode& bc) { + std::string ptr_buffer; + nonstd::string_view ptr; + switch (bc.flags & Bytecode::Flag::ValueMask) { + case Bytecode::Flag::ValuePop: + return nullptr; + case Bytecode::Flag::ValueImmediate: + return &bc.value; + case Bytecode::Flag::ValueLookupDot: + ptr = convert_dot_to_json_pointer(bc.str, ptr_buffer); + break; + case Bytecode::Flag::ValueLookupPointer: + ptr_buffer += '/'; + ptr_buffer += bc.str; + ptr = ptr_buffer; + break; + } + try { + return &m_data->at(json::json_pointer(ptr.data())); + } catch (std::exception&) { + // try to evaluate as a no-argument callback + if (auto callback = m_callbacks.find_callback(bc.str, 0)) { + std::vector<const json*> arguments {}; + m_tmp_val = callback(arguments); + return &m_tmp_val; + } + inja_throw("render_error", "variable '" + static_cast<std::string>(bc.str) + "' not found"); + return nullptr; + } + } + + bool truthy(const json& var) const { + if (var.empty()) { + return false; + } else if (var.is_number()) { + return (var != 0); + } else if (var.is_string()) { + return !var.empty(); + } + + try { + return var.get<bool>(); + } catch (json::type_error& e) { + inja_throw("json_error", e.what()); + throw; + } + } + + void update_loop_data() { + LoopLevel& level = m_loop_stack.back(); + + if (level.loop_type == LoopLevel::Type::Array) { + level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it; + auto& loopData = level.data["loop"]; + loopData["index"] = level.index; + loopData["index1"] = level.index + 1; + loopData["is_first"] = (level.index == 0); + loopData["is_last"] = (level.index == level.size - 1); + } else { + level.data[static_cast<std::string>(level.key_name)] = level.map_it->first; + level.data[static_cast<std::string>(level.value_name)] = *level.map_it->second; + } + } + + const TemplateStorage& m_included_templates; + const FunctionStorage& m_callbacks; + + std::vector<json> m_stack; + + + struct LoopLevel { + enum class Type { Map, Array }; + + Type loop_type; + nonstd::string_view key_name; // variable name for keys + nonstd::string_view value_name; // variable name for values + json data; // data with loop info added + + json values; // values to iterate over + + // loop over list + size_t index; // current list index + size_t size; // length of list + + // loop over map + using KeyValue = std::pair<nonstd::string_view, json*>; + using MapValues = std::vector<KeyValue>; + MapValues map_values; // values to iterate over + MapValues::iterator map_it; // iterator over values + + }; + + std::vector<LoopLevel> m_loop_stack; + const json* m_data; + + std::vector<const json*> m_tmp_args; + json m_tmp_val; + + + public: + Renderer(const TemplateStorage& included_templates, const FunctionStorage& callbacks): m_included_templates(included_templates), m_callbacks(callbacks) { + m_stack.reserve(16); + m_tmp_args.reserve(4); + m_loop_stack.reserve(16); + } + + void render_to(std::ostream& os, const Template& tmpl, const json& data) { + m_data = &data; + + for (size_t i = 0; i < tmpl.bytecodes.size(); ++i) { + const auto& bc = tmpl.bytecodes[i]; + + switch (bc.op) { + case Bytecode::Op::Nop: { + break; + } + case Bytecode::Op::PrintText: { + os << bc.str; + break; + } + case Bytecode::Op::PrintValue: { + const json& val = *get_args(bc)[0]; + if (val.is_string()) + os << val.get_ref<const std::string&>(); + else + os << val.dump(); + // val.dump(os); + pop_args(bc); + break; + } + case Bytecode::Op::Push: { + m_stack.emplace_back(*get_imm(bc)); + break; + } + case Bytecode::Op::Upper: { + auto result = get_args(bc)[0]->get<std::string>(); + std::transform(result.begin(), result.end(), result.begin(), ::toupper); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Lower: { + auto result = get_args(bc)[0]->get<std::string>(); + std::transform(result.begin(), result.end(), result.begin(), ::tolower); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Range: { + int number = get_args(bc)[0]->get<int>(); + std::vector<int> result(number); + std::iota(std::begin(result), std::end(result), 0); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Length: { + auto result = get_args(bc)[0]->size(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Sort: { + auto result = get_args(bc)[0]->get<std::vector<json>>(); + std::sort(result.begin(), result.end()); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::First: { + auto result = get_args(bc)[0]->front(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Last: { + auto result = get_args(bc)[0]->back(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Round: { + auto args = get_args(bc); + double number = args[0]->get<double>(); + int precision = args[1]->get<int>(); + pop_args(bc); + m_stack.emplace_back(std::round(number * std::pow(10.0, precision)) / std::pow(10.0, precision)); + break; + } + case Bytecode::Op::DivisibleBy: { + auto args = get_args(bc); + int number = args[0]->get<int>(); + int divisor = args[1]->get<int>(); + pop_args(bc); + m_stack.emplace_back((divisor != 0) && (number % divisor == 0)); + break; + } + case Bytecode::Op::Odd: { + int number = get_args(bc)[0]->get<int>(); + pop_args(bc); + m_stack.emplace_back(number % 2 != 0); + break; + } + case Bytecode::Op::Even: { + int number = get_args(bc)[0]->get<int>(); + pop_args(bc); + m_stack.emplace_back(number % 2 == 0); + break; + } + case Bytecode::Op::Max: { + auto args = get_args(bc); + auto result = *std::max_element(args[0]->begin(), args[0]->end()); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Min: { + auto args = get_args(bc); + auto result = *std::min_element(args[0]->begin(), args[0]->end()); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Not: { + bool result = !truthy(*get_args(bc)[0]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::And: { + auto args = get_args(bc); + bool result = truthy(*args[0]) && truthy(*args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Or: { + auto args = get_args(bc); + bool result = truthy(*args[0]) || truthy(*args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::In: { + auto args = get_args(bc); + bool result = std::find(args[1]->begin(), args[1]->end(), *args[0]) != + args[1]->end(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Equal: { + auto args = get_args(bc); + bool result = (*args[0] == *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Greater: { + auto args = get_args(bc); + bool result = (*args[0] > *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Less: { + auto args = get_args(bc); + bool result = (*args[0] < *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::GreaterEqual: { + auto args = get_args(bc); + bool result = (*args[0] >= *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::LessEqual: { + auto args = get_args(bc); + bool result = (*args[0] <= *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Different: { + auto args = get_args(bc); + bool result = (*args[0] != *args[1]); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Float: { + double result = + std::stod(get_args(bc)[0]->get_ref<const std::string&>()); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Int: { + int result = std::stoi(get_args(bc)[0]->get_ref<const std::string&>()); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Exists: { + auto&& name = get_args(bc)[0]->get_ref<const std::string&>(); + bool result = (data.find(name) != data.end()); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::ExistsInObject: { + auto args = get_args(bc); + auto&& name = args[1]->get_ref<const std::string&>(); + bool result = (args[0]->find(name) != args[0]->end()); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsBoolean: { + bool result = get_args(bc)[0]->is_boolean(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsNumber: { + bool result = get_args(bc)[0]->is_number(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsInteger: { + bool result = get_args(bc)[0]->is_number_integer(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsFloat: { + bool result = get_args(bc)[0]->is_number_float(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsObject: { + bool result = get_args(bc)[0]->is_object(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsArray: { + bool result = get_args(bc)[0]->is_array(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::IsString: { + bool result = get_args(bc)[0]->is_string(); + pop_args(bc); + m_stack.emplace_back(result); + break; + } + case Bytecode::Op::Default: { + // default needs to be a bit "magic"; we can't evaluate the first + // argument during the push operation, so we swap the arguments during + // the parse phase so the second argument is pushed on the stack and + // the first argument is in the immediate + try { + const json* imm = get_imm(bc); + // if no exception was raised, replace the stack value with it + m_stack.back() = *imm; + } catch (std::exception&) { + // couldn't read immediate, just leave the stack as is + } + break; + } + case Bytecode::Op::Include: + Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, data); + break; + case Bytecode::Op::Callback: { + auto callback = m_callbacks.find_callback(bc.str, bc.args); + if (!callback) { + inja_throw("render_error", "function '" + static_cast<std::string>(bc.str) + "' (" + std::to_string(static_cast<unsigned int>(bc.args)) + ") not found"); + } + json result = callback(get_args(bc)); + pop_args(bc); + m_stack.emplace_back(std::move(result)); + break; + } + case Bytecode::Op::Jump: { + i = bc.args - 1; // -1 due to ++i in loop + break; + } + case Bytecode::Op::ConditionalJump: { + if (!truthy(m_stack.back())) { + i = bc.args - 1; // -1 due to ++i in loop + } + m_stack.pop_back(); + break; + } + case Bytecode::Op::StartLoop: { + // jump past loop body if empty + if (m_stack.back().empty()) { + m_stack.pop_back(); + i = bc.args; // ++i in loop will take it past EndLoop + break; + } + + m_loop_stack.emplace_back(); + LoopLevel& level = m_loop_stack.back(); + level.value_name = bc.str; + level.values = std::move(m_stack.back()); + level.data = (*m_data); + m_stack.pop_back(); + + if (bc.value.is_string()) { + // map iterator + if (!level.values.is_object()) { + m_loop_stack.pop_back(); + inja_throw("render_error", "for key, value requires object"); + } + level.loop_type = LoopLevel::Type::Map; + level.key_name = bc.value.get_ref<const std::string&>(); + + // sort by key + for (auto it = level.values.begin(), end = level.values.end(); it != end; ++it) { + level.map_values.emplace_back(it.key(), &it.value()); + } + std::sort(level.map_values.begin(), level.map_values.end(), [](const LoopLevel::KeyValue& a, const LoopLevel::KeyValue& b) { return a.first < b.first; }); + level.map_it = level.map_values.begin(); + } else { + if (!level.values.is_array()) { + m_loop_stack.pop_back(); + inja_throw("render_error", "type must be array"); + } + + // list iterator + level.loop_type = LoopLevel::Type::Array; + level.index = 0; + level.size = level.values.size(); + } + + // provide parent access in nested loop + auto parent_loop_it = level.data.find("loop"); + if (parent_loop_it != level.data.end()) { + json loop_copy = *parent_loop_it; + (*parent_loop_it)["parent"] = std::move(loop_copy); + } + + // set "current" data to loop data + m_data = &level.data; + update_loop_data(); + break; + } + case Bytecode::Op::EndLoop: { + if (m_loop_stack.empty()) { + inja_throw("render_error", "unexpected state in renderer"); + } + LoopLevel& level = m_loop_stack.back(); + + bool done; + if (level.loop_type == LoopLevel::Type::Array) { + level.index += 1; + done = (level.index == level.values.size()); + } else { + level.map_it += 1; + done = (level.map_it == level.map_values.end()); + } + + if (done) { + m_loop_stack.pop_back(); + // set "current" data to outer loop data or main data as appropriate + if (!m_loop_stack.empty()) { + m_data = &m_loop_stack.back().data; + } else { + m_data = &data; + } + break; + } + + update_loop_data(); + + // jump back to start of loop + i = bc.args - 1; // -1 due to ++i in loop + break; + } + default: { + inja_throw("render_error", "unknown op in renderer: " + std::to_string(static_cast<unsigned int>(bc.op))); + } + } + } + } +}; + +} // namespace inja + +#endif // PANTOR_INJA_RENDERER_HPP + +// #include "string_view.hpp" + +// #include "template.hpp" + + + +namespace inja { + +using namespace nlohmann; + +class Environment { + class Impl { + public: + std::string input_path; + std::string output_path; + + LexerConfig lexer_config; + ParserConfig parser_config; + + FunctionStorage callbacks; + TemplateStorage included_templates; + }; + + std::unique_ptr<Impl> m_impl; + + public: + Environment(): Environment("./") { } + + explicit Environment(const std::string& global_path): m_impl(stdinja::make_unique<Impl>()) { + m_impl->input_path = global_path; + m_impl->output_path = global_path; + } + + explicit Environment(const std::string& input_path, const std::string& output_path): m_impl(stdinja::make_unique<Impl>()) { + m_impl->input_path = input_path; + m_impl->output_path = output_path; + } + + /// Sets the opener and closer for template statements + void set_statement(const std::string& open, const std::string& close) { + m_impl->lexer_config.statement_open = open; + m_impl->lexer_config.statement_close = close; + m_impl->lexer_config.update_open_chars(); + } + + /// Sets the opener for template line statements + void set_line_statement(const std::string& open) { + m_impl->lexer_config.line_statement = open; + m_impl->lexer_config.update_open_chars(); + } + + /// Sets the opener and closer for template expressions + void set_expression(const std::string& open, const std::string& close) { + m_impl->lexer_config.expression_open = open; + m_impl->lexer_config.expression_close = close; + m_impl->lexer_config.update_open_chars(); + } + + /// Sets the opener and closer for template comments + void set_comment(const std::string& open, const std::string& close) { + m_impl->lexer_config.comment_open = open; + m_impl->lexer_config.comment_close = close; + m_impl->lexer_config.update_open_chars(); + } + + /// Sets the element notation syntax + void set_element_notation(ElementNotation notation) { + m_impl->parser_config.notation = notation; + } + + + Template parse(nonstd::string_view input) { + Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates); + return parser.parse(input); + } + + Template parse_template(const std::string& filename) { + Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates); + return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename)); + } + + std::string render(nonstd::string_view input, const json& data) { + return render(parse(input), data); + } + + std::string render(const Template& tmpl, const json& data) { + std::stringstream os; + render_to(os, tmpl, data); + return os.str(); + } + + std::string render_file(const std::string& filename, const json& data) { + return render(parse_template(filename), data); + } + + std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) { + const json data = load_json(filename_data); + return render_file(filename, data); + } + + void write(const std::string& filename, const json& data, const std::string& filename_out) { + std::ofstream file(m_impl->output_path + filename_out); + file << render_file(filename, data); + file.close(); + } + + void write(const Template& temp, const json& data, const std::string& filename_out) { + std::ofstream file(m_impl->output_path + filename_out); + file << render(temp, data); + file.close(); + } + + void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(filename, data, filename_out); + } + + void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) { + const json data = load_json(filename_data); + write(temp, data, filename_out); + } + + std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) { + Renderer(m_impl->included_templates, m_impl->callbacks).render_to(os, tmpl, data); + return os; + } + + std::string load_file(const std::string& filename) { + Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates); + return parser.load_file(m_impl->input_path + filename); + } + + json load_json(const std::string& filename) { + std::ifstream file(m_impl->input_path + filename); + json j; + file >> j; + return j; + } + + void add_callback(const std::string& name, unsigned int numArgs, const CallbackFunction& callback) { + m_impl->callbacks.add_callback(name, numArgs, callback); + } + + /** Includes a template with a given name into the environment. + * Then, a template can be rendered in another template using the + * include "<name>" syntax. + */ + void include_template(const std::string& name, const Template& tmpl) { + m_impl->included_templates[name] = tmpl; + } +}; + +/*! +@brief render with default settings to a string +*/ +inline std::string render(nonstd::string_view input, const json& data) { + return Environment().render(input, data); +} + +/*! +@brief render with default settings to the given output stream +*/ +inline void render_to(std::ostream& os, nonstd::string_view input, const json& data) { + Environment env; + env.render_to(os, env.parse(input), data); +} + +} + +#endif // PANTOR_INJA_ENVIRONMENT_HPP + +// #include "string_view.hpp" + +// #include "template.hpp" + +// #include "parser.hpp" + +// #include "renderer.hpp" + + + +#endif // PANTOR_INJA_HPP diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp new file mode 100644 index 0000000..efe48f3 --- /dev/null +++ b/tools/jsonproc/jsonproc.cpp @@ -0,0 +1,91 @@ +// jsonproc.cpp + +#include "jsonproc.h" + +#include <map> + +#include <string> +using std::string; + +#include <inja.hpp> +using namespace inja; +using json = nlohmann::json; + +std::map<string, string> customVars; + +void set_custom_var(string key, string value) +{ + customVars[key] = value; +} + +string get_custom_var(string key) +{ + return customVars[key]; +} + +int main(int argc, char *argv[]) +{ + if (argc != 4) + FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n"); + + string jsonfilepath = argv[1]; + string templateFilepath = argv[2]; + string outputFilepath = argv[3]; + + Environment env; + + // Add custom command callbacks. + env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) { + return "//\n// DO NOT MODIFY THIS FILE! IT IS AUTO-GENERATED FROM " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n"; + }); + + env.add_callback("setVar", 2, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + string value = args.at(1)->get<string>(); + set_custom_var(key, value); + return ""; + }); + + env.add_callback("getVar", 1, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + return get_custom_var(key); + }); + + env.add_callback("concat", 2, [](Arguments& args) { + string first = args.at(0)->get<string>(); + string second = args.at(1)->get<string>(); + return first + second; + }); + + env.add_callback("removePrefix", 2, [](Arguments& args) { + string rawValue = args.at(0)->get<string>(); + string prefix = args.at(1)->get<string>(); + string::size_type i = rawValue.find(prefix); + if (i != 0) + return rawValue; + + return rawValue.erase(0, prefix.length()); + }); + + // Add custom command callbacks. + env.add_callback("removeSuffix", 2, [](Arguments& args) { + string rawValue = args.at(0)->get<string>(); + string suffix = args.at(1)->get<string>(); + string::size_type i = rawValue.rfind(suffix); + if (i == string::npos) + return rawValue; + + return rawValue.substr(0, i); + }); + + try + { + env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath); + } + catch (const std::exception& e) + { + FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what()); + } + + return 0; +} diff --git a/tools/jsonproc/jsonproc.h b/tools/jsonproc/jsonproc.h new file mode 100644 index 0000000..575fb37 --- /dev/null +++ b/tools/jsonproc/jsonproc.h @@ -0,0 +1,32 @@ +// jsonproc.h + +#ifndef JSONPROC_H +#define JSONPROC_H + +#include <cstdlib> +#include <cstdio> +using std::fprintf; using std::exit; + +#include <cstdlib> + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +#endif // JSONPROC_H diff --git a/tools/jsonproc/nlohmann/json.hpp b/tools/jsonproc/nlohmann/json.hpp new file mode 100644 index 0000000..5003a4f --- /dev/null +++ b/tools/jsonproc/nlohmann/json.hpp @@ -0,0 +1,20842 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ +| | |__ | | | | | | version 3.6.1 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License <http://opensource.org/licenses/MIT>. +SPDX-License-Identifier: MIT +Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#define NLOHMANN_JSON_VERSION_MAJOR 3 +#define NLOHMANN_JSON_VERSION_MINOR 6 +#define NLOHMANN_JSON_VERSION_PATCH 1 + +#include <algorithm> // all_of, find, for_each +#include <cassert> // assert +#include <ciso646> // and, not, or +#include <cstddef> // nullptr_t, ptrdiff_t, size_t +#include <functional> // hash, less +#include <initializer_list> // initializer_list +#include <iosfwd> // istream, ostream +#include <iterator> // random_access_iterator_tag +#include <memory> // unique_ptr +#include <numeric> // accumulate +#include <string> // string, stoi, to_string +#include <utility> // declval, forward, move, pair, swap +#include <vector> // vector + +// #include <nlohmann/adl_serializer.hpp> + + +#include <utility> + +// #include <nlohmann/detail/conversions/from_json.hpp> + + +#include <algorithm> // transform +#include <array> // array +#include <ciso646> // and, not +#include <forward_list> // forward_list +#include <iterator> // inserter, front_inserter, end +#include <map> // map +#include <string> // string +#include <tuple> // tuple, make_tuple +#include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include <unordered_map> // unordered_map +#include <utility> // pair, declval +#include <valarray> // valarray + +// #include <nlohmann/detail/exceptions.hpp> + + +#include <exception> // exception +#include <stdexcept> // runtime_error +#include <string> // to_string + +// #include <nlohmann/detail/input/position_t.hpp> + + +#include <cstddef> // size_t + +namespace nlohmann +{ +namespace detail +{ +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. +json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet). + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa - @ref exception for the base class of the library exceptions +@sa - @ref invalid_iterator for exceptions indicating errors with iterators +@sa - @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa - @ref out_of_range for exceptions indicating access out of the defined range +@sa - @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] pos the position where the error occurred (or with + chars_read_total=0 if the position cannot be + determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, const position_t& pos, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + position_string(pos) + ": " + what_arg; + return parse_error(id_, pos.chars_read_total, w.c_str()); + } + + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} + + static std::string position_string(const position_t& pos) + { + return " at line " + std::to_string(pos.lines_read + 1) + + ", column " + std::to_string(pos.chars_read_current_line); + } +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa - @ref exception for the base class of the library exceptions +@sa - @ref parse_error for exceptions indicating a parse error +@sa - @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa - @ref out_of_range for exceptions indicating access out of the defined range +@sa - @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t &. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | +json.exception.type_error.317 | JSON value cannot be serialized to requested format | The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa - @ref exception for the base class of the library exceptions +@sa - @ref parse_error for exceptions indicating a parse error +@sa - @ref invalid_iterator for exceptions indicating errors with iterators +@sa - @ref out_of_range for exceptions indicating access out of the defined range +@sa - @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. +json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. | +json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. | +json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string | + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa - @ref exception for the base class of the library exceptions +@sa - @ref parse_error for exceptions indicating a parse error +@sa - @ref invalid_iterator for exceptions indicating errors with iterators +@sa - @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa - @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa - @ref exception for the base class of the library exceptions +@sa - @ref parse_error for exceptions indicating a parse error +@sa - @ref invalid_iterator for exceptions indicating errors with iterators +@sa - @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa - @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/macro_scope.hpp> + + +#include <utility> // pair + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow for portable nodiscard warnings +#if defined(__has_cpp_attribute) + #if __has_cpp_attribute(nodiscard) + #define JSON_NODISCARD [[nodiscard]] + #elif __has_cpp_attribute(gnu::warn_unused_result) + #define JSON_NODISCARD [[gnu::warn_unused_result]] + #else + #define JSON_NODISCARD + #endif +#else + #define JSON_NODISCARD +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include <cstdlib> + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(x, 1) + #define JSON_UNLIKELY(x) __builtin_expect(x, 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template<typename BasicJsonType> \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template<typename BasicJsonType> \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template<template<typename, typename, typename...> class ObjectType, \ + template<typename, typename...> class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template<typename> class AllocatorType, \ + template<typename, typename = void> class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json<ObjectType, ArrayType, StringType, BooleanType, \ + NumberIntegerType, NumberUnsignedType, NumberFloatType, \ + AllocatorType, JSONSerializer> + +// #include <nlohmann/detail/meta/cpp_future.hpp> + + +#include <ciso646> // not +#include <cstddef> // size_t +#include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type + +namespace nlohmann +{ +namespace detail +{ +// alias templates to reduce boilerplate +template<bool B, typename T = void> +using enable_if_t = typename std::enable_if<B, T>::type; + +template<typename T> +using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template<std::size_t... Ints> +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template<class Sequence1, class Sequence2> +struct merge_and_renumber; + +template<std::size_t... I1, std::size_t... I2> +struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template<std::size_t N> +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template<typename... Ts> +using index_sequence_for = make_index_sequence<sizeof...(Ts)>; + +// dispatch utility (taken from ranges-v3) +template<unsigned N> struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template<typename T> +struct static_const +{ + static constexpr T value{}; +}; + +template<typename T> +constexpr T static_const<T>::value; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/meta/type_traits.hpp> + + +#include <ciso646> // not +#include <limits> // numeric_limits +#include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type +#include <utility> // declval + +// #include <nlohmann/detail/iterators/iterator_traits.hpp> + + +#include <iterator> // random_access_iterator_tag + +// #include <nlohmann/detail/meta/void_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +template <typename ...Ts> struct make_void +{ + using type = void; +}; +template <typename ...Ts> using void_t = typename make_void<Ts...>::type; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/meta/cpp_future.hpp> + + +namespace nlohmann +{ +namespace detail +{ +template <typename It, typename = void> +struct iterator_types {}; + +template <typename It> +struct iterator_types < + It, + void_t<typename It::difference_type, typename It::value_type, typename It::pointer, + typename It::reference, typename It::iterator_category >> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template <typename T, typename = void> +struct iterator_traits +{ +}; + +template <typename T> +struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> + : iterator_types<T> +{ +}; + +template <typename T> +struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/cpp_future.hpp> + +// #include <nlohmann/detail/meta/detected.hpp> + + +#include <type_traits> + +// #include <nlohmann/detail/meta/void_t.hpp> + + +// http://en.cppreference.com/w/cpp/experimental/is_detected +namespace nlohmann +{ +namespace detail +{ +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template <class Default, + class AlwaysVoid, + template <class...> class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template <class Default, template <class...> class Op, class... Args> +struct detector<Default, void_t<Op<Args...>>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op<Args...>; +}; + +template <template <class...> class Op, class... Args> +using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t; + +template <template <class...> class Op, class... Args> +using detected_t = typename detector<nonesuch, void, Op, Args...>::type; + +template <class Default, template <class...> class Op, class... Args> +using detected_or = detector<Default, void, Op, Args...>; + +template <class Default, template <class...> class Op, class... Args> +using detected_or_t = typename detected_or<Default, Op, Args...>::type; + +template <class Expected, template <class...> class Op, class... Args> +using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>; + +template <class To, template <class...> class Op, class... Args> +using is_detected_convertible = + std::is_convertible<detected_t<Op, Args...>, To>; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/json_fwd.hpp> +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ +#define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + +#include <cstdint> // int64_t, uint64_t +#include <map> // map +#include <memory> // allocator +#include <string> // string +#include <vector> // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template<typename T = void, typename SFINAE = void> +struct adl_serializer; + +template<template<typename U, typename V, typename... Args> class ObjectType = + std::map, + template<typename U, typename... Args> class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template<typename U> class AllocatorType = std::allocator, + template<typename T, typename SFINAE = void> class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +template<typename BasicJsonType> +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} // namespace nlohmann + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval<T>()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template<typename> struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template <typename T> +using mapped_type_t = typename T::mapped_type; + +template <typename T> +using key_type_t = typename T::key_type; + +template <typename T> +using value_type_t = typename T::value_type; + +template <typename T> +using difference_type_t = typename T::difference_type; + +template <typename T> +using pointer_t = typename T::pointer; + +template <typename T> +using reference_t = typename T::reference; + +template <typename T> +using iterator_category_t = typename T::iterator_category; + +template <typename T> +using iterator_t = typename T::iterator; + +template <typename T, typename... Args> +using to_json_function = decltype(T::to_json(std::declval<Args>()...)); + +template <typename T, typename... Args> +using from_json_function = decltype(T::from_json(std::declval<Args>()...)); + +template <typename T, typename U> +using get_template_function = decltype(std::declval<T>().template get<U>()); + +// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists +template <typename BasicJsonType, typename T, typename = void> +struct has_from_json : std::false_type {}; + +template <typename BasicJsonType, typename T> +struct has_from_json<BasicJsonType, T, + enable_if_t<not is_basic_json<T>::value>> +{ + using serializer = typename BasicJsonType::template json_serializer<T, void>; + + static constexpr bool value = + is_detected_exact<void, from_json_function, serializer, + const BasicJsonType&, T&>::value; +}; + +// This trait checks if JSONSerializer<T>::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template <typename BasicJsonType, typename T, typename = void> +struct has_non_default_from_json : std::false_type {}; + +template<typename BasicJsonType, typename T> +struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>> +{ + using serializer = typename BasicJsonType::template json_serializer<T, void>; + + static constexpr bool value = + is_detected_exact<T, from_json_function, serializer, + const BasicJsonType&>::value; +}; + +// This trait checks if BasicJsonType::json_serializer<T>::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template <typename BasicJsonType, typename T, typename = void> +struct has_to_json : std::false_type {}; + +template <typename BasicJsonType, typename T> +struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>> +{ + using serializer = typename BasicJsonType::template json_serializer<T, void>; + + static constexpr bool value = + is_detected_exact<void, to_json_function, serializer, BasicJsonType&, + T>::value; +}; + + +/////////////////// +// is_ functions // +/////////////////// + +template <typename T, typename = void> +struct is_iterator_traits : std::false_type {}; + +template <typename T> +struct is_iterator_traits<iterator_traits<T>> +{ + private: + using traits = iterator_traits<T>; + + public: + static constexpr auto value = + is_detected<value_type_t, traits>::value && + is_detected<difference_type_t, traits>::value && + is_detected<pointer_t, traits>::value && + is_detected<iterator_category_t, traits>::value && + is_detected<reference_t, traits>::value; +}; + +// source: https://stackoverflow.com/a/37193089/4116453 + +template <typename T, typename = void> +struct is_complete_type : std::false_type {}; + +template <typename T> +struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {}; + +template <typename BasicJsonType, typename CompatibleObjectType, + typename = void> +struct is_compatible_object_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename CompatibleObjectType> +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and + is_detected<key_type_t, CompatibleObjectType>::value >> +{ + + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + std::is_constructible<typename object_t::key_type, + typename CompatibleObjectType::key_type>::value and + std::is_constructible<typename object_t::mapped_type, + typename CompatibleObjectType::mapped_type>::value; +}; + +template <typename BasicJsonType, typename CompatibleObjectType> +struct is_compatible_object_type + : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {}; + +template <typename BasicJsonType, typename ConstructibleObjectType, + typename = void> +struct is_constructible_object_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename ConstructibleObjectType> +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and + is_detected<key_type_t, ConstructibleObjectType>::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (std::is_constructible<typename ConstructibleObjectType::key_type, typename object_t::key_type>::value and + std::is_same<typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type>::value) or + (has_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type>::value or + has_non_default_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type >::value); +}; + +template <typename BasicJsonType, typename ConstructibleObjectType> +struct is_constructible_object_type + : is_constructible_object_type_impl<BasicJsonType, + ConstructibleObjectType> {}; + +template <typename BasicJsonType, typename CompatibleStringType, + typename = void> +struct is_compatible_string_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename CompatibleStringType> +struct is_compatible_string_type_impl < + BasicJsonType, CompatibleStringType, + enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type, + value_type_t, CompatibleStringType>::value >> +{ + static constexpr auto value = + std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value; +}; + +template <typename BasicJsonType, typename ConstructibleStringType> +struct is_compatible_string_type + : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; + +template <typename BasicJsonType, typename ConstructibleStringType, + typename = void> +struct is_constructible_string_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename ConstructibleStringType> +struct is_constructible_string_type_impl < + BasicJsonType, ConstructibleStringType, + enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type, + value_type_t, ConstructibleStringType>::value >> +{ + static constexpr auto value = + std::is_constructible<ConstructibleStringType, + typename BasicJsonType::string_t>::value; +}; + +template <typename BasicJsonType, typename ConstructibleStringType> +struct is_constructible_string_type + : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {}; + +template <typename BasicJsonType, typename CompatibleArrayType, typename = void> +struct is_compatible_array_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename CompatibleArrayType> +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and + is_detected<iterator_t, CompatibleArrayType>::value and +// This is needed because json_reverse_iterator has a ::iterator type... +// Therefore it is detected as a CompatibleArrayType. +// The real fix would be to have an Iterable concept. + not is_iterator_traits< + iterator_traits<CompatibleArrayType>>::value >> +{ + static constexpr bool value = + std::is_constructible<BasicJsonType, + typename CompatibleArrayType::value_type>::value; +}; + +template <typename BasicJsonType, typename CompatibleArrayType> +struct is_compatible_array_type + : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {}; + +template <typename BasicJsonType, typename ConstructibleArrayType, typename = void> +struct is_constructible_array_type_impl : std::false_type {}; + +template <typename BasicJsonType, typename ConstructibleArrayType> +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t<std::is_same<ConstructibleArrayType, + typename BasicJsonType::value_type>::value >> + : std::true_type {}; + +template <typename BasicJsonType, typename ConstructibleArrayType> +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t<not std::is_same<ConstructibleArrayType, + typename BasicJsonType::value_type>::value and + is_detected<value_type_t, ConstructibleArrayType>::value and + is_detected<iterator_t, ConstructibleArrayType>::value and + is_complete_type< + detected_t<value_type_t, ConstructibleArrayType>>::value >> +{ + static constexpr bool value = + // This is needed because json_reverse_iterator has a ::iterator type, + // furthermore, std::back_insert_iterator (and other iterators) have a base class `iterator`... + // Therefore it is detected as a ConstructibleArrayType. + // The real fix would be to have an Iterable concept. + not is_iterator_traits < + iterator_traits<ConstructibleArrayType >>::value and + + (std::is_same<typename ConstructibleArrayType::value_type, typename BasicJsonType::array_t::value_type>::value or + has_from_json<BasicJsonType, + typename ConstructibleArrayType::value_type>::value or + has_non_default_from_json < + BasicJsonType, typename ConstructibleArrayType::value_type >::value); +}; + +template <typename BasicJsonType, typename ConstructibleArrayType> +struct is_constructible_array_type + : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType, + typename = void> +struct is_compatible_integer_type_impl : std::false_type {}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t<std::is_integral<RealIntegerType>::value and + std::is_integral<CompatibleNumberIntegerType>::value and + not std::is_same<bool, CompatibleNumberIntegerType>::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits<RealIntegerType>; + using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>; + + static constexpr auto value = + std::is_constructible<RealIntegerType, + CompatibleNumberIntegerType>::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template <typename RealIntegerType, typename CompatibleNumberIntegerType> +struct is_compatible_integer_type + : is_compatible_integer_type_impl<RealIntegerType, + CompatibleNumberIntegerType> {}; + +template <typename BasicJsonType, typename CompatibleType, typename = void> +struct is_compatible_type_impl: std::false_type {}; + +template <typename BasicJsonType, typename CompatibleType> +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t<is_complete_type<CompatibleType>::value >> +{ + static constexpr bool value = + has_to_json<BasicJsonType, CompatibleType>::value; +}; + +template <typename BasicJsonType, typename CompatibleType> +struct is_compatible_type + : is_compatible_type_impl<BasicJsonType, CompatibleType> {}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/value_t.hpp> + + +#include <array> // array +#include <ciso646> // and +#include <cstddef> // size_t +#include <cstdint> // uint8_t +#include <string> // string + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array<std::uint8_t, 8> order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast<std::size_t>(lhs); + const auto r_index = static_cast<std::size_t>(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ +namespace detail +{ +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename std::nullptr_t& n) +{ + if (JSON_UNLIKELY(not j.is_null())) + { + JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name()))); + } + n = nullptr; +} + +// overloads for basic_json template parameters +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t<std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast<value_t>(j)) + { + case value_t::number_unsigned: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + break; + } + case value_t::number_integer: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + break; + } + case value_t::number_float: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) +{ + if (JSON_UNLIKELY(not j.is_boolean())) + { + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); + } + b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>(); +} + +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) +{ + if (JSON_UNLIKELY(not j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); + } + s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); +} + +template < + typename BasicJsonType, typename ConstructibleStringType, + enable_if_t < + is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and + not std::is_same<typename BasicJsonType::string_t, + ConstructibleStringType>::value, + int > = 0 > +void from_json(const BasicJsonType& j, ConstructibleStringType& s) +{ + if (JSON_UNLIKELY(not j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); + } + + s = *j.template get_ptr<const typename BasicJsonType::string_t*>(); +} + +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + +template<typename BasicJsonType> +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + +template<typename BasicJsonType, typename EnumType, + enable_if_t<std::is_enum<EnumType>::value, int> = 0> +void from_json(const BasicJsonType& j, EnumType& e) +{ + typename std::underlying_type<EnumType>::type val; + get_arithmetic_value(j, val); + e = static_cast<EnumType>(val); +} + +// forward_list doesn't have an insert method +template<typename BasicJsonType, typename T, typename Allocator, + enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0> +void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType & i) + { + return i.template get<T>(); + }); +} + +// valarray doesn't have an insert method +template<typename BasicJsonType, typename T, + enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0> +void from_json(const BasicJsonType& j, std::valarray<T>& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + l.resize(j.size()); + std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); +} + +template<typename BasicJsonType> +void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/) +{ + arr = *j.template get_ptr<const typename BasicJsonType::array_t*>(); +} + +template <typename BasicJsonType, typename T, std::size_t N> +auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr, + priority_tag<2> /*unused*/) +-> decltype(j.template get<T>(), void()) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get<T>(); + } +} + +template<typename BasicJsonType, typename ConstructibleArrayType> +auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/) +-> decltype( + arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()), + j.template get<typename ConstructibleArrayType::value_type>(), + void()) +{ + using std::end; + + arr.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get<typename ConstructibleArrayType::value_type>(); + }); +} + +template <typename BasicJsonType, typename ConstructibleArrayType> +void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, + priority_tag<0> /*unused*/) +{ + using std::end; + + std::transform( + j.begin(), j.end(), std::inserter(arr, end(arr)), + [](const BasicJsonType & i) + { + // get<BasicJsonType>() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get<typename ConstructibleArrayType::value_type>(); + }); +} + +template <typename BasicJsonType, typename ConstructibleArrayType, + enable_if_t < + is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and + not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and + not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and + not is_basic_json<ConstructibleArrayType>::value, + int > = 0 > + +auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) +-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), +j.template get<typename ConstructibleArrayType::value_type>(), +void()) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + + std::string(j.type_name()))); + } + + from_json_array_impl(j, arr, priority_tag<3> {}); +} + +template<typename BasicJsonType, typename ConstructibleObjectType, + enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0> +void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) +{ + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); + } + + auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>(); + using value_type = typename ConstructibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(obj, obj.begin()), + [](typename BasicJsonType::object_t::value_type const & p) + { + return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>()); + }); +} + +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? +template<typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic<ArithmeticType>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and + not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value, + int> = 0> +void from_json(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast<value_t>(j)) + { + case value_t::number_unsigned: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>()); + break; + } + case value_t::number_integer: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>()); + break; + } + case value_t::number_float: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>()); + break; + } + case value_t::boolean: + { + val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template<typename BasicJsonType, typename A1, typename A2> +void from_json(const BasicJsonType& j, std::pair<A1, A2>& p) +{ + p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()}; +} + +template<typename BasicJsonType, typename Tuple, std::size_t... Idx> +void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/) +{ + t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...); +} + +template<typename BasicJsonType, typename... Args> +void from_json(const BasicJsonType& j, std::tuple<Args...>& t) +{ + from_json_tuple_impl(j, t, index_sequence_for<Args...> {}); +} + +template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, + typename = enable_if_t<not std::is_constructible< + typename BasicJsonType::string_t, Key>::value>> +void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + for (const auto& p : j) + { + if (JSON_UNLIKELY(not p.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()))); + } + m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>()); + } +} + +template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, + typename = enable_if_t<not std::is_constructible< + typename BasicJsonType::string_t, Key>::value>> +void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + for (const auto& p : j) + { + if (JSON_UNLIKELY(not p.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()))); + } + m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>()); + } +} + +struct from_json_fn +{ + template<typename BasicJsonType, typename T> + auto operator()(const BasicJsonType& j, T& val) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } +}; +} // namespace detail + +/// namespace to hold default `from_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace +{ +constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value; +} // namespace +} // namespace nlohmann + +// #include <nlohmann/detail/conversions/to_json.hpp> + + +#include <algorithm> // copy +#include <ciso646> // or, and, not +#include <iterator> // begin, end +#include <string> // string +#include <tuple> // tuple, get +#include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include <utility> // move, forward, declval, pair +#include <valarray> // valarray +#include <vector> // vector + +// #include <nlohmann/detail/iterators/iteration_proxy.hpp> + + +#include <cstddef> // size_t +#include <iterator> // input_iterator_tag +#include <string> // string, to_string +#include <tuple> // tuple_size, get, tuple_element + +// #include <nlohmann/detail/meta/type_traits.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +template <typename IteratorType> class iteration_proxy_value +{ + public: + using difference_type = std::ptrdiff_t; + using value_type = iteration_proxy_value; + using pointer = value_type * ; + using reference = value_type & ; + using iterator_category = std::input_iterator_tag; + + private: + /// the iterator + IteratorType anchor; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + /// last stringified array index + mutable std::size_t array_index_last = 0; + /// a string representation of the array index + mutable std::string array_index_str = "0"; + /// an empty string (to return a reference for primitive values) + const std::string empty_str = ""; + + public: + explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {} + + /// dereference operator (needed for range-based for) + iteration_proxy_value& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_value& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// equality operator (needed for InputIterator) + bool operator==(const iteration_proxy_value& o) const + { + return anchor == o.anchor; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_value& o) const + { + return anchor != o.anchor; + } + + /// return key of the iterator + const std::string& key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + { + if (array_index != array_index_last) + { + array_index_str = std::to_string(array_index); + array_index_last = array_index; + } + return array_index_str; + } + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + default: + return empty_str; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } +}; + +/// proxy class for the items() function +template<typename IteratorType> class iteration_proxy +{ + private: + /// the container to iterate + typename IteratorType::reference container; + + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) noexcept + : container(cont) {} + + /// return iterator begin (needed for range-based for) + iteration_proxy_value<IteratorType> begin() noexcept + { + return iteration_proxy_value<IteratorType>(container.begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_value<IteratorType> end() noexcept + { + return iteration_proxy_value<IteratorType>(container.end()); + } +}; +// Structured Bindings Support +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0> +auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.key()) +{ + return i.key(); +} +// Structured Bindings Support +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0> +auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value()) +{ + return i.value(); +} +} // namespace detail +} // namespace nlohmann + +// The Addition to the STD Namespace is required to add +// Structured Bindings Support to the iteration_proxy_value class +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +namespace std +{ +#if defined(__clang__) + // Fix: https://github.com/nlohmann/json/issues/1401 + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wmismatched-tags" +#endif +template <typename IteratorType> +class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>> + : public std::integral_constant<std::size_t, 2> {}; + +template <std::size_t N, typename IteratorType> +class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >> +{ + public: + using type = decltype( + get<N>(std::declval < + ::nlohmann::detail::iteration_proxy_value<IteratorType >> ())); +}; +#if defined(__clang__) + #pragma clang diagnostic pop +#endif +} // namespace std + +// #include <nlohmann/detail/meta/cpp_future.hpp> + +// #include <nlohmann/detail/meta/type_traits.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +////////////////// +// constructors // +////////////////// + +template<value_t> struct external_constructor; + +template<> +struct external_constructor<value_t::boolean> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::string> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } + + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_type = value_t::string; + j.m_value = std::move(s); + j.assert_invariant(); + } + + template<typename BasicJsonType, typename CompatibleStringType, + enable_if_t<not std::is_same<CompatibleStringType, typename BasicJsonType::string_t>::value, + int> = 0> + static void construct(BasicJsonType& j, const CompatibleStringType& str) + { + j.m_type = value_t::string; + j.m_value.string = j.template create<typename BasicJsonType::string_t>(str); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::number_float> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_type = value_t::number_float; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::number_unsigned> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::number_integer> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::array> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_type = value_t::array; + j.m_value = std::move(arr); + j.assert_invariant(); + } + + template<typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<not std::is_same<CompatibleArrayType, typename BasicJsonType::array_t>::value, + int> = 0> + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr)); + j.assert_invariant(); + } + + template<typename BasicJsonType> + static void construct(BasicJsonType& j, const std::vector<bool>& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_value.array->push_back(x); + } + j.assert_invariant(); + } + + template<typename BasicJsonType, typename T, + enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray<T>& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->resize(arr.size()); + std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor<value_t::object> +{ + template<typename BasicJsonType> + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template<typename BasicJsonType> + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_type = value_t::object; + j.m_value = std::move(obj); + j.assert_invariant(); + } + + template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<not std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value, int> = 0> + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + +///////////// +// to_json // +///////////// + +template<typename BasicJsonType, typename T, + enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0> +void to_json(BasicJsonType& j, T b) noexcept +{ + external_constructor<value_t::boolean>::construct(j, b); +} + +template<typename BasicJsonType, typename CompatibleString, + enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleString& s) +{ + external_constructor<value_t::string>::construct(j, s); +} + +template<typename BasicJsonType> +void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) +{ + external_constructor<value_t::string>::construct(j, std::move(s)); +} + +template<typename BasicJsonType, typename FloatType, + enable_if_t<std::is_floating_point<FloatType>::value, int> = 0> +void to_json(BasicJsonType& j, FloatType val) noexcept +{ + external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val)); +} + +template<typename BasicJsonType, typename CompatibleNumberUnsignedType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val)); +} + +template<typename BasicJsonType, typename CompatibleNumberIntegerType, + enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val)); +} + +template<typename BasicJsonType, typename EnumType, + enable_if_t<std::is_enum<EnumType>::value, int> = 0> +void to_json(BasicJsonType& j, EnumType e) noexcept +{ + using underlying_type = typename std::underlying_type<EnumType>::type; + external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e)); +} + +template<typename BasicJsonType> +void to_json(BasicJsonType& j, const std::vector<bool>& e) +{ + external_constructor<value_t::array>::construct(j, e); +} + +template <typename BasicJsonType, typename CompatibleArrayType, + enable_if_t<is_compatible_array_type<BasicJsonType, + CompatibleArrayType>::value and + not is_compatible_object_type< + BasicJsonType, CompatibleArrayType>::value and + not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and + not is_basic_json<CompatibleArrayType>::value, + int> = 0> +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) +{ + external_constructor<value_t::array>::construct(j, arr); +} + +template<typename BasicJsonType, typename T, + enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0> +void to_json(BasicJsonType& j, const std::valarray<T>& arr) +{ + external_constructor<value_t::array>::construct(j, std::move(arr)); +} + +template<typename BasicJsonType> +void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) +{ + external_constructor<value_t::array>::construct(j, std::move(arr)); +} + +template<typename BasicJsonType, typename CompatibleObjectType, + enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleObjectType& obj) +{ + external_constructor<value_t::object>::construct(j, obj); +} + +template<typename BasicJsonType> +void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) +{ + external_constructor<value_t::object>::construct(j, std::move(obj)); +} + +template < + typename BasicJsonType, typename T, std::size_t N, + enable_if_t<not std::is_constructible<typename BasicJsonType::string_t, + const T(&)[N]>::value, + int> = 0 > +void to_json(BasicJsonType& j, const T(&arr)[N]) +{ + external_constructor<value_t::array>::construct(j, arr); +} + +template<typename BasicJsonType, typename... Args> +void to_json(BasicJsonType& j, const std::pair<Args...>& p) +{ + j = { p.first, p.second }; +} + +// for https://github.com/nlohmann/json/pull/1134 +template < typename BasicJsonType, typename T, + enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0> +void to_json(BasicJsonType& j, const T& b) +{ + j = { {b.key(), b.value()} }; +} + +template<typename BasicJsonType, typename Tuple, std::size_t... Idx> +void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/) +{ + j = { std::get<Idx>(t)... }; +} + +template<typename BasicJsonType, typename... Args> +void to_json(BasicJsonType& j, const std::tuple<Args...>& t) +{ + to_json_tuple_impl(j, t, index_sequence_for<Args...> {}); +} + +struct to_json_fn +{ + template<typename BasicJsonType, typename T> + auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val)))) + -> decltype(to_json(j, std::forward<T>(val)), void()) + { + return to_json(j, std::forward<T>(val)); + } +}; +} // namespace detail + +/// namespace to hold default `to_json` function +namespace +{ +constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value; +} // namespace +} // namespace nlohmann + + +namespace nlohmann +{ + +template<typename, typename> +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template<typename BasicJsonType, typename ValueType> + static auto from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) + -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) + { + ::nlohmann::from_json(std::forward<BasicJsonType>(j), val); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template <typename BasicJsonType, typename ValueType> + static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) + -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void()) + { + ::nlohmann::to_json(j, std::forward<ValueType>(val)); + } +}; + +} // namespace nlohmann + +// #include <nlohmann/detail/conversions/from_json.hpp> + +// #include <nlohmann/detail/conversions/to_json.hpp> + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/input/binary_reader.hpp> + + +#include <algorithm> // generate_n +#include <array> // array +#include <cassert> // assert +#include <cmath> // ldexp +#include <cstddef> // size_t +#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t +#include <cstdio> // snprintf +#include <cstring> // memcpy +#include <iterator> // back_inserter +#include <limits> // numeric_limits +#include <string> // char_traits, string +#include <utility> // make_pair, move + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/input/input_adapters.hpp> + + +#include <array> // array +#include <cassert> // assert +#include <cstddef> // size_t +#include <cstdio> //FILE * +#include <cstring> // strlen +#include <istream> // istream +#include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include <memory> // shared_ptr, make_shared, addressof +#include <numeric> // accumulate +#include <string> // string, char_traits +#include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include <utility> // pair, declval + +// #include <nlohmann/detail/iterators/iterator_traits.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + + +namespace nlohmann +{ +namespace detail +{ +/// the supported input formats +enum class input_format_t { json, cbor, msgpack, ubjson, bson }; + +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits<char>::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of +exactly one non-EOF character for future input. The int_type characters +returned consist of all valid char values as positive values (typically +unsigned char), plus an EOF value outside that range, specified by the value +of the function std::char_traits<char>::eof(). This value is typically -1, but +could be any arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits<char>::eof(). + virtual std::char_traits<char>::int_type get_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr<input_adapter_protocol>; + +/*! +Input adapter for stdio file access. This adapter read only 1 byte and do not use any + buffer. This adapter is a very low level adapter. +*/ +class file_input_adapter : public input_adapter_protocol +{ + public: + explicit file_input_adapter(std::FILE* f) noexcept + : m_file(f) + {} + + // make class move-only + file_input_adapter(const file_input_adapter&) = delete; + file_input_adapter(file_input_adapter&&) = default; + file_input_adapter& operator=(const file_input_adapter&) = delete; + file_input_adapter& operator=(file_input_adapter&&) = default; + ~file_input_adapter() override = default; + + std::char_traits<char>::int_type get_character() noexcept override + { + return std::fgetc(m_file); + } + + private: + /// the file pointer to read from + std::FILE* m_file; +}; + + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags, except eof + is.clear(is.rdstate() & std::ios::eofbit); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + {} + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + input_stream_adapter(input_stream_adapter&&) = delete; + input_stream_adapter& operator=(input_stream_adapter&&) = delete; + + // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to + // ensure that std::char_traits<char>::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits<char>::int_type get_character() override + { + auto res = sb.sbumpc(); + // set eof manually, as we don't use the istream interface. + if (res == EOF) + { + is.clear(is.rdstate() | std::ios::eofbit); + } + return res; + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) noexcept + : cursor(b), limit(b + l) + {} + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + input_buffer_adapter(input_buffer_adapter&&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&&) = delete; + ~input_buffer_adapter() override = default; + + std::char_traits<char>::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits<char>::to_int_type(*(cursor++)); + } + + return std::char_traits<char>::eof(); + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* const limit; +}; + +template<typename WideStringType, size_t T> +struct wide_string_input_helper +{ + // UTF-32 + static void fill_buffer(const WideStringType& str, + size_t& current_wchar, + std::array<std::char_traits<char>::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (current_wchar == str.size()) + { + utf8_bytes[0] = std::char_traits<char>::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = static_cast<unsigned int>(str[current_wchar++]); + + // UTF-32 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu)); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (wc <= 0xFFFF) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu)); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes_filled = 3; + } + else if (wc <= 0x10FFFF) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u)); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + // unknown character + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } +}; + +template<typename WideStringType> +struct wide_string_input_helper<WideStringType, 2> +{ + // UTF-16 + static void fill_buffer(const WideStringType& str, + size_t& current_wchar, + std::array<std::char_traits<char>::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (current_wchar == str.size()) + { + utf8_bytes[0] = std::char_traits<char>::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = static_cast<unsigned int>(str[current_wchar++]); + + // UTF-16 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u))); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (0xD800 > wc or wc >= 0xE000) + { + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u))); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes_filled = 3; + } + else + { + if (current_wchar < str.size()) + { + const auto wc2 = static_cast<unsigned int>(str[current_wchar++]); + const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u)); + utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + // unknown character + ++current_wchar; + utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } + } +}; + +template<typename WideStringType> +class wide_string_input_adapter : public input_adapter_protocol +{ + public: + explicit wide_string_input_adapter(const WideStringType& w) noexcept + : str(w) + {} + + std::char_traits<char>::int_type get_character() noexcept override + { + // check if buffer needs to be filled + if (utf8_bytes_index == utf8_bytes_filled) + { + fill_buffer<sizeof(typename WideStringType::value_type)>(); + + assert(utf8_bytes_filled > 0); + assert(utf8_bytes_index == 0); + } + + // use buffer + assert(utf8_bytes_filled > 0); + assert(utf8_bytes_index < utf8_bytes_filled); + return utf8_bytes[utf8_bytes_index++]; + } + + private: + template<size_t T> + void fill_buffer() + { + wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); + } + + /// the wstring to process + const WideStringType& str; + + /// index of the current wchar in str + std::size_t current_wchar = 0; + + /// a buffer for UTF-8 bytes + std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; + + /// index to the utf8_codes array for the next valid byte + std::size_t utf8_bytes_index = 0; + /// number of valid bytes in the utf8_codes array + std::size_t utf8_bytes_filled = 0; +}; + +class input_adapter +{ + public: + // native support + input_adapter(std::FILE* file) + : ia(std::make_shared<file_input_adapter>(file)) {} + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared<input_stream_adapter>(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared<input_stream_adapter>(i)) {} + + input_adapter(const std::wstring& ws) + : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {} + + input_adapter(const std::u16string& ws) + : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {} + + input_adapter(const std::u32string& ws) + : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {} + + /// input adapter for buffer + template<typename CharT, + typename std::enable_if< + std::is_pointer<CharT>::value and + std::is_integral<typename std::remove_pointer<CharT>::type>::value and + sizeof(typename std::remove_pointer<CharT>::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {} + + // derived support + + /// input adapter for string literal + template<typename CharT, + typename std::enable_if< + std::is_pointer<CharT>::value and + std::is_integral<typename std::remove_pointer<CharT>::type>::value and + sizeof(typename std::remove_pointer<CharT>::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast<const char*>(b), + std::strlen(reinterpret_cast<const char*>(b))) {} + + /// input adapter for iterator range with contiguous storage + template<class IteratorType, + typename std::enable_if< + std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { +#ifndef NDEBUG + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + const auto is_contiguous = std::accumulate( + first, last, std::pair<bool, int>(true, 0), + [&first](std::pair<bool, int> res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first; + assert(is_contiguous); +#endif + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename iterator_traits<IteratorType>::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast<size_t>(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared<input_buffer_adapter>(nullptr, len); + } + } + + /// input adapter for array + template<class T, std::size_t N> + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template<class ContiguousContainer, typename + std::enable_if<not std::is_pointer<ContiguousContainer>::value and + std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/input/json_sax.hpp> + + +#include <cassert> // assert +#include <cstddef> +#include <string> // string +#include <utility> // move +#include <vector> // vector + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + + +namespace nlohmann +{ + +/*! +@brief SAX interface + +This class describes the SAX interface used by @ref nlohmann::json::sax_parse. +Each function is called in different situations while the input is parsed. The +boolean return value informs the parser whether to continue processing the +input. +*/ +template<typename BasicJsonType> +struct json_sax +{ + /// type for (signed) integers + using number_integer_t = typename BasicJsonType::number_integer_t; + /// type for unsigned integers + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + /// type for floating-point numbers + using number_float_t = typename BasicJsonType::number_float_t; + /// type for strings + using string_t = typename BasicJsonType::string_t; + + /*! + @brief a null value was read + @return whether parsing should proceed + */ + virtual bool null() = 0; + + /*! + @brief a boolean value was read + @param[in] val boolean value + @return whether parsing should proceed + */ + virtual bool boolean(bool val) = 0; + + /*! + @brief an integer number was read + @param[in] val integer value + @return whether parsing should proceed + */ + virtual bool number_integer(number_integer_t val) = 0; + + /*! + @brief an unsigned integer number was read + @param[in] val unsigned integer value + @return whether parsing should proceed + */ + virtual bool number_unsigned(number_unsigned_t val) = 0; + + /*! + @brief an floating-point number was read + @param[in] val floating-point value + @param[in] s raw token value + @return whether parsing should proceed + */ + virtual bool number_float(number_float_t val, const string_t& s) = 0; + + /*! + @brief a string was read + @param[in] val string value + @return whether parsing should proceed + @note It is safe to move the passed string. + */ + virtual bool string(string_t& val) = 0; + + /*! + @brief the beginning of an object was read + @param[in] elements number of object elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_object(std::size_t elements) = 0; + + /*! + @brief an object key was read + @param[in] val object key + @return whether parsing should proceed + @note It is safe to move the passed string. + */ + virtual bool key(string_t& val) = 0; + + /*! + @brief the end of an object was read + @return whether parsing should proceed + */ + virtual bool end_object() = 0; + + /*! + @brief the beginning of an array was read + @param[in] elements number of array elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_array(std::size_t elements) = 0; + + /*! + @brief the end of an array was read + @return whether parsing should proceed + */ + virtual bool end_array() = 0; + + /*! + @brief a parse error occurred + @param[in] position the position in the input where the error occurs + @param[in] last_token the last read token + @param[in] ex an exception object describing the error + @return whether parsing should proceed (must return false) + */ + virtual bool parse_error(std::size_t position, + const std::string& last_token, + const detail::exception& ex) = 0; + + virtual ~json_sax() = default; +}; + + +namespace detail +{ +/*! +@brief SAX implementation to create a JSON value from SAX events + +This class implements the @ref json_sax interface and processes the SAX events +to create a JSON value which makes it basically a DOM parser. The structure or +hierarchy of the JSON value is managed by the stack `ref_stack` which contains +a pointer to the respective array or object for each recursion depth. + +After successful parsing, the value that is passed by reference to the +constructor contains the parsed value. + +@tparam BasicJsonType the JSON type +*/ +template<typename BasicJsonType> +class json_sax_dom_parser +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + + /*! + @param[in, out] r reference to a JSON value that is manipulated while + parsing + @param[in] allow_exceptions_ whether parse errors yield exceptions + */ + explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true) + : root(r), allow_exceptions(allow_exceptions_) + {} + + // make class move-only + json_sax_dom_parser(const json_sax_dom_parser&) = delete; + json_sax_dom_parser(json_sax_dom_parser&&) = default; + json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete; + json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; + ~json_sax_dom_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool start_object(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); + + if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, + "excessive object size: " + std::to_string(len))); + } + + return true; + } + + bool key(string_t& val) + { + // add null at given key and store the reference for later + object_element = &(ref_stack.back()->m_value.object->operator[](val)); + return true; + } + + bool end_object() + { + ref_stack.pop_back(); + return true; + } + + bool start_array(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); + + if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, + "excessive array size: " + std::to_string(len))); + } + + return true; + } + + bool end_array() + { + ref_stack.pop_back(); + return true; + } + + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const detail::exception& ex) + { + errored = true; + if (allow_exceptions) + { + // determine the proper exception type from the id + switch ((ex.id / 100) % 100) + { + case 1: + JSON_THROW(*static_cast<const detail::parse_error*>(&ex)); + case 4: + JSON_THROW(*static_cast<const detail::out_of_range*>(&ex)); + // LCOV_EXCL_START + case 2: + JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex)); + case 3: + JSON_THROW(*static_cast<const detail::type_error*>(&ex)); + case 5: + JSON_THROW(*static_cast<const detail::other_error*>(&ex)); + default: + assert(false); + // LCOV_EXCL_STOP + } + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + */ + template<typename Value> + BasicJsonType* handle_value(Value&& v) + { + if (ref_stack.empty()) + { + root = BasicJsonType(std::forward<Value>(v)); + return &root; + } + + assert(ref_stack.back()->is_array() or ref_stack.back()->is_object()); + + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v)); + return &(ref_stack.back()->m_value.array->back()); + } + + assert(ref_stack.back()->is_object()); + assert(object_element); + *object_element = BasicJsonType(std::forward<Value>(v)); + return object_element; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector<BasicJsonType*> ref_stack {}; + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; + +template<typename BasicJsonType> +class json_sax_dom_callback_parser +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using parser_callback_t = typename BasicJsonType::parser_callback_t; + using parse_event_t = typename BasicJsonType::parse_event_t; + + json_sax_dom_callback_parser(BasicJsonType& r, + const parser_callback_t cb, + const bool allow_exceptions_ = true) + : root(r), callback(cb), allow_exceptions(allow_exceptions_) + { + keep_stack.push_back(true); + } + + // make class move-only + json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; + json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; + ~json_sax_dom_callback_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool start_object(std::size_t len) + { + // check callback for object start + const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::object, true); + ref_stack.push_back(val.second); + + // check object limit + if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len))); + } + + return true; + } + + bool key(string_t& val) + { + BasicJsonType k = BasicJsonType(val); + + // check callback for key + const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k); + key_keep_stack.push_back(keep); + + // add discarded value at given key and store the reference for later + if (keep and ref_stack.back()) + { + object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded); + } + + return true; + } + + bool end_object() + { + if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) + { + // discard object + *ref_stack.back() = discarded; + } + + assert(not ref_stack.empty()); + assert(not keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object()) + { + // remove discarded value + for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) + { + if (it->is_discarded()) + { + ref_stack.back()->erase(it); + break; + } + } + } + + return true; + } + + bool start_array(std::size_t len) + { + const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::array, true); + ref_stack.push_back(val.second); + + // check array limit + if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len))); + } + + return true; + } + + bool end_array() + { + bool keep = true; + + if (ref_stack.back()) + { + keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); + if (not keep) + { + // discard array + *ref_stack.back() = discarded; + } + } + + assert(not ref_stack.empty()); + assert(not keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + // remove discarded value + if (not keep and not ref_stack.empty() and ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->pop_back(); + } + + return true; + } + + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const detail::exception& ex) + { + errored = true; + if (allow_exceptions) + { + // determine the proper exception type from the id + switch ((ex.id / 100) % 100) + { + case 1: + JSON_THROW(*static_cast<const detail::parse_error*>(&ex)); + case 4: + JSON_THROW(*static_cast<const detail::out_of_range*>(&ex)); + // LCOV_EXCL_START + case 2: + JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex)); + case 3: + JSON_THROW(*static_cast<const detail::type_error*>(&ex)); + case 5: + JSON_THROW(*static_cast<const detail::other_error*>(&ex)); + default: + assert(false); + // LCOV_EXCL_STOP + } + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @param[in] v value to add to the JSON value we build during parsing + @param[in] skip_callback whether we should skip calling the callback + function; this is required after start_array() and + start_object() SAX events, because otherwise we would call the + callback function with an empty array or object, respectively. + + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + + @return pair of boolean (whether value should be kept) and pointer (to the + passed value in the ref_stack hierarchy; nullptr if not kept) + */ + template<typename Value> + std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false) + { + assert(not keep_stack.empty()); + + // do not handle this value if we know it would be added to a discarded + // container + if (not keep_stack.back()) + { + return {false, nullptr}; + } + + // create value + auto value = BasicJsonType(std::forward<Value>(v)); + + // check callback + const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value); + + // do not handle this value if we just learnt it shall be discarded + if (not keep) + { + return {false, nullptr}; + } + + if (ref_stack.empty()) + { + root = std::move(value); + return {true, &root}; + } + + // skip this value if we already decided to skip the parent + // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) + if (not ref_stack.back()) + { + return {false, nullptr}; + } + + // we now only expect arrays and objects + assert(ref_stack.back()->is_array() or ref_stack.back()->is_object()); + + // array + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->push_back(std::move(value)); + return {true, &(ref_stack.back()->m_value.array->back())}; + } + + // object + assert(ref_stack.back()->is_object()); + // check if we should store an element for the current key + assert(not key_keep_stack.empty()); + const bool store_element = key_keep_stack.back(); + key_keep_stack.pop_back(); + + if (not store_element) + { + return {false, nullptr}; + } + + assert(object_element); + *object_element = std::move(value); + return {true, object_element}; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector<BasicJsonType*> ref_stack {}; + /// stack to manage which values to keep + std::vector<bool> keep_stack {}; + /// stack to manage which object keys to keep + std::vector<bool> key_keep_stack {}; + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// callback function + const parser_callback_t callback = nullptr; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; + /// a discarded value for the callback + BasicJsonType discarded = BasicJsonType::value_t::discarded; +}; + +template<typename BasicJsonType> +class json_sax_acceptor +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + + bool null() + { + return true; + } + + bool boolean(bool /*unused*/) + { + return true; + } + + bool number_integer(number_integer_t /*unused*/) + { + return true; + } + + bool number_unsigned(number_unsigned_t /*unused*/) + { + return true; + } + + bool number_float(number_float_t /*unused*/, const string_t& /*unused*/) + { + return true; + } + + bool string(string_t& /*unused*/) + { + return true; + } + + bool start_object(std::size_t /*unused*/ = std::size_t(-1)) + { + return true; + } + + bool key(string_t& /*unused*/) + { + return true; + } + + bool end_object() + { + return true; + } + + bool start_array(std::size_t /*unused*/ = std::size_t(-1)) + { + return true; + } + + bool end_array() + { + return true; + } + + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/) + { + return false; + } +}; +} // namespace detail + +} // namespace nlohmann + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/is_sax.hpp> + + +#include <cstdint> // size_t +#include <utility> // declval +#include <string> // string + +// #include <nlohmann/detail/meta/detected.hpp> + +// #include <nlohmann/detail/meta/type_traits.hpp> + + +namespace nlohmann +{ +namespace detail +{ +template <typename T> +using null_function_t = decltype(std::declval<T&>().null()); + +template <typename T> +using boolean_function_t = + decltype(std::declval<T&>().boolean(std::declval<bool>())); + +template <typename T, typename Integer> +using number_integer_function_t = + decltype(std::declval<T&>().number_integer(std::declval<Integer>())); + +template <typename T, typename Unsigned> +using number_unsigned_function_t = + decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>())); + +template <typename T, typename Float, typename String> +using number_float_function_t = decltype(std::declval<T&>().number_float( + std::declval<Float>(), std::declval<const String&>())); + +template <typename T, typename String> +using string_function_t = + decltype(std::declval<T&>().string(std::declval<String&>())); + +template <typename T> +using start_object_function_t = + decltype(std::declval<T&>().start_object(std::declval<std::size_t>())); + +template <typename T, typename String> +using key_function_t = + decltype(std::declval<T&>().key(std::declval<String&>())); + +template <typename T> +using end_object_function_t = decltype(std::declval<T&>().end_object()); + +template <typename T> +using start_array_function_t = + decltype(std::declval<T&>().start_array(std::declval<std::size_t>())); + +template <typename T> +using end_array_function_t = decltype(std::declval<T&>().end_array()); + +template <typename T, typename Exception> +using parse_error_function_t = decltype(std::declval<T&>().parse_error( + std::declval<std::size_t>(), std::declval<const std::string&>(), + std::declval<const Exception&>())); + +template <typename SAX, typename BasicJsonType> +struct is_sax +{ + private: + static_assert(is_basic_json<BasicJsonType>::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using exception_t = typename BasicJsonType::exception; + + public: + static constexpr bool value = + is_detected_exact<bool, null_function_t, SAX>::value && + is_detected_exact<bool, boolean_function_t, SAX>::value && + is_detected_exact<bool, number_integer_function_t, SAX, + number_integer_t>::value && + is_detected_exact<bool, number_unsigned_function_t, SAX, + number_unsigned_t>::value && + is_detected_exact<bool, number_float_function_t, SAX, number_float_t, + string_t>::value && + is_detected_exact<bool, string_function_t, SAX, string_t>::value && + is_detected_exact<bool, start_object_function_t, SAX>::value && + is_detected_exact<bool, key_function_t, SAX, string_t>::value && + is_detected_exact<bool, end_object_function_t, SAX>::value && + is_detected_exact<bool, start_array_function_t, SAX>::value && + is_detected_exact<bool, end_array_function_t, SAX>::value && + is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value; +}; + +template <typename SAX, typename BasicJsonType> +struct is_sax_static_asserts +{ + private: + static_assert(is_basic_json<BasicJsonType>::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using exception_t = typename BasicJsonType::exception; + + public: + static_assert(is_detected_exact<bool, null_function_t, SAX>::value, + "Missing/invalid function: bool null()"); + static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert( + is_detected_exact<bool, number_integer_function_t, SAX, + number_integer_t>::value, + "Missing/invalid function: bool number_integer(number_integer_t)"); + static_assert( + is_detected_exact<bool, number_unsigned_function_t, SAX, + number_unsigned_t>::value, + "Missing/invalid function: bool number_unsigned(number_unsigned_t)"); + static_assert(is_detected_exact<bool, number_float_function_t, SAX, + number_float_t, string_t>::value, + "Missing/invalid function: bool number_float(number_float_t, const string_t&)"); + static_assert( + is_detected_exact<bool, string_function_t, SAX, string_t>::value, + "Missing/invalid function: bool string(string_t&)"); + static_assert(is_detected_exact<bool, start_object_function_t, SAX>::value, + "Missing/invalid function: bool start_object(std::size_t)"); + static_assert(is_detected_exact<bool, key_function_t, SAX, string_t>::value, + "Missing/invalid function: bool key(string_t&)"); + static_assert(is_detected_exact<bool, end_object_function_t, SAX>::value, + "Missing/invalid function: bool end_object()"); + static_assert(is_detected_exact<bool, start_array_function_t, SAX>::value, + "Missing/invalid function: bool start_array(std::size_t)"); + static_assert(is_detected_exact<bool, end_array_function_t, SAX>::value, + "Missing/invalid function: bool end_array()"); + static_assert( + is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value, + "Missing/invalid function: bool parse_error(std::size_t, const " + "std::string&, const exception&)"); +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR, MessagePack, and UBJSON values +*/ +template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>> +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using json_sax_t = SAX; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {}; + assert(ia); + } + + // make class move-only + binary_reader(const binary_reader&) = delete; + binary_reader(binary_reader&&) = default; + binary_reader& operator=(const binary_reader&) = delete; + binary_reader& operator=(binary_reader&&) = default; + ~binary_reader() = default; + + /*! + @param[in] format the binary format to parse + @param[in] sax_ a SAX event processor + @param[in] strict whether to expect the input to be consumed completed + + @return + */ + bool sax_parse(const input_format_t format, + json_sax_t* sax_, + const bool strict = true) + { + sax = sax_; + bool result = false; + + switch (format) + { + case input_format_t::bson: + result = parse_bson_internal(); + break; + + case input_format_t::cbor: + result = parse_cbor_internal(); + break; + + case input_format_t::msgpack: + result = parse_msgpack_internal(); + break; + + case input_format_t::ubjson: + result = parse_ubjson_internal(); + break; + + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + + // strict mode: next byte must be EOF + if (result and strict) + { + if (format == input_format_t::ubjson) + { + get_ignore_noop(); + } + else + { + get(); + } + + if (JSON_UNLIKELY(current != std::char_traits<char>::eof())) + { + return sax->parse_error(chars_read, get_token_string(), + parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value"))); + } + } + + return result; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return *reinterpret_cast<char*>(&num) == 1; + } + + private: + ////////// + // BSON // + ////////// + + /*! + @brief Reads in a BSON-object and passes it to the SAX-parser. + @return whether a valid BSON-value was passed to the SAX parser + */ + bool parse_bson_internal() + { + std::int32_t document_size; + get_number<std::int32_t, true>(input_format_t::bson, document_size); + + if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1)))) + { + return false; + } + + if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/false))) + { + return false; + } + + return sax->end_object(); + } + + /*! + @brief Parses a C-style string from the BSON input. + @param[in, out] result A reference to the string variable where the read + string is to be stored. + @return `true` if the \x00-byte indicating the end of the string was + encountered before the EOF; false` indicates an unexpected EOF. + */ + bool get_bson_cstr(string_t& result) + { + auto out = std::back_inserter(result); + while (true) + { + get(); + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring"))) + { + return false; + } + if (current == 0x00) + { + return true; + } + *out++ = static_cast<char>(current); + } + + return true; + } + + /*! + @brief Parses a zero-terminated string of length @a len from the BSON + input. + @param[in] len The length (including the zero-byte at the end) of the + string to be read. + @param[in, out] result A reference to the string variable where the read + string is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 1 + @return `true` if the string was successfully parsed + */ + template<typename NumberType> + bool get_bson_string(const NumberType len, string_t& result) + { + if (JSON_UNLIKELY(len < 1)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string"))); + } + + return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof(); + } + + /*! + @brief Read a BSON document element of the given @a element_type. + @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html + @param[in] element_type_parse_position The position in the input stream, + where the `element_type` was read. + @warning Not all BSON element types are supported yet. An unsupported + @a element_type will give rise to a parse_error.114: + Unsupported BSON record type 0x... + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_internal(const int element_type, + const std::size_t element_type_parse_position) + { + switch (element_type) + { + case 0x01: // double + { + double number; + return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 0x02: // string + { + std::int32_t len; + string_t value; + return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value); + } + + case 0x03: // object + { + return parse_bson_internal(); + } + + case 0x04: // array + { + return parse_bson_array(); + } + + case 0x08: // boolean + { + return sax->boolean(get() != 0); + } + + case 0x0A: // null + { + return sax->null(); + } + + case 0x10: // int32 + { + std::int32_t value; + return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value); + } + + case 0x12: // int64 + { + std::int64_t value; + return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value); + } + + default: // anything else not supported (yet) + { + std::array<char, 3> cr{{}}; + (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type)); + return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data()))); + } + } + } + + /*! + @brief Read a BSON element list (as specified in the BSON-spec) + + The same binary layout is used for objects and arrays, hence it must be + indicated with the argument @a is_array which one is expected + (true --> array, false --> object). + + @param[in] is_array Determines if the element list being read is to be + treated as an object (@a is_array == false), or as an + array (@a is_array == true). + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_list(const bool is_array) + { + string_t key; + while (int element_type = get()) + { + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list"))) + { + return false; + } + + const std::size_t element_type_parse_position = chars_read; + if (JSON_UNLIKELY(not get_bson_cstr(key))) + { + return false; + } + + if (not is_array and not sax->key(key)) + { + return false; + } + + if (JSON_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position))) + { + return false; + } + + // get_bson_cstr only appends + key.clear(); + } + + return true; + } + + /*! + @brief Reads an array from the BSON input and passes it to the SAX-parser. + @return whether a valid BSON-array was passed to the SAX parser + */ + bool parse_bson_array() + { + std::int32_t document_size; + get_number<std::int32_t, true>(input_format_t::bson, document_size); + + if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1)))) + { + return false; + } + + if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/true))) + { + return false; + } + + return sax->end_array(); + } + + ////////// + // CBOR // + ////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether a valid CBOR value was passed to the SAX parser + */ + bool parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits<char>::eof(): + return unexpect_eof(input_format_t::cbor, "value"); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return sax->number_unsigned(static_cast<number_unsigned_t>(current)); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + { + std::uint8_t number; + return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + } + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + { + std::uint16_t number; + return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + } + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + { + std::uint32_t number; + return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + } + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + { + std::uint64_t number; + return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + } + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current)); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + std::uint8_t number; + return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + std::uint16_t number; + return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + std::uint32_t number; + return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + std::uint64_t number; + return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) + - static_cast<number_integer_t>(number)); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + string_t s; + return get_cbor_string(s) and sax->string(s); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu)); + + case 0x98: // array (one-byte uint8_t for n follows) + { + std::uint8_t len; + return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len)); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + std::uint16_t len; + return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len)); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + std::uint32_t len; + return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len)); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + std::uint64_t len; + return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len)); + } + + case 0x9F: // array (indefinite length) + return get_cbor_array(std::size_t(-1)); + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu)); + + case 0xB8: // map (one-byte uint8_t for n follows) + { + std::uint8_t len; + return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len)); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + std::uint16_t len; + return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len)); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + std::uint32_t len; + return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len)); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + std::uint64_t len; + return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len)); + } + + case 0xBF: // map (indefinite length) + return get_cbor_object(std::size_t(-1)); + + case 0xF4: // false + return sax->boolean(false); + + case 0xF5: // true + return sax->boolean(true); + + case 0xF6: // null + return sax->null(); + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1_raw = get(); + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + const int byte2_raw = get(); + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + + const auto byte1 = static_cast<unsigned char>(byte1_raw); + const auto byte2 = static_cast<unsigned char>(byte2_raw); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2); + const double val = [&half] + { + const int exp = (half >> 10u) & 0x1Fu; + const unsigned int mant = half & 0x3FFu; + assert(0 <= exp and exp <= 32); + assert(0 <= mant and mant <= 1024); + switch (exp) + { + case 0: + return std::ldexp(mant, -24); + case 31: + return (mant == 0) + ? std::numeric_limits<double>::infinity() + : std::numeric_limits<double>::quiet_NaN(); + default: + return std::ldexp(mant + 1024, exp - 25); + } + }(); + return sax->number_float((half & 0x8000u) != 0 + ? static_cast<number_float_t>(-val) + : static_cast<number_float_t>(val), ""); + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + float number; + return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + double number; + return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + default: // anything else (0xFF is handled inside the other types) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"))); + } + } + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_cbor_string(string_t& result) + { + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string"))) + { + return false; + } + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + std::uint8_t len; + return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + std::uint16_t len; + return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + std::uint32_t len; + return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + std::uint64_t len; + return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + while (get() != 0xFF) + { + string_t chunk; + if (not get_cbor_string(chunk)) + { + return false; + } + result.append(chunk); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string"))); + } + } + } + + /*! + @param[in] len the length of the array or std::size_t(-1) for an + array of indefinite size + @return whether array creation completed + */ + bool get_cbor_array(const std::size_t len) + { + if (JSON_UNLIKELY(not sax->start_array(len))) + { + return false; + } + + if (len != std::size_t(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_UNLIKELY(not parse_cbor_internal())) + { + return false; + } + } + } + else + { + while (get() != 0xFF) + { + if (JSON_UNLIKELY(not parse_cbor_internal(false))) + { + return false; + } + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object or std::size_t(-1) for an + object of indefinite size + @return whether object creation completed + */ + bool get_cbor_object(const std::size_t len) + { + if (JSON_UNLIKELY(not sax->start_object(len))) + { + return false; + } + + string_t key; + if (len != std::size_t(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key))) + { + return false; + } + + if (JSON_UNLIKELY(not parse_cbor_internal())) + { + return false; + } + key.clear(); + } + } + else + { + while (get() != 0xFF) + { + if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key))) + { + return false; + } + + if (JSON_UNLIKELY(not parse_cbor_internal())) + { + return false; + } + key.clear(); + } + } + + return sax->end_object(); + } + + ///////////// + // MsgPack // + ///////////// + + /*! + @return whether a valid MessagePack value was passed to the SAX parser + */ + bool parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits<char>::eof(): + return unexpect_eof(input_format_t::msgpack, "value"); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return sax->number_unsigned(static_cast<number_unsigned_t>(current)); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu)); + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu)); + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + string_t s; + return get_msgpack_string(s) and sax->string(s); + } + + case 0xC0: // nil + return sax->null(); + + case 0xC2: // false + return sax->boolean(false); + + case 0xC3: // true + return sax->boolean(true); + + case 0xCA: // float 32 + { + float number; + return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 0xCB: // float 64 + { + double number; + return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 0xCC: // uint 8 + { + std::uint8_t number; + return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + } + + case 0xCD: // uint 16 + { + std::uint16_t number; + return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + } + + case 0xCE: // uint 32 + { + std::uint32_t number; + return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + } + + case 0xCF: // uint 64 + { + std::uint64_t number; + return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + } + + case 0xD0: // int 8 + { + std::int8_t number; + return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + } + + case 0xD1: // int 16 + { + std::int16_t number; + return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + } + + case 0xD2: // int 32 + { + std::int32_t number; + return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + } + + case 0xD3: // int 64 + { + std::int64_t number; + return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + } + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + { + string_t s; + return get_msgpack_string(s) and sax->string(s); + } + + case 0xDC: // array 16 + { + std::uint16_t len; + return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len)); + } + + case 0xDD: // array 32 + { + std::uint32_t len; + return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len)); + } + + case 0xDE: // map 16 + { + std::uint16_t len; + return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len)); + } + + case 0xDF: // map 32 + { + std::uint32_t len; + return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len)); + } + + // negative fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return sax->number_integer(static_cast<std::int8_t>(current)); + + default: // anything else + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value"))); + } + } + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_msgpack_string(string_t& result) + { + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string"))) + { + return false; + } + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result); + } + + case 0xD9: // str 8 + { + std::uint8_t len; + return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + } + + case 0xDA: // str 16 + { + std::uint16_t len; + return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + } + + case 0xDB: // str 32 + { + std::uint32_t len; + return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string"))); + } + } + } + + /*! + @param[in] len the length of the array + @return whether array creation completed + */ + bool get_msgpack_array(const std::size_t len) + { + if (JSON_UNLIKELY(not sax->start_array(len))) + { + return false; + } + + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_UNLIKELY(not parse_msgpack_internal())) + { + return false; + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object + @return whether object creation completed + */ + bool get_msgpack_object(const std::size_t len) + { + if (JSON_UNLIKELY(not sax->start_object(len))) + { + return false; + } + + string_t key; + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_UNLIKELY(not get_msgpack_string(key) or not sax->key(key))) + { + return false; + } + + if (JSON_UNLIKELY(not parse_msgpack_internal())) + { + return false; + } + key.clear(); + } + + return sax->end_object(); + } + + //////////// + // UBJSON // + //////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether a valid UBJSON value was passed to the SAX parser + */ + bool parse_ubjson_internal(const bool get_char = true) + { + return get_ubjson_value(get_char ? get_ignore_noop() : current); + } + + /*! + @brief reads a UBJSON string + + This function is either called after reading the 'S' byte explicitly + indicating a string, or in case of an object key where the 'S' byte can be + left out. + + @param[out] result created string + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether string creation completed + */ + bool get_ubjson_string(string_t& result, const bool get_char = true) + { + if (get_char) + { + get(); // TODO(niels): may we ignore N here? + } + + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value"))) + { + return false; + } + + switch (current) + { + case 'U': + { + std::uint8_t len; + return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + } + + case 'i': + { + std::int8_t len; + return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + } + + case 'I': + { + std::int16_t len; + return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + } + + case 'l': + { + std::int32_t len; + return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + } + + case 'L': + { + std::int64_t len; + return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + } + + default: + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string"))); + } + } + + /*! + @param[out] result determined size + @return whether size determination completed + */ + bool get_ubjson_size_value(std::size_t& result) + { + switch (get_ignore_noop()) + { + case 'U': + { + std::uint8_t number; + if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast<std::size_t>(number); + return true; + } + + case 'i': + { + std::int8_t number; + if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast<std::size_t>(number); + return true; + } + + case 'I': + { + std::int16_t number; + if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast<std::size_t>(number); + return true; + } + + case 'l': + { + std::int32_t number; + if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast<std::size_t>(number); + return true; + } + + case 'L': + { + std::int64_t number; + if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast<std::size_t>(number); + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size"))); + } + } + } + + /*! + @brief determine the type and size for a container + + In the optimized UBJSON format, a type and a size can be provided to allow + for a more compact representation. + + @param[out] result pair of the size and the type + + @return whether pair creation completed + */ + bool get_ubjson_size_type(std::pair<std::size_t, int>& result) + { + result.first = string_t::npos; // size + result.second = 0; // type + + get_ignore_noop(); + + if (current == '$') + { + result.second = get(); // must not ignore 'N', because 'N' maybe the type + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type"))) + { + return false; + } + + get_ignore_noop(); + if (JSON_UNLIKELY(current != '#')) + { + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value"))) + { + return false; + } + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size"))); + } + + return get_ubjson_size_value(result.first); + } + + if (current == '#') + { + return get_ubjson_size_value(result.first); + } + + return true; + } + + /*! + @param prefix the previously read or set type prefix + @return whether value creation completed + */ + bool get_ubjson_value(const int prefix) + { + switch (prefix) + { + case std::char_traits<char>::eof(): // EOF + return unexpect_eof(input_format_t::ubjson, "value"); + + case 'T': // true + return sax->boolean(true); + case 'F': // false + return sax->boolean(false); + + case 'Z': // null + return sax->null(); + + case 'U': + { + std::uint8_t number; + return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number); + } + + case 'i': + { + std::int8_t number; + return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + } + + case 'I': + { + std::int16_t number; + return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + } + + case 'l': + { + std::int32_t number; + return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + } + + case 'L': + { + std::int64_t number; + return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + } + + case 'd': + { + float number; + return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 'D': + { + double number; + return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), ""); + } + + case 'C': // char + { + get(); + if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char"))) + { + return false; + } + if (JSON_UNLIKELY(current > 127)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char"))); + } + string_t s(1, static_cast<char>(current)); + return sax->string(s); + } + + case 'S': // string + { + string_t s; + return get_ubjson_string(s) and sax->string(s); + } + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value"))); + } + } + } + + /*! + @return whether array creation completed + */ + bool get_ubjson_array() + { + std::pair<std::size_t, int> size_and_type; + if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type))) + { + return false; + } + + if (size_and_type.first != string_t::npos) + { + if (JSON_UNLIKELY(not sax->start_array(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second))) + { + return false; + } + } + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_UNLIKELY(not parse_ubjson_internal())) + { + return false; + } + } + } + } + else + { + if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1)))) + { + return false; + } + + while (current != ']') + { + if (JSON_UNLIKELY(not parse_ubjson_internal(false))) + { + return false; + } + get_ignore_noop(); + } + } + + return sax->end_array(); + } + + /*! + @return whether object creation completed + */ + bool get_ubjson_object() + { + std::pair<std::size_t, int> size_and_type; + if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type))) + { + return false; + } + + string_t key; + if (size_and_type.first != string_t::npos) + { + if (JSON_UNLIKELY(not sax->start_object(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) + { + return false; + } + if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second))) + { + return false; + } + key.clear(); + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) + { + return false; + } + if (JSON_UNLIKELY(not parse_ubjson_internal())) + { + return false; + } + key.clear(); + } + } + } + else + { + if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1)))) + { + return false; + } + + while (current != '}') + { + if (JSON_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key))) + { + return false; + } + if (JSON_UNLIKELY(not parse_ubjson_internal())) + { + return false; + } + get_ignore_noop(); + key.clear(); + } + } + + return sax->end_object(); + } + + /////////////////////// + // Utility functions // + /////////////////////// + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits<char>::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return current = ia->get_character(); + } + + /*! + @return character read from the input after ignoring all 'N' entries + */ + int get_ignore_noop() + { + do + { + get(); + } + while (current == 'N'); + + return current; + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[out] result number of type @a NumberType + + @return whether conversion completed + + @note This function needs to respect the system's endianess, because + bytes in CBOR, MessagePack, and UBJSON are stored in network order + (big endian) and therefore need reordering on little endian systems. + */ + template<typename NumberType, bool InputIsLittleEndian = false> + bool get_number(const input_format_t format, NumberType& result) + { + // step 1: read input into array with system's byte order + std::array<std::uint8_t, sizeof(NumberType)> vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + if (JSON_UNLIKELY(not unexpect_eof(format, "number"))) + { + return false; + } + + // reverse byte order prior to conversion if necessary + if (is_little_endian != InputIsLittleEndian) + { + vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current); + } + else + { + vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return true; + } + + /*! + @brief create a string by reading characters from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of characters to read + @param[out] result string created by reading @a len bytes + + @return whether string creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of string memory. + */ + template<typename NumberType> + bool get_string(const input_format_t format, + const NumberType len, + string_t& result) + { + bool success = true; + std::generate_n(std::back_inserter(result), len, [this, &success, &format]() + { + get(); + if (JSON_UNLIKELY(not unexpect_eof(format, "string"))) + { + success = false; + } + return static_cast<char>(current); + }); + return success; + } + + /*! + @param[in] format the current format (for diagnostics) + @param[in] context further context information (for diagnostics) + @return whether the last read character is not EOF + */ + bool unexpect_eof(const input_format_t format, const char* context) const + { + if (JSON_UNLIKELY(current == std::char_traits<char>::eof())) + { + return sax->parse_error(chars_read, "<end of file>", + parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context))); + } + return true; + } + + /*! + @return a string representation of the last read byte + */ + std::string get_token_string() const + { + std::array<char, 3> cr{{}}; + (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current)); + return std::string{cr.data()}; + } + + /*! + @param[in] format the current format + @param[in] detail a detailed error message + @param[in] context further contect information + @return a message string to use in the parse_error exceptions + */ + std::string exception_message(const input_format_t format, + const std::string& detail, + const std::string& context) const + { + std::string error_msg = "syntax error while parsing "; + + switch (format) + { + case input_format_t::cbor: + error_msg += "CBOR"; + break; + + case input_format_t::msgpack: + error_msg += "MessagePack"; + break; + + case input_format_t::ubjson: + error_msg += "UBJSON"; + break; + + case input_format_t::bson: + error_msg += "BSON"; + break; + + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + + return error_msg + " " + context + ": " + detail; + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits<char>::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); + + /// the SAX parser + json_sax_t* sax = nullptr; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/input/input_adapters.hpp> + +// #include <nlohmann/detail/input/lexer.hpp> + + +#include <array> // array +#include <clocale> // localeconv +#include <cstddef> // size_t +#include <cstdio> // snprintf +#include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull +#include <initializer_list> // initializer_list +#include <string> // char_traits, string +#include <utility> // move +#include <vector> // vector + +// #include <nlohmann/detail/input/input_adapters.hpp> + +// #include <nlohmann/detail/input/position_t.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template<typename BasicJsonType> +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return "<uninitialized>"; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return "<parse error>"; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + // LCOV_EXCL_START + default: // catch non-enum values + return "unknown token"; + // LCOV_EXCL_STOP + } + } + + explicit lexer(detail::input_adapter_t&& adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer(lexer&&) = delete; + lexer& operator=(lexer&) = delete; + lexer& operator=(lexer&&) = delete; + ~lexer() = default; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12u, 8u, 4u, 0u }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list<int> ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer token_buffer. Then the + function returns successfully, token_buffer is *not* null-terminated (as it + may contain \0 bytes), and token_buffer.size() is the number of bytes in the + string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset token_buffer (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits<char>::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = static_cast<int>( + // high surrogate occupies the most significant 22 bits + (static_cast<unsigned int>(codepoint1) << 10u) + // low surrogate occupies the least significant 15 bits + + static_cast<unsigned int>(codepoint2) + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00u); + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u))); + add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu))); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u))); + add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu))); + add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu))); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u))); + add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu))); + add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu))); + add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu))); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + { + error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000"; + return token_type::parse_error; + } + + case 0x01: + { + error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001"; + return token_type::parse_error; + } + + case 0x02: + { + error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002"; + return token_type::parse_error; + } + + case 0x03: + { + error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003"; + return token_type::parse_error; + } + + case 0x04: + { + error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004"; + return token_type::parse_error; + } + + case 0x05: + { + error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"; + return token_type::parse_error; + } + + case 0x06: + { + error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006"; + return token_type::parse_error; + } + + case 0x07: + { + error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007"; + return token_type::parse_error; + } + + case 0x08: + { + error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"; + return token_type::parse_error; + } + + case 0x09: + { + error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"; + return token_type::parse_error; + } + + case 0x0A: + { + error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"; + return token_type::parse_error; + } + + case 0x0B: + { + error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B"; + return token_type::parse_error; + } + + case 0x0C: + { + error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"; + return token_type::parse_error; + } + + case 0x0D: + { + error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"; + return token_type::parse_error; + } + + case 0x0E: + { + error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E"; + return token_type::parse_error; + } + + case 0x0F: + { + error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F"; + return token_type::parse_error; + } + + case 0x10: + { + error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010"; + return token_type::parse_error; + } + + case 0x11: + { + error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011"; + return token_type::parse_error; + } + + case 0x12: + { + error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012"; + return token_type::parse_error; + } + + case 0x13: + { + error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013"; + return token_type::parse_error; + } + + case 0x14: + { + error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014"; + return token_type::parse_error; + } + + case 0x15: + { + error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015"; + return token_type::parse_error; + } + + case 0x16: + { + error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016"; + return token_type::parse_error; + } + + case 0x17: + { + error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017"; + return token_type::parse_error; + } + + case 0x18: + { + error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018"; + return token_type::parse_error; + } + + case 0x19: + { + error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019"; + return token_type::parse_error; + } + + case 0x1A: + { + error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A"; + return token_type::parse_error; + } + + case 0x1B: + { + error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B"; + return token_type::parse_error; + } + + case 0x1C: + { + error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C"; + return token_type::parse_error; + } + + case 0x1D: + { + error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D"; + return token_type::parse_error; + } + + case 0x1E: + { + error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E"; + return token_type::parse_error; + } + + case 0x1F: + { + error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in token_buffer. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() // lgtm [cpp/use-of-goto] + { + // reset token_buffer to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + // all other characters are rejected outside scan_number() + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(token_buffer.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_unsigned = static_cast<number_unsigned_t>(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(token_buffer.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_integer = static_cast<number_integer_t>(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, token_buffer.data(), &endptr); + + // we checked the number format before + assert(endptr == token_buffer.data() + token_buffer.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset token_buffer; current character is beginning of token + void reset() noexcept + { + token_buffer.clear(); + token_string.clear(); + token_string.push_back(std::char_traits<char>::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits<char>::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits<char>::int_type get() + { + ++position.chars_read_total; + ++position.chars_read_current_line; + + if (next_unget) + { + // just reset the next_unget variable and work with current + next_unget = false; + } + else + { + current = ia->get_character(); + } + + if (JSON_LIKELY(current != std::char_traits<char>::eof())) + { + token_string.push_back(std::char_traits<char>::to_char_type(current)); + } + + if (current == '\n') + { + ++position.lines_read; + position.chars_read_current_line = 0; + } + + return current; + } + + /*! + @brief unget current character (read it again on next get) + + We implement unget by setting variable next_unget to true. The input is not + changed - we just simulate ungetting by modifying chars_read_total, + chars_read_current_line, and token_string. The next call to get() will + behave as if the unget character is read again. + */ + void unget() + { + next_unget = true; + + --position.chars_read_total; + + // in case we "unget" a newline, we have to also decrement the lines_read + if (position.chars_read_current_line == 0) + { + if (position.lines_read > 0) + { + --position.lines_read; + } + } + else + { + --position.chars_read_current_line; + } + + if (JSON_LIKELY(current != std::char_traits<char>::eof())) + { + assert(not token_string.empty()); + token_string.pop_back(); + } + } + + /// add a character to token_buffer + void add(int c) + { + token_buffer.push_back(std::char_traits<char>::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + string_t& get_string() + { + return token_buffer; + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr position_t get_position() const noexcept + { + return position; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::array<char, 9> cs{{}}; + (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c)); + result += cs.data(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + /*! + @brief skip the UTF-8 byte order mark + @return true iff there is no BOM or the correct BOM has been skipped + */ + bool skip_bom() + { + if (get() == 0xEF) + { + // check if we completely parse the BOM + return get() == 0xBB and get() == 0xBF; + } + + // the first character is not the beginning of the BOM; unget it to + // process is later + unget(); + return true; + } + + token_type scan() + { + // initially, skip the BOM + if (position.chars_read_total == 0 and not skip_bom()) + { + error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; + return token_type::parse_error; + } + + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits<char>::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits<char>::int_type current = std::char_traits<char>::eof(); + + /// whether the next get() call should just return current + bool next_unget = false; + + /// the start position of the current token + position_t position {}; + + /// raw input token string (for error messages) + std::vector<char> token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + string_t token_buffer {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/input/parser.hpp> + + +#include <cassert> // assert +#include <cmath> // isfinite +#include <cstdint> // uint8_t +#include <functional> // function +#include <string> // string +#include <utility> // move +#include <vector> // vector + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/input/input_adapters.hpp> + +// #include <nlohmann/detail/input/json_sax.hpp> + +// #include <nlohmann/detail/input/lexer.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/is_sax.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +//////////// +// parser // +//////////// + +/*! +@brief syntax analysis + +This class implements a recursive decent parser. +*/ +template<typename BasicJsonType> +class parser +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using lexer_t = lexer<BasicJsonType>; + using token_type = typename lexer_t::token_type; + + public: + enum class parse_event_t : uint8_t + { + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value + }; + + using parser_callback_t = + std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>; + + /// a parser reading from an input adapter + explicit parser(detail::input_adapter_t&& adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true) + : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_) + { + // read first token + get_token(); + } + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + if (callback) + { + json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions); + sax_parse_internal(&sdp); + result.assert_invariant(); + + // in strict mode, input must be completely read + if (strict and (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_of_input, "value"))); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + else + { + json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions); + sax_parse_internal(&sdp); + result.assert_invariant(); + + // in strict mode, input must be completely read + if (strict and (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_of_input, "value"))); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + } + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + json_sax_acceptor<BasicJsonType> sax_acceptor; + return sax_parse(&sax_acceptor, strict); + } + + template <typename SAX> + bool sax_parse(SAX* sax, const bool strict = true) + { + (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {}; + const bool result = sax_parse_internal(sax); + + // strict mode: next byte must be EOF + if (result and strict and (get_token() != token_type::end_of_input)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_of_input, "value"))); + } + + return result; + } + + private: + template <typename SAX> + bool sax_parse_internal(SAX* sax) + { + // stack to remember the hierarchy of structured values we are parsing + // true = array; false = object + std::vector<bool> states; + // value to avoid a goto (see comment where set to true) + bool skip_to_state_evaluation = false; + + while (true) + { + if (not skip_to_state_evaluation) + { + // invariant: get_token() was called before each iteration + switch (last_token) + { + case token_type::begin_object: + { + if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1)))) + { + return false; + } + + // closing } -> we are done + if (get_token() == token_type::end_object) + { + if (JSON_UNLIKELY(not sax->end_object())) + { + return false; + } + break; + } + + // parse key + if (JSON_UNLIKELY(last_token != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::value_string, "object key"))); + } + if (JSON_UNLIKELY(not sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::name_separator, "object separator"))); + } + + // remember we are now inside an object + states.push_back(false); + + // parse values + get_token(); + continue; + } + + case token_type::begin_array: + { + if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1)))) + { + return false; + } + + // closing ] -> we are done + if (get_token() == token_type::end_array) + { + if (JSON_UNLIKELY(not sax->end_array())) + { + return false; + } + break; + } + + // remember we are now inside an array + states.push_back(true); + + // parse values (no need to call get_token) + continue; + } + + case token_type::value_float: + { + const auto res = m_lexer.get_number_float(); + + if (JSON_UNLIKELY(not std::isfinite(res))) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'")); + } + + if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.get_string()))) + { + return false; + } + + break; + } + + case token_type::literal_false: + { + if (JSON_UNLIKELY(not sax->boolean(false))) + { + return false; + } + break; + } + + case token_type::literal_null: + { + if (JSON_UNLIKELY(not sax->null())) + { + return false; + } + break; + } + + case token_type::literal_true: + { + if (JSON_UNLIKELY(not sax->boolean(true))) + { + return false; + } + break; + } + + case token_type::value_integer: + { + if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer()))) + { + return false; + } + break; + } + + case token_type::value_string: + { + if (JSON_UNLIKELY(not sax->string(m_lexer.get_string()))) + { + return false; + } + break; + } + + case token_type::value_unsigned: + { + if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned()))) + { + return false; + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::uninitialized, "value"))); + } + + default: // the last token was unexpected + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::literal_or_value, "value"))); + } + } + } + else + { + skip_to_state_evaluation = false; + } + + // we reached this line after we successfully parsed a value + if (states.empty()) + { + // empty stack: we reached the end of the hierarchy: done + return true; + } + + if (states.back()) // array + { + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse a new value + get_token(); + continue; + } + + // closing ] + if (JSON_LIKELY(last_token == token_type::end_array)) + { + if (JSON_UNLIKELY(not sax->end_array())) + { + return false; + } + + // We are done with this array. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + assert(not states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_array, "array"))); + } + else // object + { + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse key + if (JSON_UNLIKELY(get_token() != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::value_string, "object key"))); + } + + if (JSON_UNLIKELY(not sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::name_separator, "object separator"))); + } + + // parse values + get_token(); + continue; + } + + // closing } + if (JSON_LIKELY(last_token == token_type::end_object)) + { + if (JSON_UNLIKELY(not sax->end_object())) + { + return false; + } + + // We are done with this object. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + assert(not states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_object, "object"))); + } + } + } + + /// get next token from lexer + token_type get_token() + { + return last_token = m_lexer.scan(); + } + + std::string exception_message(const token_type expected, const std::string& context) + { + std::string error_msg = "syntax error "; + + if (not context.empty()) + { + error_msg += "while parsing " + context + " "; + } + + error_msg += "- "; + + if (last_token == token_type::parse_error) + { + error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + + m_lexer.get_token_string() + "'"; + } + else + { + error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); + } + + return error_msg; + } + + private: + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/iterators/internal_iterator.hpp> + + +// #include <nlohmann/detail/iterators/primitive_iterator.hpp> + + +#include <cstddef> // ptrdiff_t +#include <limits> // numeric_limits + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + private: + using difference_type = std::ptrdiff_t; + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)(); + + public: + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type n) noexcept + { + auto result = *this; + result += n; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + primitive_iterator_t& operator++() noexcept + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) noexcept + { + auto result = *this; + ++m_it; + return result; + } + + primitive_iterator_t& operator--() noexcept + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) noexcept + { + auto result = *this; + --m_it; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) noexcept + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) noexcept + { + m_it -= n; + return *this; + } +}; +} // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template<typename BasicJsonType> struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/iterators/iter_impl.hpp> + + +#include <ciso646> // not +#include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include <type_traits> // conditional, is_const, remove_const + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/iterators/internal_iterator.hpp> + +// #include <nlohmann/detail/iterators/primitive_iterator.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/cpp_future.hpp> + +// #include <nlohmann/detail/meta/type_traits.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +// forward declare, to be able to friend it later on +template<typename IteratorType> class iteration_proxy; +template<typename IteratorType> class iteration_proxy_value; + +/*! +@brief a template for a bidirectional iterator for the @ref basic_json class +This class implements a both iterators (iterator and const_iterator) for the +@ref basic_json class. +@note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +@since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) +*/ +template<typename BasicJsonType> +class iter_impl +{ + /// allow basic_json to access private members + friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>; + friend BasicJsonType; + friend iteration_proxy<iter_impl>; + friend iteration_proxy_value<iter_impl>; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value, + "iter_impl only accepts (const) basic_json"); + + public: + + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional<std::is_const<BasicJsonType>::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional<std::is_const<BasicJsonType>::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + /// default constructor + iter_impl() = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) {} + + /*! + @brief converting assignment + @param[in,out] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + const typename object_t::key_type& key() const + { + assert(m_object != nullptr); + + if (JSON_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {}; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/iterators/iteration_proxy.hpp> + +// #include <nlohmann/detail/iterators/json_reverse_iterator.hpp> + + +#include <cstddef> // ptrdiff_t +#include <iterator> // reverse_iterator +#include <utility> // declval + +namespace nlohmann +{ +namespace detail +{ +////////////////////// +// reverse_iterator // +////////////////////// + +/*! +@brief a template for a reverse iterator class + +@tparam Base the base iterator type to reverse. Valid types are @ref +iterator (to create @ref reverse_iterator) and @ref const_iterator (to +create @ref const_reverse_iterator). + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + +@since version 1.0.0 +*/ +template<typename Base> +class json_reverse_iterator : public std::reverse_iterator<Base> +{ + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator<Base>; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator const operator++(int) + { + return static_cast<json_reverse_iterator>(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast<json_reverse_iterator&>(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator const operator--(int) + { + return static_cast<json_reverse_iterator>(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast<json_reverse_iterator&>(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast<json_reverse_iterator>(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast<json_reverse_iterator>(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval<Base>().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/iterators/primitive_iterator.hpp> + +// #include <nlohmann/detail/json_pointer.hpp> + + +#include <algorithm> // all_of +#include <cassert> // assert +#include <numeric> // accumulate +#include <string> // string +#include <utility> // move +#include <vector> // vector + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +template<typename BasicJsonType> +class json_pointer +{ + // allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + public: + /*! + @brief create JSON pointer + + Create a JSON pointer according to the syntax described in + [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). + + @param[in] s string representing the JSON pointer; if omitted, the empty + string is assumed which references the whole JSON value + + @throw parse_error.107 if the given JSON pointer @a s is nonempty and does + not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is + not followed by `0` (representing `~`) or `1` (representing `/`); see + example below + + @liveexample{The example shows the construction several valid JSON pointers + as well as the exceptional behavior.,json_pointer} + + @since version 2.0.0 + */ + explicit json_pointer(const std::string& s = "") + : reference_tokens(split(s)) + {} + + /*! + @brief return a string representation of the JSON pointer + + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode + + @return a string representation of the JSON pointer + + @liveexample{The example shows the result of `to_string`.,json_pointer__to_string} + + @since version 2.0.0 + */ + std::string to_string() const + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } + + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } + + /*! + @brief append another JSON pointer at the end of this JSON pointer + + @param[in] ptr JSON pointer to append + @return JSON pointer with @a ptr appended + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Linear in the length of @a ptr. + + @sa @ref operator/=(std::string) to append a reference token + @sa @ref operator/=(std::size_t) to append an array index + @sa @ref operator/(const json_pointer&, const json_pointer&) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(const json_pointer& ptr) + { + reference_tokens.insert(reference_tokens.end(), + ptr.reference_tokens.begin(), + ptr.reference_tokens.end()); + return *this; + } + + /*! + @brief append an unescaped reference token at the end of this JSON pointer + + @param[in] token reference token to append + @return JSON pointer with @a token appended without escaping @a token + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Amortized constant. + + @sa @ref operator/=(const json_pointer&) to append a JSON pointer + @sa @ref operator/=(std::size_t) to append an array index + @sa @ref operator/(const json_pointer&, std::size_t) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(std::string token) + { + push_back(std::move(token)); + return *this; + } + + /*! + @brief append an array index at the end of this JSON pointer + + @param[in] array_index array index ot append + @return JSON pointer with @a array_index appended + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Amortized constant. + + @sa @ref operator/=(const json_pointer&) to append a JSON pointer + @sa @ref operator/=(std::string) to append a reference token + @sa @ref operator/(const json_pointer&, std::string) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(std::size_t array_index) + { + return *this /= std::to_string(array_index); + } + + /*! + @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer + + @param[in] lhs JSON pointer + @param[in] rhs JSON pointer + @return a new JSON pointer with @a rhs appended to @a lhs + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a lhs and @a rhs. + + @sa @ref operator/=(const json_pointer&) to append a JSON pointer + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& lhs, + const json_pointer& rhs) + { + return json_pointer(lhs) /= rhs; + } + + /*! + @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer + + @param[in] ptr JSON pointer + @param[in] token reference token + @return a new JSON pointer with unescaped @a token appended to @a ptr + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a ptr. + + @sa @ref operator/=(std::string) to append a reference token + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& ptr, std::string token) + { + return json_pointer(ptr) /= std::move(token); + } + + /*! + @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer + + @param[in] ptr JSON pointer + @param[in] array_index array index + @return a new JSON pointer with @a array_index appended to @a ptr + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a ptr. + + @sa @ref operator/=(std::size_t) to append an array index + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index) + { + return json_pointer(ptr) /= array_index; + } + + /*! + @brief returns the parent of this JSON pointer + + @return parent of this JSON pointer; in case this JSON pointer is the root, + the root itself is returned + + @complexity Linear in the length of the JSON pointer. + + @liveexample{The example shows the result of `parent_pointer` for different + JSON Pointers.,json_pointer__parent_pointer} + + @since version 3.6.0 + */ + json_pointer parent_pointer() const + { + if (empty()) + { + return *this; + } + + json_pointer res = *this; + res.pop_back(); + return res; + } + + /*! + @brief remove last reference token + + @pre not `empty()` + + @liveexample{The example shows the usage of `pop_back`.,json_pointer__pop_back} + + @complexity Constant. + + @throw out_of_range.405 if JSON pointer has no parent + + @since version 3.6.0 + */ + void pop_back() + { + if (JSON_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + reference_tokens.pop_back(); + } + + /*! + @brief return last reference token + + @pre not `empty()` + @return last reference token + + @liveexample{The example shows the usage of `back`.,json_pointer__back} + + @complexity Constant. + + @throw out_of_range.405 if JSON pointer has no parent + + @since version 3.6.0 + */ + const std::string& back() + { + if (JSON_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + return reference_tokens.back(); + } + + /*! + @brief append an unescaped token at the end of the reference pointer + + @param[in] token token to add + + @complexity Amortized constant. + + @liveexample{The example shows the result of `push_back` for different + JSON Pointers.,json_pointer__push_back} + + @since version 3.6.0 + */ + void push_back(const std::string& token) + { + reference_tokens.push_back(token); + } + + /// @copydoc push_back(const std::string&) + void push_back(std::string&& token) + { + reference_tokens.push_back(std::move(token)); + } + + /*! + @brief return whether pointer points to the root document + + @return true iff the JSON pointer points to the root document + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example shows the result of `empty` for different JSON + Pointers.,json_pointer__empty} + + @since version 3.6.0 + */ + bool empty() const noexcept + { + return reference_tokens.empty(); + } + + private: + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw out_of_range.404 if string @a s could not be converted to an integer + */ + static int array_index(const std::string& s) + { + std::size_t processed_chars = 0; + const int res = std::stoi(s, &processed_chars); + + // check if the string was completely read + if (JSON_UNLIKELY(processed_chars != s.size())) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); + } + + return res; + } + + json_pointer top() const + { + if (JSON_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } + + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + BasicJsonType& get_and_create(BasicJsonType& j) const + { + using size_type = typename BasicJsonType::size_type; + auto result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + JSON_TRY + { + result = &result->operator[](static_cast<size_type>(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_unchecked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == detail::value_t::null) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const char x) + { + return x >= '0' and x <= '9'; + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums or reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast<size_type>(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_checked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast<size_type>(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // use unchecked array access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast<size_type>(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_checked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast<size_type>(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector<std::string> split(const std::string& reference_string) + { + std::vector<std::string> result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, + "JSON pointer must be empty or begin with '/' - was: '" + + reference_string + "'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == 0 (if slash == std::string::npos) + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = (slash == std::string::npos) ? 0 : slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_UNLIKELY(pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, const std::string& f, + const std::string& t) + { + assert(not f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} + } + + /// escape "~" to "~0" and "/" to "~1" + static std::string escape(std::string s) + { + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape "~1" to tilde and "~0" to slash (order is important!) + static void unescape(std::string& s) + { + replace_substring(s, "~1", "/"); + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const BasicJsonType& value, + BasicJsonType& result) + { + switch (value.m_type) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + static BasicJsonType + unflatten(const BasicJsonType& value) + { + if (JSON_UNLIKELY(not value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); + } + + BasicJsonType result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_UNLIKELY(not element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + /*! + @brief compares two JSON pointers for equality + + @param[in] lhs JSON pointer to compare + @param[in] rhs JSON pointer to compare + @return whether @a lhs is equal to @a rhs + + @complexity Linear in the length of the JSON pointer + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + */ + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } + + /*! + @brief compares two JSON pointers for inequality + + @param[in] lhs JSON pointer to compare + @param[in] rhs JSON pointer to compare + @return whether @a lhs is not equal @a rhs + + @complexity Linear in the length of the JSON pointer + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + */ + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return not (lhs == rhs); + } + + /// the reference tokens + std::vector<std::string> reference_tokens; +}; +} // namespace nlohmann + +// #include <nlohmann/detail/json_ref.hpp> + + +#include <initializer_list> +#include <utility> + +// #include <nlohmann/detail/meta/type_traits.hpp> + + +namespace nlohmann +{ +namespace detail +{ +template<typename BasicJsonType> +class json_ref +{ + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) + {} + + json_ref(const value_type& value) + : value_ref(const_cast<value_type*>(&value)), is_rvalue(false) + {} + + json_ref(std::initializer_list<json_ref> init) + : owned_value(init), value_ref(&owned_value), is_rvalue(true) + {} + + template < + class... Args, + enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 > + json_ref(Args && ... args) + : owned_value(std::forward<Args>(args)...), value_ref(&owned_value), + is_rvalue(true) {} + + // class should be movable only + json_ref(json_ref&&) = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + json_ref& operator=(json_ref&&) = delete; + ~json_ref() = default; + + value_type moved_or_copied() const + { + if (is_rvalue) + { + return std::move(*value_ref); + } + return *value_ref; + } + + value_type const& operator*() const + { + return *static_cast<value_type const*>(value_ref); + } + + value_type const* operator->() const + { + return static_cast<value_type const*>(value_ref); + } + + private: + mutable value_type owned_value = nullptr; + value_type* value_ref = nullptr; + const bool is_rvalue; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/cpp_future.hpp> + +// #include <nlohmann/detail/meta/type_traits.hpp> + +// #include <nlohmann/detail/output/binary_writer.hpp> + + +#include <algorithm> // reverse +#include <array> // array +#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t +#include <cstring> // memcpy +#include <limits> // numeric_limits +#include <string> // string + +// #include <nlohmann/detail/input/binary_reader.hpp> + +// #include <nlohmann/detail/output/output_adapters.hpp> + + +#include <algorithm> // copy +#include <cstddef> // size_t +#include <ios> // streamsize +#include <iterator> // back_inserter +#include <memory> // shared_ptr, make_shared +#include <ostream> // basic_ostream +#include <string> // basic_string +#include <vector> // vector + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template<typename CharType> struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template<typename CharType> +using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>; + +/// output adapter for byte vectors +template<typename CharType> +class output_vector_adapter : public output_adapter_protocol<CharType> +{ + public: + explicit output_vector_adapter(std::vector<CharType>& vec) noexcept + : v(vec) + {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector<CharType>& v; +}; + +/// output adapter for output streams +template<typename CharType> +class output_stream_adapter : public output_adapter_protocol<CharType> +{ + public: + explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept + : stream(s) + {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast<std::streamsize>(length)); + } + + private: + std::basic_ostream<CharType>& stream; +}; + +/// output adapter for basic_string +template<typename CharType, typename StringType = std::basic_string<CharType>> +class output_string_adapter : public output_adapter_protocol<CharType> +{ + public: + explicit output_string_adapter(StringType& s) noexcept + : str(s) + {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + StringType& str; +}; + +template<typename CharType, typename StringType = std::basic_string<CharType>> +class output_adapter +{ + public: + output_adapter(std::vector<CharType>& vec) + : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {} + + output_adapter(std::basic_ostream<CharType>& s) + : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {} + + output_adapter(StringType& s) + : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {} + + operator output_adapter_t<CharType>() + { + return oa; + } + + private: + output_adapter_t<CharType> oa = nullptr; +}; +} // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary writer // +/////////////////// + +/*! +@brief serialization to CBOR and MessagePack values +*/ +template<typename BasicJsonType, typename CharType> +class binary_writer +{ + using string_t = typename BasicJsonType::string_t; + + public: + /*! + @brief create a binary writer + + @param[in] adapter output adapter to write to + */ + explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter) + { + assert(oa); + } + + /*! + @param[in] j JSON value to serialize + @pre j.type() == value_t::object + */ + void write_bson(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::object: + { + write_bson_object(*j.m_value.object); + break; + } + + default: + { + JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name()))); + } + } + } + + /*! + @param[in] j JSON value to serialize + */ + void write_cbor(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(to_char_type(0xF6)); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? to_char_type(0xF5) + : to_char_type(0xF4)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // CBOR does not differentiate between positive signed + // integers and unsigned integers. Therefore, we used the + // code from the value_t::number_unsigned case here. + if (j.m_value.number_integer <= 0x17) + { + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0x18)); + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0x19)); + write_number(static_cast<std::uint16_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0x1A)); + write_number(static_cast<std::uint32_t>(j.m_value.number_integer)); + } + else + { + oa->write_character(to_char_type(0x1B)); + write_number(static_cast<std::uint64_t>(j.m_value.number_integer)); + } + } + else + { + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. + const auto positive_number = -1 - j.m_value.number_integer; + if (j.m_value.number_integer >= -24) + { + write_number(static_cast<std::uint8_t>(0x20 + positive_number)); + } + else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0x38)); + write_number(static_cast<std::uint8_t>(positive_number)); + } + else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0x39)); + write_number(static_cast<std::uint16_t>(positive_number)); + } + else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0x3A)); + write_number(static_cast<std::uint32_t>(positive_number)); + } + else + { + oa->write_character(to_char_type(0x3B)); + write_number(static_cast<std::uint64_t>(positive_number)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= 0x17) + { + write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0x18)); + write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0x19)); + write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0x1A)); + write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned)); + } + else + { + oa->write_character(to_char_type(0x1B)); + write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned)); + } + break; + } + + case value_t::number_float: + { + oa->write_character(get_cbor_float_prefix(j.m_value.number_float)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 0x17) + { + write_number(static_cast<std::uint8_t>(0x60 + N)); + } + else if (N <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0x78)); + write_number(static_cast<std::uint8_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0x79)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0x7A)); + write_number(static_cast<std::uint32_t>(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits<std::uint64_t>::max)()) + { + oa->write_character(to_char_type(0x7B)); + write_number(static_cast<std::uint64_t>(N)); + } + // LCOV_EXCL_STOP + + // step 2: write the string + oa->write_characters( + reinterpret_cast<const CharType*>(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 0x17) + { + write_number(static_cast<std::uint8_t>(0x80 + N)); + } + else if (N <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0x98)); + write_number(static_cast<std::uint8_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0x99)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0x9A)); + write_number(static_cast<std::uint32_t>(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits<std::uint64_t>::max)()) + { + oa->write_character(to_char_type(0x9B)); + write_number(static_cast<std::uint64_t>(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_cbor(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 0x17) + { + write_number(static_cast<std::uint8_t>(0xA0 + N)); + } + else if (N <= (std::numeric_limits<std::uint8_t>::max)()) + { + oa->write_character(to_char_type(0xB8)); + write_number(static_cast<std::uint8_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + oa->write_character(to_char_type(0xB9)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + oa->write_character(to_char_type(0xBA)); + write_number(static_cast<std::uint32_t>(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits<std::uint64_t>::max)()) + { + oa->write_character(to_char_type(0xBB)); + write_number(static_cast<std::uint64_t>(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_cbor(el.first); + write_cbor(el.second); + } + break; + } + + default: + break; + } + } + + /*! + @param[in] j JSON value to serialize + */ + void write_msgpack(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: // nil + { + oa->write_character(to_char_type(0xC0)); + break; + } + + case value_t::boolean: // true and false + { + oa->write_character(j.m_value.boolean + ? to_char_type(0xC3) + : to_char_type(0xC2)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // MessagePack does not differentiate between positive + // signed integers and unsigned integers. Therefore, we used + // the code from the value_t::number_unsigned case here. + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)()) + { + // uint 8 + oa->write_character(to_char_type(0xCC)); + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)()) + { + // uint 16 + oa->write_character(to_char_type(0xCD)); + write_number(static_cast<std::uint16_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)()) + { + // uint 32 + oa->write_character(to_char_type(0xCE)); + write_number(static_cast<std::uint32_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)()) + { + // uint 64 + oa->write_character(to_char_type(0xCF)); + write_number(static_cast<std::uint64_t>(j.m_value.number_integer)); + } + } + else + { + if (j.m_value.number_integer >= -32) + { + // negative fixnum + write_number(static_cast<std::int8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and + j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)()) + { + // int 8 + oa->write_character(to_char_type(0xD0)); + write_number(static_cast<std::int8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and + j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)()) + { + // int 16 + oa->write_character(to_char_type(0xD1)); + write_number(static_cast<std::int16_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and + j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)()) + { + // int 32 + oa->write_character(to_char_type(0xD2)); + write_number(static_cast<std::int32_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and + j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)()) + { + // int 64 + oa->write_character(to_char_type(0xD3)); + write_number(static_cast<std::int64_t>(j.m_value.number_integer)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)()) + { + // uint 8 + oa->write_character(to_char_type(0xCC)); + write_number(static_cast<std::uint8_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)()) + { + // uint 16 + oa->write_character(to_char_type(0xCD)); + write_number(static_cast<std::uint16_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)()) + { + // uint 32 + oa->write_character(to_char_type(0xCE)); + write_number(static_cast<std::uint32_t>(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)()) + { + // uint 64 + oa->write_character(to_char_type(0xCF)); + write_number(static_cast<std::uint64_t>(j.m_value.number_integer)); + } + break; + } + + case value_t::number_float: + { + oa->write_character(get_msgpack_float_prefix(j.m_value.number_float)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 31) + { + // fixstr + write_number(static_cast<std::uint8_t>(0xA0 | N)); + } + else if (N <= (std::numeric_limits<std::uint8_t>::max)()) + { + // str 8 + oa->write_character(to_char_type(0xD9)); + write_number(static_cast<std::uint8_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + // str 16 + oa->write_character(to_char_type(0xDA)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + // str 32 + oa->write_character(to_char_type(0xDB)); + write_number(static_cast<std::uint32_t>(N)); + } + + // step 2: write the string + oa->write_characters( + reinterpret_cast<const CharType*>(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 15) + { + // fixarray + write_number(static_cast<std::uint8_t>(0x90 | N)); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + // array 16 + oa->write_character(to_char_type(0xDC)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + // array 32 + oa->write_character(to_char_type(0xDD)); + write_number(static_cast<std::uint32_t>(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_msgpack(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 15) + { + // fixmap + write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF))); + } + else if (N <= (std::numeric_limits<std::uint16_t>::max)()) + { + // map 16 + oa->write_character(to_char_type(0xDE)); + write_number(static_cast<std::uint16_t>(N)); + } + else if (N <= (std::numeric_limits<std::uint32_t>::max)()) + { + // map 32 + oa->write_character(to_char_type(0xDF)); + write_number(static_cast<std::uint32_t>(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_msgpack(el.first); + write_msgpack(el.second); + } + break; + } + + default: + break; + } + } + + /*! + @param[in] j JSON value to serialize + @param[in] use_count whether to use '#' prefixes (optimized format) + @param[in] use_type whether to use '$' prefixes (optimized format) + @param[in] add_prefix whether prefixes need to be used for this value + */ + void write_ubjson(const BasicJsonType& j, const bool use_count, + const bool use_type, const bool add_prefix = true) + { + switch (j.type()) + { + case value_t::null: + { + if (add_prefix) + { + oa->write_character(to_char_type('Z')); + } + break; + } + + case value_t::boolean: + { + if (add_prefix) + { + oa->write_character(j.m_value.boolean + ? to_char_type('T') + : to_char_type('F')); + } + break; + } + + case value_t::number_integer: + { + write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); + break; + } + + case value_t::number_unsigned: + { + write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); + break; + } + + case value_t::number_float: + { + write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); + break; + } + + case value_t::string: + { + if (add_prefix) + { + oa->write_character(to_char_type('S')); + } + write_number_with_ubjson_prefix(j.m_value.string->size(), true); + oa->write_characters( + reinterpret_cast<const CharType*>(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + if (add_prefix) + { + oa->write_character(to_char_type('[')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.array->empty()) + { + assert(use_count); + const CharType first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin() + 1, j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(to_char_type('$')); + oa->write_character(first_prefix); + } + } + + if (use_count) + { + oa->write_character(to_char_type('#')); + write_number_with_ubjson_prefix(j.m_value.array->size(), true); + } + + for (const auto& el : *j.m_value.array) + { + write_ubjson(el, use_count, use_type, prefix_required); + } + + if (not use_count) + { + oa->write_character(to_char_type(']')); + } + + break; + } + + case value_t::object: + { + if (add_prefix) + { + oa->write_character(to_char_type('{')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.object->empty()) + { + assert(use_count); + const CharType first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin(), j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(to_char_type('$')); + oa->write_character(first_prefix); + } + } + + if (use_count) + { + oa->write_character(to_char_type('#')); + write_number_with_ubjson_prefix(j.m_value.object->size(), true); + } + + for (const auto& el : *j.m_value.object) + { + write_number_with_ubjson_prefix(el.first.size(), true); + oa->write_characters( + reinterpret_cast<const CharType*>(el.first.c_str()), + el.first.size()); + write_ubjson(el.second, use_count, use_type, prefix_required); + } + + if (not use_count) + { + oa->write_character(to_char_type('}')); + } + + break; + } + + default: + break; + } + } + + private: + ////////// + // BSON // + ////////// + + /*! + @return The size of a BSON document entry header, including the id marker + and the entry name size (and its null-terminator). + */ + static std::size_t calc_bson_entry_header_size(const string_t& name) + { + const auto it = name.find(static_cast<typename string_t::value_type>(0)); + if (JSON_UNLIKELY(it != BasicJsonType::string_t::npos)) + { + JSON_THROW(out_of_range::create(409, + "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")")); + } + + return /*id*/ 1ul + name.size() + /*zero-terminator*/1u; + } + + /*! + @brief Writes the given @a element_type and @a name to the output adapter + */ + void write_bson_entry_header(const string_t& name, + const std::uint8_t element_type) + { + oa->write_character(to_char_type(element_type)); // boolean + oa->write_characters( + reinterpret_cast<const CharType*>(name.c_str()), + name.size() + 1u); + } + + /*! + @brief Writes a BSON element with key @a name and boolean value @a value + */ + void write_bson_boolean(const string_t& name, + const bool value) + { + write_bson_entry_header(name, 0x08); + oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00)); + } + + /*! + @brief Writes a BSON element with key @a name and double value @a value + */ + void write_bson_double(const string_t& name, + const double value) + { + write_bson_entry_header(name, 0x01); + write_number<double, true>(value); + } + + /*! + @return The size of the BSON-encoded string in @a value + */ + static std::size_t calc_bson_string_size(const string_t& value) + { + return sizeof(std::int32_t) + value.size() + 1ul; + } + + /*! + @brief Writes a BSON element with key @a name and string value @a value + */ + void write_bson_string(const string_t& name, + const string_t& value) + { + write_bson_entry_header(name, 0x02); + + write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul)); + oa->write_characters( + reinterpret_cast<const CharType*>(value.c_str()), + value.size() + 1); + } + + /*! + @brief Writes a BSON element with key @a name and null value + */ + void write_bson_null(const string_t& name) + { + write_bson_entry_header(name, 0x0A); + } + + /*! + @return The size of the BSON-encoded integer @a value + */ + static std::size_t calc_bson_integer_size(const std::int64_t value) + { + return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)() + ? sizeof(std::int32_t) + : sizeof(std::int64_t); + } + + /*! + @brief Writes a BSON element with key @a name and integer @a value + */ + void write_bson_integer(const string_t& name, + const std::int64_t value) + { + if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()) + { + write_bson_entry_header(name, 0x10); // int32 + write_number<std::int32_t, true>(static_cast<std::int32_t>(value)); + } + else + { + write_bson_entry_header(name, 0x12); // int64 + write_number<std::int64_t, true>(static_cast<std::int64_t>(value)); + } + } + + /*! + @return The size of the BSON-encoded unsigned integer in @a j + */ + static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept + { + return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)())) + ? sizeof(std::int32_t) + : sizeof(std::int64_t); + } + + /*! + @brief Writes a BSON element with key @a name and unsigned @a value + */ + void write_bson_unsigned(const string_t& name, + const std::uint64_t value) + { + if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)())) + { + write_bson_entry_header(name, 0x10 /* int32 */); + write_number<std::int32_t, true>(static_cast<std::int32_t>(value)); + } + else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)())) + { + write_bson_entry_header(name, 0x12 /* int64 */); + write_number<std::int64_t, true>(static_cast<std::int64_t>(value)); + } + else + { + JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64")); + } + } + + /*! + @brief Writes a BSON element with key @a name and object @a value + */ + void write_bson_object_entry(const string_t& name, + const typename BasicJsonType::object_t& value) + { + write_bson_entry_header(name, 0x03); // object + write_bson_object(value); + } + + /*! + @return The size of the BSON-encoded array @a value + */ + static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value) + { + std::size_t embedded_document_size = 0ul; + std::size_t array_index = 0ul; + + for (const auto& el : value) + { + embedded_document_size += calc_bson_element_size(std::to_string(array_index++), el); + } + + return sizeof(std::int32_t) + embedded_document_size + 1ul; + } + + /*! + @brief Writes a BSON element with key @a name and array @a value + */ + void write_bson_array(const string_t& name, + const typename BasicJsonType::array_t& value) + { + write_bson_entry_header(name, 0x04); // array + write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value))); + + std::size_t array_index = 0ul; + + for (const auto& el : value) + { + write_bson_element(std::to_string(array_index++), el); + } + + oa->write_character(to_char_type(0x00)); + } + + /*! + @brief Calculates the size necessary to serialize the JSON value @a j with its @a name + @return The calculated size for the BSON document entry for @a j with the given @a name. + */ + static std::size_t calc_bson_element_size(const string_t& name, + const BasicJsonType& j) + { + const auto header_size = calc_bson_entry_header_size(name); + switch (j.type()) + { + case value_t::object: + return header_size + calc_bson_object_size(*j.m_value.object); + + case value_t::array: + return header_size + calc_bson_array_size(*j.m_value.array); + + case value_t::boolean: + return header_size + 1ul; + + case value_t::number_float: + return header_size + 8ul; + + case value_t::number_integer: + return header_size + calc_bson_integer_size(j.m_value.number_integer); + + case value_t::number_unsigned: + return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned); + + case value_t::string: + return header_size + calc_bson_string_size(*j.m_value.string); + + case value_t::null: + return header_size + 0ul; + + // LCOV_EXCL_START + default: + assert(false); + return 0ul; + // LCOV_EXCL_STOP + } + } + + /*! + @brief Serializes the JSON value @a j to BSON and associates it with the + key @a name. + @param name The name to associate with the JSON entity @a j within the + current BSON document + @return The size of the BSON entry + */ + void write_bson_element(const string_t& name, + const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::object: + return write_bson_object_entry(name, *j.m_value.object); + + case value_t::array: + return write_bson_array(name, *j.m_value.array); + + case value_t::boolean: + return write_bson_boolean(name, j.m_value.boolean); + + case value_t::number_float: + return write_bson_double(name, j.m_value.number_float); + + case value_t::number_integer: + return write_bson_integer(name, j.m_value.number_integer); + + case value_t::number_unsigned: + return write_bson_unsigned(name, j.m_value.number_unsigned); + + case value_t::string: + return write_bson_string(name, *j.m_value.string); + + case value_t::null: + return write_bson_null(name); + + // LCOV_EXCL_START + default: + assert(false); + return; + // LCOV_EXCL_STOP + } + } + + /*! + @brief Calculates the size of the BSON serialization of the given + JSON-object @a j. + @param[in] j JSON value to serialize + @pre j.type() == value_t::object + */ + static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value) + { + std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul, + [](size_t result, const typename BasicJsonType::object_t::value_type & el) + { + return result += calc_bson_element_size(el.first, el.second); + }); + + return sizeof(std::int32_t) + document_size + 1ul; + } + + /*! + @param[in] j JSON value to serialize + @pre j.type() == value_t::object + */ + void write_bson_object(const typename BasicJsonType::object_t& value) + { + write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value))); + + for (const auto& el : value) + { + write_bson_element(el.first, el.second); + } + + oa->write_character(to_char_type(0x00)); + } + + ////////// + // CBOR // + ////////// + + static constexpr CharType get_cbor_float_prefix(float /*unused*/) + { + return to_char_type(0xFA); // Single-Precision Float + } + + static constexpr CharType get_cbor_float_prefix(double /*unused*/) + { + return to_char_type(0xFB); // Double-Precision Float + } + + ///////////// + // MsgPack // + ///////////// + + static constexpr CharType get_msgpack_float_prefix(float /*unused*/) + { + return to_char_type(0xCA); // float 32 + } + + static constexpr CharType get_msgpack_float_prefix(double /*unused*/) + { + return to_char_type(0xCB); // float 64 + } + + //////////// + // UBJSON // + //////////// + + // UBJSON: write number (floating point) + template<typename NumberType, typename std::enable_if< + std::is_floating_point<NumberType>::value, int>::type = 0> + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if (add_prefix) + { + oa->write_character(get_ubjson_float_prefix(n)); + } + write_number(n); + } + + // UBJSON: write number (unsigned integer) + template<typename NumberType, typename std::enable_if< + std::is_unsigned<NumberType>::value, int>::type = 0> + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('i')); // int8 + } + write_number(static_cast<std::uint8_t>(n)); + } + else if (n <= (std::numeric_limits<std::uint8_t>::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('U')); // uint8 + } + write_number(static_cast<std::uint8_t>(n)); + } + else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('I')); // int16 + } + write_number(static_cast<std::int16_t>(n)); + } + else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('l')); // int32 + } + write_number(static_cast<std::int32_t>(n)); + } + else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('L')); // int64 + } + write_number(static_cast<std::int64_t>(n)); + } + else + { + JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64")); + } + } + + // UBJSON: write number (signed integer) + template<typename NumberType, typename std::enable_if< + std::is_signed<NumberType>::value and + not std::is_floating_point<NumberType>::value, int>::type = 0> + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('i')); // int8 + } + write_number(static_cast<std::int8_t>(n)); + } + else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('U')); // uint8 + } + write_number(static_cast<std::uint8_t>(n)); + } + else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('I')); // int16 + } + write_number(static_cast<std::int16_t>(n)); + } + else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('l')); // int32 + } + write_number(static_cast<std::int32_t>(n)); + } + else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('L')); // int64 + } + write_number(static_cast<std::int64_t>(n)); + } + // LCOV_EXCL_START + else + { + JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64")); + } + // LCOV_EXCL_STOP + } + + /*! + @brief determine the type prefix of container values + + @note This function does not need to be 100% accurate when it comes to + integer limits. In case a number exceeds the limits of int64_t, + this will be detected by a later call to function + write_number_with_ubjson_prefix. Therefore, we return 'L' for any + value that does not fit the previous limits. + */ + CharType ubjson_prefix(const BasicJsonType& j) const noexcept + { + switch (j.type()) + { + case value_t::null: + return 'Z'; + + case value_t::boolean: + return j.m_value.boolean ? 'T' : 'F'; + + case value_t::number_integer: + { + if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)()) + { + return 'i'; + } + if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)()) + { + return 'U'; + } + if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)()) + { + return 'I'; + } + if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)()) + { + return 'l'; + } + // no check and assume int64_t (see note above) + return 'L'; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= (std::numeric_limits<std::int8_t>::max)()) + { + return 'i'; + } + if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)()) + { + return 'U'; + } + if (j.m_value.number_unsigned <= (std::numeric_limits<std::int16_t>::max)()) + { + return 'I'; + } + if (j.m_value.number_unsigned <= (std::numeric_limits<std::int32_t>::max)()) + { + return 'l'; + } + // no check and assume int64_t (see note above) + return 'L'; + } + + case value_t::number_float: + return get_ubjson_float_prefix(j.m_value.number_float); + + case value_t::string: + return 'S'; + + case value_t::array: + return '['; + + case value_t::object: + return '{'; + + default: // discarded values + return 'N'; + } + } + + static constexpr CharType get_ubjson_float_prefix(float /*unused*/) + { + return 'd'; // float 32 + } + + static constexpr CharType get_ubjson_float_prefix(double /*unused*/) + { + return 'D'; // float 64 + } + + /////////////////////// + // Utility functions // + /////////////////////// + + /* + @brief write a number to output input + @param[in] n number of type @a NumberType + @tparam NumberType the type of the number + @tparam OutputIsLittleEndian Set to true if output data is + required to be little endian + + @note This function needs to respect the system's endianess, because bytes + in CBOR, MessagePack, and UBJSON are stored in network order (big + endian) and therefore need reordering on little endian systems. + */ + template<typename NumberType, bool OutputIsLittleEndian = false> + void write_number(const NumberType n) + { + // step 1: write number to array of length NumberType + std::array<CharType, sizeof(NumberType)> vec; + std::memcpy(vec.data(), &n, sizeof(NumberType)); + + // step 2: write array to output (with possible reordering) + if (is_little_endian != OutputIsLittleEndian) + { + // reverse byte order prior to conversion if necessary + std::reverse(vec.begin(), vec.end()); + } + + oa->write_characters(vec.data(), sizeof(NumberType)); + } + + public: + // The following to_char_type functions are implement the conversion + // between uint8_t and CharType. In case CharType is not unsigned, + // such a conversion is required to allow values greater than 128. + // See <https://github.com/nlohmann/json/issues/1286> for a discussion. + template < typename C = CharType, + enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr > + static constexpr CharType to_char_type(std::uint8_t x) noexcept + { + return *reinterpret_cast<char*>(&x); + } + + template < typename C = CharType, + enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr > + static CharType to_char_type(std::uint8_t x) noexcept + { + static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t"); + static_assert(std::is_pod<CharType>::value, "CharType must be POD"); + CharType result; + std::memcpy(&result, &x, sizeof(x)); + return result; + } + + template<typename C = CharType, + enable_if_t<std::is_unsigned<C>::value>* = nullptr> + static constexpr CharType to_char_type(std::uint8_t x) noexcept + { + return x; + } + + template < typename InputCharType, typename C = CharType, + enable_if_t < + std::is_signed<C>::value and + std::is_signed<char>::value and + std::is_same<char, typename std::remove_cv<InputCharType>::type>::value + > * = nullptr > + static constexpr CharType to_char_type(InputCharType x) noexcept + { + return x; + } + + private: + /// whether we can assume little endianess + const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess(); + + /// the output + output_adapter_t<CharType> oa = nullptr; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/output/output_adapters.hpp> + +// #include <nlohmann/detail/output/serializer.hpp> + + +#include <algorithm> // reverse, remove, fill, find, none_of +#include <array> // array +#include <cassert> // assert +#include <ciso646> // and, or +#include <clocale> // localeconv, lconv +#include <cmath> // labs, isfinite, isnan, signbit +#include <cstddef> // size_t, ptrdiff_t +#include <cstdint> // uint8_t +#include <cstdio> // snprintf +#include <limits> // numeric_limits +#include <string> // string +#include <type_traits> // is_same +#include <utility> // move + +// #include <nlohmann/detail/conversions/to_chars.hpp> + + +#include <array> // array +#include <cassert> // assert +#include <ciso646> // or, and, not +#include <cmath> // signbit, isfinite +#include <cstdint> // intN_t, uintN_t +#include <cstring> // memcpy, memmove +#include <limits> // numeric_limits +#include <type_traits> // conditional + +namespace nlohmann +{ +namespace detail +{ + +/*! +@brief implements the Grisu2 algorithm for binary to decimal floating-point +conversion. + +This implementation is a slightly modified version of the reference +implementation which may be obtained from +http://florian.loitsch.com/publications (bench.tar.gz). + +The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. + +For a detailed description of the algorithm see: + +[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with + Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming + Language Design and Implementation, PLDI 2010 +[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", + Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language + Design and Implementation, PLDI 1996 +*/ +namespace dtoa_impl +{ + +template <typename Target, typename Source> +Target reinterpret_bits(const Source source) +{ + static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); + + Target target; + std::memcpy(&target, &source, sizeof(Source)); + return target; +} + +struct diyfp // f * 2^e +{ + static constexpr int kPrecision = 64; // = q + + std::uint64_t f = 0; + int e = 0; + + constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {} + + /*! + @brief returns x - y + @pre x.e == y.e and x.f >= y.f + */ + static diyfp sub(const diyfp& x, const diyfp& y) noexcept + { + assert(x.e == y.e); + assert(x.f >= y.f); + + return {x.f - y.f, x.e}; + } + + /*! + @brief returns x * y + @note The result is rounded. (Only the upper q bits are returned.) + */ + static diyfp mul(const diyfp& x, const diyfp& y) noexcept + { + static_assert(kPrecision == 64, "internal error"); + + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q + + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi + + const std::uint64_t u_lo = x.f & 0xFFFFFFFFu; + const std::uint64_t u_hi = x.f >> 32u; + const std::uint64_t v_lo = y.f & 0xFFFFFFFFu; + const std::uint64_t v_hi = y.f >> 32u; + + const std::uint64_t p0 = u_lo * v_lo; + const std::uint64_t p1 = u_lo * v_hi; + const std::uint64_t p2 = u_hi * v_lo; + const std::uint64_t p3 = u_hi * v_hi; + + const std::uint64_t p0_hi = p0 >> 32u; + const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu; + const std::uint64_t p1_hi = p1 >> 32u; + const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu; + const std::uint64_t p2_hi = p2 >> 32u; + + std::uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up + + const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); + + return {h, x.e + y.e + 64}; + } + + /*! + @brief normalize x such that the significand is >= 2^(q-1) + @pre x.f != 0 + */ + static diyfp normalize(diyfp x) noexcept + { + assert(x.f != 0); + + while ((x.f >> 63u) == 0) + { + x.f <<= 1u; + x.e--; + } + + return x; + } + + /*! + @brief normalize x such that the result has the exponent E + @pre e >= x.e and the upper e - x.e bits of x.f must be zero. + */ + static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept + { + const int delta = x.e - target_exponent; + + assert(delta >= 0); + assert(((x.f << delta) >> delta) == x.f); + + return {x.f << delta, target_exponent}; + } +}; + +struct boundaries +{ + diyfp w; + diyfp minus; + diyfp plus; +}; + +/*! +Compute the (normalized) diyfp representing the input number 'value' and its +boundaries. + +@pre value must be finite and positive +*/ +template <typename FloatType> +boundaries compute_boundaries(FloatType value) +{ + assert(std::isfinite(value)); + assert(value > 0); + + // Convert the IEEE representation into a diyfp. + // + // If v is denormal: + // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) + // If v is normalized: + // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) + + static_assert(std::numeric_limits<FloatType>::is_iec559, + "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); + + constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit) + constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1); + constexpr int kMinExp = 1 - kBias; + constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + + using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type; + + const std::uint64_t bits = reinterpret_bits<bits_type>(value); + const std::uint64_t E = bits >> (kPrecision - 1); + const std::uint64_t F = bits & (kHiddenBit - 1); + + const bool is_denormal = E == 0; + const diyfp v = is_denormal + ? diyfp(F, kMinExp) + : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias); + + // Compute the boundaries m- and m+ of the floating-point value + // v = f * 2^e. + // + // Determine v- and v+, the floating-point predecessor and successor if v, + // respectively. + // + // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) + // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) + // + // v+ = v + 2^e + // + // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ + // between m- and m+ round to v, regardless of how the input rounding + // algorithm breaks ties. + // + // ---+-------------+-------------+-------------+-------------+--- (A) + // v- m- v m+ v+ + // + // -----------------+------+------+-------------+-------------+--- (B) + // v- m- v m+ v+ + + const bool lower_boundary_is_closer = F == 0 and E > 1; + const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); + const diyfp m_minus = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) + + // Determine the normalized w+ = m+. + const diyfp w_plus = diyfp::normalize(m_plus); + + // Determine w- = m- such that e_(w-) = e_(w+). + const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); + + return {diyfp::normalize(v), w_minus, w_plus}; +} + +// Given normalized diyfp w, Grisu needs to find a (normalized) cached +// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies +// within a certain range [alpha, gamma] (Definition 3.2 from [1]) +// +// alpha <= e = e_c + e_w + q <= gamma +// +// or +// +// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q +// <= f_c * f_w * 2^gamma +// +// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies +// +// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma +// +// or +// +// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) +// +// The choice of (alpha,gamma) determines the size of the table and the form of +// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well +// in practice: +// +// The idea is to cut the number c * w = f * 2^e into two parts, which can be +// processed independently: An integral part p1, and a fractional part p2: +// +// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e +// = (f div 2^-e) + (f mod 2^-e) * 2^e +// = p1 + p2 * 2^e +// +// The conversion of p1 into decimal form requires a series of divisions and +// modulos by (a power of) 10. These operations are faster for 32-bit than for +// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be +// achieved by choosing +// +// -e >= 32 or e <= -32 := gamma +// +// In order to convert the fractional part +// +// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... +// +// into decimal form, the fraction is repeatedly multiplied by 10 and the digits +// d[-i] are extracted in order: +// +// (10 * p2) div 2^-e = d[-1] +// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... +// +// The multiplication by 10 must not overflow. It is sufficient to choose +// +// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. +// +// Since p2 = f mod 2^-e < 2^-e, +// +// -e <= 60 or e >= -60 := alpha + +constexpr int kAlpha = -60; +constexpr int kGamma = -32; + +struct cached_power // c = f * 2^e ~= 10^k +{ + std::uint64_t f; + int e; + int k; +}; + +/*! +For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached +power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c +satisfies (Definition 3.2 from [1]) + + alpha <= e_c + e + q <= gamma. +*/ +inline cached_power get_cached_power_for_binary_exponent(int e) +{ + // Now + // + // alpha <= e_c + e + q <= gamma (1) + // ==> f_c * 2^alpha <= c * 2^e * 2^q + // + // and since the c's are normalized, 2^(q-1) <= f_c, + // + // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) + // ==> 2^(alpha - e - 1) <= c + // + // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as + // + // k = ceil( log_10( 2^(alpha - e - 1) ) ) + // = ceil( (alpha - e - 1) * log_10(2) ) + // + // From the paper: + // "In theory the result of the procedure could be wrong since c is rounded, + // and the computation itself is approximated [...]. In practice, however, + // this simple function is sufficient." + // + // For IEEE double precision floating-point numbers converted into + // normalized diyfp's w = f * 2^e, with q = 64, + // + // e >= -1022 (min IEEE exponent) + // -52 (p - 1) + // -52 (p - 1, possibly normalize denormal IEEE numbers) + // -11 (normalize the diyfp) + // = -1137 + // + // and + // + // e <= +1023 (max IEEE exponent) + // -52 (p - 1) + // -11 (normalize the diyfp) + // = 960 + // + // This binary exponent range [-1137,960] results in a decimal exponent + // range [-307,324]. One does not need to store a cached power for each + // k in this range. For each such k it suffices to find a cached power + // such that the exponent of the product lies in [alpha,gamma]. + // This implies that the difference of the decimal exponents of adjacent + // table entries must be less than or equal to + // + // floor( (gamma - alpha) * log_10(2) ) = 8. + // + // (A smaller distance gamma-alpha would require a larger table.) + + // NB: + // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. + + constexpr int kCachedPowersMinDecExp = -300; + constexpr int kCachedPowersDecStep = 8; + + static constexpr std::array<cached_power, 79> kCachedPowers = + { + { + { 0xAB70FE17C79AC6CA, -1060, -300 }, + { 0xFF77B1FCBEBCDC4F, -1034, -292 }, + { 0xBE5691EF416BD60C, -1007, -284 }, + { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, + { 0x9D71AC8FADA6C9B5, -927, -260 }, + { 0xEA9C227723EE8BCB, -901, -252 }, + { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, + { 0xC21094364DFB5637, -821, -228 }, + { 0x9096EA6F3848984F, -794, -220 }, + { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, + { 0xEF340A98172AACE5, -715, -196 }, + { 0xB23867FB2A35B28E, -688, -188 }, + { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, + { 0x936B9FCEBB25C996, -608, -164 }, + { 0xDBAC6C247D62A584, -582, -156 }, + { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, + { 0xB5B5ADA8AAFF80B8, -502, -132 }, + { 0x87625F056C7C4A8B, -475, -124 }, + { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, + { 0xDFF9772470297EBD, -396, -100 }, + { 0xA6DFBD9FB8E5B88F, -369, -92 }, + { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, + { 0x8A08F0F8BF0F156B, -289, -68 }, + { 0xCDB02555653131B6, -263, -60 }, + { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, + { 0xAA242499697392D3, -183, -36 }, + { 0xFD87B5F28300CA0E, -157, -28 }, + { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, + { 0xD1B71758E219652C, -77, -4 }, + { 0x9C40000000000000, -50, 4 }, + { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, + { 0x813F3978F8940984, 30, 28 }, + { 0xC097CE7BC90715B3, 56, 36 }, + { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, + { 0x9F4F2726179A2245, 136, 60 }, + { 0xED63A231D4C4FB27, 162, 68 }, + { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, + { 0xC45D1DF942711D9A, 242, 92 }, + { 0x924D692CA61BE758, 269, 100 }, + { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, + { 0xF209787BB47D6B85, 348, 124 }, + { 0xB454E4A179DD1877, 375, 132 }, + { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, + { 0x952AB45CFA97A0B3, 455, 156 }, + { 0xDE469FBD99A05FE3, 481, 164 }, + { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, + { 0xB7DCBF5354E9BECE, 561, 188 }, + { 0x88FCF317F22241E2, 588, 196 }, + { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, + { 0xE2A0B5DC971F303A, 667, 220 }, + { 0xA8D9D1535CE3B396, 694, 228 }, + { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, + { 0x8BAB8EEFB6409C1A, 774, 252 }, + { 0xD01FEF10A657842C, 800, 260 }, + { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, + { 0xAC2820D9623BF429, 880, 284 }, + { 0x80444B5E7AA7CF85, 907, 292 }, + { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, + { 0xD433179D9C8CB841, 986, 316 }, + { 0x9E19DB92B4E31BA9, 1013, 324 }, + } + }; + + // This computation gives exactly the same results for k as + // k = ceil((kAlpha - e - 1) * 0.30102999566398114) + // for |e| <= 1500, but doesn't require floating-point operations. + // NB: log_10(2) ~= 78913 / 2^18 + assert(e >= -1500); + assert(e <= 1500); + const int f = kAlpha - e - 1; + const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0); + + const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; + assert(index >= 0); + assert(static_cast<std::size_t>(index) < kCachedPowers.size()); + + const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)]; + assert(kAlpha <= cached.e + e + 64); + assert(kGamma >= cached.e + e + 64); + + return cached; +} + +/*! +For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +For n == 0, returns 1 and sets pow10 := 1. +*/ +inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) +{ + // LCOV_EXCL_START + if (n >= 1000000000) + { + pow10 = 1000000000; + return 10; + } + // LCOV_EXCL_STOP + else if (n >= 100000000) + { + pow10 = 100000000; + return 9; + } + else if (n >= 10000000) + { + pow10 = 10000000; + return 8; + } + else if (n >= 1000000) + { + pow10 = 1000000; + return 7; + } + else if (n >= 100000) + { + pow10 = 100000; + return 6; + } + else if (n >= 10000) + { + pow10 = 10000; + return 5; + } + else if (n >= 1000) + { + pow10 = 1000; + return 4; + } + else if (n >= 100) + { + pow10 = 100; + return 3; + } + else if (n >= 10) + { + pow10 = 10; + return 2; + } + else + { + pow10 = 1; + return 1; + } +} + +inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, + std::uint64_t rest, std::uint64_t ten_k) +{ + assert(len >= 1); + assert(dist <= delta); + assert(rest <= delta); + assert(ten_k > 0); + + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // ten_k + // <------> + // <---- rest ----> + // --------------[------------------+----+--------------]-------------- + // w V + // = buf * 10^k + // + // ten_k represents a unit-in-the-last-place in the decimal representation + // stored in buf. + // Decrement buf by ten_k while this takes buf closer to w. + + // The tests are written in this order to avoid overflow in unsigned + // integer arithmetic. + + while (rest < dist + and delta - rest >= ten_k + and (rest + ten_k < dist or dist - rest > rest + ten_k - dist)) + { + assert(buf[len - 1] != '0'); + buf[len - 1]--; + rest += ten_k; + } +} + +/*! +Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +*/ +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, + diyfp M_minus, diyfp w, diyfp M_plus) +{ + static_assert(kAlpha >= -60, "internal error"); + static_assert(kGamma <= -32, "internal error"); + + // Generates the digits (and the exponent) of a decimal floating-point + // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's + // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. + // + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // Grisu2 generates the digits of M+ from left to right and stops as soon as + // V is in [M-,M+]. + + assert(M_plus.e >= kAlpha); + assert(M_plus.e <= kGamma); + + std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) + std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) + + // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): + // + // M+ = f * 2^e + // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e + // = ((p1 ) * 2^-e + (p2 )) * 2^e + // = p1 + p2 * 2^e + + const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); + + auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) + std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e + + // 1) + // + // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] + + assert(p1 > 0); + + std::uint32_t pow10; + const int k = find_largest_pow10(p1, pow10); + + // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) + // + // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) + // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) + // + // M+ = p1 + p2 * 2^e + // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e + // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e + // = d[k-1] * 10^(k-1) + ( rest) * 2^e + // + // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) + // + // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] + // + // but stop as soon as + // + // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e + + int n = k; + while (n > 0) + { + // Invariants: + // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) + // pow10 = 10^(n-1) <= p1 < 10^n + // + const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) + const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) + // + // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e + // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) + // + assert(d <= 9); + buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) + // + p1 = r; + n--; + // + // M+ = buffer * 10^n + (p1 + p2 * 2^e) + // pow10 = 10^n + // + + // Now check if enough digits have been generated. + // Compute + // + // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e + // + // Note: + // Since rest and delta share the same exponent e, it suffices to + // compare the significands. + const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; + if (rest <= delta) + { + // V = buffer * 10^n, with M- <= V <= M+. + + decimal_exponent += n; + + // We may now just stop. But instead look if the buffer could be + // decremented to bring V closer to w. + // + // pow10 = 10^n is now 1 ulp in the decimal representation V. + // The rounding procedure works with diyfp's with an implicit + // exponent of e. + // + // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e + // + const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; + grisu2_round(buffer, length, dist, delta, rest, ten_n); + + return; + } + + pow10 /= 10; + // + // pow10 = 10^(n-1) <= p1 < 10^n + // Invariants restored. + } + + // 2) + // + // The digits of the integral part have been generated: + // + // M+ = d[k-1]...d[1]d[0] + p2 * 2^e + // = buffer + p2 * 2^e + // + // Now generate the digits of the fractional part p2 * 2^e. + // + // Note: + // No decimal point is generated: the exponent is adjusted instead. + // + // p2 actually represents the fraction + // + // p2 * 2^e + // = p2 / 2^-e + // = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) + // + // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m + // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) + // + // using + // + // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) + // = ( d) * 2^-e + ( r) + // + // or + // 10^m * p2 * 2^e = d + r * 2^e + // + // i.e. + // + // M+ = buffer + p2 * 2^e + // = buffer + 10^-m * (d + r * 2^e) + // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e + // + // and stop as soon as 10^-m * r * 2^e <= delta * 2^e + + assert(p2 > delta); + + int m = 0; + for (;;) + { + // Invariant: + // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e + // = buffer * 10^-m + 10^-m * (p2 ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e + // + assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10); + p2 *= 10; + const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e + const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e + // + // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) + // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + assert(d <= 9); + buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + p2 = r; + m++; + // + // M+ = buffer * 10^-m + 10^-m * p2 * 2^e + // Invariant restored. + + // Check if enough digits have been generated. + // + // 10^-m * p2 * 2^e <= delta * 2^e + // p2 * 2^e <= 10^m * delta * 2^e + // p2 <= 10^m * delta + delta *= 10; + dist *= 10; + if (p2 <= delta) + { + break; + } + } + + // V = buffer * 10^-m, with M- <= V <= M+. + + decimal_exponent -= m; + + // 1 ulp in the decimal representation is now 10^-m. + // Since delta and dist are now scaled by 10^m, we need to do the + // same with ulp in order to keep the units in sync. + // + // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e + // + const std::uint64_t ten_m = one.f; + grisu2_round(buffer, length, dist, delta, p2, ten_m); + + // By construction this algorithm generates the shortest possible decimal + // number (Loitsch, Theorem 6.2) which rounds back to w. + // For an input number of precision p, at least + // + // N = 1 + ceil(p * log_10(2)) + // + // decimal digits are sufficient to identify all binary floating-point + // numbers (Matula, "In-and-Out conversions"). + // This implies that the algorithm does not produce more than N decimal + // digits. + // + // N = 17 for p = 53 (IEEE double precision) + // N = 9 for p = 24 (IEEE single precision) +} + +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +inline void grisu2(char* buf, int& len, int& decimal_exponent, + diyfp m_minus, diyfp v, diyfp m_plus) +{ + assert(m_plus.e == m_minus.e); + assert(m_plus.e == v.e); + + // --------(-----------------------+-----------------------)-------- (A) + // m- v m+ + // + // --------------------(-----------+-----------------------)-------- (B) + // m- v m+ + // + // First scale v (and m- and m+) such that the exponent is in the range + // [alpha, gamma]. + + const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); + + const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k + + // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] + const diyfp w = diyfp::mul(v, c_minus_k); + const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); + const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); + + // ----(---+---)---------------(---+---)---------------(---+---)---- + // w- w w+ + // = c*m- = c*v = c*m+ + // + // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and + // w+ are now off by a small amount. + // In fact: + // + // w - v * 10^k < 1 ulp + // + // To account for this inaccuracy, add resp. subtract 1 ulp. + // + // --------+---[---------------(---+---)---------------]---+-------- + // w- M- w M+ w+ + // + // Now any number in [M-, M+] (bounds included) will round to w when input, + // regardless of how the input rounding algorithm breaks ties. + // + // And digit_gen generates the shortest possible such number in [M-, M+]. + // Note that this does not mean that Grisu2 always generates the shortest + // possible number in the interval (m-, m+). + const diyfp M_minus(w_minus.f + 1, w_minus.e); + const diyfp M_plus (w_plus.f - 1, w_plus.e ); + + decimal_exponent = -cached.k; // = -(-k) = k + + grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); +} + +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +template <typename FloatType> +void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) +{ + static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3, + "internal error: not enough precision"); + + assert(std::isfinite(value)); + assert(value > 0); + + // If the neighbors (and boundaries) of 'value' are always computed for double-precision + // numbers, all float's can be recovered using strtod (and strtof). However, the resulting + // decimal representations are not exactly "short". + // + // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars) + // says "value is converted to a string as if by std::sprintf in the default ("C") locale" + // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars' + // does. + // On the other hand, the documentation for 'std::to_chars' requires that "parsing the + // representation using the corresponding std::from_chars function recovers value exactly". That + // indicates that single precision floating-point numbers should be recovered using + // 'std::strtof'. + // + // NB: If the neighbors are computed for single-precision numbers, there is a single float + // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision + // value is off by 1 ulp. +#if 0 + const boundaries w = compute_boundaries(static_cast<double>(value)); +#else + const boundaries w = compute_boundaries(value); +#endif + + grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); +} + +/*! +@brief appends a decimal representation of e to buf +@return a pointer to the element following the exponent. +@pre -1000 < e < 1000 +*/ +inline char* append_exponent(char* buf, int e) +{ + assert(e > -1000); + assert(e < 1000); + + if (e < 0) + { + e = -e; + *buf++ = '-'; + } + else + { + *buf++ = '+'; + } + + auto k = static_cast<std::uint32_t>(e); + if (k < 10) + { + // Always print at least two digits in the exponent. + // This is for compatibility with printf("%g"). + *buf++ = '0'; + *buf++ = static_cast<char>('0' + k); + } + else if (k < 100) + { + *buf++ = static_cast<char>('0' + k / 10); + k %= 10; + *buf++ = static_cast<char>('0' + k); + } + else + { + *buf++ = static_cast<char>('0' + k / 100); + k %= 100; + *buf++ = static_cast<char>('0' + k / 10); + k %= 10; + *buf++ = static_cast<char>('0' + k); + } + + return buf; +} + +/*! +@brief prettify v = buf * 10^decimal_exponent + +If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point +notation. Otherwise it will be printed in exponential notation. + +@pre min_exp < 0 +@pre max_exp > 0 +*/ +inline char* format_buffer(char* buf, int len, int decimal_exponent, + int min_exp, int max_exp) +{ + assert(min_exp < 0); + assert(max_exp > 0); + + const int k = len; + const int n = len + decimal_exponent; + + // v = buf * 10^(n-k) + // k is the length of the buffer (number of decimal digits) + // n is the position of the decimal point relative to the start of the buffer. + + if (k <= n and n <= max_exp) + { + // digits[000] + // len <= max_exp + 2 + + std::memset(buf + k, '0', static_cast<size_t>(n - k)); + // Make it look like a floating-point number (#362, #378) + buf[n + 0] = '.'; + buf[n + 1] = '0'; + return buf + (n + 2); + } + + if (0 < n and n <= max_exp) + { + // dig.its + // len <= max_digits10 + 1 + + assert(k > n); + + std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n)); + buf[n] = '.'; + return buf + (k + 1); + } + + if (min_exp < n and n <= 0) + { + // 0.[000]digits + // len <= 2 + (-min_exp - 1) + max_digits10 + + std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k)); + buf[0] = '0'; + buf[1] = '.'; + std::memset(buf + 2, '0', static_cast<size_t>(-n)); + return buf + (2 + (-n) + k); + } + + if (k == 1) + { + // dE+123 + // len <= 1 + 5 + + buf += 1; + } + else + { + // d.igitsE+123 + // len <= max_digits10 + 1 + 5 + + std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1)); + buf[1] = '.'; + buf += 1 + k; + } + + *buf++ = 'e'; + return append_exponent(buf, n - 1); +} + +} // namespace dtoa_impl + +/*! +@brief generates a decimal representation of the floating-point number value in [first, last). + +The format of the resulting decimal representation is similar to printf's %g +format. Returns an iterator pointing past-the-end of the decimal representation. + +@note The input number must be finite, i.e. NaN's and Inf's are not supported. +@note The buffer must be large enough. +@note The result is NOT null-terminated. +*/ +template <typename FloatType> +char* to_chars(char* first, const char* last, FloatType value) +{ + static_cast<void>(last); // maybe unused - fix warning + assert(std::isfinite(value)); + + // Use signbit(value) instead of (value < 0) since signbit works for -0. + if (std::signbit(value)) + { + value = -value; + *first++ = '-'; + } + + if (value == 0) // +-0 + { + *first++ = '0'; + // Make it look like a floating-point number (#362, #378) + *first++ = '.'; + *first++ = '0'; + return first; + } + + assert(last - first >= std::numeric_limits<FloatType>::max_digits10); + + // Compute v = buffer * 10^decimal_exponent. + // The decimal digits are stored in the buffer, which needs to be interpreted + // as an unsigned decimal integer. + // len is the length of the buffer, i.e. the number of decimal digits. + int len = 0; + int decimal_exponent = 0; + dtoa_impl::grisu2(first, len, decimal_exponent, value); + + assert(len <= std::numeric_limits<FloatType>::max_digits10); + + // Format the buffer like printf("%.*g", prec, value) + constexpr int kMinExp = -4; + // Use digits10 here to increase compatibility with version 2. + constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10; + + assert(last - first >= kMaxExp + 2); + assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10); + assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6); + + return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); +} + +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/exceptions.hpp> + +// #include <nlohmann/detail/macro_scope.hpp> + +// #include <nlohmann/detail/meta/cpp_future.hpp> + +// #include <nlohmann/detail/output/binary_writer.hpp> + +// #include <nlohmann/detail/output/output_adapters.hpp> + +// #include <nlohmann/detail/value_t.hpp> + + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// serialization // +/////////////////// + +/// how to treat decoding errors +enum class error_handler_t +{ + strict, ///< throw a type_error exception in case of invalid UTF-8 + replace, ///< replace invalid UTF-8 sequences with U+FFFD + ignore ///< ignore invalid UTF-8 sequences +}; + +template<typename BasicJsonType> +class serializer +{ + using string_t = typename BasicJsonType::string_t; + using number_float_t = typename BasicJsonType::number_float_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + static constexpr std::uint8_t UTF8_ACCEPT = 0; + static constexpr std::uint8_t UTF8_REJECT = 1; + + public: + /*! + @param[in] s output stream to serialize to + @param[in] ichar indentation character to use + @param[in] error_handler_ how to react on decoding errors + */ + serializer(output_adapter_t<char> s, const char ichar, + error_handler_t error_handler_ = error_handler_t::strict) + : o(std::move(s)) + , loc(std::localeconv()) + , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)) + , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)) + , indent_char(ichar) + , indent_string(512, indent_char) + , error_handler(error_handler_) + {} + + // delete because of pointer members + serializer(const serializer&) = delete; + serializer& operator=(const serializer&) = delete; + serializer(serializer&&) = delete; + serializer& operator=(serializer&&) = delete; + ~serializer() = default; + + /*! + @brief internal implementation of the serialization function + + This function is called by the public member function dump and organizes + the serialization internally. The indentation level is propagated as + additional parameter. In case of arrays and objects, the function is + called recursively. + + - strings and object keys are escaped using `escape_string()` + - integer numbers are converted implicitly via `operator<<` + - floating-point numbers are converted to a string using `"%g"` format + + @param[in] val value to serialize + @param[in] pretty_print whether the output shall be pretty-printed + @param[in] indent_step the indent level + @param[in] current_indent the current indent level (only used internally) + */ + void dump(const BasicJsonType& val, const bool pretty_print, + const bool ensure_ascii, + const unsigned int indent_step, + const unsigned int current_indent = 0) + { + switch (val.m_type) + { + case value_t::object: + { + if (val.m_value.object->empty()) + { + o->write_characters("{}", 2); + return; + } + + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_character('{'); + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + + o->write_character('}'); + } + + return; + } + + case value_t::array: + { + if (val.m_value.array->empty()) + { + o->write_characters("[]", 2); + return; + } + + if (pretty_print) + { + o->write_characters("[\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + dump(*i, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(not val.m_value.array->empty()); + o->write_characters(indent_string.c_str(), new_indent); + dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character(']'); + } + else + { + o->write_character('['); + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + dump(*i, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(not val.m_value.array->empty()); + dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); + + o->write_character(']'); + } + + return; + } + + case value_t::string: + { + o->write_character('\"'); + dump_escaped(*val.m_value.string, ensure_ascii); + o->write_character('\"'); + return; + } + + case value_t::boolean: + { + if (val.m_value.boolean) + { + o->write_characters("true", 4); + } + else + { + o->write_characters("false", 5); + } + return; + } + + case value_t::number_integer: + { + dump_integer(val.m_value.number_integer); + return; + } + + case value_t::number_unsigned: + { + dump_integer(val.m_value.number_unsigned); + return; + } + + case value_t::number_float: + { + dump_float(val.m_value.number_float); + return; + } + + case value_t::discarded: + { + o->write_characters("<discarded>", 11); + return; + } + + case value_t::null: + { + o->write_characters("null", 4); + return; + } + + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + } + + private: + /*! + @brief dump escaped string + + Escape a string by replacing certain special characters by a sequence of an + escape character (backslash) and another character and other control + characters by a sequence of "\u" followed by a four-digit hex + representation. The escaped string is written to output stream @a o. + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + + @complexity Linear in the length of string @a s. + */ + void dump_escaped(const string_t& s, const bool ensure_ascii) + { + std::uint32_t codepoint; + std::uint8_t state = UTF8_ACCEPT; + std::size_t bytes = 0; // number of bytes written to string_buffer + + // number of bytes written at the point of the last valid byte + std::size_t bytes_after_last_accept = 0; + std::size_t undumped_chars = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + const auto byte = static_cast<uint8_t>(s[i]); + + switch (decode(state, codepoint, byte)) + { + case UTF8_ACCEPT: // decode found a new code point + { + switch (codepoint) + { + case 0x08: // backspace + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'b'; + break; + } + + case 0x09: // horizontal tab + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 't'; + break; + } + + case 0x0A: // newline + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'n'; + break; + } + + case 0x0C: // formfeed + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'f'; + break; + } + + case 0x0D: // carriage return + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'r'; + break; + } + + case 0x22: // quotation mark + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\"'; + break; + } + + case 0x5C: // reverse solidus + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\\'; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F))) + { + if (codepoint <= 0xFFFF) + { + (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x", + static_cast<std::uint16_t>(codepoint)); + bytes += 6; + } + else + { + (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", + static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)), + static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu))); + bytes += 12; + } + } + else + { + // copy byte to buffer (all previous bytes + // been copied have in default case above) + string_buffer[bytes++] = s[i]; + } + break; + } + } + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) + { + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + + // remember the byte position of this accept + bytes_after_last_accept = bytes; + undumped_chars = 0; + break; + } + + case UTF8_REJECT: // decode found invalid UTF-8 byte + { + switch (error_handler) + { + case error_handler_t::strict: + { + std::string sn(3, '\0'); + (std::snprintf)(&sn[0], sn.size(), "%.2X", byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn)); + } + + case error_handler_t::ignore: + case error_handler_t::replace: + { + // in case we saw this character the first time, we + // would like to read it again, because the byte + // may be OK for itself, but just not OK for the + // previous sequence + if (undumped_chars > 0) + { + --i; + } + + // reset length buffer to the last accepted index; + // thus removing/ignoring the invalid characters + bytes = bytes_after_last_accept; + + if (error_handler == error_handler_t::replace) + { + // add a replacement character + if (ensure_ascii) + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'u'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'd'; + } + else + { + string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF'); + string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF'); + string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD'); + } + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) + { + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + + bytes_after_last_accept = bytes; + } + + undumped_chars = 0; + + // continue processing the string + state = UTF8_ACCEPT; + break; + } + + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + break; + } + + default: // decode found yet incomplete multi-byte code point + { + if (not ensure_ascii) + { + // code point will not be escaped - copy byte to buffer + string_buffer[bytes++] = s[i]; + } + ++undumped_chars; + break; + } + } + } + + // we finished processing the string + if (JSON_LIKELY(state == UTF8_ACCEPT)) + { + // write buffer + if (bytes > 0) + { + o->write_characters(string_buffer.data(), bytes); + } + } + else + { + // we finish reading, but do not accept: string was incomplete + switch (error_handler) + { + case error_handler_t::strict: + { + std::string sn(3, '\0'); + (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn)); + } + + case error_handler_t::ignore: + { + // write all accepted bytes + o->write_characters(string_buffer.data(), bytes_after_last_accept); + break; + } + + case error_handler_t::replace: + { + // write all accepted bytes + o->write_characters(string_buffer.data(), bytes_after_last_accept); + // add a replacement character + if (ensure_ascii) + { + o->write_characters("\\ufffd", 6); + } + else + { + o->write_characters("\xEF\xBF\xBD", 3); + } + break; + } + + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + } + } + + /*! + @brief count digits + + Count the number of decimal (base 10) digits for an input unsigned integer. + + @param[in] x unsigned integer number to count its digits + @return number of decimal digits + */ + inline unsigned int count_digits(number_unsigned_t x) noexcept + { + unsigned int n_digits = 1; + for (;;) + { + if (x < 10) + { + return n_digits; + } + if (x < 100) + { + return n_digits + 1; + } + if (x < 1000) + { + return n_digits + 2; + } + if (x < 10000) + { + return n_digits + 3; + } + x = x / 10000u; + n_digits += 4; + } + } + + /*! + @brief dump an integer + + Dump a given integer to output stream @a o. Works internally with + @a number_buffer. + + @param[in] x integer number (signed or unsigned) to dump + @tparam NumberType either @a number_integer_t or @a number_unsigned_t + */ + template<typename NumberType, detail::enable_if_t< + std::is_same<NumberType, number_unsigned_t>::value or + std::is_same<NumberType, number_integer_t>::value, + int> = 0> + void dump_integer(NumberType x) + { + static constexpr std::array<std::array<char, 2>, 100> digits_to_99 + { + { + {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}}, + {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}}, + {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}}, + {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}}, + {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}}, + {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}}, + {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}}, + {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}}, + {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}}, + {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}}, + } + }; + + // special case for "0" + if (x == 0) + { + o->write_character('0'); + return; + } + + // use a pointer to fill the buffer + auto buffer_ptr = number_buffer.begin(); + + const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755 + number_unsigned_t abs_value; + + unsigned int n_chars; + + if (is_negative) + { + *buffer_ptr = '-'; + abs_value = static_cast<number_unsigned_t>(std::abs(static_cast<std::intmax_t>(x))); + + // account one more byte for the minus sign + n_chars = 1 + count_digits(abs_value); + } + else + { + abs_value = static_cast<number_unsigned_t>(x); + n_chars = count_digits(abs_value); + } + + // spare 1 byte for '\0' + assert(n_chars < number_buffer.size() - 1); + + // jump to the end to generate the string from backward + // so we later avoid reversing the result + buffer_ptr += n_chars; + + // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu + // See: https://www.youtube.com/watch?v=o4-CwDo2zpg + while (abs_value >= 100) + { + const auto digits_index = static_cast<unsigned>((abs_value % 100)); + abs_value /= 100; + *(--buffer_ptr) = digits_to_99[digits_index][1]; + *(--buffer_ptr) = digits_to_99[digits_index][0]; + } + + if (abs_value >= 10) + { + const auto digits_index = static_cast<unsigned>(abs_value); + *(--buffer_ptr) = digits_to_99[digits_index][1]; + *(--buffer_ptr) = digits_to_99[digits_index][0]; + } + else + { + *(--buffer_ptr) = static_cast<char>('0' + abs_value); + } + + o->write_characters(number_buffer.data(), n_chars); + } + + /*! + @brief dump a floating-point number + + Dump a given floating-point number to output stream @a o. Works internally + with @a number_buffer. + + @param[in] x floating-point number to dump + */ + void dump_float(number_float_t x) + { + // NaN / inf + if (not std::isfinite(x)) + { + o->write_characters("null", 4); + return; + } + + // If number_float_t is an IEEE-754 single or double precision number, + // use the Grisu2 algorithm to produce short numbers which are + // guaranteed to round-trip, using strtof and strtod, resp. + // + // NB: The test below works if <long double> == <double>. + static constexpr bool is_ieee_single_or_double + = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or + (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024); + + dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>()); + } + + void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) + { + char* begin = number_buffer.data(); + char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); + + o->write_characters(begin, static_cast<size_t>(end - begin)); + } + + void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) + { + // get number of digits for a float -> text -> float round-trip + static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10; + + // the actual conversion + std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x); + + // negative value indicates an error + assert(len > 0); + // check if buffer was large enough + assert(static_cast<std::size_t>(len) < number_buffer.size()); + + // erase thousands separator + if (thousands_sep != '\0') + { + const auto end = std::remove(number_buffer.begin(), + number_buffer.begin() + len, thousands_sep); + std::fill(end, number_buffer.end(), '\0'); + assert((end - number_buffer.begin()) <= len); + len = (end - number_buffer.begin()); + } + + // convert decimal point to '.' + if (decimal_point != '\0' and decimal_point != '.') + { + const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); + if (dec_pos != number_buffer.end()) + { + *dec_pos = '.'; + } + } + + o->write_characters(number_buffer.data(), static_cast<std::size_t>(len)); + + // determine if need to append ".0" + const bool value_is_int_like = + std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, + [](char c) + { + return c == '.' or c == 'e'; + }); + + if (value_is_int_like) + { + o->write_characters(".0", 2); + } + } + + /*! + @brief check whether a string is UTF-8 encoded + + The function checks each byte of a string whether it is UTF-8 encoded. The + result of the check is stored in the @a state parameter. The function must + be called initially with state 0 (accept). State 1 means the string must + be rejected, because the current byte is not allowed. If the string is + completely processed, but the state is non-zero, the string ended + prematurely; that is, the last byte indicated more bytes should have + followed. + + @param[in,out] state the state of the decoding + @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) + @param[in] byte next byte to decode + @return new state + + @note The function has been edited: a std::array is used. + + @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de> + @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + */ + static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept + { + static const std::array<std::uint8_t, 400> utf8d = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF + 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF + 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF + 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF + 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 + 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 + 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 + } + }; + + const std::uint8_t type = utf8d[byte]; + + codep = (state != UTF8_ACCEPT) + ? (byte & 0x3fu) | (codep << 6u) + : (0xFFu >> type) & (byte); + + state = utf8d[256u + state * 16u + type]; + return state; + } + + private: + /// the output of the serializer + output_adapter_t<char> o = nullptr; + + /// a (hopefully) large enough character buffer + std::array<char, 64> number_buffer{{}}; + + /// the locale + const std::lconv* loc = nullptr; + /// the locale's thousand separator character + const char thousands_sep = '\0'; + /// the locale's decimal point character + const char decimal_point = '\0'; + + /// string buffer + std::array<char, 512> string_buffer{{}}; + + /// the indentation character + const char indent_char; + /// the indentation string + string_t indent_string; + + /// error_handler how to react on decoding errors + const error_handler_t error_handler; +}; +} // namespace detail +} // namespace nlohmann + +// #include <nlohmann/detail/value_t.hpp> + +// #include <nlohmann/json_fwd.hpp> + + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ + +/*! +@brief a class to store JSON values + +@tparam ObjectType type for JSON objects (`std::map` by default; will be used +in @ref object_t) +@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used +in @ref array_t) +@tparam StringType type for JSON strings and object keys (`std::string` by +default; will be used in @ref string_t) +@tparam BooleanType type for JSON booleans (`bool` by default; will be used +in @ref boolean_t) +@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by +default; will be used in @ref number_integer_t) +@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c +`uint64_t` by default; will be used in @ref number_unsigned_t) +@tparam NumberFloatType type for JSON floating-point numbers (`double` by +default; will be used in @ref number_float_t) +@tparam AllocatorType type of the allocator to use (`std::allocator` by +default) +@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` +and `from_json()` (@ref adl_serializer by default) + +@requirement The class satisfies the following concept requirements: +- Basic + - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible): + JSON values can be default constructed. The result will be a JSON null + value. + - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible): + A JSON value can be constructed from an rvalue argument. + - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible): + A JSON value can be copy-constructed from an lvalue expression. + - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable): + A JSON value van be assigned from an rvalue argument. + - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable): + A JSON value can be copy-assigned from an lvalue expression. + - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible): + JSON values can be destructed. +- Layout + - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType): + JSON values have + [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout): + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. +- Library-wide + - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable): + JSON values can be compared with `==`, see @ref + operator==(const_reference,const_reference). + - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable): + JSON values can be compared with `<`, see @ref + operator<(const_reference,const_reference). + - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable): + Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of + other compatible types, using unqualified function call @ref swap(). + - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer): + JSON values can be compared against `std::nullptr_t` objects which are used + to model the `null` value. +- Container + - [Container](https://en.cppreference.com/w/cpp/named_req/Container): + JSON values can be used like STL containers and provide iterator access. + - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer); + JSON values can be used like STL containers and provide reverse iterator + access. + +@invariant The member variables @a m_value and @a m_type have the following +relationship: +- If `m_type == value_t::object`, then `m_value.object != nullptr`. +- If `m_type == value_t::array`, then `m_value.array != nullptr`. +- If `m_type == value_t::string`, then `m_value.string != nullptr`. +The invariants are checked by member function assert_invariant(). + +@internal +@note ObjectType trick from http://stackoverflow.com/a/9860911 +@endinternal + +@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange +Format](http://rfc7159.net/rfc7159) + +@since version 1.0.0 + +@nosubgrouping +*/ +NLOHMANN_BASIC_JSON_TPL_DECLARATION +class basic_json +{ + private: + template<detail::value_t> friend struct detail::external_constructor; + friend ::nlohmann::json_pointer<basic_json>; + friend ::nlohmann::detail::parser<basic_json>; + friend ::nlohmann::detail::serializer<basic_json>; + template<typename BasicJsonType> + friend class ::nlohmann::detail::iter_impl; + template<typename BasicJsonType, typename CharType> + friend class ::nlohmann::detail::binary_writer; + template<typename BasicJsonType, typename SAX> + friend class ::nlohmann::detail::binary_reader; + template<typename BasicJsonType> + friend class ::nlohmann::detail::json_sax_dom_parser; + template<typename BasicJsonType> + friend class ::nlohmann::detail::json_sax_dom_callback_parser; + + /// workaround type for MSVC + using basic_json_t = NLOHMANN_BASIC_JSON_TPL; + + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer<basic_json>; + using parser = ::nlohmann::detail::parser<basic_json>; + + using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; + template<typename BasicJsonType> + using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>; + template<typename BasicJsonType> + using iter_impl = ::nlohmann::detail::iter_impl<BasicJsonType>; + template<typename Iterator> + using iteration_proxy = ::nlohmann::detail::iteration_proxy<Iterator>; + template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>; + + template<typename CharType> + using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>; + + using binary_reader = ::nlohmann::detail::binary_reader<basic_json>; + template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>; + + using serializer = ::nlohmann::detail::serializer<basic_json>; + + public: + using value_t = detail::value_t; + /// JSON Pointer, see @ref nlohmann::json_pointer + using json_pointer = ::nlohmann::json_pointer<basic_json>; + template<typename T, typename SFINAE> + using json_serializer = JSONSerializer<T, SFINAE>; + /// how to treat decoding errors + using error_handler_t = detail::error_handler_t; + /// helper type for initializer lists of basic_json values + using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>; + + using input_format_t = detail::input_format_t; + /// SAX interface type, see @ref nlohmann::json_sax + using json_sax_t = json_sax<basic_json>; + + //////////////// + // exceptions // + //////////////// + + /// @name exceptions + /// Classes to implement user-defined exceptions. + /// @{ + + /// @copydoc detail::exception + using exception = detail::exception; + /// @copydoc detail::parse_error + using parse_error = detail::parse_error; + /// @copydoc detail::invalid_iterator + using invalid_iterator = detail::invalid_iterator; + /// @copydoc detail::type_error + using type_error = detail::type_error; + /// @copydoc detail::out_of_range + using out_of_range = detail::out_of_range; + /// @copydoc detail::other_error + using other_error = detail::other_error; + + /// @} + + + ///////////////////// + // container types // + ///////////////////// + + /// @name container types + /// The canonic container types to use @ref basic_json like any other STL + /// container. + /// @{ + + /// the type of elements in a basic_json container + using value_type = basic_json; + + /// the type of an element reference + using reference = value_type&; + /// the type of an element const reference + using const_reference = const value_type&; + + /// a type to represent differences between iterators + using difference_type = std::ptrdiff_t; + /// a type to represent container sizes + using size_type = std::size_t; + + /// the allocator type + using allocator_type = AllocatorType<basic_json>; + + /// the type of an element pointer + using pointer = typename std::allocator_traits<allocator_type>::pointer; + /// the type of an element const pointer + using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer; + + /// an iterator for a basic_json container + using iterator = iter_impl<basic_json>; + /// a const iterator for a basic_json container + using const_iterator = iter_impl<const basic_json>; + /// a reverse iterator for a basic_json container + using reverse_iterator = json_reverse_iterator<typename basic_json::iterator>; + /// a const reverse iterator for a basic_json container + using const_reverse_iterator = json_reverse_iterator<typename basic_json::const_iterator>; + + /// @} + + + /*! + @brief returns the allocator associated with the container + */ + static allocator_type get_allocator() + { + return allocator_type(); + } + + /*! + @brief returns version information on the library + + This function returns a JSON object with information about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @complexity Constant. + + @since 2.1.0 + */ + JSON_NODISCARD + static basic_json meta() + { + basic_json result; + + result["copyright"] = "(C) 2013-2017 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"]["string"] = + std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_PATCH); + result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; + result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; + result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; +#elif defined(__clang__) + result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; +#elif defined(_MSC_VER) + result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; +#elif defined(__PGI) + result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; +#elif defined(__SUNPRO_CC) + result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; +#else + result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + + + /////////////////////////// + // JSON value data types // + /////////////////////////// + + /// @name JSON value data types + /// The data types to store a JSON value. These types are derived from + /// the template arguments passed to class @ref basic_json. + /// @{ + +#if defined(JSON_HAS_CPP_14) + // Use transparent comparator if possible, combined with perfect forwarding + // on find() and count() calls prevents unnecessary string construction. + using object_comparator_t = std::less<>; +#else + using object_comparator_t = std::less<StringType>; +#endif + + /*! + @brief a type for an object + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows: + > An object is an unordered collection of zero or more name/value pairs, + > where a name is a string and a value is a string, number, boolean, null, + > object, or array. + + To store objects in C++, a type is defined by the template parameters + described below. + + @tparam ObjectType the container to store objects (e.g., `std::map` or + `std::unordered_map`) + @tparam StringType the type of the keys or names (e.g., `std::string`). + The comparison function `std::less<StringType>` is used to order elements + inside the container. + @tparam AllocatorType the allocator to use for objects (e.g., + `std::allocator`) + + #### Default type + + With the default values for @a ObjectType (`std::map`), @a StringType + (`std::string`), and @a AllocatorType (`std::allocator`), the default + value for @a object_t is: + + @code {.cpp} + std::map< + std::string, // key_type + basic_json, // value_type + std::less<std::string>, // key_compare + std::allocator<std::pair<const std::string, basic_json>> // allocator_type + > + @endcode + + #### Behavior + + The choice of @a object_t influences the behavior of the JSON class. With + the default type, objects have the following behavior: + + - When all names are unique, objects will be interoperable in the sense + that all software implementations receiving that object will agree on + the name-value mappings. + - When the names within an object are not unique, it is unspecified which + one of the values for a given key will be chosen. For instance, + `{"key": 2, "key": 1}` could be equal to either `{"key": 1}` or + `{"key": 2}`. + - Internally, name/value pairs are stored in lexicographical order of the + names. Objects will also be serialized (see @ref dump) in this order. + For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored + and serialized as `{"a": 2, "b": 1}`. + - When comparing objects, the order of the name/value pairs is irrelevant. + This makes objects interoperable in the sense that they will not be + affected by these differences. For instance, `{"b": 1, "a": 2}` and + `{"a": 2, "b": 1}` will be treated as equal. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the object's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON object. + + #### Storage + + Objects are stored as pointers in a @ref basic_json type. That is, for any + access to object values, a pointer of type `object_t*` must be + dereferenced. + + @sa @ref array_t -- type for an array value + + @since version 1.0.0 + + @note The order name/value pairs are added to the object is *not* + preserved by the library. Therefore, iterating an object may return + name/value pairs in a different order than they were originally stored. In + fact, keys will be traversed in alphabetical order as `std::map` with + `std::less` is used by default. Please note this behavior conforms to [RFC + 7159](http://rfc7159.net/rfc7159), because any order implements the + specified "unordered" nature of JSON objects. + */ + using object_t = ObjectType<StringType, + basic_json, + object_comparator_t, + AllocatorType<std::pair<const StringType, + basic_json>>>; + + /*! + @brief a type for an array + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows: + > An array is an ordered sequence of zero or more values. + + To store objects in C++, a type is defined by the template parameters + explained below. + + @tparam ArrayType container type to store arrays (e.g., `std::vector` or + `std::list`) + @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) + + #### Default type + + With the default values for @a ArrayType (`std::vector`) and @a + AllocatorType (`std::allocator`), the default value for @a array_t is: + + @code {.cpp} + std::vector< + basic_json, // value_type + std::allocator<basic_json> // allocator_type + > + @endcode + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the array's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON array. + + #### Storage + + Arrays are stored as pointers in a @ref basic_json type. That is, for any + access to array values, a pointer of type `array_t*` must be dereferenced. + + @sa @ref object_t -- type for an object value + + @since version 1.0.0 + */ + using array_t = ArrayType<basic_json, AllocatorType<basic_json>>; + + /*! + @brief a type for a string + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows: + > A string is a sequence of zero or more Unicode characters. + + To store objects in C++, a type is defined by the template parameter + described below. Unicode values are split by the JSON class into + byte-sized characters during deserialization. + + @tparam StringType the container to store strings (e.g., `std::string`). + Note this container is used for keys/names in objects, see @ref object_t. + + #### Default type + + With the default values for @a StringType (`std::string`), the default + value for @a string_t is: + + @code {.cpp} + std::string + @endcode + + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + + #### String comparison + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > Software implementations are typically required to test names of object + > members for equality. Implementations that transform the textual + > representation into sequences of Unicode code units and then perform the + > comparison numerically, code unit by code unit, are interoperable in the + > sense that implementations will agree in all cases on equality or + > inequality of two strings. For example, implementations that compare + > strings with escaped characters unconverted may incorrectly find that + > `"a\\b"` and `"a\u005Cb"` are not equal. + + This implementation is interoperable as it does compare strings code unit + by code unit. + + #### Storage + + String values are stored as pointers in a @ref basic_json type. That is, + for any access to string values, a pointer of type `string_t*` must be + dereferenced. + + @since version 1.0.0 + */ + using string_t = StringType; + + /*! + @brief a type for a boolean + + [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a + type which differentiates the two literals `true` and `false`. + + To store objects in C++, a type is defined by the template parameter @a + BooleanType which chooses the type to use. + + #### Default type + + With the default values for @a BooleanType (`bool`), the default value for + @a boolean_t is: + + @code {.cpp} + bool + @endcode + + #### Storage + + Boolean values are stored directly inside a @ref basic_json type. + + @since version 1.0.0 + */ + using boolean_t = BooleanType; + + /*! + @brief a type for a number (integer) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store integer numbers in C++, a type is defined by the template + parameter @a NumberIntegerType which chooses the type to use. + + #### Default type + + With the default values for @a NumberIntegerType (`int64_t`), the default + value for @a number_integer_t is: + + @code {.cpp} + int64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `9223372036854775807` (INT64_MAX) and the minimal integer number + that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers + that are out of range will yield over/underflow when used in a + constructor. During deserialization, too large or small integer numbers + will be automatically be stored as @ref number_unsigned_t or @ref + number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange of the exactly supported range [INT64_MIN, + INT64_MAX], this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_integer_t = NumberIntegerType; + + /*! + @brief a type for a number (unsigned) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store unsigned integer numbers in C++, a type is defined by the + template parameter @a NumberUnsignedType which chooses the type to use. + + #### Default type + + With the default values for @a NumberUnsignedType (`uint64_t`), the + default value for @a number_unsigned_t is: + + @code {.cpp} + uint64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `18446744073709551615` (UINT64_MAX) and the minimal integer + number that can be stored is `0`. Integer numbers that are out of range + will yield over/underflow when used in a constructor. During + deserialization, too large or small integer numbers will be automatically + be stored as @ref number_integer_t or @ref number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange (when considered in conjunction with the + number_integer_t type) of the exactly supported range [0, UINT64_MAX], + this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + @sa @ref number_integer_t -- type for number values (integer) + + @since version 2.0.0 + */ + using number_unsigned_t = NumberUnsignedType; + + /*! + @brief a type for a number (floating-point) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store floating-point numbers in C++, a type is defined by the template + parameter @a NumberFloatType which chooses the type to use. + + #### Default type + + With the default values for @a NumberFloatType (`double`), the default + value for @a number_float_t is: + + @code {.cpp} + double + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in floating-point literals will be ignored. Internally, + the value will be stored as decimal number. For instance, the C++ + floating-point literal `01.2` will be serialized to `1.2`. During + deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > This specification allows implementations to set limits on the range and + > precision of numbers accepted. Since software that implements IEEE + > 754-2008 binary64 (double precision) numbers is generally available and + > widely used, good interoperability can be achieved by implementations + > that expect no more precision or range than these provide, in the sense + > that implementations will approximate JSON numbers within the expected + > precision. + + This implementation does exactly follow this approach, as it uses double + precision floating-point numbers. Note values smaller than + `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` + will be stored as NaN internally and be serialized to `null`. + + #### Storage + + Floating-point number values are stored directly inside a @ref basic_json + type. + + @sa @ref number_integer_t -- type for number values (integer) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_float_t = NumberFloatType; + + /// @} + + private: + + /// helper for exception-safe object creation + template<typename T, typename... Args> + static T* create(Args&& ... args) + { + AllocatorType<T> alloc; + using AllocatorTraits = std::allocator_traits<AllocatorType<T>>; + + auto deleter = [&](T * object) + { + AllocatorTraits::deallocate(alloc, object, 1); + }; + std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter); + AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...); + assert(object != nullptr); + return object.release(); + } + + //////////////////////// + // JSON value storage // + //////////////////////// + + /*! + @brief a JSON value + + The actual storage for a JSON value of the @ref basic_json class. This + union combines the different storage types for the JSON value types + defined in @ref value_t. + + JSON type | value_t type | used type + --------- | --------------- | ------------------------ + object | object | pointer to @ref object_t + array | array | pointer to @ref array_t + string | string | pointer to @ref string_t + boolean | boolean | @ref boolean_t + number | number_integer | @ref number_integer_t + number | number_unsigned | @ref number_unsigned_t + number | number_float | @ref number_float_t + null | null | *no value is stored* + + @note Variable-length types (objects, arrays, and strings) are stored as + pointers. The size of the union should not exceed 64 bits if the default + value types are used. + + @since version 1.0.0 + */ + union json_value + { + /// object (stored with pointer to save storage) + object_t* object; + /// array (stored with pointer to save storage) + array_t* array; + /// string (stored with pointer to save storage) + string_t* string; + /// boolean + boolean_t boolean; + /// number (integer) + number_integer_t number_integer; + /// number (unsigned integer) + number_unsigned_t number_unsigned; + /// number (floating-point) + number_float_t number_float; + + /// default constructor (for null values) + json_value() = default; + /// constructor for booleans + json_value(boolean_t v) noexcept : boolean(v) {} + /// constructor for numbers (integer) + json_value(number_integer_t v) noexcept : number_integer(v) {} + /// constructor for numbers (unsigned) + json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} + /// constructor for numbers (floating-point) + json_value(number_float_t v) noexcept : number_float(v) {} + /// constructor for empty values of a given type + json_value(value_t t) + { + switch (t) + { + case value_t::object: + { + object = create<object_t>(); + break; + } + + case value_t::array: + { + array = create<array_t>(); + break; + } + + case value_t::string: + { + string = create<string_t>(""); + break; + } + + case value_t::boolean: + { + boolean = boolean_t(false); + break; + } + + case value_t::number_integer: + { + number_integer = number_integer_t(0); + break; + } + + case value_t::number_unsigned: + { + number_unsigned = number_unsigned_t(0); + break; + } + + case value_t::number_float: + { + number_float = number_float_t(0.0); + break; + } + + case value_t::null: + { + object = nullptr; // silence warning, see #821 + break; + } + + default: + { + object = nullptr; // silence warning, see #821 + if (JSON_UNLIKELY(t == value_t::null)) + { + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.6.1")); // LCOV_EXCL_LINE + } + break; + } + } + } + + /// constructor for strings + json_value(const string_t& value) + { + string = create<string_t>(value); + } + + /// constructor for rvalue strings + json_value(string_t&& value) + { + string = create<string_t>(std::move(value)); + } + + /// constructor for objects + json_value(const object_t& value) + { + object = create<object_t>(value); + } + + /// constructor for rvalue objects + json_value(object_t&& value) + { + object = create<object_t>(std::move(value)); + } + + /// constructor for arrays + json_value(const array_t& value) + { + array = create<array_t>(value); + } + + /// constructor for rvalue arrays + json_value(array_t&& value) + { + array = create<array_t>(std::move(value)); + } + + void destroy(value_t t) noexcept + { + switch (t) + { + case value_t::object: + { + AllocatorType<object_t> alloc; + std::allocator_traits<decltype(alloc)>::destroy(alloc, object); + std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1); + break; + } + + case value_t::array: + { + AllocatorType<array_t> alloc; + std::allocator_traits<decltype(alloc)>::destroy(alloc, array); + std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1); + break; + } + + case value_t::string: + { + AllocatorType<string_t> alloc; + std::allocator_traits<decltype(alloc)>::destroy(alloc, string); + std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1); + break; + } + + default: + { + break; + } + } + } + }; + + /*! + @brief checks the class invariants + + This function asserts the class invariants. It needs to be called at the + end of every constructor to make sure that created objects respect the + invariant. Furthermore, it has to be called each time the type of a JSON + value is changed, because the invariant expresses a relationship between + @a m_type and @a m_value. + */ + void assert_invariant() const noexcept + { + assert(m_type != value_t::object or m_value.object != nullptr); + assert(m_type != value_t::array or m_value.array != nullptr); + assert(m_type != value_t::string or m_value.string != nullptr); + } + + public: + ////////////////////////// + // JSON parser callback // + ////////////////////////// + + /*! + @brief parser event types + + The parser callback distinguishes the following events: + - `object_start`: the parser read `{` and started to process a JSON object + - `key`: the parser read a key of a value in an object + - `object_end`: the parser read `}` and finished processing a JSON object + - `array_start`: the parser read `[` and started to process a JSON array + - `array_end`: the parser read `]` and finished processing a JSON array + - `value`: the parser finished reading a JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + @sa @ref parser_callback_t for more information and examples + */ + using parse_event_t = typename parser::parse_event_t; + + /*! + @brief per-element parser callback type + + With a parser callback function, the result of parsing a JSON text can be + influenced. When passed to @ref parse, it is called on certain events + (passed as @ref parse_event_t via parameter @a event) with a set recursion + depth @a depth and context JSON value @a parsed. The return value of the + callback function is a boolean indicating whether the element that emitted + the callback shall be kept or not. + + We distinguish six scenarios (determined by the event type) in which the + callback function can be called. The following table describes the values + of the parameters @a depth, @a event, and @a parsed. + + parameter @a event | description | parameter @a depth | parameter @a parsed + ------------------ | ----------- | ------------------ | ------------------- + parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded + parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key + parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object + parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded + parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array + parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + Discarding a value (i.e., returning `false`) has different effects + depending on the context in which function was called: + + - Discarded values in structured types are skipped. That is, the parser + will behave as if the discarded value was never read. + - In case a value outside a structured type is skipped, it is replaced + with `null`. This case happens if the top-level element is skipped. + + @param[in] depth the depth of the recursion during parsing + + @param[in] event an event of type parse_event_t indicating the context in + the callback function has been called + + @param[in,out] parsed the current intermediate parse result; note that + writing to this value has no effect for parse_event_t::key events + + @return Whether the JSON value which called the function during parsing + should be kept (`true`) or not (`false`). In the latter case, it is either + skipped completely or replaced by an empty discarded object. + + @sa @ref parse for examples + + @since version 1.0.0 + */ + using parser_callback_t = typename parser::parser_callback_t; + + ////////////////// + // constructors // + ////////////////// + + /// @name constructors and destructors + /// Constructors of class @ref basic_json, copy/move constructor, copy + /// assignment, static functions creating objects, and the destructor. + /// @{ + + /*! + @brief create an empty value with a given type + + Create an empty JSON value with a given type. The value will be default + initialized with an empty value which depends on the type: + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @param[in] v the type of the value to create + + @complexity Constant. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows the constructor for different @ref + value_t values,basic_json__value_t} + + @sa @ref clear() -- restores the postcondition of this constructor + + @since version 1.0.0 + */ + basic_json(const value_t v) + : m_type(v), m_value(v) + { + assert_invariant(); + } + + /*! + @brief create a null object + + Create a `null` JSON value. It either takes a null pointer as parameter + (explicitly creating `null`) or no parameter (implicitly creating `null`). + The passed null pointer itself is not read -- it is only used to choose + the right constructor. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @liveexample{The following code shows the constructor with and without a + null pointer parameter.,basic_json__nullptr_t} + + @since version 1.0.0 + */ + basic_json(std::nullptr_t = nullptr) noexcept + : basic_json(value_t::null) + { + assert_invariant(); + } + + /*! + @brief create a JSON value + + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exists. The constructor forwards the + parameter @a val to that method (to `json_serializer<U>::to_json` method + with `U = uncvref_t<CompatibleType>`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, + `std::multiset`, and `std::unordered_multiset` with a `value_type` from + which a @ref basic_json value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a different @ref basic_json type (i.e. with different template arguments) + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - @ref @ref json_serializer<U> has a + `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t<CompatibleType>` + + @param[in] val the value to be forwarded to the respective constructor + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} + + @since version 2.1.0 + */ + template <typename CompatibleType, + typename U = detail::uncvref_t<CompatibleType>, + detail::enable_if_t< + not detail::is_basic_json<U>::value and detail::is_compatible_type<basic_json_t, U>::value, int> = 0> + basic_json(CompatibleType && val) noexcept(noexcept( + JSONSerializer<U>::to_json(std::declval<basic_json_t&>(), + std::forward<CompatibleType>(val)))) + { + JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val)); + assert_invariant(); + } + + /*! + @brief create a JSON value from an existing one + + This is a constructor for existing @ref basic_json types. + It does not hijack copy/move constructors, since the parameter has different + template arguments than the current ones. + + The constructor tries to convert the internal @ref m_value of the parameter. + + @tparam BasicJsonType a type such that: + - @a BasicJsonType is a @ref basic_json type. + - @a BasicJsonType has different template arguments than @ref basic_json_t. + + @param[in] val the @ref basic_json value to be converted. + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @since version 3.2.0 + */ + template <typename BasicJsonType, + detail::enable_if_t< + detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0> + basic_json(const BasicJsonType& val) + { + using other_boolean_t = typename BasicJsonType::boolean_t; + using other_number_float_t = typename BasicJsonType::number_float_t; + using other_number_integer_t = typename BasicJsonType::number_integer_t; + using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using other_string_t = typename BasicJsonType::string_t; + using other_object_t = typename BasicJsonType::object_t; + using other_array_t = typename BasicJsonType::array_t; + + switch (val.type()) + { + case value_t::boolean: + JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>()); + break; + case value_t::number_float: + JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>()); + break; + case value_t::number_integer: + JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>()); + break; + case value_t::number_unsigned: + JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>()); + break; + case value_t::string: + JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>()); + break; + case value_t::object: + JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>()); + break; + case value_t::array: + JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>()); + break; + case value_t::null: + *this = nullptr; + break; + case value_t::discarded: + m_type = value_t::discarded; + break; + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + assert_invariant(); + } + + /*! + @brief create a container (array or object) from an initializer list + + Creates a JSON value of type array or object from the passed initializer + list @a init. In case @a type_deduction is `true` (default), the type of + the JSON value to be created is deducted from the initializer list @a init + according to the following rules: + + 1. If the list is empty, an empty JSON object value `{}` is created. + 2. If the list consists of pairs whose first element is a string, a JSON + object value is created where the first elements of the pairs are + treated as keys and the second elements are as values. + 3. In all other cases, an array is created. + + The rules aim to create the best fit between a C++ initializer list and + JSON values. The rationale is as follows: + + 1. The empty initializer list is written as `{}` which is exactly an empty + JSON object. + 2. C++ has no way of describing mapped types other than to list a list of + pairs. As JSON requires that keys must be of type string, rule 2 is the + weakest constraint one can pose on initializer lists to interpret them + as an object. + 3. In all other cases, the initializer list could not be interpreted as + JSON object type, so interpreting it as JSON array type is safe. + + With the rules described above, the following JSON values cannot be + expressed by an initializer list: + + - the empty array (`[]`): use @ref array(initializer_list_t) + with an empty initializer list in this case + - arrays whose elements satisfy rule 2: use @ref + array(initializer_list_t) with the same initializer list + in this case + + @note When used without parentheses around an empty initializer list, @ref + basic_json() is called instead of this function, yielding the JSON null + value. + + @param[in] init initializer list with JSON values + + @param[in] type_deduction internal parameter; when set to `true`, the type + of the JSON value is deducted from the initializer list @a init; when set + to `false`, the type provided via @a manual_type is forced. This mode is + used by the functions @ref array(initializer_list_t) and + @ref object(initializer_list_t). + + @param[in] manual_type internal parameter; when @a type_deduction is set + to `false`, the created JSON value will use the provided type (only @ref + value_t::array and @ref value_t::object are valid); when @a type_deduction + is set to `true`, this parameter has no effect + + @throw type_error.301 if @a type_deduction is `false`, @a manual_type is + `value_t::object`, but @a init contains an element which is not a pair + whose first element is a string. In this case, the constructor could not + create an object. If @a type_deduction would have be `true`, an array + would have been created. See @ref object(initializer_list_t) + for an example. + + @complexity Linear in the size of the initializer list @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows how JSON values are created from + initializer lists.,basic_json__list_init_t} + + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + basic_json(initializer_list_t init, + bool type_deduction = true, + value_t manual_type = value_t::array) + { + // check if each element is an array with two elements whose first + // element is a string + bool is_an_object = std::all_of(init.begin(), init.end(), + [](const detail::json_ref<basic_json>& element_ref) + { + return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string(); + }); + + // adjust type if type deduction is not wanted + if (not type_deduction) + { + // if array is wanted, do not create an object though possible + if (manual_type == value_t::array) + { + is_an_object = false; + } + + // if object is wanted but impossible, throw an exception + if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object)) + { + JSON_THROW(type_error::create(301, "cannot create object from initializer list")); + } + } + + if (is_an_object) + { + // the initializer list is a list of pairs -> create object + m_type = value_t::object; + m_value = value_t::object; + + std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref) + { + auto element = element_ref.moved_or_copied(); + m_value.object->emplace( + std::move(*((*element.m_value.array)[0].m_value.string)), + std::move((*element.m_value.array)[1])); + }); + } + else + { + // the initializer list describes an array -> create array + m_type = value_t::array; + m_value.array = create<array_t>(init.begin(), init.end()); + } + + assert_invariant(); + } + + /*! + @brief explicitly create an array from an initializer list + + Creates a JSON array value from a given initializer list. That is, given a + list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the + initializer list is empty, the empty array `[]` is created. + + @note This function is only needed to express two edge cases that cannot + be realized with the initializer list constructor (@ref + basic_json(initializer_list_t, bool, value_t)). These cases + are: + 1. creating an array whose elements are all pairs whose first element is a + string -- in this case, the initializer list constructor would create an + object, taking the first elements as keys + 2. creating an empty array -- passing the empty initializer list to the + initializer list constructor yields an empty object + + @param[in] init initializer list with JSON values to create an array from + (optional) + + @return JSON array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `array` + function.,array} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + JSON_NODISCARD + static basic_json array(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::array); + } + + /*! + @brief explicitly create an object from an initializer list + + Creates a JSON object value from a given initializer list. The initializer + lists elements must be pairs, and their first elements must be strings. If + the initializer list is empty, the empty object `{}` is created. + + @note This function is only added for symmetry reasons. In contrast to the + related function @ref array(initializer_list_t), there are + no cases which can only be expressed by this function. That is, any + initializer list @a init can also be passed to the initializer list + constructor @ref basic_json(initializer_list_t, bool, value_t). + + @param[in] init initializer list to create an object from (optional) + + @return JSON object value + + @throw type_error.301 if @a init is not a list of pairs whose first + elements are strings. In this case, no object can be created. When such a + value is passed to @ref basic_json(initializer_list_t, bool, value_t), + an array would have been created from the passed initializer list @a init. + See example below. + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `object` + function.,object} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + + @since version 1.0.0 + */ + JSON_NODISCARD + static basic_json object(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::object); + } + + /*! + @brief construct an array with count copies of given value + + Constructs a JSON array value by creating @a cnt copies of a passed value. + In case @a cnt is `0`, an empty array is created. + + @param[in] cnt the number of JSON copies of @a val to create + @param[in] val the JSON value to copy + + @post `std::distance(begin(),end()) == cnt` holds. + + @complexity Linear in @a cnt. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows examples for the @ref + basic_json(size_type\, const basic_json&) + constructor.,basic_json__size_type_basic_json} + + @since version 1.0.0 + */ + basic_json(size_type cnt, const basic_json& val) + : m_type(value_t::array) + { + m_value.array = create<array_t>(cnt, val); + assert_invariant(); + } + + /*! + @brief construct a JSON container given an iterator range + + Constructs the JSON value with the contents of the range `[first, last)`. + The semantics depends on the different types a JSON value can have: + - In case of a null type, invalid_iterator.206 is thrown. + - In case of other primitive types (number, boolean, or string), @a first + must be `begin()` and @a last must be `end()`. In this case, the value is + copied. Otherwise, invalid_iterator.204 is thrown. + - In case of structured types (array, object), the constructor behaves as + similar versions for `std::vector` or `std::map`; that is, a JSON array + or object is constructed from the values in the range. + + @tparam InputIT an input iterator type (@ref iterator or @ref + const_iterator) + + @param[in] first begin of the range to copy from (included) + @param[in] last end of the range to copy from (excluded) + + @pre Iterators @a first and @a last must be initialized. **This + precondition is enforced with an assertion (see warning).** If + assertions are switched off, a violation of this precondition yields + undefined behavior. + + @pre Range `[first, last)` is valid. Usually, this precondition cannot be + checked efficiently. Only certain edge cases are detected; see the + description of the exceptions below. A violation of this precondition + yields undefined behavior. + + @warning A precondition is enforced with a runtime assertion that will + result in calling `std::abort` if this precondition is not met. + Assertions can be disabled by defining `NDEBUG` at compile time. + See https://en.cppreference.com/w/cpp/error/assert for more + information. + + @throw invalid_iterator.201 if iterators @a first and @a last are not + compatible (i.e., do not belong to the same JSON value). In this case, + the range `[first, last)` is undefined. + @throw invalid_iterator.204 if iterators @a first and @a last belong to a + primitive type (number, boolean, or string), but @a first does not point + to the first element any more. In this case, the range `[first, last)` is + undefined. See example code below. + @throw invalid_iterator.206 if iterators @a first and @a last belong to a + null value. In this case, the range `[first, last)` is undefined. + + @complexity Linear in distance between @a first and @a last. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows several ways to create JSON values by + specifying a subrange with iterators.,basic_json__InputIt_InputIt} + + @since version 1.0.0 + */ + template<class InputIT, typename std::enable_if< + std::is_same<InputIT, typename basic_json_t::iterator>::value or + std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0> + basic_json(InputIT first, InputIT last) + { + assert(first.m_object != nullptr); + assert(last.m_object != nullptr); + + // make sure iterator fits the current value + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(201, "iterators are not compatible")); + } + + // copy type from first iterator + m_type = first.m_object->m_type; + + // check if iterator range is complete for primitive values + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + break; + } + + default: + break; + } + + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = first.m_object->m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = first.m_object->m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value.number_float = first.m_object->m_value.number_float; + break; + } + + case value_t::boolean: + { + m_value.boolean = first.m_object->m_value.boolean; + break; + } + + case value_t::string: + { + m_value = *first.m_object->m_value.string; + break; + } + + case value_t::object: + { + m_value.object = create<object_t>(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + m_value.array = create<array_t>(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + + std::string(first.m_object->type_name()))); + } + + assert_invariant(); + } + + + /////////////////////////////////////// + // other constructors and destructor // + /////////////////////////////////////// + + /// @private + basic_json(const detail::json_ref<basic_json>& ref) + : basic_json(ref.moved_or_copied()) + {} + + /*! + @brief copy constructor + + Creates a copy of a given JSON value. + + @param[in] other the JSON value to copy + + @post `*this == other` + + @complexity Linear in the size of @a other. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + - As postcondition, it holds: `other == basic_json(other)`. + + @liveexample{The following code shows an example for the copy + constructor.,basic_json__basic_json} + + @since version 1.0.0 + */ + basic_json(const basic_json& other) + : m_type(other.m_type) + { + // check of passed value is valid + other.assert_invariant(); + + switch (m_type) + { + case value_t::object: + { + m_value = *other.m_value.object; + break; + } + + case value_t::array: + { + m_value = *other.m_value.array; + break; + } + + case value_t::string: + { + m_value = *other.m_value.string; + break; + } + + case value_t::boolean: + { + m_value = other.m_value.boolean; + break; + } + + case value_t::number_integer: + { + m_value = other.m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value = other.m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value = other.m_value.number_float; + break; + } + + default: + break; + } + + assert_invariant(); + } + + /*! + @brief move constructor + + Move constructor. Constructs a JSON value with the contents of the given + value @a other using move semantics. It "steals" the resources from @a + other and leaves it as JSON null value. + + @param[in,out] other value to move to this object + + @post `*this` has the same value as @a other before the call. + @post @a other is a JSON null value. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @requirement This function helps `basic_json` satisfying the + [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible) + requirements. + + @liveexample{The code below shows the move constructor explicitly called + via std::move.,basic_json__moveconstructor} + + @since version 1.0.0 + */ + basic_json(basic_json&& other) noexcept + : m_type(std::move(other.m_type)), + m_value(std::move(other.m_value)) + { + // check that passed value is valid + other.assert_invariant(); + + // invalidate payload + other.m_type = value_t::null; + other.m_value = {}; + + assert_invariant(); + } + + /*! + @brief copy assignment + + Copy assignment operator. Copies a JSON value via the "copy and swap" + strategy: It is expressed in terms of the copy constructor, destructor, + and the `swap()` member function. + + @param[in] other value to copy from + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + + @liveexample{The code below shows and example for the copy assignment. It + creates a copy of value `a` which is then swapped with `b`. Finally\, the + copy of `a` (which is the null value after the swap) is + destroyed.,basic_json__copyassignment} + + @since version 1.0.0 + */ + basic_json& operator=(basic_json other) noexcept ( + std::is_nothrow_move_constructible<value_t>::value and + std::is_nothrow_move_assignable<value_t>::value and + std::is_nothrow_move_constructible<json_value>::value and + std::is_nothrow_move_assignable<json_value>::value + ) + { + // check that passed value is valid + other.assert_invariant(); + + using std::swap; + swap(m_type, other.m_type); + swap(m_value, other.m_value); + + assert_invariant(); + return *this; + } + + /*! + @brief destructor + + Destroys the JSON value and frees all allocated memory. + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. + + @since version 1.0.0 + */ + ~basic_json() noexcept + { + assert_invariant(); + m_value.destroy(m_type); + } + + /// @} + + public: + /////////////////////// + // object inspection // + /////////////////////// + + /// @name object inspection + /// Functions to inspect the type of a JSON value. + /// @{ + + /*! + @brief serialization + + Serialization function for JSON values. The function tries to mimic + Python's `json.dumps()` function, and currently supports its @a indent + and @a ensure_ascii parameters. + + @param[in] indent If indent is nonnegative, then array elements and object + members will be pretty-printed with that indent level. An indent level of + `0` will only insert newlines. `-1` (the default) selects the most compact + representation. + @param[in] indent_char The character to use for indentation if @a indent is + greater than `0`. The default is ` ` (space). + @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters + in the output are escaped with `\uXXXX` sequences, and the result consists + of ASCII characters only. + @param[in] error_handler how to react on decoding errors; there are three + possible values: `strict` (throws and exception in case a decoding error + occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD), + and `ignore` (ignore invalid UTF-8 sequences during serialization). + + @return string containing the serialization of the JSON value + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @liveexample{The following example shows the effect of different @a indent\, + @a indent_char\, and @a ensure_ascii parameters to the result of the + serialization.,dump} + + @see https://docs.python.org/2/library/json.html#json.dump + + @since version 1.0.0; indentation character @a indent_char, option + @a ensure_ascii and exceptions added in version 3.0.0; error + handlers added in version 3.4.0. + */ + string_t dump(const int indent = -1, + const char indent_char = ' ', + const bool ensure_ascii = false, + const error_handler_t error_handler = error_handler_t::strict) const + { + string_t result; + serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler); + + if (indent >= 0) + { + s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent)); + } + else + { + s.dump(*this, false, ensure_ascii, 0); + } + + return result; + } + + /*! + @brief return the type of the JSON value (explicit) + + Return the type of the JSON value as a value from the @ref value_t + enumeration. + + @return the type of the JSON value + Value type | return value + ------------------------- | ------------------------- + null | value_t::null + boolean | value_t::boolean + string | value_t::string + number (integer) | value_t::number_integer + number (unsigned integer) | value_t::number_unsigned + number (floating-point) | value_t::number_float + object | value_t::object + array | value_t::array + discarded | value_t::discarded + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `type()` for all JSON + types.,type} + + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr value_t type() const noexcept + { + return m_type; + } + + /*! + @brief return whether type is primitive + + This function returns true if and only if the JSON type is primitive + (string, number, boolean, or null). + + @return `true` if type is primitive (string, number, boolean, or null), + `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_primitive()` for all JSON + types.,is_primitive} + + @sa @ref is_structured() -- returns whether JSON value is structured + @sa @ref is_null() -- returns whether JSON value is `null` + @sa @ref is_string() -- returns whether JSON value is a string + @sa @ref is_boolean() -- returns whether JSON value is a boolean + @sa @ref is_number() -- returns whether JSON value is a number + + @since version 1.0.0 + */ + constexpr bool is_primitive() const noexcept + { + return is_null() or is_string() or is_boolean() or is_number(); + } + + /*! + @brief return whether type is structured + + This function returns true if and only if the JSON type is structured + (array or object). + + @return `true` if type is structured (array or object), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_structured()` for all JSON + types.,is_structured} + + @sa @ref is_primitive() -- returns whether value is primitive + @sa @ref is_array() -- returns whether value is an array + @sa @ref is_object() -- returns whether value is an object + + @since version 1.0.0 + */ + constexpr bool is_structured() const noexcept + { + return is_array() or is_object(); + } + + /*! + @brief return whether value is null + + This function returns true if and only if the JSON value is null. + + @return `true` if type is null, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_null()` for all JSON + types.,is_null} + + @since version 1.0.0 + */ + constexpr bool is_null() const noexcept + { + return m_type == value_t::null; + } + + /*! + @brief return whether value is a boolean + + This function returns true if and only if the JSON value is a boolean. + + @return `true` if type is boolean, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_boolean()` for all JSON + types.,is_boolean} + + @since version 1.0.0 + */ + constexpr bool is_boolean() const noexcept + { + return m_type == value_t::boolean; + } + + /*! + @brief return whether value is a number + + This function returns true if and only if the JSON value is a number. This + includes both integer (signed and unsigned) and floating-point values. + + @return `true` if type is number (regardless whether integer, unsigned + integer or floating-type), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number()` for all JSON + types.,is_number} + + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number() const noexcept + { + return is_number_integer() or is_number_float(); + } + + /*! + @brief return whether value is an integer number + + This function returns true if and only if the JSON value is a signed or + unsigned integer number. This excludes floating-point values. + + @return `true` if type is an integer or unsigned integer number, `false` + otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_integer()` for all + JSON types.,is_number_integer} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number_integer() const noexcept + { + return m_type == value_t::number_integer or m_type == value_t::number_unsigned; + } + + /*! + @brief return whether value is an unsigned integer number + + This function returns true if and only if the JSON value is an unsigned + integer number. This excludes floating-point and signed integer values. + + @return `true` if type is an unsigned integer number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_unsigned()` for all + JSON types.,is_number_unsigned} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 2.0.0 + */ + constexpr bool is_number_unsigned() const noexcept + { + return m_type == value_t::number_unsigned; + } + + /*! + @brief return whether value is a floating-point number + + This function returns true if and only if the JSON value is a + floating-point number. This excludes signed and unsigned integer values. + + @return `true` if type is a floating-point number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_float()` for all + JSON types.,is_number_float} + + @sa @ref is_number() -- check if value is number + @sa @ref is_number_integer() -- check if value is an integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + + @since version 1.0.0 + */ + constexpr bool is_number_float() const noexcept + { + return m_type == value_t::number_float; + } + + /*! + @brief return whether value is an object + + This function returns true if and only if the JSON value is an object. + + @return `true` if type is object, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_object()` for all JSON + types.,is_object} + + @since version 1.0.0 + */ + constexpr bool is_object() const noexcept + { + return m_type == value_t::object; + } + + /*! + @brief return whether value is an array + + This function returns true if and only if the JSON value is an array. + + @return `true` if type is array, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_array()` for all JSON + types.,is_array} + + @since version 1.0.0 + */ + constexpr bool is_array() const noexcept + { + return m_type == value_t::array; + } + + /*! + @brief return whether value is a string + + This function returns true if and only if the JSON value is a string. + + @return `true` if type is string, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_string()` for all JSON + types.,is_string} + + @since version 1.0.0 + */ + constexpr bool is_string() const noexcept + { + return m_type == value_t::string; + } + + /*! + @brief return whether value is discarded + + This function returns true if and only if the JSON value was discarded + during parsing with a callback function (see @ref parser_callback_t). + + @note This function will always be `false` for JSON values after parsing. + That is, discarded values can only occur during parsing, but will be + removed when inside a structured value or replaced by null in other cases. + + @return `true` if type is discarded, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_discarded()` for all JSON + types.,is_discarded} + + @since version 1.0.0 + */ + constexpr bool is_discarded() const noexcept + { + return m_type == value_t::discarded; + } + + /*! + @brief return the type of the JSON value (implicit) + + Implicitly return the type of the JSON value as a value from the @ref + value_t enumeration. + + @return the type of the JSON value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies the @ref value_t operator for + all JSON types.,operator__value_t} + + @sa @ref type() -- return the type of the JSON value (explicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr operator value_t() const noexcept + { + return m_type; + } + + /// @} + + private: + ////////////////// + // value access // + ////////////////// + + /// get a boolean (explicit) + boolean_t get_impl(boolean_t* /*unused*/) const + { + if (JSON_LIKELY(is_boolean())) + { + return m_value.boolean; + } + + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()))); + } + + /// get a pointer to the value (object) + object_t* get_impl_ptr(object_t* /*unused*/) noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (object) + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (array) + array_t* get_impl_ptr(array_t* /*unused*/) noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (array) + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (string) + string_t* get_impl_ptr(string_t* /*unused*/) noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (string) + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (boolean) + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (boolean) + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (integer number) + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (integer number) + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (unsigned number) + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (unsigned number) + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (floating-point number) + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /// get a pointer to the value (floating-point number) + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /*! + @brief helper function to implement get_ref() + + This function helps to implement get_ref() without code duplication for + const and non-const overloads + + @tparam ThisType will be deduced as `basic_json` or `const basic_json` + + @throw type_error.303 if ReferenceType does not match underlying value + type of the current JSON + */ + template<typename ReferenceType, typename ThisType> + static ReferenceType get_ref_impl(ThisType& obj) + { + // delegate the call to get_ptr<>() + auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>(); + + if (JSON_LIKELY(ptr != nullptr)) + { + return *ptr; + } + + JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()))); + } + + public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ + template<typename BasicJsonType, detail::enable_if_t< + std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value, + int> = 0> + basic_json get() const + { + return *this; + } + + /*! + @brief get special-case overload + + This overloads converts the current @ref basic_json in a different + @ref basic_json type + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this, converted into @tparam BasicJsonType + + @complexity Depending on the implementation of the called `from_json()` + method. + + @since version 3.2.0 + */ + template<typename BasicJsonType, detail::enable_if_t< + not std::is_same<BasicJsonType, basic_json>::value and + detail::is_basic_json<BasicJsonType>::value, int> = 0> + BasicJsonType get() const + { + return *this; + } + + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) + and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); + return ret; + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + - @ref json_serializer<ValueType> does not have a `from_json()` method of + the form `ValueType from_json(const basic_json&)` + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector<short>`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map<std::string\, + json>`.,get__ValueType_const} + + @since version 2.1.0 + */ + template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>, + detail::enable_if_t < + not detail::is_basic_json<ValueType>::value and + detail::has_from_json<basic_json_t, ValueType>::value and + not detail::has_non_default_from_json<basic_json_t, ValueType>::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>()))) + { + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get<const basic_json_t>(), which is why we + // still need the uncvref + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + static_assert(std::is_default_constructible<ValueType>::value, + "types must be DefaultConstructible when used with get()"); + + ValueType ret; + JSONSerializer<ValueType>::from_json(*this, ret); + return ret; + } + + /*! + @brief get a value (explicit); special case + + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) + and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). + The value is converted by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer<ValueTypeCV>::from_json(*this); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json and + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `ValueType from_json(const basic_json&)` + + @note If @ref json_serializer<ValueType> has both overloads of + `from_json()`, this one is chosen. + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer<ValueType> `from_json()` method throws + + @since version 2.1.0 + */ + template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>, + detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and + detail::has_non_default_from_json<basic_json_t, ValueType>::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>()))) + { + static_assert(not std::is_reference<ValueTypeCV>::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return JSONSerializer<ValueTypeCV>::from_json(*this); + } + + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value. + The value is filled into the input parameter by calling the @ref json_serializer<ValueType> + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType v; + JSONSerializer<ValueType>::from_json(*this, v); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer<ValueType> has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + + @tparam ValueType the input parameter type. + + @return the input parameter, allowing chaining calls. + + @throw what @ref json_serializer<ValueType> `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector<short>`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map<std::string\, + json>`.,get_to} + + @since version 3.3.0 + */ + template<typename ValueType, + detail::enable_if_t < + not detail::is_basic_json<ValueType>::value and + detail::has_from_json<basic_json_t, ValueType>::value, + int> = 0> + ValueType & get_to(ValueType& v) const noexcept(noexcept( + JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v))) + { + JSONSerializer<ValueType>::from_json(*this, v); + return v; + } + + + /*! + @brief get a pointer value (implicit) + + Implicit pointer access to the internally stored JSON value. No copies are + made. + + @warning Writing data to the pointee of the result yields an undefined + state. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. Enforced by a static + assertion. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get_ptr} + + @since version 1.0.0 + */ + template<typename PointerType, typename std::enable_if< + std::is_pointer<PointerType>::value, int>::type = 0> + auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) + { + // delegate the call to get_impl_ptr<>() + return get_impl_ptr(static_cast<PointerType>(nullptr)); + } + + /*! + @brief get a pointer value (implicit) + @copydoc get_ptr() + */ + template<typename PointerType, typename std::enable_if< + std::is_pointer<PointerType>::value and + std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0> + constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) + { + // delegate the call to get_impl_ptr<>() const + return get_impl_ptr(static_cast<PointerType>(nullptr)); + } + + /*! + @brief get a pointer value (explicit) + + Explicit pointer access to the internally stored JSON value. No copies are + made. + + @warning The pointer becomes invalid if the underlying JSON object + changes. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get__PointerType} + + @sa @ref get_ptr() for explicit pointer-member access + + @since version 1.0.0 + */ + template<typename PointerType, typename std::enable_if< + std::is_pointer<PointerType>::value, int>::type = 0> + auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>()) + { + // delegate the call to get_ptr + return get_ptr<PointerType>(); + } + + /*! + @brief get a pointer value (explicit) + @copydoc get() + */ + template<typename PointerType, typename std::enable_if< + std::is_pointer<PointerType>::value, int>::type = 0> + constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>()) + { + // delegate the call to get_ptr + return get_ptr<PointerType>(); + } + + /*! + @brief get a reference value (implicit) + + Implicit reference access to the internally stored JSON value. No copies + are made. + + @warning Writing data to the referee of the result yields an undefined + state. + + @tparam ReferenceType reference type; must be a reference to @ref array_t, + @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or + @ref number_float_t. Enforced by static assertion. + + @return reference to the internally stored JSON value if the requested + reference type @a ReferenceType fits to the JSON value; throws + type_error.303 otherwise + + @throw type_error.303 in case passed type @a ReferenceType is incompatible + with the stored JSON value; see example below + + @complexity Constant. + + @liveexample{The example shows several calls to `get_ref()`.,get_ref} + + @since version 1.1.0 + */ + template<typename ReferenceType, typename std::enable_if< + std::is_reference<ReferenceType>::value, int>::type = 0> + ReferenceType get_ref() + { + // delegate call to get_ref_impl + return get_ref_impl<ReferenceType>(*this); + } + + /*! + @brief get a reference value (implicit) + @copydoc get_ref() + */ + template<typename ReferenceType, typename std::enable_if< + std::is_reference<ReferenceType>::value and + std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0> + ReferenceType get_ref() const + { + // delegate call to get_ref_impl + return get_ref_impl<ReferenceType>(*this); + } + + /*! + @brief get a value (implicit) + + Implicit type conversion between the JSON value and a compatible value. + The call is realized by calling @ref get() const. + + @tparam ValueType non-pointer type compatible to the JSON value, for + instance `int` for JSON integer numbers, `bool` for JSON booleans, or + `std::vector` types for JSON arrays. The character type of @ref string_t + as well as an initializer list of this type is excluded to avoid + ambiguities as these types implicitly convert to `std::string`. + + @return copy of the JSON value, converted to type @a ValueType + + @throw type_error.302 in case passed type @a ValueType is incompatible + to the JSON value type (e.g., the JSON value is of type boolean, but a + string is requested); see example below + + @complexity Linear in the size of the JSON value. + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector<short>`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map<std::string\, + json>`.,operator__ValueType} + + @since version 1.0.0 + */ + template < typename ValueType, typename std::enable_if < + not std::is_pointer<ValueType>::value and + not std::is_same<ValueType, detail::json_ref<basic_json>>::value and + not std::is_same<ValueType, typename string_t::value_type>::value and + not detail::is_basic_json<ValueType>::value + +#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 + and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value +#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914)) + and not std::is_same<ValueType, typename std::string_view>::value +#endif +#endif + and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value + , int >::type = 0 > + operator ValueType() const + { + // delegate the call to get<>() const + return get<ValueType>(); + } + + /// @} + + + //////////////////// + // element access // + //////////////////// + + /// @name element access + /// Access to the JSON value. + /// @{ + + /*! + @brief access specified array element with bounds checking + + Returns a reference to the element at specified location @a idx, with + bounds checking. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__size_type} + */ + reference at(size_type idx) + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element with bounds checking + + Returns a const reference to the element at specified location @a idx, + with bounds checking. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__size_type_const} + */ + const_reference at(size_type idx) const + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a reference to the element at with specified key @a key, with + bounds checking. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__object_t_key_type} + */ + reference at(const typename object_t::key_type& key) + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a const reference to the element at with specified key @a key, + with bounds checking. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__object_t_key_type_const} + */ + const_reference at(const typename object_t::key_type& key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element + + Returns a reference to the element at specified location @a idx. + + @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), + then the array is silently filled up with `null` values to make `idx` a + valid reference to the last stored element. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array or null; in that + cases, using the [] operator with an index makes no sense. + + @complexity Constant if @a idx is in the range of the array. Otherwise + linear in `idx - size()`. + + @liveexample{The example below shows how array elements can be read and + written using `[]` operator. Note the addition of `null` + values.,operatorarray__size_type} + + @since version 1.0.0 + */ + reference operator[](size_type idx) + { + // implicitly convert null value to an empty array + if (is_null()) + { + m_type = value_t::array; + m_value.array = create<array_t>(); + assert_invariant(); + } + + // operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + // fill up array with null values if given idx is outside range + if (idx >= m_value.array->size()) + { + m_value.array->insert(m_value.array->end(), + idx - m_value.array->size() + 1, + basic_json()); + } + + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()))); + } + + /*! + @brief access specified array element + + Returns a const reference to the element at specified location @a idx. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array; in that case, + using the [] operator with an index makes no sense. + + @complexity Constant. + + @liveexample{The example below shows how array elements can be read using + the `[]` operator.,operatorarray__size_type_const} + + @since version 1.0.0 + */ + const_reference operator[](size_type idx) const + { + // const operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + reference operator[](const typename object_t::key_type& key) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create<object_t>(); + assert_invariant(); + } + + // operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + const_reference operator[](const typename object_t::key_type& key) const + { + // const operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template<typename T> + reference operator[](T* key) + { + // implicitly convert null to object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // at only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template<typename T> + const_reference operator[](T* key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()))); + } + + /*! + @brief access specified object element with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(key); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const typename object_t::key_type&), this function + does not throw if the given key @a key was not found. + + @note Unlike @ref operator[](const typename object_t::key_type& key), this + function does not implicitly add an element to the position defined by @a + key. This function is furthermore also applicable to const objects. + + @param[in] key key of the element to access + @param[in] default_value the value to return if @a key is not found + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + + @since version 1.0.0 + */ + template<class ValueType, typename std::enable_if< + std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0> + ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if key is found, return value and given default value otherwise + const auto it = find(key); + if (it != end()) + { + return *it; + } + + return default_value; + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const typename object_t::key_type&, const ValueType&) const + */ + string_t value(const typename object_t::key_type& key, const char* default_value) const + { + return value(key, string_t(default_value)); + } + + /*! + @brief access specified object element via JSON Pointer with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(ptr); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const json_pointer&), this function does not throw + if the given key @a key was not found. + + @param[in] ptr a JSON pointer to the element to access + @param[in] default_value the value to return if @a ptr found no value + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value_ptr} + + @sa @ref operator[](const json_pointer&) for unchecked access by reference + + @since version 2.0.2 + */ + template<class ValueType, typename std::enable_if< + std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0> + ValueType value(const json_pointer& ptr, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if pointer resolves a value, return it or use default value + JSON_TRY + { + return ptr.get_checked(this); + } + JSON_INTERNAL_CATCH (out_of_range&) + { + return default_value; + } + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const json_pointer&, ValueType) const + */ + string_t value(const json_pointer& ptr, const char* default_value) const + { + return value(ptr, string_t(default_value)); + } + + /*! + @brief access the first element + + Returns a reference to the first element in the container. For a JSON + container `c`, the expression `c.front()` is equivalent to `*c.begin()`. + + @return In case of a structured type (array or object), a reference to the + first element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on `null` value + + @liveexample{The following code shows an example for `front()`.,front} + + @sa @ref back() -- access the last element + + @since version 1.0.0 + */ + reference front() + { + return *begin(); + } + + /*! + @copydoc basic_json::front() + */ + const_reference front() const + { + return *cbegin(); + } + + /*! + @brief access the last element + + Returns a reference to the last element in the container. For a JSON + container `c`, the expression `c.back()` is equivalent to + @code {.cpp} + auto tmp = c.end(); + --tmp; + return *tmp; + @endcode + + @return In case of a structured type (array or object), a reference to the + last element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on a `null` value. See example + below. + + @liveexample{The following code shows an example for `back()`.,back} + + @sa @ref front() -- access the first element + + @since version 1.0.0 + */ + reference back() + { + auto tmp = end(); + --tmp; + return *tmp; + } + + /*! + @copydoc basic_json::back() + */ + const_reference back() const + { + auto tmp = cend(); + --tmp; + return *tmp; + } + + /*! + @brief remove element given an iterator + + Removes the element specified by iterator @a pos. The iterator @a pos must + be valid and dereferenceable. Thus the `end()` iterator (which is valid, + but is not dereferenceable) cannot be used as a value for @a pos. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] pos iterator to the element to remove + @return Iterator following the last removed element. If the iterator @a + pos refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.202 if called on an iterator which does not belong + to the current JSON value; example: `"iterator does not fit current + value"` + @throw invalid_iterator.205 if called on a primitive type with invalid + iterator (i.e., any iterator which is not `begin()`); example: `"iterator + out of range"` + + @complexity The complexity depends on the type: + - objects: amortized constant + - arrays: linear in distance between @a pos and the end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType} + + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template<class IteratorType, typename std::enable_if< + std::is_same<IteratorType, typename basic_json_t::iterator>::value or + std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type + = 0> + IteratorType erase(IteratorType pos) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != pos.m_object)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin())) + { + JSON_THROW(invalid_iterator::create(205, "iterator out of range")); + } + + if (is_string()) + { + AllocatorType<string_t> alloc; + std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string); + std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove elements given an iterator range + + Removes the element specified by the range `[first; last)`. The iterator + @a first does not need to be dereferenceable if `first == last`: erasing + an empty range is a no-op. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] first iterator to the beginning of the range to remove + @param[in] last iterator past the end of the range to remove + @return Iterator following the last removed element. If the iterator @a + second refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.203 if called on iterators which does not belong + to the current JSON value; example: `"iterators do not fit current value"` + @throw invalid_iterator.204 if called on a primitive type with invalid + iterators (i.e., if `first != begin()` and `last != end()`); example: + `"iterators out of range"` + + @complexity The complexity depends on the type: + - objects: `log(size()) + std::distance(first, last)` + - arrays: linear in the distance between @a first and @a last, plus linear + in the distance between @a last and end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType_IteratorType} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template<class IteratorType, typename std::enable_if< + std::is_same<IteratorType, typename basic_json_t::iterator>::value or + std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type + = 0> + IteratorType erase(IteratorType first, IteratorType last) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != first.m_object or this != last.m_object)) + { + JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + + if (is_string()) + { + AllocatorType<string_t> alloc; + std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string); + std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove element from a JSON object given a key + + Removes elements from a JSON object with the key value @a key. + + @param[in] key value of the elements to remove + + @return Number of elements removed. If @a ObjectType is the default + `std::map` type, the return value will always be `0` (@a key was not + found) or `1` (@a key was found). + + @post References and iterators to the erased elements are invalidated. + Other references and iterators are not affected. + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + + @complexity `log(size()) + count(key)` + + @liveexample{The example shows the effect of `erase()`.,erase__key_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + size_type erase(const typename object_t::key_type& key) + { + // this erase only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->erase(key); + } + + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + /*! + @brief remove element from a JSON array given an index + + Removes element from a JSON array at the index @a idx. + + @param[in] idx index of the element to remove + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 + is out of range"` + + @complexity Linear in distance between @a idx and the end of the container. + + @liveexample{The example shows the effect of `erase()`.,erase__size_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + + @since version 1.0.0 + */ + void erase(const size_type idx) + { + // this erase only works for arrays + if (JSON_LIKELY(is_array())) + { + if (JSON_UNLIKELY(idx >= size())) + { + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + + m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx)); + } + else + { + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + } + + /// @} + + + //////////// + // lookup // + //////////// + + /// @name lookup + /// @{ + + /*! + @brief find an element in a JSON object + + Finds an element in a JSON object with key equivalent to @a key. If the + element is not found or the JSON value is not an object, end() is + returned. + + @note This method always returns @ref end() when executed on a JSON type + that is not an object. + + @param[in] key key value of the element to search for. + + @return Iterator to an element with key equivalent to @a key. If no such + element is found or the JSON value is not an object, past-the-end (see + @ref end()) iterator is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `find()` is used.,find__key_type} + + @sa @ref contains(KeyT&&) const -- checks whether a key exists + + @since version 1.0.0 + */ + template<typename KeyT> + iterator find(KeyT&& key) + { + auto result = end(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key)); + } + + return result; + } + + /*! + @brief find an element in a JSON object + @copydoc find(KeyT&&) + */ + template<typename KeyT> + const_iterator find(KeyT&& key) const + { + auto result = cend(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key)); + } + + return result; + } + + /*! + @brief returns the number of occurrences of a key in a JSON object + + Returns the number of elements with key @a key. If ObjectType is the + default `std::map` type, the return value will always be `0` (@a key was + not found) or `1` (@a key was found). + + @note This method always returns `0` when executed on a JSON type that is + not an object. + + @param[in] key key value of the element to count + + @return Number of elements with key @a key. If the JSON value is not an + object, the return value will be `0`. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `count()` is used.,count} + + @since version 1.0.0 + */ + template<typename KeyT> + size_type count(KeyT&& key) const + { + // return 0 for all nonobject types + return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0; + } + + /*! + @brief check the existence of an element in a JSON object + + Check whether an element exists in a JSON object with key equivalent to + @a key. If the element is not found or the JSON value is not an object, + false is returned. + + @note This method always returns false when executed on a JSON type + that is not an object. + + @param[in] key key value to check its existence. + + @return true if an element with specified @a key exists. If no such + element with such key is found or the JSON value is not an object, + false is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The following code shows an example for `contains()`.,contains} + + @sa @ref find(KeyT&&) -- returns an iterator to an object element + + @since version 3.6.0 + */ + template<typename KeyT> + bool contains(KeyT&& key) const + { + return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end(); + } + + /// @} + + + /////////////// + // iterators // + /////////////// + + /// @name iterators + /// @{ + + /*! + @brief returns an iterator to the first element + + Returns an iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `begin()`.,begin} + + @sa @ref cbegin() -- returns a const iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + iterator begin() noexcept + { + iterator result(this); + result.set_begin(); + return result; + } + + /*! + @copydoc basic_json::cbegin() + */ + const_iterator begin() const noexcept + { + return cbegin(); + } + + /*! + @brief returns a const iterator to the first element + + Returns a const iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast<const basic_json&>(*this).begin()`. + + @liveexample{The following code shows an example for `cbegin()`.,cbegin} + + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + const_iterator cbegin() const noexcept + { + const_iterator result(this); + result.set_begin(); + return result; + } + + /*! + @brief returns an iterator to one past the last element + + Returns an iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `end()`.,end} + + @sa @ref cend() -- returns a const iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + iterator end() noexcept + { + iterator result(this); + result.set_end(); + return result; + } + + /*! + @copydoc basic_json::cend() + */ + const_iterator end() const noexcept + { + return cend(); + } + + /*! + @brief returns a const iterator to one past the last element + + Returns a const iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast<const basic_json&>(*this).end()`. + + @liveexample{The following code shows an example for `cend()`.,cend} + + @sa @ref end() -- returns an iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + const_iterator cend() const noexcept + { + const_iterator result(this); + result.set_end(); + return result; + } + + /*! + @brief returns an iterator to the reverse-beginning + + Returns an iterator to the reverse-beginning; that is, the last element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(end())`. + + @liveexample{The following code shows an example for `rbegin()`.,rbegin} + + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + reverse_iterator rbegin() noexcept + { + return reverse_iterator(end()); + } + + /*! + @copydoc basic_json::crbegin() + */ + const_reverse_iterator rbegin() const noexcept + { + return crbegin(); + } + + /*! + @brief returns an iterator to the reverse-end + + Returns an iterator to the reverse-end; that is, one before the first + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(begin())`. + + @liveexample{The following code shows an example for `rend()`.,rend} + + @sa @ref crend() -- returns a const reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + reverse_iterator rend() noexcept + { + return reverse_iterator(begin()); + } + + /*! + @copydoc basic_json::crend() + */ + const_reverse_iterator rend() const noexcept + { + return crend(); + } + + /*! + @brief returns a const reverse iterator to the last element + + Returns a const iterator to the reverse-beginning; that is, the last + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`. + + @liveexample{The following code shows an example for `crbegin()`.,crbegin} + + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + const_reverse_iterator crbegin() const noexcept + { + return const_reverse_iterator(cend()); + } + + /*! + @brief returns a const reverse iterator to one before the first + + Returns a const reverse iterator to the reverse-end; that is, one before + the first element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast<const basic_json&>(*this).rend()`. + + @liveexample{The following code shows an example for `crend()`.,crend} + + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + const_reverse_iterator crend() const noexcept + { + return const_reverse_iterator(cbegin()); + } + + public: + /*! + @brief wrapper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without iterator_wrapper: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without iterator proxy: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with iterator proxy: + + @code{cpp} + for (auto it : json::iterator_wrapper(j_object)) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @param[in] ref reference to a JSON value + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the wrapper is used,iterator_wrapper} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @note The name of this function is not yet final and may change in the + future. + + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref items() instead; + that is, replace `json::iterator_wrapper(j)` with `j.items()`. + */ + JSON_DEPRECATED + static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept + { + return ref.items(); + } + + /*! + @copydoc iterator_wrapper(reference) + */ + JSON_DEPRECATED + static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept + { + return ref.items(); + } + + /*! + @brief helper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without `items()` function: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without `items()` function: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with `items()` function: + + @code{cpp} + for (auto& el : j_object.items()) + { + std::cout << "key: " << el.key() << ", value:" << el.value() << '\n'; + } + @endcode + + The `items()` function also allows to use + [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding) + (C++17): + + @code{cpp} + for (auto& [key, val] : j_object.items()) + { + std::cout << "key: " << key << ", value:" << val << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). For primitive types (e.g., numbers), + `key()` returns an empty string. + + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the function is used.,items} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 3.1.0, structured bindings support since 3.5.0. + */ + iteration_proxy<iterator> items() noexcept + { + return iteration_proxy<iterator>(*this); + } + + /*! + @copydoc items() + */ + iteration_proxy<const_iterator> items() const noexcept + { + return iteration_proxy<const_iterator>(*this); + } + + /// @} + + + ////////////// + // capacity // + ////////////// + + /// @name capacity + /// @{ + + /*! + @brief checks whether the container is empty. + + Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `true` + boolean | `false` + string | `false` + number | `false` + object | result of function `object_t::empty()` + array | result of function `array_t::empty()` + + @liveexample{The following code uses `empty()` to check if a JSON + object contains any elements.,empty} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `empty()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return whether a string stored as JSON value + is empty - it returns whether the JSON container itself is empty which is + false in the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `begin() == end()`. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + bool empty() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return true; + } + + case value_t::array: + { + // delegate call to array_t::empty() + return m_value.array->empty(); + } + + case value_t::object: + { + // delegate call to object_t::empty() + return m_value.object->empty(); + } + + default: + { + // all other types are nonempty + return false; + } + } + } + + /*! + @brief returns the number of elements + + Returns the number of elements in a JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` + boolean | `1` + string | `1` + number | `1` + object | result of function object_t::size() + array | result of function array_t::size() + + @liveexample{The following code calls `size()` on the different value + types.,size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their size() functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return the length of a string stored as JSON + value - it returns the number of elements in the JSON value which is 1 in + the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `std::distance(begin(), end())`. + + @sa @ref empty() -- checks whether the container is empty + @sa @ref max_size() -- returns the maximal number of elements + + @since version 1.0.0 + */ + size_type size() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return 0; + } + + case value_t::array: + { + // delegate call to array_t::size() + return m_value.array->size(); + } + + case value_t::object: + { + // delegate call to object_t::size() + return m_value.object->size(); + } + + default: + { + // all other types have size 1 + return 1; + } + } + } + + /*! + @brief returns the maximum possible number of elements + + Returns the maximum number of elements a JSON value is able to hold due to + system or library implementation limitations, i.e. `std::distance(begin(), + end())` for the JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` (same as `size()`) + boolean | `1` (same as `size()`) + string | `1` (same as `size()`) + number | `1` (same as `size()`) + object | result of function `object_t::max_size()` + array | result of function `array_t::max_size()` + + @liveexample{The following code calls `max_size()` on the different value + types. Note the output is implementation specific.,max_size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `max_size()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of returning `b.size()` where `b` is the largest + possible JSON value. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + size_type max_size() const noexcept + { + switch (m_type) + { + case value_t::array: + { + // delegate call to array_t::max_size() + return m_value.array->max_size(); + } + + case value_t::object: + { + // delegate call to object_t::max_size() + return m_value.object->max_size(); + } + + default: + { + // all other types have max_size() == size() + return size(); + } + } + } + + /// @} + + + /////////////// + // modifiers // + /////////////// + + /// @name modifiers + /// @{ + + /*! + @brief clears the contents + + Clears the content of a JSON value and resets it to the default value as + if @ref basic_json(value_t) would have been called with the current value + type from @ref type(): + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @post Has the same effect as calling + @code {.cpp} + *this = basic_json(type()); + @endcode + + @liveexample{The example below shows the effect of `clear()` to different + JSON types.,clear} + + @complexity Linear in the size of the JSON value. + + @iterators All iterators, pointers and references related to this container + are invalidated. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @sa @ref basic_json(value_t) -- constructor that creates an object with the + same value than calling `clear()` + + @since version 1.0.0 + */ + void clear() noexcept + { + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = 0; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = 0; + break; + } + + case value_t::number_float: + { + m_value.number_float = 0.0; + break; + } + + case value_t::boolean: + { + m_value.boolean = false; + break; + } + + case value_t::string: + { + m_value.string->clear(); + break; + } + + case value_t::array: + { + m_value.array->clear(); + break; + } + + case value_t::object: + { + m_value.object->clear(); + break; + } + + default: + break; + } + } + + /*! + @brief add an object to an array + + Appends the given element @a val to the end of the JSON value. If the + function is called on a JSON null value, an empty array is created before + appending @a val. + + @param[in] val the value to add to the JSON array + + @throw type_error.308 when called on a type other than JSON array or + null; example: `"cannot use push_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON array. Note how the `null` value was silently + converted to a JSON array.,push_back} + + @since version 1.0.0 + */ + void push_back(basic_json&& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (move semantics) + m_value.array->push_back(std::move(val)); + // invalidate object: mark it null so we do not call the destructor + // cppcheck-suppress accessMoved + val.m_type = value_t::null; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(basic_json&& val) + { + push_back(std::move(val)); + return *this; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + void push_back(const basic_json& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array + m_value.array->push_back(val); + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(const basic_json& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + Inserts the given element @a val to the JSON object. If the function is + called on a JSON null value, an empty object is created before inserting + @a val. + + @param[in] val the value to add to the JSON object + + @throw type_error.308 when called on a type other than JSON object or + null; example: `"cannot use push_back() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON object. Note how the `null` value was silently + converted to a JSON object.,push_back__object_t__value} + + @since version 1.0.0 + */ + void push_back(const typename object_t::value_type& val) + { + // push_back only works for null objects or objects + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array + m_value.object->insert(val); + } + + /*! + @brief add an object to an object + @copydoc push_back(const typename object_t::value_type&) + */ + reference operator+=(const typename object_t::value_type& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + This function allows to use `push_back` with an initializer list. In case + + 1. the current value is an object, + 2. the initializer list @a init contains only two elements, and + 3. the first element of @a init is a string, + + @a init is converted into an object element and added using + @ref push_back(const typename object_t::value_type&). Otherwise, @a init + is converted to a JSON value and added using @ref push_back(basic_json&&). + + @param[in] init an initializer list + + @complexity Linear in the size of the initializer list @a init. + + @note This function is required to resolve an ambiguous overload error, + because pairs like `{"key", "value"}` can be both interpreted as + `object_t::value_type` or `std::initializer_list<basic_json>`, see + https://github.com/nlohmann/json/issues/235 for more information. + + @liveexample{The example shows how initializer lists are treated as + objects when possible.,push_back__initializer_list} + */ + void push_back(initializer_list_t init) + { + if (is_object() and init.size() == 2 and (*init.begin())->is_string()) + { + basic_json&& key = init.begin()->moved_or_copied(); + push_back(typename object_t::value_type( + std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied())); + } + else + { + push_back(basic_json(init)); + } + } + + /*! + @brief add an object to an object + @copydoc push_back(initializer_list_t) + */ + reference operator+=(initializer_list_t init) + { + push_back(init); + return *this; + } + + /*! + @brief add an object to an array + + Creates a JSON value from the passed parameters @a args to the end of the + JSON value. If the function is called on a JSON null value, an empty array + is created before appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @throw type_error.311 when called on a type other than JSON array or + null; example: `"cannot use emplace_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` can be used to add + elements to a JSON array. Note how the `null` value was silently converted + to a JSON array.,emplace_back} + + @since version 2.0.8 + */ + template<class... Args> + void emplace_back(Args&& ... args) + { + // emplace_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (perfect forwarding) + m_value.array->emplace_back(std::forward<Args>(args)...); + } + + /*! + @brief add an object to an object if key does not exist + + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the + function is called on a JSON null value, an empty object is created before + appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @return a pair consisting of an iterator to the inserted element, or the + already-existing element if no insertion happened, and a bool + denoting whether the insertion took place. + + @throw type_error.311 when called on a type other than JSON object or + null; example: `"cannot use emplace() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `emplace()` can be used to add elements + to a JSON object. Note how the `null` value was silently converted to a + JSON object. Further note how no value is added if there was already one + value stored with the same key.,emplace} + + @since version 2.0.8 + */ + template<class... Args> + std::pair<iterator, bool> emplace(Args&& ... args) + { + // emplace only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array (perfect forwarding) + auto res = m_value.object->emplace(std::forward<Args>(args)...); + // create result iterator and set iterator to the result of emplace + auto it = begin(); + it.m_it.object_iterator = res.first; + + // return pair of iterator and boolean + return {it, res.second}; + } + + /// Helper for insertion of an iterator + /// @note: This uses std::distance to support GCC 4.8, + /// see https://github.com/nlohmann/json/pull/1257 + template<typename... Args> + iterator insert_iterator(const_iterator pos, Args&& ... args) + { + iterator result(this); + assert(m_value.array != nullptr); + + auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator); + m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...); + result.m_it.array_iterator = m_value.array->begin() + insert_pos; + + // This could have been written as: + // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); + // but the return value of insert is missing in GCC 4.8, so it is written this way instead. + + return result; + } + + /*! + @brief inserts element + + Inserts element @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] val element to insert + @return iterator pointing to the inserted @a val. + + @throw type_error.309 if called on JSON values other than arrays; + example: `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Constant plus linear in the distance between @a pos and end of + the container. + + @liveexample{The example shows how `insert()` is used.,insert} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + return insert_iterator(pos, val); + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts element + @copydoc insert(const_iterator, const basic_json&) + */ + iterator insert(const_iterator pos, basic_json&& val) + { + return insert(pos, val); + } + + /*! + @brief inserts elements + + Inserts @a cnt copies of @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] cnt number of copies of @a val to insert + @param[in] val element to insert + @return iterator pointing to the first element inserted, or @a pos if + `cnt==0` + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Linear in @a cnt plus linear in the distance between @a pos + and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__count} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, size_type cnt, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + return insert_iterator(pos, cnt, val); + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)` before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + @throw invalid_iterator.211 if @a first or @a last are iterators into + container for which insert is called; example: `"passed iterators may not + belong to container"` + + @return iterator pointing to the first element inserted, or @a pos if + `first==last` + + @complexity Linear in `std::distance(first, last)` plus linear in the + distance between @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__range} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const_iterator first, const_iterator last) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + if (JSON_UNLIKELY(first.m_object == this)) + { + JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container")); + } + + // insert to array and return iterator + return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator); + } + + /*! + @brief inserts elements + + Inserts elements from initializer list @a ilist before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] ilist initializer list to insert the values from + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @return iterator pointing to the first element inserted, or @a pos if + `ilist` is empty + + @complexity Linear in `ilist.size()` plus linear in the distance between + @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__ilist} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, initializer_list_t ilist) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + return insert_iterator(pos, ilist.begin(), ilist.end()); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)`. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than objects; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number + of elements to insert. + + @liveexample{The example shows how `insert()` is used.,insert__range_object} + + @since version 3.0.0 + */ + void insert(const_iterator first, const_iterator last) + { + // insert only works for objects + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from JSON object @a j and overwrites existing keys. + + @param[in] j JSON object to read values from + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_reference j) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create<object_t>(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()))); + } + + for (auto it = j.cbegin(); it != j.cend(); ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from from range `[first, last)` and overwrites existing + keys. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used__range.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_iterator first, const_iterator last) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create<object_t>(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object() + or not last.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + for (auto it = first; it != last; ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of the JSON value with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other JSON value to exchange the contents with + + @complexity Constant. + + @liveexample{The example below shows how JSON values can be swapped with + `swap()`.,swap__reference} + + @since version 1.0.0 + */ + void swap(reference other) noexcept ( + std::is_nothrow_move_constructible<value_t>::value and + std::is_nothrow_move_assignable<value_t>::value and + std::is_nothrow_move_constructible<json_value>::value and + std::is_nothrow_move_assignable<json_value>::value + ) + { + std::swap(m_type, other.m_type); + std::swap(m_value, other.m_value); + assert_invariant(); + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON array with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other array to exchange the contents with + + @throw type_error.310 when JSON value is not an array; example: `"cannot + use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how arrays can be swapped with + `swap()`.,swap__array_t} + + @since version 1.0.0 + */ + void swap(array_t& other) + { + // swap only works for arrays + if (JSON_LIKELY(is_array())) + { + std::swap(*(m_value.array), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON object with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other object to exchange the contents with + + @throw type_error.310 when JSON value is not an object; example: + `"cannot use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how objects can be swapped with + `swap()`.,swap__object_t} + + @since version 1.0.0 + */ + void swap(object_t& other) + { + // swap only works for objects + if (JSON_LIKELY(is_object())) + { + std::swap(*(m_value.object), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON string with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other string to exchange the contents with + + @throw type_error.310 when JSON value is not a string; example: `"cannot + use swap() with boolean"` + + @complexity Constant. + + @liveexample{The example below shows how strings can be swapped with + `swap()`.,swap__string_t} + + @since version 1.0.0 + */ + void swap(string_t& other) + { + // swap only works for strings + if (JSON_LIKELY(is_string())) + { + std::swap(*(m_value.string), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /// @} + + public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + + /*! + @brief comparison: equal + + Compares two JSON values for equality according to the following rules: + - Two JSON values are equal if (1) they are from the same type and (2) + their stored values are the same according to their respective + `operator==`. + - Integer and floating-point numbers are automatically converted before + comparison. Note than two NaN values are always treated as unequal. + - Two JSON null values are equal. + + @note Floating-point inside JSON values numbers are compared with + `json::number_float_t::operator==` which is `double::operator==` by + default. To compare floating-point while respecting an epsilon, an alternative + [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39) + could be used, for instance + @code {.cpp} + template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type> + inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept + { + return std::abs(a - b) <= epsilon; + } + @endcode + + @note NaN values never compare equal to themselves or to other NaN values. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are equal + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Linear. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__equal} + + @since version 1.0.0 + */ + friend bool operator==(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return *lhs.m_value.array == *rhs.m_value.array; + + case value_t::object: + return *lhs.m_value.object == *rhs.m_value.object; + + case value_t::null: + return true; + + case value_t::string: + return *lhs.m_value.string == *rhs.m_value.string; + + case value_t::boolean: + return lhs.m_value.boolean == rhs.m_value.boolean; + + case value_t::number_integer: + return lhs.m_value.number_integer == rhs.m_value.number_integer; + + case value_t::number_unsigned: + return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned; + + case value_t::number_float: + return lhs.m_value.number_float == rhs.m_value.number_float; + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer; + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned); + } + + return false; + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs == basic_json(rhs); + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) == rhs; + } + + /*! + @brief comparison: not equal + + Compares two JSON values for inequality by calculating `not (lhs == rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are not equal + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__notequal} + + @since version 1.0.0 + */ + friend bool operator!=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs == rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs != basic_json(rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) != rhs; + } + + /*! + @brief comparison: less than + + Compares whether one JSON value @a lhs is less than another JSON value @a + rhs according to the following rules: + - If @a lhs and @a rhs have the same type, the values are compared using + the default `<` operator. + - Integer and floating-point numbers are automatically converted before + comparison + - In case @a lhs and @a rhs have different types, the values are ignored + and the order of the types is considered, see + @ref operator<(const value_t, const value_t). + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__less} + + @since version 1.0.0 + */ + friend bool operator<(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + // note parentheses are necessary, see + // https://github.com/nlohmann/json/issues/1530 + return (*lhs.m_value.array) < (*rhs.m_value.array); + + case value_t::object: + return *lhs.m_value.object < *rhs.m_value.object; + + case value_t::null: + return false; + + case value_t::string: + return *lhs.m_value.string < *rhs.m_value.string; + + case value_t::boolean: + return lhs.m_value.boolean < rhs.m_value.boolean; + + case value_t::number_integer: + return lhs.m_value.number_integer < rhs.m_value.number_integer; + + case value_t::number_unsigned: + return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned; + + case value_t::number_float: + return lhs.m_value.number_float < rhs.m_value.number_float; + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; + } + + // We only reach this line if we cannot compare values. In that case, + // we compare types. Note we have to call the operator explicitly, + // because MSVC has problems otherwise. + return operator<(lhs_type, rhs_type); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs < basic_json(rhs); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) < rhs; + } + + /*! + @brief comparison: less than or equal + + Compares whether one JSON value @a lhs is less than or equal to another + JSON value by calculating `not (rhs < lhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greater} + + @since version 1.0.0 + */ + friend bool operator<=(const_reference lhs, const_reference rhs) noexcept + { + return not (rhs < lhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs <= basic_json(rhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) <= rhs; + } + + /*! + @brief comparison: greater than + + Compares whether one JSON value @a lhs is greater than another + JSON value by calculating `not (lhs <= rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__lessequal} + + @since version 1.0.0 + */ + friend bool operator>(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs <= rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs > basic_json(rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) > rhs; + } + + /*! + @brief comparison: greater than or equal + + Compares whether one JSON value @a lhs is greater than or equal to another + JSON value by calculating `not (lhs < rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greaterequal} + + @since version 1.0.0 + */ + friend bool operator>=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs < rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept + { + return lhs >= basic_json(rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template<typename ScalarType, typename std::enable_if< + std::is_scalar<ScalarType>::value, int>::type = 0> + friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) >= rhs; + } + + /// @} + + /////////////////// + // serialization // + /////////////////// + + /// @name serialization + /// @{ + + /*! + @brief serialize to stream + + Serialize the given JSON value @a j to the output stream @a o. The JSON + value will be serialized using the @ref dump member function. + + - The indentation of the output can be controlled with the member variable + `width` of the output stream @a o. For instance, using the manipulator + `std::setw(4)` on @a o sets the indentation level to `4` and the + serialization result is the same as calling `dump(4)`. + + - The indentation character can be controlled with the member variable + `fill` of the output stream @a o. For instance, the manipulator + `std::setfill('\\t')` sets indentation to use a tab character rather than + the default space character. + + @param[in,out] o stream to serialize to + @param[in] j JSON value to serialize + + @return the stream @a o + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @liveexample{The example below shows the serialization with different + parameters to `width` to adjust the indentation level.,operator_serialize} + + @since version 1.0.0; indentation character added in version 3.0.0 + */ + friend std::ostream& operator<<(std::ostream& o, const basic_json& j) + { + // read width member and use it as indentation parameter if nonzero + const bool pretty_print = o.width() > 0; + const auto indentation = pretty_print ? o.width() : 0; + + // reset width to 0 for subsequent calls to this stream + o.width(0); + + // do the actual serialization + serializer s(detail::output_adapter<char>(o), o.fill()); + s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation)); + return o; + } + + /*! + @brief serialize to stream + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use + @ref operator<<(std::ostream&, const basic_json&) + instead; that is, replace calls like `j >> o;` with `o << j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::ostream& operator>>(const basic_json& j, std::ostream& o) + { + return o << j; + } + + /// @} + + + ///////////////////// + // deserialization // + ///////////////////// + + /// @name deserialization + /// @{ + + /*! + @brief deserialize from a compatible input + + This function reads from a compatible input. Examples are: + - an array of 1-byte values + - strings with character/literal type with size of 1 byte + - input streams + - container with contiguous storage of 1-byte values. Compatible container + types include `std::vector`, `std::string`, `std::array`, + `std::valarray`, and `std::initializer_list`. Furthermore, C-style + arrays can be used with `std::begin()`/`std::end()`. User-defined + containers can be used as long as they implement random-access iterators + and a contiguous storage. + + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @pre The container storage is contiguous. Violating this precondition + yields undefined behavior. **This precondition is enforced with an + assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with a noncompliant container and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @param[in] i input to read from + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an array.,parse__array__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__string__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__istream__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function reading + from a contiguous container.,parse__contiguouscontainer__parser_callback_t} + + @since version 2.0.3 (contiguous containers) + */ + JSON_NODISCARD + static basic_json parse(detail::input_adapter&& i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(i, cb, allow_exceptions).parse(true, result); + return result; + } + + static bool accept(detail::input_adapter&& i) + { + return parser(i).accept(true); + } + + /*! + @brief generate SAX events + + The SAX event lister must follow the interface of @ref json_sax. + + This function reads from a compatible input. Examples are: + - an array of 1-byte values + - strings with character/literal type with size of 1 byte + - input streams + - container with contiguous storage of 1-byte values. Compatible container + types include `std::vector`, `std::string`, `std::array`, + `std::valarray`, and `std::initializer_list`. Furthermore, C-style + arrays can be used with `std::begin()`/`std::end()`. User-defined + containers can be used as long as they implement random-access iterators + and a contiguous storage. + + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @pre The container storage is contiguous. Violating this precondition + yields undefined behavior. **This precondition is enforced with an + assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with a noncompliant container and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @param[in] i input to read from + @param[in,out] sax SAX event listener + @param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON) + @param[in] strict whether the input has to be consumed completely + + @return return value of the last processed SAX event + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the SAX consumer @a sax has + a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `sax_parse()` function + reading from string and processing the events with a user-defined SAX + event consumer.,sax_parse} + + @since version 3.2.0 + */ + template <typename SAX> + static bool sax_parse(detail::input_adapter&& i, SAX* sax, + input_format_t format = input_format_t::json, + const bool strict = true) + { + assert(sax); + return format == input_format_t::json + ? parser(std::move(i)).sax_parse(sax, strict) + : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict); + } + + /*! + @brief deserialize from an iterator range with contiguous storage + + This function reads from an iterator range of a container with contiguous + storage of 1-byte values. Compatible container types include + `std::vector`, `std::string`, `std::array`, `std::valarray`, and + `std::initializer_list`. Furthermore, C-style arrays can be used with + `std::begin()`/`std::end()`. User-defined containers can be used as long + as they implement random-access iterators and a contiguous storage. + + @pre The iterator range is contiguous. Violating this precondition yields + undefined behavior. **This precondition is enforced with an assertion.** + @pre Each element in the range has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with noncompliant iterators and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @tparam IteratorType iterator of container with contiguous storage + @param[in] first begin of the range to parse (included) + @param[in] last end of the range to parse (excluded) + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an iterator range.,parse__iteratortype__parser_callback_t} + + @since version 2.0.3 + */ + template<class IteratorType, typename std::enable_if< + std::is_base_of< + std::random_access_iterator_tag, + typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0> + static basic_json parse(IteratorType first, IteratorType last, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result); + return result; + } + + template<class IteratorType, typename std::enable_if< + std::is_base_of< + std::random_access_iterator_tag, + typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0> + static bool accept(IteratorType first, IteratorType last) + { + return parser(detail::input_adapter(first, last)).accept(true); + } + + template<class IteratorType, class SAX, typename std::enable_if< + std::is_base_of< + std::random_access_iterator_tag, + typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0> + static bool sax_parse(IteratorType first, IteratorType last, SAX* sax) + { + return parser(detail::input_adapter(first, last)).sax_parse(sax); + } + + /*! + @brief deserialize from stream + @deprecated This stream operator is deprecated and will be removed in + version 4.0.0 of the library. Please use + @ref operator>>(std::istream&, basic_json&) + instead; that is, replace calls like `j << i;` with `i >> j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::istream& operator<<(basic_json& j, std::istream& i) + { + return operator>>(i, j); + } + + /*! + @brief deserialize from stream + + Deserializes an input stream to a JSON value. + + @param[in,out] i input stream to read a serialized JSON value from + @param[in,out] j JSON value to write the deserialized input to + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below shows how a JSON value is constructed by + reading a serialization from a stream.,operator_deserialize} + + @sa parse(std::istream&, const parser_callback_t) for a variant with a + parser callback function to filter values while parsing + + @since version 1.0.0 + */ + friend std::istream& operator>>(std::istream& i, basic_json& j) + { + parser(detail::input_adapter(i)).parse(false, j); + return i; + } + + /// @} + + /////////////////////////// + // convenience functions // + /////////////////////////// + + /*! + @brief return the type as string + + Returns the type name as string to be used in error messages - usually to + indicate that a function was called on a wrong JSON type. + + @return a string representation of a the @a m_type member: + Value type | return value + ----------- | ------------- + null | `"null"` + boolean | `"boolean"` + string | `"string"` + number | `"number"` (for all number types) + object | `"object"` + array | `"array"` + discarded | `"discarded"` + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Constant. + + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,type_name} + + @sa @ref type() -- return the type of the JSON value + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + + @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` + since 3.0.0 + */ + const char* type_name() const noexcept + { + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } + } + } + + + private: + ////////////////////// + // member variables // + ////////////////////// + + /// the type of the current element + value_t m_type = value_t::null; + + /// the value of the current element + json_value m_value = {}; + + ////////////////////////////////////////// + // binary serialization/deserialization // + ////////////////////////////////////////// + + /// @name binary serialization/deserialization support + /// @{ + + public: + /*! + @brief create a CBOR serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the CBOR (Concise + Binary Object Representation) serialization format. CBOR is a binary + serialization format which aims to be more compact than JSON itself, yet + more efficient to parse. + + The library uses the following mapping from JSON values types to + CBOR types according to the CBOR specification (RFC 7049): + + JSON value type | value/range | CBOR type | first byte + --------------- | ------------------------------------------ | ---------------------------------- | --------------- + null | `null` | Null | 0xF6 + boolean | `true` | True | 0xF5 + boolean | `false` | False | 0xF4 + number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B + number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A + number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 + number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 + number_integer | -24..-1 | Negative integer | 0x20..0x37 + number_integer | 0..23 | Integer | 0x00..0x17 + number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_unsigned | 0..23 | Integer | 0x00..0x17 + number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_float | *any value* | Double-Precision Float | 0xFB + string | *length*: 0..23 | UTF-8 string | 0x60..0x77 + string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 + string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 + string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A + string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B + array | *size*: 0..23 | array | 0x80..0x97 + array | *size*: 23..255 | array (1 byte follow) | 0x98 + array | *size*: 256..65535 | array (2 bytes follow) | 0x99 + array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A + array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B + object | *size*: 0..23 | map | 0xA0..0xB7 + object | *size*: 23..255 | map (1 byte follow) | 0xB8 + object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 + object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA + object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a CBOR value. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The following CBOR types are not used in the conversion: + - byte strings (0x40..0x5F) + - UTF-8 strings terminated by "break" (0x7F) + - arrays terminated by "break" (0x9F) + - maps terminated by "break" (0xBF) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + - half and single-precision floats (0xF9-0xFA) + - break (0xFF) + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in CBOR format.,to_cbor} + + @sa http://cbor.io + @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the + analogous deserialization + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9 + */ + static std::vector<uint8_t> to_cbor(const basic_json& j) + { + std::vector<uint8_t> result; + to_cbor(j, result); + return result; + } + + static void to_cbor(const basic_json& j, detail::output_adapter<uint8_t> o) + { + binary_writer<uint8_t>(o).write_cbor(j); + } + + static void to_cbor(const basic_json& j, detail::output_adapter<char> o) + { + binary_writer<char>(o).write_cbor(j); + } + + /*! + @brief create a MessagePack serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the MessagePack + serialization format. MessagePack is a binary serialization format which + aims to be more compact than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + MessagePack types according to the MessagePack specification: + + JSON value type | value/range | MessagePack type | first byte + --------------- | --------------------------------- | ---------------- | ---------- + null | `null` | nil | 0xC0 + boolean | `true` | true | 0xC3 + boolean | `false` | false | 0xC2 + number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 + number_integer | -2147483648..-32769 | int32 | 0xD2 + number_integer | -32768..-129 | int16 | 0xD1 + number_integer | -128..-33 | int8 | 0xD0 + number_integer | -32..-1 | negative fixint | 0xE0..0xFF + number_integer | 0..127 | positive fixint | 0x00..0x7F + number_integer | 128..255 | uint 8 | 0xCC + number_integer | 256..65535 | uint 16 | 0xCD + number_integer | 65536..4294967295 | uint 32 | 0xCE + number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_unsigned | 0..127 | positive fixint | 0x00..0x7F + number_unsigned | 128..255 | uint 8 | 0xCC + number_unsigned | 256..65535 | uint 16 | 0xCD + number_unsigned | 65536..4294967295 | uint 32 | 0xCE + number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_float | *any value* | float 64 | 0xCB + string | *length*: 0..31 | fixstr | 0xA0..0xBF + string | *length*: 32..255 | str 8 | 0xD9 + string | *length*: 256..65535 | str 16 | 0xDA + string | *length*: 65536..4294967295 | str 32 | 0xDB + array | *size*: 0..15 | fixarray | 0x90..0x9F + array | *size*: 16..65535 | array 16 | 0xDC + array | *size*: 65536..4294967295 | array 32 | 0xDD + object | *size*: 0..15 | fix map | 0x80..0x8F + object | *size*: 16..65535 | map 16 | 0xDE + object | *size*: 65536..4294967295 | map 32 | 0xDF + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a MessagePack value. + + @note The following values can **not** be converted to a MessagePack value: + - strings with more than 4294967295 bytes + - arrays with more than 4294967295 elements + - objects with more than 4294967295 elements + + @note The following MessagePack types are not used in the conversion: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - float 32 (0xCA) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in MessagePack format.,to_msgpack} + + @sa http://msgpack.org + @sa @ref from_msgpack for the analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9 + */ + static std::vector<uint8_t> to_msgpack(const basic_json& j) + { + std::vector<uint8_t> result; + to_msgpack(j, result); + return result; + } + + static void to_msgpack(const basic_json& j, detail::output_adapter<uint8_t> o) + { + binary_writer<uint8_t>(o).write_msgpack(j); + } + + static void to_msgpack(const basic_json& j, detail::output_adapter<char> o) + { + binary_writer<char>(o).write_msgpack(j); + } + + /*! + @brief create a UBJSON serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the UBJSON + (Universal Binary JSON) serialization format. UBJSON aims to be more compact + than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + UBJSON types according to the UBJSON specification: + + JSON value type | value/range | UBJSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | `Z` + boolean | `true` | true | `T` + boolean | `false` | false | `F` + number_integer | -9223372036854775808..-2147483649 | int64 | `L` + number_integer | -2147483648..-32769 | int32 | `l` + number_integer | -32768..-129 | int16 | `I` + number_integer | -128..127 | int8 | `i` + number_integer | 128..255 | uint8 | `U` + number_integer | 256..32767 | int16 | `I` + number_integer | 32768..2147483647 | int32 | `l` + number_integer | 2147483648..9223372036854775807 | int64 | `L` + number_unsigned | 0..127 | int8 | `i` + number_unsigned | 128..255 | uint8 | `U` + number_unsigned | 256..32767 | int16 | `I` + number_unsigned | 32768..2147483647 | int32 | `l` + number_unsigned | 2147483648..9223372036854775807 | int64 | `L` + number_float | *any value* | float64 | `D` + string | *with shortest length indicator* | string | `S` + array | *see notes on optimized format* | array | `[` + object | *see notes on optimized format* | map | `{` + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a UBJSON value. + + @note The following values can **not** be converted to a UBJSON value: + - strings with more than 9223372036854775807 bytes (theoretical) + - unsigned integer numbers above 9223372036854775807 + + @note The following markers are not used in the conversion: + - `Z`: no-op values are not created. + - `C`: single-byte strings are serialized with `S` markers. + + @note Any UBJSON output created @ref to_ubjson can be successfully parsed + by @ref from_ubjson. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The optimized formats for containers are supported: Parameter + @a use_size adds size information to the beginning of a container and + removes the closing marker. Parameter @a use_type further checks + whether all elements of a container have the same type and adds the + type marker to the beginning of the container. The @a use_type + parameter must only be used together with @a use_size = true. Note + that @a use_size = true alone may result in larger representations - + the benefit of this parameter is that the receiving side is + immediately informed on the number of elements of the container. + + @param[in] j JSON value to serialize + @param[in] use_size whether to add size annotations to container types + @param[in] use_type whether to add type annotations to container types + (must be combined with @a use_size = true) + @return UBJSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in UBJSON format.,to_ubjson} + + @sa http://ubjson.org + @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the + analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 3.1.0 + */ + static std::vector<uint8_t> to_ubjson(const basic_json& j, + const bool use_size = false, + const bool use_type = false) + { + std::vector<uint8_t> result; + to_ubjson(j, result, use_size, use_type); + return result; + } + + static void to_ubjson(const basic_json& j, detail::output_adapter<uint8_t> o, + const bool use_size = false, const bool use_type = false) + { + binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type); + } + + static void to_ubjson(const basic_json& j, detail::output_adapter<char> o, + const bool use_size = false, const bool use_type = false) + { + binary_writer<char>(o).write_ubjson(j, use_size, use_type); + } + + + /*! + @brief Serializes the given JSON object `j` to BSON and returns a vector + containing the corresponding BSON-representation. + + BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are + stored as a single entity (a so-called document). + + The library uses the following mapping from JSON values types to BSON types: + + JSON value type | value/range | BSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | 0x0A + boolean | `true`, `false` | boolean | 0x08 + number_integer | -9223372036854775808..-2147483649 | int64 | 0x12 + number_integer | -2147483648..2147483647 | int32 | 0x10 + number_integer | 2147483648..9223372036854775807 | int64 | 0x12 + number_unsigned | 0..2147483647 | int32 | 0x10 + number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12 + number_unsigned | 9223372036854775808..18446744073709551615| -- | -- + number_float | *any value* | double | 0x01 + string | *any value* | string | 0x02 + array | *any value* | document | 0x04 + object | *any value* | document | 0x03 + + @warning The mapping is **incomplete**, since only JSON-objects (and things + contained therein) can be serialized to BSON. + Also, integers larger than 9223372036854775807 cannot be serialized to BSON, + and the keys may not contain U+0000, since they are serialized a + zero-terminated c-strings. + + @throw out_of_range.407 if `j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807` + @throw out_of_range.409 if a key in `j` contains a NULL (U+0000) + @throw type_error.317 if `!j.is_object()` + + @pre The input `j` is required to be an object: `j.is_object() == true`. + + @note Any BSON output created via @ref to_bson can be successfully parsed + by @ref from_bson. + + @param[in] j JSON value to serialize + @return BSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in BSON format.,to_bson} + + @sa http://bsonspec.org/spec.html + @sa @ref from_bson(detail::input_adapter&&, const bool strict) for the + analogous deserialization + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + @sa @ref to_cbor(const basic_json&) for the related CBOR format + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + */ + static std::vector<uint8_t> to_bson(const basic_json& j) + { + std::vector<uint8_t> result; + to_bson(j, result); + return result; + } + + /*! + @brief Serializes the given JSON object `j` to BSON and forwards the + corresponding BSON-representation to the given output_adapter `o`. + @param j The JSON object to convert to BSON. + @param o The output adapter that receives the binary BSON representation. + @pre The input `j` shall be an object: `j.is_object() == true` + @sa @ref to_bson(const basic_json&) + */ + static void to_bson(const basic_json& j, detail::output_adapter<uint8_t> o) + { + binary_writer<uint8_t>(o).write_bson(j); + } + + /*! + @copydoc to_bson(const basic_json&, detail::output_adapter<uint8_t>) + */ + static void to_bson(const basic_json& j, detail::output_adapter<char> o) + { + binary_writer<char>(o).write_bson(j); + } + + + /*! + @brief create a JSON value from an input in CBOR format + + Deserializes a given input @a i to a JSON value using the CBOR (Concise + Binary Object Representation) serialization format. + + The library maps CBOR types to JSON value types as follows: + + CBOR type | JSON value type | first byte + ---------------------- | --------------- | ---------- + Integer | number_unsigned | 0x00..0x17 + Unsigned integer | number_unsigned | 0x18 + Unsigned integer | number_unsigned | 0x19 + Unsigned integer | number_unsigned | 0x1A + Unsigned integer | number_unsigned | 0x1B + Negative integer | number_integer | 0x20..0x37 + Negative integer | number_integer | 0x38 + Negative integer | number_integer | 0x39 + Negative integer | number_integer | 0x3A + Negative integer | number_integer | 0x3B + Negative integer | number_integer | 0x40..0x57 + UTF-8 string | string | 0x60..0x77 + UTF-8 string | string | 0x78 + UTF-8 string | string | 0x79 + UTF-8 string | string | 0x7A + UTF-8 string | string | 0x7B + UTF-8 string | string | 0x7F + array | array | 0x80..0x97 + array | array | 0x98 + array | array | 0x99 + array | array | 0x9A + array | array | 0x9B + array | array | 0x9F + map | object | 0xA0..0xB7 + map | object | 0xB8 + map | object | 0xB9 + map | object | 0xBA + map | object | 0xBB + map | object | 0xBF + False | `false` | 0xF4 + True | `true` | 0xF5 + Null | `null` | 0xF6 + Half-Precision Float | number_float | 0xF9 + Single-Precision Float | number_float | 0xFA + Double-Precision Float | number_float | 0xFB + + @warning The mapping is **incomplete** in the sense that not all CBOR + types can be converted to a JSON value. The following CBOR types + are not supported and will yield parse errors (parse_error.112): + - byte strings (0x40..0x5F) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + + @warning CBOR allows map keys of any type, whereas JSON only allows + strings as keys in object values. Therefore, CBOR maps with keys + other than UTF-8 strings are rejected (parse_error.113). + + @note Any CBOR output created @ref to_cbor can be successfully parsed by + @ref from_cbor. + + @param[in] i an input in CBOR format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from CBOR were + used in the given input @a v or if the input is not valid CBOR + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in CBOR + format to a JSON value.,from_cbor} + + @sa http://cbor.io + @sa @ref to_cbor(const basic_json&) for the analogous serialization + @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for the + related MessagePack format + @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0; added @a allow_exceptions parameter + since 3.2.0 + */ + JSON_NODISCARD + static basic_json from_cbor(detail::input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_cbor(detail::input_adapter&&, const bool, const bool) + */ + template<typename A1, typename A2, + detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0> + JSON_NODISCARD + static basic_json from_cbor(A1 && a1, A2 && a2, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @brief create a JSON value from an input in MessagePack format + + Deserializes a given input @a i to a JSON value using the MessagePack + serialization format. + + The library maps MessagePack types to JSON value types as follows: + + MessagePack type | JSON value type | first byte + ---------------- | --------------- | ---------- + positive fixint | number_unsigned | 0x00..0x7F + fixmap | object | 0x80..0x8F + fixarray | array | 0x90..0x9F + fixstr | string | 0xA0..0xBF + nil | `null` | 0xC0 + false | `false` | 0xC2 + true | `true` | 0xC3 + float 32 | number_float | 0xCA + float 64 | number_float | 0xCB + uint 8 | number_unsigned | 0xCC + uint 16 | number_unsigned | 0xCD + uint 32 | number_unsigned | 0xCE + uint 64 | number_unsigned | 0xCF + int 8 | number_integer | 0xD0 + int 16 | number_integer | 0xD1 + int 32 | number_integer | 0xD2 + int 64 | number_integer | 0xD3 + str 8 | string | 0xD9 + str 16 | string | 0xDA + str 32 | string | 0xDB + array 16 | array | 0xDC + array 32 | array | 0xDD + map 16 | object | 0xDE + map 32 | object | 0xDF + negative fixint | number_integer | 0xE0-0xFF + + @warning The mapping is **incomplete** in the sense that not all + MessagePack types can be converted to a JSON value. The following + MessagePack types are not supported and will yield parse errors: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @param[in] i an input in MessagePack format convertible to an input + adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from MessagePack were + used in the given input @a i or if the input is not valid MessagePack + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + MessagePack format to a JSON value.,from_msgpack} + + @sa http://msgpack.org + @sa @ref to_msgpack(const basic_json&) for the analogous serialization + @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the + related CBOR format + @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for + the related UBJSON format + @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for + the related BSON format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0; added @a allow_exceptions parameter + since 3.2.0 + */ + JSON_NODISCARD + static basic_json from_msgpack(detail::input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_msgpack(detail::input_adapter&&, const bool, const bool) + */ + template<typename A1, typename A2, + detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0> + JSON_NODISCARD + static basic_json from_msgpack(A1 && a1, A2 && a2, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @brief create a JSON value from an input in UBJSON format + + Deserializes a given input @a i to a JSON value using the UBJSON (Universal + Binary JSON) serialization format. + + The library maps UBJSON types to JSON value types as follows: + + UBJSON type | JSON value type | marker + ----------- | --------------------------------------- | ------ + no-op | *no value, next value is read* | `N` + null | `null` | `Z` + false | `false` | `F` + true | `true` | `T` + float32 | number_float | `d` + float64 | number_float | `D` + uint8 | number_unsigned | `U` + int8 | number_integer | `i` + int16 | number_integer | `I` + int32 | number_integer | `l` + int64 | number_integer | `L` + string | string | `S` + char | string | `C` + array | array (optimized values are supported) | `[` + object | object (optimized values are supported) | `{` + + @note The mapping is **complete** in the sense that any UBJSON value can + be converted to a JSON value. + + @param[in] i an input in UBJSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if a parse error occurs + @throw parse_error.113 if a string could not be parsed successfully + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + UBJSON format to a JSON value.,from_ubjson} + + @sa http://ubjson.org + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + analogous serialization + @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the + related CBOR format + @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for + the related MessagePack format + @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for + the related BSON format + + @since version 3.1.0; added @a allow_exceptions parameter since 3.2.0 + */ + JSON_NODISCARD + static basic_json from_ubjson(detail::input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_ubjson(detail::input_adapter&&, const bool, const bool) + */ + template<typename A1, typename A2, + detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0> + JSON_NODISCARD + static basic_json from_ubjson(A1 && a1, A2 && a2, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @brief Create a JSON value from an input in BSON format + + Deserializes a given input @a i to a JSON value using the BSON (Binary JSON) + serialization format. + + The library maps BSON record types to JSON value types as follows: + + BSON type | BSON marker byte | JSON value type + --------------- | ---------------- | --------------------------- + double | 0x01 | number_float + string | 0x02 | string + document | 0x03 | object + array | 0x04 | array + binary | 0x05 | still unsupported + undefined | 0x06 | still unsupported + ObjectId | 0x07 | still unsupported + boolean | 0x08 | boolean + UTC Date-Time | 0x09 | still unsupported + null | 0x0A | null + Regular Expr. | 0x0B | still unsupported + DB Pointer | 0x0C | still unsupported + JavaScript Code | 0x0D | still unsupported + Symbol | 0x0E | still unsupported + JavaScript Code | 0x0F | still unsupported + int32 | 0x10 | number_integer + Timestamp | 0x11 | still unsupported + 128-bit decimal float | 0x13 | still unsupported + Max Key | 0x7F | still unsupported + Min Key | 0xFF | still unsupported + + @warning The mapping is **incomplete**. The unsupported mappings + are indicated in the table above. + + @param[in] i an input in BSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.114 if an unsupported BSON record type is encountered + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + BSON format to a JSON value.,from_bson} + + @sa http://bsonspec.org/spec.html + @sa @ref to_bson(const basic_json&) for the analogous serialization + @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the + related CBOR format + @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for + the related MessagePack format + @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the + related UBJSON format + */ + JSON_NODISCARD + static basic_json from_bson(detail::input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_bson(detail::input_adapter&&, const bool, const bool) + */ + template<typename A1, typename A2, + detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0> + JSON_NODISCARD + static basic_json from_bson(A1 && a1, A2 && a2, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions); + const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + + + /// @} + + ////////////////////////// + // JSON Pointer support // + ////////////////////////// + + /// @name JSON Pointer functions + /// @{ + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. Similar to @ref operator[](const typename + object_t::key_type&), `null` values are created in arrays and objects if + necessary. + + In particular: + - If the JSON pointer points to an object key that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. + - If the JSON pointer points to an array index that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. All indices between the current maximum and the given + index are also filled with `null`. + - The special value `-` is treated as a synonym for the index past the + end. + + @param[in] ptr a JSON pointer + + @return reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer} + + @since version 2.0.0 + */ + reference operator[](const json_pointer& ptr) + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. The function does not change the JSON + value; no `null` values are created. In particular, the the special value + `-` yields an exception. + + @param[in] ptr JSON pointer to the desired element + + @return const reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} + + @since version 2.0.0 + */ + const_reference operator[](const json_pointer& ptr) const + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a reference to the element at with specified JSON pointer @a ptr, + with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer} + */ + reference at(const json_pointer& ptr) + { + return ptr.get_checked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a const reference to the element at with specified JSON pointer @a + ptr, with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer_const} + */ + const_reference at(const json_pointer& ptr) const + { + return ptr.get_checked(this); + } + + /*! + @brief return flattened JSON value + + The function creates a JSON object whose keys are JSON pointers (see [RFC + 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all + primitive. The original JSON value can be restored using the @ref + unflatten() function. + + @return an object that maps JSON pointers to primitive values + + @note Empty objects and arrays are flattened to `null` and will not be + reconstructed correctly by the @ref unflatten() function. + + @complexity Linear in the size the JSON value. + + @liveexample{The following code shows how a JSON object is flattened to an + object whose keys consist of JSON pointers.,flatten} + + @sa @ref unflatten() for the reverse function + + @since version 2.0.0 + */ + basic_json flatten() const + { + basic_json result(value_t::object); + json_pointer::flatten("", *this, result); + return result; + } + + /*! + @brief unflatten a previously flattened JSON value + + The function restores the arbitrary nesting of a JSON value that has been + flattened before using the @ref flatten() function. The JSON value must + meet certain constraints: + 1. The value must be an object. + 2. The keys must be JSON pointers (see + [RFC 6901](https://tools.ietf.org/html/rfc6901)) + 3. The mapped values must be primitive JSON types. + + @return the original JSON from a flattened version + + @note Empty objects and arrays are flattened by @ref flatten() to `null` + values and can not unflattened to their original type. Apart from + this example, for a JSON value `j`, the following is always true: + `j == j.flatten().unflatten()`. + + @complexity Linear in the size the JSON value. + + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + + @liveexample{The following code shows how a flattened JSON object is + unflattened into the original nested JSON object.,unflatten} + + @sa @ref flatten() for the reverse function + + @since version 2.0.0 + */ + basic_json unflatten() const + { + return json_pointer::unflatten(*this); + } + + /// @} + + ////////////////////////// + // JSON Patch functions // + ////////////////////////// + + /// @name JSON Patch functions + /// @{ + + /*! + @brief applies a JSON patch + + [JSON Patch](http://jsonpatch.com) defines a JSON document structure for + expressing a sequence of operations to apply to a JSON) document. With + this function, a JSON Patch is applied to the current JSON value by + executing all operations from the patch. + + @param[in] json_patch JSON patch document + @return patched document + + @note The application of a patch is atomic: Either all operations succeed + and the patched document is returned or an exception is thrown. In + any case, the original value is not changed: the patch is applied + to a copy of the value. + + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + + @throw out_of_range.403 if a JSON pointer inside the patch could not be + resolved successfully in the current JSON value; example: `"key baz not + found"` + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful + + @complexity Linear in the size of the JSON value and the length of the + JSON patch. As usually only a fraction of the JSON value is affected by + the patch, the complexity can usually be neglected. + + @liveexample{The following code shows how a JSON patch is applied to a + value.,patch} + + @sa @ref diff -- create a JSON patch by comparing two JSON values + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) + + @since version 2.0.0 + */ + basic_json patch(const basic_json& json_patch) const + { + // make a working copy to apply the patch to + basic_json result = *this; + + // the valid JSON Patch operations + enum class patch_operations {add, remove, replace, move, copy, test, invalid}; + + const auto get_op = [](const std::string & op) + { + if (op == "add") + { + return patch_operations::add; + } + if (op == "remove") + { + return patch_operations::remove; + } + if (op == "replace") + { + return patch_operations::replace; + } + if (op == "move") + { + return patch_operations::move; + } + if (op == "copy") + { + return patch_operations::copy; + } + if (op == "test") + { + return patch_operations::test; + } + + return patch_operations::invalid; + }; + + // wrapper for "add" operation; add value at ptr + const auto operation_add = [&result](json_pointer & ptr, basic_json val) + { + // adding to the root of the target document means replacing it + if (ptr.empty()) + { + result = val; + return; + } + + // make sure the top element of the pointer exists + json_pointer top_pointer = ptr.top(); + if (top_pointer != ptr) + { + result.at(top_pointer); + } + + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.back(); + ptr.pop_back(); + basic_json& parent = result[ptr]; + + switch (parent.m_type) + { + case value_t::null: + case value_t::object: + { + // use operator[] to add value + parent[last_path] = val; + break; + } + + case value_t::array: + { + if (last_path == "-") + { + // special case: append to back + parent.push_back(val); + } + else + { + const auto idx = json_pointer::array_index(last_path); + if (JSON_UNLIKELY(static_cast<size_type>(idx) > parent.size())) + { + // avoid undefined behavior + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + + // default case: insert add offset + parent.insert(parent.begin() + static_cast<difference_type>(idx), val); + } + break; + } + + // if there exists a parent it cannot be primitive + default: // LCOV_EXCL_LINE + assert(false); // LCOV_EXCL_LINE + } + }; + + // wrapper for "remove" operation; remove value at ptr + const auto operation_remove = [&result](json_pointer & ptr) + { + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.back(); + ptr.pop_back(); + basic_json& parent = result.at(ptr); + + // remove child + if (parent.is_object()) + { + // perform range check + auto it = parent.find(last_path); + if (JSON_LIKELY(it != parent.end())) + { + parent.erase(it); + } + else + { + JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found")); + } + } + else if (parent.is_array()) + { + // note erase performs range check + parent.erase(static_cast<size_type>(json_pointer::array_index(last_path))); + } + }; + + // type check: top level value must be an array + if (JSON_UNLIKELY(not json_patch.is_array())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // iterate and apply the operations + for (const auto& val : json_patch) + { + // wrapper to get a value for an operation + const auto get_value = [&val](const std::string & op, + const std::string & member, + bool string_type) -> basic_json & + { + // find value + auto it = val.m_value.object->find(member); + + // context-sensitive error message + const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; + + // check if desired value is present + if (JSON_UNLIKELY(it == val.m_value.object->end())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'")); + } + + // check if result is of type string + if (JSON_UNLIKELY(string_type and not it->second.is_string())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'")); + } + + // no error: return value + return it->second; + }; + + // type check: every element of the array must be an object + if (JSON_UNLIKELY(not val.is_object())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // collect mandatory members + const std::string op = get_value("op", "op", true); + const std::string path = get_value(op, "path", true); + json_pointer ptr(path); + + switch (get_op(op)) + { + case patch_operations::add: + { + operation_add(ptr, get_value("add", "value", false)); + break; + } + + case patch_operations::remove: + { + operation_remove(ptr); + break; + } + + case patch_operations::replace: + { + // the "path" location must exist - use at() + result.at(ptr) = get_value("replace", "value", false); + break; + } + + case patch_operations::move: + { + const std::string from_path = get_value("move", "from", true); + json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The move operation is functionally identical to a + // "remove" operation on the "from" location, followed + // immediately by an "add" operation at the target + // location with the value that was just removed. + operation_remove(from_ptr); + operation_add(ptr, v); + break; + } + + case patch_operations::copy: + { + const std::string from_path = get_value("copy", "from", true); + const json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The copy is functionally identical to an "add" + // operation at the target location using the value + // specified in the "from" member. + operation_add(ptr, v); + break; + } + + case patch_operations::test: + { + bool success = false; + JSON_TRY + { + // check if "value" matches the one at "path" + // the "path" location must exist - use at() + success = (result.at(ptr) == get_value("test", "value", false)); + } + JSON_INTERNAL_CATCH (out_of_range&) + { + // ignore out of range errors: success remains false + } + + // throw an exception if test fails + if (JSON_UNLIKELY(not success)) + { + JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump())); + } + + break; + } + + default: + { + // op must be "add", "remove", "replace", "move", "copy", or + // "test" + JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid")); + } + } + } + + return result; + } + + /*! + @brief creates a diff as a JSON patch + + Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can + be changed into the value @a target by calling @ref patch function. + + @invariant For two JSON values @a source and @a target, the following code + yields always `true`: + @code {.cpp} + source.patch(diff(source, target)) == target; + @endcode + + @note Currently, only `remove`, `add`, and `replace` operations are + generated. + + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against + @param[in] path helper value to create JSON pointers + + @return a JSON patch to convert the @a source to @a target + + @complexity Linear in the lengths of @a source and @a target. + + @liveexample{The following code shows how a JSON patch is created as a + diff for two JSON values.,diff} + + @sa @ref patch -- apply a JSON patch + @sa @ref merge_patch -- apply a JSON Merge Patch + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + + @since version 2.0.0 + */ + JSON_NODISCARD + static basic_json diff(const basic_json& source, const basic_json& target, + const std::string& path = "") + { + // the patch + basic_json result(value_t::array); + + // if the values are the same, return empty patch + if (source == target) + { + return result; + } + + if (source.type() != target.type()) + { + // different types: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + return result; + } + + switch (source.type()) + { + case value_t::array: + { + // first pass: traverse common elements + std::size_t i = 0; + while (i < source.size() and i < target.size()) + { + // recursive call to compare array values at index i + auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + ++i; + } + + // i now reached the end of at least one array + // in a second pass, traverse the remaining elements + + // remove my remaining elements + const auto end_index = static_cast<difference_type>(result.size()); + while (i < source.size()) + { + // add operations in reverse order to avoid invalid + // indices + result.insert(result.begin() + end_index, object( + { + {"op", "remove"}, + {"path", path + "/" + std::to_string(i)} + })); + ++i; + } + + // add other remaining elements + while (i < target.size()) + { + result.push_back( + { + {"op", "add"}, + {"path", path + "/" + std::to_string(i)}, + {"value", target[i]} + }); + ++i; + } + + break; + } + + case value_t::object: + { + // first pass: traverse this object's elements + for (auto it = source.cbegin(); it != source.cend(); ++it) + { + // escape the key name to be used in a JSON patch + const auto key = json_pointer::escape(it.key()); + + if (target.find(it.key()) != target.end()) + { + // recursive call to compare object values at key it + auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + } + else + { + // found a key that is not in o -> remove it + result.push_back(object( + { + {"op", "remove"}, {"path", path + "/" + key} + })); + } + } + + // second pass: traverse other object's elements + for (auto it = target.cbegin(); it != target.cend(); ++it) + { + if (source.find(it.key()) == source.end()) + { + // found a key that is not in this -> add it + const auto key = json_pointer::escape(it.key()); + result.push_back( + { + {"op", "add"}, {"path", path + "/" + key}, + {"value", it.value()} + }); + } + } + + break; + } + + default: + { + // both primitive type: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + break; + } + } + + return result; + } + + /// @} + + //////////////////////////////// + // JSON Merge Patch functions // + //////////////////////////////// + + /// @name JSON Merge Patch functions + /// @{ + + /*! + @brief applies a JSON Merge Patch + + The merge patch format is primarily intended for use with the HTTP PATCH + method as a means of describing a set of modifications to a target + resource's content. This function applies a merge patch to the current + JSON value. + + The function implements the following algorithm from Section 2 of + [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): + + ``` + define MergePatch(Target, Patch): + if Patch is an Object: + if Target is not an Object: + Target = {} // Ignore the contents and set it to an empty Object + for each Name/Value pair in Patch: + if Value is null: + if Name exists in Target: + remove the Name/Value pair from Target + else: + Target[Name] = MergePatch(Target[Name], Value) + return Target + else: + return Patch + ``` + + Thereby, `Target` is the current object; that is, the patch is applied to + the current value. + + @param[in] apply_patch the patch to apply + + @complexity Linear in the lengths of @a patch. + + @liveexample{The following code shows how a JSON Merge Patch is applied to + a JSON document.,merge_patch} + + @sa @ref patch -- apply a JSON patch + @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) + + @since version 3.0.0 + */ + void merge_patch(const basic_json& apply_patch) + { + if (apply_patch.is_object()) + { + if (not is_object()) + { + *this = object(); + } + for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it) + { + if (it.value().is_null()) + { + erase(it.key()); + } + else + { + operator[](it.key()).merge_patch(it.value()); + } + } + } + else + { + *this = apply_patch; + } + } + + /// @} +}; +} // namespace nlohmann + +/////////////////////// +// nonmember support // +/////////////////////// + +// specialization of std::swap, and std::hash +namespace std +{ + +/// hash value for JSON objects +template<> +struct hash<nlohmann::json> +{ + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const + { + // a naive hashing via the string representation + const auto& h = hash<nlohmann::json::string_t>(); + return h(j.dump()); + } +}; + +/// specialization for std::less<value_t> +/// @note: do not remove the space after '<', +/// see https://github.com/nlohmann/json/pull/679 +template<> +struct less< ::nlohmann::detail::value_t> +{ + /*! + @brief compare two value_t enum values + @since version 3.0.0 + */ + bool operator()(nlohmann::detail::value_t lhs, + nlohmann::detail::value_t rhs) const noexcept + { + return nlohmann::detail::operator<(lhs, rhs); + } +}; + +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ +template<> +inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept( + is_nothrow_move_constructible<nlohmann::json>::value and + is_nothrow_move_assignable<nlohmann::json>::value +) +{ + j1.swap(j2); +} + +} // namespace std + +/*! +@brief user-defined string literal for JSON values + +This operator implements a user-defined string literal for JSON objects. It +can be used by adding `"_json"` to a string literal and returns a JSON object +if no parse error occurred. + +@param[in] s a string representation of a JSON object +@param[in] n the length of string @a s +@return a JSON object + +@since version 1.0.0 +*/ +inline nlohmann::json operator "" _json(const char* s, std::size_t n) +{ + return nlohmann::json::parse(s, s + n); +} + +/*! +@brief user-defined string literal for JSON pointer + +This operator implements a user-defined string literal for JSON Pointers. It +can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer +object if no parse error occurred. + +@param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s +@return a JSON pointer object + +@since version 2.0.0 +*/ +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) +{ + return nlohmann::json::json_pointer(std::string(s, n)); +} + +// #include <nlohmann/detail/macro_unscope.hpp> + + +// restore GCC/clang diagnostic settings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic pop +#endif +#if defined(__clang__) + #pragma GCC diagnostic pop +#endif + +// clean up +#undef JSON_INTERNAL_CATCH +#undef JSON_CATCH +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_LIKELY +#undef JSON_UNLIKELY +#undef JSON_DEPRECATED +#undef JSON_NODISCARD +#undef JSON_HAS_CPP_14 +#undef JSON_HAS_CPP_17 +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL + + +#endif // INCLUDE_NLOHMANN_JSON_HPP_ diff --git a/tools/mapjson/.gitignore b/tools/mapjson/.gitignore new file mode 100644 index 0000000..a5d5684 --- /dev/null +++ b/tools/mapjson/.gitignore @@ -0,0 +1 @@ +mapjson diff --git a/tools/mapjson/Makefile b/tools/mapjson/Makefile new file mode 100644 index 0000000..9a49be5 --- /dev/null +++ b/tools/mapjson/Makefile @@ -0,0 +1,18 @@ +CXX := g++ + +CXXFLAGS := -Wall -std=c++11 -O2 + +SRCS := json11.cpp mapjson.cpp + +HEADERS := mapjson.h + +.PHONY: all clean + +all: mapjson + @: + +mapjson: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) mapjson mapjson.exe diff --git a/tools/mapjson/json11.cpp b/tools/mapjson/json11.cpp new file mode 100644 index 0000000..1da5302 --- /dev/null +++ b/tools/mapjson/json11.cpp @@ -0,0 +1,786 @@ +/* Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "json11.h" +#include <cassert> +#include <cmath> +#include <cstdlib> +#include <cstdio> +#include <limits> + +namespace json11 { + +static const int max_depth = 200; + +using std::string; +using std::vector; +using std::map; +using std::make_shared; +using std::initializer_list; +using std::move; + +/* Helper for representing null - just a do-nothing struct, plus comparison + * operators so the helpers in JsonValue work. We can't use nullptr_t because + * it may not be orderable. + */ +struct NullStruct { + bool operator==(NullStruct) const { return true; } + bool operator<(NullStruct) const { return false; } +}; + +/* * * * * * * * * * * * * * * * * * * * + * Serialization + */ + +static void dump(NullStruct, string &out) { + out += "null"; +} + +static void dump(double value, string &out) { + if (std::isfinite(value)) { + char buf[32]; + snprintf(buf, sizeof buf, "%.17g", value); + out += buf; + } else { + out += "null"; + } +} + +static void dump(int value, string &out) { + char buf[32]; + snprintf(buf, sizeof buf, "%d", value); + out += buf; +} + +static void dump(bool value, string &out) { + out += value ? "true" : "false"; +} + +static void dump(const string &value, string &out) { + out += '"'; + for (size_t i = 0; i < value.length(); i++) { + const char ch = value[i]; + if (ch == '\\') { + out += "\\\\"; + } else if (ch == '"') { + out += "\\\""; + } else if (ch == '\b') { + out += "\\b"; + } else if (ch == '\f') { + out += "\\f"; + } else if (ch == '\n') { + out += "\\n"; + } else if (ch == '\r') { + out += "\\r"; + } else if (ch == '\t') { + out += "\\t"; + } else if (static_cast<uint8_t>(ch) <= 0x1f) { + char buf[8]; + snprintf(buf, sizeof buf, "\\u%04x", ch); + out += buf; + } else if (static_cast<uint8_t>(ch) == 0xe2 && static_cast<uint8_t>(value[i+1]) == 0x80 + && static_cast<uint8_t>(value[i+2]) == 0xa8) { + out += "\\u2028"; + i += 2; + } else if (static_cast<uint8_t>(ch) == 0xe2 && static_cast<uint8_t>(value[i+1]) == 0x80 + && static_cast<uint8_t>(value[i+2]) == 0xa9) { + out += "\\u2029"; + i += 2; + } else { + out += ch; + } + } + out += '"'; +} + +static void dump(const Json::array &values, string &out) { + bool first = true; + out += "["; + for (const auto &value : values) { + if (!first) + out += ", "; + value.dump(out); + first = false; + } + out += "]"; +} + +static void dump(const Json::object &values, string &out) { + bool first = true; + out += "{"; + for (const auto &kv : values) { + if (!first) + out += ", "; + dump(kv.first, out); + out += ": "; + kv.second.dump(out); + first = false; + } + out += "}"; +} + +void Json::dump(string &out) const { + m_ptr->dump(out); +} + +/* * * * * * * * * * * * * * * * * * * * + * Value wrappers + */ + +template <Json::Type tag, typename T> +class Value : public JsonValue { +protected: + + // Constructors + explicit Value(const T &value) : m_value(value) {} + explicit Value(T &&value) : m_value(move(value)) {} + + // Get type tag + Json::Type type() const override { + return tag; + } + + // Comparisons + bool equals(const JsonValue * other) const override { + return m_value == static_cast<const Value<tag, T> *>(other)->m_value; + } + bool less(const JsonValue * other) const override { + return m_value < static_cast<const Value<tag, T> *>(other)->m_value; + } + + const T m_value; + void dump(string &out) const override { json11::dump(m_value, out); } +}; + +class JsonDouble final : public Value<Json::NUMBER, double> { + double number_value() const override { return m_value; } + int int_value() const override { return static_cast<int>(m_value); } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } +public: + explicit JsonDouble(double value) : Value(value) {} +}; + +class JsonInt final : public Value<Json::NUMBER, int> { + double number_value() const override { return m_value; } + int int_value() const override { return m_value; } + bool equals(const JsonValue * other) const override { return m_value == other->number_value(); } + bool less(const JsonValue * other) const override { return m_value < other->number_value(); } +public: + explicit JsonInt(int value) : Value(value) {} +}; + +class JsonBoolean final : public Value<Json::BOOL, bool> { + bool bool_value() const override { return m_value; } +public: + explicit JsonBoolean(bool value) : Value(value) {} +}; + +class JsonString final : public Value<Json::STRING, string> { + const string &string_value() const override { return m_value; } +public: + explicit JsonString(const string &value) : Value(value) {} + explicit JsonString(string &&value) : Value(move(value)) {} +}; + +class JsonArray final : public Value<Json::ARRAY, Json::array> { + const Json::array &array_items() const override { return m_value; } + const Json & operator[](size_t i) const override; +public: + explicit JsonArray(const Json::array &value) : Value(value) {} + explicit JsonArray(Json::array &&value) : Value(move(value)) {} +}; + +class JsonObject final : public Value<Json::OBJECT, Json::object> { + const Json::object &object_items() const override { return m_value; } + const Json & operator[](const string &key) const override; +public: + explicit JsonObject(const Json::object &value) : Value(value) {} + explicit JsonObject(Json::object &&value) : Value(move(value)) {} +}; + +class JsonNull final : public Value<Json::NUL, NullStruct> { +public: + JsonNull() : Value({}) {} +}; + +/* * * * * * * * * * * * * * * * * * * * + * Static globals - static-init-safe + */ +struct Statics { + const std::shared_ptr<JsonValue> null = make_shared<JsonNull>(); + const std::shared_ptr<JsonValue> t = make_shared<JsonBoolean>(true); + const std::shared_ptr<JsonValue> f = make_shared<JsonBoolean>(false); + const string empty_string; + const vector<Json> empty_vector; + const map<string, Json> empty_map; + Statics() {} +}; + +static const Statics & statics() { + static const Statics s {}; + return s; +} + +static const Json & static_null() { + // This has to be separate, not in Statics, because Json() accesses statics().null. + static const Json json_null; + return json_null; +} + +/* * * * * * * * * * * * * * * * * * * * + * Constructors + */ + +Json::Json() noexcept : m_ptr(statics().null) {} +Json::Json(std::nullptr_t) noexcept : m_ptr(statics().null) {} +Json::Json(double value) : m_ptr(make_shared<JsonDouble>(value)) {} +Json::Json(int value) : m_ptr(make_shared<JsonInt>(value)) {} +Json::Json(bool value) : m_ptr(value ? statics().t : statics().f) {} +Json::Json(const string &value) : m_ptr(make_shared<JsonString>(value)) {} +Json::Json(string &&value) : m_ptr(make_shared<JsonString>(move(value))) {} +Json::Json(const char * value) : m_ptr(make_shared<JsonString>(value)) {} +Json::Json(const Json::array &values) : m_ptr(make_shared<JsonArray>(values)) {} +Json::Json(Json::array &&values) : m_ptr(make_shared<JsonArray>(move(values))) {} +Json::Json(const Json::object &values) : m_ptr(make_shared<JsonObject>(values)) {} +Json::Json(Json::object &&values) : m_ptr(make_shared<JsonObject>(move(values))) {} + +/* * * * * * * * * * * * * * * * * * * * + * Accessors + */ + +Json::Type Json::type() const { return m_ptr->type(); } +double Json::number_value() const { return m_ptr->number_value(); } +int Json::int_value() const { return m_ptr->int_value(); } +bool Json::bool_value() const { return m_ptr->bool_value(); } +const string & Json::string_value() const { return m_ptr->string_value(); } +const vector<Json> & Json::array_items() const { return m_ptr->array_items(); } +const map<string, Json> & Json::object_items() const { return m_ptr->object_items(); } +const Json & Json::operator[] (size_t i) const { return (*m_ptr)[i]; } +const Json & Json::operator[] (const string &key) const { return (*m_ptr)[key]; } + +double JsonValue::number_value() const { return 0; } +int JsonValue::int_value() const { return 0; } +bool JsonValue::bool_value() const { return false; } +const string & JsonValue::string_value() const { return statics().empty_string; } +const vector<Json> & JsonValue::array_items() const { return statics().empty_vector; } +const map<string, Json> & JsonValue::object_items() const { return statics().empty_map; } +const Json & JsonValue::operator[] (size_t) const { return static_null(); } +const Json & JsonValue::operator[] (const string &) const { return static_null(); } + +const Json & JsonObject::operator[] (const string &key) const { + auto iter = m_value.find(key); + return (iter == m_value.end()) ? static_null() : iter->second; +} +const Json & JsonArray::operator[] (size_t i) const { + if (i >= m_value.size()) return static_null(); + else return m_value[i]; +} + +/* * * * * * * * * * * * * * * * * * * * + * Comparison + */ + +bool Json::operator== (const Json &other) const { + if (m_ptr == other.m_ptr) + return true; + if (m_ptr->type() != other.m_ptr->type()) + return false; + + return m_ptr->equals(other.m_ptr.get()); +} + +bool Json::operator< (const Json &other) const { + if (m_ptr == other.m_ptr) + return false; + if (m_ptr->type() != other.m_ptr->type()) + return m_ptr->type() < other.m_ptr->type(); + + return m_ptr->less(other.m_ptr.get()); +} + +/* * * * * * * * * * * * * * * * * * * * + * Parsing + */ + +/* esc(c) + * + * Format char c suitable for printing in an error message. + */ +static inline string esc(char c) { + char buf[12]; + if (static_cast<uint8_t>(c) >= 0x20 && static_cast<uint8_t>(c) <= 0x7f) { + snprintf(buf, sizeof buf, "'%c' (%d)", c, c); + } else { + snprintf(buf, sizeof buf, "(%d)", c); + } + return string(buf); +} + +static inline bool in_range(long x, long lower, long upper) { + return (x >= lower && x <= upper); +} + +namespace { +/* JsonParser + * + * Object that tracks all state of an in-progress parse. + */ +struct JsonParser final { + + /* State + */ + const string &str; + size_t i; + string &err; + bool failed; + const JsonParse strategy; + + /* fail(msg, err_ret = Json()) + * + * Mark this parse as failed. + */ + Json fail(string &&msg) { + return fail(move(msg), Json()); + } + + template <typename T> + T fail(string &&msg, const T err_ret) { + if (!failed) + err = std::move(msg); + failed = true; + return err_ret; + } + + /* consume_whitespace() + * + * Advance until the current character is non-whitespace. + */ + void consume_whitespace() { + while (str[i] == ' ' || str[i] == '\r' || str[i] == '\n' || str[i] == '\t') + i++; + } + + /* consume_comment() + * + * Advance comments (c-style inline and multiline). + */ + bool consume_comment() { + bool comment_found = false; + if (str[i] == '/') { + i++; + if (i == str.size()) + return fail("unexpected end of input after start of comment", false); + if (str[i] == '/') { // inline comment + i++; + // advance until next line, or end of input + while (i < str.size() && str[i] != '\n') { + i++; + } + comment_found = true; + } + else if (str[i] == '*') { // multiline comment + i++; + if (i > str.size()-2) + return fail("unexpected end of input inside multi-line comment", false); + // advance until closing tokens + while (!(str[i] == '*' && str[i+1] == '/')) { + i++; + if (i > str.size()-2) + return fail( + "unexpected end of input inside multi-line comment", false); + } + i += 2; + comment_found = true; + } + else + return fail("malformed comment", false); + } + return comment_found; + } + + /* consume_garbage() + * + * Advance until the current character is non-whitespace and non-comment. + */ + void consume_garbage() { + consume_whitespace(); + if(strategy == JsonParse::COMMENTS) { + bool comment_found = false; + do { + comment_found = consume_comment(); + if (failed) return; + consume_whitespace(); + } + while(comment_found); + } + } + + /* get_next_token() + * + * Return the next non-whitespace character. If the end of the input is reached, + * flag an error and return 0. + */ + char get_next_token() { + consume_garbage(); + if (failed) return static_cast<char>(0); + if (i == str.size()) + return fail("unexpected end of input", static_cast<char>(0)); + + return str[i++]; + } + + /* encode_utf8(pt, out) + * + * Encode pt as UTF-8 and add it to out. + */ + void encode_utf8(long pt, string & out) { + if (pt < 0) + return; + + if (pt < 0x80) { + out += static_cast<char>(pt); + } else if (pt < 0x800) { + out += static_cast<char>((pt >> 6) | 0xC0); + out += static_cast<char>((pt & 0x3F) | 0x80); + } else if (pt < 0x10000) { + out += static_cast<char>((pt >> 12) | 0xE0); + out += static_cast<char>(((pt >> 6) & 0x3F) | 0x80); + out += static_cast<char>((pt & 0x3F) | 0x80); + } else { + out += static_cast<char>((pt >> 18) | 0xF0); + out += static_cast<char>(((pt >> 12) & 0x3F) | 0x80); + out += static_cast<char>(((pt >> 6) & 0x3F) | 0x80); + out += static_cast<char>((pt & 0x3F) | 0x80); + } + } + + /* parse_string() + * + * Parse a string, starting at the current position. + */ + string parse_string() { + string out; + long last_escaped_codepoint = -1; + while (true) { + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + char ch = str[i++]; + + if (ch == '"') { + encode_utf8(last_escaped_codepoint, out); + return out; + } + + if (in_range(ch, 0, 0x1f)) + return fail("unescaped " + esc(ch) + " in string", ""); + + // The usual case: non-escaped characters + if (ch != '\\') { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + out += ch; + continue; + } + + // Handle escapes + if (i == str.size()) + return fail("unexpected end of input in string", ""); + + ch = str[i++]; + + if (ch == 'u') { + // Extract 4-byte escape sequence + string esc = str.substr(i, 4); + // Explicitly check length of the substring. The following loop + // relies on std::string returning the terminating NUL when + // accessing str[length]. Checking here reduces brittleness. + if (esc.length() < 4) { + return fail("bad \\u escape: " + esc, ""); + } + for (size_t j = 0; j < 4; j++) { + if (!in_range(esc[j], 'a', 'f') && !in_range(esc[j], 'A', 'F') + && !in_range(esc[j], '0', '9')) + return fail("bad \\u escape: " + esc, ""); + } + + long codepoint = strtol(esc.data(), nullptr, 16); + + // JSON specifies that characters outside the BMP shall be encoded as a pair + // of 4-hex-digit \u escapes encoding their surrogate pair components. Check + // whether we're in the middle of such a beast: the previous codepoint was an + // escaped lead (high) surrogate, and this is a trail (low) surrogate. + if (in_range(last_escaped_codepoint, 0xD800, 0xDBFF) + && in_range(codepoint, 0xDC00, 0xDFFF)) { + // Reassemble the two surrogate pairs into one astral-plane character, per + // the UTF-16 algorithm. + encode_utf8((((last_escaped_codepoint - 0xD800) << 10) + | (codepoint - 0xDC00)) + 0x10000, out); + last_escaped_codepoint = -1; + } else { + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = codepoint; + } + + i += 4; + continue; + } + + encode_utf8(last_escaped_codepoint, out); + last_escaped_codepoint = -1; + + if (ch == 'b') { + out += '\b'; + } else if (ch == 'f') { + out += '\f'; + } else if (ch == 'n') { + out += '\n'; + } else if (ch == 'r') { + out += '\r'; + } else if (ch == 't') { + out += '\t'; + } else if (ch == '"' || ch == '\\' || ch == '/') { + out += ch; + } else { + return fail("invalid escape character " + esc(ch), ""); + } + } + } + + /* parse_number() + * + * Parse a double. + */ + Json parse_number() { + size_t start_pos = i; + + if (str[i] == '-') + i++; + + // Integer part + if (str[i] == '0') { + i++; + if (in_range(str[i], '0', '9')) + return fail("leading 0s not permitted in numbers"); + } else if (in_range(str[i], '1', '9')) { + i++; + while (in_range(str[i], '0', '9')) + i++; + } else { + return fail("invalid " + esc(str[i]) + " in number"); + } + + if (str[i] != '.' && str[i] != 'e' && str[i] != 'E' + && (i - start_pos) <= static_cast<size_t>(std::numeric_limits<int>::digits10)) { + return std::atoi(str.c_str() + start_pos); + } + + // Decimal part + if (str[i] == '.') { + i++; + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in fractional part"); + + while (in_range(str[i], '0', '9')) + i++; + } + + // Exponent part + if (str[i] == 'e' || str[i] == 'E') { + i++; + + if (str[i] == '+' || str[i] == '-') + i++; + + if (!in_range(str[i], '0', '9')) + return fail("at least one digit required in exponent"); + + while (in_range(str[i], '0', '9')) + i++; + } + + return std::strtod(str.c_str() + start_pos, nullptr); + } + + /* expect(str, res) + * + * Expect that 'str' starts at the character that was just read. If it does, advance + * the input and return res. If not, flag an error. + */ + Json expect(const string &expected, Json res) { + assert(i != 0); + i--; + if (str.compare(i, expected.length(), expected) == 0) { + i += expected.length(); + return res; + } else { + return fail("parse error: expected " + expected + ", got " + str.substr(i, expected.length())); + } + } + + /* parse_json() + * + * Parse a JSON object. + */ + Json parse_json(int depth) { + if (depth > max_depth) { + return fail("exceeded maximum nesting depth"); + } + + char ch = get_next_token(); + if (failed) + return Json(); + + if (ch == '-' || (ch >= '0' && ch <= '9')) { + i--; + return parse_number(); + } + + if (ch == 't') + return expect("true", true); + + if (ch == 'f') + return expect("false", false); + + if (ch == 'n') + return expect("null", Json()); + + if (ch == '"') + return parse_string(); + + if (ch == '{') { + map<string, Json> data; + ch = get_next_token(); + if (ch == '}') + return data; + + while (1) { + if (ch != '"') + return fail("expected '\"' in object, got " + esc(ch)); + + string key = parse_string(); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch != ':') + return fail("expected ':' in object, got " + esc(ch)); + + data[std::move(key)] = parse_json(depth + 1); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == '}') + break; + if (ch != ',') + return fail("expected ',' in object, got " + esc(ch)); + + ch = get_next_token(); + } + return data; + } + + if (ch == '[') { + vector<Json> data; + ch = get_next_token(); + if (ch == ']') + return data; + + while (1) { + i--; + data.push_back(parse_json(depth + 1)); + if (failed) + return Json(); + + ch = get_next_token(); + if (ch == ']') + break; + if (ch != ',') + return fail("expected ',' in list, got " + esc(ch)); + + ch = get_next_token(); + (void)ch; + } + return data; + } + + return fail("expected value, got " + esc(ch)); + } +}; +}//namespace { + +Json Json::parse(const string &in, string &err, JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + Json result = parser.parse_json(0); + + // Check for any trailing garbage + parser.consume_garbage(); + if (parser.failed) + return Json(); + if (parser.i != in.size()) + return parser.fail("unexpected trailing " + esc(in[parser.i])); + + return result; +} + +// Documented in json11.hpp +vector<Json> Json::parse_multi(const string &in, + std::string::size_type &parser_stop_pos, + string &err, + JsonParse strategy) { + JsonParser parser { in, 0, err, false, strategy }; + parser_stop_pos = 0; + vector<Json> json_vec; + while (parser.i != in.size() && !parser.failed) { + json_vec.push_back(parser.parse_json(0)); + if (parser.failed) + break; + + // Check for another object + parser.consume_garbage(); + if (parser.failed) + break; + parser_stop_pos = parser.i; + } + return json_vec; +} + +/* * * * * * * * * * * * * * * * * * * * + * Shape-checking + */ + +bool Json::has_shape(const shape & types, string & err) const { + if (!is_object()) { + err = "expected JSON object, got " + dump(); + return false; + } + + for (auto & item : types) { + if ((*this)[item.first].type() != item.second) { + err = "bad type for " + item.first + " in " + dump(); + return false; + } + } + + return true; +} + +} // namespace json11 diff --git a/tools/mapjson/json11.h b/tools/mapjson/json11.h new file mode 100644 index 0000000..c04c436 --- /dev/null +++ b/tools/mapjson/json11.h @@ -0,0 +1,230 @@ +/* json11 + * + * json11 is a tiny JSON library for C++11, providing JSON parsing and serialization. + * + * The core object provided by the library is json11::Json. A Json object represents any JSON + * value: null, bool, number (int or double), string (std::string), array (std::vector), or + * object (std::map). + * + * Json objects act like values: they can be assigned, copied, moved, compared for equality or + * order, etc. There are also helper methods Json::dump, to serialize a Json to a string, and + * Json::parse (static) to parse a std::string as a Json object. + * + * Internally, the various types of Json object are represented by the JsonValue class + * hierarchy. + * + * A note on numbers - JSON specifies the syntax of number formatting but not its semantics, + * so some JSON implementations distinguish between integers and floating-point numbers, while + * some don't. In json11, we choose the latter. Because some JSON implementations (namely + * Javascript itself) treat all numbers as the same type, distinguishing the two leads + * to JSON that will be *silently* changed by a round-trip through those implementations. + * Dangerous! To avoid that risk, json11 stores all numbers as double internally, but also + * provides integer helpers. + * + * Fortunately, double-precision IEEE754 ('double') can precisely store any integer in the + * range +/-2^53, which includes every 'int' on most systems. (Timestamps often use int64 + * or long long to avoid the Y2038K problem; a double storing microseconds since some epoch + * will be exact for +/- 275 years.) + */ + +/* Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#pragma once + +#include <string> +#include <vector> +#include <map> +#include <memory> +#include <initializer_list> + +#ifdef _MSC_VER + #if _MSC_VER <= 1800 // VS 2013 + #ifndef noexcept + #define noexcept throw() + #endif + + #ifndef snprintf + #define snprintf _snprintf_s + #endif + #endif +#endif + +namespace json11 { + +enum JsonParse { + STANDARD, COMMENTS +}; + +class JsonValue; + +class Json final { +public: + // Types + enum Type { + NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT + }; + + // Array and object typedefs + typedef std::vector<Json> array; + typedef std::map<std::string, Json> object; + + // Constructors for the various types of JSON value. + Json() noexcept; // NUL + Json(std::nullptr_t) noexcept; // NUL + Json(double value); // NUMBER + Json(int value); // NUMBER + Json(bool value); // BOOL + Json(const std::string &value); // STRING + Json(std::string &&value); // STRING + Json(const char * value); // STRING + Json(const array &values); // ARRAY + Json(array &&values); // ARRAY + Json(const object &values); // OBJECT + Json(object &&values); // OBJECT + + // Implicit constructor: anything with a to_json() function. + template <class T, class = decltype(&T::to_json)> + Json(const T & t) : Json(t.to_json()) {} + + // Implicit constructor: map-like objects (std::map, std::unordered_map, etc) + template <class M, typename std::enable_if< + std::is_constructible<std::string, decltype(std::declval<M>().begin()->first)>::value + && std::is_constructible<Json, decltype(std::declval<M>().begin()->second)>::value, + int>::type = 0> + Json(const M & m) : Json(object(m.begin(), m.end())) {} + + // Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc) + template <class V, typename std::enable_if< + std::is_constructible<Json, decltype(*std::declval<V>().begin())>::value, + int>::type = 0> + Json(const V & v) : Json(array(v.begin(), v.end())) {} + + // This prevents Json(some_pointer) from accidentally producing a bool. Use + // Json(bool(some_pointer)) if that behavior is desired. + Json(void *) = delete; + + // Accessors + Type type() const; + + bool is_null() const { return type() == NUL; } + bool is_number() const { return type() == NUMBER; } + bool is_bool() const { return type() == BOOL; } + bool is_string() const { return type() == STRING; } + bool is_array() const { return type() == ARRAY; } + bool is_object() const { return type() == OBJECT; } + + // Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not + // distinguish between integer and non-integer numbers - number_value() and int_value() + // can both be applied to a NUMBER-typed object. + double number_value() const; + int int_value() const; + + // Return the enclosed value if this is a boolean, false otherwise. + bool bool_value() const; + // Return the enclosed string if this is a string, "" otherwise. + const std::string &string_value() const; + // Return the enclosed std::vector if this is an array, or an empty vector otherwise. + const array &array_items() const; + // Return the enclosed std::map if this is an object, or an empty map otherwise. + const object &object_items() const; + + // Return a reference to arr[i] if this is an array, Json() otherwise. + const Json & operator[](size_t i) const; + // Return a reference to obj[key] if this is an object, Json() otherwise. + const Json & operator[](const std::string &key) const; + + // Serialize. + void dump(std::string &out) const; + std::string dump() const { + std::string out; + dump(out); + return out; + } + + // Parse. If parse fails, return Json() and assign an error message to err. + static Json parse(const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + static Json parse(const char * in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + if (in) { + return parse(std::string(in), err, strategy); + } else { + err = "null input"; + return nullptr; + } + } + // Parse multiple objects, concatenated or separated by whitespace + static std::vector<Json> parse_multi( + const std::string & in, + std::string::size_type & parser_stop_pos, + std::string & err, + JsonParse strategy = JsonParse::STANDARD); + + static inline std::vector<Json> parse_multi( + const std::string & in, + std::string & err, + JsonParse strategy = JsonParse::STANDARD) { + std::string::size_type parser_stop_pos; + return parse_multi(in, parser_stop_pos, err, strategy); + } + + bool operator== (const Json &rhs) const; + bool operator< (const Json &rhs) const; + bool operator!= (const Json &rhs) const { return !(*this == rhs); } + bool operator<= (const Json &rhs) const { return !(rhs < *this); } + bool operator> (const Json &rhs) const { return (rhs < *this); } + bool operator>= (const Json &rhs) const { return !(*this < rhs); } + + /* has_shape(types, err) + * + * Return true if this is a JSON object and, for each item in types, has a field of + * the given type. If not, return false and set err to a descriptive message. + */ + typedef std::initializer_list<std::pair<std::string, Type>> shape; + bool has_shape(const shape & types, std::string & err) const; + +private: + std::shared_ptr<JsonValue> m_ptr; +}; + +// Internal class hierarchy - JsonValue objects are not exposed to users of this API. +class JsonValue { +protected: + friend class Json; + friend class JsonInt; + friend class JsonDouble; + virtual Json::Type type() const = 0; + virtual bool equals(const JsonValue * other) const = 0; + virtual bool less(const JsonValue * other) const = 0; + virtual void dump(std::string &out) const = 0; + virtual double number_value() const; + virtual int int_value() const; + virtual bool bool_value() const; + virtual const std::string &string_value() const; + virtual const Json::array &array_items() const; + virtual const Json &operator[](size_t i) const; + virtual const Json::object &object_items() const; + virtual const Json &operator[](const std::string &key) const; + virtual ~JsonValue() {} +}; + +} // namespace json11 diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp new file mode 100644 index 0000000..1cf196f --- /dev/null +++ b/tools/mapjson/mapjson.cpp @@ -0,0 +1,538 @@ +// mapjson.cpp + +#include <iostream> +using std::cout; using std::endl; + +#include <string> +using std::string; + +#include <vector> +using std::vector; + +#include <algorithm> +using std::sort; using std::find; + +#include <map> +using std::map; + +#include <fstream> +using std::ofstream; using std::ifstream; + +#include <sstream> +using std::ostringstream; + +#include <limits> +using std::numeric_limits; + +#include "json11.h" +using json11::Json; + +#include "mapjson.h" + + +string read_text_file(string filepath) { + ifstream in_file(filepath); + + if (!in_file.is_open()) + FATAL_ERROR("Cannot open file %s for reading.\n", filepath.c_str()); + + string text; + + in_file.seekg(0, std::ios::end); + text.resize(in_file.tellg()); + + in_file.seekg(0, std::ios::beg); + in_file.read(&text[0], text.size()); + + in_file.close(); + + return text; +} + +void write_text_file(string filepath, string text) { + ofstream out_file(filepath, std::ofstream::binary); + + if (!out_file.is_open()) + FATAL_ERROR("Cannot open file %s for writing.\n", filepath.c_str()); + + out_file << text; + + out_file.close(); +} + +string generate_map_header_text(Json map_data, Json layouts_data, string version) { + string map_layout_id = map_data["layout"].string_value(); + + vector<Json> matched; + + for (auto &field : layouts_data["layouts"].array_items()) { + if (map_layout_id == field["id"].string_value()) + matched.push_back(field); + } + + if (matched.size() != 1) + FATAL_ERROR("Failed to find matching layout for %s.\n", map_layout_id.c_str()); + + Json layout = matched[0]; + + ostringstream text; + + text << map_data["name"].string_value() << ":\n" + << "\t.4byte " << layout["name"].string_value() << "\n"; + + if (map_data.object_items().find("shared_events_map") != map_data.object_items().end()) + text << "\t.4byte " << map_data["shared_events_map"].string_value() << "_MapEvents\n"; + else + text << "\t.4byte " << map_data["name"].string_value() << "_MapEvents\n"; + + if (map_data.object_items().find("shared_scripts_map") != map_data.object_items().end()) + text << "\t.4byte " << map_data["shared_scripts_map"].string_value() << "_MapScripts\n"; + else + text << "\t.4byte " << map_data["name"].string_value() << "_MapScripts\n"; + + if (map_data.object_items().find("connections") != map_data.object_items().end() + && map_data["connections"].array_items().size() > 0) + text << "\t.4byte " << map_data["name"].string_value() << "_MapConnections\n"; + else + text << "\t.4byte 0x0\n"; + + text << "\t.2byte " << map_data["music"].string_value() << "\n" + << "\t.2byte " << layout["id"].string_value() << "\n" + << "\t.byte " << map_data["region_map_section"].string_value() << "\n" + << "\t.byte " << map_data["requires_flash"].bool_value() << "\n" + << "\t.byte " << map_data["weather"].string_value() << "\n" + << "\t.byte " << map_data["map_type"].string_value() << "\n" + << "\t.2byte 0\n"; + + if (version == "ruby") + text << "\t.byte " << map_data["show_map_name"].bool_value() << "\n"; + else if (version == "emerald") + text << "\tmap_header_flags " + << "allow_bike=" << map_data["allow_bike"].bool_value() << ", " + << "allow_escape_rope=" << map_data["allow_escape_rope"].bool_value() << ", " + << "allow_run=" << map_data["allow_running"].bool_value() << ", " + << "show_map_name=" << map_data["show_map_name"].bool_value() << "\n"; + + text << "\t.byte " << map_data["battle_scene"].string_value() << "\n\n"; + + return text.str(); +} + +string generate_map_connections_text(Json map_data) { + if (map_data["connections"] == Json()) + return string("\n"); + + ostringstream text; + + text << map_data["name"].string_value() << "_MapConnectionsList:\n"; + + for (auto &connection : map_data["connections"].array_items()) { + text << "\tconnection " + << connection["direction"].string_value() << ", " + << connection["offset"].int_value() << ", " + << connection["map"].string_value() << "\n"; + } + + text << "\n" << map_data["name"].string_value() << "_MapConnections:\n" + << "\t.4byte " << map_data["connections"].array_items().size() << "\n" + << "\t.4byte " << map_data["name"].string_value() << "_MapConnectionsList\n\n"; + + return text.str(); +} + +string generate_map_events_text(Json map_data) { + if (map_data.object_items().find("shared_events_map") != map_data.object_items().end()) + return string("\n"); + + ostringstream text; + + string objects_label, warps_label, coords_label, bgs_label; + + if (map_data["object_events"].array_items().size() > 0) { + objects_label = map_data["name"].string_value() + "_EventObjects"; + text << objects_label << ":\n"; + for (unsigned int i = 0; i < map_data["object_events"].array_items().size(); i++) { + auto obj_event = map_data["object_events"].array_items()[i]; + text << "\tobject_event " << i + 1 << ", " + << obj_event["graphics_id"].string_value() << ", 0, " + << obj_event["x"].int_value() << ", " + << obj_event["y"].int_value() << ", " + << obj_event["elevation"].int_value() << ", " + << obj_event["movement_type"].string_value() << ", " + << obj_event["movement_range_x"].int_value() << ", " + << obj_event["movement_range_y"].int_value() << ", " + << obj_event["trainer_type"].string_value() << ", " + << obj_event["trainer_sight_or_berry_tree_id"].string_value() << ", " + << obj_event["script"].string_value() << ", " + << obj_event["flag"].string_value() << "\n"; + } + text << "\n"; + } else { + objects_label = "0x0"; + } + + if (map_data["warp_events"].array_items().size() > 0) { + warps_label = map_data["name"].string_value() + "_MapWarps"; + text << warps_label << ":\n"; + for (auto &warp_event : map_data["warp_events"].array_items()) { + text << "\twarp_def " + << warp_event["x"].int_value() << ", " + << warp_event["y"].int_value() << ", " + << warp_event["elevation"].int_value() << ", " + << warp_event["dest_warp_id"].int_value() << ", " + << warp_event["dest_map"].string_value() << "\n"; + } + text << "\n"; + } else { + warps_label = "0x0"; + } + + if (map_data["coord_events"].array_items().size() > 0) { + coords_label = map_data["name"].string_value() + "_MapCoordEvents"; + text << coords_label << ":\n"; + for (auto &coord_event : map_data["coord_events"].array_items()) { + if (coord_event["type"].string_value() == "trigger") { + text << "\tcoord_event " + << coord_event["x"].int_value() << ", " + << coord_event["y"].int_value() << ", " + << coord_event["elevation"].int_value() << ", " + << coord_event["var"].string_value() << ", " + << coord_event["var_value"].string_value() << ", " + << coord_event["script"].string_value() << "\n"; + } + else if (coord_event["type"] == "weather") { + text << "\tcoord_weather_event " + << coord_event["x"].int_value() << ", " + << coord_event["y"].int_value() << ", " + << coord_event["elevation"].int_value() << ", " + << coord_event["weather"].string_value() << "\n"; + } + } + text << "\n"; + } else { + coords_label = "0x0"; + } + + if (map_data["bg_events"].array_items().size() > 0) { + bgs_label = map_data["name"].string_value() + "_MapBGEvents"; + text << bgs_label << ":\n"; + for (auto &bg_event : map_data["bg_events"].array_items()) { + if (bg_event["type"] == "sign") { + text << "\tbg_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["player_facing_dir"].string_value() << ", " + << bg_event["script"].string_value() << "\n"; + } + else if (bg_event["type"] == "hidden_item") { + text << "\tbg_hidden_item_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["item"].string_value() << ", " + << bg_event["flag"].string_value() << "\n"; + } + else if (bg_event["type"] == "secret_base") { + text << "\tbg_secret_base_event " + << bg_event["x"].int_value() << ", " + << bg_event["y"].int_value() << ", " + << bg_event["elevation"].int_value() << ", " + << bg_event["secret_base_id"].string_value() << "\n"; + } + } + text << "\n"; + } else { + bgs_label = "0x0"; + } + + text << map_data["name"].string_value() << "_MapEvents::\n" + << "\tmap_events " << objects_label << ", " << warps_label << ", " + << coords_label << ", " << bgs_label << "\n\n"; + + return text.str(); +} + +string get_directory_name(string filename) { + size_t dir_pos = filename.find_last_of("/\\"); + + return filename.substr(0, dir_pos + 1); +} + +void process_map(string map_filepath, string layouts_filepath, string version) { + string mapdata_err, layouts_err; + + string mapdata_json_text = read_text_file(map_filepath); + string layouts_json_text = read_text_file(layouts_filepath); + + Json map_data = Json::parse(mapdata_json_text, mapdata_err); + if (map_data == Json()) + FATAL_ERROR("%s\n", mapdata_err.c_str()); + + Json layouts_data = Json::parse(layouts_json_text, layouts_err); + if (layouts_data == Json()) + FATAL_ERROR("%s\n", layouts_err.c_str()); + + string header_text = generate_map_header_text(map_data, layouts_data, version); + string events_text = generate_map_events_text(map_data); + string connections_text = generate_map_connections_text(map_data); + + string files_dir = get_directory_name(map_filepath); + write_text_file(files_dir + "header.inc", header_text); + write_text_file(files_dir + "events.inc", events_text); + write_text_file(files_dir + "connections.inc", connections_text); +} + +string generate_groups_text(Json groups_data) { + ostringstream text; + + for (auto &key : groups_data["group_order"].array_items()) { + string group = key.string_value(); + text << group << "::\n"; + auto maps = groups_data[group].array_items(); + for (Json &map_name : maps) + text << "\t.4byte " << map_name.string_value() << "\n"; + text << "\n"; + } + + text << "\t.align 2\n" << "gMapGroups::\n"; + for (auto &group : groups_data["group_order"].array_items()) + text << "\t.4byte " << group.string_value() << "\n"; + text << "\n"; + + return text.str(); +} + +string generate_connections_text(Json groups_data) { + vector<Json> map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name); + + vector<Json> connections_include_order = groups_data["connections_include_order"].array_items(); + + if (connections_include_order.size() > 0) + sort(map_names.begin(), map_names.end(), [connections_include_order](const Json &a, const Json &b) { + auto iter_a = find(connections_include_order.begin(), connections_include_order.end(), a); + if (iter_a == connections_include_order.end()) + iter_a = connections_include_order.begin() + numeric_limits<int>::max(); + auto iter_b = find(connections_include_order.begin(), connections_include_order.end(), b); + if (iter_b == connections_include_order.end()) + iter_b = connections_include_order.begin() + numeric_limits<int>::max(); + return iter_a < iter_b; + }); + + ostringstream text; + + for (Json map_name : map_names) + text << "\t.include \"data/maps/" << map_name.string_value() << "/connections.inc\"\n"; + + return text.str(); +} + +string generate_headers_text(Json groups_data) { + vector<string> map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name.string_value()); + + ostringstream text; + + for (string map_name : map_names) + text << "\t.include \"data/maps/" << map_name << "/header.inc\"\n"; + + return text.str(); +} + +string generate_events_text(Json groups_data) { + vector<string> map_names; + + for (auto &group : groups_data["group_order"].array_items()) + for (auto map_name : groups_data[group.string_value()].array_items()) + map_names.push_back(map_name.string_value()); + + ostringstream text; + + for (string map_name : map_names) + text << "\t.include \"data/maps/" << map_name << "/events.inc\"\n"; + + return text.str(); +} + +string generate_map_constants_text(string groups_filepath, Json groups_data) { + string file_dir = get_directory_name(groups_filepath); + char dir_separator = file_dir.back(); + + ostringstream text; + + text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n" + << "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n"; + + int group_num = 0; + + for (auto &group : groups_data["group_order"].array_items()) { + text << "// Map Group " << group_num << "\n"; + vector<Json> map_ids; + size_t max_length = 0; + + for (auto &map_name : groups_data[group.string_value()].array_items()) { + string header_filepath = file_dir + map_name.string_value() + dir_separator + "map.json"; + string err_str; + Json map_data = Json::parse(read_text_file(header_filepath), err_str); + map_ids.push_back(map_data["id"]); + if (map_data["id"].string_value().length() > max_length) + max_length = map_data["id"].string_value().length(); + } + + int map_id_num = 0; + for (Json map_id : map_ids) { + text << "#define " << map_id.string_value() << string((max_length - map_id.string_value().length() + 1), ' ') + << "(" << map_id_num++ << " | (" << group_num << " << 8))\n"; + } + text << "\n"; + + group_num++; + } + + text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n"; + text << "#endif // GUARD_CONSTANTS_MAP_GROUPS_H\n"; + + return text.str(); +} + +void process_groups(string groups_filepath) { + string err; + Json groups_data = Json::parse(read_text_file(groups_filepath), err); + + if (groups_data == Json()) + FATAL_ERROR("%s\n", err.c_str()); + + string groups_text = generate_groups_text(groups_data); + string connections_text = generate_connections_text(groups_data); + string headers_text = generate_headers_text(groups_data); + string events_text = generate_events_text(groups_data); + string map_header_text = generate_map_constants_text(groups_filepath, groups_data); + + string file_dir = get_directory_name(groups_filepath); + char s = file_dir.back(); + + write_text_file(file_dir + "groups.inc", groups_text); + write_text_file(file_dir + "connections.inc", connections_text); + write_text_file(file_dir + "headers.inc", headers_text); + write_text_file(file_dir + "events.inc", events_text); + write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "map_groups.h", map_header_text); +} + +string generate_layout_headers_text(Json layouts_data) { + ostringstream text; + + for (auto &layout : layouts_data["layouts"].array_items()) { + string border_label = layout["name"].string_value() + "_Border"; + string blockdata_label = layout["name"].string_value() + "_Blockdata"; + text << border_label << "::\n" + << "\t.incbin \"" << layout["border_filepath"].string_value() << "\"\n\n" + << blockdata_label << "::\n" + << "\t.incbin \"" << layout["blockdata_filepath"].string_value() << "\"\n\n" + << "\t.align 2\n" + << layout["name"].string_value() << "::\n" + << "\t.4byte " << layout["width"].int_value() << "\n" + << "\t.4byte " << layout["height"].int_value() << "\n" + << "\t.4byte " << border_label << "\n" + << "\t.4byte " << blockdata_label << "\n" + << "\t.4byte " << layout["primary_tileset"].string_value() << "\n" + << "\t.4byte " << layout["secondary_tileset"].string_value() << "\n\n"; + } + + return text.str(); +} + +string generate_layouts_table_text(Json layouts_data) { + ostringstream text; + + text << "\t.align 2\n" + << layouts_data["layouts_table_label"].string_value() << "::\n"; + + for (auto &layout : layouts_data["layouts"].array_items()) + text << "\t.4byte " << layout["name"].string_value() << "\n"; + + return text.str(); +} + +string generate_layouts_constants_text(Json layouts_data) { + ostringstream text; + + text << "#ifndef GUARD_CONSTANTS_LAYOUTS_H\n" + << "#define GUARD_CONSTANTS_LAYOUTS_H\n\n"; + + int i = 0; + for (auto &layout : layouts_data["layouts"].array_items()) + text << "#define " << layout["id"].string_value() << " " << ++i << "\n"; + + text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n"; + + return text.str(); +} + +void process_layouts(string layouts_filepath) { + string err; + Json layouts_data = Json::parse(read_text_file(layouts_filepath), err); + + if (layouts_data == Json()) + FATAL_ERROR("%s\n", err.c_str()); + + string layout_headers_text = generate_layout_headers_text(layouts_data); + string layouts_table_text = generate_layouts_table_text(layouts_data); + string layouts_constants_text = generate_layouts_constants_text(layouts_data); + + string file_dir = get_directory_name(layouts_filepath); + char s = file_dir.back(); + + write_text_file(file_dir + "layouts.inc", layout_headers_text); + write_text_file(file_dir + "layouts_table.inc", layouts_table_text); + write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "layouts.h", layouts_constants_text); +} + +int main(int argc, char *argv[]) { + if (argc < 3) + FATAL_ERROR("USAGE: mapjson <mode> <game-version> [options]\n"); + + char *version_arg = argv[2]; + string version(version_arg); + if (version != "emerald" && version != "ruby") + FATAL_ERROR("ERROR: <game-version> must be 'emerald' or 'ruby'.\n"); + + char *mode_arg = argv[1]; + string mode(mode_arg); + if (mode != "layouts" && mode != "map" && mode != "groups") + FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', or 'groups'.\n"); + + if (mode == "map") { + if (argc != 5) + FATAL_ERROR("USAGE: mapjson map <game-version> <map_file> <layouts_file>\n"); + + string filepath(argv[3]); + string layouts_filepath(argv[4]); + + process_map(filepath, layouts_filepath, version); + } + else if (mode == "groups") { + if (argc != 4) + FATAL_ERROR("USAGE: mapjson groups <game-version> <groups_file>\n"); + + string filepath(argv[3]); + + process_groups(filepath); + } + else if (mode == "layouts") { + if (argc != 4) + FATAL_ERROR("USAGE: mapjson layouts <game-version> <layouts_file>\n"); + + string filepath(argv[3]); + + process_layouts(filepath); + } + + return 0; +} diff --git a/tools/mapjson/mapjson.h b/tools/mapjson/mapjson.h new file mode 100644 index 0000000..6e961a2 --- /dev/null +++ b/tools/mapjson/mapjson.h @@ -0,0 +1,31 @@ +// mapjson.h + +#ifndef MAPJSON_H +#define MAPJSON_H + +#include <cstdio> +using std::fprintf; using std::exit; + +#include <cstdlib> + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +#endif // MAPJSON_H diff --git a/tools/mid2agb/.gitignore b/tools/mid2agb/.gitignore new file mode 100644 index 0000000..0e7264c --- /dev/null +++ b/tools/mid2agb/.gitignore @@ -0,0 +1 @@ +mid2agb diff --git a/tools/mid2agb/LICENSE b/tools/mid2agb/LICENSE new file mode 100644 index 0000000..534d153 --- /dev/null +++ b/tools/mid2agb/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile new file mode 100644 index 0000000..77f96db --- /dev/null +++ b/tools/mid2agb/Makefile @@ -0,0 +1,18 @@ +CXX := g++ + +CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror + +SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp + +HEADERS := agb.h error.h main.h midi.h tables.h + +.PHONY: all clean + +all: mid2agb + @: + +mid2agb: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) mid2agb mid2agb.exe diff --git a/tools/mid2agb/agb.cpp b/tools/mid2agb/agb.cpp new file mode 100644 index 0000000..d4d79f1 --- /dev/null +++ b/tools/mid2agb/agb.cpp @@ -0,0 +1,547 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include <cstring> +#include <vector> +#include "agb.h" +#include "main.h" +#include "midi.h" +#include "tables.h" + +int g_agbTrack; + +static std::string s_lastOpName; +static int s_blockNum; +static bool s_keepLastOpName; +static int s_lastNote; +static int s_lastVelocity; +static bool s_noteChanged; +static bool s_velocityChanged; +static bool s_inPattern; +static int s_extendedCommand; +static int s_memaccOp; +static int s_memaccParam1; +static int s_memaccParam2; + +void PrintAgbHeader() +{ + std::fprintf(g_outputFile, "\t.include \"MPlayDef.s\"\n\n"); + std::fprintf(g_outputFile, "\t.equ\t%s_grp, voicegroup%03u\n", g_asmLabel.c_str(), g_voiceGroup); + std::fprintf(g_outputFile, "\t.equ\t%s_pri, %u\n", g_asmLabel.c_str(), g_priority); + + if (g_reverb >= 0) + std::fprintf(g_outputFile, "\t.equ\t%s_rev, reverb_set+%u\n", g_asmLabel.c_str(), g_reverb); + else + std::fprintf(g_outputFile, "\t.equ\t%s_rev, 0\n", g_asmLabel.c_str()); + + std::fprintf(g_outputFile, "\t.equ\t%s_mvl, %u\n", g_asmLabel.c_str(), g_masterVolume); + std::fprintf(g_outputFile, "\t.equ\t%s_key, %u\n", g_asmLabel.c_str(), 0); + std::fprintf(g_outputFile, "\t.equ\t%s_tbs, %u\n", g_asmLabel.c_str(), g_clocksPerBeat); + std::fprintf(g_outputFile, "\t.equ\t%s_exg, %u\n", g_asmLabel.c_str(), g_exactGateTime); + std::fprintf(g_outputFile, "\t.equ\t%s_cmp, %u\n", g_asmLabel.c_str(), g_compressionEnabled); + + std::fprintf(g_outputFile, "\n\t.section .rodata\n"); + std::fprintf(g_outputFile, "\t.global\t%s\n", g_asmLabel.c_str()); + + std::fprintf(g_outputFile, "\t.align\t2\n"); +} + +void ResetTrackVars() +{ + s_lastVelocity = -1; + s_lastNote = -1; + s_velocityChanged = false; + s_noteChanged = false; + s_keepLastOpName = false; + s_lastOpName = ""; + s_inPattern = false; +} + +void PrintWait(int wait) +{ + if (wait > 0) + { + std::fprintf(g_outputFile, "\t.byte\tW%02d\n", wait); + s_velocityChanged = true; + s_noteChanged = true; + s_keepLastOpName = true; + } +} + +void PrintOp(int wait, std::string name, const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t.byte\t\t"); + + if (format != nullptr) + { + if (!g_compressionEnabled || s_lastOpName != name) + { + std::fprintf(g_outputFile, "%s, ", name.c_str()); + s_lastOpName = name; + } + else + { + std::fprintf(g_outputFile, " "); + } + std::vfprintf(g_outputFile, format, args); + } + else + { + std::fputs(name.c_str(), g_outputFile); + s_lastOpName = name; + } + + std::fprintf(g_outputFile, "\n"); + + va_end(args); + + PrintWait(wait); +} + +void PrintByte(const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t.byte\t"); + std::vfprintf(g_outputFile, format, args); + std::fprintf(g_outputFile, "\n"); + s_velocityChanged = true; + s_noteChanged = true; + s_keepLastOpName = true; + va_end(args); +} + +void PrintWord(const char *format, ...) +{ + std::va_list args; + va_start(args, format); + std::fprintf(g_outputFile, "\t .word\t"); + std::vfprintf(g_outputFile, format, args); + std::fprintf(g_outputFile, "\n"); + va_end(args); +} + +void PrintNote(const Event& event) +{ + int note = event.note; + int velocity = g_noteVelocityLUT[event.param1]; + int duration = -1; + + if (event.param2 != -1) + duration = g_noteDurationLUT[event.param2]; + + int gateTimeParam = 0; + + if (g_exactGateTime && duration != -1) + gateTimeParam = event.param2 - duration; + + char gtpBuf[16]; + + if (gateTimeParam > 0) + std::snprintf(gtpBuf, sizeof(gtpBuf), ", gtp%u", gateTimeParam); + else + gtpBuf[0] = 0; + + char opName[16]; + + if (duration == -1) + std::strcpy(opName, "TIE "); + else + std::snprintf(opName, sizeof(opName), "N%02u ", duration); + + bool noteChanged = true; + bool velocityChanged = true; + + if (g_compressionEnabled) + { + noteChanged = (note != s_lastNote); + velocityChanged = (velocity != s_lastVelocity); + } + + if (s_keepLastOpName) + s_keepLastOpName = false; + else + s_lastOpName = ""; + + if (noteChanged || velocityChanged || (gateTimeParam > 0)) + { + s_lastNote = note; + + char noteBuf[16]; + + if (note >= 24) + std::snprintf(noteBuf, sizeof(noteBuf), g_noteTable[note % 12], note / 12 - 2); + else + std::snprintf(noteBuf, sizeof(noteBuf), g_minusNoteTable[note % 12], note / -12 + 2); + + char velocityBuf[16]; + + if (velocityChanged || (gateTimeParam > 0)) + { + s_lastVelocity = velocity; + std::snprintf(velocityBuf, sizeof(velocityBuf), ", v%03u", velocity); + } + else + { + velocityBuf[0] = 0; + } + + PrintOp(event.time, opName, "%s%s%s", noteBuf, velocityBuf, gtpBuf); + } + else + { + PrintOp(event.time, opName, 0); + } + + s_noteChanged = noteChanged; + s_velocityChanged = velocityChanged; +} + +void PrintEndOfTieOp(const Event& event) +{ + int note = event.note; + bool noteChanged = (note != s_lastNote); + + if (!noteChanged || !s_noteChanged) + s_lastOpName = ""; + + if (!noteChanged && g_compressionEnabled) + { + PrintOp(event.time, "EOT ", nullptr); + } + else + { + s_lastNote = note; + if (note >= 24) + PrintOp(event.time, "EOT ", g_noteTable[note % 12], note / 12 - 2); + else + PrintOp(event.time, "EOT ", g_minusNoteTable[note % 12], note / -12 + 2); + } + + s_noteChanged = noteChanged; +} + +void PrintSeqLoopLabel(const Event& event) +{ + s_blockNum = event.param1 + 1; + std::fprintf(g_outputFile, "%s_%u_B%u:\n", g_asmLabel.c_str(), g_agbTrack, s_blockNum); + PrintWait(event.time); + ResetTrackVars(); +} + +void PrintMemAcc(const Event& event) +{ + switch (s_memaccOp) + { + case 0x00: + PrintByte("MEMACC, mem_set, 0x%02X, %u", s_memaccParam1, event.param2); + break; + case 0x01: + PrintByte("MEMACC, mem_add, 0x%02X, %u", s_memaccParam1, event.param2); + break; + case 0x02: + PrintByte("MEMACC, mem_sub, 0x%02X, %u", s_memaccParam1, event.param2); + break; + case 0x03: + PrintByte("MEMACC, mem_mem_set, 0x%02X, 0x%02X", s_memaccParam1, event.param2); + break; + case 0x04: + PrintByte("MEMACC, mem_mem_add, 0x%02X, 0x%02X", s_memaccParam1, event.param2); + break; + case 0x05: + PrintByte("MEMACC, mem_mem_sub, 0x%02X, 0x%02X", s_memaccParam1, event.param2); + break; + // TODO: everything else + case 0x06: + break; + case 0x07: + break; + case 0x08: + break; + case 0x09: + break; + case 0x0A: + break; + case 0x0B: + break; + case 0x0C: + break; + case 0x0D: + break; + case 0x0E: + break; + case 0x0F: + break; + case 0x10: + break; + case 0x11: + break; + case 0x46: + break; + case 0x47: + break; + case 0x48: + break; + case 0x49: + break; + case 0x4A: + break; + case 0x4B: + break; + case 0x4C: + break; + case 0x4D: + break; + case 0x4E: + break; + case 0x4F: + break; + case 0x50: + break; + case 0x51: + break; + default: + break; + } + + PrintWait(event.time); +} + +void PrintExtendedOp(const Event& event) +{ + // TODO: support for other extended commands + + switch (s_extendedCommand) + { + case 0x08: + PrintOp(event.time, "XCMD ", "xIECV , %u", event.param2); + break; + case 0x09: + PrintOp(event.time, "XCMD ", "xIECL , %u", event.param2); + break; + default: + PrintWait(event.time); + break; + } +} + +void PrintControllerOp(const Event& event) +{ + switch (event.param1) + { + case 0x01: + PrintOp(event.time, "MOD ", "%u", event.param2); + break; + case 0x07: + PrintOp(event.time, "VOL ", "%u*%s_mvl/mxv", event.param2, g_asmLabel.c_str()); + break; + case 0x0A: + PrintOp(event.time, "PAN ", "c_v%+d", event.param2 - 64); + break; + case 0x0C: + case 0x10: + PrintMemAcc(event); + break; + case 0x0D: + s_memaccOp = event.param2; + PrintWait(event.time); + break; + case 0x0E: + s_memaccParam1 = event.param2; + PrintWait(event.time); + break; + case 0x0F: + s_memaccParam2 = event.param2; + PrintWait(event.time); + break; + case 0x11: + std::fprintf(g_outputFile, "%s_%u_L%u:\n", g_asmLabel.c_str(), g_agbTrack, event.param2); + PrintWait(event.time); + ResetTrackVars(); + break; + case 0x14: + PrintOp(event.time, "BENDR ", "%u", event.param2); + break; + case 0x15: + PrintOp(event.time, "LFOS ", "%u", event.param2); + break; + case 0x16: + PrintOp(event.time, "MODT ", "%u", event.param2); + break; + case 0x18: + PrintOp(event.time, "TUNE ", "c_v%+d", event.param2 - 64); + break; + case 0x1A: + PrintOp(event.time, "LFODL ", "%u", event.param2); + break; + case 0x1D: + case 0x1F: + PrintExtendedOp(event); + break; + case 0x1E: + s_extendedCommand = event.param2; + // TODO: loop op + break; + case 0x21: + case 0x27: + PrintByte("PRIO , %u", event.param2); + PrintWait(event.time); + break; + default: + PrintWait(event.time); + break; + } +} + +void PrintAgbTrack(std::vector<Event>& events) +{ + std::fprintf(g_outputFile, "\n@**************** Track %u (Midi-Chn.%u) ****************@\n\n", g_agbTrack, g_midiChan + 1); + std::fprintf(g_outputFile, "%s_%u:\n", g_asmLabel.c_str(), g_agbTrack); + + int wholeNoteCount = 0; + int loopEndBlockNum = 0; + + ResetTrackVars(); + + bool foundVolBeforeNote = false; + + for (const Event& event : events) + { + if (event.type == EventType::Note) + break; + + if (event.type == EventType::Controller && event.param1 == 0x07) + { + foundVolBeforeNote = true; + break; + } + } + + if (!foundVolBeforeNote) + PrintByte("\tVOL , 127*%s_mvl/mxv", g_asmLabel.c_str()); + + PrintWait(g_initialWait); + PrintByte("KEYSH , %s_key%+d", g_asmLabel.c_str(), 0); + + for (unsigned i = 0; events[i].type != EventType::EndOfTrack; i++) + { + const Event& event = events[i]; + + if (IsPatternBoundary(event.type)) + { + if (s_inPattern) + PrintByte("PEND"); + s_inPattern = false; + } + + if (event.type == EventType::WholeNoteMark || event.type == EventType::Pattern) + std::fprintf(g_outputFile, "@ %03d ----------------------------------------\n", wholeNoteCount++); + + switch (event.type) + { + case EventType::Note: + PrintNote(event); + break; + case EventType::EndOfTie: + PrintEndOfTieOp(event); + break; + case EventType::Label: + PrintSeqLoopLabel(event); + break; + case EventType::LoopEnd: + PrintByte("GOTO"); + PrintWord("%s_%u_B%u", g_asmLabel.c_str(), g_agbTrack, loopEndBlockNum); + PrintSeqLoopLabel(event); + break; + case EventType::LoopEndBegin: + PrintByte("GOTO"); + PrintWord("%s_%u_B%u", g_asmLabel.c_str(), g_agbTrack, loopEndBlockNum); + PrintSeqLoopLabel(event); + loopEndBlockNum = s_blockNum; + break; + case EventType::LoopBegin: + PrintSeqLoopLabel(event); + loopEndBlockNum = s_blockNum; + break; + case EventType::WholeNoteMark: + if (event.param2 & 0x80000000) + { + std::fprintf(g_outputFile, "%s_%u_%03lu:\n", g_asmLabel.c_str(), g_agbTrack, (unsigned long)(event.param2 & 0x7FFFFFFF)); + ResetTrackVars(); + s_inPattern = true; + } + PrintWait(event.time); + break; + case EventType::Pattern: + PrintByte("PATT"); + PrintWord("%s_%u_%03lu", g_asmLabel.c_str(), g_agbTrack, event.param2); + + while (!IsPatternBoundary(events[i + 1].type)) + i++; + + ResetTrackVars(); + break; + case EventType::Tempo: + PrintByte("TEMPO , %u*%s_tbs/2", 60000000 / event.param2, g_asmLabel.c_str()); + PrintWait(event.time); + break; + case EventType::InstrumentChange: + PrintOp(event.time, "VOICE ", "%u", event.param1); + break; + case EventType::PitchBend: + PrintOp(event.time, "BEND ", "c_v%+d", event.param2 - 64); + break; + case EventType::Controller: + PrintControllerOp(event); + break; + default: + PrintWait(event.time); + break; + } + } + + PrintByte("FINE"); +} + +void PrintAgbFooter() +{ + int trackCount = g_agbTrack - 1; + + std::fprintf(g_outputFile, "\n@******************************************************@\n"); + std::fprintf(g_outputFile, "\t.align\t2\n"); + std::fprintf(g_outputFile, "\n%s:\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\t.byte\t%u\t@ NumTrks\n", trackCount); + std::fprintf(g_outputFile, "\t.byte\t%u\t@ NumBlks\n", 0); + std::fprintf(g_outputFile, "\t.byte\t%s_pri\t@ Priority\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\t.byte\t%s_rev\t@ Reverb.\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\n"); + std::fprintf(g_outputFile, "\t.word\t%s_grp\n", g_asmLabel.c_str()); + std::fprintf(g_outputFile, "\n"); + + // track pointers + for (int i = 1; i <= trackCount; i++) + std::fprintf(g_outputFile, "\t.word\t%s_%u\n", g_asmLabel.c_str(), i); + + std::fprintf(g_outputFile, "\n\t.end\n"); +} diff --git a/tools/mid2agb/agb.h b/tools/mid2agb/agb.h new file mode 100644 index 0000000..7eab3c1 --- /dev/null +++ b/tools/mid2agb/agb.h @@ -0,0 +1,33 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef AGB_H +#define AGB_H + +#include <vector> +#include "midi.h" + +void PrintAgbHeader(); +void PrintAgbTrack(std::vector<Event>& events); +void PrintAgbFooter(); + +extern int g_agbTrack; + +#endif // AGB_H diff --git a/tools/mid2agb/error.cpp b/tools/mid2agb/error.cpp new file mode 100644 index 0000000..13e38ff --- /dev/null +++ b/tools/mid2agb/error.cpp @@ -0,0 +1,36 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdlib> +#include <cstdarg> + +// Reports an error diagnostic and terminates the program. +[[noreturn]] void RaiseError(const char* format, ...) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + std::va_list args; + va_start(args, format); + std::vsnprintf(buffer, bufferSize, format, args); + std::fprintf(stderr, "error: %s\n", buffer); + va_end(args); + std::exit(1); +} diff --git a/tools/mid2agb/error.h b/tools/mid2agb/error.h new file mode 100644 index 0000000..da4f011 --- /dev/null +++ b/tools/mid2agb/error.h @@ -0,0 +1,26 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef ERROR_H +#define ERROR_H + +[[noreturn]] void RaiseError(const char* format, ...); + +#endif // ERROR_H diff --git a/tools/mid2agb/main.cpp b/tools/mid2agb/main.cpp new file mode 100644 index 0000000..ea2b294 --- /dev/null +++ b/tools/mid2agb/main.cpp @@ -0,0 +1,233 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdlib> +#include <cstring> +#include <cctype> +#include <cassert> +#include <string> +#include <set> +#include "main.h" +#include "error.h" +#include "midi.h" +#include "agb.h" + +FILE* g_inputFile = nullptr; +FILE* g_outputFile = nullptr; + +std::string g_asmLabel; +int g_masterVolume = 127; +int g_voiceGroup = 0; +int g_priority = 0; +int g_reverb = -1; +int g_clocksPerBeat = 1; +bool g_exactGateTime = false; +bool g_compressionEnabled = true; + +[[noreturn]] static void PrintUsage() +{ + std::printf( + "Usage: MID2AGB name [options]\n" + "\n" + " input_file filename(.mid) of MIDI file\n" + " output_file filename(.s) for AGB file (default:input_file)\n" + "\n" + "options -L??? label for assembler (default:output_file)\n" + " -V??? master volume (default:127)\n" + " -G??? voice group number (default:0)\n" + " -P??? priority (default:0)\n" + " -R??? reverb (default:off)\n" + " -X 48 clocks/beat (default:24 clocks/beat)\n" + " -E exact gate-time\n" + " -N no compression\n" + ); + std::exit(1); +} + +static std::string StripExtension(std::string s) +{ + std::size_t pos = s.find_last_of('.'); + + if (pos > 0 && pos != std::string::npos) + { + s = s.substr(0, pos); + } + + return s; +} + +static std::string GetExtension(std::string s) +{ + std::size_t pos = s.find_last_of('.'); + + if (pos > 0 && pos != std::string::npos) + { + return s.substr(pos + 1); + } + + return ""; +} + +static std::string BaseName(std::string s) +{ + std::size_t posAfterSlash = s.find_last_of("/\\"); + + if (posAfterSlash == std::string::npos) + posAfterSlash = 0; + else + posAfterSlash++; + + std::size_t dotPos = s.find_first_of('.', posAfterSlash); + if (dotPos > posAfterSlash && dotPos != std::string::npos) + s = s.substr(posAfterSlash, dotPos - posAfterSlash); + + return s; +} + +static const char *GetArgument(int argc, char **argv, int& index) +{ + assert(index >= 0 && index < argc); + + const char *option = argv[index]; + + assert(option != nullptr); + assert(option[0] == '-'); + + // If there is text following the letter, return that. + if (std::strlen(option) >= 3) + return option + 2; + + // Otherwise, try to get the next arg. + if (index + 1 < argc) + { + index++; + return argv[index]; + } + else + { + return nullptr; + } +} + +int main(int argc, char** argv) +{ + std::string inputFilename; + std::string outputFilename; + + for (int i = 1; i < argc; i++) + { + const char *option = argv[i]; + + if (option[0] == '-' && option[1] != '\0') + { + const char *arg; + + switch (std::toupper(option[1])) + { + case 'E': + g_exactGateTime = true; + break; + case 'G': + arg = GetArgument(argc, argv, i); + if (arg == nullptr) + PrintUsage(); + g_voiceGroup = std::stoi(arg); + break; + case 'L': + arg = GetArgument(argc, argv, i); + if (arg == nullptr) + PrintUsage(); + g_asmLabel = arg; + break; + case 'N': + g_compressionEnabled = false; + break; + case 'P': + arg = GetArgument(argc, argv, i); + if (arg == nullptr) + PrintUsage(); + g_priority = std::stoi(arg); + break; + case 'R': + arg = GetArgument(argc, argv, i); + if (arg == nullptr) + PrintUsage(); + g_reverb = std::stoi(arg); + break; + case 'V': + arg = GetArgument(argc, argv, i); + if (arg == nullptr) + PrintUsage(); + g_masterVolume = std::stoi(arg); + break; + case 'X': + g_clocksPerBeat = 2; + break; + default: + PrintUsage(); + } + } + else + { + if (inputFilename.empty()) + inputFilename = argv[i]; + else if (outputFilename.empty()) + outputFilename = argv[i]; + else + PrintUsage(); + } + } + + if (inputFilename.empty()) + PrintUsage(); + + if (GetExtension(inputFilename) != "mid") + RaiseError("input filename extension is not \"mid\""); + + if (outputFilename.empty()) + outputFilename = StripExtension(inputFilename) + ".s"; + + if (GetExtension(outputFilename) != "s") + RaiseError("output filename extension is not \"s\""); + + if (g_asmLabel.empty()) + g_asmLabel = BaseName(outputFilename); + + g_inputFile = std::fopen(inputFilename.c_str(), "rb"); + + if (g_inputFile == nullptr) + RaiseError("failed to open \"%s\" for reading", inputFilename.c_str()); + + g_outputFile = std::fopen(outputFilename.c_str(), "w"); + + if (g_outputFile == nullptr) + RaiseError("failed to open \"%s\" for writing", outputFilename.c_str()); + + ReadMidiFileHeader(); + PrintAgbHeader(); + ReadMidiTracks(); + PrintAgbFooter(); + + std::fclose(g_inputFile); + std::fclose(g_outputFile); + + return 0; +} diff --git a/tools/mid2agb/main.h b/tools/mid2agb/main.h new file mode 100644 index 0000000..6e71e73 --- /dev/null +++ b/tools/mid2agb/main.h @@ -0,0 +1,39 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef MAIN_H +#define MAIN_H + +#include <cstdio> +#include <string> + +extern FILE* g_inputFile; +extern FILE* g_outputFile; + +extern std::string g_asmLabel; +extern int g_masterVolume; +extern int g_voiceGroup; +extern int g_priority; +extern int g_reverb; +extern int g_clocksPerBeat; +extern bool g_exactGateTime; +extern bool g_compressionEnabled; + +#endif // MAIN_H diff --git a/tools/mid2agb/midi.cpp b/tools/mid2agb/midi.cpp new file mode 100644 index 0000000..fa7d9ce --- /dev/null +++ b/tools/mid2agb/midi.cpp @@ -0,0 +1,964 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cassert> +#include <string> +#include <vector> +#include <algorithm> +#include <memory> +#include "midi.h" +#include "main.h" +#include "error.h" +#include "agb.h" +#include "tables.h" + +enum class MidiEventCategory +{ + Control, + SysEx, + Meta, + Invalid, +}; + +MidiFormat g_midiFormat; +std::int_fast32_t g_midiTrackCount; +std::int16_t g_midiTimeDiv; + +int g_midiChan; +std::int32_t g_initialWait; + +static long s_trackDataStart; +static std::vector<Event> s_seqEvents; +static std::vector<Event> s_trackEvents; +static std::int32_t s_absoluteTime; +static int s_blockCount = 0; +static int s_minNote; +static int s_maxNote; +static int s_runningStatus; + +void Seek(long offset) +{ + if (std::fseek(g_inputFile, offset, SEEK_SET) != 0) + RaiseError("failed to seek to %l", offset); +} + +void Skip(long offset) +{ + if (std::fseek(g_inputFile, offset, SEEK_CUR) != 0) + RaiseError("failed to skip %l bytes", offset); +} + +std::string ReadSignature() +{ + char signature[4]; + + if (std::fread(signature, 4, 1, g_inputFile) != 1) + RaiseError("failed to read signature"); + + return std::string(signature, 4); +} + +std::uint32_t ReadInt8() +{ + int c = std::fgetc(g_inputFile); + + if (c < 0) + RaiseError("unexpected EOF"); + + return c; +} + +std::uint32_t ReadInt16() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadInt24() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 16; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadInt32() +{ + std::uint32_t val = 0; + val |= ReadInt8() << 24; + val |= ReadInt8() << 16; + val |= ReadInt8() << 8; + val |= ReadInt8(); + return val; +} + +std::uint32_t ReadVLQ() +{ + std::uint32_t val = 0; + std::uint32_t c; + + do + { + c = ReadInt8(); + val <<= 7; + val |= (c & 0x7F); + } while (c & 0x80); + + return val; +} + +void ReadMidiFileHeader() +{ + Seek(0); + + if (ReadSignature() != "MThd") + RaiseError("MIDI file header signature didn't match \"MThd\""); + + std::uint32_t headerLength = ReadInt32(); + + if (headerLength != 6) + RaiseError("MIDI file header length isn't 6"); + + std::uint16_t midiFormat = ReadInt16(); + + if (midiFormat >= 2) + RaiseError("unsupported MIDI format (%u)", midiFormat); + + g_midiFormat = (MidiFormat)midiFormat; + g_midiTrackCount = ReadInt16(); + g_midiTimeDiv = ReadInt16(); + + if (g_midiTimeDiv < 0) + RaiseError("unsupported MIDI time division (%d)", g_midiTimeDiv); +} + +long ReadMidiTrackHeader(long offset) +{ + Seek(offset); + + if (ReadSignature() != "MTrk") + RaiseError("MIDI track header signature didn't match \"MTrk\""); + + long size = ReadInt32(); + + s_trackDataStart = std::ftell(g_inputFile); + + return size + 8; +} + +void StartTrack() +{ + Seek(s_trackDataStart); + s_absoluteTime = 0; + s_runningStatus = 0; +} + +void SkipEventData() +{ + Skip(ReadVLQ()); +} + +void DetermineEventCategory(MidiEventCategory& category, int& typeChan, int& size) +{ + typeChan = ReadInt8(); + + if (typeChan < 0x80) + { + // If data byte was found, use the running status. + ungetc(typeChan, g_inputFile); + typeChan = s_runningStatus; + } + + if (typeChan == 0xFF) + { + category = MidiEventCategory::Meta; + size = 0; + s_runningStatus = 0; + } + else if (typeChan >= 0xF0) + { + category = MidiEventCategory::SysEx; + size = 0; + s_runningStatus = 0; + } + else if (typeChan >= 0x80) + { + category = MidiEventCategory::Control; + + switch (typeChan >> 4) + { + case 0xC: + case 0xD: + size = 1; + break; + default: + size = 2; + break; + } + s_runningStatus = typeChan; + } + else + { + category = MidiEventCategory::Invalid; + } +} + +void MakeBlockEvent(Event& event, EventType type) +{ + event.type = type; + event.param1 = s_blockCount++; + event.param2 = 0; +} + +std::string ReadEventText() +{ + char buffer[2]; + std::uint32_t length = ReadVLQ(); + + if (length <= 2) + { + if (fread(buffer, length, 1, g_inputFile) != 1) + RaiseError("failed to read event text"); + } + else + { + Skip(length); + length = 0; + } + + return std::string(buffer, length); +} + +bool ReadSeqEvent(Event& event) +{ + s_absoluteTime += ReadVLQ(); + event.time = s_absoluteTime; + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + Skip(size); + return false; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Invalid) + RaiseError("invalid event"); + + // meta event + int metaEventType = ReadInt8(); + + if (metaEventType >= 1 && metaEventType <= 7) + { + // text event + std::string text = ReadEventText(); + + if (text == "[") + MakeBlockEvent(event, EventType::LoopBegin); + else if (text == "][") + MakeBlockEvent(event, EventType::LoopEndBegin); + else if (text == "]") + MakeBlockEvent(event, EventType::LoopEnd); + else if (text == ":") + MakeBlockEvent(event, EventType::Label); + else + return false; + } + else + { + switch (metaEventType) + { + case 0x2F: // end of track + SkipEventData(); + event.type = EventType::EndOfTrack; + event.param1 = 0; + event.param2 = 0; + break; + case 0x51: // tempo + if (ReadVLQ() != 3) + RaiseError("invalid tempo size"); + + event.type = EventType::Tempo; + event.param1 = 0; + event.param2 = ReadInt24(); + break; + case 0x58: // time signature + { + if (ReadVLQ() != 4) + RaiseError("invalid time signature size"); + + int numerator = ReadInt8(); + int denominatorExponent = ReadInt8(); + + if (denominatorExponent >= 16) + RaiseError("invalid time signature denominator"); + + Skip(2); // ignore other values + + int clockTicks = 96 * numerator * g_clocksPerBeat; + int denominator = 1 << denominatorExponent; + int timeSig = clockTicks / denominator; + + if (timeSig <= 0 || timeSig >= 0x10000) + RaiseError("invalid time signature"); + + event.type = EventType::TimeSignature; + event.param1 = 0; + event.param2 = timeSig; + break; + } + default: + SkipEventData(); + return false; + } + } + + return true; +} + +void ReadSeqEvents() +{ + StartTrack(); + + for (;;) + { + Event event = {}; + + if (ReadSeqEvent(event)) + { + s_seqEvents.push_back(event); + + if (event.type == EventType::EndOfTrack) + return; + } + } +} + +bool CheckNoteEnd(Event& event) +{ + event.param2 += ReadVLQ(); + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + int chan = typeChan & 0xF; + + if (chan != g_midiChan) + { + Skip(size); + return false; + } + + switch (typeChan & 0xF0) + { + case 0x80: // note off + { + int note = ReadInt8(); + ReadInt8(); // ignore velocity + if (note == event.note) + return true; + break; + } + case 0x90: // note on + { + int note = ReadInt8(); + int velocity = ReadInt8(); + if (velocity == 0 && note == event.note) + return true; + break; + } + default: + Skip(size); + break; + } + + return false; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Meta) + { + int metaEventType = ReadInt8(); + SkipEventData(); + + if (metaEventType == 0x2F) + RaiseError("note doesn't end"); + + return false; + } + + RaiseError("invalid event"); +} + +void FindNoteEnd(Event& event) +{ + // Save the current file position and running status + // which get modified by CheckNoteEnd. + long startPos = ftell(g_inputFile); + int savedRunningStatus = s_runningStatus; + + event.param2 = 0; + + while (!CheckNoteEnd(event)) + ; + + Seek(startPos); + s_runningStatus = savedRunningStatus; +} + +bool ReadTrackEvent(Event& event) +{ + s_absoluteTime += ReadVLQ(); + event.time = s_absoluteTime; + + MidiEventCategory category; + int typeChan; + int size; + + DetermineEventCategory(category, typeChan, size); + + if (category == MidiEventCategory::Control) + { + int chan = typeChan & 0xF; + + if (chan != g_midiChan) + { + Skip(size); + return false; + } + + switch (typeChan & 0xF0) + { + case 0x90: // note on + { + int note = ReadInt8(); + int velocity = ReadInt8(); + + if (velocity != 0) + { + event.type = EventType::Note; + event.note = note; + event.param1 = velocity; + FindNoteEnd(event); + if (event.param2 > 0) + { + if (note < s_minNote) + s_minNote = note; + if (note > s_maxNote) + s_maxNote = note; + } + } + break; + } + case 0xB0: // controller event + event.type = EventType::Controller; + event.param1 = ReadInt8(); // controller index + event.param2 = ReadInt8(); // value + break; + case 0xC0: // instrument change + event.type = EventType::InstrumentChange; + event.param1 = ReadInt8(); // instrument + event.param2 = 0; + break; + case 0xE0: // pitch bend + event.type = EventType::PitchBend; + event.param1 = ReadInt8(); + event.param2 = ReadInt8(); + break; + default: + Skip(size); + return false; + } + + return true; + } + + if (category == MidiEventCategory::SysEx) + { + SkipEventData(); + return false; + } + + if (category == MidiEventCategory::Meta) + { + int metaEventType = ReadInt8(); + SkipEventData(); + + if (metaEventType == 0x2F) + { + event.type = EventType::EndOfTrack; + event.param1 = 0; + event.param2 = 0; + return true; + } + + return false; + } + + RaiseError("invalid event"); +} + +void ReadTrackEvents() +{ + StartTrack(); + + s_trackEvents.clear(); + + s_minNote = 0xFF; + s_maxNote = 0; + + for (;;) + { + Event event = {}; + + if (ReadTrackEvent(event)) + { + s_trackEvents.push_back(event); + + if (event.type == EventType::EndOfTrack) + return; + } + } +} + +bool EventCompare(const Event& event1, const Event& event2) +{ + if (event1.time < event2.time) + return true; + + if (event1.time > event2.time) + return false; + + unsigned event1Type = (unsigned)event1.type; + unsigned event2Type = (unsigned)event2.type; + + if (event1.type == EventType::Note) + event1Type += event1.note; + + if (event2.type == EventType::Note) + event2Type += event2.note; + + if (event1Type < event2Type) + return true; + + if (event1Type > event2Type) + return false; + + if (event1.type == EventType::EndOfTie) + { + if (event1.note < event2.note) + return true; + + if (event1.note > event2.note) + return false; + } + + return false; +} + +std::unique_ptr<std::vector<Event>> MergeEvents() +{ + std::unique_ptr<std::vector<Event>> events(new std::vector<Event>()); + + unsigned trackEventPos = 0; + unsigned seqEventPos = 0; + + while (s_trackEvents[trackEventPos].type != EventType::EndOfTrack + && s_seqEvents[seqEventPos].type != EventType::EndOfTrack) + { + if (EventCompare(s_trackEvents[trackEventPos], s_seqEvents[seqEventPos])) + events->push_back(s_trackEvents[trackEventPos++]); + else + events->push_back(s_seqEvents[seqEventPos++]); + } + + while (s_trackEvents[trackEventPos].type != EventType::EndOfTrack) + events->push_back(s_trackEvents[trackEventPos++]); + + while (s_seqEvents[seqEventPos].type != EventType::EndOfTrack) + events->push_back(s_seqEvents[seqEventPos++]); + + // Push the EndOfTrack event with the larger time. + if (EventCompare(s_trackEvents[trackEventPos], s_seqEvents[seqEventPos])) + events->push_back(s_seqEvents[seqEventPos]); + else + events->push_back(s_trackEvents[trackEventPos]); + + return events; +} + +void ConvertTimes(std::vector<Event>& events) +{ + for (Event& event : events) + { + event.time = (24 * g_clocksPerBeat * event.time) / g_midiTimeDiv; + + if (event.type == EventType::Note) + { + event.param1 = g_noteVelocityLUT[event.param1]; + + std::uint32_t duration = (24 * g_clocksPerBeat * event.param2) / g_midiTimeDiv; + + if (duration == 0) + duration = 1; + + if (!g_exactGateTime && duration < 96) + duration = g_noteDurationLUT[duration]; + + event.param2 = duration; + } + } +} + +std::unique_ptr<std::vector<Event>> InsertTimingEvents(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + Event timingEvent = {}; + timingEvent.time = 0; + timingEvent.type = EventType::TimeSignature; + timingEvent.param2 = 96 * g_clocksPerBeat; + + for (const Event& event : inEvents) + { + while (EventCompare(timingEvent, event)) + { + outEvents->push_back(timingEvent); + timingEvent.time += timingEvent.param2; + } + + if (event.type == EventType::TimeSignature) + { + if (g_agbTrack == 1 && event.param2 != timingEvent.param2) + { + Event originalTimingEvent = event; + originalTimingEvent.type = EventType::OriginalTimeSignature; + outEvents->push_back(originalTimingEvent); + } + timingEvent.param2 = event.param2; + timingEvent.time = event.time + timingEvent.param2; + } + + outEvents->push_back(event); + } + + return outEvents; +} + +std::unique_ptr<std::vector<Event>> SplitTime(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + std::int32_t time = 0; + + for (const Event& event : inEvents) + { + std::int32_t diff = event.time - time; + + if (diff > 96) + { + int wholeNoteCount = (diff - 1) / 96; + diff -= 96 * wholeNoteCount; + + for (int i = 0; i < wholeNoteCount; i++) + { + time += 96; + Event timeSplitEvent = {}; + timeSplitEvent.time = time; + timeSplitEvent.type = EventType::TimeSplit; + outEvents->push_back(timeSplitEvent); + } + } + + std::int32_t lutValue = g_noteDurationLUT[diff]; + + if (lutValue != diff) + { + Event timeSplitEvent = {}; + timeSplitEvent.time = time + lutValue; + timeSplitEvent.type = EventType::TimeSplit; + outEvents->push_back(timeSplitEvent); + } + + time = event.time; + + outEvents->push_back(event); + } + + return outEvents; +} + +std::unique_ptr<std::vector<Event>> CreateTies(std::vector<Event>& inEvents) +{ + std::unique_ptr<std::vector<Event>> outEvents(new std::vector<Event>()); + + for (const Event& event : inEvents) + { + if (event.type == EventType::Note && event.param2 > 96) + { + Event tieEvent = event; + tieEvent.param2 = -1; + outEvents->push_back(tieEvent); + + Event eotEvent = {}; + eotEvent.time = event.time + event.param2; + eotEvent.type = EventType::EndOfTie; + eotEvent.note = event.note; + outEvents->push_back(eotEvent); + } + else + { + outEvents->push_back(event); + } + } + + return outEvents; +} + +void CalculateWaits(std::vector<Event>& events) +{ + g_initialWait = events[0].time; + int wholeNoteCount = 0; + + for (unsigned i = 0; i < events.size() && events[i].type != EventType::EndOfTrack; i++) + { + events[i].time = events[i + 1].time - events[i].time; + + if (events[i].type == EventType::TimeSignature) + { + events[i].type = EventType::WholeNoteMark; + events[i].param2 = wholeNoteCount++; + } + } +} + +int CalculateCompressionScore(std::vector<Event>& events, int index) +{ + int score = 0; + std::uint8_t lastParam1 = events[index].param1; + std::uint8_t lastVelocity = 0x80u; + EventType lastType = events[index].type; + std::int32_t lastDuration = 0x80000000; + std::uint8_t lastNote = 0x40u; + + if (events[index].time > 0) + score++; + + for (int i = index + 1; !IsPatternBoundary(events[i].type); i++) + { + if (events[i].type == EventType::Note) + { + int val = 0; + + if (events[i].note != lastNote) + { + val++; + lastNote = events[i].note; + } + + if (events[i].param1 != lastVelocity) + { + val++; + lastVelocity = events[i].param1; + } + + std::int32_t duration = events[i].param2; + + if (g_noteDurationLUT[duration] != lastDuration) + { + val++; + lastDuration = g_noteDurationLUT[duration]; + } + + if (duration != lastDuration) + val++; + + if (val == 0) + val = 1; + + score += val; + } + else + { + lastDuration = 0x80000000; + + if (events[i].type == lastType) + { + if ((lastType != EventType::Controller && (int)lastType != 0x25 && lastType != EventType::EndOfTie) || events[i].param1 == lastParam1) + { + score++; + } + else + { + score += 2; + } + } + else + { + score += 2; + } + } + + lastParam1 = events[i].param1; + lastType = events[i].type; + + if (events[i].time) + score++; + } + + return score; +} + +bool IsCompressionMatch(std::vector<Event>& events, int index1, int index2) +{ + if (events[index1].type != events[index2].type || + events[index1].note != events[index2].note || + events[index1].param1 != events[index2].param1 || + events[index1].time != events[index2].time) + return false; + + index1++; + index2++; + + do + { + if (events[index1] != events[index2]) + return false; + + index1++; + index2++; + } while (!IsPatternBoundary(events[index1].type)); + + return IsPatternBoundary(events[index2].type); +} + +void CompressWholeNote(std::vector<Event>& events, int index) +{ + for (int j = index + 1; events[j].type != EventType::EndOfTrack; j++) + { + while (events[j].type != EventType::WholeNoteMark) + { + j++; + + if (events[j].type == EventType::EndOfTrack) + return; + } + + if (IsCompressionMatch(events, index, j)) + { + events[j].type = EventType::Pattern; + events[j].param2 = events[index].param2 & 0x7FFFFFFF; + events[index].param2 |= 0x80000000; + } + } +} + +void Compress(std::vector<Event>& events) +{ + for (int i = 0; events[i].type != EventType::EndOfTrack; i++) + { + while (events[i].type != EventType::WholeNoteMark) + { + i++; + + if (events[i].type == EventType::EndOfTrack) + return; + } + + if (CalculateCompressionScore(events, i) >= 6) + { + CompressWholeNote(events, i); + } + } +} + +void ReadMidiTracks() +{ + long trackHeaderStart = 14; + + ReadMidiTrackHeader(trackHeaderStart); + ReadSeqEvents(); + + g_agbTrack = 1; + + for (int midiTrack = 0; midiTrack < g_midiTrackCount; midiTrack++) + { + trackHeaderStart += ReadMidiTrackHeader(trackHeaderStart); + + for (g_midiChan = 0; g_midiChan < 16; g_midiChan++) + { + ReadTrackEvents(); + + if (s_minNote != 0xFF) + { +#ifdef DEBUG + printf("Track%d = Midi-Ch.%d\n", g_agbTrack, g_midiChan + 1); +#endif + + std::unique_ptr<std::vector<Event>> events(MergeEvents()); + + // We don't need TEMPO in anything but track 1. + if (g_agbTrack == 1) + { + auto it = std::remove_if(s_seqEvents.begin(), s_seqEvents.end(), [](const Event& event) { return event.type == EventType::Tempo; }); + s_seqEvents.erase(it, s_seqEvents.end()); + } + + ConvertTimes(*events); + events = InsertTimingEvents(*events); + events = CreateTies(*events); + std::stable_sort(events->begin(), events->end(), EventCompare); + events = SplitTime(*events); + CalculateWaits(*events); + + if (g_compressionEnabled) + Compress(*events); + + PrintAgbTrack(*events); + + g_agbTrack++; + } + } + } +} diff --git a/tools/mid2agb/midi.h b/tools/mid2agb/midi.h new file mode 100644 index 0000000..434c8e8 --- /dev/null +++ b/tools/mid2agb/midi.h @@ -0,0 +1,87 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef MIDI_H +#define MIDI_H + +#include <cstdint> + +enum class MidiFormat +{ + SingleTrack, + MultiTrack +}; + +enum class EventType +{ + EndOfTie = 0x01, + Label = 0x11, + LoopEnd = 0x12, + LoopEndBegin = 0x13, + LoopBegin = 0x14, + OriginalTimeSignature = 0x15, + WholeNoteMark = 0x16, + Pattern = 0x17, + TimeSignature = 0x18, + Tempo = 0x19, + InstrumentChange = 0x21, + Controller = 0x22, + PitchBend = 0x23, + KeyShift = 0x31, + Note = 0x40, + TimeSplit = 0xFE, + EndOfTrack = 0xFF, +}; + +struct Event +{ + std::int32_t time; + EventType type; + std::uint8_t note; + std::uint8_t param1; + std::int32_t param2; + + bool operator==(const Event& other) + { + return (time == other.time + && type == other.type + && note == other.note + && param1 == other.param1 + && param2 == other.param2); + } + + bool operator!=(const Event& other) + { + return !(*this == other); + } +}; + +void ReadMidiFileHeader(); +void ReadMidiTracks(); + +extern int g_midiChan; +extern std::int32_t g_initialWait; + +inline bool IsPatternBoundary(EventType type) +{ + return type == EventType::EndOfTrack || (int)type <= 0x17; +} + +#endif // MIDI_H diff --git a/tools/mid2agb/tables.cpp b/tools/mid2agb/tables.cpp new file mode 100644 index 0000000..f254664 --- /dev/null +++ b/tools/mid2agb/tables.cpp @@ -0,0 +1,286 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "tables.h" + +const int g_noteDurationLUT[] = +{ + 0, // 0 + 1, // 1 + 2, // 2 + 3, // 3 + 4, // 4 + 5, // 5 + 6, // 6 + 7, // 7 + 8, // 8 + 9, // 9 + 10, // 10 + 11, // 11 + 12, // 12 + 13, // 13 + 14, // 14 + 15, // 15 + 16, // 16 + 17, // 17 + 18, // 18 + 19, // 19 + 20, // 20 + 21, // 21 + 22, // 22 + 23, // 23 + 24, // 24 + 24, // 25 + 24, // 26 + 24, // 27 + 28, // 28 + 28, // 29 + 30, // 30 + 30, // 31 + 32, // 32 + 32, // 33 + 32, // 34 + 32, // 35 + 36, // 36 + 36, // 37 + 36, // 38 + 36, // 39 + 40, // 40 + 40, // 41 + 42, // 42 + 42, // 43 + 44, // 44 + 44, // 45 + 44, // 46 + 44, // 47 + 48, // 48 + 48, // 49 + 48, // 50 + 48, // 51 + 52, // 52 + 52, // 53 + 54, // 54 + 54, // 55 + 56, // 56 + 56, // 57 + 56, // 58 + 56, // 59 + 60, // 60 + 60, // 61 + 60, // 62 + 60, // 63 + 64, // 64 + 64, // 65 + 66, // 66 + 66, // 67 + 68, // 68 + 68, // 69 + 68, // 70 + 68, // 71 + 72, // 72 + 72, // 73 + 72, // 74 + 72, // 75 + 76, // 76 + 76, // 77 + 78, // 78 + 78, // 79 + 80, // 80 + 80, // 81 + 80, // 82 + 80, // 83 + 84, // 84 + 84, // 85 + 84, // 86 + 84, // 87 + 88, // 88 + 88, // 89 + 90, // 90 + 90, // 91 + 92, // 92 + 92, // 93 + 92, // 94 + 92, // 95 + 96, // 96 +}; + +const int g_noteVelocityLUT[] = +{ + 0, // 0 + 4, // 1 + 4, // 2 + 4, // 3 + 4, // 4 + 8, // 5 + 8, // 6 + 8, // 7 + 8, // 8 + 12, // 9 + 12, // 10 + 12, // 11 + 12, // 12 + 16, // 13 + 16, // 14 + 16, // 15 + 16, // 16 + 20, // 17 + 20, // 18 + 20, // 19 + 20, // 20 + 24, // 21 + 24, // 22 + 24, // 23 + 24, // 24 + 28, // 25 + 28, // 26 + 28, // 27 + 28, // 28 + 32, // 29 + 32, // 30 + 32, // 31 + 32, // 32 + 36, // 33 + 36, // 34 + 36, // 35 + 36, // 36 + 40, // 37 + 40, // 38 + 40, // 39 + 40, // 40 + 44, // 41 + 44, // 42 + 44, // 43 + 44, // 44 + 48, // 45 + 48, // 46 + 48, // 47 + 48, // 48 + 52, // 49 + 52, // 50 + 52, // 51 + 52, // 52 + 56, // 53 + 56, // 54 + 56, // 55 + 56, // 56 + 60, // 57 + 60, // 58 + 60, // 59 + 60, // 60 + 64, // 61 + 64, // 62 + 64, // 63 + 64, // 64 + 68, // 65 + 68, // 66 + 68, // 67 + 68, // 68 + 72, // 69 + 72, // 70 + 72, // 71 + 72, // 72 + 76, // 73 + 76, // 74 + 76, // 75 + 76, // 76 + 80, // 77 + 80, // 78 + 80, // 79 + 80, // 80 + 84, // 81 + 84, // 82 + 84, // 83 + 84, // 84 + 88, // 85 + 88, // 86 + 88, // 87 + 88, // 88 + 92, // 89 + 92, // 90 + 92, // 91 + 92, // 92 + 96, // 93 + 96, // 94 + 96, // 95 + 96, // 96 + 100, // 97 + 100, // 98 + 100, // 99 + 100, // 100 + 104, // 101 + 104, // 102 + 104, // 103 + 104, // 104 + 108, // 105 + 108, // 106 + 108, // 107 + 108, // 108 + 112, // 109 + 112, // 110 + 112, // 111 + 112, // 112 + 116, // 113 + 116, // 114 + 116, // 115 + 116, // 116 + 120, // 117 + 120, // 118 + 120, // 119 + 120, // 120 + 124, // 121 + 124, // 122 + 124, // 123 + 124, // 124 + 127, // 125 + 127, // 126 + 127, // 127 +}; + +const char* g_noteTable[] = +{ + "Cn%01u ", + "Cs%01u ", + "Dn%01u ", + "Ds%01u ", + "En%01u ", + "Fn%01u ", + "Fs%01u ", + "Gn%01u ", + "Gs%01u ", + "An%01u ", + "As%01u ", + "Bn%01u ", +}; + +const char* g_minusNoteTable[] = +{ + "CnM%01u", + "CsM%01u", + "DnM%01u", + "DsM%01u", + "EnM%01u", + "FnM%01u", + "FsM%01u", + "GnM%01u", + "GsM%01u", + "AnM%01u", + "AsM%01u", + "BnM%01u", +}; diff --git a/tools/mid2agb/tables.h b/tools/mid2agb/tables.h new file mode 100644 index 0000000..da3c907 --- /dev/null +++ b/tools/mid2agb/tables.h @@ -0,0 +1,29 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef TABLES_H +#define TABLES_H + +extern const int g_noteDurationLUT[]; +extern const int g_noteVelocityLUT[]; +extern const char* g_noteTable[]; +extern const char* g_minusNoteTable[]; + +#endif // TABLES_H diff --git a/tools/preproc/.gitignore b/tools/preproc/.gitignore new file mode 100644 index 0000000..eb34708 --- /dev/null +++ b/tools/preproc/.gitignore @@ -0,0 +1 @@ +preproc diff --git a/tools/preproc/LICENSE b/tools/preproc/LICENSE new file mode 100644 index 0000000..534d153 --- /dev/null +++ b/tools/preproc/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile new file mode 100644 index 0000000..63dedda --- /dev/null +++ b/tools/preproc/Makefile @@ -0,0 +1,20 @@ +CXX := g++ + +CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror + +SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \ + utf8.cpp + +HEADERS := asm_file.h c_file.h char_util.h charmap.h preproc.h string_parser.h \ + utf8.h + +.PHONY: all clean + +all: preproc + @: + +preproc: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) preproc preproc.exe diff --git a/tools/preproc/asm_file.cpp b/tools/preproc/asm_file.cpp new file mode 100644 index 0000000..383010a --- /dev/null +++ b/tools/preproc/asm_file.cpp @@ -0,0 +1,529 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include "preproc.h" +#include "asm_file.h" +#include "char_util.h" +#include "utf8.h" +#include "string_parser.h" + +AsmFile::AsmFile(std::string filename) : m_filename(filename) +{ + FILE *fp = std::fopen(filename.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", filename.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + if (m_size < 0) + FATAL_ERROR("File size of \"%s\" is less than zero.\n", filename.c_str()); + + m_buffer = new char[m_size + 1]; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", filename.c_str()); + + m_buffer[m_size] = 0; + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; + m_lineStart = 0; + + RemoveComments(); +} + +AsmFile::AsmFile(AsmFile&& other) : m_filename(std::move(other.m_filename)) +{ + m_buffer = other.m_buffer; + m_pos = other.m_pos; + m_size = other.m_size; + m_lineNum = other.m_lineNum; + m_lineStart = other.m_lineStart; + + other.m_buffer = nullptr; +} + +AsmFile::~AsmFile() +{ + delete[] m_buffer; +} + +// Removes comments to simplify further processing. +// It stops upon encountering a null character, +// which may or may not be the end of file marker. +// If it's not, the error will be caught later. +void AsmFile::RemoveComments() +{ + long pos = 0; + char stringChar = 0; + + for (;;) + { + if (m_buffer[pos] == 0) + return; + + if (stringChar != 0) + { + if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == stringChar) + { + pos += 2; + } + else + { + if (m_buffer[pos] == stringChar) + stringChar = 0; + pos++; + } + } + else if (m_buffer[pos] == '@' && (pos == 0 || m_buffer[pos - 1] != '\\')) + { + while (m_buffer[pos] != '\n' && m_buffer[pos] != 0) + m_buffer[pos++] = ' '; + } + else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '*') + { + m_buffer[pos++] = ' '; + m_buffer[pos++] = ' '; + + for (;;) + { + if (m_buffer[pos] == 0) + return; + + if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/') + { + m_buffer[pos++] = ' '; + m_buffer[pos++] = ' '; + break; + } + else + { + if (m_buffer[pos] != '\n') + m_buffer[pos] = ' '; + pos++; + } + } + } + else + { + if (m_buffer[pos] == '"' || m_buffer[pos] == '\'') + stringChar = m_buffer[pos]; + pos++; + } + } +} + +// Checks if we're at a particular directive and if so, consumes it. +// Returns whether the directive was found. +bool AsmFile::CheckForDirective(std::string name) +{ + long i; + long length = static_cast<long>(name.length()); + + for (i = 0; i < length && m_pos + i < m_size; i++) + if (name[i] != m_buffer[m_pos + i]) + return false; + + if (i < length) + return false; + + m_pos += length; + + return true; +} + +// Checks if we're at a known directive and if so, consumes it. +// Returns which directive was found. +Directive AsmFile::GetDirective() +{ + SkipWhitespace(); + + if (CheckForDirective(".include")) + return Directive::Include; + else if (CheckForDirective(".string")) + return Directive::String; + else if (CheckForDirective(".braille")) + return Directive::Braille; + else + return Directive::Unknown; +} + +// Checks if we're at label that ends with '::'. +// Returns the name if so and an empty string if not. +std::string AsmFile::GetGlobalLabel() +{ + long start = m_pos; + long pos = m_pos; + + if (IsIdentifierStartingChar(m_buffer[pos])) + { + pos++; + + while (IsIdentifierChar(m_buffer[pos])) + pos++; + } + + if (m_buffer[pos] == ':' && m_buffer[pos + 1] == ':') + { + m_pos = pos + 2; + ExpectEmptyRestOfLine(); + return std::string(&m_buffer[start], pos - start); + } + + return std::string(); +} + +// Skips tabs and spaces. +void AsmFile::SkipWhitespace() +{ + while (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + m_pos++; +} + +// Reads include path. +std::string AsmFile::ReadPath() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] != '"') + RaiseError("expected file path"); + + m_pos++; + + int length = 0; + long startPos = m_pos; + + while (m_buffer[m_pos] != '"') + { + unsigned char c = m_buffer[m_pos++]; + + if (c == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF in include string"); + else + RaiseError("unexpected null character in include string"); + } + + if (!IsAsciiPrintable(c)) + RaiseError("unexpected character '\\x%02X' in include string", c); + + // Don't bother allowing any escape sequences. + if (c == '\\') + { + c = m_buffer[m_pos]; + RaiseError("unexpected escape '\\%c' in include string", c); + } + + length++; + + if (length > kMaxPath) + RaiseError("path is too long"); + } + + m_pos++; // Go past the right quote. + + ExpectEmptyRestOfLine(); + + return std::string(&m_buffer[startPos], length); +} + +// Reads a charmap string. +int AsmFile::ReadString(unsigned char* s) +{ + SkipWhitespace(); + + int length; + StringParser stringParser(m_buffer, m_size); + + try + { + m_pos += stringParser.ParseString(m_pos, s, length); + } + catch (std::runtime_error& e) + { + RaiseError(e.what()); + } + + SkipWhitespace(); + + if (ConsumeComma()) + { + SkipWhitespace(); + int padLength = ReadPadLength(); + + while (length < padLength) + { + s[length++] = 0; + } + } + + ExpectEmptyRestOfLine(); + + return length; +} + +int AsmFile::ReadBraille(unsigned char* s) +{ + static std::map<char, unsigned char> encoding = + { + { 'A', 0x01 }, + { 'B', 0x05 }, + { 'C', 0x03 }, + { 'D', 0x0B }, + { 'E', 0x09 }, + { 'F', 0x07 }, + { 'G', 0x0F }, + { 'H', 0x0D }, + { 'I', 0x06 }, + { 'J', 0x0E }, + { 'K', 0x11 }, + { 'L', 0x15 }, + { 'M', 0x13 }, + { 'N', 0x1B }, + { 'O', 0x19 }, + { 'P', 0x17 }, + { 'Q', 0x1F }, + { 'R', 0x1D }, + { 'S', 0x16 }, + { 'T', 0x1E }, + { 'U', 0x31 }, + { 'V', 0x35 }, + { 'W', 0x2E }, + { 'X', 0x33 }, + { 'Y', 0x3B }, + { 'Z', 0x39 }, + { ' ', 0x00 }, + { ',', 0x04 }, + { '.', 0x2C }, + { '$', 0xFF }, + }; + + SkipWhitespace(); + + int length = 0; + + if (m_buffer[m_pos] != '"') + RaiseError("expected braille string literal"); + + m_pos++; + + while (m_buffer[m_pos] != '"') + { + if (length == kMaxStringLength) + RaiseError("mapped string longer than %d bytes", kMaxStringLength); + + if (m_buffer[m_pos] == '\\' && m_buffer[m_pos + 1] == 'n') + { + s[length++] = 0xFE; + m_pos += 2; + } + else + { + char c = m_buffer[m_pos]; + + if (encoding.count(c) == 0) + { + if (IsAsciiPrintable(c)) + RaiseError("character '%c' not valid in braille string", m_buffer[m_pos]); + else + RaiseError("character '\\x%02X' not valid in braille string", m_buffer[m_pos]); + } + + s[length++] = encoding[c]; + m_pos++; + } + } + + m_pos++; // Go past the right quote. + + ExpectEmptyRestOfLine(); + + return length; +} + +// If we're at a comma, consumes it. +// Returns whether a comma was found. +bool AsmFile::ConsumeComma() +{ + if (m_buffer[m_pos] == ',') + { + m_pos++; + return true; + } + + return false; +} + +// Converts digit character to numerical value. +static int ConvertDigit(char c, int radix) +{ + int digit; + + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'A' && c <= 'F') + digit = 10 + c - 'A'; + else if (c >= 'a' && c <= 'f') + digit = 10 + c - 'a'; + else + return -1; + + return (digit < radix) ? digit : -1; +} + +// Reads an integer. If the integer is greater than maxValue, it returns -1. +int AsmFile::ReadPadLength() +{ + if (!IsAsciiDigit(m_buffer[m_pos])) + RaiseError("expected integer"); + + int radix = 10; + + if (m_buffer[m_pos] == '0' && m_buffer[m_pos + 1] == 'x') + { + radix = 16; + m_pos += 2; + } + + unsigned n = 0; + int digit; + + while ((digit = ConvertDigit(m_buffer[m_pos], radix)) != -1) + { + n = n * radix + digit; + + if (n > kMaxStringLength) + RaiseError("pad length greater than maximum length (%d)", kMaxStringLength); + + m_pos++; + } + + return n; +} + +// Outputs the current line and moves to the next one. +void AsmFile::OutputLine() +{ + while (m_buffer[m_pos] != '\n' && m_buffer[m_pos] != 0) + m_pos++; + + if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + { + RaiseWarning("file doesn't end with newline"); + puts(&m_buffer[m_lineStart]); + } + else + { + RaiseError("unexpected null character"); + } + } + else + { + m_buffer[m_pos] = 0; + puts(&m_buffer[m_lineStart]); + m_buffer[m_pos] = '\n'; + m_pos++; + m_lineStart = m_pos; + m_lineNum++; + } +} + +// Asserts that the rest of the line is empty and moves to the next one. +void AsmFile::ExpectEmptyRestOfLine() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + RaiseWarning("file doesn't end with newline"); + else + RaiseError("unexpected null character"); + } + else if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineStart = m_pos; + m_lineNum++; + } + else if (m_buffer[m_pos] == '\r') + { + RaiseError("only Unix-style LF newlines are supported"); + } + else + { + RaiseError("junk at end of line"); + } +} + +// Checks if we're at the end of the file. +bool AsmFile::IsAtEnd() +{ + return (m_pos >= m_size); +} + +// Output the current location to set gas's logical file and line numbers. +void AsmFile::OutputLocation() +{ + std::printf("# %ld \"%s\"\n", m_lineNum, m_filename.c_str()); +} + +// Reports a diagnostic message. +void AsmFile::ReportDiagnostic(const char* type, const char* format, std::va_list args) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + std::vsnprintf(buffer, bufferSize, format, args); + std::fprintf(stderr, "%s:%ld: %s: %s\n", m_filename.c_str(), m_lineNum, type, buffer); +} + +#define DO_REPORT(type) \ +do \ +{ \ + std::va_list args; \ + va_start(args, format); \ + ReportDiagnostic(type, format, args); \ + va_end(args); \ +} while (0) + +// Reports an error diagnostic and terminates the program. +void AsmFile::RaiseError(const char* format, ...) +{ + DO_REPORT("error"); + std::exit(1); +} + +// Reports a warning diagnostic. +void AsmFile::RaiseWarning(const char* format, ...) +{ + DO_REPORT("warning"); +} diff --git a/tools/preproc/asm_file.h b/tools/preproc/asm_file.h new file mode 100644 index 0000000..d73b36e --- /dev/null +++ b/tools/preproc/asm_file.h @@ -0,0 +1,72 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef ASM_FILE_H +#define ASM_FILE_H + +#include <cstdarg> +#include <cstdint> +#include <string> +#include "preproc.h" + +enum class Directive +{ + Include, + String, + Braille, + Unknown +}; + +class AsmFile +{ +public: + AsmFile(std::string filename); + AsmFile(AsmFile&& other); + AsmFile(const AsmFile&) = delete; + ~AsmFile(); + Directive GetDirective(); + std::string GetGlobalLabel(); + std::string ReadPath(); + int ReadString(unsigned char* s); + int ReadBraille(unsigned char* s); + bool IsAtEnd(); + void OutputLine(); + void OutputLocation(); + +private: + char* m_buffer; + long m_pos; + long m_size; + long m_lineNum; + long m_lineStart; + std::string m_filename; + + bool ConsumeComma(); + int ReadPadLength(); + void RemoveComments(); + bool CheckForDirective(std::string name); + void SkipWhitespace(); + void ExpectEmptyRestOfLine(); + void ReportDiagnostic(const char* type, const char* format, std::va_list args); + void RaiseError(const char* format, ...); + void RaiseWarning(const char* format, ...); +}; + +#endif // ASM_FILE_H diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp new file mode 100644 index 0000000..229f568 --- /dev/null +++ b/tools/preproc/c_file.cpp @@ -0,0 +1,429 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include <string> +#include <memory> +#include "preproc.h" +#include "c_file.h" +#include "char_util.h" +#include "utf8.h" +#include "string_parser.h" + +CFile::CFile(std::string filename) : m_filename(filename) +{ + FILE *fp = std::fopen(filename.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", filename.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + if (m_size < 0) + FATAL_ERROR("File size of \"%s\" is less than zero.\n", filename.c_str()); + + m_buffer = new char[m_size + 1]; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", filename.c_str()); + + m_buffer[m_size] = 0; + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; +} + +CFile::CFile(CFile&& other) : m_filename(std::move(other.m_filename)) +{ + m_buffer = other.m_buffer; + m_pos = other.m_pos; + m_size = other.m_size; + m_lineNum = other.m_lineNum; + + other.m_buffer = nullptr; +} + +CFile::~CFile() +{ + delete[] m_buffer; +} + +void CFile::Preproc() +{ + char stringChar = 0; + + while (m_pos < m_size) + { + if (stringChar) + { + if (m_buffer[m_pos] == stringChar) + { + std::putchar(stringChar); + m_pos++; + stringChar = 0; + } + else if (m_buffer[m_pos] == '\\' && m_buffer[m_pos + 1] == stringChar) + { + std::putchar('\\'); + std::putchar(stringChar); + m_pos += 2; + } + else + { + if (m_buffer[m_pos] == '\n') + m_lineNum++; + std::putchar(m_buffer[m_pos]); + m_pos++; + } + } + else + { + TryConvertString(); + TryConvertIncbin(); + + if (m_pos >= m_size) + break; + + char c = m_buffer[m_pos++]; + + std::putchar(c); + + if (c == '\n') + m_lineNum++; + else if (c == '"') + stringChar = '"'; + else if (c == '\'') + stringChar = '\''; + } + } +} + +bool CFile::ConsumeHorizontalWhitespace() +{ + if (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + { + m_pos++; + return true; + } + + return false; +} + +bool CFile::ConsumeNewline() +{ + if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n') + { + m_pos += 2; + m_lineNum++; + std::putchar('\n'); + return true; + } + + if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineNum++; + std::putchar('\n'); + return true; + } + + return false; +} + +void CFile::SkipWhitespace() +{ + while (ConsumeHorizontalWhitespace() || ConsumeNewline()) + ; +} + +void CFile::TryConvertString() +{ + long oldPos = m_pos; + long oldLineNum = m_lineNum; + bool noTerminator = false; + + if (m_buffer[m_pos] != '_' || (m_pos > 0 && IsIdentifierChar(m_buffer[m_pos - 1]))) + return; + + m_pos++; + + if (m_buffer[m_pos] == '_') + { + noTerminator = true; + m_pos++; + } + + SkipWhitespace(); + + if (m_buffer[m_pos] != '(') + { + m_pos = oldPos; + m_lineNum = oldLineNum; + return; + } + + m_pos++; + + SkipWhitespace(); + + std::printf("{ "); + + while (1) + { + SkipWhitespace(); + + if (m_buffer[m_pos] == '"') + { + unsigned char s[kMaxStringLength]; + int length; + StringParser stringParser(m_buffer, m_size); + + try + { + m_pos += stringParser.ParseString(m_pos, s, length); + } + catch (std::runtime_error& e) + { + RaiseError(e.what()); + } + + for (int i = 0; i < length; i++) + printf("0x%02X, ", s[i]); + } + else if (m_buffer[m_pos] == ')') + { + m_pos++; + break; + } + else + { + if (m_pos >= m_size) + RaiseError("unexpected EOF"); + if (IsAsciiPrintable(m_buffer[m_pos])) + RaiseError("unexpected character '%c'", m_buffer[m_pos]); + else + RaiseError("unexpected character '\\x%02X'", m_buffer[m_pos]); + } + } + + if (noTerminator) + std::printf(" }"); + else + std::printf("0xFF }"); +} + +bool CFile::CheckIdentifier(const std::string& ident) +{ + unsigned int i; + + for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++) + if (ident[i] != m_buffer[m_pos + i]) + return false; + + return (i == ident.length()); +} + +std::unique_ptr<unsigned char[]> CFile::ReadWholeFile(const std::string& path, int& size) +{ + FILE* fp = std::fopen(path.c_str(), "rb"); + + if (fp == nullptr) + RaiseError("Failed to open \"%s\" for reading.\n", path.c_str()); + + std::fseek(fp, 0, SEEK_END); + + size = std::ftell(fp); + + std::unique_ptr<unsigned char[]> buffer = std::unique_ptr<unsigned char[]>(new unsigned char[size]); + + std::rewind(fp); + + if (std::fread(buffer.get(), size, 1, fp) != 1) + RaiseError("Failed to read \"%s\".\n", path.c_str()); + + std::fclose(fp); + + return buffer; +} + +int ExtractData(const std::unique_ptr<unsigned char[]>& buffer, int offset, int size) +{ + switch (size) + { + case 1: + return buffer[offset]; + case 2: + return (buffer[offset + 1] << 8) + | buffer[offset]; + case 4: + return (buffer[offset + 3] << 24) + | (buffer[offset + 2] << 16) + | (buffer[offset + 1] << 8) + | buffer[offset]; + default: + FATAL_ERROR("Invalid size passed to ExtractData.\n"); + } +} + +void CFile::TryConvertIncbin() +{ + std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" }; + int incbinType = -1; + + for (int i = 0; i < 6; i++) + { + if (CheckIdentifier(idents[i])) + { + incbinType = i; + break; + } + } + + if (incbinType == -1) + return; + + int size = 1 << (incbinType / 2); + bool isSigned = ((incbinType % 2) == 0); + + long oldPos = m_pos; + long oldLineNum = m_lineNum; + + m_pos += idents[incbinType].length(); + + SkipWhitespace(); + + if (m_buffer[m_pos] != '(') + { + m_pos = oldPos; + m_lineNum = oldLineNum; + return; + } + + m_pos++; + + std::printf("{"); + + while (true) + { + SkipWhitespace(); + + if (m_buffer[m_pos] != '"') + RaiseError("expected double quote"); + + m_pos++; + + int startPos = m_pos; + + while (m_buffer[m_pos] != '"') + { + if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF in path string"); + else + RaiseError("unexpected null character in path string"); + } + + if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n') + RaiseError("unexpected end of line character in path string"); + + if (m_buffer[m_pos] == '\\') + RaiseError("unexpected escape in path string"); + + m_pos++; + } + + std::string path(&m_buffer[startPos], m_pos - startPos); + + m_pos++; + + int fileSize; + std::unique_ptr<unsigned char[]> buffer = ReadWholeFile(path, fileSize); + + if ((fileSize % size) != 0) + RaiseError("Size %d doesn't evenly divide file size %d.\n", size, fileSize); + + int count = fileSize / size; + int offset = 0; + + for (int i = 0; i < count; i++) + { + int data = ExtractData(buffer, offset, size); + offset += size; + + if (isSigned) + std::printf("%d,", data); + else + std::printf("%uu,", data); + } + + SkipWhitespace(); + + if (m_buffer[m_pos] != ',') + break; + + m_pos++; + } + + if (m_buffer[m_pos] != ')') + RaiseError("expected ')'"); + + m_pos++; + + std::printf("}"); +} + +// Reports a diagnostic message. +void CFile::ReportDiagnostic(const char* type, const char* format, std::va_list args) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + std::vsnprintf(buffer, bufferSize, format, args); + std::fprintf(stderr, "%s:%ld: %s: %s\n", m_filename.c_str(), m_lineNum, type, buffer); +} + +#define DO_REPORT(type) \ +do \ +{ \ + std::va_list args; \ + va_start(args, format); \ + ReportDiagnostic(type, format, args); \ + va_end(args); \ +} while (0) + +// Reports an error diagnostic and terminates the program. +void CFile::RaiseError(const char* format, ...) +{ + DO_REPORT("error"); + std::exit(1); +} + +// Reports a warning diagnostic. +void CFile::RaiseWarning(const char* format, ...) +{ + DO_REPORT("warning"); +} diff --git a/tools/preproc/c_file.h b/tools/preproc/c_file.h new file mode 100644 index 0000000..7369aba --- /dev/null +++ b/tools/preproc/c_file.h @@ -0,0 +1,58 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef C_FILE_H +#define C_FILE_H + +#include <cstdarg> +#include <cstdint> +#include <string> +#include <memory> +#include "preproc.h" + +class CFile +{ +public: + CFile(std::string filename); + CFile(CFile&& other); + CFile(const CFile&) = delete; + ~CFile(); + void Preproc(); + +private: + char* m_buffer; + long m_pos; + long m_size; + long m_lineNum; + std::string m_filename; + + bool ConsumeHorizontalWhitespace(); + bool ConsumeNewline(); + void SkipWhitespace(); + void TryConvertString(); + std::unique_ptr<unsigned char[]> ReadWholeFile(const std::string& path, int& size); + bool CheckIdentifier(const std::string& ident); + void TryConvertIncbin(); + void ReportDiagnostic(const char* type, const char* format, std::va_list args); + void RaiseError(const char* format, ...); + void RaiseWarning(const char* format, ...); +}; + +#endif // C_FILE_H diff --git a/tools/preproc/char_util.h b/tools/preproc/char_util.h new file mode 100644 index 0000000..02a6e1c --- /dev/null +++ b/tools/preproc/char_util.h @@ -0,0 +1,71 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef CHAR_UTIL_H +#define CHAR_UTIL_H + +#include <cstdint> +#include <cassert> + +inline bool IsAscii(unsigned char c) +{ + return (c < 128); +} + +inline bool IsAsciiAlpha(unsigned char c) +{ + return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); +} + +inline bool IsAsciiDigit(unsigned char c) +{ + return (c >= '0' && c <= '9'); +} + +inline bool IsAsciiHexDigit(unsigned char c) +{ + return ((c >= '0' && c <= '9') + || (c >= 'a' && c <= 'f') + || (c >= 'A' && c <= 'F')); +} + +inline bool IsAsciiAlphanum(unsigned char c) +{ + return (IsAsciiAlpha(c) || IsAsciiDigit(c)); +} + +inline bool IsAsciiPrintable(unsigned char c) +{ + return (c >= ' ' && c <= '~'); +} + +// Returns whether the character can start a C identifier or the identifier of a "{FOO}" constant in strings. +inline bool IsIdentifierStartingChar(unsigned char c) +{ + return IsAsciiAlpha(c) || c == '_'; +} + +// Returns whether the character can be used in a C identifier or the identifier of a "{FOO}" constant in strings. +inline bool IsIdentifierChar(unsigned char c) +{ + return IsAsciiAlphanum(c) || c == '_'; +} + +#endif // CHAR_UTIL_H diff --git a/tools/preproc/charmap.cpp b/tools/preproc/charmap.cpp new file mode 100644 index 0000000..a7bedfe --- /dev/null +++ b/tools/preproc/charmap.cpp @@ -0,0 +1,408 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdint> +#include <cstdarg> +#include "preproc.h" +#include "charmap.h" +#include "char_util.h" +#include "utf8.h" + +enum LhsType +{ + Char, + Escape, + Constant, + None +}; + +struct Lhs +{ + LhsType type; + std::string name; + std::int32_t code; +}; + +class CharmapReader +{ +public: + CharmapReader(std::string filename); + CharmapReader(const CharmapReader&) = delete; + ~CharmapReader(); + Lhs ReadLhs(); + void ExpectEqualsSign(); + std::string ReadSequence(); + void ExpectEmptyRestOfLine(); + void RaiseError(const char* format, ...); + +private: + char* m_buffer; + long m_pos; + long m_size; + long m_lineNum; + std::string m_filename; + + void RemoveComments(); + std::string ReadConstant(); + void SkipWhitespace(); +}; + +CharmapReader::CharmapReader(std::string filename) : m_filename(filename) +{ + FILE *fp = std::fopen(filename.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", filename.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + if (m_size < 0) + FATAL_ERROR("File size of \"%s\" is less than zero.\n", filename.c_str()); + + m_buffer = new char[m_size + 1]; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", filename.c_str()); + + m_buffer[m_size] = 0; + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; + + RemoveComments(); +} + +CharmapReader::~CharmapReader() +{ + delete[] m_buffer; +} + +Lhs CharmapReader::ReadLhs() +{ + Lhs lhs; + + for (;;) + { + SkipWhitespace(); + + if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineNum++; + } + else + { + break; + } + } + + if (m_buffer[m_pos] == '\'') + { + m_pos++; + + bool isEscape = (m_buffer[m_pos] == '\\'); + + if (isEscape) + { + m_pos++; + } + + unsigned char c = m_buffer[m_pos]; + + if (c == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF in UTF-8 character literal"); + else + RaiseError("unexpected null character in UTF-8 character literal"); + } + + if (IsAscii(c) && !IsAsciiPrintable(c)) + RaiseError("unexpected character U+%X in UTF-8 character literal", c); + + UnicodeChar unicodeChar = DecodeUtf8(&m_buffer[m_pos]); + std::int32_t code = unicodeChar.code; + + if (code == -1) + RaiseError("invalid encoding in UTF-8 character literal"); + + m_pos += unicodeChar.encodingLength; + + if (m_buffer[m_pos] != '\'') + RaiseError("unterminated character literal"); + + m_pos++; + + lhs.code = code; + + if (isEscape) + { + if (code >= 128) + RaiseError("escapes using non-ASCII characters are invalid"); + + switch (code) + { + case '\'': + lhs.type = LhsType::Char; + break; + case '\\': + lhs.type = LhsType::Char; + case '"': + RaiseError("cannot escape double quote"); + break; + default: + lhs.type = LhsType::Escape; + } + } + else + { + if (code == '\'') + RaiseError("empty character literal"); + + lhs.type = LhsType::Char; + } + } + else if (IsIdentifierStartingChar(m_buffer[m_pos])) + { + lhs.type = LhsType::Constant; + lhs.name = ReadConstant(); + } + else if (m_buffer[m_pos] == '\r') + { + RaiseError("only Unix-style LF newlines are supported"); + } + else if (m_buffer[m_pos] == 0) + { + if (m_pos < m_size) + RaiseError("unexpected null character"); + lhs.type = LhsType::None; + } + else + { + RaiseError("junk at start of line"); + } + + return lhs; +} + +void CharmapReader::ExpectEqualsSign() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] != '=') + RaiseError("expected equals sign"); + + m_pos++; +} + +static unsigned int ConvertHexDigit(char c) +{ + unsigned int digit = 0; + + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'A' && c <= 'F') + digit = 10 + c - 'A'; + else if (c >= 'a' && c <= 'f') + digit = 10 + c - 'a'; + + return digit; +} + +std::string CharmapReader::ReadSequence() +{ + SkipWhitespace(); + + long startPos = m_pos; + + unsigned int length = 0; + + while (IsAsciiHexDigit(m_buffer[m_pos]) && IsAsciiHexDigit(m_buffer[m_pos + 1])) + { + m_pos += 2; + length++; + + if (length > kMaxCharmapSequenceLength) + RaiseError("byte sequence too long (max is %lu bytes)", kMaxCharmapSequenceLength); + + SkipWhitespace(); + } + + if (IsAsciiHexDigit(m_buffer[m_pos])) + RaiseError("each byte must have 2 hex digits"); + + if (length == 0) + RaiseError("expected byte sequence"); + + std::string sequence; + sequence.reserve(length); + + m_pos = startPos; + + for (unsigned int i = 0; i < length; i++) + { + unsigned int digit1 = ConvertHexDigit(m_buffer[m_pos]); + unsigned int digit2 = ConvertHexDigit(m_buffer[m_pos + 1]); + unsigned char byte = digit1 * 16 + digit2; + sequence += byte; + + m_pos += 2; + SkipWhitespace(); + } + + return sequence; +} + +void CharmapReader::ExpectEmptyRestOfLine() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] == 0) + { + if (m_pos < m_size) + RaiseError("unexpected null character"); + } + else if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineNum++; + } + else if (m_buffer[m_pos] == '\r') + { + RaiseError("only Unix-style LF newlines are supported"); + } + else + { + RaiseError("junk at end of line"); + } +} + +void CharmapReader::RaiseError(const char* format, ...) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + + std::va_list args; + va_start(args, format); + std::vsnprintf(buffer, bufferSize, format, args); + va_end(args); + + std::fprintf(stderr, "%s:%ld: error: %s\n", m_filename.c_str(), m_lineNum, buffer); + + std::exit(1); +} + +void CharmapReader::RemoveComments() +{ + long pos = 0; + bool inString = false; + + for (;;) + { + if (m_buffer[pos] == 0) + return; + + if (inString) + { + if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == '\'') + { + pos += 2; + } + else + { + if (m_buffer[pos] == '\'') + inString = false; + pos++; + } + } + else if (m_buffer[pos] == '@') + { + while (m_buffer[pos] != '\n' && m_buffer[pos] != 0) + m_buffer[pos++] = ' '; + } + else + { + if (m_buffer[pos] == '\'') + inString = true; + pos++; + } + } +} + +std::string CharmapReader::ReadConstant() +{ + long startPos = m_pos; + + while (IsIdentifierChar(m_buffer[m_pos])) + m_pos++; + + return std::string(&m_buffer[startPos], m_pos - startPos); +} + +void CharmapReader::SkipWhitespace() +{ + while (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + m_pos++; +} + +Charmap::Charmap(std::string filename) +{ + CharmapReader reader(filename); + + for (;;) + { + Lhs lhs = reader.ReadLhs(); + + if (lhs.type == LhsType::None) + return; + + reader.ExpectEqualsSign(); + + std::string sequence = reader.ReadSequence(); + + switch (lhs.type) + { + case LhsType::Char: + if (m_chars.find(lhs.code) != m_chars.end()) + reader.RaiseError("redefining char"); + m_chars[lhs.code] = sequence; + break; + case LhsType::Escape: + if (m_escapes[lhs.code].length() != 0) + reader.RaiseError("redefining escape"); + m_escapes[lhs.code] = sequence; + break; + case LhsType::Constant: + if (m_constants.find(lhs.name) != m_constants.end()) + reader.RaiseError("redefining constant"); + m_constants[lhs.name] = sequence; + break; + } + + reader.ExpectEmptyRestOfLine(); + } +} diff --git a/tools/preproc/charmap.h b/tools/preproc/charmap.h new file mode 100644 index 0000000..0d752ac --- /dev/null +++ b/tools/preproc/charmap.h @@ -0,0 +1,64 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef CHARMAP_H +#define CHARMAP_H + +#include <cstdint> +#include <string> +#include <map> +#include <vector> + +class Charmap +{ +public: + Charmap(std::string filename); + + std::string Char(std::int32_t code) + { + auto it = m_chars.find(code); + + if (it == m_chars.end()) + return std::string(); + + return it->second; + } + + std::string Escape(unsigned char code) + { + return m_escapes[code]; + } + + std::string Constant(std::string identifier) + { + auto it = m_constants.find(identifier); + + if (it == m_constants.end()) + return std::string(); + + return it->second; + } +private: + std::map<std::int32_t, std::string> m_chars; + std::string m_escapes[128]; + std::map<std::string, std::string> m_constants; +}; + +#endif // CHARMAP_H diff --git a/tools/preproc/preproc.cpp b/tools/preproc/preproc.cpp new file mode 100644 index 0000000..c9c6042 --- /dev/null +++ b/tools/preproc/preproc.cpp @@ -0,0 +1,156 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <string> +#include <stack> +#include "preproc.h" +#include "asm_file.h" +#include "c_file.h" +#include "charmap.h" + +Charmap* g_charmap; + +void PrintAsmBytes(unsigned char *s, int length) +{ + if (length > 0) + { + std::printf("\t.byte "); + for (int i = 0; i < length; i++) + { + std::printf("0x%02X", s[i]); + + if (i < length - 1) + std::printf(", "); + } + std::putchar('\n'); + } +} + +void PreprocAsmFile(std::string filename) +{ + std::stack<AsmFile> stack; + + stack.push(AsmFile(filename)); + + for (;;) + { + while (stack.top().IsAtEnd()) + { + stack.pop(); + + if (stack.empty()) + return; + else + stack.top().OutputLocation(); + } + + Directive directive = stack.top().GetDirective(); + + switch (directive) + { + case Directive::Include: + stack.push(AsmFile(stack.top().ReadPath())); + stack.top().OutputLocation(); + break; + case Directive::String: + { + unsigned char s[kMaxStringLength]; + int length = stack.top().ReadString(s); + PrintAsmBytes(s, length); + break; + } + case Directive::Braille: + { + unsigned char s[kMaxStringLength]; + int length = stack.top().ReadBraille(s); + PrintAsmBytes(s, length); + break; + } + case Directive::Unknown: + { + std::string globalLabel = stack.top().GetGlobalLabel(); + + if (globalLabel.length() != 0) + { + const char *s = globalLabel.c_str(); + std::printf("%s: ; .global %s\n", s, s); + } + else + { + stack.top().OutputLine(); + } + + break; + } + } + } +} + +void PreprocCFile(std::string filename) +{ + CFile cFile(filename); + cFile.Preproc(); +} + +char* GetFileExtension(char* filename) +{ + char* extension = filename; + + while (*extension != 0) + extension++; + + while (extension > filename && *extension != '.') + extension--; + + if (extension == filename) + return nullptr; + + extension++; + + if (*extension == 0) + return nullptr; + + return extension; +} + +int main(int argc, char **argv) +{ + if (argc != 3) + { + std::fprintf(stderr, "Usage: %s SRC_FILE CHARMAP_FILE", argv[0]); + return 1; + } + + g_charmap = new Charmap(argv[2]); + + char* extension = GetFileExtension(argv[1]); + + if (!extension) + FATAL_ERROR("\"%s\" has no file extension.\n", argv[1]); + + if ((extension[0] == 's') && extension[1] == 0) + PreprocAsmFile(argv[1]); + else if ((extension[0] == 'c' || extension[0] == 'i') && extension[1] == 0) + PreprocCFile(argv[1]); + else + FATAL_ERROR("\"%s\" has an unknown file extension of \"%s\".\n", argv[1], extension); + + return 0; +} diff --git a/tools/preproc/preproc.h b/tools/preproc/preproc.h new file mode 100644 index 0000000..515f64e --- /dev/null +++ b/tools/preproc/preproc.h @@ -0,0 +1,54 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef PREPROC_H +#define PREPROC_H + +#include <cstdio> +#include <cstdlib> +#include "charmap.h" + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + std::fprintf(stderr, format, __VA_ARGS__); \ + std::exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + std::fprintf(stderr, format, ##__VA_ARGS__); \ + std::exit(1); \ +} while (0) + +#endif // _MSC_VER + +const int kMaxPath = 256; +const int kMaxStringLength = 1024; +const unsigned long kMaxCharmapSequenceLength = 16; + +extern Charmap* g_charmap; + +#endif // PREPROC_H diff --git a/tools/preproc/string_parser.cpp b/tools/preproc/string_parser.cpp new file mode 100644 index 0000000..dd5196a --- /dev/null +++ b/tools/preproc/string_parser.cpp @@ -0,0 +1,355 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include <stdexcept> +#include "preproc.h" +#include "string_parser.h" +#include "char_util.h" +#include "utf8.h" + +// Reads a charmap char or escape sequence. +std::string StringParser::ReadCharOrEscape() +{ + std::string sequence; + + bool isEscape = (m_buffer[m_pos] == '\\'); + + if (isEscape) + { + m_pos++; + + if (m_buffer[m_pos] == '"') + { + sequence = g_charmap->Char('"'); + + if (sequence.length() == 0) + RaiseError("no mapping exists for double quote"); + + return sequence; + } + else if (m_buffer[m_pos] == '\\') + { + sequence = g_charmap->Char('\\'); + + if (sequence.length() == 0) + RaiseError("no mapping exists for backslash"); + + return sequence; + } + } + + unsigned char c = m_buffer[m_pos]; + + if (c == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF in UTF-8 string"); + else + RaiseError("unexpected null character in UTF-8 string"); + } + + if (IsAscii(c) && !IsAsciiPrintable(c)) + RaiseError("unexpected character U+%X in UTF-8 string", c); + + UnicodeChar unicodeChar = DecodeUtf8(&m_buffer[m_pos]); + m_pos += unicodeChar.encodingLength; + std::int32_t code = unicodeChar.code; + + if (code == -1) + RaiseError("invalid encoding in UTF-8 string"); + + if (isEscape && code >= 128) + RaiseError("escapes using non-ASCII characters are invalid"); + + sequence = isEscape ? g_charmap->Escape(code) : g_charmap->Char(code); + + if (sequence.length() == 0) + { + if (isEscape) + RaiseError("unknown escape '\\%c'", code); + else + RaiseError("unknown character U+%X", code); + } + + return sequence; +} + +// Reads a charmap constant, i.e. "{FOO}". +std::string StringParser::ReadBracketedConstants() +{ + std::string totalSequence; + + m_pos++; // Assume we're on the left curly bracket. + + while (m_buffer[m_pos] != '}') + { + SkipWhitespace(); + + if (IsIdentifierStartingChar(m_buffer[m_pos])) + { + long startPos = m_pos; + + m_pos++; + + while (IsIdentifierChar(m_buffer[m_pos])) + m_pos++; + + std::string sequence = g_charmap->Constant(std::string(&m_buffer[startPos], m_pos - startPos)); + + if (sequence.length() == 0) + { + m_buffer[m_pos] = 0; + RaiseError("unknown constant '%s'", &m_buffer[startPos]); + } + + totalSequence += sequence; + } + else if (IsAsciiDigit(m_buffer[m_pos])) + { + Integer integer = ReadInteger(); + + switch (integer.size) + { + case 1: + totalSequence += (unsigned char)integer.value; + break; + case 2: + totalSequence += (unsigned char)integer.value; + totalSequence += (unsigned char)(integer.value >> 8); + break; + case 4: + totalSequence += (unsigned char)integer.value; + totalSequence += (unsigned char)(integer.value >> 8); + totalSequence += (unsigned char)(integer.value >> 16); + totalSequence += (unsigned char)(integer.value >> 24); + break; + } + } + else if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF after left curly bracket"); + else + RaiseError("unexpected null character within curly brackets"); + } + else + { + if (IsAsciiPrintable(m_buffer[m_pos])) + RaiseError("unexpected character '%c' within curly brackets", m_buffer[m_pos]); + else + RaiseError("unexpected character '\\x%02X' within curly brackets", m_buffer[m_pos]); + } + } + + m_pos++; // Go past the right curly bracket. + + return totalSequence; +} + +// Reads a charmap string. +int StringParser::ParseString(long srcPos, unsigned char* dest, int& destLength) +{ + m_pos = srcPos; + + if (m_buffer[m_pos] != '"') + RaiseError("expected UTF-8 string literal"); + + long start = m_pos; + + m_pos++; + + destLength = 0; + + while (m_buffer[m_pos] != '"') + { + std::string sequence = (m_buffer[m_pos] == '{') ? ReadBracketedConstants() : ReadCharOrEscape(); + + for (const char& c : sequence) + { + if (destLength == kMaxStringLength) + RaiseError("mapped string longer than %d bytes", kMaxStringLength); + + dest[destLength++] = c; + } + } + + m_pos++; // Go past the right quote. + + return m_pos - start; +} + +void StringParser::RaiseError(const char* format, ...) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + + std::va_list args; + va_start(args, format); + std::vsnprintf(buffer, bufferSize, format, args); + va_end(args); + + throw std::runtime_error(buffer); +} + +// Converts digit character to numerical value. +static int ConvertDigit(char c, int radix) +{ + int digit; + + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'A' && c <= 'F') + digit = 10 + c - 'A'; + else if (c >= 'a' && c <= 'f') + digit = 10 + c - 'a'; + else + return -1; + + return (digit < radix) ? digit : -1; +} + +void StringParser::SkipRestOfInteger(int radix) +{ + while (ConvertDigit(m_buffer[m_pos], radix) != -1) + m_pos++; +} + +StringParser::Integer StringParser::ReadDecimal() +{ + const int radix = 10; + std::uint64_t n = 0; + int digit; + std::uint64_t max = UINT32_MAX; + long startPos = m_pos; + + while ((digit = ConvertDigit(m_buffer[m_pos], radix)) != -1) + { + n = n * radix + digit; + + if (n >= max) + { + SkipRestOfInteger(radix); + + std::string intLiteral(m_buffer + startPos, m_pos - startPos); + RaiseError("integer literal \"%s\" is too large", intLiteral.c_str()); + } + + m_pos++; + } + + int size; + + if (m_buffer[m_pos] == 'H') + { + if (n >= 0x10000) + { + RaiseError("%lu is too large to be a halfword", (unsigned long)n); + } + + size = 2; + m_pos++; + } + else if (m_buffer[m_pos] == 'W') + { + size = 4; + m_pos++; + } + else + { + if (n >= 0x10000) + size = 4; + else if (n >= 0x100) + size = 2; + else + size = 1; + } + + return{ static_cast<std::uint32_t>(n), size }; +} + +StringParser::Integer StringParser::ReadHex() +{ + const int radix = 16; + std::uint64_t n = 0; + int digit; + std::uint64_t max = UINT32_MAX; + long startPos = m_pos; + + while ((digit = ConvertDigit(m_buffer[m_pos], radix)) != -1) + { + n = n * radix + digit; + + if (n >= max) + { + SkipRestOfInteger(radix); + + std::string intLiteral(m_buffer + startPos, m_pos - startPos); + RaiseError("integer literal \"%s\" is too large", intLiteral.c_str()); + } + + m_pos++; + } + + int length = m_pos - startPos; + int size = 0; + + switch (length) + { + case 2: + size = 1; + break; + case 4: + size = 2; + break; + case 8: + size = 4; + break; + default: + { + std::string intLiteral(m_buffer + startPos, m_pos - startPos); + RaiseError("hex integer literal \"0x%s\" doesn't have length of 2, 4, or 8 digits", intLiteral.c_str()); + } + } + + return{ static_cast<std::uint32_t>(n), size }; +} + +StringParser::Integer StringParser::ReadInteger() +{ + if (!IsAsciiDigit(m_buffer[m_pos])) + RaiseError("expected integer"); + + if (m_buffer[m_pos] == '0' && m_buffer[m_pos + 1] == 'x') + { + m_pos += 2; + return ReadHex(); + } + + return ReadDecimal(); +} + +// Skips tabs and spaces. +void StringParser::SkipWhitespace() +{ + while (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + m_pos++; +} diff --git a/tools/preproc/string_parser.h b/tools/preproc/string_parser.h new file mode 100644 index 0000000..abd2bfe --- /dev/null +++ b/tools/preproc/string_parser.h @@ -0,0 +1,55 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef STRING_PARSER_H +#define STRING_PARSER_H + +#include <cstdint> +#include <string> +#include "preproc.h" + +class StringParser +{ +public: + StringParser(char* buffer, long size) : m_buffer(buffer), m_size(size), m_pos(0) {} + int ParseString(long srcPos, unsigned char* dest, int &destLength); + +private: + struct Integer + { + std::uint32_t value; + int size; + }; + + char* m_buffer; + long m_size; + long m_pos; + + Integer ReadInteger(); + Integer ReadDecimal(); + Integer ReadHex(); + std::string ReadCharOrEscape(); + std::string ReadBracketedConstants(); + void SkipWhitespace(); + void SkipRestOfInteger(int radix); + void RaiseError(const char* format, ...); +}; + +#endif // STRING_PARSER_H diff --git a/tools/preproc/utf8.cpp b/tools/preproc/utf8.cpp new file mode 100644 index 0000000..7facfd4 --- /dev/null +++ b/tools/preproc/utf8.cpp @@ -0,0 +1,92 @@ +// Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de> +// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. +// +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdint> +#include "utf8.h" + +static const unsigned char s_byteTypeTable[] = +{ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf + 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df + 0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef + 0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff +}; + +const unsigned char s0 = 0 * 12; +const unsigned char s1 = 1 * 12; +const unsigned char s2 = 2 * 12; +const unsigned char s3 = 3 * 12; +const unsigned char s4 = 4 * 12; +const unsigned char s5 = 5 * 12; +const unsigned char s6 = 6 * 12; +const unsigned char s7 = 7 * 12; +const unsigned char s8 = 8 * 12; + +static const unsigned char s_transitionTable[] = +{ + s0,s1,s2,s3,s5,s8,s7,s1,s1,s1,s4,s6, // s0 + s1,s1,s1,s1,s1,s1,s1,s1,s1,s1,s1,s1, // s1 + s1,s0,s1,s1,s1,s1,s1,s0,s1,s0,s1,s1, // s2 + s1,s2,s1,s1,s1,s1,s1,s2,s1,s2,s1,s1, // s3 + s1,s1,s1,s1,s1,s1,s1,s2,s1,s1,s1,s1, // s4 + s1,s2,s1,s1,s1,s1,s1,s1,s1,s2,s1,s1, // s5 + s1,s1,s1,s1,s1,s1,s1,s3,s1,s3,s1,s1, // s6 + s1,s3,s1,s1,s1,s1,s1,s3,s1,s3,s1,s1, // s7 + s1,s3,s1,s1,s1,s1,s1,s1,s1,s1,s1,s1, // s8 +}; + +// Decodes UTF-8 encoded Unicode code point at "s". +UnicodeChar DecodeUtf8(const char* s) +{ + UnicodeChar unicodeChar; + int state = s0; + auto start = s; + + do + { + unsigned char byte = *s++; + int type = s_byteTypeTable[byte]; + + if (state == s0) + unicodeChar.code = (0xFF >> type) & byte; + else + unicodeChar.code = (unicodeChar.code << 6) | (byte & 0x3F); + + state = s_transitionTable[state + type]; + + if (state == s1) + { + unicodeChar.code = -1; + return unicodeChar; + } + } while (state != s0); + + unicodeChar.encodingLength = s - start; + + return unicodeChar; +} diff --git a/tools/preproc/utf8.h b/tools/preproc/utf8.h new file mode 100644 index 0000000..259de67 --- /dev/null +++ b/tools/preproc/utf8.h @@ -0,0 +1,34 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef UTF8_H +#define UTF8_H + +#include <cstdint> + +struct UnicodeChar +{ + std::int32_t code; + int encodingLength; +}; + +UnicodeChar DecodeUtf8(const char* s); + +#endif // UTF8_H diff --git a/tools/ramscrgen/.gitignore b/tools/ramscrgen/.gitignore new file mode 100644 index 0000000..4d0ae82 --- /dev/null +++ b/tools/ramscrgen/.gitignore @@ -0,0 +1 @@ +ramscrgen diff --git a/tools/ramscrgen/LICENSE b/tools/ramscrgen/LICENSE new file mode 100644 index 0000000..534d153 --- /dev/null +++ b/tools/ramscrgen/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile new file mode 100644 index 0000000..858db1a --- /dev/null +++ b/tools/ramscrgen/Makefile @@ -0,0 +1,18 @@ +CXX := g++ + +CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror + +SRCS := main.cpp sym_file.cpp elf.cpp + +HEADERS := ramscrgen.h sym_file.h elf.h char_util.h + +.PHONY: all clean + +all: ramscrgen + @: + +ramscrgen: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) ramscrgen ramscrgen.exe diff --git a/tools/ramscrgen/char_util.h b/tools/ramscrgen/char_util.h new file mode 100644 index 0000000..ab20dbc --- /dev/null +++ b/tools/ramscrgen/char_util.h @@ -0,0 +1,71 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef CHAR_UTIL_H +#define CHAR_UTIL_H + +#include <cstdint> +#include <cassert> + +inline bool IsAscii(unsigned char c) +{ + return (c < 128); +} + +inline bool IsAsciiAlpha(unsigned char c) +{ + return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')); +} + +inline bool IsAsciiDigit(unsigned char c) +{ + return (c >= '0' && c <= '9'); +} + +inline bool IsAsciiHexDigit(unsigned char c) +{ + return ((c >= '0' && c <= '9') + || (c >= 'a' && c <= 'f') + || (c >= 'A' && c <= 'F')); +} + +inline bool IsAsciiAlphanum(unsigned char c) +{ + return (IsAsciiAlpha(c) || IsAsciiDigit(c)); +} + +inline bool IsAsciiPrintable(unsigned char c) +{ + return (c >= ' ' && c <= '~'); +} + +// Returns whether the character can start the identifier of a "{FOO}" constant in strings. +inline bool IsIdentifierStartingChar(unsigned char c) +{ + return IsAsciiAlpha(c) || c == '_'; +} + +// Returns whether the character can be used in the identifier of a "{FOO}" constant in strings. +inline bool IsIdentifierChar(unsigned char c) +{ + return IsAsciiAlphanum(c) || c == '_'; +} + +#endif // CHAR_UTIL_H diff --git a/tools/ramscrgen/elf.cpp b/tools/ramscrgen/elf.cpp new file mode 100644 index 0000000..7599fe0 --- /dev/null +++ b/tools/ramscrgen/elf.cpp @@ -0,0 +1,195 @@ +#include <cstdio> +#include <cstring> +#include <cstdint> +#include <map> +#include <vector> +#include <string> +#include "ramscrgen.h" +#include "elf.h" + +#define SHN_COMMON 0xFFF2 + +static std::string s_elfPath; + +static FILE *s_file; + +static std::uint32_t s_sectionHeaderOffset; +static int s_sectionHeaderEntrySize; +static int s_sectionCount; +static int s_shstrtabIndex; + +static std::uint32_t s_symtabOffset; +static std::uint32_t s_strtabOffset; + +static std::uint32_t s_symbolCount; + +struct Symbol +{ + std::uint32_t nameOffset; + std::uint32_t size; +}; + +static void Seek(long offset) +{ + if (std::fseek(s_file, offset, SEEK_SET) != 0) + FATAL_ERROR("error: failed to seek to %ld in \"%s\"", offset, s_elfPath.c_str()); +} + +static void Skip(long offset) +{ + if (std::fseek(s_file, offset, SEEK_CUR) != 0) + FATAL_ERROR("error: failed to skip %ld bytes in \"%s\"", offset, s_elfPath.c_str()); +} + +static std::uint32_t ReadInt8() +{ + int c = std::fgetc(s_file); + + if (c < 0) + FATAL_ERROR("error: unexpected EOF when reading ELF file \"%s\"\n", s_elfPath.c_str()); + + return c; +} + +static std::uint32_t ReadInt16() +{ + std::uint32_t val = 0; + val |= ReadInt8(); + val |= ReadInt8() << 8; + return val; +} + +static std::uint32_t ReadInt32() +{ + std::uint32_t val = 0; + val |= ReadInt8(); + val |= ReadInt8() << 8; + val |= ReadInt8() << 16; + val |= ReadInt8() << 24; + return val; +} + +static std::string ReadString() +{ + std::string s; + char c; + + while ((c = ReadInt8()) != 0) + s += c; + + return s; +} + +static void VerifyElfIdent() +{ + char expectedMagic[4] = { 0x7F, 'E', 'L', 'F' }; + char magic[4]; + + if (std::fread(magic, 4, 1, s_file) != 1) + FATAL_ERROR("error: failed to read ELF magic from \"%s\"\n", s_elfPath.c_str()); + + if (std::memcmp(magic, expectedMagic, 4) != 0) + FATAL_ERROR("error: ELF magic did not match in \"%s\"\n", s_elfPath.c_str()); + + if (std::fgetc(s_file) != 1) + FATAL_ERROR("error: \"%s\" not 32-bit ELF\n", s_elfPath.c_str()); + + if (std::fgetc(s_file) != 1) + FATAL_ERROR("error: \"%s\" not little-endian ELF\n", s_elfPath.c_str()); +} + +static void ReadElfHeader() +{ + Seek(0x20); + s_sectionHeaderOffset = ReadInt32(); + Seek(0x2E); + s_sectionHeaderEntrySize = ReadInt16(); + s_sectionCount = ReadInt16(); + s_shstrtabIndex = ReadInt16(); +} + +static std::string GetSectionName(std::uint32_t shstrtabOffset, int index) +{ + Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * index); + std::uint32_t nameOffset = ReadInt32(); + Seek(shstrtabOffset + nameOffset); + return ReadString(); +} + +static void FindTableOffsets() +{ + s_symtabOffset = 0; + s_strtabOffset = 0; + + Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * s_shstrtabIndex + 0x10); + std::uint32_t shstrtabOffset = ReadInt32(); + + for (int i = 0; i < s_sectionCount; i++) + { + std::string name = GetSectionName(shstrtabOffset, i); + + if (name == ".symtab") + { + if (s_symtabOffset) + FATAL_ERROR("error: mutiple .symtab sections found in \"%s\"\n", s_elfPath.c_str()); + Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * i + 0x10); + s_symtabOffset = ReadInt32(); + std::uint32_t size = ReadInt32(); + s_symbolCount = size / 16; + } + else if (name == ".strtab") + { + if (s_strtabOffset) + FATAL_ERROR("error: mutiple .strtab sections found in \"%s\"\n", s_elfPath.c_str()); + Seek(s_sectionHeaderOffset + s_sectionHeaderEntrySize * i + 0x10); + s_strtabOffset = ReadInt32(); + } + } + + if (!s_symtabOffset) + FATAL_ERROR("error: couldn't find .symtab section in \"%s\"\n", s_elfPath.c_str()); + + if (!s_strtabOffset) + FATAL_ERROR("error: couldn't find .strtab section in \"%s\"\n", s_elfPath.c_str()); +} + +std::map<std::string, std::uint32_t> GetCommonSymbols(std::string path) +{ + s_elfPath = path; + + std::map<std::string, std::uint32_t> commonSymbols; + + s_file = std::fopen(s_elfPath.c_str(), "rb"); + + if (s_file == NULL) + FATAL_ERROR("error: failed to open \"%s\" for reading\n", path.c_str()); + + VerifyElfIdent(); + ReadElfHeader(); + FindTableOffsets(); + + std::vector<Symbol> commonSymbolVec; + + Seek(s_symtabOffset); + + for (std::uint32_t i = 0; i < s_symbolCount; i++) + { + Symbol sym; + sym.nameOffset = ReadInt32(); + Skip(4); + sym.size = ReadInt32(); + Skip(2); + std::uint16_t sectionIndex = ReadInt16(); + if (sectionIndex == SHN_COMMON) + commonSymbolVec.push_back(sym); + } + + for (const Symbol& sym : commonSymbolVec) + { + Seek(s_strtabOffset + sym.nameOffset); + std::string name = ReadString(); + commonSymbols[name] = sym.size; + } + + return commonSymbols; +} diff --git a/tools/ramscrgen/elf.h b/tools/ramscrgen/elf.h new file mode 100644 index 0000000..0bfdd69 --- /dev/null +++ b/tools/ramscrgen/elf.h @@ -0,0 +1,30 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef ELF_H +#define ELF_H + +#include <cstdint> +#include <map> +#include <string> + +std::map<std::string, std::uint32_t> GetCommonSymbols(std::string path); + +#endif // ELF_H diff --git a/tools/ramscrgen/main.cpp b/tools/ramscrgen/main.cpp new file mode 100644 index 0000000..6c4f4bb --- /dev/null +++ b/tools/ramscrgen/main.cpp @@ -0,0 +1,173 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstring> +#include <string> +#include "ramscrgen.h" +#include "sym_file.h" +#include "elf.h" + +void HandleCommonInclude(std::string filename, std::string sourcePath, std::string symOrderPath, std::string lang) +{ + auto commonSymbols = GetCommonSymbols(sourcePath + "/" + filename); + + std::size_t dotIndex = filename.find_last_of('.'); + + if (dotIndex == std::string::npos) + FATAL_ERROR("error: \"%s\" doesn't have a file extension\n", filename.c_str()); + + std::string symOrderFilename = filename.substr(0, dotIndex + 1) + "txt"; + + SymFile symFile(symOrderPath + "/" + symOrderFilename); + + while (!symFile.IsAtEnd()) + { + symFile.HandleLangConditional(lang); + + std::string label = symFile.GetLabel(false); + + if (label.length() == 0) + { + unsigned long length; + if (symFile.ReadInteger(length)) + { + if (length & 3) + symFile.RaiseWarning("gap length %d is not multiple of 4", length); + printf(". += 0x%lX;\n", length); + } + } + else + { + if (commonSymbols.count(label) == 0) + symFile.RaiseError("no common symbol named \"%s\"", label.c_str()); + unsigned long size = commonSymbols[label]; + int alignment = 4; + if (size > 4) + alignment = 8; + if (size > 8) + alignment = 16; + printf(". = ALIGN(%d);\n", alignment); + printf("%s = .;\n", label.c_str()); + printf(". += 0x%lX;\n", size); + } + + symFile.ExpectEmptyRestOfLine(); + } +} + +void ConvertSymFile(std::string filename, std::string sectionName, std::string lang, bool common, std::string sourcePath, std::string commonSymPath) +{ + SymFile symFile(filename); + + while (!symFile.IsAtEnd()) + { + symFile.HandleLangConditional(lang); + + Directive directive = symFile.GetDirective(); + + switch (directive) + { + case Directive::Include: + { + std::string incFilename = symFile.ReadPath(); + symFile.ExpectEmptyRestOfLine(); + printf(". = ALIGN(4);\n"); + if (common) + HandleCommonInclude(incFilename, sourcePath, commonSymPath, lang); + else + printf("%s(%s);\n", incFilename.c_str(), sectionName.c_str()); + break; + } + case Directive::Space: + { + unsigned long length; + if (!symFile.ReadInteger(length)) + symFile.RaiseError("expected integer after .space directive"); + symFile.ExpectEmptyRestOfLine(); + printf(". += 0x%lX;\n", length); + break; + } + case Directive::Align: + { + unsigned long amount; + if (!symFile.ReadInteger(amount)) + symFile.RaiseError("expected integer after .align directive"); + if (amount > 4) + symFile.RaiseError("max alignment amount is 4"); + amount = 1UL << amount; + symFile.ExpectEmptyRestOfLine(); + printf(". = ALIGN(%lu);\n", amount); + break; + } + case Directive::Unknown: + { + std::string label = symFile.GetLabel(); + + if (label.length() != 0) + { + printf("%s = .;\n", label.c_str()); + } + + symFile.ExpectEmptyRestOfLine(); + + break; + } + } + } +} + +int main(int argc, char **argv) +{ + if (argc < 4) + { + fprintf(stderr, "Usage: %s SECTION_NAME SYM_FILE LANG [-c SRC_PATH,COMMON_SYM_PATH]", argv[0]); + return 1; + } + + bool common = false; + std::string sectionName = std::string(argv[1]); + std::string symFileName = std::string(argv[2]); + std::string lang = std::string(argv[3]); + std::string sourcePath; + std::string commonSymPath; + + if (argc > 4) + { + if (std::strcmp(argv[4], "-c") != 0) + FATAL_ERROR("error: unrecognized argument \"%s\"\n", argv[4]); + + if (argc < 6) + FATAL_ERROR("error: missing SRC_PATH,COMMON_SYM_PATH after \"-c\"\n"); + + common = true; + std::string paths = std::string(argv[5]); + std::size_t commaPos = paths.find(','); + + if (commaPos == std::string::npos) + FATAL_ERROR("error: missing comma in argument after \"-c\"\n"); + + sourcePath = paths.substr(0, commaPos); + commonSymPath = paths.substr(commaPos + 1); + } + + ConvertSymFile(symFileName, sectionName, lang, common, sourcePath, commonSymPath); + return 0; +} diff --git a/tools/ramscrgen/ramscrgen.h b/tools/ramscrgen/ramscrgen.h new file mode 100644 index 0000000..1aed1c0 --- /dev/null +++ b/tools/ramscrgen/ramscrgen.h @@ -0,0 +1,49 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef RAMSCRGEN_H +#define RAMSCRGEN_H + +#include <cstdio> +#include <cstdlib> + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + std::fprintf(stderr, format, __VA_ARGS__); \ + std::exit(1); \ +} while (0) + +#else + +#define FATAL_ERROR(format, ...) \ +do \ +{ \ + std::fprintf(stderr, format, ##__VA_ARGS__); \ + std::exit(1); \ +} while (0) + +#endif // _MSC_VER + +const int kMaxPath = 256; + +#endif // RAMSCRGEN_H diff --git a/tools/ramscrgen/sym_file.cpp b/tools/ramscrgen/sym_file.cpp new file mode 100644 index 0000000..5379bd9 --- /dev/null +++ b/tools/ramscrgen/sym_file.cpp @@ -0,0 +1,492 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdarg> +#include <climits> +#include "ramscrgen.h" +#include "sym_file.h" +#include "char_util.h" + +SymFile::SymFile(std::string filename) : m_filename(filename) +{ + FILE *fp = std::fopen(filename.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", filename.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + if (m_size < 0) + FATAL_ERROR("File size of \"%s\" is less than zero.\n", filename.c_str()); + + m_buffer = new char[m_size + 1]; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", filename.c_str()); + + m_buffer[m_size] = 0; + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; + m_lineStart = 0; + m_inLangConditional = false; + + RemoveComments(); +} + +SymFile::SymFile(SymFile&& other) : m_filename(std::move(other.m_filename)) +{ + m_buffer = other.m_buffer; + m_pos = other.m_pos; + m_size = other.m_size; + m_lineNum = other.m_lineNum; + m_lineStart = other.m_lineStart; + + other.m_buffer = nullptr; +} + +SymFile::~SymFile() +{ + delete[] m_buffer; +} + +// Removes comments to simplify further processing. +// It stops upon encountering a null character, +// which may or may not be the end of file marker. +// If it's not, the error will be caught later. +void SymFile::RemoveComments() +{ + long pos = 0; + char stringChar = 0; + + for (;;) + { + if (m_buffer[pos] == 0) + return; + + if (stringChar != 0) + { + if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == stringChar) + { + pos += 2; + } + else + { + if (m_buffer[pos] == stringChar) + stringChar = 0; + pos++; + } + } + else if (m_buffer[pos] == '@' && (pos == 0 || m_buffer[pos - 1] != '\\')) + { + while (m_buffer[pos] != '\n' && m_buffer[pos] != 0) + m_buffer[pos++] = ' '; + } + else if (m_buffer[pos] == '/' && m_buffer[pos + 1] == '*') + { + m_buffer[pos++] = ' '; + m_buffer[pos++] = ' '; + + char commentStringChar = 0; + + for (;;) + { + if (m_buffer[pos] == 0) + return; + + if (commentStringChar != 0) + { + if (m_buffer[pos] == '\\' && m_buffer[pos + 1] == commentStringChar) + { + m_buffer[pos++] = ' '; + m_buffer[pos++] = ' '; + } + else + { + if (m_buffer[pos] == commentStringChar) + commentStringChar = 0; + if (m_buffer[pos] != '\n') + m_buffer[pos] = ' '; + pos++; + } + } + else + { + if (m_buffer[pos] == '*' && m_buffer[pos + 1] == '/') + { + m_buffer[pos++] = ' '; + m_buffer[pos++] = ' '; + break; + } + else + { + if (m_buffer[pos] == '"' || m_buffer[pos] == '\'') + commentStringChar = m_buffer[pos]; + if (m_buffer[pos] != '\n') + m_buffer[pos] = ' '; + pos++; + } + } + } + } + else + { + if (m_buffer[pos] == '"' || m_buffer[pos] == '\'') + stringChar = m_buffer[pos]; + pos++; + } + } +} + +// Checks if we're at a particular directive and if so, consumes it. +// Returns whether the directive was found. +bool SymFile::CheckForDirective(std::string name) +{ + long i; + long length = static_cast<long>(name.length()); + + for (i = 0; i < length && m_pos + i < m_size; i++) + if (name[i] != m_buffer[m_pos + i]) + return false; + + if (i < length) + return false; + + m_pos += length; + + return true; +} + +// Checks if we're at a known directive and if so, consumes it. +// Returns which directive was found. +Directive SymFile::GetDirective() +{ + SkipWhitespace(); + + if (CheckForDirective(".include")) + return Directive::Include; + else if (CheckForDirective(".space")) + return Directive::Space; + else if (CheckForDirective(".align")) + return Directive::Align; + else + return Directive::Unknown; +} + +// Checks if we're at label. +// Returns the name if so and an empty string if not. +std::string SymFile::GetLabel(bool requireColon) +{ + long start = m_pos; + long pos = m_pos; + + if (IsIdentifierStartingChar(m_buffer[pos])) + { + pos++; + + while (IsIdentifierChar(m_buffer[pos])) + pos++; + } + + if (requireColon) + { + if (m_buffer[pos] == ':') + { + if (pos != start) + m_pos = pos + 1; + } + else + { + pos = start; + } + } + else + { + m_pos = pos; + } + + return std::string(&m_buffer[start], pos - start); +} + +// Skips tabs and spaces. +void SymFile::SkipWhitespace() +{ + while (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + m_pos++; +} + +// Reads include path. +std::string SymFile::ReadPath() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] != '"') + RaiseError("expected file path"); + + m_pos++; + + int length = 0; + long startPos = m_pos; + + while (m_buffer[m_pos] != '"') + { + unsigned char c = m_buffer[m_pos++]; + + if (c == 0) + { + if (m_pos >= m_size) + RaiseError("unexpected EOF in include string"); + else + RaiseError("unexpected null character in include string"); + } + + if (!IsAsciiPrintable(c)) + RaiseError("unexpected character '\\x%02X' in include string", c); + + // Don't bother allowing any escape sequences. + if (c == '\\') + { + c = m_buffer[m_pos]; + RaiseError("unexpected escape '\\%c' in include string", c); + } + + length++; + + if (length > kMaxPath) + RaiseError("path is too long"); + } + + m_pos++; // Go past the right quote. + + return std::string(&m_buffer[startPos], length); +} + +// If we're at a comma, consumes it. +// Returns whether a comma was found. +bool SymFile::ConsumeComma() +{ + if (m_buffer[m_pos] == ',') + { + m_pos++; + return true; + } + + return false; +} + +// Converts digit character to numerical value. +static int ConvertDigit(char c, int radix) +{ + int digit; + + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'A' && c <= 'F') + digit = 10 + c - 'A'; + else if (c >= 'a' && c <= 'f') + digit = 10 + c - 'a'; + else + return -1; + + return (digit < radix) ? digit : -1; +} + +// Reads an integer. +bool SymFile::ReadInteger(unsigned long& n) +{ + SkipWhitespace(); + + if (!IsAsciiDigit(m_buffer[m_pos])) + return false; + + int startPos = m_pos; + int radix = 10; + + if (m_buffer[m_pos] == '0' && m_buffer[m_pos + 1] == 'x') + { + radix = 16; + m_pos += 2; + } + + unsigned long cutoff = ULONG_MAX / radix; + unsigned long cutoffRemainder = ULONG_MAX % radix; + int digit; + + n = 0; + + while ((digit = ConvertDigit(m_buffer[m_pos], radix)) != -1) + { + if (n < cutoff || (n == cutoff && (unsigned long)digit <= cutoffRemainder)) + { + n = n * radix + digit; + } + else + { + m_pos++; + + while (ConvertDigit(m_buffer[m_pos], radix) != -1) + m_pos++; + + RaiseError("integer is too large (%s)", std::string(&m_buffer[startPos], m_pos - startPos).c_str()); + } + + m_pos++; + } + + return true; +} + +// Asserts that the rest of the line is empty and moves to the next one. +void SymFile::ExpectEmptyRestOfLine() +{ + SkipWhitespace(); + + if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + RaiseWarning("file doesn't end with newline"); + else + RaiseError("unexpected null character"); + } + else if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineStart = m_pos; + m_lineNum++; + } + else if (m_buffer[m_pos] == '\r') + { + RaiseError("only Unix-style LF newlines are supported"); + } + else + { + RaiseError("junk at end of line"); + } +} + + +void SymFile::SkipLine() +{ + while (m_buffer[m_pos] != 0 && m_buffer[m_pos] != '\n') + m_pos++; + + if (m_buffer[m_pos] == '\n') + m_pos++; +} + +// Checks if we're at the end of the file. +bool SymFile::IsAtEnd() +{ + return (m_pos >= m_size); +} + +void SymFile::HandleLangConditional(std::string lang) +{ + if (m_buffer[m_pos] != '#') + return; + + m_pos++; + + if (CheckForDirective("begin")) + { + if (m_inLangConditional) + RaiseError("already inside language conditional"); + + SkipWhitespace(); + + std::string label = GetLabel(false); + + if (label.length() == 0) + RaiseError("no language name after #begin"); + + ExpectEmptyRestOfLine(); + + if (lang == label) + { + m_inLangConditional = true; + } + else + { + while (!IsAtEnd() && m_buffer[m_pos] != '#') + SkipLine(); + + if (m_buffer[m_pos] != '#') + RaiseError("unterminated language conditional"); + + m_pos++; + + if (!CheckForDirective("end")) + RaiseError("expected #end"); + + ExpectEmptyRestOfLine(); + } + } + else if (CheckForDirective("end")) + { + if (!m_inLangConditional) + RaiseError("not inside language conditional"); + + m_inLangConditional = false; + + ExpectEmptyRestOfLine(); + } + else + { + RaiseError("unknown # directive"); + } +} + +// Reports a diagnostic message. +void SymFile::ReportDiagnostic(const char* type, const char* format, std::va_list args) +{ + const int bufferSize = 1024; + char buffer[bufferSize]; + std::vsnprintf(buffer, bufferSize, format, args); + std::fprintf(stderr, "%s:%ld: %s: %s\n", m_filename.c_str(), m_lineNum, type, buffer); +} + +#define DO_REPORT(type) \ +do \ +{ \ + std::va_list args; \ + va_start(args, format); \ + ReportDiagnostic(type, format, args); \ + va_end(args); \ +} while (0) + +// Reports an error diagnostic and terminates the program. +void SymFile::RaiseError(const char* format, ...) +{ + DO_REPORT("error"); + std::exit(1); +} + +// Reports a warning diagnostic. +void SymFile::RaiseWarning(const char* format, ...) +{ + DO_REPORT("warning"); +} diff --git a/tools/ramscrgen/sym_file.h b/tools/ramscrgen/sym_file.h new file mode 100644 index 0000000..bb0c803 --- /dev/null +++ b/tools/ramscrgen/sym_file.h @@ -0,0 +1,71 @@ +// Copyright(c) 2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef SYM_FILE_H +#define SYM_FILE_H + +#include <cstdarg> +#include <cstdint> +#include <string> +#include "ramscrgen.h" + +enum class Directive +{ + Include, + Space, + Align, + Unknown +}; + +class SymFile +{ +public: + SymFile(std::string filename); + SymFile(SymFile&& other); + SymFile(const SymFile&) = delete; + ~SymFile(); + Directive GetDirective(); + std::string GetLabel(bool requireColon = true); + std::string ReadPath(); + bool ReadInteger(unsigned long& value); + void ExpectEmptyRestOfLine(); + void SkipLine(); + bool IsAtEnd(); + void HandleLangConditional(std::string lang); + void RaiseError(const char* format, ...); + void RaiseWarning(const char* format, ...); + +private: + char* m_buffer; + long m_pos; + long m_size; + long m_lineNum; + long m_lineStart; + std::string m_filename; + bool m_inLangConditional; + + bool ConsumeComma(); + void RemoveComments(); + bool CheckForDirective(std::string name); + void SkipWhitespace(); + void ReportDiagnostic(const char* type, const char* format, std::va_list args); +}; + +#endif // SYM_FILE_H diff --git a/tools/rsfont/.gitignore b/tools/rsfont/.gitignore new file mode 100644 index 0000000..3140ece --- /dev/null +++ b/tools/rsfont/.gitignore @@ -0,0 +1 @@ +rsfont diff --git a/tools/rsfont/LICENSE b/tools/rsfont/LICENSE new file mode 100644 index 0000000..b497950 --- /dev/null +++ b/tools/rsfont/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2016 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile new file mode 100644 index 0000000..abe1cab --- /dev/null +++ b/tools/rsfont/Makefile @@ -0,0 +1,18 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK + +LIBS = -lpng -lz + +SRCS = main.c convert_png.c util.c font.c + +.PHONY: all clean + +all: rsfont + @: + +rsfont: $(SRCS) convert_png.h gfx.h global.h util.h font.h + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) + +clean: + $(RM) rsfont rsfont.exe diff --git a/tools/rsfont/convert_png.c b/tools/rsfont/convert_png.c new file mode 100644 index 0000000..f6a3080 --- /dev/null +++ b/tools/rsfont/convert_png.c @@ -0,0 +1,169 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <setjmp.h> +#include <png.h> +#include "global.h" +#include "convert_png.h" +#include "gfx.h" + +void ReadPng(char *path, struct Image *image) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + unsigned char sig[8]; + + if (fread(sig, 8, 1, fp) != 1) + FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path); + + if (png_sig_cmp(sig, 0, 8)) + FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path); + + png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + FATAL_ERROR("Failed to create PNG read struct.\n"); + + png_infop info_ptr = png_create_info_struct(png_ptr); + + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path); + + png_init_io(png_ptr, fp); + png_set_sig_bytes(png_ptr, 8); + png_read_info(png_ptr, info_ptr); + + int bit_depth = png_get_bit_depth(png_ptr, info_ptr); + + if (bit_depth != image->bitDepth) + FATAL_ERROR("\"%s\" has a bit depth of %d, but the expected bit depth is %d.\n", path, bit_depth, image->bitDepth); + + int color_type = png_get_color_type(png_ptr, info_ptr); + + if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE) + FATAL_ERROR("\"%s\" has an unsupported color type.\n", path); + + // Check if the image has a palette so that we can tell if the colors need to be inverted later. + // Don't read the palette because it's not needed for now. + image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE); + + image->width = png_get_image_width(png_ptr, info_ptr); + image->height = png_get_image_height(png_ptr, info_ptr); + + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + + image->pixels = malloc(image->height * rowbytes); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate pixel buffer.\n"); + + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); + + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error reading from \"%s\".\n", path); + + png_read_image(png_ptr, row_pointers); + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + + free(row_pointers); + fclose(fp); +} + +void SetPngPalette(png_structp png_ptr, png_infop info_ptr, struct Palette *palette) +{ + png_colorp colors = malloc(palette->numColors * sizeof(png_color)); + + if (colors == NULL) + FATAL_ERROR("Failed to allocate PNG palette.\n"); + + for (int i = 0; i < palette->numColors; i++) { + colors[i].red = palette->colors[i].red; + colors[i].green = palette->colors[i].green; + colors[i].blue = palette->colors[i].blue; + } + + png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors); + + free(colors); +} + +void WritePng(char *path, struct Image *image) +{ + FILE *fp = fopen(path, "wb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + FATAL_ERROR("Failed to create PNG write struct.\n"); + + png_infop info_ptr = png_create_info_struct(png_ptr); + + if (!info_ptr) + FATAL_ERROR("Failed to create PNG info struct.\n"); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path); + + png_init_io(png_ptr, fp); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing header for \"%s\".\n", path); + + int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY; + + png_set_IHDR(png_ptr, info_ptr, image->width, image->height, + image->bitDepth, color_type, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + + if (image->hasPalette) { + SetPngPalette(png_ptr, info_ptr, &image->palette); + + if (image->hasTransparency) { + png_byte trans = 0; + png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0); + } + } + + png_write_info(png_ptr, info_ptr); + + png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep)); + + if (row_pointers == NULL) + FATAL_ERROR("Failed to allocate row pointers.\n"); + + int rowbytes = png_get_rowbytes(png_ptr, info_ptr); + + for (int i = 0; i < image->height; i++) + row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes)); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error writing \"%s\".\n", path); + + png_write_image(png_ptr, row_pointers); + + if (setjmp(png_jmpbuf(png_ptr))) + FATAL_ERROR("Error ending write of \"%s\".\n", path); + + png_write_end(png_ptr, NULL); + + fclose(fp); + + png_destroy_write_struct(&png_ptr, &info_ptr); + free(row_pointers); +} diff --git a/tools/rsfont/convert_png.h b/tools/rsfont/convert_png.h new file mode 100644 index 0000000..55d3d69 --- /dev/null +++ b/tools/rsfont/convert_png.h @@ -0,0 +1,11 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef CONVERT_PNG_H +#define CONVERT_PNG_H + +#include "gfx.h" + +void ReadPng(char *path, struct Image *image); +void WritePng(char *path, struct Image *image); + +#endif // CONVERT_PNG_H diff --git a/tools/rsfont/font.c b/tools/rsfont/font.c new file mode 100644 index 0000000..ed48b31 --- /dev/null +++ b/tools/rsfont/font.c @@ -0,0 +1,455 @@ +// Copyright(c) 2015-2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <stdbool.h> +#include "global.h" +#include "font.h" +#include "gfx.h" +#include "util.h" + +unsigned char gFontPalette[][3] = +{ + {0xFF, 0xFF, 0xFF}, // bg (white) + {0x38, 0x38, 0x38}, // fg (dark grey) + {0xD8, 0xD8, 0xD8}, // shadow (light grey) +}; + +void ConvertFromTiles1Bpp(unsigned char *src, unsigned char *dest, int numGlyphs, int layout) +{ + for (int glyph = 0; glyph < numGlyphs; glyph++) + { + if (layout == 0) + { + for (int i = 0; i < 8; i++) + { + uint8_t srcRow = src[(glyph * 8) + i]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 8) + i; + dest[(y * 128) + x] = (srcRow >> (7 - j)) & 1; + } + } + } + else + { + // layout type 1 + + int tile1Offset = glyph * 16; + int tile2Offset = tile1Offset + 8; + + for (int i = 0; i < 8; i++) + { + uint8_t srcRow = src[tile1Offset + i]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + i; + dest[(y * 128) + x] = (srcRow >> (7 - j)) & 1; + } + } + + for (int i = 0; i < 8; i++) + { + uint8_t srcRow = src[tile2Offset + i]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + 8 + i; + dest[(y * 128) + x] = (srcRow >> (7 - j)) & 1; + } + } + } + } +} + +void ConvertToTiles1Bpp(unsigned char *src, unsigned char *dest, int numGlyphs, int layout) +{ + for (int glyph = 0; glyph < numGlyphs; glyph++) + { + if (layout == 0) + { + for (int i = 0; i < 8; i++) + { + uint8_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 8) + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 1) + FATAL_ERROR("More than 2 colors in 1 BPP font.\n"); + + destRow <<= 1; + destRow |= color; + } + + dest[(glyph * 8) + i] = destRow; + } + } + else + { + // layout type 1 + + int tile1Offset = glyph * 16; + int tile2Offset = tile1Offset + 8; + + for (int i = 0; i < 8; i++) + { + uint8_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 1) + FATAL_ERROR("More than 2 colors in 1 BPP font.\n"); + + destRow <<= 1; + destRow |= color; + } + + dest[tile1Offset + i] = destRow; + } + + for (int i = 0; i < 8; i++) + { + uint8_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + 8 + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 1) + FATAL_ERROR("More than 2 colors in 1 BPP font.\n"); + + destRow <<= 1; + destRow |= color; + } + + dest[tile2Offset + i] = destRow; + } + } + } +} + +void ConvertFromTiles4Bpp(unsigned char *src, unsigned char *dest, int numGlyphs, int layout) +{ + static unsigned char table[16] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, + }; + + for (int glyph = 0; glyph < numGlyphs; glyph++) + { + if (layout == 0) + { + int offset = glyph * 32; + + for (int i = 0; i < 8; i++) + { + uint32_t srcRow = (src[offset + 3] << 24) + | (src[offset + 2] << 16) + | (src[offset + 1] << 8) + | src[offset]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 8) + i; + dest[(y * 128) + x] = table[srcRow & 0xF]; + srcRow >>= 4; + } + + offset += 4; + } + } + else + { + int tile1Offset; + int tile2Offset; + + if (layout == 1) + { + tile1Offset = glyph * 64; + tile2Offset = tile1Offset + 32; + } + else + { + tile1Offset = ((glyph / 16) * 1024) + ((glyph % 16) * 32); + tile2Offset = tile1Offset + 512; + } + + for (int i = 0; i < 8; i++) + { + uint32_t srcRow = (src[tile1Offset + 3] << 24) + | (src[tile1Offset + 2] << 16) + | (src[tile1Offset + 1] << 8) + | src[tile1Offset]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + i; + dest[(y * 128) + x] = table[srcRow & 0xF]; + srcRow >>= 4; + } + + tile1Offset += 4; + } + + for (int i = 0; i < 8; i++) + { + uint32_t srcRow = (src[tile2Offset + 3] << 24) + | (src[tile2Offset + 2] << 16) + | (src[tile2Offset + 1] << 8) + | src[tile2Offset]; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + 8 + i; + dest[(y * 128) + x] = table[srcRow & 0xF]; + srcRow >>= 4; + } + + tile2Offset += 4; + } + } + } +} + +void ConvertToTiles4Bpp(unsigned char *src, unsigned char *dest, int numGlyphs, int layout) +{ + static unsigned char table[3] = + { + 0, 15, 14, + }; + + for (int glyph = 0; glyph < numGlyphs; glyph++) + { + if (layout == 0) + { + int offset = glyph * 32; + + for (int i = 0; i < 8; i++) + { + uint32_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 8) + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 2) + FATAL_ERROR("More than 3 colors in 4 BPP font.\n"); + + destRow >>= 4; + destRow |= (table[color] << 28); + } + + dest[offset] = destRow & 0xFF; + dest[offset + 1] = (destRow >> 8) & 0xFF; + dest[offset + 2] = (destRow >> 16) & 0xFF; + dest[offset + 3] = (destRow >> 24) & 0xFF; + + offset += 4; + } + } + else + { + int tile1Offset; + int tile2Offset; + + if (layout == 1) + { + tile1Offset = glyph * 64; + tile2Offset = tile1Offset + 32; + } + else + { + tile1Offset = ((glyph / 16) * 1024) + ((glyph % 16) * 32); + tile2Offset = tile1Offset + 512; + } + + for (int i = 0; i < 8; i++) + { + uint32_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 2) + FATAL_ERROR("More than 3 colors in 4 BPP font.\n"); + + destRow >>= 4; + destRow |= (table[color] << 28); + } + + dest[tile1Offset] = destRow & 0xFF; + dest[tile1Offset + 1] = (destRow >> 8) & 0xFF; + dest[tile1Offset + 2] = (destRow >> 16) & 0xFF; + dest[tile1Offset + 3] = (destRow >> 24) & 0xFF; + + tile1Offset += 4; + } + + for (int i = 0; i < 8; i++) + { + uint32_t destRow = 0; + + for (int j = 0; j < 8; j++) + { + int x = ((glyph % 16) * 8) + j; + int y = ((glyph / 16) * 16) + 8 + i; + unsigned char color = src[(y * 128) + x]; + + if (color > 2) + FATAL_ERROR("More than 3 colors in 4 BPP font.\n"); + + destRow >>= 4; + destRow |= (table[color] << 28); + } + + dest[tile2Offset] = destRow & 0xFF; + dest[tile2Offset + 1] = (destRow >> 8) & 0xFF; + dest[tile2Offset + 2] = (destRow >> 16) & 0xFF; + dest[tile2Offset + 3] = (destRow >> 24) & 0xFF; + + tile2Offset += 4; + } + } + } +} + +static void SetFontPalette(struct Image *image) +{ + image->hasPalette = true; + + image->palette.numColors = 3; + + for (int i = 0; i < image->palette.numColors; i++) + { + image->palette.colors[i].red = gFontPalette[i][0]; + image->palette.colors[i].green = gFontPalette[i][1]; + image->palette.colors[i].blue = gFontPalette[i][2]; + } + + image->hasTransparency = false; +} + +int CalcFileSize(int numGlyphs, int bpp, int layout) +{ + if (layout == 2) + { + // assume 4 BPP + int numFullRows = numGlyphs / 16; + int remainder = numGlyphs % 16; + int fullRowsSize = numFullRows * 1024; + int remainderSize = 0; + + if (remainder != 0) + remainderSize = 1024 - (16 - remainder) * 32; + + return fullRowsSize + remainderSize; + } + else + { + int tilesPerGlyph = layout > 0 ? 2 : 1; + int bytesPerTile = 8 * bpp; + return numGlyphs * tilesPerGlyph * bytesPerTile; + } +} + +void ReadFont(char *path, struct Image *image, int numGlyphs, int bpp, int layout) +{ + int fileSize; + unsigned char *buffer = ReadWholeFile(path, &fileSize); + + int expectedFileSize = CalcFileSize(numGlyphs, bpp, layout); + + if (fileSize != expectedFileSize) + FATAL_ERROR("The file size is %d but should be %d.\n", fileSize, expectedFileSize); + + int numRows = (numGlyphs + 15) / 16; + int rowHeight = layout > 0 ? 16 : 8; + + image->width = 128; + image->height = numRows * rowHeight; + image->bitDepth = 8; + image->pixels = calloc(image->width * image->height, 1); + + if (image->pixels == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + if (bpp == 1) + ConvertFromTiles1Bpp(buffer, image->pixels, numGlyphs, layout); + else + ConvertFromTiles4Bpp(buffer, image->pixels, numGlyphs, layout); + + free(buffer); + + SetFontPalette(image); +} + +void WriteFont(char *path, struct Image *image, int numGlyphs, int bpp, int layout) +{ + if (image->width != 128) + FATAL_ERROR("The width of the font image (%d) is not 128.\n", image->width); + + int numRows = (numGlyphs + 15) / 16; + int rowHeight = layout > 0 ? 16 : 8; + int expectedHeight = numRows * rowHeight; + + if (image->height < expectedHeight) + FATAL_ERROR("The height of the font image (%d) is less than %d.\n", image->height, expectedHeight); + + int fileSize = CalcFileSize(numGlyphs, bpp, layout); + + unsigned char *buffer = calloc(fileSize, 1); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for font.\n"); + + if (bpp == 1) + ConvertToTiles1Bpp(image->pixels, buffer, numGlyphs, layout); + else + ConvertToTiles4Bpp(image->pixels, buffer, numGlyphs, layout); + + WriteWholeFile(path, buffer, fileSize); + + free(buffer); +} diff --git a/tools/rsfont/font.h b/tools/rsfont/font.h new file mode 100644 index 0000000..1cd4875 --- /dev/null +++ b/tools/rsfont/font.h @@ -0,0 +1,30 @@ +// Copyright(c) 2015-2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef FONT_H +#define FONT_H + +#include <stdbool.h> +#include "gfx.h" + +void ReadFont(char *path, struct Image *image, int numGlyphs, int bpp, int layout); +void WriteFont(char *path, struct Image *image, int numGlyphs, int bpp, int layout); + +#endif // FONT_H diff --git a/tools/rsfont/gfx.h b/tools/rsfont/gfx.h new file mode 100644 index 0000000..04a3d80 --- /dev/null +++ b/tools/rsfont/gfx.h @@ -0,0 +1,50 @@ +// Copyright(c) 2015-2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef GFX_H +#define GFX_H + +#include <stdint.h> +#include <stdbool.h> + +struct Color +{ + unsigned char red; + unsigned char green; + unsigned char blue; +}; + +struct Palette +{ + struct Color colors[256]; + int numColors; +}; + +struct Image { + int width; + int height; + int bitDepth; + unsigned char *pixels; + bool hasPalette; + struct Palette palette; + bool hasTransparency; +}; + +#endif // GFX_H diff --git a/tools/rsfont/global.h b/tools/rsfont/global.h new file mode 100644 index 0000000..65dd351 --- /dev/null +++ b/tools/rsfont/global.h @@ -0,0 +1,31 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef GLOBAL_H +#define GLOBAL_H + +#include <stdio.h> +#include <stdlib.h> + +#ifdef _MSC_VER + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#define UNUSED + +#else + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#define UNUSED __attribute__((__unused__)) + +#endif // _MSC_VER + +#endif // GLOBAL_H diff --git a/tools/rsfont/main.c b/tools/rsfont/main.c new file mode 100644 index 0000000..2f5d9d9 --- /dev/null +++ b/tools/rsfont/main.c @@ -0,0 +1,93 @@ +// Copyright(c) 2015-2016 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <stdio.h> +#include <string.h> +#include <stdbool.h> +#include "global.h" +#include "util.h" +#include "gfx.h" +#include "convert_png.h" +#include "font.h" + +int ExtensionToBpp(const char *extension) +{ + if (!strcmp(extension, "1bpp")) + return 1; + else if (!strcmp(extension, "4bpp")) + return 4; + return 0; +} + +int main(int argc, char **argv) +{ + if (argc < 5) + FATAL_ERROR("Usage: rsfont INPUT_FILE OUTPUT_FILE NUM_GLYPHS LAYOUT_TYPE\n"); + + char *inputPath = argv[1]; + char *outputPath = argv[2]; + char *inputFileExtension = GetFileExtension(inputPath); + char *outputFileExtension = GetFileExtension(outputPath); + + if (inputFileExtension == NULL) + FATAL_ERROR("Input file \"%s\" has no extension.\n", inputPath); + + if (outputFileExtension == NULL) + FATAL_ERROR("Output file \"%s\" has no extension.\n", outputPath); + + int numGlyphs; + int bpp; + int layout; + + if (!ParseNumber(argv[3], NULL, 10, &numGlyphs)) + FATAL_ERROR("Failed to parse number of glyphs.\n"); + + if (!ParseNumber(argv[4], NULL, 10, &layout)) + FATAL_ERROR("Failed to parse layout type.\n"); + + if (layout < 0 || layout > 2) + FATAL_ERROR("Layout type %d is invalid. Layout type must be 0, 1, or 2.\n", layout); + + bool toPng; + + if (!strcmp(inputFileExtension, "png") && (bpp = ExtensionToBpp(outputFileExtension)) != 0) + toPng = false; + else if ((bpp = ExtensionToBpp(inputFileExtension)) != 0 && !strcmp(outputFileExtension, "png")) + toPng = true; + else + FATAL_ERROR("Don't know how to convert \"%s\" to \"%s\".\n", inputPath, outputPath); + + if (bpp == 1 && layout == 2) + FATAL_ERROR("Layout type 2 is not supported with 1 BPP fonts.\n"); + + struct Image image; + + if (toPng) + { + ReadFont(inputPath, &image, numGlyphs, bpp, layout); + WritePng(outputPath, &image); + } + else + { + image.bitDepth = 8; + ReadPng(inputPath, &image); + WriteFont(outputPath, &image, numGlyphs, bpp, layout); + } +} diff --git a/tools/rsfont/util.c b/tools/rsfont/util.c new file mode 100644 index 0000000..87abeb3 --- /dev/null +++ b/tools/rsfont/util.c @@ -0,0 +1,124 @@ +// Copyright (c) 2015 YamaArashi + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <errno.h> +#include <limits.h> +#include "global.h" +#include "util.h" + +bool ParseNumber(char *s, char **end, int radix, int *intValue) +{ + char *localEnd; + + if (end == NULL) + end = &localEnd; + + errno = 0; + + const long longValue = strtol(s, end, radix); + + if (*end == s) + return false; // not a number + + if ((longValue == LONG_MIN || longValue == LONG_MAX) && errno == ERANGE) + return false; + + if (longValue > INT_MAX) + return false; + + if (longValue < INT_MIN) + return false; + + *intValue = (int)longValue; + + return true; +} + +char *GetFileExtension(char *path) +{ + char *extension = path; + + while (*extension != 0) + extension++; + + while (extension > path && *extension != '.') + extension--; + + if (extension == path) + return NULL; + + extension++; + + if (*extension == 0) + return NULL; + + return extension; +} + +unsigned char *ReadWholeFile(char *path, int *size) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + fseek(fp, 0, SEEK_END); + + *size = ftell(fp); + + unsigned char *buffer = malloc(*size); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path); + + rewind(fp); + + if (fread(buffer, *size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path); + + fclose(fp); + + return buffer; +} + +unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount) +{ + FILE *fp = fopen(path, "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path); + + fseek(fp, 0, SEEK_END); + + *size = ftell(fp); + + unsigned char *buffer = calloc(*size + padAmount, 1); + + if (buffer == NULL) + FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path); + + rewind(fp); + + if (fread(buffer, *size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path); + + fclose(fp); + + return buffer; +} + +void WriteWholeFile(char *path, void *buffer, int bufferSize) +{ + FILE *fp = fopen(path, "wb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); + + if (fwrite(buffer, bufferSize, 1, fp) != 1) + FATAL_ERROR("Failed to write to \"%s\".\n", path); + + fclose(fp); +} diff --git a/tools/rsfont/util.h b/tools/rsfont/util.h new file mode 100644 index 0000000..6d7a9c2 --- /dev/null +++ b/tools/rsfont/util.h @@ -0,0 +1,14 @@ +// Copyright (c) 2015 YamaArashi + +#ifndef UTIL_H +#define UTIL_H + +#include <stdbool.h> + +bool ParseNumber(char *s, char **end, int radix, int *intValue); +char *GetFileExtension(char *path); +unsigned char *ReadWholeFile(char *path, int *size); +unsigned char *ReadWholeFileZeroPadded(char *path, int *size, int padAmount); +void WriteWholeFile(char *path, void *buffer, int bufferSize); + +#endif // UTIL_H diff --git a/tools/scaninc/.gitignore b/tools/scaninc/.gitignore new file mode 100644 index 0000000..94bfbf9 --- /dev/null +++ b/tools/scaninc/.gitignore @@ -0,0 +1 @@ +scaninc diff --git a/tools/scaninc/LICENSE b/tools/scaninc/LICENSE new file mode 100644 index 0000000..b66bf81 --- /dev/null +++ b/tools/scaninc/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 YamaArashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile new file mode 100644 index 0000000..1516f15 --- /dev/null +++ b/tools/scaninc/Makefile @@ -0,0 +1,18 @@ +CXX = g++ + +CXXFLAGS = -Wall -Werror -std=c++11 -O2 + +SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp + +HEADERS := scaninc.h asm_file.h c_file.h source_file.h + +.PHONY: all clean + +all: scaninc + @: + +scaninc: $(SRCS) $(HEADERS) + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) scaninc scaninc.exe diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp new file mode 100644 index 0000000..109e604 --- /dev/null +++ b/tools/scaninc/asm_file.cpp @@ -0,0 +1,192 @@ +// Copyright(c) 2015-2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <string> +#include "scaninc.h" +#include "asm_file.h" + +AsmFile::AsmFile(std::string path) +{ + m_path = path; + + FILE *fp = std::fopen(path.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + m_buffer = new char[m_size]; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path.c_str()); + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; +} + +AsmFile::~AsmFile() +{ + delete[] m_buffer; +} + +IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path) +{ + // At the beginning of each loop iteration, the current file position + // should be at the start of a line or at the end of the file. + for (;;) + { + SkipTabsAndSpaces(); + + IncDirectiveType incDirectiveType = IncDirectiveType::None; + + char c = PeekChar(); + if (c == '.' || c == '#') + { + m_pos++; + + if (MatchIncDirective("incbin", path)) + incDirectiveType = IncDirectiveType::Incbin; + else if (MatchIncDirective("include", path)) + incDirectiveType = IncDirectiveType::Include; + } + + for (;;) + { + int c = GetChar(); + + if (c == -1) + return incDirectiveType; + + if (c == ';') + { + SkipEndOfLineComment(); + break; + } + else if (c == '/' && PeekChar() == '*') + { + m_pos++; + SkipMultiLineComment(); + } + else if (c == '"') + { + SkipString(); + } + else if (c == '\n') + { + break; + } + } + + if (incDirectiveType != IncDirectiveType::None) + return incDirectiveType; + } +} + +std::string AsmFile::ReadPath() +{ + int length = 0; + int startPos = m_pos; + + for (;;) + { + int c = GetChar(); + + if (c == '"') + break; + + if (c == -1) + FATAL_INPUT_ERROR("unexpected EOF in include string\n"); + + if (c == 0) + FATAL_INPUT_ERROR("unexpected NUL character in include string\n"); + + if (c == '\n') + FATAL_INPUT_ERROR("unexpected end of line character in include string\n"); + + // Don't bother allowing any escape sequences. + if (c == '\\') + FATAL_INPUT_ERROR("unexpected escape in include string\n"); + + length++; + + if (length > SCANINC_MAX_PATH) + FATAL_INPUT_ERROR("path is too long"); + } + + return std::string(m_buffer + startPos, length); +} + +void AsmFile::SkipEndOfLineComment() +{ + int c; + + do + { + c = GetChar(); + } while (c != -1 && c != '\n'); +} + +void AsmFile::SkipMultiLineComment() +{ + for (;;) + { + int c = GetChar(); + + if (c == '*') + { + if (PeekChar() == '/') + { + m_pos++; + return; + } + } + else if (c == -1) + { + return; + } + } +} + +void AsmFile::SkipString() +{ + for (;;) + { + int c = GetChar(); + + if (c == '"') + break; + + if (c == -1) + FATAL_INPUT_ERROR("unexpected EOF in string\n"); + + if (c == '\\') + { + c = GetChar(); + } + } +} diff --git a/tools/scaninc/asm_file.h b/tools/scaninc/asm_file.h new file mode 100644 index 0000000..ad99b75 --- /dev/null +++ b/tools/scaninc/asm_file.h @@ -0,0 +1,119 @@ +// Copyright(c) 2015-2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef ASM_FILE_H +#define ASM_FILE_H + +#include <string> +#include "scaninc.h" + +enum class IncDirectiveType +{ + None, + Include, + Incbin +}; + +class AsmFile +{ +public: + AsmFile(std::string path); + ~AsmFile(); + IncDirectiveType ReadUntilIncDirective(std::string& path); + +private: + char *m_buffer; + int m_pos; + int m_size; + int m_lineNum; + std::string m_path; + + int GetChar() + { + if (m_pos >= m_size) + return -1; + + int c = m_buffer[m_pos++]; + + if (c == '\r') + { + if (m_pos < m_size && m_buffer[m_pos++] == '\n') + { + m_lineNum++; + return '\n'; + } + else + { + FATAL_INPUT_ERROR("CR line endings are not supported\n"); + } + } + + if (c == '\n') + m_lineNum++; + + return c; + } + + // No newline translation because it's not needed for any use of this function. + int PeekChar() + { + if (m_pos >= m_size) + return -1; + + return m_buffer[m_pos]; + } + + void SkipTabsAndSpaces() + { + while (m_pos < m_size && (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ')) + m_pos++; + } + + bool MatchIncDirective(std::string directiveName, std::string& path) + { + int length = directiveName.length(); + int i; + + for (i = 0; i < length && m_pos + i < m_size; i++) + if (directiveName[i] != m_buffer[m_pos + i]) + return false; + + if (i < length) + return false; + + m_pos += length; + + SkipTabsAndSpaces(); + + if (GetChar() != '"') + FATAL_INPUT_ERROR("no path after \".%s\" directive\n", directiveName.c_str()); + + path = ReadPath(); + + return true; + } + + std::string ReadPath(); + void SkipEndOfLineComment(); + void SkipMultiLineComment(); + void SkipString(); +}; + +#endif // ASM_FILE_H diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp new file mode 100644 index 0000000..595f366 --- /dev/null +++ b/tools/scaninc/c_file.cpp @@ -0,0 +1,307 @@ +// Copyright(c) 2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "c_file.h" + +CFile::CFile(std::string path) +{ + m_path = path; + + FILE *fp = std::fopen(path.c_str(), "rb"); + + if (fp == NULL) + FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str()); + + std::fseek(fp, 0, SEEK_END); + + m_size = std::ftell(fp); + + m_buffer = new char[m_size + 1]; + m_buffer[m_size] = 0; + + std::rewind(fp); + + if (std::fread(m_buffer, m_size, 1, fp) != 1) + FATAL_ERROR("Failed to read \"%s\".\n", path.c_str()); + + std::fclose(fp); + + m_pos = 0; + m_lineNum = 1; +} + +CFile::~CFile() +{ + delete[] m_buffer; +} + +void CFile::FindIncbins() +{ + char stringChar = 0; + + while (m_pos < m_size) + { + if (stringChar) + { + if (m_buffer[m_pos] == stringChar) + { + m_pos++; + stringChar = 0; + } + else if (m_buffer[m_pos] == '\\' && m_buffer[m_pos + 1] == stringChar) + { + m_pos += 2; + } + else + { + if (m_buffer[m_pos] == '\n') + m_lineNum++; + m_pos++; + } + } + else + { + SkipWhitespace(); + CheckInclude(); + CheckIncbin(); + + if (m_pos >= m_size) + break; + + char c = m_buffer[m_pos++]; + + if (c == '\n') + m_lineNum++; + else if (c == '"') + stringChar = '"'; + else if (c == '\'') + stringChar = '\''; + else if (c == 0) + FATAL_INPUT_ERROR("unexpected null character"); + } + } +} + +bool CFile::ConsumeHorizontalWhitespace() +{ + if (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ') + { + m_pos++; + return true; + } + + return false; +} + +bool CFile::ConsumeNewline() +{ + if (m_buffer[m_pos] == '\n') + { + m_pos++; + m_lineNum++; + return true; + } + + if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n') + { + m_pos += 2; + m_lineNum++; + return true; + } + + return false; +} + +bool CFile::ConsumeComment() +{ + if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '*') + { + m_pos += 2; + while (m_buffer[m_pos] != '*' || m_buffer[m_pos + 1] != '/') + { + if (m_buffer[m_pos] == 0) + return false; + if (!ConsumeNewline()) + m_pos++; + } + m_pos += 2; + return true; + } + else if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '/') + { + m_pos += 2; + while (!ConsumeNewline()) + { + if (m_buffer[m_pos] == 0) + return false; + m_pos++; + } + return true; + } + + return false; +} + +void CFile::SkipWhitespace() +{ + while (ConsumeHorizontalWhitespace() || ConsumeNewline() || ConsumeComment()) + ; +} + +bool CFile::CheckIdentifier(const std::string& ident) +{ + unsigned int i; + + for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++) + if (ident[i] != m_buffer[m_pos + i]) + return false; + + return (i == ident.length()); +} + +void CFile::CheckInclude() +{ + if (m_buffer[m_pos] != '#') + return; + + std::string ident = "#include"; + + if (!CheckIdentifier(ident)) + { + return; + } + + m_pos += ident.length(); + + ConsumeHorizontalWhitespace(); + + std::string path = ReadPath(); + + if (!path.empty()) { + m_includes.emplace(path); + } +} + +void CFile::CheckIncbin() +{ + // Optimization: assume most lines are not incbins + if (!(m_buffer[m_pos+0] == 'I' + && m_buffer[m_pos+1] == 'N' + && m_buffer[m_pos+2] == 'C' + && m_buffer[m_pos+3] == 'B' + && m_buffer[m_pos+4] == 'I' + && m_buffer[m_pos+5] == 'N' + && m_buffer[m_pos+6] == '_')) + { + return; + } + + std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" }; + int incbinType = -1; + + for (int i = 0; i < 6; i++) + { + if (CheckIdentifier(idents[i])) + { + incbinType = i; + break; + } + } + + if (incbinType == -1) + return; + + long oldPos = m_pos; + long oldLineNum = m_lineNum; + + m_pos += idents[incbinType].length(); + + SkipWhitespace(); + + if (m_buffer[m_pos] != '(') + { + m_pos = oldPos; + m_lineNum = oldLineNum; + return; + } + + m_pos++; + + while (true) + { + SkipWhitespace(); + + std::string path = ReadPath(); + + SkipWhitespace(); + + m_incbins.emplace(path); + + if (m_buffer[m_pos] != ',') + break; + + m_pos++; + } + + if (m_buffer[m_pos] != ')') + FATAL_INPUT_ERROR("expected ')'"); + + m_pos++; + +} + +std::string CFile::ReadPath() +{ + if (m_buffer[m_pos] != '"') + { + if (m_buffer[m_pos] == '<') + { + return std::string(); + } + FATAL_INPUT_ERROR("expected '\"' or '<'"); + } + + m_pos++; + + int startPos = m_pos; + + while (m_buffer[m_pos] != '"') + { + if (m_buffer[m_pos] == 0) + { + if (m_pos >= m_size) + FATAL_INPUT_ERROR("unexpected EOF in path string"); + else + FATAL_INPUT_ERROR("unexpected null character in path string"); + } + + if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n') + FATAL_INPUT_ERROR("unexpected end of line character in path string"); + + if (m_buffer[m_pos] == '\\') + FATAL_INPUT_ERROR("unexpected escape in path string"); + + m_pos++; + } + + m_pos++; + + return std::string(m_buffer + startPos, m_pos - 1 - startPos); +} diff --git a/tools/scaninc/c_file.h b/tools/scaninc/c_file.h new file mode 100644 index 0000000..618901b --- /dev/null +++ b/tools/scaninc/c_file.h @@ -0,0 +1,57 @@ +// Copyright(c) 2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef C_FILE_H +#define C_FILE_H + +#include <string> +#include <set> +#include <memory> +#include "scaninc.h" + +class CFile +{ +public: + CFile(std::string path); + ~CFile(); + void FindIncbins(); + const std::set<std::string>& GetIncbins() { return m_incbins; } + const std::set<std::string>& GetIncludes() { return m_includes; } + +private: + char *m_buffer; + int m_pos; + int m_size; + int m_lineNum; + std::string m_path; + std::set<std::string> m_incbins; + std::set<std::string> m_includes; + + bool ConsumeHorizontalWhitespace(); + bool ConsumeNewline(); + bool ConsumeComment(); + void SkipWhitespace(); + bool CheckIdentifier(const std::string& ident); + void CheckInclude(); + void CheckIncbin(); + std::string ReadPath(); +}; + +#endif // C_FILE_H diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp new file mode 100644 index 0000000..b95cbd0 --- /dev/null +++ b/tools/scaninc/scaninc.cpp @@ -0,0 +1,121 @@ +// Copyright(c) 2015-2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <cstdio> +#include <cstdlib> +#include <list> +#include <queue> +#include <set> +#include <string> +#include "scaninc.h" +#include "source_file.h" + +bool CanOpenFile(std::string path) +{ + FILE *fp = std::fopen(path.c_str(), "rb"); + + if (fp == NULL) + return false; + + std::fclose(fp); + return true; +} + +const char *const USAGE = "Usage: scaninc [-I INCLUDE_PATH] FILE_PATH\n"; + +int main(int argc, char **argv) +{ + std::queue<std::string> filesToProcess; + std::set<std::string> dependencies; + + std::vector<std::string> includeDirs; + + argc--; + argv++; + + while (argc > 1) + { + std::string arg(argv[0]); + if (arg.substr(0, 2) == "-I") + { + std::string includeDir = arg.substr(2); + if (includeDir.empty()) + { + argc--; + argv++; + includeDir = std::string(argv[0]); + } + if (!includeDir.empty() && includeDir.back() != '/') + { + includeDir += '/'; + } + includeDirs.push_back(includeDir); + } + else + { + FATAL_ERROR(USAGE); + } + argc--; + argv++; + } + + if (argc != 1) { + FATAL_ERROR(USAGE); + } + + std::string initialPath(argv[0]); + + filesToProcess.push(initialPath); + + while (!filesToProcess.empty()) + { + std::string filePath = filesToProcess.front(); + SourceFile file(filePath); + filesToProcess.pop(); + + includeDirs.push_back(file.GetSrcDir()); + for (auto incbin : file.GetIncbins()) + { + dependencies.insert(incbin); + } + for (auto include : file.GetIncludes()) + { + for (auto includeDir : includeDirs) + { + std::string path(includeDir + include); + if (CanOpenFile(path)) + { + bool inserted = dependencies.insert(path).second; + if (inserted) + { + filesToProcess.push(path); + } + break; + } + } + } + includeDirs.pop_back(); + } + + for (const std::string &path : dependencies) + { + std::printf("%s\n", path.c_str()); + } +} diff --git a/tools/scaninc/scaninc.h b/tools/scaninc/scaninc.h new file mode 100644 index 0000000..30cc961 --- /dev/null +++ b/tools/scaninc/scaninc.h @@ -0,0 +1,59 @@ +// Copyright(c) 2015-2017 YamaArashi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef SCANINC_H +#define SCANINC_H + +#include <cstdio> +#include <cstdlib> + +#ifdef _MSC_VER + +#define FATAL_INPUT_ERROR(format, ...) \ +do { \ + fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, __VA_ARGS__); \ + exit(1); \ +} while (0) + +#else + +#define FATAL_INPUT_ERROR(format, ...) \ +do { \ + fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#define FATAL_ERROR(format, ...) \ +do { \ + fprintf(stderr, format, ##__VA_ARGS__); \ + exit(1); \ +} while (0) + +#endif // _MSC_VER + +#define SCANINC_MAX_PATH 255 + +#endif // SCANINC_H diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp new file mode 100644 index 0000000..f23ff6d --- /dev/null +++ b/tools/scaninc/source_file.cpp @@ -0,0 +1,125 @@ +// Copyright(c) 2019 Phlosioneer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include <new> +#include "source_file.h" + + +SourceFileType GetFileType(std::string& path) +{ + std::size_t pos = path.find_last_of('.'); + + if (pos == std::string::npos) + FATAL_ERROR("no file extension in path \"%s\"\n", path.c_str()); + + std::string extension = path.substr(pos + 1); + + if (extension == "c") + return SourceFileType::Cpp; + else if (extension == "s") + return SourceFileType::Asm; + else if (extension == "h") + return SourceFileType::Header; + else if (extension == "inc") + return SourceFileType::Inc; + else + FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str()); + + // Unreachable + return SourceFileType::Cpp; +} + +std::string GetDir(std::string& path) +{ + std::size_t slash = path.rfind('/'); + + if (slash != std::string::npos) + return path.substr(0, slash + 1); + else + return std::string(""); +} + +SourceFile::SourceFile(std::string path) +{ + m_file_type = GetFileType(path); + + m_src_dir = GetDir(path); + + if (m_file_type == SourceFileType::Cpp + || m_file_type == SourceFileType::Header) + { + new (&m_source_file.c_file) CFile(path); + m_source_file.c_file.FindIncbins(); + } + else + { + AsmFile file(path); + std::set<std::string> incbins; + std::set<std::string> includes; + + IncDirectiveType incDirectiveType; + std::string outputPath; + + while ((incDirectiveType = file.ReadUntilIncDirective(outputPath)) != IncDirectiveType::None) + { + if (incDirectiveType == IncDirectiveType::Include) + includes.insert(outputPath); + else + incbins.insert(outputPath); + } + + new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes}; + } +} + +SourceFile::~SourceFile() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + { + m_source_file.c_file.~CFile(); + } + else + { + m_source_file.asm_wrapper.asm_incbins.~set(); + m_source_file.asm_wrapper.asm_includes.~set(); + } +} + +const std::set<std::string>& SourceFile::GetIncbins() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + return m_source_file.c_file.GetIncbins(); + else + return m_source_file.asm_wrapper.asm_incbins; +} + +const std::set<std::string>& SourceFile::GetIncludes() +{ + if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header) + return m_source_file.c_file.GetIncludes(); + else + return m_source_file.asm_wrapper.asm_includes; +} + +std::string& SourceFile::GetSrcDir() +{ + return m_src_dir; +} + diff --git a/tools/scaninc/source_file.h b/tools/scaninc/source_file.h new file mode 100644 index 0000000..f7b6412 --- /dev/null +++ b/tools/scaninc/source_file.h @@ -0,0 +1,71 @@ +// Copyright(c) 2019 Phlosioneer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#ifndef SOURCE_FILE_H +#define SOURCE_FILE_H + +#include <string> +#include "scaninc.h" +#include "asm_file.h" +#include "c_file.h" + +enum class SourceFileType +{ + Cpp, + Header, + Asm, + Inc +}; + +SourceFileType GetFileType(std::string& path); + +class SourceFile +{ +public: + + SourceFile(std::string path); + ~SourceFile(); + SourceFile(SourceFile const&) = delete; + SourceFile(SourceFile&&) = delete; + SourceFile& operator =(SourceFile const&) = delete; + SourceFile& operator =(SourceFile&&) = delete; + bool HasIncbins(); + const std::set<std::string>& GetIncbins(); + const std::set<std::string>& GetIncludes(); + std::string& GetSrcDir(); + +private: + union InnerUnion { + CFile c_file; + struct AsmWrapper { + std::set<std::string> asm_incbins; + std::set<std::string> asm_includes; + } asm_wrapper; + + // Construction and destruction handled by SourceFile. + InnerUnion() {}; + ~InnerUnion() {}; + } m_source_file; + SourceFileType m_file_type; + std::string m_src_dir; +}; + +#endif // SOURCE_FILE_H +